From 27b0bd6376100c00d4d6792bfd29e4bc47003a98 Mon Sep 17 00:00:00 2001 From: github-deploy-action Date: Tue, 21 May 2024 18:19:55 +0000 Subject: [PATCH] github-deploy-action-editor-output-submodel --- editor-output-submodel/hazel.js | 7233 ++++--------------------------- 1 file changed, 881 insertions(+), 6352 deletions(-) diff --git a/editor-output-submodel/hazel.js b/editor-output-submodel/hazel.js index 3271beb6..811f4cd4 100644 --- a/editor-output-submodel/hazel.js +++ b/editor-output-submodel/hazel.js @@ -10935,8 +10935,8 @@ (function(a){"use strict";var -Og=320,Oh="Core__Stable_comparable",Oi=289,Of="Haz3lweb__DHDoc_Pat",Od=317,Oe="Base_quickcheck__Test_intf",Oc=803,N$=1349,Oa="Haz3lweb__PersistentData",Ob="Haz3lcore__TPat",N9="Str",N_=859,N7="Util__IntUtil",N8=935,N5="Haz3lcore__Grout",N6="Core__Hashtbl",N4="Core__Sexpable",N3=232,NZ="Util__Result",N0=990,N1=1081,N2="Base__Fn",NX="Haz3lweb__TyAliasExp",NY=787,NU=1004,NV="Includeclass",NW="Async_kernel__Deferred_option",NQ=338,NR="Stdlib__Bytes",NS="Haz3lweb__TerminalExp",NT="Haz3lcore__TestResults",NO="Haz3lweb__Memo",NP=1313,NM="Out_of_memory",NN="Core__Hash_set_intf",NK="Haz3lcore__Interface",NL=283,NH=1079,NI="Ppx_quickcheck_runtime",NJ="Astlib__Migrate_408_407",ND=463,NE="Haz3lweb__ListTyp",NF=1135,NG=725,NB="Failure",NC="Core__Fqueue",Ny=529,Nz="Stdlib__Printf",NA="Haz3lcore__Typ",Nv=566,Nw="Haz3lweb__Key",Nx=756,Nt="Weak_hashtbl__",Nu=399,Ns=1348,Nr=170,No="Haz3lcore__ClosureEnvironment",Np="Core__Info_intf",Nq="Base__Type_equal",Nn=1273,Nm=952,Nl=1005,Ni="Expect_test_common__Import",Nj="Haz3lweb__Unicode",Nk="Core__Ordered_collection_common",Nh="Core__Sequence",Ng=1314,Nf=304,Nd="Haz3lweb__UpdateAssistant",Ne="Core__Error",Nc="Cmi_format",Na="Thread_safe_queue__Import",Nb="Ppxlib__Ast_traverse",M$="Match_failure",M9=427,M_="Base__Binary_searchable",M7=845,M8=567,M6=896,M4="Strongly_connected_components",M5=665,M3=630,M2=1125,M0=588,M1="Haz3lcore__EditorUtil",MZ=868,MW=517,MX="Haz3lweb__TerminalPat",MY="Core__Stable_unit_test",MU="Haz3lcore__Piece",MV=601,MT="Ast_iterator",MS=460,MR=946,MN="Core__T",MO="Base__Either0",MP=438,MQ=795,MM=490,ML=662,MJ="Ctype",MK=459,MI="Haz3lcore__TermMap",MH="Lambda",MG="Haz3lweb__HoleExp",ME=1355,MF="Core__Stable_int63able",MD=224,MC="Haz3lweb__NutMenu",MB=411,MA="Incremental__Recompute_heap",Mx="Persistent_connection_kernel__",My=1194,Mz="Core__Unique_id_intf",Mw=192,Mt=618,Mu="Haz3lcore__Cls",Mv=1114,Ms="Async_kernel__Job_queue",Mr=1102,Mq="Bin_prot__Utils_intf",Mp="Base_quickcheck__Test",Mo="Async_kernel__Async_gc",Mn="Base__Option",Mk="Async_kernel__Time_ns",Ml=841,Mm=1143,Mj=558,Mi="Thread_pool_cpu_affinity",Mg="Ppxlib_ast__",Mh="Base__Sequence",Mf="Sexplib__Parser_with_layout",Md=1309,Me=1115,Mc="Stdlib__Atomic",Mb="Incr_dom__Js_misc",L_="Core__Optional_syntax",L$=668,Ma="Builtin_attributes",L8=247,L9="Astlib__Migrate_500_414",L5=1053,L6=844,L7=1221,L4="Haz3lcore__Molds",L2=710,L3=937,LZ="Incr_dom__",L0=728,L1="Bin_prot__Utils",LX="Haz3lweb__TypAnnPat",LY="Core__Nothing",LV="Typerep_lib__Typename",LW=222,LT=1351,LU="Debuginfo",LS=228,LQ="Ui_incr",LR="Splittable_random",LN="Ppxlib__Expansion_helpers",LO="Haz3lweb__ReadOnlyEditor",LP="Astlib__Migrate_403_404",LL="Core__Unit_of_time",LM="Core__Byte_units",LK="Haz3lcore__Tile",LJ="Ppxlib__Caller_id",LG=526,LH=474,LI="Base__Int_intf",LF="Haz3lweb__SumTyp",LD="Longident",LE="Incremental__Var",LB="Tuple_pool__Tuple_pool_intf",LC="Abstract_algebra",LA="Incremental__Kind",Lw=1058,Lx="Ppxlib_ast__Location_error",Ly=793,Lz=886,Lv=1000,Lt="Base__Random_repr",Lu="Base__Bytes0",Ls=1278,Lq=392,Lr="Async_kernel__Deferred_map",Lo="Tuple_pool__",Lp=370,Lm="Haz3lcore__VarErrStatus",Ln="Core__Doubly_linked",Ll="Stdlib__Array",Lj="Jsoo_runtime__",Lk="Js_of_ocaml__Lib_version",Lh="Translprim",Li="Astlib__",Lf=985,Lg="Haz3lcore__PrettySegment",Lc="Sexplib__Sexp_with_layout",Ld="Ppxlib__Attribute",Le="Haz3lcore__PersistentZipper",Lb=1252,La="Jsoo_runtime__Runtime_version",K_="Astlib__Migrate_405_406",K$="Pparse",K5="Base_bigstring",K6="Base__Container_intf",K7="Printtyp",K8="Haz3lcore__VarMap",K9=887,K4=597,K3="Js_of_ocaml__Geolocation",K2="Int_replace_polymorphic_compare",K0="Ocaml_shadow",K1=369,KZ="Virtual_dom__Hooks_intf",KY="Async_kernel__Cycle_hook",KX=720,KV="Haz3lcore__Touched",KW=875,KU="Haz3lweb__Type",KT="Base__Ppx_enumerate_lib",KS=821,KR=1256,KQ=540,KO="Ppx_yojson_conv_lib",KP=213,KM=450,KN=603,KK=590,KL="Sexplib0__Sexp",KI=1051,KJ="Core__Stable_module_types",KH="Stdlib__Complex",KE="Parsexp__Import",KF=309,KG="Haz3lcore__StructureShareSexp",KC="Haz3lcore__Base",KD=674,KB=828,Kz=1069,KA=977,Kx=273,Ky=1117,Kw=932,Ku="Parsexp__Automaton_stack_intf",Kv="Omd_lexer_fs",Ks=493,Kt="Haz3lschool__GradePrelude",Kr=305,Ko="Haz3lschool__Grading",Kp="Haz3lweb__DHMeasuredLayout",Kq=936,Km=144,Kn="Ppx_yojson_conv_lib__Yojsonable_intf",Ki=1111,Kj=715,Kk="Core__Time_ns_intf",Kl="Base__Popcount",Kh=275,Ke="Stdlib__Unit",Kf=1098,Kg="Core__Source_code_position0",Kc=1120,Kd="Core__String_id_intf",J8=361,J9="Haz3lweb__CellResult",J_="Haz3lweb__AppPat",J$="Haz3lcore__Rul",Ka=798,Kb="Async_kernel__Ivar",J7=453,J5=956,J6="Validate",J4="Haz3lweb__TestView",J3="Translcore",J2="Typerep_lib__Type_abstract",J1=211,JZ="Warnings",J0=1089,JY=404,JX="Astlib__Ast_414",JU=331,JV=513,JW="Async_rpc_kernel__Connection_intf",JT="Haz3lcore__IdTagged",JS=606,JO=445,JP=400,JQ="Haz3lweb__Decoration_common",JR="Core__Int63",JM=1233,JN="Haz3lcore__Nib",JK="Haz3lweb__Benchmark",JL=790,JJ="UnionFind__UnionFindBasic",JI=881,JF=814,JG=300,JH=805,JD="Ppx_hash_lib",JE=1112,JC=962,JB="Base__Queue",Jx=1001,Jy="Haz3lcore__ProgramResult",Jz=653,JA="Base__Info",Jw=502,Jv=1284,Jr="Util__IntMap",Js="Typerep_lib__Type_generic_intf",Jt="Haz3lweb__WorkerClient",Ju="Core__Bigstring",Jo="Haz3lcore__Stepper",Jp="Core__Only_in_test",Jq=344,Jn=1096,Jl="Core__Map_intf",Jm="Docstrings",Ji="Re__Core",Jj="Parse",Jk=895,Jh="Incremental__At_intervals",Jf="Typerep_lib__Variant_and_record_intf",Jg="Core__Blit",Jb=820,Jc=971,Jd="Base__Bytes_tr",Je=888,I$=1232,Ja="Haz3lweb__Ex_OddlyRecursive_prompt",I_="Yojson__",I8="Ppx_inline_test_lib",I9="Core__Stable_internal",I7=893,I4=1226,I5="Haz3lcore__MakeTerm",I6="Base__",I3=426,I2="Astlib__Parse",IZ=1154,I0=215,I1="Base__Equal",IY=749,IX="Printast",IU=1080,IV=988,IW="Core__Date0",IT="Haz3lweb__DHDoc_Util",IQ=488,IR=768,IS=197,IP="Core__Binable0",IO="Core__Substring",IL=129,IM="Core__Nativeint",IN=860,IK=611,II=829,IJ="Base_quickcheck__Shrinker",IF="Stdlib__Domain",IG="Haz3lcore__ModelResults",IH="Astlib__Ast_404",IE="Async_rpc_kernel__Rpc",ID="Ppxlib__Ast_builder_generated",IC="Haz3lweb__UpdateAction",IB="Async_js__Http",Iz="Haz3lcore__Perform",IA=1160,Iy=1216,Ix="Incremental__Stabilization_num",Iv="Sexplib0__Sexp_conv_error",Iw="Omd_parser",Iq="Haz3lweb__Editors",Ir="Core__Std_internal",Is="Core__No_polymorphic_compare",It=515,Iu=916,Io=656,Ip="Async_kernel__Deferred_array",In="Yojson",Il=244,Im=996,Ij="UnionFind__StoreMap",Ik=695,Ii=136,Ih="Stdlib__Callback",Ig="Base__Float",If="Astlib__Migrate_404_403",Ic="Haz3lweb__ExplainThisForm",Id="Yojson__Basic",Ie="Async_js__Rpc",Ib=147,Ia=1322,H$="Pretty__PosMap",H_=1055,H6=125,H7="Stdlib__MoreLabels",H8="Js_of_ocaml__IntersectionObserver",H9=758,H5="Haz3lcore__Transition",H3=1341,H4="Haz3lweb__DHDoc_Exp",H1="Haz3lweb__Cell",H2="Core__Map",HZ="Astlib__Migrate_413_414",H0=561,HW="Base__Sexp",HX=398,HY="Async_kernel__Deferred1",HU=910,HV=982,HR=555,HS=1083,HT="Caml",HO=487,HP="Js_of_ocaml__File",HQ="Haz3lweb__Widgets",HN=876,HK="Parsexp__Automaton_state_intf",HL=1333,HM=1242,HH=175,HI=454,HJ="Diffing_with_keys",HD="Re__",HE="Ppx_sexp_conv_lib",HF=799,HG="Async_kernel__",HC=716,HA=780,HB="Core__Deprecate_pipe_bang",Hz=792,Hx=1206,Hy=510,Hw=755,Hs=1054,Ht=811,Hu=1321,Hv="Astlib__Migrate_500_501",Hq="Haz3lweb__AppExp",Hr="Astlib__Ast_501",Hp="Astlib__Ast_402",Hm=669,Hn="Core__Int",Ho="Async_kernel__Deferred_result",Hl=485,Hk="Core__Md5",Hj=537,Hi=586,Hg=1042,Hh=1245,He="Js_of_ocaml__Form",Hf="Haz3lweb__ScratchSlide",Hc="Core__Fn",Hd="Ojs_exn",Hb=575,G$=325,Ha="Base__Indexed_container",G9=257,G_="Core__Fdeque",G8="Ppx_bench_lib",G6=1149,G7=158,G5="Core__Uniform_array",G4=757,G3=406,G2="Core__Ofday_float",G0="Shape",G1="Omd_backend",GY="Haz3lcore__TermBase",GZ="Haz3lcore__EvaluatorStats",GX="Core__Validated",GW="Base__Invariant_intf",GU=439,GV="Incremental__Dot_user_info",GT="Bin_prot__Size",GR=907,GS="Haz3lcore__Label",GO=693,GP=681,GQ=171,GM="Ppxlib__Ast_pattern0",GN="Astlib__Longident",GJ=683,GK="Base__Random",GL="Base__Indexed_container_intf",GI="Pprintast",GG="Ppxlib__Ast_pattern",GH=791,GF="Js_of_ocaml__Import",GE=565,GC=437,GD=836,GA="Haz3lweb__Settings",GB=927,Gz=150,Gw="Haz3lcore__VarCtx",Gx="Haz3lweb__DHDoc_Typ",Gy="Haz3lcore__Info",Gv=950,Gu="Oprint",Gr=407,Gs=1139,Gt="Async_kernel__Synchronous_time_source",Gp=394,Gq=735,Gn=1344,Go="Core__Hexdump",Gm="Printpat",Gi=225,Gj="Haz3lweb__NodeUtil",Gk="Css_gen__Css_parser",Gl="Core__Bool",Gh=772,Gf=804,Gg=911,Gd="Local_store",Ge=172,Gc=733,Gb=1059,Ga="Core__Time_float0",F9=206,F_=884,F$="Async_js__Persistent_connection",F7="Core__Filename",F8=939,F4="Omd_utils",F5="Base__Stack",F6=212,F3=1028,F2="Virtual_dom__Dom_float",F1="Haz3lweb__CellEditor",F0=387,FY="Yojson__Raw",FZ=277,FX="Tuple_pool",FW=670,FV=201,FU="Base__Backtrace",FT=278,FS=797,FQ="Not_found",FR=707,FN=230,FO=1189,FP=722,FM="Haz3lcore__Time",FK="Ppxlib__Loc",FL=848,FJ=729,FI="Config",FG="Core__Quickcheckable",FH="Core__Date",FE="Printtyped",FF="Pretty",FB=414,FC="Typerep_lib__Typerepable",FD=1032,FA=508,Fy=254,Fz=746,Fx="Re__Category",Fu=965,Fv=641,Fw="Base__Int63_emul",Ft=1264,Fs="Core__Time0_intf",Fr="Base__Sys0",Fo=617,Fp=312,Fq="Expect_test_common__",Fm="Util__Either",Fn="Async_kernel",Fk="Async_kernel__Require_explicit_time_source",Fl=380,Fj=133,Fe="Vdom_input_widgets__Import",Ff=961,Fg="Haz3lweb__Update",Fh="Haz3lcore__Action",Fi="Btype",Fc=1101,Fd=472,Fa=589,Fb=1279,E$="Haz3lcore__Segment",E9="Util__Direction",E_=330,E8=1187,E7=1214,E6=167,E4=1104,E5="Haz3lweb__ExerciseMode",E3="Base__Result",E0=473,E1=1336,E2="Base__Int",EZ="Bin_prot__Blob",EY="Core",EW="Base_for_tests__Test_blit_intf",EX=126,EV="Haz3lcore",ES="Ppx_bench_lib__Benchmark_accumulator",ET=1085,EU="Base_for_tests__Test_binary_searchable_intf",EQ=443,ER=846,EO="Stdlib__ArrayLabels",EP=1238,EN="Js_of_ocaml__",EM="Core__Result",EL=743,EJ=241,EK="Core__Digit_string_helpers",EH="Sexplib0__Sexpable",EI=1298,EF=521,EG=870,EE=165,EB=302,EC="Ppx_inline_test_lib__Runtime",ED="Core__Command_env_var",Ez="Meta",EA="Base_for_tests",Ex="Haz3lweb__BackpackView",Ey="Async_rpc_kernel__Persistent_connection",Ew="Core__Queue_intf",Eu=1088,Ev="Core__Ref",Et="Haz3lweb__LetExp",Eq="Sexplib__Sexp_grammar",Er=548,Es=718,Ep="Incremental__Observer",En=816,Eo=1287,Ek="Stdio",El=252,Em=1315,Ej="Async_kernel__Import",Ef=941,Eg=292,Eh=1261,Ei=766,Ee="Core__Char",Ed="Haz3lweb__AttrUtil",Ec=1119,Ea="Core__Quickcheck",Eb="Compmisc",D8="Core__Binable_intf",D9=1357,D_=751,D$="Core__Ofday_helpers",D6="Base__Or_error",D7="Typedecl_variance",D5="Env",D4="Sexplib0",D2="Astlib__Migrate_409_410",D3=1157,DY="Lazy_backtrack",DZ="Haz3lcore__Var",D0="Base__Obj_array",D1="Async_kernel__Clock_intf",DX="Stdlib__Out_channel",DW="Async_kernel__Deferred_list",DV=1249,DT="Persistent_connection_kernel",DU="Async_kernel__Lazy_deferred",DR="Base_quickcheck__Export",DS="Base__Applicative",DP=446,DQ=105,DN="Yojson__Codec",DO=637,DM=759,DK="Js_of_ocaml__Sys_js",DL="Incremental__Expert1",DI="Haz3lcore__Ctx",DJ="Datarepr",DF="Util__Monads",DG="Haz3lcore__Substitution",DH="Async_kernel__Throttle",DE=953,DD="Haz3lweb__CaretDec",DC=1103,DB=954,Dz=1099,DA="Base__Uchar0",Dy=308,Dv="Base__Monad_intf",Dw="Stdlib__In_channel",Dx="Haz3lweb__EmptyHoleDec",Du=449,Dt="Ppxlib__Options",Dr=293,Ds=1292,Dp="Ppxlib__Import",Dq=148,Dm="Incremental__Config_intf",Dn="Expect_test_collector",Do="Async_kernel__Async_kernel_scheduler",Dl=413,Dj="Re__Pcre",Dk="Envaux",Dg=279,Dh=1266,Di=1271,Df=468,De="Stdlib__Filename",Dd="Yojson__Safe",Da="Persistent_connection_kernel__Persistent_connection_kernel_intf",Db=238,Dc=788,C_=176,C$="Haz3lcore__Constructor",C8="Compile_common",C9="Async_kernel__Priority",C7="Bin_prot__Md5",C4=621,C5="Js_of_ocaml",C6="Haz3lcore__Precedence",C3=1330,C1="Haz3lweb__Deco",C2="Base__Int_math",CZ="Base__Import0",C0="Omd_html",CX="Sexplib0__Sexp_grammar",CY=1286,CW=997,CT="Ppxlib__Location",CU="Haz3lcore__Ancestors",CV="Bin_prot__Binable",CS=226,CP="Vdom_input_widgets",CQ="Core__Zone",CR=221,CN=1181,CO="Angstrom__Exported_state",CM=564,CK="Bin_shape_lib",CL="Core__Debug",CJ=851,CI=882,CH=1192,CG="Tuple_pool__Tuple_type",CD=374,CE="Haz3lweb__CtxInspector",CF="Haz3lcore__Printer",CC="Incr_dom__App_intf",CA=107,CB=1195,Cz=1013,Cw=533,Cx=608,Cy=1130,Cv="Undefined_recursive_module",Ct="CamlinternalFormatBasics",Cu=604,Cr="Ppxlib__Utils",Cs="Base__Error",Cp="Base__Int64",Cq="Base__Import",Co="Stdio__In_channel",Cl=204,Cm="Ppxlib__Extension",Cn=1228,Cj="Vdom_input_widgets__Vdom_input_widgets_intf",Ck=607,Ci=577,Cf="Stdlib__Parsing",Cg=492,Ch="Async_kernel__External_job",Cd="Ppxlib_ast__Import",Ce=113,Cb=355,Cc="Base__Lazy",Ca=701,B$="Stdlib__Bigarray",B_=987,B9=634,B7="Ppxlib_print_diff",B8=256,B6=447,B5=1231,B2=417,B3="Parsexp__Of_sexp_error",B4="Parsexp__Automaton_state",B1=651,B0=329,BZ="Moption__",BX="Util__OptUtil",BY="Haz3lcore__ValueChecker",BW=1331,BV=1275,BT=123,BU=1123,BS=834,BR="Base__Map_intf",BQ=615,BN=822,BO="Async_kernel__Job_or_event_intf",BP="Astlib__Migrate_413_412",BM="Haz3lcore__ExpToSegment",BJ="Re__Cset",BK="Base__List1",BL="Astlib",BI=365,BF="Base__String",BG="Base__Hash",BH=883,BD="Sys_blocked_io",BE=635,BC="Stdlib__Uchar",BB=205,BA="Bin_shape_lib__Bin_shape",By=373,Bz=245,Bw="UnionFind__StoreTransactionalRef",Bx=677,Bu="Sexplib",Bv="Haz3lweb__HoleTyp",Bt=629,Br=1145,Bs="Base__Hashable",Bq=1307,Bo="Core__Info",Bp=786,Bm="Haz3lweb__Os",Bn="Core__Identifiable_intf",Bl="Tast_mapper",Bk="Core__Time_intf",Bj="Pairing_heap",Bg="Ppx_compare_lib",Bh="Async_rpc_kernel__",Bi="Assert_failure",Be="Haz3lweb__Ex_RecursiveFibonacci",Bf=1131,Bc="Stdlib__BytesLabels",Bd=871,Bb=497,Ba="Ui_effect",A6="Haz3lweb__Export",A7="Haz3lcore__Builtins",A8=627,A9="Consistbl",A_=134,A$=152,A4=425,A5=227,A2="Ppxlib_ast",A3=553,A1=1337,AZ=1019,A0=1190,AY="Js_of_ocaml__Url",AX="Parsexp__Conv_error",AW="Haz3lschool__Exercise",AV=853,AT="Core__Validated_intf",AU=925,AQ="Protocol_version_header__",AR=1299,AS=1178,AP="Depend",AL=652,AM=1263,AN=775,AO=235,AK=141,AJ=120,AG=236,AH=824,AI=1027,AD="Js_of_ocaml__Js",AE="Incremental__State",AF="Haz3lcore__Skel",AC="Parsexp__Conv",AA=584,AB="Ppxlib__Longident",Az="Haz3lweb__HTypAnnot",Ay="Ppx_yojson_conv_expander__",Aw="Haz3lweb__CursorInspector",Ax=930,Au="Base__Container",Av="Astlib__Migrate_501_500",At="Base__With_return",As=1071,Aq="Base__Blit_intf",Ar=415,Al="Haz3lcore__TermRanges",Am=1122,An=181,Ao=118,Ap=922,Ak="Moption",Ai=249,Aj="Core__Float",Ah=478,Af="Incremental__Expert",Ag=1163,Ae="Expect_test_collector__",Ad="Ppxlib__Ast_traverse0",Ab="Base__Printf",Ac=560,z$=1066,Aa=711,z9="Ocaml_common",z_=1257,z8="Haz3lcore__Id",z7=913,z4="Sexplib__Lexer",z5="Core__Never_returns",z6="Core__Day_of_week",z2=151,z3="Haz3lcore__Any",z1=966,zY="Stack_overflow",zZ=1346,z0="Core__Bounded_index_intf",zW="Stdlib__Arg",zX=573,zV="Js_of_ocaml__Dom_events",zU="Typeclass",zO="Path",zP=1319,zQ="Haz3lweb__DebugMode",zR="Base__Hashtbl_intf",zS=153,zT="Angstrom",zN="Ast_mapper",zM=1293,zL=559,zK=748,zI="Haz3lcore__Operators",zJ="Bin_prot__Common",zE=1061,zF="Incremental__Adjust_heights_heap",zG="Core__Month_intf",zH=189,zD="Async_kernel__Synchronous_time_source0",zB=1077,zC="Thread_safe_queue__",zA=697,zy="Core__Printexc",zz="Base_quickcheck__Bigarray_helpers",zu=593,zv=145,zw="Astlib__Keyword",zx="Astlib__Ast_407",zs=1218,zt=921,zr=530,zq=1029,zp=1204,zn="Terminfo",zo="Haz3lweb__EditorModeView",zm=580,zi=402,zj="Haz3lweb__LogEntry",zk="Haz3lweb__DecUtil",zl=1106,zf="Haz3lcore__Unicode",zg=422,zh=405,ze=714,zb=162,zc=906,zd=610,y$=352,za="Async_kernel__Deferred_or_error",y_="Bigstringaf",y8="Base__Exn",y9="Astlib__Migrate_407_406",y6=554,y7="Core__Signal",y5="Base__Ppx_compare_lib",y4="Util__Aba",y1=686,y2="Async_js__Debug",y3=341,y0="Ppx_quickcheck_runtime__",yZ="Moption__Import",yY=600,yX=115,yV="Util__MapUtil",yW=874,yS=823,yT=270,yU="Core__Percent",yQ=810,yR=838,yP=1340,yN=104,yO=731,yM="Base__Nothing",yL="Async_kernel__Scheduler",yJ="Haz3lcore__Exp",yK=684,yI=679,yH=879,yF="Ident",yG=873,yE="Stdlib__Map",yB="Base__Poly0",yC=1049,yD=467,yz="Haz3lcore__DHExp",yA=242,yv=1161,yw="End_of_file",yx="Core__Immediate_option",yy=596,ys="Haz3lweb__TupleExp",yt="Core__Type_equal_intf",yu="Async_kernel__Debug",yr="Compenv",yq="Async_kernel__Monad_sequence",yo="Base__Char0",yp="Angstrom__Buffering",ym="Haz3lcore__Indicated",yn=366,yj=967,yk="Haz3lcore__Self",yl="Ezjs_idb",yg=819,yh=534,yi="Core__Span_intf",yc="Core__Container_intf",yd=1035,ye="Base__Binary_searchable_intf",yf="Astlib__Migrate_410_409",yb=754,x$="Expect_test_config_types__",ya="Core__Command_shape_intf",x_="Ppx_log_types",x9=872,x8=1100,x7="Printlambda",x2="Re__Fmt",x3="Incr_dom",x4=549,x5="Core__Union_find",x6="Base__Applicative_intf",x1="Async_js__",xZ=523,x0="Async_kernel__Mvar",xW=1023,xX=1016,xY=545,xV="Core__Interfaces",xU=1116,xS="Ezjs_idb__",xT=645,xR="Core__Type_immediacy",xN="Util__ListUtil",xO="Sexplib__Pre_sexp",xP=591,xQ="Result",xL=1064,xM=1090,xI=328,xJ="Base__Hashable_intf",xK="Haz3lweb__Exercise",xH=307,xG=477,xD=311,xE=389,xF=1142,xC="Haz3lcore__DHPat",xA="Re__Glob",xB="Ast_helper",xy="Haz3lcore__Selection",xz=699,xx=1324,xw=928,xv="Base__Buffer",xu=233,xr="Haz3lschool__SyntaxTest",xs="Haz3lcore__Mold",xt=161,xp="Sys_error",xq=436,xn="Base_internalhash_types",xo=568,xm=476,xl="Base__Buffer_intf",xj="Base_quickcheck__Generator",xk="Async_kernel__Async_condition",xh=424,xi="Haz3lcore__FilterMatcher",xf=479,xg=358,xe="Js_of_ocaml__WebSockets",xc="Js_of_ocaml__ResizeObserver",xd="Bin_prot__Write",xb=945,xa=1124,w_="Jsoo_runtime",w$="Haz3lweb__WeakMap",w9=782,w7=509,w8="Astlib__Ast_412",w6=276,w4="Sexp_hidden_in_test",w5="Haz3lcore__Form",w2="Haz3lcore__EvalCtx",w3="Expect_test_common__Expectation",w0="Stdlib__StdLabels",w1="Patterns",wZ=1290,wW="Base__Variant",wX=1150,wY="Async_kernel__Pipe",wV=155,wT="Haz3lcore__TileMap",wU="Haz3lcore__Ancestor",wQ="Parmatch",wR=1121,wS="Base__Ref",wO=469,wP=1168,wN="Async_kernel__Monitor",wM=229,wL="Haz3lcore__TestStatus",wH="Tuple_pool__Import",wI="Sexplib__Type_with_layout",wJ="Protocol_version_header__List_with_max_len",wK=337,wF=1198,wG=200,wE="Parsexp__Positions",wD="Incremental__Alarm",wB="Incremental__Import",wC=903,wz=1200,wA="Haz3lcore__AssistantCtx",wy=1170,ww="Ppxlib__Spellcheck",wx=334,wv=494,wt="UnionFind__StoreRef",wu=199,wr=184,ws="Haz3lweb__SlideContent",wp=576,wq=489,wo="Incremental__Unordered_array_fold",wm=237,wn="Core__Hashtbl_intf",wj=1289,wk="Haz3lweb__TerminalTyp",wl="Ast_invariants",wi="Base__Identifiable_intf",wg=1267,wh="Ezjs_min__Dom",we="Parsexp__Cst",wf=1196,wb="Haz3lcore__Relatives",wc=777,wd=760,wa=1014,v$="Haz3lweb__Page",v_=949,v8=191,v9="Async_kernel__Stack_or_counter",v7="Stdlib__Gc",v6=1268,v4=1283,v5=877,v2="Stypes",v3=550,v1="Core__Comparator",vY="Haz3lweb__Code",vZ=501,v0=340,vX=1328,vW="Async_rpc_kernel__Connection",vT="Stdlib__Lazy",vU=1250,vV=259,vS=789,vR=592,vQ="Haz3lcore__Backpack",vO=525,vP=1169,vL=520,vM="Haz3lweb__TestExp",vN="Expect_test_common__File",vH=1092,vI="Incr_select",vJ="Ezjs_min__Promise",vK="Base__List",vG=442,vF="Haz3lcore__Insert",vE=1175,vD="Base__Bool",vC="Haz3lweb__ExerciseUtil",vA=397,vB=1176,vx=121,vy="Haz3lcore__Mode",vz="Async_rpc_kernel__Writer_with_length",vu=1091,vv=519,vw=1183,vs=168,vt="Async_kernel__Time_source",vp="Core__Import",vq="Core__Stable",vr="Async_rpc_kernel__Rpc_error",vo=650,vn=628,vl="Invalid_argument",vm=1209,vk=1272,vj=612,vi="Protocol_version_header__List_with_max_len_intf",vh="Diffing",vg="Base__Ordered_collection_common",ve=806,vf="Core__Lazy",vc=1044,vd="Tmc",vb="Haz3lweb__Icons",u$=1347,va=794,u8="Ppx_yojson_conv_expander__Label_with_name",u9=542,u_=512,u6=1026,u7="Thread_pool_cpu_affinity__",u5=157,u4=839,u1="UnionFind",u2=1107,u3=690,uY=531,uZ="Ppxlib__Keyword",u0="Base__Sign",uW="Base__Variantslib",uX="Astlib__Ast_408",uV=198,uU=1012,uT=831,uQ=248,uR="Core__Make_substring_intf",uS=174,uN=470,uO=1152,uP=898,uM="Misc",uL=378,uJ="Re",uK="Base__Stringable",uI="Core__Option",uG=1037,uH="Ppxlib__Expansion_context",uF=1025,uE=623,uD=108,uA=466,uB=1171,uC=742,uw="Virtual_dom__Attr",ux=1323,uy=750,uz="Core__Unique_id",uv="Haz3lcore__Shard",ut=1281,uu=339,us="Angstrom__More",ur="Ppxlib_ast__Warn",uo="Haz3lcore__Labels",up="Haz3lweb__FunctionExp",uq="Astlib__Migrate_406_405",um=1291,un=709,uk=646,ul=808,ui=1034,uj=825,ug=194,uh="Base__Pow_overflow_bounds",uc="Stdlib__Int",ud="Vdom_file_download",ue=1301,uf=541,t$="Parsexp__Automaton_action",ua=138,ub=382,t_=298,t7=1036,t8="Untypeast",t9="Haz3lweb__Ex_OddlyRecursive",t6="Translattribute",t5="Haz3lweb__ExplainThisUpdate",t3=1188,t4="Core__Comparable",t2=864,tZ=506,t0=179,t1=117,tY="Core__",tW=419,tX=543,tU=319,tV="Base__Uchar",tS="Core__Memo",tT=353,tQ="Virtual_dom__Effect",tR=752,tO="Load_path",tP=516,tN="Core__Int_intf",tM=1212,tL=458,tK=1227,tJ=704,tI="Core__Ephemeron",tG=1223,tH=880,tF=250,tD="Haz3lweb__PipelineExp",tE="Core__Core_pervasives",tC=1304,tB="Core__Span_float",tz=274,tA="Base_for_tests__Test_binary_searchable",ty="Core__Time_ns",tw="Pretty__ListUtil",tx=1009,tu=712,tv=616,ts=585,tt="Base__Word_size",tr=902,tq="Haz3lcore__Secondary",tn=1230,to="Haz3lweb__DHLayout",tp=163,tl="Base__Pretty_printer",tm=892,tk="Base__Source_code_position0",tj=343,th=379,ti="Async_rpc_kernel__Implementation_types",tf="Incremental__Types",tg="Haz3lweb__ListExp",td="Typerep_lib__Make_typename",te=968,ta="Incremental__Array_fold",tb=1213,tc=1158,s_="Sexplib__Exn_magic",s$=362,s8="Js_of_ocaml__EventSource",s9="Incremental_step_function",s7=218,s6=1210,s4=643,s5="Stdlib__Condition",s3=1003,s1="Core__Hashable_intf",s2=216,sY=1327,sZ="Core__Time_ns_alternate_sexp",s0="Async_rpc_kernel__Implementations",sW="Uri_sexp",sX=185,sT=842,sU="Bytesections",sV="Base__Array",sQ="Omd_representation",sR=1335,sS="Base__Field",sP="Incremental__",sO="Haz3lweb__CaretPosDec",sN=1253,sM="Base__Hash_set",sL=894,sJ=1031,sK="Haz3lweb__PieceDec",sH="Weak_hashtbl__Import",sI="Re__Color_map",sD=321,sE="Util__StateMonad",sF=1217,sG=1094,sC="Stdio__",sB=1258,sz=1021,sA="Stdlib__Mutex",sy="Haz3lweb__FilterExp",sw="Stdlib__ListLabels",sx=359,ss=299,st=452,su=1254,sv="Core__Stable_unit_test_intf",sp="Sexplib0__Sexp_conv_grammar",sq="Matching",sr="Async_rpc_kernel__Implementation",so="Async_js",sn=1280,sm="Core__Bag",sg=833,sh=403,si="Parsexp__Parse_error_intf",sj=1246,sk="Base__Monad",sl="Base__Float0",se=532,sf="Stdlib__Semaphore",sc=280,sd="Haz3lcore__FilterAction",sb=955,r$="Yojson__Lexer_utils",sa=109,r9="Incr_map__",r_="Core__Arg",r8=1247,r7="Core__Optional_syntax_intf",r6=310,r5=1185,r3=265,r4=475,r1="Haz3lweb__Example",r2=761,rZ="Haz3lcore__Delta",r0="Core__Hexdump_intf",rY=1141,rX="Makedepend",rW="Stdlib__Digest",rU=920,rV=346,rS="Parser",rT="Core__List0",rR=208,rN=1020,rO="Core__Bigbuffer_internal",rP="Base__Int63",rQ=938,rL="Stdlib__Nativeint",rM=203,rK="Haz3lcore__AssistantExpander",rJ="Stdlib__Stack",rI=431,rH="Core__Set_intf",rG="Typerep_lib__Named_intf",rE=546,rF=691,rD="Typedtree",rB="Type_immediacy",rC="Base__Intable",rA="Typedecl_immediacy",rz=556,ry="Ppxlib__Location_check",rx=915,rw="Ppx_derivers",rv="Core__Identifiable",rs=1076,rt="Symtable",ru="Base_quickcheck__Observer0",rr=336,rq="Js_of_ocaml__Typed_array",ro="Bin_prot",rp=1060,rm="Ui_effect__",rn=1162,rk="UnionFind__StoreVector",rl="Haz3lweb__DHCode",rj="Parsexp__Conv_intf",rh=527,ri=504,rf="Uopt",rg=258,re=383,rc=1316,rd=182,ra=1352,rb="Base__Sexp_with_comparable",q$=1294,q9="Haz3lcore__CoreSettings",q_="Arg_helper",q6=349,q7="Timing_wheel__Import",q8=1215,q4=1312,q5="Haz3lcore__Select",qZ=231,q0=970,q1="Haz3lweb__Ex_RecursiveFibonacci_prompt",q2="Haz3lcore__UTyp",q3=625,qY=959,qW="Typerep_lib__Type_equal",qX="Opcodes",qS=1300,qT="Haz3lcore__Nibs",qU="Base__Bytes",qV=878,qR=386,qQ=1146,qO="Incremental__Cutoff",qP=1288,qL="Ppx_deriving_runtime",qM="Incr_map",qN=1353,qJ=667,qK=507,qI=239,qG="Haz3lcore__TypeAssignment",qH=348,qF=1350,qE="Md5_lib",qD="Base__Info_intf",qC=661,qB=642,qA=367,qy="Core__Queue",qz="Astlib__Ast_413",qw="Ppx_yojson_conv_lib__Yojson_conv",qx=491,qv="Haz3lweb__ExerciseSettings_instructor",qu=1043,qt=1097,qr="Stdlib__Random",qs="Ppxlib_traverse_builtins",qp=1082,qq=781,qn=680,qo=1132,qj="Astlib__Location",qk="Typetexp",ql="Js_of_ocaml__Intl",qm="Base__Floatable",qi=137,qg="Ppx_quickcheck_runtime__Quickcheckable",qh="Core__Deque",qf="Core__Maybe_bound",qe=409,qd="Numbers",p$=1057,qa=1197,qb="Js_of_ocaml__CSS",qc="Async_kernel_config",p8="Ppxlib_ast__Stdlib0",p9=640,p_=122,p7="Base__Either_intf",p5="Haz3lweb__ExerciseSettings",p6="Astlib__Migrate_414_413",p2=448,p3="Core__Univ_map",p4="Core__Ofday_ns",p0="Stdlib__String",p1="Haz3lweb__ArrowTyp",pZ="Async_rpc_kernel__Transport",pX="Incremental",pY="Haz3lweb__CodeEditor",pV=904,pW="Async_kernel__Deferred_queue",pT="Base__Int0",pU="Ppxlib__Reconcile",pS=900,pP=1052,pQ=1174,pR=672,pM="Util__TimeUtil",pN="Ppxlib_ast__Ast",pO="Haz3lweb__SeqExp",pL=802,pK=1086,pJ="Core__Float_with_finite_only_serialization",pI="Js_of_ocaml__Dom_html",pG=1276,pH="Css_gen__",pF="Async_kernel__Types",pE=345,pB="Timing_wheel__Timing_wheel_intf",pC="Haz3lweb__Grading",pD="Core__Ofday_intf",py="Ppx_assert_lib__Runtime",pz=557,pA=166,pv="Incr_dom__Start_app",pw=1303,px=202,pt="Core__Linked_queue",pu=210,pr=973,ps="Ezjs_min",pp=1153,pq="Async_rpc_kernel__Protocol",po="Astlib__Migrate_408_409",pm=599,pn=1022,pl=917,pj="Stdlib__Sys",pk=323,pi="Base__Source_code_position",pg=282,ph=984,pf=372,pe=295,pd=1255,pc="Includemod_errorprinter",pb="Expect_test_config",o$="Errortrace",pa=1248,o9="Core__Univ_map_intf",o_=188,o7=687,o8="Base__Hashtbl",o6=183,o5=914,o3="Binutils",o4=858,o2="Core__Type_equal",o0="Incremental__Sexp_of",o1="Astlib__Migrate_412_413",oZ=480,oY=673,oX=698,oV="Util__StringUtil",oW=1203,oS="Haz3lcore__InvalidOperationError",oT=324,oU="Async_kernel__Deferred_memo",oQ="Ojs",oR=1295,oP=1211,oN=455,oO=689,oL="Yojson__Common",oM=193,oJ="Ppx_here_lib",oK="Haz3lcore__Term",oI=164,oF=1136,oG=783,oH=891,oB="Protocol_version_header__Known_protocol",oC="Weak_array",oD="Incremental__Scope",oE=505,oA="Haz3lcore__Sort",oy=272,oz=178,ox="Async_rpc_kernel__Nat0",ow=297,ov="Pretty__Box",ot="Core__Unit",ou=187,os=149,oq=484,or="Async_rpc_kernel",op="Async_kernel__Clock_ns",on=1128,oo="Base__Set",ol="Haz3lweb__SvgUtil",om="Haz3lweb__ColorSteps",oj="Incremental__If_then_else",ok="Core__List",oi="Haz3lcore__EvaluatorState",oh="Sexplib__Src_pos",og="Incr_select__Incr_select_intf",of="Cmt2annot",od="Sexplib__Type",oe="Async_kernel__Deferred0",oa="Incremental__Node_id",ob=975,oc="Core__Date0_intf",n$="Angstrom__Parser",n9="Expect_test_common",n_="Astlib__Migrate_409_408",n8=1144,n7="Identifiable",n4="Stdlib__Obj",n5="Core__Deriving_hash_intf",n6=514,n0=303,n1="Haz3lweb__ForallTyp",n2=764,n3=180,nY=368,nZ=736,nX="Base_for_tests__Test_blit",nW=169,nU=1048,nV="Async_kernel__Execution_context",nT="Virtual_dom__Js_map",nS=865,nQ="Runtimedef",nR=1260,nP="Base__T",nO="Omd_xtxt",nN=944,nL=866,nM="Astlib__Ast_405",nK=1133,nJ=765,nH="Typedecl_separability",nI=620,nE=285,nF=356,nG=267,nB=951,nC=1236,nD="Ezjs_min__Table",nA="Ppxlib__Skip_hash_bang",ny="Ppxlib__Ignore_unused_warning",nz=1338,nx="Async_kernel__Deferred_std",nu=563,nv="Core__Quickcheckable_intf",nw="Core__Hash_queue_intf",ns="UnionFind__",nt=943,nr=342,nq="Parsexp__",nn="Stdlib__Hashtbl",no=524,np="Async_rpc_kernel__Pipe_transport",nm=582,nl="Sexplib__Std",nj=605,nk=376,ni=318,ng=395,nh=1305,nf=644,nd="Incremental__Internal_observer",ne="Dll",nc="Simplif",na="Js_of_ocaml__Jstable",nb="Haz3lweb__ExerciseSettings_base",m_="Css_gen",m$="Base__Ordering",m8="Haz3lschool__Specs",m9="Clflags",m7=156,m4=1073,m5=301,m6=1208,m1=154,m2=942,m3=1356,m0=1017,mZ="Astlib__Migrate_414_500",mY=571,mV=1251,mW=1191,mX="Core__Core_sys",mT=1074,mU=1179,mR=1039,mS=290,mP=1262,mQ="Ppx_module_timer_runtime",mO=1339,mM=1007,mN=762,mL="Haz3lweb__ExplainThisModel",mK="Ppxlib__Context_free",mI="Haz3lcore__ConstructorMap",mJ=377,mF="Signature_group",mG="Ccomp",mH="Base__Int_conversions",mE="Stdlib__Printexc",mD="Base__Either",mC=1038,mz=544,mA="Core__Hash_set",mB="Astlib__Pprintast",my=801,mx="Core__Make_substring",mw="Division_by_zero",mv="Core__Ordering",mu=1126,mt="Core__Sexp",mq="Astlib__Migrate_411_412",mr="Haz3lcore__Measured",ms=614,mm=119,mn=287,mo="Stdlib__Weak",mp=657,ml="Virtual_dom__Hooks",mj=101,mk="Base__Comparisons",mi="Angstrom__",mh=1225,mf=255,mg=1002,me=288,mb=100,mc="UnionFind__Store",md=261,ma="Core__Container",l$=456,l9="Parsexp__Automaton_intf",l_="Base__Stack_intf",l8="Pretty__LayoutOfDoc",l5=964,l6=1235,l7="Core__Set",l4=1317,l3=1310,l1=998,l2=1306,l0=1186,lZ="Haz3lweb__FontSpecimen",lY=486,lW=583,lX="Core__Substring_intf",lU="Variantslib",lV="Ppx_yojson_conv_lib__",lS="Tast_iterator",lT=421,lR=676,lQ="Base__Queue_intf",lP=745,lO=1045,lN=1078,lM="Haz3lweb__TupleTyp",lL=266,lK=570,lI="Haz3lweb__DHDoc",lJ=209,lH="Ezjs_min__BigInt",lF="Core__Stack",lG="Balanced_reducer",lE="Uuidm",lD="Base__Sexpable",lB="Lexer",lC=1166,lz="Int_repr",lA=974,lx=1239,ly=354,lv="Stdlib__Either",lw="Ppxlib__Ast_builder_intf",lt="Ezjs_min__Js",lu="Ppx_assert_lib",lr="Haz3lweb__FontMetrics",ls=919,lq=1243,lo="Ppxlib__Common",lp="Haz3lweb__Keyboard",ll="Re__Emacs",lm="Haz3lcore__VarBstMap",ln=1277,lk=933,li=700,lj="Core__Heap_block",lg="Base__Fieldslib",lh=384,lf=223,le="Pretty__MemoTbl",lc="Pretty__MeasuredPosition",ld="Haz3lweb__ExplainThis",la="Persistent_env",lb=774,k_=753,k$="Core__Bytes",k9=957,k7=1345,k8="Build_path_prefix_map",k6=1050,k5="Main_args",k4="Async_kernel__Monitor0",k2="Ppx_yojson_conv_expander",k3=899,kX=388,kY=503,kZ="Omd",k0="Core__Date_intf",k1="Base_quickcheck__With_basic_types",kW=430,kS="Parsexp__Parser",kT="Incremental__At",kU="Haz3lcore__EvaluatorStep",kV=702,kQ=830,kR="Pretty__Doc",kO="Ppxlib",kP="Base__Blit",kM="Js_of_ocaml__Regexp",kN="Html_characters",kJ=909,kK=416,kL=1332,kH=636,kI="Astlib__Migrate_407_408",kE=1010,kF=741,kG="Core__Day_of_week_intf",kC="Ppxlib__Code_path",kD="Haz3lweb__Model",kz=390,kA="Base__Ppx_hash_lib",kB="Base__Maybe_bound",ky="Typedecl_properties",kw="CamlinternalLazy",kx="Haz3lweb__SettingsModal",ku="Haz3lcore__Suggestion",kv=207,kt=713,ks=717,kq="Virtual_dom__Raw",kr="Core__Doubly_linked_intf",kn=837,ko=500,kp=220,kl=613,km="Base__Map",ki="Haz3lweb__HolePat",kj=481,kk=351,kf=826,kg="Haz3lcore__AssistantForms",kh="Astlib__Migrate_402_403",ke="Haz3lweb__State",kd="Parsexp__Automaton",kc=619,kb=696,ka="Base__Sys",j$="Async_kernel__Ivar0",j9=482,j_="Core__Month",j8="Typedecl",j6="Includecore",j7="Sexplib__Parser",j4="Translobj",j5=363,j3="Async_rpc_kernel__On_exception",j2="Sexplib0__Sexp_conv",jZ="Ppxlib__Code_matcher",j0=433,j1=773,jY="Incremental__Reduce_balanced",jV="Translmod",jW="Base__Linked_queue",jX="Astlib__Migrate_404_405",jU="Angstrom__Input",jQ=498,jR="Stdlib__Ephemeron",jS="Ppx_bench_lib__Export",jT="Astlib__Migrate_411_410",jP="Haz3lweb__ListPat",jN=1334,jO=632,jL=1137,jM=483,jJ=1127,jK="Base",jG="Stdlib__Fun",jH="Util__ListFrame",jI="Util",jD=981,jE="Haz3lweb__DHDecoration",jF="Base__Invariant",jC="Virtual_dom__Node",jB=1311,jz="Util__TupleUtil",jA="Haz3lcore__Zipper",jx="Stdlib__Result",jy=626,jw="Haz3lweb__IfExp",ju="Stdlib__Buffer",jv="Async_kernel__Async_invariant",js="Haz3lcore__CachedStatics",jt=771,jp="Re__Str",jq="Parsexp",jr=779,jo=688,jl=654,jm="Async_rpc_kernel__Versioned_rpc",jn=381,jj="Async_kernel__Ivar_filler",jk=863,jh=538,ji=999,jg=1244,jf="Weak_hashtbl",je=195,jd=579,jc="Yojson__T",jb=522,i$=852,ja="WorkerServer",i_="Async_kernel__Scheduler0",i9=969,i8=408,i6="Typecore",i7=410,i5=1274,i4=240,i3=815,i2="Base__Binary_search",iY="Typerep_lib__Std_internal",iZ=569,i0="Incr_select__",i1=660,iX=963,iW="Re__Automata",iV=598,iU=1056,iT=817,iR=972,iS="Core__Bigbuffer",iP="Stdlib",iQ=940,iN=622,iO=854,iM="Core__Either",iK="Haz3lcore__Orientation",iL="Core__Bag_intf",iH="Sexplib__Sexp",iI="Haz3lweb__HTypDoc",iJ="Base__Nativeint",iF="Pretty__Unicode",iG=375,iC=444,iD="Haz3lweb__ScratchSlidesInit",iE=1240,iy=335,iz=995,iA=648,iB=948,iv=296,iw="Haz3lcore__UPat",ix="Css_gen__Css_tokenizer",iu=655,ir=132,is="Syntaxerr",it="Haz3lcore__EvaluatorError",iq="Core__Deriving_hash",ip="Timing_wheel",im="Core__Time_float",io="Base__Unit",ik="Parsexp__Automaton_tables",il="Async_kernel__Deferred",ig="Haz3lweb__BlankTemplate",ih="Haz3lcore__Move",ii=260,ij=737,id=685,ie=856,ia=633,ib=1205,ic="Haz3lweb__FixFExp",h$=1220,h_="Stdlib__Int64",h8="Haz3lweb__DHDoc_common",h9="Core__Hash_queue",h6=284,h7="Haz3lweb__JsUtil",h4=1113,h5=889,h3="Ppxlib__Quoter",h2="Time_now",h0=857,h1="Haz3lweb__Diag",hZ="Incremental__Join",hV="Haz3lweb__Store",hW=675,hX=139,hY=371,hT="Sexplib__Path",hU="Core__Int32",hS=1095,hQ=1046,hR="Base__Formatter",hO=1109,hP="Core__Binable",hN=706,hL="Incremental__Snapshot",hM="Haz3lcore__Statics",hI=1047,hJ=1067,hK="Bin_prot__Std",hH="Incr_map__Incr_map_intf",hG=1087,hF="Js_of_ocaml__WebGL",hE="Stdlib__Queue",hD="Base__Sign_or_nan",hC=659,hB="CamlinternalMod",hy=264,hz="Vdom_input_widgets__",hA=901,hw=114,hx="Haz3lweb__ScratchMode",hs=1006,ht="Haz3lweb__TuplePat",hu=1342,hv="Haz3lcore__ModelResult",hp=1040,hq=1177,hr="Core__Option_array",ho="Base__Comparator",hn="Stdlib__Effect",hm="Async_kernel__Async_stream",hl="Stdlib__List",hk=862,hj="Js_of_ocaml__MutationObserver",hh="Re__Group",hi=327,hf="Core__String",hg=111,hd=832,he=1110,hc="Haz3lcore__FilterEnvironment",hb="Bin_prot__Shape",g$="Parsexp__Old_parser_cont_state",ha="Js_of_ocaml__Json",g_=135,g9="Haz3lcore__IncompleteBidelim",g8="Stdlib__Set",g7=726,g5=499,g6=1297,g3=495,g4="Haz3lweb__CaseExp",g2=703,g0="Haz3lcore__Evaluator",g1="Async_kernel__Async_invariant_intf",gY="Switch",gZ=730,gX=127,gU="Incr_dom__Incr",gV="Haz3lweb__FailedInput",gW=190,gT=1302,gR=812,gS=1072,gQ=663,gO="Stdio__Out_channel",gP="Astlib__Ast_metadata",gM="Core__Source_code_position",gN=217,gI="Re__Posix",gJ="Profile",gK=784,gL=594,gG="Haz3lweb__TypFunctionExp",gH=357,gF="Pretty__Layout",gE=1033,gD=1282,gC=1237,gA="Subst",gB="Js_of_ocaml__PerformanceObserver",gy="Expect_test_config_types__Expect_test_config_types_intf",gz=734,gx="Core__Perms",gw="Base__Array_permute",gt=840,gu="Base__Comparable",gv="Astlib__Migrate_403_402",gs=131,gr="Stringext",gq=719,gp="Stdlib__Marshal",gm=253,gn="Haz3lweb__TypAppExp",go=723,gi=314,gj=861,gk="Async_kernel__Job_or_event",gl=885,gg="Incr_dom__Component",gh="Haz3lweb__StepperEditor",ge="Base__String0",gf=451,gd=1011,gc="Ezjs_min__Log",gb="Haz3lweb__OpExp",ga="Base__Staged",f8=849,f9="Astlib__Ast_406",f_=1184,f$=173,f5=124,f6=391,f7="Incremental__Incremental_intf",f4="Haz3lweb__Kind",f1=1024,f2="Incremental__Alarm_value",f3=960,f0=246,fY=429,fZ="Async_kernel__Job_pool",fW="Typedecl_unboxed",fX=1265,fS=813,fT=326,fU="Sexplib0__",fV=1108,fQ=958,fR="Parsexp__Automaton_stack",fO=1093,fP="Location",fM="Inline_test_config",fN=1180,fJ=908,fK=572,fL="Core__Command_shape",fH="Base__Identifiable",fI="Base__Hash_set_intf",fF=1354,fG=1193,fE=547,fD=1147,fB="Js_of_ocaml__Worker",fC=639,fy="Stdlib__Char",fz="Core__Blang",fA=947,fw="Stdlib__Int32",fx=843,fv=827,fr=1151,fs=678,ft="Bin_prot__Nat0",fu="Async_rpc_kernel__Description",fp=1358,fq=682,fo=931,fm="Typerep_lib__Std",fn="Ezjs_idb__Ezjs_idb_types",fk="Sexplib__Sexp_intf",fl=1159,fj=333,fi="Typeopt",fh=461,fg="Base__Comparable_intf",ff="Haz3lcore__Editor",fe="Haz3lcore__Elaborator",fd="Haz3lschool",fb=269,fc="Base_quickcheck__",fa="Fieldslib",e$="Parsexp__Parser_intf",e9="Haz3lweb__HoleTemplate",e_=767,e6=1202,e7="Haz3lcore__UExp",e8="Astlib__Migrate_410_411",e4="Ppx_yojson_conv_lib__Yojson_conv_error",e5=776,e3="Core__Pid",e2=518,eZ="Core__Or_error",e0=1148,e1=869,eY="Haz3lweb__ExerciseSettings_student",eX=738,eT=1070,eU="Stdlib__Lexing",eV="Incremental__Node",eW=1134,eQ="Types",eR=1156,eS=807,eO="Ppxlib__Ast_pattern_generated",eP=993,eN="Mtype",eL=924,eM=897,eJ="Virtual_dom",eK="Protocol_version_header",eI=243,eG="Primitive",eH="Core__Array",eF="Thread_safe_queue",eE="Haz3lcore__CoCtx",eC="Tuple_pool__Tuple_type_intf",eD="Dune__exe__Main",eA=1167,eB="Bin_prot__Type_class",ev="Virtual_dom__Global_listeners",ew=818,ex="Timing_wheel__",ey="Core__Binary_searchable",ez="Core__Command",eu="Ptmap",er=539,es="Ppxlib__Merlin_helpers",et="Ppxlib__",eq="Haz3lweb__Init",ep=994,en="Typerep_lib",eo="Stdlib__Float",em="Base__Option_array",el=143,ek="Base__Char",ej=721,ef="Includemod",eg=740,eh=923,ei="Attr_helper",ed=778,ee=732,eb=739,ec="Async_kernel__Job",d_=986,d$=291,ea=926,d9="Core__Set_once",d8=1241,d7=562,d5=1118,d6=146,d3=631,d4=423,d2="Stdlib__Format",d1="Base__Hash_intf",dZ=1018,d0="Astlib__Ast_411",dY="Pretty__Cost",dX=664,dW=1065,dV=976,dT="Weak_pointer",dU=177,dS=1068,dR="Virtual_dom__Vdom",dQ="Stdlib__Option",dP="Base__Uniform_array",dN=1326,dO="Core__Span_helpers",dM="Haz3lweb__DebugConsole",dK="Base_quickcheck__Observer",dL="Astlib__Config",dJ=219,dI="Ppxlib__Driver",dF=1041,dG=1269,dH=186,dD="Ppxlib__Name",dE=496,dA="Virtual_dom__Gen_js_api",dB=393,dC=1270,dy=428,dz="Async_kernel__Scheduler1",dx="Base__Int32",dw="Core__Binary_searchable_intf",dv="Base__Array0",du="Core__Bounded_index",dt=602,ds="Base__Hasher",dq="Js_of_ocaml__Dom_svg",dr="Async_rpc_kernel__Rpc_result",dp=747,dn=1320,dm=315,dk="Ppxlib_ast__Versions",dl="Astlib__Migrate_412_411",dj=1164,df=465,dg="Incremental__Step_function_node",dh=1318,di=1138,de="Astlib__Ast_403",db=1165,dc="CamlinternalFormat",dd=196,da=609,c$="Astlib__Ast_500",c7=1063,c8="Core__Make_stable",c9="Async_rpc_kernel__Transport_intf",c_=929,c6=281,c5=989,c4=1199,c3=624,c2=1140,c0=992,c1="Haz3lcore__Siblings",cZ=462,cV=744,cW=800,cX=332,cY="Base__Ordered_collection_common0",cU=1172,cT=724,cR="Targetint",cS=110,cP="Bin_prot__Read",cQ=128,cO=1343,cM=1259,cN="Astlib__Migrate_405_404",cJ="Omd_lexer",cK="Incremental__Bind",cL="CamlinternalMenhirLib",cG=536,cH=1229,cI="Core__Int64",cE=1008,cF="Core__Blit_intf",cA=306,cB="Sexplib__Sexp_grammar_intf",cC="Incremental__Raised_exn",cD=638,cz="Parsexp__Parse_error",cy="Astlib__Stdlib0",cx=658,cv=581,cw="Haz3lcore__Effect",cq=234,cr="Typemod",cs=1222,ct="Haz3lweb__SegmentTree",cu=102,cp=666,cm=418,cn=552,co="Base__Linked_queue0",cl="Core__Zone_intf",ck="Base__Sign0",cj=1129,ci="Haz3lweb__HoleTPat",cg=1308,ch=1296,ce="Expect_test_config_types",cf="Core__Bigsubstring",cc="Sexplib__Conv_error",cd="Async_kernel__Tail",cb=396,b$=313,ca="Stdlib__Seq",b_="Core__Sign_or_nan",b8=1234,b9="Haz3lcore__Casts",b5="CamlinternalOO",b6="Shadow_stdlib",b7="Re__Perl",b3="Pretty__MeasuredLayout",b4="Haz3lweb__SerializedExamples",b2="Js_of_ocaml__Firebug",b1="Haz3lcore__TyDi",b0=595,bZ=918,bX="Core__Printf",bY=1224,bW=116,bV="Uri",bU="Haz3lcore__Token",bR=528,bS="Ezjs_min__",bT=432,bP=159,bQ=796,bL=535,bM="Incremental__On_update_handler",bN="Haz3lcore__Destruct",bO="Haz3lcore__CodeString",bK=350,bJ=835,bI=435,bG=401,bH=991,bE="Ppxlib_ast__Ast_helper_lite",bF=160,bz=412,bA="Haz3lcore__Environment",bB="Core__Core_bin_prot",bC="Bin_shape_lib__Std",bD="Astlib__Migrate_406_407",bx=1325,by=385,bw="UnionFind__UnionFindOverStore",bt=1207,bu="Async_kernel__Bvar",bv="Astlib__Ast_409",br="Ppx_enumerate_lib",bs="Haz3lweb",bq="Core__Hashable",bp="Haz3lweb__Log",bn="Haz3lcore__Unboxing",bo="Core__Span_ns",bl=262,bm=263,bk=983,bi=847,bj=1105,bh=770,bg=692,be=471,bf="Base_quickcheck",bd="Core__String_id",ba="Rec_check",bb="Core__Time",bc=511,a_="Thread_pool_cpu_affinity__Import",a$="Std_exit",a8="Util__Web",a9=850,a4="Incremental__Config",a5="Haz3lweb__DHAnnot",a6="Domainstate",a7="Core__Tuple",a1="Util__PairUtil",a2=316,a3="Jane_street_headers",aY="Stdlib__StringLabels",aZ=905,a0="Haz3lweb__RecTyp",aW="Base__List0",aX=1155,aV=855,aU=112,aS=1219,aT="Javascript_profiling",aR=140,aQ="Re__Pmark",aP="Incremental__Before_or_after",aN="Ppx_yojson_conv_expander__Attrs",aO="Expect_test_collector__Check_backtraces",aL=912,aM="Core__Robustly_comparable",aJ="Translclass",aK="Stdlib__Scanf",aI=727,aH="Incremental__Freeze",aG=214,aE=1182,aF=347,aC="Core__Host_and_port",aD=647,aB=763,ay=464,az=360,aA=364,ax=551,at=1075,au="Haz3lcore__PatternMatch",av=671,aw="Base__Avltree",as=440,ar="Stdlib__Bool",aq="Core__Quickcheck_intf",ao="Js_of_ocaml__Dom",ap=980,an="Ui_effect__Ui_effect_intf",am="Predef",al=457,aj="Typerep_lib__Type_generic",ak="Async_kernel__Deferred_sequence",ai="Core__Sign",ah=1285,ag="Core__Immediate_option_intf",ad="Stdlib__Oo",ae=271,af=694,ac=130,aa=441,ab="Ppxlib__Deriving",_=809,$=1084,Z=322,W=106,X=978,Y="Base__Hex_lexer",V=1329,S=1201,T="Core__Gc",U="Core__Byte_units0",R=578,P="Virtual_dom__",Q="Haz3lweb__VarTPat",N=1062,O=251,L=587,M="Haz3lcore__Pat",I="Sexplib__Conv",J="Js_of_ocaml__XmlHttpRequest",K="Async_js__Async_js0",D="Stdppx",E="Ppxlib__Ast_builder",F=1173,G=708,H="Base__Set_intf",B=1030,C=649,A="Astlib__Ast_410",z=979,y=705,x=434,v="Cmt_format",w=268,t="Typerep_lib__Typerep_obj",u=286,s="Async_rpc_kernel__Util",q=103,r="Async_kernel__Time_source_intf",l=294,m=420,n="Parsexp__Parsexp_intf",o="Core__Comparable_intf",p=890,j=142,k=785,i="Core__Command_intf",f=1015,g=574,h=769,e="Haz3lcore__TestMap",b=934,d=867,Oj=a.jsoo_runtime,c=Oj.caml_get_global_data();c.prim_count=b;var -Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0,1],[2,zT],iQ,0,2],[2,mi],b,[0,0,[2,yp],F8,0,1],3],[2,CO],Kq,[0,[0,[0,0,[2,jU],L3,0,1],[2,us],N8,[0,0,[2,n$],rQ,0,1],2],[2,q_],A5,[0,0,[2,Bi],0,0,1],3],4],On=[0,0,[2,nM],hY,0,1],Oo=[2,IH],Op=[0,[0,0,[2,BL],qR,0,1],[2,Li],wx,[0,[0,0,[2,Hp],Fl,0,1],[2,de],mJ,0,2],3],Oq=[0,[0,0,[2,d0],tT,0,1],[2,w8],bK,[0,0,[2,qz],aF,0,1],2],Or=[2,A],Os=[0,[0,0,[2,zx],BI,0,1],[2,uX],s$,[0,0,[2,bv],sx,0,1],2],Ot=[0,[0,[0,0,[2,gP],by,0,1],[2,dL],lh,0,2],[2,zw],re,0,3],Ou=[2,Hr],Ov=[0,0,[2,c$],y3,0,1],Ow=[0,[0,0,[2,If],uL,0,1],[2,jX],nk,[0,0,[2,cN],iG,0,1],2],Ox=[2,LP],Oy=[0,0,[2,GN],wK,[0,[0,0,[2,kh],ub,0,1],[2,gv],jn,0,2],3],Oz=[0,[0,0,[2,NJ],yn,0,1],[2,po],aA,[0,0,[2,n_],j5,0,1],2],OA=[2,kI],OB=[0,[0,0,[2,uq],pf,0,1],[2,bD],Lp,[0,0,[2,y9],K1,0,1],2],OC=[0,0,[2,jT],gH,0,1],OD=[2,e8],OE=[0,0,[2,yf],az,0,1],OF=[0,0,[2,BP],kk,0,1],OG=[2,o1],OH=[0,0,[2,dl],ly,0,1],OI=[0,[0,[0,[0,[0,0,[2,so],v_,0,1],[2,x1],nt,[0,0,[2,K],iB,0,1],2],[2,y2],nN,[0,[0,0,[2,IB],fA,0,1],[2,F$],MR,0,2],3],[2,Ie],xb,[0,0,[2,Fn],tr,[0,0,[2,HG],ER,0,1],2],4],[2,xk],uP,[0,[0,0,[2,Mo],k3,[0,0,[2,jv],hA,0,1],2],[2,g1],pS,[0,0,[2,Do],JI,0,1],3],5],OJ=[2,cy],OK=[0,[0,[0,0,[2,p6],qH,0,1],[2,mZ],rV,[0,0,[2,L9],pE,0,1],2],[2,Hv],Jq,[0,[0,0,[2,Av],tj,0,1],[2,I2],v0,[0,0,[2,mB],uu,0,1],2],3],OL=[0,[0,[0,[0,0,[2,HY],d,0,1],[2,Ip],F_,[0,0,[2,DW],gl,0,1],2],[2,Lr],Lz,[0,0,[2,oU],K9,0,1],3],[2,NW],Je,[0,[0,[0,0,[2,za],p,[0,0,[2,pW],oH,0,1],2],[2,Ho],h5,[0,0,[2,ak],tm,0,1],3],[2,nx],MZ,[0,0,[2,nV],AV,[0,0,[2,Ch],iO,0,1],2],4],5],OM=[2,oe],ON=[0,[0,0,[2,bu],yW,[0,0,[2,D1],CI,[0,0,[2,op],BH,0,1],2],3],[2,KY],tH,[0,0,[2,yu],FL,[0,0,[2,il],I7,0,1],2],4],OO=[0,[0,0,[2,BO],o4,0,1],[2,fZ],aV,[0,0,[2,Ms],IN,[0,[0,0,[2,DU],eM,0,1],[2,yq],nL,[0,0,[2,wN],Bd,0,1],2],3],4],OP=[2,gk],OQ=[0,[0,[0,0,[2,Kb],nS,0,1],[2,j$],jk,[0,0,[2,jj],e1,0,1],2],[2,ec],ie,0,3],OR=[0,[0,0,[2,v9],HN,[0,0,[2,Gt],qV,0,1],2],[2,zD],gj,[0,0,[2,cd],EG,[0,0,[2,DH],v5,0,1],2],3],OS=[2,dz],OT=[0,[0,[0,[0,0,[2,x0],M6,0,1],[2,wY],Jk,0,2],[2,C9],a9,[0,0,[2,Fk],sL,0,1],3],[2,yL],yH,[0,0,[2,i_],N_,0,1],4],OU=[0,[0,[0,0,[2,or],fo,0,1],[2,Bh],Gg,[0,0,[2,vW],AU,[0,0,[2,JW],ea,0,1],2],3],[2,fu],o5,[0,[0,0,[2,sr],rU,0,1],[2,ti],bZ,[0,0,[2,s0],eL,0,1],2],4],OV=[2,qc],OW=[0,[0,[0,0,[2,vt],KW,0,1],[2,r],yG,0,2],[2,pF],CJ,0,3],OX=[0,[0,[0,0,[2,lG],Gv,0,1],[2,jK],CR,0,2],[2,I6],88,[0,[0,0,[2,DS],Ce,0,1],[2,x6],aU,[0,0,[2,sV],tp,0,1],2],3],OY=[2,ei],OZ=[0,[0,[0,0,[2,j3],ls,[0,[0,0,[2,Ey],Ax,0,1],[2,np],c_,0,2],3],[2,pq],rx,[0,[0,0,[2,IE],GB,0,1],[2,vr],zt,[0,0,[2,dr],Ap,0,1],2],4],[2,pZ],pl,[0,[0,0,[2,c9],Iu,0,1],[2,s],eh,[0,[0,0,[2,jm],xw,0,1],[2,vz],z7,0,2],3],5],O0=[0,[0,0,[2,M_],zS,0,1],[2,ye],A$,[0,0,[2,kP],wV,0,1],2],O1=[2,i2],O2=[0,0,[2,gw],gs,[0,0,[2,aw],F6,[0,0,[2,FU],kp,0,1],2],3],O3=[0,[0,0,[2,Jd],GQ,0,1],[2,ek],nW,0,2],O4=[2,Lu],O5=[0,[0,0,[2,vD],rR,[0,0,[2,xv],dJ,0,1],2],[2,xl],s7,[0,0,[2,qU],uS,0,1],3],O6=[2,fg],O7=[0,0,[2,gu],el,0,1],O8=[2,Au],O9=[2,mD],O_=[0,0,[2,Cs],ua,0,1],O$=[2,I1],Pa=[0,0,[2,p7],m7,0,1],Pb=[0,0,[2,N2],Fj,0,1],Pc=[2,qm],Pd=[0,[0,0,[2,sS],Ao,[0,0,[2,lg],gN,0,1],2],[2,Ig],s2,[0,0,[2,sl],vs,0,1],3],Pe=[0,[0,[0,0,[2,sM],I0,0,1],[2,fI],aG,0,2],[2,Bs],zv,0,3],Pf=[2,d1],Pg=[0,0,[2,BG],98,0,1],Ph=[0,[0,0,[2,fH],Dq,0,1],[2,wi],Ib,[0,0,[2,Cq],cu,0,1],2],Pi=[2,Y],Pj=[0,0,[2,ds],oM,[0,[0,0,[2,o8],KP,0,1],[2,zR],J1,0,2],3],Pk=[0,0,[2,qD],gX,[0,0,[2,E2],o6,0,1],2],Pl=[2,JA],Pm=[0,[0,0,[2,Ha],xt,0,1],[2,GL],bF,0,2],Pn=[0,[0,0,[2,LI],oz,[0,0,[2,C2],n3,0,1],2],[2,rC],dU,[0,0,[2,jF],hX,0,1],3],Po=[2,mH],Pp=[0,[0,0,[2,dx],lJ,[0,0,[2,rP],pu,0,1],2],[2,Fw],kv,[0,0,[2,Cp],F9,0,1],3],Pq=[0,0,[2,vK],Ii,0,1],Pr=[2,co],Ps=[0,0,[2,Cc],EX,[0,0,[2,jW],BB,0,1],2],Pt=[0,0,[2,sk],hg,0,1],Pu=[2,kB],Pv=[0,0,[2,BK],p_,[0,[0,0,[2,km],rM,0,1],[2,BR],je,0,2],3],Pw=[0,0,[2,em],o_,0,1],Px=[2,Mn],Py=[0,[0,[0,0,[2,iJ],px,0,1],[2,yM],FV,0,2],[2,D0],oI,0,3],Pz=[0,0,[2,m$],A_,0,1],PA=[2,cY],PB=[0,0,[2,vg],Gz,0,1],PC=[2,uh],PD=[0,0,[2,Kl],An,0,1],PE=[0,0,[2,tl],DQ,0,1],PF=[2,kA],PG=[0,0,[2,KT],Nr,0,1],PH=[0,0,[2,wS],uV,0,1],PI=[2,Lt],PJ=[0,[0,[0,0,[2,JB],wG,0,1],[2,lQ],wu,0,2],[2,GK],ac,0,3],PK=[0,[0,0,[2,oo],IS,0,1],[2,H],dd,0,2],PL=[2,Mh],PM=[0,[0,[0,0,[2,F5],zH,0,1],[2,l_],ou,0,2],[2,ga],Ge,[0,0,[2,BF],f$,0,1],3],PN=[2,tk],PO=[0,[0,[0,0,[2,rb],Mw,0,1],[2,lD],G7,[0,0,[2,u0],rd,0,1],2],[2,ck],AK,[0,[0,0,[2,hD],v8,0,1],[2,pi],gW,0,2],3],PP=[2,ka],PQ=[0,0,[2,uK],d6,0,1],PR=[0,0,[2,DA],pA,0,1],PS=[2,tV],PT=[0,[0,0,[2,nP],dH,0,1],[2,Nq],sX,0,2],PU=[2,io],PV=[0,0,[2,tt],q,0,1],PW=[2,At],PX=[0,0,[2,uW],sa,0,1],PY=[0,0,[2,EW],IK,0,1],PZ=[2,nX],P0=[0,0,[2,EA],zd,[0,[0,0,[2,tA],ms,0,1],[2,EU],kl,0,2],3],P1=[0,[0,[0,0,[2,Mp],MV,0,1],[2,Oe],yY,0,2],[2,k1],b0,[0,0,[2,y_],lk,0,1],3],P2=[2,IJ],P3=[0,[0,[0,0,[2,bf],Cu,0,1],[2,fc],gL,0,2],[2,zz],yy,[0,[0,[0,0,[2,DR],KN,0,1],[2,xj],iV,[0,0,[2,dK],dt,0,1],2],[2,ru],K4,0,3],4],P4=[0,[0,0,[2,C7],n6,0,1],[2,ft],ri,0,2],P5=[2,zJ],P6=[0,0,[2,CV],Hy,[0,0,[2,EZ],It,0,1],2],P7=[0,[0,[0,0,[2,hK],JV,0,1],[2,eB],w7,[0,0,[2,L1],u_,0,1],2],[2,Mq],bc,[0,0,[2,xd],oE,0,1],3],P8=[2,GT],P9=[0,0,[2,hb],qK,0,1],P_=[0,[0,0,[2,Ma],rg,[0,0,[2,sU],oT,0,1],2],[2,HT],78,[0,0,[2,dc],48,[0,0,[2,Ct],12,0,1],2],3],P$=[2,k8],Qa=[0,[0,0,[2,BA],ko,[0,0,[2,bC],vZ,0,1],2],[2,o3],i4,[0,0,[2,Fi],nG,0,1],3],Qb=[2,cL],Qc=[0,0,[2,Nc],oy,[0,0,[2,of],Oi,0,1],2],Qd=[2,m9],Qe=[0,0,[2,mG],xu,0,1],Qf=[0,[0,0,[2,C8],cX,0,1],[2,Eb],E_,0,2],Qg=[2,yr],Qh=[0,[0,[0,0,[2,sm],va,0,1],[2,iL],Ly,[0,[0,0,[2,iS],bQ,0,1],[2,rO],MQ,0,2],3],[2,Ju],g2,[0,[0,[0,0,[2,cf],FS,0,1],[2,hP],FR,0,2],[2,IP],nI,0,3],4],Qi=[2,eH],Qj=[0,[0,0,[2,A9],AO,[0,0,[2,EY],cW,0,1],2],[2,tY],tv,[0,0,[2,r_],Hw,0,1],3],Qk=[0,[0,[0,0,[2,Ee],GP,[0,0,[2,ez],Ei,0,1],2],[2,ED],Nx,[0,[0,0,[2,i],mN,0,1],[2,fL],H9,[0,0,[2,ya],DM,0,1],2],3],[2,t4],i1,[0,[0,0,[2,o],hC,0,1],[2,v1],A8,[0,0,[2,ma],jO,0,1],2],4],Ql=[2,k$],Qm=[0,[0,[0,0,[2,ey],c3,0,1],[2,dw],uE,[0,[0,0,[2,fz],jt,0,1],[2,Jg],jy,0,2],3],[2,cF],q3,[0,[0,0,[2,Gl],yI,[0,[0,0,[2,du],HF,0,1],[2,z0],Ka,0,2],3],[2,LM],Gh,[0,0,[2,U],kV,0,1],4],5],Qn=[0,[0,[0,[0,[0,0,[2,qh],JL,0,1],[2,iq],vS,0,2],[2,n5],Dc,[0,0,[2,EK],go,0,1],3],[2,Ln],qJ,[0,0,[2,kr],qC,0,1],4],[2,iM],cD,[0,[0,[0,0,[2,tI],NY,0,1],[2,Ne],qB,[0,0,[2,G_],aB,0,1],2],[2,F7],G4,[0,0,[2,Aj],id,[0,0,[2,pJ],ee,0,1],2],3],5],Qo=[2,HB],Qp=[0,[0,[0,0,[2,bB],tJ,0,1],[2,tE],fq,[0,[0,0,[2,mX],Hz,0,1],[2,FH],lP,0,2],3],[2,IW],g7,[0,[0,0,[2,oc],L0,[0,0,[2,k0],Fz,0,1],2],[2,z6],ej,[0,0,[2,kG],FP,[0,0,[2,CL],GH,0,1],2],3],4],Qq=[0,[0,[0,0,[2,bq],pR,0,1],[2,s1],av,0,2],[2,N6],B1,[0,[0,0,[2,wn],aD,[0,[0,0,[2,lj],j1,0,1],[2,Go],KD,0,2],3],[2,r0],oY,[0,[0,[0,0,[2,aC],wd,0,1],[2,rv],lR,0,2],[2,Bn],hW,[0,[0,0,[2,yx],FJ,0,1],[2,ag],aI,0,2],3],4],5],Qr=[2,NN],Qs=[0,[0,[0,0,[2,NC],n2,[0,0,[2,T],lb,0,1],2],[2,h9],FW,0,3],[2,nw],L$,[0,0,[2,mA],Jz,0,1],4],Qt=[0,[0,[0,0,[2,tN],oO,0,1],[2,xV],GO,[0,0,[2,vf],af,[0,0,[2,pt],Bp,0,1],2],3],[2,ok],ML,[0,[0,0,[2,rT],iA,[0,[0,0,[2,c8],AN,0,1],[2,mx],k_,0,2],3],[2,uR],tR,[0,0,[2,H2],iu,0,1],4],5],Qu=[2,cI],Qv=[0,[0,[0,0,[2,Bo],Fv,0,1],[2,Np],fC,[0,0,[2,Hn],y1,0,1],2],[2,hU],o7,[0,0,[2,JR],u3,0,1],3],Qw=[0,[0,[0,0,[2,G2],ij,0,1],[2,D$],gZ,[0,0,[2,pD],eX,[0,0,[2,p4],zK,[0,0,[2,Jp],oG,0,1],2],3],4],[2,uI],gQ,[0,[0,[0,0,[2,hr],w9,0,1],[2,L_],M5,0,2],[2,r7],dX,0,3],5],Qx=[2,LY],Qy=[0,[0,[0,0,[2,qf],Io,0,1],[2,Hk],y,[0,[0,0,[2,tS],k,0,1],[2,j_],cT,[0,0,[2,zG],NG,0,1],2],3],[2,IM],Ik,[0,0,[2,z5],zA,[0,0,[2,Is],gK,0,1],2],4],Qz=[0,[0,0,[2,yU],Gc,0,1],[2,gx],iN,[0,0,[2,e3],r2,[0,0,[2,zy],qq,0,1],2],3],QA=[2,mv],QB=[0,0,[2,Nk],BE,0,1],QC=[0,[0,0,[2,aM],GJ,0,1],[2,Nh],kH,[0,[0,0,[2,l7],cx,0,1],[2,rH],mp,[0,[0,0,[2,d9],nJ,0,1],[2,mt],Hm,0,2],3],4],QD=[2,EM],QE=[0,[0,[0,0,[2,qy],e5,[0,0,[2,Ew],HA,0,1],2],[2,Ea],xT,0,3],[2,aq],nf,[0,[0,0,[2,FG],vo,0,1],[2,nv],C,[0,0,[2,Ev],xz,0,1],2],4],QF=[0,[0,[0,0,[2,MY],bh,0,1],[2,sv],M3,[0,[0,0,[2,lF],h,0,1],[2,Ir],Ca,0,2],3],[2,hf],fs,[0,[0,[0,0,[2,bd],IR,0,1],[2,Kd],e_,0,2],[2,IO],yb,[0,0,[2,lX],D_,0,1],3],4],QG=[2,KJ],QH=[0,[0,[0,[0,0,[2,ai],yK,[0,0,[2,b_],jr,0,1],2],[2,y7],ed,[0,0,[2,gM],li,0,1],3],[2,Kg],p9,[0,0,[2,tB],Gq,0,1],4],[2,dO],gz,[0,[0,0,[2,yi],nZ,[0,0,[2,bo],dp,[0,0,[2,vq],wc,0,1],2],3],[2,Oh],Bx,[0,0,[2,MF],rF,[0,0,[2,I9],yO,0,1],2],4],5],QI=[0,[0,[0,0,[2,xR],gq,0,1],[2,G5],Es,0,2],[2,x5],cp,[0,[0,0,[2,uz],ks,0,1],[2,Mz],HC,0,2],3],QJ=[2,yt],QK=[0,[0,[0,0,[2,bb],kF,0,1],[2,Fs],eb,[0,[0,0,[2,im],EL,0,1],[2,Ga],uC,0,2],3],[2,Bk],eg,[0,[0,[0,0,[2,ty],IY,[0,0,[2,sZ],uy,0,1],2],[2,Kk],cV,0,3],[2,a7],KX,[0,0,[2,o2],Aa,0,1],4],5],QL=[0,[0,0,[2,AT],un,0,1],[2,CQ],G,[0,[0,0,[2,cl],hN,[0,0,[2,m_],eS,0,1],2],[2,pH],Gf,[0,[0,0,[2,Gk],ve,0,1],[2,ix],JH,0,2],3],4],QM=[2,GX],QN=[0,[0,[0,0,[2,LL],Kj,0,1],[2,p3],ze,0,2],[2,o9],kt,0,3],QO=[0,[0,[0,[0,0,[2,ne],G$,0,1],[2,Jm],f0,0,2],[2,a6],qI,[0,0,[2,eD],D9,0,1],3],[2,yw],2,[0,0,[2,D5],tz,[0,0,[2,Dk],NL,0,1],2],4],QP=[2,mw],QQ=[0,[0,0,[2,DJ],ae,[0,0,[2,LU],Dy,0,1],2],[2,AP],ii,[0,0,[2,vh],yA,[0,0,[2,HJ],eI,0,1],2],3],QR=[0,[0,0,[2,w3],u9,0,1],[2,vN],uf,0,2],QS=[2,Fq],QT=[0,[0,[0,0,[2,Dn],x4,0,1],[2,Ae],fE,[0,0,[2,aO],Er,0,1],2],[2,n9],tX,0,3],QU=[0,[0,0,[2,fn],jM,0,1],[2,ps],kj,0,2],QV=[2,xS],QW=[0,[0,[0,0,[2,pb],v3,0,1],[2,ce],rE,0,2],[2,x$],mz,[0,[0,0,[2,gy],xY,0,1],[2,yl],oq,0,2],3],QX=[0,0,[2,wh],oZ,0,1],QY=[2,lH],QZ=[2,nD],Q0=[0,[0,0,[2,gc],Ah,0,1],[2,vJ],xG,0,2],Q1=[0,[0,0,[2,z3],jJ,[0,0,[2,wA],fl,0,1],2],[2,rK],D3,[0,[0,0,[2,kg],IA,0,1],[2,vQ],u2,0,2],3],Q2=[2,CU],Q3=[0,[0,0,[2,fa],Bb,0,1],[2,EV],lN,[0,[0,0,[2,Fh],eR,0,1],[2,wU],x8,0,2],3],Q4=[0,[0,[0,0,[2,fe],lC,0,1],[2,bA],Cy,[0,[0,0,[2,w2],e0,[0,0,[2,g0],vP,0,1],2],[2,it],Bf,[0,[0,0,[2,oi],wP,0,1],[2,GZ],eA,[0,0,[2,kU],mU,0,1],2],3],4],[2,yJ],on,[0,[0,[0,0,[2,BM],uB,0,1],[2,sd],Mv,[0,0,[2,hc],fN,[0,0,[2,xi],CN,0,1],2],3],[2,w5],J0,[0,0,[2,N5],$,0,1],4],5],Q5=[2,cw],Q6=[0,[0,[0,0,[2,A7],qo,[0,[0,0,[2,js],AS,0,1],[2,b9],Br,[0,0,[2,No],qQ,0,1],2],3],[2,Mu],NF,[0,[0,0,[2,eE],oF,[0,0,[2,bO],CB,0,1],2],[2,C$],JE,0,3],4],[2,mI],h4,[0,[0,[0,0,[2,q9],fD,0,1],[2,DI],Am,[0,0,[2,yz],cj,0,1],2],[2,xC],n8,[0,0,[2,rZ],yv,[0,[0,0,[2,bN],FO,0,1],[2,ff],db,[0,0,[2,M1],wf,0,1],2],3],4],5],Q7=[0,[0,[0,0,[2,vF],l0,0,1],[2,NK],pQ,0,2],[2,oS],xU,[0,0,[2,GS],pK,0,1],3],Q8=[2,Gy],Q9=[0,0,[2,JT],Me,[0,[0,0,[2,g9],My,0,1],[2,ym],cU,0,2],3],Q_=[0,[0,0,[2,L4],sG,[0,0,[2,ih],f_,0,1],2],[2,JN],HS,[0,0,[2,qT],hG,0,1],3],Q$=[2,xs],Ra=[0,[0,0,[2,I5],dj,0,1],[2,mr],bj,[0,0,[2,vy],jL,[0,0,[2,hv],CH,[0,0,[2,IG],fG,0,1],2],3],4],Rb=[0,[0,[0,[0,0,[2,hM],Mm,[0,0,[2,Jo],aE,0,1],2],[2,KG],Ky,[0,[0,0,[2,DG],hq,0,1],[2,ku],tc,0,2],3],[2,Ob],wR,[0,[0,[0,0,[2,oK],mu,0,1],[2,GY],Kc,[0,0,[2,MI],rn,0,1],2],[2,Al],xF,[0,[0,0,[2,e],uO,[0,0,[2,NT],vB,0,1],2],[2,wL],fr,0,3],4],5],[2,LK],hS,[0,[0,[0,[0,0,[2,wT],Ag,0,1],[2,FM],Mr,0,2],[2,bU],ET,[0,0,[2,KV],DC,[0,0,[2,H5],pp,[0,0,[2,b1],vE,0,1],2],3],4],[2,NA],BU,[0,[0,[0,0,[2,qG],aX,0,1],[2,e7],Gs,[0,0,[2,iw],c2,0,1],2],[2,q2],M2,[0,0,[2,bn],G6,0,1],3],5],6],Rc=[2,oA],Rd=[0,[0,[0,[0,[0,0,[2,iK],mW,0,1],[2,M],nK,0,2],[2,au],wX,[0,[0,[0,0,[2,Iz],A0,0,1],[2,Le],t3,0,2],[2,MU],Jn,0,3],4],[2,C6],N1,[0,[0,0,[2,Lg],wy,[0,[0,0,[2,CF],E8,0,1],[2,Jy],F,0,2],3],[2,wb],fV,[0,[0,0,[2,J$],eW,0,1],[2,tq],xM,0,2],4],5],[2,E$],Kf,[0,[0,[0,0,[2,q5],r5,0,1],[2,xy],zl,[0,0,[2,yk],di,[0,0,[2,uv],vw,0,1],2],3],[2,c1],Dz,[0,0,[2,AF],qt,0,1],4],6],Re=[0,[0,[0,[0,0,[2,pY],gT,0,1],[2,om],EI,[0,0,[2,CE],Hu,[0,0,[2,Aw],Ia,0,1],2],3],[2,a5],pG,[0,0,[2,rl],qP,0,1],4],[2,jE],Ls,[0,[0,[0,[0,0,[2,lI],Fb,[0,0,[2,H4],ah,0,1],2],[2,Of],Jv,[0,[0,0,[2,Gx],gD,[0,0,[2,IT],fF,0,1],2],[2,h8],v4,[0,0,[2,to],CY,[0,0,[2,Kp],Eo,0,1],2],3],4],[2,dM],pd,[0,[0,[0,0,[2,zQ],qN,0,1],[2,zk],vk,[0,0,[2,C1],qS,0,1],2],[2,JQ],ln,[0,0,[2,h1],Nn,[0,0,[2,zo],ux,0,1],2],3],5],[2,Iq],sj,[0,[0,[0,[0,0,[2,Dx],i5,0,1],[2,t9],nC,0,2],[2,Ja],b8,[0,[0,0,[2,Be],EP,0,1],[2,q1],gC,0,2],3],[2,r1],tn,[0,[0,0,[2,xK],l6,[0,[0,0,[2,E5],bx,0,1],[2,p5],iE,0,2],3],[2,nb],lx,[0,[0,[0,0,[2,qv],ra,0,1],[2,eY],LT,0,2],[2,vC],JM,[0,0,[2,ld],H3,0,1],3],4],5],6],7],Rf=[2,vY],Rg=[0,[0,[0,[0,[0,[0,0,[2,BY],IZ,0,1],[2,DZ],d5,0,2],[2,lm],Ec,[0,[0,0,[2,Gw],xa,0,1],[2,Lm],Ki,0,2],3],[2,K8],he,[0,0,[2,jA],hO,0,1],4],[2,fd],vm,[0,[0,0,[2,AW],tM,[0,[0,0,[2,Kt],E7,0,1],[2,Ko],tb,0,2],3],[2,m8],oP,[0,0,[2,xr],s6,0,1],4],5],[2,bs],I4,[0,[0,[0,[0,0,[2,Hq],rc,0,1],[2,J_],l4,[0,[0,0,[2,p1],dh,[0,0,[2,Ed],m3,0,1],2],[2,Ex],oR,0,3],4],[2,JK],su,[0,[0,0,[2,ig],ME,0,1],[2,DD],ch,0,2],5],[2,sO],g6,[0,[0,0,[2,g4],zP,0,1],[2,H1],l3,[0,[0,0,[2,F1],q4,0,1],[2,J9],jB,0,2],3],6],7],Rh=[0,[0,[0,[0,0,[2,sK],AR,[0,0,[2,tD],Em,0,1],2],[2,LO],ue,[0,[0,0,[2,a0],Ng,0,1],[2,hx],NP,0,2],3],[2,Hf],lq,[0,[0,0,[2,iD],Md,0,1],[2,ct],dC,[0,[0,0,[2,pO],cg,0,1],[2,b4],Bq,0,2],3],4],[2,GA],HM,[0,[0,[0,0,[2,kx],l2,0,1],[2,ws],tC,0,2],[2,ke],sB,[0,0,[2,gh],pw,0,1],3],5],Ri=[2,Oa],Rj=[0,[0,[0,[0,0,[2,mL],d8,0,1],[2,t5],r8,[0,0,[2,A6],z_,[0,[0,0,[2,gV],qF,0,1],[2,sy],dN,[0,0,[2,ic],sY,0,1],2],3],4],[2,lr],pa,[0,[0,[0,0,[2,lZ],hu,0,1],[2,n1],vX,[0,0,[2,up],V,0,1],2],[2,pC],xx,0,3],5],[2,Az],sn,[0,[0,[0,[0,0,[2,iI],ut,0,1],[2,MG],BW,[0,0,[2,ki],kL,[0,0,[2,ci],HL,0,1],2],3],[2,e9],C3,[0,[0,0,[2,Bv],jN,0,1],[2,vb],nh,[0,0,[2,jw],sR,0,1],2],4],[2,eq],Hh,[0,[0,[0,0,[2,h7],DV,[0,0,[2,Nw],Gn,[0,0,[2,lp],k7,0,1],2],3],[2,f4],dn,[0,[0,0,[2,Et],E1,0,1],[2,tg],A1,[0,0,[2,jP],nz,[0,0,[2,NE],mO,0,1],2],3],4],[2,bp],KR,[0,[0,[0,[0,0,[2,zj],N$,0,1],[2,NO],Ns,0,2],[2,kD],mV,0,3],[2,Gj],dG,[0,[0,0,[2,MC],zZ,0,1],[2,gb],yP,[0,0,[2,Bm],cO,[0,0,[2,v$],u$,0,1],2],3],4],5],6],7],Rk=[0,[0,[0,[0,0,[2,KU],Eh,0,1],[2,Nj],nR,[0,0,[2,Fg],cM,0,1],2],[2,IC],Lb,[0,[0,0,[2,Nd],sN,0,1],[2,Q],I$,0,2],3],[2,w$],cH,[0,[0,[0,0,[2,HQ],Cn,0,1],[2,Jt],tK,[0,0,[2,kN],bY,0,1],2],[2,yF],md,[0,0,[2,n7],Gi,[0,0,[2,NV],c6,0,1],2],3],4],Rl=[2,gG],Rm=[0,[0,[0,[0,[0,0,[2,LF],q$,0,1],[2,ol],Di,[0,0,[2,NS],zM,0,1],2],[2,MX],Ds,[0,0,[2,wk],um,0,1],3],[2,vM],wZ,[0,[0,0,[2,J4],wj,0,1],[2,ys],v6,[0,0,[2,ht],wg,0,1],2],4],[2,lM],Dh,[0,[0,0,[2,NX],fX,0,1],[2,LX],Ft,[0,0,[2,gn],AM,0,1],2],5],Rn=[0,[0,0,[2,hH],l1,[0,[0,0,[2,vI],mg,0,1],[2,i0],Lv,[0,0,[2,og],Jx,0,1],2],3],[2,pX],iz,[0,0,[2,sP],k9,[0,0,[2,zF],Lf,0,1],2],4],Ro=[2,r9],Rp=[0,[0,[0,0,[2,ef],d$,0,1],[2,pc],Eg,[0,[0,0,[2,x3],uU,0,1],[2,LZ],hs,[0,0,[2,CC],tx,0,1],2],3],[2,gg],mM,[0,[0,0,[2,gU],cE,0,1],[2,Mb],kE,[0,[0,0,[2,pv],gd,0,1],[2,qM],ji,0,2],3],4],Rq=[0,[0,0,[2,cK],lA,[0,[0,0,[2,a4],IV,0,1],[2,Dm],B_,0,2],3],[2,qO],f3,[0,[0,0,[2,GV],Ff,0,1],[2,Af],ob,[0,[0,0,[2,DL],c0,0,1],[2,aH],X,[0,0,[2,oj],z,0,1],2],3],4],Rr=[2,aP],Rs=[0,[0,0,[2,f2],d_,0,1],[2,ta],Jc,[0,0,[2,kT],iR,[0,0,[2,Jh],pr,0,1],2],3],Rt=[0,[0,[0,[0,[0,0,[2,AE],bH,0,1],[2,dg],q0,0,2],[2,tf],z1,[0,0,[2,wo],te,0,1],3],[2,LE],yj,[0,0,[2,s9],nB,0,1],4],[2,fM],tP,[0,0,[2,K2],Db,[0,0,[2,lz],Cx,0,1],2],5],Ru=[2,Ix],Rv=[0,[0,[0,[0,[0,0,[2,f7],ep,0,1],[2,nd],c5,0,2],[2,hZ],ap,0,3],[2,LA],HV,[0,[0,0,[2,eV],bk,0,1],[2,oa],JC,[0,0,[2,Ep],N0,0,1],2],4],[2,bM],l5,[0,[0,0,[2,cC],Fu,[0,0,[2,MA],ph,[0,0,[2,jY],eP,0,1],2],3],[2,oD],KA,[0,0,[2,o0],dV,[0,0,[2,hL],jD,0,1],2],4],5],Rw=[0,[0,[0,0,[2,zV],uA,0,1],[2,pI],KM,[0,0,[2,dq],yD,[0,0,[2,s8],Df,0,1],2],3],[2,HP],Du,[0,[0,0,[2,b2],wO,0,1],[2,He],gf,[0,0,[2,K3],uN,0,1],2],4],Rx=[2,ao],Ry=[0,[0,[0,0,[2,a3],MW,[0,0,[2,aT],s3,0,1],2],[2,C5],E0,0,3],[2,EN],iC,[0,0,[2,qb],df,0,1],4],Rz=[0,[0,[0,0,[2,AY],al,0,1],[2,hF],oN,0,2],[2,xe],HI,0,3],RA=[2,rq],RB=[0,[0,[0,[0,0,[2,H8],be,[0,0,[2,ql],Fd,0,1],2],[2,AD],DP,[0,[0,0,[2,ha],ay,0,1],[2,na],ND,0,2],3],[2,Lk],tL,[0,[0,0,[2,hj],cZ,0,1],[2,gB],fh,0,2],4],[2,kM],l$,[0,[0,0,[2,xc],MS,0,1],[2,DK],MK,0,2],5],RC=[0,[0,[0,0,[2,La],vG,0,1],[2,MH],KF,0,2],[2,DY],EJ,[0,[0,0,[2,lB],El,0,1],[2,tO],wM,0,2],3],RD=[2,Lj],RE=[0,0,[2,J],st,[0,0,[2,w_],EQ,0,1],2],RF=[0,[0,0,[2,sq],Fp,[0,[0,0,[2,qE],dE,0,1],[2,Ez],Z,0,2],3],[2,uM],MD,[0,[0,[0,0,[2,Ak],u4,0,1],[2,BZ],kn,[0,0,[2,yZ],yR,0,1],2],[2,eN],pg,0,3],4],RG=[2,M$],RH=[0,[0,0,[2,fP],Il,0,1],[2,LD],Bz,[0,0,[2,k5],B0,[0,0,[2,rX],JU,0,1],2],3],RI=[0,[0,[0,[0,[0,0,[2,kZ],tG,0,1],[2,G1],zs,[0,0,[2,C0],cs,0,1],2],[2,cJ],aS,[0,[0,0,[2,Kv],L7,0,1],[2,Iw],h$,0,2],3],[2,sQ],sF,[0,0,[2,F4],Iy,0,1],4],[2,nO],q8,[0,0,[2,qX],pk,[0,0,[2,Gu],w,0,1],2],5],RJ=[2,Hd],RK=[0,[0,[0,0,[2,qd],CS,0,1],[2,z9],fj,0,2],[2,K0],cb,[0,0,[2,oQ],ul,0,1],3],RL=[0,[0,0,[2,B4],Mj,0,1],[2,HK],pz,[0,0,[2,ik],nu,[0,[0,0,[2,AC],mY,0,1],[2,AX],M8,[0,0,[2,rj],lK,0,1],2],3],4],RM=[2,Ku],RN=[0,[0,[0,[0,0,[2,Bj],gt,0,1],[2,wQ],iv,0,2],[2,Jj],gm,0,3],[2,rS],O,[0,[0,[0,0,[2,jq],zX,0,1],[2,nq],ax,[0,0,[2,kd],CM,0,1],2],[2,t$],H0,[0,[0,0,[2,l9],GE,0,1],[2,fR],rz,0,2],3],4],RO=[0,[0,0,[2,w1],pe,[0,[0,0,[2,DT],aZ,0,1],[2,Mx],wC,[0,0,[2,Da],pV,0,1],2],3],[2,la],Kx,[0,0,[2,K$],hi,0,1],4],RP=[2,zO],RQ=[0,[0,[0,0,[2,KE],cn,[0,0,[2,B3],Nv,0,1],2],[2,g$],d7,[0,0,[2,cz],Ac,0,1],3],[2,si],zL,[0,[0,[0,0,[2,kS],iZ,0,1],[2,e$],xo,[0,0,[2,n],fK,0,1],2],[2,wE],A3,0,3],4],RR=[0,[0,[0,0,[2,JD],wq,0,1],[2,oJ],MM,0,2],[2,I8],vv,[0,[0,[0,0,[2,EC],vL,[0,0,[2,x_],vR,0,1],2],[2,mQ],vO,[0,[0,0,[2,NI],Ck,0,1],[2,y0],nj,[0,0,[2,qg],JS,0,1],2],3],[2,HE],lY,[0,0,[2,k2],as,0,1],4],5],RS=[2,br],RT=[0,[0,[0,0,[2,lu],qx,0,1],[2,py],Cg,0,2],[2,G8],Ks,[0,[0,[0,0,[2,ES],g3,0,1],[2,jS],wv,0,2],[2,Bg],HO,[0,0,[2,rw],HX,[0,0,[2,qL],gE,0,1],2],3],4],RU=[0,[0,0,[2,E],i7,0,1],[2,ID],G3,[0,0,[2,lw],qe,[0,0,[2,GG],kK,0,1],2],3],RV=[2,et],RW=[0,[0,[0,0,[2,aN],MP,0,1],[2,u8],GU,[0,0,[2,KO],sJ,0,1],2],[2,lV],AI,[0,[0,0,[2,qw],zq,[0,0,[2,e4],B,0,1],2],[2,Kn],F3,[0,0,[2,kO],xq,0,1],3],4],RX=[0,[0,0,[2,mK],A4,[0,[0,0,[2,ab],j0,0,1],[2,dI],rI,0,2],3],[2,uH],tW,[0,[0,0,[2,LN],x,0,1],[2,Cm],xh,[0,0,[2,ny],bT,0,1],2],4],RY=[2,lo],RZ=[0,[0,0,[2,eO],Ar,[0,0,[2,Nb],m,0,1],2],[2,Ad],zh,[0,[0,0,[2,Ld],B2,0,1],[2,LJ],MB,[0,[0,0,[2,jZ],d4,0,1],[2,kC],cm,0,2],3],4],R0=[0,[0,[0,[0,0,[2,Dt],kW,0,1],[2,h3],M9,0,2],[2,pU],I3,[0,0,[2,nA],lT,0,1],3],[2,ww],bz,[0,0,[2,Cr],zg,0,1],4],R1=[2,dD],R2=[0,[0,[0,0,[2,uZ],bI,0,1],[2,FK],Gr,0,2],[2,CT],sh,[0,[0,0,[2,ry],fY,0,1],[2,AB],i8,[0,0,[2,es],dy,0,1],2],3],R3=[0,[0,0,[2,dk],kz,0,1],[2,ur],Lq,[0,0,[2,B7],vA,[0,0,[2,qs],Nu,0,1],2],3],R4=[2,p8],R5=[0,[0,0,[2,Mg],F0,[0,0,[2,pN],dB,0,1],2],[2,bE],xE,[0,0,[2,Cd],f6,[0,0,[2,Lx],Gp,0,1],2],3],R6=[0,[0,0,[2,H$],c4,0,1],[2,iF],wF,[0,0,[2,eG],bm,0,1],2],R7=[2,le],R8=[0,[0,0,[2,FF],qa,[0,[0,0,[2,ov],m6,0,1],[2,dY],ib,[0,0,[2,kR],Hx,0,1],2],3],[2,gF],e6,[0,[0,[0,0,[2,l8],bt,0,1],[2,tw],oW,[0,0,[2,b3],zp,0,1],2],[2,lc],S,0,3],4],R9=[0,[0,0,[2,eK],HU,0,1],[2,AQ],zc,0,2],R_=[2,gJ],R$=[0,[0,[0,0,[2,x7],r6,0,1],[2,Gm],l,0,2],[2,K7],sc,[0,0,[2,FE],FT,0,1],3],Sa=[0,[0,0,[2,uJ],hJ,0,1],[2,HD],pP,[0,0,[2,iW],p$,0,1],2],Sb=[2,eu],Sc=[0,[0,0,[2,wJ],kJ,0,1],[2,vi],fJ,0,2],Sd=[0,[0,[0,0,[2,xA],c7,0,1],[2,hh],Gb,[0,[0,0,[2,Dj],dW,0,1],[2,b7],xL,0,2],3],[2,aQ],iU,[0,[0,[0,0,[2,gI],z$,0,1],[2,jp],N,0,2],[2,ba],Nf,[0,0,[2,xQ],FD,0,1],3],4],Se=[2,x2],Sf=[0,[0,0,[2,sI],Lw,[0,0,[2,Ji],rp,0,1],2],[2,BJ],H_,[0,0,[2,ll],zE,0,1],3],Sg=[0,0,[2,j2],83,[0,0,[2,Iv],84,0,1],2],Sh=[2,KL],Si=[0,[0,[0,0,[2,w4],Ml,0,1],[2,Bu],g,0,2],[2,D4],86,[0,0,[2,fU],79,0,1],3],Sj=[0,[0,0,[2,nl],Hi,0,1],[2,od],Hb,[0,[0,0,[2,wI],Ci,0,1],[2,b6],87,0,2],3],Sk=[2,oh],Sl=[0,[0,[0,0,[2,CX],81,0,1],[2,EH],85,[0,[0,0,[2,I],ts,[0,0,[2,cc],xP,0,1],2],[2,s_],KK,[0,0,[2,z4],zm,0,1],3],4],[2,j7],R,[0,[0,[0,0,[2,Mf],jd,[0,0,[2,hT],Fa,0,1],2],[2,xO],cv,0,3],[2,iH],lW,[0,[0,[0,0,[2,Eq],M0,0,1],[2,cB],L,0,2],[2,fk],AA,[0,0,[2,Lc],nm,0,1],3],4],5],Sm=[0,[0,[0,0,[2,a$],fp,0,1],[2,Ek],no,0,2],[2,sC],EF,[0,0,[2,Co],jb,[0,0,[2,gO],xZ,0,1],2],3],Sn=[2,zY],So=[0,0,[2,mF],FZ,[0,0,[2,nc],Og,[0,0,[2,LR],zu,0,1],2],3],Sp=[0,0,[2,B$],55,0,1],Sq=[2,Mc],Sr=[0,[0,0,[2,zW],50,0,1],[2,Ll],32,[0,0,[2,EO],68,0,1],2],Ss=[0,[0,0,[2,KH],67,0,1],[2,s5],45,[0,[0,0,[2,rW],54,0,1],[2,IF],47,[0,0,[2,hn],76,0,1],2],3],St=[2,fy],Su=[0,[0,0,[2,ju],43,0,1],[2,NR],28,[0,[0,0,[2,Bc],70,0,1],[2,Ih],61,0,2],3],Sv=[0,0,[2,d2],59,0,1],Sw=[2,eo],Sx=[0,0,[2,jR],65,[0,0,[2,De],66,0,1],2],Sy=[0,0,[2,nn],57,[0,0,[2,Dw],74,0,1],2],Sz=[2,v7],SA=[2,h_],SB=[2,eU],SC=[2,yE],SD=[0,0,[2,sw],69,0,1],SE=[2,sA],SF=[0,0,[2,H7],72,0,1],SG=[0,[0,0,[2,mE],51,0,1],[2,Nz],49,0,2],SH=[2,Cf],SI=[0,[0,0,[2,ad],63,0,1],[2,dQ],21,[0,0,[2,DX],75,0,1],2],SJ=[0,[0,0,[2,aK],60,0,1],[2,sf],46,0,2],SK=[2,jx],SL=[0,0,[2,qr],56,0,1],SM=[0,0,[2,rJ],41,[0,0,[2,w0],73,0,1],2],SN=[2,g8],SO=[2,aY],SP=[0,[0,0,[2,mo],58,0,1],[2,D],JP,[0,0,[2,N9],Hl,[0,0,[2,gr],Kw,0,1],2],3],SQ=[2,Ke],SR=[0,0,[2,BC],25,0,1],SS=[0,[0,0,[2,rt],fT,0,1],[2,is],L8,0,2],ST=[2,gY],SU=[0,[0,0,[2,v2],mn,0,1],[2,gA],fb,0,2],SV=[2,xp],SW=[0,0,[2,Bl],u,0,1],SX=[2,lS],SY=[0,0,[2,a_],AH,[0,[0,0,[2,eF],M7,0,1],[2,zC],fx,[0,0,[2,Na],L6,0,1],2],3],SZ=[2,u7],S0=[0,0,[2,Mi],uj,0,1],S1=[0,[0,0,[2,aJ],Od,0,1],[2,J3],a2,[0,0,[2,jV],ni,0,1],2],S2=[2,t6],S3=[0,[0,[0,0,[2,ip],bJ,0,1],[2,ex],hd,0,2],[2,q7],sg,[0,[0,0,[2,pB],BS,0,1],[2,vd],tU,0,2],3],S4=[0,[0,0,[2,wH],fv,[0,0,[2,LB],kQ,0,1],2],[2,CG],II,[0,0,[2,eC],KB,0,1],3],S5=[2,Lo],S6=[0,0,[2,Lh],dm,[0,0,[2,FX],uT,0,1],2],S7=[0,0,[2,rA],JG,0,1],S8=[2,j8],S9=[0,[0,0,[2,zU],cA,0,1],[2,i6],Kr,0,2],S_=[2,D7],S$=[0,[0,0,[2,nH],m5,0,1],[2,fW],ss,0,2],Ta=[2,fi],Tb=[0,0,[2,cr],xH,0,1],Tc=[0,[0,0,[2,aj],bL,0,1],[2,Js],yh,0,2],Td=[2,qW],Te=[0,[0,0,[2,td],cG,0,1],[2,rG],rh,[0,[0,0,[2,fm],jh,0,1],[2,iY],uY,[0,0,[2,J2],Hj,0,1],2],3],Tf=[0,[0,0,[2,qk],Dr,[0,0,[2,Ba],Oc,0,1],2],[2,rm],my,[0,0,[2,an],pL,[0,0,[2,LQ],Nl,0,1],2],3],Tg=[2,eQ],Th=[0,[0,[0,0,[2,t],Cw,0,1],[2,FC],se,0,2],[2,Jf],zr,0,3],Ti=[0,[0,0,[2,rf],sT,[0,0,[2,bV],Ef,0,1],2],[2,sW],m2,[0,0,[2,jI],ui,[0,0,[2,y4],KI,0,1],2],3],Tj=[2,t8],Tk=[0,[0,[0,[0,0,[2,u1],rs,0,1],[2,ns],dS,0,2],[2,mc],Kz,0,3],[2,Ij],gS,[0,[0,0,[2,wt],m4,[0,0,[2,Bw],mT,[0,0,[2,rk],at,0,1],2],3],[2,JJ],As,[0,0,[2,bw],eT,0,1],4],5],Tl=[0,0,[2,xN],lO,[0,0,[2,yV],vc,0,1],2],Tm=[2,jH],Tn=[0,[0,[0,0,[2,Fm],k6,0,1],[2,Jr],yC,0,2],[2,N7],nU,0,3],To=[0,[0,0,[2,jz],t7,0,1],[2,a8],yd,[0,[0,0,[2,lE],zB,0,1],[2,J6],BQ,0,2],3],Tp=[2,pM],Tq=[0,[0,[0,[0,0,[2,BX],qu,0,1],[2,a1],Hg,0,2],[2,NZ],dF,0,3],[2,sE],hp,[0,0,[2,oV],mC,0,1],4],Tr=[0,[0,0,[2,uw],ew,0,1],[2,F2],Ht,[0,0,[2,tQ],gR,0,1],2],Ts=[2,P],Tt=[0,[0,0,[2,ud],NU,[0,0,[2,CP],f,0,1],2],[2,hz],Cz,[0,[0,[0,0,[2,Fe],xX,0,1],[2,Cj],wa,0,2],[2,eJ],BN,0,3],4],Tu=[2,KZ],Tv=[0,[0,0,[2,ev],yg,0,1],[2,ml],i3,0,2],Tw=[0,0,[2,oC],Nm,[0,0,[2,jf],J5,0,1],2],Tx=[2,JZ],Ty=[0,[0,0,[2,jC],Jb,0,1],[2,kq],iT,[0,0,[2,dR],KS,0,1],2],Tz=[0,[0,[0,0,[2,ja],mh,0,1],[2,In],u6,0,2],[2,I_],dZ,[0,0,[2,Id],pn,0,1],3],TA=[2,dT],TB=[0,0,[2,sH],sb,0,1],TC=[0,0,[2,FY],xW,[0,0,[2,Dd],f1,[0,0,[2,jc],uF,0,1],2],3],TD=[2,r$],TE=[0,0,[2,oL],rN,0,1];c.toc=[0,[0,"SYMB",[0,1359,[0,[0,[0,[0,[0,[0,[0,[0,Om,Ol,uQ,Ok,5],[2,zN],mf,[0,Op,Oo,CD,On,4],6],[2,f9],nY,[0,[0,Os,Or,nF,Oq,3],[2,JX],NQ,[0,Ov,Ou,nr,Ot,4],5],7],[2,qj],rr,[0,[0,[0,Oy,Ox,th,Ow,4],[2,K_],By,[0,OB,OA,qA,Oz,3],5],[2,D2],J8,[0,[0,OE,OD,xg,OC,2],[2,mq],Cb,[0,OH,OG,y$,OF,2],3],6],8],[2,HZ],q6,[0,[0,[0,[0,OK,OJ,iy,OI,6],[2,hm],x9,[0,ON,OM,t2,OL,6],7],[2,Ej],f8,[0,[0,OQ,OP,h0,OO,5],[2,k4],i$,[0,OT,OS,hk,OR,5],6],8],[2,Mk],bi,[0,[0,[0,OW,OV,GD,OU,5],[2,ox],aL,[0,OZ,OY,G9,OX,6],7],[2,dv],93,[0,[0,O2,O1,z2,O0,4],[2,Aq],m1,[0,O5,O4,hw,O3,4],5],8],9],10],[2,yo],94,[0,[0,[0,[0,[0,O7,O6,j,0,2],[2,ho],yX,0,3],[2,mk],bW,[0,[0,0,O8,H6,0,1],[2,K6],f5,[0,0,O9,bP,0,1],2],4],[2,MO],t1,[0,[0,[0,Pa,O$,ir,O_,2],[2,y8],W,[0,Pd,Pc,E6,Pb,4],5],[2,hR],yN,[0,[0,Pg,Pf,95,Pe,4],[2,xJ],Km,[0,Pj,Pi,HH,Ph,4],5],6],7],[2,CZ],90,[0,[0,[0,[0,Pm,Pl,qi,Pk,3],[2,pT],96,[0,Pp,Po,C_,Pn,4],5],[2,GW],vx,[0,[0,Ps,Pr,Cl,Pq,3],[2,aW],97,[0,Pv,Pu,ug,Pt,4],5],6],[2,Dv],cS,[0,[0,[0,Py,Px,u5,Pw,4],[2,D6],aR,[0,PB,PA,cQ,Pz,2],5],[2,yB],89,[0,[0,PD,PC,t0,0,2],[2,y5],99,[0,PG,PF,mb,PE,2],3],6],7],8],11],[2,Ab],91,[0,[0,[0,[0,[0,[0,PJ,PI,IL,PH,4],[2,E3],BT,[0,0,PL,zb,PK,3],5],[2,HW],mj,[0,[0,PO,PN,AJ,PM,4],[2,ge],mm,[0,PQ,PP,g_,0,2],5],6],[2,Fr],92,[0,[0,[0,PT,PS,wr,PR,3],[2,dP],EE,[0,0,PU,os,0,1],4],[2,wW],uD,[0,[0,PX,PW,CA,PV,2],[2,K5],da,[0,P0,PZ,vj,PY,4],5],6],7],[2,xn],77,[0,[0,[0,[0,P3,P2,pm,P1,5],[2,ro],Jw,[0,P6,P5,kY,P4,3],6],[2,cP],tZ,[0,[0,P9,P8,FA,P7,4],[2,CK],g5,[0,Qa,P$,lf,P_,4],5],7],[2,kw],18,[0,[0,[0,0,Qb,tF,0,1],[2,hB],64,0,2],[2,b5],62,[0,[0,Qe,Qd,FN,Qc,3],[2,v],me,[0,0,Qg,xI,Qf,3],4],5],8],9],[2,FI],LW,[0,[0,[0,[0,[0,Qj,Qi,DO,Qh,5],[2,D8],kc,[0,Qm,Ql,qn,Qk,6],7],[2,yc],d3,[0,[0,Qp,Qo,ia,Qn,6],[2,Hc],B9,[0,Qs,Qr,AL,Qq,6],7],8],[2,vp],Fo,[0,[0,[0,Qv,Qu,jo,Qt,6],[2,Jl],jl,[0,Qy,Qx,kb,Qw,6],7],[2,eZ],s4,[0,[0,QB,QA,oX,Qz,4],[2,bX],C4,[0,QE,QD,vn,QC,5],6],8],9],[2,N4],Mt,[0,[0,[0,[0,QH,QG,Bt,QF,6],[2,MN],uk,[0,QK,QJ,tu,QI,6],7],[2,ot],bg,[0,[0,QN,QM,L2,QL,5],[2,MJ],Dg,[0,QQ,QP,1,QO,5],6],8],[2,o$],Kh,[0,[0,[0,QT,QS,er,QR,4],[2,Ni],KQ,[0,QW,QV,j9,QU,4],5],[2,bS],LH,[0,[0,0,QY,xf,QX,2],[2,lt],r4,[0,Q0,QZ,xm,0,3],4],6],9],10],11],12],[2,NB],3,[0,[0,[0,[0,[0,[0,[0,Q3,Q2,Fc,Q1,4],[2,KC],vu,[0,Q6,Q5,vH,Q4,6],7],[2,z8],NH,[0,[0,Q9,Q8,rY,Q7,4],[2,uo],fO,[0,Ra,Q$,Eu,Q_,5],6],8],[2,zI],IU,[0,[0,[0,Rd,Rc,qp,Rb,7],[2,zf],E4,[0,Rg,Rf,BV,Re,8],9],[2,Ic],B5,[0,[0,Rj,Ri,jg,Rh,8],[2,hV],vU,[0,Rm,Rl,mP,Rk,6],9],10],11],[2,j6],h6,[0,[0,[0,[0,Rp,Ro,CW,Rn,5],[2,wD],i9,[0,Rs,Rr,fQ,Rq,5],6],[2,wB],qY,[0,[0,Rv,Ru,iX,Rt,6],[2,vl],4,[0,Ry,Rx,B6,Rw,5],7],8],[2,GF],JO,[0,[0,[0,RB,RA,p2,Rz,6],[2,fB],J7,[0,RE,RD,aa,RC,4],7],[2,Gd],LS,[0,[0,RH,RG,5,RF,5],[2,FQ],6,[0,RK,RJ,_,RI,6],7],8],9],12],[2,NM],7,[0,[0,[0,[0,[0,RN,RM,HR,RL,5],[2,we],y6,[0,RQ,RP,bl,RO,5],6],[2,GI],Ai,[0,[0,RT,RS,IQ,RR,6],[2,Ay],GC,[0,RW,RV,bG,RU,5],7],8],[2,GM],JY,[0,[0,[0,RZ,RY,FB,RX,5],[2,Dp],zi,[0,R2,R1,Dl,R0,5],6],[2,A2],ng,[0,[0,R5,R4,kX,R3,4],[2,am],yT,[0,R8,R7,wz,R6,5],6],7],9],[2,IX],Fy,[0,[0,[0,[0,R$,R_,qZ,R9,4],[2,oB],GR,[0,Sc,Sb,m0,Sa,3],5],[2,Fx],L5,[0,[0,Sf,Se,Hs,Sd,5],[2,nQ],sD,[0,Si,Sh,80,Sg,4],6],7],[2,sp],82,[0,[0,[0,Sl,Sk,wp,Sj,6],[2,G0],r3,[0,So,Sn,8,Sm,4],7],[2,iP],13,[0,[0,Sr,Sq,17,Sp,3],[2,ar],23,[0,Su,St,24,Ss,4],5],8],9],10],13],[2,lv],14,[0,[0,[0,[0,[0,[0,Sx,Sw,33,Sv,3],[2,jG],52,[0,0,Sz,53,Sy,3],4],[2,uc],27,[0,0,[2,fw],34,[0,0,SA,35,0,1],2],5],[2,vT],19,[0,[0,[0,0,SB,37,0,1],[2,hl],26,[0,SD,SC,40,0,2],3],[2,gp],31,[0,[0,SF,SE,44,0,2],[2,rL],36,0,3],4],6],[2,n4],16,[0,[0,[0,[0,SI,SH,38,SG,3],[2,hE],42,[0,SL,SK,22,SJ,3],4],[2,ca],20,[0,[0,0,SN,39,SM,3],[2,p0],29,[0,0,SO,71,0,1],4],5],[2,pj],15,[0,[0,[0,SR,SQ,30,SP,4],[2,M4],AG,[0,SU,ST,xD,SS,3],5],[2,BD],9,[0,[0,0,SV,10,0,1],[2,cR],wm,[0,0,SX,nE,SW,2],3],6],7],8],[2,zn],N3,[0,[0,[0,[0,[0,S0,SZ,yS,SY,4],[2,h2],e2,[0,S3,S2,gi,S1,4],5],[2,j4],b$,[0,[0,S6,S5,kf,S4,4],[2,rB],hy,[0,S9,S8,EB,S7,3],5],6],[2,ky],ow,[0,[0,[0,S$,S_,t_,0,3],[2,rD],w6,[0,Tb,Ta,n0,0,2],4],[2,en],LG,[0,[0,Te,Td,bR,Tc,4],[2,LV],Ny,[0,Th,Tg,lL,Tf,4],5],6],7],[2,Cv],11,[0,[0,[0,[0,Tk,Tj,mS,Ti,6],[2,E9],hQ,[0,Tn,Tm,hI,Tl,4],7],[2,DF],mR,[0,[0,Tq,Tp,uG,To,5],[2,lU],jQ,[0,Tt,Ts,yQ,Tr,5],6],8],[2,dA],fS,[0,[0,[0,Tv,Tu,JF,0,3],[2,nT],En,[0,Ty,Tx,cq,Tw,3],4],[2,Nt],DB,[0,[0,TB,TA,DE,Tz,4],[2,DN],AZ,[0,TE,TD,sz,TC,4],5],6],9],10],11],14],15]]],[0,[0,"SYJS",[0,[0,jc,uF],[0,Dd,f1],[0,FY,xW],[0,r$,sz],[0,oL,rN],[0,DN,AZ],[0,Id,pn],[0,I_,dZ],[0,In,u6],[0,ja,mh],[0,dT,DE],[0,sH,sb],[0,Nt,DB],[0,jf,J5],[0,oC,Nm],[0,JZ,cq],[0,dR,KS],[0,kq,iT],[0,jC,Jb],[0,nT,En],[0,KZ,JF],[0,ml,i3],[0,ev,yg],[0,dA,fS],[0,tQ,gR],[0,F2,Ht],[0,uw,ew],[0,P,yQ],[0,eJ,BN],[0,Cj,wa],[0,Fe,xX],[0,hz,Cz],[0,CP,f],[0,ud,NU],[0,lU,jQ],[0,J6,BQ],[0,lE,zB],[0,a8,yd],[0,jz,t7],[0,pM,uG],[0,oV,mC],[0,sE,hp],[0,NZ,dF],[0,a1,Hg],[0,BX,qu],[0,DF,mR],[0,yV,vc],[0,xN,lO],[0,jH,hI],[0,N7,nU],[0,Jr,yC],[0,Fm,k6],[0,E9,hQ],[0,y4,KI],[0,jI,ui],[0,sW,m2],[0,bV,Ef],[0,rf,sT],[0,t8,mS],[0,bw,eT],[0,JJ,As],[0,rk,at],[0,Bw,mT],[0,wt,m4],[0,Ij,gS],[0,mc,Kz],[0,ns,dS],[0,u1,rs],[0,Cv,11],[0,LQ,Nl],[0,an,pL],[0,rm,my],[0,Ba,Oc],[0,qk,Dr],[0,eQ,lL],[0,Jf,zr],[0,FC,se],[0,t,Cw],[0,LV,Ny],[0,Js,yh],[0,aj,bL],[0,qW,bR],[0,J2,Hj],[0,iY,uY],[0,fm,jh],[0,rG,rh],[0,td,cG],[0,en,LG],[0,fi,n0],[0,cr,xH],[0,rD,w6],[0,D7,t_],[0,fW,ss],[0,nH,m5],[0,ky,ow],[0,rA,JG],[0,j8,EB],[0,i6,Kr],[0,zU,cA],[0,rB,hy],[0,eC,KB],[0,CG,II],[0,LB,kQ],[0,wH,fv],[0,Lo,kf],[0,FX,uT],[0,Lh,dm],[0,j4,b$],[0,jV,ni],[0,J3,a2],[0,aJ,Od],[0,t6,gi],[0,vd,tU],[0,pB,BS],[0,q7,sg],[0,ex,hd],[0,ip,bJ],[0,h2,e2],[0,Na,L6],[0,zC,fx],[0,eF,M7],[0,a_,AH],[0,u7,yS],[0,Mi,uj],[0,zn,N3],[0,Bl,u],[0,lS,nE],[0,cR,wm],[0,xp,10],[0,BD,9],[0,is,L8],[0,rt,fT],[0,gY,xD],[0,gA,fb],[0,v2,mn],[0,M4,AG],[0,gr,Kw],[0,N9,Hl],[0,D,JP],[0,mo,58],[0,Ke,30],[0,BC,25],[0,pj,15],[0,aY,71],[0,p0,29],[0,w0,73],[0,rJ,41],[0,g8,39],[0,ca,20],[0,sf,46],[0,aK,60],[0,jx,22],[0,qr,56],[0,hE,42],[0,Nz,49],[0,mE,51],[0,Cf,38],[0,DX,75],[0,dQ,21],[0,ad,63],[0,n4,16],[0,rL,36],[0,sA,44],[0,H7,72],[0,gp,31],[0,yE,40],[0,sw,69],[0,hl,26],[0,eU,37],[0,vT,19],[0,h_,35],[0,fw,34],[0,uc,27],[0,Dw,74],[0,nn,57],[0,v7,53],[0,jG,52],[0,d2,59],[0,eo,33],[0,De,66],[0,jR,65],[0,lv,14],[0,hn,76],[0,IF,47],[0,rW,54],[0,s5,45],[0,KH,67],[0,fy,24],[0,Ih,61],[0,Bc,70],[0,NR,28],[0,ju,43],[0,ar,23],[0,B$,55],[0,Mc,17],[0,EO,68],[0,Ll,32],[0,zW,50],[0,iP,13],[0,gO,xZ],[0,Co,jb],[0,sC,EF],[0,Ek,no],[0,a$,fp],[0,zY,8],[0,LR,zu],[0,nc,Og],[0,mF,FZ],[0,G0,r3],[0,b6,87],[0,wI,Ci],[0,od,Hb],[0,nl,Hi],[0,oh,wp],[0,Lc,nm],[0,fk,AA],[0,cB,L],[0,Eq,M0],[0,iH,lW],[0,xO,cv],[0,hT,Fa],[0,Mf,jd],[0,j7,R],[0,z4,zm],[0,s_,KK],[0,cc,xP],[0,I,ts],[0,EH,85],[0,CX,81],[0,sp,82],[0,Iv,84],[0,j2,83],[0,KL,80],[0,fU,79],[0,D4,86],[0,Bu,g],[0,w4,Ml],[0,nQ,sD],[0,xQ,FD],[0,ba,Nf],[0,jp,N],[0,gI,z$],[0,aQ,iU],[0,b7,xL],[0,Dj,dW],[0,hh,Gb],[0,xA,c7],[0,x2,Hs],[0,ll,zE],[0,BJ,H_],[0,Ji,rp],[0,sI,Lw],[0,Fx,L5],[0,iW,p$],[0,HD,pP],[0,uJ,hJ],[0,eu,m0],[0,vi,fJ],[0,wJ,kJ],[0,oB,GR],[0,AQ,zc],[0,eK,HU],[0,gJ,qZ],[0,FE,FT],[0,K7,sc],[0,Gm,l],[0,x7,r6],[0,IX,Fy],[0,eG,bm],[0,iF,wF],[0,H$,c4],[0,le,wz],[0,lc,S],[0,b3,zp],[0,tw,oW],[0,l8,bt],[0,gF,e6],[0,kR,Hx],[0,dY,ib],[0,ov,m6],[0,FF,qa],[0,am,yT],[0,qs,Nu],[0,B7,vA],[0,ur,Lq],[0,dk,kz],[0,p8,kX],[0,Lx,Gp],[0,Cd,f6],[0,bE,xE],[0,pN,dB],[0,Mg,F0],[0,A2,ng],[0,Cr,zg],[0,ww,bz],[0,nA,lT],[0,pU,I3],[0,h3,M9],[0,Dt,kW],[0,dD,Dl],[0,es,dy],[0,AB,i8],[0,ry,fY],[0,CT,sh],[0,FK,Gr],[0,uZ,bI],[0,Dp,zi],[0,ny,bT],[0,Cm,xh],[0,LN,x],[0,uH,tW],[0,dI,rI],[0,ab,j0],[0,mK,A4],[0,lo,FB],[0,kC,cm],[0,jZ,d4],[0,LJ,MB],[0,Ld,B2],[0,Ad,zh],[0,Nb,m],[0,eO,Ar],[0,GM,JY],[0,GG,kK],[0,lw,qe],[0,ID,G3],[0,E,i7],[0,et,bG],[0,kO,xq],[0,Kn,F3],[0,e4,B],[0,qw,zq],[0,lV,AI],[0,KO,sJ],[0,u8,GU],[0,aN,MP],[0,Ay,GC],[0,k2,as],[0,HE,lY],[0,qg,JS],[0,y0,nj],[0,NI,Ck],[0,mQ,vO],[0,x_,vR],[0,EC,vL],[0,I8,vv],[0,oJ,MM],[0,JD,wq],[0,br,IQ],[0,qL,gE],[0,rw,HX],[0,Bg,HO],[0,jS,wv],[0,ES,g3],[0,G8,Ks],[0,py,Cg],[0,lu,qx],[0,GI,Ai],[0,K$,hi],[0,la,Kx],[0,Da,pV],[0,Mx,wC],[0,DT,aZ],[0,w1,pe],[0,zO,bl],[0,wE,A3],[0,n,fK],[0,e$,xo],[0,kS,iZ],[0,si,zL],[0,cz,Ac],[0,g$,d7],[0,B3,Nv],[0,KE,cn],[0,we,y6],[0,rj,lK],[0,AX,M8],[0,AC,mY],[0,ik,nu],[0,HK,pz],[0,B4,Mj],[0,Ku,HR],[0,fR,rz],[0,l9,GE],[0,t$,H0],[0,kd,CM],[0,nq,ax],[0,jq,zX],[0,rS,O],[0,Jj,gm],[0,wQ,iv],[0,Bj,gt],[0,NM,7],[0,Gu,w],[0,qX,pk],[0,nO,q8],[0,F4,Iy],[0,sQ,sF],[0,Iw,h$],[0,Kv,L7],[0,cJ,aS],[0,C0,cs],[0,G1,zs],[0,kZ,tG],[0,Hd,_],[0,oQ,ul],[0,K0,cb],[0,z9,fj],[0,qd,CS],[0,FQ,6],[0,eN,pg],[0,yZ,yR],[0,BZ,kn],[0,Ak,u4],[0,uM,MD],[0,Ez,Z],[0,qE,dE],[0,sq,Fp],[0,M$,5],[0,rX,JU],[0,k5,B0],[0,LD,Bz],[0,fP,Il],[0,Gd,LS],[0,tO,wM],[0,lB,El],[0,DY,EJ],[0,MH,KF],[0,La,vG],[0,Lj,aa],[0,w_,EQ],[0,J,st],[0,fB,J7],[0,xe,HI],[0,hF,oN],[0,AY,al],[0,rq,p2],[0,DK,MK],[0,xc,MS],[0,kM,l$],[0,gB,fh],[0,hj,cZ],[0,Lk,tL],[0,na,ND],[0,ha,ay],[0,AD,DP],[0,ql,Fd],[0,H8,be],[0,GF,JO],[0,K3,uN],[0,He,gf],[0,b2,wO],[0,HP,Du],[0,s8,Df],[0,dq,yD],[0,pI,KM],[0,zV,uA],[0,ao,B6],[0,qb,df],[0,EN,iC],[0,C5,E0],[0,aT,s3],[0,a3,MW],[0,vl,4],[0,lz,Cx],[0,K2,Db],[0,fM,tP],[0,s9,nB],[0,LE,yj],[0,wo,te],[0,tf,z1],[0,dg,q0],[0,AE,bH],[0,Ix,iX],[0,hL,jD],[0,o0,dV],[0,oD,KA],[0,jY,eP],[0,MA,ph],[0,cC,Fu],[0,bM,l5],[0,Ep,N0],[0,oa,JC],[0,eV,bk],[0,LA,HV],[0,hZ,ap],[0,nd,c5],[0,f7,ep],[0,wB,qY],[0,oj,z],[0,aH,X],[0,DL,c0],[0,Af,ob],[0,GV,Ff],[0,qO,f3],[0,Dm,B_],[0,a4,IV],[0,cK,lA],[0,aP,fQ],[0,Jh,pr],[0,kT,iR],[0,ta,Jc],[0,f2,d_],[0,wD,i9],[0,zF,Lf],[0,sP,k9],[0,pX,iz],[0,og,Jx],[0,i0,Lv],[0,vI,mg],[0,hH,l1],[0,r9,CW],[0,qM,ji],[0,pv,gd],[0,Mb,kE],[0,gU,cE],[0,gg,mM],[0,CC,tx],[0,LZ,hs],[0,x3,uU],[0,pc,Eg],[0,ef,d$],[0,j6,h6],[0,NV,c6],[0,n7,Gi],[0,yF,md],[0,kN,bY],[0,Jt,tK],[0,HQ,Cn],[0,w$,cH],[0,Q,I$],[0,Nd,sN],[0,IC,Lb],[0,Fg,cM],[0,Nj,nR],[0,KU,Eh],[0,gG,mP],[0,gn,AM],[0,LX,Ft],[0,NX,fX],[0,lM,Dh],[0,ht,wg],[0,ys,v6],[0,J4,wj],[0,vM,wZ],[0,wk,um],[0,MX,Ds],[0,NS,zM],[0,ol,Di],[0,LF,q$],[0,hV,vU],[0,gh,pw],[0,ke,sB],[0,ws,tC],[0,kx,l2],[0,GA,HM],[0,b4,Bq],[0,pO,cg],[0,ct,dC],[0,iD,Md],[0,Hf,lq],[0,hx,NP],[0,a0,Ng],[0,LO,ue],[0,tD,Em],[0,sK,AR],[0,Oa,jg],[0,v$,u$],[0,Bm,cO],[0,gb,yP],[0,MC,zZ],[0,Gj,dG],[0,kD,mV],[0,NO,Ns],[0,zj,N$],[0,bp,KR],[0,NE,mO],[0,jP,nz],[0,tg,A1],[0,Et,E1],[0,f4,dn],[0,lp,k7],[0,Nw,Gn],[0,h7,DV],[0,eq,Hh],[0,jw,sR],[0,vb,nh],[0,Bv,jN],[0,e9,C3],[0,ci,HL],[0,ki,kL],[0,MG,BW],[0,iI,ut],[0,Az,sn],[0,pC,xx],[0,up,V],[0,n1,vX],[0,lZ,hu],[0,lr,pa],[0,ic,sY],[0,sy,dN],[0,gV,qF],[0,A6,z_],[0,t5,r8],[0,mL,d8],[0,Ic,B5],[0,ld,H3],[0,vC,JM],[0,eY,LT],[0,qv,ra],[0,nb,lx],[0,p5,iE],[0,E5,bx],[0,xK,l6],[0,r1,tn],[0,q1,gC],[0,Be,EP],[0,Ja,b8],[0,t9,nC],[0,Dx,i5],[0,Iq,sj],[0,zo,ux],[0,h1,Nn],[0,JQ,ln],[0,C1,qS],[0,zk,vk],[0,zQ,qN],[0,dM,pd],[0,Kp,Eo],[0,to,CY],[0,h8,v4],[0,IT,fF],[0,Gx,gD],[0,Of,Jv],[0,H4,ah],[0,lI,Fb],[0,jE,Ls],[0,rl,qP],[0,a5,pG],[0,Aw,Ia],[0,CE,Hu],[0,om,EI],[0,pY,gT],[0,vY,BV],[0,J9,jB],[0,F1,q4],[0,H1,l3],[0,g4,zP],[0,sO,g6],[0,DD,ch],[0,ig,ME],[0,JK,su],[0,Ex,oR],[0,Ed,m3],[0,p1,dh],[0,J_,l4],[0,Hq,rc],[0,bs,I4],[0,xr,s6],[0,m8,oP],[0,Ko,tb],[0,Kt,E7],[0,AW,tM],[0,fd,vm],[0,jA,hO],[0,K8,he],[0,Lm,Ki],[0,Gw,xa],[0,lm,Ec],[0,DZ,d5],[0,BY,IZ],[0,zf,E4],[0,bn,G6],[0,q2,M2],[0,iw,c2],[0,e7,Gs],[0,qG,aX],[0,NA,BU],[0,b1,vE],[0,H5,pp],[0,KV,DC],[0,bU,ET],[0,FM,Mr],[0,wT,Ag],[0,LK,hS],[0,wL,fr],[0,NT,vB],[0,e,uO],[0,Al,xF],[0,MI,rn],[0,GY,Kc],[0,oK,mu],[0,Ob,wR],[0,ku,tc],[0,DG,hq],[0,KG,Ky],[0,Jo,aE],[0,hM,Mm],[0,oA,qp],[0,AF,qt],[0,c1,Dz],[0,uv,vw],[0,yk,di],[0,xy,zl],[0,q5,r5],[0,E$,Kf],[0,tq,xM],[0,J$,eW],[0,wb,fV],[0,Jy,F],[0,CF,E8],[0,Lg,wy],[0,C6,N1],[0,MU,Jn],[0,Le,t3],[0,Iz,A0],[0,au,wX],[0,M,nK],[0,iK,mW],[0,zI,IU],[0,qT,hG],[0,JN,HS],[0,ih,f_],[0,L4,sG],[0,xs,Eu],[0,IG,fG],[0,hv,CH],[0,vy,jL],[0,mr,bj],[0,I5,dj],[0,uo,fO],[0,GS,pK],[0,oS,xU],[0,NK,pQ],[0,vF,l0],[0,Gy,rY],[0,ym,cU],[0,g9,My],[0,JT,Me],[0,z8,NH],[0,N5,$],[0,w5,J0],[0,xi,CN],[0,hc,fN],[0,sd,Mv],[0,BM,uB],[0,yJ,on],[0,kU,mU],[0,GZ,eA],[0,oi,wP],[0,it,Bf],[0,g0,vP],[0,w2,e0],[0,bA,Cy],[0,fe,lC],[0,cw,vH],[0,M1,wf],[0,ff,db],[0,bN,FO],[0,rZ,yv],[0,xC,n8],[0,yz,cj],[0,DI,Am],[0,q9,fD],[0,mI,h4],[0,C$,JE],[0,bO,CB],[0,eE,oF],[0,Mu,NF],[0,No,qQ],[0,b9,Br],[0,js,AS],[0,A7,qo],[0,KC,vu],[0,vQ,u2],[0,kg,IA],[0,rK,D3],[0,wA,fl],[0,z3,jJ],[0,CU,Fc],[0,wU,x8],[0,Fh,eR],[0,EV,lN],[0,fa,Bb],[0,NB,3],[0,nD,xm],[0,vJ,xG],[0,gc,Ah],[0,lt,r4],[0,wh,oZ],[0,lH,xf],[0,bS,LH],[0,ps,kj],[0,fn,jM],[0,xS,j9],[0,yl,oq],[0,gy,xY],[0,x$,mz],[0,ce,rE],[0,pb,v3],[0,Ni,KQ],[0,vN,uf],[0,w3,u9],[0,Fq,er],[0,n9,tX],[0,aO,Er],[0,Ae,fE],[0,Dn,x4],[0,o$,Kh],[0,Dk,NL],[0,D5,tz],[0,yw,2],[0,eD,D9],[0,a6,qI],[0,Jm,f0],[0,ne,G$],[0,mw,1],[0,HJ,eI],[0,vh,yA],[0,AP,ii],[0,LU,Dy],[0,DJ,ae],[0,MJ,Dg],[0,ix,JH],[0,Gk,ve],[0,pH,Gf],[0,m_,eS],[0,cl,hN],[0,CQ,G],[0,AT,un],[0,GX,L2],[0,o9,kt],[0,p3,ze],[0,LL,Kj],[0,ot,bg],[0,Mz,HC],[0,uz,ks],[0,x5,cp],[0,G5,Es],[0,xR,gq],[0,yt,tu],[0,o2,Aa],[0,a7,KX],[0,Kk,cV],[0,sZ,uy],[0,ty,IY],[0,Bk,eg],[0,Ga,uC],[0,im,EL],[0,Fs,eb],[0,bb,kF],[0,MN,uk],[0,lX,D_],[0,IO,yb],[0,Kd,e_],[0,bd,IR],[0,hf,fs],[0,Ir,Ca],[0,lF,h],[0,sv,M3],[0,MY,bh],[0,KJ,Bt],[0,I9,yO],[0,MF,rF],[0,Oh,Bx],[0,vq,wc],[0,bo,dp],[0,yi,nZ],[0,dO,gz],[0,tB,Gq],[0,Kg,p9],[0,gM,li],[0,y7,ed],[0,b_,jr],[0,ai,yK],[0,N4,Mt],[0,mt,Hm],[0,d9,nJ],[0,rH,mp],[0,l7,cx],[0,Nh,kH],[0,aM,GJ],[0,EM,vn],[0,Ev,xz],[0,nv,C],[0,FG,vo],[0,aq,nf],[0,Ea,xT],[0,Ew,HA],[0,qy,e5],[0,bX,C4],[0,zy,qq],[0,e3,r2],[0,gx,iN],[0,yU,Gc],[0,mv,oX],[0,Nk,BE],[0,eZ,s4],[0,r7,dX],[0,L_,M5],[0,hr,w9],[0,uI,gQ],[0,Jp,oG],[0,p4,zK],[0,pD,eX],[0,D$,gZ],[0,G2,ij],[0,LY,kb],[0,Is,gK],[0,z5,zA],[0,IM,Ik],[0,zG,NG],[0,j_,cT],[0,tS,k],[0,Hk,y],[0,qf,Io],[0,Jl,jl],[0,H2,iu],[0,uR,tR],[0,mx,k_],[0,c8,AN],[0,rT,iA],[0,ok,ML],[0,pt,Bp],[0,vf,af],[0,xV,GO],[0,tN,oO],[0,cI,jo],[0,JR,u3],[0,hU,o7],[0,Hn,y1],[0,Np,fC],[0,Bo,Fv],[0,vp,Fo],[0,ag,aI],[0,yx,FJ],[0,Bn,hW],[0,rv,lR],[0,aC,wd],[0,r0,oY],[0,Go,KD],[0,lj,j1],[0,wn,aD],[0,N6,B1],[0,s1,av],[0,bq,pR],[0,NN,AL],[0,mA,Jz],[0,nw,L$],[0,h9,FW],[0,T,lb],[0,NC,n2],[0,Hc,B9],[0,pJ,ee],[0,Aj,id],[0,F7,G4],[0,G_,aB],[0,Ne,qB],[0,tI,NY],[0,iM,cD],[0,kr,qC],[0,Ln,qJ],[0,EK,go],[0,n5,Dc],[0,iq,vS],[0,qh,JL],[0,HB,ia],[0,CL,GH],[0,kG,FP],[0,z6,ej],[0,k0,Fz],[0,oc,L0],[0,IW,g7],[0,FH,lP],[0,mX,Hz],[0,tE,fq],[0,bB,tJ],[0,yc,d3],[0,ma,jO],[0,v1,A8],[0,o,hC],[0,t4,i1],[0,ya,DM],[0,fL,H9],[0,i,mN],[0,ED,Nx],[0,ez,Ei],[0,Ee,GP],[0,k$,qn],[0,U,kV],[0,LM,Gh],[0,z0,Ka],[0,du,HF],[0,Gl,yI],[0,cF,q3],[0,Jg,jy],[0,fz,jt],[0,dw,uE],[0,ey,c3],[0,D8,kc],[0,IP,nI],[0,hP,FR],[0,cf,FS],[0,Ju,g2],[0,rO,MQ],[0,iS,bQ],[0,iL,Ly],[0,sm,va],[0,eH,DO],[0,r_,Hw],[0,tY,tv],[0,EY,cW],[0,A9,AO],[0,FI,LW],[0,Eb,E_],[0,C8,cX],[0,yr,xI],[0,v,me],[0,of,Oi],[0,Nc,oy],[0,m9,FN],[0,mG,xu],[0,b5,62],[0,hB,64],[0,cL,tF],[0,kw,18],[0,Ct,12],[0,dc,48],[0,HT,78],[0,sU,oT],[0,Ma,rg],[0,k8,lf],[0,Fi,nG],[0,o3,i4],[0,bC,vZ],[0,BA,ko],[0,CK,g5],[0,xd,oE],[0,Mq,bc],[0,L1,u_],[0,eB,w7],[0,hK,JV],[0,GT,FA],[0,hb,qK],[0,cP,tZ],[0,ft,ri],[0,C7,n6],[0,zJ,kY],[0,EZ,It],[0,CV,Hy],[0,ro,Jw],[0,y_,lk],[0,k1,b0],[0,Oe,yY],[0,Mp,MV],[0,IJ,pm],[0,ru,K4],[0,dK,dt],[0,xj,iV],[0,DR,KN],[0,zz,yy],[0,fc,gL],[0,bf,Cu],[0,xn,77],[0,EW,IK],[0,nX,vj],[0,EU,kl],[0,tA,ms],[0,EA,zd],[0,K5,da],[0,tt,q],[0,At,CA],[0,uW,sa],[0,wW,uD],[0,io,os],[0,dP,EE],[0,DA,pA],[0,tV,wr],[0,Nq,sX],[0,nP,dH],[0,Fr,92],[0,ka,g_],[0,uK,d6],[0,ge,mm],[0,BF,f$],[0,ga,Ge],[0,l_,ou],[0,F5,zH],[0,tk,AJ],[0,pi,gW],[0,hD,v8],[0,ck,AK],[0,u0,rd],[0,lD,G7],[0,rb,Mw],[0,HW,mj],[0,H,dd],[0,oo,IS],[0,Mh,zb],[0,E3,BT],[0,wS,uV],[0,Lt,IL],[0,GK,ac],[0,lQ,wu],[0,JB,wG],[0,Ab,91],[0,tl,DQ],[0,kA,mb],[0,KT,Nr],[0,y5,99],[0,uh,t0],[0,Kl,An],[0,yB,89],[0,m$,A_],[0,cY,cQ],[0,vg,Gz],[0,D6,aR],[0,em,o_],[0,Mn,u5],[0,D0,oI],[0,yM,FV],[0,iJ,px],[0,Dv,cS],[0,sk,hg],[0,kB,ug],[0,BR,je],[0,km,rM],[0,BK,p_],[0,aW,97],[0,vK,Ii],[0,co,Cl],[0,jW,BB],[0,Cc,EX],[0,GW,vx],[0,jF,hX],[0,rC,dU],[0,C2,n3],[0,LI,oz],[0,mH,C_],[0,Cp,F9],[0,Fw,kv],[0,rP,pu],[0,dx,lJ],[0,pT,96],[0,E2,o6],[0,qD,gX],[0,JA,qi],[0,GL,bF],[0,Ha,xt],[0,CZ,90],[0,Cq,cu],[0,wi,Ib],[0,fH,Dq],[0,Y,HH],[0,zR,J1],[0,o8,KP],[0,ds,oM],[0,xJ,Km],[0,Bs,zv],[0,fI,aG],[0,sM,I0],[0,d1,95],[0,BG,98],[0,hR,yN],[0,N2,Fj],[0,qm,E6],[0,sl,vs],[0,Ig,s2],[0,lg,gN],[0,sS,Ao],[0,y8,W],[0,Cs,ua],[0,I1,ir],[0,p7,m7],[0,MO,t1],[0,mD,bP],[0,K6,f5],[0,Au,H6],[0,mk,bW],[0,ho,yX],[0,fg,j],[0,gu,el],[0,yo,94],[0,ek,nW],[0,Jd,GQ],[0,Lu,hw],[0,qU,uS],[0,xl,s7],[0,xv,dJ],[0,vD,rR],[0,Aq,m1],[0,kP,wV],[0,ye,A$],[0,M_,zS],[0,i2,z2],[0,FU,kp],[0,aw,F6],[0,gw,gs],[0,dv,93],[0,sV,tp],[0,x6,aU],[0,DS,Ce],[0,I6,88],[0,jK,CR],[0,lG,Gv],[0,ei,G9],[0,vz,z7],[0,jm,xw],[0,s,eh],[0,c9,Iu],[0,pZ,pl],[0,dr,Ap],[0,vr,zt],[0,IE,GB],[0,pq,rx],[0,np,c_],[0,Ey,Ax],[0,j3,ls],[0,ox,aL],[0,s0,eL],[0,ti,bZ],[0,sr,rU],[0,fu,o5],[0,JW,ea],[0,vW,AU],[0,Bh,Gg],[0,or,fo],[0,qc,GD],[0,pF,CJ],[0,r,yG],[0,vt,KW],[0,Mk,bi],[0,DH,v5],[0,cd,EG],[0,zD,gj],[0,Gt,qV],[0,v9,HN],[0,dz,hk],[0,i_,N_],[0,yL,yH],[0,Fk,sL],[0,C9,a9],[0,wY,Jk],[0,x0,M6],[0,k4,i$],[0,wN,Bd],[0,yq,nL],[0,DU,eM],[0,Ms,IN],[0,fZ,aV],[0,BO,o4],[0,gk,h0],[0,ec,ie],[0,jj,e1],[0,j$,jk],[0,Kb,nS],[0,Ej,f8],[0,Ch,iO],[0,nV,AV],[0,nx,MZ],[0,ak,tm],[0,Ho,h5],[0,pW,oH],[0,za,p],[0,NW,Je],[0,oU,K9],[0,Lr,Lz],[0,DW,gl],[0,Ip,F_],[0,HY,d],[0,oe,t2],[0,il,I7],[0,yu,FL],[0,KY,tH],[0,op,BH],[0,D1,CI],[0,bu,yW],[0,hm,x9],[0,Do,JI],[0,g1,pS],[0,jv,hA],[0,Mo,k3],[0,xk,uP],[0,HG,ER],[0,Fn,tr],[0,Ie,xb],[0,F$,MR],[0,IB,fA],[0,y2,nN],[0,K,iB],[0,x1,nt],[0,so,v_],[0,cy,iy],[0,mB,uu],[0,I2,v0],[0,Av,tj],[0,Hv,Jq],[0,L9,pE],[0,mZ,rV],[0,p6,qH],[0,HZ,q6],[0,BP,kk],[0,o1,y$],[0,dl,ly],[0,mq,Cb],[0,jT,gH],[0,e8,xg],[0,yf,az],[0,D2,J8],[0,n_,j5],[0,po,aA],[0,NJ,yn],[0,kI,qA],[0,y9,K1],[0,bD,Lp],[0,uq,pf],[0,K_,By],[0,cN,iG],[0,jX,nk],[0,If,uL],[0,LP,th],[0,gv,jn],[0,kh,ub],[0,GN,wK],[0,qj,rr],[0,zw,re],[0,dL,lh],[0,gP,by],[0,Hr,nr],[0,c$,y3],[0,JX,NQ],[0,qz,aF],[0,w8,bK],[0,d0,tT],[0,A,nF],[0,bv,sx],[0,uX,s$],[0,zx,BI],[0,f9,nY],[0,nM,hY],[0,IH,CD],[0,de,mJ],[0,Hp,Fl],[0,Li,wx],[0,BL,qR],[0,zN,mf],[0,MT,B8],[0,wl,vV],[0,xB,uQ],[0,Bi,0],[0,q_,A5],[0,n$,rQ],[0,us,N8],[0,jU,L3],[0,CO,Kq],[0,yp,F8],[0,mi,b],[0,zT,iQ],[0,LC,Im]]],[0,[0,"CRCS",0],[0,[0,"PRIM","%caml_format_int_special\0%direct_int_div\0%direct_int_mod\0%direct_int_mul\0%direct_obj_tag\0%identity\0%int_add\0%int_and\0%int_asr\0%int_div\0%int_lsl\0%int_lsr\0%int_mod\0%int_mul\0%int_neg\0%int_or\0%int_sub\0%int_xor\0Base_am_testing\0Base_caml_exn_is_most_recent_exn\0Base_clear_caml_backtrace_pos\0Base_hash_double\0Base_hash_string\0Base_int_math_int32_clz\0Base_int_math_int32_ctz\0Base_int_math_int64_clz\0Base_int_math_int64_ctz\0Base_int_math_int64_pow_stub\0Base_int_math_int_clz\0Base_int_math_int_ctz\0Base_int_math_int_popcount\0Base_int_math_int_pow_stub\0Base_int_math_nativeint_clz\0Base_int_math_nativeint_ctz\0Base_internalhash_fold_float\0Base_internalhash_fold_int\0Base_internalhash_fold_int64\0Base_internalhash_fold_string\0Base_internalhash_get_hash_value\0BigStringReader\0MlBytes\0MlFakeDevice\0MlFakeFd\0MlFakeFd_out\0MlFakeFile\0MlFile\0MlInt64\0MlMutex\0MlNat\0MlNodeDevice\0MlNodeFd\0MlObjectTable\0MlStringReader\0Ml_Bigarray\0Ml_Bigarray_c_1_1\0UInt8ArrayReader\0add_nat\0bigstring_alloc\0bigstring_blit_bigstring_bytes_stub\0bigstring_blit_bytes_bigstring_stub\0bigstring_blit_string_bigstring_stub\0bigstring_blit_stub\0bigstring_destroy_stub\0bigstring_find\0bigstring_is_mmapped_stub\0bigstring_memcmp_bytes_stub\0bigstring_memcmp_stub\0bigstring_memset_stub\0bigstring_of_array_buffer\0bigstring_of_typed_array\0bigstring_realloc\0bigstring_to_array_buffer\0bigstring_to_typed_array\0bigstringaf_blit_from_bytes\0bigstringaf_blit_to_bigstring\0bigstringaf_blit_to_bytes\0bigstringaf_memchr\0bigstringaf_memcmp_bigstring\0bigstringaf_memcmp_string\0bin_prot_blit_buf_bytes_stub\0bin_prot_blit_buf_float_array_stub\0bin_prot_blit_buf_stub\0bin_prot_blit_bytes_buf_stub\0bin_prot_blit_float_array_buf_stub\0bin_prot_blit_string_buf_stub\0blit_nat\0caml_MD5Final\0caml_MD5Init\0caml_MD5Transform\0caml_MD5Update\0caml_abs_float\0caml_acos_float\0caml_acosh_float\0caml_add_float\0caml_alloc_dummy\0caml_alloc_dummy_float\0caml_alloc_dummy_infix\0caml_alloc_stack\0caml_argv\0caml_array_append\0caml_array_blit\0caml_array_bound_error\0caml_array_concat\0caml_array_fill\0caml_array_get\0caml_array_get_addr\0caml_array_get_float\0caml_array_of_bytes\0caml_array_of_string\0caml_array_set\0caml_array_set_addr\0caml_array_set_float\0caml_array_sub\0caml_array_unsafe_get\0caml_array_unsafe_get_float\0caml_array_unsafe_set\0caml_array_unsafe_set_float\0caml_asin_float\0caml_asinh_float\0caml_atan2_float\0caml_atan_float\0caml_atanh_float\0caml_atomic_cas\0caml_atomic_exchange\0caml_atomic_fetch_add\0caml_atomic_load\0caml_atomic_make_contended\0caml_ba_blit\0caml_ba_change_layout\0caml_ba_compare\0caml_ba_create\0caml_ba_create_buffer\0caml_ba_create_from\0caml_ba_create_unsafe\0caml_ba_custom_name\0caml_ba_deserialize\0caml_ba_dim\0caml_ba_dim_1\0caml_ba_dim_2\0caml_ba_dim_3\0caml_ba_fill\0caml_ba_from_typed_array\0caml_ba_get_1\0caml_ba_get_2\0caml_ba_get_3\0caml_ba_get_generic\0caml_ba_get_size\0caml_ba_get_size_per_element\0caml_ba_hash\0caml_ba_init\0caml_ba_kind\0caml_ba_kind_of_typed_array\0caml_ba_layout\0caml_ba_map_file\0caml_ba_map_file_bytecode\0caml_ba_num_dims\0caml_ba_reshape\0caml_ba_serialize\0caml_ba_set_1\0caml_ba_set_2\0caml_ba_set_3\0caml_ba_set_generic\0caml_ba_slice\0caml_ba_sub\0caml_ba_to_typed_array\0caml_ba_uint8_get16\0caml_ba_uint8_get32\0caml_ba_uint8_get64\0caml_ba_uint8_set16\0caml_ba_uint8_set32\0caml_ba_uint8_set64\0caml_backtrace_status\0caml_bigstring_blit_ba_to_ba\0caml_bigstring_blit_ba_to_bytes\0caml_bigstring_blit_bytes_to_ba\0caml_bigstring_blit_string_to_ba\0caml_bigstring_memcmp\0caml_blit_bytes\0caml_blit_string\0caml_bswap16\0caml_build_symbols\0caml_bytes_bound_error\0caml_bytes_compare\0caml_bytes_equal\0caml_bytes_get\0caml_bytes_get16\0caml_bytes_get32\0caml_bytes_get64\0caml_bytes_greaterequal\0caml_bytes_greaterthan\0caml_bytes_lessequal\0caml_bytes_lessthan\0caml_bytes_notequal\0caml_bytes_of_array\0caml_bytes_of_jsbytes\0caml_bytes_of_string\0caml_bytes_of_utf16_jsstring\0caml_bytes_set\0caml_bytes_set16\0caml_bytes_set32\0caml_bytes_set64\0caml_bytes_unsafe_get\0caml_bytes_unsafe_set\0caml_call_gen\0caml_callback\0caml_cbrt_float\0caml_ceil_float\0caml_channel_descriptor\0caml_check_bound\0caml_check_bound_bigstring\0caml_classify_float\0caml_compare\0caml_compare_val\0caml_compare_val_get_custom\0caml_compare_val_number_custom\0caml_compare_val_tag\0caml_continuation_use_and_update_handler_noexc\0caml_continuation_use_noexc\0caml_convert_bytes_to_array\0caml_convert_raw_backtrace\0caml_convert_raw_backtrace_slot\0caml_convert_string_to_bytes\0caml_copysign_float\0caml_cos_float\0caml_cosh_float\0caml_create_bytes\0caml_create_file\0caml_create_string\0caml_current_dir\0caml_custom_event_index\0caml_custom_ops\0caml_decompress_input\0caml_div\0caml_div_float\0caml_domain_dls\0caml_domain_dls_get\0caml_domain_dls_set\0caml_domain_id\0caml_domain_spawn\0caml_ensure_stack_capacity\0caml_ephe_blit_data\0caml_ephe_blit_key\0caml_ephe_check_data\0caml_ephe_check_key\0caml_ephe_create\0caml_ephe_data_offset\0caml_ephe_get_data\0caml_ephe_get_data_copy\0caml_ephe_get_key\0caml_ephe_get_key_copy\0caml_ephe_key_offset\0caml_ephe_set_data\0caml_ephe_set_key\0caml_ephe_unset_data\0caml_ephe_unset_key\0caml_eq_float\0caml_equal\0caml_erf_float\0caml_erfc_float\0caml_eventlog_pause\0caml_eventlog_resume\0caml_executable_name\0caml_exn_with_js_backtrace\0caml_exp2_float\0caml_exp_float\0caml_expm1_float\0caml_failwith\0caml_fatal_uncaught_exception\0caml_fill_bytes\0caml_fill_string\0caml_final_register\0caml_final_register_called_without_value\0caml_final_release\0caml_finish_formatting\0caml_float_compare\0caml_float_of_bytes\0caml_float_of_int\0caml_float_of_string\0caml_floatarray_blit\0caml_floatarray_create\0caml_floatarray_get\0caml_floatarray_set\0caml_floatarray_unsafe_get\0caml_floatarray_unsafe_set\0caml_floor_float\0caml_fma_float\0caml_fmod_float\0caml_format_exception\0caml_format_float\0caml_format_int\0caml_fresh_oo_id\0caml_frexp_float\0caml_fs_init\0caml_gc_compaction\0caml_gc_counters\0caml_gc_full_major\0caml_gc_get\0caml_gc_huge_fallback_count\0caml_gc_major\0caml_gc_major_slice\0caml_gc_minor\0caml_gc_minor_words\0caml_gc_quick_stat\0caml_gc_set\0caml_gc_stat\0caml_ge_float\0caml_get_continuation_callstack\0caml_get_current_callstack\0caml_get_exception_backtrace\0caml_get_exception_raw_backtrace\0caml_get_global_data\0caml_get_major_bucket\0caml_get_major_credit\0caml_get_minor_free\0caml_get_public_method\0caml_get_root\0caml_global_data\0caml_gr_arc_aux\0caml_gr_blit_image\0caml_gr_clear_graph\0caml_gr_close_graph\0caml_gr_close_subwindow\0caml_gr_create_image\0caml_gr_current_x\0caml_gr_current_y\0caml_gr_display_mode\0caml_gr_doc_of_state\0caml_gr_draw_arc\0caml_gr_draw_char\0caml_gr_draw_image\0caml_gr_draw_rect\0caml_gr_draw_str\0caml_gr_draw_string\0caml_gr_dump_image\0caml_gr_fill_arc\0caml_gr_fill_poly\0caml_gr_fill_rect\0caml_gr_lineto\0caml_gr_make_image\0caml_gr_moveto\0caml_gr_open_graph\0caml_gr_open_subwindow\0caml_gr_plot\0caml_gr_point_color\0caml_gr_remember_mode\0caml_gr_resize_window\0caml_gr_set_color\0caml_gr_set_font\0caml_gr_set_line_width\0caml_gr_set_text_size\0caml_gr_set_window_title\0caml_gr_sigio_handler\0caml_gr_sigio_signal\0caml_gr_size_x\0caml_gr_size_y\0caml_gr_state\0caml_gr_state_create\0caml_gr_state_get\0caml_gr_state_init\0caml_gr_state_set\0caml_gr_synchronize\0caml_gr_text_size\0caml_gr_wait_event\0caml_gr_window_id\0caml_greaterequal\0caml_greaterthan\0caml_gt_float\0caml_hash\0caml_hash_mix_bigstring\0caml_hash_mix_bytes\0caml_hash_mix_bytes_arr\0caml_hash_mix_final\0caml_hash_mix_float\0caml_hash_mix_int\0caml_hash_mix_int64\0caml_hash_mix_jsbytes\0caml_hash_mix_string\0caml_hash_nat\0caml_hexstring_of_float\0caml_hypot_float\0caml_input_value\0caml_input_value_from_bytes\0caml_input_value_from_reader\0caml_input_value_from_string\0caml_input_value_to_outside_heap\0caml_install_signal_handler\0caml_int32_add\0caml_int32_and\0caml_int32_bits_of_float\0caml_int32_bswap\0caml_int32_compare\0caml_int32_div\0caml_int32_float_of_bits\0caml_int32_format\0caml_int32_mod\0caml_int32_mul\0caml_int32_neg\0caml_int32_of_float\0caml_int32_of_int\0caml_int32_of_string\0caml_int32_or\0caml_int32_shift_left\0caml_int32_shift_right\0caml_int32_shift_right_unsigned\0caml_int32_sub\0caml_int32_to_float\0caml_int32_to_int\0caml_int32_unmarshal\0caml_int32_xor\0caml_int64_add\0caml_int64_and\0caml_int64_bits_of_float\0caml_int64_bswap\0caml_int64_compare\0caml_int64_create_lo_hi\0caml_int64_create_lo_mi_hi\0caml_int64_div\0caml_int64_float_of_bits\0caml_int64_format\0caml_int64_hash\0caml_int64_hi32\0caml_int64_is_negative\0caml_int64_is_zero\0caml_int64_lo32\0caml_int64_marshal\0caml_int64_mod\0caml_int64_mul\0caml_int64_neg\0caml_int64_of_bytes\0caml_int64_of_float\0caml_int64_of_int\0caml_int64_of_int32\0caml_int64_of_nativeint\0caml_int64_of_string\0caml_int64_offset\0caml_int64_or\0caml_int64_shift_left\0caml_int64_shift_right\0caml_int64_shift_right_unsigned\0caml_int64_sub\0caml_int64_to_bytes\0caml_int64_to_float\0caml_int64_to_int\0caml_int64_to_int32\0caml_int64_to_nativeint\0caml_int64_ult\0caml_int64_unmarshal\0caml_int64_xor\0caml_int_compare\0caml_int_of_float\0caml_int_of_string\0caml_invalid_argument\0caml_is_continuation_tag\0caml_is_js\0caml_is_ml_bytes\0caml_is_ml_string\0caml_is_printable\0caml_is_special_exception\0caml_js_call\0caml_js_delete\0caml_js_equals\0caml_js_error_of_exception\0caml_js_error_option_of_exception\0caml_js_eval_string\0caml_js_expr\0caml_js_from_array\0caml_js_from_bool\0caml_js_from_float\0caml_js_from_int32\0caml_js_from_nativeint\0caml_js_from_string\0caml_js_fun_call\0caml_js_function_arity\0caml_js_get\0caml_js_get_console\0caml_js_html_entities\0caml_js_html_escape\0caml_js_instanceof\0caml_js_meth_call\0caml_js_new\0caml_js_object\0caml_js_on_ie\0caml_js_pure_expr\0caml_js_set\0caml_js_strict_equals\0caml_js_to_array\0caml_js_to_bool\0caml_js_to_byte_string\0caml_js_to_float\0caml_js_to_int32\0caml_js_to_nativeint\0caml_js_to_string\0caml_js_typeof\0caml_js_var\0caml_js_wrap_callback\0caml_js_wrap_callback_arguments\0caml_js_wrap_callback_strict\0caml_js_wrap_callback_unsafe\0caml_js_wrap_meth_callback\0caml_js_wrap_meth_callback_arguments\0caml_js_wrap_meth_callback_strict\0caml_js_wrap_meth_callback_unsafe\0caml_jsbytes_of_string\0caml_jsoo_flags_effects\0caml_jsoo_flags_use_js_string\0caml_jsstring_of_string\0caml_lazy_make_forward\0caml_lazy_read_result\0caml_lazy_reset_to_lazy\0caml_lazy_update_to_forcing\0caml_lazy_update_to_forward\0caml_ldexp_float\0caml_le_float\0caml_lessequal\0caml_lessthan\0caml_lex_array\0caml_lex_engine\0caml_list_mount_point\0caml_list_of_js_array\0caml_list_to_js_array\0caml_log10_float\0caml_log1p_float\0caml_log2_float\0caml_log_float\0caml_lt_float\0caml_lxm_next\0caml_make_array\0caml_make_float_vect\0caml_make_path\0caml_make_vect\0caml_marshal_constants\0caml_marshal_data_size\0caml_marshal_header_size\0caml_maybe_attach_backtrace\0caml_maybe_print_stats\0caml_md5_bytes\0caml_md5_chan\0caml_md5_string\0caml_memprof_discard\0caml_memprof_set\0caml_memprof_start\0caml_memprof_stop\0caml_ml_bytes_content\0caml_ml_bytes_length\0caml_ml_channel_size\0caml_ml_channel_size_64\0caml_ml_channels\0caml_ml_close_channel\0caml_ml_condition_broadcast\0caml_ml_condition_new\0caml_ml_condition_signal\0caml_ml_condition_wait\0caml_ml_debug_info_status\0caml_ml_domain_cpu_relax\0caml_ml_domain_id\0caml_ml_domain_set_name\0caml_ml_domain_unique_token\0caml_ml_enable_runtime_warnings\0caml_ml_flush\0caml_ml_input\0caml_ml_input_bigarray\0caml_ml_input_block\0caml_ml_input_char\0caml_ml_input_int\0caml_ml_input_scan_line\0caml_ml_is_buffered\0caml_ml_mutex_lock\0caml_ml_mutex_new\0caml_ml_mutex_try_lock\0caml_ml_mutex_unlock\0caml_ml_open_descriptor_in\0caml_ml_open_descriptor_out\0caml_ml_out_channels_list\0caml_ml_output\0caml_ml_output_bigarray\0caml_ml_output_bytes\0caml_ml_output_char\0caml_ml_output_int\0caml_ml_output_ta\0caml_ml_pos_in\0caml_ml_pos_in_64\0caml_ml_pos_out\0caml_ml_pos_out_64\0caml_ml_runtime_warnings_enabled\0caml_ml_seek_in\0caml_ml_seek_in_64\0caml_ml_seek_out\0caml_ml_seek_out_64\0caml_ml_set_binary_mode\0caml_ml_set_buffered\0caml_ml_set_channel_name\0caml_ml_set_channel_output\0caml_ml_set_channel_refill\0caml_ml_string_length\0caml_mod\0caml_modf_float\0caml_mount_autoload\0caml_mul\0caml_mul_float\0caml_named_value\0caml_named_values\0caml_nativeint_add\0caml_nativeint_and\0caml_nativeint_bswap\0caml_nativeint_compare\0caml_nativeint_div\0caml_nativeint_format\0caml_nativeint_mod\0caml_nativeint_mul\0caml_nativeint_neg\0caml_nativeint_of_float\0caml_nativeint_of_int\0caml_nativeint_of_int32\0caml_nativeint_of_string\0caml_nativeint_or\0caml_nativeint_shift_left\0caml_nativeint_shift_right\0caml_nativeint_shift_right_unsigned\0caml_nativeint_sub\0caml_nativeint_to_float\0caml_nativeint_to_int\0caml_nativeint_to_int32\0caml_nativeint_unmarshal\0caml_nativeint_xor\0caml_neg_float\0caml_neq_float\0caml_new_lex_engine\0caml_new_string\0caml_nextafter_float\0caml_notequal\0caml_obj_add_offset\0caml_obj_block\0caml_obj_compare_and_swap\0caml_obj_dup\0caml_obj_is_block\0caml_obj_is_shared\0caml_obj_make_forward\0caml_obj_raw_field\0caml_obj_reachable_words\0caml_obj_set_raw_field\0caml_obj_set_tag\0caml_obj_tag\0caml_obj_truncate\0caml_obj_update_tag\0caml_obj_with_tag\0caml_ojs_iterate_properties\0caml_ojs_new_arr\0caml_ojs_wrap_fun_arguments\0caml_oo_last_id\0caml_out_channel_pos_fd\0caml_output_val\0caml_output_value\0caml_output_value_to_buffer\0caml_output_value_to_bytes\0caml_output_value_to_string\0caml_parse_digit\0caml_parse_engine\0caml_parse_format\0caml_parse_sign_and_base\0caml_parser_trace\0caml_pos_in\0caml_pos_out\0caml_power_float\0caml_pure_js_expr\0caml_raise_constant\0caml_raise_end_of_file\0caml_raise_no_such_file\0caml_raise_not_a_dir\0caml_raise_not_found\0caml_raise_sys_error\0caml_raise_with_arg\0caml_raise_with_args\0caml_raise_with_string\0caml_raise_zero_divide\0caml_raw_backtrace_length\0caml_raw_backtrace_next_slot\0caml_raw_backtrace_slot\0caml_read_file_content\0caml_recommended_domain_count\0caml_record_backtrace\0caml_record_backtrace_flag\0caml_refill\0caml_register_channel_for_spacetime\0caml_register_global\0caml_register_named_value\0caml_restore_raw_backtrace\0caml_root\0caml_round_float\0caml_runtime_events_create_cursor\0caml_runtime_events_free_cursor\0caml_runtime_events_pause\0caml_runtime_events_read_poll\0caml_runtime_events_resume\0caml_runtime_events_start\0caml_runtime_events_user_register\0caml_runtime_events_user_resolve\0caml_runtime_events_user_write\0caml_runtime_parameters\0caml_runtime_variant\0caml_runtime_warnings\0caml_seek_in\0caml_seek_out\0caml_set_oo_id\0caml_set_parser_trace\0caml_set_static_env\0caml_signbit_float\0caml_sin_float\0caml_sinh_float\0caml_spacetime_enabled\0caml_spacetime_only_works_for_native_code\0caml_sqrt_float\0caml_str_initialize\0caml_str_repeat\0caml_string_bound_error\0caml_string_compare\0caml_string_equal\0caml_string_get\0caml_string_get16\0caml_string_get32\0caml_string_get64\0caml_string_greaterequal\0caml_string_greaterthan\0caml_string_hash\0caml_string_lessequal\0caml_string_lessthan\0caml_string_notequal\0caml_string_of_array\0caml_string_of_bytes\0caml_string_of_jsbytes\0caml_string_of_jsstring\0caml_string_set\0caml_string_set16\0caml_string_set32\0caml_string_set64\0caml_string_unsafe_get\0caml_string_unsafe_set\0caml_sub_float\0caml_subarray_to_jsbytes\0caml_sys_argv\0caml_sys_chdir\0caml_sys_close\0caml_sys_const_backend_type\0caml_sys_const_big_endian\0caml_sys_const_int_size\0caml_sys_const_max_wosize\0caml_sys_const_naked_pointers_checked\0caml_sys_const_ostype_cygwin\0caml_sys_const_ostype_unix\0caml_sys_const_ostype_win32\0caml_sys_const_word_size\0caml_sys_executable_name\0caml_sys_exit\0caml_sys_fds\0caml_sys_file_exists\0caml_sys_get_argv\0caml_sys_get_config\0caml_sys_getcwd\0caml_sys_getenv\0caml_sys_is_directory\0caml_sys_is_regular_file\0caml_sys_isatty\0caml_sys_mkdir\0caml_sys_modify_argv\0caml_sys_open\0caml_sys_open_for_node\0caml_sys_random_seed\0caml_sys_read_directory\0caml_sys_remove\0caml_sys_rename\0caml_sys_rmdir\0caml_sys_system_command\0caml_sys_time\0caml_sys_time_include_children\0caml_sys_unsafe_getenv\0caml_tan_float\0caml_tanh_float\0caml_to_js_string\0caml_trailing_slash\0caml_trampoline\0caml_trampoline_return\0caml_trunc_float\0caml_uint8_array_of_bytes\0caml_uint8_array_of_string\0caml_unix_cleanup\0caml_unix_closedir\0caml_unix_filedescr_of_fd\0caml_unix_findclose\0caml_unix_findfirst\0caml_unix_findnext\0caml_unix_getpwuid\0caml_unix_gettimeofday\0caml_unix_getuid\0caml_unix_gmtime\0caml_unix_has_symlink\0caml_unix_inet_addr_of_string\0caml_unix_isatty\0caml_unix_localtime\0caml_unix_lstat\0caml_unix_lstat_64\0caml_unix_mkdir\0caml_unix_mktime\0caml_unix_opendir\0caml_unix_readdir\0caml_unix_readlink\0caml_unix_rewinddir\0caml_unix_rmdir\0caml_unix_startup\0caml_unix_stat\0caml_unix_stat_64\0caml_unix_symlink\0caml_unix_time\0caml_unix_unlink\0caml_unmount\0caml_update_dummy\0caml_utf16_of_utf8\0caml_utf8_of_utf16\0caml_weak_blit\0caml_weak_check\0caml_weak_create\0caml_weak_get\0caml_weak_get_copy\0caml_weak_set\0caml_wrap_exception\0caml_xmlhttprequest_create\0compare_digits_nat\0compare_nat\0compare_nat_real\0complement_nat\0core_array_unsafe_float_blit\0core_array_unsafe_int_blit\0core_gc_compactions\0core_gc_heap_chunks\0core_gc_heap_words\0core_gc_major_collections\0core_gc_major_plus_minor_words\0core_gc_major_words\0core_gc_minor_collections\0core_gc_minor_words\0core_gc_promoted_words\0core_gc_run_memprof_callbacks\0core_gc_top_heap_words\0core_heap_block_is_heap_block\0core_md5_digest_subbigstring\0core_md5_fd\0core_time_ns_format\0create_nat\0decr_nat\0deserialize_nat\0div_digit_nat\0div_helper\0div_nat\0expect_test_collector_after_test\0expect_test_collector_before_test\0expect_test_collector_saved_stderr\0expect_test_collector_saved_stdout\0fs_node_supported\0incr_nat\0initialize_nat\0internalhash_fold_bigstring\0is_digit_int\0is_digit_odd\0is_digit_zero\0js_performance\0js_prof_clear_marks\0js_prof_clear_measures\0js_prof_mark\0js_prof_measure\0jsoo_create_file\0jsoo_create_file_extern\0jsoo_effect_not_supported\0jsoo_floor_log2\0jsoo_is_ascii\0jsoo_mount_point\0jsoo_sys_getenv\0land_digit_nat\0length_nat\0lor_digit_nat\0lxor_digit_nat\0make_unix_err_args\0mult_digit_nat\0mult_nat\0nat_of_array\0nth_digit_nat\0nth_digit_nat_native\0num_digits_nat\0num_leading_zero_bits_in_digit\0os_type\0path_is_absolute\0re_match\0re_partial_match\0re_replacement_text\0re_search_backward\0re_search_forward\0re_string_match\0resolve_fs_device\0serialize_nat\0set_digit_nat\0set_digit_nat_native\0set_to_zero_nat\0shift_left_nat\0shift_right_nat\0square_nat\0sub_nat\0time_now_nanoseconds_since_unix_epoch_or_zero\0unix_closedir\0unix_getpwuid\0unix_gettimeofday\0unix_getuid\0unix_gmtime\0unix_has_symlink\0unix_inet_addr_of_string\0unix_isatty\0unix_localtime\0unix_lstat\0unix_lstat_64\0unix_mkdir\0unix_mktime\0unix_opendir\0unix_readdir\0unix_readlink\0unix_rewinddir\0unix_rmdir\0unix_stat\0unix_stat_64\0unix_symlink\0unix_time\0unix_unlink\0win_cleanup\0win_filedescr_of_channel\0win_findclose\0win_findfirst\0win_findnext\0win_handle_fd\0win_startup\0"],0]]]];return}(globalThis)); +NQ=320,NR="Core__Stable_comparable",NS=289,NO=317,NP="Base_quickcheck__Test_intf",NN=803,NL="Haz3lweb__PersistentData",NM="Haz3lcore__TPat",NJ="Str",NK=859,NH="Util__IntUtil",NI=935,NF="Haz3lcore__Grout",NG="Core__Hashtbl",NE="Core__Sexpable",ND=232,Nz="Util__Result",NA=990,NB=1081,NC="Base__Fn",Nx="Haz3lweb__TyAliasExp",Ny=787,Nu=1004,Nv="Includeclass",Nw="Async_kernel__Deferred_option",Nq=338,Nr="Stdlib__Bytes",Ns="Haz3lweb__TerminalExp",Nt="Haz3lcore__TestResults",No="Haz3lweb__Memo",Np=1313,Nm="Out_of_memory",Nn="Core__Hash_set_intf",Nk="Haz3lcore__Interface",Nl=283,Nh=1079,Ni="Ppx_quickcheck_runtime",Nj="Astlib__Migrate_408_407",Nd=463,Ne="Haz3lweb__ListTyp",Nf=1135,Ng=725,Nb="Failure",Nc="Core__Fqueue",M_=529,M$="Stdlib__Printf",Na="Haz3lcore__Typ",M7=566,M8="Haz3lweb__Key",M9=756,M5="Weak_hashtbl__",M6=399,M4=170,M1="Haz3lcore__ClosureEnvironment",M2="Core__Info_intf",M3="Base__Type_equal",M0=1273,MZ=952,MY=1005,MV="Expect_test_common__Import",MW="Haz3lweb__Unicode",MX="Core__Ordered_collection_common",MU="Core__Sequence",MT=1314,MS=304,MQ="Haz3lweb__UpdateAssistant",MR="Core__Error",MP="Cmi_format",MN="Thread_safe_queue__Import",MO="Ppxlib__Ast_traverse",MM="Match_failure",MK=427,ML="Base__Binary_searchable",MI=845,MJ=567,MH=896,MF="Strongly_connected_components",MG=665,ME=630,MD=1125,MB=588,MC="Haz3lcore__EditorUtil",MA=868,Mx=517,My="Haz3lweb__TerminalPat",Mz="Core__Stable_unit_test",Mv="Haz3lcore__Piece",Mw=601,Mu="Ast_iterator",Mt=460,Ms=946,Mo="Core__T",Mp="Base__Either0",Mq=438,Mr=795,Mn=490,Mm=662,Mk="Ctype",Ml=459,Mj="Haz3lcore__TermMap",Mi="Lambda",Mh="Haz3lweb__HoleExp",Mg="Core__Stable_int63able",Mf=224,Me="Haz3lweb__NutMenu",Md=411,Mc="Incremental__Recompute_heap",L$="Persistent_connection_kernel__",Ma=1194,Mb="Core__Unique_id_intf",L_=192,L7=618,L8="Haz3lcore__Cls",L9=1114,L6="Async_kernel__Job_queue",L5=1102,L4="Bin_prot__Utils_intf",L3="Base_quickcheck__Test",L2="Async_kernel__Async_gc",L1="Base__Option",LY="Async_kernel__Time_ns",LZ=841,L0=1143,LX=558,LW="Thread_pool_cpu_affinity",LU="Ppxlib_ast__",LV="Base__Sequence",LT="Sexplib__Parser_with_layout",LR=1309,LS=1115,LQ="Stdlib__Atomic",LP="Incr_dom__Js_misc",LM="Core__Optional_syntax",LN=668,LO="Builtin_attributes",LK=247,LL="Astlib__Migrate_500_414",LH=1053,LI=844,LJ=1221,LG="Haz3lcore__Molds",LE=710,LF=937,LB="Incr_dom__",LC=728,LD="Bin_prot__Utils",Lz="Haz3lweb__TypAnnPat",LA="Core__Nothing",Lx="Typerep_lib__Typename",Ly=222,Lw="Debuginfo",Lv=228,Lt="Ui_incr",Lu="Splittable_random",Lq="Ppxlib__Expansion_helpers",Lr="Haz3lweb__ReadOnlyEditor",Ls="Astlib__Migrate_403_404",Lo="Core__Unit_of_time",Lp="Core__Byte_units",Ln="Haz3lcore__Tile",Lm="Ppxlib__Caller_id",Lj=526,Lk=474,Ll="Base__Int_intf",Li="Haz3lweb__SumTyp",Lg="Longident",Lh="Incremental__Var",Le="Tuple_pool__Tuple_pool_intf",Lf="Abstract_algebra",Ld="Incremental__Kind",K$=1058,La="Ppxlib_ast__Location_error",Lb=793,Lc=886,K_=1000,K8="Base__Random_repr",K9="Base__Bytes0",K7=1278,K5=392,K6="Async_kernel__Deferred_map",K3="Tuple_pool__",K4=370,K1="Haz3lcore__VarErrStatus",K2="Core__Doubly_linked",K0="Stdlib__Array",KY="Jsoo_runtime__",KZ="Js_of_ocaml__Lib_version",KW="Translprim",KX="Astlib__",KU=985,KV="Haz3lcore__PrettySegment",KR="Sexplib__Sexp_with_layout",KS="Ppxlib__Attribute",KT="Haz3lcore__PersistentZipper",KQ=1252,KP="Jsoo_runtime__Runtime_version",KN="Astlib__Migrate_405_406",KO="Pparse",KI="Base_bigstring",KJ="Base__Container_intf",KK="Printtyp",KL="Haz3lcore__VarMap",KM=887,KH=597,KG="Js_of_ocaml__Geolocation",KF="Int_replace_polymorphic_compare",KD="Ocaml_shadow",KE=369,KC="Virtual_dom__Hooks_intf",KB="Async_kernel__Cycle_hook",KA=720,Ky="Haz3lcore__Touched",Kz=875,Kx="Haz3lweb__Type",Kw="Base__Ppx_enumerate_lib",Kv=821,Ku=1256,Kt=540,Kr="Ppx_yojson_conv_lib",Ks=213,Kp=450,Kq=603,Kn=590,Ko="Sexplib0__Sexp",Kl=1051,Km="Core__Stable_module_types",Kk="Stdlib__Complex",Kh="Parsexp__Import",Ki=309,Kj="Haz3lcore__StructureShareSexp",Kf="Haz3lcore__Base",Kg=674,Ke=828,Kc=1069,Kd=977,Ka=273,Kb=1117,J$=932,J9="Parsexp__Automaton_stack_intf",J_="Omd_lexer_fs",J7=493,J8="Haz3lschool__GradePrelude",J6=305,J4="Haz3lschool__Grading",J5=936,J2=144,J3="Ppx_yojson_conv_lib__Yojsonable_intf",JY=1111,JZ=715,J0="Core__Time_ns_intf",J1="Base__Popcount",JX=275,JU="Stdlib__Unit",JV=1098,JW="Core__Source_code_position0",JS=1120,JT="Core__String_id_intf",JM=361,JN="Haz3lweb__CellResult",JO="Haz3lweb__AppPat",JP="Haz3lcore__Rul",JQ=798,JR="Async_kernel__Ivar",JL=453,JJ=956,JK="Validate",JI="Haz3lweb__TestView",JH="Translcore",JG="Typerep_lib__Type_abstract",JF=211,JD="Warnings",JE=1089,JC=404,JB="Astlib__Ast_414",Jy=331,Jz=513,JA="Async_rpc_kernel__Connection_intf",Jx="Haz3lcore__IdTagged",Jw=606,Jt=445,Ju=400,Jv="Core__Int63",Jr=1233,Js="Haz3lcore__Nib",Jp="Haz3lweb__Benchmark",Jq=790,Jo="UnionFind__UnionFindBasic",Jn=881,Jk=814,Jl=300,Jm=805,Ji="Ppx_hash_lib",Jj=1112,Jh=962,Jg="Base__Queue",Jc=1001,Jd="Haz3lcore__ProgramResult",Je=653,Jf="Base__Info",Jb=502,Ja=1284,I8="Util__IntMap",I9="Typerep_lib__Type_generic_intf",I_="Haz3lweb__WorkerClient",I$="Core__Bigstring",I5="Haz3lcore__Stepper",I6="Core__Only_in_test",I7=344,I4=1096,I2="Core__Map_intf",I3="Docstrings",IZ="Re__Core",I0="Parse",I1=895,IY="Incremental__At_intervals",IW="Typerep_lib__Variant_and_record_intf",IX="Core__Blit",IS=820,IT=971,IU="Base__Bytes_tr",IV=888,IQ=1232,IR="Haz3lweb__Ex_OddlyRecursive_prompt",IP="Yojson__",IN="Ppx_inline_test_lib",IO="Core__Stable_internal",IM=893,IJ=1226,IK="Haz3lcore__MakeTerm",IL="Base__",II=426,IH="Astlib__Parse",IE=1154,IF=215,IG="Base__Equal",ID=749,IC="Printast",Iz=1080,IA=988,IB="Core__Date0",Iw=488,Ix=768,Iy=197,Iv="Core__Binable0",Iu="Core__Substring",Ir=129,Is="Core__Nativeint",It=860,Iq=611,Io=829,Ip="Base_quickcheck__Shrinker",Il="Stdlib__Domain",Im="Haz3lcore__ModelResults",In="Astlib__Ast_404",Ik="Async_rpc_kernel__Rpc",Ij="Ppxlib__Ast_builder_generated",Ii="Haz3lweb__UpdateAction",Ih="Async_js__Http",If="Haz3lcore__Perform",Ig=1160,Ie=1216,Id="Incremental__Stabilization_num",Ib="Sexplib0__Sexp_conv_error",Ic="Omd_parser",H8="Haz3lweb__Editors",H9="Core__Std_internal",H_="Core__No_polymorphic_compare",H$=515,Ia=916,H6=656,H7="Async_kernel__Deferred_array",H5="Yojson",H3=244,H4=996,H1="UnionFind__StoreMap",H2=695,H0=136,HZ="Stdlib__Callback",HY="Base__Float",HX="Astlib__Migrate_404_403",HU="Haz3lweb__ExplainThisForm",HV="Yojson__Basic",HW="Async_js__Rpc",HT=147,HS=1322,HR="Pretty__PosMap",HQ=1055,HM=125,HN="Stdlib__MoreLabels",HO="Js_of_ocaml__IntersectionObserver",HP=758,HL="Haz3lcore__Transition",HK=1341,HI="Haz3lweb__Cell",HJ="Core__Map",HG="Astlib__Migrate_413_414",HH=561,HD="Base__Sexp",HE=398,HF="Async_kernel__Deferred1",HB=910,HC=982,Hy=555,Hz=1083,HA="Caml",Hv=487,Hw="Js_of_ocaml__File",Hx="Haz3lweb__Widgets",Hu=876,Hr="Parsexp__Automaton_state_intf",Hs=1333,Ht=1242,Ho=175,Hp=454,Hq="Diffing_with_keys",Hk="Re__",Hl="Ppx_sexp_conv_lib",Hm=799,Hn="Async_kernel__",Hj=716,Hh=780,Hi="Core__Deprecate_pipe_bang",Hg=792,He=1206,Hf=510,Hd=755,G$=1054,Ha=811,Hb=1321,Hc="Astlib__Migrate_500_501",G9="Haz3lweb__AppExp",G_="Astlib__Ast_501",G8="Astlib__Ast_402",G5=669,G6="Core__Int",G7="Async_kernel__Deferred_result",G4=485,G3="Core__Md5",G2=537,G1=586,GZ=1042,G0=1245,GX="Js_of_ocaml__Form",GY="Haz3lweb__ScratchSlide",GV="Core__Fn",GW="Ojs_exn",GU=575,GS=325,GT="Base__Indexed_container",GQ=257,GR="Core__Fdeque",GP="Ppx_bench_lib",GN=1149,GO=158,GM="Core__Uniform_array",GL=757,GK=406,GJ="Core__Ofday_float",GH="Shape",GI="Omd_backend",GF="Haz3lcore__TermBase",GG="Haz3lcore__EvaluatorStats",GE="Core__Validated",GD="Base__Invariant_intf",GB=439,GC="Incremental__Dot_user_info",GA="Bin_prot__Size",Gy=907,Gz="Haz3lcore__Label",Gv=693,Gw=681,Gx=171,Gt="Ppxlib__Ast_pattern0",Gu="Astlib__Longident",Gq=683,Gr="Base__Random",Gs="Base__Indexed_container_intf",Gp="Pprintast",Gn="Ppxlib__Ast_pattern",Go=791,Gm="Js_of_ocaml__Import",Gl=565,Gj=437,Gk=836,Gh="Haz3lweb__Settings",Gi=927,Gg=150,Ge="Haz3lcore__VarCtx",Gf="Haz3lcore__Info",Gd=950,Gc="Oprint",F$=407,Ga=1139,Gb="Async_kernel__Synchronous_time_source",F9=394,F_=735,F7=1344,F8="Core__Hexdump",F6="Printpat",F2=225,F3="Haz3lweb__NodeUtil",F4="Css_gen__Css_parser",F5="Core__Bool",F1=772,FZ=804,F0=911,FX="Local_store",FY=172,FW=733,FV=1059,FU="Core__Time_float0",FR=206,FS=884,FT="Async_js__Persistent_connection",FP="Core__Filename",FQ=939,FM="Omd_utils",FN="Base__Stack",FO=212,FL=1028,FK="Virtual_dom__Dom_float",FJ="Haz3lweb__CellEditor",FI=387,FG="Yojson__Raw",FH=277,FF="Tuple_pool",FE=670,FD=201,FC="Base__Backtrace",FB=278,FA=797,Fy="Not_found",Fz=707,Fv=230,Fw=1189,Fx=722,Fu="Haz3lcore__Time",Fs="Ppxlib__Loc",Ft=848,Fr=729,Fq="Config",Fo="Core__Quickcheckable",Fp="Core__Date",Fm="Printtyped",Fn="Pretty",Fj=414,Fk="Typerep_lib__Typerepable",Fl=1032,Fi=508,Fg=254,Fh=746,Ff="Re__Category",Fc=965,Fd=641,Fe="Base__Int63_emul",Fb=1264,Fa="Core__Time0_intf",E$="Base__Sys0",E8=617,E9=312,E_="Expect_test_common__",E6="Util__Either",E7="Async_kernel",E4="Async_kernel__Require_explicit_time_source",E5=380,E3=133,EY="Vdom_input_widgets__Import",EZ=961,E0="Haz3lweb__Update",E1="Haz3lcore__Action",E2="Btype",EW=1101,EX=472,EU=589,EV=1279,ET="Haz3lcore__Segment",ER="Util__Direction",ES=330,EQ=1187,EP=1214,EO=167,EM=1104,EN="Haz3lweb__ExerciseMode",EL="Base__Result",EI=473,EJ=1336,EK="Base__Int",EH="Bin_prot__Blob",EG="Core",EE="Base_for_tests__Test_blit_intf",EF=126,ED="Haz3lcore",EA="Ppx_bench_lib__Benchmark_accumulator",EB=1085,EC="Base_for_tests__Test_binary_searchable_intf",Ey=443,Ez=846,Ew="Stdlib__ArrayLabels",Ex=1238,Ev="Js_of_ocaml__",Eu="Core__Result",Et=743,Er=241,Es="Core__Digit_string_helpers",Ep="Sexplib0__Sexpable",Eq=1298,En=521,Eo=870,Em=165,Ej=302,Ek="Ppx_inline_test_lib__Runtime",El="Core__Command_env_var",Eh="Meta",Ei="Base_for_tests",Ef="Haz3lweb__BackpackView",Eg="Async_rpc_kernel__Persistent_connection",Ee="Core__Queue_intf",Ec=1088,Ed="Core__Ref",Eb="Haz3lweb__LetExp",D_="Sexplib__Sexp_grammar",D$=548,Ea=718,D9="Incremental__Observer",D7=816,D8=1287,D4="Stdio",D5=252,D6=1315,D3="Async_kernel__Import",DZ=941,D0=292,D1=1261,D2=766,DY="Core__Char",DX="Haz3lweb__AttrUtil",DW=1119,DU="Core__Quickcheck",DV="Compmisc",DR="Core__Binable_intf",DS=751,DT="Core__Ofday_helpers",DP="Base__Or_error",DQ="Typedecl_variance",DO="Env",DN="Sexplib0",DL="Astlib__Migrate_409_410",DM=1157,DH="Lazy_backtrack",DI="Haz3lcore__Var",DJ="Base__Obj_array",DK="Async_kernel__Clock_intf",DG="Stdlib__Out_channel",DF="Async_kernel__Deferred_list",DE=1249,DC="Persistent_connection_kernel",DD="Async_kernel__Lazy_deferred",DA="Base_quickcheck__Export",DB="Base__Applicative",Dy=446,Dz=105,Dw="Yojson__Codec",Dx=637,Dv=759,Dt="Js_of_ocaml__Sys_js",Du="Incremental__Expert1",Dr="Haz3lcore__Ctx",Ds="Datarepr",Do="Util__Monads",Dp="Haz3lcore__Substitution",Dq="Async_kernel__Throttle",Dn=953,Dm="Haz3lweb__CaretDec",Dl=1103,Dk=954,Di=1099,Dj="Base__Uchar0",Dh=308,De="Base__Monad_intf",Df="Stdlib__In_channel",Dg="Haz3lweb__EmptyHoleDec",Dd=449,Dc="Ppxlib__Options",Da=293,Db=1292,C_="Ppxlib__Import",C$=148,C7="Incremental__Config_intf",C8="Expect_test_collector",C9="Async_kernel__Async_kernel_scheduler",C6=413,C4="Re__Pcre",C5="Envaux",C1=279,C2=1266,C3=1271,C0=468,CZ="Stdlib__Filename",CY="Yojson__Safe",CV="Persistent_connection_kernel__Persistent_connection_kernel_intf",CW=238,CX=788,CT=176,CU="Haz3lcore__Constructor",CR="Compile_common",CS="Async_kernel__Priority",CQ="Bin_prot__Md5",CN=621,CO="Js_of_ocaml",CP="Haz3lcore__Precedence",CM=1330,CK="Haz3lweb__Deco",CL="Base__Int_math",CI="Base__Import0",CJ="Omd_html",CG="Sexplib0__Sexp_grammar",CH=1286,CF=997,CC="Ppxlib__Location",CD="Haz3lcore__Ancestors",CE="Bin_prot__Binable",CB=226,Cy="Vdom_input_widgets",Cz="Core__Zone",CA=221,Cw=1181,Cx="Angstrom__Exported_state",Cv=564,Ct="Bin_shape_lib",Cu="Core__Debug",Cs=851,Cr=882,Cq=1192,Cp="Tuple_pool__Tuple_type",Cm=374,Cn="Haz3lweb__CtxInspector",Co="Haz3lcore__Printer",Cl="Incr_dom__App_intf",Cj=107,Ck=1195,Ci=1013,Cf=533,Cg=608,Ch=1130,Ce="Undefined_recursive_module",Cc="CamlinternalFormatBasics",Cd=604,Ca="Ppxlib__Utils",Cb="Base__Error",B_="Base__Int64",B$="Base__Import",B9="Stdio__In_channel",B6=204,B7="Ppxlib__Extension",B8=1228,B4="Vdom_input_widgets__Vdom_input_widgets_intf",B5=607,B3=577,B0="Stdlib__Parsing",B1=492,B2="Async_kernel__External_job",BY="Ppxlib_ast__Import",BZ=113,BW=355,BX="Base__Lazy",BV=701,BU="Stdlib__Bigarray",BT=987,BS=634,BQ="Ppxlib_print_diff",BR=256,BP=447,BO=1231,BL=417,BM="Parsexp__Of_sexp_error",BN="Parsexp__Automaton_state",BK=651,BJ=329,BI="Moption__",BG="Util__OptUtil",BH="Haz3lcore__ValueChecker",BF=1331,BE=1275,BC=123,BD=1123,BB=834,BA="Base__Map_intf",Bz=615,Bw=822,Bx="Async_kernel__Job_or_event_intf",By="Astlib__Migrate_413_412",Bv="Haz3lcore__ExpToSegment",Bs="Re__Cset",Bt="Base__List1",Bu="Astlib",Br=365,Bo="Base__String",Bp="Base__Hash",Bq=883,Bm="Sys_blocked_io",Bn=635,Bl="Stdlib__Uchar",Bk=205,Bj="Bin_shape_lib__Bin_shape",Bh=373,Bi=245,Bf="UnionFind__StoreTransactionalRef",Bg=677,Bd="Sexplib",Be="Haz3lweb__HoleTyp",Bc=629,Ba=1145,Bb="Base__Hashable",A$=1307,A9="Core__Info",A_=786,A7="Haz3lweb__Os",A8="Core__Identifiable_intf",A6="Tast_mapper",A5="Core__Time_intf",A4="Pairing_heap",A1="Ppx_compare_lib",A2="Async_rpc_kernel__",A3="Assert_failure",AZ="Haz3lweb__Ex_RecursiveFibonacci",A0=1131,AX="Stdlib__BytesLabels",AY=871,AW=497,AV="Ui_effect",AP="Haz3lweb__Export",AQ="Haz3lcore__Builtins",AR=627,AS="Consistbl",AT=134,AU=152,AN=425,AO=227,AL="Ppxlib_ast",AM=553,AK=1337,AI=1019,AJ=1190,AH="Js_of_ocaml__Url",AG="Parsexp__Conv_error",AF="Haz3lschool__Exercise",AE=853,AC="Core__Validated_intf",AD=925,Az="Protocol_version_header__",AA=1299,AB=1178,Ay="Depend",Au=652,Av=1263,Aw=775,Ax=235,At=141,As=120,Ap=236,Aq=824,Ar=1027,Am="Js_of_ocaml__Js",An="Incremental__State",Ao="Haz3lcore__Skel",Al="Parsexp__Conv",Aj=584,Ak="Ppxlib__Longident",Ai="Ppx_yojson_conv_expander__",Ag="Haz3lweb__CursorInspector",Ah=930,Ae="Base__Container",Af="Astlib__Migrate_501_500",Ad="Base__With_return",Ac=1071,Aa="Base__Blit_intf",Ab=415,z7="Haz3lcore__TermRanges",z8=1122,z9=181,z_=118,z$=922,z6="Moption",z4=249,z5="Core__Float",z3=478,z1="Incremental__Expert",z2=1163,z0="Expect_test_collector__",zZ="Ppxlib__Ast_traverse0",zX="Base__Printf",zY=560,zV=1066,zW=711,zT="Ocaml_common",zU=1257,zS="Haz3lcore__Id",zR=913,zO="Sexplib__Lexer",zP="Core__Never_returns",zQ="Core__Day_of_week",zM=151,zN="Haz3lcore__Any",zL=966,zJ="Stack_overflow",zK="Core__Bounded_index_intf",zH="Stdlib__Arg",zI=573,zG="Js_of_ocaml__Dom_events",zF="Typeclass",zz="Path",zA=1319,zB="Haz3lweb__DebugMode",zC="Base__Hashtbl_intf",zD=153,zE="Angstrom",zy="Ast_mapper",zx=1293,zw=559,zv=748,zt="Haz3lcore__Operators",zu="Bin_prot__Common",zp=1061,zq="Incremental__Adjust_heights_heap",zr="Core__Month_intf",zs=189,zo="Async_kernel__Synchronous_time_source0",zm=1077,zn="Thread_safe_queue__",zl=697,zj="Core__Printexc",zk="Base_quickcheck__Bigarray_helpers",zf=593,zg=145,zh="Astlib__Keyword",zi="Astlib__Ast_407",zd=1218,ze=921,zc=530,zb=1029,za=1204,y_="Terminfo",y$="Haz3lweb__EditorModeView",y9=580,y5=402,y6="Haz3lweb__LogEntry",y7="Haz3lweb__DecUtil",y8=1106,y2="Haz3lcore__Unicode",y3=422,y4=405,y1=714,yY=162,yZ=906,y0=610,yW=352,yX="Async_kernel__Deferred_or_error",yV="Bigstringaf",yT="Base__Exn",yU="Astlib__Migrate_407_406",yR=554,yS="Core__Signal",yQ="Base__Ppx_compare_lib",yP="Util__Aba",yM=686,yN="Async_js__Debug",yO=341,yL="Ppx_quickcheck_runtime__",yK="Moption__Import",yJ=600,yI=115,yG="Util__MapUtil",yH=874,yD=823,yE=270,yF="Core__Percent",yB=810,yC=838,yA=1340,yy=104,yz=731,yx="Base__Nothing",yw="Async_kernel__Scheduler",yu="Haz3lcore__Exp",yv=684,yt=679,ys=879,yq="Ident",yr=873,yp="Stdlib__Map",ym="Base__Poly0",yn=1049,yo=467,yk="Haz3lcore__DHExp",yl=242,yg=1161,yh="End_of_file",yi="Core__Immediate_option",yj=596,yd="Haz3lweb__TupleExp",ye="Core__Type_equal_intf",yf="Async_kernel__Debug",yc="Compenv",yb="Async_kernel__Monad_sequence",x$="Base__Char0",ya="Angstrom__Buffering",x9="Haz3lcore__Indicated",x_=366,x6=967,x7="Haz3lcore__Self",x8="Ezjs_idb",x3=819,x4=534,x5="Core__Span_intf",xZ="Core__Container_intf",x0=1035,x1="Base__Binary_searchable_intf",x2="Astlib__Migrate_410_409",xY=754,xW="Expect_test_config_types__",xX="Core__Command_shape_intf",xV="Ppx_log_types",xU=872,xT=1100,xS="Printlambda",xN="Re__Fmt",xO="Incr_dom",xP=549,xQ="Core__Union_find",xR="Base__Applicative_intf",xM="Async_js__",xK=523,xL="Async_kernel__Mvar",xH=1023,xI=1016,xJ=545,xG="Core__Interfaces",xF=1116,xD="Ezjs_idb__",xE=645,xC="Core__Type_immediacy",xy="Util__ListUtil",xz="Sexplib__Pre_sexp",xA=591,xB="Result",xw=1064,xx=1090,xt=328,xu="Base__Hashable_intf",xv="Haz3lweb__Exercise",xs=307,xr=477,xo=311,xp=389,xq=1142,xn="Haz3lcore__DHPat",xl="Re__Glob",xm="Ast_helper",xj="Haz3lcore__Selection",xk=699,xi=1324,xh=928,xg="Base__Buffer",xf=233,xc="Haz3lschool__SyntaxTest",xd="Haz3lcore__Mold",xe=161,xa="Sys_error",xb=436,w_="Base_internalhash_types",w$=568,w9=476,w8="Base__Buffer_intf",w6="Base_quickcheck__Generator",w7="Async_kernel__Async_condition",w4=424,w5="Haz3lcore__FilterMatcher",w2=479,w3=358,w1="Js_of_ocaml__WebSockets",wZ="Js_of_ocaml__ResizeObserver",w0="Bin_prot__Write",wY=945,wX=1124,wV="Jsoo_runtime",wW="Haz3lweb__WeakMap",wU=782,wS=509,wT="Astlib__Ast_412",wR=276,wP="Sexp_hidden_in_test",wQ="Haz3lcore__Form",wN="Haz3lcore__EvalCtx",wO="Expect_test_common__Expectation",wL="Stdlib__StdLabels",wM="Patterns",wK=1290,wH="Base__Variant",wI=1150,wJ="Async_kernel__Pipe",wG=155,wE="Haz3lcore__TileMap",wF="Haz3lcore__Ancestor",wB="Parmatch",wC=1121,wD="Base__Ref",wz=469,wA=1168,wy="Async_kernel__Monitor",wx=229,ww="Haz3lcore__TestStatus",ws="Tuple_pool__Import",wt="Sexplib__Type_with_layout",wu="Protocol_version_header__List_with_max_len",wv=337,wq=1198,wr=200,wp="Parsexp__Positions",wo="Incremental__Alarm",wm="Incremental__Import",wn=903,wk=1200,wl="Haz3lcore__AssistantCtx",wj=1170,wh="Ppxlib__Spellcheck",wi=334,wg=494,we="UnionFind__StoreRef",wf=199,wc=184,wd="Haz3lweb__SlideContent",wa=576,wb=489,v$="Incremental__Unordered_array_fold",v9=237,v_="Core__Hashtbl_intf",v6="Haz3lweb__TerminalTyp",v7=1289,v8="Ast_invariants",v5="Base__Identifiable_intf",v3=1267,v4="Ezjs_min__Dom",v1="Parsexp__Cst",v2=1196,vY="Haz3lcore__Relatives",vZ=777,v0=760,vX=1014,vW="Haz3lweb__Page",vV=949,vT=191,vU="Async_kernel__Stack_or_counter",vS="Stdlib__Gc",vR=1268,vP=1283,vQ=877,vN="Stypes",vO=550,vM="Core__Comparator",vJ="Haz3lweb__Code",vK=501,vL=340,vI=1328,vH="Async_rpc_kernel__Connection",vE="Stdlib__Lazy",vF=1250,vG=259,vD=789,vC=592,vB="Haz3lcore__Backpack",vz=525,vA=1169,vw=520,vx="Haz3lweb__TestExp",vy="Expect_test_common__File",vs=1092,vt="Incr_select",vu="Ezjs_min__Promise",vv="Base__List",vr=442,vq="Haz3lcore__Insert",vp=1175,vo="Base__Bool",vn="Haz3lweb__ExerciseUtil",vl=397,vm=1176,vi=121,vj="Haz3lcore__Mode",vk="Async_rpc_kernel__Writer_with_length",vf=1091,vg=519,vh=1183,vd=168,ve="Async_kernel__Time_source",va="Core__Import",vb="Core__Stable",vc="Async_rpc_kernel__Rpc_error",u$=650,u_=628,u8="Invalid_argument",u9=1209,u7=1272,u6=612,u5="Protocol_version_header__List_with_max_len_intf",u4="Diffing",u3="Base__Ordered_collection_common",u1=806,u2="Core__Lazy",uZ=1044,u0="Tmc",uY="Haz3lweb__Icons",uX=794,uU="Ppx_yojson_conv_expander__Label_with_name",uV=542,uW=512,uS=1026,uT="Thread_pool_cpu_affinity__",uR=157,uQ=839,uN="UnionFind",uO=1107,uP=690,uK=531,uL="Ppxlib__Keyword",uM="Base__Sign",uI="Base__Variantslib",uJ="Astlib__Ast_408",uH=198,uG=1012,uF=831,uC=248,uD="Core__Make_substring_intf",uE=174,uz=470,uA=1152,uB=898,uy="Misc",ux=378,uv="Re",uw="Base__Stringable",uu="Core__Option",us=1037,ut="Ppxlib__Expansion_context",ur=1025,uq=623,up=108,um=466,un=1171,uo=742,ui="Virtual_dom__Attr",uj=1323,uk=750,ul="Core__Unique_id",uh="Haz3lcore__Shard",uf=1281,ug=339,ue="Angstrom__More",ud="Ppxlib_ast__Warn",ua="Haz3lcore__Labels",ub="Haz3lweb__FunctionExp",uc="Astlib__Migrate_406_405",t_=1291,t$=709,t8=646,t9=808,t6=1034,t7=825,t4=194,t5="Base__Pow_overflow_bounds",t0="Stdlib__Int",t1="Vdom_file_download",t2=1301,t3=541,tX="Parsexp__Automaton_action",tY=138,tZ=382,tW=298,tT=1036,tU="Untypeast",tV="Haz3lweb__Ex_OddlyRecursive",tS="Translattribute",tR="Haz3lweb__ExplainThisUpdate",tP=1188,tQ="Core__Comparable",tO=864,tL=506,tM=179,tN=117,tK="Core__",tI=419,tJ=543,tG=319,tH="Base__Uchar",tE="Core__Memo",tF=353,tC="Virtual_dom__Effect",tD=752,tA="Load_path",tB=516,tz="Core__Int_intf",ty=1212,tx=458,tw=1227,tv=704,tu="Core__Ephemeron",ts=1223,tt=880,tr=250,tp="Haz3lweb__PipelineExp",tq="Core__Core_pervasives",to=1304,tn="Core__Span_float",tl=274,tm="Base_for_tests__Test_binary_searchable",tk="Core__Time_ns",ti="Pretty__ListUtil",tj=1009,tg=712,th=616,te=585,tf="Base__Word_size",td=902,tc="Haz3lcore__Secondary",ta=1230,tb=163,s_="Base__Pretty_printer",s$=892,s9="Base__Source_code_position0",s8=343,s6=379,s7="Async_rpc_kernel__Implementation_types",s4="Incremental__Types",s5="Haz3lweb__ListExp",s2="Typerep_lib__Make_typename",s3=968,sZ="Incremental__Array_fold",s0=1213,s1=1158,sX="Sexplib__Exn_magic",sY=362,sV="Js_of_ocaml__EventSource",sW="Incremental_step_function",sU=218,sT=1210,sR=643,sS="Stdlib__Condition",sQ=1003,sO="Core__Hashable_intf",sP=216,sL=1327,sM="Core__Time_ns_alternate_sexp",sN="Async_rpc_kernel__Implementations",sJ="Uri_sexp",sK=185,sG=842,sH="Bytesections",sI="Base__Array",sD="Omd_representation",sE=1335,sF="Base__Field",sC="Incremental__",sB="Haz3lweb__CaretPosDec",sA=1253,sz="Base__Hash_set",sy=894,sw=1031,sx="Haz3lweb__PieceDec",su="Weak_hashtbl__Import",sv="Re__Color_map",sq=321,sr="Util__StateMonad",ss=1217,st=1094,sp="Stdio__",so=1258,sm=1021,sn="Stdlib__Mutex",sl="Haz3lweb__FilterExp",sj="Stdlib__ListLabels",sk=359,sf=299,sg=452,sh=1254,si="Core__Stable_unit_test_intf",sc="Sexplib0__Sexp_conv_grammar",sd="Matching",se="Async_rpc_kernel__Implementation",sb="Async_js",sa=1280,r$="Core__Bag",r5=833,r6=403,r7="Parsexp__Parse_error_intf",r8=1246,r9="Base__Monad",r_="Base__Float0",r3=532,r4="Stdlib__Semaphore",r1=280,r2="Haz3lcore__FilterAction",r0=955,rY="Yojson__Lexer_utils",rZ=109,rW="Incr_map__",rX="Core__Arg",rV=1247,rU="Core__Optional_syntax_intf",rT=310,rS=1185,rQ=265,rR=475,rO="Haz3lweb__Example",rP=761,rM="Haz3lcore__Delta",rN="Core__Hexdump_intf",rL=1141,rK="Makedepend",rJ="Stdlib__Digest",rH=920,rI=346,rF="Parser",rG="Core__List0",rE=208,rA=1020,rB="Core__Bigbuffer_internal",rC="Base__Int63",rD=938,ry="Stdlib__Nativeint",rz=203,rx="Haz3lcore__AssistantExpander",rw="Stdlib__Stack",rv=431,ru="Core__Set_intf",rt="Typerep_lib__Named_intf",rr=546,rs=691,rq="Typedtree",ro="Type_immediacy",rp="Base__Intable",rn="Typedecl_immediacy",rm=556,rl="Ppxlib__Location_check",rk=915,rj="Ppx_derivers",ri="Core__Identifiable",rf=1076,rg="Symtable",rh="Base_quickcheck__Observer0",re=336,rd="Js_of_ocaml__Typed_array",rb="Bin_prot",rc=1060,q$="Ui_effect__",ra=1162,q_="UnionFind__StoreVector",q9="Parsexp__Conv_intf",q7=527,q8=504,q5="Uopt",q6=258,q4=383,q2=1316,q3=182,q1="Base__Sexp_with_comparable",q0=1294,qY="Haz3lcore__CoreSettings",qZ="Arg_helper",qV=349,qW="Timing_wheel__Import",qX=1215,qT=1312,qU="Haz3lcore__Select",qO=231,qP=970,qQ="Haz3lweb__Ex_RecursiveFibonacci_prompt",qR="Haz3lcore__UTyp",qS=625,qN=959,qL="Typerep_lib__Type_equal",qM="Opcodes",qH=1300,qI="Haz3lcore__Nibs",qJ="Base__Bytes",qK=878,qG=386,qF=1146,qD="Incremental__Cutoff",qE=1288,qB="Ppx_deriving_runtime",qC="Incr_map",qz=667,qA=507,qy=239,qw="Haz3lcore__TypeAssignment",qx=348,qv="Md5_lib",qu="Base__Info_intf",qt=661,qs=642,qr=367,qp="Core__Queue",qq="Astlib__Ast_413",qn="Ppx_yojson_conv_lib__Yojson_conv",qo=491,qm="Haz3lweb__ExerciseSettings_instructor",ql=1043,qk=1097,qi="Stdlib__Random",qj="Ppxlib_traverse_builtins",qg=1082,qh=781,qe=680,qf=1132,qa="Astlib__Location",qb="Typetexp",qc="Js_of_ocaml__Intl",qd="Base__Floatable",p$=137,p9="Ppx_quickcheck_runtime__Quickcheckable",p_="Core__Deque",p8="Core__Maybe_bound",p7=409,p6="Numbers",p2=1057,p3=1197,p4="Js_of_ocaml__CSS",p5="Async_kernel_config",pZ="Ppxlib_ast__Stdlib0",p0=640,p1=122,pY="Base__Either_intf",pW="Haz3lweb__ExerciseSettings",pX="Astlib__Migrate_414_413",pT=448,pU="Core__Univ_map",pV="Core__Ofday_ns",pR="Stdlib__String",pS="Haz3lweb__ArrowTyp",pQ="Async_rpc_kernel__Transport",pO="Incremental",pP="Haz3lweb__CodeEditor",pM=904,pN="Async_kernel__Deferred_queue",pK="Base__Int0",pL="Ppxlib__Reconcile",pJ=900,pG=1052,pH=1174,pI=672,pD="Util__TimeUtil",pE="Ppxlib_ast__Ast",pF="Haz3lweb__SeqExp",pC=802,pB=1086,pA="Core__Float_with_finite_only_serialization",pz="Js_of_ocaml__Dom_html",px=1276,py="Css_gen__",pw="Async_kernel__Types",pv=345,ps="Timing_wheel__Timing_wheel_intf",pt="Haz3lweb__Grading",pu="Core__Ofday_intf",pp="Ppx_assert_lib__Runtime",pq=557,pr=166,pm="Incr_dom__Start_app",pn=1303,po=202,pk="Core__Linked_queue",pl=210,pi=973,pj="Ezjs_min",pg=1153,ph="Async_rpc_kernel__Protocol",pf="Astlib__Migrate_408_409",pd=599,pe=1022,pc=917,pa="Stdlib__Sys",pb=323,o$="Base__Source_code_position",o9=282,o_=984,o8=372,o7=295,o6=1255,o5="Includemod_errorprinter",o4="Expect_test_config",o2="Errortrace",o3=1248,o0="Core__Univ_map_intf",o1=188,oY=687,oZ="Base__Hashtbl",oX=183,oW=914,oU="Binutils",oV=858,oT="Core__Type_equal",oR="Incremental__Sexp_of",oS="Astlib__Migrate_412_413",oQ=480,oP=673,oO=698,oM="Util__StringUtil",oN=1203,oJ="Haz3lcore__InvalidOperationError",oK=324,oL="Async_kernel__Deferred_memo",oH="Ojs",oI=1295,oG=1211,oE=455,oF=689,oC="Yojson__Common",oD=193,oA="Ppx_here_lib",oB="Haz3lcore__Term",oz=164,ow=1136,ox=783,oy=891,os="Protocol_version_header__Known_protocol",ot="Weak_array",ou="Incremental__Scope",ov=505,or="Haz3lcore__Sort",op=272,oq=178,oo="Async_rpc_kernel__Nat0",on=297,om="Pretty__Box",ok="Core__Unit",ol=187,oj=149,oh=484,oi="Async_rpc_kernel",og="Async_kernel__Clock_ns",oe=1128,of="Base__Set",oc="Haz3lweb__SvgUtil",od="Haz3lweb__ColorSteps",oa="Incremental__If_then_else",ob="Core__List",n$="Haz3lcore__EvaluatorState",n_="Sexplib__Src_pos",n9="Incr_select__Incr_select_intf",n8="Cmt2annot",n6="Sexplib__Type",n7="Async_kernel__Deferred0",n3="Incremental__Node_id",n4=975,n5="Core__Date0_intf",n2="Angstrom__Parser",n0="Expect_test_common",n1="Astlib__Migrate_409_408",nZ=1144,nY="Identifiable",nV="Stdlib__Obj",nW="Core__Deriving_hash_intf",nX=514,nR=303,nS="Haz3lweb__ForallTyp",nT=764,nU=180,nP=368,nQ=736,nO="Base_for_tests__Test_blit",nN=169,nL=1048,nM="Async_kernel__Execution_context",nK="Virtual_dom__Js_map",nJ=865,nH="Runtimedef",nI=1260,nG="Base__T",nF="Omd_xtxt",nE=944,nC=866,nD="Astlib__Ast_405",nB=1133,nA=765,ny="Typedecl_separability",nz=620,nv=285,nw=356,nx=267,ns=951,nt=1236,nu="Ezjs_min__Table",nr="Ppxlib__Skip_hash_bang",np="Ppxlib__Ignore_unused_warning",nq=1338,no="Async_kernel__Deferred_std",nl=563,nm="Core__Quickcheckable_intf",nn="Core__Hash_queue_intf",nj="UnionFind__",nk=943,ni=342,nh="Parsexp__",ne="Stdlib__Hashtbl",nf=524,ng="Async_rpc_kernel__Pipe_transport",nd=582,nc="Sexplib__Std",na=605,nb=376,m$=318,m9=395,m_=1305,m8=644,m6="Incremental__Internal_observer",m7="Dll",m5="Simplif",m3="Js_of_ocaml__Jstable",m4="Haz3lweb__ExerciseSettings_base",m1="Css_gen",m2="Base__Ordering",mZ="Haz3lschool__Specs",m0="Clflags",mY=156,mV=1073,mW=301,mX=1208,mT=154,mU=942,mS=1017,mR="Astlib__Migrate_414_500",mQ=571,mN=1251,mO=1191,mP="Core__Core_sys",mL=1074,mM=1179,mJ=1039,mK=290,mH=1262,mI="Ppx_module_timer_runtime",mG=1339,mE=1007,mF=762,mD="Haz3lweb__ExplainThisModel",mC="Ppxlib__Context_free",mA="Haz3lcore__ConstructorMap",mB=377,mx="Signature_group",my="Ccomp",mz="Base__Int_conversions",mw="Stdlib__Printexc",mv="Base__Either",mu=1038,mr=544,ms="Core__Hash_set",mt="Astlib__Pprintast",mq=801,mp="Core__Make_substring",mo="Division_by_zero",mn="Core__Ordering",mm=1126,ml="Core__Sexp",mi="Astlib__Migrate_411_412",mj="Haz3lcore__Measured",mk=614,me=119,mf=287,mg="Stdlib__Weak",mh=657,md="Virtual_dom__Hooks",mb=101,mc="Base__Comparisons",ma="Angstrom__",l$=1225,l9=255,l_=1002,l8=288,l5=100,l6="UnionFind__Store",l7=261,l4="Core__Container",l3=456,l1="Parsexp__Automaton_intf",l2="Base__Stack_intf",l0="Pretty__LayoutOfDoc",lX=964,lY=1235,lZ="Core__Set",lW=1317,lV=1310,lT=998,lU=1306,lS=1186,lR="Haz3lweb__FontSpecimen",lQ=486,lO=583,lP="Core__Substring_intf",lM="Variantslib",lN="Ppx_yojson_conv_lib__",lK="Tast_iterator",lL=421,lJ=676,lI="Base__Queue_intf",lH=745,lG=1045,lF=1078,lE="Haz3lweb__TupleTyp",lD=266,lC=570,lB=209,lA="Ezjs_min__BigInt",ly="Core__Stack",lz="Balanced_reducer",lx="Uuidm",lw="Base__Sexpable",lu="Lexer",lv=1166,ls="Int_repr",lt=974,lq=1239,lr=354,lo="Stdlib__Either",lp="Ppxlib__Ast_builder_intf",lm="Ezjs_min__Js",ln="Ppx_assert_lib",lk="Haz3lweb__FontMetrics",ll=919,lj=1243,lh="Ppxlib__Common",li="Haz3lweb__Keyboard",le="Re__Emacs",lf=1277,lg="Haz3lcore__VarBstMap",ld=933,lb=700,lc="Core__Heap_block",k$="Base__Fieldslib",la=384,k_=223,k9="Pretty__MemoTbl",k7="Pretty__MeasuredPosition",k8="Haz3lweb__ExplainThis",k5="Persistent_env",k6=774,k3=753,k4="Core__Bytes",k2=957,k1="Build_path_prefix_map",k0=1050,kZ="Main_args",kY="Async_kernel__Monitor0",kW="Ppx_yojson_conv_expander",kX=899,kR=388,kS=503,kT="Omd",kU="Core__Date_intf",kV="Base_quickcheck__With_basic_types",kQ=430,kM="Parsexp__Parser",kN="Incremental__At",kO="Haz3lcore__EvaluatorStep",kP=702,kK=830,kL="Pretty__Doc",kI="Ppxlib",kJ="Base__Blit",kG="Js_of_ocaml__Regexp",kH="Html_characters",kD=909,kE=416,kF=1332,kB=636,kC="Astlib__Migrate_407_408",ky=1010,kz=741,kA="Core__Day_of_week_intf",kw="Ppxlib__Code_path",kx="Haz3lweb__Model",kt=390,ku="Base__Ppx_hash_lib",kv="Base__Maybe_bound",ks="Typedecl_properties",kq="CamlinternalLazy",kr="Haz3lweb__SettingsModal",ko="Haz3lcore__Suggestion",kp=207,kn=713,km=717,kk="Virtual_dom__Raw",kl="Core__Doubly_linked_intf",kh=837,ki=500,kj=220,kf=613,kg="Base__Map",kc="Haz3lweb__HolePat",kd=481,ke=351,j$=826,ka="Haz3lcore__AssistantForms",kb="Astlib__Migrate_402_403",j_="Haz3lweb__State",j9="Parsexp__Automaton",j8=619,j7=696,j6="Base__Sys",j5="Async_kernel__Ivar0",j3=482,j4="Core__Month",j2="Typedecl",j0="Includecore",j1="Sexplib__Parser",jY="Translobj",jZ=363,jX="Async_rpc_kernel__On_exception",jW="Sexplib0__Sexp_conv",jT="Ppxlib__Code_matcher",jU=433,jV=773,jS="Incremental__Reduce_balanced",jP="Translmod",jQ="Base__Linked_queue",jR="Astlib__Migrate_404_405",jO="Angstrom__Input",jK=498,jL="Stdlib__Ephemeron",jM="Ppx_bench_lib__Export",jN="Astlib__Migrate_411_410",jJ="Haz3lweb__ListPat",jH=1334,jI=632,jF=1137,jG=483,jD=1127,jE="Base",jA="Stdlib__Fun",jB="Util__ListFrame",jC="Util",jy=981,jz="Base__Invariant",jx="Virtual_dom__Node",jw=1311,ju="Util__TupleUtil",jv="Haz3lcore__Zipper",js="Stdlib__Result",jt=626,jr="Haz3lweb__IfExp",jp="Stdlib__Buffer",jq="Async_kernel__Async_invariant",jn="Haz3lcore__CachedStatics",jo=771,jk="Re__Str",jl="Parsexp",jm=779,jj=688,jg=654,jh="Async_rpc_kernel__Versioned_rpc",ji=381,je="Async_kernel__Ivar_filler",jf=863,jc=538,jd=999,jb=1244,ja="Weak_hashtbl",i$=195,i_=579,i9="Yojson__T",i8=522,i6=852,i7="WorkerServer",i5="Async_kernel__Scheduler0",i4=969,i3=408,i1="Typecore",i2=410,i0=1274,iZ=240,iY=815,iX="Base__Binary_search",iT="Typerep_lib__Std_internal",iU=569,iV="Incr_select__",iW=660,iS=963,iR="Re__Automata",iQ=598,iP=1056,iO=817,iM=972,iN="Core__Bigbuffer",iK="Stdlib",iL=940,iI=622,iJ=854,iH="Core__Either",iF="Haz3lcore__Orientation",iG="Core__Bag_intf",iD="Sexplib__Sexp",iE="Base__Nativeint",iB="Pretty__Unicode",iC=375,iy=444,iz="Haz3lweb__ScratchSlidesInit",iA=1240,iu=335,iv=995,iw=648,ix=948,ir=296,is="Haz3lcore__UPat",it="Css_gen__Css_tokenizer",iq=655,im=132,io="Syntaxerr",ip="Haz3lcore__EvaluatorError",il="Core__Deriving_hash",ik="Timing_wheel",ii="Core__Time_float",ij="Base__Unit",ig="Parsexp__Automaton_tables",ih="Async_kernel__Deferred",ib="Haz3lweb__BlankTemplate",ic="Haz3lcore__Move",id=260,ie=737,h$=685,ia=856,h8=633,h9=1205,h_="Haz3lweb__FixFExp",h7=1220,h6="Stdlib__Int64",h5="Core__Hash_queue",h3=284,h4="Haz3lweb__JsUtil",h1=1113,h2=889,h0="Ppxlib__Quoter",hZ="Time_now",hX=857,hY="Haz3lweb__Diag",hW="Incremental__Join",hS="Haz3lweb__Store",hT=675,hU=139,hV=371,hQ="Sexplib__Path",hR="Core__Int32",hP=1095,hN=1046,hO="Base__Formatter",hL=1109,hM="Core__Binable",hK=706,hI="Incremental__Snapshot",hJ="Haz3lcore__Statics",hF=1047,hG=1067,hH="Bin_prot__Std",hE="Incr_map__Incr_map_intf",hD=1087,hC="Js_of_ocaml__WebGL",hB="Stdlib__Queue",hA="Base__Sign_or_nan",hz=659,hy="CamlinternalMod",hv=264,hw="Vdom_input_widgets__",hx=901,ht=114,hu="Haz3lweb__ScratchMode",hp=1006,hq="Haz3lweb__TuplePat",hr=1342,hs="Haz3lcore__ModelResult",hm=1040,hn=1177,ho="Core__Option_array",hl="Base__Comparator",hk="Stdlib__Effect",hj="Async_kernel__Async_stream",hi="Stdlib__List",hh=862,hg="Js_of_ocaml__MutationObserver",he="Re__Group",hf=327,hc="Core__String",hd=111,ha=832,hb=1110,g$="Haz3lcore__FilterEnvironment",g_="Bin_prot__Shape",g8="Parsexp__Old_parser_cont_state",g9="Js_of_ocaml__Json",g7=135,g6="Haz3lcore__IncompleteBidelim",g5="Stdlib__Set",g4=726,g2=499,g3=1297,g0=495,g1="Haz3lweb__CaseExp",gZ=703,gX="Haz3lcore__Evaluator",gY="Async_kernel__Async_invariant_intf",gV="Switch",gW=730,gU=127,gR="Incr_dom__Incr",gS="Haz3lweb__FailedInput",gT=190,gQ=1302,gO=812,gP=1072,gN=663,gL="Stdio__Out_channel",gM="Astlib__Ast_metadata",gJ="Core__Source_code_position",gK=217,gF="Re__Posix",gG="Profile",gH=784,gI=594,gD="Haz3lweb__TypFunctionExp",gE=357,gC="Pretty__Layout",gB=1033,gA=1282,gz=1237,gx="Subst",gy="Js_of_ocaml__PerformanceObserver",gv="Expect_test_config_types__Expect_test_config_types_intf",gw=734,gu="Core__Perms",gt="Base__Array_permute",gq=840,gr="Base__Comparable",gs="Astlib__Migrate_403_402",gp=131,go="Stringext",gn=719,gm="Stdlib__Marshal",gj=253,gk="Haz3lweb__TypAppExp",gl=723,gf=314,gg=861,gh="Async_kernel__Job_or_event",gi=885,gd="Incr_dom__Component",ge="Haz3lweb__StepperEditor",gb="Base__String0",gc=451,ga=1011,f$="Ezjs_min__Log",f_="Haz3lweb__OpExp",f9="Base__Staged",f5=849,f6="Astlib__Ast_406",f7=1184,f8=173,f2=124,f3=391,f4="Incremental__Incremental_intf",f1="Haz3lweb__Kind",fY=1024,fZ="Incremental__Alarm_value",f0=960,fX=246,fV=429,fW="Async_kernel__Job_pool",fT="Typedecl_unboxed",fU=1265,fP=813,fQ=326,fR="Sexplib0__",fS=1108,fN=958,fO="Parsexp__Automaton_stack",fL=1093,fM="Location",fJ="Inline_test_config",fK=1180,fG=908,fH=572,fI="Core__Command_shape",fE="Base__Identifiable",fF="Base__Hash_set_intf",fD=1193,fC=547,fB=1147,fz="Js_of_ocaml__Worker",fA=639,fw="Stdlib__Char",fx="Core__Blang",fy=947,fu="Stdlib__Int32",fv=843,ft=827,fp=1151,fq=678,fr="Bin_prot__Nat0",fs="Async_rpc_kernel__Description",fo=682,fn=931,fl="Typerep_lib__Std",fm="Ezjs_idb__Ezjs_idb_types",fj="Sexplib__Sexp_intf",fk=1159,fi=333,fh="Typeopt",fg=461,ff="Base__Comparable_intf",fe="Haz3lcore__Editor",fd="Haz3lcore__Elaborator",fc="Haz3lschool",fa=269,fb="Base_quickcheck__",e$="Fieldslib",e_="Parsexp__Parser_intf",e8="Haz3lweb__HoleTemplate",e9=767,e5=1202,e6="Haz3lcore__UExp",e7="Astlib__Migrate_410_411",e3="Ppx_yojson_conv_lib__Yojson_conv_error",e4=776,e2="Core__Pid",e1=518,eY="Core__Or_error",eZ=1148,e0=869,eX="Haz3lweb__ExerciseSettings_student",eW=738,eS=1070,eT="Stdlib__Lexing",eU="Incremental__Node",eV=1134,eP="Types",eQ=1156,eR=807,eN="Ppxlib__Ast_pattern_generated",eO=993,eM="Mtype",eK=924,eL=897,eI="Virtual_dom",eJ="Protocol_version_header",eH=243,eF="Primitive",eG="Core__Array",eE="Thread_safe_queue",eD="Haz3lcore__CoCtx",eB="Tuple_pool__Tuple_type_intf",eC="Dune__exe__Main",ez=1167,eA="Bin_prot__Type_class",eu="Virtual_dom__Global_listeners",ev=818,ew="Timing_wheel__",ex="Core__Binary_searchable",ey="Core__Command",et="Ptmap",eq=539,er="Ppxlib__Merlin_helpers",es="Ppxlib__",ep="Haz3lweb__Init",eo=994,em="Typerep_lib",en="Stdlib__Float",el="Base__Option_array",ek=143,ej="Base__Char",ei=721,ee="Includemod",ef=740,eg=923,eh="Attr_helper",ec=778,ed=732,ea=739,eb="Async_kernel__Job",d9=986,d_=291,d$=926,d8="Core__Set_once",d7=1241,d6=562,d4=1118,d5=146,d2=631,d3=423,d1="Stdlib__Format",d0="Base__Hash_intf",dY=1018,dZ="Astlib__Ast_411",dX="Pretty__Cost",dW=664,dV=1065,dU=976,dS="Weak_pointer",dT=177,dR=1068,dQ="Virtual_dom__Vdom",dP="Stdlib__Option",dO="Base__Uniform_array",dM=1326,dN="Core__Span_helpers",dL="Haz3lweb__DebugConsole",dJ="Base_quickcheck__Observer",dK="Astlib__Config",dI=219,dH="Ppxlib__Driver",dE=1041,dF=1269,dG=186,dC="Ppxlib__Name",dD=496,dz="Virtual_dom__Gen_js_api",dA=393,dB=1270,dx=428,dy="Async_kernel__Scheduler1",dw="Base__Int32",dv="Core__Binary_searchable_intf",du="Base__Array0",dt="Core__Bounded_index",ds=602,dr="Base__Hasher",dp="Js_of_ocaml__Dom_svg",dq="Async_rpc_kernel__Rpc_result",dn=747,dm=1320,dl=315,dj="Ppxlib_ast__Versions",dk="Astlib__Migrate_412_411",di=1164,de=465,df="Incremental__Step_function_node",dg=1318,dh=1138,dd="Astlib__Ast_403",da=1165,db="CamlinternalFormat",dc=196,c$=609,c_="Astlib__Ast_500",c6=1063,c7="Core__Make_stable",c8="Async_rpc_kernel__Transport_intf",c9=929,c5=281,c4=989,c3=1199,c2=624,c1=1140,cZ=992,c0="Haz3lcore__Siblings",cY=462,cU=744,cV=800,cW=332,cX="Base__Ordered_collection_common0",cT=1172,cS=724,cQ="Targetint",cR=110,cO="Bin_prot__Read",cP=128,cN=1343,cL=1259,cM="Astlib__Migrate_405_404",cI="Omd_lexer",cJ="Incremental__Bind",cK="CamlinternalMenhirLib",cF=536,cG=1229,cH="Core__Int64",cD=1008,cE="Core__Blit_intf",cz=306,cA="Sexplib__Sexp_grammar_intf",cB="Incremental__Raised_exn",cC=638,cy="Parsexp__Parse_error",cx="Astlib__Stdlib0",cw=658,cu=581,cv="Haz3lcore__Effect",cp=234,cq="Typemod",cr=1222,cs="Haz3lweb__SegmentTree",ct=102,co=666,cl=418,cm=552,cn="Base__Linked_queue0",ck="Core__Zone_intf",cj="Base__Sign0",ci=1129,ch="Haz3lweb__HoleTPat",cf=1296,cg=1308,cd="Expect_test_config_types",ce="Core__Bigsubstring",cb="Sexplib__Conv_error",cc="Async_kernel__Tail",ca=396,b_=313,b$="Stdlib__Seq",b9="Core__Sign_or_nan",b7=1234,b8="Haz3lcore__Casts",b4="CamlinternalOO",b5="Shadow_stdlib",b6="Re__Perl",b2="Pretty__MeasuredLayout",b3="Haz3lweb__SerializedExamples",b1="Js_of_ocaml__Firebug",b0="Haz3lcore__TyDi",bZ=595,bY=918,bW="Core__Printf",bX=1224,bV=116,bU="Uri",bT="Haz3lcore__Token",bQ=528,bR="Ezjs_min__",bS=432,bO=159,bP=796,bK=535,bL="Incremental__On_update_handler",bM="Haz3lcore__Destruct",bN="Haz3lcore__CodeString",bJ=350,bI=835,bH=435,bF=401,bG=991,bD="Ppxlib_ast__Ast_helper_lite",bE=160,by=412,bz="Haz3lcore__Environment",bA="Core__Core_bin_prot",bB="Bin_shape_lib__Std",bC="Astlib__Migrate_406_407",bw=1325,bx=385,bv="UnionFind__UnionFindOverStore",bs=1207,bt="Async_kernel__Bvar",bu="Astlib__Ast_409",bq="Ppx_enumerate_lib",br="Haz3lweb",bp="Core__Hashable",bo="Haz3lweb__Log",bm="Haz3lcore__Unboxing",bn="Core__Span_ns",bk=262,bl=263,bj=983,bh=847,bi=1105,bg=770,bf=692,bd=471,be="Base_quickcheck",bc="Core__String_id",a$="Rec_check",ba="Core__Time",bb=511,a9="Thread_pool_cpu_affinity__Import",a_="Std_exit",a7="Util__Web",a8=850,a4="Incremental__Config",a5="Domainstate",a6="Core__Tuple",a1="Util__PairUtil",a2=316,a3="Jane_street_headers",aY="Stdlib__StringLabels",aZ=905,a0="Haz3lweb__RecTyp",aW="Base__List0",aX=1155,aV=855,aU=112,aS=1219,aT="Javascript_profiling",aR=140,aQ="Re__Pmark",aP="Incremental__Before_or_after",aN="Ppx_yojson_conv_expander__Attrs",aO="Expect_test_collector__Check_backtraces",aL=912,aM="Core__Robustly_comparable",aJ="Translclass",aK="Stdlib__Scanf",aI=727,aH="Incremental__Freeze",aG=214,aE=1182,aF=347,aC="Core__Host_and_port",aD=647,aB=763,ay=464,az=360,aA=364,ax=551,at=1075,au="Haz3lcore__PatternMatch",av=671,aw="Base__Avltree",as=440,ar="Stdlib__Bool",aq="Core__Quickcheck_intf",ao="Js_of_ocaml__Dom",ap=980,an="Ui_effect__Ui_effect_intf",am="Predef",al=457,aj="Typerep_lib__Type_generic",ak="Async_kernel__Deferred_sequence",ai="Core__Sign",ah=1285,ag="Core__Immediate_option_intf",ad="Stdlib__Oo",ae=271,af=694,ac=130,aa=441,ab="Ppxlib__Deriving",_=809,$=1084,Z=322,W=106,X=978,Y="Base__Hex_lexer",V=1329,S=1201,T="Core__Gc",U="Core__Byte_units0",R=578,P="Virtual_dom__",Q="Haz3lweb__VarTPat",N=1062,O=251,L=587,M="Haz3lcore__Pat",I="Sexplib__Conv",J="Js_of_ocaml__XmlHttpRequest",K="Async_js__Async_js0",D="Stdppx",E="Ppxlib__Ast_builder",F=1173,G=708,H="Base__Set_intf",B=1030,C=649,A="Astlib__Ast_410",z=979,y=705,x=434,v="Cmt_format",w=268,t="Typerep_lib__Typerep_obj",u=286,s="Async_rpc_kernel__Util",q=103,r="Async_kernel__Time_source_intf",l=294,m=420,n="Parsexp__Parsexp_intf",o="Core__Comparable_intf",p=890,j=142,k=785,i="Core__Command_intf",f=1015,g=574,h=769,e="Haz3lcore__TestMap",b=934,d=867,NT=a.jsoo_runtime,c=NT.caml_get_global_data();c.prim_count=b;var +NU=[0,[0,0,[2,v8],vG,0,1],[2,Mu],BR,0,2],NV=[2,xm],NW=[0,[0,[0,[0,0,[2,Lf],H4,0,1],[2,zE],iL,0,2],[2,ma],b,[0,0,[2,ya],FQ,0,1],3],[2,Cx],J5,[0,[0,[0,0,[2,jO],LF,0,1],[2,ue],NI,[0,0,[2,n2],rD,0,1],2],[2,qZ],AO,[0,0,[2,A3],0,0,1],3],4],NX=[0,0,[2,nD],hV,0,1],NY=[2,In],NZ=[0,[0,0,[2,Bu],qG,0,1],[2,KX],wi,[0,[0,0,[2,G8],E5,0,1],[2,dd],mB,0,2],3],N0=[0,[0,0,[2,dZ],tF,0,1],[2,wT],bJ,[0,0,[2,qq],aF,0,1],2],N1=[2,A],N2=[0,[0,0,[2,zi],Br,0,1],[2,uJ],sY,[0,0,[2,bu],sk,0,1],2],N3=[0,[0,[0,0,[2,gM],bx,0,1],[2,dK],la,0,2],[2,zh],q4,0,3],N4=[2,G_],N5=[0,0,[2,c_],yO,0,1],N6=[0,[0,0,[2,HX],ux,0,1],[2,jR],nb,[0,0,[2,cM],iC,0,1],2],N7=[2,Ls],N8=[0,0,[2,Gu],wv,[0,[0,0,[2,kb],tZ,0,1],[2,gs],ji,0,2],3],N9=[0,[0,0,[2,Nj],x_,0,1],[2,pf],aA,[0,0,[2,n1],jZ,0,1],2],N_=[2,kC],N$=[0,[0,0,[2,uc],o8,0,1],[2,bC],K4,[0,0,[2,yU],KE,0,1],2],Oa=[0,0,[2,jN],gE,0,1],Ob=[2,e7],Oc=[0,0,[2,x2],az,0,1],Od=[0,0,[2,By],ke,0,1],Oe=[2,oS],Of=[0,0,[2,dk],lr,0,1],Og=[0,[0,[0,[0,[0,0,[2,sb],vV,0,1],[2,xM],nk,[0,0,[2,K],ix,0,1],2],[2,yN],nE,[0,[0,0,[2,Ih],fy,0,1],[2,FT],Ms,0,2],3],[2,HW],wY,[0,0,[2,E7],td,[0,0,[2,Hn],Ez,0,1],2],4],[2,w7],uB,[0,[0,0,[2,L2],kX,[0,0,[2,jq],hx,0,1],2],[2,gY],pJ,[0,0,[2,C9],Jn,0,1],3],5],Oh=[2,cx],Oi=[0,[0,[0,0,[2,pX],qx,0,1],[2,mR],rI,[0,0,[2,LL],pv,0,1],2],[2,Hc],I7,[0,[0,0,[2,Af],s8,0,1],[2,IH],vL,[0,0,[2,mt],ug,0,1],2],3],Oj=[0,[0,[0,[0,0,[2,HF],d,0,1],[2,H7],FS,[0,0,[2,DF],gi,0,1],2],[2,K6],Lc,[0,0,[2,oL],KM,0,1],3],[2,Nw],IV,[0,[0,[0,0,[2,yX],p,[0,0,[2,pN],oy,0,1],2],[2,G7],h2,[0,0,[2,ak],s$,0,1],3],[2,no],MA,[0,0,[2,nM],AE,[0,0,[2,B2],iJ,0,1],2],4],5],Ok=[2,n7],Ol=[0,[0,0,[2,bt],yH,[0,0,[2,DK],Cr,[0,0,[2,og],Bq,0,1],2],3],[2,KB],tt,[0,0,[2,yf],Ft,[0,0,[2,ih],IM,0,1],2],4],Om=[0,[0,0,[2,Bx],oV,0,1],[2,fW],aV,[0,0,[2,L6],It,[0,[0,0,[2,DD],eL,0,1],[2,yb],nC,[0,0,[2,wy],AY,0,1],2],3],4],On=[2,gh],Oo=[0,[0,[0,0,[2,JR],nJ,0,1],[2,j5],jf,[0,0,[2,je],e0,0,1],2],[2,eb],ia,0,3],Op=[0,[0,0,[2,vU],Hu,[0,0,[2,Gb],qK,0,1],2],[2,zo],gg,[0,0,[2,cc],Eo,[0,0,[2,Dq],vQ,0,1],2],3],Oq=[2,dy],Or=[0,[0,[0,[0,0,[2,xL],MH,0,1],[2,wJ],I1,0,2],[2,CS],a8,[0,0,[2,E4],sy,0,1],3],[2,yw],ys,[0,0,[2,i5],NK,0,1],4],Os=[0,[0,[0,0,[2,oi],fn,0,1],[2,A2],F0,[0,0,[2,vH],AD,[0,0,[2,JA],d$,0,1],2],3],[2,fs],oW,[0,[0,0,[2,se],rH,0,1],[2,s7],bY,[0,0,[2,sN],eK,0,1],2],4],Ot=[2,p5],Ou=[0,[0,[0,0,[2,ve],Kz,0,1],[2,r],yr,0,2],[2,pw],Cs,0,3],Ov=[0,[0,[0,0,[2,lz],Gd,0,1],[2,jE],CA,0,2],[2,IL],88,[0,[0,0,[2,DB],BZ,0,1],[2,xR],aU,[0,0,[2,sI],tb,0,1],2],3],Ow=[2,eh],Ox=[0,[0,[0,0,[2,jX],ll,[0,[0,0,[2,Eg],Ah,0,1],[2,ng],c9,0,2],3],[2,ph],rk,[0,[0,0,[2,Ik],Gi,0,1],[2,vc],ze,[0,0,[2,dq],z$,0,1],2],4],[2,pQ],pc,[0,[0,0,[2,c8],Ia,0,1],[2,s],eg,[0,[0,0,[2,jh],xh,0,1],[2,vk],zR,0,2],3],5],Oy=[0,[0,0,[2,ML],zD,0,1],[2,x1],AU,[0,0,[2,kJ],wG,0,1],2],Oz=[2,iX],OA=[0,0,[2,gt],gp,[0,0,[2,aw],FO,[0,0,[2,FC],kj,0,1],2],3],OB=[0,[0,0,[2,IU],Gx,0,1],[2,ej],nN,0,2],OC=[2,K9],OD=[0,[0,0,[2,vo],rE,[0,0,[2,xg],dI,0,1],2],[2,w8],sU,[0,0,[2,qJ],uE,0,1],3],OE=[2,ff],OF=[0,0,[2,gr],ek,0,1],OG=[2,Ae],OH=[2,mv],OI=[0,0,[2,Cb],tY,0,1],OJ=[2,IG],OK=[0,0,[2,pY],mY,0,1],OL=[0,0,[2,NC],E3,0,1],OM=[2,qd],ON=[0,[0,0,[2,sF],z_,[0,0,[2,k$],gK,0,1],2],[2,HY],sP,[0,0,[2,r_],vd,0,1],3],OO=[0,[0,[0,0,[2,sz],IF,0,1],[2,fF],aG,0,2],[2,Bb],zg,0,3],OP=[2,d0],OQ=[0,0,[2,Bp],98,0,1],OR=[0,[0,0,[2,fE],C$,0,1],[2,v5],HT,[0,0,[2,B$],ct,0,1],2],OS=[2,Y],OT=[0,0,[2,dr],oD,[0,[0,0,[2,oZ],Ks,0,1],[2,zC],JF,0,2],3],OU=[0,0,[2,qu],gU,[0,0,[2,EK],oX,0,1],2],OV=[2,Jf],OW=[0,[0,0,[2,GT],xe,0,1],[2,Gs],bE,0,2],OX=[0,[0,0,[2,Ll],oq,[0,0,[2,CL],nU,0,1],2],[2,rp],dT,[0,0,[2,jz],hU,0,1],3],OY=[2,mz],OZ=[0,[0,0,[2,dw],lB,[0,0,[2,rC],pl,0,1],2],[2,Fe],kp,[0,0,[2,B_],FR,0,1],3],O0=[0,0,[2,vv],H0,0,1],O1=[2,cn],O2=[0,0,[2,BX],EF,[0,0,[2,jQ],Bk,0,1],2],O3=[0,0,[2,r9],hd,0,1],O4=[2,kv],O5=[0,0,[2,Bt],p1,[0,[0,0,[2,kg],rz,0,1],[2,BA],i$,0,2],3],O6=[0,0,[2,el],o1,0,1],O7=[2,L1],O8=[0,[0,[0,0,[2,iE],po,0,1],[2,yx],FD,0,2],[2,DJ],oz,0,3],O9=[0,0,[2,m2],AT,0,1],O_=[2,cX],O$=[0,0,[2,u3],Gg,0,1],Pa=[2,t5],Pb=[0,0,[2,J1],z9,0,1],Pc=[0,0,[2,s_],Dz,0,1],Pd=[2,ku],Pe=[0,0,[2,Kw],M4,0,1],Pf=[0,0,[2,wD],uH,0,1],Pg=[2,K8],Ph=[0,[0,[0,0,[2,Jg],wr,0,1],[2,lI],wf,0,2],[2,Gr],ac,0,3],Pi=[0,[0,0,[2,of],Iy,0,1],[2,H],dc,0,2],Pj=[2,LV],Pk=[0,[0,[0,0,[2,FN],zs,0,1],[2,l2],ol,0,2],[2,f9],FY,[0,0,[2,Bo],f8,0,1],3],Pl=[2,s9],Pm=[0,[0,[0,0,[2,q1],L_,0,1],[2,lw],GO,[0,0,[2,uM],q3,0,1],2],[2,cj],At,[0,[0,0,[2,hA],vT,0,1],[2,o$],gT,0,2],3],Pn=[2,j6],Po=[0,0,[2,uw],d5,0,1],Pp=[0,0,[2,Dj],pr,0,1],Pq=[2,tH],Pr=[0,[0,0,[2,nG],dG,0,1],[2,M3],sK,0,2],Ps=[2,ij],Pt=[0,0,[2,tf],q,0,1],Pu=[2,Ad],Pv=[0,0,[2,uI],rZ,0,1],Pw=[0,0,[2,EE],Iq,0,1],Px=[2,nO],Py=[0,0,[2,Ei],y0,[0,[0,0,[2,tm],mk,0,1],[2,EC],kf,0,2],3],Pz=[0,[0,[0,0,[2,L3],Mw,0,1],[2,NP],yJ,0,2],[2,kV],bZ,[0,0,[2,yV],ld,0,1],3],PA=[2,Ip],PB=[0,[0,[0,0,[2,be],Cd,0,1],[2,fb],gI,0,2],[2,zk],yj,[0,[0,[0,0,[2,DA],Kq,0,1],[2,w6],iQ,[0,0,[2,dJ],ds,0,1],2],[2,rh],KH,0,3],4],PC=[0,[0,0,[2,CQ],nX,0,1],[2,fr],q8,0,2],PD=[2,zu],PE=[0,0,[2,CE],Hf,[0,0,[2,EH],H$,0,1],2],PF=[0,[0,[0,0,[2,hH],Jz,0,1],[2,eA],wS,[0,0,[2,LD],uW,0,1],2],[2,L4],bb,[0,0,[2,w0],ov,0,1],3],PG=[2,GA],PH=[0,0,[2,g_],qA,0,1],PI=[0,[0,0,[2,LO],q6,[0,0,[2,sH],oK,0,1],2],[2,HA],78,[0,0,[2,db],48,[0,0,[2,Cc],12,0,1],2],3],PJ=[2,k1],PK=[0,[0,0,[2,Bj],ki,[0,0,[2,bB],vK,0,1],2],[2,oU],iZ,[0,0,[2,E2],nx,0,1],3],PL=[2,cK],PM=[0,0,[2,MP],op,[0,0,[2,n8],NS,0,1],2],PN=[2,m0],PO=[0,0,[2,my],xf,0,1],PP=[0,[0,0,[2,CR],cW,0,1],[2,DV],ES,0,2],PQ=[2,yc],PR=[0,[0,[0,0,[2,r$],uX,0,1],[2,iG],Lb,[0,[0,0,[2,iN],bP,0,1],[2,rB],Mr,0,2],3],[2,I$],gZ,[0,[0,[0,0,[2,ce],FA,0,1],[2,hM],Fz,0,2],[2,Iv],nz,0,3],4],PS=[2,eG],PT=[0,[0,0,[2,AS],Ax,[0,0,[2,EG],cV,0,1],2],[2,tK],th,[0,0,[2,rX],Hd,0,1],3],PU=[0,[0,[0,0,[2,DY],Gw,[0,0,[2,ey],D2,0,1],2],[2,El],M9,[0,[0,0,[2,i],mF,0,1],[2,fI],HP,[0,0,[2,xX],Dv,0,1],2],3],[2,tQ],iW,[0,[0,0,[2,o],hz,0,1],[2,vM],AR,[0,0,[2,l4],jI,0,1],2],4],PV=[2,k4],PW=[0,[0,[0,0,[2,ex],c2,0,1],[2,dv],uq,[0,[0,0,[2,fx],jo,0,1],[2,IX],jt,0,2],3],[2,cE],qS,[0,[0,0,[2,F5],yt,[0,[0,0,[2,dt],Hm,0,1],[2,zK],JQ,0,2],3],[2,Lp],F1,[0,0,[2,U],kP,0,1],4],5],PX=[0,[0,[0,[0,[0,0,[2,p_],Jq,0,1],[2,il],vD,0,2],[2,nW],CX,[0,0,[2,Es],gl,0,1],3],[2,K2],qz,[0,0,[2,kl],qt,0,1],4],[2,iH],cC,[0,[0,[0,0,[2,tu],Ny,0,1],[2,MR],qs,[0,0,[2,GR],aB,0,1],2],[2,FP],GL,[0,0,[2,z5],h$,[0,0,[2,pA],ed,0,1],2],3],5],PY=[2,Hi],PZ=[0,[0,[0,0,[2,bA],tv,0,1],[2,tq],fo,[0,[0,0,[2,mP],Hg,0,1],[2,Fp],lH,0,2],3],[2,IB],g4,[0,[0,0,[2,n5],LC,[0,0,[2,kU],Fh,0,1],2],[2,zQ],ei,[0,0,[2,kA],Fx,[0,0,[2,Cu],Go,0,1],2],3],4],P0=[0,[0,[0,0,[2,bp],pI,0,1],[2,sO],av,0,2],[2,NG],BK,[0,[0,0,[2,v_],aD,[0,[0,0,[2,lc],jV,0,1],[2,F8],Kg,0,2],3],[2,rN],oP,[0,[0,[0,0,[2,aC],v0,0,1],[2,ri],lJ,0,2],[2,A8],hT,[0,[0,0,[2,yi],Fr,0,1],[2,ag],aI,0,2],3],4],5],P1=[2,Nn],P2=[0,[0,[0,0,[2,Nc],nT,[0,0,[2,T],k6,0,1],2],[2,h5],FE,0,3],[2,nn],LN,[0,0,[2,ms],Je,0,1],4],P3=[0,[0,[0,0,[2,tz],oF,0,1],[2,xG],Gv,[0,0,[2,u2],af,[0,0,[2,pk],A_,0,1],2],3],[2,ob],Mm,[0,[0,0,[2,rG],iw,[0,[0,0,[2,c7],Aw,0,1],[2,mp],k3,0,2],3],[2,uD],tD,[0,0,[2,HJ],iq,0,1],4],5],P4=[2,cH],P5=[0,[0,[0,0,[2,A9],Fd,0,1],[2,M2],fA,[0,0,[2,G6],yM,0,1],2],[2,hR],oY,[0,0,[2,Jv],uP,0,1],3],P6=[0,[0,[0,0,[2,GJ],ie,0,1],[2,DT],gW,[0,0,[2,pu],eW,[0,0,[2,pV],zv,[0,0,[2,I6],ox,0,1],2],3],4],[2,uu],gN,[0,[0,[0,0,[2,ho],wU,0,1],[2,LM],MG,0,2],[2,rU],dW,0,3],5],P7=[2,LA],P8=[0,[0,[0,0,[2,p8],H6,0,1],[2,G3],y,[0,[0,0,[2,tE],k,0,1],[2,j4],cS,[0,0,[2,zr],Ng,0,1],2],3],[2,Is],H2,[0,0,[2,zP],zl,[0,0,[2,H_],gH,0,1],2],4],P9=[0,[0,0,[2,yF],FW,0,1],[2,gu],iI,[0,0,[2,e2],rP,[0,0,[2,zj],qh,0,1],2],3],P_=[2,mn],P$=[0,0,[2,MX],Bn,0,1],Qa=[0,[0,0,[2,aM],Gq,0,1],[2,MU],kB,[0,[0,0,[2,lZ],cw,0,1],[2,ru],mh,[0,[0,0,[2,d8],nA,0,1],[2,ml],G5,0,2],3],4],Qb=[2,Eu],Qc=[0,[0,[0,0,[2,qp],e4,[0,0,[2,Ee],Hh,0,1],2],[2,DU],xE,0,3],[2,aq],m8,[0,[0,0,[2,Fo],u$,0,1],[2,nm],C,[0,0,[2,Ed],xk,0,1],2],4],Qd=[0,[0,[0,0,[2,Mz],bg,0,1],[2,si],ME,[0,[0,0,[2,ly],h,0,1],[2,H9],BV,0,2],3],[2,hc],fq,[0,[0,[0,0,[2,bc],Ix,0,1],[2,JT],e9,0,2],[2,Iu],xY,[0,0,[2,lP],DS,0,1],3],4],Qe=[2,Km],Qf=[0,[0,[0,[0,0,[2,ai],yv,[0,0,[2,b9],jm,0,1],2],[2,yS],ec,[0,0,[2,gJ],lb,0,1],3],[2,JW],p0,[0,0,[2,tn],F_,0,1],4],[2,dN],gw,[0,[0,0,[2,x5],nQ,[0,0,[2,bn],dn,[0,0,[2,vb],vZ,0,1],2],3],[2,NR],Bg,[0,0,[2,Mg],rs,[0,0,[2,IO],yz,0,1],2],4],5],Qg=[0,[0,[0,0,[2,xC],gn,0,1],[2,GM],Ea,0,2],[2,xQ],co,[0,[0,0,[2,ul],km,0,1],[2,Mb],Hj,0,2],3],Qh=[2,ye],Qi=[0,[0,[0,0,[2,ba],kz,0,1],[2,Fa],ea,[0,[0,0,[2,ii],Et,0,1],[2,FU],uo,0,2],3],[2,A5],ef,[0,[0,[0,0,[2,tk],ID,[0,0,[2,sM],uk,0,1],2],[2,J0],cU,0,3],[2,a6],KA,[0,0,[2,oT],zW,0,1],4],5],Qj=[0,[0,0,[2,AC],t$,0,1],[2,Cz],G,[0,[0,0,[2,ck],hK,[0,0,[2,m1],eR,0,1],2],[2,py],FZ,[0,[0,0,[2,F4],u1,0,1],[2,it],Jm,0,2],3],4],Qk=[2,GE],Ql=[0,[0,[0,0,[2,Lo],JZ,0,1],[2,pU],y1,0,2],[2,o0],kn,0,3],Qm=[0,[0,[0,[0,0,[2,m7],GS,0,1],[2,I3],fX,0,2],[2,a5],qy,[0,0,[2,eC],cN,0,1],3],[2,yh],2,[0,0,[2,DO],tl,[0,0,[2,C5],Nl,0,1],2],4],Qn=[2,mo],Qo=[0,[0,0,[2,Ds],ae,[0,0,[2,Lw],Dh,0,1],2],[2,Ay],id,[0,0,[2,u4],yl,[0,0,[2,Hq],eH,0,1],2],3],Qp=[0,[0,0,[2,wO],uV,0,1],[2,vy],t3,0,2],Qq=[2,E_],Qr=[0,[0,[0,0,[2,C8],xP,0,1],[2,z0],fC,[0,0,[2,aO],D$,0,1],2],[2,n0],tJ,0,3],Qs=[0,[0,0,[2,fm],jG,0,1],[2,pj],kd,0,2],Qt=[2,xD],Qu=[0,[0,[0,0,[2,o4],vO,0,1],[2,cd],rr,0,2],[2,xW],mr,[0,[0,0,[2,gv],xJ,0,1],[2,x8],oh,0,2],3],Qv=[0,0,[2,v4],oQ,0,1],Qw=[2,lA],Qx=[2,nu],Qy=[0,[0,0,[2,f$],z3,0,1],[2,vu],xr,0,2],Qz=[0,[0,0,[2,zN],jD,[0,0,[2,wl],fk,0,1],2],[2,rx],DM,[0,[0,0,[2,ka],Ig,0,1],[2,vB],uO,0,2],3],QA=[2,CD],QB=[0,[0,0,[2,e$],AW,0,1],[2,ED],lF,[0,[0,0,[2,E1],eQ,0,1],[2,wF],xT,0,2],3],QC=[0,[0,[0,0,[2,fd],lv,0,1],[2,bz],Ch,[0,[0,0,[2,wN],eZ,[0,0,[2,gX],vA,0,1],2],[2,ip],A0,[0,[0,0,[2,n$],wA,0,1],[2,GG],ez,[0,0,[2,kO],mM,0,1],2],3],4],[2,yu],oe,[0,[0,[0,0,[2,Bv],un,0,1],[2,r2],L9,[0,0,[2,g$],fK,[0,0,[2,w5],Cw,0,1],2],3],[2,wQ],JE,[0,0,[2,NF],$,0,1],4],5],QD=[2,cv],QE=[0,[0,[0,0,[2,AQ],qf,[0,[0,0,[2,jn],AB,0,1],[2,b8],Ba,[0,0,[2,M1],qF,0,1],2],3],[2,L8],Nf,[0,[0,0,[2,eD],ow,[0,0,[2,bN],Ck,0,1],2],[2,CU],Jj,0,3],4],[2,mA],h1,[0,[0,[0,0,[2,qY],fB,0,1],[2,Dr],z8,[0,0,[2,yk],ci,0,1],2],[2,xn],nZ,[0,0,[2,rM],yg,[0,[0,0,[2,bM],Fw,0,1],[2,fe],da,[0,0,[2,MC],v2,0,1],2],3],4],5],QF=[0,[0,[0,0,[2,vq],lS,0,1],[2,Nk],pH,0,2],[2,oJ],xF,[0,0,[2,Gz],pB,0,1],3],QG=[2,Gf],QH=[0,0,[2,Jx],LS,[0,[0,0,[2,g6],Ma,0,1],[2,x9],cT,0,2],3],QI=[0,[0,0,[2,LG],st,[0,0,[2,ic],f7,0,1],2],[2,Js],Hz,[0,0,[2,qI],hD,0,1],3],QJ=[2,xd],QK=[0,[0,0,[2,IK],di,0,1],[2,mj],bi,[0,0,[2,vj],jF,[0,0,[2,hs],Cq,[0,0,[2,Im],fD,0,1],2],3],4],QL=[0,[0,[0,[0,0,[2,hJ],L0,[0,0,[2,I5],aE,0,1],2],[2,Kj],Kb,[0,[0,0,[2,Dp],hn,0,1],[2,ko],s1,0,2],3],[2,NM],wC,[0,[0,[0,0,[2,oB],mm,0,1],[2,GF],JS,[0,0,[2,Mj],ra,0,1],2],[2,z7],xq,[0,[0,0,[2,e],uA,[0,0,[2,Nt],vm,0,1],2],[2,ww],fp,0,3],4],5],[2,Ln],hP,[0,[0,[0,[0,0,[2,wE],z2,0,1],[2,Fu],L5,0,2],[2,bT],EB,[0,0,[2,Ky],Dl,[0,0,[2,HL],pg,[0,0,[2,b0],vp,0,1],2],3],4],[2,Na],BD,[0,[0,[0,0,[2,qw],aX,0,1],[2,e6],Ga,[0,0,[2,is],c1,0,1],2],[2,qR],MD,[0,0,[2,bm],GN,0,1],3],5],6],QM=[2,or],QN=[0,[0,[0,[0,[0,0,[2,iF],mO,0,1],[2,M],nB,0,2],[2,au],wI,[0,[0,[0,0,[2,If],AJ,0,1],[2,KT],tP,0,2],[2,Mv],I4,0,3],4],[2,CP],NB,[0,[0,0,[2,KV],wj,[0,[0,0,[2,Co],EQ,0,1],[2,Jd],F,0,2],3],[2,vY],fS,[0,[0,0,[2,JP],eV,0,1],[2,tc],xx,0,2],4],5],[2,ET],JV,[0,[0,[0,0,[2,qU],rS,0,1],[2,xj],y8,[0,0,[2,x7],dh,[0,0,[2,uh],vh,0,1],2],3],[2,c0],Di,[0,0,[2,Ao],qk,0,1],4],6],QO=[0,[0,[0,[0,[0,[0,0,[2,G9],pn,0,1],[2,JO],to,[0,0,[2,pS],m_,[0,0,[2,DX],hr,0,1],2],3],[2,Ef],gA,[0,0,[2,Jp],sh,[0,0,[2,ib],HK,0,1],2],4],[2,Dm],vP,[0,[0,[0,0,[2,sB],Ja,[0,0,[2,g1],lU,0,1],2],[2,HI],g3,[0,[0,0,[2,FJ],AA,0,1],[2,JN],Eq,0,2],3],[2,vJ],uf,[0,[0,0,[2,pP],v7,0,1],[2,od],ah,[0,0,[2,Cn],cg,[0,0,[2,Ag],LR,0,1],2],3],4],5],[2,dL],o6,[0,[0,0,[2,zB],yA,0,1],[2,y7],K7,[0,[0,0,[2,CK],D8,0,1],[2,hY],EV,[0,0,[2,y$],lV,0,1],2],3],6],[2,H8],r8,[0,[0,[0,[0,0,[2,Dg],sa,0,1],[2,tV],nt,0,2],[2,IR],b7,[0,[0,0,[2,AZ],Ex,0,1],[2,qQ],gz,0,2],3],[2,rO],ta,[0,[0,0,[2,xv],lY,[0,[0,0,[2,EN],qT,0,1],[2,pW],iA,0,2],3],[2,m4],lq,[0,[0,[0,0,[2,qm],mG,0,1],[2,eX],nq,0,2],[2,vn],Jr,[0,0,[2,k8],vI,0,1],3],4],5],7],QP=[2,br],QQ=[0,[0,[0,[0,[0,0,[2,BH],IE,0,1],[2,DI],d4,0,2],[2,lg],DW,[0,[0,0,[2,Ge],wX,0,1],[2,K1],JY,0,2],3],[2,KL],hb,[0,0,[2,jv],hL,0,1],4],[2,fc],u9,[0,[0,0,[2,AF],ty,[0,[0,0,[2,J8],EP,0,1],[2,J4],s0,0,2],3],[2,mZ],oG,[0,0,[2,xc],sT,0,1],4],5],QR=[0,[0,[0,[0,0,[2,sx],CH,[0,0,[2,tp],gQ,0,1],2],[2,Lr],qE,[0,[0,0,[2,a0],t2,0,1],[2,hu],qH,0,2],3],[2,GY],lj,[0,[0,0,[2,iz],cf,0,1],[2,cs],i0,[0,[0,0,[2,pF],oI,0,1],[2,b3],q0,0,2],3],4],[2,Gh],Ht,[0,[0,[0,0,[2,kr],zx,0,1],[2,wd],t_,0,2],[2,j_],so,[0,0,[2,ge],wK,0,1],3],5],QS=[2,NL],QT=[0,[0,[0,[0,[0,0,[2,mD],d7,0,1],[2,tR],rV,0,2],[2,AP],zU,[0,[0,0,[2,gS],AK,0,1],[2,sl],Np,[0,0,[2,h_],MT,0,1],2],3],[2,lk],o3,[0,[0,0,[2,lR],V,0,1],[2,nS],D6,[0,0,[2,ub],q2,0,1],2],4],[2,pt],jw,[0,[0,[0,0,[2,Mh],dg,[0,0,[2,kc],zA,[0,0,[2,ch],dm,0,1],2],3],[2,e8],lW,[0,[0,0,[2,Be],Hb,0,1],[2,uY],Db,[0,0,[2,jr],HS,0,1],2],4],[2,ep],G0,[0,[0,[0,0,[2,h4],DE,[0,0,[2,M8],BF,[0,0,[2,li],kF,0,1],2],3],[2,f1],A$,[0,[0,0,[2,Eb],uj,0,1],[2,s5],xi,[0,0,[2,jJ],bw,[0,0,[2,Ne],dM,0,1],2],3],4],[2,bo],Ku,[0,[0,[0,[0,0,[2,y6],EJ,0,1],[2,No],sE,0,2],[2,kx],mN,0,3],[2,F3],lf,[0,[0,0,[2,Me],Hs,0,1],[2,f_],sL,[0,0,[2,A7],CM,[0,0,[2,vW],jH,0,1],2],3],4],5],6],7],QU=[0,[0,[0,[0,0,[2,Kx],D1,0,1],[2,MW],nI,[0,0,[2,E0],cL,0,1],2],[2,Ii],KQ,[0,[0,0,[2,MQ],sA,0,1],[2,Q],IQ,0,2],3],[2,wW],cG,[0,[0,[0,0,[2,Hx],B8,0,1],[2,I_],tw,[0,0,[2,kH],bX,0,1],2],[2,yq],l7,[0,0,[2,nY],F2,[0,0,[2,Nv],c5,0,1],2],3],4],QV=[2,gD],QW=[0,[0,[0,[0,[0,0,[2,Li],px,0,1],[2,oc],BE,0,2],[2,Ns],M0,0,3],[2,My],u7,[0,0,[2,v6],C3,0,1],4],[2,vx],dB,[0,[0,[0,0,[2,JI],dF,0,1],[2,yd],vR,[0,0,[2,hq],v3,0,1],2],[2,lE],C2,[0,[0,0,[2,Nx],fU,0,1],[2,Lz],Fb,[0,0,[2,gk],Av,0,1],2],3],5],QX=[0,[0,0,[2,hE],lT,[0,[0,0,[2,vt],l_,0,1],[2,iV],K_,[0,0,[2,n9],Jc,0,1],2],3],[2,pO],iv,[0,0,[2,sC],k2,[0,0,[2,zq],KU,0,1],2],4],QY=[2,rW],QZ=[0,[0,[0,0,[2,ee],d_,0,1],[2,o5],D0,[0,[0,0,[2,xO],uG,0,1],[2,LB],hp,[0,0,[2,Cl],tj,0,1],2],3],[2,gd],mE,[0,[0,0,[2,gR],cD,0,1],[2,LP],ky,[0,[0,0,[2,pm],ga,0,1],[2,qC],jd,0,2],3],4],Q0=[0,[0,0,[2,cJ],lt,[0,[0,0,[2,a4],IA,0,1],[2,C7],BT,0,2],3],[2,qD],f0,[0,[0,0,[2,GC],EZ,0,1],[2,z1],n4,[0,[0,0,[2,Du],cZ,0,1],[2,aH],X,[0,0,[2,oa],z,0,1],2],3],4],Q1=[2,aP],Q2=[0,[0,0,[2,fZ],d9,0,1],[2,sZ],IT,[0,0,[2,kN],iM,[0,0,[2,IY],pi,0,1],2],3],Q3=[0,[0,[0,[0,[0,0,[2,An],bG,0,1],[2,df],qP,0,2],[2,s4],zL,[0,0,[2,v$],s3,0,1],3],[2,Lh],x6,[0,0,[2,sW],ns,0,1],4],[2,fJ],tB,[0,0,[2,KF],CW,[0,0,[2,ls],Cg,0,1],2],5],Q4=[2,Id],Q5=[0,[0,[0,[0,[0,0,[2,f4],eo,0,1],[2,m6],c4,0,2],[2,hW],ap,0,3],[2,Ld],HC,[0,[0,0,[2,eU],bj,0,1],[2,n3],Jh,[0,0,[2,D9],NA,0,1],2],4],[2,bL],lX,[0,[0,0,[2,cB],Fc,[0,0,[2,Mc],o_,[0,0,[2,jS],eO,0,1],2],3],[2,ou],Kd,[0,0,[2,oR],dU,[0,0,[2,hI],jy,0,1],2],4],5],Q6=[0,[0,[0,0,[2,zG],um,0,1],[2,pz],Kp,[0,0,[2,dp],yo,[0,0,[2,sV],C0,0,1],2],3],[2,Hw],Dd,[0,[0,0,[2,b1],wz,0,1],[2,GX],gc,[0,0,[2,KG],uz,0,1],2],4],Q7=[2,ao],Q8=[0,[0,[0,0,[2,a3],Mx,[0,0,[2,aT],sQ,0,1],2],[2,CO],EI,0,3],[2,Ev],iy,[0,0,[2,p4],de,0,1],4],Q9=[0,[0,[0,0,[2,AH],al,0,1],[2,hC],oE,0,2],[2,w1],Hp,0,3],Q_=[2,rd],Q$=[0,[0,[0,[0,0,[2,HO],bd,[0,0,[2,qc],EX,0,1],2],[2,Am],Dy,[0,[0,0,[2,g9],ay,0,1],[2,m3],Nd,0,2],3],[2,KZ],tx,[0,[0,0,[2,hg],cY,0,1],[2,gy],fg,0,2],4],[2,kG],l3,[0,[0,0,[2,wZ],Mt,0,1],[2,Dt],Ml,0,2],5],Ra=[0,[0,[0,0,[2,KP],vr,0,1],[2,Mi],Ki,0,2],[2,DH],Er,[0,[0,0,[2,lu],D5,0,1],[2,tA],wx,0,2],3],Rb=[2,KY],Rc=[0,0,[2,J],sg,[0,0,[2,wV],Ey,0,1],2],Rd=[0,[0,0,[2,sd],E9,[0,[0,0,[2,qv],dD,0,1],[2,Eh],Z,0,2],3],[2,uy],Mf,[0,[0,[0,0,[2,z6],uQ,0,1],[2,BI],kh,[0,0,[2,yK],yC,0,1],2],[2,eM],o9,0,3],4],Re=[2,MM],Rf=[0,[0,0,[2,fM],H3,0,1],[2,Lg],Bi,[0,0,[2,kZ],BJ,[0,0,[2,rK],Jy,0,1],2],3],Rg=[0,[0,[0,[0,[0,0,[2,kT],ts,0,1],[2,GI],zd,[0,0,[2,CJ],cr,0,1],2],[2,cI],aS,[0,[0,0,[2,J_],LJ,0,1],[2,Ic],h7,0,2],3],[2,sD],ss,[0,0,[2,FM],Ie,0,1],4],[2,nF],qX,[0,0,[2,qM],pb,[0,0,[2,Gc],w,0,1],2],5],Rh=[2,GW],Ri=[0,[0,[0,0,[2,p6],CB,0,1],[2,zT],fi,0,2],[2,KD],ca,[0,0,[2,oH],t9,0,1],3],Rj=[0,[0,0,[2,BN],LX,0,1],[2,Hr],pq,[0,0,[2,ig],nl,[0,[0,0,[2,Al],mQ,0,1],[2,AG],MJ,[0,0,[2,q9],lC,0,1],2],3],4],Rk=[2,J9],Rl=[0,[0,[0,[0,0,[2,A4],gq,0,1],[2,wB],ir,0,2],[2,I0],gj,0,3],[2,rF],O,[0,[0,[0,0,[2,jl],zI,0,1],[2,nh],ax,[0,0,[2,j9],Cv,0,1],2],[2,tX],HH,[0,[0,0,[2,l1],Gl,0,1],[2,fO],rm,0,2],3],4],Rm=[0,[0,0,[2,wM],o7,[0,[0,0,[2,DC],aZ,0,1],[2,L$],wn,[0,0,[2,CV],pM,0,1],2],3],[2,k5],Ka,[0,0,[2,KO],hf,0,1],4],Rn=[2,zz],Ro=[0,[0,[0,0,[2,Kh],cm,[0,0,[2,BM],M7,0,1],2],[2,g8],d6,[0,0,[2,cy],zY,0,1],3],[2,r7],zw,[0,[0,[0,0,[2,kM],iU,0,1],[2,e_],w$,[0,0,[2,n],fH,0,1],2],[2,wp],AM,0,3],4],Rp=[0,[0,[0,0,[2,Ji],wb,0,1],[2,oA],Mn,0,2],[2,IN],vg,[0,[0,[0,0,[2,Ek],vw,[0,0,[2,xV],vC,0,1],2],[2,mI],vz,[0,[0,0,[2,Ni],B5,0,1],[2,yL],na,[0,0,[2,p9],Jw,0,1],2],3],[2,Hl],lQ,[0,0,[2,kW],as,0,1],4],5],Rq=[2,bq],Rr=[0,[0,[0,0,[2,ln],qo,0,1],[2,pp],B1,0,2],[2,GP],J7,[0,[0,[0,0,[2,EA],g0,0,1],[2,jM],wg,0,2],[2,A1],Hv,[0,0,[2,rj],HE,[0,0,[2,qB],gB,0,1],2],3],4],Rs=[0,[0,0,[2,E],i2,0,1],[2,Ij],GK,[0,0,[2,lp],p7,[0,0,[2,Gn],kE,0,1],2],3],Rt=[2,es],Ru=[0,[0,[0,0,[2,aN],Mq,0,1],[2,uU],GB,[0,0,[2,Kr],sw,0,1],2],[2,lN],Ar,[0,[0,0,[2,qn],zb,[0,0,[2,e3],B,0,1],2],[2,J3],FL,[0,0,[2,kI],xb,0,1],3],4],Rv=[0,[0,0,[2,mC],AN,[0,[0,0,[2,ab],jU,0,1],[2,dH],rv,0,2],3],[2,ut],tI,[0,[0,0,[2,Lq],x,0,1],[2,B7],w4,[0,0,[2,np],bS,0,1],2],4],Rw=[2,lh],Rx=[0,[0,0,[2,eN],Ab,[0,0,[2,MO],m,0,1],2],[2,zZ],y4,[0,[0,0,[2,KS],BL,0,1],[2,Lm],Md,[0,[0,0,[2,jT],d3,0,1],[2,kw],cl,0,2],3],4],Ry=[0,[0,[0,[0,0,[2,Dc],kQ,0,1],[2,h0],MK,0,2],[2,pL],II,[0,0,[2,nr],lL,0,1],3],[2,wh],by,[0,0,[2,Ca],y3,0,1],4],Rz=[2,dC],RA=[0,[0,[0,0,[2,uL],bH,0,1],[2,Fs],F$,0,2],[2,CC],r6,[0,[0,0,[2,rl],fV,0,1],[2,Ak],i3,[0,0,[2,er],dx,0,1],2],3],RB=[0,[0,0,[2,dj],kt,0,1],[2,ud],K5,[0,0,[2,BQ],vl,[0,0,[2,qj],M6,0,1],2],3],RC=[2,pZ],RD=[0,[0,0,[2,LU],FI,[0,0,[2,pE],dA,0,1],2],[2,bD],xp,[0,0,[2,BY],f3,[0,0,[2,La],F9,0,1],2],3],RE=[0,[0,0,[2,HR],c3,0,1],[2,iB],wq,[0,0,[2,eF],bl,0,1],2],RF=[2,k9],RG=[0,[0,0,[2,Fn],p3,[0,[0,0,[2,om],mX,0,1],[2,dX],h9,[0,0,[2,kL],He,0,1],2],3],[2,gC],e5,[0,[0,[0,0,[2,l0],bs,0,1],[2,ti],oN,[0,0,[2,b2],za,0,1],2],[2,k7],S,0,3],4],RH=[0,[0,0,[2,eJ],HB,0,1],[2,Az],yZ,0,2],RI=[2,gG],RJ=[0,[0,[0,0,[2,xS],rT,0,1],[2,F6],l,0,2],[2,KK],r1,[0,0,[2,Fm],FB,0,1],3],RK=[0,[0,0,[2,uv],hG,0,1],[2,Hk],pG,[0,0,[2,iR],p2,0,1],2],RL=[2,et],RM=[0,[0,0,[2,wu],kD,0,1],[2,u5],fG,0,2],RN=[0,[0,[0,0,[2,xl],c6,0,1],[2,he],FV,[0,[0,0,[2,C4],dV,0,1],[2,b6],xw,0,2],3],[2,aQ],iP,[0,[0,[0,0,[2,gF],zV,0,1],[2,jk],N,0,2],[2,a$],MS,[0,0,[2,xB],Fl,0,1],3],4],RO=[2,xN],RP=[0,[0,0,[2,sv],K$,[0,0,[2,IZ],rc,0,1],2],[2,Bs],HQ,[0,0,[2,le],zp,0,1],3],RQ=[0,0,[2,jW],83,[0,0,[2,Ib],84,0,1],2],RR=[2,Ko],RS=[0,[0,[0,0,[2,wP],LZ,0,1],[2,Bd],g,0,2],[2,DN],86,[0,0,[2,fR],79,0,1],3],RT=[0,[0,0,[2,nc],G1,0,1],[2,n6],GU,[0,[0,0,[2,wt],B3,0,1],[2,b5],87,0,2],3],RU=[2,n_],RV=[0,[0,[0,0,[2,CG],81,0,1],[2,Ep],85,[0,[0,0,[2,I],te,[0,0,[2,cb],xA,0,1],2],[2,sX],Kn,[0,0,[2,zO],y9,0,1],3],4],[2,j1],R,[0,[0,[0,0,[2,LT],i_,[0,0,[2,hQ],EU,0,1],2],[2,xz],cu,0,3],[2,iD],lO,[0,[0,[0,0,[2,D_],MB,0,1],[2,cA],L,0,2],[2,fj],Aj,[0,0,[2,KR],nd,0,1],3],4],5],RW=[0,[0,[0,0,[2,a_],F7,0,1],[2,D4],nf,0,2],[2,sp],En,[0,0,[2,B9],i8,[0,0,[2,gL],xK,0,1],2],3],RX=[2,zJ],RY=[0,0,[2,mx],FH,[0,0,[2,m5],NQ,[0,0,[2,Lu],zf,0,1],2],3],RZ=[0,0,[2,BU],55,0,1],R0=[2,LQ],R1=[0,[0,0,[2,zH],50,0,1],[2,K0],32,[0,0,[2,Ew],68,0,1],2],R2=[0,[0,0,[2,Kk],67,0,1],[2,sS],45,[0,[0,0,[2,rJ],54,0,1],[2,Il],47,[0,0,[2,hk],76,0,1],2],3],R3=[2,fw],R4=[0,[0,0,[2,jp],43,0,1],[2,Nr],28,[0,[0,0,[2,AX],70,0,1],[2,HZ],61,0,2],3],R5=[0,0,[2,d1],59,0,1],R6=[2,en],R7=[0,0,[2,jL],65,[0,0,[2,CZ],66,0,1],2],R8=[0,0,[2,ne],57,[0,0,[2,Df],74,0,1],2],R9=[2,vS],R_=[2,h6],R$=[2,eT],Sa=[2,yp],Sb=[0,0,[2,sj],69,0,1],Sc=[2,sn],Sd=[0,0,[2,HN],72,0,1],Se=[0,[0,0,[2,mw],51,0,1],[2,M$],49,0,2],Sf=[2,B0],Sg=[0,[0,0,[2,ad],63,0,1],[2,dP],21,[0,0,[2,DG],75,0,1],2],Sh=[0,[0,0,[2,aK],60,0,1],[2,r4],46,0,2],Si=[2,js],Sj=[0,0,[2,qi],56,0,1],Sk=[0,0,[2,rw],41,[0,0,[2,wL],73,0,1],2],Sl=[2,g5],Sm=[2,aY],Sn=[0,[0,0,[2,mg],58,0,1],[2,D],Ju,[0,0,[2,NJ],G4,[0,0,[2,go],J$,0,1],2],3],So=[2,JU],Sp=[0,0,[2,Bl],25,0,1],Sq=[0,[0,0,[2,rg],fQ,0,1],[2,io],LK,0,2],Sr=[2,gV],Ss=[0,[0,0,[2,vN],mf,0,1],[2,gx],fa,0,2],St=[2,xa],Su=[0,0,[2,A6],u,0,1],Sv=[2,lK],Sw=[0,0,[2,a9],Aq,[0,[0,0,[2,eE],MI,0,1],[2,zn],fv,[0,0,[2,MN],LI,0,1],2],3],Sx=[2,uT],Sy=[0,0,[2,LW],t7,0,1],Sz=[0,[0,0,[2,aJ],NO,0,1],[2,JH],a2,[0,0,[2,jP],m$,0,1],2],SA=[2,tS],SB=[0,[0,[0,0,[2,ik],bI,0,1],[2,ew],ha,0,2],[2,qW],r5,[0,[0,0,[2,ps],BB,0,1],[2,u0],tG,0,2],3],SC=[0,[0,0,[2,ws],ft,[0,0,[2,Le],kK,0,1],2],[2,Cp],Io,[0,0,[2,eB],Ke,0,1],3],SD=[2,K3],SE=[0,0,[2,KW],dl,[0,0,[2,FF],uF,0,1],2],SF=[0,0,[2,rn],Jl,0,1],SG=[2,j2],SH=[0,[0,0,[2,zF],cz,0,1],[2,i1],J6,0,2],SI=[2,DQ],SJ=[0,[0,0,[2,ny],mW,0,1],[2,fT],sf,0,2],SK=[2,fh],SL=[0,0,[2,cq],xs,0,1],SM=[0,[0,0,[2,aj],bK,0,1],[2,I9],x4,0,2],SN=[2,qL],SO=[0,[0,0,[2,s2],cF,0,1],[2,rt],q7,[0,[0,0,[2,fl],jc,0,1],[2,iT],uK,[0,0,[2,JG],G2,0,1],2],3],SP=[0,[0,0,[2,qb],Da,[0,0,[2,AV],NN,0,1],2],[2,q$],mq,[0,0,[2,an],pC,[0,0,[2,Lt],MY,0,1],2],3],SQ=[2,eP],SR=[0,[0,[0,0,[2,t],Cf,0,1],[2,Fk],r3,0,2],[2,IW],zc,0,3],SS=[0,[0,0,[2,q5],sG,[0,0,[2,bU],DZ,0,1],2],[2,sJ],mU,[0,0,[2,jC],t6,[0,0,[2,yP],Kl,0,1],2],3],ST=[2,tU],SU=[0,[0,[0,[0,0,[2,uN],rf,0,1],[2,nj],dR,0,2],[2,l6],Kc,0,3],[2,H1],gP,[0,[0,0,[2,we],mV,[0,0,[2,Bf],mL,[0,0,[2,q_],at,0,1],2],3],[2,Jo],Ac,[0,0,[2,bv],eS,0,1],4],5],SV=[0,0,[2,xy],lG,[0,0,[2,yG],uZ,0,1],2],SW=[2,jB],SX=[0,[0,[0,0,[2,E6],k0,0,1],[2,I8],yn,0,2],[2,NH],nL,0,3],SY=[0,[0,0,[2,ju],tT,0,1],[2,a7],x0,[0,[0,0,[2,lx],zm,0,1],[2,JK],Bz,0,2],3],SZ=[2,pD],S0=[0,[0,[0,[0,0,[2,BG],ql,0,1],[2,a1],GZ,0,2],[2,Nz],dE,0,3],[2,sr],hm,[0,0,[2,oM],mu,0,1],4],S1=[0,[0,0,[2,ui],ev,0,1],[2,FK],Ha,[0,0,[2,tC],gO,0,1],2],S2=[2,P],S3=[0,[0,0,[2,t1],Nu,[0,0,[2,Cy],f,0,1],2],[2,hw],Ci,[0,[0,[0,0,[2,EY],xI,0,1],[2,B4],vX,0,2],[2,eI],Bw,0,3],4],S4=[2,KC],S5=[0,[0,0,[2,eu],x3,0,1],[2,md],iY,0,2],S6=[0,0,[2,ot],MZ,[0,0,[2,ja],JJ,0,1],2],S7=[2,JD],S8=[0,[0,0,[2,jx],IS,0,1],[2,kk],iO,[0,0,[2,dQ],Kv,0,1],2],S9=[0,[0,[0,0,[2,i7],l$,0,1],[2,H5],uS,0,2],[2,IP],dY,[0,0,[2,HV],pe,0,1],3],S_=[2,dS],S$=[0,0,[2,su],r0,0,1],Ta=[0,0,[2,FG],xH,[0,0,[2,CY],fY,[0,0,[2,i9],ur,0,1],2],3],Tb=[2,rY],Tc=[0,0,[2,oC],rA,0,1];c.toc=[0,[0,"SYMB",[0,1345,[0,[0,[0,[0,[0,[0,[0,[0,NW,NV,uC,NU,5],[2,zy],l9,[0,NZ,NY,Cm,NX,4],6],[2,f6],nP,[0,[0,N2,N1,nw,N0,3],[2,JB],Nq,[0,N5,N4,ni,N3,4],5],7],[2,qa],re,[0,[0,[0,N8,N7,s6,N6,4],[2,KN],Bh,[0,N$,N_,qr,N9,3],5],[2,DL],JM,[0,[0,Oc,Ob,w3,Oa,2],[2,mi],BW,[0,Of,Oe,yW,Od,2],3],6],8],[2,HG],qV,[0,[0,[0,[0,Oi,Oh,iu,Og,6],[2,hj],xU,[0,Ol,Ok,tO,Oj,6],7],[2,D3],f5,[0,[0,Oo,On,hX,Om,5],[2,kY],i6,[0,Or,Oq,hh,Op,5],6],8],[2,LY],bh,[0,[0,[0,Ou,Ot,Gk,Os,5],[2,oo],aL,[0,Ox,Ow,GQ,Ov,6],7],[2,du],93,[0,[0,OA,Oz,zM,Oy,4],[2,Aa],mT,[0,OD,OC,ht,OB,4],5],8],9],10],[2,x$],94,[0,[0,[0,[0,[0,OF,OE,j,0,2],[2,hl],yI,0,3],[2,mc],bV,[0,[0,0,OG,HM,0,1],[2,KJ],f2,[0,0,OH,bO,0,1],2],4],[2,Mp],tN,[0,[0,[0,OK,OJ,im,OI,2],[2,yT],W,[0,ON,OM,EO,OL,4],5],[2,hO],yy,[0,[0,OQ,OP,95,OO,4],[2,xu],J2,[0,OT,OS,Ho,OR,4],5],6],7],[2,CI],90,[0,[0,[0,[0,OW,OV,p$,OU,3],[2,pK],96,[0,OZ,OY,CT,OX,4],5],[2,GD],vi,[0,[0,O2,O1,B6,O0,3],[2,aW],97,[0,O5,O4,t4,O3,4],5],6],[2,De],cR,[0,[0,[0,O8,O7,uR,O6,4],[2,DP],aR,[0,O$,O_,cP,O9,2],5],[2,ym],89,[0,[0,Pb,Pa,tM,0,2],[2,yQ],99,[0,Pe,Pd,l5,Pc,2],3],6],7],8],11],[2,zX],91,[0,[0,[0,[0,[0,[0,Ph,Pg,Ir,Pf,4],[2,EL],BC,[0,0,Pj,yY,Pi,3],5],[2,HD],mb,[0,[0,Pm,Pl,As,Pk,4],[2,gb],me,[0,Po,Pn,g7,0,2],5],6],[2,E$],92,[0,[0,[0,Pr,Pq,wc,Pp,3],[2,dO],Em,[0,0,Ps,oj,0,1],4],[2,wH],up,[0,[0,Pv,Pu,Cj,Pt,2],[2,KI],c$,[0,Py,Px,u6,Pw,4],5],6],7],[2,w_],77,[0,[0,[0,[0,PB,PA,pd,Pz,5],[2,rb],Jb,[0,PE,PD,kS,PC,3],6],[2,cO],tL,[0,[0,PH,PG,Fi,PF,4],[2,Ct],g2,[0,PK,PJ,k_,PI,4],5],7],[2,kq],18,[0,[0,[0,0,PL,tr,0,1],[2,hy],64,0,2],[2,b4],62,[0,[0,PO,PN,Fv,PM,3],[2,v],l8,[0,0,PQ,xt,PP,3],4],5],8],9],[2,Fq],Ly,[0,[0,[0,[0,[0,PT,PS,Dx,PR,5],[2,DR],j8,[0,PW,PV,qe,PU,6],7],[2,xZ],d2,[0,[0,PZ,PY,h8,PX,6],[2,GV],BS,[0,P2,P1,Au,P0,6],7],8],[2,va],E8,[0,[0,[0,P5,P4,jj,P3,6],[2,I2],jg,[0,P8,P7,j7,P6,6],7],[2,eY],sR,[0,[0,P$,P_,oO,P9,4],[2,bW],CN,[0,Qc,Qb,u_,Qa,5],6],8],9],[2,NE],L7,[0,[0,[0,[0,Qf,Qe,Bc,Qd,6],[2,Mo],t8,[0,Qi,Qh,tg,Qg,6],7],[2,ok],bf,[0,[0,Ql,Qk,LE,Qj,5],[2,Mk],C1,[0,Qo,Qn,1,Qm,5],6],8],[2,o2],JX,[0,[0,[0,Qr,Qq,eq,Qp,4],[2,MV],Kt,[0,Qu,Qt,j3,Qs,4],5],[2,bR],Lk,[0,[0,0,Qw,w2,Qv,2],[2,lm],rR,[0,Qy,Qx,w9,0,3],4],6],9],10],11],12],[2,Nb],3,[0,[0,[0,[0,[0,[0,[0,QB,QA,EW,Qz,4],[2,Kf],vf,[0,QE,QD,vs,QC,6],7],[2,zS],Nh,[0,[0,QH,QG,rL,QF,4],[2,ua],fL,[0,QK,QJ,Ec,QI,5],6],8],[2,zt],Iz,[0,[0,[0,QN,QM,qg,QL,7],[2,y2],EM,[0,QQ,QP,IJ,QO,8],9],[2,HU],BO,[0,[0,QT,QS,jb,QR,8],[2,hS],vF,[0,QW,QV,mH,QU,6],9],10],11],[2,j0],h3,[0,[0,[0,[0,QZ,QY,CF,QX,5],[2,wo],i4,[0,Q2,Q1,fN,Q0,5],6],[2,wm],qN,[0,[0,Q5,Q4,iS,Q3,6],[2,u8],4,[0,Q8,Q7,BP,Q6,5],7],8],[2,Gm],Jt,[0,[0,[0,Q$,Q_,pT,Q9,6],[2,fz],JL,[0,Rc,Rb,aa,Ra,4],7],[2,FX],Lv,[0,[0,Rf,Re,5,Rd,5],[2,Fy],6,[0,Ri,Rh,_,Rg,6],7],8],9],12],[2,Nm],7,[0,[0,[0,[0,[0,Rl,Rk,Hy,Rj,5],[2,v1],yR,[0,Ro,Rn,bk,Rm,5],6],[2,Gp],z4,[0,[0,Rr,Rq,Iw,Rp,6],[2,Ai],Gj,[0,Ru,Rt,bF,Rs,5],7],8],[2,Gt],JC,[0,[0,[0,Rx,Rw,Fj,Rv,5],[2,C_],y5,[0,RA,Rz,C6,Ry,5],6],[2,AL],m9,[0,[0,RD,RC,kR,RB,4],[2,am],yE,[0,RG,RF,wk,RE,5],6],7],9],[2,IC],Fg,[0,[0,[0,[0,RJ,RI,qO,RH,4],[2,os],Gy,[0,RM,RL,mS,RK,3],5],[2,Ff],LH,[0,[0,RP,RO,G$,RN,5],[2,nH],sq,[0,RS,RR,80,RQ,4],6],7],[2,sc],82,[0,[0,[0,RV,RU,wa,RT,6],[2,GH],rQ,[0,RY,RX,8,RW,4],7],[2,iK],13,[0,[0,R1,R0,17,RZ,3],[2,ar],23,[0,R4,R3,24,R2,4],5],8],9],10],13],[2,lo],14,[0,[0,[0,[0,[0,[0,R7,R6,33,R5,3],[2,jA],52,[0,0,R9,53,R8,3],4],[2,t0],27,[0,0,[2,fu],34,[0,0,R_,35,0,1],2],5],[2,vE],19,[0,[0,[0,0,R$,37,0,1],[2,hi],26,[0,Sb,Sa,40,0,2],3],[2,gm],31,[0,[0,Sd,Sc,44,0,2],[2,ry],36,0,3],4],6],[2,nV],16,[0,[0,[0,[0,Sg,Sf,38,Se,3],[2,hB],42,[0,Sj,Si,22,Sh,3],4],[2,b$],20,[0,[0,0,Sl,39,Sk,3],[2,pR],29,[0,0,Sm,71,0,1],4],5],[2,pa],15,[0,[0,[0,Sp,So,30,Sn,4],[2,MF],Ap,[0,Ss,Sr,xo,Sq,3],5],[2,Bm],9,[0,[0,0,St,10,0,1],[2,cQ],v9,[0,0,Sv,nv,Su,2],3],6],7],8],[2,y_],ND,[0,[0,[0,[0,[0,Sy,Sx,yD,Sw,4],[2,hZ],e1,[0,SB,SA,gf,Sz,4],5],[2,jY],b_,[0,[0,SE,SD,j$,SC,4],[2,ro],hv,[0,SH,SG,Ej,SF,3],5],6],[2,ks],on,[0,[0,[0,SJ,SI,tW,0,3],[2,rq],wR,[0,SL,SK,nR,0,2],4],[2,em],Lj,[0,[0,SO,SN,bQ,SM,4],[2,Lx],M_,[0,SR,SQ,lD,SP,4],5],6],7],[2,Ce],11,[0,[0,[0,[0,SU,ST,mK,SS,6],[2,ER],hN,[0,SX,SW,hF,SV,4],7],[2,Do],mJ,[0,[0,S0,SZ,us,SY,5],[2,lM],jK,[0,S3,S2,yB,S1,5],6],8],[2,dz],fP,[0,[0,[0,S5,S4,Jk,0,3],[2,nK],D7,[0,S8,S7,cp,S6,3],4],[2,M5],Dk,[0,[0,S$,S_,Dn,S9,4],[2,Dw],AI,[0,Tc,Tb,sm,Ta,4],5],6],9],10],11],14],15]]],[0,[0,"SYJS",[0,[0,i9,ur],[0,CY,fY],[0,FG,xH],[0,rY,sm],[0,oC,rA],[0,Dw,AI],[0,HV,pe],[0,IP,dY],[0,H5,uS],[0,i7,l$],[0,dS,Dn],[0,su,r0],[0,M5,Dk],[0,ja,JJ],[0,ot,MZ],[0,JD,cp],[0,dQ,Kv],[0,kk,iO],[0,jx,IS],[0,nK,D7],[0,KC,Jk],[0,md,iY],[0,eu,x3],[0,dz,fP],[0,tC,gO],[0,FK,Ha],[0,ui,ev],[0,P,yB],[0,eI,Bw],[0,B4,vX],[0,EY,xI],[0,hw,Ci],[0,Cy,f],[0,t1,Nu],[0,lM,jK],[0,JK,Bz],[0,lx,zm],[0,a7,x0],[0,ju,tT],[0,pD,us],[0,oM,mu],[0,sr,hm],[0,Nz,dE],[0,a1,GZ],[0,BG,ql],[0,Do,mJ],[0,yG,uZ],[0,xy,lG],[0,jB,hF],[0,NH,nL],[0,I8,yn],[0,E6,k0],[0,ER,hN],[0,yP,Kl],[0,jC,t6],[0,sJ,mU],[0,bU,DZ],[0,q5,sG],[0,tU,mK],[0,bv,eS],[0,Jo,Ac],[0,q_,at],[0,Bf,mL],[0,we,mV],[0,H1,gP],[0,l6,Kc],[0,nj,dR],[0,uN,rf],[0,Ce,11],[0,Lt,MY],[0,an,pC],[0,q$,mq],[0,AV,NN],[0,qb,Da],[0,eP,lD],[0,IW,zc],[0,Fk,r3],[0,t,Cf],[0,Lx,M_],[0,I9,x4],[0,aj,bK],[0,qL,bQ],[0,JG,G2],[0,iT,uK],[0,fl,jc],[0,rt,q7],[0,s2,cF],[0,em,Lj],[0,fh,nR],[0,cq,xs],[0,rq,wR],[0,DQ,tW],[0,fT,sf],[0,ny,mW],[0,ks,on],[0,rn,Jl],[0,j2,Ej],[0,i1,J6],[0,zF,cz],[0,ro,hv],[0,eB,Ke],[0,Cp,Io],[0,Le,kK],[0,ws,ft],[0,K3,j$],[0,FF,uF],[0,KW,dl],[0,jY,b_],[0,jP,m$],[0,JH,a2],[0,aJ,NO],[0,tS,gf],[0,u0,tG],[0,ps,BB],[0,qW,r5],[0,ew,ha],[0,ik,bI],[0,hZ,e1],[0,MN,LI],[0,zn,fv],[0,eE,MI],[0,a9,Aq],[0,uT,yD],[0,LW,t7],[0,y_,ND],[0,A6,u],[0,lK,nv],[0,cQ,v9],[0,xa,10],[0,Bm,9],[0,io,LK],[0,rg,fQ],[0,gV,xo],[0,gx,fa],[0,vN,mf],[0,MF,Ap],[0,go,J$],[0,NJ,G4],[0,D,Ju],[0,mg,58],[0,JU,30],[0,Bl,25],[0,pa,15],[0,aY,71],[0,pR,29],[0,wL,73],[0,rw,41],[0,g5,39],[0,b$,20],[0,r4,46],[0,aK,60],[0,js,22],[0,qi,56],[0,hB,42],[0,M$,49],[0,mw,51],[0,B0,38],[0,DG,75],[0,dP,21],[0,ad,63],[0,nV,16],[0,ry,36],[0,sn,44],[0,HN,72],[0,gm,31],[0,yp,40],[0,sj,69],[0,hi,26],[0,eT,37],[0,vE,19],[0,h6,35],[0,fu,34],[0,t0,27],[0,Df,74],[0,ne,57],[0,vS,53],[0,jA,52],[0,d1,59],[0,en,33],[0,CZ,66],[0,jL,65],[0,lo,14],[0,hk,76],[0,Il,47],[0,rJ,54],[0,sS,45],[0,Kk,67],[0,fw,24],[0,HZ,61],[0,AX,70],[0,Nr,28],[0,jp,43],[0,ar,23],[0,BU,55],[0,LQ,17],[0,Ew,68],[0,K0,32],[0,zH,50],[0,iK,13],[0,gL,xK],[0,B9,i8],[0,sp,En],[0,D4,nf],[0,a_,F7],[0,zJ,8],[0,Lu,zf],[0,m5,NQ],[0,mx,FH],[0,GH,rQ],[0,b5,87],[0,wt,B3],[0,n6,GU],[0,nc,G1],[0,n_,wa],[0,KR,nd],[0,fj,Aj],[0,cA,L],[0,D_,MB],[0,iD,lO],[0,xz,cu],[0,hQ,EU],[0,LT,i_],[0,j1,R],[0,zO,y9],[0,sX,Kn],[0,cb,xA],[0,I,te],[0,Ep,85],[0,CG,81],[0,sc,82],[0,Ib,84],[0,jW,83],[0,Ko,80],[0,fR,79],[0,DN,86],[0,Bd,g],[0,wP,LZ],[0,nH,sq],[0,xB,Fl],[0,a$,MS],[0,jk,N],[0,gF,zV],[0,aQ,iP],[0,b6,xw],[0,C4,dV],[0,he,FV],[0,xl,c6],[0,xN,G$],[0,le,zp],[0,Bs,HQ],[0,IZ,rc],[0,sv,K$],[0,Ff,LH],[0,iR,p2],[0,Hk,pG],[0,uv,hG],[0,et,mS],[0,u5,fG],[0,wu,kD],[0,os,Gy],[0,Az,yZ],[0,eJ,HB],[0,gG,qO],[0,Fm,FB],[0,KK,r1],[0,F6,l],[0,xS,rT],[0,IC,Fg],[0,eF,bl],[0,iB,wq],[0,HR,c3],[0,k9,wk],[0,k7,S],[0,b2,za],[0,ti,oN],[0,l0,bs],[0,gC,e5],[0,kL,He],[0,dX,h9],[0,om,mX],[0,Fn,p3],[0,am,yE],[0,qj,M6],[0,BQ,vl],[0,ud,K5],[0,dj,kt],[0,pZ,kR],[0,La,F9],[0,BY,f3],[0,bD,xp],[0,pE,dA],[0,LU,FI],[0,AL,m9],[0,Ca,y3],[0,wh,by],[0,nr,lL],[0,pL,II],[0,h0,MK],[0,Dc,kQ],[0,dC,C6],[0,er,dx],[0,Ak,i3],[0,rl,fV],[0,CC,r6],[0,Fs,F$],[0,uL,bH],[0,C_,y5],[0,np,bS],[0,B7,w4],[0,Lq,x],[0,ut,tI],[0,dH,rv],[0,ab,jU],[0,mC,AN],[0,lh,Fj],[0,kw,cl],[0,jT,d3],[0,Lm,Md],[0,KS,BL],[0,zZ,y4],[0,MO,m],[0,eN,Ab],[0,Gt,JC],[0,Gn,kE],[0,lp,p7],[0,Ij,GK],[0,E,i2],[0,es,bF],[0,kI,xb],[0,J3,FL],[0,e3,B],[0,qn,zb],[0,lN,Ar],[0,Kr,sw],[0,uU,GB],[0,aN,Mq],[0,Ai,Gj],[0,kW,as],[0,Hl,lQ],[0,p9,Jw],[0,yL,na],[0,Ni,B5],[0,mI,vz],[0,xV,vC],[0,Ek,vw],[0,IN,vg],[0,oA,Mn],[0,Ji,wb],[0,bq,Iw],[0,qB,gB],[0,rj,HE],[0,A1,Hv],[0,jM,wg],[0,EA,g0],[0,GP,J7],[0,pp,B1],[0,ln,qo],[0,Gp,z4],[0,KO,hf],[0,k5,Ka],[0,CV,pM],[0,L$,wn],[0,DC,aZ],[0,wM,o7],[0,zz,bk],[0,wp,AM],[0,n,fH],[0,e_,w$],[0,kM,iU],[0,r7,zw],[0,cy,zY],[0,g8,d6],[0,BM,M7],[0,Kh,cm],[0,v1,yR],[0,q9,lC],[0,AG,MJ],[0,Al,mQ],[0,ig,nl],[0,Hr,pq],[0,BN,LX],[0,J9,Hy],[0,fO,rm],[0,l1,Gl],[0,tX,HH],[0,j9,Cv],[0,nh,ax],[0,jl,zI],[0,rF,O],[0,I0,gj],[0,wB,ir],[0,A4,gq],[0,Nm,7],[0,Gc,w],[0,qM,pb],[0,nF,qX],[0,FM,Ie],[0,sD,ss],[0,Ic,h7],[0,J_,LJ],[0,cI,aS],[0,CJ,cr],[0,GI,zd],[0,kT,ts],[0,GW,_],[0,oH,t9],[0,KD,ca],[0,zT,fi],[0,p6,CB],[0,Fy,6],[0,eM,o9],[0,yK,yC],[0,BI,kh],[0,z6,uQ],[0,uy,Mf],[0,Eh,Z],[0,qv,dD],[0,sd,E9],[0,MM,5],[0,rK,Jy],[0,kZ,BJ],[0,Lg,Bi],[0,fM,H3],[0,FX,Lv],[0,tA,wx],[0,lu,D5],[0,DH,Er],[0,Mi,Ki],[0,KP,vr],[0,KY,aa],[0,wV,Ey],[0,J,sg],[0,fz,JL],[0,w1,Hp],[0,hC,oE],[0,AH,al],[0,rd,pT],[0,Dt,Ml],[0,wZ,Mt],[0,kG,l3],[0,gy,fg],[0,hg,cY],[0,KZ,tx],[0,m3,Nd],[0,g9,ay],[0,Am,Dy],[0,qc,EX],[0,HO,bd],[0,Gm,Jt],[0,KG,uz],[0,GX,gc],[0,b1,wz],[0,Hw,Dd],[0,sV,C0],[0,dp,yo],[0,pz,Kp],[0,zG,um],[0,ao,BP],[0,p4,de],[0,Ev,iy],[0,CO,EI],[0,aT,sQ],[0,a3,Mx],[0,u8,4],[0,ls,Cg],[0,KF,CW],[0,fJ,tB],[0,sW,ns],[0,Lh,x6],[0,v$,s3],[0,s4,zL],[0,df,qP],[0,An,bG],[0,Id,iS],[0,hI,jy],[0,oR,dU],[0,ou,Kd],[0,jS,eO],[0,Mc,o_],[0,cB,Fc],[0,bL,lX],[0,D9,NA],[0,n3,Jh],[0,eU,bj],[0,Ld,HC],[0,hW,ap],[0,m6,c4],[0,f4,eo],[0,wm,qN],[0,oa,z],[0,aH,X],[0,Du,cZ],[0,z1,n4],[0,GC,EZ],[0,qD,f0],[0,C7,BT],[0,a4,IA],[0,cJ,lt],[0,aP,fN],[0,IY,pi],[0,kN,iM],[0,sZ,IT],[0,fZ,d9],[0,wo,i4],[0,zq,KU],[0,sC,k2],[0,pO,iv],[0,n9,Jc],[0,iV,K_],[0,vt,l_],[0,hE,lT],[0,rW,CF],[0,qC,jd],[0,pm,ga],[0,LP,ky],[0,gR,cD],[0,gd,mE],[0,Cl,tj],[0,LB,hp],[0,xO,uG],[0,o5,D0],[0,ee,d_],[0,j0,h3],[0,Nv,c5],[0,nY,F2],[0,yq,l7],[0,kH,bX],[0,I_,tw],[0,Hx,B8],[0,wW,cG],[0,Q,IQ],[0,MQ,sA],[0,Ii,KQ],[0,E0,cL],[0,MW,nI],[0,Kx,D1],[0,gD,mH],[0,gk,Av],[0,Lz,Fb],[0,Nx,fU],[0,lE,C2],[0,hq,v3],[0,yd,vR],[0,JI,dF],[0,vx,dB],[0,v6,C3],[0,My,u7],[0,Ns,M0],[0,oc,BE],[0,Li,px],[0,hS,vF],[0,ge,wK],[0,j_,so],[0,wd,t_],[0,kr,zx],[0,Gh,Ht],[0,b3,q0],[0,pF,oI],[0,cs,i0],[0,iz,cf],[0,GY,lj],[0,hu,qH],[0,a0,t2],[0,Lr,qE],[0,tp,gQ],[0,sx,CH],[0,NL,jb],[0,vW,jH],[0,A7,CM],[0,f_,sL],[0,Me,Hs],[0,F3,lf],[0,kx,mN],[0,No,sE],[0,y6,EJ],[0,bo,Ku],[0,Ne,dM],[0,jJ,bw],[0,s5,xi],[0,Eb,uj],[0,f1,A$],[0,li,kF],[0,M8,BF],[0,h4,DE],[0,ep,G0],[0,jr,HS],[0,uY,Db],[0,Be,Hb],[0,e8,lW],[0,ch,dm],[0,kc,zA],[0,Mh,dg],[0,pt,jw],[0,ub,q2],[0,nS,D6],[0,lR,V],[0,lk,o3],[0,h_,MT],[0,sl,Np],[0,gS,AK],[0,AP,zU],[0,tR,rV],[0,mD,d7],[0,HU,BO],[0,k8,vI],[0,vn,Jr],[0,eX,nq],[0,qm,mG],[0,m4,lq],[0,pW,iA],[0,EN,qT],[0,xv,lY],[0,rO,ta],[0,qQ,gz],[0,AZ,Ex],[0,IR,b7],[0,tV,nt],[0,Dg,sa],[0,H8,r8],[0,y$,lV],[0,hY,EV],[0,CK,D8],[0,y7,K7],[0,zB,yA],[0,dL,o6],[0,Ag,LR],[0,Cn,cg],[0,od,ah],[0,pP,v7],[0,vJ,uf],[0,JN,Eq],[0,FJ,AA],[0,HI,g3],[0,g1,lU],[0,sB,Ja],[0,Dm,vP],[0,ib,HK],[0,Jp,sh],[0,Ef,gA],[0,DX,hr],[0,pS,m_],[0,JO,to],[0,G9,pn],[0,br,IJ],[0,xc,sT],[0,mZ,oG],[0,J4,s0],[0,J8,EP],[0,AF,ty],[0,fc,u9],[0,jv,hL],[0,KL,hb],[0,K1,JY],[0,Ge,wX],[0,lg,DW],[0,DI,d4],[0,BH,IE],[0,y2,EM],[0,bm,GN],[0,qR,MD],[0,is,c1],[0,e6,Ga],[0,qw,aX],[0,Na,BD],[0,b0,vp],[0,HL,pg],[0,Ky,Dl],[0,bT,EB],[0,Fu,L5],[0,wE,z2],[0,Ln,hP],[0,ww,fp],[0,Nt,vm],[0,e,uA],[0,z7,xq],[0,Mj,ra],[0,GF,JS],[0,oB,mm],[0,NM,wC],[0,ko,s1],[0,Dp,hn],[0,Kj,Kb],[0,I5,aE],[0,hJ,L0],[0,or,qg],[0,Ao,qk],[0,c0,Di],[0,uh,vh],[0,x7,dh],[0,xj,y8],[0,qU,rS],[0,ET,JV],[0,tc,xx],[0,JP,eV],[0,vY,fS],[0,Jd,F],[0,Co,EQ],[0,KV,wj],[0,CP,NB],[0,Mv,I4],[0,KT,tP],[0,If,AJ],[0,au,wI],[0,M,nB],[0,iF,mO],[0,zt,Iz],[0,qI,hD],[0,Js,Hz],[0,ic,f7],[0,LG,st],[0,xd,Ec],[0,Im,fD],[0,hs,Cq],[0,vj,jF],[0,mj,bi],[0,IK,di],[0,ua,fL],[0,Gz,pB],[0,oJ,xF],[0,Nk,pH],[0,vq,lS],[0,Gf,rL],[0,x9,cT],[0,g6,Ma],[0,Jx,LS],[0,zS,Nh],[0,NF,$],[0,wQ,JE],[0,w5,Cw],[0,g$,fK],[0,r2,L9],[0,Bv,un],[0,yu,oe],[0,kO,mM],[0,GG,ez],[0,n$,wA],[0,ip,A0],[0,gX,vA],[0,wN,eZ],[0,bz,Ch],[0,fd,lv],[0,cv,vs],[0,MC,v2],[0,fe,da],[0,bM,Fw],[0,rM,yg],[0,xn,nZ],[0,yk,ci],[0,Dr,z8],[0,qY,fB],[0,mA,h1],[0,CU,Jj],[0,bN,Ck],[0,eD,ow],[0,L8,Nf],[0,M1,qF],[0,b8,Ba],[0,jn,AB],[0,AQ,qf],[0,Kf,vf],[0,vB,uO],[0,ka,Ig],[0,rx,DM],[0,wl,fk],[0,zN,jD],[0,CD,EW],[0,wF,xT],[0,E1,eQ],[0,ED,lF],[0,e$,AW],[0,Nb,3],[0,nu,w9],[0,vu,xr],[0,f$,z3],[0,lm,rR],[0,v4,oQ],[0,lA,w2],[0,bR,Lk],[0,pj,kd],[0,fm,jG],[0,xD,j3],[0,x8,oh],[0,gv,xJ],[0,xW,mr],[0,cd,rr],[0,o4,vO],[0,MV,Kt],[0,vy,t3],[0,wO,uV],[0,E_,eq],[0,n0,tJ],[0,aO,D$],[0,z0,fC],[0,C8,xP],[0,o2,JX],[0,C5,Nl],[0,DO,tl],[0,yh,2],[0,eC,cN],[0,a5,qy],[0,I3,fX],[0,m7,GS],[0,mo,1],[0,Hq,eH],[0,u4,yl],[0,Ay,id],[0,Lw,Dh],[0,Ds,ae],[0,Mk,C1],[0,it,Jm],[0,F4,u1],[0,py,FZ],[0,m1,eR],[0,ck,hK],[0,Cz,G],[0,AC,t$],[0,GE,LE],[0,o0,kn],[0,pU,y1],[0,Lo,JZ],[0,ok,bf],[0,Mb,Hj],[0,ul,km],[0,xQ,co],[0,GM,Ea],[0,xC,gn],[0,ye,tg],[0,oT,zW],[0,a6,KA],[0,J0,cU],[0,sM,uk],[0,tk,ID],[0,A5,ef],[0,FU,uo],[0,ii,Et],[0,Fa,ea],[0,ba,kz],[0,Mo,t8],[0,lP,DS],[0,Iu,xY],[0,JT,e9],[0,bc,Ix],[0,hc,fq],[0,H9,BV],[0,ly,h],[0,si,ME],[0,Mz,bg],[0,Km,Bc],[0,IO,yz],[0,Mg,rs],[0,NR,Bg],[0,vb,vZ],[0,bn,dn],[0,x5,nQ],[0,dN,gw],[0,tn,F_],[0,JW,p0],[0,gJ,lb],[0,yS,ec],[0,b9,jm],[0,ai,yv],[0,NE,L7],[0,ml,G5],[0,d8,nA],[0,ru,mh],[0,lZ,cw],[0,MU,kB],[0,aM,Gq],[0,Eu,u_],[0,Ed,xk],[0,nm,C],[0,Fo,u$],[0,aq,m8],[0,DU,xE],[0,Ee,Hh],[0,qp,e4],[0,bW,CN],[0,zj,qh],[0,e2,rP],[0,gu,iI],[0,yF,FW],[0,mn,oO],[0,MX,Bn],[0,eY,sR],[0,rU,dW],[0,LM,MG],[0,ho,wU],[0,uu,gN],[0,I6,ox],[0,pV,zv],[0,pu,eW],[0,DT,gW],[0,GJ,ie],[0,LA,j7],[0,H_,gH],[0,zP,zl],[0,Is,H2],[0,zr,Ng],[0,j4,cS],[0,tE,k],[0,G3,y],[0,p8,H6],[0,I2,jg],[0,HJ,iq],[0,uD,tD],[0,mp,k3],[0,c7,Aw],[0,rG,iw],[0,ob,Mm],[0,pk,A_],[0,u2,af],[0,xG,Gv],[0,tz,oF],[0,cH,jj],[0,Jv,uP],[0,hR,oY],[0,G6,yM],[0,M2,fA],[0,A9,Fd],[0,va,E8],[0,ag,aI],[0,yi,Fr],[0,A8,hT],[0,ri,lJ],[0,aC,v0],[0,rN,oP],[0,F8,Kg],[0,lc,jV],[0,v_,aD],[0,NG,BK],[0,sO,av],[0,bp,pI],[0,Nn,Au],[0,ms,Je],[0,nn,LN],[0,h5,FE],[0,T,k6],[0,Nc,nT],[0,GV,BS],[0,pA,ed],[0,z5,h$],[0,FP,GL],[0,GR,aB],[0,MR,qs],[0,tu,Ny],[0,iH,cC],[0,kl,qt],[0,K2,qz],[0,Es,gl],[0,nW,CX],[0,il,vD],[0,p_,Jq],[0,Hi,h8],[0,Cu,Go],[0,kA,Fx],[0,zQ,ei],[0,kU,Fh],[0,n5,LC],[0,IB,g4],[0,Fp,lH],[0,mP,Hg],[0,tq,fo],[0,bA,tv],[0,xZ,d2],[0,l4,jI],[0,vM,AR],[0,o,hz],[0,tQ,iW],[0,xX,Dv],[0,fI,HP],[0,i,mF],[0,El,M9],[0,ey,D2],[0,DY,Gw],[0,k4,qe],[0,U,kP],[0,Lp,F1],[0,zK,JQ],[0,dt,Hm],[0,F5,yt],[0,cE,qS],[0,IX,jt],[0,fx,jo],[0,dv,uq],[0,ex,c2],[0,DR,j8],[0,Iv,nz],[0,hM,Fz],[0,ce,FA],[0,I$,gZ],[0,rB,Mr],[0,iN,bP],[0,iG,Lb],[0,r$,uX],[0,eG,Dx],[0,rX,Hd],[0,tK,th],[0,EG,cV],[0,AS,Ax],[0,Fq,Ly],[0,DV,ES],[0,CR,cW],[0,yc,xt],[0,v,l8],[0,n8,NS],[0,MP,op],[0,m0,Fv],[0,my,xf],[0,b4,62],[0,hy,64],[0,cK,tr],[0,kq,18],[0,Cc,12],[0,db,48],[0,HA,78],[0,sH,oK],[0,LO,q6],[0,k1,k_],[0,E2,nx],[0,oU,iZ],[0,bB,vK],[0,Bj,ki],[0,Ct,g2],[0,w0,ov],[0,L4,bb],[0,LD,uW],[0,eA,wS],[0,hH,Jz],[0,GA,Fi],[0,g_,qA],[0,cO,tL],[0,fr,q8],[0,CQ,nX],[0,zu,kS],[0,EH,H$],[0,CE,Hf],[0,rb,Jb],[0,yV,ld],[0,kV,bZ],[0,NP,yJ],[0,L3,Mw],[0,Ip,pd],[0,rh,KH],[0,dJ,ds],[0,w6,iQ],[0,DA,Kq],[0,zk,yj],[0,fb,gI],[0,be,Cd],[0,w_,77],[0,EE,Iq],[0,nO,u6],[0,EC,kf],[0,tm,mk],[0,Ei,y0],[0,KI,c$],[0,tf,q],[0,Ad,Cj],[0,uI,rZ],[0,wH,up],[0,ij,oj],[0,dO,Em],[0,Dj,pr],[0,tH,wc],[0,M3,sK],[0,nG,dG],[0,E$,92],[0,j6,g7],[0,uw,d5],[0,gb,me],[0,Bo,f8],[0,f9,FY],[0,l2,ol],[0,FN,zs],[0,s9,As],[0,o$,gT],[0,hA,vT],[0,cj,At],[0,uM,q3],[0,lw,GO],[0,q1,L_],[0,HD,mb],[0,H,dc],[0,of,Iy],[0,LV,yY],[0,EL,BC],[0,wD,uH],[0,K8,Ir],[0,Gr,ac],[0,lI,wf],[0,Jg,wr],[0,zX,91],[0,s_,Dz],[0,ku,l5],[0,Kw,M4],[0,yQ,99],[0,t5,tM],[0,J1,z9],[0,ym,89],[0,m2,AT],[0,cX,cP],[0,u3,Gg],[0,DP,aR],[0,el,o1],[0,L1,uR],[0,DJ,oz],[0,yx,FD],[0,iE,po],[0,De,cR],[0,r9,hd],[0,kv,t4],[0,BA,i$],[0,kg,rz],[0,Bt,p1],[0,aW,97],[0,vv,H0],[0,cn,B6],[0,jQ,Bk],[0,BX,EF],[0,GD,vi],[0,jz,hU],[0,rp,dT],[0,CL,nU],[0,Ll,oq],[0,mz,CT],[0,B_,FR],[0,Fe,kp],[0,rC,pl],[0,dw,lB],[0,pK,96],[0,EK,oX],[0,qu,gU],[0,Jf,p$],[0,Gs,bE],[0,GT,xe],[0,CI,90],[0,B$,ct],[0,v5,HT],[0,fE,C$],[0,Y,Ho],[0,zC,JF],[0,oZ,Ks],[0,dr,oD],[0,xu,J2],[0,Bb,zg],[0,fF,aG],[0,sz,IF],[0,d0,95],[0,Bp,98],[0,hO,yy],[0,NC,E3],[0,qd,EO],[0,r_,vd],[0,HY,sP],[0,k$,gK],[0,sF,z_],[0,yT,W],[0,Cb,tY],[0,IG,im],[0,pY,mY],[0,Mp,tN],[0,mv,bO],[0,KJ,f2],[0,Ae,HM],[0,mc,bV],[0,hl,yI],[0,ff,j],[0,gr,ek],[0,x$,94],[0,ej,nN],[0,IU,Gx],[0,K9,ht],[0,qJ,uE],[0,w8,sU],[0,xg,dI],[0,vo,rE],[0,Aa,mT],[0,kJ,wG],[0,x1,AU],[0,ML,zD],[0,iX,zM],[0,FC,kj],[0,aw,FO],[0,gt,gp],[0,du,93],[0,sI,tb],[0,xR,aU],[0,DB,BZ],[0,IL,88],[0,jE,CA],[0,lz,Gd],[0,eh,GQ],[0,vk,zR],[0,jh,xh],[0,s,eg],[0,c8,Ia],[0,pQ,pc],[0,dq,z$],[0,vc,ze],[0,Ik,Gi],[0,ph,rk],[0,ng,c9],[0,Eg,Ah],[0,jX,ll],[0,oo,aL],[0,sN,eK],[0,s7,bY],[0,se,rH],[0,fs,oW],[0,JA,d$],[0,vH,AD],[0,A2,F0],[0,oi,fn],[0,p5,Gk],[0,pw,Cs],[0,r,yr],[0,ve,Kz],[0,LY,bh],[0,Dq,vQ],[0,cc,Eo],[0,zo,gg],[0,Gb,qK],[0,vU,Hu],[0,dy,hh],[0,i5,NK],[0,yw,ys],[0,E4,sy],[0,CS,a8],[0,wJ,I1],[0,xL,MH],[0,kY,i6],[0,wy,AY],[0,yb,nC],[0,DD,eL],[0,L6,It],[0,fW,aV],[0,Bx,oV],[0,gh,hX],[0,eb,ia],[0,je,e0],[0,j5,jf],[0,JR,nJ],[0,D3,f5],[0,B2,iJ],[0,nM,AE],[0,no,MA],[0,ak,s$],[0,G7,h2],[0,pN,oy],[0,yX,p],[0,Nw,IV],[0,oL,KM],[0,K6,Lc],[0,DF,gi],[0,H7,FS],[0,HF,d],[0,n7,tO],[0,ih,IM],[0,yf,Ft],[0,KB,tt],[0,og,Bq],[0,DK,Cr],[0,bt,yH],[0,hj,xU],[0,C9,Jn],[0,gY,pJ],[0,jq,hx],[0,L2,kX],[0,w7,uB],[0,Hn,Ez],[0,E7,td],[0,HW,wY],[0,FT,Ms],[0,Ih,fy],[0,yN,nE],[0,K,ix],[0,xM,nk],[0,sb,vV],[0,cx,iu],[0,mt,ug],[0,IH,vL],[0,Af,s8],[0,Hc,I7],[0,LL,pv],[0,mR,rI],[0,pX,qx],[0,HG,qV],[0,By,ke],[0,oS,yW],[0,dk,lr],[0,mi,BW],[0,jN,gE],[0,e7,w3],[0,x2,az],[0,DL,JM],[0,n1,jZ],[0,pf,aA],[0,Nj,x_],[0,kC,qr],[0,yU,KE],[0,bC,K4],[0,uc,o8],[0,KN,Bh],[0,cM,iC],[0,jR,nb],[0,HX,ux],[0,Ls,s6],[0,gs,ji],[0,kb,tZ],[0,Gu,wv],[0,qa,re],[0,zh,q4],[0,dK,la],[0,gM,bx],[0,G_,ni],[0,c_,yO],[0,JB,Nq],[0,qq,aF],[0,wT,bJ],[0,dZ,tF],[0,A,nw],[0,bu,sk],[0,uJ,sY],[0,zi,Br],[0,f6,nP],[0,nD,hV],[0,In,Cm],[0,dd,mB],[0,G8,E5],[0,KX,wi],[0,Bu,qG],[0,zy,l9],[0,Mu,BR],[0,v8,vG],[0,xm,uC],[0,A3,0],[0,qZ,AO],[0,n2,rD],[0,ue,NI],[0,jO,LF],[0,Cx,J5],[0,ya,FQ],[0,ma,b],[0,zE,iL],[0,Lf,H4]]],[0,[0,"CRCS",0],[0,[0,"PRIM","%caml_format_int_special\0%direct_int_div\0%direct_int_mod\0%direct_int_mul\0%direct_obj_tag\0%identity\0%int_add\0%int_and\0%int_asr\0%int_div\0%int_lsl\0%int_lsr\0%int_mod\0%int_mul\0%int_neg\0%int_or\0%int_sub\0%int_xor\0Base_am_testing\0Base_caml_exn_is_most_recent_exn\0Base_clear_caml_backtrace_pos\0Base_hash_double\0Base_hash_string\0Base_int_math_int32_clz\0Base_int_math_int32_ctz\0Base_int_math_int64_clz\0Base_int_math_int64_ctz\0Base_int_math_int64_pow_stub\0Base_int_math_int_clz\0Base_int_math_int_ctz\0Base_int_math_int_popcount\0Base_int_math_int_pow_stub\0Base_int_math_nativeint_clz\0Base_int_math_nativeint_ctz\0Base_internalhash_fold_float\0Base_internalhash_fold_int\0Base_internalhash_fold_int64\0Base_internalhash_fold_string\0Base_internalhash_get_hash_value\0BigStringReader\0MlBytes\0MlFakeDevice\0MlFakeFd\0MlFakeFd_out\0MlFakeFile\0MlFile\0MlInt64\0MlMutex\0MlNat\0MlNodeDevice\0MlNodeFd\0MlObjectTable\0MlStringReader\0Ml_Bigarray\0Ml_Bigarray_c_1_1\0UInt8ArrayReader\0add_nat\0bigstring_alloc\0bigstring_blit_bigstring_bytes_stub\0bigstring_blit_bytes_bigstring_stub\0bigstring_blit_string_bigstring_stub\0bigstring_blit_stub\0bigstring_destroy_stub\0bigstring_find\0bigstring_is_mmapped_stub\0bigstring_memcmp_bytes_stub\0bigstring_memcmp_stub\0bigstring_memset_stub\0bigstring_of_array_buffer\0bigstring_of_typed_array\0bigstring_realloc\0bigstring_to_array_buffer\0bigstring_to_typed_array\0bigstringaf_blit_from_bytes\0bigstringaf_blit_to_bigstring\0bigstringaf_blit_to_bytes\0bigstringaf_memchr\0bigstringaf_memcmp_bigstring\0bigstringaf_memcmp_string\0bin_prot_blit_buf_bytes_stub\0bin_prot_blit_buf_float_array_stub\0bin_prot_blit_buf_stub\0bin_prot_blit_bytes_buf_stub\0bin_prot_blit_float_array_buf_stub\0bin_prot_blit_string_buf_stub\0blit_nat\0caml_MD5Final\0caml_MD5Init\0caml_MD5Transform\0caml_MD5Update\0caml_abs_float\0caml_acos_float\0caml_acosh_float\0caml_add_float\0caml_alloc_dummy\0caml_alloc_dummy_float\0caml_alloc_dummy_infix\0caml_alloc_stack\0caml_argv\0caml_array_append\0caml_array_blit\0caml_array_bound_error\0caml_array_concat\0caml_array_fill\0caml_array_get\0caml_array_get_addr\0caml_array_get_float\0caml_array_of_bytes\0caml_array_of_string\0caml_array_set\0caml_array_set_addr\0caml_array_set_float\0caml_array_sub\0caml_array_unsafe_get\0caml_array_unsafe_get_float\0caml_array_unsafe_set\0caml_array_unsafe_set_float\0caml_asin_float\0caml_asinh_float\0caml_atan2_float\0caml_atan_float\0caml_atanh_float\0caml_atomic_cas\0caml_atomic_exchange\0caml_atomic_fetch_add\0caml_atomic_load\0caml_atomic_make_contended\0caml_ba_blit\0caml_ba_change_layout\0caml_ba_compare\0caml_ba_create\0caml_ba_create_buffer\0caml_ba_create_from\0caml_ba_create_unsafe\0caml_ba_custom_name\0caml_ba_deserialize\0caml_ba_dim\0caml_ba_dim_1\0caml_ba_dim_2\0caml_ba_dim_3\0caml_ba_fill\0caml_ba_from_typed_array\0caml_ba_get_1\0caml_ba_get_2\0caml_ba_get_3\0caml_ba_get_generic\0caml_ba_get_size\0caml_ba_get_size_per_element\0caml_ba_hash\0caml_ba_init\0caml_ba_kind\0caml_ba_kind_of_typed_array\0caml_ba_layout\0caml_ba_map_file\0caml_ba_map_file_bytecode\0caml_ba_num_dims\0caml_ba_reshape\0caml_ba_serialize\0caml_ba_set_1\0caml_ba_set_2\0caml_ba_set_3\0caml_ba_set_generic\0caml_ba_slice\0caml_ba_sub\0caml_ba_to_typed_array\0caml_ba_uint8_get16\0caml_ba_uint8_get32\0caml_ba_uint8_get64\0caml_ba_uint8_set16\0caml_ba_uint8_set32\0caml_ba_uint8_set64\0caml_backtrace_status\0caml_bigstring_blit_ba_to_ba\0caml_bigstring_blit_ba_to_bytes\0caml_bigstring_blit_bytes_to_ba\0caml_bigstring_blit_string_to_ba\0caml_bigstring_memcmp\0caml_blit_bytes\0caml_blit_string\0caml_bswap16\0caml_build_symbols\0caml_bytes_bound_error\0caml_bytes_compare\0caml_bytes_equal\0caml_bytes_get\0caml_bytes_get16\0caml_bytes_get32\0caml_bytes_get64\0caml_bytes_greaterequal\0caml_bytes_greaterthan\0caml_bytes_lessequal\0caml_bytes_lessthan\0caml_bytes_notequal\0caml_bytes_of_array\0caml_bytes_of_jsbytes\0caml_bytes_of_string\0caml_bytes_of_utf16_jsstring\0caml_bytes_set\0caml_bytes_set16\0caml_bytes_set32\0caml_bytes_set64\0caml_bytes_unsafe_get\0caml_bytes_unsafe_set\0caml_call_gen\0caml_callback\0caml_cbrt_float\0caml_ceil_float\0caml_channel_descriptor\0caml_check_bound\0caml_check_bound_bigstring\0caml_classify_float\0caml_compare\0caml_compare_val\0caml_compare_val_get_custom\0caml_compare_val_number_custom\0caml_compare_val_tag\0caml_continuation_use_and_update_handler_noexc\0caml_continuation_use_noexc\0caml_convert_bytes_to_array\0caml_convert_raw_backtrace\0caml_convert_raw_backtrace_slot\0caml_convert_string_to_bytes\0caml_copysign_float\0caml_cos_float\0caml_cosh_float\0caml_create_bytes\0caml_create_file\0caml_create_string\0caml_current_dir\0caml_custom_event_index\0caml_custom_ops\0caml_decompress_input\0caml_div\0caml_div_float\0caml_domain_dls\0caml_domain_dls_get\0caml_domain_dls_set\0caml_domain_id\0caml_domain_spawn\0caml_ensure_stack_capacity\0caml_ephe_blit_data\0caml_ephe_blit_key\0caml_ephe_check_data\0caml_ephe_check_key\0caml_ephe_create\0caml_ephe_data_offset\0caml_ephe_get_data\0caml_ephe_get_data_copy\0caml_ephe_get_key\0caml_ephe_get_key_copy\0caml_ephe_key_offset\0caml_ephe_set_data\0caml_ephe_set_key\0caml_ephe_unset_data\0caml_ephe_unset_key\0caml_eq_float\0caml_equal\0caml_erf_float\0caml_erfc_float\0caml_eventlog_pause\0caml_eventlog_resume\0caml_executable_name\0caml_exn_with_js_backtrace\0caml_exp2_float\0caml_exp_float\0caml_expm1_float\0caml_failwith\0caml_fatal_uncaught_exception\0caml_fill_bytes\0caml_fill_string\0caml_final_register\0caml_final_register_called_without_value\0caml_final_release\0caml_finish_formatting\0caml_float_compare\0caml_float_of_bytes\0caml_float_of_int\0caml_float_of_string\0caml_floatarray_blit\0caml_floatarray_create\0caml_floatarray_get\0caml_floatarray_set\0caml_floatarray_unsafe_get\0caml_floatarray_unsafe_set\0caml_floor_float\0caml_fma_float\0caml_fmod_float\0caml_format_exception\0caml_format_float\0caml_format_int\0caml_fresh_oo_id\0caml_frexp_float\0caml_fs_init\0caml_gc_compaction\0caml_gc_counters\0caml_gc_full_major\0caml_gc_get\0caml_gc_huge_fallback_count\0caml_gc_major\0caml_gc_major_slice\0caml_gc_minor\0caml_gc_minor_words\0caml_gc_quick_stat\0caml_gc_set\0caml_gc_stat\0caml_ge_float\0caml_get_continuation_callstack\0caml_get_current_callstack\0caml_get_exception_backtrace\0caml_get_exception_raw_backtrace\0caml_get_global_data\0caml_get_major_bucket\0caml_get_major_credit\0caml_get_minor_free\0caml_get_public_method\0caml_get_root\0caml_global_data\0caml_gr_arc_aux\0caml_gr_blit_image\0caml_gr_clear_graph\0caml_gr_close_graph\0caml_gr_close_subwindow\0caml_gr_create_image\0caml_gr_current_x\0caml_gr_current_y\0caml_gr_display_mode\0caml_gr_doc_of_state\0caml_gr_draw_arc\0caml_gr_draw_char\0caml_gr_draw_image\0caml_gr_draw_rect\0caml_gr_draw_str\0caml_gr_draw_string\0caml_gr_dump_image\0caml_gr_fill_arc\0caml_gr_fill_poly\0caml_gr_fill_rect\0caml_gr_lineto\0caml_gr_make_image\0caml_gr_moveto\0caml_gr_open_graph\0caml_gr_open_subwindow\0caml_gr_plot\0caml_gr_point_color\0caml_gr_remember_mode\0caml_gr_resize_window\0caml_gr_set_color\0caml_gr_set_font\0caml_gr_set_line_width\0caml_gr_set_text_size\0caml_gr_set_window_title\0caml_gr_sigio_handler\0caml_gr_sigio_signal\0caml_gr_size_x\0caml_gr_size_y\0caml_gr_state\0caml_gr_state_create\0caml_gr_state_get\0caml_gr_state_init\0caml_gr_state_set\0caml_gr_synchronize\0caml_gr_text_size\0caml_gr_wait_event\0caml_gr_window_id\0caml_greaterequal\0caml_greaterthan\0caml_gt_float\0caml_hash\0caml_hash_mix_bigstring\0caml_hash_mix_bytes\0caml_hash_mix_bytes_arr\0caml_hash_mix_final\0caml_hash_mix_float\0caml_hash_mix_int\0caml_hash_mix_int64\0caml_hash_mix_jsbytes\0caml_hash_mix_string\0caml_hash_nat\0caml_hexstring_of_float\0caml_hypot_float\0caml_input_value\0caml_input_value_from_bytes\0caml_input_value_from_reader\0caml_input_value_from_string\0caml_input_value_to_outside_heap\0caml_install_signal_handler\0caml_int32_add\0caml_int32_and\0caml_int32_bits_of_float\0caml_int32_bswap\0caml_int32_compare\0caml_int32_div\0caml_int32_float_of_bits\0caml_int32_format\0caml_int32_mod\0caml_int32_mul\0caml_int32_neg\0caml_int32_of_float\0caml_int32_of_int\0caml_int32_of_string\0caml_int32_or\0caml_int32_shift_left\0caml_int32_shift_right\0caml_int32_shift_right_unsigned\0caml_int32_sub\0caml_int32_to_float\0caml_int32_to_int\0caml_int32_unmarshal\0caml_int32_xor\0caml_int64_add\0caml_int64_and\0caml_int64_bits_of_float\0caml_int64_bswap\0caml_int64_compare\0caml_int64_create_lo_hi\0caml_int64_create_lo_mi_hi\0caml_int64_div\0caml_int64_float_of_bits\0caml_int64_format\0caml_int64_hash\0caml_int64_hi32\0caml_int64_is_negative\0caml_int64_is_zero\0caml_int64_lo32\0caml_int64_marshal\0caml_int64_mod\0caml_int64_mul\0caml_int64_neg\0caml_int64_of_bytes\0caml_int64_of_float\0caml_int64_of_int\0caml_int64_of_int32\0caml_int64_of_nativeint\0caml_int64_of_string\0caml_int64_offset\0caml_int64_or\0caml_int64_shift_left\0caml_int64_shift_right\0caml_int64_shift_right_unsigned\0caml_int64_sub\0caml_int64_to_bytes\0caml_int64_to_float\0caml_int64_to_int\0caml_int64_to_int32\0caml_int64_to_nativeint\0caml_int64_ult\0caml_int64_unmarshal\0caml_int64_xor\0caml_int_compare\0caml_int_of_float\0caml_int_of_string\0caml_invalid_argument\0caml_is_continuation_tag\0caml_is_js\0caml_is_ml_bytes\0caml_is_ml_string\0caml_is_printable\0caml_is_special_exception\0caml_js_call\0caml_js_delete\0caml_js_equals\0caml_js_error_of_exception\0caml_js_error_option_of_exception\0caml_js_eval_string\0caml_js_expr\0caml_js_from_array\0caml_js_from_bool\0caml_js_from_float\0caml_js_from_int32\0caml_js_from_nativeint\0caml_js_from_string\0caml_js_fun_call\0caml_js_function_arity\0caml_js_get\0caml_js_get_console\0caml_js_html_entities\0caml_js_html_escape\0caml_js_instanceof\0caml_js_meth_call\0caml_js_new\0caml_js_object\0caml_js_on_ie\0caml_js_pure_expr\0caml_js_set\0caml_js_strict_equals\0caml_js_to_array\0caml_js_to_bool\0caml_js_to_byte_string\0caml_js_to_float\0caml_js_to_int32\0caml_js_to_nativeint\0caml_js_to_string\0caml_js_typeof\0caml_js_var\0caml_js_wrap_callback\0caml_js_wrap_callback_arguments\0caml_js_wrap_callback_strict\0caml_js_wrap_callback_unsafe\0caml_js_wrap_meth_callback\0caml_js_wrap_meth_callback_arguments\0caml_js_wrap_meth_callback_strict\0caml_js_wrap_meth_callback_unsafe\0caml_jsbytes_of_string\0caml_jsoo_flags_effects\0caml_jsoo_flags_use_js_string\0caml_jsstring_of_string\0caml_lazy_make_forward\0caml_lazy_read_result\0caml_lazy_reset_to_lazy\0caml_lazy_update_to_forcing\0caml_lazy_update_to_forward\0caml_ldexp_float\0caml_le_float\0caml_lessequal\0caml_lessthan\0caml_lex_array\0caml_lex_engine\0caml_list_mount_point\0caml_list_of_js_array\0caml_list_to_js_array\0caml_log10_float\0caml_log1p_float\0caml_log2_float\0caml_log_float\0caml_lt_float\0caml_lxm_next\0caml_make_array\0caml_make_float_vect\0caml_make_path\0caml_make_vect\0caml_marshal_constants\0caml_marshal_data_size\0caml_marshal_header_size\0caml_maybe_attach_backtrace\0caml_maybe_print_stats\0caml_md5_bytes\0caml_md5_chan\0caml_md5_string\0caml_memprof_discard\0caml_memprof_set\0caml_memprof_start\0caml_memprof_stop\0caml_ml_bytes_content\0caml_ml_bytes_length\0caml_ml_channel_size\0caml_ml_channel_size_64\0caml_ml_channels\0caml_ml_close_channel\0caml_ml_condition_broadcast\0caml_ml_condition_new\0caml_ml_condition_signal\0caml_ml_condition_wait\0caml_ml_debug_info_status\0caml_ml_domain_cpu_relax\0caml_ml_domain_id\0caml_ml_domain_set_name\0caml_ml_domain_unique_token\0caml_ml_enable_runtime_warnings\0caml_ml_flush\0caml_ml_input\0caml_ml_input_bigarray\0caml_ml_input_block\0caml_ml_input_char\0caml_ml_input_int\0caml_ml_input_scan_line\0caml_ml_is_buffered\0caml_ml_mutex_lock\0caml_ml_mutex_new\0caml_ml_mutex_try_lock\0caml_ml_mutex_unlock\0caml_ml_open_descriptor_in\0caml_ml_open_descriptor_out\0caml_ml_out_channels_list\0caml_ml_output\0caml_ml_output_bigarray\0caml_ml_output_bytes\0caml_ml_output_char\0caml_ml_output_int\0caml_ml_output_ta\0caml_ml_pos_in\0caml_ml_pos_in_64\0caml_ml_pos_out\0caml_ml_pos_out_64\0caml_ml_runtime_warnings_enabled\0caml_ml_seek_in\0caml_ml_seek_in_64\0caml_ml_seek_out\0caml_ml_seek_out_64\0caml_ml_set_binary_mode\0caml_ml_set_buffered\0caml_ml_set_channel_name\0caml_ml_set_channel_output\0caml_ml_set_channel_refill\0caml_ml_string_length\0caml_mod\0caml_modf_float\0caml_mount_autoload\0caml_mul\0caml_mul_float\0caml_named_value\0caml_named_values\0caml_nativeint_add\0caml_nativeint_and\0caml_nativeint_bswap\0caml_nativeint_compare\0caml_nativeint_div\0caml_nativeint_format\0caml_nativeint_mod\0caml_nativeint_mul\0caml_nativeint_neg\0caml_nativeint_of_float\0caml_nativeint_of_int\0caml_nativeint_of_int32\0caml_nativeint_of_string\0caml_nativeint_or\0caml_nativeint_shift_left\0caml_nativeint_shift_right\0caml_nativeint_shift_right_unsigned\0caml_nativeint_sub\0caml_nativeint_to_float\0caml_nativeint_to_int\0caml_nativeint_to_int32\0caml_nativeint_unmarshal\0caml_nativeint_xor\0caml_neg_float\0caml_neq_float\0caml_new_lex_engine\0caml_new_string\0caml_nextafter_float\0caml_notequal\0caml_obj_add_offset\0caml_obj_block\0caml_obj_compare_and_swap\0caml_obj_dup\0caml_obj_is_block\0caml_obj_is_shared\0caml_obj_make_forward\0caml_obj_raw_field\0caml_obj_reachable_words\0caml_obj_set_raw_field\0caml_obj_set_tag\0caml_obj_tag\0caml_obj_truncate\0caml_obj_update_tag\0caml_obj_with_tag\0caml_ojs_iterate_properties\0caml_ojs_new_arr\0caml_ojs_wrap_fun_arguments\0caml_oo_last_id\0caml_out_channel_pos_fd\0caml_output_val\0caml_output_value\0caml_output_value_to_buffer\0caml_output_value_to_bytes\0caml_output_value_to_string\0caml_parse_digit\0caml_parse_engine\0caml_parse_format\0caml_parse_sign_and_base\0caml_parser_trace\0caml_pos_in\0caml_pos_out\0caml_power_float\0caml_pure_js_expr\0caml_raise_constant\0caml_raise_end_of_file\0caml_raise_no_such_file\0caml_raise_not_a_dir\0caml_raise_not_found\0caml_raise_sys_error\0caml_raise_with_arg\0caml_raise_with_args\0caml_raise_with_string\0caml_raise_zero_divide\0caml_raw_backtrace_length\0caml_raw_backtrace_next_slot\0caml_raw_backtrace_slot\0caml_read_file_content\0caml_recommended_domain_count\0caml_record_backtrace\0caml_record_backtrace_flag\0caml_refill\0caml_register_channel_for_spacetime\0caml_register_global\0caml_register_named_value\0caml_restore_raw_backtrace\0caml_root\0caml_round_float\0caml_runtime_events_create_cursor\0caml_runtime_events_free_cursor\0caml_runtime_events_pause\0caml_runtime_events_read_poll\0caml_runtime_events_resume\0caml_runtime_events_start\0caml_runtime_events_user_register\0caml_runtime_events_user_resolve\0caml_runtime_events_user_write\0caml_runtime_parameters\0caml_runtime_variant\0caml_runtime_warnings\0caml_seek_in\0caml_seek_out\0caml_set_oo_id\0caml_set_parser_trace\0caml_set_static_env\0caml_signbit_float\0caml_sin_float\0caml_sinh_float\0caml_spacetime_enabled\0caml_spacetime_only_works_for_native_code\0caml_sqrt_float\0caml_str_initialize\0caml_str_repeat\0caml_string_bound_error\0caml_string_compare\0caml_string_equal\0caml_string_get\0caml_string_get16\0caml_string_get32\0caml_string_get64\0caml_string_greaterequal\0caml_string_greaterthan\0caml_string_hash\0caml_string_lessequal\0caml_string_lessthan\0caml_string_notequal\0caml_string_of_array\0caml_string_of_bytes\0caml_string_of_jsbytes\0caml_string_of_jsstring\0caml_string_set\0caml_string_set16\0caml_string_set32\0caml_string_set64\0caml_string_unsafe_get\0caml_string_unsafe_set\0caml_sub_float\0caml_subarray_to_jsbytes\0caml_sys_argv\0caml_sys_chdir\0caml_sys_close\0caml_sys_const_backend_type\0caml_sys_const_big_endian\0caml_sys_const_int_size\0caml_sys_const_max_wosize\0caml_sys_const_naked_pointers_checked\0caml_sys_const_ostype_cygwin\0caml_sys_const_ostype_unix\0caml_sys_const_ostype_win32\0caml_sys_const_word_size\0caml_sys_executable_name\0caml_sys_exit\0caml_sys_fds\0caml_sys_file_exists\0caml_sys_get_argv\0caml_sys_get_config\0caml_sys_getcwd\0caml_sys_getenv\0caml_sys_is_directory\0caml_sys_is_regular_file\0caml_sys_isatty\0caml_sys_mkdir\0caml_sys_modify_argv\0caml_sys_open\0caml_sys_open_for_node\0caml_sys_random_seed\0caml_sys_read_directory\0caml_sys_remove\0caml_sys_rename\0caml_sys_rmdir\0caml_sys_system_command\0caml_sys_time\0caml_sys_time_include_children\0caml_sys_unsafe_getenv\0caml_tan_float\0caml_tanh_float\0caml_to_js_string\0caml_trailing_slash\0caml_trampoline\0caml_trampoline_return\0caml_trunc_float\0caml_uint8_array_of_bytes\0caml_uint8_array_of_string\0caml_unix_cleanup\0caml_unix_closedir\0caml_unix_filedescr_of_fd\0caml_unix_findclose\0caml_unix_findfirst\0caml_unix_findnext\0caml_unix_getpwuid\0caml_unix_gettimeofday\0caml_unix_getuid\0caml_unix_gmtime\0caml_unix_has_symlink\0caml_unix_inet_addr_of_string\0caml_unix_isatty\0caml_unix_localtime\0caml_unix_lstat\0caml_unix_lstat_64\0caml_unix_mkdir\0caml_unix_mktime\0caml_unix_opendir\0caml_unix_readdir\0caml_unix_readlink\0caml_unix_rewinddir\0caml_unix_rmdir\0caml_unix_startup\0caml_unix_stat\0caml_unix_stat_64\0caml_unix_symlink\0caml_unix_time\0caml_unix_unlink\0caml_unmount\0caml_update_dummy\0caml_utf16_of_utf8\0caml_utf8_of_utf16\0caml_weak_blit\0caml_weak_check\0caml_weak_create\0caml_weak_get\0caml_weak_get_copy\0caml_weak_set\0caml_wrap_exception\0caml_xmlhttprequest_create\0compare_digits_nat\0compare_nat\0compare_nat_real\0complement_nat\0core_array_unsafe_float_blit\0core_array_unsafe_int_blit\0core_gc_compactions\0core_gc_heap_chunks\0core_gc_heap_words\0core_gc_major_collections\0core_gc_major_plus_minor_words\0core_gc_major_words\0core_gc_minor_collections\0core_gc_minor_words\0core_gc_promoted_words\0core_gc_run_memprof_callbacks\0core_gc_top_heap_words\0core_heap_block_is_heap_block\0core_md5_digest_subbigstring\0core_md5_fd\0core_time_ns_format\0create_nat\0decr_nat\0deserialize_nat\0div_digit_nat\0div_helper\0div_nat\0expect_test_collector_after_test\0expect_test_collector_before_test\0expect_test_collector_saved_stderr\0expect_test_collector_saved_stdout\0fs_node_supported\0incr_nat\0initialize_nat\0internalhash_fold_bigstring\0is_digit_int\0is_digit_odd\0is_digit_zero\0js_performance\0js_prof_clear_marks\0js_prof_clear_measures\0js_prof_mark\0js_prof_measure\0jsoo_create_file\0jsoo_create_file_extern\0jsoo_effect_not_supported\0jsoo_floor_log2\0jsoo_is_ascii\0jsoo_mount_point\0jsoo_sys_getenv\0land_digit_nat\0length_nat\0lor_digit_nat\0lxor_digit_nat\0make_unix_err_args\0mult_digit_nat\0mult_nat\0nat_of_array\0nth_digit_nat\0nth_digit_nat_native\0num_digits_nat\0num_leading_zero_bits_in_digit\0os_type\0path_is_absolute\0re_match\0re_partial_match\0re_replacement_text\0re_search_backward\0re_search_forward\0re_string_match\0resolve_fs_device\0serialize_nat\0set_digit_nat\0set_digit_nat_native\0set_to_zero_nat\0shift_left_nat\0shift_right_nat\0square_nat\0sub_nat\0time_now_nanoseconds_since_unix_epoch_or_zero\0unix_closedir\0unix_getpwuid\0unix_gettimeofday\0unix_getuid\0unix_gmtime\0unix_has_symlink\0unix_inet_addr_of_string\0unix_isatty\0unix_localtime\0unix_lstat\0unix_lstat_64\0unix_mkdir\0unix_mktime\0unix_opendir\0unix_readdir\0unix_readlink\0unix_rewinddir\0unix_rmdir\0unix_stat\0unix_stat_64\0unix_symlink\0unix_time\0unix_unlink\0win_cleanup\0win_filedescr_of_channel\0win_findclose\0win_findfirst\0win_findnext\0win_handle_fd\0win_startup\0"],0]]]];return}(globalThis)); //# 1 "../../.js/default/stdlib/stdlib.cma.js" // Generated by js_of_ocaml //# 3 "../../.js/default/stdlib/stdlib.cma.js" @@ -430819,347 +430819,6 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, /*<>*/ } (globalThis)); -//# 24003 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_a = "%a", - cst_2 = "<2>", - cst = "@,", - cst_Free$0 = "Free", - cst_InVarHole = "InVarHole", - cst_NotInVarHole$0 = "NotInVarHole", - cst_free = "free", - cst_inVarHole = "inVarHole", - cst_notInVarHole = "notInVarHole", - cst_src_haz3lcore_dynamics_Var = - "src/haz3lcore/dynamics/VarErrStatus.re.HoleReason.t", - cst_src_haz3lcore_dynamics_Var$0 = - "src/haz3lcore/dynamics/VarErrStatus.re.t", - caml_string_notequal = runtime.caml_string_notequal, - caml_update_dummy = runtime.caml_update_dummy; - /*<>*/ function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - /*<>*/ function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - /*<>*/ function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - var - global_data = runtime.caml_get_global_data(), - error_source_003 = cst_src_haz3lcore_dynamics_Var, - tp_loc = cst_src_haz3lcore_dynamics_Var, - error_source_007 = cst_src_haz3lcore_dynamics_Var$0, - tp_loc$0 = cst_src_haz3lcore_dynamics_Var$0, - Haz3lcore_Id = global_data.Haz3lcore__Id, - Ppx_yojson_conv_lib_Yojson_con = - global_data.Ppx_yojson_conv_lib__Yojson_conv_error, - Sexplib0_Sexp_conv_error = global_data.Sexplib0__Sexp_conv_error, - Stdlib_Format = global_data.Stdlib__Format, - _j_ = [0, -976970511, cst_InVarHole], - _k_ = [0, 848054398, [0, [0, -976970511, cst_NotInVarHole$0], 0]], - _h_ = [0, cst_InVarHole], - _i_ = [0, cst_NotInVarHole$0], - _g_ = [0, [15, 0], cst_a], - _d_ = - [0, - [12, - 40, - [18, - [1, [0, [11, cst_2, 0], cst_2]], - [11, "InVarHole (", [17, [0, cst, 0, 0], 0]]]], - "(@[<2>InVarHole (@,"], - _e_ = [0, [12, 44, [17, [0, "@ ", 1, 0], 0]], ",@ "], - _f_ = [0, [17, [0, cst, 0, 0], [11, "))", [17, 0, 0]]], "@,))@]"], - cst_NotInVarHole = cst_NotInVarHole$0, - cst_Free = cst_Free$0, - _a_ = [0, [15, 0], cst_a], - _c_ = [0, 848054398, [0, [0, -976970511, cst_Free$0], 0]], - _b_ = [0, cst_Free$0]; - function pp(fmt, param){ - /*<>*/ return /*<>*/ caml_call2 - (Stdlib_Format[13], fmt, cst_Free); - /*<>*/ } - function show(x){ - /*<>*/ return /*<>*/ caml_call3 - (Stdlib_Format[139], _a_, pp, x); - /*<>*/ } - /*<>*/ function t_of_sexp - (sexp_004){ - /*<>*/ a: - { - if(0 === sexp_004[0]){ - var _C_ = sexp_004[1]; - if - (caml_string_notequal(_C_, cst_Free$0) - && caml_string_notequal(_C_, cst_free)) - break a; - /*<>*/ return 0; - } - var _D_ = sexp_004[1]; - if(! _D_) - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[7], error_source_003, sexp_004); - var _E_ = _D_[1]; - if(0 !== _E_[0]) - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[6], error_source_003, sexp_004); - var _F_ = _E_[1]; - if - (caml_string_notequal(_F_, cst_Free$0) - && caml_string_notequal(_F_, cst_free)) - break a; - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_004); - } - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[8], error_source_003, sexp_004); - /*<>*/ } - function sexp_of_t(param){ - /*<>*/ return _b_; - /*<>*/ } - /*<>*/ function t_of_yojson - (yojson){ - /*<>*/ if - (typeof yojson !== "number" && 848054398 === yojson[1]){ - var _z_ = yojson[2]; - if(! _z_) - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[7], tp_loc, yojson); - var _A_ = _z_[1]; - if(typeof _A_ !== "number"){ - var _B_ = _A_[1]; - if(-976970511 === _B_){ - if(! caml_string_notequal(_A_[2], cst_Free$0)) - return _z_[2] - ? /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[3], tp_loc, yojson) - : 0; - } - else if(848054398 === _B_) - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[6], tp_loc, yojson); - } - } - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[8], tp_loc, yojson); - /*<>*/ } - function yojson_of_t(param){ - /*<>*/ return _c_; - /*<>*/ } - /*<>*/ var - /*<>*/ HoleReason = - [0, pp, show, t_of_sexp, sexp_of_t, t_of_yojson, yojson_of_t], - pp$0 = function _y_(_w_, _x_){return _y_.fun(_w_, _x_);}, - show$0 = function _v_(_u_){return _v_.fun(_u_);}; - function _1(param){ - /*<>*/ return Haz3lcore_Id[9]; - /*<>*/ } - function _0(param){ - /*<>*/ return HoleReason[1]; - /*<>*/ } - caml_update_dummy - (pp$0, - function(fmt, param){ - /*<>*/ if(! param) - /*<>*/ return /*<>*/ caml_call2 - (Stdlib_Format[13], fmt, cst_NotInVarHole); - var a1 = param[2], a0 = param[1]; - /*<>*/ /*<>*/ caml_call2 - (Stdlib_Format[135], fmt, _d_); - /*<>*/ /*<>*/ caml_call1 - ( /*<>*/ caml_call1 - (_0(0), fmt), - a0); - /*<>*/ /*<>*/ caml_call2 - (Stdlib_Format[135], fmt, _e_); - /*<>*/ /*<>*/ caml_call1 - ( /*<>*/ caml_call1 - (_1(0), fmt), - a1); - /*<>*/ return /*<>*/ caml_call2 - (Stdlib_Format[135], fmt, _f_); - /*<>*/ }); - caml_update_dummy - (show$0, - function(x){ - /*<>*/ return /*<>*/ caml_call3 - (Stdlib_Format[139], _g_, pp$0, x); - /*<>*/ }); - function t_of_sexp$0(sexp_009){ - /*<>*/ a: - { - if(0 === sexp_009[0]){ - var _q_ = sexp_009[1]; - b: - if(caml_string_notequal(_q_, cst_InVarHole)){ - if(caml_string_notequal(_q_, cst_NotInVarHole$0)){ - if(! caml_string_notequal(_q_, cst_inVarHole)) break b; - if(caml_string_notequal(_q_, cst_notInVarHole)) break a; - } - /*<>*/ return 0; - } - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_007, sexp_009); - } - var _r_ = sexp_009[1]; - if(! _r_) - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[7], error_source_007, sexp_009); - var _s_ = _r_[1]; - if(0 !== _s_[0]) - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[6], error_source_007, sexp_009); - var tag_010 = _s_[1]; - b: - if(caml_string_notequal(tag_010, cst_InVarHole)){ - if(caml_string_notequal(tag_010, cst_NotInVarHole$0)){ - if(! caml_string_notequal(tag_010, cst_inVarHole)) break b; - if(caml_string_notequal(tag_010, cst_notInVarHole)) break a; - } - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_007, sexp_009); - } - var sexp_args_011 = _r_[2]; - /*<>*/ if(sexp_args_011){ - var _t_ = sexp_args_011[2]; - if(_t_ && ! _t_[2]){ - /*<>*/ var - arg1_013 = _t_[1], - arg0_012 = sexp_args_011[1], - /*<>*/ res0_014 = - /*<>*/ caml_call1 - (HoleReason[3], arg0_012), - /*<>*/ res1_015 = - /*<>*/ caml_call1 - (Haz3lcore_Id[2], arg1_013); - /*<>*/ return [0, - res0_014, - res1_015]; - } - } - /*<>*/ return /*<>*/ caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_007, - tag_010, - sexp_009); - } - /*<>*/ return /*<>*/ caml_call2 - (Sexplib0_Sexp_conv_error[8], error_source_007, sexp_009); - /*<>*/ } - function sexp_of_t$0(param){ - /*<>*/ if(! param) - /*<>*/ return _i_; - /*<>*/ var - arg1_017 = param[2], - arg0_016 = param[1], - /*<>*/ res0_018 = - /*<>*/ caml_call1 - (HoleReason[4], arg0_016), - /*<>*/ res1_019 = - /*<>*/ caml_call1 - (Haz3lcore_Id[1], arg1_017); - /*<>*/ return [1, - [0, _h_, [0, res0_018, [0, res1_019, 0]]]]; - /*<>*/ } - function t_of_yojson$0(yojson){ - /*<>*/ if - (typeof yojson !== "number"){ - var _l_ = yojson[1]; - if(-976970511 === _l_){ - if(! caml_string_notequal(yojson[2], cst_InVarHole)) - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[5], tp_loc$0, yojson); - } - else if(848054398 === _l_){ - var _m_ = yojson[2]; - if(! _m_) - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[7], tp_loc$0, yojson); - var _n_ = _m_[1]; - if(typeof _n_ !== "number"){ - var _o_ = _n_[1]; - if(-976970511 === _o_){ - var tag = _n_[2]; - if(! caml_string_notequal(tag, cst_InVarHole)){ - var yojson_args = _m_[2]; - /*<>*/ if(yojson_args){ - var _p_ = yojson_args[2]; - if(_p_ && ! _p_[2]){ - /*<>*/ var - v1 = _p_[1], - v0 = yojson_args[1], - /*<>*/ v0$0 = - /*<>*/ caml_call1 - (HoleReason[5], v0), - /*<>*/ v1$0 = - /*<>*/ caml_call1 - (Haz3lcore_Id[4], v1); - /*<>*/ return [0, - v0$0, - v1$0]; - } - } - /*<>*/ return /*<>*/ caml_call3 - (Ppx_yojson_conv_lib_Yojson_con[4], tp_loc$0, tag, yojson); - } - if(! caml_string_notequal(tag, cst_NotInVarHole$0)) - return _m_[2] - ? /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[3], tp_loc$0, yojson) - : 0; - } - else if(848054398 === _o_) - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[6], tp_loc$0, yojson); - } - } - } - /*<>*/ return /*<>*/ caml_call2 - (Ppx_yojson_conv_lib_Yojson_con[8], tp_loc$0, yojson); - /*<>*/ } - function yojson_of_t$0(param){ - /*<>*/ if(! param) - /*<>*/ return _k_; - /*<>*/ var - v1 = param[2], - v0 = param[1], - /*<>*/ v0$0 = - /*<>*/ caml_call1 - (HoleReason[6], v0), - /*<>*/ v1$0 = - /*<>*/ caml_call1 - (Haz3lcore_Id[3], v1); - /*<>*/ return [0, - 848054398, - [0, _j_, [0, v0$0, [0, v1$0, 0]]]]; - /*<>*/ } - var - Haz3lcore_VarErrStatus = - [0, - HoleReason, - pp$0, - show$0, - t_of_sexp$0, - sexp_of_t$0, - t_of_yojson$0, - yojson_of_t$0]; - runtime.caml_register_global - (37, Haz3lcore_VarErrStatus, "Haz3lcore__VarErrStatus"); - return; - /*<>*/ } - (globalThis)); - //# 24345 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function (globalThis){ @@ -526032,143 +525691,43 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, // Generated by js_of_ocaml //# 3 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -//# 15 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function(globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime, nbsp = "\xc2\xa0"; - function length(s){ - var stop = runtime.caml_ml_string_length(s), start = 0, count = 0; - for(;;){ - if(stop <= (start + count | 0)) return stop - count | 0; - var n = runtime.caml_string_unsafe_get(s, start + count | 0); - if(128 <= n) - if(224 <= n) - if(240 <= n) - var - count$0 = count + 3 | 0, - start$0 = start + 1 | 0, - start = start$0, - count = count$0; - else - var - count$1 = count + 2 | 0, - start$1 = start + 1 | 0, - start = start$1, - count = count$1; - else - var - count$2 = count + 1 | 0, - start$2 = start + 1 | 0, - start = start$2, - count = count$2; - else - var start$3 = start + 1 | 0, start = start$3; - } - } - var Pretty_Unicode = [0, nbsp, length]; - runtime.caml_register_global(1, Pretty_Unicode, "Pretty__Unicode"); - return; - } - (globalThis)); -//# 54 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function(globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - var empty = 0; - function singleton(pos, x){return [0, [0, pos, x], 0];} - function union(f, t1, t2){ - if(! t1) return t2; - if(! t2) return t1; - var - xs2 = t2[2], - _d_ = t2[1], - x2 = _d_[2], - p2 = _d_[1], - xs1 = t1[2], - match = t1[1], - x1 = match[2], - p1 = match[1]; - if(p1 < p2) return [0, [0, p1, x1], union(f, xs1, [0, [0, p2, x2], xs2])]; - if(p2 < p1) return [0, [0, p2, x2], union(f, [0, [0, p1, x1], xs1], xs2)]; - var _e_ = union(f, xs1, xs2); - return [0, [0, p1, caml_call2(f, x1, x2)], _e_]; - } - function map(f, param){ - if(! param) return 0; - var - rest = param[2], - match = param[1], - x = match[2], - pos = match[1], - _c_ = map(f, rest); - return [0, [0, pos, caml_call1(f, x)], _c_]; - } - function mapi(f, param){ - if(! param) return 0; - var - rest = param[2], - match = param[1], - x = match[2], - pos = match[1], - _b_ = mapi(f, rest); - return [0, [0, pos, caml_call2(f, pos, x)], _b_]; - } - function mapk(f, param){ - if(! param) return 0; - var - rest = param[2], - match = param[1], - x = match[2], - pos = match[1], - _a_ = mapk(f, rest); - return [0, caml_call2(f, pos, x), _a_]; - } - function fold_left(f, z, param){ - var z$0 = z, param$0 = param; - for(;;){ - if(! param$0) return z$0; - var - rest = param$0[2], - match = param$0[1], - x = match[2], - pos = match[1], - z$1 = caml_call3(f, pos, z$0, x), - z$0 = z$1, - param$0 = rest; - } - } - var - Pretty_PosMap = [0, empty, singleton, union, map, mapi, mapk, fold_left]; - runtime.caml_register_global(0, Pretty_PosMap, "Pretty__PosMap"); - return; - } - (globalThis)); +//# 1 "../haz3lschool/.haz3lschool.objs/jsoo/default/haz3lschool.cma.js" +// Generated by js_of_ocaml +//# 3 "../haz3lschool/.haz3lschool.objs/jsoo/default/haz3lschool.cma.js" -//# 153 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" +//# 16 "../haz3lschool/.haz3lschool.objs/jsoo/default/haz3lschool.cma.js" (function (globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, - cst_col$0 = "col", - cst_row$0 = "row", + cst$1 = "", + cst$2 = " =", + cst_S = "%S", + cst_a = "%a", + cst$0 = ";@ ", + cst_2 = "<2>", + cst = "@ ", + cst_s = "@[%s =@ ", + cst$3 = "@]", + cst$4 = "@])", + cst_IsNotRecursive = "IsNotRecursive", + cst_IsRecursive = "IsRecursive", + cst_IsTailRecursive = "IsTailRecursive", + cst_VarApplied = "VarApplied", + cst_isNotRecursive = "isNotRecursive", + cst_isRecursive = "isRecursive", + cst_isTailRecursive = "isTailRecursive", + cst_percentage$3 = "percentage", + cst_results$3 = "results", + cst_src_haz3lschool_SyntaxTest$0 = + "src/haz3lschool/SyntaxTest.re.predicate", + cst_src_haz3lschool_SyntaxTest = + "src/haz3lschool/SyntaxTest.re.syntax_result", + cst_varApplied = "varApplied", caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, + caml_string_equal = runtime.caml_string_equal, caml_string_notequal = runtime.caml_string_notequal; function caml_call1(f, a0){ return (f.l >= 0 ? f.l : f.l = f.length) == 1 @@ -526185,28 +525744,141 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, ? f(a0, a1, a2) : runtime.caml_call_gen(f, [a0, a1, a2]); } + function caml_call4(f, a0, a1, a2, a3){ + return (f.l >= 0 ? f.l : f.l = f.length) == 4 + ? f(a0, a1, a2, a3) + : runtime.caml_call_gen(f, [a0, a1, a2, a3]); + } var global_data = runtime.caml_get_global_data(), - error_source_015 = "src/pretty/MeasuredPosition.re.t", - zero = [0, 0, 0], - Stdlib_Int = global_data.Stdlib__Int, + error_source_015 = cst_src_haz3lschool_SyntaxTest, + tp_loc = cst_src_haz3lschool_SyntaxTest, + error_source_026 = cst_src_haz3lschool_SyntaxTest$0, + tp_loc$0 = cst_src_haz3lschool_SyntaxTest$0, + Stdlib_Format = global_data.Stdlib__Format, + Stdlib_List = global_data.Stdlib__List, + Haz3lcore_Exp = global_data.Haz3lcore__Exp, + Ppx_yojson_conv_lib_Yojson_con$0 = + global_data.Ppx_yojson_conv_lib__Yojson_conv, + Ppx_yojson_conv_lib_Yojson_con = + global_data.Ppx_yojson_conv_lib__Yojson_conv_error, Sexplib_Std = global_data.Sexplib__Std, - Assert_failure = global_data.Assert_failure, Sexplib0_Sexp_conv_error = global_data.Sexplib0__Sexp_conv_error, + Util_ListUtil = global_data.Util__ListUtil, + Ppx_yojson_conv_lib = global_data.Ppx_yojson_conv_lib, + Assert_failure = global_data.Assert_failure, Sexplib0_Sexp_conv = global_data.Sexplib0__Sexp_conv, - _b_ = [0, cst_col$0], - _c_ = [0, cst_row$0], - _a_ = [0, "src/pretty/MeasuredPosition.re", 4, 0], - cst_col = cst_col$0, - cst_row = cst_row$0; - function t_of_sexp(sexp_002){ + _d_ = [0, [12, 59, [17, [0, cst, 1, 0], 0]], cst$0], + _e_ = [0, [9, 0, 0], "%B"], + _c_ = [0, [18, [1, [0, [11, cst_2, 0], cst_2]], [12, 91, 0]], "@[<2>["], + _f_ = [0, [17, [0, "@,", 0, 0], [12, 93, [17, 0, 0]]], "@,]@]"], + _a_ = [0, [18, [1, [0, [11, cst_2, 0], cst_2]], [11, "{ ", 0]], "@[<2>{ "], + cst_results = cst_results$3, + _b_ = + [0, + [18, [1, [0, 0, cst$1]], [2, 0, [11, cst$2, [17, [0, cst, 1, 0], 0]]]], + cst_s], + _g_ = [0, [17, 0, 0], cst$3], + _h_ = [0, [12, 59, [17, [0, cst, 1, 0], 0]], cst$0], + cst_percentage = cst_percentage$3, + _i_ = + [0, + [18, [1, [0, 0, cst$1]], [2, 0, [11, cst$2, [17, [0, cst, 1, 0], 0]]]], + cst_s], + _j_ = [0, [8, [0, 0, 5], 0, 0, 0], "%F"], + _k_ = [0, [17, 0, 0], cst$3], + _l_ = [0, [17, [0, cst, 1, 0], [12, 125, [17, 0, 0]]], "@ }@]"], + _m_ = [0, [15, 0], cst_a], + _q_ = + [0, + [12, + 40, + [18, + [1, [0, [11, cst_2, 0], cst_2]], + [11, cst_VarApplied, [17, [0, cst, 1, 0], 0]]]], + "(@[<2>VarApplied@ "], + _r_ = [0, [3, 0, 0], cst_S], + _s_ = [0, [17, 0, [12, 41, 0]], cst$4], + _t_ = + [0, + [12, + 40, + [18, + [1, [0, [11, cst_2, 0], cst_2]], + [11, cst_IsRecursive, [17, [0, cst, 1, 0], 0]]]], + "(@[<2>IsRecursive@ "], + _u_ = [0, [3, 0, 0], cst_S], + _v_ = [0, [17, 0, [12, 41, 0]], cst$4], + _w_ = + [0, + [12, + 40, + [18, + [1, [0, [11, cst_2, 0], cst_2]], + [11, cst_IsNotRecursive, [17, [0, cst, 1, 0], 0]]]], + "(@[<2>IsNotRecursive@ "], + _x_ = [0, [3, 0, 0], cst_S], + _y_ = [0, [17, 0, [12, 41, 0]], cst$4], + _z_ = + [0, + [12, + 40, + [18, + [1, [0, [11, cst_2, 0], cst_2]], + [11, cst_IsTailRecursive, [17, [0, cst, 1, 0], 0]]]], + "(@[<2>IsTailRecursive@ "], + _A_ = [0, [3, 0, 0], cst_S], + _B_ = [0, [17, 0, [12, 41, 0]], cst$4], + _C_ = [0, [15, 0], cst_a], + _H_ = [0, -976970511, cst_VarApplied], + _I_ = [0, -976970511, cst_IsRecursive], + _J_ = [0, -976970511, cst_IsNotRecursive], + _K_ = [0, -976970511, cst_IsTailRecursive], + _D_ = [0, cst_VarApplied], + _E_ = [0, cst_IsRecursive], + _F_ = [0, cst_IsNotRecursive], + _G_ = [0, cst_IsTailRecursive], + cst_percentage$2 = cst_percentage$3, + cst_results$2 = cst_results$3, + cst_percentage$1 = cst_percentage$3, + cst_results$1 = cst_results$3, + _o_ = [0, cst_percentage$3], + _p_ = [0, cst_results$3], + _n_ = [0, "src/haz3lschool/SyntaxTest.re", 12, 0], + cst_percentage$0 = cst_percentage$3, + cst_results$0 = cst_results$3; + function pp_syntax_result(fmt, x){ + caml_call2(Stdlib_Format[135], fmt, _a_); + caml_call3(Stdlib_Format[135], fmt, _b_, cst_results); + var x$0 = x[1]; + caml_call2(Stdlib_Format[135], fmt, _c_); + var _a$_ = 0; + function _ba_(sep, x){ + if(sep) caml_call2(Stdlib_Format[135], fmt, _d_); + caml_call1(caml_call2(Stdlib_Format[135], fmt, _e_), x); + return 1; + } + caml_call3(Stdlib_List[25], _ba_, _a$_, x$0); + caml_call2(Stdlib_Format[135], fmt, _f_); + caml_call2(Stdlib_Format[135], fmt, _g_); + caml_call2(Stdlib_Format[135], fmt, _h_); + caml_call3(Stdlib_Format[135], fmt, _i_, cst_percentage); + var _bb_ = x[2]; + caml_call1(caml_call2(Stdlib_Format[135], fmt, _j_), _bb_); + caml_call2(Stdlib_Format[135], fmt, _k_); + return caml_call2(Stdlib_Format[135], fmt, _l_); + } + function show_syntax_result(x){ + return caml_call3(Stdlib_Format[139], _m_, pp_syntax_result, x); + } + function syntax_result_of_sexp(sexp_002){ if(0 === sexp_002[0]) return caml_call2 (Sexplib0_Sexp_conv_error[16], error_source_015, sexp_002); var field_sexps_003 = sexp_002[1], - row_004 = [0, 0], - col_006 = [0, 0], + results_004 = [0, 0], + percentage_006 = [0, 0], duplicates_008 = [0, 0], extra_009 = [0, 0]; a: @@ -526222,11 +525894,11 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, if(! param) break; var sexp_002$0 = param[1]; if(1 !== sexp_002$0[0]) break b; - var _d_ = sexp_002$0[1]; - if(! _d_) break c; - var _e_ = _d_[1]; - if(0 !== _e_[0]) break e; - var field_sexps_012 = _d_[2], field_name_010 = _e_[1]; + var _a8_ = sexp_002$0[1]; + if(! _a8_) break c; + var _a9_ = _a8_[1]; + if(0 !== _a9_[0]) break e; + var field_sexps_012 = _a8_[2], field_name_010 = _a9_[1]; if(field_sexps_012 && field_sexps_012[2]) break d; var tail_017 = param[2], @@ -526237,2072 +525909,34 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, return caml_call2 (Sexplib0_Sexp_conv_error[10], error_source_015, sexp_002); if(field_sexps_012[2]) - throw caml_maybe_attach_backtrace([0, Assert_failure, _a_], 1); + throw caml_maybe_attach_backtrace([0, Assert_failure, _n_], 1); var x_018 = field_sexps_012[1]; return x_018; } return field_sexp_011; }, field_sexp_011 = field_sexp_011$2(field_sexps_012); - if(caml_string_notequal(field_name_010, cst_col$0)) - if(caml_string_notequal(field_name_010, cst_row$0)){ + if(caml_string_notequal(field_name_010, cst_percentage$3)) + if(caml_string_notequal(field_name_010, cst_results$3)){ if(Sexplib0_Sexp_conv[26][1]) extra_009[1] = [0, field_name_010, extra_009[1]]; } - else if(row_004[1]) + else if(results_004[1]) duplicates_008[1] = [0, field_name_010, duplicates_008[1]]; else{ var field_sexp_011$0 = field_sexp_011(0), - fvalue_014 = caml_call1(Sexplib_Std[16], field_sexp_011$0); - row_004[1] = [0, fvalue_014]; + fvalue_014 = + caml_call2(Sexplib_Std[40], Sexplib_Std[7], field_sexp_011$0); + results_004[1] = [0, fvalue_014]; } - else if(col_006[1]) + else if(percentage_006[1]) duplicates_008[1] = [0, field_name_010, duplicates_008[1]]; else{ var field_sexp_011$1 = field_sexp_011(0), - fvalue_013 = caml_call1(Sexplib_Std[16], field_sexp_011$1); - col_006[1] = [0, fvalue_013]; - } - var param = tail_017; - } - break a; - } - break c; - } - caml_call2(Sexplib0_Sexp_conv_error[10], error_source_015, sexp_002$0); - } - if(duplicates_008[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[12], - error_source_015, - duplicates_008[1], - sexp_002); - if(extra_009[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[13], - error_source_015, - extra_009[1], - sexp_002); - var _f_ = row_004[1], match = col_006[1]; - if(_f_ && match){ - var col_007 = match[1], row_005 = _f_[1]; - return [0, row_005, col_007]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[15], - error_source_015, - sexp_002, - [0, - [0, 0 === row_004[1] ? 1 : 0, cst_row], - [0, [0, 0 === col_006[1] ? 1 : 0, cst_col], 0]]); - } - function sexp_of_t(param){ - var - col_022 = param[2], - row_020 = param[1], - arg_023 = caml_call1(Sexplib_Std[15], col_022), - bnds_019 = [0, [1, [0, _b_, [0, arg_023, 0]]], 0], - arg_021 = caml_call1(Sexplib_Std[15], row_020), - bnds_019$0 = [0, [1, [0, _c_, [0, arg_021, 0]]], bnds_019]; - return [1, bnds_019$0]; - } - function compare(pos1, pos2){ - return pos1[1] < pos2[1] - ? -1 - : pos2 - [1] - < pos1[1] - ? 1 - : caml_call2(Stdlib_Int[9], pos1[2], pos2[2]); - } - var Pretty_MeasuredPosition = [0, t_of_sexp, sexp_of_t, compare, zero]; - runtime.caml_register_global - (14, Pretty_MeasuredPosition, "Pretty__MeasuredPosition"); - return; - } - (globalThis)); - -//# 668 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime, cst_empty_list$1 = "empty list"; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - global_data = runtime.caml_get_global_data(), - Stdlib = global_data.Stdlib, - Stdlib_List = global_data.Stdlib__List, - cst_empty_list$0 = cst_empty_list$1, - cst_empty_list = cst_empty_list$1; - function split_first(xs){ - if(! xs) return caml_call1(Stdlib[2], cst_empty_list); - var trailing = xs[2], first = xs[1]; - return [0, first, trailing]; - } - function split_last_opt(xs){ - var match = caml_call1(Stdlib_List[9], xs); - if(! match) return 0; - var ys = match[2], y = match[1]; - return [0, [0, caml_call1(Stdlib_List[9], ys), y]]; - } - function split_last(xs){ - var match = split_last_opt(xs); - if(! match) return caml_call1(Stdlib[2], cst_empty_list$0); - var r = match[1]; - return r; - } - var Pretty_ListUtil = [0, split_first, split_last_opt, split_last]; - runtime.caml_register_global(4, Pretty_ListUtil, "Pretty__ListUtil"); - return; - } - (globalThis)); - -//# 708 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_Align = "Align", - cst_Annot = "Annot", - cst_Cat = "Cat", - cst_Linebreak = "Linebreak", - cst_Text = "Text", - cst_align = "align", - cst_annot = "annot", - cst_cat = "cat", - cst_height$0 = "height", - cst_layout$0 = "layout", - cst_linebreak = "linebreak", - cst_metrics$0 = "metrics", - cst_src_pretty_MeasuredLayout_ = "src/pretty/MeasuredLayout.re", - cst_text = "text", - cst_width$0 = "width", - caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, - caml_string_compare = runtime.caml_string_compare, - caml_string_notequal = runtime.caml_string_notequal, - caml_update_dummy = runtime.caml_update_dummy; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - function caml_call5(f, a0, a1, a2, a3, a4){ - return (f.l >= 0 ? f.l : f.l = f.length) == 5 - ? f(a0, a1, a2, a3, a4) - : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4]); - } - var - global_data = runtime.caml_get_global_data(), - box = [0, 1, 0], - error_source_015 = "src/pretty/MeasuredLayout.re.box", - error_source_039 = "src/pretty/MeasuredLayout.re.t", - error_source_046 = "src/pretty/MeasuredLayout.re.t'", - Stdlib = global_data.Stdlib, - Pretty_Unicode = global_data.Pretty__Unicode, - Pretty_ListUtil = global_data.Pretty__ListUtil, - Stdlib_List = global_data.Stdlib__List, - Pretty_MeasuredPosition = global_data.Pretty__MeasuredPosition, - Sexplib_Std = global_data.Sexplib__Std, - Sexplib0_Sexp_conv_error = global_data.Sexplib0__Sexp_conv_error, - Assert_failure = global_data.Assert_failure, - Sexplib0_Sexp_conv = global_data.Sexplib0__Sexp_conv, - _l_ = [0, 0, 0], - _e_ = [0, cst_metrics$0], - _f_ = [0, cst_layout$0], - _g_ = [0, cst_Linebreak], - _h_ = [0, cst_Text], - _i_ = [0, cst_Align], - _j_ = [0, cst_Cat], - _k_ = [0, cst_Annot], - _d_ = [0, cst_src_pretty_MeasuredLayout_, 10, 0], - cst_metrics = cst_metrics$0, - cst_layout = cst_layout$0, - _b_ = [0, cst_width$0], - _c_ = [0, cst_height$0], - _a_ = [0, cst_src_pretty_MeasuredLayout_, 4, 0], - cst_width = cst_width$0, - cst_height = cst_height$0; - function box_of_sexp(sexp_002){ - if(0 === sexp_002[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[16], error_source_015, sexp_002); - var - field_sexps_003 = sexp_002[1], - height_004 = [0, 0], - width_006 = [0, 0], - duplicates_008 = [0, 0], - extra_009 = [0, 0]; - a: - { - b: - c: - d: - { - e: - { - var param = field_sexps_003; - for(;;){ - if(! param) break; - var sexp_002$0 = param[1]; - if(1 !== sexp_002$0[0]) break b; - var _U_ = sexp_002$0[1]; - if(! _U_) break c; - var _V_ = _U_[1]; - if(0 !== _V_[0]) break e; - var field_sexps_012 = _U_[2], field_name_010 = _V_[1]; - if(field_sexps_012 && field_sexps_012[2]) break d; - var - tail_017 = param[2], - field_sexp_011$2 = - function(field_sexps_012){ - function field_sexp_011(param){ - if(! field_sexps_012) - return caml_call2 - (Sexplib0_Sexp_conv_error[10], error_source_015, sexp_002); - if(field_sexps_012[2]) - throw caml_maybe_attach_backtrace([0, Assert_failure, _a_], 1); - var x_018 = field_sexps_012[1]; - return x_018; - } - return field_sexp_011; - }, - field_sexp_011 = field_sexp_011$2(field_sexps_012); - if(caml_string_notequal(field_name_010, cst_height$0)) - if(caml_string_notequal(field_name_010, cst_width$0)){ - if(Sexplib0_Sexp_conv[26][1]) - extra_009[1] = [0, field_name_010, extra_009[1]]; - } - else if(width_006[1]) - duplicates_008[1] = [0, field_name_010, duplicates_008[1]]; - else{ - var - field_sexp_011$0 = field_sexp_011(0), - fvalue_013 = caml_call1(Sexplib_Std[16], field_sexp_011$0); - width_006[1] = [0, fvalue_013]; - } - else if(height_004[1]) - duplicates_008[1] = [0, field_name_010, duplicates_008[1]]; - else{ - var - field_sexp_011$1 = field_sexp_011(0), - fvalue_014 = caml_call1(Sexplib_Std[16], field_sexp_011$1); - height_004[1] = [0, fvalue_014]; - } - var param = tail_017; - } - break a; - } - break c; - } - caml_call2(Sexplib0_Sexp_conv_error[10], error_source_015, sexp_002$0); - } - if(duplicates_008[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[12], - error_source_015, - duplicates_008[1], - sexp_002); - if(extra_009[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[13], - error_source_015, - extra_009[1], - sexp_002); - var _W_ = height_004[1], match = width_006[1]; - if(_W_ && match){ - var width_007 = match[1], height_005 = _W_[1]; - return [0, height_005, width_007]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[15], - error_source_015, - sexp_002, - [0, - [0, 0 === height_004[1] ? 1 : 0, cst_height], - [0, [0, 0 === width_006[1] ? 1 : 0, cst_width], 0]]); - } - function sexp_of_box(param){ - var - width_022 = param[2], - height_020 = param[1], - arg_023 = caml_call1(Sexplib_Std[15], width_022), - bnds_019 = [0, [1, [0, _b_, [0, arg_023, 0]]], 0], - arg_021 = caml_call1(Sexplib_Std[15], height_020), - bnds_019$0 = [0, [1, [0, _c_, [0, arg_021, 0]]], bnds_019]; - return [1, bnds_019$0]; - } - var - t_of_sexp = function _T_(_R_, _S_){return _T_.fun(_R_, _S_);}, - t_of_sexp$0 = function _Q_(_O_, _P_){return _Q_.fun(_O_, _P_);}; - caml_update_dummy - (t_of_sexp, - function(of_annot_024, sexp_026){ - if(0 === sexp_026[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[16], error_source_039, sexp_026); - var - field_sexps_027 = sexp_026[1], - layout_028 = [0, 0], - metrics_030 = [0, 0], - duplicates_032 = [0, 0], - extra_033 = [0, 0]; - a: - { - b: - c: - d: - { - e: - { - var param = field_sexps_027; - for(;;){ - if(! param) break; - var sexp_026$0 = param[1]; - if(1 !== sexp_026$0[0]) break b; - var _L_ = sexp_026$0[1]; - if(! _L_) break c; - var _M_ = _L_[1]; - if(0 !== _M_[0]) break e; - var field_sexps_036 = _L_[2], field_name_034 = _M_[1]; - if(field_sexps_036 && field_sexps_036[2]) break d; - var - tail_041 = param[2], - field_sexp_035$2 = - function(field_sexps_036){ - function field_sexp_035(param){ - if(! field_sexps_036) - return caml_call2 - (Sexplib0_Sexp_conv_error[10], error_source_039, sexp_026); - if(field_sexps_036[2]) - throw caml_maybe_attach_backtrace([0, Assert_failure, _d_], 1); - var x_042 = field_sexps_036[1]; - return x_042; - } - return field_sexp_035; - }, - field_sexp_035 = field_sexp_035$2(field_sexps_036); - if(caml_string_notequal(field_name_034, cst_layout$0)) - if(caml_string_notequal(field_name_034, cst_metrics$0)){ - if(Sexplib0_Sexp_conv[26][1]) - extra_033[1] = [0, field_name_034, extra_033[1]]; - } - else if(metrics_030[1]) - duplicates_032[1] = [0, field_name_034, duplicates_032[1]]; - else{ - var - field_sexp_035$0 = field_sexp_035(0), - fvalue_037 = - caml_call2(Sexplib_Std[40], box_of_sexp, field_sexp_035$0); - metrics_030[1] = [0, fvalue_037]; - } - else if(layout_028[1]) - duplicates_032[1] = [0, field_name_034, duplicates_032[1]]; - else{ - var - field_sexp_035$1 = field_sexp_035(0), - fvalue_038 = - caml_call2(t_of_sexp$0, of_annot_024, field_sexp_035$1); - layout_028[1] = [0, fvalue_038]; - } - var param = tail_041; - } - break a; - } - break c; - } - caml_call2(Sexplib0_Sexp_conv_error[10], error_source_039, sexp_026$0); - } - if(duplicates_032[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[12], - error_source_039, - duplicates_032[1], - sexp_026); - if(extra_033[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[13], - error_source_039, - extra_033[1], - sexp_026); - var _N_ = layout_028[1], match = metrics_030[1]; - if(_N_ && match){ - var metrics_031 = match[1], layout_029 = _N_[1]; - return [0, layout_029, metrics_031]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[15], - error_source_039, - sexp_026, - [0, - [0, 0 === layout_028[1] ? 1 : 0, cst_layout], - [0, [0, 0 === metrics_030[1] ? 1 : 0, cst_metrics], 0]]); - }); - caml_update_dummy - (t_of_sexp$0, - function(of_annot_043, sexp_048){ - a: - { - if(0 === sexp_048[0]){ - var _E_ = sexp_048[1], _F_ = caml_string_compare(_E_, cst_align); - b: - { - c: - { - d: - { - e: - { - if(0 <= _F_){ - if(0 < _F_){ - if(! caml_string_notequal(_E_, cst_annot)) break e; - if(! caml_string_notequal(_E_, cst_cat)) break d; - if(! caml_string_notequal(_E_, cst_linebreak)) break c; - if(caml_string_notequal(_E_, cst_text)) break a; - break b; - } - } - else if(caml_string_notequal(_E_, cst_Align)){ - if(! caml_string_notequal(_E_, cst_Annot)) break e; - if(! caml_string_notequal(_E_, cst_Cat)) break d; - if(! caml_string_notequal(_E_, cst_Linebreak)) break c; - if(caml_string_notequal(_E_, cst_Text)) break a; - break b; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_046, sexp_048); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_046, sexp_048); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_046, sexp_048); - } - return 0; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_046, sexp_048); - } - var _G_ = sexp_048[1]; - if(! _G_) - return caml_call2 - (Sexplib0_Sexp_conv_error[7], error_source_046, sexp_048); - var _H_ = _G_[1]; - if(0 !== _H_[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[6], error_source_046, sexp_048); - var tag_049 = _H_[1], _I_ = caml_string_compare(tag_049, cst_align); - b: - { - c: - { - d: - { - e: - { - if(0 <= _I_){ - if(0 < _I_){ - if(! caml_string_notequal(tag_049, cst_annot)) break e; - if(! caml_string_notequal(tag_049, cst_cat)) break d; - if(! caml_string_notequal(tag_049, cst_linebreak)) break c; - if(caml_string_notequal(tag_049, cst_text)) break a; - break b; - } - } - else if(caml_string_notequal(tag_049, cst_Align)){ - if(! caml_string_notequal(tag_049, cst_Annot)) break e; - if(! caml_string_notequal(tag_049, cst_Cat)) break d; - if(! caml_string_notequal(tag_049, cst_Linebreak)) break c; - if(caml_string_notequal(tag_049, cst_Text)) break a; - break b; - } - var sexp_args_055 = _G_[2]; - if(sexp_args_055 && ! sexp_args_055[2]){ - var - arg0_056 = sexp_args_055[1], - res0_057 = caml_call2(t_of_sexp, of_annot_043, arg0_056); - return [1, res0_057]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_046, - tag_049, - sexp_048); - } - var sexp_args_067 = _G_[2]; - if(sexp_args_067){ - var _K_ = sexp_args_067[2]; - if(_K_ && ! _K_[2]){ - var - arg1_069 = _K_[1], - arg0_068 = sexp_args_067[1], - res0_070 = caml_call1(of_annot_043, arg0_068), - res1_071 = caml_call2(t_of_sexp, of_annot_043, arg1_069); - return [3, res0_070, res1_071]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_046, - tag_049, - sexp_048); - } - var sexp_args_060 = _G_[2]; - if(sexp_args_060){ - var _J_ = sexp_args_060[2]; - if(_J_ && ! _J_[2]){ - var - arg1_062 = _J_[1], - arg0_061 = sexp_args_060[1], - res0_063 = caml_call2(t_of_sexp, of_annot_043, arg0_061), - res1_064 = caml_call2(t_of_sexp, of_annot_043, arg1_062); - return [2, res0_063, res1_064]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_046, - tag_049, - sexp_048); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_046, sexp_048); - } - var sexp_args_050 = _G_[2]; - if(sexp_args_050 && ! sexp_args_050[2]){ - var - arg0_051 = sexp_args_050[1], - res0_052 = caml_call1(Sexplib_Std[10], arg0_051); - return [0, res0_052]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_046, - tag_049, - sexp_048); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[8], error_source_046, sexp_048); - }); - function sexp_of_t(of_annot_073, param){ - var - metrics_077 = param[2], - layout_075 = param[1], - arg_078 = caml_call2(Sexplib_Std[39], sexp_of_box, metrics_077), - bnds_074 = [0, [1, [0, _e_, [0, arg_078, 0]]], 0], - arg_076 = sexp_of_t$0(of_annot_073, layout_075), - bnds_074$0 = [0, [1, [0, _f_, [0, arg_076, 0]]], bnds_074]; - return [1, bnds_074$0]; - } - function sexp_of_t$0(of_annot_079, param){ - if(typeof param === "number") return _g_; - switch(param[0]){ - case 0: - var - arg0_080 = param[1], - res0_081 = caml_call1(Sexplib_Std[9], arg0_080); - return [1, [0, _h_, [0, res0_081, 0]]]; - case 1: - var arg0_082 = param[1], res0_083 = sexp_of_t(of_annot_079, arg0_082); - return [1, [0, _i_, [0, res0_083, 0]]]; - case 2: - var - arg1_085 = param[2], - arg0_084 = param[1], - res0_086 = sexp_of_t(of_annot_079, arg0_084), - res1_087 = sexp_of_t(of_annot_079, arg1_085); - return [1, [0, _j_, [0, res0_086, [0, res1_087, 0]]]]; - default: - var - arg1_089 = param[2], - arg0_088 = param[1], - res0_090 = caml_call1(of_annot_079, arg0_088), - res1_091 = sexp_of_t(of_annot_079, arg1_089); - return [1, [0, _k_, [0, res0_090, [0, res1_091, 0]]]]; - } - } - function height(m){ - var _x_ = m[2]; - function _y_(box){return box[1];} - var _z_ = caml_call1(caml_call1(Stdlib_List[19], _y_), _x_), _A_ = 0; - function _B_(_D_, _C_){return _D_ + _C_ | 0;} - return caml_call1(caml_call2(Stdlib_List[25], _B_, _A_), _z_); - } - function width(opt, m){ - if(opt) var sth = opt[1], offset = sth; else var offset = 0; - var _t_ = caml_call1(Stdlib_List[6], m[2]); - function _u_(box){return box[2];} - var - _v_ = caml_call1(caml_call1(Stdlib_List[19], _u_), _t_), - _w_ = offset + caml_call1(Stdlib_List[5], m[2])[2] | 0; - return caml_call1(caml_call2(Stdlib_List[25], Stdlib[17], _w_), _v_); - } - function fold(linebreak, text, align, cat, annot, m){ - function go(m){ - var match = m[1]; - if(typeof match === "number") return linebreak; - switch(match[0]){ - case 0: - var s = match[1]; return caml_call1(text, s); - case 1: - var m$0 = match[1]; return caml_call1(align, go(m$0)); - case 2: - var m2 = match[2], m1 = match[1], acc1 = go(m1), acc2 = go(m2); - return caml_call2(cat, acc1, acc2); - default: - var m$1 = match[2], ann = match[1]; - return caml_call3(annot, go, ann, m$1); - } - } - return go(m); - } - function next_position(indent, param, m){ - var - col = param[2], - row = param[1], - updated_row = (row + height(m) | 0) - 1 | 0, - match = caml_call1(Pretty_ListUtil[3], m[2]), - last = match[2], - leading = match[1], - indent$0 = leading ? indent : col, - updated_col = last[2] + indent$0 | 0; - return [0, updated_row, updated_col]; - } - function pos_fold(linebreak, text, align, cat, annot, opt, _q_, m){ - if(opt) var sth = opt[1], indent = sth; else var indent = 0; - if(_q_) - var sth$0 = _q_[1], start = sth$0; - else - var start = Pretty_MeasuredPosition[4]; - function go(indent, start, m){ - var match = m[1]; - if(typeof match === "number") return caml_call1(linebreak, start); - switch(match[0]){ - case 0: - var s = match[1]; return caml_call2(text, start, s); - case 1: - var m$0 = match[1]; - return caml_call2(align, start, go(start[2], start, m$0)); - case 2: - var - m2 = match[2], - m1 = match[1], - mid = next_position(indent, start, m1), - _r_ = go(indent, mid, m2); - return caml_call3(cat, start, go(indent, start, m1), _r_); - default: - var m$1 = match[2], ann = match[1]; - return caml_call5 - (annot, - function(_s_){return go(indent, start, _s_);}, - indent, - start, - ann, - m$1); - } - } - return go(indent, start, m); - } - var - Pretty_MeasuredLayout = - [0, - sexp_of_box, - box_of_sexp, - sexp_of_t, - sexp_of_t$0, - t_of_sexp, - t_of_sexp$0, - height, - width, - fold, - pos_fold, - next_position, - function(MemoTbl){ - var table = caml_call1(MemoTbl[1], 0); - function mk(l){ - var match = caml_call2(MemoTbl[2], table, l); - if(match){var m = match[1]; return m;} - if(typeof l === "number") - var m$0 = [0, 0, [0, box, [0, box, 0]]]; - else - switch(l[0]){ - case 0: - var - s = l[1], - m$0 = - [0, [0, s], [0, [0, 1, caml_call1(Pretty_Unicode[2], s)], 0]]; - break; - case 1: - var - l2 = l[2], - l1 = l[1], - m1 = mk(l1), - m2 = mk(l2), - match$0 = caml_call1(Pretty_ListUtil[3], m1[2]), - last = match$0[2], - leading = match$0[1], - match$1 = caml_call1(Pretty_ListUtil[1], m2[2]), - trailing = match$1[2], - first = match$1[1], - _m_ = last[2] + first[2] | 0, - mid_box = [0, caml_call2(Stdlib[17], last[1], first[1]), _m_], - m$0 = - [0, - [2, m1, m2], - caml_call2(Stdlib[37], leading, [0, mid_box, trailing])]; - break; - case 2: - var - l$0 = l[1], - m$1 = mk(l$0), - _n_ = m$1[2], - _o_ = - function(param, _p_){ - var - width = _p_[2], - height = _p_[1], - bw = param[2], - bh = param[1]; - return [0, - bh + height | 0, - caml_call2(Stdlib[17], bw, width)]; - }, - bounding_box = - caml_call1(caml_call2(Stdlib_List[25], _o_, _l_), _n_), - m$0 = [0, [1, m$1], [0, bounding_box, 0]]; - break; - default: - var - l$1 = l[2], - annot = l[1], - m$2 = mk(l$1), - m$0 = [0, [3, annot, m$2], m$2[2]]; - } - caml_call3(MemoTbl[3], table, l, m$0); - return m$0; - } - return [0, mk]; - }]; - runtime.caml_register_global - (53, Pretty_MeasuredLayout, "Pretty__MeasuredLayout"); - return; - } - (globalThis)); - -//# 1351 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - global_data = runtime.caml_get_global_data(), - zero = [0, 0, 0], - Stdlib = global_data.Stdlib; - function mk(overflow_cost, height_cost){ - return [0, overflow_cost, height_cost]; - } - function mk_height(height_cost){return [0, 0, height_cost];} - function mk_overflow(overflow_cost){return [0, overflow_cost, 0];} - var inf = [0, Stdlib[19], Stdlib[19]]; - function add(c1, c2){return [0, c1[1] + c2[1] | 0, c1[2] + c2[2] | 0];} - function eq(c1, c2){ - var - _a_ = c1[1] === c2[1] ? 1 : 0, - _b_ = _a_ ? c1[2] === c2[2] ? 1 : 0 : _a_; - return _b_; - } - function lt(c1, c2){ - return c1[1] === c2[1] ? c1[2] < c2[2] ? 1 : 0 : c1[1] < c2[1] ? 1 : 0; - } - function leq(c1, c2){ - return c1[1] === c2[1] ? c1[2] <= c2[2] ? 1 : 0 : c1[1] <= c2[1] ? 1 : 0; - } - var - Pretty_Cost = [0, mk, mk_height, mk_overflow, zero, inf, add, eq, lt, leq]; - runtime.caml_register_global(2, Pretty_Cost, "Pretty__Cost"); - return; - } - (globalThis)); - -//# 1387 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_Align = "Align", - cst_Annot = "Annot", - cst_Cat = "Cat", - cst_Choice = "Choice", - cst_Fail = "Fail", - cst_Linebreak = "Linebreak", - cst_Text = "Text", - cst_align = "align", - cst_annot = "annot", - cst_cat = "cat", - cst_choice = "choice", - cst_doc$1 = "doc", - cst_fail = "fail", - cst_linebreak = "linebreak", - cst_mem$1 = "mem", - cst_src_pretty_Doc_re = "src/pretty/Doc.re", - cst_src_pretty_Doc_re_t = "src/pretty/Doc.re.t", - cst_src_pretty_Doc_re_t$0 = "src/pretty/Doc.re.t'", - cst_text = "text", - caml_equal = runtime.caml_equal, - caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, - caml_string_compare = runtime.caml_string_compare, - caml_string_notequal = runtime.caml_string_notequal, - caml_update_dummy = runtime.caml_update_dummy; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - var - global_data = runtime.caml_get_global_data(), - cst = "", - error_source_016 = cst_src_pretty_Doc_re_t, - error_source_023 = cst_src_pretty_Doc_re_t$0, - error_source_096 = cst_src_pretty_Doc_re_t, - error_source_103 = cst_src_pretty_Doc_re_t$0, - Stdlib_List = global_data.Stdlib__List, - Stdlib = global_data.Stdlib, - Pretty_Unicode = global_data.Pretty__Unicode, - Sexplib0_Sexp_conv = global_data.Sexplib0__Sexp_conv, - Sexplib_Std = global_data.Sexplib__Std, - Sexplib0_Sexp_conv_error = global_data.Sexplib0__Sexp_conv_error, - Assert_failure = global_data.Assert_failure, - cst_vseps_requires_a_non_empty = ": vseps requires a non-empty list", - cst_File_src_pretty_Doc_re_lin = - 'File "src/pretty/Doc.re", line 59, characters 19-26', - _c_ = [0, cst_doc$1], - _d_ = [0, cst_mem$1], - _e_ = [0, cst_Linebreak], - _f_ = [0, cst_Fail], - _g_ = [0, cst_Text], - _h_ = [0, cst_Cat], - _i_ = [0, cst_Align], - _j_ = [0, cst_Annot], - _k_ = [0, cst_Choice], - _b_ = [0, cst_src_pretty_Doc_re, 16, 0], - cst_doc$0 = cst_doc$1, - cst_mem$0 = cst_mem$1, - _a_ = [0, cst_src_pretty_Doc_re, 16, 0], - cst_doc = cst_doc$1, - cst_mem = cst_mem$1; - function hash(param){ - var pos = param[2], width = param[1]; - return (65536 * width | 0) + pos | 0; - } - function equal(param, _Y_){ - var - p2 = _Y_[2], - w2 = _Y_[1], - p1 = param[2], - w1 = param[1], - _Z_ = caml_equal(w1, w2), - ___ = _Z_ ? caml_equal(p1, p2) : _Z_; - return ___; - } - var - WidthPosKey = [0, hash, equal], - M = caml_call1(Sexplib_Std[1][26], [0, WidthPosKey[2], WidthPosKey[1]]), - t_of_sexp = function _X_(_V_, _W_){return _X_.fun(_V_, _W_);}, - t_of_sexp$0 = function _U_(_S_, _T_){return _U_.fun(_S_, _T_);}; - caml_update_dummy - (t_of_sexp, - function(of_annot_001, sexp_003){ - if(0 === sexp_003[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[16], error_source_016, sexp_003); - var - field_sexps_004 = sexp_003[1], - mem_005 = [0, 0], - doc_007 = [0, 0], - duplicates_009 = [0, 0], - extra_010 = [0, 0]; - a: - { - b: - c: - d: - { - e: - { - var param = field_sexps_004; - for(;;){ - if(! param) break; - var sexp_003$0 = param[1]; - if(1 !== sexp_003$0[0]) break b; - var _P_ = sexp_003$0[1]; - if(! _P_) break c; - var _Q_ = _P_[1]; - if(0 !== _Q_[0]) break e; - var field_sexps_013 = _P_[2], field_name_011 = _Q_[1]; - if(field_sexps_013 && field_sexps_013[2]) break d; - var - tail_018 = param[2], - field_sexp_012$2 = - function(field_sexps_013){ - function field_sexp_012(param){ - if(! field_sexps_013) - return caml_call2 - (Sexplib0_Sexp_conv_error[10], error_source_016, sexp_003); - if(field_sexps_013[2]) - throw caml_maybe_attach_backtrace([0, Assert_failure, _a_], 1); - var x_019 = field_sexps_013[1]; - return x_019; - } - return field_sexp_012; - }, - field_sexp_012 = field_sexp_012$2(field_sexps_013); - if(caml_string_notequal(field_name_011, cst_doc$1)) - if(caml_string_notequal(field_name_011, cst_mem$1)){ - if(Sexplib0_Sexp_conv[26][1]) - extra_010[1] = [0, field_name_011, extra_010[1]]; - } - else if(mem_005[1]) - duplicates_009[1] = [0, field_name_011, duplicates_009[1]]; - else{ - var - field_sexp_012$0 = field_sexp_012(0), - fvalue_015 = caml_call1(Sexplib0_Sexp_conv[47], field_sexp_012$0); - mem_005[1] = [0, fvalue_015]; - } - else if(doc_007[1]) - duplicates_009[1] = [0, field_name_011, duplicates_009[1]]; - else{ - var - field_sexp_012$1 = field_sexp_012(0), - fvalue_014 = - caml_call2(t_of_sexp$0, of_annot_001, field_sexp_012$1); - doc_007[1] = [0, fvalue_014]; - } - var param = tail_018; - } - break a; - } - break c; - } - caml_call2(Sexplib0_Sexp_conv_error[10], error_source_016, sexp_003$0); - } - if(duplicates_009[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[12], - error_source_016, - duplicates_009[1], - sexp_003); - if(extra_010[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[13], - error_source_016, - extra_010[1], - sexp_003); - var _R_ = mem_005[1], match = doc_007[1]; - if(_R_ && match){ - var doc_008 = match[1], mem_006 = _R_[1]; - return [0, mem_006, doc_008]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[15], - error_source_016, - sexp_003, - [0, - [0, 0 === mem_005[1] ? 1 : 0, cst_mem], - [0, [0, 0 === doc_007[1] ? 1 : 0, cst_doc], 0]]); - }); - caml_update_dummy - (t_of_sexp$0, - function(of_annot_020, sexp_025){ - a: - { - if(0 === sexp_025[0]){ - var _H_ = sexp_025[1], _I_ = caml_string_compare(_H_, cst_align); - b: - { - c: - { - d: - { - e: - { - f: - { - g: - { - if(0 <= _I_){ - if(0 < _I_){ - if(! caml_string_notequal(_H_, cst_annot)) break g; - if(! caml_string_notequal(_H_, cst_cat)) break f; - if(! caml_string_notequal(_H_, cst_choice)) break e; - if(! caml_string_notequal(_H_, cst_fail)) break d; - if(! caml_string_notequal(_H_, cst_linebreak)) break c; - if(caml_string_notequal(_H_, cst_text)) break a; - break b; - } - } - else if(caml_string_notequal(_H_, cst_Align)){ - if(! caml_string_notequal(_H_, cst_Annot)) break g; - if(! caml_string_notequal(_H_, cst_Cat)) break f; - if(! caml_string_notequal(_H_, cst_Choice)) break e; - if(! caml_string_notequal(_H_, cst_Fail)) break d; - if(! caml_string_notequal(_H_, cst_Linebreak)) break c; - if(caml_string_notequal(_H_, cst_Text)) break a; - break b; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_023, sexp_025); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_023, sexp_025); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_023, sexp_025); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_023, sexp_025); - } - return 1; - } - return 0; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_023, sexp_025); - } - var _J_ = sexp_025[1]; - if(! _J_) - return caml_call2 - (Sexplib0_Sexp_conv_error[7], error_source_023, sexp_025); - var _K_ = _J_[1]; - if(0 !== _K_[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[6], error_source_023, sexp_025); - var tag_026 = _K_[1], _L_ = caml_string_compare(tag_026, cst_align); - b: - { - c: - { - d: - { - e: - { - f: - { - g: - { - if(0 <= _L_){ - if(0 < _L_){ - if(! caml_string_notequal(tag_026, cst_annot)) break g; - if(! caml_string_notequal(tag_026, cst_cat)) break f; - if(! caml_string_notequal(tag_026, cst_choice)) break e; - if(! caml_string_notequal(tag_026, cst_fail)) break d; - if(! caml_string_notequal(tag_026, cst_linebreak)) break c; - if(caml_string_notequal(tag_026, cst_text)) break a; - break b; - } - } - else if(caml_string_notequal(tag_026, cst_Align)){ - if(! caml_string_notequal(tag_026, cst_Annot)) break g; - if(! caml_string_notequal(tag_026, cst_Cat)) break f; - if(! caml_string_notequal(tag_026, cst_Choice)) break e; - if(! caml_string_notequal(tag_026, cst_Fail)) break d; - if(! caml_string_notequal(tag_026, cst_Linebreak)) break c; - if(caml_string_notequal(tag_026, cst_Text)) break a; - break b; - } - var sexp_args_039 = _J_[2]; - if(sexp_args_039 && ! sexp_args_039[2]){ - var - arg0_040 = sexp_args_039[1], - res0_041 = caml_call2(t_of_sexp, of_annot_020, arg0_040); - return [2, res0_041]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_023, - tag_026, - sexp_025); - } - var sexp_args_044 = _J_[2]; - if(sexp_args_044){ - var _O_ = sexp_args_044[2]; - if(_O_ && ! _O_[2]){ - var - arg1_046 = _O_[1], - arg0_045 = sexp_args_044[1], - res0_047 = caml_call1(of_annot_020, arg0_045), - res1_048 = caml_call2(t_of_sexp, of_annot_020, arg1_046); - return [3, res0_047, res1_048]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_023, - tag_026, - sexp_025); - } - var sexp_args_032 = _J_[2]; - if(sexp_args_032){ - var _N_ = sexp_args_032[2]; - if(_N_ && ! _N_[2]){ - var - arg1_034 = _N_[1], - arg0_033 = sexp_args_032[1], - res0_035 = caml_call2(t_of_sexp, of_annot_020, arg0_033), - res1_036 = caml_call2(t_of_sexp, of_annot_020, arg1_034); - return [1, res0_035, res1_036]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_023, - tag_026, - sexp_025); - } - var sexp_args_051 = _J_[2]; - if(sexp_args_051){ - var _M_ = sexp_args_051[2]; - if(_M_ && ! _M_[2]){ - var - arg1_053 = _M_[1], - arg0_052 = sexp_args_051[1], - res0_054 = caml_call2(t_of_sexp, of_annot_020, arg0_052), - res1_055 = caml_call2(t_of_sexp, of_annot_020, arg1_053); - return [4, res0_054, res1_055]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_023, - tag_026, - sexp_025); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_023, sexp_025); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_023, sexp_025); - } - var sexp_args_027 = _J_[2]; - if(sexp_args_027 && ! sexp_args_027[2]){ - var - arg0_028 = sexp_args_027[1], - res0_029 = caml_call1(Sexplib_Std[10], arg0_028); - return [0, res0_029]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_023, - tag_026, - sexp_025); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[8], error_source_023, sexp_025); - }); - var - t_of_sexp$1 = function _G_(_E_, _F_){return _G_.fun(_E_, _F_);}, - t_of_sexp$2 = function _D_(_B_, _C_){return _D_.fun(_B_, _C_);}; - caml_update_dummy - (t_of_sexp$1, - function(of_annot_081, sexp_083){ - if(0 === sexp_083[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[16], error_source_096, sexp_083); - var - field_sexps_084 = sexp_083[1], - mem_085 = [0, 0], - doc_087 = [0, 0], - duplicates_089 = [0, 0], - extra_090 = [0, 0]; - a: - { - b: - c: - d: - { - e: - { - var param = field_sexps_084; - for(;;){ - if(! param) break; - var sexp_083$0 = param[1]; - if(1 !== sexp_083$0[0]) break b; - var _y_ = sexp_083$0[1]; - if(! _y_) break c; - var _z_ = _y_[1]; - if(0 !== _z_[0]) break e; - var field_sexps_093 = _y_[2], field_name_091 = _z_[1]; - if(field_sexps_093 && field_sexps_093[2]) break d; - var - tail_098 = param[2], - field_sexp_092$2 = - function(field_sexps_093){ - function field_sexp_092(param){ - if(! field_sexps_093) - return caml_call2 - (Sexplib0_Sexp_conv_error[10], error_source_096, sexp_083); - if(field_sexps_093[2]) - throw caml_maybe_attach_backtrace([0, Assert_failure, _b_], 1); - var x_099 = field_sexps_093[1]; - return x_099; - } - return field_sexp_092; - }, - field_sexp_092 = field_sexp_092$2(field_sexps_093); - if(caml_string_notequal(field_name_091, cst_doc$1)) - if(caml_string_notequal(field_name_091, cst_mem$1)){ - if(Sexplib0_Sexp_conv[26][1]) - extra_090[1] = [0, field_name_091, extra_090[1]]; - } - else if(mem_085[1]) - duplicates_089[1] = [0, field_name_091, duplicates_089[1]]; - else{ - var - field_sexp_092$0 = field_sexp_092(0), - fvalue_095 = caml_call1(Sexplib0_Sexp_conv[47], field_sexp_092$0); - mem_085[1] = [0, fvalue_095]; - } - else if(doc_087[1]) - duplicates_089[1] = [0, field_name_091, duplicates_089[1]]; - else{ - var - field_sexp_092$1 = field_sexp_092(0), - fvalue_094 = - caml_call2(t_of_sexp$2, of_annot_081, field_sexp_092$1); - doc_087[1] = [0, fvalue_094]; - } - var param = tail_098; - } - break a; - } - break c; - } - caml_call2(Sexplib0_Sexp_conv_error[10], error_source_096, sexp_083$0); - } - if(duplicates_089[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[12], - error_source_096, - duplicates_089[1], - sexp_083); - if(extra_090[1]) - return caml_call3 - (Sexplib0_Sexp_conv_error[13], - error_source_096, - extra_090[1], - sexp_083); - var _A_ = mem_085[1], match = doc_087[1]; - if(_A_ && match){ - var doc_088 = match[1], mem_086 = _A_[1]; - return [0, mem_086, doc_088]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[15], - error_source_096, - sexp_083, - [0, - [0, 0 === mem_085[1] ? 1 : 0, cst_mem$0], - [0, [0, 0 === doc_087[1] ? 1 : 0, cst_doc$0], 0]]); - }); - caml_update_dummy - (t_of_sexp$2, - function(of_annot_100, sexp_105){ - a: - { - if(0 === sexp_105[0]){ - var _q_ = sexp_105[1], _r_ = caml_string_compare(_q_, cst_align); - b: - { - c: - { - d: - { - e: - { - f: - { - g: - { - if(0 <= _r_){ - if(0 < _r_){ - if(! caml_string_notequal(_q_, cst_annot)) break g; - if(! caml_string_notequal(_q_, cst_cat)) break f; - if(! caml_string_notequal(_q_, cst_choice)) break e; - if(! caml_string_notequal(_q_, cst_fail)) break d; - if(! caml_string_notequal(_q_, cst_linebreak)) break c; - if(caml_string_notequal(_q_, cst_text)) break a; - break b; - } - } - else if(caml_string_notequal(_q_, cst_Align)){ - if(! caml_string_notequal(_q_, cst_Annot)) break g; - if(! caml_string_notequal(_q_, cst_Cat)) break f; - if(! caml_string_notequal(_q_, cst_Choice)) break e; - if(! caml_string_notequal(_q_, cst_Fail)) break d; - if(! caml_string_notequal(_q_, cst_Linebreak)) break c; - if(caml_string_notequal(_q_, cst_Text)) break a; - break b; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_103, sexp_105); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_103, sexp_105); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_103, sexp_105); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_103, sexp_105); - } - return 1; - } - return 0; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_103, sexp_105); - } - var _s_ = sexp_105[1]; - if(! _s_) - return caml_call2 - (Sexplib0_Sexp_conv_error[7], error_source_103, sexp_105); - var _t_ = _s_[1]; - if(0 !== _t_[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[6], error_source_103, sexp_105); - var tag_106 = _t_[1], _u_ = caml_string_compare(tag_106, cst_align); - b: - { - c: - { - d: - { - e: - { - f: - { - g: - { - if(0 <= _u_){ - if(0 < _u_){ - if(! caml_string_notequal(tag_106, cst_annot)) break g; - if(! caml_string_notequal(tag_106, cst_cat)) break f; - if(! caml_string_notequal(tag_106, cst_choice)) break e; - if(! caml_string_notequal(tag_106, cst_fail)) break d; - if(! caml_string_notequal(tag_106, cst_linebreak)) break c; - if(caml_string_notequal(tag_106, cst_text)) break a; - break b; - } - } - else if(caml_string_notequal(tag_106, cst_Align)){ - if(! caml_string_notequal(tag_106, cst_Annot)) break g; - if(! caml_string_notequal(tag_106, cst_Cat)) break f; - if(! caml_string_notequal(tag_106, cst_Choice)) break e; - if(! caml_string_notequal(tag_106, cst_Fail)) break d; - if(! caml_string_notequal(tag_106, cst_Linebreak)) break c; - if(caml_string_notequal(tag_106, cst_Text)) break a; - break b; - } - var sexp_args_119 = _s_[2]; - if(sexp_args_119 && ! sexp_args_119[2]){ - var - arg0_120 = sexp_args_119[1], - res0_121 = caml_call2(t_of_sexp$1, of_annot_100, arg0_120); - return [2, res0_121]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_103, - tag_106, - sexp_105); - } - var sexp_args_124 = _s_[2]; - if(sexp_args_124){ - var _x_ = sexp_args_124[2]; - if(_x_ && ! _x_[2]){ - var - arg1_126 = _x_[1], - arg0_125 = sexp_args_124[1], - res0_127 = caml_call1(of_annot_100, arg0_125), - res1_128 = caml_call2(t_of_sexp$1, of_annot_100, arg1_126); - return [3, res0_127, res1_128]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_103, - tag_106, - sexp_105); - } - var sexp_args_112 = _s_[2]; - if(sexp_args_112){ - var _w_ = sexp_args_112[2]; - if(_w_ && ! _w_[2]){ - var - arg1_114 = _w_[1], - arg0_113 = sexp_args_112[1], - res0_115 = caml_call2(t_of_sexp$1, of_annot_100, arg0_113), - res1_116 = caml_call2(t_of_sexp$1, of_annot_100, arg1_114); - return [1, res0_115, res1_116]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_103, - tag_106, - sexp_105); - } - var sexp_args_131 = _s_[2]; - if(sexp_args_131){ - var _v_ = sexp_args_131[2]; - if(_v_ && ! _v_[2]){ - var - arg1_133 = _v_[1], - arg0_132 = sexp_args_131[1], - res0_134 = caml_call2(t_of_sexp$1, of_annot_100, arg0_132), - res1_135 = caml_call2(t_of_sexp$1, of_annot_100, arg1_133); - return [4, res0_134, res1_135]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_103, - tag_106, - sexp_105); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_103, sexp_105); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_103, sexp_105); - } - var sexp_args_107 = _s_[2]; - if(sexp_args_107 && ! sexp_args_107[2]){ - var - arg0_108 = sexp_args_107[1], - res0_109 = caml_call1(Sexplib_Std[10], arg0_108); - return [0, res0_109]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_103, - tag_106, - sexp_105); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[8], error_source_103, sexp_105); - }); - function sexp_of_t(of_annot_137, param){ - var - doc_141 = param[2], - mem_139 = param[1], - arg_142 = sexp_of_t$0(of_annot_137, doc_141), - bnds_138 = [0, [1, [0, _c_, [0, arg_142, 0]]], 0], - arg_140 = caml_call1(Sexplib0_Sexp_conv[23], mem_139), - bnds_138$0 = [0, [1, [0, _d_, [0, arg_140, 0]]], bnds_138]; - return [1, bnds_138$0]; - } - function sexp_of_t$0(of_annot_143, param){ - if(typeof param === "number") return 0 === param ? _e_ : _f_; - switch(param[0]){ - case 0: - var - arg0_144 = param[1], - res0_145 = caml_call1(Sexplib_Std[9], arg0_144); - return [1, [0, _g_, [0, res0_145, 0]]]; - case 1: - var - arg1_147 = param[2], - arg0_146 = param[1], - res0_148 = sexp_of_t(of_annot_143, arg0_146), - res1_149 = sexp_of_t(of_annot_143, arg1_147); - return [1, [0, _h_, [0, res0_148, [0, res1_149, 0]]]]; - case 2: - var arg0_150 = param[1], res0_151 = sexp_of_t(of_annot_143, arg0_150); - return [1, [0, _i_, [0, res0_151, 0]]]; - case 3: - var - arg1_153 = param[2], - arg0_152 = param[1], - res0_154 = caml_call1(of_annot_143, arg0_152), - res1_155 = sexp_of_t(of_annot_143, arg1_153); - return [1, [0, _j_, [0, res0_154, [0, res1_155, 0]]]]; - default: - var - arg1_157 = param[2], - arg0_156 = param[1], - res0_158 = sexp_of_t(of_annot_143, arg0_156), - res1_159 = sexp_of_t(of_annot_143, arg1_157); - return [1, [0, _k_, [0, res0_158, [0, res1_159, 0]]]]; - } - } - function t_of_t(t){return [0, caml_call1(M[1], 0), t];} - function text(s){return t_of_t([0, s]);} - function linebreak(param){return t_of_t(0);} - function align(doc){return t_of_t([2, doc]);} - function annot(annot, doc){return t_of_t([3, annot, doc]);} - function fail(param){return t_of_t(1);} - function empty(param){return text(cst);} - function space(param){return text(Pretty_Unicode[1]);} - function indent(param){ - return text(caml_call2(Stdlib[28], Pretty_Unicode[1], Pretty_Unicode[1])); - } - function indent_and_align(doc){ - var _p_ = align(doc); - return t_of_t([1, indent(0), _p_]); - } - function hcat(x, y){return t_of_t([1, x, y]);} - function hcats(param){ - if(! param) return empty(0); - var docs = param[2], doc = param[1]; - return caml_call3(Stdlib_List[25], hcat, doc, docs); - } - function hsep(x, y){return t_of_t([1, x, t_of_t([1, space(0), y])]);} - function hseps(param){ - if(! param) return empty(0); - var docs = param[2], doc = param[1]; - return caml_call3(Stdlib_List[25], hsep, doc, docs); - } - function vsep(x, y){return t_of_t([1, x, t_of_t([1, linebreak(0), y])]);} - function vseps(param){ - if(! param){ - var - _o_ = - caml_call2 - (Stdlib[28], - cst_File_src_pretty_Doc_re_lin, - cst_vseps_requires_a_non_empty); - return caml_call1(Stdlib[2], _o_); - } - var doc = param[1]; - if(! param[2]) return doc; - var docs = param[2]; - return caml_call3(Stdlib_List[25], vsep, doc, docs); - } - function choice(x, y){return t_of_t([4, x, y]);} - function choices(param){ - if(! param) return fail(0); - var docs = param[2], doc = param[1]; - return caml_call3(Stdlib_List[25], choice, doc, docs); - } - function map_t(f, d){return t_of_t(caml_call1(f, d[2]));} - function map_annot(f, d){ - return map_t - (function(d){ - if(typeof d !== "number") - switch(d[0]){ - case 1: - var d2 = d[2], d1 = d[1], _l_ = map_annot(f, d2); - return [1, map_annot(f, d1), _l_]; - case 2: - var d$0 = d[1]; return [2, map_annot(f, d$0)]; - case 3: - var d$1 = d[2], annot = d[1], _m_ = map_annot(f, d$1); - return [3, caml_call1(f, annot), _m_]; - case 4: - var d2$0 = d[2], d1$0 = d[1], _n_ = map_annot(f, d2$0); - return [4, map_annot(f, d1$0), _n_]; - } - return d; - }, - d); - } - var - Pretty_Doc = - [0, - WidthPosKey, - M, - t_of_sexp$1, - t_of_sexp$2, - sexp_of_t, - sexp_of_t$0, - t_of_t, - text, - linebreak, - align, - annot, - fail, - empty, - space, - indent, - indent_and_align, - hcat, - hcats, - hsep, - hseps, - vsep, - vseps, - choice, - choices, - map_t, - map_annot]; - runtime.caml_register_global(98, Pretty_Doc, "Pretty__Doc"); - return; - } - (globalThis)); - -//# 2216 "../pretty/.pretty.objs/jsoo/default/pretty.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - var - global_data = runtime.caml_get_global_data(), - Stdlib_List = global_data.Stdlib__List, - Stdlib = global_data.Stdlib, - Pretty_Doc = global_data.Pretty__Doc, - Pretty_Cost = global_data.Pretty__Cost, - Pretty_PosMap = global_data.Pretty__PosMap, - _a_ = [0, 0, 0]; - function all(doc){ - var match = doc[2]; - if(typeof match === "number") return 0 === match ? _a_ : 0; - switch(match[0]){ - case 0: - var string = match[1]; return [0, [0, string], 0]; - case 1: - var - d2 = match[2], - d1 = match[1], - ls1 = all(d1), - ls2 = all(d2), - _l_ = - function(l1){ - function _t_(l2){return [1, l1, l2];} - return caml_call2(Stdlib_List[19], _t_, ls2); - }, - _m_ = caml_call2(Stdlib_List[19], _l_, ls1); - return caml_call1(Stdlib_List[13], _m_); - case 2: - var d = match[1], _n_ = all(d), _o_ = function(l){return [2, l];}; - return caml_call2(Stdlib_List[19], _o_, _n_); - case 3: - var - d$0 = match[2], - annot = match[1], - _p_ = all(d$0), - _q_ = function(l){return [3, annot, l];}; - return caml_call2(Stdlib_List[19], _q_, _p_); - default: - var d2$0 = match[2], d1$0 = match[1], _r_ = all(d2$0), _s_ = all(d1$0); - return caml_call2(Stdlib[37], _s_, _r_); - } - } - function m_union(p1, p2){ - function cost_union(t1, t2){ - var cost2 = t2[1], cost1 = t1[1]; - return caml_call2(Pretty_Cost[9], cost1, cost2) ? t1 : t2; - } - return caml_call3(Pretty_PosMap[3], cost_union, p1, p2); - } - function layout_of_doc(doc){ - function h(width, pos$0){ - var - key = [0, width, pos$0], - match$0 = caml_call2(Pretty_Doc[2][8], doc[1], key); - if(match$0){var value = match$0[1]; return value;} - var match = doc[2]; - if(typeof match === "number") - if(0 === match) - var - _f_ = [0, caml_call1(Pretty_Cost[2], 1), 0], - value$0 = caml_call2(Pretty_PosMap[2], 0, _f_); - else - var value$0 = Pretty_PosMap[1]; - else - switch(match[0]){ - case 0: - var - string = match[1], - pos = pos$0 + runtime.caml_ml_string_length(string) | 0; - if(pos <= width) - var cost = Pretty_Cost[4]; - else - var - overflow = pos - width | 0, - overflow_cost = - runtime.caml_mul(overflow, overflow + 1 | 0) / 2 | 0, - cost = caml_call1(Pretty_Cost[3], overflow_cost); - var - value$0 = caml_call2(Pretty_PosMap[2], pos, [0, cost, [0, string]]); - break; - case 1: - var - d2 = match[2], - d1 = match[1], - l1 = layout_of_doc(d1)(width, pos$0), - _g_ = Pretty_PosMap[1], - _h_ = - function(pos, z, param){ - var - layout1 = param[2], - cost1 = param[1], - l2 = layout_of_doc(d2)(width, pos); - function _k_(param){ - var layout2 = param[2], cost2 = param[1]; - return [0, - caml_call2(Pretty_Cost[6], cost1, cost2), - [1, layout1, layout2]]; - } - var layouts = caml_call2(Pretty_PosMap[4], _k_, l2); - return m_union(z, layouts); - }, - value$0 = caml_call3(Pretty_PosMap[7], _h_, _g_, l1); - break; - case 2: - var - d = match[1], - layout = layout_of_doc(d)(width - pos$0 | 0, 0), - _i_ = - function(p, param){ - var l = param[2], c = param[1]; - return [0, p + pos$0 | 0, [0, c, [2, l]]]; - }, - value$0 = caml_call2(Pretty_PosMap[6], _i_, layout); - break; - case 3: - var - d$0 = match[2], - annot = match[1], - layout$0 = layout_of_doc(d$0)(width, pos$0), - _j_ = - function(param){ - var l = param[2], c = param[1]; - return [0, c, [3, annot, l]]; - }, - value$0 = caml_call2(Pretty_PosMap[4], _j_, layout$0); - break; - default: - var - d2$0 = match[2], - d1$0 = match[1], - l1$0 = layout_of_doc(d1$0)(width, pos$0), - l2 = layout_of_doc(d2$0)(width, pos$0), - value$0 = m_union(l1$0, l2); - } - caml_call3(Pretty_Doc[2][5], doc[1], key, value$0); - return value$0; - } - return h; - } - function layout_of_doc$0(doc, width, pos){ - var - _e_ = layout_of_doc(doc)(width, pos), - param = [0, Stdlib[19], [0, Pretty_Cost[5], 0]], - _b_ = _e_; - for(;;){ - var _c_ = param[2], t = _c_[2], cost = _c_[1], pos$0 = param[1]; - if(! _b_) return t; - var - rest = _b_[2], - _d_ = _b_[1], - match = _d_[2], - x = match[2], - x_cost = match[1], - x_pos = _d_[1]; - a: - if(! caml_call2(Pretty_Cost[8], x_cost, cost)){ - if(caml_call2(Pretty_Cost[7], x_cost, cost) && x_pos < pos$0) break a; - var param = [0, pos$0, [0, cost, t]], _b_ = rest; - continue; - } - var param = [0, x_pos, [0, x_cost, [0, x]]], _b_ = rest; - } - } - var Pretty_LayoutOfDoc = [0, all, m_union, layout_of_doc, layout_of_doc$0]; - runtime.caml_register_global(6, Pretty_LayoutOfDoc, "Pretty__LayoutOfDoc"); - return; - } - (globalThis)); - - -//# 1 "../haz3lschool/.haz3lschool.objs/jsoo/default/haz3lschool.cma.js" -// Generated by js_of_ocaml -//# 3 "../haz3lschool/.haz3lschool.objs/jsoo/default/haz3lschool.cma.js" - -//# 16 "../haz3lschool/.haz3lschool.objs/jsoo/default/haz3lschool.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst$1 = "", - cst$2 = " =", - cst_S = "%S", - cst_a = "%a", - cst$0 = ";@ ", - cst_2 = "<2>", - cst = "@ ", - cst_s = "@[%s =@ ", - cst$3 = "@]", - cst$4 = "@])", - cst_IsNotRecursive = "IsNotRecursive", - cst_IsRecursive = "IsRecursive", - cst_IsTailRecursive = "IsTailRecursive", - cst_VarApplied = "VarApplied", - cst_isNotRecursive = "isNotRecursive", - cst_isRecursive = "isRecursive", - cst_isTailRecursive = "isTailRecursive", - cst_percentage$3 = "percentage", - cst_results$3 = "results", - cst_src_haz3lschool_SyntaxTest$0 = - "src/haz3lschool/SyntaxTest.re.predicate", - cst_src_haz3lschool_SyntaxTest = - "src/haz3lschool/SyntaxTest.re.syntax_result", - cst_varApplied = "varApplied", - caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, - caml_string_equal = runtime.caml_string_equal, - caml_string_notequal = runtime.caml_string_notequal; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - function caml_call4(f, a0, a1, a2, a3){ - return (f.l >= 0 ? f.l : f.l = f.length) == 4 - ? f(a0, a1, a2, a3) - : runtime.caml_call_gen(f, [a0, a1, a2, a3]); - } - var - global_data = runtime.caml_get_global_data(), - error_source_015 = cst_src_haz3lschool_SyntaxTest, - tp_loc = cst_src_haz3lschool_SyntaxTest, - error_source_026 = cst_src_haz3lschool_SyntaxTest$0, - tp_loc$0 = cst_src_haz3lschool_SyntaxTest$0, - Stdlib_Format = global_data.Stdlib__Format, - Stdlib_List = global_data.Stdlib__List, - Haz3lcore_Exp = global_data.Haz3lcore__Exp, - Ppx_yojson_conv_lib_Yojson_con$0 = - global_data.Ppx_yojson_conv_lib__Yojson_conv, - Ppx_yojson_conv_lib_Yojson_con = - global_data.Ppx_yojson_conv_lib__Yojson_conv_error, - Sexplib_Std = global_data.Sexplib__Std, - Sexplib0_Sexp_conv_error = global_data.Sexplib0__Sexp_conv_error, - Util_ListUtil = global_data.Util__ListUtil, - Ppx_yojson_conv_lib = global_data.Ppx_yojson_conv_lib, - Assert_failure = global_data.Assert_failure, - Sexplib0_Sexp_conv = global_data.Sexplib0__Sexp_conv, - _d_ = [0, [12, 59, [17, [0, cst, 1, 0], 0]], cst$0], - _e_ = [0, [9, 0, 0], "%B"], - _c_ = [0, [18, [1, [0, [11, cst_2, 0], cst_2]], [12, 91, 0]], "@[<2>["], - _f_ = [0, [17, [0, "@,", 0, 0], [12, 93, [17, 0, 0]]], "@,]@]"], - _a_ = [0, [18, [1, [0, [11, cst_2, 0], cst_2]], [11, "{ ", 0]], "@[<2>{ "], - cst_results = cst_results$3, - _b_ = - [0, - [18, [1, [0, 0, cst$1]], [2, 0, [11, cst$2, [17, [0, cst, 1, 0], 0]]]], - cst_s], - _g_ = [0, [17, 0, 0], cst$3], - _h_ = [0, [12, 59, [17, [0, cst, 1, 0], 0]], cst$0], - cst_percentage = cst_percentage$3, - _i_ = - [0, - [18, [1, [0, 0, cst$1]], [2, 0, [11, cst$2, [17, [0, cst, 1, 0], 0]]]], - cst_s], - _j_ = [0, [8, [0, 0, 5], 0, 0, 0], "%F"], - _k_ = [0, [17, 0, 0], cst$3], - _l_ = [0, [17, [0, cst, 1, 0], [12, 125, [17, 0, 0]]], "@ }@]"], - _m_ = [0, [15, 0], cst_a], - _q_ = - [0, - [12, - 40, - [18, - [1, [0, [11, cst_2, 0], cst_2]], - [11, cst_VarApplied, [17, [0, cst, 1, 0], 0]]]], - "(@[<2>VarApplied@ "], - _r_ = [0, [3, 0, 0], cst_S], - _s_ = [0, [17, 0, [12, 41, 0]], cst$4], - _t_ = - [0, - [12, - 40, - [18, - [1, [0, [11, cst_2, 0], cst_2]], - [11, cst_IsRecursive, [17, [0, cst, 1, 0], 0]]]], - "(@[<2>IsRecursive@ "], - _u_ = [0, [3, 0, 0], cst_S], - _v_ = [0, [17, 0, [12, 41, 0]], cst$4], - _w_ = - [0, - [12, - 40, - [18, - [1, [0, [11, cst_2, 0], cst_2]], - [11, cst_IsNotRecursive, [17, [0, cst, 1, 0], 0]]]], - "(@[<2>IsNotRecursive@ "], - _x_ = [0, [3, 0, 0], cst_S], - _y_ = [0, [17, 0, [12, 41, 0]], cst$4], - _z_ = - [0, - [12, - 40, - [18, - [1, [0, [11, cst_2, 0], cst_2]], - [11, cst_IsTailRecursive, [17, [0, cst, 1, 0], 0]]]], - "(@[<2>IsTailRecursive@ "], - _A_ = [0, [3, 0, 0], cst_S], - _B_ = [0, [17, 0, [12, 41, 0]], cst$4], - _C_ = [0, [15, 0], cst_a], - _H_ = [0, -976970511, cst_VarApplied], - _I_ = [0, -976970511, cst_IsRecursive], - _J_ = [0, -976970511, cst_IsNotRecursive], - _K_ = [0, -976970511, cst_IsTailRecursive], - _D_ = [0, cst_VarApplied], - _E_ = [0, cst_IsRecursive], - _F_ = [0, cst_IsNotRecursive], - _G_ = [0, cst_IsTailRecursive], - cst_percentage$2 = cst_percentage$3, - cst_results$2 = cst_results$3, - cst_percentage$1 = cst_percentage$3, - cst_results$1 = cst_results$3, - _o_ = [0, cst_percentage$3], - _p_ = [0, cst_results$3], - _n_ = [0, "src/haz3lschool/SyntaxTest.re", 12, 0], - cst_percentage$0 = cst_percentage$3, - cst_results$0 = cst_results$3; - function pp_syntax_result(fmt, x){ - caml_call2(Stdlib_Format[135], fmt, _a_); - caml_call3(Stdlib_Format[135], fmt, _b_, cst_results); - var x$0 = x[1]; - caml_call2(Stdlib_Format[135], fmt, _c_); - var _a$_ = 0; - function _ba_(sep, x){ - if(sep) caml_call2(Stdlib_Format[135], fmt, _d_); - caml_call1(caml_call2(Stdlib_Format[135], fmt, _e_), x); - return 1; - } - caml_call3(Stdlib_List[25], _ba_, _a$_, x$0); - caml_call2(Stdlib_Format[135], fmt, _f_); - caml_call2(Stdlib_Format[135], fmt, _g_); - caml_call2(Stdlib_Format[135], fmt, _h_); - caml_call3(Stdlib_Format[135], fmt, _i_, cst_percentage); - var _bb_ = x[2]; - caml_call1(caml_call2(Stdlib_Format[135], fmt, _j_), _bb_); - caml_call2(Stdlib_Format[135], fmt, _k_); - return caml_call2(Stdlib_Format[135], fmt, _l_); - } - function show_syntax_result(x){ - return caml_call3(Stdlib_Format[139], _m_, pp_syntax_result, x); - } - function syntax_result_of_sexp(sexp_002){ - if(0 === sexp_002[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[16], error_source_015, sexp_002); - var - field_sexps_003 = sexp_002[1], - results_004 = [0, 0], - percentage_006 = [0, 0], - duplicates_008 = [0, 0], - extra_009 = [0, 0]; - a: - { - b: - c: - d: - { - e: - { - var param = field_sexps_003; - for(;;){ - if(! param) break; - var sexp_002$0 = param[1]; - if(1 !== sexp_002$0[0]) break b; - var _a8_ = sexp_002$0[1]; - if(! _a8_) break c; - var _a9_ = _a8_[1]; - if(0 !== _a9_[0]) break e; - var field_sexps_012 = _a8_[2], field_name_010 = _a9_[1]; - if(field_sexps_012 && field_sexps_012[2]) break d; - var - tail_017 = param[2], - field_sexp_011$2 = - function(field_sexps_012){ - function field_sexp_011(param){ - if(! field_sexps_012) - return caml_call2 - (Sexplib0_Sexp_conv_error[10], error_source_015, sexp_002); - if(field_sexps_012[2]) - throw caml_maybe_attach_backtrace([0, Assert_failure, _n_], 1); - var x_018 = field_sexps_012[1]; - return x_018; - } - return field_sexp_011; - }, - field_sexp_011 = field_sexp_011$2(field_sexps_012); - if(caml_string_notequal(field_name_010, cst_percentage$3)) - if(caml_string_notequal(field_name_010, cst_results$3)){ - if(Sexplib0_Sexp_conv[26][1]) - extra_009[1] = [0, field_name_010, extra_009[1]]; - } - else if(results_004[1]) - duplicates_008[1] = [0, field_name_010, duplicates_008[1]]; - else{ - var - field_sexp_011$0 = field_sexp_011(0), - fvalue_014 = - caml_call2(Sexplib_Std[40], Sexplib_Std[7], field_sexp_011$0); - results_004[1] = [0, fvalue_014]; - } - else if(percentage_006[1]) - duplicates_008[1] = [0, field_name_010, duplicates_008[1]]; - else{ - var - field_sexp_011$1 = field_sexp_011(0), - fvalue_013 = caml_call1(Sexplib_Std[19], field_sexp_011$1); - percentage_006[1] = [0, fvalue_013]; + fvalue_013 = caml_call1(Sexplib_Std[19], field_sexp_011$1); + percentage_006[1] = [0, fvalue_013]; } var param = tail_017; } @@ -554484,66 +552118,6 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 276 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - global_data = runtime.caml_get_global_data(), - Js_of_ocaml_Js = global_data.Js_of_ocaml__Js, - JS_MAP = [0]; - function mk(param){ - var t0 = Js_of_ocaml_Js[52][1], c = t0.Map; - return new c; - } - var JsMap = [0, mk]; - function mk$0(param){ - var t2 = Js_of_ocaml_Js[52][1], c = t2.WeakMap; - return new c; - } - var JsWeakMap = [0, mk$0]; - function is_primitive_representation_im(val){ - return val === null - || typeof val !== "function" && typeof val !== "object"; - } - function is_primitive_representation(x){ - return caml_call1(is_primitive_representation_im, x) | 0; - } - function mk$1(param){ - var _b_ = caml_call1(JsWeakMap[1], 0); - return [0, caml_call1(JsMap[1], 0), _b_]; - } - function get(t, k){ - var map = is_primitive_representation(k) ? t[1] : t[2], _a_ = map.get(k); - return caml_call1(Js_of_ocaml_Js[6][10], _a_); - } - function set(t, k, v){ - var map = is_primitive_representation(k) ? t[1] : t[2]; - map.set(k, v); - return 0; - } - var - Haz3lweb_WeakMap = - [0, - JS_MAP, - JsMap, - JsWeakMap, - is_primitive_representation_im, - is_primitive_representation, - mk$1, - get, - set]; - runtime.caml_register_global(6, Haz3lweb_WeakMap, "Haz3lweb__WeakMap"); - return; - } - (globalThis)); - //# 337 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ @@ -587466,32 +585040,543 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, ? f(a0) : runtime.caml_call_gen(f, [a0]); } - function caml_call4(f, a0, a1, a2, a3){ - return (f.l >= 0 ? f.l : f.l = f.length) == 4 - ? f(a0, a1, a2, a3) - : runtime.caml_call_gen(f, [a0, a1, a2, a3]); + function caml_call2(f, a0, a1){ + return (f.l >= 0 ? f.l : f.l = f.length) == 2 + ? f(a0, a1) + : runtime.caml_call_gen(f, [a0, a1]); + } + function caml_call3(f, a0, a1, a2){ + return (f.l >= 0 ? f.l : f.l = f.length) == 3 + ? f(a0, a1, a2) + : runtime.caml_call_gen(f, [a0, a1, a2]); } var global_data = runtime.caml_get_global_data(), - Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, + cst = ":", Virtual_dom_Node = global_data.Virtual_dom__Node, - cst_stop = "stop", - cst_svg = "svg"; - function svg(attrs, children){ - var _b_ = [0, caml_call1(Virtual_dom_Vdom[1][8], attrs)]; - return caml_call4(Virtual_dom_Node[48], cst_svg, 0, _b_, children); + Util_Web = global_data.Util__Web, + Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, + Haz3lcore_TestResults = global_data.Haz3lcore__TestResults, + Stdlib_Printf = global_data.Stdlib__Printf, + Stdlib_List = global_data.Stdlib__List, + Haz3lcore_TestMap = global_data.Haz3lcore__TestMap, + Haz3lcore_TestStatus = global_data.Haz3lcore__TestStatus, + Virtual_dom_Effect = global_data.Virtual_dom__Effect, + _c_ = [0, "title-bar", [0, "panel-title-bar", 0]], + cst_No_test_results_available = "No test results available.", + _b_ = [0, "test-summary", 0], + cst_test_text = "test-text", + _a_ = [0, [8, [0, 0, 0], 0, [0, 0], [12, 37, 0]], "%.0f%%"], + cst_all_pass = "all-pass", + cst_some_fail = "some-fail", + cst_test_percent = "test-percent", + cst_test_bar = "test-bar", + cst_segment = "segment"; + function jump_to_test(inject, pos, id, param){ + var + effect1 = caml_call1(inject, [6, [2, pos, 0]]), + effect2 = caml_call1(inject, [11, [2, [0, id]]]); + function _H_(result1){return effect2;} + return caml_call2(Virtual_dom_Effect[5], effect1, _H_); } - function stop(attrs){ - var _a_ = [0, caml_call1(Virtual_dom_Vdom[1][8], attrs)]; - return caml_call4(Virtual_dom_Node[48], cst_stop, 0, _a_, 0); + function test_bar_segment(inject, pos, param){ + var + reports = param[2], + id = param[1], + _z_ = caml_call1(Haz3lcore_TestMap[7], reports), + status = caml_call1(Haz3lcore_TestStatus[7], _z_), + _A_ = 0, + _B_ = 0; + function _C_(_G_){return jump_to_test(inject, pos, id, _G_);} + var + _D_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _C_), _B_], + _E_ = [0, caml_call1(Util_Web[1], [0, cst_segment, [0, status, 0]]), _D_], + _F_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _E_)]; + return caml_call3(Virtual_dom_Node[11], 0, _F_, _A_); } - var Haz3lweb_NodeUtil = [0, svg, stop]; - runtime.caml_register_global(4, Haz3lweb_NodeUtil, "Haz3lweb__NodeUtil"); + function test_bar(inject, test_results, pos){ + var _u_ = test_results[1]; + function _v_(_y_){return test_bar_segment(inject, pos, _y_);} + var + _w_ = caml_call2(Stdlib_List[19], _v_, _u_), + _x_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_bar)]; + return caml_call3(Virtual_dom_Node[11], 0, _x_, _w_); + } + function percent_view(n, p){ + var + percentage = 0 === n ? 100. : 100. * p / n, + _p_ = caml_call2(Stdlib_Printf[4], _a_, percentage), + _q_ = [0, caml_call1(Virtual_dom_Node[5], _p_), 0], + _r_ = 0, + _s_ = n === p ? cst_all_pass : cst_some_fail, + _t_ = [0, caml_call1(Util_Web[1], [0, cst_test_percent, [0, _s_, _r_]])]; + return caml_call3(Virtual_dom_Node[11], 0, _t_, _q_); + } + function test_percentage(test_results){ + return percent_view(test_results[4], test_results[5]); + } + function test_text(test_results){ + var + _j_ = caml_call1(Haz3lcore_TestResults[9], test_results), + _k_ = [0, caml_call1(Virtual_dom_Node[5], _j_), 0], + _l_ = [0, caml_call1(Virtual_dom_Node[5], cst), 0], + _m_ = [0, caml_call3(Virtual_dom_Node[11], 0, 0, _l_), _k_], + _n_ = [0, test_percentage(test_results), _m_], + _o_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_text)]; + return caml_call3(Virtual_dom_Node[11], 0, _o_, _n_); + } + function test_summary(inject, test_results){ + if(test_results) + var + test_results$0 = test_results[1], + _g_ = [0, test_bar(inject, test_results$0, 3), 0], + _h_ = [0, test_text(test_results$0), _g_]; + else + var + _h_ = + [0, caml_call1(Virtual_dom_Node[5], cst_No_test_results_available), 0]; + var _i_ = [0, caml_call1(Util_Web[1], _b_)]; + return caml_call3(Virtual_dom_Node[11], 0, _i_, _h_); + } + function view_of_main_title_bar(title_text){ + var + _d_ = [0, caml_call1(Virtual_dom_Node[5], title_text), 0], + _e_ = [0, caml_call1(Util_Web[1], _c_), 0], + _f_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _e_)]; + return caml_call3(Virtual_dom_Node[11], 0, _f_, _d_); + } + var + Haz3lweb_TestView = + [0, + jump_to_test, + test_bar_segment, + test_bar, + percent_view, + test_percentage, + test_text, + test_summary, + view_of_main_title_bar]; + runtime.caml_register_global(22, Haz3lweb_TestView, "Haz3lweb__TestView"); + return; + } + (globalThis)); + +//# 33417 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +(function + (globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) == 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + var + global_data = runtime.caml_get_global_data(), + explanation = + "If the [*body*](%s) of the test evalutes to `true`, the test passes. Otherwise, the test fails.", + Haz3lcore_Piece = global_data.Haz3lcore__Piece, + Haz3lweb_Example = global_data.Haz3lweb__Example, + test_true_ex = + [0, + 14, + caml_call1(Haz3lweb_Example[87], "test true end"), + "This is reported as a passing test because the body of the test is true."], + test_false_ex = + [0, + 15, + caml_call1(Haz3lweb_Example[87], "test 3 < 1 end"), + "This is reported as a failing test because the body of the test is 3 < 1 which evaluates to false."], + exp_body = caml_call1(Haz3lweb_Example[19], "e"); + function test_exp_coloring_ids(body_id){ + return [0, [0, caml_call1(Haz3lcore_Piece[30], exp_body), body_id], 0]; + } + var + _a_ = [0, exp_body, [0, caml_call1(Haz3lweb_Example[86], 0), 0]], + _b_ = [0, [0, caml_call1(Haz3lweb_Example[86], 0), _a_], 0], + test_exp = + [0, + 23, + [0, caml_call1(Haz3lweb_Example[77], _b_), 0], + 0, + explanation, + [0, test_true_ex, [0, test_false_ex, 0]]], + tests = [0, 23, [0, test_exp, 0]], + Haz3lweb_TestExp = + [0, + test_true_ex, + test_false_ex, + exp_body, + test_exp_coloring_ids, + test_exp, + tests]; + runtime.caml_register_global(8, Haz3lweb_TestExp, "Haz3lweb__TestExp"); + return; + } + (globalThis)); + +//# 33472 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +(function + (globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) == 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + var + global_data = runtime.caml_get_global_data(), + explanation$3 = "`%s` is a type variable.", + explanation = "The `Int` type classifies 32-bit signed integer values.", + explanation$0 = + "The `Float` type classifies 64-bit floating-point values according to the IEEE 754 standard.", + explanation$1 = "The `Bool` type classifies boolean values.", + explanation$2 = "The `String` type classifies string values.", + Haz3lweb_Example = global_data.Haz3lweb__Example, + int_typ = + [0, + 47, + [0, caml_call1(Haz3lweb_Example[21], "Int"), 0], + 0, + explanation, + 0], + float_typ = + [0, + 48, + [0, caml_call1(Haz3lweb_Example[21], "Float"), 0], + 0, + explanation$0, + 0], + bool_typ = + [0, + 49, + [0, caml_call1(Haz3lweb_Example[21], "Bool"), 0], + 0, + explanation$1, + 0], + str_typ = + [0, + 50, + [0, caml_call1(Haz3lweb_Example[21], "String"), 0], + 0, + explanation$2, + 0]; + function var_typ(name){ + var _a_ = caml_call1(Haz3lweb_Example[88], name); + return [0, + 51, + [0, caml_call1(Haz3lweb_Example[21], _a_), 0], + 0, + explanation$3, + 0]; + } + var + int$0 = [0, 48, [0, int_typ, 0]], + float$0 = [0, 49, [0, float_typ, 0]], + bool = [0, 50, [0, bool_typ, 0]], + str = [0, 51, [0, str_typ, 0]]; + function var$0(name){return [0, 52, [0, var_typ(name), 0]];} + var + Haz3lweb_TerminalTyp = + [0, + int_typ, + float_typ, + bool_typ, + str_typ, + var_typ, + int$0, + float$0, + bool, + str, + var$0]; + runtime.caml_register_global + (10, Haz3lweb_TerminalTyp, "Haz3lweb__TerminalTyp"); + return; + } + (globalThis)); + +//# 33554 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +(function + (globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) == 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + var + global_data = runtime.caml_get_global_data(), + explanation$6 = + "Only expressions that match the *`%s` constructor* match this constructor pattern.", + explanation$5 = + "This *pattern variable* matches any expression, binding its value to variable `%s`.", + explanation$3 = + "Only expressions with value `%s` match the *`%s` pattern*.", + explanation$2 = + "Only expressions with value `%b` match the *`%b` pattern*.", + explanation$1 = + "Only expressions with value `%f` match the *`%f` pattern*.", + explanation$0 = + "Only expressions with value `%i` match the *`%i` pattern*.", + explanation = "The *wildcard pattern* matches any expression.", + cst = "_", + explanation$4 = + "Only expressions with the trivial value `()` match the *trivial pattern `()`*.", + cst$0 = "()", + Haz3lweb_Example = global_data.Haz3lweb__Example, + Haz3lcore_Form = global_data.Haz3lcore__Form, + Stdlib = global_data.Stdlib, + wild_pat = + [0, + 28, + [0, caml_call1(Haz3lweb_Example[20], cst), 0], + 0, + explanation, + 0]; + function intlit_pat(i){ + var + _i_ = caml_call1(Stdlib[33], i), + _j_ = caml_call1(Haz3lweb_Example[88], _i_); + return [0, + 29, + [0, caml_call1(Haz3lweb_Example[20], _j_), 0], + 0, + explanation$0, + 0]; + } + function floatlit_pat(f){ + var + _g_ = caml_call1(Stdlib[35], f), + _h_ = caml_call1(Haz3lweb_Example[88], _g_); + return [0, + 30, + [0, caml_call1(Haz3lweb_Example[20], _h_), 0], + 0, + explanation$1, + 0]; + } + function boollit_pat(b){ + var + _e_ = caml_call1(Stdlib[30], b), + _f_ = caml_call1(Haz3lweb_Example[88], _e_); + return [0, + 31, + [0, caml_call1(Haz3lweb_Example[20], _f_), 0], + 0, + explanation$2, + 0]; + } + function strlit_pat(s){ + var + _c_ = caml_call1(Haz3lweb_Example[88], s), + _d_ = caml_call1(Haz3lcore_Form[50], _c_); + return [0, + 32, + [0, caml_call1(Haz3lweb_Example[20], _d_), 0], + 0, + explanation$3, + 0]; + } + var + triv_pat = + [0, + 33, + [0, caml_call1(Haz3lweb_Example[20], cst$0), 0], + 0, + explanation$4, + 0]; + function var_pat(name){ + var _b_ = caml_call1(Haz3lweb_Example[88], name); + return [0, + 34, + [0, caml_call1(Haz3lweb_Example[20], _b_), 0], + 0, + explanation$5, + 0]; + } + function ctr_pat(name){ + var _a_ = caml_call1(Haz3lweb_Example[88], name); + return [0, + 35, + [0, caml_call1(Haz3lweb_Example[20], _a_), 0], + 0, + explanation$6, + 0]; + } + var wild = [0, 29, [0, wild_pat, 0]]; + function intlit(i){return [0, 30, [0, intlit_pat(i), 0]];} + function floatlit(f){return [0, 31, [0, floatlit_pat(f), 0]];} + function boollit(b){return [0, 32, [0, boollit_pat(b), 0]];} + function strlit(s){return [0, 33, [0, strlit_pat(s), 0]];} + var triv = [0, 34, [0, triv_pat, 0]]; + function var$0(name){return [0, 35, [0, var_pat(name), 0]];} + function ctr(name){return [0, 36, [0, ctr_pat(name), 0]];} + var + Haz3lweb_TerminalPat = + [0, + wild_pat, + intlit_pat, + floatlit_pat, + boollit_pat, + strlit_pat, + triv_pat, + var_pat, + ctr_pat, + wild, + intlit, + floatlit, + boollit, + strlit, + triv, + var$0, + ctr]; + runtime.caml_register_global + (13, Haz3lweb_TerminalPat, "Haz3lweb__TerminalPat"); + return; + } + (globalThis)); + +//# 33697 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +(function + (globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) == 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + var + global_data = runtime.caml_get_global_data(), + cst = "()", + cst$0 = "_", + Haz3lweb_Example = global_data.Haz3lweb__Example, + Haz3lcore_Form = global_data.Haz3lcore__Form, + Stdlib = global_data.Stdlib, + triv_exp = + [0, + 2, + [0, caml_call1(Haz3lweb_Example[19], cst), 0], + 0, + "The unique value of type `()`.", + 0], + triv_exps = [0, 2, [0, triv_exp, 0]], + deferral_exp_ex = + [0, + 1, + caml_call1 + (Haz3lweb_Example[87], + "let plus = fun (x, y) -> x + y in\nlet incr = plus(_, 1) in\nincr(5)"), + "In the partial application plus(_, 1), the deferral expression marks the first argument, which was not applied until in the full function application incr(5)."], + deferral_exp = + [0, + 3, + [0, caml_call1(Haz3lweb_Example[19], cst$0), 0], + 0, + "Marks an argument that has not yet been applied in a partial application.", + [0, deferral_exp_ex, 0]], + deferral_exps = [0, 3, [0, deferral_exp, 0]], + cst_s_is_a_constructor_for_a_s = + "`%s` is a constructor for a sum type variant.", + cst_Takes_the_value_of_the_exp = + "Takes the value of the expression that it was bound to.", + cst_A_string_literal_Any_chara = + 'A string literal. Any character besides double quotes (`"`) can be used.', + cst_A_floating_point_literal = "A floating-point literal.", + cst_A_signed_integer_literal = "A signed integer literal.", + cst_A_boolean_literal_either_t = + "A boolean literal, either `true` or `false`."; + function bool_exp(b){ + var _g_ = caml_call1(Stdlib[30], b); + return [0, + 4, + [0, caml_call1(Haz3lweb_Example[19], _g_), 0], + 0, + cst_A_boolean_literal_either_t, + 0]; + } + function bool_exps(b){return [0, 4, [0, bool_exp(b), 0]];} + function int_exp(n){ + var _f_ = caml_call1(Stdlib[33], n); + return [0, + 5, + [0, caml_call1(Haz3lweb_Example[19], _f_), 0], + 0, + cst_A_signed_integer_literal, + 0]; + } + function int_exps(i){return [0, 5, [0, int_exp(i), 0]];} + function float_exp(f){ + var _e_ = caml_call1(Stdlib[35], f); + return [0, + 6, + [0, caml_call1(Haz3lweb_Example[19], _e_), 0], + 0, + cst_A_floating_point_literal, + 0]; + } + function float_exps(f){return [0, 6, [0, float_exp(f), 0]];} + function string_exp(s){ + var + _c_ = caml_call1(Haz3lweb_Example[88], s), + _d_ = caml_call1(Haz3lcore_Form[50], _c_); + return [0, + 7, + [0, caml_call1(Haz3lweb_Example[19], _d_), 0], + 0, + cst_A_string_literal_Any_chara, + 0]; + } + function string_exps(s){return [0, 7, [0, string_exp(s), 0]];} + function var_exp(n){ + var _b_ = caml_call1(Haz3lweb_Example[88], n); + return [0, + 8, + [0, caml_call1(Haz3lweb_Example[19], _b_), 0], + 0, + cst_Takes_the_value_of_the_exp, + 0]; + } + function var_exps(x){return [0, 8, [0, var_exp(x), 0]];} + function ctr_exp(c){ + var _a_ = caml_call1(Haz3lweb_Example[88], c); + return [0, + 9, + [0, caml_call1(Haz3lweb_Example[19], _a_), 0], + 0, + cst_s_is_a_constructor_for_a_s, + 0]; + } + function ctr(c){return [0, 9, [0, ctr_exp(c), 0]];} + var + Haz3lweb_TerminalExp = + [0, + triv_exp, + triv_exps, + deferral_exp_ex, + deferral_exp, + deferral_exps, + bool_exp, + bool_exps, + int_exp, + int_exps, + float_exp, + float_exps, + string_exp, + string_exps, + var_exp, + var_exps, + ctr_exp, + ctr]; + runtime.caml_register_global + (15, Haz3lweb_TerminalExp, "Haz3lweb__TerminalExp"); return; } (globalThis)); -//# 33321 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 33836 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -587748,7 +585833,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 33579 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 34094 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -588329,7 +586414,125 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 34161 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 34676 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +(function + (globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) == 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + function caml_call2(f, a0, a1){ + return (f.l >= 0 ? f.l : f.l = f.length) == 2 + ? f(a0, a1) + : runtime.caml_call_gen(f, [a0, a1]); + } + var + global_data = runtime.caml_get_global_data(), + explanation$1 = + "This specifies one possible way of constructing the parent sum type.", + explanation$0 = + "This specifies one possible way of constructing the parent sum type, when applied to a parameter of the specified parameter type.", + explanation = + "Sum types describe a finite set of labeled choices. Values of this type consist of one of the specified constructors applied to a parameter of the corresponding parameter type, if specified. Constructor names must be unique within a sum.", + cst = "...", + Haz3lweb_Example = global_data.Haz3lweb__Example, + Stdlib = global_data.Stdlib, + Haz3lcore_Form = global_data.Haz3lcore__Form, + _a_ = caml_call1(Haz3lcore_Form[92], "typ_plus"), + divider = caml_call1(Haz3lweb_Example[4], _a_), + _b_ = [0, caml_call1(Haz3lweb_Example[86], 0), 0], + _c_ = [0, caml_call1(Haz3lweb_Example[21], cst), _b_], + _d_ = [0, divider, [0, caml_call1(Haz3lweb_Example[86], 0), _c_]], + _e_ = [0, caml_call1(Haz3lweb_Example[86], 0), _d_], + _f_ = [0, caml_call1(Haz3lweb_Example[21], "Constructor(ty)"), _e_], + labelled_sum_typ = + [0, + 61, + [0, caml_call1(Haz3lweb_Example[86], 0), _f_], + 0, + explanation, + 0], + cst_Type = "(Type)"; + function sum_typ_unary_constructor_def(c){ + var + _h_ = caml_call2(Stdlib[28], c, cst_Type), + _i_ = caml_call1(Haz3lweb_Example[88], _h_); + return [0, + 62, + [0, caml_call1(Haz3lweb_Example[21], _i_), 0], + 0, + explanation$0, + 0]; + } + function sum_typ_nullary_constructor_de(c){ + var _g_ = caml_call1(Haz3lweb_Example[88], c); + return [0, + 63, + [0, caml_call1(Haz3lweb_Example[21], _g_), 0], + 0, + explanation$1, + 0]; + } + var labelled_sum_typs = [0, 62, [0, labelled_sum_typ, 0]]; + function sum_typ_unary_constructor_defs(c){ + return [0, 63, [0, sum_typ_unary_constructor_def(c), 0]]; + } + function sum_typ_nullary_constructor_de$0(c){ + return [0, 64, [0, sum_typ_nullary_constructor_de(c), 0]]; + } + var + Haz3lweb_SumTyp = + [0, + labelled_sum_typ, + sum_typ_unary_constructor_def, + sum_typ_nullary_constructor_de, + labelled_sum_typs, + sum_typ_unary_constructor_defs, + sum_typ_nullary_constructor_de$0]; + runtime.caml_register_global(10, Haz3lweb_SumTyp, "Haz3lweb__SumTyp"); + return; + } + (globalThis)); + +//# 34760 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +(function + (globalThis){ + "use strict"; + var runtime = globalThis.jsoo_runtime; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) == 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + function caml_call4(f, a0, a1, a2, a3){ + return (f.l >= 0 ? f.l : f.l = f.length) == 4 + ? f(a0, a1, a2, a3) + : runtime.caml_call_gen(f, [a0, a1, a2, a3]); + } + var + global_data = runtime.caml_get_global_data(), + Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, + Virtual_dom_Node = global_data.Virtual_dom__Node, + cst_stop = "stop", + cst_svg = "svg"; + function svg(attrs, children){ + var _b_ = [0, caml_call1(Virtual_dom_Vdom[1][8], attrs)]; + return caml_call4(Virtual_dom_Node[48], cst_svg, 0, _b_, children); + } + function stop(attrs){ + var _a_ = [0, caml_call1(Virtual_dom_Vdom[1][8], attrs)]; + return caml_call4(Virtual_dom_Node[48], cst_stop, 0, _a_, 0); + } + var Haz3lweb_NodeUtil = [0, svg, stop]; + runtime.caml_register_global(4, Haz3lweb_NodeUtil, "Haz3lweb__NodeUtil"); + return; + } + (globalThis)); + +//# 34796 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -588714,7 +586917,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 34547 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35182 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589032,7 +587235,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 34866 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35501 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589114,7 +587317,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 34949 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35584 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -589406,3681 +587609,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 35242 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_CastDecoration = "CastDecoration", - cst_Collapsed = "Collapsed", - cst_Delim = "Delim", - cst_EmptyHole = "EmptyHole", - cst_FailedCastDecoration = "FailedCastDecoration", - cst_FailedCastDelim = "FailedCastDelim", - cst_HoleLabel = "HoleLabel", - cst_InconsistentBranches = "InconsistentBranches", - cst_Invalid = "Invalid", - cst_NonEmptyHole = "NonEmptyHole", - cst_OperationError = "OperationError", - cst_Step = "Step", - cst_Steppable = "Steppable", - cst_Stepped = "Stepped", - cst_Substituted = "Substituted", - cst_Term = "Term", - cst_VarHole = "VarHole", - cst_castDecoration = "castDecoration", - cst_collapsed = "collapsed", - cst_delim = "delim", - cst_emptyHole = "emptyHole", - cst_failedCastDecoration = "failedCastDecoration", - cst_failedCastDelim = "failedCastDelim", - cst_holeLabel = "holeLabel", - cst_inconsistentBranches = "inconsistentBranches", - cst_invalid = "invalid", - cst_nonEmptyHole = "nonEmptyHole", - cst_operationError = "operationError", - cst_step = "step", - cst_steppable = "steppable", - cst_stepped = "stepped", - cst_substituted = "substituted", - cst_term = "term", - cst_varHole = "varHole", - caml_string_compare = runtime.caml_string_compare, - caml_string_notequal = runtime.caml_string_notequal; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - var - global_data = runtime.caml_get_global_data(), - error_source_003 = "src/haz3lweb/view/dhcode/layout/DHAnnot.re.t", - Sexplib_Std = global_data.Sexplib__Std, - Haz3lcore_ClosureEnvironment = global_data.Haz3lcore__ClosureEnvironment, - Haz3lcore_VarErrStatus = global_data.Haz3lcore__VarErrStatus, - Haz3lcore_Id = global_data.Haz3lcore__Id, - Haz3lcore_InvalidOperationErro = - global_data.Haz3lcore__InvalidOperationError, - Sexplib0_Sexp_conv_error = global_data.Sexplib0__Sexp_conv_error, - _a_ = [0, cst_Collapsed], - _b_ = [0, cst_Term], - _c_ = [0, cst_HoleLabel], - _d_ = [0, cst_Delim], - _e_ = [0, cst_NonEmptyHole], - _f_ = [0, cst_Invalid], - _g_ = [0, cst_FailedCastDelim], - _h_ = [0, cst_FailedCastDecoration], - _i_ = [0, cst_CastDecoration], - _j_ = [0, cst_Stepped], - _k_ = [0, cst_Substituted], - _l_ = [0, cst_Step], - _m_ = [0, cst_EmptyHole], - _n_ = [0, cst_VarHole], - _o_ = [0, cst_InconsistentBranches], - _p_ = [0, cst_OperationError], - _q_ = [0, cst_Steppable]; - function t_of_sexp(sexp_005){ - a: - { - if(0 === sexp_005[0]){ - var - _r_ = sexp_005[1], - _s_ = caml_string_compare(_r_, cst_castDecoration); - b: - { - c: - { - d: - { - e: - { - f: - { - g: - { - h: - { - i: - { - j: - { - k: - { - l: - { - m: - { - n: - { - o: - { - p: - { - q: - { - if(0 <= _s_){ - if(0 >= _s_) break i; - var _t_ = caml_string_compare(_r_, cst_nonEmptyHole); - if(0 <= _t_){ - if(0 >= _t_) break q; - if(! caml_string_notequal(_r_, cst_operationError)) break p; - if(! caml_string_notequal(_r_, cst_step)) break o; - if(! caml_string_notequal(_r_, cst_steppable)) break n; - if(! caml_string_notequal(_r_, cst_stepped)) break m; - if(! caml_string_notequal(_r_, cst_substituted)) break l; - if(! caml_string_notequal(_r_, cst_term)) break k; - if(caml_string_notequal(_r_, cst_varHole)) break a; - break j; - } - if(! caml_string_notequal(_r_, cst_collapsed)) break h; - if(! caml_string_notequal(_r_, cst_delim)) break g; - if(! caml_string_notequal(_r_, cst_emptyHole)) break f; - if(! caml_string_notequal(_r_, cst_failedCastDecoration)) - break e; - if(! caml_string_notequal(_r_, cst_failedCastDelim)) - break d; - if(! caml_string_notequal(_r_, cst_holeLabel)) break c; - if(! caml_string_notequal(_r_, cst_inconsistentBranches)) - break b; - if(caml_string_notequal(_r_, cst_invalid)) break a; - } - else{ - var _u_ = caml_string_compare(_r_, cst_Invalid); - if(0 > _u_){ - if(! caml_string_notequal(_r_, cst_CastDecoration)) break i; - if(! caml_string_notequal(_r_, cst_Collapsed)) break h; - if(! caml_string_notequal(_r_, cst_Delim)) break g; - if(! caml_string_notequal(_r_, cst_EmptyHole)) break f; - if(! caml_string_notequal(_r_, cst_FailedCastDecoration)) - break e; - if(! caml_string_notequal(_r_, cst_FailedCastDelim)) - break d; - if(! caml_string_notequal(_r_, cst_HoleLabel)) break c; - if(caml_string_notequal(_r_, cst_InconsistentBranches)) - break a; - break b; - } - if(0 < _u_){ - if(! caml_string_notequal(_r_, cst_NonEmptyHole)) break q; - if(! caml_string_notequal(_r_, cst_OperationError)) break p; - if(! caml_string_notequal(_r_, cst_Step)) break o; - if(! caml_string_notequal(_r_, cst_Steppable)) break n; - if(! caml_string_notequal(_r_, cst_Stepped)) break m; - if(! caml_string_notequal(_r_, cst_Substituted)) break l; - if(! caml_string_notequal(_r_, cst_Term)) break k; - if(caml_string_notequal(_r_, cst_VarHole)) break a; - break j; - } - } - return 5; - } - return 4; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_003, sexp_005); - } - return 9; - } - return 10; - } - return 1; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_003, sexp_005); - } - return 8; - } - return 0; - } - return 3; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_003, sexp_005); - } - return 7; - } - return 6; - } - return 2; - } - return caml_call2 - (Sexplib0_Sexp_conv_error[5], error_source_003, sexp_005); - } - var _v_ = sexp_005[1]; - if(! _v_) - return caml_call2 - (Sexplib0_Sexp_conv_error[7], error_source_003, sexp_005); - var _w_ = _v_[1]; - if(0 !== _w_[0]) - return caml_call2 - (Sexplib0_Sexp_conv_error[6], error_source_003, sexp_005); - var - tag_006 = _w_[1], - _x_ = caml_string_compare(tag_006, cst_castDecoration); - b: - { - c: - { - d: - { - e: - { - f: - { - g: - { - h: - { - i: - { - j: - { - k: - { - l: - { - m: - { - n: - { - o: - { - p: - { - q: - { - if(0 <= _x_){ - if(0 >= _x_) break i; - var _y_ = caml_string_compare(tag_006, cst_nonEmptyHole); - if(0 <= _y_){ - if(0 >= _y_) break q; - if(! caml_string_notequal(tag_006, cst_operationError)) - break p; - if(! caml_string_notequal(tag_006, cst_step)) break o; - if(! caml_string_notequal(tag_006, cst_steppable)) break n; - if(! caml_string_notequal(tag_006, cst_stepped)) break m; - if(! caml_string_notequal(tag_006, cst_substituted)) - break l; - if(! caml_string_notequal(tag_006, cst_term)) break k; - if(caml_string_notequal(tag_006, cst_varHole)) break a; - break j; - } - if(! caml_string_notequal(tag_006, cst_collapsed)) break h; - if(! caml_string_notequal(tag_006, cst_delim)) break g; - if(! caml_string_notequal(tag_006, cst_emptyHole)) break f; - if - (! caml_string_notequal(tag_006, cst_failedCastDecoration)) - break e; - if(! caml_string_notequal(tag_006, cst_failedCastDelim)) - break d; - if(! caml_string_notequal(tag_006, cst_holeLabel)) break c; - if - (! caml_string_notequal(tag_006, cst_inconsistentBranches)) - break b; - if(caml_string_notequal(tag_006, cst_invalid)) break a; - } - else{ - var _B_ = caml_string_compare(tag_006, cst_Invalid); - if(0 > _B_){ - if(! caml_string_notequal(tag_006, cst_CastDecoration)) - break i; - if(! caml_string_notequal(tag_006, cst_Collapsed)) break h; - if(! caml_string_notequal(tag_006, cst_Delim)) break g; - if(! caml_string_notequal(tag_006, cst_EmptyHole)) break f; - if - (! caml_string_notequal(tag_006, cst_FailedCastDecoration)) - break e; - if(! caml_string_notequal(tag_006, cst_FailedCastDelim)) - break d; - if(! caml_string_notequal(tag_006, cst_HoleLabel)) break c; - if(caml_string_notequal(tag_006, cst_InconsistentBranches)) - break a; - break b; - } - if(0 < _B_){ - if(! caml_string_notequal(tag_006, cst_NonEmptyHole)) - break q; - if(! caml_string_notequal(tag_006, cst_OperationError)) - break p; - if(! caml_string_notequal(tag_006, cst_Step)) break o; - if(! caml_string_notequal(tag_006, cst_Steppable)) break n; - if(! caml_string_notequal(tag_006, cst_Stepped)) break m; - if(! caml_string_notequal(tag_006, cst_Substituted)) - break l; - if(! caml_string_notequal(tag_006, cst_Term)) break k; - if(caml_string_notequal(tag_006, cst_VarHole)) break a; - break j; - } - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - var sexp_args_031 = _v_[2]; - if(sexp_args_031 && ! sexp_args_031[2]){ - var - arg0_032 = sexp_args_031[1], - res0_033 = - caml_call1(Haz3lcore_InvalidOperationErro[3], arg0_032); - return [4, res0_033]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_003, - tag_006, - sexp_005); - } - var sexp_args_007 = _v_[2]; - if(sexp_args_007 && ! sexp_args_007[2]){ - var - arg0_008 = sexp_args_007[1], - res0_009 = caml_call1(Sexplib_Std[16], arg0_008); - return [0, res0_009]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_003, - tag_006, - sexp_005); - } - var sexp_args_036 = _v_[2]; - if(sexp_args_036 && ! sexp_args_036[2]){ - var - arg0_037 = sexp_args_036[1], - res0_038 = caml_call1(Sexplib_Std[16], arg0_037); - return [5, res0_038]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_003, - tag_006, - sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - var sexp_args_019 = _v_[2]; - if(sexp_args_019){ - var _z_ = sexp_args_019[2]; - if(_z_ && ! _z_[2]){ - var - arg1_021 = _z_[1], - arg0_020 = sexp_args_019[1], - res0_022 = caml_call1(Haz3lcore_VarErrStatus[1][3], arg0_020), - res1_023 = caml_call1(Haz3lcore_Id[2], arg1_021); - return [2, res0_022, res1_023]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_003, - tag_006, - sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - var sexp_args_012 = _v_[2]; - if(sexp_args_012){ - var _A_ = sexp_args_012[2]; - if(_A_ && ! _A_[2]){ - var - arg1_014 = _A_[1], - arg0_013 = sexp_args_012[1], - res0_015 = caml_call1(Sexplib_Std[7], arg0_013), - res1_016 = caml_call1(Haz3lcore_ClosureEnvironment[3], arg1_014); - return [1, res0_015, res1_016]; - } - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_003, - tag_006, - sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - return caml_call2 - (Sexplib0_Sexp_conv_error[3], error_source_003, sexp_005); - } - var sexp_args_026 = _v_[2]; - if(sexp_args_026 && ! sexp_args_026[2]){ - var - arg0_027 = sexp_args_026[1], - res0_028 = caml_call1(Haz3lcore_Id[2], arg0_027); - return [3, res0_028]; - } - return caml_call3 - (Sexplib0_Sexp_conv_error[4], - error_source_003, - tag_006, - sexp_005); - } - return caml_call2(Sexplib0_Sexp_conv_error[8], error_source_003, sexp_005); - } - function sexp_of_t(param){ - if(typeof param === "number") - switch(param){ - case 0: - return _a_; - case 1: - return _b_; - case 2: - return _c_; - case 3: - return _d_; - case 4: - return _e_; - case 5: - return _f_; - case 6: - return _g_; - case 7: - return _h_; - case 8: - return _i_; - case 9: - return _j_; - default: return _k_; - } - switch(param[0]){ - case 0: - var - arg0_039 = param[1], - res0_040 = caml_call1(Sexplib_Std[15], arg0_039); - return [1, [0, _l_, [0, res0_040, 0]]]; - case 1: - var - arg1_042 = param[2], - arg0_041 = param[1], - res0_043 = caml_call1(Sexplib_Std[6], arg0_041), - res1_044 = caml_call1(Haz3lcore_ClosureEnvironment[4], arg1_042); - return [1, [0, _m_, [0, res0_043, [0, res1_044, 0]]]]; - case 2: - var - arg1_046 = param[2], - arg0_045 = param[1], - res0_047 = caml_call1(Haz3lcore_VarErrStatus[1][4], arg0_045), - res1_048 = caml_call1(Haz3lcore_Id[1], arg1_046); - return [1, [0, _n_, [0, res0_047, [0, res1_048, 0]]]]; - case 3: - var - arg0_049 = param[1], - res0_050 = caml_call1(Haz3lcore_Id[1], arg0_049); - return [1, [0, _o_, [0, res0_050, 0]]]; - case 4: - var - arg0_051 = param[1], - res0_052 = caml_call1(Haz3lcore_InvalidOperationErro[4], arg0_051); - return [1, [0, _p_, [0, res0_052, 0]]]; - default: - var - arg0_053 = param[1], - res0_054 = caml_call1(Sexplib_Std[15], arg0_053); - return [1, [0, _q_, [0, res0_054, 0]]]; - } - } - var Haz3lweb_DHAnnot = [0, t_of_sexp, sexp_of_t]; - runtime.caml_register_global(92, Haz3lweb_DHAnnot, "Haz3lweb__DHAnnot"); - return; - } - (globalThis)); - -//# 35758 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_fpx = "%fpx", - cst_s_container = "%s-container", - cst_container = "-container", - cst_decoration_container$1 = "decoration-container", - cst_non_scaling_stroke$1 = "non-scaling-stroke", - cst_px$0 = "px", - cst_px = "px;", - cst_style$1 = "style", - cst_vector_effect$1 = "vector-effect"; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - function caml_call4(f, a0, a1, a2, a3){ - return (f.l >= 0 ? f.l : f.l = f.length) == 4 - ? f(a0, a1, a2, a3) - : runtime.caml_call_gen(f, [a0, a1, a2, a3]); - } - var - global_data = runtime.caml_get_global_data(), - Haz3lweb_SvgUtil = global_data.Haz3lweb__SvgUtil, - Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, - Stdlib_List = global_data.Stdlib__List, - Stdlib_Printf = global_data.Stdlib__Printf, - Virtual_dom_Node = global_data.Virtual_dom__Node, - cst_non_scaling_stroke$0 = cst_non_scaling_stroke$1, - cst_vector_effect$0 = cst_vector_effect$1, - _i_ = [0, "var-err-hole", 0], - cst_non_scaling_stroke = cst_non_scaling_stroke$1, - cst_vector_effect = cst_vector_effect$1, - _h_ = [0, "err-hole", 0], - _a_ = - [0, - [11, - "width: ", - [8, - [0, 0, 0], - 0, - 0, - [11, "px; height: ", [8, [0, 0, 0], 0, 0, [11, cst_px, 0]]]]], - "width: %fpx; height: %fpx;"], - cst_style = cst_style$1, - _b_ = [0, [2, 0, [11, cst_container, 0]], cst_s_container], - cst_decoration_container = cst_decoration_container$1, - cst_none = "none", - cst_preserveAspectRatio = "preserveAspectRatio", - _e_ = [0, [8, [0, 0, 0], 0, 0, [11, cst_px$0, 0]], cst_fpx], - cst_height = "height", - _f_ = [0, [8, [0, 0, 0], 0, 0, [11, cst_px$0, 0]], cst_fpx], - cst_width = "width", - _g_ = - [0, [11, "0 0 ", [4, 0, 0, 0, [12, 32, [4, 0, 0, 0, 0]]]], "0 0 %d %d"], - cst_viewBox = "viewBox", - cst_svg = "svg", - _c_ = - [0, - [11, - "top: calc(", - [8, - [0, 0, 0], - 0, - 0, - [11, "px); left: ", [8, [0, 0, 0], 0, 0, [11, cst_px, 0]]]]], - "top: calc(%fpx); left: %fpx;"], - cst_style$0 = cst_style$1, - _d_ = [0, [2, 0, [11, cst_container, 0]], cst_s_container], - cst_decoration_container$0 = cst_decoration_container$1; - function container - (container_type, - font_metrics, - origin, - buffered_height, - buffered_width, - cls, - contents){ - var - buffered_height_px = buffered_height * font_metrics[1], - buffered_width_px = buffered_width * font_metrics[2], - container_origin_x = origin[1] * font_metrics[1], - container_origin_y = origin[2] * font_metrics[2]; - if(container_type) - var - _y_ = - caml_call3 - (Stdlib_Printf[4], _a_, buffered_width_px, buffered_height_px), - _z_ = [0, caml_call2(Virtual_dom_Vdom[1][1], cst_style, _y_), 0], - _A_ = - [0, - cst_decoration_container, - [0, caml_call2(Stdlib_Printf[4], _b_, cls), 0]], - _B_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _A_), _z_], - _C_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _B_)], - inner = caml_call3(Virtual_dom_Node[11], 0, _C_, contents); - else - var - _I_ = - [0, - caml_call2(Virtual_dom_Vdom[1][1], cst_preserveAspectRatio, cst_none), - 0], - _J_ = caml_call2(Stdlib_Printf[4], _e_, buffered_height_px), - _K_ = [0, caml_call2(Virtual_dom_Vdom[1][1], cst_height, _J_), _I_], - _L_ = caml_call2(Stdlib_Printf[4], _f_, buffered_width_px), - _M_ = [0, caml_call2(Virtual_dom_Vdom[1][1], cst_width, _L_), _K_], - _N_ = caml_call3(Stdlib_Printf[4], _g_, buffered_width, buffered_height), - _O_ = [0, caml_call2(Virtual_dom_Vdom[1][1], cst_viewBox, _N_), _M_], - _P_ = [0, caml_call1(Virtual_dom_Vdom[1][16], [0, cls, 0]), _O_], - _Q_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _P_)], - inner = caml_call4(Virtual_dom_Node[48], cst_svg, 0, _Q_, contents); - var - _D_ = - caml_call3 - (Stdlib_Printf[4], _c_, container_origin_x, container_origin_y), - _E_ = [0, caml_call2(Virtual_dom_Vdom[1][1], cst_style$0, _D_), 0], - _F_ = - [0, - cst_decoration_container$0, - [0, caml_call2(Stdlib_Printf[4], _d_, cls), 0]], - _G_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _F_), _E_], - _H_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _G_)]; - return caml_call3(Virtual_dom_Node[11], 0, _H_, [0, inner, 0]); - } - function corner_radii(font_metrics){ - return [0, 2.5 / font_metrics[2], 2.5 / font_metrics[1]]; - } - function rects(opt, _r_, start){ - if(opt) var sth = opt[1], indent = sth; else var indent = 0; - if(_r_) var sth$0 = _r_[1], vtrim = sth$0; else var vtrim = 0.; - return function(m){ - var n = caml_call1(Stdlib_List[1], m[2]), _s_ = m[2]; - function _t_(i, box){return [0, i, box];} - var _u_ = caml_call1(caml_call1(Stdlib_List[20], _t_), _s_); - function _v_(start, param){ - var - box = param[2], - i = param[1], - is_last = i === (n - 1 | 0) ? 1 : 0, - is_first = 0 === i ? 1 : 0, - vtrim$0 = is_last ? vtrim : 0., - vtrim$1 = is_first ? vtrim : 0., - _w_ = box[1] - vtrim$1 - vtrim$0, - _x_ = box[2], - vtrim$2 = is_first ? vtrim : 0.; - return [0, - [0, start[1] + box[1] | 0, indent], - [0, [254, start[2], start[1] + vtrim$2], _x_, _w_]]; - } - return caml_call1(caml_call2(Stdlib_List[24], _v_, start), _u_)[2];}; - } - function view(opt, corner_radii){ - if(opt) var sth = opt[1], vtrim = sth; else var vtrim = 0.; - return function(param){ - var - subject = param[2], - offset = param[1], - _n_ = rects(0, [0, vtrim], [0, 0, offset])(subject), - _o_ = caml_call1(caml_call1(Haz3lweb_SvgUtil[5][7], corner_radii), _n_), - _p_ = - [0, - caml_call2 - (Virtual_dom_Vdom[1][1], cst_vector_effect, cst_non_scaling_stroke), - 0], - _q_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _h_), _p_]; - return caml_call1(caml_call1(Haz3lweb_SvgUtil[4][17], _q_), _o_);}; - } - var ErrHole = [0, view]; - function view$0(opt, corner_radii){ - if(opt) var sth = opt[1], vtrim = sth; else var vtrim = 0.; - return function(param){ - var - subject = param[2], - offset = param[1], - _j_ = rects(0, [0, vtrim], [0, 0, offset])(subject), - _k_ = caml_call1(caml_call1(Haz3lweb_SvgUtil[5][7], corner_radii), _j_), - _l_ = - [0, - caml_call2 - (Virtual_dom_Vdom[1][1], - cst_vector_effect$0, - cst_non_scaling_stroke$0), - 0], - _m_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _i_), _l_]; - return caml_call1(caml_call1(Haz3lweb_SvgUtil[4][17], _m_), _k_);}; - } - var - VarErrHole = [0, view$0], - Haz3lweb_Decoration_common = - [0, container, corner_radii, rects, ErrHole, VarErrHole]; - runtime.caml_register_global - (35, Haz3lweb_Decoration_common, "Haz3lweb__Decoration_common"); - return; - } - (globalThis)); - -//# 36015 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst$17 = "(", - cst$16 = ")", - cst$19 = "->{", - cst$18 = "}"; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - var - global_data = runtime.caml_get_global_data(), - cst$5 = cst$16, - cst$6 = cst$17, - cst$1 = "?", - cst$2 = "]", - cst$3 = "[", - cst$4 = " ", - cst$7 = " +", - cst$8 = ",", - cst$9 = "()", - cst$10 = cst$16, - cst$11 = cst$17, - cst$12 = cst$18, - cst$13 = cst$19, - cst$14 = cst$18, - cst$15 = cst$19, - cst = cst$16, - cst$0 = cst$17, - Pretty_Doc = global_data.Pretty__Doc, - Stdlib = global_data.Stdlib, - Haz3lcore_Typ = global_data.Haz3lcore__Typ, - Haz3lcore_Unicode = global_data.Haz3lcore__Unicode, - Stdlib_List = global_data.Stdlib__List, - Util_ListUtil = global_data.Util__ListUtil, - Haz3lweb_Type = global_data.Haz3lweb__Type, - _g_ = [0, 0], - _f_ = [0, 0], - _c_ = [0, 0], - _a_ = [0, 1], - _b_ = [0, 0], - cst_Int = "Int", - cst_Float = "Float", - cst_Bool = "Bool", - cst_String = "String", - _d_ = [0, 0], - _e_ = [0, 1], - cst_rec = "rec ", - cst_forall = "forall ", - precedence_Prod = 1, - precedence_Arrow = 2, - precedence_Sum = 3, - precedence_Ap = 4, - precedence_Const = 5; - function precedence(ty){ - var match = caml_call1(Haz3lcore_Typ[33], ty); - if(typeof match !== "number") - switch(match[0]){ - case 2: - return precedence_Const; - case 3: - return precedence_Arrow; - case 5: - return precedence_Prod; - case 6: - return precedence_Const; - case 7: - return precedence_Ap; - } - return precedence_Sum; - } - function pad_child(opt, enforce_inline){ - if(opt) - var sth = opt[1], r = sth[2], l = sth[1]; - else - var - r$0 = caml_call1(Pretty_Doc[13], 0), - l$0 = caml_call1(Pretty_Doc[13], 0), - r = r$0, - l = l$0; - return function(child){ - var - _at_ = [0, l, [0, caml_call1(child, 1), [0, r, 0]]], - inline_choice = caml_call1(Pretty_Doc[18], _at_), - _au_ = [0, caml_call1(Pretty_Doc[9], 0), 0], - _av_ = caml_call1(child, enforce_inline), - _aw_ = [0, caml_call1(Pretty_Doc[16], _av_), _au_], - _ax_ = [0, caml_call1(Pretty_Doc[9], 0), _aw_], - para_choice = caml_call1(Pretty_Doc[18], _ax_); - return enforce_inline - ? inline_choice - : caml_call2(Pretty_Doc[23], inline_choice, para_choice);}; - } - function mk_delim(s){ - var _as_ = caml_call1(Pretty_Doc[8], s); - return caml_call2(Pretty_Doc[11], 1, _as_); - } - function mk(opt, enforce_inline){ - if(opt) var sth = opt[1], parenthesize = sth; else var parenthesize = 0; - return function(ty){ - function mk$0(_ar_){return mk(_ar_, enforce_inline);} - var match = caml_call1(Haz3lcore_Typ[33], ty); - if(typeof match === "number") - switch(match){ - case 0: - var - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[8], cst_Int); - break; - case 1: - var - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[8], cst_Float); - break; - case 2: - var - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[8], cst_Bool); - break; - default: - var - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[8], cst_String); - } - else - switch(match[0]){ - case 0: - var - _l_ = caml_call1(Pretty_Doc[8], cst$1), - _m_ = caml_call2(Pretty_Doc[11], 0, _l_), - parenthesize$0 = parenthesize, - doc = caml_call2(Pretty_Doc[11], 1, _m_); - break; - case 1: - var - name = match[1], - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[8], name); - break; - case 2: - var - ty$0 = match[1], - _n_ = [0, mk_delim(cst$2), 0], - _o_ = - function(enforce_inline){ - var _aq_ = mk(0, enforce_inline)(ty$0); - return caml_call2(Pretty_Doc[11], _c_, _aq_); - }, - _p_ = [0, pad_child(0, enforce_inline)(_o_), _n_], - _q_ = [0, mk_delim(cst$3), _p_], - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[18], _q_); - break; - case 3: - var - ty2 = match[2], - ty1 = match[1], - _h_ = mk$0([0, precedence(ty2) < 2 ? 1 : 0])(ty2), - d2 = caml_call2(Pretty_Doc[11], _a_, _h_), - _i_ = mk$0([0, precedence(ty1) <= 2 ? 1 : 0])(ty1), - d1 = caml_call2(Pretty_Doc[11], _b_, _i_), - _r_ = caml_call2(Stdlib[28], Haz3lcore_Unicode[8], cst$4), - _s_ = [0, caml_call1(Pretty_Doc[8], _r_), 0], - _t_ = [0, caml_call1(Pretty_Doc[14], 0), 0], - _u_ = [0, caml_call1(Pretty_Doc[9], 0), _t_], - _v_ = [0, caml_call1(Pretty_Doc[24], _u_), _s_], - _w_ = [0, d1, [0, caml_call1(Pretty_Doc[18], _v_), [0, d2, 0]]], - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[18], _w_); - break; - case 4: - var - sum_map = match[1], - _x_ = - function(i, vr){ - if(0 !== vr[0]){ - var - ty$0 = vr[1], - _ao_ = [0, mk$0(0)(ty$0), 0], - _ap_ = caml_call1(Pretty_Doc[18], _ao_); - return caml_call2(Pretty_Doc[11], [0, i + 1 | 0], _ap_); - } - var match = vr[3], ctr = vr[1]; - if(match){ - var - ty = match[1], - _ai_ = [0, caml_call1(Pretty_Doc[8], cst$5), 0], - _aj_ = [0, mk$0(0)(ty), _ai_], - _ak_ = caml_call2(Stdlib[28], ctr, cst$6), - _al_ = [0, caml_call1(Pretty_Doc[8], _ak_), _aj_], - _am_ = caml_call1(Pretty_Doc[18], _al_); - return caml_call2(Pretty_Doc[11], [0, i + 1 | 0], _am_); - } - var _an_ = caml_call1(Pretty_Doc[8], ctr); - return caml_call2(Pretty_Doc[11], [0, i + 1 | 0], _an_); - }, - _y_ = caml_call2(Stdlib_List[20], _x_, sum_map), - _z_ = [0, caml_call1(Pretty_Doc[14], 0), 0], - _A_ = [0, caml_call1(Pretty_Doc[9], 0), _z_], - _B_ = [0, caml_call1(Pretty_Doc[24], _A_), 0], - _C_ = [0, caml_call1(Pretty_Doc[8], cst$7), _B_], - _D_ = caml_call1(Pretty_Doc[18], _C_), - _E_ = caml_call1(caml_call1(Util_ListUtil[14], _D_), _y_), - center = caml_call1(Pretty_Doc[18], _E_), - parenthesize$0 = 1, - doc = center; - break; - case 5: - var match$0 = match[1]; - if(match$0) - var - tail = match$0[2], - head = match$0[1], - _F_ = - function(i, ty){ - var _ah_ = mk$0([0, precedence(ty) <= 1 ? 1 : 0])(ty); - return caml_call2(Pretty_Doc[11], [0, i + 1 | 0], _ah_); - }, - _G_ = caml_call2(Stdlib_List[20], _F_, tail), - _H_ = mk$0([0, precedence(head) <= 1 ? 1 : 0])(head), - _I_ = [0, caml_call2(Pretty_Doc[11], _d_, _H_), _G_], - _J_ = [0, caml_call1(Pretty_Doc[14], 0), 0], - _K_ = [0, caml_call1(Pretty_Doc[9], 0), _J_], - _L_ = [0, caml_call1(Pretty_Doc[24], _K_), 0], - _M_ = [0, caml_call1(Pretty_Doc[8], cst$8), _L_], - _N_ = caml_call1(Pretty_Doc[18], _M_), - _O_ = caml_call1(caml_call1(Util_ListUtil[14], _N_), _I_), - center$0 = caml_call1(Pretty_Doc[18], _O_), - parenthesize$0 = 1, - doc = center$0; - else - var - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[8], cst$9); - break; - case 6: - var - ty$1 = match[1], - parenthesize$0 = 0, - doc = mk(_e_, enforce_inline)(ty$1); - break; - case 7: - var - t2 = match[2], - t1 = match[1], - _P_ = [0, caml_call1(Pretty_Doc[8], cst$10), 0], - _Q_ = [0, mk$0(0)(t2), _P_], - _R_ = [0, caml_call1(Pretty_Doc[8], cst$11), _Q_], - _S_ = [0, mk$0(0)(t1), _R_], - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[18], _S_); - break; - case 8: - var - ty$2 = match[2], - name$0 = match[1], - _T_ = [0, mk_delim(cst$12), 0], - _U_ = - function(enforce_inline){ - var _ag_ = mk(0, enforce_inline)(ty$2); - return caml_call2(Pretty_Doc[11], _f_, _ag_); - }, - _V_ = [0, pad_child(0, enforce_inline)(_U_), _T_], - _W_ = caml_call1(Haz3lweb_Type[1], name$0), - _X_ = caml_call2(Stdlib[28], _W_, cst$13), - _Y_ = caml_call2(Stdlib[28], cst_rec, _X_), - _Z_ = [0, caml_call1(Pretty_Doc[8], _Y_), _V_], - parenthesize$0 = parenthesize, - doc = caml_call1(Pretty_Doc[18], _Z_); - break; - default: - var - ty$3 = match[2], - name$1 = match[1], - ___ = [0, mk_delim(cst$14), 0], - _$_ = - function(enforce_inline){ - var _af_ = mk(0, enforce_inline)(ty$3); - return caml_call2(Pretty_Doc[11], _g_, _af_); - }, - _aa_ = [0, pad_child(0, enforce_inline)(_$_), ___], - _ab_ = caml_call1(Haz3lweb_Type[1], name$1), - _ac_ = caml_call2(Stdlib[28], _ab_, cst$15), - _ad_ = caml_call2(Stdlib[28], cst_forall, _ac_), - _ae_ = [0, caml_call1(Pretty_Doc[8], _ad_), _aa_], - doc$1 = caml_call1(Pretty_Doc[18], _ae_), - parenthesize$0 = parenthesize, - doc = doc$1; - } - var doc$0 = caml_call2(Pretty_Doc[11], 2, doc); - if(! parenthesize$0) return doc$0; - var - _j_ = [0, doc$0, [0, mk_delim(cst), 0]], - _k_ = [0, mk_delim(cst$0), _j_]; - return caml_call1(Pretty_Doc[18], _k_);}; - } - var Haz3lweb_HTypDoc = [0, mk]; - runtime.caml_register_global(37, Haz3lweb_HTypDoc, "Haz3lweb__HTypDoc"); - return; - } - (globalThis)); - -//# 36328 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - var - global_data = runtime.caml_get_global_data(), - Haz3lweb_HTypDoc = global_data.Haz3lweb__HTypDoc, - Pretty_Doc = global_data.Pretty__Doc; - function promote_annot(param){ - if(typeof param === "number") - switch(param){case 0: return 2;case 1: return 3;default: return 1;} - var n = param[1]; - return [0, n]; - } - function promote(d){ - return caml_call1(caml_call1(Pretty_Doc[26], promote_annot), d); - } - function mk(enforce_inline, ty){ - return promote - (caml_call1 - (caml_call2(Haz3lweb_HTypDoc[1], 0, enforce_inline), ty)); - } - var Haz3lweb_DHDoc_Typ = [0, promote_annot, promote, mk]; - runtime.caml_register_global(2, Haz3lweb_DHDoc_Typ, "Haz3lweb__DHDoc_Typ"); - return; - } - (globalThis)); - -//# 36368 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst$27 = "", - cst$25 = "(", - cst$24 = ")", - cst$29 = "->", - cst$28 = ":", - cst$26 = ">"; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - var - global_data = runtime.caml_get_global_data(), - cst$23 = " |> ", - cst$21 = cst$24, - cst$22 = cst$25, - cst$19 = cst$26, - cst$20 = "@<", - cst$17 = cst$27, - cst$18 = cst$27, - cst$15 = "]", - cst$16 = "[", - cst$14 = ", ", - cst$13 = "@", - cst$12 = "::", - lbl = "?", - cst = "[]", - cst$0 = "()", - cst$1 = "_", - cst$2 = cst$25, - cst$3 = cst$24, - cst$4 = cst$28, - cst$5 = cst$29, - cst$6 = cst$29, - cst$7 = cst$28, - cst$8 = "|", - cst$9 = "=>", - cst$10 = "<", - cst$11 = cst$26, - Pretty_Doc = global_data.Pretty__Doc, - Stdlib = global_data.Stdlib, - Stdlib_Float = global_data.Stdlib__Float, - Haz3lcore_Form = global_data.Haz3lcore__Form, - Haz3lcore_Precedence = global_data.Haz3lcore__Precedence, - Haz3lcore_Unicode = global_data.Haz3lcore__Unicode, - precedence_const = Haz3lcore_Precedence[7], - precedence_Ap = Haz3lcore_Precedence[10], - precedence_Power = Haz3lcore_Precedence[12], - precedence_Not = Haz3lcore_Precedence[14], - precedence_Times = Haz3lcore_Precedence[13], - precedence_Divide = Haz3lcore_Precedence[13], - precedence_Plus = Haz3lcore_Precedence[15], - precedence_Minus = Haz3lcore_Precedence[15], - precedence_Cons = Haz3lcore_Precedence[16], - precedence_Equals = Haz3lcore_Precedence[18], - precedence_LessThan = Haz3lcore_Precedence[18], - precedence_GreaterThan = Haz3lcore_Precedence[18], - precedence_And = Haz3lcore_Precedence[19], - precedence_Or = Haz3lcore_Precedence[20], - precedence_Comma = Haz3lcore_Precedence[24], - precedence_max = Haz3lcore_Precedence[31], - cst_NegInf = "NegInf", - cst_Inf = "Inf", - cst_NaN = "NaN", - cst_End = "End", - cst_Test = "Test", - cst_fun = "fun", - cst_fix = "fix", - cst_case = "case", - cst_end = "end"; - function pad_child(opt, enforce_inline){ - if(opt) - var sth = opt[1], r = sth[2], l = sth[1]; - else - var - r$0 = caml_call1(Pretty_Doc[13], 0), - l$0 = caml_call1(Pretty_Doc[13], 0), - r = r$0, - l = l$0; - return function(child){ - var - _B_ = [0, l, [0, caml_call1(child, 1), [0, r, 0]]], - inline_choice = caml_call1(Pretty_Doc[18], _B_), - _C_ = [0, caml_call1(Pretty_Doc[9], 0), 0], - _D_ = caml_call1(child, 0), - _E_ = [0, caml_call1(Pretty_Doc[16], _D_), _C_], - _F_ = [0, caml_call1(Pretty_Doc[9], 0), _E_], - para_choice = caml_call1(Pretty_Doc[18], _F_); - return enforce_inline - ? inline_choice - : caml_call2(Pretty_Doc[23], inline_choice, para_choice);}; - } - function mk(delim_text){ - var _A_ = caml_call1(Pretty_Doc[8], delim_text); - return caml_call1(caml_call1(Pretty_Doc[11], 3), _A_); - } - function empty_hole(env){ - var - _y_ = caml_call1(Pretty_Doc[8], lbl), - _z_ = caml_call1(caml_call1(Pretty_Doc[11], 2), _y_); - return caml_call1(caml_call1(Pretty_Doc[11], 3), _z_); - } - var - list_nil = mk(cst), - triv = mk(cst$0), - wild = mk(cst$1), - open_Parenthesized = mk(cst$2), - close_Parenthesized = mk(cst$3), - sym_Fun = mk(cst_fun), - colon_Fun = mk(cst$4), - arrow_Fun = mk(cst$5), - fix_FixF = mk(cst_fix), - arrow_FixF = mk(cst$6), - colon_FixF = mk(cst$7), - open_Case = mk(cst_case), - close_Case = mk(cst_end), - bar_Rule = mk(cst$8), - arrow_Rule = mk(cst$9), - open_Cast = mk(cst$10), - arrow_Cast = mk(Haz3lcore_Unicode[9]), - back_arrow_Cast = mk(Haz3lcore_Unicode[10]), - close_Cast = mk(cst$11), - open_FailedCast = caml_call1(caml_call1(Pretty_Doc[11], 6), open_Cast), - _a_ = mk(Haz3lcore_Unicode[9]), - arrow_FailedCast = caml_call1(caml_call1(Pretty_Doc[11], 6), _a_), - close_FailedCast = caml_call1(caml_call1(Pretty_Doc[11], 6), close_Cast), - Delim = - [0, - mk, - empty_hole, - list_nil, - triv, - wild, - open_Parenthesized, - close_Parenthesized, - sym_Fun, - colon_Fun, - arrow_Fun, - fix_FixF, - arrow_FixF, - colon_FixF, - open_Case, - close_Case, - bar_Rule, - arrow_Rule, - open_Cast, - arrow_Cast, - back_arrow_Cast, - close_Cast, - open_FailedCast, - arrow_FailedCast, - close_FailedCast]; - function mk_EmptyHole(opt, env){ - if(opt) var sth = opt[1], selected = sth; else var selected = 0; - var _x_ = caml_call1(Delim[2], env); - return caml_call1(caml_call1(Pretty_Doc[11], [1, selected, env]), _x_); - } - function mk_InvalidText(t){ - var _w_ = caml_call1(Pretty_Doc[8], t); - return caml_call1(caml_call1(Pretty_Doc[11], 5), _w_); - } - function mk_Sequence(doc1, doc2){ - var _v_ = [0, doc1, [0, caml_call1(Pretty_Doc[9], 0), [0, doc2, 0]]]; - return caml_call1(Pretty_Doc[18], _v_); - } - function mk_IntLit(n){ - var _u_ = caml_call1(Stdlib[33], n); - return caml_call1(Pretty_Doc[8], _u_); - } - function mk_StringLit(s){ - var _t_ = caml_call1(Haz3lcore_Form[50], s); - return caml_call1(Pretty_Doc[8], _t_); - } - function mk_Test(t){ - var - _r_ = [0, t, [0, caml_call1(Pretty_Doc[8], cst_End), 0]], - _s_ = [0, caml_call1(Pretty_Doc[8], cst_Test), _r_]; - return caml_call1(Pretty_Doc[18], _s_); - } - function mk_FloatLit(f){ - var - match = caml_call1(Stdlib_Float[14], f), - match$0 = caml_call1(Stdlib_Float[15], f); - if(f < 0.){ - if(match) return caml_call1(Pretty_Doc[8], cst_NegInf); - } - else if(match) return caml_call1(Pretty_Doc[8], cst_Inf); - if(match$0) return caml_call1(Pretty_Doc[8], cst_NaN); - var _q_ = caml_call1(Stdlib[35], f); - return caml_call1(Pretty_Doc[8], _q_); - } - function mk_BoolLit(b){ - var _p_ = caml_call1(Stdlib[30], b); - return caml_call1(Pretty_Doc[8], _p_); - } - var mk_ConstructorLit = Pretty_Doc[8]; - function mk_Cons(hd, tl){ - var _o_ = [0, hd, [0, caml_call1(Pretty_Doc[8], cst$12), [0, tl, 0]]]; - return caml_call1(Pretty_Doc[18], _o_); - } - function mk_ListConcat(hd, tl){ - var _n_ = [0, hd, [0, caml_call1(Pretty_Doc[8], cst$13), [0, tl, 0]]]; - return caml_call1(Pretty_Doc[18], _n_); - } - function mk_comma_seq(ld, rd, l){ - function mk_comma_seq_inner(l){ - if(! l) return 0; - var hd = l[1]; - if(! l[2]) return [0, hd, 0]; - var - tl = l[2], - _l_ = mk_comma_seq_inner(tl), - _m_ = [0, hd, [0, caml_call1(Pretty_Doc[8], cst$14), 0]]; - return caml_call2(Stdlib[37], _m_, _l_); - } - var - _g_ = [0, caml_call1(Pretty_Doc[8], rd), 0], - _h_ = mk_comma_seq_inner(l), - _i_ = caml_call2(Stdlib[37], _h_, _g_), - _j_ = [0, caml_call1(Pretty_Doc[8], ld), 0], - _k_ = caml_call2(Stdlib[37], _j_, _i_); - return caml_call1(Pretty_Doc[18], _k_); - } - function mk_ListLit(l){return mk_comma_seq(cst$16, cst$15, l);} - function mk_Tuple(elts){return mk_comma_seq(cst$18, cst$17, elts);} - function mk_TypAp(doc1, doc2){ - var - _e_ = [0, doc2, [0, caml_call1(Pretty_Doc[8], cst$19), 0]], - _f_ = [0, doc1, [0, caml_call1(Pretty_Doc[8], cst$20), _e_]]; - return caml_call1(Pretty_Doc[18], _f_); - } - function mk_Ap(doc1, doc2){ - var - _c_ = [0, doc2, [0, caml_call1(Pretty_Doc[8], cst$21), 0]], - _d_ = [0, doc1, [0, caml_call1(Pretty_Doc[8], cst$22), _c_]]; - return caml_call1(Pretty_Doc[18], _d_); - } - function mk_rev_Ap(doc1, doc2){ - var _b_ = [0, doc1, [0, caml_call1(Pretty_Doc[8], cst$23), [0, doc2, 0]]]; - return caml_call1(Pretty_Doc[18], _b_); - } - var - Haz3lweb_DHDoc_common = - [0, - precedence_const, - precedence_Ap, - precedence_Times, - precedence_Power, - precedence_Divide, - precedence_Plus, - precedence_Minus, - precedence_Not, - precedence_Cons, - precedence_Equals, - precedence_LessThan, - precedence_GreaterThan, - precedence_And, - precedence_Or, - precedence_Comma, - precedence_max, - pad_child, - Delim, - mk_EmptyHole, - mk_InvalidText, - mk_Sequence, - mk_Test, - mk_IntLit, - mk_FloatLit, - mk_BoolLit, - mk_ConstructorLit, - mk_StringLit, - mk_Cons, - mk_ListConcat, - mk_ListLit, - mk_Tuple, - mk_TypAp, - mk_Ap, - mk_rev_Ap]; - runtime.caml_register_global - (42, Haz3lweb_DHDoc_common, "Haz3lweb__DHDoc_common"); - return; - } - (globalThis)); - -//# 36664 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - var - global_data = runtime.caml_get_global_data(), - Haz3lcore_DHPat = global_data.Haz3lcore__DHPat, - Haz3lweb_DHDoc_common = global_data.Haz3lweb__DHDoc_common, - Stdlib_List = global_data.Stdlib__List, - Pretty_Doc = global_data.Pretty__Doc, - Haz3lweb_DHDoc_Typ = global_data.Haz3lweb__DHDoc_Typ, - Haz3lcore_ClosureEnvironment = global_data.Haz3lcore__ClosureEnvironment, - Haz3lcore_Statics = global_data.Haz3lcore__Statics, - _a_ = [0, 1]; - function precedence(dp){ - var match = caml_call1(Haz3lcore_DHPat[21], dp); - if(typeof match !== "number") - switch(match[0]){ - case 8: - return Haz3lweb_DHDoc_common[9]; - case 10: - return Haz3lweb_DHDoc_common[15]; - case 11: - return Haz3lweb_DHDoc_common[1]; - case 12: - return Haz3lweb_DHDoc_common[2]; - case 13: - return Haz3lweb_DHDoc_common[2]; - } - return Haz3lweb_DHDoc_common[1]; - } - function mk(infomap, opt, show_casts, enforce_inline){ - if(opt) var sth = opt[1], parenthesize = sth; else var parenthesize = 0; - return function(dp){ - function mk$0(_o_){return mk(infomap, _o_, show_casts, enforce_inline);} - var match = caml_call1(Haz3lcore_DHPat[21], dp); - a: - { - if(typeof match === "number"){ - if(1 === match){var doc = Haz3lweb_DHDoc_common[18][5]; break a;} - } - else - switch(match[0]){ - case 0: - var t = match[1], doc = caml_call1(Haz3lweb_DHDoc_common[20], t); - break a; - case 2: - var n = match[1], doc = caml_call1(Haz3lweb_DHDoc_common[23], n); - break a; - case 3: - var f = match[1], doc = caml_call1(Haz3lweb_DHDoc_common[24], f); - break a; - case 4: - var b = match[1], doc = caml_call1(Haz3lweb_DHDoc_common[25], b); - break a; - case 5: - var s = match[1], doc = caml_call1(Haz3lweb_DHDoc_common[27], s); - break a; - case 6: - var - d_list = match[1], - _c_ = function(eta){return mk$0(0)(eta);}, - ol = caml_call2(Stdlib_List[19], _c_, d_list), - doc = caml_call1(Haz3lweb_DHDoc_common[30], ol); - break a; - case 7: - var - name = match[1], - doc = caml_call1(Haz3lweb_DHDoc_common[26], name); - break a; - case 8: - var - dp2 = match[2], - dp1 = match[1], - precedence_op = Haz3lweb_DHDoc_common[9], - doc2$0 = mk$0([0, precedence_op < precedence(dp2) ? 1 : 0])(dp2), - doc1$0 = mk$0([0, precedence_op <= precedence(dp1) ? 1 : 0])(dp1), - doc = caml_call2(Haz3lweb_DHDoc_common[28], doc1$0, doc2$0); - break a; - case 9: - var x = match[1], doc = caml_call1(Pretty_Doc[8], x); break a; - case 10: - var ds = match[1]; - if(ds) - var - _d_ = function(eta){return mk$0(0)(eta);}, - _e_ = caml_call2(Stdlib_List[19], _d_, ds), - _f_ = caml_call1(Haz3lweb_DHDoc_common[31], _e_); - else - var _f_ = Haz3lweb_DHDoc_common[18][4]; - var doc = _f_; - break a; - case 11: - var - dp$0 = match[1], - doc = mk(infomap, _a_, show_casts, enforce_inline)(dp$0); - break a; - case 12: - var - dp2$0 = match[2], - dp1$0 = match[1], - precedence_op$0 = Haz3lweb_DHDoc_common[2], - doc2 = - mk$0([0, precedence_op$0 <= precedence(dp2$0) ? 1 : 0])(dp2$0), - doc1 = - mk$0([0, precedence_op$0 < precedence(dp1$0) ? 1 : 0])(dp1$0), - doc = caml_call2(Haz3lweb_DHDoc_common[33], doc1, doc2); - break a; - case 13: - var dp$1 = match[1], t2 = match[3], t1 = match[2]; - if(show_casts) - var - _g_ = [0, Haz3lweb_DHDoc_common[18][21], 0], - _h_ = [0, caml_call2(Haz3lweb_DHDoc_Typ[3], 1, t2), _g_], - _i_ = [0, Haz3lweb_DHDoc_common[18][20], _h_], - _j_ = [0, caml_call2(Haz3lweb_DHDoc_Typ[3], 1, t1), _i_], - _k_ = - caml_call1 - (Pretty_Doc[18], [0, Haz3lweb_DHDoc_common[18][18], _j_]), - _l_ = [0, caml_call2(Pretty_Doc[11], 8, _k_), 0], - _m_ = [0, mk$0(0)(dp$1), _l_], - _n_ = caml_call1(Pretty_Doc[18], _m_); - else - var _n_ = mk$0([0, parenthesize])(dp$1); - var doc = _n_; - break a; - } - var - doc = - caml_call2 - (Haz3lweb_DHDoc_common[19], 0, Haz3lcore_ClosureEnvironment[13]); - } - var - _b_ = caml_call1(Haz3lcore_DHPat[20], dp), - doc$0 = - caml_call2(Haz3lcore_Statics[19], infomap, _b_) - ? caml_call2(Pretty_Doc[11], 4, doc) - : doc; - return parenthesize - ? caml_call1 - (Pretty_Doc[18], - [0, - Haz3lweb_DHDoc_common[18][6], - [0, doc$0, [0, Haz3lweb_DHDoc_common[18][7], 0]]]) - : doc$0;}; - } - var Haz3lweb_DHDoc_Pat = [0, precedence, mk]; - runtime.caml_register_global(8, Haz3lweb_DHDoc_Pat, "Haz3lweb__DHDoc_Pat"); - return; - } - (globalThis)); - -//# 36828 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst$27 = "(", - cst$26 = ")", - cst$23 = "+", - cst$25 = "<", - cst_anon_fn$2 = "", - cst$24 = ">", - cst_in$1 = "in", - caml_equal = runtime.caml_equal, - caml_ml_string_length = runtime.caml_ml_string_length; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - function caml_call5(f, a0, a1, a2, a3, a4){ - return (f.l >= 0 ? f.l : f.l = f.length) == 5 - ? f(a0, a1, a2, a3, a4) - : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4]); - } - var - global_data = runtime.caml_get_global_data(), - cst = "_", - cst$2 = cst$23, - cst$3 = cst$24, - cst$4 = cst$25, - cst$0 = cst$24, - cst$1 = cst$25, - cst$5 = cst$24, - cst$6 = cst$25, - cst$9 = cst$23, - cst$7 = cst$24, - cst$8 = cst$25, - cst$10 = "=", - cst$11 = cst$23, - cst$12 = cst$24, - cst$13 = cst$25, - cst$14 = cst$24, - cst$15 = cst$25, - cst$16 = cst$26, - cst$17 = cst$27, - cst$18 = cst$26, - cst$19 = cst$27, - cst$20 = "$", - cst$21 = "-", - cst$22 = "!", - Haz3lcore_DHExp = global_data.Haz3lcore__DHExp, - Stdlib_List = global_data.Stdlib__List, - Pretty_Doc = global_data.Pretty__Doc, - Haz3lweb_DHDoc_common = global_data.Haz3lweb__DHDoc_common, - Haz3lcore_Unicode = global_data.Haz3lcore__Unicode, - Haz3lweb_DHDoc_Pat = global_data.Haz3lweb__DHDoc_Pat, - Haz3lcore_DHPat = global_data.Haz3lcore__DHPat, - Haz3lcore_InvalidOperationErro = - global_data.Haz3lcore__InvalidOperationError, - Haz3lweb_DHDoc_Typ = global_data.Haz3lweb__DHDoc_Typ, - Stdlib_Option = global_data.Stdlib__Option, - Stdlib = global_data.Stdlib, - Haz3lcore_ClosureEnvironment = global_data.Haz3lcore__ClosureEnvironment, - Stdlib_String = global_data.Stdlib__String, - Haz3lcore_FilterAction = global_data.Haz3lcore__FilterAction, - Haz3lcore_Operators = global_data.Haz3lcore__Operators, - _c_ = [0, 0], - _d_ = [0, 1], - _a_ = [0, 0], - _b_ = [0, 1], - cst_anon_fn = cst_anon_fn$2, - cst_anon_fn$0 = cst_anon_fn$2, - cst_anon_typfn = "anon typfn", - _e_ = [0, 0], - cst_in = cst_in$1, - cst_let = "let", - cst_anon_fn$1 = cst_anon_fn$2, - cst_else = "else", - cst_then = "then", - cst_if = "if", - cst_in$0 = cst_in$1; - function mk_bin_bool_op(op){ - var _cM_ = caml_call1(Haz3lcore_Operators[63], op); - return caml_call1(Pretty_Doc[8], _cM_); - } - function mk_bin_int_op(op){ - var _cL_ = caml_call1(Haz3lcore_Operators[64], op); - return caml_call1(Pretty_Doc[8], _cL_); - } - function mk_bin_float_op(op){ - var _cK_ = caml_call1(Haz3lcore_Operators[65], op); - return caml_call1(Pretty_Doc[8], _cK_); - } - function mk_bin_string_op(op){ - var _cJ_ = caml_call1(Haz3lcore_Operators[66], op); - return caml_call1(Pretty_Doc[8], _cJ_); - } - function mk - (settings, - enforce_inline, - selected_hole_instance, - previous_step, - hidden_steps, - chosen_step, - next_steps, - env, - infomap, - d){ - function go(d, env, enforce_inline, recent_subst){ - a: - { - if(previous_step){ - var match = previous_step[1], id = match[2], ps = match[1]; - if(caml_equal(id, caml_call1(Haz3lcore_DHExp[27], d))){ - var match$0 = ps[6], match$1 = caml_call1(Haz3lcore_DHExp[37], ps[3]); - b: - { - if(typeof match$0 === "number" && 10 > match$0) - switch(match$0){ - case 3: - if(typeof match$1 !== "number" && 15 === match$1[0]){ - var p = match$1[1], _f_ = caml_call1(Haz3lcore_DHPat[36], p); - break b; - } - var _f_ = 0; - break b; - case 5: - if(typeof match$1 !== "number" && 16 === match$1[0]){ - var - p$0 = match$1[1], - _f_ = caml_call1(Haz3lcore_DHPat[36], p$0); - break b; - } - var _f_ = 0; - break b; - case 9: - if(typeof match$1 !== "number" && 18 === match$1[0]){ - var - d2$10 = match$1[2], - match$15 = caml_call1(Haz3lcore_DHExp[37], d2$10); - c: - { - if(typeof match$15 !== "number" && 11 === match$15[0]){ - var - p$1 = match$15[1], - _b8_ = caml_call1(Haz3lcore_DHPat[36], p$1); - break c; - } - var _b8_ = 0; - } - var _f_ = _b8_; - break b; - } - var _f_ = 0; - break b; - } - var _f_ = 0; - } - var recent_subst$0 = _f_; - break a; - } - } - var recent_subst$0 = recent_subst; - } - function go$0(opt, _cI_, _cH_, d){ - if(opt) var sth = opt[1], env$0 = sth; else var env$0 = env; - if(_cI_) - var sth$0 = _cI_[1], enforce_inline$0 = sth$0; - else - var enforce_inline$0 = enforce_inline; - if(_cH_) - var sth$1 = _cH_[1], recent_subst = sth$1; - else - var recent_subst = recent_subst$0; - return go(d, env$0, enforce_inline$0, recent_subst); - } - function go_case_rule(param){ - var - dclause = param[2], - dp = param[1], - _cr_ = caml_call1(Pretty_Doc[8], Haz3lcore_Unicode[11]), - hidden_clause = caml_call2(Pretty_Doc[11], 0, _cr_); - if(settings[1]) - var - _cs_ = go$0(0, _a_, 0, dclause), - _ct_ = [0, caml_call1(Pretty_Doc[16], _cs_), 0], - _cu_ = [0, caml_call1(Pretty_Doc[9], 0), _ct_], - _cv_ = [0, caml_call1(Pretty_Doc[18], _cu_), 0], - _cw_ = [0, go$0(0, _b_, 0, dclause), 0], - _cx_ = [0, caml_call1(Pretty_Doc[14], 0), _cw_], - _cy_ = [0, caml_call1(Pretty_Doc[18], _cx_), _cv_], - clause_doc = caml_call1(Pretty_Doc[24], _cy_); - else - var - _cF_ = caml_call1(Pretty_Doc[14], 0), - clause_doc = caml_call2(Pretty_Doc[17], _cF_, hidden_clause); - var - _cz_ = [0, Haz3lweb_DHDoc_common[18][17], [0, clause_doc, 0]], - _cA_ = caml_call3(Haz3lweb_DHDoc_Pat[2], infomap, 0, settings[4]); - function _cB_(_cG_){return caml_call2(_cA_, _cG_, dp);} - var - _cC_ = caml_call1(Pretty_Doc[14], 0), - _cD_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _cC_]], - _cE_ = - [0, - caml_call1(caml_call2(Haz3lweb_DHDoc_common[17], _cD_, 0), _cB_), - _cz_]; - return caml_call1 - (Pretty_Doc[18], [0, Haz3lweb_DHDoc_common[18][16], _cE_]); - } - function go_formattable(enforce_inline){ - var _cn_ = [0, enforce_inline]; - return function(_co_){ - return function(_cp_, _cq_){return go$0(_co_, _cn_, _cp_, _cq_);};}; - } - function mk_left_associative_operands(d1, d2){ - var _cm_ = go$0(0, 0, 0, d2); - return [0, go$0(0, 0, 0, d1), _cm_]; - } - function mk_right_associative_operands(d1, d2){ - var _cl_ = go$0(0, 0, 0, d2); - return [0, go$0(0, 0, 0, d1), _cl_]; - } - var match$2 = caml_call1(Haz3lcore_DHExp[37], d); - if(typeof match$2 === "number") - var - _r_ = - [0, - caml_equal - ([0, caml_call1(Haz3lcore_DHExp[27], d)], selected_hole_instance)], - doc = caml_call2(Haz3lweb_DHDoc_common[19], _r_, env); - else - switch(match$2[0]){ - case 0: - var t = match$2[1], doc = caml_call1(Haz3lweb_DHDoc_common[20], t); - break; - case 1: - var - _y_ = - [0, - caml_equal - ([0, caml_call1(Haz3lcore_DHExp[27], d)], - selected_hole_instance)], - doc = caml_call2(Haz3lweb_DHDoc_common[19], _y_, env); - break; - case 2: - var - err = match$2[2], - d$0 = match$2[1], - d_doc = go$0(0, 0, 0, d$0), - _z_ = caml_call1(Haz3lcore_InvalidOperationErro[7], err), - _A_ = caml_call1(Pretty_Doc[8], _z_), - decoration = caml_call1(caml_call1(Pretty_Doc[11], [4, err]), _A_), - doc = caml_call1(Pretty_Doc[18], [0, d_doc, [0, decoration, 0]]); - break; - case 3: - var - ty3 = match$2[3], - ty1 = match$2[2], - d1 = match$2[1], - d_doc$0 = go$0(0, 0, 0, d1), - _B_ = [0, Haz3lweb_DHDoc_common[18][24], 0], - _C_ = [0, caml_call2(Haz3lweb_DHDoc_Typ[3], 1, ty3), 0], - _D_ = [0, Haz3lweb_DHDoc_common[18][23], _C_], - _E_ = [0, caml_call2(Haz3lweb_DHDoc_Typ[3], 1, ty1), _D_], - _F_ = [0, caml_call1(Pretty_Doc[20], _E_), _B_], - _G_ = - caml_call1 - (Pretty_Doc[18], [0, Haz3lweb_DHDoc_common[18][22], _F_]), - cast_decoration = caml_call1(caml_call1(Pretty_Doc[11], 7), _G_), - doc = - caml_call1(Pretty_Doc[18], [0, d_doc$0, [0, cast_decoration, 0]]); - break; - case 4: - var doc = caml_call1(Pretty_Doc[8], cst); break; - case 5: - var b = match$2[1], doc = caml_call1(Haz3lweb_DHDoc_common[25], b); - break; - case 6: - var n = match$2[1], doc = caml_call1(Haz3lweb_DHDoc_common[23], n); - break; - case 7: - var f = match$2[1], doc = caml_call1(Haz3lweb_DHDoc_common[24], f); - break; - case 8: - var s = match$2[1], doc = caml_call1(Haz3lweb_DHDoc_common[27], s); - break; - case 9: - var - d_list = match$2[1], - _H_ = function(d){return go$0(0, 0, 0, d);}, - ol = caml_call1(caml_call1(Stdlib_List[19], _H_), d_list), - doc = caml_call1(Haz3lweb_DHDoc_common[30], ol); - break; - case 10: - var - name = match$2[1], - doc = caml_call1(Haz3lweb_DHDoc_common[26], name); - break; - case 11: - var match$4 = match$2[3], dbody = match$2[2], dp = match$2[1]; - if(match$4){ - var s$0 = match$2[4], env$0 = match$4[1]; - if(settings[2]) - var - bindings = caml_call1(Haz3lcore_DHPat[36], dp), - _I_ = caml_call1(Stdlib_Option[15], s$0), - _J_ = caml_call1(Haz3lcore_DHPat[36], dp), - _K_ = caml_call2(Stdlib[37], _J_, _I_), - arg = [0, caml_call2(Haz3lcore_ClosureEnvironment[29], _K_, env)], - _L_ = - function(x){ - return 1 - caml_call2(Stdlib_List[36], x, bindings); - }, - arg$0 = [0, caml_call2(Stdlib_List[41], _L_, recent_subst$0)], - _M_ = caml_call1(Stdlib_Option[15], s$0), - _N_ = - [25, - caml_call2(Haz3lcore_ClosureEnvironment[29], _M_, env$0), - dbody], - _O_ = caml_call1(Haz3lcore_DHExp[28], _N_), - body_doc = - function(_ci_){ - return caml_call2(go_formattable(_ci_)(arg), arg$0, _O_); - }, - _P_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], 0, 0), body_doc), - 0], - _Q_ = [0, caml_call1(Pretty_Doc[14], 0), _P_], - _R_ = [0, Haz3lweb_DHDoc_common[18][10], _Q_], - _S_ = 0, - _T_ = caml_call3(Haz3lweb_DHDoc_Pat[2], infomap, 0, settings[4]), - _U_ = function(_ch_){return caml_call2(_T_, _ch_, dp);}, - _V_ = caml_call1(Pretty_Doc[14], 0), - _W_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _V_]], - _X_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _W_, enforce_inline), - _U_), - _S_], - _Y_ = - caml_call2 - (Stdlib[37], [0, Haz3lweb_DHDoc_common[18][8], _X_], _R_), - _Z_ = caml_call1(Pretty_Doc[18], _Y_); - else{ - if(s$0){ - var name$0 = s$0[1]; - a: - { - if(! settings[3] && caml_call2(Stdlib_String[11], cst$2, name$0)){ - var - _ad_ = - caml_call3 - (Stdlib_String[15], - name$0, - 0, - caml_ml_string_length(name$0) - 1 | 0), - _ae_ = caml_call2(Stdlib[28], _ad_, cst$3), - _aa_ = caml_call2(Stdlib[28], cst$4, _ae_); - break a; - } - var - _$_ = caml_call2(Stdlib[28], name$0, cst$0), - _aa_ = caml_call2(Stdlib[28], cst$1, _$_); - } - var _ab_ = _aa_; - } - else - var _ab_ = cst_anon_fn; - var - _ac_ = caml_call1(Pretty_Doc[8], _ab_), - _Z_ = caml_call2(Pretty_Doc[11], 0, _ac_); - } - var ___ = _Z_; - } - else{ - var s$1 = match$2[4]; - if(settings[2]) - var - bindings$0 = caml_call1(Haz3lcore_DHPat[36], dp), - arg$1 = - [0, - caml_call2(Haz3lcore_ClosureEnvironment[29], bindings$0, env)], - _af_ = - function(x){ - return 1 - caml_call2(Stdlib_List[36], x, bindings$0); - }, - _ag_ = [0, caml_call2(Stdlib_List[41], _af_, recent_subst$0)], - body_doc$0 = - function(_ck_){ - return caml_call2(go_formattable(_ck_)(arg$1), _ag_, dbody); - }, - _ah_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], 0, enforce_inline), - body_doc$0), - 0], - _ai_ = [0, caml_call1(Pretty_Doc[14], 0), _ah_], - _aj_ = [0, Haz3lweb_DHDoc_common[18][10], _ai_], - _ak_ = 0, - _al_ = caml_call3(Haz3lweb_DHDoc_Pat[2], infomap, 0, settings[4]), - _am_ = function(_cj_){return caml_call2(_al_, _cj_, dp);}, - _an_ = caml_call1(Pretty_Doc[14], 0), - _ao_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _an_]], - _ap_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _ao_, enforce_inline), - _am_), - _ak_], - _aq_ = - caml_call2 - (Stdlib[37], [0, Haz3lweb_DHDoc_common[18][8], _ap_], _aj_), - _ar_ = caml_call1(Pretty_Doc[18], _aq_); - else if(s$1) - var - name$1 = s$1[1], - _as_ = caml_call2(Stdlib[28], name$1, cst$5), - _at_ = caml_call2(Stdlib[28], cst$6, _as_), - _au_ = caml_call1(Pretty_Doc[8], _at_), - _ar_ = caml_call2(Pretty_Doc[11], 0, _au_); - else - var - _av_ = caml_call1(Pretty_Doc[8], cst_anon_fn$0), - _ar_ = caml_call2(Pretty_Doc[11], 0, _av_); - var ___ = _ar_; - } - var doc = ___; - break; - case 12: - var s$2 = match$2[3]; - if(s$2){ - var name$2 = s$2[1]; - a: - { - if(! settings[3] && caml_call2(Stdlib_String[11], cst$9, name$2)){ - var - name$3 = - caml_call3 - (Stdlib_String[15], - name$2, - 0, - caml_ml_string_length(name$2) - 1 | 0); - break a; - } - var name$3 = name$2; - } - var name$4 = name$3; - } - else - var name$4 = cst_anon_typfn; - var - _aw_ = caml_call2(Stdlib[28], name$4, cst$7), - _ax_ = caml_call2(Stdlib[28], cst$8, _aw_), - _ay_ = caml_call1(Pretty_Doc[8], _ax_), - doc = caml_call2(Pretty_Doc[11], 0, _ay_); - break; - case 13: - var ds = match$2[1]; - if(ds) - var - _az_ = function(d){return go$0(0, 0, 0, d);}, - _aA_ = caml_call1(caml_call1(Stdlib_List[19], _az_), ds), - _aB_ = caml_call1(Haz3lweb_DHDoc_common[31], _aA_); - else - var _aB_ = Haz3lweb_DHDoc_common[18][4]; - var doc = _aB_; - break; - case 14: - var x = match$2[1]; - if(settings[5]) - var _aC_ = caml_call1(Pretty_Doc[8], x); - else{ - var match$5 = caml_call2(Haz3lcore_ClosureEnvironment[16], env, x); - if(match$5){ - var d$1 = match$5[1]; - if(caml_call2(Stdlib_List[36], x, recent_subst$0)) - var - _aD_ = 0, - _aE_ = function(u){return runtime.caml_string_notequal(u, x);}, - _aF_ = [0, caml_call2(Stdlib_List[41], _aE_, recent_subst$0)], - _aG_ = - [0, - go$0([0, Haz3lcore_ClosureEnvironment[13]], 0, _aF_, d$1), - _aD_], - _aH_ = go$0([0, Haz3lcore_ClosureEnvironment[13]], 0, 0, d), - _aI_ = - [0, caml_call1(caml_call1(Pretty_Doc[11], 10), _aH_), _aG_], - _aJ_ = caml_call1(Pretty_Doc[18], _aI_); - else - var _aJ_ = go$0([0, Haz3lcore_ClosureEnvironment[13]], 0, 0, d$1); - var _aK_ = _aJ_; - } - else - var _aK_ = caml_call1(Pretty_Doc[8], x); - var _aC_ = _aK_; - } - var doc = _aC_; - break; - case 15: - var dbody$0 = match$2[3], ddef = match$2[2], dp$0 = match$2[1]; - if(enforce_inline) - var _aL_ = caml_call1(Pretty_Doc[12], 0); - else - var - bindings$1 = caml_call1(Haz3lcore_DHPat[36], dp$0), - def_doc = - function(_cg_){ - return caml_call2(go_formattable(_cg_)(0), 0, ddef); - }, - _aM_ = 0, - _aN_ = - function(x){ - return 1 - caml_call2(Stdlib_List[36], x, bindings$1); - }, - _aO_ = [0, caml_call2(Stdlib_List[41], _aN_, recent_subst$0)], - _aP_ = - [0, - go$0 - ([0, - caml_call2(Haz3lcore_ClosureEnvironment[29], bindings$1, env)], - _e_, - _aO_, - dbody$0), - _aM_], - _aQ_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst_in), 0], - _aR_ = caml_call1(Pretty_Doc[14], 0), - _aS_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _aR_]], - _aT_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _aS_, 0), def_doc), - _aQ_], - _aU_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst$10), _aT_], - _aV_ = caml_call3(Haz3lweb_DHDoc_Pat[2], infomap, 0, settings[4]), - _aW_ = function(_cf_){return caml_call2(_aV_, _cf_, dp$0);}, - _aX_ = caml_call1(Pretty_Doc[14], 0), - _aY_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _aX_]], - _aZ_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _aY_, enforce_inline), - _aW_), - _aU_], - _a0_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst_let), _aZ_], - _a1_ = [0, caml_call1(Pretty_Doc[18], _a0_), _aP_], - _aL_ = caml_call1(Pretty_Doc[22], _a1_); - var doc = _aL_; - break; - case 16: - var dp$1 = match$2[1], dbody$1 = match$2[2]; - a: - { - b: - { - if(settings[2] && settings[3]){ - var - _a2_ = caml_call1(Haz3lcore_DHPat[36], dp$1), - _a3_ = - [0, caml_call2(Haz3lcore_ClosureEnvironment[29], _a2_, env)], - doc_body = - function(_ce_){ - return caml_call2(go_formattable(_ce_)(_a3_), 0, dbody$1); - }, - _a4_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], 0, enforce_inline), - doc_body), - 0], - _a5_ = [0, caml_call1(Pretty_Doc[14], 0), _a4_], - _a6_ = [0, Haz3lweb_DHDoc_common[18][12], _a5_], - _a7_ = [0, caml_call1(Pretty_Doc[14], 0), _a6_], - _a8_ = - [0, - caml_call5 - (Haz3lweb_DHDoc_Pat[2], infomap, 0, settings[4], 1, dp$1), - 0], - _a9_ = [0, caml_call1(Pretty_Doc[14], 0), _a8_], - _a__ = - caml_call2 - (Stdlib[37], [0, Haz3lweb_DHDoc_common[18][11], _a9_], _a7_), - _a$_ = caml_call1(Pretty_Doc[18], _a__); - break b; - } - var _bb_ = dbody$1[3]; - c: - if(typeof _bb_ !== "number" && 11 === _bb_[0]){ - var match$6 = _bb_[4]; - if(! match$6) break c; - var x$0 = match$6[1]; - if(caml_call2(Stdlib_String[11], cst$11, x$0)) - var - _bd_ = - caml_call3 - (Stdlib_String[15], - x$0, - 0, - caml_ml_string_length(x$0) - 1 | 0), - _be_ = caml_call2(Stdlib[28], _bd_, cst$12), - _bf_ = caml_call2(Stdlib[28], cst$13, _be_), - _bg_ = caml_call1(Pretty_Doc[8], _bf_), - _bh_ = caml_call2(Pretty_Doc[11], 0, _bg_); - else - var - _bi_ = caml_call2(Stdlib[28], x$0, cst$14), - _bj_ = caml_call2(Stdlib[28], cst$15, _bi_), - _bk_ = caml_call1(Pretty_Doc[8], _bj_), - _bh_ = caml_call2(Pretty_Doc[11], 0, _bk_); - var _a$_ = _bh_; - break b; - } - var - _bc_ = caml_call1(Pretty_Doc[8], cst_anon_fn$1), - _ba_ = caml_call2(Pretty_Doc[11], 0, _bc_); - break a; - } - var _ba_ = _a$_; - } - var doc = _ba_; - break; - case 17: - var d$2 = match$2[3], doc = go$0(0, 0, 0, d$2); break; - case 18: - if(match$2[1]) - var - d2 = match$2[3], - d1$0 = match$2[2], - doc2 = go$0(0, 0, 0, d2), - doc1 = go$0(0, 0, 0, d1$0), - _bl_ = caml_call2(Haz3lweb_DHDoc_common[34], doc2, doc1); - else - var - d2$0 = match$2[3], - d1$1 = match$2[2], - doc2$0 = go$0(0, 0, 0, d2$0), - doc1$0 = go$0(0, 0, 0, d1$1), - _bl_ = caml_call2(Haz3lweb_DHDoc_common[33], doc1$0, doc2$0); - var doc = _bl_; - break; - case 19: - var - ty = match$2[2], - d1$2 = match$2[1], - doc1$1 = go$0(0, 0, 0, d1$2), - doc2$1 = caml_call2(Haz3lweb_DHDoc_Typ[3], 1, ty), - doc = caml_call2(Haz3lweb_DHDoc_common[32], doc1$1, doc2$1); - break; - case 20: - var - d2$1 = match$2[2], - d1$3 = match$2[1], - doc2$2 = go$0(0, 0, 0, caml_call1(Haz3lcore_DHExp[28], [13, d2$1])), - doc1$2 = go$0(0, 0, 0, d1$3), - doc = caml_call2(Haz3lweb_DHDoc_common[33], doc1$2, doc2$2); - break; - case 21: - var - d2$2 = match$2[3], - d1$4 = match$2[2], - c = match$2[1], - c_doc = - function(_cd_){return caml_call2(go_formattable(_cd_)(0), 0, c);}, - d1_doc = - function(_cc_){ - return caml_call2(go_formattable(_cc_)(0), 0, d1$4); - }, - d2_doc = - function(_cb_){ - return caml_call2(go_formattable(_cb_)(0), 0, d2$2); - }, - _bm_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst$16), 0], - _bn_ = caml_call1(Pretty_Doc[13], 0), - _bo_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _bn_]], - _bp_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _bo_, 0), d2_doc), - _bm_], - _bq_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst_else), _bp_], - _br_ = caml_call1(Pretty_Doc[14], 0), - _bs_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _br_]], - _bt_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _bs_, 0), d1_doc), - _bq_], - _bu_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst_then), _bt_], - _bv_ = caml_call1(Pretty_Doc[14], 0), - _bw_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _bv_]], - _bx_ = - [0, - caml_call1(caml_call2(Haz3lweb_DHDoc_common[17], _bw_, 0), c_doc), - _bu_], - _by_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst_if), _bx_], - _bz_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst$17), _by_], - doc = caml_call1(Pretty_Doc[18], _bz_); - break; - case 22: - var - d2$3 = match$2[2], - d1$5 = match$2[1], - doc2$3 = go$0(0, 0, 0, d2$3), - doc1$3 = go$0(0, 0, 0, d1$5), - doc = caml_call2(Haz3lweb_DHDoc_common[21], doc1$3, doc2$3); - break; - case 23: - var - d$3 = match$2[1], - _bA_ = go$0(0, 0, 0, d$3), - doc = caml_call1(Haz3lweb_DHDoc_common[22], _bA_); - break; - case 24: - var d$4 = match$2[2], flt = match$2[1]; - if(settings[6]) - if(0 === flt[0]) - var - match$7 = flt[1], - act = match$7[2], - pat = match$7[1], - keyword = caml_call1(Haz3lcore_FilterAction[19], act), - flt_doc = - function(_ca_){ - return caml_call2(go_formattable(_ca_)(0), 0, pat); - }, - _bB_ = [0, go$0(0, 0, 0, d$4), 0], - _bC_ = [0, caml_call1(Haz3lweb_DHDoc_common[18][1], cst_in$0), 0], - _bD_ = caml_call1(Pretty_Doc[14], 0), - _bE_ = [0, [0, caml_call1(Pretty_Doc[14], 0), _bD_]], - _bF_ = - [0, - caml_call1 - (caml_call2(Haz3lweb_DHDoc_common[17], _bE_, 0), flt_doc), - _bC_], - _bG_ = - [0, caml_call1(Haz3lweb_DHDoc_common[18][1], keyword), _bF_], - _bH_ = [0, caml_call1(Pretty_Doc[18], _bG_), _bB_], - _bI_ = caml_call1(Pretty_Doc[22], _bH_); - else - var - act$0 = flt[2], - keyword$0 = caml_call1(Haz3lcore_FilterAction[19], act$0), - _bJ_ = [0, go$0(0, 0, 0, d$4), 0], - _bK_ = - [0, caml_call1(Haz3lweb_DHDoc_common[18][1], keyword$0), _bJ_], - _bI_ = caml_call1(Pretty_Doc[22], _bK_); - else - var _bI_ = 0 === flt[0] ? go$0(0, 0, 0, d$4) : go$0(0, 0, 0, d$4); - var doc = _bI_; - break; - case 25: - var - d$5 = match$2[2], - env$1 = match$2[1], - doc = go$0([0, env$1], 0, 0, d$5); - break; - case 26: - var - d$6 = match$2[1], - _bL_ = [0, caml_call1(Pretty_Doc[8], cst$18), 0], - _bM_ = [0, go$0(0, 0, 0, d$6), _bL_], - _bN_ = [0, caml_call1(Pretty_Doc[8], cst$19), _bM_], - doc = caml_call1(Pretty_Doc[20], _bN_); - break; - case 27: - var - d2$4 = match$2[2], - d1$6 = match$2[1], - match$8 = mk_right_associative_operands(d1$6, d2$4), - doc2$4 = match$8[2], - doc1$4 = match$8[1], - doc = caml_call2(Haz3lweb_DHDoc_common[28], doc1$4, doc2$4); - break; - case 28: - var - d2$5 = match$2[2], - d1$7 = match$2[1], - match$9 = mk_right_associative_operands(d1$7, d2$5), - doc2$5 = match$9[2], - doc1$5 = match$9[1], - doc = caml_call2(Haz3lweb_DHDoc_common[29], doc1$5, doc2$5); - break; - case 29: - switch(match$2[1][0]){ - case 0: - var - d$7 = match$2[2], - _bO_ = [0, go$0(0, 0, 0, d$7), 0], - _bP_ = [0, caml_call1(Pretty_Doc[8], cst$20), _bO_], - _bQ_ = caml_call1(Pretty_Doc[18], _bP_); - break; - case 1: - var - d$8 = match$2[2], - _bR_ = [0, go$0(0, 0, 0, d$8), 0], - _bS_ = [0, caml_call1(Pretty_Doc[8], cst$21), _bR_], - _bQ_ = caml_call1(Pretty_Doc[18], _bS_); - break; - default: - var - d$9 = match$2[2], - _bT_ = [0, go$0(0, 0, 0, d$9), 0], - _bU_ = [0, caml_call1(Pretty_Doc[8], cst$22), _bT_], - _bQ_ = caml_call1(Pretty_Doc[18], _bU_); - } - var doc = _bQ_; - break; - case 30: - var match$10 = match$2[1]; - switch(match$10[0]){ - case 0: - var - d2$6 = match$2[3], - d1$8 = match$2[2], - op = match$10[1], - match$11 = mk_left_associative_operands(d1$8, d2$6), - doc2$6 = match$11[2], - doc1$6 = match$11[1], - _bV_ = [0, doc1$6, [0, mk_bin_int_op(op), [0, doc2$6, 0]]], - _bW_ = caml_call1(Pretty_Doc[20], _bV_); - break; - case 1: - var - d2$7 = match$2[3], - d1$9 = match$2[2], - op$0 = match$10[1], - match$12 = mk_left_associative_operands(d1$9, d2$7), - doc2$7 = match$12[2], - doc1$7 = match$12[1], - _bX_ = [0, doc1$7, [0, mk_bin_float_op(op$0), [0, doc2$7, 0]]], - _bW_ = caml_call1(Pretty_Doc[20], _bX_); - break; - case 2: - var - d2$8 = match$2[3], - d1$10 = match$2[2], - op$1 = match$10[1], - match$13 = mk_right_associative_operands(d1$10, d2$8), - doc2$8 = match$13[2], - doc1$8 = match$13[1], - _bY_ = [0, doc1$8, [0, mk_bin_bool_op(op$1), [0, doc2$8, 0]]], - _bW_ = caml_call1(Pretty_Doc[20], _bY_); - break; - default: - var - d2$9 = match$2[3], - d1$11 = match$2[2], - op$2 = match$10[1], - match$14 = mk_left_associative_operands(d1$11, d2$9), - doc2$9 = match$14[2], - doc1$9 = match$14[1], - _bZ_ = [0, doc1$9, [0, mk_bin_string_op(op$2), [0, doc2$9, 0]]], - _bW_ = caml_call1(Pretty_Doc[20], _bZ_); - } - var doc = _bW_; - break; - case 31: - var f$0 = match$2[1], doc = caml_call1(Pretty_Doc[8], f$0); break; - case 32: - var drs = match$2[2], dscrut = match$2[1]; - if(enforce_inline) - var _b0_ = caml_call1(Pretty_Doc[12], 0); - else - var - _g_ = go$0(0, _c_, 0, dscrut), - _h_ = [0, caml_call1(Pretty_Doc[16], _g_), 0], - _i_ = [0, caml_call1(Pretty_Doc[9], 0), _h_], - _j_ = [0, caml_call1(Pretty_Doc[18], _i_), 0], - _k_ = [0, go$0(0, _d_, 0, dscrut), 0], - _l_ = [0, caml_call1(Pretty_Doc[14], 0), _k_], - _m_ = [0, caml_call1(Pretty_Doc[18], _l_), _j_], - scrut_doc = caml_call1(Pretty_Doc[24], _m_), - _n_ = [0, [0, Haz3lweb_DHDoc_common[18][15], 0], 0], - _o_ = - [0, - caml_call1(caml_call1(Stdlib_List[19], go_case_rule), drs), - _n_], - _p_ = - [0, - [0, - caml_call2 - (Pretty_Doc[17], Haz3lweb_DHDoc_common[18][14], scrut_doc), - 0], - _o_], - _q_ = caml_call1(Stdlib_List[13], _p_), - _b0_ = caml_call1(Pretty_Doc[22], _q_); - var doc = _b0_; - break; - default: - var d$10 = match$2[1], t2 = match$2[3], t1 = match$2[2]; - if(settings[4]) - var - doc$3 = go$0(0, 0, 0, d$10), - _b1_ = [0, Haz3lweb_DHDoc_common[18][21], 0], - _b2_ = [0, caml_call2(Haz3lweb_DHDoc_Typ[3], 1, t2), _b1_], - _b3_ = [0, Haz3lweb_DHDoc_common[18][19], _b2_], - _b4_ = [0, caml_call2(Haz3lweb_DHDoc_Typ[3], 1, t1), _b3_], - _b5_ = - caml_call1 - (Pretty_Doc[18], [0, Haz3lweb_DHDoc_common[18][18], _b4_]), - _b6_ = caml_call2(Pretty_Doc[11], 8, _b5_), - _b7_ = caml_call2(Pretty_Doc[17], doc$3, _b6_); - else - var doc$4 = go$0(0, 0, 0, d$10), _b7_ = doc$4; - var doc = _b7_; - } - function _s_(param){ - var id = param[2]; - return caml_equal(id, caml_call1(Haz3lcore_DHExp[27], d)); - } - var steppable = caml_call1(caml_call1(Stdlib_List[39], _s_), next_steps); - function _t_(x){ - var _b$_ = caml_call1(Haz3lcore_DHExp[27], d); - return caml_equal(caml_call1(Haz3lcore_DHExp[27], x[3]), _b$_); - } - var - _u_ = caml_call1(caml_call1(Stdlib_Option[7], _t_), chosen_step), - stepped = caml_call2(Stdlib_Option[3], _u_, 0); - function _v_(param){ - var - id = param[2], - step = param[1], - _b9_ = 1 === step[6] ? 1 : 0, - _b__ = _b9_ ? caml_equal(id, caml_call1(Haz3lcore_DHExp[27], d)) : _b9_; - return _b__; - } - var - substitution = - caml_call1(caml_call1(Stdlib_List[39], _v_), hidden_steps); - if(substitution){ - var - step = substitution[1][1], - match$3 = caml_call1(Haz3lcore_DHExp[37], step[3]); - a: - { - if(typeof match$3 !== "number" && 14 === match$3[0]){ - var v = match$3[1]; - if(caml_call2(Stdlib_List[36], v, recent_subst$0)){ - var - _w_ = caml_call1(Pretty_Doc[8], v), - _x_ = - [0, caml_call1(caml_call1(Pretty_Doc[11], 10), _w_), [0, doc, 0]], - doc$0 = caml_call1(Pretty_Doc[18], _x_); - break a; - } - } - var doc$0 = doc; - } - var doc$1 = doc$0; - } - else - var doc$1 = doc; - if(stepped) - var doc$2 = caml_call2(Pretty_Doc[11], 9, doc$1); - else if(steppable) - var - i = steppable[1][1], - doc$2 = caml_call2(Pretty_Doc[11], [5, i], doc$1); - else - var doc$2 = doc$1; - return doc$2; - } - return go(d, env, enforce_inline, 0); - } - var - Haz3lweb_DHDoc_Exp = - [0, - mk_bin_bool_op, - mk_bin_int_op, - mk_bin_float_op, - mk_bin_string_op, - mk]; - runtime.caml_register_global(54, Haz3lweb_DHDoc_Exp, "Haz3lweb__DHDoc_Exp"); - return; - } - (globalThis)); - -//# 37848 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - var - global_data = runtime.caml_get_global_data(), - Haz3lweb_DHAnnot = global_data.Haz3lweb__DHAnnot, - Pretty_MeasuredLayout = global_data.Pretty__MeasuredLayout, - Haz3lweb_WeakMap = global_data.Haz3lweb__WeakMap; - function t_of_sexp(x_002){ - return caml_call2(Pretty_MeasuredLayout[5], Haz3lweb_DHAnnot[1], x_002); - } - function sexp_of_t(x_003){ - return caml_call2(Pretty_MeasuredLayout[3], Haz3lweb_DHAnnot[2], x_003); - } - var - include = - caml_call1 - (Pretty_MeasuredLayout[12], - [0, Haz3lweb_WeakMap[6], Haz3lweb_WeakMap[7], Haz3lweb_WeakMap[8]]), - mk = include[1], - Haz3lweb_DHMeasuredLayout = [0, t_of_sexp, sexp_of_t, mk]; - runtime.caml_register_global - (3, Haz3lweb_DHMeasuredLayout, "Haz3lweb__DHMeasuredLayout"); - return; - } - (globalThis)); - -//# 37888 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_OperationError$2 = "OperationError"; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - function caml_call4(f, a0, a1, a2, a3){ - return (f.l >= 0 ? f.l : f.l = f.length) == 4 - ? f(a0, a1, a2, a3) - : runtime.caml_call_gen(f, [a0, a1, a2, a3]); - } - function caml_call5(f, a0, a1, a2, a3, a4){ - return (f.l >= 0 ? f.l : f.l = f.length) == 5 - ? f(a0, a1, a2, a3, a4) - : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4]); - } - function caml_call7(f, a0, a1, a2, a3, a4, a5, a6){ - return (f.l >= 0 ? f.l : f.l = f.length) == 7 - ? f(a0, a1, a2, a3, a4, a5, a6) - : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4, a5, a6]); - } - function caml_call10(f, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9){ - return (f.l >= 0 ? f.l : f.l = f.length) == 10 - ? f(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) - : runtime.caml_call_gen - (f, [a0, a1, a2, a3, a4, a5, a6, a7, a8, a9]); - } - var - global_data = runtime.caml_get_global_data(), - Haz3lcore_ExpToSegment = global_data.Haz3lcore__ExpToSegment, - Haz3lcore_PrettySegment = global_data.Haz3lcore__PrettySegment, - Haz3lcore_Zipper = global_data.Haz3lcore__Zipper, - Haz3lcore_Editor = global_data.Haz3lcore__Editor, - Haz3lcore_Sort = global_data.Haz3lcore__Sort, - Haz3lweb_Code = global_data.Haz3lweb__Code, - Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, - Virtual_dom_Node = global_data.Virtual_dom__Node, - Stdlib = global_data.Stdlib, - Haz3lcore_ClosureEnvironment = global_data.Haz3lcore__ClosureEnvironment, - Haz3lweb_DHDoc_Exp = global_data.Haz3lweb__DHDoc_Exp, - Pretty_LayoutOfDoc = global_data.Pretty__LayoutOfDoc, - Util_OptUtil = global_data.Util__OptUtil, - Virtual_dom_Effect = global_data.Virtual_dom__Effect, - Haz3lweb_Decoration_common = global_data.Haz3lweb__Decoration_common, - Pretty_MeasuredLayout = global_data.Pretty__MeasuredLayout, - Haz3lweb_DHMeasuredLayout = global_data.Haz3lweb__DHMeasuredLayout, - _d_ = [0, 1], - _e_ = [0, "code-container", 0], - cst_unimplemented_view_of_dhex = - "unimplemented: view_of_dhexp on layout failure", - _b_ = [0, "Align", 0], - cst_Collapsed = "Collapsed", - cst_HoleLabel = "HoleLabel", - cst_code_delim = "code-delim", - cst_FailedCastDelim = "FailedCastDelim", - cst_FailedCastDecoration = "FailedCastDecoration", - cst_CastDecoration = "CastDecoration", - cst_stepped = "stepped", - cst_substituted = "substituted", - _a_ = [0, "selected", 0], - cst_EmptyHole = "EmptyHole", - cst_InVarHole = "InVarHole", - cst_OperationError$0 = cst_OperationError$2, - cst_OperationError$1 = cst_OperationError$2, - cst_OperationError = cst_OperationError$2, - cst_steppable = "steppable", - cst_err_hole = "err-hole", - cst_code = "code", - _c_ = [0, "DHCode", 0]; - function with_cls(cls){ - var - func = Virtual_dom_Node[32], - _ad_ = [0, caml_call1(Virtual_dom_Vdom[1][16], [0, cls, 0])]; - return function(_ae_){return caml_call2(func, _ae_, _ad_);}; - } - function view_of_layout(inject, font_metrics, result_key, l){ - var - corner_radii = caml_call1(Haz3lweb_Decoration_common[2], font_metrics), - _v_ = caml_call1(Haz3lweb_DHMeasuredLayout[3], l), - _w_ = 0, - _x_ = 0; - function _y_(go, indent, start, annot, m){ - var match = caml_call1(go, m), ds = match[2], txt = match[1]; - a: - { - if(typeof annot === "number") - switch(annot){ - case 0: - return [0, [0, caml_call1(with_cls(cst_Collapsed)(0), txt), 0], ds]; - case 2: - return [0, [0, caml_call1(with_cls(cst_HoleLabel)(0), txt), 0], ds]; - case 3: - return [0, [0, caml_call1(with_cls(cst_code_delim)(0), txt), 0], ds]; - case 6: - return [0, - [0, caml_call1(with_cls(cst_FailedCastDelim)(0), txt), 0], - ds]; - case 7: - return [0, - [0, - caml_call1(with_cls(cst_FailedCastDecoration)(0), txt), - 0], - ds]; - case 8: - return [0, - [0, caml_call1(with_cls(cst_CastDecoration)(0), txt), 0], - ds]; - case 9: - var - _N_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_stepped), 0], - _O_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _N_)]; - return [0, - [0, caml_call3(Virtual_dom_Node[32], 0, _O_, txt), 0], - ds]; - case 10: - var - _P_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_substituted), 0], - _Q_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _P_)]; - return [0, - [0, caml_call3(Virtual_dom_Node[32], 0, _Q_, txt), 0], - ds]; - case 1: - break a; - } - else - switch(annot[0]){ - case 1: - var - selected = annot[1], - _R_ = 0, - _S_ = 0, - _T_ = - function(param){ - return [0, - Virtual_dom_Effect[2], - [0, Virtual_dom_Effect[17], 0]]; - }, - _U_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _T_), _S_], - _V_ = selected ? _a_ : 0, - _W_ = - [0, - caml_call1(Virtual_dom_Vdom[1][16], [0, cst_EmptyHole, _V_]), - _U_], - _X_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _W_)]; - return [0, - [0, caml_call3(Virtual_dom_Node[32], 0, _X_, txt), _R_], - ds]; - case 2: - return [0, [0, caml_call1(with_cls(cst_InVarHole)(0), txt), 0], ds]; - case 4: - var _Y_ = annot[1]; - return 3 === _Y_ - ? [0, - [0, caml_call1(with_cls(cst_OperationError)(0), txt), 0], - ds] - : 4 - <= _Y_ - ? [0, - [0, caml_call1(with_cls(cst_OperationError$0)(0), txt), 0], - ds] - : [0, - [0, caml_call1(with_cls(cst_OperationError$1)(0), txt), 0], - ds]; - case 5: - var - obj = annot[1], - _Z_ = 0, - ___ = 0, - _$_ = - function(param){ - return caml_call1(inject, [16, result_key, [0, obj]]); - }, - _aa_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _$_), ___], - _ab_ = - [0, caml_call1(Virtual_dom_Vdom[1][15], cst_steppable), _aa_], - _ac_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _ab_)]; - return [0, - [0, caml_call3(Virtual_dom_Node[32], 0, _ac_, txt), _Z_], - ds]; - case 0: - break a; - } - var - offset = start[2] - indent | 0, - _K_ = - [0, - caml_call3 - (Haz3lweb_Decoration_common[4][1], 0, corner_radii, [0, offset, m]), - 0], - _L_ = caml_call2(Pretty_MeasuredLayout[8], [0, offset], m), - _M_ = caml_call1(Pretty_MeasuredLayout[7], m), - decoration = - caml_call7 - (Haz3lweb_Decoration_common[1], - 0, - font_metrics, - [0, start[1], indent], - _M_, - _L_, - cst_err_hole, - _K_); - return [0, txt, [0, decoration, ds]]; - } - return [0, txt, ds]; - } - function _z_(param, _I_, _H_){ - var - ds2 = _H_[2], - txt2 = _H_[1], - ds1 = _I_[2], - txt1 = _I_[1], - _J_ = caml_call2(Stdlib[37], ds1, ds2); - return [0, caml_call2(Stdlib[37], txt1, txt2), _J_]; - } - function _A_(param, _F_){ - var - ds = _F_[2], - txt = _F_[1], - _G_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _b_)]; - return [0, [0, caml_call3(Virtual_dom_Node[11], 0, _G_, txt), 0], ds]; - } - function _B_(param, s){ - return [0, [0, caml_call1(Virtual_dom_Node[5], s), 0], 0]; - } - function _C_(param){ - return [0, [0, caml_call3(Virtual_dom_Node[42], 0, 0, 0), 0], 0]; - } - var - match = - caml_call3 - (caml_call5(Pretty_MeasuredLayout[10], _C_, _B_, _A_, _z_, _y_), - _x_, - _w_, - _v_), - decorations = match[2], - text = match[1], - _D_ = [0, caml_call1(with_cls(cst_code)(0), text), decorations], - _E_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _c_)]; - return caml_call3(Virtual_dom_Node[11], 0, _E_, _D_); - } - function view(opt, inject, settings){ - return function - (selected_hole_instance, - font_metrics, - width, - opt, - _r_, - _q_, - _p_, - _o_, - result_key){ - if(opt) var sth = opt[1], pos = sth; else var pos = 0; - if(_r_) - var sth$0 = _r_[1], previous_step = sth$0; - else - var previous_step = 0; - if(_q_) - var sth$1 = _q_[1], hidden_steps = sth$1; - else - var hidden_steps = 0; - if(_p_) - var sth$2 = _p_[1], chosen_step = sth$2; - else - var chosen_step = 0; - if(_o_) var sth$3 = _o_[1], next_steps = sth$3; else var next_steps = 0; - return function(infomap, d){ - var - _s_ = - caml_call10 - (Haz3lweb_DHDoc_Exp[5], - settings, - 0, - selected_hole_instance, - previous_step, - hidden_steps, - chosen_step, - next_steps, - Haz3lcore_ClosureEnvironment[13], - infomap, - d), - _t_ = caml_call3(Pretty_LayoutOfDoc[4], _s_, width, pos); - function _u_(param){ - return caml_call1(Stdlib[2], cst_unimplemented_view_of_dhex); - } - return view_of_layout - (inject, - font_metrics, - result_key, - caml_call1(caml_call1(Util_OptUtil[1], _u_), _t_));};}; - } - function view$0(opt, param, settings, _f_, font_metrics){ - return function(param, opt, _j_, _i_, _h_, _g_, result_key){ - return function(param, d){ - var - parenthesized = caml_call1(Haz3lcore_ExpToSegment[20], d), - options = caml_call2(Haz3lcore_ExpToSegment[6], 0, parenthesized), - option = caml_call1(Haz3lcore_PrettySegment[10], options), - _k_ = caml_call1(Haz3lcore_Zipper[30], option), - editor = caml_call2(Haz3lcore_Editor[10], _d_, _k_), - code_text_view = - caml_call4 - (Haz3lweb_Code[9], - Haz3lcore_Sort[7], - font_metrics, - settings, - editor), - _l_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _e_), 0], - _m_ = [0, caml_call1(Virtual_dom_Vdom[1][22], result_key), _l_], - _n_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _m_)], - code_view = - caml_call3(Virtual_dom_Node[11], 0, _n_, [0, code_text_view, 0]); - return code_view;};}; - } - var Haz3lweb_DHCode = [0, with_cls, view_of_layout, view, view$0]; - runtime.caml_register_global(39, Haz3lweb_DHCode, "Haz3lweb__DHCode"); - return; - } - (globalThis)); - -//# 38224 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - cst_test_instances$1 = "test-instances"; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - function caml_call3(f, a0, a1, a2){ - return (f.l >= 0 ? f.l : f.l = f.length) == 3 - ? f(a0, a1, a2) - : runtime.caml_call_gen(f, [a0, a1, a2]); - } - function caml_call14 - (f, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13){ - return (f.l >= 0 ? f.l : f.l = f.length) == 14 - ? f(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) - : runtime.caml_call_gen - (f, - [a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13]); - } - var - global_data = runtime.caml_get_global_data(), - cst$0 = ":", - cst = "", - Haz3lcore_TestMap = global_data.Haz3lcore__TestMap, - Stdlib_List = global_data.Stdlib__List, - Virtual_dom_Vdom = global_data.Virtual_dom__Vdom, - Virtual_dom_Node = global_data.Virtual_dom__Node, - Util_Web = global_data.Util__Web, - Haz3lcore_TestResults = global_data.Haz3lcore__TestResults, - Stdlib_Printf = global_data.Stdlib__Printf, - Haz3lcore_TestStatus = global_data.Haz3lcore__TestStatus, - Stdlib = global_data.Stdlib, - Virtual_dom_Effect = global_data.Virtual_dom__Effect, - Haz3lweb_DHCode = global_data.Haz3lweb__DHCode, - cst_test_instances$0 = cst_test_instances$1, - cst_test_inspector = "test-inspector", - _e_ = [0, "title-bar", [0, "panel-title-bar", 0]], - cst_No_test_results_available = "No test results available.", - _d_ = [0, "test-summary", 0], - cst_test_text = "test-text", - _c_ = [0, [8, [0, 0, 0], 0, [0, 0], [12, 37, 0]], "%.0f%%"], - cst_all_pass = "all-pass", - cst_some_fail = "some-fail", - cst_test_percent = "test-percent", - cst_test_bar = "test-bar", - cst_segment = "segment", - cst_No_test_report_available = "No test report available.", - _b_ = [0, "panel-body", [0, "test-reports", 0]], - _a_ = [0, "test-description", 0], - cst_test_instances = cst_test_instances$1, - cst_Test = "Test", - cst_test_id = "test-id", - cst_test_report = "test-report", - cst_test_instance = "test-instance"; - function test_instance_view(settings, inject, font_metrics, infomap, param){ - var - status = param[2], - d = param[1], - _aq_ = - [0, - caml_call14 - (Haz3lweb_DHCode[4], - 0, - inject, - settings, - 0, - font_metrics, - 40, - 0, - 0, - 0, - 0, - 0, - cst, - infomap, - d), - 0], - _ar_ = - [0, - cst_test_instance, - [0, caml_call1(Haz3lcore_TestStatus[7], status), 0]], - _as_ = [0, caml_call1(Util_Web[1], _ar_), 0], - _at_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _as_)]; - return caml_call3(Virtual_dom_Node[11], 0, _at_, _aq_); - } - function jump_to_test(inject, pos, id, param){ - var - effect1 = caml_call1(inject, [6, [2, pos, 0]]), - effect2 = caml_call1(inject, [11, [2, [0, id]]]); - function _ap_(result1){return effect2;} - return caml_call2(Virtual_dom_Effect[5], effect1, _ap_); - } - function test_report_view(settings, inject, font_metrics, opt, infomap, i){ - if(opt) var sth = opt[1], description = sth; else var description = 0; - return function(param){ - var - instance_reports = param[2], - id = param[1], - _U_ = caml_call1(Haz3lcore_TestMap[7], instance_reports), - status = caml_call1(Haz3lcore_TestStatus[7], _U_); - if(description) - var - d = description[1], - _V_ = [0, caml_call1(Virtual_dom_Node[5], d), 0], - _W_ = [0, caml_call1(Util_Web[1], _a_)], - _X_ = [0, caml_call3(Virtual_dom_Node[11], 0, _W_, _V_), 0]; - else - var _X_ = 0; - var _Y_ = 0; - function _Z_(_ao_){ - return test_instance_view(settings, inject, font_metrics, infomap, _ao_); - } - var - ___ = caml_call2(Stdlib_List[19], _Z_, instance_reports), - _$_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_instances)], - _aa_ = [0, caml_call3(Virtual_dom_Node[11], 0, _$_, ___), _Y_], - _ab_ = caml_call1(Stdlib[33], i + 1 | 0), - _ac_ = [0, caml_call1(Virtual_dom_Node[5], _ab_), 0], - _ad_ = - [0, cst_test_id, [0, caml_call2(Stdlib[28], cst_Test, status), 0]], - _ae_ = [0, caml_call1(Util_Web[1], _ad_)], - _af_ = [0, caml_call3(Virtual_dom_Node[11], 0, _ae_, _ac_), _aa_], - _ag_ = caml_call2(Stdlib[37], _af_, _X_), - _ah_ = 0, - _ai_ = 3; - function _aj_(_an_){return jump_to_test(inject, _ai_, id, _an_);} - var - _ak_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _aj_), _ah_], - _al_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_report), _ak_], - _am_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _al_)]; - return caml_call3(Virtual_dom_Node[11], 0, _am_, _ag_);}; - } - function test_reports_view - (settings, inject, font_metrics, infomap, test_results){ - if(test_results) - var - test_results$0 = test_results[1], - _Q_ = test_results$0[1], - _R_ = - function(i, r){ - return test_report_view - (settings, - inject, - font_metrics, - [0, caml_call2(Stdlib_List[8], test_results$0[3], i)], - infomap, - i) - (r); - }, - _S_ = caml_call2(Stdlib_List[20], _R_, _Q_); - else - var - _S_ = - [0, caml_call1(Virtual_dom_Node[5], cst_No_test_report_available), 0]; - var _T_ = [0, caml_call1(Util_Web[1], _b_)]; - return caml_call3(Virtual_dom_Node[11], 0, _T_, _S_); - } - function test_bar_segment(inject, pos, param){ - var - reports = param[2], - id = param[1], - _I_ = caml_call1(Haz3lcore_TestMap[7], reports), - status = caml_call1(Haz3lcore_TestStatus[7], _I_), - _J_ = 0, - _K_ = 0; - function _L_(_P_){return jump_to_test(inject, pos, id, _P_);} - var - _M_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _L_), _K_], - _N_ = [0, caml_call1(Util_Web[1], [0, cst_segment, [0, status, 0]]), _M_], - _O_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _N_)]; - return caml_call3(Virtual_dom_Node[11], 0, _O_, _J_); - } - function test_bar(inject, test_results, pos){ - var _D_ = test_results[1]; - function _E_(_H_){return test_bar_segment(inject, pos, _H_);} - var - _F_ = caml_call2(Stdlib_List[19], _E_, _D_), - _G_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_bar)]; - return caml_call3(Virtual_dom_Node[11], 0, _G_, _F_); - } - function percent_view(n, p){ - var - percentage = 0 === n ? 100. : 100. * p / n, - _y_ = caml_call2(Stdlib_Printf[4], _c_, percentage), - _z_ = [0, caml_call1(Virtual_dom_Node[5], _y_), 0], - _A_ = 0, - _B_ = n === p ? cst_all_pass : cst_some_fail, - _C_ = [0, caml_call1(Util_Web[1], [0, cst_test_percent, [0, _B_, _A_]])]; - return caml_call3(Virtual_dom_Node[11], 0, _C_, _z_); - } - function test_percentage(test_results){ - return percent_view(test_results[4], test_results[5]); - } - function test_text(test_results){ - var - _s_ = caml_call1(Haz3lcore_TestResults[9], test_results), - _t_ = [0, caml_call1(Virtual_dom_Node[5], _s_), 0], - _u_ = [0, caml_call1(Virtual_dom_Node[5], cst$0), 0], - _v_ = [0, caml_call3(Virtual_dom_Node[11], 0, 0, _u_), _t_], - _w_ = [0, test_percentage(test_results), _v_], - _x_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_text)]; - return caml_call3(Virtual_dom_Node[11], 0, _x_, _w_); - } - function test_summary(inject, test_results){ - if(test_results) - var - test_results$0 = test_results[1], - _p_ = [0, test_bar(inject, test_results$0, 3), 0], - _q_ = [0, test_text(test_results$0), _p_]; - else - var - _q_ = - [0, caml_call1(Virtual_dom_Node[5], cst_No_test_results_available), 0]; - var _r_ = [0, caml_call1(Util_Web[1], _d_)]; - return caml_call3(Virtual_dom_Node[11], 0, _r_, _q_); - } - function view_of_main_title_bar(title_text){ - var - _m_ = [0, caml_call1(Virtual_dom_Node[5], title_text), 0], - _n_ = [0, caml_call1(Util_Web[1], _e_), 0], - _o_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _n_)]; - return caml_call3(Virtual_dom_Node[11], 0, _o_, _m_); - } - function inspector_view - (settings, inject, font_metrics, test_map, infomap, id){ - var match = caml_call2(Haz3lcore_TestMap[21], id, test_map); - if(match){ - var instances = match[1]; - if(2 !== caml_call1(Haz3lcore_TestMap[7], instances)){ - var - _f_ = 0, - _g_ = - function(_l_){ - return test_instance_view - (settings, inject, font_metrics, infomap, _l_); - }, - _h_ = caml_call2(Stdlib_List[19], _g_, instances), - _i_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_instances$0)], - _j_ = [0, caml_call3(Virtual_dom_Node[11], 0, _i_, _h_), _f_], - _k_ = [0, caml_call1(Virtual_dom_Vdom[1][15], cst_test_inspector)]; - return [0, caml_call3(Virtual_dom_Node[11], 0, _k_, _j_)]; - } - } - return 0; - } - var - Haz3lweb_TestView = - [0, - test_instance_view, - jump_to_test, - test_report_view, - test_reports_view, - test_bar_segment, - test_bar, - percent_view, - test_percentage, - test_text, - test_summary, - view_of_main_title_bar, - inspector_view]; - runtime.caml_register_global(35, Haz3lweb_TestView, "Haz3lweb__TestView"); - return; - } - (globalThis)); - -//# 38501 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - global_data = runtime.caml_get_global_data(), - explanation = - "If the [*body*](%s) of the test evalutes to `true`, the test passes. Otherwise, the test fails.", - Haz3lcore_Piece = global_data.Haz3lcore__Piece, - Haz3lweb_Example = global_data.Haz3lweb__Example, - test_true_ex = - [0, - 14, - caml_call1(Haz3lweb_Example[87], "test true end"), - "This is reported as a passing test because the body of the test is true."], - test_false_ex = - [0, - 15, - caml_call1(Haz3lweb_Example[87], "test 3 < 1 end"), - "This is reported as a failing test because the body of the test is 3 < 1 which evaluates to false."], - exp_body = caml_call1(Haz3lweb_Example[19], "e"); - function test_exp_coloring_ids(body_id){ - return [0, [0, caml_call1(Haz3lcore_Piece[30], exp_body), body_id], 0]; - } - var - _a_ = [0, exp_body, [0, caml_call1(Haz3lweb_Example[86], 0), 0]], - _b_ = [0, [0, caml_call1(Haz3lweb_Example[86], 0), _a_], 0], - test_exp = - [0, - 23, - [0, caml_call1(Haz3lweb_Example[77], _b_), 0], - 0, - explanation, - [0, test_true_ex, [0, test_false_ex, 0]]], - tests = [0, 23, [0, test_exp, 0]], - Haz3lweb_TestExp = - [0, - test_true_ex, - test_false_ex, - exp_body, - test_exp_coloring_ids, - test_exp, - tests]; - runtime.caml_register_global(8, Haz3lweb_TestExp, "Haz3lweb__TestExp"); - return; - } - (globalThis)); - -//# 38556 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - global_data = runtime.caml_get_global_data(), - explanation$3 = "`%s` is a type variable.", - explanation = "The `Int` type classifies 32-bit signed integer values.", - explanation$0 = - "The `Float` type classifies 64-bit floating-point values according to the IEEE 754 standard.", - explanation$1 = "The `Bool` type classifies boolean values.", - explanation$2 = "The `String` type classifies string values.", - Haz3lweb_Example = global_data.Haz3lweb__Example, - int_typ = - [0, - 47, - [0, caml_call1(Haz3lweb_Example[21], "Int"), 0], - 0, - explanation, - 0], - float_typ = - [0, - 48, - [0, caml_call1(Haz3lweb_Example[21], "Float"), 0], - 0, - explanation$0, - 0], - bool_typ = - [0, - 49, - [0, caml_call1(Haz3lweb_Example[21], "Bool"), 0], - 0, - explanation$1, - 0], - str_typ = - [0, - 50, - [0, caml_call1(Haz3lweb_Example[21], "String"), 0], - 0, - explanation$2, - 0]; - function var_typ(name){ - var _a_ = caml_call1(Haz3lweb_Example[88], name); - return [0, - 51, - [0, caml_call1(Haz3lweb_Example[21], _a_), 0], - 0, - explanation$3, - 0]; - } - var - int$0 = [0, 48, [0, int_typ, 0]], - float$0 = [0, 49, [0, float_typ, 0]], - bool = [0, 50, [0, bool_typ, 0]], - str = [0, 51, [0, str_typ, 0]]; - function var$0(name){return [0, 52, [0, var_typ(name), 0]];} - var - Haz3lweb_TerminalTyp = - [0, - int_typ, - float_typ, - bool_typ, - str_typ, - var_typ, - int$0, - float$0, - bool, - str, - var$0]; - runtime.caml_register_global - (10, Haz3lweb_TerminalTyp, "Haz3lweb__TerminalTyp"); - return; - } - (globalThis)); - -//# 38638 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - global_data = runtime.caml_get_global_data(), - explanation$6 = - "Only expressions that match the *`%s` constructor* match this constructor pattern.", - explanation$5 = - "This *pattern variable* matches any expression, binding its value to variable `%s`.", - explanation$3 = - "Only expressions with value `%s` match the *`%s` pattern*.", - explanation$2 = - "Only expressions with value `%b` match the *`%b` pattern*.", - explanation$1 = - "Only expressions with value `%f` match the *`%f` pattern*.", - explanation$0 = - "Only expressions with value `%i` match the *`%i` pattern*.", - explanation = "The *wildcard pattern* matches any expression.", - cst = "_", - explanation$4 = - "Only expressions with the trivial value `()` match the *trivial pattern `()`*.", - cst$0 = "()", - Haz3lweb_Example = global_data.Haz3lweb__Example, - Haz3lcore_Form = global_data.Haz3lcore__Form, - Stdlib = global_data.Stdlib, - wild_pat = - [0, - 28, - [0, caml_call1(Haz3lweb_Example[20], cst), 0], - 0, - explanation, - 0]; - function intlit_pat(i){ - var - _i_ = caml_call1(Stdlib[33], i), - _j_ = caml_call1(Haz3lweb_Example[88], _i_); - return [0, - 29, - [0, caml_call1(Haz3lweb_Example[20], _j_), 0], - 0, - explanation$0, - 0]; - } - function floatlit_pat(f){ - var - _g_ = caml_call1(Stdlib[35], f), - _h_ = caml_call1(Haz3lweb_Example[88], _g_); - return [0, - 30, - [0, caml_call1(Haz3lweb_Example[20], _h_), 0], - 0, - explanation$1, - 0]; - } - function boollit_pat(b){ - var - _e_ = caml_call1(Stdlib[30], b), - _f_ = caml_call1(Haz3lweb_Example[88], _e_); - return [0, - 31, - [0, caml_call1(Haz3lweb_Example[20], _f_), 0], - 0, - explanation$2, - 0]; - } - function strlit_pat(s){ - var - _c_ = caml_call1(Haz3lweb_Example[88], s), - _d_ = caml_call1(Haz3lcore_Form[50], _c_); - return [0, - 32, - [0, caml_call1(Haz3lweb_Example[20], _d_), 0], - 0, - explanation$3, - 0]; - } - var - triv_pat = - [0, - 33, - [0, caml_call1(Haz3lweb_Example[20], cst$0), 0], - 0, - explanation$4, - 0]; - function var_pat(name){ - var _b_ = caml_call1(Haz3lweb_Example[88], name); - return [0, - 34, - [0, caml_call1(Haz3lweb_Example[20], _b_), 0], - 0, - explanation$5, - 0]; - } - function ctr_pat(name){ - var _a_ = caml_call1(Haz3lweb_Example[88], name); - return [0, - 35, - [0, caml_call1(Haz3lweb_Example[20], _a_), 0], - 0, - explanation$6, - 0]; - } - var wild = [0, 29, [0, wild_pat, 0]]; - function intlit(i){return [0, 30, [0, intlit_pat(i), 0]];} - function floatlit(f){return [0, 31, [0, floatlit_pat(f), 0]];} - function boollit(b){return [0, 32, [0, boollit_pat(b), 0]];} - function strlit(s){return [0, 33, [0, strlit_pat(s), 0]];} - var triv = [0, 34, [0, triv_pat, 0]]; - function var$0(name){return [0, 35, [0, var_pat(name), 0]];} - function ctr(name){return [0, 36, [0, ctr_pat(name), 0]];} - var - Haz3lweb_TerminalPat = - [0, - wild_pat, - intlit_pat, - floatlit_pat, - boollit_pat, - strlit_pat, - triv_pat, - var_pat, - ctr_pat, - wild, - intlit, - floatlit, - boollit, - strlit, - triv, - var$0, - ctr]; - runtime.caml_register_global - (13, Haz3lweb_TerminalPat, "Haz3lweb__TerminalPat"); - return; - } - (globalThis)); - -//# 38781 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - global_data = runtime.caml_get_global_data(), - cst = "()", - cst$0 = "_", - Haz3lweb_Example = global_data.Haz3lweb__Example, - Haz3lcore_Form = global_data.Haz3lcore__Form, - Stdlib = global_data.Stdlib, - triv_exp = - [0, - 2, - [0, caml_call1(Haz3lweb_Example[19], cst), 0], - 0, - "The unique value of type `()`.", - 0], - triv_exps = [0, 2, [0, triv_exp, 0]], - deferral_exp_ex = - [0, - 1, - caml_call1 - (Haz3lweb_Example[87], - "let plus = fun (x, y) -> x + y in\nlet incr = plus(_, 1) in\nincr(5)"), - "In the partial application plus(_, 1), the deferral expression marks the first argument, which was not applied until in the full function application incr(5)."], - deferral_exp = - [0, - 3, - [0, caml_call1(Haz3lweb_Example[19], cst$0), 0], - 0, - "Marks an argument that has not yet been applied in a partial application.", - [0, deferral_exp_ex, 0]], - deferral_exps = [0, 3, [0, deferral_exp, 0]], - cst_s_is_a_constructor_for_a_s = - "`%s` is a constructor for a sum type variant.", - cst_Takes_the_value_of_the_exp = - "Takes the value of the expression that it was bound to.", - cst_A_string_literal_Any_chara = - 'A string literal. Any character besides double quotes (`"`) can be used.', - cst_A_floating_point_literal = "A floating-point literal.", - cst_A_signed_integer_literal = "A signed integer literal.", - cst_A_boolean_literal_either_t = - "A boolean literal, either `true` or `false`."; - function bool_exp(b){ - var _g_ = caml_call1(Stdlib[30], b); - return [0, - 4, - [0, caml_call1(Haz3lweb_Example[19], _g_), 0], - 0, - cst_A_boolean_literal_either_t, - 0]; - } - function bool_exps(b){return [0, 4, [0, bool_exp(b), 0]];} - function int_exp(n){ - var _f_ = caml_call1(Stdlib[33], n); - return [0, - 5, - [0, caml_call1(Haz3lweb_Example[19], _f_), 0], - 0, - cst_A_signed_integer_literal, - 0]; - } - function int_exps(i){return [0, 5, [0, int_exp(i), 0]];} - function float_exp(f){ - var _e_ = caml_call1(Stdlib[35], f); - return [0, - 6, - [0, caml_call1(Haz3lweb_Example[19], _e_), 0], - 0, - cst_A_floating_point_literal, - 0]; - } - function float_exps(f){return [0, 6, [0, float_exp(f), 0]];} - function string_exp(s){ - var - _c_ = caml_call1(Haz3lweb_Example[88], s), - _d_ = caml_call1(Haz3lcore_Form[50], _c_); - return [0, - 7, - [0, caml_call1(Haz3lweb_Example[19], _d_), 0], - 0, - cst_A_string_literal_Any_chara, - 0]; - } - function string_exps(s){return [0, 7, [0, string_exp(s), 0]];} - function var_exp(n){ - var _b_ = caml_call1(Haz3lweb_Example[88], n); - return [0, - 8, - [0, caml_call1(Haz3lweb_Example[19], _b_), 0], - 0, - cst_Takes_the_value_of_the_exp, - 0]; - } - function var_exps(x){return [0, 8, [0, var_exp(x), 0]];} - function ctr_exp(c){ - var _a_ = caml_call1(Haz3lweb_Example[88], c); - return [0, - 9, - [0, caml_call1(Haz3lweb_Example[19], _a_), 0], - 0, - cst_s_is_a_constructor_for_a_s, - 0]; - } - function ctr(c){return [0, 9, [0, ctr_exp(c), 0]];} - var - Haz3lweb_TerminalExp = - [0, - triv_exp, - triv_exps, - deferral_exp_ex, - deferral_exp, - deferral_exps, - bool_exp, - bool_exps, - int_exp, - int_exps, - float_exp, - float_exps, - string_exp, - string_exps, - var_exp, - var_exps, - ctr_exp, - ctr]; - runtime.caml_register_global - (15, Haz3lweb_TerminalExp, "Haz3lweb__TerminalExp"); - return; - } - (globalThis)); - -//# 38920 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" -(function - (globalThis){ - "use strict"; - var runtime = globalThis.jsoo_runtime; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) == 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - function caml_call2(f, a0, a1){ - return (f.l >= 0 ? f.l : f.l = f.length) == 2 - ? f(a0, a1) - : runtime.caml_call_gen(f, [a0, a1]); - } - var - global_data = runtime.caml_get_global_data(), - explanation$1 = - "This specifies one possible way of constructing the parent sum type.", - explanation$0 = - "This specifies one possible way of constructing the parent sum type, when applied to a parameter of the specified parameter type.", - explanation = - "Sum types describe a finite set of labeled choices. Values of this type consist of one of the specified constructors applied to a parameter of the corresponding parameter type, if specified. Constructor names must be unique within a sum.", - cst = "...", - Haz3lweb_Example = global_data.Haz3lweb__Example, - Stdlib = global_data.Stdlib, - Haz3lcore_Form = global_data.Haz3lcore__Form, - _a_ = caml_call1(Haz3lcore_Form[92], "typ_plus"), - divider = caml_call1(Haz3lweb_Example[4], _a_), - _b_ = [0, caml_call1(Haz3lweb_Example[86], 0), 0], - _c_ = [0, caml_call1(Haz3lweb_Example[21], cst), _b_], - _d_ = [0, divider, [0, caml_call1(Haz3lweb_Example[86], 0), _c_]], - _e_ = [0, caml_call1(Haz3lweb_Example[86], 0), _d_], - _f_ = [0, caml_call1(Haz3lweb_Example[21], "Constructor(ty)"), _e_], - labelled_sum_typ = - [0, - 61, - [0, caml_call1(Haz3lweb_Example[86], 0), _f_], - 0, - explanation, - 0], - cst_Type = "(Type)"; - function sum_typ_unary_constructor_def(c){ - var - _h_ = caml_call2(Stdlib[28], c, cst_Type), - _i_ = caml_call1(Haz3lweb_Example[88], _h_); - return [0, - 62, - [0, caml_call1(Haz3lweb_Example[21], _i_), 0], - 0, - explanation$0, - 0]; - } - function sum_typ_nullary_constructor_de(c){ - var _g_ = caml_call1(Haz3lweb_Example[88], c); - return [0, - 63, - [0, caml_call1(Haz3lweb_Example[21], _g_), 0], - 0, - explanation$1, - 0]; - } - var labelled_sum_typs = [0, 62, [0, labelled_sum_typ, 0]]; - function sum_typ_unary_constructor_defs(c){ - return [0, 63, [0, sum_typ_unary_constructor_def(c), 0]]; - } - function sum_typ_nullary_constructor_de$0(c){ - return [0, 64, [0, sum_typ_nullary_constructor_de(c), 0]]; - } - var - Haz3lweb_SumTyp = - [0, - labelled_sum_typ, - sum_typ_unary_constructor_def, - sum_typ_nullary_constructor_de, - labelled_sum_typs, - sum_typ_unary_constructor_defs, - sum_typ_nullary_constructor_de$0]; - runtime.caml_register_global(10, Haz3lweb_SumTyp, "Haz3lweb__SumTyp"); - return; - } - (globalThis)); - -//# 39004 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 35877 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593350,7 +587879,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 39275 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36148 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593436,7 +587965,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 39362 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36235 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593547,7 +588076,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 39474 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36347 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -593601,7 +588130,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 39529 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36402 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594120,7 +588649,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 40049 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 36922 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594594,7 +589123,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 40524 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37397 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594675,7 +589204,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 40606 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37479 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594851,7 +589380,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 40783 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37656 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -594918,7 +589447,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 40851 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 37724 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595486,7 +590015,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 41420 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38293 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595748,7 +590277,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 41683 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38556 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595864,7 +590393,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 41833 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38706 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595920,7 +590449,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 41947 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38820 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -595991,7 +590520,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } function test_report_footer_view(inject, test_results){ return report_footer_view - ([0, caml_call2(Haz3lweb_TestView[10], inject, test_results), 0]); + ([0, caml_call2(Haz3lweb_TestView[7], inject, test_results), 0]); } function panel(opt, content, footer){ if(opt) var sth = opt[1], classes = sth; else var classes = 0; @@ -596027,7 +590556,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 42055 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 38928 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -596718,7 +591247,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, }, _J_ = [0, - caml_call2(Haz3lweb_TestView[10], inject_global, test_results), + caml_call2(Haz3lweb_TestView[7], inject_global, test_results), 0]; return [0, [0, caml_call1(Haz3lweb_Cell[5], _J_), 0], test_overlay]; case 2: @@ -596800,7 +591329,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 42829 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39702 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -596941,7 +591470,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 42971 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39844 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597077,7 +591606,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43108 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 39981 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597127,7 +591656,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43159 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40032 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597200,7 +591729,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43233 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40106 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597328,7 +591857,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43362 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40235 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597367,7 +591896,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43402 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40275 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597459,7 +591988,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43495 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40368 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597553,7 +592082,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43590 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40463 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597590,7 +592119,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43628 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40501 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -597705,7 +592234,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 43744 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 40617 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -598426,7 +592955,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 44466 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 41339 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -598662,7 +593191,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 44703 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 41576 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -598864,7 +593393,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, function view(inject, report, max_points){ var _a5_ = 0, _a6_ = report[1]; function _a7_(test_results){ - return caml_call3(Haz3lweb_TestView[6], inject, test_results, 2); + return caml_call3(Haz3lweb_TestView[3], inject, test_results, 2); } var _a8_ = caml_call1(caml_call1(Stdlib_Option[7], _a7_), _a6_), @@ -598904,7 +593433,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, var status = param[1], _aW_ = - caml_call3(Haz3lweb_TestView[2], inject, [0, id], Haz3lcore_Id[16]), + caml_call3(Haz3lweb_TestView[1], inject, [0, id], Haz3lcore_Id[16]), _aX_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _aW_), 0], _aY_ = [0, cst_segment, [0, caml_call1(Haz3lcore_TestStatus[7], status), 0]], @@ -598961,7 +593490,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, _aH_ = [0, caml_call3(Virtual_dom_Node[11], 0, _aG_, _aD_), 0], _aI_ = caml_call2(Stdlib[37], _aH_, _aB_), _aJ_ = - caml_call3(Haz3lweb_TestView[2], inject, [0, id], Haz3lcore_Id[16]), + caml_call3(Haz3lweb_TestView[1], inject, [0, id], Haz3lcore_Id[16]), _aK_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _aJ_), 0], _aL_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _f_), _aK_], _aM_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _aL_)]; @@ -599081,7 +593610,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, _S_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _R_)], _T_ = [0, caml_call3(Virtual_dom_Node[11], 0, _S_, _P_), 0], _U_ = caml_call2(Stdlib[37], _T_, _N_), - _V_ = caml_call3(Haz3lweb_TestView[2], inject, 5, id), + _V_ = caml_call3(Haz3lweb_TestView[1], inject, 5, id), _W_ = [0, caml_call1(Virtual_dom_Vdom[1][47], _V_), 0], _X_ = [0, caml_call1(Virtual_dom_Vdom[1][16], _m_), _W_], _Y_ = [0, caml_call1(Virtual_dom_Vdom[1][8], _X_)]; @@ -599113,7 +593642,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, function view$2(inject, report, syntax_report, max_points){ var _q_ = 0, _r_ = report[2]; function _s_(test_results){ - return caml_call3(Haz3lweb_TestView[6], inject, test_results, 5); + return caml_call3(Haz3lweb_TestView[3], inject, test_results, 5); } var _t_ = caml_call1(caml_call1(Stdlib_Option[7], _s_), _r_), @@ -599191,7 +593720,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 45233 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 42106 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -599598,7 +594127,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 45641 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 42514 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -599847,7 +594376,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 45891 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 42764 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -599954,7 +594483,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 45999 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 42872 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -599995,7 +594524,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 46041 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 42914 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -600784,7 +595313,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 46831 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43704 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -600830,7 +595359,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 46878 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43751 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -600863,7 +595392,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 46912 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43785 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -600904,7 +595433,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 46954 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43827 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -600941,7 +595470,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 46992 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43865 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -600980,7 +595509,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 47032 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43905 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -601044,7 +595573,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 47097 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 43970 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -601911,7 +596440,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 47965 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 44838 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -602018,7 +596547,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 48073 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 44946 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -602136,7 +596665,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 48192 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 45065 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -602171,7 +596700,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 48228 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 45101 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -603237,7 +597766,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 49295 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 46168 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -606673,7 +601202,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 52732 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 49605 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -606706,7 +601235,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 52765 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 49638 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(globalThis){ "use strict"; var @@ -606718,7 +601247,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 52778 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 49651 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -607366,7 +601895,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 53427 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 50300 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -607645,7 +602174,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 53707 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 50580 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -607888,7 +602417,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 53951 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 50824 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -608230,7 +602759,7 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, } (globalThis)); -//# 54984 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 51857 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function (globalThis){ "use strict"; @@ -608667,4 +603196,4 @@ Ok=[0,[0,0,[2,wl],vV,0,1],[2,MT],B8,0,2],Ol=[2,xB],Om=[0,[0,[0,[0,0,[2,LC],Im,0, (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiR2VuZXJpY0hvb2siLCJpbml0IiwidXBkYXRlIiwiZGVzdHJveSIsImV4dHJhIiwiaG9va19zdGF0ZV9rZXkiLCJTeW1ib2wiLCJzdGF0ZSIsImZyb20iLCJ0byIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwianNvb19zeXNfZ2V0ZW52IiwicHJvY2VzcyIsImdsb2JhbFRoaXMiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJidWZmZXIiLCJjYW1sX2ludDY0X2Zvcm1hdCIsIndiYXNlIiwiY3Z0YmwiLCJwIiwiY2FtbF9leHBtMV9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJjMSIsImMyIiwidiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiZnNfbm9kZV9zdXBwb3J0ZWQiLCJtYWtlX3BhdGhfaXNfYWJzb2x1dGUiLCJwb3NpeCIsInBhdGgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwiY29tcCIsIm5jb21wIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJNbEJ5dGVzIiwiY29udGVudHMiLCJjb250ZW50IiwiY2FtbF9pc19tbF9ieXRlcyIsImNhbWxfaXNfbWxfc3RyaW5nIiwiY2FtbF9ieXRlc19vZl9hcnJheSIsIlVpbnQ4QXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfYmxpdF9ieXRlcyIsInMxIiwiaTEiLCJzMiIsImkyIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VGZCIsImZpbGUiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJzZWVuIiwibSIsImVudHJ5Iiwib2siLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJidWZfb2Zmc2V0IiwicmVhZCIsIk1sTm9kZURldmljZSIsImNvbnN0cyIsImlzQ2hhcmFjdGVyRGV2aWNlIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiY2FtbF9zeXNfcmVuYW1lIiwib19yb290Iiwibl9yb290IiwiY2FtbF9sb2cxMF9mbG9hdCIsImNhbWxfcnVudGltZV93YXJuaW5ncyIsImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MiLCJib29sIiwiY2FtbF9jbGFzc2lmeV9mbG9hdCIsImlzRmluaXRlIiwiaXNOYU4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9yZWZpbGwiLCJjaGFuIiwic3RyX2EiLCJucmVhZCIsImNhbWxfYXJyYXlfYm91bmRfZXJyb3IiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsImNoYW5pZCIsInByZXZfbWF4IiwiY2FtbF9nY19taW5vciIsInVuaXQiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImJhIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheSIsImNhbWxfaW50NjRfb2ZfYnl0ZXMiLCJjYW1sX2JhX3VpbnQ4X2dldDY0IiwiaTAiLCJvZnMiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfaW50NjRfbWFyc2hhbCIsIndyaXRlciIsInNpemVzIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2ludF9jb21wYXJlIiwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyIsImJhMSIsImJhMV9vZmYiLCJiYTIiLCJiYTJfb2ZmIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsInBvczEiLCJieXRlczIiLCJwb3MyIiwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NyZWF0ZV9maWxlIiwianNvb19jcmVhdGVfZmlsZSIsImNhbWxfZnNfaW5pdCIsInRtcCIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwibmFyZ3MiLCJleHRyYV9hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImJpZ3N0cmluZ19maW5kIiwiYnMiLCJjaHIiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QiLCJ2b3V0cHV0IiwidnN0ZG91dCIsInZzdGRlcnIiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIiLCJjYW1sX2NoZWNrX2JvdW5kIiwiYXJyYXkiLCJjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyIsImJpZ3N0cmluZyIsImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJiYXNlIiwiYmFja3RyayIsImNhbWxfc3lzX2ZpbGVfZXhpc3RzIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfYXJyYXlfc3ViIiwiY2FtbF9ieXRlc19lcXVhbCIsImNhbWxfZ3Jfc2l6ZV94IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHoiLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImpzX3BlcmZvcm1hbmNlIiwiX2UiLCJqc19wcm9mX21hcmsiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJCYXNlX2hhc2hfc3RyaW5nIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiY2FtbF9zeXNfZmRzIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjb3JlX21kNV9mZCIsImljIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiIsImV4cG9uZW50Iiwib25lIiwibXVsIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsImNhbWxfYXJyYXlfZ2V0IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwidGEiLCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX3JlYWxsb2MiLCJuZXdfZGF0YSIsIm5ld19iaWdzdHJpbmciLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9tYXliZV9wcmludF9zdGF0cyIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF91bml4X2hhc19zeW1saW5rIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJCYXNlX2FtX3Rlc3RpbmciLCJjYW1sX2J5dGVzX2xlc3N0aGFuIiwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsImNhbWxfc3lzX2dldGN3ZCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3VsdCIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfaW50NjRfb3IiLCJjYW1sX2x4bV9uZXh0Iiwic2hpZnRfbCIsInNoaWZ0X3IiLCJvciIsInhvciIsInJvdGwiLCJnZXQiLCJzZXQiLCJNIiwiZGFiYSIsInEwIiwicTEiLCJzdCIsIngwIiwiY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiIsImNhbWxfbGlzdF90b19qc19hcnJheSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImJpZ3N0cmluZ19tZW1jbXBfc3R1YiIsInZfczEiLCJ2X3MxX3BvcyIsInZfczIiLCJ2X3MyX3BvcyIsInZfbGVuIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsIlVJbnQ4QXJyYXlSZWFkZXIiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwicmVhZHZscSIsIm92ZXJmbG93IiwibjciLCJoZWFkZXJfbGVuIiwiZGF0YV9sZW4iLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZGVjb21wcmVzc19pbnB1dCIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwibWFnaWMiLCJjb21wcmVzc2VkIiwidW5jb21wcmVzc2VkX2RhdGFfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwiY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJiaWdzdHJpbmdfYWxsb2MiLCJfIiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJyZV9zZWFyY2hfYmFja3dhcmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9vdXRwdXRfdGEiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwibmV3X2RpbXMiLCJjb3JlX2djX2NvbXBhY3Rpb25zIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9zdHJpbmdfaGFzaCIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJCYXNlX2ludF9tYXRoX2ludDMyX2N0eiIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCIsImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCIsImNhbWxfY3JlYXRlX3N0cmluZyIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiIsImJpZ3N0cmluZ19tZW1zZXRfc3R1YiIsInZfcG9zIiwidl9jaGFyIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyIsIkJhc2VfaW50X21hdGhfaW50NjRfY2x6IiwiY2FtbF9hcnJheV9hcHBlbmQiLCJsMSIsImwyIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF90aW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9qc190b19zdHJpbmciLCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY29yZV9nY190b3BfaGVhcF93b3JkcyIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJsZW5ndGhfbmF0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQiLCJpbmZvIiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9tZW1wcm9mX2Rpc2NhcmQiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6IiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nIiwiYmFfb2ZmIiwic3RyX29mZiIsImNhbWxfYnVpbGRfc3ltYm9scyIsInRvYyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZ2Nfc3RhdCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImJpZ3N0cmluZ2FmX21lbWNociIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9tZXRob2RfY2FjaGUiLCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kIiwiY2FjaGVpZCIsIm1ldGhzIiwibGkiLCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX3JvdW5kX2Zsb2F0IiwianNfcHJvZl9tZWFzdXJlIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6IiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHoiLCJpc196ZXJvIiwibGFuZCIsInNtYWxsX2ludDY0IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF9kb21haW5fZGxzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MzIiLCJjYW1sX2ZyZXhwX2Zsb2F0IiwibmVnIiwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIiLCJjb3JlX3RpbWVfbnNfZm9ybWF0IiwidGltZSIsImZvcm1hdGpzIiwianN0cmluZyIsImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsIkJhc2VfaGFzaF9kb3VibGUiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwiY29yZV9nY19oZWFwX3dvcmRzIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjb3JlX2djX21pbm9yX3dvcmRzIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJtc190b19uYW5vIiwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvIiwibXMiLCJtc19pNjMiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsInNldF9kaWdpdF9uYXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY29yZV9nY19tYWpvcl93b3JkcyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJiaWdzdHJpbmdfYmxpdF9zdHViIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwibWF4X2ludCIsIm1pbl9pbnQiLCJzeW1ib2wiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsInIiLCJsZW4kMSIsIm9mcyQxIiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2xpbmUiLCJidWlsZF9yZXN1bHQiLCJidWYiLCJwb3MkMCIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9pbl9ub2VyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnQiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2Zsb2F0IiwicmVhZF9mbG9hdF9vcHQiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sJDEiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJkb19hdF9leGl0IiwiZXhpdCIsInJldGNvZGUiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwibWFwIiwidiQwIiwiZm9sZCIsImVxdWFsIiwiZTEiLCJlMiIsInYxIiwidjIiLCJ2MSQwIiwidjIkMCIsImNvbXBhcmUiLCJvY2FtbF92ZXJzaW9uIiwib2NhbWxfcmVsZWFzZSIsImV4ZWN1dGFibGVfbmFtZSIsIm9zX3R5cGUiLCJiYWNrZW5kX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJtYXhfYXJyYXlfbGVuZ3RoIiwibWF4X2Zsb2F0YXJyYXlfbGVuZ3RoIiwibWF4X3N0cmluZ19sZW5ndGgiLCJiaWdfZW5kaWFuIiwid29yZF9zaXplIiwiaW50X3NpemUiLCJnZXRlbnZfb3B0IiwiaW50ZXJhY3RpdmUiLCJzZXRfc2lnbmFsIiwic2lnX251bSIsInNpZ19iZWgiLCJzaWdhYnJ0Iiwic2lnYWxybSIsInNpZ2ZwZSIsInNpZ2h1cCIsInNpZ2lsbCIsInNpZ2ludCIsInNpZ2tpbGwiLCJzaWdwaXBlIiwic2lncXVpdCIsInNpZ3NlZ3YiLCJzaWd0ZXJtIiwic2lndXNyMSIsInNpZ3VzcjIiLCJzaWdjaGxkIiwic2lnY29udCIsInNpZ3N0b3AiLCJzaWd0c3RwIiwic2lndHRpbiIsInNpZ3R0b3UiLCJzaWd2dGFscm0iLCJzaWdwcm9mIiwic2lnYnVzIiwic2lncG9sbCIsInNpZ3N5cyIsInNpZ3RyYXAiLCJzaWd1cmciLCJzaWd4Y3B1Iiwic2lneGZzeiIsImNhdGNoX2JyZWFrIiwib24iLCJkZXZlbG9wbWVudF92ZXJzaW9uIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwiZm9yY2luZ190YWciLCJjb250X3RhZyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImN1c3RvbV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJvYmoiLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInNldCIsImluY3IiLCJkZWNyIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUkMCIsInJlc3VsdCQwIiwiY2xvc3VyZSIsInJlc3VsdCIsImUkMCIsImZvcmNlX2xhenlfYmxvY2siLCJmb3JjZV9nZW4iLCJsenYiLCJ0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJ4cyQxIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiYWNjdSQxIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmaW5kIiwiZmluZF9tYXAiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJub25lIiwic29tZSIsInZhbHVlIiwiZGVmYXVsdCQwIiwiZ2V0IiwiYmluZCIsImpvaW4iLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwicmV2X2luaXRfdGhyZXNob2xkIiwiZmxhdHRlbiIsInJldl9tYXAiLCJmb2xkX3JpZ2h0IiwiYTIiLCJhMSIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwibWFrZSIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXRfdXRmXzhfdWNoYXIiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJvZl9saXN0IiwiaW5wdXRfYXJyYXkiLCJlbHQiLCJvdXRwdXRfYXJyYXkiLCJlbHQkMCIsImFjYyQyIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImUkMSIsImokMCIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImkyJDAiLCJkJDAiLCJzMiQwIiwiaTEkMCIsImQkMSIsInMxJDAiLCJpc29ydHRvIiwic3Jjb2ZzIiwic29ydHRvIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInBpIiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic2l6ZSIsImR1bW15X3BvcyIsInplcm9fcG9zIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInJlYWRfZnVuIiwic3RoIiwid2l0aF9wb3NpdGlvbnMiLCJhdXhfYnVmZmVyIiwibGV4YnVmIiwicmVhZCIsIm5ld2xlbiIsIm5ld2J1ZiIsImZyb21fY2hhbm5lbCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiZXhuJDAiLCJleG4iLCJjdXJyX2NoYXIiLCJ0b2siLCJwZWVrX3ZhbCIsInN5bWJvbF9zdGFydF9wb3MiLCJzdCIsImVuIiwic3ltYm9sX2VuZF9wb3MiLCJyaHNfc3RhcnRfcG9zIiwicmhzX2VuZF9wb3MiLCJzeW1ib2xfc3RhcnQiLCJzeW1ib2xfZW5kIiwicmhzX3N0YXJ0IiwicmhzX2VuZCIsImlzX2N1cnJlbnRfbG9va2FoZWFkIiwicGFyc2VfZXJyb3IiLCJoZWlnaHQiLCJobCIsImgkMCIsImhyIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2IiwicmxsIiwiYWRkIiwic2luZ2xldG9uIiwiYWRkX21pbl9lbGVtZW50IiwiYWRkX21heF9lbGVtZW50IiwicmgiLCJsaCIsIm1pbl9lbHQiLCJtaW5fZWx0X29wdCIsIm1heF9lbHQiLCJtYXhfZWx0X29wdCIsInJlbW92ZV9taW5fZWx0IiwiciQwIiwicHJlcyIsInByZXMkMCIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwidG9fcmVhZCQxIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsInByZXZpb3VzJDAiLCJzdGFydCQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJyZWxlYXNlIiwiYWNxdWlyZSIsInRyeV9hY3F1aXJlIiwicmV0IiwiZ2V0X3ZhbHVlIiwibWFrZSQwIiwicmVsZWFzZSQwIiwiYWNxdWlyZSQwIiwidHJ5X2FjcXVpcmUkMCIsImNwdV9yZWxheCIsInVuaXF1ZV92YWx1ZSIsImNyZWF0ZV9kbHMiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJraSIsIm1heWJlX2dyb3ciLCJzeiIsIm5ld19zeiIsIm5ld19zdCIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJzcGF3biIsInBrIiwidGVybV9tdXRleCIsInRlcm1fY29uZGl0aW9uIiwidGVybV9zdGF0ZSIsImJvZHkiLCJleCQwIiwiZXgiLCJyZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5IiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwiZm10dHkkNCIsImZtdHR5JDUiLCJmbXR0eSQ2IiwiZm10dHkkNyIsImZtdHR5JDgiLCJmbXR0eSQ5Iiwic3ViX2ZtdHR5IiwiZm10dHkkMTAiLCJzdWJfZm10dHkkMCIsImZtdHR5JDExIiwiZm10dHkkMTIiLCJmbXR0eSQxMyIsImZtdHR5JDE0IiwiZm10dHkkMTUiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJjdXIiLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwic2VlbiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG8iLCJjb25zdHJ1Y3RvciIsImZpZWxkc19vcHQiLCJjb25zdHJ1Y3RvciQwIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwiZXZlbnRsb2dfcGF1c2UiLCJldmVudGxvZ19yZXN1bWUiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIiLCJpbnQ2NCIsImludCQwIiwibmF0aXZlaW50IiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiYXJyIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInJlaW5pdCIsInNlZWQiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJpbnRhdXgiLCJib3VuZCIsImZ1bGxfaW50IiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImZsb2F0JDAiLCJib29sIiwibWtfZGVmYXVsdCIsInJhbmRvbV9rZXkiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiYml0czMyJDAiLCJiaXRzNjQkMCIsIm5hdGl2ZWJpdHMkMCIsImZ1bGxfaW5pdCIsInNlbGZfaW5pdCIsInNwbGl0JDAiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmdfa2V5IiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInNlZWRlZF9oYXNoIiwiaGFzaF9wYXJhbSIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImNvdW50IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJmbHVzaCIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwic3RkYnVmX2tleSIsInN0cl9mb3JtYXR0ZXJfa2V5IiwiYnVmZmVyZWRfb3V0X3N0cmluZyIsImJ1ZmZlcmVkX291dF9mbHVzaCIsInN0ZF9idWZfa2V5IiwiZXJyX2J1Zl9rZXkiLCJzdGRfZm9ybWF0dGVyX2tleSIsImVycl9mb3JtYXR0ZXJfa2V5IiwiZ2V0X3N0ZF9mb3JtYXR0ZXIiLCJnZXRfZXJyX2Zvcm1hdHRlciIsImdldF9zdHJfZm9ybWF0dGVyIiwiZ2V0X3N0ZGJ1ZiIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIiwib3V0cHV0JDAiLCJmbHVzaCQwIiwic3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsImZzIiwiZnMkMCIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiY2xvc2VfaW4iLCJpYyQwIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJsb3dlcmNhc2UiLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZl9nZW4iLCJlZiIsImFyZ3MkMSIsImV4YyQwIiwiZXhjIiwiYXJncyQwIiwia3NjYW5mIiwia3NjYW5mX29wdCIsImJzY2FuZiIsImJzY2FuZl9vcHQiLCJrc3NjYW5mIiwic3NjYW5mIiwic3NjYW5mX29wdCIsInNjYW5mIiwic2NhbmZfb3B0IiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiZ2V0X2RhdGEiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsImluaXRfbW9kX2Jsb2NrIiwiY29tcHMkMCIsIm1vZHUiLCJzaGFwZSIsImZuJDAiLCJjb21wcyIsImluaXRfbW9kIiwidXBkYXRlX21vZF9ibG9jayIsImNsIiwidXBkYXRlX21vZCIsInBybmciLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwic2V0X2RhdGEiLCJlcGgiLCJxdWVyeSIsInNldF9rZXlfZGF0YSIsInRlc3Rfa2V5IiwidCQwIiwiZ2V0X2tleTEiLCJzZXRfa2V5MSIsImdldF9rZXkyIiwic2V0X2tleTIiLCJnZXRfZGF0YSQwIiwic2V0X2RhdGEkMCIsIm1ha2UkMSIsImtleTEiLCJrZXkyIiwicXVlcnkkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsInNlZWRlZF9oYXNoJDAiLCJtYWtlJDIiLCJhZGQkMCIsInRlc3Rfa2V5cyIsInJlbW92ZSQwIiwiZmluZCQwIiwibGVuZ3RoJDAiLCJjbGVhciQwIiwibGVuZ3RoJDEiLCJnZXRfa2V5JDAiLCJzZXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwic2V0X2RhdGEkMSIsIm1ha2UkMyIsInF1ZXJ5JDEiLCJtYWtlJDQiLCJhZGQkMSIsInRlc3Rfa2V5cyQwIiwicmVtb3ZlJDEiLCJmaW5kJDEiLCJsZW5ndGgkMiIsImNsZWFyJDEiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiZ2VuZXJpY19iYXNlbmFtZSIsImlzX2Rpcl9zZXAiLCJnZW5lcmljX2Rpcm5hbWUiLCJpc19yZWxhdGl2ZSIsImlzX2ltcGxpY2l0IiwiY2hlY2tfc3VmZml4Iiwic3VmZiIsImNob3Bfc3VmZml4X29wdCIsImxlbl9mIiwidGVtcF9kaXJfbmFtZSIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDAiLCJsb29wJDAiLCJsb29wX2JzIiwiYWRkX2JzIiwicXVvdGVfY21kX2ZpbGVuYW1lIiwicXVvdGVfY29tbWFuZCQwIiwiZHJpdmVfYW5kX3BhdGgiLCJkaXJuYW1lJDAiLCJwYXRoIiwiZHJpdmUiLCJkaXIiLCJiYXNlbmFtZSQwIiwiYmFzZW5hbWUkMSIsImRpcm5hbWUkMSIsIm51bGwkMyIsImN1cnJlbnRfZGlyX25hbWUkMiIsInBhcmVudF9kaXJfbmFtZSQyIiwiZGlyX3NlcCQyIiwiaXNfZGlyX3NlcCQxIiwiaXNfcmVsYXRpdmUkMSIsImlzX2ltcGxpY2l0JDEiLCJjaGVja19zdWZmaXgkMSIsImNob3Bfc3VmZml4X29wdCQxIiwidGVtcF9kaXJfbmFtZSQxIiwicXVvdGUkMSIsInF1b3RlX2NvbW1hbmQkMSIsImJhc2VuYW1lJDIiLCJkaXJuYW1lJDIiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJpMCIsImV4dGVuc2lvbiIsImNob3BfZXh0ZW5zaW9uIiwicmVtb3ZlX2V4dGVuc2lvbiIsInRlbXBfZmlsZV9uYW1lIiwidGVtcF9kaXIiLCJyYW5kb21fc3RhdGUiLCJybmQiLCJjdXJyZW50X3RlbXBfZGlyX25hbWUiLCJzZXRfdGVtcF9kaXJfbmFtZSIsImdldF90ZW1wX2Rpcl9uYW1lIiwidGVtcF9maWxlIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93Iiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4kMCIsIm5ld19sZW4kMSIsImlucHV0X2FsbCIsImNodW5rX3NpemUiLCJpbml0aWFsX3NpemUkMCIsImluaXRpYWxfc2l6ZSQxIiwibnJlYWQiLCJidWYkMiIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJzZXRfYmluYXJ5X21vZGUiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJtYXhfaW50IiwibWluX2ludCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJib29sX29mX3N0cmluZ19vcHQiLCJib29sX29mX3N0cmluZyIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnRfb3B0IiwicmVhZF9pbnQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfZmxvYXQiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsIm9wZW5fb3V0X2dlbiIsImZsdXNoIiwiZmx1c2hfYWxsIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0X2J5dGVzIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfdmFsdWUiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfb3V0Iiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwib3Blbl9pbl9nZW4iLCJpbnB1dF9jaGFyIiwiaW5wdXRfbGluZSIsImlucHV0IiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsImNsb3NlX2luX25vZXJyIiwic2V0X2JpbmFyeV9tb2RlX2luIiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCIsImV4aXQiLCJhdF9leGl0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiZG9fYXRfZXhpdCIsImRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IiwiYm9vbF90b19pbnQiLCJzeW1ib2wkMyIsInN5bWJvbCQ0Iiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsImFzY2VuZGluZyIsIm1heCQwIiwibWluJDAiLCJhc2NlbmRpbmckMCIsImRlc2NlbmRpbmckMCIsIm1heCQxIiwibWluJDEiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJhc2NlbmRpbmckMSIsImRlc2NlbmRpbmckMSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCQyIiwibWluJDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsIm1heCQzIiwibWluJDMiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJhc2NlbmRpbmckMyIsImRlc2NlbmRpbmckMyIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJtYXgkNCIsIm1pbiQ0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiYXNjZW5kaW5nJDQiLCJkZXNjZW5kaW5nJDQiLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwibWF4JDUiLCJtaW4kNSIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsImFzY2VuZGluZyQ1IiwiZGVzY2VuZGluZyQ1IiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQ2IiwibWluJDYiLCJpIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwic3ltYm9sJDQyIiwiYXNjZW5kaW5nJDYiLCJkZXNjZW5kaW5nJDYiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwibWF4JDciLCJtaW4kNyIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsImFzY2VuZGluZyQ3IiwiZGVzY2VuZGluZyQ3IiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsIm1heCQ4IiwibWluJDgiLCJzeW1ib2wkNDkiLCJzeW1ib2wkNTAiLCJzeW1ib2wkNTEiLCJzeW1ib2wkNTIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJhc2NlbmRpbmckOCIsImRlc2NlbmRpbmckOCIsImNvbXBhcmUkNSIsImVxdWFsJDUiLCJtYXgkOSIsIm1pbiQ5Iiwic3ltYm9sJDU1Iiwic3ltYm9sJDU2Iiwic3ltYm9sJDU3Iiwic3ltYm9sJDU4Iiwic3ltYm9sJDU5Iiwic3ltYm9sJDYwIiwiYXNjZW5kaW5nJDkiLCJkZXNjZW5kaW5nJDkiLCJjb21wYXJlJDYiLCJlcXVhbCQ2IiwibWF4JDEwIiwibWluJDEwIiwic3ltYm9sJDYxIiwic3ltYm9sJDYyIiwic3ltYm9sJDYzIiwic3ltYm9sJDY0IiwiYXNyIiwibGFuZCIsImxub3QkMCIsImxvciIsImxzbCIsImxzciIsImx4b3IiLCJtb2QiLCJhYnMkMCIsImZhaWx3aXRoJDAiLCJmc3QiLCJpbnZhbGlkX2FyZyQwIiwic25kIiwicGh5c19lcXVhbCIsImRlY3IiLCJpbmNyIiwiZmxvYXRfb2Zfc3RyaW5nIiwiYW1fdGVzdGluZyIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwidCIsImYiLCJmb2xkX3JpZ2h0IiwiaXRlciIsIml0ZXJpIiwibWFwIiwibWFwaSIsInN0YWJsZV9zb3J0Iiwic3dhcCIsImoiLCJlbHRfaSIsImVsdF9qIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInRvX2ludCIsInVuc2FmZV9vZl9pbnQiLCJ1cHBlcmNhc2UiLCJpbnRfaXNfb2siLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJvZl9pbnQiLCJvZl9pbnRfZXhuIiwidDEiLCJ0MiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJzdWNjIiwiaGRfZXhuIiwibGVuZ3RoIiwicmV2X2FwcGVuZCIsInRsX2V4biIsInVuemlwIiwiZXhpc3RzIiwiZXhpc3RzMl9vayIsImwxIiwibDIiLCJmb2xkMl9vayIsImZvcl9hbGwiLCJmb3JfYWxsMl9vayIsIml0ZXIyX29rIiwibm9udGFpbF9tYXAiLCJub250YWlsX21hcGkiLCJwYXJ0aXRpb24iLCJyZXZfbWFwIiwicmV2X21hcDJfb2siLCJzb3J0IiwibCIsInJldiIsInJlcyIsInJlc3QiLCJhIiwiYiIsImhhc2hfZm9sZF91bml0IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZm9sZF9zdHJpbmciLCJhc19pbnQiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImhhc2hfZm9sZF9vcHRpb24iLCJoYXNoX2ZvbGRfZWxlbSIsImhhc2hfZm9sZF9saXN0IiwicyQxIiwibGlzdCQxIiwicyQyIiwibGlzdCIsImxpc3QkMCIsInMkMCIsImhhc2hfZm9sZF9sYXp5X3QiLCJoYXNoX2ZvbGRfcmVmX2Zyb3plbiIsImhhc2hfZm9sZF9hcnJheV9mcm96ZW4iLCJhcnJheSIsImUiLCJpJDAiLCJoYXNoX25hdGl2ZWludCIsImhhc2hfaW50NjQiLCJoYXNoX2ludDMyIiwiaGFzaF9jaGFyIiwiaGFzaF9pbnQiLCJoYXNoX2Jvb2wiLCJoYXNoX3N0cmluZyIsImhhc2hfZmxvYXQiLCJoYXNoX3VuaXQiLCJzZWVkIiwib2ZfZm9sZCIsImhhc2hfZm9sZF90IiwicnVuIiwiZm9sZGVyIiwib3B0Iiwic3RoIiwiY29tcGFyZV9zdGF0ZSIsInN0YXRlX3RvX3N0cmluZyIsInN0YXRlIiwidCQwIiwidCQxIiwidCQyIiwidCQzIiwidCQ0IiwidCQ1IiwiY29tcGFyZV9hYnN0cmFjdCIsInR5cGVfbmFtZSIsImVxdWFsX2Fic3RyYWN0IiwiY29tcGFyZV9ib29sIiwiY29tcGFyZV9jaGFyIiwiY29tcGFyZV9mbG9hdCIsImNvbXBhcmVfaW50IiwiY29tcGFyZV9pbnQzMiIsImNvbXBhcmVfaW50NjQiLCJjb21wYXJlX25hdGl2ZWludCIsImNvbXBhcmVfc3RyaW5nIiwiY29tcGFyZV91bml0IiwiY29tcGFyZV9hcnJheSIsImNvbXBhcmVfZWx0IiwibGVuX2EiLCJsZW5fYiIsInJldCIsInIiLCJjb21wYXJlX2xpc3QiLCJhJDAiLCJiJDAiLCJ5cyIsInhzIiwiY29tcGFyZV9vcHRpb24iLCJjb21wYXJlX3JlZiIsImVxdWFsX2Jvb2wiLCJlcXVhbF9jaGFyIiwiZXF1YWxfaW50IiwiZXF1YWxfaW50MzIiLCJlcXVhbF9pbnQ2NCIsImVxdWFsX25hdGl2ZWludCIsImVxdWFsX3N0cmluZyIsImVxdWFsX3VuaXQiLCJlcXVhbF9mbG9hdCIsImVxdWFsX2FycmF5IiwiZXF1YWxfZWx0IiwiZXF1YWxfbGlzdCIsImVxdWFsX29wdGlvbiIsImVxdWFsX3JlZiIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsImhhc2giLCJoc3YiLCJhcmciLCJhMCIsImhzdiQwIiwiYTAkMCIsImhzdiQxIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJmdW5jIiwicmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UiLCJpbml0aWFsaXplX21vZHVsZSIsImNsZWFyX2JhY2t0cmFjZSIsIndpdGhfcmV0dXJuIiwiaXNfYWxpdmUiLCJyZXR1cm4kMCIsIndpdGhfcmV0dXJuX29wdGlvbiIsInByZXBlbmQiLCJwYXJhbSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwiYmluZCQwIiwicmV0dXJuJDEiLCJtYXAkMCIsInRvX21vbmFkIiwib2ZfbW9uYWQiLCJkZXJpdmVkX21hcCIsIm1hcDIiLCJ0YSIsInRiIiwibWFwMyIsInRjIiwic3ltYm9sJDAiLCJ1Iiwic3ltYm9sJDEiLCJ0ZiIsImZhYiIsImMiLCJhcHBseSIsIm1mIiwibXgiLCJ0eCIsImN1c3RvbV9tYXAiLCJhcHBseSQwIiwiYmxpdF9zdHJpbmciLCJtYWtlIiwidW5zYWZlX2JsaXQiLCJ1bnNhZmVfdG9fc3RyaW5nIiwidW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211IiwiY29tcGFyYXRvciIsImVycm9yX3NvdXJjZV8wMTEiLCJjbXBfZiIsImNtcF9zIiwiaGFzaF9mb2xkX2YiLCJoYXNoX2ZvbGRfcyIsInRfb2Zfc2V4cCIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwiZl9zZXhwX2dyYW1tYXIiLCJzX3NleHBfZ3JhbW1hciIsIm9wYXF1ZV9pZGVudGl0eSIsIm5hbWUiLCJnZXQiLCJmc2V0Iiwic2V0dGVyIiwidXBkYXRlciIsImZpZWxkIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInNlcCIsIm4iLCJuJDAiLCJuJDEiLCJoc3YkMiIsInBvc19jbnVtXzAxMCIsInBvc19ib2xfMDA4IiwicG9zX2xudW1fMDA2IiwicG9zX2ZuYW1lXzAwNCIsImFyZ18wMTEiLCJibmRzXzAwMyIsImFyZ18wMDkiLCJibmRzXzAwMyQwIiwiYXJnXzAwNyIsImJuZHNfMDAzJDEiLCJhcmdfMDA1IiwiYm5kc18wMDMkMiIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJtYWtlX2xvY2F0aW9uX3N0cmluZyIsInBvc19mbmFtZSIsInBvc19sbnVtIiwicG9zX2NudW0iLCJwb3NfYm9sIiwiaXNfZW1wdHkiLCJwYXJ0aXRpb25fbWFwIiwiZnN0JDAiLCJ5JDAiLCJzbmQkMCIsImVycm9yX3NvdXJjZV8wMDUiLCJvZl9hXzAwMSIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMyIsInJlczBfMDI0IiwiYV9zZXhwX2dyYW1tYXIiLCJiX3NleHBfZ3JhbW1hciIsImNtcF9hIiwiY21wX2IiLCJhXzAyNyIsImJfMDI4IiwiYV8wMjkiLCJiXzAzMCIsImFfMDMxIiwiYl8wMzIiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3IiwiYl8wMzgiLCJoYXNoX2ZvbGRfYSIsImhhc2hfZm9sZF9iIiwieCQwIiwiY2hlY2tfb2siLCJjaGVja19lcnJvciIsIm9rIiwiZXJyb3IiLCJmYWlsIiwiZmFpbGYiLCJtYXBfZXJyb3IiLCJiaW5kJDEiLCJtYXAkMSIsInJldHVybiQyIiwiaXNfb2siLCJpc19lcnJvciIsIm9mX29wdGlvbiIsIml0ZXJfZXJyb3IiLCJ0b19laXRoZXIiLCJvZl9laXRoZXIiLCJva19pZl90cnVlIiwiYm9vbCIsInRyeV93aXRoIiwib2tfZXhuIiwib2tfb3JfZmFpbHdpdGgiLCJjb21iaW5lIiwiZXJyIiwib2sxIiwib2syIiwiZXJyMSIsImVycjIiLCJjb21iaW5lX2Vycm9ycyIsImVycnMiLCJjb21iaW5lX2Vycm9yc191bml0IiwiY291bnQiLCJzdW0iLCJNIiwiZm9sZF9yZXN1bHQiLCJhY2MiLCJpdGVtIiwiZm9sZF91bnRpbCIsImZpbmlzaCIsIm1pbl9lbHQiLCJlbHQiLCJtYXhfZWx0IiwiZmluZF9tYXAiLCJmaW5kIiwidG9fYXJyYXkiLCJpdGVyJDAiLCJpdGVyJDEiLCJsZW5ndGgkMCIsImxlbmd0aCQxIiwiaXNfZW1wdHkkMCIsInN1bSQwIiwibSIsImNvdW50JDAiLCJleGlzdHMkMCIsImZvcl9hbGwkMCIsImZpbmRfbWFwJDAiLCJmaW5kJDAiLCJ0b19saXN0JDAiLCJ0b19hcnJheSQwIiwibWluX2VsdCQwIiwibWF4X2VsdCQwIiwiZm9sZF9yZXN1bHQkMCIsImZvbGRfdW50aWwkMCIsImZvbGQkMCIsIm1lbSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJzZXhwX29mX2EiLCJzbG93X2NoZWNrX3Bvc19sZW5fZXhuIiwicG9zIiwidG90YWxfbGVuZ3RoIiwiY2hlY2tfcG9zX2xlbl9leG4iLCJzdG9wIiwiZ2V0X3Bvc19sZW5fZXhuIiwibGVuJDAiLCJvZl9zdGF0ZSIsImFzc2lnbiIsImRzdCIsInNyYyIsImRzdCQwIiwic3JjJDAiLCJtYWtlX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJzcGxpdF9mcm9tX3BhcmVudCIsImdldF9zdGF0ZSIsInJhbmRvbV9rZXkiLCJmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMiLCJhbGxvd19pbl90ZXN0cyIsImJpdHMiLCJpbnQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJjaGFyJDAiLCJhc2NpaSIsIm1ha2Vfc2VsZl9pbml0IiwiaW50X29uXzY0Yml0cyIsImJvdW5kIiwiaW50X29uXzMyYml0cyIsImludCQxIiwiYml0cyQwIiwiZnVsbF9yYW5nZV9pbnQ2NCIsImJpdHMkMSIsImZ1bGxfcmFuZ2VfaW50MzIiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMkMCIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50IiwicmFpc2VfY3Jvc3NlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kIiwic3RyaW5nX29mX2JvdW5kIiwiaW50X2luY2wiLCJsbyIsImhpIiwiZGlmZiIsImludDMyX2luY2wiLCJuYXRpdmVpbnRfaW5jbCIsImludDY0X2luY2wiLCJmbG9hdCQwIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQyIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwic3RoJDAiLCJudW1fc3dhcHMiLCJ0aGlzX2kiLCJyYW5kb21faSIsImNvbnN0JDAiLCJub24iLCJmb3JldmVyIiwiZSQwIiwiY29tcG9zZSIsImciLCJmbGlwIiwiYXBwbHlfbl90aW1lcyIsIngkMSIsInNleHBfMDA2IiwiZXJyb3Jfc291cmNlXzAyMiIsImZvbGRfbGVmdCIsImFfMDA2IiwiYl8wMDciLCJhXzAwOCIsImJfMDA5Iiwib2ZfYV8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwic3RoJDEiLCJoZCIsInRsIiwibnRoIiwibnRoX2V4biIsInVub3JkZXJlZF9hcHBlbmQiLCJvZl9saXN0cyIsInNoYXJlZF9sZW5ndGgiLCJzaGFyZWRfbGVuZ3RoJDAiLCJjaGVja19sZW5ndGgyX2V4biIsInRhaWxfb2ZfYiIsInRhaWxfb2ZfYSIsImNoZWNrX2xlbmd0aDIiLCJvZl9saXN0cyQwIiwibDMiLCJjJDAiLCJjaGVja19sZW5ndGgzX2V4biIsInRhaWxfb2ZfYyIsIm4xIiwibjIiLCJuMyIsImNoZWNrX2xlbmd0aDMiLCJpdGVyMiIsIml0ZXIyX2V4biIsInJldl9tYXAyIiwicmV2X21hcDJfZXhuIiwiZm9sZDIiLCJmb2xkMl9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsImFjY3UiLCJmaWx0ZXIiLCJub3RfZm91bmQiLCJmaW5kX21hcF9leG4iLCJub3RfZm91bmQkMCIsImZpbmRfZXhuIiwiZmluZGkiLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsImZpbmRfbWFwaSIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsImZvcl9hbGxpIiwiZXhpc3RzaSIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDEkMCIsImwyJDAiLCJsMyQwIiwiYWMiLCJsMyQxIiwibDIkMSIsImwxJDEiLCJhYyQwIiwicmV2X21hcDMiLCJyZXZfbWFwM19leG4iLCJtYXAzX29rIiwibWFwM19leG4iLCJyZXZfbWFwX2FwcGVuZCIsImgiLCJsaXN0JDIiLCJ1bnppcDMiLCJ6IiwiemlwX2V4biIsInppcCIsInJldl9tYXBpIiwiZm9sZGluZ19tYXBpIiwiZm9sZF9tYXBpIiwiZm9sZGkiLCJmaWx0ZXJpIiwicmVkdWNlIiwicmVkdWNlX2V4biIsInJlZHVjZV9iYWxhbmNlZCIsInN0ZXBfYWNjdW0iLCJudW0iLCJudW0kMCIsImFjYyQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwic3ltYm9sJDIiLCJsYXN0X2V4biIsImxhc3QiLCJpc19wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsInByZWZpeCQxIiwiaGQkMCIsImZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIiwiYTEiLCJhMSQwIiwiYTIiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImwkMCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImNvdW50aSIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwiZmlsdGVyX21hcCIsInJldl9maWx0ZXJfbWFwaSIsImkkMSIsImZpbHRlcl9tYXBpIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJwYXJ0aXRpb25fdGYiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAxNCIsIm9mX2JfMDE1IiwieF8wMjMiLCJzZXhwXzAyMSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwic2V4cF9vZl90JDEiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsIm1lbSQwIiwicmVtb3ZlIiwiYWRkIiwiaW52ZXJzZSIsIm1hcCQyIiwiZWwiLCJzcGxpdF9uIiwidF9vcmlnIiwidGFrZSIsImRyb3AiLCJjaHVua3Nfb2YiLCJsJDEiLCJzdWJsaXN0Iiwic3BsaXRfd2hpbGUiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImRyb3BfbGFzdCIsImRyb3BfbGFzdF9leG4iLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsImxpc3QxIiwibGlzdDIiLCJjb25jYXRfbm9fb3JkZXIiLCJjb25zIiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwiYXJyIiwicmFuZG9tX2VsZW1lbnRfZXhuIiwicmFuZG9tX2VsZW1lbnQiLCJjbXAiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMV8wMTMiLCJyZXMyXzAxNCIsImFyZzFfMDE2IiwicmVzMV8wMTgiLCJhcmcyXzAyMSIsImFyZzFfMDIwIiwiYXJnMF8wMTkiLCJyZXMxXzAyMyIsInJlczJfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJ0b19zdHJpbmdzX2h1bSIsInN0cmluZyIsInNleHAkMCIsInNleHAkMSIsInRhZyIsInRhZyQwIiwic2V4cCQyIiwidGFnJDEiLCJib2R5IiwidHJ1bmNfYWZ0ZXIiLCJ0cyQwIiwidHMkMSIsImFjJDEiLCJ0b19zZXhwc19odW0iLCJoZXJlIiwiaGVyZSQwIiwidG9fc2V4cF9odW0iLCJzZXhwcyIsInRvX21lc3NhZ2UiLCJpbmZvIiwib2ZfbWVzc2FnZSIsInRvX3N0cmluZ19odW0iLCJtZXNzYWdlIiwidG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIiwib2ZfbGF6eSIsIm9mX2xhenlfc2V4cCIsIm9mX2xhenlfdCIsImxhenlfdCIsImNyZWF0ZWYiLCJvZl90aHVuayIsInN0cmljdCIsInNleHBfb2ZfeCIsInRhZ19zX2xhenkiLCJ0YWdfcyIsInRhZ19hcmciLCJ0b19leG4iLCJvZl9leG4iLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwiYmFja3RyYWNlJDIiLCJyYWlzZSIsInJhaXNlX3MiLCJ0b19pbmZvIiwib2ZfaW5mbyIsImNoZWNrX2ZpZWxkIiwiYV8wMDciLCJiXzAwOCIsIm9mX2FfMDEzIiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3IiwiaW52YXJpYW50X2EiLCJlMSIsImUyIiwidHJ5X3dpdGhfam9pbiIsIm9mX2V4bl9yZXN1bHQiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidW5pbXBsZW1lbnRlZCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImlzX3Bvc2l0aXZlIiwiaXNfbm9uX25lZ2F0aXZlIiwiaXNfbmVnYXRpdmUiLCJpc19ub25fcG9zaXRpdmUiLCJzaWduIiwiaGFzaF9wYXJhbSIsInBvbHkiLCJvZl9rZXkiLCJLZXkiLCJ0b19rZXkiLCJoYXNoX3BhcmFtJDAiLCJwb2x5JDAiLCJvZl9rZXkkMCIsInRvX2tleSQwIiwiaGFzaGFibGUiLCJnZXRfcG9zX2xlbiIsImZpbmRfZmlyc3Rfc2F0aXNmeWluZyIsInByZWQiLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsInNyY19wb3MiLCJkc3RfcG9zIiwiYmxpdG8iLCJzcmNfbGVuIiwic3VibyIsImNyZWF0ZV9saWtlIiwidW5zYWZlX2JsaXQkMCIsImlzX25vbmUiLCJpc19zb21lIiwidmFsdWVfbWFwIiwibyIsImNhbGwiLCJ2YWx1ZV9leG4iLCJlcnJvciQwIiwibSQwIiwibSQxIiwidmFsdWVfb3JfdGh1bmsiLCJzb21lIiwiZmlyc3Rfc29tZSIsInNvbWVfaWYiLCJjb25kIiwiYV9vZl9zZXhwIiwiYl9vZl9zZXhwIiwic2V4cF9vZl9iIiwiY19vZl9zZXhwIiwic2V4cF9vZl9jIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZWl0aGVyIiwib3RoZXJfbG9vcCIsInJldHVybl9sb29wIiwiY29tYmluZV9hbGwiLCJvdGhlcl9sb29wJDAiLCJyZXR1cm5fbG9vcCQwIiwiY29tYmluZV9hbGxfdW5pdCIsInRvX29wdGlvbiIsImVpdGhlciQwIiwiY29tYmluZSQwIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImVycm9yX3NvdXJjZV8wMjUiLCJvZl9zXzAwMiIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxOSIsImFfMDE3IiwiYl8wMjAiLCJiXzAxOCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIxIiwib2ZfYl8wMjIiLCJzZXhwXzAyNyIsInRhZ18wMjgiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfYXJnc18wMjkiLCJhcmcwXzAzMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsIm9mX2FfMDQ2Iiwib2ZfYl8wNDciLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsInNldCIsInN3YXAkMCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25pX3RmIiwidHJ1ZXMiLCJmYWxzZXMiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwidG9fc2VxdWVuY2UiLCJpMSIsImkyIiwidHQiLCJ3aWR0aCIsImRlcHRoIiwiZCIsInciLCJ0dCQwIiwiZ2V0JDAiLCJ6ZXJvX29iaiIsImNyZWF0ZV96ZXJvIiwidW5zYWZlX2dldCIsInVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSIsIm9iaiIsInNldF93aXRoX2NhbWxfbW9kaWZ5IiwidW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVuIiwib2xkX29iaiIsInVuc2FmZV9zZXQiLCJ1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGUiLCJ1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV8iLCJ1bnNhZmVfc2V0X2ludCIsInVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIiwidW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIiwiY3JlYXRlX29ial9hcnJheSIsIm9mX2FycmF5IiwiZ3JhbW1hciIsImNlaWwiLCJmbG9vciIsIm1vZF9mbG9hdCIsIm1vZGYiLCJtYXhfZmluaXRlX3ZhbHVlIiwiY2xhc3NpZnlfZmxvYXQiLCJhYnNfZmxvYXQiLCJpc19pbnRlZ2VyIiwiZnJleHAiLCJsZGV4cCIsImlzX25hbiIsInRvX2ludDY0X3ByZXNlcnZlX29yZGVyIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIiwib2ZfaW50NjRfcHJlc2VydmVfb3JkZXIiLCJvbmVfdWxwIiwiZGlyIiwidXBwZXJfYm91bmRfZm9yX2ludCIsImV4cCIsImlzX3hfbWludXNfb25lX2V4YWN0IiwibG93ZXJfYm91bmRfZm9yX2ludCIsIm1pbl9pbnRfYXNfZmxvYXQiLCJib3giLCJpc19sb3dlcmNhc2UiLCJpc191cHBlcmNhc2UiLCJpc19wcmludCIsImlzX3doaXRlc3BhY2UiLCJpc19kaWdpdCIsImlzX2FscGhhIiwiaXNfYWxwaGFudW0iLCJnZXRfZGlnaXRfdW5zYWZlIiwiZ2V0X2RpZ2l0X2V4biIsImdldF9kaWdpdCIsImlzX2hleF9kaWdpdCIsImlzX2hleF9kaWdpdF9sb3dlciIsImlzX2hleF9kaWdpdF91cHBlciIsImdldF9oZXhfZGlnaXRfZXhuIiwiZ2V0X2hleF9kaWdpdCIsInRfb2Zfc2V4cCQxIiwiYzEiLCJjMiIsImhhc2hfZm9sZF90JDEiLCJoYXNoJDEiLCJ0cl9jcmVhdGVfbWFwIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJ0cl9tYXAiLCJpJDMiLCJpJDIiLCJpbmRleCQwIiwibGFzdF9yZXBsYWNlbWVudCIsImluZGV4IiwiZmlyc3RfdGFyZ2V0Iiwic3RhZ2UiLCJ1bnN0YWdlIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwiYV8wMDIiLCJiXzAwMyIsImttcF9hcnJheV8wMTEiLCJjYXNlX3NlbnNpdGl2ZV8wMDkiLCJwYXR0ZXJuXzAwNyIsImFyZ18wMTIiLCJibmRzXzAwNiIsImFyZ18wMTAiLCJibmRzXzAwNiQwIiwiYXJnXzAwOCIsImJuZHNfMDA2JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJsZmluZGkiLCJyZmluZGkiLCJsYXN0X25vbl9kcm9wIiwicnN0cmlwIiwiZmlyc3Rfbm9uX2Ryb3AiLCJsc3RyaXAiLCJzdHJpcCIsInRyIiwidHJfbXVsdGkiLCJjb25jYXRfYXJyYXkiLCJhciIsIm91dCIsIm91dF9wb3MiLCJvdXQkMCIsImNob3BfcHJlZml4IiwiY2hvcF9wcmVmaXhfaWZfZXhpc3RzIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3N1ZmZpeF9leG4iLCJzaG9ydGVyIiwic2hvcnRlc3QiLCJwb3NfZnJvbV9sZWZ0IiwicG9zX2Zyb21fcmlnaHQiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AiLCJnZXRfcG9zIiwibWF4X2xlbiIsImxlbl9zb19mYXIiLCJsZW5fc29fZmFyJDAiLCJsZW5fc29fZmFyJDEiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AiLCJmaXJzdCQwIiwibWF4X2xlbiQwIiwibWF4X2xlbiQxIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWMyIiwiY29tbW9uX2dlbmVyaWMiLCJjb21tb25fcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4X2xlbmd0aCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsInVuc2FmZV9ibGl0JDEiLCJtYXBpJDAiLCJvY2FtbF9sZXhfdGFibGVzIiwicGFyc2VfaGV4IiwibGV4YnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJjb252ZXJ0X2ZhaWx1cmUiLCJudW1fYml0c19pbnQiLCJudW1fYml0c19uYXRpdmVpbnQiLCJudW1fYml0c19pbnQzMiIsIm51bV9iaXRzX2ludDY0IiwibWluX2ludDMyIiwibWF4X2ludDMyIiwibWluX2ludDY0IiwibWF4X2ludDY0IiwibWluX25hdGl2ZWludCIsIm1heF9uYXRpdmVpbnQiLCJpbnQ2NF90b19zdHJpbmciLCJuYXRpdmVpbnRfdG9fc3RyaW5nIiwiaW50MzJfdG9faW50X3RydW5jIiwiaW50X3RvX2ludDMyX3RydW5jIiwiaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIiLCJpbnRfdG9faW50MzIiLCJpbnQzMl90b19pbnQiLCJpbnRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9faW50X2V4biIsImludF90b19pbnQ2NCIsImludDY0X3RvX2ludF90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IiwiaW50NjRfdG9faW50IiwiaW50NjRfdG9faW50X2V4biIsImludF90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludCIsIm5hdGl2ZWludF90b19pbnRfZXhuIiwiaW50MzJfdG9faW50NjQiLCJpbnQ2NF90b19pbnQzMl90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MyIsImludDY0X3RvX2ludDMyIiwiaW50NjRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9fbmF0aXZlaW50IiwibmF0aXZlaW50X3RvX2ludDMyX3RydW5jIiwibmF0aXZlaW50X3RvX2ludDMyIiwibmF0aXZlaW50X3RvX2ludDMyX2V4biIsImludDY0X3RvX25hdGl2ZWludF90cnVuYyIsIm5hdGl2ZWludF90b19pbnQ2NCIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aSIsImludDY0X3RvX25hdGl2ZWludCIsImludDY0X3RvX25hdGl2ZWludF9leG4iLCJpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYiLCJpbnQ2NF9maXRfb25faW50NjNfZXhuIiwiaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSIsImRlbGltaXRlciIsImNoYXJzX3Blcl9kZWxpbWl0ZXIiLCJpbnB1dF9sZW5ndGgiLCJoYXNfc2lnbiIsIm51bV9kaWdpdHMiLCJudW1fZGVsaW1pdGVycyIsIm91dHB1dF9sZW5ndGgiLCJpbnB1dF9wb3MiLCJvdXRwdXRfcG9zIiwibnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciIsImZpcnN0X2RpZ2l0X3BvcyIsImluc2VydF9kZWxpbWl0ZXIiLCJpbnNlcnRfdW5kZXJzY29yZXMiLCJzZXhwX29mX2ludF9zdHlsZSIsImRlbGltaXRlciQwIiwibWFrZV9zdWZmaXgiLCJ0b19zdHJpbmckMCIsImludmFsaWQiLCJvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIiLCJsZXgiLCJib2R5JDAiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW4iLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUiLCJpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIiwib3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIiwiaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbCIsImludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyIsIm5lZ2F0aXZlX2V4cG9uZW50Iiwib3ZlcmZsb3ciLCJpbnRfcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaW50NjRfcG93IiwiaW50NjNfcG93X29uX2ludDY0IiwicnZhbCIsIm9uZSIsInJvdW5kX2Rvd24iLCJtb2R1bHVzIiwicm91bmRfdXAiLCJyZW1haW5kZXIiLCJyb3VuZF90b3dhcmRzX3plcm8iLCJ0b19tdWx0aXBsZV9vZiIsInJvdW5kX25lYXJlc3QiLCJtb2R1bHVzX21pbnVzX3JlbWFpbmRlciIsInJvdW5kIiwiaDAxIiwibWFzayIsImludDY0X3BvcGNvdW50IiwieCQyIiwiaW50MzJfcG9wY291bnQiLCJuYXRpdmVpbnRfcG9wY291bnQiLCJtb2R1bGVfbmFtZSQwIiwib2Zfc3RyaW5nJDAiLCJmbG9hdF9sb3dlcl9ib3VuZCIsImZsb2F0X3VwcGVyX2JvdW5kIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwiZnVuYyQwIiwiemVybyIsIm1pbnVzX29uZSIsIm5lZyIsIm9mX3N0cmluZyQxIiwib2ZfaW50MzIiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMiIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0Iiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50IiwibWF4X3ZhbHVlXzMwX2JpdHMiLCJhYnMiLCJyZW0iLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwic2hpZnRfbGVmdCIsImJpdF9ub3QiLCJiaXRfb3IiLCJiaXRfYW5kIiwiYml0X3hvciIsInBvdyIsIm5vbl9wb3NpdGl2ZV9hcmd1bWVudCIsImNlaWxfcG93MiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsImZsb29yX3BvdzIiLCJpc19wb3cyIiwiZmxvb3JfbG9nMiIsImNlaWxfbG9nMiIsInBvcGNvdW50IiwibG5vdCIsInN1Y2NfZXhuIiwibXNnIiwicHJlZF9leG4iLCJvZl9zY2FsYXIiLCJvZl9zY2FsYXJfZXhuIiwidG9fc2NhbGFyIiwidG9fY2hhciIsInRvX2NoYXJfZXhuIiwidXRmOF9ieXRlX2xlbmd0aCIsInVjaGFyIiwiY29kZXBvaW50Iiwic29tZV90IiwicmVmbCIsInN5bSIsInRyYW5zIiwiY29udiIsImRldHVwbGUyIiwidHVwbGUyIiwid2l0bmVzcyIsInZfMDA1IiwidG9fc2V4cCIsInVpZCIsInNhbWVfd2l0bmVzcyIsInNhbWUiLCJzYW1lX3dpdG5lc3NfZXhuIiwibm9uZV9zdWJzdGl0dXRlIiwibm9uZSIsInZhbHVlX3Vuc2FmZSIsIm9mX3NleHBhYmxlIiwidG9fc2V4cGFibGUiLCJ4XzAwMyIsIm9mX2FfMDA0IiwieF8wMDUiLCJpbml0X3NvbWUiLCJnZXRfc29tZV9leG4iLCJpc19ub25lJDAiLCJpc19zb21lJDAiLCJzZXRfc29tZSIsInNldF9ub25lIiwidW5zYWZlX2dldF9zb21lX2V4biIsInVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIiwidW5zYWZlX2lzX3NvbWUiLCJ1bnNhZmVfc2V0X3NvbWUiLCJ1bnNhZmVfc2V0X25vbmUiLCJjbGVhciIsImVsZW0iLCJtYXBfc29tZSIsIm9mX2FycmF5X3NvbWUiLCJjYXBhY2l0eSIsImVsdHMiLCJsZW5ndGhfMDAzIiwiZWx0c18wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInJlc2l6ZSIsInNpemUiLCJzZXRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkkMCIsInB1c2giLCJwb3Bfbm9uZW1wdHkiLCJwb3BfZXJyb3IiLCJwb3AiLCJwb3BfZXhuIiwidG9wX25vbmVtcHR5IiwidG9wX2Vycm9yIiwidG9wIiwidG9wX2V4biIsInVudGlsX2VtcHR5IiwiaGFzaF9vdmVycmlkZSIsIm9mX3BvcyIsIm9mX3NpZ24iLCJ0b19zaWduX2V4biIsInRvX2ludF9leG4iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAyNyIsImludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbSIsImFsbF9vZl9hIiwiZW51bWVyYXRlXzAwMiIsImVudW1lcmF0ZV8wMDEiLCJhY2MkMiIsIm9mX2FfMDAzIiwic2V4cF8wMDgiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwidF8wMTQiLCJ0XzAxMyIsInRfMDE2IiwidF8wMTUiLCJyaWdodF8wMTgiLCJsZWZ0XzAxNyIsInJpZ2h0XzAyMiIsImxlZnRfMDIxIiwidF8wMjQiLCJ0XzAyMyIsInRfMDI2IiwidF8wMjUiLCJyaWdodF8wMjAiLCJsZWZ0XzAxOSIsInRfMDMwIiwidF8wMjkiLCJ0XzAzMiIsInRfMDMxIiwicmlnaHRfMDM0IiwibGVmdF8wMzMiLCJyaWdodF8wMzgiLCJsZWZ0XzAzNyIsInRfMDQwIiwidF8wMzkiLCJ0XzA0MiIsInRfMDQxIiwicmlnaHRfMDM2IiwibGVmdF8wMzUiLCJvZl9rXzA0MyIsIm9mX3ZfMDQ0Iiwic2V4cF8wNzEiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJhdG9tXzA0NyIsInNleHBfYXJnc18wNTAiLCJhdG9tXzA0NyQwIiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2NCIsInJlczBfMDY1IiwicmVzMV8wNzAiLCJvZl9rXzA3MiIsIm9mX3ZfMDczIiwiYXJnMV8wODIiLCJhcmcwXzA4MSIsInJlczBfMDgzIiwidl8wNzQiLCJyZXMxXzA4NCIsInZfMDc2IiwiYXJnMV8wNzgiLCJhcmcwXzA3NyIsInJlczBfMDc5IiwicmVzMV8wODAiLCJ2XzA3NSIsImtfc2V4cF9ncmFtbWFyIiwidl9zZXhwX2dyYW1tYXIiLCJjbXBfbGVmdCIsImNtcF9yaWdodCIsImFfMDg1IiwiYl8wODYiLCJyaWdodF8wOTIiLCJsZWZ0XzA5MSIsInRfMDk0IiwidF8wOTMiLCJ0XzA5NiIsInRfMDk1IiwicmlnaHRfMDg4IiwibGVmdF8wODciLCJyaWdodF8wOTAiLCJsZWZ0XzA4OSIsImFfMDk3IiwiYl8wOTgiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInRfMTA2IiwidF8xMDUiLCJ0XzEwOCIsInRfMTA3IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8xMDIiLCJsZWZ0XzEwMSIsIm9mX2xlZnRfMTA5Iiwib2ZfcmlnaHRfMTEwIiwidl8xMTMiLCJhcmcxXzExNSIsImFyZzBfMTE0IiwicmVzMF8xMTYiLCJyZXMxXzExNyIsInZfMTExIiwidl8xMTIiLCJzZXhwX29mX3QkMyIsImhlaWdodCIsImluX3JhbmdlIiwiaGwiLCJociIsImxvd2VyJDEiLCJpbnZhcmlhbnRzIiwiaCQxIiwiaCQwIiwic2wiLCJzciIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayIsImtsIiwiayQxIiwia2wkMCIsImskMiIsImtyIiwibGVmdF9sZW5ndGgiLCJyaWdodF9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwiYXJyYXlfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5IiwiaW5jcmVhc2luZyIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiQwIiwibHJsIiwibHJ2IiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2JDAiLCJybGwiLCJybHYiLCJhdXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInJlbW92ZV9pbmRleCIsImxfc2l6ZSIsInVuaW9uIiwidjEkMCIsInYyJDAiLCJyMiQwIiwicjEkMCIsInVuaW9uX2xpc3QiLCJ0b190cmVlIiwiaW50ZXIiLCJvdGhlcl9zZXQiLCJlJDEiLCJjb25zX3JpZ2h0Iiwib2Zfc2V0IiwiZW51bSQwIiwidHJlZSIsInN5bW1ldHJpY19kaWZmIiwiZWx0JDAiLCJlbnVtMSIsInRyZWUxIiwiZW51bTIiLCJ0cmVlMiIsImNvbXBhcmVfcmVzdWx0IiwibmV4dF9zdGF0ZSIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwiaW5jbHVzaXZlX2JvdW5kIiwic2lkZSIsIm1heWJlIiwidiQxIiwiaW5pdCQwIiwidiQyIiwidiQzIiwidiQ0IiwiZSQyIiwibWVyZ2VfdG9fc2VxdWVuY2UiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJ0MiQyIiwidDEkMiIsImlzX3N1YnNldCIsImFyZV9kaXNqb2ludCIsImFjY3UkMCIsImFjY3UkMSIsImZpbHQiLCJwYXJ0IiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJjaG9vc2VfZXhuIiwicG9zX3JlZiIsImdyb3VwX2J5IiwiZXF1aXYiLCJzZXQkMCIsImVxdWl2X2NsYXNzZXMiLCJub3RfZXF1aXZfeCIsImVxdWl2X3giLCJlcXVpdl9jbGFzc2VzJDAiLCJzdGFibGVfZGVkdXBfbGlzdCIsImxlZnRvdmVycyIsImFscmVhZHlfc2VlbiIsImFscmVhZHlfc2VlbiQwIiwibGVmdG92ZXJzJDAiLCJ0X29mX3NleHBfZGlyZWN0IiwiZWx0X2xzdCIsImVsX3NleHAiLCJpc19zdWJzZXQkMCIsInN1YnNldCIsInN1cGVyc2V0Iiwic2V4cF9vZl9lbHQiLCJpbnZhbGlkX2VsZW1lbnRzIiwiaW52YWxpZF9lbGVtZW50c19zZXhwIiwibGlrZSIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsImlzX3N1YnNldCQyIiwicGFydGl0aW9uX3RmJDAiLCJ0cmVlX2YiLCJ0cmVlX3QiLCJncm91cF9ieSQwIiwibnRoJDAiLCJyZW1vdmVfaW5kZXgkMCIsInRvX3NlcXVlbmNlJDAiLCJiaW5hcnlfc2VhcmNoJDAiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsImhhc2hfZm9sZF9kaXJlY3QiLCJ0X29mX3NleHBfZGlyZWN0JDAiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwiZWxlbWVudHMkMSIsIm1pbl9lbHQkMSIsIm1pbl9lbHRfZXhuJDEiLCJtYXhfZWx0JDEiLCJtYXhfZWx0X2V4biQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwiaXRlciQyIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJjb3VudCQxIiwic3VtJDEiLCJmaW5kJDEiLCJmaW5kX2V4biQxIiwiZmluZF9tYXAkMSIsImZvbGQkMSIsImZvbGRfdW50aWwkMSIsImZvbGRfcmlnaHQkMSIsImZpbHRlciQxIiwiZmlsdGVyX21hcCQwIiwicGFydGl0aW9uX3RmJDEiLCJpdGVyMiQxIiwibWVtJDEiLCJhZGQkMSIsInJlbW92ZSQxIiwidW5pb24kMSIsImludGVyJDEiLCJkaWZmJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiY29tcGFyZV9kaXJlY3QkMCIsImlzX3N1YnNldCQzIiwiYXJlX2Rpc2pvaW50JDEiLCJvZl9saXN0JDAiLCJvZl9zZXF1ZW5jZSQwIiwib2ZfYXJyYXkkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJudGgkMSIsInJlbW92ZV9pbmRleCQxIiwib2ZfdHJlZSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsImlzX3N1YnNldCQ0IiwidG9fdHJlZSQwIiwib2ZfdHJlZSQwIiwidF9vZl9zZXhwX2RpcmVjdCQxIiwiZW1wdHkkMCIsInNpbmdsZXRvbiQwIiwidW5pb25fbGlzdCQxIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQxIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX2xpc3QkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMSIsImZpbHRlcl9tYXAkMSIsImNvbXBhcmF0b3JfcyIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsInVuaW9uX2xpc3QkMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQyIiwib2Zfc29ydGVkX2FycmF5JDIiLCJvZl9saXN0JDIiLCJvZl9zZXF1ZW5jZSQyIiwib2ZfYXJyYXkkMiIsInN0YWJsZV9kZWR1cF9saXN0JDIiLCJmaWx0ZXJfbWFwJDIiLCJzZXhwX29mX21fdCIsIkVsdCIsIm1fdF9vZl9zZXhwIiwibV90X3NleHBfZ3JhbW1hciIsImNvbXBhcmVfbV90IiwiZXF1YWxfbV90IiwiaGFzaF9mb2xkX21fdCIsImhhc2hfbV90IiwiY29tcGFyYXRvciQwIiwiZW1wdHkkMiIsInNpbmdsZXRvbiQyIiwidW5pb25fbGlzdCQzIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQzIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDMiLCJvZl9zb3J0ZWRfYXJyYXkkMyIsIm9mX2xpc3QkMyIsIm9mX3NlcXVlbmNlJDMiLCJvZl9hcnJheSQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsIm1hcCQzIiwiZmlsdGVyX21hcCQzIiwib2ZfdHJlZSQxIiwidG9fdHJlZSQxIiwicmVwbGFjZSIsInNldF90ZW1wb3JhcmlseSIsInJlc3RvcmVfdG8iLCJzZXRzIiwic25hcHNob3QiLCJzZXRzX3RlbXBvcmFyaWx5IiwiYW5kX3ZhbHVlcyIsImluY19udW1fbXV0YXRpb25zIiwiZWx0c19pbmRleCIsImNoZWNrX2luZGV4X2V4biIsImVuc3VyZV9ub19tdXRhdGlvbiIsIm51bV9tdXRhdGlvbnMiLCJudW1fbXV0YXRpb25zXzAwMyIsImZyb250XzAwNSIsIm1hc2tfMDA3IiwibGVuZ3RoXzAwOSIsImVsdHNfMDExIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZnJvbnRfbm9uZW1wdHkiLCJsYXN0X25vbmVtcHR5IiwicGVlayIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwidF9yZXN1bHQiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcmlfaW5wbGFjZSIsInVucmVhY2hhYmxlX2NvZGUiLCJ6ZXJvJDAiLCJ6ZXJvJDEiLCJ0b19pbnRfdHJ1bmMiLCJ0b19pbnQzMl90cnVuYyIsIm9mX2ludDY0X3RydW5jIiwibmFtZSQwIiwib2ZfY29udGludWVfb3Jfc3RvcCIsInRvX2NvbnRpbnVlX29yX3N0b3AiLCJsZWZ0X3ZhbHVlIiwicmlnaHRfdmFsdWUiLCJ2YWx1ZXMiLCJsZWZ0X2RlZmF1bHQiLCJyaWdodF9kZWZhdWx0IiwicmlnaHQkMCIsImNvbXBhcmVfa2V5IiwidmwiLCJ2bCQwIiwidnIiLCJrMCIsImsxIiwibGQiLCJscmQiLCJscmQkMCIsInJkIiwicmxkIiwicmxkJDAiLCJyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50Iiwic2V4cF9vZl9rZXkiLCJmaW5kX2FuZF9hZGRfb3Jfc2V0IiwiZGF0YSIsImFkZF9vcl9zZXQiLCJkJDAiLCJhZGRfZXhuIiwiYWRkX2V4bl9pbnRlcm5hbCIsInNpbmdsZXRvbl90b190cmVlX2V4biIsImNvbGxhcHNlIiwiZ28iLCJhZGRfdW5jaGVja2VkIiwiZ28kMCIsInRvX3RyZWVfdW5jaGVja2VkIiwibWF4X2tleSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UiLCJidWlsZGVyIiwicHJldl9rZXkiLCJqb2luJDAiLCJsZCQwIiwibGskMCIsInJrIiwicmQkMCIsInJrJDAiLCJsayIsImNtcCQwIiwibWF5YmUkMCIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSIsImludG8iLCJib3VuZGFyeV9vcHQiLCJpbnNlcnRfaW50byIsInNwbGl0X3JhbmdlIiwibWlkX2FuZF9yaWdodCIsImxiJDEiLCJsYiQyIiwibWlkX2FuZF9yaWdodCQwIiwibGIiLCJsYiQwIiwibWlkJDAiLCJhZGRfbXVsdGkiLCJkYXRhJDAiLCJmaW5kX211bHRpIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJtaW5fdXBwZXIiLCJtYXhfbG93ZXIiLCJ1cHBlcl9wYXJ0X3dpdGhvdXRfbWluIiwiZ28kMSIsImNfbWluIiwiaW5pdCQxIiwiY19tYXgiLCJpbml0JDIiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInJhbmdlX3RvX2FsaXN0IiwiY29uY2F0X3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkMiIsImxlbmd0aCQzIiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwiZmlsdGVyX2tleXMiLCJwYXJ0aXRpb25fbWFwaSIsInBhaXIyIiwicGFpcjEiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMiIsImxlZnQkMiIsInJpZ2h0JDEiLCJrZXlzIiwib2ZfZm9sZGFibGVfZm9sZCIsImZvbGRhYmxlIiwicHJldl9kYXRhIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwibmV3X2RhdGEiLCJvZl9mb2xkYWJsZSIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2FsaXN0Iiwib2ZfYWxpc3Rfb3JfZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJvZl9mb2xkYWJsZV9tdWx0aSIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJ0b19hbGlzdCIsImtleV9vcmRlciIsIm1lcmdlX2xhcmdlX2ZpcnN0IiwibGVuZ3RoX2xhcmdlIiwidF9sYXJnZSIsInRfc21hbGwiLCJtZXJnZV9za2V3ZWQiLCJsZW5ndGgxIiwibGVuZ3RoMiIsInJlcGFja2FnZSIsIm1hcmtlciIsImNsb3Nlc3Rfa2V5IiwiZm91bmRfbWFya2VyIiwiZm91bmRfa2V5IiwiZm91bmRfdmFsdWUiLCJmb3VuZF92YWx1ZSQwIiwiZm91bmRfa2V5JDAiLCJyYW5rIiwibnVtX3RvX3NlYXJjaCIsInBhaXIiLCJwYWlyJDAiLCJiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCIsIm1heWJlX2JvdW5kIiwiaWZfZXhjbHVzaXZlIiwiaWZfaW5jbHVzaXZlIiwiZmluZF9ib3VuZCIsImJvdW5kJDAiLCJiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCQwIiwidXBwZXJfYm91bmQkMCIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwia2V5X29mX3NleHAiLCJ2YWx1ZV9vZl9zZXhwIiwiYWxpc3Rfc2V4cHMiLCJmb3VuZF9maXJzdF9rIiwiazJfc2V4cCIsInNleHBfb2ZfdmFsdWUiLCJlcnJvcl90cmVlIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJsaWtlMiIsImxpa2VfbWF5YmVfbm9fb3AiLCJvbGRfdCIsIm9sZF90cmVlIiwid2l0aF9zYW1lX2xlbmd0aCIsInNldCQxIiwiYWRkX2V4biQwIiwiYWRkX211bHRpJDAiLCJyZW1vdmVfbXVsdGkkMCIsImZpbmRfbXVsdGkkMCIsImNoYW5nZSQwIiwidXBkYXRlJDAiLCJpdGVyX2tleXMkMCIsIml0ZXJpX3VudGlsJDAiLCJmb2xkJDMiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlcmkkMCIsImZpbHRlcl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInN1YnJhbmdlIiwiaF9sIiwiaF9yIiwib3V0ZXJfam9pbmVkX2hlaWdodCIsIm1pZF9sZW5ndGgiLCJhcHBlbmQkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsInJhbmskMCIsInNleHBfb2ZfayIsInNleHBfb2ZfdiIsImhhc2hfZm9sZF9rZXkiLCJoYXNoX2ZvbGRfZGF0YSIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsInNldCQyIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJpdGVyX2tleXMkMSIsIml0ZXJpX3VudGlsJDEiLCJtYXBpJDEiLCJmb2xkJDQiLCJmb2xkMiQyIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwiY29tYmluZV9lcnJvcnMkMSIsImtleXMkMSIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzaSQxIiwiY291bnRpJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDAiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMiIsIm50aF9leG4kMCIsInJhbmskMSIsImtfb2Zfc2V4cCIsInZfb2Zfc2V4cCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UkMCIsIm1hcF9rZXlzJDAiLCJkdXAiLCJtYXBfa2V5c19leG4kMCIsImFkZF9leG4kMiIsIm9mX3RyZWUwIiwib2ZfdHJlZSQyIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2l0ZXJpJDEiLCJ0cmVlX2xlbmd0aCIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2ZfdHJlZSQzIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2FsaXN0X211bHRpJDIiLCJvZl9hbGlzdF9mb2xkJDIiLCJvZl9hbGlzdF9yZWR1Y2UkMiIsIm9mX2l0ZXJpJDIiLCJvZl9pdGVyaV9leG4kMiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMiIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDIiLCJvZl9zZXF1ZW5jZV9leG4kMiIsIm9mX3NlcXVlbmNlX211bHRpJDIiLCJvZl9zZXF1ZW5jZV9mb2xkJDIiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMiIsIm1hcF9rZXlzJDIiLCJtYXBfa2V5c19leG4kMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm1hcF9rZXlzJDMiLCJtYXBfa2V5c19leG4kMyIsInRyYW5zZmVyIiwicSIsInEkMCIsImZsb2F0X29mX2JpdHMiLCJiaXRzX29mX2Zsb2F0IiwiYnN3YXAxNiIsImJzd2FwMzIiLCJic3dhcDQ4IiwidG9fbmF0aXZlaW50X2V4biIsIndyYXBfZXhuIiwid3JhcF9tb2R1bG8iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsInNpZ25lZG5lc3MiLCJwb3Nfc3RyIiwiaW50NjMiLCJpbnQ2MyQwIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsInJlcHIiLCJvZl9pbnRfdHJ1bmMiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwidHJlZSQwIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJpbnZhcmlhbnRfa2V5IiwiaW52YXJpYW50X2RhdGEiLCJyZWFsX2xlbiIsIm5ld190IiwidDAiLCJuZXdfZGF0YSQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiZHVwZXMiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMiLCJzZXhwX29mX2RhdGEiLCJkX29mX3NleHAiLCJrX2dyYW1tYXIiLCJyb3ciLCJvbGQiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXlfZXhuIiwibWF5YmVfc2V0IiwidF9sZWZ0IiwidF9yaWdodCIsIm1lcmdlX2ludG8iLCJkc3RfZGF0YSIsImFjdGlvbiIsImRzdF9kYXRhJDAiLCJ0b19yZW1vdmUiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZmlsdGVyX21hcGlfaW5wbGFjZSIsIm1hcF9yZXN1bHRzIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwic2ltaWxhciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQwIiwiY3JlYXRlX21hcHBlZCQwIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQxIiwiY3JlYXRlX21hcHBlZCQxIiwiY3JlYXRlX3dpdGhfa2V5JDEiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMSIsImNyZWF0ZV93aXRoX2tleV9leG4kMSIsImdyb3VwJDEiLCJoYXNoYWJsZV9zIiwicG9seV9oYXNoYWJsZSIsInN0cmljdF9hZGQiLCJzdHJpY3RfYWRkX2V4biIsInN0cmljdF9yZW1vdmUiLCJzdHJpY3RfcmVtb3ZlX2V4biIsInNleHBfb2ZfZSIsImxhcmdlciIsInNtYWxsZXIiLCJvZl9oYXNodGJsX2tleXMiLCJoYXNodGJsIiwidG9faGFzaHRibCIsImVfb2Zfc2V4cCIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwicGkiLCJzcXJ0X3BpIiwic3FydF8ycGkiLCJldWxlciIsIm9mX2ludDYzIiwiaXJvdW5kX2xib3VuZCIsImlyb3VuZF91Ym91bmQiLCJpcm91bmRfdXAiLCJpcm91bmRfdXBfZXhuIiwiaXJvdW5kX2Rvd24iLCJpcm91bmRfZG93bl9leG4iLCJpcm91bmRfdG93YXJkc196ZXJvIiwiaXJvdW5kX3Rvd2FyZHNfemVyb19leG4iLCJyb3VuZF9uZWFyZXN0X2xiIiwicm91bmRfbmVhcmVzdF91YiIsIm9uZV91bHBfbGVzc190aGFuX2hhbGYiLCJhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCIsImlyb3VuZF9uZWFyZXN0XzMyIiwiaXJvdW5kX25lYXJlc3RfNjQiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzY2FsZSIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwiZXhwb25lbnRfbWFzazY0IiwiZXhwb25lbnRfbWFzayIsIm1hbnRpc3NhX21hc2siLCJtYW50aXNzYV9tYXNrNjQiLCJtYW50aXNzYV9iaXRzIiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJvcHQiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInN0aCIsInN0aCQwIiwicHJpbnRfbG9uZ2lkZW50IiwibG9uZ3ByZWZpeCIsInMkMCIsInkiLCJsb25naWRlbnRfbG9jIiwiY29uc3RhbnQiLCJpIiwibSIsImkkMCIsImkkMSIsImRlbGltIiwiaSQyIiwibSQwIiwibXV0YWJsZV9mbGFnIiwidmlydHVhbF9mbGFnIiwicmVjX2ZsYWciLCJyZiIsIm5vbnJlY19mbGFnIiwiZGlyZWN0aW9uX2ZsYWciLCJwcml2YXRlX2ZsYWciLCJjb25zdGFudF9zdHJpbmciLCJ0eXZhciIsInR5dmFyX2xvYyIsInN0cmluZ19xdW90IiwiY2xhc3NfcGFyYW1zX2RlZiIsImwiLCJ0eXBlX3BhcmFtIiwidHlwZV93aXRoX2xhYmVsIiwibGFiZWwiLCJjb3JlX3R5cGUxIiwiY29yZV90eXBlIiwiYXR0cmlidXRlcyIsImN0MiIsImN0MSIsImN0Iiwic2wiLCJjdCQwIiwiY3QkMSIsImwkMCIsImxpIiwibCQxIiwiY29yZV9maWVsZF90eXBlIiwiZmllbGRfdmFyIiwibCQyIiwibGkkMCIsImxvdyIsImNsb3NlZCIsImwkMyIsImZpcnN0X2lzX2luaGVyaXQiLCJ0eXBlX3ZhcmlhbnRfaGVscGVyIiwiY3RsIiwiY3N0cnMiLCJsaWQiLCJhdXgiLCJleHRlbnNpb24iLCJwYXR0ZXJuJDEiLCJwYXR0ZXJuIiwicCIsInAyIiwicDEiLCJvcnBhdHMiLCJwYXR0ZXJuMSIsInBhdHRlcm4xJDAiLCJwYXR0ZXJuX2xpc3RfaGVscGVyIiwicGF0MiIsInBhdDEiLCJzaW1wbGVfcGF0dGVybiIsInNpbXBsZV9wYXR0ZXJuJDAiLCJwbyIsInZsIiwiYzIiLCJjMSIsImxvbmdpZGVudF94X3BhdHRlcm4iLCJwJDAiLCJwJDEiLCJwJDIiLCJ3aXRoX3BhcmVuIiwibGFiZWxfZXhwIiwicmVzdCIsInR4dCQwIiwibyQwIiwic3VnYXJfZXhwciIsImFyZ3MiLCJpZCIsImxhYiIsInByaW50X2luZGV4b3AiLCJwYXRoX3ByZWZpeCIsImFzc2lnbiIsImxlZnQiLCJwcmludF9pbmRleCIsImluZGljZXMiLCJyZW1fYXJncyIsInByaW50X3BhdGgiLCJzaW1wbGVfZXhwciIsImUkMCIsInBhdGgiLCJmdW5jIiwib3RoZXJfYXJncyIsImEkMCIsImFzc2lnbiQwIiwicHJpbnQiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJpbmRleGVzIiwicmVzdCQzIiwiaTMiLCJpMiIsImkxIiwicmVzdCQ0IiwiaTIkMCIsImkxJDAiLCJyZXN0JDUiLCJpMSQxIiwibXVsdGlfaW5kaWNlcyIsIm4iLCJraW5kIiwicmlnaHQkMCIsImxlZnQkMCIsImwkNSIsImUkNyIsImFyZzEiLCJhcmcyIiwibGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIiwicyQxIiwicyQyIiwiZXhwcmVzc2lvbjIiLCJlbyQwIiwiZW8kMSIsImwkNiIsImUyJDEiLCJlMSQxIiwibGkkMSIsImUkOCIsInMkMyIsImwkNyIsInN0cmluZ194X2V4cHJlc3Npb24iLCJlJDkiLCJlJDEwIiwiZSQxMSIsImUkMTIiLCJjYXNlX2xpc3QiLCJlMCIsImUkMSIsImwkNCIsImUkMiIsImUkMyIsIm1lIiwibW9kdWxlX2V4cHIiLCJlJDQiLCJjZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImUkNSIsImUkNiIsImJvZHkiLCJhbmRzIiwibGV0JDAiLCJiaW5kaW5nX29wIiwiZW8iLCJlMiIsImV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSIsImUyJDAiLCJlMSQwIiwibHN0IiwiYmluZGluZ3MiLCJjcyIsImNsYXNzX3N0cnVjdHVyZSIsImV4cHJlc3Npb24yJDAiLCJzaW1wbGVfZXhwciQwIiwibG9uZ2lkZW50X3hfZXhwcmVzc2lvbiIsImUzIiwiZGYiLCJleHByZXNzaW9uIiwiY3RvMSIsInBheWxvYWQiLCJpdGVtX2F0dHJpYnV0ZXMiLCJmbG9hdGluZ19hdHRyaWJ1dGUiLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsIml0ZW1fZXh0ZW5zaW9uIiwiZXhjZXB0aW9uX2RlY2xhcmF0aW9uIiwiY2xhc3NfdHlwZV9maWVsZCIsImNsYXNzX3R5cGUiLCJ2ZiIsIm1mIiwidmYkMCIsInBmIiwiY2xhc3Nfc2lnbmF0dXJlIiwiY2wiLCJjbyIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJrd2QiLCJjbGFzc19maWVsZCIsInNvIiwiY2UiLCJvdmYiLCJjbGFzc19leHByIiwib3ZmJDAiLCJvdmYkMSIsImJpbmQiLCJiaW5kaW5nIiwiY2UkMCIsImNlJDEiLCJtb2R1bGVfdHlwZSQxIiwibW9kdWxlX3R5cGUiLCJtdDIkMCIsIm10MiIsIm10MSIsIm1vZHVsZV90eXBlMSIsIm10IiwidGQiLCJscyQwIiwidHlwZV9kZWNsYXJhdGlvbiIsImxpMiIsIm10eSIsIm10eSQwIiwibGkkMiIsInRkJDAiLCJscyQxIiwibGkkMyIsImxzJDIiLCJsaTIkMCIsImxpJDQiLCJtb2R1bGVfdHlwZTEkMCIsInNpZ25hdHVyZV9pdGVtIiwic2lnbmF0dXJlIiwidmQiLCJpbnRybyIsInR5cGVfZGVmX2xpc3QiLCJ0ZSIsInR5cGVfZXh0ZW5zaW9uIiwiZWQiLCJwbWQiLCJhbGlhcyIsInBtcyIsImRlY2xzIiwib3B0JDAiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwieDAiLCJjb3B5X3N0cnVjdHVyZSIsIngwJDAiLCJjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSIsInBkaXJfbG9jIiwiY29weV9sb2NhdGlvbiIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IiwiY29weV9sb2MiLCJwZGlyYV9sb2MiLCJwZGlyYV9kZXNjIiwiY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyIsIngxIiwieDAkMSIsImNvcHlfTG9uZ2lkZW50X3QiLCJ4MCQyIiwiY29weV9leHByZXNzaW9uIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsImNvcHlfYXR0cmlidXRlcyIsImNvcHlfbG9jYXRpb25fc3RhY2siLCJjb3B5X2V4cHJlc3Npb25fZGVzYyIsImNvcHlfY29uc3RhbnQiLCJ4MiIsImNvcHlfdmFsdWVfYmluZGluZyIsImNvcHlfcmVjX2ZsYWciLCJjb3B5X2Nhc2UiLCJ4MyIsIngyJDAiLCJ4MSQwIiwieDAkMyIsImNvcHlfcGF0dGVybiIsImNvcHlfYXJnX2xhYmVsIiwieDEkMSIsIngwJDQiLCJ4MSQyIiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDAkNyIsIngxJDQiLCJ4MCQ4IiwieDEkNSIsIngwJDkiLCJ4MSQ2IiwieDAkMTAiLCJ4MSQ3IiwieDAkMTEiLCJ4MiQxIiwieDEkOCIsIngwJDEyIiwieDAkMTMiLCJ4MiQyIiwieDEkOSIsIngwJDE0IiwieDEkMTAiLCJ4MCQxNSIsIngxJDExIiwieDAkMTYiLCJ4NCIsIngzJDAiLCJ4MiQzIiwieDEkMTIiLCJ4MCQxNyIsImNvcHlfZGlyZWN0aW9uX2ZsYWciLCJ4MSQxMyIsIngwJDE4IiwiY29weV9jb3JlX3R5cGUiLCJ4MiQ0IiwieDEkMTQiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJjb3B5X2xhYmVsIiwieDAkMjEiLCJ4MSQxNiIsIngwJDIyIiwieDAkMjMiLCJ4MiQ1IiwieDEkMTciLCJ4MCQyNCIsImNvcHlfbW9kdWxlX2V4cHIiLCJ4MSQxOCIsIngwJDI1IiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJ4MCQyNiIsIngwJDI3IiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwiY29weV9jbGFzc19zdHJ1Y3R1cmUiLCJ4MSQyMCIsIngwJDMwIiwieDAkMzEiLCJ4MSQyMSIsIngwJDMyIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwieDAkMzMiLCJjb3B5X2xldG9wIiwieDAkMzQiLCJjb3B5X2V4dGVuc2lvbiIsImNvcHlfYmluZGluZ19vcCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfY29uc3RyYWludCIsInB2Yl9leHByIiwicHZiX3BhdCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwcGF0X2xvYyIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiIsImdyb3VuZCIsImNvZXJjaW9uJDAiLCJwdHlwX2xvYyQwIiwidHlwJDMiLCJwdmJfcGF0JDMiLCJncm91bmQkMCIsInBleHBfbG9jJDAiLCJwdmJfZXhwciQzIiwicHZiX2V4cHIkMSIsInB2Yl9wYXQkMSIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsInR5cCQyIiwidHlwJDEiLCJwdHlwX2xvYyIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2Rlc2MiLCJjb3B5X3BhdHRlcm5fZGVzYyIsImNvcHlfY2xvc2VkX2ZsYWciLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJjb3B5X21vZHVsZV90eXBlIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJjb3B5X21vZHVsZV90eXBlX2Rlc2MiLCJjb3B5X3dpdGhfY29uc3RyYWludCIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsImNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyIsImNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIiwiY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIiwiY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIiwiY29weV9jbGFzc19kZXNjcmlwdGlvbiIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwiY29weV9jbGFzc190eXBlX2Rlc2MiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIiwiY29weV92aXJ0dWFsX2ZsYWciLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImNvcHlfcG9zaXRpb24iLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmciLCJ0eV9leHQiLCJydCQwIiwidmFsdWVfcGF0dGVybiIsInZhbHVlX2V4cCIsImlubmVyX2UiLCJleHRlcm5fY3QiLCJleHRlcm5fY3QkMCIsInB0X3R5dmFycyQwIiwid2l0aF9jb25zdHJhaW50IiwidHlfdmFycyIsInB2Yl9jb25zdHJhaW50JDAiLCJleHByJDAiLCJjb2VyY2UiLCJnciIsImV4cHIkMSIsInB2Yl9jb25zdHJhaW50JDEiLCJoZCIsInEiLCJpc191bml0IiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV9leHByIiwiY29weV9jYXNlcyIsImNvcHlfcGF0IiwiY29weV90eXAiLCJtYXBfb3B0aW9uIiwiY29weV9vcHRpb24iLCJjb3B5X2Jvb2wiLCJjb3B5X2xvbmdpZGVudCIsIngwX2xvYyIsIndyYXAiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwiZmllbGRzIiwiY3R5IiwibG9jJDEiLCJub2xvYyIsImZyb21fbG9jIiwicG9zIiwiaW5qZWN0X3ByZWRlZl9vcHRpb24iLCJkIiwiaWRlbnQiLCJ0eXBlX2RlY2xhcmF0aW9ucyIsInJlY2ZsYWciLCJ0eXBlcyIsImV4dHJhY3RfcHJlZGVmX29wdGlvbiIsImlzX25vbnJlYyIsImF0dHIiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImludDMyIiwib3B0Iiwic3RoIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiY2hhciQwIiwiYyIsInN0cmluZyIsInF1b3RhdGlvbl9kZWxpbWl0ZXIiLCJzIiwibG9jIiwibWsiLCJuYW1lIiwicGF5bG9hZCIsIm1rJDAiLCJkIiwic3RoJDAiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwibWF0Y2giLCJ0cnkkMCIsInR1cGxlJDEiLCJjb25zdHJ1Y3QkMCIsInZhcmlhbnQkMSIsInJlY29yZCQwIiwic2V0ZmllbGQiLCJhcnJheSQwIiwiaWZ0aGVuZWxzZSIsInNlcXVlbmNlIiwid2hpbGUkMCIsImZvciQwIiwiY29uc3RyYWludCQwIiwiY29lcmNlIiwic2VuZCIsIm5ldyQwIiwic2V0aW5zdHZhciIsIm92ZXJyaWRlIiwibGV0bW9kdWxlIiwibGV0ZXhjZXB0aW9uIiwiYXNzZXJ0IiwibGF6eSQwIiwicG9seSQwIiwib2JqZWN0JDAiLCJuZXd0eXBlIiwicGFjayIsIm9wZW4kMCIsImxldG9wIiwiYW5kcyIsImJvZHkiLCJleHRlbnNpb24kMSIsInVucmVhY2hhYmxlIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJtayQzIiwiYXR0ciQyIiwiaWRlbnQkMCIsImFsaWFzJDEiLCJzaWduYXR1cmUiLCJmdW5jdG9yIiwid2l0aCQwIiwidHlwZW9mJDAiLCJleHRlbnNpb24kMiIsIm1rJDQiLCJhdHRyJDMiLCJpZGVudCQxIiwic3RydWN0dXJlIiwiZnVuY3RvciQwIiwiYXBwbHkkMCIsIm0xIiwibTIiLCJjb25zdHJhaW50JDEiLCJtIiwibXR5IiwidW5wYWNrJDAiLCJleHRlbnNpb24kMyIsIm1rJDUiLCJ2YWx1ZSIsInR5cGUkMCIsInJlY19mbGFnIiwidHlwZV9zdWJzdCIsInR5cGVfZXh0ZW5zaW9uIiwiZXhjZXB0aW9uJDAiLCJtb2R1bGUiLCJtb2Rfc3Vic3QiLCJyZWNfbW9kdWxlIiwibW9kdHlwZSIsIm9wZW4kMSIsImluY2x1ZGUiLCJjbGFzcyQxIiwiY2xhc3NfdHlwZSIsImV4dGVuc2lvbiQ0IiwiYXR0cmlidXRlIiwibWskNiIsImV2YWwkMCIsInZhbHVlJDAiLCJwcmltaXRpdmUiLCJ0eXBlJDEiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiZXhjZXB0aW9uJDEiLCJtb2R1bGUkMCIsInJlY19tb2R1bGUkMCIsIm1vZHR5cGUkMCIsIm9wZW4kMiIsImNsYXNzJDIiLCJjbGFzc190eXBlJDAiLCJpbmNsdWRlJDAiLCJleHRlbnNpb24kNSIsImF0dHJpYnV0ZSQwIiwibWskNyIsImF0dHIkNCIsImNvbnN0ciQwIiwic3RydWN0dXJlJDAiLCJmdW4kMCIsImFwcGx5JDEiLCJsZXQkMSIsImNvbnN0cmFpbnQkMiIsImV4dGVuc2lvbiQ2Iiwib3BlbiQzIiwibWskOCIsImF0dHIkNSIsImNvbnN0ciQxIiwic2lnbmF0dXJlJDAiLCJhcnJvdyQwIiwiZXh0ZW5zaW9uJDciLCJvcGVuJDQiLCJtayQ5IiwiaW5oZXJpdCIsInZhbCIsIm1ldGhvZCIsImNvbnN0cmFpbnQkMyIsImV4dGVuc2lvbiQ4IiwiYXR0cmlidXRlJDEiLCJhdHRyJDYiLCJtayQxMCIsImluaGVyaXQkMCIsInZhbCQwIiwibWV0aG9kJDAiLCJjb25zdHJhaW50JDQiLCJpbml0aWFsaXplciIsImV4dGVuc2lvbiQ5IiwiYXR0cmlidXRlJDIiLCJ2aXJ0dWFsIiwiY3QiLCJjb25jcmV0ZSIsImF0dHIkNyIsIm1rJDExIiwic3RoJDEiLCJwcmltIiwibWskMTIiLCJtayQxMyIsInN5biIsIm1rJDE0IiwibWskMTUiLCJleHByIiwibWskMTYiLCJtayQxNyIsIm1leHByIiwibWskMTgiLCJtayQxOSIsInZpcnQiLCJzdGgkMiIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsInN0aCQzIiwia2luZCIsInN0aCQ0IiwicHJpdiIsImNvbnN0cnVjdG9yIiwicmVzIiwidmFycyIsImFyZ3MiLCJmaWVsZCQwIiwibXV0IiwibWskMjEiLCJwYXRoIiwiY29uc3RydWN0b3JzIiwibWtfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IkMCIsImRlY2wiLCJyZWJpbmQiLCJsaWQiLCJtayQyMiIsInNlbGYiLCJmaWVsZHMiLCJtayQyMyIsIm1rJDI0IiwidGFnIiwiY29uc3QkMCIsInR5cyIsImluaGVyaXQkMSIsInR5IiwibWskMjUiLCJ0YWckMCIsImluaGVyaXQkMiIsInN0cmluZ192ZXJzaW9uIiwic3RyaW5nX3ZlcnNpb24kMCIsInN0cmluZ192ZXJzaW9uJDEiLCJzdHJpbmdfdmVyc2lvbiQyIiwic3RyaW5nX3ZlcnNpb24kMyIsInN0cmluZ192ZXJzaW9uJDQiLCJzdHJpbmdfdmVyc2lvbiQ1Iiwic3RyaW5nX3ZlcnNpb24kNiIsInN0cmluZ192ZXJzaW9uJDciLCJzdHJpbmdfdmVyc2lvbiQ4Iiwic3RyaW5nX3ZlcnNpb24kOSIsInN0cmluZ192ZXJzaW9uJDEwIiwic3RyaW5nX3ZlcnNpb24kMTEiLCJzdHJpbmdfdmVyc2lvbiQxMiIsInN0cmluZ192ZXJzaW9uJDEzIiwibWlncmF0aW9uX2luZm8iLCJpZCIsIm1pZ3JhdGlvbl9pZGVudGl0eSIsImNvbXBvc2UiLCJnIiwibWlncmF0aW9uX2Z1bmN0aW9ucyIsImlzX3VuZGVmaW5lZCIsImltbWVkaWF0ZV9taWdyYXRpb24iLCJBIiwiZGlyZWN0aW9uIiwidmVyc2lvbiIsInRvIiwiZnVucyIsIkIiLCJtJDEiLCJUbyIsImFiIiwidG8yIiwiYmMiLCJtJDAiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwiY29weV9zaWduYXR1cmVfaXRlbSIsImNvcHlfbW9kdWxlX3R5cGUiLCJjb3B5X21vZHVsZV9leHByIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJjb3B5X2NsYXNzX3R5cGUiLCJjb3B5X2NsYXNzX2ZpZWxkIiwiY29weV9jbGFzc19leHByIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jYXNlIiwiY29weV9wYXR0ZXJuIiwiY29weV9leHByZXNzaW9uIiwiY29weV9jb3JlX3R5cGUiLCJjb3B5X3RvcGxldmVsX3BocmFzZSIsImNvcHlfc2lnbmF0dXJlIiwiY29weV9zdHJ1Y3R1cmUiLCJtaWdyYXRpb25faW5mbyQwIiwibWlncmF0aW9uX2luZm8kMSIsIm1pZ3JhdGlvbl9pbmZvJDIiLCJtaWdyYXRpb25faW5mbyQzIiwibWlncmF0aW9uX2luZm8kNCIsIm1pZ3JhdGlvbl9pbmZvJDUiLCJtaWdyYXRpb25faW5mbyQ2IiwibWlncmF0aW9uX2luZm8kNyIsIm1pZ3JhdGlvbl9pbmZvJDgiLCJtaWdyYXRpb25faW5mbyQ5IiwibWlncmF0aW9uX2luZm8kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwibWlncmF0aW9uX2luZm8kMTMiLCJhbGxfdmVyc2lvbnMiLCJ2ZXJzaW9uJDAiLCJ2ZXJzaW9uJDEiLCJ2ZXJzaW9uJDIiLCJ2ZXJzaW9uJDMiLCJ2ZXJzaW9uJDQiLCJ2ZXJzaW9uJDUiLCJ2ZXJzaW9uJDYiLCJ2ZXJzaW9uJDciLCJ2ZXJzaW9uJDgiLCJ2ZXJzaW9uJDkiLCJ2ZXJzaW9uJDEwIiwidmVyc2lvbiQxMSIsInZlcnNpb24kMTIiLCJ2ZXJzaW9uJDEzIiwiZnJvbV9tYWdpYyIsIm1hZ2ljIiwiYWxsX3ZlcnNpb25zX3RvcF9kb3duIiwidGFpbCIsIlZlcnNpb24iLCJvZl9vY2FtbCIsIm5vZGUiLCJ5IiwidG9fb2NhbWwiLCJvZl9vY2FtbF9tYXBwZXIiLCJpdGVtIiwiY3R4dCIsInRvX29jYW1sX21hcHBlciIsImltcGxlbWVudGF0aW9uIiwibGV4YnVmIiwiaW50ZXJmYWNlJDAiLCJ0b3BsZXZlbF9waHJhc2UiLCJ1c2VfZmlsZSIsImV4cHJlc3Npb24iLCJwYXR0ZXJuIiwiZGVmYXVsdF9wcmludF93YXJuaW5nIiwiYWJvdXRfaXRlX2JyYW5jaF9yZWYiLCJjYXJlX2Fib3V0X2l0ZV9icmFuY2giLCJhYm91dF9pdGVfYnJhbmNoIiwic2VsZl8xIiwiYSQwIiwiYSQxIiwiYSQyIiwiYiQwIiwiYSQzIiwiYSQ0IiwiYSQ1IiwiYSQ2IiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwicGRpcl9sb2MiLCJwZGlyX2FyZyIsInBkaXJfbmFtZSIsInBkaXJfbmFtZSQwIiwicGRpcl9hcmckMCIsInBkaXJfbG9jJDAiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1iX25hbWUkMCIsInBtYl9leHByJDAiLCJwbWJfYXR0cmlidXRlcyQwIiwicG1iX2xvYyQwIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2V4cHIiLCJwdmJfcGF0IiwicHZiX3BhdCQwIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJwdmJfbG9jJDAiLCJiJDEiLCJiJDIiLCJiJDMiLCJiJDQiLCJhJDciLCJhJDgiLCJhJDkiLCJhJDEwIiwiYSQxMSIsImEkMTIiLCJhJDEzIiwiYSQxNCIsImEkMTUiLCJhJDE2IiwiYSQxNyIsImEkMTgiLCJhJDE5IiwiYSQyMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImIkNSIsImEkMjciLCJhJDI4IiwiYiQ2IiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwiYiQ3IiwiYiQ4IiwiYiQ5IiwiYiQxMCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwaW5jbF9tb2QkMCIsInBpbmNsX2xvYyQwIiwicGluY2xfYXR0cmlidXRlcyQwIiwicG9wZW5fYXR0cmlidXRlcyIsInBvcGVuX2xvYyIsInBvcGVuX292ZXJyaWRlIiwicG9wZW5fZXhwciIsInBvcGVuX2V4cHIkMCIsInBvcGVuX292ZXJyaWRlJDAiLCJwb3Blbl9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJhJDI5IiwiYSQzMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsInBjZl9hdHRyaWJ1dGVzIiwicGNmX2xvYyIsInBjZl9kZXNjIiwicGNmX2Rlc2MkMCIsInBjZl9sb2MkMCIsInBjZl9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJkJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJkJDEiLCJkJDIiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsInBjc2lnX3NlbGYkMCIsInBjc2lnX2ZpZWxkcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwiYW5kcyQwIiwiYm9keSQwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImIkMTEiLCJiJDEyIiwiYiQxMyIsImIkMTQiLCJiJDE1IiwiYiQxNiIsImIkMTciLCJiJDE4IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYSQzMSIsImEkMzIiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInByZl9hdHRyaWJ1dGVzIiwicHJmX2xvYyIsInByZl9kZXNjJDAiLCJwcmZfbG9jJDAiLCJwcmZfYXR0cmlidXRlcyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJ0eHQiLCJ0eHQkMCIsImxvYyQwIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImxvY19zdGFydCQwIiwibG9jX2VuZCQwIiwibG9jX2dob3N0JDAiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJzZWxmXzIiLCJzZWxmXzMiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwiYWNjJDgiLCJhY2MkOSIsImFjYyQxMCIsImFjYyQxMSIsImFjYyQxMiIsImFjYyQxMyIsImFjYyQxNCIsImFjYyQxNSIsImFjYyQxNiIsImFjYyQxNyIsImFjYyQxOCIsImFjYyQxOSIsImFjYyQyMCIsImFjYyQyMSIsImFjYyQyMiIsImFjYyQyMyIsImFjYyQyNCIsImFjYyQyNSIsImFjYyQyNiIsImFjYyQyNyIsImFjYyQyOCIsImFjYyQyOSIsImFjYyQzMCIsImFjYyQzMSIsImFjYyQzMiIsImFjYyQzMyIsImFjYyQzNCIsImFjYyQzNSIsImFjYyQzNiIsImFjYyQzNyIsImFjYyQzOCIsImFjYyQzOSIsImFjYyQ0MCIsImFjYyQ0MSIsImFjYyQ0MiIsImFjYyQ0MyIsImFjYyQ0NCIsImFjYyQ0NSIsImFjYyQ0NiIsImFjYyQ0NyIsImFjYyQ0OCIsImFjYyQ0OSIsImFjYyQ1MCIsImFjYyQ1MSIsImFjYyQ1MiIsImFjYyQ1MyIsImFjYyQ1NCIsImFjYyQ1NSIsInNlbGZfNCIsImFjYyQ1NiIsImFjYyQ1NyIsImFjYyQ1OCIsImFjYyQ1OSIsImFjYyQ2MCIsImFjYyQ2MSIsImFjYyQ2MiIsImFjYyQ2MyIsImFjYyQ2NCIsImFjYyQ2NSIsImFjYyQ2NiIsImFjYyQ2NyIsImFjYyQ2OCIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInRvX2V4dGVuc2lvbiIsImVycm9yIiwic3ViX21zZ3MiLCJtYWluX21zZyIsImVycl9leHRlbnNpb25fbmFtZSIsIm1rX3N0cmluZ19jb25zdGFudCIsImV4dGVuc2lvbl9vZl9zdWJfbXNnIiwic3ViX21zZyIsInJlZ2lzdGVyX2Vycm9yX29mX2V4biIsIm1lc3NhZ2UiLCJzZXRfbWVzc2FnZSIsIm1ha2UiLCJzdWIiLCJzdWIkMCIsInVwZGF0ZV9sb2MiLCJnZXRfbG9jYXRpb24iLCJvZl9leG4iLCJyYWlzZSIsInByaW50IiwiZGlmZl9jb21tYW5kIiwib3B0IiwiZmlsZTEiLCJmaWxlMiIsInN0aCIsImV4dHJhX3BhdGRpZmZfYXJncyIsInN0aCQwIiwidXNlX2NvbG9yIiwiZXhlYyIsImNtZCIsImNtZCQwIiwibiIsInMiLCJhcmdzIiwiZXJyX2NvZGUiLCJhbGwiLCJyZWdpc3RlciIsIm5hbWUiLCJkZXJpdmVyIiwibG9va3VwIiwiZHJ2IiwiZGVyaXZlcnMiLCJhY2MiLCJ4Iiwic2VsZl8xIiwiZiIsIngkMCIsInNlbGZfMiIsImFjYyIsInNlbGZfMyIsImEiLCJyIiwiaSIsImxvb3AiLCJsIiwibCQwIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsInNlbGZfNCIsImxlbiIsImEkMCIsIngkMSIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInJlc19oZWFkIiwicmVzX3RhaWwiLCJyZXMiLCJmbGFncyQwIiwiZmxhZ3MiLCJjb21wYXJlIiwiZXF1YWwiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwibWluIiwibWF4IiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJtaW4kMCIsIm1heCQwIiwidG9fc3RyaW5nIiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsIm1pbiQxIiwibWF4JDEiLCJzdWJfc3RyaW5nIiwidCIsInBvcyIsImxlbiIsImJsaXRfc3RyaW5nIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwibWluJDIiLCJtYXgkMiIsInByb3RlY3R4IiwieCIsImYiLCJmaW5hbGx5JDAiLCJ5IiwiZXhuJDAiLCJleG4iLCJ0b19zdHJpbmckMSIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJtaW4kMyIsIm1heCQzIiwiaWQiLCJzZXQiLCJrZXkiLCJkYXRhIiwiYWRkIiwiYWRkX2V4biIsImZpbmRfb3B0IiwiZmluZF9vcl9hZGQiLCJkZWZhdWx0JDAiLCJkYXRhJDAiLCJhZGRfYWxpc3QiLCJhbGlzdCIsImFsaXN0JDAiLCJhbGlzdCQxIiwib2ZfYWxpc3QiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJjcmVhdGUkMCIsIm9wdCIsImZpbGUiLCJzdGgiLCJiaW5hcnkiLCJ3aXRoX2ZpbGUiLCJmaWxlbmFtZSIsImlucHV0X2FsbCIsImJ1ZiIsImNoYXIkMCIsInJlYWRfYWxsIiwibWF4X2ludCIsInRvX3N0cmluZyQyIiwiY29tcGFyZSQ1IiwiZXF1YWwkNSIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsIm1pbiQ0IiwibWF4JDQiLCJtZXJnZSIsInJlbW92ZV9hc3NvYyIsInJlbW92ZV9hc3NxIiwicmV2X21hcGkiLCJsaXN0IiwibGlzdCQwIiwiaSIsImFjYyIsInRhaWwiLCJoZWFkIiwiYWNjJDAiLCJpJDAiLCJmb2xkX3JpZ2h0MiIsImxpc3QxIiwibGlzdDIiLCJpbml0IiwibWFwJDAiLCJtYXBpJDAiLCJmb2xkX3JpZ2h0JDAiLCJhcHBlbmQiLCJjb25jYXQkMCIsInJldl9jb21iaW5lIiwiY29tYmluZSIsInNwbGl0IiwieXMiLCJ4cyIsIm1hcDIiLCJwYXJ0aXRpb25fbWFwIiwicCIsImwiLCJsZWZ0IiwicmlnaHQiLCJsJDAiLCJ2IiwidiQwIiwiaW5pdCQwIiwicG9zJDAiLCJpc19lbXB0eSIsInJldl9maWx0ZXJfb3B0Iiwib3B0aW9uIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJzb21lIiwiZmluZF9tYXBfZXhuIiwibGFzdCIsInJlc3QiLCJzcGxpdF93aGlsZSIsImZpbmRfYV9kdXAiLCJzZXQkMSIsInNldCQwIiwiYXNzb2Nfb3B0IiwiaXRlciQyIiwiaXNfc29tZSIsIml0ZXIkMyIsIm1hcCQxIiwidmFsdWUiLCJ0b19saXN0IiwiYmluZCIsImEiLCJlIiwibWFwJDIiLCJtYXBfZXJyb3IiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJoYW5kbGVfZXJyb3IiLCJzeW1ib2wkMzUiLCJxMiIsInQyIiwicTEiLCJ0MSIsImhkJDAiLCJ0b19saXN0JDAiLCJxIiwibWFwJDMiLCJjcmVhdGUkMSIsInN0aCQwIiwic3RoJDEiLCJmYWlsX2lmX2V4aXN0cyIsInN0aCQyIiwicGVybSIsImZsYWdzJDEiLCJmbGFncyQyIiwid2l0aF9maWxlJDAiLCJ3cml0ZV9hbGwiLCJpc19lbXB0eSQwIiwicHJlZml4Iiwic3VmZml4IiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImlzX3ByZWZpeCIsImlzX3N1ZmZpeCIsInN1ZmZpeF9vZmZzZXQiLCJwb3MkMSIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiaW5kZXhfb3B0JDAiLCJyaW5kZXhfb3B0JDAiLCJpbmRleF9mcm9tX29wdCQwIiwicmluZGV4X2Zyb21fb3B0JDAiLCJsc3BsaXQyIiwib24iLCJjYXBpdGFsaXplX2FzY2lpJDAiLCJsb3dlcmNhc2VfYXNjaWkkMSIsInVuY2FwaXRhbGl6ZV9hc2NpaSQwIiwic3BsaXRfb25fY2hhciQwIiwic2VwIiwiY29tcGFyZSQ3IiwiZXF1YWwkNyIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsIm1pbiQ1IiwibWF4JDUiLCJmaW5kX29wdCQxIiwic3ltYm9sJDQyIiwib3V0cHV0Iiwib2MiLCJieXRlcyIsIm91dHB1dF9zdWJzdHJpbmciLCJzdHJpbmciLCJpbl9maWxlIiwibmFtZSIsImxvYyIsInNldF9maWxlbmFtZSIsImZuIiwibG9jX3N0YXJ0IiwibG9jX2VuZCIsIm5vbmUiLCJpbml0IiwibGV4YnVmIiwiZm5hbWUiLCJyYWlzZV9lcnJvcmYiLCJmbXQiLCJyZXBvcnRfZXhjZXB0aW9uIiwib2ZfbGV4YnVmIiwicHJpbnQiLCJwcGYiLCJ0IiwiY29tcGFyZV9wb3MiLCJwMSIsInAyIiwiY29sdW1uIiwicCIsIm4iLCJtaW5fcG9zIiwibWF4X3BvcyIsImNvbXBhcmUiLCJsb2MxIiwibG9jMiIsImNyZWF0ZWYiLCJzdHIiLCJlcnJvcl9leHRlbnNpb25mIiwiZSIsImZhaWwiLCJleHBlY3RlZCIsImF0dHJpYnV0ZSIsInBheWxvYWQiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsInBjbF9jb25zdHIiLCJ4MCIsIngxIiwicGNsX3N0cnVjdHVyZSIsInBjbF9mdW4iLCJ4MiIsIngzIiwicGNsX2FwcGx5IiwicGNsX2xldCIsInBjbF9jb25zdHJhaW50IiwicGNsX2V4dGVuc2lvbiIsInBjbF9vcGVuIiwicGNmX2luaGVyaXQiLCJwY2ZfdmFsIiwicGNmX21ldGhvZCIsInBjZl9jb25zdHJhaW50IiwicGNmX2luaXRpYWxpemVyIiwicGNmX2F0dHJpYnV0ZSIsInBjZl9leHRlbnNpb24iLCJjbGFzc19pbmZvcyIsInZpcnQiLCJwYXJhbXMiLCJleHByIiwiY2xhc3Nfc2lnbmF0dXJlIiwic2VsZiIsImZpZWxkcyIsImNsYXNzX3N0cnVjdHVyZSIsInBjdHlfY29uc3RyIiwicGN0eV9zaWduYXR1cmUiLCJwY3R5X2Fycm93IiwicGN0eV9leHRlbnNpb24iLCJwY3R5X29wZW4iLCJwY3RmX2luaGVyaXQiLCJwY3RmX3ZhbCIsInBjdGZfbWV0aG9kIiwicGN0Zl9jb25zdHJhaW50IiwicGN0Zl9hdHRyaWJ1dGUiLCJwY3RmX2V4dGVuc2lvbiIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidmFycyIsImFyZ3MiLCJyZXMiLCJwdHlwX2FueSIsInB0eXBfdmFyIiwicHR5cF9hcnJvdyIsInB0eXBfdHVwbGUiLCJwdHlwX2NvbnN0ciIsInB0eXBfb2JqZWN0IiwicHR5cF9jbGFzcyIsInB0eXBfYWxpYXMiLCJwdHlwX3ZhcmlhbnQiLCJwdHlwX3BvbHkiLCJwdHlwX3BhY2thZ2UiLCJwdHlwX2V4dGVuc2lvbiIsInBkaXJfc3RyaW5nIiwicGRpcl9pbnQiLCJwZGlyX2lkZW50IiwicGRpcl9ib29sIiwicGV4cF9pZGVudCIsInBleHBfY29uc3RhbnQiLCJwZXhwX2xldCIsInBleHBfZnVuY3Rpb24iLCJwZXhwX2Z1biIsInBleHBfYXBwbHkiLCJwZXhwX21hdGNoIiwicGV4cF90cnkiLCJwZXhwX3R1cGxlIiwicGV4cF9jb25zdHJ1Y3QiLCJwZXhwX3ZhcmlhbnQiLCJwZXhwX3JlY29yZCIsInBleHBfZmllbGQiLCJwZXhwX3NldGZpZWxkIiwicGV4cF9hcnJheSIsInBleHBfaWZ0aGVuZWxzZSIsInBleHBfc2VxdWVuY2UiLCJwZXhwX3doaWxlIiwicGV4cF9mb3IiLCJ4NCIsInBleHBfY29uc3RyYWludCIsInBleHBfY29lcmNlIiwicGV4cF9zZW5kIiwicGV4cF9uZXciLCJwZXhwX3NldGluc3R2YXIiLCJwZXhwX292ZXJyaWRlIiwicGV4cF9sZXRtb2R1bGUiLCJwZXhwX2xldGV4Y2VwdGlvbiIsInBleHBfYXNzZXJ0IiwicGV4cF9sYXp5IiwicGV4cF9wb2x5IiwicGV4cF9vYmplY3QiLCJwZXhwX25ld3R5cGUiLCJwZXhwX3BhY2siLCJwZXhwX29wZW4iLCJwZXhwX2xldG9wIiwicGV4cF9leHRlbnNpb24iLCJwZXhwX3VucmVhY2hhYmxlIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwia2luZCIsImluY2x1ZGVfaW5mb3MiLCJtb2QiLCJsYWJlbF9kZWNsYXJhdGlvbiIsIm11dGFibGUiLCJ0eXBlIiwibGV0b3AiLCJsZXQkMCIsImFuZHMiLCJib2R5IiwibG9jYXRpb24iLCJzdGFydCIsImVuZCIsImdob3N0IiwibW9kdWxlX2JpbmRpbmciLCJtb2R1bGVfZGVjbGFyYXRpb24iLCJwbW9kX2lkZW50IiwicG1vZF9zdHJ1Y3R1cmUiLCJwbW9kX2Z1bmN0b3IiLCJwbW9kX2FwcGx5IiwicG1vZF9jb25zdHJhaW50IiwicG1vZF91bnBhY2siLCJwbW9kX2V4dGVuc2lvbiIsIm1vZHVsZV9zdWJzdGl0dXRpb24iLCJtYW5pZmVzdCIsInBtdHlfaWRlbnQiLCJwbXR5X3NpZ25hdHVyZSIsInBtdHlfZnVuY3RvciIsInBtdHlfd2l0aCIsInBtdHlfdHlwZW9mIiwicG10eV9leHRlbnNpb24iLCJwbXR5X2FsaWFzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb24iLCJvdGFnIiwib2luaGVyaXQiLCJvcGVuX2luZm9zIiwib3ZlcnJpZGUiLCJwcGF0X2FueSIsInBwYXRfdmFyIiwicHBhdF9hbGlhcyIsInBwYXRfY29uc3RhbnQiLCJwcGF0X2ludGVydmFsIiwicHBhdF90dXBsZSIsInBwYXRfY29uc3RydWN0IiwicHBhdF92YXJpYW50IiwicHBhdF9yZWNvcmQiLCJwcGF0X2FycmF5IiwicHBhdF9vciIsInBwYXRfY29uc3RyYWludCIsInBwYXRfdHlwZSIsInBwYXRfbGF6eSIsInBwYXRfdW5wYWNrIiwicHBhdF9leGNlcHRpb24iLCJwcGF0X2V4dGVuc2lvbiIsInBwYXRfb3BlbiIsInBvc2l0aW9uIiwibG51bSIsImJvbCIsImNudW0iLCJydGFnIiwicmluaGVyaXQiLCJwc2lnX3ZhbHVlIiwicHNpZ190eXBlIiwicHNpZ190eXBlc3Vic3QiLCJwc2lnX3R5cGV4dCIsInBzaWdfZXhjZXB0aW9uIiwicHNpZ19tb2R1bGUiLCJwc2lnX21vZHN1YnN0IiwicHNpZ19yZWNtb2R1bGUiLCJwc2lnX21vZHR5cGUiLCJwc2lnX21vZHR5cGVzdWJzdCIsInBzaWdfb3BlbiIsInBzaWdfaW5jbHVkZSIsInBzaWdfY2xhc3MiLCJwc2lnX2NsYXNzX3R5cGUiLCJwc2lnX2F0dHJpYnV0ZSIsInBzaWdfZXh0ZW5zaW9uIiwicHN0cl9ldmFsIiwicHN0cl92YWx1ZSIsInBzdHJfcHJpbWl0aXZlIiwicHN0cl90eXBlIiwicHN0cl90eXBleHQiLCJwc3RyX2V4Y2VwdGlvbiIsInBzdHJfbW9kdWxlIiwicHN0cl9yZWNtb2R1bGUiLCJwc3RyX21vZHR5cGUiLCJwc3RyX29wZW4iLCJwc3RyX2NsYXNzIiwicHN0cl9jbGFzc190eXBlIiwicHN0cl9pbmNsdWRlIiwicHN0cl9hdHRyaWJ1dGUiLCJwc3RyX2V4dGVuc2lvbiIsInRvcGxldmVsX2RpcmVjdGl2ZSIsImFyZyIsInR5cGVfZGVjbGFyYXRpb24iLCJjc3RycyIsInByaXZhdGUkMCIsInR5cGVfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IiLCJ0eXBlX2V4dGVuc2lvbiIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJ2YWx1ZV9iaW5kaW5nIiwidmFsdWVfZGVzY3JpcHRpb24iLCJwcmltIiwidHh0IiwibWFrZSIsIm1hcCIsImYiLCJpc19ub3JtYWxfaWRlbnRfY2hhciIsInNob3J0X25hbWUiLCJzdHJpbmciLCJzIiwiYiIsImEiLCJiJDAiLCJhJDAiLCJzZXhwX29mX3QiLCJmbGF0dGVuX2V4biIsImxpZCQwIiwiYWNjdSIsInMkMCIsImxpZCIsImxhc3RfZXhuIiwidW5mbGF0dGVuIiwibCIsImFjYyIsInBhcnNlIiwiaW52YWxpZCIsIm9wZW5fcGFyIiwiY2xvc2VfcGFyIiwiciIsImwkMCIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3QiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJmdW5jdG9yJDAiLCJmdW5jdG9yX3BhdGgiLCJyZXN0IiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGVuIiwicG9zIiwicG9zJDAiLCJsZXZlbnNodGVpbl9kaXN0YW5jZSIsImN1dG9mZiIsIm0iLCJkIiwiaSQwIiwiaiQwIiwibGluZV9taW4iLCJqIiwiaSIsInZhbHVlIiwiZGlzdGFuY2UiLCJzcGVsbGNoZWNrIiwibmFtZXMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJzdWdnZXN0aW9ucyIsInJldl9yZXN0IiwibGFzdCIsImZvbGRfZG90X3N1ZmZpeGVzIiwiY29sbGFwc2VfYWZ0ZXJfYXQiLCJwYXJ0cyIsInBhcnQiLCJwYXJ0cyQxIiwicGFydHMkMCIsImRvdF9zdWZmaXhlcyIsInNwbGl0X3BhdGgiLCJpJDIiLCJpJDQiLCJpJDMiLCJpJDEiLCJtYXRjaGVzIiwibWF0Y2hlZCIsInNwbGl0X291dGVyX25hbWVzcGFjZSIsImJlZm9yZV9kb3QiLCJhZnRlcl9kb3QiLCJjcmVhdGVfc2V0IiwiZnVsbHlfcXVhbGlmaWVkX25hbWVzIiwiYXR0cmlidXRlcyIsImV4dGVuc2lvbnMiLCJpc19hbGxvd2xpc3RlZCIsImdldF9hdHRyaWJ1dGVfbGlzdCIsImdldF9leHRlbnNpb25fbGlzdCIsImNyZWF0ZV9yZXNlcnZlZCIsInRibCIsInJlc2VydmUiLCJucyQwIiwibnMiLCJ0YmwkMCIsInJlc3RfbnMiLCJvdXRlcl9ucyIsInJlc3RfdGJsIiwiaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyIsImlnbm9yZV9jaGVja3MiLCJjcmVhdGUiLCJjdXJyZW50X2ZpbGUiLCJzdHJpbmdfb2ZfY29udGV4dCIsImdldF9hbGxfZm9yX2NvbnRleHQiLCJjb250ZXh0IiwiY2hlY2tfY29sbGlzaW9uc19sb2NhbCIsImNhbGxlciIsImFsbF9mb3JfY29udGV4dCIsImRlY2xhcmVkX2F0IiwiY29udGV4dCQwIiwiY2hlY2tfY29sbGlzaW9ucyIsInJlZ2lzdGVyIiwia2luZCQxIiwibGlzdCIsImtpbmQkMCIsImFsbCIsInQkMCIsIm9wdCIsInN0aCIsImFsbG93bGlzdCIsImtleSIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJvdGhlcl9jb250ZXh0cyIsInBwX3RleHQiLCJjdXJyZW50X2NvbnRleHQiLCJhX29yX2FuIiwieSIsImMiLCJyZXZfb3RoZXJzIiwib3RoZXJzIiwibXNnIiwicmFpc2VfZXJyb3JmJDAiLCJjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiIsInRkIiwiY2hvcCIsIm9yX21vcmUiLCJ0YXJnZXQiLCJjbnQiLCJnZW5fc3ltYm9sIiwicHJlZml4IiwicHJlZml4JDAiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyIsIm5hbWVfcGFyYW0iLCJ2YXJpYW5jZSIsInRwIiwicHR5cF9kZXNjIiwibyIsImVycm9ycyIsInB0eXBlX3BhcmFtcyIsInEiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkIiwiZXJyIiwiY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyIiwidGQkMCIsInJlc3VsdF90eXBlIiwic3RyaW5nX29mX2NvcmVfdHlwZSIsImN0IiwiYnVmIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMiLCJnZXRfdHlwZV9wYXJhbV9uYW1lIiwic2VsZl8xIiwiY3R5cGUiLCJpZCIsInRkcyIsInJlYWxseV9yZWN1cnNpdmUiLCJ4JDAiLCJ4JDEiLCJsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCIsImxvY19vZl9wYXlsb2FkIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwibG9jX29mX2F0dHJpYnV0ZSIsImxvY19vZl9leHRlbnNpb24iLCJjdXJyeV9hcHBsaWNhdGlvbnMiLCJvcmlnX2ZvcndhcmRfYXJncyIsImxvb3AiLCJyZXZfZnJvbnRfYXJncyIsImxhc3RfYXJnIiwiYXR0ciIsImF0dHJpYnV0ZXNfZXJyb3JzIiwic2VsZl8yIiwiY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyIsImFzc2VydF9ub19hdHRyaWJ1dGVzIiwic2VsZl8zIiwiYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4iLCJhdHRyaWJ1dGVfb2Zfd2FybmluZyIsImlzX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJzaWciLCJ0eXAkMCIsInR5cCIsIm1rX25hbWVkX3NpZyIsInNnX25hbWUiLCJoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCIsImFyaXR5IiwibXR5IiwiZm9yX3N1YnN0IiwiZXhuX3RvX2xvY19lcnJvciIsImV4biIsImVycm9yIiwicmV0dXJuJDAiLCJzeW1ib2xfYmluZCIsImVycm9yczEiLCJlcnJvcnMyIiwic3ltYm9sX21hcCIsIm9mX3Jlc3VsdCIsInJlc3VsdCIsImRlZmF1bHQkMCIsImNvbWJpbmVfZXJyb3JzIiwibm9sYWJlbCIsImsiLCJsYWJlbGxlZCIsImYwIiwiayQwIiwib3B0aW9uYWwiLCJrJDEiLCJrJDIiLCJwY2xfbG9jIiwiZjIiLCJmMSIsInBjbF9hdHRyaWJ1dGVzIiwiZjMiLCJrJDMiLCJwY2ZfbG9jIiwicGNmX2F0dHJpYnV0ZXMiLCJjZmtfdmlydHVhbCIsImNma19jb25jcmV0ZSIsImNsYXNzX2luZm9zX2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9hdHRyaWJ1dGVzIiwiY2xvc2VkIiwib3BlbiIsInBjb25zdF9pbnRlZ2VyIiwicGNvbnN0X2NoYXIiLCJwY29uc3Rfc3RyaW5nIiwicGNvbnN0X2Zsb2F0IiwicGNzdHJfdHVwbGUiLCJwY3N0cl9yZWNvcmQiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWIiLCJwdHlwX2xvYyIsInB0eXBfYXR0cmlidXRlcyIsInVwdG8iLCJkb3dudG8iLCJwZGlyYV9sb2MiLCJwZXhwX2xvYyIsInBleHBfYXR0cmlidXRlcyIsImY0IiwiayQ0IiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0IiwicGV4dF9kZWNsIiwicGV4dF9yZWJpbmQiLCJ1bml0IiwibmFtZWQiLCJpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMiLCJpbmplY3RpdmUiLCJub2luamVjdGl2aXR5IiwibGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImxkb3QiLCJsYXBwbHkiLCJtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIiwibW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfYXR0cmlidXRlcyIsIm1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9hdHRyaWJ1dGVzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmliIiwiaW1tdXRhYmxlIiwicG9mX2xvYyIsInBvZl9hdHRyaWJ1dGVzIiwib3Blbl9pbmZvc19hdHRyaWJ1dGVzIiwiZnJlc2giLCJwcGF0X2xvYyIsInBwYXRfYXR0cmlidXRlcyIsInBzdHIiLCJwc2lnIiwicHR5cCIsInBwYXQiLCJwdWJsaWMkMCIsIm5vbnJlY3Vyc2l2ZSIsInJlY3Vyc2l2ZSIsInByZl9sb2MiLCJwcmZfYXR0cmlidXRlcyIsInBzaWdfbG9jIiwicHN0cl9sb2MiLCJwdG9wX2RlZiIsInB0b3BfZGlyIiwidHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwiayQ1IiwidHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyIsInR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMiLCJwdHlwZV9hYnN0cmFjdCIsInB0eXBlX3ZhcmlhbnQiLCJwdHlwZV9yZWNvcmQiLCJwdHlwZV9vcGVuIiwidmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIiwidmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyIsImNvdmFyaWFudCIsImNvbnRyYXZhcmlhbnQiLCJub3ZhcmlhbmNlIiwidmlydHVhbCIsImNvbmNyZXRlIiwicHdpdGhfdHlwZSIsInB3aXRoX21vZHVsZSIsInB3aXRoX21vZHR5cGUiLCJwd2l0aF9tb2R0eXBlc3Vic3QiLCJwd2l0aF90eXBlc3Vic3QiLCJwd2l0aF9tb2RzdWJzdCIsInJlc3RvcmVfY29udGV4dCIsImJhY2t1cCIsImluY3JfbWF0Y2hlZCIsInBhcnNlX3JlcyIsIm9uX2Vycm9yIiwiZiQwIiwiciQwIiwicGFyc2VfcmVzJDAiLCJwYXJzZSQwIiwic3ltYm9sIiwic3ltYm9sJDAiLCJkcm9wIiwiYXMiLCJjc3QiLCJ0b19zdHJpbmciLCJlcXVhbCIsImludCQwIiwiY2hhciQwIiwiZmxvYXQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJib29sIiwiYm9vbCQwIiwiZnVuYyIsImZhbHNlJDAiLCJ0cnVlJDAiLCJuaWwiLCJzeW1ib2wkMSIsInNvbWUiLCJwYWlyIiwidHJpcGxlIiwiYWx0IiwiZTEkMCIsImUxIiwibTEiLCJlMiQwIiwiZTIiLCJtMiIsIm1hcCQwIiwibWFwX3Jlc3VsdCIsIm1hcDAiLCJtYXAxIiwibWFwMiIsIm1hcDAkMCIsIm1hcDEkMCIsIm1hcDIkMCIsIm1hcF92YWx1ZSIsIm1hcF92YWx1ZSQwIiwiYWx0X29wdGlvbiIsIm1hbnkiLCJhdXgiLCJ4cyIsInBhY2swIiwicGFjazIiLCJwYWNrMyIsInoiLCJjb25zdF9pbnQiLCJjb25zdF9pbnQzMiIsImNvbnN0X2ludDY0IiwiY29uc3RfbmF0aXZlaW50Iiwic2luZ2xlX2V4cHJfcGF5bG9hZCIsIm5vX2xhYmVsIiwiZXh0ZW5zaW9uIiwibmV4dCIsImV4cHIkMSIsIm9mX2Z1bmMiLCJ0b19mdW5jIiwicG9seV9lcXVhbCIsInBhdHRlcm4iLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjbGFzc19leHByIiwiY2xhc3NfZmllbGQiLCJtb2R1bGVfdHlwZSIsIm9wZW5fZGVzY3JpcHRpb24iLCJtb2R1bGVfZXhwciIsIm9iamVjdF90eXBlX2ZpZWxkIiwiZ2V0X3BzdHJfZXZhbCIsInN0IiwiZ2V0X3BzdHJfZXh0ZW5zaW9uIiwiZ2V0X3BzaWdfZXh0ZW5zaW9uIiwiZ2V0X2F0dHJpYnV0ZXMiLCJzZXRfYXR0cmlidXRlcyIsImF0dHJzIiwic3RydWN0dXJlX2l0ZW0iLCJzaWduYXR1cmVfaXRlbSIsImNsYXNzX2ZpZWxkJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJkZWNsYXJlIiwiZGVjbGFyZV93aXRoX25hbWVfbG9jIiwibmFtZV9sb2MiLCJkZWNsYXJlX3dpdGhfYXR0cl9sb2MiLCJhdHRyX2xvYyIsImRlY2xhcmVfZmxhZyIsInBheWxvYWRfcGF0dGVybiIsImNvbnRpbnVhdGlvbiIsIm5vcm1hbGl6ZSIsImhhc2giLCJub3Rfc2VlbiIsIm1hcmtfYXNfc2VlbiIsImV4cGxpY2l0bHlfZHJvcCIsImdldF9pbnRlcm5hbCIsImF0dHJpYnV0ZXMkMSIsImxvbmdlc3RfbWF0Y2giLCJhdHRyaWJ1dGVzJDAiLCJsZW4kMCIsImxvbmdlc3RfbWF0Y2gkMCIsImxvbmdlc3RfbWF0Y2gkMSIsImNvbnZlcnQiLCJkb19tYXJrX2FzX3NlZW4iLCJwYXR0ZXJuJDAiLCJnZXRfcmVzIiwiaGFzX2ZsYWdfcmVzIiwiaGFzX2ZsYWciLCJjb25zdW1lX3JlcyIsImF0dHIkMCIsImF0dHJzJDAiLCJjb25zdW1lIiwicmVtb3ZlX3NlZW5fcmVzIiwicGFja2VkcyIsInJlbW92ZV9zZWVuIiwicGF0dGVybl9yZXMiLCJkZWNsYXJlJDAiLCJjb252ZXJ0X3JlcyIsInRzIiwiY29udmVydCQwIiwiY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIiwiaXRlbSIsIml0ZW0kMCIsImVycm9yczIkMCIsIml0ZW0kMiIsIml0ZW0kMSIsImNsb3NlZF9mbGFnIiwiZXJyb3JzJDAiLCJmaWVsZHMkMCIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvIiwicmFpc2VfaWZfbm9uX2VtcHR5IiwiY2hlY2tfdW51c2VkIiwicmVzZXRfY2hlY2tzIiwic2VsZl80IiwiY29sbGVjdCIsImNvbGxlY3RfdW5zZWVuX2Vycm9ycyIsImNoZWNrX2FsbF9zZWVuIiwicmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiIsInRhYmxlIiwic2VsZl81IiwiY29weV9vZl9ub3Rfc2VlbiIsImNvcHkiLCJkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUiLCJkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUiLCJzZyIsInRvcF9sZXZlbCIsImZpbGVfcGF0aCIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtdGQiLCJtZCIsIm1iIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ2YiIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInZhcl9uYW1lIiwiaW5fYmluZGluZ19jdHh0IiwicGF0X2Vycm9ycyIsInB2Yl9wYXQkMCIsImV4cHJfZXJyb3JzIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJsb2NfZXJyb3JzIiwicHZiX2xvYyQwIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwid2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIndpdGhfbW9kdWxlX2RlY2xhcmF0aW9uIiwid2l0aF9tb2R1bGVfYmluZGluZyIsIm1lIiwid2l0aF9tb2R1bGVfZXhwciIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9kZXNjIiwid2l0aF92YWx1ZSIsImN0eHQkMCIsIm5hbWVfZXJyb3JzIiwid2l0aF9sZXRfbW9kdWxlIiwibW9kdWxlX2V4cHJfZXJyb3JzIiwibW9kdWxlX2V4cHIkMCIsImJvZHlfZXJyb3JzIiwiZGVzY19lcnJvcnMkMCIsInBleHBfZGVzYyQxIiwiZGVzY19lcnJvcnMiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJsb2Nfc3RhY2tfZXJyb3JzIiwicGV4cF9sb2Nfc3RhY2skMCIsInBleHBfYXR0cmlidXRlcyQwIiwidGFnIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFzdCIsImV4biQwIiwiSW5wdXRfdmVyc2lvbiIsImFzdCQwIiwiSW5wdXRfdmVyc2lvbiQwIiwiYXN0JDEiLCJhc3QkMiIsInJlYWQiLCJpbnB1dF9zb3VyY2UiLCJ3cml0ZSIsIm9jIiwiYWRkX3BweF9jb250ZXh0Iiwic2ckMCIsInN0JDAiLCJyZWFkX2JpbmFyeSIsInNpZ25hdHVyZSIsInN0cnVjdHVyZSIsImdldF9hc3QiLCJnZXRfaW5wdXRfbmFtZSIsInJ1bl9wcmVwcm9jZXNzb3IiLCJwcCIsImlucHV0Iiwib3V0cHV0IiwiY29tbWFuZCIsImVuZF9tYXJrZXJfc2lnIiwiZW5kX21hcmtlcl9zdHIiLCJleHRyYWN0X3ByZWZpeCIsInJlbW92ZV9sb2MiLCJyZW1vdmVfbG9jJDAiLCJwcmV2JDAiLCJwcmV2JDEiLCJkaWZmX2FzdHMiLCJnZW5lcmF0ZWQiLCJyb3VuZF90cmlwIiwid2l0aF90ZW1wX2ZpbGUiLCJmbjEiLCJmbjIiLCJvdXQiLCJkdW1wIiwiY21kIiwib2siLCJjbWQkMCIsInBhcnNlX3N0cmluZyIsIm1hdGNoX2xvb3AiLCJlbmRfcG9zIiwibWlzbWF0Y2hfaGFuZGxlciIsInNvdXJjZSIsImV4cGVjdGVkJDAiLCJzb3VyY2UkMCIsImxvYyQxIiwic291cmNlJDEiLCJleHBlY3RlZCQxIiwieSQwIiwiZG9fbWF0Y2giLCJnZXRfbG9jIiwiYXBwbHkiLCJ0b19zZXhwIiwiZ2V0X2xvYyQwIiwicHAkMCIsInRvX3NleHAkMCIsIm1hdGNoX3N0cnVjdHVyZV9yZXMiLCJtYXRjaF9zdHJ1Y3R1cmUiLCJtYXRjaF9zaWduYXR1cmVfcmVzIiwibWF0Y2hfc2lnbmF0dXJlIiwiZGVzYyIsImVxIiwiZ2V0X2V4dGVuc2lvbiIsInR5cGVfZGVjbCIsImUkMSIsImUkMiIsImEkMyIsImUkMyIsImEkNCIsImUkNCIsImEkNSIsImUkNSIsImEkNiIsImUkNiIsImEkNyIsImUkNyIsImEkOCIsImUkOCIsImEkOSIsImUkOSIsInZpcnR1YWxfcGF5bG9hZCIsIm1lcmdlX2F0dHJpYnV0ZXNfcmVzIiwicSQwIiwidCQxIiwicSQxIiwidCQyIiwibWVyZ2VfYXR0cmlidXRlcyIsIndpdGhfYXJnIiwiZmluZCIsImV4dCIsInNoaWZ0IiwiYXJnJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmciLCJwYXR0IiwiY29udmVydF9yZXMkMCIsImZvdW5kIiwiY29udmVydF9pbmxpbmVfcmVzIiwiY29udmVydF9pbmxpbmUiLCJjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUiLCJmaWx0ZXJfYnlfY29udGV4dCIsImV4cGFuZGVycyIsImV4cGFuZGVycyQwIiwiZXhwYW5kZXJzJDEiLCJ1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIiwiY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2VyIiwiZXJyb3JfbGlzdF90b19leGNlcHRpb24iLCJkZWNsYXJlX2lubGluZSIsImRlY2xhcmVfd2l0aF9wYXRoX2FyZyQwIiwiZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyIsImRlY2xhcmUkMSIsImRlY2xhcmVfaW5saW5lJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMSIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfcHB4X2ltcG9ydCIsImV4cGFuZCIsInNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IiwiYXR0cl9uYW1lJDAiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCQwIiwiZmlsdGVyIiwiZmllbGQiLCJmaWVsZCQwIiwic3BlY2lhbF9mdW5jdGlvbiIsImNvbnN0YW50Iiwic3VmZml4IiwiYXR0cl9zdHJfdHlwZV9kZWNsIiwiYXR0cl9zaWdfdHlwZV9kZWNsIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCIsImF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3N0cl90eXBlX2V4dCIsImF0dHJfc2lnX3R5cGVfZXh0IiwiYXR0cl9zdHJfZXhjZXB0aW9uIiwiYXR0cl9zaWdfZXhjZXB0aW9uIiwiYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCIsIm5vcCIsInJlcGxhY2UiLCJpbnNlcnRfYWZ0ZXIiLCJtYXBfbm9kZV9yZWMiLCJzdXBlcl9jYWxsIiwiYmFzZV9jdHh0IiwiZW1iZWRfZXJyb3JzIiwiY29udmVydGVkIiwibWFwX25vZGVzIiwiaG9vayIsImluX2dlbmVyYXRlZF9jb2RlIiwiZ2VuZXJhdGVkX2NvZGUiLCJjb2RlIiwiZ2V0X2dyb3VwIiwiYXR0cjIiLCJ2YWxzJDAiLCJ2YWxzIiwicmV2X2NvbmNhdCIsInNvcnRfYXR0cl9ncm91cF9pbmxpbmUiLCJzb3J0X2F0dHJfaW5saW5lIiwiY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljIiwibm9wJDAiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImZ1bmMkMCIsImxhYiIsIm9wdGlvbiIsIndpdGhfY29udGV4dCIsImV4cGFuZGVkIiwiZXhwYW5kX2NvbnN0YW50IiwidGV4dCIsImMkMCIsImV4biQxIiwiaWQkMCIsImdlbmVyYXRlZF9jb2RlJDAiLCJleG4kMiIsInN0aCQwIiwicnVsZXMiLCJzcGVjaWFsX2Z1bmN0aW9ucyIsInNwZWNpYWxfZnVuY3Rpb25zJDAiLCJjb25zdGFudHMiLCJwcHhfaW1wb3J0IiwiYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2RlY2xzIiwiYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xzIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHAiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyIsImF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2V4dHMiLCJhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRzIiwiYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25zIiwiYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3NpZ19leGNlcHRpb25zIiwibWFwX25vZGUiLCJtYXBfbm9kZXMkMCIsImhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSIsImV4cGFuZGVkX2l0ZW1zIiwiZzEiLCJnMiIsInZhbHVlcyIsImdlbmVyYXRlZF9jb2RlX2JlZ2luIiwiZ2VuZXJhdGVkX2NvZGVfZW5kIiwicGFyZW4iLCJzdG9wIiwibWFrZV90ZXh0IiwiYmxvY2siLCJwcmludGVyIiwiaWR4IiwiY291bnRfbmV3bGluZXMiLCJza2lwX2JsYW5rX2VvbCIsImNvbnRlbnRzIiwiY251bSQxIiwiY251bSQwIiwicmVjb25jaWxlIiwic3R5bGVyIiwicmVwbHMkMyIsImlucHV0X2ZpbGVuYW1lIiwicmVwbHMiLCJyZXBscyQyIiwicmVwbCQwIiwicHJldiIsInJlcGxzJDAiLCJyZXBscyQxIiwicmVwbHMkNCIsIm91dHB1dF9uYW1lIiwiY29weV9pbnB1dCIsInVwX3RvIiwibGluZSIsImxhc3RfaXNfdGV4dCIsImlzX3RleHQiLCJsaW5lJDAiLCJsaW5lJDEiLCJsb29wJDAiLCJsaW5lJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzJDAiLCJsYXN0X2lzX3RleHQkMCIsImVuZF9jb25zZWN1dGl2ZV9yZXBscyIsInBvcyQxIiwibGFzdF9pc190ZXh0JDEiLCJwb3MkMiIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJvZCIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImNlIiwibGFiZWxzIiwiZXhwcl9vIiwiY3RlIiwib3BuIiwiZV9sb2MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImN0cCIsInNpYmxpbmdzIiwiZXhlX25hbWUiLCJhZGRfYXJnIiwic3BlYyIsImRvYyIsImxvY19mbmFtZSIsInBlcmZvcm1fY2hlY2tzIiwicGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyIsInBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIiwiZGVidWdfYXR0cmlidXRlX2Ryb3AiLCJhcHBseV9saXN0IiwicHJlcHJvY2Vzc29yIiwibm9fbWVyZ2UiLCJyZXF1ZXN0X3ByaW50X3Bhc3NlcyIsInJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIiwidXNlX2NvbG9yIiwiZGlmZl9jb21tYW5kIiwicHJldHR5Iiwib3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIiwiY29ycmVjdGVkX3N1ZmZpeCIsImdldF9kZWZhdWx0X3BhdGgiLCJmbmFtZSQwIiwiZ2V0X2RlZmF1bHRfcGF0aF9zdHIiLCJnZXRfZGVmYXVsdF9wYXRoX3NpZyIsIm9mX3N0cmluZyIsImdpdmVuX3Rocm91Z2hfY2xpIiwic2V0IiwiaGFuZGxlcnMiLCJhZGRfaGFuZGxlciIsImFkZF9zaW1wbGVfaGFuZGxlciIsImFja25vd2xlZGdlX2Nvb2tpZXMiLCJwb3N0X2hhbmRsZXJzIiwiYWRkX3Bvc3RfaGFuZGxlciIsImNhbGxfcG9zdF9oYW5kbGVycyIsInRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtYXRpb24kMCIsImhhc19uYW1lIiwicHJpbnRfY2FsbGVyX2lkIiwiY2FsbGVyX2lkIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24iLCJlbmNsb3NlX2ltcGwiLCJlbmNsb3NlX2ludGYiLCJpbXBsIiwiaW50ZiIsImxpbnRfaW1wbCIsImxpbnRfaW50ZiIsInByZXByb2Nlc3NfaW1wbCIsInByZXByb2Nlc3NfaW50ZiIsImluc3RydW1lbnQiLCJzdGgkMSIsImFsaWFzZXMiLCJydWxlcyQwIiwiaW1wbCQwIiwiaW50ZiQwIiwicHJlcHJvY2Vzc19pbXBsJDAiLCJwcmVwcm9jZXNzX2ludGYkMCIsImN0JDAiLCJsb2Nfb2ZfbGlzdCIsImwkMiIsImZpcnN0IiwibWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMiLCJleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciIsImdlbl9oZWFkZXJfYW5kX2Zvb3RlciIsIndob2xlX2xvYyIsImZvb3RlciIsImhlYWRlciIsImxvY19oZWFkZXIiLCJsb2NfZm9vdGVyIiwibWFwX2ltcGwiLCJzdF93aXRoX2F0dHJzIiwibWFwX2ludGYiLCJzZ193aXRoX2F0dHJzIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfIiwiYWRkX2N0eHRfYXJnIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24kMCIsImxpbnRfaW1wbCQwIiwibGludF9pbnRmJDAiLCJlbmNsb3NlX2ltcGwkMCIsImVuY2xvc2VfaW50ZiQwIiwicmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyQwIiwiZ2V0X3dob2xlX2FzdF9wYXNzZXMiLCJjdHMiLCJhZnRfaSIsImJlZl9pIiwicmVkdWNlZF90IiwiaW5zdHIiLCJ0cmFuc2YiLCJ0cmFuc2YkMCIsInRyYW5zZm9ybXMiLCJhZnRlcl9pbnN0cnMiLCJiZWZvcmVfaW5zdHJzIiwicHJlcHJvY2VzcyIsImxpbnRlcnMiLCJnZXRfZW5jbG9zZXJzIiwiaW1wbF9lbmNsb3NlcnMiLCJpbnRmX2VuY2xvc2VycyIsIm1lcmdlX2VuY2xvc2VyIiwiZW5jbG9zZXJzIiwiZm9vdGVycyIsImhlYWRlcnMiLCJoZWFkZXJzJDAiLCJmb290ZXJzJDAiLCJhcHBseV90cmFuc2Zvcm1zIiwibGludF9maWVsZCIsImRyb3BwZWRfc29fZmFyIiwibGludF9lcnJvcnMiLCJvbGRfZHJvcHBlZCIsImxpbnRfZXJyb3JzJDAiLCJlcnJvcnMkMSIsIm1vcmVfZXJyb3JzIiwibmV3X2Ryb3BwZWQiLCJwcmludF9kaWZmIiwid2hhdCIsImRpZmYiLCJkcm9wcGVkIiwiZXJyb3JfdG9fZXh0ZW5zaW9uIiwiZXh0JDAiLCJleG5fdG9fZXh0ZW5zaW9uIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJmcCIsIm1zIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwicGFyYW0iLCJhcHBseV9hbGwiLCJlbnRyeSIsImdlbmVyYXRvcnMiLCJleHRfdG9faXRlbSIsImVtcHR5X2xhYmVsX2Vycm9yIiwiZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIiwiYWNjZXB0ZWRfYXJncyIsInNwZWxsY2hlY2tfbXNnIiwidW5hY2NlcHRlZF9hcmd1bWVudCIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImFjdHVhbF9kZXJpdmVyX25hbWUiLCJkdXBfZXJyb3IiLCJkZXAiLCJkZXBfbmFtZSIsImxfZXJyIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJ4IiwiZGVmYXVsdCQwIiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJpIiwidmFycyIsInZhciQwIiwiYmluZGluZ3MiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ0eHQiLCJ2YXJzJDAiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsInRwIiwiYm9keSQwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJvcHQiLCJzdGgiLCJpbnRlcm5hbCIsIm4iLCJhcmciLCJhcmdzJDAiLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJpbml0IiwiZmllbGRfcmVmcyIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwidG9fYXJyYXlmIiwiZiIsImEiLCJvZl9hcnJheWYiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ0b19saXN0ZiIsIm9mX2xpc3RmIiwib3B0ZGVmIiwieCIsInRvX29wdGRlZiIsIngkMCIsInVub3B0ZGVmX2YiLCJkZWYiLCJ1bm9wdGRlZiIsImNvbnZkZWYiLCJ0b19vcHQiLCJvcHQiLCJjb252b3B0IiwianNfbG9nIiwibyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsInN0aCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwib2JqZWN0X2NzIiwiYXNzaWduIiwibzEiLCJvMiIsImFzc2lnbl9saXN0IiwicmVtb3ZlX3VuZGVmaW5lZCIsImtleXMiLCJrIiwib2JqIiwiY3JlYXRlIiwiYWRkIiwidiIsImFkZF9saXN0IiwiYWRkX2xpc3RmIiwibWFrZSIsIm1ha2VmIiwicmVtb3ZlIiwiZmluZCIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwiY3MiLCJqdGhlbjAiLCJlcnJvciIsInByb20iLCJwIiwiZXhuJDAiLCJlZiIsImVycm9yJDAiLCJqdGhlbiIsImp0aGVuMF9vcHQiLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibzMiLCJsb2dfc3RyMiIsInMxIiwiczIiLCJsb2dfc3RyMyIsInMzIiwiZGVidWciLCJkZWJ1ZzIiLCJkZWJ1ZzMiLCJkZWJ1Z19zdHIiLCJkZWJ1Z19zdHIyIiwiZGVidWdfc3RyMyIsIndhcm4iLCJ3YXJuMiIsIndhcm4zIiwid2Fybl9zdHIiLCJ3YXJuX3N0cjIiLCJ3YXJuX3N0cjMiLCJlcnJvcjIiLCJlcnJvcjMiLCJlcnJvcl9zdHIiLCJlcnJvcl9zdHIyIiwiZXJyb3Jfc3RyMyIsImJpZ0ludCIsIm9mX3N0cmluZyIsIm9mX2ludCIsImkiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZSIsIm9mX2Zsb2F0IiwidG9fbG9jYWxlX3N0cmluZyIsIm9wdGlvbnMiLCJuIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsInN0aCQwIiwic3RoJDEiLCJsaXN0ZW4iLCJzdGgkMiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwidHIiLCJjcmVhdGUiLCJzdG9yZSIsImFkZCIsImtleSIsInN0IiwieCIsInB1dCIsInJhbmdlIiwib2xvd2VyIiwib3VwcGVyIiwibG93ZXIiLCJ1cHBlciIsInVwcGVyJDEiLCJsb3dlciQwIiwidXBwZXIkMCIsImNvdW50IiwiayIsImdldCIsIm9mX2pzIiwianMiLCJqcyQwIiwiZ2V0X2FsbCIsImdldF9rZXkiLCJnZXRfYWxsX2tleXMiLCJkZWxldGUkMCIsIml0ZXIiLCJkaXJlY3Rpb24iLCJjIiwidDgwIiwiZm9sZCIsInN0YXJ0IiwiYWNjIiwiY2FsbGJhY2skMCIsInQ5NSIsIml0ZXJfa2V5cyIsInQxMTAiLCJmb2xkX2tleXMiLCJ0MTI0IiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4Iiwib3B0aW9ucyQwIiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJsZW5ndGgiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMDI2IiwiZXJyb3Jfc291cmNlXzA0MiIsImVycm9yX3NvdXJjZV8yMDYiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJ0X29mX3NleHAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXZhbF9mYWlsIiwibG9jIiwiZm10IiwicyIsImN1c3RvbV9wcmludGZfMDAxIiwiZXF1YWxfb3B0aW9uIiwiZXF1YWwiLCJhIiwiYiIsInkiLCJ4IiwiY3JlYXRlIiwiZXEiLCJ4cyQxIiwiczIiLCJzMSIsInNvcnRlZCIsInhzJDAiLCJsYXN0X3ZhbHVlJDEiLCJsYXN0X2tleSQxIiwiYWNjIiwibGFzdF9rZXkiLCJsYXN0X3ZhbHVlIiwieHMiLCJsYXN0X3ZhbHVlJDAiLCJsYXN0X2tleSQwIiwic29ydGVkJDAiLCJtYXAiLCJ0IiwiZiIsInYiLCJrIiwidG9fbWQ1Iiwib2ZfbWQ1Iiwic2V4cF9vZl90JDEiLCJ0X29mX3NleHAkMCIsInV1aWQiLCJ1IiwiaW50JDAiLCJwYWlyIiwibGlzdCIsImwiLCJjb25zdHJ1Y3RvciIsInRfb2Zfc2V4cCQxIiwib2ZfYV8wMzkiLCJzZXhwXzA0NCIsInRhZ18wNDUiLCJzZXhwX2FyZ3NfMDQ2IiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDkzIiwicmVzMV8wOTQiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMV8wNTUiLCJhcmcwXzA1NCIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDg1IiwiYXJnMF8wODYiLCJvZl9hXzAxMCIsInJlczBfMDg3IiwiZmllbGRfc2V4cHNfMDEzIiwic29ydGVkXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3Iiwic2V4cF8wMTIiLCJmaWVsZF9zZXhwc18wMjAiLCJmaWVsZF9uYW1lXzAxOCIsInRhaWxfMDI5IiwieF8wMzAiLCJmaWVsZF9zZXhwXzAxOSIsInNleHBfMDI1IiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJmdmFsdWVfMDI3Iiwic29ydGVkXzAxNSIsInNleHBfYXJnc18wOTciLCJhcmcxXzA5OSIsImFyZzBfMDk4IiwicmVzMF8xMDAiLCJyZXMxXzEwMSIsInNleHBfYXJnc18wNjUiLCJhcmcwXzA3MSIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMwXzA3MiIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wODEiLCJzZXhwXzA4MCIsImFyZzFfMDc3IiwiYXJnMF8wNzYiLCJyZXMwXzA3OCIsInJlczFfMDc5IiwicmVzMF8wODIiLCJzZXhwX29mX3QkMiIsIm9mX2FfMTA4IiwiYXJnMV8xMTAiLCJhcmcwXzEwOSIsInJlczBfMTExIiwicmVzMV8xMTIiLCJhcmcxXzExNCIsImFyZzBfMTEzIiwicmVzMF8xMTUiLCJyZXMxXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzEyMyIsImFyZzFfMTIwIiwiYXJnMF8xMTkiLCJyZXMwXzEyMSIsInJlczFfMTIyIiwicmVzMF8xMjQiLCJhcmcwXzEyOSIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4IiwicmVzMF8xMzAiLCJhcmcwXzEzMSIsIm9mX2FfMDMxIiwic29ydGVkXzAzMyIsImJuZHNfMDMyIiwiYXJnMV8wMzYiLCJhcmcwXzAzNSIsInJlczBfMDM3IiwicmVzMV8wMzgiLCJhcmdfMDM0IiwiYm5kc18wMzIkMCIsInJlczBfMTMyIiwiYXJnMV8xMzQiLCJhcmcwXzEzMyIsInJlczBfMTM1IiwicmVzMV8xMzYiLCJhcmcxXzEzOCIsImFyZzBfMTM3IiwicmVzMF8xMzkiLCJyZXMxXzE0MCIsImFyZzBfMTQxIiwicmVzMF8xNDIiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJuIiwibiQwIiwidG9fZGlnZXN0IiwidG9fZGlnZXN0JDAiLCJ4JDIiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTk4IiwiYl8xOTkiLCJiXzIwMSIsImFfMjAwIiwiY21wX2EiLCJhXzIwMiIsImJfMjAzIiwiYV8xNDYiLCJiXzE0OSIsImJfMTQ3IiwiYV8xNDgiLCJhXzE1MiIsImFfMTUwIiwiYl8xNTMiLCJiXzE1MSIsImFfMTU0IiwiYl8xNTUiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsImFfMTYwIiwiYl8xNjEiLCJhXzE2MiIsImJfMTYzIiwidF8xNjUiLCJ0XzE2NCIsInRfMTY3IiwidF8xNjYiLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsInRfMTczIiwidF8xNzIiLCJ0XzE3NSIsInRfMTc0IiwiYV8xNzYiLCJiXzE3NyIsImFfMDAyIiwiYl8xNzkiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJhXzE4MiIsImJfMTgzIiwiYV8xODYiLCJhXzE4NCIsImJfMTg3IiwiYl8xODUiLCJuJDEiLCJhXzE4OCIsImJfMTg5IiwiYV8xOTIiLCJhXzE5MCIsImJfMTkzIiwiYl8xOTEiLCJuJDIiLCJhXzE5NCIsImJfMTk1IiwiYV8xOTYiLCJiXzE5NyIsInQwX29mX3NleHAiLCJzZXhwXzIwOCIsInRhZ18yMDkiLCJzZXhwX2FyZ3NfMjEwIiwiYXJnMF8yMTEiLCJyZXMwXzIxMiIsInNleHBfb2ZfdDAiLCJhcmcwXzIxMyIsInJlczBfMjE0IiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwic2V4cF9vZl90JDMiLCJvZl9zdHJpbmckMSIsInRvX3N0cmluZyQyIiwic3ltYm9sIiwiY29tcGFyZSQxIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQ0Iiwib2Zfc3RyaW5nJDIiLCJ0b19zdHJpbmckMyIsImNvbXBhcmF0b3IiLCJjb21wYXJlJDIiLCJzZXhwX29mX3QkNSIsImNyZWF0ZSQzIiwidHJpcHMiLCJnaWQiLCJ2cyIsIm1lbWJlcnMiLCJsb29rdXAiLCJnIiwic2NoZW1lIiwiY3VzdG9tX3ByaW50Zl8yODUiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwic2V4cF9vZl90JDYiLCJhcmcxXzI4NyIsImFyZzBfMjg2IiwicmVzMF8yODgiLCJyZXMxXzI4OSIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MiIsInJlczFfMjkzIiwiYXJnMF8yOTgiLCJhcmcxXzI5NSIsImFyZzBfMjk0IiwicmVzMF8yOTYiLCJyZXMxXzI5NyIsInJlczBfMjk5IiwiYXJnMF8zMDQiLCJhcmcxXzMwMSIsImFyZzBfMzAwIiwicmVzMF8zMDIiLCJyZXMxXzMwMyIsInJlczBfMzA1IiwiYXJnMF8zMDYiLCJyZXMwXzMwNyIsImFyZzBfMzEyIiwiYXJnMV8zMDkiLCJhcmcwXzMwOCIsInJlczBfMzEwIiwidl8yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInZfMjUwIiwiYXJnMV8yNTIiLCJhcmcwXzI1MSIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMxXzMxMSIsInJlczBfMzEzIiwiYXJnMF8zMTgiLCJhcmcxXzMxNSIsImFyZzBfMzE0IiwicmVzMF8zMTYiLCJyZXMxXzMxNyIsInJlczBfMzE5IiwiYXJnMV8zMjEiLCJhcmcwXzMyMCIsInJlczBfMzIyIiwicmVzMV8zMjMiLCJhcmcyXzMyNiIsImFyZzFfMzI1IiwiYXJnMF8zMjQiLCJtZW1iZXJzXzI3NSIsImxvY18yNzMiLCJnaWRfMjcxIiwiYm5kc18yNzAiLCJhcmcxXzI4MiIsImFyZzBfMjgxIiwicmVzMF8yODMiLCJhcmcxXzI3OCIsImFyZzBfMjc3IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczFfMjg0IiwiYXJnXzI3NiIsImJuZHNfMjcwJDAiLCJhcmdfMjc0IiwiYm5kc18yNzAkMSIsImFyZ18yNzIiLCJibmRzXzI3MCQyIiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5IiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImxvb2t1cCQwIiwiYV8zMzAiLCJiXzMzMSIsInRfMzMzIiwidF8zMzIiLCJ0XzMzNSIsInRfMzM0IiwiYXJnMV8zMzciLCJhcmcwXzMzNiIsInJlczBfMzM4IiwicmVzMV8zMzkiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl8zNDAiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfYXJyYXlfbG9vcCIsImFyIiwiZWxzX3Bvc19yZWYiLCJpIiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlX2hhc2h0YmwiLCJiaW5fd3JpdGVfa2V5IiwiYmluX3dyaXRlX3ZhbCIsInBsZW4iLCJjbnRfcmVmIiwiY29sbF9odGJsIiwicmVzX3BvcyIsImJpbl93cml0ZV9mbG9hdDMyX3ZlYyIsImJpbl93cml0ZV9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZV9mbG9hdDMyX21hdCIsIm0iLCJsZW4xIiwibGVuMiIsInBvcyQxIiwiYmluX3dyaXRlX2Zsb2F0NjRfbWF0IiwiYmluX3dyaXRlX2JpZ3N0cmluZyIsInMiLCJiaW5fd3JpdGVfdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVfaW50XzhiaXQiLCJiaW5fd3JpdGVfaW50XzE2Yml0IiwiYmluX3dyaXRlX2ludF8zMmJpdCIsImJpbl93cml0ZV9pbnRfNjRiaXQiLCJiaW5fd3JpdGVfaW50NjRfYml0cyIsImJpbl93cml0ZV9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IiwiYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImVsJDEiLCJtYXliZV9mbG9hdCIsImVsJDAiLCJmaXJzdCIsInJlcyIsImJpbl9yZWFkX2hhc2h0YmwiLCJiaW5fcmVhZF9rZXkiLCJiaW5fcmVhZF92YWwiLCJyZWFkX2t2X3BhaXIiLCJlbHMiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyIsInZlYyIsImJpbl9yZWFkX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQiLCJtYXQiLCJiaW5fcmVhZF9mbG9hdDY0X21hdCIsImJpbl9yZWFkX2JpZ3N0cmluZyIsImJpbl9yZWFkX3ZhcmlhbnRfaW50IiwiYmluX3JlYWRfaW50XzhiaXQiLCJiaW5fcmVhZF9pbnRfMTZiaXQiLCJiaW5fcmVhZF9pbnRfMzJiaXQiLCJiaW5fcmVhZF9pbnRfNjRiaXQiLCJiaW5fcmVhZF9pbnQ2NF9iaXRzIiwiYmluX3JlYWRfbmV0d29yazE2X2ludCIsImJpbl9yZWFkX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIiLCJiaW5fcmVhZF9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRfbmV0d29yazY0X2ludDY0IiwiYmluX3JlYWRfbWQ1IiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaGFwZV9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2hhcGVfaW50NjMiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2hhcGVfbmF0aXZlaW50IiwiYmluX3NoYXBlX25hdDAiLCJiaW5fc2hhcGVfZGlnZXN0IiwiYmluX3NoYXBlX2Zsb2F0MzJfdmVjIiwiYmluX3NoYXBlX2Zsb2F0NjRfdmVjIiwiYmluX3NoYXBlX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDMyX21hdCIsImJpbl9zaGFwZV9mbG9hdDY0X21hdCIsImJpbl9zaGFwZV9tYXQiLCJiaW5fc2hhcGVfYmlnc3RyaW5nIiwiYmluX3NoYXBlX2Zsb2F0YXJyYXkiLCJiaW5fc2hhcGVfdmFyaWFudF9pbnQiLCJiaW5fc2hhcGVfaW50XzhiaXQiLCJiaW5fc2hhcGVfaW50XzE2Yml0IiwiYmluX3NoYXBlX2ludF8zMmJpdCIsImJpbl9zaGFwZV9pbnRfNjRiaXQiLCJiaW5fc2hhcGVfaW50NjRfYml0cyIsImJpbl9zaGFwZV9uZXR3b3JrMTZfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyIiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0IiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaGFwZV9oYXNodGJsIiwieSIsImJpbl9zaGFwZV9mbG9hdF9hcnJheSIsImJpbl9zaGFwZV9sYXp5IiwiYmluX3NoYXBlX3BhaXIiLCJiaW5fc2hhcGVfdHJpcGxlIiwieiIsImJpbl9zaXplX3VuaXQiLCJiaW5fc2l6ZV9ib29sIiwiYmluX3NpemVfY2hhciIsImJpbl9zaXplX21kNSIsImJpbl9zaXplX2ludF9uYXQwIiwiYmluX3NpemVfaW50X25lZ2F0aXZlIiwiYmluX3NpemVfaW50IiwiYmluX3NpemVfaW50JDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfZmxvYXQiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl9zaXplX2ludDY0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fc2l6ZV91bml0JDAiLCJiaW5fc2l6ZV9ib29sJDAiLCJiaW5fc2l6ZV9jaGFyJDAiLCJiaW5fc2l6ZV9pbnQkMSIsImJpbl9zaXplX25hdDAkMCIsImJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyIsInNpemVfbGVuIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fc2l6ZV9tZDUkMSIsImJpbl9zaXplX2Zsb2F0JDAiLCJmIiwiYmluX3NpemVfaW50MzIkMCIsImJpbl9zaXplX2ludDY0JDAiLCJiaW5fc2l6ZV9uYXRpdmVpbnQiLCJiaW5fc2l6ZV9yZWYkMCIsImJpbl9zaXplX2VsIiwiYmluX3NpemVfbGF6eV90JDAiLCJiaW5fc2l6ZV9vcHRpb24kMCIsImJpbl9zaXplX3BhaXIkMCIsImJpbl9zaXplX2EiLCJiaW5fc2l6ZV9iIiwiYmluX3NpemVfdHJpcGxlJDAiLCJiaW5fc2l6ZV9jIiwiYmluX3NpemVfbGlzdCIsInNpemVfYWNjIiwibGVuX2FjYyIsImxlbl9hY2MkMCIsInNpemVfYWNjJDAiLCJiaW5fc2l6ZV9sZW4iLCJiaW5fc2l6ZV9mbG9hdGFycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheV9sb29wIiwidG90YWxfbGVuIiwidG90YWxfbGVuX3JlZiIsImJpbl9zaXplX2FycmF5IiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGgiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IiwiYmluX2Zsb2F0X2FycmF5IiwiYmluX3dyaXRlcl92YXJpYW50X2ludCIsImJpbl9yZWFkZXJfdmFyaWFudF9pbnQiLCJiaW5fdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVyX2ludF84Yml0IiwiYmluX3JlYWRlcl9pbnRfOGJpdCIsImJpbl9pbnRfOGJpdCIsImJpbl93cml0ZXJfaW50XzE2Yml0IiwiYmluX3JlYWRlcl9pbnRfMTZiaXQiLCJiaW5faW50XzE2Yml0IiwiYmluX3dyaXRlcl9pbnRfMzJiaXQiLCJiaW5fcmVhZGVyX2ludF8zMmJpdCIsImJpbl9pbnRfMzJiaXQiLCJiaW5fd3JpdGVyX2ludF82NGJpdCIsImJpbl9yZWFkZXJfaW50XzY0Yml0IiwiYmluX2ludF82NGJpdCIsImJpbl93cml0ZXJfaW50NjRfYml0cyIsImJpbl9yZWFkZXJfaW50NjRfYml0cyIsImJpbl9pbnQ2NF9iaXRzIiwiYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50IiwiYmluX25ldHdvcmsxNl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQiLCJiaW5fbmV0d29yazMyX2ludCIsImJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIiLCJiaW5fbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50IiwiYmluX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0IiwiYmluX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIiwiY252X3dyaXRlciIsImNudiIsInRwX2NsYXNzIiwiY252X3JlYWRlciIsInZ0YWciLCJmb3Jfc2hhcGUiLCJmb3Jfd3JpdGVyIiwiZm9yX3JlYWRlciIsImJpbl93cml0ZV9zaXplX2hlYWRlciIsImJpbl9yZWFkX3NpemVfaGVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX2R1bXAiLCJvcHQiLCJ3cml0ZXIiLCJzdGgiLCJoZWFkZXIiLCJwb3NfbGVuIiwidG90X2xlbiIsInBvc19sZW4kMCIsImJ1ZiQwIiwiYnVmJDEiLCJiaW5fcmVhZF9zdHJlYW0iLCJtYXhfc2l6ZSIsInJlYWQiLCJyZWFkZXIiLCJtYXhfc2l6ZSQwIiwibXNnIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJtYXliZV9hbm5vdGF0ZV9zaGFwZSIsIm1heWJlX3V1aWQiLCJzaGFwZSIsInV1aWQiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ0IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2hhcGVfZWwiLCJiaW5fd3JpdGVyIiwiYmluX3JlYWRlciIsInR5cGVfY2xhc3MiLCJiaW5fc2hhcGVfZWwxIiwiYmluX3NoYXBlX2VsMiIsImJpbl9zaXplX2VsMSIsImJpbl9zaXplX2VsMiIsImJpbl93cml0ZV9lbDEiLCJiaW5fd3JpdGVfZWwyIiwiYmluX3JlYWRfZWwxIiwiYmluX3JlYWRfZWwyIiwiYmluX3dyaXRlcjEiLCJiaW5fd3JpdGVyMiIsImJpbl9yZWFkZXIxIiwiYmluX3JlYWRlcjIiLCJ0eXBlX2NsYXNzMSIsInR5cGVfY2xhc3MyIiwiYmluX3NoYXBlX2VsMyIsImJpbl9zaXplX2VsMyIsImJpbl93cml0ZV9lbDMiLCJiaW5fcmVhZF9lbDMiLCJiaW5fd3JpdGVyMyIsImJpbl9yZWFkZXIzIiwidHlwZV9jbGFzczMiLCJtYXliZV9jYWxsZXJfaWRlbnRpdHkiLCJ3aXRoX21vZHVsZV9uYW1lIiwibW9kdWxlX25hbWUiLCJmdW5jdGlvbl9uYW1lIiwibW9kdWxlX25hbWUkMCIsInJhaXNlX3JlYWRfdG9vX211Y2giLCJyYWlzZV9yZWFkX25vdF9lbm91Z2giLCJzaXplX3JlZiIsImlkeCIsInJlc3VsdCIsInQxIiwidDIiLCJ0MyIsImJpbl9yZWFkX3VuaXQkMCIsInZpbnQiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZF9zdHJpbmckMCIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZF9mbG9hdGFycmF5JDAiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwic2V4cF9vZl90Iiwib2ZfYV8wMDMiLCJzdGFydF9hIiwiZW5kX2EiLCJ3cml0dGVuIiwiZXhwZWN0ZWRfc2l6ZSIsIm9mX2JpbmFibGUiLCJ0b19iaW5hYmxlIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ0b19vcGFxdWUiLCJibG9iIiwib2Zfb3BhcXVlX2V4biIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQwIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsInN0cmluZ19vZl9iaWdzdHJpbmciLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJ0b19vcGFxdWUkMCIsImJpbl93cml0ZXJfdiIsIm9mX29wYXF1ZV9leG4kMCIsImJpbl9yZWFkZXJfdiIsImVycm9yIiwiY29tcGFyZSQxIiwic2V4cF9vZl90JDEiLCJiaW5fc2l6ZV90JDUiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQyIiwicHJlX3Rlc3RfaG9vayIsIm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2giLCJ0IiwiZW5hYmxlX2V2ZXJ5dGhpbmciLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIiLCJ0b19zdHJpbmciLCJjb21iaW5lIiwidDEiLCJ0MiIsImNvbWJpbmVfYWxsIiwidHMiLCJ0ZXN0X21vZHVsZXNfcmFuIiwidGVzdF9tb2R1bGVzX2ZhaWxlZCIsInRlc3RzX3JhbiIsInRlc3RzX2ZhaWxlZCIsImR5bmFtaWNfbGliIiwiYWN0aW9uIiwiZm9yY2VfZHJvcCIsImdldCIsImN1cnJlbnQiLCJmb3VuZF90ZXN0IiwiaXNfY3VycmVudCIsInAiLCJjdXJyZW50JDAiLCJjdXJyZW50X3RhZ3MiLCJ0IiwibSIsInZlcmJvc2UiLCJzdHJpY3QiLCJzaG93X2NvdW50cyIsImxpc3RfdGVzdF9uYW1lcyIsImRlbGF5ZWRfZXJyb3JzIiwic3RvcF9vbl9lcnJvciIsImxvZyIsInRpbWVfc2VjIiwidXNlX2NvbG9yIiwiaW5fcGxhY2UiLCJkaWZmX2NvbW1hbmQiLCJzb3VyY2VfdHJlZV9yb290IiwiYWxsb3dfb3V0cHV0X3BhdHRlcm5zIiwiZGlzcGxheWVkX2Rlc2NyIiwiZGVzY3IiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJzIiwic3RyIiwiZmlsZSIsImluZGV4IiwiaW5kZXgkMCIsImkiLCJmaWxlbmFtZSQwIiwiaW5kZXhfc3RyaW5nIiwiaW5kZXgkMSIsInRhZyIsImwiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiZGVzY3IkMCIsImNvbXBsZXRlX3RhZ3MiLCJ1c2VkIiwibGluZV9udW1iZXJfb3B0IiwicG9zaXRpb25fc3RhcnQiLCJlbmRfb2ZfZGVmX2ZpbGVuYW1lIiwibGluZV9udW1iZXIiLCJmb3VuZCIsInJlcSIsImRyb3BwZWQiLCJkZXNjciQxIiwic3Vic3RyaW5nIiwic2hvdWxkX3J1biIsImRlc2NyJDIiLCJjaCIsInJlc3VsdCQwIiwiY2FtbF9yYW5kb21fc3RhdGUiLCJiYXNlX3JhbmRvbV9zdGF0ZSIsInJlc3VsdCIsImJhY2t0cmFjZSQwIiwiZXhuX3N0ciIsInNlcCIsInNldF9saWJfYW5kX3BhcnRpdGlvbiIsInN0YXRpY19saWIiLCJ3aGljaF90ZXN0cyIsInJlcXVpcmVzX3BhcnRpdGlvbiIsInVuc2V0X2xpYiIsInRlc3QiLCJiIiwidGVzdF91bml0IiwidGVzdF9tb2R1bGUiLCJwYXJ0aWFsX3RhZ3MiLCJwcmV2IiwieCIsImUkMCIsImUiLCJzdW1tYXJpemUiLCJrIiwiYWNjIiwiY291bnQiLCJjb3VudF90ZXN0X21vZHVsZXMiLCJ1bnVzZWRfdGVzdHMiLCJlcnJvcnMiLCJ1c2VfY29sb3IkMCIsImluX3BsYWNlJDAiLCJkaWZmX2NvbW1hbmQkMCIsInNvdXJjZV90cmVlX3Jvb3QkMCIsImFsbG93X291dHB1dF9wYXR0ZXJucyQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJvcHQiLCJmaWxlIiwic3RoIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiYnVmZmVyIiwiY2h1bmtfc2l6ZSIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJzdGgkMCIsImFwcGVuZCIsInN0aCQxIiwiZmFpbF9pZl9leGlzdHMiLCJzdGgkMiIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxpc3QkMCIsIndpZHRoIiwibGVmdCIsImxlZnRfY29sdW1uX3dpZHRoIiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwicmVmbCIsImNvbnYiLCJ4IiwibGlmdCIsImNvbXBhcmUiLCJhIiwiYiIsImVxdWFsIiwidWlkIiwibmV4dCIsIm5hbWUiLCJjb2RlIiwiaGFzaCIsInN0YXRpYyQwIiwiY29tcGFyZSQwIiwiazEiLCJrMiIsImNtcCIsImIkMCIsImEkMCIsInlzIiwieSIsInhzIiwibiIsImVxdWFsJDAiLCJoYXNoJDAiLCJzdGF0aWMkMSIsImtleSIsInQiLCJ1aWQkMCIsIm5hbWUkMCIsImNyZWF0ZSIsIm9wdCIsInN0aCIsInNhbWUiLCJubTEiLCJubTIiLCJzYW1lX3dpdG5lc3MiLCJzYW1lX3dpdG5lc3NfZXhuIiwiaW50JDAiLCJtZW0iLCJ0YWJsZSIsInNldCIsImRhdGEiLCJmaW5kIiwiZGF0YSQwIiwiZmFpbCIsInVpZF9hIiwidWlkX2IiLCJtc2ciLCJ3aXRuZXNzIiwidHlwZW5hbWVfb2ZfdCIsImMiLCJkIiwiZSIsImxhYmVsIiwiYXJpdHkiLCJhcmdzX2xhYmVscyIsImluZGV4Iiwib2NhbWxfcmVwciIsInR5aWQiLCJ0cmF2ZXJzZSIsImludGVybmFsX3VzZV9vbmx5IiwibGVuZ3RoIiwidGFnIiwiaXNfcG9seW1vcnBoaWMiLCJ2YWx1ZSIsImZvbGQiLCJpbml0IiwiZiIsImludGVybmFsX3VzZV9vbmx5JDAiLCJsYWJlbCQwIiwiaW5kZXgkMCIsImdldCIsImlzX211dGFibGUiLCJ0eWlkJDAiLCJ0cmF2ZXJzZSQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMSIsInR5cGVuYW1lX29mX3QkMCIsImxlbmd0aCQwIiwiZmllbGQiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImNyZWF0ZSQwIiwiZm9sZCQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMiIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsIm5hbWUkNCIsIm5hbWUkNSIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwibmFtZSQxNSIsIm5hbWUkMTYiLCJuYW1lJDE3IiwibmFtZSQxOCIsIm5hbWUkMTkiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2Zfc3RyaW5nIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX2xpc3QiLCJ0eXBlbmFtZV9vZl9hcnJheSIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfdHVwbGUwIiwidHlwZW5hbWVfb2ZfdHVwbGUyIiwidHlwZW5hbWVfb2ZfdHVwbGUzIiwidHlwZW5hbWVfb2ZfdHVwbGU0IiwidHlwZW5hbWVfb2ZfdHVwbGU1IiwicmVwIiwicmVwJDAiLCJyZXAkMSIsInJlcCQyIiwicmVwJDMiLCJyZXAkNCIsIm5hbWUkMjAiLCJhcml0eSQwIiwiYyQwIiwiYiQxIiwiYSQxIiwiZCQwIiwiYyQxIiwiYiQyIiwiYSQyIiwidHlwZW5hbWVfb2ZfdCQxIiwicm5nIiwiZG9tIiwicmVwJDUiLCJyZXAkNiIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsInIxIiwicjIkMCIsInIxJDAiLCJyMiQxIiwieCQwIiwicjEkMSIsInIyJDIiLCJ4JDEiLCJyMSQyIiwicjIkMyIsIngkMiIsInIxJDMiLCJyMiQ0IiwieCQzIiwicm5nMSIsImRvbTEiLCJybmcyIiwiZG9tMiIsInQxJDEiLCJ0MiQyIiwiYjIiLCJhMiIsImIxIiwiYTEiLCJjMiIsImIyJDAiLCJhMiQwIiwiYzEiLCJiMSQwIiwiYTEkMCIsImQyIiwiYzIkMCIsImIyJDEiLCJhMiQxIiwiZDEiLCJjMSQwIiwiYjEkMSIsImExJDEiLCJlMiIsImQyJDAiLCJjMiQxIiwiYjIkMiIsImEyJDIiLCJlMSIsImQxJDAiLCJjMSQxIiwiYjEkMiIsImExJDIiLCJyMSQ0IiwicjIkNSIsInIxJDUiLCJyMiQ2IiwibmFtZTEiLCJyMiQ3IiwibmFtZTIiLCJyMSQ3IiwieCQ0IiwidDEkMyIsInQyJDMiLCJ0MiQ0IiwicjEkNiIsInQxJDIiLCJyMiIsInQyJDEiLCJwcm9vZiIsImhlYWQiLCJ0JDAiLCJ0JDEiLCJ0eXBlcmVwX29mX2ludCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX3JlZiIsInR5cGVyZXBfb2ZfZnVuY3Rpb24iLCJ0eXBlcmVwX29mX3R1cGxlMCIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlNCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidmFsdWVfdHVwbGUwIiwidHlwZW5hbWVfb2ZfaW50NjMiLCJ0eXBlcmVwX29mX2ludDYzIiwicmVwcl9vZl9wb2x5X3ZhcmlhbnQiLCJ2YXJpYW50Iiwic2l6ZSIsInJlcHIiLCJoYXNoX3ZhcmlhbnQiLCJzIiwiYWNjdSIsImkiLCJkb3VibGVfYXJyYXlfdmFsdWUiLCJkb3VibGUkMCIsInNpbXBsZSIsIm1hcF92YXJpYW50IiwibWFwIiwidHlwZW5hbWUiLCJwb2x5bW9ycGhpYyIsInRhZyQwIiwiZmN0IiwiayIsInRhZ3MiLCJhdGFnIiwiYnRhZyIsIm1hcF9yZWNvcmQiLCJyZWNvcmQiLCJmaWVsZCQwIiwiZmllbGRzIiwiZ2V0JDAiLCJhZmllbGQiLCJiZmllbGQiLCJyZXF1aXJlZCIsInRhYmxlJDAiLCJjaGVja19kZXBlbmRlbmNpZXMiLCJpbXBsZW1lbnRzJDAiLCJtZXNzYWdlIiwicmVwbGFjZSQwIiwibWVtJDAiLCJ0YWJsZTAiLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJ0YWJsZTUiLCJpc19yZWdpc3RlcmVkIiwiaWRlbnQiLCJ1bml0IiwicmVnaXN0ZXIwIiwiY29tcHV0ZSIsInJlZ2lzdGVyMSIsInJlZ2lzdGVyMiIsInJlZ2lzdGVyMyIsInJlZ2lzdGVyNCIsInJlZ2lzdGVyNSIsInJlZ2lzdGVyIiwidHlwZXJlcF9vZl9hIiwib2ZfdHlwZXJlcCIsImNvbnRleHQiLCJtZW1vX3RhYmxlIiwicmVwJDExIiwicmVwJDEyIiwicmVwJDEzIiwicmVwJDE0IiwicmVwJDE1IiwidHVwbGUiLCJyYSIsInJiIiwicmEkMCIsInJiJDAiLCJyYyIsInJhJDEiLCJyYiQxIiwicmMkMCIsInJkIiwicmEkMiIsInJiJDIiLCJyYyQxIiwicmQkMCIsInJlIiwiY29udGVudCIsIm5hbWVkIiwic2hhcmVkIiwiY3VzdG9tIiwiY3VzdG9tJDAiLCJjdXN0b20kMSIsInJlcCQ3IiwiY3VzdG9tJDIiLCJjdXN0b20kMyIsInJlcCQ4IiwiY3VzdG9tJDQiLCJjdXN0b20kNSIsInJlcCQ5IiwidHlwZW5hbWVfb2ZfdCQyIiwiY3VzdG9tJDYiLCJjdXN0b20kNyIsInJlcCQxMCIsInR5cGVuYW1lX29mX3QkMyIsImN1c3RvbSQ4IiwiY3VzdG9tJDkiLCJjb21wdXRhdGlvbiIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIiwic2hhcmUiLCJvZl9wMSIsIm9mX3AyIiwib2ZfcDMiLCJvZl9wNCIsIm9mX3A1IiwidHlwZW5hbWVfb2ZfbmFtZWQiLCJ0eXBlcmVwX29mX3QiLCJlcnJvcl9zb3VyY2VfMDI0IiwiaGFzaF9mb2xkX3QiLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsIm1pbiIsIm1heCIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJiZXR3ZWVuIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJjb21wYXJhdG9yIiwicHAiLCJoYXNoYWJsZSIsImVxdWFsIiwicmVsYXRpdmVfdG8iLCJkaXIiLCJ0IiwidiIsImV4biQwIiwiZXhuIiwiZGlyX29yX2Vycm9yIiwiaW5pdGlhbF9kaXIiLCJ0X29mX3NleHAkMCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZmlsZW5hbWVfMDA0IiwibGluZV9udW1iZXJfMDA2IiwibGluZV9zdGFydF8wMDgiLCJzdGFydF9wb3NfMDEwIiwiZW5kX3Bvc18wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI2IiwiZmllbGRfc2V4cF8wMTckNSIsImZpZWxkX3NleHBfMDE3IiwieF8wMjciLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE3JDQiLCJmdmFsdWVfMDE5IiwiZW5kX3Bvc18wMTMiLCJzdGFydF9wb3NfMDExIiwibGluZV9zdGFydF8wMDkiLCJsaW5lX251bWJlcl8wMDciLCJmaWxlbmFtZV8wMDUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDM3Iiwic3RhcnRfcG9zXzAzNSIsImxpbmVfc3RhcnRfMDMzIiwibGluZV9udW1iZXJfMDMxIiwiZmlsZW5hbWVfMDI5IiwiYXJnXzAzOCIsImJuZHNfMDI4IiwiYXJnXzAzNiIsImJuZHNfMDI4JDAiLCJhcmdfMDM0IiwiYm5kc18wMjgkMSIsImFyZ18wMzIiLCJibmRzXzAyOCQyIiwiYXJnXzAzMCIsImJuZHNfMDI4JDMiLCJjb21wYXJlJDAiLCJhXzAzOSIsImJfMDQwIiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwiZmlsZW5hbWUiLCJvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiIsInBvcyIsInNleHBfb2ZfdCQxIiwiY29tcGFyZSQyIiwidG9fc3RyaW5nJDAiLCJvZl9zdHJpbmckMCIsInMiLCJpIiwib2ZfYV8wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImNtcF9hIiwiYV8wMDciLCJiXzAwOCIsImFfMDA5IiwiYl8wMTAiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiZ2V0X2N1cnJlbnQiLCJzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXQiLCJsb2NhdGlvbiIsInBvcyIsInByZXZfcG9zIiwicHJldl9wb3MkMCIsImxlbiIsImJhc2ljX2ZsdXNoIiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dCIsImluc3RhbmNlIiwidGVzdHNfcnVuJDAiLCJzeW1ib2xfYmluZCIsInJldHVybiQwIiwiZmx1c2giLCJleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUiLCJzIiwiZ2V0X291dHB1dHNfYW5kX2NsZWFudXAiLCJsYXN0X29mcyIsIm5leHRfb2ZzIiwibG9jIiwiYWNjIiwib2ZzIiwib3V0cHV0cyIsInRyYWlsaW5nX291dHB1dCIsInNhdmVfb3V0cHV0IiwidHJhaWxpbmciLCJibG9ja3MiLCJmaW5hbF9mbHVzaCIsIm9wdCIsImsiLCJzdGgiLCJjb3VudCIsIm1heF9hdHRlbXB0cyIsInJ1biQwIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJhcHBlbmQiLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4IiwiYmluZCIsInQiLCJmIiwidG9fcnVuIiwic2FuaXRpemUiLCJzIiwicnVuIiwiZmx1c2hlZCIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsIm9wdCIsInN0aCIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyIsInRvY3MkMCIsInRvYyIsImZvcmdldF90b2NzIiwiZm9yZ2V0X3RvYyQwIiwiZm9yZ2V0X3QiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJlbXB0eSIsImdldF9tYW55Iiwic3RhY2skMCIsInN0YWNrIiwiZW1wdHkkMCIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwiY2FtbF9wYXJzZXJfZW52IiwiXzEiLCJfMiIsInl5YWN0IiwieXl0YWJsZXMiLCJzZXhwIiwibGV4ZnVuIiwibGV4YnVmIiwic2V4cF9vcHQiLCJzZXhwcyIsInJldl9zZXhwcyIsInNleHBzX2FicyIsIm9jYW1sX2xleF90YWJsZXMiLCJidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsInNjYW5fc3RyaW5nIiwibG9jcyIsImxvY3MkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJsb2NzJDEiLCJsb2NzJDIiLCJzdGFydCIsImdlbl9sb2FkX3NleHBfbG9jIiwidW5pdCIsIm9mX2ludF9zdHlsZSIsIm9mX2Zsb2F0X3N0eWxlIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX21hY2giLCJ0b19zdHJpbmdfaHVtIiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsImRlZmF1bHRfaW5kZW50IiwibWVzc2FnZSIsImNvbXBhcmUiLCJlcXVhbCIsInRfc2V4cF9ncmFtbWFyIiwid2l0aF9uZXdfYnVmZmVyIiwib2MiLCJvdXRwdXRfaHVtIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJpbmRlbnQiLCJvdXRwdXRfbWFjaCIsInBybmciLCJ0ZW1wX2ZpbGVfbmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInYiLCJyYW5kX3N0YXRlIiwicmV0Iiwicm5kIiwib3Blbl90ZW1wX2ZpbGUiLCJvcHQiLCJzdGgiLCJwZXJtIiwiY291bnRlciIsIm5hbWUiLCJlJDAiLCJlIiwiY291bnRlciQwIiwic2F2ZV9vZl9vdXRwdXQiLCJvdXRwdXRfZnVuY3Rpb24iLCJmaWxlIiwidG1wX25hbWUiLCJvdXRwdXRfc2V4cF9ubCIsImRvX291dHB1dCIsInNhdmVfaHVtIiwic2F2ZV9tYWNoIiwib3V0cHV0X3NleHBzX25sIiwic2F2ZV9zZXhwc19odW0iLCJzYXZlX3NleHBzX21hY2giLCJzY2FuX3NleHAiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9zZXhwcyIsInNjYW5fcmV2X3NleHBzIiwiZ2V0X21haW5fYnVmIiwiYnVmJDAiLCJidWYkMSIsInNjYW5fZm9sZF9zZXhwcyIsImluaXQiLCJtYWluIiwiYWNjIiwiYWNjJDAiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBzX2NvbnYiLCJjb2xsIiwic2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UiLCJjb250YWluaW5nX3NleHAiLCJsb2NhdGlvbiIsImludmFsaWRfc2V4cCIsImV4biIsIngkMCIsIngkMSIsIngkMiIsImdldF9zZXhwIiwiZ2V0X3JhbmdlIiwicmFuZ2UiLCJzZXhwX29mX2NvbnYiLCJzZXhwX29mX2EiLCJhIiwiZmluZF9zZXhwIiwiYW5ub3Rfc2V4cCIsImxvb3AiLCJzdWJfc2V4cCIsImFubm90cyIsInJlcyIsImV4biQwIiwiaW52YWxpZF9zZXhwJDAiLCJjcmVhdGUiLCJ0ZXh0X2xpbmUiLCJzdGgkMCIsInRleHRfY2hhciIsInN0aCQxIiwiYnVmX3BvcyIsInN0aCQyIiwiZ2xvYmFsX29mZnNldCIsImZhaWwiLCJtc2ciLCJ3aXRoX2J1Zl9wb3MiLCJwZSIsInBwb3MiLCJhbm5vdGF0ZV9zZXhwIiwiaXRlciIsInN0YXJ0X3BvcyQwIiwiYW5ub3QiLCJlbmRfcG9zJDAiLCJyYWlzZV9mb3VuZCIsInN0YXRlIiwicmFpc2VfZm91bmQkMCIsInBvc2l0aW9ucyIsInBhcnNlX3Bvc19vZl9zdGF0ZSIsInJ1bl9mZWVkX2xvb3AiLCJzdGFjayIsImxlbiIsInN0ciIsInN0cl9sZW4iLCJwb3NfbGVuIiwibWF4X3BvcyIsInByZXZpb3VzX29mZnNldCIsInN0YWNrJDAiLCJyZXN1bHQiLCJvZmZzZXQiLCJuZXh0X3BvcyIsImVyciIsInBhcnNlX3N0YXRlIiwicGFyc2VfZXJyb3IiLCJ1c2VkX3JlZiIsInBhcnNlX2Z1biIsImNvbnRfc3RhdGUiLCJwYXJzZSIsInBhcnNlX3BvcyIsImxlbiQwIiwicmFpc2VfZm91bmQkMSIsImxlbmd0aCIsInVuc2FmZV9mZWVkX2xvb3AiLCJzdGFjayQxIiwicG9zJDEiLCJwYXJzZV9zdHIiLCJyYWlzZV9mb3VuZCQyIiwibGVuZ3RoJDAiLCJ1bnNhZmVfZmVlZF9sb29wJDAiLCJwYXJzZV9zdHJfYW5ub3QiLCJyYWlzZV9mb3VuZCQzIiwibGVuZ3RoJDEiLCJ1bnNhZmVfZmVlZF9sb29wJDEiLCJwYXJzZV9iaWdzdHJpbmciLCJyYWlzZV9mb3VuZCQ0IiwibGVuZ3RoJDIiLCJ1bnNhZmVfZmVlZF9sb29wJDIiLCJwYXJzZV9iaWdzdHJpbmdfYW5ub3QiLCJta190aGlzX3BhcnNlIiwibXlfcGFyc2UiLCJwYXJzZV9wb3MkMCIsInBhcnNlX3BvcyQxIiwiZmVlZF9lbmRfb2ZfaW5wdXQiLCJ0aGlzX3BhcnNlIiwid3NfYnVmIiwiZ2VuX2lucHV0X3NleHAiLCJpYyIsInRoaXNfcGFyc2UkMSIsInNleHAkMCIsInRoaXNfcGFyc2UkMCIsImlucHV0X3NleHAiLCJnZW5faW5wdXRfcmV2X3NleHBzIiwicmV2X3NleHBzX3JlZiIsImJ1Zl9sZW4iLCJsZW4kMiIsInRoaXNfcGFyc2UkMiIsIm5fcGFyc2VkIiwibmV3X2xlbiIsImxlbiQxIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJvZl9zdHJpbmdfYmlnc3RyaW5nIiwibG9jIiwiZ2V0X2xlbiIsImdldF9zdWIiLCJjb250X3N0YXRlX3N0ciIsIm9mX3N0cmluZyIsIm9mX3N0cmluZ19tYW55IiwiZ2V0X2JzdHJfc3ViX3N0ciIsImJzdHIiLCJpIiwiYnN0cl93c19idWYiLCJvZl9iaWdzdHJpbmciLCJnZW5fbG9hZF9yZXZfc2V4cHMiLCJleGMkMCIsImV4YyIsImxvYWRfcmV2X3NleHBzIiwibG9hZF9zZXhwcyIsImdlbl9sb2FkX3NleHAiLCJzdHJpY3QiLCJ0aGlzX3BhcnNlJDQiLCJzZXhwJDEiLCJ0aGlzX3BhcnNlJDMiLCJjb250X3N0YXRlJDAiLCJsb2FkX3NleHAiLCJnZXRfc2V4cCQwIiwiZ2V0X3JhbmdlJDAiLCJzZXhwX29mX2NvbnYkMCIsImZpbmRfc2V4cCQwIiwiaW5wdXRfcmV2X3NleHBzJDAiLCJpbnB1dF9zZXhwJDAiLCJpbnB1dF9zZXhwcyQwIiwib2Zfc3RyaW5nJDAiLCJvZl9iaWdzdHJpbmckMCIsImxvYWRfcmV2X3NleHBzJDAiLCJsb2FkX3NleHBzJDAiLCJsb2FkX3NleHAkMCIsImNvbnYiLCJiYWRfc2V4cCIsImJhZF9hbm5vdF9zZXhwIiwiZ2V0X2NvbnZfZXhuIiwibGluZSIsImxvYWRfc2V4cF9jb252IiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyQwIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIiwiYmlnc3RyaW5nX29mX3NleHAiLCJmbG9hdF92ZWNfb2Zfc2V4cCIsImVtcHR5X2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdF92ZWMiLCJjcmVhdGVfZmxvYXQzMl92ZWMiLCJjcmVhdGVfZmxvYXQ2NF92ZWMiLCJlbXB0eV9mbG9hdDMyX3ZlYyIsImVtcHR5X2Zsb2F0NjRfdmVjIiwiZmxvYXQzMl92ZWNfb2Zfc2V4cCIsImZsb2F0NjRfdmVjX29mX3NleHAiLCJ2ZWNfb2Zfc2V4cCIsImNoZWNrX3Rvb19tdWNoX2RhdGEiLCJkYXRhIiwiZmxvYXRfbWF0X29mX3NleHAiLCJjcmVhdGVfZmxvYXRfbWF0Iiwic24iLCJzbSIsImRhdGEkMCIsImRhdGEkMSIsImNvbCQwIiwiY3JlYXRlX2Zsb2F0MzJfbWF0IiwiY3JlYXRlX2Zsb2F0NjRfbWF0IiwiZmxvYXQzMl9tYXRfb2Zfc2V4cCIsImZsb2F0NjRfbWF0X29mX3NleHAiLCJtYXRfb2Zfc2V4cCIsInN0cmluZ19vZl9vZl9zZXhwX29mIiwidG9fc2V4cCIsIm9mX3N0cmluZ19vZl9vZl9zZXhwIiwib2Zfc2V4cCIsInRfb2Zfc2V4cCIsInRfb2Zfc2V4cCQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X29mX3NleHAiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYm9vbCIsImJvb2xfb2Zfc2V4cCIsImJvb2xfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2NoYXIiLCJjaGFyX29mX3NleHAiLCJjaGFyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50IiwiaW50X29mX3NleHAiLCJpbnRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfb2Zfc2V4cCIsImludDMyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9vZl9zZXhwIiwiaW50NjRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3JlZiIsInJlZl9vZl9zZXhwIiwicmVmX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fb2Zfc2V4cCIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2xpc3QiLCJsaXN0X29mX3NleHAiLCJsaXN0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwiYXJyYXlfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJleG5fc2V4cF9ncmFtbWFyIiwiY29lcmNlIiwiZG9jX2NvbW1lbnRfdGFnIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwidGFnIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwic2V4cDEiLCJyZWdpc3RlcjIiLCJzZXhwX29mX2FyZzIiLCJzZXhwMiIsInJlZ2lzdGVyMyIsInNleHBfb2ZfYXJnMyIsInNleHAzIiwicmVnaXN0ZXI0Iiwic2V4cF9vZl9hcmc0Iiwic2V4cDQiLCJyZWdpc3RlcjUiLCJzZXhwX29mX2FyZzUiLCJzZXhwNSIsInJlZ2lzdGVyNiIsInNleHBfb2ZfYXJnNiIsInNleHA2IiwicmVnaXN0ZXI3Iiwic2V4cF9vZl9hcmc3Iiwic2V4cDciLCJyZWdpc3RlcjgiLCJzZXhwX29mX2FyZzgiLCJzZXhwOCIsInJlZ2lzdGVyOSIsInNleHBfb2ZfYXJnOSIsInNleHA5IiwicmVnaXN0ZXIxMCIsInNleHBfb2ZfYXJnMTAiLCJzZXhwMTAiLCJpbnQ2NCQwIiwiZ29sZGVuX2dhbW1hIiwicG9wY291bnQiLCJvZl9pbnQiLCJzZWVkIiwiY29weSIsIm9kZF9nYW1tYSIsIm1peF9iaXRzIiwieiIsIm4iLCJtaXg2NCIsInokMCIsInokMSIsIm5leHRfc2VlZCIsInQiLCJuZXh0Iiwib2Zfc2VlZF9hbmRfZ2FtbWEiLCJnYW1tYSIsInNlZWQkMCIsInJhbmRvbV9pbnQ2NCIsInJhbmRvbV9zdGF0ZSIsImNyZWF0ZSIsInNwbGl0IiwibmV4dF9pbnQ2NCIsInBlcnR1cmIiLCJzYWx0IiwiYm9vbCIsInN0YXRlIiwieCIsImludDY0IiwibG8iLCJoaSIsInJlbWFpbmRlcl9tYXhpbXVtIiwiZHJhdyQwIiwicmVtYWluZGVyIiwiZHJhd19tYXhpbXVtIiwiZHJhdyIsImludCQwIiwibG8kMCIsImhpJDAiLCJpbnQzMiIsIm5hdGl2ZWludCIsImludDYzIiwiZG91YmxlX3VscCIsInVuaXRfZmxvYXRfZnJvbV9pbnQ2NCIsInVuaXRfZmxvYXQiLCJmbG9hdCQwIiwicmFuZ2UiLCJtaWQiLCJmIiwiYml0c190b19yZXByZXNlbnQiLCJ0JDAiLCJsb2dfdW5pZm9ybSIsIm1pbl9iaXRzIiwibWF4X2JpdHMiLCJiaXRzIiwidF9zZXhwX2dyYW1tYXIiLCJvZl9mbG9hdCIsInRvX2Zsb2F0Iiwib2ZfaW50X2V4biIsInRvX2ludF9leG4iLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcXVhbCIsImNvbXBhcmUiLCJtaW4iLCJtYXgiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiYmV0d2VlbiIsImNsYW1wX2V4biIsImNsYW1wIiwiY29tcGFyYXRvciIsInBwIiwiaGFzaGFibGUiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImludmFyaWFudCIsInRvX3N0cmluZ19odW0iLCJvbmUiLCJtaW51c19vbmUiLCJyZW0iLCJyb3VuZCIsInJvdW5kX3Rvd2FyZHNfemVybyIsInJvdW5kX2Rvd24iLCJyb3VuZF91cCIsInJvdW5kX25lYXJlc3QiLCJzdWNjIiwicHJlZCIsInBvdyIsImJpdF9hbmQiLCJiaXRfb3IiLCJiaXRfeG9yIiwiYml0X25vdCIsInBvcGNvdW50JDAiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJkZWNyIiwiaW5jciIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0X2V4biIsInRvX2ludDY0Iiwib2ZfbmF0aXZlaW50X2V4biIsInRvX25hdGl2ZWludF9leG4iLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJjZWlsX3BvdzIiLCJmbG9vcl9wb3cyIiwiY2VpbF9sb2cyIiwiZmxvb3JfbG9nMiIsImlzX3BvdzIiLCJjbHoiLCJjdHoiLCJzeW1ib2wiLCJsbm90IiwiYWJzIiwiemVybyIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInRfc2V4cF9ncmFtbWFyJDAiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsImVxdWFsJDAiLCJjb21wYXJlJDAiLCJtaW4kMCIsIm1heCQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjb21wYXJhdG9yJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwiemVybyQwIiwib25lJDAiLCJtaW51c19vbmUkMCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwibmVnIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwicmVtJDAiLCJzeW1ib2wkMTciLCJsYW5kIiwibG9yIiwibHhvciIsImxub3QkMCIsImxzbCIsImFzciIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJhYnMkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQxIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsIm51bV9iaXRzJDAiLCJtYXhfdmFsdWUkMCIsIm1pbl92YWx1ZSQwIiwibHNyIiwic2hpZnRfcmlnaHRfbG9naWNhbCQwIiwiY2VpbF9wb3cyJDAiLCJmbG9vcl9wb3cyJDAiLCJjZWlsX2xvZzIkMCIsImZsb29yX2xvZzIkMCIsImlzX3BvdzIkMCIsImNseiQwIiwiY3R6JDAiLCJ0X3NleHBfZ3JhbW1hciQyIiwib2ZfZmxvYXQkMiIsInRvX2Zsb2F0JDIiLCJvZl9pbnRfZXhuJDIiLCJ0b19pbnRfZXhuJDIiLCJoYXNoX2ZvbGRfdCQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDIiLCJlcXVhbCQyIiwiY29tcGFyZSQyIiwibWluJDIiLCJtYXgkMiIsImFzY2VuZGluZyQyIiwiZGVzY2VuZGluZyQyIiwiYmV0d2VlbiQyIiwiY2xhbXBfZXhuJDIiLCJjbGFtcCQyIiwiY29tcGFyYXRvciQyIiwicHAkMiIsImhhc2hhYmxlJDIiLCJpc19wb3NpdGl2ZSQyIiwiaXNfbm9uX25lZ2F0aXZlJDIiLCJpc19uZWdhdGl2ZSQyIiwiaXNfbm9uX3Bvc2l0aXZlJDIiLCJzaWduJDIiLCJpbnZhcmlhbnQkMiIsInRvX3N0cmluZ19odW0kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJyZW0kMiIsInJvdW5kJDIiLCJyb3VuZF90b3dhcmRzX3plcm8kMiIsInJvdW5kX2Rvd24kMiIsInJvdW5kX3VwJDIiLCJyb3VuZF9uZWFyZXN0JDIiLCJzdWNjJDIiLCJwcmVkJDIiLCJwb3ckMiIsImJpdF9hbmQkMiIsImJpdF9vciQyIiwiYml0X3hvciQyIiwiYml0X25vdCQyIiwicG9wY291bnQkMyIsInNoaWZ0X2xlZnQkMiIsInNoaWZ0X3JpZ2h0JDIiLCJkZWNyJDIiLCJpbmNyJDIiLCJvZl9pbnQzMl9leG4kMiIsInRvX2ludDMyX2V4biQyIiwib2ZfaW50NjRfZXhuJDIiLCJ0b19pbnQ2NCQyIiwib2ZfbmF0aXZlaW50X2V4biQyIiwidG9fbmF0aXZlaW50X2V4biQyIiwib2ZfZmxvYXRfdW5jaGVja2VkJDIiLCJudW1fYml0cyQyIiwibWF4X3ZhbHVlJDIiLCJtaW5fdmFsdWUkMiIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMiIsImNlaWxfcG93MiQyIiwiZmxvb3JfcG93MiQyIiwiY2VpbF9sb2cyJDIiLCJmbG9vcl9sb2cyJDIiLCJpc19wb3cyJDIiLCJjbHokMiIsImN0eiQyIiwic3ltYm9sJDMzIiwibG5vdCQyIiwiYWJzJDIiLCJ6ZXJvJDIiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJ0X3NleHBfZ3JhbW1hciQzIiwib2ZfZmxvYXQkMyIsInRvX2Zsb2F0JDMiLCJvZl9pbnRfZXhuJDMiLCJ0b19pbnRfZXhuJDMiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsIm9mX3N0cmluZyQzIiwidG9fc3RyaW5nJDMiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJlcXVhbCQzIiwiY29tcGFyZSQzIiwibWluJDMiLCJtYXgkMyIsImFzY2VuZGluZyQzIiwiZGVzY2VuZGluZyQzIiwiYmV0d2VlbiQzIiwiY2xhbXBfZXhuJDMiLCJjbGFtcCQzIiwiY29tcGFyYXRvciQzIiwicHAkMyIsImhhc2hhYmxlJDMiLCJpc19wb3NpdGl2ZSQzIiwiaXNfbm9uX25lZ2F0aXZlJDMiLCJpc19uZWdhdGl2ZSQzIiwiaXNfbm9uX3Bvc2l0aXZlJDMiLCJzaWduJDMiLCJpbnZhcmlhbnQkMyIsInRvX3N0cmluZ19odW0kMyIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJuZWckMSIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsInN5bWJvbCQ0OSIsInN5bWJvbCQ1MCIsInJlbSQzIiwic3ltYm9sJDUxIiwibGFuZCQxIiwibG9yJDEiLCJseG9yJDEiLCJsbm90JDMiLCJsc2wkMSIsImFzciQxIiwicm91bmQkMyIsInJvdW5kX3Rvd2FyZHNfemVybyQzIiwicm91bmRfZG93biQzIiwicm91bmRfdXAkMyIsInJvdW5kX25lYXJlc3QkMyIsImFicyQzIiwic3VjYyQzIiwicHJlZCQzIiwicG93JDMiLCJiaXRfYW5kJDMiLCJiaXRfb3IkMyIsImJpdF94b3IkMyIsImJpdF9ub3QkMyIsInBvcGNvdW50JDQiLCJzaGlmdF9sZWZ0JDMiLCJzaGlmdF9yaWdodCQzIiwiZGVjciQzIiwiaW5jciQzIiwib2ZfaW50MzJfZXhuJDMiLCJ0b19pbnQzMl9leG4kMyIsIm9mX2ludDY0X2V4biQzIiwidG9faW50NjQkMyIsIm9mX25hdGl2ZWludF9leG4kMyIsInRvX25hdGl2ZWludF9leG4kMyIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQzIiwibnVtX2JpdHMkMyIsIm1heF92YWx1ZSQzIiwibWluX3ZhbHVlJDMiLCJsc3IkMSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMyIsImNlaWxfcG93MiQzIiwiZmxvb3JfcG93MiQzIiwiY2VpbF9sb2cyJDMiLCJmbG9vcl9sb2cyJDMiLCJpc19wb3cyJDMiLCJjbHokMyIsImN0eiQzIiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5IiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsInN1bSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwidyIsIm4iLCJyZWNfbGlzdCIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm9wdCIsInN0aCIsIm1pbl9sZW5ndGgiLCJzdGgkMCIsIm1heF9sZW5ndGgiLCJ1cHBlcl9ib3VuZCIsIm1heF9sZW5ndGgkMCIsImxlbiIsInJlbWFpbmluZyIsIm1heF9pbmRleCIsInVuaXQiLCJib29sIiwib3B0aW9uIiwidmFsdWVfdCIsImVpdGhlciIsImZzdF90Iiwic25kX3QiLCJyZXN1bHQiLCJva190IiwiZXJyX3QiLCJvayIsImVyciIsImxpc3RfZ2VuZXJpYyIsImVsdF9nZW4iLCJsaXN0X25vbl9lbXB0eSIsImxpc3Rfd2l0aF9sZW5ndGgiLCJsZW5ndGgiLCJsaXN0X2ZpbHRlcmVkIiwiZWx0cyIsImVsdHMkMCIsImxlbmd0aF9vZl9pbnB1dCIsImxlbmd0aF9vZl9vdXRwdXQiLCJpbmRpY2VzIiwibGlzdF9wZXJtdXRhdGlvbnMiLCJyZWYiLCJjaGFyX3VuaWZvcm1faW5jbHVzaXZlIiwiY2hhcl91cHBlcmNhc2UiLCJjaGFyX2xvd2VyY2FzZSIsImNoYXJfZGlnaXQiLCJjaGFyX3ByaW50X3VuaWZvcm0iLCJjaGFyX3VuaWZvcm0iLCJjaGFyX2FscGhhIiwiY2hhcl9hbHBoYW51bSIsImNoYXJfd2hpdGVzcGFjZSIsImNoYXJfcHJpbnQiLCJjaGFyJDAiLCJzbWFsbF9pbnQiLCJhbGxvd196ZXJvIiwibG93ZXJfYm91bmQiLCJ3ZWlnaHRlZF9sb3ciLCJ3ZWlnaHRlZF9oaWdoIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsInVuaWZvcm0iLCJsb2dfdW5pZm9ybSIsImludCQwIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwidW5pZm9ybSQwIiwibG9nX3VuaWZvcm0kMCIsImludDMyIiwiaW50MzJfdW5pZm9ybSIsImludDMyX2luY2x1c2l2ZSIsImludDMyX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50MzJfbG9nX2luY2x1c2l2ZSIsImludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsInVuaWZvcm0kMSIsImxvZ191bmlmb3JtJDEiLCJpbnQ2MyIsImludDYzX3VuaWZvcm0iLCJpbnQ2M19pbmNsdXNpdmUiLCJpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSIsImludDYzX2xvZ19pbmNsdXNpdmUiLCJpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJzeW1ib2wkMzYiLCJsbm90JDIiLCJhYnMkMiIsInplcm8kMiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInVuaWZvcm0kMiIsImxvZ191bmlmb3JtJDIiLCJpbnQ2NCIsImludDY0X3VuaWZvcm0iLCJpbnQ2NF9pbmNsdXNpdmUiLCJpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2xvZ19pbmNsdXNpdmUiLCJpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJ1bmlmb3JtJDMiLCJsb2dfdW5pZm9ybSQzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X3VuaWZvcm0iLCJuYXRpdmVpbnRfaW5jbHVzaXZlIiwibmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlIiwibmF0aXZlaW50X2xvZ19pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXYiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X251bV9tYW50aXNzYV9iaXRzIiwibnVtX2JpdHMiLCJiaXRzIiwiZmxvYXRfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfZXhwb25lbnQiLCJmbG9hdF96ZXJvIiwibGV0X3N5bnRheF8wMTIiLCJsZXRfc3ludGF4XzAxMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJmbG9hdF9zdWJub3JtYWwiLCJmbG9hdF9ub3JtYWwiLCJmbG9hdF9pbmZpbml0ZSIsImxldF9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjIiLCJmbG9hdF9uYW4iLCJmbG9hdF9vZl9jbGFzcyIsImMiLCJmbG9hdF9tYXRjaGluZ19jbGFzc2VzIiwiZmxvYXRfZmluaXRlIiwiZmxvYXRfd2l0aG91dF9uYW4iLCJmbG9hdCQwIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJtYXhfdG90YWxfc2l6ZSIsImEiLCJiIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImJpZ2FycmF5Ml9kaW0iLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsInYiLCJkaW0yJDAiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImsiLCJkcm9wX2tleXMiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsIm1vZF9uYW1lIiwibW9kX25hbWUkMCIsIm1vZF9uYW1lJDEiLCJtb2RfbmFtZSQyIiwibW9kX25hbWUkMyIsIm1vZF9uYW1lJDQiLCJtb2RfbmFtZSQ1IiwibW9kX25hbWUkNiIsIm1vZF9uYW1lJDciLCJtb2RfbmFtZSQ4IiwibW9kX25hbWUkOSIsIm1heF92YWx1ZSQxMiIsIm1vZF9uYW1lJDEwIiwicmFpc2VfY2Fubm90X3JlcHIiLCJ0b19zdHJpbmciLCJ4IiwidHJ1bmNfdW5zaWduZWQiLCJjb252IiwibG9nYW5kIiwibWFzayIsImV4bl91bnNpZ25lZCIsImVxdWFsIiwieSIsInRydW5jX3NpZ25lZCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsInNoaWZ0IiwiZXhuX3NpZ25lZCIsImlkZW50aXR5X2lmX3Bvc2l0aXZlIiwiZ3JlYXRlcl9lcXVhbCIsInplcm8iLCJvZl9zZXhwX2Vycm9yIiwid2hhdCIsInNleHAiLCJ0b19pbnQzMiIsInRvX2ludDY0IiwiY29tcGFyZSIsImhhc2hfZm9sZF90IiwiZnVuYyIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJ0eXBlcmVwX29mX3QiLCJ0eXBlbmFtZV9vZl90IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwic2lnbmVkIiwibnVtX2JpdHMiLCJudW1fYnl0ZXMiLCJ0cnVuYyIsImV4biIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJsb2dhbmQ2NCIsIm1hc2s2NCIsImVxdWFsJDAiLCJlcXVhbDY0IiwidG9fc3RyaW5nJDAiLCJ0b19zdHJpbmc2NCIsInRydW5jJDAiLCJleG4kMCIsInRydW5jNjQiLCJleG42NCIsIm9mX2Jhc2VfaW50X3RydW5jJDAiLCJvZl9iYXNlX2ludF9leG4kMCIsInRvX2Jhc2VfaW50JDAiLCJvZl91aW50MTZfdHJ1bmMiLCJvZl91aW50MTZfZXhuIiwib2ZfdWludDMyX3RydW5jIiwib2ZfdWludDMyX2V4biIsIm9mX3VpbnQ2M190cnVuYyIsIm9mX3VpbnQ2M19leG4iLCJvZl91aW50NjRfdHJ1bmMiLCJvZl91aW50NjRfZXhuIiwib2ZfaW50OF93cmFwIiwib2ZfaW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiY29tcGFyZSQzIiwiaGFzaF9mb2xkX3QkMSIsImZ1bmMkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF9vZl90JDEiLCJ0eXBlcmVwX29mX3QkMSIsInR5cGVuYW1lX29mX3QkMSIsInplcm8kMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJtaW5fdmFsdWUkMSIsIm1heF92YWx1ZSQxIiwic2lnbmVkJDEiLCJudW1fYml0cyQxIiwibnVtX2J5dGVzJDEiLCJ0cnVuYyQxIiwiZXhuJDEiLCJvZl9iYXNlX2ludF90cnVuYyQxIiwib2ZfYmFzZV9pbnRfZXhuJDEiLCJ0b19iYXNlX2ludCQxIiwib2ZfaW50OCIsIm9mX2ludDMyX3RydW5jJDAiLCJvZl9pbnQzMl9leG4kMCIsIm9mX2ludDYzX3RydW5jJDAiLCJvZl9pbnQ2M19leG4kMCIsIm9mX2ludDY0X3RydW5jJDAiLCJvZl9pbnQ2NF9leG4kMCIsIm9mX3VpbnQxNl93cmFwIiwib2ZfdWludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsImNvbXBhcmUkNSIsImhhc2hfZm9sZF90JDIiLCJmdW5jJDIiLCJoYXNoJDIiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJ0eXBlbmFtZV9vZl90JDIiLCJ6ZXJvJDIiLCJtaW5fdmFsdWUkMiIsImNvbnYkMCIsIm1heF92YWx1ZSQyIiwic2lnbmVkJDIiLCJudW1fYml0cyQyIiwibnVtX2J5dGVzJDIiLCJsb2dhbmQkMCIsImxvZ2FuZDY0JDAiLCJtYXNrNjQkMCIsImVxdWFsJDIiLCJlcXVhbDY0JDAiLCJ0b19zdHJpbmckMiIsInRvX3N0cmluZzY0JDAiLCJtYXNrJDAiLCJ0cnVuYyQyIiwiZXhuJDIiLCJ0cnVuYzY0JDAiLCJleG42NCQwIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50X2V4biQyIiwidG9fYmFzZV9pbnQkMiIsIm9mX3VpbnQ4Iiwib2ZfdWludDMyX3RydW5jJDAiLCJvZl91aW50MzJfZXhuJDAiLCJvZl91aW50NjNfdHJ1bmMkMCIsIm9mX3VpbnQ2M19leG4kMCIsIm9mX3VpbnQ2NF90cnVuYyQwIiwib2ZfdWludDY0X2V4biQwIiwib2ZfaW50MTZfd3JhcCIsIm9mX2ludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMiIsInN5bWJvbCQ1MyIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImNvbXBhcmUkNyIsImhhc2hfZm9sZF90JDMiLCJmdW5jJDMiLCJoYXNoJDMiLCJ0X29mX3NleHAkMyIsInNleHBfb2ZfdCQzIiwidHlwZXJlcF9vZl90JDMiLCJ0eXBlbmFtZV9vZl90JDMiLCJ6ZXJvJDMiLCJtaW5fdmFsdWUkMyIsIm1heF92YWx1ZSQzIiwic2hpZnRfbGVmdCQxIiwic2hpZnRfcmlnaHQkMSIsInNoaWZ0JDEiLCJ0b19zdHJpbmckMyIsInNpZ25lZCQzIiwibnVtX2JpdHMkMyIsIm51bV9ieXRlcyQzIiwidHJ1bmMkMyIsImV4biQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwic2lnbmVkJDQiLCJudW1fYml0cyQ0IiwibnVtX2J5dGVzJDQiLCJsb2dhbmQkMSIsImxvZ2FuZDY0JDEiLCJtYXNrJDEiLCJtYXNrNjQkMSIsImVxdWFsJDQiLCJlcXVhbDY0JDEiLCJ0b19zdHJpbmckNCIsInRvX3N0cmluZzY0JDEiLCJ0cnVuYyQ0IiwiZXhuJDQiLCJ0cnVuYzY0JDEiLCJleG42NCQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsInRvX2Jhc2VfaW50X2V4biIsIm9mX3VpbnQ4JDAiLCJvZl91aW50MTYiLCJvZl91aW50NjNfdHJ1bmMkMSIsIm9mX3VpbnQ2M19leG4kMSIsIm9mX3VpbnQ2NF90cnVuYyQxIiwib2ZfdWludDY0X2V4biQxIiwib2ZfaW50MzJfd3JhcCIsIm9mX2ludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkNCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNCIsInN5bWJvbCQ4NSIsInN5bWJvbCQ4NiIsInN5bWJvbCQ4NyIsInN5bWJvbCQ4OCIsInN5bWJvbCQ4OSIsInN5bWJvbCQ5MCIsInN5bWJvbCQ5MSIsInN5bWJvbCQ5MiIsInN5bWJvbCQ5MyIsInN5bWJvbCQ5NCIsImNvbXBhcmUkMTEiLCJoYXNoX2ZvbGRfdCQ1IiwiZnVuYyQ1IiwiaGFzaCQ1IiwidF9vZl9zZXhwJDUiLCJzZXhwX29mX3QkNSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDUiLCJxdWlja2NoZWNrX29ic2VydmVyJDUiLCJxdWlja2NoZWNrX3Nocmlua2VyJDUiLCJ0eXBlcmVwX29mX3QkNSIsInR5cGVuYW1lX29mX3QkNSIsInplcm8kNSIsIm1pbl92YWx1ZSQ1IiwibWF4X3ZhbHVlJDUiLCJ0b19zdHJpbmckNSIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50MzJfZXhuJDAiLCJ0b19iYXNlX2ludDMyX3RydW5jJDAiLCJ0b19iYXNlX2ludDMyX2V4biQwIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQwIiwib2ZfYmFzZV9pbnQ2NF9leG4kMCIsInRvX2Jhc2VfaW50NjQkMCIsInRvX2Jhc2VfaW50X2V4biQwIiwib2ZfdWludDgkMSIsIm9mX3VpbnQxNiQwIiwib2ZfdWludDYzX3RydW5jJDIiLCJvZl91aW50NjNfZXhuJDIiLCJvZl91aW50NjRfdHJ1bmMkMiIsIm9mX3VpbnQ2NF9leG4kMiIsIm9mX2ludDMyX3dyYXAkMCIsIm9mX2ludDMyX2V4biQyIiwic2V4cF9vZl90JDYiLCJ0X29mX3NleHAkNiIsInMiLCJzeW1ib2wkMTExIiwic3ltYm9sJDExMiIsInN5bWJvbCQxMTMiLCJzeW1ib2wkMTE0Iiwic3ltYm9sJDExNSIsInN5bWJvbCQxMTYiLCJzeW1ib2wkMTE3Iiwic3ltYm9sJDExOCIsInN5bWJvbCQxMTkiLCJzeW1ib2wkMTIwIiwiaW1wbCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDciLCJxdWlja2NoZWNrX29ic2VydmVyJDciLCJxdWlja2NoZWNrX3Nocmlua2VyJDciLCJ0X29mX3NleHAkNyIsInNleHBfb2ZfdCQ3IiwidHlwZXJlcF9vZl90JDciLCJ0eXBlbmFtZV9vZl90JDciLCJzaWduZWQkNyIsIm51bV9iaXRzJDciLCJudW1fYnl0ZXMkNyIsInplcm8kNyIsIm1pbl92YWx1ZSQ3IiwibWF4X3ZhbHVlJDciLCJoYXNoX2ZvbGRfdCQ3IiwiaGFzaCQ3Iiwic3ltYm9sJDEyNyIsInN5bWJvbCQxMjgiLCJzeW1ib2wkMTI5Iiwic3ltYm9sJDEzMCIsInN5bWJvbCQxMzEiLCJzeW1ib2wkMTMyIiwiZXF1YWwkNyIsImNvbXBhcmUkMTUiLCJtaW4kNyIsIm1heCQ3Iiwib2ZfYmFzZV9pbnQzMiQxIiwidG9fYmFzZV9pbnQzMiQxIiwib2ZfaW50OCQyIiwib2ZfaW50MTYkMSIsIm9mX2ludDYzX3RydW5jJDMiLCJvZl9pbnQ2M19leG4kMyIsIm9mX2ludDY0X3RydW5jJDMiLCJvZl9pbnQ2NF9leG4kMyIsIm9mX3VpbnQzMl93cmFwJDEiLCJvZl91aW50MzJfZXhuJDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ4IiwicXVpY2tjaGVja19vYnNlcnZlciQ4IiwicXVpY2tjaGVja19zaHJpbmtlciQ4IiwidF9vZl9zZXhwJDgiLCJzZXhwX29mX3QkOCIsInR5cGVyZXBfb2ZfdCQ4IiwidHlwZW5hbWVfb2ZfdCQ4Iiwic2lnbmVkJDgiLCJudW1fYml0cyQ4IiwibnVtX2J5dGVzJDgiLCJ6ZXJvJDgiLCJtaW5fdmFsdWUkOCIsIm1heF92YWx1ZSQ4IiwiaGFzaF9mb2xkX3QkOCIsImhhc2gkOCIsInN5bWJvbCQxMzMiLCJzeW1ib2wkMTM0Iiwic3ltYm9sJDEzNSIsInN5bWJvbCQxMzYiLCJzeW1ib2wkMTM3Iiwic3ltYm9sJDEzOCIsImVxdWFsJDgiLCJjb21wYXJlJDE2IiwibWluJDgiLCJtYXgkOCIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50MzJfZXhuJDEiLCJ0b19iYXNlX2ludDMyX3RydW5jJDEiLCJ0b19iYXNlX2ludDMyX2V4biQxIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQxIiwib2ZfYmFzZV9pbnQ2NF9leG4kMSIsInRvX2Jhc2VfaW50NjQkMSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwic2lnbmVkJDkiLCJudW1fYml0cyQ5IiwibnVtX2J5dGVzJDkiLCJvZl9pbnQ4JDMiLCJvZl9pbnQxNiQyIiwib2ZfaW50MzIiLCJvZl9pbnQ2NF90cnVuYyQ0Iiwib2ZfaW50NjRfZXhuJDQiLCJvZl91aW50NjNfd3JhcCIsIm9mX3VpbnQ2M19leG4kNCIsInN5bWJvbCQxNDUiLCJzeW1ib2wkMTQ2Iiwic3ltYm9sJDE0NyIsInN5bWJvbCQxNDgiLCJzeW1ib2wkMTQ5Iiwic3ltYm9sJDE1MCIsInN5bWJvbCQxNTEiLCJzeW1ib2wkMTUyIiwic3ltYm9sJDE1MyIsInN5bWJvbCQxNTQiLCJoYXNoX2ZvbGRfdCQxMCIsImZ1bmMkOCIsImhhc2gkMTAiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEwIiwiY29tcGFyZSQxOSIsInR5cGVyZXBfb2ZfdCQxMCIsInR5cGVuYW1lX29mX3QkMTAiLCJ6ZXJvJDEwIiwibWluX3ZhbHVlJDEwIiwibWF4X3ZhbHVlJDEwIiwiZ3JlYXRlcl9lcXVhbCQyIiwidG9fc3RyaW5nJDgiLCJzaWduZWQkMTAiLCJudW1fYml0cyQxMCIsIm51bV9ieXRlcyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50NjRfZXhuJDIiLCJ0b19iYXNlX2ludDY0JDIiLCJvZl91aW50OCQzIiwib2ZfdWludDE2JDIiLCJvZl91aW50MzIiLCJvZl91aW50NjRfdHJ1bmMkNCIsIm9mX3VpbnQ2NF9leG4kNCIsIm9mX2ludDYzX3dyYXAiLCJvZl9pbnQ2M19leG4kNCIsInNleHBfb2ZfdCQxMCIsInRfb2Zfc2V4cCQxMCIsInN5bWJvbCQxNTUiLCJzeW1ib2wkMTU2Iiwic3ltYm9sJDE1NyIsInN5bWJvbCQxNTgiLCJzeW1ib2wkMTU5Iiwic3ltYm9sJDE2MCIsInN5bWJvbCQxNjEiLCJzeW1ib2wkMTYyIiwic3ltYm9sJDE2MyIsInN5bWJvbCQxNjQiLCJjb21wYXJlJDIxIiwiaGFzaF9mb2xkX3QkMTEiLCJmdW5jJDkiLCJoYXNoJDExIiwidF9vZl9zZXhwJDExIiwic2V4cF9vZl90JDExIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTEiLCJxdWlja2NoZWNrX29ic2VydmVyJDExIiwicXVpY2tjaGVja19zaHJpbmtlciQxMSIsInR5cGVyZXBfb2ZfdCQxMSIsInR5cGVuYW1lX29mX3QkMTEiLCJ6ZXJvJDExIiwibWluX3ZhbHVlJDExIiwibWF4X3ZhbHVlJDExIiwiZ3JlYXRlcl9lcXVhbCQzIiwidG9fc3RyaW5nJDkiLCJvZl9pbnQ4JDQiLCJvZl9pbnQxNiQzIiwic2lnbmVkJDExIiwibnVtX2JpdHMkMTEiLCJudW1fYnl0ZXMkMTEiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsInNpZ25lZCQxMiIsIm51bV9iaXRzJDEyIiwibnVtX2J5dGVzJDEyIiwiZXhuJDUiLCJvZl9iYXNlX2ludDY0X3RydW5jJDMiLCJvZl9iYXNlX2ludDY0X2V4biQzIiwidG9fYmFzZV9pbnQ2NF90cnVuYyIsInRvX2Jhc2VfaW50NjRfZXhuIiwib2ZfdWludDgkNCIsIm9mX3VpbnQxNiQzIiwib2ZfdWludDMyJDAiLCJvZl91aW50NjMiLCJvZl9pbnQ2NF93cmFwIiwib2ZfaW50NjRfZXhuJDUiLCJzZXhwX29mX3QkMTIiLCJ0X29mX3NleHAkMTIiLCJzeW1ib2wkMTg3Iiwic3ltYm9sJDE4OCIsInN5bWJvbCQxODkiLCJzeW1ib2wkMTkwIiwic3ltYm9sJDE5MSIsInN5bWJvbCQxOTIiLCJzeW1ib2wkMTkzIiwic3ltYm9sJDE5NCIsInN5bWJvbCQxOTUiLCJzeW1ib2wkMTk2IiwiZ2V0X2ludDgiLCJ0IiwicG9zIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwieCQwIiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfdWludDMyX2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsImdldF91aW50NjRfbGUiLCJnZXRfdWludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X2ludDgiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsIngkMSIsInNldF9pbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ2NF9sZSIsInNldF91aW50NjRfYmUiLCJnZXRfaW50OCQwIiwiZ2V0X3VpbnQ4JDAiLCJnZXRfaW50MTZfbGUkMCIsImdldF9pbnQxNl9iZSQwIiwiZ2V0X3VpbnQxNl9sZSQwIiwiZ2V0X3VpbnQxNl9iZSQwIiwiZ2V0X2ludDMyX2xlJDAiLCJnZXRfaW50MzJfYmUkMCIsImdldF91aW50MzJfbGUkMCIsImdldF91aW50MzJfYmUkMCIsImdldF9pbnQ2NF9sZSQwIiwiZ2V0X2ludDY0X2JlJDAiLCJnZXRfdWludDY0X2xlJDAiLCJnZXRfdWludDY0X2JlJDAiLCJzZXRfaW50OCQwIiwic2V0X3VpbnQ4JDAiLCJzZXRfaW50MTZfbGUkMCIsInNldF9pbnQxNl9iZSQwIiwic2V0X3VpbnQxNl9sZSQwIiwic2V0X3VpbnQxNl9iZSQwIiwic2V0X2ludDMyX2xlJDAiLCJzZXRfaW50MzJfYmUkMCIsInNldF91aW50MzJfbGUkMCIsInNldF91aW50MzJfYmUkMCIsInNldF9pbnQ2NF9sZSQwIiwic2V0X2ludDY0X2JlJDAiLCJzZXRfdWludDY0X2xlJDAiLCJzZXRfdWludDY0X2JlJDAiLCJnZXRfaW50OCQxIiwiZ2V0X3VpbnQ4JDEiLCJnZXRfaW50MTZfbGUkMSIsImdldF9pbnQxNl9iZSQxIiwiZ2V0X3VpbnQxNl9sZSQxIiwiZ2V0X3VpbnQxNl9iZSQxIiwiZ2V0X2ludDMyX2xlJDEiLCJnZXRfaW50MzJfYmUkMSIsImdldF91aW50MzJfbGUkMSIsImdldF91aW50MzJfYmUkMSIsImdldF9pbnQ2NF9sZSQxIiwiZ2V0X2ludDY0X2JlJDEiLCJnZXRfdWludDY0X2xlJDEiLCJnZXRfdWludDY0X2JlJDEiLCJnZXRfaW50OCQyIiwiZ2V0X3VpbnQ4JDIiLCJnZXRfaW50MTZfbGUkMiIsImdldF9pbnQxNl9iZSQyIiwiZ2V0X3VpbnQxNl9sZSQyIiwiZ2V0X3VpbnQxNl9iZSQyIiwiZ2V0X2ludDMyX2xlJDIiLCJnZXRfaW50MzJfYmUkMiIsImdldF91aW50MzJfbGUkMiIsImdldF91aW50MzJfYmUkMiIsImdldF9pbnQ2NF9sZSQyIiwiZ2V0X2ludDY0X2JlJDIiLCJnZXRfdWludDY0X2xlJDIiLCJnZXRfdWludDY0X2JlJDIiLCJsb2MkMCIsImxvYyIsInNwcmludGYiLCJhcmNoX3NpeHR5Zm91ciIsImFyY2hfYmlnX2VuZGlhbiIsIm5vdF9vbl8zMmJpdCIsImNyZWF0ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyIsInNpemUiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMkMCIsImxlbmd0aCIsImluaXQiLCJuIiwiZiIsInQiLCJpIiwiY2hlY2tfYXJncyIsInBvcyIsImxlbiIsImJzdHIiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwib3B0IiwiY2hyIiwic3RoIiwibGVuJDAiLCJyZXMiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsImdldF9pbnQ2NF90X2JlIiwicmVhZF9pbnQ2NF9zd2FwJDAiLCJzZXRfaW50NjRfdF9iZSIsInNldF9pbnQ2NF90X2xlIiwiaW50NjRfY29udl9lcnJvciIsInVpbnQ2NF9jb252X2Vycm9yIiwiaW50NjRfdG9faW50X2V4biIsInVpbnQ2NF90b19pbnRfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9iZV9leG4iLCJ1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biIsImdldF9pbnQ2NF9iZV9leG4iLCJnZXRfaW50NjRfbGVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfbGVfZXhuIiwiZ2V0X3VpbnQ2NF9iZV9leG4iLCJnZXRfdWludDY0X2xlX2V4biIsInNldF91aW50NjRfYmVfZXhuIiwic2V0X3VpbnQ2NF9sZV9leG4iLCJ1bnNhZmVfc2V0X3VpbnQ4IiwidW5zYWZlX3NldF9pbnQ4IiwibiQwIiwidW5zYWZlX2dldF91aW50OCIsInVuc2FmZV9nZXRfaW50OCIsInNldF91aW50OF9leG4iLCJzZXRfaW50OF9leG4iLCJnZXRfdWludDgiLCJnZXRfaW50OCIsInVpbnQzMl9vZl9pbnQzMl90IiwidW5zYWZlX3NldF91aW50MzJfbGUiLCJ1bnNhZmVfc2V0X3VpbnQzMl9iZSIsInVuc2FmZV9nZXRfdWludDMyX2xlIiwidW5zYWZlX2dldF91aW50MzJfYmUiLCJzZXRfdWludDMyX2xlX2V4biIsInNldF91aW50MzJfYmVfZXhuIiwiZ2V0X3VpbnQzMl9sZSIsImdldF91aW50MzJfYmUiLCJnZXRfdWludDgkMCIsInNldF91aW50OCIsImdldF91aW50MTZfbmUiLCJzZXRfdWludDE2X25lIiwiZ2V0X2ludDMyX25lIiwic2V0X2ludDMyX25lIiwiZ2V0X2ludDY0X25lIiwic2V0X2ludDY0X25lIiwiZ2V0X3VpbnQ4JDIiLCJzZXRfdWludDgkMSIsImdldF91aW50MTZfbmUkMCIsInNldF91aW50MTZfbmUkMCIsImdldF9pbnQzMl9uZSQwIiwic2V0X2ludDMyX25lJDAiLCJnZXRfaW50NjRfbmUkMCIsInNldF9pbnQ2NF9uZSQwIiwiZWx0MSIsImVsdDIiLCJlcXVhbCIsIm9mX2Jvb2wiLCJsZW5ndGgiLCJjcmVhdGVfYm9vbCIsImdldCIsInNldCIsIm92ZXJsYXBwaW5nX3NyY19kc3QiLCJsZW5ndGgkMCIsImdldCQwIiwic2V0JDAiLCJjcmVhdGVfYm9vbCQwIiwicGFzcyIsImZhaWxzIiwibWVzc2FnZSIsImEiLCJzZXhwX29mX2EiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJmYWlsX3MiLCJzZXhwIiwiY29tYmluZSIsInQxIiwidDIiLCJvZl9saXN0IiwibmFtZSIsInQiLCJlcnJvciIsInBhdGgiLCJuYW1lX2xpc3QiLCJuIiwibCIsImZhaWxfZm4iLCJwYXNzX2Jvb2wiLCJwYXNzX3VuaXQiLCJwcm90ZWN0IiwiZiIsInYiLCJleG4kMCIsImV4biIsInRyeV93aXRoIiwicGF0aF9zdHJpbmciLCJlcnJvcnMiLCJyZXN1bHQiLCJ4XzAwNSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwMyIsInJlczFfMDA0IiwibWF5YmVfcmFpc2UiLCJ2YWxpZF9vcl9lcnJvciIsImNoZWNrIiwieCIsImZpZWxkX2RpcmVjdCIsImZsZCIsInJlY29yZCIsImZpZWxkIiwiZmllbGRfZm9sZGVyIiwiYWNjIiwiZmllbGRfZGlyZWN0X2ZvbGRlciIsImFsbCIsImNoZWNrcyIsImNoZWNrcyQwIiwiZXJycyIsImNoZWNrcyQxIiwiZXJyIiwiZXJycyQwIiwib2ZfcmVzdWx0Iiwib2ZfZXJyb3IiLCJib29sdGVzdCIsImlmX2ZhbHNlIiwicGFpciIsImZzdCIsInNuZCIsInNuZF92YWx1ZSIsImZzdF92YWx1ZSIsImxpc3RfaW5kZXhlZCIsImxpc3QiLCJpIiwiZWwiLCJleHRyYWN0X25hbWUiLCJhbGlzdCIsImxpc3QkMCIsImtleSIsImZpcnN0X2ZhaWx1cmUiLCJvZl9lcnJvcl9vcHQiLCJib3VuZGVkIiwibG93ZXIiLCJ1cHBlciIsImNvbXBhcmUiLCJpbmNsIiwiZXhjbCIsImluY2wkMCIsImV4Y2wkMCIsInN5bWJvbCIsIm5hbWUiLCJzZXhwX29mX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9tYXQiLCJtYXRfb2Zfc2V4cCIsInNleHBfb2ZfdmVjIiwidmVjX29mX3NleHAiLCJzZXhwX29mX29wYXF1ZSIsIm9wYXF1ZV9vZl9zZXhwIiwic2V4cF9vZl9wYWlyIiwicGFpcl9vZl9zZXhwIiwib2Zfc2V4cF9lcnJvciIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZ3JvdXAiLCJiaW5fc2hhcGVfc2V4cF9vcGFxdWUiLCJhIiwiYmluX3NpemVfc2V4cF9vcGFxdWUiLCJzaXplX29mX2EiLCJiaW5fd3JpdGVfc2V4cF9vcGFxdWUiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl9zZXhwX29wYXF1ZSIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSIsIm9mX2EiLCJidWYiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3NleHBfb3BhcXVlJDAiLCJiaW5fcmVhZGVyX3NleHBfb3BhcXVlIiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl9zZXhwX29wYXF1ZSIsImJpbl9hIiwiY29tcGFyZV9zZXhwX29wYXF1ZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImhhc2hfZm9sZF9zZXhwX29wYXF1ZSIsImhhc2hfZm9sZF9hIiwiaHN2IiwiYXJnIiwidHlwZW5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlcmVwX29mX3NleHBfb3BhcXVlIiwibmFtZV9vZl9zZXhwX29wYXF1ZSIsInR5cGVuYW1lX29mX3R1cGxlNSIsInR5cGVuYW1lX29mX3R1cGxlNCIsInR5cGVuYW1lX29mX3R1cGxlMyIsInR5cGVuYW1lX29mX3R1cGxlMiIsInR5cGVuYW1lX29mX3R1cGxlMCIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfYXJyYXkiLCJ0eXBlbmFtZV9vZl9saXN0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX3N0cmluZyIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2ludDYzIiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidHlwZXJlcF9vZl90dXBsZTQiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTAiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2xhenlfdCIsInR5cGVyZXBfb2ZfYXJyYXkiLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX29wdGlvbiIsInZhbHVlX3R1cGxlMCIsInR5cGVyZXBfb2ZfdW5pdCIsInR5cGVyZXBfb2ZfYm9vbCIsInR5cGVyZXBfb2ZfYnl0ZXMiLCJ0eXBlcmVwX29mX3N0cmluZyIsInR5cGVyZXBfb2ZfZmxvYXQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2ludDYzIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9pbnQzMiIsInR5cGVyZXBfb2ZfaW50Iiwid2l0aF9yZXR1cm4iLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJvZl9zdHJpbmciLCJ4IiwidG9fc3RyaW5nIiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJjYWxsZXJfaWRlbnRpdHkiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ2MSIsInYxJDAiLCJiaW5fd3JpdGVfdCIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYXJnXzEiLCJhcmdfMSQwIiwieCQwIiwib2ZfYmlnc3RyaW5nIiwibSIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ19sZW5ndGgiLCJ0b19iaWdzdHJpbmciLCJvcHQiLCJzdGgiLCJwcmVmaXhfd2l0aF9sZW5ndGgiLCJ0X2xlbmd0aCIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludGYiLCJleGl0ZiIsImZtdCIsImNvbGxlY3RfdG9fc3RyaW5nIiwiZiIsImRvbmUiLCJvdXRwdXQiLCJlcnIkMyIsImVyciQyIiwiZXJyJDEiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDQiLCJlcnJvcl9zb3VyY2VfMDA5IiwibmFtZSQwIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjAiLCJuYW1lJDEiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzAzNSIsIm5hbWUkMiIsImVycm9yX3NvdXJjZV8wNTEiLCJlcnJvcl9zb3VyY2VfMDUzIiwibmFtZSQzIiwiZXJyb3Jfc291cmNlXzA2NCIsIm5hbWUkNCIsImVycm9yX3NvdXJjZV8wODIiLCJlcnJvcl9zb3VyY2VfMDg0IiwibmFtZSQ1IiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwieF8wMDUiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA2IiwiYl8wMDciLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwidF9vZl9zZXhwJDAiLCJ4XzAxMCIsInNleHBfb2ZfdCQwIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzAxMSIsImJfMDEyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMTYiLCJhdG9tXzAxNCIsImF0b21fMDE0JDAiLCJ0X29mX3NleHAkMiIsInNleHBfMDE5Iiwic2V4cF9vZl90JDEiLCJncm91cCQyIiwiYmluX3NoYXBlX3QkMiIsImJpbl9zaXplX3QkMiIsImFyZ3MiLCJzaXplX2FyZ3MiLCJiaW5fd3JpdGVfdCQyIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImJpbl90JDIiLCJjb21wYXJlJDIiLCJhXzAyMSIsImJfMDIyIiwicmlnaHRfMDI0IiwibGVmdF8wMjMiLCJoYXNoX2ZvbGRfdCQyIiwiaHN2JDAiLCJoYXNoJDIiLCJ0X29mX3NleHAkMyIsInNleHBfMDI4IiwiYXRvbV8wMjYiLCJzZXhwX2FyZ3NfMDI5IiwiYXRvbV8wMjYkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0X29mX3NleHAkNCIsInNleHBfMDM0Iiwic2V4cF9vZl90JDIiLCJ2XzAzNiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQzIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsImJpbl93cml0ZXJfdCQzIiwiYmluX3JlYWRfdCQ3IiwiYmluX3JlYWRfdCQ4IiwiYmluX3JlYWRlcl90JDMiLCJiaW5fdCQzIiwiY29tcGFyZSQzIiwiYV8wMzciLCJiXzAzOCIsInJpZ2h0XzA0MiIsImxlZnRfMDQxIiwiaGFzaF9mb2xkX3QkMyIsImhhc2gkMyIsInRfb2Zfc2V4cCQ1Iiwic2V4cF8wNTIiLCJhdG9tXzA0NCIsInNleHBfYXJnc18wNDciLCJhdG9tXzA0NCQwIiwiYXJnMF8wNDkiLCJyZXMwXzA1MCIsInNleHBfb2ZfdCQzIiwidl8wNTQiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfbm9ib2R5IiwiYmluX3NpemVfbm9ib2R5IiwiYmluX3dyaXRlX25vYm9keSIsImJpbl93cml0ZXJfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5JDAiLCJiaW5fcmVhZGVyX25vYm9keSIsImJpbl9ub2JvZHkiLCJjb21wYXJlX25vYm9keSIsImhhc2hfZm9sZF9ub2JvZHkiLCJmdW5jIiwiaGFzaF9ub2JvZHkiLCJub2JvZHlfb2Zfc2V4cCIsInNleHBfb2Zfbm9ib2R5IiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9tZSIsImJpbl9zaXplX21lIiwiYmluX3dyaXRlX21lIiwiYmluX3dyaXRlcl9tZSIsImJpbl9yZWFkX21lIiwiYmluX3JlYWRfbWUkMCIsImJpbl9yZWFkZXJfbWUiLCJiaW5fbWUiLCJjb21wYXJlX21lIiwiaGFzaF9mb2xkX21lIiwiZnVuYyQwIiwiaGFzaF9tZSIsIm1lX29mX3NleHAiLCJzZXhwX29mX21lIiwiZ3JvdXAkOCIsImJpbl9zaGFwZV90JDUiLCJiaW5fc2l6ZV90JDUiLCJiaW5fd3JpdGVfdCQ1IiwiYmluX3dyaXRlcl90JDUiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3QkNSIsImNvbXBhcmUkNSIsImFfMTAxIiwiYl8xMDIiLCJhXzEwMyIsImJfMTA0IiwicmlnaHRfMDcyIiwibGVmdF8wNzEiLCJoYXNoX2ZvbGRfcGVybXMiLCJwZXJtc19vZl9zZXhwIiwib2ZfYV8xMDciLCJ4XzEwOSIsInNleHBfMDc0IiwiYXRvbV8wNzUiLCJzZXhwX2FyZ3NfMDc4IiwiYXRvbV8wNzUkMCIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJzZXhwX29mX3Blcm1zIiwib2ZfYV8xMTAiLCJ4XzExMSIsInZfMDg2Iiwidl8wODciLCJncm91cCQ5IiwiYmluX3NoYXBlX3JlYWQiLCJiaW5fc2l6ZV9yZWFkIiwiYmluX3dyaXRlX3JlYWQiLCJiaW5fd3JpdGVyX3JlYWQiLCJiaW5fcmVhZF9yZWFkIiwiYmluX3JlYWRfcmVhZCQwIiwiYmluX3JlYWRlcl9yZWFkIiwiYmluX3JlYWQiLCJjb21wYXJlX3JlYWQiLCJoYXNoX2ZvbGRfcmVhZCIsImZ1bmMkMSIsImhhc2hfcmVhZCIsInJlYWRfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZCIsImNvbXBhcmVfd3JpdGUiLCJoYXNoX2ZvbGRfd3JpdGUiLCJmdW5jJDIiLCJoYXNoX3dyaXRlIiwid3JpdGVfb2Zfc2V4cCIsInNleHBfb2Zfd3JpdGUiLCJncm91cCQxMCIsImJpbl9zaGFwZV9pbW11dGFibGUiLCJiaW5fc2l6ZV9pbW11dGFibGUiLCJiaW5fd3JpdGVfaW1tdXRhYmxlIiwiYmluX3dyaXRlcl9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUkMCIsImJpbl9yZWFkZXJfaW1tdXRhYmxlIiwiYmluX2ltbXV0YWJsZSIsImNvbXBhcmVfaW1tdXRhYmxlIiwiaGFzaF9mb2xkX2ltbXV0YWJsZSIsImZ1bmMkMyIsImhhc2hfaW1tdXRhYmxlIiwiaW1tdXRhYmxlX29mX3NleHAiLCJzZXhwX29mX2ltbXV0YWJsZSIsImdyb3VwJDExIiwiYmluX3NoYXBlX3JlYWRfd3JpdGUiLCJiaW5fc2l6ZV9yZWFkX3dyaXRlIiwiYmluX3dyaXRlX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlIiwiYmluX3JlYWRfcmVhZF93cml0ZSQwIiwiYmluX3JlYWRlcl9yZWFkX3dyaXRlIiwiYmluX3JlYWRfd3JpdGUiLCJjb21wYXJlX3JlYWRfd3JpdGUiLCJoYXNoX2ZvbGRfcmVhZF93cml0ZSIsImZ1bmMkNCIsImhhc2hfcmVhZF93cml0ZSIsInJlYWRfd3JpdGVfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZF93cml0ZSIsImdyb3VwJDEyIiwiYmluX3NoYXBlX3Blcm1zIiwiYmluX3NpemVfcGVybXMiLCJiaW5fd3JpdGVfcGVybXMiLCJiaW5fd3JpdGVyX3Blcm1zIiwiYmluX3JlYWRfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyQwIiwiYmluX3JlYWRlcl9wZXJtcyIsImJpbl9wZXJtcyIsImNvbXBhcmVfcGVybXMiLCJhXzEyNCIsImJfMTI1IiwiYV8xMjYiLCJiXzEyNyIsIm1ha2UiLCJlcnJvcl9zb3VyY2VfMDExIiwidGVzdHMiLCJiIiwic2l6ZV9vZl9iIiwid3JpdGVfYiIsImJpbl93cml0ZXJfYiIsIm9mX2IiLCJiaW5fcmVhZGVyX2IiLCJiaW5fYiIsImNtcF9iIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJvZl9hXzAwNyIsIm9mX2JfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsIm9mX2FfMDI1Iiwib2ZfYl8wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsIm1hcCIsImYxIiwiZjIiLCJ4XzA0MCIsInhfMDQxIiwiZXF1YWwiLCJ4XzA0MiIsInhfMDQzIiwiYV8wMzUiLCJiXzAzNiIsInN5bWJvbCIsInkiLCJub3JtYWxpemUiLCJsZW5ndGhfZnVuIiwiaSIsInNsaWNlIiwic3ViX2Z1biIsInN0YXJ0Iiwic3RvcCIsInN0b3AkMCIsImxlbiIsInNpemVfb2ZfcyIsInYyIiwic2l6ZSIsIndyaXRlX3MiLCJwb3MkMiIsImJpbl93cml0ZXJfcyIsIm9mX3MiLCJhcmdfMiIsImJpbl9yZWFkZXJfcyIsImJpbl9zIiwidjEkMSIsInBvcyQzIiwiYXJnXzEkMSIsIm1lcmdlX2FsbCIsIkhlYXAiLCJzZXFzIiwibm90X3lldF9pbl9oZWFwIiwiaGVhcCIsImhlYXAkMCIsInNlcSQyIiwiZWx0JDAiLCJub3RfeWV0X2luX2hlYXAkMCIsInNlcSIsInNlcSQwIiwic2VxJDEiLCJlbHQiLCJ0X3NleHBfZ3JhbW1hciIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yIiwiZ2VuZXJhdG9yXzAwMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJvYnNlcnZlcl8wMDIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic2hyaW5rZXJfMDAxIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsImJpbmFyeV9zZWFyY2giLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsIm1lbSIsImlzX2VtcHR5IiwiaXRlciIsImZvbGQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNyZWF0ZSIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiaW5pdCIsIm1ha2VfbWF0cml4IiwiY29weV9tYXRyaXgiLCJhcHBlbmQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImJsaXQiLCJibGl0byIsInVuc2FmZV9ibGl0Iiwic3ViIiwic3VibyIsIm9mX2xpc3QiLCJmb2xkaW5nX21hcCIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwIiwiZm9sZF9tYXBpIiwiaXRlcmkiLCJtYXBpIiwiZm9sZGkiLCJmb2xkX3JpZ2h0Iiwic29ydCIsInN0YWJsZV9zb3J0IiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwibWVyZ2UiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJwYXJ0aXRpb25fdGYiLCJwYXJ0aXRpb25pX3RmIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJ0cmFuc3Bvc2UiLCJ0cmFuc3Bvc2VfZXhuIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJmaWx0ZXJfbWFwaSIsImZvcl9hbGxpIiwiZXhpc3RzaSIsImNvdW50aSIsIml0ZXIyX2V4biIsIm1hcDJfZXhuIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDJfZXhuIiwiZXhpc3RzMl9leG4iLCJmaWx0ZXIiLCJmaWx0ZXJpIiwic3dhcCIsInJldl9pbnBsYWNlIiwicmV2Iiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRfZXhuIiwiZmluZF9tYXBfZXhuIiwiZmluZGkiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJmaW5kX21hcGlfZXhuIiwiZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicGVybXV0ZSIsInJhbmRvbV9lbGVtZW50IiwicmFuZG9tX2VsZW1lbnRfZXhuIiwiemlwIiwiemlwX2V4biIsInVuemlwIiwic29ydGVkX2NvcHkiLCJsYXN0IiwidG9fc2VxdWVuY2UiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwibmdldCIsIm5zZXQiLCJsZW5ndGgiLCJnZXQiLCJzZXQiLCJjb21wYXJlX3QiLCJhXzAwNCIsImJfMDA1IiwieF8wMDkiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiYmluX3NoYXBlX3QkNiIsInNpemVfb2ZfZiIsIndyaXRlX2YiLCJiaW5fd3JpdGVyX2YiLCJvZl9mIiwiYmluX3JlYWRlcl9mIiwiYmluX2YiLCJjbXBfZiIsImNtcF9zIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJ2MCIsInRhZzAiLCJ0YWcxIiwidHlwZW5hbWUiLCJ0YWdzIiwicG9seW1vcnBoaWMiLCJ2YWx1ZSIsInYwJDAiLCJ4MSIsIngyIiwiYV8wMzYiLCJiXzAzNyIsImFfMDQwIiwiYl8wNDEiLCJhXzAzOCIsImJfMDM5IiwibmFtZXMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidjQiLCJ2MyIsInNpemUkMCIsInNpemUkMSIsInZfcG9zX2ZuYW1lIiwidl9wb3NfbG51bSIsInZfcG9zX2JvbCIsInZfcG9zX2NudW0iLCJuIiwibiQwIiwibiQxIiwicG9zX2NudW0iLCJyIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2NudW0kMCIsInBvc19ib2wkMCIsInBvc19sbnVtJDAiLCJwb3NfZm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsInBvc19mbmFtZV9mdW4iLCJwb3NfbG51bV9mdW4iLCJwb3NfYm9sX2Z1biIsInBvc19jbnVtX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsInBvc19mbmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwicG9zX2xudW1fZ2VuIiwiY29tcGlsZV9hY2MkMiIsInBvc19ib2xfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInBvc19jbnVtX2dlbiIsImFjYyIsIm1hcF9wb2x5IiwicmVjb3JkIiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwic2V4cF8wMDQiLCJmaWVsZF9zZXhwc18wMDUiLCJwb3NfZm5hbWVfMDA2IiwicG9zX2xudW1fMDA4IiwicG9zX2JvbF8wMTAiLCJwb3NfY251bV8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDA0JDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI1IiwiZmllbGRfc2V4cF8wMTckNCIsImZpZWxkX3NleHBfMDE3IiwieF8wMjYiLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIyIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMTkiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMCIsInBvc19jbnVtXzAxMyIsInBvc19ib2xfMDExIiwicG9zX2xudW1fMDA5IiwicG9zX2ZuYW1lXzAwNyIsInBvc19jbnVtXzAzNCIsInBvc19ib2xfMDMyIiwicG9zX2xudW1fMDMwIiwicG9zX2ZuYW1lXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImEwIiwiYTAkMCIsInYxJDIiLCJ2MSQzIiwidjIkMCIsInYxJDQiLCJ2MyQwIiwidjIkMSIsInYxJDUiLCJzaXplJDIiLCJzaXplJDMiLCJ2MiQyIiwidjEkNiIsInNpemUkNCIsInYyJDMiLCJ2MSQ3Iiwic2l6ZSQ1IiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMiIsImFyZ18xJDMiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJzZXhwX29mX3QkNiIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJiaW5fc2l6ZV90JDYiLCJiaW5fd3JpdGVfdCQ2IiwiZmFpbHdpdGhzIiwic3RyaWN0IiwiaGVyZSIsIm1lc3NhZ2UiLCJmYWlsd2l0aHAiLCJ0b19ydW4iLCJydW4iLCJzYW5pdGl6ZSIsImZsdXNoZWQiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSIsInRvX3J1biQwIiwicnVuJDAiLCJmbHVzaGVkJDAiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSQwIiwic2FuaXRpemUkMCIsIm9mX2FfMDEwIiwieF8wMTEiLCJhXzAxMiIsImJfMDEzIiwiYV8wMTYiLCJiXzAxNyIsImFfMDE0IiwiYl8wMTUiLCJvZl9hXzAxOCIsInhfMDIwIiwib2ZfYV8wMjEiLCJ4XzAyMiIsIm1hcCQxIiwiZGVmYXVsdF9zZWVkIiwiZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MiIsImdlbmVyYXRvcl8wMTIiLCJnZW5lcmF0b3JfMDEzIiwic2l6ZV8wMTYiLCJyYW5kb21fMDE3Iiwic2l6ZV8wMTQiLCJyYW5kb21fMDE1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MiIsIm9ic2VydmVyXzAwNSIsIm9ic2VydmVyXzAwNiIsInhfMDA3Iiwic2l6ZV8wMDgiLCJoYXNoXzAwOSIsImhhc2hfMDA5JDAiLCJoYXNoXzAwOSQxIiwiaGFzaF8wMDkkMiIsImhhc2hfMDA5JDMiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyIiwic2hyaW5rZXJfMDAyIiwieF8wMDQiLCJ4XzAwMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzIiwiZ2VuZXJhdG9yXzAzMyIsImdlbmVyYXRvcl8wMzQiLCJnZW5lcmF0b3JfMDM1Iiwic2l6ZV8wNDAiLCJyYW5kb21fMDQxIiwic2l6ZV8wMzgiLCJyYW5kb21fMDM5Iiwic2l6ZV8wMzYiLCJyYW5kb21fMDM3IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MyIsIm9ic2VydmVyXzAyNCIsIm9ic2VydmVyXzAyNSIsIm9ic2VydmVyXzAyNiIsInhfMDI3Iiwic2l6ZV8wMjgiLCJoYXNoXzAyOSIsInhfMDMwIiwiaGFzaF8wMjkkMCIsImhhc2hfMDI5JDEiLCJ4XzAzMSIsImhhc2hfMDI5JDIiLCJoYXNoXzAyOSQzIiwieF8wMzIiLCJoYXNoXzAyOSQ0IiwiaGFzaF8wMjkkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDMiLCJzaHJpbmtlcl8wMTgiLCJzaHJpbmtlcl8wMTkiLCJzaHJpbmtlcl8wMjAiLCJ4XzAyMSIsInhfMDIzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDQiLCJnZW5lcmF0b3JfMDYxIiwiZ2VuZXJhdG9yXzA2MiIsImdlbmVyYXRvcl8wNjMiLCJnZW5lcmF0b3JfMDY0Iiwic2l6ZV8wNzEiLCJyYW5kb21fMDcyIiwic2l6ZV8wNjkiLCJyYW5kb21fMDcwIiwic2l6ZV8wNjciLCJyYW5kb21fMDY4Iiwic2l6ZV8wNjUiLCJyYW5kb21fMDY2IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NCIsIm9ic2VydmVyXzA1MCIsIm9ic2VydmVyXzA1MSIsIm9ic2VydmVyXzA1MiIsIm9ic2VydmVyXzA1MyIsInhfMDU0Iiwic2l6ZV8wNTUiLCJoYXNoXzA1NiIsInhfMDU3IiwiaGFzaF8wNTYkMCIsImhhc2hfMDU2JDEiLCJ4XzA1OCIsImhhc2hfMDU2JDIiLCJoYXNoXzA1NiQzIiwieF8wNTkiLCJoYXNoXzA1NiQ0IiwiaGFzaF8wNTYkNSIsInhfMDYwIiwiaGFzaF8wNTYkNiIsImhhc2hfMDU2JDciLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0Iiwic2hyaW5rZXJfMDQyIiwic2hyaW5rZXJfMDQzIiwic2hyaW5rZXJfMDQ0Iiwic2hyaW5rZXJfMDQ1IiwieF8wNDYiLCJ4XzA0NyIsInhfMDQ4IiwieF8wNDkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NSIsImdlbmVyYXRvcl8wOTYiLCJnZW5lcmF0b3JfMDk3IiwiZ2VuZXJhdG9yXzA5OCIsImdlbmVyYXRvcl8wOTkiLCJnZW5lcmF0b3JfMTAwIiwic2l6ZV8xMDkiLCJyYW5kb21fMTEwIiwic2l6ZV8xMDciLCJyYW5kb21fMTA4Iiwic2l6ZV8xMDUiLCJyYW5kb21fMTA2Iiwic2l6ZV8xMDMiLCJyYW5kb21fMTA0Iiwic2l6ZV8xMDEiLCJyYW5kb21fMTAyIiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NSIsIm9ic2VydmVyXzA4MyIsIm9ic2VydmVyXzA4NCIsIm9ic2VydmVyXzA4NSIsIm9ic2VydmVyXzA4NiIsIm9ic2VydmVyXzA4NyIsInhfMDg4Iiwic2l6ZV8wODkiLCJoYXNoXzA5MCIsInhfMDkxIiwiaGFzaF8wOTAkMCIsImhhc2hfMDkwJDEiLCJ4XzA5MiIsImhhc2hfMDkwJDIiLCJoYXNoXzA5MCQzIiwiaGFzaF8wOTAkNCIsImhhc2hfMDkwJDUiLCJoYXNoXzA5MCQ2IiwiaGFzaF8wOTAkNyIsInhfMDk1IiwiaGFzaF8wOTAkOCIsImhhc2hfMDkwJDkiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1Iiwic2hyaW5rZXJfMDczIiwic2hyaW5rZXJfMDc0Iiwic2hyaW5rZXJfMDc1Iiwic2hyaW5rZXJfMDc2Iiwic2hyaW5rZXJfMDc3IiwieF8wNzgiLCJ4XzA3OSIsInhfMDgwIiwieF8wODEiLCJ4XzA4MiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2IiwiZ2VuZXJhdG9yXzEzOCIsImdlbmVyYXRvcl8xMzkiLCJnZW5lcmF0b3JfMTQwIiwiZ2VuZXJhdG9yXzE0MSIsImdlbmVyYXRvcl8xNDIiLCJnZW5lcmF0b3JfMTQzIiwic2l6ZV8xNTQiLCJyYW5kb21fMTU1Iiwic2l6ZV8xNTIiLCJyYW5kb21fMTUzIiwic2l6ZV8xNTAiLCJyYW5kb21fMTUxIiwic2l6ZV8xNDgiLCJyYW5kb21fMTQ5Iiwic2l6ZV8xNDYiLCJyYW5kb21fMTQ3Iiwic2l6ZV8xNDQiLCJyYW5kb21fMTQ1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NiIsIm9ic2VydmVyXzEyMyIsIm9ic2VydmVyXzEyNCIsIm9ic2VydmVyXzEyNSIsIm9ic2VydmVyXzEyNiIsIm9ic2VydmVyXzEyNyIsIm9ic2VydmVyXzEyOCIsInhfMTI5Iiwic2l6ZV8xMzAiLCJoYXNoXzEzMSIsInhfMTMyIiwiaGFzaF8xMzEkMCIsImhhc2hfMTMxJDEiLCJ4XzEzMyIsImhhc2hfMTMxJDIiLCJoYXNoXzEzMSQzIiwieF8xMzQiLCJoYXNoXzEzMSQ0IiwiaGFzaF8xMzEkNSIsInhfMTM1IiwiaGFzaF8xMzEkNiIsImhhc2hfMTMxJDciLCJ4XzEzNiIsImhhc2hfMTMxJDgiLCJoYXNoXzEzMSQ5IiwieF8xMzciLCJoYXNoXzEzMSQxMCIsImhhc2hfMTMxJDExIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NiIsInNocmlua2VyXzExMSIsInNocmlua2VyXzExMiIsInNocmlua2VyXzExMyIsInNocmlua2VyXzExNCIsInNocmlua2VyXzExNSIsInNocmlua2VyXzExNiIsInhfMTE3IiwieF8xMTgiLCJ4XzExOSIsInhfMTIwIiwieF8xMjEiLCJ4XzEyMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMiIsImdlbmVyYXRvcl8xNjYiLCJnZW5lcmF0b3JfMTY3Iiwic2l6ZV8xNjgiLCJyYW5kb21fMTY5IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTIiLCJvYnNlcnZlcl8xNjAiLCJvYnNlcnZlcl8xNjEiLCJzaXplXzE2NCIsImhhc2hfMTY1IiwieF8xNjMiLCJ4XzE2MiIsImhhc2hfMTY1JDAiLCJoYXNoXzE2NSQxIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTIiLCJzaHJpbmtlcl8xNTYiLCJzaHJpbmtlcl8xNTciLCJ4XzE1OSIsInhfMTU4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzIiwiZ2VuZXJhdG9yXzE4NCIsImdlbmVyYXRvcl8xODUiLCJnZW5lcmF0b3JfMTg2Iiwic2l6ZV8xODciLCJyYW5kb21fMTg4IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTMiLCJvYnNlcnZlcl8xNzYiLCJvYnNlcnZlcl8xNzciLCJvYnNlcnZlcl8xNzgiLCJzaXplXzE4MiIsImhhc2hfMTgzIiwieF8xODEiLCJ4XzE4MCIsInhfMTc5IiwiaGFzaF8xODMkMCIsImhhc2hfMTgzJDEiLCJoYXNoXzE4MyQyIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTMiLCJzaHJpbmtlcl8xNzAiLCJzaHJpbmtlcl8xNzEiLCJzaHJpbmtlcl8xNzIiLCJ4XzE3NSIsInhfMTc0IiwieF8xNzMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTQiLCJnZW5lcmF0b3JfMjA3IiwiZ2VuZXJhdG9yXzIwOCIsImdlbmVyYXRvcl8yMDkiLCJnZW5lcmF0b3JfMjEwIiwic2l6ZV8yMTEiLCJyYW5kb21fMjEyIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTQiLCJvYnNlcnZlcl8xOTciLCJvYnNlcnZlcl8xOTgiLCJvYnNlcnZlcl8xOTkiLCJvYnNlcnZlcl8yMDAiLCJzaXplXzIwNSIsImhhc2hfMjA2IiwieF8yMDQiLCJ4XzIwMyIsInhfMjAyIiwieF8yMDEiLCJoYXNoXzIwNiQwIiwiaGFzaF8yMDYkMSIsImhhc2hfMjA2JDIiLCJoYXNoXzIwNiQzIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTQiLCJzaHJpbmtlcl8xODkiLCJzaHJpbmtlcl8xOTAiLCJzaHJpbmtlcl8xOTEiLCJzaHJpbmtlcl8xOTIiLCJ4XzE5NiIsInhfMTk1IiwieF8xOTQiLCJ4XzE5MyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNSIsImdlbmVyYXRvcl8yMzUiLCJnZW5lcmF0b3JfMjM2IiwiZ2VuZXJhdG9yXzIzNyIsImdlbmVyYXRvcl8yMzgiLCJnZW5lcmF0b3JfMjM5Iiwic2l6ZV8yNDAiLCJyYW5kb21fMjQxIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTUiLCJvYnNlcnZlcl8yMjMiLCJvYnNlcnZlcl8yMjQiLCJvYnNlcnZlcl8yMjUiLCJvYnNlcnZlcl8yMjYiLCJvYnNlcnZlcl8yMjciLCJzaXplXzIzMyIsImhhc2hfMjM0IiwieF8yMzIiLCJ4XzIzMSIsInhfMjMwIiwieF8yMjkiLCJ4XzIyOCIsImhhc2hfMjM0JDAiLCJoYXNoXzIzNCQxIiwiaGFzaF8yMzQkMiIsImhhc2hfMjM0JDMiLCJoYXNoXzIzNCQ0IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTUiLCJzaHJpbmtlcl8yMTMiLCJzaHJpbmtlcl8yMTQiLCJzaHJpbmtlcl8yMTUiLCJzaHJpbmtlcl8yMTYiLCJzaHJpbmtlcl8yMTciLCJ4XzIyMiIsInhfMjIxIiwieF8yMjAiLCJ4XzIxOSIsInhfMjE4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2IiwiZ2VuZXJhdG9yXzI2OCIsImdlbmVyYXRvcl8yNjkiLCJnZW5lcmF0b3JfMjcwIiwiZ2VuZXJhdG9yXzI3MSIsImdlbmVyYXRvcl8yNzIiLCJnZW5lcmF0b3JfMjczIiwic2l6ZV8yNzQiLCJyYW5kb21fMjc1IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTYiLCJvYnNlcnZlcl8yNTQiLCJvYnNlcnZlcl8yNTUiLCJvYnNlcnZlcl8yNTYiLCJvYnNlcnZlcl8yNTciLCJvYnNlcnZlcl8yNTgiLCJvYnNlcnZlcl8yNTkiLCJzaXplXzI2NiIsImhhc2hfMjY3IiwieF8yNjUiLCJ4XzI2NCIsInhfMjYzIiwieF8yNjIiLCJ4XzI2MSIsInhfMjYwIiwiaGFzaF8yNjckMCIsImhhc2hfMjY3JDEiLCJoYXNoXzI2NyQyIiwiaGFzaF8yNjckMyIsImhhc2hfMjY3JDQiLCJoYXNoXzI2NyQ1IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTYiLCJzaHJpbmtlcl8yNDIiLCJzaHJpbmtlcl8yNDMiLCJzaHJpbmtlcl8yNDQiLCJzaHJpbmtlcl8yNDUiLCJzaHJpbmtlcl8yNDYiLCJzaHJpbmtlcl8yNDciLCJ4XzI1MyIsInhfMjUyIiwieF8yNTEiLCJ4XzI1MCIsInhfMjQ5IiwieF8yNDgiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjIiLCJvYnNlcnZlcl8yODIiLCJvYnNlcnZlcl8yODMiLCJnZW5lcmF0b3JfMjg0IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4zIiwib2JzZXJ2ZXJfMjkzIiwib2JzZXJ2ZXJfMjk0Iiwib2JzZXJ2ZXJfMjk1IiwiZ2VuZXJhdG9yXzI5NiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNCIsIm9ic2VydmVyXzMwNyIsIm9ic2VydmVyXzMwOCIsIm9ic2VydmVyXzMwOSIsIm9ic2VydmVyXzMxMCIsImdlbmVyYXRvcl8zMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjUiLCJvYnNlcnZlcl8zMjQiLCJvYnNlcnZlcl8zMjUiLCJvYnNlcnZlcl8zMjYiLCJvYnNlcnZlcl8zMjciLCJvYnNlcnZlcl8zMjgiLCJnZW5lcmF0b3JfMzI5IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm42Iiwib2JzZXJ2ZXJfMzQ0Iiwib2JzZXJ2ZXJfMzQ1Iiwib2JzZXJ2ZXJfMzQ2Iiwib2JzZXJ2ZXJfMzQ3Iiwib2JzZXJ2ZXJfMzQ4Iiwib2JzZXJ2ZXJfMzQ5IiwiZ2VuZXJhdG9yXzM1MCIsIm9mX2hhc2giLCJNIiwib2ZfcHJlZGljYXRlIiwic2luZ2xldG9uIiwiZG91YmxldG9uIiwiZW51bSQwIiwibGlzdCIsIm9mX2Z1biIsImNvbXBhcmlzb24iLCJlcSIsImx0IiwiZ3QiLCJjIiwicmV0dXJuJDAiLCJzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCIsInNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCIsInNpbmdsZXRvbiQwIiwiZG91YmxldG9uJDAiLCJyYW5kb20iLCJvZl9mdW4kMCIsIm9mX3NlcXVlbmNlIiwicCIsImsiLCJib3VuZGVkX2dlb21ldHJpYyIsIm1heGltdW0iLCJnZW9tZXRyaWMiLCJsaXN0X3dpdGhfbGVuZ3RoIiwiY29tcGFyZV9mbiIsImRvbSIsImdldF9pbmRleCIsImJfMzUyIiwiYV8zNTEiLCJlcXVhbF9mbiIsImNtcCIsImVtcHR5Iiwibm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSIsInJhbmRvbV9zdGF0ZV9vZl9zZWVkIiwic2VlZCIsInN0ciIsIm1ha2Vfc2VlZCIsInN0cmluZyIsIm1ha2Vfc2hyaW5rX2NvdW50IiwibWFrZV9jb25maWciLCJzaXplcyIsInRyaWFscyIsInNocmlua19hdHRlbXB0cyIsIm1ha2VfdGVzdF9tIiwiZ2VuIiwic2hyaW5rZXIiLCJzZXhwX29mIiwicmFuZG9tX3ZhbHVlIiwic3RoJDAiLCJyYW5kb21fc2VxdWVuY2UiLCJjb25maWciLCJzZXF1ZW5jZSIsInRlc3QiLCJleGFtcGxlcyIsInRlc3RfbSIsInRlc3Rfb3JfZXJyb3IiLCJ0ZXN0X2Rpc3RpbmN0X3ZhbHVlcyIsImRpc3RpbmN0X3ZhbHVlcyIsInNldCQwIiwiYWN0dWFsX2NvdW50Iiwic2V4cF9vZl9lbHQiLCJ4XzM1MyIsInZhbHVlcyIsIm1hdGNoIiwicmVzIiwiaCIsInRlc3RfY2FuX2dlbmVyYXRlIiwic2V4cF9vZl92YWx1ZSIsInhfMzU0IiwiZGVmYXVsdF90cmlhbF9jb3VudCIsImRlZmF1bHRfc2l6ZXMiLCJjb21wYXJlX2EiLCJjb21wYXJlX2IiLCJ0XzAwNiIsInRfMDA1IiwidF8wMDgiLCJ0XzAwNyIsImdlbl9ub25fZW1wdHkiLCJnZW5fd2l0aF9sZW5ndGgiLCJnZW5fZmlsdGVyZWQiLCJnZW5fcGVybXV0YXRpb25zIiwiZ2VuZXJhdGVfYSIsIm9ic2VydmVfYSIsInNocmlua19hIiwibW9kdWxlX25hbWUkMCIsIm1vZHVsZV9uYW1lIiwiaGFzaGFibGVfcyIsImZpbmRfbXVsdGkiLCJyZW1vdmVfbXVsdGkiLCJhZGRfbXVsdGkiLCJkZWNyIiwiaW5jciIsInRvX2FsaXN0Iiwic2ltaWxhciIsImZpbHRlcl9tYXBpX2lucGxhY2UiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJmaWx0ZXJpX2lucGxhY2UiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJkYXRhIiwia2V5cyIsIm1lcmdlX2ludG8iLCJmaW5kX2FuZF9yZW1vdmUiLCJmaW5kaV9hbmRfY2FsbDIiLCJmaW5kaV9hbmRfY2FsbDEiLCJmaW5kaV9hbmRfY2FsbCIsImZpbmRfYW5kX2NhbGwyIiwiZmluZF9hbmRfY2FsbDEiLCJmaW5kX2FuZF9jYWxsIiwiZmluZGlfb3JfYWRkIiwiZmluZF9vcl9hZGQiLCJwYXJ0aXRpb25fbWFwaSIsInBhcnRpdGlvbl9tYXAiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9leG4iLCJjaG9vc2UiLCJyZW1vdmUiLCJpdGVyX2tleXMiLCJjbGVhciIsInNleHBfb2Zfa2V5IiwiY3JlYXRlX3dpdGhfa2V5X2V4biIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV9tYXBwZWQiLCJvZl9hbGlzdF9tdWx0aSIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X29yX2Vycm9yIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIiwib2ZfYWxpc3QiLCJoYXNoX3BhcmFtIiwidmFsaWRhdGUiLCJncm93dGhfYWxsb3dlZCIsImhhc2hhYmxlIiwib2ZfYWxpc3QkMCIsImwiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMkMCIsIm9mX2FsaXN0X29yX2Vycm9yJDAiLCJvZl9hbGlzdF9leG4kMCIsIm9mX2FsaXN0X211bHRpJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwiY29tYmluZSIsImJpbl9zaGFwZV9lbCIsImJpbl9zaXplX2VsIiwiYmluX3dyaXRlX2VsIiwiYmluX3JlYWRfZWwiLCJpdGVyJDEiLCJrZXkiLCJuZXh0IiwiaW52YXJpYW50X2tleSIsInNleHBfb2ZfdiIsInZfb2Zfc2V4cCIsImVxdWFsX21fdCIsIm1fdF9zZXhwX2dyYW1tYXIiLCJtX3Rfb2Zfc2V4cCIsInNleHBfb2ZfbV90Iiwib2ZfYWxpc3Rfb3B0aW9uIiwiYWxpc3QiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9tX3QiLCJLZXkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhIiwic2l6ZV8wMDQiLCJyYW5kb21fMDA1IiwicXVpY2tjaGVja19vYnNlcnZlcl9tX3QiLCJxdWlja2NoZWNrX29ic2VydmVyX2RhdGEiLCJ4XzAwNiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfbV90IiwicXVpY2tjaGVja19zaHJpbmtlcl9kYXRhIiwiaGFzaGFibGUkMCIsIm9mX2xpc3QkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJzaXplX29mX2siLCJzaXplX29mX3YiLCJhcmdzJDAiLCJzaXplX2FyZ3MkMCIsImFyZ3MkMSIsInNpemVfYXJncyQxIiwid3JpdGVfayIsIndyaXRlX3YiLCJiaW5fd3JpdGVyX2siLCJiaW5fd3JpdGVyX3YiLCJvZl9rIiwib2ZfdiIsImJpbl9yZWFkZXJfayIsImJpbl9yZWFkZXJfdiIsImJpbl9rIiwiYmluX3YiLCJjbXBfayIsImNtcF92IiwidF8wMDQiLCJ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3IiwicmlnaHRfMDEyIiwibGVmdF8wMTEiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxMCIsImxlZnRfMDA5Iiwib2Zfa18wMTciLCJvZl92XzAxOCIsInNleHBfMDQ1IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwiYXRvbV8wMjEiLCJzZXhwX2FyZ3NfMDI0IiwiYXRvbV8wMjEkMCIsImFyZzBfMDMyIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwicmVzMF8wMzMiLCJhcmcwXzAzNSIsInJlczBfMDM2IiwiYXJnMF8wMzgiLCJyZXMxXzA0NCIsIm9mX2tfMDQ2Iiwib2Zfdl8wNDciLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJ2XzA0OCIsInJlczFfMDU4Iiwidl8wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMF8wNTMiLCJyZXMxXzA1NCIsInZfMDQ5IiwiZGlmZiIsImskMCIsImRpZmYkMCIsInYkMCIsIm1hcF9kYXRhIiwibGVmdCIsInJpZ2h0IiwiZ2VuX3RyZWUiLCJjb21wYXJhdG9yIiwia19nZW4iLCJ2X2dlbiIsIm9ic190cmVlIiwia19vYnMiLCJ2X29icyIsInNocl90cmVlIiwia19zaHIiLCJ2X3NociIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJoYXNoX2ZvbGRfZGlyZWN0Iiwib2ZfaGFzaHRibF9leG4iLCJoYXNodGJsIiwidHJlZV9vZl9oYXNodGJsX2V4biIsImtleV9zZXQiLCJrZXlfc2V0X29mX3RyZWUiLCJvZl9rZXlfc2V0IiwidHJlZV9vZl9rZXlfc2V0IiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsInRvX3RyZWUkMCIsInJhbmsiLCJudGhfZXhuIiwibnRoIiwiY2xvc2VzdF9rZXkiLCJyYW5nZV90b19hbGlzdCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwic3VicmFuZ2UiLCJzcGxpdCIsIm1heF9lbHRfZXhuIiwibWluX2VsdF9leG4iLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwic3ltbWV0cmljX2RpZmYiLCJtZXJnZV9za2V3ZWQiLCJrZXlzJDAiLCJjb21wYXJlX2RpcmVjdCIsImNvbWJpbmVfZXJyb3JzIiwiZm9sZDIiLCJpdGVyMiIsIml0ZXJpX3VudGlsIiwiaW52YXJpYW50cyIsInZhbGlkYXRlaSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMCIsImtleV9zZXQkMCIsImtleV9zZXQkMSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVtcHR5JDAiLCJvZl9hbGlzdF9mb2xkJDAiLCJvZl9hbGlzdF9yZWR1Y2UkMCIsIm9mX2l0ZXJpJDAiLCJvZl9pdGVyaV9leG4kMCIsIm9mX3NvcnRlZF9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJmb3JfYWxsaSQwIiwiZXhpc3RzaSQwIiwiY291bnQkMCIsImNvdW50aSQwIiwic3BsaXQkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwidG9fdHJlZSIsImRhdGFfZXF1YWwiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJtaW4iLCJtYXgiLCJvcmRlciIsImtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byIsImtleXNfbGVzc19vcl9lcXVhbF90byIsImhvdyIsInNlZ21lbnRfb2YiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImluaXRfZm9yX2Jpbl9wcm90IiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2Zfc29ydGVkX2FycmF5JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX2FsaXN0JDEiLCJvZl9hbGlzdF9vcl9lcnJvciQxIiwib2ZfYWxpc3RfZXhuJDEiLCJvZl9hbGlzdF9tdWx0aSQxIiwib2ZfYWxpc3RfZm9sZCQxIiwib2ZfYWxpc3RfcmVkdWNlJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9rZXlfc2V0JDEiLCJ0b190cmVlJDIiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDEiLCJzZXQkMSIsImFkZCQxIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJmaW5kX2V4biQxIiwiZmluZCQxIiwicmVtb3ZlJDEiLCJtZW0kMSIsIml0ZXJfa2V5cyQxIiwiaXRlciQyIiwiaXRlcmkkMSIsIml0ZXJpX3VudGlsJDEiLCJpdGVyMiQxIiwibWFwJDIiLCJtYXBpJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlciQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcCQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJwYXJ0aXRpb25fdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJjb21wYXJlX2RpcmVjdCQxIiwia2V5cyQyIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsInZhbGlkYXRlJDEiLCJ2YWxpZGF0ZWkkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImZvcl9hbGwkMSIsImZvcl9hbGxpJDEiLCJleGlzdHMkMSIsImV4aXN0c2kkMSIsImNvdW50JDEiLCJjb3VudGkkMSIsInNwbGl0JDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInRfc2V4cF9ncmFtbWFyJDAiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxMCIsImVycm9yX3NvdXJjZV8wNTQiLCJzZXhwXzAxMiIsInRhZ18wMTMiLCJzZXhwX2FyZ3NfMDE0Iiwic2V4cF9hcmdzXzAxOSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJvZl9hXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjciLCJ4JDEiLCJnZW5lcmF0b3JfMDQ0Iiwic2l6ZV8wNDkiLCJyYW5kb21fMDUwIiwic2l6ZV8wNDciLCJyYW5kb21fMDQ4Iiwic2l6ZV8wNDUiLCJyYW5kb21fMDQ2Iiwib2JzZXJ2ZXJfMDM4IiwieF8wMzkiLCJoYXNoXzA0MSIsImhhc2hfMDQxJDAiLCJoYXNoXzA0MSQxIiwiaGFzaF8wNDEkMiIsImhhc2hfMDQxJDMiLCJoYXNoXzA0MSQ0Iiwic2hyaW5rZXJfMDM1IiwieF8wMzYiLCJ4XzAzNyIsIm9mX2FfMDUxIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsIm9mX2FfMDY3IiwiYXJnMF8wNjgiLCJyZXMwXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImVsdF9nZW4iLCJlbHRfb2JzIiwiZWx0X3NociIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInRvX21hcCIsIm9mX21hcF9rZXlzIiwib2ZfaGFzaF9zZXQiLCJoc2V0Iiwib2ZfaGFzaHRibF9rZXlzIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInJlbW92ZV9pbmRleCQwIiwiZ3JvdXBfYnkkMCIsImNob29zZV9leG4kMCIsImNob29zZSQwIiwiZWxlbWVudHMkMCIsImFyZV9kaXNqb2ludCQwIiwiaXNfc3Vic2V0JDAiLCJpbnRlciQwIiwidW5pb24kMCIsInRvX2FycmF5JDAiLCJmaW5kX21hcCQwIiwic3VtJDAiLCJmb2xkX3Jlc3VsdCQwIiwidG9fbWFwJDAiLCJ1bmlvbiQxIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMSIsImRpZmYkMSIsInN1bSQxIiwiZmluZF9tYXAkMSIsInJlbW92ZV9pbmRleCQxIiwiaXNfc3Vic2V0JDEiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2FycmF5JDAiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDEiLCJlbGVtZW50cyQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJncm91cF9ieSQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQxIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwib2ZfYXJyYXkiLCJzdGFibGVfZGVkdXBfbGlzdCIsInhzIiwib2YiLCJlcXVpdiIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwidCQwIiwiZWxlbWVudHMiLCJ1bmlvbiIsImludGVyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiZ3JvdXBfYnkiLCJyZW1vdmVfaW5kZXgiLCJtZXJnZV90b19zZXF1ZW5jZSIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwiaW52YXJpYW50cyQyIiwibGVuZ3RoJDIiLCJpc19lbXB0eSQyIiwiZWxlbWVudHMkMiIsIm1pbl9lbHQkMiIsIm1pbl9lbHRfZXhuJDIiLCJtYXhfZWx0JDIiLCJtYXhfZWx0X2V4biQyIiwiY2hvb3NlJDIiLCJjaG9vc2VfZXhuJDIiLCJ0b19saXN0JDIiLCJ0b19hcnJheSQyIiwiaXRlciQzIiwiaXRlcjIkMiIsImV4aXN0cyQyIiwiZm9yX2FsbCQyIiwiY291bnQkMiIsInN1bSQyIiwiZmluZCQyIiwiZmluZF9leG4kMiIsImZpbmRfbWFwJDIiLCJmb2xkJDIiLCJmb2xkX3VudGlsJDIiLCJmb2xkX3JpZ2h0JDIiLCJmb2xkX3Jlc3VsdCQyIiwibWFwJDMiLCJmaWx0ZXIkMiIsImZpbHRlcl9tYXAkMyIsInBhcnRpdGlvbl90ZiQyIiwibWVtJDIiLCJhZGQkMiIsInJlbW92ZSQyIiwidW5pb24kMiIsImludGVyJDIiLCJkaWZmJDIiLCJzeW1tZXRyaWNfZGlmZiQyIiwiY29tcGFyZV9kaXJlY3QkMiIsImVxdWFsJDIiLCJpc19zdWJzZXQkMiIsImFyZV9kaXNqb2ludCQyIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2hhc2hfc2V0JDMiLCJvZl9oYXNodGJsX2tleXMkMyIsIm9mX2FycmF5JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwidW5pb25fbGlzdCQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsImdyb3VwX2J5JDIiLCJzcGxpdCQyIiwibnRoJDIiLCJyZW1vdmVfaW5kZXgkMiIsIm9mX3RyZWUkMyIsInRvX3NlcXVlbmNlJDIiLCJiaW5hcnlfc2VhcmNoJDIiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQyIiwibWVyZ2VfdG9fc2VxdWVuY2UkMiIsIm9mX21hcF9rZXlzJDMiLCJ0b19tYXAkMiIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwic3RhYmxlX2RlZHVwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhXzAxMCIsImJfMDExIiwibm9uZSIsInNvbWUiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInIxIiwidDEkMCIsInIyIiwidDIkMCIsIm4xIiwibjIiLCJpc19jb21wcmVzc2VkIiwicGh5c19lcXVhbCIsInVuaW9uX2ZpbmRfZ2V0X2NoZWNrX25vX3BlbmRpbiIsImNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyIsImluY3JfbGVuZ3RoIiwiaW5jcl9wZW5kaW5nX2l0ZXJzIiwiZGVjcl9wZW5kaW5nX2l0ZXJzIiwid2l0aF9pdGVyYXRpb25fMiIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiaXNfZmlyc3QiLCJpc19sYXN0IiwibWVtX2VsdCIsInByZXYkMCIsImluc2VydF9hZnRlciQwIiwiaW5zZXJ0X2JlZm9yZSQwIiwibmV3X2VsdCIsImluc2VydF9lbXB0eSIsImluc2VydF9sYXN0IiwiaW5zZXJ0X2ZpcnN0IiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZmlyc3QiLCJzZWNvbmQiLCJuZXdfdCIsInZhbHVlJDAiLCJtb3ZlX2JlZm9yZSIsImFuY2hvciIsImFmdGVyX2VsdCIsIm1vdmVfdG9fZnJvbnQiLCJtb3ZlX2FmdGVyIiwibW92ZV90b19iYWNrIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJ0XzAxOCIsInRfMDE3IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdmFsdWUiLCJ2X3RleHQiLCJvZl90ZXh0IiwidmFsdWVfb2Zfc2V4cCIsInRleHQiLCJmaWxlbmFtZSIsImFubm90YXRlZCIsInRfc2V4cF9ncmFtbWFyJDEiLCJvZl92YWx1ZSIsImJpbl9zaGFwZV9ub19yYWlzZSIsImJpbl9zaXplX25vX3JhaXNlIiwiYmluX3dyaXRlX25vX3JhaXNlIiwiYmluX3dyaXRlcl9ub19yYWlzZSIsImJpbl9yZWFkX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UkMCIsImJpbl9yZWFkZXJfbm9fcmFpc2UiLCJiaW5fbm9fcmFpc2UiLCJub19yYWlzZV9vZl9zZXhwIiwib2ZfYV8wMTkiLCJzZXhwX29mX25vX3JhaXNlIiwib2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjIiwib2Zfc2V4cCIsInNleHBfb2ZfZGF0YSIsImFyZzFfMDAyIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImt2IiwicmVhZCIsImVuc3VyZV9jYW5fbW9kaWZ5IiwibG9va3VwIiwibG9va3VwX2V4biIsImVucXVldWUiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlX2JhY2siLCJlbnF1ZXVlX2Zyb250IiwiZW5xdWV1ZV9leG4iLCJlbnF1ZXVlX2JhY2tfZXhuIiwiZW5xdWV1ZV9mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFjayIsImxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQiLCJkZXF1ZXVlX3dpdGhfa2V5IiwibWF5YmVfa3YiLCJkZXF1ZXVlX3dpdGhfa2V5X2V4biIsImRlcXVldWVfYmFja193aXRoX2tleSIsImRlcXVldWVfYmFja193aXRoX2tleV9leG4iLCJkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9iYWNrIiwiZGVxdWV1ZV9mcm9udCIsImxhc3Rfd2l0aF9rZXkiLCJmaXJzdF93aXRoX2tleSIsImRlcXVldWVfZXhuIiwiZGVxdWV1ZV9iYWNrX2V4biIsImRlcXVldWVfZnJvbnRfZXhuIiwiYWMiLCJkZXF1ZXVlX2FsbCIsInJlbW92ZV9leG4iLCJsb29rdXBfYW5kX3JlbW92ZSIsInJlcGxhY2UiLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwiZXNjYXBlZCIsImNvbnRhaW5zIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsImluZGV4IiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tIiwicmluZGV4X2Zyb21fZXhuIiwic3Vic3RyX2luZGV4Iiwic3Vic3RyX2luZGV4X2V4biIsInN1YnN0cl9pbmRleF9hbGwiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCIsInN1YnN0cl9yZXBsYWNlX2FsbCIsImlzX3N1YnN0cmluZyIsImlzX3N1YnN0cmluZ19hdCIsInRvX2xpc3RfcmV2IiwiaXNfc3VmZml4IiwiaXNfcHJlZml4IiwibHNwbGl0Ml9leG4iLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJyc3BsaXQyIiwic3BsaXRfb25fY2hhcnMiLCJzcGxpdF9saW5lcyIsImxmaW5kaSIsInJmaW5kaSIsImxzdHJpcCIsInJzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNob3Bfc3VmZml4X2V4biIsImNob3BfcHJlZml4X2V4biIsImNob3Bfc3VmZml4IiwiY2hvcF9wcmVmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJzdWZmaXgiLCJwcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImRyb3BfcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4X2xlbmd0aCIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4MiIsImNvbW1vbl9zdWZmaXgyX2xlbmd0aCIsImNvbW1vbl9wcmVmaXgyX2xlbmd0aCIsImNvbmNhdF9hcnJheSIsIm9mX2NoYXIiLCJvZl9jaGFyX2xpc3QiLCJpc19zdWZmaXgkMCIsImlzX3ByZWZpeCQwIiwiaXNfc3Vic3RyaW5nJDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsInN1YnN0cl9pbmRleCQwIiwic3Vic3RyX2luZGV4X2V4biQwIiwic3Vic3RyX2luZGV4X2FsbCQwIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QkMCIsInN1YnN0cl9yZXBsYWNlX2FsbCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRhZzIiLCJ2YWxpZGF0ZV9vcmRpbmFyeSIsInJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSIsInJvYnVzdGx5X2NvbXBhcmUiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJyb2J1c3RseV9jb21wYXJlJDAiLCJyb2J1c3Rfc2lnbiIsInRvX3N0cmluZ18xMiIsImdlbl91bmlmb3JtX2V4Y2wiLCJnZW5faW5jbCIsImdlbl93aXRob3V0X25hbiIsImdlbl9maW5pdGUiLCJnZW5fcG9zaXRpdmUiLCJnZW5fbmVnYXRpdmUiLCJnZW5femVybyIsImdlbl9uYW4iLCJnZW5fc3Vibm9ybWFsIiwiZ2VuX25vcm1hbCIsImdlbl9pbmZpbml0ZSIsIm9mX2Zsb2F0IiwidG9fZmxvYXQiLCJ0b19pbnRfZXhuIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiYmluZCIsImpvaW4iLCJpZ25vcmVfbSIsImFsbF91bml0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsInV3IiwicGh5c19zYW1lIiwiYnByaW50ZiIsImNvbnN0JDAiLCJlcnJvciIsImVycm9yX3MiLCJmb3JjZSIsImlkZW50IiwiaW52YWxpZF9hcmdmIiwiaWZwcmludGYiLCJpc19ub25lIiwiaXNfc29tZSIsImtzcHJpbnRmIiwib2tfZXhuIiwicHJpbnRfcyIsImVwcmludF9zIiwicHJvdGVjdCIsInByb3RlY3R4IiwicmFpc2VfcyIsInNwcmludGYiLCJzdGFnZSIsInVuc3RhZ2UiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheSIsImJpbl93cml0ZV9hcnJheSIsImJpbl93cml0ZXJfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImJpbl9yZWFkX2FycmF5JDAiLCJiaW5fcmVhZGVyX2FycmF5IiwiYmluX2FycmF5IiwiY29tcGFyZV9hcnJheSIsImVxdWFsX2FycmF5IiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJhX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ib29sIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2l6ZV9jaGFyIiwiYmluX3dyaXRlX2NoYXIiLCJiaW5fd3JpdGVyX2NoYXIiLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRlcl9jaGFyIiwiYmluX2NoYXIiLCJjb21wYXJlX2NoYXIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfY2hhciIsImVxdWFsX2NoYXIiLCJjaGFyX29mX3NleHAiLCJzZXhwX29mX2NoYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3dyaXRlX2Zsb2F0IiwiYmluX3dyaXRlcl9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0IiwiYmluX3JlYWRfZmxvYXQkMCIsImJpbl9yZWFkZXJfZmxvYXQiLCJiaW5fZmxvYXQiLCJjb21wYXJlX2Zsb2F0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mbG9hdCIsImVxdWFsX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsInNleHBfb2ZfZmxvYXQiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Zsb2F0IiwiYmluX3NoYXBlX2ludCIsImJpbl9zaXplX2ludCIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVyX2ludCIsImJpbl9yZWFkX2ludCIsImJpbl9yZWFkX2ludCQwIiwiYmluX3JlYWRlcl9pbnQiLCJiaW5faW50IiwiY29tcGFyZV9pbnQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9pbnQiLCJlcXVhbF9pbnQiLCJpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaW50IiwiaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NpemVfaW50MzIiLCJiaW5fd3JpdGVfaW50MzIiLCJiaW5fd3JpdGVyX2ludDMyIiwiYmluX3JlYWRfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiQwIiwiYmluX3JlYWRlcl9pbnQzMiIsImJpbl9pbnQzMiIsImNvbXBhcmVfaW50MzIiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ludDMyIiwiZXF1YWxfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwic2V4cF9vZl9pbnQzMiIsImludDMyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50MzIiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2l6ZV9pbnQ2NCIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZXJfaW50NjQiLCJiaW5fcmVhZF9pbnQ2NCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZGVyX2ludDY0IiwiYmluX2ludDY0IiwiY29tcGFyZV9pbnQ2NCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfaW50NjQiLCJlcXVhbF9pbnQ2NCIsImludDY0X29mX3NleHAiLCJzZXhwX29mX2ludDY0IiwiaW50NjRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQ2NCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fd3JpdGVfbGF6eV90IiwiYmluX3dyaXRlcl9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QkMCIsImJpbl9yZWFkZXJfbGF6eV90IiwiYmluX2xhenlfdCIsImNvbXBhcmVfbGF6eV90IiwiYV8wNDYiLCJiXzA0NyIsImFfMDQ4IiwiYl8wNDkiLCJoYXNoX2ZvbGRfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJzZXhwX29mX2xhenlfdCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2xhenlfdCIsImJpbl9zaGFwZV9saXN0IiwiYmluX3NpemVfbGlzdCIsImJpbl93cml0ZV9saXN0IiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRfbGlzdCIsImJpbl9yZWFkX2xpc3QkMCIsImJpbl9yZWFkZXJfbGlzdCIsImJpbl9saXN0IiwiY29tcGFyZV9saXN0IiwiYV8wNTUiLCJiXzA1NiIsImFfMDU3IiwiYl8wNTgiLCJoYXNoX2ZvbGRfbGlzdCIsImVxdWFsX2xpc3QiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiZnVuYyQ1IiwiaGFzaF9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsInNleHBfb2ZfbmF0aXZlaW50IiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfbmF0aXZlaW50IiwiYmluX3NoYXBlX29wdGlvbiIsImJpbl9zaXplX29wdGlvbiIsImJpbl93cml0ZV9vcHRpb24iLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiQwIiwiYmluX3JlYWRlcl9vcHRpb24iLCJiaW5fb3B0aW9uIiwiY29tcGFyZV9vcHRpb24iLCJhXzA3MyIsImJfMDc0IiwiYV8wNzUiLCJiXzA3NiIsImVxdWFsX29wdGlvbiIsImFfMDc3IiwiYl8wNzgiLCJhXzA3OSIsImJfMDgwIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImhhc2hfZm9sZF9zdHJpbmciLCJmdW5jJDYiLCJoYXNoX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2l6ZV9ieXRlcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZXJfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZGVyX2J5dGVzIiwiYmluX2J5dGVzIiwiY29tcGFyZV9ieXRlcyIsImVxdWFsX2J5dGVzIiwiYnl0ZXNfb2Zfc2V4cCIsInNleHBfb2ZfYnl0ZXMiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2J5dGVzIiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaXplX3JlZiIsImJpbl93cml0ZV9yZWYiLCJiaW5fd3JpdGVyX3JlZiIsImJpbl9yZWFkX3JlZiIsImJpbl9yZWFkX3JlZiQwIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVmIiwiY29tcGFyZV9yZWYiLCJhXzA5NiIsImJfMDk3IiwiYV8wOTgiLCJiXzA5OSIsImVxdWFsX3JlZiIsImFfMTAwIiwiYl8xMDEiLCJhXzEwMiIsImJfMTAzIiwicmVmX29mX3NleHAiLCJzZXhwX29mX3JlZiIsInJlZl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3JlZiIsImdyb3VwJDEzIiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2l6ZV91bml0IiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZF91bml0IiwiYmluX3JlYWRfdW5pdCQwIiwiYmluX3JlYWRlcl91bml0IiwiYmluX3VuaXQiLCJjb21wYXJlX3VuaXQiLCJlcXVhbF91bml0IiwiaGFzaF9mb2xkX3VuaXQiLCJmdW5jJDciLCJoYXNoX3VuaXQiLCJ1bml0X29mX3NleHAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfdW5pdCIsImdyb3VwJDE0IiwiYmluX3NoYXBlX2Zsb2F0X2FycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRlcl9mbG9hdF9hcnJheSIsImJpbl9mbG9hdF9hcnJheSIsImNvbXBhcmVfZmxvYXRfYXJyYXkiLCJhXzExNCIsImJfMTE1IiwiYV8xMTYiLCJiXzExNyIsImZsb2F0X2FycmF5X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0X2FycmF5IiwiZmxvYXRfYXJyYXlfc2V4cF9ncmFtbWFyIiwidHlwZW5hbWVfb2ZfZmxvYXRfYXJyYXkiLCJuYW1lX29mX2Zsb2F0X2FycmF5IiwidHlwZXJlcF9vZl9mbG9hdF9hcnJheSIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwibWF4X21lbV93YWl0aW5nX2djIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic3ViX3NoYXJlZCIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdCIsIndyaXRlciIsImRhdGFfbGVuIiwidG90YWxfbGVuIiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4Iiwidl8wMDUiLCJyZXMwXzAxMSIsInZfMDA2IiwicmVzMV8wMTIiLCJ2XzAwNyIsInJlczJfMDEzIiwicG9zX2FmdGVyX3NpemVfaGVhZGVyIiwicG9zX2FmdGVyX2RhdGEiLCJhcmc0XzAyMyIsImFyZzNfMDIyIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5Iiwidl8wMTQiLCJyZXMwXzAyNCIsInZfMDE1IiwicmVzMV8wMjUiLCJ2XzAxNiIsInJlczJfMDI2Iiwidl8wMTciLCJyZXMzXzAyNyIsInZfMDE4IiwicmVzNF8wMjgiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsIm1pbl9wb3MiLCJkYXRhX2VuZCIsInNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmciLCJzbGVuIiwic2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmciLCJtYXhfcG9zIiwiZGF0YV9iZWdpbiIsInRvX2J5dGVzIiwib2ZfYnl0ZXMiLCJieXRlcyIsInRvX2hleCIsIm9mX2hleF9leG4iLCJvZl9iaW5hcnlfZXhuIiwiYWNjdW0iLCJ0b19iaW5hYmxlJDAiLCJkaWdlc3Rfc3RyaW5nIiwiZGlnZXN0X2J5dGVzIiwiZGlnZXN0X251bV9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDQ1IiwiZXJyb3Jfc291cmNlXzA2OCIsImVycm9yX3NvdXJjZV8xMDYiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDYiLCJpc19kc3RfMDA4IiwiYWJicnZfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIyIiwiZmllbGRfc2V4cF8wMTUkMyIsImZpZWxkX3NleHBfMDE1IiwiZmllbGRfc2V4cF8wMTUkMCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE4IiwiZmllbGRfc2V4cF8wMTUkMiIsImZ2YWx1ZV8wMTciLCJhYmJydl8wMTEiLCJpc19kc3RfMDA5IiwidXRjX29mZnNldF9pbl9zZWNvbmRzXzAwNyIsImFiYnJ2XzAyOSIsImlzX2RzdF8wMjciLCJ1dGNfb2Zmc2V0X2luX3NlY29uZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYXJnXzAyOCIsImJuZHNfMDI0JDAiLCJhcmdfMDI2IiwiYm5kc18wMjQkMSIsInZfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIiwidl9zZWNvbmRzIiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wMzMiLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMiLCJzZWNvbmRzXzAzNiIsImR1cGxpY2F0ZXNfMDM4IiwiZXh0cmFfMDM5Iiwic2V4cF8wMzIkMCIsImZpZWxkX3NleHBzXzA0MiIsImZpZWxkX25hbWVfMDQwIiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzA0MSQyIiwiZmllbGRfc2V4cF8wNDEiLCJmaWVsZF9zZXhwXzA0MSQwIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDQxJDEiLCJmdmFsdWVfMDQzIiwic2Vjb25kc18wMzciLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMkMCIsInNlY29uZHNfMDUyIiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzA1IiwiYXJnXzA1MyIsImJuZHNfMDQ5IiwiYXJnXzA1MSIsImJuZHNfMDQ5JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJzZXhwXzA1NSIsImZpZWxkX3NleHBzXzA1NiIsInN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcCIsIm5ld19yZWdpbWVfMDU5IiwiZHVwbGljYXRlc18wNjEiLCJleHRyYV8wNjIiLCJzZXhwXzA1NSQwIiwiZmllbGRfc2V4cHNfMDY1IiwiZmllbGRfbmFtZV8wNjMiLCJ0YWlsXzA3MCIsImZpZWxkX3NleHBfMDY0JDIiLCJmaWVsZF9zZXhwXzA2NCIsInhfMDcxIiwiZmllbGRfc2V4cF8wNjQkMCIsImZ2YWx1ZV8wNjciLCJmaWVsZF9zZXhwXzA2NCQxIiwiZnZhbHVlXzA2NiIsIm5ld19yZWdpbWVfMDYwIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwJDAiLCJuZXdfcmVnaW1lXzA3NSIsImFyZ18wNzYiLCJibmRzXzA3MiIsImFyZ18wNzQiLCJibmRzXzA3MiQwIiwidjUiLCJ2NyIsInY2Iiwidl9uYW1lIiwidl9vcmlnaW5hbF9maWxlbmFtZSIsInZfZGlnZXN0Iiwidl90cmFuc2l0aW9ucyIsInZfbGFzdF9yZWdpbWVfaW5kZXgiLCJ2X2RlZmF1bHRfbG9jYWxfdGltZV90eXBlIiwidl9sZWFwX3NlY29uZHMiLCJzZXhwXzA3OCIsImZpZWxkX3NleHBzXzA3OSIsIm5hbWVfMDgwIiwib3JpZ2luYWxfZmlsZW5hbWVfMDgyIiwiZGlnZXN0XzA4NCIsInRyYW5zaXRpb25zXzA4NiIsImxhc3RfcmVnaW1lX2luZGV4XzA4OCIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzA5MCIsImxlYXBfc2Vjb25kc18wOTIiLCJkdXBsaWNhdGVzXzA5NCIsImV4dHJhXzA5NSIsInNleHBfMDc4JDAiLCJmaWVsZF9zZXhwc18wOTgiLCJmaWVsZF9uYW1lXzA5NiIsInRhaWxfMTA4IiwiZmllbGRfc2V4cF8wOTckNyIsImZpZWxkX3NleHBfMDk3IiwiZmllbGRfc2V4cF8wOTckMCIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5NyQxIiwiZnZhbHVlXzEwNCIsImZpZWxkX3NleHBfMDk3JDIiLCJmdmFsdWVfMTA1IiwiZmllbGRfc2V4cF8wOTckMyIsImZ2YWx1ZV8wOTkiLCJmaWVsZF9zZXhwXzA5NyQ0IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDk3JDUiLCJmdmFsdWVfMTAzIiwiZmllbGRfc2V4cF8wOTckNiIsImZ2YWx1ZV8xMDAiLCJsZWFwX3NlY29uZHNfMDkzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDkxIiwibGFzdF9yZWdpbWVfaW5kZXhfMDg5IiwidHJhbnNpdGlvbnNfMDg3IiwiZGlnZXN0XzA4NSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzA4MyIsIm5hbWVfMDgxIiwidHJhbnNpdGlvbnNfMTE3IiwiZGlnZXN0XzExNSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzExMyIsIm5hbWVfMTExIiwibGFzdF9yZWdpbWVfaW5kZXhfMTE5IiwibGVhcF9zZWNvbmRzXzEyMyIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzEyMSIsImFyZ18xMjQiLCJibmRzXzExMCIsImFyZ18xMjIiLCJibmRzXzExMCQwIiwiYXJnXzEyMCIsImJuZHNfMTEwJDEiLCJhcmdfMTE4IiwiYm5kc18xMTAkMiIsImFyZ18xMTYiLCJibmRzXzExMCQzIiwiYXJnXzExNCIsImJuZHNfMTEwJDQiLCJhcmdfMTEyIiwiYm5kc18xMTAkNSIsIm9yaWdpbmFsX2ZpbGVuYW1lIiwiem9uZSIsImRpZ2VzdCIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kcyIsImlzX2RzdCIsImFiYnJ2X2luZGV4IiwiYWJicnYiLCJpbnB1dF90el9maWxlX2dlbiIsImlucHV0X3RyYW5zaXRpb24iLCJpbnB1dF9sZWFwX3NlY29uZCIsInV0Y19sb2NhbF9jb3VudCIsInN0ZF93YWxsX2NvdW50IiwibGVhcF9jb3VudCIsInRyYW5zaXRpb25fY291bnQiLCJ0eXBlX2NvdW50IiwiYWJicnZfY2hhcl9jb3VudCIsInRyYW5zaXRpb25fdGltZXMiLCJ0cmFuc2l0aW9uX2luZGljZXMiLCJyZWdpbWVzIiwicmF3X2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsImluZGV4ZWRfYWJicnZzIiwibGVhcF9zZWNvbmRzIiwicmVnaW1lcyQwIiwidGltZSIsInJlZ2ltZSIsInJhd190cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zIiwibHR0IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJyZXN0IiwibmV3X3JlZ2ltZSIsImlucHV0X2xlYXBfc2Vjb25kX2dlbiIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHMiLCJyZWFkX2hlYWRlciIsIm1hZ2ljIiwiYmFkX3ZlcnNpb24iLCJ2ZXJzaW9uIiwiaW5wdXRfdHpfZmlsZV92MSIsImlucHV0X3R6X2ZpbGUiLCJ6b25lbmFtZSIsInhfMTI1IiwibWFrZV96b25lIiwicmVhc29uIiwib2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIiwib2ZfdXRjX29mZnNldCIsImxpa2VseV9tYWNoaW5lX3pvbmVzIiwidXRjIiwicmVzZXRfdHJhbnNpdGlvbl9jYWNoZSIsImdldF9yZWdpbWVfZXhuIiwiZWZmZWN0aXZlX3N0YXJ0X3RpbWUiLCJtb2RlIiwiaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2VjIiwiaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2VjIiwiYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzIiwidHJhbnNpdGlvbiIsImluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2giLCJpbmRleCQwIiwiaW5kZXgkMSIsImluZGV4JDIiLCJpbmRleCQzIiwiaW5kZXgkNCIsIm9mX2ludDYzX3NlY29uZHMiLCJ0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXgiLCJvZl9zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3Bhbl9zaW5jZV9lcG9jaCIsIm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJpbmRleF9vZl9kYXRlX2FuZF9vZmRheSIsImluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IiwiaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF8iLCJhZnRlciIsImJlZm9yZSIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50XyIsImluZGV4X2FiYnJldmlhdGlvbl9leG4iLCJpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIiwicmF3IiwidmFsaWRhdGlvbl9mYWlsZWQiLCJhcmcyXzAwMyIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAwNiIsImNyZWF0ZV9leG4iLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwidHlwZV9pZDEiLCJ0eXBlX2lkMiIsIm5hbWVfb2Zfa2V5IiwidWlkX29mX2tleSIsInR5cGVfaWRfbmFtZSIsInR5cGVfaWRfdWlkIiwicGFja2VkIiwieF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm1lbV9ieV9pZCIsImlkIiwicmVtb3ZlX2J5X2lkIiwia2V5JDAiLCJjaGFuZ2VfZXhuIiwib3JpZyIsIm9mX2FfMDExIiwib2ZfYV8wMTIiLCJ4XzAxMyIsInhfMDE0Iiwib2ZfYV8wMTciLCJkZWZhdWx0JDAiLCJpZCQwIiwiaWQkMSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsInJhY2VfZnJlZV9jcmVhdGVfbG9vcCIsImNlbGwiLCJuZXdfeCIsImN1cnJlbnQiLCJpbW1lZGlhY3kiLCJhbGxvd2VkX2ludHMiLCJuZXZlcl93aXRoX25hbWUiLCJuZXZlciIsInVua25vd24iLCJvcHRpb24iLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsInJlZiIsInR1cGxlMiIsInR1cGxlMyIsInR1cGxlNCIsInR1cGxlNSIsImZ1bmN0aW9uJDAiLCJpbnQkMCIsInJlZiQwIiwiYXJyYXkkMCIsInR1cGxlMiQwIiwidHVwbGUzJDAiLCJ0dXBsZTQkMCIsInR1cGxlNSQwIiwiZnVuY3Rpb24kMSIsIm9wdGlvbiQwIiwibGlzdCQwIiwibGF6eV90IiwicG9zc2libHlfdW5ib3hlZCIsImNoaWxkX3R5cGUiLCJ0aGVfb25seV9maWVsZCIsInZhcmlhbnQiLCJ0YWciLCJtb3JlIiwibm8iLCJtb3JlX2FyZ19saXN0Iiwib25lX2FyZ19saXN0Iiwibm9fYXJnX2xpc3QiLCJub19hcmdfY291bnQiLCJoYXNoX3NldCIsInJlcXVpcmVkIiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzAzMCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwOCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczFfMDE1IiwiY3VycnkiLCJ1bmN1cnJ5IiwibWFwX2ZzdCIsIm1hcF9zbmQiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYl8wMjAiLCJvZl9jXzAyMSIsInNleHBfMDI5IiwiYXJnMl8wMjUiLCJyZXMwXzAyNiIsInJlczFfMDI3IiwicmVzMl8wMjgiLCJvZl9hXzAzMSIsIm9mX2JfMDMyIiwib2ZfY18wMzMiLCJhcmcyXzAzNiIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNyIsInJlczFfMDM4IiwicmVzMl8wMzkiLCJvZl9jIiwiY3VycnkkMCIsInVuY3VycnkkMCIsIm1hcF9mc3QkMCIsIm1hcF9zbmQkMCIsIm1hcF90cmQiLCJtYXAyJDAiLCJ6MiIsInoxIiwiZ2V0MyIsImNtcDMiLCJ6JDAiLCJjMSIsImMyIiwiZXEzIiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJhXzA1MSIsImJfMDUyIiwidF8wNTQiLCJ0XzA1MyIsInRfMDU2IiwidF8wNTUiLCJzZXhwXzA2MiIsImFyZzFfMDU5IiwiYXJnMF8wNTgiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwicmVzMF8wNjYiLCJyZXMxXzA2NyIsInMyIiwiczEiLCJzMiQwIiwiczEkMCIsIndlZWtkYXlzIiwid2Vla2VuZHMiLCJzaXplXzAxOCIsInJhbmRvbV8wMTkiLCJzaXplXzAxMiIsInJhbmRvbV8wMTMiLCJzaXplXzAxMCIsInJhbmRvbV8wMTEiLCJyYW5kb21fMDA5Iiwic2l6ZV8wMDYiLCJyYW5kb21fMDA3IiwiaGFzaF8wMDUiLCJoYXNoXzAwNSQwIiwiaGFzaF8wMDUkMSIsImhhc2hfMDA1JDIiLCJoYXNoXzAwNSQzIiwiaGFzaF8wMDUkNCIsImhhc2hfMDA1JDUiLCJoYXNoXzAwNSQ2IiwidG9fc3RyaW5nX2xvbmciLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwMyIsImN1c3RvbV9wcmludGZfMDA0IiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDIxIiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsImRheXNfaW5fbW9udGgiLCJpbnZhbGlkIiwibXNnIiwiZGF5c19pbl9tb250aCQwIiwidW5jaGVja2VkX3ZhbHVlIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJzZXhwXzAwNSQwIiwiZmllbGRfc2V4cHNfMDA2IiwieV8wMDciLCJtXzAwOSIsImRfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwNSIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjMiLCJmaWVsZF9zZXhwXzAxNiQzIiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNCIsImZpZWxkX3NleHBfMDE2JDAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZmllbGRfc2V4cF8wMTYkMiIsImRfMDEyIiwibV8wMTAiLCJ5XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInZhbHVlX2V4biIsInN5bWJvbCQ1IiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwib2ZfbXVsdCIsInRvX211bHQiLCJvZl9wZXJjZW50YWdlIiwidG9fcGVyY2VudGFnZSIsIm9mX2JwIiwidG9fYnAiLCJvZl9icF9pbnQiLCJ0b19icF9pbnQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWxfbXVsdCIsImRlY2ltYWxfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIiwicm91bmRfZGVjaW1hbF9icCIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiZXhwb25lbnQiLCJwcmVjaXNpb24iLCJleHBvbmVudF9FIiwiZGVjaW1hbCIsIm9jYW1sIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwieF9hYnMiLCJyZWFsbHlfb2Zfc3RyaW5nIiwiZmxvYXRfb2Zfc3RyaW5nIiwic3RyJDAiLCJzdHIkMSIsInN0ciQyIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImlzX3plcm8iLCJhcHBseSIsImlzX25hbiIsImlzX2luZiIsIm5lZyIsInNpZ25fZXhuIiwib2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIiwidF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIiwiZm9ybWF0JDAiLCJyYW5kb21pemUiLCJzcGFuIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJlcnJvcl9zb3VyY2VfMDMyIiwibiQyIiwibiQzIiwibiQ0Iiwic2lnbl8wMDYiLCJocl8wMDgiLCJtaW5fMDEwIiwic2VjXzAxMiIsIm1zXzAxNCIsInVzXzAxNiIsIm5zXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfc2V4cHNfMDI0IiwiZmllbGRfbmFtZV8wMjIiLCJ0YWlsXzAzNCIsImZpZWxkX3NleHBfMDIzJDciLCJmaWVsZF9zZXhwXzAyMyIsInhfMDM1IiwiZmllbGRfc2V4cF8wMjMkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAyMyQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDIzJDIiLCJmdmFsdWVfMDI4IiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZnZhbHVlXzAyNyIsImZpZWxkX3NleHBfMDIzJDUiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNiIsImZ2YWx1ZV8wMzAiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwibnNfMDQ5IiwidXNfMDQ3IiwibXNfMDQ1Iiwic2VjXzA0MyIsIm1pbl8wNDEiLCJocl8wMzkiLCJzaWduXzAzNyIsImFyZ18wNTAiLCJibmRzXzAzNiIsImFyZ18wNDgiLCJibmRzXzAzNiQwIiwiYXJnXzA0NiIsImJuZHNfMDM2JDEiLCJhcmdfMDQ0IiwiYm5kc18wMzYkMiIsImFyZ18wNDIiLCJibmRzXzAzNiQzIiwiYXJnXzA0MCIsImJuZHNfMDM2JDQiLCJhcmdfMDM4IiwiYm5kc18wMzYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50X3NlYyIsIm9mX2ludDMyX3NlY29uZHMiLCJvZl9taW4iLCJvZl9ociIsIm9mX2RheSIsImRpdmlkZV9ieV91bml0X29mX3RpbWUiLCJ1bml0X29mX3RpbWUiLCJzY2FsZV9ieV91bml0X29mX3RpbWUiLCJzdGgkMSIsInN0aCQyIiwic3RoJDMiLCJzdGgkNCIsInN0aCQ1Iiwic3RoJDYiLCJ0b19zaG9ydF9zdHJpbmciLCJ0X29mX3NleHBfdjFfdjIiLCJpc192MiIsInNleHBfb2ZfdF92MV92MiIsImFic190IiwidG9fdW5pdF9vZl90aW1lIiwib2ZfdW5pdF9vZl90aW1lIiwic3VmZml4X29mX3VuaXRfb2ZfdGltZSIsInBhcnNlX3N1ZmZpeCIsInVuaXRfb2ZfdGltZV9saXN0JDEiLCJ1bml0X29mX3RpbWVfbGlzdCIsInVuaXRfb2ZfdGltZV9saXN0JDAiLCJzdGF0ZV9pc19maW5hbCIsImludmFsaWRfc3RyaW5nJDAiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJzdGFydF9vZl9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJzJDAiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9pbnRfdXMiLCJvZl9pbnRfbXMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJvZl9pbnRfbnMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNpbmNlX3VuaXhfZXBvY2giLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJoYWxmX21pY3Jvc2Vjb25kIiwidG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwibWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwib2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3ZhbHVlX3JlcHJlc2VudGFibGUiLCJtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSIsImlzX2ludmFsaWQiLCJvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQiLCJzdWJfZXhuIiwidG9fc3RyaW5nX3dpdGhfdW5pdCIsInNpeHR5IiwidGhvdXNhbmQiLCJ1bml0JDAiLCJudW1fZGlnaXRzIiwidG9fbWljcm9zZWNvbmRfc3RyaW5nIiwiZXZlcnkiLCJzdGFydCQxIiwidG9faW50NjNfbnNfc2luY2VfZXBvY2giLCJvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCIsIm92ZXJmbG93IiwiYWRkX292ZXJmbG93ZWQiLCJzdWJfb3ZlcmZsb3dlZCIsImFkZF9zYXR1cmF0aW5nIiwic3ViX3NhdHVyYXRpbmciLCJ0b19pbnRfbnNfc2luY2VfZXBvY2giLCJvZl9pbnRfbnNfc2luY2VfZXBvY2giLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJ0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJuc19zaW5jZV9lcG9jaCIsIm5zX3Blcl9kYXkiLCJhcHByb3hfZGF5c19mcm9tX2Vwb2NoIiwibnNfc2luY2Vfc3RhcnRfb2ZfZGF5Iiwic3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJzcGFuX2luX2RheXNfc2luY2VfZXBvY2giLCJzcGFuX3NpbmNlX2Vwb2NoIiwidHdvX2RpZ2l0X29mX3N0cmluZyIsIm5zX29mXzEwMF9tcyIsIm5zX29mXzEwX21zIiwibnNfb2ZfMV9tcyIsIm5zX29mXzEwMF91cyIsIm5zX29mXzEwX3VzIiwibnNfb2ZfMV91cyIsIm5zX29mXzEwMF9ucyIsIm5zX29mXzEwX25zIiwibnNfb2ZfMV9ucyIsInNlY29uZHNfc3BhbiIsInN1Yl9zZWNvbmRfc3BhbiIsIm9mZGF5X3N0cmluZ193aXRoX3pvbmUiLCJkYXRlX3N0cmluZyIsIm9mZGF5X3N0cmluZyIsInN1ZmZpeF9sZW4iLCJzZWNvbmRzX3N0cmluZyIsInN1Yl9zZWNvbmRfc3RyaW5nIiwic19zdHJpbmciLCJtX3N0cmluZyIsImhfc3RyaW5nIiwibXVsdGlwbGllciIsImRheXNfZnJvbV9lcG9jaCQwIiwiZGF5c19mcm9tX2Vwb2NoX2luX25zIiwiYXR0ZW1wdCIsInNwYW5fb2ZfZHVyYXRpb24iLCJ0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQiLCJkdXJhdGlvbnMiLCJzcGFucyIsInN0cmluZ19ieXRlcyIsInNyY19wb3MiLCJzcmNfbGVuIiwiZHN0X3BvcyIsInNyY19wb3MkMCIsImJ5dGVzX2J5dGVzIiwic3RyaW5nX2JpZ3N0cmluZyIsImJ5dGVzX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19iaWdzdHJpbmciLCJiaWdzdHJpbmdfc3RyaW5nIiwiYmlnc3RyaW5nX2J5dGVzIiwic2l6ZV8wMDkiLCJyYW5kb21fMDEwIiwic2l6ZV8wMDciLCJoYXNoXzAwOCIsImhhc2hfMDA4JDAiLCJoYXNoXzAwOCQxIiwiaGFzaF8wMDgkMiIsImJhc2VfbGVuIiwiZ2V0X25vX2JvdW5kc19jaGVjayIsImZvbGRpJDAiLCJ3cmFwX3N1Yl9uIiwib25fZXJyb3IiLCJibGl0X3RvIiwiYmxpdF90b19zdHJpbmciLCJibGl0X3RvX2J5dGVzIiwiYmxpdF90b19iaWdzdHJpbmciLCJibGl0X2Jhc2UiLCJibGl0X2Zyb20iLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2JpZ3N0cmluZyIsIm9mX2Jhc2UiLCJjb25jYXRfZ2VuIiwiY3JlYXRlX2RzdCIsImJsaXRfZHN0IiwidHMiLCJjb25jYXRfc3RyaW5nIiwiY29uY2F0X2JpZ3N0cmluZyIsInNvcnRfYW5kX2FsaWduIiwiY2hlY2tfc3VmZml4IiwiY2hvcF9leHRlbnNpb24iLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAxIiwicDIiLCJzJDEiLCJzJDIiLCJ0b19hYnNvbHV0ZV9leG4iLCJyZWxhdGl2ZV90byIsIm1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSIsImlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCIsInNwbGl0X2V4dGVuc2lvbiIsImZuIiwiZm4kMCIsImZuJDEiLCJkaXIiLCJleHQiLCJiYXNlX2ZuIiwiZXh0JDAiLCJmbiQyIiwiZGlyJDAiLCJmbiQzIiwicGFydHMiLCJmaWxlbmFtZSQwIiwiZmlsZW5hbWUkMSIsIm9mX2Fic29sdXRlX2V4biIsImFfcGFydHMiLCJiX3BhcnRzIiwiYV9zdWZmaXgiLCJiX3N1ZmZpeCIsImgyIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJmbGFnX25hbWUiLCJlcnJvcl9zb3VyY2VfMDE3IiwiZXJyb3Jfc291cmNlXzA2MiIsImVycm9yX3NvdXJjZV8wOTkiLCJlcnJvcl9zb3VyY2VfMTM2IiwiZXJyb3Jfc291cmNlXzE3MSIsImVycm9yX3NvdXJjZV8yMTgiLCJlcnJvcl9zb3VyY2VfMjY5IiwiZXJyb3Jfc291cmNlXzMxOSIsImVycm9yX3NvdXJjZV8zNTYiLCJlcnJvcl9zb3VyY2VfMzg4IiwiZXJyb3Jfc291cmNlXzQxNSIsImVycm9yX3NvdXJjZV80NDQiLCJlcnJvcl9zb3VyY2VfNDc2IiwiZXJyb3Jfc291cmNlXzUwMSIsImVycm9yX3NvdXJjZV81MjYiLCJlcnJvcl9zb3VyY2VfNTY1IiwiZXJyb3Jfc291cmNlXzYxMCIsImVudW1lcmF0ZV82MjgiLCJlbnVtZXJhdGVfNjI5IiwibWF5YmVfbWlzc2luZ19wcmVmaXgiLCJtYXliZV9taXNzaW5nX3N1ZmZpeCIsIm1heWJlX21vcmVfc3VmZml4IiwibmFtZXMkMCIsImVycm9yX3NvdXJjZV82NjkiLCJpbmRlbnRhdGlvbiIsInNwYWNpbmdfZG90IiwibmFtZXMkMSIsImVycm9yX3NvdXJjZV83MDgiLCJuYW1lcyQyIiwiZXJyb3Jfc291cmNlXzc1NyIsIm5hbWVzJDMiLCJlcnJvcl9zb3VyY2VfODA3IiwiZXJyb3Jfc291cmNlXzgzOCIsImFfMDAxJDAiLCJiXzAwMiQwIiwidGFnXzAyMCIsInNleHBfYXJnc18wNDEiLCJhcmcwXzA0MiIsInNleHBfYXJnc18wMzYiLCJyZXMwXzAzOCIsInNleHBfYXJnc18wMjYiLCJzZXhwX2FyZ3NfMDMxIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzA0NCIsInJlczBfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwidXNhZ2UiLCJ1c2FnZSQwIiwidXNhZ2UkMSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1OCIsImJfMDU5Iiwic2V4cF8wNjQiLCJ0YWdfMDY1Iiwic2V4cF9hcmdzXzA2NiIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsImFyZzBfMDc0IiwicmVzMF8wNzUiLCJhcmcwXzA3NiIsInJlczBfMDc3Iiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJhXzA3OCIsImJfMDc5IiwiYV8wODAiLCJiXzA4MSIsInNleHBfMDgzIiwiZmllbGRfc2V4cHNfMDg0IiwibmFtZV8wODUiLCJkb2NfMDg3IiwiYWxpYXNlc18wODkiLCJkdXBsaWNhdGVzXzA5MSIsImV4dHJhXzA5MiIsInNleHBfMDgzJDAiLCJmaWVsZF9zZXhwc18wOTUiLCJmaWVsZF9uYW1lXzA5MyIsInRhaWxfMTAxIiwiZmllbGRfc2V4cF8wOTQkMyIsImZpZWxkX3NleHBfMDk0IiwieF8xMDIiLCJmaWVsZF9zZXhwXzA5NCQwIiwiZnZhbHVlXzA5OCIsImZpZWxkX3NleHBfMDk0JDEiLCJmdmFsdWVfMDk3IiwiZmllbGRfc2V4cF8wOTQkMiIsImZ2YWx1ZV8wOTYiLCJhbGlhc2VzXzA5MCIsImRvY18wODgiLCJuYW1lXzA4NiIsImFsaWFzZXNfMTA4IiwiZG9jXzEwNiIsIm5hbWVfMTA0IiwiYXJnXzEwOSIsImJuZHNfMTAzIiwiYXJnXzEwNyIsImJuZHNfMTAzJDAiLCJhcmdfMTA1IiwiYm5kc18xMDMkMSIsInZfc3VtbWFyeSIsInZfcmVhZG1lIiwidl9hbm9ucyIsInZfZmxhZ3MiLCJhXzExMCIsImJfMTExIiwiYV8xMTIiLCJiXzExMyIsInNleHBfMTE3IiwiZmllbGRfc2V4cHNfMTE4Iiwic3VtbWFyeV8xMTkiLCJyZWFkbWVfMTIxIiwiYW5vbnNfMTIzIiwiZmxhZ3NfMTI1IiwiZHVwbGljYXRlc18xMjciLCJleHRyYV8xMjgiLCJzZXhwXzExNyQwIiwiZmllbGRfc2V4cHNfMTMxIiwiZmllbGRfbmFtZV8xMjkiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMwJDQiLCJmaWVsZF9zZXhwXzEzMCIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzAkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMCQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMwJDIiLCJmdmFsdWVfMTMyIiwiZmllbGRfc2V4cF8xMzAkMyIsImZ2YWx1ZV8xMzMiLCJyZWFkbWVfMTIyIiwiZmxhZ3NfMTI2IiwiYW5vbnNfMTI0Iiwic3VtbWFyeV8xMjAiLCJmbGFnc18xNDkiLCJhbm9uc18xNDciLCJyZWFkbWVfMTQzIiwic3VtbWFyeV8xNDEiLCJhcmdfMTUwIiwiYm5kc18xNDAiLCJhcmdfMTQ4IiwiYm5kc18xNDAkMCIsInZfMTQ0IiwiYXJnXzE0NiIsImJuZF8xNDUiLCJibmRzXzE0MCQxIiwiYXJnXzE0MiIsImJuZHNfMTQwJDIiLCJiaW5fc2hhcGVfYSIsInZfc3ViY29tbWFuZHMiLCJhXzE4NiIsImJfMTg3IiwiYV8xODgiLCJiXzE4OSIsImFfMTkwIiwiYl8xOTEiLCJhXzE5MiIsImJfMTkzIiwidF8xOTUiLCJ0XzE5NCIsInRfMTk3IiwidF8xOTYiLCJvZl9hXzE5OCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwic3VtbWFyeV8yMDIiLCJyZWFkbWVfMjA0Iiwic3ViY29tbWFuZHNfMjA2IiwiZHVwbGljYXRlc18yMDgiLCJleHRyYV8yMDkiLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEyIiwiZmllbGRfbmFtZV8yMTAiLCJ0YWlsXzIyMyIsImZpZWxkX3NleHBfMjExJDMiLCJmaWVsZF9zZXhwXzIxMSIsInhfMjI0IiwiZmllbGRfc2V4cF8yMTEkMCIsImZ2YWx1ZV8yMjEiLCJmaWVsZF9zZXhwXzIxMSQxIiwic2V4cF8yMTciLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImZ2YWx1ZV8yMTkiLCJmaWVsZF9zZXhwXzIxMSQyIiwiZnZhbHVlXzIyMCIsInJlYWRtZV8yMDUiLCJzdWJjb21tYW5kc18yMDciLCJzdW1tYXJ5XzIwMyIsIm9mX2FfMjI1Iiwic3ViY29tbWFuZHNfMjMzIiwicmVhZG1lXzIyOSIsInN1bW1hcnlfMjI3IiwiYm5kc18yMjYiLCJhcmcxXzIzNiIsImFyZzBfMjM1IiwicmVzMF8yMzciLCJyZXMxXzIzOCIsImFyZ18yMzQiLCJibmRzXzIyNiQwIiwidl8yMzAiLCJhcmdfMjMyIiwiYm5kXzIzMSIsImJuZHNfMjI2JDEiLCJhcmdfMjI4IiwiYm5kc18yMjYkMiIsIm9mX2FfMjQ5Iiwic2V4cF8yNTEiLCJmaWVsZF9zZXhwc18yNTIiLCJzdW1tYXJ5XzI1MyIsInJlYWRtZV8yNTUiLCJzdWJjb21tYW5kc18yNTciLCJkdXBsaWNhdGVzXzI1OSIsImV4dHJhXzI2MCIsInNleHBfMjUxJDAiLCJmaWVsZF9zZXhwc18yNjMiLCJmaWVsZF9uYW1lXzI2MSIsInRhaWxfMjc0IiwiZmllbGRfc2V4cF8yNjIkMyIsImZpZWxkX3NleHBfMjYyIiwieF8yNzUiLCJmaWVsZF9zZXhwXzI2MiQwIiwiZnZhbHVlXzI3MiIsImZpZWxkX3NleHBfMjYyJDEiLCJzZXhwXzI2OCIsImFyZzFfMjY1IiwiYXJnMF8yNjQiLCJyZXMwXzI2NiIsInJlczFfMjY3IiwiZnZhbHVlXzI3MCIsImZpZWxkX3NleHBfMjYyJDIiLCJmdmFsdWVfMjcxIiwicmVhZG1lXzI1NiIsInN1YmNvbW1hbmRzXzI1OCIsInN1bW1hcnlfMjU0Iiwib2ZfYV8yNzYiLCJzdWJjb21tYW5kc18yODQiLCJyZWFkbWVfMjgwIiwic3VtbWFyeV8yNzgiLCJibmRzXzI3NyIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInJlczFfMjg5IiwiYXJnXzI4NSIsImJuZHNfMjc3JDAiLCJ2XzI4MSIsImFyZ18yODMiLCJibmRfMjgyIiwiYm5kc18yNzckMSIsImFyZ18yNzkiLCJibmRzXzI3NyQyIiwidG9fbGF0ZXN0Iiwic3ViY29tbWFuZHMiLCJyZWFkbWUiLCJzdW1tYXJ5Iiwib2ZfbGF0ZXN0IiwiYWJzX3BhdGgiLCJ2X3dvcmtpbmdfZGlyIiwidl9wYXRoX3RvX2V4ZSIsInZfY2hpbGRfc3ViY29tbWFuZCIsImFfMjkwIiwiYl8yOTEiLCJhXzI5MiIsImJfMjkzIiwiYV8yOTQiLCJiXzI5NSIsInNleHBfMjk3IiwiZmllbGRfc2V4cHNfMjk4Iiwic3VtbWFyeV8yOTkiLCJyZWFkbWVfMzAxIiwid29ya2luZ19kaXJfMzAzIiwicGF0aF90b19leGVfMzA1IiwiY2hpbGRfc3ViY29tbWFuZF8zMDciLCJkdXBsaWNhdGVzXzMwOSIsImV4dHJhXzMxMCIsInNleHBfMjk3JDAiLCJmaWVsZF9zZXhwc18zMTMiLCJmaWVsZF9uYW1lXzMxMSIsInRhaWxfMzIxIiwiZmllbGRfc2V4cF8zMTIkNSIsImZpZWxkX3NleHBfMzEyIiwieF8zMjIiLCJmaWVsZF9zZXhwXzMxMiQwIiwiZnZhbHVlXzMxNiIsImZpZWxkX3NleHBfMzEyJDEiLCJmdmFsdWVfMzE4IiwiZmllbGRfc2V4cF8zMTIkMiIsImZ2YWx1ZV8zMTciLCJmaWVsZF9zZXhwXzMxMiQzIiwiZnZhbHVlXzMxNSIsImZpZWxkX3NleHBfMzEyJDQiLCJmdmFsdWVfMzE0IiwicmVhZG1lXzMwMiIsImNoaWxkX3N1YmNvbW1hbmRfMzA4IiwicGF0aF90b19leGVfMzA2Iiwid29ya2luZ19kaXJfMzA0Iiwic3VtbWFyeV8zMDAiLCJjaGlsZF9zdWJjb21tYW5kXzMzNCIsInBhdGhfdG9fZXhlXzMzMiIsIndvcmtpbmdfZGlyXzMzMCIsInJlYWRtZV8zMjYiLCJzdW1tYXJ5XzMyNCIsImFyZ18zMzUiLCJibmRzXzMyMyIsImFyZ18zMzMiLCJibmRzXzMyMyQwIiwiYXJnXzMzMSIsImJuZHNfMzIzJDEiLCJ2XzMyNyIsImFyZ18zMjkiLCJibmRfMzI4IiwiYm5kc18zMjMkMiIsImFyZ18zMjUiLCJibmRzXzMyMyQzIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImJpbl9zaGFwZV90JDciLCJ0b192MyIsIm9mX3YzIiwidG9fbGF0ZXN0JDEiLCJvZl9sYXRlc3QkMSIsImJpbl9zaGFwZV90JDgiLCJ0b192MiIsIm9mX3YyIiwidG9fbGF0ZXN0JDIiLCJvZl9sYXRlc3QkMiIsImJpbl9zaGFwZV90JDkiLCJhXzQwMSIsImJfNDAyIiwiYV80MDEkMCIsImJfNDAyJDAiLCJhXzQwMyIsImJfNDA0IiwiYV80MDUiLCJiXzQwNiIsImFfNDA3IiwiYl80MDgiLCJhXzQxMSIsImFfNDA5IiwiYl80MTIiLCJiXzQxMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF80MTciLCJ0YWdfNDE4Iiwic2V4cF9hcmdzXzQyNCIsImFyZzBfNDI1IiwicmVzMF80MjYiLCJzZXhwX2FyZ3NfNDI5IiwiYXJnMV80MzEiLCJhcmcwXzQzMCIsInJlczBfNDMyIiwicmVzMV80MzMiLCJzZXhwX2FyZ3NfNDE5IiwiYXJnMF80MjAiLCJyZXMwXzQyMSIsImFyZzBfNDM0IiwicmVzMF80MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3IiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJiaW5fc2hhcGVfdCQxMCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF80NDYiLCJ0YWdfNDQ3Iiwic2V4cF9hcmdzXzQ2MyIsImFyZzBfNDY0IiwicmVzMF80NjUiLCJzZXhwX2FyZ3NfNDUzIiwiYXJnMF80NTQiLCJyZXMwXzQ1NSIsInNleHBfYXJnc180NTgiLCJhcmcwXzQ1OSIsInJlczBfNDYwIiwic2V4cF9hcmdzXzQ0OCIsImFyZzBfNDQ5IiwicmVzMF80NTAiLCJzZXhwX29mX3QkNyIsImFyZzBfNDY2IiwicmVzMF80NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJiaW5fc2hhcGVfdCQxMSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF80NzgiLCJ0YWdfNDc5Iiwic2V4cF9hcmdzXzQ4NSIsImFyZzBfNDg2IiwicmVzMF80ODciLCJzZXhwX2FyZ3NfNDkwIiwiYXJnMF80OTEiLCJyZXMwXzQ5MiIsImZpZWxkX3NleHBzXzMzOCIsInN1bW1hcnlfMzM5IiwicmVhZG1lXzM0MSIsIndvcmtpbmdfZGlyXzM0MyIsInBhdGhfdG9fZXhlXzM0NSIsImR1cGxpY2F0ZXNfMzQ3IiwiZXh0cmFfMzQ4Iiwic2V4cF8zMzciLCJmaWVsZF9zZXhwc18zNTEiLCJmaWVsZF9uYW1lXzM0OSIsInRhaWxfMzU4IiwiZmllbGRfc2V4cF8zNTAkNCIsImZpZWxkX3NleHBfMzUwIiwieF8zNTkiLCJmaWVsZF9zZXhwXzM1MCQwIiwiZnZhbHVlXzM1MyIsImZpZWxkX3NleHBfMzUwJDEiLCJmdmFsdWVfMzU1IiwiZmllbGRfc2V4cF8zNTAkMiIsImZ2YWx1ZV8zNTQiLCJmaWVsZF9zZXhwXzM1MCQzIiwiZnZhbHVlXzM1MiIsInJlYWRtZV8zNDIiLCJwYXRoX3RvX2V4ZV8zNDYiLCJ3b3JraW5nX2Rpcl8zNDQiLCJzdW1tYXJ5XzM0MCIsInNleHBfYXJnc180ODAiLCJhcmcwXzQ4MSIsInJlczBfNDgyIiwic2V4cF9vZl90JDgiLCJhcmcwXzQ5MyIsInJlczBfNDk0IiwiYXJnMF80OTUiLCJyZXMwXzQ5NiIsImFyZzBfNDk3IiwicGF0aF90b19leGVfMzY5Iiwid29ya2luZ19kaXJfMzY3IiwicmVhZG1lXzM2MyIsInN1bW1hcnlfMzYxIiwiYXJnXzM3MCIsImJuZHNfMzYwIiwiYXJnXzM2OCIsImJuZHNfMzYwJDAiLCJ2XzM2NCIsImFyZ18zNjYiLCJibmRfMzY1IiwiYm5kc18zNjAkMSIsImFyZ18zNjIiLCJibmRzXzM2MCQyIiwicmVzMF80OTgiLCJ0b19sYXRlc3QkMyIsImciLCJvZl9sYXRlc3QkMyIsInRodW5rIiwiYmluX3NoYXBlX3QkMTIiLCJ0X29mX3NleHAkMTAiLCJzZXhwXzUwMyIsInRhZ181MDQiLCJzZXhwX2FyZ3NfNTEwIiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsInNleHBfYXJnc181MTUiLCJhcmcwXzUxNiIsInJlczBfNTE3IiwiZmllbGRfc2V4cHNfMzczIiwic3VtbWFyeV8zNzQiLCJyZWFkbWVfMzc2IiwicGF0aF90b19leGVfMzc4IiwiZHVwbGljYXRlc18zODAiLCJleHRyYV8zODEiLCJzZXhwXzM3MiIsImZpZWxkX3NleHBzXzM4NCIsImZpZWxkX25hbWVfMzgyIiwidGFpbF8zOTAiLCJmaWVsZF9zZXhwXzM4MyQzIiwiZmllbGRfc2V4cF8zODMiLCJ4XzM5MSIsImZpZWxkX3NleHBfMzgzJDAiLCJmdmFsdWVfMzg3IiwiZmllbGRfc2V4cF8zODMkMSIsImZ2YWx1ZV8zODYiLCJmaWVsZF9zZXhwXzM4MyQyIiwiZnZhbHVlXzM4NSIsInJlYWRtZV8zNzciLCJwYXRoX3RvX2V4ZV8zNzkiLCJzdW1tYXJ5XzM3NSIsInNleHBfYXJnc181MDUiLCJhcmcwXzUwNiIsInJlczBfNTA3IiwiZmllbGRfc2V4cHNfMTUzIiwic3VtbWFyeV8xNTQiLCJyZWFkbWVfMTU2IiwidXNhZ2VfMTU4IiwiZmxhZ3NfMTYwIiwiZHVwbGljYXRlc18xNjIiLCJleHRyYV8xNjMiLCJzZXhwXzE1MiIsImZpZWxkX3NleHBzXzE2NiIsImZpZWxkX25hbWVfMTY0IiwidGFpbF8xNzMiLCJmaWVsZF9zZXhwXzE2NSQ0IiwiZmllbGRfc2V4cF8xNjUiLCJmaWVsZF9zZXhwXzE2NSQwIiwiZnZhbHVlXzE2OCIsImZpZWxkX3NleHBfMTY1JDEiLCJmdmFsdWVfMTcwIiwiZmllbGRfc2V4cF8xNjUkMiIsImZ2YWx1ZV8xNjkiLCJmaWVsZF9zZXhwXzE2NSQzIiwiZnZhbHVlXzE2NyIsInJlYWRtZV8xNTciLCJmbGFnc18xNjEiLCJ1c2FnZV8xNTkiLCJzdW1tYXJ5XzE1NSIsInNleHBfb2ZfdCQ5IiwiYXJnMF81MTgiLCJmbGFnc18xODQiLCJ1c2FnZV8xODIiLCJyZWFkbWVfMTc4Iiwic3VtbWFyeV8xNzYiLCJhcmdfMTg1IiwiYm5kc18xNzUiLCJhcmdfMTgzIiwiYm5kc18xNzUkMCIsInZfMTc5IiwiYXJnXzE4MSIsImJuZF8xODAiLCJibmRzXzE3NSQxIiwiYXJnXzE3NyIsImJuZHNfMTc1JDIiLCJyZXMwXzUxOSIsImFyZzBfNTIwIiwicmVzMF81MjEiLCJhcmcwXzUyMiIsInBhdGhfdG9fZXhlXzM5OSIsInJlYWRtZV8zOTUiLCJzdW1tYXJ5XzM5MyIsImFyZ180MDAiLCJibmRzXzM5MiIsInZfMzk2IiwiYXJnXzM5OCIsImJuZF8zOTciLCJibmRzXzM5MiQwIiwiYXJnXzM5NCIsImJuZHNfMzkyJDEiLCJyZXMwXzUyMyIsInRvX2xhdGVzdCQ0IiwiZmxhZ3MiLCJvZl9sYXRlc3QkNCIsImFub25zIiwiYmluX3NoYXBlX3QkMTMiLCJ0X29mX3NleHAkMTEiLCJzZXhwXzUyOCIsInRhZ181MjkiLCJzZXhwX2FyZ3NfNTQwIiwiYXJnMF81NDEiLCJyZXMwXzU0MiIsInNleHBfYXJnc181MzUiLCJhcmcwXzUzNiIsInJlczBfNTM3Iiwic2V4cF9hcmdzXzUzMCIsImFyZzBfNTMxIiwicmVzMF81MzIiLCJzZXhwX29mX3QkMTAiLCJhcmcwXzU0MyIsInJlczBfNTQ0IiwiYXJnMF81NDUiLCJyZXMwXzU0NiIsImFyZzBfNTQ3IiwicmVzMF81NDgiLCJvZl92ZXJzaW9uZWQiLCJncm91cCQxNSIsImJpbl9zaGFwZV90JDE0IiwiY29tcGFyZSQ2IiwiYV81NDkiLCJiXzU1MCIsImFfNTQ5JDAiLCJiXzU1MCQwIiwiYV81NTEiLCJiXzU1MiIsImFfNTUzIiwiYl81NTQiLCJhXzU1NSIsImJfNTU2IiwiYV81NTciLCJiXzU1OCIsImFfNTU5IiwiYl81NjAiLCJhXzU2MSIsImJfNTYyIiwidF9vZl9zZXhwJDEyIiwic2V4cF81NjciLCJ0YWdfNTY4Iiwic2V4cF9hcmdzXzU4OSIsImFyZzBfNTkwIiwicmVzMF81OTEiLCJzZXhwX2FyZ3NfNTg0IiwiYXJnMF81ODUiLCJyZXMwXzU4NiIsInNleHBfYXJnc181NzQiLCJhcmcwXzU3NSIsInJlczBfNTc2Iiwic2V4cF9hcmdzXzU3OSIsImFyZzBfNTgwIiwicmVzMF81ODEiLCJzZXhwX2FyZ3NfNTY5IiwiYXJnMF81NzAiLCJyZXMwXzU3MSIsInNleHBfb2ZfdCQxMSIsImFyZzBfNTkyIiwicmVzMF81OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1IiwiYXJnMF81OTYiLCJyZXMwXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJhcmcwXzYwMCIsInJlczBfNjAxIiwiZ3JvdXAkMTYiLCJiaW5fc2hhcGVfdCQxNSIsImNvbXBhcmUkNyIsImFfNjAyIiwiYl82MDMiLCJhXzYwNCIsImJfNjA1IiwiYV82MDYiLCJiXzYwNyIsInNleHBfb2ZfdCQxMiIsImFyZzBfNjIyIiwicmVzMF82MjMiLCJhcmcwXzYyNCIsInJlczBfNjI1IiwiY29tcGFyZSQ4IiwiYV82MjYiLCJiXzYyNyIsImVudW1lcmF0ZV82MzIiLCJlbnVtZXJhdGVfNjMzIiwiZW51bWVyYXRlXzYzMSIsImVudW1lcmF0ZV82MzQiLCJlbnVtZXJhdGVfNjMwIiwiZW51bWVyYXRlXzYzNCQwIiwiYXRfbW9zdF9vbmNlIiwiYXRfbGVhc3Rfb25jZSIsImF0X21vc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZV9mdW4iLCJhdF9tb3N0X29uY2VfZnVuIiwiYXRfbGVhc3Rfb25jZV9nZW4iLCJhdF9tb3N0X29uY2VfZ2VuIiwic2V4cF9vZl90JDEzIiwiYXRfbW9zdF9vbmNlXzYzOCIsImF0X2xlYXN0X29uY2VfNjM2IiwiYXJnXzYzOSIsImJuZHNfNjM1IiwiYXJnXzYzNyIsImJuZHNfNjM1JDAiLCJ0b19oZWxwX3N0cmluZyIsImRlc2NyaXB0aW9uIiwib2ZfaGVscF9zdHJpbmciLCJ4XzY0MCIsImZsYWdfbmFtZSQwIiwieF82NDEiLCJncm91cCQxNyIsImJpbl9zaGFwZV90JDE2IiwiYmluX3NpemVfdCQ3IiwiYmluX3dyaXRlX3QkNyIsImJpbl93cml0ZXJfdCQ2IiwiYmluX3JlYWRfdCQxNCIsImJpbl9yZWFkX3QkMTUiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl90JDYiLCJjb21wYXJlJDkiLCJhXzY0OCIsImJfNjQ5IiwiYV82NTAiLCJiXzY1MSIsImFsaWFzZXMiLCJkb2MiLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJhbGlhc2VzX2dlbiIsIm1hcF9wb2x5JDAiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxMyIsInNleHBfNjUzIiwiZmllbGRfc2V4cHNfNjU0IiwibmFtZV82NTUiLCJkb2NfNjU3IiwiYWxpYXNlc182NTkiLCJkdXBsaWNhdGVzXzY2MSIsImV4dHJhXzY2MiIsInNleHBfNjUzJDAiLCJmaWVsZF9zZXhwc182NjUiLCJmaWVsZF9uYW1lXzY2MyIsInRhaWxfNjcxIiwiZmllbGRfc2V4cF82NjQkMyIsImZpZWxkX3NleHBfNjY0IiwieF82NzIiLCJmaWVsZF9zZXhwXzY2NCQwIiwiZnZhbHVlXzY2OCIsImZpZWxkX3NleHBfNjY0JDEiLCJmdmFsdWVfNjY3IiwiZmllbGRfc2V4cF82NjQkMiIsImZ2YWx1ZV82NjYiLCJhbGlhc2VzXzY2MCIsImRvY182NTgiLCJuYW1lXzY1NiIsInNleHBfb2ZfdCQxNCIsImFsaWFzZXNfNjc4IiwiZG9jXzY3NiIsIm5hbWVfNjc0IiwiYXJnXzY3OSIsImJuZHNfNjczIiwiYXJnXzY3NyIsImJuZHNfNjczJDAiLCJhcmdfNjc1IiwiYm5kc182NzMkMSIsInBhcnNlX25hbWUiLCJudW1fb2NjdXJyZW5jZXMiLCJyZXF1aXJlc19hcmciLCJoZWxwX3NjcmVlbl9jb21wYXJlIiwid29yZF93cmFwX2FuZF9zdHJpcCIsIndpZHRoIiwiY2h1bmtzIiwid29yZCIsIndvcmRzIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4Iiwic2xhY2siLCJpbmRlbnRfYW5kX25ld2xpbmUiLCJsaHNfcGFkIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImZsYWciLCJmbGFnX25hbWVfd2l0aF9hbGlhc2VzIiwiZG9jdW1lbnRhdGlvbiIsImZsYWdfd2lkdGgiLCJmbGFnX29uX2l0c19vd25fbGluZSIsIndyYXBwZWRfZG9jdW1lbnRhdGlvbiIsImRvY193cmFwcGVkX3Jlc3RfbGluZXMiLCJkb2Nfd3JhcHBlZF9maXJzdF9saW5lIiwid3JhcHBlZF9kb2NfbGluZXMiLCJwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV8iLCJsb29rdXBfZXhwYW5kIiwia2V5X3R5cGUiLCJpc19kYXNoIiwiYWxpc3QkMCIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzY4MCIsIm1hdGNoaW5nX2tleXMiLCJjdXN0b21fcHJpbnRmXzY4MSIsImdyb3VwJDE4IiwiYmluX3NoYXBlX3QkMTciLCJiaW5fc2l6ZV90JDgiLCJiaW5fd3JpdGVfdCQ4IiwiYmluX3dyaXRlcl90JDciLCJiaW5fcmVhZF90JDE2IiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsImNvbXBhcmUkMTAiLCJhXzY4MiIsImJfNjgzIiwiYV82ODQiLCJiXzY4NSIsImFfNjg2IiwiYl82ODciLCJmbGFncyQwIiwiYW5vbnMkMCIsInJlYWRtZSQwIiwic3VtbWFyeSQwIiwibWFrZV9jcmVhdG9yJDEiLCJzdW1tYXJ5X2Z1biIsInJlYWRtZV9mdW4iLCJhbm9uc19mdW4iLCJmbGFnc19mdW4iLCJzdW1tYXJ5X2dlbiIsInJlYWRtZV9nZW4iLCJhbm9uc19nZW4iLCJmbGFnc19nZW4iLCJtYXAkNSIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDYiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJ0X29mX3NleHAkMTQiLCJzZXhwXzY4OSIsImZpZWxkX3NleHBzXzY5MCIsInN1bW1hcnlfNjkxIiwicmVhZG1lXzY5MyIsImFub25zXzY5NSIsImZsYWdzXzY5NyIsImR1cGxpY2F0ZXNfNjk5IiwiZXh0cmFfNzAwIiwic2V4cF82ODkkMCIsImZpZWxkX3NleHBzXzcwMyIsImZpZWxkX25hbWVfNzAxIiwidGFpbF83MTAiLCJmaWVsZF9zZXhwXzcwMiQ0IiwiZmllbGRfc2V4cF83MDIiLCJ4XzcxMSIsImZpZWxkX3NleHBfNzAyJDAiLCJmdmFsdWVfNzA3IiwiZmllbGRfc2V4cF83MDIkMSIsImZ2YWx1ZV83MDYiLCJmaWVsZF9zZXhwXzcwMiQyIiwiZnZhbHVlXzcwNCIsImZpZWxkX3NleHBfNzAyJDMiLCJmdmFsdWVfNzA1IiwidGFnXzYxMyIsInNleHBfYXJnc182MTQiLCJhcmcwXzYxNSIsInJlczBfNjE2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJyZWFkbWVfNjk0IiwiZmxhZ3NfNjk4IiwiYW5vbnNfNjk2Iiwic3VtbWFyeV82OTIiLCJzZXhwX29mX3QkMTUiLCJmbGFnc183MjEiLCJhbm9uc183MTkiLCJyZWFkbWVfNzE1Iiwic3VtbWFyeV83MTMiLCJhcmdfNzIyIiwiYm5kc183MTIiLCJhcmdfNzIwIiwiYm5kc183MTIkMCIsInZfNzE2IiwiYXJnXzcxOCIsImJuZF83MTciLCJibmRzXzcxMiQxIiwiYXJnXzcxNCIsImJuZHNfNzEyJDIiLCJmaW5kX2ZsYWciLCJjaG9pY2VzIiwiZmxhZ19pbmZvIiwiZ2V0X3VzYWdlIiwiZ3JvdXAkMTkiLCJiaW5fc2hhcGVfdCQxOCIsImJpbl9zaXplX3QkOSIsImJpbl93cml0ZV90JDkiLCJiaW5fd3JpdGVyX3QkOCIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZF90JDE5IiwiYmluX3JlYWRlcl90JDgiLCJiaW5fdCQ4IiwiY29tcGFyZSQxMSIsImFfNzI1IiwiYl83MjYiLCJhXzcyNyIsImJfNzI4IiwiYV83MjkiLCJiXzczMCIsImFfNzMxIiwiYl83MzIiLCJ0XzczNCIsInRfNzMzIiwidF83MzYiLCJ0XzczNSIsInJlYWRtZSQxIiwic3VtbWFyeSQxIiwic3ViY29tbWFuZHMkMCIsInJlYWRtZSQyIiwic3VtbWFyeSQyIiwibWFrZV9jcmVhdG9yJDIiLCJzdWJjb21tYW5kc19mdW4iLCJzdWJjb21tYW5kc19nZW4iLCJjcmVhdGUkMiIsIm1hcCQ3IiwiaXRlciQ1IiwiZm9sZCQ1IiwibWFwX3BvbHkkMiIsImZvcl9hbGwkNSIsImV4aXN0cyQ1IiwidG9fbGlzdCQ1IiwiaXRlciQ2IiwiZm9sZCQ2IiwiZm9yX2FsbCQ2IiwiZXhpc3RzJDYiLCJ0b19saXN0JDYiLCJtYXAkOCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMiIsInRfb2Zfc2V4cCQxNSIsIm9mX2FfNzM3Iiwic2V4cF83MzkiLCJmaWVsZF9zZXhwc183NDAiLCJzdW1tYXJ5Xzc0MSIsInJlYWRtZV83NDMiLCJzdWJjb21tYW5kc183NDUiLCJkdXBsaWNhdGVzXzc0NyIsImV4dHJhXzc0OCIsInNleHBfNzM5JDAiLCJmaWVsZF9zZXhwc183NTEiLCJmaWVsZF9uYW1lXzc0OSIsInRhaWxfNzYyIiwiZmllbGRfc2V4cF83NTAkMyIsImZpZWxkX3NleHBfNzUwIiwieF83NjMiLCJmaWVsZF9zZXhwXzc1MCQwIiwiZnZhbHVlXzc2MCIsImZpZWxkX3NleHBfNzUwJDEiLCJzZXhwXzc1NiIsImFyZzFfNzUzIiwiYXJnMF83NTIiLCJyZXMwXzc1NCIsInJlczFfNzU1IiwiZnZhbHVlXzc1OCIsImZpZWxkX3NleHBfNzUwJDIiLCJmdmFsdWVfNzU5IiwicmVhZG1lXzc0NCIsInN1YmNvbW1hbmRzXzc0NiIsInN1bW1hcnlfNzQyIiwic2V4cF9vZl90JDE2Iiwib2ZfYV83NjQiLCJzdWJjb21tYW5kc183NzIiLCJyZWFkbWVfNzY4Iiwic3VtbWFyeV83NjYiLCJibmRzXzc2NSIsImFyZzFfNzc1IiwiYXJnMF83NzQiLCJyZXMwXzc3NiIsInJlczFfNzc3IiwiYXJnXzc3MyIsImJuZHNfNzY1JDAiLCJ2Xzc2OSIsImFyZ183NzEiLCJibmRfNzcwIiwiYm5kc183NjUkMSIsImFyZ183NjciLCJibmRzXzc2NSQyIiwiZmluZF9zdWJjb21tYW5kIiwiZ3JvdXAkMjAiLCJiaW5fc2hhcGVfdCQxOSIsImJpbl9zaXplX3QkMTAiLCJiaW5fd3JpdGVfdCQxMCIsImJpbl93cml0ZXJfdCQ5IiwiYmluX3JlYWRfdCQyMCIsImJpbl9yZWFkX3QkMjEiLCJiaW5fcmVhZGVyX3QkOSIsImJpbl90JDkiLCJjb21wYXJlJDEyIiwiYV83NzgiLCJiXzc3OSIsImFfNzgwIiwiYl83ODEiLCJhXzc4MiIsImJfNzgzIiwiY2hpbGRfc3ViY29tbWFuZCIsInBhdGhfdG9fZXhlIiwid29ya2luZ19kaXIiLCJyZWFkbWUkMyIsInN1bW1hcnkkMyIsImNoaWxkX3N1YmNvbW1hbmQkMCIsInBhdGhfdG9fZXhlJDAiLCJ3b3JraW5nX2RpciQwIiwicmVhZG1lJDQiLCJzdW1tYXJ5JDQiLCJtYWtlX2NyZWF0b3IkMyIsIndvcmtpbmdfZGlyX2Z1biIsInBhdGhfdG9fZXhlX2Z1biIsImNoaWxkX3N1YmNvbW1hbmRfZnVuIiwid29ya2luZ19kaXJfZ2VuIiwicGF0aF90b19leGVfZ2VuIiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMTYiLCJzZXhwXzc4NSIsImZpZWxkX3NleHBzXzc4NiIsInN1bW1hcnlfNzg3IiwicmVhZG1lXzc4OSIsIndvcmtpbmdfZGlyXzc5MSIsInBhdGhfdG9fZXhlXzc5MyIsImNoaWxkX3N1YmNvbW1hbmRfNzk1IiwiZHVwbGljYXRlc183OTciLCJleHRyYV83OTgiLCJzZXhwXzc4NSQwIiwiZmllbGRfc2V4cHNfODAxIiwiZmllbGRfbmFtZV83OTkiLCJ0YWlsXzgwOSIsImZpZWxkX3NleHBfODAwJDUiLCJmaWVsZF9zZXhwXzgwMCIsInhfODEwIiwiZmllbGRfc2V4cF84MDAkMCIsImZ2YWx1ZV84MDQiLCJmaWVsZF9zZXhwXzgwMCQxIiwiZnZhbHVlXzgwNiIsImZpZWxkX3NleHBfODAwJDIiLCJmdmFsdWVfODA1IiwiZmllbGRfc2V4cF84MDAkMyIsImZ2YWx1ZV84MDMiLCJmaWVsZF9zZXhwXzgwMCQ0IiwiZnZhbHVlXzgwMiIsInJlYWRtZV83OTAiLCJjaGlsZF9zdWJjb21tYW5kXzc5NiIsInBhdGhfdG9fZXhlXzc5NCIsIndvcmtpbmdfZGlyXzc5MiIsInN1bW1hcnlfNzg4Iiwic2V4cF9vZl90JDE3IiwiY2hpbGRfc3ViY29tbWFuZF84MjIiLCJwYXRoX3RvX2V4ZV84MjAiLCJ3b3JraW5nX2Rpcl84MTgiLCJyZWFkbWVfODE0Iiwic3VtbWFyeV84MTIiLCJhcmdfODIzIiwiYm5kc184MTEiLCJhcmdfODIxIiwiYm5kc184MTEkMCIsImFyZ184MTkiLCJibmRzXzgxMSQxIiwidl84MTUiLCJhcmdfODE3IiwiYm5kXzgxNiIsImJuZHNfODExJDIiLCJhcmdfODEzIiwiYm5kc184MTEkMyIsImdyb3VwJDIxIiwiYmluX3NoYXBlX3QkMjAiLCJiaW5fc2l6ZV90JDExIiwiYmluX3dyaXRlX3QkMTEiLCJiaW5fd3JpdGVyX3QkMTAiLCJiaW5fcmVhZF90JDIyIiwiYmluX3JlYWRfdCQyMyIsImJpbl9yZWFkZXJfdCQxMCIsImJpbl90JDEwIiwiY29tcGFyZSQxMyIsImFfODI0IiwiYl84MjUiLCJhXzgyNCQwIiwiYl84MjUkMCIsImFfODI2IiwiYl84MjciLCJhXzgyOCIsImJfODI5IiwiYV84MzAiLCJiXzgzMSIsImFfODM0IiwiYV84MzIiLCJiXzgzNSIsImJfODMzIiwidF9vZl9zZXhwJDE3Iiwic2V4cF84NDAiLCJ0YWdfODQxIiwic2V4cF9hcmdzXzg0NyIsImFyZzBfODQ4IiwicmVzMF84NDkiLCJzZXhwX2FyZ3NfODUyIiwiYXJnMV84NTQiLCJhcmcwXzg1MyIsInJlczBfODU1IiwicmVzMV84NTYiLCJzZXhwX2FyZ3NfODQyIiwiYXJnMF84NDMiLCJyZXMwXzg0NCIsInNleHBfb2ZfdCQxOCIsImFyZzBfODU3IiwicmVzMF84NTgiLCJhcmcwXzg1OSIsInJlczBfODYwIiwiYXJnMV84NjIiLCJhcmcwXzg2MSIsInJlczBfODYzIiwicmVzMV84NjQiLCJleHBhbmRlZF9zdWJjb21tYW5kcyIsImV4cGFuZCIsInNleHBfb2ZfdCQxOSIsImFyZzBfODY1IiwicmVzMF84NjYiLCJhcmcwXzg2NyIsInJlczBfODY4IiwiYXJnMF84NjkiLCJyZXMwXzg3MCIsImFyZzBfODcxIiwicmVzMF84NzIiLCJleHRyYWN0aW9uX3ZhciIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJleHBlY3QiLCJleHBlY3QkMCIsImVycm9yX3NvdXJjZV8wMDciLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMxXzAxMSIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwibl9mcm9udCIsIm5fYmFjayIsImZyb250IiwiYmFjayIsInJldl9iYWNrIiwiZnJvbnQkMCIsInJldl9mcm9udCIsImJhY2skMCIsInJhaXNlX2Zyb250X2ludmFyaWFudCIsInJhaXNlX2JhY2tfaW52YXJpYW50IiwicGVla19mcm9udF9leG4iLCJwZWVrX2JhY2tfZXhuIiwiZHJvcF9mcm9udF9leG4iLCJkcm9wX2JhY2tfZXhuIiwib3B0aW9uYWwiLCJwZWVrX2Zyb250IiwicGVla19iYWNrIiwicGVlayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJidWlsZCIsIm9mX2Zvcm1hdCIsInRvX2Zvcm1hdCIsInNldF9hdCIsInNldF9pbnRlcm5hbCIsInNldF9pZl9ub25lIiwic2V0X2V4biIsImdldF9leG4iLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsImRpZSIsImtleV9jcmVhdGUiLCJtdWx0aV9hZGQiLCJzZXRfd2l0aF9kZWZhdWx0IiwicnVuX2FuZF9leGl0IiwiZW52IiwicGFydCIsImNvbXBsZXRpb25zIiwiZXh0cmFfZG9jIiwiY29tcGxldGUiLCJvZl9sYXp5IiwiZXh0cmFfZG9jJDAiLCJob3N0X2FuZF9wb3J0Iiwic2V4cF9jb252IiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJkdXBsaWNhdGVfa2V5cyIsIlMiLCJ1bml2X21hcCIsInZhbGlkX2FyZ3VtZW50c19leHRyYSIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImNvbW1hX3NlcGFyYXRlZCIsImFsbG93X2VtcHR5Iiwic3RyaXBfd2hpdGVzcGFjZSIsInVuaXF1ZV92YWx1ZXMiLCJjb21wbGV0ZV9lbHQiLCJoZCIsInByZWZpeGVzIiwic2Vlbl9hbHJlYWR5IiwiaXNfYWxsb3dlZCIsImNob2ljZSIsImNob2ljZXMkMCIsInN0cmluZyQwIiwicGFyc2UkMCIsImVudW1lcmF0ZV8wMTIiLCJlbnVtZXJhdGVfMDEzIiwiZW51bWVyYXRlXzAxMSIsImVudW1lcmF0ZV8wMTQiLCJlbnVtZXJhdGVfMDEwIiwiZW51bWVyYXRlXzAxNCQwIiwicGFyc2UkMSIsImFjdGlvbiIsImFyZ19kb2MiLCJkb2MkMSIsImFyZ19kb2MkMCIsIndyYXBfaWZfb3B0aW9uYWwiLCJoZWxwIiwiYWxpZ24iLCJhcmdfZmxhZyIsImFyZ190eXBlIiwid3JpdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJ3cml0ZV9vcHRpb24iLCJyZXF1aXJlZF92YWx1ZSIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsIm5vX2FyZ19nZW5lcmFsIiwia2V5X3ZhbHVlIiwiZGVwcmVjYXRlZF9ob29rIiwiYWN0aW9uJDAiLCJub19hcmciLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmdfc29tZSIsImxpc3RlZCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIiLCJxIiwib25lX29yX21vcmVfYXNfbGlzdCIsImVzY2FwZV9nZW5lcmFsIiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsInN1YmNvbW1hbmQiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJyZXBsYWNlX2ZpcnN0IiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsImNvbmNhdCQwIiwiY2RyIiwiY2FyIiwiY2RyJDAiLCJjYXIkMCIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInBhcnNlX21vcmUiLCJmb3JfY29tcGxldGlvbiIsInVwZGF0ZV9lbnYiLCJwYXJzZXIiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibW9yZSQwIiwidGVzdCQwIiwiYW5vbiIsImxvb3AiLCJjb25zdW1lIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsInQzIiwiYTMiLCJ0NCIsImE0Iiwic3RybGVuIiwic3BlY2lhbF9jaGFycyIsImhhc19zcGVjaWFsX2NoYXJzIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI3IiwiYl8wMjgiLCJhXzAzMSIsImJfMDMyIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiY3VzdG9tX3ByaW50Zl8wMzMiLCJjdXN0b21fcHJpbnRmXzAzNCIsInN1YmNvbW1hbmRfY21wX2ZzdCIsInNoYXBlIiwicGF0aF9rZXkiLCJhcmdzX2tleSIsImhlbHBfa2V5IiwiYXBwIiwicGYiLCJweCIsIm1mIiwibXgiLCJyZXR1cm4kMSIsIndyYXAiLCJtYWluIiwib2ZfcGFyYW0iLCJ0b19wYXJhbSIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiYm9vbCQwIiwicGVyY2VudCQwIiwiaG9zdF9hbmRfcG9ydCQwIiwic2V4cF9jb252JDAiLCJzcGVjIiwiZXNjYXBlX2Fub24iLCJmaW5hbF9hbm9uIiwiZnVsbF9mbGFnX3JlcXVpcmVkIiwiYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAiLCJjaGVja19hdmFpbGFibGUiLCJuYW1lX21hdGNoaW5nIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJib3RoIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0X2Jvb2wiLCJwYXNzZWQiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJmJDMiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1IiwiYXJnX25hbWVzIiwicGFyYW0iLCJmbGFnX25hbWVzIiwiYW5vbl9uYW1lcyIsIm5hbWVzX3dpdGhfY29tbWFzIiwidG9fc3RyaW5nJDEiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmUiLCJpZl9ub3RoaW5nX2Nob3NlbiIsInRzJDAiLCJjdXN0b21fcHJpbnRmXzA0MiIsImN1c3RvbV9wcmludGZfMDQzIiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInNoYXBlJDAiLCJzdWJjb21tYW5kX3RvX3NoYXBlIiwiY29tcF9jd29yZCIsInNoYXBlJDEiLCJzZXhwYWJsZV9zaGFwZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljX3NwZWMiLCJmbGFncyQxIiwiYmFzZSQwIiwic3Vic19rZXkiLCJsYXp5X2dyb3VwIiwicHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciIsImJvZHkiLCJwJDAiLCJwJDEiLCJwJDIiLCJvZl9sYXp5JDAiLCJwcm94eV9vZl9zZXhwYWJsZSIsInNleHBhYmxlIiwicGF0aF90b19zdWJjb21tYW5kIiwia2luZCIsImtpbmRfb2Zfc2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMCIsInByb3h5IiwicHJpbnRfdmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsInVudmVyc2lvbmVkIiwiYmFzZSQxIiwibm9ybWFsaXplX3ZlcnNpb25fbGluZXMiLCJkZWZhdWx0X3ZlcnNpb24iLCJkZWZhdWx0X2J1aWxkX2luZm8iLCJyZXByaW50X2J1aWxkX2luZm8iLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsInN0cmluZyQxIiwiaW50JDIiLCJjaGFyJDIiLCJmbG9hdCQyIiwiYm9vbCQxIiwicGVyY2VudCQxIiwiaG9zdF9hbmRfcG9ydCQxIiwic2V4cCQxIiwic2V4cF9jb252JDEiLCJiYXNpYyIsInBhcmFtcyIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsInNoYXBlJDIiLCJnZXRwaWQiLCJjbG9zZSIsImluX2NoYW5uZWxfb2ZfZGVzY3IiLCJ3YWl0IiwiZ2V0ZW52X2FuZF9jbGVhciIsInZhciQwIiwiaGVscF9zZXhwIiwicHJvZyIsImFyZ3YwIiwicHJvZ19zZWFyY2hfcGF0aCIsImNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0ciIsImVudl92YXIiLCJsaXN0JDEiLCJwcm9jZXNzX2luZm8iLCJzdGFydF9yZWFkaW5nIiwiZGVzY3IiLCJpbmZvIiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsInNoYXBlX29mX3Byb3h5Iiwic2hhcGVfb2ZfcHJveHlfa2luZCIsInNoYXBlX29mX2V4ZSIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwYXRoJDEiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsImVudiQxIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQiLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwid2hlbl9wYXJzaW5nX3N1Y2NlZWRzIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0IiwicGFyc2VyJDEiLCJjbWRsaW5lJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwiYWxpYXMiLCJmbGFnJDAiLCJmbGFnJDEiLCJjb21wbGV0aW5nIiwiY21kbGluZSQyIiwiZW52JDIiLCJwYXJzZV9mbGFnczIiLCJlbnYkMyIsInBhcnNlX2ZsYWdzJDAiLCJwYXJ0JDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJleG5fc3RyIiwidmVyYm9zZSIsImVycm9yX21zZyIsImRpZV9zaG93aW5nX2hlbHAiLCJwYXJzZV9ncm91cCIsIm1heWJlX25ld19jb21wX2N3b3JkJDAiLCJyZXNvbHZlIiwic3VicyQwIiwic3ViJDAiLCJib2R5JDAiLCJ0b19vdXRwdXQiLCJyZXN0X29mX3Jlc3QiLCJmaXJzdF9vZl9yZXN0IiwibmV3X3ZhbHVlJDAiLCJuZXdfdmFsdWUiLCJ0aHVuayQwIiwiYXJndiIsImJ1aWxkX2luZm8kMCIsInZlcnNpb24kMCIsInN1cHBvcnRlZF92ZXJzaW9ucyQwIiwicGF0aF90b19zdWJjb21tYW5kJDEiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMiIsImZuYW1lIiwiYXJndl8wIiwiY29tcF9jd29yZCQwIiwiZGVwcmVjYXRlZF9ydW4iLCJpc19oZWxwIiwiaXNfaGVscF9yZWMiLCJpc19oZWxwX3JlY19mbGFncyIsImlzX2V4cGFuZF9kb3RzIiwicGF0aF9zdHJpbmdzIiwiYXJncyQyIiwiYXJncyQzIiwiYXJncyQ0IiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsInR5cGVuYW1lX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJ0X3NleHBfZ3JhbW1hciQyIiwidHlwZW5hbWVfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJjaGVjayQyIiwidG9fc3RyaW5nJDIiLCJwcCQyIiwib2Zfc3RyaW5nJDIiLCJhcmdfdHlwZSQwIiwic2V4cF9hc19zdHJpbmciLCJ2XzAwMSIsInNlcmlhbGl6ZWRfc2V4cCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJ2XzAxMiIsInZfMDEzIiwicmVzMV8wMTciLCJleHBlY3RlZF9iaW5faW8iLCJiaW5hYmxlX20iLCJzZXJpYWxpemVkX2Jpbl9pbyIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJyZXMxXzAyNCIsInZfMDE5IiwicmVzMl8wMjUiLCJhcmcxXzAyOSIsImFyZzBfMDI4Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJyZXZfc2tpcHBlZCIsInN0cmluZ3MkMCIsImNvbnRpbnVlJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwidl8wNDQiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNDgiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwicGVybXV0YXRhdGlvbnMiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsImJsYW5nIiwiY21wX2EkMCIsImNtcF9hJDUiLCJjbXBfYSQxIiwiYV8wMTUiLCJiXzAxNiIsImNtcF9hJDYiLCJhXzAxNyIsImJfMDE4IiwiY21wX2EkMiIsImFfMDE5IiwiYl8wMjAiLCJjbXBfYSQ3IiwiY21wX2EkMyIsImFfMDIzIiwiYl8wMjQiLCJjbXBfYSQ4IiwiYV8wMzMiLCJiXzAzNCIsImNtcF9hJDQiLCJhXzAzNyQwIiwiYl8wMzgkMCIsImFfMDQxIiwiYV8wMzkiLCJiXzA0MiIsImJfMDQwIiwiYV8wNDMiLCJiXzA0NCIsImFfMDQ1IiwiYl8wNDYiLCJhXzA0OSIsImFfMDQ3IiwiYl8wNTAiLCJiXzA0OCIsImFfMDUzIiwiYl8wNTQiLCJhXzA2MyIsImJfMDY0IiwiYV8wNjUiLCJiXzA2NiIsImFfMDY3IiwiYl8wNjgiLCJhXzA2OSIsImJfMDcwIiwiYV8wNzEiLCJiXzA3MiIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidjAkMSIsInYwJDIiLCJ2MCQzIiwic3VidGVybXMiLCJ0MSQxIiwiY29udGFpbnNfbm9fY29uc3RhbnRzIiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5vdCIsImFuZGFsc28iLCJvdGhlciIsInQxYiIsInQxYSIsIm9yZWxzZSIsImlmJDAiLCJvZl9hXzA3MyIsImFyZzFfMDc1IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMF8wODIiLCJyZXMwXzA4MyIsImFyZzJfMDg2IiwiYXJnMV8wODUiLCJhcmcwXzA4NCIsInJlczBfMDg3IiwicmVzMV8wODgiLCJyZXMyXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJnYXRoZXJfY29uanVuY3RzIiwidHMkMSIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJraWxvYnl0ZXMiLCJtZWdhYnl0ZXMiLCJnaWdhYnl0ZXMiLCJ0ZXJhYnl0ZXMiLCJwZXRhYnl0ZXMiLCJleGFieXRlcyIsIndvcmRzX2ludF9leG4iLCJ3b3Jkc19mbG9hdCIsIm9mX2tpbG9ieXRlcyIsIm9mX21lZ2FieXRlcyIsIm9mX2dpZ2FieXRlcyIsIm9mX3RlcmFieXRlcyIsIm9mX3BldGFieXRlcyIsIm9mX2V4YWJ5dGVzIiwib2Zfd29yZHNfaW50Iiwib2Zfd29yZHNfZmxvYXRfZXhuIiwiYmFzZV9zdHIiLCJleHRfY2hhciIsImxhcmdlc3RfbWVhc3VyZSIsInRfYWJzIiwibm9fbWF0Y2giLCJ2YWxfc2V4cCIsInVuaXRfbmFtZSIsImN1c3RvbV9wcmludGZfMDA1IiwiY3VzdG9tX3ByaW50Zl8wMDYiLCJjdXN0b21fcHJpbnRmXzAwNyIsImN1c3RvbV9wcmludGZfMDA4IiwiY3VzdG9tX3ByaW50Zl8wMDkiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDExIiwidG9fc3RyaW5nX3Nob3J0IiwidG9fdW5pdHNfc3RyIiwidG9fdW5pdCIsImZfYWJzIiwiY3VzdG9tX3ByaW50Zl8wMTQiLCJjdXN0b21fcHJpbnRmXzAxNSIsImN1c3RvbV9wcmludGZfMDE2IiwiY3VzdG9tX3ByaW50Zl8wMTciLCJjdXN0b21fcHJpbnRmXzAxOCIsImN1c3RvbV9wcmludGZfMDE5IiwiY3VzdG9tX3ByaW50Zl8wMjAiLCJjdXN0b21fcHJpbnRmXzAyMSIsImN1c3RvbV9wcmludGZfMDIyIiwiY3VzdG9tX3ByaW50Zl8wMjMiLCJjdXN0b21fcHJpbnRmXzAyNCIsImN1c3RvbV9wcmludGZfMDI1IiwiY3VzdG9tX3ByaW50Zl8wMjYiLCJieXRlc19wZXJfd29yZCIsImVycm9yX3NvdXJjZV8wNjkiLCJlcnJvcl9zb3VyY2VfMTY5IiwiZXJyb3Jfc291cmNlXzI1MyIsInYxNiIsInYxNSIsInYxNCIsInYxMyIsInYxMiIsInYxMSIsInYxMCIsInY5IiwidjgiLCJzaXplJDYiLCJzaXplJDciLCJzaXplJDgiLCJzaXplJDkiLCJzaXplJDEwIiwic2l6ZSQxMSIsInNpemUkMTIiLCJzaXplJDEzIiwidl9taW5vcl93b3JkcyIsInZfcHJvbW90ZWRfd29yZHMiLCJ2X21ham9yX3dvcmRzIiwidl9taW5vcl9jb2xsZWN0aW9ucyIsInZfbWFqb3JfY29sbGVjdGlvbnMiLCJ2X2hlYXBfd29yZHMiLCJ2X2hlYXBfY2h1bmtzIiwidl9saXZlX3dvcmRzIiwidl9saXZlX2Jsb2NrcyIsInZfZnJlZV93b3JkcyIsInZfZnJlZV9ibG9ja3MiLCJ2X2xhcmdlc3RfZnJlZSIsInZfZnJhZ21lbnRzIiwidl9jb21wYWN0aW9ucyIsInZfdG9wX2hlYXBfd29yZHMiLCJ2X3N0YWNrX3NpemUiLCJuJDUiLCJuJDYiLCJuJDciLCJuJDgiLCJuJDkiLCJuJDEwIiwibiQxMSIsIm4kMTIiLCJuJDEzIiwiaHN2JDEwIiwiaHN2JDExIiwiaHN2JDEyIiwiaHN2JDEzIiwiaHN2JDE0Iiwic2V4cF8wMTQiLCJmaWVsZF9zZXhwc18wMTUiLCJtaW5vcl93b3Jkc18wMTYiLCJwcm9tb3RlZF93b3Jkc18wMTgiLCJtYWpvcl93b3Jkc18wMjAiLCJtaW5vcl9jb2xsZWN0aW9uc18wMjIiLCJtYWpvcl9jb2xsZWN0aW9uc18wMjQiLCJoZWFwX3dvcmRzXzAyNiIsImhlYXBfY2h1bmtzXzAyOCIsImxpdmVfd29yZHNfMDMwIiwibGl2ZV9ibG9ja3NfMDMyIiwiZnJlZV93b3Jkc18wMzQiLCJmcmVlX2Jsb2Nrc18wMzYiLCJsYXJnZXN0X2ZyZWVfMDM4IiwiZnJhZ21lbnRzXzA0MCIsImNvbXBhY3Rpb25zXzA0MiIsInRvcF9oZWFwX3dvcmRzXzA0NCIsInN0YWNrX3NpemVfMDQ2IiwiZHVwbGljYXRlc18wNDgiLCJleHRyYV8wNDkiLCJpdGVyXzA3MCIsInNleHBfMDE0JDAiLCJmaWVsZF9zZXhwc18wNTIiLCJmaWVsZF9uYW1lXzA1MCIsInRhaWxfMDcxIiwiZmllbGRfc2V4cF8wNTEkMTYiLCJmaWVsZF9zZXhwXzA1MSIsInhfMDcyIiwiZmllbGRfc2V4cF8wNTEkMCIsImZ2YWx1ZV8wNTQiLCJmaWVsZF9zZXhwXzA1MSQxIiwiZnZhbHVlXzA1MyIsImZpZWxkX3NleHBfMDUxJDIiLCJmaWVsZF9zZXhwXzA1MSQzIiwiZnZhbHVlXzA2OCIsImZpZWxkX3NleHBfMDUxJDQiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTEkNSIsImZpZWxkX3NleHBfMDUxJDYiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTEkNyIsImZ2YWx1ZV8wNjEiLCJmaWVsZF9zZXhwXzA1MSQ4IiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDUxJDkiLCJmdmFsdWVfMDU3IiwiZmllbGRfc2V4cF8wNTEkMTAiLCJmdmFsdWVfMDYzIiwiZmllbGRfc2V4cF8wNTEkMTEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTEkMTIiLCJmdmFsdWVfMDU5IiwiZmllbGRfc2V4cF8wNTEkMTMiLCJmdmFsdWVfMDU4IiwiZmllbGRfc2V4cF8wNTEkMTQiLCJmdmFsdWVfMDU2IiwiZmllbGRfc2V4cF8wNTEkMTUiLCJmdmFsdWVfMDU1Iiwic3RhY2tfc2l6ZV8wNDciLCJ0b3BfaGVhcF93b3Jkc18wNDUiLCJjb21wYWN0aW9uc18wNDMiLCJmcmFnbWVudHNfMDQxIiwibGFyZ2VzdF9mcmVlXzAzOSIsImZyZWVfYmxvY2tzXzAzNyIsImZyZWVfd29yZHNfMDM1IiwibGl2ZV9ibG9ja3NfMDMzIiwibGl2ZV93b3Jkc18wMzEiLCJoZWFwX2NodW5rc18wMjkiLCJoZWFwX3dvcmRzXzAyNyIsIm1ham9yX2NvbGxlY3Rpb25zXzAyNSIsIm1pbm9yX2NvbGxlY3Rpb25zXzAyMyIsIm1ham9yX3dvcmRzXzAyMSIsInByb21vdGVkX3dvcmRzXzAxOSIsIm1pbm9yX3dvcmRzXzAxNyIsInN0YWNrX3NpemVfMTA0IiwidG9wX2hlYXBfd29yZHNfMTAyIiwiY29tcGFjdGlvbnNfMTAwIiwiZnJhZ21lbnRzXzA5OCIsImxhcmdlc3RfZnJlZV8wOTYiLCJmcmVlX2Jsb2Nrc18wOTQiLCJmcmVlX3dvcmRzXzA5MiIsImxpdmVfYmxvY2tzXzA5MCIsImxpdmVfd29yZHNfMDg4IiwiaGVhcF9jaHVua3NfMDg2IiwiaGVhcF93b3Jkc18wODQiLCJtYWpvcl9jb2xsZWN0aW9uc18wODIiLCJtaW5vcl9jb2xsZWN0aW9uc18wODAiLCJtYWpvcl93b3Jkc18wNzgiLCJwcm9tb3RlZF93b3Jkc18wNzYiLCJtaW5vcl93b3Jkc18wNzQiLCJibmRzXzA3MyIsImFyZ18xMDMiLCJibmRzXzA3MyQwIiwiYXJnXzEwMSIsImJuZHNfMDczJDEiLCJhcmdfMDk5IiwiYm5kc18wNzMkMiIsImFyZ18wOTciLCJibmRzXzA3MyQzIiwiYXJnXzA5NSIsImJuZHNfMDczJDQiLCJhcmdfMDkzIiwiYm5kc18wNzMkNSIsImFyZ18wOTEiLCJibmRzXzA3MyQ2IiwiYXJnXzA4OSIsImJuZHNfMDczJDciLCJhcmdfMDg3IiwiYm5kc18wNzMkOCIsImFyZ18wODUiLCJibmRzXzA3MyQ5IiwiYXJnXzA4MyIsImJuZHNfMDczJDEwIiwiYXJnXzA4MSIsImJuZHNfMDczJDExIiwiYXJnXzA3OSIsImJuZHNfMDczJDEyIiwiYXJnXzA3NyIsImJuZHNfMDczJDEzIiwiYXJnXzA3NSIsImJuZHNfMDczJDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwiYV8xMDYiLCJiXzEwNyIsIm4kMTQiLCJhXzEwOCIsImJfMTA5IiwiaHN2JDE1Iiwic2V4cF8xMTEiLCJmaWVsZF9zZXhwc18xMTIiLCJtaW5vcl93b3Jkc18xMTMiLCJwcm9tb3RlZF93b3Jkc18xMTUiLCJtYWpvcl93b3Jkc18xMTciLCJtaW5vcl9jb2xsZWN0aW9uc18xMTkiLCJtYWpvcl9jb2xsZWN0aW9uc18xMjEiLCJoZWFwX3dvcmRzXzEyMyIsImhlYXBfY2h1bmtzXzEyNSIsImxpdmVfd29yZHNfMTI3IiwibGl2ZV9ibG9ja3NfMTI5IiwiZnJlZV93b3Jkc18xMzEiLCJmcmVlX2Jsb2Nrc18xMzMiLCJsYXJnZXN0X2ZyZWVfMTM1IiwiZnJhZ21lbnRzXzEzNyIsImNvbXBhY3Rpb25zXzEzOSIsInRvcF9oZWFwX3dvcmRzXzE0MSIsInN0YWNrX3NpemVfMTQzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzE0NSIsImR1cGxpY2F0ZXNfMTQ3IiwiZXh0cmFfMTQ4IiwiaXRlcl8xNzAiLCJzZXhwXzExMSQwIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTUwJDE3IiwiZmllbGRfc2V4cF8xNTAiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTUwJDAiLCJmdmFsdWVfMTU0IiwiZmllbGRfc2V4cF8xNTAkMSIsImZ2YWx1ZV8xNTMiLCJmaWVsZF9zZXhwXzE1MCQyIiwiZmllbGRfc2V4cF8xNTAkMyIsImZpZWxkX3NleHBfMTUwJDQiLCJmdmFsdWVfMTY1IiwiZmllbGRfc2V4cF8xNTAkNSIsImZ2YWx1ZV8xNjYiLCJmaWVsZF9zZXhwXzE1MCQ2IiwiZnZhbHVlXzE2NCIsImZpZWxkX3NleHBfMTUwJDciLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTAkOCIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1MCQ5IiwiZnZhbHVlXzE1NyIsImZpZWxkX3NleHBfMTUwJDEwIiwiZnZhbHVlXzE2MyIsImZpZWxkX3NleHBfMTUwJDExIiwiZnZhbHVlXzE2MiIsImZpZWxkX3NleHBfMTUwJDEyIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTUwJDEzIiwiZnZhbHVlXzE1OCIsImZpZWxkX3NleHBfMTUwJDE0IiwiZnZhbHVlXzE1NiIsImZpZWxkX3NleHBfMTUwJDE1IiwiZnZhbHVlXzE1MiIsImZpZWxkX3NleHBfMTUwJDE2IiwiZnZhbHVlXzE1NSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNDYiLCJzdGFja19zaXplXzE0NCIsInRvcF9oZWFwX3dvcmRzXzE0MiIsImNvbXBhY3Rpb25zXzE0MCIsImZyYWdtZW50c18xMzgiLCJsYXJnZXN0X2ZyZWVfMTM2IiwiZnJlZV9ibG9ja3NfMTM0IiwiZnJlZV93b3Jkc18xMzIiLCJsaXZlX2Jsb2Nrc18xMzAiLCJsaXZlX3dvcmRzXzEyOCIsImhlYXBfY2h1bmtzXzEyNiIsImhlYXBfd29yZHNfMTI0IiwibWFqb3JfY29sbGVjdGlvbnNfMTIyIiwibWlub3JfY29sbGVjdGlvbnNfMTIwIiwibWFqb3Jfd29yZHNfMTE4IiwicHJvbW90ZWRfd29yZHNfMTE2IiwibWlub3Jfd29yZHNfMTE0IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzIwNiIsInN0YWNrX3NpemVfMjA0IiwidG9wX2hlYXBfd29yZHNfMjAyIiwiY29tcGFjdGlvbnNfMjAwIiwiZnJhZ21lbnRzXzE5OCIsImxhcmdlc3RfZnJlZV8xOTYiLCJmcmVlX2Jsb2Nrc18xOTQiLCJmcmVlX3dvcmRzXzE5MiIsImxpdmVfYmxvY2tzXzE5MCIsImxpdmVfd29yZHNfMTg4IiwiaGVhcF9jaHVua3NfMTg2IiwiaGVhcF93b3Jkc18xODQiLCJtYWpvcl9jb2xsZWN0aW9uc18xODIiLCJtaW5vcl9jb2xsZWN0aW9uc18xODAiLCJtYWpvcl93b3Jkc18xNzgiLCJwcm9tb3RlZF93b3Jkc18xNzYiLCJtaW5vcl93b3Jkc18xNzQiLCJhcmdfMjA3IiwiYm5kc18xNzMiLCJhcmdfMjA1IiwiYm5kc18xNzMkMCIsImFyZ18yMDMiLCJibmRzXzE3MyQxIiwiYXJnXzIwMSIsImJuZHNfMTczJDIiLCJhcmdfMTk5IiwiYm5kc18xNzMkMyIsImFyZ18xOTciLCJibmRzXzE3MyQ0IiwiYXJnXzE5NSIsImJuZHNfMTczJDUiLCJhcmdfMTkzIiwiYm5kc18xNzMkNiIsImFyZ18xOTEiLCJibmRzXzE3MyQ3IiwiYXJnXzE4OSIsImJuZHNfMTczJDgiLCJhcmdfMTg3IiwiYm5kc18xNzMkOSIsImJuZHNfMTczJDEwIiwiYm5kc18xNzMkMTEiLCJibmRzXzE3MyQxMiIsImFyZ18xNzkiLCJibmRzXzE3MyQxMyIsImJuZHNfMTczJDE0IiwiYXJnXzE3NSIsImJuZHNfMTczJDE1Iiwidl9taW5vcl9oZWFwX3NpemUiLCJ2X21ham9yX2hlYXBfaW5jcmVtZW50Iiwidl9zcGFjZV9vdmVyaGVhZCIsInZfdmVyYm9zZSIsInZfbWF4X292ZXJoZWFkIiwidl9zdGFja19saW1pdCIsInZfYWxsb2NhdGlvbl9wb2xpY3kiLCJ2X3dpbmRvd19zaXplIiwidl9jdXN0b21fbWFqb3JfcmF0aW8iLCJ2X2N1c3RvbV9taW5vcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX21heF9zaXplIiwiYV8yMDgiLCJiXzIwOSIsImFfMjEwIiwiYl8yMTEiLCJzZXhwXzIxMyIsImZpZWxkX3NleHBzXzIxNCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTUiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yMTciLCJzcGFjZV9vdmVyaGVhZF8yMTkiLCJ2ZXJib3NlXzIyMSIsIm1heF9vdmVyaGVhZF8yMjMiLCJzdGFja19saW1pdF8yMjUiLCJhbGxvY2F0aW9uX3BvbGljeV8yMjciLCJ3aW5kb3dfc2l6ZV8yMjkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMjMxIiwiY3VzdG9tX21pbm9yX3JhdGlvXzIzMyIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzUiLCJkdXBsaWNhdGVzXzIzNyIsImV4dHJhXzIzOCIsIml0ZXJfMjU0Iiwic2V4cF8yMTMkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNTUiLCJmaWVsZF9zZXhwXzI0MCQxMSIsImZpZWxkX3NleHBfMjQwIiwieF8yNTYiLCJmaWVsZF9zZXhwXzI0MCQwIiwiZnZhbHVlXzI0NSIsImZpZWxkX3NleHBfMjQwJDEiLCJmdmFsdWVfMjQ5IiwiZmllbGRfc2V4cF8yNDAkMiIsImZ2YWx1ZV8yNDciLCJmaWVsZF9zZXhwXzI0MCQzIiwiZnZhbHVlXzI1MCIsImZpZWxkX3NleHBfMjQwJDQiLCJmdmFsdWVfMjUyIiwiZmllbGRfc2V4cF8yNDAkNSIsImZ2YWx1ZV8yNDgiLCJmaWVsZF9zZXhwXzI0MCQ2IiwiZnZhbHVlXzI1MSIsImZpZWxkX3NleHBfMjQwJDciLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkOCIsImZ2YWx1ZV8yNDIiLCJmaWVsZF9zZXhwXzI0MCQ5IiwiZnZhbHVlXzI0NCIsImZpZWxkX3NleHBfMjQwJDEwIiwiZnZhbHVlXzI0NiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzYiLCJjdXN0b21fbWlub3JfcmF0aW9fMjM0IiwiY3VzdG9tX21ham9yX3JhdGlvXzIzMiIsIndpbmRvd19zaXplXzIzMCIsImFsbG9jYXRpb25fcG9saWN5XzIyOCIsInN0YWNrX2xpbWl0XzIyNiIsIm1heF9vdmVyaGVhZF8yMjQiLCJ2ZXJib3NlXzIyMiIsInNwYWNlX292ZXJoZWFkXzIyMCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzIxOCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTYiLCJjdXN0b21fbWlub3JfbWF4X3NpemVfMjc4IiwiY3VzdG9tX21pbm9yX3JhdGlvXzI3NiIsImN1c3RvbV9tYWpvcl9yYXRpb18yNzQiLCJ3aW5kb3dfc2l6ZV8yNzIiLCJhbGxvY2F0aW9uX3BvbGljeV8yNzAiLCJzdGFja19saW1pdF8yNjgiLCJtYXhfb3ZlcmhlYWRfMjY2IiwidmVyYm9zZV8yNjQiLCJzcGFjZV9vdmVyaGVhZF8yNjIiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yNjAiLCJtaW5vcl9oZWFwX3NpemVfMjU4IiwiYm5kc18yNTciLCJhcmdfMjc3IiwiYm5kc18yNTckMCIsImFyZ18yNzUiLCJibmRzXzI1NyQxIiwiYXJnXzI3MyIsImJuZHNfMjU3JDIiLCJhcmdfMjcxIiwiYm5kc18yNTckMyIsImFyZ18yNjkiLCJibmRzXzI1NyQ0IiwiYXJnXzI2NyIsImJuZHNfMjU3JDUiLCJhcmdfMjY1IiwiYm5kc18yNTckNiIsImFyZ18yNjMiLCJibmRzXzI1NyQ3IiwiYXJnXzI2MSIsImJuZHNfMjU3JDgiLCJhcmdfMjU5IiwiYm5kc18yNTckOSIsImFfMjgwIiwiYl8yODEiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfMzE1Iiwic3RhY2tfc2l6ZV8zMTMiLCJ0b3BfaGVhcF93b3Jkc18zMTEiLCJjb21wYWN0aW9uc18zMDkiLCJmcmFnbWVudHNfMzA3IiwibGFyZ2VzdF9mcmVlXzMwNSIsImZyZWVfYmxvY2tzXzMwMyIsImZyZWVfd29yZHNfMzAxIiwibGl2ZV9ibG9ja3NfMjk5IiwibGl2ZV93b3Jkc18yOTciLCJoZWFwX2NodW5rc18yOTUiLCJoZWFwX3dvcmRzXzI5MyIsIm1ham9yX2NvbGxlY3Rpb25zXzI5MSIsIm1pbm9yX2NvbGxlY3Rpb25zXzI4OSIsIm1ham9yX3dvcmRzXzI4NyIsInByb21vdGVkX3dvcmRzXzI4NSIsIm1pbm9yX3dvcmRzXzI4MyIsImFyZ18zMTYiLCJibmRzXzI4MiIsImFyZ18zMTQiLCJibmRzXzI4MiQwIiwiYXJnXzMxMiIsImJuZHNfMjgyJDEiLCJhcmdfMzEwIiwiYm5kc18yODIkMiIsImFyZ18zMDgiLCJibmRzXzI4MiQzIiwiYXJnXzMwNiIsImJuZHNfMjgyJDQiLCJhcmdfMzA0IiwiYm5kc18yODIkNSIsImFyZ18zMDIiLCJibmRzXzI4MiQ2IiwiYXJnXzMwMCIsImJuZHNfMjgyJDciLCJhcmdfMjk4IiwiYm5kc18yODIkOCIsImFyZ18yOTYiLCJibmRzXzI4MiQ5IiwiYXJnXzI5NCIsImJuZHNfMjgyJDEwIiwiYXJnXzI5MiIsImJuZHNfMjgyJDExIiwiYXJnXzI5MCIsImJuZHNfMjgyJDEyIiwiYXJnXzI4OCIsImJuZHNfMjgyJDEzIiwiYXJnXzI4NiIsImJuZHNfMjgyJDE0IiwiYXJnXzI4NCIsImJuZHNfMjgyJDE1IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwic3RhY2tfc2l6ZSIsInRvcF9oZWFwX3dvcmRzIiwiY29tcGFjdGlvbnMiLCJmcmFnbWVudHMiLCJsYXJnZXN0X2ZyZWUiLCJmcmVlX2Jsb2NrcyIsImZyZWVfd29yZHMiLCJsaXZlX2Jsb2NrcyIsImxpdmVfd29yZHMiLCJoZWFwX2NodW5rcyIsImhlYXBfd29yZHMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwibWFqb3Jfd29yZHMiLCJwcm9tb3RlZF93b3JkcyIsIm1pbm9yX3dvcmRzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zJDAiLCJzdGFja19zaXplJDAiLCJ0b3BfaGVhcF93b3JkcyQwIiwiY29tcGFjdGlvbnMkMCIsImZyYWdtZW50cyQwIiwibGFyZ2VzdF9mcmVlJDAiLCJmcmVlX2Jsb2NrcyQwIiwiZnJlZV93b3JkcyQwIiwibGl2ZV9ibG9ja3MkMCIsImxpdmVfd29yZHMkMCIsImhlYXBfY2h1bmtzJDAiLCJoZWFwX3dvcmRzJDAiLCJtYWpvcl9jb2xsZWN0aW9ucyQwIiwibWlub3JfY29sbGVjdGlvbnMkMCIsIm1ham9yX3dvcmRzJDAiLCJwcm9tb3RlZF93b3JkcyQwIiwibWlub3Jfd29yZHMkMCIsIm1pbm9yX3dvcmRzX2Z1biIsInByb21vdGVkX3dvcmRzX2Z1biIsIm1ham9yX3dvcmRzX2Z1biIsIm1pbm9yX2NvbGxlY3Rpb25zX2Z1biIsIm1ham9yX2NvbGxlY3Rpb25zX2Z1biIsImhlYXBfd29yZHNfZnVuIiwiaGVhcF9jaHVua3NfZnVuIiwibGl2ZV93b3Jkc19mdW4iLCJsaXZlX2Jsb2Nrc19mdW4iLCJmcmVlX3dvcmRzX2Z1biIsImZyZWVfYmxvY2tzX2Z1biIsImxhcmdlc3RfZnJlZV9mdW4iLCJmcmFnbWVudHNfZnVuIiwiY29tcGFjdGlvbnNfZnVuIiwidG9wX2hlYXBfd29yZHNfZnVuIiwic3RhY2tfc2l6ZV9mdW4iLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZnVuIiwibWlub3Jfd29yZHNfZ2VuIiwicHJvbW90ZWRfd29yZHNfZ2VuIiwibWFqb3Jfd29yZHNfZ2VuIiwibWlub3JfY29sbGVjdGlvbnNfZ2VuIiwibWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiaGVhcF93b3Jkc19nZW4iLCJoZWFwX2NodW5rc19nZW4iLCJsaXZlX3dvcmRzX2dlbiIsImxpdmVfYmxvY2tzX2dlbiIsImZyZWVfd29yZHNfZ2VuIiwiZnJlZV9ibG9ja3NfZ2VuIiwibGFyZ2VzdF9mcmVlX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwiZnJhZ21lbnRzX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiY29tcGFjdGlvbnNfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJ0b3BfaGVhcF93b3Jkc19nZW4iLCJjb21waWxlX2FjYyQxNSIsInN0YWNrX3NpemVfZ2VuIiwiY29tcGlsZV9hY2MkMTYiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiYV8zMTciLCJiXzMxOCIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8zNDAiLCJjdXN0b21fbWlub3JfcmF0aW9fMzM4IiwiY3VzdG9tX21ham9yX3JhdGlvXzMzNiIsIndpbmRvd19zaXplXzMzNCIsImFsbG9jYXRpb25fcG9saWN5XzMzMiIsInN0YWNrX2xpbWl0XzMzMCIsIm1heF9vdmVyaGVhZF8zMjgiLCJ2ZXJib3NlXzMyNiIsInNwYWNlX292ZXJoZWFkXzMyNCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzMyMiIsIm1pbm9yX2hlYXBfc2l6ZV8zMjAiLCJhcmdfMzQxIiwiYm5kc18zMTkiLCJhcmdfMzM5IiwiYm5kc18zMTkkMCIsImFyZ18zMzciLCJibmRzXzMxOSQxIiwiYm5kc18zMTkkMiIsImJuZHNfMzE5JDMiLCJibmRzXzMxOSQ0IiwiYm5kc18zMTkkNSIsImFyZ18zMjciLCJibmRzXzMxOSQ2IiwiYm5kc18zMTkkNyIsImFyZ18zMjMiLCJibmRzXzMxOSQ4IiwiYXJnXzMyMSIsImJuZHNfMzE5JDkiLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJzcGFjZV9vdmVyaGVhZCIsIm1ham9yX2hlYXBfaW5jcmVtZW50IiwibWlub3JfaGVhcF9zaXplIiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWlub3JfaGVhcF9zaXplX2Z1biIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2Z1biIsInNwYWNlX292ZXJoZWFkX2Z1biIsInZlcmJvc2VfZnVuIiwibWF4X292ZXJoZWFkX2Z1biIsInN0YWNrX2xpbWl0X2Z1biIsImFsbG9jYXRpb25fcG9saWN5X2Z1biIsIndpbmRvd19zaXplX2Z1biIsImN1c3RvbV9tYWpvcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZnVuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2Z1biIsIm1pbm9yX2hlYXBfc2l6ZV9nZW4iLCJtYWpvcl9oZWFwX2luY3JlbWVudF9nZW4iLCJzcGFjZV9vdmVyaGVhZF9nZW4iLCJ2ZXJib3NlX2dlbiIsIm1heF9vdmVyaGVhZF9nZW4iLCJzdGFja19saW1pdF9nZW4iLCJhbGxvY2F0aW9uX3BvbGljeV9nZW4iLCJ3aW5kb3dfc2l6ZV9nZW4iLCJjdXN0b21fbWFqb3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX3JhdGlvX2dlbiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV9nZW4iLCJlcXVhbCQ1IiwidHVuZSIsImxvZ2dlciIsIm9sZF9jb250cm9sX3BhcmFtcyIsImZpZWxkIiwib2xkX3ZhbHVlIiwibmV3X2NvbnRyb2xfcGFyYW1zIiwiZGlzYWJsZV9jb21wYWN0aW9uIiwicG9saWN5Iiwia2VlcF9hbGl2ZSIsIm8iLCJwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWwiLCJtZWFzdXJlX2ludGVybmFsIiwib25fcmVzdWx0IiwibWlub3Jfd29yZHNfYmVmb3JlIiwibWFqb3Jfd29yZHNfYmVmb3JlIiwibWlub3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hZnRlciIsIm1ham9yX3dvcmRzX2FsbG9jYXRlZCIsIm1pbm9yX3dvcmRzX2FsbG9jYXRlZCIsImlzX3plcm9fYWxsb2MiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMzQ5IiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzM0NyIsImFyZ18zNTAiLCJibmRzXzM0NiIsImFyZ18zNDgiLCJibmRzXzM0NiQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzM1NiIsImlzX21ham9yXzM1NCIsInNpemVfaW5fd29yZHNfMzUyIiwiYXJnXzM1NyIsImJuZHNfMzUxIiwiYXJnXzM1NSIsImJuZHNfMzUxJDAiLCJhcmdfMzUzIiwiYm5kc18zNTEkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImJhY2t0cmFjZSIsImJhY2t0cmFjZSQwIiwiaW5mbyQwIiwidHJhY2tlciIsImFkZF9maW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmaW5hbGl6ZV9yZWxlYXNlIiwidG9fc3RhYmxlX2Zvcm1hdCIsIm9mX3N0YWJsZV9mb3JtYXQiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwiY2FuX3NlbmRfdG8iLCJvZl9zeXN0ZW1faW50Iiwic2VuZCIsInNlbmRfZXhuIiwic2VuZF9pIiwic2V4cF9vZl9waWRfc3BlYyIsInNpZ3BlbmRpbmciLCJzaWdwcm9jbWFzayIsInNpZ3N1c3BlbmQiLCJ0b19zeXN0ZW1faW50Iiwic2lnbmFsIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJwcmludCIsImNhdGNoJDAiLCJwcmludF9iYWNrdHJhY2UiLCJnZXRfYmFja3RyYWNlIiwicmVjb3JkX2JhY2t0cmFjZSIsImJhY2t0cmFjZV9zdGF0dXMiLCJjYXB0dXJlIiwiZ2VuZXJhbCIsImhhc2hhYmxlJDEiLCJjYWNoZV9zaXplX2JvdW5kIiwibWF4X2NhY2hlX3NpemUiLCJjYWNoZSQwIiwiY2FjaGUiLCJyZWFsbHlfY2FsbF9mIiwiZl9vbmVzdGVwIiwibWVtb2l6ZWQiLCJvZl9jb21wYXJhYmxlIiwidiQxIiwiaW5pdGlhbF9sZW5ndGgiLCJuZXZlcl9zaHJpbmsiLCJuZXZlcl9zaHJpbmskMCIsImluaXRpYWxfbGVuZ3RoJDAiLCJhcnJfbGVuZ3RoIiwiYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfIiwiYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lIiwiYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtIiwiYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wIiwiY2hlY2tlZCIsImFwcGFyZW50X2Zyb250X2luZGV4IiwiYXBwYXJlbnRfYmFja19pbmRleCIsImFwcGFyZW50X2Zyb250IiwiYXBwYXJlbnRfYmFjayIsImFjdHVhbF9mcm9udCIsImFjdHVhbF9iYWNrIiwiYXBwYXJlbnRfaSIsInJlYWxfaSIsInN0b3BfcG9zIiwiYXBwYXJlbnRfaSQwIiwicmVhbF9pJDAiLCJyZWFsX2kkMSIsImFwcGFyZW50X2kkMSIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiaXRlcmlfaW50ZXJuYWwiLCJuZXdfYXJyIiwib2xkX2FyciIsImJyZWFrX3BvcyIsIm1heWJlX3Nocmlua191bmRlcmx5aW5nIiwiZ3Jvd191bmRlcmx5aW5nIiwicGVla19mcm9udF9ub25lbXB0eSIsInBlZWtfYmFja19ub25lbXB0eSIsImRlcXVldWVfZnJvbnRfbm9uZW1wdHkiLCJkZXF1ZXVlX2JhY2tfbm9uZW1wdHkiLCJkcm9wX2dlbiIsImFzc2VydF9ub3RfZW1wdHkiLCJ0cnVlX2luZGV4X2V4biIsImlfZnJvbV96ZXJvIiwidHJ1ZV9pIiwiZ2V0X29wdCIsImJhY2tfaW5kZXhfZXhuIiwiZnJvbnRfaW5kZXhfZXhuIiwiZ2V0JDAiLCJ1bnRyYW5zbGF0ZWRfaSIsImVwcmludCIsImVwcmludHMiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwiYXJnMV8wMDYiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsImNvbmNhdF9xdW90ZWQiLCJzcGxpdF9jb21tYW5kIiwiYWRkX3VuaXQiLCJ1bnRpbF9lbXB0eSIsImJzdHJfMDAyIiwicG9zXzAwNCIsImxlbl8wMDYiLCJpbml0XzAwOCIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwicmVzaXplIiwibWluX2xlbiIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW50ZXJuYWwiLCJic3RyIiwiY29udGVudHNfYnl0ZXMiLCJiaWdfY29udGVudHMiLCJ2b2xhdGlsZV9jb250ZW50cyIsImFkZF9jaGFyIiwicmVzZXQiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3BvcyIsImFkZF9zdWJieXRlcyIsImFkZF9iaWdzdHJpbmciLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJ1Zl9kc3QiLCJidWZfc3JjIiwiYWRkX2Jpbl9wcm90IiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwiaSQ0IiwicHJldmlvdXMkMCIsImkkNSIsIm9wZW5pbmciLCJsaW0kMCIsImkkMiIsImkkMyIsIm5ld19zdGFydCIsImskMiIsImNsb3NpbmciLCJsaW0iLCJpJDEiLCJuZXh0X2kiLCJpJDYiLCJpJDciLCJpJDgiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwidl9pbmRleCIsInZfbWluX2luZGV4Iiwidl9tYXhfaW5kZXgiLCJhcmc1XzAwOSIsImFyZzRfMDA4IiwiYXJnM18wMDciLCJhcmcyXzAwNiIsInJlczJfMDEyIiwicmVzM18wMTMiLCJyZXM0XzAxNCIsInJlczVfMDE1IiwiYXJnNV8wMjMiLCJhcmc0XzAyMiIsImFyZzNfMDIxIiwiYXJnMl8wMjAiLCJhcmcxXzAxOSIsImFyZzBfMDE4IiwicmVzNV8wMjkiLCJsYWJlbCIsImNyZWF0ZV9hbGwiLCJtYXhfaW5kZXgiLCJtaW5faW5kZXgiLCJkb2VzX3JhaXNlIiwic3ltYm9sJDE4IiwiaGFuZGxlcnMiLCJrZXkiLCJpbnAiLCJjYWxsYmFjayIsInZhbHVlIiwiaW5qZWN0IiwidiIsImNhbGxlZCIsImNhbGxiYWNrJDAiLCJhIiwiaGFuZGxlIiwicyIsInByaW50X3MiLCJOZXZlciIsInJldHVybiQwIiwiYmluZCIsInQiLCJmIiwib2ZfZnVuIiwibGF6eSIsIm1hcCIsImV2YWwkMCIsInQkMCIsInQkMSIsImwiLCJmJDAiLCJ0JDIiLCJjYWxsYmFjayQzIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDQiLCJjYWxsYmFjayQyIiwiaGFuZGxlJDAiLCJoYW5kbGUkMSIsIm9uX3Jlc3BvbnNlIiwib2Zfc3luY19mdW4iLCJtYWtlIiwicmVxdWVzdCIsInJlc3BvbmRfdG8iLCJyZXNwb25zZSIsIm1ha2UkMCIsImV2YWx1YXRvciIsImNyZWF0ZSIsInVwb24iLCJoYW5kbGVyIiwieCIsImZpbGxfaWZfZW1wdHkiLCJwZWVrIiwiaGFuZGxlJDIiLCJvZl9zdmFyX2Z1biIsImNyZWF0ZSQwIiwicXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIiwicXVlcnkiLCJtYXliZV9yZXNwb25kIiwicmVzcCIsIm9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIiLCJxcnQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1MiIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyOCIsImVycm9yX3NvdXJjZV8xNjEiLCJlcnJvcl9zb3VyY2VfMTkzIiwiZXJyb3Jfc291cmNlXzI0MSIsImVycm9yX3NvdXJjZV8yNDMiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwic2V4cF8wMzMiLCJmaWVsZF9zZXhwc18wMzQiLCJyXzAzNSIsImdfMDM3IiwiYl8wMzkiLCJhXzA0MSIsImR1cGxpY2F0ZXNfMDQzIiwiZXh0cmFfMDQ0Iiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0NyIsImZpZWxkX25hbWVfMDQ1IiwidGFpbF8wNTQiLCJmaWVsZF9zZXhwXzA0NiQ0IiwiZmllbGRfc2V4cF8wNDYiLCJ4XzA1NSIsImZpZWxkX3NleHBfMDQ2JDAiLCJmdmFsdWVfMDUxIiwiZmllbGRfc2V4cF8wNDYkMSIsImZ2YWx1ZV8wNTAiLCJmaWVsZF9zZXhwXzA0NiQyIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDQ4IiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJzZXhwX29mX3QkMCIsImFfMDYzIiwiYl8wNjEiLCJnXzA1OSIsInJfMDU3IiwiYXJnXzA2NCIsImJuZHNfMDU2IiwiYXJnXzA2MiIsImJuZHNfMDU2JDAiLCJhcmdfMDYwIiwiYm5kc18wNTYkMSIsImFyZ18wNTgiLCJibmRzXzA1NiQyIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2NCIsInYzIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QkMCIsInBvcyQxIiwicG9zJDIiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsInZfciIsInZfZyIsInZfYiIsInZfYSIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDY1IiwiYl8wNjYiLCJuJDAiLCJuJDEiLCJhXzA2NyIsImJfMDY4IiwiZyIsImEiLCJ0X29mX3NleHAkMSIsInNleHBfMDcwIiwiZmllbGRfc2V4cHNfMDcxIiwiaF8wNzIiLCJzXzA3NCIsImxfMDc2IiwiYV8wNzgiLCJkdXBsaWNhdGVzXzA4MCIsImV4dHJhXzA4MSIsInNleHBfMDcwJDAiLCJmaWVsZF9zZXhwc18wODQiLCJmaWVsZF9uYW1lXzA4MiIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODMkNCIsImZpZWxkX3NleHBfMDgzIiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4MyQwIiwiZnZhbHVlXzA4NyIsImZpZWxkX3NleHBfMDgzJDEiLCJmdmFsdWVfMDg2IiwiZmllbGRfc2V4cF8wODMkMiIsImZ2YWx1ZV8wODgiLCJmaWVsZF9zZXhwXzA4MyQzIiwiZnZhbHVlXzA4NSIsImFfMDc5IiwibF8wNzciLCJzXzA3NSIsImhfMDczIiwic2V4cF9vZl90JDEiLCJhXzEwMCIsImxfMDk4Iiwic18wOTYiLCJoXzA5NCIsImFyZ18xMDEiLCJibmRzXzA5MyIsImFyZ18wOTkiLCJibmRzXzA5MyQwIiwiYXJnXzA5NyIsImJuZHNfMDkzJDEiLCJhcmdfMDk1IiwiYm5kc18wOTMkMiIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl93cml0ZXJfdCQxIiwiYmluX3JlYWRfdCQzIiwiYmluX3JlYWRfdCQ0Iiwidl9oIiwidl9zIiwidl9sIiwiYmluX3JlYWRlcl90JDEiLCJiaW5fdCQxIiwiY29tcGFyZSQxIiwiYV8xMDIiLCJiXzEwMyIsImFfMTA0IiwiYl8xMDUiLCJjcmVhdGUkMCIsImgiLCJsIiwidF9vZl9zZXhwJDIiLCJzZXhwXzEwOSIsImF0b21fMTA3Iiwic2V4cF9hcmdzXzExMCIsImF0b21fMTA3JDAiLCJhcmcwXzEyMiIsInJlczBfMTIzIiwiYXJnMF8xMTYiLCJyZXMwXzExNyIsImFyZzBfMTE5IiwicmVzMF8xMjAiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMjUiLCJyZXMwXzEyNiIsInRfb2Zfc2V4cCQzIiwic2V4cF8xMjciLCJzZXhwX29mX3QkMiIsInZfMTM0Iiwidl8xMzMiLCJ2XzEyOSIsInZfMTMxIiwidl8xMzAiLCJ2XzEzMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMTM1IiwiYl8xMzYiLCJyaWdodF8xNDYiLCJsZWZ0XzE0NSIsInJpZ2h0XzEzOCIsImxlZnRfMTM3IiwicmlnaHRfMTQyIiwibGVmdF8xNDEiLCJyaWdodF8xNDAiLCJsZWZ0XzEzOSIsInJpZ2h0XzE0NCIsImxlZnRfMTQzIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTU2IiwiYXRvbV8xNTQiLCJzZXhwX2FyZ3NfMTU3IiwiYXRvbV8xNTQkMCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE2NiIsInJlczBfMTY3IiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcwXzE2MyIsInJlczBfMTY0IiwiYXJnMF8xNTkiLCJyZXMwXzE2MCIsImFyZzBfMTg3IiwicmVzMF8xODgiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiYXJnMF8xNzgiLCJyZXMwXzE3OSIsImFyZzBfMTc1IiwicmVzMF8xNzYiLCJhcmcwXzE3MiIsInJlczBfMTczIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE5MiIsInNleHBfb2ZfdCQzIiwidl8yMDUiLCJ2XzIwMyIsInZfMjAxIiwidl8xOTgiLCJ2XzE5NiIsInZfMTk0Iiwidl8yMDQiLCJ2XzIwMiIsInZfMjAwIiwidl8xOTciLCJ2XzE5NSIsInZfMTk5IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzIwNiIsImJfMjA3IiwicmlnaHRfMjE3IiwibGVmdF8yMTYiLCJyaWdodF8yMTMiLCJsZWZ0XzIxMiIsInJpZ2h0XzIwOSIsImxlZnRfMjA4IiwicmlnaHRfMjI5IiwibGVmdF8yMjgiLCJyaWdodF8yMjciLCJsZWZ0XzIyNiIsInJpZ2h0XzIyMyIsImxlZnRfMjIyIiwicmlnaHRfMjI1IiwibGVmdF8yMjQiLCJyaWdodF8yMjEiLCJsZWZ0XzIyMCIsInJpZ2h0XzIxNSIsImxlZnRfMjE0IiwicmlnaHRfMjExIiwibGVmdF8yMTAiLCJyaWdodF8yMTkiLCJsZWZ0XzIxOCIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMjMyIiwiYl8yMzMiLCJ0X29mX3NleHAkNiIsInNleHBfMjM5IiwiYXRvbV8yMzciLCJhdG9tXzIzNyQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzI0MiIsInNleHBfb2ZfdCQ0Iiwidl8yNDQiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiaXNfZW1wdHkiLCJlbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsIndpZHRoIiwibWluX3dpZHRoIiwibWF4X3dpZHRoIiwiaGVpZ2h0IiwibWluX2hlaWdodCIsIm1heF9oZWlnaHQiLCJwYWRkaW5nX3RvcCIsInBhZGRpbmdfYm90dG9tIiwicGFkZGluZ19sZWZ0IiwicGFkZGluZ19yaWdodCIsInBhZGRpbmciLCJ1bmlmb3JtX3BhZGRpbmciLCJtYXJnaW5fdG9wIiwibWFyZ2luX2JvdHRvbSIsIm1hcmdpbl9sZWZ0IiwibWFyZ2luX3JpZ2h0IiwibWFyZ2luIiwidW5pZm9ybV9tYXJnaW4iLCJjb25jYXQydiIsImNvbmNhdDN2IiwiYm9yZGVyX3ZhbHVlIiwic3R5bGUkMCIsIndpZHRoJDAiLCJjb2xvciQwIiwiY3JlYXRlX2JvcmRlciIsInNpZGUiLCJib3JkZXJfdG9wIiwiYm9yZGVyX2JvdHRvbSIsImJvcmRlcl9sZWZ0IiwiYm9yZGVyX3JpZ2h0IiwiYm9yZGVyIiwib3V0bGluZSIsImJvcmRlcl9jb2xsYXBzZSIsImJvcmRlcl9zcGFjaW5nIiwiYm9yZGVyX3JhZGl1cyIsInRleHRfZGVjb3JhdGlvbiIsImxpbmUiLCJsaW5lJDAiLCJpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIiwiZmxleF9jb250YWluZXIiLCJvcHQiLCJhbGlnbl9pdGVtcyIsImp1c3RpZnlfY29udGVudCIsInN0aCIsImlubGluZSIsInN0aCQwIiwic3RoJDEiLCJ3cmFwIiwiZGlyZWN0aW9uJDAiLCJ3cmFwJDAiLCJhbGlnbl9pdGVtcyQwIiwianVzdGlmeV9jb250ZW50JDAiLCJmbGV4X2l0ZW0iLCJvcmRlciIsImdyb3ciLCJiYXNpcyIsInNocmluayIsIm9yZGVyJDAiLCJiYXNpcyQwIiwiZmxleCIsImFsaWduX3NlbGYiLCJyZXNpemUiLCJ2YWx1ZSQwIiwiYW5pbWF0aW9uIiwiZHVyYXRpb24iLCJkZWxheSIsImZpbGxfbW9kZSIsIml0ZXJfY291bnQiLCJ0aW1pbmdfZnVuY3Rpb24iLCJzcGFuX3RvX3N0cmluZyIsImQiLCJmaWxsX21vZGUkMCIsInVzZXJfc2VsZWN0IiwiY3NzIiwiczIiLCJ4IiwidHlwZV9vZiIsIngiLCJpbnN0YW5jZV9vZiIsImNvbnN0ciIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwiZ2xvYmFsIiwiYXJyYXlfbWFrZSIsIm4iLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9vZl9qc19mcm9tIiwiZiIsIm9ianMiLCJzdGFydCIsImkiLCJhcnJheV9vZl9qcyIsImFycmF5X3RvX2pzIiwiYXJyIiwiYSIsImxpc3Rfb2ZfanNfZnJvbSIsImxpc3Rfb2ZfanMiLCJsaXN0X3RvX2pzIiwibCIsIm9wdGlvbl9vZl9qcyIsIm9wdGlvbl90b19qcyIsInVuaXRfdG9fanMiLCJ1bml0X29mX2pzIiwic2VsZl8xIiwiaGFzX3Byb3BlcnR5IiwibyIsImVtcHR5X29iaiIsIml0ZXJfcHJvcGVydGllcyIsImFwcGx5X2FyciIsImNhbGxfYXJyIiwicyIsImlzX251bGwiLCJvYmpfdHlwZSIsInRfdG9fanMiLCJ0X29mX2pzIiwidF90b19qcyQwIiwidF9vZl9qcyQwIiwidF90b19qcyQxIiwidF9vZl9qcyQxIiwidF90b19qcyQyIiwidF9vZl9qcyQyIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInRvX2pzX3N0cmluZyIsInZhbHVlIiwidG9fanNfc3RyaW5nX2ZpeGVkIiwiZGlnaXRzIiwidG9fanNfc3RyaW5nX3ByZWNpc2lvbiIsInRvX2pzX3N0cmluZ19leHBvbmVudGlhbCIsInRvX3N0cmluZyIsInRvX3N0cmluZ19maXhlZCIsInRvX3N0cmluZ19wcmVjaXNpb24iLCJ0b19zdHJpbmdfZXhwb25lbnRpYWwiLCJwcmludCIsImYiLCJ2aXNpYmlsaXR5X2hhbmRsZXJzIiwic2VxdWVuY2VfYXNfc2libGluZyIsImxlZnQiLCJ1bmxlc3Nfc3RvcHBlZCIsImNvbnRhaW5zX3N0b3AiLCJlcyIsImN1cnJlbnRfZG9tX2V2ZW50IiwiaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIiwiaGFuZGxlIiwiZG9tX2V2ZW50IiwiZXZlbnQiLCJvbGQiLCJzZXhwX29mX3QiLCJ0eXBlX2lkIiwiZ2VuZXJpY19ob29rIiwicGFjayIsImlkIiwiZGVzdHJveSIsInVwZGF0ZSIsImluaXQiLCJpbnB1dF9pZCIsImlucHV0IiwiaW5pdCQwIiwidXBkYXRlJDAiLCJkZXN0cm95JDAiLCJnZW5lcmljX2hvb2skMCIsImV4dHJhIiwiY29tYmluZSIsInJpZ2h0IiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJlbGVtZW50Iiwic3RhdGUiLCJhbmltYXRpb25faWQiLCJvbGRfaW5wdXQiLCJjcmVhdGUiLCJjb21iaW5lX2lucHV0cyIsInNldCIsIng3IiwieDUiLCJ4NiIsImdldCIsIngxMSIsIngxMCIsImRlbGV0ZSQwIiwieDE2IiwieDE1IiwidF9vZl9qcyIsIngiLCJ0X3RvX2pzIiwidF9vZl9qcyQwIiwidF90b19qcyQwIiwic2V0X3Byb3BlcnR5IiwiaGFzX3Byb3BlcnR5IiwiaGFzX2F0dHJpYnV0ZSIsInQiLCJuYW1lIiwic2V0X2F0dHJpYnV0ZSIsInRfb2ZfanMkMSIsInRfdG9fanMkMSIsImlzX2VtcHR5IiwiZl9pZCIsImlkX3NleHAiLCJjcmVhdGUkMSIsImluZm8iLCJvcHQiLCJzdGgiLCJzdGgkMCIsInMiLCJlbHQiLCJkb21fbm9kZSIsInMwIiwicHJldl9zdGF0ZSIsImRvbV9ub2RlJDAiLCJlbXB0eSIsInJoYW5kbGVyIiwieF8wMDIiLCJsaGFuZGxlciIsInhfMDAxIiwiY3JlYXRlX2Zsb2F0IiwicHJvcGVydHkiLCJzdHJpbmdfcHJvcGVydHkiLCJib29sX3Byb3BlcnR5Iiwic3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MiLCJjcmVhdGVfaG9vayIsImhvb2siLCJtYW55IiwiYXR0cnMiLCJtYW55X3dpdGhvdXRfbWVyZ2UiLCJjb21iaW5lJDAiLCJ3YXJuaW5nX2NvdW50IiwiY3VycmVudCIsIndhcm5fcyIsInF1b3RhIiwid2FybmluZ19jb3VudCQwIiwicmVzZXRfd2FybmluZ19jb3VudCIsImNvbWJpbmluZ19tYXBfYWRkIiwibWFwIiwia2V5IiwiZXhpc3RpbmdfdmFsdWUiLCJlbXB0eV9tZXJnZSIsInN0eWxlIiwiY3NzIiwidmFsaWRfY2xhc3NfbmFtZSIsImludmFsaWQiLCJjbGFzcyQwIiwiY2xhc3NuYW1lIiwiY2xhc3NlcyIsImNsYXNzZXMkMCIsImNsYXNzbmFtZXMiLCJocmVmIiwiciIsInRhcmdldCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsImhpZGRlbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImZvciQwIiwidHlwZSIsInZhbHVlX3Byb3AiLCJ0YWJpbmRleCIsInRpdGxlIiwic3JjIiwibWluIiwibWF4IiwiY29sc3BhbiIsInJvd3NwYW4iLCJkcmFnZ2FibGUiLCJiIiwiY3JlYXRlJDAiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwiY2xpcGJvYXJkIiwiZHJhZyIsInBvaW50ZXIiLCJhbmltYXRpb24iLCJvbiIsImhhbmRsZXIiLCJvbl9mb2N1cyIsIm9uX2JsdXIiLCJvbl9jbGljayIsIm9uX2NvbnRleHRtZW51Iiwib25fZG91YmxlX2NsaWNrIiwib25fZHJhZyIsIm9uX2RyYWdzdGFydCIsIm9uX2RyYWdlbmQiLCJvbl9kcmFnZW50ZXIiLCJvbl9kcmFnbGVhdmUiLCJvbl9kcmFnb3ZlciIsIm9uX2Ryb3AiLCJvbl9tb3VzZW1vdmUiLCJvbl9tb3VzZXVwIiwib25fbW91c2Vkb3duIiwib25fbW91c2VlbnRlciIsIm9uX21vdXNlbGVhdmUiLCJvbl9tb3VzZW92ZXIiLCJvbl9tb3VzZW91dCIsIm9uX2tleXVwIiwib25fa2V5cHJlc3MiLCJvbl9rZXlkb3duIiwib25fc2Nyb2xsIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fY29weSIsIm9uX2N1dCIsIm9uX3Bhc3RlIiwib25fcmVzZXQiLCJvbl9hbmltYXRpb25lbmQiLCJjb25zdF9pZ25vcmUiLCJydW5fY29lcmNpb24iLCJjb2VyY2lvbiIsInByZXYiLCJvbl9pbnB1dF9ldmVudCIsInRleHQiLCJvbl9jaGFuZ2UiLCJvbl9pbnB1dCIsInRvX3JhdyIsImF0dHIiLCJhdHRyc19vYmoiLCJ0YWtlX3NlY29uZF9zdHlsZXMiLCJmaXJzdCIsInNlY29uZCIsInRha2Vfc2Vjb25kX2NsYXNzZXMiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm5hbWUkMCIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwiZmlsdGVyX2J5X2tpbmQiLCJhIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZV91cF90eXBlX2lkIiwibW91c2VfbW92ZV90eXBlX2lkIiwicmVzMV8wMDkiLCJ0YWciLCJ3aXRoX2tleSIsIm1hcF9hdHRycyIsInJhd19hdHRycyIsImFkZF9jbGFzc2VzIiwiY2hpbGRyZW4iLCJ3Iiwia2luZCIsImNoaWxkcmVuX3JhdyIsIm90aGVyIiwiZWxlbWVudF9leHBlcnQiLCJ3aWRnZXQiLCJjcmVhdGVfY2hpbGRsZXNzIiwiY3JlYXRlX3N2ZyIsIm5vbmUiLCJ0ZXh0ZiIsImZvcm1hdCIsIndpZGdldF9vZl9tb2R1bGUiLCJtIiwiYXJnMF8wMDYiLCJzdGF0ZV8wMDQiLCJpbnB1dF8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsInJlczBfMDA4IiwicHJldl9pbnB1dCIsImVsZW1lbnQkMCIsInN0YXRlJDAiLCJpIiwidG9fZG9tIiwiaW5uZXJfaHRtbCIsImNvbnRlbnQiLCJidWlsZF9zZXhwIiwiZGVidWciLCJpbm5lcl9odG1sX3N2ZyIsImlubmVyX2h0bWwkMCIsImJvZHkiLCJidXR0b24iLCJjb2RlIiwiZGl2IiwibWFpbiIsImZpZWxkc2V0IiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHRtbCIsInRleHRhcmVhIiwic2VsZWN0Iiwib3B0aW9uIiwibGFiZWwiLCJsaSIsInAiLCJwcmUiLCJzZWN0aW9uIiwic3BhbiIsInN0cm9uZyIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsInByZXZpb3VzIiwiYXBwbHkiLCJjcmVhdGUkMiIsImNyZWF0ZV9zdmckMCIsImhlcmUiLCJlcnJvcl9zb3VyY2VfMDA0IiwidF9vZl9zZXhwIiwic2V4cF9vZl90IiwidmFsaWRhdGUiLCJ0IiwiZXF1YWwiLCJ0MSIsInQyIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsInNleHBfb2ZfdCQxIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInQxIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInNleHBfb2ZfdCIsInZfMDA2Iiwic2xvdHNfcGVyX3R1cGxlXzAwMiIsImFyZ18wMDMiLCJibmRzXzAwMSIsInNleHBfb2ZfdCQwIiwib2ZfdHVwbGVfMDA3Iiwib2ZfdmFyaWFudF8wMDgiLCJzbG90c19wZXJfdHVwbGUiLCJuIiwic2V4cF9vZl90MSIsIm9mX2EwXzAwOSIsInNleHBfb2ZfdDIiLCJvZl9hMF8wMTAiLCJvZl9hMV8wMTEiLCJzZXhwX29mX3QzIiwib2ZfYTBfMDEyIiwib2ZfYTFfMDEzIiwib2ZfYTJfMDE0Iiwic2V4cF9vZl90NCIsIm9mX2EwXzAxNSIsIm9mX2ExXzAxNiIsIm9mX2EyXzAxNyIsIm9mX2EzXzAxOCIsInNleHBfb2ZfdDUiLCJvZl9hMF8wMTkiLCJvZl9hMV8wMjAiLCJvZl9hMl8wMjEiLCJvZl9hM18wMjIiLCJvZl9hNF8wMjMiLCJzZXhwX29mX3Q2Iiwib2ZfYTBfMDI0Iiwib2ZfYTFfMDI1Iiwib2ZfYTJfMDI2Iiwib2ZfYTNfMDI3Iiwib2ZfYTRfMDI4Iiwib2ZfYTVfMDI5Iiwic2V4cF9vZl90NyIsIm9mX2EwXzAzMCIsIm9mX2ExXzAzMSIsIm9mX2EyXzAzMiIsIm9mX2EzXzAzMyIsIm9mX2E0XzAzNCIsIm9mX2E1XzAzNSIsIm9mX2E2XzAzNiIsInNleHBfb2ZfdDgiLCJvZl9hMF8wMzciLCJvZl9hMV8wMzgiLCJvZl9hMl8wMzkiLCJvZl9hM18wNDAiLCJvZl9hNF8wNDEiLCJvZl9hNV8wNDIiLCJvZl9hNl8wNDMiLCJvZl9hN18wNDQiLCJzZXhwX29mX3Q5Iiwib2ZfYTBfMDQ1Iiwib2ZfYTFfMDQ2Iiwib2ZfYTJfMDQ3Iiwib2ZfYTNfMDQ4Iiwib2ZfYTRfMDQ5Iiwib2ZfYTVfMDUwIiwib2ZfYTZfMDUxIiwib2ZfYTdfMDUyIiwib2ZfYThfMDUzIiwic2V4cF9vZl90MTAiLCJvZl9hMF8wNTQiLCJvZl9hMV8wNTUiLCJvZl9hMl8wNTYiLCJvZl9hM18wNTciLCJvZl9hNF8wNTgiLCJvZl9hNV8wNTkiLCJvZl9hNl8wNjAiLCJvZl9hN18wNjEiLCJvZl9hOF8wNjIiLCJvZl9hOV8wNjMiLCJzZXhwX29mX3QxMSIsIm9mX2EwXzA2NCIsIm9mX2ExXzA2NSIsIm9mX2EyXzA2NiIsIm9mX2EzXzA2NyIsIm9mX2E0XzA2OCIsIm9mX2E1XzA2OSIsIm9mX2E2XzA3MCIsIm9mX2E3XzA3MSIsIm9mX2E4XzA3MiIsIm9mX2E5XzA3MyIsIm9mX2ExMF8wNzQiLCJzZXhwX29mX3QxMiIsIm9mX2EwXzA3NSIsIm9mX2ExXzA3NiIsIm9mX2EyXzA3NyIsIm9mX2EzXzA3OCIsIm9mX2E0XzA3OSIsIm9mX2E1XzA4MCIsIm9mX2E2XzA4MSIsIm9mX2E3XzA4MiIsIm9mX2E4XzA4MyIsIm9mX2E5XzA4NCIsIm9mX2ExMF8wODUiLCJvZl9hMTFfMDg2Iiwic2V4cF9vZl90MTMiLCJvZl9hMF8wODciLCJvZl9hMV8wODgiLCJvZl9hMl8wODkiLCJvZl9hM18wOTAiLCJvZl9hNF8wOTEiLCJvZl9hNV8wOTIiLCJvZl9hNl8wOTMiLCJvZl9hN18wOTQiLCJvZl9hOF8wOTUiLCJvZl9hOV8wOTYiLCJvZl9hMTBfMDk3Iiwib2ZfYTExXzA5OCIsIm9mX2ExMl8wOTkiLCJzZXhwX29mX3QxNCIsIm9mX2EwXzEwMCIsIm9mX2ExXzEwMSIsIm9mX2EyXzEwMiIsIm9mX2EzXzEwMyIsIm9mX2E0XzEwNCIsIm9mX2E1XzEwNSIsIm9mX2E2XzEwNiIsIm9mX2E3XzEwNyIsIm9mX2E4XzEwOCIsIm9mX2E5XzEwOSIsIm9mX2ExMF8xMTAiLCJvZl9hMTFfMTExIiwib2ZfYTEyXzExMiIsIm9mX2ExM18xMTMiLCJuYW1lJDEiLCJwcmVmaXgiLCJuYW1lJDAiLCJuYW1lIiwiZmFpbHdpdGhzIiwiYXJjaF9zaXh0eWZvdXIiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsInRvX3N0cmluZyIsInNwcmludGYiLCJjb25jYXQiLCJsIiwibWF4X3Nsb3QiLCJvZl9zbG90c18wMDciLCJvZl9hXzAwOCIsImVxdWFsIiwidDAiLCJhcnJheV9pbmRleF9udW1fYml0cyIsIm1hc2tlZF90dXBsZV9pZF9udW1fYml0cyIsIm1heF9hcnJheV9sZW5ndGgiLCJpbnZhcmlhbnQiLCJ0IiwiaW5pdCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInBoeXNfZXF1YWwiLCJwaHlzX2NvbXBhcmUiLCJudWxsJDAiLCJpc19udWxsIiwiY3JlYXRlIiwiaGVhZGVyX2luZGV4IiwidHVwbGVfaWQiLCJoZWFkZXJfaW5kZXhfbWFzayIsIm1hc2tlZF90dXBsZV9pZCIsImludmFyaWFudCQwIiwic2xvdF9pbmRleCIsInNsb3QiLCJmaXJzdF9zbG90X2luZGV4IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsIm51bGwkMSIsImlzX251bGwkMCIsImlzX2ZyZWUiLCJpc191c2VkIiwiaWQiLCJtZXRhZGF0YV9pbmRleCIsInN0YXJ0X29mX3R1cGxlc19pbmRleCIsIm1heF9jYXBhY2l0eSIsImR1bW15IiwiciIsImZpcnN0X2ZyZWUiLCJzZXRfZmlyc3RfZnJlZSIsInYiLCJuZXh0X2lkIiwic2V0X25leHRfaWQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiY2FwYWNpdHkiLCJkdW1teSQwIiwiZmlyc3RfZnJlZSQwIiwibmV4dF9pZCQwIiwibGVuZ3RoJDAiLCJjYXBhY2l0eSQwIiwic2xvdHNfcGVyX3R1cGxlJDAiLCJhcnJheV9pbmRpY2VzX3Blcl90dXBsZSIsImFycmF5X2xlbmd0aCIsInR1cGxlX251bV90b19oZWFkZXJfaW5kZXgiLCJ0dXBsZV9udW0iLCJ0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCIsIm1ldGFkYXRhIiwibGVuZ3RoJDEiLCJzZXhwX29mX3QkMyIsInNleHBfb2ZfdHkiLCJjYXBhY2l0eV8wMTgiLCJzbG90c19wZXJfdHVwbGVfMDE2IiwibGVuZ3RoXzAyMCIsIm5leHRfaWRfMDIyIiwiZmlyc3RfZnJlZV8wMjQiLCJkdW1teV8wMjYiLCJhcmdfMDI3IiwiYm5kc18wMTUiLCJhcmdfMDI1IiwiYm5kc18wMTUkMCIsImFyZ18wMjMiLCJibmRzXzAxNSQxIiwiYXJnXzAyMSIsImJuZHNfMDE1JDIiLCJhcmdfMDE5IiwiYm5kc18wMTUkMyIsImFyZ18wMTciLCJibmRzXzAxNSQ0IiwidW5zYWZlX2hlYWRlciIsInVuc2FmZV9zZXRfaGVhZGVyIiwiaGVhZGVyIiwiaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyIsInVuc2FmZV9wb2ludGVyX2lzX2xpdmUiLCJwb2ludGVyIiwiaGVhZGVyX2luZGV4JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMiIsInQkMCIsInNob3VsZF9lcXVhbCIsInQkMSIsInhfMDA5IiwiZXhuJDAiLCJleG4iLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImFyZzJfMDMwIiwiYXJnMV8wMjkiLCJhcmcwXzAyOCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJyZXMyXzAzMyIsImludmFyaWFudCQxIiwiaW52YXJpYW50X2EiLCJjaGVjayIsImYiLCJmaWVsZCIsImZpcnN0X3Nsb3QiLCJmcmVlIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczBfMDM2IiwicmVzMV8wMzciLCJjYXBhY2l0eSQxIiwiaXNfZnVsbCIsInVuc2FmZV9hZGRfdG9fZnJlZV9saXN0Iiwic2V0X21ldGFkYXRhIiwiY3JlYXRlX2FycmF5IiwidW5zYWZlX2luaXRfcmFuZ2UiLCJsbyIsImhpIiwidHVwbGVfbnVtJDAiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJvZl9zbG90c18wNzciLCJpc192YWxpZF8wNzkiLCJwb2ludGVyXzA4MSIsImFyZ18wODIiLCJibmRzXzA3OCIsImFyZ18wODAiLCJibmRzXzA3OCQwIiwiZmllbGQwIiwiZmllbGQxIiwidHlwZW5hbWUiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImZpZWxkcyIsImlzX3ZhbGlkIiwiZm9sbG93IiwieF8wODMiLCJpbnZhbGlkYXRlIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwidHMiLCJhcmciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ4XzA2OSIsInZfMDY4IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2IiwicG9zJDkiLCJwb3MkOCIsInBvcyQ3IiwicG9zJDYiLCJhcmdfMTA4IiwicG9zJDUiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwiZXJyb3Jfc291cmNlXzAzOSIsIm1heF90aW1lIiwibWluX3RpbWUiLCJtYXhfbnVtX2JpdHMiLCJtaW5fdmFsdWUiLCJpbnZhcmlhbnQiLCJ0Iiwib2ZfaW50IiwiaSIsInN5bWJvbCQyIiwidDEiLCJ0MiIsInN5bWJvbCQzIiwicG93MiIsInNleHBfb2ZfdCQwIiwieF8wMDciLCJudW1fYml0c19pbnRlcm5hbCIsIm51bV9iaXRzIiwiaW52YXJpYW50JDAiLCJudW1fa2V5X2JpdHMiLCJ0X29mX3NleHAkMCIsInhfMDA2IiwiY3JlYXRlX2V4biIsIm9wdCIsInhfMDA4Iiwic3RoIiwiZXh0ZW5kX3RvX21heF9udW1fYml0cyIsImJpdHMiLCJpbnRzIiwibGV2ZWxfYml0c19kZWZhdWx0IiwiY29tcGFyZSIsImVxdWFsJDAiLCJ4XzAxMiIsInhfMDEzIiwidG9fc2V4cGFibGUiLCJzZXhwX29mX3QkMSIsIm9uZV9uYW5vc2Vjb25kIiwiYWJvdXRfb25lX21pY3Jvc2Vjb25kIiwiYWJvdXRfb25lX21pbGxpc2Vjb25kIiwiYWJvdXRfb25lX3NlY29uZCIsImFib3V0X29uZV9kYXkiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJ2IiwibGV2ZWxfYml0cyQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzAxOSIsImZpZWxkX3NleHBzXzAyMCIsImFsYXJtX3ByZWNpc2lvbl8wMjEiLCJsZXZlbF9iaXRzXzAyMyIsImNhcGFjaXR5XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4Iiwic2V4cF8wMTkkMCIsImZpZWxkX3NleHBzXzAzMSIsImZpZWxkX25hbWVfMDI5IiwidGFpbF8wNDEiLCJmaWVsZF9zZXhwXzAzMCQzIiwiZmllbGRfc2V4cF8wMzAiLCJ4XzA0MiIsImZpZWxkX3NleHBfMDMwJDAiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMzAkMSIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAzMCQyIiwiZnZhbHVlXzAzNSIsImxldmVsX2JpdHNfMDI0IiwibWF0Y2giLCJhbGFybV9wcmVjaXNpb25fMDIyIiwidl8wMzgiLCJ2XzAzOCQwIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wNDgiLCJsZXZlbF9iaXRzXzA0NiIsImFsYXJtX3ByZWNpc2lvbl8wNDQiLCJibmRzXzA0MyIsInZfMDQ5IiwiYXJnXzA1MSIsImJuZF8wNTAiLCJibmRzXzA0MyQwIiwiYXJnXzA0NyIsImJuZHNfMDQzJDEiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMiIsImFsYXJtX3ByZWNpc2lvbiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJjYXBhY2l0eSIsImxvb3AiLCJyZW1haW5pbmciLCJ0JDAiLCJiIiwibWljcm9zZWNvbmRfcHJlY2lzaW9uIiwiZHVyYXRpb25zIiwibnVtX2JpdHNfYWNjdW0iLCJsZXZlbF9udW1fYml0cyIsIm51bV9iaXRzX2FjY3VtJDAiLCJkdXJhdGlvbiIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQ0IiwiY3JlYXRlJDAiLCJudW1fa2V5cyIsImNyZWF0ZSQxIiwiYml0c19wZXJfc2xvdCIsInRvX2ludDYzIiwib2ZfaW50NjMiLCJzY2FsZV9pbnQiLCJzZXhwX29mX3QkNyIsIm9mX2ludDYzJDAiLCJ0b19pbnQ2MyQwIiwiYWRkIiwiYWRkX2NsYW1wX3RvX21heCIsInN1YiIsImRpZmYiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2siLCJzZXhwX29mX3Bvb2xfc2xvdHMiLCJvZl9hXzA1NCIsInhfMDU1Iiwic2V4cF9vZl90JDgiLCJvZl9hXzA1NiIsInhfMDU3IiwibnVsbCQwIiwibnVsbCQxIiwiaXNfbnVsbCIsImZyZWUiLCJrZXkiLCJwIiwiYXQiLCJ2YWx1ZSIsImxldmVsX2luZGV4IiwicHJldiIsInNldF9wcmV2IiwieCIsIm5leHQiLCJzZXRfbmV4dCIsImlzX3ZhbGlkIiwiZ3JvdyIsImlzX2Z1bGwiLCJvZl9leHRlcm5hbF9leG4iLCJwb29sIiwibGluayIsIml0ZXIiLCJmaXJzdCIsImYiLCJjdXJyZW50IiwiY29udGludWUkMCIsIm5leHQkMCIsInNsb3RzIiwibWF4X2FsbG93ZWRfa2V5Iiwic2V0X21heF9hbGxvd2VkX2tleSIsIm1pbl9hbGxvd2VkX2tleSIsInNldF9taW5fYWxsb3dlZF9rZXkiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5Iiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDY1IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA3OSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDc3Iiwia2V5c19wZXJfc2xvdF8wNzUiLCJiaXRzX3Blcl9zbG90XzA3MyIsInNsb3RzX21hc2tfMDcxIiwiYml0c18wNjkiLCJpbmRleF8wNjciLCJsZW5ndGhfMDgxIiwibWluX2FsbG93ZWRfa2V5XzA4MyIsIm1heF9hbGxvd2VkX2tleV8wODUiLCJzbG90c18wODciLCJhcmdfMDg4IiwiYm5kc18wNjYiLCJhcmdfMDg2IiwiYm5kc18wNjYkMCIsImFyZ18wODQiLCJibmRzXzA2NiQxIiwiYXJnXzA4MiIsImJuZHNfMDY2JDIiLCJhcmdfMDgwIiwiYm5kc18wNjYkMyIsImFyZ18wNzgiLCJibmRzXzA2NiQ0IiwiYXJnXzA3NiIsImJuZHNfMDY2JDUiLCJhcmdfMDc0IiwiYm5kc18wNjYkNiIsImFyZ18wNzIiLCJibmRzXzA2NiQ3IiwiYXJnXzA3MCIsImJuZHNfMDY2JDgiLCJhcmdfMDY4IiwiYm5kc18wNjYkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCQwIiwiY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkiLCJwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSIsImxldmVscyIsImVsdF9rZXlfbG93ZXJfYm91bmQiLCJzZXRfZWx0X2tleV9sb3dlcl9ib3VuZCIsIm1pbl9lbHQiLCJzZXRfbWluX2VsdCIsInNldF9wb29sIiwibGVuZ3RoJDEiLCJzZXRfbGVuZ3RoJDAiLCJsZXZlbHMkMCIsImVsdF9rZXlfbG93ZXJfYm91bmQkMCIsIm1pbl9lbHQkMCIsInBvb2wkMCIsImxlbmd0aCQyIiwiaXNfZW1wdHkiLCJudW1fbGV2ZWxzIiwibWluX2FsbG93ZWRfa2V5JDEiLCJtYXhfYWxsb3dlZF9rZXkkMSIsImludGVybmFsX2l0ZXIiLCJsZXZlbCIsInNsb3RfaW5kZXgiLCJlbHQiLCJjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2siLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2FscmVhZHlfZm91bmQiLCJtaW5fa2V5X2FscmVhZHlfZm91bmQiLCJudW1fbGV2ZWxzJDAiLCJzbG90X21pbl9rZXkiLCJzbG90JDAiLCJjdXJyZW50X2tleSIsImFkZF9lbHQiLCJ4XzEzNSIsInRvX2FkZCIsImtleSQwIiwiZWx0c18xMTUiLCJtYXhfYWxsb3dlZF9rZXlfMTEzIiwibWluX2FsbG93ZWRfa2V5XzExMSIsImJuZHNfMTEwIiwia2V5XzEwNSIsImJuZHNfMTA0IiwiYXJnXzEwNiIsImJuZHNfMTA0JDAiLCJhcmdfMTE2IiwiYm5kc18xMTAkMCIsImFyZ18xMTQiLCJibmRzXzExMCQxIiwiYXJnXzExMiIsImJuZHNfMTEwJDIiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTY3Iiwic3RhcnRfMTY1IiwiY29uZmlnXzE2MyIsIm5vd18xNjkiLCJhbGFybSIsImFsYXJtc18xNzEiLCJibmRzXzE2MiIsInZhbHVlXzE1OSIsImF0XzE1NyIsImFyZ18xNjAiLCJibmRzXzE1NiIsImFyZ18xNTgiLCJibmRzXzE1NiQwIiwiYXJnXzE3MiIsImJuZHNfMTYyJDAiLCJhcmdfMTcwIiwiYm5kc18xNjIkMSIsImFyZ18xNjgiLCJibmRzXzE2MiQyIiwiYXJnXzE2NiIsImJuZHNfMTYyJDMiLCJhcmdfMTY0IiwiYm5kc18xNjIkNCIsImxlbmd0aCQzIiwiaXNfZW1wdHkkMCIsInBvb2wkMSIsImludGVydmFsX251bV9pbnRlcm5hbCIsInRpbWUiLCJpbnRlcnZhbF9udW1fdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtJDAiLCJpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtX3N0YXJ0IiwibmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biIsInhfMTc0IiwiY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIiwibm93X2ludGVydmFsX251bSIsIm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSIsImludGVydmFsX3N0YXJ0IiwiaW52YXJpYW50JDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwicHJpb3JpdHlfcXVldWVfZnVuIiwibGV2ZWxzX2Z1biIsInNsb3RzX2Z1biIsIm4iLCJ4XzA2MiIsIm1heF9hbGxvd2VkX2tleV9mdW4iLCJleHBlY3QiLCJlcXVhbCIsIm1lc3NhZ2UiLCJoZXJlIiwiY29tcGFyYXRvciIsImFfMTI4IiwiYl8xMjkiLCJtaW5fYWxsb3dlZF9rZXlfZnVuIiwiZ290Iiwic2V4cGlmaWVyIiwiYV8xMjYiLCJiXzEyNyIsImxlbmd0aF9mdW4iLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXlfZnVuIiwiZXRhIiwiYV8xMjQiLCJiXzEyNSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfZnVuIiwia2V5c19wZXJfc2xvdF9mdW4iLCJhXzEyMiIsImJfMTIzIiwiYml0c19wZXJfc2xvdF9mdW4iLCJleHBlY3QkMCIsInNsb3RzX21hc2tfZnVuIiwiYV8xMjAiLCJiXzEyMSIsImJpdHNfZnVuIiwiaW5kZXhfZnVuIiwieF8xMTkiLCJwcmV2X2xldmVsIiwiYV8xMzEiLCJiXzEzMiIsImdvdCQwIiwibWVzc2FnZSQwIiwiaGVyZSQwIiwiY29tcGFyYXRvciQwIiwiYV8xMzMiLCJiXzEzNCIsImVsdF9rZXlfbG93ZXJfYm91bmRfZnVuIiwibWluX2VsdF9mdW4iLCJwb29sX2Z1biIsInhfMTMwIiwib2ZfYV8wODkiLCJsZW5ndGhfMDkxIiwicG9vbF8wOTMiLCJtaW5fZWx0XzA5NSIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDk3IiwibGV2ZWxzXzA5OSIsImJuZHNfMDkwIiwiYXJnXzEwMCIsImJuZHNfMDkwJDAiLCJhcmdfMDk4IiwiYm5kc18wOTAkMSIsImFyZ18wOTYiLCJibmRzXzA5MCQyIiwiYXJnXzA5NCIsImJuZHNfMDkwJDMiLCJhcmdfMDkyIiwiYm5kc18wOTAkNCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWVfZnVuIiwiYV8xODMiLCJiXzE4NCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnRfZnVuIiwiYV8xODEiLCJiXzE4MiIsIm5vd19mdW4iLCJtYXhfaW50ZXJ2YWxfbnVtX2Z1biIsImFfMTc3IiwiYl8xNzgiLCJzZXhwaWZpZXIkMCIsImFfMTc5IiwiYl8xODAiLCJzdGFydF9mdW4iLCJjb25maWdfZnVuIiwieF8xNzYiLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTg1IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTg2IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE4NyIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMTkiLCJlcnJvcl9zb3VyY2VfMDMwIiwiZXJyb3Jfc291cmNlXzA0MyIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDUxIiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzExMiIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInNleHBfMDA2IiwiZmllbGRfc2V4cHNfMDA3IiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOCIsImhvd190b19kdW1wXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJob3dfdG9fZHVtcF8wMTEiLCJkdW1wX2lmX2RlbGF5ZWRfYnlfMDA5Iiwic2V4cF9vZl93YXRjaCIsImhvd190b19kdW1wXzAyNiIsImR1bXBfaWZfZGVsYXllZF9ieV8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF8wMzIiLCJ0YWdfMDMzIiwic2V4cF9hcmdzXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJzZXhwX29mX3QkNyIsImFyZzBfMDM3IiwicmVzMF8wMzgiLCJ0X29mX3NleHAkOCIsInNleHBfMDQ0Iiwic2V4cF9vZl90JDgiLCJlcXVhbCQwIiwieF8wNDUiLCJ4XzA0NiIsInRfb2Zfc2V4cCQ5Iiwic2V4cF8wNTIiLCJzZXhwX29mX3QkOSIsInRfb2Zfc2V4cCQxMCIsInNleHBfb2ZfdCQxMCIsInRpbWluZ193aGVlbF9jb25maWciLCJyIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciIsInJlY29yZF9iYWNrdHJhY2VzIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJtYXhfbnVtX3RocmVhZHMiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCIsImZpbGVfZGVzY3Jfd2F0Y2hlciIsImVwb2xsX21heF9yZWFkeV9ldmVudHMiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5IiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyIiwiY2hlY2tfaW52YXJpYW50cyIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyIsInYiLCJ0aW1pbmdfd2hlZWxfY29uZmlnJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMCIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMCIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsIm1heF9udW1fdGhyZWFkcyQwIiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzJDAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCQwIiwiZmlsZV9kZXNjcl93YXRjaGVyJDAiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDAiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5JDAiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIkMCIsImNoZWNrX2ludmFyaWFudHMkMCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQwIiwic2V4cF9vZl90JDExIiwidGltaW5nX3doZWVsX2NvbmZpZ18xNzQiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMTcwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8xIiwicmVjb3JkX2JhY2t0cmFjZXNfMTYyIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXzE1OCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XzE1NCIsIm1heF9udW1fdGhyZWFkc18xNDYiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNfMTQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMTM4IiwiZmlsZV9kZXNjcl93YXRjaGVyXzEzNCIsImVwb2xsX21heF9yZWFkeV9ldmVudHNfMTMwIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheV8xMjYiLCJjaGVja19pbnZhcmlhbnRzXzExOCIsImJuZHNfMTEzIiwidl8xNzUiLCJhcmdfMTc3IiwiYm5kXzE3NiIsImJuZHNfMTEzJDAiLCJ2XzE3MSIsImFyZ18xNzMiLCJibmRfMTcyIiwiYm5kc18xMTMkMSIsInZfMTY3IiwiYXJnXzE2OSIsImJuZF8xNjgiLCJibmRzXzExMyQyIiwidl8xNjMiLCJhcmdfMTY1IiwiYm5kXzE2NCIsImJuZHNfMTEzJDMiLCJ2XzE1OSIsImFyZ18xNjEiLCJibmRfMTYwIiwiYm5kc18xMTMkNCIsInZfMTU1IiwiYXJnXzE1NyIsImJuZF8xNTYiLCJibmRzXzExMyQ1Iiwidl8xNTEiLCJhcmdfMTUzIiwiYm5kXzE1MiIsImJuZHNfMTEzJDYiLCJ2XzE0NyIsImFyZ18xNDkiLCJibmRfMTQ4IiwiYm5kc18xMTMkNyIsInZfMTQzIiwiYXJnXzE0NSIsImJuZF8xNDQiLCJibmRzXzExMyQ4Iiwidl8xMzkiLCJhcmdfMTQxIiwiYm5kXzE0MCIsImJuZHNfMTEzJDkiLCJ2XzEzNSIsImFyZ18xMzciLCJibmRfMTM2IiwiYm5kc18xMTMkMTAiLCJ2XzEzMSIsImFyZ18xMzMiLCJibmRfMTMyIiwiYm5kc18xMTMkMTEiLCJ2XzEyNyIsImFyZ18xMjkiLCJibmRfMTI4IiwiYm5kc18xMTMkMTIiLCJ2XzEyMyIsImFyZ18xMjUiLCJibmRfMTI0IiwiYm5kc18xMTMkMTMiLCJ2XzExOSIsImFyZ18xMjEiLCJibmRfMTIwIiwiYm5kc18xMTMkMTQiLCJ2XzExNSIsImFyZ18xMTciLCJibmRfMTE2IiwiYm5kc18xMTMkMTUiLCJjcmVhdGUkMCIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mbyIsIndvcmRfc2l6ZSIsImxldmVsX2JpdHMkMSIsImFsYXJtX3ByZWNpc2lvbiIsImFsYXJtX3ByZWNpc2lvbiQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiZGVmYXVsdCQxIiwiZXhhbXBsZSIsInVzYWdlIiwiZmllbGQiLCJ0b19zZXhwIiwiZGVzY3JpcHRpb24iLCJhYyIsImQiLCJ4XzE3OCIsImZpZWxkcyIsIm5hbWUiLCJuYW1lMiIsIm5hbWUxIiwic3RyaW5nIiwic2V4cF8wNTQiLCJmaWVsZF9zZXhwc18wNTUiLCJjaGVja19pbnZhcmlhbnRzXzA1OCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjQiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY2IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY4IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MCIsIm1heF9udW1fdGhyZWFkc18wNzIiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzYiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc4IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XzA4NCIsInRpbWluZ193aGVlbF9jb25maWdfMDg2IiwiZHVwbGljYXRlc18wODgiLCJleHRyYV8wODkiLCJpdGVyXzEwOSIsInNleHBfMDU0JDAiLCJmaWVsZF9zZXhwc18wOTIiLCJmaWVsZF9uYW1lXzA5MCIsInRhaWxfMTEwIiwiZmllbGRfc2V4cF8wOTEkMTYiLCJmaWVsZF9zZXhwXzA5MSIsInhfMTExIiwiZmllbGRfc2V4cF8wOTEkMCIsImZ2YWx1ZV8wOTMiLCJmaWVsZF9zZXhwXzA5MSQxIiwiZnZhbHVlXzA5NCIsImZpZWxkX3NleHBfMDkxJDIiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTEkMyIsImZ2YWx1ZV8wOTYiLCJmaWVsZF9zZXhwXzA5MSQ0IiwiZnZhbHVlXzA5NyIsImZpZWxkX3NleHBfMDkxJDUiLCJmdmFsdWVfMDk4IiwiZmllbGRfc2V4cF8wOTEkNiIsImZ2YWx1ZV8xMDAiLCJmaWVsZF9zZXhwXzA5MSQ3IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDkxJDgiLCJmdmFsdWVfMDk5IiwiZmllbGRfc2V4cF8wOTEkOSIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5MSQxMCIsImZ2YWx1ZV8xMDMiLCJmaWVsZF9zZXhwXzA5MSQxMSIsImZ2YWx1ZV8xMDQiLCJmaWVsZF9zZXhwXzA5MSQxMiIsImZ2YWx1ZV8xMDUiLCJmaWVsZF9zZXhwXzA5MSQxMyIsImZ2YWx1ZV8xMDYiLCJmaWVsZF9zZXhwXzA5MSQxNCIsImZ2YWx1ZV8xMDciLCJmaWVsZF9zZXhwXzA5MSQxNSIsImZ2YWx1ZV8xMDgiLCJjaGVja19pbnZhcmlhbnRzXzA1OSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYzIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjUiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY3IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY5IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MSIsIm1heF9udW1fdGhyZWFkc18wNzMiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzciLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc5IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMDg1IiwidCIsInQkMCIsImV4biIsInQkMSIsInQkMiIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQxIiwidGFnIiwibCIsImFsbCIsImRlYnVnIiwiY2xvY2siLCJmZCIsImZpbGVfZGVzY3Jfd2F0Y2hlciQxIiwiZmluYWxpemVycyIsImludGVycnVwdG9yIiwibW9uaXRvciIsIm1vbml0b3Jfc2VuZF9leG4iLCJwYXJhbGxlbCIsInJlYWRlciIsInNjaGVkdWxlciIsInNodXRkb3duIiwidGhyZWFkX3Bvb2wiLCJ0aHJlYWRfc2FmZSIsIndyaXRlciIsInN5bWJvbCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQxIiwiY2hlY2tfaW52YXJpYW50cyQxIiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyJDEiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDEiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMSIsImZpbGVfZGVzY3Jfd2F0Y2hlciQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQkMSIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyQxIiwibWF4X251bV90aHJlYWRzJDEiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMSIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJyZWNvcmRfYmFja3RyYWNlcyQxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQxIiwidGltaW5nX3doZWVsX2NvbmZpZyQxIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheSQxIiwidCQzIiwidGFza19pZCIsIm5vbmUiLCJjcmVhdGUiLCJpc19ub25lIiwieCIsImlzX3NvbWUiLCJnZXRfc29tZV9leG4iLCJnZXQiLCJ0IiwidW5zYWZlX2dldCIsInNldF9zb21lIiwidiIsInNldF9ub25lIiwic2V0IiwidiQwIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInhfMDAyIiwiZW1wdHkiLCJpc19lbXB0eSIsImVxdWFsIiwiZHVtbXlfaWQiLCJjaGlsZCIsInQiLCJwb29sIiwic2libGluZyIsInByZXYiLCJpZCIsInNldF9jaGlsZCIsInYiLCJzZXRfc2libGluZyIsInNldF9wcmV2IiwidmFsdWVfZXhuIiwiYWxsb2NhdGUiLCJ2YWx1ZSIsImZyZWUiLCJkaXNjb25uZWN0X3NpYmxpbmciLCJzaWJsaW5nJDAiLCJkaXNjb25uZWN0X2NoaWxkIiwiY2hpbGQkMCIsImRldGFjaCIsInByZXYkMCIsInJlbGF0aW9uX3RvX3ByZXYiLCJjcmVhdGUiLCJjYXBhY2l0eSIsImludmFyaWFudCIsInRvX3Zpc2l0JDIiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJtYXliZV9wYXJlbnRfdmFsdWUiLCJleHBlY3RlZF9wcmV2Iiwibm9kZSIsInRoaXNfdmFsdWUiLCJwYXJlbnRfdmFsdWUiLCJ0b192aXNpdCQxIiwiY3JlYXRlJDAiLCJvcHQiLCJjbXAiLCJzdGgiLCJtaW5fc2l6ZSIsImNvcHkiLCJwb29sJDAiLCJzdGFydCIsIm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMiLCJjb3B5X25vZGUiLCJuZXdfbm9kZSIsIm5ld19zdGFydCIsInJlc3QiLCJub2RlX3RvX2NvcHkiLCJzbG90Iiwibm9kZV90b191cGRhdGUiLCJtZXJnZSIsInJvb3QxIiwicm9vdDIiLCJhZGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJjdXJyZW50X2NoaWxkIiwidjEiLCJ2MiIsInRvcF9leG4iLCJ0b3AiLCJhZGRfbm9kZSIsInQkMSIsInQkMCIsImFkZCIsIm1heF9zdGFja19kZXB0aCIsImxvb3AiLCJkZXB0aCIsImhlYWQkMCIsIm5leHQxJDAiLCJuZXh0MiQwIiwiYWNjIiwiaGVhZCIsIm5leHQxIiwibmV4dDIiLCJhY2MkMCIsImgiLCJ4cyIsImhlYXAiLCJyZW1vdmVfbm9uX2VtcHR5IiwibWVyZ2VkX2NoaWxkcmVuIiwibmV3X3Jvb3QiLCJyZW1vdmVfdG9wIiwiY2xlYXIiLCJub2RlJDAiLCJwb3BfZXhuIiwiciIsInBvcCIsInBvcF9pZiIsImYiLCJmb2xkIiwiaW5pdCIsIml0ZXIiLCJsZW5ndGgiLCJpdGVyJDAiLCJsZW5ndGgkMCIsImlzX2VtcHR5JDAiLCJtZW0iLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJzZXhwX29mX3QiLCJpc19ub2RlX3ZhbGlkIiwidmFsdWVfZXhuJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfYSIsInhfMDAxIiwicmVtb3ZlIiwidG9rZW4iLCJhZGRfcmVtb3ZhYmxlIiwidXBkYXRlIiwiZmluZF9lbHQiLCJub2RlcyQyIiwibm9kZXMiLCJub2RlcyQwIiwibm9kZXMkMSIsInVwZGF0ZSQwIiwiZWx0IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJ0X29mX3NleHAiLCJvZl9hXzAwMyIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsInBvcyIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhbV9ydW5uaW5nX3Rlc3QiLCJub25lIiwic29tZSIsIngiLCJ1bnNhZmVfdmFsdWUiLCJpc19ub25lIiwidCIsImlzX3NvbWUiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsImEiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsInZhbHVlXzAwMyIsIm5leHRfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJjcmVhdGUiLCJ1bnVzZWRfZWx0cyIsInIiLCJzZXRfdW51c2VkX2VsdHMiLCJ2IiwiYmFjayIsInNldF9iYWNrIiwiZnJvbnQiLCJzZXRfZnJvbnQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwidW51c2VkX2VsdHMkMCIsImJhY2skMCIsImZyb250JDAiLCJsZW5ndGgkMCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDciLCJsZW5ndGhfMDA5IiwiZnJvbnRfMDExIiwiYmFja18wMTMiLCJ1bnVzZWRfZWx0c18wMTUiLCJibmRzXzAwOCIsImFyZ18wMTYiLCJibmRzXzAwOCQwIiwiYXJnXzAxNCIsImJuZHNfMDA4JDEiLCJhcmdfMDEyIiwiYm5kc18wMDgkMiIsImFyZ18wMTAiLCJibmRzXzAwOCQzIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ0IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsInhfMDE3IiwiY3JlYXRlJDAiLCJlbnF1ZXVlIiwiYSIsIm5ld19iYWNrIiwiZGVxdWV1ZV9leG4iLCJ4XzAxOCIsImNsZWFyX2ludGVybmFsX3Bvb2wiLCJhZnRlciIsInQiLCJzcGFuIiwicmVzdWx0IiwibG9nIiwiYXJnMl8wMDMiLCJhcmczXzAwNCIsInNleHBfb2ZfYSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwNSIsInJlczFfMDA2IiwicmVzMl8wMDciLCJyZXMzXzAwOCIsImxvZ19zdHJpbmciLCJtZXNzYWdlIiwiY29uY2F0IiwiZXByaW50IiwiZXByaW50X3MiLCJlcHJpbnRzIiwicHJpbnRfcyIsInNleHAiLCJzZWMiLCJzZXhwX29mX3QiLCJ0b19yZXByIiwib2ZfcmVwciIsIm5hbWVzIiwiZGVidWciLCJmb3J3YXJkaW5nIiwiciIsInNldF9mb3J3YXJkaW5nIiwidiIsImhhc19zZWVuX2Vycm9yIiwic2V0X2hhc19zZWVuX2Vycm9yIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfdGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsInNldF9oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsIm5leHRfZXJyb3IiLCJzZXRfbmV4dF9lcnJvciIsImlkIiwiaGVyZSIsIm5hbWUiLCJmb3J3YXJkaW5nJDAiLCJoYXNfc2Vlbl9lcnJvciQwIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMkMCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzJDAiLCJuZXh0X2Vycm9yJDAiLCJpZCQwIiwiaGVyZSQwIiwibmFtZSQwIiwibWFrZV9jcmVhdG9yIiwibmFtZV9mdW4iLCJoZXJlX2Z1biIsImlkX2Z1biIsIm5leHRfZXJyb3JfZnVuIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZnVuIiwidGFpbHNfZm9yX2FsbF9lcnJvcnNfZnVuIiwiaGFzX3NlZW5fZXJyb3JfZnVuIiwiZm9yd2FyZGluZ19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJuYW1lX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJoZXJlX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJpZF9nZW4iLCJjb21waWxlX2FjYyQzIiwibmV4dF9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZ2VuIiwiY29tcGlsZV9hY2MkNSIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJoYXNfc2Vlbl9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ3IiwiZm9yd2FyZGluZ19nZW4iLCJhY2MiLCJjcmVhdGUiLCJtYXAiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJyZWNvcmQkMCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25zIiwidCQxIiwiYWMiLCJhYyQwIiwidCQwIiwieF8wMDEiLCJuZXh0X2lkIiwiY3JlYXRlX3dpdGhfcGFyZW50IiwiaW5mbyIsInBhcmVudCIsImkiLCJzIiwicyQwIiwieF8wMDIiLCJwYXJlbnQkMCIsIm1haW4iLCJiYWNrdHJhY2VfaGlzdG9yeSIsImxvY2FsX3N0b3JhZ2UiLCJwcmlvcml0eSIsIm1vbml0b3IiLCJiYWNrdHJhY2VfaGlzdG9yeSQwIiwibG9jYWxfc3RvcmFnZSQwIiwicHJpb3JpdHkkMCIsIm1vbml0b3IkMCIsIm1vbml0b3JfZnVuIiwicHJpb3JpdHlfZnVuIiwibG9jYWxfc3RvcmFnZV9mdW4iLCJiYWNrdHJhY2VfaGlzdG9yeV9mdW4iLCJtb25pdG9yX2dlbiIsInByaW9yaXR5X2dlbiIsImxvY2FsX3N0b3JhZ2VfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfMDA4IiwibG9jYWxfc3RvcmFnZV8wMDYiLCJwcmlvcml0eV8wMDQiLCJtb25pdG9yXzAwMiIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMiIsImludmFyaWFudCIsImNyZWF0ZV9saWtlIiwiZmluZF9sb2NhbCIsImtleSIsIndpdGhfbG9jYWwiLCJkYXRhIiwicmVjb3JkX2JhY2t0cmFjZSIsImR1bW15X2UiLCJkdW1teV9mIiwiZHVtbXlfYSIsInNleHBfb2Zfc2xvdHMiLCJvZl9ldmVudCIsImV2ZW50Iiwib2Zfam9iIiwiam9iIiwiaXNfZXZlbnQiLCJpc19qb2IiLCJraW5kIiwicHJvamVjdCIsImpvYl9vcl9ldmVudCIsImV2ZW50cyIsInNldF9leGVjdXRpb25fY29udGV4dCIsImV4ZWN1dGlvbl9jb250ZXh0IiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImZyb250Iiwic2V0X2Zyb250IiwibWFzayIsInNldF9tYXNrIiwiam9icyIsInNldF9qb2JzIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJudW1fam9ic19ydW4iLCJzZXRfbnVtX2pvYnNfcnVuIiwibGVuZ3RoJDAiLCJmcm9udCQwIiwibWFzayQwIiwiam9icyQwIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm51bV9qb2JzX3J1biQwIiwibnVtX2pvYnNfcnVuXzAwMiIsImpvYnNfbGVmdF90aGlzX2N5Y2xlXzAwNCIsImpvYnNfMDA2IiwibWFza18wMDgiLCJmcm9udF8wMTAiLCJsZW5ndGhfMDEyIiwiYXJnXzAxMyIsImFyZ18wMTEiLCJibmRzXzAwMSQzIiwiYm5kc18wMDEkNCIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiY2xlYXIiLCJzZXQiLCJhIiwib2Zmc2V0JDAiLCJlbnF1ZXVlIiwib2xkX2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5Iiwib2xkX2pvYnMiLCJvbGRfZnJvbnQiLCJsZW4xIiwibGVuMiIsIm5ld19qb2JzIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJuIiwiY2FuX3J1bl9hX2pvYiIsInJ1bl9qb2IiLCJzY2hlZHVsZXIiLCJydW5fZXh0ZXJuYWxfam9icyIsImV4dGVybmFsX2pvYnMiLCJydW5fam9icyIsInRoaXNfam9iIiwiZXhuJDAiLCJleG4iLCJiYWNrdHJhY2UiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsIm5hbWVzJDAiLCJpc19udWxsIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQxIiwidHJhbnNpdGlvbl9pc19hbGxvd2VkIiwiZnJvbSIsInRvIiwic2V4cF9vZl9ldmVudCIsImF0IiwiaW50ZXJ2YWwiLCJzdGF0dXMiLCJtYXRjaCIsIm5vbmUiLCJzb21lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJmaXJzdF9zb21lIiwidDEiLCJ0MiIsInVuc2FmZV92YWx1ZSIsInNleHBfb2ZfdCQyIiwicHB4X29wdGlvbmFsX2VfMCIsInZhbHVlJDAiLCJkZWZhdWx0JDAiLCJ2YWx1ZV9leG4iLCJ0b19vcHRpb24iLCJvZl9vcHRpb24iLCJzZXRfc3RhdHVzIiwicHJldl9maXJlZCIsInNldF9wcmV2X2ZpcmVkIiwibmV4dF9maXJlZCIsInNldF9uZXh0X2ZpcmVkIiwic2V0X2ludGVydmFsIiwiY2FsbGJhY2siLCJhdCQwIiwic2V0X2F0IiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJzdGF0dXMkMCIsInByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMCIsImludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQwIiwiY2FsbGJhY2skMCIsImF0JDEiLCJhbGFybSQwIiwiYWxhcm1fZnVuIiwiYXRfZnVuIiwiY2FsbGJhY2tfZnVuIiwiZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiaW50ZXJ2YWxfZnVuIiwibmV4dF9maXJlZF9mdW4iLCJwcmV2X2ZpcmVkX2Z1biIsInN0YXR1c19mdW4iLCJhbGFybV9nZW4iLCJhdF9nZW4iLCJjYWxsYmFja19nZW4iLCJleGVjdXRpb25fY29udGV4dF9nZW4iLCJpbnRlcnZhbF9nZW4iLCJuZXh0X2ZpcmVkX2dlbiIsInByZXZfZmlyZWRfZ2VuIiwic3RhdHVzX2dlbiIsImdvdCIsInNleHBpZmllciIsImV4cGVjdCIsImVxdWFsIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJwcHhfb3B0aW9uYWxfZV8wJDAiLCJhXzAxNyIsImJfMDE4IiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImV4cGVjdCQwIiwibWVzc2FnZSQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsInhfMDE2IiwiaW52YXJpYW50JDAiLCJzZXhwX29mX3QkNSIsInhfMDIxIiwiaW52YXJpYW50JDEiLCJpbnZhcmlhbnRfd2l0aF9qb2JzJDAiLCJzZXhwX29mX3QkNiIsInhfMDIyIiwiaWQkMSIsImlzX3dhbGxfY2xvY2skMSIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJyZWFkX29ubHkiLCJmaXJlIiwiY29udGludWUkMCIsIm5leHQkMCIsImNvbnRpbnVlJDEiLCJwcHhfb3B0aW9uYWxfZV8wJDEiLCJuZXh0IiwicHB4X29wdGlvbmFsX2VfMCQyIiwicHJldiIsImFsYXJtX3ByZWNpc2lvbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX3J1bnNfYXQiLCJub3ckMCIsInRpbWluZ193aGVlbF9ub3ckMCIsInNjaGVkdWxlIiwicmVtb3ZlX2Zyb21fZmlyZWQiLCJuZXdfc3RhdHVzIiwic2V4cF9vZl9ldmVudCQwIiwic3RhdHVzJDEiLCJwcmV2X2ZpcmVkJDEiLCJzZXRfcHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQxIiwic2V0X25leHRfZmlyZWQkMCIsImludGVydmFsJDEiLCJzZXRfaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDEiLCJjYWxsYmFjayQxIiwic2V0X2F0JDAiLCJhbGFybSQxIiwic2V0X2FsYXJtJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQyIiwic2V0X3N0YXR1cyQxIiwic2V0X3N0YXR1c19pZiQwIiwic2NoZWR1bGVkX2F0IiwiY3JlYXRlX2ludGVybmFsIiwiYWRkJDAiLCJjcmVhdGVfYW5kX2FkZCIsImF0JDIiLCJhZnRlciQwIiwicmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJhdF9pbnRlcnZhbHMiLCJzZXhwX29mX3QkOCIsImFib3J0IiwiYWJvcnRfaWZfcG9zc2libGUiLCJhYm9ydF9leG4iLCJyZWFzb24iLCJjcmVhdGUkMSIsInNjaGVkdWxlX2F0X2ludGVybmFsIiwic2NoZWR1bGVfYXQiLCJzY2hlZHVsZV9hZnRlciIsInNjaGVkdWxlX2F0X2ludGVydmFscyIsInJlc2NoZWR1bGVfYXQiLCJyZXNjaGVkdWxlX2FmdGVyIiwicnVuX2FmdGVyIiwicnVuX2F0IiwicnVuX2F0X2ludGVydmFscyIsInJ1bl9maXJlZF9ldmVudHMiLCJzZW5kX2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJzZW5kX2V4biQwIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF8iLCJhZHZhbmNlX2RpcmVjdGx5IiwiZHVyYXRpb25fb2YiLCJzdGFydCIsImR1cmF0aW9uIiwibWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193IiwiaGFzX2V2ZW50c190b19ydW4iLCJjcmVhdGVfd2l0aF9jZWxsIiwiY2VsbCIsImNyZWF0ZV9mdWxsIiwiZXhlYyIsImV4ZWMkMCIsImV4ZWNfZnVuIiwiZXhlY19nZW4iLCJzZXhwX29mX3QkMCIsImV4ZWN1dGlvbl9jb250ZXh0XzAwMiIsInJlY29yZF9iYWNrdHJhY2VzIiwic2V0X3JlY29yZF9iYWNrdHJhY2VzIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfIiwic2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfIiwiY2hlY2tfaW52YXJpYW50cyIsInNldF9jaGVja19pbnZhcmlhbnRzIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJzZXRfeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJ5aWVsZCQwIiwic2V0X3lpZWxkIiwiZXZlbnRfYWRkZWRfaG9vayIsInNldF9ldmVudF9hZGRlZF9ob29rIiwiam9iX3F1ZXVlZF9ob29rIiwic2V0X2pvYl9xdWV1ZWRfaG9vayIsInRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIiwic2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9oIiwidGltZV9zb3VyY2UiLCJzZXRfdGltZV9zb3VyY2UiLCJ0b3RhbF9jeWNsZV90aW1lIiwic2V0X3RvdGFsX2N5Y2xlX3RpbWUiLCJsYXN0X2N5Y2xlX251bV9qb2JzIiwic2V0X2xhc3RfY3ljbGVfbnVtX2pvYnMiLCJsYXN0X2N5Y2xlX3RpbWUiLCJzZXRfbGFzdF9jeWNsZV90aW1lIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9lbmQiLCJzZXRfcnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydCIsInNldF9ydW5fZXZlcnlfY3ljbGVfc3RhcnQiLCJpbl9jeWNsZSIsInNldF9pbl9jeWNsZSIsImN5Y2xlX3N0YXJ0Iiwic2V0X2N5Y2xlX3N0YXJ0IiwiY3ljbGVfY291bnQiLCJzZXRfY3ljbGVfY291bnQiLCJ1bmNhdWdodF9leG5fdW53cmFwcGVkIiwic2V0X3VuY2F1Z2h0X2V4biIsInNldF9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IiwibWFpbl9leGVjdXRpb25fY29udGV4dCIsInNldF9tYWluX2V4ZWN1dGlvbl9jb250ZXh0IiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyIsImxvd19wcmlvcml0eV9qb2JzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMiLCJqb2JfcG9vbCIsInNldF9qb2JfcG9vbCIsImNoZWNrX2FjY2VzcyIsInNldF9jaGVja19hY2Nlc3MiLCJyZWNvcmRfYmFja3RyYWNlcyQwIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDAiLCJjaGVja19pbnZhcmlhbnRzJDAiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiQwIiwieWllbGQkMSIsImV2ZW50X2FkZGVkX2hvb2skMCIsImpvYl9xdWV1ZWRfaG9vayQwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2skMCIsImV4dGVybmFsX2pvYnMkMCIsInRpbWVfc291cmNlJDAiLCJ0b3RhbF9jeWNsZV90aW1lJDAiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDAiLCJsYXN0X2N5Y2xlX3RpbWUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmQkMCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0JDAiLCJpbl9jeWNsZSQwIiwiY3ljbGVfc3RhcnQkMCIsImN5Y2xlX2NvdW50JDAiLCJ1bmNhdWdodF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzJDAiLCJsb3dfcHJpb3JpdHlfam9icyQwIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMkMCIsImpvYl9wb29sJDAiLCJjaGVja19hY2Nlc3MkMCIsImNoZWNrX2FjY2Vzc19mdW4iLCJqb2JfcG9vbF9mdW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19mdW4iLCJsb3dfcHJpb3JpdHlfam9ic19mdW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2Z1biIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9mdW4iLCJ1bmNhdWdodF9leG5fZnVuIiwiY3ljbGVfY291bnRfZnVuIiwiY3ljbGVfc3RhcnRfZnVuIiwiaW5fY3ljbGVfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2Z1biIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV9mdSIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9mdW4iLCJsYXN0X2N5Y2xlX3RpbWVfZnVuIiwibGFzdF9jeWNsZV9udW1fam9ic19mdW4iLCJ0b3RhbF9jeWNsZV90aW1lX2Z1biIsInRpbWVfc291cmNlX2Z1biIsImV4dGVybmFsX2pvYnNfZnVuIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfIiwiam9iX3F1ZXVlZF9ob29rX2Z1biIsImV2ZW50X2FkZGVkX2hvb2tfZnVuIiwieWllbGRfZnVuIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZnVuIiwiY2hlY2tfaW52YXJpYW50c19mdW4iLCJyZWNvcmRfYmFja3RyYWNlc19mdW4iLCJjaGVja19hY2Nlc3NfZ2VuIiwiam9iX3Bvb2xfZ2VuIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfZ2VuIiwibG93X3ByaW9yaXR5X2pvYnNfZ2VuIiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2Vyc19nZW4iLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwidW5jYXVnaHRfZXhuX2dlbiIsImN5Y2xlX2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDkiLCJjeWNsZV9zdGFydF9nZW4iLCJjb21waWxlX2FjYyQxMCIsImluX2N5Y2xlX2dlbiIsImNvbXBpbGVfYWNjJDExIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEyIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2dlIiwiY29tcGlsZV9hY2MkMTMiLCJydW5fZXZlcnlfY3ljbGVfZW5kX2dlbiIsImNvbXBpbGVfYWNjJDE0IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9nZW4iLCJjb21waWxlX2FjYyQxNSIsImxhc3RfY3ljbGVfdGltZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImxhc3RfY3ljbGVfbnVtX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJ0b3RhbF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE4IiwidGltZV9zb3VyY2VfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJleHRlcm5hbF9qb2JzX2dlbiIsImNvbXBpbGVfYWNjJDIwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfJDAiLCJjb21waWxlX2FjYyQyMSIsImpvYl9xdWV1ZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMiIsImV2ZW50X2FkZGVkX2hvb2tfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJ5aWVsZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluX2dlbiIsImNvbXBpbGVfYWNjJDI1IiwiY2hlY2tfaW52YXJpYW50c19nZW4iLCJjb21waWxlX2FjYyQyNiIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQxIiwiY29tcGlsZV9hY2MkMjciLCJyZWNvcmRfYmFja3RyYWNlc19nZW4iLCJjcmVhdGUkMiIsImNoZWNrX2FjY2Vzc18wMDciLCJqb2JfcG9vbF8wMDkiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzXzAxNSIsImxvd19wcmlvcml0eV9qb2JzXzAxMyIsIm5vcm1hbF9wcmlvcml0eV9qb2JzXzAxMSIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfMDE3IiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF8wMTkiLCJ1bmNhdWdodF9leG5fMDIxIiwiY3ljbGVfY291bnRfMDI3IiwiY3ljbGVfc3RhcnRfMDI5IiwiaW5fY3ljbGVfMDMxIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XzAzMyIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV8wMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfMDM3IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV8wMzkiLCJsYXN0X2N5Y2xlX3RpbWVfMDQxIiwibGFzdF9jeWNsZV9udW1fam9ic18wNDMiLCJ0b3RhbF9jeWNsZV90aW1lXzA0NSIsInRpbWVfc291cmNlXzA0NyIsImV4dGVybmFsX2pvYnNfMDQ5Iiwiam9iX3F1ZXVlZF9ob29rXzA1MyIsImV2ZW50X2FkZGVkX2hvb2tfMDU1IiwieWllbGRfMDU3IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fMDU5IiwiY2hlY2tfaW52YXJpYW50c18wNjEiLCJyZWNvcmRfYmFja3RyYWNlc18wNjUiLCJhcmdfMDY2IiwiYm5kc18wMDYiLCJhcmdfMDY0IiwiYm5kc18wMDYkMCIsImFyZ18wNjIiLCJibmRzXzAwNiQxIiwiYXJnXzA2MCIsImJuZHNfMDA2JDIiLCJhcmdfMDU4IiwiYm5kc18wMDYkMyIsImFyZ18wNTYiLCJibmRzXzAwNiQ0IiwiYXJnXzA1NCIsImJuZHNfMDA2JDUiLCJhcmdfMDUyIiwiYm5kc18wMDYkNiIsImFyZ18wNTAiLCJibmRzXzAwNiQ3IiwiYXJnXzA0OCIsImJuZHNfMDA2JDgiLCJhcmdfMDQ2IiwiYm5kc18wMDYkOSIsImFyZ18wNDQiLCJibmRzXzAwNiQxMCIsImFyZ18wNDIiLCJibmRzXzAwNiQxMSIsImFyZ18wNDAiLCJibmRzXzAwNiQxMiIsImFyZ18wMzgiLCJibmRzXzAwNiQxMyIsImFyZ18wMzYiLCJibmRzXzAwNiQxNCIsImFyZ18wMzQiLCJibmRzXzAwNiQxNSIsImFyZ18wMzIiLCJibmRzXzAwNiQxNiIsImFyZ18wMzAiLCJibmRzXzAwNiQxNyIsImFyZ18wMjgiLCJibmRzXzAwNiQxOCIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYXJnXzAyMiIsImJuZHNfMDA2JDE5IiwiYXJnXzAyMCIsImJuZHNfMDA2JDIwIiwiYXJnXzAxOCIsImJuZHNfMDA2JDIxIiwiYXJnXzAxNiIsImJuZHNfMDA2JDIyIiwiYXJnXzAxNCIsImJuZHNfMDA2JDIzIiwiYXJnXzAxMiIsImJuZHNfMDA2JDI0IiwiYXJnXzAxMCIsImJuZHNfMDA2JDI1IiwiYXJnXzAwOCIsImJuZHNfMDA2JDI2IiwidW5jYXVnaHRfZXhuJDAiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJyZXMxXzA3MCIsIm51bV9wZW5kaW5nX2pvYnMiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDEiLCJ1bm9yZGVyZWRfaXNfc3VibGlzdCIsInNtYWxsIiwibGFyZ2UiLCJ4IiwibCQwIiwieSIsImwiLCJjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCIsInRhYmxlIiwibGlzdCIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJ0X3JlZiIsImNoZWNrX2FjY2VzcyQxIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dCQxIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEiLCJ0bXBfY29udGV4dCIsIm9sZF9jb250ZXh0Iiwid2l0aF9leGVjdXRpb25fY29udGV4dCIsImNyZWF0ZV9qb2IiLCJnb3RfdW5jYXVnaHRfZXhuIiwiYXJnMV8wNzIiLCJhcmcwXzA3MSIsInJlczBfMDczIiwicmVzMV8wNzQiLCJzdGFydF9jeWNsZSIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkiLCJlIiwiZSQwIiwic3RhYmlsaXplIiwiY3JlYXRlX3RpbWVfc291cmNlIiwib3B0Iiwic3RoIiwidGltaW5nX3doZWVsX2NvbmZpZyIsIndhbGxfY2xvY2siLCJzZXRfcHJldiIsInBhcmFtIiwic2V0X25leHQiLCJydW4iLCJjcmVhdGUyIiwicnVuMSIsImV4ZWN1dGlvbl9jb250ZXh0MSIsInJ1bjIiLCJleGVjdXRpb25fY29udGV4dDIiLCJzY2hlZHVsZV9qb2JzIiwiYWRkIiwib2ZfbGlzdCIsImZpcnN0IiwibCQxIiwibCQyIiwicnVuJDAiLCJwcmV2JDAiLCJhY2MkMCIsImNlbGxfb2ZfaGFuZGxlciIsImluZGlyIiwic3F1YXNoIiwidCQzIiwidCQ0IiwiaW5kaXIkMSIsInQkNSIsImluZGlyJDAiLCJ0JDIiLCJhX2ludmFyaWFudCIsImhhbmRsZXIiLCJwZWVrIiwidmFsdWUiLCJpZl9lbXB0eV90aGVuX2ZhaWx3aXRoIiwiaXNfZW1wdHkiLCJpc19mdWxsIiwiZmlsbCIsInJlbW92ZV9oYW5kbGVyIiwiYWRkX2hhbmRsZXIiLCJoYW5kbGVyJDEiLCJoYW5kbGVyJDIiLCJydW4kMSIsImhhbmRsZXIkMCIsImhhc19oYW5kbGVycyIsInVwb24iLCJ1cG9uJDAiLCJjb25uZWN0IiwiYmluZF9yZXN1bHQiLCJiaW5kX3JocyIsImJpbmRfcmVzdWx0JDAiLCJpdmFyIiwiYmluZF9yaHNfY29udGVudHMiLCJpdmFyJDAiLCJsYXN0MSIsImxhc3QyIiwiaGFuZGxlcjEiLCJleGVjdXRpb25fY29udGV4dDIkMCIsInJ1bjIkMCIsImhhbmRsZXIxJDAiLCJ2JDAiLCJvZl9pdmFyIiwiaW52YXJpYW50X2EiLCJyZXR1cm4kMCIsImlzX2RldGVybWluZWQiLCJiaW5kIiwiaCIsInJlYWQiLCJmaWxsX2lmX2VtcHR5IiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJzZXhwX29mX2hvdyIsInZfMDAxIiwibmV2ZXIiLCJyZXR1cm4kMSIsInJldHVybiQyIiwicmV0dXJuJDMiLCJ1bml0IiwiYm90aCQwIiwiYTEiLCJhMiIsImRvbl90X3dhaXRfZm9yIiwiZjIiLCJmMSIsInByb2Nlc3MiLCJyZXN0IiwiY2hvaWNlIiwiZW5hYmxlZCIsImNob2ljZXMiLCJ1bnJlZ2lzdGVycyIsInJlYWR5IiwiY2hvb3NlX3Jlc3VsdCIsImNob2ljZXMkMCIsImNob2ljZXMkMSIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsImIiLCJ4cyIsInNlcW1hcCIsImJzIiwiYWxsIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJvayIsIm9mX2FfMDA1IiwieF8wMDYiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwieF8wMDciLCJjb2xsZWN0IiwiaXNfY2xvc2VkIiwiZmlsbF9leG4iLCJjbG9zZV9leG4iLCJjbG9zZV9pZl9vcGVuIiwiZXh0ZW5kIiwiZGVmZXJyZWQwIiwiZGVmZXJyZWQxIiwiaW1wb3J0MCIsImVycm9yIiwiZGV0YWNoIiwiZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyIsImhhbmRsZXJfc3RhdGVfcmVmIiwicnVuX2YiLCJiYWdfZWx0IiwiaW5uZXJfZXhuJDAiLCJpbm5lcl9leG4iLCJkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0iLCJ0YWlsIiwiZ2V0X25leHRfZXJyb3IiLCJkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIiwiZXh0cmFjdF9leG4iLCJjb2x1bW4iLCJtb25pdG9yJDEiLCJuYW1lJDEiLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwicmVzdCQwIiwicmVzdCQxIiwidDMiLCJyZXN0JDIiLCJyZXN0JDMiLCJ0cmFjZXMiLCJyZXN0JDQiLCJ0MSQwIiwicmVzdCQ1IiwidDIkMCIsInJlc3QkNiIsInQyJDEiLCJiYWNrdHJhY2UkMiIsImxpc3RfaWZfbm90X2VtcHR5IiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJleHRyYWN0X2V4biQwIiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwid2l0aGluX2NvbnRleHQiLCJjb250ZXh0Iiwid2l0aGluX2dlbiIsIndpdGhpbiIsIndpdGhpbl92Iiwid2l0aGluJDAiLCJzY2hlZHVsZV93aXRoX2RhdGEiLCJ3b3JrIiwidXBvbl93b3JrX2ZpbGxfaSIsInNjaGVkdWxlJDAiLCJwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsX2FuZF9maWxsIiwic3RyZWFtX2l0ZXIiLCJzdHJlYW0iLCJleG5zIiwiZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvIiwicmVzdWx0X2ZpbGxlciIsImhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCIsInRyeV93aXRoX2xvZ19leG4iLCJ0cnlfd2l0aCIsInN0aCQwIiwiZG9fZXh0cmFjdF9leG4iLCJzdGgkMSIsInN0aCQyIiwiaGFuZGxlX2V4biIsInJlcyIsInRyeV93aXRoX29yX2Vycm9yIiwidHJ5X3dpdGhfam9pbl9vcl9lcnJvciIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmciIsInIkMCIsImZpbmFsbHlfZXhuIiwiaGFuZGxlX2Vycm9ycyIsImNhdGNoX3N0cmVhbSIsImNhdGNoJDAiLCJjYXRjaF9lcnJvciIsImRlcHRoIiwibiQwIiwiZmlyc3RfZXhuIiwibG9vcCQwIiwibG9vcF9uZXh0IiwibG9vcF9uZXh0JDAiLCJjbG9zZWQiLCJ1bmZvbGQiLCJjb3B5X3RvX3RhaWwiLCJhcHBlbmQiLCJmaWx0ZXJfZGVwcmVjYXRlZCIsImZpbHRlcl9tYXBfZGVwcmVjYXRlZCIsImZpcnN0X24iLCJhdmFpbGFibGVfbm93Iiwic3BsaXQiLCJzdG9wIiwicmVhc29uX2Zvcl9zdG9wcGluZyIsInByZWZpeCIsImZpbmlzaCIsIm8iLCJmaW5kIiwiZm91bmQiLCJ1bmdyb3VwIiwiaW50ZXJsZWF2ZSIsIm51bV9vcGVuIiwiY2xvc2UiLCJvdXRlcl9jbG9zZWQiLCJ0YWtlX3VudGlsIiwieiIsIml0ZXJfZHVyYWJseSIsIml0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIiwiaXRlcl9kdXJhYmx5JDAiLCJvZl9mdW4iLCJzZXRfaXZhciIsImhhc19hbnlfd2FpdGVycyIsInNldF9oYXNfYW55X3dhaXRlcnMiLCJoYXNfYW55X3dhaXRlcnMkMCIsInJlcHIiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJvZl9hXzAwMSIsImhhc19hbnlfd2FpdGVyc18wMDMiLCJpdmFyXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwiYnJvYWRjYXN0Iiwid2FpdCIsImhhc19hbnlfd2FpdGVycyQxIiwieF8wMDMiLCJhZHZhbmNlX2RpcmVjdGx5X2J5IiwiYnkiLCJ3YWl0X2ZvciIsInJ1bl9xdWV1ZWRfYWxhcm1zIiwid2Fsa19hbGFybXMiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQkMCIsImFkdmFuY2VfYnlfYWxhcm1zX2J5Iiwic3Bhbl90b190aW1lIiwicnVuX2F0X2ludGVybmFsIiwidGltZSIsInJlbW92ZV9hbGFybSIsIm9mX2FfMDA4Iiwib2ZfaF8wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNldF9zY2hlZHVsZWRfYXQiLCJudW1fZmlyZXNfdG9fc2tpcCIsInNldF9udW1fZmlyZXNfdG9fc2tpcCIsImZpcmVkIiwic2NoZWR1bGVkX2F0JDAiLCJudW1fZmlyZXNfdG9fc2tpcCQwIiwiZmlyZWQkMCIsIm9mX2FfMDE2Iiwib2ZfaF8wMTciLCJhbGFybV8wMTkiLCJmaXJlZF8wMjMiLCJudW1fZmlyZXNfdG9fc2tpcF8wMjUiLCJzY2hlZHVsZWRfYXRfMDI3IiwidGltZV9zb3VyY2VfMDI5IiwiYm5kc18wMTgiLCJibmRzXzAxOCQwIiwiYXJnXzAyNiIsImJuZHNfMDE4JDEiLCJhcmdfMDI0IiwiYm5kc18wMTgkMiIsImJuZHNfMDE4JDMiLCJibmRzXzAxOCQ0Iiwic2V4cF9vZl90X3VuaXQiLCJ4XzAzMSIsImZpcmVkJDEiLCJpbnZhcmlhbnRfaCIsInNjaGVkdWxlZF9hdF9mdW4iLCJhXzAzMyIsImJfMDM0IiwibnVtX2ZpcmVzX3RvX3NraXBfZnVuIiwiZmlyZWRfZnVuIiwieF8wMzIiLCJvZl9hXzAzNSIsIm9mX2hfMDM2IiwiYXJnMF8wMzciLCJyZXMwXzAzOCIsImFyZzBfMDM5IiwicmVzMF8wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwib2ZfYV8wNDUiLCJvZl9oXzA0NiIsImFyZzBfMDQ3IiwicmVzMF8wNDgiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwieF8wNTMiLCJhJDAiLCJvZl9hXzA1NCIsIm9mX2hfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJhcmcxXzA2MyIsImFyZzBfMDYyIiwicmVzMF8wNjQiLCJyZXMxXzA2NSIsImlzX2luX3RpbWluZ193aGVlbCIsImFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZSIsInJ1bl9hdCQwIiwicnVuX2FmdGVyJDAiLCJhdF90aW1lcyIsIm5leHRfdGltZSIsImF0X3ZhcnlpbmdfaW50ZXJ2YWxzIiwiY29tcHV0ZV9zcGFuIiwic3RhcnQkMCIsImltbWVkaWF0ZWx5IiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsIm9mX2FfMDAyIiwicmVzMF8wMDQiLCJsZW5ndGhfMDA2IiwiYm5kc18wMDUiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwibWF4X2NvbmN1cnJlbnRfam9icyIsImNsZWFuZWQkMCIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQkMCIsImNhcGFjaXR5X2F2YWlsYWJsZSQwIiwibnVtX2pvYnNfcnVubmluZyQwIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0JDAiLCJqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UkMCIsIm1heF9jb25jdXJyZW50X2pvYnMkMCIsIm9mX2FfMDExIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0XzAxOSIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZV8wMTciLCJtYXhfY29uY3VycmVudF9qb2JzXzAxNSIsImNvbnRpbnVlX29uX2Vycm9yXzAxMyIsIm51bV9qb2JzX3J1bm5pbmdfMDIxIiwiY2FwYWNpdHlfYXZhaWxhYmxlXzAyMyIsImlzX2RlYWRfMDI1IiwiY2xlYW5zXzAyNyIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRfMDI5IiwiY2xlYW5lZF8wMzEiLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiYm5kc18wMTIkMiIsImJuZHNfMDEyJDMiLCJibmRzXzAxMiQ0Iiwib3V0Y29tZV8wMDkiLCJzdGFydF8wMDYiLCJibmRzXzAwNSQwIiwidl8wMDgiLCJibmRzXzAwNSQxIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2ZfYV8wMzQiLCJvZl9raW5kXzAzNSIsInhfMDM2IiwibnVtX2pvYnNfd2FpdGluZ190b19zdGFydCIsImNsZWFuX3Jlc291cmNlIiwia2lsbCIsImF0X2tpbGwiLCJjbGVhbmVkJDEiLCJzdGFydF9qb2IiLCJqb2JfcmVzb3VyY2UiLCJqb2JfcmVzb3VyY2VzIiwiY3JlYXRlX3dpdGgiLCJvdXRjb21lIiwiaW50ZXJuYWxfam9iIiwiaGFuZGxlX2VucXVldWVfcmVzdWx0IiwiZW5xdWV1ZSQwIiwiZW5xdWV1ZV9leGNsdXNpdmUiLCJkb25lIiwiZl9wbGFjZWhvbGRlciIsInNsb3QiLCJtb25hZF9zZXF1ZW5jZV9ob3ciLCJob3ciLCJtb25hZF9zZXF1ZW5jZV9ob3cyIiwicHJpb3Jfam9ic19kb25lIiwiYWxsX2R1bW15X2pvYnNfcnVubmluZyIsImR1bW15X2pvYnNfcnVubmluZyIsImNhcGFjaXR5X2F2YWlsYWJsZSQxIiwiaGFzX3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudCIsIm5leHRfdXBjb21pbmdfZXZlbnRfZXhuIiwiZXZlbnRfcHJlY2lzaW9uIiwiYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2siLCJoYW5kbGUiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2siLCJyZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2siLCJsc3QiLCJsc3QkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJxdWV1ZSIsInJ1bm5pbmciLCJ0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiIsImN5Y2xlX3N0YXJ0X25zIiwiY3ljbGVfdGltZXNfbnMiLCJjeWNsZV90aW1lcyIsImV2ZW50X3ByZWNpc2lvbl9ucyIsImJvb2wiLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayQwIiwiYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rJDAiLCJyZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va18kMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEkMCIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInZfMDA2IiwiZm9sZGkiLCJzZXFtYXBpIiwiaXRlcmkiLCJtYXBpIiwiZmlsdGVyaSIsImJvb2xzIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImZpbmRfbWFwaSIsImF1eCIsImZpbmRpIiwiZWx0IiwiZXhpc3RzaSIsImZvcl9hbGxpIiwiZmlsdGVyX21hcCIsImZpbHRlciIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInRsIiwiaGQiLCJjaGFuZ2UiLCJ1cGRhdGUiLCJpdGVyX2tleXMiLCJhbGlzdCIsImFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIiwiZm9sZF9yaWdodCIsImFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIiwic2VxdWVuY2UiLCJqb2JfbWFwIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInRodW5rIiwicmVyYWlzZSIsImdlbmVyYWwiLCJoYXNoYWJsZSIsImNvbWJpbmUiLCJlcnIiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImFwcGx5IiwiZTEiLCJlMiIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJva19leG4iLCJvZl9leG4iLCJvZl9leG5fcmVzdWx0IiwibXNnIiwic2V4cF9vZiIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ0YWciLCJ0YWdfcyIsInRhZ19zX2xhenkiLCJ0YWdfYXJnIiwidW5pbXBsZW1lbnRlZCIsImNvbWJpbmVfZXJyb3JzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCQwIiwidHJ5X3dpdGhfam9pbiIsInN0YXRlJDAiLCJmb2xkX21hcGkiLCJtYXBpX2YiLCJmb2xkX2YiLCJ0aHJvdHRsZSIsImMiLCJjJDEiLCJjJDAiLCJpJDAiLCJhY2N1bSIsIm1heWJlX3YiLCJzaG93X2RlYnVnX21lc3NhZ2VzIiwiY2hlY2tfaW52YXJpYW50IiwieF8wMDQiLCJ2YWx1ZXNfcmVhZCIsInNldF92YWx1ZXNfcmVhZCIsInZhbHVlc19yZWFkJDAiLCJwaXBlX2lkXzAwOSIsInZhbHVlc19yZWFkXzAxMSIsImJuZHNfMDA4IiwiYXJnXzAxNSIsImJuZHNfMDA4JDAiLCJ2XzAxMyIsImJuZHNfMDA4JDEiLCJibmRzXzAwOCQyIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbSIsInZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdSIsIndoZW5fc2VudF9kb3duc3RyZWFtIiwiY29uc3VtZXIiLCJ3YW50cyIsImNvbnN1bWVyJDAiLCJ3YW50cyQwIiwib2ZfYV8wMjkiLCJjb25zdW1lcl8wMzMiLCJ3YW50c18wMzEiLCJibmRzXzAzMCIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMSIsInZfMDIwIiwicmVzMF8wMjIiLCJhcmcxXzAyNSIsImFyZzBfMDI0IiwicmVzMF8wMjYiLCJ2XzAyMyIsInJlczFfMDI3IiwiYm5kc18wMzAkMCIsImZpbGxfd2l0aF9lb2YiLCJpJDEiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIiwicmVhZHlfMDM5IiwiZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF8wMzciLCJibmRzXzAzNiIsImJuZHNfMDM2JDAiLCJibmRzXzAzNiQxIiwiY29uc3VtZXJzIiwic2V0X2NvbnN1bWVycyIsImJsb2NrZWRfcmVhZHMiLCJibG9ja2VkX2ZsdXNoZXMiLCJwdXNoYmFjayIsInNldF9wdXNoYmFjayIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJzaXplX2J1ZGdldCQwIiwic2V4cF9vZl9waXBlIiwib2ZfYV8wNDEiLCJvZl9waGFudG9tXzA0MiIsImlkXzA0NCIsImluZm9fMDQ2IiwiYnVmZmVyXzA1MCIsInNpemVfYnVkZ2V0XzA1MiIsInB1c2hiYWNrXzA1NCIsIm51bV92YWx1ZXNfcmVhZF8wNTYiLCJyZWFkX2Nsb3NlZF8wNjQiLCJjbG9zZWRfMDYyIiwiYmxvY2tlZF9yZWFkc18wNjAiLCJibG9ja2VkX2ZsdXNoZXNfMDU4IiwiY29uc3VtZXJzXzA2NiIsInVwc3RyZWFtX2ZsdXNoZWRzXzA2OCIsImJuZHNfMDQzIiwiYXJnXzA2OSIsImJuZHNfMDQzJDAiLCJhcmdfMDY3IiwiYm5kc18wNDMkMSIsImFyZ18wNjUiLCJibmRzXzA0MyQyIiwiYXJnXzA2MyIsImJuZHNfMDQzJDMiLCJhcmdfMDYxIiwiYm5kc18wNDMkNCIsImFyZ18wNTkiLCJibmRzXzA0MyQ1IiwiYXJnXzA1NyIsImJuZHNfMDQzJDYiLCJhcmdfMDU1IiwiYm5kc18wNDMkNyIsImFyZ18wNTMiLCJibmRzXzA0MyQ4IiwiYXJnXzA1MSIsImJuZHNfMDQzJDkiLCJ2XzA0NyIsImFyZ18wNDkiLCJibmRfMDQ4IiwiYm5kc18wNDMkMTAiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMTEiLCJoYXNoIiwiaXNfcmVhZF9jbG9zZWQiLCJwdXNoYmFjayQxIiwieF8wNzMiLCJ4XzAzNSIsInNleHBfb2ZfcGhhbnRvbSIsIm9mX2FfMDc0IiwieF8wNzUiLCJzZXhwX29mX3BoYW50b20kMCIsIm9mX2FfMDc2IiwieF8wNzciLCJpZF9yZWYiLCJpbml0aWFsX2J1ZmZlciIsInZhbGlkYXRlX3NpemVfYnVkZ2V0IiwidXBkYXRlX3B1c2hiYWNrIiwieF8wNzgiLCJjbG9zZV9yZWFkIiwieF8wNzkiLCJmbHVzaCIsImNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4YyIsInciLCJjcmVhdGVfcmVhZGVyIiwiY2xvc2Vfb25fZXhjZXB0aW9uIiwiY3JlYXRlX3dyaXRlciIsInZhbHVlc193ZXJlX3JlYWQiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInN0YXJ0X3dyaXRlIiwieF8wODEiLCJ4XzA4MCIsImZpbmlzaF93cml0ZSIsImJsb2NrZWRfcmVhZCIsIml2YXIkMSIsInRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2siLCJ0cmFuc2Zlcl9pbiIsIndyaXRlIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlJDAiLCJ3cml0ZV93aGVuX3JlYWR5Iiwid3JpdGVfaWZfb3BlbiIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiIsImVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIiwieF8wODMiLCJzdGFydF9yZWFkIiwibGFiZWwiLCJ4XzA4NCIsImdlbl9yZWFkX25vdyIsImdldF9tYXhfcXVldWVfbGVuZ3RoIiwibWF4X3F1ZXVlX2xlbmd0aCQwIiwicmVhZF9ub3ciLCJyZWFkX25vdyQwIiwicmVhZCQwIiwicmVhZF9leG4iLCJ2YWx1ZXNfYXZhaWxhYmxlIiwicmVhZF9jaG9pY2UiLCJyZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXgiLCJyZWFkX2V4YWN0bHkiLCJudW1fdmFsdWVzIiwiYWxyZWFkeV9yZWFkIiwiZG93bnN0cmVhbV9mbHVzaGVkIiwidXBzdHJlYW1fZmx1c2hlZCIsImFkZF9jb25zdW1lciIsInBpcGVfaWQiLCJjb25zdW1lciQxIiwidXBzdHJlYW0iLCJkb3duc3RyZWFtIiwidXBzdHJlYW1fZmx1c2hlZCQwIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsImZvbGRfZ2VuIiwiZmx1c2hlZCIsImZvbGRfd2l0aG91dF9wdXNoYmFjayIsIndpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yIiwiaXRlcl93aXRob3V0X3B1c2hiYWNrIiwibWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMCIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMSIsInJlbWFpbmluZyIsInJlbWFpbmluZyQwIiwiZHJhaW4iLCJkcmFpbl9hbmRfY291bnQiLCJzdW0iLCJyZWFkX2FsbCIsImlucHV0IiwidG9fc3RyZWFtX2RlcHJlY2F0ZWQiLCJvZl9zdHJlYW1fZGVwcmVjYXRlZCIsInRyYW5zZmVyIiwibmV4dF9kZWZlcnJlZCIsImNoZWNrX2Nsb3NlZF9sb29wX25leHQiLCJ0cmFuc2Zlcl9nZW4iLCJvdXRwdXQiLCJsaW5rIiwidW5saW5rIiwib3V0cHV0X2Nsb3NlZCIsInRyYW5zZmVyJDAiLCJ0cmFuc2Zlcl9pZCIsIm1hcF9nZW4iLCJjb25jYXRfbWFwX2xpc3QiLCJmaWx0ZXJfbWFwJDAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAkMCIsIngkMCIsImZvbGRpbmdfbWFwIiwiYWNjdW0kMCIsImVtcHR5Iiwic2luZ2xldG9uIiwid3JpdGVyIiwicmVhZGVyIiwic3ltYm9sIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSQxIiwic2VxdWVuY2UkMCIsInRvX3NlcXVlbmNlIiwiaW50ZXJsZWF2ZV9waXBlIiwiaW5wdXRzIiwib3V0cHV0X3dyaXRlciIsIm51bV9waXBlc19yZW1haW5pbmciLCJkZWNyX251bV9waXBlc19yZW1haW5pbmciLCJoZWFwIiwiaGFuZGxlX3JlYWQiLCJlb2Zfb3Jfb2siLCJwb3BfaGVhcF9hbmRfbG9vcCIsImluaXRpYWxfcHVzaCIsImNvbmNhdF9waXBlIiwiZm9yayIsInB1c2hiYWNrX3VzZXMiLCJ3cml0ZXIwIiwicmVhZGVyMCIsIndyaXRlcjEiLCJyZWFkZXIxIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCIsInNvbWVfcmVhZGVyX3dhc19jbG9zZWQkMCIsInN0aWxsX29wZW4iLCJmaWx0ZXJfb3BlbiIsInN0aWxsX29wZW4kMCIsInNldF9pbmZvIiwidmFsdWVfYXZhaWxhYmxlIiwic2V0X3ZhbHVlX2F2YWlsYWJsZSIsInRha2VuIiwiY3VycmVudF92YWx1ZSIsInZhbHVlX2F2YWlsYWJsZSQwIiwidGFrZW4kMCIsImN1cnJlbnRfdmFsdWUkMCIsInZhbHVlX2F2YWlsYWJsZSQxIiwidmFsdWVfYXZhaWxhYmxlX2Z1biIsImFfMDExIiwiYl8wMTIiLCJ0YWtlbl9mdW4iLCJjdXJyZW50X3ZhbHVlX2Z1biIsInhfMDEwIiwidGFrZW5fMDA2IiwiY3VycmVudF92YWx1ZV8wMDQiLCJ2YWx1ZV9hdmFpbGFibGVfMDA4IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInBlZWtfZXhuIiwieF8wMTMiLCJvZl9hXzAxNCIsInhfMDE1IiwieF8wMTciLCJ3cml0ZV9vbmx5IiwidGFrZV9ub25lbXB0eSIsInRha2Vfbm93X2V4biIsInRha2Vfbm93IiwidGFrZSIsInVwZGF0ZV9leG4iLCJ0YWtlbiQxIiwicHV0IiwicGlwZV93aGVuX3JlYWR5IiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJvbl9ldmVudCIsImFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdCIsImN1cnJlbnRfY29ubmVjdGlvbiIsImNvbm4iLCJjbG9zZV9maW5pc2hlZCQwIiwiaXNfY2xvc2VkJDAiLCJjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QiLCJzZXhwX29mX3QkMSIsInBhcmFtIiwiY29ubl8wMjMiLCJuZXh0X2Nvbm5lY3RfcmVzdWx0XzAyNiIsImRvbl90X3JlY29ubmVjdF8wMzQiLCJjbG9zZV9maW5pc2hlZF8wMzIiLCJjbG9zZV9zdGFydGVkXzAzMCIsImV2ZW50X2hhbmRsZXJfMDI4IiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYm5kc18wMTAiLCJhcmdfMDE0IiwiYm5kc18wMTAkMCIsImFyZ18wMTIiLCJibmRzXzAxMCQxIiwiYXJnXzAyOSIsImJuZHNfMDE2JDUiLCJhcmdfMDI3IiwiYm5kc18wMTYkNiIsInZfMDI1IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwic3RoIiwic3RoJDAiLCJyYW5kb21fc3RhdGUiLCJzdGgkMSIsInRpbWVfc291cmNlIiwiZXZlbnRfaGFuZGxlciIsImRlZmF1bHRfcmV0cnlfZGVsYXkiLCJub25fcmFuZG9taXplZF9kZWxheSIsInJldHJ5X2RlbGF5X3NwYW4iLCJyYW5kb21fc3RhdGUkMCIsInNwYW4iLCJzcGFuJDAiLCJkaXN0YW5jZSIsIndhaXQiLCJyZXRyeV9kZWxheSIsInByZXZpb3VzX2FkZHJlc3MiLCJwcmV2aW91c19lcnJvciIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJlIiwic2FtZV9hc19wcmV2aW91c19lcnJvciIsImFkZHIiLCJwcmV2aW91c19hZGRyZXNzJDAiLCJzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MiLCJwb3MiLCJhbGwiLCJlcnJvcl9zb3VyY2VfMDA1IiwicmV0aXJlZF9rcmJfd29yZCIsImNvbXBhcmUiLCJ0X29mX3NleHAiLCJzZXhwXzAwNiIsInNleHBfb2ZfdCIsImdyb3VwIiwibWFnaWNfd29yZCIsIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSIsImdlbl9tYWdpY19udW1iZXIiLCJ3b3JkIiwiYWNjIiwiYyIsIm1hZ2ljX251bWJlciIsInQiLCJwIiwiYnlfbWFnaWNfbnVtYmVyIiwibWFnaWNfd29yZHMiLCJtYWdpY19udW1iZXJzIiwibiIsIm1hZ2ljX251bWJlciQwIiwic2l6ZSIsInNleHBpZmllciIsImVxdWFsIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMDciLCJiXzAwOCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJjcmVhdGVfZXhuIiwicHJvdG9jb2wiLCJzdXBwb3J0ZWRfdmVyc2lvbnMiLCJnZXRfcHJvdG9jb2wiLCJ2ZXJzaW9ucyIsInByb3RvY29scyIsIm5lZ290aWF0ZSIsImFsbG93X2xlZ2FjeV9wZWVyIiwidXMiLCJwZWVyIiwidXNfdmVyc2lvbnMiLCJ1c19wcm90b2NvbCIsInBlZXJfdmVyc2lvbnMiLCJwZWVyX3Byb3RvY29sIiwidmVyc2lvbiIsIngiLCJtYXRjaGVzX21hZ2ljX3ByZWZpeCIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImYiLCJhbnlfbWFnaWNfcHJlZml4IiwiZ3JvdXAkMCIsImJpbl9zaXplX3QkMCIsImFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZSIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkZXJfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlJDAiLCJib3VuZGVkX2xpc3RfYmluX3NpemUiLCJiaW5fc2hhcGVfdCIsImJpbl90IiwiYmluX3NpemVfdCIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZV90IiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJ1ZiIsInBvc19yZWYiLCJ2bmF0MCIsIm9mX2ludF9leG4iLCJvZl93cml0ZXIiLCJ3cml0ZSIsInNpemUiLCJ3cml0ZSQwIiwicG9zIiwiYSIsImxlbiIsInBvcyQwIiwic2l6ZSQwIiwib2ZfdHlwZV9jbGFzcyIsImJpbl9hIiwidGVzdCIsInMiLCJiaWdzdHJpbmciLCJiaWdzdHJpbmdfdmVyc2lvbiIsIndyaXRlcl93aXRoX2xlbmd0aCIsIndpdGhfbGVuZ3RoX3ZlcnNpb24iLCJwb3ciLCJ4IiwiZGVzY3JpcHRpb25zIiwiZXJyb3Jfc291cmNlXzAxNyIsImdyb3VwIiwidjIiLCJ2MSIsInZpbnQiLCJ2X25hbWUiLCJ2X3ZlcnNpb24iLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsIm4iLCJoYXNoX2ZvbGRfdCIsImhzdiIsImFyZyIsImhzdiQwIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfMDA0IiwiZmllbGRfc2V4cHNfMDA1IiwibmFtZV8wMDYiLCJ2ZXJzaW9uXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwic2V4cF8wMDQkMCIsImZpZWxkX3NleHBzXzAxNCIsImZpZWxkX25hbWVfMDEyIiwidGFpbF8wMTkiLCJmaWVsZF9zZXhwXzAxMyQyIiwiZmllbGRfc2V4cF8wMTMiLCJ4XzAyMCIsImZpZWxkX3NleHBfMDEzJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMSIsImZ2YWx1ZV8wMTYiLCJ2ZXJzaW9uXzAwOSIsIm5hbWVfMDA3Iiwic2V4cF9vZl90IiwidmVyc2lvbl8wMjQiLCJuYW1lXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImFyZ18wMjMiLCJibmRzXzAyMSQwIiwic3VtbWFyaXplIiwidHMiLCJ2ZXJzaW9uIiwibmFtZSIsInN1bW1hcnkiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDMiLCJ0IiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDg2IiwiaWRfMDg0IiwiYXJnXzA4NyIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX3QkOSIsImJpbl9yZWFkX3QkMTAiLCJiaW5fcmVhZGVyX3QkNCIsImJpbl9yZWFkX25hdDBfdCIsImJpbl9yZWFkX25hdDBfdCQwIiwiYmluX3JlYWRlcl9uYXQwX3QiLCJiaW5fc2l6ZV9uYXQwX3QiLCJiaW5fd3JpdGVfbmF0MF90IiwiYmluX3dyaXRlcl9uYXQwX3QiLCJncm91cCQ1IiwiYmluX3NoYXBlX3QkMiIsInJlc3BvbnNlIiwiZXJyb3IiLCJiaW5fc2l6ZV90JDIiLCJzaXplX29mX3Jlc3BvbnNlIiwic2l6ZV9vZl9lcnJvciIsImJpbl93cml0ZV90JDIiLCJ3cml0ZV9yZXNwb25zZSIsIndyaXRlX2Vycm9yIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlIiwiYmluX3dyaXRlcl9lcnJvciIsImJpbl9yZWFkX3QkMTEiLCJvZl9yZXNwb25zZSIsIm9mX2Vycm9yIiwiYmluX3JlYWRfdCQxMiIsInZfdW51c2VkX3F1ZXJ5X2lkIiwidl9pbml0aWFsIiwiYmluX3JlYWRlcl90JDUiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlIiwiYmluX3JlYWRlcl9lcnJvciIsImJpbl90JDIiLCJiaW5fcmVzcG9uc2UiLCJiaW5fZXJyb3IiLCJzZXhwX29mX3QkMiIsIm9mX3Jlc3BvbnNlXzA4OCIsIm9mX2Vycm9yXzA4OSIsImluaXRpYWxfMDkzIiwidW51c2VkX3F1ZXJ5X2lkXzA5MSIsImFyZ18wOTQiLCJibmRzXzA5MCIsImFyZ18wOTIiLCJibmRzXzA5MCQwIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMiIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMiIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ1IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDYiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkX3QkMTQiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkX25hdDBfdCQxIiwiYmluX3JlYWRfbmF0MF90JDIiLCJiaW5fcmVhZGVyX25hdDBfdCQwIiwiYmluX3NpemVfbmF0MF90JDAiLCJiaW5fd3JpdGVfbmF0MF90JDAiLCJiaW5fd3JpdGVyX25hdDBfdCQwIiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMyIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ3IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDgiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX25lZWRzX2xlbmd0aCQzIiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMSIsIm9mX2FfMDk1IiwiYXJnMF8wOTYiLCJyZXMwXzA5NyIsImFyZzBfMDk4IiwicmVzMF8wOTkiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDMiLCJiaW5fcmVhZF9uYXQwX3QkNCIsImJpbl9yZWFkZXJfbmF0MF90JDEiLCJiaW5fc2l6ZV9uYXQwX3QkMSIsImJpbl93cml0ZV9uYXQwX3QkMSIsImJpbl93cml0ZXJfbmF0MF90JDEiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJsZW5ndGgiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJyZWFkX2ZvcmV2ZXIiLCJvbl9tZXNzYWdlIiwib25fZW5kX29mX2JhdGNoIiwicmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCIsImJpbl9yZWFkZXIiLCJwYWNrJDAiLCJjbG9zZSQwIiwiaXNfY2xvc2VkJDAiLCJtb25pdG9yIiwiYnl0ZXNfdG9fd3JpdGUiLCJmbHVzaGVkIiwicmVhZHlfdG9fd3JpdGUiLCJzZW5kX2Jpbl9wcm90IiwiYmluX3dyaXRlciIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ubyIsInN0b3BwZWQiLCJjYW5fc2VuZCIsInRyYW5zZmVyIiwib3B0IiwicGlwZSIsImYiLCJzdGgiLCJtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCIsImNvbnN1bWVyIiwiaXZhciIsIml0ZXIiLCJxIiwiZW5kX29mX3BpcGUiLCJ3cml0ZXJfMDA2IiwicmVhZGVyXzAwNCIsImFyZ18wMDciLCJibmRzXzAwMyIsImJuZHNfMDAzJDAiLCJjbG9zZSQxIiwiY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fIiwiY2FsbGJhY2tfMDAyIiwiY2xvc2VfY29ubmVjdGlvbiIsImNvbnRpbnVlJDAiLCJoYW5kbGVfZXhuIiwiY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIiwiZXhuIiwiY2FsbGJhY2siLCJ3cml0ZXJfMDA0IiwicXVlcnlfaWRfMDAyIiwicmVzcG9uZGVkXzAwNiIsImJuZHNfMDAxJDEiLCJjcmVhdGUiLCJxdWVyeV9pZCIsIndyaXRlciIsImxpZnQiLCJpbXBsIiwiYmluX21zZyIsInN0YXRlIiwic3RyIiwiaW1wbCQwIiwicmVzdWx0X21vZGUiLCJpbXBsJDEiLCJiaW5fcXVlcnkiLCJyZXN1bHRfbW9kZSQwIiwiaW1wbCQyIiwicmVzcCIsImltcGwkMyIsImJpbl91IiwiYmluX2kiLCJiaW5fcSIsImltcGwkNCIsImltcGwkNSIsImltcGwkNiIsInciLCJvZl9jb25uZWN0aW9uX3N0YXRlXzAwOCIsIm9uX2V4Y2VwdGlvbl8wMTgiLCJzaGFwZXNfMDE2IiwiZl8wMTQiLCJ2ZXJzaW9uXzAxMiIsInRhZ18wMTAiLCJhcmdfMDE5IiwiYm5kc18wMDkiLCJhcmdfMDE3IiwiYm5kc18wMDkkMCIsImFyZ18wMTUiLCJibmRzXzAwOSQxIiwiYXJnXzAxMyIsImJuZHNfMDA5JDIiLCJhcmdfMDExIiwiYm5kc18wMDkkMyIsImRlc2NyaXB0aW9uIiwibGlmdCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiZGF0YSIsImFkZF9sZW4kMCIsImFkZF9sZW4kMSIsImUkMCIsImUiLCJhcmdfMDE4Iiwic3ltYm9sIiwiZGVmZXJfcmVzdWx0IiwiZCIsImQkMCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAzMCIsImJuZHNfMDA4IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmdfMDI0IiwiYm5kc18wMDgkMCIsImFyZ18wMjIiLCJibmRzXzAwOCQxIiwiYXJnXzAyMCIsImJuZHNfMDA4JDIiLCJibmRzXzAwOCQzIiwiYXJnXzAxNiIsImJuZHNfMDA4JDQiLCJhcmdfMDE0IiwiYm5kc18wMDgkNSIsImFyZ18wMTIiLCJibmRzXzAwOCQ2IiwiYXJnXzAxMCIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJpZCIsInJlc3VsdCIsInNleHAiLCJ4XzAzNCIsIndyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX2RhdGEiLCJiaW5fd3JpdGVfdm9pZCIsImJ1ZmZlciIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hcyIsImJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIiwic3RyX2xlbiIsIm5leHQiLCJiaW5fc2l6ZV9uYXQwX2hlYWRlciIsImhlYWRlcl9wcmVmaXgiLCJkYXRhX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuIiwic3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuIiwiYmluX3dyaXRlX25hdDBfaGVhZGVyIiwiYmluX3dyaXRlcl9uYXQwX2hlYWRlciIsImJpbl9zaXplX21lc3NhZ2UiLCJiaW5fd3JpdGVfbWVzc2FnZSIsImJpbl93cml0ZXJfbWVzc2FnZSIsImJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyIsImluc3RhbmNlIiwiY2xvc2VkIiwid3JpdGVfZW9mIiwid3JpdGVfbWVzc2FnZSQwIiwic3RyZWFtX3dyaXRlciIsImNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbiIsImdyb3VwcyIsImVsZW1lbnRfaW5fZ3JvdXAiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQwIiwiaW5zdGFuY2UkMCIsIndyaXRlJDEiLCJtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24iLCJvbl9leGNlcHRpb24iLCJhcHBseV9pbXBsZW1lbnRhdGlvbiIsImltcGxlbWVudGF0aW9uIiwicXVlcnkiLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJiaW5fcXVlcnlfcmVhZGVyIiwicXVlcnlfY29udGVudHMiLCJleG4kMCIsImYkMCIsImxlbiQwIiwiZiQxIiwiYmluX3Jlc3BvbnNlX3dyaXRlciIsImJpbl9xdWVyeV9yZWFkZXIkMCIsInF1ZXJ5X2NvbnRlbnRzJDAiLCJkYXRhJDAiLCJleG4kMSIsImJhY2t0cmFjZSIsImYkMiIsInJlc3BvbmRlciIsImlzX3VuY2F1Z2h0X2V4biIsInJlc3VsdCQwIiwiY2hlY2tfcmVzcG9uZGVkIiwiciIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciQxIiwic3RyZWFtX3F1ZXJ5IiwibGVuJDEiLCJkYXRhJDEiLCJmJDMiLCJpbXBsX3dpdGhfc3RhdGUiLCJmJDYiLCJ3cml0ZXIkMCIsInJ1bl9pbXBsIiwic3BsaXRfb2siLCJoYW5kbGVfb2siLCJvayIsImluaXRpYWwiLCJmJDQiLCJwaXBlX3IiLCJmJDUiLCJmbHVzaCIsImFjYyIsInByb2R1Y2Vyc19mbHVzaGVkIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsInRhZyIsImlfcyIsImR1cHMiLCJpIiwiaW5zdGFudGlhdGUiLCJjb25uZWN0aW9uX3N0YXRlIiwidW5wYWNrZWQiLCJjcmVhdGVfZXhuIiwibnVsbCQwIiwiYWRkX2V4biIsImRlc2MiLCJhZGQiLCJpbXBsZW1lbnRhdGlvbnMkMCIsIm9uX3Vua25vd25fcnBjJDAiLCJjYWxsIiwiZXhwZXJ0IiwiY2Fubm90X3NlbmQiLCJ4XzAzOSIsIm1hcmtfcmVzcG9uZGVkIiwic2NoZWR1bGUiLCJoZWFkZXIiLCJoYW5kbGVfc2VuZF9yZXN1bHQkMCIsIndyaXRlX2JpZ3N0cmluZyIsIndyaXRlX2Jpbl9wcm90IiwibXNnIiwiZXJyb3Jfc291cmNlXzA0NiIsIm5lZ290aWF0ZSQwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJ0X29mX3NleHAkMCIsInNleHBfMDMzIiwiZmllbGRfc2V4cHNfMDM0IiwidGltZW91dF8wMzUiLCJzZW5kX2V2ZXJ5XzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNDgiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA0OSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDQiLCJzZW5kX2V2ZXJ5XzAzOCIsInRpbWVvdXRfMDM2Iiwic2VuZF9ldmVyeV8wNTMiLCJ0aW1lb3V0XzA1MSIsImFyZ18wNTQiLCJibmRzXzA1MCIsImFyZ18wNTIiLCJibmRzXzA1MCQwIiwidl90aW1lb3V0Iiwidl9zZW5kX2V2ZXJ5Iiwic2VuZF9ldmVyeSIsInRpbWVvdXQiLCJzdGgkMCIsImhlYXJ0YmVhdF9jb25maWdfMDYzIiwiZGVzY3JpcHRpb25fMDYxIiwiaGVhcnRiZWF0X2NhbGxiYWNrc18wNjUiLCJsYXN0X3NlZW5fYWxpdmVfMDY3IiwiaGVhcnRiZWF0X2V2ZW50XzA4MyIsInRpbWVfc291cmNlXzA4MSIsImltcGxlbWVudGF0aW9uc19pbnN0YW5jZV8wNzkiLCJjbG9zZV9maW5pc2hlZF8wNzciLCJjbG9zZV9zdGFydGVkXzA3NSIsIm9wZW5fcXVlcmllc18wNzMiLCJ3cml0ZXJfMDcxIiwicmVhZGVyXzA2OSIsImFyZ18wODQiLCJibmRzXzA2MCIsImFyZ18wODIiLCJibmRzXzA2MCQwIiwiYXJnXzA4MCIsImJuZHNfMDYwJDEiLCJhcmdfMDc4IiwiYm5kc18wNjAkMiIsImFyZ18wNzYiLCJibmRzXzA2MCQzIiwiYXJnXzA3NCIsImJuZHNfMDYwJDQiLCJhcmdfMDcyIiwiYm5kc18wNjAkNSIsImFyZ18wNzAiLCJibmRzXzA2MCQ2IiwiYXJnXzA2OCIsImJuZHNfMDYwJDciLCJhcmdfMDY2IiwiYm5kc18wNjAkOCIsInRpbWVvdXRfMDU2Iiwic2VuZF9ldmVyeV8wNTgiLCJhcmdfMDU5IiwiYm5kc18wNTUiLCJhcmdfMDU3IiwiYm5kc18wNTUkMCIsImFyZ18wNjQiLCJibmRzXzA2MCQ5IiwiYXJnXzA2MiIsImJuZHNfMDYwJDEwIiwic2V4cF9vZl90X2h1bV93cml0ZXIiLCJ4XzA4NSIsImRpc3BhdGNoIiwicmVzcG9uc2VfaGFuZGxlciIsImJpbl93cml0ZXJfcXVlcnkiLCJtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyIsImRvX3NlbmQiLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImVycm9yJDAiLCJkdW1teV9idWZmZXIiLCJkdW1teV9yZWYiLCJjb250YWluc19tYWdpY19wcmVmaXgiLCJjcmVhdGUkMCIsImhhbmRzaGFrZV90aW1lb3V0IiwiaGVhcnRiZWF0X2NvbmZpZyIsInN0aCQxIiwic3RoJDIiLCJ0aW1lX3NvdXJjZSIsIndyaXRlciQxIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODgiLCJoZWFydGJlYXRfZnJvbV9ub3dfb24iLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJwZWVyIiwid2l0aF9jbG9zZSIsInRyYW5zcG9ydCIsImRpc3BhdGNoX3F1ZXJpZXMiLCJvbl9oYW5kc2hha2VfZXJyb3IiLCJoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIiwidCQwIiwic2VydmVyX3dpdGhfY2xvc2UiLCJvbl9oYW5kc2hha2VfZXJyb3IkMCIsImVycm9yX3NvdXJjZV8wMDkiLCJlcnJvcl9zb3VyY2VfMDI0Iiwic3ltYm9sJDAiLCJkaXNwYXRjaF9yYXciLCJjb25uIiwicXVlcnkkMCIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInNoYXBlcyIsImxzdCIsInNoYXBlIiwicXVlcnlfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQiLCJzaGFwZXMkMCIsImltcGxlbWVudCIsImltcGxlbWVudCQwIiwicmVzcG9uc2UkMCIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IiLCJkaXNwYXRjaCQwIiwiZGlzcGF0Y2hfZXhuIiwibWFrZV9kaXNwYXRjaCIsImRvX2Rpc3BhdGNoIiwicnBjX3RhZyIsImhhbmRsZV9yZXNwb25zZSIsImhhbmRsZV9lcnJvciIsInhfMDAyIiwiZGlzcGF0Y2gkMSIsInNjaGVkdWxlX2Rpc3BhdGNoIiwiaW1wbGVtZW50JDEiLCJpbXBsZW1lbnQkMiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uIiwiaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24kMCIsInZlcnNpb24kMCIsIm5hbWUkMCIsIm1zZ190eXBlX2lkIiwic2hhcGVzJDEiLCJkZXNjcmlwdGlvbiQwIiwiaW1wbGVtZW50JDMiLCJkaXNwYXRjaCQyIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciQwIiwiZGlzcGF0Y2gkMyIsImRpc3BhdGNoX2V4biQwIiwiaW1wbGVtZW50JDQiLCJkaXNwYXRjaCQ0Iiwic2NoZWR1bGVfZGlzcGF0Y2gkMCIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNyZWF0ZSQxIiwiY2xpZW50X3B1c2hlc19iYWNrIiwiYmluX2luaXRpYWxfcmVzcG9uc2UiLCJiaW5fdXBkYXRlX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2UiLCJhbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlIiwiY2xpZW50X3B1c2hlc19iYWNrJDAiLCJpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQiLCJ1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCIsImVycm9yX3Jlc3BvbnNlX3R5cGVfaWQiLCJtYWtlX2luaXRpYWxfbWVzc2FnZSIsImltcGxlbWVudF9nZW4iLCJpbXBsZW1lbnQkNSIsImMiLCJhYm9ydCIsInJlYWRfZXJyb3IiLCJoYW5kbGVyIiwiY29yZV9lcnIiLCJkaXNwYXRjaF9nZW4iLCJtYWtlX3VwZGF0ZV9oYW5kbGVyIiwiaW5pdGlhbF9zdGF0ZSIsImluaXRpYWxfaGFuZGxlciIsImVyciQxIiwiaW5pdGlhbF9tc2ciLCJpbml0aWFsJDAiLCJleHRyYSIsImhhbmRsZXIkMCIsImJpbl9yZWFkZXJfdXBkYXRlIiwiZXJyJDQiLCJlcnIkMyIsImVyciQyIiwiZGlzcGF0Y2gkNSIsImluaXQiLCJwaXBlX21ldGFkYXRhIiwicGlwZV93IiwiY3JlYXRlJDIiLCJiaW5fcXVlcnkkMCIsImJpbl9yZXNwb25zZSQwIiwiaW1wbGVtZW50JDYiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsImNyZWF0ZSQ0IiwiYiIsImJ1ZmZlciQwIiwib25lIiwib25lJDAiLCJ3cml0ZXJfZWxlbWVudF9pbl9ncm91cCIsImdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIiwicmVtb3ZlIiwidG9fbGlzdCIsImZsdXNoZWRfb3JfY2xvc2VkIiwiZGlyZWN0X3N0cmVhbV93cml0ZXIiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrJDEiLCJpbXBsZW1lbnRfZGlyZWN0IiwiZGlzcGF0Y2gkNiIsIm1ldGFkYXRhIiwiZGlzcGF0Y2hfZXhuJDEiLCJwaXBlX2FuZF9pZCIsImRpc3BhdGNoX2l0ZXIiLCJuYW1lJDEiLCJ2ZXJzaW9uJDEiLCJkZXNjcmlwdGlvbiQxIiwicXVlcnlfdHlwZV9pZCQwIiwiZXJyb3JfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQkMCIsImNyZWF0ZSQ1IiwiYmluX3N0YXRlIiwiYmluX3VwZGF0ZSIsImJpbl9xdWVyeSQxIiwiYmluX2Vycm9yJDAiLCJkaXNwYXRjaCQ3IiwidXBkYXRlX3IiLCJuYW1lJDIiLCJ2ZXJzaW9uJDIiLCJkZXNjcmlwdGlvbiQyIiwicXVlcnlfdHlwZV9pZCQxIiwic3RhdGVfdHlwZV9pZCIsInVwZGF0ZV90eXBlX2lkIiwiZXJyb3JfdHlwZV9pZCQwIiwiZGVzY3JpcHRpb24kMyIsInJwYyIsInJwYyQwIiwicnBjJDEiLCJycGMkMiIsInRoZV9ycGMiLCJub3RfdGhlX3JwYyIsInJwY19uYW1lJDAiLCJpbnB1dCIsImNvbnZlcnQiLCJmYWlsZWRfY29udmVyc2lvbiIsImFyZzNfMDA2IiwiYXJnMl8wMDUiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDciLCJ2XzAwMSIsInJlczFfMDA4Iiwidl8wMDIiLCJyZXMyXzAwOSIsInJlczNfMDEwIiwibXVsdGlwbGVfcmVnaXN0cmF0aW9ucyIsImFyZzFfMDE0Iiwidl8wMTEiLCJ2XzAxMiIsInJlczFfMDE2IiwiYWRhcHRlciIsImFkYXB0ZXJzIiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczFfMDI0IiwiYWRhcHRlcnMkMCIsImFkZF9ycGNfdmVyc2lvbiIsIm9sZF9ycGMiLCJ1cGdyYWRlIiwiZG93bmdyYWRlIiwiYWRhcHQiLCJmbiIsImFkYXB0ZWQiLCJvbGRfcXVlcnkiLCJhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIiwidXBncmFkZV9vcl9lcnJvciIsImRvd25ncmFkZV9vcl9lcnJvciIsInZhbHVlIiwiYWRkX3ZlcnNpb24iLCJhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJyZWdpc3RyeSIsImltcGxlbWVudF9tdWx0aSIsImxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpbyIsImxvZ192ZXJzaW9uIiwicnBjcyIsInZlcnNpb25zIiwicSQwIiwiciQwIiwiaW1wbGVtZW50X211bHRpX2dlbiIsImltcGxlbWVudF9kaXJlY3RfbXVsdGkiLCJ3cmFwcGVkX21vZGVsX29mX3F1ZXJ5Iiwid3JhcHBlZF9lcnJvcl9vZl9tb2RlbCIsImNvbnZlcnRfZWx0IiwiZHN3IiwiY29udmVydF9waXBlIiwibW9kZWxfc3RhdGUiLCJzdGF0ZSQwIiwiYmluX3NoYXBlX3F1ZXJ5IiwiYmluX3NpemVfcXVlcnkiLCJiaW5fd3JpdGVfcXVlcnkiLCJiaW5fcmVhZF9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5JDAiLCJiaW5fcmVhZGVyX3F1ZXJ5IiwiYmluX3NoYXBlX3N0YXRlIiwiYmluX3NpemVfc3RhdGUiLCJiaW5fd3JpdGVfc3RhdGUiLCJiaW5fd3JpdGVyX3N0YXRlIiwiYmluX3JlYWRfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSQwIiwiYmluX3JlYWRlcl9zdGF0ZSIsImJpbl9zaGFwZV91cGRhdGUiLCJiaW5fc2l6ZV91cGRhdGUiLCJiaW5fd3JpdGVfdXBkYXRlIiwiYmluX3dyaXRlcl91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciIsImJpbl9zaXplX2Vycm9yIiwiYmluX3dyaXRlX2Vycm9yIiwiYmluX3JlYWRfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciQwIiwibW9kZWxfb2ZfcXVlcnkiLCJzdGF0ZV9vZl9tb2RlbCIsImVycm9yX29mX21vZGVsIiwidXBkYXRlX29mX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlIiwiYmluX3NpemVfcmVzcG9uc2UiLCJiaW5fd3JpdGVfcmVzcG9uc2UiLCJiaW5fcmVhZF9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlJDAiLCJyZXNwb25zZV9vZl9tb2RlbCIsImFkZCQwIiwiaW1wbHMiLCJtZW51IiwibWVudV9pbXBscyIsInN1cHBvcnRlZF9ycGNzIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwib2ZfZW50cmllcyIsImVudHJpZXMiLCJyZXF1ZXN0IiwiY29ubmVjdGlvbiIsImNyZWF0ZV9kaXJlY3RseSIsIm1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIiwiY2FsbGVyX3ZlcnNpb25zIiwiY2FsbGVlX3ZlcnNpb25zIiwiY2FsbGVlX21lbnUiLCJ3aXRoX3NwZWNpZmljX3ZlcnNpb24iLCJkaXNwYXRjaGVyIiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwid2l0aF92ZXJzaW9uX21lbnUiLCJkaXNwYXRjaF9tdWx0aSIsImNvbm5fd2l0aF9tZW51IiwibXEiLCJxdWVyeV9vZl9tb2RlbCIsIm1vZGVsX29mX3Jlc3BvbnNlIiwiZGlzcGF0Y2hfaXRlcl9tdWx0aSIsImFib3J0X211bHRpIiwid3JhcHBlZF9xdWVyeV9vZl9tb2RlbCIsImNvbnZlcnRfcmVzdWx0IiwiY29udmVydF9vayIsIm1lc3NhZ2UiLCJ1IiwicnMiLCJtb2RlbF9vZl9zdGF0ZSIsIm1vZGVsX29mX2Vycm9yIiwibW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwiY2FsbGVlX21vZGVsX29mX3F1ZXJ5Iiwic3RhdGVfb2ZfY2FsbGVlX21vZGVsIiwiZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIiwidXBkYXRlX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9xdWVyeSQwIiwiYmluX3NpemVfcXVlcnkkMCIsImJpbl93cml0ZV9xdWVyeSQwIiwiYmluX3dyaXRlcl9xdWVyeSQwIiwiYmluX3JlYWRfcXVlcnkkMSIsImJpbl9yZWFkX3F1ZXJ5JDIiLCJiaW5fcmVhZGVyX3F1ZXJ5JDAiLCJiaW5fc2hhcGVfc3RhdGUkMCIsImJpbl9zaXplX3N0YXRlJDAiLCJiaW5fd3JpdGVfc3RhdGUkMCIsImJpbl93cml0ZXJfc3RhdGUkMCIsImJpbl9yZWFkX3N0YXRlJDEiLCJiaW5fcmVhZF9zdGF0ZSQyIiwiYmluX3JlYWRlcl9zdGF0ZSQwIiwiYmluX3N0YXRlJDAiLCJiaW5fc2hhcGVfdXBkYXRlJDAiLCJiaW5fc2l6ZV91cGRhdGUkMCIsImJpbl93cml0ZV91cGRhdGUkMCIsImJpbl93cml0ZXJfdXBkYXRlJDAiLCJiaW5fcmVhZF91cGRhdGUkMSIsImJpbl9yZWFkX3VwZGF0ZSQyIiwiYmluX3JlYWRlcl91cGRhdGUkMCIsImJpbl91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJxdWVyeV9vZl9jYWxsZXJfbW9kZWwiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwicmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlJDAiLCJiaW5fc2l6ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlX3Jlc3BvbnNlJDAiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlJDAiLCJiaW5fcmVhZF9yZXNwb25zZSQxIiwiYmluX3JlYWRfcmVzcG9uc2UkMiIsImJpbl9yZWFkZXJfcmVzcG9uc2UkMCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsInBpcGVfcmVhZCIsInhfMDA3Iiwib2ZfYV8wMDEiLCJidWZmZXJfMDA1IiwicGlwZV8wMDMiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlJDAiLCJ0b3RhbF9sZW4iLCJjb250aW51ZV9vcl93YWl0IiwibGVuZ3RoJDAiLCJzZXRfYnVmZmVyIiwicHJvY2Vzc19kYXRhIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSIsInByb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE1Iiwib2ZfYV8wMDkiLCJtb25pdG9yXzAxMyIsInBpcGVfMDExIiwiYm5kc18wMTAiLCJibmRzXzAxMCQwIiwiY2hlY2tfY2xvc2VkIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJjcmVhdGVfbWVzc2FnZSIsIm9uX21lc3NhZ2VfY291bnQiLCJnb3QiLCJzZXhwaWZpZXIiLCJlcXVhbCIsIm1lc3NhZ2UkMCIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMTYiLCJiXzAxNyIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJnb3QkMCIsInNleHBpZmllciQwIiwiZXF1YWwkMCIsImhlcmUkMCIsImNvbXBhcmF0b3IkMCIsIndyaXRlXzFfbXNnXzFfY2h1bmsiLCJ3cml0ZV8xX21zZ18zX2NodW5rIiwibXNnX2xlbiIsInNwbGl0X2F0IiwicGFydDEiLCJwYXJ0MiIsIndyaXRlXzJfbXNnXzFfY2h1bmsiLCJvbmVfbXNnIiwidHdvX21zZyIsIndyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZSIsIm51bSIsInN0b3BfYWZ0ZXJfb25fbWVzc2FnZSIsImFfMDIyIiwiYl8wMjMiLCJleHBlY3QiLCJhXzAyNiIsImJfMDI3Iiwib25lX21lc3NhZ2UiLCJ0d29fbWVzc2FnZXMiLCJvbmVfbWVzc2FnZV9wMSIsIm9uZV9tZXNzYWdlX3AyIiwicnBjX2Nvbm5lY3Rpb24iLCJjbG9zZV9maW5pc2hlZCQwIiwic3RyaW5nX2FmdGVyIiwicyIsIm4iLCJxdW90ZSIsImxlbiIsImJ1ZiIsImkiLCJjIiwib2ZfY2hhciIsImZ1bGxfc3BsaXQiLCJzdHIiLCJvbiIsInNlcCIsImxvb3AiLCJhY2MiLCJvZmZzZXQiLCJpbmRleCIsInRva2VuIiwic3BsaXQiLCJtYXgiLCJtYXgkMCIsInRva2VucyIsImxvb3AkMCIsInRyaW1fbGVmdF9zdWIiLCJsYXN0X2NoYXIiLCJjaGFycyIsImZpbmFsJDAiLCJsYXN0X2NoYXIkMCIsImkkMCIsImxhc3RfY2hhciQxIiwibmV3X2xlbiIsInNwbGl0X3RyaW1fbGVmdCIsInRyaW0iLCJ0cmltX2xlZnQiLCJub25fc3BhY2UiLCJmaW5kX2Zyb20iLCJvcHQiLCJwYXR0ZXJuIiwic3RoIiwic3RhcnQiLCJzdGFydCQwIiwicmVwbGFjZV9hbGwiLCJ3aXRoJDAiLCJwbGVuIiwic2xlbiIsImoiLCJyZXBsYWNlX2FsbF9hc3NvYyIsInRibCIsImZvdW5kIiwiZiQwIiwiZiIsInhzJDAiLCJ4JDEiLCJ4IiwiZngiLCJ4cyIsIngkMCIsImZ4JDAiLCJlIiwiaiQxIiwid2l0aCQyIiwicGF0dGVybiQxIiwiciIsIndpdGgkMSIsInBhdHRlcm4kMCIsImokMCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCIsImkkMSIsImFjYyQwIiwib2ZfYXJyYXkiLCJhIiwiYnl0ZXMiLCJ0b19hcnJheSIsImN1dCIsInNlcF9tYXgiLCJzX21heCIsImsiLCJsZWZ0X2VuZCIsInJpZ2h0X3N0YXJ0IiwicmN1dCIsInNlcF9zdGFydCIsImNob3BfcHJlZml4IiwicHJlZml4IiwicHJlZml4X2wiLCJzdHJpbmdfbCIsImRyb3AiLCJ0YWtlIiwiY3JlYXRlIiwic2l6ZSIsImVtcHR5IiwibGVuZ3RoIiwic3ViIiwiaW52YWxpZF9ib3VuZHMiLCJvcCIsImJ1ZmZlcl9sZW4iLCJvZmYiLCJsZW4iLCJtZXNzYWdlIiwiaW52YWxpZF9ib3VuZHNfYmxpdCIsInNyY19sZW4iLCJzcmNfb2ZmIiwiZHN0X2xlbiIsImRzdF9vZmYiLCJpbnZhbGlkX2JvdW5kc19tZW1jbXAiLCJidWYxX2xlbiIsImJ1ZjFfb2ZmIiwiYnVmMl9sZW4iLCJidWYyX29mZiIsImNvcHkiLCJ0IiwiZHN0Iiwic3Vic3RyaW5nIiwiYiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInMiLCJibGl0Iiwic3JjIiwiYmxpdF9mcm9tX3N0cmluZyIsImJsaXRfZnJvbV9ieXRlcyIsImJsaXRfdG9fYnl0ZXMiLCJtZW1jbXAiLCJidWYxIiwiYnVmMiIsIm1lbWNtcF9zdHJpbmciLCJtZW1jaHIiLCJidWYiLCJidWZfb2ZmIiwiY2hyIiwiYnVmX2xlbiIsImNhbWxfYmlnc3RyaW5nX3NldF8xNiIsImJzIiwiaSIsImNhbWxfYmlnc3RyaW5nX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX2dldF8xNiIsImNhbWxfYmlnc3RyaW5nX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX2dldF82NCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwieCIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQ2NF9iZSIsInNldF9pbnQ2NF9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCQwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50NjRfYmUiLCJnZXRfaW50NjRfbGUiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3NldF9pbnQxNl9sZSIsInVuc2FmZV9zZXRfaW50MzJfYmUiLCJ1bnNhZmVfc2V0X2ludDMyX2xlIiwidW5zYWZlX3NldF9pbnQ2NF9iZSIsInVuc2FmZV9zZXRfaW50NjRfbGUiLCJ1bnNhZmVfZ2V0X2ludDE2X2JlIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCQwIiwidW5zYWZlX2dldF9pbnQzMl9iZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInN0YXRlX3RvX29wdGlvbiIsIngiLCJ2IiwiZmFpbF90b19zdHJpbmciLCJtYXJrcyIsImVyciIsInN0YXRlX3RvX3Jlc3VsdCIsImNyZWF0ZSIsImJ1ZmZlciIsIm9mZiIsImxlbiIsImNvbW1pdHRlZF9ieXRlcyIsImxlbmd0aCIsInQiLCJjbGllbnRfY29tbWl0dGVkX2J5dGVzIiwicGFyc2VyX2NvbW1pdHRlZF9ieXRlcyIsImJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IiwicGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIiwiaW52YXJpYW50Iiwib2Zmc2V0X2luX2J1ZmZlciIsInBvcyIsImFwcGx5IiwiZiIsInVuc2FmZV9nZXRfY2hhciIsInVuc2FmZV9nZXRfaW50MTZfbGUiLCJ1bnNhZmVfZ2V0X2ludDMyX2xlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQ2NF9iZSIsImNvdW50X3doaWxlIiwiaSIsImxpbWl0IiwiY29tbWl0IiwiZmFpbF9rIiwiaW5wdXQiLCJtc2ciLCJzdWNjZWVkX2siLCJ0b19leHBvcnRlZF9zdGF0ZSIsImNvbnRpbnVlJDAiLCJjb21taXR0ZWQiLCJicyIsIm1vcmUiLCJ4JDAiLCJzIiwic2wiLCJpJDAiLCJwYXJzZSIsInAiLCJwYXJzZV9iaWdzdHJpbmciLCJpbnB1dCQwIiwicmV0dXJuJDAiLCJmYWlsIiwic3VjYyIsInN5bWJvbF9iaW5kIiwic3VjYyQwIiwic3ltYm9sX21hcCIsInN5bWJvbCIsIm0iLCJzeW1ib2wkMCIsInN1Y2MwIiwiaW5wdXQwIiwicG9zMCIsIm1vcmUwIiwic3VjYzEiLCJpbnB1dDEiLCJwb3MxIiwibW9yZTEiLCJsaWZ0IiwibGlmdDIiLCJtMSIsIm0yIiwic3VjYzIiLCJpbnB1dDIiLCJwb3MyIiwibW9yZTIiLCJsaWZ0MyIsIm0zIiwic3VjYzMiLCJpbnB1dDMiLCJwb3MzIiwibW9yZTMiLCJsaWZ0NCIsIm00Iiwic3VjYzQiLCJpbnB1dDQiLCJwb3M0IiwibW9yZTQiLCJzeW1ib2wkMSIsImEiLCJiIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsIm1hcmsiLCJmYWlsJDAiLCJzeW1ib2wkNCIsInEiLCJwb3MkMCIsIm1vcmUkMCIsInJldHVybiQxIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJsaWZ0MiQwIiwibGlmdDMkMCIsImxpZnQ0JDAiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwib2ZfYmlnc3RyaW5nIiwiYnVmIiwid3JpdGFibGVfc3BhY2UiLCJlbnN1cmUiLCJ0b19jb3B5Iiwib2xkX2xlbiIsIm5ld19sZW4iLCJzcGFjZSIsIm5ld19idWYiLCJ3cml0ZV9wb3MiLCJmZWVkX3N0cmluZyIsInN0ciIsImZlZWRfYmlnc3RyaW5nIiwiZmVlZF9pbnB1dCIsInNoaWZ0IiwibiIsImZvcl9yZWFkaW5nIiwidW5jb25zdW1lZCIsIm9wdCIsInN0aCIsIm9mX3VuY29uc3VtZWQiLCJmcm9tX3VuYnVmZmVyZWRfc3RhdGUiLCJidWZmZXJpbmciLCJjb25zdW1lZCIsImNvbnN1bWVkJDAiLCJ1bmNvbnN1bWVkJDAiLCJwYXJzZSQwIiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsImZlZWQiLCJzdGF0ZSIsImsiLCJidWZmZXJpbmckMCIsInN0YXRlX3RvX29wdGlvbiQwIiwic3RhdGVfdG9fcmVzdWx0JDAiLCJzdGF0ZV90b191bmNvbnN1bWVkIiwicHJvbXB0IiwiZGVtYW5kX2lucHV0IiwiZW5zdXJlX3N1c3BlbmRlZCIsImdvIiwidW5zYWZlX2FwcGx5IiwiYXRfZW5kX29mX2lucHV0IiwiZW5kX29mX2lucHV0IiwiYWR2YW5jZSIsImF2YWlsYWJsZSIsInVuc2FmZV9sb29rYWhlYWQiLCJwZWVrX2NoYXIiLCJwZWVrX2NoYXJfZmFpbCIsInNhdGlzZnkiLCJjIiwiY2hhciQwIiwibm90X2NoYXIiLCJjJDAiLCJhbnlfY2hhciIsImludDgiLCJwJDAiLCJhbnlfdWludDgiLCJwJDEiLCJhbnlfaW50OCIsInNraXAiLCJpbml0Iiwid2l0aF9idWZmZXIiLCJpbnB1dF9sZW4iLCJpbml0JDAiLCJjb3VudF93aGlsZTEiLCJzdWNjJDEiLCJmYWlsJDEiLCJzdHJpbmciLCJmJDAiLCJlIiwic3RyaW5nJDAiLCJzdHJpbmdfY2kiLCJza2lwX3doaWxlIiwidGFrZSIsIm4kMCIsInRha2VfYmlnc3RyaW5nIiwidGFrZV9iaWdzdHJpbmdfd2hpbGUiLCJ0YWtlX2JpZ3N0cmluZ193aGlsZTEiLCJ0YWtlX2JpZ3N0cmluZ190aWxsIiwicGVla19zdHJpbmciLCJ0YWtlX3doaWxlIiwidGFrZV93aGlsZTEiLCJ0YWtlX3RpbGwiLCJjaG9pY2UiLCJwcyIsImZhaWx1cmVfbXNnIiwiZml4X2RpcmVjdCIsInIiLCJmaXhfbGF6eSIsIm1heF9zdGVwcyIsInN0ZXBzIiwiZml4Iiwib3B0aW9uIiwiY29ucyIsInhzIiwibGlzdCIsInBzJDAiLCJjb3VudCIsImxvb3AiLCJtYW55IiwibWFueTEiLCJtYW55X3RpbGwiLCJzZXBfYnkxIiwic2VwX2J5Iiwic2tpcF9tYW55Iiwic2tpcF9tYW55MSIsImVuZF9vZl9saW5lIiwic2NhbiIsInN0YXRlJDAiLCJwYXJzZXIiLCJzY2FuJDAiLCJzY2FuX3N0YXRlIiwic2Nhbl9zdHJpbmciLCJjb25zdW1lX3dpdGgiLCJjb25zdW1lZF9iaWdzdHJpbmciLCJib3RoIiwibWFwIiwiYmluZCIsIm1hcDIiLCJtYXAzIiwibWFwNCIsImQiLCJpbnQxNiIsImJ5dGVzIiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJjc3QkMCIsIml0ZXJfY29uY2F0IiwiZm4iLCJzZXAiLCJidWYiLCJsYXN0IiwicmVzdCIsImNvbXBhcmVfb3B0IiwiYyIsInQkMCIsInQiLCJhIiwiYiIsImNvbXBhcmVfbGlzdCIsImYiLCJ0JDIiLCJ0JDEiLCJ4cyIsIngiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwib3B0Iiwic3RoIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwic3RoJDAiLCJ1c2VyaW5mbyIsInN0aCQxIiwiaG9zdCIsInN0aCQyIiwic3RoJDMiLCJxdWVyeV9rZXkiLCJzdGgkNCIsInF1ZXJ5X3ZhbHVlIiwic3RoJDUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfZGVjb2RlZF9vcHQiLCJjb21wYXJlX2hvc3QiLCJoMSIsImgyIiwiaXAyIiwiaXAxIiwiaXAyJDAiLCJpcDEkMCIsImgyJDAiLCJoMSQwIiwiY29tcGFyZSQwIiwiYyQzIiwiYyQxIiwiYyQ0Iiwia3ZsJDAiLCJrdmwiLCJyYXciLCJyYXckMCIsImMkMiIsInZsIiwidmwkMCIsImskMCIsImVxdWFsIiwidW5jYXN0X29wdCIsIm5vcm1hbGl6ZSIsInNjaGVtIiwiaW5pdCIsImhvc3QkMCIsImhvc3QkMSIsInRvX3N0cmluZyIsInVyaSIsImFkZF9wY3Rfc3RyaW5nIiwiZmlyc3Rfc2VnbWVudCIsInEiLCJnZXRfZGVjb2RlZF9vcHQiLCJ3aXRoX3NjaGVtZSIsImgkMCIsImhvc3Rfd2l0aF9kZWZhdWx0IiwiZGVmYXVsdCQwIiwid2l0aF91c2VyaW5mbyIsInVzZXJpbmZvJDAiLCJ1c2VyIiwicGFzc3dvcmQiLCJwYXNzIiwid2l0aF9wYXNzd29yZCIsInJlc3VsdCIsIndpdGhfcG9ydCIsIndpdGhfcGF0aCIsInBhdGgkMCIsIndpdGhfZnJhZ21lbnQiLCJmcmFnIiwicXVlcnkiLCJ2ZXJiYXRpbV9xdWVyeSIsImdldF9xdWVyeV9wYXJhbSIsImdldF9xdWVyeV9wYXJhbSQwIiwid2l0aF9xdWVyeSIsInFfcyIsIndpdGhfcXVlcnkkMCIsImFkZF9xdWVyeV9wYXJhbSIsImFkZF9xdWVyeV9wYXJhbSQwIiwiYWRkX3F1ZXJ5X3BhcmFtcyIsImFkZF9xdWVyeV9wYXJhbXMkMCIsInJlbW92ZV9xdWVyeV9wYXJhbSIsInBhdGhfYW5kX3F1ZXJ5IiwibWF0Y2giLCJzY2hlbWUkMCIsInJlc29sdmUiLCJiYXNlIiwic2NoZW1lJDEiLCJzY2hlbSQwIiwicGF0aF9zdHIiLCJyZWxwYXRoIiwiYnBhdGgiLCJiaG9zdCIsInJicGF0aCIsImNhbm9uaWNhbGl6ZSIsInVyaSQwIiwicHAiLCJwcGYiLCJwcF9odW0iLCJzdHJpbmdfb2ZfY2hhciIsInN0cmluZ19vZl9jaGFyX2xpc3QiLCJjaGFycyIsImlzX2RpZ2l0IiwiaGV4X2RpZ2l0IiwiaGV4YWRlY2ltYWwiLCJjX2RvdCIsImNfYXQiLCJjX2NvbG9uIiwibnVtIiwiZGVjX29jdGV0IiwidGhyZWUiLCJvbmUiLCJpcHY0X2FkZHJlc3MiLCJhZnRlcl9kb3VibGVfY29sb24iLCJkb3VibGVfY29sb24iLCJjb3VudCIsImZpbGxlcl9sZW5ndGgiLCJwYXJ0IiwiaGV4X3BhcnQiLCJzcGxpdF93aXRoIiwidHMiLCJ6cyIsImZvcm1hdF9hZGRyIiwic2VnbWVudHMiLCJzZWdtZW50IiwiYmVmb3JlX2RvdWJsZV9jb2xvbiIsImJlZm9yZSIsInJlcyIsImlwdjYiLCJpcHY2X2FkZHJlc3MiLCJwY3QiLCJkaWdpdHMiLCJwY3RfZW5jb2RlZCIsInN1Yl9kZWxpbXMkMCIsInVucmVzZXJ2ZWQiLCJyZWdfbmFtZSIsImRlY29kZWQiLCJwb3J0JDAiLCJhdXRob3JpdHkiLCJxdWVyeSQwIiwiZnJhZ21lbnQkMCIsInVyaV9yZWZlcmVuY2UiLCJ1cmlfcmVmZXJlbmNlJDAiLCJkZWNvZGVfaG9zdCIsInBhcnNlZCIsInBhcnNlZCQwIiwibWFrZSIsInBhdGgkMSIsIndpdGhfaG9zdCIsIndpdGhfdXJpIiwid2l0aF9wYXRoX29wdCIsIm8iLCJ3aXRoX3F1ZXJ5X29wdCIsIndpdGgkMCIsIm9mX3N0cmluZyIsImxldCQwIiwidG9fdXJpIiwib2ZfdXJpIiwidW5zdXBwb3J0ZWRfc2NoZW1lIiwib2Zfc3RyaW5nJDAiLCJlcnJvciIsInRvX3N0cmluZyQwIiwibWFrZSQwIiwiaG9zdCQyIiwiZXJyb3Jfc291cmNlXzAwNiIsImVycm9yX3NvdXJjZV8wMTgiLCJkZWZhdWx0XzA4MSIsImVycm9yX3NvdXJjZV8wNTUiLCJkZWZhdWx0XzExMSIsImNvbXBvbmVudF9vZl9zZXhwIiwiY29tcG9uZW50X29mX3NleHAkMCIsInNleHBfMDA0IiwiYXRvbV8wMDIiLCJzZXhwX2FyZ3NfMDA1IiwiYXRvbV8wMDIkMCIsImFyZzBfMDE1IiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsInJlczJfMDEzIiwicmVzMF8wMTYiLCJzZXhwXzAxNyIsInNleHBfb2ZfY29tcG9uZW50Iiwidl8wMTkiLCJhcmcyXzAyMiIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwicmVzMl8wMjUiLCJkZWZhdWx0XzA3MyIsImRlZmF1bHRfMDc1IiwiZGVmYXVsdF8wNzciLCJkZWZhdWx0XzA3OSIsImRlZmF1bHRfMDg0IiwidF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJzY2hlbWVfMDI5IiwidXNlcmluZm9fMDMxIiwiaG9zdF8wMzMiLCJwb3J0XzAzNSIsInBhdGhfMDM3IiwicXVlcnlfMDM5IiwiZnJhZ21lbnRfMDQxIiwiZHVwbGljYXRlc18wNDMiLCJleHRyYV8wNDQiLCJzZXhwXzAyNyQwIiwiZmllbGRfc2V4cHNfMDQ3IiwiZmllbGRfbmFtZV8wNDUiLCJ0YWlsXzA4NyIsImZpZWxkX3NleHBfMDQ2JDciLCJmaWVsZF9zZXhwXzA0NiIsInhfMDg4IiwiZmllbGRfc2V4cF8wNDYkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA0NiQxIiwiZnZhbHVlXzA2NiIsImZpZWxkX3NleHBfMDQ2JDIiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDYwIiwiZmllbGRfc2V4cF8wNDYkNCIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA0NiQ1IiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDQ2JDYiLCJmdmFsdWVfMDQ5Iiwic2NoZW1lXzAzMCIsInVzZXJpbmZvXzAzMiIsImhvc3RfMDM0IiwicG9ydF8wMzYiLCJwYXRoXzAzOCIsInF1ZXJ5XzA0MCIsImZyYWdtZW50XzA0MiIsInZfMDg1Iiwidl8wODUkMCIsInZfMDgzIiwidl8wODMkMCIsInZfMDgyIiwidl8wODIkMCIsInZfMDgwIiwidl8wODAkMCIsInZfMDc4Iiwidl8wNzgkMCIsInZfMDc2Iiwidl8wNzYkMCIsInZfMDc0Iiwidl8wNzQkMCIsImRlZmF1bHRfMDkxIiwiZGVmYXVsdF8wOTYiLCJkZWZhdWx0XzEwMSIsImRlZmF1bHRfMTA2IiwiZGVmYXVsdF8xMjQiLCJ0X29mX3NleHAkMCIsInNleHAiLCJ0Iiwic2V4cF9vZl90IiwiZnJhZ21lbnRfMTI1IiwicXVlcnlfMTE2IiwicGF0aF8xMTIiLCJwb3J0XzEwNyIsImhvc3RfMTAyIiwidXNlcmluZm9fMDk3Iiwic2NoZW1lXzA5MiIsImFyZ18xMjciLCJibmRzXzA4OSIsImJuZHNfMDg5JDAiLCJibmRfMTI2IiwiYm5kc18wODkkMSIsImFyZzFfMTE4IiwiYXJnMF8xMTciLCJyZXMwXzExOSIsInJlczFfMTIwIiwiYXJnXzEyMiIsImJuZF8xMjEiLCJhcmdfMTE0IiwiYm5kc18wODkkMiIsImJuZF8xMTMiLCJhcmdfMTA5IiwiYm5kc18wODkkMyIsImJuZF8xMDgiLCJhcmdfMTA0IiwiYm5kc18wODkkNCIsImJuZF8xMDMiLCJhcmdfMDk5IiwiYm5kc18wODkkNSIsImJuZF8wOTgiLCJhcmdfMDk0IiwiYm5kc18wODkkNiIsImJuZF8wOTMiLCJjb21wYXJlIiwiYSIsImIiLCJlcXVhbCIsImlzX3ZhbGlkX2ZpZWxkX25hbWUiLCJzZWVuIiwibmFtZSIsImFueV9vZl9zZXhwIiwicyIsImxpc3QkMCIsInYkMCIsIm5hbWUkMSIsInNlZW4kMiIsInJldl9hY2MiLCJsaXN0IiwicmVzdCIsInJldl9hY2MkMCIsInNlZW4kMCIsInJlc3QkMCIsInYiLCJuYW1lJDAiLCJyZXZfYWNjJDEiLCJzZWVuJDEiLCJsIiwibG9nX3MiLCJzZXhwIiwibG9nX3NfYXNfc3RyaW5nIiwic2V4cF9vZl90IiwiZmllbGQyXzA0MyIsImZpZWxkMV8wNDEiLCJhcmdfMDQ0IiwiYm5kc18wNDAiLCJzb21lX25hbWVfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2IiwiYXJnXzA0MiIsImJuZHNfMDQwJDAiLCJ0b19zdHJpbmciLCJhbnkiLCJzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMiLCJpIiwieF8wNDkiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMF8wNDciLCJyZXMxXzA0OCIsImNvbXBhcmVfY2xvc2VfZXZlbnRfY29kZSIsInNleHBfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImFsbF9vZl9jbG9zZV9ldmVudF9jb2RlIiwiY29tcGFyZSIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsImFjYyIsImwkMCIsImVudW1lcmF0ZV8wMTEiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwibCQyIiwiZW51bWVyYXRlXzAxMCIsImFjYyQyIiwiYWxsIiwibm9ybWFsX2Nsb3N1cmUiLCJvZl9pbnQiLCJjb2RlIiwidG9faW50IiwiY29kZSQwIiwieF8wMzEiLCJ4XzAzMCIsImNsaWVudCIsIm9wdCIsImhlYXJ0YmVhdF9jb25maWciLCJkZXNjcmlwdGlvbiIsImltcGxlbWVudGF0aW9ucyIsInN0aCIsInVyaSIsInNjaGVtZSIsInBvcnQiLCJwb3J0JDAiLCJob3N0IiwibWF0Y2gkMSIsInJlcyIsImgiLCJkZXNjcmlwdGlvbiQwIiwiZnJvbV9zZXJ2ZXJfdyIsImZyb21fc2VydmVyX3IiLCJ0b19zZXJ2ZXJfdyIsInRvX3NlcnZlcl9yIiwiZXJyb3IiLCJ0cmFuc3BvcnQiLCJjb25uZWN0aW9uIiwiZXhuIiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImltcGxlbWVudGF0aW9ucyQwIiwiZXhuJDEiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiYnVmZmVyIiwiZXhuJDAiLCJjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCIsImNsaWVudF9leG4iLCJjcmVhdGVfZnJvbV91cmkiLCJlcXVhbCQwIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJzZXhwX29mX3QkMSIsInhfMDA3IiwiY3JlYXRlX2Zyb21fdXJpX29wdGlvbiIsIm1ldGhvZF9zdHJpbmckMCIsInJlcXVlc3QiLCJvbl9wcm9ncmVzcyIsIm9uX3VwbG9hZF9wcm9ncmVzcyIsInVybCIsImhlYWRlcnMiLCJtZXRob2Rfd2l0aF9hcmdzIiwiYXJncyIsIm1ldGhvZF9zdHJpbmckMSIsInVybCQwIiwidmFsdWUiLCJyZXNwb25zZSIsImNvbnRlbnQiLCJnZXRfaGVhZGVyIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJib2R5IiwiYm9keSQwIiwiYiIsImQiLCJmZCIsImdldCIsImFyZ3VtZW50cyQwIiwicmVzcCIsInBvc3QiLCJyZWFkeV9zdGF0ZV9jaGFuZ2UiLCJjb21wbGV0ZSIsInNsZWVwIiwieWllbGQkMCIsImV4dHJhY3RfanNfZXJyb3IiLCJzdGF0ZSIsInRpbWVvdXRzIiwicnVuX2FmdGVyIiwiZiIsIm1zIiwibG9vcCIsInQiLCJuZXh0X3dha2V1cCIsIm5leHQiLCJub3ciLCJkX21zJDAiLCJlcnIiLCJlcnIkMCIsImRfbXMiLCJhdCIsInJ1bl90aW1lb3V0IiwicnVuIiwibG9nIiwiZXJyJDIiLCJleG4kMiIsImV4biQzIiwiZXJyJDEiLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwiY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0IiwicmlnaHQiLCJsZWZ0X2lzX25vbmUiLCJyaWdodF9pc19ub25lIiwiY3JlYXRlX2V4biIsIm9wdCIsIm51bV9sZWF2ZXMiLCJyZWR1Y2UiLCJzdGgiLCJudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwiLCJ2YWxpZGF0ZV9pbmRleCIsImxlbmd0aCIsInNldF9leG4iLCJjaGlsZF9pbmRleCIsInBhcmVudCIsImdldF9leG4iLCJ4XzAwMiIsImNvbXB1dGVfZXhuIiwic2V4cF9vZl90Iiwic3RlcHMiLCJyIiwiaW5pdCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDEiLCJzdGVwc18wMDUiLCJpbml0XzAwMyIsImJuZHNfMDAyIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJhcmdfMDA2IiwiYm5kc18wMDIkMCIsImFyZ18wMDQiLCJibmRzXzAwMiQxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ2YWx1ZSIsInQkMCIsImF0Iiwic3RlcHMkMSIsImluaXQkMSIsInN0ZXBzJDAiLCJpbml0JDAiLCJ0IiwiY29uc3RhbnQiLCJjcmVhdGVfZXhuIiwidGltZTIiLCJ0aW1lMSIsInhfMDExIiwiY3JlYXRlX2Zyb21fc2VxdWVuY2UiLCJjcmVhdGUiLCJsZW4iLCJsZW5ndGgiLCJ0Iiwic2V0Iiwic2V0X2V4biIsImkiLCJ4IiwiZ2V0IiwiaXNfc29tZSIsImlzX25vbmUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsIml0ZXIiLCJmIiwidiIsIml0ZXJpIiwiYmxpdCIsInNyYyIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY3JlYXRlIiwiaW5kZXgiLCJnZXQiLCJ0Iiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpc19ub25lIiwiaXNfc29tZSIsInNldCIsImJsb2NrIiwic2V4cF9vZl90Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsImtleXNfd2l0aF91bnVzZWRfZGF0YV8wMDYiLCJlbnRyeV9ieV9rZXlfMDA0IiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJyZXBsYWNlIiwiYWRkX2V4biIsInhfMDEwIiwiZmluZCIsImZpbmRfb3JfYWRkIiwiZGVmYXVsdCQwIiwidiIsInNleHBfb2ZfdCIsImNvbmNhdCIsImRlYnVnIiwidGFnIiwiYXJnMF8wMDEiLCJhcmcxXzAwMiIsInNleHBfb2ZfYSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJyZWFsbG9jIiwidCIsImxlbiIsImEiLCJuZXdfdCIsInJlYWxsb2MkMCIsInJlczBfMDA1IiwicmVzMF8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsImNyZWF0ZSIsImYiLCJvZl9jb21wYXJlIiwib2ZfZXF1YWwiLCJwb2x5X2VxdWFsIiwibmV2ZXIiLCJhbHdheXMiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwid2F0Y2hfZnVuIiwidCQwIiwic2V0X2F0X2Z1biIsInZhbHVlX2Z1biIsInhfMDExIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsImZvbGRfdmFsdWVfZnVuIiwiZ290IiwiZXhwZWN0Iiwic2V4cGlmaWVyIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInhfMDI4IiwidXBkYXRlJDAiLCJmX2ludmVyc2UiLCJ1cGRhdGUiLCJjb21wdXRlIiwicmVzdWx0IiwiZm9yY2VfZnVsbF9jb21wdXRlIiwiY2hpbGRfY2hhbmdlZCIsInhfMDMxIiwiY2hpbGRfaW5kZXgiLCJvbGRfdmFsdWVfb3B0IiwiY2hpbGRfYXRfaW5kZXgiLCJ4XzAwMSIsIm51bGwkMCIsImFsYXJtX3ZhbHVlIiwic2V0X2FsYXJtX3ZhbHVlIiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJhbGFybV92YWx1ZSQwIiwiYWxhcm0kMCIsIm1haW5fMDAzIiwiY2hpbGRfMDA1IiwiZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jIiwidmFsdWVfMDA5IiwidXBjb21pbmdfc3RlcHNfMDExIiwiYWxhcm1fMDE3IiwiYWxhcm1fdmFsdWVfMDE5IiwiY2xvY2tfMDIxIiwiYXJnXzAxOCIsImFyZzFfMDE0IiwicmVzMV8wMTYiLCJhcmdfMDEyIiwiYm5kc18wMDIkMyIsImJuZHNfMDAyJDQiLCJibmRzXzAwMiQ1IiwiYm5kc18wMDIkNiIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsInhfMDIzIiwiYWR2YW5jZSIsInRvIiwic3RlcHMkMCIsImExJDAiLCJhMSIsInN0ZXBzIiwic3RlcHMyIiwiYTIiLCJzdGVwX2F0Iiwib2ZfYWNjXzAwMiIsImNoaWxkcmVuXzAwOCIsImluaXRfMDA0IiwiYXJnXzAwOSIsImJuZHNfMDAzIiwiYXJnXzAwNyIsImJuZHNfMDAzJDAiLCJibmRzXzAwMyQxIiwieF8wMTAiLCJhdF8wMDQiLCJtYWluXzAwMiIsImFsYXJtXzAwNiIsImNsb2NrXzAwOCIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbCQwIiwiaW50ZXJ2YWxfMDA2IiwiYmFzZV8wMDQiLCJhbGFybV8wMDgiLCJjbG9ja18wMTAiLCJhcmdfMDExIiwiYm5kc18wMDEkMyIsImludGVydmFsX2Z1biIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsInNldF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJyaHNfc2NvcGUiLCJzZXRfcmhzX3Njb3BlIiwibGhzX2NoYW5nZSIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyQwIiwicmhzX3Njb3BlJDAiLCJsaHNfY2hhbmdlJDAiLCJvZl9iXzAwMiIsIm1haW5fMDA0IiwibGhzX2NoYW5nZV8wMTAiLCJsaHNfMDA4IiwicmhzXzAxMiIsInJoc19zY29wZV8wMTQiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNfMDE2IiwiYm5kc18wMDMkMiIsImJuZHNfMDAzJDMiLCJibmRzXzAwMyQ0IiwiYm5kc18wMDMkNSIsInNhbWUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc19mdW4iLCJub2RlIiwicmhzX3Njb3BlX2Z1biIsImxoc19jaGFuZ2VfZnVuIiwieF8wMTgiLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJleHBlY3QkMCIsImVxdWFsJDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJ0b3AiLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsImN1cnJlbnRfYnJhbmNoX2Z1biIsInRlc3RfY2hhbmdlX2Z1biIsInhfMDE1IiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsImJlZm9yZV9mdW4iLCJ4XzAxMyIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiYmluZF9yaHNfY2hpbGRfaW5kZXgiLCJmcmVlemVfY2hpbGRfaW5kZXgiLCJpZl9icmFuY2hfY2hpbGRfaW5kZXgiLCJqb2luX3Joc19jaGlsZF9pbmRleCIsIml0ZXJpX2NoaWxkcmVuIiwicmhzIiwiaSQwIiwidGVzdCIsImxocyIsInJocyQwIiwibm9kZTAiLCJjaGlsZCQwIiwiY2hpbGRyZW4kMSIsImkkMSIsIm5vZGUxIiwibm9kZTAkMCIsIm5vZGUyIiwibm9kZTEkMCIsIm5vZGUwJDEiLCJub2RlMyIsIm5vZGUyJDAiLCJub2RlMSQxIiwibm9kZTAkMiIsIm5vZGU0Iiwibm9kZTMkMCIsIm5vZGUyJDEiLCJub2RlMSQyIiwibm9kZTAkMyIsIm5vZGU1Iiwibm9kZTQkMCIsIm5vZGUzJDEiLCJub2RlMiQyIiwibm9kZTEkMyIsIm5vZGUwJDQiLCJub2RlNiIsIm5vZGU1JDAiLCJub2RlNCQxIiwibm9kZTMkMiIsIm5vZGUyJDMiLCJub2RlMSQ0Iiwibm9kZTAkNSIsIm5vZGU3Iiwibm9kZTYkMCIsIm5vZGU1JDEiLCJub2RlNCQyIiwibm9kZTMkMyIsIm5vZGUyJDQiLCJub2RlMSQ1Iiwibm9kZTAkNiIsIm5vZGU4Iiwibm9kZTckMCIsIm5vZGU2JDEiLCJub2RlNSQyIiwibm9kZTQkMyIsIm5vZGUzJDQiLCJub2RlMiQ1Iiwibm9kZTEkNiIsIm5vZGUwJDciLCJub2RlOSIsIm5vZGU4JDAiLCJub2RlNyQxIiwibm9kZTYkMiIsIm5vZGU1JDMiLCJub2RlNCQ0Iiwibm9kZTMkNSIsIm5vZGUyJDYiLCJub2RlMSQ3Iiwibm9kZTAkOCIsIm5vZGUxMCIsIm5vZGU5JDAiLCJub2RlOCQxIiwibm9kZTckMiIsIm5vZGU2JDMiLCJub2RlNSQ0Iiwibm9kZTQkNSIsIm5vZGUzJDYiLCJub2RlMiQ3Iiwibm9kZTEkOCIsIm5vZGUwJDkiLCJub2RlMTEiLCJub2RlMTAkMCIsIm5vZGU5JDEiLCJub2RlOCQyIiwibm9kZTckMyIsIm5vZGU2JDQiLCJub2RlNSQ1Iiwibm9kZTQkNiIsIm5vZGUzJDciLCJub2RlMiQ4Iiwibm9kZTEkOSIsIm5vZGUwJDEwIiwibm9kZTEyIiwibm9kZTExJDAiLCJub2RlMTAkMSIsIm5vZGU5JDIiLCJub2RlOCQzIiwibm9kZTckNCIsIm5vZGU2JDUiLCJub2RlNSQ2Iiwibm9kZTQkNyIsIm5vZGUzJDgiLCJub2RlMiQ5Iiwibm9kZTEkMTAiLCJub2RlMCQxMSIsIm5vZGUxMyIsIm5vZGUxMiQwIiwibm9kZTExJDEiLCJub2RlMTAkMiIsIm5vZGU5JDMiLCJub2RlOCQ0Iiwibm9kZTckNSIsIm5vZGU2JDYiLCJub2RlNSQ3Iiwibm9kZTQkOCIsIm5vZGUzJDkiLCJub2RlMiQxMCIsIm5vZGUxJDExIiwibm9kZTAkMTIiLCJub2RlMTQiLCJub2RlMTMkMCIsIm5vZGUxMiQxIiwibm9kZTExJDIiLCJub2RlMTAkMyIsIm5vZGU5JDQiLCJub2RlOCQ1Iiwibm9kZTckNiIsIm5vZGU2JDciLCJub2RlNSQ4Iiwibm9kZTQkOSIsIm5vZGUzJDEwIiwibm9kZTIkMTEiLCJub2RlMSQxMiIsIm5vZGUwJDEzIiwic2xvd19nZXRfY2hpbGQiLCJpbmRleCIsImFyZzFfMzA2IiwiYXJnMF8zMDUiLCJyZXMwXzMwNyIsInJlczFfMzA4IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luIiwic2V0X215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luIiwic2V0X215X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hIiwib2JzZXJ2ZXJzIiwic2V0X29ic2VydmVycyIsInNldF9vbGRfdmFsdWVfb3B0IiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwic2V0X25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2giLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X25leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJwcmV2X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X3ByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X2hlaWdodCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwic2V0X25leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwiY3JlYXRlZF9pbiIsInNldF9jcmVhdGVkX2luIiwicGFyZW50MCIsInNldF9wYXJlbnQwIiwicGFyZW50MV9hbmRfYmV5b25kIiwic2V0X3BhcmVudDFfYW5kX2JleW9uZCIsIm51bV9wYXJlbnRzIiwic2V0X251bV9wYXJlbnRzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyIsInNldF9udW1fb25fdXBkYXRlX2hhbmRsZXJzIiwiY2hhbmdlZF9hdCIsInNldF9jaGFuZ2VkX2F0IiwiY3V0b2ZmIiwic2V0X2N1dG9mZiIsImtpbmQiLCJzZXRfa2luZCIsInZhbHVlX29wdCIsInNldF92YWx1ZV9vcHQiLCJyZWNvbXB1dGVkX2F0Iiwic2V0X3JlY29tcHV0ZWRfYXQiLCJpZCIsIm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbiQwIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luJDAiLCJvYnNlcnZlcnMkMCIsIm9sZF92YWx1ZV9vcHQkMCIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAkMCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAkMCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAkMCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0JDAiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZSQwIiwiY3JlYXRlZF9pbiQwIiwicGFyZW50MCQwIiwicGFyZW50MV9hbmRfYmV5b25kJDAiLCJudW1fcGFyZW50cyQwIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyQwIiwiY2hhbmdlZF9hdCQwIiwiY3V0b2ZmJDAiLCJraW5kJDAiLCJ2YWx1ZV9vcHQkMCIsInJlY29tcHV0ZWRfYXQkMCIsImlkJDAiLCJzdGF0ZV8wMDUiLCJpZF8wMDMiLCJyZWNvbXB1dGVkX2F0XzAwNyIsInZhbHVlX29wdF8wMDkiLCJraW5kXzAxMSIsImN1dG9mZl8wMTMiLCJjaGFuZ2VkX2F0XzAxNSIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfMDE3IiwibnVtX3BhcmVudHNfMDE5IiwicGFyZW50MV9hbmRfYmV5b25kXzAyMSIsInBhcmVudDBfMDIzIiwiY3JlYXRlZF9pbl8wMjUiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV8wMjciLCJoZWlnaHRfMDI5IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXzAzMSIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfMDMzIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcF8wMzUiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfMDMiLCJvbGRfdmFsdWVfb3B0XzA0MSIsIm9ic2VydmVyc18wNDMiLCJpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGkiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDQ3IiwiZm9yY2VfbmVjZXNzYXJ5XzA1MyIsInVzZXJfaW5mb18wNTUiLCJjcmVhdGlvbl9iYWNrdHJhY2VfMDU3IiwiYXJnXzA1OCIsImFyZ18wNTYiLCJhcmdfMDU0IiwiYXJnXzA1MiIsImFyZ18wNTAiLCJhcmdfMDQ4IiwiYXJnXzA0NiIsImFyZ18wNDQiLCJhcmdfMDQyIiwiYm5kc18wMDIkNyIsImFyZ18wNDAiLCJibmRzXzAwMiQ4IiwiYXJnXzAzOCIsImJuZHNfMDAyJDkiLCJhcmdfMDM2IiwiYm5kc18wMDIkMTAiLCJhcmdfMDM0IiwiYm5kc18wMDIkMTEiLCJhcmdfMDMyIiwiYm5kc18wMDIkMTIiLCJhcmdfMDMwIiwiYm5kc18wMDIkMTMiLCJhcmdfMDI4IiwiYm5kc18wMDIkMTQiLCJibmRzXzAwMiQxNSIsImJuZHNfMDAyJDE2IiwiYm5kc18wMDIkMTciLCJibmRzXzAwMiQxOCIsImJuZHNfMDAyJDE5IiwiYm5kc18wMDIkMjAiLCJibmRzXzAwMiQyMSIsImJuZHNfMDAyJDIyIiwiYm5kc18wMDIkMjMiLCJibmRzXzAwMiQyNCIsImJuZHNfMDAyJDI1IiwiYm5kc18wMDIkMjYiLCJwYWNrZWRfc2FtZSIsInVzZXJfaW5mbyIsIm90aGVyIiwic2V0X3VzZXJfaW5mbyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXoiLCJhdHRycyIsImVkZ2VfaXNfc3RhbGUiLCJwYXJlbnQiLCJpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGkiLCJpc19zdGFsZSIsImZvcmNlX3N0YWxlIiwiZm9yY2Vfc3RhbGUkMCIsIm5lZWRzX3RvX2JlX2NvbXB1dGVkIiwiaXNfaW5fcmVjb21wdXRlX2hlYXAiLCJpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwiZ2V0X3BhcmVudCIsIml0ZXJpX3BhcmVudHMiLCJoYXNfY2hpbGQiLCJoYXMiLCJoYXNfcGFyZW50IiwicGFyZW50JDAiLCJzaG91bGRfYmVfaW52YWxpZGF0ZWQiLCJsaHMkMCIsImZvbGRfb2JzZXJ2ZXJzIiwiYWMiLCJvYnNlcnZlciIsImFfMDYwIiwiYl8wNjEiLCJhXzA3MCIsImJfMDcxIiwicGFyZW50X2luZGV4IiwieCIsImFfMDY4IiwiYl8wNjkiLCJvYnNlcnZlcnNfZnVuIiwic3RhdGUiLCJvYnNlcnZpbmciLCJvbGRfdmFsdWVfb3B0X2Z1biIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF9mdSIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJwcmV2IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsImhlaWdodF9mdW4iLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV9mdW4iLCJjcmVhdGVkX2luX2Z1biIsInBhcmVudDBfZnVuIiwiYV8wNjYiLCJiXzA2NyIsInBhcmVudDFfYW5kX2JleW9uZF9mdW4iLCJhXzA2NCIsImJfMDY1IiwibnVtX3BhcmVudHNfZnVuIiwib25fdXBkYXRlX2hhbmRsZXJzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJldGEiLCJhXzA2MiIsImJfMDYzIiwiY2hhbmdlZF9hdF9mdW4iLCJjdXRvZmZfZnVuIiwia2luZF9mdW4iLCJ2YWx1ZV9vcHRfZnVuIiwicmVjb21wdXRlZF9hdF9mdW4iLCJpZF9mdW4iLCJ4XzA1OSIsInVuc2FmZV92YWx1ZSIsInZhbHVlX2V4biIsInhfMDcyIiwiZ2V0X2N1dG9mZiIsInNldF9jdXRvZmYkMCIsImlzX2NvbnN0Iiwib25fdXBkYXRlIiwib25fdXBkYXRlX2hhbmRsZXIiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzIiwicmVzdCQwIiwib25fdXBkYXRlX2hhbmRsZXIkMCIsInIkMCIsInIkMSIsInJlc3QiLCJzZXRfa2luZCQwIiwibWF4X251bV9wYXJlbnRzIiwic2V0X3BhcmVudCIsImxpbmsiLCJhZGRfcGFyZW50IiwibmV3X21heF9udW1fcGFyZW50cyIsIm1heF9udW1fY2hpbGRyZW4iLCJuZXdfbWF4X251bV9jaGlsZHJlbiIsInJlbW92ZV9wYXJlbnQiLCJsYXN0X3BhcmVudF9pbmRleCIsInN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQiLCJjaGlsZDEiLCJjaGlsZDIiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJzYW1lX2FzX3BhY2tlZCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjAiLCJ4XzAyMiIsInhfMDIxIiwib25fdXBkYXRlX2V4biIsInhfMDI0IiwicHJldiQwIiwibmV4dCQwIiwieF8wMjUiLCJ4XzAwMiIsIm5hbWVzIiwibmFtZXMkMCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfMDk1Iiwic2V4cF9vZl9zdGF0dXMiLCJhcmcxXzAwNCIsInJlczFfMDA2IiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuIiwic2V0X2V4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1IiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsInNldF9jdXJyZW50bHlfcnVubmluZ19ub2RlIiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlJDAiLCJtYWtlX2NyZWF0b3IiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQxIiwiYWNjIiwibWFwIiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlXzAwOCIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsInNleHBfb2ZfdCQxIiwibnVtX3Zhcl9zZXRzIiwic2V0X251bV92YXJfc2V0cyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQwIiwic2V0X251bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjJDAiLCJudW1fbm9kZXNfcmVjb21wdXRlZCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZCIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZCIsInNldF9udW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJudW1fbm9kZXNfY3JlYXRlZCIsInNldF9udW1fbm9kZXNfY3JlYXRlZCIsIm51bV9ub2Rlc19jaGFuZ2VkIiwic2V0X251bV9ub2Rlc19jaGFuZ2VkIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYSIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwic2V0X251bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSIsInNldF9rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYSIsIndlYWtfaGFzaHRibHMiLCJvbmx5X2luX2RlYnVnIiwic2V0X29ubHlfaW5fZGVidWciLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiIsInNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwibmV3X29ic2VydmVycyIsImZpbmFsaXplZF9vYnNlcnZlcnMiLCJhbGxfb2JzZXJ2ZXJzIiwic2V0X2FsbF9vYnNlcnZlcnMiLCJudW1fYWN0aXZlX29ic2VydmVycyIsInNldF9udW1fYWN0aXZlX29ic2VydmVycyIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5IiwiYWRqdXN0X2hlaWdodHNfaGVhcCIsImN1cnJlbnRfc2NvcGUiLCJzZXRfY3VycmVudF9zY29wZSIsInN0YWJpbGl6YXRpb25fbnVtIiwic2V0X3N0YWJpbGl6YXRpb25fbnVtIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkIiwic3RhdHVzIiwic2V0X3N0YXR1cyIsIm51bV92YXJfc2V0cyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDEiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMiIsIm51bV9ub2Rlc19yZWNvbXB1dGVkJDAiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQkMCIsIm51bV9ub2Rlc19jcmVhdGVkJDAiLCJudW1fbm9kZXNfY2hhbmdlZCQwIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSQwIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkkMCIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UkMCIsIndlYWtfaGFzaHRibHMkMCIsIm9ubHlfaW5fZGVidWckMCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMkMCIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uJDAiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzJDAiLCJuZXdfb2JzZXJ2ZXJzJDAiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzJDAiLCJhbGxfb2JzZXJ2ZXJzJDAiLCJudW1fYWN0aXZlX29ic2VydmVycyQwIiwicHJvcGFnYXRlX2ludmFsaWRpdHkkMCIsImFkanVzdF9oZWlnaHRzX2hlYXAkMCIsInJlY29tcHV0ZV9oZWFwJDAiLCJjdXJyZW50X3Njb3BlJDAiLCJzdGFiaWxpemF0aW9uX251bSQwIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDAiLCJzdGF0dXMkMCIsIm1ha2VfY3JlYXRvciQwIiwic3RhdHVzX2Z1biIsInN0YWJpbGl6YXRpb25fbnVtX2Z1biIsImN1cnJlbnRfc2NvcGVfZnVuIiwicmVjb21wdXRlX2hlYXBfZnVuIiwiYWRqdXN0X2hlaWdodHNfaGVhcF9mdW4iLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9mdW4iLCJudW1fYWN0aXZlX29ic2VydmVyc19mdW4iLCJhbGxfb2JzZXJ2ZXJzX2Z1biIsImZpbmFsaXplZF9vYnNlcnZlcnNfZnVuIiwibmV3X29ic2VydmVyc19mdW4iLCJkaXNhbGxvd2VkX29ic2VydmVyc19mdW4iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZnVuIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZnVuIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvbmx5X2luX2RlYnVnX2Z1biIsIndlYWtfaGFzaHRibHNfZnVuIiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV9mIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZnVuIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9mIiwibnVtX25vZGVzX2NoYW5nZWRfZnVuIiwibnVtX25vZGVzX2NyZWF0ZWRfZnVuIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2Z1biIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2Z1biIsIm51bV92YXJfc2V0c19mdW4iLCJzdGF0dXNfZ2VuIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDEiLCJjb21waWxlX2FjYyQyIiwic3RhYmlsaXphdGlvbl9udW1fZ2VuIiwiY29tcGlsZV9hY2MkMyIsImN1cnJlbnRfc2NvcGVfZ2VuIiwiY29tcGlsZV9hY2MkNCIsInJlY29tcHV0ZV9oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJhZGp1c3RfaGVpZ2h0c19oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9nZW4iLCJjb21waWxlX2FjYyQ3IiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOCIsImFsbF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImZpbmFsaXplZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTAiLCJuZXdfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDExIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl9nZW4iLCJjb21waWxlX2FjYyQxNCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTUiLCJvbmx5X2luX2RlYnVnX2dlbiIsImNvbXBpbGVfYWNjJDE2Iiwid2Vha19oYXNodGJsc19nZW4iLCJjb21waWxlX2FjYyQxNyIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZyIsImNvbXBpbGVfYWNjJDE4IiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5X2ciLCJjb21waWxlX2FjYyQyMCIsIm51bV9ub2Rlc19jaGFuZ2VkX2dlbiIsImNvbXBpbGVfYWNjJDIxIiwibnVtX25vZGVzX2NyZWF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjIiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQzIiwiY29tcGlsZV9hY2MkMjUiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kNCIsImNvbXBpbGVfYWNjJDI2IiwibnVtX3Zhcl9zZXRzX2dlbiIsImNyZWF0ZSQxIiwibWFwJDEiLCJpdGVyJDEiLCJmb2xkJDEiLCJtYXBfcG9seSQwIiwiZm9yX2FsbCQxIiwiZXhpc3RzJDEiLCJ0b19saXN0JDEiLCJpdGVyJDIiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInRvX2xpc3QkMiIsIm1hcCQyIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQwIiwic2V4cF9vZl90JDIiLCJzdGF0dXNfMDE1Iiwic3RhYmlsaXphdGlvbl9udW1fMDE5IiwiY3VycmVudF9zY29wZV8wMjEiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV8wMjciLCJhZGp1c3RfaGVpZ2h0c19oZWFwXzAyNSIsInJlY29tcHV0ZV9oZWFwXzAyMyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzXzAyOSIsImFsbF9vYnNlcnZlcnNfMDMxIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc18wNDMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl8wNDEiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fMDM5IiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfMDM3IiwibmV3X29ic2VydmVyc18wMzUiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzXzAzMyIsIm9ubHlfaW5fZGVidWdfMDQ1Iiwid2Vha19oYXNodGJsc18wNDciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlXzAiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeV8wNTEiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5XzAiLCJudW1fbm9kZXNfY2hhbmdlZF8wNTUiLCJudW1fbm9kZXNfY3JlYXRlZF8wNTciLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfMDU5IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfMDYxIiwibnVtX3Zhcl9zZXRzXzA2NyIsImFyZ18wNjgiLCJibmRzXzAxNCIsImFyZ18wNjYiLCJibmRzXzAxNCQwIiwiYXJnXzA2NCIsImJuZHNfMDE0JDEiLCJhcmdfMDYyIiwiYm5kc18wMTQkMiIsImFyZ18wNjAiLCJibmRzXzAxNCQzIiwiYm5kc18wMTQkNCIsImJuZHNfMDE0JDUiLCJibmRzXzAxNCQ2IiwiYm5kc18wMTQkNyIsImJuZHNfMDE0JDgiLCJibmRzXzAxNCQ5IiwiYm5kc18wMTQkMTAiLCJibmRzXzAxNCQxMSIsImJuZHNfMDE0JDEyIiwiYm5kc18wMTQkMTMiLCJibmRzXzAxNCQxNCIsImJuZHNfMDE0JDE1IiwiYm5kc18wMTQkMTYiLCJibmRzXzAxNCQxNyIsImJuZHNfMDE0JDE4IiwiYm5kc18wMTQkMTkiLCJibmRzXzAxNCQyMCIsImJuZHNfMDE0JDIxIiwiYm5kc18wMTQkMjIiLCJibmRzXzAxNCQyMyIsImJuZHNfMDE0JDI0IiwiYm5kc18wMTQkMjUiLCJmaXJlZF9hbGFybV92YWx1ZXMiLCJzZXRfZmlyZWRfYWxhcm1fdmFsdWVzIiwiaGFuZGxlX2ZpcmVkIiwidGltaW5nX3doZWVsIiwiZmlyZWRfYWxhcm1fdmFsdWVzJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm5vdyQwIiwidGltaW5nX3doZWVsJDAiLCJtYWtlX2NyZWF0b3IkMSIsInRpbWluZ193aGVlbF9mdW4iLCJub3dfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImZpcmVkX2FsYXJtX3ZhbHVlc19mdW4iLCJ0aW1pbmdfd2hlZWxfZ2VuIiwibm93X2dlbiIsImhhbmRsZV9maXJlZF9nZW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkMyIsIml0ZXIkMyIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDQiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJzZXhwX29mX3QkMyIsIm5vd18wNzIiLCJ0aW1pbmdfd2hlZWxfMDcwIiwiZmlyZWRfYWxhcm1fdmFsdWVzXzA3NiIsImFyZ18wNzciLCJibmRzXzA2OSIsImFyZ18wNzUiLCJibmRzXzA2OSQwIiwiYXJnXzA3MyIsImJuZHNfMDY5JDEiLCJhcmdfMDcxIiwiYm5kc18wNjkkMiIsImludmFyaWFudCQxIiwibm93JDEiLCJjbG9jayIsInRpbWluZ193aGVlbF9sZW5ndGgiLCJudW1fc3RhYmlsaXplcyIsIml0ZXJfb2JzZXJ2ZXJzIiwiZGlyZWN0bHlfb2JzZXJ2ZWQiLCJpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIiwidF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJtYXhfbnVtX3BhcmVudHNfMDgxIiwicGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyIiwiZHVwbGljYXRlc18wODUiLCJleHRyYV8wODYiLCJzZXhwXzA3OSQwIiwiZmllbGRfc2V4cHNfMDg5IiwiZmllbGRfbmFtZV8wODciLCJ0YWlsXzA5OSIsImZpZWxkX3NleHBfMDg4JDIiLCJmaWVsZF9zZXhwXzA4OCIsInhfMTAwIiwiZmllbGRfc2V4cF8wODgkMCIsInNleHBfMDk0IiwiYXJnMV8wOTEiLCJhcmcwXzA5MCIsInJlczBfMDkyIiwicmVzMV8wOTMiLCJmdmFsdWVfMDk2IiwiZmllbGRfc2V4cF8wODgkMSIsImZ2YWx1ZV8wOTciLCJwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXIkMCIsIm1heF9udW1fcGFyZW50c18wODIiLCJzZXhwX29mX3QkNCIsIm1heF9udW1fcGFyZW50c18xMDIiLCJibmRzXzEwMSIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnXzEwNSIsImJuZHNfMTAxJDAiLCJhcmdfMTAzIiwiYm5kc18xMDEkMSIsInN0YXRzIiwibnVtX25lY2Vzc2FyeV9ub2RlcyIsIm1heF9udW1fcGFyZW50cyQwIiwibnVtX25vZGVzX2J5X251bV9wYXJlbnRzIiwibnVtX25vZGVzIiwiYW1fc3RhYmlsaXppbmciLCJyYWlzZWRfZXhuIiwiaW52YXJpYW50JDIiLCJpbnRlcm5hbF9vYnNlcnZlciIsInhfMTEwIiwicGFja2VkIiwiZW5zdXJlX25vdF9zdGFiaWxpemluZyIsImFsbG93X2luX3VwZGF0ZV9oYW5kbGVyIiwiYmFja3RyYWNlIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImFyZzFfMTEyIiwiYXJnMF8xMTEiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQxIiwicmVtb3ZlX2NoaWxkcmVuIiwicmVtb3ZlX2NoaWxkIiwiY2hlY2tfaWZfdW5uZWNlc3NhcnkiLCJiZWNhbWVfdW5uZWNlc3NhcnkiLCJwIiwidSIsInJlbW92ZV9hbGFybSIsImludmFsaWRhdGVfbm9kZSIsImludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaCIsInJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJmaXJzdF9ub2RlX29uX3JocyIsIm5ld19zY29wZSIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDEiLCJleHBlcnQiLCJhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2giLCJ3YXNfbmVjZXNzYXJ5IiwieF8xMTUiLCJiZWNhbWVfbmVjZXNzYXJ5IiwicnVuX3dpdGhfc2NvcGUiLCJzY29wZSIsInNhdmVkIiwiZXhuJDAiLCJ3aXRoaW5fc2NvcGUiLCJjaGFuZ2VfY2hpbGQiLCJvbGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJvbGRfY2hpbGQkMCIsImFkZF9hbGFybSIsInJlY29tcHV0ZSIsIm1heWJlX2NoYW5nZV92YWx1ZSIsIm9sZF9yaHMiLCJvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiY29weV9jaGlsZCIsIm9ubHlfZnJlZXplX3doZW4iLCJlbHNlJDAiLCJ0aGVuIiwiZGVzaXJlZF9icmFuY2giLCJtYWluJDEiLCJvbGRfcmhzJDAiLCJyaHMkMSIsInJocyQyIiwibjEiLCJjbG9jayQwIiwiYXQkMCIsImNsb2NrJDEiLCJjaGlsZCQxIiwic3RlcF9mdW5jdGlvbiIsInN0ZXBfZnVuY3Rpb25fdmFsdWUiLCJhdCQxIiwibjIiLCJuMSQwIiwibjMiLCJuMiQwIiwibjEkMSIsImYkMiIsIm40IiwibjMkMCIsIm4yJDEiLCJuMSQyIiwiZiQzIiwibjUiLCJuNCQwIiwibjMkMSIsIm4yJDIiLCJuMSQzIiwiZiQ0IiwibjYiLCJuNSQwIiwibjQkMSIsIm4zJDIiLCJuMiQzIiwibjEkNCIsImYkNSIsIm43IiwibjYkMCIsIm41JDEiLCJuNCQyIiwibjMkMyIsIm4yJDQiLCJuMSQ1IiwiZiQ2IiwibjgiLCJuNyQwIiwibjYkMSIsIm41JDIiLCJuNCQzIiwibjMkNCIsIm4yJDUiLCJuMSQ2IiwiZiQ3IiwibjkiLCJuOCQwIiwibjckMSIsIm42JDIiLCJuNSQzIiwibjQkNCIsIm4zJDUiLCJuMiQ2IiwibjEkNyIsImYkOCIsIm4xMCIsIm45JDAiLCJuOCQxIiwibjckMiIsIm42JDMiLCJuNSQ0IiwibjQkNSIsIm4zJDYiLCJuMiQ3IiwibjEkOCIsImYkOSIsIm4xMSIsIm4xMCQwIiwibjkkMSIsIm44JDIiLCJuNyQzIiwibjYkNCIsIm41JDUiLCJuNCQ2IiwibjMkNyIsIm4yJDgiLCJuMSQ5IiwiZiQxMCIsIm4xMiIsIm4xMSQwIiwibjEwJDEiLCJuOSQyIiwibjgkMyIsIm43JDQiLCJuNiQ1IiwibjUkNiIsIm40JDciLCJuMyQ4IiwibjIkOSIsIm4xJDEwIiwiZiQxMSIsIm4xMyIsIm4xMiQwIiwibjExJDEiLCJuMTAkMiIsIm45JDMiLCJuOCQ0IiwibjckNSIsIm42JDYiLCJuNSQ3IiwibjQkOCIsIm4zJDkiLCJuMiQxMCIsIm4xJDExIiwiZiQxMiIsIm4xNCIsIm4xMyQwIiwibjEyJDEiLCJuMTEkMiIsIm4xMCQzIiwibjkkNCIsIm44JDUiLCJuNyQ2IiwibjYkNyIsIm41JDgiLCJuNCQ5IiwibjMkMTAiLCJuMiQxMSIsIm4xJDEyIiwiZiQxMyIsIm4xNSIsIm4xNCQwIiwibjEzJDEiLCJuMTIkMiIsIm4xMSQzIiwibjEwJDQiLCJuOSQ1IiwibjgkNiIsIm43JDciLCJuNiQ4IiwibjUkOSIsIm40JDEwIiwibjMkMTEiLCJuMiQxMiIsIm4xJDEzIiwiZiQxNCIsImNoaWxkX2luZGV4JDAiLCJ1JDAiLCJjYW5fcmVjb21wdXRlX25vdyIsImIiLCJqIiwicmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uIiwieF8xMTYiLCJ1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMiLCJkaXNhbGxvd19mdXR1cmVfdXNlIiwiZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyIsIm9ic2VydmVyX2ZpbmFsaXplciIsImNyZWF0ZV9vYnNlcnZlciIsIm9wdCIsInN0aCIsInNob3VsZF9maW5hbGl6ZSIsImFkZF9uZXdfb2JzZXJ2ZXJzIiwib2xkX2FsbF9vYnNlcnZlcnMiLCJvbGRfb2JzZXJ2ZXJzIiwib2JzZXJ2ZXJfdmFsdWVfZXhuIiwieF8xMTciLCJvYnNlcnZlcl92YWx1ZSIsIm5vZGVfb25fdXBkYXRlIiwib2JzZXJ2ZXJfb25fdXBkYXRlX2V4biIsInNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIiwic2V0X3ZhciIsInJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyIsIndlYWtfaGFzaHRibCIsInN0YWJpbGl6ZV9zdGFydCIsInN0YWJpbGl6ZV9lbmQiLCJtYXRjaCQwIiwibm9kZV91cGRhdGUkMCIsInJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIiwic3RhYmlsaXplIiwic2V4cF9vZl90JDUiLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUiLCJjcmVhdGVfbm9kZV9pbiIsImNyZWF0ZV9ub2RlIiwiY3JlYXRlX25vZGVfdG9wIiwiY3JlYXRlX3ZhciIsInVzZV9jdXJyZW50X3Njb3BlIiwiY29uc3QkMCIsIm1hcCQ1IiwibWFwMiIsImJvdGgiLCJtYXAzIiwibWFwNCIsIm1hcDUiLCJtYXA2IiwibWFwNyIsIm1hcDgiLCJtYXA5IiwibWFwMTAiLCJtYXAxMSIsIm1hcDEyIiwibWFwMTMiLCJtYXAxNCIsIm1hcDE1IiwicHJlc2VydmVfY3V0b2ZmIiwiaW5wdXQiLCJvdXRwdXQiLCJkZXBlbmRfb24iLCJuZWNlc3NhcnlfaWZfYWxpdmUiLCJiaW5kMiIsInYyIiwidjEiLCJiaW5kMyIsInYzIiwiYmluZDQiLCJ2NCIsImlmJDAiLCJsYXp5X2Zyb21fZnVuIiwiZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6IiwibWVtb2l6ZV9mdW5fYnlfa2V5IiwiaGFzaGFibGUiLCJwcm9qZWN0X2tleSIsImluaXRpYWxfc2l6ZSIsInRhYmxlIiwia2V5IiwiYiQwIiwiYWxsIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIiwibnVtX2ludmFsaWQiLCJhY2N1bSIsIngkMCIsImZfaW52ZXJzZSQwIiwiYXRfbGVhc3Rfa19vZiIsImJvb2xfdG9faW50IiwibnVtX3RydWUiLCJleGlzdHMkNSIsImZvcl9hbGwkNSIsInN1bSIsInplcm8iLCJzdWIiLCJvcHRfc3VtIiwic3VtX2ludCIsInN1bV9mbG9hdCIsInNldF9mcmVlemUiLCJ0aW1lIiwiYWZ0ZXIiLCJzcGFuIiwibmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QiLCJiYXNlIiwidmFsdWVfYXQiLCJpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIiwiYWR2YW5jZV9jbG9jayIsIm1haW4kMiIsImNyZWF0ZV9jbG9jayIsInRpbWluZ193aGVlbF9jb25maWciLCJzdGFydCIsImNyZWF0ZSQzIiwiQ29uZmlnIiwid2Vha19tZW1vaXplX2Z1bl9ieV9rZXkiLCJleHBlcnRfa2luZF9vZl9ub2RlIiwieF8xMTgiLCJjcmVhdGUkNCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIiwiY3VycmVudCIsImFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlXyIsInhfMTIwIiwieF8xMTkiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8kMCIsInhfMTIyIiwieF8xMjEiLCJtYWtlX3N0YWxlJDAiLCJlX29wdCIsImludmFsaWRhdGUiLCJhZGRfZGVwZW5kZW5jeSIsImRlcCIsInJlbW92ZV9kZXBlbmRlbmN5IiwiZWRnZSIsImVkZ2VfaW5kZXgiLCJsYXN0X2VkZ2UiLCJsYXN0X2VkZ2VfaW5kZXgiLCJvbl9jaGFuZ2UiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwibGV2ZWxfYml0cyIsImNyZWF0ZV9pbnRlcm5hbCIsImRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkIiwic2V4cF9vZl9zdGF0ZV93aXRuZXNzIiwid2l0aGluIiwicGFjayIsInJldHVybiQwIiwibWFwMiQwIiwibWFwMyQwIiwibWFwNCQwIiwibWFwNSQwIiwibWFwNiQwIiwibWFwNyQwIiwibWFwOCQwIiwibWFwOSQwIiwibWFwMTAkMCIsIm1hcDExJDAiLCJtYXAxMiQwIiwibWFwMTMkMCIsIm1hcDE0JDAiLCJtYXAxNSQwIiwiYmluZDIkMCIsImJpbmQzJDAiLCJiaW5kNCQwIiwic3ltYm9sX21hcCIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCQwIiwic3ltYm9sX2JpbmQkMCIsImxhenlfZnJvbV9mdW4kMCIsIm1lbW9pemVfZnVuIiwiYXJyYXlfZm9sZCQwIiwicmVkdWNlX2JhbGFuY2VkIiwicmVwbGFjZSIsInhfMDE3IiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQwIiwiaW5jcl9zdGF0ZSQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQkMCIsImFsYXJtX3ByZWNpc2lvbiQwIiwid2F0Y2hfbm93IiwiYWR2YW5jZV9jbG9ja19ieSIsImZyZWV6ZSQwIiwid2hlbiIsImRlcGVuZF9vbiQwIiwic3RhYmlsaXplJDAiLCJhbV9zdGFiaWxpemluZyQwIiwib2ZfYV8wMTgiLCJhcmcwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJub2RlX3ZhbHVlIiwic2V4cF9vZl90JDYiLCJib3RoJDAiLCJ4MSIsIngyIiwibWFwMiQxIiwibWFwMyQxIiwibWFwNCQxIiwibWFwNSQxIiwibWFwNiQxIiwibWFwNyQxIiwibWFwOCQxIiwibWFwOSQxIiwibWFwMTAkMSIsIm1hcDExJDEiLCJtYXAxMiQxIiwibWFwMTMkMSIsIm1hcDE0JDEiLCJtYXAxNSQxIiwiYmluZDIkMSIsImJpbmQzJDEiLCJiaW5kNCQxIiwid2Vha19tZW1vaXplX2Z1biIsImRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSQwIiwicmV0dXJuJDEiLCJ3aXRoaW4kMCIsImNvbnN0JDEiLCJyZXR1cm4kMiIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwiYXJyYXlfZm9sZCQxIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic3RhYmlsaXplJDEiLCJhbV9zdGFiaWxpemluZyQxIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1Iiwid2l0aF9vbGQiLCJpIiwiZiIsIm9sZCIsImEiLCJiIiwidW5vcmRlcmVkX2ZvbGQiLCJvcHQiLCJ1cGRhdGUiLCJzcGVjaWFsaXplZF9pbml0aWFsIiwibWFwIiwiaW5pdCIsImFkZCIsInJlbW92ZSIsInN0aCIsImRhdGFfZXF1YWwiLCJzdGgkMCIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJrZXkiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwiYWNjIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJpbml0aWFsIiwib2xkX291dCIsIm9sZF9pbiIsImNoYW5nZSIsIm5ldyQwIiwib2xkJDAiLCJuZXckMSIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzIiwiaW5jcl9tYXAiLCJ1cGRhdGUkMSIsIm91dGVyX2tleSIsImlubmVyX2tleSIsImlubmVyX21hcCIsImRhdGEiLCJvbGRfaW5uZXJfbWFwIiwibmV3X2lubmVyX21hcCIsImRpZmYiLCJkYXRhX3JlbW92ZWQiLCJkYXRhX2FkZGVkIiwid2l0aF9jb21wYXJhdG9yIiwiZ2V0X2NvbXBhcmF0b3IiLCJ4Iiwid2l0aF9jb21wYXJhdG9yJDAiLCJvZl9zZXQiLCJzZXQiLCJjb21wYXJhdG9yIiwib2xkX2lucHV0Iiwib2xkX291dHB1dCIsIm5ld19pbnB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJuZXdfb3V0cHV0IiwiZ2VuZXJpY19tYXBpIiwid2l0bmVzcyIsImlucHV0IiwicmVzIiwib3V0cHV0X2RhdGEiLCJtYXBpIiwiZmlsdGVyX21hcGkiLCJmaWx0ZXJfbWFwIiwid2l0aF9vbGQyIiwiaTEiLCJpMiIsImExIiwiYTIiLCJtYXBpX2NvdW50IiwibmV3X2tleSIsIm4iLCJwcmV2X2tleSIsIm1hcF9jb3VudCIsIm1pbl9oZWxwZXIiLCJtaW4iLCJtYXhfaGVscGVyIiwibWF4IiwiYm91bmRzX2hlbHBlciIsIm1hcGlfbWluIiwibWFwaV9tYXgiLCJtYXBpX2JvdW5kcyIsIm1hcGlfbW4iLCJtYXBfbWF4IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwibWFwX2JvdW5kcyIsInZhbHVlX2JvdW5kcyIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0IiwibmV3X2xlZnRfbWFwIiwibmV3X3JpZ2h0X21hcCIsIm9sZF9yaWdodF9tYXAiLCJvbGRfbGVmdF9tYXAiLCJvbGRfbGVmdF9tYXAkMCIsImxlZnRfZGlmZiIsInJpZ2h0X2RpZmYiLCJkaWZmX2VsZW1lbnQiLCJyaWdodF9rZXkiLCJsZWZ0X2tleSIsImtleSQwIiwicmlnaHRfZGF0YV9vcHQkMCIsImxlZnRfZGF0YV9vcHQiLCJyaWdodF9kaWZmJDAiLCJsZWZ0X2RpZmYkMCIsInJpZ2h0X2RhdGFfb3B0JDIiLCJsZWZ0X2RhdGFfb3B0JDAiLCJ5Iiwib3V0cHV0X2RhdGFfb3B0IiwieSQwIiwiZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvciIsImN1dG9mZiIsImluY3JlbWVudGFsX3N0YXRlIiwiZW1wdHlfbWFwIiwicHJldl9tYXAiLCJwcmV2X25vZGVzIiwicmVzdWx0Iiwib25faW5uZXJfY2hhbmdlIiwibGhzX2NoYW5nZSIsIm5vZGVzIiwiY2hhbmdlZCIsImRlcCIsIm5vZGUiLCJub2RlcyQwIiwibm9kZSQwIiwibm9kZSQxIiwiYyIsInVzZXJfZnVuY3Rpb25fZGVwIiwibmV3X25vZGVzIiwiZmlsdGVyX21hcGkkMCIsIm1hcGkkMCIsIm1hcCQwIiwiZmlsdGVyX21hcCQwIiwibWVyZ2UkMCIsIm1hcDEiLCJtYXAyIiwidW56aXBfbWFwaSIsImxlZnRfcmVzdWx0X2VxdWFsIiwicmlnaHRfcmVzdWx0X2VxdWFsIiwicGFpciIsImRhdGFfZXF1YWwkMCIsImxlZnRfcmVzdWx0X2VxdWFsJDAiLCJzdGgkMSIsInJpZ2h0X3Jlc3VsdF9lcXVhbCQwIiwibGVmdF9hY2MiLCJsZWZ0X3Jlc3VsdCIsInJpZ2h0X2FjYyIsInJpZ2h0X3Jlc3VsdCIsImwiLCJsZWZ0JDAiLCJyIiwicmlnaHQkMCIsInJpZ2h0IiwibGVmdCIsInByZXYiLCJwcmV2X2IiLCJwcmV2X2EiLCJuZXdfYiIsIm5ld19hIiwiZWxlbWVudCIsImlucHV0X2NoYW5nZSIsInVuemlwIiwidW56aXBfbWFwaSQwIiwicmlnaHRfZGVwIiwibGVmdF9kZXAiLCJyaWdodF9pbmNyIiwibGVmdF9pbmNyIiwibGVmdF91c2VyX2Z1bmN0aW9uX2RlcCIsInJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwIiwia2V5cyIsInBhcnRpdGlvbl9tYXBpIiwiZW1wdHkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsImZsYXR0ZW4iLCJzdGF0ZSIsImluY3IiLCJqb2luIiwibWFwX2luY3IiLCJyZXN1bHRfbWFwIiwib2xkX21hcF9vZl9pbmNycyIsImN1cnJlbnRfZGVwZW5kZW5jaWVzIiwiYWRkX3N1Ym5vZGUiLCJkYXRhX25vZGUiLCJuZXdfZGVwIiwicmVtb3ZlX3N1Ym5vZGUiLCJtYXBfb2ZfaW5jcnMiLCJkYXRhX25vZGUkMCIsIm5ld19kZXBlbmRlbmN5X21hcCIsInNlcGFyYXRlIiwiaW5wdXRfbWFwIiwib3V0cHV0X21hcF9ub2RlIiwibWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfIiwiaW5wdXRfbWFwX2NoYW5nZWQiLCJkZXBlbmRlbmN5IiwicHJldl9pbnB1dF9tYXAiLCJvdXRwdXRfbWFwIiwiZXhwZXJ0X25vZGVzIiwib2xkX25vZGUiLCJzdWJyYW5nZSIsInJhbmdlIiwiY29tcGFyZSIsImVxdWFsIiwibWF5YmVfYm91bmRfZXF1YWwiLCJhXzAwMiIsImJfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJyYW5nZV9pc19lbXB0eSIsIm1pbiQwIiwibWF4JDAiLCJtYXgkMSIsIm1pbiQxIiwicmFuZ2VfaW5jbHVkZXMiLCJyYW5nZSQwIiwiZnJvbV9zY3JhdGNoIiwib2xkX3JhbmdlIiwib2xkX21pbiIsIm9sZF9tYXAiLCJvbGRfbWF4Iiwib2xkX3JlcyIsIm9sZF9tYXgkMCIsInBhcmFtIiwiYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24iLCJvdXRzaWRlIiwib3V0c2lkZSQwIiwib3V0c2lkZV9jdXRvZmYiLCJ3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2UiLCJ3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIiwibWFwX2FwcGVuZF9leG4iLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm9sZF9taW4kMCIsIm9sZF9taW4kMSIsIm9sZF9tYXgkMSIsIndpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlIiwicmVrZXkiLCJvdXRlcl9jb21wYXJhdG9yIiwiaW5kZXhfYnlpIiwiaW5kZXgiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfbWFwIiwiaW5uZXJfbWFwJDAiLCJpbmRleF9ieSIsImlzX2tub3duIiwidG9fb3B0aW9uIiwiZmluZF9rZXlfcmFuZ2VfbGluZWFyIiwiZnJvbSIsInRvIiwibGVuIiwiYmVnaW5fa2V5IiwiZW5kX2tleSIsImZpbmRfa2V5cyIsImZvbGQiLCJzdGFydF9wb3MiLCJhZHZhbmNlX3BvcyIsInBvcyIsImJlZ2luX2tleSQwIiwiZW5kX2tleSQwIiwicmFuayIsImNvbXBhcmVfa2V5Iiwic2FtZV9rZXkiLCJwcm9jZXNzIiwibmV3X21hcCIsIm9sZF9yYW5rIiwib2xkX2tleSIsIm9sZF9yYW5rJDAiLCJ1cHBlcl9ib3VuZCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQkMCIsImxvd2VyX2JvdW5kJDAiLCJzdWJyYW5nZSQwIiwiZGlmZl9rZXkiLCJvbGRfcmFuayQxIiwib2xkJDEiLCJzdWJyYW5nZV9ieV9yYW5rIiwiZmluZF9rZXlfcmFuZ2UiLCJlbmRfa2V5X29wdCQwIiwib2xkX3RvIiwib2xkX2Zyb20iLCJmaW5kX29mZnNldCIsImNoYW5nZWRfa2V5IiwicmFuZ2Vfb2Zmc2V0X2JlZ2luIiwicmFuZ2Vfb2Zmc2V0X2VuZCIsImFkanVzdF9hbmRfb2Zmc2V0IiwiYnkkMSIsImtleSQxIiwiYnkkMiIsImJ5IiwiY2xvc2VzdF9kaXIiLCJieSQwIiwib2Zmc2V0X2VuZCIsIm9mZnNldF9iZWdpbiIsIm1hcF9vZmZzZXRfZW5kIiwibWFwX29mZnNldF9iZWdpbiIsImVuZF9rZXlfb3B0JDIiLCJiZWdpbl9rZXlfb3B0IiwibWFwX29mZnNldF9iZWdpbiQwIiwiZW5kX2tleV9vcHQiLCJiZWdpbl9rZXlfb3B0JDAiLCJzeW1ib2wiLCJib3VuZCIsInJldHVybiQwIiwicGF0dGVybl9zeW50YXhfMDA4IiwicGF0dGVybl9zeW50YXhfMDA5IiwibGIiLCJwYXR0ZXJuX3N5bnRheF8wMTAiLCJ1IiwicGF0dGVybl9zeW50YXhfMDExIiwidWIiLCJsZXRfc3ludGF4XzAxNiIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxMiIsImwkMCIsInBhdHRlcm5fc3ludGF4XzAxMyIsImxiJDAiLCJsZXRfc3ludGF4XzAyMCIsInBhdHRlcm5fc3ludGF4XzAxNCIsInUkMCIsInBhdHRlcm5fc3ludGF4XzAxNSIsInViJDAiLCJsZXRfc3ludGF4XzAyMyIsInRyYW5zcG9zZSIsImsyX2NvbXBhcmF0b3IiLCJtIiwiazFfY29tcGFyYXRvciIsImsxIiwiazIiLCJ2YWx1ZSIsImFjY19pbm5lciIsImFjY19pbm5lciQwIiwiY29sbGFwc2VfYnkiLCJtZXJnZV9rZXlzIiwiY29sbGFwc2UiLCJpbm5lcl9jb21wYXJhdG9yJDAiLCJleHBhbmQiLCJjb3VudGkiLCJjb3VudCIsImV4aXN0c2kiLCJleGlzdHMiLCJzdW0iLCJHcm91cCIsInYiLCJmb3JfYWxsaSIsImZvcl9hbGwiLCJjcmVhdGUiLCJzZWxmIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsIm5ld192YWx1ZSIsInVwZGF0ZXJfbm9kZSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsInNhdmVkX3ZhbHVlIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJtYXRjaCQ0IiwidiQxIiwibWF0Y2gkNSIsInYkMiIsIm1hdGNoJDAiLCJpbmZvX3Blcl9rZXkiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJhIiwiY29udGVudHNfYmlnc3RyIiwiYmxvYiIsInVybCIsImNyZWF0ZSQwIiwib3B0IiwiZ2V0X2Rvd25sb2FkIiwiYnV0dG9uX3RleHQiLCJzdGgiLCJlbmFibGVkIiwic3RoJDAiLCJvbl9jbGljayIsInN0aCQxIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMjIiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wNDAiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwidG9wXzAwNSIsImxlZnRfMDA3IiwiYm90dG9tXzAwOSIsInJpZ2h0XzAxMSIsImR1cGxpY2F0ZXNfMDEzIiwiZXh0cmFfMDE0Iiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjQiLCJmaWVsZF9zZXhwXzAxNiQ0IiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNSIsImZpZWxkX3NleHBfMDE2JDAiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMSIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNiQyIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE2JDMiLCJmdmFsdWVfMDE5IiwicmlnaHRfMDEyIiwiYm90dG9tXzAxMCIsImxlZnRfMDA4IiwidG9wXzAwNiIsInNleHBfb2ZfdCIsIm9mX2FfMDI2IiwicmlnaHRfMDM0IiwiYm90dG9tXzAzMiIsImxlZnRfMDMwIiwidG9wXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInY0IiwidjMiLCJ2MiIsInYxIiwic2l6ZSIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwidl90b3AiLCJ2X2xlZnQiLCJ2X2JvdHRvbSIsInZfcmlnaHQiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDM2IiwiYl8wMzciLCJuIiwibiQwIiwibiQxIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwicmlnaHQkMCIsImJvdHRvbSQwIiwibGVmdCQwIiwidG9wJDAiLCJtYWtlX2NyZWF0b3IiLCJ0b3BfZnVuIiwibGVmdF9mdW4iLCJib3R0b21fZnVuIiwicmlnaHRfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwidG9wX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJsZWZ0X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJib3R0b21fZ2VuIiwiY29tcGlsZV9hY2MkMyIsInJpZ2h0X2dlbiIsImFjYyIsIm1hcCIsIml0ZXIiLCJmb2xkIiwiaW5pdCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsIm1hcCQxIiwidCIsImYiLCJpbnRfaGVpZ2h0IiwiaW50X3dpZHRoIiwiZmxvYXRfaGVpZ2h0IiwiZmxvYXRfd2lkdGgiLCJyb3VuZF9mbG9hdF9yZWN0Iiwib3B0Iiwic3RoIiwicm91bmQiLCJyb3dzX29yX2NvbHVtbnNfb2Zfc2V4cCIsInNleHBfMDQxIiwic2V4cF9vZl9yb3dzX29yX2NvbHVtbnMiLCJncm91cCQwIiwiYmluX3NoYXBlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9zaXplX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZV9yb3dzX29yX2NvbHVtbnMiLCJiaW5fd3JpdGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyQwIiwiYmluX3JlYWRlcl9yb3dzX29yX2NvbHVtbnMiLCJiaW5fcm93c19vcl9jb2x1bW5zIiwicm93cyIsImNvbHVtbnMiLCJpc19yb3dzIiwiaXNfY29sdW1ucyIsInJvd3NfdmFsIiwiY29sdW1uc192YWwiLCJyb3dzJDAiLCJjb2x1bW5zJDAiLCJmb2xkJDEiLCJyb3dzX2Z1biIsImNvbHVtbnNfZnVuIiwiaXRlciQxIiwibWFwJDIiLCJtYWtlX21hdGNoZXIiLCJyb3dzX2dlbiIsImNvbHVtbnNfZ2VuIiwidG9fcmFuayIsInRvX25hbWUiLCJjb21wYXJlX3Jvd3Nfb3JfY29sdW1ucyIsImlubmVySGVpZ2h0IiwiaW5uZXJXaWR0aCIsImVsZW1lbnRfaXNfaW5fdmlld3BvcnQiLCJlbHQiLCJzY3JvbGwiLCJpZCIsInZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCIsInZpZXdwb3J0X3JlY3QiLCJjbGllbnRfcmVjdF9vZl9lbGVtZW50IiwiYm91bmRpbmdfcmVjdCIsImNsaWVudF9yZWN0IiwiZmluZF92aXNpYmxlX3JhbmdlIiwibGVuZ3RoIiwibnRoX2VsZW1lbnRfaWQiLCJsYXlvdXQiLCJlbGVtZW50X3NlYXJjaCIsInNlYXJjaF9ieSIsIm1vZGUiLCJ4IiwibnRoX2VsZW1lbnQiLCJmaXJzdCIsImxhc3QiLCJnZXQiLCJpc19hc2NlbmRpbmciLCJsZW5ndGgkMCIsInZpZXdwb3J0X3JlY3QkMCIsInRhcmdldCIsInRhcmdldCQwIiwic2VhcmNoX2J5JDAiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIiwiZ2V0X3Njcm9sbF9jb250YWluZXIiLCJlbCIsImZpbGVuYW1lIiwicHJpbnRfZXJyb3JmIiwiZm10IiwicyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwiY2FsbGJhY2siLCJjdXJyZW50X2NvbnRleHQiLCJyZXF1ZXN0X2lkcyIsImNhbGxiYWNrJDAiLCJzZXRfdGltZW91dF9pZCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsImFuaW1hdGlvbl9jYWxsYmFjayIsInRpbWVvdXRfY2FsbGJhY2siLCJhc19mb2N1c2FibGUiLCJtYXJrX2RpcnR5IiwiaXNfZGlydHkiLCJ4XzAwMiIsInhfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJzZXRfbG9nZ2luZ19maWx0ZXIiLCJsb2dnaW5nX2ZpbHRlciIsImdsb2JhbF9pc19pbml0aWFsaXplZCIsImFwcF9zdGF0ZXMiLCJzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCIsInN0cmluZ3MiLCJzdHIiLCJtdWx0aV9saW5lX3N0cmluZ19saXN0IiwiZ2V0X3RhZ19uYW1lIiwibm9kZSIsImUiLCJzdGFydF9ib25zYWkiLCJiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCIsImluaXRpYWxfbW9kZWwiLCJkZWJ1ZyIsInN0aCQwIiwic3RvcCIsInN0aCQxIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImN1dG9mZiIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJnZXRfdmlldyIsIm5hbWVkX2xvZ2dpbmdfZmlsdGVycyQwIiwiZmlsdGVyX25hbWVzIiwid2l0aF9hcHBfaWRfb3B0IiwidXBkYXRlX3N0YXRlIiwiYXBwX2lkX29wdCIsImFwcF9pZF9vcHQkMCIsImFwcF9pZCIsInN0YXRlIiwidXBkYXRlX2xvZ2dpbmdfZmlsdGVyIiwidXBkYXRlX3Nob3VsZF9wcm9maWxlIiwic2hvdWxkX3Byb2ZpbGUiLCJ1cGRhdGVfc2hvdWxkX2RlYnVnIiwic2hvdWxkX2RlYnVnIiwiYmxhbmdfc3RyIiwiYmxhbmdfc3RyJDAiLCJhcHBfc3RhdGUiLCJibGFuZyIsImludmFsaWRfbmFtZXMiLCJuYW1lIiwiZmlsdGVyIiwiZmlsdGVyJDAiLCJhY3Rpb25fc2V4cCIsImNvbnRlbnRzIiwiYXBwX2luaXRfbWVzc2FnZSIsInNob3VsZF9kZWJ1ZyQwIiwic2hvdWxkX3Byb2ZpbGUkMCIsImh0bWwiLCJodG1sX2RvbSIsInBhcmVudCIsImNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCIsImV2ZW50X25hbWUiLCJ3aGVyZSIsInByZXZfaHRtbCIsInByZXZfZWx0IiwicmVmb2N1c19yb290X2VsZW1lbnQiLCJlbGVtZW50IiwidGltZXJfc3RhcnQiLCJwcm9maWxlIiwidGltZXJfc3RvcCIsImJlZm9yZSIsImFmdGVyIiwicmVsYXRlZF90YXJnZXQiLCJzYWZlX2ZpbHRlciIsInNob3VsZF9sb2ciLCJlcnIiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDEyIiwibmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIiwicGVyZm9ybV91cGRhdGUiLCJkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsImFkZF9uZXdfYXR0cnMiLCJhdHRycyIsImh0bWwkMCIsInBhdGNoIiwib2xkX3RhZ19uYW1lIiwibmV3X3RhZ19uYW1lIiwidGFnc190aGVfc2FtZSIsInN0YXJ0IiwiYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24iLCJvbGRfbW9kZWwiLCJpbmplY3QiLCJjb21wb25lbnQiLCJzY2hlZHVsZV9ldmVudCIsInNjaGVkdWxlX2FjdGlvbiIsImVycm9yX3NvdXJjZV8wMTQiLCJpbnZhcmlhbnQiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsInRvX3N0cmluZyIsImVxdWFsIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDUiLCJiXzAwNiIsImFfMDA5IiwiYl8wMTAiLCJ1cGRhdGVfb2Zfc2V4cCIsIm9mX2FfMDExIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTYiLCJpbnB1dF8wMTkiLCJ2YWx1ZV8wMjEiLCJkdXBsaWNhdGVzXzAyMyIsImV4dHJhXzAyNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjciLCJmaWVsZF9uYW1lXzAyNSIsInRhaWxfMDMxIiwiZmllbGRfc2V4cF8wMjYkMiIsImZpZWxkX3NleHBfMDI2IiwieF8wMzIiLCJmaWVsZF9zZXhwXzAyNiQwIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI2JDEiLCJmdmFsdWVfMDI5IiwidmFsdWVfMDIyIiwiaW5wdXRfMDIwIiwiZmllbGRfc2V4cHNfMDMzIiwiaW5wdXRfMDM2IiwibGFzdF92YWxpZF8wMzgiLCJlcnJvcl8wNDAiLCJkdXBsaWNhdGVzXzA0MiIsImV4dHJhXzA0MyIsInNleHBfMDM0IiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MSIsImZpZWxkX3NleHBfMDQ1JDMiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDUyIiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDgiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDQ3IiwiZXJyb3JfMDQxIiwibGFzdF92YWxpZF8wMzkiLCJpbnB1dF8wMzciLCJzZXhwX29mX3VwZGF0ZSIsIm9mX2FfMDU0IiwidmFsdWVfMDU4IiwiaW5wdXRfMDU2IiwiYXJnXzA1OSIsImJuZHNfMDU1IiwiYXJnXzA1NyIsImJuZHNfMDU1JDAiLCJlcnJvcl8wNjUiLCJsYXN0X3ZhbGlkXzA2MyIsImlucHV0XzA2MSIsImFyZ18wNjYiLCJibmRzXzA2MCIsImFyZ18wNjQiLCJibmRzXzA2MCQwIiwiYXJnXzA2MiIsImJuZHNfMDYwJDEiLCJncm91cCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2MiIsInYxIiwic2l6ZSIsInYzIiwidjIkMCIsInYxJDAiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCIsIndyaXRlX2EiLCJidWYiLCJwb3MiLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X2lucHV0Iiwidl92YWx1ZSIsInZfaW5wdXQkMCIsInZfbGFzdF92YWxpZCIsInZfZXJyb3IiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJhXzA2OCIsImJfMDY5IiwiYV8wNzIiLCJiXzA3MyIsIm4iLCJuJDAiLCJhXzA3NiIsImJfMDc3IiwibiQxIiwiZXF1YWxfdXBkYXRlIiwiYV8wNzgiLCJiXzA3OSIsImFfMDgwIiwiYl8wODEiLCJncm91cCQwIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJiaW5fdXBkYXRlIiwiY29tcGFyZV91cGRhdGUiLCJhXzA4NyIsImJfMDg4IiwiYV8wODkiLCJiXzA5MCIsImxpZnQiLCJNIiwiaW5wdXQkMSIsInZhbHVlIiwiaW5wdXQiLCJpbnB1dCQwIiwiZXhuJDAiLCJleG4iLCJpbml0aWFsX2VtcHR5IiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwibGFzdF92YWxpZCIsImdldF9lcnJvciIsImVycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJzdHJ1Y3R1cmFsX2xpc3QiLCJvcHQiLCJjaGlsZHJlbiIsInN0aCIsIm9yaWVudGF0aW9uIiwibGF5b3V0X3N0eWxlIiwiY2hpbGQiLCJzZXhwX29mX3QiLCJjb21iaW5lIiwibGVmdCIsInJpZ2h0IiwiaW5pdCIsImVsZW1lbnQiLCJmIiwiZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQiLCJjaGFuZ2VfaGFuZGxlciIsIm5vcm1hbGl6ZWQiLCJjaGFuZ2VfaGFuZGxlciQwIiwiZXZlbnRfaWQiLCJvbl9tb3VudCIsInN0YXRlIiwiZGVzdHJveSIsInVwZGF0ZSQwIiwib2xkX2lucHV0IiwibmV3X2lucHV0IiwiY3JlYXRlIiwiaW1wbCIsInZhbHVlcyIsInNlbGVjdGVkIiwib25fY2hhbmdlIiwiZXh0cmFfYXR0cnMiLCJzdGgkMCIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInZhbHVlcyQwIiwiYV8wOTEiLCJiXzA5MiIsImFfMDkzIiwiYl8wOTQiLCJvZl9lbnVtIiwib2ZfZW51bV9vcHQiLCJhXzA5NSIsImJfMDk2IiwiYV8wOTciLCJiXzA5OCIsImltcGwkMCIsImlzX2NoZWNrZWQiLCJsYWJlbCIsIm9uX3RvZ2dsZSIsImV2Iiwic2ltcGxlIiwiaW1wbCQxIiwiaXRlbSIsIm9mX3ZhbHVlcyQwIiwib2ZfZW51bSQwIiwiaW1wbCQyIiwicmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IiLCJzdGgkMSIsInRhcmdldCIsImkiLCJvcHRpb25zIiwic2VsZWN0ZWRfdmFsdWVzIiwiaXNfc2VsZWN0ZWQiLCJ3YXNfcmVwZWF0ZWRfY2xpY2siLCJvZl92YWx1ZXMkMSIsIm9mX2VudW0kMSIsImxpc3RlbmVyIiwibm9ybWFsaXplIiwibWF5YmVfb25fcmV0dXJuIiwib25fcmV0dXJuIiwib25fcmV0dXJuJDAiLCJpbnB1dF9ub2RlIiwicGxhY2Vob2xkZXIiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwiY2FsbF9vbl9pbnB1dF93aGVuIiwic2hvdWxkX25vcm1hbGl6ZSIsInR5cGVfYXR0cnMiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm9mX3N0cmluZ2FibGUiLCJ2YWxpZGF0ZWQiLCJWIiwidmFsdWVfYXR0ciIsInRleHQiLCJudW1iZXIiLCJzdGVwIiwicmFuZ2UiLCJ0aW1lIiwiZGF0ZSIsImRhdGV0aW1lX2xvY2FsIiwidXRjX29mZnNldCIsImhvdXJzIiwiem9uZSIsInBhcnRzIiwiaHIiLCJtaW4iLCJvZmRheSIsIlpvbmVkX3RpbWUiLCJ0ZXh0X2FyZWEiLCJzdGgkMiIsImNvbG9yX3BpY2tlciIsImV4dHJhX2F0dHIiLCJ3aXRoX3ZhbGlkYXRpb24iLCJ2YWxpZGF0aW9uIiwib25fY2xpY2siLCJyZXN1bHQiLCJyZWFzb24iLCJzaW1wbGUkMCIsImJhcmVib25lc19idXR0b25fbGlrZSIsImNoZWNrZWQiLCJoaWRlX25hdGl2ZV9pbnB1dHMiLCJpbXBsJDMiLCJuYW1lIiwic3R5bGUiLCJleHRyYV9hdHRycyQwIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJvZl92YWx1ZXMkMiIsIkUiLCJvZl92YWx1ZXNfaG9yaXpvbnRhbCIsImFjY2VwdF9hdHRycyIsImFjY2VwdHMiLCJzJDAiLCJsaXN0IiwiYWNjZXB0IiwiZmlsZXMiLCJzaW5nbGUiLCJmaWxlX2xpc3QiLCJmaWxlIiwiZW1wdHkiLCJpc19lbXB0eSIsInQiLCJ6ZXJvX2JpdCIsImsiLCJtIiwibWVtIiwiaiIsInIiLCJsIiwibCQwIiwiZmluZCIsIngiLCJmaW5kX29wdCIsImZpbmRfZmlyc3Rfb3B0IiwiZiIsInJ2IiwicmsiLCJsdiIsImxrIiwidiQwIiwiZmluZF9maXJzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX2xhc3QiLCJtYXNrIiwicCIsImpvaW4iLCJ0MSIsInAxIiwidDAiLCJwMCIsIm1hdGNoX3ByZWZpeCIsImFkZCIsImlucyIsInNpbmdsZXRvbiIsInYiLCJicmFuY2giLCJ0JDAiLCJyZW1vdmUiLCJybXYiLCJjYXJkaW5hbCIsIml0ZXIiLCJtYXAiLCJtYXBpIiwiZm9sZCIsInMiLCJhY2N1IiwicyQwIiwiYWNjdSQwIiwiYWNjdSQxIiwiZm9yX2FsbCIsImV4aXN0cyIsImZpbHRlciIsInByIiwiZmlsdGVyX21hcCIsInBhcnRpdGlvbiIsInBhcnQiLCJhY2MkMCIsImNob29zZSIsImNob29zZV9vcHQiLCJzcGxpdCIsImNvbGwiLCJiIiwibWluX2JpbmRpbmciLCJicyIsImtzIiwiYnQiLCJrdCIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwiYmluZGluZ3MiLCJhY2MiLCJjb21wYXJlIiwiY21wIiwidDIiLCJjb21wYXJlX2F1eCIsInQxJDAiLCJ0MiQwIiwieDEiLCJrMSIsIngyIiwiazIiLCJjIiwicjEiLCJsMSIsIm0xIiwicjIiLCJsMiIsIm0yIiwicDIiLCJjJDAiLCJjJDEiLCJjJDIiLCJlcXVhbCIsImVxIiwiZXF1YWxfYXV4IiwibWVyZ2UiLCJhZGQkMCIsInYxIiwidjIiLCJ1cGRhdGUiLCJ6IiwidW5zaWduZWRfbHQiLCJuIiwidCQyIiwiczEiLCJzMCIsImskMCIsInEiLCJ0JDEiLCJ1bmlvbiIsInRvX3NlcSIsInByZXBlbmRfc2VxIiwibSQwIiwicyQxIiwidG9fc2VxX2Zyb20iLCJrZXkiLCJhZGRfc2VxIiwib2Zfc2VxIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwicmVhZF9qdW5rIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsImZpZWxkcyQwIiwicmVzdCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJzeW1ib2wiLCJjbHNzIiwiZGl2X2MiLCJjbHMiLCJzcGFuX2MiLCJkaXZfZW1wdHkiLCJkaXZfaWYiLCJwIiwiYXRzIiwibnMiLCJzcGFuX2lmIiwidW5sZXNzIiwiYSIsInN3YXAiLCJiIiwibWFwMiIsImYiLCJtYXAzIiwiYyIsInByaW50X3RpbWVfcHJlZml4IiwibmFtZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsInByaW50X3RpbWUiLCJwcmludF90aW1lcyIsInRpbWVzIiwibGFzdCIsImdvIiwicHJldmlvdXNfdGltZSIsInByZXZpb3VzX3RpbWUkMCIsInRpbWVzJDAiLCJ0aW1lcyQxIiwicHJldmlvdXNfdGltZSQxIiwibWVhc3VyZV90aW1lIiwibWVhc3VyZSIsIngiLCJjYXQiLCJyZW1vdmVfbnRoIiwibiIsInQiLCJyZW1vdmVfZmlyc3QiLCJyZW1vdmVfbGFzdCIsImluc2VydF9udGgiLCJzIiwic3BsaXRfbnRoIiwidG9fbGlzdCIsImkiLCJyZXBlYXQiLCJhYmJyZXZpYXRlIiwibWF4X2xlbiIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInppcCIsInkiLCJzZXF1ZW5jZSIsIm1zIiwiYWNjIiwibXMkMCIsIm0iLCJvZl9hXzAwMSIsIm9mX2FfMDAzIiwieGYiLCJtYXRjaCIsImV4biQwIiwiZXhuIiwicyQwIiwiZ2V0IiwicHV0IiwibW9kaWZ5IiwibW9kaWZ5JDAiLCJnZXQkMCIsInB1dCQwIiwibW9kaWZ5JDEiLCJtb2RpZnkkMiIsImVycm9yX3NvdXJjZV8wMDUiLCJ0cF9sb2MiLCJsZXQkMCIsInJlc3VsdCIsImxldCQxIiwicHBfcGVyc2lzdGVudCIsInBvbHlfYSIsInBvbHlfYiIsImZtdCIsImEwIiwiYTAkMCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfcGVyc2lzdGVudCIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwib2ZfYSIsIm9mX2IiLCJ5b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsIm9mX3BlcnNpc3RlbnQiLCJwcCIsInRfb2ZfeW9qc29uIiwieW9qc29uX29mX3QiLCJtYXBfZnN0IiwibWFwX3NuZCIsImlmX25vbmUiLCJvIiwiZ2V0X29yX2ZhaWwiLCJnZXRfb3JfcmFpc2UiLCJlIiwibzEiLCJvMiIsInYyIiwidjEiLCJzb21lX2lmIiwiY29uZCIsInVuemlwIiwibCIsInhzIiwiYW5kX3RoZW4iLCJlcnJvcl9zb3VyY2VfMDA4IiwicHBfdiIsImsiLCJ2IiwiYmluZGluZ19vZl9zZXhwIiwib2Zfdl8wMDEiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInNleHBfb2ZfYmluZGluZyIsIm9mX3ZfMDA5IiwiYXJnMV8wMTEiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwic2V4cF9vZl92Iiwidl9vZl9zZXhwIiwic2V4cCIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInYxJDAiLCJ5b2pzb25fb2ZfYmluZGluZyIsInlvanNvbl9vZl92Iiwidl9vZl95b2pzb24iLCJyZXZfaWYiLCJkZWR1cCIsImRlZHVwZWQiLCJkZWR1cF9mIiwiYXJlX2R1cGxpY2F0ZXMiLCJncm91cF9ieSIsImtleSIsImdyb3VwZWQiLCJrX2dyb3VwIiwicmFuZ2UiLCJvcHQiLCJoaSIsInN0aCIsImxvIiwibWtfZnJhbWUiLCJpbnZhbGlkX2FyZyIsInhzJDAiLCJzdWZmaXgiLCJwcmVmaXgiLCJzcGxpdCIsInBvc3QiLCJ4JDAiLCJwcmUiLCJzcGxpdF9mcmFtZSIsInhzJDEiLCJzdWJqIiwib2ZfZnJhbWUiLCJzdWJqZWN0IiwiY29tYmluZV9vcHQiLCJ5cyIsInh5cyIsImlzX2VtcHR5IiwiZmxhdF9tYXAiLCJqb2luIiwic2VwIiwiaGRfb3B0IiwiaGQiLCJudGhfb3B0IiwibiQwIiwidGwiLCJuJDEiLCJzcGxpdF9uX29wdCIsInNwbGl0X24iLCJyIiwic3BsaXRfc3VibGlzdF9vcHQiLCJqIiwicmlnaHQiLCJsZWZ0IiwibWlkIiwibGVmdCQwIiwic3BsaXRfc3VibGlzdCIsInN1Ymxpc3QiLCJzcGxpdF9udGhfb3B0IiwicHV0X250aCIsInRsJDAiLCJ0bCQxIiwibWFwX250aCIsImhkJDAiLCJzcGxpdF9sYXN0X29wdCIsImxlYWRpbmciLCJzcGxpdF9sYXN0IiwibGFzdF9vcHQiLCJsZW5ndGgiLCJzcGxpdF9maXJzdF9vcHQiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfZmlyc3QiLCJmb2xkX2xlZnRfbWFwIiwic3RhcnQiLCJuZXdfYWNjIiwiZmluYWwkMCIsInRha2Vfd2hpbGUiLCJyZXN0IiwidGFrZW4iLCJwcm9kdWN0Iiwib3JkZXJlZF9wYWlycyIsIm5laWdoYm9ycyIsIngyIiwieDEiLCJtYXBfYWx0IiwiZngiLCJmeSIsImludGVybGVhdmUiLCJwX2luZGljZXMiLCJpZHhzIiwic3BsaXRzIiwiZWxlbV9zcGxpdHMiLCJyb3RhdGUiLCJzaW5nbGVfZWxlbSIsImNvdW50X3ByZWQiLCJmb3JfYWxsMl9vcHQiLCJtYXAyX29wdCIsInJlcGxpY2F0ZSIsImMkMCIsImMkMSIsIm9wdF96aXAiLCJ5cyQwIiwiemlwX2RlZmF1bHRzIiwiZGVmYXVsdF94IiwiZGVmYXVsdF95IiwieXMkMSIsInkkMCIsInVwZGF0ZV9udGgiLCJkaXNqb2ludF9wYWlycyIsImZpbmRpX29wdCIsInBhaXIiLCJpbml0X2ZvbGQiLCJlbHQiLCJhY2MkMCIsInJldl94cyIsImFzc29jX2VyciIsImVyciIsInVwZGF0ZV9hc3NvYyIsInYkMCIsImskMCIsInNwbGl0X2F0X25vbmVzIiwiYWNjcyIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsInhzJDIiLCJhY2MkNCIsImZpcnN0X2FuZF9sYXN0IiwieHNzIiwicmV2X2NvbmNhdCIsImxzIiwicnMiLCJscyQwIiwicnMkMCIsInJzJDEiLCJ6cyIsInpzJDAiLCJ6IiwibHN0IiwidGFpbCIsImJzIiwiYXMiLCJjcm9zcyIsImludGVyc3BlcnNlIiwiZmxhdF9pbnRlcnNwZXJzZSIsInhzcyQwIiwibWFwX2xhc3Rfb25seSIsInNwbGl0X2xhc3QkMCIsIm1pbmltdW0iLCJsb29wIiwiYmVzdCIsImJlc3RfZiIsImJlc3QkMCIsImJlc3RfZiQwIiwiYmVzdCQxIiwiYmVzdF9mJDEiLCJlcnJvcl9zb3VyY2VfMDAzIiwic2hvdyIsInNleHBfMDA0IiwidG9nZ2xlIiwic2lnbiIsImNob29zZSIsImQiLCJta19vcHQiLCJtayIsImZpbmRfbWsiLCJvcmllbnQiLCJwcmVmaXgkMCIsImFwcGVuZCIsInN1ZmZpeCQwIiwibnVtX2RpZ2l0cyIsIm1vZHVsbyIsImlwb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpcG93X2l0ZXIiLCJiJDAiLCJlJDAiLCJyJDAiLCJlJDEiLCJiJDEiLCJyJDEiLCJlJDIiLCJiJDIiLCJzaW5nbGV0b24iLCJkaXNqX3VuaW9uIiwibSQwIiwicG9seV9sIiwicG9seV9yIiwib2ZfbF8wMDEiLCJvZl9yXzAwMiIsIm9mX2xfMDE5Iiwib2Zfcl8wMjAiLCJvZl9sIiwib2ZfciIsImlzX0wiLCJpc19SIiwiZ2V0X0wiLCJnZXRfUiIsImVycm9yX3NvdXJjZV8wMDkiLCJhMSIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9hXzAxMCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJmaXJzdF9hIiwibGFzdF9hIiwicmV2IiwicmV2X2EiLCJyZXZfYiIsImNvbnMiLCJzbm9jIiwiZ2V0X2FzIiwiZ2V0X2JzIiwiYWJhX3RyaXBsZXMiLCJhYmEiLCJhMiIsImJhYl90cmlwbGVzIiwiYjEiLCJiMiIsImJhYl90cmlwbGVzJDAiLCJtYXBfYSIsImZfYSIsIm1hcF9iIiwiZl9iIiwibWFwX2FiYXMiLCJmX2FiYSIsIm1hcF9oZCIsInRyaW0iLCJhcyQwIiwiYXMkMSIsImNzIiwiZm9sZF9sZWZ0IiwiZl9iYSIsIm1hcHBlZCIsImZvbGRfcmlnaHQiLCJmX2FiIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImR1bW15IiwiaW5leGlzdGFudCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm9sIiwiZW9sIiwiYm93IiwiZW93Iiwid29yZCIsIm5vdF9ib3VuZGFyeSIsImJvcyIsImVvcyIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJlbmNsb3NlZF9zZXQkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsImVycm9yX3NvdXJjZV8wMDgiLCJ0cF9sb2MiLCJzZXhwX29mX3QiLCJ0IiwidF9vZl9zZXhwIiwicyIsInlvanNvbl9vZl90IiwidF9vZl95b2pzb24iLCJtayIsImNvbXBhcmUiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmciLCJwcCIsImYiLCJpZCIsInNob3ciLCJiaW5kaW5nX29mX3NleHAiLCJvZl92XzAwMSIsInNleHBfMDA3IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInJlczBfMDA1IiwicmVzMV8wMDYiLCJzZXhwX29mX2JpbmRpbmciLCJvZl92XzAwOSIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYmluZGluZ19vZl95b2pzb24iLCJvZl92IiwieW9qc29uIiwidjEiLCJ2MCIsInYwJDAiLCJ2MSQwIiwieW9qc29uX29mX2JpbmRpbmciLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdiIsIm1hcCIsInRfb2Zfc2V4cCQwIiwidl9vZl9zZXhwIiwic2V4cCIsInlvanNvbl9vZl90JDAiLCJ5b2pzb25fb2ZfdiIsInRfb2ZfeW9qc29uJDAiLCJ2X29mX3lvanNvbiIsImpzb24iLCJwcCQwIiwicHBfdiIsImZtdCIsInYiLCJrIiwiaW52YWxpZCIsIm51bGxhcnlfYXBfZmxhZyIsImlzX251bGxhcnlfYXBfZmxhZyIsImlkcyIsImluaXQiLCJycmVmIiwiYWRkJDAiLCJhIiwiciIsImdldCIsImdldF9vcHQiLCJzZXQiLCJtZXJnZSQwIiwiaWQkMCIsImVycm9yX3NvdXJjZV8wMDMiLCJlcnJvcl9zb3VyY2VfMDA3IiwidHBfbG9jJDAiLCJlcnJvcl9zb3VyY2VfMDExIiwidHBfbG9jJDEiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jJDIiLCJlcnJvcl9zb3VyY2VfMDE5IiwidHBfbG9jJDMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidHBfbG9jJDQiLCJlcnJvcl9zb3VyY2VfMDI3IiwidHBfbG9jJDUiLCJlcnJvcl9zb3VyY2VfMDMxIiwidHBfbG9jJDYiLCJlcnJvcl9zb3VyY2VfMDU2IiwidHBfbG9jJDciLCJlcnJvcl9zb3VyY2VfMDg4IiwidHBfbG9jJDgiLCJwcF9vcF91bl9ib29sIiwib3BfdW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX29wX3VuX2Jvb2wiLCJvcF91bl9ib29sX29mX3lvanNvbiIsInlvanNvbl9vZl9vcF91bl9ib29sIiwicHBfb3BfdW5fbWV0YSIsIm9wX3VuX21ldGFfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9vcF91bl9tZXRhIiwib3BfdW5fbWV0YV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5fbWV0YSIsInBwX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl9zZXhwIiwic2V4cF8wMTIiLCJzZXhwX29mX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5faW50IiwicHBfb3BfYmluX2Jvb2wiLCJvcF9iaW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX29wX2Jpbl9ib29sIiwib3BfYmluX2Jvb2xfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9ib29sIiwicHBfb3BfYmluX2ludCIsIm9wX2Jpbl9pbnRfb2Zfc2V4cCIsInNleHBfMDIwIiwic2V4cF9vZl9vcF9iaW5faW50Iiwib3BfYmluX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2ludCIsInBwX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl9zZXhwIiwic2V4cF8wMjQiLCJzZXhwX29mX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2Zsb2F0IiwicHBfb3BfYmluX3N0cmluZyIsIm9wX2Jpbl9zdHJpbmdfb2Zfc2V4cCIsInNleHBfMDI4Iiwic2V4cF9vZl9vcF9iaW5fc3RyaW5nIiwib3BfYmluX3N0cmluZ19vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX3N0cmluZyIsInBwX29wX3VuIiwic2hvd19vcF91biIsIl8yIiwiXzEiLCJfMCIsImEwIiwiYTAkMCIsImEwJDEiLCJ4Iiwib3BfdW5fb2Zfc2V4cCIsInNleHBfMDMzIiwidGFnXzAzNCIsInNleHBfYXJnc18wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3Iiwic2V4cF9hcmdzXzA0MCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfb2Zfb3BfdW4iLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwicmVzMF8wNTMiLCJvcF91bl9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInlvanNvbl9vZl9vcF91biIsInBwX29wX2JpbiIsInNob3dfb3BfYmluIiwiXzMiLCJfMiQwIiwiXzEkMCIsIl8wJDAiLCJhMCQyIiwib3BfYmluX29mX3NleHAiLCJzZXhwXzA1OCIsInRhZ18wNTkiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wNzYiLCJyZXMwXzA3NyIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzA2NSIsImFyZzBfMDY2IiwicmVzMF8wNjciLCJzZXhwX2FyZ3NfMDcwIiwiYXJnMF8wNzEiLCJyZXMwXzA3MiIsInNleHBfb2Zfb3BfYmluIiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJhcmcwXzA4MiIsInJlczBfMDgzIiwiYXJnMF8wODQiLCJyZXMwXzA4NSIsIm9wX2Jpbl9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fb2Zfb3BfYmluIiwicHBfYXBfZGlyZWN0aW9uIiwic2hvd19hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2Zfc2V4cCIsInNleHBfMDg5Iiwic2V4cF9vZl9hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FwX2RpcmVjdGlvbiIsInNob3dfb3BfdW5fbWV0YSIsInNob3dfb3BfdW5fYm9vbCIsInNob3dfb3BfdW5faW50Iiwic2hvd191bm9wIiwib3AiLCJvcCQwIiwib3AkMSIsInNob3dfb3BfYmluX2Jvb2wiLCJzaG93X29wX2Jpbl9pbnQiLCJzaG93X29wX2Jpbl9mbG9hdCIsInNob3dfb3BfYmluX3N0cmluZyIsInNob3dfYmlub3AiLCJvcCQyIiwiYm9vbF9vcF90b19zdHJpbmciLCJpbnRfb3BfdG9fc3RyaW5nIiwiZmxvYXRfb3BfdG9fc3RyaW5nIiwic3RyaW5nX29wX3RvX3N0cmluZyIsImJpbl9vcF90b19zdHJpbmciLCJvcCQzIiwibWF4IiwidW5xdW90ZSIsImNhc3QiLCJhcCIsIm5lZyIsInBvd2VyIiwibXVsdCIsIm5vdCIsInBsdXMiLCJjb25zIiwiY29uY2F0IiwiZXFzIiwiYW5kIiwib3IiLCJhbm4iLCJpZiQwIiwiZnVuIiwicHJvZCIsInNlbWkiLCJsZXQkMCIsInJ1bGVfYXJyIiwicnVsZV9wcmUiLCJydWxlX3NlcCIsImNhc2UkMCIsIm1pbiIsInAxIiwicDIiLCJhc3NvY2lhdGl2aXR5X21hcCIsImFzc29jaWF0aXZpdHkiLCJwIiwib2ZfYmluX29wIiwiYWxsIiwicm9vdCIsImNvbnNpc3RlbnQiLCJzJDAiLCJ0b19zdHJpbmdfdmVyYm9zZSIsImVycm9yX3NvdXJjZV8wMjYiLCJzZXhwXzAwNSIsInRhZ18wMDYiLCJzZXhwX2FyZ3NfMDA3IiwiYXJnMF8wMDgiLCJyZXMwXzAwOSIsInJlczBfMDExIiwiY29uY2F2ZSIsInAkMCIsInAkMSIsImZpdHMiLCJsIiwiZml0dGluZyIsImZsaXAiLCJhYnNvbHV0ZSIsImQiLCJyZWxhdGl2ZSIsIm5pYiIsInNpZGUiLCJzaG93JDAiLCJzZXhwXzAxMyIsImZpZWxkX3NleHBzXzAxNCIsInNoYXBlXzAxNSIsInNvcnRfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJpdGVyXzAyNyIsInNleHBfMDEzJDAiLCJmaWVsZF9zZXhwc18wMjMiLCJmaWVsZF9uYW1lXzAyMSIsInRhaWxfMDI4IiwiZmllbGRfc2V4cF8wMjIkMiIsImZpZWxkX3NleHBfMDIyIiwieF8wMjkiLCJmaWVsZF9zZXhwXzAyMiQwIiwiZnZhbHVlXzAyNCIsImZpZWxkX3NleHBfMDIyJDEiLCJmdmFsdWVfMDI1Iiwic29ydF8wMTgiLCJzaGFwZV8wMTYiLCJzb3J0XzAzMyIsInNoYXBlXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwiZmllbGRfeW9qc29ucyIsInNoYXBlX2ZpZWxkIiwic29ydF9maWVsZCIsImR1cGxpY2F0ZXMiLCJleHRyYSIsIml0ZXIiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwic29ydF92YWx1ZSIsInNoYXBlX3ZhbHVlIiwidl9zb3J0Iiwidl9zaGFwZSIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsInNoYXBlIiwibiIsImZpdHMkMCIsImZpdHRpbmckMCIsImZsaXAkMCIsInBwX3NoYXBlIiwic2hvd19zaGFwZSIsInNoYXBlX29mX3NleHAiLCJzZXhwX29mX3NoYXBlIiwic2hhcGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3NoYXBlIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJpZF8wMDgiLCJzaGFwZV8wMTAiLCJkdXBsaWNhdGVzXzAxMiIsImV4dHJhXzAxMyIsIml0ZXJfMDIwIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJzaGFwZV8wMTEiLCJpZF8wMDkiLCJzaGFwZV8wMjYiLCJpZF8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsImlkX2ZpZWxkIiwiaWRfdmFsdWUiLCJ2X2lkIiwiZyIsInNoYXBlcyIsIm1rX2ZpdHNfc2hhcGUiLCJmaXRzX3NoYXBlIiwiZyQwIiwibWVyZ2UiLCJncyIsInRsIiwiaGQiLCJmdCIsImxlbmd0aCIsInJtX250aCIsInJtX2xhc3QiLCJybV9maXJzdCIsInNwbGl0X250aCIsImluc2VydF9udGgiLCJzZXAiLCJ4XzAwMiIsInhfMDAzIiwicmV2IiwiaGRfdGwiLCJsYmwiLCJhMSIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwiYXJnMV8wMDkiLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfc2hhcGVzIiwic2hvd19zaGFwZXMiLCJvZl9ob2xlIiwic29ydCIsImVycm9yX3NvdXJjZV8wMTgiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsIm91dF8wMDQiLCJpbl8wMDYiLCJuaWJzXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwiaXRlcl8wMTkiLCJzZXhwXzAwMiQwIiwiZmllbGRfbmFtZV8wMTIiLCJ0YWlsXzAyMCIsImZpZWxkX3NleHBfMDEzJDMiLCJmaWVsZF9zZXhwXzAxMyIsInhfMDIxIiwiZmllbGRfc2V4cF8wMTMkMCIsImZpZWxkX3NleHBfMDEzJDEiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMiIsImZ2YWx1ZV8wMTYiLCJuaWJzXzAwOSIsImluXzAwNyIsIm91dF8wMDUiLCJuaWJzXzAyNyIsImluXzAyNSIsIm91dF8wMjMiLCJhcmdfMDI4IiwiYm5kc18wMjIiLCJhcmdfMDI2IiwiYm5kc18wMjIkMCIsImFyZ18wMjQiLCJibmRzXzAyMiQxIiwib3V0X2ZpZWxkIiwiaW5fZmllbGQiLCJuaWJzX2ZpZWxkIiwiZnZhbHVlJDEiLCJuaWJzX3ZhbHVlIiwiaW5fdmFsdWUiLCJvdXRfdmFsdWUiLCJ2X25pYnMiLCJ2X2luIiwidl9vdXQiLCJhcmckMSIsImJuZHMkMSIsImZsaXBfbmlicyIsIm0iLCJta19vcCIsIm91dCIsImluJDAiLCJta19wcmUiLCJta19wb3N0IiwibWtfYmluIiwibCQwIiwiciQwIiwibWtfcHJlJDAiLCJzb3J0X2wiLCJzb3J0X3IiLCJta19wb3N0JDAiLCJta19iaW4kMCIsIm5pYnMiLCJpbmRleCIsIm1vbGQiLCJpIiwibmliX3NoYXBlcyIsIm5pYl9yIiwibmliX2wiLCJvZl9ncm91dCIsIm4kMCIsIm9mX3NlY29uZGFyeSIsImNvbnNpc3RlbnRfc2hhcGVzIiwibXMiLCJpc19pbmZpeF9vcCIsImNoZXZyb24iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxNCIsImVycm9yX3NvdXJjZV8wMzYiLCJlcnJvcl9zb3VyY2VfMDQ5Iiwic3MiLCJpaSIsImlzIiwiZHMiLCJzcGFjZSIsImxpbmVicmVhayIsImNvbW1lbnRfcmVnZXhwIiwic3RyaW5nX2RlbGltIiwia2V5d29yZHMiLCJyZXNlcnZlZF9rZXl3b3JkcyIsImJvb2xzIiwiYmFzZV90eXBzIiwid2lsZCIsImxpc3Rfc3RhcnQiLCJsaXN0X2VuZCIsInR1cGxlX3N0YXJ0IiwidHVwbGVfZW5kIiwiZXhwbGljaXRfaG9sZSIsInJlZ2V4cCIsInBwX2xhYmVsIiwic2hvd19sYWJlbCIsImxhYmVsX29mX3NleHAiLCJzZXhwX29mX2xhYmVsIiwibGFiZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX2xhYmVsIiwicHBfZXhwYW5zaW9uX3RpbWUiLCJzaG93X2V4cGFuc2lvbl90aW1lIiwiZXhwYW5zaW9uX3RpbWVfb2Zfc2V4cCIsInNleHBfb2ZfZXhwYW5zaW9uX3RpbWUiLCJleHBhbnNpb25fdGltZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uX3RpbWUiLCJwcF9leHBhbnNpb24iLCJzaG93X2V4cGFuc2lvbiIsImV4cGFuc2lvbl9vZl9zZXhwIiwiYXJnMV8wMTAiLCJhcmcwXzAwOSIsInJlczFfMDEyIiwic2V4cF9vZl9leHBhbnNpb24iLCJhcmcxXzAxNiIsImFyZzBfMDE1IiwicmVzMF8wMTciLCJyZXMxXzAxOCIsImV4cGFuc2lvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uIiwiXzAkMSIsImZpZWxkX3NleHBzXzAyMSIsImxhYmVsXzAyMiIsImV4cGFuc2lvbl8wMjQiLCJtb2xkXzAyNiIsImR1cGxpY2F0ZXNfMDI4IiwiZXh0cmFfMDI5IiwiaXRlcl8wMzciLCJzZXhwXzAyMCQwIiwiZmllbGRfc2V4cHNfMDMyIiwiZmllbGRfbmFtZV8wMzAiLCJ0YWlsXzAzOCIsImZpZWxkX3NleHBfMDMxJDMiLCJmaWVsZF9zZXhwXzAzMSIsInhfMDM5IiwiZmllbGRfc2V4cF8wMzEkMCIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQxIiwiZnZhbHVlXzAzNSIsImZpZWxkX3NleHBfMDMxJDIiLCJmdmFsdWVfMDM0IiwibW9sZF8wMjciLCJleHBhbnNpb25fMDI1IiwibGFiZWxfMDIzIiwibW9sZF8wNDUiLCJleHBhbnNpb25fMDQzIiwibGFiZWxfMDQxIiwiYXJnXzA0NiIsImJuZHNfMDQwIiwiYXJnXzA0NCIsImJuZHNfMDQwJDAiLCJhcmdfMDQyIiwiYm5kc18wNDAkMSIsImxhYmVsX2ZpZWxkIiwiZXhwYW5zaW9uX2ZpZWxkIiwibW9sZF9maWVsZCIsIm1vbGRfdmFsdWUiLCJleHBhbnNpb25fdmFsdWUiLCJsYWJlbF92YWx1ZSIsInZfbW9sZCIsInZfZXhwYW5zaW9uIiwidl9sYWJlbCIsInBwX2JhZF90b2tlbl9jbHMiLCJzaG93X2JhZF90b2tlbl9jbHMiLCJiYWRfdG9rZW5fY2xzX29mX3NleHAiLCJzZXhwXzA1MCIsInNleHBfb2ZfYmFkX3Rva2VuX2NscyIsImJhZF90b2tlbl9jbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2JhZF90b2tlbl9jbHMiLCJleHBhbnNpb24iLCJsYWJlbCIsIm1rX2luZml4IiwicHJlYyIsIm1rX251bF9pbmZpeCIsImlzX2NvbW1lbnQiLCJpc19jb21tZW50X2RlbGltIiwiaXNfc2Vjb25kYXJ5IiwiaXNfc3RyaW5nIiwiZW1wdHlfc3RyaW5nIiwiaXNfc3RyaW5nX2RlbGltIiwic3RyaXBfcXVvdGVzIiwic3RyaW5nX3F1b3RlIiwiaXNfa2V5d29yZCIsImlzX3Jlc2VydmVkX2tleXdvcmQiLCJpc19wb3RlbnRpYWxfb3BlcmFuZCIsImlzX3BvdGVudGlhbF9vcGVyYXRvciIsImlzX3BvdGVudGlhbF90b2tlbiIsImlzX2FyYml0YXJ5X2ludCIsImlzX2FyYml0YXJ5X2Zsb2F0IiwiaXNfaW50Iiwic3RyIiwiaXNfYmFkX2ludCIsImlzX2Zsb2F0IiwiaXNfYmFkX2Zsb2F0IiwiaXNfYm9vbCIsImlzX3ZhciIsImlzX2NhcGl0YWxpemVkX25hbWUiLCJpc19iYXNlX3R5cCIsImlzX3R5cF92YXIiLCJpc193aWxkIiwibGlzdGxpdF9sYmwiLCJlbXB0eV9saXN0IiwiaXNfZW1wdHlfbGlzdCIsInR1cGxlX2xibCIsImVtcHR5X3R1cGxlIiwiaXNfZW1wdHlfdHVwbGUiLCJkdW9zcGxpdHMiLCJkdW9tZXJnZXMiLCJjb25zdF9tb25vX2RlbGltcyIsImlzX2V4cGxpY2l0X2hvbGUiLCJiYWRfdG9rZW5fY2xzIiwiYXRvbWljX2Zvcm1zIiwiZm9ybXMiLCJuYW1lIiwiYWNjIiwiZGVsaW1zIiwiYXRvbWljX21vbGRzIiwibW9sZHMiLCJ0ZXN0IiwiaXNfYXRvbWljIiwiaXNfZGVsaW0iLCJpc192YWxpZF90b2tlbiIsIm1rX2F0b21pYyIsImVycm9yX3NvdXJjZV8wMzciLCJwcF9jbHMiLCJzaG93X2NscyIsImNsc19vZl9zZXhwIiwic2V4cF9vZl9jbHMiLCJjbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2NscyIsInBwX3NlY29uZGFyeV9jb250ZW50Iiwic2hvd19zZWNvbmRhcnlfY29udGVudCIsInNlY29uZGFyeV9jb250ZW50X29mX3NleHAiLCJzZXhwXzAwOSIsInRhZ18wMTAiLCJzZXhwX2FyZ3NfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNleHBfYXJnc18wMTYiLCJhcmcwXzAxNyIsInJlczBfMDE4Iiwic2V4cF9vZl9zZWNvbmRhcnlfY29udGVudCIsImFyZzBfMDE5IiwicmVzMF8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2Vjb25kYXJ5X2NvbnRlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlY29uZGFyeV9jb250ZW50IiwiZmllbGRfc2V4cHNfMDI1IiwiaWRfMDI2IiwiY29udGVudF8wMjgiLCJkdXBsaWNhdGVzXzAzMCIsImV4dHJhXzAzMSIsIml0ZXJfMDM4Iiwic2V4cF8wMjQkMCIsImZpZWxkX3NleHBzXzAzNCIsImZpZWxkX25hbWVfMDMyIiwidGFpbF8wMzkiLCJmaWVsZF9zZXhwXzAzMyQyIiwiZmllbGRfc2V4cF8wMzMiLCJ4XzA0MCIsImZpZWxkX3NleHBfMDMzJDAiLCJmdmFsdWVfMDM2IiwiZmllbGRfc2V4cF8wMzMkMSIsImNvbnRlbnRfMDI5IiwiaWRfMDI3IiwiY29udGVudF8wNDQiLCJpZF8wNDIiLCJhcmdfMDQ1IiwiYm5kc18wNDEiLCJhcmdfMDQzIiwiYm5kc18wNDEkMCIsImNvbnRlbnRfZmllbGQiLCJjb250ZW50X3ZhbHVlIiwidl9jb250ZW50IiwiY2xzX29mIiwibWtfc3BhY2UiLCJta19uZXdsaW5lIiwiY29uc3RydWN0X2NvbW1lbnQiLCJjb250ZW50IiwiaXNfc3BhY2UiLCJ3IiwiaXNfbGluZWJyZWFrIiwiY29udGVudF9pc19jb21tZW50IiwiZ2V0X3N0cmluZyIsImVycm9yX3NvdXJjZV8wMDUiLCJlcnJvcl9zb3VyY2VfMDQ1IiwicHBfc2VnbWVudCIsInNob3dfc2VnbWVudCIsInBwX3BpZWNlIiwic2hvd19waWVjZSIsInBwX3RpbGUiLCJzaG93X3RpbGUiLCJzZWdtZW50X29mX3NleHAiLCJwaWVjZV9vZl9zZXhwIiwidGlsZV9vZl9zZXhwIiwidGFnXzAwOCIsInNleHBfYXJnc18wMDkiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfYXJnc18wMTQiLCJyZXMwXzAxNiIsInNleHBfMDIzIiwiZmllbGRfc2V4cHNfMDI0IiwiaWRfMDI1IiwibGFiZWxfMDI3IiwibW9sZF8wMjkiLCJzaGFyZHNfMDMxIiwiY2hpbGRyZW5fMDMzIiwiZHVwbGljYXRlc18wMzUiLCJleHRyYV8wMzYiLCJpdGVyXzA0NiIsInNleHBfMDIzJDAiLCJmaWVsZF9zZXhwc18wMzkiLCJmaWVsZF9uYW1lXzAzNyIsInRhaWxfMDQ3IiwiZmllbGRfc2V4cF8wMzgkNSIsImZpZWxkX3NleHBfMDM4IiwieF8wNDgiLCJmaWVsZF9zZXhwXzAzOCQwIiwiZnZhbHVlXzA0MSIsImZpZWxkX3NleHBfMDM4JDEiLCJmdmFsdWVfMDQyIiwiZmllbGRfc2V4cF8wMzgkMiIsImZ2YWx1ZV8wNDMiLCJmaWVsZF9zZXhwXzAzOCQzIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDM4JDQiLCJmdmFsdWVfMDQwIiwiY2hpbGRyZW5fMDM0Iiwic2hhcmRzXzAzMiIsIm1vbGRfMDMwIiwibGFiZWxfMDI4Iiwic2V4cF9vZl9zZWdtZW50IiwieF8wNDkiLCJzZXhwX29mX3BpZWNlIiwic2V4cF9vZl90aWxlIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsImNoaWxkcmVuXzA2NSIsInNoYXJkc18wNjMiLCJtb2xkXzA2MSIsImxhYmVsXzA1OSIsImlkXzA1NyIsImFyZ18wNjYiLCJibmRzXzA1NiIsImFyZ18wNjQiLCJibmRzXzA1NiQwIiwiYXJnXzA2MiIsImJuZHNfMDU2JDEiLCJhcmdfMDYwIiwiYm5kc18wNTYkMiIsImFyZ18wNTgiLCJibmRzXzA1NiQzIiwic2VnbWVudF9vZl95b2pzb24iLCJwaWVjZV9vZl95b2pzb24iLCJ0aWxlX29mX3lvanNvbiIsInNoYXJkc19maWVsZCIsImNoaWxkcmVuX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImNoaWxkcmVuX3ZhbHVlIiwic2hhcmRzX3ZhbHVlIiwieW9qc29uX29mX3NlZ21lbnQiLCJ5b2pzb25fb2ZfcGllY2UiLCJ5b2pzb25fb2ZfdGlsZSIsInZfY2hpbGRyZW4iLCJ2X3NoYXJkcyIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJta19zZWNvbmRhcnkiLCJzZXhwX2FyZ3NfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsInNfY2xlYXIiLCJzX3RvdWNoIiwic190b3VjaGVkIiwicHBfZXhwYW5zaW9ucyIsInNob3dfZXhwYW5zaW9ucyIsImV4cGFuc2lvbnNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9leHBhbnNpb25zIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJyZXMxXzAxNyIsInJlczFfMDIxIiwiZXhwYW5zaW9uc19vZl95b2pzb24iLCJ2MSQxIiwidjEkMiIsInlvanNvbl9vZl9leHBhbnNpb25zIiwib2xkX21vbGRzIiwiZm9ybXNfYXNzb2MiLCJtb2xkcyQwIiwiaGQkMCIsImRlbGF5ZWRfZXhwYW5zaW9ucyIsImluc3RhbnRfZXhwYW5zaW9ucyIsImRlbGF5ZWRfZXhwYW5zaW9uIiwiaW5zdGFudF9leHBhbnNpb24iLCJpc19kZWxheWVkIiwia3ciLCJhbGxvd19tZXJnZSIsImFsbG93X2FwcGVuZF9yaWdodCIsImNoYXIkMCIsImFsbG93X2FwcGVuZF9sZWZ0IiwiYWxsb3dfaW5zZXJ0aW9uIiwibmV3X3QiLCJpc19jb21wbGV0ZSIsImxfc2hhcmQiLCJyX3NoYXJkIiwiaGFzX2VuZCIsImhhc19lbmRzIiwidG9fcGllY2UiLCJzb3J0ZWRfY2hpbGRyZW4iLCJjaGlsZHJlbiIsInNoYXJkcyIsImNoaWxkIiwiY29udGFpbmVkX2NoaWxkcmVuIiwic3BsaXRfc2hhcmRzIiwiZGlzYXNzZW1ibGUiLCJzaGFyZHMkMCIsImRpc2ludGVncmF0ZSIsInJlYXNzZW1ibGUiLCJtYXRjaCIsInBvcF9sIiwidGlsZSIsInBvcF9yIiwic2Vjb25kYXJ5IiwiZ3JvdXQiLCJmX3ciLCJmX2ciLCJmX3QiLCJuaWJfc29ydHMiLCJpc19ncm91dCIsImlzX3RpbGUiLCJtb25vdGlsZSIsImdldF9vdXRzaWRlX3NvcnRzIiwib3B0Iiwic3RoIiwiZGVmYXVsdF9zb3J0IiwibW9sZF9vZiIsImVtcHR5IiwicHBfcm9vdCIsInNob3dfcm9vdCIsIl83IiwiXzYiLCJfNSIsIl80IiwiYTEkMCIsImEyIiwiYTEkMSIsInJvb3Rfb2Zfc2V4cCIsImFyZzFfMDE0IiwicmVzMF8wMTUiLCJyZXMxXzAxNiIsImFyZzFfMDIxIiwicmVzMV8wMjMiLCJzZXhwX2FyZ3NfMDI2IiwiYXJnMl8wMjkiLCJhcmcxXzAyOCIsImFyZzBfMDI3IiwicmVzMF8wMzAiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwieF8wMzQiLCJhcmcwXzAzNSIsInJlczBfMDM2Iiwic2V4cF9vZl9yb290IiwiYXJnMV8wMzgiLCJhcmcwXzAzNyIsInJlczBfMDM5IiwicmVzMV8wNDAiLCJhcmcxXzA0MiIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0OCIsInJlczFfMDQ5IiwicmVzMl8wNTAiLCJ4XzA1MSIsInJvb3Rfb2ZfeW9qc29uIiwidjIiLCJ2MSQzIiwidjEkNCIsInYyJDAiLCJ5b2pzb25fb2Zfcm9vdCIsInBwX2lwIiwic2hvd19pcCIsInJlbCIsInQxIiwidDIiLCJsYmwxIiwibGJsMiIsImVxIiwicjEiLCJsMiIsInNoYXBlJDAiLCJwcF9za2VsIiwic2hvd19za2VsIiwiXzAkMiIsIl8xJDEiLCJfMCQzIiwicG9wX2NoYWluIiwib3B0JDAiLCJwb3BwZWQiLCJvcHQkMSIsIm9wdCQyIiwic2hhcGVzX29mX2NoYWluIiwiY2hhaW4iLCJsYXN0IiwiZmlyc3QiLCJwdXNoX291dHB1dCIsInN0YWNrcyIsInN0YWNrcyQwIiwic2h1bnRlZCIsInByZWMkMCIsInByZWMkMSIsInNwbGl0X2tpZHMkMCIsInNwbGl0X2tpZHMiLCJvdXRwdXQiLCJraWRzIiwia2lkcyQwIiwia2lkcyQxIiwib3V0cHV0JDAiLCJvdXRwdXQkMSIsImtpZHMkMiIsImtpZHMkMyIsImwkMSIsIm91dHB1dCQyIiwia2lkcyQ0IiwiciQxIiwia2lkcyQ1Iiwib3V0cHV0JDMiLCJraWRzJDYiLCJzdGFja3MkMSIsInB1c2hfc2h1bnRlZCIsImlwIiwiZmluaXNoIiwic2VnIiwiZm9sZF9yaWdodCIsIm9mX3RpbGUiLCJ0aWxlcyIsImluY29tcGxldGVfdGlsZXMiLCJjb252ZXhfZ3JvdXQiLCJjb250YWluc19tYXRjaGluZyIsInQkMCIsInJlbW92ZV9tYXRjaGluZyIsInNub2MiLCJzaGFwZV9hZmZpeCIsImFmZml4IiwiZW1wdHlfd2d3IiwiZ28iLCJ0bCQwIiwid2d3Iiwid3NzIiwid3NzJDAiLCJ3cyIsImNvbnZleCIsInNwbGl0X2J5X2dyb3V0IiwicmVtb2xkIiwicmVtb2xkX3BhdCIsInJlbW9sZF90eXAiLCJyZW1vbGRfdHBhdCIsInJlbW9sZF9ydWwiLCJyZW1vbGRfZXhwIiwicmVtb2xkX3RpbGUiLCJyZW1vbGRlZCIsImNoaWxkJDAiLCJ0cyIsInJlbW9sZF90eXBfdW5pIiwicmVzdCQwIiwic2hhcGUkMiIsInJlbW9sZGVkJDEiLCJyZW1vbGRlZCQwIiwic2hhcGUkMSIsInJlc3QiLCJyZW1vbGRfcGF0X3VuaSIsInJlc3QkMiIsInNoYXBlJDUiLCJzaGFwZSQ0IiwicmVtb2xkZWRfdHlwIiwicmVtb2xkZWRfcGF0IiwicmVzdCQxIiwic2hhcGUkMyIsInJlbW9sZF90cGF0X3VuaSIsInJlbW9sZF9leHBfdW5pIiwicmVzdCQ2Iiwic2hhcGUkOSIsInJlbW9sZGVkX2V4cCIsInJlc3QkMyIsInJlbW9sZGVkX2V4cCQwIiwicmVzdCQ0Iiwic2hhcGUkNiIsInJlbW9sZGVkX3RwYXQiLCJyZXN0JDUiLCJzaGFwZSQ3IiwicmVtb2xkZWRfZXhwJDEiLCJzaGFwZSQ4Iiwic2tlbCIsImVtcHR5JDAiLCJyZXYkMCIsImNvbnNfdyIsImNvbnNfZyIsInJtX3VwX3RvX29uZV9zcGFjZSIsIndzJDAiLCJ3c3MkMSIsImFkZF9ncm91dCIsInJlZ3JvdXQiLCJ0cmltIiwibmV3X3NwYWNlcyIsIm1lcmdlZCIsImdzJDAiLCJ0b19zZWciLCJyZWdyb3V0JDAiLCJyZWdyb3V0X2FmZml4IiwidHJpbSQwIiwiYWZmaXgkMCIsInNwbGl0X2J5X21hdGNoaW5nIiwic2VnX3IiLCJzZWdfbCIsInRyaW1fZiIsInRyaW1fbCIsInBzIiwidHJpbV9zZWNvbmRhcnkiLCJ4cyIsInhzJDAiLCJ4cyQxIiwidHJpbV9ncm91dCIsInRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCIsInRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeSIsInhzJDIiLCJlZGdlX3NoYXBlX29mIiwidHJpbW1lZCIsImVkZ2VfZGlyZWN0aW9uX29mIiwic2VyaWFsaXplIiwic2FtZWxpbmVfc2Vjb25kYXJ5IiwiZXhwZWN0ZWRfc29ydHMiLCJuX3IiLCJraWQiLCJuX2wiLCJzX2wiLCJzX3IiLCJpbnNpZGVfc29ydHMiLCJucyIsImxfc29ydCIsInJfc29ydCIsIm91dHNpZGVfc29ydHMiLCJob2xlcyIsInNlZ21lbnQiLCJnZXRfY2hpbGRyZW5zIiwiZ2V0X2luY29tcGxldGVfaWRzIiwiaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkIiwiZmlyc3Rfc3RyaW5nIiwibGFzdF9zdHJpbmciLCJub19zaWJsaW5ncyIsInVuemlwIiwiemlwIiwic3VmIiwicHJlIiwic2VsIiwicHJlcGVuZCIsInNpYnNzIiwic2licyIsImlzX21pc21hdGNoIiwiczEiLCJwdXNoIiwib250byIsInBvcCIsImZyb20iLCJzdWYkMCIsInByZSQwIiwibGVmdF9uZWlnaGJvciIsInJpZ2h0X25laWdoYm9yIiwibmVpZ2hib3JzIiwicl9zaWJzIiwibF9zaWJzIiwiZGlyZWN0aW9uX2JldHdlZW4iLCJtb2xkX2ZpdHRpbmdfYmV0d2VlbiIsImVycm9yX3NvdXJjZV8wMjUiLCJwcF9zdGVwIiwic2hvd19zdGVwIiwic3RlcF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwIiwic3RlcF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcCIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwiaWRfMDA1IiwibGFiZWxfMDA3IiwibW9sZF8wMDkiLCJzaGFyZHNfMDExIiwiY2hpbGRyZW5fMDEzIiwiZHVwbGljYXRlc18wMTUiLCJleHRyYV8wMTYiLCJpdGVyXzAzNiIsInNleHBfMDAzJDAiLCJmaWVsZF9zZXhwc18wMTkiLCJmaWVsZF9uYW1lXzAxNyIsInRhaWxfMDM3IiwiZmllbGRfc2V4cF8wMTgkNSIsImZpZWxkX3NleHBfMDE4IiwieF8wMzgiLCJmaWVsZF9zZXhwXzAxOCQwIiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAxOCQxIiwiZmllbGRfc2V4cF8wMTgkMiIsImZpZWxkX3NleHBfMDE4JDMiLCJmaWVsZF9zZXhwXzAxOCQ0IiwiZnZhbHVlXzAyNiIsImNoaWxkcmVuXzAxNCIsInNoYXJkc18wMTIiLCJtb2xkXzAxMCIsImxhYmVsXzAwOCIsImlkXzAwNiIsImNoaWxkcmVuXzA1MiIsInNoYXJkc18wNDYiLCJtb2xkXzA0NCIsImxhYmVsXzA0MiIsImlkXzA0MCIsImFyZzFfMDU1IiwicmVzMF8wNTYiLCJyZXMxXzA1NyIsImFyZ18wNTMiLCJibmRzXzAzOSIsImFyZzFfMDQ5IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsImFyZ18wNDciLCJibmRzXzAzOSQwIiwiYm5kc18wMzkkMSIsImJuZHNfMDM5JDIiLCJhcmdfMDQxIiwiYm5kc18wMzkkMyIsImoiLCJraWRzX3IiLCJraWRzX2wiLCJzaGFyZHNfciIsInNoYXJkc19sIiwiZmxhdHRlbiIsImNvbnRhaW5lcl9zaGFyZHMiLCJtYXRjaF9sIiwibWF0Y2hfciIsInRfciIsInRfbCIsInBwX2dlbmVyYXRpb24iLCJzaG93X2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3NleHAiLCJzZXhwX29mX2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9nZW5lcmF0aW9uIiwieF8wMTQiLCJwYXJlbnQiLCJ6aXBfZ2VuIiwiYW5jcyIsImEkMCIsInJlZ3JvdXRlZCIsInRyaW1fciIsInRyaW1fbCQwIiwidHJpbV9yJDAiLCJwYXJlbnRfbWF0Y2hlcyIsInRpY2siLCJ0aW1lIiwibHQiLCJtYXhfdGltZSIsInVwZGF0ZSIsImVzIiwidGQiLCJlIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJjYXN0QmFja0Fycm93U3ltIiwiZWxsaXBzaXMiLCJzdG9wIiwiZGlzdGFuY2VfYXV4Iiwic3RhcnQiLCJjb3VudCIsInN0YXJ0JDAiLCJjb3VudCQwIiwiY291bnQkMSIsInN0YXJ0JDEiLCJjb3VudCQyIiwic3RhcnQkMiIsImNvdW50JDMiLCJzdGFydCQzIiwic3RhcnQkNCIsImVycm9yX3NvdXJjZV8wMTciLCJ6ZXJvIiwiZXJyb3Jfc291cmNlXzA0MCIsImVycm9yX3NvdXJjZV8wNTUiLCJwcF9yb3ciLCJzaG93X3JvdyIsInJvd19vZl9zZXhwIiwic2V4cF9vZl9yb3ciLCJyb3dfb2ZfeW9qc29uIiwieW9qc29uX29mX3JvdyIsInBwX2NvbCIsInNob3dfY29sIiwiY29sX29mX3NleHAiLCJzZXhwX29mX2NvbCIsImNvbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY29sIiwiZmllbGRfc2V4cHNfMDA1Iiwicm93XzAwNiIsImNvbF8wMDgiLCJpdGVyXzAxOCIsInNleHBfMDA0JDAiLCJ0YWlsXzAxOSIsInhfMDIwIiwiY29sXzAwOSIsInJvd18wMDciLCJjb2xfMDI0Iiwicm93XzAyMiIsImJuZHNfMDIxIiwiYXJnXzAyMyIsImJuZHNfMDIxJDAiLCJyb3dfZmllbGQiLCJjb2xfZmllbGQiLCJjb2xfdmFsdWUiLCJyb3dfdmFsdWUiLCJ2X2NvbCIsInZfcm93IiwiZXF1YWxzIiwicSIsImNvbXAiLCJjdXJyZW50IiwidGFyZ2V0IiwiZGNvbXAiLCJkaXJlY3Rpb24iLCJiIiwicHBfbWVhc3VyZW1lbnQiLCJzaG93X21lYXN1cmVtZW50IiwibWVhc3VyZW1lbnRfb2Zfc2V4cCIsInNleHBfMDI3IiwiZmllbGRfc2V4cHNfMDI4Iiwib3JpZ2luXzAyOSIsImxhc3RfMDMxIiwiZHVwbGljYXRlc18wMzMiLCJleHRyYV8wMzQiLCJpdGVyXzA0MSIsInNleHBfMDI3JDAiLCJmaWVsZF9zZXhwc18wMzciLCJmaWVsZF9uYW1lXzAzNSIsInRhaWxfMDQyIiwiZmllbGRfc2V4cF8wMzYkMiIsImZpZWxkX3NleHBfMDM2IiwieF8wNDMiLCJmaWVsZF9zZXhwXzAzNiQwIiwiZnZhbHVlXzAzOSIsImZpZWxkX3NleHBfMDM2JDEiLCJmdmFsdWVfMDM4IiwibGFzdF8wMzIiLCJvcmlnaW5fMDMwIiwic2V4cF9vZl9tZWFzdXJlbWVudCIsImxhc3RfMDQ3Iiwib3JpZ2luXzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImJuZHNfMDQ0JDAiLCJtZWFzdXJlbWVudF9vZl95b2pzb24iLCJvcmlnaW5fZmllbGQiLCJsYXN0X2ZpZWxkIiwibGFzdF92YWx1ZSIsIm9yaWdpbl92YWx1ZSIsInlvanNvbl9vZl9tZWFzdXJlbWVudCIsInZfbGFzdCIsInZfb3JpZ2luIiwibWF4X2NvbCIsInJzIiwibWluX2NvbCIsInBwX3NoYXJkIiwic2hvd19zaGFyZCIsInNoYXJkX29mX3NleHAiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInNleHBfb2Zfc2hhcmQiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsInNoYXJkX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFyZCIsInBwJDEiLCJ0X29mX3NleHAkMSIsInhfMDYxIiwic2V4cF9vZl90JDEiLCJ4XzA2MiIsInRfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfdCQxIiwic3BsaXRfYnlfcm93Iiwicm93cyIsInJvdyIsImFkZF9zIiwiYWRkX3QiLCJhZGRfZyIsImFkZF93IiwiYWRkX3AiLCJhZGRfcm93IiwiYWRkX2xiIiwiaW5kZW50Iiwic2luZ2xldG9uX3ciLCJzaW5nbGV0b25fZyIsInNpbmdsZXRvbl9zIiwic2hhcmQiLCJmaW5kX29wdF9zaGFyZHMiLCJmaW5kX3NoYXJkcyIsImZpbmRfb3B0X2xiIiwiZmluZF9zaGFyZHMkMCIsImZpbmRfdyIsImZpbmRfZyIsImZpbmRfdCIsImZpbmRfcCIsImZpbmRfYnlfaWQiLCJtJDAiLCJwb3N0X3RpbGVfaW5kZW50IiwiY29tcGxldGVfZnVuIiwibWlzc2luZ19yaWdodF9leHRyZW1lIiwiY29tcGxldGVfZnVuJDAiLCJtaXNzaW5nX2xlZnRfZXh0cmVtZSIsImlzX2luZGVudGVkX21hcCIsImlzX2luZGVudGVkIiwic3RoJDAiLCJpc19pbmRlbnRlZCQwIiwibWFwJDAiLCJvZl9zZWdtZW50Iiwib2xkIiwidG91Y2hlZCIsImdvX25lc3RlZCIsImNvbnRhaW5lcl9pbmRlbnQiLCJvcmlnaW4iLCJ0aW1lJDAiLCJ0aW1lJDEiLCJmaXJzdF90b3VjaGVkX2luY29tcGxldGUiLCJnb19zZXEiLCJjb250YWluZWRfaW5kZW50IiwibWFwJDYiLCJ0b2tlbiIsImFkZF9zaGFyZCIsImNoaWxkX21hcCIsImNoaWxkX2xhc3QiLCJtYXAkMSIsIm9yaWdpbiQwIiwiY29udGFpbmVkX2luZGVudCQwIiwibGFzdCQwIiwibWFwJDMiLCJyb3dfaW5kZW50IiwiaW5kZW50JDAiLCJ0b3VjaGVkJDAiLCJ0b3VjaGVkJDEiLCJpbmRlbnQkMSIsImxhc3QkMSIsIm1hcCQ0Iiwid3NwYWNlX2xlbmd0aCIsIm9yaWdpbiQxIiwibWFwJDUiLCJtYXAkMiIsInRsX2xhc3QiLCJzZWdtZW50X29yaWdpbiIsInNlZ21lbnRfbGFzdCIsInNlZ21lbnRfaGVpZ2h0Iiwic2VnbWVudF93aWR0aCIsIndpZHRoX2Nvc3QiLCJtYXhfd2lkdGgiLCJvdmVyZmxvdyIsImVycm9yX3NvdXJjZV8wMzMiLCJwcF9idWZmZXIiLCJzaG93X2J1ZmZlciIsImJ1ZmZlcl9vZl9zZXhwIiwic2V4cF9vZl9idWZmZXIiLCJidWZmZXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2J1ZmZlciIsInBwX21vZGUiLCJzaG93X21vZGUiLCJtb2RlX29mX3NleHAiLCJzZXhwX29mX21vZGUiLCJtb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb2RlIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTgiLCJmb2N1c18wMTkiLCJjb250ZW50XzAyMSIsIm1vZGVfMDIzIiwiZHVwbGljYXRlc18wMjUiLCJleHRyYV8wMjYiLCJpdGVyXzAzNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjkiLCJmaWVsZF9uYW1lXzAyNyIsInRhaWxfMDM1IiwiZmllbGRfc2V4cF8wMjgkMyIsImZpZWxkX3NleHBfMDI4IiwieF8wMzYiLCJmaWVsZF9zZXhwXzAyOCQwIiwiZnZhbHVlXzAzMCIsImZpZWxkX3NleHBfMDI4JDEiLCJmaWVsZF9zZXhwXzAyOCQyIiwiZnZhbHVlXzAzMSIsIm1vZGVfMDI0IiwiY29udGVudF8wMjIiLCJmb2N1c18wMjAiLCJtb2RlXzA0MiIsImNvbnRlbnRfMDQwIiwiZm9jdXNfMDM4IiwiYm5kc18wMzciLCJibmRzXzAzNyQwIiwiYXJnXzAzOSIsImJuZHNfMDM3JDEiLCJmb2N1c19maWVsZCIsIm1vZGVfZmllbGQiLCJtb2RlX3ZhbHVlIiwiZm9jdXNfdmFsdWUiLCJ2X21vZGUiLCJ2X2ZvY3VzIiwibW9kZSIsImZvY3VzIiwibWtfYnVmZmVyIiwiYnVmZmVyIiwiaXNfYnVmZmVyIiwiYnVmZmVyX2lkcyIsInRvZ2dsZV9mb2N1cyIsInNlbGVjdGlvbiIsImlzX2VtcHR5IiwiY29udGVudCQwIiwicCQyIiwic3BsaXRfcGllY2UiLCJvcmQiLCJpX3IiLCJpX2wiLCJndCIsInVuIiwiZGlzb3JkZXJlZCIsImx0X29yX3VuIiwibHMiLCJhZGRfdGlsZSIsInRyYW5fY2xvc2UiLCJrZXlzIiwibWVtIiwiZXhpc3RzX21lbSIsIm1lcmdlJDEiLCJhZGRfdGlsZSQwIiwiY3MiLCJjIiwiYyQwIiwiaW5pdCQxIiwiYWRkX3NlbCIsImNvdW50cyIsIm9yZGVyIiwicHJldiIsImN1cnIiLCJwcmV2JDAiLCJzaGFyZF9pbmZvIiwiYnAiLCJpbmZvIiwic2hhcmRfaW5mbyQwIiwicHVzaF9zIiwiZmlyc3QkMCIsInJlc3RyaWN0ZWQiLCJ3aWxsX2JhcmYiLCJyZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXQiLCJzaWJsaW5nc18wMDQiLCJhbmNlc3RvcnNfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJpdGVyXzAxNiIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJhbmNlc3RvcnNfMDA3Iiwic2libGluZ3NfMDA1IiwiYW5jZXN0b3JzXzAyMiIsInNpYmxpbmdzXzAyMCIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJzaWJsaW5nc19maWVsZCIsImFuY2VzdG9yc19maWVsZCIsImFuY2VzdG9yc192YWx1ZSIsInNpYmxpbmdzX3ZhbHVlIiwidl9hbmNlc3RvcnMiLCJ2X3NpYmxpbmdzIiwic2libGluZ3MiLCJhbmNlc3RvcnMiLCJzaWJsaW5ncyQwIiwiYW5jZXN0b3IiLCJzaWJsaW5ncyQxIiwibG9jYWxfaW5jb21wbGV0ZV90aWxlcyIsImRlbGV0ZV9wYXJlbnQiLCJhbmNlc3RvcnMkMCIsInBfc2licyIsImdzX2wiLCJnc19yIiwiZ19sIiwiZ19yIiwidHJpbV9yJDEiLCJwcmVwZW5kX2dlbmVyYXRpb24iLCJwcmVwZW5kX3NpYmxpbmdzIiwicnNzIiwiY2F0IiwicmVhc3NlbWJsZV9wYXJlbnQiLCJmbGF0dGVuX21hdGNoIiwiaW5uZXJfbCIsIm91dGVyX2wiLCJhJDEiLCJvdXRlcl9yIiwiaW5uZXJfciIsImEkMiIsImEkMyIsInJlYXNzZW1ibGVfc2libGluZ3MiLCJycyQwIiwib3V0ZXJfciQwIiwibWF0Y2hfciQwIiwiaW5uZXJfciQwIiwiZXJyb3Jfc291cmNlXzA1MSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJkZWNyZW1lbnQiLCJvZmZzZXQiLCJzZWxlY3Rpb25fMDE5IiwiYmFja3BhY2tfMDIxIiwicmVsYXRpdmVzXzAyMyIsImNhcmV0XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4IiwiZmllbGRfc2V4cHNfMDMxIiwiZmllbGRfbmFtZV8wMjkiLCJmaWVsZF9zZXhwXzAzMCQ0IiwiZmllbGRfc2V4cF8wMzAiLCJmaWVsZF9zZXhwXzAzMCQwIiwiZmllbGRfc2V4cF8wMzAkMSIsImZpZWxkX3NleHBfMDMwJDIiLCJmaWVsZF9zZXhwXzAzMCQzIiwiY2FyZXRfMDI2IiwicmVsYXRpdmVzXzAyNCIsImJhY2twYWNrXzAyMiIsInNlbGVjdGlvbl8wMjAiLCJjYXJldF8wNDciLCJyZWxhdGl2ZXNfMDQ1IiwiYmFja3BhY2tfMDQzIiwic2VsZWN0aW9uXzA0MSIsImJuZHNfMDQwJDIiLCJzZWxlY3Rpb25fZmllbGQiLCJiYWNrcGFja19maWVsZCIsInJlbGF0aXZlc19maWVsZCIsImNhcmV0X2ZpZWxkIiwiY2FyZXRfdmFsdWUiLCJyZWxhdGl2ZXNfdmFsdWUiLCJiYWNrcGFja192YWx1ZSIsInNlbGVjdGlvbl92YWx1ZSIsInZfY2FyZXQiLCJ2X3JlbGF0aXZlcyIsInZfYmFja3BhY2siLCJ2X3NlbGVjdGlvbiIsIm5leHRfYmxhbmsiLCJwcF9jaHVua2luZXNzIiwic2hvd19jaHVua2luZXNzIiwiY2h1bmtpbmVzc19vZl9zZXhwIiwic2V4cF8wNTIiLCJzZXhwX29mX2NodW5raW5lc3MiLCJjaHVua2luZXNzX29mX3lvanNvbiIsInlvanNvbl9vZl9jaHVua2luZXNzIiwicHBfcGxhbmFyIiwic2hvd19wbGFuYXIiLCJwbGFuYXJfb2Zfc2V4cCIsInNleHBfMDU3IiwidGFnXzA1OCIsInNleHBfYXJnc18wNjQiLCJhcmcwXzA2NSIsInJlczBfMDY2Iiwic2V4cF9hcmdzXzA1OSIsImFyZzBfMDYwIiwicmVzMF8wNjEiLCJzZXhwX29mX3BsYW5hciIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJhcmcwXzA2OSIsInJlczBfMDcwIiwicGxhbmFyX29mX3lvanNvbiIsInlvanNvbl9vZl9wbGFuYXIiLCJmcm9tX3BsYW5lIiwidXBkYXRlX2NhcmV0IiwieiIsInNldF9jYXJldCIsImNhcmV0IiwidXBkYXRlX3JlbGF0aXZlcyIsInVwZGF0ZV9zaWJsaW5ncyIsInNpYnNfd2l0aF9zZWwiLCJwb3BfYmFja3BhY2siLCJsZWZ0X25laWdoYm9yX21vbm90aWxlIiwicmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUiLCJuZWlnaGJvcl9tb25vdGlsZXMiLCJyZWxhdGl2ZXMiLCJyZW1vbGRfcmVncm91dCIsImNsZWFyX3VucGFyc2VkX2J1ZmZlciIsInVuc2VsZWN0IiwiZXJhc2VfYnVmZmVyIiwieiQwIiwidW5zZWxlY3RfYW5kX3ppcCIsInVwZGF0ZV9zZWxlY3Rpb24iLCJwdXRfc2VsZWN0aW9uIiwiZ3Jvd19zZWxlY3Rpb24iLCJzaHJpbmtfc2VsZWN0aW9uIiwic2VsZWN0aW9uJDAiLCJkaXJlY3Rpb25hbF91bnNlbGVjdCIsIm1vdmUiLCJyZWxhdGl2ZXMkMCIsInNlbGVjdCIsInBpY2tfdXAiLCJzZWxlY3RlZCIsImJhY2twYWNrIiwiZGVzdHJ1Y3QiLCJkZXN0cm95X2tpZHMiLCJ0b19yZW1vdmUiLCJ0b19waWNrX3VwIiwidG9fcGlja191cCQwIiwiYmFja3BhY2skMCIsImRlbGV0ZSQwIiwicHV0X2Rvd24iLCJjb25zdHJ1Y3QiLCJsYWJlbCQwIiwibGFiZWwkMSIsInokMSIsInNlbGVjdGlvbnMkMCIsImJhY2twYWNrJDEiLCJjb250ZW50JDEiLCJpZCQxIiwic2VsZWN0aW9ucyIsImNvbnN0cnVjdF9tb25vIiwicmVwbGFjZSIsInJlcGxhY2VfbW9ubyIsInJlcHJlc2VudGF0aXZlX3BpZWNlIiwiY2FyZXRfZGlyZWN0aW9uIiwiYmFzZV9wb2ludCIsIm1lYXN1cmVkIiwiY2FyZXRfcG9pbnQiLCJjb2wiLCJkZXNlcmlhbGl6ZSIsImRhdGEiLCJjYW5fcHV0X2Rvd24iLCJzZXRfYnVmZmVyIiwiaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0IiwidHJ5X3RvX2R1bXBfYmFja3BhY2siLCJ6aXBwZXIiLCJ6aXBwZXIkMCIsIm1vdmVfdW50aWxfY2FudF9wdXRfZG93biIsInpfbGFzdCIsInpfbGFzdCQxIiwiel9sYXN0JDAiLCJ6X25ldyIsIm1vdmVfdW50aWxfY2FuX3B1dF9kb3duIiwiel9jYW4iLCJ6JDIiLCJ6X2NhbiQwIiwiel9jYW4kMSIsInokMyIsInokNCIsInNtYXJ0X3NlZyIsImR1bXBfYmFja3BhY2siLCJzZWdfZm9yX3ZpZXciLCJzZWdfZm9yX3NlbSIsInNlZ193aXRob3V0X2J1ZmZlciIsInBwX3QiLCJzaG93X3QiLCJwb2x5X2EiLCJvZl9hXzAwMSIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxNSIsImFyZzFfMDEyIiwiYXJnMF8wMTEiLCJyZXMxXzAxNCIsIm9mX2EiLCJleHRlbmQiLCJjdHgiLCJ4YSIsIm5ld19jdHgiLCJsb29rdXAiLCJjb250YWlucyIsImZpbHRlciIsInRvX2xpc3QiLCJmaW5kX21hcCIsImN0eCQwIiwiYXJnMV8wMTciLCJhcmcwXzAxNiIsInJlczFfMDE5IiwiZXF1YWwiLCJlcnJvcl9zb3VyY2VfMDA0IiwicHBfdmFyaWFudCIsInNob3dfdmFyaWFudCIsInZhcmlhbnRfb2Zfc2V4cCIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMl8wMTEiLCJyZXMyXzAxNCIsInNleHBfYXJnc18wMTciLCJyZXMwXzAxOSIsInNleHBfb2ZfdmFyaWFudCIsIm9mX2FfMDIxIiwiYXJnMl8wMjQiLCJhcmcxXzAyMyIsImFyZzBfMDIyIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsInJlczJfMDI3IiwiYXJnMF8wMjgiLCJ2YXJpYW50X29mX3lvanNvbiIsInlvanNvbl9vZl92YXJpYW50Iiwib2ZfYV8wMzEiLCJ4XzAzMyIsIm9mX2FfMDM0IiwieF8wMzUiLCJlcXVhbF9jb25zdHJ1Y3RvciIsInkiLCJjdHIxIiwieDEiLCJ5MSIsImN0cjIiLCJjdHIyJDAiLCJ4JDAiLCJ5JDAiLCJzYW1lX2NvbnN0cnVjdG9yIiwiaGFzX2JhZF9lbnRyeSIsImhhc19nb29kX2VudHJ5IiwiZnJlZV92YXJpYWJsZXMiLCJ2YWx1ZSIsImlzX2dyb3VuZCIsImlzX2hvbGUiLCJ2ZW5uX3JlZ2lvbnMiLCJ5cyIsImxlZnQiLCJyaWdodCIsInlzJDAiLCJhY2MkMCIsImxlZnQkMCIsInlzJDEiLCJhY2MkMSIsImxlZnQkMSIsImpvaW5fZW50cnkiLCJqb2luIiwiaWRzMSIsInZhbHVlMSIsInZhbHVlMiIsIm0xIiwibTIiLCJpbnRlciIsImpvaW5fZW50cmllcyIsIm1hdGNoX3N5bnN3aXRjaCIsImN0ciIsImFyZ3MiLCJ2YWx1ZSQwIiwiZ2V0X2VudHJ5IiwiY3RyJDAiLCJoYXNfY29uc3RydWN0b3Jfbm9fYXJncyIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwX29mX2FjdGlvbiIsImFjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWN0aW9uIiwicHBfY291bnQiLCJzaG93X2NvdW50IiwiY291bnRfb2Zfc2V4cCIsInNleHBfb2ZfY291bnQiLCJjb3VudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY291bnQiLCJzZXhwXzAxNCIsInN0cmluZ19vZl90IiwiaWRzXzAwNSIsImNvcGllZF8wMDciLCJ0ZXJtXzAwOSIsImR1cGxpY2F0ZXNfMDExIiwiZXh0cmFfMDEyIiwiZmllbGRfc2V4cHNfMDE1IiwiZmllbGRfbmFtZV8wMTMiLCJmaWVsZF9zZXhwXzAxNCQzIiwiZmllbGRfc2V4cF8wMTQiLCJmaWVsZF9zZXhwXzAxNCQwIiwiZmllbGRfc2V4cF8wMTQkMSIsImZpZWxkX3NleHBfMDE0JDIiLCJ0ZXJtXzAxMCIsImNvcGllZF8wMDgiLCJpZHNfMDA2Iiwib2ZfYV8wMjMiLCJ0ZXJtXzAyOSIsImNvcGllZF8wMjciLCJpZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYm5kc18wMjQkMCIsImJuZHNfMDI0JDEiLCJpZHNfZmllbGQiLCJjb3BpZWRfZmllbGQiLCJ0ZXJtX2ZpZWxkIiwidGVybV92YWx1ZSIsImNvcGllZF92YWx1ZSIsImlkc192YWx1ZSIsInZfdGVybSIsInZfY29waWVkIiwidl9pZHMiLCJmcmVzaCIsInRlcm0iLCJ0ZXJtX29mIiwidW53cmFwIiwicmVwX2lkIiwiZmFzdF9jb3B5IiwibmV3X2lkcyIsImNvcGllZCIsImVycl9tc2ciLCJlcnIiLCJzdHJ1Y3R1cmVfc2hhcmVfbWFwIiwic3RydWN0dXJlX3NoYXJlZF9vZl9zZXhwIiwic2V4cF9vZl9zdHJ1Y3R1cmVfc2hhcmVkIiwic3RydWN0dXJlX3NoYXJlX2hlcmUiLCJrZXlfZiIsInRoaW5nIiwia2V5IiwidGhpbmdfcyIsInN0cnVjdHVyZV9zaGFyZV9pbiIsInJlc3VsdCIsInNleHAkMCIsInZhbGlkX3JlZ2V4IiwiaXNfdmFsaWQiLCJjaGVja192YWxpZCIsImlzX3RydWUiLCJpc19mYWxzZSIsImlzX2xldCIsImlzX2Z1biIsImlzX2Nhc2UiLCJzcGxpdCIsInBvcyIsImxlZnRfdmFyIiwicmlnaHRfdmFyIiwiY2FyZGluYWwiLCJzaW5nbGV0b24kMCIsInVwZGF0ZSQwIiwidW5pb24kMCIsImN0eDEiLCJjdHgyIiwiZmlsdGVyJDAiLCJmb2xkJDAiLCJvZl9saXN0IiwiYmluZGluZ3MiLCJwcF90JDAiLCJzaG93X3QkMCIsIm9mX2FfMDE5Iiwic2V4cF8wMjEiLCJmaWVsZF9zZXhwc18wMjIiLCJtYXBfMDIzIiwicmV2X29yZGVyXzAyNSIsIml0ZXJfMDQwIiwic2V4cF8wMjEkMCIsInRhaWxfMDQxIiwieF8wNDIiLCJzZXhwXzAzNiIsImFyZzFfMDMzIiwiYXJnMF8wMzIiLCJyZXMwXzAzNCIsInJlczFfMDM1IiwicmV2X29yZGVyXzAyNiIsIm1hcF8wMjQiLCJvZl9hXzA0MyIsInJldl9vcmRlcl8wNDciLCJtYXBfMDQ1IiwiYXJnMV8wNTAiLCJhcmcwXzA0OSIsInJlczFfMDUyIiwiYm5kc18wNDQkMSIsIm1hcF9maWVsZCIsInJldl9vcmRlcl9maWVsZCIsInJldl9vcmRlcl92YWx1ZSIsIm1hcF92YWx1ZSIsInZfcmV2X29yZGVyIiwidl9tYXAiLCJmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50IiwiaXNfZW1wdHkkMCIsInNpbmdsZXRvbiQxIiwiZXh0ZW5kJDAiLCJyZXZfb3JkZXIiLCJ1bmlvbiQxIiwicmV2X29yZGVyMiIsIm1hcDIiLCJyZXZfb3JkZXIxIiwibWFwMSIsInVuaW9uX29yZGVyIiwib3JkZXIxIiwib3JkZXIxJDAiLCJyZXZfb3JkZXIyJDAiLCJyZXZfb3JkZXIyJDEiLCJsb29rdXAkMCIsImNvbnRhaW5zJDAiLCJtYXBrIiwibWFwbyIsImZpbHRlcmsiLCJyZXZfb3JkZXIkMCIsImZpbHRlcm8iLCJmb2xkayIsImZvbGRvIiwidG9fbGlzdGsiLCJ0b19saXN0byIsIm9mX2xpc3QkMCIsIndpdGhvdXRfa2V5cyIsImVycm9yX3NvdXJjZV83NTciLCJlcnJvcl9zb3VyY2VfMDYwIiwiZXJyb3Jfc291cmNlXzQzOCIsImVycm9yX3NvdXJjZV81NTkiLCJlcnJvcl9zb3VyY2VfNTc3IiwiZXJyb3Jfc291cmNlXzU4OCIsImVycm9yX3NvdXJjZV82ODEiLCJlcnJvcl9zb3VyY2VfNzA5IiwiZXJyb3Jfc291cmNlXzc3NiIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzc4NyIsInRwX2xvYyQxMCIsImNvbnRpbnVlJDAiLCJ4Xzc0OSIsInhfNzUwIiwic2V4cF83NTYiLCJhcmcxXzc1MyIsImFyZzBfNzUyIiwicmVzMF83NTQiLCJyZXMxXzc1NSIsImFyZzFfNzU5IiwiYXJnMF83NTgiLCJyZXMwXzc2MCIsInJlczFfNzYxIiwid3JhcCIsImVpIiwiaWRfb2YiLCJtYXBfb2YiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwiZW52Iiwib2ZfZW52aXJvbm1lbnQiLCJpZF9lcXVhbCIsImVudjEiLCJlbnYyIiwibGVuZ3RoJDAiLCJ1cGRhdGVfa2VlcF9pZCIsInhyIiwiZXh0ZW5kX2tlZXBfaWQiLCJ1bmlvbl9rZWVwX2lkIiwibWFwX2tlZXBfaWQiLCJmaWx0ZXJfa2VlcF9pZCIsImZvbGQiLCJwbGFjZWhvbGRlciIsIndpdGhvdXRfa2V5cyQwIiwic2hvdyQxIiwiYTAkMyIsImEwJDQiLCJhMCQ1IiwidF9vZl9zZXhwJDMiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJzZXhwX2FyZ3NfMDMyIiwiYXJnMF8wMzMiLCJzZXhwX2FyZ3NfMDI3Iiwic2V4cF9hcmdzXzAyMiIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJzZXhwX29mX3QkMyIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJhcmcwXzA0MiIsImFyZzBfMDQ0IiwicmVzMF8wNDUiLCJ0X29mX3lvanNvbiQyIiwieW9qc29uX2FyZ3MkNSIsInYwJDExIiwidjAkMTIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX3QkMiIsIm1hcF90ZXJtIiwiZl9leHAiLCJmX3BhdCIsInN0aCQxIiwiZl90eXAiLCJzdGgkMiIsImZfdHBhdCIsInN0aCQzIiwiZl9ydWwiLCJzdGgkNCIsImZfYW55IiwicmVjX2NhbGwiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJmYXN0X2VxdWFsIiwieSQxIiwieSQyIiwieSQzIiwieCQ0IiwieSQ0IiwicHBfZGVmZXJyYWxfcG9zaXRpb24iLCJzaG93X2RlZmVycmFsX3Bvc2l0aW9uIiwiZGVmZXJyYWxfcG9zaXRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJkZWZlcnJhbF9wb3NpdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJwcF90ZXJtIiwic2hvd190ZXJtIiwicHAkMiIsInNob3ckMiIsIl81NCIsIl81MyIsIl81MiIsIl81MSIsIl81MCIsIl80OSIsIl80OCIsIl80NyIsIl80NiIsIl80NSIsIl80NCIsIl80MyIsIl80MiIsIl80MSIsIl80MCIsIl8zOSIsIl8zOCIsIl8zNyIsIl8zNiIsIl8zNSIsIl8zNCIsIl8zMyIsIl8zMiIsIl8zMSIsIl8zMCIsIl8yOSIsIl8yOCIsIl8yNyIsIl8yNiIsIl8yNSIsIl8yNCIsIl8yMyIsIl8yMiIsIl8yMSIsIl8yMCIsIl8xOSIsIl8xOCIsIl8xNyIsIl8xNiIsIl8xNSIsIl8xNCIsIl8xMyIsIl8xMiIsIl8xMSIsIl8xMCIsIl85IiwiXzgiLCJfNCQwIiwiXzMkMCIsIl8xJDIiLCJhMCQ2IiwiYTAkNyIsImEwJDgiLCJhMCQ5IiwiYTMiLCJhMiQwIiwiYTAkMTAiLCJhMiQxIiwiYTEkMiIsImEwJDExIiwiYTAkMTIiLCJhMCQxMyIsImEyJDIiLCJhMSQzIiwiYTAkMTQiLCJhMiQzIiwiYTEkNCIsImEwJDE1IiwiYTIkNCIsImExJDUiLCJhMCQxNiIsImEyJDUiLCJhMSQ2IiwiYTAkMTciLCJhMSQ3IiwiYTAkMTgiLCJhMSQ4IiwiYTAkMTkiLCJhMiQ2IiwiYTEkOSIsImEwJDIwIiwiYTEkMTAiLCJhMCQyMSIsImEwJDIyIiwiYTEkMTEiLCJhMCQyMyIsImExJDEyIiwiYTAkMjQiLCJhMCQyNSIsImExJDEzIiwiYTAkMjYiLCJhMSQxNCIsImEwJDI3IiwiYTEkMTUiLCJhMCQyOCIsImEyJDciLCJhMSQxNiIsImEwJDI5IiwiYTAkMzAiLCJhMSQxNyIsImEwJDMxIiwiYTIkOCIsImExJDE4IiwiYTAkMzIiLCJfMSQzIiwidGVybV9vZl9zZXhwIiwidF9vZl9zZXhwJDQiLCJzZXhwXzA2MiIsInRhZ18wNjMiLCJzZXhwX2FyZ3NfMjA1IiwiYXJnMl8yMDgiLCJhcmcxXzIwNyIsImFyZzBfMjA2IiwicmVzMF8yMDkiLCJyZXMxXzIxMCIsInJlczJfMjExIiwic2V4cF9hcmdzXzIxNCIsImFyZzFfMjE2IiwiYXJnMF8yMTUiLCJyZXMwXzIxNyIsInJlczFfMjE4Iiwic2V4cF9hcmdzXzExMCIsImFyZzBfMTExIiwicmVzMF8xMTIiLCJzZXhwX2FyZ3NfMjIxIiwiYXJnMF8yMjIiLCJyZXMwXzIyMyIsInNleHBfYXJnc18xNDUiLCJhcmcwXzE0NiIsInJlczBfMTQ3Iiwic2V4cF9hcmdzXzE3MyIsImFyZzJfMTc2IiwiYXJnMV8xNzUiLCJhcmcwXzE3NCIsInJlczBfMTc3IiwicmVzMV8xNzgiLCJyZXMyXzE3OSIsInNleHBfYXJnc18xOTEiLCJhcmcxXzE5MyIsImFyZzBfMTkyIiwicmVzMF8xOTQiLCJyZXMxXzE5NSIsInNleHBfYXJnc18xMzYiLCJhcmcyXzEzOSIsImFyZzFfMTM4IiwiYXJnMF8xMzciLCJyZXMwXzE0MCIsInJlczFfMTQxIiwicmVzMl8xNDIiLCJzZXhwX2FyZ3NfMjU5IiwiYXJnMV8yNjEiLCJhcmcwXzI2MCIsInJlczBfMjYyIiwicmVzMV8yNjMiLCJzZXhwX2FyZ3NfMTUwIiwiYXJnMF8xNTEiLCJyZXMwXzE1MiIsInNleHBfYXJnc18xMDAiLCJhcmcwXzEwMSIsInJlczBfMTAyIiwic2V4cF9hcmdzXzE1NSIsImFyZzJfMTU4IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU5IiwicmVzMV8xNjAiLCJyZXMyXzE2MSIsInNleHBfYXJnc18yNTIiLCJhcmcxXzI1NCIsImFyZzBfMjUzIiwicmVzMF8yNTUiLCJyZXMxXzI1NiIsInNleHBfYXJnc18xMTUiLCJhcmcwXzExNiIsInJlczBfMTE3Iiwic2V4cF9hcmdzXzI4MCIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInNleHBfMjg1IiwiYXJnMV8yODIiLCJhcmcwXzI4MSIsInJlczBfMjgzIiwicmVzMV8yODQiLCJyZXMxXzI4OSIsInNleHBfYXJnc18wNjkiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwic2V4cF9hcmdzXzI0MCIsImFyZzBfMjQxIiwicmVzMF8yNDIiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMF8wOTEiLCJyZXMwXzA5MiIsInNleHBfYXJnc18xOTgiLCJhcmcxXzIwMCIsImFyZzBfMTk5IiwicmVzMF8yMDEiLCJyZXMxXzIwMiIsInNleHBfYXJnc18wNzQiLCJhcmcxXzA3NiIsImFyZzBfMDc1IiwicmVzMV8wNzgiLCJzZXhwX2FyZ3NfMDgxIiwiYXJnMl8wODQiLCJhcmcxXzA4MyIsInJlczFfMDg2IiwicmVzMl8wODciLCJzZXhwX2FyZ3NfMjI2IiwiYXJnMV8yMjgiLCJhcmcwXzIyNyIsInJlczBfMjI5IiwicmVzMV8yMzAiLCJzZXhwX2FyZ3NfMTY0IiwiYXJnMl8xNjciLCJhcmcxXzE2NiIsImFyZzBfMTY1IiwicmVzMF8xNjgiLCJyZXMxXzE2OSIsInJlczJfMTcwIiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnM18xMjkiLCJhcmcyXzEyOCIsImFyZzFfMTI3IiwiYXJnMF8xMjYiLCJyZXMwXzEzMCIsInJlczFfMTMxIiwicmVzMl8xMzIiLCJyZXMzXzEzMyIsInNleHBfYXJnc18xODIiLCJhcmcyXzE4NSIsImFyZzFfMTg0IiwiYXJnMF8xODMiLCJyZXMwXzE4NiIsInJlczFfMTg3IiwicmVzMl8xODgiLCJzZXhwX2FyZ3NfMjY2IiwiYXJnMl8yNjkiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNzAiLCJyZXMxXzI3MSIsInJlczJfMjcyIiwic2V4cF9hcmdzXzA5NSIsImFyZzBfMDk2IiwicmVzMF8wOTciLCJzZXhwX2FyZ3NfMjc1IiwiYXJnMF8yNzYiLCJyZXMwXzI3NyIsInNleHBfYXJnc18yOTIiLCJhcmcyXzI5NSIsImFyZzFfMjk0IiwiYXJnMF8yOTMiLCJyZXMwXzI5NiIsInJlczFfMjk3IiwicmVzMl8yOTgiLCJzZXhwX2FyZ3NfMjMzIiwiYXJnMV8yMzUiLCJhcmcwXzIzNCIsInJlczBfMjM2IiwicmVzMV8yMzciLCJzZXhwX2FyZ3NfMjQ1IiwiYXJnMV8yNDciLCJhcmcwXzI0NiIsInJlczBfMjQ4IiwicmVzMV8yNDkiLCJzZXhwX2FyZ3NfMTIwIiwiYXJnMF8xMjEiLCJyZXMwXzEyMiIsInhfMzAwIiwic2V4cF9vZl90ZXJtIiwiYXJnMF8zMDEiLCJyZXMwXzMwMiIsImFyZzBfMzAzIiwicmVzMF8zMDQiLCJhcmcxXzMwNiIsImFyZzBfMzA1IiwicmVzMF8zMDciLCJzZXhwX29mX3QkNCIsInJlczFfMzA4IiwiYXJnMl8zMTEiLCJhcmcxXzMxMCIsImFyZzBfMzA5IiwicmVzMF8zMTIiLCJyZXMxXzMxMyIsInJlczJfMzE0IiwiYXJnMF8zMTUiLCJyZXMwXzMxNiIsImFyZzBfMzE3IiwicmVzMF8zMTgiLCJhcmcwXzMxOSIsInJlczBfMzIwIiwiYXJnMF8zMjEiLCJyZXMwXzMyMiIsImFyZzBfMzIzIiwicmVzMF8zMjQiLCJhcmcwXzMyNSIsInJlczBfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsImFyZzNfMzMyIiwiYXJnMl8zMzEiLCJhcmcxXzMzMCIsImFyZzBfMzI5IiwicmVzMF8zMzMiLCJyZXMxXzMzNCIsInJlczJfMzM1IiwicmVzM18zMzYiLCJhcmcyXzMzOSIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzM0MCIsInJlczFfMzQxIiwicmVzMl8zNDIiLCJhcmcwXzM0MyIsInJlczBfMzQ0IiwiYXJnMF8zNDUiLCJyZXMwXzM0NiIsImFyZzJfMzQ5IiwiYXJnMV8zNDgiLCJhcmcwXzM0NyIsInJlczBfMzUwIiwicmVzMV8zNTEiLCJyZXMyXzM1MiIsImFyZzJfMzU1IiwiYXJnMV8zNTQiLCJhcmcwXzM1MyIsInJlczBfMzU2IiwicmVzMV8zNTciLCJyZXMyXzM1OCIsImFyZzJfMzYxIiwiYXJnMV8zNjAiLCJhcmcwXzM1OSIsInJlczBfMzYyIiwicmVzMV8zNjMiLCJyZXMyXzM2NCIsImFyZzJfMzY3IiwiYXJnMV8zNjYiLCJhcmcwXzM2NSIsInJlczBfMzY4IiwicmVzMV8zNjkiLCJyZXMyXzM3MCIsImFyZzFfMzcyIiwiYXJnMF8zNzEiLCJyZXMwXzM3MyIsInJlczFfMzc0IiwiYXJnMV8zNzYiLCJhcmcwXzM3NSIsInJlczBfMzc3IiwicmVzMV8zNzgiLCJhcmcyXzM4MSIsImFyZzFfMzgwIiwiYXJnMF8zNzkiLCJyZXMwXzM4MiIsInJlczFfMzgzIiwicmVzMl8zODQiLCJhcmcxXzM4NiIsImFyZzBfMzg1IiwicmVzMF8zODciLCJyZXMxXzM4OCIsImFyZzBfMzg5IiwicmVzMF8zOTAiLCJhcmcxXzM5MiIsImFyZzBfMzkxIiwicmVzMF8zOTMiLCJyZXMxXzM5NCIsImFyZzFfMzk2IiwiYXJnMF8zOTUiLCJyZXMwXzM5NyIsInJlczFfMzk4IiwiYXJnMF8zOTkiLCJyZXMwXzQwMCIsImFyZzFfNDAyIiwiYXJnMF80MDEiLCJyZXMwXzQwMyIsInJlczFfNDA0IiwiYXJnMV80MDYiLCJhcmcwXzQwNSIsInJlczBfNDA3IiwicmVzMV80MDgiLCJhcmcxXzQxMCIsImFyZzBfNDA5IiwicmVzMF80MTEiLCJyZXMxXzQxMiIsImFyZzJfNDE1IiwiYXJnMV80MTQiLCJhcmcwXzQxMyIsInJlczBfNDE2IiwicmVzMV80MTciLCJyZXMyXzQxOCIsImFyZzBfNDE5IiwicmVzMF80MjAiLCJhcmcxXzQyNiIsImFyZzBfNDI1IiwicmVzMF80MjciLCJhcmcxXzQyMiIsImFyZzBfNDIxIiwicmVzMF80MjMiLCJyZXMxXzQyNCIsInJlczFfNDI4IiwiYXJnMl80MzEiLCJhcmcxXzQzMCIsImFyZzBfNDI5IiwicmVzMF80MzIiLCJyZXMxXzQzMyIsInJlczJfNDM0IiwieF80MzUiLCJ0ZXJtX29mX3lvanNvbiIsInRfb2ZfeW9qc29uJDMiLCJ5b2pzb25fYXJncyQxNiIsInYyJDUiLCJ2MSQxNSIsInYwJDMzIiwidjAkMzQiLCJ2MSQxNiIsInYyJDYiLCJ5b2pzb25fYXJncyQ3IiwidjEkNyIsInYwJDE1IiwidjAkMTYiLCJ2MSQ4IiwieW9qc29uX2FyZ3MkNiIsInYwJDEzIiwidjAkMTQiLCJ2MiQxIiwidjEkNSIsInYxJDYiLCJ2MiQyIiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwieW9qc29uX2FyZ3MkMTQiLCJ2MCQyOSIsInYwJDMwIiwieW9qc29uX2FyZ3MkMTMiLCJ2MiQzIiwidjEkMTMiLCJ2MCQyNyIsInYwJDI4IiwidjEkMTQiLCJ2MiQ0IiwieW9qc29uX2FyZ3MkMTIiLCJ2MSQxMSIsInYwJDI1IiwidjAkMjYiLCJ2MSQxMiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjEkOSIsInYwJDIxIiwidjAkMjIiLCJ2MSQxMCIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQyNCIsInYwJDQ5IiwidjAkNTAiLCJ5b2pzb25fYXJncyQyMyIsInYxJDI3IiwidjAkNDciLCJ2MCQ0OCIsInYxJDI4IiwieW9qc29uX2FyZ3MkMjIiLCJ2MSQyNSIsInYwJDQ1IiwidjAkNDYiLCJ2MSQyNiIsInlvanNvbl9hcmdzJDIxIiwidjIkMTEiLCJ2MSQyMyIsInYwJDQzIiwidjAkNDQiLCJ2MSQyNCIsInYyJDEyIiwieW9qc29uX2FyZ3MkMjAiLCJ2MSQyMSIsInYwJDQxIiwidjAkNDIiLCJ2MSQyMiIsInlvanNvbl9hcmdzJDE5IiwidjIkOSIsInYxJDE5IiwidjAkMzkiLCJ2MCQ0MCIsInYxJDIwIiwidjIkMTAiLCJ5b2pzb25fYXJncyQxOCIsInYwJDM3IiwidjAkMzgiLCJ5b2pzb25fYXJncyQxNyIsInYzIiwidjIkNyIsInYxJDE3IiwidjAkMzUiLCJ2MCQzNiIsInYxJDE4IiwidjIkOCIsInYzJDAiLCJ5b2pzb25fYXJncyQzMiIsInYyJDE3IiwidjEkMzciLCJ2MCQ2NSIsInYwJDY2IiwidjEkMzgiLCJ2MiQxOCIsInlvanNvbl9hcmdzJDMxIiwidjIkMTUiLCJ2MSQzNSIsInYwJDYzIiwidjAkNjQiLCJ2MSQzNiIsInYyJDE2IiwieW9qc29uX2FyZ3MkMzAiLCJ2MCQ2MSIsInYwJDYyIiwieW9qc29uX2FyZ3MkMjkiLCJ2MCQ1OSIsInYwJDYwIiwieW9qc29uX2FyZ3MkMjgiLCJ2MiQxMyIsInYxJDMzIiwidjAkNTciLCJ2MCQ1OCIsInYxJDM0IiwidjIkMTQiLCJ5b2pzb25fYXJncyQyNyIsInYxJDMxIiwidjAkNTUiLCJ2MCQ1NiIsInYxJDMyIiwieW9qc29uX2FyZ3MkMjYiLCJ2MSQyOSIsInYwJDUzIiwidjAkNTQiLCJ2MSQzMCIsInlvanNvbl9hcmdzJDI1IiwidjAkNTEiLCJ2MCQ1MiIsInlvanNvbl9vZl90ZXJtIiwieW9qc29uX29mX3QkMyIsIm1hcF90ZXJtJDAiLCJleHBfbWFwX3Rlcm0iLCJwYXRfbWFwX3Rlcm0iLCJ0eXBfbWFwX3Rlcm0iLCJ0cGF0X21hcF90ZXJtIiwiYW55X21hcF90ZXJtIiwiZmx0X21hcF90ZXJtIiwidGhpbmdzIiwidGVybSQwIiwiZSQwIiwiZSQxIiwiZiQwIiwiZSQyIiwidHAiLCJlMiIsImUxIiwiZW52JDAiLCJlJDMiLCJlJDQiLCJ0cCQwIiwiZTIkMCIsImUxJDAiLCJlJDUiLCJlJDYiLCJlMyIsImUyJDEiLCJlMSQxIiwiZTIkMiIsImUxJDIiLCJlJDciLCJlJDgiLCJmJDEiLCJlJDkiLCJlbnYkMSIsImUkMTAiLCJlMiQzIiwiZTEkMyIsImUyJDQiLCJlMSQ0IiwiZSQxMSIsImUyJDUiLCJlMSQ1IiwicmxzIiwiZSQxMiIsInQyJDAiLCJ0MSQwIiwiZSQxMyIsImZhc3RfZXF1YWwkMCIsInMyIiwidDQiLCJ0MyIsImQyIiwiZDEiLCJiMiIsImIxIiwiaTIiLCJpMSIsImYyIiwiZjEiLCJzMiQwIiwiczEkMCIsImMyIiwiYzEiLCJ0cDIiLCJ0cDEiLCJlNCIsInAyJDAiLCJwMSQwIiwiYzIkMCIsImUyJDYiLCJwMiQxIiwiYzEkMCIsImUxJDYiLCJwMSQxIiwiZTIkNyIsInRwMiQwIiwiZTEkNyIsInRwMSQwIiwiZTQkMCIsImUzJDAiLCJkMiQwIiwiZTIkOCIsImUxJDgiLCJkMSQwIiwidDIkMSIsImUyJDkiLCJ0MSQxIiwiZTEkOSIsImVzMiIsImUyJDEwIiwiZXMxIiwiZTEkMTAiLCJlNiIsImU1IiwiZTQkMSIsImUzJDEiLCJlMiQxMSIsImUxJDExIiwiZTQkMiIsImUzJDIiLCJlMiQxMiIsImUxJDEyIiwiZTIkMTMiLCJlMSQxMyIsImUyJDE0IiwiZjIkMCIsImUxJDE0IiwiZjEkMCIsImUyJDE1IiwiYzIkMSIsImUxJDE1IiwiYzEkMSIsImU0JDMiLCJlMyQzIiwiZTIkMTYiLCJlMSQxNiIsImU0JDQiLCJlMyQ0IiwiZTIkMTciLCJlMSQxNyIsImUyJDE4IiwibzIiLCJlMSQxOCIsIm8xIiwiZTQkNSIsImUzJDUiLCJvMiQwIiwiZTIkMTkiLCJlMSQxOSIsIm8xJDAiLCJmMiQxIiwiZjEkMSIsInJsczIiLCJlMiQyMCIsInJsczEiLCJlMSQyMCIsInQ0JDAiLCJ0MyQwIiwiZTIkMjEiLCJ0MiQyIiwidDEkMiIsImUxJDIxIiwicHBfdGVybSQwIiwic2hvd190ZXJtJDAiLCJwcCQzIiwic2hvdyQzIiwiXzExJDAiLCJfMTAkMCIsIl85JDAiLCJfOCQwIiwiXzckMCIsIl82JDAiLCJfNSQwIiwiXzQkMSIsIl8zJDEiLCJfMiQxIiwiXzEkNCIsIl8wJDQiLCJfMSQ1IiwiXzAkNSIsInRlcm1fb2Zfc2V4cCQwIiwidF9vZl9zZXhwJDUiLCJzZXhwXzQ0MCIsInRhZ180NDEiLCJzZXhwX2FyZ3NfNDQyIiwiYXJnMF80NDMiLCJyZXMwXzQ0NCIsInNleHBfYXJnc180NzIiLCJhcmcwXzQ3MyIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0NyIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwX2FyZ3NfNDk5IiwiYXJnMF81MDAiLCJyZXMwXzUwMSIsInNleHBfYXJnc180NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5Iiwic2V4cF9hcmdzXzQ5NCIsImFyZzBfNDk1IiwicmVzMF80OTYiLCJzZXhwX2FyZ3NfNDg5IiwiYXJnMF80OTAiLCJyZXMwXzQ5MSIsInNleHBfYXJnc181MDQiLCJhcmcxXzUwNiIsImFyZzBfNTA1IiwicmVzMF81MDciLCJyZXMxXzUwOCIsInNleHBfYXJnc180NjIiLCJhcmcwXzQ2MyIsInJlczBfNDY0Iiwic2V4cF9hcmdzXzUxMSIsImFyZzJfNTE0IiwiYXJnMV81MTMiLCJhcmcwXzUxMiIsInJlczBfNTE1IiwicmVzMV81MTYiLCJyZXMyXzUxNyIsInNleHBfYXJnc180ODIiLCJhcmcxXzQ4NCIsImFyZzBfNDgzIiwicmVzMF80ODUiLCJyZXMxXzQ4NiIsInNleHBfYXJnc180NzciLCJhcmcwXzQ3OCIsInJlczBfNDc5Iiwic2V4cF9hcmdzXzQ1NyIsImFyZzBfNDU4IiwicmVzMF80NTkiLCJzZXhwX2FyZ3NfNDUyIiwiYXJnMF80NTMiLCJyZXMwXzQ1NCIsInhfNTE5Iiwic2V4cF9vZl90ZXJtJDAiLCJhcmcwXzUyMCIsInJlczBfNTIxIiwiYXJnMF81MjIiLCJyZXMwXzUyMyIsImFyZzBfNTI0IiwicmVzMF81MjUiLCJhcmcwXzUyNiIsInJlczBfNTI3IiwiYXJnMF81MjgiLCJyZXMwXzUyOSIsImFyZzBfNTMwIiwicmVzMF81MzEiLCJhcmcwXzUzMiIsInJlczBfNTMzIiwic2V4cF9vZl90JDUiLCJhcmcwXzUzNCIsInJlczBfNTM1IiwiYXJnMV81MzciLCJhcmcwXzUzNiIsInJlczBfNTM4IiwicmVzMV81MzkiLCJhcmcwXzU0MCIsInJlczBfNTQxIiwiYXJnMF81NDIiLCJyZXMwXzU0MyIsImFyZzBfNTQ0IiwicmVzMF81NDUiLCJhcmcxXzU0NyIsImFyZzBfNTQ2IiwicmVzMF81NDgiLCJyZXMxXzU0OSIsImFyZzJfNTUyIiwiYXJnMV81NTEiLCJhcmcwXzU1MCIsInJlczBfNTUzIiwicmVzMV81NTQiLCJyZXMyXzU1NSIsInhfNTU2IiwidGVybV9vZl95b2pzb24kMCIsInRfb2ZfeW9qc29uJDQiLCJ5b2pzb25fb2ZfdGVybSQwIiwieW9qc29uX29mX3QkNCIsIm1hcF90ZXJtJDEiLCJmYXN0X2VxdWFsJDEiLCJ5MiIsIngyIiwieTEkMCIsIngxJDAiLCJ5MiQwIiwieDIkMCIsIngxJDEiLCJ1MiIsInUxIiwieDIkMSIsInBwX3R5cGVfaG9sZSIsInNob3dfdHlwZV9ob2xlIiwiXzAkNiIsInR5cGVfaG9sZV9vZl9zZXhwIiwic2V4cF81NjEiLCJ0YWdfNTYyIiwic2V4cF9hcmdzXzU2OCIsImFyZzBfNTY5IiwicmVzMF81NzAiLCJzZXhwX2FyZ3NfNTYzIiwiYXJnMF81NjQiLCJyZXMwXzU2NSIsInNleHBfb2ZfdHlwZV9ob2xlIiwiYXJnMF81NzEiLCJyZXMwXzU3MiIsImFyZzBfNTczIiwicmVzMF81NzQiLCJ0eXBlX2hvbGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfaG9sZSIsInBwX3R5cGVfcHJvdmVuYW5jZSIsInNob3dfdHlwZV9wcm92ZW5hbmNlIiwiXzAkNyIsInR5cGVfcHJvdmVuYW5jZV9vZl9zZXhwIiwic2V4cF81NzkiLCJ0YWdfNTgwIiwic2V4cF9hcmdzXzU4MSIsImFyZzBfNTgyIiwicmVzMF81ODMiLCJzZXhwX29mX3R5cGVfcHJvdmVuYW5jZSIsImFyZzBfNTg0IiwicmVzMF81ODUiLCJ0eXBlX3Byb3ZlbmFuY2Vfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfcHJvdmVuYW5jZSIsInBwX3Rlcm0kMSIsInNob3dfdGVybSQxIiwicHAkNCIsInNob3ckNCIsIl8xMyQwIiwiXzEyJDAiLCJfMTEkMSIsIl8xMCQxIiwiXzkkMSIsIl84JDEiLCJfNyQxIiwiXzYkMSIsIl81JDEiLCJfNCQyIiwiXzMkMiIsIl8yJDIiLCJfMSQ2IiwiXzAkOCIsIl8xJDciLCJfMCQ5IiwidGVybV9vZl9zZXhwJDEiLCJ0X29mX3NleHAkNiIsInNleHBfNTkwIiwidGFnXzU5MSIsInNleHBfYXJnc182MjQiLCJhcmcwXzYyNSIsInJlczBfNjI2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJzZXhwX2FyZ3NfNjM2IiwiYXJnMV82MzgiLCJhcmcwXzYzNyIsInJlczBfNjM5IiwicmVzMV82NDAiLCJzZXhwX2FyZ3NfNjE0IiwiYXJnMF82MTUiLCJyZXMwXzYxNiIsInNleHBfYXJnc181OTIiLCJhcmcwXzU5MyIsInJlczBfNTk0Iiwic2V4cF9hcmdzXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJzZXhwX2FyZ3NfNjI5IiwiYXJnMV82MzEiLCJhcmcwXzYzMCIsInJlczBfNjMyIiwicmVzMV82MzMiLCJzZXhwX2FyZ3NfNjA3IiwiYXJnMV82MDkiLCJhcmcwXzYwOCIsInJlczBfNjEwIiwicmVzMV82MTEiLCJzZXhwX2FyZ3NfNjQzIiwiYXJnMV82NDUiLCJhcmcwXzY0NCIsInJlczBfNjQ2IiwicmVzMV82NDciLCJzZXhwX2FyZ3NfNjAyIiwiYXJnMF82MDMiLCJyZXMwXzYwNCIsInhfNjQ5Iiwic2V4cF9vZl90ZXJtJDEiLCJhcmcwXzY1MCIsInJlczBfNjUxIiwiYXJnMF82NTIiLCJyZXMwXzY1MyIsImFyZzBfNjU0IiwicmVzMF82NTUiLCJzZXhwX29mX3QkNiIsImFyZzFfNjU3IiwiYXJnMF82NTYiLCJyZXMwXzY1OCIsInJlczFfNjU5IiwiYXJnMF82NjAiLCJyZXMwXzY2MSIsImFyZzBfNjYyIiwicmVzMF82NjMiLCJhcmcwXzY2NCIsInJlczBfNjY1IiwiYXJnMV82NjciLCJhcmcwXzY2NiIsInJlczBfNjY4IiwicmVzMV82NjkiLCJhcmcxXzY3MSIsImFyZzBfNjcwIiwicmVzMF82NzIiLCJyZXMxXzY3MyIsImFyZzFfNjc1IiwiYXJnMF82NzQiLCJyZXMwXzY3NiIsInJlczFfNjc3IiwieF82NzgiLCJ0ZXJtX29mX3lvanNvbiQxIiwidF9vZl95b2pzb24kNSIsInlvanNvbl9vZl90ZXJtJDEiLCJ5b2pzb25fb2ZfdCQ1IiwibWFwX3Rlcm0kMiIsInZhcmlhbnRzIiwidCQxIiwic3Vic3QiLCJ0eSIsInJld3JhcCIsInByb3YiLCJ0eSQwIiwidHkyIiwidHkxIiwic20iLCJ0eXMiLCJ0eSQxIiwidHkkMiIsInR5JDMiLCJ0eSQ0IiwidHkkNSIsImVxX2ludGVybmFsIiwibjEiLCJuMiIsInQyJDMiLCJ0MiQ0IiwidDEkMyIsInNtMSIsInNtMiIsInR5czEiLCJ0eXMyIiwidDEkNCIsInQyJDUiLCJ0MSQ1IiwidDIkNiIsInQxJDYiLCJ0MiQ3IiwidDEkNyIsImFscGhhX3N1YnN0JDAiLCJhbHBoYV9zdWJzdCIsInQyJDgiLCJ0MSQ4IiwibiQxIiwiZmFzdF9lcXVhbCQyIiwicHBfdGVybSQyIiwic2hvd190ZXJtJDIiLCJwcCQ1Iiwic2hvdyQ1IiwiXzAkMTAiLCJfMSQ4IiwiXzAkMTEiLCJ0ZXJtX29mX3NleHAkMiIsInRfb2Zfc2V4cCQ3Iiwic2V4cF82ODMiLCJ0YWdfNjg0Iiwic2V4cF9hcmdzXzY5NSIsImFyZzBfNjk2IiwicmVzMF82OTciLCJzZXhwX2FyZ3NfNjkwIiwiYXJnMF82OTEiLCJyZXMwXzY5MiIsInNleHBfYXJnc182ODUiLCJhcmcwXzY4NiIsInJlczBfNjg3IiwieF82OTkiLCJzZXhwX29mX3Rlcm0kMiIsImFyZzBfNzAwIiwicmVzMF83MDEiLCJhcmcwXzcwMiIsInJlczBfNzAzIiwiYXJnMF83MDQiLCJyZXMwXzcwNSIsInNleHBfb2ZfdCQ3IiwieF83MDYiLCJ0ZXJtX29mX3lvanNvbiQyIiwidF9vZl95b2pzb24kNiIsInlvanNvbl9vZl90ZXJtJDIiLCJ5b2pzb25fb2ZfdCQ2IiwibWFwX3Rlcm0kMyIsInR5dmFyX29mX3V0cGF0IiwiZmFzdF9lcXVhbCQzIiwicHBfdGVybSQzIiwic2hvd190ZXJtJDMiLCJwcCQ2Iiwic2hvdyQ2IiwiXzMkMyIsIl8yJDMiLCJfMSQ5IiwiXzAkMTIiLCJfMSQxMCIsIl8wJDEzIiwidGVybV9vZl9zZXhwJDMiLCJ0X29mX3NleHAkOCIsInNleHBfNzExIiwidGFnXzcxMiIsInNleHBfYXJnc183MjMiLCJhcmcxXzczMCIsImFyZzBfNzI5IiwicmVzMF83MzEiLCJzZXhwXzcyOCIsImFyZzFfNzI1IiwiYXJnMF83MjQiLCJyZXMwXzcyNiIsInJlczFfNzI3IiwicmVzMV83MzIiLCJzZXhwX2FyZ3NfNzEzIiwiYXJnMF83MTQiLCJyZXMwXzcxNSIsInNleHBfYXJnc183MTgiLCJhcmcwXzcxOSIsInJlczBfNzIwIiwieF83MzQiLCJzZXhwX29mX3Rlcm0kMyIsImFyZzBfNzM1IiwicmVzMF83MzYiLCJhcmcwXzczNyIsInJlczBfNzM4IiwiYXJnMV83NDQiLCJhcmcwXzc0MyIsInJlczBfNzQ1IiwiYXJnMV83NDAiLCJhcmcwXzczOSIsInJlczBfNzQxIiwicmVzMV83NDIiLCJyZXMxXzc0NiIsInNleHBfb2ZfdCQ4IiwieF83NDciLCJ0ZXJtX29mX3lvanNvbiQzIiwidF9vZl95b2pzb24kNyIsInlvanNvbl9vZl90ZXJtJDMiLCJ5b2pzb25fb2ZfdCQ3IiwibWFwX3Rlcm0kNCIsImZhc3RfZXF1YWwkNCIsInIyIiwicHBfZmlsdGVyIiwic2hvd19maWx0ZXIiLCJfMSQxMSIsIl8wJDE0IiwiZmlsdGVyX29mX3NleHAiLCJzZXhwXzc2MyIsImZpZWxkX3NleHBzXzc2NCIsInBhdF83NjUiLCJhY3RfNzY3IiwiZHVwbGljYXRlc183NjkiLCJleHRyYV83NzAiLCJpdGVyXzc3NyIsInNleHBfNzYzJDAiLCJmaWVsZF9zZXhwc183NzMiLCJmaWVsZF9uYW1lXzc3MSIsInRhaWxfNzc4IiwiZmllbGRfc2V4cF83NzIkMiIsImZpZWxkX3NleHBfNzcyIiwieF83NzkiLCJmaWVsZF9zZXhwXzc3MiQwIiwiZnZhbHVlXzc3NSIsImZpZWxkX3NleHBfNzcyJDEiLCJmdmFsdWVfNzc0IiwiYWN0Xzc2OCIsInBhdF83NjYiLCJzZXhwX29mX2ZpbHRlciIsImFjdF83ODMiLCJwYXRfNzgxIiwiYXJnXzc4NCIsImJuZHNfNzgwIiwiYXJnXzc4MiIsImJuZHNfNzgwJDAiLCJmaWx0ZXJfb2ZfeW9qc29uIiwicGF0X2ZpZWxkIiwiYWN0X2ZpZWxkIiwiYWN0X3ZhbHVlIiwicGF0X3ZhbHVlIiwieW9qc29uX29mX2ZpbHRlciIsInZfYWN0Iiwidl9wYXQiLCJwcCQ3Iiwic2hvdyQ3IiwiXzEkMTIiLCJfMCQxNSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF83ODkiLCJ0YWdfNzkwIiwic2V4cF9hcmdzXzc5NiIsImFyZzFfNzk4IiwiYXJnMF83OTciLCJyZXMwXzc5OSIsInJlczFfODAwIiwic2V4cF9hcmdzXzc5MSIsImFyZzBfNzkyIiwicmVzMF83OTMiLCJzZXhwX29mX3QkOSIsImFyZzBfODAxIiwicmVzMF84MDIiLCJhcmcxXzgwNCIsImFyZzBfODAzIiwicmVzMF84MDUiLCJyZXMxXzgwNiIsInRfb2ZfeW9qc29uJDgiLCJ5b2pzb25fb2ZfdCQ4IiwibWFwcGVyIiwiYWN0IiwicGF0IiwiYWN0JDAiLCJpZHgiLCJtYXBfdGVybSQ1IiwiZmFzdF9lcXVhbCQ1IiwiaG9sZSIsInRtcyIsImNsc19vZl90ZXJtIiwiZXJyb3Jfc291cmNlXzAyOSIsImVycm9yX3NvdXJjZV8wNTciLCJlcnJvcl9zb3VyY2VfMDcwIiwicHBfa2luZCIsInNob3dfa2luZCIsImtpbmRfb2Zfc2V4cCIsInNleHBfb2Zfa2luZCIsImtpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX2tpbmQiLCJwcF92YXJfZW50cnkiLCJzaG93X3Zhcl9lbnRyeSIsInZhcl9lbnRyeV9vZl9zZXhwIiwibmFtZV8wMTUiLCJpZF8wMTciLCJ0eXBfMDE5IiwiZHVwbGljYXRlc18wMjEiLCJleHRyYV8wMjIiLCJpdGVyXzAzMCIsImZpZWxkX25hbWVfMDIzIiwidGFpbF8wMzEiLCJmaWVsZF9zZXhwXzAyNCQzIiwiZmllbGRfc2V4cF8wMjQiLCJ4XzAzMiIsImZpZWxkX3NleHBfMDI0JDAiLCJmaWVsZF9zZXhwXzAyNCQxIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI0JDIiLCJmdmFsdWVfMDI3IiwidHlwXzAyMCIsImlkXzAxOCIsIm5hbWVfMDE2Iiwic2V4cF9vZl92YXJfZW50cnkiLCJ0eXBfMDM4IiwiaWRfMDM2IiwibmFtZV8wMzQiLCJibmRzXzAzMyIsImFyZ18wMzciLCJibmRzXzAzMyQwIiwiYXJnXzAzNSIsImJuZHNfMDMzJDEiLCJ2YXJfZW50cnlfb2ZfeW9qc29uIiwibmFtZV9maWVsZCIsInR5cF9maWVsZCIsInR5cF92YWx1ZSIsIm5hbWVfdmFsdWUiLCJ5b2pzb25fb2ZfdmFyX2VudHJ5Iiwidl90eXAiLCJ2X25hbWUiLCJwcF90dmFyX2VudHJ5Iiwic2hvd190dmFyX2VudHJ5IiwidHZhcl9lbnRyeV9vZl9zZXhwIiwic2V4cF8wNDEiLCJmaWVsZF9zZXhwc18wNDIiLCJuYW1lXzA0MyIsImlkXzA0NSIsImtpbmRfMDQ3IiwiZHVwbGljYXRlc18wNDkiLCJleHRyYV8wNTAiLCJpdGVyXzA1OCIsInNleHBfMDQxJDAiLCJmaWVsZF9zZXhwc18wNTMiLCJmaWVsZF9uYW1lXzA1MSIsInRhaWxfMDU5IiwiZmllbGRfc2V4cF8wNTIkMyIsImZpZWxkX3NleHBfMDUyIiwieF8wNjAiLCJmaWVsZF9zZXhwXzA1MiQwIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDUyJDEiLCJmdmFsdWVfMDU0IiwiZmllbGRfc2V4cF8wNTIkMiIsImZ2YWx1ZV8wNTUiLCJraW5kXzA0OCIsImlkXzA0NiIsIm5hbWVfMDQ0Iiwic2V4cF9vZl90dmFyX2VudHJ5Iiwia2luZF8wNjYiLCJpZF8wNjQiLCJuYW1lXzA2MiIsImFyZ18wNjciLCJibmRzXzA2MSIsImFyZ18wNjUiLCJibmRzXzA2MSQwIiwiYXJnXzA2MyIsImJuZHNfMDYxJDEiLCJ0dmFyX2VudHJ5X29mX3lvanNvbiIsImtpbmRfZmllbGQiLCJraW5kX3ZhbHVlIiwieW9qc29uX29mX3R2YXJfZW50cnkiLCJ2X2tpbmQiLCJwcF9lbnRyeSIsInNob3dfZW50cnkiLCJlbnRyeV9vZl9zZXhwIiwic2V4cF8wNzIiLCJ0YWdfMDczIiwicmVzMF8wNzYiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsInNleHBfYXJnc18wNzkiLCJzZXhwX29mX2VudHJ5IiwiYXJnMF8wODciLCJyZXMwXzA4OCIsImFyZzBfMDg5IiwicmVzMF8wOTAiLCJlbnRyeV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZW50cnkiLCJ4XzA5NCIsInhfMDk1IiwiZW50cnkiLCJleHRlbmRfdHZhciIsInR2YXJfZW50cnkiLCJleHRlbmRfYWxpYXMiLCJleHRlbmRfZHVtbXlfdHZhciIsInR2YXIiLCJsb29rdXBfdHZhciIsImxvb2t1cF9hbGlhcyIsImdldF9pZCIsImxvb2t1cF92YXIiLCJsb29rdXBfY3RyIiwiaXNfYWxpYXMiLCJpc19hYnN0cmFjdCIsImFkZF9jdHJzIiwiY3RycyIsInR5cCIsInR5cCQwIiwic3VidHJhY3RfcHJlZml4IiwicHJlZml4X2N0eCIsInByZWZpeF9sZW5ndGgiLCJjdHhfbGVuZ3RoIiwiYWRkZWRfYmluZGluZ3MiLCJjdHhfYWZ0ZXIiLCJjdHhfYmVmb3JlIiwibmV3X2NvdW50IiwiZmlsdGVyX2R1cGxpY2F0ZXMiLCJ0eXBfc2V0IiwidGVybV9zZXQiLCJuYW1lJDAiLCJzaGFkb3dzX3R5cCIsIm1rX2Zhc3QiLCJpc19hcnJvdyIsInR5cCQxIiwiaXNfZm9yYWxsIiwidG9fdHlwIiwidXR5cCIsInV0eXAkMCIsInUiLCJ1dHMiLCJ0b19jdHJfbWFwIiwidXMiLCJ1dHlwJDEiLCJ1dHBhdCIsInRib2R5JDAiLCJ0Ym9keSIsInV0cGF0JDAiLCJ0Ym9keSQyIiwibmFtZSQxIiwiY3R4JDEiLCJ0Ym9keSQxIiwidG9fdmFyaWFudCIsInUkMCIsInBwX3NvdXJjZSIsInNob3dfc291cmNlIiwic291cmNlX29mX3NleHAiLCJ0eV8wMTAiLCJ0eV8wMTEiLCJzZXhwX29mX3NvdXJjZSIsInR5XzAyNiIsInNvdXJjZV9vZl95b2pzb24iLCJ0eV9maWVsZCIsInR5X3ZhbHVlIiwieW9qc29uX29mX3NvdXJjZSIsInZfdHkiLCJzb3VyY2UiLCJvZl9zb3VyY2UiLCJqb2luX3R5cGVfcHJvdmVuYW5jZSIsImgxIiwiaDIiLCJmcmVlX3ZhcnMiLCJib3VuZCIsIm9wdCQzIiwidmFyX2NvdW50IiwiZnJlc2hfdmFyIiwidmFyX25hbWUiLCJ1bnJvbGwiLCJ0eV9ib2R5IiwiZml4IiwicmVzb2x2ZSIsImpvaW4kMCIsInR5MiQ1IiwidHlfam9pbiIsInR5MSQwIiwidHkyJDAiLCJ0eTIkMSIsInR5MSQxIiwidHkyJDIiLCJ0eTEkMiIsInR5MSQzIiwidHkxJDQiLCJ0eTIkMyIsInR5MSQ1IiwidHkxJDYiLCJ0eTIkNCIsInR5MSQ3IiwidHlfbmFtZSIsInJld3JhcDEiLCJ0ZXJtMSIsImpvaW5fZml4Iiwiam9pbl9hbGwiLCJpc19jb25zaXN0ZW50Iiwid2Vha19oZWFkX25vcm1hbGl6ZSIsIm5vcm1hbGl6ZSIsInRzJDAiLCJ0cGF0IiwibWF0Y2hlZF9hcnJvdyIsInR5X291dCIsInR5X2luIiwibWF0Y2hlZF9mb3JhbGwiLCJtYXRjaGVkX3Byb2QiLCJtYXRjaGVkX2xpc3QiLCJtYXRjaGVkX2FyZ3MiLCJkZWZhdWx0X2FyaXR5IiwiZ2V0X3N1bV9jb25zdHJ1Y3RvcnMiLCJ0eV9ib2R5JDAiLCJzbSQwIiwiaXNfdW5rbm93biIsIm5lZWRzX3BhcmVucyIsInByZXR0eV9wcmludF90dmFyIiwidHYiLCJwcmV0dHlfcHJpbnQiLCJwYXJlbl9wcmV0dHlfcHJpbnQiLCJ0MCIsImN0cl9wcmV0dHlfcHJpbnQiLCJ0MCQwIiwidHYkMCIsInBhdCQwIiwicGF0JDEiLCJpc19mdW5fdmFyIiwicGF0JDIiLCJpc190dXBsZV9vZl9hcnJvd3MiLCJwYXRzIiwiaXNfdHVwbGVfb2ZfdmFycyIsImdldF92YXIiLCJnZXRfZnVuX3ZhciIsInZhciQwIiwiZ2V0X251bV9vZl92YXJzIiwiY3RyX25hbWUiLCJwcF9jbHMkMCIsInNob3dfY2xzJDAiLCJjbHNfb2Zfc2V4cCQwIiwic2V4cF9vZl9jbHMkMCIsImNsc19vZl95b2pzb24kMCIsInlvanNvbl9vZl9jbHMkMCIsImhvbGUkMCIsInJlcF9pZCQwIiwiZnJlc2gkMCIsInRlcm1fb2YkMCIsInVud3JhcCQwIiwiY2xzX29mX3Rlcm0kMCIsInNob3dfY2xzJDEiLCJpc190dXBsZV9vZl9mdW5jdGlvbnMiLCJjdHJfbmFtZSQwIiwiaXNfZGVmZXJyYWwiLCJnZXRfbnVtX29mX2Z1bmN0aW9ucyIsInBwX2NscyQxIiwic2hvd19jbHMkMiIsImNsc19vZl9zZXhwJDEiLCJzZXhwXzAyNiIsInNleHBfb2ZfY2xzJDEiLCJjbHNfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfY2xzJDEiLCJhbnlfaWRzIiwidG0iLCJzY3J1dCIsInJlcF9pZCQxIiwiaXNfZXhwIiwiaXNfcGF0IiwiaXNfdHlwIiwiaWRzJDAiLCJ0bSQwIiwidG0kMSIsInRtJDIiLCJ0bSQzIiwicmVwX2lkJDIiLCJleHAiLCJyZXBsYWNlX2FsbF9pZHMiLCJyZXBhaXJfaWRzIiwic3RyaXBfY2FzdHMiLCJhc3NpZ25fbmFtZV9pZl9ub25lIiwiYm9keSIsImJvZHkkMCIsInR5X3N1YnN0Iiwic2V4cF9hcmdzXzA0MiIsImFyZzBfMDQzIiwicmVzMF8wNDQiLCJzZXhwX2FyZ3NfMDQ3Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDU3IiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsInNleHBfYXJnc18wNjIiLCJhcmcxXzA2NCIsImFyZzBfMDYzIiwicmVzMF8wNjUiLCJyZXMxXzA2NiIsImFyZzBfMDcyIiwicmVzMF8wNzMiLCJhcmcwXzA3NCIsInJlczBfMDc1IiwiYXJnMF8wODYiLCJyZXMwXzA4NyIsImFyZzBfMDg4IiwicmVzMF8wODkiLCJhcmcwXzA5MCIsInJlczBfMDkxIiwiYXJnMF8wOTIiLCJyZXMwXzA5MyIsImFyZzFfMDk1IiwiYXJnMF8wOTQiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwiYXJnMF8wOTgiLCJyZXMwXzA5OSIsInBwX2J1aWx0aW4iLCJzaG93X2J1aWx0aW4iLCJidWlsdGluX29mX3NleHAiLCJhcmcyXzAxNyIsInJlczJfMDIwIiwic2V4cF9vZl9idWlsdGluIiwiYXJnMV8wMjIiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJyZXMyXzAzMCIsImJ1aWx0aW5fb2ZfeW9qc29uIiwieW9qc29uX29mX2J1aWx0aW4iLCJwcF9mb3JtcyIsInNob3dfZm9ybXMiLCJmb3Jtc19vZl9zZXhwIiwic2V4cF9vZl9mb3JtcyIsImZvcm1zX29mX3lvanNvbiIsInlvanNvbl9vZl9mb3JtcyIsImNvbnN0JDAiLCJidWlsdGlucyIsImZuIiwiaW1wbCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwiZXBzaWxvbl9mbG9hdCIsInBpIiwibWF4X2ludCIsIm1pbl9pbnQiLCJ1bmFyeSIsImJpbmFyeSIsInRlcm5hcnkiLCJkMyIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwic3RyaW5nX29mX2ludCIsInN0cmluZ19vZl9mbG9hdCIsInN0cmluZ19vZl9ib29sIiwiaW50X29mX2Zsb2F0IiwiZmxvYXRfb2ZfaW50IiwiYWJzIiwiZmxvYXRfb3AiLCJhYnNfZmxvYXQiLCJjZWlsIiwiZmxvb3IiLCJzcXJ0IiwibG9nIiwibG9nMTAiLCJzaW4iLCJjb3MiLCJ0YW4iLCJhc2luIiwiYWNvcyIsImF0YW4iLCJjb252ZXJ0IiwiZCQwIiwiZCQxIiwiZCQyIiwiaW50X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nIiwiaW50X21vZCIsInN0cmluZ19sZW5ndGgiLCJzdHJpbmdfY29tcGFyZSIsInN0cmluZ190cmltIiwic3RyaW5nX29mIiwic3RyaW5nX2NvbmNhdCIsInN0cmluZ19zdWIiLCJsZW4iLCJtZXRhX2NvbnNfbWFwIiwibWV0YSIsImN0eF9pbml0IiwiZm9ybXNfaW5pdCIsImVudl9pbml0IiwicmVzMF8wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwicmVzMF8wNDYiLCJjbHMiLCJjbHMkMCIsImNscyQxIiwiY2xzJDIiLCJjbHMkMyIsImNscyQ0IiwiY2xzJDUiLCJpZF8wMDQiLCJleHBlY3RlZF90eV8wMDYiLCJleHBlY3RlZF90eV8wMDciLCJleHBlY3RlZF90eV8wMjIiLCJpZF8wMjAiLCJleHBlY3RlZF90eV9maWVsZCIsImV4cGVjdGVkX3R5X3ZhbHVlIiwidl9leHBlY3RlZF90eSIsInhfMDI1IiwieF8wMjYiLCJjb19jdHgiLCJjb19jdHgxIiwiY29fY3R4MiIsInVuaW9uIiwic2luZ2xldG9uIiwiZXhwZWN0ZWRfdHkiLCJlbnRyaWVzIiwiZXhwZWN0ZWRfdHlzIiwiYW5hIiwidHlfb2YiLCJvZl9hcnJvdyIsIm9mX2ZvcmFsbCIsIm5hbWVfb3B0IiwiaXRlbSIsIm5hbWVfZXhwZWN0ZWRfb3B0IiwibmFtZV9leHBlY3RlZCIsIm9mX3Byb2QiLCJvZl9jb25zX2hkIiwib2ZfY29uc190bCIsImhkX3R5Iiwib2ZfbGlzdF9jb25jYXQiLCJvZl9saXN0X2xpdCIsImN0cl9hbmFfdHlwIiwidHlfYW5hIiwidHlfZW50cnkiLCJvZl9jdHJfaW5fYXAiLCJvZl9hcCIsIm1vZGUkMCIsInR5cGFwX21vZGUiLCJvZl9kZWZlcnJlZF9hcF9hcmdzIiwidHlfaW5zIiwidHlfaW5zJDAiLCJlcnJvcl9zb3VyY2VfMDY1IiwiZXJyb3Jfc291cmNlXzA5MSIsImVycm9yX3NvdXJjZV8xMjMiLCJwcF9qb2luX3R5cGUiLCJzaG93X2pvaW5fdHlwZSIsImpvaW5fdHlwZV9vZl9zZXhwIiwic2V4cF9vZl9qb2luX3R5cGUiLCJqb2luX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2pvaW5fdHlwZSIsImFzeW5fdHkiLCJhbmFtZSIsInNleHBfYXJnc18wMjMiLCJhcmcwXzAyNCIsInNleHBfYXJnc18wMjgiLCJhcmcwXzAyOSIsInN5bl90eV8wMzYiLCJkdXBsaWNhdGVzXzAzOCIsImV4dHJhXzAzOSIsIml0ZXJfMDQ1Iiwic2V4cF8wMzIiLCJmaWVsZF9uYW1lXzA0MCIsInRhaWxfMDQ2IiwiZmllbGRfc2V4cF8wNDEkMiIsImZpZWxkX3NleHBfMDQxIiwieF8wNDciLCJmaWVsZF9zZXhwXzA0MSQwIiwiZmllbGRfc2V4cF8wNDEkMSIsInN5bl90eV8wMzciLCJuYW1lXzAzNSIsImFyZzFfMDE4IiwicmVzMV8wMjAiLCJyZXMwXzA1NyIsInN5bl90eV8wNjEiLCJuYW1lXzA1OSIsImJuZHNfMDU4IiwiYm5kc18wNTgkMCIsInN5bl90eV9maWVsZCIsInN5bl90eV92YWx1ZSIsInZfc3luX3R5IiwicHBfZXJyb3JfcGFydGlhbF9hcCIsImFhY3R1YWwiLCJhZXhwZWN0ZWQiLCJzaG93X2Vycm9yX3BhcnRpYWxfYXAiLCJlcnJvcl9wYXJ0aWFsX2FwX29mX3NleHAiLCJzZXhwXzA2OCIsImZpZWxkX3NleHBzXzA2NyIsImV4cGVjdGVkXzA3MCIsImFjdHVhbF8wNzIiLCJkdXBsaWNhdGVzXzA3NCIsImV4dHJhXzA3NSIsIml0ZXJfMDgxIiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA3OCIsImZpZWxkX25hbWVfMDc2IiwidGFpbF8wODIiLCJmaWVsZF9zZXhwXzA3NyQyIiwiZmllbGRfc2V4cF8wNzciLCJ4XzA4MyIsImZpZWxkX3NleHBfMDc3JDAiLCJmdmFsdWVfMDgwIiwiZmllbGRfc2V4cF8wNzckMSIsImZ2YWx1ZV8wNzkiLCJhY3R1YWxfMDczIiwiZXhwZWN0ZWRfMDcxIiwic2V4cF9vZl9lcnJvcl9wYXJ0aWFsX2FwIiwiYWN0dWFsXzA4NyIsImV4cGVjdGVkXzA4NSIsImFyZ18wODgiLCJibmRzXzA4NCIsImFyZ18wODYiLCJibmRzXzA4NCQwIiwiZXJyb3JfcGFydGlhbF9hcF9vZl95b2pzb24iLCJleHBlY3RlZF9maWVsZCIsImFjdHVhbF9maWVsZCIsImFjdHVhbF92YWx1ZSIsImV4cGVjdGVkX3ZhbHVlIiwieW9qc29uX29mX2Vycm9yX3BhcnRpYWxfYXAiLCJ2X2FjdHVhbCIsInZfZXhwZWN0ZWQiLCJwcF9leHAiLCJzaG93X2V4cCIsImV4cF9vZl9zZXhwIiwic2V4cF8wOTMiLCJ0YWdfMDk0Iiwic2V4cF9vZl9leHAiLCJhcmcwXzExMyIsInJlczBfMTE0IiwiYXJnMF8xMTUiLCJyZXMwXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9leHAiLCJwcF9wYXQiLCJzaG93X3BhdCIsInBhdF9vZl9zZXhwIiwic2V4cF8xMjUiLCJ0YWdfMTI2Iiwic2V4cF9hcmdzXzEyNyIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJzZXhwX29mX3BhdCIsImFyZzBfMTMwIiwicmVzMF8xMzEiLCJwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BhdCIsImpvaW5fb2YiLCJ0eXBfb2YiLCJzeW5fdHkiLCJ0eXBfb2ZfZXhwIiwic2VsZiIsInR5cF9vZl9wYXQiLCJvZl9leHBfdmFyIiwib2ZfY3RyIiwib2ZfZGVmZXJyZWRfYXAiLCJleHBlY3RlZCIsImFjdHVhbCIsImFkZF9zb3VyY2UiLCJsaXN0bGl0IiwibGlzdF9jb25jYXQiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzA3MSIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyNSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMTk2IiwiZXJyb3Jfc291cmNlXzIxNSIsImVycm9yX3NvdXJjZV8yMzMiLCJlcnJvcl9zb3VyY2VfMjUxIiwiZXJyb3Jfc291cmNlXzI2OSIsImVycm9yX3NvdXJjZV8yNzMiLCJ0cF9sb2MkMTEiLCJlcnJvcl9zb3VyY2VfMjk5IiwidHBfbG9jJDEyIiwiZXJyb3Jfc291cmNlXzMzMSIsInRwX2xvYyQxMyIsImVycm9yX3NvdXJjZV8zNzEiLCJ0cF9sb2MkMTQiLCJlcnJvcl9zb3VyY2VfMzg5IiwidHBfbG9jJDE1IiwiZXJyb3Jfc291cmNlXzM5MyIsInRwX2xvYyQxNiIsImVycm9yX3NvdXJjZV8zOTciLCJ0cF9sb2MkMTciLCJlcnJvcl9zb3VyY2VfNDE5IiwidHBfbG9jJDE4IiwiZXJyb3Jfc291cmNlXzQzMCIsInRwX2xvYyQxOSIsImVycm9yX3NvdXJjZV80ODEiLCJ0cF9sb2MkMjAiLCJlcnJvcl9zb3VyY2VfNTQyIiwidHBfbG9jJDIxIiwiZXJyb3Jfc291cmNlXzU5NiIsInRwX2xvYyQyMiIsImVycm9yX3NvdXJjZV82MzgiLCJ0cF9sb2MkMjMiLCJlcnJvcl9zb3VyY2VfNjczIiwidHBfbG9jJDI0IiwiZXJyb3Jfc291cmNlXzY4OCIsInRwX2xvYyQyNSIsImVycm9yX3NvdXJjZV83MjciLCJ0cF9sb2MkMjYiLCJwcF9hbmNlc3RvcnMiLCJzaG93X2FuY2VzdG9ycyIsImFuY2VzdG9yc19vZl9zZXhwIiwic2V4cF9vZl9hbmNlc3RvcnMiLCJhbmNlc3RvcnNfb2ZfeW9qc29uIiwieW9qc29uX29mX2FuY2VzdG9ycyIsInBwX2Vycm9yX2luY29uc2lzdGVudCIsInNob3dfZXJyb3JfaW5jb25zaXN0ZW50IiwiYXN5biIsImFhbmEiLCJlcnJvcl9pbmNvbnNpc3RlbnRfb2Zfc2V4cCIsImZpZWxkX3NleHBzXzAwOCIsImFuYV8wMTEiLCJzeW5fMDEzIiwiaXRlcl8wMjIiLCJzZXhwXzAwOSQwIiwidGFpbF8wMjMiLCJ4XzAyNCIsImZ2YWx1ZV8wMjAiLCJmdmFsdWVfMDIxIiwic3luXzAxNCIsImFuYV8wMTIiLCJzZXhwX29mX2Vycm9yX2luY29uc2lzdGVudCIsInN5bl8wMzgiLCJhbmFfMDM2IiwiYm5kc18wMzUiLCJibmRzXzAzNSQwIiwiZXJyb3JfaW5jb25zaXN0ZW50X29mX3lvanNvbiIsImFuYV9maWVsZCIsInN5bl9maWVsZCIsInN5bl92YWx1ZSIsImFuYV92YWx1ZSIsInlvanNvbl9vZl9lcnJvcl9pbmNvbnNpc3RlbnQiLCJ2X3N5biIsInZfYW5hIiwicHBfZXJyb3Jfbm9fdHlwZSIsInNob3dfZXJyb3Jfbm9fdHlwZSIsImVycm9yX25vX3R5cGVfb2Zfc2V4cCIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJzZXhwX2FyZ3NfMDUwIiwiYXJnMF8wNTEiLCJzZXhwX29mX2Vycm9yX25vX3R5cGUiLCJyZXMwXzA2NCIsImVycm9yX25vX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX25vX3R5cGUiLCJwcF9lcnJvcl9jb21tb24iLCJzaG93X2Vycm9yX2NvbW1vbiIsImVycm9yX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8wNzMiLCJ0YWdfMDc0Iiwic2V4cF9hcmdzXzA4MCIsImFyZzBfMDgxIiwicmVzMF8wODIiLCJzZXhwX29mX2Vycm9yX2NvbW1vbiIsImFyZzBfMDgzIiwicmVzMF8wODQiLCJlcnJvcl9jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX2NvbW1vbiIsInBwX2Vycm9yX2V4cCIsInNob3dfZXJyb3JfZXhwIiwiZXJyb3JfZXhwX29mX3NleHAiLCJzZXhwXzA5MSIsInRhZ18wOTIiLCJzZXhwX2FyZ3NfMDkzIiwicmVzMF8wOTUiLCJzZXhwX2FyZ3NfMTAzIiwiYXJnMF8xMDQiLCJyZXMwXzEwNSIsInNleHBfYXJnc18wOTgiLCJhcmcwXzA5OSIsInJlczBfMTAwIiwic2V4cF9vZl9lcnJvcl9leHAiLCJhcmcwXzEwOCIsInJlczBfMTA5IiwiYXJnMF8xMTAiLCJyZXMwXzExMSIsImVycm9yX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfZXhwIiwicHBfZXJyb3JfcGF0Iiwic2hvd19lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJzZXhwX29mX2Vycm9yX3BhdCIsImVycm9yX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfcGF0IiwicHBfb2tfYW5hIiwic2hvd19va19hbmEiLCJham9pbiIsImFub2pvaW4iLCJhYW5hJDAiLCJva19hbmFfb2Zfc2V4cCIsInNleHBfMTI4IiwiZmllbGRfc2V4cHNfMTQ3IiwiYW5hXzE1MCIsIm5vam9pbl8xNTIiLCJkdXBsaWNhdGVzXzE1NCIsImV4dHJhXzE1NSIsIml0ZXJfMTYxIiwic2V4cF8xNDgiLCJmaWVsZF9zZXhwc18xNTgiLCJmaWVsZF9uYW1lXzE1NiIsInRhaWxfMTYyIiwiZmllbGRfc2V4cF8xNTckMiIsImZpZWxkX3NleHBfMTU3IiwieF8xNjMiLCJmaWVsZF9zZXhwXzE1NyQwIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTU3JDEiLCJmdmFsdWVfMTYwIiwibm9qb2luXzE1MyIsImFuYV8xNTEiLCJmaWVsZF9zZXhwc18xMjciLCJhbmFfMTMwIiwic3luXzEzMiIsImpvaW5fMTM0IiwiZHVwbGljYXRlc18xMzYiLCJleHRyYV8xMzciLCJpdGVyXzE0NCIsInNleHBfMTI4JDAiLCJmaWVsZF9zZXhwc18xNDAiLCJmaWVsZF9uYW1lXzEzOCIsInRhaWxfMTQ1IiwiZmllbGRfc2V4cF8xMzkkMyIsImZpZWxkX3NleHBfMTM5IiwieF8xNDYiLCJmaWVsZF9zZXhwXzEzOSQwIiwiZnZhbHVlXzE0MiIsImZpZWxkX3NleHBfMTM5JDEiLCJmdmFsdWVfMTQxIiwiZmllbGRfc2V4cF8xMzkkMiIsImZ2YWx1ZV8xNDMiLCJqb2luXzEzNSIsInN5bl8xMzMiLCJhbmFfMTMxIiwic2V4cF9vZl9va19hbmEiLCJqb2luXzE2OSIsInN5bl8xNjciLCJhbmFfMTY1IiwiYXJnXzE3MCIsImJuZHNfMTY0IiwiYXJnXzE2OCIsImJuZHNfMTY0JDAiLCJhcmdfMTY2IiwiYm5kc18xNjQkMSIsIm5vam9pbl8xNzQiLCJhbmFfMTcyIiwiYXJnXzE3NSIsImJuZHNfMTcxIiwiYXJnXzE3MyIsImJuZHNfMTcxJDAiLCJva19hbmFfb2ZfeW9qc29uIiwibm9qb2luX2ZpZWxkIiwibm9qb2luX3ZhbHVlIiwiZmllbGRfeW9qc29ucyQwIiwiYW5hX2ZpZWxkJDAiLCJqb2luX2ZpZWxkIiwiZHVwbGljYXRlcyQwIiwiZXh0cmEkMCIsIml0ZXIkMCIsImpvaW5fdmFsdWUiLCJhbmFfdmFsdWUkMCIsInlvanNvbl9vZl9va19hbmEiLCJ2X2pvaW4iLCJ2X25vam9pbiIsInZfYW5hJDAiLCJwcF9va19jb21tb24iLCJzaG93X29rX2NvbW1vbiIsIm9rX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8xODAiLCJ0YWdfMTgxIiwicmVzMF8xODQiLCJzZXhwX2FyZ3NfMTg3IiwiYXJnMF8xODgiLCJyZXMwXzE4OSIsInNleHBfb2Zfb2tfY29tbW9uIiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsInJlczBfMTkzIiwib2tfY29tbW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9va19jb21tb24iLCJwcF9va19leHAiLCJzaG93X29rX2V4cCIsIm9rX2V4cF9vZl9zZXhwIiwic2V4cF8xOTgiLCJ0YWdfMTk5IiwicmVzMF8yMDciLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsInNleHBfb2Zfb2tfZXhwIiwiYXJnMF8yMDgiLCJhcmcwXzIxMCIsInJlczBfMjExIiwib2tfZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9va19leHAiLCJwcF9va19wYXQiLCJzaG93X29rX3BhdCIsInBwX3N0YXR1c19jb21tb24iLCJzaG93X3N0YXR1c19jb21tb24iLCJzdGF0dXNfY29tbW9uX29mX3NleHAiLCJzZXhwXzIxNyIsInRhZ18yMTgiLCJzZXhwX2FyZ3NfMjI0IiwiYXJnMF8yMjUiLCJyZXMwXzIyNiIsInNleHBfYXJnc18yMTkiLCJhcmcwXzIyMCIsInJlczBfMjIxIiwic2V4cF9vZl9zdGF0dXNfY29tbW9uIiwicmVzMF8yMjgiLCJhcmcwXzIyOSIsInJlczBfMjMwIiwic3RhdHVzX2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2NvbW1vbiIsInBwX3N0YXR1c19leHAiLCJzaG93X3N0YXR1c19leHAiLCJzdGF0dXNfZXhwX29mX3NleHAiLCJzZXhwXzIzNSIsInRhZ18yMzYiLCJzZXhwX2FyZ3NfMjQyIiwiYXJnMF8yNDMiLCJyZXMwXzI0NCIsInNleHBfYXJnc18yMzciLCJhcmcwXzIzOCIsInJlczBfMjM5Iiwic2V4cF9vZl9zdGF0dXNfZXhwIiwiYXJnMF8yNDUiLCJyZXMwXzI0NiIsImFyZzBfMjQ3Iiwic3RhdHVzX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2V4cCIsInBwX3N0YXR1c19wYXQiLCJzaG93X3N0YXR1c19wYXQiLCJzdGF0dXNfcGF0X29mX3NleHAiLCJzZXhwXzI1MyIsInRhZ18yNTQiLCJzZXhwX2FyZ3NfMjYwIiwiYXJnMF8yNjEiLCJzZXhwX2FyZ3NfMjU1IiwiYXJnMF8yNTYiLCJyZXMwXzI1NyIsInNleHBfb2Zfc3RhdHVzX3BhdCIsImFyZzBfMjYzIiwicmVzMF8yNjQiLCJhcmcwXzI2NSIsInJlczBfMjY2Iiwic3RhdHVzX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3BhdCIsInBwX3N0YXR1c192YXJpYW50Iiwic2hvd19zdGF0dXNfdmFyaWFudCIsInN0YXR1c192YXJpYW50X29mX3NleHAiLCJzZXhwXzI3MCIsInNleHBfb2Zfc3RhdHVzX3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3ZhcmlhbnQiLCJwcF90eXBfZXhwZWN0cyIsInNob3dfdHlwX2V4cGVjdHMiLCJ0eXBfZXhwZWN0c19vZl9zZXhwIiwic2V4cF8yNzUiLCJ0YWdfMjc2Iiwic2V4cF9hcmdzXzI4NCIsImFyZzFfMjg2IiwiYXJnMF8yODUiLCJyZXMwXzI4NyIsInJlczFfMjg4Iiwic2V4cF9hcmdzXzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwic2V4cF9vZl90eXBfZXhwZWN0cyIsImFyZzFfMjkwIiwiYXJnMF8yODkiLCJyZXMwXzI5MSIsInJlczFfMjkyIiwicmVzMF8yOTUiLCJyZXMxXzI5NiIsInR5cF9leHBlY3RzX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBfZXhwZWN0cyIsInBwX2Vycm9yX3R5cCIsInNob3dfZXJyb3JfdHlwIiwiXzIkNCIsImVycm9yX3R5cF9vZl9zZXhwIiwic2V4cF8zMDEiLCJ0YWdfMzAyIiwic2V4cF9hcmdzXzMwMyIsImFyZzBfMzA0IiwicmVzMF8zMDUiLCJzZXhwX2FyZ3NfMzEzIiwiYXJnMF8zMTQiLCJyZXMwXzMxNSIsInNleHBfYXJnc18zMDgiLCJyZXMwXzMxMCIsInNleHBfYXJnc18zMTgiLCJzZXhwX29mX2Vycm9yX3R5cCIsImVycm9yX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHlwIiwicHBfb2tfdHlwIiwic2hvd19va190eXAiLCJfMiQ1Iiwib2tfdHlwX29mX3NleHAiLCJzZXhwXzMzMyIsInRhZ18zMzQiLCJzZXhwX2FyZ3NfMzQyIiwic2V4cF9hcmdzXzMzNSIsImFyZzFfMzM3IiwiYXJnMF8zMzYiLCJyZXMwXzMzOCIsInJlczFfMzM5Iiwic2V4cF9hcmdzXzM0NyIsImFyZzFfMzQ5IiwiYXJnMF8zNDgiLCJzZXhwX2FyZ3NfMzU0IiwiYXJnMF8zNTUiLCJzZXhwX29mX29rX3R5cCIsImFyZzFfMzU4IiwiYXJnMF8zNTciLCJyZXMwXzM1OSIsInJlczFfMzYwIiwiYXJnMF8zNjEiLCJhcmcxXzM2NCIsImFyZzBfMzYzIiwicmVzMF8zNjUiLCJyZXMxXzM2NiIsImFyZzBfMzY3Iiwib2tfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9va190eXAiLCJwcF9zdGF0dXNfdHlwIiwic2hvd19zdGF0dXNfdHlwIiwic3RhdHVzX3R5cF9vZl9zZXhwIiwic2V4cF8zNzMiLCJ0YWdfMzc0Iiwic2V4cF9hcmdzXzM4MCIsImFyZzBfMzgxIiwic2V4cF9hcmdzXzM3NSIsImFyZzBfMzc2Iiwic2V4cF9vZl9zdGF0dXNfdHlwIiwiYXJnMF8zODMiLCJyZXMwXzM4NCIsInJlczBfMzg2Iiwic3RhdHVzX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3R5cCIsInBwX3R5cGVfdmFyX2VyciIsInNob3dfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3NleHAiLCJzZXhwXzM5MCIsInNleHBfb2ZfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBlX3Zhcl9lcnIiLCJwcF9zaGFkb3dfc3JjIiwic2hvd19zaGFkb3dfc3JjIiwic2hhZG93X3NyY19vZl9zZXhwIiwic2V4cF8zOTQiLCJzZXhwX29mX3NoYWRvd19zcmMiLCJzaGFkb3dfc3JjX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFkb3dfc3JjIiwicHBfZXJyb3JfdHBhdCIsInNob3dfZXJyb3JfdHBhdCIsIl8xJDEzIiwiXzAkMTYiLCJlcnJvcl90cGF0X29mX3NleHAiLCJzZXhwXzM5OSIsInRhZ180MDAiLCJzZXhwX2FyZ3NfNDAxIiwiYXJnMV80MDMiLCJhcmcwXzQwMiIsInJlczBfNDA0IiwicmVzMV80MDUiLCJzZXhwX2FyZ3NfNDA4IiwicmVzMF80MTAiLCJzZXhwX29mX2Vycm9yX3RwYXQiLCJhcmcxXzQxMiIsImFyZzBfNDExIiwicmVzMF80MTMiLCJyZXMxXzQxNCIsImFyZzBfNDE1IiwiZXJyb3JfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHBhdCIsInBwX29rX3RwYXQiLCJzaG93X29rX3RwYXQiLCJva190cGF0X29mX3NleHAiLCJzZXhwXzQyMSIsInRhZ180MjIiLCJzZXhwX2FyZ3NfNDIzIiwiYXJnMF80MjQiLCJyZXMwXzQyNSIsInNleHBfb2Zfb2tfdHBhdCIsImFyZzBfNDI2Iiwib2tfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb2tfdHBhdCIsInBwX3N0YXR1c190cGF0Iiwic2hvd19zdGF0dXNfdHBhdCIsIl8xJDE0IiwiXzAkMTciLCJzdGF0dXNfdHBhdF9vZl9zZXhwIiwic2V4cF80MzIiLCJ0YWdfNDMzIiwic2V4cF9hcmdzXzQzNCIsImFyZzBfNDM1IiwicmVzMF80MzYiLCJzZXhwX2FyZ3NfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsInNleHBfb2Zfc3RhdHVzX3RwYXQiLCJhcmcwXzQ0MiIsInJlczBfNDQzIiwiYXJnMF80NDQiLCJyZXMwXzQ0NSIsInN0YXR1c190cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfdHBhdCIsIl8yJDYiLCJfMSQxNSIsIl8wJDE4Iiwic2V4cF80NDciLCJmaWVsZF9zZXhwc180NDgiLCJ0ZXJtXzQ0OSIsImFuY2VzdG9yc180NTEiLCJjdHhfNDUzIiwibW9kZV80NTUiLCJzZWxmXzQ1NyIsImNvX2N0eF80NTkiLCJjbHNfNDYxIiwic3RhdHVzXzQ2MyIsInR5XzQ2NSIsImR1cGxpY2F0ZXNfNDY3IiwiZXh0cmFfNDY4IiwiaXRlcl80ODIiLCJzZXhwXzQ0NyQwIiwiZmllbGRfc2V4cHNfNDcxIiwiZmllbGRfbmFtZV80NjkiLCJ0YWlsXzQ4MyIsImZpZWxkX3NleHBfNDcwJDkiLCJmaWVsZF9zZXhwXzQ3MCIsInhfNDg0IiwiZmllbGRfc2V4cF80NzAkMCIsImZ2YWx1ZV80NzIiLCJmaWVsZF9zZXhwXzQ3MCQxIiwiZnZhbHVlXzQ4MCIsImZpZWxkX3NleHBfNDcwJDIiLCJmdmFsdWVfNDczIiwiZmllbGRfc2V4cF80NzAkMyIsImZ2YWx1ZV80NzYiLCJmaWVsZF9zZXhwXzQ3MCQ0IiwiZnZhbHVlXzQ3NyIsImZpZWxkX3NleHBfNDcwJDUiLCJmdmFsdWVfNDc4IiwiZmllbGRfc2V4cF80NzAkNiIsImZ2YWx1ZV80NzUiLCJmaWVsZF9zZXhwXzQ3MCQ3IiwiZnZhbHVlXzQ3NCIsImZpZWxkX3NleHBfNDcwJDgiLCJmdmFsdWVfNDc5IiwidHlfNDY2Iiwic3RhdHVzXzQ2NCIsImNsc180NjIiLCJjb19jdHhfNDYwIiwic2VsZl80NTgiLCJtb2RlXzQ1NiIsImN0eF80NTQiLCJhbmNlc3RvcnNfNDUyIiwidGVybV80NTAiLCJ0eV81MDIiLCJzdGF0dXNfNTAwIiwiY2xzXzQ5OCIsImNvX2N0eF80OTYiLCJzZWxmXzQ5NCIsIm1vZGVfNDkyIiwiY3R4XzQ5MCIsImFuY2VzdG9yc180ODgiLCJ0ZXJtXzQ4NiIsImFyZ181MDMiLCJibmRzXzQ4NSIsImFyZ181MDEiLCJibmRzXzQ4NSQwIiwiYXJnXzQ5OSIsImJuZHNfNDg1JDEiLCJhcmdfNDk3IiwiYm5kc180ODUkMiIsImFyZ180OTUiLCJibmRzXzQ4NSQzIiwiYXJnXzQ5MyIsImJuZHNfNDg1JDQiLCJhcmdfNDkxIiwiYm5kc180ODUkNSIsImFyZ180ODkiLCJibmRzXzQ4NSQ2IiwiYXJnXzQ4NyIsImJuZHNfNDg1JDciLCJjdHhfZmllbGQiLCJzZWxmX2ZpZWxkIiwiY29fY3R4X2ZpZWxkIiwiY2xzX2ZpZWxkIiwic3RhdHVzX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJzdGF0dXNfdmFsdWUiLCJjbHNfdmFsdWUiLCJjb19jdHhfdmFsdWUiLCJzZWxmX3ZhbHVlIiwiY3R4X3ZhbHVlIiwidl9zdGF0dXMiLCJ2X2NscyIsInZfY29fY3R4Iiwidl9zZWxmIiwidl9jdHgiLCJhcmckNCIsImJuZHMkNCIsImFyZyQ1IiwiYm5kcyQ1IiwiYXJnJDYiLCJibmRzJDYiLCJhcmckNyIsImJuZHMkNyIsIl8zJDQiLCJfMiQ3IiwiXzEkMTYiLCJfMCQxOSIsInNleHBfNTA1IiwiZmllbGRfc2V4cHNfNTA2IiwidGVybV81MDciLCJhbmNlc3RvcnNfNTA5IiwiY3R4XzUxMSIsImNvX2N0eF81MTMiLCJwcmV2X3N5bnN3aXRjaF81MTUiLCJtb2RlXzUxNyIsInNlbGZfNTE5IiwiY2xzXzUyMSIsInN0YXR1c181MjMiLCJ0eV81MjUiLCJkdXBsaWNhdGVzXzUyNyIsImV4dHJhXzUyOCIsIml0ZXJfNTQzIiwic2V4cF81MDUkMCIsImZpZWxkX3NleHBzXzUzMSIsImZpZWxkX25hbWVfNTI5IiwidGFpbF81NDQiLCJmaWVsZF9zZXhwXzUzMCQxMCIsImZpZWxkX3NleHBfNTMwIiwieF81NDUiLCJmaWVsZF9zZXhwXzUzMCQwIiwiZnZhbHVlXzUzMiIsImZpZWxkX3NleHBfNTMwJDEiLCJmdmFsdWVfNTQxIiwiZmllbGRfc2V4cF81MzAkMiIsImZ2YWx1ZV81MzMiLCJmaWVsZF9zZXhwXzUzMCQzIiwiZnZhbHVlXzUzNSIsImZpZWxkX3NleHBfNTMwJDQiLCJmdmFsdWVfNTM3IiwiZmllbGRfc2V4cF81MzAkNSIsImZ2YWx1ZV81MzYiLCJmaWVsZF9zZXhwXzUzMCQ2IiwiZnZhbHVlXzUzOSIsImZpZWxkX3NleHBfNTMwJDciLCJmdmFsdWVfNTM4IiwiZmllbGRfc2V4cF81MzAkOCIsImZ2YWx1ZV81MzQiLCJmaWVsZF9zZXhwXzUzMCQ5IiwiZnZhbHVlXzU0MCIsInR5XzUyNiIsInN0YXR1c181MjQiLCJjbHNfNTIyIiwic2VsZl81MjAiLCJtb2RlXzUxOCIsInByZXZfc3luc3dpdGNoXzUxNiIsImNvX2N0eF81MTQiLCJjdHhfNTEyIiwiYW5jZXN0b3JzXzUxMCIsInRlcm1fNTA4IiwidHlfNTY1Iiwic3RhdHVzXzU2MyIsImNsc181NjEiLCJzZWxmXzU1OSIsIm1vZGVfNTU3IiwicHJldl9zeW5zd2l0Y2hfNTU1IiwiY29fY3R4XzU1MyIsImN0eF81NTEiLCJhbmNlc3RvcnNfNTQ5IiwidGVybV81NDciLCJhcmdfNTY2IiwiYm5kc181NDYiLCJhcmdfNTY0IiwiYm5kc181NDYkMCIsImFyZ181NjIiLCJibmRzXzU0NiQxIiwiYXJnXzU2MCIsImJuZHNfNTQ2JDIiLCJhcmdfNTU4IiwiYm5kc181NDYkMyIsImFyZ181NTYiLCJibmRzXzU0NiQ0IiwiYXJnXzU1NCIsImJuZHNfNTQ2JDUiLCJhcmdfNTUyIiwiYm5kc181NDYkNiIsImFyZ181NTAiLCJibmRzXzU0NiQ3IiwiYXJnXzU0OCIsImJuZHNfNTQ2JDgiLCJwcmV2X3N5bnN3aXRjaF9maWVsZCIsImZ2YWx1ZSQ4IiwicHJldl9zeW5zd2l0Y2hfdmFsdWUiLCJ2X3ByZXZfc3luc3dpdGNoIiwiYXJnJDgiLCJibmRzJDgiLCJwcF90eXAiLCJzaG93X3R5cCIsIl80JDMiLCJfMyQ1IiwiXzIkOCIsIl8xJDE3IiwiXzAkMjAiLCJ0eXBfb2Zfc2V4cCIsInNleHBfNTY4IiwiZmllbGRfc2V4cHNfNTY5IiwidGVybV81NzAiLCJhbmNlc3RvcnNfNTcyIiwiY3R4XzU3NCIsImV4cGVjdHNfNTc2IiwiY2xzXzU3OCIsInN0YXR1c181ODAiLCJ0eV81ODIiLCJkdXBsaWNhdGVzXzU4NCIsImV4dHJhXzU4NSIsIml0ZXJfNTk3Iiwic2V4cF81NjgkMCIsImZpZWxkX3NleHBzXzU4OCIsImZpZWxkX25hbWVfNTg2IiwidGFpbF81OTgiLCJmaWVsZF9zZXhwXzU4NyQ3IiwiZmllbGRfc2V4cF81ODciLCJ4XzU5OSIsImZpZWxkX3NleHBfNTg3JDAiLCJmdmFsdWVfNTg5IiwiZmllbGRfc2V4cF81ODckMSIsImZ2YWx1ZV81OTUiLCJmaWVsZF9zZXhwXzU4NyQyIiwiZnZhbHVlXzU5MCIsImZpZWxkX3NleHBfNTg3JDMiLCJmdmFsdWVfNTkyIiwiZmllbGRfc2V4cF81ODckNCIsImZ2YWx1ZV81OTMiLCJmaWVsZF9zZXhwXzU4NyQ1IiwiZnZhbHVlXzU5MSIsImZpZWxkX3NleHBfNTg3JDYiLCJmdmFsdWVfNTk0IiwidHlfNTgzIiwic3RhdHVzXzU4MSIsImNsc181NzkiLCJleHBlY3RzXzU3NyIsImN0eF81NzUiLCJhbmNlc3RvcnNfNTczIiwidGVybV81NzEiLCJzZXhwX29mX3R5cCIsInR5XzYxMyIsInN0YXR1c182MTEiLCJjbHNfNjA5IiwiZXhwZWN0c182MDciLCJjdHhfNjA1IiwiYW5jZXN0b3JzXzYwMyIsInRlcm1fNjAxIiwiYXJnXzYxNCIsImJuZHNfNjAwIiwiYXJnXzYxMiIsImJuZHNfNjAwJDAiLCJhcmdfNjEwIiwiYm5kc182MDAkMSIsImFyZ182MDgiLCJibmRzXzYwMCQyIiwiYXJnXzYwNiIsImJuZHNfNjAwJDMiLCJhcmdfNjA0IiwiYm5kc182MDAkNCIsImFyZ182MDIiLCJibmRzXzYwMCQ1IiwidHlwX29mX3lvanNvbiIsImV4cGVjdHNfZmllbGQiLCJleHBlY3RzX3ZhbHVlIiwieW9qc29uX29mX3R5cCIsInZfZXhwZWN0cyIsInBwX3RwYXQiLCJzaG93X3RwYXQiLCJfNCQ0IiwiXzMkNiIsIl8yJDkiLCJfMSQxOCIsIl8wJDIxIiwidHBhdF9vZl9zZXhwIiwic2V4cF82MTYiLCJmaWVsZF9zZXhwc182MTciLCJ0ZXJtXzYxOCIsImFuY2VzdG9yc182MjAiLCJjdHhfNjIyIiwiY2xzXzYyNCIsInN0YXR1c182MjYiLCJkdXBsaWNhdGVzXzYyOCIsImV4dHJhXzYyOSIsIml0ZXJfNjM5Iiwic2V4cF82MTYkMCIsImZpZWxkX3NleHBzXzYzMiIsImZpZWxkX25hbWVfNjMwIiwidGFpbF82NDAiLCJmaWVsZF9zZXhwXzYzMSQ1IiwiZmllbGRfc2V4cF82MzEiLCJ4XzY0MSIsImZpZWxkX3NleHBfNjMxJDAiLCJmdmFsdWVfNjM3IiwiZmllbGRfc2V4cF82MzEkMSIsImZ2YWx1ZV82MzMiLCJmaWVsZF9zZXhwXzYzMSQyIiwiZnZhbHVlXzYzNSIsImZpZWxkX3NleHBfNjMxJDMiLCJmdmFsdWVfNjM0IiwiZmllbGRfc2V4cF82MzEkNCIsImZ2YWx1ZV82MzYiLCJzdGF0dXNfNjI3IiwiY2xzXzYyNSIsImN0eF82MjMiLCJhbmNlc3RvcnNfNjIxIiwidGVybV82MTkiLCJzZXhwX29mX3RwYXQiLCJzdGF0dXNfNjUxIiwiY2xzXzY0OSIsImN0eF82NDciLCJhbmNlc3RvcnNfNjQ1IiwidGVybV82NDMiLCJhcmdfNjUyIiwiYm5kc182NDIiLCJhcmdfNjUwIiwiYm5kc182NDIkMCIsImFyZ182NDgiLCJibmRzXzY0MiQxIiwiYXJnXzY0NiIsImJuZHNfNjQyJDIiLCJhcmdfNjQ0IiwiYm5kc182NDIkMyIsInRwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3RwYXQiLCJwcF9zZWNvbmRhcnkiLCJzaG93X3NlY29uZGFyeSIsIl8zJDciLCJfMiQxMCIsIl8xJDE5IiwiXzAkMjIiLCJzZWNvbmRhcnlfb2Zfc2V4cCIsInNleHBfNjU0IiwiZmllbGRfc2V4cHNfNjU1IiwiaWRfNjU2IiwiY2xzXzY1OCIsInNvcnRfNjYwIiwiY3R4XzY2MiIsImR1cGxpY2F0ZXNfNjY0IiwiZXh0cmFfNjY1IiwiaXRlcl82NzQiLCJzZXhwXzY1NCQwIiwiZmllbGRfc2V4cHNfNjY4IiwiZmllbGRfbmFtZV82NjYiLCJ0YWlsXzY3NSIsImZpZWxkX3NleHBfNjY3JDQiLCJmaWVsZF9zZXhwXzY2NyIsInhfNjc2IiwiZmllbGRfc2V4cF82NjckMCIsImZ2YWx1ZV82NzAiLCJmaWVsZF9zZXhwXzY2NyQxIiwiZnZhbHVlXzY3MiIsImZpZWxkX3NleHBfNjY3JDIiLCJmdmFsdWVfNjY5IiwiZmllbGRfc2V4cF82NjckMyIsImZ2YWx1ZV82NzEiLCJjdHhfNjYzIiwic29ydF82NjEiLCJjbHNfNjU5IiwiaWRfNjU3Iiwic2V4cF9vZl9zZWNvbmRhcnkiLCJjdHhfNjg0Iiwic29ydF82ODIiLCJjbHNfNjgwIiwiaWRfNjc4IiwiYXJnXzY4NSIsImJuZHNfNjc3IiwiYXJnXzY4MyIsImJuZHNfNjc3JDAiLCJhcmdfNjgxIiwiYm5kc182NzckMSIsImFyZ182NzkiLCJibmRzXzY3NyQyIiwic2Vjb25kYXJ5X29mX3lvanNvbiIsInlvanNvbl9vZl9zZWNvbmRhcnkiLCJfNCQ1IiwiXzMkOCIsIl8yJDExIiwiXzEkMjAiLCJfMCQyMyIsInNleHBfNjkwIiwidGFnXzY5MSIsInNleHBfYXJnc182OTIiLCJhcmcwXzY5MyIsInJlczBfNjk0Iiwic2V4cF9hcmdzXzY5NyIsImFyZzBfNjk4IiwicmVzMF82OTkiLCJzZXhwX2FyZ3NfNzA3IiwiYXJnMF83MDgiLCJyZXMwXzcwOSIsInNleHBfYXJnc183MDIiLCJhcmcwXzcwMyIsInJlczBfNzA0Iiwic2V4cF9hcmdzXzcxMiIsImFyZzBfNzEzIiwicmVzMF83MTQiLCJhcmcwXzcxNSIsInJlczBfNzE2IiwiYXJnMF83MTciLCJyZXMwXzcxOCIsImFyZzBfNzIxIiwicmVzMF83MjIiLCJhcmcwXzcyMyIsInJlczBfNzI0IiwicHBfZXJyb3IiLCJzaG93X2Vycm9yIiwiXzMkOSIsIl8yJDEyIiwiXzEkMjEiLCJfMCQyNCIsImVycm9yX29mX3NleHAiLCJzZXhwXzcyOSIsInRhZ183MzAiLCJzZXhwX2FyZ3NfNzQxIiwiYXJnMF83NDIiLCJyZXMwXzc0MyIsInNleHBfYXJnc183NDYiLCJhcmcwXzc0NyIsInJlczBfNzQ4Iiwic2V4cF9hcmdzXzczNiIsInNleHBfYXJnc183MzEiLCJhcmcwXzczMiIsInJlczBfNzMzIiwic2V4cF9vZl9lcnJvciIsImFyZzBfNzQ5IiwicmVzMF83NTAiLCJhcmcwXzc1MSIsInJlczBfNzUyIiwiYXJnMF83NTMiLCJhcmcwXzc1NSIsInJlczBfNzU2IiwiZXJyb3Jfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yIiwic29ydF9vZiIsImN0eF9vZiIsImFuY2VzdG9yc19vZiIsImkkMCIsImkkMSIsImkkMiIsImVycm9yX29mIiwiZXJyJDAiLCJlcnIkMSIsImVyciQyIiwiZXhwX2NvX2N0eCIsImV4cF90eSIsInBhdF9jdHgiLCJwYXRfdHkiLCJzdGF0dXNfY29tbW9uIiwic2VsZiQwIiwic3luIiwiYW5hJDAiLCJzeW4kMCIsImFuYV90eSIsInNlbGYkMSIsInN5bl90eSQwIiwic2VsZiQyIiwic3RhdHVzX3BhdCIsInNlbGZfcGF0IiwiZXJyX3BhdCIsIm9rX2V4cCIsInN0YXR1c19leHAiLCJzdGF0dXNfdHlwIiwiZXhwZWN0cyIsInN1bV90eSIsInR5X3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudCIsInN0YXR1c190cGF0Iiwic3JjIiwiaXNfZXJyb3IiLCJjaSIsImN0eCQyIiwiZml4ZWRfdHlwX29rIiwiZml4ZWRfdHlwX2Vycl9jb21tb24iLCJmaXhlZF90eXBfZXJyIiwiZml4ZWRfdHlwX2Vycl9wYXQiLCJmaXhlZF90eXBfcGF0Iiwib2siLCJmaXhlZF90eXBfZXhwIiwiZGVyaXZlZF9leHAiLCJ1ZXhwIiwic3RhdHVzIiwiZGVyaXZlZF9wYXQiLCJ1cGF0IiwicHJldl9zeW5zd2l0Y2giLCJkZXJpdmVkX3R5cCIsImRlcml2ZWRfdHBhdCIsImdldF9iaW5kaW5nX3NpdGUiLCJ0eXBfaXNfY29uc3RydWN0b3JfZXhwZWN0ZWQiLCJyYW5nZSIsInJhbmdlX2hhc2giLCJyb290X2wiLCJyb290X3IiLCJ1bmljaGlsZF9tYXAiLCJtYXBfbCIsImwkMiIsIm1hcF9yIiwiciQyIiwidW5pY2hpbGRfbWFwJDAiLCJyYW5nZSQwIiwiYmV0d2Vlbl9jaGlsZF9tYXAiLCJtayQwIiwicmVzIiwiZXJyb3JfaWRzIiwidGVybV9yYW5nZXMiLCJpbmZvX21hcCIsIm1hcF9tIiwiYWRkX2luZm8iLCJpc19hcnJvd19saWtlIiwiaXNfcmVjdXJzaXZlIiwiZGVmIiwibnVtX2ZucyIsIm51bV92YXJzIiwibm9ybSIsInN5bnMiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdCIsInR5cF9leHBfYmlub3BfYmluX3N0cmluZyIsInR5cF9leHBfYmlub3AiLCJ0eXBfZXhwX3Vub3AiLCJhbnlfdG9faW5mb19tYXAiLCJhbnkiLCJ1ZXhwX3RvX2luZm9fbWFwIiwibSQxIiwidXBhdF90b19pbmZvX21hcCIsInV0eXBfdG9faW5mb19tYXAiLCJ1dHBhdF90b19pbmZvX21hcCIsIm11bHRpIiwiY29fY3R4cyIsImN0eF9kZWYiLCJpc19pbl9maWx0ZXIiLCJhZGQiLCJ1ZXhwX3RvX2luZm9fbWFwJDAiLCJpc19pbl9maWx0ZXIkMCIsImdvJDAiLCJtYXBfbV9nbyIsImdvX3BhdCIsImF0b21pYyIsInBvc2l0aW9uIiwibW9kZXMiLCJtJDMiLCJlcyQwIiwibW9kZV9ib2R5IiwibW9kZV9wYXQiLCJtJDQiLCJtJDUiLCJib2R5JDEiLCJtb2RlX2JvZHkkMSIsIm0kOCIsImN0eF9ib2R5IiwibSQ5IiwiYm9keSQyIiwibW9kZV9ib2R5JDAiLCJtJDYiLCJtJDciLCJlcyQxIiwibW9kZXMkMCIsIm0kMTAiLCJlcyQyIiwiYm9keSQzIiwicF9zeW4iLCJkZWZfYmFzZSIsInR5X3BfYW5hIiwicF9hbmEiLCJwX2FuYV9jdHgiLCJkZWZfYmFzZTIiLCJhbmFfdHlfZm4iLCJ0eV9wIiwidHlfZm4yIiwidHlfZm4xIiwidHlfcHMiLCJ0eV9mbnMyIiwidHlfZm5zMSIsInR5cyQwIiwibSQxMSIsImRlZiQwIiwidHlfcF9hbmEkMCIsIm0kMTIiLCJwX2FuYV9jdHgkMCIsImRlZiQxIiwibSQxNSIsImRlZiQyIiwidHlfcF9hbmEkMSIsInBfYW5hJDEiLCJtJDEzIiwiYm9keSQ0IiwibSQxNCIsInBfYW5hJDAiLCJwJDMiLCJwJDQiLCJtJDE2IiwibSQxNyIsInAkNSIsImJvZHkkNSIsInR5cGF0IiwibSQxOCIsInR5X3ByZSIsInR5X3JlYyIsImN0eF9kZWYkMSIsImN0eF9ib2R5JDEiLCJjdHhfZGVmJDAiLCJ0eV9kZWYkMCIsInR5X2RlZiIsImN0eF9ib2R5JDAiLCJjdHhfYm9keSQyIiwibSQyMSIsImNvX2N0eCQwIiwidHlfZXNjYXBlIiwibSQyMiIsIm0kMTkiLCJtJDIwIiwiZm5fbW9kZSIsIm0kMjMiLCJmbiQwIiwibSQyNCIsImZuJDEiLCJ0eXBmbl9tb2RlIiwibSQyNSIsImZuJDIiLCJtJDI2IiwidHlfYm9keSQxIiwib3B0aW9uX25hbWUiLCJuYW1lJDIiLCJmbiQzIiwiZm5fbW9kZSQwIiwibSQyNyIsImZuJDQiLCJ0eV9vdXQkMCIsInR5X2luJDAiLCJudW1fYXJncyIsIm1vZGVzJDEiLCJtJDI4IiwiYXJncyQwIiwiYXJnX2NvX2N0eCIsImUwIiwiYnJhbmNoX2lkcyIsIm0kMjkiLCJjb25kIiwibSQzMCIsIm0kMzEiLCJhbHQiLCJtJDMyIiwibSQzMyIsIm0kMzQiLCJib2R5JDYiLCJjb25kJDAiLCJtJDM1IiwiY29uZCQxIiwibSQzNiIsImJvZHkkNyIsImJvZHkkOCIsIm0kMzciLCJib2R5JDkiLCJtJDM4IiwibSQzOSIsIm0kNDAiLCJtb2RlJDEiLCJpZHMkMSIsIm0kNDEiLCJtJDQyIiwidHlfaW4kMSIsInR5X291dCQxIiwibSQ0MyIsImUkMTQiLCJ0eV9vdXQkMiIsInR5X2luJDIiLCJtJDQ0IiwiZSQxNSIsInR5X291dCQzIiwibSQ0NSIsIm0kNDYiLCJzdHJpbmciLCJydWxlcyIsIm0kNDciLCJzY3J1dCQwIiwiZXMkMyIsImJyYW5jaF9pZHMkMCIsInBzJDAiLCJwX2N0eHMiLCJtJDQ4IiwiZXMkNCIsImVfdHlzIiwiZV9jb19jdHhzIiwibSQ0OSIsIm0kMiIsImlzX3N5bnN3aXRjaCIsInByZXZfc3luc3dpdGNoJDAiLCJ1bmtub3duIiwiY3R4X2ZvbGQiLCJjdHhfdHlwIiwiYW5uJDAiLCJ0eV9zdW0iLCJ2YXJpYW50X3RvX2luZm9fbWFwIiwidDFfbW9kZSIsImJvZHlfY3R4IiwiYm9keV9jdHgkMCIsInV0eSIsInV0eSQwIiwicGFyYW0kMCIsInBhcmFtX3R5IiwiZ2V0X2Vycm9yX2F0IiwiZXJyX2luZm8iLCJnZXRfcGF0X2Vycm9yX2F0IiwiY29sbGVjdF9lcnJvcnMiLCJiaW5kc192YXIiLCJkcCIsImRwJDAiLCJkX2xpc3QiLCJuZXdfbGlzdCIsImRwMiIsImRwMSIsImRwcyIsImRwJDEiLCJib3VuZF92YXJzIiwiZHBzJDAiLCJkcDEkMCIsImdyb3VuZF9jYXNlc19vZl9zZXhwIiwic2V4cF9vZl9ncm91bmRfY2FzZXMiLCJncm91bmRlZF9BcnJvdyIsImdyb3VuZGVkX0ZvcmFsbCIsImdyb3VuZGVkX1Byb2QiLCJncm91bmRlZF9TdW0iLCJncm91bmRlZF9MaXN0IiwiZ3JvdW5kX2Nhc2VzX29mIiwidHJhbnNpdGlvbiIsInJlY3Vyc2l2ZSIsInQxX2dyb3VuZGVkIiwidDJfZ3JvdW5kZWQiLCJpbm5lcl9jYXN0IiwiZDEkMSIsImlubmVyX2Nhc3QkMCIsInRyYW5zaXRpb25fbXVsdGlwbGUiLCJwYXR0ZXJuX2ZpeHVwIiwidW53cmFwX2Nhc3RzIiwicmV3cmFwX2Nhc3RzIiwiZXJyb3Jfc291cmNlXzA4MiIsInNob3dfY2FzZV9jbGF1c2VzXzAwNCIsInNob3dfZm5fYm9kaWVzXzAwNiIsInNob3dfZml4cG9pbnRzXzAwOCIsInNob3dfY2FzdHNfMDEwIiwic2hvd19sb29rdXBfc3RlcHNfMDEyIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfMDE0Iiwic3RlcHBlcl9oaXN0b3J5XzAxNiIsInNob3dfc2V0dGluZ3NfMDE4Iiwic2hvd19oaWRkZW5fc3RlcHNfMDIwIiwiZHVwbGljYXRlc18wMjIiLCJleHRyYV8wMjMiLCJmaWVsZF9zZXhwc18wMjYiLCJmaWVsZF9uYW1lXzAyNCIsImZpZWxkX3NleHBfMDI1JDkiLCJmaWVsZF9zZXhwXzAyNSIsImZpZWxkX3NleHBfMDI1JDAiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjUkMSIsImZpZWxkX3NleHBfMDI1JDIiLCJmaWVsZF9zZXhwXzAyNSQzIiwiZmllbGRfc2V4cF8wMjUkNCIsImZpZWxkX3NleHBfMDI1JDUiLCJmaWVsZF9zZXhwXzAyNSQ2IiwiZmllbGRfc2V4cF8wMjUkNyIsImZpZWxkX3NleHBfMDI1JDgiLCJzaG93X2hpZGRlbl9zdGVwc18wMjEiLCJzaG93X3NldHRpbmdzXzAxOSIsInN0ZXBwZXJfaGlzdG9yeV8wMTciLCJzaG93X3N0ZXBwZXJfZmlsdGVyc18wMTUiLCJzaG93X2xvb2t1cF9zdGVwc18wMTMiLCJzaG93X2Nhc3RzXzAxMSIsInNob3dfZml4cG9pbnRzXzAwOSIsInNob3dfZm5fYm9kaWVzXzAwNyIsInNob3dfY2FzZV9jbGF1c2VzXzAwNSIsInNob3dfaGlkZGVuX3N0ZXBzXzA1NyIsInNob3dfc2V0dGluZ3NfMDU1Iiwic3RlcHBlcl9oaXN0b3J5XzA1MyIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzA1MSIsInNob3dfbG9va3VwX3N0ZXBzXzA0OSIsInNob3dfY2FzdHNfMDQ3Iiwic2hvd19maXhwb2ludHNfMDQ1Iiwic2hvd19mbl9ib2RpZXNfMDQzIiwic2hvd19jYXNlX2NsYXVzZXNfMDQxIiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImJuZHNfMDQwJDMiLCJibmRzXzA0MCQ0IiwiYm5kc18wNDAkNSIsImJuZHNfMDQwJDYiLCJibmRzXzA0MCQ3Iiwic2hvd19jYXNlX2NsYXVzZXNfZmllbGQiLCJzaG93X2ZuX2JvZGllc19maWVsZCIsInNob3dfZml4cG9pbnRzX2ZpZWxkIiwic2hvd19jYXN0c19maWVsZCIsInNob3dfbG9va3VwX3N0ZXBzX2ZpZWxkIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfZmllbGQiLCJzdGVwcGVyX2hpc3RvcnlfZmllbGQiLCJzaG93X3NldHRpbmdzX2ZpZWxkIiwic2hvd19oaWRkZW5fc3RlcHNfZmllbGQiLCJzaG93X2hpZGRlbl9zdGVwc192YWx1ZSIsInNob3dfc2V0dGluZ3NfdmFsdWUiLCJzdGVwcGVyX2hpc3RvcnlfdmFsdWUiLCJzaG93X3N0ZXBwZXJfZmlsdGVyc192YWx1ZSIsInNob3dfbG9va3VwX3N0ZXBzX3ZhbHVlIiwic2hvd19jYXN0c192YWx1ZSIsInNob3dfZml4cG9pbnRzX3ZhbHVlIiwic2hvd19mbl9ib2RpZXNfdmFsdWUiLCJzaG93X2Nhc2VfY2xhdXNlc192YWx1ZSIsInZfc2hvd19oaWRkZW5fc3RlcHMiLCJ2X3Nob3dfc2V0dGluZ3MiLCJ2X3N0ZXBwZXJfaGlzdG9yeSIsInZfc2hvd19zdGVwcGVyX2ZpbHRlcnMiLCJ2X3Nob3dfbG9va3VwX3N0ZXBzIiwidl9zaG93X2Nhc3RzIiwidl9zaG93X2ZpeHBvaW50cyIsInZfc2hvd19mbl9ib2RpZXMiLCJ2X3Nob3dfY2FzZV9jbGF1c2VzIiwic2V4cF8wNjAiLCJmaWVsZF9zZXhwc18wNjEiLCJzdGF0aWNzXzA2MiIsImVsYWJvcmF0ZV8wNjQiLCJhc3Npc3RfMDY2IiwiZHluYW1pY3NfMDY4IiwiZXZhbHVhdGlvbl8wNzAiLCJkdXBsaWNhdGVzXzA3MiIsImV4dHJhXzA3MyIsIml0ZXJfMDgzIiwic2V4cF8wNjAkMCIsImZpZWxkX3NleHBzXzA3NiIsImZpZWxkX25hbWVfMDc0IiwidGFpbF8wODQiLCJmaWVsZF9zZXhwXzA3NSQ1IiwiZmllbGRfc2V4cF8wNzUiLCJ4XzA4NSIsImZpZWxkX3NleHBfMDc1JDAiLCJmdmFsdWVfMDgxIiwiZmllbGRfc2V4cF8wNzUkMSIsImZ2YWx1ZV8wNzciLCJmaWVsZF9zZXhwXzA3NSQyIiwiZmllbGRfc2V4cF8wNzUkMyIsImZ2YWx1ZV8wNzgiLCJmaWVsZF9zZXhwXzA3NSQ0IiwiZXZhbHVhdGlvbl8wNzEiLCJkeW5hbWljc18wNjkiLCJhc3Npc3RfMDY3IiwiZWxhYm9yYXRlXzA2NSIsInN0YXRpY3NfMDYzIiwiZXZhbHVhdGlvbl8wOTUiLCJkeW5hbWljc18wOTMiLCJhc3Npc3RfMDkxIiwiZWxhYm9yYXRlXzA4OSIsInN0YXRpY3NfMDg3IiwiYXJnXzA5NiIsImJuZHNfMDg2IiwiYXJnXzA5NCIsImJuZHNfMDg2JDAiLCJhcmdfMDkyIiwiYm5kc18wODYkMSIsImFyZ18wOTAiLCJibmRzXzA4NiQyIiwiYm5kc18wODYkMyIsInN0YXRpY3NfZmllbGQiLCJlbGFib3JhdGVfZmllbGQiLCJhc3Npc3RfZmllbGQiLCJkeW5hbWljc19maWVsZCIsImV2YWx1YXRpb25fZmllbGQiLCJldmFsdWF0aW9uX3ZhbHVlIiwiZHluYW1pY3NfdmFsdWUiLCJhc3Npc3RfdmFsdWUiLCJlbGFib3JhdGVfdmFsdWUiLCJzdGF0aWNzX3ZhbHVlIiwidl9ldmFsdWF0aW9uIiwidl9keW5hbWljcyIsInZfYXNzaXN0Iiwidl9lbGFib3JhdGUiLCJ2X3N0YXRpY3MiLCJvZmYiLCJvbiIsImVycm9yX3NvdXJjZV8zMDMiLCJfODYiLCJfODUiLCJfODQiLCJfODMiLCJfODIiLCJfODEiLCJfODAiLCJfNzkiLCJfNzgiLCJfNzciLCJfNzYiLCJfNzUiLCJfNzQiLCJfNzMiLCJfNzIiLCJfNzEiLCJfNzAiLCJfNjkiLCJfNjgiLCJfNjciLCJfNjYiLCJfNjUiLCJfNjQiLCJfNjMiLCJfNjIiLCJfNjEiLCJfNjAiLCJfNTkiLCJfNTgiLCJfNTciLCJfNTYiLCJfNTUiLCJhMiQ5IiwiYTIkMTAiLCJhMSQxOSIsImExJDIwIiwiYTEkMjEiLCJhMSQyMiIsImExJDIzIiwiYTEkMjQiLCJhMiQxMSIsImExJDI1IiwiYTIkMTIiLCJhMSQyNiIsImExJDI3IiwiYTEkMjgiLCJhMyQwIiwiYTIkMTMiLCJhMSQyOSIsImFpZHMiLCJhdGVybSIsInNleHBfYXJnc18xMjgiLCJhcmcyXzEzMSIsImFyZzFfMTMwIiwiYXJnMF8xMjkiLCJyZXMwXzEzMiIsInJlczFfMTMzIiwicmVzMl8xMzQiLCJzZXhwX2FyZ3NfMjY1IiwiYXJnMV8yNzIiLCJhcmcwXzI3MSIsInJlczBfMjczIiwiYXJnMV8yNjciLCJhcmcwXzI2NiIsInJlczBfMjY4IiwicmVzMV8yNjkiLCJyZXMxXzI3NCIsInJlczBfMjA4IiwiYXJnMV8yMDIiLCJyZXMwXzIwMyIsInJlczFfMjA0IiwicmVzMV8yMDkiLCJzZXhwX2FyZ3NfMDIxIiwicmVzMV8wMjUiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzEiLCJhcmcxXzE3OCIsImFyZzBfMTc3IiwicmVzMF8xNzkiLCJhcmcxXzE3MyIsImFyZzBfMTcyIiwicmVzMF8xNzQiLCJyZXMxXzE3NSIsInJlczFfMTgwIiwic2V4cF9hcmdzXzA3MyIsImFyZzFfMDc1IiwicmVzMV8wNzciLCJzZXhwX2FyZ3NfMTQ2IiwiYXJnMV8xNDgiLCJhcmcwXzE0NyIsInJlczBfMTQ5IiwicmVzMV8xNTAiLCJzZXhwX2FyZ3NfMTM3IiwiYXJnMl8xNDAiLCJhcmcxXzEzOSIsImFyZzBfMTM4IiwicmVzMF8xNDEiLCJyZXMxXzE0MiIsInJlczJfMTQzIiwiYXJnMl8wMzgiLCJhcmcxXzAzNyIsInJlczJfMDQxIiwic2V4cF9hcmdzXzA0NCIsInNleHBfYXJnc18xODgiLCJhcmcxXzE5NSIsImFyZzBfMTk0IiwicmVzMF8xOTYiLCJhcmcxXzE5MCIsImFyZzBfMTg5IiwicmVzMV8xOTIiLCJyZXMxXzE5NyIsImFyZzNfMjk2IiwicmVzMF8yOTciLCJyZXMxXzI5OCIsInJlczJfMjk5IiwiYXJnMV8yODkiLCJhcmcwXzI4OCIsInNleHBfMjgyIiwicmVzMF8yOTAiLCJzZXhwXzI4NyIsImFyZzFfMjg0IiwiYXJnMF8yODMiLCJyZXMwXzI4NSIsInJlczFfMjg2IiwicmVzMV8yOTEiLCJyZXMzXzMwMCIsImFyZzFfMTAwIiwicmVzMF8xMDEiLCJyZXMxXzEwMiIsImFyZzJfMTEzIiwiYXJnMV8xMTIiLCJyZXMxXzExNSIsImFyZzFfMTA3IiwicmVzMF8xMDgiLCJyZXMxXzEwOSIsInJlczJfMTE2Iiwic2V4cF9hcmdzXzI1OCIsImFyZzFfMjYwIiwiYXJnMF8yNTkiLCJyZXMwXzI2MSIsInJlczFfMjYyIiwic2V4cF9hcmdzXzI0OSIsImFyZzJfMjUyIiwiYXJnMV8yNTEiLCJhcmcwXzI1MCIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMyXzI1NSIsImFyZzJfMDY3IiwiYXJnMV8wNjYiLCJyZXMxXzA2OSIsInJlczJfMDcwIiwic2V4cF9hcmdzXzA1MyIsImFyZzNfMDU3IiwiYXJnMl8wNTYiLCJyZXMyXzA2MCIsInJlczNfMDYxIiwic2V4cF9hcmdzXzExOSIsImFyZzJfMTIyIiwiYXJnMV8xMjEiLCJhcmcwXzEyMCIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJyZXMyXzEyNSIsImFyZzJfMDgzIiwiYXJnMV8wODIiLCJyZXMxXzA4NSIsInJlczJfMDg2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzJfMDkyIiwiYXJnMV8wOTEiLCJyZXMxXzA5NCIsInJlczJfMDk1Iiwic2V4cF9hcmdzXzE1MyIsImFyZzJfMTU2IiwiYXJnMV8xNTUiLCJhcmcwXzE1NCIsInJlczBfMTU3IiwicmVzMV8xNTgiLCJyZXMyXzE1OSIsInNleHBfYXJnc18xNjIiLCJhcmcyXzE2NSIsImFyZzFfMTY0IiwiYXJnMF8xNjMiLCJyZXMwXzE2NiIsInJlczFfMTY3IiwicmVzMl8xNjgiLCJhcmcyXzI0MyIsImFyZzFfMjQyIiwicmVzMV8yNDUiLCJyZXMyXzI0NiIsInNleHBfYXJnc18yMTIiLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImFyZzFfMjIxIiwicmVzMF8yMjIiLCJyZXMxXzIyMyIsInNleHBfMzA2IiwiZmllbGRfc2V4cHNfMzA1IiwidGVybV8zMDgiLCJpZHNfMzEwIiwiZHVwbGljYXRlc18zMTIiLCJleHRyYV8zMTMiLCJpdGVyXzMxOSIsInNleHBfMzA2JDAiLCJmaWVsZF9zZXhwc18zMTYiLCJmaWVsZF9uYW1lXzMxNCIsInRhaWxfMzIwIiwiZmllbGRfc2V4cF8zMTUkMiIsImZpZWxkX3NleHBfMzE1IiwieF8zMjEiLCJmaWVsZF9zZXhwXzMxNSQwIiwiZnZhbHVlXzMxOCIsImZpZWxkX3NleHBfMzE1JDEiLCJmdmFsdWVfMzE3IiwiaWRzXzMxMSIsInRlcm1fMzA5IiwiYXJnMV8zMjMiLCJhcmcwXzMyMiIsInJlczFfMzI1IiwiYXJnMV8zMjciLCJhcmcwXzMyNiIsInJlczFfMzI5IiwiYXJnMV8zMzEiLCJhcmcwXzMzMCIsInJlczBfMzMyIiwicmVzMV8zMzMiLCJhcmcxXzMzNSIsImFyZzBfMzM0IiwicmVzMF8zMzYiLCJyZXMxXzMzNyIsImFyZzJfMzQwIiwiYXJnMV8zMzkiLCJhcmcwXzMzOCIsInJlczBfMzQxIiwicmVzMV8zNDIiLCJyZXMyXzM0MyIsImFyZzJfMzQ2IiwiYXJnMV8zNDUiLCJhcmcwXzM0NCIsInJlczBfMzQ3IiwicmVzMV8zNDgiLCJyZXMyXzM0OSIsImFyZzNfMzUzIiwiYXJnMl8zNTIiLCJhcmcxXzM1MSIsImFyZzBfMzUwIiwicmVzMF8zNTQiLCJyZXMxXzM1NSIsInJlczJfMzU2IiwicmVzM18zNTciLCJhcmcyXzM2MCIsImFyZzFfMzU5IiwiYXJnMF8zNTgiLCJyZXMwXzM2MSIsInJlczFfMzYyIiwicmVzMl8zNjMiLCJhcmcxXzM2NSIsImFyZzBfMzY0IiwicmVzMF8zNjYiLCJyZXMxXzM2NyIsImFyZzJfMzcwIiwiYXJnMV8zNjkiLCJhcmcwXzM2OCIsInJlczBfMzcxIiwicmVzMV8zNzIiLCJyZXMyXzM3MyIsImFyZzJfMzc2IiwiYXJnMV8zNzUiLCJhcmcwXzM3NCIsInJlczJfMzc5IiwiYXJnMV8zODEiLCJhcmcwXzM4MCIsImFyZzJfMzkwIiwiYXJnMV8zODkiLCJhcmcwXzM4OCIsInJlczBfMzkxIiwicmVzMV8zOTIiLCJhcmcxXzM4NSIsImFyZzBfMzg0IiwicmVzMV8zODciLCJyZXMyXzM5MyIsImFyZzJfMzk2IiwiYXJnMV8zOTUiLCJhcmcwXzM5NCIsInJlczJfMzk5IiwiYXJnMl80MDIiLCJhcmcxXzQwMSIsImFyZzBfNDAwIiwicmVzMl80MDUiLCJhcmcyXzQwOCIsImFyZzFfNDA3IiwiYXJnMF80MDYiLCJyZXMwXzQwOSIsInJlczFfNDEwIiwicmVzMl80MTEiLCJhcmcxXzQxMyIsImFyZzBfNDEyIiwicmVzMF80MTQiLCJyZXMxXzQxNSIsImFyZzJfNDE4IiwiYXJnMV80MTciLCJhcmcwXzQxNiIsInJlczBfNDE5IiwicmVzMV80MjAiLCJyZXMyXzQyMSIsImFyZzJfNDI0IiwiYXJnMV80MjMiLCJhcmcwXzQyMiIsInJlczFfNDI2IiwicmVzMl80MjciLCJhcmcxXzQzMyIsImFyZzBfNDMyIiwicmVzMF80MzQiLCJhcmcxXzQyOSIsImFyZzBfNDI4IiwicmVzMF80MzAiLCJyZXMxXzQzMSIsInJlczFfNDM1IiwiYXJnMF80MzYiLCJyZXMwXzQzNyIsImFyZzFfNDQzIiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJyZXMxXzQ0NSIsImFyZzFfNDUxIiwiYXJnMF80NTAiLCJyZXMwXzQ1MiIsImFyZzFfNDQ3IiwiYXJnMF80NDYiLCJyZXMwXzQ0OCIsInJlczFfNDQ5IiwicmVzMV80NTMiLCJhcmcxXzQ1NSIsImFyZzBfNDU0IiwicmVzMF80NTYiLCJyZXMxXzQ1NyIsImFyZzFfNDU5IiwicmVzMF80NjAiLCJyZXMxXzQ2MSIsImFyZzFfNDYzIiwiYXJnMF80NjIiLCJyZXMxXzQ2NSIsImFyZzFfNDY3IiwiYXJnMF80NjYiLCJyZXMwXzQ2OCIsInJlczFfNDY5IiwiYXJnMl80NzIiLCJhcmcxXzQ3MSIsImFyZzBfNDcwIiwicmVzMF80NzMiLCJyZXMxXzQ3NCIsInJlczJfNDc1IiwiYXJnMl80NzgiLCJhcmcxXzQ3NyIsImFyZzBfNDc2IiwicmVzMV80ODAiLCJyZXMyXzQ4MSIsImFyZzFfNDgzIiwiYXJnMF80ODIiLCJyZXMwXzQ4NCIsInJlczFfNDg1IiwiYXJnMV80OTEiLCJyZXMwXzQ5MiIsImFyZzFfNDg3IiwiYXJnMF80ODYiLCJyZXMwXzQ4OCIsInJlczFfNDg5IiwicmVzMV80OTMiLCJhcmczXzUwOSIsImFyZzJfNTA4IiwiYXJnMV81MDciLCJhcmcwXzUwNiIsInJlczBfNTEwIiwicmVzMV81MTEiLCJyZXMyXzUxMiIsImFyZzFfNTAzIiwiYXJnMF81MDIiLCJhcmcxXzQ5NSIsImFyZzBfNDk0IiwicmVzMV80OTciLCJyZXMwXzUwNCIsImFyZzFfNDk5IiwiYXJnMF80OTgiLCJyZXMwXzUwMCIsInJlczFfNTAxIiwicmVzMV81MDUiLCJyZXMzXzUxMyIsImlkc181MTciLCJ0ZXJtXzUxNSIsImFyZ181MTgiLCJibmRzXzUxNCIsImFyZ181MTYiLCJibmRzXzUxNCQwIiwidjEkNTMiLCJ2MSQ1NCIsInYxJDQ5IiwidjEkNTAiLCJ2MSQ1MSIsInYxJDUyIiwidjEkNDciLCJ2MSQ0OCIsInYxJDQ1IiwidjEkNDYiLCJ2MSQ0MyIsInYxJDQ0IiwidjEkNDEiLCJ2MSQ0MiIsInYzJDEiLCJ2MSQzOSIsInYxJDQwIiwidjMkMiIsInYyJDI3IiwidjEkNjkiLCJ2MCQ3MSIsInYwJDcyIiwidjEkNzAiLCJ2MiQyOCIsInYyJDI1IiwidjEkNjciLCJ2MCQ2OSIsInYwJDcwIiwidjEkNjgiLCJ2MiQyNiIsInYyJDIzIiwidjEkNjUiLCJ2MCQ2NyIsInYwJDY4IiwidjEkNjYiLCJ2MiQyNCIsInYyJDIxIiwidjEkNjMiLCJ2MSQ2NCIsInYyJDIyIiwidjIkMTkiLCJ2MSQ2MSIsInYxJDYyIiwidjIkMjAiLCJ2MSQ1OSIsInYxJDYwIiwidjEkNTciLCJ2MSQ1OCIsInYxJDU1IiwidjEkNTYiLCJjb21wb3NlIiwiZmx0IiwiY3R4JDMiLCJkMiQxIiwiY3R4JDQiLCJjdHgkNSIsImQkMyIsImN0eCQ2IiwiZCQ0IiwiY3R4JDciLCJ2JDAiLCJkJDUiLCJjdHgkOCIsImQkNiIsImQyJDIiLCJjdHgkOSIsImRpciIsImQxJDIiLCJjdHgkMTAiLCJkMSQzIiwiZGlyJDAiLCJkMiQzIiwiZDJzIiwiY3R4JDExIiwiZDEkNCIsInJkIiwibGQiLCJjdHgkMTIiLCJkMSQ1IiwiZDIkNCIsImQyJDUiLCJjdHgkMTMiLCJkJDciLCJkMyQwIiwiY3R4JDE0IiwiZDEkNiIsImQkOCIsImN0eCQxNSIsImQyJDYiLCJkMSQ3IiwiZCQ5IiwiY3R4JDE2IiwiZDEkOCIsImQyJDciLCJjdHgkMTciLCJkMSQ5IiwiY3R4JDE4IiwiZDEkMTAiLCJkMiQ4IiwicmQkMCIsImxkJDAiLCJjdHgkMTkiLCJkJDEwIiwiY3R4JDIwIiwiZDEkMTEiLCJyZCQxIiwibGQkMSIsImN0eCQyMSIsImQkMTEiLCJyZCQyIiwibGQkMiIsImN0eCQyMiIsImQkMTIiLCJkMiQ5IiwiY3R4JDIzIiwiZDEkMTIiLCJjdHgkMjQiLCJkMSQxMyIsImQyJDEwIiwiZDIkMTEiLCJjdHgkMjUiLCJkMSQxNCIsImN0eCQyNiIsImQxJDE1IiwiZDIkMTIiLCJjdHgkMjciLCJkJDEzIiwiY3R4JDI4IiwiZCQxNCIsImN0eCQyOSIsImQkMTUiLCJjdHgkMzAiLCJkJDE2IiwicnIiLCJsciIsImN0eCQzMSIsInNjciIsImQkMTciLCJmaXh1cF9jYXN0IiwidW5ib3giLCJyZXF1ZXN0IiwiZXhwciIsImV4cHIkMCIsImN0MSIsImN0MiIsInQycyIsInQxcyIsIm5hbWUxIiwibmFtZTIiLCJuYW1lMSQwIiwibmFtZTIkMCIsImV4cHIkMSIsImNvbWJpbmVfcmVzdWx0IiwibWF0Y2hlcyIsImIkMCIsIm1feCIsIm1feHMiLCJkcCQyIiwicHBfaW5zdGFuY2VfcmVwb3J0Iiwic2hvd19pbnN0YW5jZV9yZXBvcnQiLCJpbnN0YW5jZV9yZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaW5zdGFuY2VfcmVwb3J0IiwiaW5zdGFuY2VfcmVwb3J0X29mX3lvanNvbiIsInlvanNvbl9vZl9pbnN0YW5jZV9yZXBvcnQiLCJqb2ludF9zdGF0dXMiLCJyZXBvcnRzIiwicHBfcmVwb3J0Iiwic2hvd19yZXBvcnQiLCJyZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfcmVwb3J0IiwiYXJnMV8wMjAiLCJyZXMxXzAyMiIsInJlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVwb3J0IiwibG9va3VwX2FuZF9qb2luIiwidGVzdF9tYXAiLCJyZXBvcnQiLCJjb3VudF9zdGF0dXMiLCJpbnN0YW5jZXMiLCJwcF9zdGVwX2tpbmQiLCJzaG93X3N0ZXBfa2luZCIsInN0ZXBfa2luZF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwX2tpbmQiLCJzdGVwX2tpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBfa2luZCIsImV2YWx1YXRlX2V4dGVuZF9lbnYiLCJuZXdfYmluZGluZ3MiLCJ0b19leHRlbmQiLCJsZXRfdW5ib3giLCJzdGF0ZV91cGRhdGUiLCJsZXRfbWF0Y2giLCJtYXRjaF9yZXN1bHQiLCJyZXEiLCJzdGF0ZSIsIndyYXBfY3R4IiwiZHMkMCIsImJpbmRpbmciLCJzdWJzdGl0dXRpb25zIiwiZDJfaXNfdmFsdWUiLCJkNHMiLCJuX2FyZ3MiLCJkZWZlcnJlZCIsImRlZmVycmVkJDEiLCJkZWZlcnJlZCQwIiwibmV3X2FyZ3MiLCJpZGVudCIsImJ1aWx0aW4iLCJkMyQxIiwidGF1IiwidGZib2R5IiwiZHMkMSIsImlzX3ZhbHVlIiwiZHMxIiwiZHMyIiwiZDEkMTYiLCJkMSQxNyIsIm5leHRfcnVsZSIsInNob3VsZF9oaWRlX3N0ZXAiLCJzZXR0aW5ncyIsImNvbWJpbmUiLCJiMiQwIiwicmVxX3ZhbHVlIiwidmMiLCJyZXFfYWxsX3ZhbHVlIiwicmVxX2ZpbmFsIiwicmVxX2FsbF9maW5hbCIsInJlcV9maW5hbF9vcl92YWx1ZSIsIm90aGVyd2lzZSIsInJ1bGUiLCJ1cGRhdGVfdGVzdCIsImNoZWNrX3ZhbHVlIiwiY2hlY2tfdmFsdWVfbW9kX2N0eCIsImVycm9yX3NvdXJjZV8wNTQiLCJlcnJvcl9zb3VyY2VfMDgwIiwiZXJyb3Jfc291cmNlXzEwNSIsImVycm9yX3NvdXJjZV8xNzkiLCJwcF9waWVjZV9nb2FsIiwic2hvd19waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGllY2VfZ29hbCIsIm9mX3BpZWNlX2dvYWwiLCJwcF9nb2FsIiwic2hvd19nb2FsIiwiZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9nb2FsIiwiYXJnMV8wMjQiLCJnb2FsX29mX3lvanNvbiIsInlvanNvbl9vZl9nb2FsIiwicHBfbW92ZSIsInNob3dfbW92ZSIsIm1vdmVfb2Zfc2V4cCIsInNleHBfMDMxIiwidGFnXzAzMiIsInNleHBfYXJnc18wMzgiLCJzZXhwX2FyZ3NfMDQzIiwic2V4cF9hcmdzXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJzZXhwX29mX21vdmUiLCJtb3ZlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZlIiwicHBfanVtcF90YXJnZXQiLCJzaG93X2p1bXBfdGFyZ2V0IiwianVtcF90YXJnZXRfb2Zfc2V4cCIsInNleHBfMDU2IiwidGFnXzA1NyIsInNleHBfYXJnc18wNTgiLCJhcmcwXzA1OSIsInJlczBfMDYwIiwic2V4cF9vZl9qdW1wX3RhcmdldCIsImp1bXBfdGFyZ2V0X29mX3lvanNvbiIsInlvanNvbl9vZl9qdW1wX3RhcmdldCIsInBwX3JlbCIsInNob3dfcmVsIiwicmVsX29mX3NleHAiLCJzZXhwXzA2NyIsInRhZ18wNjgiLCJhcmcxXzA3MSIsInJlczFfMDczIiwic2V4cF9vZl9yZWwiLCJyZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX3JlbCIsInBwX3NlbGVjdCIsInNob3dfc2VsZWN0Iiwic2VsZWN0X29mX3NleHAiLCJzZXhwXzA4MiIsInRhZ18wODMiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMF8wOTUiLCJzZXhwX29mX3NlbGVjdCIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJzZWxlY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdCIsInNleHBfMTA3IiwidGFnXzEwOCIsInNleHBfYXJnc18xMjQiLCJhcmcwXzEyNSIsInJlczBfMTI2Iiwic2V4cF9hcmdzXzE1NCIsImFyZzBfMTU1IiwicmVzMF8xNTYiLCJzZXhwX2FyZ3NfMTI5Iiwic2V4cF9hcmdzXzEzNCIsImFyZzBfMTM1IiwicmVzMF8xMzYiLCJzZXhwX2FyZ3NfMTM5IiwiYXJnMF8xNDAiLCJyZXMwXzEyMSIsInNleHBfYXJnc18xMDkiLCJzZXhwX2FyZ3NfMTQ0IiwiYXJnMF8xNDUiLCJyZXMwXzE0NiIsInNleHBfYXJnc18xMTQiLCJzZXhwX2FyZ3NfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzBfMTU3IiwicmVzMF8xNTgiLCJhcmcwXzE1OSIsInJlczBfMTYwIiwiYXJnMF8xNjEiLCJyZXMwXzE2MiIsInJlczBfMTY0IiwiYXJnMF8xNjciLCJhcmcwXzE2OSIsInJlczBfMTcwIiwiYXJnMF8xNzEiLCJyZXMwXzE3MiIsImFyZzBfMTczIiwiYXJnMF8xNzUiLCJyZXMwXzE3NiIsImlzX2VkaXQiLCJpc19leHBhbmRlcl90b2siLCJ0cmltX2xhc3QiLCJpc19leHBhbmRlciIsIm1hcmsiLCJjb21wbGV0aW9uIiwiZXJyb3Jfc291cmNlXzAzMiIsImVycm9yX3NvdXJjZV8wNDMiLCJlcnJvcl9zb3VyY2VfMDYxIiwiZXJyb3Jfc291cmNlXzEwOSIsInBwX3N0cmF0ZWd5X2FsbCIsInNob3dfc3RyYXRlZ3lfYWxsIiwic3RyYXRlZ3lfYWxsX29mX3NleHAiLCJzZXhwX29mX3N0cmF0ZWd5X2FsbCIsInN0cmF0ZWd5X2FsbF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfYWxsIiwicHBfc3RyYXRlZ3lfY29tbW9uIiwic2hvd19zdHJhdGVneV9jb21tb24iLCJzdHJhdGVneV9jb21tb25fb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfY29tbW9uIiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInN0cmF0ZWd5X2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfY29tbW9uIiwicHBfc3RyYXRlZ3lfZXhwIiwic2hvd19zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2Zfc2V4cCIsInNleHBfMDM0IiwidGFnXzAzNSIsInNleHBfYXJnc18wMzYiLCJzZXhwX29mX3N0cmF0ZWd5X2V4cCIsInN0cmF0ZWd5X2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfZXhwIiwicHBfc3RyYXRlZ3lfcGF0Iiwic2hvd19zdHJhdGVneV9wYXQiLCJzdHJhdGVneV9wYXRfb2Zfc2V4cCIsInNleHBfMDQ1IiwidGFnXzA0NiIsInNleHBfb2Zfc3RyYXRlZ3lfcGF0IiwiYXJnMF8wNTUiLCJhcmcwXzA1NyIsInN0cmF0ZWd5X3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfcGF0IiwicHBfc3RyYXRlZ3lfdHlwIiwic2hvd19zdHJhdGVneV90eXAiLCJzdHJhdGVneV90eXBfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfdHlwIiwic3RyYXRlZ3lfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV90eXAiLCJwcF9zdHJhdGVneSIsInNob3dfc3RyYXRlZ3kiLCJzdHJhdGVneV9vZl9zZXhwIiwic2V4cF9vZl9zdHJhdGVneSIsImFyZzBfMDkzIiwicmVzMF8wOTQiLCJzdHJhdGVneV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3kiLCJzZXhwXzA5NiIsImZpZWxkX3NleHBzXzA5NyIsImNvbnRlbnRfMDk4Iiwic3RyYXRlZ3lfMTAwIiwiZHVwbGljYXRlc18xMDIiLCJleHRyYV8xMDMiLCJpdGVyXzExMCIsInNleHBfMDk2JDAiLCJmaWVsZF9zZXhwc18xMDYiLCJmaWVsZF9uYW1lXzEwNCIsInRhaWxfMTExIiwiZmllbGRfc2V4cF8xMDUkMiIsImZpZWxkX3NleHBfMTA1IiwieF8xMTIiLCJmaWVsZF9zZXhwXzEwNSQwIiwiZnZhbHVlXzEwNyIsImZpZWxkX3NleHBfMTA1JDEiLCJmdmFsdWVfMTA4Iiwic3RyYXRlZ3lfMTAxIiwiY29udGVudF8wOTkiLCJzdHJhdGVneV8xMTYiLCJjb250ZW50XzExNCIsImFyZ18xMTciLCJibmRzXzExMyIsImFyZ18xMTUiLCJibmRzXzExMyQwIiwic3RyYXRlZ3lfZmllbGQiLCJzdHJhdGVneV92YWx1ZSIsInZfc3RyYXRlZ3kiLCJleHBhbmRlciIsImpvaW50X3VzZV90eXAiLCJib3VuZF92YXJpYWJsZXMiLCJ0eV9leHBlY3QiLCJib3VuZF9jb25zdHJ1Y3RvcnMiLCJib3VuZF9hcHMiLCJ0eV9hcnIiLCJib3VuZF9jb25zdHJ1Y3Rvcl9hcHMiLCJ0eXBfY29udGV4dF9lbnRyaWVzIiwic3VnZ2VzdF92YXJpYWJsZSIsInN1Z2dlc3RfbG9va2FoZWFkX3ZhcmlhYmxlIiwicmVzdHJhdGVnaXplIiwic3VmZml4Iiwic3RyYXRlZ3kiLCJleHBfcmVmcyIsImV4cF9hcHMiLCJjb21tYXMiLCJwYXRfcmVmcyIsInBhdF9hcHMiLCJjb21tYXMkMCIsImxlYWRpbmdfZXhwYW5kZXIiLCJ1bmsiLCJvZl9jb25zdF9tb25vX2RlbGltIiwib2ZfbGVhZGluZ19kZWxpbSIsIm9mX2luZml4X2RlbGltIiwiZmlsdGVyX2J5Iiwic2VsZl90eXMiLCJkZWxpbSIsInNlbGZfdHkiLCJkZWxheWVkX2xlYWRpbmciLCJkZWxhdGVkX2xlYWRpbmdfZXhwIiwiZGVsYXRlZF9sZWFkaW5nX3BhdCIsImRlbGF0ZWRfbGVhZGluZ190eXAiLCJkZWxheWVkX2xlYWRpbmckMCIsImluZml4IiwiaW5maXhfZXhwIiwiaW5maXhfcGF0IiwiaW5maXhfdHlwIiwiaW5maXgkMCIsImNvbnN0X21vbm8iLCJjb25zdF9tb25vX2V4cCIsImNvbnN0X21vbm9fcGF0IiwiY29uc3RfbW9ub190eXAiLCJjb25zdF9tb25vJDAiLCJzdWdnZXN0X2Zvcm0iLCJ0eV9tYXAiLCJkZWxpbXNfb2Zfc29ydCIsImZpbHRlcmVkIiwic3VnZ2VzdF9vcGVyYXRvciIsInN1Z2dlc3Rfb3BlcmFuZCIsInN1Z2dlc3RfbGVhZGluZyIsImVycm9yX3NvdXJjZV8wMTMiLCJob2xlX3NvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaG9sZV9zb3J0IiwiYXJnMl8wMDgiLCJhcmcxXzAwNyIsImFyZzBfMDA2IiwicmVzMV8wMTAiLCJyZXMyXzAxMSIsImFkZF9hbGwiLCJ0b2tlbnMiLCJwcF90aWxlcyIsInNob3dfdGlsZXMiLCJ0aWxlc19vZl9zZXhwIiwic2V4cF9vZl90aWxlcyIsInRpbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl90aWxlcyIsInNpbmdsZSIsInBwX3Vuc29ydGVkIiwic2hvd191bnNvcnRlZCIsInVuc29ydGVkX29mX3NleHAiLCJzZXhwXzAxOSIsInRhZ18wMjAiLCJhcmcxXzAzNSIsInJlczFfMDM3IiwiYXJnMl8wNDMiLCJyZXMxXzA0NSIsInJlczJfMDQ2Iiwic2V4cF9vZl91bnNvcnRlZCIsImFyZzBfMDQ3IiwiYXJnMV8wNTQiLCJyZXMxXzA1NiIsImFyZzJfMDU5IiwiYXJnMV8wNTgiLCJyZXMxXzA2MSIsInJlczJfMDYyIiwidW5zb3J0ZWRfb2ZfeW9qc29uIiwieW9qc29uX29mX3Vuc29ydGVkIiwiaXNfbmFyeSIsImlzX3NvcnQiLCJpc190dXBsZV9leHAiLCJpc190dXBsZV9wYXQiLCJpc190dXBsZV90eXAiLCJpc190eXBfYnN1bSIsImlzX3J1bGVzIiwiY2xhdXNlcyIsImNsYXVzZSIsImlkc19vZl90aWxlcyIsImtpZHNfb2ZfdGlsZSIsImtpZHNfb2ZfdGlsZXMiLCJraWRzX29mX3Vuc29ydGVkIiwidGlsZXMkMCIsInRpbGVzJDEiLCJ0aWxlcyQyIiwicmV0dXJuJDAiLCJwYXJzZV9zdW1fdGVybSIsImlkc19jdHIiLCJnb19zIiwiZXhwX3Rlcm0iLCJwYXRfdGVybSIsInR5cF90ZXJtIiwidHBhdF90ZXJtIiwicnVsIiwidW5zb3J0ZWQiLCJpbm5lcl9pZHMiLCJyZXQiLCJ0cGF0JDAiLCJjb25zZXEiLCJmaWx0ZXIkMSIsImZpbHRlciQyIiwidCQyIiwidXNlX2RlZmVycmFsIiwiYmV0d2Vlbl9raWRzIiwidCQzIiwicmV0JDAiLCJyZXQkMSIsImhvbGUkMSIsImJldHdlZW5fa2lkcyQwIiwicmV0JDIiLCJob2xlJDIiLCJsYXN0X2NsYXVzZSIsImxlYWRpbmdfY2xhdXNlcyIsInRpbGVfa2lkcyIsInBfciIsInBfbCIsImZyb21femlwIiwiZnJvbV96aXBfZm9yX3ZpZXciLCJmcm9tX3ppcF9mb3Jfc2VtIiwiZXJyb3Jfc291cmNlXzAzMCIsInVuc2VsZWN0ZWQiLCJ0ZXJtcyIsInZpZXdfdGVybSIsIm1vZHVsZV9vZl90IiwiY29sX3RhcmdldCIsIm5leHQiLCJlZmZlY3RzIiwibWVhc3VyZWQkMCIsImNvbF90YXJnZXQkMCIsInRlcm1zJDAiLCJ2aWV3X3Rlcm0kMCIsInppcHBlcl8wMDQiLCJtZXRhXzAwNiIsIm1ldGFfMDA3IiwiemlwcGVyXzAwNSIsIm1ldGFfMDIyIiwiemlwcGVyXzAyMCIsInppcHBlcl9maWVsZCIsIm1ldGFfZmllbGQiLCJtZXRhX3ZhbHVlIiwiemlwcGVyX3ZhbHVlIiwidl9tZXRhIiwidl96aXBwZXIiLCJpbml0JDAiLCJuZXh0JDAiLCJwcF9hZmZpeCIsInNob3dfYWZmaXgiLCJhZmZpeF9vZl9zZXhwIiwieF8wMzEiLCJzZXhwXzAyOSIsInJlczFfMDI4Iiwic2V4cF9vZl9hZmZpeCIsImFmZml4X29mX3lvanNvbiIsInlvanNvbl9vZl9hZmZpeCIsInNleHBfMDQyIiwiYXJnMV8wMzkiLCJyZXMxXzA0MSIsImFyZzFfMDQ1IiwicmVzMV8wNDciLCJzZXhwXzA0OSIsImZpZWxkX3NleHBzXzA1MCIsInN0YXRlXzA1MSIsImhpc3RvcnlfMDUzIiwicmVhZF9vbmx5XzA1NSIsImR1cGxpY2F0ZXNfMDU3IiwiZXh0cmFfMDU4IiwiaXRlcl8wNjYiLCJzZXhwXzA0OSQwIiwiZmllbGRfbmFtZV8wNTkiLCJ0YWlsXzA2NyIsImZpZWxkX3NleHBfMDYwJDMiLCJmaWVsZF9zZXhwXzA2MCIsInhfMDY4IiwiZmllbGRfc2V4cF8wNjAkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA2MCQxIiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDYwJDIiLCJmdmFsdWVfMDYzIiwicmVhZF9vbmx5XzA1NiIsImhpc3RvcnlfMDU0Iiwic3RhdGVfMDUyIiwicmVhZF9vbmx5XzA3NCIsImhpc3RvcnlfMDcyIiwic3RhdGVfMDcwIiwiYXJnXzA3NSIsImJuZHNfMDY5IiwiYXJnXzA3MyIsImJuZHNfMDY5JDAiLCJhcmdfMDcxIiwiYm5kc18wNjkkMSIsInN0YXRlX2ZpZWxkIiwiaGlzdG9yeV9maWVsZCIsInJlYWRfb25seV9maWVsZCIsInJlYWRfb25seV92YWx1ZSIsImhpc3RvcnlfdmFsdWUiLCJzdGF0ZV92YWx1ZSIsInZfcmVhZF9vbmx5Iiwidl9oaXN0b3J5Iiwidl9zdGF0ZSIsInJlYWRfb25seSIsInVwZGF0ZV96IiwiZWQiLCJwdXRfeiIsInVwZGF0ZV96X29wdCIsIm5ld19zdGF0ZSIsImhpc3RvcnkiLCJ1bmRvIiwiYWZ0ZXIiLCJiZWZvcmUiLCJyZWRvIiwiY2FuX3VuZG8iLCJjYW5fcmVkbyIsInNldF9yZWFkX29ubHkiLCJ0cmFpbGluZ19ob2xlX2N0eCIsImluZm8kMCIsImVycm9yX3NvdXJjZV8wMTIiLCJlcnJvcl9zb3VyY2VfMDIxIiwiZF8wMDQiLCJkdXBsaWNhdGVzXzAwNiIsImV4dHJhXzAwNyIsIml0ZXJfMDEzIiwiZmllbGRfc2V4cHNfMDEwIiwiZmllbGRfbmFtZV8wMDgiLCJ0YWlsXzAxNCIsImZpZWxkX3NleHBfMDA5JDEiLCJmaWVsZF9zZXhwXzAwOSIsImZpZWxkX3NleHBfMDA5JDAiLCJmdmFsdWVfMDExIiwiZF8wMDUiLCJkXzAxNyIsImFyZ18wMTgiLCJibmRzXzAxNiIsImRfZmllbGQiLCJkX3ZhbHVlIiwidl9kIiwidGFnXzAyNCIsInNleHBfYXJnc18wMjUiLCJhcmcyXzAyOCIsImFyZzFfMDI3IiwicmVzMl8wMzEiLCJhcmcyXzAzNCIsInJlczFfMDM2IiwicmVzMl8wMzciLCJmcmVzaF9jYXN0IiwiZnJlc2hfcGF0X2Nhc3QiLCJlbGFib3JhdGVkX3R5cGUiLCJlbGFiX3R5IiwiZWxhYm9yYXRlZF9wYXRfdHlwZSIsImVsYWJvcmF0ZV9wYXR0ZXJuIiwiY2FzdF9mcm9tIiwiZHBhdCIsImlubmVyX3R5cGUiLCJ0eTJfaW5uZXIiLCJ0eV9pbm5lciIsInBzJDEiLCJwcyQyIiwicDIkMiIsInAxJDIiLCJwMSQzIiwicDIkMyIsInR5MXIiLCJ0eTFsIiwicDEkNCIsInAyJDQiLCJlbGFib3JhdGUiLCJlbGFib3JhdGVkX3R5cGUkMCIsInN0dWZmIiwiZGhleHAiLCJ0eWUiLCJ0eWUkMCIsImFkZF9uYW1lIiwiZml4ZiIsImRlZiQzIiwidHllJDEiLCJ0eWUkMiIsInR5ZiIsInR5YSIsInR5ZjIiLCJ0eWYxIiwidXQiLCJ0eWUkMyIsInR5ZSQ0IiwidXQkMCIsInR5ZSQ1IiwiZiQyIiwidHlmJDAiLCJmJDMiLCJ0eXMkMSIsInR5ZjIkMCIsInR5ZjEkMCIsInR5X2ZhcmdzIiwiZiQ0IiwiYXJncyQxIiwicmVtYWluaW5nX2FyZ3MiLCJyZW1haW5pbmdfYXJnX3R5IiwiZiQ1IiwidHljIiwiYyQxIiwidHl0IiwidHlmJDEiLCJmJDYiLCJjJDIiLCJmJDciLCJraW5kIiwiZSQxNiIsImtpbmQkMCIsImUkMTciLCJ0JDQiLCJlJDE4IiwidHlfaW5uZXIxIiwidHlfaW5uZXIyIiwidHlfaW5uZXIkMCIsImUkMTkiLCJlJDIwIiwidCQ1IiwiZSQyMSIsImUkMjIiLCJ0JDYiLCJlJDIzIiwiY2FzZXMiLCJlJDI0IiwidCQ3IiwiZSQyNSIsInB0eXMiLCJqb2luZWRfcHR5IiwiZSQyNiIsImV0eXMiLCJqb2luZWRfZXR5IiwiY29udCIsImZpeF90eXBfaWRzIiwidWV4cF9lbGFiIiwiaW5pdGlhbCIsInN0ZXBfMDA0Iiwic3RlcF8wMDUiLCJzdGVwXzAxNyIsInN0ZXBfZmllbGQiLCJzdGVwX3ZhbHVlIiwidl9zdGVwIiwidGFrZV9zdGVwIiwic3RlcCIsImdldF9zdGVwIiwicHV0X3N0ZXAiLCJzdGF0c18wMDQiLCJ0ZXN0c18wMDYiLCJ0ZXN0c18wMDciLCJzdGF0c18wMDUiLCJ0ZXN0c18wMjIiLCJzdGF0c18wMjAiLCJzdGF0c19maWVsZCIsInRlc3RzX2ZpZWxkIiwidGVzdHNfdmFsdWUiLCJzdGF0c192YWx1ZSIsInZfdGVzdHMiLCJ2X3N0YXRzIiwic3RhdHMiLCJhZGRfdGVzdCIsInRlc3RzIiwidGVzdHMkMCIsImdldF90ZXN0cyIsInB1dF90ZXN0cyIsInN5bWJvbCIsInN0YXRlX3VwZGF0ZSQwIiwic3RhdGVfdXBkYXRlJDEiLCJldmFsdWF0ZSIsInJlc3VsdCQwIiwicHJldHR5MiIsInByZXR0eTEiLCJwaWVjZTEiLCJwaWVjZTIiLCJwX29yIiwicF9vcmlmIiwicF9qdXN0IiwicF9jb25jYXQiLCJwcmV0dGllcyIsInByZXR0eSIsImxldCQxIiwiYW5kJDAiLCJzaG91bGRfYWRkX3NwYWNlIiwidGV4dF90b19wcmV0dHkiLCJta19mb3JtIiwiZm9ybV9uYW1lIiwiZm9ybSIsImxzcGFjZSIsInJzcGFjZSIsImNoaWxkcmVuJDAiLCJwYWRfaWRzIiwic2VnMSIsInNlZzIiLCJleHBfdG9fcHJldHR5IiwiaW5saW5lIiwiaW5saW5lJDAiLCJhbnlfdG9fcHJldHR5IiwicGF0X3RvX3ByZXR0eSIsImlkJDIiLCJ0cGF0X3RvX3ByZXR0eSIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsInR5cF90b19wcmV0dHkiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwiaWQkMTAiLCJpZCQxMSIsImlkJDEyIiwiaWQkMTMiLCJpZCQxNCIsImlkJDE1IiwiaWQkMTYiLCJpZCQxNyIsImlkJDE4IiwiZ29fY29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImV4dGVybmFsX3ByZWNlZGVuY2UiLCJleHAkMCIsImV4cCQxIiwiZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQiLCJleHRlcmFsX3ByZWNlZGVuY2VfdHlwIiwicGFyZW5fYXQiLCJpbnRlcm5hbF9wcmVjZWRlbmNlIiwicGFyZW5fYXNzb2NfYXQiLCJwYXJlbl9wYXRfYXQiLCJwYXJlbl9wYXRfYXNzb2NfYXQiLCJwYXJlbl90eXBfYXQiLCJwYXJlbl90eXBfYXNzb2NfYXQiLCJwYXJlbnRoZXNpemUiLCJwYXJlbnRoZXNpemVfcGF0IiwidHAkMSIsInBhcmVudGhlc2l6ZV90eXAiLCJleHBfdG9fZWRpdG9yIiwicGllY2UiLCJub193cyIsImlnbiIsInBhcmVudCQwIiwicGFyZW50JDEiLCJwaWVjZSQwIiwic2hhcmRfaW5kZXgiLCJyZWxhdGlvbiIsImJlZm9yZSQwIiwiY2lfb2YiLCJwcm94eV9pZCIsInNsIiwic3IiLCJwcF9pbm5lciIsInNob3dfaW5uZXIiLCJpbm5lcl9vZl9zZXhwIiwicmVzdWx0XzAwNCIsImVkaXRvcl8wMDYiLCJzdGF0ZV8wMDgiLCJzdGF0ZV8wMDkiLCJlZGl0b3JfMDA3IiwicmVzdWx0XzAwNSIsInNleHBfb2ZfaW5uZXIiLCJzdGF0ZV8wMjciLCJlZGl0b3JfMDI1IiwicmVzdWx0XzAyMyIsImlubmVyX29mX3lvanNvbiIsInJlc3VsdF9maWVsZCIsImVkaXRvcl9maWVsZCIsImVkaXRvcl92YWx1ZSIsInJlc3VsdF92YWx1ZSIsInlvanNvbl9vZl9pbm5lciIsInZfZWRpdG9yIiwidl9yZXN1bHQiLCJzZXhwXzA1MSIsInRhZ18wNTIiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJhcmcwXzA2OCIsInJlczBfMDY5IiwiZ2V0X2RoZXhwIiwiZ2V0X3N0YXRlIiwibWtfbWFwIiwibWtfbWFwJDAiLCJjb3JlIiwibWtfbWFwX2FuZF9pbmZvX2N0eCIsIm1rX21hcF9jdHgiLCJkaF9lcnIiLCJlcnJvciIsImV4biQwIiwiZXhuIiwicmVhc29uIiwiZXZhbF96Iiwic3VnZ2VzdF9iYWNrcGFjayIsInRva2VuX3RvX2xlZnQiLCJ0b2tfdG9fbGVmdCIsIm1rX3VucGFyc2VkX2J1ZmZlciIsInN1ZmZpeF9vZiIsImNhbmRpZGF0ZSIsImNhbmRpZGF0ZV9zdWZmaXgiLCJ6X3RvX2NpIiwiZ2V0X2J1ZmZlciIsInN1Z2dlc3QiLCJzdWdnZXN0aW9ucyIsInN1Z2dlc3Rpb25zJDAiLCJ0b3Bfc3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb25fc3VmZml4IiwidGVzdF9tYXBfMDA0Iiwic3RhdHVzZXNfMDA2IiwiZGVzY3JpcHRpb25zXzAwOCIsInRvdGFsXzAxMCIsInBhc3NpbmdfMDEyIiwiZmFpbGluZ18wMTQiLCJ1bmZpbmlzaGVkXzAxNiIsImR1cGxpY2F0ZXNfMDE4IiwiZXh0cmFfMDE5IiwiaXRlcl8wMzEiLCJmaWVsZF9uYW1lXzAyMCIsInRhaWxfMDMyIiwiZmllbGRfc2V4cF8wMjEkNyIsImZpZWxkX3NleHBfMDIxIiwiZmllbGRfc2V4cF8wMjEkMCIsImZ2YWx1ZV8wMjMiLCJmaWVsZF9zZXhwXzAyMSQxIiwiZmllbGRfc2V4cF8wMjEkMiIsImZpZWxkX3NleHBfMDIxJDMiLCJmaWVsZF9zZXhwXzAyMSQ0IiwiZmllbGRfc2V4cF8wMjEkNSIsImZpZWxkX3NleHBfMDIxJDYiLCJ1bmZpbmlzaGVkXzAxNyIsImZhaWxpbmdfMDE1IiwicGFzc2luZ18wMTMiLCJ0b3RhbF8wMTEiLCJkZXNjcmlwdGlvbnNfMDA5Iiwic3RhdHVzZXNfMDA3IiwidGVzdF9tYXBfMDA1IiwidW5maW5pc2hlZF8wNDciLCJmYWlsaW5nXzA0NSIsInBhc3NpbmdfMDQzIiwidG90YWxfMDQxIiwiZGVzY3JpcHRpb25zXzAzOSIsInN0YXR1c2VzXzAzNyIsInRlc3RfbWFwXzAzNSIsImJuZHNfMDM0IiwiYm5kc18wMzQkMCIsImJuZHNfMDM0JDEiLCJibmRzXzAzNCQyIiwiYXJnXzA0MCIsImJuZHNfMDM0JDMiLCJhcmdfMDM4IiwiYm5kc18wMzQkNCIsImFyZ18wMzYiLCJibmRzXzAzNCQ1IiwidGVzdF9tYXBfZmllbGQiLCJzdGF0dXNlc19maWVsZCIsImRlc2NyaXB0aW9uc19maWVsZCIsInRvdGFsX2ZpZWxkIiwicGFzc2luZ19maWVsZCIsImZhaWxpbmdfZmllbGQiLCJ1bmZpbmlzaGVkX2ZpZWxkIiwidW5maW5pc2hlZF92YWx1ZSIsImZhaWxpbmdfdmFsdWUiLCJwYXNzaW5nX3ZhbHVlIiwidG90YWxfdmFsdWUiLCJkZXNjcmlwdGlvbnNfdmFsdWUiLCJzdGF0dXNlc192YWx1ZSIsInRlc3RfbWFwX3ZhbHVlIiwidl91bmZpbmlzaGVkIiwidl9mYWlsaW5nIiwidl9wYXNzaW5nIiwidl90b3RhbCIsInZfZGVzY3JpcHRpb25zIiwidl9zdGF0dXNlcyIsInZfdGVzdF9tYXAiLCJta19yZXN1bHRzIiwiZGVzY3JpcHRpb25zIiwicmVzdWx0X3N1bW1hcnlfc3RyIiwibl9zdHIiLCJuc19zdHIiLCJwX3N0ciIsInFfc3RyIiwicl9zdHIiLCJvbmVfcCIsIm9uZV9xIiwibW55X3AiLCJtbnlfcSIsIm9mX24iLCJ0ZXN0X3N1bW1hcnlfc3RyIiwidGVzdF9yZXN1bHRzIiwic3Vic3RfdmFyIiwic3Vic3RfdmFyX2VudiIsImQ0IiwiZDMkMiIsImQzJDMiLCJkNCQwIiwiZDMkNCIsImVudiQyIiwiZDMkNSIsImQ0JDEiLCJkNCQyIiwiZDQkMyIsImQzJDYiLCJkMyQ3IiwiZDQkNCIsImQzJDgiLCJkMyQ5IiwiZDMkMTAiLCJkMyQxMSIsImQ0cyQwIiwiZDYiLCJkNSIsImQ0JDUiLCJkNCQ2IiwiZDUkMCIsImQ2JDAiLCJkNCQ3IiwiZDMkMTIiLCJkMyQxMyIsImQ0JDgiLCJkMyQxNCIsImRib2R5IiwiZGJvZHkkMCIsInN1YnN0X3Zhcl9maWx0ZXIiLCJkMyQxNSIsImVudiQzIiwiZW52JDQiLCJkMyQxNiIsImQ0JDkiLCJkNCQxMCIsImQ0JDExIiwiZDMkMTciLCJkMyQxOCIsImQ0JDEyIiwiZDQkMTMiLCJkMyQxOSIsImQzJDIwIiwiZDQkMTQiLCJkMyQyMSIsImQzJDIyIiwiZDQkMTUiLCJkMyQyMyIsImQzJDI0IiwiZDQkMTYiLCJkcyQyIiwicnVsZXMkMCIsInhkIiwicHBfc3RhdGljcyIsInNob3dfc3RhdGljcyIsInN0YXRpY3Nfb2Zfc2V4cCIsInRlcm1fMDA0IiwiaW5mb19tYXBfMDA2IiwiZXJyb3JfaWRzXzAwOCIsImVycm9yX2lkc18wMDkiLCJpbmZvX21hcF8wMDciLCJ0ZXJtXzAwNSIsInNleHBfb2Zfc3RhdGljcyIsImVycm9yX2lkc18wMjciLCJpbmZvX21hcF8wMjUiLCJ0ZXJtXzAyMyIsInN0YXRpY3Nfb2ZfeW9qc29uIiwiaW5mb19tYXBfZmllbGQiLCJlcnJvcl9pZHNfZmllbGQiLCJlcnJvcl9pZHNfdmFsdWUiLCJpbmZvX21hcF92YWx1ZSIsInlvanNvbl9vZl9zdGF0aWNzIiwidl9lcnJvcl9pZHMiLCJ2X2luZm9fbWFwIiwic3RhdGljc19vZl90ZXJtIiwiZWRpdG9yIiwiZW1wdHlfc3RhdGljcyIsInJlc3VsdHMiLCJzdGF0aWNzIiwiZXJyb3Jfc291cmNlXzA2NCIsInN0YXRlXzAwNiIsImRfbG9jXzAwOCIsImRfbG9jXzAxMCIsImN0eF8wMTIiLCJrbmRfMDE0IiwiZHVwbGljYXRlc18wMTYiLCJleHRyYV8wMTciLCJpdGVyXzAyOCIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmaWVsZF9zZXhwXzAxOSQxIiwiZmllbGRfc2V4cF8wMTkkMiIsImZpZWxkX3NleHBfMDE5JDMiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZmllbGRfc2V4cF8wMTkkNSIsImZ2YWx1ZV8wMjIiLCJrbmRfMDE1IiwiY3R4XzAxMyIsImRfbG9jXzAxMSIsImRfbG9jXzAwOSIsInN0YXRlXzAwNyIsImtuZF8wNDIiLCJjdHhfMDQwIiwiZF9sb2NfMDM4IiwiZF9sb2NfMDM2Iiwic3RhdGVfMDM0IiwiZF8wMzIiLCJibmRzXzAzMSIsImJuZHNfMDMxJDAiLCJibmRzXzAzMSQxIiwiYm5kc18wMzEkMiIsImJuZHNfMDMxJDMiLCJhcmdfMDMzIiwiYm5kc18wMzEkNCIsImRfbG9jX2ZpZWxkIiwiZF9sb2NfZmllbGQkMCIsImtuZF9maWVsZCIsImtuZF92YWx1ZSIsImRfbG9jX3ZhbHVlIiwiZF9sb2NfdmFsdWUkMCIsInZfa25kIiwidl9kX2xvYyIsInZfZF9sb2MkMCIsImZpZWxkX3NleHBzXzA0NiIsImVudl8wNDciLCJkX2xvY18wNDkiLCJjdHhfMDUxIiwia25kXzA1MyIsImR1cGxpY2F0ZXNfMDU1IiwiZXh0cmFfMDU2IiwiaXRlcl8wNjUiLCJzZXhwXzA0NSQwIiwiZmllbGRfc2V4cHNfMDU5IiwiZmllbGRfbmFtZV8wNTciLCJ0YWlsXzA2NiIsImZpZWxkX3NleHBfMDU4JDQiLCJmaWVsZF9zZXhwXzA1OCIsInhfMDY3IiwiZmllbGRfc2V4cF8wNTgkMCIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQxIiwiZmllbGRfc2V4cF8wNTgkMiIsImZpZWxkX3NleHBfMDU4JDMiLCJmdmFsdWVfMDYxIiwia25kXzA1NCIsImN0eF8wNTIiLCJkX2xvY18wNTAiLCJlbnZfMDQ4Iiwia25kXzA3NSIsImN0eF8wNzMiLCJkX2xvY18wNzEiLCJlbnZfMDY5IiwiYXJnXzA3NiIsImJuZHNfMDY4IiwiYXJnXzA3NCIsImJuZHNfMDY4JDAiLCJhcmdfMDcyIiwiYm5kc18wNjgkMSIsImFyZ18wNzAiLCJibmRzXzA2OCQyIiwiZW52X2ZpZWxkIiwiZW52X3ZhbHVlIiwidl9lbnYiLCJkX2xvYyIsImtuZCIsImdldF9jdHgiLCJvYmoiLCJnZXRfa2luZCIsIm9ianMiLCJ3ciIsInNzMSIsInNzMiIsInZzIiwicmVxX2FsbF92YWx1ZSQwIiwicmVxX2FsbF9maW5hbCQwIiwicnEiLCJybCIsInZhbCIsIm8iLCJkZWNvbXBvc2UiLCJyZXFfdmFsdWUkMCIsInJlcV9hbGxfdmFsdWUkMSIsInJlcV9maW5hbCQwIiwicmVxX2FsbF9maW5hbCQxIiwicmVxX2ZpbmFsX29yX3ZhbHVlJDAiLCJvdGhlcndpc2UkMCIsInVwZGF0ZV90ZXN0JDAiLCJ0YWtlX3N0ZXAkMCIsImRlY29tcG9zZSQwIiwiZXZhbHVhdGVfd2l0aF9oaXN0b3J5IiwiZXh0ZW5kcyQwIiwibWF0Y2hlc19leHAiLCJmdiIsImR2IiwiZnYkMCIsImR2JDAiLCJmdiQxIiwiZHYkMSIsImZ2JDIiLCJkdiQyIiwiZnYkMyIsImR2JDMiLCJmbmFtZTEiLCJmcDEiLCJkbmFtZTEiLCJtYXRjaGVzX3BhdCIsInBhdDIiLCJwYXQxIiwibWF0Y2hlc191dHBhdCIsImZ2JDQiLCJkdiQ0IiwiZngkMCIsImR4JDAiLCJmcCIsImZwJDAiLCJmZCIsImZ1dCIsImZ0cCIsImRkIiwiZHV0IiwiZHRwIiwiZjEkMiIsIm1hdGNoZXNfdHlwIiwiZjEkMyIsImYzIiwiZjIkMiIsImYxJDQiLCJmMiQzIiwiZjEkNSIsImYyJDQiLCJmZCQwIiwiZmYiLCJkZCQwIiwiZGYiLCJmMiQ1IiwiZjEkNiIsImYyJDYiLCJmMSQ3IiwiZjEkOCIsImZfb3AiLCJkX29wIiwiZjIkNyIsImYxJDkiLCJmX29wJDAiLCJkX29wJDAiLCJkbiIsImZydWxlIiwiZnNjcnV0IiwiZHJ1bGUiLCJkc2NydXQiLCJmayIsImRrIiwicmVzJDAiLCJkdCIsImR4IiwiZngiLCJkbCIsImZsIiwiZGwkMCIsImZsJDAiLCJtYXRjaGVzX3J1bCIsImwxIiwiZmx0X2VudiIsImZsdF9lbnYkMCIsImlkeCQwIiwiZmx0X2VudiQxIiwiaWR4JDEiLCJwcF9zdGVwcGVyX3N0YXRlIiwic2hvd19zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl9zZXhwIiwic2V4cF9vZl9zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcHBlcl9zdGF0ZSIsInBwX2EiLCJzaG93X2EiLCJhX29mX3NleHAiLCJhcmcyXzAyMiIsInJlczJfMDI1Iiwic2V4cF9vZl9hIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsInJlczJfMDMzIiwiYV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYSIsInBwX2hpc3RvcnkiLCJzaG93X2hpc3RvcnkiLCJoaXN0b3J5X29mX3NleHAiLCJzZXhwX29mX2hpc3RvcnkiLCJoaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9oaXN0b3J5Iiwic2V4cF8wMzgiLCJoaXN0b3J5XzA0MCIsIm5leHRfb3B0aW9uc18wNDIiLCJzdGVwcGVyX3N0YXRlXzA0NCIsImR1cGxpY2F0ZXNfMDQ2IiwiZXh0cmFfMDQ3IiwiaXRlcl8wNTUiLCJzZXhwXzAzOCQwIiwiZmllbGRfbmFtZV8wNDgiLCJ0YWlsXzA1NiIsImZpZWxkX3NleHBfMDQ5JDMiLCJmaWVsZF9zZXhwXzA0OSIsInhfMDU3IiwiZmllbGRfc2V4cF8wNDkkMCIsImZ2YWx1ZV8wNTEiLCJmaWVsZF9zZXhwXzA0OSQxIiwiZnZhbHVlXzA1MiIsImZpZWxkX3NleHBfMDQ5JDIiLCJmdmFsdWVfMDUzIiwic3RlcHBlcl9zdGF0ZV8wNDUiLCJuZXh0X29wdGlvbnNfMDQzIiwiaGlzdG9yeV8wNDEiLCJzdGVwcGVyX3N0YXRlXzA2MyIsIm5leHRfb3B0aW9uc18wNjEiLCJoaXN0b3J5XzA1OSIsImJuZHNfMDU4JDEiLCJuZXh0X29wdGlvbnNfZmllbGQiLCJzdGVwcGVyX3N0YXRlX2ZpZWxkIiwic3RlcHBlcl9zdGF0ZV92YWx1ZSIsIm5leHRfb3B0aW9uc192YWx1ZSIsInZfc3RlcHBlcl9zdGF0ZSIsInZfbmV4dF9vcHRpb25zIiwicGFjdCIsInBpZHgiLCJjb21wb3NlZCIsIm1pZHgiLCJtYWN0IiwicmN0eCIsInJpZHgiLCJyYWN0IiwiZmx0JDAiLCJmbHQkMSIsInJjdHgkMCIsInJpZHgkMCIsInJhY3QkMCIsImRyIiwiY3R4JDMyIiwic2hvdWxkX2hpZGVfZXZhbF9vYmoiLCJnZXRfZWxhYiIsImdldF9uZXh0X3N0ZXBzIiwiY3VycmVudF9leHByIiwiY3VycmVudF9zdGF0ZSIsInN0ZXBfcGVuZGluZyIsInN0ZXBwZXIiLCJldmFsdWF0ZV9wZW5kaW5nIiwiZW8iLCJzdGF0ZV9yZWYiLCJuZXdfc3RlcCIsImV2YWx1YXRlX2Z1bGwiLCJ0aW1lb3V0IiwidHJ1bmNhdGVfaGlzdG9yeSIsImFzIiwiYnMiLCJicyQwIiwic3RlcF9iYWNrd2FyZCIsImgiLCJzdCIsImdldF9qdXN0aWZpY2F0aW9uIiwiZ2V0X2hpc3RvcnkiLCJzaG91bGRfc2tpcF9zdGVwIiwiZ3JvdXBlZF9zdGVwcyIsInJlcGxhY2VfaWQiLCJ0cmFja19pZHMiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX2hpc3RvcnkiLCJjaG9zZW5fc3RlcCIsImhzIiwiaGgiLCJyZXBsYWNlbWVudCIsImhpZGRlbl9oaXN0b3J5JDAiLCJwcmV2aW91c19zdGVwJDAiLCJwYWRkZWQiLCJoaWRkZW5fc3RlcHNfb2ZfaW5mbyIsInBwX3BlcnNpc3RlbnRfaGlzdG9yeSIsInNob3dfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3NleHAiLCJ4XzA3MiIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJzZXhwX29mX3BlcnNpc3RlbnRfaGlzdG9yeSIsInhfMDc3IiwiYXJnMV8wNzQiLCJhcmcwXzA3MyIsInJlczFfMDc2IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X2hpc3RvcnkiLCJwcF9wZXJzaXN0ZW50Iiwic2hvd19wZXJzaXN0ZW50IiwicGVyc2lzdGVudF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDgxIiwiZHVwbGljYXRlc18wODMiLCJleHRyYV8wODQiLCJpdGVyXzA5MCIsInNleHBfMDc5JDAiLCJmaWVsZF9zZXhwc18wODciLCJmaWVsZF9uYW1lXzA4NSIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODYkMSIsImZpZWxkX3NleHBfMDg2IiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4NiQwIiwiZnZhbHVlXzA4OCIsInBlcnNpc3RlbnRfaGlzdG9yeV8wODIiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDk0IiwiYXJnXzA5NSIsImJuZHNfMDkzIiwicGVyc2lzdGVudF9vZl95b2pzb24iLCJwZXJzaXN0ZW50X2hpc3RvcnlfZmllbGQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfdmFsdWUiLCJ5b2pzb25fb2ZfcGVyc2lzdGVudCIsInZfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9vZl9zZXhwJDAiLCJzZXhwX29mX3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2Zfc2V4cCQxIiwic2V4cF9vZl9wZXJzaXN0ZW50JDEiLCJ0b19wZXJzaXN0ZW50X2hpc3RvcnkiLCJ0b19wZXJzaXN0ZW50IiwiZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkiLCJmcm9tX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnkiLCJnZXRfc2VsZWN0ZWRfZWRpdG9yIiwicHV0X3NlbGVjdGVkX2VkaXRvciIsInBwX21vdmFiaWxpdHkiLCJzaG93X21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZhYmlsaXR5IiwibW92YWJpbGl0eSIsImNodW5raW5lc3MiLCJkZWxpbV9pZHgiLCJjaGFyX21heCIsIm5laWdoYm9yX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5JDAiLCJsX2tpZHMiLCJzdXBlcm5oYnJfciQwIiwic3VwZXJuaGJyX2wiLCJyX25oYnIiLCJsX25oYnIiLCJ3JDAiLCJjb250ZW50X3N0cmluZyQwIiwiY29udGVudF9zdHJpbmciLCJwb3Bfb3V0IiwicG9wX21vdmUiLCJpbm5lcl9pbmNyIiwiaW5uZXJfZGVjciIsImlubmVyX3N0YXJ0IiwiZF9pbml0IiwiaW5uZXJfZW5kIiwiY19tYXgiLCJwcmltYXJ5IiwiY19tYXgkMCIsImRsbSIsImlzX2F0X3NpZGVfb2Zfcm93IiwiY29scCIsInJvd3AiLCJkb190b3dhcmRzIiwiYW5jaG9yIiwiZ29hbCIsImN1cnIkMCIsImN1cnJfcCIsImRfY3VyciIsImRfcHJldiIsImFuY2hvciQwIiwiYW5jaG9yX2QiLCJkb192ZXJ0aWNhbCIsImN1cl9wIiwiZG9fZXh0cmVtZSIsInRvX3N0YXJ0IiwidG9fZW5kIiwidG9fZWRnZSIsImRvX3VudGlsIiwibW92ZV9maXJzdCIsInBpZWNlX3AiLCJkb191bnRpbF93cmFwIiwianVtcF90b19pZCIsInZlcnRpY2FsIiwidGFyZ2V0c193aXRoaW5fcm93IiwidG9fYmFja3BhY2tfdGFyZ2V0IiwiZG9uZV9vcl90cnlfYWdhaW4iLCJ6MSIsInoyIiwiZGlzdDEiLCJkaXN0MiIsInpzIiwiY2h1bmsiLCJjaHVuayQwIiwiYmFyZiIsImRlbGF5ZWRfZXhwYW5kIiwibmV3X2xhYmVsIiwiZXhwYW5kX29yX2JhcmZfbGVmdF9uZWlnaGJvciIsImV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yIiwiZ2V0X2R1b19zaGFyZCIsIm5laWdoYm9yX2Nhbl9kdW9tZXJnZSIsIm1vbm9fbGJsIiwidGlsZSQwIiwibWFrZV9uZXdfdGlsZSIsImxibCQwIiwiZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfIiwicmVwbGFjZV90aWxlIiwicHBfYXBwZW5kYWJpbGl0eSIsInNob3dfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2Zfc2V4cCIsInNleHBfb2ZfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2ZfeW9qc29uIiwieW9qc29uX29mX2FwcGVuZGFiaWxpdHkiLCJzaWJsaW5nX2FwcGVuZGFiaWxpdHkiLCJpbnNlcnRfb3V0ZXIiLCJpbnNlcnRfZHVvIiwiaW5zZXJ0X21vbm9zIiwib3B0X3JlZ3JvbGQiLCJtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW0iLCJjbG9zaW5nX3N0cmluZ2xpdF9vcl9jb21tZW50IiwiZF9pZHgiLCJjYXJldCQwIiwiY2FyZXRfc3RyIiwiY29kZV9maWVsZCIsImNvZGVfdmFsdWUiLCJ2X2NvZGUiLCJzZWdfb2ZfemlwIiwib2ZfcGllY2UiLCJvZl9kZWxpbSIsInRvX3N0cmluZ19iYXNpYyIsImxpbmVzX3RvX2xpc3QiLCJ0b19yb3dzIiwiaW5kZW50X29mIiwibWtfaW5kZW50IiwiY2FyZXRfcm93IiwiY2FyZXRfcm93JDAiLCJ0b19zdHJpbmdfZWRpdG9yIiwidG9fc3RyaW5nX3NlbGVjdGlvbiIsInRvX2xvZyIsInRvX2xvZ19mbGF0IiwiY29kZSIsInppcHBlcl9vZl9zdHJpbmciLCJ6aXBwZXJfaW5pdCIsImluc2VydCIsImJhY2t1cF90ZXh0XzAwNiIsImJhY2t1cF90ZXh0XzAwNyIsImJhY2t1cF90ZXh0XzAyMiIsImJhY2t1cF90ZXh0X2ZpZWxkIiwiYmFja3VwX3RleHRfdmFsdWUiLCJ2X2JhY2t1cF90ZXh0IiwicGVyc2lzdCIsInVucGVyc2lzdCIsInBlcnNpc3RlZCIsImxhc3RfaW5uZXJfcG9zIiwiZGVsZXRlX3JpZ2h0IiwiZGVsZXRlX2xlZnQiLCJjb25zdHJ1Y3RfcmlnaHQiLCJjb25zdHJ1Y3RfbGVmdCIsImNfaWR4IiwiY19pZHgkMCIsInBhcmVudF9kdW9tZXJnZXMiLCJpc193cml0ZV9hY3Rpb24iLCJnb196IiwibWV0YSQwIiwibWV0YSQxIiwic2VsZWN0X3Rlcm1fY3VycmVudCQwIiwic2VsZWN0X3Rlcm1fY3VycmVudCIsImp1bXBfdGFyZ2V0IiwiYmluZGluZ19pZCIsInokNyIsInokOCIsInokOSIsInokMTAiLCJ6JDExIiwieiQ1IiwidGlsZV9pc190ZXJtIiwic3RhdGljcyQwIiwieiQ2IiwieiQxMiIsImNsaXBib2FyZCIsInokMTMiLCJvcmllbnQiLCJvcmllbnQkMCIsImVycm9yX3NvdXJjZV8wNzMiLCJwcF9ldmFsX3Jlc3VsdCIsInNob3dfZXZhbF9yZXN1bHQiLCJldmFsX3Jlc3VsdF9vZl9zZXhwIiwiZWxhYl8wMDQiLCJldmFsdWF0aW9uXzAwNiIsInByZXZpb3VzXzAwOCIsInByZXZpb3VzXzAwOSIsImV2YWx1YXRpb25fMDA3IiwiZWxhYl8wMDUiLCJzZXhwX29mX2V2YWxfcmVzdWx0IiwicHJldmlvdXNfMDI3IiwiZXZhbHVhdGlvbl8wMjUiLCJlbGFiXzAyMyIsImV2YWxfcmVzdWx0X29mX3lvanNvbiIsImVsYWJfZmllbGQiLCJwcmV2aW91c19maWVsZCIsInByZXZpb3VzX3ZhbHVlIiwiZWxhYl92YWx1ZSIsInlvanNvbl9vZl9ldmFsX3Jlc3VsdCIsInZfcHJldmlvdXMiLCJ2X2VsYWIiLCJpbml0X2V2YWwiLCJlbGFiIiwidXBkYXRlX2VsYWIiLCJldmFsdWF0aW9uIiwidXBkYXRlX3N0ZXBwZXIiLCJwYXJhbSIsInN0ZXBfZm9yd2FyZCIsIm1yIiwicnVuX3BlbmRpbmciLCJwcmV2aW91cyIsInVwZGF0ZV9ldmFsdWF0aW9uIiwiZXZhbCQwIiwidG9nZ2xlX3N0ZXBwZXIiLCJwciIsIm9mX3BlcnNpc3RlbnQiLCJwcF9zZWxlY3Rpb24iLCJzaG93X3NlbGVjdGlvbiIsInNlbGVjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdGlvbiIsInNlbGVjdGlvbl8wNjIiLCJhY3Rpb25fMDY0IiwiZHVwbGljYXRlc18wNjYiLCJleHRyYV8wNjciLCJpdGVyXzA3NCIsImZpZWxkX3NleHBzXzA3MCIsImZpZWxkX25hbWVfMDY4IiwidGFpbF8wNzUiLCJmaWVsZF9zZXhwXzA2OSQyIiwiZmllbGRfc2V4cF8wNjkiLCJ4XzA3NiIsImZpZWxkX3NleHBfMDY5JDAiLCJmdmFsdWVfMDcyIiwiZmllbGRfc2V4cF8wNjkkMSIsImZ2YWx1ZV8wNzEiLCJhY3Rpb25fMDY1Iiwic2VsZWN0aW9uXzA2MyIsImFjdGlvbl8wODAiLCJzZWxlY3Rpb25fMDc4IiwiYXJnXzA4MSIsImJuZHNfMDc3IiwiYXJnXzA3OSIsImJuZHNfMDc3JDAiLCJhY3Rpb25fZmllbGQiLCJhY3Rpb25fdmFsdWUiLCJ2X2FjdGlvbiIsImVkaXRvciQwIiwicHIkMCIsImdldF9lbGFib3JhdGlvbiIsInBlcmZvcm0iLCJhY3Rpb24iLCJ4XzAwNCIsInVwZGF0ZV9lbGFicyIsInRpbWVvdXRfYWxsIiwiYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0Iiwic3RlcHBlcl9yZXN1bHRfb3B0IiwidG9fZXZhbHVhdGUiLCJlbGFicyIsInRvX3N0ZXAiLCJwdXRfcmVzdWx0IiwiY2xlYXIiLCJlZGl0b3Jfb2ZfY29kZSIsImVkaXRvcnNfZm9yIiwiYWNjX3pzIiwic3oiLCJlZGl0b3JzX29mX3N0cmluZ3MiLCJhZXMiLCJvZSIsImFwcGVuZF9leHAiLCJlYm9keSIsImVkZWYiLCJlYm9keSQwIiwiZWJvZHkkMSIsInRkZWYiLCJlYm9keSQyIiwiZTEyIiwiZTExIiwiZTEyJDAiLCJlYm9keSQzIiwiZWJvZHkkNCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsImVtcHR5Iiwic2luZ2xldG9uIiwicG9zIiwieCIsInVuaW9uIiwiZiIsInQxIiwidDIiLCJ4czIiLCJ4MiIsInAyIiwieHMxIiwieDEiLCJwMSIsIm1hcCIsInJlc3QiLCJtYXBpIiwibWFwayIsImZvbGRfbGVmdCIsInokMCIsImVycm9yX3NvdXJjZV8wMTUiLCJ6ZXJvIiwidF9vZl9zZXhwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfMDA0IiwiY29sXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfMDA3Iiwicm93XzAwNSIsInNleHBfb2ZfdCIsImNvbF8wMjIiLCJyb3dfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJjb21wYXJlIiwicG9zMSIsInBvczIiLCJlcnJvcl9zb3VyY2VfMDA0Iiwib2ZfYW5ub3RfMDAxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJzZXhwX2FyZ3NfMDEzIiwiYXJnMV8wMTUiLCJhcmcwXzAxNCIsInJlczBfMDE2IiwicmVzMV8wMTciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsIm9mX2Fubm90XzAzMSIsImFyZzBfMDMyIiwicmVzMF8wMzMiLCJhcmcxXzAzNSIsImFyZzBfMDM0IiwicmVzMF8wMzYiLCJyZXMxXzAzNyIsImFyZzBfMDM4IiwicmVzMF8wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsImFsaWduIiwibCIsImFubm90IiwicmVtb3ZlX2Fubm90cyIsImxheW91dCIsImxheW91dCQwIiwic3RyaW5nIiwibDIiLCJsMSIsImxheW91dCQxIiwibWtfb2ZfbGF5b3V0IiwidGV4dCIsImNvbHVtbiIsImdvIiwiaW5kZW50IiwiaW5kZW50JDAiLCJpbXAxIiwiaW1wMiIsImluZGVudCQxIiwic3RyaW5nX29mX2xheW91dCIsImltcCIsInMxIiwiczIiLCJyZWNvcmQiLCJzdHJpbmdzX29mX2xheW91dCIsInJlc3QyIiwiZmlyc3Rfc3RyaW5nXzIiLCJmaXJzdF9pbmRlbnRfMiIsInJlc3QxIiwibGFzdF9zdHJpbmdfMSIsImxhc3RfaW5kZW50XzEiLCJzcGxpdF9maXJzdCIsInhzIiwidHJhaWxpbmciLCJmaXJzdCIsInNwbGl0X2xhc3Rfb3B0IiwieXMiLCJ5Iiwic3BsaXRfbGFzdCIsInIiLCJib3giLCJlcnJvcl9zb3VyY2VfMDM5IiwiZXJyb3Jfc291cmNlXzA0NiIsImJveF9vZl9zZXhwIiwiaGVpZ2h0XzAwNCIsIndpZHRoXzAwNiIsIndpZHRoXzAwNyIsImhlaWdodF8wMDUiLCJzZXhwX29mX2JveCIsIndpZHRoXzAyMiIsImhlaWdodF8wMjAiLCJ0X29mX3NleHAkMCIsIm9mX2Fubm90XzAyNCIsInNleHBfMDI2IiwiZmllbGRfc2V4cHNfMDI3IiwibGF5b3V0XzAyOCIsIm1ldHJpY3NfMDMwIiwiZHVwbGljYXRlc18wMzIiLCJleHRyYV8wMzMiLCJzZXhwXzAyNiQwIiwiZmllbGRfc2V4cHNfMDM2IiwiZmllbGRfbmFtZV8wMzQiLCJ0YWlsXzA0MSIsImZpZWxkX3NleHBfMDM1JDIiLCJmaWVsZF9zZXhwXzAzNSIsInhfMDQyIiwiZmllbGRfc2V4cF8wMzUkMCIsImZ2YWx1ZV8wMzciLCJmaWVsZF9zZXhwXzAzNSQxIiwiZnZhbHVlXzAzOCIsIm1ldHJpY3NfMDMxIiwibGF5b3V0XzAyOSIsIm9mX2Fubm90XzA0MyIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJhcmcwXzA1NiIsInJlczBfMDU3Iiwic2V4cF9hcmdzXzA2NyIsImFyZzFfMDY5IiwiYXJnMF8wNjgiLCJyZXMwXzA3MCIsInJlczFfMDcxIiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzA1MCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJvZl9hbm5vdF8wNzMiLCJtZXRyaWNzXzA3NyIsImxheW91dF8wNzUiLCJhcmdfMDc4IiwiYm5kc18wNzQiLCJhcmdfMDc2Iiwic2V4cF9vZl90JDAiLCJibmRzXzA3NCQwIiwib2ZfYW5ub3RfMDc5IiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsImFyZzFfMDg5IiwiYXJnMF8wODgiLCJyZXMwXzA5MCIsInJlczFfMDkxIiwiaGVpZ2h0IiwibSIsIndpZHRoIiwib3B0Iiwic3RoIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJjb2wiLCJyb3ciLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsInN0aCQwIiwibWlkIiwidGFibGUiLCJtayIsIm1pZF9ib3giLCJsJDAiLCJidyIsImJoIiwiYm91bmRpbmdfYm94IiwibCQxIiwibSQyIiwib3ZlcmZsb3dfY29zdCIsImhlaWdodF9jb3N0IiwibWtfaGVpZ2h0IiwibWtfb3ZlcmZsb3ciLCJpbmYiLCJhZGQiLCJjMSIsImMyIiwiZXEiLCJsdCIsImxlcSIsImVycm9yX3NvdXJjZV8wMTYiLCJlcnJvcl9zb3VyY2VfMDIzIiwiZXJyb3Jfc291cmNlXzA5NiIsImVycm9yX3NvdXJjZV8xMDMiLCJoYXNoIiwiZXF1YWwiLCJ3MiIsIncxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJtZW1fMDA1IiwiZG9jXzAwNyIsImR1cGxpY2F0ZXNfMDA5IiwiZXh0cmFfMDEwIiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxMyIsImZpZWxkX25hbWVfMDExIiwidGFpbF8wMTgiLCJmaWVsZF9zZXhwXzAxMiQyIiwiZmllbGRfc2V4cF8wMTIiLCJ4XzAxOSIsImZpZWxkX3NleHBfMDEyJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTIkMSIsImRvY18wMDgiLCJtZW1fMDA2Iiwib2ZfYW5ub3RfMDIwIiwic2V4cF8wMjUiLCJ0YWdfMDI2Iiwic2V4cF9hcmdzXzAzOSIsInJlczBfMDQxIiwic2V4cF9hcmdzXzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4Iiwic2V4cF9hcmdzXzAzMiIsImFyZzFfMDM0IiwiYXJnMF8wMzMiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJ0X29mX3NleHAkMSIsInRfb2Zfc2V4cCQyIiwib2ZfYW5ub3RfMDgxIiwic2V4cF8wODMiLCJmaWVsZF9zZXhwc18wODQiLCJtZW1fMDg1IiwiZG9jXzA4NyIsImR1cGxpY2F0ZXNfMDg5IiwiZXh0cmFfMDkwIiwic2V4cF8wODMkMCIsImZpZWxkX3NleHBzXzA5MyIsImZpZWxkX25hbWVfMDkxIiwidGFpbF8wOTgiLCJmaWVsZF9zZXhwXzA5MiQyIiwiZmllbGRfc2V4cF8wOTIiLCJ4XzA5OSIsImZpZWxkX3NleHBfMDkyJDAiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTIkMSIsImZ2YWx1ZV8wOTQiLCJkb2NfMDg4IiwibWVtXzA4NiIsIm9mX2Fubm90XzEwMCIsInNleHBfMTA1IiwidGFnXzEwNiIsInNleHBfYXJnc18xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwic2V4cF9hcmdzXzEyNCIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4Iiwic2V4cF9hcmdzXzExMiIsImFyZzFfMTE0IiwiYXJnMF8xMTMiLCJyZXMwXzExNSIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzEzMSIsImFyZzFfMTMzIiwiYXJnMF8xMzIiLCJyZXMwXzEzNCIsInJlczFfMTM1Iiwic2V4cF9hcmdzXzEwNyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJvZl9hbm5vdF8xMzciLCJkb2NfMTQxIiwibWVtXzEzOSIsImFyZ18xNDIiLCJibmRzXzEzOCIsImFyZ18xNDAiLCJibmRzXzEzOCQwIiwib2ZfYW5ub3RfMTQzIiwiYXJnMF8xNDQiLCJyZXMwXzE0NSIsImFyZzFfMTQ3IiwiYXJnMF8xNDYiLCJyZXMwXzE0OCIsInJlczFfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzFfMTUzIiwiYXJnMF8xNTIiLCJyZXMwXzE1NCIsInJlczFfMTU1IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU4IiwicmVzMV8xNTkiLCJ0X29mX3QiLCJ0IiwiZG9jIiwiZmFpbCIsInNwYWNlIiwiaW5kZW50X2FuZF9hbGlnbiIsImhjYXQiLCJoY2F0cyIsImRvY3MiLCJoc2VwIiwiaHNlcHMiLCJ2c2VwIiwidnNlcHMiLCJjaG9pY2UiLCJjaG9pY2VzIiwibWFwX3QiLCJkIiwibWFwX2Fubm90IiwiZDIiLCJkMSIsImQkMCIsImQkMSIsImQyJDAiLCJkMSQwIiwiYWxsIiwibHMxIiwibHMyIiwibV91bmlvbiIsImNvc3RfdW5pb24iLCJjb3N0MiIsImNvc3QxIiwibGF5b3V0X29mX2RvYyIsImgiLCJwb3MkMCIsImtleSIsInZhbHVlIiwidmFsdWUkMCIsImNvc3QiLCJvdmVyZmxvdyIsInoiLCJsYXlvdXQxIiwibGF5b3V0MiIsImxheW91dHMiLCJwIiwiYyIsImwxJDAiLCJsYXlvdXRfb2ZfZG9jJDAiLCJ4X2Nvc3QiLCJ4X3BvcyIsInNleHBfYXJnc18wMTgiLCJhcmcwXzAxOSIsInJlczBfMDIwIiwicmVzMF8wMTUiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJvZl9hbm5vdF8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhbm5vdCQwIiwiYm94ZXMiLCJib3hlczEiLCJsZWFkaW5nJDAiLCJib3hlczIiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwicHBfc3ludGF4X3Jlc3VsdCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzaG93X3N5bnRheF9yZXN1bHQiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJlc3VsdHNfMDA0IiwicGVyY2VudGFnZV8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsInNleHBfb2Zfc3ludGF4X3Jlc3VsdCIsInBlcmNlbnRhZ2VfMDIyIiwicmVzdWx0c18wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInN5bnRheF9yZXN1bHRfb2ZfeW9qc29uIiwieW9qc29uIiwiZmllbGRfeW9qc29ucyIsInJlc3VsdHNfZmllbGQiLCJwZXJjZW50YWdlX2ZpZWxkIiwiZHVwbGljYXRlcyIsImV4dHJhIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInBlcmNlbnRhZ2VfdmFsdWUiLCJyZXN1bHRzX3ZhbHVlIiwieW9qc29uX29mX3N5bnRheF9yZXN1bHQiLCJ2X3BlcmNlbnRhZ2UiLCJ2X3Jlc3VsdHMiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJmaW5kX3Zhcl91cGF0IiwibmFtZSIsInVwYXQiLCJ1cGF0JDAiLCJ1cGF0JDEiLCJ1cDEiLCJ1cGF0JDIiLCJ1cGF0JDMiLCJ1cDEkMCIsInVwYXQkNCIsImwiLCJhY2MiLCJ1cCIsImZpbmRfaW5fbGV0IiwiZGVmIiwiZGVmJDAiLCJ1bCIsInBsIiwidWUiLCJkZWYkMiIsImRlZiQxIiwiZmluZF9mbiIsInVleHAiLCJ1ZXhwJDAiLCJsJDAiLCJib2R5JDAiLCJsJDEiLCJ1ZXhwJDEiLCJhcmdzIiwiZm4iLCJ1IiwidWV4cCQzIiwidTIiLCJ1MSQwIiwibCQyIiwidWwkMCIsInUxJDEiLCJ1MSIsInVleHAkMiIsImJvZHkiLCJsJDMiLCJ2YXJfbWVudGlvbl91cGF0IiwidmFyX21lbnRpb24iLCJwIiwiYm9keSQxIiwiYXJncyQwIiwidXMiLCJ1ZXhwJDUiLCJ1ZXhwJDYiLCJnIiwicGUiLCJlIiwidWV4cCQ3IiwidWV4cCQ0IiwidmFyX2FwcGxpZWQiLCJ4JDEiLCJ1MSQyIiwiaXNfcmVjdXJzaXZlIiwiZm5fYm9kaWVzIiwidGFpbF9jaGVjayIsInUyJDAiLCJ1MiQxIiwiaXNfdGFpbF9yZWN1cnNpdmUiLCJjaGVjayIsInByZWRpY2F0ZXMiLCJwcmVkIiwicmVzdWx0cyIsImxlbmd0aCIsInJlcyIsInBhc3NpbmciLCJwcF9wcmVkaWNhdGUiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsInNob3dfcHJlZGljYXRlIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDMwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInNleHBfYXJnc18wNDUiLCJhcmcwXzA0NiIsInJlczBfMDQ3Iiwic2V4cF9hcmdzXzAzNSIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwX2FyZ3NfMDQwIiwiYXJnMF8wNDEiLCJyZXMwXzA0MiIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wNDgiLCJyZXMwXzA0OSIsImFyZzBfMDUwIiwicmVzMF8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDE2IiwiZXJyb3Jfc291cmNlXzA0MSIsImVycm9yX3NvdXJjZV8wNTgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wODQiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8xMTMiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8yMDUiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8yMTIiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8yNDEiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8yNTQiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8yNzgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwicHBfd3JvbmdfaW1wbCIsInBvbHlfY29kZSIsInNob3dfd3JvbmdfaW1wbCIsIndyb25nX2ltcGxfb2Zfc2V4cCIsIm9mX2NvZGVfMDAxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJpbXBsXzAwNSIsImhpbnRfMDA3IiwiZHVwbGljYXRlc18wMDkiLCJleHRyYV8wMTAiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDEzIiwiZmllbGRfbmFtZV8wMTEiLCJ0YWlsXzAxOCIsImZpZWxkX3NleHBfMDEyJDIiLCJmaWVsZF9zZXhwXzAxMiIsInhfMDE5IiwiZmllbGRfc2V4cF8wMTIkMCIsImZ2YWx1ZV8wMTUiLCJmaWVsZF9zZXhwXzAxMiQxIiwiaGludF8wMDgiLCJpbXBsXzAwNiIsInNleHBfb2Zfd3JvbmdfaW1wbCIsIm9mX2NvZGVfMDIwIiwiaGludF8wMjQiLCJpbXBsXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImJuZHNfMDIxJDAiLCJ3cm9uZ19pbXBsX29mX3lvanNvbiIsIm9mX2NvZGUiLCJpbXBsX2ZpZWxkIiwiaGludF9maWVsZCIsImhpbnRfdmFsdWUiLCJpbXBsX3ZhbHVlIiwieW9qc29uX29mX3dyb25nX2ltcGwiLCJ2X2hpbnQiLCJ2X2ltcGwiLCJwcF9oaWRkZW5fdGVzdHMiLCJzaG93X2hpZGRlbl90ZXN0cyIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMjYiLCJmaWVsZF9zZXhwc18wMjkiLCJ0ZXN0c18wMzAiLCJoaW50c18wMzIiLCJkdXBsaWNhdGVzXzAzNCIsImV4dHJhXzAzNSIsInNleHBfMDI4JDAiLCJmaWVsZF9zZXhwc18wMzgiLCJmaWVsZF9uYW1lXzAzNiIsInRhaWxfMDQzIiwiZmllbGRfc2V4cF8wMzckMiIsImZpZWxkX3NleHBfMDM3IiwieF8wNDQiLCJmaWVsZF9zZXhwXzAzNyQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM3JDEiLCJmdmFsdWVfMDM5IiwiaGludHNfMDMzIiwidGVzdHNfMDMxIiwic2V4cF9vZl9oaWRkZW5fdGVzdHMiLCJvZl9jb2RlXzA0NSIsImhpbnRzXzA0OSIsInRlc3RzXzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwiaGlkZGVuX3Rlc3RzX29mX3lvanNvbiIsInRlc3RzX2ZpZWxkIiwiaGludHNfZmllbGQiLCJoaW50c192YWx1ZSIsInRlc3RzX3ZhbHVlIiwieW9qc29uX29mX2hpZGRlbl90ZXN0cyIsInZfaGludHMiLCJ2X3Rlc3RzIiwicHBfaGludCIsInNob3dfaGludCIsImhpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaGludCIsImhpbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpbnQiLCJwcF9zeW50YXhfdGVzdCIsInNob3dfc3ludGF4X3Rlc3QiLCJhMSIsInN5bnRheF90ZXN0X29mX3NleHAiLCJzZXhwXzA1NyIsImFyZzFfMDU0IiwiYXJnMF8wNTMiLCJyZXMxXzA1NiIsInNleHBfb2Zfc3ludGF4X3Rlc3QiLCJhcmcxXzA2MCIsImFyZzBfMDU5IiwicmVzMF8wNjEiLCJyZXMxXzA2MiIsInN5bnRheF90ZXN0X29mX3lvanNvbiIsInYxIiwidjEkMCIsInlvanNvbl9vZl9zeW50YXhfdGVzdCIsInBwX3N5bnRheF90ZXN0cyIsInNob3dfc3ludGF4X3Rlc3RzIiwic3ludGF4X3Rlc3RzX29mX3NleHAiLCJ4XzA2NCIsInNleHBfb2Zfc3ludGF4X3Rlc3RzIiwieF8wNjUiLCJzeW50YXhfdGVzdHNfb2ZfeW9qc29uIiwidCIsInlvanNvbl9vZl9zeW50YXhfdGVzdHMiLCJ2IiwicHBfeW91cl90ZXN0cyIsInNob3dfeW91cl90ZXN0cyIsInlvdXJfdGVzdHNfb2Zfc2V4cCIsIm9mX2NvZGVfMDY2Iiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJ0ZXN0c18wNzAiLCJyZXF1aXJlZF8wNzIiLCJwcm92aWRlZF8wNzQiLCJkdXBsaWNhdGVzXzA3NiIsImV4dHJhXzA3NyIsInNleHBfMDY4JDAiLCJmaWVsZF9zZXhwc18wODAiLCJmaWVsZF9uYW1lXzA3OCIsInRhaWxfMDg2IiwiZmllbGRfc2V4cF8wNzkkMyIsImZpZWxkX3NleHBfMDc5IiwieF8wODciLCJmaWVsZF9zZXhwXzA3OSQwIiwiZnZhbHVlXzA4MyIsImZpZWxkX3NleHBfMDc5JDEiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMiIsImZ2YWx1ZV8wODEiLCJwcm92aWRlZF8wNzUiLCJyZXF1aXJlZF8wNzMiLCJ0ZXN0c18wNzEiLCJzZXhwX29mX3lvdXJfdGVzdHMiLCJvZl9jb2RlXzA4OCIsInByb3ZpZGVkXzA5NCIsInJlcXVpcmVkXzA5MiIsInRlc3RzXzA5MCIsImFyZ18wOTUiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJ5b3VyX3Rlc3RzX29mX3lvanNvbiIsInJlcXVpcmVkX2ZpZWxkIiwicHJvdmlkZWRfZmllbGQiLCJmdmFsdWUkMSIsInByb3ZpZGVkX3ZhbHVlIiwicmVxdWlyZWRfdmFsdWUiLCJ5b2pzb25fb2ZfeW91cl90ZXN0cyIsInZfcHJvdmlkZWQiLCJ2X3JlcXVpcmVkIiwiYXJnJDEiLCJibmRzJDEiLCJwcF9wb2ludF9kaXN0cmlidXRpb24iLCJzaG93X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwic2V4cF8wOTciLCJmaWVsZF9zZXhwc18wOTgiLCJ0ZXN0X3ZhbGlkYXRpb25fMDk5IiwibXV0YXRpb25fdGVzdGluZ18xMDEiLCJpbXBsX2dyYWRpbmdfMTAzIiwiZHVwbGljYXRlc18xMDUiLCJleHRyYV8xMDYiLCJzZXhwXzA5NyQwIiwiZmllbGRfc2V4cHNfMTA5IiwiZmllbGRfbmFtZV8xMDciLCJ0YWlsXzExNSIsImZpZWxkX3NleHBfMTA4JDMiLCJmaWVsZF9zZXhwXzEwOCIsInhfMTE2IiwiZmllbGRfc2V4cF8xMDgkMCIsImZ2YWx1ZV8xMTIiLCJmaWVsZF9zZXhwXzEwOCQxIiwiZnZhbHVlXzExMSIsImZpZWxkX3NleHBfMTA4JDIiLCJmdmFsdWVfMTEwIiwiaW1wbF9ncmFkaW5nXzEwNCIsIm11dGF0aW9uX3Rlc3RpbmdfMTAyIiwidGVzdF92YWxpZGF0aW9uXzEwMCIsInNleHBfb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwiaW1wbF9ncmFkaW5nXzEyMiIsIm11dGF0aW9uX3Rlc3RpbmdfMTIwIiwidGVzdF92YWxpZGF0aW9uXzExOCIsImFyZ18xMjMiLCJibmRzXzExNyIsImFyZ18xMjEiLCJibmRzXzExNyQwIiwiYXJnXzExOSIsImJuZHNfMTE3JDEiLCJwb2ludF9kaXN0cmlidXRpb25fb2ZfeW9qc29uIiwidGVzdF92YWxpZGF0aW9uX2ZpZWxkIiwibXV0YXRpb25fdGVzdGluZ19maWVsZCIsImltcGxfZ3JhZGluZ19maWVsZCIsImltcGxfZ3JhZGluZ192YWx1ZSIsIm11dGF0aW9uX3Rlc3RpbmdfdmFsdWUiLCJ0ZXN0X3ZhbGlkYXRpb25fdmFsdWUiLCJ5b2pzb25fb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwidl9pbXBsX2dyYWRpbmciLCJ2X211dGF0aW9uX3Rlc3RpbmciLCJ2X3Rlc3RfdmFsaWRhdGlvbiIsInZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiIsImltcGxfZ3JhZGluZyIsIm11dGF0aW9uX3Rlc3RpbmciLCJ0ZXN0X3ZhbGlkYXRpb24iLCJwcF9wIiwic2hvd19wIiwicF9vZl9zZXhwIiwib2ZfY29kZV8xMjQiLCJzZXhwXzEyNiIsImZpZWxkX3NleHBzXzEyNyIsInRpdGxlXzEyOCIsInZlcnNpb25fMTMwIiwibW9kdWxlX25hbWVfMTMyIiwicHJvbXB0XzEzNCIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xMzYiLCJwcmVsdWRlXzEzOCIsImNvcnJlY3RfaW1wbF8xNDAiLCJ5b3VyX3Rlc3RzXzE0MiIsInlvdXJfaW1wbF8xNDQiLCJoaWRkZW5fYnVnc18xNDYiLCJoaWRkZW5fdGVzdHNfMTQ4Iiwic3ludGF4X3Rlc3RzXzE1MCIsImR1cGxpY2F0ZXNfMTUyIiwiZXh0cmFfMTUzIiwiaXRlcl8xNzAiLCJzZXhwXzEyNiQwIiwiZmllbGRfc2V4cHNfMTU2IiwiZmllbGRfbmFtZV8xNTQiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTU1JDEyIiwiZmllbGRfc2V4cF8xNTUiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTU1JDAiLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTUkMSIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1NSQyIiwiZnZhbHVlXzE2NyIsImZpZWxkX3NleHBfMTU1JDMiLCJmdmFsdWVfMTY4IiwiZmllbGRfc2V4cF8xNTUkNCIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NSQ1IiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU1JDYiLCJmdmFsdWVfMTYzIiwiZmllbGRfc2V4cF8xNTUkNyIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NSQ4IiwiZnZhbHVlXzE2NiIsImZpZWxkX3NleHBfMTU1JDkiLCJmdmFsdWVfMTU4IiwiZmllbGRfc2V4cF8xNTUkMTAiLCJmdmFsdWVfMTU5IiwiZmllbGRfc2V4cF8xNTUkMTEiLCJmdmFsdWVfMTYyIiwic3ludGF4X3Rlc3RzXzE1MSIsImhpZGRlbl90ZXN0c18xNDkiLCJoaWRkZW5fYnVnc18xNDciLCJ5b3VyX2ltcGxfMTQ1IiwieW91cl90ZXN0c18xNDMiLCJjb3JyZWN0X2ltcGxfMTQxIiwicHJlbHVkZV8xMzkiLCJwb2ludF9kaXN0cmlidXRpb25fMTM3IiwicHJvbXB0XzEzNSIsIm1vZHVsZV9uYW1lXzEzMyIsInZlcnNpb25fMTMxIiwidGl0bGVfMTI5Iiwic2V4cF9vZl9wIiwib2ZfY29kZV8xNzMiLCJzeW50YXhfdGVzdHNfMTk3IiwiaGlkZGVuX3Rlc3RzXzE5NSIsImhpZGRlbl9idWdzXzE5MyIsInlvdXJfaW1wbF8xOTEiLCJ5b3VyX3Rlc3RzXzE4OSIsImNvcnJlY3RfaW1wbF8xODciLCJwcmVsdWRlXzE4NSIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xODMiLCJwcm9tcHRfMTgxIiwibW9kdWxlX25hbWVfMTc5IiwidmVyc2lvbl8xNzciLCJ0aXRsZV8xNzUiLCJhcmdfMTk4IiwiYm5kc18xNzQiLCJhcmdfMTk2IiwiYm5kc18xNzQkMCIsImFyZ18xOTQiLCJibmRzXzE3NCQxIiwiYXJnXzE5MiIsImJuZHNfMTc0JDIiLCJhcmdfMTkwIiwiYm5kc18xNzQkMyIsImFyZ18xODgiLCJibmRzXzE3NCQ0IiwiYXJnXzE4NiIsImJuZHNfMTc0JDUiLCJhcmdfMTg0IiwiYm5kc18xNzQkNiIsImFyZ18xODIiLCJibmRzXzE3NCQ3IiwiYXJnXzE4MCIsImJuZHNfMTc0JDgiLCJhcmdfMTc4IiwiYm5kc18xNzQkOSIsImFyZ18xNzYiLCJibmRzXzE3NCQxMCIsInBfb2ZfeW9qc29uIiwidGl0bGVfZmllbGQiLCJ2ZXJzaW9uX2ZpZWxkIiwibW9kdWxlX25hbWVfZmllbGQiLCJwcm9tcHRfZmllbGQiLCJwb2ludF9kaXN0cmlidXRpb25fZmllbGQiLCJwcmVsdWRlX2ZpZWxkIiwiY29ycmVjdF9pbXBsX2ZpZWxkIiwieW91cl90ZXN0c19maWVsZCIsInlvdXJfaW1wbF9maWVsZCIsImhpZGRlbl9idWdzX2ZpZWxkIiwiaGlkZGVuX3Rlc3RzX2ZpZWxkIiwic3ludGF4X3Rlc3RzX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJmdmFsdWUkOSIsImZ2YWx1ZSQxMCIsInN5bnRheF90ZXN0c192YWx1ZSIsImhpZGRlbl90ZXN0c192YWx1ZSIsImhpZGRlbl9idWdzX3ZhbHVlIiwieW91cl9pbXBsX3ZhbHVlIiwieW91cl90ZXN0c192YWx1ZSIsImNvcnJlY3RfaW1wbF92YWx1ZSIsInByZWx1ZGVfdmFsdWUiLCJwb2ludF9kaXN0cmlidXRpb25fdmFsdWUiLCJwcm9tcHRfdmFsdWUiLCJtb2R1bGVfbmFtZV92YWx1ZSIsInZlcnNpb25fdmFsdWUiLCJ0aXRsZV92YWx1ZSIsInlvanNvbl9vZl9wIiwidl9zeW50YXhfdGVzdHMiLCJ2X2hpZGRlbl90ZXN0cyIsInZfaGlkZGVuX2J1Z3MiLCJ2X3lvdXJfaW1wbCIsInZfeW91cl90ZXN0cyIsInZfY29ycmVjdF9pbXBsIiwidl9wcmVsdWRlIiwidl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X3Byb21wdCIsInZfbW9kdWxlX25hbWUiLCJ2X3ZlcnNpb24iLCJ2X3RpdGxlIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiYXJnJDgiLCJibmRzJDgiLCJhcmckOSIsImJuZHMkOSIsImFyZyQxMCIsImJuZHMkMTAiLCJwcF9rZXkiLCJzaG93X2tleSIsImtleV9vZl9zZXhwIiwic2V4cF8yMDQiLCJhcmcxXzIwMSIsImFyZzBfMjAwIiwicmVzMF8yMDIiLCJyZXMxXzIwMyIsInNleHBfb2Zfa2V5IiwiYXJnMV8yMDciLCJhcmcwXzIwNiIsInJlczBfMjA4IiwicmVzMV8yMDkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBwX3BvcyIsInNob3dfcG9zIiwicG9zX29mX3NleHAiLCJzZXhwXzIxNCIsInRhZ18yMTUiLCJzZXhwX2FyZ3NfMjE2IiwiYXJnMF8yMTciLCJyZXMwXzIxOCIsInNleHBfb2ZfcG9zIiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsInBvc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9zIiwicHBfc3BlYyIsInNob3dfc3BlYyIsInNwZWNfb2Zfc2V4cCIsInhfMjIyIiwic2V4cF9vZl9zcGVjIiwieF8yMjMiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwicHBfdHJhbnNpdGlvbmFyeV9zcGVjIiwic2hvd190cmFuc2l0aW9uYXJ5X3NwZWMiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2Zfc2V4cCIsInhfMjI1Iiwic2V4cF9vZl90cmFuc2l0aW9uYXJ5X3NwZWMiLCJ4XzIyNiIsInRyYW5zaXRpb25hcnlfc3BlY19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwibWFwIiwiZiIsIndyb25nX2ltcGwiLCJwcF9lZHMiLCJzaG93X2VkcyIsImVkc19vZl9zZXhwIiwieF8yMjgiLCJzZXhwX29mX2VkcyIsInhfMjI5IiwiZWRzX29mX3lvanNvbiIsInlvanNvbl9vZl9lZHMiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF8yMzEiLCJmaWVsZF9zZXhwc18yMzIiLCJlZHNfMjMzIiwiZHVwbGljYXRlc18yMzUiLCJleHRyYV8yMzYiLCJzZXhwXzIzMSQwIiwiZmllbGRfc2V4cHNfMjM5IiwiZmllbGRfbmFtZV8yMzciLCJ0YWlsXzI0MyIsInhfMjQ0IiwiZmllbGRfc2V4cF8yMzgiLCJmdmFsdWVfMjQwIiwiZWRzXzIzNCIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMjQ2IiwiYXJnXzI0NyIsImJuZHNfMjQ1Iiwic3RhdGVfb2ZfeW9qc29uIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJrZXlfb2Zfc3RhdGUiLCJlZHMiLCJwcF9wZXJzaXN0ZW50X3N0YXRlIiwic2hvd19wZXJzaXN0ZW50X3N0YXRlIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwieF8yNTUiLCJzZXhwXzI1MyIsImFyZzFfMjUwIiwiYXJnMF8yNDkiLCJyZXMwXzI1MSIsInJlczFfMjUyIiwic2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlIiwieF8yNjAiLCJhcmcxXzI1NyIsImFyZzBfMjU2IiwicmVzMF8yNTgiLCJyZXMxXzI1OSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJtYWluX2VkaXRvcl9vZl9zdGF0ZSIsInNlbGVjdGlvbiIsImkiLCJwdXRfbWFpbl9lZGl0b3IiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJzdGF0ZSIsImlkeF9vZl9wb3MiLCJwb3MiLCJwb3Nfb2ZfaWR4IiwiaWR4IiwiemlwcGVyX29mX2NvZGUiLCJjb2RlIiwiemlwcGVyIiwidHJhbnNpdGlvbiIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInRlc3RzIiwieW91cl90ZXN0cyQwIiwieW91cl9pbXBsJDAiLCJoaW50IiwiaW1wbCIsImltcGwkMCIsImhpZGRlbl9idWdzJDAiLCJoaW50cyIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiIsImVkc19vZl9zcGVjIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsImluc3RydWN0b3JfbW9kZSIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwid3JhcCIsInRlcm1fb2YiLCJzdGl0Y2gzIiwiZWQxIiwiZWQyIiwiZWQzIiwic3RpdGNoX3Rlcm0iLCJpbnN0cnVjdG9yIiwieW91cl9pbXBsX3Rlcm0iLCJwcmVsdWRlX3Rlcm0iLCJ1c2VyX2ltcGxfdGVybSIsInRlc3RfdmFsaWRhdGlvbl90ZXJtIiwidXNlcl90ZXN0c190ZXJtIiwiaGlkZGVuX3Rlc3RzX3Rlcm0iLCJzdGl0Y2hfdGVybSQwIiwic3RpdGNoX3N0YXRpYyIsInNldHRpbmdzIiwibWsiLCJ0ZXJtX3JhbmdlcyIsImluZm9fbWFwIiwic3RpdGNoX3N0YXRpYyQwIiwiaGlkZGVuX2J1Z3Nfa2V5Iiwia2V5X2Zvcl9zdGF0aWNzIiwic3BsaWNlZF9lbGFicyIsInVzZXJfdGVzdHMiLCJ1c2VyX2ltcGwiLCJlbGFiIiwicyIsImhpZGRlbl9idWciLCJta19zdGF0aWNzIiwic3RpdGNoZWQiLCJlbXB0eSIsInN0YXRpY3Nfb25seSIsInN0aXRjaF9keW5hbWljIiwicmVzdWx0X29mIiwicmVzdWx0cyQwIiwidGVzdF92YWxpZGF0aW9uJDAiLCJ1c2VyX2ltcGwkMCIsInVzZXJfdGVzdHMkMCIsImluc3RydWN0b3IkMCIsInN0YXRpY3NfaXRlbSIsInN0aXRjaF9keW5hbWljJDAiLCJlZGl0b3JfcHAiLCJzZXJpYWxpemF0aW9uIiwiZXhwb3J0X21vZHVsZSIsInJlY29yZCIsImRhdGEiLCJ0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCIsImV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSIsImV4cG9ydF9ncmFkaW5nX21vZHVsZSIsImhlYWRlciIsImJsYW5rX3NwZWMiLCJyZXF1aXJlZF90ZXN0cyIsInByb3ZpZGVkX3Rlc3RzIiwibnVtX3dyb25nX2ltcGxzIiwicHBfZXhlcmNpc2VfZXhwb3J0Iiwic2hvd19leGVyY2lzZV9leHBvcnQiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInNleHBfMjYyIiwiZmllbGRfc2V4cHNfMjYzIiwiY3VyX2V4ZXJjaXNlXzI2NCIsImV4ZXJjaXNlX2RhdGFfMjY2IiwiZHVwbGljYXRlc18yNjgiLCJleHRyYV8yNjkiLCJzZXhwXzI2MiQwIiwiZmllbGRfc2V4cHNfMjcyIiwiZmllbGRfbmFtZV8yNzAiLCJ0YWlsXzI4MiIsImZpZWxkX3NleHBfMjcxJDIiLCJmaWVsZF9zZXhwXzI3MSIsInhfMjgzIiwiZmllbGRfc2V4cF8yNzEkMCIsInNleHBfMjc3IiwiYXJnMV8yNzQiLCJhcmcwXzI3MyIsInJlczBfMjc1IiwicmVzMV8yNzYiLCJmdmFsdWVfMjc5IiwiZmllbGRfc2V4cF8yNzEkMSIsImZ2YWx1ZV8yODAiLCJleGVyY2lzZV9kYXRhXzI2NyIsImN1cl9leGVyY2lzZV8yNjUiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMjg3IiwiY3VyX2V4ZXJjaXNlXzI4NSIsImJuZHNfMjg0IiwiYXJnMV8yOTAiLCJhcmcwXzI4OSIsInJlczBfMjkxIiwicmVzMV8yOTIiLCJhcmdfMjg4IiwiYm5kc18yODQkMCIsImFyZ18yODYiLCJibmRzXzI4NCQxIiwiZXhlcmNpc2VfZXhwb3J0X29mX3lvanNvbiIsImN1cl9leGVyY2lzZV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfZmllbGQiLCJleGVyY2lzZV9kYXRhX3ZhbHVlIiwiY3VyX2V4ZXJjaXNlX3ZhbHVlIiwieW9qc29uX29mX2V4ZXJjaXNlX2V4cG9ydCIsInZfZXhlcmNpc2VfZGF0YSIsInZfY3VyX2V4ZXJjaXNlIiwic2VyaWFsaXplX2V4ZXJjaXNlIiwiZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwcF9wZXJjZW50YWdlIiwic2hvd19wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl9zZXhwIiwic2V4cF9vZl9wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyY2VudGFnZSIsInBwX3BvaW50cyIsInNob3dfcG9pbnRzIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwicHBfc2NvcmUiLCJzaG93X3Njb3JlIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJwZXJjZW50YWdlIiwicmVwb3J0IiwibnVtX3Rlc3RzIiwicmVxdWlyZWQiLCJwcm92aWRlZCIsIm51bV9wYXNzaW5nIiwidGVzdF9zdW1tYXJ5X3N0ciIsImhpZGRlbl9idWdfc3RhdHVzIiwidGVzdF92YWxpZGF0aW9uX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEkMCIsInRlc3RfdmFsaWRhdGlvbl9kYXRhJDAiLCJ2YWxpZGF0aW9uX3Rlc3RfbWFwIiwiaGlkZGVuX2J1Z190ZXN0X21hcCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwiZm91bmQiLCJtayQwIiwiaGlkZGVuX2J1Z3Nfc3RhdGUiLCJwZXJjZW50YWdlJDAiLCJudW1fcGFzc2VkIiwic3VtbWFyeV9zdHIiLCJ0b3RhbCIsIm1rJDEiLCJoIiwic3ludGF4X3Jlc3VsdHMiLCJyIiwibWskMiIsInRlc3RfcmVzdWx0cyQwIiwic3RhdHVzZXMiLCJoaW50ZWRfcmVzdWx0cyIsInBlcmNlbnRhZ2UkMSIsInN5bnRheF9yZXBvcnQiLCJ0ZXN0X3N1bW1hcnlfc3RyJDAiLCJtayQzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJvdmVyYWxsX3Njb3JlIiwiaW1wbF9ncmFkaW5nX3JlcG9ydCIsIm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0IiwidGVzdF92YWxpZGF0aW9uX3JlcG9ydCIsInR2X21heCIsInR2X3BvaW50cyIsIm10X21heCIsIm10X3BvaW50cyIsImlnX21heCIsImlnX3BvaW50cyIsInRvdGFsX3BvaW50cyIsIm91dHB1dF9oZWFkZXIiLCJERUJVRyIsIk9NRF9ERUJVRyIsImRlYnVnIiwid2FybiIsIm9wdCIsIm1zZyIsInN0aCIsIndlIiwidHJhY2tmaXgiLCJyYWlzZSIsImUiLCJvZl9saXN0IiwibCIsInIiLCJmc3BsaXRfcmV2IiwiZXhjbCIsImFjY3UiLCJsJDAiLCJ0bCIsInJpZ2h0IiwibGVmdCQwIiwidGwkMCIsImxlZnQiLCJyaWdodCQwIiwibGVmdCQyIiwidGwkMSIsImxlZnQkMSIsImZzcGxpdCIsImYiLCJyZXYiLCJpZF9vZl9zdHJpbmciLCJpZHMiLCJzIiwibiIsIm91dCIsInN0YXJ0ZWQiLCJpIiwiYyIsImkkMiIsImkkMCIsImkkMSIsInMkMCIsImkkNCIsImxhc3RfdHJhaWxpbmciLCJpJDMiLCJodG1sZW50aXRpZXMiLCJtZCIsImIiLCJqJDEiLCJqIiwiaiQwIiwiaiQ0IiwiaiQyIiwiaiQzIiwibWluaW1hbGl6ZV9ibGFua3MiLCJmJDAiLCJlYXQiLCJleHRyYWN0X2h0bWxfYXR0cmlidXRlcyIsImh0bWwiLCJodG1sJDAiLCJjdXRfb25fY2hhcl9mcm9tIiwicmVtb3ZlX3ByZWZpeF9zcGFjZXMiLCJodG1sJDIiLCJyZXMiLCJhZnRlcl9lcSIsIm5hbWUiLCJuYW1lJDAiLCJhZnRlcl9lcSQwIiwicmVzdCIsInZhbHVlIiwibmV3X3MiLCJhIiwicmVzJDAiLCJodG1sJDEiLCJleHRyYWN0X2lubmVyX2h0bWwiLCJwIiwiaHRtbF92b2lkX2VsZW1lbnRzIiwic3ltYm9sIiwibDEiLCJsMiIsInNlbGZfMSIsImxuIiwidGl0bGUiLCJ1cmwiLCJsb29zZV9jb21wYXJlIiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwiZTEiLCJ0bDIkMCIsImUyJDAiLCJ0bDEkMCIsImUxJDAiLCJ0bDIiLCJlMiIsInRsMSIsInRsMiQxIiwiZTIkMSIsInRsMSQxIiwiZTEkMSIsInRsMSQyIiwiYzEiLCJ0bDIkMiIsImMyIiwiaSQ1IiwidGwxJDMiLCJ0aXRsZTEiLCJ0MSQxIiwiaHJlZjEiLCJ0bDIkMyIsInRpdGxlMiIsInQyJDEiLCJocmVmMiIsImkkNiIsImkkNyIsImkkOCIsInRsMiQ0IiwiZmFsbGJhY2syIiwieDIiLCJuYW1lMiIsInJlZl9jb250YWluZXIyIiwidGwxJDQiLCJmYWxsYmFjazEiLCJ4MSIsIm5hbWUxIiwicmVmX2NvbnRhaW5lcjEiLCJlMSQyIiwidGwyJDUiLCJlMiQyIiwidGwxJDUiLCJpJDExIiwiaSQxMiIsImkkOSIsImNmZiIsImkkMTAiLCJsMSQwIiwibDIkMCIsInRsMiQ2IiwiZTIkMyIsInRsMSQ2IiwiZTEkMyIsImkkMTMiLCJzZWxmXzIiLCJlbXB0eV9leHRlbnNpb24iLCJub3JtYWxpc2VfbWQiLCJsb29wIiwidiIsInRsJDIiLCJ2JDAiLCJ0bCQzIiwidiQxIiwidGwkNCIsInYkMiIsInRsJDUiLCJ2JDMiLCJ0bCQ2IiwidiQ0IiwidGwkNyIsInYkNSIsInRsJDEwIiwidGwkOSIsInRsJDgiLCJ0bCQxMSIsInRsJDEyIiwidiQ2IiwidGwkMTMiLCJ2JDciLCJ0bCQxNCIsInYkOCIsInRsJDE1IiwidiQ5IiwidGwkMTYiLCJ2JDEwIiwidGwkMTciLCJ2JDExIiwidGwkMTgiLCJ2JDEyIiwiaHJlZiIsInRsJDE5IiwidiQxMyIsInNlbGZfMyIsInZpc2l0IiwibCQxIiwibCQyIiwibCQzIiwibCQ0IiwibCQ1IiwibCQ2IiwibCQ3IiwibCQ4IiwibCQ5IiwibCQxMCIsImwkMTEiLCJsJDEyIiwibCQxMyIsImwkMTQiLCJsJDE1IiwibCQxNiIsImwkMTciLCJsJDE4IiwibCQxOSIsInRsJDIwIiwibCQyMCIsInRsJDIxIiwibCQyMSIsInRsJDIyIiwibCQyMiIsInRsJDIzIiwibCQyMyIsInRsJDI0IiwibCQyNCIsInRsJDI1IiwibCQyNSIsInRsJDI2IiwibCQyNiIsInRsJDI3IiwibCQyNyIsInRsJDI4IiwibCQyOCIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJ0ZXh0X29mX21kIiwibWQkMCIsInQiLCJtZCQxIiwibWQkMiIsImMkMCIsImJvZHkiLCJib2R5JDAiLCJ0JDAiLCJ0JDEiLCJxIiwiYWx0IiwiaXRlbSIsImRlZmF1bHRfY29kZV9zdHlsaXN0IiwibGFuZyIsImNvZGUiLCJmaWx0ZXJfdGV4dF9vbWRfcmV2IiwicmVtb3ZlX2xpbmtzIiwiaHRtbF9hbmRfaGVhZGVyc19vZl9tZCIsInN0cmluZ19vZl9hdHRycyIsImh0bWxfb2ZfbWQiLCJoZWFkZXJzX29mX21kIiwicmVtb3ZlX2hlYWRlcl9saW5rcyIsInN0aCQwIiwib3ZlcnJpZGUiLCJzdGgkMSIsInBpbmRlbnQiLCJzdGgkMiIsIm5sMmJyIiwic3RoJDMiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJtZCQzIiwibWQkNCIsImUkMiIsIm1kJDUiLCJlJDMiLCJzJDMiLCJpaCQwIiwiaWQkMCIsIm1kJDYiLCJtZCQ3IiwiZSQ0IiwibWQkOCIsImUkNSIsInMkNCIsImloJDEiLCJpZCQxIiwibWQkOSIsIm1kJDEwIiwiZSQ2IiwibWQkMTEiLCJlJDciLCJzJDUiLCJpaCQyIiwiaWQkMiIsIm1kJDEyIiwibWQkMTMiLCJlJDgiLCJtZCQxNCIsImUkOSIsInMkNiIsImloJDMiLCJpZCQzIiwibWQkMTUiLCJtZCQxNiIsImUkMTAiLCJtZCQxNyIsImUkMTEiLCJzJDciLCJpaCQ0IiwiaWQkNCIsIm1kJDE4IiwicyQ4IiwicyQ5IiwicyQxMCIsIm1kJDE5IiwicyQxMSIsIm1kJDIwIiwicyQxMiIsInMkMTQiLCJuZXdfYyIsImxhbmckMCIsInMkMTUiLCJuZXdfYyQwIiwicyQxNiIsInMkMTciLCJzJDE4IiwiZmFsbGJhY2siLCJ0ZXh0IiwicmMiLCJzJDE5IiwidGl0bGUkMCIsImhyZWYkMCIsImZhbGxiYWNrJDAiLCJyYyQwIiwicyQyMCIsInRpdGxlJDEiLCJzcmMiLCJ0YWduYW1lIiwiYXR0cnMkMSIsImF0dHJzJDIiLCJzJDIyIiwiYXR0cnMiLCJhdHRycyQwIiwicyQyMSIsImF0dHJzJDMiLCJ0YWduYW1lJDAiLCJhdHRycyQ0IiwicyQyMyIsInMkMjQiLCJzJDI1IiwicyQyNiIsInMkMjciLCJzJDI4IiwicyQyOSIsInMkMzAiLCJ0aXRsZSQyIiwic3JjJDAiLCJhbHQkMCIsInMkMzEiLCJ4IiwicyQzMiIsInMkMzMiLCJzJDEzIiwibGkiLCJjcyIsInNleHByX29mX21kIiwidGwkMjkiLCJ0bCQzMCIsImVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIiwibWFya2Rvd25fb2ZfbWQiLCJhZGRfc3BhY2VzIiwicmVmZXJlbmNlcyIsImxpc3RfaW5kZW50IiwiZnN0X3BfaW5fbGkiLCJpc19pbl9saXN0IiwibG9vcCQwIiwiZnN0X3BfaW5fbGkkMCIsImlzX2luX2xpc3QkMCIsImMkMSIsImMkMiIsImZpbHRlciIsImIkMSIsImIkMiIsIngkMCIsImhkIiwiYyQzIiwiZmlsdGVyJDAiLCJiJDMiLCJiJDQiLCJoZCQwIiwibiQwIiwib3V0cHV0X2luZGVudGVkX2Jsb2NrIiwicCQwIiwicCQxIiwibmVlZHNfbmV3bGluZXMiLCJhJDAiLCJiJDAiLCJubCIsIngkMSIsInN0cmluZ19vZl90b2tlbiIsIm4kMSIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJuJDE0IiwibiQxNSIsIm4kMTYiLCJuJDE3IiwibiQxOCIsIm4kMTkiLCJuJDIwIiwibiQyMSIsIm4kMjIiLCJuJDIzIiwibiQyNCIsIm4kMjUiLCJuJDI2IiwibiQyNyIsIm4kMjgiLCJuJDI5IiwibiQzMCIsIm4kMzEiLCJuJDMyIiwibiQzMyIsIm8iLCJsZW5ndGgiLCJzcGxpdF9maXJzdCIsImxleCIsInJlc3VsdCIsIndvcmQiLCJzdGFydCIsIm5fb2NjIiwiciQwIiwicm4iLCJ3IiwiZ2V0IiwibGVuZ3RoJDAiLCJzdWIiLCJhcnIiLCJwb3MiLCJsZW4iLCJsZXhfYmlnYXJyYXkiLCJtYWtlX3NwYWNlIiwic3RyaW5nX29mX3Rva2VucyIsImRlc3RyaW5nX29mX3Rva2VucyIsInRsaXN0IiwibGltaXQiLCJ0bGlzdCQwIiwidGxpc3QkMSIsInByZXZpb3VzIiwicHJldmlvdXMkMTEiLCJwcmV2aW91cyQxMCIsInByZXZpb3VzJDEzIiwicHJldmlvdXMkMTIiLCJwcmV2aW91cyQxNSIsInByZXZpb3VzJDE0IiwicHJldmlvdXMkMTciLCJwcmV2aW91cyQxNiIsInByZXZpb3VzJDE5IiwicHJldmlvdXMkMTgiLCJwcmV2aW91cyQyMSIsInByZXZpb3VzJDIwIiwicHJldmlvdXMkMjMiLCJwcmV2aW91cyQyMiIsInByZXZpb3VzJDI1IiwicHJldmlvdXMkMjQiLCJwcmV2aW91cyQyNyIsInByZXZpb3VzJDI2IiwicHJldmlvdXMkMjkiLCJwcmV2aW91cyQyOCIsInByZXZpb3VzJDMxIiwicHJldmlvdXMkMzAiLCJwcmV2aW91cyQzMyIsInByZXZpb3VzJDMyIiwicHJldmlvdXMkMzUiLCJwcmV2aW91cyQzNCIsInByZXZpb3VzJDM3IiwicHJldmlvdXMkMzYiLCJwcmV2aW91cyQzOSIsInByZXZpb3VzJDM4IiwicHJldmlvdXMkNDEiLCJwcmV2aW91cyQ0MCIsInByZXZpb3VzJDQzIiwicHJldmlvdXMkNDIiLCJwcmV2aW91cyQ5IiwicHJldmlvdXMkNDQiLCJwcmV2aW91cyQ0OCIsInByZXZpb3VzJDQ5IiwicHJldmlvdXMkNyIsInByZXZpb3VzJDYiLCJwcmV2aW91cyQ4IiwicHJldmlvdXMkNSIsInByZXZpb3VzJDQiLCJwcmV2aW91cyQzIiwicHJldmlvdXMkMiIsInByZXZpb3VzJDAiLCJwcmV2aW91cyQxIiwicHJldmlvdXMkNDciLCJwcmV2aW91cyQ0NiIsInByZXZpb3VzJDQ1IiwiaW5kZW50cyQxIiwiaW5kZW50cyQwIiwiaW5kZW50cyQyIiwiaW5kZW50cyIsImRlZmF1bHRfbGFuZyIsImV4dGVuc2lvbnMiLCJnaF91ZW1waF9vcl9ib2xkX3N0eWxlIiwiYmxpbmRfaHRtbCIsInN0cmljdF9odG1sIiwid2Fybl9lcnJvciIsImh0bWxjb2Rlc19zZXQiLCJpbmxpbmVfaHRtbHRhZ3Nfc2V0Iiwibm90aW5ib2R5dGFncyIsImh0bWx0YWdzX3NldCIsImZpeCIsImFjY3UkMCIsInRsJDMxIiwidGwkMzIiLCJ0bCQzMyIsInRsJDM0IiwidGwkMzUiLCJ0bCQzNiIsInRsJDM3IiwidGwkMzgiLCJ0bCQzOSIsInRsJDQwIiwidGwkNDEiLCJ0bCQ0MiIsInRsJDQzIiwidGwkNDQiLCJ0bCQ0NSIsInRsJDQ2IiwidGwkNDciLCJ0bCQ0OCIsInRsJDQ5IiwidGwkNTAiLCJ0bCQ1MSIsInRsJDUyIiwidGwkNTMiLCJ0bCQ1NCIsInRsJDU1IiwidGwkNTYiLCJ0bCQ1NyIsInRsJDU4IiwidGwkNTkiLCJ0bCQ2MCIsInRsJDYxIiwidGwkNjIiLCJ0bCQ2MyIsInRsJDY0IiwidGwkNjUiLCJ0bCQ2NiIsInRsJDY3IiwidGwkNjgiLCJ0bCQ2OSIsIm4kMzQiLCJ0bCQ3MCIsInRsJDcxIiwibiQzNSIsInRsJDcyIiwidGwkNzMiLCJuJDM2IiwidGwkNzQiLCJ0bCQ3NSIsIm4kMzciLCJ0bCQ3NiIsInRsJDc3IiwibiQzOCIsInRsJDc4IiwidGwkNzkiLCJuJDM5IiwidGwkODAiLCJ0bCQ4MSIsIm4kNDAiLCJ0bCQ4MiIsInRsJDgzIiwiYiQ1IiwibiQ0MSIsInRsJDg0IiwidGwkODUiLCJiJDYiLCJuJDQyIiwidGwkODYiLCJ0bCQ4NyIsImIkNyIsIm4kNDMiLCJ0bCQ4OCIsInRsJDg5IiwiYiQ4IiwibiQ0NCIsInRsJDkwIiwidGwkOTEiLCJiJDkiLCJuJDQ1IiwidGwkOTIiLCJ0bCQ5MyIsImIkMTAiLCJuJDQ2IiwidGwkOTQiLCJ0bCQ5NSIsImIkMTEiLCJuJDQ3IiwidGwkOTYiLCJ0bCQ5NyIsImIkMTIiLCJuJDQ4IiwidGwkOTgiLCJ0bCQ5OSIsImIkMTMiLCJuJDQ5IiwidGwkMTAwIiwidGwkMTAxIiwiYiQxNCIsIm4kNTAiLCJ0bCQxMDIiLCJ0bCQxMDMiLCJiJDE1IiwibiQ1MSIsInRsJDEwNCIsInRsJDEwNSIsImIkMTYiLCJuJDUyIiwidGwkMTA2IiwidGwkMTA3IiwiYiQxNyIsIm4kNTMiLCJ0bCQxMDgiLCJ0bCQxMDkiLCJiJDE4IiwibiQ1NCIsInRsJDExMCIsInRsJDExMSIsImIkMTkiLCJuJDU1IiwidGwkMTEyIiwidGwkMTEzIiwiYiQyMCIsIm4kNTYiLCJ0bCQxMTQiLCJ0bCQxMTUiLCJiJDIxIiwibiQ1NyIsInRsJDExNiIsInRsJDExNyIsImIkMjIiLCJuJDU4IiwidGwkMTE4IiwidGwkMTE5IiwiYiQyMyIsIm4kNTkiLCJ0bCQxMjAiLCJ0bCQxMjEiLCJiJDI0IiwibiQ2MCIsInRsJDEyMiIsInRsJDEyMyIsImIkMjUiLCJuJDYxIiwidGwkMTI0IiwidGwkMTI1IiwiYiQyNiIsIm4kNjIiLCJ0bCQxMjYiLCJ0bCQxMjciLCJiJDI3IiwibiQ2MyIsInRsJDEyOCIsInRsJDEyOSIsImIkMjgiLCJuJDY0IiwidGwkMTMwIiwidGwkMTMxIiwiYiQyOSIsIm4kNjUiLCJ0bCQxMzIiLCJ0bCQxMzMiLCJiJDMwIiwibiQ2NiIsInRsJDEzNCIsInRsJDEzNSIsImIkMzEiLCJuJDY3IiwidGwkMTM2IiwidGwkMTM3IiwiYiQzMiIsIm4kNjgiLCJ0bCQxMzgiLCJ0bCQxMzkiLCJiJDMzIiwicmVtb3ZlX2luaXRpYWxfbmV3bGluZXMiLCJtYWtlX3BhcmFncmFwaHMiLCJjcCQwIiwiY3AkNSIsImFjY3UkMTciLCJiMSIsImIyIiwiY2xlYW5fcGFyYWdyYXBocyIsImFzc2VydF93ZWxsX2Zvcm1lZCIsImV4dHJhY3RfZmFsbGJhY2siLCJtYWluX2xvb3AiLCJyZW1haW5zIiwiciQxIiwiYWNjdSQyIiwiciQyIiwibSIsImFjY3UkMyIsInVuaW5kZW50X3JldiIsImxleGVtZXMiLCJjbCQwIiwieSIsInVuaW5kZW50Iiwic25kIiwiZnN0IiwiaXNfYmxhbmsiLCJzZW1waF9vcl9ib2xkIiwic21fdWVtcGhfb3JfYm9sZCIsImdoX3VlbXBoX29yX2JvbGQiLCJ1ZW1waF9vcl9ib2xkIiwiZWF0X2JsYW5rIiwic2V0ZXh0X3RpdGxlIiwiZGV0ZWN0X2JhbGFuY2VkX2JxcyIsInIkMyIsInIkNCIsInIkNSIsInIkNiIsInIkNyIsImJsIiwiYmwkMCIsInRhZ19tYXliZV9oMSIsInRhZ19tYXliZV9oMiIsInRhZ19tZCIsInNlbGZfNCIsInRhZ19zZXRleHQiLCJwbCQwIiwicmxlZnQkMCIsInJpZ2h0JDEiLCJyaWdodCQyIiwicmxlZnQiLCJocl9tIiwiaHJfcyIsImhyIiwiYmNvZGUiLCJkZWZhdWx0X2xhbmckMCIsImFjY3UkMSIsImNiIiwiY29kZSQwIiwiY29kZSQyIiwiY29kZSQzIiwiY29kZSQxIiwiY2xlYW5fYmNvZGUiLCJjb2RlJDQiLCJyZWFkX3VudGlsX2d0IiwiYnEiLCJub19ubCIsImFjY3UkMTkiLCJhY2N1JDIwIiwieCQyIiwicmVhZF91bnRpbF9sdCIsImFjY3UkMTYiLCJyZWFkX3VudGlsX2NwYXJlbnRoIiwicmVhZF91bnRpbF9vcGFyZW50aCIsInJlYWRfdW50aWxfZHEiLCJyZWFkX3VudGlsX3EiLCJyZWFkX3VudGlsX29icmFja2V0IiwicmVhZF91bnRpbF9jYnJhY2tldCIsInJlYWRfdW50aWxfc3BhY2UiLCJyZWFkX3VudGlsX25ld2xpbmUiLCJyZWFkX3RpdGxlIiwiaCIsImgkMCIsIm1heWJlX2V4dGVuc2lvbiIsIm5wIiwibnIiLCJrIiwiZW1haWxzdHlsZV9xdW90aW5nIiwiYmxvY2skMCIsImNsJDIiLCJibG9jayIsIm1heWJlX3JlZmVyZW5jZSIsIm1heWJlX2RlZiIsInJlbWFpbnMkMCIsInJlbWFpbnMkMSIsInJlbWFpbnMkMiIsInVybCQwIiwidXJsJDEiLCJibGFuayIsImZsYWciLCJyZW1haW5zJDMiLCJ0ZXh0JDAiLCJmYWxsYmFjayQxIiwibWF5YmVfbGluayIsInJlYWRfdXJsIiwicl9jcCIsImxfY3AiLCJyX2RxIiwibF9kcSIsInJlc3QkMCIsImhhc19wYXJhZ3JhcGhzIiwicGFyc2VfbGlzdCIsImVuZF9vZl9pdGVtIiwic2VsZl82Iiwic2VsZl81IiwiYmxvY2skNSIsInJlc3QkNiIsImJsb2NrJDYiLCJyZXN0JDciLCJibG9jayQ3IiwicmVzdCQ1IiwiYmxvY2skOCIsInJlc3QkOSIsImJsb2NrJDkiLCJyZXN0JDEwIiwiYmxvY2skMTAiLCJyZXN0JDgiLCJyZXN0JDEiLCJibG9jayQxIiwiYmxvY2skMiIsInJlc3QkMyIsImJsb2NrJDMiLCJyZXN0JDQiLCJibG9jayQ0IiwicmVzdCQyIiwicmV2X3RvX3QiLCJhZGQiLCJzdWJsaXN0IiwiaXRlbXMiLCJpdGVtJDAiLCJtYWtlX3VwIiwiaXRlbXMkMCIsImxpc3RfaXRlbXMiLCJpbmRlbnRzJDMiLCJpbmRlbnRzJDQiLCJuZXdfaXRlbSQwIiwicCQyIiwiaXRlbXMkNSIsIml0ZW1zJDMiLCJpdGVtcyQ0IiwibmV3X2l0ZW0kMSIsInAkMyIsIml0ZW1zJDgiLCJpdGVtcyQ2Iiwic3VibGlzdCQwIiwiaXRlbXMkNyIsIm5ld19pdGVtIiwiaXRlbXMkMSIsIml0ZW1zJDIiLCJuZXdfaXRlbSQyIiwicCQ0IiwiaXRlbXMkOSIsIml0ZW1zJDEwIiwibmV3X2l0ZW0kMyIsInAkNSIsIml0ZW1zJDExIiwic3VibGlzdCQxIiwiaXRlbXMkMTIiLCJpdGVtcyQxMyIsImluZGVudHMkNSIsIm5ld19pdGVtJDQiLCJwJDYiLCJpdGVtcyQxNCIsInN1Ymxpc3QkMiIsIml0ZW1zJDE1IiwiaXRlbXMkMTYiLCJpbmRlbnRzJDYiLCJzdHJpbmdfb2ZfaXRlbXMiLCJpbmRlbnQkMCIsInJwIiwiaWNvZGUiLCJzZWxmXzciLCJkdW1teV90YWciLCJzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUiLCJzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW4iLCJuZXdsaW5lcyIsIm1heWJlX2F1dG9lbWFpbCIsImRvbWFpbiIsImVtYWlsIiwiaXNfaGV4IiwibWVkaWF0eXBldGV4dG9tZCIsIm1haW5faW1wbF9yZXYiLCJwcmV2aW91cyQ1MCIsInByZXZpb3VzJDUxIiwibGV4ZW1lcyQwIiwibGV4ZW1lcyQxIiwibGV4ZW1lcyQyIiwicHJldmlvdXMkNTIiLCJsZXhlbWVzJDMiLCJwcmV2aW91cyQ1MyIsImxleGVtZXMkNCIsInByZXZpb3VzJDU0IiwidyQwIiwibGV4ZW1lcyQ1IiwicHJldmlvdXMkNTUiLCJsZXhlbWVzJDYiLCJwcmV2aW91cyQ1NiIsInIkOCIsImxleGVtZXMkNyIsInByZXZpb3VzJDU3IiwiciQ5IiwidyQxIiwibGV4ZW1lcyQ4IiwiciQxMyIsInByZXZpb3VzJDU4IiwiciQxMCIsImxleGVtZXMkOSIsInByZXZpb3VzJDU5IiwiciQxMSIsImxleGVtZXMkMTAiLCJwcmV2aW91cyQ2MCIsInIkMTIiLCJsZXhlbWVzJDYxIiwiciQxMTYiLCJ0JDMiLCJsZXhlbWVzJDYyIiwicHJldmlvdXMkMTA3IiwiciQ2NSIsImxleGVtZXMkNjMiLCJwcmV2aW91cyQxMDgiLCJyJDY2IiwibGV4ZW1lcyQ2NCIsInByZXZpb3VzJDEwOSIsInIkNjciLCJsZXhlbWVzJDY1IiwicHJldmlvdXMkMTEwIiwiciQ2OCIsImxleGVtZXMkNjYiLCJwcmV2aW91cyQxMTEiLCJyJDY5IiwibGV4ZW1lcyQ2NyIsInByZXZpb3VzJDExMiIsInIkNzAiLCJsZXhlbWVzJDY4IiwicHJldmlvdXMkMTEzIiwiciQ3MSIsImxleGVtZXMkNjkiLCJwcmV2aW91cyQxMTQiLCJyJDcyIiwibGV4ZW1lcyQ3MCIsInByZXZpb3VzJDExNSIsInIkNzMiLCJsZXhlbWVzJDcxIiwicHJldmlvdXMkMTE2IiwiciQ3NCIsImxleGVtZXMkNzIiLCJwcmV2aW91cyQxMTciLCJyJDc1IiwibGV4ZW1lcyQ3MyIsInByZXZpb3VzJDExOCIsInIkNzYiLCJsZXhlbWVzJDc0IiwicHJldmlvdXMkMTE5IiwiciQ3NyIsImxleGVtZXMkNzUiLCJwcmV2aW91cyQxMjAiLCJyJDc4IiwibGV4ZW1lcyQ3NiIsInByZXZpb3VzJDEyMSIsInIkNzkiLCJsZXhlbWVzJDc3IiwicHJldmlvdXMkMTIyIiwiciQ4MCIsImxleGVtZXMkNzgiLCJwcmV2aW91cyQxMjMiLCJyJDgxIiwibGV4ZW1lcyQ3OSIsInIkODIiLCJsZXhlbWVzJDgwIiwiciQ4MyIsImxleGVtZXMkODEiLCJyJDg0IiwibGV4ZW1lcyQ4MiIsInIkODUiLCJsZXhlbWVzJDgzIiwiciQ4NiIsImxleGVtZXMkODQiLCJyJDg3IiwibGV4ZW1lcyQ4NSIsInIkODgiLCJsZXhlbWVzJDg2IiwiciQ4OSIsImxleGVtZXMkODciLCJyJDkwIiwibGV4ZW1lcyQ4OCIsInIkOTEiLCJsZXhlbWVzJDg5IiwiciQ5MiIsImxleGVtZXMkOTAiLCJyJDkzIiwibGV4ZW1lcyQ5MSIsInIkOTQiLCJsZXhlbWVzJDkyIiwiciQ5NSIsImxleGVtZXMkOTMiLCJyJDk2IiwibGV4ZW1lcyQ5NCIsInIkOTciLCJsZXhlbWVzJDk1IiwiciQ5OCIsImxleGVtZXMkOTYiLCJyJDk5IiwibGV4ZW1lcyQ5NyIsInIkMTAwIiwibGV4ZW1lcyQ5OCIsInIkMTAxIiwibGV4ZW1lcyQ5OSIsInIkMTAyIiwibGV4ZW1lcyQxMDAiLCJyJDEwMyIsImxleGVtZXMkMTAxIiwiciQxMDQiLCJsZXhlbWVzJDEwMiIsInIkMTA1IiwibGV4ZW1lcyQxMDMiLCJyJDEwNiIsImxleGVtZXMkMTA0IiwiciQxMDciLCJsZXhlbWVzJDEwNSIsInIkMTA4IiwibGV4ZW1lcyQxMDYiLCJyJDEwOSIsImxleGVtZXMkMTA3IiwiciQxMTAiLCJsZXhlbWVzJDEwOCIsInIkMTExIiwibGV4ZW1lcyQxMDkiLCJyJDExMiIsImxleGVtZXMkMTEwIiwiciQxMTMiLCJsZXhlbWVzJDExMSIsInIkMTE0IiwibGV4ZW1lcyQxMTIiLCJyJDExNSIsInIkNjQiLCJsZXhlbWVzJDExMyIsImxleGVtZXMkMTE0IiwicHJldmlvdXMkMTI0IiwiciQxMTciLCJwcmV2aW91cyQxMjUiLCJyJDExOCIsImxleGVtZXMkMTE5IiwiZyIsImxleGVtZXMkMTIzIiwiY29tbWVudHMiLCJyJDEzMiIsImxleGVtZXMkMTI0IiwicHJldmlvdXMkMTMyIiwiciQxMzMiLCJwcmV2aW91cyQxMzMiLCJyJDEzNCIsInckNSIsInckNiIsImxleGVtZXMkMTI1IiwiZyQwIiwibGV4ZW1lcyQxMjYiLCJyJDEzNiIsImxleGVtZXMkMTI3IiwiciQxMzciLCJyJDEzNSIsImxleGVtZXMkMTI4IiwiciQxMzgiLCJsZXhlbWVzJDEyOSIsImxleGVtZXMkMTMwIiwicHJldmlvdXMkMTM0IiwiciQxMzkiLCJsZXhlbWVzJDEzMSIsInByZXZpb3VzJDEzNSIsInIkMTQwIiwibGV4ZW1lcyQxMzIiLCJwcmV2aW91cyQxMzYiLCJyJDE0MSIsInByZXZpb3VzJDEzNyIsInIkMTQyIiwibGV4ZW1lcyQxMzMiLCJsZXhlbWVzJDEzNCIsIngkMyIsInByZXZpb3VzJDEzOCIsInIkMTQzIiwibWFpbl9pbXBsIiwibGV4ZW1lcyQxMzUiLCJwcmV2aW91cyQxMzkiLCJyJDE0NCIsInByZXZpb3VzJDE0MCIsInIkMTQ1IiwibGV4ZW1lcyQxMzYiLCJyJDE0NiIsImxleGVtZXMkMTM3IiwiciQxNDciLCJsZXhlbWVzJDEzOCIsInByZXZpb3VzJDE0MSIsInIkMTQ4IiwibGV4ZW1lcyQxMzkiLCJwcmV2aW91cyQxNDIiLCJyJDE0OSIsImxleGVtZXMkMTQwIiwicHJldmlvdXMkMTQzIiwiciQxNTAiLCJsZXhlbWVzJDE0MSIsInIkMTUxIiwibGV4ZW1lcyQxNDIiLCJsZXhlbWVzJDE0MyIsIngkNCIsInByZXZpb3VzJDE0NCIsInIkMTUyIiwicHJldmlvdXMkMTQ1IiwiciQxNTMiLCJsZXhlbWVzJDE0NCIsInByZXZpb3VzJDE0NiIsInIkMTU0IiwicHJldmlvdXMkMTQ3IiwiciQxNTUiLCJsZXhlbWVzJDE0NSIsInckNyIsInByZXZpb3VzJDE0OCIsInIkMTU2IiwibGV4ZW1lcyQxNDYiLCJsZXhlbWVzJDE0NyIsInByZXZpb3VzJDE0OSIsInIkMTU3IiwibGV4ZW1lcyQ1OCIsImxleGVtZXMkNTkiLCJwcmV2aW91cyQxMDQiLCJyJDYxIiwibGV4ZW1lcyQ2MCIsInByZXZpb3VzJDEwNSIsInIkNjIiLCJwcmV2aW91cyQxMDYiLCJyJDYzIiwidyQ0IiwibGV4ZW1lcyQxMjAiLCJ1cmwkMiIsImxleGVtZXMkMTIyIiwicHJldmlvdXMkMTMwIiwiciQxMzAiLCJwcmV2aW91cyQxMzEiLCJyJDEzMSIsImxleGVtZXMkMTIxIiwidXJsJDMiLCJyJDEyOCIsInIkMTI5IiwibGV4ZW1lcyQxMTUiLCJsZXhlbWVzJDExNiIsInIkMTIxIiwidGxzIiwibGV4ZW1lcyQxMTciLCJwcmV2aW91cyQxMjYiLCJyJDExOSIsInByZXZpb3VzJDEyNyIsInIkMTIwIiwibnRsJDAiLCJudGwkMSIsImFsdCQyIiwiYWx0JDEiLCJyJDEyNyIsIm50bCIsInBhdGhfdGl0bGUiLCJwYXRoIiwibm90aGluZyIsInIkMTI1IiwicGF0aCQwIiwidGl0bGUkMyIsInIkMTI0IiwiciQxMjYiLCJsZXhlbWVzJDExOCIsInByZXZpb3VzJDEyOCIsInIkMTIyIiwicHJldmlvdXMkMTI5IiwiciQxMjMiLCJzcCIsImxleGVtZXMkMzciLCJwcmV2aW91cyQ4OCIsInIkNDMiLCJsZXhlbWVzJDM4IiwicHJldmlvdXMkODkiLCJyJDQ0IiwibGV4ZW1lcyQ0NSIsInByZXZpb3VzJDk1IiwibGV4ZW1lcyQ0NyIsImxleGVtZXMkNTEiLCJyJDU2IiwibGV4ZW1lcyQ1MiIsInByZXZpb3VzJDk5IiwibGV4ZW1lcyQ0OCIsInIkNTIiLCJsZXhlbWVzJDQ5IiwicHJldmlvdXMkOTYiLCJyJDUzIiwibGV4ZW1lcyQ1MCIsInByZXZpb3VzJDk3IiwiciQ1NCIsInByZXZpb3VzJDk4IiwiciQ1NSIsImxleGVtZXMkNTMiLCJ0dGwiLCJsZXhlbWVzJDU0IiwicHJldmlvdXMkMTAwIiwiciQ1NyIsInByZXZpb3VzJDEwMSIsInIkNTgiLCJsZXhlbWVzJDU1IiwicHJldmlvdXMkMTAyIiwiciQ1OSIsImxleGVtZXMkNTYiLCJwcmV2aW91cyQxMDMiLCJsZXhlbWVzJDU3IiwiciQ2MCIsImxleGVtZXMkMzkiLCJsZXhlbWVzJDQyIiwiciQ0OCIsImxleGVtZXMkNDMiLCJwcmV2aW91cyQ5MiIsImxleGVtZXMkNDQiLCJwcmV2aW91cyQ5MyIsInIkNDkiLCJwcmV2aW91cyQ5NCIsInIkNTAiLCJsZXhlbWVzJDQwIiwiciQ0NSIsImxleGVtZXMkNDEiLCJwcmV2aW91cyQ5MCIsInIkNDYiLCJwcmV2aW91cyQ5MSIsInIkNDciLCJmb28kMSIsImxleGVtZXMkNDYiLCJmb28kMCIsImZvbyIsIm5ld19yIiwiciQ1MSIsImxleGVtZXMkMzUiLCJyJDQxIiwibGV4ZW1lcyQzNiIsInByZXZpb3VzJDg3IiwiciQ0MiIsInRrIiwibGV4ZW1lcyQzMCIsImxleGVtZXMkMzEiLCJwcmV2aW91cyQ4MSIsInIkMzUiLCJwcmV2aW91cyQ4MiIsInIkMzYiLCJsZXhlbWVzJDMyIiwibGV4ZW1lcyQzMyIsInByZXZpb3VzJDgzIiwiciQzNyIsInByZXZpb3VzJDg0IiwiciQzOCIsImxleGVtZXMkMzQiLCJwcmV2aW91cyQ4NSIsInIkMzkiLCJwcmV2aW91cyQ4NiIsInIkNDAiLCJsZXhlbWVzJDI4IiwicHJldmlvdXMkNzkiLCJyJDMzIiwidGtzIiwidGswIiwidGV4dCQxIiwibGV4ZW1lcyQyOSIsInByZXZpb3VzJDgwIiwiciQzNCIsImxleGVtZXMkMjUiLCJsZXhlbWVzJDI2IiwicHJldmlvdXMkNzYiLCJyJDMwIiwibGV4ZW1lcyQyNyIsInByZXZpb3VzJDc3IiwiciQzMSIsInByZXZpb3VzJDc4IiwiciQzMiIsImxleGVtZXMkMjAiLCJsZXhlbWVzJDIxIiwicHJldmlvdXMkNzEiLCJyJDI1IiwicHJldmlvdXMkNzIiLCJyJDI2IiwibGV4ZW1lcyQyMiIsImxleGVtZXMkMjMiLCJwcmV2aW91cyQ3MyIsInIkMjciLCJwcmV2aW91cyQ3NCIsInIkMjgiLCJsZXhlbWVzJDI0IiwicHJldmlvdXMkNzUiLCJyJDI5IiwibGV4ZW1lcyQxMSIsInckMiIsImh0bWxfc3R1ZmYiLCJ0YWduYW1ldG9wIiwibWRfb2ZfaW50ZXJtX2xpc3QiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwibG9vcCQyIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsIm1kX29mX2ludGVybV9saXN0JDEiLCJtZF9vZl9pbnRlcm1fbGlzdCQwIiwic3RyaW5nX29mX3RhZ3N0YXR1cyQwIiwiYWRkX3Rva2VuX3RvX2JvZHkiLCJsb29wJDEiLCJ0JDYiLCJkZWxpbWl0ZXIiLCJiZWZvcmUiLCJ0YWduYW1lJDIiLCJsZXhlbWVzJDE4IiwiaCQxIiwicHJldmlvdXMkNjciLCJyJDIxIiwicHJldmlvdXMkNjgiLCJyJDIyIiwibGV4ZW1lcyQxMiIsImxleGVtZXMkMTMiLCJwcmV2aW91cyQ2MSIsInIkMTQiLCJsZXhlbWVzJDE0IiwicHJldmlvdXMkNjIiLCJyJDE1IiwicHJldmlvdXMkNjMiLCJyJDE2IiwibWFpbl9sb29wX3JldiIsIm1haW5fcGFyc2UiLCJwYXJzZSIsImRlZmF1bHRfcGFyc2UiLCJkIiwid2FybmluZyIsImxleF9mcm9tX2luY2hhbm5lbCIsImljIiwiaWNfY29udGVudCIsInRvX3N0cmluZyIsInBwIiwiYXR0cmlidXRlcyIsIm5vZGVuYW1lIiwib2ZfaW5wdXQiLCJvZl9zdHJpbmciLCJvZl9iaWdhcnJheSIsInNldF9kZWZhdWx0X2xhbmciLCJ0JDciLCJ0JDgiLCJ0JDkiLCJ0JDEwIiwidCQxMSIsInQkMTIiLCJ0JDEzIiwiZmluZF9zdGFydCQwIiwibGV2ZWwiLCJudW1iZXIiLCJzdWJzZWN0aW9ucyIsImRlYWxfd2l0aF9oZWFkZXIiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJmaW5kX3N0YXJ0IiwibWFrZV90b2MkMCIsIm1pbl9sZXZlbCIsIm1heF9sZXZlbCIsInRvY19lbnRyeSIsIm1ha2VfdG9jIiwic3ViX3RvYyIsInRvYyIsInN1Yl90b2MkMCIsInRvYyQwIiwiZGVwdGgiLCJoZWFkZXJzJDAiLCJlcnJvcl9zb3VyY2VfMDA5IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyMiIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAzNSIsInRwX2xvYyQxIiwia2V5X29mX3NleHAiLCJzZXhwX29mX2tleSIsImtleV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfa2V5IiwicHBfdmFsdWUiLCJzaG93X3ZhbHVlIiwiZm10IiwieCIsInZhbHVlX29mX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwidmFsdWVfb2ZfeW9qc29uIiwieW9qc29uX29mX3ZhbHVlIiwicHAiLCJzaG93Iiwic2VwIiwiYTEiLCJhMCIsInRfb2Zfc2V4cCIsInhfMDEwIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsInNleHBfb2ZfdCIsInhfMDE1IiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDEzIiwicmVzMV8wMTQiLCJ0X29mX3lvanNvbiIsInQiLCJ5b2pzb24iLCJ2MSIsInYwIiwidjAkMCIsInYxJDAiLCJ5b2pzb25fb2ZfdCIsInYiLCJzZXJpYWxpemUiLCJwcm9ncmFtIiwiZGVzZXJpYWxpemUiLCJzZXhwIiwicHBfdmFsdWUkMCIsInNob3dfdmFsdWUkMCIsInZhbHVlX29mX3NleHAkMCIsInhfMDIzIiwic2V4cF8wMjEiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMF8wMTkiLCJyZXMxXzAyMCIsInNleHBfb2ZfdmFsdWUkMCIsInhfMDI4IiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJ2YWx1ZV9vZl95b2pzb24kMCIsInlvanNvbl9vZl92YWx1ZSQwIiwicHAkMCIsInNob3ckMCIsInRfb2Zfc2V4cCQwIiwieF8wMzYiLCJzZXhwXzAzNCIsImFyZzFfMDMxIiwiYXJnMF8wMzAiLCJyZXMwXzAzMiIsInJlczFfMDMzIiwic2V4cF9vZl90JDAiLCJ4XzA0MSIsImFyZzFfMDM4IiwiYXJnMF8wMzciLCJyZXMwXzAzOSIsInJlczFfMDQwIiwidF9vZl95b2pzb24kMCIsInlvanNvbl9vZl90JDAiLCJzZXJpYWxpemUkMCIsInIiLCJkZXNlcmlhbGl6ZSQwIiwid29yayIsInJlcyIsImV4biQwIiwiZXhuIiwicmVhc29uIiwicmVzdWx0Iiwic3RhdGUiLCJvbl9yZXF1ZXN0IiwicmVxIiwiayIsInN0YXJ0IiwibmFtZSIsInRpbWVvdXREdXJhdGlvbiIsImluaXRXb3JrZXIiLCJ3b3JrZXJSZWYiLCJ0aW1lb3V0SWQiLCJyZXN0YXJ0X3dvcmtlciIsInJlcXVlc3QiLCJyZXEiLCJoYW5kbGVyIiwidGltZW91dCIsInNldHVwV29ya2VyTWVzc2FnZUhhbmRsZXIiLCJldnQiLCJpZCIsIm9uVGltZW91dCIsImJ1dHRvbiIsIm9wdCIsImljb24iLCJhY3Rpb24iLCJzdGgiLCJ0b29sdGlwIiwiYnV0dG9uX25hbWVkIiwiYnV0dG9uX2QiLCJsaW5rIiwidXJsIiwidG9nZ2xlIiwibGFiZWwiLCJhY3RpdmUiLCJ0b2dnbGVfbmFtZWQiLCJmaWxlX3NlbGVjdF9idXR0b24iLCJvbl9pbnB1dCIsImZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZCIsIm1rIiwiYyIsIm1rJDAiLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW0iLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24iLCJ4IiwibWskMSIsImdldCIsInQiLCJrIiwibWFwIiwic2V0IiwidiIsIm1rX3NlY29uZGFyeSIsImNvbnRlbnQiLCJta190aWxlIiwiZm9ybSIsImNoaWxkcmVuIiwiaSIsIm1rX2FuY2VzdG9yIiwibCIsIm1rX21vbm90aWxlIiwiaW50JDAiLCJuIiwiZXhwIiwicGF0IiwibWtfZnVuIiwibWtfZnVuX2FuY2VzdG9yIiwibWtfcGFyZW5zX2FuY2VzdG9yIiwibWtfbGV0X2FuY2VzdG9yIiwicGx1cyIsImxfc2libGluZyIsInJfc2libGluZyIsImFuY2VzdG9ycyIsImJhY2twYWNrIiwiemlwcGVyIiwiY29uc19leHAiLCJsaXN0X2NvbmNhdF9leHAiLCJjb25zX3BhdCIsInNlcSIsImV4cCQwIiwicGF0JDAiLCJ0eXAiLCJ0cGF0IiwidHlwX3BhdF92YXIiLCJta19wYXJlbnNfZXhwIiwibWtfcGFyZW5zX3BhdCIsIm1rX3BhcmVuc190eXAiLCJta19saXN0X2V4cCIsIm1rX2xpc3RfcGF0IiwibWtfbGlzdF90eXAiLCJta19mb3JhbGwiLCJta19yZWMiLCJhcnJvdyIsInVuYXJ5X21pbnVzIiwidW5hcnlfbm90IiwicGx1cyQwIiwibWludXMiLCJ0aW1lcyIsInBvd2VyIiwiZGl2aWRlIiwiZXF1YWxzIiwibm90X2VxdWFscyIsImx0IiwibHRlIiwiZ3QiLCJndGUiLCJmcGx1cyIsImZtaW51cyIsImZ0aW1lcyIsImZwb3dlciIsImZkaXZpZGUiLCJmZXF1YWxzIiwiZm5vdF9lcXVhbHMiLCJmbHQiLCJmbHRlIiwiZmd0IiwiZmd0ZSIsInNlcXVhbHMiLCJzY29uY2F0IiwibG9naWNhbF9hbmQiLCJsb2dpY2FsX29yIiwiY29tbWFfZXhwIiwiY29tbWFfcGF0IiwiY29tbWFfdHlwIiwicGlwZWxpbmUiLCJuaWwiLCJkZWZlcnJhbCIsInR5cGVhbm4iLCJta190eXBmdW4iLCJta19mdW4kMCIsIm1rX2FwX2V4cF90eXAiLCJta19maXgiLCJta19hcF9leHAiLCJta19hcF9wYXQiLCJta19sZXQiLCJta190eWFsaWFzIiwibWtfaWYiLCJta190ZXN0IiwibWtfY2FzZSIsIm1rX3J1bGUiLCJta19oaWRlIiwibWtfZXZhbCIsIm1rX3BhdXNlIiwibWtfZGVidWciLCJta191bnF1b3RlIiwibGluZWJyZWFrIiwic3BhY2UiLCJta19leGFtcGxlIiwic3RyIiwieiIsImFiYnJldmlhdGUiLCJlcnJvcl9zb3VyY2VfMDAzIiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAwNyIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAxMSIsInRwX2xvYyQxIiwiZXJyb3Jfc291cmNlXzAxNSIsInRwX2xvYyQyIiwiZXJyb3Jfc291cmNlXzAxOSIsInRwX2xvYyQzIiwiZXJyb3Jfc291cmNlXzAyMyIsInRwX2xvYyQ0IiwiZXJyb3Jfc291cmNlXzA4NCIsInRwX2xvYyQ1IiwiZXJyb3Jfc291cmNlXzA5NyIsInRwX2xvYyQ2IiwiZXJyb3Jfc291cmNlXzEwMSIsInRwX2xvYyQ3IiwiZXJyb3Jfc291cmNlXzE2MyIsInRwX2xvYyQ4IiwiZXJyb3Jfc291cmNlXzE4NyIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzIzOCIsInRwX2xvYyQxMCIsImVycm9yX3NvdXJjZV8yNzIiLCJ0cF9sb2MkMTEiLCJwcF9saXN0X2V4YW1wbGVzIiwiZm10Iiwic2hvd19saXN0X2V4YW1wbGVzIiwibGlzdF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX2xpc3RfZXhhbXBsZXMiLCJsaXN0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbiIsInlvanNvbl9vZl9saXN0X2V4YW1wbGVzIiwicHBfdHlwZnVuX2V4YW1wbGVzIiwic2hvd190eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl90eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGZ1bl9leGFtcGxlcyIsInBwX2Z1bl9leGFtcGxlcyIsInNob3dfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAxMiIsInNleHBfb2ZfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9mdW5fZXhhbXBsZXMiLCJwcF9sZXRfZXhhbXBsZXMiLCJzaG93X2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfbGV0X2V4YW1wbGVzIiwicHBfbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMiLCJzaG93X251bWVyaWNfYmluX29wX2V4YW1wbGVzIiwibnVtZXJpY19iaW5fb3BfZXhhbXBsZXNfb2Zfc2V4Iiwic2V4cF8wMjAiLCJzZXhwX29mX251bWVyaWNfYmluX29wX2V4YW1wbGUiLCJudW1lcmljX2Jpbl9vcF9leGFtcGxlc19vZl95b2oiLCJ5b2pzb25fb2ZfbnVtZXJpY19iaW5fb3BfZXhhbXAiLCJwcF9leGFtcGxlX2lkIiwic2hvd19leGFtcGxlX2lkIiwiYTAiLCJhMCQwIiwiYTAkMSIsImEwJDIiLCJhMCQzIiwiYTAkNCIsImV4YW1wbGVfaWRfb2Zfc2V4cCIsInNleHBfMDI1IiwidGFnXzAyNiIsInNleHBfYXJnc18wMzIiLCJhcmcwXzAzMyIsInJlczBfMDM0Iiwic2V4cF9hcmdzXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJzZXhwX2FyZ3NfMDQyIiwiYXJnMF8wNDMiLCJyZXMwXzA0NCIsInNleHBfYXJnc18wMjciLCJhcmcwXzAyOCIsInJlczBfMDI5Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsInNleHBfb2ZfZXhhbXBsZV9pZCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4IiwiYXJnMF8wNTkiLCJyZXMwXzA2MCIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2MyIsInJlczBfMDY0IiwiYXJnMF8wNjUiLCJyZXMwXzA2NiIsImV4YW1wbGVfaWRfb2ZfeW9qc29uIiwidGFnIiwieW9qc29uX2FyZ3MiLCJ2MCIsInYwJDAiLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX2V4YW1wbGVfaWQiLCJwcF9leGFtcGxlIiwic2hvd19leGFtcGxlIiwiZXhhbXBsZV9vZl9zZXhwIiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJzdWJfaWRfMDcwIiwidGVybV8wNzIiLCJtZXNzYWdlXzA3NCIsImR1cGxpY2F0ZXNfMDc2IiwiZXh0cmFfMDc3Iiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA4MCIsImZpZWxkX25hbWVfMDc4IiwidGFpbF8wODYiLCJmaWVsZF9zZXhwXzA3OSQzIiwiZmllbGRfc2V4cF8wNzkiLCJ4XzA4NyIsImZpZWxkX3NleHBfMDc5JDAiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMSIsImZ2YWx1ZV8wODMiLCJmaWVsZF9zZXhwXzA3OSQyIiwiZnZhbHVlXzA4MSIsIm1lc3NhZ2VfMDc1IiwidGVybV8wNzMiLCJzdWJfaWRfMDcxIiwic2V4cF9vZl9leGFtcGxlIiwibWVzc2FnZV8wOTMiLCJ0ZXJtXzA5MSIsInN1Yl9pZF8wODkiLCJhcmdfMDk0IiwiYm5kc18wODgiLCJhcmdfMDkyIiwiYm5kc18wODgkMCIsImFyZ18wOTAiLCJibmRzXzA4OCQxIiwiZXhhbXBsZV9vZl95b2pzb24iLCJmaWVsZF95b2pzb25zIiwic3ViX2lkX2ZpZWxkIiwidGVybV9maWVsZCIsIm1lc3NhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwiZnZhbHVlJDEiLCJtZXNzYWdlX3ZhbHVlIiwidGVybV92YWx1ZSIsInN1Yl9pZF92YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlIiwidl9tZXNzYWdlIiwidl90ZXJtIiwidl9zdWJfaWQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsInBwX3BhdF9zdWJfZm9ybV9pZCIsInNob3dfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3NleHAiLCJzZXhwXzA5OCIsInNleHBfb2ZfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3lvanNvbiIsInlvanNvbl9vZl9wYXRfc3ViX2Zvcm1faWQiLCJwcF9mb3JtX2lkIiwic2hvd19mb3JtX2lkIiwiZm9ybV9pZF9vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEyMCIsImFyZzBfMTIxIiwicmVzMF8xMjIiLCJzZXhwX2FyZ3NfMTA1IiwiYXJnMF8xMDYiLCJyZXMwXzEwNyIsInNleHBfYXJnc18xMTAiLCJhcmcwXzExMSIsInJlczBfMTEyIiwic2V4cF9hcmdzXzExNSIsImFyZzBfMTE2IiwicmVzMF8xMTciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnMF8xMjYiLCJyZXMwXzEyNyIsInNleHBfb2ZfZm9ybV9pZCIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwiYXJnMF8xMzIiLCJyZXMwXzEzMyIsImFyZzBfMTM0IiwicmVzMF8xMzUiLCJhcmcwXzEzNiIsInJlczBfMTM3IiwiZm9ybV9pZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZm9ybV9pZCIsInBwX2Zvcm0iLCJzaG93X2Zvcm0iLCJ4JDAiLCJhMSIsIngkMSIsInNlcCIsImZvcm1fb2Zfc2V4cCIsInNleHBfMTM5IiwiZmllbGRfc2V4cHNfMTQwIiwiaWRfMTQxIiwic3ludGFjdGljX2Zvcm1fMTQzIiwiZXhwYW5kYWJsZV9pZF8xNDUiLCJleHBsYW5hdGlvbl8xNDciLCJleGFtcGxlc18xNDkiLCJkdXBsaWNhdGVzXzE1MSIsImV4dHJhXzE1MiIsInNleHBfMTM5JDAiLCJmaWVsZF9zZXhwc18xNTUiLCJmaWVsZF9uYW1lXzE1MyIsInRhaWxfMTY4IiwiZmllbGRfc2V4cF8xNTQkNSIsImZpZWxkX3NleHBfMTU0IiwieF8xNjkiLCJmaWVsZF9zZXhwXzE1NCQwIiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU0JDEiLCJmdmFsdWVfMTY2IiwiZmllbGRfc2V4cF8xNTQkMiIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NCQzIiwic2V4cF8xNjIiLCJhcmcxXzE1OSIsImFyZzBfMTU4IiwicmVzMF8xNjAiLCJyZXMxXzE2MSIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NCQ0IiwiZnZhbHVlXzE1NiIsImV4YW1wbGVzXzE1MCIsImV4cGxhbmF0aW9uXzE0OCIsImV4cGFuZGFibGVfaWRfMTQ2Iiwic3ludGFjdGljX2Zvcm1fMTQ0IiwiaWRfMTQyIiwic2V4cF9vZl9mb3JtIiwiZXhhbXBsZXNfMTgzIiwiZXhwbGFuYXRpb25fMTgxIiwiZXhwYW5kYWJsZV9pZF8xNzUiLCJzeW50YWN0aWNfZm9ybV8xNzMiLCJpZF8xNzEiLCJhcmdfMTg0IiwiYm5kc18xNzAiLCJhcmdfMTgyIiwiYm5kc18xNzAkMCIsImFyZzFfMTc4IiwiYXJnMF8xNzciLCJyZXMwXzE3OSIsInJlczFfMTgwIiwiYXJnXzE3NiIsImJuZHNfMTcwJDEiLCJhcmdfMTc0IiwiYm5kc18xNzAkMiIsImFyZ18xNzIiLCJibmRzXzE3MCQzIiwiZm9ybV9vZl95b2pzb24iLCJpZF9maWVsZCIsInN5bnRhY3RpY19mb3JtX2ZpZWxkIiwiZXhwYW5kYWJsZV9pZF9maWVsZCIsImV4cGxhbmF0aW9uX2ZpZWxkIiwiZXhhbXBsZXNfZmllbGQiLCJ2MSIsInYxJDAiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZXhhbXBsZXNfdmFsdWUiLCJleHBsYW5hdGlvbl92YWx1ZSIsImV4cGFuZGFibGVfaWRfdmFsdWUiLCJzeW50YWN0aWNfZm9ybV92YWx1ZSIsImlkX3ZhbHVlIiwieW9qc29uX29mX2Zvcm0iLCJ2X2V4YW1wbGVzIiwidl9leHBsYW5hdGlvbiIsInZfZXhwYW5kYWJsZV9pZCIsInZfc3ludGFjdGljX2Zvcm0iLCJ2X2lkIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsInBwX2dyb3VwX2lkIiwic2hvd19ncm91cF9pZCIsImdyb3VwX2lkX29mX3NleHAiLCJzZXhwXzE4OSIsInRhZ18xOTAiLCJzZXhwX2FyZ3NfMjA2IiwiYXJnMF8yMDciLCJyZXMwXzIwOCIsInNleHBfYXJnc18xOTEiLCJhcmcwXzE5MiIsInJlczBfMTkzIiwic2V4cF9hcmdzXzE5NiIsImFyZzBfMTk3IiwicmVzMF8xOTgiLCJzZXhwX2FyZ3NfMjAxIiwiYXJnMF8yMDIiLCJyZXMwXzIwMyIsInNleHBfYXJnc18yMTEiLCJhcmcwXzIxMiIsInJlczBfMjEzIiwic2V4cF9vZl9ncm91cF9pZCIsImFyZzBfMjE0IiwicmVzMF8yMTUiLCJhcmcwXzIxNiIsInJlczBfMjE3IiwiYXJnMF8yMTgiLCJyZXMwXzIxOSIsImFyZzBfMjIwIiwicmVzMF8yMjEiLCJhcmcwXzIyMiIsInJlczBfMjIzIiwiZ3JvdXBfaWRfb2ZfeW9qc29uIiwieW9qc29uX29mX2dyb3VwX2lkIiwicHBfZ3JvdXAiLCJzaG93X2dyb3VwIiwiZ3JvdXBfb2Zfc2V4cCIsInNleHBfMjI1IiwiZmllbGRfc2V4cHNfMjI2IiwiaWRfMjI3IiwiZm9ybXNfMjI5IiwiZHVwbGljYXRlc18yMzEiLCJleHRyYV8yMzIiLCJzZXhwXzIyNSQwIiwiZmllbGRfc2V4cHNfMjM1IiwiZmllbGRfbmFtZV8yMzMiLCJ0YWlsXzI0MCIsImZpZWxkX3NleHBfMjM0JDIiLCJmaWVsZF9zZXhwXzIzNCIsInhfMjQxIiwiZmllbGRfc2V4cF8yMzQkMCIsImZ2YWx1ZV8yMzciLCJmaWVsZF9zZXhwXzIzNCQxIiwiZnZhbHVlXzIzNiIsImZvcm1zXzIzMCIsImlkXzIyOCIsInNleHBfb2ZfZ3JvdXAiLCJmb3Jtc18yNDUiLCJpZF8yNDMiLCJhcmdfMjQ2IiwiYm5kc18yNDIiLCJhcmdfMjQ0IiwiYm5kc18yNDIkMCIsImdyb3VwX29mX3lvanNvbiIsImZvcm1zX2ZpZWxkIiwiZm9ybXNfdmFsdWUiLCJ5b2pzb25fb2ZfZ3JvdXAiLCJ2X2Zvcm1zIiwicHAiLCJzaG93IiwidF9vZl9zZXhwIiwic2V4cF8yNDgiLCJmaWVsZF9zZXhwc18yNDkiLCJncm91cF9pZF8yNTAiLCJmb3JtX2lkXzI1MiIsImFic3RyYWN0XzI1NCIsImV4cGxhbmF0aW9uXzI1NiIsImV4YW1wbGVzXzI1OCIsImR1cGxpY2F0ZXNfMjYwIiwiZXh0cmFfMjYxIiwic2V4cF8yNDgkMCIsImZpZWxkX3NleHBzXzI2NCIsImZpZWxkX25hbWVfMjYyIiwidGFpbF8yODIiLCJmaWVsZF9zZXhwXzI2MyQ1IiwiZmllbGRfc2V4cF8yNjMiLCJ4XzI4MyIsImZpZWxkX3NleHBfMjYzJDAiLCJmdmFsdWVfMjgwIiwiZmllbGRfc2V4cF8yNjMkMSIsImZ2YWx1ZV8yNzkiLCJmaWVsZF9zZXhwXzI2MyQyIiwiZnZhbHVlXzI2NiIsImZpZWxkX3NleHBfMjYzJDMiLCJmdmFsdWVfMjY1IiwiZmllbGRfc2V4cF8yNjMkNCIsImFyZzFfMjc0IiwiYXJnMF8yNzMiLCJyZXMwXzI3NSIsInNleHBfMjcxIiwiYXJnMV8yNjgiLCJhcmcwXzI2NyIsInJlczBfMjY5IiwicmVzMV8yNzAiLCJyZXMxXzI3NiIsImZ2YWx1ZV8yNzgiLCJleGFtcGxlc18yNTkiLCJleHBsYW5hdGlvbl8yNTciLCJhYnN0cmFjdF8yNTUiLCJmb3JtX2lkXzI1MyIsImdyb3VwX2lkXzI1MSIsInNleHBfb2ZfdCIsImV4YW1wbGVzXzMwMSIsImV4cGxhbmF0aW9uXzI5OSIsImFic3RyYWN0XzI4OSIsImZvcm1faWRfMjg3IiwiZ3JvdXBfaWRfMjg1IiwiYXJnXzMwMiIsImJuZHNfMjg0IiwiYXJnXzMwMCIsImJuZHNfMjg0JDAiLCJhcmcxXzI5NiIsImFyZzBfMjk1IiwicmVzMF8yOTciLCJhcmcxXzI5MiIsImFyZzBfMjkxIiwicmVzMF8yOTMiLCJyZXMxXzI5NCIsInJlczFfMjk4IiwiYXJnXzI5MCIsImJuZHNfMjg0JDEiLCJhcmdfMjg4IiwiYm5kc18yODQkMiIsImFyZ18yODYiLCJibmRzXzI4NCQzIiwidF9vZl95b2pzb24iLCJncm91cF9pZF9maWVsZCIsImZvcm1faWRfZmllbGQiLCJhYnN0cmFjdF9maWVsZCIsImFic3RyYWN0X3ZhbHVlIiwiZm9ybV9pZF92YWx1ZSIsImdyb3VwX2lkX3ZhbHVlIiwieW9qc29uX29mX3QiLCJ2X2Fic3RyYWN0Iiwidl9mb3JtX2lkIiwidl9ncm91cF9pZCIsInRvX2dyb3VwIiwiZXhhbXBsZXMiLCJleHBsYW5hdGlvbiIsImNvbG9yaW5ncyIsInN5bnRhY3RpY19mb3JtIiwiZm9ybV9pZCIsImdyb3VwX2lkIiwibWtfMSIsIm1rX2Zvcm0iLCJwIiwibWtfMiIsImlkXzIiLCJuMiIsImlkXzEiLCJuMSIsInAyIiwicDEiLCJta18zIiwiaWRfMyIsIm4zIiwicDMiLCJ2YXJfdHlwX3BhdCIsInZhcl90eXBfcGF0cyIsImNvZGUiLCJlcXVpdiIsInByb21wdCIsImRlZmF1bHQkMCIsIm91dHB1dF9oZWFkZXIiLCJtb2R1bGVfbmFtZSIsImV4ZXJjaXNlIiwiZmlsZW5hbWUiLCJleGVyY2lzZXMiLCJlcnJvcl9zb3VyY2VfMDQ4IiwiZXJyb3Jfc291cmNlXzA3NSIsImVycm9yX3NvdXJjZV8xMTQiLCJlcnJvcl9zb3VyY2VfMTQwIiwiZXJyb3Jfc291cmNlXzE1MyIsImVycm9yX3NvdXJjZV8xNjQiLCJpbml0IiwiaW5pdCQwIiwicHBfZmVlZGJhY2tfb3B0aW9uIiwic2hvd19mZWVkYmFja19vcHRpb24iLCJmZWVkYmFja19vcHRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZmVlZGJhY2tfb3B0aW9uIiwiZmVlZGJhY2tfb3B0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9mZWVkYmFja19vcHRpb24iLCJwcF9leGFtcGxlX21vZGVsIiwic2hvd19leGFtcGxlX21vZGVsIiwiZXhhbXBsZV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJzdWJfaWRfMDA4IiwiZmVlZGJhY2tfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJzZXhwXzAwNiQwIiwiZmllbGRfc2V4cHNfMDE2IiwiZmllbGRfbmFtZV8wMTQiLCJ0YWlsXzAyMSIsImZpZWxkX3NleHBfMDE1JDIiLCJmaWVsZF9zZXhwXzAxNSIsInhfMDIyIiwiZmllbGRfc2V4cF8wMTUkMCIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNSQxIiwiZnZhbHVlXzAxNyIsImZlZWRiYWNrXzAxMSIsInN1Yl9pZF8wMDkiLCJzZXhwX29mX2V4YW1wbGVfbW9kZWwiLCJmZWVkYmFja18wMjYiLCJzdWJfaWRfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDIzIiwiYXJnXzAyNSIsImJuZHNfMDIzJDAiLCJleGFtcGxlX21vZGVsX29mX3lvanNvbiIsImZlZWRiYWNrX2ZpZWxkIiwiZmVlZGJhY2tfdmFsdWUiLCJ5b2pzb25fb2ZfZXhhbXBsZV9tb2RlbCIsInZfZmVlZGJhY2siLCJwcF9mb3JtX21vZGVsIiwic2hvd19mb3JtX21vZGVsIiwiZm9ybV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMjkiLCJmaWVsZF9zZXhwc18wMzAiLCJncm91cF8wMzEiLCJmb3JtXzAzMyIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzAzNSIsImV4YW1wbGVzXzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMjkkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNTAiLCJmaWVsZF9zZXhwXzA0MiQ0IiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA1MSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ3IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDYiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZnZhbHVlXzA0NSIsImZpZWxkX3NleHBfMDQyJDMiLCJmdmFsdWVfMDQ0IiwiZXhhbXBsZXNfMDM4IiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfMDM2IiwiZm9ybV8wMzQiLCJncm91cF8wMzIiLCJzZXhwX29mX2Zvcm1fbW9kZWwiLCJleGFtcGxlc18wNTkiLCJleHBsYW5hdGlvbl9mZWVkYmFja18wNTciLCJmb3JtXzA1NSIsImdyb3VwXzA1MyIsImFyZ18wNjAiLCJibmRzXzA1MiIsImFyZ18wNTgiLCJibmRzXzA1MiQwIiwiYXJnXzA1NiIsImJuZHNfMDUyJDEiLCJhcmdfMDU0IiwiYm5kc18wNTIkMiIsImZvcm1fbW9kZWxfb2ZfeW9qc29uIiwiZ3JvdXBfZmllbGQiLCJmb3JtX2ZpZWxkIiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfZmllbGQiLCJleHBsYW5hdGlvbl9mZWVkYmFja192YWx1ZSIsImZvcm1fdmFsdWUiLCJncm91cF92YWx1ZSIsInlvanNvbl9vZl9mb3JtX21vZGVsIiwidl9leHBsYW5hdGlvbl9mZWVkYmFjayIsInZfZm9ybSIsInZfZ3JvdXAiLCJwcF9ncm91cF9tb2RlbCIsInNob3dfZ3JvdXBfbW9kZWwiLCJncm91cF9tb2RlbF9vZl9zZXhwIiwic2V4cF8wNjIiLCJmaWVsZF9zZXhwc18wNjMiLCJncm91cF8wNjQiLCJzZWxlY3RlZF8wNjYiLCJkdXBsaWNhdGVzXzA2OCIsImV4dHJhXzA2OSIsInNleHBfMDYyJDAiLCJmaWVsZF9zZXhwc18wNzIiLCJmaWVsZF9uYW1lXzA3MCIsInRhaWxfMDc3IiwiZmllbGRfc2V4cF8wNzEkMiIsImZpZWxkX3NleHBfMDcxIiwieF8wNzgiLCJmaWVsZF9zZXhwXzA3MSQwIiwiZnZhbHVlXzA3MyIsImZpZWxkX3NleHBfMDcxJDEiLCJmdmFsdWVfMDc0Iiwic2VsZWN0ZWRfMDY3IiwiZ3JvdXBfMDY1Iiwic2V4cF9vZl9ncm91cF9tb2RlbCIsInNlbGVjdGVkXzA4MiIsImdyb3VwXzA4MCIsImFyZ18wODMiLCJibmRzXzA3OSIsImFyZ18wODEiLCJibmRzXzA3OSQwIiwiZ3JvdXBfbW9kZWxfb2ZfeW9qc29uIiwic2VsZWN0ZWRfZmllbGQiLCJzZWxlY3RlZF92YWx1ZSIsInlvanNvbl9vZl9ncm91cF9tb2RlbCIsInZfc2VsZWN0ZWQiLCJzZXhwXzA4NSIsImZpZWxkX3NleHBzXzA4NiIsInNwZWNpZmljaXR5X29wZW5fMDg3IiwiZm9ybXNfMDg5IiwiZ3JvdXBzXzA5MSIsImR1cGxpY2F0ZXNfMDkzIiwiZXh0cmFfMDk0Iiwic2V4cF8wODUkMCIsImZpZWxkX3NleHBzXzA5NyIsImZpZWxkX25hbWVfMDk1IiwidGFpbF8xMDMiLCJmaWVsZF9zZXhwXzA5NiQzIiwiZmllbGRfc2V4cF8wOTYiLCJ4XzEwNCIsImZpZWxkX3NleHBfMDk2JDAiLCJmdmFsdWVfMTAwIiwiZmllbGRfc2V4cF8wOTYkMSIsImZ2YWx1ZV8wOTgiLCJmaWVsZF9zZXhwXzA5NiQyIiwiZnZhbHVlXzA5OSIsImdyb3Vwc18wOTIiLCJmb3Jtc18wOTAiLCJzcGVjaWZpY2l0eV9vcGVuXzA4OCIsImdyb3Vwc18xMTAiLCJmb3Jtc18xMDgiLCJzcGVjaWZpY2l0eV9vcGVuXzEwNiIsImFyZ18xMTEiLCJibmRzXzEwNSIsImFyZ18xMDkiLCJibmRzXzEwNSQwIiwiYXJnXzEwNyIsImJuZHNfMTA1JDEiLCJzcGVjaWZpY2l0eV9vcGVuX2ZpZWxkIiwiZ3JvdXBzX2ZpZWxkIiwiZ3JvdXBzX3ZhbHVlIiwic3BlY2lmaWNpdHlfb3Blbl92YWx1ZSIsInZfZ3JvdXBzIiwidl9zcGVjaWZpY2l0eV9vcGVuIiwicHBfaGlnaGxpZ2h0Iiwic2hvd19oaWdobGlnaHQiLCJoaWdobGlnaHRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwic2V4cF9vZl9oaWdobGlnaHQiLCJoaWdobGlnaHRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodCIsInBwJDAiLCJzaG93JDAiLCJ0X29mX3NleHAkMCIsInNleHBfMTI0IiwiZmllbGRfc2V4cHNfMTI1Iiwic2hvd18xMjYiLCJzaG93X2ZlZWRiYWNrXzEyOCIsImhpZ2hsaWdodF8xMzAiLCJkdXBsaWNhdGVzXzEzMiIsImV4dHJhXzEzMyIsInNleHBfMTI0JDAiLCJmaWVsZF9zZXhwc18xMzYiLCJmaWVsZF9uYW1lXzEzNCIsInRhaWxfMTQyIiwiZmllbGRfc2V4cF8xMzUkMyIsImZpZWxkX3NleHBfMTM1IiwieF8xNDMiLCJmaWVsZF9zZXhwXzEzNSQwIiwiZnZhbHVlXzEzOCIsImZpZWxkX3NleHBfMTM1JDEiLCJmdmFsdWVfMTM5IiwiZmllbGRfc2V4cF8xMzUkMiIsImZ2YWx1ZV8xMzciLCJoaWdobGlnaHRfMTMxIiwic2hvd19mZWVkYmFja18xMjkiLCJzaG93XzEyNyIsInNleHBfb2ZfdCQwIiwiaGlnaGxpZ2h0XzE0OSIsInNob3dfZmVlZGJhY2tfMTQ3Iiwic2hvd18xNDUiLCJhcmdfMTUwIiwiYm5kc18xNDQiLCJhcmdfMTQ4IiwiYm5kc18xNDQkMCIsImFyZ18xNDYiLCJibmRzXzE0NCQxIiwidF9vZl95b2pzb24kMCIsInNob3dfZmllbGQiLCJzaG93X2ZlZWRiYWNrX2ZpZWxkIiwiaGlnaGxpZ2h0X2ZpZWxkIiwiaGlnaGxpZ2h0X3ZhbHVlIiwic2hvd19mZWVkYmFja192YWx1ZSIsInNob3dfdmFsdWUiLCJ5b2pzb25fb2ZfdCQwIiwidl9oaWdobGlnaHQiLCJ2X3Nob3dfZmVlZGJhY2siLCJ2X3Nob3ciLCJwcF9oaWdobGlnaHRfYWN0aW9uIiwic2hvd19oaWdobGlnaHRfYWN0aW9uIiwiaGlnaGxpZ2h0X2FjdGlvbl9vZl9zZXhwIiwic2V4cF8xNTUiLCJ0YWdfMTU2Iiwic2V4cF9hcmdzXzE1NyIsInJlczBfMTU5Iiwic2V4cF9vZl9oaWdobGlnaHRfYWN0aW9uIiwiYXJnMF8xNjAiLCJyZXMwXzE2MSIsImhpZ2hsaWdodF9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodF9hY3Rpb24iLCJwcF9hY3Rpb24iLCJzaG93X2FjdGlvbiIsImFjdGlvbl9vZl9zZXhwIiwic2V4cF8xNjYiLCJ0YWdfMTY3Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJzZXhwX29mX2FjdGlvbiIsImFyZzBfMTcxIiwicmVzMF8xNzIiLCJhY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FjdGlvbiIsImdldF9leHBsYW5hdGlvbl9mZWVkYmFjayIsIm1vZGVsIiwiZm9ybXMiLCJnZXRfZXhhbXBsZV9mZWVkYmFjayIsImV4YW1wbGVfaWQiLCJleGFtcGxlIiwiZ2V0X2Zvcm1faW5fZ3JvdXAiLCJncm91cCIsImdldF9zZWxlY3RlZF9vcHRpb24iLCJncm91cCQwIiwic2VsZWN0ZWQiLCJzZWxlY3RlZCQwIiwiZ2V0X29wdGlvbnMiLCJnZXRfZm9ybV9hbmRfb3B0aW9ucyIsImVycm9yX3NvdXJjZV8wNDAiLCJwcF9tb2RlIiwic2hvd19tb2RlIiwibW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tb2RlIiwibW9kZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfbW9kZSIsIm1vZGVfb2Zfc3RyaW5nIiwicyIsImNhcHRpb25zXzAwOCIsInNlY29uZGFyeV9pY29uc18wMTAiLCJjb3JlXzAxMiIsImFzeW5jX2V2YWx1YXRpb25fMDE0IiwiY29udGV4dF9pbnNwZWN0b3JfMDE2IiwiaW5zdHJ1Y3Rvcl9tb2RlXzAxOCIsImJlbmNobWFya18wMjAiLCJleHBsYWluVGhpc18wMjIiLCJtb2RlXzAyNCIsImR1cGxpY2F0ZXNfMDI2IiwiZXh0cmFfMDI3IiwiZmllbGRfbmFtZV8wMjgiLCJ0YWlsXzA0MiIsImZpZWxkX3NleHBfMDI5JDkiLCJmaWVsZF9zZXhwXzAyOSIsInhfMDQzIiwiZmllbGRfc2V4cF8wMjkkMCIsImZ2YWx1ZV8wMzgiLCJmaWVsZF9zZXhwXzAyOSQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDI5JDIiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMjkkMyIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAyOSQ0IiwiZnZhbHVlXzAzNyIsImZpZWxkX3NleHBfMDI5JDUiLCJmdmFsdWVfMDM1IiwiZmllbGRfc2V4cF8wMjkkNiIsImZ2YWx1ZV8wMzkiLCJmaWVsZF9zZXhwXzAyOSQ3IiwiZnZhbHVlXzAzMyIsImZpZWxkX3NleHBfMDI5JDgiLCJmdmFsdWVfMDM2IiwibW9kZV8wMjUiLCJleHBsYWluVGhpc18wMjMiLCJiZW5jaG1hcmtfMDIxIiwiaW5zdHJ1Y3Rvcl9tb2RlXzAxOSIsImNvbnRleHRfaW5zcGVjdG9yXzAxNyIsImFzeW5jX2V2YWx1YXRpb25fMDE1IiwiY29yZV8wMTMiLCJzZWNvbmRhcnlfaWNvbnNfMDExIiwiY2FwdGlvbnNfMDA5IiwibW9kZV8wNjEiLCJleHBsYWluVGhpc18wNTkiLCJiZW5jaG1hcmtfMDU3IiwiaW5zdHJ1Y3Rvcl9tb2RlXzA1NSIsImNvbnRleHRfaW5zcGVjdG9yXzA1MyIsImFzeW5jX2V2YWx1YXRpb25fMDUxIiwiY29yZV8wNDkiLCJzZWNvbmRhcnlfaWNvbnNfMDQ3IiwiY2FwdGlvbnNfMDQ1IiwiYXJnXzA2MiIsImJuZHNfMDQ0IiwiYm5kc18wNDQkMCIsImJuZHNfMDQ0JDEiLCJibmRzXzA0NCQyIiwiYm5kc18wNDQkMyIsImFyZ18wNTIiLCJibmRzXzA0NCQ0IiwiYXJnXzA1MCIsImJuZHNfMDQ0JDUiLCJhcmdfMDQ4IiwiYm5kc18wNDQkNiIsImFyZ18wNDYiLCJibmRzXzA0NCQ3IiwiY2FwdGlvbnNfZmllbGQiLCJzZWNvbmRhcnlfaWNvbnNfZmllbGQiLCJjb3JlX2ZpZWxkIiwiYXN5bmNfZXZhbHVhdGlvbl9maWVsZCIsImNvbnRleHRfaW5zcGVjdG9yX2ZpZWxkIiwiaW5zdHJ1Y3Rvcl9tb2RlX2ZpZWxkIiwiYmVuY2htYXJrX2ZpZWxkIiwiZXhwbGFpblRoaXNfZmllbGQiLCJtb2RlX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJtb2RlX3ZhbHVlIiwiZXhwbGFpblRoaXNfdmFsdWUiLCJiZW5jaG1hcmtfdmFsdWUiLCJpbnN0cnVjdG9yX21vZGVfdmFsdWUiLCJjb250ZXh0X2luc3BlY3Rvcl92YWx1ZSIsImFzeW5jX2V2YWx1YXRpb25fdmFsdWUiLCJjb3JlX3ZhbHVlIiwic2Vjb25kYXJ5X2ljb25zX3ZhbHVlIiwiY2FwdGlvbnNfdmFsdWUiLCJ2X21vZGUiLCJ2X2V4cGxhaW5UaGlzIiwidl9iZW5jaG1hcmsiLCJ2X2luc3RydWN0b3JfbW9kZSIsInZfY29udGV4dF9pbnNwZWN0b3IiLCJ2X2FzeW5jX2V2YWx1YXRpb24iLCJ2X2NvcmUiLCJ2X3NlY29uZGFyeV9pY29ucyIsInZfY2FwdGlvbnMiLCJhcmckNCIsImJuZHMkNCIsImFyZyQ1IiwiYm5kcyQ1IiwiYXJnJDYiLCJibmRzJDYiLCJhcmckNyIsImJuZHMkNyIsImZpeF9pbnN0cnVjdG9yX21vZGUiLCJzZXR0aW5ncyIsInBwX3N0YXRlIiwic2hvd19zdGF0ZSIsInN0YXRlX29mX3NleHAiLCJzZXhwX29mX3N0YXRlIiwic3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXRlIiwicHBfcGVyc2lzdGVudF9zdGF0ZSIsInNob3dfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCIsInNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJzY3JhdGNoX2tleSIsInBlcnNpc3QiLCJlZGl0b3IiLCJ1bnBlcnNpc3QiLCJ6aXBwZXIkMCIsInNlcmlhbGl6ZSIsInN0YXRlIiwiZGVzZXJpYWxpemUiLCJkYXRhIiwiZGVzZXJpYWxpemVfb3B0Iiwic2V4cCIsImV4cG9ydCQwIiwiaW1wb3J0JDAiLCJleHBvcnRfaW5pdCIsIm1rX3N0YXRpY3MiLCJjdHhfaW5pdCIsInRlcm0iLCJpbmZvX21hcCIsImVycm9yX2lkcyIsImVycm9yX3NvdXJjZV8wMzEiLCJwcF9zY3JhdGNoIiwic2hvd19zY3JhdGNoIiwiYTIiLCJzY3JhdGNoX29mX3NleHAiLCJzZXhwXzAxNCIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJhcmcxXzAwMyIsImFyZzBfMDAyIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDEzIiwic2V4cF9vZl9zY3JhdGNoIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5IiwicmVzMF8wMjIiLCJyZXMxXzAyMyIsImFyZzFfMDE2IiwiYXJnMF8wMTUiLCJyZXMwXzAxNyIsInJlczFfMDE4IiwicmVzMl8wMjQiLCJzY3JhdGNoX29mX3lvanNvbiIsInYyIiwidjIkMCIsInlvanNvbl9vZl9zY3JhdGNoIiwicHBfZG9jdW1lbnRhdGlvbiIsInNob3dfZG9jdW1lbnRhdGlvbiIsImRvY3VtZW50YXRpb25fb2Zfc2V4cCIsInNleHBfMDQzIiwiYXJnMl8wMzkiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wNDAiLCJzZXhwXzAzMCIsImFyZzFfMDI3IiwiYXJnMF8wMjYiLCJyZXMwXzAyOCIsInJlczFfMDI5IiwicmVzMV8wNDEiLCJzZXhwXzAzNiIsImFyZzFfMDMzIiwiYXJnMF8wMzIiLCJyZXMxXzAzNSIsInJlczJfMDQyIiwic2V4cF9vZl9kb2N1bWVudGF0aW9uIiwiYXJnMl8wNTQiLCJhcmcxXzA1MyIsImFyZzBfMDUyIiwicmVzMF8wNTUiLCJhcmcxXzA0NSIsImFyZzBfMDQ0IiwicmVzMF8wNDYiLCJyZXMxXzA0NyIsInJlczFfMDU2IiwiYXJnMV8wNDkiLCJyZXMwXzA1MCIsInJlczFfMDUxIiwicmVzMl8wNTciLCJkb2N1bWVudGF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9kb2N1bWVudGF0aW9uIiwic2V4cF8wNTkiLCJmaWVsZF9zZXhwc18wNjAiLCJzZXR0aW5nc18wNjEiLCJzY3JhdGNoXzA2MyIsImRvY3VtZW50YXRpb25fMDY1IiwiZHVwbGljYXRlc18wNjciLCJleHRyYV8wNjgiLCJzZXhwXzA1OSQwIiwiZmllbGRfc2V4cHNfMDcxIiwiZmllbGRfbmFtZV8wNjkiLCJmaWVsZF9zZXhwXzA3MCQzIiwiZmllbGRfc2V4cF8wNzAiLCJmaWVsZF9zZXhwXzA3MCQwIiwiZmllbGRfc2V4cF8wNzAkMSIsImZpZWxkX3NleHBfMDcwJDIiLCJmdmFsdWVfMDcyIiwiZG9jdW1lbnRhdGlvbl8wNjYiLCJzY3JhdGNoXzA2NCIsInNldHRpbmdzXzA2MiIsImRvY3VtZW50YXRpb25fMDg0Iiwic2NyYXRjaF8wODIiLCJzZXR0aW5nc18wODAiLCJhcmdfMDg1IiwiYm5kc18wNzkkMSIsInNldHRpbmdzX2ZpZWxkIiwic2NyYXRjaF9maWVsZCIsImRvY3VtZW50YXRpb25fZmllbGQiLCJkb2N1bWVudGF0aW9uX3ZhbHVlIiwic2NyYXRjaF92YWx1ZSIsInNldHRpbmdzX3ZhbHVlIiwidl9kb2N1bWVudGF0aW9uIiwidl9zY3JhdGNoIiwidl9zZXR0aW5ncyIsImVycm9yX3NvdXJjZV8wMTQiLCJlcnJvcl9zb3VyY2VfMDQzIiwiZXJyb3Jfc291cmNlXzA2MSIsImVycm9yX3NvdXJjZV8wOTAiLCJwcF9jZWxsIiwic2hvd19jZWxsIiwiY2VsbF9vZl9zZXhwIiwic2V4cF8wMDUiLCJ0YWdfMDA2Iiwic2V4cF9hcmdzXzAwNyIsInJlczBfMDA5Iiwic2V4cF9vZl9jZWxsIiwiYXJnMF8wMTAiLCJjZWxsX29mX3lvanNvbiIsInlvanNvbl9vZl9jZWxsIiwidGFnXzAxNyIsInNleHBfYXJnc18wMTgiLCJyZXMwXzAyMCIsInNleHBfYXJnc18wMjgiLCJhcmcxXzAzMCIsImFyZzBfMDI5IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInNleHBfYXJnc18wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInJlczFfMDQwIiwicHBfY2VsbCQwIiwic2hvd19jZWxsJDAiLCJjZWxsX29mX3NleHAkMCIsInNleHBfMDQ1IiwidGFnXzA0NiIsInNleHBfb2ZfY2VsbCQwIiwiY2VsbF9vZl95b2pzb24kMCIsInlvanNvbl9vZl9jZWxsJDAiLCJzZXhwXzA2MyIsInRhZ18wNjQiLCJzZXhwX2FyZ3NfMDY1IiwiYXJnMF8wNjYiLCJyZXMwXzA2NyIsInNleHBfYXJnc18wNzUiLCJhcmcxXzA3NyIsImFyZzBfMDc2IiwicmVzMF8wNzgiLCJyZXMxXzA3OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsInBwJDEiLCJzaG93JDEiLCJhMSQwIiwiYTEkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wOTIiLCJ0YWdfMDkzIiwic2V4cF9hcmdzXzA5NCIsImFyZzFfMDk2IiwiYXJnMF8wOTUiLCJyZXMwXzA5NyIsInJlczFfMDk4Iiwic2V4cF9hcmdzXzExMyIsImFyZzJfMTE2IiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczFfMTE4IiwicmVzMl8xMTkiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5Iiwic2V4cF8xMDYiLCJhcmcxXzEwMyIsImFyZzBfMTAyIiwicmVzMF8xMDQiLCJyZXMxXzEwNSIsInJlczFfMTEwIiwic2V4cF9vZl90JDEiLCJhcmcxXzEyMSIsImFyZzBfMTIwIiwicmVzMV8xMjMiLCJhcmcxXzEyOSIsInJlczBfMTMwIiwiYXJnMV8xMjUiLCJhcmcwXzEyNCIsInJlczBfMTI2IiwicmVzMV8xMjciLCJyZXMxXzEzMSIsImFyZzJfMTM0IiwiYXJnMV8xMzMiLCJyZXMxXzEzNiIsInJlczJfMTM3IiwidF9vZl95b2pzb24kMSIsInYxJDMiLCJ2MSQ0IiwidjEkMSIsInYxJDIiLCJ5b2pzb25fb2ZfdCQxIiwidXBkYXRlX3NjcmF0Y2hfc3RhdGUiLCJmIiwiZWRpdG9ycyIsInNsaWRlcyIsInNsaWRlcyQwIiwiZ2V0X2N0eF9pbml0IiwiZ2V0X2Vudl9pbml0IiwiaWR4Iiwia2V5Iiwia2V5JDAiLCJlZGl0b3IkMCIsImxvb2t1cF9zdGF0aWNzIiwic2VsZWN0aW9uIiwic3RhdGljcyIsInBvcyIsImtleSQxIiwiZ2V0X3NwbGljZWRfZWxhYnMiLCJkIiwiaW5mb19tYXAkMCIsInRlcm0kMCIsImQkMCIsInNldF9pbnN0cnVjdG9yX21vZGUiLCJpbnN0cnVjdG9yX21vZGUiLCJzcGVjcyIsInJlc2V0X250aF9zbGlkZSIsImluaXRfZWRpdG9ycyIsImluaXRfbnRoIiwicmVzZXRfbmFtZWRfc2xpZGUiLCJpbml0X25hbWUiLCJyZXNldF9jdXJyZW50IiwibiQwIiwiaW1wb3J0X2N1cnJlbnQiLCJkYXRhJDAiLCJzd2l0Y2hfZXhhbXBsZV9zbGlkZSIsImN1ciIsImdldF9zZWxlY3RlZF9lZGl0b3IiLCJtb2RlbF9yZXN1bHRzIiwic2VsZWN0aW9uJDAiLCJyZXN1bHQiLCJzZWxlY3Rpb24kMSIsInNlbGVjdGlvbiQyIiwic2VsZWN0aW9uJDMiLCJwdXRfc2VsZWN0ZWRfZWRpdG9yIiwicmVzdWx0JDAiLCJyZXN1bHRzIiwicmVzdWx0cyQwIiwic2xpZGVzJDEiLCJzbGlkZXMkMiIsInJlc3VsdHMkMSIsInJlc3VsdHMkMiIsInNwZWMiLCJleGVyY2lzZSQwIiwicmVzdWx0cyQzIiwicmVzdWx0cyQ0IiwidXBkYXRlX3NlbGVjdGVkX2VkaXRvciIsImVkaXRvcnMkMCIsImUiLCJnZXRfY3Vyc29yX2luZm8iLCJzdGF0aWNzJDAiLCJwcF91cGRhdGUiLCJzaG93X3VwZGF0ZSIsImEzIiwiYTIkMCIsInVwZGF0ZV9vZl9zZXhwIiwiYXJnMV8wMzQiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzAxMiIsImFyZzJfMDE1IiwiYXJnMV8wMTQiLCJhcmcwXzAxMyIsInJlczBfMDE2IiwicmVzMV8wMTciLCJyZXMyXzAxOCIsInNleHBfYXJnc18wMjEiLCJhcmczXzAyNSIsImFyZzJfMDI0IiwiYXJnMV8wMjMiLCJhcmcwXzAyMiIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsInJlczNfMDI5Iiwic2V4cF9vZl91cGRhdGUiLCJyZXMwXzAzOCIsImFyZzJfMDQxIiwiYXJnMV8wNDAiLCJhcmcwXzAzOSIsInJlczBfMDQyIiwicmVzMV8wNDMiLCJyZXMyXzA0NCIsImFyZzNfMDQ4IiwiYXJnMl8wNDciLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNTAiLCJyZXMyXzA1MSIsInJlczNfMDUyIiwiYXJnMV8wNTQiLCJ1cGRhdGVfb2ZfeW9qc29uIiwidjMiLCJ2MiQxIiwidjIkMiIsInYzJDAiLCJ5b2pzb25fb2ZfdXBkYXRlIiwic2V0X3VwZGF0ZSIsImV4cGxhaW5UaGlzTW9kZWwiLCJ1IiwiYiIsImZlZWRiYWNrX29wdGlvbiIsInBvc3QiLCJwcmUiLCJmb3JtJDAiLCJmZWVkYmFjayIsImZvcm0kMSIsImZlZWRiYWNrX29wdGlvbiQwIiwiZm9ybV9pZCQwIiwiZ3JvdXBfaWQkMCIsInBvc3RfZm9ybSIsImZvcm0kMiIsInByZV9mb3JtIiwiZm9ybSQzIiwicG9zdF9leGFtcGxlIiwicHJlX2V4YW1wbGUiLCJleGFtcGxlJDAiLCJmb3JtJDQiLCJmb3JtX2lkJDEiLCJncm91cF9pZCQxIiwiZyIsInBvc3RfZ3JvdXAiLCJwcmVfZ3JvdXAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJvd19oZWlnaHRfMDA0IiwiY29sX3dpZHRoXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfd2lkdGhfMDA3Iiwicm93X2hlaWdodF8wMDUiLCJjb2xfd2lkdGhfMDIyIiwicm93X2hlaWdodF8wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInJvd19oZWlnaHRfZmllbGQiLCJjb2xfd2lkdGhfZmllbGQiLCJjb2xfd2lkdGhfdmFsdWUiLCJyb3dfaGVpZ2h0X3ZhbHVlIiwidl9jb2xfd2lkdGgiLCJ2X3Jvd19oZWlnaHQiLCJjbGlwYm9hcmRfc2hpbV9pZCIsImdldF9lbGVtX2J5X2lkIiwiZG9jIiwiZ2V0X2NoaWxkX3dpdGhfY2xhc3MiLCJjbGFzc05hbWUiLCJzaWJsaW5nJDEiLCJzaWJsaW5nJDAiLCJkYXRlX25vdyIsInRpbWVzdGFtcCIsImdldF9rZXkiLCJjdHJsX2hlbGQiLCJzaGlmdF9oZWxkIiwiYWx0X2hlbGQiLCJtZXRhX2hlbGQiLCJudW1fY2xpY2tzIiwiaXNfZG91YmxlX2NsaWNrIiwiZG93bmxvYWRfc3RyaW5nX2ZpbGUiLCJjb250ZW50X3R5cGUiLCJjb250ZW50cyIsImJsb2IiLCJkb3dubG9hZF9qc29uIiwicmVhZF9maWxlIiwiZmlsZSIsIm9wdGlvbiIsInNldF9sb2NhbHN0b3JlIiwibG9jYWxfc3RvcmUiLCJnZXRfbG9jYWxzdG9yZSIsImNsZWFyX2xvY2Fsc3RvcmUiLCJjb25maXJtIiwibWVzc2FnZSIsImxvZyIsImZvY3VzX2NsaXBib2FyZF9zaGltIiwiY2xpcGJvYXJkX3NoaW0iLCJjb3B5Iiwic2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlIiwiY2FyZXRfZWxlbSIsIm1haW4iLCJzZXRfY3VycmVudCIsImZyYWciLCJmcmFnJDAiLCJoaXN0b3J5IiwiZ2V0X2N1cnJlbnQiLCJmcmFnbWVudF9vZl91cmwiLCJwcmVmaXgiLCJzYXZlX3NldHRpbmdzX2tleSIsInNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkiLCJzYXZlX3NjcmF0Y2hfa2V5Iiwic2F2ZV9kb2N1bWVudGF0aW9uX2tleSIsImN1cl9leGVyY2lzZV9rZXkiLCJmdWxsX2tleSIsInNhdmUiLCJ2YWx1ZSIsImxvYWQiLCJzYXZlJDAiLCJsb2FkJDAiLCJzZXJpYWxpemUkMCIsImRlc2VyaWFsaXplJDAiLCJzYXZlJDEiLCJsb2FkJDEiLCJleHBvcnQkMSIsImltcG9ydCQxIiwicHBfcGVyc2lzdGVudCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsInNleHBfb2ZfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnQiLCJ0b19wZXJzaXN0ZW50Iiwib2ZfcGVyc2lzdGVudCIsInNlcmlhbGl6ZSQxIiwic2NyYXRjaCIsImRlc2VyaWFsaXplJDEiLCJzYXZlJDIiLCJpbml0JDEiLCJsb2FkJDIiLCJleHBvcnQkMiIsImltcG9ydCQyIiwicHBfcGVyc2lzdGVudCQwIiwic2hvd19wZXJzaXN0ZW50JDAiLCJwZXJzaXN0ZW50X29mX3NleHAkMCIsInNleHBfb2ZfcGVyc2lzdGVudCQwIiwicGVyc2lzdGVudF9vZl95b2pzb24kMCIsInlvanNvbl9vZl9wZXJzaXN0ZW50JDAiLCJ0b19wZXJzaXN0ZW50JDAiLCJzdHJpbmciLCJvZl9wZXJzaXN0ZW50JDAiLCJzZXJpYWxpemUkMiIsImRlc2VyaWFsaXplJDIiLCJzYXZlJDMiLCJpbml0JDIiLCJkb2N1bWVudGF0aW9uIiwibG9hZCQzIiwiZXhwb3J0JDMiLCJpbXBvcnQkMyIsImtleXN0cmluZ19vZl9rZXkiLCJrZXlzdHJpbmdfb2YiLCJrZXlfb2Zfa2V5c3RyaW5nIiwia2V5c3RyaW5nIiwic2F2ZV9leGVyY2lzZV9rZXkiLCJzYXZlX2V4ZXJjaXNlIiwiaW5pdF9leGVyY2lzZSIsImxvYWRfZXhlcmNpc2UiLCJzYXZlJDQiLCJpbml0JDMiLCJsb2FkJDQiLCJmaXJzdF9zcGVjIiwiZmlyc3Rfa2V5IiwicHJlcF9leGVyY2lzZV9leHBvcnQiLCJzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0IiwiZXhwb3J0JDQiLCJpbXBvcnQkNCIsImV4ZXJjaXNlX2V4cG9ydCIsInBlcnNpc3RlbnRfc3RhdGUiLCJzcGVjJDAiLCJlcnJvcl9zb3VyY2VfMDIyIiwicHBfdGltZXN0YW1wIiwic2hvd190aW1lc3RhbXAiLCJ0aW1lc3RhbXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3RpbWVzdGFtcCIsInRpbWVzdGFtcF9vZl9zZXhwIiwic2V4cF9vZl90aW1lc3RhbXAiLCJwcF91aV9zdGF0ZSIsInNob3dfdWlfc3RhdGUiLCJ1aV9zdGF0ZV9vZl95b2pzb24iLCJmb250X21ldHJpY3NfZmllbGQiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfZmllbGQiLCJtb3VzZWRvd25fZmllbGQiLCJhY3RpdmVfZWRpdG9yX2ZpZWxkIiwiYWN0aXZlX2VkaXRvcl92YWx1ZSIsIm1vdXNlZG93bl92YWx1ZSIsInNob3dfYmFja3BhY2tfdGFyZ2V0c192YWx1ZSIsImZvbnRfbWV0cmljc192YWx1ZSIsInlvanNvbl9vZl91aV9zdGF0ZSIsInZfYWN0aXZlX2VkaXRvciIsInZfbW91c2Vkb3duIiwidl9zaG93X2JhY2twYWNrX3RhcmdldHMiLCJ2X2ZvbnRfbWV0cmljcyIsInVpX3N0YXRlX29mX3NleHAiLCJzZXhwXzAwMyIsImZpZWxkX3NleHBzXzAwNCIsImZvbnRfbWV0cmljc18wMDUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfMDA3IiwibW91c2Vkb3duXzAwOSIsImFjdGl2ZV9lZGl0b3JfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDE3IiwiZmllbGRfbmFtZV8wMTUiLCJ0YWlsXzAyNCIsImZpZWxkX3NleHBfMDE2JDQiLCJmaWVsZF9zZXhwXzAxNiIsInhfMDI1IiwiZmllbGRfc2V4cF8wMTYkMCIsImZ2YWx1ZV8wMjAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZnZhbHVlXzAxOSIsImZpZWxkX3NleHBfMDE2JDIiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMyIsImFjdGl2ZV9lZGl0b3JfMDEyIiwibW91c2Vkb3duXzAxMCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wMDgiLCJmb250X21ldHJpY3NfMDA2Iiwic2V4cF9vZl91aV9zdGF0ZSIsImFjdGl2ZV9lZGl0b3JfMDMzIiwibW91c2Vkb3duXzAzMSIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wMjkiLCJmb250X21ldHJpY3NfMDI3IiwiYXJnXzAzNCIsImJuZHNfMDI2IiwiYXJnXzAzMiIsImJuZHNfMDI2JDAiLCJhcmdfMDMwIiwiYm5kc18wMjYkMSIsImFyZ18wMjgiLCJibmRzXzAyNiQyIiwidWlfc3RhdGVfaW5pdCIsImN1dG9mZiIsImJsYW5rIiwibG9hZF9lZGl0b3JzIiwic2F2ZV9lZGl0b3JzIiwiaW5pdF9tb2RlbCIsInVpX3N0YXRlIiwic2F2ZV9hbmRfcmV0dXJuIiwicmVzZXQiLCJuZXdfbW9kZWwiLCJlcnJvcl9zb3VyY2VfMDMyIiwiZXJyb3Jfc291cmNlXzA0NyIsImVycm9yX3NvdXJjZV8wNTgiLCJlcnJvcl9zb3VyY2VfMDc2IiwiZXJyb3Jfc291cmNlXzA4MCIsImVycm9yX3NvdXJjZV8wOTEiLCJlcnJvcl9zb3VyY2VfMTA5IiwiZXJyb3Jfc291cmNlXzI1MCIsInBwX2V2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uIiwic2hvd19ldmFsdWF0aW9uX3NldHRpbmdzX2FjdGlvIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfIiwic2V4cF9vZl9ldmFsdWF0aW9uX3NldHRpbmdzX2FjIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfJDAiLCJ5b2pzb25fb2ZfZXZhbHVhdGlvbl9zZXR0aW5nc18iLCJwcF9zZXR0aW5nc19hY3Rpb24iLCJzaG93X3NldHRpbmdzX2FjdGlvbiIsInNldHRpbmdzX2FjdGlvbl9vZl9zZXhwIiwic2V4cF8wMDkiLCJ0YWdfMDEwIiwic2V4cF9hcmdzXzAxMSIsImFyZzBfMDEyIiwicmVzMF8wMTMiLCJzZXhwX2FyZ3NfMDE2IiwiYXJnMF8wMTciLCJyZXMwXzAxOCIsInJlczBfMDIzIiwic2V4cF9vZl9zZXR0aW5nc19hY3Rpb24iLCJyZXMwXzAyNyIsInNldHRpbmdzX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2V0dGluZ3NfYWN0aW9uIiwicHBfc3RlcHBlcl9hY3Rpb24iLCJzaG93X3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2Zfc2V4cCIsInNleHBfMDM0IiwidGFnXzAzNSIsInNleHBfYXJnc18wMzYiLCJzZXhwX29mX3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBwZXJfYWN0aW9uIiwicHBfYWdlbnQiLCJzaG93X2FnZW50IiwiYWdlbnRfb2Zfc2V4cCIsInNleHBfMDQ0Iiwic2V4cF9vZl9hZ2VudCIsImFnZW50X29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudCIsInBwX2FnZW50X2FjdGlvbiIsInNob3dfYWdlbnRfYWN0aW9uIiwiYWdlbnRfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA0OSIsInRhZ18wNTAiLCJzZXhwX2FyZ3NfMDUxIiwicmVzMF8wNTMiLCJzZXhwX29mX2FnZW50X2FjdGlvbiIsImFyZzBfMDU0IiwiYWdlbnRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudF9hY3Rpb24iLCJwcF9zZXRfbWV0YSIsInNob3dfc2V0X21ldGEiLCJzZXRfbWV0YV9vZl9zZXhwIiwic2V4cF8wNjAiLCJ0YWdfMDYxIiwic2V4cF9hcmdzXzA2MiIsInNleHBfYXJnc18wNjciLCJhcmcwXzA2OCIsInJlczBfMDY5Iiwic2V4cF9vZl9zZXRfbWV0YSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V0X21ldGFfb2ZfeW9qc29uIiwieW9qc29uX29mX3NldF9tZXRhIiwicHBfYmVuY2htYXJrX2FjdGlvbiIsInNob3dfYmVuY2htYXJrX2FjdGlvbiIsImJlbmNobWFya19hY3Rpb25fb2Zfc2V4cCIsInNleHBfMDc3Iiwic2V4cF9vZl9iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYmVuY2htYXJrX2FjdGlvbiIsInBwX2VkaXRvcl9hY3Rpb24iLCJzaG93X2VkaXRvcl9hY3Rpb24iLCJlZGl0b3JfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA4MiIsInRhZ18wODMiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMF8wODUiLCJzZXhwX29mX2VkaXRvcl9hY3Rpb24iLCJhcmcwXzA4NyIsInJlczBfMDg4IiwiZWRpdG9yX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZWRpdG9yX2FjdGlvbiIsInBwX2NlbGxfYWN0aW9uIiwic2hvd19jZWxsX2FjdGlvbiIsImNlbGxfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA5MyIsInRhZ18wOTQiLCJzZXhwX2FyZ3NfMDk1IiwiYXJnMF8wOTYiLCJzZXhwX2FyZ3NfMTAwIiwiYXJnMF8xMDEiLCJyZXMwXzEwMiIsInNleHBfb2ZfY2VsbF9hY3Rpb24iLCJhcmcwXzEwMyIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJjZWxsX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2VsbF9hY3Rpb24iLCJhMCQ1IiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTAkOSIsImEwJDEwIiwiYTAkMTEiLCJhMCQxMiIsImEwJDEzIiwiYTAkMTQiLCJhMCQxNSIsInNleHBfMTExIiwidGFnXzExMiIsInNleHBfYXJnc18xNjMiLCJhcmcwXzE2NCIsInJlczBfMTY1Iiwic2V4cF9hcmdzXzE4OCIsImFyZzBfMTg5IiwicmVzMF8xOTAiLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsInNleHBfYXJnc18xMjMiLCJyZXMwXzEyNSIsInNleHBfYXJnc18yMDUiLCJhcmcwXzIwNiIsInJlczBfMjA3IiwicmVzMF8xMTUiLCJzZXhwX2FyZ3NfMTkzIiwiYXJnMV8xOTUiLCJhcmcwXzE5NCIsInJlczBfMTk2IiwicmVzMV8xOTciLCJzZXhwX2FyZ3NfMTQ4IiwiYXJnMF8xNDkiLCJyZXMwXzE1MCIsInNleHBfYXJnc18xNTgiLCJhcmcwXzE1OSIsInNleHBfYXJnc18xMzMiLCJzZXhwX2FyZ3NfMTUzIiwiYXJnMF8xNTQiLCJyZXMwXzE1NSIsInNleHBfYXJnc18xNDMiLCJhcmcwXzE0NCIsInJlczBfMTQ1Iiwic2V4cF9hcmdzXzE3MyIsImFyZzBfMTc0IiwicmVzMF8xNzUiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzgiLCJhcmcwXzE3OSIsInJlczBfMTgwIiwic2V4cF9hcmdzXzEyOCIsImFyZzBfMTI5Iiwic2V4cF9hcmdzXzEzOCIsImFyZzBfMTM5IiwicmVzMF8xNDAiLCJhcmcwXzIwOCIsInJlczBfMjA5IiwiYXJnMF8yMTAiLCJyZXMwXzIxMSIsImFyZzBfMjI0IiwicmVzMF8yMjUiLCJhcmcwXzIyNiIsInJlczBfMjI3IiwiYXJnMF8yMjgiLCJyZXMwXzIyOSIsImFyZzBfMjMwIiwicmVzMF8yMzEiLCJhcmcwXzIzMiIsInJlczBfMjMzIiwiYXJnMF8yMzQiLCJyZXMwXzIzNSIsImFyZzBfMjM2IiwicmVzMF8yMzciLCJhcmcwXzIzOCIsInJlczBfMjM5IiwiYXJnMV8yNDEiLCJhcmcwXzI0MCIsInJlczBfMjQyIiwicmVzMV8yNDMiLCJhcmcwXzI0NCIsInJlczBfMjQ1IiwiYXJnMF8yNDYiLCJyZXMwXzI0NyIsInlvanNvbl9hcmdzJDciLCJ2MCQxNSIsInYwJDE2IiwieW9qc29uX2FyZ3MkNiIsInYwJDEzIiwidjAkMTQiLCJ5b2pzb25fYXJncyQ1IiwidjAkMTEiLCJ2MCQxMiIsInlvanNvbl9hcmdzJDEzIiwidjAkMjciLCJ2MCQyOCIsInlvanNvbl9hcmdzJDEyIiwidjAkMjUiLCJ2MCQyNiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjAkMjEiLCJ2MCQyMiIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQxNyIsInYwJDM1IiwidjAkMzYiLCJ5b2pzb25fYXJncyQxNiIsInYwJDMzIiwidjAkMzQiLCJ5b2pzb25fYXJncyQxNSIsInYwJDMxIiwidjAkMzIiLCJ5b2pzb25fYXJncyQxNCIsInYwJDI5IiwidjAkMzAiLCJzZXhwXzI1MiIsInRhZ18yNTMiLCJzZXhwX2FyZ3NfMjU5IiwiYXJnMF8yNjAiLCJyZXMwXzI2MSIsInNleHBfYXJnc18yNTQiLCJhcmcwXzI1NSIsInJlczBfMjU2IiwiYXJnMF8yNjIiLCJyZXMwXzI2MyIsImFyZzBfMjY0IiwicmVzMF8yNjUiLCJpc19lZGl0Iiwic19hY3Rpb24iLCJhIiwicmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSIsInNob3VsZF9zY3JvbGxfdG9fY2FyZXQiLCJtZXRhX2FjdGlvbiIsImFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdCIsImFnZW50X2FjdGlvbiIsInN1Z2dlc3Rpb24iLCJjb21wbGV0aW9uIiwic3RhcnQiLCJzYW1wbGVfMSIsInN0cl90b19pbnNlcnRzIiwiYyQwIiwiYWN0aW9uc18xIiwidGltZSIsImZpbmlzaCIsImVsYXBzZWQiLCJwcmludCIsImFjdGl2ZV9lZGl0b3IiLCJhY3RpdmVfZWRpdG9yJDAiLCJlbnZfaW5pdCIsImluZGV4IiwiaW5kZXgkMCIsImNpIiwiZGJfbmFtZSIsInRhYmxlX25hbWUiLCJpc19hY3Rpb25fbG9nZ2VkIiwia3Zfc3RvcmUiLCJkYiIsIndpdGhfZGIiLCJlcnJvciIsInVwZ3JhZGUiLCJhZGQiLCJnZXRfYWxsIiwiY2xlYXJfYW5kIiwiY2FsbGJhY2siLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfcyIsInNob3dfcyIsInNfb2ZfeW9qc29uIiwieW9qc29uX29mX3MiLCJzX29mX3NleHAiLCJ4XzAxMyIsInNleHBfb2ZfcyIsInhfMDE0IiwidXBkYXRlIiwidHMiLCJnZXRfYW5kIiwiZW50cmllcyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDY0IiwicHBfYWxsIiwic2hvd19hbGwiLCJhbGxfb2Zfc2V4cCIsInNldHRpbmdzXzAwNCIsImV4cGxhaW5UaGlzTW9kZWxfMDA2Iiwic2NyYXRjaF8wMDgiLCJleGVyY2lzZV8wMTAiLCJkb2N1bWVudGF0aW9uXzAxMiIsImxvZ18wMTQiLCJkdXBsaWNhdGVzXzAxNiIsImV4dHJhXzAxNyIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmdmFsdWVfMDI2IiwiZmllbGRfc2V4cF8wMTkkMSIsImZ2YWx1ZV8wMjQiLCJmaWVsZF9zZXhwXzAxOSQyIiwiZmllbGRfc2V4cF8wMTkkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE5JDUiLCJmdmFsdWVfMDIyIiwibG9nXzAxNSIsImRvY3VtZW50YXRpb25fMDEzIiwiZXhlcmNpc2VfMDExIiwic2NyYXRjaF8wMDkiLCJleHBsYWluVGhpc01vZGVsXzAwNyIsInNldHRpbmdzXzAwNSIsInNleHBfb2ZfYWxsIiwibG9nXzA0MiIsImRvY3VtZW50YXRpb25fMDQwIiwiZXhlcmNpc2VfMDM4Iiwic2NyYXRjaF8wMzYiLCJleHBsYWluVGhpc01vZGVsXzAzNCIsInNldHRpbmdzXzAzMiIsImFyZ18wNDMiLCJibmRzXzAzMSIsImFyZ18wNDEiLCJibmRzXzAzMSQwIiwiYXJnXzAzOSIsImJuZHNfMDMxJDEiLCJhcmdfMDM3IiwiYm5kc18wMzEkMiIsImFyZ18wMzUiLCJibmRzXzAzMSQzIiwiYXJnXzAzMyIsImJuZHNfMDMxJDQiLCJhbGxfb2ZfeW9qc29uIiwiZXhwbGFpblRoaXNNb2RlbF9maWVsZCIsImV4ZXJjaXNlX2ZpZWxkIiwibG9nX2ZpZWxkIiwibG9nX3ZhbHVlIiwiZXhlcmNpc2VfdmFsdWUiLCJleHBsYWluVGhpc01vZGVsX3ZhbHVlIiwieW9qc29uX29mX2FsbCIsInZfbG9nIiwidl9leGVyY2lzZSIsInZfZXhwbGFpblRoaXNNb2RlbCIsInBwX2FsbF9mMjIiLCJzaG93X2FsbF9mMjIiLCJhbGxfZjIyX29mX3NleHAiLCJmaWVsZF9zZXhwc18wNDYiLCJzZXR0aW5nc18wNDciLCJzY3JhdGNoXzA0OSIsImV4ZXJjaXNlXzA1MSIsImxvZ18wNTMiLCJkdXBsaWNhdGVzXzA1NSIsImV4dHJhXzA1NiIsInNleHBfMDQ1JDAiLCJmaWVsZF9zZXhwc18wNTkiLCJmaWVsZF9uYW1lXzA1NyIsInRhaWxfMDY2IiwiZmllbGRfc2V4cF8wNTgkNCIsImZpZWxkX3NleHBfMDU4IiwieF8wNjciLCJmaWVsZF9zZXhwXzA1OCQwIiwiZnZhbHVlXzA2MyIsImZpZWxkX3NleHBfMDU4JDEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTgkMiIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQzIiwiZnZhbHVlXzA2MSIsImxvZ18wNTQiLCJleGVyY2lzZV8wNTIiLCJzY3JhdGNoXzA1MCIsInNldHRpbmdzXzA0OCIsInNleHBfb2ZfYWxsX2YyMiIsImxvZ18wNzUiLCJleGVyY2lzZV8wNzMiLCJzY3JhdGNoXzA3MSIsInNldHRpbmdzXzA2OSIsImFyZ18wNzYiLCJibmRzXzA2OCIsImFyZ18wNzQiLCJibmRzXzA2OCQwIiwiYXJnXzA3MiIsImJuZHNfMDY4JDEiLCJhcmdfMDcwIiwiYm5kc18wNjgkMiIsImFsbF9mMjJfb2ZfeW9qc29uIiwieW9qc29uX29mX2FsbF9mMjIiLCJta19hbGwiLCJleHBvcnRfYWxsIiwiaW1wb3J0X2FsbCIsImFsbCIsImFsbF9mMjIiLCJ1cGRhdGVfc2V0dGluZ3MiLCJuZXdfbW9kZSIsImV2YWx1YXRpb24iLCJldmFsdWF0aW9uJDAiLCJleHBsYWluVGhpcyIsInNldHRpbmdzJDAiLCJleHBsYWluVGhpcyQwIiwic2V0dGluZ3MkMSIsImEkMCIsImhpZ2hsaWdodCIsImV4cGxhaW5UaGlzJDEiLCJzZXR0aW5ncyQyIiwibW9kZSIsInNjaGVkdWxlX2V2YWx1YXRpb24iLCJzY2hlZHVsZV9hY3Rpb24iLCJlbGFicyIsImV2YWxfcnMiLCJycXMiLCJycyIsIm5ld19ycyIsInN0ZXBfcnMiLCJuZXdfcnMkMCIsInVwZGF0ZV9jYWNoZWRfZGF0YSIsIm0iLCJ1cGRhdGVfc3RhdGljcyIsInVwZGF0ZV9keW5hbWljcyIsInVwZGF0ZV9zdGF0aWNzJDAiLCJtJDAiLCJwZXJmb3JtX2FjdGlvbiIsImVkIiwibW9kZWwkMCIsImVyciIsInBlcmZvcm1fYWN0aW9ucyIsImFzIiwibW9kZWwkMSIsInN3aXRjaF9zY3JhdGNoX3NsaWRlIiwic3BlY3MkMCIsImV4cG9ydF9wZXJzaXN0ZW50X2RhdGEiLCJ1aV9zdGF0ZV91cGRhdGUiLCJmb250X21ldHJpY3MiLCJhcHBseSIsImVkJDAiLCJ6aXBwZXJfaW5pdCIsImVkX3N0ciIsInokMCIsImVkaXRvcnMkMSIsImVkaXRvcnMkMiIsImUkMCIsImVkaXRvcnMkMyIsImZpbGUkMCIsImRhdGEkMSIsImVkaXRvcnMkNCIsImluc3RydWN0b3JfbW9kZSQwIiwiZWRpdG9ycyQ1IiwiYWN0aW9uJDAiLCJyIiwiciQwIiwiZXZhbHMiLCJldmFsJDAiLCJsYW0iLCJ1cF9hcnJvdyIsImRvd25fYXJyb3ciLCJsZWZ0X2Fycm93IiwicmlnaHRfYXJyb3ciLCJuYnNwIiwiendzcCIsInR5cGVBcnJvd1N5bSIsImNhc3RBcnJvd1N5bSIsImVsbGlwc2lzIiwibGVuZ3RoIiwic3RvcCIsImNvdW50IiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInRwYXRfdmlldyIsInR5X3ZpZXciLCJjbHMiLCJhbGlhc192aWV3Iiwidmlld190eSIsIm9wdCQwIiwic3RyaXBfb3V0ZXJfcGFyZW5zIiwicHJvdiIsInQyIiwidDEiLCJwYXJlbl92aWV3IiwidDAiLCJ0cyQwIiwiY3RyX3ZpZXciLCJ0c192aWV3cyIsInQwJDAiLCJ0cyQxIiwidCQwIiwibmFtZSQwIiwidCQxIiwibmFtZSQxIiwidHlwJDAiLCJjdHIiLCJ2aWV3IiwidHkiLCJwb2x5X2lkX2V4IiwidHAiLCJ0eXBmdW5fdmFyIiwidHlwZV9mdW5jdGlvbnNfYmFzaWMiLCJ0eXBmdW5hcHBfZXhwX2V4IiwiZXhwX3RmdW4iLCJ0eXBmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsImZfaWQiLCJ0eXBfaWQiLCJ0eXBmdW5hcHBfZXhwIiwidHlwZnVuYXBzIiwidHlwYW5uX3BhdF9jb2xvcmluZ19pZHMiLCJwYXRfaWQiLCJ0eXBhbm5fcGF0IiwidHlwYW5uIiwidHlwX2RlZiIsInR5YWxpYXNfYmFzZV9leHBfY29sb3JpbmdfaWRzIiwidHBhdF9pZCIsImRlZl9pZCIsInR5YWxpYXNfZXhwIiwidHlhbGlhc19leHBzIiwiZXhwbGFuYXRpb24kMCIsImV4cGxhbmF0aW9uJDEiLCJleHBsYW5hdGlvbiQyIiwiY29tbWEiLCJ0dXBsZV90eXAiLCJ0dXBsZTBfdHlwIiwidHlwX2VsZW0xIiwidHlwX2VsZW0yIiwidHVwbGUyX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtMV9pZCIsImVsZW0yX2lkIiwiY29tbWEkMCIsInR1cGxlMl90eXAiLCJ0eXBfZWxlbTEkMCIsInR5cF9lbGVtMiQwIiwidHlwX2VsZW0zIiwidHVwbGUzX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtM19pZCIsImNvbW1hJDEiLCJ0dXBsZTNfdHlwIiwidHVwbGUiLCJ0dXBsZTAiLCJ0dXBsZTIiLCJ0dXBsZTMiLCJ0dXBsZV9wYXQiLCJwYXQxIiwicGF0MiIsInR1cGxlX3BhdF9zaXplMl9jb2xvcmluZ19pZHMiLCJ0dXBsZV9wYXRfc2l6ZTIiLCJwYXQxJDAiLCJwYXQyJDAiLCJwYXQzIiwidHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyIsInR1cGxlX3BhdF9zaXplMyIsInR1cGxlX2V4YW1wbGVfMSIsInR1cGxlX2V4YW1wbGVfMiIsInR1cGxlX2V4cCIsImV4cDEiLCJleHAyIiwidHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyIsImV4cDFfaWQiLCJleHAyX2lkIiwidHVwbGVfZXhwX3NpemUyIiwiZXhwMSQwIiwiZXhwMiQwIiwiZXhwMyIsInR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMiLCJleHAzX2lkIiwidHVwbGVfZXhwX3NpemUzIiwidHVwbGVzIiwidHVwbGVzMiIsInR1cGxlczMiLCJzdmciLCJhdHRycyIsInZhbHVlcyIsInNvcnRlZF92YWx1ZXMiLCJ5Iiwib3JkaW5hbHMiLCJ2YWx1ZXMkMCIsIm1rX25vZGUiLCJzaGFwZSIsIm1pZCIsInBlcmZvcm0iLCJvcCIsInRyZWUiLCJnbyIsImludGVydmFsIiwibm9kZSIsImIkMCIsIm5vZGUkMCIsImwkMCIsImwkMSIsInIkMSIsInN0YXR1cyIsIm5ld19yb290IiwibXNnIiwiaW5zZXJ0IiwiZGVsZXRlJDAiLCJjb21wbGVtZW50X2ludGVyc2VjdGlvbiIsInN0YWNrIiwicmVzdCIsImIkMSIsImEkMSIsInN0YWNrJDAiLCJvcmRpbmFsMiIsIm9yZGluYWwxIiwibzIiLCJvMSIsImNtZGZ1ZGdlIiwic3RoJDAiLCJ5JDAiLCJ5JDEiLCJ4JDIiLCJ5JDIiLCJkeCIsImR5IiwiaCIsImgkMCIsInYkMCIsInNjYWxlX2NtZCIsInNjYWxlX3giLCJzY2FsZV95IiwiZHkkMCIsImR4JDAiLCJkeCQxIiwiZHkkMSIsInNjYWxlIiwicmV2ZXJzZSIsInRyYW5zbGF0ZV9jbWQiLCJjbWQiLCJ0cmFuc2xhdGUiLCJzdHJpbmdfb2ZfZmxhZyIsInN0cmluZ19vZl9jb21tYW5kIiwiZHkkMiIsImR4JDIiLCJzd2VlcF9mbGFnIiwibGFyZ2VfYXJjX2ZsYWciLCJ4X2F4aXNfcm90YXRpb24iLCJyeSIsInJ4IiwicGF0aCIsImJ1ZmZlciIsImxpbmtlZF9lZGdlX2VxIiwiZTEiLCJlMiIsImNtZF9vZl9saW5rZWRfZWRnZSIsImVkZ2UiLCJzcmMiLCJkc3QiLCJyb3VuZF9jb3JuZXJzIiwibWF4X3JhZGlpIiwicnhfbWluIiwicnlfbWluIiwiY21kMiIsImNtZDEiLCJyeSQwIiwicngkMCIsImNsb2Nrd2lzZSIsInJ5JDEiLCJyeCQxIiwiY2xvY2t3aXNlJDAiLCJpc19sZWZ0X3NpZGUiLCJtZXJnZV9jb2luY2lkaW5nX3ZlcnRpY2FsX2VkZ2UiLCJlZGdlcyIsInJpZ2h0X2VkZ2VzIiwibGVmdF9lZGdlcyIsInRsIiwiaGQiLCJtZXJnZWRfbGVmdF9lZGdlcyIsIm1lcmdlZF9yaWdodF9lZGdlcyIsInZlcnRpY2FsX2NvbnRvdXJfZWRnZXMiLCJyZWN0cyIsImhlaWdodCIsIndpZHRoIiwibWluIiwibWF4X3giLCJtYXhfeSIsIm1heCIsIm1pbl9tYXgiLCJtYXhfbWluIiwiaXNfbGVmdDEiLCJpc19sZWZ0MiIsInNvcnRlZF92ZXJ0aWNhbF9zaWRlcyIsInNlZ21lbnRfdHJlZSIsInlzIiwibWtfY29udG91cl9lZGdlIiwieV9kc3QiLCJ5X3NyYyIsIm5ld19jb250b3VyX2VkZ2VzIiwidXBkYXRlZF90cmVlIiwidXBkYXRlZF90cmVlJDAiLCJuZXdfY29udG91cl9lZGdlcyQwIiwiY29ybmVyX3JhZGlpIiwidmVydGljYWxfY29udG91cl9lZGdlcyQwIiwiaXNfc3JjMiIsImlzX3NyYzEiLCJwdDEiLCJwdDIiLCJuZXh0IiwicHJldiIsInhfZHN0IiwieF9zcmMiLCJ4X2RzdCQwIiwieF9zcmMkMCIsImJ1aWxkX3BhdGgiLCJyYWlzZWRfc2hhZG93X2R4IiwicmFpc2VkX3NoYWRvd19keSIsImZ6ZXJvIiwidGlwX3dpZHRoIiwiY29uY2F2ZV9hZGoiLCJjb252ZXhfYWRqIiwic2hhZG93X2FkaiIsImNhcmV0X2FkanVzdCIsInNpZGUiLCJjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIiwic2hvcnRfdGlwX2hlaWdodCIsInN0cmV0Y2hfZHgiLCJleHRyYV90YWlsIiwiamFnZ2VkX2VkZ2VfaCIsImphZ2dlZF9lZGdlX3ciLCJzaG9ydF90aXBfd2lkdGgiLCJwb3Nfc3RyIiwiZnVkZ2UiLCJjb2RlX3N2Z19zaXplZCIsImxhc3QiLCJvcmlnaW4iLCJiYXNlX2NscyIsInBhdGhfY2xzIiwic3RoJDEiLCJhdHRyIiwic3RoJDIiLCJ0b3AiLCJsZWZ0Iiwic3R5bGUiLCJwb3NpdGlvbiIsImxlZnRfZnVkZ2UiLCJ0b3BfZnVkZ2UiLCJ3aWR0aF9mdWRnZSIsInN0aCQzIiwiaGVpZ2h0X2Z1ZGdlIiwic3RoJDQiLCJhYnNfcG9zaXRpb24iLCJjb2RlX3N2ZyIsInN0aCQ1Iiwic3RoJDYiLCJzdGgkNyIsImFic19wb3MiLCJyYWlzZWRfc2hhZG93X2ZpbHRlciIsInNvcnQiLCJzaGFkb3dfZmlsdGVyIiwiZmlsdGVycyIsInBwX3RpcF9zaGFwZSIsInNob3dfdGlwX3NoYXBlIiwidGlwX3NoYXBlX29mX3NleHAiLCJzZXhwX29mX3RpcF9zaGFwZSIsInRpcF9zaGFwZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfdGlwX3NoYXBlIiwidHJfYmwiLCJ3aXRoX2NoaWxkX2JvcmRlciIsInN0cmV0Y2hfeCIsInN0cmV0Y2hfeSIsImp1bmN0aW9uJDAiLCJkaWFnIiwianVuY3Rpb24kMSIsImRpYWckMCIsImJsX3RyIiwiaGVtaSIsInRsX2JyIiwianVuY3Rpb24iLCJicl90bCIsImxlZnRfdGlwX3BhdGgiLCJzX3giLCJzX3kiLCJqYWciLCJib3R0b21faGFsZiIsInRvcF9oYWxmIiwicmlnaHRfdGlwX3BhdGgiLCJ0aXBfbCIsInRpcF9yIiwib2Zmc2V0IiwibW9sZCIsIm1lYXN1cmVtZW50IiwiY19jbHMiLCJ0aXBfciQwIiwidGlwX2wkMCIsImlzX2NvbXBsZXRlIiwiaXNfY29uc2lzdGVudCIsImlzX2luX2J1ZmZlciIsInBsdXJhbGl0eSIsImxhYmVsJDAiLCJvZl9kZWxpbSIsIm9mX2RlbGltJDAiLCJvZl9ncm91dCIsImluZGVudCIsInNlY29uZGFyeV9pY29ucyIsInN0ciQwIiwib2Zfc2Vjb25kYXJ5Iiwib2Zfc2VnbWVudCIsImJ1ZmZlcl9pZHMiLCJub19zb3J0cyIsInNlZyIsImV4cGVjdGVkX3NvcnRzIiwib2ZfcGllY2UiLCJleHBlY3RlZF9zb3J0Iiwib2ZfdGlsZSIsImNoaWxkIiwiY2hpbGRyZW5fYW5kX3NvcnRzIiwiaG9sZXMiLCJzaW1wbGVfdmlldyIsInVuc2VsZWN0ZWQiLCJob2xlcyQwIiwib2ZfaG9sZSIsIm1lYXN1cmVkIiwic2V4cF9hcmdzXzAzMSIsInJlczBfMDMzIiwic2V4cF9hcmdzXzAxOSIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAxNSIsInJlczFfMDE2Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwiYXJnMF8wNDkiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiY29udGFpbmVyIiwiY29udGFpbmVyX3R5cGUiLCJidWZmZXJlZF9oZWlnaHQiLCJidWZmZXJlZF93aWR0aCIsImJ1ZmZlcmVkX2hlaWdodF9weCIsImJ1ZmZlcmVkX3dpZHRoX3B4IiwiY29udGFpbmVyX29yaWdpbl94IiwiY29udGFpbmVyX29yaWdpbl95IiwiaW5uZXIiLCJ2dHJpbSIsImJveCIsImlzX2xhc3QiLCJpc19maXJzdCIsInZ0cmltJDAiLCJ2dHJpbSQxIiwidnRyaW0kMiIsInN1YmplY3QiLCJ2aWV3JDAiLCJ4XzAwMiIsInhfMDAzIiwicHJlY2VkZW5jZV9Qcm9kIiwicHJlY2VkZW5jZV9BcnJvdyIsInByZWNlZGVuY2VfU3VtIiwicHJlY2VkZW5jZV9BcCIsInByZWNlZGVuY2VfQ29uc3QiLCJwcmVjZWRlbmNlIiwicGFkX2NoaWxkIiwiZW5mb3JjZV9pbmxpbmUiLCJpbmxpbmVfY2hvaWNlIiwicGFyYV9jaG9pY2UiLCJta19kZWxpbSIsInBhcmVudGhlc2l6ZSIsInBhcmVudGhlc2l6ZSQwIiwidHkkMCIsInR5MiIsInR5MSIsImQyIiwiZDEiLCJzdW1fbWFwIiwidnIiLCJjZW50ZXIiLCJoZWFkIiwiY2VudGVyJDAiLCJ0eSQxIiwidHkkMiIsInR5JDMiLCJkb2MkMSIsImRvYyQwIiwicHJvbW90ZV9hbm5vdCIsInByb21vdGUiLCJsYmwiLCJwcmVjZWRlbmNlX2NvbnN0IiwicHJlY2VkZW5jZV9Qb3dlciIsInByZWNlZGVuY2VfTm90IiwicHJlY2VkZW5jZV9UaW1lcyIsInByZWNlZGVuY2VfRGl2aWRlIiwicHJlY2VkZW5jZV9QbHVzIiwicHJlY2VkZW5jZV9NaW51cyIsInByZWNlZGVuY2VfQ29ucyIsInByZWNlZGVuY2VfRXF1YWxzIiwicHJlY2VkZW5jZV9MZXNzVGhhbiIsInByZWNlZGVuY2VfR3JlYXRlclRoYW4iLCJwcmVjZWRlbmNlX0FuZCIsInByZWNlZGVuY2VfT3IiLCJwcmVjZWRlbmNlX0NvbW1hIiwicHJlY2VkZW5jZV9tYXgiLCJkZWxpbV90ZXh0IiwiZW1wdHlfaG9sZSIsImVudiIsImxpc3RfbmlsIiwidHJpdiIsIndpbGQiLCJvcGVuX1BhcmVudGhlc2l6ZWQiLCJjbG9zZV9QYXJlbnRoZXNpemVkIiwic3ltX0Z1biIsImNvbG9uX0Z1biIsImFycm93X0Z1biIsImZpeF9GaXhGIiwiYXJyb3dfRml4RiIsImNvbG9uX0ZpeEYiLCJvcGVuX0Nhc2UiLCJjbG9zZV9DYXNlIiwiYmFyX1J1bGUiLCJhcnJvd19SdWxlIiwib3Blbl9DYXN0IiwiYXJyb3dfQ2FzdCIsImJhY2tfYXJyb3dfQ2FzdCIsImNsb3NlX0Nhc3QiLCJvcGVuX0ZhaWxlZENhc3QiLCJhcnJvd19GYWlsZWRDYXN0IiwiY2xvc2VfRmFpbGVkQ2FzdCIsIm1rX0VtcHR5SG9sZSIsIm1rX0ludmFsaWRUZXh0IiwibWtfU2VxdWVuY2UiLCJkb2MxIiwiZG9jMiIsIm1rX0ludExpdCIsIm1rX1N0cmluZ0xpdCIsIm1rX1Rlc3QiLCJta19GbG9hdExpdCIsIm1rX0Jvb2xMaXQiLCJta19Db25zdHJ1Y3RvckxpdCIsIm1rX0NvbnMiLCJta19MaXN0Q29uY2F0IiwibWtfY29tbWFfc2VxIiwibGQiLCJyZCIsIm1rX2NvbW1hX3NlcV9pbm5lciIsIm1rX0xpc3RMaXQiLCJta19UdXBsZSIsImVsdHMiLCJta19UeXBBcCIsIm1rX0FwIiwibWtfcmV2X0FwIiwiZHAiLCJpbmZvbWFwIiwic2hvd19jYXN0cyIsImRfbGlzdCIsIm9sIiwiZHAyIiwiZHAxIiwicHJlY2VkZW5jZV9vcCIsImRvYzIkMCIsImRvYzEkMCIsImRzIiwiZHAkMCIsImRwMiQwIiwiZHAxJDAiLCJwcmVjZWRlbmNlX29wJDAiLCJkcCQxIiwibWtfYmluX2Jvb2xfb3AiLCJta19iaW5faW50X29wIiwibWtfYmluX2Zsb2F0X29wIiwibWtfYmluX3N0cmluZ19vcCIsInNlbGVjdGVkX2hvbGVfaW5zdGFuY2UiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX3N0ZXBzIiwiY2hvc2VuX3N0ZXAiLCJuZXh0X3N0ZXBzIiwicmVjZW50X3N1YnN0IiwicHMiLCJwJDAiLCJkMiQxMCIsInAkMSIsInJlY2VudF9zdWJzdCQwIiwiZ28kMCIsImVudiQwIiwiZW5mb3JjZV9pbmxpbmUkMCIsImdvX2Nhc2VfcnVsZSIsImRjbGF1c2UiLCJoaWRkZW5fY2xhdXNlIiwiY2xhdXNlX2RvYyIsImdvX2Zvcm1hdHRhYmxlIiwibWtfbGVmdF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyIsIm1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzIiwiZF9kb2MiLCJkZWNvcmF0aW9uIiwidHkzIiwiZF9kb2MkMCIsImNhc3RfZGVjb3JhdGlvbiIsImRib2R5IiwicyQwIiwiYmluZGluZ3MiLCJib2R5X2RvYyIsInMkMSIsImJpbmRpbmdzJDAiLCJib2R5X2RvYyQwIiwicyQyIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwiZCQxIiwiZGJvZHkkMCIsImRkZWYiLCJiaW5kaW5ncyQxIiwiZGVmX2RvYyIsImRib2R5JDEiLCJkb2NfYm9keSIsImQkMiIsImQxJDAiLCJkMiQwIiwiZDEkMSIsImQxJDIiLCJkb2MxJDEiLCJkb2MyJDEiLCJkMiQxIiwiZDEkMyIsImRvYzIkMiIsImRvYzEkMiIsImQyJDIiLCJkMSQ0IiwiY19kb2MiLCJkMV9kb2MiLCJkMl9kb2MiLCJkMiQzIiwiZDEkNSIsImRvYzIkMyIsImRvYzEkMyIsImQkMyIsImQkNCIsImFjdCIsImtleXdvcmQiLCJmbHRfZG9jIiwiYWN0JDAiLCJrZXl3b3JkJDAiLCJkJDUiLCJlbnYkMSIsImQkNiIsImQyJDQiLCJkMSQ2IiwiZG9jMiQ0IiwiZG9jMSQ0IiwiZDIkNSIsImQxJDciLCJkb2MyJDUiLCJkb2MxJDUiLCJkJDciLCJkJDgiLCJkJDkiLCJkMiQ2IiwiZDEkOCIsImRvYzIkNiIsImRvYzEkNiIsImQyJDciLCJkMSQ5Iiwib3AkMCIsImRvYzIkNyIsImRvYzEkNyIsImQyJDgiLCJkMSQxMCIsIm9wJDEiLCJkb2MyJDgiLCJkb2MxJDgiLCJkMiQ5IiwiZDEkMTEiLCJvcCQyIiwiZG9jMiQ5IiwiZG9jMSQ5IiwiZiQwIiwiZHJzIiwiZHNjcnV0Iiwic2NydXRfZG9jIiwiZCQxMCIsImRvYyQzIiwiZG9jJDQiLCJzdGVwcGFibGUiLCJzdGVwcGVkIiwic3RlcCIsInN1YnN0aXR1dGlvbiIsImRvYyQyIiwid2l0aF9jbHMiLCJ2aWV3X29mX2xheW91dCIsImluamVjdCIsInJlc3VsdF9rZXkiLCJhbm5vdCIsInR4dCIsIm9iaiIsImRzMiIsInR4dDIiLCJkczEiLCJ0eHQxIiwiZGVjb3JhdGlvbnMiLCJ0ZXh0IiwicGFyZW50aGVzaXplZCIsIm9wdGlvbnMiLCJjb2RlX3RleHRfdmlldyIsImNvZGVfdmlldyIsInRlc3RfaW5zdGFuY2VfdmlldyIsImp1bXBfdG9fdGVzdCIsImVmZmVjdDEiLCJlZmZlY3QyIiwicmVzdWx0MSIsInRlc3RfcmVwb3J0X3ZpZXciLCJkZXNjcmlwdGlvbiIsImluc3RhbmNlX3JlcG9ydHMiLCJ0ZXN0X3JlcG9ydHNfdmlldyIsInRlc3RfcmVzdWx0cyIsInRlc3RfcmVzdWx0cyQwIiwidGVzdF9iYXJfc2VnbWVudCIsInJlcG9ydHMiLCJ0ZXN0X2JhciIsInBlcmNlbnRfdmlldyIsInBlcmNlbnRhZ2UiLCJ0ZXN0X3BlcmNlbnRhZ2UiLCJ0ZXN0X3RleHQiLCJ0ZXN0X3N1bW1hcnkiLCJ2aWV3X29mX21haW5fdGl0bGVfYmFyIiwidGl0bGVfdGV4dCIsImluc3BlY3Rvcl92aWV3IiwidGVzdF9tYXAiLCJpbnN0YW5jZXMiLCJ0ZXN0X3RydWVfZXgiLCJ0ZXN0X2ZhbHNlX2V4IiwiZXhwX2JvZHkiLCJ0ZXN0X2V4cF9jb2xvcmluZ19pZHMiLCJib2R5X2lkIiwidGVzdF9leHAiLCJ0ZXN0cyIsImV4cGxhbmF0aW9uJDMiLCJpbnRfdHlwIiwiZmxvYXRfdHlwIiwiYm9vbF90eXAiLCJzdHJfdHlwIiwidmFyX3R5cCIsImZsb2F0JDAiLCJib29sIiwidmFyJDAiLCJleHBsYW5hdGlvbiQ2IiwiZXhwbGFuYXRpb24kNSIsImV4cGxhbmF0aW9uJDQiLCJ3aWxkX3BhdCIsImludGxpdF9wYXQiLCJmbG9hdGxpdF9wYXQiLCJib29sbGl0X3BhdCIsInN0cmxpdF9wYXQiLCJ0cml2X3BhdCIsInZhcl9wYXQiLCJjdHJfcGF0IiwiaW50bGl0IiwiZmxvYXRsaXQiLCJib29sbGl0Iiwic3RybGl0IiwidHJpdl9leHAiLCJ0cml2X2V4cHMiLCJkZWZlcnJhbF9leHBfZXgiLCJkZWZlcnJhbF9leHAiLCJkZWZlcnJhbF9leHBzIiwiYm9vbF9leHAiLCJib29sX2V4cHMiLCJpbnRfZXhwIiwiaW50X2V4cHMiLCJmbG9hdF9leHAiLCJmbG9hdF9leHBzIiwic3RyaW5nX2V4cCIsInN0cmluZ19leHBzIiwidmFyX2V4cCIsInZhcl9leHBzIiwiY3RyX2V4cCIsImRpdmlkZXIiLCJsYWJlbGxlZF9zdW1fdHlwIiwic3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYiLCJzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGUiLCJsYWJlbGxlZF9zdW1fdHlwcyIsInN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmcyIsInN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZSQwIiwiYmFja3BhY2tfc2VsX3ZpZXciLCJ4X29mZiIsInlfb2ZmIiwib3BhY2l0eSIsImhlaWdodF9oZWFkIiwiY2FuX3B1dF9kb3duIiwic2lkZSQwIiwiY2FyZXRfYWRqIiwiY2FyZXRfYWRqX3B4IiwibWF4X2Rpc3AiLCJ2ZXJ0aWNhbF9kaXNwIiwic2VsZWN0aW9uc19zdHlsZSIsInNjYWxlX2ZuIiwiaW5pdF9vcGFjaXR5IiwiaW5pdF9pZHgiLCJkeV9mbiIsImJhc2VfaGVpZ2h0IiwiaW5pdF95X29mZnNldCIsInZzIiwieV9vZmZzZXQiLCJ4X29mZnNldCIsIm5ld195X29mZnNldCIsIm5ld19pZHgiLCJuZXdfb3BhY2l0eSIsInNlbGVjdGlvbnMiLCJzZWxlY3Rpb25zX3ZpZXciLCJoZCQwIiwiam9pbmVyX3N0eWxlIiwiam9pbmVyIiwiZ2VuaWVfdmlldyIsImdlbmllX3N0eWxlIiwiY2FyZXRfYmVuZCIsImNhcmV0X3dpZHRoX3N0cmFpZ2h0IiwiY2FyZXRfd2lkdGhfYmVudCIsImNhcmV0X3BhdGgiLCJjYXJldF9iZW5kX3BhcmFtIiwiY2FyZXRfd2lkdGhfcGFyYW0iLCJsX2FkaiIsImNhcmV0X3Bvc2l0aW9uX3JhZGlpIiwicl95Iiwicl94IiwiY2hpbGRfY29sb3JzIiwiZW1wdHkiLCJnZXRfY29sb3IiLCJtYXBwaW5nIiwiY29sb3IiLCJjb2xvciQwIiwibWFwcGluZyQwIiwidG9fbGlzdCIsImJhc2VfY2xzJDIiLCJiYXNlX2NscyQxIiwiYmFzZV9jbHMkMCIsInJ1biIsImFkaiIsImxfaG9vayIsInJfaG9vayIsInNpbXBsZV9zaGFyZF9wYXRoIiwic2ltcGxlX3NoYXJkIiwic2hhcGVzIiwic2ltcGxlX3NoYXJkX3NlbGVjdGVkIiwic2ltcGxlX3NoYXJkX2luZGljYXRlZCIsImhhc19jYXJldCIsInNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkIiwiY2FyZXQiLCJzaGFyZHMiLCJuZXh0X3N0ZXBfaW5kaWNhdGVkIiwibmV4dF9zdGVwX3NoYXJkc19pbmRpY2F0ZWQiLCJ0YWtlbl9zdGVwX2luZGljYXRlZCIsInRha2VuX3N0ZXBfc2hhcmRzX2luZGljYXRlZCIsInNoYWRvd2Z1ZGdlIiwic2hhcmRzX29mX3RpbGVzIiwidGlsZXMiLCJtMiIsIm0xIiwiYmlfbGluZXMiLCJyb3dzIiwic2hhcmRfcm93cyIsImludHJhX2xpbmVzIiwicm93X3NoYXJkcyIsInJvd19zaGFyZHMkMCIsIm9yaWdpbiQwIiwidl9kZWx0YSIsImludGVyX2xpbmVzIiwiY2xzcyIsInVuaV9saW5lcyIsIm1fZmlyc3QiLCJyb3ciLCJtX2xhc3Rfb2ZfZmlyc3QiLCJsX2xpbmUiLCJtYXhfY29sIiwibV9sYXN0IiwiaG9vayIsInJfbGluZSIsIm1pbl9jb2wiLCJzaGFyZF9yb3dzJDAiLCJyb3ckMCIsIm1fZmxhc3QiLCJpbmRpY2F0ZWQiLCJyYW5nZSIsInNob3dfYmFja3BhY2tfdGFyZ2V0cyIsInRlcm1zIiwidGVybV9yYW5nZXMiLCJ0aWxlIiwic2VsX3NoYXJkX3N2ZyIsInN0YXJ0X3NoYXBlIiwic2VsX29mX3BpZWNlIiwic2hhcmRfZGF0YSIsInNlbF9vZl90aWxlIiwidyIsInN0YXJ0X3NoYXBlJDAiLCJ0aWxlX3NoYXJkcyIsInNlbF9vZl9zZWdtZW50IiwiY2hpbGRyZW5fc2hhcmRzIiwic2VsZWN0ZWRfcGllY2VzIiwicjIiLCJsMSIsImluZGljYXRlZF9waWVjZV9kZWNvIiwibmliIiwicF9yIiwicF9sIiwicmFuZ2UkMCIsInRhcmdldHMiLCJjb250YWluZXJfc2hhcmRzIiwiYnAiLCJzaWJzIiwic3VmIiwic2licyQwIiwicHJvZmlsZSIsInJvb3RfdGFyZ2V0cyIsInRhcmdldHMkMCIsInRlcm1fZGVjb3JhdGlvbiIsImRlY28iLCJyX2VkZ2UiLCJsX2VkZ2UiLCJ0ZXJtX2hpZ2hsaWdodCIsImNvbG9yX2hpZ2hsaWdodHMiLCJlcnJfaG9sZXMiLCJ0aWxlcyQwIiwidGFrZW5fc3RlcCIsImVoIiwic2VsX3NlZyIsImNhbGN1bGF0ZSIsInN0aXRjaCIsIm92ZXJsYXlzIiwic3RhdGljc19kZWNvcyIsImdldF9nb2FsIiwidGV4dF9ib3giLCJnb2FsX3giLCJnb2FsX3kiLCJtb3VzZWRvd25fb3ZlcmxheSIsInNpZ25hbCIsImdvYWwiLCJtb3VzZWRvd25faGFuZGxlciIsImhpZ2hsaWdodHMiLCJjb2xvck1hcCIsImVkaXRfZGVjb3MiLCJvdmVybGF5cyQwIiwibW91c2Vkb3duX292ZXJsYXkkMCIsIm9uX21vdXNlZG93biIsImltZyIsInNsaWRlIiwiaGVhZGVyIiwiZW0iLCJnZXRfY29udGVudCIsImljb25fc2l6ZSIsInNpbXBsZV9pY29uIiwidHJhbnNmb3JtIiwiZ2VhciIsImluZm8iLCJzdGFyIiwiYm9tYiIsInVuZG8iLCJyZWRvIiwiY2lyY2xlX3F1ZXN0aW9uIiwiZ2l0aHViIiwiYmFjayIsImZvcndhcmQiLCJleWUiLCJ0cmFzaCIsImhhemVsbnV0IiwibWFnbmlmeSIsImNoZXN0Iiwic3Byb3V0Iiwic2V0dGluZyIsImN1cnJlbnQiLCJzZXFfYmFzaWNfZXhwX2V4Iiwic2VxX3Rlc3RfZXhwX2V4Iiwic2VxX2V4cF9jb2xvcmluZ19pZHMiLCJzZXFfZXhwIiwic2VxcyIsImZpbGxlZF9zbGlkZXMiLCJudW1fZW1wdHkiLCJpbml0X2RhdGEiLCJuYXJyYXRpdmVfY2VsbCIsInNpbXBsZV9jZWxsX2l0ZW0iLCJjYXB0aW9uIiwiYm9sZGVkIiwic2ltcGxlX2NlbGxfdmlldyIsIml0ZW1zIiwicmVwb3J0X2Zvb3Rlcl92aWV3IiwidGVzdF9yZXBvcnRfZm9vdGVyX3ZpZXciLCJwYW5lbCIsImNsYXNzZXMiLCJ0aXRsZV9jZWxsIiwidGl0bGUiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMV8wMTgiLCJyZXMwXzAxOSIsInJlczFfMDIwIiwiYXJnMF8wMjEiLCJzdGVwcGVyX2FjdGlvbiIsImlkeCQwIiwiZXJyb3JfbXNnIiwiZXJyJDAiLCJzdGF0dXNfb2YiLCJzdGVwcGVyX3ZpZXciLCJpbmplY3RfZ2xvYmFsIiwicmVhZF9vbmx5Iiwic3RlcHBlciIsImJ1dHRvbl9iYWNrIiwiYnV0dG9uX2hpZGVfc3RlcHBlciIsInRvZ2dsZV9zaG93X2hpc3RvcnkiLCJldmFsX3NldHRpbmdzIiwiY3VycmVudF9tb2RlbCIsInN0ZXBzIiwiaGlkZGVuIiwibGl2ZV9ldmFsIiwibG9ja2VkIiwicmVzIiwicmVzJDAiLCJleG5fdmlldyIsImZvb3RlciIsInRlc3Rfc3RhdHVzX2ljb25fdmlldyIsImluc3RzIiwibXMiLCJ0ZXN0X3Jlc3VsdF9sYXllciIsInJlc3VsdF9raW5kIiwidGVzdF9vdmVybGF5IiwidGVzdF9vdmVybGF5JDAiLCJlbGFiIiwic2VsZWN0IiwiZXhwb3J0X2J1dHRvbiIsImpzb25fZGF0YSIsImltcG9ydF9idXR0b24iLCJyZXNldF9idXR0b24iLCJjb25maXJtZWQiLCJ0eXBfYXJnIiwicmVjX3R5cF9jb2xvcmluZ19pZHMiLCJ0Ym9keV9pZCIsInBlYW5vX2V4IiwicmVjX3R5cCIsInJlYyIsInNpbmdsZSIsImFyZ19pZCIsImZuX2lkIiwiZV9hcmciLCJlX2ZuIiwiZnVuYXBwX2V4cF9leCIsImNvbmFwcF9leHBfZXgiLCJkZWZlcnJlZF9mdW5hcHBfZXhwX2V4IiwiZXhwX2Z1biIsImV4cF9hcmciLCJmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsInhfaWQiLCJmdW5hcHBfZXhwIiwiZXhwX2NvbiIsImV4cF9hcmckMCIsImNvbmFwcF9leHBfY29sb3JpbmdfaWRzIiwiY29uYXBwX2V4cCIsImV4cF9mdW4kMCIsImV4cF9kZWZlcnJhbCIsImRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaSIsImRlZmVycmVkX2lkIiwiZGVmZXJyZWRfZnVuYXBwX2V4cCIsImZ1bmFwcyIsImNvbmFwcyIsImRlZmVycmVkYXBzIiwicGF0X2NvbiIsInBhdF9hcmciLCJhcF9wYXRfY29sb3JpbmdfaWRzIiwiY29uX2lkIiwiYXBfcGF0IiwiYXAiLCJ0eXBfb3V0IiwiYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyIsInJlc3VsdF9pZCIsImFycm93X3R5cCIsInR5cF9hcmcxIiwidHlwX2FyZzIiLCJ0eXBfb3V0JDAiLCJhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyIsImFyZzFfaWQiLCJhcmcyX2lkIiwiYXJyb3cyIiwiYXJyb3czX3R5cCIsImFycm93MyIsImNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSIsImNhc2VfZXhhbXBsZV93aWxkX3R1cGxlIiwiY2FzZV9leGFtcGxlX2ludCIsImNhc2VfZXhhbXBsZV9ib29sIiwiZXhwX3NjcnV0IiwiY2FzZV9leHBfY29sb3JpbmdfaWRzIiwic2NydXRfaWQiLCJjYXNlJDAiLCJjYXNlX2V4cCIsImNhc2UkMSIsImtpbmQiLCJqdW1wX3RvIiwiZW50cnkiLCJjb250ZXh0X2VudHJ5X3ZpZXciLCJkaXZfbmFtZSIsImN0eF92aWV3IiwiY3R4IiwiY3R4X3NvcnRzX3ZpZXciLCJlcnJjIiwib2tjIiwiZGl2X2VyciIsImRpdl9vayIsImNvZGVfZXJyIiwiZXhwbGFpbl90aGlzX3RvZ2dsZSIsInNob3dfZXhwbGFpbl90aGlzIiwidG9nZ2xlX2V4cGxhaW5fdGhpcyIsImNsc192aWV3IiwiY3R4X3RvZ2dsZSIsImNvbnRleHRfaW5zcGVjdG9yIiwidGVybV92aWV3IiwiZWxlbWVudHNfbm91biIsImNvbW1vbl9lcnJfdmlldyIsInN5biIsImFuYSIsInR5cyIsInRva2VuIiwiY29tbW9uX29rX3ZpZXciLCJvayIsImFuYSQyIiwiYW5hJDMiLCJhbmEkMSIsInN5biQwIiwic3luJDEiLCJhbmEkMCIsInR5cF9va192aWV3Iiwic3VtX3R5Iiwic3VtX3R5JDAiLCJ0eV9sb29rdXAiLCJ0eXBfZXJyX3ZpZXciLCJleHBfdmlldyIsImFjdHVhbCIsImV4cGVjdGVkIiwicGF0X3ZpZXciLCJ0eXBfdmlldyIsInNlY29uZGFyeV92aWV3Iiwidmlld19vZl9pbmZvIiwid3JhcHBlciIsInN0YXR1c192aWV3Iiwic3RhdHVzJDAiLCJjbHMkMCIsInN0YXR1cyQxIiwiY2xzJDEiLCJzdGF0dXMkMiIsImNscyQyIiwiZXJyYyQwIiwiY3Vyc29yX2luZm8iLCJiYXJfdmlldyIsIm9wdGlvbl92aWV3IiwibW9kZV9tZW51Iiwic2xpZGVfc2VsZWN0IiwiY3VyX3NsaWRlIiwibnVtX3NsaWRlcyIsIm5leHRfZWQiLCJwcmV2X2VkIiwic2NyYXRjaF92aWV3IiwiZG9jdW1lbnRhdGlvbl92aWV3IiwiZWRpdG9yX25hbWVzIiwicHJldiQwIiwibmV4dCQwIiwiaW5zdHJ1Y3Rvcl90b2dnbGUiLCJleGVyY2lzZXNfdmlldyIsImN1cl9zbGlkZSQwIiwic2NvcmVfdmlldyIsImVhcm5lZCIsInBlcmNlbnRhZ2VfdmlldyIsInRleHR1YWxfc3VtbWFyeSIsInJlcG9ydCIsInRvdGFsX3Rlc3RzIiwicmVxdWlyZWQiLCJudW1fdGVzdHNfbWVzc2FnZSIsIm1heF9wb2ludHMiLCJzdW1tYXJ5X21lc3NhZ2UiLCJzY29yZSIsInRvdGFsIiwiZm91bmQiLCJiYXIiLCJzdW1tYXJ5Iiwic3RhdHVzX2NsYXNzIiwiaW5kaXZpZHVhbF9yZXBvcnQiLCJoaW50IiwiaW5kaXZpZHVhbF9yZXBvcnRzIiwiY292ZXJhZ2VfcmVzdWx0cyIsImluZGl2aWR1YWxfcmVwb3J0JDAiLCJyZXN1bHRfc3RyaW5nIiwiaW5kaXZpZHVhbF9yZXBvcnRzJDAiLCJoaW50ZWRfcmVzdWx0cyIsInZpZXckMSIsInN5bnRheF9yZXBvcnQiLCJ0ZXh0dWFsX3N1bW1hcnkkMCIsImluZGl2aWR1YWxfcmVwb3J0JDEiLCJpbmRpdmlkdWFsX3JlcG9ydHMkMSIsInZpZXckMiIsInZpZXdfb3ZlcmFsbF9zY29yZSIsImNvbnRlbnRfdHlwZSQxIiwiY29udGVudF90eXBlJDAiLCJyZW5kZXJfY2VsbHMiLCJ2aXMiLCJlZHMiLCJzdGl0Y2hlZF9keW5hbWljcyIsImhpZGRlbl9idWdzIiwiaW5zdHJ1Y3RvciIsInByZWx1ZGUiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwidGVzdF92YWxpZGF0aW9uIiwiZ3JhZGluZ19yZXBvcnQiLCJlZGl0b3JfdmlldyIsInN1YmNhcHRpb24iLCJkaSIsInRpdGxlX3ZpZXciLCJwcm9tcHRfdmlldyIsInByZWx1ZGVfdmlldyIsImNvcnJlY3RfaW1wbF92aWV3IiwiY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4IiwicHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCIsInByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgkMCIsImNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCQwIiwic3BlY2lmaWNfY3R4Iiwic3BlY2lmaWNfY3R4JDAiLCJleHBfY3R4X3ZpZXciLCJjb3JyZWN0X2ltcGxfY3R4X3ZpZXciLCJ5b3VyX3Rlc3RzX3ZpZXciLCJpbXBsIiwid3JvbmdfaW1wbF92aWV3cyIsIm11dGF0aW9uX3Rlc3RpbmdfdmlldyIsInlvdXJfaW1wbF92aWV3Iiwic3ludGF4X2dyYWRpbmdfdmlldyIsImltcGxfdmFsaWRhdGlvbl92aWV3IiwiaGlkZGVuX3Rlc3RzX3ZpZXciLCJpbXBsX2dyYWRpbmdfdmlldyIsImluc3RydWN0b3JfZXhwb3J0IiwiaW5zdHJ1Y3Rvcl90cmFuc2l0aW9uYXJ5X2V4cG9yIiwiaW5zdHJ1Y3Rvcl9ncmFkaW5nX2V4cG9ydCIsImRvd25sb2FkX2VkaXRvcl9zdGF0ZSIsImV4cG9ydF9zdWJtaXNzaW9uIiwiaW1wb3J0X3N1Ym1pc3Npb24iLCJmaWx0ZXJfcGF1c2UiLCJwX2lkIiwiZV9ib2R5IiwiZmlsdGVyX2V2YWwiLCJmaWx0ZXJfaGlkZSIsImZpbHRlcl9kZWJ1ZyIsInVucXVvdGUiLCJzZWxfaWQiLCJzZWwiLCJmb3JhbGxfdHlwX2NvbG9yaW5nX2lkcyIsImZvcmFsbF90eXAiLCJmb3JhbGwiLCJleHBsYW5hdGlvbiQ3IiwiZXhwbGFuYXRpb24kOCIsImV4cGxhbmF0aW9uJDkiLCJleHBsYW5hdGlvbiQxMCIsImV4cGxhbmF0aW9uJDExIiwiZXhwbGFuYXRpb24kMTIiLCJleHBsYW5hdGlvbiQxMyIsImV4cGxhbmF0aW9uJDE0IiwiZXhwbGFuYXRpb24kMTUiLCJleHBsYW5hdGlvbiQxNiIsImJhc2ljX2Z1bl9leCIsIndpbGRfZnVuX2V4IiwiaW50bGl0X2Z1bl9leCIsImZsb2F0bGl0X2Z1bl9leCIsImJvb2xsaXRfZnVuX2V4Iiwic3RybGl0X2Z1bl9leCIsInRyaXZfZnVuX2V4IiwibGlzdG5pbF9mdW5fZXgiLCJsaXN0bGl0X2Z1bl9leCIsImNvbnNfaGRfZnVuX2V4IiwiY29uc19zbmRfZnVuX2V4IiwidmFyX2luY3JfZnVuX2V4IiwidmFyX2FuZF9mdW5fZXgiLCJ0dXBsZTJfZnVuX2V4IiwidHVwbGUzX2Z1bl9leCIsImN0cl9mdW5fZXgiLCJhcF9mdW5fZXgiLCJwYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmciLCJzZl9wYXRfaWQiLCJzZl9ib2R5X2lkIiwiZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyIsImZ1bmN0aW9uX2V4cCIsImZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwX2NvbG9yaSIsImZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwIiwicGF0JDEiLCJleHAkMSIsImZ1bmN0aW9uX211bHRpX2hvbGVfZXhwX2NvbG9yaSIsImZ1bmN0aW9uX211bHRpX2hvbGVfZXhwIiwiZXhwJDIiLCJmdW5jdGlvbl93aWxkX2V4cF9jb2xvcmluZ19pZHMiLCJwYXQkMiIsImZ1bmN0aW9uX3dpbGRfZXhwIiwicGF0JDMiLCJleHAkMyIsImZ1bmN0aW9uX2ludGxpdF9leHBfY29sb3JpbmdfaSIsImZ1bmN0aW9uX2ludGxpdF9leHAiLCJwYXQkNCIsImV4cCQ0IiwiZnVuY3Rpb25fZmxvYXRsaXRfZXhwX2NvbG9yaW5nIiwiZnVuY3Rpb25fZmxvYXRsaXRfZXhwIiwicGF0JDUiLCJleHAkNSIsImZ1bmN0aW9uX2Jvb2xsaXRfZXhwX2NvbG9yaW5nXyIsImZvcm0kNSIsImZ1bmN0aW9uX2Jvb2xsaXRfZXhwIiwicGF0JDYiLCJleHAkNiIsImZ1bmN0aW9uX3N0cmxpdF9leHBfY29sb3JpbmdfaSIsImZvcm0kNiIsImZ1bmN0aW9uX3N0cmxpdF9leHAiLCJwYXQkNyIsImV4cCQ3IiwiZnVuY3Rpb25fdHJpdl9leHBfY29sb3JpbmdfaWRzIiwiZm9ybSQ3IiwiZnVuY3Rpb25fdHJpdl9leHAiLCJwYXQkOCIsImV4cCQ4IiwiZnVuY3Rpb25fbGlzdG5pbF9leHBfY29sb3JpbmdfIiwiZm9ybSQ4IiwiZnVuY3Rpb25fbGlzdG5pbF9leHAiLCJwYXQkOSIsImV4cCQ5IiwiZnVuY3Rpb25fbGlzdGxpdF9leHBfY29sb3JpbmdfIiwiZm9ybSQ5IiwiZnVuY3Rpb25fbGlzdGxpdF9leHAiLCJwYXRfaGQiLCJwYXRfdGwiLCJleHAkMTAiLCJmdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMiLCJoZF9pZCIsInRsX2lkIiwiY29ucyIsImZvcm0kMTAiLCJmdW5jdGlvbl9jb25zX2V4cCIsInBhdCQxMCIsImV4cCQxMSIsImZ1bmN0aW9uX3Zhcl9leHBfY29sb3JpbmdfaWRzIiwiZm9ybSQxMSIsImZ1bmN0aW9uX3Zhcl9leHAiLCJleHAkMTIiLCJmdW5jdGlvbl90dXBsZV9leHBfY29sb3JpbmdfaWQiLCJmb3JtJDEyIiwiZnVuY3Rpb25fdHVwbGVfZXhwIiwiZXhwJDEzIiwiZnVuY3Rpb25fdHVwbGUyX2V4cF9jb2xvcmluZ19pIiwicGF0MV9pZCIsInBhdDJfaWQiLCJmb3JtJDEzIiwiZnVuY3Rpb25fdHVwbGUyX2V4cCIsImV4cCQxNCIsImZ1bmN0aW9uX3R1cGxlM19leHBfY29sb3JpbmdfaSIsInBhdDNfaWQiLCJmb3JtJDE0IiwiZnVuY3Rpb25fdHVwbGUzX2V4cCIsInBhdCQxMSIsImV4cCQxNSIsImZ1bmN0aW9uX2N0cl9leHBfY29sb3JpbmdfaWRzIiwiZm9ybSQxNSIsImZ1bmN0aW9uX2N0cl9leHAiLCJleHAkMTYiLCJmdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzIiwiZm9ybSQxNiIsImZ1bmN0aW9uX2FwX2V4cCIsImZ1bmN0aW9ucyIsImZ1bmN0aW9uc19lbXB0eV9ob2xlIiwiZnVuY3Rpb25zX211bHRpX2hvbGUiLCJmdW5jdGlvbnNfd2lsZCIsImZ1bmN0aW9uc19pbnQiLCJmdW5jdGlvbnNfZmxvYXQiLCJmdW5jdGlvbnNfYm9vbCIsImZ1bmN0aW9uc19zdHIiLCJmdW5jdGlvbnNfdHJpdiIsImZ1bmN0aW9uc19saXN0bmlsIiwiZnVuY3Rpb25zX2xpc3RsaXQiLCJmdW5jdGlvbnNfY29ucyIsImZ1bmN0aW9uc192YXIiLCJmdW5jdGlvbnNfdHVwbGUiLCJmdW5jdGlvbnNfdHVwbGUyIiwiZnVuY3Rpb25zX3R1cGxlMyIsImZ1bmN0aW9uc19jdHIiLCJmdW5jdGlvbnNfYXAiLCJlbXB0eV9ob2xlX3RlbXBsYXRlIiwibXVsdGlfaG9sZV90ZW1wbGF0ZSIsImVtcHR5X2hvbGVfZXhwIiwiZW1wdHlfaG9sZV9leHBzIiwibXVsdGlfaG9sZV9leHAiLCJtdWx0aV9ob2xlX2V4cHMiLCJlbXB0eV9ob2xlX3BhdCIsIm11bHRpX2hvbGVfcGF0IiwibXVsdGlfaG9sZSIsImVtcHR5X2hvbGVfdHBhdCIsImVtcHR5X2hvbGVfdHBhdHMiLCJtdWx0aV9ob2xlX3RwYXQiLCJtdWx0aV9ob2xlX3RwYXRzIiwiZW1wdHlfaG9sZV90eXAiLCJtdWx0aV9ob2xlX3R5cCIsImlmX2Jhc2ljMV9leHBfZXgiLCJpZl9iYXNpYzJfZXhwX2V4IiwiZXhwX2NvbmQiLCJleHBfdGhlbiIsImV4cF9lbHNlIiwiaWZfZXhwX2NvbG9yaW5nX2lkcyIsImNvbmRfaWQiLCJ0aGVuX2lkIiwiZWxzZV9pZCIsImlmX2V4cCIsImlmcyIsImxldF9iYXNlX2V4IiwibGV0X3dpbGRfZXgiLCJsZXRfaW50X2V4IiwibGV0X2Zsb2F0X2V4IiwibGV0X2Jvb2xfZXgiLCJsZXRfc3RyX2V4IiwibGV0X3RyaXZfZXgiLCJsZXRfbGlzdGxpdF9leCIsImxldF9saXN0bmlsX2V4IiwibGV0X2NvbnNfaGRfZXgiLCJsZXRfY29uc19zbmRfZXgiLCJsZXRfdmFyX2V4IiwibGV0X3R1cGxlMl9leCIsImxldF90dXBsZTNfZXgiLCJsZXRfY3RyX2V4IiwibGV0X2FwX2V4IiwicGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfIiwic2ZfZGVmX2lkIiwicGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyIsImV4cF9kZWYiLCJsZXRfYmFzZV9leHBfY29sb3JpbmdfaWRzIiwibGV0X2Jhc2VfZXhwIiwiZXhwX2RlZiQwIiwibGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkIiwibGV0X2VtcHR5X2hvbGVfZXhwIiwiZXhwX2RlZiQxIiwibGV0X211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkIiwibGV0X211bHRpX2hvbGVfZXhwIiwiZXhwX2RlZiQyIiwibGV0X3dpbGRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF93aWxkX2V4cCIsImV4cF9kZWYkMyIsImV4cF9ib2R5JDAiLCJsZXRfaW50X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfaW50X2V4cCIsImV4cF9kZWYkNCIsImV4cF9ib2R5JDEiLCJsZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9mbG9hdF9leHAiLCJleHBfZGVmJDUiLCJleHBfYm9keSQyIiwibGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9ib29sX2V4cCIsImV4cF9kZWYkNiIsImV4cF9ib2R5JDMiLCJsZXRfc3RyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfc3RyX2V4cCIsImV4cF9kZWYkNyIsImV4cF9ib2R5JDQiLCJsZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3RyaXZfZXhwIiwiZXhwX2RlZiQ4IiwibGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9saXN0bGl0X2V4cCIsImV4cF9kZWYkOSIsImV4cF9ib2R5JDUiLCJsZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2xpc3RuaWxfZXhwIiwiZXhwX2RlZiQxMCIsImxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfY29uc19leHAiLCJleHBfZGVmJDExIiwiZXhwX2JvZHkkNiIsImxldF92YXJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF92YXJfZXhwIiwiZXhwX2RlZiQxMiIsImxldF90dXBsZV9leHBfY29sb3JpbmdfaWRzIiwibGV0X3R1cGxlX2V4cCIsImV4cF9kZWYkMTMiLCJsZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHVwbGUyX2V4cCIsImV4cF9kZWYkMTQiLCJsZXRfdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHVwbGUzX2V4cCIsImV4cF9kZWYkMTUiLCJleHBfYm9keSQ3IiwibGV0X2N0cl9leHBfY29sb3JpbmdfaWRzIiwibGV0X2N0cl9leHAiLCJleHBfZGVmJDE2IiwibGV0X2FwX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfYXBfZXhwIiwibGV0c19lbXB0eWhvbGUiLCJsZXRzX211dGxpaG9sZSIsImxldHNfd2lsZCIsImxldHNfaW50IiwibGV0c19mbG9hdCIsImxldHNfYm9vbCIsImxldHNfc3RyIiwibGV0c190cml2IiwibGV0c19saXN0bGl0IiwibGV0c19saXN0bmlsIiwibGV0c19jb25zIiwibGV0c192YXIiLCJsZXRzX3R1cGxlIiwibGV0c190dXBsZTIiLCJsZXRzX3R1cGxlMyIsImxldHNfY3RyIiwibGV0c19hcCIsImludF9saXN0IiwidHVwbGVfbGlzdCIsImxpc3RfZXhwIiwiY29uczFfZXgiLCJjb25zMl9leCIsImV4cF9oZCIsImV4cF90bCIsImNvbnNfZXhwX2NvbG9yaW5nX2lkcyIsImV4cF94cyIsImV4cF95cyIsImNvbmNhdF9leHBfY29sb3JpbmdfaWRzIiwieHNfaWQiLCJ5c19pZCIsImxpc3RsaXRzIiwibGlzdGNvbnMiLCJsaXN0Y29uY2F0cyIsImxpc3RsaXRfcGF0IiwibGlzdG5pbF9wYXQiLCJjb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyIsImNvbnNfYmFzZV9wYXQiLCJwYXRfZnN0IiwicGF0X3NuZCIsInBhdF90bCQwIiwiY29uczJfcGF0X2NvbG9yaW5nX2lkcyIsImZzdF9pZCIsInNuZF9pZCIsImNvbnMyX3BhdCIsImxpc3RsaXQiLCJsaXN0bmlsIiwiY29uczIiLCJ0eXBfZWxlbSIsImxpc3RfdHlwX2NvbG9yaW5nX2lkcyIsImVsZW1faWQiLCJsaXN0X3R5cCIsImxpc3QiLCJleHBsYW5hdGlvbiQxNyIsImV4cGxhbmF0aW9uJDE4IiwiZXhwbGFuYXRpb24kMTkiLCJleHBsYW5hdGlvbiQyMCIsImV4cGxhbmF0aW9uJDIxIiwiZXhwbGFuYXRpb24kMjIiLCJleHBsYW5hdGlvbiQyMyIsImV4cGxhbmF0aW9uJDI0IiwiZXhwbGFuYXRpb24kMjUiLCJleHBsYW5hdGlvbiQyNiIsImludF91bmFyeV9taW51c19leCIsImludF9wbHVzX2V4IiwiaW50X21pbnVzX2V4IiwiaW50X3RpbWVzX2V4IiwiaW50X3Bvd2VyX2V4IiwiaW50X2RpdmlkZV9leCIsImludF9sdDFfZXgiLCJpbnRfbHQyX2V4IiwiaW50X2x0ZTFfZXgiLCJpbnRfbHRlMl9leCIsImludF9sdGUzX2V4IiwiaW50X2d0MV9leCIsImludF9ndDJfZXgiLCJpbnRfZ3RlMV9leCIsImludF9ndGUyX2V4IiwiaW50X2d0ZTNfZXgiLCJpbnRfZXExX2V4IiwiaW50X2VxMl9leCIsImZsb2F0X3BsdXNfZXgiLCJmbG9hdF9taW51c19leCIsImZsb2F0X3RpbWVzX2V4IiwiZmxvYXRfcG93ZXJfZXgiLCJmbG9hdF9kaXZpZGVfZXgiLCJmbG9hdF9sdDFfZXgiLCJmbG9hdF9sdDJfZXgiLCJmbG9hdF9sdGUxX2V4IiwiZmxvYXRfbHRlMl9leCIsImZsb2F0X2x0ZTNfZXgiLCJmbG9hdF9ndDFfZXgiLCJmbG9hdF9ndDJfZXgiLCJmbG9hdF9ndGUxX2V4IiwiZmxvYXRfZ3RlMl9leCIsImZsb2F0X2d0ZTNfZXgiLCJmbG9hdF9lcTFfZXgiLCJmbG9hdF9lcTJfZXgiLCJib29sX2FuZDFfZXgiLCJib29sX2FuZDJfZXgiLCJib29sX29yMV9leCIsImJvb2xfb3IyX2V4Iiwic3RyX2VxMV9leCIsInN0cl9lcTJfZXgiLCJ1bm9wX2V4cF9jb2xvcmluZ19pZHMiLCJzZl9leHBfaWQiLCJleHBfaWQiLCJib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWQiLCJib29sX3VuYXJ5X25vdF9leHAiLCJpbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2kiLCJpbnRfdW5hcnlfbWludXNfZXhwIiwiYmlub3BfZXhwX2NvbG9yaW5nX2lkcyIsInNmX2xlZnRfaWQiLCJzZl9yaWdodF9pZCIsImxlZnRfaWQiLCJyaWdodF9pZCIsImludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfcGx1c19leHAiLCJpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyIsImludF9taW51c19leHAiLCJleHAxJDEiLCJleHAyJDEiLCJpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyIsImludF90aW1lc19leHAiLCJpbnRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyIsImludF9wb3dlcl9leHAiLCJleHAxJDIiLCJleHAyJDIiLCJpbnRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZGl2aWRlX2V4cCIsImV4cDEkMyIsImV4cDIkMyIsImludF9sdF9leHBfY29sb3JpbmdfaWRzIiwiaW50X2x0X2V4cCIsImV4cDEkNCIsImV4cDIkNCIsImludF9sdGVfZXhwX2NvbG9yaW5nX2lkcyIsImludF9sdGVfZXhwIiwiZXhwMSQ1IiwiZXhwMiQ1IiwiaW50X2d0X2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZ3RfZXhwIiwiZXhwMSQ2IiwiZXhwMiQ2IiwiaW50X2d0ZV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2d0ZV9leHAiLCJleHAxJDciLCJleHAyJDciLCJpbnRfZXFfZXhwX2NvbG9yaW5nX2lkcyIsImludF9lcV9leHAiLCJleHAxJDgiLCJleHAyJDgiLCJpbnRfbmVxX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbmVxX2V4cCIsImV4cDEkOSIsImV4cDIkOSIsImZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X3BsdXNfZXhwIiwiZXhwMSQxMCIsImV4cDIkMTAiLCJmbG9hdF9taW51c19leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbWludXNfZXhwIiwiZXhwMSQxMSIsImV4cDIkMTEiLCJmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfdGltZXNfZXhwIiwiZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X3Bvd2VyX2V4cCIsImV4cDEkMTIiLCJleHAyJDEyIiwiZmxvYXRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9kaXZpZGVfZXhwIiwiZXhwMSQxMyIsImV4cDIkMTMiLCJmbG9hdF9sdF9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbHRfZXhwIiwiZXhwMSQxNCIsImV4cDIkMTQiLCJmbG9hdF9sdGVfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2x0ZV9leHAiLCJleHAxJDE1IiwiZXhwMiQxNSIsImZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9ndF9leHAiLCJleHAxJDE2IiwiZXhwMiQxNiIsImZsb2F0X2d0ZV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZ3RlX2V4cCIsImV4cDEkMTciLCJleHAyJDE3IiwiZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2VxX2V4cCIsImV4cDEkMTgiLCJleHAyJDE4IiwiZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9uZXFfZXhwIiwiZXhwMSQxOSIsImV4cDIkMTkiLCJib29sX2FuZF9leHBfY29sb3JpbmdfaWRzIiwiYm9vbF9hbmRfZXhwIiwiZXhwMSQyMCIsImV4cDIkMjAiLCJib29sX29yX2V4cF9jb2xvcmluZ19pZHMiLCJib29sX29yX2V4cCIsImV4cDEkMjEiLCJleHAyJDIxIiwic3RyX2VxX2V4cF9jb2xvcmluZ19pZHMiLCJzdHJfZXFfZXhwIiwiZXhwMSQyMiIsImV4cDIkMjIiLCJzdHJfY29uY2F0X2V4cF9jb2xvcmluZ19pZHMiLCJzdHJfY29uY2F0X2V4cCIsImJvb2xfdW5fbm90IiwiaW50X3VuX21pbnVzIiwiaW50X3BsdXMiLCJpbnRfbWludXMiLCJpbnRfdGltZXMiLCJpbnRfcG93ZXIiLCJpbnRfZGl2aWRlIiwiaW50X2xlc3NfdGhhbiIsImludF9sZXNzX3RoYW5fZXF1YWwiLCJpbnRfZ3JlYXRlcl90aGFuIiwiaW50X2dyZWF0ZXJfdGhhbl9lcXVhbCIsImludF9lcXVhbCIsImludF9ub3RfZXF1YWwiLCJmbG9hdF9wbHVzIiwiZmxvYXRfbWludXMiLCJmbG9hdF90aW1lcyIsImZsb2F0X3Bvd2VyIiwiZmxvYXRfZGl2aWRlIiwiZmxvYXRfbGVzc190aGFuIiwiZmxvYXRfbGVzc190aGFuX2VxdWFsIiwiZmxvYXRfZ3JlYXRlcl90aGFuIiwiZmxvYXRfZ3JlYXRlcl90aGFuX2VxdWFsIiwiZmxvYXRfZXF1YWwiLCJmbG9hdF9ub3RfZXF1YWwiLCJib29sX2FuZCIsImJvb2xfb3IiLCJzdHJpbmdfZXF1YWwiLCJzdHJpbmdfY29uY2F0IiwiZmVlZGJhY2tfdmlldyIsInVwX2FjdGl2ZSIsInVwX2FjdGlvbiIsImRvd25fYWN0aXZlIiwiZG93bl9hY3Rpb24iLCJleHBsYW5hdGlvbl9mZWVkYmFja192aWV3IiwiZXhhbXBsZV9mZWVkYmFja192aWV3IiwiY29kZV9ub2RlIiwiaW5qZWN0JDAiLCJta190cmFuc2xhdGlvbiIsIm9tZCIsImVsZW0iLCJub2RlcyIsIm1hcHBpbmckMSIsImJ1bGxldHMiLCJtYXBwaW5nJDIiLCJpZCQwIiwiaWQkMSIsIm1hcHBpbmckMyIsImlubmVyX21zZyIsIm1rX2V4cGxhbmF0aW9uIiwiY29sb3JfbWFwIiwiZXhwYW5kZXJfZGVjbyIsImRvY3MiLCJleHBhbmRhYmxlIiwic3BlY2lmaWNpdHlfcG9zIiwic3BlY2lmaWNpdHlfc3R5bGUiLCJnZXRfY2xzcyIsInNlZ21lbnQiLCJ1cGRhdGVfZ3JvdXBfc2VsZWN0aW9uIiwic3BlY2lmaWNpdHlfbWVudSIsImV4cGFuZF9hcnJvd19zdHlsZSIsImV4cGFuZF9hcnJvdyIsImV4cGFuZGFibGVfZGVjbyIsImV4YW1wbGVfdmlldyIsInN1Yl9pZCIsImJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdCIsImJ5cGFzc19wYXJlbnNfcGF0IiwiYnlwYXNzX3BhcmVuc19leHAiLCJieXBhc3NfcGFyZW5zX3R5cCIsInR5cCQxIiwicHBfbWVzc2FnZV9tb2RlIiwic2hvd19tZXNzYWdlX21vZGUiLCJtZXNzYWdlX21vZGVfb2Zfc2V4cCIsInNleHBfb2ZfbWVzc2FnZV9tb2RlIiwiYXJnMl8wMTYiLCJhcmcxXzAxNSIsInJlczJfMDE5IiwibWVzc2FnZV9tb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tZXNzYWdlX21vZGUiLCJnZXRfZG9jIiwic2ltcGxlIiwiZ2V0X3NwZWNpZmljaXR5X2xldmVsIiwiZ2V0X21lc3NhZ2UiLCJmb3JtYXQiLCJleHBsYW5hdGlvbl9tc2ciLCJjb2xvcl9tYXAkMCIsImNvZGVfaWQiLCJzeW50YWN0aWNfZm9ybV9pZCIsImV4cGFuZGVyX2RlY28kMCIsImhpZ2hsaWdodHMkMCIsImhpZ2hsaWdodF9kZWNvIiwic3ludGFjdGljX2Zvcm1fdmlldyIsImV4YW1wbGVfdmlldyQwIiwibWVzc2FnZV9zaW5nbGUiLCJnZXRfbWVzc2FnZV9leHAiLCJib2R5IiwiYmFzaWMiLCJpJDAiLCJlbGVtZW50cyIsInBhdF9pZCQwIiwiYm9keV9pZCQwIiwiZWxlbWVudHMkMCIsInBhdF9pZCQxIiwiYm9keV9pZCQxIiwiYmFzaWNfdHVwbGUiLCJkb2NfaWQiLCJkb2NfaWQkMCIsInBhdDFfaWQkMCIsInBhdDJfaWQkMCIsImNvbiIsImJvZHkkMCIsImJvZHlfaWQkMiIsInRlcm1zJDAiLCJiYXNpYyQwIiwiZXhwMV9pZCQwIiwiZXhwMl9pZCQwIiwiYm9keSQxIiwiZGVmIiwicGF0X2lkJDIiLCJib2R5X2lkJDMiLCJiYXNpYyQxIiwiaSQxIiwiZiQxIiwiZWxlbWVudHMkMSIsInYkMSIsInRsJDAiLCJoZF9pZCQwIiwidGxfaWQkMCIsInZhciQxIiwiZWxlbWVudHMkMiIsImJhc2ljX3R1cGxlJDAiLCJkb2NfaWQkMSIsInBhdDFfaWQkMSIsInBhdDJfaWQkMSIsImRvY19pZCQyIiwicGF0MV9pZCQyIiwicGF0Ml9pZCQyIiwicGF0M19pZCQwIiwiY29uJDAiLCJjb25faWQkMCIsImFyZ19pZCQwIiwiYm9keSQyIiwidHlfZGVmIiwidHlfcGF0IiwidHBhdF9pZCQwIiwiZGVmX2lkJDAiLCJmbiIsImFyZ19pZCQxIiwiYmFzaWMkMiIsImNvbG9yaW5nX2lkcyIsInYkMiIsImYkMiIsImFyZ3MiLCJ4X2lkJDAiLCJzdXBwbGllZF9pZCIsImNvbG9yX2ZuIiwiY29sb3Jfc3VwcGxpZWQiLCJjb2xvcl9kZWZlcnJlZCIsImNvbG9yX2RlZmVycmVkJDAiLCJlbHNlJDAiLCJ0aGVuIiwiY29uZCIsInJpZ2h0IiwiZXhwMV9pZCQxIiwiZXhwMl9pZCQxIiwiYm9keSQzIiwiYm9keV9pZCQ0IiwiYm9keSQ0IiwiYm9keSQ1IiwiYm9keSQ2IiwiYm9keSQ3IiwidGVybSQxIiwidGVybSQyIiwidGwkMSIsImhkJDEiLCJoZF9pZCQxIiwidGxfaWQkMSIsInhzIiwiZXhwX2lkJDAiLCJyaWdodCQwIiwibGVmdCQwIiwiY29sb3JpbmdfaWRzJDAiLCJjb2xvcmluZ19pZHMkMSIsImdyb3VwJDEiLCJzY3J1dCIsInRsMiIsImhkMiIsImhkMl9pZCIsInRsMl9pZCIsImVsZW0xX2lkJDAiLCJlbGVtMl9pZCQwIiwidHlwX2luZm8iLCJyZXN1bHQyIiwiYXJnMiIsInJlc3VsdDJfaWQiLCJlbGVtMV9pZCQxIiwiZWxlbTJfaWQkMSIsImVsZW0xX2lkJDIiLCJlbGVtMl9pZCQyIiwiZWxlbTNfaWQkMCIsInRwYXQkMCIsInRib2R5X2lkJDAiLCJpbmZvJDAiLCJzZWN0aW9uIiwic2VjdGlvbl9jbHNzIiwiZ2V0X2NvbG9yX21hcCIsInN5bl9mb3JtIiwiaXNfbWFjIiwicHBfZGlyIiwic2hvd19kaXIiLCJkaXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2RpciIsInBwX2tleSIsInNob3dfa2V5Iiwia2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9rZXkiLCJwcF9zeXMiLCJzaG93X3N5cyIsInN5c19vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3lzIiwicHBfaGVsZCIsInNob3dfaGVsZCIsImhlbGRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hlbGQiLCJrZXlfZmllbGQiLCJzeXNfZmllbGQiLCJzaGlmdF9maWVsZCIsIm1ldGFfZmllbGQiLCJjdHJsX2ZpZWxkIiwiYWx0X2ZpZWxkIiwiYWx0X3ZhbHVlIiwiY3RybF92YWx1ZSIsIm1ldGFfdmFsdWUiLCJzaGlmdF92YWx1ZSIsInN5c192YWx1ZSIsImtleV92YWx1ZSIsInZfYWx0Iiwidl9jdHJsIiwidl9tZXRhIiwidl9zaGlmdCIsInZfc3lzIiwidl9rZXkiLCJrZXlfb2YiLCJkaXIiLCJ0b19oZWxkIiwibW9kaWZpZXJfc3RyaW5nIiwibW9kaWZpZXJzX3N0cmluZyIsImtleV9kaXJfc3RyaW5nIiwidG9fc3RyaW5nIiwiaXNfZGlnaXQiLCJpc19mX2tleSIsImhhbmRsZV9rZXlfZXZlbnQiLCJub3ciLCJzaGlmdCIsInJlc2V0X2hhemVsIiwicmVwYXJzZSIsInNldHRpbmdzX21lbnUiLCJiZW5jaG1hcmsiLCJjb3JlIiwiZXhwb3J0X21lbnUiLCJzbGlkZV9pZHgiLCJzdGF0ZSQwIiwiaW1wb3J0X21lbnUiLCJzdWJtZW51IiwibWVudSIsImhhbmRsZXJzIiwia2V5X2hhbmRsZXIiLCJwYXN0ZWRfdGV4dCIsIm1haW5fdmlldyIsImFlIiwidG9wX2JhciIsImJvdHRvbV9iYXIiLCJzaWRlYmFyIiwic3MiLCJlZGl0b3JzX3ZpZXciLCJzcyQwIiwicmVzdWx0X2tleSQwIiwic3RhdGljcyQxIiwibWVtb2l6ZSIsInRhYmxlIiwiZXJyb3Jfc291cmNlXzAyNiIsInBwX3JlYXNvbiIsInNob3dfcmVhc29uIiwicmVhc29uX29mX3NleHAiLCJzZXhwX29mX3JlYXNvbiIsInJlYXNvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVhc29uIiwic2V4cF8wMTMiLCJmaWVsZF9zZXhwc18wMTQiLCJyZWFzb25fMDE1IiwicHJpb3JfYXR0ZW1wdHNfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZpZWxkX3NleHBfMDIyJDEiLCJwcmlvcl9hdHRlbXB0c18wMTgiLCJyZWFzb25fMDE2IiwicHJpb3JfYXR0ZW1wdHNfMDMzIiwicmVhc29uXzAzMSIsImJuZHNfMDMwIiwiYm5kc18wMzAkMCIsInJlYXNvbl9maWVsZCIsInByaW9yX2F0dGVtcHRzX2ZpZWxkIiwicHJpb3JfYXR0ZW1wdHNfdmFsdWUiLCJyZWFzb25fdmFsdWUiLCJ2X3ByaW9yX2F0dGVtcHRzIiwidl9yZWFzb24iLCJyZWFzb24iLCJwcmlvcl9hdHRlbXB0cyIsInJlcGxhY2Vfb3JfaW5jcmVtZW50X2F0dGVtcHRzIiwiZmFpbGVkX2lucHV0IiwiYnRuIiwib25fc3RhcnR1cCIsImNyZWF0ZSIsImNvbG9uX0xhbSIsIm9wZW5fTGFtIiwiY2xvc2VfTGFtIiwib3Blbl9GaXhGIiwiY2xvc2VfRml4RiIsIm1rX1BhaXIiLCJmc3RyIiwiY3giLCJjeSIsInN0cm9rZV93aWR0aCIsInZlY3Rvcl9lZmZlY3QiLCJmaWx0ZXIiLCJzdG9wX2NvbG9yIiwic3RvcF9vcGFjaXR5IiwiaWQiLCJzY3JvbGxfdG9fY2FyZXQiLCJlZGl0X2FjdGlvbl9hcHBsaWVkIiwibGFzdF9lZGl0X2FjdGlvbiIsIm9uX3N0YXJ0dXAiLCJzY2hlZHVsZV9hY3Rpb24iLCJtIiwiZW50cmllcyIsImZtIiwic3RhdGUiLCJjcmVhdGUiLCJtb2RlbCIsImluamVjdCIsImFjdGlvbiIsIm5ld19tb2RlbCIsImV4YyQwIiwiZXhjIiwibW9kZWwkMCIsImVyciIsImVyciQwIl0sInNvdXJjZXMiOlsiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyZnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbGRvbS5jb21waWxlZC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5qcyIsIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2J1aWx0aW4vK2ZzLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ3N0cmluZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX2JpZ3N0cmluZy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2ludHMuanMiLCIvYnVpbHRpbi8raGFzaC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jhc2VfaW50ZXJuYWxoYXNoX3R5cGVzL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcnVudGltZS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8rc3luYy5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanNfcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90aW1lX25vdy9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGRsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N5cy5tbC5pbiIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9vYmoubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbE9PLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY29tcGxleC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbl9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL291dF9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG9seTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbXBvcnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9jb21wYXJlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9oYXNoX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS93b3JkX3NpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcmV0dHlfcHJpbnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3dpdGhfcmV0dXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbW9uYWRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21vbmFkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXBwbGljYXRpdmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb21wYXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZWl0aGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ZpZWxkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RyaW5nMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29udGFpbmVyX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yZGVyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2lnbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb21wYXJhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaGFibGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2lkZW50aWZpYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2luZGV4ZWRfY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29ial9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VuaWZvcm1fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaHRibF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXZsdHJlZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNoX3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFja3RyYWNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL3N0ZGxpYjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9wcHJpbnRhc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9zZXhwX2NvbnYvcnVudGltZS1saWIvcHB4X3NleHBfY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2VudW1lcmF0ZS9ydW50aW1lLWxpYi9wcHhfZW51bWVyYXRlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfYXNzZXJ0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2JlbmNoL3J1bnRpbWUtbGliL2JlbmNobWFya19hY2N1bXVsYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21kNS9tZDVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NoYXBlL2Jpbl9zaGFwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X21vZHVsZV90aW1lci9ydW50aW1lL3BweF9tb2R1bGVfdGltZXJfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3ZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvc3RkX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZXJlcF9vYmoubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWNfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZ2VuZXJpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL21ha2VfdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2Fic3RyYWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29tbW9uL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9leHBlY3RhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9leHBlY3RfdGVzdF9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWdfdHlwZXMvZXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWdfdHlwZXMvZXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvZXhwZWN0X3Rlc3RfY29sbGVjdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnL2V4cGVjdF90ZXN0X2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3Bvc2l0aW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2VfZXJyb3JfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX2FjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL29sZF9wYXJzZXJfY29udF9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl90YWJsZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9vZl9zZXhwX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc3JjX3Bvcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3R5cGVfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXJzZXJfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3ByZV9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc2V4cF93aXRoX2xheW91dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zZXhwX2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvZXhuX21hZ2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NwbGl0dGFibGVfcmFuZG9tL3NwbGl0dGFibGVfcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svYmlnYXJyYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svb2JzZXJ2ZXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9nZW5lcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50NjQubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9zaHJpbmtlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL2Jhc2VfcXVpY2tjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbnRfcmVwci9pbnRfcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX2JpZ3N0cmluZy9iYXNlX2JpZ3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jhc2VfZm9yX3Rlc3RzL3Rlc3RfYmxpdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jhc2VfZm9yX3Rlc3RzL3Rlc3RfYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGVfdW5pdF90ZXN0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXByZWNhdGVfcGlwZV9iYW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1aWNrY2hlY2thYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RkX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZV91bml0czAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlX2Jpbl9wcm90Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWQ1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmluYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3pvbmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS92YWxpZGF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bml0X29mX3RpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bmlxdWVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90eXBlX2ltbWVkaWFjeS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3R1cGxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF5X29mX3dlZWsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kaWdpdF9zdHJpbmdfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21vbnRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF0ZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcGVyY2VudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5faGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5fZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lX2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWVfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kYXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Bhbl9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29mZGF5X25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21ha2Vfc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYXJnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZF9lbnZfdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21tYW5kX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3BpZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZkZXF1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oZWFwX2Jsb2NrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYWtlX3N0YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbl9vcl9uYW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29wdGlvbl9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xhenkubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbm9fcG9seW1vcnBoaWNfY29tcGFyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21lbW8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saW5rZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXJpdmluZ19oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmVfc3lzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmFnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnYnVmZmVyX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZXMubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnc3Vic3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYm91bmRlZF9pbmRleC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc190b2tlbml6ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX2dlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanNfZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2RvbV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaG9va3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vanNfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9hdHRyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2dsb2JhbF9saXN0ZW5lcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vbm9kZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS92ZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxfZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV90eXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3R1cGxlX3Bvb2wvdHVwbGVfcG9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aW1pbmdfd2hlZWwvdGltaW5nX3doZWVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9jb25maWcvYXN5bmNfa2VybmVsX2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9tb3B0aW9uL21vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvcGFpcmluZ19oZWFwL3BhaXJpbmdfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9zZXhwX2hpZGRlbl9pbl90ZXN0L3NleHBfaGlkZGVuX2luX3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdW9wdC91b3B0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RocmVhZF9zYWZlX3F1ZXVlL3RocmVhZF9zYWZlX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aW1lX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9leGVjdXRpb25fY29udGV4dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZXh0ZXJuYWxfam9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2JfcG9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2Jfb3JfZXZlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25hZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWQxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2l2YXJfZmlsbGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90YWlsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25pdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2J2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY3ljbGVfaG9vay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsX3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY2xvY2tfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY2xvY2tfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX21lbW8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9waXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9sYXp5X2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19jb25kaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19pbnZhcmlhbnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3Byb3RvY29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfbWFwL2luY3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3Jfc2VsZWN0L2luY3Jfc2VsZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL2phdmFzY3JpcHRfcHJvZmlsaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3Zkb21fZmlsZV9kb3dubG9hZC92ZG9tX2ZpbGVfZG93bmxvYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vdWlfaW5jci91aV9pbmNyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2NvbXBvbmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9hcHBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qc19taXNjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3N0YXJ0X2FwcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9pbnB1dF93aWRnZXRzL3Zkb21faW5wdXRfd2lkZ2V0cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wdG1hcC9wdG1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vY29kZWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vbGV4ZXJfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udl9saWIvcHB4X3lvanNvbl9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZGVyaXZpbmcvcnVudGltZS9wcHhfZGVyaXZpbmdfcnVudGltZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9XZWIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvVHVwbGVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1RpbWVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1N0cmluZ1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTW9uYWRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1N0YXRlTW9uYWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1BhaXJVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL09wdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTWFwVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9EaXJlY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTGlzdEZyYW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0ludFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvSW50TWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0VpdGhlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9BYmEucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZm10Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NzZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvYXV0b21hdGEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY29sb3JfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZW1hY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2dsb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcGVybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3Bvc2l4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRPdmVyU3RvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1VuaW9uRmluZEJhc2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZU1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlVHJhbnNhY3Rpb25hbFJlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVWZWN0b3IubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9JZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvT3BlcmF0b3JzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9QcmVjZWRlbmNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Tb3J0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvTmliLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvR3JvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Ub2tlbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0xhYmVsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvTmlicy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL01vbGQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL0Zvcm0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9TZWNvbmRhcnkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9CYXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9FZmZlY3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL01vbGRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvVGlsZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1BpZWNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvU2tlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1NlZ21lbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvU2libGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvQW5jZXN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvQW5jZXN0b3JzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1RpbWUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvVG91Y2hlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9NZWFzdXJlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9TZWxlY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvQmFja3BhY2sucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvUmVsYXRpdmVzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1ppcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1Zhck1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckVyclN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ29uc3RydWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvbnN0cnVjdG9yTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRmlsdGVyQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy90ZXJtL0lkVGFnZ2VkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvSW52YWxpZE9wZXJhdGlvbkVycm9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvU3RydWN0dXJlU2hhcmVTZXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9WYXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYXJCc3RNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1Rlcm1CYXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy90ZXJtL1RQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0N0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvdGVybS9UeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYXJDdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1Rlcm0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9ESEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvckVycm9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvQnVpbHRpbnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL3Rlcm0vQ2xzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Db0N0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvU2VsZi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvSW5mby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1Rlcm1SYW5nZXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1N0YXRpY3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9ESFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0Nhc3RzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9Db3JlU2V0dGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVW5ib3hpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9QYXR0ZXJuTWF0Y2gucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0U3RhdHVzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVGVzdE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1RyYW5zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYWx1ZUNoZWNrZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0FjdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2Fzc2lzdGFudC9Bc3Npc3RhbnRFeHBhbmRlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2Fzc2lzdGFudC9TdWdnZXN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L0Fzc2lzdGFudEN0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2Fzc2lzdGFudC9Bc3Npc3RhbnRGb3Jtcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0RlbHRhLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvVGVybU1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1RpbGVNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL01ha2VUZXJtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0VkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0VsYWJvcmF0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3JTdGF0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0YXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJldHR5L1ByZXR0eVNlZ21lbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcmV0dHkvRXhwVG9TZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9JbmRpY2F0ZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL1Byb2dyYW1SZXN1bHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL0ludGVyZmFjZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2Fzc2lzdGFudC9UeURpLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVGVzdFJlc3VsdHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9TdWJzdGl0dXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL0NhY2hlZFN0YXRpY3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3JTdGVwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRmlsdGVyRW52aXJvbm1lbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJNYXRjaGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3RlcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vTW92ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vU2VsZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9JbnNlcnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvUHJpbnRlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9QZXJzaXN0ZW50WmlwcGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9EZXN0cnVjdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vUGVyZm9ybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9PcmllbnRhdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvTW9kZWxSZXN1bHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL01vZGVsUmVzdWx0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9JbmNvbXBsZXRlQmlkZWxpbS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL0NvZGVTdHJpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvRWRpdG9yVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Qb3NNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9NZWFzdXJlZFBvc2l0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGlzdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9NZWFzdXJlZExheW91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0Nvc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Eb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXRPZkRvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0JveC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvU3ludGF4VGVzdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvRXhlcmNpc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0dyYWRpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0dyYWRlUHJlbHVkZS5yZSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfcmVwcmVzZW50YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9iYWNrZW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9sZXhlcl9mcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Xb3JrZXJTZXJ2ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV29ya2VyQ2xpZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1dpZGdldHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV2Vha01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhhbXBsZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNGb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1ZhclRQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X09kZGx5UmVjdXJzaXZlX3Byb21wdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhlcmNpc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9PZGRseVJlY3Vyc2l2ZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9SZWN1cnNpdmVGaWJvbmFjY2kubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlU2V0dGluZ3NfYmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNNb2RlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2V0dGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvUGVyc2lzdGVudERhdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0VkaXRvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Gb250TWV0cmljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Kc1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1N0b3JlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Nb2RlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2Fzc2lzdGFudC9VcGRhdGVBc3Npc3RhbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0JlbmNobWFyay5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRGVidWdDb25zb2xlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Mb2cucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4cG9ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU3RhdGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1VwZGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1R5cGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwRnVuY3Rpb25FeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwQXBwRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R5cEFublBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeUFsaWFzRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R1cGxlVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R1cGxlUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R1cGxlRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL05vZGVVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1NlZ21lbnRUcmVlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1N2Z1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0RlY1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0RpYWcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0VtcHR5SG9sZURlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9Db2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RoY29kZS9sYXlvdXQvREhBbm5vdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kaGNvZGUvRGVjb3JhdGlvbl9jb21tb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kaGNvZGUvbGF5b3V0L0hUeXBEb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19UeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19jb21tb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19QYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESERvY19FeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL2xheW91dC9ESExheW91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kaGNvZGUvbGF5b3V0L0RITWVhc3VyZWRMYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGhjb2RlL0RIQ29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9UZXN0Vmlldy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXN0RXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1Rlcm1pbmFsVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1Rlcm1pbmFsUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1Rlcm1pbmFsRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1N1bVR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9CYWNrcGFja1ZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0NhcmV0RGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9DYXJldFBvc0RlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvQ29sb3JTdGVwcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvUGllY2VEZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVjby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvUmVhZE9ubHlFZGl0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZWRpdG9yL0NvZGVFZGl0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZWRpdG9yL1N0ZXBwZXJFZGl0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NsaWRlQ29udGVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9JY29ucy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9TZXR0aW5nc01vZGFsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1NlcUV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2NyYXRjaFNsaWRlc0luaXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZWRpdG9yL0NlbGwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZWRpdG9yL0NlbGxSZXN1bHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZWRpdG9yL0NlbGxFZGl0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvU2NyYXRjaE1vZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvUmVjVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1BpcGVsaW5lRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0FwcEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9BcHBQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQXJyb3dUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQ2FzZUV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9LaW5kLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0N0eEluc3BlY3Rvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9DdXJzb3JJbnNwZWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRWRpdG9yTW9kZVZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0dyYWRpbmcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRXhlcmNpc2VNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0ZpbHRlckV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9GaXhGRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0ZvcmFsbFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9GdW5jdGlvbkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVGVtcGxhdGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZUV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVUUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSWZFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGV0RXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xpc3RFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGlzdFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MaXN0VHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL09wRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0V4cGxhaW5UaGlzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0ZvbnRTcGVjaW1lbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvT3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvS2V5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9LZXlib2FyZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9OdXRNZW51LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1BhZ2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvTWVtby5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvTG9nRW50cnkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0ZhaWxlZElucHV0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0RlYnVnTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kaGNvZGUvbGF5b3V0L0RIRG9jX1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9CbGFua1RlbXBsYXRlLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL0F0dHJVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9NYWluLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtPQUM3QkQscUJBQXFCRTtPQUNyQixHQUFHQyxtQkFBbUJBLDZCQUE2QkY7O1VBR2xEO09BRUREO1FBQVlHLHFCQUFzQixXQUFhLE9BQU9DLFFBQVEsSUFBR0MsY0FBL0I7T0FDbENMLHFCQUFxQkM7O01BSXpCO09BQUlLLFdBQVdSO09BQ1hTO01BQ0osU0FBU0MsbUJBQW1CQyxNQUFNQztPQUM5QixLQUFLSCxxQkFBcUJFLE1BQU87UUFDN0I7aUJBQVdFLGtDQUFrQ0E7U0FDekNBOzBCQUE0QkY7OzthQUE2RUM7O1FBRTdHSCxxQkFBcUJFOztNQUU3QjtNQUVBVCx1QkFBdUJZO01BQ3ZCWix3QkFBd0JhO01BQ3hCYiw4QkFBOEJjO01BRzlCLFNBQVNDLGNBQWNDO09BQ25CQSxjQUFjcEIsOEJBQThCQTtPQUM1Q29CLGNBQWNwQiw4QkFBOEJBO09BQzVDb0IsU0FBU3BCLHlCQUF5QkE7TUFDdEM7TUFFQW1CLGNBQWNkO01BQ2QsU0FBU0EsZ0JBQWdCZ0IsS0FBS0MsR0FBR0M7T0FFN0IsR0FBSUQsS0FBS0EsT0FBUSxDQUNiQyxTQUFTRCxHQUNUQSxJQUFJRTtPQUVSLEdBQUlEO1FBQ0FYO2dC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QUFHQSxhQUNENVosOEJBQThCNFo7T0FGRztHQU16QztHQUNBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O1kyQzZKUUU7SUFBQSw4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QztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQU1BQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVDQztJQUdBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVBQztJQVVBQztJQUlBQztJQUlDQztJQVNEQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUVDQztJQVNEQztJQUlBQztJQUlBQztJQVVBQztJQUlBQztJQUlDQztJQVVEQztJQUNBQztJQUVBQztJQUlBQztJQUlDQztJQVFEQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUNBQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEwQ0RobUc7SUFZQTJiO0lBQ0FFO0lBT0FuWDtJQUNBRTtJQUNBcWhHO0lBSUFDOzs7O0dBZ0JHOzs7Ozs7T0FqaUJMOXVHO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BMEpFaWtHO09BQ0FDO09BRUFDO09BSUFDO09BSUNDO09BVURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BTUFDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUFDO09BVUFDO09BSUFDO09BSUNDO09BU0RDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BVUFDO09BSUFDO09BSUNDO09BVURDO09BQ0FDO09BRUFDO09BSUFDO09BSUNDO09BUURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRGhtRztPQVlBMmI7T0FDQUU7T0FPQW5YO09BQ0FFO09BQ0FxaEc7T0FJQUM7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNO0ksTTtJLE07SSxzQjtJLE07SSxNO0ksTTtJLG9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLFc7Szs7USxRO3NDO1E7TztLO087O0ssTTtLLE07SyxZO0ssTTtLLE07SyxRO0ssTTs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEksTzs7Ozs7STtLLEksTzs7Ozs7Ozs7O0csSTs7O0k7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7b0Isc0I7RyxxQixzQjtHLHNCLHNCO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7O3lCLE87O3lCLE87O3lCLE87Ozs7OztLLE87O0k7SSxPO0c7O0ksWTtnQjs7STs7OzsyQjttQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGdCO0ksTztHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNLEk7O0k7STtHOztJOzs7O0s7SSxPOzs7SSxJLGdCOzs7MkIsTzs7O0k7SyxpQjtLO087Ozs7O0s7Szs7Ozs7TTs7Ozs7O0k7Rzs7O0ssWTs7SztJO0ksVTtJLE8sVztHOztJOztLLGdEO0s7NEM7O0ssTTtJO0ksWTtJLEksVTs7Ozs7Szs7STtHOzs7SyxZOzs7O3lDOztLOztRO0ssTztJO0k7SztNLE07TSxNOzs7OzJCOzs7YztJOzs7O0s7Tzs7Ozt1QztJLFc7Rzs7STtnQjs7STtHOzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLE87Szt5QixNLDRDO0ksTztHOzZCLE8sbUM7O0k7OztrQyxPO0k7Ozt5QyxPO0ksSSxhOztLOztNLFU7SyxJOztNOztPLFk7TTs7TSxNOztLOztLLE07O0ksSSx1Qjs7Szs7TSxjO0s7O0ssTTs7Rzs7SSxTO0k7O0ksTTtHOzt5QixtRDtJLE87RztHO3lCLGtCLG9CO0ksYTtJO3lCLHdCO0ksTztHOztJLFM7SSw0QjtJLFc7Rzs7SSxZO0ksa0MsTTtJOzs7STtJOzs7Tzs7Ozs7USxPO08sVzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7Rzs7STtJOzs7Tzs7Ozs7USxPO08sVzs7Ozs7cUI7Szs7Rzs7STtJO2dCLFc7OztNLE07Szs7O00sSTtNOzs7OztHOztJO0k7ZSxXOztpQjtLLDhCOztHOztJO0k7bUIsVzs7TSxNO0s7OztNO007Ozs7O0c7O0k7STs7O2dCO0ssa0MsTztLLFc7OztHOztJO0k7OztNLEc7TztROzs7Ozs7O0ssVzs7Rzs7SSxRLE87O0ksTztHO0c7O0k7O0s7O0k7aUI7SyxHLHFDO0ssSTs7Rzs7STtJO2lCO0ssSyw0QjtLLEk7O0c7O0k7Szs7O1MsWTs7UztRO00sVztLOzs7OzRCOzs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7OztNLFcsYztNOzs7OztHOzRCLE8sc0M7O0ksSztLLEcsNEI7SyxNOzs7STtpQixNO0s7OztNLFc7SyxHLGdDOzs7Rzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7O0ksSSxRO0k7aUIsTTtLOzs7TSxXO00sWTtLLEcsaUM7SyxHLGdDOzs7Rzs7STtLO00sTztNLGM7Szs7OztnQzs7O0c7O0ksMEM7Szs7UTtLLE87O0k7Rzs7OztJOztjOztHOztJLFU7O0s7SyxPO0k7STtJO0c7O0ksVztJO0ssUTtLLFk7Szs7Rzs7SSxJLE87STtnQjtLO00sTztNLEk7SyxZLE07Szs7O0c7O0k7SyxJO0ssTztJO0ssUTtLLFksTztLOztHOztJO0k7SyxPO0ssVztLO087OztJLEksVTs7O0s7SztLLE07O0k7SSxJLGtEOzs7SztLLE07O0c7O0ksYzt5QixPLHVCO0ksK0IsNkI7STtpQyxPLGdDOzs7RztvQix3Qzs7STtHOztJLG9CO0c7O0ksWTtHOztJOzs7Ozs7OztHOztJOzs7Ozs7Ozs7Ozs7O0c7O0ksOEM7SyxPO21CLHNCO0ksTztHOztJO0kscUM7Rzs7STtJLHFDO0c7O0k7O0c7O0k7SSxxQztHOztJO0ssVTtLLFc7STtLO00sTTtNLGE7OztNO1E7Vzt1Qjs7Szs7Ozs0Qjs7O0c7O0k7STt5Qzs7TSxNO0ssVztRO00sSTs7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7USxJOzs7O007TztPLFk7Ozs7O0ssSTs7Rzt1Qix3QixTOztJLFk7Z0I7Ozs7RzswQzswQzswQzswQzswQzswQzswQzs7STs7SyxNO0s7Szs7OztNLFc7TTtNOzs7OztJO0s7SyxPO0k7STtHOztJOztLO0ssTzs7Rzs7STs7O0ksTztHOztJOzs7SSxPO0c7O0ksd0I7Ozs7TTtNOzs7Ozs7Rzs7SSx3Qjs7OztNLHlCO007Ozs7OztHOztJOzs7O007TTtNOzs7Ozs7Rzs7STs7SztjO0s7OztJO0ksTztHOztJO0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7STs7O0ssTztLLFc7a0IscUM7STtTO0k7STs7OztNO007Ozs7O0k7Ozs7TTtNOzs7OztJOzs7O007TyxPO08sTzs7OztRO1MsTztnQjtTO1M7UztTOzs7OztTO1M7O1M7O29CO1MsTzs7OztVLFc7YTtXLFc7VyxHO1k7YTthO2E7Ozs7O3NCOzs7Ozs7O1E7UTs7Ozs7TTs7Ozs7STs7O0c7O0k7Ozs7OzBCLE8scUM7STtLLFE7SztJO0s7aUI7SyxxQjs7Ozs7SSxPO0c7O0k7SSxjO2tCO0k7Szs7OztLLE87SSxPO0c7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7O0k7O087O087O087O087O087O087O087ZTs7Rzs7STs7SyxrQjtLLE87O0ksb0I7SSxPO0c7O0k7O007TyxPO2M7Ozs7Ozs7SSxXO0ksTztHO0c7STtJOzhCLHFCOzBCLDRCOztJOzs7Ozs7dUIsTTs7STtHO0c7O0k7SyxZOzs7O0k7SztNOztNOzs7OzZCLE87Ozs7STs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7Ozs7STtJO0k7RztHO0k7STs7Ozs7RztJOztPLEksSSxPOzs7Ozs7TyxXO087UTtTLE87UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHO0c7O0k7SyxJOztLOzs7O2dCO08sVztPOztNOzs7OztJLE87Rzs7STs7SyxNOzs7STs7O00sUTs7TztPO1E7Ozs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7OztPO087UTs7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7Ozs7O0ssTzs7Rzs7STtJOztLO0ssTyxnQztJO0k7SyxtQjtLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STs7Szs4QjttRDtLLE87Ozs7Ozs7O0k7STtJLE87OztJO0ksTztHOztJLFk7Z0IsTzs7STtJLE87RztHLEksaUI7O0k7OztLLEksa0I7Ozs7OztLLFk7Ozs7OzhCOzs7Rzs7SSxnQjtJO2dCOzs7SyxlO0s7Ozs7TSxPO00sTztLLFc7STtJLE87Rzs7SSxZO0k7RztHO3NCLGlCO0c7SSxNO0ksTTtzQixpQjtHO0ksTTtJLE07SSxZOztJOzs7Ozs7eUI7MEQ7MEQ7MEQ7MEQ7Ozs7Ozs7MEQ7OzJEOzJEOzJEOzJEOzs7OztNOztLOztJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Ozs7OztHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7O0c7O0k7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7O0ssdUI7SyxPOztJLHlCO0ksTztHO0csSTs7STs7Ozs7Ozs7O0k7O087O0ksTztHOztJO0s7TTtROzs7UztVO1UsTztTLE87a0I7UTtLLE87Ozs7STtLLGE7SztPO0s7Z0I7O0ksSSxjO2dCO0k7Rzs7SSxhO0ksSTs7Ozs7SSxhO0c7O0kseUM7SSxPOzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7SyxHLHVDO0s7TTtNLE07TTtROzs7OztLLE87OztJLEcseUM7STtLO0ssUTtLO087Ozs7O0ksTztHOztJO0k7Szs7UTtVO0s7O2UsTTs7Rzs7STtLOzs7O007TTtNO007SyxPOztJOzs7Ozs7SztLO0ksTztHOzs7SSxHO0s7STs7OztJOzZDO0k7O0ssTztLO3lCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtNLE87SztLLE87STs7SyxPOzs7ZTt1Qzs7O2UsTzs7Ozs7bUI7Ozs7Ozs7Ozs7MEI7ZSxPO2M7OztJOztLLE87OztlOzs0QjtlO2M7OztJO2dDLDJCOzs7TTs7O1EsVzs7Ozs7O007SztLLE87STs7SyxJLFUsd0I7Ozs0Qjs7O0k7O0ssVTs7TTtNLFc7SztLLGU7STs7O00sTzs7O2dCLE87O2U7O0s7SyxPO0k7OztLO0ssTzs7c0MsTyw2Qjs7O0k7O0ssVTt1QjtLLE87STs7MEIsTyxtQix1QjtLLE87STs7SyxPOztnQyxPLHlCOzs7STs7SyxPOzs7ZTs7Z0IsSSxZOzs7OzsyQjs7OzBCOztlLE87Yzs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7O3VCLE8sK0M7O1MsTztROzs7VSxPOzs7b0IsTzttQjs7UztTLE87UTs7UyxPO1E7O1M7O29CLE87UyxjLE07OEIsTyx3QjtTLE87UTs7UyxVO1MsZTtRO1E7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1MsTzs7O21CO2tCOzs7UTs7UyxROztVO1UsTztTO1M7UztROzJCLGlEOztTLFEsbUI7NEIsTywyQjtTO1M7UTs7UyxJLFUsNEI7Ozs7VSxRO1U7VTs7UTs7UztTLGM7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLGlCOzBCLE8seUM7b0IsUzt3Qix1Qjs7Ozs7Ozs7Ozs7Ozs7O0k7STtJLE87Rzt5QixPLDhCO0c7STs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7Rzs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7STtXO2M7O0ksTztHO3dCLFM7OzRCLE8seUM7c0IsTyxrQzswQixzQjtHOzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEIseUM7O1M7UTs7Uzs7O1UsTTtTO1E7O1M7UTs7UztROztTLFU7UztRO1E7Ozs7UyxVO1Msa0I7UztVLFMsVzs7O1UsSSxhOzs7O1csSSxZOzs7WSxNOztXOztVLGE7OztZLE07Ozs7O1csVTtXLEksWTs7O1ksTTs7Vzs7Yzs7Ozs7VyxJLGM7OztZLE07O1c7O1UsTTtTO1MsYTs7O1E7O1MsSTs7Ozs7VTs7VyxNO1csTTtVO1UsTzs7UztROztTLEk7Ozs7OztVOztTO1E7O1M7VSxjO1U7Ozs7OzswQztVO1csYztXOzs7Ozs7OztROzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztJOzs7Ozs0QiwwQjs7STtLLE07OztLOztlOzs7Ozs7STtJLE87Rzs7eUIsTyx5QjtJO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Szs7TSxnQjs7O0s7STtJLFk7O0k7Rzs7STtLLE07OztLOzs7STtJOzt5QixpQztLOzs7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJLFE7SSxjOzs7Ozs7OztvQixZO3VCLFk7O0ksTztrQjs7Rzs7SSxXOztLLE8sa0I7bUI7O0k7SSxPO0c7O0k7SztNLE07TSxNOzs7Ozs7OztJLGlCO0c7RyxXOztJLE07RztHOztJLG1CO0ssTTtJO0k7Ozs7Rzt1QiwyQzs7STtHOztJOztLLFM7SztLLFU7SyxPO0k7SSxPO0c7O0k7YztJOzs7Rzs7SSxtQjtLLE07O29CLE8sd0M7STtLLFc7aUI7Ozs7O1U7Ozs7O0c7O0ksbUI7SyxNOzs7SyxTO1k7TTtLO00sUTtNLFU7O2U7O0k7STs7O0c7eUIsd0I7O0ksbUI7SyxNO0k7Yzs7Rzs7SSxPLGtCO0c7RyxhOztJOzs7O2M7dUIsbUI7O0c7RyxnQjtHOzs7Ozs7Ozs7O0ssVzs7TTtNO0s7SztLOztJLFk7Z0IsTTs7STs7O0ksbUI7SyxNO0k7Ozs7aUI7OztNLEksMEI7O0s7Ozs7O00sTzs7O0c7O0ksbUI7SyxNO0k7Ozs7TztRLE07Yzs7O00sSSwwQjs7Szs7Ozs7SyxlO0ssTzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ksc0I7SSxVO0ksTztHOztJO0c7RztJO0k7O0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7STtHO0c7O0k7STtVO0k7VTtJLHVCO0ksd0I7SSx1QjtJLHlCO0ksMkI7SSwyQjtJLDZCO0ksd0I7SSx1QjtJO0k7STtJO0k7Ozs7Ozs7Ozs7STs7STtLOzs7O0s7O2U7OztLLFU7Yzs7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0k7STtJO0k7STtJO0k7STtJO0k7Ozs7RztHO0k7STs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0k7STs7SSxHOztJLE07Rzs7SSxVO0k7Szs7TSxvQjtNLG1CO007Ozs7Ozs7RztHLEkseUIsbUI7O0k7O087O087ZTs7RztHO0k7OztROzs7Ozs7Tzs7OztJO3VCLDBDO0c7STs7O1E7OztPOzs7O0k7eUIsTyxzQzs7STs7Tzs7Tzs7TztlOztHOztJOzs7Ozs7Ozs7Rzs7STs7Tzs7Tzs7TztlOztHO3VDLFM7cUMsMkI7O0k7Szs7TTtNO0s7O0k7SyxNLFc7SyxNLFc7SSxPLFc7Rzs7STtJLE87Rzs7SSxZLE87STtJLE87Rzs7STtLLE07SyxVO0k7Szs7O1M7VTtVLFE7Ozs7ZTttQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0ksa0I7STtLLGU7Szs7O0c7RyxJLG1COztJOzs7Rzs7O0s7SztNLFc7TTtNO00sVTtNOzs7OztvQjs7Tzs7O0k7SSxPO0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLO0s7SSxXO0c7RzswQixRLDRCOztJOzs7OztHOzRCLE8sb0M7RyxJLDhCOztJOzs7Rzs7STtJLEksK0I7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7STs7Szs7O1M7UztVO1U7O1MsTzs7Ozs7UTtJLE87Rzs7STsrQyxPLGlCO0c7O0k7SyxPO0k7O0s7SyxPO0k7O0ssTztJO0k7RztrQyx1QztHO0k7SztLLFk7SyxRO0ssZTs7SyxrQjtJLE87RztHOztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO08sTzs7Ozs7OztLO0k7STtHOztJOzBCLHlCO0ksUTs7Szs7STtJLFc7Ozs7SztNO007TTs7O1MsbUI7OztRO0s7OztROztJOztLOzs7Ozs7TTs7OztrQjtNLFE7OztNOztLO0k7SSxPO0c7O0ksYzs7Ozs7O0k7SztLOzs7Szs7O0ssd0Isa0Isc0I7O007OytCOzs7OytCOzs7TTtNOzs2QjtLO0ssVztJO0k7Ozs7OzBDOzs7SSxXO0k7OztNO00sTzs7O2UsNkI7SztLO0ssTzs7STtJO0s7O00sZSxpQjtNOztXLGlCO1c7Szs7SSxhOzs7O007O087TTtPLGdDO007SztLO0ssTzs7STs7OztNO0s7SztNLE0sVztNLFE7OztxQixTO0ssRztNLFU7TTs7SyxVO3VCO0ssTzs7c0I7SSxPO0c7cUI7RztJLGU7SSxNO0ksYztxQjtHO0ksYzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksSSxJLE07Ozs7OztJO007UyxzQztLO0k7Rzs7SSxXO0k7Rzs7STtpQjtHOztJO2lCO0c7O0k7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO0s7Szs7SSxVOztLLE07STtHO2lDLGtCLFM7O29CLE8sZ0M7STtLLFE7SyxTO0ssSTs7ZTtLOztVOztLOztJO0ssUTs7O29CLE8seUM7STtJO3dCLE8sbUM7STtJLE87Rzs7b0IsTyxnQztJLFk7b0IsTyw4QjtJLFk7STtHOztJLFk7O0ksTztHOztJOzs7UTtNO087UTtVOzs7TztPO1EsTTtRLE07Ozs7Ozs7Ozs7OztNOzhCOzs7Ozs7STtLLE07SyxNO0ssTTtLLE07Syw4QjtLLE07SyxNOzs7SyxxQjs7Ozs4Qjs7Ozs7Ozs7O1E7Ozs7STs7O1M7Ozs7Ozs7Ozs7Ozs7SSxHO0ssUTtLO00sWTtNLEcsNEI7TztNO08sVTtPOzs7Z0IsMkI7O0k7Rzs7STtJLHFCO0ksb0I7O0s7SyxlOzs7SyxNO0k7STthOztHOzs7Szs7Ozs7OztXLEssNkM7VztZO1k7Yzs7Ozs7WSxNO1ksVTtXLEksVSxtQzs7O2tDOzs7VTttQixXOztNOzs7VTs7O2E7dUI7VztZO2M7Ozs7OzhCLHlCO1csTzs7VTtTO087cUIsVztPLCtCO08sTTs7Uzs7O007TztPLE07TyxNO08sOEI7TyxNOzs7Ozs7Ozs7Ozs7O1UsTTs7OztTOzs7SztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Z0Msb0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTs7STs7SyxPO0k7SSxPO0c7Rzs4QixPLG9DOztJOztLLE07OztPLHVCLDZDO087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO0k7OztRO1E7OztJOztJLE87RzswQixrQjt1Qix5Qjs7STs7SztNOzs7O0k7Rzs7STs7SztNOzs7O0k7Rzs7STtJO0ksSSxRLGtCLGU7OztLO0ssTTs7Rzs7STtJLDRCO0c7O0k7SztNOzs7O2dCOzs7STs7Ozs7Ozs7Rzs7STs7SyxZOztNLE07O0s7TSxRO00sVTs7O087UTsyQixvQiwwQjtPLGtCLE87O087Ozs7Ozs7VTtXOzs7VyxzQjtVO1csTzs7VTs7UztVOzs7VSxzQjtTLGtCLE87O1M7Ozs7VTtXOzs7VyxzQjtVO1csTzs7VTs7UztVOzs7VSxzQjtTLGtCLE87O1M7O0ssTTs7STs7SztLOztPLFk7Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7TyxNOztNLFM7TTtNLGtCLE87O007O0k7cUI7STtHOztJLEkseUI7STtHOztJO0ssUTtLLFM7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SztNLGdDLEs7TTs7OztNO087TyxzQjtNLE87O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007Szs4QjtLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7TyxXO08sTztNO007O1M7TSwwQjtLOztNO087OztrQjs7a0I7Ozs7OztRLE87O087USxZOztPLE87O00sTztLO0s7O00sMkIsc0IsVztNLE87TTtROztLO0k7STs7OztLOzs7WTs7O0s7TTtRO00sVTtNOzs7O087Ozs7Ozs7Ozs7VTs7Ozs7Ozs7O1U7Ozs7Ozs7STs7STtHO0c7Rzs7RyxvQjtHOztJLE87Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7TyxXO08sTzs7OztRLE07O1E7UyxPO1MsTztRLE87O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOzs7O2lCOzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87TyxPOzs7TyxPOzs7TyxPOzsyQjs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7Ozs7VSxXO1UsTzs7VTtrQjtVLE87O1U7O2E7VSxPOzs7Tzs7OztRO1EsTztRLE87Tzs7VSxPOztVLE87OztVLE87Ozs7OztROztTLE87UyxPO1EsTzs7O1EsTTtPO1EsTztRLE87USxPO1EsTztPLE87Ozs7UTs7OztTO1c7O1MsTztTLE87UyxPO1EsTzs7OztRLE07Tzs7UTtVO1EsTztRLE87TyxPOztPOztRLE87TyxPOztPOztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLE87USxhO08sTzs7OztRLE87O08sTzs7O087Ozs7TyxrQjtPLE87OztPLE87OztPLE87OztPLE87O087O1EsUztPO1EsTTs7O1E7UyxTO1MsTztTLE87NEI7O1E7UyxPO1MsTzs0QjtPLE87Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7Rzs7SSxtQjtJO0ksSSxvQixtQixlO3lCLG1EO0ksWTs7Ozs7O2tDOzs7O2dCOztJO0c7O0k7Ozs7OztnQjs7O2tCOzs7Ozs7OztROzs7STtJLGM7Ozs7Ozs7Ozs7Ozs7STtHO0c7K0IseUI7O0k7OztJLE07Rzs7O0s7Ozs7O0s7TTs7TyxPO2M7Ozs7TTs7Ozs7TSxPO0s7SyxPOztJO0k7STs7O0ssSSxJLCtCOzs7TztRLE87USxPO1EsTztPOzs7TyxjLE87Tzs7SzttQixPOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OzsrQixPLGtDO1E7O1M7O1M7OztTO1UsUTs7O1UsTTtTO1UsTTs7UztROztTLEkseUM7Ozs7VyxPOzs7UTs7UyxJLHlDOzs7O1csTTs7O1E7O1MsTztROztTLE87UTs7UyxJLE0sZ0Q7O1U7VztrQjtZO1c7Ozs7aUM7OztTO1MsTztROztTOztVO1c7a0I7WSxNO1c7Ozs7O1ksTzs7O1M7UyxPO1E7O1M7O1U7VyxVOzs7UztTOzs7VTtXLEs7Vzs7UztTLE87UTs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVLFM7VSxXO1UsSTsyQjtTO1UsUTtVO1U7VTs7OztXLG1CO3FCO1c7Ozs7Ozs7VTs7VyxJLEksTTs7OztvQjs7VztVO1UsTztTO1M7VSxnQjs7VSxTO1UsUTtVOztVO29CO1U7VTtVOztVOzs7UztTLDBCOzs7O1c7Vzs7Ozs7Uzs7O1UsYTs7O1c7O1c7VTtVLE87UztTO1M7VSxXO1UsYTtVOztVO29CO1U7O1U7VTtVLE87UztTOzs7O1c7O1k7OztXOzs7OztTOztVLDhCO1Usa0I7O1U7Ozs7O1U7VztXOztXO1csTztVO1U7VztVO1M7UztTOztZOztVO1csTTs7O1c7WTs7NkIsK0M7VyxlOztVO1c7VztXO2E7OztVO1M7UyxPO1E7O1M7MkI7UyxPO1E7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DOzs7SyxNOzs7O1Esa0Q7USxPO087O3dCLFM7d0IsUzs7b0IsYzswQixPLDRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsUzswQixTO3NCLGM7O0ksTztHOzs7O3lCO3lCO3lCO3lCOzhCOzhCOzhCOzhCOzhCOzhCOzs7OzhCOzhCOzs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7NkI7K0I7K0I7K0I7K0I7K0I7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDhCOzs7Tzs7OztXLFE7VyxPO1U7UTtVOztRLE07TyxPOzs7TyxPOzsyQixPOztHO0c7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQixJO0ssTzs7Rzs7STtJOzJCO0ssUTtXO0ssSTs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7a0I7Szs7STtHOzs7SztpQztJO0k7Rzs7Ozs7MEIsNEI7eUIsTyx1Qzs7Ozs7OztrQjtLOztJO0c7OztJOztjO2MsTzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO08sRztRLE07TyxVOzs7Ozs7Ozs7OztRLE07Z0Q7O087O1E7UTtRO087O1EsTTtPO1E7OztZLHlCOztROztRO1M7Ozs7UyxNOzs7aUQ7Ozs7TztROzs7WTt3Qjs7OztXOztZO1k7O1k7O1k7O1k7O1c7Ozs7OztVO1EsYTtROztROzs7OztTO1M7Uzs7O1k7YTs7O2E7OzthO2U7MEI7YTs7WTtXO3FCOzs7Tzs7Ozs7Ozs7WTs7OztrQjtrQixPO2lCOzt3Qjs7WTtvQjs7c0I7aUM7Vzs7OEI7Tzs7OztZO1ksTztXO1csTzs7Tzs7Ozs7TTtNO087TyxJOzs7Ozs7Ozs7O08sVTs7Ozs7Ozs7OztRO1M7UztTO1M7UztTO1M7USxHOzs7UztVO2dDO1U7Uzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVOzs7YTs7YztjOzs7YztjOztjOzs7OztjOzs7OzthOzs7Ozs7OztZO1UsVztTOzs7VTtXOzs7OztjO2M7Ozs7Ozs7O2E7d0I7O1E7Ozs7VSxNO1M7O1U7O1c7VztXOzs7Yzs7ZTs7ZTs7ZTtjO2E7O3FCOzs7Ozs7UTtTOztZO3dCO1k7Ozs7YTtlOzs7WSxXOztTOztZO1ksTzs7UTs7TyxNOzJDOztNLE07MkM7OztJLE07Rzs7STtLO00sSzs0QixhOzRCLE8sMkI7TSxJOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7Tzs7TztlOztHOztJLGtDO0k7STtJLE87Ozt3QixPLG1DO3dCLE8sbUM7O0k7O087O087O087ZTs7Rzs7Ozs7Ozs7K0IsNEM7OzJCLHlCO1MsTzs7OztROzsyQix5QjtTLE87Ozs7UTs7UztROztTO1E7O1M7UTswQix1Qjs7UztTO1M7UztROztTO1U7VTtTO1M7Ozs7UTs7UztVO1U7O1U7Ozs7Vyx1Qjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVLEk7O1E7Ozs7O1k7YTthLE07YTtZOzs7OztxQjs7VztXO1U7VTtTOzs7O1k7YTthLE07YTtZOzs7OztxQjs7VztXO1U7VTtTOzs7VyxPOzs7OztzQjtzQjs4Qjs7cUI7cUI7b0I7VTtVLGdCLGM7VTtXO1c7VSxnQixjO1U7VztXOzs7O2EsWTs7O2M7OzthO1k7WSxPO1c7VyxPO1U7VTtXLFM7VztXOztXOzs7OztZLFE7VztVO1U7Vzs7YTs7Ozs7OztjO2dCOzs7YTs7Ozs7O1c7VTtVO21COztTOztVLHdCOzs7OztzQjtVO1M7O1U7OztXO2E7O1c7YTs7Ozs7Vzs7Yzs7Ozs7O1U7O1U7VztZO1k7WTs7WTs7OzthLGtCOzs7Ozs7O29CO3FCOzs7OztnQzs7O2U7ZTs7Ozs7YTs7Ozs7O2dFO1c7Ozs7OztrQjttQjs7O2lCO2lCLE87Z0I7Z0IsTztlOzs7O1k7WTtZO1k7Ozs7YTs7OztlO2U7Ozs7O2E7Ozs7Ozs7UztTOzs7O3NCOzs7OztVO1csUTs7O1c7VTtTOzs7VTtVO1M7Ozs7OztVO1csUTs7OztVO1M7OztVO1U7Uzs7Ozs7OztrQixVO2tCO2lCOzs7a0I7a0I7aUI7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsNEI7SSxPO0c7O0k7Ozs7Ozs7STtLLFU7Szt1QixPLHNDO0ssTztJO0k7Ozs7O08sTzs7O08sTzs7O0ksTztHOztJLE87Rzs7Ozs7Ozs7O1EsSTs7OztrQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7O21COztrQjtpQjs7a0I7MEM7OzBDO2tCLFk7Ozs7Ozs7O2lDOzs7OztrQjtpQjs7a0I7bUI7bUI7O21CLE07bUIsTTttQixVOzs7Ozs7O21COztzQjs7dUI7dUIsTTt1QixvQjs7b0M7OztzQjs7dUIsTTt1Qjt1QixvQjs7b0M7Ozs7O3NCOzs7dUIsSzt1QixLO3VCO3lCOzs7dUI7dUIsb0I7aUM7O21CLFc7Ozs7cUI7Ozs7Ozs7OzttQjs7Ozs7c0Isb0I7OztzQjs7c0I7Ozs7dUIsSzt1QixLO3VCO3VCLFE7Ozs7Ozt5Qjs7Ozs7Ozs7MEIsVTswQixVOzs7Ozs7Ozs7OztvQzs7Ozs7Ozs7Ozs7OztrQjtrQixPO2lCOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCLE8sb0I7eUIsc0M7Z0MsMkM7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7STtHOzRCLHFCO3lCLHNCO0c7STtJO0k7STtJO3lCLCtCOztJOzs7Rzs7STtHOztJLFk7Z0I7O0ksTztHOztJLEc7SztNLE87a0M7OztJO0s7SztNO08sTztPLE07TSxHLDZCO00sSztPLEc7UTtRLE87O087TyxPOzs7O0k7STtHOztJO0c7O0k7SSxPO0c7O0k7STtLLE87Ozs7O0s7STtLLGlDO0k7O0ssYTtLLE87STtJOzs7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0k7Ozs2QixPLHlDO0ksTztHOzs7Szs7O00sTztNLGM7SztJO0ksTztHOztJO0s7O2tCLE07SyxJOzs7O2lCO087Ozs7O0ssVzswQixNO0s7SztLO0s7Syx1Qzs7OztrQjs7OztZLHFCLGlDOzs7TyxHO1E7Ozs7WSxxQixpQzs7O08sRztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7O0k7dUIscUI7SSxPO0c7O0k7OztLOztLO00sTztNLGM7OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLLEksb0I7O007O087TTtLO0ssZ0I7O007Ozs7Ozs7TSxPOzs7SztLO00sTztNLE87O007TSxtQiwyQjtNO00sTztLO0ssVSxXOztNO007O1E7O087OztPLE07O3dCOztNO0s7SztNLFE7OztLO00sTTtLLFc7Ozs7TTtPLE87TyxPO3lCO21COzs7TTs7Ozs7Ozs7OztNLFc7O007TztRLE07UTs7VyxJLGUsOEI7OztvQzs7O1U7UTs7a0M7TztPOzs7O2tDOzs7SztLLEk7Ozs7Ozs7UTtTO1MscUIsdUI7OztZLFc7aUM7WSxRO1k7WTtXO1M7Ozs7Ozs7MkMscUI7TztRO1M7NEIsNEI7OztZLHNCO1ksUTtZO1k7Vzs7Ozs7Ozs7OztNOzs7OEI7O087Ozs7Ozs7TyxHLGdDO1E7TyxHLGdDO1E7TztNO00sWTs7Ozs7TTtLO0ssWSxXOztNOzs7OztNLFc7O21CO007O087TTtLO0s7TSxVOzs7Ozs7Ozs7O1c7VztVO2U7Ozs7OztNOzs7OztNOztjOztLO0ssYyxXO0s7Ozs7Ozs7O1E7UTs7Ozs7WTs7YTthLE87WTtxQjthO1k7YTs7O2M7O2M7O2E7YSxPO1k7NkI7MEI7VztRO1E7Ozs7O007OztVOztXO1U7VSxhO1U7UztPLE87TSxXOzs7SyxPO0k7SSxPOztHO0c7SSxPO0c7O0k7SSxvQjs7SztLOzs7TyxPOztNLFU7TyxJOzs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt3QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7Rzs7SyxXO0ssTztJO0ksTztHO0c7STs7O0ssTztLLE87SSxPOztHO0k7O0c7Ryw4Qyx3QjtHOzs7Ozs7Ozs7Ozs7O0s7OzBCLG9CLFc7SztNLFc7TTtNO1E7SztLLE87STtJLDhDLFM7STtLOztlOztJO0k7Ozs7Ozs7OztHOztJLGdDOzs7O0s7O0k7Rzs7SSxPOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7O0k7O0ksb0I7SSxPOzs7STtJO0k7Ozs7YyxPO2E7Rzs7STtJO0ksdUMsTyx1QjtHOztJO2lCO0c7O0ksWTtrQzs7Ozs7OztJO0ssTztJO0k7SyxPO0sseUI7O0s7Syx5QjtJO0ksVTtJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHOztJLE87Rzs7STtnQjs7STtHOztJO0c7O0k7STtJO0c7O0k7Rzs7STtLLFU7Szs7O1E7OztJO0c7O0k7SztPO0s7OztROzs7STtHO0c7cUMsa0M7OztJLG9DOztJO2lCO0ssbUMsUTtxQzs7O0c7Rzs7TSw0Qjs7TTtjOzJCO0s7O0k7STtLLEk7OztNOzs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7O0k7OztLLE07STtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7UTs7O1M7Ozs7Z0IsTzs7Rzs7STs7eUI7OzJCO2UsTzs7Rzs7STtLO00sTTtNO00sVTtLOzs7OztNO2M7Ozs7Ozs7O0c7O0ksUTtJLDBCO3VCLGlCO0ksVztHOztJO2dCOztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7Ozs7SSxXO0ksVztJLFc7O0s7O1EsTzs7UTtvQzs7STtJLE87RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOzs7STs7O007TSxPOzs7STtHO0c7STs7OztJOztLO0s7SztJO0c7O3dCLG1EO0k7SyxPO0ssTTtJLE87Rzs7STtJO2lCOzswRDs7O0c7O0k7O2lCLE87Ozs7Ozs7TSxJOzs7Rzs7cUIsK0M7SSxPO0c7RyxnQjs7STtpQjtHOztJO0ssVTtLO0s7Szs7OzsyQjs7O0c7O0k7SyxVO0s7Szs7OzsyQjs7O0c7RyxpQjs7STtpQjtHOztJO0ssVTtLO0s7Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0cscUI7O0k7aUI7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxzQjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0csdUI7O0k7O2M7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksd0I7SSx3QjtHOztJO0ssSztLLEs7STs7YTthOztHOztJLGM7SSxzQjtHOztJLGM7SSxzQjtHOztJLGdCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLFU7SSwyQjtHOztJLGdCO0c7O0kscUI7Rzs7SSxZO0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksMEI7Rzs7SSwyQjtHOztJLDRDO0k7Ozs7STs7YTthOzs7O0k7STtHOztJOzthO2E7O0c7OztJO0k7STs7O0k7STtJO0c7a0Msd0I7K0Isd0I7b0MsMEI7O0ksMkI7Rzs0QixxQjtpQywwQjs7SSwyQjtHOzhDO0c7NkM7RztzQywrQjt1QyxnQzs7STtJO0k7STtJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7O0c7Ozs7STtJO3FDLGtCLFM7O0ksTTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7Ozs7SSxPO0c7K0Isc0I7O0ksVztHOztJO0ksVztHOztJO0ksVztHOztJO0ksVztHOytCLHNCO3NCLGM7O0k7STtHOztJO0k7RztHOztJO0k7STtHOztJLFc7STtHO21DLDJCO2lDLGdDO3VDLHNDO2lDLGdDO3FDLG1DO3FDLG1DO3NDLG1DO29DLG1DOztJO0c7bUMsbUM7O0k7RztxQyxpQzs7STtrRDtJO0c7O0k7SyxXO0s7TSxNO0s7STtxQixZO0ksa0I7O0s7Ozs7Ozs7Uzs7OztTOzs7O1U7Ozs7OztxQjs7Ozs7Ozs7VyxHOzs7O2lDOzs7Ozs7OztxQjs7Ozs7O2tDOzs7O1M7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7NkIsK0M7Uzs7Ozs7Ozs7OzthO2E7WTs7aUM7Ozs7Ozs7OztLO0k7O0s7Ozs7OzttQzs7O0s7STs7Szs7Ozs7SztJO0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO3FDLDJCO2lDLGdDO3NDLG1DO29DLGdDO3VDLG1DO21DLGdDO3dDLG1DO3dDLG1DO3FDLG1DO2lDLGdDO2lDLG1DO3lDLG9DO2dDLGlDO2dDLGlDO2tDLGlDO21DLG9DO3FDLGlDO3VDLGlDO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOztJO0c7c0MsZ0M7b0MsbUM7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0Msb0M7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOztJO0k7STtHOztJLFc7STtHO21DLGdDO21DLGdDO3FDLGdDO3NDLG1DO3FDLG1DO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RzttQyxnQztxQyxnQzs2QztHO3dDLHFDOzZDO0c7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7OztJO0k7RzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7STtJO0c7OEIsMEI7OztLLE8scUI7STtJLFk7O0ssVztLLHFCO0k7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7STtJO0c7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7O0k7STtHO2dDLDBCOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7dUMsZ0M7cUMsbUM7Rzs7OztJO0k7STs7OztJLG1CO0c7bUMsbUM7O0k7Rzs7STtHOztJO0c7dUMsbUM7Z0MsK0I7OztLLE8scUI7STtJLFk7O0ssVztLLHVCO0k7SSxPO0c7O0ksVztJO0c7O0k7STtJOzs7O0ksbUI7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3VDLG9DO3VDLG9DO2dDLGdDOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHO3dCLGU7MkIsaUI7O0ksVztJO0c7O0k7STtJOzs7O0k7SSw0QjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksdUI7RztHOztJO0k7STtJO0ksZ0M7RztHOztJO0k7STtJLHVCO0c7Rzs7STtJO0k7STtJLFU7SSxzQjtHO0c7O0k7STtJO0k7STtJO0ksVTtJOzs7Ozs7WTtHO0c7O0k7STtJO0k7STtJO0k7STtJLFU7STs7Ozs7OztZOztHOztJO0k7STtJO0k7STs7Ozs7O1k7Rzs7STtJO0k7STtJLGdDO0c7Rzs7STtJO0k7STtJO0k7Ozs7OztZO0c7O0k7STtJO0ksNkI7Rzs7STtJO0k7STtJLFU7SSw0QjtHOztJO0k7STtJO0k7STtJLFU7STs7OztZO0c7O0k7STtJO0k7SSxVO0ksZ0M7RztHO2dDLHlCO0c7Z0MseUI7Rzs7STtJO0k7Rzs7STtHOytCLDhCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0M7SSxHO0s7SSxXO0ksRztLO0ksVztJLEc7SztJLFUsdUI7Ozs7O3lCOzswQjs7MkI7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7Ozs7SSxTOzs7Ozt3Qjs7MEI7OzJCOztTO1UsTzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7SyxPO0ssYztJO0c7O0k7SyxPO0s7O1U7Ozs7OztJO0c7O0k7Ozs7OztJOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7OztNO08sVztPLFc7TyxXO08sTzs7Ozs7STtHOztJO0k7Rzs7STtHOztJO0ksTztHOzRCLDJCOztJOzs7OzsrQzs7Z0Q7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7YTs7Ozs7Ozs7OzswQjs7Ozt3Qjs7O087OzttQjs7STtHOztJOzs7Ozs7Szs7STtHO0c7NkIsZ0M7O0k7OzthO2lDLE87STs7OztNLE07O29CLHdCLE87O0s7Szs7O0c7O0k7O0ksUTs7STtJO0ksTztHOztJO0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7O087OztRO08sTzs7Ozs7Ozs7O08sTzs7Ozs7SSxPO0c7O0k7Ozs7UTs7Uzs7O1k7WSxPO1c7UTs7OEIsTyx1QjtPOzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7O21DLGU7bUMsbUI7NEIsWSwyQjsrQixnQix1Qjs7SSxlLHlCOzttQyxtQjtrQyxPLDBCOztJLDJDO0ssTztJLE87Rzs4Qix3Qjs4QixPLDBCOztJLFE7SSwwQjtJLEk7SSxPOzs7OztjOzs7Ozs7SSw4QjtJOztLLE87Ozs7O21DOzs7O0ksTzs7Ozs7a0M7Ozs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7Uzs7OztVLDRCO1U7UyxPOzs7OzttQjs7Ozs7OztTLE87Ozs7dUM7Ozs7Ozs7VTs7Vyw0QjtVLE87Ozs7O29CLE87Ozs7OzhCLFE7OzhCLE87Ozs7O3dDOzs7NkI7O21COzs7Ozs7OztLLE87Ozs7bUM7OztHOztJLGU7O2tDLE87Ozt5Qjs7Tzs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7O1k7OzthO2EsNEI7YSw0QjtZLE87OztXLE87Ozs7eUM7O1U7OztXOzJCLDBCOzs7OztPLE87Ozs7O2lCOzs7Ozs7Tzs7O1EsNEI7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7Ozs7O1c7O1k7OzthO2EsNEI7OztnQixRO2dCLDBCO2dCLEk7Z0IsTzs7Ozs7MEI7OztlO1ksTzs7Ozs7O3NCOzs7Ozs7Ozs7VztVOzs7Vzs7OzthLE87Ozs7O3VCOzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7Ozs7Ozs7Ozs7OztXLE87Ozs7Ozt5Qzs7O08sWSxPOztPLE87Ozs7Ozs7aUI7Ozs7eUI7O087Ozs7cUM7Ozs7Rzs7STtLOztNLDRCO007SyxPOzs7O21DOzs7Ozs7O0ssZ0M7SyxPOzs7O21DOzs7Ozs7STs7Ozs7TTs7O087Ozs7O0s7O007Tyw0QjtPOztNLE87Ozs7O2dCOzs7OztLO00sTzs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7cUM7Ozs7Ozs7Szs7O0s7TSxPOztLOzs7Ozs7Ozs7Ozs7OztTO1UsTzs7Uzs7O1EsRztTLE87aUIsTzs7O1M7O1U7aUM7OztTLE87Ozs7Ozs7bUI7Ozs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7O21COzs7Ozs7STtLLE87O0k7Rzs7STtLO00sTzs7Szs7O2tDLE87Ozs4Qjs7eUIsTzs7O08sTzs7Tzs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7Ozs7Ozt1QixPOzs7Ozs7USxPOzs7Ozs7Ozs7VyxpQzs7Ozs7OzthLEc7YyxPOzs7O1csTzs7Ozs7O3lDOzs7Tzs7USxPOzs7OztrQjs7Ozs7O08sTzs7Ozs7aUI7Ozs7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7OzBCLE87OztPLE87Ozs7cUM7Ozs7cUIsTzs7TyxPOzs7TyxPOzs7O3FDOzs7eUI7O08sb0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7STs7O0k7Ozs7STtLLE87Ozs7bUM7O0k7SyxnQjs7Ozs7TSxHLDZCLE87OztLLE87Ozs7O21DOzs7SSxpQjs7Ozs7SyxLO2UsTzs7SyxPOzs7OzttQzs7OztLLE87Ozs7O21DOzs7SSwwQjtJLE87Ozs7O2tDOzs7Ozs7SSxlOzs7Ozs7Ozs7OzhCLDZDO00sSztNOzs7Ozs7Ozs7Ozs7O1csWTs7VyxPOztVOztZOzthO29DOzs7YTthOztnQjs7WTs7OzttQzs7Ozs7Ozs7OztZOzs7O1c7OztZO1k7O2U7O1c7Ozs7a0M7Ozs7Ozs7O1c7O1U7OzZCO08sUTs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7Ozs7OztZOzs7YSxXO2E7YTs7Z0I7OztZOzs7OztpQjs7O2tCO2lCOzs7OytDOzs7Ozs7Z0I7OztpQjtnQjs7Ozs4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7O21EOzs7Ozs7Ozs7OztxQjs7Ozs7c0I7cUI7Ozs7bUQ7Ozs7Ozs7Ozs7bUI7Ozs7b0I7bUI7Ozs7aUQ7Ozs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7bUMsTzs7Ozs7Uzs7O1U7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7Ozs7O2U7OzttQjs7ZSxPOzs7Ozt5Qjs7Ozs7Ozs7OztXO1k7O2U7O1k7OztZOztlOztXLE87Ozs7eUM7Ozs7Ozs7OztZLEc7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Vzs7OzthLE87Ozs7OzJDOzs7O1c7WTs7ZTs7WTs7O1k7O2U7O1csTzs7Ozt5Qzs7Ozs7O1M7UyxPOzs7OzttQjttQjtvQjs7bUIsSTttQjtvQjs7bUIsTzs7OztpRDs7OztrQjs7Ozs7O1M7Uzs7O1csTzs7Ozs7O3lDOzs7OztVOzs7O3dDOzs7O1MsTTs7Ozs7UyxPOzs7Ozt1Qzs7O1M7Ozs7VSw0QjtTLE87Ozs7dUM7Ozs7Ozs7O1MsTzs7Uzs7O1UsNEI7UyxPOzs7Ozs7O2EsMEI7YSxPOzs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7O1M7O1UsNEI7UyxPOzs7O3VDOzs7Ozs4Qjs7Ozs7Ozs7VTs7Ozt3Qzs7Ozs7Ozs7Ozs7Uzs7Ozt1Qzs7Ozs7Ozs7O1UsTzs7Ozt3Qzs7O1U7Ozs7O1csNEI7VztVLE87Ozs7d0M7Ozs7O1U7OztXLDRCO1UsTzs7Ozt3Qzs7Ozs7VTs7O1csNEI7VSxPOzs7O3dDOzs7OztVOzs7O1csNEI7VztrQztVLE87Ozs7bUI7Ozs7OztVOzs7Vyw0QjtVLE87Ozs7O29COzs7Ozs7VTs7O1csNEI7VSxPOztVOzs7Vyw0Qjs7Vyw0QjtVLE87OztVOzs7OztXLDRCO1csNEI7Vzs7Vzs7Yzs7VSxPOzs7O3dDOzs7Ozs7Ozs7Vzs7Ozt5Qzs7Ozs7O2E7Ozs7YztjO3FDO2EsTzs7Ozs7Ozs7O3VCLFM7dUIsZTt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7O2U7OztnQjs7Ozs7YztlLE07ZTtlLDRCO2U7O2MsTzs7Ozs7d0I7Ozs7Ozs7TTs7OztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7TyxPOzs7OztpQjs7OztNO08sTzs7TTs7O0c7O0k7Ozs7OztTLE87Ozs7dUM7Ozs7O1Msa0M7UyxPOzs7O3VDOzs7O0s7TSxPOztLOztJLGtCLE87O0k7Rzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7O1E7O1MsNEI7Uzs7USxPOzs7OztrQjs7OztRO1M7O2tDLE87b0MsTzs7Ozs7Vzs7WTtZLDRCO1k7O1csTzs7Ozs7cUI7Ozs7OztXOzs7UyxNOzs7Ozs7UyxPOzs7O1E7Ozs7O1ksaUM7Ozs7O2EsRztjLE87OztZLE87Ozs7OzswQzs7Ozs7Uzs7WTs7Uyw0Qjs7USxPOzs7OztrQjs7Ozs7O1E7O1M7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7OztTLDRCO1EsTzs7OztzQzs7Ozs7UTs7Ozs7O1Msa0M7USxPOzs7O3NDOzs7Ozs7Ozs7OztROzs7Uyw0QjtRLE87Ozs7c0M7Ozs7O1E7Ozs7Uyw0QjtTLDRCO1M7Z0M7USxPOzs7O3NDOzs7Ozs7OztRLE87Ozs7c0M7OztJOzs7O2tDOzs7Rzs0Qjs7STs7O0k7OztJOztLLDBCO0ssTzs7SSxPO0c7O0k7O0ssMEI7SyxPOztJLE87Rzs7STtJLDBCO0ksTztHOzs7Szs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7OztrQzs7OztHOzs7SSwwQjtJLE87Ozs7SSwwQjtJLE87OztJO0ksMEI7O0ksTzs7Ozs7Yzs7Ozs7Rzs7STs7O087O1E7USw0QjtPLE87Ozs7cUM7Ozs7O087Ozs7OztRO1EsNEI7USw0QjtPLE87Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRO1EsNEI7USw0QjtPLE87Ozs7Ozs7Ozs7Ozs7O087Ozs7UTtRLDRCO1EsNEI7TyxPOzs7O3FDOzs7Ozs7O3lCOzs7Tzs7O0c7O0k7OztPOzs7UTtRLDRCO08sTzs7Ozs7aUIsUTtpQjtrQjs7aUIsSTtpQixPOzs7OzsyQjs7O2dCOzs7Ozs7O087Ozs7UTsrQjtROztROztXOztPOzs7OztVLHlDO1UsTzs7Ozt3Qzs7Uzs7Ozs7O087Ozs7USw0QjtRO08sTzs7Ozs7aUI7Ozs7Ozs7Tzs7O087OztRLDRCOztPLE87OztHOzs7Syw4QjtLLDBCOztLLDBCO0ssMEI7SyxPOzs7Ozs7Ozs7Ozs7OztJO0ksUTs7ZTs7STtLOztJLEk7STtLOztJLE87Ozs7O2M7Ozs7O0c7O0k7OztPOzs7O1E7USw0Qjs7O1csUzs7VyxPO1U7USw0QjtPLE87Ozs7O1E7O1M7UztnQztTLDRCO1EsTzs7O087OztRO1EsNEI7USw0Qjs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7UTs7UztTO2dDO1MsNEI7USxPOzs7Ozs7Ozs7Ozs7Tzs7Ozs7Vzs7OztVO1E7USw0Qjs7O1c7Ozs7OzthOztjLDRCO2MsNEI7YSxPOzs7WTs7O1U7TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRO1EsNEI7USw0QjtPLE87Ozs7cUM7Ozs7Ozs7Tzs7UTtRLDRCO08sTzs7OztxQzs7Ozs7eUI7OztPOzs7Rzs7O0ksMEI7SSxJO0k7Szs7SSxPOzs7OztjOzs7OzswQjs7OztnRDs7MEI7Ozs7Z0Q7O2E7Ozs7OztJOzs7OztRLE87Ozs7O2tCOztrQjttQjs7a0IsSTtrQixPOzs7Ozs0Qjs7O2lCOzs7OzsyQjs7UTs7Ozs7Uyw0QjtTO1EsTzs7OztzQzs7Ozs7UTs7O1M7O1k7O1M7OztTOztZOztRLE87Ozs7c0M7Ozs7O1E7Ozs7Uyw0QjtTO1EsTzs7OztzQzs7Ozs7UTs7O1MsNEI7USxPOzs7O3NDOzs7Ozs0Qjs7UTs7O1MsNEI7O1EsTzs7Ozs7SSwwQjtJO0ksTzs7OztrQzs7OztHOztJO0k7O007O08sNEI7TztNLE87Ozs7b0M7Ozs7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1M7O1UsNEI7UyxPOzs7Ozt1Qzs7Ozs7UTtxQztRLE87Ozs7c0M7Ozs7Ozs7Uzs7VTs7YTs7Z0I7Ozs7aUI7O29COztnQixPOzs7OzhDOzs7Ozs7OztnQixPOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7Ozs7OEM7OztnQjs7OztpQjs7b0I7O2dCLE87Ozs7OEM7Ozs7Ozs7O2dCLE87Ozs7VTs7VTs7YTs7UyxPOzs7O3VDOzs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7Ozs7MkIsTzs7UTs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7STs7OztrQzs7O0c7O0k7OztPOzs7UTtRLDRCO1E7K0I7TyxPOzs7Ozs7Ozs7Ozs7O087OzJCOzswQjs7MEI7Ozs7UTs7UztTO2dDO1EsTzs7OztpQjs7Ozs7O087UTtRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7O087O1E7USw0QjtPLE87Ozs7Tzs7USxVOztRO1M7O1U7aUM7O1UsNEI7Uzs7OztXOzs7Ozs7O1M7O1U7aUM7O1UsNEI7Uzs7OztXOzs7Ozs7Ozs7O087Ozs7O1EsNEI7OztXLFM7O1c7VyxPOzs7O3lDOztVO08sTzs7Ozs7OztPO1EsTTtPOztRLDRCO1EsNEI7TyxPOztPOztRO1EsNEI7O08sTzs7O087O1E7USw0Qjs7TyxPOzs7O3FDOzs7Ozs7Ozs7Vyw4QjtXO1k7OztXLDBCO1c7WTs7VyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztROztXOztPLE87Ozs7O2lCOzs7Ozs7MkI7O3lCOzs7TztPOztHOztJO0s7O00sNEI7TTtLLE87Ozs7bUM7Ozs7Ozs7OzBCLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7O1E7Ozs7Uyw0QjtTLDRCO1EsTzs7OztpQjs7Ozs7OztPLE87Ozs7cUM7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7O087OztRLDRCO08sTzs7OztxQzs7Ozs7O08sTzs7OztxQzs7bUM7O0c7O0k7Ozs7a0M7OztHOztJOzs7Ozs7Uzs7O1U7aUM7UyxPOzs7O3VDOzs7Ozs7Tzs7O087Tzs7O087Tzs7Ozs7UTtRO1E7UTs7TztPOzs7Ozs7SztNLE87Ozs7b0M7Ozs7Ozs7UztVLE87Ozs7O29COzs7OztTO1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7SyxPOzs7O21DOztJO0k7c0IsWTtLLE87STs7Ozs7Ozs7OztRO1MsNEI7Uyw0QjtRLE87Ozs7O2tCOzs7Ozs7Ozs7Ozs7SyxnQztLLE87Ozs7bUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7O007Ozs7Ozs7OztPO00sRztPLFU7TyxHOzs7Ozs7Ozs7Ozs7O007Ozs7Tyw0QjtPLDRCO087Ozs7Tzs7VTs7TSxPOzs7O29DOzs7Ozs7Ozs7Szs7O00sNEI7TSw0QjtLLE87Ozs7bUM7Ozs7Ozs7Ozs7Ozs7USxPOzs7OztrQjs7Ozs7OztRLGlDOzs7O1M7VSw0QjtVLDRCO1MsTzs7Ozs7bUI7Ozs7Ozs7O1E7Uyw0QjtTLDRCO1EsTzs7Ozs7a0I7Ozs7Ozs7O0ksMEI7SSxPOzs7O2tDOzs7Ozs7OztLO0ssMEI7SyxPOzs7Ozs7O21DOzs7O0k7SSxROztlOztJLDBCO0ksSTtJO0s7O0ksTzs7OztrQzs7Ozs7O0k7Ozs7Ozs7Ozs7TSxHO08sTzs7Ozs7SSwwQjtJLDBCO0ksTztHOztJOzs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OztPLGlDO08sTzs7OztxQzs7O087O1E7USw0QjtROytCO08sTzs7Ozs7USxNOztPOzswQjs7MEI7O087OztRLDRCOzs7O1c7Vzs7OzthO2M7OztlO3NDO2M7Ozs7Z0I7Ozs7O2M7Ozs7WTs7OztjOztzQztjLE87Ozs7NEM7Ozs7OztZLE87Ozs7MEM7OztVO08sTzs7OztnQjs7Ozs7Ozs7Ozs7O1k7OzthO2E7b0M7YTtvQzthO29DO1ksTzs7OztxQjs7Ozs7Ozs7VztXO1k7OztXLDBCO1csTzs7OztvQjs7Ozs7O087USxNOzs7UTs7Ozs7O1ksb0I7WSxPO1c7O1M7Z0M7Uyw0QjtTLDRCO1EsTzs7OztpQjs7Ozs7Ozs7OztPOzs7O1csb0I7VyxPO1U7O1EsNEI7O1EsNEI7TyxPOzs7O2dCOzs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87O087O1E7USw0Qjs7USw0QjtPLE87Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7VztXO1k7O1csMEI7O1c7WTs7VywwQjtXLEk7VztZOztXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLFU7O29CO087O1E7O1c7O1E7O1E7O1c7O08sTzs7Ozs7aUI7Ozs7OzsyQjs7Tzs7UTtRLDRCOztPLE87Ozs7cUM7Ozs7O3lCOzs7TztPOztHOzs7SSwwQjs7Ozs7Ozs7O0ksTzs7O0ksUTtJLDBCO0ksTzs7Ozs7Yzs7Ozs7OztLOzs7OztLO0ssMEI7SywwQjs7SyxPOzs7Ozs7O21DOzs7Ozs7OztJO0ksUSxNOztlOztJLDBCO0ksSTtJO0s7O0ksTzs7OztrQzs7Ozs7OztLO0ssMEI7O0ssMEI7SyxPOzs7Ozs7Ozs7OztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0s7O007TSwwQjtNLE87Ozs7b0M7Ozs7SztLLE87STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7STtJLDBCOztJO0s7OztJLE87Ozs7O2MsUTtjLDBCO2MsTzs7Ozs7d0I7OzthOzs7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7SyxTOztLLE87Ozs7O2U7OztJO0k7Szs7TSw0QjtLLE87Ozs7Ozs7O2U7Z0I7O2lCO3dDO2dCLE87Ozs7OzBCOzs7Ozs7OztlLDBCO2UsMEI7ZSxJO2UsTzs7Ozs7eUI7Ozs7O2M7Ozs7O0ksMEI7SSxPOzs7Ozs7Yzs7ZSxPOzs7Ozt5Qjs7Ozs7c0I7YywwQjtjLEk7YyxPOzs7Ozt3Qjs7O2E7Ozs7OztJOzs7Szs7SSxtQjtJLDBCO0ksTztHOzs7Szs7OztNO0ssMEI7SywwQjtLO0ssMEI7SyxPOzs7O21DOzs7Ozs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7O3FDOzs7O0ksTztjO2M7Ozs7O29DOzs7O0k7Ozt5QixPOzs7cUIsTzs7TyxPOzswQixPOzs7TyxPLHdCOztHOztJO0s7O007NkI7TTs7O0ssTzs7Ozs7ZTs7Ozs7Z0IsTzs7SSxPO0c7O0ksTzs7OztrQzs7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87RztHLGlDO0csK0I7RyxpQztHLGlDO0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHLCtCO0csK0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxpQzs7O0k7Rzs7STtJO21CO2dCO0ssb0I7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7OztJLGE7O0ssWTtrQjtrQjtLLE87STtJLE87Rzs7O0ssWTtLLE87STtJLE87Rzs7eUIscUIsWTt5Qix1QixjO3lCLHNCLGE7STtLO0c7O3VDLGdDO0k7SztHO0c7STtJO0k7STs7STs7Ozs7OztHOztJOztLLE07O0ssd0IsTztLLE87O0k7OztLLE87SyxPO0ksTztHOztJOztLLE07O0k7Rzs7STtJOzs7YSxZO2E7YTtZO0c7O0k7STs7O2E7YyxTOzs7YTthO1k7Rzs7STs7O0s7OztJO0ssVztLOzs7OytCOzs7OztxQix3QjtJLE87Rzs7STtLLEk7SyxJOzs7O0k7Z0IsTztLLEksaUIsSSw4Qjs7Ozs7OztNO00sSTs7O0s7TSxzQjs7Ozs7Rzs7STttQztJO0ssTztLLE87SyxPO0ksTztHO0c7OztJOztLLEk7O0k7Z0IsTztLLEksaUIsSTtLO21CLE07TTs7O087USxNOzs7Tzs7O3VCLE07TTtPO1M7VztPLE87TTs7Ozs7O007Ozs7O0c7O0k7STtHOztJO0ssSTtLLE87SyxPO0k7SSxhO0k7Rzs7STs7O0c7Ozs7Ozs7OztJLFMsTztJOztLOzs7SSxPOztvQixjLDZCOztJLFUsTTtJLGtCOzs7Szs7TyxjO087Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJLHNCOztLOztNOzs7Ozs7Ozs7OztLLE87STtJLFE7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7SyxJO2tCOztJO0c7O0ksZ0M7Ozs7UTs7UTtTLEk7MkI7O1E7O1E7UyxNOzZCOztROztRLE87OztnQjtpQjs7OztLLE07O2dCO2E7OzthOzs7YTs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7OztPO1E7Ozs7Ozs7STtJLFc7O0s7O0k7STtJLEksZSxzQjs7Szs7O007Tzs7Ozs7Ozs7VTs7OztZLE07O1c7VyxLLGtDOzs7Ozs7Ozs7Ozs7TztPLEk7Ozs7Ozs7Ozs7Ozs7O087Tzs7Ozs7OztNOzs7STtJO0k7Rzs7OztLOzs7TTs7SyxNOztJLE07OztJOzs7SyxXOzs7O0ksc0I7O0s7O0s7STtJLEksUSw4Qzs7SyxNO0ksSSxZOztLO00saUI7O087OztROzs7O087Ozs7O0k7SSxXO0k7RztrRDs7STs7SztLO0k7OztJLFc7SSxPO0c7Ozs7SztLOztJLE07OztJO0ssTyxxQjtJLE07Rzs7OztLO0s7Szs7SSxNOzs7SSxZO0k7SSxXO0c7O0ksVztJLG1DO0c7OztJLG9CO0k7NEI7Ozs7RyxJLG1CO3VCLFc7RztJOzs7OzJCLFM7Ozs7Ozs7UztTO3NCO1U7VyxTOzs7OztROztTO1MsTTtRO3FDLHlCLFM7b0MseUIsUzs7UztTO21CO21CO1E7Z0MsMkI7O1M7UTs7Uzs7VTtXOzs7VSxlLE87O1UsTzs7O3FCLE87UyxNO1E7O1M7UztROztTO1E7O1M7UztTLE07UTs7O1M7UztROztTOztVO1U7O29CLFM7O3lDLFM7O3FCO29COzs7OztxRSxTOzs7O21COztTO1M7OzBDLCtCOzs7UTs7O1M7bUI7O1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVO1MsTztROztTO29CO1M7O1U7O1U7UyxPOztROztTLGU7UTs7UyxlO1E7O1M7bUI7O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLG9CO1M7aUM7OztTO1UsTTs7UzttQjttQjtROztTO1MsRyxXO1U7UyxNO1E7O1MsRyxXO1U7UyxNO1E7O1M7UztROztTO1M7UTs7Uzs7OzZCOztVOzs7OEI7O1M7UTttRCx5Qjs7Uzs7Ozs7VTtTOzs7UztVO1U7VTtTO1E7O1M7UyxPO1E7O1M7UyxPO1E7NkIsdUM7O1M7VTtVO1MsTztROztTO1UsTTs7UTs7UztTO1E7O1MsSSxlO1M7UTs7Uzs7Ozs7O1M7UTs7UztTO3dCO1U7VyxTOzs7OztROztTO1M7Ozs7bUIsTyxjO2tCOztROztTO1M7Ozs7bUI7OzZCLGM7a0I7O1E7O1MsTztRO21DLHVCOytCLHVCOztTO1U7O1c7Ozs7YztjO2E7VSxPOzs7Ozs7Ozs7O1M7O1U7O1UsUTtxQjtTOztVO1M7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VztXOzs7OzJCOztXO1c7OztROztTLG9CLFc7UyxPO1E7Ozs7Ozs7UyxJLFEsd0IsVTs7O1U7VTtVLE87O1M7UTs7Uzs7UTs7UyxtQyxPO1M7UztTLGlCOzs7MEMsa0M7d0MsaUM7O1M7UyxZOztVOztXLE87VyxPO1U7VTtVLFc7VSxPOztTOztROztTO1M7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTs7OztVO1c7OztjOzs7Yzs7OztlLE07YztlOztrQiwyQjtrQixxQjtvQztrQjtrQjs7ZTs7a0IsUTs7Ozs7ZTs7a0IsRyw4QjsyQjs7OzttQjs7a0IsTTs7O2MsTzs7O1UsTztTOztVO1csUTtXOztVO1M7O1U7VTs7Ozs7VztZLE07Vzs7YztlLFM7ZSxlO2U7Ozs7O3VDOztjO2U7ZTs7Ozs7Uzs7VSwwQjtVOzs7b0I7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Z0I7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Z0I7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Z0I7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsMkI7O1UsbUI7Ozs7Uzs7VTs7VztZLE07a0I7OztVO1M7O1U7Uzs7O1U7OztVOzRCLFM7a0MsUztVLE87Uzs7VTtTOztVLG1COztTOztVLEs7VyxPO1UsRztXLE07VTtXLFE7VyxVO1U7UztvQyxnQjs7VTtVO3lCO1c7dUI7VyxzQjs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7Rzs7STtLO007OztPOzs7TztPO007O0s7SyxnQztHOytCLGdDOzs7STsrQjs7O0ssTTs7STs7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7Rzs7OztJLHNCLG1CLG9COztHOztJOzs7SztLO0s7OztLO087Ozs7OztJOzs7O0k7OztJOztLOztJO0c7Rzs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztnQyxzQztJLE87Rzs7STs7O0k7Ozs7OztlO0c7O0k7Szs7O0ssTztLO0ksVTs7O0c7O0k7Szs7O0ssTztLO0ksVTs7STtHOztJLHFDO2M7O0k7OztJLHFDO2M7STs7SztLO0ksTzs7O0k7Ozs7OztLLFM7SztJOzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7SyxPO0ssTzt1Qix3QjtJLE87Rzs7STtLO00sYTtNLGM7TSxPO00sTztNLE87SyxPOztJO0ssTztLLGdCO0ssTztLLE87SSxPO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7YyxXO2lDLHdCO2MsTzthOztHOztJO0ssTztLLE87STtHOztJOzs7O0s7cUM7STs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7O0k7Ozt3Qjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCO21DOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7OztLLEs7SztLO0s7SyxLO0ssTztLO0k7OztJOztLOzs7Ozs7O0ssSztLLEs7SztJO0c7O0k7O0s7Ozs7O0s7SztPOztVOzs7O0k7Rzs7STs7Szs7Ozs7SztLO087O1U7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLLE07SztLO0s7STtHOztJOztLOzs7OztJO0c7O0ksTTtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SztLO0ssTztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SyxPO0ssUTtLO0ssSTtJOzs7STs7Szs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7SyxJO0k7OztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssUTtLO0ssTztLO087SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0ssUTtLLE87SztPOztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssTztLO0ssUTtLO087O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0k7STtLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLOzs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SyxPO0ssZ0I7SztLO0k7Rzs7STs7Szs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0ssVztLLE87SztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SyxLO0s7SztLLEs7STtJO0ssTztLO0k7OztJOztLOzs7OztLLEs7SyxLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0s7OztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SyxPO0ssVztLO087SyxRO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7Ozs7SztJO0k7SztLO0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0s7SyxLO0ssSztLO0s7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLO0s7SyxLO0ssSztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7O0s7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLO0s7SyxLO0ssSztLO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7STtJO0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLOztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLOztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0ssVztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0ssaUI7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7OztLOztLO0k7Rzs7STs7Szs7Ozs7O0s7O0ssUTtJO0c7O0k7O0s7Ozs7OztLOztLLFE7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87SztPO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087O0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxPO0s7SztLO0ssUTtLO0ssTztLO087O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0k7STtLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLOzs7STtLLE07STtLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLLHlCO0k7Rzs7STs7Szs7Ozs7SyxRO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLO0ssTztLLFc7SztPOzs7Ozs7Ozs7O0ssUTtJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7Szs7OztLLEk7SSxJLHVCO0k7OztJOztLOzs7Ozs7Ozs7SztLOzs7O0ssSTtJLEksdUI7STtHOztJOztLOzs7Ozs7OztLO0s7Ozs7SyxJO0ksSSx1QjtJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7SztLO0ssSTtJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLLEk7STtHOztJOzs7Ozs7Ozs7SyxPO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SyxXO0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SyxXO0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7Szs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJOzs7STs7Szs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7Rzs7STs7Ozs7Ozs7OztLLE87SyxPO0ssTztLLEk7STs7O0k7O0s7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7OztJOztLOzs7Ozs7OztLLE87SyxPO0ssTztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLOztROzs7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0ssSztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLLGU7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7Ozs7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7STtJO0ssTztLLE87SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztJO0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssUTtLO0ssTztLOztROzs7STs7O0k7O0s7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7OztJO0c7Ozs7Ozs7Ozs7Ozs7OztLO0s7STtJO0ssTztLLE87SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7O0s7Szs7STtJLE07Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7Ozs7OztLO0s7Szs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7OztLO0s7Szs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7SztLO0ssTztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLLE87SyxRO0s7SyxPO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0ssTztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssbUI7OzJCO0ssTztLLFE7SztLLE87SztJOzs7STs7Ozs7Ozs7OztLO0s7SyxPO0s7O0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssbUI7OzJCO0ssTztLLFE7SztLLE87Szs7SztJOzs7STs7Ozs7Ozs7O0s7SztLLE87SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7SyxJO0k7OztJOzs7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLOztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7OztJO0k7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0ssSTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SyxJO0s7STs7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLE87SyxPO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLE87SyxPO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssSTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLLEs7STtJO0s7SyxJO0s7STs7O0k7O0s7Ozs7OztLO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssSTtLO0k7Rzs7STs7Szs7Ozs7O0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLLE87SztPOzs7Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLOzs7SyxPO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SyxPO0s7SyxPO0s7Tzs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLLFE7SyxPO0ssTztLO087Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SyxPO0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLOztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SyxRO0s7STs7O0k7Ozs7Ozs7Ozs7OztLO0s7STs7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7Ozs7OztNLE07OztJO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLOzs7OztJOzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7O0s7SztJOzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SyxtQjs7MkI7SyxXO0s7SztPOztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7SztLLE87SztLO087Ozs7Ozs7O0k7OztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLOzs7SyxPO0ssUTtLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLOzs7SyxPO0ssUTtLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7OztLLE87SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0ssTztLO0s7STs7O0k7Ozs7Ozs7Ozs7SyxLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLLEs7SztJOzs7STs7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLOzs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7OztJO0c7O0k7Ozs7Ozs7OztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtJO0s7SyxJO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLE87SztLO087O0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxPO0s7SztPOztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SyxPO0s7SztLO0k7OztJOzs7Ozs7Ozs7Szs7O0s7O0k7STtLLFc7SztLLE87SztJO0c7O0k7O0s7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7OztJLEksa0M7STtHOztJOztLOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7OztJLEksa0M7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7SztLO0s7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLOzs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLLEs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLLEs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0ssSTtJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztLLE07SztJO0c7O0k7O0s7Ozs7O0s7SyxNO0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7O0s7STtHOztJOzs7Ozs7OztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7O0s7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SyxLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztLLEs7SztLO0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Szs7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7O0s7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0k7Rzs7STs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLOzs7SztLO0s7STtHOztJOzs7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLOzs7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87SztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7O0s7Szs7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7O0s7Szs7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Szs7O0s7O0k7SSxlOztLLE07STtLLE87SztJO0c7O0k7O0s7Ozs7Ozs7O0ssTztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7SztLO0ssSTtJO0c7O0k7Ozs7Ozs7OztLLE87SyxPO0s7SyxJO0k7Rzs7STs7Szs7Ozs7SztLLEk7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLLEs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0ssTTtLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7Szs7SztLOztLLDRCO0k7Ozs7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7O0s7SyxRO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7RztHO0k7OztROztTOzs7O1E7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO0c7O0ksTztHOztJLE87Rzs7SSxvQjtHO0csSSxxQzs4QiwwQztHOzZCLHVCO0c7O0k7Rzs7STs7O0s7Szs7Ozs7O0k7OztJO0k7OzswQjtJLGM7OztJO0k7Rzs7SSxnQjs7STtJLEksVSw2QjtJO0k7Rzs7SSxNOzBCO0c7O0ksTTtHOztJOzs7O00sVTs7Ozs7Ozs7OztPLE07OztPLE07O007Ozs7OztHOztJOzs7O1M7O1M7O1M7OztzQjtJO0c7O0ksZ0I7SSxNOzhCO0c7O0k7MkIsTztJOztxQztHOztJOzJCLE87STs7cUM7Rzs7STtJLE87Rzs7SSxXO0k7Rzs7STtJOzs7Ozs7O0c7RyxJLHVCOztJLFc7SSxPOztHO0csSSw0Qjs7STs7Rzs7STtHOztJLHVCOzs7O2lCOztNO08sVTtjOzs7O1E7O1MsTztnQjs7O1E7OztTOztZLGtCOztZLE87VztnQjs7O1E7OztTOztZLG9COztZLE87VztnQjs7O21COztROztTLGU7Z0I7Ozs7O2dCOzs7OztnQjs7O1E7OztTOztZLG9COztZLE87VztnQjs7STtHO0c7O0ksYTtJO0k7SyxPOztJO0c7O0k7STtLOztROzs7Ozs7O1U7O1U7O2E7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VSxtQjtVOzs7O1MsUztxQztTO1M7VSxPOztTOztTLGdDOztTO1UsTzs7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTO21CO1M7VSxXO1U7Ozs7aUM7Ozs7UzttQjtTO1M7O1M7bUI7Uzs7UzttQjtTO1M7O1M7Z0I7Uzs7UztVO1k7O1UsUTtTOztTO2tCO1M7O1M7VTtZOztVLFU7Uzs7Uzs7WTtTOztTO1U7OztTOztTO1U7WTs7VTs7NkI7OztTOztTO1U7WTs7VSxXO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1M7VTtZOztVLGE7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UyxnQzs7UyxRO1M7O1MsVTtTOztTOztTOztTOztTOztZOztTOztTOztTO1U7OztTOztTO1U7Ozs7d0I7NEI7O1M7VTtZOztVOzs7ZSxhO2U7Yzs7OztTOzs7VSxXO1U7O1M7VTs7O1M7O1M7O1k7O1MsMkI7VSxXO1UsWTs7Uyx5Qjs7UyxZO1M7Ozs7Uzs7UztTLHNCO1M7dUI7O1U7O1U7Vzs7Yzs7Ozs7O1c7OztVO1c7VztXLE07VztXO1csUztXO1csWTs7O1csSSxlOzs7Ozs7O2tCOzs7O1c7OztVOzs7O29DOzs7O1M7O1M7O1M7O1M7O1M7O1M7O1M7O1M7O1M7aUI7OztLOzs7RzswQjs7STtrQjs7SztNOztTOzs7TTs7Ozs7O21DO1E7Ozs7O1MsTTs7O1MsTzs7OztROzs7OEI7UTs7O1k7Ozs7OztXLHdCOztZLE07Vzs7WSxPO1ksUTs7Vzs7Ozs7OztROzs7UTs7UztTLFE7OEI7UTs7O1k7Ozs7OztXLDRCOztZLE07Vzs7WSxPO1ksVTs7Vzs7Ozs7OztRO1E7UTs7O1E7O1EsZ0M7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1EsZ0M7O1E7Z0I7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7O1E7O1M7UyxRO1E7USxrQjs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7OztTLFU7Uzs7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxnQzs7NkI7O1E7O1c7O1EsRztROzs7USxRO1E7OztHOztJO0k7Szs7UTs7Ozs7Uzs7UztpQjs7Szs7O0c7O0k7Yzs7SSxPO0c7O0ksZTs7SztLO007Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1U7VyxNO1csTTtXLFU7VTtVLEcsa0I7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0k7Rzs7STtLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Rzs7STs7c0U7STtHOztJO0s7SztLLFU7SztLOztLOzs7Ozs7OztPLEs7TztPLE07Ozs7OztPLFU7TyxHO1E7TyxNOztNLEc7TztPLE07Ozs7O0c7O0csNkI7RztHLDBCO0c7Ryw4QjtHO0csdUI7RztHLHdCO0c7Ryx5QjtHO0csc0I7RztHLDBCO0c7RywwQjtHO0csd0I7RztHLHdCO0c7RywyQjtHO0csbUM7RztHLGlDO0c7Ryx5Qjs7SSw4Qjs7OztPOzs7OztROztlO2M7Ozs7OztjOzs7Ozs7Yzs7O2lDOzs7Ozs7O1U7Ozs7aUM7Ozs7OztjOzs7Ozs7Yzs7O2lDOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Rzs7SSxxQjtJO0ssYTs7SSwwQjs7SSwwQjtJOztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0ksTztHOztJOzs7Ozs7OztHOztJO0c7O0ksaUIsTzs7Rzs7SSxZLE87O0ksTzs7O0k7OztPLE87O3FCLE87Ozs7USxPOztPLE87Ozs7TyxPOzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxXO0k7SSxPO0c7O0ksUTtJO0ksVztJO0k7Rzs7SSxROztJO0ksTztHOztJLE87Rzs4QixPLGlDOztJLE87Rzs7SSxPO0c7O0ksOEI7OztLLE87OztJLE87Ozs7SztJO0ksTztHOztJO0k7O0s7SztLLEksbUI7bUM7OzswQixPOzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTs7O1E7UTtTOzs7WTs7O2E7YTthOzs7WTtZO1c7USxPOzs7UTtROzs7UTs7Ozs7UTtRO1E7OztrQjttQjtpQjs7Ozs7UTs7Ozs7UTtROzs7Ozs7O1E7UTtTLE87O1E7OztHOztJO0k7O0s7SztLLEksbUI7bUM7Ozs7USxPOzs7UTs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7UTs7O2tCO2tCO2tCO2lCOzs7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7O1E7UTtRO1MsTzs7UTs7O1E7UTs7O1E7Ozs7O1EsTzs7O1E7Ozs7Ozs7OztRO1E7UyxPOztROzs7UTs7OztHOztJO0k7O0s7SztLLEksbUI7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1E7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzt5Qjs7MkI7OztPO1EsTzs7Tzs7Ozs7UTtROztRO1MsTzs7UTs7TztRLE87O087Ozs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7MEIsc0I7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7USxPOzs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7MEIsc0I7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7O0k7OztJOzs7STs7O0k7OztJOzs7O0k7STs7O0k7STtJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7O0c7O0k7O0s7SztLO0k7SSxPO0c7O0k7STtJLEk7STtJO0k7STtJOzs7Rzs7STtJO0k7STtJO0k7Rzs7STtJO0k7SSxJO0k7STtJLGdCOzs7SztLLE87OztJO2dCO0k7STtHOztJO0k7O0s7SztLLEksbUI7Ozs7UTtROzs7UTtRO1E7Ozs7UTtRO1E7Ozs7O1E7UTs7O1E7Ozs7Ozs7OztHOztJO0k7STtJOzs7OztPO087Ozs7Ozs7OztPOzs7Ozs7O087Ozs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7Ozs7Ozs7TztPOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtRO1E7Ozs7O1E7UTtROzs7UTtROzs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7OztHOzs7STtJO0k7OztJO0k7STtJOzs7OztPO087Tzs7Ozs7OztPO087Tzs7Ozs7OztPO087Tzs7O087TztPOzs7TztPOzt5Qjs7Ozs7OztPO087O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7RztpQyx1Qzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7RztpQyx1Qzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO087OztPO087OztPO087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJO0k7O0c7O0k7STs7Rzs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7STs7O0k7STtJOztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7OzthLE87Ozs4QztXLE87O1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7TyxnQyxPO08sTzs7O087Ozs7UTs7Vzs7OztZLE07WSxRO1c7WTs7OzthLE87YSxPOzs7NEM7VyxPOztRLE87TyxPOzs7Tzs7O1EsTztRLHNCO1EsTztPLE87OztPOzs7O1EsTztRLHNCO1Esc0I7USxPO1E7TyxPOzs7TyxpQixPO08sTzs7OztJOzs7Ozs7Ozs7SyxNO0ssUTtLO0ssZTtLLFc7SyxLO0ssSztLLEs7SztJO0s7Ozs7TSxPO00sTztLLFc7O0k7SyxXO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0s7SyxPO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7STs7OztLLE07SyxRO0ssTztJLE87OztJOzs7OztLLE07SyxROztLOzs7O00sZTtNO00sc0I7aUI7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7OztRLE87USxPO1EsZTtPLE87Ozs7Ozs7OztPOzs7USxPO1Esc0I7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRLHNCO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRLHNCO1EsTztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YSxvQjthLFc7WTs7UTtPLE87OztPOzs7USxlO08sTzs7O087OztRLE87USxzQjtRLHNCO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxtQjtPLE87O08sbUIsTztPLE87O08sbUI7TyxPOztPLG1CLE87TyxPOztPLGlCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7OztRLE87USxPO1EsZTtPLE87Ozs7Ozs7OztPOzs7USxPO1Esc0I7USxPO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7O0k7Ozs7OztLLE87SztLLFc7SyxXO0ksTzs7Rzs7STs7Ozs7SyxPO0ssTztLLFc7SyxXO0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STs7eUIsVzs7MkIsVzs7MkIsVzs7Tzs7O1EsZTtPLFc7O0c7O0k7Ozs7O0s7SyxXO0ssVztJLE87O0c7O0k7Ozs7O0ssTztLLFc7SyxXO0ksTzs7Rzs7STs7Ozs7SztLLGU7SyxXO0ssVztJLE87Rzs7STs7Ozs7SztLO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0ssTztLO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0ssTztLO0ssVztLLFc7SSxPO0c7MkIsUzs7STs7Ozs7O0ssTztLO0ssVztLLFc7SSxPOztHOztJOzs7O0ssTztLLFc7SyxXO0ksTztHOztJOzs7O0ssTztLLFc7SyxXO0ksTztHOztJLGdDLE87STtHOztJOzs7Ozs7O0s7SyxlO0s7SSxvQjtJO0ssVztLLFc7SyxXO0ksTztHOztJLFc7SSxzQjtHOztJLFc7SSxzQjtHOztJLFc7SSxzQjtHOztJLFc7SSxPO0c7O0k7Ozs7SyxPO0ssZTtJLFc7Rzs7SSxXO0ksTztHO0c7Ozs7UTtTLE87UyxPO1E7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTTs7STtLLE87STs7Szs7TTtNLE87TSxlO0ssTzs7Ozs7STtJO0ssTzs7SztLLE87SyxlO0k7OztJO0ssTztLLGU7SSxPOztHO0c7O0k7SyxlO0s7Ozs7NEI7OztHOztJLGE7O0c7Rzs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STtLLE87Szs7O1U7OztXO1UsTzs7O0k7Rzs7STtLO0ssTztLLGU7STtHOztJOztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLLDhCOztLOztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7UTs7Ozs7SSxPO0c7OztLOzBCOzs7TTs7Ozs7OztPOztNLE87Szs7TTs7Ozs7Ozs7O1E7OztPOztNLE87Szs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7USxtQztRLFc7Ozs7TSxPOzs7OztPOzs7OztPOzs7Ozs7Ozs7Tzs7Ozs7Tzs7Ozs7Tzs7Ozs7TztPLGM7Ozs7O087UTs7Ozs7Ozs7Ozs7O2M7O2EsTzs7Ozs7O1c7VyxPO1U7b0I7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21COzs7Ozs7Tzs7Ozs7TztROztXLG1CLE07VztXLE87VTtRO08sTzs7O087Ozs7O0s7STtJLE87Rzs7O0s7O007SztJO0k7SyxXO0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTzs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJLE87O2M7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O2lELE87aUQsTzs7O0k7SSxPOzs7SSxZOztJLE87Ozs7SSxPOzs7O0k7STs7SyxzQixPO0ssTzs7O0ksTzs7OztJO0k7OztLLE87OztJLE87Ozs7STtJOzs7OztRO1EsTzs7USxtQixPO1EsTzs7O1E7USxXO1EsTzs7UTs7UyxzQjtRLE87OztRO1EsVztRLE87O3lCLE87O1Esa0Isc0I7USxPOzsyQixPOzs7UTtRO1MsTztTLHNCO1Msc0I7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJLG9CO0k7STtLLEs7SyxLO0ssSztJOztLO0s7SyxPOztJO0k7SSxTO0k7SSxPOzs7STs7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7O0k7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7Ozs7Ozs7O0k7SSxXO0k7SSxXO0ksb0I7STtJO0ksTzs7Ozs7OztJO0k7SSxPOzs7Ozs7OztJOztLOzs7O00sc0I7SztLO0ssUzs7Z0M7STtJLE87Ozs7STtJOzs7O087TyxXO08sTzs7d0IsTzs7O087TyxPOzswQixPOzs7TztPLE87Ozs7O0k7STs7O3lCLE87OzJCLE87OzZCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJO0ksVztJLE87OztJLFk7O0k7SSxPOzs7O0k7STs7O3dCOzt5QixPOzs7TztPLE87OztPO08sVztPLE87O3lCLE87O3dCLE87a0M7Ozs7STs7O087TyxPOzs7TztPOzs7TztPLE87OztPO08sTzs7O087TyxPOzs7TztPOzs7OztJOzs7eUIsTzs7Ozs7O3lCLE87O3lCLE87O3dCLE87OzBCLE87O08sbUIsTztPLE87OzBCLE87OzBCLE87O08sbUIsTztPLE87O08sbUIsTztPLE87OzBCLE87OztPO08sTztrQyxPOztJLFc7SSxPOzs7O0k7STs7O3dCOzswQixPOzs7TztPLE87OztPO08sTzs7O087TyxPOzt3QixPO2tDLE87Ozs7O0k7Ozs7TztPLE87O08sbUIsTztPLE87O3lCLE87O08saUIsTztPLE87O3lCLE87O3lCLE87OzBCLE87O08sbUIsTztPLE87OzBCLE87OzBCLE87O08sbUIsTztPLE87O08sbUIsTztPLE87OzBCLE87OzBCLE87OztPO08sTzs7Ozs7STtJO2lDOzs7d0I7O087O08sZ0MsTTtPO08sTzs7MEIsTzs7O08sUztPO08sTzs7O087TztRLE87USxzQjtPLE87OztPO08sTzs7O087TyxPOztPLGtCLE87TyxPOzs7TztPLGdCOzt5QixnQjs7Tzs7O1EsTztRLHNCO1Esc0I7TztPLGdCOzs7TztPOzs7TztPO08sTzs7TyxvQixPO08sTzs7O087TztPLGdCOzs7TztPLE87OztPO08sTzs7O087TztPO08sTzs7O087TyxPOzs7TztPLFM7TyxPOzswQixPOzs0Qjs7O087TyxPOztPOztRLE87USxzQjtRLHNCO08sTzs7O087TztPLE87OztPO08sTzs7MkIsTzs7MkIsTzs7O087TyxnQjs7MEIsTzs7MkIsTzs7MkIsTzs7O087TyxPOzs7Ozs7O087TyxXO087TyxPO2tDLE87Ozs7Ozs7OztJO0k7STtJLE87Ozs7STtJO2lDOzs7d0I7OztPO087O087O087O08sa0IsTTtPLE87OztPO087O2lCO2lCLGtCO2lCO2lCLE87Z0I7OzswQixnQjs7Tzs7USxNO1Esb0I7USxvQjtPLE87O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TztRLE07USxvQjtPLE87O08sbUMsTTtPO08sTzs7O087TyxPOzt3QixPOzs7TztPLE87Ozs7SSxxQyxPOztJLE87Ozs7STtJOzs7eUIsTzs7O087Tzs7O087Tzs7O087TyxPOzt3QixPOzt3QixPO2tDLE87Ozs7O0k7SSxVO0ksTzs7O0k7Ozs7OztLLE07SSxrQjtJO0k7STtJO0ksTzs7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87Rzs7SSxVO0ksTztHOztJLFU7SSxPO0c7O0k7O3lCLE87OzJCLE87OzJCLE87OztPO08sZ0I7O0c7O0k7Ozs7STtJO0ksTztHOztJOzs7O0k7STtJLE87Rzs7STs7Ozs7STtJLFM7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87RzsyQixTOztJOzs7OztJO0k7STtJLE87Rzs7STs7OztJO0k7SSxPO0c7O0k7Ozs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7Ozs7Ozs7STtJLGtCO0k7STtJLFM7STtJLE87Rzs7SSxVO0kscUI7Rzs7SSxVO0kscUI7Rzs7SSxVO0kscUI7Rzs7SSxVO0ksTztHOztJO0k7SSxTO0ksTztHOztJLFU7SSxPO0c7RztJOzs7UTtROztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7Ozs7OztvQix1RDtJLFk7Z0I7OytDOzs7SyxNOztJLE07O0c7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7dUI7O1E7Ozs7O0k7Rzs7STtnQjs7STtHOztJLEk7Ozs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7Ozs7WTs7cUIsTztvQjs7Ozs7OztZOztxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7O2U7O3dCLE87dUI7Ozs7OztXOztvQixPO21COzs7USxNO08sTzs7Ozs7Ozs7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7STtHOztJLEcsc0M7SSxXO0ksTztHOztJOzs7Ozt5RDs7Szs7STtnQjs7STtHOzJCLE8sMkM7O0ksSTs7Szs7TTs7MEM7O007SztLLE87STtJLE87Rzs7STs7SztLLE87STtJLE87Rzs7SSxJLDhCOztLLGM7ZTtLO0ssTztJO0ksTztHOztJO0k7bUI7Ozs7OztLOztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7STs7SztLLE87STtJLE87Rzs7SSxPO0c7O0k7O0s7O007O0s7TTtPLE07TyxNO08sTTtNOzs7Ozs7TTs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7O1E7Ozs7Ozs7Ozs7Ozs7O1csYyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztTLEksVSw0Qjs7Ozs7O1U7Ozs7OztLOzs7Ozs7a0U7OztJLFc7STtLO00sTTtNO0s7SyxVO0s7Szs7OztLO0ssTTs7Rzs7STs7OztLO0k7RztHLDhCOztJOzs7O0s7STtHO0cscUI7O0k7Ozs7SztJO0c7RyxnQjs7STs7OztLO0k7RztHLGtCO3dCLE8sd0M7O0ksa0I7SSxPO0c7O0ksa0I7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJO0k7Ozs7Ozs7O0s7ZTs7SyxPOztHOzs7STtJLGlCOztLO0k7Rzs7STtJLGlCOzs7O21EOzs7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7UTs7MkI7OztxQjs7OzJCLG1CLDRCO1EsTzs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OzRCOzs0Qjs7OztROzs7cUI7OzsyQixtQiw0QjtRLE87Ozs7Ozs7Ozs7Szs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OzswQjs7c0I7O0k7Rzs7STs7dUI7O0k7RztHO0ksTztHOztJO2tCOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7O29COztvQjs7STtHOztJO0ksaUI7OztvQjs7O1EsTzs7O0k7Rzs7STs7Ozs7OztnQjtHOztJOzs7Ozs7O2dCO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0k7STs7STtJLFc7Rzt5QixrQzs7O0ksb0I7SSxXO0ksVzs7Ozs7SztLLE87STtJLE87OztJLFEsTTtJOzs7SyxROzs7SSxJLGtDOzs7NEI7OztHOztJOzt1QixPOztPLDhCO08sTztlLE07O0c7Rzs7STtLOztHOzs7O0s7Szs7O1EsSSxJOzs7O29COztROztROzs7Uzs7Ozs7O1E7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJOzs7O0s7SSxXO0ksTTtHOztJO0k7O21DOzs7UTs7O1E7Ozs7USxtQixzQjtRLE87OztRO1EsMEI7USxPOzs7Ozs7WTtZOzthOzs7WTtXO1EsTzs7O1E7USwwQjtRLE87Ozs7Ozs7O1k7WTthOztjLHNCO2EsTzs7O1k7VztRLE87Ozs7O1E7UTtnQyxrQixTO1MsTztTLHNCO1EsTztrQzs7O0c7O0ksWTs7SSxPOzs7STtLLGtCLHNCO0ssTzs7O3FCLDBCO0ksTzs7O0k7O0s7SztLO0k7STtJO0k7OztLOztNOztTOztTLG9CO1MsTzs7SyxPOzs7dUIsNEI7SSxPO0c7O0k7OztLO0ssMEI7SyxPOzs7STtHOztJOztJLG9CO0ksTztHOztJO0c7Rzs7STtJOzttQzs7O1E7Ozs7USxtQixzQjtRLE87OztRO1E7cUMsa0Isa0I7Ozs7MkI7Ozs7OztZO1k7WTtXO1EsTzs7USxxQixzQjtRLE87OztROzs7OztRO1E7OzJCOzs7O1E7O1M7OztZO2E7O1c7USxPOzs7OzBCOztROzs7Uzs7OztnQjs7O0c7O0k7STs7Rzs7STtJOzttQzs7OzBCOztROztROzs7O1M7Ozs7OzhCOzs7UTtRLEk7Ozs7UTs7K0Isa0IseUI7USxPOzs7UTtROzs7UTtROztROztTLHFCO1EsTzs7O1E7UTs7K0I7Ozs7Ozs7WTtZO1k7VztRO1E7OztRO1E7OztRO1E7Ozs7UTs7UyxxQjtRLE87OztRO1E7UTs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7Ozs7MkI7Ozs7OzsrQixrQix5QjtRLE87O1E7Ozs7UztTOzs7O2lCOzs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1MscUI7USxPOzs7OztRO1MsTzs7UTs7UTs7O1M7Ozs7O1E7Ozs7O1M7Uzs7YTtjOzs7UyxPOzs7Ozs7Ozs7Ozs7Ozs7O1csbUI7Ozs7Ozs7YTs7O1c7Ozs7UTs7O0c7O0k7STs7OzswQjs7MEI7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7UTs7OztZOztrQzs7bUM7O21DOztxQzs7b0M7O3FDOztXO1EsTzs7O1E7UyxPOztROzswQjtvQzs7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7UTs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs4Qjs7STs7O0k7OztJO0s7Ozs7TTtLO0s7O0ksTztHOzt3Qiw2QjtJO0ssTztLO29CLDRCO0k7STtHOztJOztHOztJO0k7SSxJLGdDOzs7OzswQztLO0s7O0c7O0k7Ozt5Qjs7NEI7O3lCO2Usc0I7O0c7a0MsK0IsUzs7SSxPOzs7Rzs7SSxpQzs7OzBCLHFCOzs7Ozs7MEIsNEI7OzRCLDhCOztPOztROzs7Vzt1Qjs7VyxPO1U7UTtPOztPOztRO1EsUTtRLE07TyxXOztPOzs7O1c7dUI7O1csTztVO1EsUTtRLE87USxNOzRCLGlDO087Tzs7MEI7O087O1E7OztPO087USxRO1EsTTtPLFc7O087O1Esb0I7TztPOztPOztRLG9CO087Tzs7Tzs7eUIscUI7O08sa0I7eUM7Tzs7SSxrQjtJO0k7OztJLEk7STtJLE87Rzs7SSxJO0k7SSxPO0c7O0k7Ozt5Qjs7eUI7ZSwyQjs7Rzs7STtJOzs7OztRO1Esd0I7USxPOzs7UTtROzs7Ozs7bUM7O3FDOzt1Qzs7O2U7ZTs7ZTt5Qzs7O1EsTzs7O1E7Ozs7MEI7O1E7OztTOzs7OztHOzZDO0c7a0Q7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOztPOztRLG9CO087Tzs7MEIsNEI7OzRCLDhCOztPOztROzs7Vzt1Qjs7VyxPO1U7UTtPOztPOzs7O1c7dUI7O1csTztVO1EsUTtRLE87USxNOzBCLG1DO087Tzs7TyxvQjt5QztPOzswQjs7Tzs7USxxQjtPO087O087O1Esb0I7TztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USx3QjtRLE87O1E7Ozs7UztTLG9CO1EsTzs7O1E7USxJOzs7O1E7OytCLGtCLHlCO1EsTzs7UTs7OztTOzs7Ozs7UTtROzswQjs7UTs7O1M7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7STtHOzZCLGtCLDhCO2lDLGM7d0IscUIsWTs7SSxjLE87O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7SSxPO0c7O0k7Ozs7Ozs7Ozs7UyxPOzs7OztLOzs7Rzs7STs7Tzs7NkI7OztHO0c7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7STs7O0k7Rzs7STs7Ozs7TTs7cUI7O08sMkM7Tzs7O0ssTTs7MkI7OztLOztvQjs7TTs7Ozs7O087TTs7O0ksTTtHOztJLFk7STs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7OztLLEk7STs7TTs7O0s7Ozs7a0M7YTthOztJO2lCLE07OytCOzs7Ozs7O21CLE07Szs7OztNLEk7SztNOzs7bUIsTTs7Tzs7Ozs7Ozs7Ozs7bUIsTTtLOzs7O00sSTtLLFk7Ozs7O0ksWTtJLGtCO0k7Rzs7OzttQjtLOzs7O00sSTtLLFkseUI7Ozs7Ozs7O007Ozs7TyxTO087Ozs7O29COzs7Ozs7Ozs7STtJO3lCLGlDO0c7O0ksUTtJLGM7SSxPO0c7O0k7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7SyxxQixPOztLO0ssNEI7Rzs7STs7Ozt1Qjs7USxpQjs7Ozs7VyxtQjs7O21COzs7Ozs7Ozs7MkIsTzttQjs7Ozs7Ozs7OztXOzs7O0s7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7VSxPOzs7Ozs7VTs7O1csTTtVLFU7Ozs7Ozs7O1Usb0M7VSxVOzs7Ozs7Ozs7Rzs7STtJO3VCOzs7Ozs7OztVLE87Ozs7OztVLGtDO1UsaUI7Ozs7OztTLG9DO1MsYzs7Ozt3Qjs7Szs7Rzs7Ozs7O1EscUIsTTtRLE87Ozs7USxzQztnQjs7OztnQyxxQzs7STtJOzs7NkIsTzs7OztROzs7UztTO1EsTzs7RzswQixTOztJO0k7OzBCLE87OztPLEc7UTtTLE07ZTs7a0I7TztPLE87O087OztRO1EsTTtRLE07UTtPLE87Ozs7STs7MEIsTzs7O08sTzs7O08sTzs7OztJO0k7Ozs2Qjs7OztRLE07O0c7O0k7Ozs7MkI7O1E7OztTOzs7O2dCOztHOztJO0s7Szs7OzBCOzs7O1M7OztVOzs7O0k7STtHOztJO0k7Ozs2QixPOzs0Qjs7O0c7O0ksRztpQjtJLE07Rzs7STs7O08sYSw0Qjs7OztPO1E7OztJO0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSx5QztJO0c7O0ksNkM7STtHOztJLDRDO0k7Rzs7STtHOztJO0c7O0k7O1k7Ozs7O0c7O0k7SyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSx3QjtJO0s7TSxNO007Ozs7WSxNOzs7OztLLE07STtJO0s7OztLOztJLFU7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O29CLHVCO0ksRyx5QztJLE07Rzs7STs7Tzs7O0k7SyxVO0ssYTtJO0k7SztLOztLOzs7OztLOzs7Uzs7Ozs7STtJO0s7SyxNO0ssYTtLO0k7Rzs7SSxPO0c7eUIsWTs7STs7Ozs7Ozs7O0s7O0k7Rzs7STs7OzZDLFU7O2lELFU7d0QsVTs7O2dDOztJO0c7O0k7SztLLE07SyxtQjs7Rzs7STs7TyxPOztPLE87ZSxPOztHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLE8sa0M7O0k7SyxPOzs7eUIsTzs7O08sTzs7O08sTzs7OztJLFU7STtHO0c7Ozs7Ozs7Ozs7OztJOzBCLHFCOzZCLFMsZ0M7O0ksTztLLFc7Szs7SSxXO0c7O0ksTztLLFc7Szs7SSxXO0c7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7OzBCLG9CO3NCLFcsOEI7cUIsVyw4Qjt1QixXLDhCOzRCLFcsOEI7O0ksVztHO3dCLFcsOEI7MkIsVyw4Qjs7STs7O0ssTztJLE87Ozs7O0s7STtJLG9COzs7SztNLFc7TSxPOztLOzs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7OzthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7SSxPO0c7O0k7SSxZO0k7RztHLGdDOzJCLDhCO2tDLGtDOzBCLDBCO3NCLHdCOztJO2tDO3VCOztJLEksVyxrQzs7OzRCOzs7Rzs2Qiw2Qjs7STs7O0s7O0k7Rzs7a0Msb0M7O0s7TSxZO007Ozs7O00sVTtNO007O0k7O0s7OztNLE87SztJOztLO0ssbUI7SztJOzs7SywwQixzQjtLLDhCLHNCOzs7TTs7Syx3Qix1QjtxQjs7bUM7Ozs7USxJLFU7Ozs7UyxJLFU7OztnQzs7O1MsTzs7OztrQjs7UTs7UTs7O1M7UTs7UTs7O1M7Uzs7Uzs7OztVO1U7Ozs7O1U7OztRO1E7O1E7O1Msb0I7UyxNO1E7O1E7OztTO2lDLGtDO1M7OztTLEksUzs7O2dDOzs7Uzs7O1E7O1EsMEIsVTtzQjs7UTs7OztLLGtCO0s7STs7SztLO0k7OzhCLDBCOzs7TTs7O0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OztROzt5QjtpQzs7STs7SztNO00sb0I7TSx1QjtNO007Ozs7Ozs7O0k7STs7RzttQyxTOztJLE07Rzs7Z0MsNEM7Rzs7O0s7OzJCLE87OztROztRLGtDO1E7O0k7SSxxQjtHOztJLHNDO0c7b0Msc0M7O2dDLE8scUM7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7STtJLE87Rzs7SSxJLG1CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx3QjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7O0k7STtlO0c7O0k7SSxxQjtHO0c7STtJOzs7Ozs7STtJO0c7eUIsaUM7eUIscUIsMkI7O0ksSSxpQixpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7O0c7cUMsbUIsVTtHO3FCO0csWTs7STs7OztHOztJO0k7Ozs7Ozs7O0s7O0c7O0k7O0c7O2lDLGM7O0k7STs7OztHOzs2QixjOzs7Ozs7Ozs7O1M7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00sRyx1Qzs7O0s7O0s7O0c7O0ksSSxnQztJO0c7O0ksSSwwQjtJO0c7O0k7Ozs7Ozs7O087OztRLE07Ozs7TSxJLE87OzswQjs7Ozs7a0M7eUM7O0k7Rzs7STtJOzs7dUM7Ozs7SyxPOztHOzRCLGdCOzs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7b0IsMEI7SSxPO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0c7Z0Msc0M7O0k7OzJDOzsrQzs7OEM7OzhDOzs7Ozs7Ozs7OztHO0csb0I7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7SyxJOzs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7OztVOzs7Ozs0Qjs7O1U7UztNLE87OztNLHFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyxjO0c7O0ksTyxjO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RyxxQjtHLHFCO0csMkI7O0ksb0I7SSxPO0c7O0ksVztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQiwwQjt1QiwwQjs0QiwwQjs7SSxvQjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7SSxzQjtHOztJLFc7SSxzQjtHOztJLG9CO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLFcseUM7O0k7O0c7O0ksa0MsTztJLFc7OztJO0ksTzs7ZTs7OztHOztJO0ksTztHOztJLFc7O0ssa0MsTztLLE8sa0I7STtJLE8sVztHO0c7STs7O1EsTTtPO0k7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STs7Ozs7O3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7O0ksUTtVO0ksSSxLLDRCLFE7Ozs7MEI7O1E7OztRLE07O0k7RzswQixPLG1DOztJO0c7O0ksVztJLFc7SSxXOztLLGtCLFE7cUQ7SztJO0ksTztHOztJLEksd0Q7Ozs7TSxXOztNOzs7Ozs7O0c7O0ksWTs7Ozs7UTtTLGM7eUM7Ozs7Ozs7WTs7WSxNOzs7Ozs7USxzQixPOzs7STtHOztJLFk7Ozs7O1E7UyxjOztTOzs7NEIsTzs7STtHOztJOztHOztJOzs7OztVO1c7O0k7Rzs7SSxZOzs7Ozs7USxnQixtQjs7OzRCOzs7STtHOztJO2dCO0ksbUIsVTs7O0s7TSxZO00sTzs7O0k7Rzs7SSxXOztLLG1CLFE7Ozs7TyxPOzs7dUMsTzs7SztJO0k7SyxTO0ssTztLLFE7Ozs7Ozs7O1EsTTs7SSxXOztLO0ssTztJO0ksYztrQjs7STtHOztJO0ksbUMsTyxpQjtHOztJLFk7a0M7OztPOztPLG9DLFM7TyxPOzt5QixPOzsyQixPOzs7a0IsTztPLG9CLFc7TyxPOztPOzs7USxXO08sTzs7TyxvQjtPLE8sd0I7O087O087OztRLFc7TyxPOzs7Ozs7VztXLE87VTtPLE87ZSxNOztHOztJO0k7Z0MsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7OztJOztLLE87OztxQixPLG9CO0ksTzs7O0k7O0ssVzs7OztLLDJDLE87SztJO0ksVzs7O0k7OzZDLE8sb0I7SyxPOzs7O0s7SyxPO0k7SSxPOzs7SSxXO0ksTztHOztJOzswQixPOzswQixPOzs0QixPOzswQixPOzsyQixPOzswQixPO21DLE87Ozs7STtHOztJLGtCLE87STtJLGtCLE87STs7Rzs7STtJLGtCLE87STs7SSx5QjtJLGtCLE87SSxPO0c7MEM7Rzs7SSxtQixPO0ksTztHOztJLGtCLE87STtJO0ksa0IsTztJOztHOztJLG1CLE87STtJOztHOztJLFk7O0ksTzs7O0k7OzBCLE87OztPO08sTztpQyxPOzs7O0k7OztPO08sVztPO08sTzs7O087Tzs7Ozs7VztXLE87VTtPOzs7OztXO1csTztVO08sTzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztROztTLE87OzJCLGtCLE8sc0I7USxPOzs7Ozs7SyxPOztJO0c7dUIsUzs7STtLLFE7Ozs7OztLLGlDLFE7Ozs7TTs7TyxPO2M7O007Ozs7TztPO08sTztjO0s7STtJLGE7STs7Ozs7MkI7OztJO0ksTztHOztJO0k7O0ssNkI7Szs7OztROzs7OztTLE8scUM7UyxPO1EsYzs7eUIsVzs7O1EsZ0I7OzttQixXO1E7Ozs7Uyx3QjtRLFc7O1E7Ozs7O1MsTztTLE87USxnQjs7UTs7UyxPOzs7OztRLE07O1EsTTs7UTs7UTs7O1MsUTtRLFk7Ozs7Ozs7WTtZLGM7VztRLGlCOzs7Rzs7SSxXOztJLE87Rzs7SSxJLGdCLE07O0s7SyxPO0k7STtJO0c7Rzs7OztxQzs7Ozs7TSxXLDZCOzs7Ozs7O0csVzs7STt3QixzQjtJOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7Ozs0Qjs7O0c7Rzs7SSxZOztJLGdEO0k7Rzs7SSw4Qjs7STtHOztJLDhCOzs7SyxPOzs7SSxPO0c7O0k7O2lCOztLLEc7TTswQztLLEk7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7Rzs7STtJOzs7OztROzs7O0c7O0ksaUI7O0k7RzsyQix1QzsrQix1Qzs7SSxJO2tDLG9CO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJOztLO0ssWTtJO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJLEk7aUMsb0I7SSxPO0c7O0ksSTs7SztLO0k7SSxPO0c7O0k7O0s7SyxZO0k7SSxPO0c7O0ksSSxVOzs7O00sTTs7OztJO0c7O0ksSSxVOzs7O00sTTs7OztJO0c7O0ksdUI7Rzs7SSxXO0ksTztHOztJLHdCOztHOztJLEksMkI7STtHOztJO0s7SztJO0c7O0k7STtHO2lDLHFDOztJO0ksYTtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVTs7RzttQyx1QjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7OzJCLGtCLHNCO0k7OzJCLGtCLHNCO0ksTztHOztJLE87Rzs7SSxZO3NFO0ksTTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7Yzs7O0k7OztPLE87Ozs7Ozs7Ozs7TztPO087bUM7OztHOztJLFc7STs7OztLOztPLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxTLEk7Ozs7Ozs7OztJO0c7O0k7YztjO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7SyxJOztHOztJLFU7STttQjtHOzs7Szs7Ozs7OztXLE87Ozs7Ozs7O1U7OztjOztVLE87Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7OztLOzs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7UywwQzs7O1MsMEM7OztVO1U7VSxPOzs7O0s7OztLO00sTTs7O1E7O1M7O1k7O1EsTzs7O1EsTzs7MEM7OztRLG1CO1EsTzs7O1EsTzs7O1EsTzs7O1EsTzs7O1EsTzs7UTs7Uzs7WTs7USxPOzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7aUI7O2E7Ozs7O1MsNEI7USxPOzs7UTtTOztVLFc7OztlOztTO1U7O1UsYzs7VyxvQixVOzs7Ozs7VTtXO1k7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7WSxROztZLCtDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlLFc7OztlOztrQjs7O2UsVzs7OztjOzs7Ozt1Qjs7Vzs7O1c7Ozs7d0I7Uzs7Ozs7VSxPOzs7OzJCLE87O1E7O1M7O1k7O1EsTzs7OztTLE87OztLLDBCO0ssTzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7OztJO0k7RztHOzs7O21COztzQixPOztLO0s7Ozs7cUIsTyx5Qzt3QixPLDRDO0csZ0M7RztxQixPLHlDO0csNkI7O0k7Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7O0k7OztJOztLO0ssRztNO007O0s7SztLO0s7SyxPOztJOzs7STtLOztNOztTOztLLE87O0k7OztJOzs7O1EsTzs7Ozs7Ozs7Ozs7UTtRO1E7USxPOztROzs7Uyw0QjtRLE87OzBCOzt1QixPOztROzs7UyxjO1EsTzs7UTs7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRO1E7Uzs7O1k7Ozs7WSxPOztXO1E7USxPOzs7USxPOzs7OztRO1E7UTtRO1EsTzs7STs7O0k7OztrQjs7TTtNOzs7O0ksTztHOzs7OztpQjtNLHVCO00sTzs7OztNOzs7Tyw0QjtNLE87Ozs7SztjOzs7Ozs7O0s7ZTs7O2lCO2lCO0k7STtLOztJLE87Ozs7O21COztzQixPOztLO0s7Szs7Ozs7SSxVOztLO0s7SztLO0s7SyxPOzs7STtJLE87Ozs7Ozs7O0ksTzs7O0csSSxrQzs7SSxPO2M7YztHOzs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0ksVTt1QixPLDBDO0k7Szs7SSxPOzs7STs7Ozs7OztXLFU7O1c7WTs7VyxPOztPLE87OztPOzs7O1E7VTthOztPLE87Ozs7Ozs7Ozs7Tzs7O1E7O1csWTs7VyxPOzs7d0IsTywwQztROztXOztPLE87Ozs7O0k7OztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7O0c7STtJOzs7USxPO087STs7dUIsTywrQztJOzs7USxPO087STs7O1EsTztPO0k7OztRLE87TztnRDtHOztJOzs7TTs7Tzs7Ozs7SyxhO0ssTzs7Ozs7Ozs7O0c7OztLLFksTztLOzs7TSxPO0ssTzs7OztLLDRCOzs7Ozs7TyxPOzs7Ozs7Ozs7O0s7TSxROzs7Szs7Ozs7O1M7OztVOzs7Ozs7O007TyxPO087Uzs7TSxPOzs7O0k7Rzs7SSxtQzs7O08sTzs7Ozs7Ozs7TyxPOzs7TztpQjs7aUI7OztPLE87Ozs7SSxZOzttQixPOzs7O0s7OztNOzs7Szs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNLE87Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJO0ssTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7UTtRLE87OztPOzs7Vzs7OztZOzs7OztnQixPO2U7YTs7Z0I7Ozs7O1csTzs7Ozs7OztVO1E7O08sTzs7Ozs7Ozs7Ozs7USxPOztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7Vzs7WTtZLE87Ozs7Ozs7O1c7VyxPO1U7OztXOzs7WSxPOzs7Ozs7Ozs7WSxPO1c7VztZOzs7VTtROztXOztZLE87O1c7Ozs7Vzs7Ozs7Ozs7VTtROzs7Ozs7TztROztXLG1COztROztXOztjOztjLE87c0IsTzs7VTtROztXLGU7VTs7O1c7Ozs7Ozs7O2MsTzs7Ozs7Ozs7Ozs7OztrQjttQixPOzttQixPO2tCO2tCO21COztrQixPOztpQjtjLE87Ozs7Ozs7OztjLE87Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7UTs7VyxZOztXOztZLE87VztXLE87O1E7Ozs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0k7O0s7TSxPOzs7Ozs7O0s7OztTOztLLE87Ozs7Ozs7Ozs7YyxPO0k7Szs7SSxPO0c7OztLOzs7TSxPOzs7Ozs7Ozt3QixPLDBDO0s7TTs7O0k7STt1QixPLDBDO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7O0ksWTs7O0s7OztNOzs7Szs7Ozs7OztROzs7Uzs7Ozs7O007TyxPO087TTs7O2dCOzs7Ozs7STs7Szs7OztLOzs7Yzs7OztJOzs7TyxPOzs7Ozs7Ozs7OztpQjs7Ozs7USxPOzZCLE87O1EsTztPLFk7O1EsTzs7TyxPOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJO0k7WTs7Ozs7RzsrQixvQzs7STtJO1k7Ozs7O0c7O0k7Ozs7SyxPO0k7RztpQyxzQzs7SSw4QixPO0k7RzttQyx3QzswQixzQztnQyw2Qzs7STtnQztrQztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsbUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7Uzs7OztHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7cUIsTzs7STtHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7O0ssTTs7STtHOztJLFk7OzsyQjs7O087O087OztPOztHOztJLEksVTs7OzRCOzs7O0c7RyxhO29DLHlCOztJOztHOztJOzs7Ozs7O0k7RztHOzs7O1EsTTtPOztJLFc7STtLOzs7UTs7OztXO29COztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVLHNCO1UsUzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZLHNCO1ksTzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTs7O1csc0I7VyxRO1csVTs7Vzs7OztZOzs7O3VCOzs7Ozs7OztTOzs7OzthO2E7WTtVLE87Ozs7SztNLHNCO2U7O0k7STtHOzs4QixpQztJLE87Rzs7STs7SztLO0s7STtHOztJO0s7O00sc0I7SyxXOzs7SSxvQjtJLFc7OztJOzs7O0s7Szs7Szs7Ozs7Ozs7Ozs7O0s7OztNLHNCO2lCOztLOzs7TTs7Uzs7VTtVOztTLG9CO1M7VSxPO1U7Uzs7aUI7O0ksb0I7STtZOzs7Ozs7Ozs7Ozs7OztHOzs4Qiw2QztJLE87Rzs7STs7Tzs7OztRO1Esc0I7USxRO1E7Tzs7Tzs7Ozs7VztXO1U7USxPOzs7O1c7VztVO1EsTztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJO0s7Szs7SSxvQjtJO1k7Ozs7Ozs7O0c7OzhCLDhDO0ksTztHOztJOztLO0s7O0s7Szs7SSxvQjtJO1k7Ozs7Ozs7Rzs7OEIsK0M7SSxPO0c7OzhCLCtCO0ksTztHOztJOztLO0s7O0k7Rzs7OEIsK0M7SSxPO0c7O0k7O0s7Ozs7SSxvQjtJO0ssTztLOztJLG9CO0ksVztJO0c7OztLO0k7SSxPO0c7OztLLFc7SyxPO0k7SSxPO0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7STs7SztLOztJLG9CO0ksVztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxPO1ksTztXLE87VTs7Ozs7O1MsVztTLE87UTs7Ozs7OztVO1c7O1UsVztTO00sTzs7Ozs7UTs7Ozs7UyxPO1M7Ozs7O1E7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7O1MsTztTOzs7OztROzs7Ozs7O1MsTztTO1M7Ozs7OztROzs7OztTLE87UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7Ozs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7O087OztPOzs7Tzs7Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7Ozs7Ozs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJO0c7O0ksb0I7d0I7STs7Ozs7Ozs7O0s7O3dCOzs7Szs7d0I7OztJOzs7ZTs7Z0I7Ozs7Z0IsbUI7Z0I7aUIsVztpQjtnQjtlO2UsTzs7Ozs7Ozs7Rzs7O0s7STtJLE87Rzs2QixPLHVDOztJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOztJO0s7SztLO00sTTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O0s7OztpQyxTO0s7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTztJOztLO00sTTtNLE07TSxVO0ssTzs7OztJO0ksMEIsdUI7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7OztTOztTO1E7Ozs7Ozs7O0s7OztTO1M7UTs7Ozs7Ozs7Ozs7Ozs7OztLO087Ozs7WTs7Ozs7SyxNO0ssTTtLO087SztPOztLO087Ozs7WTs7Ozs7SyxNO0ssTTtLLE07SyxNO0s7TztJLE87Ozs7Z0I7Ozs7OztvQixXLCtCO0c7SSxpQjtJLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztLO0s7TSxVO00sVTtNLFk7Ozs7bUI7OztVO1UsYztvQjtVO1csTTtXLFU7Z0Y7VSxJLE87OztNLE87O0k7STtJOztHOztJLE87Rzs7STs7Ozs7d0IsWTtZO0k7Szs7TSw0QjtNO00sTTtxQjs7O0k7Rzs7STtLOzs7SSx5QztJOztLLDhCO0ssYztLLFE7SyxNOzs7SyxNO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0k7Ozs7Rzs7STs7Ozs7STtLOzs7Ozs7Szs7Ozs7SyxNO0k7WTs7Ozs7Ozs7Ozs7Ozs7RztHO0ksTztJOztJOzs7STs7aUIsTTs7OztNLEcsaUM7Ozs7Ozs7O1U7Ozs7Ozs7Szs7Rzs7STs7Szs7O007TTtNOzs7UztTLE87OztRO0s7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxROzs7SyxPO0ssUTtJO0c7O0ksUztJO0s7ZTtLLEs7TTtNO007O0s7Szs7TSxNO0s7O087UztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7O08sTzs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7SSx1Qjs7SSxXO0c7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STt1QixNLGdEO0c7STs7O1E7UztVLE07VSxXOzs7OytCOzs7USx5QjtPO0k7O0k7SyxNO0s7SztJLFc7Rzs7STs7Ozs7O0k7OztJOztJO0c7OzsrQixzQztJO0s7TztLLE07SSxPOzs7O3dCOzs7Ozs7Szs7Ozs7SSxJLFU7OzsyQjs7O2M7O0k7OztJOzs7SyxXOztLO0ssTzs7SSxPO0c7Z0Msa0I7NkMsK0I7O0ksVTt3QixPLGlCO0ksVTtJO0k7Rzs7OztLLFU7O0ssTztJO0ksTzs7O0k7OztLO0s7SztLO0ksRztLOzs7Syw4Qjs7OztJO0k7O0ssSTs7Ozs7O007OztJO0k7Rzs7STtJLEc7SyxNO0ksSSxVOzs7OzZCLE07SyxZOzs7TTtNO08sSztPO007O0s7SyxNOztjLE07O0k7Rzs7STtJO0ssTTtLO0ssSztJO0k7RztnQyw2Qzs7STs7SyxVOztLO0ssVTtLOzs7O1UsSSxvQyxhOzs7O1k7WSxPOzs7WTs7YSxNO2E7WSxPOzs7O1c7Ozs7Ozs7aUI7Ozs7Ozs7OztjLE07Ozs7dUI7O1c7VyxPOztTO00sTzs7Ozs7O0k7Rzs7STtJLEksVzs7OztNLE07OztJLFcsTTs7STtHOztJOzs7SyxNO0ksTzs7OztJLE87Ozs7SSxPOzs7O0ksTzs7O0k7Ozs7O0ssUTtLO0k7Rzs7STs7SztLO00sTztLO0s7TSxNO007Ozs7TTtLOzs7O007OztLO0s7SztLO0k7SSw4QixPLCtCO0ksTztHOztJO0s7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztRLE87Ozs7OztNO0c7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJLHFCO0ksb0I7SSxzQjtJLGE7O0ksTztHO3NDLHFCOztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07OztHOzJCLFM7O0k7O0s7Ozs7O007TTs7O00sSSxhOzs7Ozs7O007OztVOzs7OztlLFcsTzs7ZSxPO2M7OztVO1M7TyxPO2dCOzs7Ozs7SSxXO3lCLHFCLDBCO0ksVztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7Rzs7OztLO007TyxVOzs7TztNOzs7Ozs7b0MsTTs7Tzs7O1E7OztPLGM7Ozs7Ozs7TTtPO1E7VSxpQjtROzs7OztTLEk7Ozs7VTs7OztTOzs7Tzs7Ozs7Ozs7OztJOzs7OztLO007TztTLGlCO087Ozs7Ozs7Ozs7O0s7OztNOzs7UztTLGM7UTthO0ksVzs7SztLO0k7SSxXO0ksTztHOztJO0k7Szs7OztVO1csTyxjLDRDOzs7TSxRO007bUM7O007Ozs7OztXO1ksTzttRCx5Qjs7O087UyxXOzs7Ozs7Ozs7O1c7VyxPLDhCO1U7Ozs7Ozs7O0c7O0k7STs7Ozs7VTtXLE8sc0M7OztLOzttQzs7Ozs7Ozs7VztZO2EsYTthLHlCO1ksTyxjLDRDOzs7TTs7Ozs7Ozs7OztXO1csTyw0QjtVOzs7Ozs7O0c7O0k7STtLOztzQyxvQjtNLFE7TTs7Ozs7VSxJLHVCLGM7OztrQzs7O1M7TSxPOzs7O0c7RztJOzs7Ozs7Ozs7OztJOzt1QixNLGdEO3dDLGlDO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7Ozs7Ozs7Ozs7Ozs7STs7O0s7TSxPOztJOzs7Ozs7Ozs7Ozs7O0c7aUMsbUM7O0ksVztHOztJO2tEO0k7Rzs7STtLO0s7SyxPOzs7OztJO0s7O3NDLG9CO00sUTtNOztNOzs7VSxJOzs7Ozs7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTO08sTztPLE87TztNLE87Ozs7Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO3dCLGlEOztJO0ssbUIsTztLLE87OztJLE87O0c7aUMsdUI7Z0MsaUM7cUIsTyx5Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7OztLLDhCOztLO0k7STtLLFM7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjtJOztJLE87Rzs7STtHOztJLE87Rzs7SSxPOztHOztJLE87O0c7O0ksTztHOztJLE87Rzs7STtJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOzs7Rzs7STt1QixNOztJO0c7O0k7dUIsTTs7STtHOztJOztPLGtCLG1DOztPOzs7UTtRLFM7Tzs7Tzs7O1E7UTtPLE87O0c7O0k7SztLLE07SSxPO0c7O0k7O08sa0I7MEIsTTs7Tzs7Tyw4QjtPLE87ZSxNOztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHOztJO0ksTztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHO2tDLHFDO2tDLHFDOzRDLGdDO3NDLDZCOzs7O0ssTTtJLHFCLE87d0I7SSxJLFMseUM7OztLO0s7O0ksTTs7O0ksWTs7OztPLEksVzs7OytCOzs7TztPOzs7TyxJOzs7O1MsTTs7O08sSSxZOzs7O1MsTTs7O08sVzs7O1E7O08sTTs7O08sSTs7OztTLE07OztPOzs7TyxJOzs7O1MsTTs7O087OztRO1M7Z0MsTyxnQztVLFM7Ozs7O1UsTTs7O1E7O08sTTs7Rzs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTztRLE87O087O087OztRO1EsUztRLFE7TztlLE07O0c7O0k7Szs7UTsyQixNOztROztROztRLEk7OztTLHdCO1UsVztVLE87Ozs7O1MsVztTLE87OztTLE07O1E7O1E7O1E7O1E7Z0I7OztJLE87Rzs7SSxZLE87O0k7O0csdUI7MEMsa0M7d0MsMkI7O0ksVztJOzs7TTs7TyxPO2tCOzs7Ozs7Ozs7O0c7O0k7OztPLFUsMkI7Tzs7Tyw4Qjs7Ozs7Tzs7O1E7UTs7UTtPOzs7O0k7OztNLHNCOzs7TztRLE87USxPO087UTtTLE87b0I7OztnQjs7Ozs7OztLOzs7Ozs7TTs7cUM7Ozs7O007Ozs7Rzs7SSxJLCtDOzs7OztNLE07O0s7O0c7O0k7O087O08sOEI7O2UsTTs7Rzs7STs7Tzs7Ozs7USxHO1MsVztTLEs7Ozs7Ozs7O2UsTTs7Rzs7STtJO0s7OztNLEk7Ozs7Ozs7Ozs7O0s7O0c7O0k7O08sa0I7TyxPOztPOzs7UTtRLFM7TyxPOztPLGdDO087O0c7O0k7Rzs7SSxJLDZCOzs7O0ssdUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7O2dCOztHOztJLFc7STtLLG1CO0s7O007Ozs7OztLO007TyxPO08sTzs7Ozs7O007TyxLO08sTztNOzs7SztLO0k7SSxJLGdCO0k7Szs7Ozs7Ozs7Ozs7O3NCO0c7Rzs7SSxpQjs7STs7SyxHO00sVztNLEsseUQ7OztJO0s7Szs7Ozs0Qjs7O0c7O0k7cUIsTyxpQjtJO0ksVzs7STtHOzs7SztLLE87STtJO0s7SyxvQyx1Qjs7O08sWTs7Ozs7TyxZO087NEI7Tyx3QjsyQixpRDtPOzs7UTtPO08sTztNOzs7Szs7Szs7O2U7ZTtnQjtpQixVO2lCO21COzRCOztnQjs7ZSxtQjs7ZTtjOztHOztJOzs7O0c7O0k7MkIsTyxxQztJLE87Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7OztXO1csK0Q7VztVO08sTzs7Tzs7O1E7K0IsZ0I7UTt5QjtRLE07TyxPO2U7O0c7OzBCLGdCOzs7Tzs7UTt5Qzs7O087OztRO1E7O1c7O1EsTTtlOzs7O3dCO0ksTztHOztJOzs7TztRO1E7Ozs7K0I7Ozs7O087UTtROzs7OytCOzs7O2tCOztPLE87O0c7O0ksSSxJLE87Ozs7OztJLE87Rzs7STs7SyxPO0ksTztHOzJELE87Rzt1RCxPO0c7O0ksZSxPOzs7SyxNOztJLE87Rzs7STs7Ozs7OztLOzs7Tzs7Tzs7UTs7Ozs7Ozs7OztRLEs7Ozs7OztTO1Usb0I7VTtVOzs7YTthO2EsTztZOzs7YTthOztnQjs7O2lCLFM7aUI7Ozs7NkI7Ozs7O2dCO2lCLE87aUIsWTtpQjtpQjtpQixPO3VCOzs7Z0I7OztpQixhO2lCLE87Z0I7Ozs7O2lCOztrQixPO3dDO2tCLE87OztxQjs7b0I7aUI7Ozs7aUI7O2tCO2tCLE87d0M7a0IsUTs7O3FCO3NCLFk7c0I7OztvQjtpQjs7O2dCO2lCLE87aUIsWTtpQjtpQjtpQixPO3VCO2dCOztpQjs7O2lCOzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7aUIsUTtpQjtpQixRO2lCO2lCLE87aUIsWTtpQjtpQjtrQzs7O2dCOzs7O2lCLFc7aUIsTztnQjs7O2tCLE07Ozs7MkI7Ozs7Z0I7aUIsUztpQixPO2lCLFE7aUI7Ozs7Ozs7Ozs7aUI7aUI7aUIsTzt1Qjs7Ozs7Z0I7OztpQixXO2lCO21CO2lCLE87aUIsVTtpQjtpQjtpQixPO3VCOzs7O2dCOzs7aUIsUztpQjtpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7O2dCOzs7aUIsUztpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7O1k7UztTOzs7OztXOzs7WSxpQjtZOzs7OztXOzs7Ozs7WSxtQjtZLGtCO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7Ozs7WSxtQjtZLGtCO1k7Ozs7Ozs7Vzs7Ozs7WSxtQjtZO2M7WTs7Ozs7OztXOzs7Ozs7WSxtQjtZLGtCO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7Ozs7Tzs7O1EsYztRLE87USxPO1EsTztRLE87O1E7OztTLE87NkI7OztPO21DOzs7O0k7O0ssVztLO007TyxPO2M7Ozs7OztJO0ssVztLLEcsd0M7SyxJLGUsdUIsc0I7SztLLFc7Szs7OztxQjs4Qjs7Ozs7O1U7O1UsVztVLE87UztNLE87Ozs7Ozs7Rzs7STs7SyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxnRDs7OztpQiwwQjtPOzs7Ozs7Ozs7O0c7O0k7SSxpQjs7SztJO0k7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO3lELGU7Szs7SSxJLHFCOzs7Ozs7O0s7O00sUzs7O1M7Ozs7eUI7OztTO1U7VyxVO1c7VztXO1c7VztpQjtXO1k7WTs7ZTs7Ozs7Ozs7Ozs7O1c7VyxXO1c7Ozs7MkI7b0M7Ozs7O2dCOzs7Ozs7Ozs7Ozs7Ozs7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7Uzs7Ozs7Ozs7OztVO1M7Ozs7Ozs7Ozs7Ozs7UTtNLFE7NEI7O21COztLOztNO00sZTs7O1M7Ozs7eUI7OztTO1U7VyxVO1c7VztXO1c7aUI7VztZO1ksc0I7VztXO1ksTztZLHVCOzs7OztnQjs7aUI7OzJCOztnQjtnQixPO2U7WTs7OztTO1UsWTs7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCO00sZTs7O0k7Szs7O0s7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SztLLE87SztJOzBDOzs7STtLOztNLGU7TTtNO1k7TTtPO08sc0I7TTs7OztVOztXOztxQjs7O1U7VSxPO1M7TTs7O0k7OztLOzs7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7OztJOztLO0k7STtJO0ssUztLOzs7SztJO0s7TSxPOzs7O0k7Ozs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Ozs7STtJO0s7TSxPOzs7O0k7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJO0s7OztLOztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0M7Ozs7SyxJLHNCOzs7Ozs7a0I7Ozs7OztLO007TSxXO00sTTtNLE87TSxPO00sTztLO0s7TSxZO00sUTtNLE87TTs7Ozs7Ozs7OztLO0s7O0c7Ozs7STs7O0s7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtLO0s7STtHOztJOzs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJO0c7O0k7SztLLFE7Szs7O0k7Rzs7STtJLDRCO0c7O0ksWTtJO0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7Rzs7STtJO0c7O0ksb0IsTztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtCO0ksTztHOztJO0ssSztLO0s7MEM7STtHOztJO0ssSztLLGdDO0k7Rzs7STtLLEs7SztLLFE7SztJO0c7O0ksUztJOzs7Rzs7STtLLEs7SyxRO0ssNkI7STtHOztJO0ssSztLO0ssb0M7STtHOztJO0ssSztLLCtCO0k7Rzs7STtHOzs7OztLLFc7Ozs7Ozs7VSxnQjtVOztXLFE7VSxXO1M7Ozs7Szs7UTs7O1MsbUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7OztTLHFCOzs7Ozs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7OztTLHFCOzs7Ozs7Ozs7Ozs7OztJO0ssTztLOzs7STtHOztJO0s7OztJO0c7K0U7Rzs7OztLOzs7O0k7Szs7OztJO0s7O0c7RztJOztHO0c7STs7RztHO0k7OztJO0k7Rzs7STtLLEs7OztLOzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJO0ssSzs7O0s7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLEk7Ozs0Qjs7O3FCOzt1Qjs7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STs7Szs7Ozs0QixPLGlCLHFCOzs7SztJO0k7Szs7Syw0Qix5QjtLOztLLDJCLHdCO0s7O0sseUIsMEI7Szs7Syx3Qix5QjtLOztLLDJCLHlCO0s7O0ssMEIsMEI7Szs7SywwQix5QjtLOztLLDBCLDBCO0k7Ozs7Ozs7Ozs7Ozs7O0c7OztLO00sTTswQjs7SyxHLDhCO0ssTTtJO0ksSTs7OzRCOzs7O0s7OztNLEc7O08sVzs7O0ssTTtJOztLOzs7TSxHOztPLFc7OztLLE07STtJOzs7O0s7SztLO0s7SztLO0s7STs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjs7SyxNO0k7Rzs7STtJO0k7STtLOztlO2U7SyxjO0ssaUI7SyxpQjs7OztLOzs7O1U7O3VDOztTO007O0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7VTs7aUI7Ozs7Ozs7OztXOzs7Ozs7UTtLOztJO0c7O0k7SztPOzs7Ozs7SyxLO0s7O0ssTTs7STtHOztJOzs7Ozs7Ozs7Ozs7OztLOztJO0c7O0ksd0I7SztJO0ssTztLLE87SSxPOzs7Rzs7STtLLE87SyxPO0s7TyxXO0ksTztHOzs7STtJO0k7SyxPO0ssTztLO087O1M7OztJO0k7Rzs7STsyQixXO0c7OzsrQiw0QztJOztHO0csYztHOzs7O0c7STtJLFU7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSTs7OzRCOzs7STtHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLE87Rzs7SSxXO0ksVztJO0s7TSxPOzs7Ozs7OEI7O3lCLE8sMEI7SSxPO0c7O0ksa0I7SSxNO0c7O0ksVTs7STs7O0s7TTtROztXO00sTztNLE87SyxPO0k7SSxPO0c7O0ksVTs7STtJLFc7SSxPO0c7O0ksVTs7STtJLFc7SSxPO0c7O0ksVTtJLFc7SSxPO0c7O0ksVTtJLG9COzs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0ksVTs7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7STs7O00sWTs7O087OztRLEksVzs7Ozs7O1E7O087O087Ozs7O00sTTs7OztJO0c7O0ksVTtJLGM7STs7O0s7TSxXOzs7Ozs7O0s7OztHOztJO0c7O0k7OztTLEk7OztNO08sSSxXOzs7Ozs7Ozs7Ozs7O0k7SyxrQjs7Szs7OztLOztLOztJLEk7Ozs7TTs7O0k7STtHOztJO2dCOztLOztNO00sTztLO0s7STtJLE87Rzs7STs7Tzs7UTs7O087O087OztROzs7Tzs7TztROzs7O1E7VTs7Tzs7Rzs7STtLOzs7Szs7OztNOztLOzs7a0I7O0k7Rzs7STs7O0s7OztNOzs7TTs7Ozs7SztLO0k7STtLLGtCO0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCO2tCOzs7O1c7O1k7WSxPO1c7VztVO08sTzs7Ozs7Ozs7USxJLGE7Ozs7Ozs7Ozs7O2M7YTthO1k7UyxPOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJOzs7Tzs7OztROzs7OztRLEksWTs7Ozs7Ozs7Ozs7YzthO2E7WTtTLE87OztPOztPLE07O0c7O0k7O0ssTTs7STtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0k7Ozs7OztRO087OztPOztPO1E7OztPOztHOztJO0k7Rzs7STtJLGlCO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0ksSTs7Ozs7OztPOzs7OztJO0c7O0k7O0ksc0I7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7O1U7UztTO1E7SyxPOztJO0c7O0k7SSxJOzs7Ozs7O087Ozs7O0k7Rzs7STs7SSxzQjtHOztJO0ksSTs7OzRCOzs7Ozs7OztpQyw0QztTO1E7SyxPOztJO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7OztTOztTO2lCOztLOztJLG9CLGU7OztLO0s7O0k7Rzs7SSxJOzs7O0ssYTtLLEk7Ozs2Qjs7O0s7O0k7Rzs7SSxJLHlCOzs7NEI7OztJO0c7O0ksdUMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7STtLLFc7Szs7O2U7ZSxPO2M7Ozs7STs7Szs7O0s7eUI7SSxvQixPOztLLE8sNEI7STtJLE87Rzs7STtLOzs7TTswQjtLOztNLE87OztTLFk7O1MsTztRO0ssTzs7SSxZOzRCLE8seUI7O0k7Szs7NkIsc0Isc0I7TSxRO007Z0I7Szs7Ozs0Qix3QztNO1EsVzs7OztHOztJOztLOzs7ZTtlO2dCOzttQjs0QjtnQixvQixLO2dCLE87O2UsbUI7ZTs7Z0IsTztlLE87Yzs7OztJOztLOzs7Szt5Qjs7O0ssUztLLE87STtJLE87Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7Szs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsdUM7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7Ozs7SyxJLEs7SyxXO0k7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7STtJOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0ksYztJOzs7Ozs7Ozs7Ozs7O0c7RztJOzs7USxNO087STs7O1EsTTtPOzs7SyxXO0ssTztJO0k7OzhDLHFCO08sTzs7Ozs7K0IsNEI7TyxPO2U7O0c7OztLLFc7SyxPO0k7SSxPO0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7OEMsc0I7Ozs7Rzs7STtJLDZDLHlCOztHOztJO0ksdUMseUI7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7K0Msc0I7O0c7O0ksSTtJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7O087TztrQjtxQztPLE87Ozs7Ozs7OztPO087OztPO087OztPO087OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7OztPO08sTzs7Ozs7Ozs7Ozs7O0k7OztPO08sRztRLFc7UTs7O1E7UyxPO1MsTztROztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7TyxPOzs7Tzs7OztJLHVCO0k7O0s7SztPOztVO0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztpQyxxQjs7STtjO2M7O2tDLG1COztJLEksTSxxQixXO0k7Rzt5Qix1Qjs7STs7Ozs7K0I7Ozs7O0k7Rzs7SSxZO0k7aUI7O2UsTztLLG1CLEk7Vzs7O0c7O0k7Szs7d0I7Ozs7O1MsbUI7Ozs7Szs7SSxPO0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJO0c7MEIsTyx5Qzs7STtLLE07STtHOztJO0ssTTtJO0c7O0k7SyxNO0k7RzswQzs7STtLLE07STtHOztJLHNDO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Rzs7SSw4Qjs7O087O087O087O087O087O087O087O087O087O087O087O08sa0M7Tzs7O0c7a0MscUM7O0k7OzswQixPOzs2QixPOzs7USxPOzs0QixPOzs7OzsyQixvQixPLHNCO1EsTzs7O1EsTzs7NEIsTzs7NEIsTzs7NEIsTzs7O1E7USxPOztJO0c7O0k7Ozs7USxXOzt5QixXOzs7USxtQjs7Ozs7UyxtQjs7Ozs7Ozs7O1k7WSxtQjtXO1EsVzs7O1EsVzs7eUIsVzs7c0IsVzs7d0IsWTs7USx5QyxNO1EsWTs7STtHOztJOztJOzZCLGtDO0c7O0k7O3VCLGlDLGlCO0kscUI7Rzs7STs7Szs7O1MsRyxxQixNO1M7UTs7Ozs7dUI7OztJO0c7O0k7O3VCLGlDLGlCO0kscUI7Rzs7STtJOzs7OztrQyxPOzs7UztTLE87Ozs7Szs4QiwrQjs7Rzs7STtJO0s7O0k7STs7Rzs7d0IsbUIsVTtJLE87Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtxQixxQztJOztHOztJO0ksTztHOztJO0c7K0IsTyxxQzs7STs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1Esd0M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7Ozs7Ozs7Ozs7O08sTTs7O0k7Rzs7STs7Ozs7Ozs7ZTs7STtHOztJO0ssa0I7SyxtQjtJOzs7O0s7TTs7cUI7TyxNOztNOzs7O087O007Ozs7TyxNO00sSztNLEk7OztNLEk7TTtPO3FCO087Ozs7UTs7USxJOzs7Tzs7OztJLGlCO0k7RzttQixPLG9DOztJO0ksTztHOztJO0ksTztHOztJOztJO0s7aUI7Szs7OztNOzs7O0s7Ozs7O1csVTtXLE87VTs7OztNO007OztPLFU7O007TztTOzs7O0s7TTs7OztJOzs7Ozs7SyxNO0ssUTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0ksUztJO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0c7O0kscUI7STs7O2tCO0c7O0k7O3FCLE87OztPLE87Ozs7TyxPOzs7Ozs7Ozs7Rzs7STtHOzs7SSxZLE87O0ksTzs7O0k7OztPLE87OztPLE87OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7cUIsTzs7cUIsTzs7OztRLE87O08sTzs7O3VCLE87O3VCLE87O3VCLE87O3VCLE87O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7OztLO0k7SSxPO0c7O0k7STs7Rzs7STs7SztLO0ssTztJO0ksTztHOztJO0k7O0s7SztLLEksbUI7bUM7OzswQixPOzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTs7O1E7UTtTOzs7WTtZOzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7Ozs7Ozs7YSxPO1k7WSxPO1c7UTs7Ozs7UTtROzs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNO087Tzs7Vzs7WTthOzs7Z0I7Z0I7Z0I7OztnQjtnQjs7O2dCO2dCOztZO1k7OztNOzs7bUM7Ozs7USxPOzs7UTs7Ozs7USxPOzs7UTtROzs7UTtRO1E7OztrQjs7bUI7O29CLE87b0IsTzttQixPO2tCO2tCO21CLFE7bUIsTztrQjtrQjtpQjs7Ozs7UTtROzs7UTtROzs7UTtROzs7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtROzs7O0c7O0k7STs7SztLO0ssSSxtQjs7TTtNO087Tzs7Vzs7WTs7O2U7ZTtlOzs7ZTtlO2U7ZTs7O2U7ZTtlOzs7ZTtlOzs7O007OzttQzs7OztRLE87OztRLE87OztRO1E7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtROzs7UTtROzs7UTtROzs7Ozs7UTtRO1E7UTs7Uzs7UztTOztVOzs7Z0M7O2E7YTs7UztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7UTtROzs7UTtRO1E7UTs7O1E7UTs7Ozs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7OztXOzs7OztXOzs7OztXOzs7Ozs7USxPOzs7USxPOzs7UTs7Ozs7UTtROzs7UTtROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7O1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1EsTzs7O1E7UTtROzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7OztTOzs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7USxPOzs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7Ozs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7Ozs7UztTO1M7VSxPOztTOzs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7STtJOzs7SztLOzs7STtLLE87O0k7Rzs7STs7O0k7OztJOzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7O0k7OztJO0k7STtJO0k7STtJO0k7STtJLGdCOzttQiwyQjs7O0s7Szs7OztLO0s7OztJO0k7O0c7O0k7STtJLEk7STtJO0k7STtJOzs7Rzs7STtJO0k7STtJO0k7Rzs7STtJO0k7SSxJO0k7STtJLGdCOzs7SztLLE87OztJO2dCO0k7STtHOztJO0k7O0s7SztLLEksbUI7Ozs7UTtROzs7UTs7UTtRO1E7OztRO1E7UTs7Ozs7UTs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7Ozs7O1M7UztTOzs7Ozs7UTs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEksaUI7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Tzs7O087TztPOzs7TztPOzs7TztPOzt5Qjs7Rzs7STtJO0k7O0c7O0k7STtJOztHOztJLFk7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztrQyxtQixVO087Ozs7Z0I7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7STtJO0k7O0c7OztJO0k7Ozs7STtJO1k7O0k7Ozs7STtJOzs7STs7Szs7OztNLE87O0s7SztLOzs7STtJO0c7Z0MsMEM7bUMsMEM7OztJOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztPLE07O08sTTtlLE07O0c7MEMsa0M7aUMsMEM7Rzs7O3lCLG9COzZCLGlDOztJLE07Rzs7SSxNO0c7Rzs7SSxzQjtJOzs7SyxXO0ksVztHO0c7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYzs7STs7Ozs7Rzs7STs7Ozs7RztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7Ozs7Rzs7STs7OztHOztJO0ssUTs7O3FCOzs7O0c7O0k7O0c7O0k7O0c7O0k7O0k7RztxQywrQjs7STs7Z0M7OztlLE07O2tCO0c7Rzs7STs7SztNLE87TTs7eUM7Ozs7STtHOztJOztHOztJLEkscUMsSTtJO0k7RztHOztJOzs7O0s7STtHO3dCLE8sOEM7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RzsyQixrQztpQyxxQztHO0k7STtJO0k7STs7STtHOztJLE87Ozs7Ozs7Ozs7RztxQyw4Qjs7STsyQztJO0c7O0ksWTsyRTtJLE07Rzs7STtJO0ssWTs7TTs7Ozs7Tzs7Ozs7Ozs7UztTLE87UTtLLFc7O0c7OztLO0ssTztJO0ksTztHOztJOzs7O007TyxPO08sTztPLE87TSxXOzs7TTs7TyxPO08sTztPLE87TSxXOzs7Ozs7Ozs7Ozs7OztLLEc7TTtPOzs7YTtNLEk7O007Ozs7Tzs7OztHOztJO0k7SyxZOzs7Ozs7OztLOztHOztJLEksdUIsUTs7NEM7STtHOztJLEksdUIsUTtvRDtJO0c7O0ksYzs7OztROzs7UTtTLFk7Ozs7YSxPOzs7OztTLE07OztJLE87Rzs7SSxZOzs7O1E7OzJCLE87O0ksTztHOztJO0ksTztHO0csc0I7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPO1E7Ozs7YztPLEk7O08sSTs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7RztJO0k7STs7STtJO0ssVztLLFc7SyxJLE87Ozs7Ozs7O1U7c0I7Yzs7Ozs7OztVOztXLHNCO1UsTzs7Ozs7OztTOzs7O1M7O1U7VTs7YyxzQjs7O1M7UyxlO29CO1MsSSxPOzs7SyxjLHNCO0ssTzs7Rzs7STs7STs7OztJO0c7O0k7d0I7SSxTO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7OzsyQyx5QjtNOzs7Ozs7O1U7VSxXOzs7VyxPOzs7MkIseUI7VSxPO1M7TTs7O3dDO0s7SztLOzs7Ozs7SztLOztHOztJO0s7a0I7SztLO0s7Ozs7OztLO0s7O0c7Rzs7STtJO0k7Ozs7O1M7O1MsSSw0Qjs7Ozs7VSxNOzs7UTtLO0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztROzs7Uzs7Ozs7Ozs7Ozs7O007TSxPOzs7Ozs7STtHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTtXOztXLE87Ozs7O1U7Ozs7O1U7Ozs2QixtQiw0QjtVLE87O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7SyxJOztHOztJO0k7SztNLGE7TSxPO0ssVztnQiw2QjtLLFk7Ozs7O29CO1UsSSxXOzs7c0M7Ozs7Ozs7OztvQjtVO1UsRywrQjtVO1csTzs7Ozs7O0ssMEI7SyxPOztHOztJLFc7STtLO0ssVztLOzs7Ozs7SztLLE07O0c7O0ksVzs7USxtQztLOzs7TSwwQjtNLE87Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7OzttQyxvQjt1Qjs7VTs7Ozs7O2U7Z0IsTztnQixzQjtlO2M7MkI7VTs7WSxNO1csVztXO1c7Vzs7Ozs7O1c7VywwQjtXLE87Ozs7Ozs7O3FCO1c7Ozs7Ozs7O1c7c0I7VTs7O1Msb0IsVTs7OztxQjtXLGU7Vzs7OztTO1MsMEI7UyxPOzs7b0I7VTtVLEcsK0I7VTs7Ozs7SztLLDBCO0ssTzs7Rzs7SSxtQjtlO0ksVztJLEksd0I7Ozs7SztLOztHOztJLEksOEI7Ozs7O0s7O0c7O0ksdUI7Ozs7TTtPLE87TyxjOzs7Ozs7OztLLEk7Ozs7SSxpQjtJLFc7STtJO0s7O0ksWTs7Ozt3Qjs7O1E7UTs7O3VCOzs7UztVLE07Ozs7Ozs7OztTO1U7aUMsb0I7O3FCOztROztTLHNCO1EsRyw2Qzs7Ozs7YSxPOzt1Qjs7OztZO1ksTztXO1EscUI7USxJLFc7OztvQzs7O1E7Ozs7Z0MsbUIsd0I7USxPOztJLG9CO0ksTztHOztJO0ksdUI7Rzs7STtJLFc7STtHOzs7Ozs7O1E7Ozs7O1E7UTs7Ozs7WTtZLE87VztROzs7OztZO1ksTztXO1EsTzs7O1E7Ozs7O0k7Rzs7STtHOytCLDBCOztJO0ssUTtLO0s7O0ssWTs7OztxQjtvQjs7Ozs7Ozs7Szs7O3FCO0s7SztLO0ssb0I7SyxPO0k7O0ssSSxNOztNO2lCO007TSxZOztPOztRLE87USxLOzs7O3FCOzs7Ozs7SztJO0k7STtPO0ssYyxzQjtLOztJOztLOzs7TSxPOztJO0ksTztHOztJOzRCO0c7O0k7SyxZO2dCOzs7Ozs7O0s7SztLO007TSxzQjtLLE87O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7a0I7Tzs7USxzQjtlOzs7O007Ozs7O00sZTtNO007O08sc0I7TSxPOztJOztLLFc7SztJO0k7STtLO00sVztNOzs7Ozs7TTtHOztJO0ssVztLLFc7SztRO00sTTtLO0ssTztJO0ksSSxTLEk7Ozs7OztJO0k7RztHOztJLHNCO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Uzs7VSxPO1UsUTs7O1U7Ozs7WTs7Ozs7VTtXO1csTzs7Ozs7O1k7Ozs7Ozs7Ozs7OztZLE07Ozs7VSxjOzs7OztZLEs7YTtjLFU7Ozs7OztnQjs7Ozs7Ozs7Ozs7O2E7O2M7Z0I7Yzs7aUIsa0IsUTtpRTtpQjs7YyxTO2E7ZSxrQztjLFc7YztnQjtxQjtlO2dCLE87d0I7Ozs7Ozs7Ozs7O1U7O3NCOzs7OztrQjs7STtJOzs7STs7Ozt5QixzQztJLE87Rzs7STs7STs7STtHOzs7c0IsNEI7SyxPO0k7SSxPO0c7Rzs7STs7Rzs7STtLO00sTzs7Ozs7Ozs7O0s7STs7O087aUI7SztJLE87Rzs7STs7Ozs7Ozs7O0s7TTs7O0ksVztJOzs7Ozs7Ozs7Ozs7OztZO0c7O0ksWTs7OztNOztPLE87TyxPO00sTzs7OztHOzs7Szs7Ozs7O1U7VztXOztXO1csUTs7OztVO1c7VztVLEs7VyxNO1U7VTtTOzs7Ozs7d0I7SztNLFE7TTtNOzs7SyxvQjtLLGM7SztJO0ksTztHOzs7c0IscUM7SztNLFU7TTtLO0k7SSxPO0c7OztLO0ssb0I7SztNLFU7OztLLG9CO0s7TSxTO007SztJO0ksTztHOztJOzs7Ozs7O1M7Ozs7VSxPO1M7UTtLLFc7Ozs7Szs7OztNLE87TSxPO0s7STtJLFc7Ozs7Szs7Ozs7Ozs7Ozs7OztLLG9CO0s7TSxPOzs7OztNO2dDOzs7OztLLG9CO0s7YTs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1Msc0I7UyxRO1M7UTs7UTs7Uzs7O1k7WTtXO1MsTzs7OztZO1k7VztTLE87UztROztROzs7O1M7UTs7OztLO0ssb0I7SztNLFc7TTtLO0k7SSxPO0c7O0ksYzthLE87O0k7RztHOzs7SSxjOztTO0ssZ0I7SztNO08sTztPLFE7OztPLFU7OztPO1EsUTs7O1csVztXLE87VTtlOzs7TSxTLE07TTs7Ozs7TTtPLGM7TyxPOzs7TztROzs7VyxNOzs7Ozs7OztzQjs7Ozs7Ozs7VTtXOzs7OztPO1E7O1c7Ozs7O1k7WTs0Qjs7O1c7O1ksTztZLE87Vzs7O29COzs7VztXO1k7YSxPO2Esa0I7OztXO1k7WSxROzs7O1c7OzsrQixhLHlCO1ksTztZLFU7OztlLFc7YztZLE87WSxZO1k7Ozs7O08sSSw2Qjs7TTtNOzs7STtPLG9DO0ksSSxZLDRCOzs7OztRO1EsTzs7O0k7Ozs7SyxZOzs7TTs7SyxNO0k7SSxXO3dCLFcscUM7SSxZOztJO0s7O0s7Ozs7Ozs7STs7STtHOztJOztLO0k7SSxPO0c7OztLLFk7Ozs7Ozs7Ozs7OztNLEk7O0s7SztJO0ksTztHO0c7Ozs7USxNO087O0ksVztPO0ssTTs7O0k7OztLO00saUIsUTs7Tzs7O1E7Tzs7OzBCLE8sc0M7OztNLE07O3VDLE87OztJO0s7Ozs7STtLO0ssVztLOztLOzs7Ozs7SztLLE07O0c7O0k7SztLOzs7OztNLE07OztHOztHLCtCOztHOztJO0s7OztJLFk7O0s7Ozs7TSxRO00sUTtNO00sVTs7TSxJLFU7Ozs7TyxhO08sRztRLE07TyxPOzs7TTtPO1E7Ozs7Ozs7O007TyxPO08sVTtNO007TTs7OztNLEk7Ozs7O0ssSTs7Ozs7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7OztJO0k7SyxZOzs7OztTLEksVzs7O2lDOzs7MkI7UyxJOzs7cUM7OztTOzs7Uzs7Ozs7Uzs7O1MsTTs7Szs7Rzs7STtHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkseUM7Ozs7SztLLE07O0c7O0ksSSwwRDs7OztnQzs7O0c7O0k7SyxJLEk7Ozs7TTtNLFM7TTtPO1E7Ozs7Ozs7O007Ozs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7O2E7O1UsTztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SztNLFk7TTs7Uzs7SyxPOztJO0c7Rzt3Qix1Qjs7STs7Ozs7OztJO0k7OzthO087NEIsMEI7Ozs7O0s7SyxNOztHOztJLEksb0I7Ozt3Qjs7O0c7O0ksSSxvQixjOzs7d0I7OztHOztJO0ssTztLLFc7O0ssWTs7Ozs7UyxHO1UsTTtTLHNEO1Msb0I7UztVOzs7Ozs7Ozs7VTs7Ozs7O1UsSSxJLE87Ozs7Ozs7OztjLDZCO2M7YTtVLE87Ozs7UyxhOztLOztNO08sZ0I7O087d0I7TSxPOzs7Ozs7STtHOzs7OztNLE07Szs7Ozs7TTs7UztVOzs7YztjLE87YTtlO1c7VTs7OztpQzs7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0k7STs7SyxXO0ssVztLLEc7TTtNO08sTzs7TTs7SztNO08sVTtPLFc7O08sdUIsTztvQjs7Ozs7TTs7Ozs7bUI7TTtPLE87O007O0k7O0ssWTs7Ozs7d0I7O1M7VTtXLEs7Vzs7O2M7OztvQjt3Qjs7YTtXLE87VTs7Ozs7OztVLDBCO1UsTzs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssb0I7SyxPO0k7O0s7OztLOzt5QixrQztJO0s7SywyQixpQztJLE87Rzs7SSxJLDRCLGM7Ozs0Qjs7O0c7O0ksSSw0QixjOzs7NEI7OztHOztJLEksMEI7Ozs7O0s7O0c7O0k7SSxPO0c7RyxrQjs7STs7O0s7Ozs7bUI7OztVO1UsTztTO1MsTzttQjs7O00sSTtlO0k7O0s7SztNLEcsMkM7bUI7TSxZOzs7Ozt5Qjs7VTtXO1ksSztZOzs7ZSxlOztjO1ksTztXOzs7OztZLE87Ozs7VSxXO1U7Ozs7OzhCLE8sb0M7VSxHLHlDOzs7O00sTzs7STtJO0c7O0k7O0s7SyxPO0k7SSxvQjtxQixPLDJDO0ksRztLO3FCLE8sMkM7SSxHO0s7cUIsc0I7SSxVO3FCLHNCO0ksVTs7eUIsTyxzQjtJO0s7SywyQix3QztJLE87Rzs7STtLO0s7Ozs7OztLOztHO0c7O0ksb0I7SSxhO0ksb0I7SSxhOztLO00sWTs7O1U7UTtRO1E7OztNOztLO00sTztNO00sTztNLE87TSxPO00sVztLO0k7SSxPO0c7O0ksSTtJO0c7O0k7STtzQzs7TTs7O08sTztNLFM7Ozs7TSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLG9CO0ksVztHOztJLFc7Rzs7O0s7TSxPO00sZTtvQjtLLFc7SyxHO00sTTtLLE87STtJLEksZSwyQixjOzs7O0s7Szs7RztHOztJOztLLE07O0k7Rzs7STs7SztnQzs7O0s7TTs7TTtNLFE7OztNO00sSTs7SztJO0k7O0ssRywwQztrQjtLLFk7Ozs7Uzs7VSxRO1U7OztTOzs7OztTO1U7VSxPOzs7Ozs7Z0I7VSxLO1c7WSxJO1ksVTs7WTs7YSxVO2E7OzthO2EsTzthLE87YSxNO2EsTztZOzthOzs7VyxNOztVLFM7O1MsTzs7SyxPO0k7STtHOztJO0s7TSxPOzs7Ozs7Ozs7Ozs7NEI7OztHOztJLEksNkI7O0c7O0k7SyxJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7a0I7bUI7b0IsUztvQixTO29CLE87OztvQjs7O3FCO3NCLE87c0IsYztxQjs7O3NCLFc7c0I7Ozs7Ozs7OzttQjtvQjtxQjtzQixPO3NCLE87c0IsTzs7Ozs7Ozs7NkMsUzs0Qjs7b0I7cUIsTzs7O3dCO3dCO3VCOzRCOzs7b0I7cUIsTTs7Ozs7Ozs7Ozs7Ozs7MEIsSzswQjs7Ozs7Ozs7Ozs7O3lCOzt5Qjs7Ozs7Ozs7Ozs7Ozs7OytCOzs7Ozs2QixNOzs7Ozs7Ozs7K0I7Ozs7Ozs7OytCOzs7OzZCLE07OzRCLFc7NEIsSyxrQjs2QixNOzs7Ozs7MEIsTTs7Ozs7Ozt3Qjs7Ozs7Ozs7OztzQjs7OztxQixNOzs7O21COzs7OzBDOzs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7O21CLE87bUI7c0M7Ozs7bUI7O3NCLGtCLFE7c0U7c0I7O21CLE87bUI7NEI7a0I7OzttQjtvQixPO29COzZCO2tCLFMsTTs7OztzQjs7O3VCLFE7dUIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs0Qjs7NkI7OEM7NEIsTzs7Ozs7Ozs7Ozs7Ozs0Qjs7NkI7OEM7NEIsTzs7Ozs7Ozs7Ozs7Ozs7O3VCLE07O3NCO3FCO2tCLE87Ozs7Ozs7aUI7a0I7a0I7Ozs7O21CLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7bUI7Ozs7Ozs7Ozs7eUI7O21COzs7OztvQixNOzs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7OztTOzs7OztRLHFDOztPOzs7O1E7Ozs7Ozs7OztNO087USxPO1E7UTtPLFMsTTtPOzs7OzhCOzs7O0ssTTs7OztJLFc7TztLLE07SSwwQjtJLE87Rzs7STtLO0s7O0ssTTtJO0s7OztLOzs7Szs7OztJO0s7a0I7STtJLGtCO0k7SSxXO0k7SztNO21COzs7Ozs7SyxXO0s7TTtPO29COzs7O2EsTTs7Szs7Ozs7TSxPO00sTzs7O007Ozs7Ozs7TSxNOztLO0k7SSxPO0c7OztLO0s7Ozs7UTtRLFc7O1Usa0I7Ozs7O1EsTTs7O3FCO00sTTs7STtJO0c7O0ksVztHOztJLEksb0I7OzsrQjs7O0c7O0k7STtLLFc7SyxXO0ssWTs7SztLLE87STtJO0k7O0c7O0ksTztHOztJO0s7Ozs7Ozs7O0k7O0s7O3NCOztLLEk7Ozs7Ozs7SSxXO0k7SztLO0ssTztLLGtCO0s7YTtJLE87RztHLG1COztJLFc7VztHOztJLFc7SSxTO0k7SztLO0ksTztHO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7STtLOzswQjs7O1E7OztRO007Rzs7STtJO0ssTTtLLFE7O0s7SztrQjs7OztPLEc7USxXO1E7OztNLHNCO00sSSxVOzs7Ozs7Ozs7Ozs7O1M7VSxTOzs7Ozs7Vzs7Ozs7Ozs7OzZCLE07Ozs7Uzs7Ozs7TSxNOztJO0ksSSw4Qjs7OzRCLE07OztHOztJO0s7Szt3QjtJLFc7d0I7SSx1Qjs7O0s7TztVOztLLE07O0k7RztHOztJLFc7STs7OztNO00sTzs7OztJO0c7O0ksSztLLE07STtJLEk7OztrRDs7O0k7SyxrQjtLLGE7Ozs7OztLOztJO0k7Rzs7STs7SyxNOztJLE87Rzs7STtJLEk7Ozs7TTtNO007TTs7Ozs7O0ksTztHOztJLHFCO0k7STs7SyxJLFEsMEIsVTs7Ozs7Ozs7O1c7O3dEO1c7Vzs7Ozs7Ozs7OztnQixrQzs7Ozs7OztpQjttQjs7Ozs7a0IsVztrQjtrQixvQjtrQjs7O2lCO21COztrQjttQjs7b0I7O29COzs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxXO2M7YyxvQjtjOzs7Ozs7OztRO1E7Ozs7TTs7SztLOzs7Ozs7SztLOztHOztJO0k7STtLO0s7SyxPO0ssTztLLEs7SyxPO0ssTztLLFE7STtJO0k7STtJLHlCOzs7Ozs7O00sWTs7Ozs7O00sYzs7Ozs7Ozs7Ozs7STtLLEkscUM7Ozs7O00sMEI7O0k7Rzs7STtLLE07SztLLEs7SyxXOzs7O0s7TTs7Uzs7Ozs7WTs7Ozs7Ozs7O1k7WSxPOzs7Ozs7O007OztLO0s7O1MsZ0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7O2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O3FDLHFDO2tCOzs7Ozs7O2lCO2tCO21COzttQjtvQztrQixLO21CO29CO3FCLE87cUIsTztxQixPOzs7Ozs7Ozs0QyxTOzJCOzttQjtvQixPOzs7dUI7dUIsTTs7d0IsVzt3QixJLDZCOzs7Ozt5Qjt5Qjt5Qjs7dUI7dUI7O3NCO21COzs7O2lCOzs7Z0I7Ozs7Ozs7O2M7Ozs7ZSxXO3lCOzs7O2U7ZTs7OzthO2M7YztjOzs7Ozs7Ozs7Ozs7OztnQjtnQixjOzs7Ozs7O21CLHFCLFU7Ozs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2lCLFc7aUIsSTs7Ozs7a0I7a0I7a0I7a0I7bUI7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7O2lCOzs7a0IsNEI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQjtpQjtrQixPO2tCLE87a0I7eUM7aUI7Ozs7OztvQztpQjtrQixPOztvQyxtQixzQjtpQjs7Ozs7Ozs7OztVOzs7O1c7VztXOzs7Ozs7Ozs7UTtRO1E7UTtROzs7OztRLEssOEI7UztzQjtTLFM7OztRLEc7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSwwQjtJLE87Rzs7STtLOzs7Szs7O0s7Ozs7SyxLO0ssSzs7O0ssUTtJO0ssWTs7TSxPO0s7STtJO0ssUTtLLFU7Ozs7Ozs7Ozs7O1U7VyxPO3FCOzs7OztRLFM7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7STtLO3FDO0ssTTtLLE07Szs7STtLLFM7SyxnQjs7OztTOzs7Ozs7UztTOztXLFc7VztXLG9COztVO1U7Ozs7Ozs7VTswQjs7UTtLO0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksdUI7STtLOzs7Ozs7O0s7TSxPO00sSzs7O1Msa0IsTztTLE87UTtLOzs7O1M7UztVLFc7VSxNOytCOzs7O2lDOzs7UTtLOztJO0ssUztLLFM7STs7TTtPLE87Yzs7Ozs7O0s7TSxPO00sTztNLE87YTtJO0ssUTtLO0k7O007OztPLFE7OztvQjs2Qjs7SztLLE87STtJOztNO21CO0s7SyxPO0k7STtLLEksa0I7O00sSSxrQjs7Ozs7Vzs7O3lCO2tDOztVO2U7Ozs7Ozs7OztJLFM7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7TTtNOztvQyxtQjs7Ozs7Ozs7Szs7bUM7TSxROzs7OztPLGU7UTs7OztROytCO1MsYTtROzs7Ozs7O3FCO00sUzs7SyxTOztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7Szs7OztTO1M7VTs7VTs7Ozs7OztVOztRO0s7SyxHO00sUztNLEc7TztRLE87USxPO087OztLOzs7O0s7SztLLE07Ozs7STtLOzs7O1MsWSxPO1Msb0I7Uzs7TTtNOzs7Ozs7bUI7SztNLFE7TSxVOztzQzs7Tzs7Z0MsTyw4Qjs7Ozs7Ozs7OzBDOzs7O1M7OzttQixRO21CO21CLFc7bUI7bUIsb0I7bUI7b0I7cUIsc0I7cUIsTztvQjs7OztvQjtvQixNOztrQjs7Ozs7OzBCOzs7Uzs7a0MsTyw4Qjs7Ozs7O1E7O2lDLE8sOEI7Ozs7O1EsRywrQjtRLEk7UTtTLFc7WTtVLFE7VTtVO1UsZ0M7VSxPOzs7UTs7Ozs7Ozs7Ozt3QjtpQzs7Ozs7UyxjOzs7VSxXOzs7O2U7Z0Isb0I7Z0IsTyxzQzs7O2tCOzs7Ozs7OztRO1E7Uzs7O2EsVzthLFc7WTtZLE87VztTLFE7UyxROztTLHNCO1MsVTs7OztTLHNCO1MsVTs7Ozs7Uzs7O1c7O1ksTztZLHNCO1c7Ozs7OztTOzs7Ozs7YSxXO2E7YSwyQjtZO1ksTztXO1E7UTtRO1MsTztTLE87UTtRLE87Ozs7Uzs7a0MsTyw4Qjs7Ozs7O1M7OzttQixRO21CO21CLFc7bUI7bUIsb0I7bUI7b0I7eUMsMEI7cUIsTztvQjs7OztvQjtvQixNOztrQjs7Ozs7Szs7OztJLFc7SSxJLCtCOzs7OztLO0ssTTs7O0c7O0k7OztLLG9CO0s7Ozs7dUIsMEI7O0s7Szs7Ozs7SztLLE07O0c7O0ksRywrQjtJLEksUSwwQixVOztLO007SztLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzs7STtJO0c7aUMsMEM7O0k7SztLO0k7STtHO0c7Ozs7O0s7TTtNO00sSTtLO0k7SSxJOzs7OzZDO0ssTTs7Ozs7OztJLFk7Ozs7UTtTLHdCOzs7O1E7UTs7OzthO1Msa0M7O1MsTTs7O1E7O0ksTTtHO0c7Ozs7STtJOzs7O1M7VTtVO1UsSztTO1E7SyxJOzs7O007O08sUTs7TSxNOzs7Ozs7OztLLFk7Ozs7UztVLFU7VTs7O1M7Uzs7O1MsRztVO1U7Ozs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7Rzs7OztJLEksNkIsUTs7SyxHO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPLEc7O1E7O087USxVO1E7Ozs7USxRO087ZSxNOztHOztJLEksb0I7STtHOztJO0s7OztJOzs7RztHOzs7Ozs7O1MsWTs7OztNLEk7Ozs7USxNOzs7O00sSTs7Ozs7TyxNOzs7Ozs7OztLOztNO2M7O1U7OztVLE07Ozs7Ozs7Ozs7SztLLEk7Ozs7O00sTTs7OztJO2U7Ozs7Rzs7OztJOzs7SyxJLFU7Ozs7Ozs7Szs7OztNO0s7Ozs7TyxNOzs7TSxJOzs7OztPLE07Ozs7OztJLGE7OztHO0c7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7OztLO0s7O00sUztPLE07Ozs7O0ssSTs7Ozs7TSxzQjtNLE07OztLO0k7STs7O0s7SyxJOzs7OztNLHNCO00sTTs7O0s7STtJLE87Rzs7STtLO0s7OztLOztLOzs7Ozs7O0ssRztNO0ssSSxVOzs7O2E7O1M7VSxVO1U7Ozs7O1M7VSxVO1U7Ozs7Ozs7TTs7Szs7OztNLFE7O007TyxVO087Ozs7O0s7STtJO0ssVTs7Ozs7O0k7Rzs7STtLOzs7SztZLDhCO0k7SSxPO0c7O0k7SztLOztJO0ssSSw2QixRO21DOzs7UTtTLFE7UyxPO1E7UTs7O1EsRyxtQzs7OztRLE07OztHOztJOytCLGtCLDRCO0k7O0s7SztJO0ksZ0I7O0s7SztJO0k7OztHOzs7SyxTO3FCO1E7TSxNO0ssVztLLGM7STtJLEksVzs7OztLO0s7O0k7STtHOztJLFk7STs7O0c7O0ksRywrQjtJO0ssSSxRLDBCLFU7Ozs7OztVO1csbUI7VyxvQjtXO3NCOzs7Ozs7OztXLEs7Ozs7OztNLEksNkI7TSxHOzs7TyxlOztRO1E7UyxVO1MsVTs7Ozs7Ozs7OzthO2MsbUI7YyxvQjt5Qjs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7OztlLFU7Ozs7ZSxVOzs7OztjLEc7OztlO2dCLE87Z0I7Z0IsMEI7Z0I7Ozs7O2dCO2lCOzs7Ozs4Qjs7OzBCOzs7aUI7ZTtnQixNO2dCLFU7Ozs7Ozs7O2tCOzs7O2lCLEc7O2tCO21COztzQjttQixNO2tCLG1CO2tCLG9CO2tCOzs7Ozs7OztrQjs7O2lCOzs7Z0I7O2U7Z0I7OztvQjtrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7c0I7Ozs7Ozs7eUIsTzs7Ozs7O3lCOzBCOzJCOzJCOzs7K0I7OEI7NEIsTzsyQjs7Ozs7OzsyQjs7Ozt1Qjs7O3NCO3VCLGU7OztpQzt3QixXO3dCO3dCLFc7MkI7eUI7MEI7OzZCOztpQzs7Ozs7OzZCOzRCO2lDOzs7Ozs7Ozs7dUI7Ozs7Ozs7dUI7OztrQyxPOztvQjttQjtpQixPOzs7OztnQjtnQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQixPO2dCOzs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7OztLOzs7O0ksVztPLDBDO0k7Szs7SSxPO0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3Qjs7Szs7Ozs7O00sUTtNLFU7Ozs7O3lCOzs7O1ksTTs7Ozs7OztNLE07O0ssSSx1RDs7Ozs7TTtzQjs7STtJLE87Rzs7STtJO0c7O0k7O0ksSSxtQzs7STs7SztNOzs4QjtNOzs7Ozs7O007TSxNOzs7STtJO0s7SywyQix1QztJLE87Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTLDBCO1M7UyxlO29CO1MsSSxPOzs7SywwQjtLLE87O0c7O0k7STtJOztHOztJOztLO0ssTzs7OztpQjtlO0k7SSxPO0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0k7O0s7OztNLFM7TSxTOzBCOzhCO0s7STtJLE87Ozs7O2M7Rzs7SSxHLCtCO0k7SyxJLFEsMEIsVTs7Ozs7Ozs7Ozs7OztXLEs7Ozs7OztNO087TztNLEc7OztPLGU7O1E7UTtTLFU7UyxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTtnQjtpQiw4QjtpQixVOzs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7Ozs7O2dDO2tCO21CLFE7bUIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCO3dCO3dCOzs7Ozs7O3dCOzs7Ozs7bUU7O3FCOzs7Ozs7Ozs7Ozs7O3lCOzBCOzBCLFc7NkI7MkI7NEI7OytCOzttQzs7MkI7OzsrQjs7MkI7Ozs7K0I7OEI7bUM7OzBCOzs7Ozs7OzBCOzs7Ozs7Ozs7dUM7Ozs7cUI7Ozs7bUI7O2tCOztzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0IsTztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7OztLOzs7O0ksVztPLDBDO0k7Szs7SSxPO0c7Ozs7SztNOzs7TTs7O00sTztNO2dCO0ssYTtLO007TSxVOztLO007Ozs7SztvQztzQzs7OztTOzs7Ozs7VSxPO1UsTzs7OztVOzthOzs7O1U7OztTO1U7VTs7Ozs7OztVOzBCOztRO0ssTzs7OztJO0ksVzs7SztJO0k7SztLLDJCLE8sNEI7SSxPO0c7O0k7Rzs7STtJO0s7OztrQjtLOzs7Ozs7SyxNOzs7Rzs7SSxJOzs7OEI7OztJO0c7O0k7STtLO00sVztNLGM7Ozs7O00sSTs7O2tDLE07Ozs7OztLOztHO0c7O0ksSTs7SztLLEksVTs7OzZCOzs7O0s7MkI7O21CO3NCO0s7STtJLEksUzs7SztLLEcseUM7O0s7STtJO0ssVzs7O0s7SyxJLFU7Ozs2Qjs7Ozt3QjtzQjtLO0k7STtLLFc7OztLO0ssaUI7TTtLO0k7SSxPO0c7O0k7Ozs7Ozs7O1U7Ozs7Ozs7O2E7O2M7OztpQjtpQixJLFU7Ozs7bUIsTTs7Ozs7aUIsSTs7Ozs7O2tCLE07Ozs7Ozs7O2lCO2dCO2E7Ozs7O2lCO2lCLEksVTs7OzttQixNOzs7OztpQixJOzs7Ozs7a0IsTTs7Ozs7Ozs7aUI7Z0I7YTs7Ozs7Ozs7Ozs7O2EsRztjLEk7Ozs7OztlLE07Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STtJO0ssUTtLLFE7SztJLFc7OztJOztLLE87O0k7O0ssYTtLLFU7SyxVO0s7SztLO0s7STtJOzs7SyxJOzs7Ozs7TTs7Ozs7OztJOzs7O0k7SyxRO0ssUTtLO0ksVztJO0s7TTtNLGE7TTtNO007TTtLO0s7SztNLEs7TSxLOztNLE07Ozs7UyxJLG9EOzs7Ozs7VSxNOzs7Ozs7OztRO0s7Szs7Ozs7VTtVLEksVTs7OztZLE07Ozs7VSxJOzs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1M7TTs7Ozs7VTtVLEksVTs7OztZLE07Ozs7VSxJOzs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1M7TTs7Ozs7OztLO00seUIsMEI7TSxjO00sTztNOztxQjtLOzs7Ozs7Szs7O0c7NEIseUM7O0k7O2lDOztLOztJO0c7O0k7NkIsbUIsMEI7SSxPO0c7O0k7STtlOztpRTs7O0c7O0ksTztHOztJLEksVSw2Qjs7SyxNO0ksbUIsVTs7Ozs7TSxHLDZCOzs7SSxNO0c7O0k7SSxPO0c7O0ksWTs7YyxzQjs7Szs7OztrQjtPO1E7UyxPO1MsTTs7UTtROzs7OytCOzs7O087Ozs7USxLO08sMkI7TztRO1E7OztROzs7UTtPOztPLHNCLE87Tyw2QjtPO1E7UTs7Vzs7USxVO1E7TyxhO2lDO08scUI7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YSwwQjthLEc7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztROzs7O1k7YSxROzs7WTs7Ozs7OztXO1MsTztTO1E7O2dDOzs2Qjs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCOzs7WSw4QixROzs7OzttQzs7YTs7Yzs7Ozs7O3lCOzs7d0I7O2E7O1ksTTtXO1MsVztTOzhCO1M7UzsrQjtTLE87UyxRO1E7O087O087OztROzs7Tzs7O08sTTtlOzs7O0k7O0k7RztHLGU7O0k7SyxVO0s7SSxNOzs7YTs7Rzs7OztLLEcsbUM7SyxHLG9EO0s7SztNLFU7TSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0I7a0I7Ozt1QiwrQjs7OztpQjtrQjs7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87b0I7a0I7Ozs7cUI7O29CO2lCLE87Ozs7Ozs7Ozs7Ozs7Ozs7a0IsRyxpQzs7Ozs7Ozs7Ozs7Ozs7O2lCLHNCO2lCLEc7a0I7a0IsRzttQjs7OztpQjtrQjs7O2tCOzs7a0I7Ozs7aUIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCO3NDOzs7O2lCOzs7a0I7O21COzs7Ozs7dUI7c0M7Ozs7OztxQjtxQjs7b0I7aUIsTzs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7Ozs7NEI7Ozs2QixROzZCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7OzZCOzs0QixNOzJCO2dDOzs7Ozs7Ozs7Ozt5Qjs7OzBCLFE7MEIsVTt1RDs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7OzsyQjs7eUIsTTt3Qjs2Qjs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7Ozs7Ozs7Ozs7d0I7dUI7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQjs7b0M7bUI7Ozs7O3VCOzs7OztzQixrQztzQjs7OEI7OztxQjttQixVOzs7bUI7b0IsYTs7O3FCOzs7OzBCOzBCO3lCO3NCOzs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7UyxJOzs7Ozs7O087USxJOzs7Ozs7OztRLEc7UztVO1csTztXLE87Ozs7Yzs7O2UsUTs7O2M7Ozs7OztlOztjOztlLE87ZSxPO2UsTztjOzs7dUI7Ozs7YTtXLE87VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7TztRLFc7USxJLDhCLEk7Ozs7O1M7OztRO1MsSTs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXOztNO00sSSxpRDs7OztRLGtDOzs7SztLLE8sd0M7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHO0c7STtJOztJO0k7SyxHLDRDO2tCO0ssWTs7OztTO1k7VSxNOzs7O1M7VTtXLHNCO1csTztVOzs7OztVOztXOzs7O1c7Ozs7O1ksTTs7Ozs7O2tCLDRCOzs7O1M7O1Usc0I7UztTLGU7b0I7UyxJLE87OztLLDBCO0ssTzs7Rzs7STtJO0s7O0s7Szs7Ozs7O0s7O0c7O0k7SSxvQjtJLFc7SSxTOztJOzs7UTs7UztTLHNCO1EsTzs7USxxQjtROzs7UztTOzs7VTs7OztjO2M7YTtXLE87VTs7Ozs7ZTtlO2M7VyxPOzs7OztROztRLG1DO1EsUzs7O0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7Ozs7O2EsZ0MsUTs7Ozs7Ozs7aUI7Ozs7a0I7Ozs7c0I7cUI7cUIsTzs7O29CO2tCLFE7a0IsTztvQjtrQjttQixPOzBCOzs7Ozs7Ozs7O2E7WTtVLFc7OzthOzBCO1k7VSxPOzs7YTthLE87WTtVLFc7VTtnQjtTOzs7O0ksb0I7SSxPO0c7O0k7RztHO0ksYztJLGtCOztJO0ksTztHOztJOzs7O0ksWTtrRTtJLEksVywyQzs7OztLLEksTywyQixPO0s7SyxXOzs7Ozs7O1U7VyxjOzs7WSxNOztXO1k7O1k7NkI7WSxjOzs7Ozs7O1c7WTthLE87YSxJOzs7OzthOzs7Ozs7YSxNOzs7Ozs7O1Usa0M7OztXLEc7OztZOzthOzhCO2lDOzs7Ozs7OztVLG1CLE87VTtXLFU7VztXLEk7Ozs7O1c7VztZLFc7WTs7aUI7Ozs7O1k7NkI7WSxRO1ksVTs7Ozs7YSxHOzZCOzs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLFU7OztZLE07Ozs7Ozs7ZTs7O3dCOzs7OztNOztPLHNCO2dCOztLO0s7O0c7O0k7SztLO0s7Ozs7OztLO0ssTTs7Rzs7O0k7Szs7O00sc0I7TSxTOzs7TTs7O087OzBCOzs7Ozs7Ozs7Ozs7O007Tzs7UTs7Ozs7OztRO1E7Uzs7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O08sRzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07Ozs7STtLLFk7Ozs7Tzs7USxLO1E7USxVOzs7OztPLE07O007OztPLHNCO08sZ0I7Ozs7Szs7O00sc0I7TSxPO007O00sc0I7TSxXO0s7Szs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOztHOzs7Ozs7O1EsSztTOzs7VTs7VSxzQjtTLGM7Ozs7O1E7Ozs7O1k7WTtXO1MsTzs7OztZO1k7VztTLE87UztROzs7UTs7OztTO1E7Ozs7SSxHO0ssTTs7Ozs7Ozs7Ozs7STs7Szs7O0ksb0I7STs7O1E7Ozs7Ozs7O0k7STtHOztJLEc7SyxNO0k7Ozs7OztLOzs7SSxvQjtJOzs7UTs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7Szs7TSxPOzs7UyxtQixROzs7Ozs7WTs7YSxzQjtZLE87Ozs7UztRO0s7SywwQjtLLE87O0ksb0I7SSxPO0c7O0k7SSxvQjtJLE87Rzs7STtLO0s7SyxRO0ssVTs7Ozs7SyxPOztJO0c7OztJLFk7Ozs7O1E7UyxJLFksNkI7Uzs7OztnQzs7Ozs7USxHO1M7VSxPOzs7YSxrQixROzs7Ozs7O2M7O2E7WTtTLEsseUM7O1E7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3lCLE87OztPLE87OztPLE87Ozs7O3NCLGM7cUIsWTs2Qix3QjtHOztJO0c7O0ksVztJLE87Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJO0ksTztHOztJLHVCO0c7O0k7STs7O21DOzttQzs7bUM7O21DOzttQzs7O0s7Szs7Ozs0Qjs7O0c7Rzs7STtLO0ssWTtLLFc7O0s7O007O087O087Ozs7Ozs7STtHOztJLGlCOzs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7SSxXO3dCO0ksVyxXO0ksTyxXO0c7O0k7SyxPO0k7STtLO0ssUTs7O0k7SztJO0ssTztJO0k7SyxPO0k7cUIsdUI7STtLLGE7SyxvQjtLLFU7O0s7O007TTtNO0s7SztJO0k7STtLLFk7OztNLE87O3lCO0s7TSxPO00sTztLLE87Ozs7Ozs7Ozs7O0ksTztHOztJLFc7RztHO3NCLHlCOzs7eUIsc0I7cUI7SSxtQjtHOztJLEksZSx5Qzs7OzRCOzs7Rzs2QixPLHlDO0csVTs7STtJO0c7O0k7STtJO0c7RyxJLHVDOztJO0ssVztLLE87STtJOzs7OztTOztJLE87Rzs7STs7O007O08sTztjOzs7SztNLFc7TTtPO1E7USxNOzs7OztPLEksZTs7b0I7Tzs7OztTOztVOzs7UztTOzBCO1M7OztTLEcsaUM7Uzs7VTs7O1U7OztTO1M7VTs7O2E7YTtZO1M7Uzs7c0I7Uzs7O1MsUztTO1U7OztVOztzQjtTOzs7O0ksVztHOztJLFc7O087OztLOzs7UztVO2dDOzs7UztVO2dDOzs7UztVO2dDOzs7UztVO2dDOzs7UztVO2dDOzs7Ozs0QixNLDBDOztNOzs7Ozs7Ozs7O21DO0k7Rzs7O0s7SztLO0k7O0c7O0k7SSxPO0c7RyxtQjs7STtJOzRCO0ssVSxnQztNO0ssSTs7Rzs7STs7Tzs7USxPO1E7cUI7Tzs7UTtVOzs7OztRLE87USxxQjtPLEksWTs7OytCOzs7O087OztTLEksVTs7Ozs7Ozs7O1UsdUIsTztVOzs7Ozs7UTs7OzZDOztPLHNDO087O0c7bUQ7Rzs7STs7NkI7Ozs7Ozs7O1U7OztXLE87VTtjLDRCOzs7Ozs7O3NDOzs7Ozs7Tzs7O1M7VTtXO1csTTs7Ozs7VSxJLGU7MkI7Ozs7Ozs7O1k7OzthOzs7WTtZO1k7O3lCOzs7Ozs7OztROzs7O1E7UyxXO1MsSztVOzs7O087O08sb0M7Tzs7OztJO0c7O0k7SSxPO0c7O0ksTztHOztJO0ksb0I7STtLLFE7SyxPO0ksTztHOzs7SSxzQixpQixrQjs7Rzs7SSxZLE87OztzQixPLGdEO0ssTztJO0ksTzs7Rzs7STtJO3FDOzs7TTs7OztHOztJLFksTzs7SSxPOzs7SSw4Qjt5Qzs7SSxPO0c7Rzs7STtJO0ssSSxLOzs7O00sRztNLEk7OztLLE87Ozs7Ozs7Ozs7Ozs7OztHOztJLHNCO0c7O0k7SyxPOzs7O08sTzs7Tzs7Ozs7USxPO1E7TyxPOzs7Ozs7Ozs7Ozs7TyxPOztPOzs7O1E7USw0QjtPLE87Ozs7Ozs7Ozs7Ozs7Ozs7VztzQixPOztXLE87O1U7TyxPOzs7Yzs7Ozs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7USxPOztPLE87OztPOztRLFU7Ozs7Ozs7O1csYSxPOztXLE87O1U7OztXO1csTztVO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Ozs7Ozs7O087Ozs4QjtRLE87TyxPOzs7OztJLFksTzs7OztlO2U7OztLLE87OztJLE87Ozs7O00sUSxPOztNLE87SztLLE87O0k7eUIsTyx5Qzs7SyxZLE87O0ssTztJO0ksTztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7O0ksUSxNOztJLE87Rzs7STtJO0s7TSxROzs7TSxVOzs7O087OztRLE87OztRO1U7YTs7OztRO1MsVztTLEc7Ozs7O3dCO1k7O2E7OztjLFc7Ozs7Ozs7OztVO1c7WSxzQjtZLEs7WTs7Ozs7O3NDOztZOzthLE87d0I7Ozs7Ozs7Ozs7Ozs7Szs7Ozs0QixXOzs7Rzs7STs7Tzs7USxTO1EsSTs7O1EsRyx5Qzs7O087O08sa0I7Tzs7Tzs7O1E7OztPOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7O1M7O1U7Ozs7O1M7VTtXLEk7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1E7TSxPOzs7O0k7Rzs7STtJO0k7O0ssMkIsZ0M7SSxPO0c7O0ksWTtJLG9CO0ksTztHOztJOzswQixXOzt3Qzs7TyxvQztPOztHOztJLCtCO3VCO0k7Szs7OztLLFE7Szs7MkM7O2MsTTs7Ozs7VTs7VyxvQjtXLEcsa0Q7O1U7O1csSTtXLE87VyxPOzs7Vzs7OzthOzs7OzRCLDJDO2M7OztpQjtpQixPO2dCO2MsTzthOzs7YztlO2tDLE8sK0I7ZSxPO2M7ZTtnQixPO3VCOzs7Ozs7Ozs7Ozs7VTs7UztNOztJOzs7Ozs7Ozs7Ozs7OztNO087USxPOzhCOzBCOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7O0ssa0IsUTs7TSxnQyxPO007O3dCOzs7Ozs7SztJO0ksTztHOztJLFk7Ozs7UTs7OztTO1EsTzs7USxrQzs7UyxvQixPO1MsTzs7O2tCOzs7WTs7OzBCOzBCO1c7USxPOzs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7RztJO0k7STtJO0k7STtJO0k7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7Ozs7UztTLE87UTtNLE87Szs7OztJO0c7O0k7O007TyxPO08sTztPLE87Yzs7TTtPLE87YztLO0ssaUM7O0c7O0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw0Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZLHVCLDRCOzs7Ozs7aUI7aUIsTztnQjthLEs7YSxXOytCOzs7Ozs7a0I7O00sRzs7TTs7O0c7O0ksSSxRLDhDOztLO0ssVztJO2U7O0c7O0ksMEI7OztJOztLOzs7Uzs7O1E7SSxPO0c7O0k7STtHO0c7STtJO0k7STs7STtLLFc7OztHOztJO0c7O0k7Szs7O0c7MEIsa0M7O0k7OztHO2tDLDBDOztJLFk7Ozs7MEI7Ozs7UTs7STtHOztJO0k7SztLLEc7TTtLO00sTTtNO007Ozs7O1M7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STtHOztJO0k7STtHOztJO0ksTztHO0c7O0k7STtNO1c7SztNO21DO007Szs7O0ssSSxNLDhCOzs7O1M7VTtVOzs4Qjs7Uzs7Ozs7VSwwQjs7O1MsRztVLGM7Ozs7Ozs7YSxHOzs7Ozs7Ozs7Ozs7Uzs7NkI7O1M7OztVOzs7VTs7VSw0QjtTO1M7OztTOztTLE87O1M7O1M7O1UsVTs7OztTOzs7O2M7MkI7YTtzQjs7O1M7OzthLGtCLFE7NkQ7YTtZO1UsVTtVLE87VSxjO1M7O1U7VztZOzs7WTtZO1k7NEI7cUM7VyxpQztXOzs7O21DO3dCO1c7OztTOzs7O29DO1U7O2EsZ0MsUTsyQzs7Ozs7OztlOzs7Ozs7O2U7OzthOztVLFc7Uzs7OztpQzt3QjtTOztTOzs7d0I7O1MsZ0I7UztVLFE7VTtTO1M7VSxzQjtVLEs7VTtTOztTOztTOzs7OzthOzs7YztjLE87YSxXO1k7VSxPO1M7O0s7STtJLEc7Szs7TSxzQjtrQjs7STtLO0s7Szs7STtHOztJLG9CO0ksTztHOztJO0s7TSxVOzs7Ozs7UztzQjtRO00saUI7OztTO1MsTztRO00sZ0I7TTs7O0s7OztnQixPO0k7Ozs7SztLO0s7OztJLFk7SSxNO0c7O0k7Szs7Ozs7TTtNOzs7Szs7SSxjOzs7Ozs7Ozs7OzZCOztJOzs7STtJLE87Rzt3QywwQjs7STtJO0c7O0k7STtJO0c7O0k7STtHOztJO0k7Rzs7STtLOzs7SztLO0ksTztHOztJO0k7Rzs7STs7SyxJLE8sNEI7NEI7SztLO0k7SSxPO0c7O0k7O0ssVztLLE87bUI7O0k7SSxhO0ksTztHOztJOztLLE87OztxQiwwQjtJLE87Rzs7SSxxQzs7SSxlO0c7O0ksVzt3Qiw0QztJO2dCOztJOztjLEksOEI7YzthO0c7O0ksSTtJLFc7Rzs7STtJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7O0k7STtJLEksaUM7O0s7O00sTzs7O1MsVyxXO1M7VTtXLE87a0I7OztTLGM7UTtLOztJO0k7STs7O0ssdUIsVTs7OztPLHNCLFU7Ozs7Ozs7VSxHO1c7WSxXO21COzs7Ozs7Ozs7Ozs7Szs7Ozs7STs7Ozs0QywwQjtLOzs7Ozs7O1M7O1E7Szs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsMkI7Yzs7O0ksSTs7SyxhO0ssc0I7OztNLFc7TTs7Ozs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7O0s7TSxVOzs7TTs7SztJO0ksVzs7Szs7Ozs7O0s7STtJO0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O2M7OztLOzs7OztNOztjOzs7O0k7Ozs7OzthOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7O0ksbUI7O0k7O2M7ZTtlO2M7YTtHOztJO0k7SyxVO0s7STtJO0k7STtJOztLO3lFO0s7STtJO0ssYztLLE87Szs7O0s7STs7Ozs7OztJO0c7O0k7SSxPO0c7O0k7STtJO0k7SyxPO0s7OztJLE87Ozs7OztHOztJO0ssTztLO0s7Szs7OzsrQjs7Ozs7STtHOztJO0ksTztHOztJLFk7OztLOztJO0c7OztJOzs7Ozs7O1E7OztTLE07UztTO1E7O1U7YTtTLFc7UyxLO1UsTzs7Ozs7USx1QjtRLEc7Uzs7Ozs7O2lDLGtCLHdCO1E7Ozs7UTs7Ozs7Ozs7O1E7Ozs7UyxNO1M7UztROztVO2E7Ozs7O1M7Uzs7Ozs7UTs7UztTOzs7Uzs7O1k7WTtXO1MsUztTOzs7O1k7WTtXO1MsVztTLGE7OztZO1k7Ozs7Ozs7VztTLFM7Uzs7OztZO1k7VztTLFk7UyxjOzs7WTs7Ozs7YTs7O2E7WSxhOztZO1c7UyxTO1Esb0I7Ozs7O1MsMEI7OztRLEc7UyxZOzs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7O1E7Ozs7STtJO0k7SSxPO0c7O0k7SyxPO0s7Ozs7OztJO0c7O0k7SztLO087VTs7STtHO0cscUI7O0k7STtJO0k7SSxlO0k7STtJLHlCO0k7O0s7SztLLE87SyxPO0kscUI7Rzs7STtJLE87Rzs7STtJO0k7STtJLGU7STtJO0kseUI7SSxJLE8sOEI7O0s7O0k7STtLLG1CO0s7OztLOztJO0k7SyxvQjtLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUI7SSxvQjtJOzs7ZSxjO2dCLFc7Z0IsTzs7ZTtjO2MsTzs7OztHOztJLFc7SSxPO0c7O0k7STs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7O1E7UTs7Z0M7TzttQzs7Ozs7Szs7TTswQjtNLE87SztLLE87STtJLDhCLFc7Rzs7STtLLE87SyxhOztLOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7OztXOzs7Yzs7OEM7O2M7YTtXLFc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087TTtNO08sUTtPOztPLGtCO087Ozs7TztrRDs7TztNO007TyxNO087Ozs7WSxPO1c7TSxXO0s7SztNLE07TTtNOzs7VTtTO00sUTs7O0s7SztJO0k7SSxPO0c7O0k7Ozs7O0ksVztHOztJLEksd0I7SSxXO0c7O0ksWSxzQjs7O0s7OztNO00sTztLLE87O0k7O0s7SyxPO0ksTzs7O0ksUzs7c0Isa0Q7STs7SyxPO0ssc0I7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Syx1QjtLLFc7SyxXOztJO0s7Tzs7Ozs7Ozs7O0k7STtJOztLOztNLG9COztLLE87O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtJO0s7SyxPO0s7STtLO00sWTtNLE87SztLOztJLE87Rzs7SSxXO0k7OztLLEksUSwyQixVOzs7O007Ozs7O087OztPOzs7OztPOzs7O3VCOzs7Ozs7TyxHO1E7UztTO1MsTztTLE87O2tCOzs7O007Ozs7STtHOzs7STtJO0k7SztLOztJO0k7SztpQztLO0s7SSxPOzs7STs7SyxPOzs7SSxPOzs7Ozs7Ozs7O0ksb0I7SSxXO0ksTztHOzs7SSxHLCtCO0k7STs7O0k7O0ssTzs7O0ksTzs7Ozs7Ozs7OztJLFk7O2dCOztJLDBCO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7RztJOzs0QixPLHlDO0ksaUI7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OzJCLE8sMEM7O0ksTztHO0csaUI7O0k7SyxPO0ssUTs7O0ssTzs7STtHOztJLFc7SSxJLHNDLEk7Ozs7OztJO0k7Rzs7SSxZLE87O0ksTzs7OztLOztROzs7O1M7O1MsUTtTLFU7OztTO1U7O21CLE87a0I7Ozs7UztVOzttQixPO2tCOztROzs7O1MsVzs7O3lCLFc7O1c7OztrQztZLE87VzttQjs7Ozs7Ozs7O2dEOzs7OztrQjtpQzs7O1k7OztlOzs7Ozs7Ozs7WTs7YTthLE87O2U7O1c7bUI7OztXOzs7O1ksTztXO21COzs7Ozs7Ozs7VyxrQixPO1c7bUI7Ozs7Ozs7Ozs7O1MsVzs7O1M7aUI7OztRLFc7Ozs7OztTOzs7WTs7Ozs7Ozs7Ozs7O1c7Vzs7O2M7Ozs7Ozs7Ozs7O2tDOzs7O3VCOzs7OztXLFc7OztXO1c7bUI7Ozs7Ozs7O1csVzs7O1c7VzttQjs7Ozs7Ozs7OztRLFc7OztRO1E7USxjOzs7OztZOztxQjtxQjtxQjtxQixPOzs7Ozs7OztvQjs7USwwQjs7STtJLE87Rzs7SSxVOztJLE87Rzs7SSxZOzs7SyxJLDZCOzs7O08sTzs7OztJO0c7OztJO0k7OztxRCxTO0k7Ozs7Yzs7ZTtlO2M7YztlLFU7OztlOzs7Z0IsTztlLFc7YztjLFc7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7OztnQjs7aUI7O29COzs7cUIsUTs7Ozs7cUMsbUI7O29COzs0Qjs7O2U7Z0IsTztnQixPOztnQjs7aUI7a0M7aUIsTTs7bUI7Ozs7Ozs7Ozs7Z0Q7ZTtnQixPO2dCLHNCOzs7Ozs7OztlO2dCO2dCO3VDO2U7Ozs7Ozs7OztrQjs7Z0I7Z0I7O2U7Ozs7Ozs7O2UsTTs7YTtHOzs7STtLOzs7STs7OztLOztJO0s7OztJLGM7STtLOzs7STs7Szs7O0k7OztJO0k7Rzs7STtJOztNOzs7TyxhO08sTztPLE87TyxPLFc7TyxPOzs7Ozs7Ozs7TTs7Ozs7Ozs7Ozs7SyxNOztHOztHLDhDOzs7SSxZOztJOzs7STs7O0ksbUI7SSxxQjtJLG9CO0ksVztHOztJLHFCO0ksb0I7SSxXO0c7OztJOzs7O2M7YztlOzs7bUI7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7YztlOzs7Ozs7Ozs7Yzs7ZSxPO2M7OzttQjtjLG9COztjO2U7Ozs7Ozs7OztjLE87Ozs7Ozs7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxVO0k7OztHOztJO3lCOztHOztJO0ssTzs7O08sTzs7Tzs7O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87O087Ozs7USxvQixPLHlDOzt3QixPLDhDO08sTzs7Tzs7OztRLG9CLE8seUM7OztXLE87VTtPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87Ozs7SSxZOzs7O00sdUI7TSxPO0s7SyxPO0k7SSx1QjtJLE87Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0ksSSw0Qiw4Qjs7Ozs0Qjs7O0c7O0ksaUI7SSxnQjtJLE87Rzs7SSxPO0c7O0k7OztPOztRLE87UTtPLFc7Ozs7Ozs7O1UsWTtVOzs7Ozs7OztVO1csTztXLFU7VTs7Ozs7Ozs7STtHOzs7O2dCOzs7OztROzs7O1MscUIsTztTLEc7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7OztROztROzs7Ozs7O1M7O3dDO1MsUTtROzs7Ozs7Ozs7OztTOzs7Ozs7OzRCOzs7OztRLFk7UTs7Ozs7UTs7O1E7Ozs7O0k7cUI7a0I7O0k7Rzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTLHNCO1MsWTtROzs7OztTOzs7Ozs7O1M7VTtvQjtVO1U7Uzs7O1E7O1Esb0IsVTtzQjs7USxJLGtCOzs7O1UsTTs7O1EsSTs7Rzs7STtHOztJOzs7Ozs7Ozs7O087OztnQjs7Ozs7Ozs7Tzs7ZTs7Ozs7TyxpQjs7Tzs7Ozs7O1E7OztPOzs7TztROzs7Ozs7UyxzQjtTOzs7Z0I7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzRCOzs7aUM7STtLLE87SyxVO0ssTztLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtLOzs7UTs7OzhCOzs7Ozs7Ozs7Ozs7OztROzs7OzsrQjs7Ozs7O2dCOzs7SSxXO0c7O0k7OztPOzswQjs7TztlOztHOztJO0k7Z0I7Ozs7UTs7O1M7USxrQjs7UTs7Ozs7Uzs7YTs7UywrQjtRLE87O1E7Ozs7UyxROzs7Ozs7O0c7O0ksUztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1Esb0M7O1E7O1E7Ozs7O1M7USxVO1E7UyxROzs7Ozs7UTs7OztHO3FDLHVDOzs7Ozs7O1E7UyxZO3FCLE07UyxvQjtTOzs7OztVLE07Ozs7UTs7Uzs7WTs7Ozs7Ozs7Ozs7dUM7Ozs7YSxNOztZOztRLE8sVzs7O2dCOzs7O0ksSSxlLGE7OzsyQjs7O0c7O0k7SSxrQjtJLE87Rzs7STtJOzs7Ozs7O1E7OztTO1M7UyxNO1M7UyxNO1EsTzs7Rzs7STtJO0ssSSxjLHVDOzs7O3VCO00sNkI7TSxHLCtCO00sSTs7Rzs7STs7O0k7SztNLG1DOzs7Ozs7OztJLE87Rzs7STtLO0ssUTs7Ozs7Ozs7TztRLFE7UTtVOzs7Ozs7OztHOztJLFM7Ozs7Ozs7Ozs7Ozs7Ozs7UyxHOzs7Ozs7Ozs7Ozs7Tzs7O1k7Tzs7Ozs7Tzs7O2lCOzt3Qjs7Rzs7O0ssSSw2QixhOzs7NEI7OztJOztJO0c7O0k7SztNO007TTs7O1Msb0I7b0I7O1E7OztTOzs7Ozs7Ozs7aUIsbUI7aUI7O2tCO2tCLG1COzRCOztnQjthLE87OzsyQjs7OztTO1E7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7UztTLE87UTtNLE87TSwwQixPLGtDO00sOEIsVzs7Szs7OztLOztNO087USxLO1E7Tzs7Ozs2Qjs7OztnQjs7SztJOztJO0c7OztLLFk7O007TyxROzs7bUI7O0ssTztJO0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0ksWTs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtLLFU7Szs7Ozs7Ozs7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7OztVO1UsUztVLFE7OztXLE07VSxNOzs7Ozs7Ozs7Ozs7O1UsRztXO1k7WSxNO2tCOzs7O1MsTTs7Uzs7O1U7OzthO2MsTTtjLE07YSxPO1k7Z0I7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7OztJLE87OztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ksSTs7Ozs7SyxNOztJLEk7Ozs7OztTO08sRzs7O1EsRztTLEc7Ozs7Ozs7VTs7O2EsTTs7Ozs7O1ksTTs7VyxLO1csSTs7Ozs7Ozs7Ozs7O29COztNLE07O0s7Szs7O0ssTTtJO0c7O0ksWTs7SztNLE87TSxVOzt3QztLOztJO0c7dUMsNEI7O0k7Rzs7dUIsTyx5QztJO2dDOztLOztNLHFCLE8seUM7MkIsTyx5QztLLE87OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNO007TSxPO0ssTzs7SSxrQixPO0ksTztHOztJLG1CLE8seUM7dUIsTyx5QztJLE87Rzs7STs7OztRLE87O087Ozs7UTs7Vzs7WTs7Vzs7WTtZO1ksTztXLE87O08sTzs7Ozs7Ozs7Ozs7OztPLE87OztPLE87OztPLFc7TyxPOzs7TyxXO08sTzs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87O087Ozs7UTs7Vzs7O08sTzs7Ozs7Ozs7Ozs7OztPLE87OztPLE87Ozs7Ozs7Ozs7TyxXO08sTzs7O08sVztPLE87OztHOztxQixPLHlDO0ksVTs7STtLOztJO0ssTztLLE87SSxPO0c7O3VCLE8seUM7STs7OztROztRO2dCOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87OztPO087OzZCOzs7OzJCLE8seUM7TztROztXOzs7WTtXLE87OztXLE87O2tDLE87OztXOztPLFc7TyxPOzs7Tzs7USxPLFc7OztPOzs7Tzs7UTs7O08sb0I7TyxPO2dCOzs7Ozs7Tzs7O08sc0I7TyxPOzs7Tzs7USxVO087aUI7aUI7O0c7O0k7O0s7O0k7SyxNO0ssTTtJLEk7Ozs7O0s7O0k7Rzs7STs7Ozs7STs7O087Ozs7O1EsTztPLEcscUIsc0M7TyxXO087OytEO087UTtROzs7Ozs7OzswQjtLOztHO0csSTs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLLEc7OztNOztLO2lCOztLOztJLE87Ozs7O0c7OztJOzt1QjtLLHNCLE87USw2QztLO007TyxPO08sTztNOzs7Ozs7TTs7Szs7O3NCO0k7O0s7Ozs7MkIsb0I7SSxPO0c7OztJOzs7Ozs7ZTs7SSxJOzs7OztLOztJOztHO0csSTtnQyxVOztJOztPOztPOztPOzs7O0c7O0k7SyxRO0ssUTtLLFU7SyxVOzs7Ozs7UyxrQjtVO1csVTs7O3FCO1U7O1k7O1csTTtVO1csVTs7O1U7Ozs7OztXOzs7ZTtlO2M7WSxPO1ksVTs7O1c7WTthLE87YSxPO1k7Ozs7Ozs7Ozs7Ozs7eUI7O1U7Ozs7Ozs7UyxrQjtVLGU7VSxLO1csTTtVO1csTztXLE87VyxROzs7O1csYztXLGM7OztXO1csYzs7Ozs7Ozs7Ozs7OztXOzs7ZSxrQixROytEO2U7YztZLFU7Vzs7OztXOztZOzthOzs7Ozs7YyxVO2MsVTs7Ozs7Ozs7Ozs7Z0IsVzttQjtpQjtrQixRO2tCLFE7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2lCOzs7a0I7a0I7Ozs7Ozs7Ozs7OztjOztnQjs7O2lCO2lCOzs7Ozs7Ozs7Ozs7OztZLEk7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7Ozs7TSxjOzs7Ozs7OztzQzs7Ozs7c0M7Ozs7Ozs7Ozs7STs7TTs7TTtPLE87TyxPO007Ozs7Ozs7Szs7STtHOztJO0k7Ozs7Ozs7OzhCOzs7Ozs7OztROzt1Qjs7O1M7O1UsUTtVLFU7Ozs7YSxxQixPO2EsRzs7O2Esc0IsTzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7Ozs7Ozs7Ozs7OztNOztPLFE7OztPLEk7Ozs7Ozs7OztRLEk7Ozs7Ozs7Ozs7Ozs7OztLLEk7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TztRO1M7O1ksVztZLE87Vzs7UTtxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLE07Ozs7Ozs7Ozs7O1E7Uzs7Ozs7Ozs7OztPO1E7Uzs7WSxXO1ksTztXOztRO3FCOztPOzs7USxPO1EsTzs7Ozs7WTthLE87YTtlLDBCO1k7YSxXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztZO1c7Z0I7OztPOzs7UTtTLGtCLG1DO1M7O1k7Ozs7OzthLFE7YSxRO1ksRzs7Ozs7OzthOztZOzs7O3dCOztZOzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7O0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87OztLO0ssbUIsZ0Q7SztNLFE7OztNLFU7Ozs7O00sSSxzQjs7TSxtQjs7Ozs7Z0I7SztNLFU7Ozs7O00sVTs7Ozs7TTtLO007TTtPLEksb0I7Ozs7OztLO0k7SSxPOzs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SyxPO0k7SSxPOzs7STs7SztLLE87STtJOztHOztJLHlCLE87SSxPOzs7O0ksTzs7NkMsUzs7O0ksTzs7O0ksd0I7Rzs7SSx3QjtHOzs7STs7OzhCLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTztPLE87OzRCLE87OzZCLE87Ozs7OztXO1csTztVO08sTzs7Ozs7O1c7VyxPO1U7TyxPOzs7TyxxQjtlOzs7c0Msc0M7OztJLE87OztJO0ssa0IsTztLLE87OztJLG9CO0ksTzs7O0k7O0s7O007OztTO1MsVztTLE87O0ssTzs7O0ksb0I7SSxPOzs7Ozs7Ozs7SztLO0ssTztJO0k7STtJLFc7STs7SztLLE87STtJLE87OztJLHFCLE07SSxPOzs7O3dCLGtCLE8sNEI7STtJLFU7SSxPOzs7O0ksTzs7OztJLHNCOztJO0ksVTtJLE87OztJO0k7STs7SywwQjtLOzt1QixPOztRO2dDLE87OztJO3FDOzs7Tzs7NEIsTzs7Tzs7TyxxQixNO08sTzs7Tzs7O1EsTTtPOzs7O1c7VyxPO1U7TyxPOztPLHNCLE07TyxPOzs7Ozs7VztXLE87VTtPLE87O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7Rzs7OztLOzs7d0IsTzs7USw4QixNO1E7USxPOztRLGdCLE07USxPO2dCOztJO0k7STtxQzs7O087O087OztPO08sTzs7Tyx5QixNO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7O087TyxVO08sTzs7O087TyxVO08sTzs7TywwQixNO08sTzs7Tyx3QixNO08sTzs7Tyx3QixNO08sTzs7Ozs7OztXOzhCOztXLE87VTtPO08sVTtPLE87O2dDLE87OztPO08sTzs7TywwQixNO08sTzs7O087TztPLFU7TyxPOzs7TztPLE87OztPO08sTzs7O087TztPLE87O2dDLE87O087O087O2dDLE87Ozs7OztXO1csTztVO08sTzs7O087TyxPOzs7TztPLE87O2dDLE87O2dDLE87OzZCLE87O2tDLE87OztPO08sVTtPO08sTzs7Tzs7O087TyxPOzs7Ozt3QixrQixPLDRCO0ksTzs7OztJLE87Ozs7STtJLFU7SSxPOzs7O0k7Ozs0QixPOzs7TyxPOzsrQixPOzs2QixPOzs4QixPOzs0QixPOzs4QixPOztPLDBCLE07TyxPOzs4QixPOzs4QixPOzs2QixPOzs7TyxxQjs7TywwQixNO08sTzs7TywwQixNO08sTztlOzs7O0ksd0I7Rzs7SSxZOztJLE87Ozs7STs7O087OzZCLE87OztPO08sTzs7O087Ozs7VztXLE87VTtPLE87O2dDLE87ZTs7OztJOzs0QixPOztPOztPOzs4QixPOztPO2U7Ozs7O0ksTzs7OztJO0ksTzs7O0ksOEI7Ozs7Ozs7O1c7VyxPO1U7Tzs7OztXO1csTztVO08sTzs7O087TyxPOztpQyxPOzs7TztPLE87Ozs7O0k7OztPOzs2QixPOzs7TztPLE87OztPO087TyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7SSxPOzs7O0k7OztPLHNCLE07TyxPOzsrQixPOzs7Tzs7OztXO1csTztVO087TyxPOzs7Tzs7OztXLGtCLE07VyxPO1U7TyxPOzs7Ozs7O087Ozs7VztXLE87VTtPO08sTzs7O087TyxVO08sTzs7O087TyxPOzs7OztJOzs7TywwQixNO08sTzs7Z0MsTzs7O087TyxPOzs7TztPLE87Ozs7O0k7SSxVO0ksTzs7OztJOzs2QixPOztrQyxPOztrQyxPOzs7TztPLE87ZTs7Ozs7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzt3QyxPOzs7OztJO0ksVTtJLE87Ozs7STtLLHVCLE07SyxPOzs7SSxPOzs7O0k7O0ssTzs7O0ksTzs7O0k7O0ssTzs7O0ksTzs7OztJOzs0QixPOzsyQjs7NkI7OztPO08sTzs7NkIsTztlOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7STtJLE87OzRCLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O2tCLFM7O0ksZ0MsTztJLFc7OztJOzs7O0ssTztLLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7O0ssTzs7Ozs7OztLLE87SSxvQjtJLFc7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SyxXO0k7Rzs7SSxjO0k7RzswQyxTOztJO0ksVztHOztJLHdCO0c7O0ksd0I7Rzs7STs7OztLLFk7STs7Ozs7eUI7OztPOzs7USxROzs7Ozs7NkM7OztPOzs7USxVOzs7Ozs7OEM7OzsrQzs7OzhDOzs7Tzs7USxPO3lCOzs7NkM7Ozs4Qzs7O087O1EsTztRLHNCOzBCOzs7Tzs7USxPO1Esc0I7MEI7Ozs7O3dDOzs7O0k7OztJLGU7STtHOztJLGM7STtHOztJO0ssa0IsTztLLFc7OztJLG9CO0ksVzs7O0k7O0s7O007O1M7VTtVO1UsTztVLFM7Uzs7SyxXOzs7SSxvQjtJLFc7OztJOztLLE87SyxPO0ksb0I7STtLLFk7SyxXO0s7SyxPO0ssZTtLO0ssTztJLG9CO0ksaUI7STs7Ozs7Ozs7Ozs7Rzs7SSwwQyxPO0kscUI7OztJLGlCLE87SSxvQjtJO0ssZTtLO0ssTztLLHFCO0k7Rzs7SSx3QjtJO0c7O0k7O0s7Ozs7TSxPO00sTzs7OztJO0c7O0ksSSxVLGdDO0k7Szs7O3dCLFc7OztTLHNCOztLOztJLG9CO0ksSSxZLHlDOzs7Ozs7Ozs7O3lCOzs7Uzs7VSxPO3lCOzs7Uzs7Ozs7OzthO2EsZTtZO1UsUTtVLE87O3lCOzs7Uzs7OztVLE87OEI7OztTOzs7VSxPO1Usc0I7eUI7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0k7Rzs7O0s7O3dCLFc7O1E7OztTLE87UyxPO1EsVzs7USxnQixPO1EsVztnQjs7STtJO0ksb0I7STtLLFk7SyxVO0s7Ozs7OztROzs7O1MsUTs7OzRDOzs7UTs7Ozs7UyxPO1MsVTs7OztROzs7UyxPO1MsTztTLHNCO1MsTzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87aUM7OztROzs7UyxPOzJCOzs7UTs7Ozs7O1k7OzthOzs7WSwyQjtXO1MsVztTLE87Ozs7O1k7Ozs7Ozs7eUI7OztROzs7OztTLE87eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7OzZDOzs7UTs7O1MsTztTLHNCOytCOzs7UTs7Ozs7O1MsTzt3Qzs7O1E7OztTLE87eUI7OzswQzs7OzBDOzs7Ozs7eUI7Ozs7O3lCOzs7UTs7Ozs7O1MsTztTLE87UyxPOzs7WTs7Ozs7Ozs7O1E7OztTLE87eUI7Ozs7Ozs7STtHOztJLGlCLE87SSxvQjtJLGtCO0k7Rzs7SSxpQixPO0k7Rzs7STtLLGdCO0s7SyxPO0ssWTtJO0c7O0ksSSxVLGdDOzs7b0M7O087OztRLFE7Ozs7Ozs7O2lCOzs7O3FDOztzQzs7c0M7O3NDOztPOztRLE87dUI7OztzQzs7c0M7O3NDOzs7O3NDOzs7Tzs7USxPO3dCOzs7Tzs7USxPO3dCOzs7O0k7Rzs7SSx3QjtHOztJLFk7O0ksa0I7OztJLEksVSxnQzs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRLE87dUI7Ozt3Qzs7OztJO0c7O0k7O3dCLFc7O3VCLFc7OzBCLFc7O3lCLFc7ZTs7OztJLGdDLE87STtHOztJOzs7SyxNOzs7SSxXO0c7O0ksOEI7OztPOzs7OztXO1csYztVO1EsTzs7O1c7VyxrQjtVO1EsTztPOztPLGtDLE07TyxXOztPLGdDLE07Tzs7Tzs7OztRLE07TyxXOzs7O0ksSSxVLGdDOzs7OztxQzs7Tzs7O1EsTTs7OztPOzs7O1EsTTtRLE07dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0k7Rzs7SSxjO0k7Rzs7SSxJLFMsZ0M7OztPOzs7O1EsTTtpQzs7OzJDOzs7Tzs7Ozs7O1EsTTtRLE07USxvQjtRLE07NkI7OztPOzs7USxNO1EsTTtRLG9CO1EsTTtzQjs7O087Ozs7O1EsVTs7O1EsTTtRLE07USxvQjs7Ozs7Vzs7OztPOzs7Ozs7USxNO1EsTTtzQjs7O087OztRLE07c0I7O0k7Rzs7SSxJLFksZ0M7OztPOzs7O1EsTTtvQzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJO0c7O0k7SyxZO0s7SyxNO0ssYztJO0c7O0k7OztxQzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7O0k7Rzs7SSxJLFcsZ0M7Ozs7OztTOzs7O1UsTTtpQzs7O1M7O1UsTTswQjs7O1M7Ozs7VSxNO3FDOzs7Uzs7O1UsTTswQjs7O1M7Ozs7VSxNOzsrQjs7Ozs7OzBCOzs7Uzs7OztVLE07O2dCOzs7Ozs7OEI7OzswQzs7Ozs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOztLOzs7O00sTTs4Qjs7c0M7STtHOztJOzs7OzsyQjs7d0M7STtHOztJOztLLFc7OztJLGdCOzs7STs7Ozs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztRLE07c0I7OztxQzs7O0k7Rzs7SSwwQyxNO0kscUI7OztJOzs7O0ssTTtLLE07SyxNO0ksVztHOztJO0ssUztLLFU7STtHO3dCLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7SSxPO0c7O0k7O3NCOztzQjs7c0I7O3NCOztzQjtnQzs7RztHLEksc0I7O0k7Ozs7O0c7O0k7Ozs7Rzs7STs7Rzs7STtJO0c7O0ksRztLLE87STtJLFU7STtJO0k7STtJO0k7O0c7O0k7STs7Rzs7STtZOztJO0c7O0k7O0ssSTt3QixpQztLO00sSzs7Ozs7Szs7O087O1E7O1c7Ozs7Ozs7OztjLEc7ZTtlOztjOzs7Ozs7OztjO2M7Yzs7O2MsRztlO2U7O2M7O2U7ZTtlOzs7O2U7ZTtlO2U7ZTs7OztlO2U7ZTtlO2U7O2M7YztzQjs7VyxHO1k7WTs7VztXOzs7OztjOzs7OztZOzs7O2dCLE87ZTtZO1k7WSxRO1k7WTtZOzs7TztPOzs7O00sSTs7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLE8sbUM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3lCLFc7OzJCLFc7O3lCLFc7OztPLHFCOzswQixXOzsyQixXOzsyQixXOzsyQixXOztHO0c7MEIsTywyQjs7SSxTOztLO0ssRzs7O00sSztPLE07TSxZO007TztPLEc7USxJOzs7Ozs7OztLO0k7STtLO0ssMEIsTywyQjtJLE87Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7O0k7Ozs7O1M7Ozs7aUI7OztTO1U7WTtVLE07VSxNO1UsTTs7O2U7O1UsTTtVLE07VSxNOztVLE07Ozs7Ozs7Ozt3Qjs7Ozs7d0I7Ozs7O3dCOzs7Ozt3Qjs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87UTtLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxtQixPLDhCO0c7O0k7b0IsZTtJLE87Rzs7O0s7SztNLG9COzs7SztJO0ksTztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7OztTOztVLFk7VSxvQjtTO1U7VyxPO1c7Ozs7Ozs7OztTOzs7OztVOzs7O1U7Ozs7Ozs0Qjs7OztTOzs7VTtVLE07Uzs7OztNOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7O1E7O1M7UyxvQjtROzs7SztLLE87STtJLGdDLHFDO0k7SztLO2tCOztNOzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt1QixPOzt1QixPOzt1QixPOzt1QixPOzt1QixPOzt1QixPOzt1QixPOytCLE87O0c7O0k7b0M7OztJO0k7OztPO08sTzs7Tzs7USxvQjtPO08sTztlOztHOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7VTtXOztJO0c7O0k7OzBCLFc7O3VDOztPLGtDO087O0c7OztJLGdCOzs7SSxZOzs7Ozs7O087OztROzs7Tzs7Ozs7SyxZO0s7SztJO0k7STtHOztJOzt5QixXOzt5Qjs7dUQ7O3lCOzsyQixXOzsyQixXOzs7TyxXOztHOztJO0k7Rzs7SSxXO0ksTztHOztJLG1CLE87SSxPO0c7O0k7SyxNO0ssUTs7O0c7O0k7SyxNO0ssUTtLLE87SSxPOztHOztJLEksTSxtQzs7Ozs7O21COzs7Tzs7O1EsTzs2Qjs7O3FDOztPOzs7USxPOytCOzs7d0M7OztzQzs7cUM7O087O1EsTzttQjs7O3NDOztxQzs7Ozs7O1c7VyxPO1U7b0I7Ozs7Ozs7VztXLE87VTtvQjs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7OztLOzs7O00sTztNLE87SyxXO0k7SSxJLFc7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7Ozs7Rzs7STs7SyxrQixPO0ssVzs7SSxvQixPO0ksVztHOztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssTTtLLFE7Szs7SyxPO0ssTztLO0ksTzs7Ozs7Ozs7O0c7O0k7SyxNO0ssUTtLLE87SztJLE87Ozs7Ozs7O0c7O0k7SyxRO0s7SyxPO0ssTztLO0s7O0ksb0I7SSxlO0ksTzs7Rzs7STtLLFE7SyxPO0ksTztHOztJO0ssTTtLLFE7Szs7Szs7OztNLE87TSxPOzs7O0k7SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1ksTzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLHdCOzs7Ozs7Ozs7OztXLEc7Ozs7c0I7Ozs7Ozs7Uzs7VSxPO3FCOzs7O1M7VTs7Ozs7O2M7YyxXO2E7VyxPOytCOzs7Uzs7VztZLE87WSxPO3VCOzsyQzs7Ozs7OztVOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7OztTOzs7VSxPOzRCOzs7Ozs7OzthOzs7YyxPO2E7WTtxQjs7O1M7O1UsTztxQjs7O3VDOztvQzs7eUM7OztTOzs7VSxPO3FCOzs7O0ksTztHOztJOzs7O0ssTztLLE87SyxPO0ksVztHOztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7O1c7OztZLE87cUM7Ozs7O1U7O1csTztzQjs7VSwwQztVO1c7WSxPO1ksTztXLEs7VyxJOztVO1csTztXLE87VzthO1csTzs7Ozs7Yzs7Ozs7OztROzs7Ozs7WTtZLFc7O1ksc0I7VztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7OztTLE87UyxPO29COzs7UTs7UyxPO29COzs7O1E7O1U7VyxPO1csTztzQjs7d0M7Ozs7Ozs7O1E7OztTLE87NEI7OztROzs7Uzs7O1k7K0I7O1ksb0I7VztTLFM7UyxPOzs7O1k7OztROzs7UztxQjs7O1E7Ozs7UyxPO1M7cUI7OztROztTLE87cUI7OztROzs7O1MsTztTLE87UyxPO3FCOzs7UTs7O1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7Ozs7UyxPO1MsTzs7d0I7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2EsTztZO1c7cUI7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJO0ssTzs7STtLOzs7O00sUTtNLFU7Szs7OEM7OztROzs7UyxPO1MsTzsyQjs7O1E7O1MsTzsyQjs7Ozs7cUI7O0ssTzs7SSxPO0c7O0k7O0ssVztLLFc7SztJO0c7O0k7O0s7SyxjO0k7SSxXO0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLOztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE87Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixPO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7Ozs7USxNO087O1EsTTttQjs7OEM7O0ksTztHOztJO0ssTTtLLFE7Szs7O08sTTs7d0M7OztPOzs7O1EsTTs2Qjs7O087Ozs7OztXO1csVzs7VyxzQjtVO1EsTTttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7MkIsTyxrQztTLFM7NEI7Ozt3Qzs7SSxPO0c7O0k7O0ssTTtLLE07OztJOzs7OztNLG1DOzs7O0ssVzs7Rzs7STs7OztLLE07SyxRO0k7Szs7OztNLE07OEI7O3FDO0ksTzs7O0k7Ozs7SyxNO0ssUTtJOzs7O3dCOzt1QztJLE87OztJOzs7SyxrQzs7STtHOztJO0ssTTtLLFE7Szs7O087Ozs7MEIsTyxrQztRLE07d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qzs7Ozs7Tzs7O1EsTTt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCOzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0Isb0I7O0k7O087O087O087ZTs7RztpQywwQjs7STtJLFc7STtLLFU7SyxPO0s7Tzs7Z0I7O0k7Rzs7SSxJLFE7Ozs0Qjs7O0k7Rzs7STs7OztXO1c7Ozs7NEI7OztJO0c7O0k7O087O087O087O087O087O087O087ZTs7RztpQyxXLGlDOzs7OztJOztPLGlDO087O08scUM7Tzs7Tzs7O1EsTztRO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O08scUM7Tzs7Rzs7STs7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7OztrQjs7cUIsTzs7TTtNOzs7O0ksTztHOztxQixPLHlDO0ksMEI7STs7Tzs7O1E7O1c7O1E7O1c7O08sTzs7O08sTzs7Tzs7OztROztPLE87OztPLE87O0c7OztJLE87OztJOzs7O0ssTztJLE87Ozs7SSxXO0ksUztJO0ssTztLLE87SyxPO0ksTztHOztJOzs7O1EsZ0I7b0IsVzs7OztRLFc7O1E7OztTOzs7OztRLGtCOztTLFc7OztHOzt5QixxQjtJLE87Rzs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7O1M7O1UsTztVLE87VSxPO1MsRyxpQztTO1U7VTs7Ozs7Ozs7O1M7Ozs7O1k7O2E7Ozs0Qjs7WTs7WTs7Ozs7Ozs7WTs7O2E7Ozs7OzthLFU7Ozs7Ozs7OzthO2MsVzs7O2MsYzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7ZTs7Ozs7Ozs7Ozs7b0I7Yzs7Ozs7Ozs7ZTs7Z0I7OztnQjs7O2dCOzs7O2U7Ozs7OzthOztZO2E7OzthOzs7YTs7OztZOzs7Ozs7OztVLEcsZ0M7VSxXO1U7OztXO1ksTztZLE87WSxPO21CO1U7O1MsSSxXOzs7Ozs7O1k7Ozs7O1M7c0Q7Uzs7VTs7Ozs7Ozs7Ozs7O3dCOztTOzs7Tzs7USxPO1EsTztROzsyQjtPO1E7UTtPOzs7SztNO007TTtLOzs7O0k7O007Ozs7O08sUztPOzs7Ozs7Ozs7UTs7UyxVOztpQjs7OztpQjs7O087O1EsUTtRLFU7O2dCOzs7TTs7O3NCO0k7Ozs7STs7Syw0Qzs7SSxhO0k7Rzs7STtLLE87SyxVOztLOzs7TTs7SztLO0k7O21COzs7Ozs7Ozs7Szs7OztROzs7TTtPOzs7TyxNOzs7Ozs7OztLOzs7YTtNO0s7STtJO0ssVTs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7O0s7O3dCOzt3Qjs7d0I7Ozs7SztNOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCLEk7Ozs7Ozs7OztNO007OztJOzs7OztJLGE7STs7Ozs7O0s7Ozs7Ozs7UztTLDBCO1MsVTtTO1U7VyxPO1c7aUI7Ozs7Ozs7OztTO2lDLHFCO1UsTztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7eUI7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07OztnQyx1QjtzQjs7Ozs7Ozs7Ozs7UztVOzs7Ozs7Ozs7O1M7Ozs7VSxPO1M7Ozs7Ozs7O1M7VSxVO1U7Ozs7Ozs7Ozs7Ozs7O1U7O1c7Ozs7Uzs7OztTO1U7WTtVOzs7Ozs7Ozs7O1M7Ozs7VSxVO1UsVzs7O1U7WTtVOzs7Ozs7Ozs7O1M7Ozs7VSxRO1UsUzs7VTtVO1k7Ozs7Ozs7O0ssTTs7O0k7Szs7TTs7OztJOzs7O0k7Szs7Ozs7Ozs7Ozs7OztLLE87SyxPOzs7STtZOzs7Ozs7O0k7STs7O0s7TTs7STs7Ozs7O087OztLOzs7Ozs7Ozs7Szs7OzswQzs7STtHOztJO0k7Ozs7Ozs7O0ssc0I7Szs7RztHO0k7STs7STtLO0s7Ozt3QjtJLE8sVztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLFk7TTttQjtPOztRLFE7Tzs7OztPOztRLFE7USxRO087O00sWTtNOztLOztJO0ssUTtLLE07STtHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0csSTs7STs7Tzs7Tzs7Tzs7O1E7UTtxQyxZOzs7O1M7OztVLE07VSxNO1MsRyx3Qzs7a0I7O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7TTs7Tzs7O1U7VyxRO1csUTtVLE87UztPLFE7TyxRO007O3NCO0s7O00sUTtNLE07TTtNLE07TSxNO0s7O0k7Rzs7STtLOzs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7OztLOztJOztLLFM7SyxXO0s7SztJLE87Rzs7STs7O0s7OztJLE07Rzs7STs2Qzs7SSxNO0c7O0k7Ozs2Qzs7SSxNO0c7O0k7O3VCOzs7SyxNOztJLE07O0c7OztJOzs7OztNOzs7SztNLE07OztnRDs7SSxNO0c7O0k7O0ssTTs7O0k7Rzs7STt1Qjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O007OztPOzs7O3FCOzs7USxNO087OztRLG1COzs7Ozs7SSxNO0c7O0ksWSxPOzs7OztPLE87Ozs7TyxPOzs7Ozs7Ozs7TyxvQztPLE87OztPLHNDO08sTzs7Ozs7STtLLE87STs7O0k7Ozs7USxnQztRLE87OztRLG9DO1EsTzs7O0ksTzs7O0ksWTs7Z0I7O0ksTztHOztJLGM7eUIsOEI7SSxLO0ssTztJO0ksTztHOztJLGM7eUIsOEI7SSxLO0ssTztJO0ksTztHOztJLFE7bUI7Rzs7SSw4Qjs7O087O1E7USxzQjs7Tzs7Ozs4Qjs7O21CLGU7Ozs7Ozs7O087OztRO1Esc0I7UTtPOytCOzs7O2UsTTs7Rzs7OzttQjs7O007OztPO08sc0I7TztNOzhCOzs7OztLLG9COzs7Ozs7bUIsTTs7SyxHO29COzs7Ozs7OztJO0ksTztHOztJOzs7SyxPO0ssTztJLE87Ozs7STtLO2lCLE07Ozs7Ozs7OztLOzs7OztVO1csUTtXO1c7VzthOzs7Ozs7Ozs7O1U7Ozs7VTs7O1c7O1csTTtVOzs7VztXOzs7Ozs7Ozs7Ozs7OztXOzs7WTs7Ozs7Ozs7OztXOzs7WTs7Ozs7Ozs7O1MsZSxVO3VCLE07Ozs7TSxNOzs7Ozs0QixPOzs7O0c7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7WSxPO0k7SSxpRDtJOzs7O0s7SSxPO0c7O0k7OztLLHFCLE8sZ0M7O1ksTztJO0k7Rzs7STt3QztJO0c7OztLOzs7TSxPO00sTTtNO00sTztLLE87Ozs7Ozs7Ozt3QjtJO0ssTztLLFMsVztJLE87Rzs7O0s7O1E7Ozs7O0s7STtJO0c7O0k7SyxJLFM7Szs7Ozs7Yzs7Ozs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxPO0ksTztHOztJLCtDO3lCLG1EO0k7SyxPOztLLGdCO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLOzs7Ozt3QixPLDRDO00sTztLO2E7Ozs7O2lCOzs7TTs7TzsrQix5QztNLE87O0s7O007Ozs7Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7Szs7Ozs7OzttQjtNO087TyxJOzs7Ozs7Ozs7STtjO3NDO0c7O0ksUTtJLFc7MEIsTyxzQjtJLFc7SSxPO0c7O0k7O087O1E7UTs7USxPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7UTs7UTtVOzs7Ozs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7OztRLEs7USxLO1E7USxPO08sTzs7Ozs7Ozs7Ozs7Rzs7STtLLFE7Ozs7STtLOztJLHdCLE87SSxPOztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7OztLLE87O0ssTztJLE87Ozs7STtHOztJO0ssTzs7SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7O0k7O08scUI7bUI7O08sVzs7O087Ozs7O1E7OztPO1EsTzs7OztPOzs7Tzs7USxVO087OztPO1EsTzs7OztPOzs7OztJOzs7OztJOzs7Ozs7Ozs7O2U7O0ssZTs7SztJO0k7SztLO0ssTztLO0s7O0ksTzs7OztLOzs7TTtNO08sTztPLE87TztNLE87OztNLE07O0s7OztROztROztTOzs7OztjOzs7ZSxPOztlLE87YyxPOzs7O1M7Uzs7Ozs7WSxNO1csc0I7Vzs7OzswQzs7OztXOztZLGU7Vzs7Ozs7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7UTs7O0k7SSxPO0c7O0k7O08sb0I7TyxPOzs2Qjs7TyxnQyxpQjtPLE87Ozs7OztrQjtrQjs7Tzs7UTtRO1E7USxzQjtPLE87O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7USxzQjtPLE87O0c7OztJOztLOztROztTLFE7Ozs7Ozs7Ozs7OztXOztZO1k7WTs7OztxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7b0I7OztRLG1COztTLE07OztvQjs7SyxhO2tCLHNCOzs0QixPLHNCO00sTztLO0s7STtJLE87Ozs7SztNOztPO08sVztNLFc7O3FDOzs7Ozs7OztNO08sYzs7TyxPO007Ozs2QjtNOzs7Ozs7VSxpQjtVLE87Ozs7Uyx1Qzs7OztrQjtTO1U7VSxzQjtVO1UsTztTLE87Ozs7TTtPLGU7O087TTtNO087TztPO08sTTtNLE87Ozs7Ozs7O0s7SyxXO0k7SSxPO0c7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STs7O1EsTTtPOzs7O0s7SyxHO00sTTtLLE87STtJO0ssTTtLLE87O0s7OztNOzs7TSxPO007O1M7Ozs7Ozs7O0ssTzs7Ozs7STtJLGdCOztHO0k7STtJO0k7O0k7STs7O0c7O0k7SSxXO0c7OztJOzs7OztJLFE7O0ksRztLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLLFc7Szs7Ozs7SyxlO0ssTTs7Rzs7STtLLE87SyxxQjs7Rzs7O0ssbUI7O007TTs7O00sTTs7Szs7TyxnQjtPLE07O007TSxNOzs7OztNOztPO007O0k7SSxPO0c7O0k7O0k7Rzs7d0IsdUM7SSxPO0c7O3lCLGtCLE8seUI7SSxXOztLOzs7TSxJO00sUTs7O1M7TztPOzs7SyxNO0k7SSxPLFc7Rzs7STs7SyxZOzs7TSxPOztLLE07STtJLFc7STtHOzt5QiwwQztJLE87Rzs7OztLO0k7STs7Ozs7O08sTTs7O0s7Ozs7OztRLGdCO1EsTTs7TztRO1MsTztTLE87Ozs7OztRO1M7VSxPO1UsTzs7Ozs7Ozs7OztVOzs7Ozs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087USxzQjtRLE87OEIsZTtRLFc7USxPO087O087OztRLFU7Ozs7O1E7Ozs7O2tDLFM7bUI7Ozs7OztPO1U7USxXO1EsTTs7O087USxzQjtRLE87USxTO1E7Ozs7O2dCOzs7O087USxPOzs7VztXO1ksVztZOzs7OztZLGtCLFE7WSxNOzs7VTtPO087OEIsZTtRLE87USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7Ozs7O2dCO3NDO2U7YTtlO2E7WTs7O1c7O1EsZ0I7UTtrQywwQjtRLFc7UTs7O2E7OztXO1csTztVO1EsUTtPLG1DOzs7OztRO1MsVTs7Ozs7OztTOzt3QixNO1UsdUIsVTs7OzthOztjLFM7Ozs7Ozs7OztTLEc7VTs7VTs7Ozs7USxNOzs7OztROzs7OzJDOzs7Ozs7MkI7OytCOztTO1UsVTs7O1M7Ozs7OztTO1MsTTs7OztVO1EsVztRLE07OztPO1Esc0I7USxTO1EsVztRLE87OztXO1csSSxXLHdDOzs7OztZLGtCLFE7WSxNOzs7VTtPO087OEIsZTtRLFU7USxPO1EsTztRLFU7Ozs7O3FDOzs7OztXOztZLE87OztlOzs7Z0IsUTs7OzsyQzs7Ozs7ZTtjO1ksVztZO1k7Yzs7bUI7Ozs7UTs7TyxNOzs7Tzs7UztVLE87Ozs7OztTO1UsTztnQjs7UTtRLEk7Ozs7O1Msc0IsUTtTLE07Ozs7Ozs7OzJCO1E7O1M7O1E7USxJOzs7O1Msa0IsUTtTLE07Ozs7UztTOztRO1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WSxHO2EsTTs7WSxJLG9CO1ksRzs7O2EsSSxJLE87Ozs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Vyx1QiwwQjs7OzthOztjO2M7YyxVOzs7Ozs7Ozs7Ozs7YTsyQjs7YTtjLE87YyxVOzs7Ozs7a0IsTTs7Ozs7O2lCLEc7a0I7bUIsSzs7O3NCOzs7dUI7O3dCLEs7eUIsWTs7b0Q7Ozt5QixNOzs7Ozs7c0I7cUI7a0I7Ozs7OzthLE07Ozs7O1k7OztnQixvQjtnQixPO2U7YSxLOzs7YTs7YyxLO2U7cUMsYztnQixRO29COzs7Ozt5Qjs7O2MsTTs7O2tDOztzQjs7WTs7O1c7VTtRLFU7UTtxQyxpQjtRLE87USxXO087Ozs7O1ksZTs7YSxNOztZO1c7UTs7Tzs7OztXLE87O1U7UTtRO1U7YTs7UTtRLE87Tzs7Tzs7OzJCLFk7USxTO087TyxJLHlDO29CO08sSSx3Qzs7TztPO087UTsyQixPLGdDO1EsWTtRLFE7UTtPO087O087Ozs7UTs7O1E7USxRO087Tzs7O1c7VztVO1EsTztRLFM7OztXO1c7VTtRLG9CO1EsUTtPOzs7TyxNO2tDOzs7O0ksVztJLFc7SSxZOztLOztNLFU7Ozs7O00sTztLLFc7Szs7O1Msd0IsUTs7O1UsYzs7UztRO00sVztNOztTO0s7SyxPOztJLE87Rzs7STtJLE87Rzs7RztJOzs7SSxJLFk7O0s7OztNO00sTztLLEksbUMsSTtpQjtnQjtLOzs7O29COzs7Ozs7Ozt5QjtNO08sTTt3Qzs7TTs7O087OztJO0k7O0k7Szs7TTtNLEksVyxvQzs7Ozs7TyxNOztLO0ssTyx3QztHOztJOzs7SSwwQjtJO0k7STtHOztJOzs7STtJLEksaUM7OztLO00sTztNOzs7O2E7Ozs7STtJO0k7STtJOzs7SyxZOzs7UztPO087OztLO0k7SSxZO0k7STs7OztLLE87SyxPO0k7Rzs7STs7STtJO0k7STtJO0k7SSxnQjtHOztJOzs7O0s7Szt5QixZO00sUztNO007SztLO0s7Szs7STtJO0k7STtJO0c7O0k7SyxPOzs7Tzs7UTs7VyxPOzt5QjtVO1E7VTs4QixPLGtDO08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Tzs7USxvQixPLHlDOzRCLE8seUM7TyxPOzt5QixPOzs7TyxPOzs7Ozs7O1c7VztZLE07O1ksTztXLE87Ozs7Ozs7Ozs7VTtPLE87OztPO08sWTs7OztTOztVOzRCLFcscUM7UyxPOzs7Tzs7O08sTzs7Ozs7Ozs7O08sTzs7O087TyxHO1E7ZTtROztRO08sTzs7O08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87Ozs7OztXLFksTzs7VyxPO1U7TyxPOzs7TyxPOzs7O0k7Szs7OztNLHlCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztxQixPOzt1QixPOztxQixPOztxQixPOzt1QixPOzt1QixPOytCLE87O0c7O0k7O0s7OztNOztLO00sTztLOztRLE87O1EsTzs7USxPOzs7OztLLE87OztPLG9CLE87TyxPOzs7TyxPOzs7TyxvQjtPLE87O087O1EsNEI7TyxPOzs7Ozs7USxPOzs7Tzs7OztROzs7OztTLE87Ozs7Ozs7Ozs7O1E7cUM7USxPOzs7O1E7NEIsbUM7UyxPO1MsNEI7UyxPO1EsTzs7O087b0M7TyxPOzs7cUIsTzs7TyxPOztPOzs7MEIsK0M7USxlO08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7OztPOztRLDRCO08sTzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksdUI7SSxPOzs7O0ksWTs7OztLLE87Ozs7Ozs7Ozs7O0ksTzs7OztJLE87Rzs7STtJLFU7SSxPO0c7OztLO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7STtJLE87Rzs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0k7Ozs7c0IsaUQ7O3dCLGE7SSxPO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7Szs7Rzs7STs7Ozs7Ozs7OzsyQjs7OztPOzs4QixvQixXO1EsTzs4QixvQixXO1EsTzs7Ozs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLE07VyxRO21GO1UsTTtTOzs7Ozs7Ozs7OztJO0c7O0k7Ozs7eUI7O087O3lCLE87OytCO2lDOztHOztzQix5QztJOzs7Ozs7UTs7Uzs7Ozs7Ozs7UTs7OztZO1k7VztTLE07Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7RztHOzs7Ozs7SSxNO0kseUI7O0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7OztZOztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLO0k7STtLOzs7UztnRDtTO1E7TSxZOzs7OzRCOzs7SSxvQjtJLE87Rzs7eUIsd0IsWTtJLE87Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7UTtTO1M7Ozs7O1E7UztTOzs7OztRO1M7Uzs7Ozs7OztPO1E7UTs7Ozs7Ozs7TyxXO08sVzs7TTs7O087Tzs7Ozs7O0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzs7Ozs7Ozs7Ozs7Ozs7aUI7OztrQixPO2lCOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUIsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQjs7O2lCOzs7Ozs7Ozs7Ozs7OztpQjs7a0IsTztrQixPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7UyxnQztTLFM7Ozs7OztRLGtDO1EsUzs7Ozs7TTs7STs7Szs7O08sa0IsTzs7Tzs7O21CO0s7STswQjs7SztLOzs7UTs7Ozs7UztRLFc7Ozs7O3NCO007O0k7STs7MEIsMkM7Rzs7OztJOztJO1c7O2M7Rzs7STtLO0ssTztLLFE7eUU7SSxNO0c7O0k7Ozs7Ozs7Ozs7OztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7Ozs7OztXLE87Ozs7Ozs7Ozs7Ozs7aUI7Ozs4Qzs7STtHOztJO2tEO2lEO0ksTztHOztJOzs7Ozs7Ozs7O2tDLE87O2tDLE87Ozs7eUMsTzs7Tzs7TTs7Ozs7O1E7O1E7O1MsTTtTOzs7WTtZO2E7OztpQjs7Z0I7YyxNOzs7Ozs7OztZO1c7USxPOztJO0c7O0ksWSxrQzs7Ozs7OztrQjtNLDRDOzs7Ozs7O1U7O1c7OzsrQiwrQjtjLE87YTtXLFM7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7OztZO1k7O3NCOztZO1c7UTs7O21COzs7Ozs7UTs7Uzs7O1E7O2dCLE87O1E7O2dCLE87O0k7RzsyQiw0Qjt5Qyw0Qjs7O0s7SztNO08sTztPLE87O087Ozs7UTs7Ozs7TSxPOztlOzs7Ozs7STtJO0c7O0ksWTs7O0ssTTs7SSw4QiwwQjtJO0c7OztLO0s7b0I7Ozs7Ozs7O007TztPO2U7Ozs7OztJO0k7Rzs7O0ssVTtLO0k7O0ssWTs7Szs7Ozs7O007TTtLO0ssTztJOzs7Ozs7Ozs7Ozs7Ozs7OztNO08sWTtPO1M7OztVO1Usa0I7UztPLFUsVztNOztLOzs7Ozs7O007SztNO087Ozs7O0s7TTs7OztHO0c7O0ksbUI7SSx1Qzs7SztNLE07O29CLFc7O0s7STs7Z0IsVzs7STtHO0csbUI7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7Ozs7YSxrQjtpRjthLE07WTtVLFM7VSxNO1MsZ0I7VTtXLE87OztjOzs7ZSxROzs7O2UsTzs7YzthO1UsTzs7UyxXO1MsVztTO1UsTzs7O2E7OzsyQjtrQztZO1MsTzs7OztNOzs7TSxNOztJO0c7O0k7Ozs7OztLLE87STtnQjs7Ozs7O0c7O0k7SyxNOzttQjtJLG1CO0k7Rzs7SSxZOzs7SztNO08sVTtPLFU7Ozs7O1E7Uzs7eUM7O21COzs7TTs7Ozs7TyxPOzs7O0ksTztHOztJO0c7OztJOztLO0ssaUI7O0ssVztJO0ksYTt5Qiw4QjtJO0ssUTs7O0ksTztHOztJOzs7bUQ7SztNOzs7Ozs7Ozs7O1M7MkU7UyxPO1E7TSxlO007TSxTO0ssZ0IsTTtLLDBCO0ssa0I7O0k7Rzs7eUIsa0IsTyx1QjtJLEksTTtJO0ssSzs7TSxnQjs7SyxJLE07O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7O2tDLGtCLFM7VSxxQjs7OztVLGtDO1UsUzs7Ozs7Ozs7Tzs7Ozs7Szs7Rzs7STtJO21CO0ssc0M7SyxXOzs7Rzs7STtJO2lCO2dCO0s7OztNLE87TSxPOztNO00sd0M7TTtPO087OztNOzs7O1csa0M7c0I7VztXLHdCO1U7TyxPOzs7Ozs7O087Ozs7UTtPLFM7TyxJOzs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTOzJCLGtCO1MsTztRO007Ozs7Ozs7OztVO1UscUI7VTtXO1c7MEM7VyxNO1Usb0I7VSxPO1M7UyxXO1MsTztRO0ssMkI7OztNO087TztNLE87O0s7Ozs7Szs7OztNO007SyxPOzs7O0ssb0I7O0k7SztLLFU7OztLO0ksaUQ7STtLO0s7SyxPO0s7OztLLE87SSxvQjtJLE87Rzs7STtJO3dDLFU7Szs7O00sTztNLE87O007Tzs7VTs7OztZOzs7VTtTO087Ozs7TTs7OztPO00sUztNLEk7OztNO087TyxVOzs7TztPLE87Tzs7OztHOztJO0ssVztLLE87OztlO2U7STs7O0ssTzs7SztNOztPOzRCLHFCO00sTzs7Szs7TSxXO00sTztLO0ssTztJO0ksTyxXO0c7O0k7SSx3QztJO0s7Szs7O0s7O2tDLHVCO00sTztNLE87TSxPOzs7Uzs7Ozs7VSx1QjtVO1c7Vzs0QjtXLE07VyxzQjtVLE87O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOztpQjs7O3lCOzs7Ozs7ZTs7Z0I7ZSxHOzs7Ozs7a0I7eUM7bUI7c0MsbUI7Ozs7d0I7OzhEOzt3QixNOzt1Qjs7Ozs7Ozs7a0I7OztzQixrQjs7OzREOztzQixNOztxQjttQixZO21CLE87Ozs7Ozs7O3lDO2tCOzs7Ozs7O29COztxQjs7dUIsTTtzQixTO3NCLEs7dUIsSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7eUM7bUI7OztzQjtzQjtrQztxQjs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7Ozs7Ozs7O2tCO3NDLGM7bUI7O2lDLGUsNEI7Ozs7d0I7Ozs7MEIsTzs7O3dCLE07O3VCOzs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7O3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7Ozs7O3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7OztlOzs7OzttQixrQjt1RjttQixNOztrQjtnQixPOzs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCOzs7bUI7bUIsRyx3QzttQixZO2lEOzs7b0I7OzttQjtrQjtnQixVOzs7Ozs7O29CO21CO3VCOzs7ZSxHOzs7O2dCO2lCLEs7aUI7a0IsUTs7Ozs7OztlOzs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsYzs7ZTtnQixLOzs7O3FDOzs7Z0IsSTs7Ozs7Ozs7Ozs7NkIsTzs7OzZCLHNCO1MsTztRO0ssTyxXOztJO0s7SyxPO3VCLHNCO0ksTztHOztJOztLLDBDO0ssTTtJO0ksTyxXO0c7Ozs7aUI7b0I7SztLLHdDO0s7TTtNOzs7Ozs7OztXLFk7Vzs7O1k7WTtZO1c7VTs7OztNO087O087Tzs7O1E7UyxPOzs7Ozs7USx5Qzs7O1MsMkIsTTs7YztVO1csUTs7Ozs7O1c7OztjOzs7O2UsUTs7OzswQjtjO2E7VyxVOzs7VztXOztXOzt5QiwwQjtZLFc7WSxPO1c7Ozs7Ozs7O087Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix3Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OzsyQixpQjtRLEk7OEIsaUI7USxPO2U7Ozs7OytCLFM7ZTs7OztVLGlDOzs7OztXOzs7Ozs7Ozs7WSxNOztXOzs7WTtZO1k7WTtZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7OzswQjs7Ozs7Ozs7O2MsVzs7eUI7OztZOztXOztVLE07UztNLE87O0s7OztNLE87TSxPOzs7OztVOztXLE07VTs7VyxPO1csTzsyRDtVO1M7TSxHO087UTtRLE07Ozs7TztRO1E7Ozs7Ozs7OztRO1M7Uzs7Ozs7TztRO1EsUTs7Ozs7OztRLHNCOztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztRO1E7OzthLFc7YTtZOzs7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs7OztjOzs7ZSxPO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7OztpQixPO2dCLFc7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7O1U7Ozs7Ozs7O2M7O2U7OztjOzs7Ozs7Ozs7O2M7O2UsTztlLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7STtJOztNOzs7OztPO00sVzs7OztLOztHOzs7OztvQjs7Ozs7cUIsb0IsTyxzQjtNLEc7OztPLEk7OztJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixnQzs7Ozs7Ozs7Ozs7Ozs7O2dCLG1CO2dCOzs7Ozs7Ozs7Ozs7Ozs7Z0IsSztnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQixLO2lCO2lCOzs7Ozs7Ozs7Ozs7Ozs7Z0IsRyw2Qjs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7O29CLFM7NkI7Ozs7Ozs7Ozs7Ozs7cUI7O3FCO29CO29CO21CO2lCO2dCOzs7Ozs7Ozs7Ozs7OztnQixxQixPO21CO2dCO2dCOzs7Ozs7Ozs7Ozs7OztnQixvQjtnQjs7Ozs7Ozs7O1E7Ozs7OztRO1MsTzs7UTs7Tzs7OztPO1EsTzs7Tzs7O0ssTTs7Rzs7STtLO0s7TTs7Ozs7O087Ozs7Ozs7O0s7Ozs7O0ssa0IsTzs7Szs7RztzQjs7STtLOzs7OztNO0s7O0k7Rzs7cUIsNkI7SSxnQjtJO0c7O0k7SyxZOztLO0k7O0s7OztNLFE7OztNO0s7STtJO0ssUTs7O0k7STtHOztJO0k7bUI7Ozs7TTs7OztHOztJO0k7bUI7Ozs7TTs7OztHO3dCLE8seUM7Rzs7STs7STtLLE87SyxPO0ksTztHOztJO0ssVTtLLFM7O0s7Szs7Ozs7OztXOzs7Ozs0QixpQjs7O1UsaUI7O1U7Ozs7VztXO1U7VSxZOzs7Ozs7Ozs7O1U7O1U7OztXLFE7VTs7VTs7OztjLGtDO2M7YztjLFc7YTtXLFM7VTs7O1UsaUI7OzhCOztVLGtDO1U7O007O0k7STtJO0c7O0k7SyxLO0ssUTs7Ozs7Ozs7Ozs7bUIsbUI7Ozs7Ozs7UyxJLFU7Ozs7Ozs7Ozs7Vzs7OztlLFc7YztZLFM7Ozs7O1UsTzttQyxhO1csSzs7VTtXO1csc0I7a0I7Ozs7Ozs7O2U7O2lEOztLO007Ozs7Szs7STtLOzs7O0k7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7Ozs7YztjO2E7VSxPOzs7O1U7OztXOzs7Ozs7Ozs7TyxPOzs7OztLOztHOztJLFc7STs7Ozt5Qiw2QjthO0ksVzs7O2lCO0s7Ozs7OztNO0s7TTtPLE87Tzs7Vzs7Ozs7b0IsVztPO087NEI7Ozs7Ozs7Ozs7Ozs7OytCOzs7Tzs7O1E7UTs7O1M7OzthLDBDO2EsTTtZO1UsUTtVO1U7Ozs7VTs7O1U7YyxrRTs7Ozs7Ozs7Z0I7Ozs7OzRCLE8sa0M7UTs7Ozs7Ozs7TSxNOzs7TSxJOzs7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7Ozs7ZTs7YztXLE87O1csb0M7VyxXOzs7OztXOzs7K0IsZTtRLE87Ozs7O007O0k7STtHOztJLEksNkI7O0s7O00seUI7TTs7UztVOzs7O1MsTzs7TSxtQixXO00sUTs7O00sRztPO1E7UyxNO1MsTTtRO1E7Uzs7OztZOzs7O2E7O1k7VztRLEc7UztRLEksTzs7O087Ozs7Ozs7O0ssWTtNOzs7OzttQjtJO0s7OzRCLHVDO00sTzs7Ozs7O1U7O3NDO2EsMEI7VSxlO1UsTztTO007OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O3dCO0k7SyxjO0s7O0s7TztJLE87Rzs7SSxVO0k7Ozs7Uzt1QjtTLHNCOztVOzs7O1k7O2EsTzs7O2dCLFM7O2U7WTs7O1c7Ozs7VyxPO1U7VSxXO1UsVzs7Ozs7Ozs7Ozs7YSxLO2MsTTs7O2MsSzt3Qjs7OzthOzs7O1UsTTtTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOztVLE87VSxPO1UsTTtnQjtVO1c7aUMsc0I7VztnQzs7Vzs7WSxZO2tCO1k7YSxPO2EsTSxXO2E7WTs7OztTO1E7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztLO0ssTztJO0ksSSxRO0k7Szs7O1M7UyxlO1E7TSxZOzs7Uzs7VSxPO1M7UyxPO1E7TSxVO00sTTs7O1U7Vzs7OztZLFc7VyxPLHdDOzs7TSxZO0ssRzs7OztVO1UsTztTO007TTs7OztHOzt3QixTO0ksVTtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7O0ksSSxXLDBDOzs7Ozs7Rzs7O0s7SyxHLHdDO0ssYTtrQjtLLDRCO0ssWTs7OztTOzs7VSxJOzs7VTs7WTtpQjttQjs7UztTOzs7UyxPOzs7UyxlO1M7VTtXLE87VyxvQixPLHFDO1c7Ozs2QixPLGdDO2MsSSxpQjtjOzs7ZTtnQjtnQjtnQjtjLFc7YztlLEs7ZSxPO2UsSztlLE87ZSxPO2UsTztlLE87ZSxPO2UsTztlLE87ZSxLO2U7YztlLEksYzs7O2M7OztlO2dCO2dCO2dCO2MsUztjO2E7VyxPO1U7Ozs7O1U7O1csc0I7VSxPOzs7OEI7OztTO1M7O1MsTTs7Uzs7VSxPOzs7YSxrQixROzs7ZTs7OztpQyxPLGtDO2dCLFE7Z0IsSTtnQixzQjtlLE87OzsrQzs7YTtZO1M7UyxvQjs7OEI7Ozs7O1U7O1k7aUI7Ozs7OzthO2E7WTtTLE87O0s7STtJO0c7O0k7SyxPO0ssTztLLE87SSxPO0c7RyxnQjs7Ozs7OztLOzs7O007b0I7SztJO0k7SyxhO0s7Szs7Szs7OztLO0k7STs7Ozs7UyxLO1U7VSxLO1c7WTs7O2U7ZTtnQixHLDRDOzZCO2dCO2dCLEcsb0M7Z0IsWTs7OztvQixNOzs7b0I7cUIsVztxQjs7Ozs7OztxQixXO3FCLEc7c0IsTTs7Ozs7Z0IsTzs7YztXO1k7WTtZOzs7O21DOzs7OztTO1E7Szs7O0s7TTs7O1M7UztTO1U7VSxROzs7VSxLO1UsTztTOzs7Ozs7Ozs7VSxNOzs7Ozs7O1E7SztLO00sTztNLE07OztTLFc7UyxXO1E7TSxRO0s7TTtPOzs7VTtVLEcsMkI7Ozs7O2dCO1U7UztNO007Tzs7O1UsRywwQztVLGdCOztVO1c7VyxPO1c7OztXLE87cUI7O1U7VSxTO1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1UsVztVLEs7VyxPOzs7Ozs7OztVLE07OztTOzhCLG1CLG1CO007Ozs7Szs7OztNO007Ozs7TSxlOzs7Szs7TTtNLE07OztNO1EscUM7TSxHOzs7Ozs7O2E7Yzs7OzttQztLLFc7SyxPO0k7SSxPOztvQixrQjtHLGdCOztJLHFDLE87OztLO0s7STtJLE87Rzs7Ozs7OztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0MsUTs7Szs7TSxNO00sTTtNOzs7UztTO1UsTTtTLGlDOztVO1csTztXLFE7Ozs7WTthLE07YSxNO21COzs7Ozs7Ozs7UyxRLE07UztRO0s7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7Ozs7Ozs7OztVOzs7Ozs7O1M7TSxPOzs7OztJOztLOztLOzs7O1M7UztRO00sTTtLO3NDOzs7b0IsMEI7SSxHO0s7d0Isd0I7TSxNO00sTTtLO3NDOzt3QixtQiwrQjtJLFc7b0IsdUI7STtLLE07SyxRO0k7Szs7SSxjOztLLE07STs7O0ssTTtLLE87O0ssRyxtQzs7SztJO0ksTzs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7STt3QixvQjtJLE87RztHLGlDLHVDO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7SyxJO2U7d0I7STs7O0c7Rzs7Ozs7Ozs7Ozs7STs7O3NCO0ksVTtJLE87RztxQyxvQzs7SSxlO0ksTztHOzs7Szs7Ozs7O0s7OztJO0k7SyxROzs7SztPOztLOzs7OztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7STtrQjtLO00sTztNLFE7OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2QixPLGlDO08sTzs7TSxjO29COztNLE87Ozs7O00sTzs7O0k7Rzs7RyxnQyxnQjtHLHlCLFM7RyxtQywrQjtHO0k7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtLLGtCO0ssUTt1Qjs7SSxNO0c7Rzs7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7NEIsOEM7OytCLFcsOEI7RyxJLFM7O0k7STtLLFk7bUM7d0I7Szs7O007Ozs7Rzs7SSxXOztLLFk7OztNLGlCOztLLE07STtJLE8sVztHO0c7O0k7O0k7O0k7Rzs7O0ssSSxtQjtLLFc7STtJLE87Rzs7Ozs7OztJOzs7SSxJLFUsbUM7Ozs7OztHOzs7SztLO00sSSw2QixVOztPOztRLE07cUI7OztNOzs7Ozs7O1c7VyxPO1U7Ozs7TSxHO087OzhCLE8scUM7UTtPLE87O007TyxNO08sUTs7TztPO08sVTs7Ozs7Ozs7Ozs7Ozs7WSxNOztZLE07Ozs7Ozs7Ozs7WTs7YSxpQjtZLE87O1k7OzthLE87Ozs7Z0I7Ozs7OzttQjs7OztvQjs7Ozs7Ozs7OztnQixPOzs7YSxNO1ksTzs7Ozs7Ozs7TyxZOzs7Ozs7Ozs7Ozs7O1kseUM7Ozs7Ozs7OztZO2E7OztpQixtQixROzs7O21CLE87OzttRDs7aUI7O2MsTTtjLFE7YyxRO2MsVTs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJO3dCLFM7SSxPO0c7Ozs7SztNLEksVSx5Qzs7OzZCOzs7SztLO00sTztLO0ssWTs7TTs7TyxrQjtPO007O0s7SyxvQjtLLE87Ozs7ZTs7STtLO087Ozs7SyxpQjs7SztNLE07TSxZOztNLE07SztJO0k7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozt1QjtrQjs4QyxTO0ssTzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUIsTywwQztJLE87Rzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHdDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STs7SztLLEc7TSxNO3FCOztJO0k7Ozs7Ozs7OztNO08sUTtPLE07TSxXO0s7SyxPOztJLGE7O0ssbUIsUTs7Ozs7O0ssSSxPLHlCLE87SztJO0ksYTtJO0c7O0k7Szs7TSxPO00sTTtNO3lCLFk7SyxlOztJOztLOzs7STs7OztJO0s7TTs7O0s7O0ksZ0MsSTtJOztLO0s7TTt5QixZO00sTzs7b0I7Ozs7STtLOzs7SyxZO0s7SyxVOzs7SyxHOzs7TztPO087TztPOzs7VyxXO1csTztVO087Tzs7TTtNOzs7STtLLE87SyxZO0ssZ0I7SSxNO0c7OztJO0k7STt5QixvQixjO0ksSSxTLDRDOztLOzs7O00sTztLLFc7STtJO0ssUTtLLFU7SyxRO0k7O00sTTs7Ozs7OztLOzs7UyxNO1E7TTs7O087O087OztNOzs7UTs7Ozs7O3NCOzs7VTs7Ozs7OztXOzJCOzs7VTs7Ozs7Tzs7OztNOzs7UTt3Qjs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TyxvQjtPLFU7Ozs7Ozs7Ozs7Ozs7NEIsNkI7UTs7TTs7SztNOzs7UztTLEc7VSxNOzswQjs7UTtLO0s7TTswQixPLGtDO00sTztlO00sTTtLO007OztVO1csTztXOzs7Ozs7O1c7Ozs7Ozs7OztXLE87VyxPO1c7VTtTO1MsTztRO007TSxPO00sVTs7Ozs7OztLOztNOzs7Szs7O007OztVLGlCLFE7c0I7VSxtQixVOzs7VyxPOztVO1M7TyxRO0s7TTtNOzs7Ozs7Szs7TTtNLE07Ozs7O0k7SyxROzs7O0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7OztNO007SyxJLFcsc0M7Ozs7O00sTTs7STtJO0k7STtLO007TyxPO08sVztPLFU7Ozs7O08sTTs7OztLOztJOzs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7Uzs7O2E7O1MsTzs7Ozs7aUI7Ozs7Szs7dUI7SyxPOztHOzs7Szs7O00sUzs7OztPLE07O00sRztPOzs7STtJLE87Rzs7Ozs7Ozs7TSxtQixVOzs7TztRO1MsUztTLE87O1c7OztTLEk7Ozs7Ozs7UztVLE87VSxPO1UsTzs7WTs7Ozs7UyxNOzs7Ozs7O1MsTTs7OztNLE07OztJOzs7STs7SyxHO00sWTs7OztpQzs7Ozs7O08sTTttQztNLE07a0M7OztNLFc7TSxHOzs7TztRLE87UTs7Ozs7Ozs7O2M7SyxjOzs7Ozs7VTs7Vzt5Qjs7Ozs7Ozs7O0ssZ0I7Szs7TTs7Z0M7TyxzQjtNO00sSTs7Ozs7OztLLGM7Ozs7TSxzQjtNLEc7aUM7Tzs7O087O1Esc0I7Tzs7TTtPO1EsTztRLFE7USxvQjtPOzs7OztpQztPLE87Ozt5QjtLLE87STtJLFc7STtLOztNLHNCO00sTztLOzs7OzhCLE87OztHOztJLEk7O0s7TTtJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VTs7O2M7OztVLE87Ozs7O2tCOzs7O007OztVOztNLE87O0k7OztLO00sUTs7Ozs7SyxvQjtLO0s7STtJLE87Rzs7STs7Ozs7TTtPO1EsTztRLE87USxPO08sSyxpQztPO1E7USxPO1EsTztPO087Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7O0ssRztNLE87OztJO0c7OztLO0s7STtJLE87Rzs7STtJLGtCOztLOztNO00sTztNLGE7TTtNO0s7Ozs7Ozs7OztJO0k7SyxPO0ssZTtLLFE7O0ssSSxPLHlCLE87SyxXO0k7SSxlO0k7STs7Szs7Ozs7Ozs7OztXOztZLE07O1U7Tzs7O007TyxPO2dCOztLLFk7SyxhO0s7Ozs7TSxPO00sTzs7Ozs0Qjs7OzswQixPLDJCO0s7OztTOzs7Ozs7Ozs7Ozs7OztLOztJO0s7TztLO0ssYzs7OztNO087TyxLOzs7VTs7Ozs7O1UsVztVO1UsTztTO007TTs7Szs7Ozs7O007SztLLE87O0k7SyxPO0s7Tzt5QiwrQjtJLFk7O0k7SyxTO0ssVTs7Szs7Ozs7OztVO1c7WSxPO1k7Yzs7OztXOzs7OztZLE87Ozs7UztNLE87Ozs7TTtNO087USxPO1E7VTs7Tzs7Ozs7USxPOzs7SztLLE87STtJO0k7STs7OztTOztVO1U7VSxPO1U7cUI7UyxtQjs4QixPLDRCO1MsYTtTO1U7VyxPO1csTztVOzs7Ozs7VSxNOzs7UTtLOztJO3lCLHFCLDZCO0k7Z0MsbUIseUI7STttQjs7Szs7O007TSxNO3VCOzswQixPLDRCO0s7TSxPO00sTztLO2tDO0k7STs7SyxtQjs7SyxPO0k7O0s7Szs7Yzs7OztJO0k7STtLLHFCO0s7OztjOzs7OztJOztLLHFCLFE7aUI7O0ssTTtJO0k7STtLOztNO007OztNO007SztLOzs7Ozs7USxrQjs7O1M7OztRLE07O08sb0I7O1E7O1M7O1ksTztXO1M7Vzs7O1k7WTthO2MsTztjLFE7Ozs7O2MsTTs7Ozs7O2E7Ozs7Ozs7bUI7a0I7ZTs7Ozs7Ozs7ZTs7OzthLE07Ozs7YTs7WTtXO1E7OztPLE07Ozs7O21CO0sscUI7O00sTTs7Szs7STtJO0s7OztTO1M7UTtNLE87TTtRO1U7TSxPLFc7TTtRLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7Szs7STs7SztLOzs7Ozs7Ozs7OztJO0ksa0I7STtHOztJLEksSzs7OztNOztPO08sUztPLFU7Ozs7TztRLFM7USxNO1EsaUI7Ozs7TztRLFE7OztNLEk7Ozs7O08sTTs7OztPO1EsTztRLE87OztXLFcsbUI7VztZO2EsTztvQjs7O1csYztVO087O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztJOzs7OztLO0k7SSxPO0c7MkIsK0I7OztLLFk7SztLO0s7O00sUTs7O007Ozs7TztROztnQyxpQztTLE07Ozs7Ozs7O08sTTs7O007Ozs7VTtXLFE7OztVO1M7TyxnQjtPLE87Ozs7TztRLE87OztXOzs7OztZO1k7Ozs7OztVO1EsTTtNOztPLE07OztNO087OEIsb0IsYztPLGM7TyxPO08sTztNO007Ozs7Tzs7VTs7O08sZTtNO007Ozs7VTs7UztNOzs7O1UsWTtzQjs7VSxNOztTO007Ozs7VTtXOztjOzs7Ozs7Vzs7Ozs7OztXLE07O1M7TTtNOzs7VTtVLE87UztPLFM7Tzs7Ozs7Ozs7O007O0ssTTtJO0ksTztHOztJLFk7STtJO0k7O0k7STtJO0ksWTs7O0ssTTs7O0k7SztLLFM7STtHOztJO3lCLG1DO0k7SyxROzs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7Szs7Ozs7Ozs7Ozs7SztpQixPOztLLE07O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7a0I7STs7SyxPO0ssUTs7Ozs7O08sRzs7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7OztLLEksTSwwQzs7TTs7Ozs7TTtPOzs7O087Uzs7O087USxPO1EsdUI7Ozs7TyxNOzs7OztzQjs7O007TyxNO007OztVLFc7VTtXLFk7Ozs7YTs7YyxTO2tDOzs7Ozs7Vzs7OztrQzs7O1M7TztTO087OztVLGdCO1UsTztTO007TTtPLE87TyxPOzs7O00sSztPLE07TTtPLE87TyxPOzs7Szs7TSx1QixlO00sVTs7O007SztJO0ksTztHOzs7STtJO0k7SSxJLGdCO3lCLG9CLGM7STtLLFM7SyxRO0s7O0s7Ozs7TSxNO00sUTtLO0k7STtLLGM7Szs7O0s7O00sTTs7Ozs7STtLLGE7O0k7Ozs7O1M7UztVLFc7VTs7Ozs7O1UsTTs7O1E7Szs7O0s7SztNLFc7TTs7Ozs7O00sTTs7STtJOzs7Ozs7OztJOzs7Ozs7YTs7Ozs7Ozs7O0k7SyxPO0ssTzs7O0s7Ozs7Ozs7O1E7Ozs7Ozs7OztLO0k7STtJLGM7OztLLE07OztJO0s7SyxXO0k7Szs7UTs7Ozs7OztLLE07O0k7O087STtLOztROzs7Ozs7O0ssTTs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Ozs7Ozs7Ozs7Ozs7STtLLFc7SztLLFc7STtJO0k7Ozs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksWTs7Szs7TTtzQztLLFc7STtJLE87Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7OztTLFc7UyxPO1E7TSxLO00sTTtNLFc7SztLO0s7Ozs7NEI7OztHOztJOzs7Ozs7O2M7ZSxPO2U7ZSxPO2MsTzs7YTtHOztJLHNDOztxQixZO0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOztRLE87Z0IsTzs7Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O1EsTzs7Ozs7Ozs7Tzs7UTtVOztPLE87Ozs7Ozs7Ozs7OztPOzs7d0IsTywwQzs7d0IsTywwQztPO08sTzs7O087Ozt3QixPLDBDOzt3QixPLDBDO087TyxPOztPOzs7UTt3QixPLDBDOzt3QixPLDBDO08sTzs7Tzs7Ozs7UTs7O1csTzs7Ozs7Ozs7O1E7O1csTztVOzs7VyxPO29COzs7VTtPO087O1E7UyxPOztTLE87O1MsTztRLE87Ozs7Ozs7Ozs7OztPO1EsTzs7USxPOztRLE87TyxPOzs7O087Ozs7O1M7Ozs7YSxxQixXO2E7Ozs7a0MsUzs7O1k7VSxROzs7Ozs7Yzs7ZSxVOzs7YyxHLGlDO2M7OztrQjtrQixPO2lCO2M7Ozs7Z0Msa0IsUzs7Ozs7YyxvQixPO2MsRyxtQztjO2U7O2tCOzttQixPO2tCLE87aUI7OztrQixrQixROzs7OzZEOztvQixPOzs7bUQ7O2tCLE87aUI7YzsyQjs7O1U7Ozs7Ozs7Ozs7WSxXO1ksTztXO1E7dUMsWTs7Ozs7OztZOzs7Ozs7OztXO1E7Ozs7O1c7VyxPO1U7Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7OztRO1U7Ozs7OztRLE87TyxPOzs7Ozs7Ozs7O087Ozs7UTt3QixPLDBDOzs7VyxPO1U7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7OztPOzs7O1E7O1c7Ozs7WTtXOzt1Qjt1Qjs7dUI7dUI7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7O1EsZ0IsTztROzs7Ozs7Ozs7d0M7TyxJLHFCO08sTzs7O08sTzs7O087TztROytCLGE7TztzQyxTO08sTzs7O2lCO2lCOztPLHFCO08sTzs7Tzs7UTs7OztPLE87OztPOztROztXLFksTzs7VyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTs7SztNLE07TSxPO00sVTs7O00sSSxVOzs7NkI7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Vzs7O1U7Ozs7Z0M7OztROzs7UTs7Ozs7USxNOztJO0c7O0ksSSwyQixJOzs7OytCOzs7Ozs7Ozs7O08sRzs7O1c7Ozs7O21COzs7O2Esb0M7O0k7Rzs0Qix1QztvQyx1Qzs7STs7Ozs7OztPO1M7VztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Z0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Szs7STtHOztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7STs7Ozs7dUI7OztJO0c7cUMsd0I7O0k7STs7Ozs7OzsyQjs7UyxJLFcsaUM7OztpQzs7OztTOzs7Ozs7Yzs7ZSxtQjtlLE87O2M7YTs7OztVO1k7Ozs7OztrRixlOztTLE87Ozs7OztTOzs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Szs7RztHOzhCOztJOztPOztPOztPOztPO2U7O0c7O0k7O0c7O0k7Ozs7b0IsZ0I7O29CLGdCOzs7Ozs7STtHO0c7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7Ozs7SyxJLHFCO0ssTztJO0ksTztHOztJLE87Rzs7SSxvQjtJLE87Rzs7O0s7SztJO0ksTztHOzs7MkIsTywwQjtJLE87Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7OzZCLG1CLHdCO0ksTztHOztxQix3QjtJLGlCO0c7MkIsYTs7SSxPO0c7O0ksTyx5QjtHOztJO2tDOzs7MkI7O087O087Ozs7UTtROztXOztPLHNCOztPOztRLDBCLHVCOztRLHNCO08sc0I7Ozs7Ozs7Ozs7O1E7USxJLFU7USxzQjs7Tzs7Ozs7VyxzQjs7UTtVO1E7a0M7UTtRLHNCO08sc0I7OztPO3lCLHVCO1E7UyxPO1MsUTs7O1MsTztTO1EsdUM7O087OztRLDRCLHVCOzs7NkI7UTtPLHNCOztPOzs7USxzQjtPLHNCOztPLHlDOzs7O1M7OztVOzsyQjs7Ozs7Tzs7O1Esc0I7UTs7OzhCO08sc0I7O087OztRLHNCO08sc0I7Ozs7O1E7Uzs7Ozs7Tzs7UTtRLHNCO2tDO1E7OztZO1k7Ozs7WTtXO1csTzs7UTs2QjtPLHNCOztPLDhCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7USxVOztRLHNCO08sc0I7O087Ozs7Ozs2Qjs7O1E7USwwQjtPLHNCOztPOzs7OztRO1EsMEI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztPOzs7OztRO1E7a0M7O1E7a0M7O1E7USwwQjtPLHNCOztPOzs7UTtRO1EsMEI7TyxzQjs7TyxnQztPLHNCOztPOzs7OztRO1EsMEI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztPOzs7USw0Qzs7UTtRLHNCO2tDOztRO1EsMEI7TyxzQjs7Tzs7OztRO1E7USw0QjtPLHNCOztPLDBDO08sbUIsTzs7Tyw4QjtPLHNCOztPLG9CLFU7Ozs7OztPO08sc0I7O2dDOzs7TyxrQixPOztPOztPOzs7OztRO1EsbUI7a0M7O1E7USxzQjtRLDBCO08sc0I7O08sZ0M7TyxzQjs7Tzs7O1E7USw0QjtPLHNCOztHOztJOzs7MkI7OztPOzs7Uzs7OzhCOzs7WTs7WTs7WTs7WTs7b0MsbUIsVTthLFU7YTtZOztZLHVCLE87WTs7O1k7O1k7Ozs7Z0I7Z0I7ZTthLGE7bUM7YSxPOzs7O2dCO2lCOztrQjtrQjtrQjswQzs7aUI7a0I7a0I7MEM7Z0I7O2E7WTs7K0I7O1k7O2EsaUQ7YSxZOzs7O2dCOzthO1k7O1k7Ozs7YSxlO2E7WTtvQjs7UTtRLE87O08sNEI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOzs7Ozs7O1c7VyxzQjtVOzs7TztzQzs7O1c7Ozs7Ozs7O2dCO2dCLHNCO2U7Ozs7Ozs7bUI7Ozs7OztPO1EsTzs7Tzs7Rzs0Qjt5Qjs7SSx1QztJLHNCO0c7O0k7SSxzQjtHOztJOzs7Tyw2QjtPLHNCOzsyQjs7NkI7O087O08sNEI7TyxzQjtlOztHOztJLGlCO0ksMEI7SSxzQjtHOztJOzs7TyxzQjs7Tyx5QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O0c7O0k7O0s7O00sTTtNO007TTtNLHVCOzs7O0s7O007TSx5Qjs7O0k7Rzs7STs7O0s7SyxZO0s7STtHOztJO0k7Ozs7USw2QjtRLHFCOzsyQjs7UTs7OzZCO1MsTTtTO1M7USxtQjs7UTs7Ozs7O1kscUI7OztTO1Msb0I7aUM7O1M7Uyx3QjtRLHFCOztROzs7O1M7Uzs7WTs7USxxQjs7Ozs7O0c7O0k7dUI7O0k7Rzs7cUIsYTtJO0ssaUI7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7SztNOzs7O1c7OztzQjtVOzs7O08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7OztJLGtCO0ksNEI7STtLLDBCO0ssd0M7Rzs7STtLO0ssTTtxQixxQjtJO0ssTSxXO0ssUSxXO0k7Rzs7STtJOzttQzs7O1E7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7OztROztRLG9DO1EsUTs7OztHOztJO2dEOztLOzs7SSxJOzs7OztTO1M7UTtrQjs7OztHOzs7SztLOzs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7STs7Rzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLHdDOzhCLDJDO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7RztHO0k7STtJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO3FCLHNDLFk7cUIseUMsWTt5Qyw0Qjs2Qix3Qjs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87O0c7O0k7Ozs7USxJLG1CLDhCOzs7bUM7Ozs7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7OztZLEksbUIsOEI7Ozt1Qzs7Ozs7O1EsSSxtQiw4Qjs7O21DOzs7Tzs7MkI7OztPOzs7bUI7O087O0c7O0k7eUM7O0ksTTtHOztJLE87Rzs7STtHOztJLFk7SSxpQjtHOztJO0ssUTtLOztLO0k7aUI7Ozs7Rzs7STtLLE87SyxROzs7OztNLEcsdUM7OztJLE07Rzs7SSxPLDJCO0c7O0k7SSxPO0c7O0k7NEM7Ozs7O007OztJO0c7O0k7NEM7Ozs7d0I7Ozs7TTs7O0k7Rzs7STs7OztpQzs7Rzs7SSxJLFcsNkM7Ozs7O00sTTs7Ozs7SyxNOzs7RztHOztJOztLLE07O0k7RztHLHNCOztJO0k7O007O087YztVOztLOzs7Ozs7TSxNOzs7OztLLE07OztHOztJO0k7Rzs7STtLO0s7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Rzs7STs7OztTO3VEO1M7UTtJLE87Rzs7STs7OztTOztVOzs7O1csTztXLFE7Ozs7VztZLEk7WSxVOzJDOzs7O2EscUI7YyxXO2MsTzs7Ozs7OztjLEs7ZSxXO2U7O2dCLE07ZTs7Z0I7Z0I7O2dCLHNCO2UsTzs7OztZLG1CO2EsVzthLE87OztXOztVLE07O1M7UTtJLE87RztHO0k7STtJO0k7O0k7Ozs7O0c7O0k7STs7OztJOztLLHNCO0ssTyxrQjtJO0ksRztLLE07O0ksUzs7Ozs7TSxNOzs7STtHOzs7SywrQixPO0ssTyw0QjtJO0ksTztHOztJO0s7O0k7Ozs7Ozs7O1M7O1Usc0I7VSxNO2tCOzs7Ozs7Ozs7Ozs7OztTO1M7VSxzQjtVLFE7VSxVOzs7VSxPOzs7YTs7O2M7YzthLHNCO1k7Uzs7OztTOzs7VSxzQjtVLEs7VSxvQjtVLE87VSxXO2tCOzs7Uzs7VSxPO1UsTTs7UztVLE87OzthO2E7WTtVLE07OzthO2MsUTs7O2E7Ozs7Ozs7YyxXO2M7ZSxjOzs7Ozs7Ozs7Ozs7O2E7YztlLE07OztlO2M7Ozs7OzthO2MsVTs7O2E7YTtZO1M7Ozs7O1M7VTs7VyxVOzs7O1csTztXLFc7bUI7OztTLEksa0M7Uzs7Ozs7OztJOztLO0s7O007TSxTO007TTtNO08sTztPLE87TTtNOztLO0k7SSxPO0c7O0k7STtLLEksSSxXOzs7Ozs7Szs7O08sbUIsVTs7TyxNOzs7SyxVO0ssRywrQjs7O0c7O0ksSSxpQztJLE87RztHOzs7O0ksWTtzRTtJLE07Rzs7O0ssNEI7STs7SztNLFM7TTt3QixNOztLO007OztVO1UsTyxrQjtTO08sTTs7Ozs7TTs7eUIsbUIsTyx3QjtPLGM7TSxNOzs7Ozs7OztLO0s7STs7OztvQixPO00sc0MsTztNLEc7OztPLEk7Ozs7SzswQixvQiwwQjtLO00sVztNO007OytCOzs7K0I7O007TSxPO0s7SyxPO0k7O0ssa0IsTTs7O00sb0I7TTs7SyxPO0k7O0ssRztNO007TztPLFk7O087O21CO08sTzs7OztJOztLO00sTztNLE87TSxXO0ssTztJOztLLFc7SyxXOzBCLE8sK0I7SztNLFM7TSx3QjtLLE87STs7Szs7dUQ7O0ssZ0I7SyxPO0k7O0ssd0M7O0ssTztJOzs7SztLOzs7O0s7Ozs7Ozs7O08sSTs7OztRLEk7Ozs7UztpQjtVOzs7YTs7YztjO2E7WTtVLE07UyxNOzs7USxHLDBCOzBCOzs7OztPOzs7Uzs7VSxVOzs7O1csTTtVOzs7VztVO1c7O1c7OztVOzs7Uzs7Ozs7O00sYzs7Ozs7Ozs7Ozs7UztTOzs7Ozs7Ozs7TyxNOzs7O0ssRztNO0s7O0k7OztJLEksVyxrQjs7Ozs7O0ssTTs7O0c7OzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7OztJO3NCLE8sYyxnQzs7SyxPLDZCLE8sMEI7STtJLE87Rzs7O0k7Ozs7OztPLEc7Ozs7WSxrQzs7YSxNOztZLGdCO1c7d0I7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7OztVLGtDOzZCOztVO1M7c0I7OztLOzs7UztTLE87UTtNLE07TTtNO007TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPO1E7OztTOzs7VSxRO1M7O1c7O1ksTztZOztZLE87VztXO1csVztXLE87OztXLG9CO1c7Ozs7O29CO1c7O1UsYTt1QjtVLGU7OztTOzs7Ozs7Ozs7Ozs7UTtNLGE7O007O00sVTs7Tzs7Ozs7O1c7VztVO1EsUTtRLE87USx5QztRLE87USxzQjtPLEc7USxnQjtROzs7Ozs7WTtZLE87VztROzs7OztNLFc7TTs7Ozs7Szs7STtJLG1CO0k7Rzs7NkIsZTs2QixlOztJLFE7VTtJLFc7O0s7OztTOytDOztRO0ssTzs7STtHOzRCLFM7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7NEIsa0IsOEI7UyxPOztTLGtDO1MsUzs7Ozs7Ozs7UyxPOzs7Uzs7Ozs7Ozs7Ozs7Szs7Rzs7SSxJLFcsdUM7Ozs7Szs7TSxnQjtLLE07c0M7OztHO0c7STtJOztJLG1CLE87SSxXO0c7O0k7STs7O0c7O0k7STs7OztNLEksMEM7Ozs7Ozs7OztLLE87O0c7O0ksWTs7STtHOztJLGtCO0c7O0ksd0I7Rzs7O0s7O0k7SSxPO0c7Ozs7Szs7SztNOztJLEksYTs7SywrQjtLO0k7O0s7O2tCOzs7STtJLG9CLE8sdUI7dUIsTyx1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1M7Uzs7Ozs7O21COzs7UTtLLFc7O0ssd0I7SyxlOzttQjtNLE07Ozs7Ozs7Szs7TyxNOzs7OztLO0s7Ozs7Tzs7USxPO1E7VTthOztPOzs7TztRLE07Ozs7VztXO1c7VztXO1c7OztVO087O087O1E7UTs7Ozs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7Ozs7TyxNOzs7TyxPO1EsTTtPOytCLE8sMkI7USxlO1EsTztRLGM7TztPO1EsVTs7O1c7NEIsWTtXLGU7Vzs7Ozs7O3FCOzs7VTtPOztpQixnQztpQjs7O2dCOzs7O087OztROzs7UztVO1U7UyxNOzs7Ozs7Ozs7Tzs7Ozs7UyxLO1UsTTtzQjs7O1E7UyxhOzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1EsTTs7O1E7O1MsTztTLE07UztRLE07Ozs7Ozs7Ozs7Ozs7OztTLE07Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozt1Qjs7Ozs7O1csdUI7Ozs7Ozs7Ozs7Ozs7O08sRztRO29COzs7Uzs7OztVO1EsVztRLE07Ozs7UTtTLE87UyxPO1MsTztTLE87UyxLO1E7O087TztRLGdCOzs7Vzs7Ozs7Vzs7VTtROztROzs7O1M7O1MsVTs7OztTO1M7OztZO2EsTzthO2U7Ozs7WTtXO1MsTTtRO1E7UyxVOzs7O1E7UTs7UTtTLE07UyxNO1E7UyxNOzs7O1UsVztVO1U7VyxPO1csVTs7VSxNOzs7Uzs7OztTOzZCLFk7VSxROzs7YSxZOzs7OztlLEc7Z0IsTzs7O2EsTTs7WTtVLE07O1UsTTs7O1E7Uzs7Ozs7OztRO1MsVTs7O1M7Ozs7OztRO087TztPO087OztROzs7OzthO2E7YTthO2MsTztjLGM7Yzt3QjthOztnQjs7YTthLE07WTtTOzs7Ozs7Ozs7OztXO1c7Ozs7Ozs7O2dCOzs7O2dCLE07OztZOztVOztROzs7O1k7WTtXO1E7O087OztXO1c7Ozs7OztxQjs7O1U7USxPO087O2lCLGdDO2lCOzs7Z0I7Ozs7O08sRzs7O1MsTTs7Tzs7c0M7UTt1QjtRO3lCLE8sNkM7USxlO1EsZ0I7TyxHO1E7Ozs7VTs7TztRLFc7USxpQjs7O1c7Ozs7Ozs7OztVOztROzs7UyxtQixtQjtROztPOzs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7Ozs7Ozs7VztXO1ksUTs7O1c7WTs7Ozs7Yzs7Ozs7Ozs7YyxNOzs7Ozs7O1c7VztXOztZLE87VztXOzs7O1c7O1k7O2E7YSxVOzs7Z0Isc0I7Z0I7aUIsTTs7O2dCO2dCOztZOzs7MkI7WTthO2M7O2M7Ozs7Ozs7O2U7Ozs7OztjO2UsTztlLEk7Yzs7Ozs7O1c7Ozs7bUI7OztVOzRCLG1DO087Ozs7a0MsMEM7UTs7Ozs7Ozs7Ozs7O087Ozs7O21COzs7Ozs7Ozs7Ozs7O087O1EsUztRLGdCO087Z0M7Ozs7VztXOzs7Ozs7cUI7OztVO087O2lCO2lCOzs7Z0I7Ozs7O087UTs7UztTO1MsYTtRO1EsVTs7UTs7O1ksaUIsUztZO1c7UztTO1M7Uzs7O1EsSSxvQjtROzs7Ozs7WTtZO1c7UTs7OztZO1k7VztRO1E7O1M7Uzs7O1k7WTthOzs7c0Msc0IsYTtpQixPO2dCO2E7Ozs7Ozs7Ozs7ZSxLO2dCO2lCLE87aUI7bUI7c0I7OztnQixNOzs7Ozs7O2U7Z0IsVztnQjtnQjs7Ozs7OztnQixNOzs7ZTs7OztnQzthLE07OztXO1M7UyxPOzs7O1E7Ozs7OztrQjs7OztPOztRO1E7OztXOztxQjtxQjtvQjs7VTtPLGU7Tzs7O1c7OzthLE07Ozs7O1c7WTtnQyxTO2E7Ozs7Ozt3QztzQzs7O1c7VTtRO1E7OztROzs7OztZLE07Ozs7Ozs7Ozs7O1M7VSxNO1M7Ozs7UyxrQjtTOzs7Ozs7bUI7Ozs7OztPOzs7Ozs7OztTO1UsTTtTO1UsUTs7OztTOzs7OztXOztTLGM7OztVO1U7cUI7VTtVO1U7Ozs7Ozs7Ozs7UyxNOzs7OztPO1EsTTtPO087USxVOzs7O087O087TyxXO087c0M7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxPO1U7Tzs7O087USxNO087O1EsVTs7O1E7K0IsTyw0QjtRLFE7USxPO1EsTztRLFU7OztRLEc7UztVLE87OzthOzs7OztjLFE7Ozs7ZTs7Z0IsTTtlOzs7O2MsVTtjOzthO1k7VSxVOzs7VSxXO1U7OzthLE87WTtVLHNCO1UsTztVO1UsdUI7OzthO2E7WTtVLFM7UztVLE07O1M7Ozs7O2E7WTtVLEk7VTtTLE87Ozs7Ozs7Ozs7Ozs7O08sTTs7O087O1EsSztRLE87TztnQzs7OztXO1c7Ozs7OztxQjs7O1U7Tzs7O087USxNO08sSSxJLHlDOztROzs7Tzs7UTtRO087Ozs7Ozs7Ozs7Tzs7OztXO3dCLE87VyxNO1U7UTtPOzs7TyxNO2tDOzs7TztRLE07TztRLFc7Ozs7Ozs7VyxzQixROztZLE07OztXLE87Ozs7Ozs7OztVO087Ozs7O0k7STs7O2U7O0s7Ozs7Ozs7MEIsUztJO0ksTzs7Rzs7O0k7STtLO0s7SztJO0s7SztLO0s7Szs7Ozs7O0s7Szs7Rzs7STs7O2U7OztJO0k7Szs7O0ksTztHOztJOzs7ZTs7Szs7OztNO08sTTs7O0s7STtJLE87Rzs7O0s7SyxPO0k7SSxPO0c7OztLOzs7Ozs7TTtNLE87TTsrQztLLE87STtJLE87Rzs7STtJO0ssSztLO0k7SztLOztJLFc7cUIsTyxpQjtJO0ksRztLLDRDO0ksSTs7Szs7Ozs7Ozs7O0ssa0IscUM7SztNLEs7TSxPO00sVTtNO1E7Ozs7OztNO1E7Ozs7OztLO0k7STtLLFE7Ozs7STtHOztJO0ssaUI7SyxTO0k7STtLLEs7SztLLE87cUIsTyxpQjtJOzs7STtHO0c7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87O0s7SztLLE87STtJO0k7STtJLE87Rzs7STtJOzs7Ozs7OztVOzs7K0IsOEI7VyxPO1UsVzs7Ozs7Ozs7WSxrQjtZLFc7WTttQzthLE87WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxzQztVLFc7Ozs7Yzs7OztlO2M7ZTtlO2dCO2lCOzs7cUI7b0U7cUI7b0I7NEI7Ozs7OztjO2E7VSxPOzs7VSxPOzs7VSxPOzs7VTtXLE87O1U7O1U7Ozs7O2M7Yyx3Qjs7O2E7VyxPO1UsVzs7Ozs7Ozs7Ozs7VSx1QztVLFc7Ozs7Ozs7OztxQjs7Ozs7Ozs7VTs7OztXOzs7Yzs7O2lCOzs7a0Q7O2lCO2lCOztpQjs7aUI7O3FDO3lCOzthO1csTztVO1c7Ozs7ZTtlOzs7YztZLE87WTs7Ozs7O1U7VyxPOztVOzs7Ozs7Ozs7TztPLFc7Ozs7TTs7Szs7Rzs7STtJOzs7O1E7O1M7OztZOzs7OztvQyw4QjtlLE87O2U7O2dCO3VDLGlDO2UsTzs7Ozs7Ozs7OzttQjttQjtrQjtlLE87O2U7O2U7Ozs7dUI7O1k7VztRLE87O1E7Ozs7O1E7UyxPOztRO2dCOzs7Rzs7SSxZOztJO0ssTzs7STtHOztJOzs7STs7O0k7OytCLDhCOztJLFU7O0s7O00sVzs7TSxNO0s7STtJLE87Rzs7O0ssZTs7TSxNO0s7STtJLE87Rzs7STs7Ozs7TSxPOzs7STtHOztJO0k7Ozs7O1M7OztVO1k7MkI7ZTtVO1U7UyxPOztTOztVLHNCO1UsVztTLE87O1M7OztVLFU7OztVO1k7VSxPO1M7VSxzQjtVLE07UyxPOzs7O0ssTzs7Rzs7STtJOzs7Ozs7Ozs7VTs7O1c7VyxjO1UsTzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Ozs7Ozs7Uzs7VSxzQjtVLFc7UyxPOzs7Ozs7Uzs7O1U7VTtTLEksdUM7Ozs7O1UsTTs7OztTOzs7O1U7Ozs7c0I7UztTLEkseUM7Ozs7OztVLE07Ozs7SyxPOztHOztJO0k7O0s7TSxTO00sRztPLFc7TSxZOztPOzs7UTtRLFk7Ozs7OztNLFc7TSxXOzs7SSxPO0c7OztJO0k7STtJLFU7STtJLFk7O0s7OztXO00sVTs7O0s7SztLO0s7SztNLFU7OztNO2dCO0s7TSxjO00sVztNLGtCO0ssTTs7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7TTs4QixpQztPLFE7O00sTzs7STs7SztNLE87TSxLO0s7Ozs7Ozs7Ozs7bUMsaUM7VyxHO1k7Ozs7Ozs7Ozs7a0Msc0Isb0I7ZSxPOzs7ZTs7O2tDLHNCLG9CO2UsTzs7Ozs7ZTs7Ozs7Ozs7Ozs7OztlLE87Ozs7OztXOzs7TTs7SztJO0k7SyxPO0ssSztJLDBDO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHOztJOztLLEcsb0IsTTs7Ozs7OzZCLE87Ozs7NkIsTzs7OztpQyxrQixlO1MsTzs7OEIsTzs7O1M7UyxrQixPOztTOzs7Ozs7Ozs7O00sa0IsTzs7TTs7SztJO3FCO0ksSTs7O3dCOzs7STtHOztJOztjOzsrQztjO2E7O0c7O0k7O2M7NEQ7YzthOztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztxQixZO0ksK0I7Rzs7STtJOzs7Ozs7OztLO007TTs7Ozs7Ozs7OztRLE07Ozs7Ozs7Rzs7STtJOzs7Ozs7O1Usd0M7VSxXOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Szs7Rzs7SSxZOzs7O0ssZ0MsVTs7Ozs7O00sYzs7OztPLHNDLE87TztRLFc7UTtTLFc7UztVLFc7VTtXLFc7VyxTLE87Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxrQixPOztJLEksa0I7Ozs7Ozs7OztPO087TyxNOzs7OztHOztJO3VDO0c7O0ksMkI7O0s7O0k7SSxVO0k7STtHOztJO0k7Szs7SztJO0s7OztLOztRLFc7UTtPO0s7STtJOzs7Szs2Qjs7OztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7b0MsdUI7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7Ozs7VTs7Vzs7Ozs7OzswQjs7Ozs7Ozs7O087OztROzs7aUI7UTs7Ozs7UTswQjtPOzs7Ozs7Ozs7O087Ozs7Ozs7Ozs7O1E7OztTLFc7UTs7Ozs7Ozs7OztPLEs7USxNO087O1EsTztRLE87bUI7USxPO1EsTztRLE87UTtxQjtRLE87USxPO1EsYTtRO1EsTztRLE87USxTO1EsTztRLE07UTtjO1EsTztRLGU7UTtVO1EsVztPOzs7Ozs7Ozs7O087USxNO087OztXOzhCO1c7O1k7WTs7VyxTO1c7O1c7O1k7YSxTO2EsRyxzQzthLFk7OztjO2UsVztlOzs7OztnQixNOzs7O2M7ZSxTOzs7OzthOzs7VztXO1U7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7VztXO1k7Ozs7Ozs7Ozs7Ozs7OztVO1c7WTs7Ozs7Ozs7OztPO087UTs7O1k7WSxPO1c7VyxPO1U7UTtROzs7Vzs7Ozs7WSxXO1ksSzs7Ozs7ZTtnQixLO2dCLEs7Z0IsTztnQixlOzt3QjtlO2dCLHdCO2dCLE87ZTs7Ozs7O29CO2dCLG9DOzs7Ozs7Ozs7OztnQjtnQixHO2lCLGdDO2dCO2U7WTs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXLGU7VyxNOzs7UTtPOzs7UTtTOzs7Uzs7Uzs2QixXLHlCO1UsUztVLE87VSxPOztVO2tDLHlDO1csTztVO1c7K0IsdUI7WSxPO1c7WTthLHNCO2EsTzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7O1E7OztVLHVCO1U7O1ksVztZO1ksSTs7Ozs7Ozs7OztVO1c7WSxPO1ksVzs7O1k7Vzs7Ozs7O1E7O1MsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzs7bUI7K0I7O21CLGtCO2tCO2tCO21CLFM7bUI7bUIsWTtrQjtpQjs7Ozs7YTthO2MsVztjLFc7YyxPO2MsVzs7Ozs7Ozs7Ozs7O2EsSzthO2MsSzs7OztrQjs7Ozs7Ozs7NEM7O2lCOzs7O2MsUztjLFc7Ozs7a0I7O21CLGlCO29COzs7O3dCO3dCOzs7O3VCOzs7Ozs7dUI7c0I7O2tCO2lCOzs7Ozs7O2tCOzs7a0I7OzJCOzJCLHdCOzBCO2lCOzs7Ozs7OztlLE07Ozs7Ozs7bUIsMEI7Ozs7OztxQjtzQjtzQixPLHdCLDBCOzs7Z0IsSzs7OztxQjtvQjtpQixHOzs7Ozs7OztlLE07Ozs7Ozs7OztjLGU7Ozs7Ozs7O2UsYTs7OzhCO2U7Z0IsZ0I7Z0I7Ozs7Ozs7OztnQixlO2dCOzs7Ozs7OzthO2M7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO08sdUIsTztPO087TyxJLHFCOzs7Ozs7O2tDLHlDO1UsTzs7Ozs7OztPO087TztPLHlCO087TztROzs7OztRO087Ozs7O2lCOzs7O087OztROzs7OztPOzs7TyxPO1EsTTtPOytCLE8sMkI7USxXO1EsVztPOztVO3VDO1M7Tzs7NkIsZ0Q7USxPO1E7MkIsWTtRLFc7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxXO1UsTztVLFc7Ozs7Ozs7OztZOzthO2E7OztZOzs7O1MsTTs7USxNOzs7OztROztTLHNCO1MsUTs4QixjO1MsVztTLE87UyxvQjtTLE07UztROzs7OztrQjs7Ozs7O087USxNOzs7MkI7UTs7UztTOzs7Ozs7Tzs7O1M7UyxNOzs7Ozs7Ozs7TztROztTOzs7VTtVLE07Ozs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7NEM7OztRLDZCLE87UTtRO1MsTztTLGM7UTtROzs7Tzs7MkIsUzs7O1csTztVO1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztPOztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7OztPO2M7UTs7O1k7O1c7VyxPO1U7TztROztTLFc7OztZO2EsUTs7O1k7WSxJOzs7OzthO2MsVTs7O2E7YTs7Z0I7bUM7ZTthOzs7WTtXO1Msb0I7Ozs7OztROzs7O1ksSTs7Ozs7YTtxQyxvQixjO2M7Z0I7Yzs7YyxNO2E7O2lDLFk7YyxjO2M7Ozs7Z0M7O2tCLEs7bUI7a0IsSTs7O2M7YSxNOzs7O1k7VztTLHNCOzs7O1EsTTs7Ozs7OzthOztnQjtPO21COzs7b0MsdUI7UTtVO1E7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztRLFc7OztPO087OztPOzs7O1E7Ozs7UTtrQztROzs7Ozs7Tzs7USxNOzs7Tzs7Ozs7aUI7Ozs7Tzs7USxPO1EsYTtPOztVO3lDO1M7Tzs7eUIsa0Q7USxPO1E7Tzs7Ozs7aUI7Ozs7Tzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087Tzs7Tzs7O1E7UTtPOztPOzs7UTtRO1E7Tzs7Ozs7aUI7Ozs7Tzs7Ozs7O1E7UTs7O2tDOzs7UyxNO1E7O1MsTztTLE87UyxXO1MsdUIsZTs7Ozs7OztPLEksbUQ7Tzs7Ozs7aUI7Ozs7O087TyxJLE0seUM7TztPO087USxPO1E7O3FDO087Ozs7Ozs7Ozs7OztRO1E7UyxXOzs7O1MsVzs7OztRO1E7UTtRO1M7VSxPO1UsTztVLFU7UztTO1M7Ozs7OztTLE07OztRO1M7UyxPOzs7Ozs7c0M7OztRO1MsVzs7OztRO1E7UTtRO1MsSztTO1Msb0I7UTtROzs7UyxXOzs7Ozs7Ozs7Ozs7OztZLEs7O1k7Ozs7OztTO2lCO29CO1U7VztZLE87bUI7VztZO1k7WSxJOzs7Ozs7WTs7Ozs7VTtXLGM7VztXOztvQjs7Ozs7Ozs7VyxNOzs7O1M7VSxXOzs7UztTLEk7Ozs7O1U7O1csVztVLE07Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7MEI7TyxJOzs7Ozs7Ozs7Ozs7YyxJLFc7Ozs7O2U7Z0I7aUQscUI7Z0I7a0I7ZSxNOzs7YztlLFE7Ozs7OztjLEksVzs7Ozs7ZTtnQixPO2dCLFE7O2dCO2U7ZTs7OztjO2UsUTs7Ozs7Ozs7Ozs7YSxJLFc7Ozs7O2M7ZTtnRCxxQjtlO2lCO2MsTTs7O2E7YyxRO2MsVzs0Qjs7Ozs7O1EsSSxVOzs7Ozs7UztVO1csTztXLFc7Ozs7WTs7d0I7YTs7O2dCLGE7Ozs7O21COzs7Ozs7Ozs7OztTLE07O1EsSTs7O1E7UTs7TyxlOzs7OztXO1ksUTtZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087UTs7c0M7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7Ozs7OztXOzRCLE8sZ0M7VyxHO1ksTTs7VztVO087TztRO1MsVztTLE87Ozs7O1MsTTs7Ozs7UTs7Ozs7Ozs7WTthO2MsSztjLEs7Yzs7Ozs7MkM7YTs7Ozs7O2E7YztnRCxzQjtjLFM7YSxNOzs7O1MsUztROzs7TyxNOztPOzs7O1EsUTtPO087USxVO1EsVzs7O1E7USxPO087Tzs7USxRO1EsTztRLE87UTs7O1E7O1M7Vzs7Ozs7Ozs7TztPOztPO087Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087O1E7UTs7Ozs7NEY7dUI7O087O087O1EsUTtRLGE7Tzs7VTt5QztTO08sSSxvRDtPOzs7OztpQjs7Ozs7MEI7O1E7O1MsUTtTLFE7Ozs7UTtTOzs7O1E7UTs7O1E7O1csVztXOzhCO1U7TztRLE87USxXOzs7OztXO1k7OztZLE87WTtXOzs7Ozs7O1k7K0I7WTthLFc7Ozs7YTthOztZO1k7WTs7WTs7O2EsTzs7OztZO2E7OzthLE87Ozs7OztROzs7Ozs7Ozs7TyxNOztPOztRLFc7OztPOzs7Tzs7O1E7VTthO2E7TztPO1EsUztRLFU7USxXOzs7UTtRLE87OztXLFc7VyxHLDJDO1csVztXO1csWTs7Ozs7NkIsTzs7O1csTztVO1EsTTtPO087Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsTztRLFc7OztRO087Tzs7Ozs7OzswQjtPOztROzs7USxVO1EsVzs7Ozs7Tzs7UTs7O1MsUTs7UztTO1c7Ozs7O1MsUzs7Ozs7TztRLGlCO1E7VTtRLFk7USxjO1E7UTs7OztXOztRLFE7TyxJOzs7OztRLE07Ozs7UTtRO1E7UTtROztPOzs7O1c7WTs7Ozs7Ozs7OzhCO1c7WTs7O1ksVTtZLFM7WSxVO1ksWTtZO2M7WTtjO1csSTs7Ozs7WSxNOzs7O1k7WTtZO1k7O1c7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7OztZLE07OztXO1c7O1E7NEI7OztRLE87USxRO1E7Ozs7Ozs7Ozs7Ozs7UTs7UztTO1M7UztTLE87UTs7TyxNOzs7Ozs7USxNO21DOzs7Ozs7Ozs7Ozs7Vzs7WSxPO1k7O1ksMEI7WTs7Ozs7c0I7Ozs7VyxNOzs7OztPLE07Ozs7STtJO0ssUTs7O0ssVTs7OztzQzs7Ozs7SSxjOzs7Ozs7Ozs7Ozs7OztLLE07O0k7Rzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7Ozs7Ozs7OztLO00sVzs7O2tEO0ksYTtJO0s7TSxPO00sUTs7Ozs7O0s7Ozs7Ozs7Ozs7OztLLE07OztJLEc7SyxTO0ssSSw0Qjs7Ozs7TyxNOzs7Ozs7O0k7SztLO0s7O0k7Szs7Ozs7Ozs7Ozs7O0ssTztJO0s7TTs7O00sc0I7TSxPO007Ozs7STtnQjtLOztJO0s7SyxPO0k7Ozs7O2M7Ozs7O0ksbUI7STs7SztLOztJLHdCOzs7TTtNLE07Ozs7Ozs7OztJO0ssUzs7OztLOzs7Ozs7Ozs7STtHOzs7STtrRDtJLGEsMEI7STtLLFE7Ozs7STtLO0s7Szs7STtLO00sTztNLE87Szs7Ozs7O0ssTTs7O0ksZTtJLGEsMEI7OztNLE07O0ssTTs7O0k7aUM7Szs7b0M7STtJOzs7O00seUI7TTs7TTs7O08sTzs7Ozs7OztLO0s7TTtNO007TTtNO007TTs7O08sTztPO00sc0I7TTtNOztNOzs7TyxPO087Ozs7Ozs7O1EsTTs7TSxNOzs7STs7Ozs7SztNOzs7TTtnQjs7SyxvQjtLLE87STtJOzs7O1M7VSxLO1UsUTs7OztVLHdCLE87VTs7UztRO0ssRztNO08sTztPO08sMkIsTyw0QjtjOzs7Ozs7O0k7Szs7O0s7Szs7O3VCO0k7O0s7Szs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7O3NCO0s7OztTO1UsSztVLE87VSxPO1U7VSxVOztVOzswQjs7Ozs7OztTOzswQjs7Ozs7OztRO007Ozs7d0Isa0IsTyw0QjtNLFk7SztjO0s7TTs7Ozs7Ozs7Ozs7TTs7OztVOzs7Ozs7TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7a0Q7SSxhLDBCO0k7SyxVOzs7SztJO0s7SztLOzs7UTtTLE87OztTLE87UTs7TztLO0s7Szs7SSxjOztLLE07STs7O0s7O0ssdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLE07Ozs7SSxXOztLO0s7STtJLFc7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7STtJO0k7SyxLO0ssSztLLE87STtLO00sTztvQjs7OztLLGlCO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7O0ssa0I7Szs7dUIsMEM7Szs7STtJO0k7Rzs7STtLO0ksSSxLLDZCOztLO0s7SztNLFU7TSxPO00sTztNLE87TSxROzs7TTtNLE87SztLOztNLFE7TTtNO1E7Ozs7SztLO0k7STtLLFE7OztLO0s7SztLLE87SyxxQjs7SztLO0s7Szs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7eUIsa0IsUztJO0ssVztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXO1ksTzs7O2Usa0IsUTs7Z0IsTTtlO2M7Vzs7VSxPOztTLE87UTtLO007TTtNLEk7Ozs7O007Ozs7Ozs7STs7Tzs7Ozs7OztzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7SSxrQjtJLHdCO0k7SyxNO0s7STtJOztLO3dCO0s7SyxrQjtLO0s7SztLO007TTtNLE07TSxVO00sUTs7MEI7O007TTtNOzs7TyxPOzs7OztLO0s7TTtNOzs7VTt1RjtVO1M7Szs7Ozs7OzthO0k7SSx1Qjt5QiwwQixpQjtJLFc7eUIsOEIscUI7STt5Qjs7OztNO08sa0I7O2tCOzs7SztNLDhCLFc7Ozs7SSxlOzs7TTtNO0s7SyxPO0k7STtJLEc7SztNLHNCO00sTztLO0s7OztxQixPLGlCO0k7O0ssVzs7SztLLE87OztpQixXO2lCLE87Z0I7O0k7STtJO0k7O0s7SyxPO0k7STtJO0s7YTtLLFc7dUI7O0s7Ozs7Ozs7OztNO3dCO00sdUIsZTtNOzswQixlOztNLHFDLE87TSxzQjtLO0ssZ0I7Ozs7eUI7Ozs7O0s7Ozs7Ozs7O0s7Ozs7Ozs7O0s7Ozs7STtJLFk7dUI7STtJO0s7TSxPO3FCOzs7O0s7TTs7UyxZOztTOzs7O1M7Ozs7O1UsUTs7O1UsTTtTLG1CO1M7UTtNLE87Ozs7Ozs7O2EsTTs7Ozs7Ozs7TTs7O087Tzs7O1c7O1k7Ozs7YTthLE87OztnQjs7O2lCLE87aUIsb0I7O2U7O2lCO2E7O2U7b0I7OzsyQzs7O2E7Yzs7OztrQjs7YyxPO2MsUTtjLE87OztjLE87YTs7Ozs7O1k7O1c7VTtNLE8sVztLO0s7aUIsMEI7SztLO2lCO0s7SyxPO0k7STtLLGtDLHVCOztLOztLO0ssb0M7O0k7Ozs7STs7OzZCLGU7STs7O29DLGU7STt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7SztJO0ksWTt5QixPLDRCO0ksbUI7STtJLEk7Ozs7TTs7SztLLE87O0k7SyxXO0ssTTtLLE87O0sscUMsTztLLHNCO0k7STtLLFU7SztLLFE7d0I7STtLLGE7O0k7Ozs7UyxZOzs7O1c7Ozs7O1ksTzs7Ozs7O1M7UTtLOzs7SztLO2dCOzs7O0k7STs7SztLOzs7O1M7Uzs7O1UsTztTO1E7bUI7Ozs7cUIsTyxpQjtJO0k7SyxxQjtpRTtLOztJOztZOztNLE07Ozs7O1Msc0IsTztTLE87O21CO1E7Z0I7Ozs7SSxJLHVCOzs7TTtPLE87TyxPO007OztPO1EsTztRLE87Tzs7Ozs7OztNO0s7SyxPO0k7STs7Tzs7O00saUM7TTtPO087TyxPOztPO1EsSztRLE87UTtRLE87Tzs7Ozt1QjtnQzs7UTs7Vzs7Vzs7WSxPO1csTztVOztROzs7Ozs7O1EsVztROzs7O087TyxPO007TTtNO0s7SyxPO0k7STtxQjs7Szs7Ozs7SztLLFk7Ozt5QjtNO08sVTs7OztPO087O007OztVOzs7UztPLFE7TTs7O007OztLO0ssVTtLO0k7STs7Tzs7OztLO00sUTs7O00sdUIsTyx5QztLOzs7SztLO0k7SSxXOztLOztNO007TTtLO0ssTztJO0k7O0s7Ozs7TSxPO0s7STtJLFk7STs7SyxvQjtLO0k7STtJOztLO0s7O0sseUI7Szs7STtJO0ksUTs7SztLO0k7SSxVO0k7Ozs7UyxvQjs7OzthOztnRDs7UyxNO1E7Szs7O0s7cUM7OztNO29EO007SztLLGU7O0k7STtJOzs7STtJOzs7Syx1QixlO0s7O3lCLGU7Ozs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtJO0k7STtJLHlCO0k7OztLOztNO2E7Szs7STtHOzs7SyxPO0k7SSxPO0c7OztJO0ssa0I7O0s7STtJLE87Rzs7SSxZO0ksbUIsUTs7Ozs7NEM7Ozs7O3lCOzs7Ozt5Qjs7Ozs7eUI7Ozs7Szs7UTs7Vzs7O2E7OztlOzs7TSxXOztLOztJOzs7SSxXOzs7SyxPO0k7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Szs7Ozs7Ozs7STtJLE87Rzs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87O2dCOzs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087O3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7OztPLE87Ozs7Ozs7O1csVztXO1csVztXLHVCO1U7TyxPOztPOzs7O1E7Ozs7Ozs7Ozs7Ozs7O087UTt3QixPLDBDOzt3QixPLDBDO087Ozs7Ozs7a0I7Ozs7O08sb0IsVTs7USxPOzs7Ozs7OztPLE87Ozs7Ozs7OztPOzs7O1E7O1c7WSxPO1csVztXLE87O1E7MkI7TyxPOzs7Ozs7Ozs7OztPLE87O087O1E7OztZLFc7WSxPO1c7VyxPO1U7TyxPOzs7O08sTzs7Ozs7Ozs7Ozs7Ozs7WTtZLEc7YTs7Ozs7Ozs7YTs7O2MsTztjOztpQjs7YTs7Ozs7Ozs7Ozs7OztZO1c7VyxPO1U7TyxPOztPOzs7OztRLFk7USxTO1E7Ozs7WSxPOztXOztZLE87Ozs7Ozs7O1c7O1ksTzs7Ozs7Ozs7VztXLE87O1U7TyxPOzs7TyxPOzs7Ozs7OztXO1c7VTtPLE87Ozs7Ozs7Ozs7WTtnQzs7WTtXO1csTztVO08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7OztXO1c7VTtPLE87OztPLE87Ozs7Ozs7VyxPOztVO08sTzs7O08sTzs7Ozs7Ozs7OztZLE87Vzs7WTthLFc7YSxPO1ksTztXO1c7O3FCOzs7Ozs7OztVO08sTzs7Tzs7O1E7O1c7O08sTzs7O087OztROztXOztPLE87OztPOzs7OztROztXLDBCO1c7WSxPOztXLE87Ozs7Ozs7TztROztRO1E7O1c7O08sTzs7Ozs7Ozs7Ozs7OztPLE87Ozs7TyxPOztPOzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7OztPLE87OztPOzs7Ozs7Ozs7Ozs7Ozs7TztROzs7WSxPO3lCO1c7UyxVOzs7OztTLE87Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztPLE87OztPLE87O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87Z0I7OztPOztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7O1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztXOztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7eUIsMkI7SSxPO0c7O0k7O0s7O21DOztJO0c7Rzs7OztJO0c7K0IsMkI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0ksb0I7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7O0c7O0k7STs7Ozs7UTs7UTs7Ozs7UztRLE87O0c7O0k7SyxNOzs7SSxNOztHOztJOztLLE07Ozs7SSxNOztHOztJLEksMEQ7Ozs7O0s7O0c7OztJO0s7Szs7Ozs7O0s7O0c7O0ksWTs7SyxNOztJLEksbUQ7Ozs7Ozs7O1EsTTs7OztROzs7UTs7O0c7O0k7SyxNO0s7SyxRO0s7SSxJOzs7OztLLE07O0k7Rzs7cUIsTyxrQztJO0ssWTtLO0ssTztLLE87SSxPO0c7Rzs7OytCLDZDO0s7OztROzs7UyxVOzs7USxHO1MsTTs7UTtTLFU7OztTLE87UTtRLFc7VztTO1UsTztVLE87UyxNOzs7UTs7O1ksSSxNLHlDO1ksSSxzQzs7Ozs7O2EsTTs7O1c7UyxPO1M7UTtROztROzs7OztTLE87UTtRO1MsVztTO1EsSTs7OztVLE07Ozs7UTs7O1k7O2tDLDhCOzttQyxhLGtCO2MsTzthO2E7Ozs7Z0I7OzBCOzBCOzBCOzBCO3lCOzs7Ozs7OztnQjs7MEI7MkIsTTsyQjswQjswQjt5Qjs7Ozs7Ozs7Z0I7OzBCOzJCLE07MkI7Ozs7MkI7OzRCLGM7MkI7MkI7NEIsTTs0Qjs0Qjs7OytCLEksTSxxQzsrQixJOzs7Ozs7Z0MsTTs7Ozs7OzhCOztnQzsyQjs7MEI7MkIsTTsyQjswQjswQjt5Qjs7Ozs7O2dCOzswQjsyQjs7OzBCO3lCOzs7Z0I7Z0I7OztnQixNOzJDOzs7O1ksTztXO1MsUztRO1EsSSxxQztROztROzs7O1MsTTtTO1M7VztjOztTO1M7UTs7O1EsTTttQzs7UTs7O1MsVTs7O1M7UTs7STtJLE87Rzs7STtJO0s7SyxPOzs7Ozs7O0k7O0k7Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxJLFU7Ozs7TSxNOzs7STs7O0s7SyxPO0ssaUM7SSxPO0c7OztJOzs7SztLO0ssTztJLFk7STtLLFE7OztLOztLOzs7O00sTztNO007SztJO0k7SyxVOzs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7OztLO007Ozs7Ozs7OztPO087TTtPLE87TTtNOzs7O1M7O21COzs7bUI7bUI7bUI7b0IsYztvQixxQjtvQixvQjtvQjtzQjtvQjtzQjttQjs7OytDOzs7MkI7cUI7O3VDO3FCOzsyQjtxQjs0QztxQjs7OztvQjtxQixPO3FCLGM7b0I7cUIsTTs7O21CO29CO3NCO29CO3NCO29COzs7b0I7Ozs7O3FCO3FCO3FCLEs7cUI7cUIsUztvQjttQjttQjtvQixVOzs7Ozs7O29CLHNCO21CO21COztzQjs7b0I7O3FCO3FCOzs7Ozs7Ozs7bUI7b0I7Ozs7Ozs7OztvQjttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7O29CLG1CO29CO3FCLE07cUI7O3FCO3FCOztvQjs7Ozt5QixXOzs7OztzQjs7dUI7dUI7dUIsSzt1QixTOzs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7OztxQjtvQjs7Ozs7Ozs7O21COzs7Uzs7bUIsRztvQixNOzs7Ozs7O21CLEc7O3FCOzs7b0IsTTs7Ozs7OztzQzttQjtpQzs7b0I7b0I7O21COzs7O3dCLFc7Ozs7O3FCOztzQjtzQjtzQixLO3NCLFM7Ozs7Ozs7Ozs7Ozs7OzttQjtvQjs7Ozs7Ozs7OztvQjtvQjtzQjtvQjtzQjttQjs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7VTs7b0I7cUIsUTtxQixNO3FCO29CO29CO3FCO3FCO29COzs7Ozs7Ozs7bUI7OztTOzttQixHO29CLE07OzttQixHOztxQjs7O29CLE07Ozs7Ozs7Ozt1Qjs7bUI7OztvQjtxQjs7c0IsUTtzQixNOzs7OEI7b0I7OztxQixjOzs7Ozt5QjswQixPOzBCLE87eUI7eUIsVzt5Qjs7O3lCOzs7a0M7MEIsTTt5Qjs7Ozs7O3FCLE07Ozs7Ozs7O3FCLE07Ozs7Ozs7O29CO3FCO3FCLGdCO3FCOzs7Ozs7Ozs7cUI7cUI7dUI7cUI7dUI7b0I7Ozs7Ozs7Ozs7bUIsTTs7a0I7OztTOzttQjtvQjs7O29CO29CO21COzs7Ozs7Ozs7a0I7OztTOzttQjtvQjtvQixnQjtvQjtvQjttQjs7Ozs7Ozs7O2tCOzs7UztTO1U7VTtTOzs7Ozs7Ozs7OztTLE07b0M7Ozs7SyxPO0k7STtLLE07SztLLFM7O0k7STs7O0ssVztLLE87STtJLFk7d0I7SyxNOztJOzs7Szs7Ozs7Ozs7dUIsZTt1QixlO007TSxPO007Ozs7OztTO0ssTztJO0k7SyxZO0s7O0s7Szs7UTs7Ozs7Ozs7OztZO1k7O1c7UztXO1E7Uzs7Ozs7YTthLE87WTtVLFE7VSxLO1U7VSxvQixlO1U7VSxPO1UsaUM7c0I7Ozs7UTtTOzs7O1E7Ozs7Ozs7O1M7Ozs7O1M7Uzs7OztROzs7Ozs7Ozs7Uzs7Ozs7UztTOzs7O1E7Ozs7OztTO1M7Ozs7Ozs7Ozs7Ozs7O1k7YSxLO2E7YSxPO2EsWTtZO1k7O2U7WTtZO2E7YTtZO1c7aUI7OztROzs7OztTOzs7Ozs7Ozs7OztZO1k7YSxZO2E7YTtlO2EsWTthLE87WTtZO1k7VztpQjs7O1E7Ozs7Uzs7OztLO0k7STtlO0ssVztJOzs7OztJOzs7O0s7STtJLE87Rzs7Ozs7Tzs7O1EsVTs7O08sRztRLE07O087O3dCLE8sNEM7USxNO1EsVTs7O1EsUztRLE87TztPLFc7VTtRO1MsTztTLE87USxNOzs7Ozs7VztXO1ksVztZOzs7Ozs7WSxNOzs7VTtPO087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7OzswQjtPO1EsVTs7Ozs7O1E7UTs7OztZLE87O1E7O087OztXOzs7WTtZLEs7WSxPOztZLFc7Vzs7OzhCOzs7Ozs7VTtRLE87USxPO1EsUTtRO1U7Ozs7Ozs7TztPOzs7TztPLFc7Tzs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7O08sUztPOzs7USxjO087Ozs7Ozs7OztPO1EsTTswQjtPOzs7UTtROzs7Ozs7O1E7OztTLEc7OztVLEk7O1E7UyxPO1MsTzs7UztpQyx5QztVLE87UztVOzhCLHVCO1csTztVO1c7WSxzQjtZLE87WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7OztjOztlLGlCO2dCO2lCLE87aUIsUTtpQixNO3dCOzs7MEI7O2M7YTs7Ozs7OztjLFc7YTs7Ozs7OztXLE07Ozs7Ozs7ZSx3Qjs7Ozs7O2lCO2tCO2tCLE8sd0IsMEI7OztZLEs7Ozs7O1csTTs7Ozs7O1UsYzs7Vzs7Ozs7WTswQjtXO1ksZ0I7WTs7Ozs7Ozs7O1k7YztpQjs7Ozs7Ozs7O1M7O1U7Ozs7Ozs7Ozs7UTs7O1k7WTtXO1MsUTtTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1E7USxPOzs7Vzs7OztZO1ksSztXO1c7WSxPOztZLFc7WTs7eUI7Ozs7OztXO1c7VztZO1ksTztZLE87Vzs7bUI7VTtRLFc7OztROzswQjtPOzs7Ozs7Ozs7TztPO1EsVTtRO087TztPO1EsWTtRO087TztPO08sb0IsTztPO08sc0IsTztPO08sWTs7USxNOztPO1E7Ozs7USxPO1EsTztPO087Ozs7Ozs7OztPLE07a0M7O087OztRO1E7VTs7OztVO1E7O087OztHO0ksTTtJLGE7O0k7STs7OztROzs7UztXO2M7YztTO1M7USxPOzs7OztnQixPOzs7Rzs7STt1QixPO0k7OztLO087VTtVO0s7SztJLE87Rzs7SSxJLGlCOzs7OztzQjtNOzs7OztJO0ssTztLLEs7O0ssTztLLE87SztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7SyxJLGUsd0M7Ozs7TyxNOzs7O0ksZ0I7eUIsb0IsYztJO0ssUztLO0k7O0s7TSxRO00sTzs7Ozs7O0ssTTs7SSxxQyxPO0k7SSxXO0k7STtJO0ssUTs7O0ssUztLLE07SyxPO0k7STtLLFc7Szs7Ozs7Szs7NkI7SyxNOztJLFM7SSxJOzs7O0ssMkI7SyxNOztJLFc7STtJO0ssVTs7O0ssTztJO0ssVztLOzs7OztLO00sTztNLG1CO0ssTTs7SSxJOzs7O0ssZTtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7Szs7O0k7MkI7SyxRO0ssUTtLLFk7SyxVOzs7Szs7O0s7OztROzs7Ozs7Ozs7d0I7Szs7SyxVO0s7OztLLE87Szs7Ozs7OztROzs7Ozs7Ozs7SyxPO0ssVTs7O0k7STtLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0ksWTs7SztNLE87TSxPO00sTztNLE87TSxPO00sTztLOzthOzs7OztJO0ksWTtJO0k7STtLOzs7Ozs7Ozs7TSxRO007Ozs7TTs7Ozt3QjtLLGtCOztNO007O0s7TSxnQjtNOzs7O007O007dUI7TTtROzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJO0ssVTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7OztLLEk7Ozs7O00sTTs7O0s7SztLO0s7SztLO0s7SyxHO00sTTs7SztNLE87TSxROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztNOzt5QixPLHdDO3lCLE8sMkM7SyxNOzs7STtLLFE7SyxRO0ksSSxjOzs7Ozs7SyxNOztJLFk7STs7Ozs7Ozs7Ozs7TTtPLE87Yzs7O0s7TSxPO00sTztNLE87TSxPO00sTztLLE87O0ksWTtJOzs7Ozs7Ozs7Ozs7Ozs7OztNLGtCOztPOzs7USxVOzs7USxVOzs7USxPO087TyxJOzs7OztRLE07OztjO1EsTTs7OztNLE07O0s7Ozs7Ozs7Ozs7Ozs7O0ksWTtJO0c7Rzs7STtJO0ssYTtLOztTOzs7Ozs7STtJO0c7O0k7SyxhO0s7STtJO0c7O0k7Szs7O3NCLDZCO0k7SyxPO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7OztLOzs7Ozs7Ozs7STtJLFc7Rzs7STtJOztLOztTOzs7Ozs7OztJO0ksWTtJO0c7OztJO0ssTztLLE87SyxPO0k7Rzs7STttQjs7Rzs7STs7Tzs7TztlOztHOztJO0ssTzs7OztPOzs2QixPLHlDOzZCLE8seUM7TztPLE87O087Ozs7USxxQixPLHlDOzs7VyxPO1U7TyxPOzs7TyxPOzs7TyxPOztPLE87Ozs7OztRO1MsTztnQjtPLE87OztPLE87Ozs7Ozs7OztPLE87OztPLE87OztPO087USxPOztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087OztRLHFCLE8seUM7O3dCLE8sNEM7TyxPOztPOzs7O1E7UTs7OztRLE87UTtVOztPLE87Ozs7Ozs7Ozs7Tzs7O1E7UTtVOztPLE87OztPLE87Ozs7Ozs7OztPOztRLHFCLE8seUM7NkIsTyx5QztPLE87OztPO087USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOzs7UTs7Vzs7Ozs7WSxtQjtXO1c7VztZLE87O1ksTztXLE87Ozs7Ozs7Ozs7TyxPOzs7Tzs7O1EsTztPLE87OztPLE87O087Ozs7OztXO1ksTztXOztZLE87VztXLE87VTtRLE87TyxPOztPOztRLHFCLE8seUM7NkIsTyx5QztPLE87Ozs7Ozs7TyxPOzs7O1EsTzs7O08sTzs7O08sTzs7O08sTzs7Ozt5QiwwQjtJLE87Rzs7STtLOzs7O00sNEI7SyxXOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7d0Isc0I7O2lDO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07ZSxNOztHOztJLFk7OzswQjs7O08sTTs7TyxNOztHOztJO0ssTztLO087NkM7SSxTO0k7SSxNO0c7O0k7O0s7TSxTO00sTztLO0ssVTtLO0k7STs7TSxXO00sTztLO0ssTztJO0k7SyxPO0ssUTs7O0s7OztPLEs7UTtTOzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7OztLO0k7STtLLFE7OztLO0k7RztHOzs7O1EsTTtPOzt3QjtJLGlCOztLOzs7TSxPOztNLFc7TSxPO0s7SyxPO0k7SSxPO0c7O0k7SyxXO0s7SyxNOztLOztNLG1CO00sUTs7Ozs7STtLLFk7SyxTO0ssTztLLE87SyxRO0k7OztjOzs7SSxZO0k7SSxPOzs7STtJOzs7UTs7Ozs7UTtRO1EsTzs7Rzs7STtLLFE7SyxVOzs7O0s7Ozs7Ozs7TSxPO0ssVzs7Szs7O21CO007OztPLE87TSxXOzs7O0k7Rzs7STtLO0s7Ozs7Ozs7SyxpQixPO0ssdUM7Szs7TTs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7O0s7OztJOzs7Ozs7Ozs7OztJOzs7O2M7Ozs7Ozs7Ozs7Ozs7aUIsTzs7Yzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7O0ssWTs7TTs7TyxPO08sVTtvQixPO007O08sTzs7Ozs7Ozs7OztNLE07O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7OztNOzs7O087OztNOzs7STtHOztJO0s7Ozs7NEIsUztJOzs7Ozs7Ozs7Ozs7OztLOzs7Uzs7VTs7Ozs7Ozs7Ozs7O2MsTzs7OztzQjs7O1c7Ozs7WTs7O1c7Ozs7YTs7Ozs7Ozs7WTs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksTTs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOzs7STtJO21CO0ssc0MsUTs7TSxXO00sUzs7OztLOztHOztJOzs7Ozs7O0ksSSxtQjtJO0s7TSxPOzs7O2tCOzs7O08sRyxrQjtROztNOztPOzs7O0k7Ozs7TTtNO0s7SztLOzs7Ozs7Ozs7Ozs7WTs7Ozs7O2dCLGtCO21CO2E7YyxRO2MsTztjLE87OztjLE87Yzs7Ozs7OztpQjs7Ozs7Ozs7aUI7Ozs7a0IsTztrQixPO2tCLE87aUIsTztnQjtjLE87Yzs7OztxQyxPLDJCO2M7O2lCOzs7Ozs7Ozs7Ozs7OztjLE87YyxTO2M7Z0I7YyxZO2M7Z0I7Ozs7Ozs7O2M7Yzs7OzthOzs7Ozs7OzthO2M7Ozs7Ozs7Ozs7Ozs7Ozs7YztjO2dCOzs7O2E7Ozs7Ozs7Ozs7O1MsRyxrQjtVO1csVTtXO2E7O1c7O1c7Ozs7VyxXO1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHLGtCO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHLGtCO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7O1MsRyxrQjtVO1csWTtXO1c7Ozs7O1c7Ozs7OztXO1k7OztVOzs7Ozs7Ozs7Ozs7O1UsRyxrQjtXO1ksWTtZOzs7WTs7O1c7WTthLE87YSxPO2E7WTs7Ozs7Vzs7OztXOzs7Ozs7Szs7O0s7TTs7SyxZOztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7WTs7Ozt1QjtzQjtzQixXOzs7dUI7Ozs7Ozs7Ozt3Qjt5QixjO3lCLFU7eUIsUTs7OzswQjs7MkI7NkI7Ozs7MkIsTTs7Ozs7Ozs7Ozs7O3dCLE07Ozs7O3NCO3FCO1c7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7Ozs7a0I7aUI7YyxHO2U7Z0I7Ozs7Ozs7Ozs7ZSxNOzs7O1ksTztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztROztTLG9CLG9COzs7OztPO08sVzs7Ozs7OztRO1MsTTs7Ozs7Ozs7Vzs7O1ksTztjO1c7Ozs7O2dCLGtCOzs7Ozs7a0IsRywyQjs7Ozs7Z0IsTTtlO1k7Ozs7Ozs7Ozs7Ozs7Ozs7UyxJLGM7Ozs7VyxNOzs7Ozs7O2EsTztZOzs7UztVLE87O1M7VSxNOzs7OzthLE87WTs7UTtTLE07UztXO2dCOzs7UTs7UyxRO1M7OzZCLE8seUM7UyxRO2dCOzs7UTs7UyxxQixPLG9DO1MsUTtTLFE7Z0I7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O087OztROzs7Vzs7O2M7Yzs7O2M7YztzQjs7VTtPO087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7OztZOzthO2EsVztZO1ksTztXO1MsVTs7O1k7WSxPO1c7UyxXO1M7UTs7a0I7a0I7aUI7Ozs7UTs7UztTLFU7UyxVOzs7UTs7UTs7UztTLFU7b0I7Ozs7Ozs7Ozs7OztROztTO1M7UyxVO1M7UyxVOzs7UztRLE87OztROztTLFU7UztTO1M7OztjOzs7OzthOzs7USxPOzs7O0c7O0k7SSxvQjtJLFc7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0ksSSx1Qjs7SztNOzs7Ozs7STtJLE87Rzs7STs7OztJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJO0s7TSxPO00sTTt5QjtLLFk7O007Ozs7O007SztLLE87O0ksTztHOztJOztLO0ssTztJO0ksb0I7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOzs7OztLLEcsZ0Q7Ozs7YTtPO1Esb0IsZTtRLE87NEIsZTtRLFE7UTs7O087TyxXOzt3Qjs7SztNO087USxPOzs7Ozs7Tzs7USxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7SztJO0ksTztHOztJLHFCO0k7RztvRCxPO0c7O0k7STtJO0c7O0k7STtJO0c7OztLLG1COzs7UTs7UztROztRLG9CO1E7Ozs7Uzs7O1U7OztVOztXLFE7VyxPO1csTztXO1csVTs7Ozs7Ozs7Ozs7Ozs7UTtROztROzs7UztTO1M7O1M7Uzs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Ozs7O2U7OztnQjs7Ozs7ZTs7O2dCOzs7Ozs7Ozs7Ozs7ZTs7O2dCLFU7OztnQjs7OztZO2E7OztZOztTLFU7OztTLFU7UztTLE87UTsyQjs7Ozs7O1E7O1MsUTtTLFU7OztROzs7USxNO21DOztROztTO1MsTztROztJO0ksTztHOztJO0s7Ozs7SyxPO0k7Rzs7STs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtRO1M7Ozs7UztROztROzs7UyxVOzs7OztZO1k7YSxPO2EsVzs7VztRO1E7Uzs7OztTOzs7OEIsZ0M7OztROzs7OztROztTLFU7Ozs7O1k7Ozs7Ozs7O2EsTTs7WTthLE07WTs7YSxPO2EsUTthO1k7O1c7UTtRO1M7Ozs7UTs7Ozs7UTs7UyxVOzs7Uzs7O1k7O1c7UTtRO1M7Ozs7Uzs7K0Isa0M7OztROzs7OztROztTLFU7OztTO1E7UTtRO1M7Ozs7UztROztROztTLFE7Z0MsbUM7UyxPOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1E7Uzs7Ozs7Ozs7UTs7Ozs7Ozs7OztROztTLFU7UyxXOzs7UyxnQjtRO1M7VSxPO1UsTzs7OztROztTO1c7OztTLHVCO1E7UTtRO1M7Ozs7UTs7Ozs7Ozs7OztROztTOzs7OztZLG1DO3dCOztZO1c7UyxVOzs7WTtZOztXO1E7UTtTOzs7O1M7OztjOzs7O2U7YzthOzs7Z0MsbUIsVTtROzs7dUI7Ozs7O1E7O1M7Ozs7UTtRO1E7Uzs7OztTO1E7O1E7O1M7Ozs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1E7Uzs7OztROzs7OztROztTOzs7Uzs7OztROztROztTO2dDLGlDO1MsUztTO1MsVTtTO1MsVzs7Ozs7UzswQjtRO1E7UztTOzs7O1MsTztROzs7OztROztTLFc7Ozs7O1k7WTtZO1k7WTs7VztRO1E7Uzs7OztTO1M7OztjOzs7Ozs7O2E7OztTLE87K0IsZ0I7Uzs7dUI7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTs7VztRO1E7Uzs7OztTO1M7OztjOzs7OzthOzs7UyxPOytCLGU7Uzs7O21COztROzs7UTtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCOztLO00sbUI7Ozs7TTtNO0s7SztJO0ksTztHOzs7Szs7Ozs7TSxPO0ssb0I7SztNLE87TSxPO00sTztzQixZO0s7TTs7Uzs7OztNLFE7TSxROzs7TTtLO0k7SSxPO0c7Ozs7TTs7TztPLE87TTtNLE87SztLLE87STs7O007MkIscUM7TTtPLE87TztNO0s7SyxPO0k7STs7TTsyQixtQixtQjtNLE87SztLLE87STtJLFk7O0ssb0IsTztLLE87STtJLFU7OztNLFc7TSxPO0s7SyxPO0k7SSxpQjs7SztNLE87TSxTOzs7OzBCLDZCO0ssYTt1QixlLGtDO0ssZTtLO0k7STtLLE87Szt5Qiw4QjtJLEksTywrQjtJO0ksSSwrQjtJOztLOzs7OztNOzs7eUI7Szs7O1M7Ozs7Ozt5QjtLLFc7SztJO0ksYTtJO0c7Rzs7STtJOzs7OzBCOzs7O1M7Uzs7Ozs7O0ssTTs7Rzs7SSxJLHNDOzs7NkI7OztHOzs7Ozs7UTs7UTs7UyxRO1M7O1k7OztlLE87O2tDO3VCOzs7USxPOzs7OztTOzs7OztvQjs7Ozs7Ozs7Z0I7Ozs7STtLOztRLHNCLE87UTtTLE07O1E7O1Esc0I7UTtTLE07O1E7Z0I7OztJLE87RztvQixlO0csdUI7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07Ozs7OztXOzs7O2U7Ozs7Z0IsVztlLEc7Z0I7aUIsVztpQixLO2dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7Ozs7ZTs7a0I7a0I7aUM7Ozs7OztxQixHLHFCO3NCOzs7OztpQjs7OztlO2U7Ozs7OztjOztXO1U7TyxXO2UsTTs7Rzs7O0ssZ0MsTztLLFc7STtJOzs7MkI7SSxPO0c7Ozs7TTttQjtLO0ssVztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7OztJO0k7Szs7UTs7Ozs7O0ssTTs7O0k7OztHOztJO29CO2dCOztJO0c7O0k7O0s7STtJLE87Rzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7UyxXO1M7Ozs7Ozs7YztjOzs7Uzs7VTtXO1ksTztZLFE7Ozs7Ozs7Ozs7Ozs7OztPOztPOztROzs7Ozs7UTtRO1EsTztjOzs7Ozs7O1E7OztTO1MsUTs7O1M7O1UsTztVLFM7VTtVLEs7VSxVO1U7WTs7Ozs7UyxJOzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1EsTztPOzs7Ozs7Ozs7O087OztROzs7Uzs7O1M7Uzs7Ozs7WTs7OztTOzs7O087Ozs7WTs7Vzt3Qjs7O087UTs7O1E7UTs7Vzs7O1ksYzs7Ozs7OztnQixNOzs7OztxQjs7ZTtnQixNOztlLFc7ZTs7Ozs7Ozs7Ozs7OztjO2U7O2tCOzs7Ozs7Ozs7Ozs7ZTtnQjtrQjtnQjtlLE07OztjOztlLHVCLFE7ZTs7O3lCOzs7OzJCOzs7O2dCOztpQjttQjtnQjs7Ozs7Z0I7aUI7a0IsTzs7Ozs7Ozs7aUI7aUIsTTs7Ozs7Ozs7Z0I7aUI7O29COzs7Ozs7O2lCOzs7O2lCOzs7O2M7O2MsVztjOzs7Ozs7Ozs7O2MsTTs7O2M7ZSxPO2U7YyxNOzs7O08sTzs7Tzs7O1E7OztRO1E7Ozs7O087Ozs7OzBCO08sVTs7UTtROztPO1EsTztRLFU7Ozs7VyxNOzs7Ozs7OztlOzRCO2M7VyxHO1ksTTs7Ozs7O3FCOztvQjtXO1k7WSxvQjtXO1ksTTtXOzs7O08sTTs7OztPLE07a0M7Ozs7O0s7O007O087OztPO087TTs7SztNOzs7TSxRO007TSxVOzs7Ozs7OztLLG9CO0s7O007OzJDOzs7Uzs7O1M7OztTOzs7Uzs7O1M7OztTOztLO0s7TSxPO007SztJO0ksTztHOztJO0k7OztLOztROzs7OzJCLE8sdUM7UyxPO1E7O1E7OztTLFE7OzsyQjtRO1MsTztTOzs7WTs7Ozs7WTtZLFM7WTtZOztvQjtXO1MsVTs7O1E7O2dCOzs7O1E7O1MsVTs7O1E7UTtRO2dCO1E7Ozs7OztROzs7UyxVOzs7NkIsMEM7UTtROztTOzs7Z0Msb0M7Ozs7O1k7YSxNO1k7OzthLE87WSxPOzt1Qjs7O1c7UyxjOzs7Ozs7YTs7O2MsYztjLFM7YSxPO1k7aUI7OztROztROztTLFU7OztTOzs7WTtZOztXO1M7Vzs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7UztRO1E7UTs7Vzs7UTs7Ozs7O1E7Ozs7OztTLGM7UyxVOzs7WTs7Ozs7Ozs7Ozs7O1k7VztTLFU7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7UTs7O1M7O1U7WTs7OztTOzs7Ozs7Ozs7Ozs7Ozt3Qjs7O1E7Ozs7OztROzs7O1k7O2EsTTs7Ozs7Ozs7WTtXO1MsVTs7O1k7Ozs7O1k7VztTOztxQjs7Ozs7WSxtQjtZLG9CO1ksTztXO1E7UTs7O1k7Ozs7Ozs7Ozs7YTs7OztzQjs7O1k7WTthLFU7OzthO1k7VztTLGM7OztZOzs7Ozs7O1ksYTtZLG9CO1ksTztXO1MsVztTOztZLFk7WSxTO1ksa0IsTztZLE87VztTO1MsTTs7Ozs7UTtTLFk7UztVOzs7Yzs7Ozs7Ozs7OztlLGE7ZTs7YztlOztrQjs7Ozs7Ozs7Ozs7Ozs7ZSxNOzs7Yzs7O2U7Ozs7Ozs7ZTtjOztXO2E7OztjOzs7O2U7Z0MsK0I7YyxPO2E7VyxNOzs7Yzs7Ozs7YztjLE87YTtXLGM7O1c7OztnQjtnQjtlOzs7a0MsbUIsVTtVO3NCOzs7OztTOzs7YztlOztnQixXO2dCLGU7ZTtlLFU7ZSxtQzs7O1UsWTs7O2M7ZTtlLFU7ZTs7OztnQjs7OztlLE87NEU7OztVLFE7VTs7O2E7YSxVOzthLE87WTtVLE07Ozs7Ozs7OztROztTOzs7O1E7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7OztZO1k7WTtZO1k7WTs7YTtZO1k7YTs7OztXO1MsYzs7Uzs7O2M7Ozs7Ozs7YTs7O1MsTzs4Qiw2QjtRO3FCOzs7OztROztTLFc7Ozs7O1k7WTtZO1k7WTs7YTtZO1k7YTs7O1c7UyxjOztTOzs7Yzs7Ozs7YTs7O1MsTzs2QixnQztRO3FCOzs7OztROztTOzs7WTtXO1MsVzs7O1MsVTtTO1M7Vzs7Ozs7UyxzQjtRO1E7UTs7O1E7UTs7O1EsTTttQzs7OztJO0ssVztLOzs7TSx1QjtNOzs7OztNO0s7SztNOzs7OztLOzthOzs7STtJLDJCOztLO007Ozs7O007SztLOzs7O2E7O0k7SSwyQjtHOztJO0k7Rzs7RztJOzs7RztJOztHLEk7RztJOzs7SSxPO0c7O0k7OzhCLE87OztPOzs7OEI7OzttQjs7O2U7O0c7O0k7SztLOztLOztNLFU7Ozs7OztJLFU7STtLLE07STtHOztJOzswQjs7O087ZSxNOztHOztJO0k7SyxVOztLLFE7STs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztROzs7Vzs7Yzs7ZTs7ZSxPO2UsVTtjOztjOztlOztlLE87ZTtpQjtjO3NCOztVO1EsUTs7O1E7O1c7OztjLFc7OztjOztjLE07O1U7Ozs7Vzs7O2MsVzs7O2M7O2MsTTs7VTs7O007TywyQjs7OztLO007OztTO1MsSTs7O2lDOzs7UyxJLFc7OztpQzs7O3lCO1MsUTtTO1E7TSxPOzs7Ozs7STs7OztLO0s7TTtPLE87TyxPO007Ozs7O08sTTs7OztJO0k7STtLLE87SyxPOztLO0k7SztpQjs7Ozs7O0ssTTs7O0k7OztJO0c7O0k7Rzs7STtHOzs7Ozs7STtLOzs7Ozs7OztJLGU7SSxPO0c7OztJOztLO0s7d0I7SztNOzs7Ozs7TSxPO00sTztNLFU7TTs7TTtNO08sVTs7O1UsVztVLE87Ozs7OztTO007TTtNOztLOztNLE87TSxhO0ssNkI7TSxXO007TTtPO1M7Ozs7Ozs7Ozs7O007TTtNO00sYzs7TztRLFM7USxPO1EsTTtRO1EsTztPOzs7Ozs7Ozs7Tzs7TTs7Ozs7O007TztRLE87USxPOzs7Ozs7TztPLE07OztnQjs7Ozs7SztNLFM7TTtROzs7Ozs7Ozs7OztLO0s7TSxVO007TSxPO0s7Ozs7Ozs7OztLO0s7O0k7Ozs7UztVLE87VSxhO1UsTztTOzs7Ozs7Ozs7UztRO0ksTztHOzs7SSxXO0ksTzs7Ozs7Ozs7O0c7cUMsa0M7OztLO00sTztNLE87TSxVO00sTztNLEs7TSxPO00sa0I7O00sTTs7SyxXO0ssb0I7STtJLFk7STs7Szs7O00sUTtNLFE7SztJO0k7SyxpQjtLOztLO0ssTztJO0ksWTs7Szs7O00sTztNLE87TSxPO007SztJO0k7SyxLO0ssUztLLE87SyxXOzs7Szs7TSxLO00sTztLLE87STtJO0ssTztLLFEsVztLLFU7SSxHO1k7TTtNLE07OztlOzs7OztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Ozs7Ozs7O0s7O3dCO0k7SyxhO0ssTzs7SztLLFc7STtJLGM7O0s7TSxPO007UTs7TTtNLE87Szs7Ozs7Ozs7OztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPO2dCLE87Ozs7O08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7O1EsUztPLE87OztPOzs7O1EsUztRLE87TyxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztPLE87OztPLE87OztPLE87OztPLE87Ozs7TyxPOzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOzs7OztROzs7Ozs7OztTLHVCO1M7UyxPO1MsTzs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7O1EscUI7UTtRLE87USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O08sb0IsTztPLE87O087OztRO1EsTztPLE87Ozs7eUIsMEI7SSxPO0c7O0k7O0s7O21DOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7O0k7OztLLFk7Ozs7Ozs7Ozs7O007TyxNO2E7Ozs7Ozs7SSxhO0kscUIsTTtJLE87Rzs7STtJO0c7O0ksOEI7Rzs7SSw4QjtHOztJLDhCO0c7O0k7Ozs7O0k7Rzs7SSxZOztJO0c7O0ksTztHOztJLFk7O0k7Rzs7SSxZOztJO0c7OzJCLHFCOztJLFU7O0s7STtJO0ssUTtLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7Rzs7STs7SyxPO0k7SSxPO0c7O0k7STs7OztTOztTLFU7Uzs7O1E7SyxVOztrQjs7SztLOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O3lDOzs2QztvRDs7Ozs7O00sTzs7O0k7Rzs7STs7Ozs7Ozs7Ozs7O007Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7O0k7Rzs7STs7ZTs7bUI7MEI7O0k7Rzt5QixtQjtHOzZCLHlDOztJO087SztJLE07RztHO0k7STs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVOzs7O2E7YTtZO1UsTzs7Ozs7YTthO1k7VSxPO1U7Uzs7Uzs7Ozs7VTs7O2E7YTtZO1UsTztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxvQjtLLE87STs7SyxZOztLOztJLEksc0M7Ozs2Qjs7O0c7O0ksa0MsTztJLFc7SSxpQztHOzs7Ozs7TyxPLGU7OztPLHdCLEs7Tzs7TTs7Tzs7Ozs7STtHOztJLFk7O0ksTzs7O0k7OztPO08sTzs7K0IsTzs7Ozs7OztPOzsrQixvQixPLG1CO08sTzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPOzs7OztXO1csTztVO087Ozs7O1c7VyxPO1U7Tzs7OztPOzs7MEIsb0IsTyxzQjtPO087OzhCLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOzt5QixPOzs7TyxPOzsyQixPOzsyQixPO2U7O0k7SSxPOzt3Qyw2Qjs7STtJOzs7Ozs7UTs7UTs7OzsrQjtTLE87UyxPO1M7USxPOzs7Ozs7UTs7OytCO1MsTztTOytCO1MsTztTLE87USxPOzs7UTs7UTs7O1M7K0I7UyxPOzsrQjtTLE87Uzs7O1M7c0I7USw2QjtRLE87O1E7Ozs7K0I7UyxPO1M7USxnQjtRLDhCO1EsTzs7O1E7O1E7Ozs7UzsrQjtTLE87UyxPO1M7UyxPO1EsTzs7UTs7OztTO1M7UyxPO1EsTzs7UTs7OztTO1M7UztTLE87USxPOztROzs7UztTO1EsTzs7UTs7O1M7UztRLE87O1E7Ozs7O1M7UztTLFE7UztTLE87USxPOztRLHVDO1EsTzs7UTs7OztTO1M7UTtpQjs7Ozs7cUMsTzs7SztNO00sTztNO0ssTzs7Rzs7O0s7SyxPO0k7SSxPO0c7RztvQyx3Qzs7STtJOzs7Ozs7eUQ7Ozs7O0s7O0c7O0k7Ozs7Ozs7O087Ozs7O1E7Ozs7O087O0ksTzs7O0k7O0ssTzs7O0k7OztJLEksVzs7OztLO00sTztNLE87SyxPOztJO0c7O0k7Rzs7STtHO2tEO0c7O0k7Rzs7STtLLE87SyxNO0s7SSxJLFU7Ozs7SztNLE87TSxPO0ssTzs7O0k7Rzs7STs7bUIsTztJLG9CLE07STs7O0k7Ozs7STtLLHFDO0ssaUI7STtJO0s7O007Ozs7O087OztNO0s7SyxPO0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O1E7O1M7Ozs7O1M7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7O1M7OztTO1E7O1E7OztTOzs7UztTOzs7WTs7USxXOzs7UTs7UTs7OztTOztTLHNCO1MsTzs7O1Msc0I7UyxPO1M7UTs7UTs7Ozs7UztTOzs7WTs7UyxPO1E7OztROztROzs7Ozs7Uzs7O1M7UTs7UTs7OztTOzs7UztROztROzs7O1M7UztROztRLGtDO1E7O1Esa0M7UTs7UTs7Ozs7O1M7OztTO1M7UTs7O1EsRztTLE07USxJLEksTzs7Ozs7O1E7O1E7Ozs7OztTO1M7UTs7UTs7O1M7Uzt3QixPLHNDOzs7WTs7Ozt3QixJOzs7Z0Q7Ozt3QixPOzs7O1ksTzs7Ozt1QixJOzs7K0M7Ozt1QixPOztXO1MsYzswQyxPLHdCO1MsVTtTO1E7OztRLEksSSxPOzs7Ozs7UTs7STs7SyxrQjtLLE87STs7O0s7OztLLFk7O0s7O0k7Rzs7O0ssWTtLLE87STt5QixtQjtJLFE7STtHOztJO0ksdUMsVztHOztJOztPOzs7Ozs7OztRLE07Tzs7Z0I7Ozs7Ozs7Ozs7Ozs7OztPLHVDOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPOzs7USxNOzs7VztXLGM7VTtPLFc7OztPLGM7O087Ozs7USxNOzs7O1c7VyxjO1U7USxNOzs7OztXO1csYztVO1EsTTtRO08sVzs7Tzs7Ozs7USxNOzs7VztXLGM7VTtRLE07TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OztzQix3QztpQyxnQjtTLFc7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7OztZLE87VztXLE87VTtPLE87Ozs7Ozs7Ozs7O3FCLE87Tzs7O1E7OztZLE87VztXLE87VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7SSxPO0c7O0k7O2U7ZTs7OztpQjtpQjs7cUIsTzs7O08sTzs7Rzs7STs7O007O08sc0I7TSxHLHNDOzs7TyxjO087Ozs7VztXLE87VTtPO08sTzs7TTtNLE87OztJO0c7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Z0IsTzs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7NkI7OzZCOzs2Qjs7NkI7OzhCOzs4Qjs7Ozs7Vzs7Vzs7Vzs7Vzs7VzttQjs7OztROzs7UTs7O1EsTzs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7OztRO2tCO2tCOzs7OztPLE87OztPLE87Ozs7O1EsTzs7OztPLE87OztPOzs7O1E7TyxPOztPOzs7O1E7Tzs7Ozs7OztPLE87O087OztRO087Ozs7Ozs7TyxPOzs7TyxPOzs7Tzs7Ozs7OztPLE87OztPLE87OztPLE87O08sa0IsTztPLE87OztpQjtpQjs7O2lCO2lCOzsyQjs7TyxtQjtPLE87OztPLE87OztPLE87OzZCOzs7O1E7USxPOztPO08sTzs7OztRO1EsTzs7TztPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7NEI7OzRCOztPOzs7UTtRO08sTzs7NEI7OzRCOzs0Qjs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7OztROzs7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLFM7YTs7Ozs7UTs7UTs7UTs7MkI7OztPOztPOzs7O087O087O2E7c0I7Rzs7STs7O2dCO2dCOzs7O0k7OztRLE87O1EsTzs7USxPO2dCOzs7SSxPOzs7STs7TyxPOztPLE87ZTs7Ozs7Ozs7eUIsTzs7O1EsTzs7MEI7O1E7O1M7OzthLE87WTtZLE87VztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZO2E7YTtjOzs7aUI7Ozs7a0I7aUI7aUI7Z0I7YTthLE87OzthO2EsTzs7Ozs7Ozs7WTtZLE87VztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztZOzthOztjOzs7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7O1E7OztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7UTs7O1M7O1ksSSxjOzthOztjOzs7YSxPO1k7WTs7O2E7O2M7OzthLE87WTtZOzt3Qjs7O2E7OztZLE87Vzs7USxPOzs7Ozs7Ozs7WTs7YTs7Yzs7O2EsVzthLE87WTtZOzRCOzs7YTs7O1ksTztXO1EsTzs7O1E7OztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7OzthO2EsTzs7WTtZLE87VztRLE87Ozs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztROzs7OztTOzs7YSxPO1k7WSxPO1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7Ozs7OzttQjtROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztNOzs7TTtLOztNLFk7a0I7O007TztRLFU7Ozs4QjtPOzs7OztPO2U7Tzs7Szs7TTsyQixvQixXO00sVztNLE87Szs7TTs7TztPO007TTtPLE87TyxPO087O087TztPOzBCOztPO087TTtNO007Szs7SywwQjtLO0s7OztrQzs7STtJOzs7O0s7SztJO0k7O0s7STs7Ozs7Ozs7O0s7OztLOzs7STs7Szs7TSxPO0ssYztJOztLOzs7O007UTs7TSxLOzs7Szs7Ozs7TTs7Tzs7OztPOzs7O00sRztPO1E7VTs7UTtROzs7O1M7UztTOzs7Ozs7UTtTOzs7Ozs7Ozs7Ozs7O087TztPLHlCOzs7O1M7O1U7UztTOzs7Ozs7OztPO1EsTTtRO1E7Ozs7UztTO1M7Ozs7O087TztPLHlCOzs7O1MsMkI7UztTOzs7Ozs7OztPO1EsTTtRO1E7Ozs7UztTO1M7Ozs7O087Tyx5Qjs7OztTLDJCO1M7Uzs7Ozs7Ozs7a0I7O0s7OzthOztJO0ksSSxJLHNDOztLLEksZTs7Ozs7OztRO1E7Ozs7Ozs7TyxHLHVCOzs7OztNLE87OztLOztNLFU7TTtPOzs7OztPO087O007TTtLO0s7O007Ozs7TTtNO0ssSSxXLHVDOzs7OztNO08sTTtNOztPO087Ozs7OztROztTLEksdUIsTztTOzs7Ozs7OztNOzs7OztPOztROzs7Ozs7OztRLEc7UztVOzs7Ozs7Ozs7Ozs7VTs7VTtTO1M7UztVOztVOzs7Ozs7O1E7Uzs7O087UTs7Ozs7O007TTs7STs7Szs7O007OztNO007Ozs7Ozs7SztLO0sseUIsd0I7SztJOztLOztNO007TTtNOzs7O087UTs7O1E7UTs7Ozs7OztPO087Tyx5Qix3QjtPO2dCOzs7O087Ozs7Ozs7TTtPO087TztPO087Ozs7Ozs7O1U7Vzs7Ozs7Ozs7Ozs7O1c7O1c7VTtVO1U7Vzs7VztVOzs7OztVOzs7OztROzs7Ozs7Ozs7Ozs7OztNO087TztPO087Tzs7OztRO1M7Ozs7OztTOzs7Ozs7O1U7VTtTO1M7UztVOztVO1M7Ozs7OztROzs7Ozs7Ozs7O0ssSSwrQjtLO0s7OztLO00sb0I7TSxPO0ssTztJOztLLFc7SyxPO0k7O0ssVztLLE87STs7SyxrQztLO00sTTs7TTtNLE87OztLO007TSxPOztLO007OztPOzs7Ozs7OztPO1E7UztTOzs7UTs7TztRO1E7OztPOztNOztnQyx1QztnQyxzQzs7OztRLEkscUI7USxxQjs7Tzs7O1c7WTtZO1k7VyxxQjtVO1EsTztPLE87OztpQyxzQztpQyx1Qzs7OztPLEksdUI7TyxzQjs7TTs7O1U7VztXO1c7VSxzQjtTO08sTztNLE87O0s7O007Ozs7OztNO007Ozs7Ozs7UztVO1U7O1UsTztTLE87OztPO1E7UTs7USxPO08sTzs7O0s7TTtPO087Ozs7Ozs7SztNO007Ozs7Ozs7O0s7OztNO00sTTtrQjs7Z0M7Szs7TSxlO00sSTtLO007SztLLEk7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7MkI7Ozs7OztXO1k7Ozs7OztZOzs7Ozs7Ozs7OzBCOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztTO1U7Vzs7Ozs7VTtVO1U7O1M7Ozs7O087Ozs7O0s7O007TTtNLEk7TSxNO007TTtNO007OztLO007O087UTs7OztPLGM7Ozs7O1E7UTs7Ozs7YztlLCtDOzs7UTs7O087OztPOzs7OztRLE07USxNO1E7Ozs7UztVOzs7O1M7VSxJLE07Ozs7OztVO1U7Ozs7Ozs7VztXOzs7OztTOzs7OztPO1E7USxPOzs7WTthO2E7YSxTOzs7Tzs7Ozs7WTthLE87O2EsTztZO1ksVTtZLE87Vzs7Ozs7Tzs7TztPOzs7TztROztXLE07VTtRLFM7OztXO1c7VztVO087TztPOztNLEksbUI7Ozs7SywrQixTOztNO087O1EsUTs7O1E7bUMsTyxjLHFCO08sTzs7O007SztLLGdCO0s7STs7SztNLE07SztNLFk7TTs7O0ssTztJOztLO00sTTtLO00sWTtNOzs7TTs7Z0M7OEIsVztLLG1CO0ssTztJOzs7Ozs2QixZOzs7O2tDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVyxPOzs7SztLLFc7STtJLFE7O0s7SztLO0k7STtJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksb0I7SSxPO0c7OztJOzs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O1E7OztTO1E7O1E7Ozs7UztTO1EsTzs7OztnQjs7STtHO0c7O29CLE8saUM7O3NCLDRCO0ksTztHOztJLFc7YSxNO0k7OztLOzs7STtHO0c7O0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxTO0ssUTs7O3dCLE8sa0M7SSxtQixNLHdDO3NCLDBCO0ksSTs7b0I7cUM7aUI7Ozs7Ozs7OztTLGE7O1E7Ozs7Ozs0Qjs7UTs7Ozs7Ozs7UTs7Ozs7UyxzQixPO1MsYTs7UTs7Ozs7Uzs7O1UsTztVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7O0ksVztJO0c7OztJO0ssTTs7STs7OztJO0ssTTs7STs7OztJLFcsTTs7STs7OztJLFcsTTs7SSxlOzs7cUIsa0IsZ0M7NEIscUI7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0k7Szs7O007OztLLG1COztJLE87RzsyQixPLDBDOztJO0s7aUIsTzs7SztJO0ksWTs7SztLO29CO007Ozs7OztPLE07Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtNLEk7Ozs7Ozs7TSxpQjtNOztJO0k7Rzs7O0s7SyxZLE87O0s7TSw2QjtNOzs7OytCOzs7STtJLE87Rzs7SSxXO0ksTztHOztJO0k7Ozs7Ozs7OEI7O1M7OztVOzs7OztpQixPOztLLFc7O0c7O0k7O0ssaUM7SyxPO0k7SSxPO0c7OztJO0c7OztLO0s7b0I7Ozs7Tzs7TTs7O087O1U7VyxNOztVO1M7TyxROzs7VTtVO3lCO1c7Ozs7O1ksTTtZOzs7Ozs7Yzs7ZTtlLE87Ozs7Ozs7OzthLEksOEI7Ozs7OztnQixvQztnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTTs7O2UsTTs7Ozs7O2E7YSxPOzs7Ozs7Ozs7OztXO1csSSxrQjs7Ozs7OztXLFc7YztZO1csTTs7UztvQyxzQztPOzs7OztJO0k7Rzs7SSwwQjtJLG9CO0c7O0ksWTs7STtHOztJLFU7O0ksRyxrQjtJLEcscUI7SSxJO0k7OztJLFk7O0ksRyxrQjs7STs7OzhCLHFCOzhCLCtDOztJLFc7ZTs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7OztNLHFEO007OztJO0c7OztLO0ssYztJO0ksTztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7O0s7Ozs7O00sUTtNLFU7Ozs7c0Q7Ozs7O0s7OztNO08sVztrQiw0QjtLO0k7SSxPOzs7SSxvQjs7OztNOzs7Ozs7OztXOzs7O1U7Ozs7Ozs7Vzs7O1U7Ozs7TztxQzs7OztROzs7O1M7MkI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7O1E7OztNOzs7STtHOztJO0k7O0s7OztNO007O0s7O0c7RyxhOztJLHNCOzs7Ozs7OztROzs7Tzs7Ozs7Ozs7O1ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7STtJOzs7Ozs7O1Msa0M7UyxTOzs7O2lCOztLOztHOztJO0ksdUM7STtHOztJLFc7STtHOztJLFE7O0ksa0IsdUI7STtLOzs7STtHOzJCLFcsNkI7O0ksbUMsVzs7Ozs7SztLLFc7STtJLFc7SSxPO0c7Ozs7Ozs7Ozs7TztRLEs7USxRO1EsTTs7UTtTOzs7Ozs7UyxPO1M7Ozs7O21CO087OztXLFk7Vzs7Ozs7OztZOztZO2EsTTthOzs7OztnQixHLDRCO2lCO2dCLE07ZTthOzthLE07WTs7OztnQjtnQjtlO2E7Ozs7aUI7Ozs7YTs7O2dCLG9CLE87Z0IsTztlO2EsUTthLE87OztnQjtnQixPO2U7YSxPLFc7OztnQjtnQixlO2U7YTtlLFc7YSxTO2EsVzttQzthO2U7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7O29COzs7Ozs7Ozs7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7dUI7Ozs7Ozt3QjsyQyxPLGtDOzs7Ozs7OzsyQjs7NEI7NkM7a0Q7Ozs7OzswQjs7OzsyQjs7OzhCOzs7OztrQzs7MEI7OzJCOzRDOzs0Qzs7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs4Qjs7O3lCOzs7OzswQjsyQzs7Ozs7Ozs4Qjs7O3VCO3dCO3dCLE87MkMsYzt3Qjt1Qzt1Qjs7O3NCLEc7Ozs7O3lCOzBCLE87MEI7MEI7Ozs7O3lCOzs7O3VCO3dCOzs7Ozt1Qjt3QixXO3dCO3dCOzs7Ozs7aUI7Ozs7ZTthOzs7Z0I7Z0I7ZTthLFksVzthOzthOzs7WTtvQjs7O1c7WTs7O1c7Ozs7Ozs7O1E7OztRLHFCO1EsVztPOzs7OztNO087Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7UTtTO1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztZLEk7WSxNOzs7Ozs7O1c7WTtvQjt1Qjs7WTtZLEk7OztXLEk7Ozs7Ozs7OztROzs7O2E7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YyxTOzs7UyxPO1E7Ozs7YztlO2UsbUIsc0I7OztpQjs7O1E7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7O087UTs7Ozs7STtHOzs7Szs7Ozs7OztPO1EsUTtRLEs7Tzs7Ozs7Tzs7O2tDO1EsSTs7Ozs7TTtPLEk7Ozs7Ozs7Ozs7OztNOztRLE07TyxVO087O00sSTs7STs7Szs7Ozs7Ozs7O0ssUztLO007Ozs7OztNLE87Szs7Ozs7STtJO0c7O0ksVyxNOzs7Ozs7MEI7TTtPOzs7VTtVO1csTTtVLEk7OztTO08sVTtPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7Uzs7O1U7OztXO1Usc0I7UztPLE87Tzs7O1U7VTtTO08sUztNOzs7STtHOztJO0c7O0k7Szs7O0k7Rzs7SSxZLE87STs7O0s7SyxPO0s7STs7O0k7eUIsa0IsTywyQjtJLFk7Ozs7Ozs7SyxhOzs7O0k7Rzs7O0s7Ozs7O007TSxNO00sVztNLE87O0s7O2U7Ozs7Ozs7SSxPO0c7OztLOzs7OztNLE07TSxrQjs7Szs7OztLOzs7TTtvQjs7Z0I7SSxXO0ksaUI7RztpQyxXOzBDLFc7O0k7O3lFO0s7SztLLE07O0k7OztjLGE7YTs7Ozs7Rzs7STt5RTtJLE07Rzs7STs7O0ssTzs7SSxNO0c7O0k7O0c7O0k7a0M7O0ssTTs7STtHO0csbUI7O0k7O2E7YyxZO2MsTTtjLFE7O2M7ZSxPO2UsTztjLE87OzthLEksVTs7Ozs7YztlLE87ZSxPO2UsTztlLE87YyxPOzs7YSxPOztHO0c7STs7STs7STs7Ozs7Ozs7Ozs7STs7Rzs7STs7TTtPLFU7TztPOztPO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7TSxRO007TSxNOzs7UztRO007O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSSw4Qjs7Ozs7Ozs7STtHOztJLFc7O0s7SztLO0k7STtJLE87Rzs7STs7O0ssTzs7SSxNO0c7O0k7OztLLE87O0ksTTtHO0c7STtVO0k7VTs7SSxpQixPO0ksUztJLDBCO0c7O0ksUyxNOztJLFc7STtLOzs7O0k7Rzs7SSxVOztLO007Ozs7OztLOzs7ZTtnQjtnQjtlOzs7O2M7Ozs7OztNLE07OztJOzs7O2U7ZTs7Ozs7OztjO2MsTzthO0c7O0k7Szs7O2U7Yzs7STs7OztlO2M7d0M7YyxVO2M7YTtHOztJLHlCLFM7O0s7TTs7Tzs7O087NEIsUyxzQjtNOzs7SztJO0k7Rzs7SSxZO0k7K0I7Ozs7SztLLGdCO0k7STtLLE87SyxPO0s7OztLLFM7STs7Ozs7SztLO0k7SSxXO0k7Rzs7STtJOzs7OztPLFM7UTtPLEk7Ozs7Szs7Rzs7O0s7SyxPO0k7SSxVO0k7Rzs7SSxZOztJOzs7Ozs7SSxZLE87Ozs7Szs7Ozs7O0k7OztJO0s7Szs7Ozs7SyxRO007Tzs7Vzs7OztPO087TTs7Ozs7NEI7Ozs7O2tCOztLO0k7SSxPO0c7K0IsdUI7O0k7Rzs7STs7O0s7TSxXOzs7SSxXO0ksTztHOzBCLHdCOytCLHVDOzhCLDhDOztJO0c7NkIsVzt1QywrQjs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTyw2QjtJO0ksTztHOztJO0k7Szs7TSxRO007MkIsUSw4QixTOzs7Ozs7Ozs7OztVOzs7OztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7O0s7TSxNOztNOzs7OztPO087Ozs7Ozs7OztvQjs7O0s7TSxVOzs7Ozt3QjtVOzs7OztXLFk7O1c7Ozs7OztlLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0ksWTtJO2dCOztJO0c7O0k7SyxZO0s7Ozs7O007OztLO007Szs7NkI7OztROztRLE07O0k7STtLOzs7SztJO0c7O0ksUTtJOzs7Ozs7O0c7O0k7Ozs7Ozs7OztROztROzs7UTtROztRO1E7UyxPO1MsTztRLE87O0k7RztHOztJOztpQjtLOzs7Ozs7O007Ozs7VTtXOzs7WTs7O1csSSxZOzs7cUM7OztXLGU7O1UsTztTOzs7O00sTztNLE07SyxJLFU7Ozs7TSxJOzs7Szs7O00sUTs7Ozs7TztRO1EsMEI7USxPO087ZTs7Ozs7O007TztPOzs7YSxzQjs7OztPO087Ozs7O0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUIsSTs7Ozs7UTs7Ozs7Ozs7TTtPLEksVTs7Ozs7OztPOzs7UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7Ozs4Qiw4QjtRLE87Ozs7OEIsOEI7USxPOztLOzs7O0k7Ozs7UTtrQjs7Ozs7Ozs7O1M7VTs7OztXO1U7Ozs7Ozs7Ozs7OztTO1U7O1c7VTs7Ozs7O087Ozs7UTtRO1E7Tzs7O1EsVzs7TyxPOztJLE87Rzs7STtnQixPOztJO0c7OztJO0k7O00sTztLLEksWTs7OzswQixNOzs7Ozs7Ozs7Ozs7Ozs7a0I7TTs7Ozs7Tzs7O007Ozs7TyxJLFU7Ozs7UTtTOzs7Ozs7Tzs7O1E7UTs7Ozs7OztHOztJOzs7OztNLEs7TztNO087OztNO2lDOzs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7O1EsMEM7Ozs7Ozs7Ozs7O2lCOzs7Ozs7STs7O0s7SztJLG9CO0k7SyxRO0s7Szs7O0k7Ozs7Ozs7Ozs7O0k7Ozs7Szs7O1U7Ozs7Ozs7Ozs7VTs7OztZO0k7OztJOzs7Ozs7Ozs7Ozs7O1U7Ozs7VztXOzs7Ozs7Ozs7Ozs7Ozs7USxNOzs7Tzs7aUI7Ozs7Ozs7Tzs7UTs7OztPOztPLGlCOztRLE07Tzs7O1EsUztRO1E7Ozs7Ozs7O29CO3FCLG9CO3FCOztvQjs0Qzs7Ozs7Ozs7Ozs7Ozs7VTs7O1c7Ozs7OztjOztlOztjOztlO2dCOzs7Z0I7a0I7Z0I7O21CLFk7bUI7Ozs7O29COzs7bUI7Ozs7OzttQixNOztrQjtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07Ozs7Ozs7Ozs7Z0I7aUIsTTs7O29COzs7cUIsTTtvQjs7OzttQjtpQjttQjs7Ozs7ZTs7O21COzs7b0IsTTttQjs7OztrQjtnQjtrQjtlOztjO2UsUzs7Ozs7O2U7OzttQjttQjtrQjtnQjtrQjs7Z0IsTTtlOztnQixtQyxtQjtnQjs7bUIsTzs7Ozs7Ozs7O2tCO2dCLE87Z0IsTztnQixZO2dCO2tCO2dCO3NDLCtCO2lCLFk7Ozs7Z0I7aUI7OztpQjs7Ozs7Ozs7c0I7dUI7O3dCOzBDLE8sZ0M7d0IsTzt1Qjt1QixPLHlDOzs7a0IsVTs7O2lCO2tCO3lDO21COzZCOzs7Ozs7O2dCO2lCOzs7b0I7Ozs7O3FCOztxQjtvQjtvQjtxQixVO3FCOztxQixVOztxQixPOzsrQjs7OztvQjtvQjtvQjttQjtpQixVOzs7Ozs7Z0I7aUI7Ozs7Ozs7Ozs7OztjO2U7aUI7ZTs7bUI7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7Ozs7cUI7Ozs7Ozs7OztnQjs7Ozs7Ozs7OztpQjs7O2tCLFE7Ozs7Z0M7OztpQjs7O3FCO3FCLGM7b0I7a0IsUzs7O3FCO3FCLGM7b0I7a0IsUztrQixPO2tCOzs7a0IsUztpQjs7Ozs7O2lCOzs7cUI7cUI7b0I7a0IsTzs7O3FCO3FCO29CO2tCOzs7cUI7Ozs7Ozs7O2tCO21CLEk7OztzQixrQjtrQzs7c0I7dUIsSSxPOzs7Ozs7OztzQixPOztrQjtrQjtrQjttQjttQjs7O3NCOzs7O3FCO2tCOzttQjs7Ozt1QixvQjttQzs7O3NCO29CLFM7b0I7b0IsTzs7b0IsTzs7Ozs7NEI7Ozs7OztjOztXOzs7ZTtjO2M7O3dCLG9COzs7Ozs7aUM7O3dCOzs7OzBCOzs7Ozt5Qjt5Qjt3QjsyQzs7Ozs7Ozs7Ozs7Ozs7O1U7O29COzs7Ozs7OztVOztXOztjOzs7ZTs7O2M7O2lCOzs7cUI7O3NCLE07OztxQjtvQjtrQjtvQjs7Ozs7Ozs7Ozs7aUI7OztxQjs7c0IsTTs7O3FCO29CO2tCO29COzs7Ozs7aUI7a0I7OztxQjtxQjtzQixNOzs7cUI7b0I7a0IsSztrQjs7Ozs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7O1U7O29COzs7Ozs7OztVOzs7b0IsWTtvQjs7O3NCLFc7c0IsTzs7O3NCLE07OztxQixPOztvQjtxQjs7c0I7c0IsUTs7c0I7Ozs7O3FCO3FCOztvQjs0Qzs7Ozs7Ozs7Ozs7Ozs7O1csTTs7VTs7O29CO3FCOztvQjs7O3NCO3NCLE87OztzQixNOztxQjs7c0I7cUIsTzs7b0I7cUI7O3NCO3NCOzs7O3VCOzt3Qjs7OzJCOzJCOzRCOzRCLE07NEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCOzBCO3VCOzs7cUIsTTs7O29COzRDOzs7Ozs7Ozs7Ozs7O1U7OztXOztjOzs7ZTtjLEc7ZTtnQixPOzs7bUIsa0IsUTs7Ozs7OzttQjtrQjtlOzs7OztlO2M7YztlO2U7aUI7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7O2lCOzs7Ozs7a0IsTTtpQjs7Ozs7Ozs7OztpQjs7OztpQjs7Ozs7Ozs7OztlO2dCOzs7Ozs7OztnQjs7Ozs7O2M7OztXOzs7O2UsWTtlOzs7Ozs7O2dCOztnQjs7OztpQjtpQjtpQixPO2dCLFMsNkI7Z0IsVTtnQjtpQjs7a0I7a0I7O2tCOztxQixvQjtxQjs7aUI7OzJCOzs7Ozs7O2dCO2lCO2lCOztnQjs7MEI7Ozs7Ozs7ZSxNOztjOztVOztvQjs7Ozs7Ozs7VTtXLE87Vzs7Yzs7O2U7OztlLFM7ZTs7O2U7aUI7Ozs7OztjOztXOzt3QztjOzt3QixvQjs7eUI7OzBCOzs7NkI7Ozs7Ozs7NEI7eUI7O3dCLE07Ozs7Ozs7OztVOztvQjs7Ozs7Ozs7O0c7OztJO0ssUTs7O0s7OztJO0c7O0k7a0Q7STtHO3dCLE8seUM7O0k7Ozs7NkIsMEM7SyxPOztJO0c7O0ksTztHOztJLFk7Ozs7O1M7OztVLE87UztVLFc7VTs7Ozs7UztRO0ssSyxpRDs7STs7O0k7SztHOzs7STtLO007TSxVOzs7SyxzQjtLLE07O0k7SyxZO0s7Z0I7SztJLEksVTs7OztNLE07Ozs7SSx3Qjs7OztLO00sTztNLE87TSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7OztJO0s7SztLO087bUMsbUI7STs7Ozs7Ozs7Yzs7YTtHOztJOztHOztJOztHOztJOztHOztJOzs7OztROzs7UTs7c0M7Ozs7OztROzs7Ozs7O2E7YTtZO1ksTztXOztTLHNCO1MsTztTOztTO1E7O1E7Ozs7O1Msc0I7UyxPOzs7WTtZO1c7UTs7Z0I7Ozs7USx3QztROztRLDJDO1E7O1E7Ozs7UztROztzQzs7bUM7Ozs7Szs7SSxPOzs7STtrQzs7SyxtQixJO0s7O0k7SztLLFM7SyxZOztLO0ssZTtJO0kscUI7eUIsbUIsVTtJO0ssYztLOzs7O1c7Ozs7Ozs7Ozs7OzBDLGtDO2dCLE87Ozs7Ozs7OztnQixPOzs7OztXLGM7NkIsZSwyQjtXLGdCO1c7OztvQjs7O1U7VTtXO1csYztVOztXLE87O1U7O1csTzs7VTtpQjtVLHVCLFcsZ0M7VTs7MEI7OztXOztVLE87Ozs7OztHOztJO0ssTzs7O1M7Ozs7c0IsdUI7SSxJLE87Ozs7Ozs7OztjOzs7OzZCOzthO0c7O0k7a0MsTzt1QixNOztJO0c7O0k7O0s7SztJO0ksSSxPOztLO2lCLE87OztvQjs7OztNLFc7TTs7TTtPLE07aUI7OztNLE07O0s7STtJLFc7Rzs7STs7Tzs7Ozs7UTs7O1c7O1EsTztPOztPLE07Z0M7O0c7O0k7SyxXOztJO0c7OztJLFM7O0ksTzs7O0ksZTt5QixrQixjO0k7SyxXO0ssTztLO0s7SztLO08sbUMsaUI7Szs7Ozs7Ozs7Ozs7VTtVLG9CO1U7VyxlO1c7OztXLE87O1csbUIsTzs7VztVO1UsVTs0Qix1QjtVO1csTztXOztXO1c7VTtVO1csYTtXO1c7OztnQjtpQjs7OztrQjs7OztpQjs7MkI7Ozs7Ozs7O2dCOzs7Ozs7OztXLE87VTtrQjs7UztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJLFU7SSxTOzs7Ozs7Ozs7STs7SztNLEksYywyQzs7Ozs7TyxTO087Tzs7O0k7RztHO0k7STtJO0k7O0k7STtJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHLHFCOztJLEksUTs4QixtQztJLGE7STtJO0c7O0k7SyxNOztLLE07O0ksVzs7OztLOztNOzs7Ozs7Ozs7OztNOzs7STtLO2lELDJCOzs7STtHOztJLHFCOztLLE07SSxzQjs7SSxJLFE7Ozs7Ozs7Ozs7Ozs7STs2Qix5QjtHO0c7STtJO0k7STs7STtJO0c7O0k7Ozs7Uzs7O1MsSSxTLGtCOztVOzs7Ozs7Ozs7UztTLGU7UztRO0ssTzs7OzBCLE87d0IsTyxpQjtJLE87Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztLO0k7Rzs7STs7Ozs7Ozs7OztxQjs7Szs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7Ozs7b0I7O0k7Rzs7STs7OztLO0k7Rzs7STtHOztxQiwyQjtJO0ssUTs7O0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8scUQ7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7O2dDOzs7Szs7STtHOztJO0s7OztJOzs7Ozs7Ozs7Ozs7OztJLE87Rzs7O0ssUTtLLGdCLE87SztNLE0sVztNLE0sVztNLE0sVztLOztJO0k7dUI7O2tCO0kscUIsVTtrQjs7STtHOztJLFc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7O0ksVTtJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7a0Q7Ozs7TTs7OztPOztNOzs7TTtNO007OztJO0k7Rzs7STt3Qjs7OztzQjtNOzs7TTs7O0k7STtHOztJO21COzs7O3NCO007OztNO007TTs7O0k7STtHOztJO0s7OztLO0k7Rzs7O0s7TTs7O007OztNOzs7OztPOzs7Ozs7OztNO087Ozs7OztLOzs7Ozs7OztJO0k7Rzs7STtLOzs7SztJO0c7O0k7Szs7OztNO0s7STtJO0ssUTs7O0k7Ozs7Ozs7O0s7O007O0s7Ozs7Ozs7VTs7Ozs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxPOzs7aUQ7SyxPOztJOzs7Ozs7Ozt1RDs7SyxPOzsrQjs7O0k7SztLO0s7O0s7Ozs7TTtLO0k7SSxHOzs7c0I7TTs7Tzs7O1U7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7c0I7TTs7Ozs7Ozs7OztNO007TTs7O007OztJO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0k7b0Msc0I7SSxPO0c7Rzs7SSxnQjtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2tDLHlCO2EsUztZOzs7WTs7OzthLFU7Ozs7dUI7OztZOzs7Ozs7Ozs7Ozs7bUI7Ozs7OztZOzs7O2EsK0I7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7OztZOzs7OzthLFU7OzsyQjtZOzs7OztZOzs7OzthLFU7OzsrQjtZOzs7WSx1QixVOzs7O3lCOzs7WTs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7VSxTOztTOztXOzs7WTtxQjtVLE87O29COzs7c0I7Ozt3Qjs7OzBCOzs7NEI7Ozs7Uzs7OztJO0c7RztJLGE7SSxvQjtJLG1CO0ksZ0I7STtNO0k7TTtJLGlCO0k7TTtJO007SSxnQjtJO007STtNO0ksb0I7STtNO0k7TTtJLG1CO0k7TTtJO007SSxlO0k7TTtJO007O0k7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7O0c7O0k7SyxNO0s7SyxROzs7O0s7Tzs7VTs7STs7Tzs7Tzs7TztRLFc7USxPO08sRztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STt5QixtQixlO0k7SyxPO0s7STtjOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOzs7STs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztRLE07TztJO1U7OztLLFc7SyxPO0k7STtLLFM7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7Rzs7SSxtQixNOztJO0c7O0k7OzBDOztJLE87Rzs7O0s7Ozs7Ozs7Ozs7Ozs7OztLO0k7SSxPO0c7O0k7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTtjO2M7Ozs7Ozs7Ozs7Ozs7OztXO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7UTtROzs7O007TztRLFE7UTtRLE07USxPO1E7OztXLFc7O1EsVTs7Ozs7Ozs7UTs7Ozs2Qjs7Ozs7Ozs7Ozs7OztROzs7Ozs7Tzs7OzRCOzs7Ozs7Ozs7OztLOzs7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7TTtNLFE7OztNO0s7Ozs7a0I7O0ksTztHOztJO0ssTztLO0ssUTs7OztLLFE7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksWTtZLE87STs7O0s7OztJO0c7O0k7STs7Ozs7NEIsTzs7O1M7Ozs7Szs7Rzs7STs7Ozs7USxPOztRLE87O1EsTTsyQjs7SSxPO0c7O0k7STtLLE87O0k7Rzs7SSxpQixPO0k7Ozs7Ozs7O0k7Szs0QjtLLE87O0k7SyxPOzs7STtHOzs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7O1EsbUM7UTs7Ozs7YTs7O2MsYzthOztZOzs7Ozs7O1EsUTtRO1U7O08sTzs7Ozs7OztTOzs7OztVO29COzs7NkIsNkM7VSxHO1c7WTs7Ozs7ZTs7Z0IsTTs7ZTtjO1ksVztZO1k7O1ksTztZO2M7Ozs7Ozs7Ozs7VyxxQjtXO1ksVTs7O1ksVTs7O1ksVTs7O1k7Vzs7Ozs7Ozs7OztzQjs7Ozs7OztPOztRLFU7OztRLFU7OztRLFU7OztRO1EsTztPOzs7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs4QjtXO1ksUTs7O1c7O2EsTTtZOzthOztZOzs7O1k7WTs7O1c7WSxNO1csVTtXOzhCLGU7WSxpQjtXO1csZTtnQyxtQixVO1csVTs7WTtZLGU7VztXO1ksWTtZLE87WSxPO1ksTztXOztZO1c7VztZO1k7a0MseUM7WSxNO1k7Vzs7Ozs7UTtVOzs7O1Esa0I7USxZO1EsWTs7OytCO1c7WSxPO1ksSztZLHNCO1c7Ozs7b0I7OztVO1E7Ozs7OztVOzs7YyxXO2MsVzthO1csVTtrQyxtQixlO1csUTtXO2E7Ozs7O1csTTtVO1c7O2E7Ozs7OztTO2dDO1UsTztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7Ozs7OztXOzs7O1c7VTtPLE87O087OztRLEs7MkIsNkI7USxVO1Esc0I7USxPO1EsTztPOztPOztROzs7TztROzJCO1E7Ozs7O1M7OztpQjs7OztPOzs7UTs7Ozs7Ozs7aUMsVzs7O1k7YTs7OzBCO2E7Ozs7O2M7OztzQjs7OztZOzs7O2EsTzthLFE7WTs7Ozs7c0I7OytDO1EsTTs7OEM7TyxNOztPLG9DLE07TyxZLFc7TyxzQjtPO1E7O1Msc0I7UTs7Ozs7USxXO1E7O3dCOzs7O087Ozs7Ozs7UTs7UTtTLFU7Ozs7WSx3Qjs7OzthO2M7OztjOztpQixNOzs7aUI7a0IsTzs7OzthO2MsTzs7O1ksVztZOzs7Ozs7O1E7UyxNO1E7O1M7VztTLE87UTs7Ozs7Ozs7OztPO1EsVTs7O1c7VztZOzthLGU7WTs7Vzs7O1ksYTs7O1k7YTs7O2E7O2dCLE07Ozs7a0M7OztnQzs7Vzs7OztvQjs7VTtRLEs7USxPO1EsVzs7OzswQixnRDtRLE07TztzQixNO1EsVztRO1M7Ozs7dUI7O1M7OztZLE07Ozs7b0IsTTs7Ozs7OztRLGE7UTtTOzs7Ozs7Uzs7O1ksTTs7Ozs7OztZOzthLE87Ozs7OztPLDBCOztPOztPOzs7UTtROzs7UyxXO1M7Ozs7OztXOztXO1ksTzs7WSxPO1c7O087USxPOztRLE87Tzs7Tzs7OztROzs7Ozs7Ozs7WSxNOztZO2EsTzs7OztRO1MsTzs7O087USxPOztPOztPOztRLE87UTtPO1c7UyxNOzs7UyxJLFM7Ozs7VztZOzs7O2U7Ozs7O2U7Ozs7O1MsVyxNOzs7O3VCOzs7Ozs7YTs7UTs7Ozs7Uzs7O2lCOzs7Ozs7UTs7UztTO1E7O087O1E7Tzs7Tzs7O1E7Tzs7Tzs7O1E7Tzs7Tzs7Ozs7O1E7UTtPOztPOzs7USxRO087O1U7O1c7VyxXOzs7Vzs7OztVOztXOzs7O1U7OztXLE87OztPOztPOzs7USxRO1E7Tzs7OztxQjs7Ozs7Ozs7Tzs7O1EsUTtRLFM7USxRO087O087Ozs7USxRO1EsUztRLFE7Tzs7Tzs7O1EsUTtRLFM7USxNO1E7OztXO1c7OztVO1EsTztPOzs7Ozs7aUI7Ozs7Ozs7Ozs7O1M7Ozs7O1UsYTtVO1U7O2E7Ozs7VTtpQjtTOzs7O1E7Ozs7UyxRO1M7UTs7OztpQjs7OztPO1EsTzs7Tzs7Tzs7O1E7UTtPOzs7Ozs7UTs7MEI7TyxJLGlDO087O08sb0IsVzs7O1M7VSxPO1UsTztVO1M7Ozs7O1E7UyxPOztROzs7UTtTLE87O1E7OztRO1MsTztTO1E7O087USxPO1E7UTtRLGU7USxLO1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7Ozs7VyxZO1c7OztZLFU7WSxXOzs7O1k7O2dCOzs7OztZO1k7Ozs7O2dCOzs7O1ksTTtZO1csTzs7Ozs7UTs7WTs7Ozs7UTtRLGM7OztXOzs7Ozs7OztVO1E7Ozs7Ozs7USxTO1E7VTs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7O1c7Vzs7Ozs7Ozs7cUI7OztVO2lCO087Ozs7ZTs7Ozs7STs7O0k7OztJOzs7STtJOzs7O1E7OztnQjs7O0c7O0ksb0I7SSxPO0c7OztLLFk7SztJO0ksVztJLE87Rzs7STtJLFk7O0k7O0c7OztJOzs7O0k7O0s7STtJO0s7SywyQiw0QztJLE87OztJO0k7STs7Ozs7Szs7UTs7Ozs7UyxPO1E7OztRLDJCOzs7Ozs7Ozs7Uzs7OztpQjs7Ozs7SztJOzs7OztpQztPLG1COzs7O087OztRO1E7O1c7OztjOztjLFM7O2M7O1U7K0Isb0IsVztPLEc7Ozs7Ozs7OytCOzZCO087UTs7O1c7VyxvQjtXLFc7VTtRLE07USxTO1E7Ozs7Ozs7VTs7Ozs7O1csTzthOzs7Yzs7Ozs7Ozs7Ozs7Ozs7Vzs7O087UTs7O1c7VztVO08sTzs7TTs7OztPOzs7Ozs7SyxnQyxPO0ssb0I7SyxXO0k7SSwyQjtHOzs7SSxnQjs7Szs7Ozs7Ozs7Ozs7Ozs7OztRLEc7UztVLE87VSxjO1U7Ozs7Ozs7Ozs7Ozs7Uzs7aUI7Ozs7Ozs7OztvQjtROzs7OztLOzs7STtHOzs7STs7Ozs7O08sVTtVO1E7UztVLE87OzthO2EsVztZO1UsaUI7UztVLE07Uzs7OzhCLDhDO1UsbUI7OzthOztjLFU7YyxPO2E7YSxPO1k7VSxROzs7YSxXO1k7VSxVOzhCO1UsUztnQyw0QztVLGlCOzs7YTthO1k7VSxNO1U7OzthO1M7Ozs7O1U7Ozs7Ozs7O0k7Ozs7O0k7Szs7O00sTTs7O1Msb0IsTTtTLE87UTthOzs7b0IsNkI7SSxZO0ksa0I7SSxVO0k7O1k7O0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOztJO0k7Szs7O1Msb0I7Ozs7Z0M7O3NFOzs7UyxNO1E7TSxTOzs7Uzs7Ozs7VTtVLFE7Uzs7TTtRO0ssc0IsMEI7OztLLFksc0IsWTtLOzs7Ozs7O007TSxRO007SztNO00sTyx5RDtJO0k7Rzs7STtJLGU7Rzs7STtjO2M7OztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOzs7O007Ozs7O08sTztPLE87VTtPLFc7TyxPOzs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO3VCLGdCO0ksa0I7SSxPO0c7O0k7Ozs7eUI7SSxlO0c7OztLOzs7TTs7Szs7Ozt3Qjs7STtJLE87Rzs7OztLO0s7STtJOzs7OzthOzs7STs7OzsyQjs7NkI7O0ksTztHOzs7STtJOzs7O1E7O1MsYTtTOztROzs7Ozs7a0I7Ozs7OztRO1MsTTtTLFc7UTs7Ozs7bUI7O1E7O1MsTTtTLHFCOzs7O1k7Ozs7YTs7O2U7O2dCOzs7Ozs7O29DLGtCOzs7O2U7Ozs7O2dCOzs7Ozs7O2U7O1k7VztTLFU7Ozs7OztZO1k7O1c7UyxhO1EsRztTO1U7OztTOzs0Qjs7UTs7Ozs7Z0I7OztROzs7Ozs7OztvQjs7OztROzs7OztTOzs7OzthOzs7Ozs7OztZO2E7YSxPO2E7YTtlOzs7Ozs7OztZLE87Ozs7Ozs7O1c7OztTOzs7Ozs7Ozs7UTs7UTs7O1M7Ozs7O1E7O2dCOzs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7O1E7O2dCOzs7Ozs7OztHOztJLGM7Ozs7Szs7O2lCOzs7O0k7OztnQjs7O0c7O0ksWSxNOztJLE87O3FEOzs7Ozs7Ozs7UyxNO1E7Ozs7O1M7O1E7Ozs7Ozs7Ozs7UTs7UztTOzs7O1k7Ozs7O2E7OztlOzs7O2dCOztnQjs7O21CO21CO29CO3FCOzs7Z0M7cUI7Ozs7O29DOztvQjs7OzsyQzs7O2tCO2dCOzs7Ozs7O3FCOzs7Ozs7OztlOztlOzs7O2dCO2U7Ozs7Z0I7O2lCLFc7aUI7bUI7Z0M7OztpQjs7NEI7a0I7bUIsTzttQixNOzs7Ozs7O3VCOzs7Ozs7O2dCOzs7d0I7O2dCOzs7d0I7Ozs7O2U7O2dCOzs7bUI7Z0M7ZTs7Ozs4Qjs7Ozs7ZTs7WTtXO1MsVTs7Ozs7Uzs7UztzQyw2QjtTLFE7UyxNO1MsUTs7OztVO1c7O2M7Yzs7Ozs7NEI7OztrQjs7Ozs7OztTLEksTSxnQzs7OztVO1c7aUM7Vzs7K0I7Ozs7UztVLE87OzthO2E7YTtZO1UsTzs7Z0M7VTs7OzsrQjs7VSxPOzs7Ozs7d0I7OztROztROzs7Uzs7Ozs7UyxTO1E7Ozs7UTs7O1M7Ozs7O1MsUztROztROzs7Ozs7O1ksVztXO1MsYTtTLGdCOzs7Uzs7O1E7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7O1MsSztVLE07UztVLE07VSxNOzs7OzthO2E7Ozs7OztZO1UsWTs7O2E7YTs7Ozs7O1k7VSxZO1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLOzs7O007OztLOzs7YztjLE87O2E7O0ksaUIsUztJO0c7O0k7STs7Ozs7O1M7bUI7VyxNOzs7OztXLE07OztRO1MsUztTLFc7UTs7USxNOztROzs7O1M7Ozs7OztZO2E7YSxPO2E7YTtlOzs7Ozs7OztZLE87Ozs7Ozs7O1c7OztTOzs7Ozs7Ozs7UTs7UTs7O1M7Ozs7UTs7O2dCOzs7UTs7OztTOzs7O1E7OztnQjs7O1E7O1M7Ozs7O1E7Ozs7WSxHO2E7Ozs7O1MsTTs7Ozs7Rzs7STs7Szs7OztNOzs7Szs7O2E7O0k7Szs7O0k7Rzs7STtJO0s7TTs7O1M7VTs7O2EsVzs7YTs7OztjOztlLEs7a0MsVywrQjtjLE87Ozs7VTs7Uzs7TTs7OztVLGtCOzs7Ozs7Ozs7Ozs7OztpQixHO2tCOztpRDs7Ozs7Ozs7Ozs7OztpQixHO2tCOzs7Ozs7Ozs7ZSxHO2dCOzs7OztVLE07Uzs7OztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjtxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VSxJOzs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztNOztPOzs2QixtQjtrQjs7Ozs7O0s7TSxPO00sTztNOztLO007Ozs7Ozs7YSxROztZO1MsTzs7Ozs7Ozs7OzthO3FCOztZO1MsTzs7Ozs7O2E7cUI7O1k7UyxPOzs7aUI7OzsrQjs7Ozs7O21COzs7O1M7aUI7O2M7O0s7SztLO00sTztNLE87O0s7TTtRO00sTztNLE87b0I7SyxJLHFCOztNO007TSxPO0s7SyxPO0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTs7SyxXO0ssTyx5QjtJO0k7SyxjO0ssTztLLFU7O0s7TSxTO00sTztLO00sTTs7SztJO0k7O0s7Szs7Ozt3Qjs7STs7SztLOzs7Ozs7Ozs7OztxQjs7Ozs7O0s7TTs7VTs7Ozs7Ozs7TSxLOzBCLFcsZ0M7SyxHO007Tzt5Qjs7TTs7Tzs7Ozs7Tzs7OzthOzs7Ozs7Ozs7Ozs7Szs7O0s7TTs7OztTOzs7Szs7STtLLFM7SyxTOzs7Ozs7Ozs7SztNOzswQixlO3NCOzs7O0s7TTs7MEIsZTs7MkI7SSxXOztLO0s7STtJLGdCOztLO0s7Ozs7d0I7O0k7O0sscUIsTztLLE87STtJLGdCOztLO0s7STtJLGU7O0s7STtJO0s7TTtNOzs7O1k7Ozs7Ozs7SztNOzs7O007bUI7O007Ozs7OztTOzs7Szs7TTs7Ozs7VTs7Ozs7Ozs7Ozs7O0k7OztLOzs7Ozs7Ozs7Ozs7O0k7O0s7Ozs7Ozs7Ozs7YTs7O0k7OztJLGtCO0ksTztHOztJO0c7Ozs7SSxPOzs7O0ksdUI7O0ksVztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLHNCOztJLFc7O0k7Rzs7SSxXOztJLGtCO0c7O0k7O0s7TTtNLE07SztJO0ksTztHOztJLDhCOzs7Ozs7Ozs7WTs7O1c7Vzs7WTs7Vzs7dUI7VztVO08sTzs7Tzs7O1EsUTtRO1E7UTs7OztPOztTOzs7VSxVO1U7VTtVOzs7Ozs7Ozs7WTs7YTthOzs7Ozs7OzttQjs7Ozs7YSxPOztXO1EsTzs7Ozs7Ozs7TyxPOztPOzs7O1EsTTsrQix1QztPLE87O0c7O0ksSSxLLDZCOztLOzs7Ozs7SyxLLGlDO0s7TSxPO00sTztNLE87Szs7Ozs7d0M7OztJO0k7SyxROzs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLOzs7Z0I7Ozs7aUI7OztnQjtlO2EsUzthLE87OztnQjs0RDtnQjs7aUI7OztnQjtlO1ksVzs7Ozs7Ozs7OztZOzs7YTtZOzs7OztnQzs7O007OztJLE87RztHOztJOzs7Szs7OztJO0c7RztJLFc7STs7OztLOzs7Ozs7VSxZOzs7O2E7O2EsTTs7O2EsTTs7O1M7OztVO1U7c0I7Ozs7Ozs7Ozs7ZTs7O2dCLE87Z0IsVTs7Ozs7Z0M7OzttQixLO2dDOzs7O2dCOztlO2UsTTs7OztlLE07Ozs7Yzs7OztlLFE7Ozs7OztjLE07Ozs7O2U7OztnQjs7b0I7ZTs7Yzs7O2UsUTs7Ozs7Yzs7OztlLFE7Ozs7O2MscUI7YyxXOzs7O1M7TTtPO1E7O1EsUTs7OzttQjtROzs7Ozs7OzttQjs7Ozs7Ozs7Ozs7OztNO08sUTtPOzs7SyxXO0s7STtJLGlCO3lCLG1CLFU7STtLLE87SyxLO3lCLG9CLFc7STtLLE87SyxNO3lCLHFCLFk7STtLLE87SyxPO3lCLG9CLFc7STtLLE87SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1MsSTs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7OztJOztLO0s7b0I7Ozs7O1E7Ozs7O1M7UTs7O2tCOzs7Ozs7Ozs7Ozs7OztJO0k7Rzs7eUIsbUIsYTtJLFU7O0s7Ozs7OztLOzthO0k7SSxnQjtHOztJO0k7SyxzQixPO0s7SztNLE07TTs7OztROzs7O2lCOzs7UTs7UTtTOzs7WTs7Ozs7O1k7YTs7YTs7O2MscUI7Ozs7Ozs7Ozs7Ozs7O2EsWTs7Ozs7Ozs7O2U7Z0IsTzs7Ozs7NEI7YTs7Z0I7O2MsTTtpQzthOztjOzs7Ozs7O1ksTzthLE07WTs7OzthOzs7Ozs7YyxVO2M7YztjO2E7WTtZO2E7ZTs7O1ksTzs7Ozs7Ozs7VztRLE87O1E7Ozs7UyxVOzs7UztTOzs7Ozs7Ozs7O1M7MEI7USxPOztROzs7Uzs7Ozs7O1E7bUM7OztHOzs7STs7Ozs7Ozs7O087USxTO1EsTzs0QixlOzswQjs7Tzs7O1EsTztRLEk7UTs7Vzs7O1U7USxROzs7VztXO1k7Ozs7O2EsTztZLE87O1c7VTtRLGlCOzs7VztXLFc7VTtRLGdCO1EsVTtROzs7Ozs7Ozs7Ozs7Ozs7O007O0sseUM7OztROztTOzs7O1EsZ0I7O1E7OztTO1c7UyxPO1MsYTtTOzs7OztRLFc7OztROzs7Ozs7UTs7Uzs4QixjO1MsTTtTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VSxzQjtVOzs0QjtVO1k7Ozs7O1M7VTs7OztTO1U7Ozs7O29COzs7Uzs7O1U7Ozs7Yzs7OztTOztrQjs7Ozs7OztRLEksYyxPO1E7USxxQixPO1E7Ozs7UTs7NkIsYTtTLE87UyxlO1M7Ozs7O1M7Ozs7YyxTO2M7O2U7ZTs7bUI7ZTtjOzs7dUI7Ozs7YTs7O1E7O1EsbUIsTzs7UTtTLFE7UyxNOzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1E7Ozs7UTs7Uzs7O1M7Ozs7YTs7Ozs7OztROztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJO0k7Szs7Ozs7b0I7Ozs7SztJO0k7OztLLGdCLHdDO0ssTztJO0k7SyxPOzs7SyxrQjtJO0k7SyxXO0ssTztLLGE7STtJO0k7Rzs7O0k7O0k7STtLLFk7SyxTOztLO0k7STtLLFE7OztJOzs7STs7O0s7SztJOzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7Z0MsbUIsYTtTLE87USxPOzs7O1E7O1M7UyxPO1EsTzs7OztHOztJO0k7bUI7Syx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxJLHlCO1MsTzs7Ozs7Ozs7O1EsbUI7NkI7USx3QjtRLE87Ozs7Ozs7Ozs7VTs7VztXO1UsTzs7Ozs7Ozs7Rzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7Ozs7Ozs7VTs7O1c7VztXLE87VyxPO1UsTzs7O1EsSSx3QixPO1EsTzs7OztHO0c7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7aUI7STs7Ozs7Szs7Ozs7O0s7Ozs7Tzs7UyxNO1E7UyxPOzs7MkMsVztRLE87Ozs7Syx5QyxXOzs7Ozs7USxPOztPLHlDOzs7VTs7VztXLE87VTtrQjs7O1U7OztXLE07VztXO2E7O1c7OztVO2tCOzs7O1U7Ozs7OztVOztXO2dDLGM7VyxRO1c7Vzs7Vzs7O1U7a0I7OztVOzs7VztXLE07VyxRO1c7OztXO1U7Ozs7O21COzs7Ozs7Ozs7O2U7Ozs7Z0IsTztlO2U7Z0IsUTs7O2dCO2dCOztvQjs7Ozs7Z0I7Z0I7OztnQjtnQjtvQyxlO2dCOzJCO2U7Ozs7Ozt3Qjs7Ozs7OztpQjs7Ozs7a0IsTztpQjtpQjtrQixROzs7a0I7a0I7O3NCOzs7OztrQjtrQjtrQjs7O2tCO2tCOzZCO2lCOzs7Ozs7MEI7Ozs7OztZOzs7YTthOztpQjthO2U7YTs7O2E7OzRCOztZOzs7O29COzs7OztXOzs7OztZO1k7YztZO1ksTztXOzs7O3FCOzs7OztVLGtCLE87VTtVLHFCLE87VTs7OztVOzsrQixhO1csUTtXOzs7VztVOzs7b0I7cUI7O3NCOzs7MEI7OztvQixPO21COzs7Ozs7Vzs7WTs7WSxRO1k7WSxRO1ksTztZOzs7ZTs7O2U7OztnQjtnQjtlOzs7Ozs7O1k7Vzs7bUI7O1UsVzs7VTtXLFE7VyxNO1csUTs7O2M7OztjOzs7ZTtjOzs7Ozs7O1c7VztVOzs7O2tCOzs7VTs7Vzs7O1c7Vzs7O1U7a0I7Ozs7Ozs7OzthOzs7Ozs7YyxPO2E7YTtjO2M7Yzs7a0I7YyxTOzs7aUI7O21COzs7OztvQjtvQjs7bUM7O29CO21COzs7OzJCOzs7Ozs7Ozs7OztpQixNOztnQjthOzs7O1U7VyxRO1c7VyxRO1c7OztjOzs7Yzs7O2U7ZTs7OEI7O2M7Ozs7Ozs7dUI7OztXO1c7VTs7OztrQjs7Ozs7OztNO087USxROzs7UTtROzs7OztPOzs7OztPO1EsTztRLE87TyxPOztLOztNLG9CO00sTztLOztNO087USxROzs7Ozs7Vzs7Ozs7OztTLE07OztPOzs7OztRLE07OztLOztNLDBCO00sTztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7O0ksOEIsTzt3Qjs7Rzs7SSxJLFcsOEM7Ozs0QixPOzs7Rzs7STtJOzs7Ozs7Ozs7OztHO29DLHFDOztJO0k7O0k7O007OztPOzs7Ozs7Ozs7Ozs7O1U7O1csUztXLE07O2E7Ozs7O1U7Ozs7VTs7VztnQyxjO1csVztVO1U7VyxPOzs7OztVO1U7VyxPOzs7Ozs7OztZO1k7YTs7aUI7Ozs7Ozs7Ozs7OztVLGtCLE87VTtVLHFCLE87VTs7OztVOzsrQixhO1csVztXLE87Ozs7O2dCLFM7O2dCO3lCOzs7O2U7Ozs7O1UsbUIsTzs7VTtXLE07VyxNOzs7YyxZO2M7OztlO2M7Ozs7O1c7Ozs7VTs7Vzs7O1U7Ozs7O2M7OztVOztXLFE7VztXLFE7OztjLFk7Yzs7O2U7Yzs7Ozs7Vzs7Ozs7a0I7O007SztLO1k7TSxNOztNO007Ozs7Ozs7Ozs7Ozs7Ozs7SztLLE87O0ksTztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7O007OztXOzs7O1U7OztLLFc7OztLLE07STs7Szs7O1E7O0ssTTtLO0s7OztVOzs7Ozs7Uzs7O0s7SSxXO0c7O0k7SyxrQixNO0ssTzs7STtLLE87STtJO0ssTTtLLE07SyxNO0ksTzs7Rzs7O0k7SyxNOzs7SztNLE07TSxNO00sVTtLLE87STtJOztPOztPOztPO2U7Ozs7SSxZLE87STs7SyxVO0ksTzs7OztJLHVCOztJO0c7Rzs7STs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SyxhLFc7STtHO0c7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7OztLOztLLFM7SztNLE87TSxJO0s7STtJO0ssTyxXO0ssUTs7O0ssTzs7SyxjOztLO0k7SSxPO0c7OzZCLHdCO0k7SyxNOzs7O0k7RztHLGEsdUMsUzs4QixPLCtCOztJO0k7O2EsYyxPOzs7Ozt1QixXO3VCO3NCO1k7O0c7c0Isd0I7O0ksSTt5QixTO0k7STs7O2M7YTs7Ozs7O0c7c0IsTyxvQjs4Qiw0Qjs7STs7O0s7Szs7O0ssTzs7SyxXO0ssVztJOztJOzs7YyxXO2MsVzthOzs7Ozs7O0c7Ozs7SSxtQyxTOztJO3lCLE8sYyxxQjs7STs7O2MsTyxjO2E7Ozs7OztHO3dCLHlCOztJLFEscUMsUzs7SSxxQixpQyxrQjtJO0c7OztLO0s7STtJLE87Rzs7SSx1RDtJO0c7O0ksc0M7Z0I7STs7SyxRO0ssTztLLE87SyxTO0s7SztJLFc7OztJOztPOzs7Ozs7UTs7O1E7Tzs7Tzs7O1E7OztPOztPLDBCO08sTzs7OztJO0s7SztJO0c7O0ksWTtJLG9CO0ksaUI7STtHOztJLHNDO2dCO0k7O0ssVTs7Szs7Szs7USxvQjs7Ozt3QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxXO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCO1U7VTs7O2EsMEM7YTs7WTtVOzs7O2dCOzs7aUI7OztnQjs7Ozs7Ozs7ZTs7Ozs7Uzs7Ozs7Ozs7Ozs7UztVOzs7Ozs7OztVOzs7O2lDLDZCO1M7OztROzs7Ozs7Uzs7OzhCLHFDO1E7O1E7Ozs7O1M7OEIscUM7UTs7UTs7O1M7OztTLHFCLDZCO1E7Ozs7Ozs7Ozs7Ozt5Qjs7WSx3QixnQztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZO2E7OztnQjtlO1k7OztTOzs7O1U7VSxzQjtVLFU7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjO2U7Ozs7WTs0Qix3QjtVLG9CO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNO1k7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7Ozs7d0M7O2E7WTs7O3NCLGU7O3VCO3FDOzt3Qjs7Ozs7Ozs7O3dCLE87dUI7O3NCOztxQjs7Ozs7OztZOzs7OzhCLDZDO2E7Ozs7O1k7Ozt1QixpQixpQjt1Qjs7OzsyQjt1QixNOzs7Z0M7OztzQjs7Ozs7OztRO1E7O1E7Ozs7UyxVOzs7UyxVOzs7Uzs7O1k7Ozs7O2EsWTthLFk7YTtZO1c7Uzs7UTs7UTs7Ozs7UyxVOzs7Uzs7O1k7OzthLFE7WTtXO1M7UTs7USwwQjtROztROzs7O1M7O1k7WTtXO1M7UTs7UTs7OztTOzRCLDRCO1E7O1E7Ozs7UztTOztZO1k7VztTO1E7O1E7OztTO1MsbUIsc0I7UTs7UTs7O1Msb0Isc0I7UTs7USw0QixvQixvQjtRO2dCLDRCOztJOztLLGtCO0ssWTtJOztLLGtCO0ssVTtlLHFDLFM7O0ssNEIsYztJOzs7SyxVO0s7O0k7Ozs7OztLO0s7TztLO0ssUztLLFE7Szs7O0s7O0s7Tzs7Ozs7Ozs7SyxRO0s7STs7O0ksa0I7SSxPO0c7dUIsNEIsd0I7O0ksdUI7OztLOztNOztTLE87O1E7TTs7UyxVO1MsTztRO3dCLFk7TSxNLFc7TSxNOzJCLGU7TSxNLFc7TSxTLFc7SzthOzs7STtLLE87O0k7STtLLFU7SyxPO0k7b0IsWTtJO0ssTSxXO0ssTTtLLFcsVztJO1k7O0c7Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7O0k7OztPLEc7USxNO087O087Ozs7Ozs7USxzQjtRLE87Tzs7TyxXO08sRztRLE07Tzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOztPOzs7UTs7O1c7VztVO08sVzs7Ozs7Ozs7Ozs7O2MsRyxnQzs7Ozs7Ozs7Ozs7Ozs7ZSxHO2dCOzs7Ozs7Ozs7Ozs7YSxHO2M7Ozs7O087OztRLHNCO08sYzs7Tzs7Ozs7USxzQjtRLE87Ozs7VztXO1U7USxPOzs7OztXO1c7VTtRLE87UTtPOztPOzs7OztRLHNCO1EsTzs7O1c7VztVO1EsTztPOztPOzs7USxzQjtPLGU7O087Ozs7UTtPOztPOzs7O1E7Tzs7Tzs7OztRO1E7Tzs7TyxrQztPOztPLGtDO087O087Ozs7OztRO1E7Tzs7O087O087Ozs7OztRLHNCO1EsTztRO087O29DOzs7TztlOzs7O0k7OztLLFE7SSxPOzs7O0s7SztJO0ksTztHOztJO0k7OztROztROztROztRLHNCOzs7O1UsVztVOzs7UTs7Ozs7Ozs7Ozs7Ozs7OztZO1k7VztROzs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7UTs7UyxzQjtRLE87OztROzs7O1k7WTtXO1E7USwwQjtRLE87OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7Ozs7UTtRO1EsTzs7Ozs7Szs7O0c7O3FCLGdDLGtCO0ksTztHOztJLG9CO0ksTztHOzs7O0s7Ozs7Ozs7Ozs7OztXO2E7ZTs7YzttQjtZO2E7OztZOzs7Ozs7OzttQixNO0ssUzs7TSxtQixPO00sUyxNO007SztLO0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SzswQixrQix5QjtLO00sTztNO3lCO0s7TSxPO00sZTtNLFU7OztNLE87SztLO00sUTtNLFM7dUIsa0I7SztNLE87TSxZO0s7O0k7SztNOzs7O007Ozs7VTs7Szs7Ozs7TTs7O2U7Ozs7Rzs4QjtHO0k7OztJO0ssUTtLLFk7SyxXO0s7STtLOztLLFc7SyxPO0k7O0s7O3lCLE87Ozs7Uzs7O1UsVTs7Ozs7VTtXOzs7O1c7Ozs7OztTLE87Ozs7O1E7USxPOzs7O1M7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1U7VTtVO1UsYzs7OztZOzthLEs7O1k7WTs7OztVOzs7Ozs7SyxPO0k7MkIsNEI7O0s7O0s7OztJO0k7O0s7Ozs7Ozs7VSxHO1c7WSxLO1ksTztZOztZLE07OzsyQjs7Ozs7OztTLEc7OztnQjs7SyxXOztNLGtDO007SztLLE87STtJLGE7Rzs7STs7OytCOzs7OztJLEksb0IsUTtJO0ssSSxXLHlDOzs7NkI7OztJOztLLFk7Ozs7YTs7O0s7SyxPO0k7Ozs7Ozs7UztTOztVLHNCO1MsTzs7Ozs7Ozs7Ozs7OzRCLGtCLDJCO1M7Ozs7Uzs7VSxzQjtTLE87Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7Uzs7Ozs0QixrQiwyQjtTOzs7OzRCLGtCLDJCO1MsTzs7O1M7Ozs0QixrQiwyQjtTO2lCOzs7VTs7Ozs7Ozs7UztTLDBCO1MsTzs7Ozs7OztXO1c7WTtZLE87Vzs7OztTOzs7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7Ozs7Uzs7OztVO1Usc0I7UyxPOzs7OztpQjs7TTs7OztJO0ksWTs7Ozs7O1M7Ozs7Ozs7VSxzQjtVLE87Uzs7O1M7Ozs7Ozs7O1U7UyxPOzs7Uzs7Ozs7O1U7Uzs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7Uzs7OztVLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhOztVLHNCO1UsVztTOzs7OztTOzs7OztVLHNCO1UsTzs7O2E7YTtZO1UsTztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VSxzQjtVLE87UztVO1csVTs7Ozs7YztjLFc7YTtXLEs7Ozs7YztjLE87YTtXLE07VyxPOzs7YztjO2E7VyxPO1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1Usc0I7VSxPO1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7Ozs7O2M7YyxvQjtjLE87YTs7OztTOztVO1c7eUI7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7O1U7VztXOzs7O1M7Ozs7Ozs7OztTOzs7Ozs7Ozs7YztlO2Usc0I7OztTOzs7O1M7O1Usc0I7UyxPOzs7OztVOztXLFU7VyxVOztXO1c7Ozs7VyxNO1U7O1M7OztpQyxrQix3QjtTOzs7aUMsa0Isd0I7UyxPOzs7Uzs7OztjO2U7ZSxzQjs7O1M7aUI7OzZCOzs7O1M7O1Usc0I7UyxPOzs7Uzs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7OztTOzs7O1U7VSxzQjtTLE87Ozs7Ozs7Ozs7OztJO0ksYztJO0s7O00sZSw2Qjs7SztJO0k7Szs7TSxlLDZCOztLO0k7Ozs7Ozs7UyxJLFUsMkM7OztnQzs7Ozs7Ozs7Ozs7Yzs7Ozs7ZSxPO2M7YTs7OztTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7O1U7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YztjLEksMkI7Yzs7Ozs7Ozs7O2lCLE07Ozs7O2U7OztlOzs7OztnQjs7Ozs7O1k7Ozs7O2E7WTs7WTs7Ozs7YTs7O2M7Yzs7OzthO2E7Ozs7Ozs7YTthOzs7Ozs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7O1MsYzs7Uzs7OztVOzs7O2E7YTtZO1UsYTs7OzthO2E7WTtVLGE7VSxXO1M7Ozs7O1M7Ozs7O1UsTTs7O2E7YTtZO1UsTTtTOzs7UyxlOztTOzs7Ozs7VTtTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7OztVLG1CO1U7OztTO1U7VTs7Ozs7UyxrQztTOztTOzs7Ozs7VTtVO1M7O3lDOztTOzs7Ozs7VSxNO1U7Uzs7d0M7OztTLHlCOzs7aUI7OztJO0s7SyxRO0s7SyxhO0ksUTtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STtJOzs7SSx1Qjs7O0c7O0ksVTs7Ozs7Rzs7SSxVOztLO0s7SyxPO0k7STtJLFU7STtJOzs7RztHOzs7O0ksa0I7STtJO0ssZTtLO08sMkI7SSxHO0ssTTtJOztJOzs7O007TyxPO08sTTs7TTs7Ozs7O0c7dUIsb0Q7O0k7O2U7bUI7Ozs7aUIsTTs7SyxHO007TTs7OztHOztJO0ksTztHOztJO0ksTztHOztJOytCLDJDO0k7SyxNO2U7YTtHOztJOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxtQjs7SSxPO0c7RyxJLHNCOztJLGlCOztHOztJO29CLFcscUM7cUI7O0c7O0ksRztLLE87STs7O087UztLOztROztLLE87O0k7Rzs7STtLLFc7SztNO08sYTtPO1M7WTs7Ozs7Ozs7O0s7Z0I7Ozs7TyxJLFk7Ozs7UTs7UyxNO1MsTTtlOzs7Ozs7TyxZOzs7O1E7O1MsTTtTLE07UyxNO2U7Ozs7Ozs7Ozs7O0ksTztHOztJOzs7O0c7O0k7O2lCOzs7O00sRyx1QztNLEk7OztNOzs7TyxPO007O21DO087O00sSTs7O0c7Rzs7STs7SSxpQjs7SSxNO0c7O0k7STtLO00sTTtNLEs7Szs7O3FCOzs7Ozs7TTs7Ozs7Ozs7Rzs7SSxJLFE7OzsyQjs7O0ksTztHOztJOztLO3FCOztHOztJO0s7SyxNO0ssTTtLO3FCO0k7SyxNO0ssTTtzQixnQjtxQjs7OztHOztJOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7STtHOztJLEkseUQ7Ozs7TSxNOzZCOzs7Rzs7STtHO0c7O0k7STtHOztJLEkseUQ7Ozs7Ozs7OztROztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7bUI7O0k7Rzs7STtLLE87OztLO0s7STtJO0k7Rzs7STtLO0ssSTs7Szs7OztNO007TTtNOzs7OztJLE87Rzs7STtJLE87Rzs7SSxJLDBEOzs7O007TTtNOzs7OztJO0k7SSxvQzs7OztNO007TTs7Ozs7STtJO0ksb0M7Ozs7TTtNO007Ozs7O0ksTztHOztJOztLLEksSSxPOzs7O2U7O0s7TTtNOzs7Ozs7OztJO0k7O0ssUzs7TSxJLFEsZTs7OytCOzs7SztLO007TSwyQixPLDJCO0ssTztJOzs7O0ssTztJLGU7O0s7O1E7O2M7TSxNO0s7STtJO0s7SywyQixPLCtCO0ksTztHOztJO0k7STs7Rzs7O0s7OztROzs7Uzs7UTs7O1E7OztROzs7UTs7STtJLE87Rzs7STs7Ozs7NEI7OzRCOzs0Qjs7NEIsTzs7OEI7OzhCO3NDOzs7Tzs7O1E7VSw0QjtROzs7VztXOzs7VTtPO087O087O1E7VSwrQjs7O1csTywrQjtVO087TzttQzs7Rzs7SSxJLE8sdUM7O0sscUM7SztLO0k7STs7STtHOztJO0c7bUMsdUI7O0k7TztLO0ksSSxPLHlCOztLLHFDO0s7SztJO0k7OztHOztJO0s7TTtPLFc7TyxzQixPOzt3QixPLDRDO087O3lCLE8sNEM7Ozs7Ozs7O00sUztNO007NkIsTywyQjtPLE07a0I7O3VCO0ssWTs7Szs7O00sUTtNO1E7OztLLEksSSxNOzs7Ozs7SztLLEksSSxNOzs7Ozs7SztLOzs7Ozs7SyxPOztHO29DLDhCOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCOztLO0k7SSxPO0c7O0k7O0s7d0I7Szs7TSxVOzs7TSxNOzZCO0s7STtJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7SSxJLDJCOztLO00sTTtNOzt3Qjs7O0k7STtJO0c7O0k7Rzs7STtHOzs7STs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztJLHVCOztJLFc7RztHOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksa0I7SSxPO0c7O0ksd0I7RztpQyx1Qzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUzs7SztNO00sUywyQjtLLEs7TSxNO0ssVTs7SyxPO0k7STtLO0s7OztTOztRO0ksTztHOztJLFM7STtJLFU7STtLO007TSxTO00sTTtNLE07TSxPO2lCO0s7O007TSxNOztZO00sTTtLLFM7SztNO08sTTs7Ozs7Ozs7SztLLEssNkM7SztLLE07O0ksVztJO0c7O0k7STtlO0k7OztrQixXO0ssUSxXO0k7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STs7O0c7Rzs7O0ksUztJO0s7ZTtLLEc7OztNLFU7TSxHLGtCO08sTTs7Ozs7Ozs7OztXOzs7O0k7Rzs7SSxjLCtCO0c7O0k7SztLOzs7STs7TSxVOzs7TyxVO087O00sVTsrQjs7OztNO00sYTtNOzs7NkIsTyw4QjtlOzs7OztLO0ssTTs7STt3QixvRDtJLE87Rzs7STs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7STtJOzs7TTtLO0ssTyxXO0k7STtLO0ssMEIsc0M7SSxPO0c7O0k7SSxrQjtJO0c7O0k7SSxrQjtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7O0ksTztHOztJO0k7STtJO0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7SSxNO0c7O0ksWTs7STtHOztJLFk7O0k7RztHO0k7STtJO0k7STtJO0k7STtJOztJO0ssRztNLE07YTtNLE07SyxnRDs7OztPLFk7Ozs7Uzs7Ozs7Ozs7Ozs7UTs7Ozs7TyxNOzs7SztLOzs7OzRCOzs7Rzs7STtlO0ksVztJLE87Rzs7SSxlO0k7SztNLE07TSxPOzs7Ozs7OztJLGE7STtJO0c7Rzs7SSxPOztHOztJOzs7TyxNOzs7OztLO3lCLE8sOEI7TSxPO0s7Ozs7O0ssMEI7SyxPOztHOztJLGdCOztLLDBCO0ssTzs7Rzs7SSxxQzt5QztJLG9CO0k7STtHOztJO0ssUztLLE87SyxRO2tDLE87SSxXO0ksb0I7STtJO0c7Rzs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsMEI7UyxPOzs7OzswQjs7OztVOztVOztVOztVOztTOzswQjs7Ozs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2EsVTthLG9CO2E7YTtZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O1EsMEI7USxPOzs7UTs7UTs7UTs7Ozs7Ozs7O1U7O1U7O1U7O1U7O1U7O1M7OztTOztTOztTOztTOztROzt5Qjs7OztTOztTOztTOztTOztVLE87VSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7OztROzs7TTtPLFE7Tzs7Ozs7O3dCOzs7O1EsTzs7Ozs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7Ozs7Uzs7OztTLE87Ozs7OztTLE87Ozs7OztTLE87Ozs7OztTLE87Ozs7OztTLE87Ozs7Ozs7Ozs7O1M7O1M7O1M7O1M7O1MsYzt1QjtTOztVLE87VSxzQjtTLE87OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOzs7Ozs7Uzs7VSxzQjtTLE87Ozs7Ozs7Ozs7Ozs7MEM7Uzs7VSxPO1UsTzs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Uzs7Ozs7O1UsYzs7Ozs7O1U7O1csc0I7VSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCOztROztROztRLE87O1E7O1E7Ozs7Ozs7Ozs7OztRO1E7Ozs7O2tCO2tCOzs7O1E7UTs7Ozs7a0I7a0I7a0I7Ozs7UTs7UTs7OztJLGU7ZTs7SSxvQjtJLE87Rzs7STs7OztJOztPOztJLEc7SyxJLFM7O007O08sTztPLFc7TyxPO00sVztNLE07O0s7TSxNOzs7O0s7TTtPO1E7O1c7O1c7VTtRLE87OztNO087TyxlO087Ozs7Ozs7O007O087bUQ7TztPLE87TSxXO007TSxNOztLOzs7Ozs7Ozt3QixxRDtpQjs7Szs7TTs7O1MsYztTOztVLGE7VSxZO1MsTzs7aUI7O0s7SztJO0k7STtLLFE7SyxHOzs7Tzs7O1EsUTs7Ozs7Ozs7O3FCOzs7UztVLE87aUI7Ozs7O087Ozs7OztVLEksYzs7OztZLE07OztxQjs7OztVO1csSTs7VztZOzs7Ozs7VTtXLE07Ozs7Ozs7TztRLE07O087USxPO1EsTzs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7VTtVO1M7TTs7Ozs7OztJLFc7O0ksVzs7O0c7O0k7STtLLE07SyxNO0ksTztHO0c7O0k7SztLLE07SyxNO0ksTztHO0c7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7NEIsNEI7TSxNO1k7TTs7Ozs7Ozs7UyxtQjs7UyxPO1E7WTs7O0ksUTtJLFU7STs7Ozs7Ozs7TTtNO007TTs7TyxVOzs7SztLOzs4Qjs7O1E7UTtROzs7Uzs7VSxVOzs7Ozs7Ozs7UTs7Ozs7OztpQjtTLE07Ozs7O1E7O1U7ZTs7VztTOztXO2dCO1U7OztlOzs7O1UsYzs7OztXOztVOzthO1UsTTs7Ozs7Ozs7O1E7O1MsTTs7OztROztTLE07Ozs7O0k7Ozs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Rzs7STtJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0IsK0M7O0ksOEI7Rzs7STtHOztJO0c7O0k7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O3lCLFM7SSxpQjtJOzs7O0c7O0k7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STs7O1k7Rzs7SSx3QztHOztJO0c7O0k7O0s7Tzs7STs7O1k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7SSxXO0ksVztHOztHO0k7O0c7RztJOztHO0c7STs7RztHO0k7O0c7RztJOzs7STs7O1k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7Rzs7OzsyQixTOzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RzsyQiw2Qzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJLE07O0c7Rzs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztLLGE7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOztTLE07O1E7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0ssc0Q7O007OztpQyxpQzs7bUM7TTtPO2tCOztNO2tDLFcsYztNOzs7Uyx1QixrQixpQjs7O1M7O2tCO2tCLHVCO2lCOzs7UywyQixZLGlCOzs7UywyQixZLGlCOzs7Uzs2QixvQiwwQjs7O1MsdUIsWSwwQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7cUI7Uzs7O1U7VSxzQjtVLE87Uzs7O1M7OzZCLG9CLDBCOzs7Uzs7a0I7MkQ7a0I7aUI7OztTOztrQjtrQjtrQixPO2lCO29DOztLO0s7STtJLE87RzswQixtQjs0QixtQjs7Ryx1QjtHLEk7RywwQjtHO0cseUI7RztHLHNCO0c7Ryw2QjtHO0csNEI7RztHLDRCO0c7RywyQjtHO0csaUM7RztHLGtDO0c7RyxnQztHO0csd0I7RztHLHdCO0c7Ryx3QjtHO0cscUI7b0Isa0Q7O0cseUI7RztHLHdCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCO0c7Ryx3Qjs0QixPLGtDOztJLE87O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7RzttQyw4Qjs7RywwQjtHO0csNkI7RztHLHVCO0c7RyxtQztHO0csOEM7RztHLHlDOztJO0k7SSxPO0c7O0k7STtJO0ksTztHOztHLHVDO3NCLG1DOztHLDhCO3FDLDhCOztHLHVCOztHLGlCO0c7RyxxQjtHLEk7Ryx3QjtHO0csaUI7a0Isa0M7O0ksZTtJLE87RztxQixrRDt3QixrQzs7NEIsdUM7NEIsaUM7O0csOEI7d0IsbUM7d0Isa0M7O0csaUI7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7RztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csd0I7RztHLDRCO3lCLFM7O0k7SSxNO0c7O0k7SSxNO0c7MEIsUzs7RyxzQjs4Qiw4Qjs7Ryw4Qjs7STtLLE07Ozs7Rzs7Ryx5Qjs7STtJO0c7O0csMEI7O0ksTztHOzBCLG1EO3FCLE8saUQ7dUIsUzswQixTOzBCLFM7NkIsNEI7b0Isa0M7cUIsa0Q7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxtQixNO0k7SSxPO0c7O0k7Ozs7STtJOztLLE07SyxNO0ssUztLLE07SyxXO0ssTTtLLE07O0ssUztJO0ksTztHOztJO0k7STs7SyxNO0ssTTtJLE87Rzs7O0k7SyxZLGtCOzs7O2dCO0s7Ozs7MkI7Ozs7O0k7SSxVO0k7SztNLE07WTs7O0k7STtJO0c7O0ksRyxtQztJLGU7STtJO0c7O0k7SyxVO0s7OztjO2MsTzthO0k7OztLOztNLE0sVztLLGU7SztNLE07Vzs7Ozs7O0s7TSxNO29COzs7O0s7TSwwQjtNOzs7d0IsTyx3QjtJLE87Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCLGdDO0c7K0IsZ0M7O0k7SyxZO0s7TTtPLE87Ozs7OztNLEksSSxPOzs7OztPO087OztnQjs7O0s7Szs7Ozs7O0s7Szs7Rzs7SSwrQztLO0k7STtHOzs7STtLO00sTzsyQixPLHFDO00sUTtNLFE7TSxPOzJCLE8sbUM7TSxTOztLO2tCLE07Ozs7Ozs7Ozs7O1E7O1M7UyxHO1MsRztTLEk7Ozs7Ozs7Ozs7Szs7TTtROztXO00sVztNLFc7TSxXO007OztTLE8scUI7UTtNLGE7TTs7O1MsTyxxQjtRO00sWTtLOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7TztROzt3QjtNOzs7OztPLE87a0I7O0s7Ozs7NEI7Ozs7O0k7SyxHOzs7OzBCLHlCO2M7Ozs7O0ksSztLLE87O0k7O0ssVTtNLEk7O00sSTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7OztNLDBCO00sSTs7O0c7O0k7O0ssaUI7Szs7O0k7O0s7Szs7O0k7O0s7Ozs7TTtLO0k7O0s7STtJO0k7STs7STtJLE87Rzs7SSxPO0c7NEIsUSw0Qjs7O0k7O0k7SyxpQjtLO007TztTOztPLE87Ozs7VTtXLFM7VyxPO1U7VSxVO1UsTztTO08sYTtPLEk7TTtNOzs7O007TSxNOztLOzs7O0s7O007TTs7O0ssUztLO007O00sYTtNO007Tzs7UTtTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YyxjOztjOzs7Ozs7Ozs7Ozs7OzthOztjLE87Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7OztNO007OztLOztHOzs7Ozs7OztLO0s7Ozs7Uzs7VSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLDRCOztRO0s7SyxPOzs7SztNLGE7O00sNEI7O1E7TSxPO0s7a0I7O0k7SyxXO0ssbUI7OztpQjsyQjs7OEI7STtLLHFCOztLLFc7OztLLE8scUI7STtJLEc7Ozs7O0s7O007Ozs7SSwwQjtJO0s7Tzs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0s7TSxPO00sTztLLE87STs7Ozs7Ozs7O0c7O0k7Ozs7OztHOztJOztJOztLLE87SyxPO0ssTztJOztJO0s7O1E7Vzs7Szs7aUQsZTtHOztJOztLLE87SSxHO0s7STs7SyxPO0ksTzs7O0c7OztLOzs7TSxJO0ssRztNO08sTztPLDRCO00sTzs7SyxXO0ssTztJO0ksTztHOztHO0k7OztHO0k7OztJOzs7SztNOzs7Ozs7Ozs7SztNLE87TSxPO00sVTtLLEc7TTtjO007O0ssUzs7TTtPLE87Tyw0Qjs7O1UsVztVLE87UztNOztLO00sTztNLE87O007Ozs7O0s7Ozs7SztNOzs7Uzs7O0s7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0s7MkI7O0k7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7Ozs7OzBCLGtDOzs7Ozs7OzBCLDZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7Ozs7OzZCOzs7Ozs7OzZCOzs7d0IsYzs7Ozs7NkI7Ozt5QixtQjs7Ozs7NkI7Ozt5QixtQjs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs4Qjs7O0s7Ozs7Ozs7Ozs7Ozs7OztLO007TSxVO3lCLGlCO00sc0I7SztLLGU7SztLOztNOztPLEk7Tzs7O1U7Ozs7O1csTztXLE87VyxVO1c7VztVOztVO1M7TyxVOzs7VTs7Ozs7VTtXOztVOztXO1ksRzthO1ksVztZOztXLEc7WTtXLFc7VztVO1U7OztXLFc7VyxTOzs7OztVO1M7TTtNOzs7Ozs7Ozs7O1c7WSxROzs7WTs7O1k7YSxPO2E7O1c7Vzs7Ozs7cUI7cUI7O1U7Tzs7O087YztPLFc7TztROztxQyx3QztPO087Ozs7VztXLE87VTtRLGM7OztXO1c7OztZOzs7YTtZLE87O1c7VztXO1csTztVO087Tzs7TTs7O00sVztNOztLO0s7Ozs7K0M7SztLOztHOztJO0ksTztHOztJO007O0s7Szs7STs7O2U7SztLLGM7SyxPO0s7STtJO0ksTztHOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLE8sc0M7bUIsTyx5QzttQixPLHNDO3FCLE8sd0M7OztJO0ksa0I7STtJO0ssTTtLO087O0ssTzs7Ozs7Ozs7OztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7OztLO00sTSxXO007UTtVO007Ozs7O1UsVTtVLE87bUI7Ozs7UztNOztLO0s7SztLO0k7SSxPLFc7Rzs7STtLLFM7SyxNO0ssSztJLE87O0c7OztLO0ssRyw2QjtLLEk7O0k7SSxPLFc7Rzs7STtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVzs7SztLLE87STtJLE8sVztHOzs7O007O08sVTtPLE87TTtNLE87Szs7TTtNLEs7TztPLEssNkI7O00sTztLO0ssTztJO0ksTyxXO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHZ0dqakJNOzs7O0lBQUE7SUFzSE07SUFNWjQ0SDtJQUVBQztJQTVCTyxrQkEwQlBELFNBRUFDO0lBNEJKO0dBRVE7R0FFZSxTQUFuQkMsVyxVO0dBUEE7SUFBQTs7T0FPQUE7Ozs7SUFTMEI7SUFvQ1g7SUFsQkE7SUFpQ047Ozs7O0U7Ozs7Ozs7Ozs7OztHRXhNRDs7Ozs7SUFBQTtZQW1DUkMsSUFBS0MsR0FBU0MsR0FBSSxPQUFKQSxLQUFURCxJQUFBQSxJQUFTQyxFQUEyQjtZ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STtZQUlBRTtZQUdBQzs7O2FBUUFDLE1BQU0xQyxHQUFJLE9BQUpBLEVBQUs7YUFDWGEsTUFBTWIsR0FBSSxPQUFKQSxFQUFLO0lBSjhELFdBR3pFMEMsT0FDQTdCOztHQUtvRTs7SUFHcEU2QjtJQUNBN0I7SUFKb0UsZUFHcEU2QixPQUNBN0I7WUFNQThCLFFBQU0zQyxHQUFJLE9BQUpBLEVBQXFCO1lBQzNCNEMsUUFBTTVDLEdBQUksT0FBSkEsRUFBcUI7R0FKcUMsbUJBR2hFMkMsU0FDQUM7WUFNQUMsUUFBTTdDO0lBQThCLFVBQUEsbUJBQWEsd0JBQTNDQTtJQUFJO0dBQWtEO1lBQzVEOEMsUUFBTTlDLEdBQUksT0FBQSx3QkFBSkEsb0JBQStCO0dBSndCO0lBQUEsYUFHN0Q2QyxTQUNBQzs7O09BalFGbkY7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7O0k7Ozs7Ozs7Szs7STtHO0csVzs4QixPLG1DOztJLFc7SSxPLCtCO0c7eUIsdUIsVyxTOztJLEksSTs7SyxXO0sscUI7SztrQjs7O0c7O0ksSSxJOztLLEksTyx1QixPO0sscUI7SztrQjs7O0c7O0k7OztNLFc7Z0I7TyxNOzttQixjOzs7Ozs7NEI7OztHOztJOztLLFE7Ozs7O1EsZTtPOzs7OztLOzs7O0c7O0k7STs7TztPOzs7Ozs7Ozs7Ozs7OztPO007O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEIsTzs7UTs7O1EsTzs7USxzQztRLFE7Ozs7UTs7OztROzs7Z0I7OztHOztJO0k7Ozs7Ozs7Ozs7OzRCOzs7USxPOzs0Qjs7O1E7OztRLGtCLE87O1E7O1Esc0M7UTs7Ozs7Ozs7Ozs7O0c7O0k7STs7Ozs7O1MsbUM7Uzs7UyxtQztTOztTLGtCLE87O1M7Ozs7Rzt5Qjs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHLEksSTs7SSxzQztJOzs7O0c7SSxrQjs7OztJO0ssVztLO0s7SztLO0s7O0s7TTs7O1EsWTtROzs7Ozs7O0ssSTtLOzs7STs7SztLO0s7STs7SztLO0s7STs7SyxJLFUsd0M7Ozs7O2lCOztNOztJOztLLHFCOztpQjs7SztJOztLOzs7Uzs7UztpQjs7Ozs7UTs7OztRLGtCLFE7d0I7Ozs7a0Q7dUM7UTtTLFE7UztTO1M7Uzs7Ozs7Ozs7O3VCOzs7OztROzs7UztTO1E7MkM7OztRO3VCOzs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7O1M7Ozs7O1Esa0M7UTtRLEksNkI7UTs7UTtROztROztTO1M7dUI7UTt1QjtROztROztROztTO1M7UTt5QjtRO3lCO1E7O1E7O1Esb0I7UTs7UTs7O1E7UTtRO3VCOzs7O1E7dUI7OztJOztLLGtCO0s7SztJO0k7STtJLEksbUI7SSxHOzs7SyxRO0ssaUIsTyx3QjtpQzs7SSxJLGUsb0M7O0s7SztJO0k7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7O1UsSSxtQjs7VSxJLG1COzs7Ozs7OztTOzs7UTs7Ozs7O007TSxlOztJOztLLEk7SztxQjtnQix3QyxxQjtNLFM7TTs7O2dCO21CO08sUzs7OztTLE87Uzs7Ozs7TyxJOzs7TTtNLEk7O0k7SSxJOzs7YztHO3NCLDRCO2dDLDRCOztJOztLLE07SztLO0s7Ozs7TSxJLEksdUI7Ozs7OztTOzs7Ozs7UTtROzs7O087OztNOzs7OztJLE87Rzs2QiwwQjt1QywwQjt1QixXO0csNkI7O0ksVTtJOztHOztJLFU7STs7Rzs7SSxVO0k7NkIsTTtJO0c7O0ksVTtJOzZCLE07STtHOztJO0s7Tzs7O0s7SyxlLE07Szs7SSxPO0c7O0k7SztPOzs7SztNO007SyxlLE07Szs7SSxPO0c7O0k7SztPOzs7SztNO007TTtLLGEsTTtLLE87O0ksTztHO21DLDBCOzZCLG9CO2dDLDZCOztJOztPO0ksTztHOztJO0s7TTs7Z0I7TTtNLE07Szs7OzsyQjs7O0c7O0ksSSwyQzs7OzJCOzs7Rzs7STtJOztROzs7TTs7Tzs7UTtRLFk7O1E7Ozs7WTs7Ozs7Ozs7O0ssVTtLLE87O0c7O0k7aUM7Rzs7STtpQztHOztJO2dCOzs7Ozs7OztHOztJO0s7Ozs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOzhCLG9DOztJLEcsZ0M7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHQzVFVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHUnVEO0lBSFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1JBOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHRWtCTjs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7WUFFSUMsZUFBZ0JDLFNBQVNDLEtBQUtDLE9BQU1DLEtBQUlDO0lBQzFDLEdBRGtCSjtLQUlBO01BQVRLLElBSlNMO01BSUEsTUFBQSwyQkFKb0JHO01BQ2xDRyxZ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QTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZFQVM7T0E3RUFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXRFQVQ7T0FzRUFTO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BR0FDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4RkFVO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0EwREFNO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9HQVc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FVQUM7T0FwQkFGO09BVUFDO09Bb0JBRTtPQTlCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0F3Q0FJO09BV0FDO09BbkRBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQTZEQU07T0FXQUM7T0F4RUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbUZBUTtPQW5GQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E0RkFTO09BNUZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFHQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9CQUU7T0FwQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0EyQkFHO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FyTkF4QjtPQXFOQXdCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbEJBRjtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BQUFBO09BK0RBTztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3RUFRO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BeEVBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlGQVM7T0FqRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMEZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F6TUF2QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9PQTBCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcE9BMUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2T0EyQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTdPQTNCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlMQW9CO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQVNBQztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO0lBNDJOQWlCOztPQXJ5TkFUO09BRUFDO09BRUFDO09BR0FDO09BQUFBO09BQUFBO09BT0FDO09BT0FDO09BT0FDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO0lBc3lOQUc7O1VBbnlOQUYsYUFvd05BQyxpQkErQkFDOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDcmdQ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QXNCQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFJUUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFJUkM7SUFJQUM7SUFDQUM7SUFNQUM7SUFNQUM7SUFFQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFPQUM7SUFHQUM7SUFJQUM7SUFDQUM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFNQUM7SUFtREFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBSUFDO0lBSUFDO0lBSUFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBTUFDO0lBTUFDOzs7OztTQXRPQTVGO1NBSVFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDOztTQUlSQztTQUlBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUdBQztTQUlBQztTQUNBQztTQXNCQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FJUUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FJUkM7U0FJQUM7U0FDQUM7U0FNQUM7U0FNQUM7U0FFQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FPQUM7U0FHQUM7U0FJQUM7U0FDQUM7U0FJQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FNQUM7U0FtREFDO1NBR0FDO1NBR0FDO1NBR0FDO1NBSUFDO1NBSUFDO1NBSUFDO1NBR0FDO1NBR0FDO1NBR0FDO1NBTUFDO1NBTUFDOztTQTNHRXZMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQXZJRnNMO0lBSVFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDOztJQUlSQztJQUtBQztJQUNBQztJQW9DQUM7SUF5QlFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBUVJDO0lBQ0FDO0lBTUFDO0lBTUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBT0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBQztJQUdBQztJQU9BQztJQUlBQztJQUlBQztJQUdBQztJQUdBQztJQUdBQztJQU1BQztJQU1BQzs7SUMxUkFDO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7O1NEb0NBMUU7U0FJUUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7Ozs7Ozs7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FDQUM7O1NBSVJDO1NDbkRBMEM7U0R3REF6QztTQUNBQzs7OztTQ3RFQXFDOzs7U0FlQUs7U0FEQUQ7O1NENEZBeEM7U0MxRkEwQzs7OztTQU5BTDs7O1NEeUhRcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0N4SFJpQztTRGdJQWhDO1NBQ0FDO1NBTUFDO1NBTUFDO1NBRUFDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBT0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBTUFDO1NBbURBQztTQUdBQztTQUdBQzs7U0FPQUM7U0FJQUM7U0FJQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FNQUM7U0FNQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQS9JRXRRO0lBdkZGOFE7SUFJUUM7SUFBQUM7SUFDQUM7SUFBQUM7SUFDQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFDQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFDQUM7O0lBSVJDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBc0JBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUlRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUlSQztJQUlBQztJQUNBQztJQU1BQztJQU1BQztJQUVBQztJQUNBQztJQUNBQztJQUdBQztJQU9BQztJQUdBQztJQUlBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU1BQztJQW1EQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFJQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFNQUM7SUFNQUM7Ozs7O1NBdE9BNUY7U0FJUUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7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QUU7UUFBQUU7UUFBQUQ7UUFDUUc7UUFBUkM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUQ7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQTNFO1FBQUFVO1FBQUFUOzs7U0FqQks5QztTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUNLRztTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtVRztVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQVdGTztVQUFBQztVQUFBUzs7U0FKS007U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7U0FDQUU7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7U0FDS0c7U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7U0FDS0c7U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7U0FDUUc7U0FBUkM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQTNFO1NBQUFVO1NBQUFUOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3BJb0IrRTs7Ozs7Ozs7Ozs7Ozs7OztPQUFBQTs7Ozs7Ozs7O2VBQUFBOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNIcEJDO0lBaUJJQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FqQlU7OztJQUFBOzs7O0lBQUE7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OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0MxSU41RTtLQUFBRztLQUFBSTtLQUFBQztLQUFBVDtLQUFBc0Q7S0FBQUM7S0FBQUM7S0FBQTNFO0tBQUFLO0tBRVFRO0tBQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJWjtZQU5JSztZQUFBRztZQUFBSTtZQUFBQztZQUFBVDtZQUFBc0Q7WUFBQUM7WUFBQUM7WUFBQTNFO1lBQUFLO1lBRVFRO1lBQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBc0NSSztLQUFBRztLQUFBSTtLQUFBQztLQUFBVDtLQUFBc0Q7S0FBQUM7S0FBQUM7S0FBQTNFO0tBQUFLO0tBR1FRO0tBQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJWjtZQVBJSztZQUFBRztZQUFBSTtZQUFBQztZQUFBVDtZQUFBc0Q7WUFBQUM7WUFBQUM7WUFBQTNFO1lBQUFLO1lBR1FRO1lBQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkJLSztLQUFBRztLQUFBSTtLQUFBQztLQUFBVDtLQUFBc0Q7S0FBQUM7S0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBQUF2RDtVQUFBRztVQUFBSTtVQUFBQztVQUFBVDtVQUFBc0Q7VUFBQUM7VUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FTUHN0Qzs7Ozs7OztXQVRPN3dDO1dBQUFHO1dBQUFJO1dBQUFDO1dBQUFUO1dBQUFzRDtXQUFBQztXQUFBQzs7Ozs7VUFTUHN0Qzs7Ozs7Ozs7WUFUTzd3QztZQUFBRztZQUFBSTtZQUFBQztZQUFBVDtZQUFBc0Q7WUFBQUM7WUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3RkM7SUE0REM7SUFrQkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTBCVnhnRTtJQUNBQztJQUNBaTVOO0lBQ0F0eEc7SUFDQXV4RztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FkbEJuNU47T0FDQUM7T0FDQWk1TjtPQUNBdHhHO09BQ0F1eEc7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NoT1M7SUFBQTtJQUFnQjtJQUt6QkM7TUFBK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJckM7S0FBQTtLQUVSQyxNQUFNO2lCQUdpQ0M7S0FDdkMsVUFEdUNBOztVQUV6QkMsbUJBQVBDO01BQ0wsdUJBREtBO01BQ0wsT0FBQSxXQURZRDs7OztJQUdrQztJQUxsRCw2QkFUQUgsVUFNRUM7YUFXQUksT0FBT0MsR0FBSSxjQUFKQSxHQUFPO0lBZDZDLFdBYzNERDs7O0lBS1E7S0FBQTtLQUVSSixNQUFNO2lCQUdpQ0M7S0FDdkMsVUFEdUNBOztNQUd4QjtPQUREQztPQUFQQztPQUNERztPQUNBQztrQkFBU0M7VUFDWCxHQUZFRjtXQUdHOztXQUhIQTtVQUtGLE9BQUEsV0FOVUosVUFFQ007U0FJRDtNQUVaLE9BQUEsdUJBUktMLE9BRURJOzs7O0lBTzBDO0lBWGxELDZCQTNCQVIsVUF3QkVDO2FBaUJBSSxPQUFPQyxHQUFJLGNBQUpBLEdBQU87SUFwQm9ELFdBb0JsRUQ7O1lBWUVLLE9BQU9DLEdBQUksT0FBQSx5QkFBSkEsR0FBYTtHQU8xQjs4QkFQTUQ7SUFHSkU7SUFJRjtJQUNBO0lBQ0E7SUFLQTtJQVdFQztJQUxGO1lBWU1DLFNBVkdMLEdBQUksbUJBQUpBLEdBQVk7WUFXZk0sS0FWV0MsR0FBVUMsR0FBSSxpQkFBZEQsR0FBVUMsR0FBaUI7Z0JBQzFCRCxHQUFVQyxHQUFVLGdCQUFwQkQsR0FBVUMsR0FBc0I7WUFFaERDLE9BQVFELEdBQUksZ0JBQUpBLEdBQVM7WUFDakJFLEtBQU1WLEdBQUksaUJBQUpBLEdBQVU7R0FPTjtJQUFOVzs0Q0FEQUwsTUFEQUQsVUFFQU07Ozs7Ozs7Ozs7OztZQUdBQyxPQUNGTCxHQUFHYjtJQUNQLElBaERVbUIsTUErQ05OLEdBN0M2QlIsYUE2QzFCTDtJQUNQO1FBaERVbUIsb0JBaURKTCxJQWpESUssUUFpREMsT0FBQSxXQUFMTCxHQS9DMkJUO1FBRnZCYyxnQkFrREUsT0FBQSxXQWhEcUJkO1FBRnZCYyx1QkFtRERiLElBbkRDYSxRQW1ESSxPQUFBLFdBakRtQmQsWUFpRHhCQztRQW5EQ2E7Z0JBQUFBOzs7V0ErQ05DOzswQ0FBQUE7V0FBQUE7O1VBL0NNRCxNQStDTkM7OztTQS9DTUQ7T0FzRFI7UUFES0UsSUFyREdGO1FBc0RSLG9COzRCQUErQixPQVIzQkQ7T0FRSix5QkFES0c7T0FDTCxPQUFBLFdBcEQrQmhCOztTQUZ2QmM7O1FBd0RFRyxNQXhERkg7UUErQ05JLE1BL0NNSjtRQStDSEs7bUJBN0MwQnhCLFVBc0RyQmM7b0JBVExULFdBU2tDQyxHQUFLLE9BVnhDWSxPQVU2QyxXQUF2Q0osR0FBNkJSLElBdERSTixVQXNEaUM7a0JBVDNESzs7UUFBQW9CLGFBQUFELFdBN0MwQm5CLFlBc0RyQmlCO1FBeERGSCxNQStDTkk7UUE3QzZCbEIsYUE2QzFCb0I7O1VBL0NHTjtXQUFBQSxRQWtDUlQsT0F3QlM7UUExRGdDO1NBQUEsTUFBQSw4QkFBakNTO1NBQWlDLE1BQUE7UUFHTCxPQUFBO21DQS9DcEN0Qix1QkE0Q1FzQixLQUV1QmQ7OztRQXVEdEJxQixNQXpERFA7UUErQ05RLE1BL0NNUjtRQStDSFM7bUJBN0MwQjVCLFVBdUR0QmM7b0JBVkpULFdBVWlDQztZQUFLLE9BQVMsV0F2RHJCTixVQXVEcUIsV0FBM0NjLEdBQTZCUjtXQUFtQjtrQkFWcEREOztRQUFBd0IsYUFBQUQsV0E3QzBCdkIsWUF1RHRCcUI7UUF6RERQLE1BK0NOUTtRQTdDNkJ0QixhQTZDMUJ3Qjs7OztHQVl5QztxQjtZQUk1Q0MsY0FBd0IsT0FqQnRCWjtHQWdCUSxJQUFBLGFBQ1ZZLFVBM0dGakMsVUErRUFrQixTQXNDZ0I7WUFJWmdCLGdCQUEwQkM7UUFBTGxCLGNBQUhSO0lBQWtDLE9BQUEsV0FBMUIwQixhQUEwQixXQUEvQmxCLEdBQUhSOztHQUxGLElBQUEsMkJBS2hCeUI7WUFLRkUsWUFBWW5CLEdBQUVSLEdBQUksT0FBZ0IsNEJBQXBCQSxHQUFGUSxJQUFnQztZQVN4Q29CLEtBQU1DLFNBQVNILGFBQWMsV0FBdkJHLFNBQVNILGFBQXNDO1lBQ3JERyxtQkFBVUEsb0JBQWUsT0FBZkE7WUFDVkMsa0JBQThCQztRQUFqQkw7SUFBNEIsT0FBQSxXQUE1QkEsYUFBaUJLOztHQVJsQixtQkFNWkgsTUFDQUMsU0FDQUM7WUFHRkUsT0FDR0gsU0FBU0k7aUJBQ1N2QztrQkFFc0JxQyxVQUN2QyxXQUhpQnJDLFVBRXNCcUMsV0FySnRDLGNBdUpLO0tBRlI7TUFERWhDLGFBQ0Ysd0JBSEM4QjtNQU9XLE1BQUEsV0FQRkksV0FFUmxDO0tBS1UsT0FBQTtJQUFvQjtJQU5uQixPQUFBO0dBTW9CO0dBcEJ4Qiw0QkFZWGlDO1lBb0JFRSxjQUFZLGVBQXdCLDhCQUFnQjtZQUVwREMsS0FBSzVCLEdBQUU2QjtJQUNULFlBRE83Qjs7U0FFR2hCO0tBQXNCLHlCQUF0QkEsVUFGRDZDO0tBRXVCOztRQUN6QkM7SUFBSyxPQUFBLFdBSEhELFNBR0ZDO0dBQWM7WUFHbkJDLGNBQWMvQixHQUFFOEI7SUFDbEIsWUFEZ0I5Qjt1QkFFSjtRQUNGaEI7SUFDUixhQUEwQjZDLFNBQVcsT0FBckMsV0FBMEJBLFNBSlZDLEdBSThCO0lBQTlDLHdCQURROUM7SUFITWdCLFdBQUU4Qjs7R0FLTDtZQUdYRSxLQUFLaEM7SUFDUCxZQURPQTt1QkFFTTtRQUNOOEI7SUFBSyxXQUFMQTtHQUFXO0dBMUJSLElBQUEsV0FPUkgsUUFFQUMsTUFNQUcsZUFRQUMsT0FRWTtZQUlaQyxnQkFBMEJkO0lBQXdCLElBQTdCbEIsY0FBSFIsY0FBZ0MsTUFBQSxXQUE3QlEsR0FBSFI7SUFBc0IsT0FBQSx5QkFBZDBCOztHQUxWO0lBQUEsNkJBS2hCYzs7WUFLRkMsWUFBWWpDLEdBQUVSLEdBQUksT0FBZ0IsNEJBQXBCQSxHQUFGUSxJQUFnQztZQVUxQ2tDLGdCQUFZLE9BQUEsNEJBQWE7WUFRekJDLHlCQUF5QnBDO0lBQzNCLG9CQUE2QixJQUFPcUMsa0JBQXlCLE9BQXpCQSxNQUErQjtJQUFuRSxVQUFBLHlCQUQyQnJDO0lBQ0UsT0FBQTtHQUFzQztZQU9qRXNDLGNBQWN0QyxHQUFHQzs7S0FDSyxJQUFjdUIscUJBQVBhLGtCQUN2QixRQUFBLFdBRldwQyxHQUNZb0M7aUJBRVI7U0FDWEU7S0FDUixvQkFKa0NmLFVBRzFCZTtLQUNSO0lBQ007SUFMYyxPQUFBLHlCQURSdkM7R0FNTjtZQUlWd0MsMEJBQTBCQztJQUFrQixhQXhCOUJKO0tBQ0MsSUFBWGIsV0FBVztLQUNQLHlCQXNCa0JpQixTQXhCWkosT0FDVmI7S0FFSixPQUZJQTs7SUF1QndDLHFCLE9BcEM1Q1U7R0FvQ2tGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F2SnRGckM7T0FFQU07T0F4QkFQO09Bc0VFd0I7Ozs7Ozs7UUFtRUVjO1lBVUVDLFVBZ0JBRyxlQVJBRjtRQWtCRkk7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDMU9ORTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBQSxTQUFBQyxVQUFBQztJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBQUE7OzJCQUFBOzswQkFBQTs7eUJBQUE7O3dCQUFBOzt1QkFBQTs7c0JBQUE7O3FCQUFBOztvQkFBQTs7bUJBQUE7O2tCQUFBOztpQkFBQTs7Z0JBQUE7O2VBQUE7O2NBQUE7O2FBQUE7O1lBQUE7O1dBQUE7O1VBQUE7O1NBQUE7O1FBQUE7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBRixrQkFBQUU7OztNQUFBLE9BQUE7NENBQUFGLGtCQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQUEsT0FBQTtpRUFBQUYsa0JBQUFFOzswQkFBQSxPQUFBO2dFQUFBRixrQkFBQUU7O3lCQUFBLE9BQUE7K0RBQUFGLGtCQUFBRTs7d0JBQUEsT0FBQTs4REFBQUYsa0JBQUFFOzt1QkFBQSxPQUFBOzZEQUFBRixrQkFBQUU7O3NCQUFBLE9BQUE7NERBQUFGLGtCQUFBRTs7cUJBQUEsT0FBQTsyREFBQUYsa0JBQUFFOztvQkFBQSxPQUFBOzBEQUFBRixrQkFBQUU7O21CQUFBLE9BQUE7eURBQUFGLGtCQUFBRTs7a0JBQUEsT0FBQTt3REFBQUYsa0JBQUFFOztpQkFBQSxPQUFBO3VEQUFBRixrQkFBQUU7O2dCQUFBLE9BQUE7c0RBQUFGLGtCQUFBRTs7ZUFBQSxPQUFBO3FEQUFBRixrQkFBQUU7O2NBQUEsT0FBQTtvREFBQUYsa0JBQUFFOzthQUFBLE9BQUE7bURBQUFGLGtCQUFBRTs7WUFBQSxPQUFBO2tEQUFBRixrQkFBQUU7O1dBQUEsT0FBQTtpREFBQUYsa0JBQUFFOztVQUFBLE9BQUE7Z0RBQUFGLGtCQUFBRTs7U0FBQSxPQUFBOytDQUFBRixrQkFBQUU7O1FBQUEsT0FBQTs4Q0FBQUYsa0JBQUFFOztPQUFBLE9BQUE7NkNBQUFGLGtCQUFBRTs7TUFBQSxPQUFBOzRDQUFBRixrQkFBQUU7O0tBQUEsT0FBQTsyQ0FBQUYsa0JBQUFFOztJQUFBLE9BQUEsd0NBQUFGLGtCQUFBRTtHQXdCMEI7WUF4QjFCQztJQUFBOztPQUNFOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBO2VBQ0E7O0dBQ3dCO1lBRXRCQyxNQUF5QkMsT0FBQUM7SSxzQ0FBQUQsT0FBQUM7O1lBZTNCQyxPQUFPQyxHQUFJLE9BQUpBLEtBQU87WUFDZEMsU0FBU0QsR0FBSSxPQUFKQSxPQUFBQSxTQUFpQjtZQUMxQkUsWUFBWUY7SUFBSSxpQ0FBSkEsT0FBSSxPQURoQkMsU0FDWUQ7SUFBSSxPQUFBO0dBQStCO1lBQy9DRyxVQUFVSDtJQUFTLFdBRm5CQyxTQUVVRDtJQUFJLE9BQUEsd0JBQUpBO0dBQW9CO1lBQzlCSSxNQUFNSixHQUFRSyxPQUFSTCxPQUFRSztZQUNkQyxVQUFVTixHQUFBQSxPQUFBQSxxQkFBc0I7WUFHaENPLGVBQWVQLEdBQUVRO0lBQ25CLEtBQU8sNEJBRFVSO0tBQ2pCLE1BQUE7SUFKRU0sVUFHZU47SUFBQUEsT0FBRVE7O0dBR0g7R0FHbEI7OztZQUVJQyxNQUFNVDtJQUFBQTtJQUVSLE1BQUE7R0FBb0I7WUFHbEJVLE9BQU9WLEdBQUVXO0lBQ1gsS0FwQkVULFlBbUJPRixNQUNtQixXQURqQlcsR0FsQlRSLFVBa0JPSCxLQWhCUE0sVUFnQk9OLElBR1A7SUFFRztHQUFLO1lBR1JZLFlBQVlaLEdBQUVhO0lBQUssT0FSbkJILE9BUVlWLEdBQWdCLDBCQUFkYTtHQUE2QjtZQUUzQ0MsY0FBY2QsR0FBRWU7SUFDbEIsR0FBRyxrREFEZUEsVUFFYjtJQUVPLElBQU5DLE1BbENKZixTQThCY0QsSUF6QkZpQixVQThCWixzQkFMZ0JGO0lBTWIsT0FBQTsrQkFGQ0MsTUE3QlFDLG1DQXlCRWpCOztjQVFOO2lDQVJNQSxNQUlWZ0IsS0FKWUQ7aUJBQUZmLE9BQUFBLE9BekJGaUI7O0dBcUNEO1lBR1hDLE9BQU9sQixHQUFFVyxHQUFJLEdBekJiRCxPQXlCT1YsR0FBRVcsSUFBdUIsUUFBUSxPQTlCeENGLE1BOEJPVCxHQUF3QztZQUMvQ21CLFlBQVluQixHQUFFYTtJQUFLLE9BRG5CSyxPQUNZbEIsR0FBZ0IsMEJBQWRhO0dBQTZCO1lBRTNDTyxLQUFLcEIsR0FBRVc7SUFDVDtLQUErQixLQWhEN0JULFlBK0NLRixNQUN3QixXQUR0QlcsR0E5Q1BSLFVBOENLSCxLQTVDTE0sVUE0Q0tOOzs7R0FHSDtZQUdGcUIsTUFBTXJCLEdBQUVXLEdBVFJPLE9BU01sQixHQUFFVyxJQUNWLE9BUEVTLEtBTU1wQixHQUFFVyxHQUVGO1lBR05XO0lBQWdCLGlDQUVYO0lBRFE7R0FDSDtZQUdWQztJQUFVOzs7Ozs7O0tBQ3VCOztJQUM1QjtHQUFLO1lBR1ZDO0lBQVM7Ozs7Ozs7O0tBQzJDOztJQUMvQztHQUFLO1lBR1ZDLE1BQU16QjtJQUNSLE9BL0NFWSxZQThDTVo7Y0E5Q05ZO2dCQThDTVo7Z0JBMUJOb0IsS0EwQk1wQixHQUxOd0I7aUJBeEJBTixPQTZCTWxCLEdBVk51QixVQWhCQUgsS0EwQk1wQixHQUxOd0I7ZUF4QkFOLE9BNkJNbEIsR0FWTnVCLFVBaEJBSCxLQTBCTXBCLEdBTE53QjtHQWVjO1lBR2RFLGtCQUFrQjFCO0lBYmxCeUIsTUFha0J6QjtJQUVqQixPQTdERFksWUEyRGtCWixVQUFBQSxnQkFBQUE7R0FFbUQ7WUFHckUyQjtJQUFnQjs7OztLQUNxQjs7SUFDaEM7R0FBSztZQWlEVkMsWUFBYUMsUUFBTzdCO0lBQ3RCLElBQUk4QixNQURrQjlCLE1BR3BCLE9BcEhBYyxjQWlIb0JkLEdBQVA2QjtJQUdiO0tBRUcsR0F4SEhqQixZQW1Ib0JaO01BS00sSUFBQSxPQXhIMUJZLFlBbUhvQlosUUFFbEIrQixZQTdIRnJCLE9BMkhvQlYsR0EvRXBCdUI7O1VBaUZFUSxJQTdIRnJCLE9BMkhvQlYsR0EvRXBCdUI7O1NBaUZFUTtJQTlJRjNCLE1BNElvQkosR0FDbEI4QjtJQU1KLE9BTElDO0dBTUg7Z0JBa0hNL0I7SUFDTyxJQUFWZ0MsVUExUUYvQixTQXlRS0Q7SUFBQUEsT0FDSGdDO0lBREdoQztJQUlKLEdBNVFERSxZQXdRS0YsSUFBQUE7SUFPQyxJQXRIV2lDLFFBeEpqQjlCLFVBdVFLSDtJQVFJLEdBckxUMkIsY0E4RGlCTSxRQTFHakJiLEtBeU5LcEIsR0E3S0wyQixnQkE2S0szQjthQS9HWWlDO0tBc0hYLGVBdEhXQTs7OztTQXFFWixLQUFBLDRCQTBDQWpDO1VBMUNQLE1BQUE7U0FDbUIsV0E5TmpCRyxVQXVRS0g7U0F6Q0EsS0FBQTtVQUFQLE1BQUE7U0FDRyxLQW5NRGMsY0EyT0tkLGFBdkJGLE9BM0pIMEIsa0JBa0xLMUI7U0F0Q0csSUFBSmtDLElBc0NDbEM7U0F6TkxvQixLQXlOS3BCLEdBN0tMMkI7U0F5SWMsV0FuT2R4QixVQXVRS0g7U0FwQ0YsS0FBQTtVQUEyQyxXQW5POUNHLFVBdVFLSDtVQXBDOEIsS0FBQTtXQXJMbkNvQjthQXlOS3BCO3NCQTVCQ21DO2NBSEcsV0FHSEE7Ozs7O2tCQUZhOzs7O2tCQUZkLE9BMU5MMUIsTUEwUEtUOztjQTVCUSxPQUFBLDBCQUFQbUMsU0E5Tk4xQixNQTBQS1Q7YUEzQmM7V0E5TG5Cb0IsS0F5TktwQixHQTdLTDJCO1dBOUNBUixZQTJOS25CO1dBQUFBOzs7O1NBdFFMSSxNQXNRS0osR0F0Q0RrQztTQXNDQ2xDOzs7U0FhSSxPQS9RVE8sZUFrUUtQOztTQWNJLE9BaFJUTyxlQWtRS1A7OztrQkEvR1lpQztZQUFBQTs7UUFrRFosS0FBQSw0QkE2REFqQztTQTdEUCxNQUFBO1FBQ21CLFdBM01qQkcsVUF1UUtIO1FBNURBLEtBQUE7U0FBUCxNQUFBO1FBek1FTSxVQXFRS047UUExREosT0EzTERVLE9BcVBLVixHQXBNTHdCO21CQWZBSCxNQW1OS3JCLEdBcE1Md0IsU0FvTUt4QjttQkFBQUE7O1FBaUJJLE9BblJUTyxlQWtRS1A7O1FBa0JJLE9BcFJUTyxlQWtRS1A7O1FBbUJJLE9BclJUTyxlQWtRS1A7O1FBbkJBLEtBQUEsNEJBbUJBQTtTQW5CUCxNQUFBO1FBQ0csS0F6TkRjLGNBMk9LZCxXQTNOTG1CLFlBMk5LbkIsUUFBQUE7UUFmSDtTQTFNRm9CLEtBeU5LcEIsbUJBZkksNEJBRU87U0FDWCxHQS9OTGMsY0EyT0tkLFdBQUFBO1NBVkssS0FuT1ZZLFlBNk9LWixRQWpCRixPQXpPSFMsTUEwUEtUOzs7O1FBV0ksT0E3UVRPLGVBa1FLUDs7UUFZSSxPQTlRVE8sZUFrUUtQOztRQXlCTSxHQW5KWDRCLG1CQTBISzVCO1NBbERBLEtBQUEsNEJBa0RBQTtVQWxEUCxNQUFBO1NBQ21CLFdBdE5qQkcsVUF1UUtIO1NBakRBLEtBQUE7VUFBUCxNQUFBO1NBcE5FTSxVQXFRS047U0EvTEx5QixNQStMS3pCO1NBQUFBOzs7OztRQWVJLE9BalJUTyxlQWtRS1A7O1FBZ0JJLE9BbFJUTyxlQWtRS1A7OztRQTlHQSxLQUFBLDRCQThHQUE7U0E5R1AsTUFBQTtRQXpEbUIsV0FoR2pCRyxVQXVRS0g7UUF2S0EsS0FBQSxnQ0F3RFlpQztTQXhEbkIsTUFBQTtRQTlGRTNCLFVBcVFLTjtRQXBLTDtTQXJEQW9CO1dBeU5LcEI7b0JBbEtEbUM7WUFGRyxXQUVIQTs7Ozs7OzthQUQrQjs7WUFDeEIsT0FBQSwwQkFBUEEsR0FtRGFGO1dBbERIO1NBQ1gsS0E3RUhyQixZQTZPS1osUUEzTkxtQixZQTJOS25CLEdBL0dZaUMsUUErR1pqQztTQTlKQSxLQS9FTFksWUE2T0taLEdBL0dZaUM7VUE1Q1AsSUFRSkUsSUFwSE5oQyxVQXVRS0g7OztvQkFuSkNtQztxQkFBQUE7bUJBQUFBOzs7O3VCQWxITjdCLFVBcVFLTixJQTdPTFksWUE2T0taOzs7d0JBbkpDbUM7V0FsSE43QixVQXFRS047OztVQXJRTE0sVUFxUUtOOzs7Ozs7Ozs7Ozs7Ozs7OztRQXBJRyxJQUFOOEIsTUFvSUc5QjtRQXJQTFUsT0FxUEtWLEdBOU1Mc0I7UUEvQkFWLFlBNk9LWjtRQWhJTCxJQUhFK0IsSUFsSEZyQixPQXFQS1Y7UUF0UUxJLE1Bc1FLSixHQXBJSDhCO1FBeUpvQyxHQXhKcENDO1NBMERHLEtBQUEsNEJBeUVBL0I7VUF6RVAsTUFBQTtTQTVLRVUsT0FxUEtWLEdBOU1Mc0I7U0E0SEMsR0EzSkRWLFlBNk9LWjtVQW5OTHFCLE1BbU5LckI7O1VBbk5McUIsTUFtTktyQjtVQTlFRixHQS9KSFksWUE2T0taLFFBbk5McUIsTUFtTktyQjs7U0F4R0ksSUFBUG9DLE9Bd0dHcEM7U0F2R0o7V0E5SURVO2FBcVBLVjs7Y0F2R0ssa0NBRUg7Y0FEUTthQUNGO1VBRVYsR0FsSkhVLE9BcVBLVixHQTlNTHNCO1dBTEFELE1BbU5LckI7a0JBclBMVSxPQXFQS1Y7V0F6TkxvQixLQXlOS3BCOztXQXRRTEksTUFzUUtKLEdBeEdIb0M7U0FpQ0QsT0F0S0R4QixZQTZPS1o7b0JBQUFBO21CQTFITDRCOzRCQTBISzVCO3NCQS9MTHlCLE1BK0xLekIsSUFBQUE7c0JBQUFBOzs7O0lBNEJBLE9BdEpMNEIsbUJBMEhLNUI7Y0FsTEwwQixrQkFrTEsxQjtlQXJRTE0sVUFxUUtOLElBQUFBO0dBaUNtQjtZQUd4QnFDLEtBQUtyQztJQUVQLEdBL1RJSixNQTZUR0ksV0FHRjtJQUNBLElBQ0MsZUFMQ0EsSUFLRDs7O2lDQUNnQjs7O0dBQUc7WUFHdkJzQyxPQUFPQyxHQUVELElBQUp2QyxRQUZLdUMsY0FUUEYsS0FXRXJDLElBQ0osT0FESUEsRUFFSDtZQUdDd0MsTUFBTXhDLEdBQUksV0FBSkEsTUFBQUEsTUFBZ0I7WUFDdEJ5QyxRQUFRekMsR0FBSSxPQUFKQSxLQUFhO1lBRXJCMEMsYUFBYTFDO0lBQ2YsR0FqVklKLE1BZ1ZXSSxXQUVWO0lBRVksSUFBQSxRQVBmd0MsTUFHYXhDLElBSUoyQyxnQkFBTDNCO0lBQ0osT0FBQSwyQkFMYWhCLE1BSVRnQixLQUFLMkI7R0FDZ0I7O2FBbUJyQkMsS0FBS0w7S0FDUCxJQWhCQXZDLElBbkJGc0MsT0FrQ1NDLElBZEVNO0tBQ1g7TUFBaUI7T0FBQSxRQWRqQkwsTUFZRXhDO09BRVMyQztPQUFQRztPQURPQyxnQkFEVC9DLE1BRUU4QyxPQUFPSCxNQURBRTtNQUd1QixLQTdWaENqRCxNQXlWQUksZUF6VkFKLE1BeVZBSSxXQTVCRnFDLEtBNEJFckMsUUFDUzZDLE1BQUFFO01BSU47T0FZZ0NDLFFBWmhDLDBCQUpNRDs7OztXQWdCMkJFO1dBQUFDO1dBQUFDO1dBQUFDLFdBcFl4Q3pELFVBb1l3Q3dEO1dBQUFFLGlDQUFBSDtXQUFBSSxpQ0FBQUw7eUJBQUFHLGNBQUFDLGNBQUFDOzswQ0FBRE47T0FBakMsT0FBQTtNQUFBLE9BQUE7O0lBQTBFOzs7OztLQUYxRUo7S0FPRjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFBeUI7SUFBekI7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FQRUE7S0FZRjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFDMkg7SUFEM0g7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FaRUE7S0FBQUE7S0FBQUE7S0FBQUE7S0FBQUE7S0FBQUE7S0FBQUE7S0F3QkY7OztTQUFBOzs7Ozs7S0FBQSxPQUFBO0lBUXdCO0lBUnhCO0tBQUE7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeEJFQTtLQXFDRjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFBMEM7SUFBMUM7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FyQ0VBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBc0RGOzs7U0FBQTs7Ozs7O0tBQUEsT0FBQTtJQWNpRTtJQWRqRTtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXRERUE7S0FBQUE7S0FBQUE7S0EyRUY7OztTQUFBOzs7Ozs7S0FBQSxPQUFBO0lBR2U7SUFIZjtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTNFRUE7S0FtRkY7OztTQUFBOzs7Ozs7S0FBQSxPQUFBO0lBQ3dIO0lBRHhIO0tBQUE7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBbkZFQTtLQUFBQTtLQUFBQTtLQTJGRjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFJK0k7SUFKL0k7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EzRkVBO0tBb0dGOzs7U0FBQTs7Ozs7O0tBQUEsT0FBQTtJQUNrRjtJQURsRjtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXBHRUE7S0EwR0Y7OztTQUFBOzs7Ozs7S0FBQSxPQUFBO0lBQWlEO0lBQWpEO0tBQUE7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMUdFQTtLQUFBQTtLQUFBQTtLQUFBQTtLQUFBQTtLQW1IRjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFNZ0I7SUFOaEI7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FuSEVBO0tBQUFBO0tBQUFBO0tBZ0lGOzs7U0FBQTs7Ozs7O0tBQUEsT0FBQTtJQUkyQjtJQUozQjtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWxLRk47V0FoV0Y3QyxXQUFBRSxXQTBCSUM7T0E4VUY2QztPQURBRDtPQUdBRTtPQWpVQTNDO09BOFNBc0M7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQ3BLYWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXRLVGxCLEtBQUttQjtJQUNYO0tBQUEscUNBRFdBO0tBRW1CLFdBQUEscUNBRm5CQTtLQUVPLEtBQUEsbURBQW9EOztHQUFFO1lBR3RFQyxpQkFBaUJEO0lBQ25CO0tBQWlDLFdBQUEscUNBRGRBO0tBQ0UsS0FBQTtLQU5mbkIsS0FLYW1COztHQUdmO1lBR0Y5QyxPQUFPOEMsSUFBR0U7SUFDRixJQUFOQyxNQUFNLHFDQURESDtJQUVOLE9BQUEsd0NBRENHLEtBRFFEO2VBWE5yQixLQVdHbUI7O0dBTUM7WUFHUnRDLE9BQU9zQyxJQUFHRTtJQUNGLElBQU5DLE1BQU0scUNBRERIO0lBRU4sR0FBQSx3Q0FEQ0csS0FEUUQ7S0FHUCxPQXZCQ3JCLEtBb0JHbUI7Ozs7aUVBQ0xHOzs7Ozs4REFEUUQ7Ozs7O0dBUzBCO1lBR2hDdEMsS0FBTW9DLElBQXNCN0MsR0FBSSxRQUFHLEtBQUEsV0FBUEEsR0FBdEI2QyxLQUFzRCxPQUFFO1lBVTlESSxJQUFJSjtJQUNWLE9BQ1EscUNBRkVBOztPQTFDSm5CLEtBMENJbUI7T0FyQ1JDLGlCQXFDUUQ7T0FWSnBDLEtBVUlvQyxJQUFKSTtPQXRCSjFDLE9Bc0JRc0M7V0FDTks7OztPQTNDRXhCLEtBMENJbUI7T0FyQ1JDLGlCQXFDUUQ7T0FnQ1JNLFdBaENRTjtPQXRCUnRDLE9Bc0JRc0M7V0FDTks7OztPQTNDRXhCLEtBMENJbUI7T0FyQ1JDLGlCQXFDUUQ7T0FnQ1JNLFdBaENRTjtPQXRCUnRDLE9Bc0JRc0M7V0FDTks7OztXQUFBQTs7OztXQUFBQTs7OztXQUFBQTs7Ozs7V0FBQUE7ZUEzQ0V4QixLQTBDSW1CLFNBQ05LOztJQTRCSixHQTVCSUEsS0F0Q0ZKLGlCQXFDUUQ7SUE4QlYsT0E3QklLO0dBNkJEO1lBRURDLFdBQVdOO0lBQUssR0FoQ1pJLElBZ0NPSixLQUFvQjs7O0dBQTJDO1lBeEM3Q08sT0FzRHZCUDtJQVhSLFdBbkNNSSxJQThDRUo7SUFYUjs7O0tBWUc7O1FBOUVEOUMsT0E2RU04QztZQW5GTkM7YUFtRk1EO1dBeERGcEM7YUF3REVvQztzQkFJT0E7Y0FDWCxXQTNEMkJPLE9BMERoQlA7Y0FDWDs7O2VBRUcsR0FwRkw5QyxPQWlGYThDLFNBdkZiQyxpQkF1RmFELEtBS1Q7OztjQUpGO2FBTVU7V0EvRVp0QyxPQW9FTXNDO1dBbkZOQyxpQkFtRk1EOzs7S0FWTDs7VUFFQSxHQXJFRDlDLE9BNkVNOEMsUUFuRk5DLGlCQW1GTUQsS0FOTjs7SUFMRjtHQU9VO1lBcUJSUSxhQUFhUjtJQXRFWixXQUQ0Qk8sT0F1RWhCUCxPQXpFVHBDLEtBeUVTb0MsSUF2RWdCTztJQXVFUixTQUFjOzs7R0FBNkM7WUFFaEZFLFlBQVlUO0lBQ2Q7S0FBNkIsUUFBQSxxQ0FEZkE7S0FDR1U7S0FBYkM7SUFDRCxLQWxHRHpELE9BZ0dZOEMsUUFlVDtJQXJISEMsaUJBc0dZRDtJQXZGWnRDLE9BdUZZc0M7SUF0R1pDLGlCQXNHWUQ7SUFPTSxJQUFkWSxjQUFjLHFDQVBOWjtJQUZaUSxhQUVZUjtJQVNXO0tBQW5CYSxtQkFBbUIscUNBVFhiO0tBVVJ6RCxTQUFTLHFDQVZEeUQ7S0FjTjtPQUFBOztTQUpGekQ7U0FIQXFFO1NBRUFDLG1CQUZBRDtLQU1BLE9BQUE7SUFGSjs7YUFDSSwyQkFGQXJFLFFBVEZvRSxhQUFhRDs7R0FjUjtZQUdQSSxtQkFBbUJkO0lBQ2YsWUFuQkpTLFlBa0JtQlQ7OzZCQUVORCxvQkFBUGdCO0tBQWlCLFdBQWpCQSxPQUFPaEI7Ozs7R0FDc0M7WUFRbkRpQix3QkFBd0JoQjtJQUNoQixJQUFOSztJQUNKLFNBQUlZLElBQUlDO0tBQ04sS0FETUEsSUFFSTtpQkFGSkEsT0FHS0MsY0FBSEM7S0FKTmYsaUJBSU1lLEdBQUdELElBSlRkOztJQUlvQztJQXhJdENKLGlCQW1Jd0JEO0lBRXRCaUIsSUEvQkZSLFlBNkJ3QlQ7SUF4R3BCcEM7TUF3R29Cb0M7ZUFTYkE7T0FDWCxPQXZJQTlDLE9Bc0lXOEM7a0JBNUlYQyxpQkE0SVdELEtBUFRpQixJQS9CRlIsWUFzQ1dUOztNQU1EO3FDQWRSSztHQWVTO1lBR1hnQixNQUFNQyxVQUFTdkM7SUFDUixJQUFMaUIsS0FBSyxxQ0FEUWpCO0lBR2Y7S0FEK0IsV0FBQSxxQ0FEN0JpQjtLQUNpQixLQUFBOzs7O1VBSVQsSUFBTkssTUFBTSxXQU5KaUIsVUFDSnRCO1VBeElGdEMsT0F3SUVzQztVQU1GLE9BRElLO1NBRUQ7TUFIYSxPQUFBOztLQUZoQixxQ0FGRUw7O0dBT0U7R0FXYSxTQUFqQnVCLHFCLE9BbkJBRixNQWxEQWI7WUFzRUFnQix1QkFBdUJ6QztJQUFJLE9BcEIzQnNDLE1BbkJBTCx5QkF1Q3VCakM7R0FBbUM7WUFFMUQwQyxZQUFZQyxHQUFFQyxhQUFZNUM7SUFDNUI7S0FBSTZDLElBdkJGUCxNQXNCWUssR0FBYzNDOzs7Ozs7Ozs7MkJBRXBCOEM7WUFBQTs7NkNBRlFGLGFBRVJFO1lBQUEsT0FBQTtXQUFpQzs7O0lBQXpDLE9BQUEsNEJBRjRCOUMsR0FDeEI2QztHQUN5Qzs7Ozs7O0tBWnBDLElBQUw1QixLQUFLLHFDQURNRDtLQUliO01BRm9DLFdBQUEscUNBRGxDQztNQUNxQixHQUFBO01BQ2dCO09BQUEsT0FBQSxxQ0FGckNBO09BRU0sT0FBQTtNQUFSO01BQ0EscUNBSEVBOztLQXVCQTs7O1NBQUE7Ozs7OztLQUFBO0tBb0NtQjtNQUF1QjhCLFFBcEQ1Q1AsZUFSYXhCOztrRUE0RCtCK0I7S0FBMUM7S0FDQTs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFDa0M7SUF0Q2xDO0tBQUE7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7OztLQXFDQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FLQTtLQUFXLFNBQVAxQyxXLE9BdkROcUMsWUF4RUFqQjtLQStITXBCO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBU0o7OztTQUFBOzs7Ozs7S0FBQSxPQUFBO0lBUzBCO0lBVDFCO0tBQUE7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBYUE7O09BQXFEMkM7T0FBQUM7T0FBQUMsaUNBQUFEO09BQUFFLGlDQUFBSDtxQkFBQUUsY0FBQUM7O0tBQTFDLFNBQVA5QyxXLE9BN0VOcUMsWUFwREFYO0tBaUlNMUI7S0FBQUE7S0FBQUE7S0FBQUE7S0FPSjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFLd0M7SUFMeEM7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FwRkZxQztPQXBEQVg7OztTQWlKdURxQjtTQUFBQztTQUFBQyxpQ0FBQUQ7U0FBQUUsaUNBQUFIO3VCQUFBRSxjQUFBQzs7O0tBRXZDLFdBQUE7S0FBZDtLQUNBOzs7U0FBQTs7Ozs7O0tBQUEsT0FBQTtJQUsrSjtJQUwvSjtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQVNBLGFBQTBEQzs7O1FBQUNDO1FBQUFDO1FBQUE3QyxpQ0FBQTZDO1FBQUE1QyxpQ0FBQTJDO3NCQUFBNUMsY0FBQUM7O3lDQUFEMEM7O0tBQS9DLFNBQVBuRDtNLE9BekdOcUMsWUF6Q0FUOztLQWtKTTVCO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBO0tBT0o7OztTQUFBOzs7Ozs7S0FBQSxPQUFBO0lBUXVFO0lBUnZFO0tBQUE7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQW5IRm1DLGdCQUNBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDN0lBa0I7O0lBN0NBQztJQU9KQztJQUFBQztJQWVNQztJQVlBQztJQVdGQztJQUFBQztJQXFFRkM7SUFBQUM7SUFvQ0FDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdEpFLFNBQUFwSCxVQUFBSztrQkFBVWdIO0tBQUQsU0FBQ0E7aUJBQUFBOzs7O1FBQUE7U0FBQUM7U0FBQUM7U0FBQUMsV0FBQSw2QkFBQUQ7U0FBQUUsV0FBQSw2QkFBQUg7UUFBQSxXQUFBRSxVQUFBQzs7OztLQUFBLE9BQUE7MkNBQVZmLHFCQUFVVztJQUFxQjtJQUEvQixPQUFBLG1DQUFBaEg7R0FBa0U7WUFBbEVILFVBQUF3SDs7O01BQVVDO01BQUFDO01BQUFDLHdDQUFBRDtNQUFBRSx3Q0FBQUg7b0JBQUFFLGNBQUFDOztJQUFWLE9BQUEsbUNBQUFKO0dBQWtFO1lBQWxFSyxRQUFBQyxPQUFBQztrQkFBVUMsT0FBQUM7S0FBQTtNQUFBQyxRQUFBRjtNQUFBRyxRQUFBSDtNQUFBSSxRQUFBSDtNQUFBSSxRQUFBSjtNQUFBSyxJQUFBLDZCQUFBSCxPQUFBRTtrQkFBQUMsSUFBUyw2QkFBVEosT0FBQUUsU0FBQUU7SUFBZTtJQUFFLE9BQUEsbUNBQTNCUixPQUFBQztHQUErQjtHQUEvQjs7Ozs7SUFBQSxjQUFLO0lBQUwsTUFBQTtJQUFBUSxRQUFBO0lBQUEsTUFBQTtJQUFLQyxjQUFMLFdBQUEsK0JBQUFEO1lBQUFFLFdBQUF6RDs7O01BQVUwRDtNQUFBQzt3Q0FBQUE7TUFBQUM7d0NBQUFGOzRDQUFBRTs7NkNBQVY1RDs7WUFBQTZELFlBQUFDLEtBQUF6SCxLQUFBMkQ7a0JBQVM4RCxLQUFBekg7O01BQUNxSDtNQUFBQztNQUFBSSxvQ0FBREQsS0FBQXpILEtBQUNzSDt3Q0FBREcsS0FBQ0MsT0FBQUw7O0lBQVYsT0FBQSwrQ0FBQUksS0FBQXpILEtBQUEyRDtHQUFrRTtHQUFsRSxJQUFBZ0UsbUJBQUFQLFlBQUFJO1lBQUFJLFdBQTJCSCxLQUFBSSxTQUFBQztrQkFBM0JMLEtBQUFJOztNQUFVUCxpQ0FBVkcsS0FBQUk7TUFBVVIsaUNBQVZJLEtBQUFJO2dCQUFVUCxJQUFBRDs7MERBQWlCSSxLQUFBSSxTQUFBQzs7WUFBM0JDLGFBQUFOLEtBQUFJO2tCQUFBSixLQUFBSTs7TUFBVVAsaUNBQVZHLEtBQUFJO01BQVVSLGlDQUFWSSxLQUFBSTtnQkFBVVAsSUFBQUQ7O0lBQVYsT0FBQSwrQ0FBQUksS0FBQUk7R0FBa0U7R0FBbEU7SUFBQUcsbUJBQUFELGNBQUFIO0lBQUFLLFlBQUtkLGFBQUxRLGNBQUFLO0dBT0osU0FBQUUsMEJBQ0VDO0lBREYsU0FDRUE7U0FBQUMsV0FBQUQ7aUNBQUFDOztpQkFBQUE7aUJBQUE7Ozs7ZUFBQUQ7O0tBQUEsT0FBQTs0Q0FERi9DLGtCQUNFK0M7OztLQUFBLE9BQUE7NENBREYvQyxrQkFDRStDO1FBQUFFO2dDQUFBQTs7Z0JBQUFBO2dCQUFBO2dCQUFBOytDQURGakQsa0JBQ0UrQztjQUFBOzZDQURGL0Msa0JBQ0UrQztHQUdnQztZQUpsQ0csNEJBQUFDO0lBQUEsSUFBQSxXQUFBTCwwQkFBQUssV0FBQTs7OztNQUFBLE9BQUE7NkNBQUFsRCxrQkFBQWtEOzs7R0FJa0M7WUFKbENDLGlDQUFBO0dBSWtDO0dBSmxDOzs7OztJQUFBOztXQUFLOztJQUFMLE1BQUE7SUFBQUMsVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtZQUFBRSwwQkFBQUMsT0FBQUM7SUFBQSxHQUFBLCtCQUFBRCxPQUFBQyxRQUFBO29CQUFBRDtlQUFBQyxvQ0FBQUEsT0FBQTs7bUJBQUFBLG9DQUFBQSxPQUFBO29DQUFBRCxPQUFBQztHQUlrQztHQUdDO0lBQTdCQzttQkFBc0NDLFFBQU9wSixHQUFLLE9BQUEsMkJBQVpvSixRQUFPcEosR0FBNEI7SUFEOUQsY0FDWG1KO1lBR0ZFLElBQUlELFFBQU9wSixHQUFJLE9BQUEsMEJBQVhvSixRQUFPcEosR0FBZ0Q7R0FLekQsU0FBQXNKLFlBQUFDO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBNUQsa0JBQUE0RDtJQUFBO0tBQUFDLGtCQUFBRDtLQUNJRTtLQUNBQztLQUNBQztLQUNBQztLQUpKQztLQUFBQzs7Ozs7Ozs7O21CQUFBTjtPQUFBOztZQUFBTztpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUFyRSxrQkFBQTREO2dCQUFBUztjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFNMEM7bUJBTjFDRDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBO2tDQUFBQTttQ0FBQUE7O2FBQUFILG1CQUFBRyxnQkFBQUg7O21CQUNJTDtZQURKSSx3QkFBQUksZ0JBQUFKOztZQUNJO2FBREpTLG1CQUFBRjthQUNJRyxhQUFBLHNCQURKRDtZQUNJYixlQUFBYzs7a0JBQ0FiO1dBRkpHLHdCQUFBSSxnQkFBQUo7O1dBRUk7WUFGSlcsbUJBQUFKO1lBRUlLLGFBQUEsc0JBRkpEO1dBRUlkLGVBQUFlOztpQkFDQWQ7VUFISkUsd0JBQUFJLGdCQUFBSjs7VUFHSTtXQUhKYSxtQkFBQU47V0FHSU8sYUFBQSxzQkFISkQ7VUFHSWYsZUFBQWdCOztnQkFDQWY7U0FKSkMsd0JBQUFJLGdCQUFBSjs7U0FJSTtVQUpKZSxtQkFBQVI7VUFJSVM7WUFBQSx1Q0FKSkQ7U0FJSWhCLGVBQUFpQjs7b0JBSkpYOzs7Ozs7S0FBQSx5Q0FBQXZFLGtCQUFBb0U7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQWxFO2NBQUFrRTtjQUFBTjtPQUFBTztLQUFBLE9BQUE7O2NBQUFuRTtjQUFBbUU7Y0FBQVA7ZUFDSUUsaUJBQ0FDLGlCQUNBQyxrQkFDQUM7O1NBQUFrQixrQkFEQUMsaUJBREFDLGlCQURBQztLQURKLFdBQ0lBLE9BQ0FELE9BQ0FELE9BQ0FEOztJQUpKLE9BQUE7O2FBQUFuRjthQUFBNEQ7O3dCQUNJRTs7eUJBQ0FDOzswQkFDQUM7OEJBQ0FDO0dBRXNDO1lBTjFDc0I7SUFBQTtLQUlJQztLQURBQztLQURBQztLQURBQztLQUdBQyxVQUFBLHVDQUFBSjtLQUpKSyxnQ0FJSUQ7S0FEQUUsVUFBQSxzQkFBQUw7S0FISk0sa0NBR0lELGVBSEpEO0tBRUlHLFVBQUEsc0JBQUFOO0tBRkpPLGtDQUVJRCxlQUZKRDtLQUNJRyxVQUFBLHNCQUFBUDtLQURKUSxrQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQU0wQztHQU5yQztJQUFBO0lBQUE7TUFBQTs7Ozs7SUFBTCxjQUFLO0lBQUwsTUFBQTtJQUFBQyxVQUFBO0lBQUEsTUFBQTtJQUFLQztNQUFMLFdBQUEsK0JBQUFEO1lBQUFFO0lBQUE7S0FBQUM7S0FBQUM7S0FBQXpFO0tBQUFDO0tBQUEsT0FBQSxzQkFBQUE7S0FBQUMsT0FBQTtLQUFBLE9BQUEsc0JBQUFGO0tBQUEwRSxTQUFBLGdDQUFBeEU7S0FBQSxPQUFBLHNCQUFBdUU7S0FBQUUsU0FBQSxnQ0FBQUQ7bURBQUFGOzJDQUFBRztHQU0wQztZQU4xQ0MsY0FBQXhFLEtBQUF6SDtJQUFBO0tBQUE2TDtLQUFBQztLQUFBekU7S0FBQUM7S0FBQUksUUFBQSxzQkFBQUQsS0FBQXpILEtBQUFzSDtLQUFBNEUsUUFBQSxzQkFBQXpFLEtBQUFDLE9BQUFMO0tBQUE4RSxRQUFBLHNCQUFBMUUsS0FBQXlFLE9BQUFKO0lBQUEsT0FBQSxvREFBQXJFLEtBQUEwRSxPQUFBTjtHQU0wQztHQU4xQyxJQUFBTyxxQkFBQVIsY0FBQUs7WUFBQUksYUFBQTVFLEtBQUFJLFNBQUFDO0lBQUE7a0VBQUFEO0dBTTBDO1lBTjFDeUUsYUFBQTdFLEtBQUFJO0lBQUE7S0FDSTBFLE1BQUEsc0JBREo5RSxLQUFBSTtLQUVJMkUsTUFBQSxzQkFGSi9FLEtBQUFJO0tBR0k0RSxNQUFBLHNCQUhKaEYsS0FBQUk7S0FJSTZFLE1BQUEsb0RBSkpqRixLQUFBSTtJQUFBLFdBQ0kwRSxLQUNBQyxLQUNBQyxLQUNBQztHQUVzQztHQU4xQztJQUFBQyxxQkFBQUwsY0FBQUQ7SUFBQU8sY0FBS2pCLGVBQUxTLGdCQUFBTztZQUFBRSxVQUFBQyxPQUFBQztJQUNRLEdBQUEsK0JBRFJELE9BQUFDLFFBQ1E7SUFBQSxJQUFBOUYsSUFBQSxzQkFEUjZGLFVBQUFDO2FBQ1E5RixHQUFBLE9BQUFBO0lBQ0EsSUFBQStGLE1BQUEsc0JBRlJGLFVBQUFDO2FBRVFDLEtBQUEsT0FBQUE7SUFDQSxJQUFBQyxNQUFBLHNCQUhSSCxVQUFBQzthQUdRRSxLQUFBLE9BQUFBO2VBSFJGLGlCQUFBRDtrQkFJUUksT0FBQUM7S0FBQSxPQUFBLDZCQUFBRCxPQUFBQztJQUFTOztHQUhOO1lBT1A3TCxPQUFROEMsR0FBR2dKLEdBQUdyTSxHQUFHc00sVUFBTyxXQUFoQmpKLEdBQUdnSixHQUFHck0sR0FBR3NNLEdBQXFCO0dBSTFDLFNBQUFDLFlBQUFDO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBaEksa0JBQUFnSTtJQUFBO0tBQUFDLGtCQUFBRDtLQUNJRTtLQUNBQztLQUNBQztLQUNBQztLQUpKQztLQUFBQzs7Ozs7Ozs7O21CQUFBTjtPQUFBOztZQUFBTztpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUF6SSxrQkFBQWdJO2dCQUFBUztjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFNMEM7bUJBTjFDRDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBO2tDQUFBQTttQ0FBQUE7O2FBQUFILG1CQUFBRyxnQkFBQUg7O21CQUVJSjtZQUZKRyx3QkFBQUksZ0JBQUFKOztZQUVJO2FBRkpTLG1CQUFBRjthQUVJRyxhQUFBLDRCQUZKRDtZQUVJWixlQUFBYTs7a0JBQ0FaO1dBSEpFLHdCQUFBSSxnQkFBQUo7O1dBR0k7WUFISlcsbUJBQUFKO1lBR0lLLGFBQUEsNEJBSEpEO1dBR0liLGVBQUFjOztpQkFGQWhCO1VBREpJLHdCQUFBSSxnQkFBQUo7O1VBQ0k7V0FESmEsbUJBQUFOO1dBQ0lPLGFBQUEsc0JBREpEO1VBQ0lqQixlQUFBa0I7O2dCQUdBZjtTQUpKQyx3QkFBQUksZ0JBQUFKOztTQUlJO1VBSkplLG1CQUFBUjtVQUlJUztZQUFBLHVDQUpKRDtTQUlJaEIsZUFBQWlCOztvQkFKSlg7Ozs7OztLQUFBLHlDQUFBM0ksa0JBQUF3STs7T0FBQUY7S0FBQSxPQUFBOztjQUFBdEk7Y0FBQXNJO2NBQUFOO09BQUFPO0tBQUEsT0FBQTs7Y0FBQXZJO2NBQUF1STtjQUFBUDtlQUNJRSxpQkFDQUMsaUJBQ0FDLGtCQUNBQzs7U0FBQWtCLGtCQURBQyxpQkFEQUMsaUJBREFDO0tBREosV0FDSUEsT0FDQUQsT0FDQUQsT0FDQUQ7O0lBSkosT0FBQTs7YUFBQXZKO2FBQUFnSTs7d0JBQ0lFOzt5QkFDQUM7OzBCQUNBQzs4QkFDQUM7R0FFc0M7WUFOMUNzQjtJQUFBO0tBSUlDO0tBREFDO0tBREFDO0tBREFDO0tBR0FDLFVBQUEsdUNBQUFKO0tBSkpLLGdDQUlJRDtLQURBRSxVQUFBLDRCQUFBTDtLQUhKTSxrQ0FHSUQsZUFISkQ7S0FFSUcsVUFBQSw0QkFBQU47S0FGSk8sa0NBRUlELGVBRkpEO0tBQ0lHLFVBQUEsc0JBQUFQO0tBREpRLGtDQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBTTBDO0dBTnJDO0lBQUE7SUFBQTtNQUFBOzs7Ozs7O0lBQUwsY0FBSztJQUFMLE1BQUE7SUFBQUMsVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtZQUFBRTtJQUFBO0tBQUFwRTtLQUFBQztLQUFBekU7S0FBQUM7S0FBQSxPQUFBLHNCQUFBQTtLQUFBQyxPQUFBO0tBQUEsT0FBQSw0QkFBQUY7S0FBQTBFLFNBQUEsZ0NBQUF4RTtLQUFBLE9BQUEsNEJBQUF1RTtLQUFBRSxTQUFBLGdDQUFBRDttREFBQUY7MkNBQUFHO0dBTTBDO1lBTjFDa0UsY0FBQXpJLEtBQUF6SDtJQUFBO0tBQUE2TDtLQUFBQztLQUFBekU7S0FBQUM7S0FBQUksUUFBQSxzQkFBQUQsS0FBQXpILEtBQUFzSDtLQUFBNEUsUUFBQSw2QkFBQXpFLEtBQUFDLE9BQUFMO0tBQUE4RSxRQUFBLDZCQUFBMUUsS0FBQXlFLE9BQUFKO0lBQUEsT0FBQSxvREFBQXJFLEtBQUEwRSxPQUFBTjtHQU0wQztHQU4xQyxJQUFBc0UscUJBQUFGLGNBQUFDO1lBQUFFLGFBQUEzSSxLQUFBSSxTQUFBQztJQUFBOzs7YUFBQUQ7R0FNMEM7WUFOMUN3SSxhQUFBNUksS0FBQUk7SUFBQTtLQUNJeUksTUFBQSxzQkFESjdJLEtBQUFJO0tBRUkwSSxNQUFBLDZCQUZKOUksS0FBQUk7S0FHSTJJLE1BQUEsNkJBSEovSSxLQUFBSTtLQUlJNkUsTUFBQSxvREFKSmpGLEtBQUFJO0lBQUEsV0FDSXlJLEtBQ0FDLEtBQ0FDLEtBQ0E5RDtHQUVzQztHQU4xQztJQUFBK0QscUJBQUFKLGNBQUFEO0lBQUFNLGNBQUtWLGVBQUxHLGdCQUFBTTtZQUFBRSxVQUFBQyxPQUFBQztJQUNRLEdBQUEsK0JBRFJELE9BQUFDLFFBQ1E7SUFBQSxJQUFBNUosSUFBQSxzQkFEUjJKLFVBQUFDO2FBQ1E1SixHQUFBLE9BQUFBO0lBQ0EsSUFBQStGLE1BQUEsNkJBRlI0RCxVQUFBQzthQUVRN0QsS0FBQSxPQUFBQTtJQUNBLElBQUFDLE1BQUEsNkJBSFIyRCxVQUFBQzthQUdRNUQsS0FBQSxPQUFBQTtlQUhSNEQsaUJBQUFEO2tCQUlRRSxPQUFBQztLQUFBLE9BQUEsNkJBQUFELE9BQUFDO0lBQVM7O0dBSE47WUFPUEMsU0FBUUMsR0FBRzFQLEdBQUcyUCxHQUFHN0QsVUFBTyxXQUFoQjRELEdBQUcxUCxHQUFHMlAsR0FBRzdELEdBQXFCO1lBRzVDOEQsWUFDRUM7SUFERixTQUNFQTtTQUFBQyxXQUFBRDtLQUtFLElBQUEsV0E1Q1JsSiwwQkF1Q01rSixXQUtFOzs7O21DQUxGQzs7bUJBQUFBOztxQkFBQUE7O3VCQUFBQTs7eUJBQUFBO3lCQUFBO3lCQUlVO3dEQUxaN0wsa0JBQ0U0TDt1QkFBVztzREFEYjVMLGtCQUNFNEw7cUJBRVc7b0RBSGI1TCxrQkFDRTRMO21CQUdVO2tEQUpaNUwsa0JBQ0U0TDtpQkFDVztnREFGYjVMLGtCQUNFNEw7Ozs7ZUFBQUE7O0tBQUEsT0FBQTs0Q0FERjVMLGtCQUNFNEw7OztLQUFBLE9BQUE7NENBREY1TCxrQkFDRTRMO1FBQUFFLHlCQUNXQzs4QkFBQUE7UUFEWEQsbUJBQUFBO01BQ1csSUFBQUUsV0FEWEYsa0JBQ1dHLFdBYlhuRSxZQWFXa0U7TUFBQSxzQkFBQUM7O0tBQUEsT0FBQTs7Y0FGYmpNO2NBRWErTDtjQURYSDs7OEJBQ1dHO1FBRFhELG1CQUFBQTtNQUdVO09BQUFJLFdBSFZKO09BR1VLLFdBQUEsc0JBQUFEO01BQUEsb0JBQUFDOztLQUFBLE9BQUE7O2NBSlpuTTtjQUVhK0w7Y0FEWEg7OzhCQUNXRztRQURYRCxtQkFBQUE7TUFFVztPQUFBTSxXQUZYTjtPQUVXTyxXQUFBLHNCQUFBRDtNQUFBLHNCQUFBQzs7S0FBQSxPQUFBOztjQUhick07Y0FFYStMO2NBRFhIOzs0QkFDV0c7NkJBQUFBO01BSVQsSUFBQSxXQTVDUnJKLDBCQXVDTWtKLFdBS0U7Ozs7UUFMRixPQUFBOzs7UUFBQUUsbUJBQUFBO01BSVU7T0FBQVEsV0FKVlI7T0FJVVMsV0FBQSxzQkFBQUQ7TUFBQSxvQkFBQUM7O0tBQUEsT0FBQTs7Y0FMWnZNO2NBRWErTDtjQURYSDs7T0FBQUUsbUJBQUFBO0tBQVcsSUFBQVUsV0FBWFYsa0JBQVdXLFdBeEJYaEosWUF3QlcrSTtLQUFBLHNCQUFBQzs7SUFBQSxPQUFBOzthQURiek07YUFFYStMO2FBRFhIO0dBT2dDO1lBUmxDYyxZQUFBQztJQUFBLElBQUEsV0FBQWhCLFlBQUFnQixXQUFBOzs7O01BQUEsT0FBQTs2Q0FBQTFNLGtCQUFBME07OztHQVFrQztZQVJsQ0MsWUFDRUM7SUFERixVQUNFQSwyQkF2Q043SiwwQkF1Q002SjtlQUFBQTs7U0FBQUMsUUFBQUQ7bURBQUFDOzs7O1VBQUFDLFFBQUFGOzhCQXhCQXhILFlBd0JBMEg7O1NBQUFDLFFBQUFIO21EQUFBRzs7O1NBQUFDLFFBQUFKOzZCQVpBbkQsWUFZQXVEOztRQUFBQyxRQUFBTDtrREFBQUs7R0FPZ0M7R0FSbEM7Ozs4Q0F0Q0NoSzs7Ozs7dURBMkJNc0g7O3VEQVpBckU7OztJQXVCUCxjQUFLO0lBQUwsTUFBQTtJQUFBZ0gsVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtZQUFBRTtJQUFBOzs7U0FDRUMsYUFBQUMsa0NBQUFEOzRDQUFBQzs7OztVQUFBQyxlQUFBQyxjQXhCQXJILGFBd0JBb0g7NkNBQUFDOztTQUFBQyxlQUFBQyxvQ0FBQUQ7NENBQUFDOzs7U0FBQUMsZUFBQUMsY0FaQXBELGFBWUFtRDs0Q0FBQUM7O1FBQUFDLGVBQUFDLG9DQUFBRDsyQ0FBQUM7R0FPZ0M7WUFSbENDLGNBQUEvTCxLQUFBekgsS0FNSTJEO0lBTkosVUFNSUE7eUJBQUFBOzhDQU5KOEQsS0FBQXpIOzhDQUFBeUgsS0FBQXpIO2VBTUkyRDs7O01BTEZtUCxPQUtFblA7TUFMRitELHVDQURGRCxLQUFBekg7a0NBQUF5SCxLQUNFQyxPQUFBb0w7Ozs7O09BQUFFLFNBS0VyUDtPQUxGdUksdUNBREZ6RSxLQUFBekg7YUF2QkVpTSxjQXVCRnhFLEtBQ0V5RSxPQUFBOEc7OztNQUFBRSxTQUtFdlA7TUFMRndJLHVDQURGMUUsS0FBQXpIO2tDQUFBeUgsS0FDRTBFLE9BQUErRzs7OztNQUFBRSxTQUtFelA7TUFMRjhQLHVDQURGaE0sS0FBQXpIO1lBWEVrUSxjQVdGekksS0FDRWdNLE9BQUFMOzs7S0FBQUUsU0FLRTNQO0tBTEYrUCx1Q0FERmpNLEtBQUF6SDtpQ0FBQXlILEtBQ0VpTSxPQUFBSjtHQU9nQztHQVJsQyxJQUFBSyxxQkFBQWQsY0FBQVc7WUFBQUksYUFBQW5NLEtBQUFJLFNBQUFDO0ksZ0JBQUFBO3NCQUFBQTtVQUNFK0wsOEJBREZwTSxLQUFBSTs0QkFDRWdNOztzQkFERi9MO1VBQ0VnTSxVQXhCQXhILGFBdUJGN0UsS0FBQUk7NEJBQ0VpTTs7b0JBREZoTTtVQUNFaU0sVUFaQTFELGFBV0Y1SSxLQUFBSTs0QkFDRWtNOzs7O29CQURGak07VUFDRWtNLGdDQURGdk0sS0FBQUk7MEJBQ0VtTTs7b0JBREZsTTtVQUNFbU0sZ0NBREZ4TSxLQUFBSTswQkFDRW9NOzs7cUJBREZuTTtxQkFBQUE7OztZQUFBb00sYUFBQXpNLEtBQUFJO0lBQUEsSUFBQUMsT0FBQSw4QkFBQUwsS0FBQUk7SUFBQSxJQUFBLFdBQUErTCxhQUFBbk0sS0FBQUksU0FBQUMsT0FBQTs7OztNQUFBLE9BQUEsZ0NBQUE1QyxLQUFBMkM7OztHQVFrQztHQVJsQztJQUFBc00scUJBQUFELGNBQUFOO0lBQUFRLGNBQUt4QixlQUFMZSxnQkFBQVE7WUFBQUUsVUFBQUMsT0FBQUM7SUFBQSxHQUFBLCtCQUFBRCxPQUFBQyxRQUFBOztjQUFBRDtlQUFBQzt1QkFBQUEsdUJBQUFBO01BTUksT0E1Q1I1TCwwQkFzQ0kyTCxPQUFBQzs7OztnQkFBQUQ7O2dCQUFBQyxrQ0FBQUE7V0FBQUMsWUFBQUQsVUFBQUUsV0FBQUg7T0FLWSxPQUFBLHNCQUxaRyxVQUFBRDs7Ozs7O2tCQUFBRCxvQ0FBQUE7YUFBQUcsWUFBQUgsVUFBQUksV0FBQUw7U0FDYSxPQXhCWHpILFVBdUJGOEgsVUFBQUQ7OztzQkFBQUgsb0NBQUFBO1lBQUFLLFlBQUFMLFVBQUFNLFdBQUFQO1FBR2EsT0FBQSxzQkFIYk8sVUFBQUQ7Ozs7O2tCQUFBTCxvQ0FBQUE7YUFBQU8sWUFBQVAsVUFBQVEsV0FBQVQ7U0FFYSxPQWJYM0QsVUFXRm9FLFVBQUFEOzs7c0JBQUFQLGtDQUFBQTtZQUFBUyxZQUFBVCxVQUFBVSxXQUFBWDtRQUlZLE9BQUEsc0JBSlpXLFVBQUFEOzs7SUFBQSxPQUFBLGFBQUFWLE9BQUFDO0dBUWtDO29DQVJsQ3JDLGFBQUFFO1lBY0U4QztJQUFtQzs7OztTQW9COUJDO0tBQU8sT0FBQSxxREFBUEE7Ozs4QkFGQ0MsaUJBQVEsT0FBUkE7OztNQWZnQi9IO01BQUh0TTtNQUFIcU07TUFBUmhKO0tBQ1IsR0FEc0JpSjtNQUluQjtPQURLbkosSUFIY21KO09BSW5CLHNCQWpETHJFLE9BaUR1RCw2QkFEN0M5RTtPQUNMLCtDQUpnQm5EO09BSWhCLCtDQUphcU07T0FJYixrREFKS2hKO01BSUwsT0FBQTs7S0FGUTtNQUFBLCtDQUZRckQ7TUFFUiwrQ0FGS3FNO01BRUwsaURBRkhoSjtLQUVHLE9BQUE7OzZCQWNOaVIsZ0JBQU8sT0FBUEE7OztLQVhpQkM7S0FBSHBFO0tBQUgzUDtLQUFSMFA7SUFDUixHQURzQnFFO0tBT25CO01BREtDLE1BTmNEO01BT25CLHNCQXpETHRNLG9DQXdEVXVNO01BQ0wsc0JBekRMdk0sb0NBa0RxQmtJO01BT2hCLHVCQXpETGxJLG9DQWtEa0J6SDtNQU9iLGtEQVBLMFA7S0FPTCxPQUFBOztJQUpBO0tBQUEsdUJBckRMakksb0NBa0RxQmtJO0tBR2hCLHVCQXJETGxJLG9DQWtEa0J6SDtLQUdiLGlEQUhLMFA7SUFHTCxPQUFBO0dBU2dDO0dBS3ZDOzs7OzRDQTdFR3ZJOzs7Ozs7Ozs7Ozs7O0lBNkVILGVBQUs7SUFBTCxPQUFBO0lBQUE4TSxVQUFBO0lBQUEsT0FBQTtHQUFBLFdBQUEsK0JBQUFBO1lBOEJBQyxZQUNFQztJQURGLFNBQ0VBO1NBQUFDLFdBQUFEO0tBV0UsSUFBQSxXQXZITnhOLDBCQTRHSXdOLFdBV0U7Ozs7O3lDQVhGQzs7O1FBT1MsT0FBQTsrQ0FSWGpRLGtCQUNFZ1E7aUNBQUFDO1FBUWUsT0FBQTsrQ0FUakJqUSxrQkFDRWdRO2lDQUFBQztRQUFVLE9BQUE7K0NBRFpqUSxrQkFDRWdRO2lDQUFBQztRQUVVLE9BQUE7K0NBSFpqUSxrQkFDRWdRO2lDQUFBQztRQVNTLE9BQUE7K0NBVlhqUSxrQkFDRWdRO2lDQUFBQztRQVVTLE9BQUE7K0NBWFhqUSxrQkFDRWdROzs7aUNBQUFDO1FBQ1MsT0FBQTsrQ0FGWGpRLGtCQUNFZ1E7aUNBQUFDO1FBR1MsT0FBQTsrQ0FKWGpRLGtCQUNFZ1E7aUNBQUFDO1FBSWUsT0FBQTsrQ0FMakJqUSxrQkFDRWdRO2lDQUFBQztRQUtjLE9BQUE7K0NBTmhCalEsa0JBQ0VnUTtpQ0FBQUM7UUFNUyxPQUFBOytDQVBYalEsa0JBQ0VnUTs7TUFBQSxPQUFBOzs7ZUFBQUE7O0tBQUEsT0FBQTs0Q0FERmhRLGtCQUNFZ1E7OztLQUFBLE9BQUE7NENBREZoUSxrQkFDRWdROztLQUFBRTtLQUNTQztvQ0FBQUE7OztTQURURCxtQkFBQUE7T0FPUztRQUFBRSxXQVBURjtRQU9TRyxXQUFBLHNCQUFBRDtPQUFBLGtCQUFBQzs7TUFBQSxPQUFBOztlQVJYclE7ZUFFV21RO2VBRFRIOzsrQkFDU0c7U0FEVEQsbUJBQUFBO09BUWU7UUFBQUksV0FSZko7UUFRZUssV0FBQSxzQkFBQUQ7T0FBQSx1QkFBQUM7O01BQUEsT0FBQTs7ZUFUakJ2UTtlQUVXbVE7ZUFEVEg7OytCQUNTRztTQURURCxtQkFBQUE7T0FBVTtRQUFBTSxXQUFWTjtRQUFVTyxXQUFBLHNCQUFBRDtPQUFBLG9CQUFBQzs7TUFBQSxPQUFBOztlQURaelE7ZUFFV21RO2VBRFRIOzsrQkFDU0c7U0FEVEQsbUJBQUFBO09BRVU7UUFBQVEsV0FGVlI7UUFFVVMsV0FBQSxzQkFBQUQ7T0FBQSxvQkFBQUM7O01BQUEsT0FBQTs7ZUFIWjNRO2VBRVdtUTtlQURUSDs7K0JBQ1NHO1NBRFRELG1CQUFBQTtPQVNTO1FBQUFVLFdBVFRWO1FBU1NXLFdBQUEsNEJBQUFEO09BQUEsa0JBQUFDOztNQUFBLE9BQUE7O2VBVlg3UTtlQUVXbVE7ZUFEVEg7OytCQUNTRztTQURURCxtQkFBQUE7T0FVUztRQUFBWSxXQVZUWjtRQVVTYSxXQUFBLDRCQUFBRDtPQUFBLGtCQUFBQzs7TUFBQSxPQUFBOztlQVhYL1E7ZUFFV21RO2VBRFRIOzs7OytCQUNTRztTQURURCxtQkFBQUE7T0FDUztRQUFBYyxXQURUZDtRQUNTZSxXQUFBLHNCQUFBRDtPQUFBLGtCQUFBQzs7TUFBQSxPQUFBOztlQUZYalI7ZUFFV21RO2VBRFRIOzsrQkFDU0c7U0FEVEQsbUJBQUFBO09BR1M7UUFBQWdCLFdBSFRoQjtRQUdTaUIsV0FBQSxzQkFBQUQ7T0FBQSxrQkFBQUM7O01BQUEsT0FBQTs7ZUFKWG5SO2VBRVdtUTtlQURUSDs7K0JBQ1NHO1NBRFRELG1CQUFBQTtPQUllO1FBQUFrQixXQUpmbEI7UUFJZW1CLFdBQUEsc0JBQUFEO09BQUEsc0JBQUFDOztNQUFBLE9BQUE7O2VBTGpCclI7ZUFFV21RO2VBRFRIOzsrQkFDU0c7U0FEVEQsbUJBQUFBO09BS2M7UUFBQW9CLFdBTGRwQjtRQUtjcUIsV0FBQSw0QkFBQUQ7T0FBQSx1QkFBQUM7O01BQUEsT0FBQTs7ZUFOaEJ2UjtlQUVXbVE7ZUFEVEg7OytCQUNTRztTQURURCxtQkFBQUE7T0FNUztRQUFBc0IsV0FOVHRCO1FBTVN1QixXQUFBLHNCQUFBRDtPQUFBLGtCQUFBQzs7TUFBQSxPQUFBOztlQVBYelI7ZUFFV21RO2VBRFRIOzs7SUFXRSxJQUFBLFdBdkhOeE4sMEJBNEdJd04sV0FXRTs7OztNQVhGLE9BQUE7OztHQWFnQztZQWRsQzBCLFlBQUFDO0lBQUEsSUFBQSxXQUFBNUIsWUFBQTRCLFdBQUE7Ozs7TUFBQSxPQUFBOzZDQUFBMVIsa0JBQUEwUjs7O0dBY2tDO1lBZGxDQyxZQUNFQztJQURGLFVBQ0VBLDJCQTVHSi9PLDBCQTRHSStPO2VBQUFBOzs7O1dBQUFDLFFBQUFEOzREQUFBQzs7VUFBQUMsUUFBQUY7cURBQUFFOzs7O1dBQUFDLFFBQUFIO3NEQUFBRzs7VUFBQUMsUUFBQUo7cURBQUFJOzs7VUFBQUMsUUFBQUw7cURBQUFLOztTQUFBQyxRQUFBTjswREFBQU07OztTQUFBQyxRQUFBUDtvREFBQU87Ozs7VUFBQUMsUUFBQVI7cURBQUFROztTQUFBQyxRQUFBVDtvREFBQVM7OztTQUFBQyxRQUFBVjtvREFBQVU7O1FBQUFDLFFBQUFYO3lEQUFBVztHQWFnQztHQWRsQzs7Ozs0Q0EzR0d4UDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJHSCxlQUFLO0lBQUwsT0FBQTtJQUFBeVAsVUFBQTtJQUFBLE9BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtZQUFBRSxVQUFBQyxPQUFBQztJQUFBLEdBQUEsK0JBQUFELE9BQUFDLFFBQUE7O2NBQUFEO2VBQUFDO3VCQUFBQSx1QkFBQUE7TUFZSSxPQXZITjVQLDBCQTJHRTJQLE9BQUFDOzs7O2dCQUFBRDs7Ozs7bUJBQUFDLG9DQUFBQTtjQUFBQyxZQUFBRCxVQUFBRSxXQUFBSDtVQUtpQixPQUFBLHNCQUxqQkcsVUFBQUQ7Ozt1QkFBQUQsa0NBQUFBO2FBQUFHLFlBQUFILFVBQUFJLFdBQUFMO1NBR1ksT0FBQSxzQkFIWkssVUFBQUQ7Ozs7O21CQUFBSCxrQ0FBQUE7Y0FBQUssWUFBQUwsVUFBQU0sV0FBQVA7VUFDWSxPQUFBLHNCQURaTyxVQUFBRDs7O3VCQUFBTCxnQ0FBQUE7YUFBQU8sWUFBQVAsVUFBQVEsV0FBQVQ7U0FXVyxPQUFBLDZCQVhYUyxVQUFBRDs7Ozs7a0JBQUFQLGdDQUFBQTthQUFBUyxZQUFBVCxVQUFBVSxXQUFBWDtTQVVXLE9BQUEsNkJBVlhXLFVBQUFEOzs7c0JBQUFULGdDQUFBQTtZQUFBVyxZQUFBWCxVQUFBWSxXQUFBYjtRQVFXLE9BQUEsc0JBUlhhLFVBQUFEOzs7OztpQkFBQVgscUNBQUFBO1lBQUFhLFlBQUFiLFVBQUFjLFdBQUFmO1FBU2lCLE9BQUEsc0JBVGpCZSxVQUFBRDs7Ozs7O21CQUFBYixnQ0FBQUE7Y0FBQWUsWUFBQWYsVUFBQWdCLFdBQUFqQjtVQU9XLE9BQUEsc0JBUFhpQixVQUFBRDs7O3VCQUFBZixnQ0FBQUE7YUFBQWlCLFlBQUFqQixVQUFBa0IsV0FBQW5CO1NBSVcsT0FBQSxzQkFKWG1CLFVBQUFEOzs7OzttQkFBQWpCLGdDQUFBQTtjQUFBbUIsWUFBQW5CLFVBQUFvQixXQUFBckI7VUFFVyxPQUFBLHNCQUZYcUIsVUFBQUQ7Ozt1QkFBQW5CLHFDQUFBQTthQUFBcUIsWUFBQXJCLFVBQUFzQixXQUFBdkI7U0FNZ0IsT0FBQSw2QkFOaEJ1QixVQUFBRDs7O0lBQUEsT0FBQSxhQUFBdEIsT0FBQUM7R0Fja0M7WUFFOUJ1QjtJQUFnQjs7Ozs7O09BVVA7UUFBTHZFO1FBQUssV0EzSFh2TSxPQTJINkIsNkJBQXZCdU07T0FBSyxPQUFBOztNQUZBLElBQUx3RSxjQUFLLG9DQUFMQTtNQUFLLE9BQUE7Ozs7T0FITSxJQUFMcGEsY0FBSyxXQXRIakJxSixPQXNIWXJKO09BQUssT0FBQTs7TUFGTCxJQUFMcWEsZ0JBQUssV0FwSFpoUixPQW9IT2dSO01BQUssT0FBQTs7NkJBRkx6WSxjQUFLLE9BQUxBO0tBVUk7TUFBTDJDO01BQUssV0E1SFg4RSxPQTRINkIsNkJBQXZCOUU7S0FBSyxPQUFBOzs7S0FGTSxJQUFMK1YsZ0JBQUssV0ExSGpCalIsT0EwSFlpUjtLQUFLLE9BQUE7Ozs7TUFGTixJQUFMQyxnQkFBSyxXQXhIWGxSLE9Bd0hNa1I7TUFBSyxPQUFBOztLQUhBLElBQUxDLGdCQUFLLG9DQUFMQTtLQUFLLE9BQUE7OztLQUZBLElBQUxoWixjQUFLLFdBbkhYNkgsT0FtSE03SDtLQUFLLE9BQUE7O0lBSUs7S0FBTGlaO0tBQUssV0F2SGhCcFIsT0F1SGtDLDZCQUF2Qm9SO0lBQUssT0FBQTtHQU9PO0dBR1I7SUFBYkMsNkJBQXNCOztvREFoQ3JCakM7Ozs7SUFvQ0wsZUFBSztJQUFMLE9BQUE7SUFBQWtDLFVBQUE7SUFBQSxPQUFBO0dBQUEsV0FBQSwrQkFBQUE7WUFBQUMsVUFBQUMsT0FBQUM7SUFBQSxHQUFBLCtCQUFBRCxPQUFBQyxRQUFBOzs7ZUFBQUQsbUNBQUFBO2dCQUFBQzt1QkFBQUEsT0FBQTs7O2VBQUFBO3VCQUFBQSx1QkFBQUE7OztpQkFBQUE7Ozs7Ozs7Ozs7Ozs7S0FFSSxPQXRDSnBDLFVBb0NBbUMsT0FBQUM7O0lBQUEsT0FBQSxhQUFBRCxPQUFBQztHQUlrQztZQUpsQ0MsWUFDRUM7SUFERixTQUNFQTtTQUFBQyxXQUFBRDsrQkFBQUMsdUJBQUE7S0FDRSxJQUFBLFdBdENKbkYsWUFxQ0VrRixXQUNFOzs7O09BREYsT0FBQTs7OztlQUFBQTs7S0FBQSxPQUFBOzRDQURGL1Usa0JBQ0UrVTs7O0tBQUEsT0FBQTs0Q0FERi9VLGtCQUNFK1U7UUFBQUU7SUFDRSxJQUFBLFdBdENKcEYsWUFxQ0VrRixXQUNFOzs7O2tDQURGRTtnQkFBQTtnQkFBQTsrQ0FERmpWLGtCQUNFK1U7OztHQUdnQztZQUpsQ0csWUFBQUM7SUFBQSxJQUFBLFdBQUFMLFlBQUFLLFdBQUE7Ozs7TUFBQSxPQUFBOzZDQUFBbFYsa0JBQUFrVjs7O0dBSWtDO1lBSmxDQyxZQUNFQztJQURGLFVBQ0VBLG1DQUFBQTtXQXJDRjNELFlBcUNFMkQ7R0FHZ0M7WUFFOUJDLGdCQUVBaEs7SUFGZ0IsVUFFaEJBLCtCQUFBQSxHQURTO0lBQ1MsT0E1QmxCNEksZ0JBNEJBNUk7R0FBd0M7WUFJMUNpSyxVQUFVQyxHQUFHemIsR0FBSSxPQUFBLDRCQUFQeWIsV0FBR3piLEdBQXFDO1lBQ2xEMGIsUUFBUUMsSUFBR0MsSUFBSyxPQUFBLHNCQUFSRCxJQUFHQyxJQUFZO1lBRXZCQyxPQUFPdEssR0FBSSxPQUFBLDJCQUFKQSxHQUFpQjtZQUN4QnVLLHFCO1lBRUFDLGdCQUFjMWM7SUFDaEI7S0FBYyxJQUFhdUQsa0JBQVBnQjtLQUFpQixPQUFBOzs7a0JBQWpCQSx1QkFBT2hCO0lBQXlDO0lBQXBFLFdBQUEsMEJBRGdCdkQ7SUFDaEIsT0FBQTtHQUN5QjtZQUd2QjJjLGtCQUFrQnBhO0lBQUksV0FBQSxrQ0FBSkE7SUFBSSxPQUFBO0dBQXNEO1lBTTVFcWEsV0FBWXJZLE9BQU9oQixPQUFRLGVBQWZnQixPQUFPaEIsV0FBd0I7R0FHdkIsSUFBbEJzWiwwQkFEVSxhQUNWQTtZQUdGQyxTQUFRdlksT0FBT2hCO0lBQ2pCO0tBQWdDLFdBQUEsa0NBRGZBO0tBQ2U7O0lBQUEsT0FQOUJxWixXQU1RclksT0FBT2hCO0dBRU87T0FJdEJ3Wix5QkFEQUM7WUFFQUMsaUJBQWlCN0csTUFBSzhHO0lBQVMsT0FQL0JKLFNBT2lCMUcsTUE5RGYwRSxnQkE4RG9Cb0M7R0FBZ0U7R0FDL0UsU0FBUEMsVyxPQURBRjtHQUVNLFNBQU5HLFUsT0FGQUg7R0FHUyxTQUFUSSxhLE9BSEFKO0dBSVEsU0FBUkssWSxPQUpBTDtZQU1BTSxTQUFjQyxJQUFXQyxJQUFTQyxJQUFVQyxJQUFHM2M7SUFDakQ7S0FDTXVDO3FCQUYyQ3ZDOzs7YUFBQUE7MEJBQUFBO3lCQUFBQTtLQUM3QzBILFFBZEZvVSx1QkFlSXZaO0lBVU4sU0FBSXFhLFFBQVFDLE9BQU1sZDtLQUFJLE9BQUEsNEJBQVZrZCxPQXBCVmIsT0FvQmdCcmM7SUFBNEM7O2dCQUExRGlkLFFBWnVCSCxJQUh6Qko7Z0JBZUVPLFFBWjBDRCxJQUY1Q0w7Z0JBY0VNLFFBWmdDRixJQUxsQ1A7SUFrQkssT0E5Q0xYLFdBa0NFOVQsV0FXQWtWLFFBWllKLElBSmRKO0dBaUJrRjtZQUdsRlUsV0FBV25aO0lBQ2I7S0FBSXBCO29CQURTb0I7dUJBQUFBO3NCQUFBQTtJQVFiLE9BM0NFaVksMkJBb0NFclo7R0FPaUM7WUFHbkN3YSxRQUFRcFo7SUFDVjtLQUFJcEI7b0JBRE1vQjs7YUFBQUE7O2VBQUFBOzJCQUFBQTsyQkFBQUE7eUJBQUFBOzthQUFBQTs7ZUFBQUE7MkJBQUFBOzRCQUFBQTswQkFBQUE7SUFnQlYsT0E5REVpWSx3QkErQ0VyWjtHQWU4QjtZQUdoQ3lhLFdBQVdyWjtJQUNiO0tBQUlwQjtxQkFEU29COzs7YUFBQUE7eUJBQUFBO3dCQUFBQTtJQVNiLE9BMUVFaVksMkJBa0VFclo7R0FRaUM7WUFXbkMwYSxjQUFjMVosT0FBTUk7SUFDdEI7S0FBSXBCO29CQURrQm9COzthQUFBQTt5QkFBQUE7d0JBQUFBO3VCQUFBQTtJQVV0QixPQS9GRWlZLFdBcUZjclksT0FDWmhCO0dBU29CO0dBR1gsU0FBWDJhLGUsT0FiQUQ7R0FjYSxTQUFiRSxpQixPQWRBRjtHQWVhLFNBQWJHLGlCLE9BZkFIO1lBZ0JBSSxRQUFRdEQ7SUFBSSxPQXJHWjZCLHdCQXFHK0MseUJBQXZDN0I7R0FBd0Q7WUFDaEV1RCxRQUFRdkQsR0FBSSxPQXRHWjZCLHdCQWxLQTVTLE9Bd1FRK1EsSUFBZ0Q7WUFFeER3RCxvQkFBb0JoYSxPQUFNMk47SUFDNUIsT0F6R0UwSyxXQXdHb0JyWSxPQS9IbEIyWCxnQkErSHdCaEs7R0FDNkI7WUFHdkRzTSxZQUFZN1o7SUFDZDtLQUFJcEI7cUJBRFVvQjs7YUFBQUE7eUJBQUFBO3lCQUFBQTs7Y0FBQUE7OzBCQUFBQTtJQVdkLE9BakhFbVksMEJBdUdFdlo7R0FVOEI7R0F5QnBCLFNBQVprYixnQixPQXhDQUY7WUF5Q0FHLFlBQVl4TTtJQUFJLE9BakpoQjBLLDRCQWlKdUQsa0NBQTNDMUs7R0FBcUU7WUFFakZ5TSxXQUFXcGM7SUFDYjtLQUFJZ0I7c0JBRFNoQjs7O2FBQUFBO3lCQUFBQTt5QkFBQUE7SUFTYixPQTVKRXFhLDJCQW9KRXJaO0dBUWlDO1lBR25DcWIsWUFBWXJjO0lBQ2QsVUFEY0E7O01BQ1ZnQjtxQkFEVWhCOztjQUFBQTswQkFBQUE7MEJBQUFBO3lCQUFBQTs7U0FHRndZLElBSEV4WSxNQUNWZ0IsUUFFYSx5QkFBTHdYO0lBUVosT0ExS0U2Qiw0QkFnS0VyWjtHQVVrQztHQUc3QixJQUFQc2IsT0FkQUQ7WUFnQkFFLGFBQWF2YztJQUNmO0tBQUlnQjttQkFEV2hCO3VCQUFBQTt1QkFBQUE7SUFRZixPQXZMRXFhLDZCQWdMRXJaO0dBT21DO1lBR3JDd2IsS0FBTXhXLE1BQU15VyxRQUFRQyxPQUFPQyxRQUFRQztJQUNyQztnQkFJRSw0QkFMbUNBLFNBWG5DTDtnQkFlQSw0QkFKMkJJLFFBM0IzQk47Z0JBOEJBLDRCQUhvQkssT0F2Q3BCTjtvQkFGQUQsWUF5Q1lNO0tBQ2QsZUEzQ0VQLFVBMENNbFc7SUFDUixPQXpNRWlVLE9BeU1GO0dBT1M7WUFHUDRDLGtCQUFtQjdhLE9BQU84YTtJQUFRLE9Bck1sQ3pDLFdBcU1tQnJZLE9BN1RqQjJSLGNBNlR3Qm1KO0dBQTREO1lBQ3RGQSxNQUFNQSxPQUFRLE9BRGRELDZCQUNNQyxPQUErQztZQUNyREMsaUJBQWlCRDtJQUFRLE9BRnpCRCx3Q0FFaUJDO0dBQTBEO1lBQzNFRSxLQUFLRixPQUFRLE9BSGJELDRCQUdLQyxPQUE4QztZQWlCbkRHLGdCQUFnQkM7O0tBQ0E7TUFBV0o7TUFBTEs7TUFFdEIsdUJBOVhBMVYsT0E4WCtDLDZCQUZ6QjBWO01BRXRCLFdBcFZFeEosY0FrVnlCbUo7S0FFM0IsT0FBQTtJQUErRTtJQUZqRixXQUFBLDBCQURrQkk7SUFDbEIsT0FBQTtHQUcwQjtZQUd4QkUsaUJBQWlCQztJQUNuQixXQURtQkE7OztNQUdWQyxNQUhVRDtNQUNmcmM7UUFFWSxzREFBUHNjOztLQUd5QjtNQUFYSixRQU5KRztNQU1lLG9DQWJoQ0osZ0JBYXFCQztNQUxuQmxjLFFBSzhCOztLQUQ5QjthQUxlcWM7TUFJZ0NFO01BQVhDO01BQ3BDLHdCQVpGUCxnQkFXaURNO01BQy9DOzs7c0NBRG9DQztNQUhwQ3hjLFFBSUE7SUFHSixPQXhPRXFaLGlDQWlPRXJaO0dBT3VDO1lBR3pDeWMsaUJBQWlCemIsT0FBTThKO0lBQ3pCOzttQkFEeUJBOzthQUFBQTs7ZUFBQUE7MkJBQUFBOzJCQUFBQTt5QkFBQUE7O2NBQUFBOzs7ZUFBQUE7eUJBQUFBOzJCQUFBQTtJQUNBLE9BNU92QnVPLFdBMk9pQnJZO0dBQ2tEO0dBR3RELFNBQWIwYixpQixPQUpBRDtHQUttQixTQUFuQkU7SSxPQUxBRjs7R0FNaUIsU0FBakJHO0ksT0FOQUg7O1lBUUFJLFFBQU16ZjtJQUNSO0tBQUk0QztxQkFESTVDOzs7YUFBQUE7eUJBQUFBO3lCQUFBQTtJQVNSLE9BNVBFaWMsc0JBb1BFclo7R0FRNEI7R0FHdEIsU0FBUjhjLFksT0F2SkE5QjtHQXdKWSxTQUFaK0IsZ0IsT0F4SkEvQjtHQXlKWSxTQUFaZ0MsZ0IsT0F6SkFoQztHQTBKUyxTQUFUaUMsYSxPQTFKQWpDO0dBMkphLFNBQWJrQztJLE9BM0pBbEM7O0dBNEphLFNBQWJtQztJLE9BNUpBbkM7O0dBNkpjLFNBQWRvQztJLE9BN0pBcEM7O0dBOEppQixTQUFqQnFDO0ksT0E5SkFyQzs7R0ErSmUsU0FBZnNDO0ksT0EvSkF0Qzs7R0FnS2dCLFNBQWhCdUM7SSxPQWhLQXZDOztZQWtLQXdDLFFBQVMzRCxLQUFLQyxRQUFRRixNQUFNRztJQUM5QjtLQUFJcGI7Z0JBSUYsV0FKRUEsR0FEMEJvYixPQUY1QndEO2dCQU1BLFdBSEU1ZSxHQURvQmliLE1BSHRCMEQ7Z0JBTUEsV0FGRTNlLEdBRFltYixRQUpkdUQ7S0FNRixXQUFFLFdBREUxZSxHQURPa2IsS0FMVHVEO0lBT0YsT0ExUkVuRSxPQTBSRjtHQU1TO1lBR1B3RSxnQkFBZ0I5TztJQUFJLE9BWHBCNk8sWUFXZ0I3TyxRQUFBQSxRQUFBQSxRQUFBQTtHQUFnRDtHQUNuRCxTQUFiK087SSxPQTlLQTFDOztHQStLZ0IsU0FBaEIyQztJLE9BL0tBM0M7O0dBZ0xjLFNBQWQ0QztJLE9BaExBNUM7O0dBaUxlLFNBQWY2QztJLE9BakxBN0M7O1lBbUxBOEMsT0FBUWpFLEtBQUtDLFFBQVFGLE1BQU1HO0lBQzdCO0tBQUlwYjtnQkFJRixXQUpFQSxHQUR5Qm9iLE9BRjNCOEQ7Z0JBTUEsV0FIRWxmLEdBRG1CaWIsTUFIckJnRTtnQkFNQSxXQUZFamYsR0FEV21iLFFBSmI2RDtLQU1GLFdBQUUsV0FERWhmLEdBRE1rYixLQUxSNkQ7SUFPRixPQTNTRXpFLE9BMlNGO0dBTVM7WUFHUDhFLGVBQWVwUDtJQUFJLE9BWG5CbVAsV0FXZW5QLFFBQUFBLFFBQUFBLFFBQUFBO0dBQStDO1lBa0I5RHFQLFNBQVNqWixJQUFHRDtJQUNkLDBCQURXQyxhQUVBLE9BRkdEOzhCQUFBQSxhQUdILE9BSEFDO0lBSUcsV0FBQSw2QkFKQUQ7SUFJQSxPQUFBLHFCQUpIQztHQUlVO1lBSW5Ca1osU0FBU2xaLElBQUdELElBQUd5RSxJQUFLLE9BUnBCeVUsU0FBQUEsU0FRU2paLElBQUdELEtBQUd5RSxJQUFpQztZQUVoRDJVLGFBQWNwQixPQUFPaEIsT0FBUUo7SUFDL0I7S0FBSXlDO29CQUQyQnpDOzthQUFBQTs7ZUFBQUE7MkJBQUFBOzJCQUFBQTt5QkFBQUE7O2FBQUFBOztlQUFBQTs0QkFBQUE7NEJBQUFBOzBCQUFBQTtLQWdCM0IwQyxVQW5XRnhGLFVBbVZja0UsT0FuWFp2RjtLQW9ZQThHLFVBcFdGekYsVUFtVnFCa0QsT0ExYm5Cbko7SUE0Y0osT0FwQkVzTCxTQWtCRUcsU0FmQUQsU0FnQkFFO0dBQ3NCO1lBR3hCQyxjQUFlQztJQUNqQixHQURpQkE7O2FBQUFBOzs7OztNQUNidmQ7O1NBQUFBO0lBUUosZ0JBQUs4YixPQUFPaEIsT0FBT0o7S0FDakIsT0FqV0FyQyxXQXdWRXJZLE9BdEJGa2QsYUE4QkdwQixPQUFPaEIsT0FBT0osV0FDOEM7R0FBQTtZQUcvRDhDLFdBQVkxQixPQUFPaEIsT0FBT0o7SUFDNUIsT0FkRTRDLHVCQWFZeEIsT0FBT2hCLE9BQU9KO0dBQ3VCO1lBR2pEK0MsY0FBZTNCLE9BQU9oQixPQUFPSjtJQUMvQixPQWxCRTRDLHVCQWlCZXhCLE9BQU9oQixPQUFPSjtHQUN1QjtZQUdwRGdELFlBQWE1QixPQUFPaEIsT0FBT0o7SUFDN0IsT0F0QkU0Qyx1QkFxQmF4QixPQUFPaEIsT0FBT0o7R0FDdUI7WUFHbERpRCxhQUFjN0IsT0FBT2hCLE9BQU9KO0lBQzlCLE9BMUJFNEMsdUJBeUJjeEIsT0FBT2hCLE9BQU9KO0dBQ3VCO1lBR25Ea0QsT0FBUTlCLE9BQU9oQixPQUFPSjtJQUFXLE9BN0JqQzRDLG9CQTZCUXhCLE9BQU9oQixPQUFPSjtHQUE4RDtZQUVwRm1ELFFBQVMvQixPQUFPaEIsT0FBT0o7SUFDekIsT0F2WEVyQyx3QkFrVUE2RSxhQW9EU3BCLE9BQU9oQixPQUFPSjtHQUNnRDtZQUd2RW9ELGdCQUFnQjFkO0lBQ2xCO0tBQUlwQjtvQkFEY29CO3VCQUFBQTt1QkFBQUE7SUFRbEIsT0FsWUVpWSxnQ0EyWEVyWjtHQU9zQztHQUd2QixTQUFqQitlO0ksT0E3UkEvRDs7WUE4UkFnRSxjQUFjclE7SUFBSSxPQWhZbEI0Syw0QkF2REVoQyxnQkF1Ylk1STtHQUFpRTtZQXFCL0VzUSxnQkFBaUJ2RCxPQUFPSSxPQUFPb0Q7SUFDakM7S0FFcUI7Ozs7OztJQU1TO0lBTjFCO0tBQUEsT0FBQSwwQkFINkJBO0tBRTNCQyxTQUNGO0lBU0YsR0FaaUJ6RDs7YUFBQUE7Ozs7Ozs7Ozs7O01BWWJ5Qzs7U0FBQUE7SUFXUTtLQUFSRSxVQW5jSnpGLFVBNGF3QmtELE9BbmhCdEJuSjtLQW9oQkEzUyxRQTVGRmllLFNBNkZJa0IsUUFVQWhCLFNBV0FFO0lBR04sT0FyYkVoRixnQ0E0WkVyWjtHQXlCc0M7WUFZeENvZjtJQUErQjs7Ozs7O0dBTVY7WUFxQnJCQztJQUNJQyxpQkFHREMsYUFDQUM7SUFHTCxHQVBNRixTQUFTRyxNQUFUSCxRQUFBSSxTQUFTRCxjQUFUQztJQU9OO1NBTmtCQyxpQkFBWm5ELFlBQVltRDs7U0FBWm5EO0lBTU4sYUFMYW9ELGlCQUFQQyxPQUFPRCxnQkFBUEM7SUFLTjtLQUFJQztvQkFORXREO3VCQUFBQTtxQkFBQUE7S0FhRnVEO3FCQVpFRjs7dUJBQUFBO0lBa0JOLEdBakJLTjs7TUFvQkl6VSxJQXBCSnlVO01BaUJEUztRQWpmRjNHLDRCQWljQStGLDZCQW1ET3RVOztTQUhMa1YsZ0JBdGVGdkc7SUEyZUYsR0FyQksrRjs7TUF3Qkl6TSxNQXhCSnlNOztzQkF3Qkl6TTs7Y0FBQUE7MEJBQUFBOzBCQUFBQTt5QkFBQUE7TUFITGtOLG9CQXRmRjVHOztTQXNmRTRHLG9CQTNlRnhHOzs7O1FBWEFKLDBCQTJlRTBHO1lBTUFDLG1CQUtBQztnQkF0ZkY1RywrQkFvZUV5RztZQVBFSjtJQWdDSixPQTNnQkF6RyxXQTREQXVCO0dBb2RDO1lBR0QwRixVQUFXQyxPQUFRYixXQUErQmM7SUFDcEQsR0FEcUJkLFNBQVFHLE1BQVJILFFBQUFlLFFBQVFaLGNBQVJZO0lBQ3JCLGFBRCtDVixpQkFBVFcsU0FBU1gsZ0JBQVRXO0lBQ3RDLGNBQzJCOUk7S0FBSyxPQXZnQjlCNkIsc0JBdWdCK0QseUJBQXRDN0I7SUFBdUQ7SUFBaEY7S0FBQSxPQUFBLDRCQUZXMkk7S0FFWCxPQUFBO0tBREVJLFVBQ0Y7S0FLSUMsVUFuaUJGN0gsZ0JBNGhCaUIwSDtLQVFhLHVCQS9xQmhDNVosT0F1cUJvQzZaLHlCQU9oQ0U7S0FDNEIsV0EvcUJoQy9aLE9BdXFCa0QyWjtLQU1oREssT0EzZ0JGcEgsdUJBNmdCZ0M7SUFFM0IsT0E3aEJMSixXQXloQkV3SCxVQUxBRjtHQVNrQjtZQUdwQkcsV0FBVzVWO0lBQ0QsSUFBUjlLLFFBbEZGb2YsNkJBaUZXdFU7SUFFYixPQXBoQkV1TywyQkFtaEJFclo7R0FDaUM7WUFHbkMyZ0IsT0FBUTNnQjtJQUNWO0tBQUk0Z0I7b0JBRE01Z0I7O2FBQUFBO3lCQUFBQTt5QkFBQUE7dUJBQUFBO0lBVVYsT0FqaUJFcVosdUJBd2hCRXVIO0dBUzZCO1lBRy9CQztJQUFXaE87SUFBTWlPO0lBQVVDO0lBQU92RTtJQUFXd0U7SUFBV0M7SUFBWUM7O0lBRXRFLElBQUl2aUI7SUFDSixTQUFJd2lCLGVBQWVuaUI7S0FBSSxlQXpzQnJCeUgsT0F5c0J1QyxnQ0FBdEJ6SDtLQUFJLE9BQUE7SUFBNkM7SUFFbEU7S0FERThnQjtPQUNGO1NBSEVuaEI7U0FGZ0M2ZDtrQkFLZDRFO1VBQ2xCO1dBQUlwaEI7MkJBRGNvaEI7O21CQUFBQTsrQkFBQUE7Z0NBQUFBOzhCQUFBQTtVQVVsQixPQW5qQkYvSCxvQ0EwaUJNclo7U0FTMEM7S0FFOUNxaEI7T0FDRjtTQWhCRTFpQjtTQUYyQ3FpQjtrQkFrQnpCNWpCO1VBQ2xCO1dBQUk0QzswQkFEYzVDOzttQkFBQUE7K0JBQUFBOytCQUFBQTs0QkFBQUE7VUFVbEIsT0Foa0JGaWMsb0NBdWpCTXJaO1NBUzBDO2dCQXhCOUM4ZixpQkFhQXVCOzs7UUFrQkY7VUFqQ0UxaUI7VUFGa0V1aUI7bUJBbUMxQ2xoQjtXQUN4QixPQXhrQkZxWiwwQ0F1a0IwQnJaO1VBQzRCOzs7O1FBSHREO1VBL0JFckI7VUFGc0RzaUI7bUJBaUNuQ3pKO1dBQ25CLE9BdGtCRjZCO21EQXNrQnVELHlCQURsQzdCO1VBQ21EOzs7O1FBRnhFO1VBOUJFN1k7VUFGeUJvaUI7bUJBZ0NYL2hCO1dBQUssT0Fwa0JyQnFhLGdDQXVpQkU4SCxlQTZCY25pQjtVQUFrRTs7OztZQXBrQmxGcWEsbUNBdWlCRThILGVBSGVMOztLQThCbkIsZUFsa0JFekgsK0JBb2lCV3hHO0lBOEJiLE9BaGxCRW9HLE9BZ2xCRjtHQVdTO1lBaUJQcUksWUFBWXRpQjtJQUNkO0tBQUlnQjtvQkFEVWhCO3VCQUFBQTt1QkFBQUE7SUFFZCxPQWhtQkVxYSw0QkErbEJFclo7R0FDa0M7Ozs7OztjQU85QnZELEVBQUU4a0I7TUFDSjtPQUFJdmlCLElBbm5CUm1hLGdCQWtuQlFvSTtPQUVBQyxLQXBuQlJySSxnQkFLQUMsa0JBOG1CUXBhO01BRUoscUJBRklBO01BRUosT0FBQSxxQkFESXdpQjtLQUVZO0tBRVcsV0EzZ0IvQjdHO0tBcWdCTWxlLEVBdm5CTnFjLFFBcWhCQW9IO0tBeUcwRCxXQTFQMUR0QjtLQW1QTW5pQixFQXZuQk5xYyxRQTRlQXVHO0tBMklNNWlCLEVBamFOcWY7S0FnYmdCLFdBQUE7S0FmVnJmO09BamFOcWY7aUNBK2FnQjtLQWRWcmYsRUFqbUJOOGM7S0FtbkJFOzs7U0FBQTs7Ozs7S0FBQSxPQUFBO0lBV2M7SUFYZDtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWVBLFNBQUk1WCxFQUFFOGYsR0FBSSxPQUFBLDZCQUFKQSxHQUFxQjtLQUMzQixTQUFJN2lCLEVBQUVJLEdBQUksc0JBQUpBLEdBQVc7S0FDakIsU0FBSXZDLEVBQUU4a0I7TUFBb0IsV0FycEI1QnBJLGdCQXFwQlFvSTtNQUFvQixPQUFBO0tBQW1CO0tBVTdCO01BQUE7Ozs4QkFDMkM7cUJBYnZENWY7TUFVaUIsT0FUakIvQztxQkFEQStDO01BU2lCLE9BUmpCL0M7cUJBREErQztNQVFnQixPQVBoQi9DO0tBQ0FuQztPQTFhTjJmOzJDQXdhTXphO0tBaUJKOzs7U0FBQTs7Ozs7O0tBQUE7S0FJMEQ7TUFBQSxPQXBCdEQvQztxQkFEQStDO01BcUJxQyxPQXBCckMvQztLQUNBbkMsRUExYU4yZiw0Q0F3YU16YTtLQXNCSjs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFBbUY7SUFMbkY7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7O0tBS0E7O1FBQUE7Ozs7Ozs7Ozs7OztVQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMTBCTnNFO09BQUFGO09BQUFKO09BQUFTOzs7U0FlTU07U0FBQTRCO1NBQUFlO1NBQUFLO1NBQUFLO1NBQUFEO1NBQUtWO1NBQUxTO1NBQUFPO1NBQUFDO1NBQUFDO1NBUUl2TDs7U0FJSmdNO1NBQUE0QjtTQUFBZTtTQUFBQztTQUFBRztTQUFBRDtTQUFLSjtTQUFMRztTQUFBTTtTQUFBQztTQUFBQztTQVFJSztRQUdOb0I7UUFBQUY7UUFBQWY7UUFBQTBCO1FBQUFXO1FBQUFVO1FBQUFOO1FBQUtoQjtRQUFMZTtRQUFBUTtRQUFBQztRQUFBQztRQWNFYTs7UUF1REpvQztRQUFBRjtRQUFBM0I7UUFBQTRDO1FBZ0NJZ0M7UUFoQkFQO1dBb0JKa0IsYUFBQUYsYUFBQUosYUFBQUgsV0FNSVc7T0E1SkZ6YztPQUFBRTtPQUFBNkg7T0FBQVk7T0FBQUk7T0FBQU87T0FBQUg7T0FBS1Q7T0FBTFE7T0FBQUs7T0FBQUM7T0F5TEE2VDtPQUtBRTtPQUNBRDtPQU9BUTtPQUpBSDtPQUNBQztPQUZBRjtPQUdBRztPQWpDQWpCO09BQUFBO09BRUFHO09BQ0FDO09BRUFDO09BS0FDO09BeUNBbUI7T0FXQUM7T0FtQkFDO09BaUNBRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQTBDQUc7T0FDQUM7T0FFQUM7T0FZQUM7T0FnQkFFO09BV0FDO09BYkFGO09Bd0JBTztPQUNBQztPQUNBQztPQXlCQUs7T0F4QkFKO09BdUNBVTtPQUNBQztPQUNBQztPQXJJQTNCO09BdUlBNEI7T0FZQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FhQUU7T0FYQUQ7T0FZQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0FhQUU7T0FYQUQ7T0F5RUFVO09BSUFDO09BSUFDO09BSUFDO09BSUFDO09Ba0JBSTtPQVpBRjtPQVdBQztPQWZBRjtPQXFDQUk7T0FpRUFJO09BeUNBYTtPQWFBUTtPQUtBQztPQWFBRTtPQTBEQVM7OztTQWp4QkFwbEI7U0FBQUU7U0FBQTZIO1NBQUFZO1NBQUFJO1NBQUFPO1NBQUFIO1NBQUtUO1NBQUxRO1NBQUFLO1NBQUFDOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O1lDMkNBZ2MsUUFBUUMsR0FBSSxPQUFBLHlCQUFKQSxHQUFxQztZQUc3Q0MsWUFBWUQsR0FBR0UsUUFBUyxRQUFaRixhQUFHRSxvQkFBbUQ7R0FHM0QsSUFBUEMsZUFDQUMseUJBSUFDO1lBT0FDLFdBQVdDLEdBQUksV0FQZkYsZ0JBT1dFLEdBQTJEO09BQ3RFQyx5QkFDQUM7WUFFQUMsaUJBQWlCQyxHQUFFQyxNQUFLQztJQUNSLElBQWROLElBRGlCSztpQkFFT0UsR0FBSyxPQUFFLFdBRmhCSCxHQUFFQyxLQUFLQyxRQUVFQyxRQUFtQztJQUF4QyxPQUFBLDRCQURuQlAsSUFEc0JNO0dBRXNDO1lBRTlERSxZQUFZSixHQUFFQyxNQUFPLE9BSnJCRixpQkFJWUMsR0FBRUMsU0FBZ0M7WUFFOUNJLFlBQVlMLEdBQUVNO0lBQ2hCLElBQUlWLElBRFlVLGdCQUVaQyxJQVpGWixXQVdFQyxJQUVKLE1BRklBLFdBQ0k7O1NBQ1JPOztNQURJSSxFQUNKSixLQUNnQixXQUpGSCw0QkFBRU0sS0FHaEJILE9BQUFBO01BQ0UsVUFERkE7aUJBQUFBO1VBQUFBOzs7SUFHQSxPQUpJSTtHQUlIO1lBRUNDLGdCQUFnQlIsR0FBRUMsTUFBS0M7SUFBc0IsVUFkN0NILGlCQWNnQkMsR0FBRUMsTUFBS0M7SUFBc0IsT0FBQTtHQUErQjtZQUU1RU8sV0FBV1QsR0FBRUMsTUFBTyxPQUZwQk8sZ0JBRVdSLEdBQUVDLFNBQStCO1lBRTVDUyxXQUFXVixHQUFFVztJQUNmLE9BYkVOLFlBWVdMLEdBQ0MsNkJBRENXO0dBQ2dCO1lBRTdCQyxhQUFhWixHQUFFWDtJQUNqQixHQURpQkEsS0FyQ2ZHLFVBcUNlSCxNQXBDZkksYUFzQ0csV0FBSyxXQUZLTyxHQUFFWDtJQUN1QjtHQUN6QjtZQUVid0IsYUFBYWI7SSxtQkF6Q2JSO1FBMENLSDtJQUFLLE9BQUEsV0FER1csR0FDUlg7O1lBR0x5QixrQkFBZ0IsT0E1Q2hCckIsWUE0Q3lCO1lBQ3pCc0Isa0JBQWUsU0FBRTs7Ozs7aUJBR2JDLFFBQ1csT0FEWEEsZ0JBQ1k7O0lBRlQ7Ozs7OztZQVFQQyxhQUFhQyxHQUFFN0I7SUFDakIsVUFBQSwwQkEvREVELFFBOERhOEI7SUFDZjs7WUFEZUEsTUF4RGIxQjtrQkF3RGEwQixFQUVELG9CQUZHN0IsUUF2RGZJOzs7SUF5REM7R0FBd0M7WUFJekMwQixpQkFBZSxXQXpEZnpCLGlCQXlENEQ7WUFHNUQwQixnQkFBZ0IvQixHQUFFVztJQUNwQixPQUFBO2FBRGtCWDthQUNROzJCQUFrQkEsR0FBSyxPQUFFLFdBRC9CVyxHQUMrQixrQkFBUFgsSUFBdUI7R0FBRTtZQUVuRWdDLFVBQVVILEdBQUVaLEtBQU0sT0FBUlksUUFwRVYxQixRQW9FWWMsS0FBb0M7WUFDaERnQixTQUFTSixHQUFFSyxHQUFFakI7SUFBTSxPQUFWWSxFQUEyQixvQkFBekJLLFVBQUZMLEdBQUlaO0dBQTZEO1lBRTFFa0IsUUFBUW5DLEdBQ1YsT0FEVUEsS0F2RVJHLGVBd0VXO1lBRVhpQyxTQUFTcEM7SUFDWCxPQUFBLGtCQUFhLCtCQURGQTtHQUNnRTtZQVl2RXFDLGE7WUFDQUMsYTtHQUhPO0lBQUEsVUFFUEQsU0FDQUM7SUFJQUM7SUFDQUM7SUFIVSxhQUVWRCxXQUNBQztJQUlBQztJQUNBQztJQUhRLFdBRVJELFdBQ0FDO1lBSUFDLGU7WUFDQUMsZTtHQUhTLGdCQUVURCxXQUNBQzs7O0lBSVUsU0FBVlAsYSxPQXJGRnJCOztJQXNGWSxTQUFWc0IsYSxPQXhGRnZCO0lBcUZrQixXQUVoQnNCLFNBQ0FDOzs7O0lBSVUsU0FBVkQsYSxPQTlFRmhCOztJQStFWSxTQUFWaUIsYSxPQWpGRmxCO0lBOEVpQixXQUVmaUIsU0FDQUM7Ozs7SUFJVSxTQUFWRCxhLE9BNUVGYjs7SUE2RVksU0FBVmMsYSxPQWpGRmY7SUE4RW1CLFdBRWpCYyxTQUNBQzs7Ozs7T0FsR0Z2QjtPQUVBQztPQVVBSTtPQUVBQztPQWxCQVg7T0FjQVM7T0FPQUk7T0FJQUM7T0FLQUU7T0FEQUQ7T0FpQkFLO09BTkFGO09BU0FHO09BSUFFO09BREFEO09BeERBMUI7T0FDQUU7T0FDQUM7T0FUQUo7T0FMQUY7T0FOQUo7T0FHQUU7O09BMEVBa0M7T0FHQUM7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lFL0hBYSxhQUFhQyxPQUFRLE9BQVJBLGlCQUE0QztZQUN6REMsbUJBQW1CQyxRQUFPRixPQUFRLE9BQVJBLGNBQVBFLFFBQXlEO1lBQzVFQyx1QkFBdUJELFFBQU9GLE9BQVEsT0FBUkEsa0JBQVBFO0dBQTZEO1lBQ3BGRSx5QkFBeUJKLE9BQVEsT0FBUkEsc0JBQWlEO1lBQzFFSyxVQUFVTDtJQUFRLE9BQUEsd0JBQVJBO0dBQTBDO1lBQ3BETSxnQkFBZ0JKLFFBQU9GO0lBQVEsT0FBQSx3QkFBUkEsY0FBUEU7R0FBOEQ7WUFDOUVLLG9CQUFvQkwsUUFBT0Y7SUFBUSxPQUFBLHdCQUFSQSxrQkFBUEU7R0FBa0U7WUFDdEZNLHNCQUFzQlI7SUFBUSxPQUFBLHdCQUFSQTtHQUFzRDs7Ozs7YUFJMUVTLE1BQU1DO0tBQWdCLFVBUHhCTCxVQU9RSztLQUFnQixPQUFBO0lBQWE7SUFBbkNEO0lBRUo7OztRQUFBOzs7OztJQUFBO0lBRklBO0lBSUo7OztRQUFBOzs7OztJQUFBO0lBSklBO0lBTUo7OztRQUFBOzs7OztJQUFBO0lBTklBO0lBUUo7OztRQUFBOzs7OztJQUFBO0lBUklBO0lBVUo7OztRQUFBOzs7OztJQUFBO0lBVklBO0lBWUo7OztRQUFBOzs7OztJQUFBO0lBWklBO0lBY0o7OztRQUFBOzs7OztJQUFBLE9BQUE7R0FBeUI7R0FaekI7SUFBQTs7T0FBQTs7Ozs7Ozs7Ozs7U0FBQTs7Ozs7OztJQUVBOztPQUFBOzs7Ozs7Ozs7OztTQUFBOzs7Ozs7O0lBRUE7O09BQUE7Ozs7Ozs7Ozs7O1NBQUE7Ozs7Ozs7SUFFQTs7T0FBQTs7Ozs7Ozs7Ozs7U0FBQTs7Ozs7OztJQUVBOztPQUFBOzs7Ozs7Ozs7OztTQUFBOzs7Ozs7O0lBRUE7O09BQUE7Ozs7Ozs7Ozs7O1NBQUE7Ozs7Ozs7SUFFQTs7T0FBQTs7Ozs7Ozs7Ozs7U0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F6QkVWO09BQ0FFO09BQ0FFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NKZ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQWhERzs7Ozs7Ozs7O0lBQUFBLG9DQUFBQTtJQU1pRDs7R0FLbkQ7SUFBQTs7SUFDQTs7SUFDQTs7SUFDQTs7WUFFRUMsb0JBQW9CQyxNQUFNQzthQUNwQkM7S0FBZ0I7O1NBQ2ZDO0tBQU0sT0FBQSwwQkFBTkEsSUFEREQ7SUFHTTtJQUVYLEdBTEtBLGNBRGNGLE9BTUssT0FOTEE7SUFNOEIsY0FOOUJBLFVBTXNDLFdBTmhDQztJQU1TO0dBQTBDO0dBT3pELElBQXBCRzs7SUFNZ0IsYUFBdUNQLEdBQUssT0FBQSxXQUFMQSxNQUFTO0lBQWQsT0FBQSx5QkFuQ2xEQztHQW1DaUU7R0FEekI7SUFBQSxNQUFBO0lBQUgsTUFBQTtHQUZ2Qzs7SUFVa0IsT0FBQTs4QkFiaEJNO0dBYTBFO0dBRGxDO0lBQUEsTUFBQTtJQUFILE1BQUE7R0FGdkM7O0lBVWtCLE9BQUE7OEJBcEJoQkE7R0FvQm9FO0dBRDVCO0lBQUEsTUFBQTtJQUFILE1BQUE7R0FGdkM7T0FPSUM7WUFFQUMsT0FBT0MsV0FBVUM7SUFDbkIsSUFBSUMsTUEzQkpMO0lBQUFBLDJCQTBCU0c7SUFHVCxzQkFIbUJDO0lBMUJuQkosdUJBMkJJSzs7R0FHb0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTNDeEJWOztXQXVDRU8sUUFGQUQ7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN2Q0FLO1FBQXdCdkIsa0JBQVR3QjtJQUFvQixPQUFBLGtDQUFwQkEsU0FBU3hCOztHQVJmO0lBQUEsWUFRVHVCO0lBeUJGRTs0QkFBK0I7WUFNL0JDO0lBRVM7S0FGeUNDO0tBQVRDO0tBQVJDO0tBQXZCQztLQUFhQztLQUFQQztLQUVkQyxTQUFPLHNCQUFLLFdBRkpILE1BQU1FO0tBR2RFLFdBQVMsc0JBQUssV0FIaUJMLFFBQWpCRztLQUlkRyxZQUFVLHNCQUo2QlA7Z0NBTnpDSDs7O1NBV0VXLGlCQVhGWDs7O1VBV0VXLGlCQVhGWDs7O1NBV0VXLGlEQVhGWDs7SUFZa0IsSUFBaEJZLFlBTnFCTixVQUFQQztJQU9sQixPQUZJSSxlQUhBSCxRQUNBQyxVQUNBQyxXQUpnRFIsSUFNaERVOztZQU1GQyxRQUFXekIsTUFBUzBCO0ksR0FDaEIsa0NBRE8xQixTQUFTMEI7O1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0tBUVI7YUFBcUIsV0FSYkEsVUFBVDFCLFNBQVMwQjs7Ozs7Ozs7OztJQUdwQjtJQUFBLE9BSG9CQTs7Ozs7Ozs7OztPQUFwQkQ7T0FaQVo7OztTQXlCOEI7VUFDakJjO1VBQUFDO1VBQUFDLCtCQUFBRDtVQUFBRSxpQ0FBQUg7d0JBQUFFLGNBQUFDO1FBQW1DO1FBRGhEO1NBN0IyRUMscUJBNkIzRTtTQTdCK0NiLFdBaUNsQztpQkFqQ2NELEtBbUNwQkUsT0FBTWE7U0FDRCxJQUFSQyxRQUFRLGlCQURMZCxPQUFNYTtrQkExRVduQyxTQTZFWSxPQURwQyxpQkFGT3NCLE9BQ0hjLE9BRFNELFNBR3FEOztVQUQ5REU7O2NBM0VpQyxzQkFEYnJDO1NBK0V4QixXQUxPc0IsT0FFSGUsY0FEQUQ7UUFJc0I7aUJBeENnQ2pCLE9BMkNqREcsY0FBdUNhO2FBQVBDLGtCQUFkQyx5QkFBWEM7U0FDaEIsaUJBRGdCQSxXQUFQaEIsT0FBZ0NjLE9BQU9EO1NBRWhELFdBRlNiLE9BQWtCZSxjQUFjRDs7aUJBM0N5QmxCLGVBZ0R2QmlCO2FBQVBDLGtCQXpGYkMseUJBeUZaQztzREF6RllEO1NBMEZ2QixPQUFBLGlCQURXQyxXQUF5QkYsT0FBT0Q7O2lCQUt6Q0ksT0FBT2pCO1NBQ1QsSUF0RFdrQjtTQUNYO2lCQW9EU2xCO2lCQXJEc0NEO2lCQUFwQ21CO2lCQUFnQnBCO2lCQUErQkQ7aUJBQVFEO2lCQUFTZ0I7UUE0RGpFO1FBR1Msc0JBL0Q0QmI7bUJBcUQ3Q2tCOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDckZEQSxjQUVELDBCQUMwRDtZQUN6REUsSUFDRUMsSUFDRUMsSUFDRUMsSUFGSkYsT0FDRUMsSUFDRUMsS0FFRCxTQUNxQztZQUMxQ0MsSUFDRUMsS0FDRUM7SUFFRCxVQUhERCxRQUNFQztzQjtJQUVELE9BQUE7R0FBc0U7WUFDekVDLFNBQ0VDLEtBQ0VDLEtBREZELFdBQ0VDLE1BRUQsU0FDdUI7Ozs7O2dDQXJCMUJYLFFBSUFFLEtBT0FJLEtBS0FHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDbEJDRyxRQUFRQyxHQUFJLE9BQUpBLEVBQXNCO1lBQzlCQyxRQUFRRCxHQUFJLE9BQUpBLEVBQXNCO0dBSjlCLHNCQUdBRCxTQUNBRTtZQWdCQUMsVUFBUUYsR0FBSSxPQUFKQSxFQUFLO1lBQ2JHLFVBQVFILEdBQUksT0FBSkEsRUFBSztZQUNiYixjQUFnQixPQUFBLHVCQUFnQjtHQUdsQyxJQURFaUIsNEJBSUFDO1lBRUFDLGNBQWNDLEdBQUVDO0lBQ2xCLFVBQUEsb0JBRGdCRDtJQUNoQixVQUFBO0lBQ29CLFVBRkpBO0lBRUksT0FBQSx5QkFGRkM7R0FFMEM7WUFHMURDLGNBQ0VGLEdBQUVDLE1BQUt0RTtJQUNLLFVBRFpxRTtJQUNDLEdBQUE7S0FEREEsc0JBRXFDO0lBQ3ZDLE9BSEVBLG9CQUFFQyxRQUFLdEU7R0FHd0Q7R0F0QmpFOzs7T0FHQWdFO09BQ0FDO09BQ0FoQjtPQU1Ba0I7T0FFQUM7T0FOQUY7T0FXQUs7WUFpQkFDLGlCQUF3QyxxQkFBQSxhQUFjO1lBQ3REQyxpQkFBd0MscUJBQUEsYUFBYztHQVZyQyx3QkFTakJELFdBQ0FDOzBCOzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjsyQjs7Ozs7Ozs7Ozs7R0FpQ0ksU0FERS9EO0ksc0IsZ0I7STtHO0dBV0osU0FaRWdFLFNBWUdMLEdBQVUsT0FYWDNELEVBV0MyRCxPQUFxRTtHQW1EdEM7dURBL0RsQ0s7SUErREZMLElBQW9DO1lBQ3BDbEIsSUFBS3hCLElBQUdrQixTQUFRQztJQUFRLE9BQXdDLGtDQURoRXVCLEdBQ1F4QixhQUFIbEIsSUFBV21CO0dBQStEO1lBRS9FUyxJQUNHNUIsSUFDRGtCO0lBQ0UsWUFBQSxrQ0FOSndCLEdBS0V4Qjs7NkJBS2FDLG9CQUFONkI7S0FDRCxvQ0FQTGhELElBTU1nRDtLQUVULE9BRmU3Qjs7d0JBRmlDLFdBQW9CO0lBQXREO0tBQVY4QixVQUFVLHdDQUpYakQ7d0RBSUNpRDs7Ozs7OztHQUlDO1lBR0xsQixTQUFPYjtJQUFVLE9BQUEsa0NBZmpCd0IsR0FlT3hCO0dBQW9EO0dBbEIzQyx1QkFHaEJ3QixHQUNBbEIsS0FFQUksS0FZQUc7WUFHRm1CLFNBRUdDLE1BQ0NDO0ksR0FBQUE7U0FBa0NDLE1BQWxDRCxRQUFBbkQsVUFBa0NvRDs7U0FBbENwRCwrQkFBNkMsT0FBRTs7U0FDTnFELGdCQUF6Q3BELFNBQXlDb0Q7O1NBQXpDcEQsa0JBQTZDcUQsR0FBRUMsS0FBTyxXQUFURCxHQUFFQyxLQUFhO29CQUU1RHJEO0tBR3lCOzs7O2dCQVAxQmdEO0tBYUY7O1FBQUE7O1dBQ0Q7WUFBbUIsUUFBQSxXQVZmaEQ7WUFVSXNEO1lBQUpDO1dBQ0osZ0NBRFFELFVBQUpDO1dBQ0osT0FEUUQ7VUFFQTs7S0FFUDs7UUFBQTt5QkFBMkJBO1dBSXRCO1dBRWE7WUFBYkUsYUFBYSxnQ0FOU0Y7WUFPRixRQUFBLFdBdkJ0QnZELFFBc0JFeUQsWUFOc0JGO1lBT2RHO1lBQVJ6QztXQUNKLDRCQVIwQnNDO1dBUzFCLGdDQUZZRyxZQUFSekM7V0FFSixPQUZZeUM7VUFHSDs7S0FFVjs7UUFBQTttQkFBc0JIO1dBQ04sSUFBYkUsYUFBYSxnQ0FETUY7V0FFdkIsV0EvQkl4RCxTQThCQTBELFlBRG1CRjtXQUV2QixPQUFBLDRCQUZ1QkE7VUFHSzs7S0FKOUIsT0FBQSx5QkFLNEI7O0dBdEdoQiwrQkFrRVZQOzs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O0lDbERGVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXhGRWxELGVBRUVDOztLQUErQmtELFdBQS9CbEQ7S0FxQlltRCxRQXJCWm5EO0tBRCtCb0Q7S0FxQm5CQztPQWJWLGtDQWFVQSxPQUNBRjtLQVhaO2FBVVlFO3NCQVJINUY7bUNBRUEsT0FERixXQWJ3QnlGLFVBWXRCekYsT0FFYztjQURXLFdBQUEsV0FkSDJGLFVBYXRCM0Y7Y0FDMEQsT0FBQTthQUMzQztJQUcxQixJQUFBO3lCOzs7Ozs4REFJYzBGOzs7eUI7Ozs7OzhEQURBRTs7Ozs7OztJQUhkO0lBQUEsT0FqQkVyRDs7WUFvREpVLE9BQU9xQixNQUFLdEU7SUFDZCxjQURTc0UsTUFFMkQsd0JBRnREdEU7R0FFeUU7WUFHckY2RixhQUFhdkIsTUFBS3RFO0lBQ3BCLGNBRGVzRSxNQUljLHFDQUpUdEU7R0FLakI7WUFHRDhGLFNBQVN4QixNQUFLdEUsT0FBUSxjQUFic0UsTUFBS3RFLE9BQWlFO1lBRS9FK0YsZ0JBQWdCekIsTUFBS3RFO0lBQ3ZCLGNBRGtCc0UsTUFFa0Qsd0JBRjdDdEU7R0FFZ0U7WUFHckZnRyxjQUFjMUIsTUFBS3RFLE9BQ3JCLGNBRGdCc0UsVUFBS3RFLE9BRWdFO1lBR25GaUcsd0JBR0E1QjtJQUgwQixPQUcxQkE7O09BRDhCLGNBQzlCQSxNQUFBQTs7T0FGaUMsY0FFakNBLE1BQUFBO2VBQUssT0FBTEE7O0dBQU07WUFHTjZCLFlBQVk1QixNQUFLNkIsTUFBTyxXQUFaN0IsTUFBSzZCLE1BQTBCO1lBQzNDQyxLQUFLQyxPQUFRLFdBQVJBLE9BQWtCO1lBQ3ZCQyxtQkFBbUJELE9BQVEsV0FBUkEsT0FBZ0M7WUFFbkRFLFVBQVExRixNQUFLMEIsT0FBUSxlQUFiMUIsVUFBSzBCLFlBQTRCO0dBV3ZCLElBQWhCaUUsd0JBQ0FDO1lBRUFDLE9BQU94QjtJQUhQc0I7Z0JBQ0FDOztlQU1nQixPQUFBLHlCQUpUdkI7S0FHUTs7SUFHZixJQURpQnlCLGtCQUNiQyxrQkFUSko7SUFVRyxHQUFBLHFCQURDSSxpQkFEYUQ7S0FJZix5QkFUS3pCO0tBVUYsR0FBQSxxQkFKRDBCLGlCQURhRDs7eURBQUFBOzs7Ozs7Ozs7SUFLWjtHQUtvQjtZQUl2QkUsMkJBdEJGTCwrQkFzQjZDO0dBRDVCLHNCQUNmSztZQVdKQyxrQkFBa0JDLEtBQUlDLEtBQUloSCxPQUFPc0M7O0tBQ2IsbUJBRE10QztTQUVuQmlIO0tBQWtCLE9BQUEsV0FGUTNFLFNBQVgwRSxLQUVmQyxnQkFGbUJqSDtJQUdWO0lBRkksT0FBQSx5QkFERitHLEtBQUlDO0dBR047R0FPUjtJQUFBLE1BQUE7SUFERyxNQUFBO0lBREQsTUFBQTtJQUZWRTtZQXVNQUMsTUFBTUMsS0FBTSxXQUFOQSxLQUFlO1lBRXJCQyxpQkFBaUJuQztJQUNuQjtLQUFjLE9BQUEsMkJBREtBO0tBQ2ZvQyxrQkFBK0IsNEJBRGhCcEM7SUFFbkIsV0FESW9DO0dBQ087dUJBR00sT0FMZkQsOEJBS3lDOzs7Ozs7Ozs7Ozt1QkFDbEIsV0FOdkJBLHdCQU1nRDs7Ozs7Ozs7Ozs7dUJBQ3pCLFdBUHZCQSxnQ0FPdUQ7Ozs7Ozs7Ozs7O1lBRXZERSxRQUFPQztJQUNULE9BVkVILGlCQVNPRzs7d0RBQUFBOzs7O0tBRUo7O0lBQ0wsV0FBTSwrQ0FIR0E7R0FHc0M7WUFHN0NDLFFBQVNBLFNBQVUsV0FBVkEsU0FBdUI7WUFFaENDLFVBQVFDO0lBQ1YsT0FBTywwQkFER0EsWUFqQlJOOzs7OzJEQWlCUU07Ozs7O0tBRUw7O0lBQ0ksV0FBQSxnREFIQ0E7R0FHdUM7WUFHL0NoRyxHQUFHdUQsR0FBSSxPQXJUUGpDLGVBcVRHaUMsR0FBaUI7WUFDcEJaLEtBQUtZLEdBQUksT0F0VFRqQyxpQkFzVEtpQyxHQUFtQjtZQUN4QjBDLEtBQUtDLEdBQUksT0F2VFQ1RSxpQkF1VEs0RSxHQUFtQjtZQUN4QkMsT0FBTzVDLEdBQUksT0F4VFhqQyxtQkF3VE9pQyxHQUFxQjtHQUNsQjtJQUFWNkMsVUF6VEE5RTtJQTBUQStFLFdBMVRBL0U7SUEyVEFnRixTQTNUQWhGO0lBNFRBaUYsV0E1VEFqRjtJQTZUQWtGLFdBN1RBbEY7WUE4VEFtRixZQUFZdEUsR0FBSSxPQTlUaEJiLHdCQThUWWEsR0FBMEI7WUFFdEN1RTtJQUFZLGVBaFVacEYsK0JBa0NBdUM7R0FnU2M7WUFHZDhDLE1BQUt4RSxHQUFJLE9BclVUYixnQkFxVUthLEdBQWtCO1lBQ3ZCeUUsS0FBTXpFLEdBQUksT0F0VVZiLGlCQXNVTWEsR0FBbUI7WUFDekI5RCxNQUFNOEQsR0FBSSxPQXZVVmIsb0JBdVVNYSxHQUFvQjtZQUMxQjBFLFdBQVcxRSxHQUFJLE9BelRmaUMsNkJBeVRXakMsR0FBNkI7WUFDeEMyRSxTQUFTM0U7SUFBSSxPQXpVYmIscUJBeVUrQix5QkFBdEJhO0dBQXVDO1lBQ2hENEUsTUFBTTVFLEdBQUksT0ExVVZiLGtCQTBVTWEsR0FBb0I7WUFDMUI2RSxJQUFJN0UsR0FBSSxPQTNVUmIsZ0JBMlVJYSxHQUFrQjtZQUN0QjhFLElBQUk5RSxHQUFJLE9BdlVSK0Isc0JBdVVJL0IsR0FBd0I7WUFDNUIrRSxJQUFJL0UsR0FBSSxPQXhVUitCLHNCQXdVSS9CLEdBQXdCO1lBQzVCZ0YsUUFBUWhGO0lBQUksT0E5VVpiLG9CQThVNkIseUJBQXJCYTtHQUFzQztZQUM5Q2lGLFFBQVFqRjtJQUFJLE9BL1VaYixvQkErVTZCLHlCQUFyQmE7R0FBc0M7WUFDOUNrRixVQUFVQztJQUFJLE9BaFZkaEcsc0JBZ1ZpQywwQkFBdkJnRztHQUF5QztZQUtqREMsU0FBTzVFO0lBQU8scUJBQXFDLFdBQW9CO0lBQTlCLE9BQUEsa0NBQWxDQTtHQUFpRTtHQUM3QjtJQUExQ2pELFFBREQ2SDtJQUVDQyxRQUZERDtJQUdDRSxRQUhERjtJQUlDRyxXQUpESDtJQUtDSSxTQUxESjtJQU1DSyxhQU5ETDtJQU9DTSxZQVBETjtJQVFDTyxPQVJEUDtJQVNDUSxVQVREUjtJQVVDUyxZQVZEVDtZQWFGVSxHQUFHcEksU0FBUThDLE1BQU11RjtJQUNuQixXQURhdkYsVUFBUjlDLFNBQWNxSTtHQUMrQjtHQUdyQyxTQUFYQyxlLE9BSkFGLEdBWEdUO0dBZ0JPLFNBQVZZLGMsT0FMQUgsR0FYR1Q7R0FpQlEsU0FBWGEsZSxPQU5BSixHQVZHUjtHQWlCYyxTQUFqQmEscUIsT0FQQUwsR0FWR1I7R0FrQmUsU0FBbEJjLHNCLE9BUkFOLEdBVkdSO0dBbUJPLFNBQVZlLGMsT0FUQVAsR0FMR0g7R0FlWSxTQUFmVyxtQixPQVZBUixHQUxHSDtHQWdCVSxTQUFiWSxpQixPQVhBVCxHQUxHSDtHQWlCWSxTQUFmYSxtQixPQVpBVixHQUxHSDtHQWtCWSxTQUFmYyxtQixPQWJBWCxHQUxHSDtHQW1CVyxTQUFkZSxrQixPQWRBWixHQUxHSDtHQW9CTyxTQUFWZ0IsYyxPQWZBYixHQUxHSDtHQXFCWSxTQUFmaUIsbUIsT0FoQkFkLEdBVkdSO0dBMkJVLFNBQWJ1QixpQixPQWpCQWYsR0FWR1I7R0E0QlksU0FBZndCLG1CLE9BbEJBaEIsR0FWR1I7R0E2QmEsU0FBaEJ5QixvQixPQW5CQWpCLEdBVkdSO0dBOEJhLFNBQWhCMEIsb0IsT0FwQkFsQixHQVZHUjtHQStCWSxTQUFmMkIsbUIsT0FyQkFuQixHQVZHUjtHQWdDVyxTQUFkNEIsa0IsT0F0QkFwQixHQVZHUjtHQWlDUSxTQUFYNkIsZSxPQXZCQXJCLEdBVEdQO0dBaUNXLFNBQWQ2QixrQixPQXhCQXRCLEdBVEdQO0dBa0NVLFNBQWI4QixpQixPQXpCQXZCLEdBVEdQO0dBbUNTLFNBQVorQixnQixPQTFCQXhCLEdBWkd2STtHQXVDUyxTQUFaZ0ssZ0IsT0EzQkF6QixHQVJHTjtHQW9DYyxTQUFqQmdDLHFCLE9BNUJBMUIsR0FKR0Y7R0FpQ1ksU0FBZjZCLG1CLE9BN0JBM0IsR0FKR0Y7R0FrQ2EsU0FBaEI4QixvQixPQTlCQTVCLEdBUEdMO0dBc0NPLFNBQVZrQyxjLE9BL0JBN0IsR0FOR0o7R0FzQ00sU0FBVGtDLGEsT0FoQ0E5QixHQU5HSjtHQXVDUSxTQUFYbUMsZSxPQWpDQS9CLEdBTkdKO0dBd0NRLFNBQVhvQyxlLE9BbENBaEMsR0FaR3ZJO0dBK0NlLFNBQWxCd0s7SSxPQW5DQWpDLEdBSEdEOztZQXVDSG1DLG9CQUFpQiw2QkFBYTtZQVU5QkMsYUFBYUMsVUFBU2xFLFFBQU9tRTtJQUMvQixHQUQrQkEsTUFFbkIsT0FGbUJBO0lBR0osV0FBQSxXQUhaRCxVQUFTbEU7SUFHRyxPQUFBO0dBQWlCO1lBVzFDb0UsZUFBZTFLLFNBQVFILE9BQU13STtJQUMvQixPQTdERUQ7YUE0RGVwSTthQUFRSDs7NEJBRW1CeUc7O2dCQUt6QixJQUFQcUUsT0FBTztnQkFDWCxPQUFBLFdBUnVCdEMsYUFPbkJzQztlQUNXO2VBRmQ7Z0JBQUE7Z0JBWlQsT0FSRUosNENBZ0IwQ2pFO2dCQVI1QztrQkFSRWlFLDRDQWdCMENqRTtnQkFSNUM7a0JBUkVpRSw0Q0FnQjBDakU7ZUFJbkMsT0FBQTtjQUVlO2NBTmUsT0FBQTt3REExQnJDZ0U7YUFnQ3VCO0dBQUM7R0FHWixTQUFaTSxnQixPQVhBRixlQXhFRzdLO0dBb0ZRLFNBQVhnTCxlLE9BWkFILGVBeEVHN0s7WUFxRkhpTCxPQUFPQztJQUFJLE9BQUpBOzs7WUFBQUEsU0FuSjRCLE9BQUE7O0lBMUx6QjtLQUFSbEcsWUE2VUtrRztLQWxVTEMsWUFBK0I7SUFJbkMsU0FBSUMsbUJBQW1CQyxPQUFNQztLQUMzQixPQUFPLHdCQURjRDs7MERBQU1DOzBEQUFORDtNQTVEbkJoRzs7Ozs7O0tBK0RBLE9BSHlCaUc7SUFNckI7SUFFUixTQUFJQyxvQkFBb0JGLE9BQU1DO0tBQzVCLE9BQU8sd0JBRGVEOzs7OzREQUFNQzs7Ozs0REFBTkQ7O01BcEVwQmhHOzs7Ozs7S0F1RUEsT0FIMEJpRztJQU10QjtJQUVSLFNBQUlFLG9CQUF5QnZJLE1BQUtvSSxPQUFPQztLQUN2QyxzREFEMkJySTtLQTVFekJvQzs7Ozs7S0E2RUYsT0FEdUNpRztJQUdqQztJQUVSLFNBQUlHLGlCQUFzQnhJLE1BQUtvSSxPQUFPQztLQUNwQyxzREFEd0JySTtLQWpGdEJvQzs7Ozs7S0FrRkYsT0FEb0NpRztJQUU5QjthQXdCQUk7S0FBT0MsY0FBY0MsaUJBQWlCQyxnQkFBZ0JDLGlCQUFnQkM7S0FDNUU7bUJBQTRCQSxLQUFJYjtNQUM5QixPQUQ4QkE7O1NBR3pCO1VBTWdCdk0sUUFUU3VNO1VBRVFqSSxPQUZSaUk7VUFFakJ0RywwQkFGaUJzRztVQUd6QixPQUFBLGtDQXZETEMsV0FzRHNDbEk7VUFDakMsa0JBRFEyQjs7OzZEQUF5QjNCO1VBOUd0Q29DOzs7Ozs7O3lDQThHc0NwQztVQVV6QixrQ0FoRWJrSSxXQXNEc0NsSSxNQU9qQnRFOztjQUNacU4sNENBRFlyTjtVQUVoQixrQ0EvREx3TSxzQkE4RFNhOztTQUdQLE9BYndCRDs7U0FlckI7VUFEd0NFLFVBZGZmO1VBY1NnQixTQWRUaEI7VUFjaEJpQiw0QkFkZ0JqQjtVQWV6QixPQUFBLGtDQW5FTEMsV0FrRXVDZTtVQUNsQyxrQkFEU0M7Ozs2REFBeUJEO1VBMUh2QzdHOzs7Ozs7O1NBK0hFLGtDQXZFRjhGLFdBa0V1Q2UsUUFBTUQ7U0FLM0MsT0FuQndCRjs7U0E2QnBCO1VBSFl2RCxVQTFCWTBDO1VBMEJsQmtCLFNBMUJrQmxCO2lCQUFKYTtVQTZCcEIsT0EzR1J0RyxrQkE4RTRCc0csUUEwQmRLLFFBQU01RCxTQTNCT29EO1NBNEJ2QixXQTNCd0JHLFFBQUFBOztTQXlCTDtVQUROakgsT0F4QmVvRztVQXdCckJtQixTQXhCcUJuQjtVQXlCVCxPQXZHdkJ6RixrQkE4RTRCc0csUUF3QmpCTSxRQUFNdkgsTUF6Qko2RztTQTBCVCxXQXpCd0JJLFFBQUFBLFFBQUFBOzs7VUFxQmxCTyxhQXJCc0JwQjtpQkFBSmE7aUJBQUFBO2lCQUFBQTtTQXFCSjtpQkFBb0IsV0F0QkFGLGdCQUNoQkUsUUFxQmxCTzs7Ozs7U0FFZTtVQURmQyxjQXRCc0JyQjtpQkFBSmE7aUJBQUFBO1VBdUJILE9BQUEsV0F4Qm1DRCxpQkFDaENDLFFBc0JsQlE7U0FDTixXQXZCd0JSOztTQWlDdEI7VUFGRy9HLFFBL0J1QmtHOzs7aUNBbUNRLE9BdFB0Q2pLLFFBc1AyRDtVQUhyRHVMO1lBakNGZDsrQkFtQytCLDRCQUFhOzs7O2VBMUdsRDdGO2NBdUdTYjtVQWNLLE9BQUEseUJBN0NjK0csUUFnQ3BCUyxjQWpDS2I7VUE2Q0w7WUFBQSx5QkE1Q29CSSxRQWdDcEJTLGNBakNtQlo7VUEyQ1gsT0FBQSxXQTNDNENFLGlCQUNoQ0MsUUFnQ3BCUztTQVNKO2lCQUFXLFdBMUM2QlgsZ0JBQ2hCRSxRQWdDcEJTOzs7OztTQWlCRjtVQUZxREMsY0EvQzNCdkI7VUErQ2V3QixhQS9DZnhCO1VBK0NReUIsVUEvQ1J6QjtVQWdEeEIwQjtZQWpERmxCO2VBMUJKRDtlQUxBRDs7O2VBeENGM0Y7Y0F1SHdDOEc7VUFjMUI7WUFBQSx5QkE3RGNaLFFBZ0RwQmEsZ0JBakRLakI7VUE2REw7WUFBQSx5QkE1RG9CSSxRQWdEcEJhLGdCQWpEbUJoQjtVQTJEWDtZQUFBO2NBWDJDYTtjQVcvQixXQTNEZ0NYLGlCQUNoQ0MsUUFnRHBCYTtTQVNKO2lCQUFXO21CQVZnQ0Y7bUJBVXJCLFdBMURrQmIsZ0JBQ2hCRSxRQWdEcEJhOzs7OztTQWlCRjtVQUZpQkMsVUEvRFMzQjtVQWdFeEI0QjtZQWpFRnBCO2VBMUJKRDtlQUxBRDtlQWhCQUo7ZUFRQUc7ZUFoQ0YxRjtjQXVJdUJnSDtVQWNUO1lBQUEseUJBN0VjZCxRQWdFcEJlLGdCQWpFS25CO1VBNkVMO1lBQUEseUJBNUVvQkksUUFnRXBCZSxnQkFqRW1CbEI7VUEyRVgsT0FBQSxXQTNFNENFLGlCQUNoQ0MsUUFnRXBCZTtTQVNKO2lCQUFXLFdBMUU2QmpCLGdCQUNoQkUsUUFnRXBCZTs7Ozs7S0FjSDtLQTlFTCxzQkFBdUIsT0FBQSx1QkFEcURmO0lBK0V0RTtJQUdOO0tBREVnQjtPQWpGSXJCO1VBMUJKRDtVQUxBRDtVQWhCQUo7VUFRQUc7VUFoQ0YxRjtTQVNFYjtJQXdKSixjQUFtQy9CLE1BQVc2QjtLQUNNLFdBQUEsaUNBRE5BO0tBQ00sT0FBQSxrQ0E5SWhEcUcsV0E2SStCbEk7SUFDbUM7SUFEdEUseUJBVEk4SjtrQkFXa0M5SjtLQUFWLElBQXdDdUY7S0FDbEUsU0FBSW5KLEVBQUUyTjtNQUNtQixXQUFBLFdBRnlDeEUsU0FDNUR3RTtNQUNKLHNDQURJQTtNQUNKO0tBQ1E7S0FLc0I7TUFBQSxPQUFBLGdDQVA1QjNOO01BTUYsT0FBQSw2QkFQa0M0RDtLQVFKLE9BQUEsa0NBdko5QmtJO0lBdUpnRDtJQVJwRCx5QkFYSTRCO1dBcUJLLHdCQXJCTEE7S0F1Qlk7TUFBUkUsUUFBUSx3QkF2QlpGO01Bd0JJRyxNQUFNO01BQ1Y7O1NBQW1CLElBQVNDLGNBQUhDO1NBQ3ZCLE9BRkVGLElBQ3FCRSxLQUNhLG9CQURWRDtRQUMwQztLQUR0RSx5QkFGSUY7S0FJSixrQ0EvSkE5QixzQkE0SkkrQjs7SUFNSCxLQUFBLHdCQTlCREg7S0FvQzhDO01BQUEsT0FBQSx5QkFwQzlDQTtNQW9DRSxPQUFBLG9CQUE2QjtLQUgvQixrQ0FyS0E1Qjs7SUEwS0osT0ExS0lBO0dBa1VpQjtZQUVuQmtDLGNBQWM3RTtJQUNoQixPQTVFRUQ7YUFaR3ZJOzs7NEJBeUZ1Q3lHOzs4QkFFVTZHLE9BQVMsT0FBQSxXQUovQzlFLGFBSXNDOEUsT0FBeUI7Z0JBQTlCLE9BQUE7NkRBM0MvQzdDO2VBMkM4RTtlQURoRSxXQUFBLDBDQUQ0QmhFO2VBQ2tCLE9BQUE7b0RBMUM1RGdFO2NBMkMrRTtjQUYxQyxPQUFBO3dEQXpDckNBO2FBMkNnRjtHQUFDOztZQVUzRThDLHVCQUFnQixTQUFFO1lBR3BCOU0sa0JBQVksU0FBRTtZQUNkK00sc0JBQWVoTSxTQUFVLE9BQVZBLGdCQUF3QjtZQUN2Q2hCLCtCQUEwQyxTQUFFO1lBQzVDRCx5QkFBa0IsU0FBRTs7Ozs7Z0NBTmxCZ04sWUFHRjlNLE1BQ0ErTSxVQUNBaE4sUUFDQUQ7WUFLRjJLO0lBR0Ysa0NBQWdDO0dBQWdCO1lBNEM5Q3VDLFVBQVV6SyxHQUFHM0Q7SUFBSTtJQUFBLGVBQVAyRCxHQUFHM0QsaUI7R0FBd0Q7WUFFckVxTyxVQUFVMUssR0FBRTJLO0lBQ2Q7aUJBQW9EQyxJQUFNLGdDQUFOQSxJQUR0Q0QsR0FDd0Q7SUFBdEUsZUFEWTNLLGlCO0dBQzZEO1lBR3ZFNkssVUFBVTdLLEdBQUVhO0lBQUksT0FOaEI0SixVQU1VekssWUFBMEI4SyxJQUFNLE9BQTFCLHdCQUFvQkEsSUFBeEJqSyxHQUFrRDtHQUFDO1lBRS9Ea0sseUJBQXlCL0s7SUFDM0I7c0I7SUFBQSxlQUQyQkEsaUI7R0FDNkI7WUFLbERnTCxlQUFlaEwsR0FBRzNEO0lBQ3hCLE9BRHFCMkQ7O09BRUYsT0FBQSxXQUZLM0QsZUFBSDJELElBamVyQm1COztPQW9lb0IsT0FBQSxXQUhJOUUsZ0JBQUgyRCxJQWplckJtQjs7T0FzZWtCLE9BQUEsV0FMTTlFLGdCQUFIMkQsSUFqZXJCbUI7O09BcWVlLE9BQUEsV0FKUzlFLGdCQUFIMkQsSUFqZXJCbUI7O09BdWVnQixPQUFBLFdBTlE5RSxnQkFBSDJELElBamVyQm1COztPQXdlZ0IsT0FBQSxXQVBROUUsaUJBQUgyRCxJQWplckJtQjs7V0F5ZU9hLFFBUmNoQywwQkFRTCxPQVJWZ0wsb0JBQWtCM087T0FRUixXQUFLLDBCQUFkMkY7OztRQUN5QzRDLElBVDNCNUU7UUFTd0JpTCxJQVR4QmpMO1FBU2lCMkosVUFUakIzSjs0QixPQUFmZ0wsb0JBQWtCM087T0FVdEIsV0FBb0MsMEJBREFzTixlQUFPc0IsR0FBR3JHOzs7UUFFM0JpRixVQVhBN0o7NEJBWW5CLE9BWklnTCxvQkFBa0IzTztPQVl0QixXQUFtQiwwQkFEQXdOOztHQUN1QztZQUd0RHFCLGNBQWNDO0k7O09BR2tCLElBQTFCakMsbUJBQTBCLE1BQUEsK0JBQTFCQTtPQUFhLE9BQUEsa0NBSExpQzs7V0FDUGxMOztPQUdBLE9BQUEsNkJBSk9rTDs7T0FLUCxPQUFBLDZCQUxPQTs7O1dBQ1BsTDs7T0FPZ0M7UUFGdEMrQjtRQUVzQyxvQixPQVJ2Q2tKLGNBQWNDO09BUXlCLE9BQUEsMEJBRnRDbko7O0lBSkwsT0FBQSw2QkFGa0JtSixhQUNQbEw7Ozs7Ozs7Y0FEUGlMLGVBZkFGOzs7T0FuZ0JOcE07T0FLQTRDO09BVUFFO09BS0FDO09BUEFGO09BWUFHO09BTUFDO09BQ0FFO09BQ0FFO09BQ0FkO09BQ0FlO09BQUFBO09BNlJBOEI7T0FQQU47T0FsQkFSO09BUUFHO09BRkFEO09BZ0JBVTtPQVFBRztPQWRBVjtPQUNBRTtPQUhBbkc7T0FDQTJDO09BUUE4RDtPQUpBSjtPQUNBQztPQUNBQztPQWhDQWY7T0FnREF5QjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQVBBUDtPQUhBRjtPQUNBdkk7T0FDQXdJO09BRUFFO09BQ0FDO09BMkJBbUI7T0FDQUM7V0F4VEV0RDtPQTRYRjZGO09BREFEO09BREFEO09BSUFzQztPQXJFQTFFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO1dBd0hFdUQsMEJBUkFOLFdBTUFJLFdBSkFIO1dBakRBeEM7O1FBV2tCLElBQWhCa0Qsd0JBR0ZsTztpQkFFSWUsUUFBUXpCLE1BQUswQjtTQUFRLDZCQUFiMUIsVUFBSzBCO1FBQXNDO1FBSDFDLGdCQUNiaEIsV0FFSWU7aUJBR0ZSLGlCQUFXLFNBQUU7aUJBRWIrTSxTQUFTeE4sY0FBU3dCO1NBQ3BCLGNBWEU0TTs7b0JBQUFBOzs7bUJBVWtCNU07bUJBSWxCLHNDQUpTeEI7O1FBS29DO2lCQUc3Q1EsNkJBQXdDLFNBQUU7aUJBQzFDRCx5QkFBaUIsU0FBRTs7Ozs7NkJBWG5CRSxNQUVBK00sVUFRQWhOLFFBQ0FEO2lCQUtGMkssWUFBaURtRDtTQUduRCxrQ0FBZ0Msb0JBSG1CQTtRQUdBO21CQUhqRG5EOzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lFMWhCb0Q2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ3pDOzs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVFYQyxJQUFJaE0sR0FBSSxPQUFKQSxLQUFTO1lBQ2JnQyxNQUFNaEMsR0FBSSxPQUFKQSxLQUFXO1lBQ2pCMkMsSUFBSTNDLEdBQUksT0FBSkEsS0FBUztZQUNiaU0sU0FBU2pNLEdBQUUyQztJQUFNLFdBQVIzQyxVQUFFMkMsTUFBRjNDLE1BQUFBLE1BQUFBLE1BQUFBO0dBQWlDO1lBRTFDa00sVUFBVWxNLEdBQUczRDtJQUNmO0tBQUkyRixRQUFRLFdBREczRixHQUFIMkQ7S0FFUm1NOzRCQUFKLE9BQUEsaUNBREluSztJQUVKLFdBSFloQyxNQUFBQSxNQUNSZ0MsT0FDQW1LLFdBRlFuTSxNQUFBQTtHQUdlO1lBR3pCMEssVUFBVTFLLEdBQUUySztJQUFJLE9BTmhCdUI7YUFNVWxNO3NCQUEwQmlMO2NBQWUsV0FBQSxpQ0FBdkNOO2NBQXVDLE9BQUEsaUNBQWZNO2FBQXdCO0dBQUM7WUFDN0RtQixZQUFZcE0sR0FBRTJLO0lBQUksT0FQbEJ1QjthQU9ZbE07c0JBQTBCaUw7Y0FBZSxXQUFBLGlDQUF2Q047Y0FBdUMsT0FBQSxpQ0FBZk07YUFBeUI7R0FBQztZQUNoRUosVUFBVTdLLEdBQUVhO0lBQUksT0FSaEJxTDthQVFVbE07c0JBQTBCaUw7Y0FBZSxXQUFBLGlDQUF2Q3BLO2NBQXVDLE9BQUEsaUNBQWZvSzthQUF1QjtHQUFDO1lBRzlEdkw7SUFBVTtLQU1WLE9BQUE7OztXQUNLbUIsY0FBSyxPQUFBLGtDQUFMQTs7Ozs7UUFDVThCO1FBQUxxSjs7OztZQUF1Q0c7OzZDQUFBQTtZQUFBQTs7V0FBWUU7O2lCQUcxRDt5Q0FIT0wsS0FBdUNHLFdBQVlFLFVBQTlDMUo7aUJBQ1o7eUNBRE9xSixLQUF1Q0csV0FBWUUsVUFBOUMxSjttQkFJUjJKLGNBQUssT0FBTEE7O0dBQU07WUFHYjlOLFFBQVErTixNQUFNUCxLQUFLckosS0FBSVgsT0FBTXFLO0lBQy9CLElBQUlHO2tCQUdBQztLQUZrQixjQUVsQkE7O2dCQUhBRCxrQkFoQkY5TSxRQW1CRStNO0lBRUc7SUFKUCx5QkFGK0JKO0lBT1Y7S0FBakJGOzRCQUxKLE9BQUEsaUNBRnlCbks7SUFRekIsV0FSZ0JnSyxLQUFLckosS0FBSVgsT0FPckJtSyxXQU5BSyxjQURNRDtHQVFtRDtZQUczREcsZUFBZUgsTUFBTVAsS0FBS3JKLEtBQUlYLE9BQU1xSztJQUNqQjtLQUFqQkY7NEJBQUosT0FBQSxpQ0FEZ0NuSztJQUVoQyxXQUZ1QmdLLEtBQUtySixLQUFJWCxPQUM1Qm1LLFdBRGtDRSxVQUFyQkU7R0FFNkI7WUFHNUN6RSxLQUFLakgsR0FBSSxXQUFKQSxHQUFVO1lBRWY4TCxPQUFRbE0sTUFBTWxELFNBQVNDLFFBQVFGLElBQUlHO0lBQ3JDLFdBQU8sbUJBREdnRCxNQUFNbEQsU0FBU0MsUUFBUUYsSUFBSUc7R0FDcUI7WUFHeERvSCxTQUFPbUgsS0FBS3JKLEtBQU1qQyxLQUFtQjJMO0lBQ3ZDLEdBRG9CM0w7U0FBT0MsTUFBUEQsUUFBQXdILE9BQU92SDs7U0FBUHVIO0lBQ3BCLFdBdkJFMUosb0JBc0JPd04sS0FBS3JKLEtBQU11RixNQUFtQm1FO0dBQ1M7WUFHOUNPLGlCQUFpQlosS0FBS3JKLEtBQUt1RixhQUFVLE9BSnJDckQsU0FJaUJtSCxLQUFLckosS0FBS3VGO0dBQWtDO1lBRTdEMkUsV0FBV2IsS0FBS3JKLEtBQU1qQyxLQUFtQjJMO0lBQzNDLEdBRHdCM0w7U0FBT0MsTUFBUEQsUUFBQXdILE9BQU92SDs7U0FBUHVIO0lBQ3hCLFdBN0JFMUosaUJBNEJXd04sS0FBS3JKLEtBQU11RixNQUFtQm1FO0dBQ0c7T0FPNUNTO1lBQ0FDLE1BQU1DLFFBQVMsT0FBQSwyQkFyQmZsRixNQXFCTWtGLFFBQW9DO1lBRTFDQyxpQkFBaUJDOztLQXJIWDtNQU1nREM7TUFOaERDLFlBTWdERDtNQVBoREUsWUFPZ0RGO01BTmhERyxVQUFBLFdBcUhXSixTQXJIWEU7TUFGSkcsZ0NBRUlEO01BREFFLFVBQUEsV0FzSFdOLFNBdEhYRztNQURKSSxrQ0FDSUQsZUFESkQ7TUFRb0RHLGVBUnBERDtvQkFRb0RDLGNBQUEzQjs7SUFBN0MsSUFBTHpPLEtBQUssbUNBK0dRNFA7a0JBOUdNdlA7S0FDckI7TUFBSThDLDRCQUFKLE9BQUEsV0E2R2V5TSxTQTlHTXZQO01BQ0w7O01BS1o7T0FBcUIsUUFBQSxXQXdHVnVQLE1BOUdNdlA7T0FNTmE7T0FBUEM7TUFDSixlQVBpQmQsT0FNYmMsUUFBT0Q7S0FDYztLQUNuQjs7O3lCQUF5Q0E7VUFBekM7V0FBaUNDO1dBQVprUDtXQUNOLFFBQUEsV0FxR1ZULE1BdEdnQlMsWUFSVmhRLE9BUXNCYyxPQUFRRDtXQUNwQ29QO1dBQVBDO1VBQ0osZUFWaUJsUSxPQVNia1EsVUFBT0Q7U0FDZTtLQVI5QixPQUFBOztrQkFESW5OOzsrQkFVZ0RqQztnQkFBekMsSUFBaUNDLGtCQUFaa1A7Z0JBQzVCLE9BQUEsV0FrR1dULE1BbkdpQlMsWUFBWWxQLE9BQVFEO2VBQ1Y7O2NBYnhDbEI7OztJQWNFO0lBYlk7S0FBQSxPQUFBO0tBK0doQmpCLElBQUk7SUFDUixjQUF1QnlSLEdBQUssV0FBTyxXQUQvQnpSLEdBQ21CeVIsSUFBaUI7SUFBdEIsT0FBQTtHQUF1QjtZQUl2Q0MsT0FBTy9OO0lBQW9CLFdBNUQzQk4sUUE0RE9NO0lBQW9CLE9BQUE7R0FBVTtZQUVyQ2dPLFdBQ0VwUCxRQUNDb04sS0FDQTlELE1BQ29EK0Y7SUFFM0MsSUFBVnpQLFVBQVUsV0FMVkksUUFDQ29OLEtBQ0E5RDtJQUlMLFNBQUlnRyxXQUFZbFEsT0FBT2lRO0tBQ3JCLHdCQURjalEsZUFBT2lRO0lBQ3lDO0lBRWhFO0tBQytDLHNCQUFnQkEsb0JBQVR6UDtLQUNsRCxPQUxBMFAsV0FJa0QxUCxTQUFTeVA7SUFDeEI7SUFEckMsSUFERTNRLEtBQ0Y7SUFHRixVQVJJa0I7U0FRQTJQLFFBSVE7O0tBSlosT0FSSTNQOztZQVFBMlAsUUFLVTs7O1lBSEZQLFlBVlJwUCxZQVFBMlAsWUFFUVA7O1lBRlJPLFFBR1k7Ozs7S0FRWjtNQUFjLFlBM0JoQkosT0FRRXZQO01Bb0J1QixLQUFBLGdDQXRCOEJ5UDs7S0F1QnJELGVBYkFFLE9BVnFERjtJQXVCNUI7O0lBTjdCLE9BbERFdEI7c0NBK0NVLE9BWFJ1QixXQU9BQyxPQVZxREY7OzthQU1yRDNROzs7R0FrQkE7Z0JBRytCME8sS0E5Q0o5RDtJQThDa0QsSUE5Q3hEdkY7SUE4Q3dELGdCQTlDL0IwSjtLQUNsRCxXQWpDRTdOLGlCQThFaUN3TixLQTlDVnJKLEtBQU11RixNQUFtQm1FO0dBOENtQztHQUFsRSxTQUFqQitCO0ksT0EvQkFKOztnQkFnQzZCaEMsS0FBSzlEO0lBQVEsSUFBc0IsV0FBOUJBLE9BQThCO0lBQUEsc0IsT0F6RGhFckQsU0F5RDZCbUg7R0FBdUM7R0FBdkQsU0FBYnFDO0ksT0FoQ0FMOztHQWlDSSxTQUFKL0Msb0IsT0ExREFwRztHQTJETyxTQUFQeUo7SSxPQTNEQXpKOztHQTREUyxTQUFUMEo7SSxPQTVEQTFKOztHQTZETyxTQUFQMko7SSxPQTdEQTNKOztHQThETSxTQUFONEosc0IsT0E5REE1SjtHQStETyxTQUFQNko7SSxPQS9EQTdKOztHQWdFVyxTQUFYOEo7SSxPQWhFQTlKOztHQWlFUyxTQUFUK0o7SSxPQWpFQS9KOztHQWtFSyxTQUFMZ0sscUIsT0FsRUFoSztHQW1FSyxTQUFMaUsscUIsT0FuRUFqSztHQW9FSyxTQUFMa0sscUIsT0FwRUFsSztHQXFFSyxTQUFMbUsscUIsT0FyRUFuSztHQXNFSyxTQUFMb0sscUIsT0F0RUFwSztHQXVFSyxTQUFMcUsscUIsT0F2RUFySztHQXdFUyxTQUFUc0s7SSxPQXhFQXRLOztHQXlFTyxTQUFQdUs7SSxPQXpFQXZLOztHQTBFUSxTQUFSbEg7SSxPQTFFQWtIOztHQTJFVyxTQUFYd0s7SSxPQTNFQXhLOztHQTRFUyxTQUFUeUs7SSxPQTVFQXpLOztHQTZFUyxTQUFUMEs7SSxPQTdFQTFLOztHQThFUSxTQUFSMks7SSxPQTlFQTNLOztHQStFSyxTQUFMNEsscUIsT0EvRUE1SztHQWdGSSxTQUFKNkssaUIsT0FoRkE3SztHQWlGTSxTQUFOOEssbUIsT0FqRkE5SztHQWtGVSxTQUFWK0s7SSxPQWxGQS9LOztHQW1GTyxTQUFQZ0wsb0IsT0FuRkFoTDtHQW9GUyxTQUFUaUwsc0IsT0FwRkFqTDtHQXFGUSxTQUFSa0wscUIsT0FyRkFsTDtHQXNGUSxTQUFSbUwscUIsT0F0RkFuTDtHQXVGSyxTQUFMb0wsa0IsT0F2RkFwTDtHQXdGSyxTQUFMcUwsa0IsT0F4RkFyTDtHQXlGUSxTQUFSc0wscUIsT0F6RkF0TDtHQTBGSyxTQUFMdUwsa0IsT0ExRkF2TDtHQTJGSyxTQUFMd0wsa0IsT0EzRkF4TDtHQTRGSyxTQUFMeUwsa0IsT0E1RkF6TDtHQTZGSyxTQUFMMEwsa0IsT0F6RkEzRDtHQTBGSyxTQUFMNEQsa0IsT0ExRkE1RDtZQTRGQTZELG1CQUFvQkMsUUFBT0M7SUFDN0I7S0FBQSxVQUFBLHlCQURzQkQsUUFBT0M7S0FDN0IsTUFBQTtJQUFBLE9BaEJFaEI7R0FnQitFO1lBTTdFblAsU0FBUW9RLFVBQVV4TztJQUNwQixJQUF1RCxNQTdJdkQxQyxRQTRJb0IwQyxVQUNPLE1BN0kzQjFDLFFBNElVa1I7SUFDNkMsT0FBQTtHQUFpQjtZQUd0RUMsTUFBTTdRLEdBQUVjLEtBQU0sT0FBQSxrQ0FBTkEsS0FBRmQsR0FBNkI7WUFDbkNLLFNBQVNMLEdBQUksT0FBQSxrQ0FBSkEsR0FBd0I7R0FSeEIsZ0JBR1RRLFVBSUFxUSxPQUNBeFE7WUFJQXlRLFNBQVFuTyxLQUFJcUosS0FBSWhLLE9BQU1xSztJQUN4QixXQTVIQUssMkJBMkhjVixLQUFKckosS0FBUVgsT0FBTXFLO0dBQ2dDO1lBR3REMEUsYUFBWXBPLEtBQUlxSixLQUFJaEssT0FBTXFLO0lBQzVCLFdBaElBSyx3QkErSGtCVixLQUFKckosS0FBUVgsT0FBTXFLO0dBQzBCO0dBTjFDLGlCQUNWeUUsVUFJQUM7Ozs7Ozs7OztRQXpLQS9FO1FBQ0FoSztRQUNBVztRQUNBc0o7UUFFQUM7UUFRQXJCO1FBRkFIO1FBQ0EwQjs7O09BdURGVTtPQXBCQWhGO09BcUJBaUY7T0EyQ0E5QjtPQUNBcUQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUU7T0FEQUQ7T0FFQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQXpSO09BQ0EwUjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQXZDQXBDO09BREFEO09BeERBdko7T0FNQWdJO09BaUJBa0I7T0E1REFyTztPQWlDQWlOO09BcUJBTTs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDeEpVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUVPSitEO0lBY1ZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaEJNQztJQUFBQzs7Ozs7OztZQUlJQyxTQUFTQztJQUNYO0tBQUE7S0FFRyxNQUFBLDhCQUhRQTtLQUdSLE1BQUE7S0FBRCxNQUFBO0tBRG1DLE1BQUEsNkJBRjFCQTtLQUVULE1BQUE7SUFDQSxPQUFBO0dBRTRDOzs7d0NBVGhESCxXQUFBQyxXQUVJSCxNQUVBSTs7Ozs7O1lBU0pFLE1BQU1DLElBQUdDO0lBQUssSUFBMEIsTUFBQSxnQkFBL0JBLEtBQW1CLE1BQUEsZ0JBQXRCRDtJQUFrQyxPQUFBO0dBQVc7R0FmekMsb0VBZVZEO1lBR05HLFlBQUFDO0lBQUE7O2NBQUFBO2dCQUFBQTs7Ozs7OztPQUFBOztNQUFBLE9BQUE7NENBQUFULGtCQUFBUzs7ZUFBQUE7O01BQUEsT0FBQTs0Q0FBQVQsa0JBQUFTOzs7TUFBQSxPQUFBOzRDQUFBVCxrQkFBQVM7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7TUFBQSxPQUFBOzRDQUFBVixrQkFBQVM7O1NBQUFFO1FBQUFBLG1CQUFBQTtNQUFBO09BQUFDLFdBQUFEO09BQUFFLFdBQUEsc0JBQUFEO01BQUEsV0FBQUM7O0tBQUEsT0FBQTs7Y0FBQWI7Y0FBQVU7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQVQsa0JBQUFTO0dBR2lCO1lBSGpCSztJQUFBLFlBQ0U7SUFDQSxJQUFBQyxxQkFBQUMsV0FBQSxzQkFBQUQ7SUFBQSx3QkFBQUM7R0FDZTs7Ozs7OENBSGpCUixhQUFBTTs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDY01HO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7O1lBekNKQztJQUFBO0tBQVVDO0tBRkVDLHNCQUVGRDtLQUZFRSxVQUFBLHNCQUFBRDtLQUFaRSxnQ0FBWUQ7Z0NBQVpDO0dBRStDO1lBQy9DQyxZQUFNQyxjQUFRQyxnQkFBZCxPQURBUCxVQUNtRDtZQUUvQ1EsMkJBQTRDQyxpQkFBTyxPQUFQQTtZQUVoREMsV0FBS0MsV0FBTCxPQUxBWCxVQUtxQztZQUNyQ1ksV0FBTUMsV0FBS0MsV0FBWCxPQU5BZCxVQU00QztZQUM1Q2UsV0FBTUMsV0FBS0MsV0FBS0MsV0FBaEIsT0FQQWxCLFVBT2lEO1lBQ2pEbUIsV0FBTUMsV0FBS0MsV0FBS0MsV0FBS0MsV0FBckIsT0FSQXZCO0dBUXNEO1lBQ3REd0IsV0FBTUMsV0FBS0MsV0FBS0MsV0FBS0MsV0FBS0MsV0FBMUIsT0FUQTdCO0dBUzJEO1lBQzNEOEI7SUFBTUMsV0FBS0MsV0FBS0MsV0FBS0MsV0FBS0MsV0FBS0MsV0FBL0IsT0FWQXBDO0dBVWdFO1lBQ2hFcUM7SUFBTUM7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBcEMsT0FYQTVDO0dBV3FFO1lBQ3JFNkM7SUFBTUM7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBekMsT0FaQXJEO0dBWTBFO1lBQzFFc0Q7SUFBTUM7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBOUMsT0FiQS9EO0dBYStFO1lBQy9FZ0U7SUFBTUM7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBbkQsT0FkQTFFO0dBY3FGO1lBRXJGMkU7SUFBTUM7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBeEQsT0FoQkF0RjtHQWlCb0I7WUFFcEJ1RjtJQUFNQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFNQztJQUE5RCxPQW5CQW5HO0dBb0JvQjtZQUVwQm9HO0lBQU1DO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQUtDO0lBQU1DO0lBQU1DO0lBQXBFLE9BdEJBakg7R0F1Qm9CO1lBRXBCa0g7SUFBTUM7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBS0M7SUFBTUM7SUFBTUM7SUFBTUM7SUFBMUUsT0F6QkFoSTtHQTBCb0I7Ozs7Ozs7OztRQXpCcEJLO1FBRUlHO1FBRUpFO1FBQ0FFO1FBQ0FHO1FBQ0FJO1FBQ0FLO1FBQ0FNO1FBQ0FPO1FBQ0FRO1FBQ0FTO1FBQ0FVO1FBRUFXO1FBR0FZO1FBR0FhO1FBR0FjO1FBR0loSTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Rzs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQytqQ0ZrSTtJQXhNSUM7SUFtQkpDOztJQXB2QkFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQS9MaUI7SUFGakJDO0lBRUFDLGlCQUFpQjtJQUdmQztJQUNBQztJQTZIRUM7SUF6SEpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQ0FDLE9BQU9DLEdBQUksT0FBQSxpQ0FBSkEsR0FBZ0M7T0FxQnJDQztHQStCRixTQUFBN0ksVUFBTThJLGNBQVFDLFVBQWQsaUJBQThDO1lBRTFDQyxNQUFPOUosSUFBZUMsSUFBSyxPQUFBLHFCQUFwQkQsSUFBZUMsSUFBWTs7SUFDbEM4SjtJQUNBL0o7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7dUJBRVMsNEJBRlRBLEtBL0NGK0ksVUFpRHlCOzs7Ozs7Ozs7OztHQW5CZjs7O09BQ1o3STtPQUVJZ0o7T0FDQUM7T0FDQS9KO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO01BN0VKd0k7SUFnR1MsS0FBQSxxQkE3RlBDO0tBNkZBLE1BQUE7UUFIQVc7OztJQU02Qjs7TUFBckIscUJBaEdSWDtXQWdHNkIscUJBaEc3QkE7S0FnR0EsTUFBQTtRQU5BVzs7T0FVQUMsMkJBcEdBWixXQTBGQVc7dUJBWVMsT0FBQSxxQkFaVEEseUJBWWlDOzs7Ozs7Ozs7Ozs7SUFDeEIsT0FBQSxxQkFIVEM7R0FHcUM7Ozs7Ozs7Ozs7OztJQUM1Qjs7YUFkVEQsdUJBVUFDO2FBcEdBWjtHQXdHd0U7Ozs7Ozs7Ozs7O0dBaUIxRSxJQWZFYSx3QkFoQkFGLHNCQStCRjdJO1lBSUlnSixVQUFVQztJQUFJLEdBQU8scUJBQVhBO0lBQUksTUFBQTtHQUFlO09BRzdCQztZQUlBQyxPQUFPQztJQUNULEdBQUcscUJBRE1BO0tBRUo7T0EzSVBwQixtREF5SVdvQjtJQUVKLE9BRklBO0dBR1I7R0FHWTtJQUFYQyw0Q0F6SUZsQjtJQTRJQW1CLHNCQXpDQVI7aUVBd0ZGZjtJQUFBd0I7WUFBQUMsYUFBQUM7SUFBQSxJQUFBQyxZQUFBLDZCQUFBRDtJQUFBLGVBQUFDO0dBQXdDO1lBRXBDQyxtQkFBWVYsR0FBSSxXQUFVLFdBekw5QlosY0F5TGdCWSxJQUFvRDtZQUNoRVcsV0FBWS9LLElBQVVDLElBQUssT0FBZkQsT0FBVUMsV0FBcUI7T0FDM0MrSztZQUNBQyxjQUFVLFdBQWE7WUFDdkJDLFFBQVFkLEdBQUksT0FBSkEsa0JBQTBCO3VCQUl6QixPQUFBLDRCQUFzQjs7Ozs7Ozs7Ozs7WUFFL0JlLE9BQVFDLGNBQWNDO0lBQ3hCLE9BRFVELGdCQUFjQyxXQTNEeEJaLGtCQW5EQVQ7R0FnSDRFO09BRzFFc0IsMEJBbkhGdEI7WUFvSEV1QixnQkFBZ0JuQixHQUFJLE9BQUpBLE1BcEhsQkoseUJBb0hnRDtZQUM5Q29CLGFBQWFoQixHQUFJLE9BQUpBLElBRmJrQixrQkFFeUM7WUFDekNFLG1CQUFZcEI7SUFBVyxnQkFBWEE7ZUFBVztJQUF5QixXQURoRGdCLGFBQ1loQjtJQUFtQyxHQUFBO0lBQVAsTUFBQTtHQUEyQjs7SUFFcEM7SUFGL0JvQiwyQjtJQUVjOzs7Ozs7Ozs7Ozs7O2tCQUdvQkg7S0FDakIsV0FkakJGLFVBYWtDRTtLQUNqQixPQU5qQkcsMkI7SUFNa0Q7SUFEcEQseUJBM0VFaEI7SUEyRUY7Ozs7Ozs7Ozs7OztZQUlFaUIsV0FBV3JCLEdBQUVzQixNQUFPLE9BVnBCTixhQVVXaEIsS0FBRXNCLFNBQTRCO1lBQ3pDQyxpQkFBaUJ2QixHQUFJLE9BRHJCcUIsV0FDaUJyQixZQUF3Qjs7Ozs7Ozs7Ozs7Ozs7WUFLdkN3QixTQUFTeEIsR0FBSSxPQUFKQSxFQUFLO1lBQ2R5QixTQUFTdEIsR0FBSSxPQUFKQSxFQUFLO0dBdkNoQjtJQUFBOzs7Ozs7Ozs7Ozs7T0FzQ0VxQjtPQUNBQztJQTBERkM7WUFDQUMsVUFBUTNCLEdBQUksT0FBQSxxQkFBSkEsTUFBUztZQUlqQjRCLFFBQVE1QixHQUFJLE9BQUEscUJBQUpBLE1BQVM7WUFHakI2QixRQUFRN0IsR0FBSSxPQUFBLHFCQUFKQSxNQUFTO1lBQ2pCaUIsU0FBU2pCLEdBQUksT0EvSmJFLFVBK0pTRixnQkFBOEI7O2tCQUdMOEI7S0FDMUIsSUFBSjlCLFNBRDhCOEI7S0FFM0IsS0FOUEQsUUFLSTdCO01BQ0osTUFBQTtLQUN1QixJQTFLaEJwSyxLQW9LUHFMLFNBSUlqQjtLQUVHLEdBMUthLHFCQUFicEssSUF1SzJCa007S0FHbEMsTUFBQTtJQUF1QztJQUh6Qyx5QkE1SkUxQjtJQTRKRjs7Ozs7Ozs7Ozs7O09BZUEyQixvQkFDQUM7WUFFQUMsYUFBYy9LO0lBQ2hCLGdCQS9NRTRJLDhCQThNYzVJO0dBQ2tEOztRQUlsRUE7Ozs7eUJBQUFBLHFCQUxFK0ssYUFLRi9LOztLQUNTLEtBQUEsMkJBcE5QNEk7TUFvTkEsTUFBQTtnQkFERjVJO2VBQUFBO1NBQUFBOzs7Ozs7Ozs7Ozs7O0dBUUEsU0FlSWdMLE1BQUFDLEdBQUEsT0FBQUEsS0FBSztZQVJHQyxXQUFBRCxHQUFBLE9BQUFBLEtBQVU7WUFBVkUsZUFBQUYsR0FBQUcsR0FBQUgsT0FBQUcsWUFBVTtZQURWQyxRQUFBSixHQUFBLE9BQUFBLEtBQU87WUFBUEssWUFBQUwsR0FBQUcsR0FBQUgsT0FBQUcsWUFBTztZQURQRyxPQUFBTixHQUFBLE9BQUFBLEtBQU07WUFBTk8sV0FBQVAsR0FBQUcsR0FBQUgsT0FBQUcsWUFBTTtZQURkSyxTQUFBUixHQUFBLE9BQUFBLEtBQVE7WUFEUmpMLGdCQUFBaUwsR0FBQSxPQUFBQSxLQUFlO2dCQVlmQSxHQUFBRyxHQUFBLFdBQUFILE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFHLEdBQUs7R0FBTDs7SUFBQU0sOEJBQUEsU0FBSyxtQkFBTFY7Z0JBUlFDLEdBQUFHLEdBQUEsV0FBQUgsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUcsR0FBQUgsTUFBVTtHQUFWO0lBQUEsVUFBQUU7SUFBQVE7MEJBQUEsU0FBVSx3QkFBVlQ7Z0JBREFELEdBQUFHLEdBQUEsV0FBQUgsTUFBQUEsTUFBQUEsTUFBQUcsR0FBQUgsTUFBQUEsTUFBTztHQUFQO0lBQUEsVUFBQUs7SUFBQU07MEJBQUEsU0FBTyxxQkFBUFA7Z0JBREFKLEdBQUFHLEdBQUEsV0FBQUgsTUFBQUEsTUFBQUcsR0FBQUgsTUFBQUEsTUFBQUEsTUFBTTtHQUFOO0lBQUEsVUFBQU87SUFBQUssK0JBQUEsU0FBTSxvQkFBTk47Z0JBRFJOLEdBQUFHLEdBQUEsV0FBQUgsTUFBQUcsR0FBQUgsTUFBQUEsTUFBQUEsTUFBQUEsTUFBUTtHQUFSOztJQUFBYTswQkFBQSxTQUFRLHNCQUFSTDtnQkFEQVIsR0FBQUcsR0FBQSxXQUFBQSxHQUFBSCxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFlO0dBQWY7O0lBQUFjOzt1QkFBQSxTQUFlOzs7T0FBZi9MOztZQWdCQWdNLHdCQUF3QmxELEdBQUksV0FBSkEsU0FBeUI7WUFDakRtRCxhQUFhbkQ7SUFBMEMsV0FEdkRrRCx3QkFDYWxEO3dCQUFBQTtHQUFvRTtZQU1qRm9ELDBCQUEwQnBELEdBQUVxRDtJQUM5QixvQkFEOEJBLFdBUDVCSCx3QkFPMEJsRDtHQUNtQztZQUc3RHNELDhCQUE4QnRELEdBQUVxRDtJQUNsQyxPQUxFRCwwQkFJOEJwRCxHQUFFcUQ7R0FDTztZQVl6Q0UsU0FBdUJ2RDtJQUN6QiwwQ0FEeUJBLEdBM0R2QitCO0dBNEQ0RTtZQUc1RXlCLFNBQU94RCxHQUFJLE9BSlh1RCxTQUlPdkQsTUFBdUI7WUFDOUJ5RCxZQUFVQyxZQUFXMUQ7SUFBSTtLQUE4QixRQUx2RHVELFNBS3FCdkQ7S0E1Q25CMkQ7S0FEQUM7S0FFUUM7S0FDQUM7S0EvQkVDO0tBd0NWQztLQUFBQyxVQUFBLDhDQUFBRDtLQWZKRSxnQ0FlSUQ7S0FSUUU7T0FqRFJ4QyxVQWlCVW9DOztVQWJWbkM7WUFhVW1DO2lDQUl3QixXQWxMbEM1RSxXQThLVTRFOzs7O3FCQUt3QixXQW5MbEM1RSxXQXFLQThCLFNBU1U4QztLQXlCZEssa0NBT1lELGVBUFpEO0tBTVlHLFVBQUEsV0FsTlp0TixhQWtOWStNO0tBTlpRLGtDQU1ZRCxlQU5aRDtLQUtZRyxVQUFBLHNCQUFBVjtLQUxaVyxrQ0FLWUQsZUFMWkQ7S0FJSUcsVUFBQSxzQkFBQWQ7S0FKSmUsa0NBSUlELGVBSkpEO0tBR0lHLFVBQUEsc0JBQUFmO0tBSEpnQixrQ0FHSUQsZUFISkQ7SUFBQSxXQUFBRTtHQWdEcUU7WUFJbkVDLGNBQWM3RSxHQUFHZ0I7SUFDbkIsT0FBQSxtQ0FEZ0JoQixHQUFHZ0I7R0FDaUQ7WUFHbEU4RCxrQkFBa0I5RSxHQUFHZ0IsY0FBYytEO0lBQ3JDLE9BQUEsbUNBRG9CL0UsR0FBR2dCLGNBQWMrRDtHQUM2QztZQUdoRkMsMEJBQTBCaEYsR0FBR2dCO0lBQy9CLFdBQUEscUJBRCtCQSxjQTNFN0JnQjtJQTRFRixXQUFBO0lBQXdELFdBQUEsbUNBRDVCaEM7SUFDNEIsT0FBQSxxQkFEekJnQjtHQUMrQztZQUc1RWlFLHVCQUF1QmpGLEdBQUVrRjtJQUMzQjtLQUFJQyxpQkF2TEFuRSxhQXNMdUJrRTtLQUV2QkgsU0FkRkYsY0FZdUI3RSxHQUNyQm1GO0tBRUosT0F0R0l0RCxRQXFHQWtEO0lBQ0osV0FBQTtJQUVLO0tBQUEsT0E1TEQ1RCxnQkF1THVCK0Q7S0FJeEIsT0F0R0NqRSxTQW9HQThELFVBMVBGMUU7SUE2UEcsT0FBQTtHQUErQjtZQUdsQytFLGlCQUFpQnBGLEdBQUVrRjtJQUNyQixXQWJFRiwwQkFZaUJoRixHQTlMZmdCLGFBOExpQmtFO0lBQ3JCLGNBVEVELHVCQVFpQmpGLEdBQUVrRjtHQUtjO1lBR2pDRyxjQUFjckYsR0FBR2tGLFNBQVUsT0FsTGYscUJBa0xLQSxTQUErQjtZQUVoREksc0JBQXNCdEYsR0FBR2dCO0lBQzNCO0tBQUl1RSxhQXhDRmhDLFNBdUNzQnZEO0tBRXhCLE9BeEJFZ0YsMEJBc0JzQmhGLEdBQUdnQjtJQUUzQixXQUFBOzs7O1NBRjJCQSxzQkEvRHZCa0Msd0JBZ0VBcUM7O0dBSThDO1lBR2hEQyxrQkFBa0JDLEtBQUUzRDtJQUN0QjtLQTFMRTtNQUNVLElBQUo5QixJQUFJLHVCQXdMVThCO01BdkxmLEdBREM5QjtXQUFBMEYsTUFBQTFGOztPQUtzQztRQUFBLE9BeEcxQ0UsT0EwRUFpQixnQkF5QkluQjtRQUlFMkYsZUFuQ041RSxPQU9BQyxhQXdCSWhCO1FBQUE0RjtVQUFBNUYsTUFJRTJGO2FBSkYzRjthQVNHO2NBclBYakI7Ozs7Y0FnUFU0Rzt1QkFLZ0VFO2UsT0FsRHRFbkYsNEIsY0FrRHNFbUY7O1FBVGxFSCxNQUFBRTtVQTBMRlYsVUExTEVROztXQVdKSTs7T0FBQUMsMEJBQUFEO09BK0tFWjs7V0F0YU5uRzs7OztlQW9hc0IrQyxJQTdLbEJpRTs7O2FBS2FDO2FBQUFDO2FBQUFDLG1DQUFBRDthQUFBRSxpQ0FBQUg7MkJBQUFFLGNBQUFDOzs7YUEwS1hqQjtNQUdpQixJQUFmQyxpQkFyTkpuRSxhQWtORWtFO2FBVkpJLHNCQVFrQkcsS0FLWk47T0FFQztTQTNhVHBHOzs7O1NBeWFRb0c7O2FBL0JORix1QkEwQmtCUSxLQUVkUDtPQU02Qzs7S0FDakQsT0FQSUE7O1VBU0phO1NBQUFELDRCQUFBQzs7Y0EvYUZoSDs7OztrQkFvYXNCK0MsSUFBRjJELEtBV2xCSzs7O2dCQUthTTtnQkFBQUM7Z0JBQUFDO2dCQUFBQywrQkFBQUQ7Z0JBQUFFLFdBMURiL0MsNEIsY0EwRGE0QztnQkFBQUksaUNBQUFMOzhCQUFBRyxjQUFBQyxjQUFBQzs7O0dBQXlCO1lBR3RDQyxZQUFVQyxhQUFhM0c7SUFDekI7S0FDaUI7TUF6RmF1RixhQXFCNUJoQyxTQWtFdUJ2RDtNQUduQjRHO2lCQUFNQyxHQUFFQztTQUFRLE9BQUUsV0FBWkQsR0FBWSwwQkFBVkMsT0ExRmdCdkI7UUEwRm9COzs7U0E2QnJDO1VBRUY7V0FES3JEO1dBQ0wsT0F6SG1CcUQ7V0F5SFgsT0FBQSxtQ0FESHJEO1VBQ0UsR0FBQTtVQUFQLE1BQUE7O1NBRUEsV0EzSG1CcUQsdUJBMkhuQjs7Y0FBQWxDOztXQUNxQjtZQUFmckMsZUF4SGJvQywwQkFKMEJtQyxZQTJIbkJsQztZQUVNMEIsU0EvRmZGLGNBeUR1QjdFLEdBcUNSZ0I7V0FFRCxHQTFMWlksUUF5TGFtRDtZQUdlO2FBQWJnQyxhQXhIZnpELDhCQVIwQmlDLFlBMkhuQmxDO29CQTNIbUJrQzthQWdJRTs7aUJBQ2pCakU7Ozs7Z0JBQ3FCLG1DQTNDWHRCLEdBeUNOK0csYUFDSnpGOztlQUNFLE1BQUE7Y0FERixXQUFBQTswQkFBQUE7a0JBQUFBOzs7O1dBTkosV0FBQStCO3VCQUFBQTtlQUFBQTs7OztRQVNLOztpQkE3QkVqQjtTQUNUO1VBQUk0RSxPQUFPLDJCQXhHVXpCO1VBeUdqQnBELFFBRktDOztVQUdDLEdBMUtmVCxVQXlLU1E7Y0FJRW5CLGVBSkZtQjtVQUdLLEtBeEtkUCxRQXlLV1o7V0FESixNQUFBO1VBRU8sS0FsRGhCc0Usc0JBMkJ1QnRGLEdBc0JWZ0I7V0FDSixNQUFBOztXQUNJcUM7O2VBRkFyQyxzQkFoSFhrQyx3QkFHMEJxQztVQWdIaEIsb0JBUkR5QixNQU9FM0QsZUFBQUE7V0FHRjthQWxkYnRFLDJDQStjZXNFO1VBSUosaUJBWEUyRCxNQU9FM0QsZUFBQUE7VUFORmxCLE9BM0VYMEMsY0F5RHVCN0UsR0FzQlZnQjs7UUFRRjs7aUJBbkJLeUI7U0FDVCxLQUFPLHFCQURFQTtVQUNULE1BQUE7U0FDTyxHQUFBLHFCQUZFQSxRQWxHWThDO1NBb0dyQixNQUFBO1FBQW9DOztpQkFOM0I1QztTQUNULEtBQU8scUJBREVBO1VBQ1QsTUFBQTtTQUNpQztVQUFBLE9BbEd0Q1EsYUFFMEJvQztVQWdHYixPQUFBLG1DQVRRdkY7U0FTVCxHQUFBO1NBQVAsTUFBQTtRQUFnRTtLQU5uRTRHO2dCQUUyQjFQO1FBQW1CLEdBQU8scUJBQTFCQTtRQUFtQixNQUFBO09BQTRCO09BL0c1RStMO0tBNkdFMkQsWUE1R0Y1RDtLQTRHRTRELFlBM0dNN0Q7S0EyR042RCxNQXhURjdHLFdBOE1RK0M7S0EwR044RCxZQXpHTS9EO2dCQXlHTitELFlBakdGaEU7S0FrR0Y7O1VBMkNBa0Q7U0FBQUMsMEJBQUFEOztjQXRlRi9HOzs7O2tCQXNlRWdILEtBL0N1Qi9GOzs7Z0JBZ0Q2Q2lIO2dCQUFBQztnQkFBQUMsaUNBQUFEO2dCQUFBRSxXQTdHcEUzRCw0QixjQTZHb0V3RDs4QkFBQUUsY0FBQUM7OztHQUFVO1lBRzlFQyxXQUFTckgsR0FBSSxPQXJIYnVELFNBcUhTdkQsTUFBeUI7WUFDbENzSCxRQUFRdEg7SUFBcUIsSUEvSG5CMEYsTUFTVm5DLFNBc0hRdkQ7Z0NBL0hFMEYsUUFBQUE7R0ErSCtCO1lBRXpDNkIsd0JBQXdCdkgsR0FBRXVELFVBQVV2QztJQTNHcEM4RCxrQkEyR3dCOUUsR0FBWWdCLGNBQVZ1QztJQUFBQSxjQUFVdkM7O0dBRWlDO1lBR3JFd0csYUFBMkJ4SCxHQUFhdUQ7SUFDMUMsT0FBQSxtQ0FENkJ2RCxHQXhMM0IrQixnQkF3THdDd0I7R0FDaUM7WUFHekVrRSxhQUEyQmxFO0lBQzdCO0tBQTRDLE9Bekp4Q0osYUF3SnlCSTtLQUN6QnZELElBQUk7SUFMTndILGFBS0V4SCxHQUR5QnVEO0lBRTdCLE9BREl2RDtHQUVIO1lBTUMwSCxrQkFBa0IxSCxHQUFFdUQsVUFBVW9FLElBQUlDO0lBQ3BDLFlBRHNCckU7O0tBSW5CLElBREtyQixrQkFDTCxPQUppQzBGO2dCQUFKRDtVQUk3QkUsY0FKNkJGOztPQVNoQjtlQVRNcEU7UUFTTixPQWhLWkQsOEJBdUprQkMsVUFJbkJzRTtPQUNFLG1DQUZHM0YsVUFIWWxDO09BS2YsV0FERjZIO21CQUFBQTtXQUFBQTs7OztJQVFILFdBWm9DRDtlQUFKRDtTQVloQ3RFOztNQTlCRWtFO1FBa0JrQnZILEdBQUV1RCxVQTNKbEJILDBCQTJKa0JHLFVBWXRCRjtNQUNFLFdBREZBO1NBWmdDc0UsT0FZaEN0RTtVQUFBQTs7OztHQUtJO1lBR0Z5RSxrQkFBa0JDLE9BQU9wRixVQUFVVDtJQUNyQyxHQUFHLHFCQUR3QlM7S0FHekI7T0F0aEJGNUQ7Ozs7T0FtaEIyQjREOztJQUlMO0tBQWxCekwsa0JBQWtCLHdDQUpGNlE7S0FLaEJDLGlCQTNORi9GLGFBME5FL0s7SUFFRCxHQUFBLHFCQU53QnlMLFVBS3ZCcUY7S0FHRjtPQTNoQkZqSjs7OztXQW1oQjJCNEQsdUJBS3ZCcUY7OztTQU9XQztTQUFBQztTQUFBQyxpQ0FBQUQ7U0FBTUUsUUFBTkg7U0FBQUksbURBQU1EO3VCQUFORCxjQUFBRTs7SUFFYjtLQURFOUUsZUFUQXJNLGlCQUp1QnlMLGFBOVl2QjFDLE1BMEpBeUIsUUFvUGlDUTtLQXNCakNsQyxJQW5ERnlILGFBMENFbEU7SUFqQ0ZtRSxrQkEwQ0UxSCxHQVRBdUQsYUFidUJaO0lBdUIzQixPQURJM0M7R0FFSDtZQUdDc0ksU0FBcUJQLE9BQTZCcEYsVUFBVVQ7SUFDOUQ7S0FDSyxPQUFBLHdDQUZrQjZGO0tBQ25CbkY7T0FDQztVQUNFLG1DQUh1RFY7VUFBQUE7SUFNckIsT0FqQ3ZDNEYsa0JBMkJxQkMsT0FBNkJwRixjQUNoREM7R0FLaUQ7WUFzQzVDMkYsS0FBTXZGLFlBQVNoRDtJQUN4QjtLQVFFLFVBOU9BdUQsU0FxT3NCdkQ7S0FFUHdJO0tBRFh0UjtLQUVBdUw7S0FDQUY7S0FFQUs7T0FOU0k7U0F2a0JSTCxXQXVrQlFLO0tBdGtCVixHQUFBLHFCQURFTCxVQXlrQlU2RjtNQXRrQmI7UUF0Qkp6Sjs7Ozs2QkFtQk80RCwwQkF5a0JVNkY7OztVQWxrQkFDO1VBQUFDO1VBQUFDLFFBQUFEO1VBQUFFLGtEQUFBRDtVQUF1QkUsUUFBdkJKO1VBQUFLLGtEQUF1QkQ7d0JBQXZCRCxjQUFBRTs7Z0JBUFZuRzs7O0tBRE07YUFBQSxxQkEwa0JJNkYsdUJBQUFBO0lBVVg7S0FBQSxPQXpTSnZHLGFBOFJJL0s7S0FVRm1RLGFBQ0Y7SUFFQyxHQUFBLHFCQUhDQSxZQVRhbUI7S0FjZjtPQTFtQkZ6Sjs7OztPQXFtQklzSTs7SUFXRjtLQURFMEI7V0FwQkU3UixpQkFVRm1RLFlBUkU1RSxRQUNBRixTQS9URmIsUUFpVUVrQjtLQXdCRjhDLE1BbElGK0IsYUF5SEVzQjtxQkFuQmFQLGNBL1BidEYsd0JBa1JBNkY7SUFVSjs7TUEvQndCL0k7TUEvUnRCZ0M7TUE2VEUwRDtNQTdURjFEOztJQThQYSxJQUFYdUQsYUFwTUZoQyxTQXFPc0J2RCxJQTVCeEIsUUFMSXVGOztTQVVJckQseUJBVkpxRDs7VUFXRGxDOztPQUNxQixJQUFmckMsZUFqT0xvQywwQkFxTkFtQyxZQVdEbEM7T0FsTUR5QixrQkF3TnNCOUUsR0FyQmZnQixjQXRTTFU7T0F3U0M7O1NBSkdROztTQXVCZ0JsQztTQXJCZmdCO1NBWkx1RTtPQVdELFdBQUFsQzttQkFBQUE7V0FBQUE7Ozs7O0tBSmlDLFdBQUEsbUNBMEJackQ7O1VBMUJyQkcsSUFyUUQ2Qjs7T0FzUUcsbUNBeUJtQmhDLEdBMUJyQkc7T0FDRSxXQURGQTttQkFBQUE7V0FBQUE7Ozs7SUFlRDtLQURFNkk7V0FyQkF6RCxxQkFBQUEsZUExUkE3RCxRQTBSQTZEO0lBdkVGaUMsYUF3R3NCeEgsR0FacEJnSjtJQS9FRnRCLGtCQXlIRWhDLEtBVEFxRCxZQW5CYVAsY0FTYm5CO0lBMkJKLFdBcENpQm1COztTQXFDakJYOztNQUNxQjtPQUFmMUMsaUJBOVJGL0IsMEJBMlFBMkYsWUFrQkpsQjtPQUVNOUMsU0FyUUpGLGNBMFBFYSxLQVVFUDthQTNWRnRELFFBNFZFa0Q7T0F0Skp3Qyx3QkEySUU3QixLQVRBcUQsWUFtQkU1RDtNQUZOLFdBQ0EwQztlQUFBQTtVQUFBQTs7O0lBTUEsT0FmSW5DO0dBZUY7WUFPQXVELE9BQXFCako7SUFDdkIsSUFBSXVGLGFBMVJGaEMsU0F5UnFCdkQsSUFJbkJnQixlQUhBdUU7SUFFRCxHQWpYQzVELFVBa1hBWDs7T0FscEJKakM7Ozs7T0E4b0J1QmlCO2dCQUh5Q2tKO1EsT0FqUjlEekYsNEIsZUFpUjhEeUY7O0lBSTVEM0QsZ0JBalJGVixjQWdScUI3RSxHQUluQmdCO0lBSEF1RSxnQkFBQUE7UUF6Z0JLdEUsV0F5Z0JMc0U7SUE3UUZULGtCQTRRcUI5RSxHQUluQmdCLG1CQTVnQktDOzs7T0FwSVRqQztVQW9JU2lDO1VBQXlDLHFCQUF6Q0EsVUFoSVAvQixpQkFnSU8rQjtJQXlnQkxzRTtJQVNKLE9BM2NJeEUsT0FxY0FDLGNBNWdCS0M7R0FraEI0QjtZQUduQ2tJLFlBQTBCbkosR0FBY2tGO0lBQzNCLElBQVhLLGFBdlNGaEMsU0FzUzBCdkQ7SUFDeEJ1RixnQkFBQUE7SUEvS0ZnQyx3QkE4SzBCdkgsR0FDeEJ1RixZQXhjQXZFLGFBdWNzQ2tFO2dCQUN0Q0s7O0tBVUY7TUFES3JEO01BQ0wsT0FWRXFEO01BZVMsT0E1Y1RoRSxpQkE0YnNDMkQ7S0FXeEMsT0FBQSxtQ0FES2hELFVBVnFCbEM7O0lBTWhCO0tBQU5vSixNQWxjRjdILGlCQTRic0MyRDtZQUN0Q0s7S0FLUTs7U0FDVnBGOztNQUNFLG1DQVJ3QkgsR0FNdEJvSixNQUNKako7TUFDRSxXQURGQTtrQkFBQUE7VUFBQUE7Ozs7R0FTNkM7WUFHN0M2RyxLQUFtQmhILEdBQWNrRjtJQUtuQyxPQWpTRUUsaUJBNFJtQnBGLEdBQWNrRjtLQU9qQztPQXJyQkZuRzs7OztXQThxQm1DbUcsU0FBZGxGOzs7U0FXTnFKO1NBQUFDO1NBQUFDLFdBdGZYN0ksNEIsZUFzZlc0STtTQUFBRSxXQS9UYi9GLDRCLGVBK1RhNEY7dUJBQUFFLGNBQUFDOztJQUpiLE9BMUJBTCxZQW1CbUJuSixHQUFja0Y7R0FZZDtZQUduQnVFLEtBQUt6SixHQUFFMEo7SUFDVCxJQUFJeEUsVUFoREYrRCxPQStDS2pKLElBRUgySixTQTNlQTNJLGFBMGVBa0U7SUFFSixtQ0FIT2xGLEdBRUgySixnQkFGS0Q7SUFHVCxPQUZJeEU7R0FHRztZQUdMMEUsS0FBSzVKLEdBQUUwSixJQUFHRztJQUNaLElBQUkzRSxVQXZERitELE9Bc0RLakosSUFFSDJKLFNBbGZBM0ksYUFpZkFrRTtJQUVKLG1DQUhPbEYsR0FFSDJKLGdCQUZLRDtJQUlULG1DQUpPMUosR0FFSDJKLGdCQUZRRTtJQUlaLE9BSEkzRTtHQUlHO1lBR0w0RSxLQUFLOUosR0FBRTBKLElBQUdHLElBQUdFO0lBQ2YsSUFBSTdFLFVBL0RGK0QsT0E4REtqSixJQUVIMkosU0ExZkEzSSxhQXlmQWtFO0lBRUosbUNBSE9sRixHQUVIMkosZ0JBRktEO0lBSVQsbUNBSk8xSixHQUVIMkosZ0JBRlFFO0lBS1osbUNBTE83SixHQUVIMkosZ0JBRldJO0lBS2YsT0FKSTdFO0dBS0c7WUFHTDhFLEtBQUtoSyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0U7SUFDbEIsSUFBSS9FLFVBeEVGK0QsT0F1RUtqSixJQUVIMkosU0FuZ0JBM0ksYUFrZ0JBa0U7SUFFSixtQ0FIT2xGLEdBRUgySixnQkFGS0Q7SUFJVCxtQ0FKTzFKLEdBRUgySixnQkFGUUU7SUFLWixtQ0FMTzdKLEdBRUgySixnQkFGV0k7SUFNZixtQ0FOTy9KLEdBRUgySixnQkFGY007SUFNbEIsT0FMSS9FO0dBTUc7WUFHTGdGLEtBQUtsSyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0U7SUFDckIsSUFBSWpGLFVBbEZGK0QsT0FpRktqSixJQUVIMkosU0E3Z0JBM0ksYUE0Z0JBa0U7SUFFSixtQ0FIT2xGLEdBRUgySixnQkFGS0Q7SUFJVCxtQ0FKTzFKLEdBRUgySixnQkFGUUU7SUFLWixtQ0FMTzdKLEdBRUgySixnQkFGV0k7SUFNZixtQ0FOTy9KLEdBRUgySixnQkFGY007SUFPbEIsbUNBUE9qSyxHQUVIMkosZ0JBRmlCUTtJQU9yQixPQU5JakY7R0FPRztZQUdMa0YsS0FBS3BLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUN4QixJQUFJbkYsVUE3RkYrRCxPQTRGS2pKLElBRUgySixTQXhoQkEzSSxhQXVoQkFrRTtJQUVKLG1DQUhPbEYsR0FFSDJKLGdCQUZLRDtJQUlULG1DQUpPMUosR0FFSDJKLGdCQUZRRTtJQUtaLG1DQUxPN0osR0FFSDJKLGdCQUZXSTtJQU1mLG1DQU5PL0osR0FFSDJKLGdCQUZjTTtJQU9sQixtQ0FQT2pLLEdBRUgySixnQkFGaUJRO0lBUXJCLG1DQVJPbkssR0FFSDJKLGdCQUZvQlU7SUFReEIsT0FQSW5GO0dBUUc7WUFHTG9GLEtBQUt0SyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7SUFDM0IsSUFBSXJGLFVBekdGK0QsT0F3R0tqSixJQUVIMkosU0FwaUJBM0ksYUFtaUJBa0U7SUFFSixtQ0FIT2xGLEdBRUgySixnQkFGS0Q7SUFJVCxtQ0FKTzFKLEdBRUgySixnQkFGUUU7SUFLWixtQ0FMTzdKLEdBRUgySixnQkFGV0k7SUFNZixtQ0FOTy9KLEdBRUgySixnQkFGY007SUFPbEIsbUNBUE9qSyxHQUVIMkosZ0JBRmlCUTtJQVFyQixtQ0FST25LLEdBRUgySixnQkFGb0JVO0lBU3hCLG1DQVRPckssR0FFSDJKLGdCQUZ1Qlk7SUFTM0IsT0FSSXJGO0dBU0c7WUFHTHNGLEtBQUt4SyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7SUFDOUIsSUFBSXZGLFVBdEhGK0QsT0FxSEtqSixJQUVIMkosU0FqakJBM0ksYUFnakJBa0U7SUFFSixtQ0FIT2xGLEdBRUgySixnQkFGS0Q7SUFJVCxtQ0FKTzFKLEdBRUgySixnQkFGUUU7SUFLWixtQ0FMTzdKLEdBRUgySixnQkFGV0k7SUFNZixtQ0FOTy9KLEdBRUgySixnQkFGY007SUFPbEIsbUNBUE9qSyxHQUVIMkosZ0JBRmlCUTtJQVFyQixtQ0FST25LLEdBRUgySixnQkFGb0JVO0lBU3hCLG1DQVRPckssR0FFSDJKLGdCQUZ1Qlk7SUFVM0IsbUNBVk92SyxHQUVIMkosZ0JBRjBCYztJQVU5QixPQVRJdkY7R0FVRztZQUdMd0YsS0FBSzFLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUNqQyxJQUFJekYsVUFwSUYrRCxPQW1JS2pKLElBRUgySixTQS9qQkEzSSxhQThqQkFrRTtJQUVKLG1DQUhPbEYsR0FFSDJKLGdCQUZLRDtJQUlULG1DQUpPMUosR0FFSDJKLGdCQUZRRTtJQUtaLG1DQUxPN0osR0FFSDJKLGdCQUZXSTtJQU1mLG1DQU5PL0osR0FFSDJKLGdCQUZjTTtJQU9sQixtQ0FQT2pLLEdBRUgySixnQkFGaUJRO0lBUXJCLG1DQVJPbkssR0FFSDJKLGdCQUZvQlU7SUFTeEIsbUNBVE9ySyxHQUVIMkosZ0JBRnVCWTtJQVUzQixtQ0FWT3ZLLEdBRUgySixnQkFGMEJjO0lBVzlCLG1DQVhPekssR0FFSDJKLGdCQUY2QmdCO0lBV2pDLE9BVkl6RjtHQVdHO1lBR0wwRixNQUFNNUssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0lBQ3JDLElBQUkzRixVQW5KRitELE9Ba0pNakosSUFFSjJKLFNBOWtCQTNJLGFBNmtCQWtFO0lBRUosbUNBSFFsRixHQUVKMkosZ0JBRk1EO0lBSVYsbUNBSlExSixHQUVKMkosZ0JBRlNFO0lBS2IsbUNBTFE3SixHQUVKMkosZ0JBRllJO0lBTWhCLG1DQU5RL0osR0FFSjJKLGdCQUZlTTtJQU9uQixtQ0FQUWpLLEdBRUoySixnQkFGa0JRO0lBUXRCLG1DQVJRbkssR0FFSjJKLGdCQUZxQlU7SUFTekIsbUNBVFFySyxHQUVKMkosZ0JBRndCWTtJQVU1QixtQ0FWUXZLLEdBRUoySixnQkFGMkJjO0lBVy9CLG1DQVhRekssR0FFSjJKLGdCQUY4QmdCO0lBWWxDLG1DQVpRM0ssR0FFSjJKLGlCQUZpQ2tCO0lBWXJDLE9BWEkzRjtHQVlHO1lBR0w0RixNQUFNOUssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0lBQ3hDLElBQUk3RixVQW5LRitELE9Ba0tNakosSUFFSjJKLFNBOWxCQTNJLGFBNmxCQWtFO0lBRUosbUNBSFFsRixHQUVKMkosZ0JBRk1EO0lBSVYsbUNBSlExSixHQUVKMkosZ0JBRlNFO0lBS2IsbUNBTFE3SixHQUVKMkosZ0JBRllJO0lBTWhCLG1DQU5RL0osR0FFSjJKLGdCQUZlTTtJQU9uQixtQ0FQUWpLLEdBRUoySixnQkFGa0JRO0lBUXRCLG1DQVJRbkssR0FFSjJKLGdCQUZxQlU7SUFTekIsbUNBVFFySyxHQUVKMkosZ0JBRndCWTtJQVU1QixtQ0FWUXZLLEdBRUoySixnQkFGMkJjO0lBVy9CLG1DQVhRekssR0FFSjJKLGdCQUY4QmdCO0lBWWxDLG1DQVpRM0ssR0FFSjJKLGlCQUZpQ2tCO0lBYXJDLG1DQWJRN0ssR0FFSjJKLGlCQUZvQ29CO0lBYXhDLE9BWkk3RjtHQWFHO1lBR0w4RixNQUFNaEwsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLEtBQUlFO0lBQzVDLElBQUkvRixVQXBMRitELE9BbUxNakosSUFFSjJKLFNBL21CQTNJLGFBOG1CQWtFO0lBRUosbUNBSFFsRixHQUVKMkosZ0JBRk1EO0lBSVYsbUNBSlExSixHQUVKMkosZ0JBRlNFO0lBS2IsbUNBTFE3SixHQUVKMkosZ0JBRllJO0lBTWhCLG1DQU5RL0osR0FFSjJKLGdCQUZlTTtJQU9uQixtQ0FQUWpLLEdBRUoySixnQkFGa0JRO0lBUXRCLG1DQVJRbkssR0FFSjJKLGdCQUZxQlU7SUFTekIsbUNBVFFySyxHQUVKMkosZ0JBRndCWTtJQVU1QixtQ0FWUXZLLEdBRUoySixnQkFGMkJjO0lBVy9CLG1DQVhRekssR0FFSjJKLGdCQUY4QmdCO0lBWWxDLG1DQVpRM0ssR0FFSjJKLGlCQUZpQ2tCO0lBYXJDLG1DQWJRN0ssR0FFSjJKLGlCQUZvQ29CO0lBY3hDLG1DQWRRL0ssR0FFSjJKLGlCQUZ3Q3NCO0lBYzVDLE9BYkkvRjtHQWNHO1lBR0xnRyxNQUFNbEwsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLEtBQUlFLEtBQUlFO0lBQ2hELElBQUlqRyxVQXRNRitELE9BcU1NakosSUFFSjJKLFNBam9CQTNJLGFBZ29CQWtFO0lBRUosbUNBSFFsRixHQUVKMkosZ0JBRk1EO0lBSVYsbUNBSlExSixHQUVKMkosZ0JBRlNFO0lBS2IsbUNBTFE3SixHQUVKMkosZ0JBRllJO0lBTWhCLG1DQU5RL0osR0FFSjJKLGdCQUZlTTtJQU9uQixtQ0FQUWpLLEdBRUoySixnQkFGa0JRO0lBUXRCLG1DQVJRbkssR0FFSjJKLGdCQUZxQlU7SUFTekIsbUNBVFFySyxHQUVKMkosZ0JBRndCWTtJQVU1QixtQ0FWUXZLLEdBRUoySixnQkFGMkJjO0lBVy9CLG1DQVhRekssR0FFSjJKLGdCQUY4QmdCO0lBWWxDLG1DQVpRM0ssR0FFSjJKLGlCQUZpQ2tCO0lBYXJDLG1DQWJRN0ssR0FFSjJKLGlCQUZvQ29CO0lBY3hDLG1DQWRRL0ssR0FFSjJKLGlCQUZ3Q3NCO0lBZTVDLG1DQWZRakwsR0FFSjJKLGlCQUY0Q3dCO0lBZWhELE9BZElqRztHQWVHO1lBR0xrRztJQUFNcEwsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLEtBQUlFLEtBQUlFLEtBQUlFO0lBQ3BELElBQUluRyxVQXpORitELE9Bd05NakosSUFFSjJKLFNBcHBCQTNJLGFBbXBCQWtFO0lBRUosbUNBSFFsRixHQUVKMkosZ0JBRk1EO0lBSVYsbUNBSlExSixHQUVKMkosZ0JBRlNFO0lBS2IsbUNBTFE3SixHQUVKMkosZ0JBRllJO0lBTWhCLG1DQU5RL0osR0FFSjJKLGdCQUZlTTtJQU9uQixtQ0FQUWpLLEdBRUoySixnQkFGa0JRO0lBUXRCLG1DQVJRbkssR0FFSjJKLGdCQUZxQlU7SUFTekIsbUNBVFFySyxHQUVKMkosZ0JBRndCWTtJQVU1QixtQ0FWUXZLLEdBRUoySixnQkFGMkJjO0lBVy9CLG1DQVhRekssR0FFSjJKLGdCQUY4QmdCO0lBWWxDLG1DQVpRM0ssR0FFSjJKLGlCQUZpQ2tCO0lBYXJDLG1DQWJRN0ssR0FFSjJKLGlCQUZvQ29CO0lBY3hDLG1DQWRRL0ssR0FFSjJKLGlCQUZ3Q3NCO0lBZTVDLG1DQWZRakwsR0FFSjJKLGlCQUY0Q3dCO0lBZ0JoRCxtQ0FoQlFuTCxHQUVKMkosaUJBRmdEMEI7SUFnQnBELE9BZkluRztHQWdCRztZQUdMb0csSUFBSXRMLEdBQUV1TCxHQUFFaks7SUFBb0MsV0E1cEIxQ0QsV0E0cEJJa0ssR0FBRWpLO0lBQW9DLE9BQUEsbUNBQXhDdEI7R0FBb0U7WUFFeEV3TCxXQUFXeEwsR0FBRXVMLEdBQUVqSztJQUNtQixXQS9wQmhDRCxXQThwQldrSyxHQUFFaks7SUFDbUIsT0FBQSxtQ0FEdkJ0QjtHQUNtRDtZQUc5RHlMLElBQUl6TCxHQUFFdUwsR0FBRWpLLE1BQUtvSztJQUF3QixXQWxxQm5DckssV0FrcUJJa0ssR0FBRWpLO0lBQVMsT0FBQSxtQ0FBYnRCLFNBQVMwTDtHQUFnRTtZQUU3RUMsV0FBVzNMLEdBQUV1TCxHQUFFakssTUFBS29LO0lBQ0ssV0FycUJ2QnJLLFdBb3FCV2tLLEdBQUVqSztJQUNqQixPQUFBLG1DQURhdEIsU0FBUzBMO0dBQzZDO1lBR2pFRSxVQUF3QjVMLEdBQTBCa0Y7SUFDcEQsSUFBSUssYUFsaEJGaEMsU0FpaEJ3QnZELElBRXRCNkwsTUFEQXRHO0lBRUQsR0FBQSxxQkFEQ3NHLGdCQWRGUCxJQVl3QnRMLEdBQTBCa0Y7SUFPckIsV0E5cUIzQjNELGlCQXVxQmdEMkQ7SUFNakQsT0FBQSxtQ0FOdUJsRixTQUV0QjZMO0dBT087WUFTVEMsU0FBTy9ELE9BQU9wRjtJQUFXLE9Bcll6Qm1GLGtCQXFZT0MsT0FBT3BGO0dBQXdEOzs7Ozs7O2FBa054RWpNLFVBQUtxVjtLQUFMO01BQ1lDO01BQ1JDO01BQUFDLFVBQUEsdUJBRkNILGNBRURFO01BRkpFLGlDQUVJRDtNQURRRSxVQUFBLHNCQUFBSjtNQURaSyxtQ0FDWUQsZUFEWkQ7S0FBQSxXQUFBRTtJQUk2Qjs7a0VBSjdCMU47S0FBQTJCO2FBQUFDLGFBQUFDO0tBQUEsSUFBQUMsWUFBQSw2QkFBQUQ7S0FBQTs7Y0FBQUM7Ozs7OytCQUFBVCxHQUFBLE9BQUFBLEtBSTZCO2lCQUo3QjtrQkFBQSxPQUFBO2tCQUFBc007b0JBQUE7OztrQkFBQTsrQkFBQXRNLEdBQUEsT0FBQUEsS0FJNkI7aUJBSjdCO2tCQUFBLE9BQUE7a0JBQUE7Ozs0Q0FBQVE7Ozs7O2tCQUFBK0wsU0FBQTtrQkFBQUMsV0FBQSxxQ0FBQS9MO2tCQUFBZ007b0JBQUE7OztrQkFBQUMsaUJBQUFKLGFBQUFDOzBCQUFBeEw7a0JBQUE7bUJBQUF1SzttQkFBQXFCLFdBQUEsV0FBQXJCLEtBQUFnQjttQkFBQXBILFVBQUEsV0FBQW9HLEtBQUFpQjtrQkFBQSxXQUFBSSxVQUFBekg7aUJBSTZCO2lCQUo3Qjt5QkFBQTs7K0JBQUFzSCxVQUFBRSxRQUFBRCxzQkFBQTFMOztJQUk2QjthQUV6QkEsT0FBT21FLFNBQVUsY0FBVkEsU0FBc0M7YUFDN0NyRSxjQUFVLGNBQThCLDJCQUFpQjthQUN6REQsYUFBYWhMLElBQUdDO0tBQUssOEJBQVJELE9BQUdDO0lBQStDO2FBQy9EOEssV0FBVy9LLElBQUdDLElBQUssOEJBQVJELE9BQUdDLE9BQTZDO2FBQzNEaUwsUUFBUWQsR0FBSSw4QkFBSkEsTUFBNkI7YUFFckM0TSxPQUFPNU07S0FDVCxPQURTQTtNQUVKO1FBeG5DUGpCOzs7O1FBc25DV2lCO2lCQUVrRTZNO1MsT0FkN0VuVywwQixlQWM2RW1XOztZQUZsRTdNO0lBR0E7YUFHUDhNLFdBQVc5TSxHQUFBQSxtQkFBdUI7OztLQUt4Q2pKO0tBRUlnSjtLQUNBMEM7YUFFQTJDLGlCQUFpQnBGO1NBQUkyTSxxQkFBa0J6SDtLQUN6QyxPQUR1QnlILCtCQUFKM00sR0FBc0JrRixXQUFsQnlIOzthQU1yQnRILGNBQWNyRixHQUFFa0Y7S0FBVSwyQkFBWmxGLEdBQUVrRjtJQUFpRDthQUVqRU0sa0JBQWtCeEYsR0FBRThCO0tBQ3RCO01BQUlvRCxVQUFVLG9CQURNbEYsR0FBRThCO01BRWxCNkssV0FBVyxvQkFGSzNNLEdBQ2hCa0Y7S0FFSixXQURJeUgsVUFEQXpIO0lBRXlCOztLQUczQm9EO0tBQ0EzRjtLQUNBVjtLQUNBc0c7S0FDQWpCO2FBQ0FzRSxVQUFVNUwsR0FBRXVMO0tBQWdCLFdBbkMxQnFCLE9BbUNVckI7S0FBZ0IsT0FBQSxxQkFBbEJ2TDtJQUFvQzthQUM5Q3NMLElBQUl0TCxHQUFFdUw7S0FBVSxXQXBDZHFCLE9Bb0NJckI7S0FBVSxPQUFBLHFCQUFadkw7SUFBOEI7YUFDbEN3TCxXQUFXeEwsR0FBRXVMO0tBQWlCLFdBckM1QnFCLE9BcUNXckI7S0FBaUIsT0FBQSxxQkFBbkJ2TDtJQUFxQzthQUNoRHlMLElBQUl6TCxHQUFFdUwsR0FBRWpLLE1BQUtnQjtLQUFVLFdBdENyQnNLLE9Bc0NJckI7S0FBVyxPQUFBLHFCQUFidkwsU0FBSXNCLE1BQUtnQjtJQUFtQzthQUNoRHFKLFdBQVczTCxHQUFFdUwsR0FBRWpLLE1BQUtnQjtLQUFpQixXQXZDbkNzSyxPQXVDV3JCO0tBQVcsT0FBQSxxQkFBYnZMLFNBQUlzQixNQUFLZ0I7SUFBMEM7YUFFOUQ2RyxZQUFZbkosR0FBRXVMO0tBQ0YsV0ExQ1ZxQixPQXlDWXJCO0tBQ2hCLHFCQURjdkw7S0FDZCxPQXBDSThNLFdBbUNZdkI7SUFFSTthQUdsQnZFLEtBQUtoSCxHQUFFdUw7S0FDRixXQS9DSHFCLE9BOENLckI7S0FDVCxxQkFET3ZMO0tBQ1AsT0F6Q0k4TSxXQXdDS3ZCO0lBRVc7YUFHbEI5QixLQUFLekosR0FBRTBKLElBQUssT0F6RFYzSSxPQXlEeUIscUJBQXRCZixHQUFFMEosS0FBb0M7YUFDM0NFLEtBQUs1SixHQUFFMEosSUFBR0csSUFBSyxPQTFEYjlJLE9BMEQ0QixxQkFBekJmLEdBQUUwSixJQUFHRyxLQUF1QzthQUNqREMsS0FBSzlKLEdBQUUwSixJQUFHRyxJQUFHRTtLQUFLLE9BM0RoQmhKLE9BMkQrQixxQkFBNUJmLEdBQUUwSixJQUFHRyxJQUFHRTtJQUEwQzthQUN2REMsS0FBS2hLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRTtLQUFLLE9BNURuQmxKLE9BNERrQyxxQkFBL0JmLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRTtJQUE2QzthQUM3REMsS0FBS2xLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRTtLQUFLLE9BN0R0QnBKLE9BNkRxQyxxQkFBbENmLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRTtJQUFnRDthQUNuRUMsS0FBS3BLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUFLLE9BOUR6QnRKLE9BOER3QyxxQkFBckNmLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUFtRDthQUN6RUMsS0FBS3RLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUFLLE9BL0Q1QnhKLE9BK0QyQyxxQkFBeENmLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUFzRDthQUUvRUMsS0FBS3hLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUM5QixPQWxFSTFKLE9Ba0VXLHFCQURSZixHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7SUFDc0I7YUFHbERDLEtBQUsxSyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7S0FDakMsT0F0RUk1SjtjQXNFVyxzQkFEUmYsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0lBQ3NCO2FBR3JEQyxNQUFNNUssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0tBQ3JDLE9BMUVJOUo7Y0EwRVcsc0JBRFBmLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUNzQjthQUd6REMsTUFBTTlLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUN6QixPQTlFWGhLO2NBOEVXOzBCQURQZixHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7O2FBSXRDQyxNQUFNaEwsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLEtBQUlFO0tBQzdCLE9BbEZYbEs7Y0FrRlc7MEJBRFBmLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxLQUFJRTs7YUFJMUNDLE1BQU1sTCxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsS0FBSUUsS0FBSUU7S0FDakMsT0F0RlhwSztjQXNGVzs7Z0JBRFBmO2dCQUFFMEo7Z0JBQUdHO2dCQUFHRTtnQkFBR0U7Z0JBQUdFO2dCQUFHRTtnQkFBR0U7Z0JBQUdFO2dCQUFHRTtnQkFBR0U7Z0JBQUdFO2dCQUFJRTtnQkFBSUU7O2FBSTlDQztLQUFNcEwsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLEtBQUlFLEtBQUlFLEtBQUlFO0tBQ3JDLE9BMUZYdEs7Y0EwRlc7O2dCQURQZjtnQkFBRTBKO2dCQUFHRztnQkFBR0U7Z0JBQUdFO2dCQUFHRTtnQkFBR0U7Z0JBQUdFO2dCQUFHRTtnQkFBR0U7Z0JBQUdFO2dCQUFHRTtnQkFBSUU7Z0JBQUlFO2dCQUFJRTs7Ozs7O2FBL0ZwRDNVO2FBQUE2SjthQUFBRDthQU9JTzthQUdBQzthQUZBRjthQUNBRDs7WUFjTjVKO1lBRUlnSjtZQUdBcUY7WUFNQUM7WUFFQUc7WUFNQThDO1lBRUFyRztZQURBVTtZQWpCQUY7WUFtQkE4RjtZQUNBakI7WUFZQU47WUFMQW1DO1lBVUFNO1lBQ0FHO1lBQ0FFO1lBQ0FFO1lBQ0FFO1lBQ0FFO1lBQ0FFO1lBRUFFO1lBSUFFO1lBSUFFO1lBSUFFO1lBSUFFO1lBSUFFO1lBSUFFO1lBaERBUTtZQUNBTjtZQUNBRTtZQUNBQztZQUNBRTs7O0lBL1BrQixJQUFsQm9CLDBCQUNBQzthQUVBQyxNQUFNbk8sTUFBS29PLElBQUdDLEtBQUlDLGFBQVlDLGdCQUFleEc7S0FDL0MsR0FKRWtHO01BS3VCLElBQUEsc0IsWUFBZ0IsT0FBQTtNQUFoQix5QkFGWkc7O1FBRlhGO01BS21DLFdBejVCckMzTixXQXU1QklULFlBRElFO01BR2UsZ0NBSFBxTyxLQUFJQzs7S0FJQSxJQUFoQkUsZ0JBQWdCLDRCQUoyQnpHO1FBRjdDbUc7TUFVRTs7a0JBRVdPO1UsbUNBVmlCRiwyQkFVakJFOztPQUZYLE9BOTVCSmxPLFdBdTVCSVQsWUFESUU7TUFPTixnQ0FIRXdPOztLQUdGLE9BQUEsNEJBSEVBO0lBT3VCOzs7O0tBUzNCNVc7a0VBQUFtSTtLQUFBeUI7YUFBQUMsYUFBQUM7S0FBQSxJQUFBQyxZQUFBLDZCQUFBRDtLQUFBOztjQUFBQzs7b0NBQUEsT0FBQSx1QkFBQUQ7SUFBNkQ7YUFFekRJLGFBQWFoTCxJQUFHQzswQkFPTCxPQU5iLHVCQURlRCxJQUFHQyxJQU9hO0tBQTdCO0tBQUEsT0E3QkZvWDs7O2tCQXNCZXJYLElBQUdDOzs7Z0JBS0wyWDtnQkFBQUM7Z0JBQUFDOztvQkFQZmhYLDJCLGVBT2UrVztnQkFBQUU7O29CQVBmalgsMkIsZUFPZThXOzhCQUFBRSxjQUFBQzs7OztJQUVtQjthQUc5QmhOLFdBQVcvSyxJQUFHQzswQkFPSCxPQU5iLHVCQURhRCxJQUFHQyxJQU9hO0tBQTNCO0tBQUEsT0F2Q0ZvWDs7O2tCQWdDYXJYLElBQUdDOzs7Z0JBS0grWDtnQkFBQUM7Z0JBQUFDOztvQkFqQmZwWCwyQixlQWlCZW1YO2dCQUFBRTs7b0JBakJmclgsMkIsZUFpQmVrWDs4QkFBQUUsY0FBQUM7Ozs7SUFFaUI7YUFHNUJqTixRQUFRZDswQkFDK0QsT0FBekUsdUJBRFVBLEdBQ3dFO0tBQXBCO0tBQUEsT0EzQzlEaU47OztjQTBDVWpOO3VCQUM4QmdPO2U7d0JBdkIxQ3RYLDJCLGVBdUIwQ3NYOzs7O0lBQTJDO0lBUW5GO0tBTEVuTjs7S0FLRixlQUFZO0tBQVosT0FBQTtLQUFBb04sUUFBQTtLQUFBLE9BQUE7S0FBWUMsY0FBWixXQUFBLCtCQUFBRDtLQUFBRTtLQUFBQztLQUFBQyxtQkFBQUYsWUFBQUM7S0FBQUU7S0FBQUM7S0FBQUMsbUJBQUFELGNBQUFEO0tBQUFHLFlBQVlQLGFBQVpHLGNBQUFHO0tBQUFFO0tBQUEzWDthQUVJMEssU0FBU3RCOzBCQUVULE9BREYsMkJBRFdBLEdBRUM7S0FEdUQsT0F0RHJFOE07OztjQXFEYTlNOztjQUZicEo7O0lBSWU7YUFHWHlLLFNBQVN4QjswQkFFVCxPQURGLDJCQURXQSxHQUVDO0tBRHVELE9BM0RyRWlOOzs7Y0EwRGFqTjtjQVBiako7OztJQVNlO1FBS25CMkosdUJBRUlYLHFCQUNBMEM7YUFFQTRDLGNBQWNyRixHQUFFa0Y7MEJBT0wsT0FOYixvQkFEZ0JsRixHQUFFa0YsU0FPa0I7S0FBbEMsT0E3RUErSDs7a0JBc0Vjak47Y0FBRWtGO3VCQUtMeUo7ZTt3QkF2RGJqWSwyQixlQXVEYWlZOztjQXhCWDVYOztJQTBCbUM7YUFHbkN5TyxrQkFBa0J4RixHQUFFOEI7MEJBT1QsT0FOYixvQkFEb0I5QixHQUFFOEIsSUFPYTtLQUFqQyxPQXZGQW1MOztrQkFnRmtCak47Y0FBRThCO2NBN0JwQi9LO3VCQW1DVzZYO2U7d0JBbEVibFksMkIsZUFrRWFrWTs7O0lBQ3VCO2FBR2xDeEosaUJBQWlCcEYsR0FBRWtGOzBCQU9SLE9BTmIsb0JBRG1CbEYsR0FBRWtGLFNBT2tCO0tBQXJDO0tBQUEsT0FqR0ErSDs7a0JBMEZpQmpOO2NBQUVrRjt1QkFLUjJKO2U7d0JBM0ViblksMkIsZUEyRWFtWTs7OztJQUUyQjthQUd0QzlOLE9BQU9nSCxPQUFPcEYsVUFBVVQ7MEJBRXhCLE9BREYsb0JBRFM2RixPQUFPcEYsVUFBVVQsT0FFSzttQkFEdUI0TTtNLGtCQXBDeERwTyw2QixlQW9Dd0RvTzs7S0FBSyxPQXJHekQ3QixxQkFvR2N0SztJQUVnQjthQUc5QlYsYUFBYy9LOzBCQUVkLE9BREYscUJBRGdCQSxpQkFFZTtLQUR5QyxPQTFHdEUrVjs7O2NBeUdjL1Y7Ozs7SUFFZ0I7YUFHOUJ5TCxTQUFTM0M7MEJBQ3lELE9BQXBFLHFCQURXQSxHQUNtRTtLQUFyQjtLQUFBLE9BL0d2RGlOOztrQkE4R1NqTjtjQUFBQTt1QkFDeUIrTztlO3dCQTlDdENyTyw2QixlQThDc0NxTzs7OztJQUEyQzthQUc3RXhHLEtBQU01RixVQUFTM0M7MEJBT0osT0FOYixxQkFEUTJDLFVBQVMzQyxHQU9ZO21CQURoQmdQO00sa0JBdkRmdE8sNkIsZUF1RGVzTzs7S0FDWCxPQXpIQS9COztrQkFrSGVqTjsrQkFBVDJDOzttQkFLS3NNOztzRUFBQUE7Ozs7SUFFaUI7YUFHNUIzSCxRQUFRdEg7MEJBQzBELE9BQXBFLHFCQURVQSxHQUNtRTtLQUFwQjtLQUFBLE9BN0h2RGlOOztrQkE0SFFqTjtjQUFBQTt1QkFDeUJrUDtlO3dCQTVEckN4Tyw2QixlQTREcUN3Tzs7OztJQUEyQzthQUc1RS9GLFlBQVluSixHQUFFdUw7MEJBRWQsT0FERixxQkFEY3ZMLEdBQUV1TCxHQUVDO0tBRG9EO0tBQUEsT0FqSW5FMEI7O2tCQWdJWWpOO2NBQUV1TDt1QkFDdUI0RDtlO3dCQTdHdkN6WSwyQixlQTZHdUN5WTs7OztJQUNyQjthQUdoQm5JLEtBQUtoSCxHQUFFdUw7MEJBQ2dFLE9BQXpFLHFCQURPdkwsR0FBRXVMLEdBQ3dFO0tBQW5CO0tBQUEsT0F0STVEMEI7O2tCQXFJS2pOO2NBQUV1TDt1QkFDdUI2RDtlO3dCQWxIaEMxWSwyQixlQWtIZ0MwWTs7OztJQUFrRDthQUdoRkMsVUFBVXJQLEdBQUU2RzttQkFBcUR5STtNLGtCQXJIbkU1WSwyQixlQXFIbUU0WTs7S0FBakQsT0F6SWhCckMsbUJBeUlVak4sMkJBQUU2RztJQUFtRTthQUMvRTRDLEtBQUt6SixHQUFFMEo7S0FBSyxPQURaMkYsVUFDS3JQLG1CQUE4QixPQUF2QixxQkFBUEEsR0FBRTBKLElBQXFDO0lBQUM7YUFDN0NFLEtBQUs1SixHQUFFMEosSUFBR0c7S0FBSyxPQUZmd0Y7Y0FFS3JQLG1CQUFpQyxPQUF2QixxQkFBVkEsR0FBRTBKLElBQUdHLElBQXdDO0lBQUM7YUFDbkRDLEtBQUs5SixHQUFFMEosSUFBR0csSUFBR0U7S0FBSyxPQUhsQnNGO2NBR0tyUCxtQkFBb0MsT0FBdkIscUJBQWJBLEdBQUUwSixJQUFHRyxJQUFHRSxJQUEyQztJQUFDO2FBQ3pEQyxLQUFLaEssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFO0tBQUssT0FKckJvRjtjQUlLclA7OEJBQXVDLE9BQXZCLHFCQUFoQkEsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQThDO0lBQUM7YUFDL0RDLEtBQUtsSyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0U7S0FBSyxPQUx4QmtGO2NBS0tyUDs7ZUFBMEMsT0FBdkIscUJBQW5CQSxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0U7Y0FBaUQ7SUFBQzthQUNyRUMsS0FBS3BLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUFLLE9BTjNCZ0Y7Y0FNS3JQOztlQUE2QyxPQUF2QixxQkFBdEJBLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtjQUFvRDtJQUFDO2FBQzNFQyxLQUFLdEssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0tBQUssT0FQOUI4RTtjQU9LclA7O2VBQWdELE9BQXZCLHFCQUF6QkEsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO2NBQXVEO0lBQUM7YUFFakZDLEtBQUt4SyxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7S0FDOUIsT0FWRTRFO2NBU0tyUDs7ZUFDZ0IsT0FBdkIscUJBRE9BLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtjQUN1QjtJQUFDO2FBR3BEQyxLQUFLMUssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0tBQ2pDLE9BZEUwRTtjQWFLclA7O2VBQ2dCLE9BQXZCO2tDQURPQSxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7Y0FDdUI7SUFBQzthQUd2REMsTUFBTTVLLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUNyQyxPQWxCRXdFO2NBaUJNclA7O2VBQ2UsT0FBdkI7a0NBRFFBLEdBQUUwSixJQUFHRyxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtjQUN1QjtJQUFDO2FBRzNEQyxNQUFNOUssR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO0tBQ3hDLE9BdEJFc0U7Y0FxQk1yUDs7ZUFDZSxPQUF2QjtrQ0FEUUEsR0FBRTBKLElBQUdHLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFO2NBQ3dCO0lBQUM7YUFHL0RDLE1BQU1oTCxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsS0FBSUU7S0FDNUMsT0ExQkVvRTtjQXlCTXJQOztlQUNlLE9BQXZCOzt3QkFEUUE7d0JBQUUwSjt3QkFBR0c7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUlFO2NBQ3dCO0lBQUM7YUFHbkVDLE1BQU1sTCxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsS0FBSUUsS0FBSUU7S0FDcEMsT0E5QlZrRTtjQTZCTXJQOztlQUNlLE9BQXZCOzt3QkFEUUE7d0JBQUUwSjt3QkFBR0c7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUlFO3dCQUFJRTtjQUN3Qjs7YUFHdEVDO0tBQU1wTCxHQUFFMEosSUFBR0csSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsS0FBSUUsS0FBSUUsS0FBSUU7S0FDeEMsT0FsQ1ZnRTtjQWlDTXJQOztlQUNlLE9BQXZCOzt3QkFEUUE7d0JBQUUwSjt3QkFBR0c7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUdFO3dCQUFHRTt3QkFBR0U7d0JBQUlFO3dCQUFJRTt3QkFBSUU7Y0FDd0I7O2FBRzFFTyxVQUFVNUwsR0FBRWtGOzBCQUVaLE9BREYscUJBRFlsRixHQUFFa0YsU0FFTzswQjtLQURpRCxPQS9LcEUrSDs7a0JBOEtVak47Y0FBRWtGO3VCQUM2QnFLO2U7d0JBM0ozQzdZLDJCLGVBMkoyQzZZOzs7O0lBQ3JCO2FBR3BCQyxVQUFVMVEsTUFBSytILEdBQUU3RyxHQUFFa0Y7MEJBQ3FELE9BQTFFLFdBRGlCMkIsR0FBRTdHLEdBQUVrRixTQUNnRTswQjtLQUF0QixPQXBMN0QrSDtjQW1MVW5PO2tCQUFPa0I7Y0FBRWtGO3VCQUNldUs7ZTt3QkFoS3BDL1ksMkIsZUFnS29DK1k7Ozs7SUFBa0Q7YUFHcEZuRSxJQUFJdEwsR0FBRWtGLFNBQVE1RDtLQUFPLE9BQUEsV0FKckJrTyw2QkFJSXhQLEdBQUVrRixVQUFRNUQ7SUFBeUM7YUFDdkRrSyxXQUFXeEwsR0FBRWtGLFNBQVE1RDtLQUFPLE9BQUEsV0FMNUJrTyxvQ0FLV3hQLEdBQUVrRixVQUFRNUQ7SUFBdUQ7YUFFNUVvTyxVQUFVNVEsTUFBSytILEdBQUU3RyxHQUFFa0YsU0FBUTVELE1BQUtxTzswQkFFaEMsT0FERixXQURpQjlJLEdBQUU3RyxHQUFFa0YsU0FBUTVELE1BQUtxTyxHQUVkO0tBRDhDO0tBQUEsT0EzTGhFMUM7Y0EwTFVuTztrQkFBT2tCO2NBQUVrRjt1QkFDZTBLO2U7d0JBdktwQ2xaLDJCLGVBdUtvQ2taOzs7O0lBQ2Y7YUFHbkJuRSxJQUFJekwsR0FBRWtGLFNBQVE1RCxNQUFLcU87S0FBSSxPQUx2QkQsNkJBS0kxUCxHQUFFa0YsU0FBUTVELE1BQUtxTztJQUF3QzthQUMzRGhFLFdBQVczTCxHQUFFa0YsU0FBUTVELE1BQUtxTztLQUFJLE9BTjlCRCxvQ0FNVzFQLEdBQUVrRixTQUFRNUQsTUFBS3FPO0lBQXNEOzs7OzthQTVLbEZqWjthQUFBNko7YUFBQUQ7YUEwQklPO2FBSkFDO2FBcEJBRjthQVVBRDs7Y0FtQkZ3TjtjQUFBQztjQUFBRztjQUFBRDtjQUFZSjtjQUFaRztjQUFBRztjQUFBQztjQUFBQztjQUFBM1g7Y0FPSXlLO2NBTEFDO1lBWVJmO1lBRUlYO1lBdUJBcUY7WUFwQkFDO1lBVUFHO1lBb0JBekU7WUFLQWtCO1lBS0FVO1lBMUNBRjtZQThDQThGO1lBVUFqQjtZQVNBTjtZQUxBbUM7WUFVQU07WUFDQUc7WUFDQUU7WUFDQUU7WUFDQUU7WUFDQUU7WUFDQUU7WUFFQUU7WUFJQUU7WUFJQUU7WUFJQUU7WUFJQUU7WUFJQUU7WUFJQUU7WUFJQVE7WUFTQU47WUFDQUU7WUFPQUM7WUFDQUU7WUFuTUFvQjtZQUNBQzs7Ozs7Ozs7UUE1dEJFdE07UUFGSkg7UUFBQUQ7UUFLSU87UUFDQUM7UUFGQUY7UUFEQUQ7O09Bc0xGOEM7T0E2REFpRDtPQXJDQXRCO09BUUFDO09BVUFHO09BMElBOEM7T0FqUEFyRztPQTZLQW9GO09BakhBN0Q7T0FpT08rRTtPQS9HUGpCO09BbU1BTjtPQW5CQW1DO09Ba0NBTTtPQU9BRztPQVFBRTtPQVNBRTtPQVVBRTtPQVdBRTtPQVlBRTtPQWFBRTtPQWNBRTtPQWVBRTtPQWdCQUU7T0FpQkFFO09Ba0JBRTtPQW1CQUU7T0FnQ0FRO09BWkFOO09BRUFFO09BSUFDO09BRUFFOzs7OztTQS9yQkVqTDtTQUZKSDtTQUFBRDtTQUtJTztTQUNBQztTQUZBRjtTQURBRDs7UUFzTEY4QztRQTZEQWlEO1FBckNBdEI7UUFRQUM7UUFVQUc7UUF2R0F2RDtRQTZLQW9GO1FBakhBN0Q7UUFpT08rRTtRQS9HUGpCO1FBbU1BTjtRQW5CQW1DO1FBa0NBTTtRQU9BRztRQVFBRTtRQVNBRTtRQVVBRTtRQVdBRTtRQVlBRTtRQWFBRTtRQWNBRTtRQWVBRTtRQWdCQUU7UUFpQkFFO1FBa0JBRTtRQW1CQUU7UUFnQ0FRO1FBWkFOO1FBRUFFO1FBSUFDO1FBRUFFO1FBc0JBRzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ2lzQm9CK0Q7SUFIQUM7SUFnQkFDO0lBS0FDO0lBL3hCaEJDO0lBNEpzQkM7SUFIQUM7SUFyR0RDO0lBT0RDO0lBWUNDO0lBa0JDQztJQUtGQzs7SUFyc0I1QkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXpMa0Q7SUFJaERDO0lBQ0FDOzs7Ozs7Ozs7SUFzREVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFqQ0FDO1lBS0FDLFVBQVVDO0lBQ1osS0FBTyxtQkFES0EsR0FMVkY7S0FNRixNQUFBO0lBQ08sR0FBQSxxQkFGS0UsR0E0QlZIO0lBMUJGLE1BQUE7R0FBdUI7WUFHckJJLE9BQU9DLEdBTFBILFVBS09HLElBQ1QsT0FEU0EsRUFFUjtZQUdDQyxTQUFNQyxJQUFHQyxJQUNYLElBQUlMLElBRElJLEtBQUdDLFFBVlROLFVBV0VDLElBQ0osT0FESUEsRUFFSDtZQUdDTSxTQUFNRixJQUFHQyxJQUNYLElBQUlMLElBRElJLEtBQUdDLFFBaEJUTixVQWlCRUMsSUFDSixPQURJQSxFQUVIO1lBR0NPLEtBQUtQLEdBQUksT0FBQSwyQ0FBSkEsR0FBZ0M7WUFJekNRLFlBQUFDO0lBQUEsT0FBQSxpQ0FBQUE7R0FBdUQ7WUFHbkRDLGtCQUFrQlY7SUFBSSxpQ0FBSkEsU0FuQmxCRztHQW1CK0U7WUFDL0VRLFNBQVNYLEdBQUssT0FEZFUsa0JBQ1NWLEdBQXdCO1lBc0p2QlksWUFwSkFaO0lBQ1osR0FBWSx5QkFEQUE7S0FDWixNQUFBO2tCQUNvQmE7S0FsQ2xCZCxVQWtDa0JjO0tBRVgsR0FBQSxxQkFGV0E7S0FFbEIsTUFBQTtJQUEwRDtJQUY1RCx5QkFGWWI7SUFLVyxPQXJDckJELFVBNkJBVyxrQkFHVVY7R0FLZ0M7WUFHMUNjLFlBQVVDO0lBZGQsSUFlTWYsSUFmTixpQ0FjY2U7SUE0SUFILFlBM0lSWjtJQUNKLE9BRElBO0dBRUg7WUFHQ2dCLFdBQWFDLEtBQWdDQztJQUMvQyxHQURlRDtTQUF5QkUsTUFBekJGLFFBQUFHLHlCQUF5QkQ7O1NBQXpCQztJQUNaLEdBQUEseUJBRDRDRjtLQUNwQjtJQUFBLGNBQ0NHLE1BQVEsT0FBQSxxQkFBUkEsU0FBaUI7SUFBMUMsR0FBQSwwQkFGNENIOztrREFBQUE7Ozs7OztLQUk3Qzs7SUFBQSwwQjtJQUVhLElBQVhQLFdBQVcsMEJBTmdDTztJQU81QyxHQUFBLHFCQURDUCxVQXhCRmQ7OzttREFBQUE7d0RBd0JFYztrREFOMkNPOzs7Ozs7S0FTN0M7O09BVGFFO0tBaUJzQztNQUFBLE9BQUE7TUFBdkMsT0FBQSwyQkFuQ1p2QixlQXdCRWM7TUFTQVcsT0FFRyxzQkFqQndDSjs7U0FlM0NJLE9BZjJDSjtJQW9CL0MsT0FBQSwwQkFMSUksTUF4REZyQjtHQTZEa0M7R0FHeEIsSUFtRlZzQixxQkExR0FQLG9CQTJGQVE7WUF4Q0FDLFFBQXlCQyxPQUFBQztJLGFBQUEsV0F3Q3pCSCxTQXhDeUJFLE9BQUFDOztZQUN6QmQsYUFBYWIsR0FBSSxPQTdGakJDLE9BNkZhRCxHQUE0QjtZQTRDckM0QixZQTFDSTVCO0lBQ1YsR0FBRyxxQkFET0E7O3VDQUFBQTs7Ozs7O0tBR1I7O0lBR0YsV0FBQSxXQUFPLDRDQU5HQTtJQU1WLE9BQUE7R0FBb0Q7WUFHbEQ2QixZQUFVN0I7SUFBWSxXQWlDbEI0QixZQWpDTTVCO0lBQVksT0FBQTs7O0lBQ3RCOEI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFDQUMsSUFBSW5DLEdBQUdPLE1BQU8sT0FBVlAsSUFBR08sU0FBZTtZQUN0QjZCLElBQUlwQyxHQUFHTyxNQUFPLE9BQVZQLElBQUdPLFNBQWU7WUF5QmxCOEIsc0JBbEJrQkM7SUFDeEIsR0FBRyxnQ0FEcUJBOzs7NkRBQUFBOzs7Ozs7S0FHdEI7O0lBSUYsV0FBQSxpQ0FQd0JBO0lBT3hCLE9BQUE7R0FBb0Q7R0FyQ2xEOzs7Ozs7WUFpRElWLGFBREFTOzs7Ozs7Ozs7Ozs7O1lBQ0FULGFBREFTOzs7SUFoREo7Ozs7Ozs7Ozs7T0E0Q0FiOzs7WUFtQkFlLFdBQUFDLEdBQUEsT0FBQUEsS0FBVTtnQkFBVkEsR0FBQUMsR0FBQSxXQUFBRCxNQUFBQyxHQUFBRCxNQUFVO0dBQVY7O0lBQUFFOzBCQUFBLFNBQVUsd0JBQVZIO1lBRkpJLFlBQUFDO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBbEQsa0JBQUFrRDtJQUFBO0tBQUFDLGtCQUFBRDtLQUNJRTtLQUNBQztLQUNBQztLQUhKQztLQUFBQzs7Ozs7Ozs7O21CQUFBTDtPQUFBOztZQUFBTTtpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUExRCxrQkFBQWtEO2dCQUFBUTtjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFLeUI7bUJBTHpCRDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBO2tDQUFBQTs7WUFBQUgsbUJBQUFHLGdCQUFBSDs7a0JBRUlIO1dBRkpFLHdCQUFBSSxnQkFBQUo7O1dBRUk7WUFGSlMsbUJBQUFGO1lBRUlHLGFBcEhBN0MsWUFrSEo0QztXQUVJWCx3QkFBQVk7O2lCQUNBWDtVQUhKQyx3QkFBQUksZ0JBQUFKOztVQUdJO1dBSEpXLG1CQUFBSjtXQUdJSyxhQUFBLHNCQUhKRDtVQUdJWixzQkFBQWE7O2dCQUZBZjtTQURKRyx3QkFBQUksZ0JBQUFKOztTQUNJO1VBREphLG1CQUFBTjtVQUNJTyxhQUFBLG9CQURKRDtTQUNJaEIsNkJBQUFpQjs7b0JBREpUOzs7Ozs7S0FBQSx5Q0FBQTVELGtCQUFBeUQ7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQXZEO2NBQUF1RDtjQUFBTDtPQUFBTTtLQUFBLE9BQUE7O2NBQUF4RDtjQUFBd0Q7Y0FBQU47O1lBQ0lFO0tBQ0FrQixpQkFBQWpCO0tBQ0FrQixRQUFBakI7O0tBSEosT0FBQTs7Y0FBQXREO2NBQUFrRDs7eUJBQ0lFOztRQUFBb0I7T0FDQUY7U0FGSkcsUUFFSUgsbUJBRkpJLFVBQUFEOztTQUFBQyxVQUZJN0M7SUFFSixXQUNJMkMscUJBREpFLFNBR0lIO0dBRXFCO1lBTHpCSTtJQUFBO0tBR0lDO0tBREFDO0tBREFDO0tBREpDO0lBR0ksR0FBQUg7S0FBQTtNQUFBSSxRQUFBSjtNQUFBSyxVQUFBLHNCQUFBRDtNQUFBRSwyQkFBQUQ7TUFISkUsaUJBR0lELFNBSEpIOztTQUFBSSxhQUFBSjtJQUVJO0tBQUFLLFVBbElKdEUsWUFrSUkrRDtLQUZKUSxrQ0FFSUQsZUFGSkQ7S0FDSUcsVUFBQSxvQkFBQVI7S0FESlMsa0NBQ0lELGVBREpEO0lBQUEsV0FBQUU7R0FLeUI7WUFFckJDLGdCQUFnQmxGLEdBQUksT0FuQmhCNEIsWUFtQlk1QixNQUE2QztZQU83RG1GLG1CQUFtQkQ7SUFDckIsT0F6SkU1RSxTQVlBVCxjQXNFQWdCLGFBc0VtQnFFO0dBRzJCO1lBRzlDRSxZQUFVcEY7O0tBS04sV0FYSm1GLG1CQU1VbkY7S0FFSCxLQUFBLHFCQW5KUFUsa0JBaUpVVjtNQUVWLE1BQUE7S0FJYyxJQTFCYnFGLGlCQTBCYSw4QkFOSnJGLEdBTUFZO0tBMUJULFdBQUF5RSxnQkFFRDNDO0tBQ0E7SUEyQjBDO0lBVEEsT0FBQSxtQ0FEaEMxQyxHQXBCZHFFO0dBOEIrQztZQUczQ2lCLE9BQVFDLFVBQVd0RSxLQUFrQ2lFO0lBQ3ZELEdBRHFCakU7U0FBYUUsTUFBYkYsUUFwSGRzQixhQW9IMkJwQjs7U0FwSDNCb0IsYUFpRkxoQjtJQXFDeUMsSUF0SGpDMUIsZUFpR1JzRixtQkFtQnFERDtJQW5IcEQsR0FBQSxxQkEzQ0R4RSxrQkEwQ0s2QixhQUFHMUM7U0FxSE42QyxlQXJIR0g7OztNQUlHaUQ7aUJBQUt4RixHQUFHeUY7U0FDZCxLQURXekYsR0FFSDthQUNEMEYsTUFISTFGLE1BR1QyRixJQUhTM0Y7U0FJTixPQUFBLG1CQURIMkYsR0FIWUY7dUJBQUFBO3VCQUdaRSxHQUhJSCxLQUdDRSxLQTlEVHBGLFNBMkRnQm1GLFdBR1pFO1FBRzREO01BMkc5RGpELGVBakhNOEMsS0FKSGpELFlBQUcxQztJQXdIVixXQUp1RHFGLGlCQUNuRHhDLGNBRE02QztHQUkrQjtZQUd2Q0s7SUFDRixPQVJFTixjQTdJQXRFLHFCQWlFQWU7R0F1RnVEO1lBR3ZEOEQsVUFBVTdGO2tCQUlGOEYsZ0JBQWVDO0tBQ3JCO01BQUlDO1FBREVGLGlCQUNnQyxtQkFEakJDO01BSWI7UUFBQSxxQkFISkM7O1dBS00sMkNBTE5BO01BQ0FDLFdBQ0Y7S0FLRixXQVBJRCxrQkFDQUM7SUFNb0I7SUFUcEIsV0FBQSxtQkExR05wRixhQXVHVWI7SUFJUCxPQUFBLDBCQUpPQTtHQVlpQjtHQTBMM0IsSUFBQWtHLDZCQXNheUJDO1lBcGFyQkMsU0FBUTdEO0lBQWEsSUFBQSx1QkFBWSxPQTNYckNoQyxLQTJYWWdDO0lBQWEsT0FBQTtHQUFvRDtZQUkzRThELFNBQVMxRixVQUFXLE9BL1h0QkosS0ErWFdJLFVBQXFDOzs7Ozs7O1lBSzVDMkYsU0FBUUM7SUFBZ0IsT0FBUSxvQkFBQSxxQkFwWXBDaEcsS0FvWVlnRztHQUErRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQU12RUMsU0FBU3hHLEdBQUksT0FBSkEsRUFBSztZQUNkeUcsU0FBU3ZHLEdBQUksT0FBSkEsRUFBSztZQUNkd0csVUFBVTFHLEdBQUVFO0lBQUksT0FBSSxxQkFBVkYsR0FBVSxxQkFBUkU7R0FBZ0I7Ozs7Ozs7Ozs7Ozs7OztJQTJmTnlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXRmeEJDLFdBQVMxRyxHQUFJLE9BQUpBLEVBQUs7WUFDZDJHLFdBQVM3RyxHQUFJLE9BQUpBLEVBQUs7WUFDZDhHLElBQUk5RyxHQUFFRSxHQUFJLE9BQUEsc0JBQU5GLEdBQUVFLEdBQVM7WUFDZjZHLGlCQUFpQi9HLEdBQUVFO0lBQUksT0FBRyxzQkFBVEYsR0FBYSxtQ0FBWEU7O2NBQTZDLHNCQUEvQ0YsR0FBRUU7R0FBa0Q7WUFFckU4RyxJQUFJaEgsR0FBRUUsR0FBSSxPQUFBLHNCQUFORixHQUFFRSxHQUFTO1lBQ2YrRyxLQUFLN0csSUFBR0MsSUFBSyxPQUFBLHNCQUFSRCxJQUFHQyxJQUFZO1lBTXBCNkcscUJBQXFCbEgsR0FBRW1ILDJCQUN6QixPQUFBLG9CQUR1Qm5ILEdBQUVtSDtHQUNVO0dBdkNqQzs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JFVjtPQURBRDs7O09BRUFFOzs7O0lBckJGOzs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQThJSlUsbUJBNUZLQyxVQUFMQzt3QixPQTRGQUYsbUJBNUZLQzs7d0IsT0E0RkxELG1CQTVGS0M7O0lBQUwsT0FBQTs7YUE4ZDRCVjs7YUE5ZHZCVTs7OzthQUFMQztHQVFvQjtZQXE1QnRCQyxZQW41Qk9DLFVBQUxDO3dCLE9Ba0ZBTCxtQkFsRktJO0lBQUwsT0FBQSx1Q0FBQUM7R0FBd0Q7O0lBcTVCdERDO0lBaDBCRUM7SUFDQUM7SUFPQUM7WUFDQUMsSUFBSUMsR0FBRS9IO0lBQUksc0NBQU4rSCxHQUFFL0g7R0FBNkI7WUFFbkNnSSxHQUFHRCxHQUFFL0g7SUFBSSxzQ0FBTitILEdBQUUvSDtHQUE2QjtZQUVsQ2lJLE1BQU1GLEdBQUUvSDtJQUFJLHNDQUFOK0gsR0FBRS9IO0dBQTZCO1lBQ3JDa0ksWUFBWUgsR0FBRS9IO0lBQUksc0NBQU4rSCxHQUFFL0g7R0FBNkI7WUFFM0NtSSxLQUFLSixHQUFFL0g7SUFBSSxzQ0FBTitILEdBQUUvSDtHQUE2QjtZQUNwQ29JLFNBQVNMLEdBQUUvSCxHQUFFcUk7SUFBSSxPQUFBLCtCQUFSTixHQUFFL0gseUJBQUVxSTtHQUErQjtZQUM1Q0MsS0FBS1AsR0FBRS9IO0lBQUksc0NBQU4rSCxHQUFFL0g7R0FBNkI7WUFDcEN1SSxTQUFTUixHQUFFL0gsR0FBRXFJO0lBQUksT0FBQSwrQkFBUk4sR0FBRS9ILHlCQUFFcUk7R0FBK0I7WUFDNUNHLFNBQVNULEdBQUUvSCxHQUFJLE9BQUEsOEJBQU4rSCxHQUFFL0gsR0FBNkI7T0FrQnRDeUksMkJBQ0FDO1lBS0ZDLGdCQUFnQkMsTUFBSzVJO0lBQ3ZCLEdBekJFd0ksU0F3QmdCSSxNQUFLNUksSUFDQyxPQUREQTs7OztHQUMyRDtZQVFoRjZJLEtBQUtELE1BQUtULE1BQUtHO0lBbENmQyxTQWtDS0ssTUFBS1QsTUFBS0c7SUFDakIsT0FyQ0VGLFNBb0NLUSxNQUFVTixNQUFMSDtHQUVXO1lBV3JCVyxLQUFLRixNQUFLRyxPQUFPQztJQUNuQixJQUFJQyxjQURRRixRQUVSRzs7VUFBQUE7S0FHUyxJQUFQQyxTQXJESmIsS0FnREtNLE1BQ0hLO0tBS0YsV0FOaUJELEdBQ2ZDO0tBTUMsR0FBQSxzQkFGQ0UsUUFMTUo7TUFFUkc7O01BREFELGFBSUVFOztHQUdGO0dBNEROLFNBc0JJQyxNQUFBNUcsR0FBQSxPQUFBQSxNQUFLO1lBSEc2RyxnQkFBQTdHLEdBQUEsT0FBQUEsTUFBZTtZQUFmOEcsb0JBQUE5RyxHQUFBQyxHQUFBRCxRQUFBQyxZQUFlO1lBRGY4RyxnQkFBQS9HLEdBQUEsT0FBQUEsS0FBZTtZQUFmZ0gsb0JBQUFoSCxHQUFBQyxHQUFBRCxPQUFBQyxZQUFlO1lBSGZnSCxPQUFBakgsR0FBQSxPQUFBQSxLQUFNO1lBQU5rSCxXQUFBbEgsR0FBQUMsR0FBQUQsT0FBQUMsWUFBTTtZQUZka0gseUJBQUFuSCxHQUFBLE9BQUFBLEtBQXdCO1lBRnhCMkUsMEJBQUEzRSxHQUFBLE9BQUFBLEtBQXlCO1lBRHpCb0gsY0FBQXBILEdBQUEsT0FBQUEsS0FBYTtZQURiK0QsY0FBQS9ELEdBQUEsT0FBQUEsS0FBYTtZQUhicUgsV0FBQXJILEdBQUEsT0FBQUEsS0FBVTtZQUZWbkIsS0FBQW1CLEdBQUEsT0FBQUEsS0FBSTtZQUZKc0gsTUFBQXRILEdBQUEsT0FBQUEsS0FBSztnQkFvQkxBLEdBQUFDO0lBQUEsV0FBQUQsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsT0FBQUM7R0FBSztHQUFMOztJQUFBc0gsOEJBQUEsU0FBSyxtQkFBTFg7Z0JBSFE1RyxHQUFBQztJQUFBLFdBQUFELE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFDLEdBQUFEO0dBQWU7R0FBZjtJQUFBLFVBQUE4RztJQUFBVTs7dUJBQUEsU0FBZTs7O09BQWZYOztnQkFEQTdHLEdBQUFDO0lBQUE7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUM7WUFBQUQ7WUFBQUE7R0FBZTtHQUFmO0lBQUEsVUFBQWdIO0lBQUFTOzt1QkFBQSxTQUFlOzs7T0FBZlY7O2dCQUhBL0csR0FBQUM7SUFBQTtZQUFBRDtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQztZQUFBRDtZQUFBQTtZQUFBQTtHQUFNO0dBQU47SUFBQSxVQUFBa0g7SUFBQVEsK0JBQUEsU0FBTSxvQkFBTlQ7Z0JBRlJqSCxHQUFBQztJQUFBO1lBQUFEO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFDO1lBQUFEO1lBQUFBO1lBQUFBO1lBQUFBO0dBQXdCO0dBQXhCOztJQUFBMkg7O3VCQUFBLFNBQXdCOzs7T0FBeEJSOztnQkFGQW5ILEdBQUFDO0lBQUE7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUM7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBeUI7R0FBekI7O0lBQUE0SDs7dUJBQUEsU0FBeUI7OztPQUF6QmpEOztnQkFEQTNFLEdBQUFDO0lBQUE7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUM7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBYTtHQUFiOztJQUFBNkg7O3VCQUFBLFNBQWE7OztPQUFiVDs7Z0JBREFwSCxHQUFBQztJQUFBO1lBQUFEO1lBQUFBO1lBQUFBO1lBQUFDO1lBQUFEO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQWE7R0FBYjs7SUFBQThIOzt1QkFBQSxTQUFhOzs7T0FBYi9EOztnQkFIQS9ELEdBQUFDO0lBQUE7WUFBQUQ7WUFBQUE7WUFBQUM7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBVTtHQUFWOztJQUFBK0g7MEJBQUEsU0FBVSx3QkFBVlY7Z0JBRkFySCxHQUFBQztJQUFBO1lBQUFEO1lBQUFDO1lBQUFEO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQUk7R0FBSjs7SUFBQWdJLDZCQUFBLFNBQUksbUJBQUpuSjtpQkFGQW1CLEdBQUFDO0lBQUE7WUFBQUE7WUFBQUQ7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBSztHQUFMOztJQUFBaUksOEJBQUEsU0FBSyxvQkFBTFg7WUFGSlksWUFBS0M7SUFzQkQ7S0FUQUM7S0FGQUM7S0FEQUM7S0FEQUM7S0FIQUM7S0FGQUM7S0FGQUM7S0FhUUM7S0FHQUM7S0FDQUM7S0FHUkM7S0FBQUMsVUFBQSxtQ0FBQUQ7S0F0QkpFLGlDQXNCSUQ7S0FIUUUsVUFBQSxXQXNPZ0I5RSxhQXRPaEIwRTtLQW5CWkssbUNBbUJZRCxlQW5CWkQ7S0FrQllHLFVBQUEsV0F1T2dCaEYsYUF2T2hCeUU7S0FsQlpRLG1DQWtCWUQsZUFsQlpEO0tBZVlHLFVBQUEsc0JBQUFWO0tBZlpXLG1DQWVZRCxlQWZaRDtLQWFJRyxVQUFBLG1CQUFBbkI7S0FiSm9CLG1DQWFJRCxlQWJKRDtLQVdJRyxVQUFBLHdCQUFBcEI7S0FYSnFCLG1DQVdJRCxlQVhKRDtLQVVJRyxVQUFBLG1CQUFBckI7S0FWSnNCLG1DQVVJRCxlQVZKRDtLQVNJRyxVQUFBLHNCQUFBdEI7S0FUSnVCLG1DQVNJRCxlQVRKRDtLQU1JRyxVQUFBLFdBMkl1QnBHLGFBM0l2QjZFO0tBTkp3QixtQ0FNSUQsZUFOSkQ7S0FJSUcsVUFBQSxzQkFBQXhCO0tBSkp5QixtQ0FJSUQsZUFKSkQ7S0FFSUcsVUFBQSxzQkFBQXpCO0tBRkowQixtQ0FFSUQsZUFGSkQ7SUFBQSxXQUFBRTs7WUEwQklDLEtBQUs3TSxHQUFHOEg7SUFBTSxJQS9RNEIrQixhQStRckM3SixNQS9RSXVHLGdCQStRSnZHO0lBOVFJLE9BQUE7O2FBQUE7O2VBQVMsd0JBOFFWOEgsS0EvUUN2QjtlQUFpQ3NEO0dBK1F3QztZQUNsRmlELFVBQVU5TSxHQUFFNk07SUFBTyxJQTdTUG5ILE1BNlNGMUY7WUFBRTZNLGdCQTdTeUIsMEJBQXpCbkg7R0E2UzZDO1lBRXpEcUgsdUJBQXFCL00sR0FBRzhIO0lBQzFCLE9BL1FFWixxQkE4UXdCWSxLQUFIOUg7R0FDaUM7WUFHdERnTix3QkFBd0JoTixHQUFHaU47SUFHN0IsT0FBRyxvQkFIMEJBOztjQUozQkY7ZUFJd0IvTSxHQUtPLG1CQUxKaU47R0FLeUM7R0FJMUUsU0FPSUMsT0FBQTFLLEdBQUEsT0FBQUEsS0FBTTtZQURFMkssb0JBQUEzSyxHQUFBLE9BQUFBLEtBQW1CO1lBQW5CNEssd0JBQUE1SyxHQUFBQyxHQUFBRCxPQUFBQyxZQUFtQjtZQUZuQjRLLFFBQUE3SyxHQUFBLE9BQUFBLEtBQU87WUFBUDhLLFlBQUE5SyxHQUFBQyxHQUFBRCxPQUFBQyxZQUFPO1lBRlBtRyxLQUFBcEcsR0FBQSxPQUFBQSxLQUFJO1lBQUorSyxTQUFBL0ssR0FBQUMsR0FBQUQsT0FBQUMsWUFBSTtZQURKK0ssU0FBQWhMLEdBQUEsT0FBQUEsS0FBTTtZQUFOaUwsYUFBQWpMLEdBQUFDLEdBQUFELE9BQUFDLFlBQU07aUJBTWRELEdBQUFDLEdBQUEsV0FBQUQsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUMsR0FBTTtHQUFOOztJQUFBaUwsK0JBQUEsU0FBTSxxQkFBTlI7aUJBRFExSyxHQUFBQyxHQUFBLFdBQUFELE1BQUFBLE1BQUFBLE1BQUFDLEdBQUFELE1BQW1CO0dBQW5CO0lBQUEsV0FBQTRLO0lBQUFPOzt1QkFBQSxTQUFtQjs7O09BQW5CUjs7aUJBRkEzSyxHQUFBQyxHQUFBLFdBQUFELE1BQUFBLE1BQUFDLEdBQUFELE1BQUFBLE1BQU87R0FBUDtJQUFBLFdBQUE4SztJQUFBTTswQkFBQSxTQUFPLHNCQUFQUDtpQkFGQTdLLEdBQUFDLEdBQUEsV0FBQUQsTUFBQUMsR0FBQUQsTUFBQUEsTUFBQUEsTUFBSTtHQUFKO0lBQUEsV0FBQStLO0lBQUFNLDZCQUFBLFNBQUksbUJBQUpqRjtpQkFEQXBHLEdBQUFDLEdBQUEsV0FBQUEsR0FBQUQsTUFBQUEsTUFBQUEsTUFBQUEsTUFBTTtHQUFOO0lBQUEsV0FBQWlMO0lBQUFLOzBCQUFBLFNBQU0sdUJBQU5OO1lBc0JSTyxTQUFTL04sR0FBSSxPQUFBLHFCQUFKQSxTQUFnQjtZQUN6QmdPLFdBQVdoTyxHQUFJLE9BQUpBLGdCQUF5QjtZQUNwQ2lPLGtCQUFnQmpPLEdBQUksd0JBQUpBLGVBQXNDO1lBQ3REa08sa0JBQWdCbE87SUFBb0MsV0FGcERnTyxXQUVnQmhPO0lBQTBCLHdCQUExQkE7R0FBcUQ7WUFFckVtTyxjQUFjbk8sR0FBR2dKO0lBQ2hCLFdBQUEscUJBRGFoSjtJQUNiO0tBR0Q7TUFESTRJLE9BSFU1STtNQUlWa04sU0FKVWxOO2FBSVZrTjs7O1VBQ0poRjs7T0FDYyxJQUFSa0cseUJBRkZsQixRQUNKaEYsaUJBQUFBO09BRUssR0FBQSxxQkFEQ2tHO1lBR0VoRixRQUhGZ0Ysa0JBR0VoRjs7YUFDSmlGOztVQUNZLElBQU5DLHVCQUZGbEYsT0FDSmlGLGdCQUFBQTtpQkFFUyxXQXZOWHpHLFNBc05RMEcsTUFySlJ4RixLQTZJRUYsTUFRTTBGLEtBWE90RjtVQVViLFdBQUFxRjtzQkFBQUE7Y0FBQUE7Ozs7T0FMSixXQUFBbkc7bUJBQUFBO1dBQUFBOzs7Ozs7OztHQVNLO1lBNENMcUcsK0JBQWtDaE0sWUFBWWdFO0lBQ3JDLElBQVBsRixPQTN4QkZsQixTQTB4QmtDb0MsWUFBWWdFO0lBRTdDLEdBQUEsa0JBRENsRixNQXp3QkZ4QjtJQTR3QmlCLFdBblpmd0csU0FnWkFoRjtJQUdlLE9BQUE7R0FBbUI7WUErSHBDbU4sVUFBU3hPO0lBQ1gsR0FuTUUrTixTQWtNUy9OLElBRU4sT0FBQSxXQTNZRDJIO0lBNFlRLEtBQUEsV0EzWVJDLFNBd1lPNUgsY0FBQUE7SUFPbUI7S0FEeEI0SSxPQU5LNUk7S0FPTHlPLDRCQUE0QixXQWhaOUI5RztLQWlaRStHO0tBQ0F4RztLQUNBeUcsZUEzTUpYLFdBaU1TaE87O0tBV0gsS0FBQSxxQkFGRmtJLGdCQUNBeUc7TUFWSzNPLE9BT0x5TztNQVBLek8sT0FRTDBPO2FBUksxTzs7S0FZSzthQUhWa0k7TUFHRWtHLHlCQVpHcE87S0FhSixHQUFBLHNCQURDb08sVUFKRk07TUFDQXhHLGlCQUNBeUc7YUFPTSxxQkFMSlA7TUFIRmxHOztNQWNFO09BRkVrQixRQVRGZ0Y7T0FVRVE7YUE1UE43Qix1QkFrUElxQixPQWNVLGtCQWRWQSxVQVpHcE87T0E0QkQ2TyxhQXJRTmhDLEtBcVBJdUIsT0FVRVE7O2tCQU1BQztPQUdGLEtBQUEsV0F2YUpqSCwwQkE2Wk13Qjs7T0FXQyxLQUFBLHNCQVZEd0YsaUJBZEpGOztPQW9CSUcsWUFwUU4vQixVQW9QSXNCLE9BZ0JFUztPQU5BRCxrQkFwaEJOOUgsSUFvaEJNOEgsaUJBVkZSOztNQXlCVSxXQVRSUyxXQVNBOUYseUJBaEJBSzthQWlCRyxXQTlhVHhCLFNBNmFNbUI7T0FJYSxJQUFYRyxxQkFDQUQsY0FMRkY7O2FBSUVHO1FBR2dCLElBQWQ0RixjQTVhVmhILElBc1lFYyxNQW9DTUs7UUFHQyxHQUFBLHNCQURDNkYsYUFwQ1JKO1NBREFELDJCQW1DTXhGO1NBbENOeUYsMkJBb0NRSTs7UUFLTyxJQUFQM0YsU0F4YVZiLEtBNlhFTSxNQW9DTUs7OztTQVkwQjs7V0FBekIsc0JBTENFLFFBWkpKO2dCQWlCNEIscUJBN0NoQ2Isb0JBaUNNZSxhQU9FRTtTQVJGRDs7OztNQWhDTmhCOzs7R0FzRE07WUFtQlY2RyxRQUFRQyxPQS9aZ0JDO0lBZ2ExQjtLQWhha0JwQixTQStaUm1CO0tBTnFDRSxRQTVjM0NwSCxJQW1EYytGLFFBQVFvQjtLQWthbEIsT0FBQSxzQkFUdUNDLE9BNVE3Q2pCLGtCQWtSUWU7S0FHRjtjQUFzQyxzQkFUQ0UsT0EzUTdDaEIsa0JBaVJRYzs7S0F0T0csSUFKVHBHLE9BME9Nb0csVUF0T0R4TSxZQXVOVDtLQWhRRTJMO09BK1FRYTtnQkFyT21CVjtRQUN0QixXQUZFOUwsTUFJVyxPQTVPaEJ5RixNQW9PQVcsTUFLeUIwRjtRQURwQjlMLGVBNU9Mc0YsSUF3T0FjLE1BS3lCMEY7O09BS2Q7S0FDVjtNQWpCRGEsV0FpQkMsMEJBUEkzTTtNQVhMNE0sc0JBaENGbEIsa0JBaVJRYztNQWxQTkssc0JBaENGcEIsa0JBa1JRZTtNQW5QVk07OztTQUxNO1VBREFDO1VBREpDLGlDQUVJdFE7VUFEQXVRLFVBQUEsV0E2SnNCOUksYUE3SnRCNEk7VUFESkcsbUNBQ0lELGVBREpEO1NBQUEsV0FBQUU7O01BVUVDLFVBQUEsNEJBQUFSO01BSEpTLG1DQUdJRCxlQUhKTDtNQUVJTyxVQUFBLFdBcUp3QmxKLGFBckp4QnlJO01BRkpVLG1DQUVJRCxlQUZKRDtNQUNJRyxVQUFBLFdBc0p3QnBKLGFBdEp4QjBJO01BREpXLG1DQUNJRCxlQURKRDs7OzttQ0F1SjRCbkosYUFyTDFCdUgsa0JBaVJRYzttQ0FuUFZnQjs7OzttQ0F1SjRCckosYUF0TDFCc0gsa0JBa1JRZTs7OENBNUZrQnJJLGFBc0ZtQnVJOzs7Ozs7OztJQWEzQixJQUFkaEg7O2dCQUFBQTtLQUNFOztPQUFBO29CQWR1Q2dILHdCQU1yQ0Y7O0tBT0o5Rzs7SUFNTTtLQXpkWStILGdCQW1kbEIvSDtLQVZzRWtHLHlCQUdsRVksVUE1Y2NpQixtQkFBQUE7S0EwZGhCLE9BQUEsc0JBcEJ1Q2YsT0FHNkJkO0tBaUJwRSxjQUF3QyxzQkFwQkRjLE9BRzZCZDs7S0FGNUU7TUFBQTs7Ozs7OztlQWhWQTFELDRCLGVBa1Y0RTBEOzs4Q0F6RmhEekgsYUFzRm1CdUk7Ozs7Ozs7O0lBRzZCZCxXQUFBQTtJQXpjaEQ7MEJBNkNWUCxRQUFRb0IsOEJBN0NGZ0I7SUE4ZGI7S0FBUHBCLFNBN1VBaEMsS0F3VHdFdUIsT0FIN0JjO0tBeUIzQzlGLFFBdEJ3RWdGO0tBNVpyRHJGLHlCQWtibkJLLE9BREF5RixZQUFBQTtJQUdHLEdBQUEsV0EvZUhqSCxTQTJEbUJtQjtLQXVickIsaUJBTEVLLE9BREF5RixZQUFBQSxVQWpic0JJO0tBRkEsT0FMdEJwRyxLQU9jZ0YsUUFBUW9CLFFBQUFBOztJQUNiLElBQVBpQixTQTdDRi9ILEtBNENjMEYsUUFBSzlFO0lBUG5CRixLQU9jZ0YsUUFDWnFDLFFBRG9CakI7SUFFeEIsT0FURXBHLEtBT2NnRixRQUFRb0IsUUFBSGxHO0dBd2JjO1lBR25Db0gsaUJBQWlCblEsR0FBRXNPO0lBQ1gsSUFBTlksUUEvZUFwSCxJQThlZTlILE1BQUVzTztJQUVsQixHQUFBLHNCQURDWSxPQURlbFAsT0FBQUEsT0FBRXNPLEtBQUZ0TyxPQUNma1A7SUE3QkZILFFBNEJpQi9PLEdBQUVzTztJQUFGdE8sT0FBQUE7O0dBT0s7WUFZdEJvUSxpQkFBaUJwUSxHQUFHOEg7SUFDdEI7S0FBRyxPQUFBLHNCQURtQkEsS0FqVXBCbUcsa0JBaVVpQmpPO0tBQ2hCLGVBQXFDLHNCQURsQjhILEtBaFVwQm9HLGtCQWdVaUJsTztJQUNxQixXQUFyQzs7OztxQ0E1SXlCMkcsYUFyTDFCdUgsa0JBZ1VpQmxPOzs7O3FDQTNJUzJHLGFBdEwxQnNILGtCQWlVaUJqTzs7NkNBM0lTMkcsYUEySU5tQjs7Ozs7OztHQUVVO1lBRzlCdUksYUFBYXJRLEdBM2dCRThILEtBQUtFLElBQUlDO0lBc2dCeEJtSSxpQkFLYXBRLEdBM2dCRThIO0lBNmdCZCxHQUFBLFdBMWVHWSxTQXdlUzFJLE9BQUFBLE9BRW9DLFdBM2U3Q3lJLFNBeWVTekk7SUExZ0JxQztLQUR6QzRJLE9BMmdCSTVJO0tBMWdCcUMsT0FBQSxXQUxoRDJIO0tBS3NDLE9BQUEsV0FMdENBO0tBa2hCQTJHO09BN2dCZ0QsK0JBRHpDMUYsTUFBTWQsS0FBS0UsSUFBSUM7SUFtZnhCa0ksaUJBd0JhblEsR0FHWHNPO0lBQ0osT0FESUE7R0FFRDtZQXNMRGdDLGdCQUFnQnRRLEdBMXBCRnNPO0lBMnBCaEIsSUEzcEJXMUYsT0EwcEJPNUksTUF4c0JMSyxLQXdzQktMO0lBRWYsR0Exc0JlLGlDQThDRnNPLEtBOUNIak87S0F3c0JLTCxPQUlILFdBOXNCWDJIO0lBMHNCYzNILE9BQUFBO0lBUUk7S0FBQSxPQXBzQmxCa0ksWUFrQ09VLE1BQUswRjtLQWtxQlpGLHlCQVJjcE87SUFRZG9PLFdBQUFBO0lBR087S0FEUGhGLFFBRkFnRjtLQUdBUyxTQXJqQkFoQyxLQWtqQkF1QixPQXpzQkF0RyxJQXVDT2MsTUFBSzBGO0tBc3FCWnZGLHlCQUZBSyxPQUNBeUYsWUFBQUE7S0FFYyxPQXJzQmR2RyxLQThCT00sTUFBSzBGO0lBdXFCYixHQUFBLHNCQXZxQmFBO0tBeXFCRSxXQUFBLFdBenRCZDNHO0tBeXRCRixpQkFMRXlCLE9BQ0F5RixZQUFBQTtLQUlGOztJQUVHLEdBQUEsc0JBM3FCV1AsS0FzcUJadkY7S0FLMkMsV0F6c0IzQ1QsS0E4Qk9NLE1BQUswRjtLQTJxQmUsaUJBUDNCbEYsT0FDQXlGLFlBQUFBOztJQXBxQjBCLFdBL0IxQnZHLEtBOEJPTSxNQUFLMEY7SUE3QlovRixTQTZCT0ssTUFoQ1BULEtBZ0NPUyxNQUFLMEY7SUFFYyxXQWxDMUJuRyxLQWdDT1MsTUFBSzBGO0lBRWMsT0FqQzFCbEcsU0ErQk9RLE1BOUJQTixLQThCT00sTUFBSzBGO0dBNHFCZTtHQWg2QjdCO0lBQUE7OztPQW1rQjBCM0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXRmeEJDO09BQ0FDOzs7T0FDQUM7T0FHQUU7T0FDQUM7Ozs7SUF1NUJKc0o7R0FLSixTQVFJQyxlQUFBaE8sR0FBQSxPQUFBQSxLQUFjO1lBRE5pTyx1QkFBQWpPLEdBQUEsT0FBQUEsS0FBc0I7WUFBdEJrTywyQkFBQWxPLEdBQUFDLEdBQUFELE9BQUFDLFlBQXNCO1lBRHRCa08sdUJBQUFuTyxHQUFBLE9BQUFBLEtBQXNCO1lBQXRCb08sMkJBQUFwTyxHQUFBQyxHQUFBRCxPQUFBQyxZQUFzQjtZQUR0Qm9PLElBQUFyTyxHQUFBLE9BQUFBLEtBQUc7WUFBSHNPLFFBQUF0TyxHQUFBQyxHQUFBRCxPQUFBQyxZQUFHO1lBRFhzTyxpQkFBQXZPLEdBQUEsT0FBQUEsS0FBZ0I7WUFGaEJ3TyxNQUFBeE8sR0FBQSxPQUFBQSxLQUFLO1lBREx5TyxPQUFBek8sR0FBQSxPQUFBQSxLQUFNO2lCQU9OQSxHQUFBQyxHQUFBLFdBQUFELE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFDLEdBQWM7R0FBZDs7SUFBQXlPOzt1QkFBQSxTQUFjOzs7T0FBZFY7O2lCQURRaE8sR0FBQUMsR0FBQSxXQUFBRCxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQyxHQUFBRCxNQUFzQjtHQUF0QjtJQUFBLFdBQUFrTztJQUFBUzs7dUJBQUEsU0FBc0I7OztPQUF0QlY7O2lCQURBak8sR0FBQUMsR0FBQSxXQUFBRCxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQyxHQUFBRCxNQUFBQSxNQUFzQjtHQUF0QjtJQUFBLFdBQUFvTztJQUFBUTs7dUJBQUEsU0FBc0I7OztPQUF0QlQ7O2lCQURBbk8sR0FBQUMsR0FBQSxXQUFBRCxNQUFBQSxNQUFBQSxNQUFBQyxHQUFBRCxNQUFBQSxNQUFBQSxNQUFHO0dBQUg7SUFBQSxXQUFBc087SUFBQU8sNEJBQUEsU0FBRyxrQkFBSFI7aUJBRFJyTyxHQUFBQyxHQUFBLFdBQUFELE1BQUFBLE1BQUFDLEdBQUFELE1BQUFBLE1BQUFBLE1BQUFBLE1BQWdCO0dBQWhCOztJQUFBOE87O3VCQUFBLFNBQWdCOzs7T0FBaEJQOztpQkFGQXZPLEdBQUFDLEdBQUEsV0FBQUQsTUFBQUMsR0FBQUQsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBSztHQUFMOztJQUFBK08sOEJBQUEsU0FBSyxvQkFBTFA7aUJBREF4TyxHQUFBQyxHQUFBLFdBQUFBLEdBQUFELE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQU07R0FBTjs7SUFBQWdQLCtCQUFBLFNBQU0scUJBQU5QO1lBY0FRLHFCQUFnQnpSO0ksbURBQUFBOztZQUNoQjBSLGtCQUFnQjFSLEdBQUksT0F4ckNsQmtGLGdCQXdyQ2NsRixNQUFtQztZQU1qRDJSLEtBQUdDLElBaG9CSTVSO0lBZ29CRyxJQWhvQkwrSCxJQWdvQkY2SixPQWhvQitCLE9BckpoQ2pKLGdCQXFKR1osTUFBRS9IO0lBQTJCLE9BdExoQ2dJLEdBc0xHRDtHQWdvQjhDO1lBQ25EOEosUUFBTUQsSUEvbkJJNVI7SUErbkJHLElBL25CTCtILElBK25CRjZKLE9BL25Ca0MsT0F2SnRDakosZ0JBdUpNWixNQUFFL0g7SUFBOEIsT0F0THRDaUksTUFzTE1GO0dBK25CaUQ7WUFDekQrSixhQUFhRixJQWpvQkw1UjtJQWlvQlksSUFqb0JkK0gsSUFpb0JPNkosT0Fqb0J1QixPQXRKbENqSixnQkFzSklaLE1BQUUvSDtJQUE0QixPQXpMbEM4SCxJQXlMSUM7R0Fpb0J3RDtZQUloRWdLLE9BQUsvUixHQUFHZ0osR0FBSSxJQTFtQkx0RCxNQTBtQkYxRixNQTFtQlMsT0FqQlptTyxjQWlCS3pJLEtBMG1CQ3NELEdBQTJDO1lBVy9DZ0osVUFBUTVSLElBQUdDO0lBQUssT0FBd0IsNkNBQWhDRCxPQUFHQztHQUFvQztZQTZCbkQ0UixhQUFVQyxXQUFVbFM7SUFDdEI7S0F4QkltUyx1QkF1QmtCblM7S0F4QmxCb1MsWUF3QmtCcFM7S0F6QmxCcVMsYUF5QmtCclM7S0F0QmxCc1MsVUFzQmtCdFM7S0FObEJ3QztJQWxDRnVQO01Bd0NvQi9SO2VBTFB1UztPQUFLLFdBRGhCL1AsTUF4Qm9ELE9BZnBEcVAsUUE2Q2tCN1IsR0FMUHVTO09BRFgvUCxlQXhDQW1QLEtBOENrQjNSLEdBTFB1Uzs7TUFBdUM7SUFDekMsSUFqQlRDLGFBaUJTLDBCQUZUaFEsTUF2QkV3UCxZQUdOUzs7S0FSTTtNQUFBQztNQURBQztNQUNBQyxVQUFBLFdBa0NNVixXQWxDTlE7TUFGSkcsaUNBRUlEO01BREFFLFVBQUEsNENBQUFIO01BREpJLG1DQUNJRCxlQURKRDtLQUFBLFdBQUFFOztJQWVFO0tBQUFDLFVBQUEsNEJBQUFSO0tBTEpTLG1DQUtJRCxlQUxKUDtLQUlJUyxVQUFBLDRDQUFBWjtLQUpKYSxtQ0FJSUQsZUFKSkQ7S0FHSUcsVUFBQSxvQkFBQWpCO0tBSEprQixtQ0FHSUQsZUFISkQ7S0FFSUcsVUFBQSw0Q0FBQWxCO0tBRkptQixtQ0FFSUQsZUFGSkQ7S0FDSUcsVUExdENKblAsWUEwdENJZ087S0FESm9CLG1DQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBNkI0QztZQUcxQ0MsU0FBTzFULEdBQUksT0FBSkEsUUFBMEM7WUFDakQyVCxXQUFTM1Q7SUFBSSxXQURiMFQsU0FDUzFUO0lBQUksT0FBQTtHQUFZO1lBZXpCNFQsT0FBSzVULEdBQUksT0FBSkEsUUFBd0M7WUFFN0M2VCxzQkFBdUJDLE1BQU01TztJQUMvQjtLQWp6QzRDLE9BQUEsNENBZ3pDbkI0TztLQWh6Q0MsT0FBQSxpQ0FnekNLNU87SUFDVCxPQUFBO0dBQW1EO1lBR3ZFNk8sdUJBQXVCL1QsR0FBRThUO0lBQzNCLE9BTEVELHNCQUl5QkMsTUFBRjlUO0dBQzRDO1lBR25FZ1UsZUFBYWhVLEdBQUU4VDtJQUNqQixHQUFHLDRDQURjQSxNQXY4Q2ZsVTs7Ozs7b0VBdThDZWtVOzs7Ozs7O0tBR2Y7O0lBQUEsT0FQQUMsdUJBSWEvVCxHQUFFOFQ7R0FNWTtZQUczQkcsNkJBQTZCalUsR0FBRThSO0lBQ2pDO0tBaDBDeUJrQyxpQkFrMEN2QixxQkFIK0JsQztLQS96Q1ZwTSxNQSt6Q1ExRjtLQTl6QzdCLE9BQUEsMkJBRHVCZ1UsZ0JBQUZ0TztJQUNyQixPQUFBO0dBaTBDdUM7WUFtQnZDd08sbUJBQW1CbFUsR0FBRThSO0lBQ3ZCLEdBQUcsb0JBRG9CQSxjQXhJckJ2Qjs7O2tEQUFBQTs7a0RBd0lxQnVCOzs7Ozs7OztJQUdwQixHQUFBLG9CQUhvQkEsY0FBRjlSOzt1REFBQUE7O2tEQUFFOFI7Ozs7Ozs7O0lBSWxCLE9BMUJIbUMsNkJBc0JtQmpVLEdBQUU4UjtHQUtvQjtZQUd6Q3FDLDZCQUE2Qm5VLEdBQUU4SDtJQU1qQyxPQWRFb00sbUJBUTZCbFUsR0FNVixxQkFOWThIO0dBTUU7WUFHakNzTSxvQkFBb0JwVTtJQUNaLElBQU5zTyxNQXZqQkFFLFVBc2pCa0J4TztJQUVuQixHQUFBLFdBaDhCRzRILFNBKzdCRjBHLE1BRUM7SUFFTyxJQUFOWSxRQTM3QkFwSCxJQTQzQko4TCxPQTBEb0I1VCxJQUNsQnNPO0lBS0MsT0FBQSxvQkFEQ1ksT0FMZ0JsUDs7a0JBVHBCbVUsNkJBU29CblUsR0FLaEJrUDtHQUcyQztZQUcvQ21GLHdCQUF3QkM7SUFDaEIsSUFBTmhHLE1BbGtCQUUsVUFpa0JzQjhGO0lBRXZCLEdBQUEsV0EzOEJHMU0sU0EwOEJGMEc7S0FsRko7TUFBQTs7Ozs7OztlQVZFMkQsNkIsZUEyRndCcUM7Ozs7Ozs7OztJQUdoQixJQUFOcEYsUUFwOEJFcEgsSUE0M0JKOEwsT0FxRXdCVSxRQUN0QmhHO0lBR0QsR0FBQSxvQkFEQ1ksT0FIc0JvRjtLQTNFMUI7TUFBQTs7Ozs7OztlQWhCRXJDLDZCLGVBMkZ3QnFDOzs7Ozs7Ozs7SUFLckIsT0F6QkhILDZCQW9Cd0JHLE9BR3RCcEY7R0FHOEI7WUFHaENxRiwrQkFBK0J2VTtJQUNYLElBQWxCcUosa0JBMXdCQTZFLGtCQXl3QjZCbE87SUFFOUIsR0FBQSxvQkFEQ3FKLGlCQUQ2QnJKLE9BaGhEaUIsT0FJaERMO0lBbWhEc0I7O0tBQUEsT0EvSnRCK1Isa0JBd0orQjFSO0tBTzdCLE9BQUE7S0FEQSxPQWpFRmlVLDZCQTJEK0JqVSxHQUM3QnFKO0lBTUEsT0FBQTtHQUFnRTtZQUdsRW1MLGlCQUFpQnhVLEdBQUksT0FweEJuQmlPLGtCQW94QmVqTyxNQUFtRDtZQUVwRXlVLCtCQUErQnpVLEdBQUksT0FoRm5DZ1UsZUFnRitCaFUsR0FBQUEsTUFBNkM7WUFDNUUwVSxlQUFlMVUsR0FBRThUO0lBQU8sT0F4RXhCRyw2QkF3RWVqVSxHQWpGZmdVLGVBaUZlaFUsR0FBRThUO0dBQTJEO1lBRTVFYSxZQTM4Qm1CQyxhQTI4Qkc1VTs7Y0FFbEI2VSxNQUFNN0wsR0FBSSxPQUFBLDhCQUZRaEosR0FFWmdKLEdBQTZCO0tBaUNyQjtNQTFOZDhMO1FBeUxBRDttQkF2dEJvQjdVO2VBaE1iNEksT0FnTWE1STs7cUJBaUZsQjZVLE1BQU03TCxHQUFJLE9BQUEsOEJBakZRaEosR0FpRlpnSixHQUE2QjtZQUNoQyxLQUFBLHNCQXRKUGlGLGtCQW9Fc0JqTzthQWtGdEIsTUFBQTtZQUN1QyxXQXZKdkNpTyxrQkFvRXNCak87WUFtRmYsS0FBQSxzQkF0SlBrTyxrQkFtRXNCbE87YUFtRnRCLE1BQUE7WUFtQkk7YUFuTUErVTtlQThLQUY7MEJBcUJZM0g7a0JBQ0QsV0E1S2ZjLFdBcUVzQmhPO2tCQXVHUixLQUFBO21CQUFQLE1BQUE7O2dDQUMyQmlRLGVBQVk3QjttQkFDckMsS0FBTyxxQkFEa0I2QixlQUFZN0I7b0JBQ3JDLE1BQUE7Ozs2QkFyR0h5RyxNQUFNN0w7cUJBQUksT0FBQSw4QkFvRzhCb0YsT0FwR2xDcEY7b0JBQWlDO29CQXVEdkM7cUJBbE1BZ007dUJBMklBSDtrQ0F1RFl6TDt3Q0FqVFdrRjsyQkFtVFgsZUFBQSxXQXpVaEIxRyxTQXNCMkIwRztzQ0FtVFg7OzRCQWpUaEIsS0FMQTlGLFNBeURPSSxNQXREb0IwRjs2QkFFM0IsTUFBQTs7NEJBQ0EsV0FIZXNHLGFBVmYzTSxNQWdFT1csTUF0RG9CMEY7NEJBSW5CLElBQUoyRyxJQVRKM00sS0EyRE9NLE1BdERvQjBGOzRCQUtuQixLQUFBLFdBM0JSMUcsU0EwQklxTjs2QkFDc0MsV0FaMUM5TSxLQTZET1MsTUFsREhxTTs2QkFDaUIsS0FBQSxpQ0FMTTNHOzhCQUszQixNQUFBOzs7NEJBQ1EsSUFBSnZHLElBYkpJLEtBNkRPUyxNQXREb0IwRjs0QkFPbkIsS0FBQSxXQTdCUjFHLFNBNEJJRzs2QkFDc0MsV0FaMUNPLEtBMkRPTSxNQWhESGI7NkJBQ2lCLEtBQUEsaUNBUE11Rzs4QkFPM0IsTUFBQTs7OzsyQkFBd0Q7eUNBTmpCNEc7NEIsT0FzeUI3QzNOLDRCLGNBdHlCNkMyTjs7MkJBQUssbUNBRGpCNUc7MkJBc1RjLE9BM1F6Q3hGO29DQVdPRjtvQ0F0RG9CMEY7NkNBc1RtQkE7cUNBQ2pDLFdBdUMrQkY7cUNBdkN4QixLQUFBLHNCQXJVcEJ0RyxJQW9FT2MsTUFnUXVDMEY7c0NBQ2pDLE1BQUE7O2dEQXVDK0JGO3FDQW5DeEIsS0FBQSxzQkF6VXBCdEcsSUFvRU9jLE1BZ1F1QzBGO3NDQUtqQyxNQUFBOztnREFyRU90TztxQ0F5RUEsS0FBQSxzQkE3VXBCOEgsSUFvRU9jLE1BZ1F1QzBGO3NDQVNqQyxNQUFBOztxQ0FJUSxXQTJCdUJGLFVBM0J2QixPQTVVckJsRyxZQStET1UsTUFnUXVDMEY7cUNBYTFCLEdBQUE7c0NBQ0ssT0FBQSxXQXBVVnNHLGFBVmYzTSxNQWdFT1csTUFnUXVDMEY7cUNBYWpDLE1BQUE7O29DQUN5QzswQkFBRTswQkFsQjdCLE9BQUEsMkJBRFhsRjt5QkFtQnlDO3FCQXJOckQrTDt1QkEySUFOO2tDQWdEa0J4TDswQkFBZjsyQkFBZStMLFNBcmJ0QnJPLGlCQXllNENxSCxVQUFBQTsyQkFwRHRCaUg7MkJBQUFDOzJCQUFBQzttQ0FBQUMsV0FBQUMsT0FBQUM7MkJBQUEsT0FBQSxzQkFBQUQsT0FBQUM7MEJBQUs7OzttQ0FBTGpXO21DQThERWtIO21DQTlERjZPO21DQUFBRDttQ0FBQUQ7bUNBQUFEO21DQUFBRDttQ0FBQS9MO3lCQUt1QjtxQkFoTXpDc007dUJBMklBZDtrQ0F1Q1l0TDswQkFDVCxLQUFPLHNCQURFQTsyQkFDVCxNQUFBOzswQkFDRztrQ0FBQSxzQkFGTUE7MEJBRU4sV0FBQTswQkFHQzsyQkFEYXFNLE1BQ2IsZ0JBTEtyTSxpQkE2RDRCNkU7MkJBekRwQmdIOzJCQUFBUzsyQkFBQVI7MkJBQUFDOzJCQUFBQzttQ0FBQUMsV0FBQU0sT0FBQUM7MkJBQUEsT0FBQSxtQkFBQUQsT0FBQUM7MEJBQVU7OzttQ0FBVnZXO21DQUFBcVc7bUNBQUFMO21DQUFBRDttQ0FBQUQ7bUNBQUFEO21DQUFBRDttQ0FBQVE7eUJBRVE7cUJBeEw1Qkk7dUJBMklBbkI7a0NBK0JZcEw7d0NBR2tDd0wsR0F0T3RDbE07MkJBdU9ELEdBQUcsV0FuVGRuQixTQTRFWW1CLFFBd09JLE9BRmtDa007MkJBck81QyxJQUFKelMsWUFDQXlHLGNBRlVGLFFBR1ZHOztpQ0FBQUEsc0JBbU9nRCtMLElBck9oRHpTOzRCQUFBQTs0QkFLUyxJQUFQMkcsU0FqRUpiLEtBMkRPTSxNQUVMSzs0QkFLQyxHQUFBLHNCQURDRSxRQU5RSjs2QkFHVkc7OzZCQURBRCxhQUlFRTs7MEJBbU80QzswQkFIckMsV0FBQSwyQkFrRWlDaUY7MEJBcEU5QixHQUFBLHFCQURFM0U7MEJBQ1QsTUFBQTs7eUJBSzJDO3FCQVozQjJMLFNBcEN6QjdHLCtCQStHOENILFVBQUFBO3FCQS9PeEM2SDt1QkEySUFwQjtrQ0F5Qm1CcUI7OEJBQUFMLG9CQUFBUixXQUFBQyxhQUFBQzttQ0FBQUMsV0FBQVcsT0FBQUM7MkJBQUEsT0FBQSxtQkFBQUQsT0FBQUM7MEJBQVU7OzttQ0FBVjdXO21DQUFBc1c7bUNBQUFMO21DQUFBRDttQ0FBQUQ7bUNBQUFEO21DQUFBRDttQ0FBQWM7O3FCQXBLbkJHO3VCQTJJQXhCO2tDQWlCWTFOOzBCQUNUOzRCQUFPO3VDQURFQSwyQkF0YWRiLFNBeWYwQzhIOzswQkFsRnJDLE1BQUE7O3lCQUkyQztxQkFqSzlDa0k7dUJBMklBekI7a0NBYWtCakw7MEJBQWY7MkJBQWV3TCxTQXZhdEIvTyxTQThmNEMrSDsyQkF2RnRCeUg7MkJBQUFSOzJCQUFBQzsyQkFBQUM7bUNBQUFDLFdBQUFlLE9BQUFDOzJCQUFBLE9BQUEsbUJBQUFELE9BQUFDOzBCQUFVOzs7bUNBQVZsWDttQ0FBQXVXO21DQUFBTDttQ0FBQUQ7bUNBQUFEO21DQUFBRDttQ0FBQUQ7bUNBQUF4TDt5QkFFNkI7cUJBMUovQzZNO3VCQTJJQTVCO2tDQVNZdE87MEJBQ1QsR0FBTyxtQkFERUE7MEJBQ1QsTUFBQTs7eUJBQTREO3FCQUo1Q21RLFdBcGFyQnRRLFNBa2dCMENnSTtxQkEvT3hDdUk7dUJBMklBOUI7a0NBTW1CcUI7OEJBQUFiLFdBQUFDLGFBQUFDO21DQUFBQyxXQUFBb0IsT0FBQUM7MkJBQUEsT0FBQSxXQXRhekIzUSxXQXNheUIwUSxPQUFBQzswQkFBWTs7O21DQUFaeFg7bUNBQUE4RzttQ0FBQXFQO21DQUFBRDttQ0FBQUQ7bUNBQUFEO21DQUFBcUI7bUNBQUFSOztxQkFqSm5CWTt1QkEySUFqQztrQ0FHZ0J4VDswQkFBUSxHQUFPLHFCQUFmQTswQkFBUSxNQUFBOzt5QkFBa0Q7cUJBOUkxRTBWO3VCQTJJQWxDO2tDQUVpQi9LOzBCQUFTLEdBQU8scUJBQWhCQTswQkFBUyxNQUFBOzt5QkFBbUI7b0JBN0k3QyxXQUFBaU4sV0FFSnRNO29CQUZJLFdBQUFxTSxVQUlKdE07b0JBSkksV0FBQW1NLGdCQU1KcE07b0JBTkksV0FBQWtNLG1CQVNKbk07b0JBVEksV0FBQWdNLG1CQVVKak07b0JBVkk7c0JBQUFnTSwrQkFXSmpNO29CQVhJO3NCQUFBNkwsOEJBYUo5TDtvQkFiSSxXQUFBNkwsWUFlSTlMO29CQWZKLFdBQUF5TCxxQkFrQkkxTDtvQkFsQkosV0FBQWtMLHFCQW1CSW5MO29CQUdSLE9BQUEsV0F0QklnTCxXQXNCSmpMO21CQStMMkQ7aUNBM0VoQmlOO29CLE9BMUkvQ3RNLDRCLGVBMEkrQ3NNOzttQkFBVyxvQ0FxR1Y1STttQkFHbEMsV0FBQSxxQkFIc0I2QjttQkFHdEIsV0FBQTttQkFDRTtvQkFBQSxPQUpvQkE7b0JBS25CZ0gsOEJBUEMvSjtvQkFTVTBJLE1BUG9CeEg7b0JBT3BCZ0gsU0FFTCxvQkFKTjZCO29CQUVXcEI7b0JBQUFSO29CQUFBQztvQkFBQUM7NEJBQUFDLFdBQUEwQixPQUFBQztvQkFBQSxPQUFBLG1CQUFBRCxPQUFBQzttQkFBVTs7O3FCQUFWL1g7cUJBQUF5VztxQkFBQUw7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBUTttQkFNWDtvQkFIV3dCLFFBVm9CaEo7b0JBVXBCc0ksV0F4TnhCMUosd0JBOE00Q29CLE9BSy9CNkk7b0JBS1d4VjtvQkFBQTRWO29CQUFBQzs0QkFBQUMsYUFBQUMsT0FBQUM7b0JBQUEsT0FBQSxzQkFBQUQsT0FBQUM7bUJBQUs7Ozs0QkFBTHRZOzRCQUFBd0g7NEJBQUE0UTs0QkFBQUQ7NEJBQUFEOzRCQUFBNVY7NEJBQUFpVjs0QkFBQVU7a0JBS2dEO2tCQWY3QyxPQUFBLDJCQUZibEs7aUJBaUIyRDthQXBOdkV3SztlQThLQTdDOzBCQWFZMUg7a0JBQ1Q7O29CQUFPO2lDQURFQSxxQkFsS2hCYyxrQkFvRXNCak87bUJBK0ZmLE1BQUE7O2tCQUNPOztvQkFBQTtpQ0FGRW1OLHFCQWpLaEJlLGtCQW1Fc0JsTzttQkFnR2YsTUFBQTs7a0JBQ08sZUFBQSxXQTdXWjRILFNBNFFvQjVIOzZCQWlHUjtrQkFFRTtvQkFBQSxvQkFMQW1OLHFCQWxXZHJGLElBb1FvQjlILE1BQUFBOztrQkFtR2IsTUFBQTs7aUJBQ29FO2FBak16RTJYO2VBOEtBOUM7MEJBT1l2RztrQkFDRixlQUFBLFdBcldaMUcsU0FvV2MwRzs2QkFDRjtrQkFFRSxLQXBWZDlGLFNBeVBvQnhJLE1Bd0ZOc087bUJBR1AsTUFBQTs7a0JBQ3dDLFdBaFcvQ3hHLElBb1FvQjlILE1Bd0ZOc087a0JBSUEsR0FBQSxvQkE1Rk10TztrQkE0RmIsTUFBQTs7aUJBQXdFO2FBekw3RTRYO2VBOEtBL0M7MEJBMVR1QjdVO3NDO2tCQUFJLE9BQUEsb0NBQUpBOzthQTRJdkJnVztlQThLQW5COzBCQUlrQnBMO2tCQUFVLEdBQU8scUJBQWpCQTtrQkFBVSxNQUFBOztpQkFBb0I7WUFsTGhELFdBQUF1TSxZQUNJbEk7WUFESixXQUFBOEosVUFFSS9KO1lBRkosV0FBQThKLGFBSUkvSjtZQUpKLFdBQUE4Six5QkFNSS9KO1lBQ1IsT0FBQSxXQVBJb0gsWUFPSnJIO1dBNk02RTt5QkF2Q3RDbUs7cUJBM1RsQ0MsZ0I7O2FBK0lHQyxhQTRLK0JGO2FBM1R2Q0csV0EyVHVDSDthQXpLL0JJLGNBeUsrQko7YUF2Sy9CSywwQkF1SytCTDthQXRLdkNNLGFBc0t1Q047YUE3SzNDTztnQyxPQTFDRTFOLFlBcEdPb047WUFxSkw7YUFBQU8sVUFBQSw0QkFBQUY7YUFQSkcsbUNBT0lELGVBUEpEO2FBTVlHLFVBQUEsV0F5TWtCNVIsYUF6TWxCdVI7YUFOWk0sbUNBTVlELGVBTlpEO2FBSVlHLFVBMG9CWmxSLFlBNXhCU3VRLFVBa0pHRzthQUpaUyxtQ0FJWUQsZUFKWkQ7Z0MsT0FuTEVwUixtQkFxQ08wUTtZQUFMO2FBZ0pRYSxVQWhKUixvQ0FBQVg7YUE4SUpZLG1DQUVZRCxlQUZaRDthQUNZRyxVQUFBLHNCQUFBZDthQURaZSxtQ0FDWUQsZUFEWkQ7WUFBQSxXQUFBRTs7V0E2S3lELE9BQUEsb0NBaEYvQjlZOztNQThoQnBCK1k7UUF5TEFsRTttQkE4QmtCcEU7V0FBZjtZQUFlMkUsU0EvQ3RCYiwrQkFlc0J2VTtZQWdDQTZWO1lBQUFSO1lBQUFDO1lBQUFDO29CQUFBQyxXQUFBd0QsT0FBQUM7WUFBQSxPQUFBLDZDQUFBRCxPQUFBQztXQUFTOzs7b0JBQVRoYTtvQkFBQTRXO29CQUFBTDtvQkFBQUQ7b0JBQUFEO29CQUFBRDtvQkFBQUQ7b0JBQUEzRTtVQUU2QjtNQXpOL0N5STtRQXlMQXJFO21CQXlCa0JsRTtXQUFmO1lBQWV5RSxTQS9FdEJsQixtQkFvRHNCbFUsR0FMdEJ3VSxpQkFLc0J4VTtZQTJCQTZWO1lBQUFSO1lBQUFDO1lBQUFDO29CQUFBQyxXQUFBMkQsT0FBQUM7WUFBQSxPQUFBLDZDQUFBRCxPQUFBQztXQUFTOzs7b0JBQVRwYTtvQkFBQTZXO29CQUFBTDtvQkFBQUQ7b0JBQUFEO29CQUFBRDtvQkFBQUQ7b0JBQUF6RTtVQUVzQztNQXBOeEQwSTtRQXlMQXhFO21CQWdCWWhFO1dBQ1QsS0FBTyw0Q0FERUEsS0FsQk03UTtZQW1CZixNQUFBO1dBQ08sS0FBQSw0Q0FGRTZRLEtBN2lEaEJsUjtZQStpRE8sTUFBQTtXQUlJLElBQUEsT0FqekJUc08sa0JBeXhCb0JqTyxPQXVCWCxPQTFHWGdVLGVBbUZzQmhVLEdBQUFBO1dBcUJSLEdBQUE7V0FBUCxNQUFBO1VBR3NEO01BL016RHNaO1FBeUxBekU7bUJBWWtCOUQ7V0FIZjtZQUFlNkUsTUE5RnRCNUIsZUFtRnNCaFUsR0EzaER0Qkw7WUFzaURzQmtXO1lBQUFSO1lBQUFDO1lBQUFDO29CQUFBQyxXQUFBK0QsT0FBQUM7WUFBQSxPQUFBLHFCQUFBRCxPQUFBQztXQUFjOzs7YUFBZHphO2FBQUE4VzthQUFBTDthQUFBRDthQUFBRDthQUFBRDthQUdBdEU7YUFIQTZFO1dBS2I7WUFGYXdCLFFBakd0QnBELGVBbUZzQmhVLEdBcER0QmtVLG1CQW9Ec0JsVSxHQWNBK1E7WUFBQTBJO1lBQUFoWTtZQUFBNFY7WUFBQUM7b0JBQUFDLGFBQUFtQyxPQUFBQztZQUFBLE9BQUEscUJBQUFELE9BQUFDO1dBQWM7OztvQkFBZDdhO29CQUFBMmE7b0JBQUFsQztvQkFBQUQ7b0JBQUFEO29CQUFBNVY7b0JBQUFzUDtvQkFBQXFHO1VBRTJDO01Bdk03RHdDO1FBeUxBL0U7bUJBSVk3RDtXQUNULEtBQU8sNENBREVBLE9BaGlEaEJwUjtZQWlpRE8sTUFBQTtXQUNPLEdBQUEsNENBRkVvUixPQWppRGhCclI7O1dBbWlETyxNQUFBO1VBQXNDO01BL0x6Q2thLGFBeUxBaEYsTUFwMUNGelA7S0EycENFLFdBQUF5VSxZQUNKckk7S0FESSxXQUFBb0ksV0FFSnJJO0tBRkksV0FBQStILHNCQUlKaEk7S0FKSSxXQUFBK0gsU0FLSWhJO0tBTEosV0FBQTZILDRCQU1JOUg7S0FOSixXQUFBMkgsNEJBT0k1SDtLQUNSLFdBUkkyRCxvQkFRSjVEO0tBbU5VLE9BL0xWYTtjQTJKc0IvUjt1QkFvQ1B1UztlQUNiO2dCQUdJLE9BM0hOeUIsZUFtRnNCaFUsR0FqS3BCMlIsS0FpS29CM1IsR0FvQ1B1UztnQkFHVCxPQXRNSlQsYUErSm9COVIsR0FvQ1B1UztlQUNOLEtBQUE7Z0JBQVAsTUFBQTs7ZUFPSTtnQkFBQSxPQTlDTm1DLGVBRXNCMVUsR0FBQUE7Z0JBMkNoQixPQTdDTjBVLGVBRXNCMVUsR0FqS3BCMlIsS0FpS29CM1IsR0FvQ1B1UztlQUtOLEtBQUE7Z0JBQVAsTUFBQTs7ZUFLd0Q7Z0JBQUEsT0FyTjFEYixrQkF1S3NCMVI7Z0JBOENlLE9BQUEsNENBOUNmQTtnQkE4Q0osT0EvTWhCMlIsS0FpS29CM1IsR0FvQ1B1UztlQVNOLEdBQUE7O2VBQVAsTUFBQTtjQUM2RTtJQUFDO2tCQTdDekN1SDtLLE9BcEh2QzdILDZCLGVBb0h1QzZIOztJQUFLLE9BQUEsb0NBRHRCOVo7R0E4QzJEO09BR2pGK1o7WUFFQUMsY0FBY2hhLEdBQUdpYSxJQUFLQztJQUNyQixXQUFBLDRDQURnQkQsSUFBSGphO0lBQ2I7S0FEYUEsT0FBR2lhO0tBSVAsSUFsYm9CRSxvQkFvUzlCcEcsdUJBMEljL1QsR0FBR2lhO0tBQUhqYSxPQTdIZGlVLDZCQTZIY2pVLEdBOWFnQm1hO1NBQUh6VSxNQThhYjFGO0tBN2FYLEdBQUEsc0JBRDJCbWEsbUJBOVo1QmxNLGtCQThaeUJ2STs7O01BT1A7T0FBZHdDO09BQ0FrUztPQUNBbk4saUNBQWlDLG1CQVRUa047T0FVeEJqTixTQVZxQnhIO09BV3JCaUosZUExYUpYLFdBK1p5QnRJOztPQVluQixLQUFBLHFCQUxGd0MsZ0JBSUF5RztRQW9CRCxHQUFBLHNCQS9CeUJ3TCxtQkFBSHpVO1NBQUFBLFNBbUNWLFdBMW9CYmlDO1NBdW1CdUJqQyxTQTlaekJ1SSxrQkE4WnlCdkk7O29CQVFyQjBVOzs7T0FLVTtlQU5WbFM7UUF4RERrRyx5QkEyRENsQjtRQUlFbU4seUJBL0RIak07UUFDQWtNLCtCQXlEQ3JOO1FBckRGc047VUFwWkF2Tix3QkErWUNvQixPQUNBa007UUFVREU7VUE5WkF6TjtZQW1aQ3FCO1lBZUM7O2NBVkZtTTtjQVlLLGtCQWpCSm5NLFVBaURzQjFJO1FBOUJ2QitVLDhCQVJBRDtRQVNBM0wsYUExYUFoQyxLQXNaQ3VCLE9BbUJEcU07UUFFQTdRLGdCQXJCQ3dFO1FBc0JEaEYsUUF0QkNnRjs7UUF1QkM7O1VBQUE7dUJBSkZxTSw0QkFkQUY7O1FBbUJDLEdBQUEscUJBeEJBbk07U0FtQkRxTSw2QkFkQUY7O1NBeUJZO2lCQVZaMUw7VUEvQzBDOUYseUJBaUQxQ0s7Z0JBU08sV0FwbEJQeEIsU0EwaEIwQ21CO1VBNER2QixJQUFBLE9BQUEsV0F2bEJuQnBCLG1CQTBrQkFrSDtVQWFFLGlCQVhGekY7VUE5Q1UsSUFEVlIsT0EwRXVCbEQsUUF6RXZCdUQsY0FIMENGLFFBSTFDRzs7Z0JBQUFBO1dBSVMsSUFBUEMsU0FqaEJGYixLQTJnQkFNLE1BQ0FLO1dBd0JDbUYsV0FBQUE7V0FqQkEsR0FBQSxzQkE1aEJEdEcsSUFvaEJBYyxNQUNBSyxhQXlFMEJrUjtZQTVJNUJwTCxRQTRJeUJySixLQXpFdkJ1RDs7WUF5RXVCdkQsU0FBQUE7WUE5RHZCLFdBNGVrQndVLGdCQXZmbEJqUjtZQVlBLFdBbGlCQXBCLE1BcWhCQWUsTUFDQUs7O1dBYUMsR0FBQSxzQkFSQ0UsUUFSd0NKO1lBSTFDRzs7WUFEQUQsYUFLRUU7OztTQXVDRjBGLFlBemFBL0IsVUFxWkNzQixPQW9CRFM7U0FEQTRMO1VBN3JCQTFULGlCQTZyQkEwVCw0QkFFQTdROzs7T0FyQkN3RSxXQUtEbU07T0FMQ25NLFlBMXFCRHJILGlCQStxQkF3VCx5QkFMQ25NO09Bc0VFLEdBQUEsb0JBdEVGQSxVQStER2lNLHlCQVBGblMsaUJBSUF5RyxjQUhBeUw7O1FBREFsUyxpQkFBQUE7UUFFQStFLGdDQTFERG1COzs7O2VBK2RTcE8sT0FsRWR1VSwrQkFrRWN2VTtnQkFGZCtaOzs7OztHQW1CK0Q7WUFHL0RXLFNBQVF6SixRQUFRRDtJQUNsQjtNQUFHOztRQURlQTs7Ozs7Ozs7MkRBQUFBOzs7Ozs7O0tBR2hCOztRQTVaSXpPLGFBeVpJME8sV0FwZ0NPMEosYUFvZ0NQMUo7a0JBL1lDbkgsY0FFQ3ZIO0tBSEg7TUFFNkMySztNQUEzQjBOO01BQWZyVTtNQUdLcUQsZ0JBdnlCWHZELFNBb3lCTUU7TUFJS29EO1FBelpiNEUsK0JBc1pRaE0sWUFEQWdFO01BT0tZLDRCQXR5QlRiLFNBK3hCSUM7TUFVS2dEO1FBaHhCWHJDO1VBc3dCcUIwVCwyQkFPVnpUO01BcnhCT2tDO1FBRGxCdEMsaUJBeXhCV3dDLGlCQU5BSTtNQTBCSSxPQUFBLFdBenJCZmhDO01Bd3JCc0MsT0Foc0N4Q3BILEtBb3FDUWdDO01BNEJjLE9BQUE7TUFEUCxPQUFBO01BWkY2TDs7U0FqQk50RTtTQUVDdkg7U0F6eUJKNkQsU0F5eUJJN0Q7U0FEQWdFO1NBR0txRDtTQUlBekM7U0FIQXdDOztTQU1BSjtTQXh4Qk9GOztNQWl6QlQsV0FuQkUrRSxPQWhCcUNsQjtNQTl3QnZCO1FBQUEsc0JBQVA3RDs7V0FBeUMsbUJBQXpDQTtLQSt5QlgsV0FodENUbEosU0FnckNRb0MsWUFEQWdFO0lBbUNxQjtJQU1wQjtLQS9DRDJHO09BQ1IsMEJBTkUzSztLQW9ETyxPQUFBLDJCQS9DRDJLO0tBNkNFLE9BQUEsV0Fsc0JSdkY7T0FxQ1dnVDtTQUFXeFosTUFBWHdaLGVBQUFwVixXQUFXcEU7O1NBQVhvRTtJQTJwQmY7S0FBQTs7O1FBM3BCa0Msc0RBQW5CQTs7Ozs7O0tBeWdDYnZGOztRQUxNaVI7UUFBUUQ7UUFsS2hCNkMsc0JBaDhDQWxVLFVBa21EUXNSOzs7UUFsbURSdFI7O0lBdW1ERUssT0EzRkZ1VSwrQkEyRkV2VTtJQXpCRmdhO01BeUJFaGE7TUFMY2dSOztPQW1CaUMsTUFBQTtNQUFZO0lBQS9ELE9BZEloUjtHQWVIO1lBR0M2YSxvQkFBb0I3YSxHQUFHZ0ksSUFBR0M7SUFLbkIsV0F2SlBpTSxtQkFrSm9CbFUsR0FBR2dJO0lBRXZCLE9BbmpCRXFJLGFBaWpCa0JyUSxNQUFHZ0ksVUFBR0M7R0FNakI7WUFtQlQ2UywwQkFBMEI5YSxHQUFHZ0k7SUFDL0IsR0FBRyw0Q0FENEJBLElBQUhoSTs7Ozs7b0VBQUFBOzs7OztvRUFBR2dJOzs7Ozs7Ozs7SUFFNUIsV0FBQSw0Q0FGNEJBLElBQUhoSTtJQUV6QixXQUFBOzs7OzttRUFGeUJBOzs7OzttRUFBR2dJOzs7Ozs7OztHQUdpQjtZQUc5QytTLE1BQUkvYSxHQUFHZ0ksSUFBR0M7SUFOVjZTLDBCQU1JOWEsR0FBR2dJO0lBS0MsV0F6TlIrTCx1QkFvTkkvVCxHQUFHZ0k7SUFHUCxPQW5sQkVxSSxhQWdsQkVyUSxZQUFHZ0ksSUFBR0M7R0FPRDtZQUdUK1MsT0FBT2hiLEdBQUV1UztJQUFRLElBMVlSN00sTUEwWUYxRixNQXpZSDRJLE9BREtsRCxRQUVMNEksTUFyckJBM0YsZ0JBb3JCQUMsTUF5WUsySjtJQS9aUGpDLGdCQXFCTzVLLEtBRUw0STtJQUNKLE9BQUEsV0ExdEJJekcsTUF3dEJBZSxNQUNBMEY7R0F3WXlEO1lBQzdEMk0sTUFBTWpiO0lBQUksSUFoV0YwRixNQWdXRjFGLE1BL1ZDLFdBcGtCTCtOLFNBbWtCTXJJOztLQUFBQTtLQU1OO01BRklrRCxPQUpFbEQ7TUFLRndWLG9CQUFTNU0sS0FBTSxPQUFBLFdBdndCakJ6RyxNQXN3QkVlLE1BQ1MwRixLQUFnQztNQUN6Q3BCLFNBTkV4SDthQU1Gd0g7OztVQUNKaEY7O09BQ2MsSUFBUmtHLHlCQUZGbEIsUUFDSmhGLGlCQUFBQTtPQUVLLEdBQUEscUJBRENrRztRQUFBQTtZQUlFaEYsUUFKRmdGLGtCQUlFaEY7O2FBQ0ppRjs7VUFDWSxJQUFOQyx1QkFGRmxGLE9BQ0ppRixnQkFBQUE7aUJBRVMsV0F4eEJYekcsU0F1eEJRMEc7V0F0dEJSeEYsS0E0c0JFRixNQVVNMEYsS0FUTjRNO1dBYTBCLFdBQUEsV0E1eEI1QnZUO1dBNHhCTSxpQkFOQXlCLE9BQ0ppRixnQkFBQUE7O1VBQUEsV0FBQUE7c0JBQUFBO2NBQUFBOzs7O09BTkosV0FBQW5HO21CQUFBQTtXQUFBQTs7Ozs7Ozs7R0F5VjZDO1lBQy9DaVQsSUFBSW5iLEdBQUV1UyxPQUFRLElBbmFSN00sTUFtYUYxRixNQW5hVSxPQXByQlZ3SSxTQW9yQkU5QyxRQW1hQTZNLE9BQWlEO1lBRXZENkksZUFBZXBiLEdBQUV1UyxPQW5tQ0R6SyxLQUVERTtJQWttQ2pCLE9BSEVtVCxJQUVlbmIsR0FBRXVTLFFBRWQ7SUF0Qkh1SSwwQkFvQmU5YSxHQWptQ0FnSTtRQW92Qk50QyxNQTZXTTFGO0lBbm1CYm9RLGlCQXNQTzFLLEtBdHZCT29DO0lBeXZCTixJQXZ2QkNjLE9Bb3ZCRmxELFFBcHZCSTRJLE1BZ0NUM0YsZ0JBaENPQyxNQWltQ00ySjtJQW5hZmpDLGdCQXNETzVLLEtBcHZCSTRJO0lBRk8sK0JBRVQxRixNQUFFMEYsMkJBRkd4RztJQUVHLCtCQUFSYyxNQUFFMEYsMkJBQUV0RztJQTB2QmYsT0EvUUVtSSxpQkF5UU96SyxLQXB2Qkk0STtHQXFtQ3NDO1lBR25EK00sV0FBV3JiLEdBQUV1UyxPQUFPdks7SUFBSyxPQVB6Qm9ULGVBT1dwYixHQUFFdVMsT0F6T2J3Qix1QkF5T1cvVCxHQUFTZ0ksS0FBQUE7R0FBa0U7WUFFdEZzVCwyQkFBMkJ0YixHQUFFdVMsT0FBT3ZLO0lBQ3RDLE9BVkVvVCxlQVMyQnBiLEdBQUV1UyxPQUFPdkssSUF4TXBDa00sbUJBd00yQmxVLEdBQVNnSTtHQUNzQjtZQUcxRHVULHVCQUF1QnZiO0lBQ2YsSUFBTnNPLE1BbHZCQUUsVUFpdkJxQnhPO0lBRXRCLE9BQUEsV0EzbkNHNEgsU0EwbkNGMEcsZUFsbkNFeEcsSUE0M0JKOEwsT0FxUHVCNVQsSUFDckJzTztHQUMyRTtZQUc3RWtOLDJCQUEyQkM7SUFDbkIsSUFBTm5OLE1BdnZCQUUsVUFzdkJ5QmlOO0lBRTFCLEtBQUEsV0Fob0NHN1QsU0ErbkNGMEcsTUFPQyxPQTluQ0N4RyxJQTQzQko4TCxPQTBQMkI2SCxRQUN6Qm5OO0lBR0Y7S0FBQTs7Ozs7OztjQXBSQTJELDZCLGVBZ1IyQndKOzs7Ozs7OztHQVFLO1lBR2hDQyx1QkFBdUIxYixHQWpqQ0MrSTtJQWtqQzFCO0tBbGpDcUJILE9BNHlCbkJnTCxPQXFRdUI1VDtLQWpqQ1EyYixXQWhGM0I3VCxJQWdGZWMsTUFBS0c7S0FDbEI2UztLQUNBM1MsY0FGa0JGO0tBR2xCRzs7VUFBQUEsc0JBRkEwUztLQUlTLElBQVB6UyxTQTVFSmIsS0F1RWVNLE1BRWJLO0tBSUMsR0FBQSxvQkF0RkhuQixJQWdGZWMsTUFFYkssYUFGeUIwUztNQU9RLFdBTmpDQyxtQkFNaUMsT0FyRm5DNVQsR0E4RWVZLE1BRWJLO01BREEyUztPQU1xQjs7S0FDcEIsR0FBQSxzQkFIQ3pTLFFBTGdCSjtNQUdsQkc7O01BREFELGFBR0VFOztHQThpQ2dFO1lBR3hFMFMsdUJBQXVCN2IsR0F6aUNDK0k7SUEwaUMxQjtLQTFpQ3FCSCxPQSt4Qm5CZ0wsT0EwUXVCNVQ7S0F6aUNRMmIsV0E3RjNCN1QsSUE2RmVjLE1BQUtHO0tBQ2xCK1M7S0FDQTdTLGNBRmtCRjtLQUdsQkc7O1VBQUFBLHNCQUZBNFM7S0FJUyxJQUFQM1MsU0F6RkpiLEtBb0ZlTSxNQUViSztLQWNDLEdBQUEsb0JBN0dIbkIsSUE2RmVjLE1BRWJLLGFBRnlCMFM7TUFpQlEsV0FoQmpDRyxtQkFnQmlDLE9BNUduQzlULEdBMkZlWSxNQUViSztNQURBNlM7T0FnQnFCOztLQUNwQixHQUFBLHNCQWJDM1MsUUFMZ0JKO01BR2xCRzs7TUFEQUQsYUFHRUU7O0dBc2lDZ0U7WUFHeEU0UywrQkFBK0IvYjtJQUN2QixJQUFOc08sTUE1d0JBRSxVQTJ3QjZCeE87SUFFOUIsT0FBQSxXQXJwQ0c0SCxTQW9wQ0YwRyxlQVhGb04sdUJBVStCMWIsR0FDN0JzTztHQUMwRTtZQUc1RTBOLCtCQUErQmhjO0lBQ3ZCLElBQU5zTyxNQWp4QkFFLFVBZ3hCNkJ4TztJQUU5QixPQUFBLFdBMXBDRzRILFNBeXBDRjBHLGVBWEZ1Tix1QkFVK0I3YixHQUM3QnNPO0dBQzBFO1lBRzVFMk4saUNBQW1DQztJQUMzQixJQUFONU4sTUF0eEJBRSxVQXF4QmlDME47SUFFbEMsR0FBQSxXQS9wQ0d0VSxTQThwQ0YwRztLQUdGO01BQUE7Ozs7Ozs7ZUFuVEEyRCw2QixlQStTbUNpSzs7Ozs7OztLQUluQzs7SUFBQSxPQXhCQVIsdUJBb0JtQ1EsT0FDakM1TjtHQU93QjtZQUcxQjZOLGlDQUFtQ0M7SUFDM0IsSUFBTjlOLE1BanlCQUUsVUFneUJpQzROO0lBRWxDLEdBQUEsV0ExcUNHeFUsU0F5cUNGMEc7S0FHRjtNQUFBOzs7Ozs7O2VBOVRBMkQsNkIsZUEwVG1DbUs7Ozs7Ozs7S0FJbkM7O0lBQUEsT0E5QkFQLHVCQTBCbUNPLE9BQ2pDOU47R0FPd0I7WUFHMUIrTixpQkFBaUJyYyxHQUFHc2M7SUFDdEI7S0EvYzJDekwsTUE4Y3hCN1E7S0E5Y21COEgsTUF1UHBDME0saUJBdU5pQnhVO0tBOWNFMEYsTUE4Y0YxRjtLQTdjYm9PLHlCQURlMUk7S0FFaEIsT0FBQSxxQkFEQzBJO0lBQ0Q7S0FFVTtNQUFQUyxTQTFrQkZoQyxLQXVrQkF1QixPQURnQ3RHO01BSzlCc0IsUUFKRmdGO01BS0V4RixPQU5hbEQ7TUFPYnFELDZCQUZBSyxPQURBeUYsWUFBQUE7TUFJRyxXQUFBLFdBN3VCTGpILFNBNHVCRW1COztNQUdZLElBQVZFLGNBSEZGLFdBSUVHOztZQUFBQTtPQUdTLElBRFBvRixNQUhGckYsWUFJRUUsU0FsdUJOYixLQTB0QkVNLE1BT0kwRjtPQUVELEdBQUEsc0JBRENuRixRQVBKSjtRQUlFRzs7UUFEQUQsYUFJRUU7T0FFYyxXQTN1QnBCbkIsR0FpdUJFWSxNQU9JMEY7T0FHRCxHQUFBLGtEQWhCZ0N1QztRQWtCakMsV0E0Yll5TCxjQWpjVmhPO1FBekNSZ0MsZ0JBNEJpQjVLLEtBYVQ0STtRQU9GLFdBbHZCSnpHLE1Bb3VCRWUsTUFPSTBGO1FBTkp2Riw0QkFGQUssT0FEQXlGLFlBQUFBOzs7Ozs7Ozs7OztHQStjSTs7Ozs7Ozs7O1FBOWtEUnJOO1FBNUJBSztRQVpBSjtRQTRDSVk7UUFBQUE7UUFDQVQ7UUFoQ0pFO1FBSUFJO1FBSEFIO1FBQ0FDO1FBQ0FDO1FBRUFFO1FBQ0FDOztPQXl4Q0Y2UDtPQXJEQVI7O1dBSUZsSyxhQUVJRyxRQUNBaUssTUFFQUcsY0FEQUQ7T0FnS0Y4Qzs7UUF4OUNFN1Q7UUFkSk47UUEwSmNJO1FBeEpWZjtRQWtCQW1CO1FBMEdBTztRQTFIQVo7O1FBNEhKZ0M7UUFBQTBCO1FBb0JJZTtRQWFBRTtRQTFCQUo7UUFMQTNDO1FBNkNBc0Q7UUFQQUQ7T0FxNENGOFU7T0E5T0FoSjtPQVhRYjtPQUhSRztPQXlFQTJDO09BREFEO09BOUNBM0I7T0F3RUFpQztPQThFQVE7T0EvQ0FOO09Ba0RBUTtPQXFEQXNGO09BK0pBcUM7T0FsWVE1TDtPQTJLUitEO09BRUFDO09BZ0lBc0c7T0EvQkFGO09BMkNBTTtPQUZBSDtPQVdBSztPQUVBQztPQVpBTDtPQWdCQU07T0FLQUM7T0FxQkFPO09BS0FDO09BS0FDO09BV0FFO09BMU9BL0g7T0FXQUM7V0FuZ0RBMVUsVUFnOENBa1UsMkJBcjZDRTlUOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJQzBJaUJ3Yzs7SUEvTWZDO0lBT0FDO0lBT0FDO0lBUUVDO0lBV0ZDO0lBT0FDO0lBTUpDOztJQU9GQzs7SUFNQUM7O0lBUUVDO0lBd0JFQzs7O0lBc0JGQztJQVVFQztJQUdOQztJQXFCSUM7SUE4R0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdk9ZO0lBaENaQztJQUNBQzs7O0lBTUlDOzs4REFEQWxCLE1BQ0FrQjs7OztJQU9BQzs7O3lEQURBbEIsUUFDQWtCOzs7O0lBT0FDOzs7eURBREFsQixRQUNBa0I7OztJQVFFQzs7O3lEQURBbEIsUUFDQWtCOzs7Ozs7SUFHSkMsWUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFDVkMsTUFBT0MsSUFBUUMsSUFBSyxPQUFiRCxPQUFRQyxXQUFZOzs7O0lBT3pCQzs7O3lEQURBdEIsUUFDQXNCOzs7SUFPQUM7Ozt5REFEQXRCLFFBQ0FzQjtHQUtKLFNBQUFDLFlBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBOztPQUFBOztNQUFBOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQXZCLGtCQUFBdUI7OztNQUFBLE9BQUE7NENBQUF2QixrQkFBQXVCOzs7Ozs7Ozs7OztPQUFBLE9BQUE7NkNBQUF2QixrQkFBQXVCOztNQUFBLE9BQUE7NENBQUF2QixrQkFBQXVCOztLQUFBLE9BQUE7MkNBQUF2QixrQkFBQXVCOztJQUFBLE9BQUEsd0NBQUF2QixrQkFBQXVCO0dBSWlCO1lBSmpCQztJQUFBLHNCQUNFLG1CQUNBLG9CQUNBOztHQUNlO0dBTEUsc0JBQ25CRixhQUFBRTtZQU9GQyxjQUFBQztJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQXpCLGtCQUFBeUI7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDSUU7S0FDQUM7S0FGSkM7S0FBQUM7Ozs7Ozs7OzttQkFBQUo7T0FBQTs7WUFBQUs7aUJBQUFBO21CQUFBQTs7OztZQUFBQywyQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBRTtTQUFBQztvQkFBQUg7cUJBQUFJO2FBQUEsS0FBQUo7Y0FBQSxPQUFBO3FEQUFBaEMsa0JBQUF5QjtnQkFBQU87Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBSWlCO21CQUpqQkQ7O1NBQUFBLGlCQUFBRCxpQkFBQUg7Z0NBQUFDO2lDQUFBQTs7V0FBQUgsbUJBQUFHLGdCQUFBSDs7aUJBRUlGO1VBRkpDLHdCQUFBSSxnQkFBQUo7O1VBRUk7V0FGSlMsbUJBQUFGO1dBRUlHLGFBQUEsMkJBRkpEO1VBRUlWLHlCQUFBVzs7Z0JBREFaO1NBREpFLHdCQUFBSSxnQkFBQUo7O1NBQ0k7VUFESlcsbUJBQUFKO1VBQ0lLLGFBQUEsK0JBREpEO1NBQ0liLGdDQUFBYzs7b0JBREpQOzs7Ozs7S0FBQSx5Q0FBQWxDLGtCQUFBK0I7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQTdCO2NBQUE2QjtjQUFBSjtPQUFBSztLQUFBLE9BQUE7O2NBQUE5QjtjQUFBOEI7Y0FBQUw7ZUFDSUUsbUNBQ0FDOztTQUFBYyw0QkFEQUM7S0FESixXQUNJQSx3QkFDQUQ7O0lBRkosT0FBQTs7YUFBQTFDO2FBQUF5Qjs7O3FCQUNJRTs7NEJBQ0FDO0dBRWE7WUFKakJnQjtJQUFBO0tBRUlDO0tBREFDO0tBQ0FDLFVBQUEsMkJBQUFGO0tBRkpHLGdDQUVJRDtLQURBRSxVQUFBLGdDQUFBSDtLQURKSSxrQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQUlpQjtZQUVqQkMsWUFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O09BQUEsT0FBQTs2Q0FBQW5ELGtCQUFBbUQ7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBbkQsa0JBQUFtRDs7O01BQUEsT0FBQTs0Q0FBQW5ELGtCQUFBbUQ7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQUM7U0FBQUEsbUJBQUFBO09BQUEsSUFBQUMsV0FBQUQsa0JBQUFFLFdBTkFoQyxjQU1BK0I7T0FBQSxXQUFBQzs7TUFBQSxPQUFBOztlQUFBdkQ7ZUFBQW9EO2VBQUFEOztLQUFBLE9BQUE7MkNBQUFuRCxrQkFBQW1EOztJQUFBLE9BQUEsd0NBQUFuRCxrQkFBQW1EO0dBR2lCO1lBSGpCSztJQUFBLFlBRUU7SUFEQSxJQUFBQyxxQkFBQUMsV0FQRmYsY0FPRWM7SUFBQSx3QkFBQUM7R0FFZTtHQUtmLFNBQUFDLFlBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFBQTs7bUJBQUE7O2tCQUFBOztpQkFBQTs7Z0JBQUE7O2VBQUE7O2NBQUE7O2FBQUE7O1lBQUE7O1dBQUE7O1VBQUE7O1NBQUE7O1FBQUE7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBM0Qsa0JBQUEyRDs7O01BQUEsT0FBQTs0Q0FBQTNELGtCQUFBMkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUFBLE9BQUE7eURBQUEzRCxrQkFBQTJEOztrQkFBQSxPQUFBO3dEQUFBM0Qsa0JBQUEyRDs7aUJBQUEsT0FBQTt1REFBQTNELGtCQUFBMkQ7O2dCQUFBLE9BQUE7c0RBQUEzRCxrQkFBQTJEOztlQUFBLE9BQUE7cURBQUEzRCxrQkFBQTJEOztjQUFBLE9BQUE7b0RBQUEzRCxrQkFBQTJEOzthQUFBLE9BQUE7bURBQUEzRCxrQkFBQTJEOztZQUFBLE9BQUE7a0RBQUEzRCxrQkFBQTJEOztXQUFBLE9BQUE7aURBQUEzRCxrQkFBQTJEOztVQUFBLE9BQUE7Z0RBQUEzRCxrQkFBQTJEOztTQUFBLE9BQUE7K0NBQUEzRCxrQkFBQTJEOztRQUFBLE9BQUE7OENBQUEzRCxrQkFBQTJEOztPQUFBLE9BQUE7NkNBQUEzRCxrQkFBQTJEOztNQUFBLE9BQUE7NENBQUEzRCxrQkFBQTJEOztLQUFBLE9BQUE7MkNBQUEzRCxrQkFBQTJEOztJQUFBLE9BQUEsd0NBQUEzRCxrQkFBQTJEO0dBZ0IwQjtZQWhCMUJDO0lBQUE7O09BQ0U7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FDd0I7WUFFdEJDLFFBQXlCQyxPQUFBQztJLHNDQUFBRCxPQUFBQzs7O2lEQWxCN0JMLGFBQUFFOztHQThDQSxTQUFBSSxZQUFBQztJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7UUFBQTs7T0FBQTs7TUFBQTs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUEvRCxrQkFBQStEOzs7TUFBQSxPQUFBOzRDQUFBL0Qsa0JBQUErRDs7Ozs7Ozs7Ozs7T0FBQSxPQUFBOzZDQUFBL0Qsa0JBQUErRDs7TUFBQSxPQUFBOzRDQUFBL0Qsa0JBQUErRDs7S0FBQSxPQUFBOzJDQUFBL0Qsa0JBQUErRDs7SUFBQSxPQUFBLHdDQUFBL0Qsa0JBQUErRDtHQUlpQjtZQUpqQkM7SUFBQSxzQkFDRSxtQkFDQSxvQkFDQTs7R0FDZTtHQUxSO0lBQUEsUUFDVEYsYUFBQUU7SUFBQUM7SUFBQUM7OztHQWFKLFNBaUJJQyxvQkFBQUMsR0FBQSxPQUFBQSxNQUFtQjtZQURuQkMseUJBQUFELEdBQUEsT0FBQUEsTUFBd0I7WUFEeEJFLDZCQUFBRixHQUFBLE9BQUFBLE1BQTRCO1lBRDVCRyxrQkFBQUgsR0FBQSxPQUFBQSxNQUFpQjtZQURqQkkseUJBQUFKLEdBQUEsT0FBQUEsTUFBd0I7WUFEeEJLLHdCQUFBTCxHQUFBLE9BQUFBLE1BQXVCO1lBRnZCTSwrQkFBQU4sR0FBQSxPQUFBQSxNQUFtQztZQURuQ08sZ0JBQUFQLEdBQUEsT0FBQUEsS0FBZTtZQURmUSx5QkFBQVIsR0FBQSxPQUFBQSxLQUF3QjtZQUR4QlMsd0JBQUFULEdBQUEsT0FBQUEsS0FBdUI7WUFEdkJVLG1CQUFBVixHQUFBLE9BQUFBLEtBQWtCO1lBRGxCVyx1QkFBQVgsR0FBQSxPQUFBQSxLQUFzQjtZQUR0QlksdUJBQUFaLEdBQUEsT0FBQUEsS0FBc0I7WUFEdEJhLCtCQUFBYixHQUFBLE9BQUFBLEtBQWlDO1lBRGpDYyxpQkFBQWQsR0FBQSxPQUFBQSxLQUFnQjtZQURoQmUsK0JBQUFmLEdBQUEsT0FBQUEsS0FBaUM7Z0JBZ0JqQ0EsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFnQjtHQUFtQjtHQUFuQjs7SUFBQUM7O3VCQUFBLFNBQW1COzs7T0FBbkJsQjs7Z0JBREFDLEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO0dBQXdCO0dBQXhCOztJQUFBa0I7O3VCQUFBLFNBQXdCOzs7T0FBeEJqQjs7Z0JBREFELEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO1lBQUFBO0dBQTRCO0dBQTVCOztJQUFBbUI7O3VCQUFBLFNBQTRCOzs7T0FBNUJqQjs7Z0JBREFGLEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO1lBQUFBO1lBQUFBO0dBQWlCO0dBQWpCOztJQUFBb0I7O3VCQUFBLFNBQWlCOzs7T0FBakJqQjs7Z0JBREFILEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO0dBQXdCO0dBQXhCOztJQUFBcUI7O3VCQUFBLFNBQXdCOzs7T0FBeEJqQjs7Z0JBREFKLEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQXVCO0dBQXZCOztJQUFBc0I7O3VCQUFBLFNBQXVCOzs7T0FBdkJqQjs7Z0JBRkFMLEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQW1DO0dBQW5DOztJQUFBdUI7O3VCQUFBLFNBQW1DOzs7T0FBbkNqQjs7Z0JBREFOLEdBQUFnQjtJQUFBO1lBQUFoQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBZ0I7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQWU7R0FBZjs7SUFBQXdCOzt1QkFBQSxTQUFlOzs7T0FBZmpCOztnQkFEQVAsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBd0I7R0FBeEI7O0lBQUF5Qjs7dUJBQUEsU0FBd0I7OztPQUF4QmpCOztnQkFEQVIsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBdUI7R0FBdkI7O0lBQUEwQjs7dUJBQUEsU0FBdUI7OztPQUF2QmpCOztnQkFEQVQsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBa0I7R0FBbEI7O0lBQUEyQjs7dUJBQUEsU0FBa0I7OztPQUFsQmpCOztnQkFEQVYsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBc0I7R0FBdEI7O0lBQUE0Qjs7dUJBQUEsU0FBc0I7OztPQUF0QmpCOztnQkFEQVgsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBc0I7R0FBdEI7O0lBQUE2Qjs7dUJBQUEsU0FBc0I7OztPQUF0QmpCOztnQkFEQVosR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFBO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBaUM7R0FBakM7O0lBQUE4Qjs7dUJBQUEsU0FBaUM7OztPQUFqQ2pCOztpQkFEQWIsR0FBQWdCO0lBQUE7WUFBQWhCO1lBQUFnQjtZQUFBaEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBZ0I7R0FBaEI7O0lBQUErQjs7dUJBQUEsU0FBZ0I7OztPQUFoQmpCOztpQkFEQWQsR0FBQWdCO0lBQUE7WUFBQUE7WUFBQWhCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQWlDO0dBQWpDOztJQUFBZ0M7O3VCQUFBLFNBQWlDOzs7T0FBakNqQjs7WUFESmtCOztLQWlCSUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FGQWpDO0tBREFrQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBaEM7S0FEQWlDO0tBREEvQjtLQURKZ0M7SUFpQkksR0FBQWI7S0FBQTtNQUFBYyxRQUFBZDtNQUFBZSxVQUFBLCtCQUFBRDtNQUFBRSw0QkFBQUQ7TUFqQkpFLGlCQWlCSUQsU0FqQkpIOztTQUFBSSxhQUFBSjtJQWdCSSxHQUFBWjtLQUFBO01BQUFpQixRQUFBakI7TUFBQWtCLFVBQUEsd0NBQUFEO01BQUFFLDRCQUFBRDtNQWhCSkUsaUJBZ0JJRCxTQWhCSkg7O1NBQUFJLGFBQUFKO0lBZUksR0FBQWY7S0FBQTtNQUFBb0IsUUFBQXBCO01BQUFxQixVQUFBLGdDQUFBRDtNQUFBRSw0QkFBQUQ7TUFmSkUsaUJBZUlELFNBZkpIOztTQUFBSSxhQUFBSjtJQWNJLEdBQUFsQjtLQUFBO01BQUF1QixRQUFBdkI7TUFBQXdCLFVBQUEsc0JBQUFEO01BQUFFLDRCQUFBRDtNQWRKRSxpQkFjSUQsU0FkSkg7O1NBQUFJLGFBQUFKO0lBYUksR0FBQXJCO0tBQUE7TUFBQTBCLFFBQUExQjtNQUFBMkIsVUFBQSxzQkF4RUEzRSxhQXdFQTBFO01BQUFFLDRCQUFBRDtNQWJKRSxpQkFhSUQsU0FiSkg7O1NBQUFJLGFBQUFKO0lBWUksR0FBQXhCO0tBQUE7TUFBQTZCLFFBQUE3QjtNQUFBOEIsVUFBQSx1Q0FBQUQ7TUFBQUUsNEJBQUFEO01BWkpFLGlCQVlJRCxTQVpKSDs7U0FBQUksYUFBQUo7SUFVSSxHQUFBN0Q7S0FBQTtNQUFBa0UsUUFBQWxFO01BQUFtRSxVQUFBLDhDQUFBRDtNQUFBRSw0QkFBQUQ7TUFWSkUsaUJBVUlELFNBVkpIOztTQUFBSSxhQUFBSjtJQVNJLEdBQUEvQjtLQUFBO01BQUFvQyxRQUFBcEM7TUFBQXFDLFVBQUEsK0JBQUFEO01BQUFFLDRCQUFBRDtNQVRKRSxpQkFTSUQsU0FUSkg7O1NBQUFJLGFBQUFKO0lBUUksR0FBQWxDO0tBQUE7TUFBQXVDLFFBQUF2QztNQUFBd0MsVUFBQSx3QkFBQUQ7TUFBQUUsNEJBQUFEO01BUkpFLGlCQVFJRCxTQVJKSDs7U0FBQUksYUFBQUo7SUFPSSxHQUFBckM7S0FBQTtNQUFBMEMsUUFBQTFDO01BQUEyQyxVQUFBLHVDQUFBRDtNQUFBRSw0QkFBQUQ7TUFQSkUsaUJBT0lELFNBUEpIOztTQUFBSSxhQUFBSjtJQU1JLEdBQUF4QztLQUFBO01BQUE2QyxRQUFBN0M7TUFBQThDLFVBQUEsV0FuQkEzRixjQW1CQTBGO01BQUFFLDRCQUFBRDtNQU5KRSxrQkFNSUQsU0FOSkg7O1NBQUFJLGNBQUFKO0lBS0ksR0FBQTNDO0tBQUE7TUFBQWdELFFBQUFoRDtNQUFBaUQsVUFBQSxzQ0FBQUQ7TUFBQUUsNEJBQUFEO01BTEpFLGtCQUtJRCxTQUxKSDs7U0FBQUksY0FBQUo7SUFJSSxHQUFBOUM7S0FBQTtNQUFBbUQsUUFBQW5EO01BQUFvRCxVQXZFRmhILFlBdUVFK0c7TUFBQUUsNEJBQUFEO01BSkpFLGtCQUlJRCxTQUpKSDs7U0FBQUksY0FBQUo7SUFHSSxHQUFBbEY7S0FBQTtNQUFBdUYsUUFBQXZGO01BQUF3RixVQUFBLHNCQUFBRDtNQUFBRSw0QkFBQUQ7TUFISkUsa0JBR0lELFNBSEpIOztTQUFBSSxjQUFBSjtJQUVJLEdBQUFyRDtLQUFBO01BQUEwRCxRQUFBMUQ7TUFBQTJELFVBQUEsc0JBQUFEO01BQUFFLDRCQUFBRDtNQUZKRSxrQkFFSUQsU0FGSkg7O1NBQUFJLGNBQUFKO0lBQ0ksR0FBQXhGO0tBQUE7TUFBQTZGLFFBQUE3RjtNQUFBOEYsVUFBQSxnQ0FBQUQ7TUFBQUUsNEJBQUFEO01BREpFLGtCQUNJRCxTQURKSDs7U0FBQUksY0FBQUo7SUFBQSxXQUFBSTs7WUF5Q0lDO0lBQ0dqRztJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRDtJQUNBRjs7SUFHTDtZQWxCS2dCO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FGOztZQXNCSGtILCtCQUEyQ0M7SUFDN0MsR0FENkNBOztNQUV4QkM7TUFBakJDO1FBR3dCOzs7TUFIeEJDO01BQWlCRixlQUFBbk07TUFBakJvTSxrQkFBQUM7SUFPVSxlQUFBLGtDQVBPRjtJQUtyQixPQUFBLHdDQUxJQztHQVFBO0dBSUo7SUFERUU7TUFiQUw7SUFvQytCLFdBQUssV0F2UHBDaEw7SUFvUG1FLE9BQUEsV0FwUG5FQTtJQW9QMEIsV0FBSztJQUQ3QixXQUFLO0lBRlcsV0FBSztJQUY0QyxPQUFBLFdBL09uRUE7SUErTzBCLFdBQUs7SUFGTixXQUFLO0lBVDlCc0w7O1dBS3lDLFdBek96Q3RMOzs7Ozs7O1dBZ0NFTTs7Ozs7Ozs7V0FnTUYrSztXQUlBQztJQStCUSxPQUFBO0lBRk4sZUFFSztJQU5QQzs7T0F6QkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBOztPQUFBQTtPQUFBQTs7O1lBaVFBRTtJQWpCRjthQTFNSUMsTUFBTUMsU0FBUUMsYUFBWUMsSUFBR0g7S0FDL0I7TUFBNkMsT0FBQSwwQkFEZEEsT0F0Qy9CSDtNQXVDbUIsT0FBQSxXQURYSSxTQUNtQjtLQUEzQixlQUFDLDBCQUQ4QkQsY0FBZkUsY0FBWUM7SUFFdkI7Ozs7OztrQkFnSnVDQztLQUM5QixPQUFPO2NBNVpyQjVMLDBCQTRaK0Isc0JBRGE0TDtJQUNnQjtJQVRyRDs7Ozs7U0FPRSxXQTFaVDVMLFdBMlpXLDBCQTNUVFA7O2tCQWtUZ0JvTSxPLDZCQTFVbEJ6SSxhQTBVa0J5STs7Ozs7a0JBOUROeEw7S0FNUztNQUFBLE9BQUEsZ0JBTlRBO01BSUs7UUFBQTtVQXhWakJMOzsyQkEwVnFCO0tBRkosT0FBQTs7SUFqQlY7O0tBQUE7Ozs7U0FLRTtXQTVVVEEsY0E4VVcsMEJBOU1UTDs7Ozs7S0E2SUFtTTtPQUpBTjs7O1NBQUFBOzs7V0FBQUE7OzthQUFBQTs7O2VBQUFBOzs7aUJBQUFBOzs7bUJBQUFBOzs7cUJBQUFBOzs7dUJBQUFBOzs7eUJBQUFBOzs7MkJBQUFBOzZCQW5KRjVIOzs2QkFtSkU0SDs7OytCQUFBQTtpQ0F6TUp6STs7aUNBeU1JeUk7OzttQ0FBQUE7OztxQ0FBQUE7Ozs7dUNBcklGMUY7cUNBQ0FEO21DQUNBRDtpQ0FDQUQ7K0JBQ0FEOzZCQUNBRDsyQkFDQUQ7eUJBQ0FEO3VCQUNBRDtxQkFDQUQ7bUJBRUFEO2lCQUNBRDtlQUNBRDthQUNBRDtXQUNBRDtTQUNBRDtJQXFURjtLQUlRLElBQXFCMkcsd0JBQVRyTCxzQkFBTjBMO0tBRUwsT0FBQTtjQS9jUC9MOzs7OztnQkE2Y1krTDs7OztrQkFFNEIsMEJBRnRCMUw7NkJBQVNxTDtJQUUyRDs7S0FKeEQsSUFBb0JNLGlCQUFkQztLQUM5QixPQUFBLDZCQUQ4QkEsT0FBY0Q7SUFDakI7SUFEOUI7S0FBQSxPQUFBLDBCQTlMREY7Ozs7O1NBNkxGLFdBMWNBOUwsV0EwY0E7O0tBaUJxQixPQXhWekIrRixhQXlISXVGO0tBd05BO09BQUE7U0FwZEF0TDs7Ozs7V0FzUUFGOzs7Z0JBcU5FO0lBVUo7SUFBQSxPQUFBO0dBQ007d0JBSTJCLE9BQUEsMENBQXFDO0dBQWhFLFlBQUE7O1FBR0NvTTs0QkFBQUE7S0FDRTs7O1NBQXFDLElBM1doREMsV0EyV2dELDBCQUR2Q0Q7a0JBMVdUQztVQUFBLE9BQUE7aURBQUF2TSxrQkFBQXVNO1NBQUE7VUFBQUMsa0JBQUFEO1VBQ0l0SDtVQUNBd0g7VUFDQTFIO1VBQ0EySDtVQUNBQztVQUNBQztVQUNBQztVQUNBQztVQUNBQztVQUNBdkk7VUFFQXdJO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBakJKQztVQUFBQztrQkFBQUM7VUFBQTtVQUFBO3lCQUFBO2VBQUFDO29CQUFBQTt1QkFBQUE7Ozs7O2tCQUFBQywyQkFBQUM7aUJBQUFELG1CQUFBQTs7ZUFBQUU7ZUFBQUM7MEJBQUFIOzJCQUFBSTttQkFBQSxLQUFBSjtvQkFBQSxPQUFBOzJEQUFBMU4sa0JBQUF1TTtzQkFBQW1CO29CQUFBLE1BQUE7O3VCQUFBSyxRQUFBTDttQkFBQSxPQUFBSztrQkFtQnlCO3lCQW5CekJEOztlQUFBQSxpQkFBQUQsa0JBQUFIOzs7bUJBQUFDOzs7Ozs7Ozt5Q0FBQUE7Ozt1QkFBQUE7Ozt3QkFBQUE7Ozt5QkFBQUE7OzswQkFBQUE7OzsyQkFBQUE7Ozs0QkFBQUE7OzJCQWlCSU47eUJBakJKQyx3QkFBQUssZ0JBQUFMOzt5QkFpQkk7MEJBakJKVSxtQkFBQUY7MEJBaUJJRzs0QkFBQSwrQkFqQkpEO3lCQWlCSVgsaUNBQUFZOzs7K0JBREFiO3dCQWhCSkUsd0JBQUFLLGdCQUFBTDs7d0JBZ0JJO3lCQWhCSlksbUJBQUFKO3lCQWdCSUs7MkJBQUEsd0NBaEJKRDt3QkFnQklkLHNDQUFBZTs7OEJBREFoQjt1QkFmSkcsd0JBQUFLLGdCQUFBTDs7dUJBZUk7d0JBZkpjLG1CQUFBTjt3QkFlSU87MEJBQUEsK0JBZkpEO3VCQWVJakIsd0NBQUFrQjs7NkJBREFuQjtzQkFkSkksd0JBQUFLLGdCQUFBTDs7c0JBY0k7dUJBZEpnQixtQkFBQVI7dUJBY0lTLGFBQUEsc0JBZEpEO3NCQWNJcEIsK0JBQUFxQjs7NEJBREF0QjtxQkFiSkssd0JBQUFLLGdCQUFBTDs7cUJBYUk7c0JBYkprQixtQkFBQVY7c0JBYUlXO3dCQUFBLHNCQXhFQW5MLGFBMkRKa0w7cUJBYUl2QixzQ0FBQXdCOzsyQkFEQXpCO29CQVpKTSx3QkFBQUssZ0JBQUFMOztvQkFZSTtxQkFaSm9CLG1CQUFBWjtxQkFZSWE7dUJBQUEsdUNBWkpEO29CQVlJMUIscUNBQUEyQjs7MEJBSEE1QjttQkFUSk8sd0JBQUFLLGdCQUFBTDs7bUJBU0k7b0JBVEpzQixtQkFBQWQ7b0JBU0llO3NCQUFBLCtCQVRKRDttQkFTSTdCLDZCQUFBOEI7O3lCQURBL0I7a0JBUkpRLHdCQUFBSyxnQkFBQUw7O2tCQVFJO21CQVJKd0IsbUJBQUFoQjttQkFRSWlCLGFBQUEsd0JBUkpEO2tCQVFJaEMsc0NBQUFpQzs7OztvQkFSSnBCOzs7cUJBQUFBOzs7c0JBQUFBOzs7dUJBQUFBOzs7d0JBQUFBOzs7eUJBQUFBOzs7MEJBQUFBOzs7MkJBQUFBOzswQkFVSW5KO3dCQVZKOEksd0JBQUFLLGdCQUFBTDs7d0JBVUk7eUJBVkowQixtQkFBQWxCO3lCQVVJbUI7MkJBQUE7Z0VBVkpEO3dCQVVJeEssd0NBQUF5Szs7OzhCQUhBcEM7dUJBUEpTLHdCQUFBSyxnQkFBQUw7O3VCQU9JO3dCQVBKNEIsbUJBQUFwQjt3QkFPSXFCOzBCQUFBLHVDQVBKRDt1QkFPSXJDLHFDQUFBc0M7OzZCQURBdkM7c0JBTkpVLHdCQUFBSyxnQkFBQUw7O3NCQU1JO3VCQU5KOEIsb0JBQUF0Qjt1QkFNSXVCLGFBQUEsV0FuQkF0TCxjQWFKcUw7c0JBTUl4QyxnQ0FBQXlDOzs0QkFEQTFDO3FCQUxKVyx3QkFBQUssZ0JBQUFMOztxQkFLSTtzQkFMSmdDLG9CQUFBeEI7c0JBS0l5Qjt3QkFBQSxzQ0FMSkQ7cUJBS0kzQyxvQ0FBQTRDOzsyQkFEQTdDO29CQUpKWSx3QkFBQUssZ0JBQUFMOztvQkFJSTtxQkFKSmtDLG9CQUFBMUI7cUJBSUkyQixhQXZFRjVNLFlBbUVGMk07b0JBSUk5QyxvQ0FBQStDOzswQkFEQTFLO21CQUhKdUksd0JBQUFLLGdCQUFBTDs7bUJBR0k7b0JBSEpvQyxvQkFBQTVCO29CQUdJNkIsYUFBQSxzQkFISkQ7bUJBR0kzSyx3Q0FBQTRLOzt5QkFEQWxEO2tCQUZKYSx3QkFBQUssZ0JBQUFMOztrQkFFSTttQkFGSnNDLG9CQUFBOUI7bUJBRUkrQixhQUFBLHNCQUZKRDtrQkFFSW5ELDhCQUFBb0Q7O3dCQURBNUs7aUJBREpxSSx3QkFBQUssZ0JBQUFMOztpQkFDSTtrQkFESndDLG9CQUFBaEM7a0JBQ0lpQztvQkFBQSwrQkFESkQ7aUJBQ0k3Syx3Q0FBQThLOzs7OztnQkFESnhDLG1CQUFBSSxnQkFBQUo7OzRCQUFBSzs7Ozs7V0FBQSxPQUFBO2tEQUFBNU4sa0JBQUF5Tjs7U0FtQnlCO1NBbkJ6QkQsU0FBQWhCO1lBQUFjO1VBQUEsT0FBQTs7bUJBQUF0TjttQkFBQXNOO21CQUFBZjtZQUFBZ0I7VUFBQSxPQUFBOzttQkFBQXZOO21CQUFBdU47bUJBQUFoQjs7VUFDSXJHLG1DQUFBakI7VUFDQStLLHVCQUFBdkQ7VUFDQXpHLG1DQUFBakI7VUFDQWtMLDZCQUFBdkQ7VUFDQXdELDZCQUFBdkQ7VUFDQXdELHlCQUFBdkQ7VUFDQXdELDhCQUFBdkQ7VUFDQXdELCtCQUFBdkQ7VUFDQXdELHNCQUFBdkQ7VUFDQXRILG1DQUFBakI7VUFFQStMLDhCQUFBdkQ7VUFDQXdELCtCQUFBdkQ7VUFDQXdELHdCQUFBdkQ7VUFDQXdELG1DQUFBdkQ7VUFDQXdELCtCQUFBdkQ7U0FoQko7aUJBQ0lsSDtpQkFDQThKO2lCQUNBaEs7aUJBQ0FpSztpQkFDQUM7aUJBQ0FDO2lCQUNBQztpQkFDQUM7aUJBQ0FDO2lCQUNBN0s7aUJBRUE4SztpQkFDQUM7aUJBQ0FDO2lCQUNBQztpQkFDQUM7aUJBQ0F0RDtRQTBWbUU7TUFBNUQsVUFBQTs7VUFDRHVELGdCQUFBQyxNQUFBRDs7TUFPUTtPQU5MRTs7T0FNSyxPQUFBLDRCQWhQZDVRO09BK09XLE9BQUEsdUNBTEY0UTtPQUlELE9BQUE7T0FESCxPQUFBO01BRkY7VUFGR0QsTUFYTmxGOztTQVdNb0YsTUFBQUY7OztTQUFBRSxNQVhOcEY7UUFLQXFGLE1BTU1EOzs7UUFOTkMsTUFqVkEvUTtZQXVXRWdSLDJCQUF5QkM7SUFDM0IsWUF2QkFGO2dCQXdCVTtRQUNIRztJQUFLLE9BQUEseUJBQUxBLEdBSG9CRCxLQXJhdkJ6TjtHQXdhNkM7R0FHekMsSUFBTjJOLE1BTkFIO1lBT0FJLE1BQU1ILEtBQU0sT0FEWkUsTUFBQUEsTUFOQUgsMkJBT01DLEtBQXlDO0dBQ3ZDO0lBQVJJLFFBREFEO0lBRUFFLEtBRkFGO0lBR0FHLHVCQUhBSDtJQUlBSSxhQUpBSjtJQUtBSyxjQUxBTDtJQU1BTSxVQU5BTjtJQU9BTyxtQkFQQVA7SUFRQVEsV0FSQVI7SUFTQVMsU0FUQVQ7SUFVQVUsWUFWQVY7SUFXQVcsV0FYQVg7SUFZQVksY0FaQVo7SUFhQWEsY0FiQWI7SUFjQWMsU0FkQWQ7WUFpQkZlLE9BQU94RztJQUNUO0tBQTRELE9BQUEsMEJBRG5EQSxPQXBUUEg7S0FxVHdDLE9BQUE7S0FBN0IsT0FBQSwwQkFESkcsT0E5Q1BvRjtJQStDd0MsT0FBQTtHQUE0QztHQUdoRDtJQUFwQ3FCO01BSkFELE9BblpBbE07SUF3WkFvTSxxQkFMQUYsT0FsWkFuTTtJQXdaQXNNO01BTkFILE9BalpBcE07SUF3WkF3TSwyQkFQQUosT0EvWUF0TTtJQXVaQTJNLDZCQVJBTCxPQXBZQWhOO0lBNllBc04sdUJBVEFOLE9BOVlBdk07SUF3WkE4TSw0QkFWQVAsT0E3WUF4TTtJQXdaQWdOLDZCQVhBUixPQTVZQXpNO0lBd1pBa04sb0JBWkFULE9BM1lBMU07SUF3WkFvTjtNQWJBVixPQTFZQTNNO0lBd1pBc04sNEJBZEFYLE9BeFlBNU07SUF1WkF3TixzQkFmQVosT0F0WUE5TTtJQXNaQTJOLGlDQWhCQWIsT0FyWUEvTTtJQXNaQTZOLHdCQWpCQWQsT0FuWUFqTjtJQXFaQWdPLDJCQWxCQWYsT0FoWkFyTTtJQW9hQXFOOztXQWhCQWY7V0FDQUM7V0FDQUM7V0FZQVk7V0FYQVg7V0FFQUU7V0FDQUM7V0FDQUM7V0FDQUM7V0FDQUM7V0FDQUM7T0E1REEvQjtXQTZEQWdDO1dBQ0FDO1dBUkFSO1dBU0FTO0lBdUJBRyw4QkFBeUIsWUFBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUEvaEIvQzNTO1FBREFEOzs7UUEyQko2QjtRQUFBcEI7UUFNQTJCO1FBQUFNO1dBUUVLO1dBOENBUTtPQWFKbUM7T0F5Q0krRTtPQStYQWtJO09BclNBbFQ7O1FBaVFFb1I7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7T0FPRkU7T0FDQUM7T0FDQUM7T0FZQVk7T0FWQVY7T0FEQUQ7T0FFQUU7T0FDQUM7T0FHQUc7T0FGQUY7T0FDQUM7T0FFQUU7T0FDQUM7T0FDQUM7T0FDQUM7T0F0VkEvSDtPQTZXQWtJOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJRy9qQk07Ozs7S0FBQSxVQUFBO0tBQVIsY0FBUTtLQUFSLE1BQUE7S0FBQTBKLFFBQUE7SUFBUSxTQUFBQyxZQUFBQztLQUFSLFVBQUE7S0FBQSxPQUFBLFdBQUEsK0JBQUFGLGlCQUFRRTtJQUF5QzthQUFqREMsV0FBS0MsVyxPQUFBQTthQUFMQyxZQUFLQyxTLE9BQUFBO2FBQUxDLGFBQUtDO2tCQUFMQyxHQUFBLE9BQUEsV0FBS0QsaUJBQUxDLEdBQWlEO0tBQWpELG9CQUFBQSxHQUFBLE9BQUEsV0FBS0QsaUJBQUxDLEdBQWlEO0lBQUE7YUFBakRDLFdBQUtDLE1BQU9DLEtBQUFDLFNBQUFDO0ssNENBQUFEOzthQUFaRSxhQUFLSixNLE9BQUFBO2FBQUxLLGFBQUtDO2tCQUFMTCxLQUFBQyxTQUFBSztNQUFBLE9BQUFSLFdBQUtPLGlCQUFMTCxLQUFBQyxTQUFBSztLQUFpRDtLQUFqRDtzQkFBQU4sS0FBQUM7Y0FBQSxPQUFBLFdBQUtJLGlCQUFMTCxLQUFBQzthQUFpRDs7SUFBQTthQUFqRE0sTUFBQUM7S0FBQSxJQUFBLE1BQUFKLGFBQUFJLFdBQUEsTUFBQWIsYUFBQWE7S0FBQSxXQUFRbkIsWUFBUm1CO0lBQWlEO2FBQWpEQyxRQUFBQyxPQUFBQyxPQUFBQztLQUFZLE9BQUEsV0FBWkYsT0FBQUMsT0FBQUM7SUFBYzthQU9aQyxVQVBHQyxVQUFMLE9BQUtBLFNBQTRDO2FBTy9DQyxVQUxZQyxXQUFVMUI7S0FDdEIsb0JBQTRELFdBRGhEMEIsV0FBVTFCO0lBQ2lEO0lBSXhEOzs7V0FQVEQ7S0FPUyxVQUFBO0tBQWYsY0FBZTtLQUFmLE1BQUE7S0FBQTRCLFVBQUE7SUFBZSxTQUFBQyxjQUFBNUI7S0FBZixVQUFBO0tBQUEsT0FBQTtjQUFBLCtCQUFBMkIsbUJBQWUzQjtJQUEyQzthQUExRDZCLGFBQVkzQixXQUFaSyxHLGtCQUFZTCxXQUFaSzthQUFBdUIsY0FBWTFCLFNBQVpNLEtBQUFxQixLQUFBeEIsR0FBQSxPQUFBLFdBQVlILFNBQVpNLEtBQUFxQixLQUFBeEI7SUFBMEQ7YUFBMUR5QixlQUFZMUI7a0JBQVpDO01BQUEsVUFBWUQ7TUFBWiwwQixPQUFBd0IsbUJBQUF2QjtLQUEwRDtLQUExRCxvQkFBQUEsR0FBQSxPQUFBc0IsYUFBWXZCLGlCQUFaQyxHQUEwRDtJQUFBO2FBQTFEMEIsYUFBWXhCLE1BQVVDLEtBQUFDLFNBQUFDLE0sT0FQeEJKLFdBT2NDLE1BQVVDLEtBQUFDLFNBQUFDOzthQUF0QnNCLGFBQVl6QixNQUFaQyxLQUFBQyxTQUFBLE9BQUEsV0FBWUYsTUFBWkMsS0FBQUM7SUFBMEQ7YUFBMUR3QixlQUFZcEI7a0JBQVpMLEtBQUFDLFNBQUFLO01BQUEsT0FBQWlCLGFBQVlsQixpQkFBWkwsS0FBQUMsU0FBQUs7S0FBMEQ7S0FBMUQ7c0JBQUFOLEtBQUFDO2NBQUEsT0FBQXVCLGFBQVluQixpQkFBWkwsS0FBQUM7YUFBMEQ7O0lBQUE7YUFBMUR5QixRQUFBbEI7S0FBQSxJQUFBLE1BQUFpQixlQUFBakIsV0FBQSxNQUFBYyxlQUFBZDtLQUFBLFdBQWVVLGNBQWZWO0lBQTBEO2FBQTFEbUIsVUFBQWpCLE9BQUFrQixPQUFBQztLQUFzQixPQVB4QnBCO3VCQU9xQnFCLE9BQUFDLE9BQUEsT0FBQSxXQUFuQnJCLE9BQW1Cb0IsT0FBQUMsT0FBRTtjQUFyQkg7Y0FBQUM7SUFBdUI7SUFEdUI7OztRQUMvQlg7UUFBZkM7UUFBQUM7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQWQ7UUFBQUU7SUFSSjtZQUNVMUI7WUFBUkU7WUFBQUU7WUFBQUU7WUFBQUc7WUFBQUs7WUFBQUM7WUFBQUc7WUFBQUU7O1lBT0VNOzs7Ozs7Ozs7O0tBbUJFO0tBSUE7S0FDQTs7O1NBQUE7Ozs7OztLQUFBLE9BQUE7SUFBZ0M7SUFBaEM7S0FBQTs7UUFBQTs7Ozs7Ozs7Ozs7O1VBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FiQTtLQWlCQTtLQUNBOzs7U0FBQTs7Ozs7O0tBQUEsT0FBQTtJQUFvQjtJQUFwQjtLQUFBOztRQUFBOzs7Ozs7Ozs7Ozs7VUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU1FaUI7dUJBQUFBO0lBMUNFM0M7SUFBUkU7SUFBQUU7SUFBQUU7SUFBQUc7SUFBQUs7SUFBQUM7SUFBQUc7SUFBQUU7SUFFSU07Ozs7Ozs7OztPQUZJMUI7T0FBUkU7T0FBQUU7T0FBQVU7T0FBQUw7T0FBQUg7T0FBQVM7T0FBQUc7T0FBQUU7T0FFSU07Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7OztJQ0RGa0I7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQ0FDLEtBQU1DLEdBQWlCLE9BQWpCQSxFQUE0QjtZQUNsQ0MsYUFBY0QsR0FBaUIsT0FBakJBLEVBQTRCO1lBQzFDRSxRQUFRQyxHQUFJLDZCQUFKQSxHQUhSTCxNQUc2QjtZQUM3Qk0sUUFBUUQsR0FBSSxXQURaRCxRQUNRQyxHQUFtQjtZQUMzQkUsVUFBVUMsYUFBWUg7SUFBTyxVQUQ3QkMsUUFDc0JEO0lBQU8sYUFBMkIsV0FBOUNHLGFBQVlIO0dBQWtEO1lBRXhFSSxVQUFVQyxXQUFVTDtJQUN0QixPQUxFRCxRQUlvQkMsdUNBQVZLLFdBQVVMO0dBQytDO1lBR25FTSxVQUFVTjtJQUFJLE9BUmRELFFBUVVDLEtBQXNCLDBDQUF0QkE7R0FBbUU7WUFDN0VPLFVBQVVQLEdBQUksT0FUZEQsUUFTVUMsYUFBQUEsR0FBcUQ7WUFFL0RRO0lBQVksbUJBZFpiO1FBZ0JLYztJQUFLLE9BQUxBO0dBQVc7R0FJTztJQUFBLHNCQWpCdkJWLFNBREFEO0lBaUJxQjs7Ozs7Ozs7T0FackJNO09BRkFGO09BTEFQO09BQ0FDO09BRUFHO09BQ0FFO09BT0FLO09BVEFSO09BVUFTO09BRUFDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NKRixTQUFBRSxVQUFLQztJQUFMO0tBQ1lDO0tBQ0FDO0tBQUFDLFVBQUEsbUNBQUFEO0tBRlpFLGdDQUVZRDtLQURBRSxVQUFBLG9CQURQTCxVQUNPQztLQURaSyxrQ0FDWUQsZUFEWkQ7SUFBQSxXQUFBRTtHQUlvQjtZQUVoQkMsY0FBWSw2QkFBdUM7R0FHekQsU0FRWUMsWUFBQUMsR0FBQSxPQUFBQSxLQUFXO1lBQVhDLGdCQUFBRCxHQUFBRSxHQUFBRixPQUFBRSxZQUFXO1lBSFhDLEtBQUFILEdBQUEsT0FBQUEsS0FBSTtZQUFKSSxTQUFBSixHQUFBRSxHQUFBRixPQUFBRSxZQUFJO1lBREpHLE1BQUFMLEdBQUEsT0FBQUEsS0FBSztZQUFMTSxVQUFBTixHQUFBRSxHQUFBRixPQUFBRSxZQUFLO1lBSExLLE9BQUFQLEdBQUEsT0FBQUEsS0FBTTtZQUFOUSxXQUFBUixHQUFBRSxHQUFBRixPQUFBRSxZQUFNO2dCQU9ORixHQUFBRSxHQUFBLFdBQUFGLE1BQUFBLE1BQUFBLE1BQUFFLEdBQVc7R0FBWDtJQUFBLFVBQUFEO0lBQUFROzBCQUFBLFNBQVcseUJBQVhWO2dCQUhBQyxHQUFBRSxHQUFBLFdBQUFGLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUk7R0FBSjtJQUFBLFVBQUFJO0lBQUFNLDZCQUFBLFNBQUksa0JBQUpQO2dCQURBSCxHQUFBRSxHQUFBLFdBQUFGLE1BQUFFLEdBQUFGLE1BQUFBLE1BQUs7R0FBTDtJQUFBLFVBQUFNO0lBQUFLLDhCQUFBLFNBQUssbUJBQUxOO2dCQUhBTCxHQUFBRSxHQUFBLFdBQUFBLEdBQUFGLE1BQUFBLE1BQUFBLE1BQU07R0FBTjtJQUFBLFVBQUFRO0lBQUFJLCtCQUFBLFNBQU0sb0JBQU5MO1lBRFpNLFlBQUtDO0lBQUw7S0FDWUM7S0FHQUM7S0FDQUM7S0FHQUM7S0FSWkM7c0IsT0FURTdCLFVBU0d3QjtJQVFPO0tBQUFNLFVBQUEseUJBQUFGO0tBUlpHLGtDQVFZRCxlQVJaRDtLQUtZRyxVQWRWaEMsVUFTR3dCLFVBS09HO0tBTFpNLGtDQUtZRCxlQUxaRDtLQUlZRyxVQWJWbEMsVUFTR3dCLFVBSU9FO0tBSlpTLGtDQUlZRCxlQUpaRDtLQUNZRyxVQUFBLHNCQUFBWDtLQURaWSxrQ0FDWUQsZUFEWkQ7SUFBQSxXQUFBRTtHQVU0QjtZQUV4QkMsVUFBVUMsYUFBYUM7O2NBRW5CQyxNQUFNQyxHQUFJLE9BQUEsOEJBRlNGLEdBRWJFLEdBQTZCO0tBZ0JuQztNQTlCQUM7UUFjQUY7bUJBZ0JZaEM7V0FDRCxJQUFKQyxRQURLRDs7WUFFSCxLQUFBLG9CQURGQztZQUVRLElBQU5rQyxNQUFNLG9CQUZSbEM7WUFBQUEsT0FFRWtDO1lBRUcsS0FBQSxvQkFGSEE7YUFFSixNQUFBOztVQUNFO01BcENQQztRQWNBSjttQkFjZ0I1QjtXQUFRLEdBQU8sb0JBQWZBO1dBQVEsTUFBQTtVQUFvQztNQTVCNURpQztRQWNBTDttQkFJWTFCO1dBQ1QsSUFBSWdDLFFBUFlQLE9BUVo5QixRQUZLSzs7WUFHSCxLQUFBLHFCQUZGZ0M7YUFRRyxHQUFBLHNCQVBIckMsTUFSWThCO2FBZWhCLE1BQUE7O1lBUklPO2dCQUlFSCxNQUhGbEM7WUFBQUEsT0FJRyxvQkFERGtDO1lBRUcsS0FBQSxvQkFGSEE7YUFFSixNQUFBOztVQUUyQjtNQTNCaENJO1FBY0FQO21CQUVrQnhCO1dBQVUsR0FBTyxxQkFBakJBO1dBQVUsTUFBQTtVQUFvQjtLQWhCaEQsV0FBQStCLFlBQ0kxQjtLQURKLFdBQUF3QixXQUlJekI7S0FKSixXQUFBd0IsVUFLSXpCO0tBR0EsT0FBQSxXQVJKdUIsaUJBUUl4QjtJQTRCSztpQkF2QjBCOEI7SyxPQWIzQzFCLDRCLGNBYTJDMEI7O0lBQUssT0FBQSxtQ0FEckJUO0dBd0JUO1lBR2RVO0lBQ1EsSUFBTk4sTUEzQ0FwQztJQTRDSixjQURJb0MsS0FBQUE7R0FDNEQ7WUFhOURPLFFBQWtCWCxHQUFVWTtJQUM5QixHQVRHLG9CQVFpQlo7S0FOUixJQUFOSSxNQUFNLG9CQU1RSjtLQUFBQSxPQU5kSTtTQU9GUyxXQVBFVDs7O1NBT0ZTLFdBMURBN0M7SUF5RGdCZ0MsT0FBQUE7SUFJSixVQUFBLG9CQUpjWTtJQUFWWjtJQUtMLFVBQUEsb0JBSlhhO0lBRGdCYjtJQUFBQSxPQUNoQmE7O0dBS2M7WUFrQmhCQyxZQUFZZDtJQUVkLEdBQUcscUJBRldBOzs7aUJBSHNFZTtTLE9BM0V0RmhDLDRCLGNBMkVzRmdDOzttRUFHdEVmOztJQUlkLElBakJ1QkksTUFhVEosTUFJVlksSUFqQm1CUjtJQWFUSixPQUtILG9CQWxCWUk7SUFhVEosT0FBQUE7SUFiU0k7SUFBQUEsU0FhVEo7SUFBQUEsT0FURyxvQkFKTUk7SUFxQnZCLE9BQUEsb0JBSklRO0dBS2U7WUFHakJJLG9CQUFvQmhCLEdBQUFBLHlCQUE4Qjs7Ozs7Ozs7T0ExRnREakI7T0FZSWU7T0EyQkFZO09BdENRakM7T0FxRFJrQztPQXdCQUc7T0FZQUU7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUM3R0FDLE1BQU1DLEdBQUVDO0lBQ0csSUFBVEMsU0FBUyxnQkFETEYsR0FBRUM7SUFFc0I7TUFBN0IsZ0NBRk9BO1NBRXNCLHFCQUQ1QkMsUUFESUY7O0lBRXdFLE9BRDVFRTtHQUNrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BRnBGSDs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDRkFJLElBSWVDLFVBQUFDLFVBSkRDO0lBQ2hCO0tBR2lCQyxXQUN5QjtLQUR6QkMsV0FDUjtLQURRQyxxQ0FBQUQ7S0FBQUUsZ0RBQUFIO0tBQUFJLGlDQUFBUDtLQUFBUSxzQkFKRE4sV0FJQ0Q7S0FEZjtPQUFBOzs7aUJBQ2VJLGNBQUFDLGNBQUFDLGNBQUFDO0lBRGYsT0FBQTtHQUVxRTtZQUdyRUMsV0FBV0MsU0FBVSxPQVJyQlgsSUFRV1csdUJBQXlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BUnBEWDtPQVFBVTs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0ZBRTtJQUNBQztJQUNBQztJQUNBQzs7OztZQUNBQyxRQUFRQztJQUF1QixVQUFBLDZCQUF2QkE7SUFBdUIsT0FBQTtHQUE0QjtHQUsvQyxJQUpaQywyQkFJWSxjQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FWVk47T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUU7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDYkosU0FBQUMsaUJBQUEseUJBR29COzs7OzttQ0FIcEJBOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDMkhNQyxRQUFRdkIsR0FBSSxPQUFKQSxFQUFLO1lBQ2J3QixRQUFReEIsR0FBSSxPQUFKQSxFQUFLO0dBVGI7SUFBQSxXQVNBd0IsU0FEQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUN2SERFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFKREM7Ozs7Ozs7Ozs7Ozs7O0dBSUosU0FVWUMsV0FBQUMsR0FBQSxPQUFBQSxLQUFVO1lBQVZDLGVBQUFELEdBQUFFLEdBQUFGLE9BQUFFLFlBQVU7WUFEVkMsZUFBQUgsR0FBQSxPQUFBQSxLQUFjO1lBQWRJLG1CQUFBSixHQUFBRSxHQUFBRixPQUFBRSxZQUFjO1lBRGRHLHFCQUFBTCxHQUFBLE9BQUFBLEtBQW9CO1lBQXBCTSx5QkFBQU4sR0FBQUUsR0FBQUYsT0FBQUUsWUFBb0I7WUFGcEJLLHdCQUFBUCxHQUFBLE9BQUFBLEtBQXVCO1lBQXZCUSw0QkFBQVIsR0FBQUUsR0FBQUYsT0FBQUUsWUFBdUI7WUFGdkJPLFdBQUFULEdBQUEsT0FBQUEsS0FBVTtZQUFWVSxlQUFBVixHQUFBRSxHQUFBRixPQUFBRSxZQUFVO1lBRGxCUyxHQUFBWCxHQUFBLE9BQUFBLEtBQUU7WUFERlksS0FBQVosR0FBQSxPQUFBQSxLQUFJO1lBREphLEtBQUFiLEdBQUEsT0FBQUEsS0FBSTtnQkFTSUEsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRTtHQUFVO0dBQVY7SUFBQSxVQUFBRDtJQUFBYTswQkFBQSxTQUFVLHdCQUFWZjtnQkFEQUMsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRSxHQUFBRjtHQUFjO0dBQWQ7SUFBQSxVQUFBSTtJQUFBVzs7dUJBQUEsU0FBYzs7O09BQWRaOztnQkFEQUgsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRSxHQUFBRixNQUFBQTtHQUFvQjtHQUFwQjtJQUFBLFVBQUFNO0lBQUFVOzt1QkFBQSxTQUFvQjs7O09BQXBCWDs7Z0JBRkFMLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUE7R0FBdUI7R0FBdkI7SUFBQSxVQUFBUTtJQUFBUzs7dUJBQUEsU0FBdUI7OztPQUF2QlY7O2dCQUZBUCxHQUFBRTtJQUFBLFdBQUFGLE1BQUFBLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBO0dBQVU7R0FBVjtJQUFBLFVBQUFVO0lBQUFROzBCQUFBLFNBQVUsd0JBQVZUO2dCQURSVCxHQUFBRTtJQUFBLFdBQUFGLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBO0dBQUU7R0FBRixhQUFBbUIsMkJBQUEsU0FBRSxnQkFBRlI7Z0JBREFYLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUE7R0FBSTtHQUFKOztJQUFBb0IsNkJBQUEsU0FBSSxrQkFBSlI7Z0JBREFaLEdBQUFFO0lBQUEsV0FBQUEsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUE7R0FBSTtHQUFKOztJQUFBcUIsNkJBQUEsU0FBSSxrQkFBSlI7WUFEQ1M7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLFFBQUEsV0FBQVIsVUFDREYsUUFEQ1U7S0FBQUM7S0FBQUM7S0FBQSxVQUFBLFdBQUFULFVBRURKLFFBRkNZO0tBQUFFO0tBQUFDO0tBQUEsVUFBQSxXQUFBVixRQUdETixNQUhDZTtLQUFBRTtLQUFBQztLQUFBLFVBQUEsV0FBQVgsZ0JBSU9SLGNBSlBrQjtLQUFBRTtLQUFBQztLQUFBO09BQUE7U0FBQVo7U0FNT1Y7U0FOUHFCO0tBQUFFO0tBQUFDO0tBQUE7T0FBQTtTQUFBYiwwQkFRT1osd0JBUlB3QjtLQUFBRTtLQUFBQztLQUFBLFVBQUEsV0FBQWQsb0JBU09kLGtCQVRQMkI7S0FBQUU7S0FBQUM7S0FBQSxVQUFBLFdBQUFmLGdCQVVPaEIsY0FWUDhCO0tBQUFFO0tBQUFDO0lBQUE7cUJBQUFDO2FBQUE7Y0FBQW5DLE9BQUEsV0FBQW9CLFVBQUFlO2NBQUFwQyxPQUFBLFdBQUF1QixVQUFBYTtjQUFBckMsS0FBQSxXQUFBMEIsUUFBQVc7Y0FBQXZDLGFBQUEsV0FBQThCLGdCQUFBUztjQUFBekM7Z0JBQUEsV0FBQWtDLDZCQUFBTztjQUFBM0MsdUJBQUEsV0FBQXNDLDBCQUFBSztjQUFBN0MsaUJBQUEsV0FBQTBDLG9CQUFBRztjQUFBakQsYUFBQSxXQUFBZ0QsZ0JBQUFDO2FBQUE7cUJBQUFuQztxQkFBQUQ7cUJBQUFEO3FCQUFBRjtxQkFBQUY7cUJBQUFGO3FCQUFBRjtxQkFBQUo7WUFBQztZQUFEK0M7O1lBQUFHO0lBQUFwQztJQUFBRDtJQUFBRDtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBSjtJQUFBO1lBQUFjO1lBQUFEO1lBQUFEO1lBQUFGO1lBQUFGO1lBQUFGO1lBQUFGO1lBQUFKO0dBQUM7WUFBRG1EO0lBQUEzQjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBQSxnQkFVT2hCO0tBVlAsT0FBQSxXQUFBZSxvQkFTT2Q7S0FUUCxPQUFBLFdBQUFhLDBCQVFPWjtLQVJQLE9BQUEsV0FBQVcsNkJBTU9WO0tBTlAsT0FBQSxXQUFBUyxnQkFJT1I7S0FKUCxPQUFBLFdBQUFPLFFBR0ROO0tBSEMsT0FBQSxXQUFBSyxVQUVESjtJQUZDO1lBQUEsV0FBQUcsVUFDREY7Ozs7Ozs7O0dBREU7WUFBRDhCO0lBQUE1QjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLFdBQUFQLFVBQ0RGO0lBREMsV0FBQUcsVUFFREo7SUFGQyxXQUFBSyxRQUdETjtJQUhDLFdBQUFPLGdCQUlPUjtJQUpQLFdBQUFTLDZCQU1PVjtJQU5QLFdBQUFXLDBCQVFPWjtJQVJQLFdBQUFhLG9CQVNPZDtJQUNBLE9BQUEsV0FWUGUsZ0JBVU9oQjtHQVZOO1lBQURzQztJQUFBQztJQUFBOUI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQSxPQVVPO2FBVlBBO2FBQUE7ZUFBQUQ7ZUFBQTtpQkFBQUQ7aUJBQUE7bUJBQUFEO21CQUFBO3FCQUFBRDtxQkFBQTt1QkFBQUQ7dUJBQUE7eUJBQUFELFVBQUEsV0FBQUQsVUFBQThCLE1BQ0RoQyxTQUNBRDt1QkFDQUQ7cUJBQ1FEO21CQUVBRDtpQkFFQUQ7ZUFDQUQ7YUFDQUQ7R0FWTjtZQUFEd0MsU0FBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsV0FVT3pDO0tBVlAsV0FBQSxXQUFBeUMsV0FTT3hDO0tBVFAsV0FBQSxXQUFBd0MsV0FRT3ZDO0tBUlAsV0FBQSxXQUFBdUMsV0FNT3RDO0tBTlAsV0FBQSxXQUFBc0MsV0FJT3JDO0tBSlAsV0FBQSxXQUFBcUMsV0FHRHBDO0tBSEMsV0FBQSxXQUFBb0MsV0FFRG5DO0lBRkMsV0FBQSxXQUFBbUMsV0FDRGxDO0dBREU7WUFBRG1DO0lBQUFqQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBUCxVQUNERjtLQURDLGNBQUEsV0FBQUcsVUFFREo7S0FGQyxjQUFBLFdBQUFLLFFBR0ROO0tBSEMsY0FBQSxXQUFBTyxnQkFJT1I7S0FKUDs7VUFBQSxXQUFBUyw2QkFNT1Y7O0tBTlA7O1VBQUEsV0FBQVcsMEJBUU9aOztLQVJQLGNBQUEsV0FBQWEsb0JBU09kO0lBVFAsY0FVTyxXQVZQZSxnQkFVT2hCO0dBVk47WUFBRDJDO0lBQUFsQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBUCxVQUNERjtLQURDLGVBQUEsV0FBQUcsVUFFREo7S0FGQyxlQUFBLFdBQUFLLFFBR0ROO0tBSEMsZUFBQSxXQUFBTyxnQkFJT1I7S0FKUDs7VUFBQSxXQUFBUyw2QkFNT1Y7S0FOUDtlQUFBLFdBQUFXLDBCQVFPWjtLQVJQLGVBQUEsV0FBQWEsb0JBU09kO0lBVFAscUJBVU8sV0FWUGUsZ0JBVU9oQjtHQVZOO1lBQUQ0QztJQUFBbkM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsZ0JBVU9oQjtLQVZQLFdBQUEsV0FBQWUsb0JBU09kO0tBVFA7V0FBQSxXQUFBYSwwQkFRT1o7S0FSUDs7UUFBQSxXQUFBVyw2QkFNT1Y7O0tBTlAsV0FBQSxXQUFBUyxnQkFJT1I7S0FKUCxXQUFBLFdBQUFPLFFBR0ROO0tBSEMsV0FBQSxXQUFBSyxVQUVESjtJQUZDLFdBQUEsV0FBQUcsVUFDREY7R0FERTtZQUFEc0M7SUFBQUo7SUFBQWhDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUEsV0FBQVAsVUFDREYsUUFEQ2tDLFFBQUFBO0lBQUEsV0FBQS9CLFVBRURKLFFBRkNtQyxRQUFBQTtJQUFBLFdBQUE5QixRQUdETixNQUhDb0MsUUFBQUE7SUFBQSxXQUFBN0IsZ0JBSU9SLGNBSlBxQyxRQUFBQTtJQUFBO01BQUE1QjtNQU1PVjtNQU5Qc0M7TUFBQUE7SUFBQTtNQUFBM0IsMEJBUU9aLHdCQVJQdUMsUUFBQUE7SUFBQSxXQUFBMUIsb0JBU09kLGtCQVRQd0MsUUFBQUE7SUFVTyxPQUFBLFdBVlB6QixnQkFVT2hCLGNBVlB5QyxRQUFBQTtHQUFDO1lBQURLO0lBQUFMO0lBQUFGO0lBQUE5QjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7V0FBQXlCO1dBQUFBO1dBQUFBO1dBQUFBO1dBQUFBO1lBQUFBO1lBQUFBO0lBQUEsT0FBQTthQUFBekI7YUFBQTtlQUFBRDtlQUFBO2lCQUFBRDtpQkFBQTttQkFBQUQ7bUJBQUE7cUJBQUFEO3FCQUFBO3VCQUFBRDt1QkFBQTt5QkFBQUQ7eUJBQUEsV0FBQUQsVUFBQThCLE1BQ0RoQyxRQURDa0MsUUFBQUE7eUJBRURuQzt5QkFGQ21DOzt1QkFHRHBDO3VCQUhDb0M7O3FCQUlPckM7cUJBSlBxQzs7bUJBTU90QzttQkFOUHNDOztpQkFRT3ZDO2lCQVJQdUM7O2VBU094QztlQVRQd0M7O2FBVU96QzthQVZQeUM7OztZQUFBTTtJQUFBTjtJQUFBaEM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQVAsVUFDREYsUUFEQ2tDLFFBQUFBO0tBQUEsWUFBQSxXQUFBL0IsVUFFREosUUFGQ21DLFFBQUFBO0tBQUEsWUFBQSxXQUFBOUIsUUFHRE4sTUFIQ29DLFFBQUFBO0tBQUE7YUFBQSxXQUFBN0IsZ0JBSU9SLGNBSlBxQyxRQUFBQTtLQUFBOztVQUFBO1dBQUE1QjtXQU1PVjtXQU5Qc0M7V0FBQUE7O0tBQUE7O1VBQUE7V0FBQTNCO1dBUU9aO1dBUlB1QztXQUFBQTs7S0FBQTs7VUFBQSxXQUFBMUIsb0JBU09kLGtCQVRQd0MsUUFBQUE7O0lBQUE7Y0FVTyxXQVZQekIsZ0JBVU9oQixjQVZQeUMsUUFBQUE7O0dBQUM7WUFBRE87SUFBQVA7SUFBQWhDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxNQUFBLFdBQUFQLFVBQ0RGLFFBRENrQyxRQUFBQTtLQUFBLGFBQUEsV0FBQS9CLFVBRURKLFFBRkNtQyxRQUFBQTtLQUFBLGFBQUEsV0FBQTlCLFFBR0ROLE1BSENvQyxRQUFBQTtLQUFBLGFBQUEsV0FBQTdCLGdCQUlPUixjQUpQcUMsUUFBQUE7S0FBQTs7O1FBQUE7VUFBQTVCO1VBTU9WO1VBTlBzQztVQUFBQTtLQUFBOzs7UUFBQTtVQUFBM0IsMEJBUU9aLHdCQVJQdUMsUUFBQUE7S0FBQTs7VUFBQSxXQUFBMUIsb0JBU09kLGtCQVRQd0MsUUFBQUE7SUFBQTs7Y0FVTyxXQVZQekIsZ0JBVU9oQixjQVZQeUMsUUFBQUE7R0FBQztZQUFEUTtJQUFBUjtJQUFBaEM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLFVBQUEsV0FBQUEsZ0JBVU9oQixjQVZQeUMsUUFBQUE7S0FBQTs7UUFBQSxXQUFBMUIsb0JBU09kLGtCQVRQd0MsUUFBQUE7O0tBQUE7O1FBQUE7VUFBQTNCLDBCQVFPWix3QkFSUHVDLFFBQUFBOztLQUFBOztRQUFBO1VBQUE1QjtVQU1PVjtVQU5Qc0M7VUFBQUE7O0tBQUE7V0FBQSxXQUFBN0IsZ0JBSU9SLGNBSlBxQyxRQUFBQTtLQUFBLFVBQUEsV0FBQTlCLFFBR0ROLE1BSENvQyxRQUFBQTtLQUFBLFVBQUEsV0FBQS9CLFVBRURKLFFBRkNtQyxRQUFBQTtJQUFBLFdBQUEsV0FBQWhDLFVBQ0RGLFFBRENrQyxRQUFBQTtHQUFDO1lBQURTO0lBQUFUO0lBQUFoQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBQSxnQkFVT2hCLGNBVlB5QyxRQUFBQTtLQUFBLE1BQUEsV0FBQTFCLG9CQVNPZCxrQkFUUHdDLFFBQUFBO0tBQUE7T0FBQTtTQUFBM0IsMEJBUU9aLHdCQVJQdUMsUUFBQUE7S0FBQTtPQUFBO1NBQUE1QjtTQU1PVjtTQU5Qc0M7U0FBQUE7S0FBQSxNQUFBLFdBQUE3QixnQkFJT1IsY0FKUHFDLFFBQUFBO0tBQUEsTUFBQSxXQUFBOUIsUUFHRE4sTUFIQ29DLFFBQUFBO0tBQUEsTUFBQSxXQUFBL0IsVUFFREosUUFGQ21DLFFBQUFBO0lBQUE7WUFBQSxXQUFBaEMsVUFDREYsUUFEQ2tDLFFBQUFBOzs7Ozs7OztHQUFDO1lBQURVO0lBQUFWO0lBQUE5QztJQUFBRjtJQUFBRjtJQUFBRjtJQUFBSjtJQUFBLElBQUFtRSxXQUFBLDZCQUFBWDtJQUFBVyxjQUFBekQ7SUFBQXlELGNBQUEzRDtJQUFBMkQsY0FBQTdEO0lBQUE2RCxjQUFBL0Q7SUFBQStELGNBQUFuRTs7R0FBQztHQUFEO0lBQUE7O09BQUE0RDtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztJQUFBOztPQUFBcEU7T0FVT2lCO09BREFDO09BREFDO09BRkFDO09BRkFDO09BRFJDO09BREFDO09BREFDO09BRENDO09BQUEyQjtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRTtPQUFBQztPQUFBQzs7WUFjRFMsWUFBWS9GO0lBQ2QsWUFEY0E7Z0RBQUFBOztLQUdQd0M7d0RBQUFBOzRDQUhPeEM7R0FHMkQ7WUFHdkVnRyxhQU9FQztJQUFLLElBTklqRyxJQU1UaUcsS0FOV0M7SUFDYjtLQUFTLElBRElDLFdBUGJKLFlBT1cvRixJQUFFa0csS0FFYixRQUZXbEc7bUNBR3lCLE9BQUEsMEJBSHZCbUc7U0FBRkMsZ0JBQUFwRyxJQUFBb0csS0FBRUYsS0FBQUM7O0dBTUc7WUFHaEI3RSxVQUFVdEI7SUFBWSxJQUFpQnFHLFFBVnZDTCxhQVVVaEc7Z0RBQTZCcUc7O0dBR2pDLElBQUp6RTtHQUNKLFNBRkUwRSxlQUNFMUUsZUFBQUEsS0FHQTtZQUdGMkUsbUJBQW9CL0QsTUFBTWdFLE1BQU0vRCxNQUFLZ0U7SUFDOUIsSUFBTGxFLEtBUkYrRDtJQVNGLEdBRjRCRTtTQUluQkUsSUFKbUJGO1FBQU0vRDtVQUtqQmtFLElBTGlCbEUsZUFLWiwwQkFEYmlFLEdBQ1FDOztnQkFEUkQ7U0FGTHpEOztZQUY4QlI7U0FNbkJtRSxNQU5tQm5FLFNBRTlCUSxTQUlnQiwwQkFBTDJEOzs7O2lCQUNrQ0M7UyxzREFBQUE7O01BTDdDNUQsU0FLYywwQ0FOZFY7SUFRSixHQVR1Q2tFO1NBZXpCSyxXQWZ5QkwscUJBZXpCSzs7O0lBTFo7S0FERTlHLFFBUEFpRCxRQUZrQlQsTUFDbEJELFlBaUIwQjtJQUs5QixHQWxFRWI7S0FrRVksd0RBZFYxQixHQWxCRnNCO0lBZ0NZLE9BZFZ0QjtHQWVIO0dBR1EsSUFBUCtHLE9BM0JBUjs7Ozs7Ozs7T0EzQ0E3RTtPQWNRQztPQUFBRTtPQURBRTtPQUFBQztPQURBQztPQUFBQztPQUZBQztPQUFBQztPQUZBQztPQUFBQztPQURSQztPQURBQztPQURBQzs7T0FhQXNEO09BTUFDO09BVUExRTtPQUVBZ0Y7T0FPQUM7T0EyQkFROzs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ3JFQ3RGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBTCxTQUlJdUYsa0JBQUFwRixHQUFBLE9BQUFBLEtBQWlCO1lBRGpCcUYsY0FBQXJGLEdBQUEsT0FBQUEsS0FBYTtZQURic0YsU0FBQXRGLEdBQUEsT0FBQUEsS0FBUTtZQURSdUYsUUFBQXZGLEdBQUEsT0FBQUEsS0FBTztnQkFHUEEsR0FBQUUsR0FBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBRSxHQUFpQjtHQUFqQjs7SUFBQXNGOzt1QkFBQSxTQUFpQjs7O09BQWpCSjs7Z0JBREFwRixHQUFBRSxHQUFBLFdBQUFGLE1BQUFBLE1BQUFFLEdBQUFGLE1BQWE7R0FBYjs7SUFBQXlGOzt1QkFBQSxTQUFhOzs7T0FBYko7O2dCQURBckYsR0FBQUUsR0FBQSxXQUFBRixNQUFBRSxHQUFBRixNQUFBQSxNQUFRO0dBQVI7O0lBQUEwRjswQkFBQSxTQUFRLHNCQUFSSjtnQkFEQXRGLEdBQUFFLEdBQUEsV0FBQUEsR0FBQUYsTUFBQUEsTUFBQUEsTUFBTztHQUFQOztJQUFBMkY7MEJBQUEsU0FBTyxxQkFBUEo7WUFEQ2pFO0lBQUFzRTtJQUFBQztJQUFBQztJQUFBQztJQUFBaEU7SUFBQTtLQUFBLFFBQUEsV0FBQTZELGFBQ0RELFdBREM1RDtLQUFBQztLQUFBZ0U7S0FBQSxVQUFBLFdBQUFILGNBRURILFlBRkMxRDtLQUFBRTtLQUFBK0Q7S0FBQSxVQUFBLFdBQUFILG1CQUdETCxpQkFIQ3ZEO0tBQUFFO0tBQUE4RDtLQUFBO09BQUEsV0FBQUgsdUJBSURQLHFCQUpDcEQ7S0FBQUU7S0FBQTZEO0lBQUE7cUJBQUFuRDthQUFBO2NBQUF1QyxVQUFBLFdBQUFTLGFBQUFoRDtjQUFBc0MsV0FBQSxXQUFBVyxjQUFBakQ7Y0FBQXFDLGdCQUFBLFdBQUFhLG1CQUFBbEQ7Y0FBQW9DLG9CQUFBLFdBQUFlLHVCQUFBbkQ7YUFBQSxXQUFBdUMsU0FBQUQsVUFBQUQsZUFBQUQ7WUFBQztZQUFEOUM7R0FBQztZQUFEVyxPQUFBc0MsU0FBQUQsVUFBQUQsZUFBQUQsbUJBQUEsV0FBQUcsU0FBQUQsVUFBQUQsZUFBQUQ7R0FBQztZQUFEbEM7SUFBQTBDLGFBQUFDLGNBQUFDLG1CQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBQSx1QkFJRFA7S0FKQyxNQUFBLFdBQUFNLG1CQUdETDtLQUhDLE1BQUEsV0FBQUksY0FFREg7SUFGQyxXQUFBLFdBQUFFLGFBQ0REO0dBREU7WUFBRHhDO0lBQUF5QyxhQUFBQyxjQUFBQyxtQkFBQUM7SUFBQSxXQUFBSCxhQUNERDtJQURDLFdBQUFFLGNBRURIO0lBRkMsV0FBQUksbUJBR0RMO0lBQ0EsT0FBQSxXQUpDTSx1QkFJRFA7R0FKRTtZQUFEcEM7SUFBQUMsTUFBQXVDLGFBQUFDLGNBQUFDLG1CQUFBQztJQUFBLE9BSUQ7YUFKQ0E7YUFBQTtlQUFBRDtlQUFBO2lCQUFBRDtpQkFBQSxXQUFBRCxhQUFBdkMsTUFDRHNDO2lCQUNBRDtlQUNBRDthQUNBRDtHQUpFO1lBQURsQyxTQUFBQztJQUFBO0tBQUEsVUFBQSxXQUFBQSxXQUlEaUM7S0FKQyxVQUFBLFdBQUFqQyxXQUdEa0M7S0FIQyxVQUFBLFdBQUFsQyxXQUVEbUM7SUFGQyxXQUFBLFdBQUFuQyxXQUNEb0M7R0FERTtZQUFEbkM7SUFBQW9DLGFBQUFDLGNBQUFDLG1CQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBSCxhQUNERDtLQURDLFlBQUEsV0FBQUUsY0FFREg7S0FGQyxZQUFBLFdBQUFJLG1CQUdETDtJQUhDLGFBSUQsV0FKQ00sdUJBSURQO0dBSkU7WUFBRC9CO0lBQUFtQyxhQUFBQyxjQUFBQyxtQkFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQUgsYUFDREQ7S0FEQyxhQUFBLFdBQUFFLGNBRURIO0tBRkMsYUFBQSxXQUFBSSxtQkFHREw7SUFIQyxtQkFJRCxXQUpDTSx1QkFJRFA7R0FKRTtZQUFEOUI7SUFBQWtDLGFBQUFDLGNBQUFDLG1CQUFBQztJQUFBO0tBQUEsVUFBQSxXQUFBQSx1QkFJRFA7S0FKQyxVQUFBLFdBQUFNLG1CQUdETDtLQUhDLFVBQUEsV0FBQUksY0FFREg7SUFGQyxXQUFBLFdBQUFFLGFBQ0REO0dBREU7WUFBRGhDO0lBQUFKO0lBQUFxQztJQUFBQztJQUFBQztJQUFBQztJQUFBLFdBQUFILGFBQ0RELFdBRENwQyxRQUFBQTtJQUFBLFdBQUFzQyxjQUVESCxZQUZDbkMsUUFBQUE7SUFBQSxXQUFBdUMsbUJBR0RMLGlCQUhDbEMsUUFBQUE7SUFJRCxPQUFBO2FBSkN3Qyx1QkFJRFAscUJBSkNqQyxRQUFBQTtHQUFDO1lBQURLO0lBQUFMO0lBQUFGO0lBQUF1QztJQUFBQztJQUFBQztJQUFBQztjQUFBeEMsaUJBQUFBLGlCQUFBQTtJQUFBLE9BQUE7YUFBQXdDO2FBQUE7ZUFBQUQ7ZUFBQTtpQkFBQUQ7aUJBQUEsV0FBQUQsYUFBQXZDLE1BQ0RzQyxXQURDcEMsUUFBQUE7aUJBRURtQztpQkFGQ25DOztlQUdEa0M7ZUFIQ2xDOzthQUlEaUM7YUFKQ2pDOzs7WUFBQU07SUFBQU47SUFBQXFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxNQUFBLFdBQUFILGFBQ0RELFdBRENwQyxRQUFBQTtLQUFBLFlBQUEsV0FBQXNDLGNBRURILFlBRkNuQyxRQUFBQTtLQUFBOztVQUFBLFdBQUF1QyxtQkFHREwsaUJBSENsQyxRQUFBQTs7SUFBQTtjQUlEO2VBSkN3Qyx1QkFJRFAscUJBSkNqQyxRQUFBQTs7R0FBQztZQUFETztJQUFBUDtJQUFBcUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQUgsYUFDREQsV0FEQ3BDLFFBQUFBO0tBQUEsYUFBQSxXQUFBc0MsY0FFREgsWUFGQ25DLFFBQUFBO0tBQUE7O1VBQUEsV0FBQXVDLG1CQUdETCxpQkFIQ2xDLFFBQUFBO0lBQUE7O2NBSUQ7ZUFKQ3dDLHVCQUlEUCxxQkFKQ2pDLFFBQUFBO0dBQUM7WUFBRFE7SUFBQVI7SUFBQXFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTs7UUFBQTtVQUFBQSx1QkFJRFAscUJBSkNqQyxRQUFBQTs7S0FBQTs7UUFBQSxXQUFBdUMsbUJBR0RMLGlCQUhDbEMsUUFBQUE7O0tBQUEsVUFBQSxXQUFBc0MsY0FFREgsWUFGQ25DLFFBQUFBO0lBQUEsV0FBQSxXQUFBcUMsYUFDREQsV0FEQ3BDLFFBQUFBO0dBQUM7WUFBRFM7SUFBQVQ7SUFBQXFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTtPQUFBO1NBQUFBLHVCQUlEUCxxQkFKQ2pDLFFBQUFBO0tBQUEsTUFBQSxXQUFBdUMsbUJBR0RMLGlCQUhDbEMsUUFBQUE7S0FBQSxNQUFBLFdBQUFzQyxjQUVESCxZQUZDbkMsUUFBQUE7SUFBQTtZQUFBLFdBQUFxQyxhQUNERCxXQURDcEMsUUFBQUE7Ozs7R0FBQztZQUFEVSx1QkFBQVY7SUFBQSw2QkFBQUE7SUFBQTtHQUFDO0dBQUQ7OztPQUFBSTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztZQUFMdkU7SUFBQTtLQUlJMEc7S0FEQUM7S0FEQUM7S0FEQUM7S0FHQUMsVUFBQSx5Q0FBQUo7S0FKSkssZ0NBSUlEO0tBREFFLFVBQUEsNkJBQUFMO0tBSEpNLGtDQUdJRCxlQUhKRDtLQUVJRyxVQUFBLHFDQUFBTjtLQUZKTyxrQ0FFSUQsZUFGSkQ7S0FDSUcsVUFBQSxzQ0FBQVA7S0FESlEsa0NBQ0lELGVBREpEO0lBQUEsV0FBQUU7R0FNNEI7WUFFeEJDLGlCQUFvQixTQUFFO0dBR3hCO0lBREU3Qjs7Ozs7O1lBUUE4QixZQUFhMUIsU0FBU0QsVUFBVUQsZUFBY2pIO0lBQ2hEO0tBQUl1SCxZQUFVLDRCQURDSixTQUFpQ25IO0tBRWhELE1BRmdEQTtLQUk5QixNQUFBLDRCQUpnQmlILGVBQWNqSDtJQUVoRDtZQURJdUg7WUFFUyw0QkFIV0wsVUFBd0JsSDs7O0dBTS9DO1lBR0M4SSxXQUFXOUksR0FBRStJO0lBQU0sT0FBQSw4QkFBUi9JLE1BQUUrSTtHQUF1QztZQUVwREMsV0FBV2hKLEdBQUUrSSxLQUFJRTtJQUNuQixVQURhako7d0JBQzZELE9BRHZEaUosS0FDMkQ7SUFBckQsVUFBQSw4QkFEWmpKLE1BQUUrSTtJQUNmLFdBRGEvSSxNQUFBQTtHQUNvRTtZQUcvRWtKLGlCQUFpQmxKO0lBQ25CLFVBRG1CQSxNQUNVLFVBQUE7SUFBN0IsV0FEbUJBLE1BQUFBLE1BQUFBO0dBQ21EOzs7Ozs7OztPQTlCcEVnSDtPQURBQztPQURBQztPQURBQzs7UUFEQzFGO1FBSUQyRjtRQURBQztRQURBQztRQURBQztRQURDdkM7UUFBQTlCO1FBQUEyQjtRQUFBQztRQUFBQztRQUFBSztRQUFBQztRQUFBQztRQUFBSjs7T0FBTDVEO09BUUlzSDtPQUVBN0I7T0FRQThCO09BU0FDO09BRUFFO09BSUFFOzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ2pDQTVILGlCQUFjLFdBQWlCOzs7Ozt1Q0FBL0JBOzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBQTZIOzs7WUFDQUMsYTtHQUEwQixJQUMxQkM7R0FFSixTQUFBQyxjQUFBakQ7SUFBQTs7dUI7OztJQUFBLE9BQUE7Ozs7O2FBQUFBO0dBQ29CO1lBRXBCL0UsVUFBQXVGO0lBQUEsT0FBQSwwQkFIQXlDLGVBR0F6QztHQUEwQztZQUV0QytCLFVBQVU1STtzQjtJQUFJLE9BQUEsK0JBQUpBO0dBQTJCO1lBQ3JDNkU7SUFBWSxPQUFtQzs7OztpQkFWL0NzRSxTQUNBQyxTQUNBQztHQVEwRTs7Ozs7O2dDQU45RUMsZUFHQWhJLFdBRUlzSCxXQUNBL0Q7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZRXNCQTBFLFNBQVNDLE9BQVksT0FBWkEsTUFBdUM7WUFDaERDLE9BQU9DLEtBQVUsT0FBVkEsSUFBaUM7WUFDeENDLFNBQVUzSixHQUFTLE9BQUEsMEJBQVRBLEdBQWtDO1lBQzVDNEosT0FBUTVKLEdBQVMsY0FBVEEsdUJBQWdDO1lBU3RDNkosS0FBSzdKLEdBQUksT0FWWDJKLFNBVU8zSixXQUF5QztZQUM5QzhKLGVBQThCQyxjQUFlLE9BQWZBLGFBQWdEO0dBUnJFLGdCQU9URixNQUNBQzs7Ozs7O29DQWJGUCxVQUNBRSxRQUNBRSxVQUNBQzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNuQ0FJLE9BQU9oSyxHQUFJLE9BQUpBLFNBQXdCO1lBRS9CaUssc0JBQXNCakssR0FBRWtLO0lBRTFCO0tBQU8sVUFBQSxzQkFGaUJsSyxNQUFFa0s7a0JBQUZsSyxPQUFFa0s7O0dBRzJCOzs7OztxQ0FMbkRGLFFBRUFDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0ZBZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFDQUMsYTtHQUEwQixJQUMxQkM7R0FNSixTQWVZYyxPQUFBdkksR0FBQSxPQUFBQSxLQUFNO1lBQU53SSxXQUFBeEksR0FBQUUsR0FBQUYsT0FBQUUsWUFBTTtZQUROdUksTUFBQXpJLEdBQUEsT0FBQUEsS0FBSztZQUFMMEksVUFBQTFJLEdBQUFFLEdBQUFGLE9BQUFFLFlBQUs7WUFITHlJLEtBQUEzSSxHQUFBLE9BQUFBLEtBQUk7WUFBSjRJLFNBQUE1SSxHQUFBRSxHQUFBRixPQUFBRSxZQUFJO1lBSEoySSxLQUFBN0ksR0FBQSxPQUFBQSxLQUFJO1lBQUo4SSxTQUFBOUksR0FBQUUsR0FBQUYsT0FBQUUsWUFBSTtZQU5KNkkscUJBQUEvSSxHQUFBLE9BQUFBLEtBQW9CO1lBQXBCZ0oseUJBQUFoSixHQUFBRSxHQUFBRixPQUFBRSxZQUFvQjtZQURwQitJLGFBQUFqSixHQUFBLE9BQUFBLEtBQVk7WUFBWmtKLGlCQUFBbEosR0FBQUUsR0FBQUYsT0FBQUUsWUFBWTtnQkFjWkYsR0FBQUUsR0FBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRSxHQUFNO0dBQU47SUFBQSxVQUFBc0k7SUFBQVcsK0JBQUEsU0FBTSxvQkFBTlo7Z0JBREF2SSxHQUFBRSxHQUFBLFdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUs7R0FBTDtJQUFBLFVBQUEwSTtJQUFBVSw4QkFBQSxTQUFLLG1CQUFMWDtnQkFIQXpJLEdBQUFFLEdBQUEsV0FBQUYsTUFBQUEsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBSTtHQUFKO0lBQUEsVUFBQTRJO0lBQUFTLDZCQUFBLFNBQUksa0JBQUpWO2dCQUhBM0ksR0FBQUUsR0FBQSxXQUFBRixNQUFBQSxNQUFBRSxHQUFBRixNQUFBQSxNQUFBQSxNQUFJO0dBQUo7SUFBQSxVQUFBOEk7SUFBQVEsNkJBQUEsU0FBSSxrQkFBSlQ7Z0JBTkE3SSxHQUFBRSxHQUFBLFdBQUFGLE1BQUFFLEdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQW9CO0dBQXBCO0lBQUEsVUFBQWdKO0lBQUFPOzt1QkFBQSxTQUFvQjs7O09BQXBCUjs7Z0JBREEvSSxHQUFBRSxHQUFBLFdBQUFBLEdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQVk7R0FBWjtJQUFBLFVBQUFrSjtJQUFBTTs7dUJBQUEsU0FBWTs7O09BQVpQOztZQURadko7SUFBQTtLQUNZK0o7S0FDQUM7S0FNQUM7S0FHQUM7S0FHQUM7S0FDQUM7S0FBQUMsVUFBQSxzQkFBQUQ7S0FmWnJELGdDQWVZc0Q7S0FEQUMsVUFBQSxzQkFBQUg7S0FkWmxELGtDQWNZcUQsZUFkWnZEO0tBV1lELFVBQUEsc0JBQUFvRDtLQVhaL0Msa0NBV1lMLGVBWFpHO0tBUVlELFVBQUEsbUNBQUFpRDtLQVJaNUMsa0NBUVlMLGVBUlpHO0tBRVlELFVBQUEsc0JBQUE4QztLQUZaTyxrQ0FFWXJELGVBRlpHO0tBQ1lELFVBQUEsc0JBQUEyQztLQURaUyxrQ0FDWXBELGVBRFptRDtJQUFBLFdBQUFDO0dBaUI0QjtZQUV4QkMsT0FBTy9MLEdBQUUwRyxHQUFJLFNBQU4xRyxPQUFFMEcsU0FBRjFHLGNBQStDO1lBQ3REZ00sU0FBU2hNLEdBQUksT0FBSkEsYUFBYztZQUV2QjRJLFVBQVU1STs7Y0FFTmlNLE1BQU1DLEdBQUksT0FBQSw4QkFGSmxNLEdBRUFrTSxHQUE2QjtLQXFCbkM7TUE3Q0hDO1FBd0JHRjttQkFxQlk5QjtXQUNULEtBQU8sbUNBREVBO1lBQ1QsTUFBQTtXQUNrQixVQTNCekI2QixTQUVVaE07V0F5QkksR0FBQSxtQ0FGRW1LO1dBRVQsTUFBQTtVQUE2QjtNQS9DbkNpQztRQXdCR0g7bUJBaUJZNUI7V0FDVCxLQUFPLG1DQURFQTtZQUNULE1BQUE7V0FDZ0IsVUF2QnZCMkIsU0FFVWhNO1dBcUJJLEdBQUEsbUNBRkVxSztXQUVULE1BQUE7VUFBMkI7TUEzQ2pDZ0M7UUF3QkdKO21CQVlZMUI7V0FDVCxJQUFJeUIsV0FES3pCO1dBRUYsS0FBQSx5QkFESHlCO1lBQ0osTUFBQTtXQUNtQyxVQUFBLG1DQWpCaENoTTtXQWlCSSxHQUFBLG1DQUZIZ007O1dBRUosTUFBQTtVQUFtRDtNQXZDekRNO1FBd0JHTDttQkFNWXhCO1dBQ1QsVUFUR3pLLGNBU0g7O2dCQUFBMEc7O2FBRXlCO2NBQUEsTUFkaENxRixPQUdVL0wsR0FTSDBHO2NBRWEsTUFBQSxtQ0FISitEO2FBRVA7YUFBQSxVQURGL0Q7d0JBQUFBO2lCQUFBQTs7OztVQUdJO01BbENWNkY7UUF3QkdOO21CQUlZdEI7V0FBd0IsR0FBTyxtQ0FBL0JBOztXQUF3QixNQUFBO1VBQWtDO01BNUJ6RTZCO1FBd0JHUDttQkFFd0JwQjtXQUFnQixHQUFPLG1DQUF2QkE7V0FBZ0IsTUFBQTtVQUEwQjtLQTFCckUsV0FBQTJCLGtCQUNPcEI7S0FEUCxXQUFBbUIsMEJBRU9wQjtLQUZQLFdBQUFtQixVQVFPcEI7S0FSUCxXQUFBbUIsVUFXT3BCO0tBWFAsV0FBQW1CLFdBY09wQjtLQUNBLE9BQUEsV0FmUG1CLFlBZU9wQjtJQWdDOEI7SUF4QkksT0FBQSxtQ0FEaEMvSyxHQXRCZHNCO0dBK0MyQztZQUd2Q21MLGFBQWNUO0lBQVcsMENBQVhBO0dBQTZEO1lBRTNFbkgsY0FDRixpQkFIRTRILDBCQVVEO1lBR0NDLE1BQU0xTSxHQUFBQSxVQUFBQSxVQUFBQSxtQkFHbUI7WUF1QnpCMk0sSUFBYTNNLEdBQUUwRyxHQUFFd0QsbUJBQWtCZ0MsR0FBRVU7SUFDMUIsSUFBVEMsV0F2RUZkLE9Bc0VhL0wsR0FBRTBHO0lBRWpCLG1DQUZlMUcsTUFDWDZNLFVBRGUzQztJQUduQixtQ0FIZWxLLE1BQ1g2TSxrQkFEaUNYO0lBR3JDLE9BQUEsbUNBSGVsTSxNQUNYNk0sa0JBRG1DRDtHQUlZO1lBR2pERSxRQUFROU0sR0FBRWtLLG1CQUFrQmdDLEdBQUVVO0lBQ2xCLFVBN0VaWixTQTRFUWhNO0lBQ1AsR0FBQSxtQ0FET0E7S0ExQlM7TUFBZitNLGVBbERGZixTQTRFUWhNO01BekJOZ04sZUFEQUQ7TUFFQUUsV0F3Qk1qTjtNQXZCTmtOLFlBdUJNbE47TUF0Qk5tTjtRQUFPLHlCQXNCRG5OLE1BMUJOK00sZUFHQUc7TUFFQUUsUUFxQk1wTixnQkF0Qk5tTjtNQUVBRSxXQTFCRlosYUFxQkVPO0tBTUo7K0JBTElDLFVBQ0FDLG1CQUdBRyxhQUZBRjtLQVNKLG1DQVhJRixhQUlBSSxVQUZBRixNQUNBQztLQXFCTXBOLE9BekJOZ047S0F5Qk1oTixPQXBCTnFOO0tBb0JNck47O0lBUFIyTSxJQU9RM00sR0FBQUEsTUFBRWtLLG1CQUFrQmdDLEdBQUVVO0lBQXRCNU0sT0FBQUE7O0dBR2M7WUFHdEJzTiwyQkFBeUJ0TixHQUFFdU47SUFDN0IsR0FBRyxtQ0FEMEJBOztpQ0F0Ry9Cak0sVUFzRzZCdEI7dURBQUV1Tjs7Ozs7O0tBRzNCOztJQUh5QnZOLE9BQUV1Tjs7R0FLRjtZQUd6QkMsY0FBY3hOO0lBQUksVUFBQSxtQ0FBSkE7SUFBSSxnREFBSkE7R0FBOEM7WUFFNUR5TixRQUFRek4sR0FBRzBOLFdBQXlCeEQsbUJBQWtCZ0MsR0FBRVU7SUFBaEQ1TSxPQUFBQTtJQUVWLHVDQUZhME4sV0FBeUJ4RDtJQUV0QyxPQUFBLFdBRndEZ0MsR0FBRVU7R0FHdkQ7WUFHRGUsa0JBQWtCM04sR0FBRzBOO0lBQ3ZCLElBQUlFLGdCQURtQkY7O0tBRWpCLFVBQUEsaUNBREZFO0tBQ0UsS0FBQTtLQUVGO01BQUEsUUFBQSxpQ0FIQUE7TUFFeUNoQjtNQUFIVjtNQUFuQmhDO0tBVHJCdUQsUUFNa0J6TixHQUFHME4sV0FHQXhELG1CQUFtQmdDLEdBQUdVOztHQUl6QztZQUdGaUIsU0FBa0I3TixHQUFFME47SUFLdEI7S0FmRUMsa0JBVWtCM04sR0FBRTBOOztNQU9kLEtBekJORixjQWtCa0J4TixJQThCbEI7TUF0QmlCO09BQVg4TixXQXJITi9CLE9BNkdrQi9MO09BU1prSyxvQkFDTSxtQ0FWTWxLLE1BUVo4TjtPQUlBNUIsSUFBd0IsbUNBWlpsTSxNQVFaOE47T0FLQWxCLElBQWdCLG1DQWJKNU0sTUFRWjhOO01BL0NObkIsSUF1Q2tCM00sTUF4SWxCbUosU0FDQUMsU0FDQUM7TUFzSWtCckosUUFBQUEsZ0JBQUFBO01BQUFBLE9BQUFBO01BQUFBLE9BQUFBO01BaEJsQnlOLFFBZ0JrQnpOLEdBQUUwTixXQVNkeEQsbUJBR0FnQyxHQUNBVTtNQXZCTmUsa0JBVWtCM04sR0FBRTBOOzs7VUFnQ3BCSztLQUlnQjtNQUpoQkMsMEJBQUFEO01BSUlFLFlBQVk7S0FDaEIsZUFMQUQsS0FJSUM7O0dBQ2tCOzs7Ozs7OztPQXJLMUIzTTtPQXNCSXNIO09BOEJBL0Q7T0E0Q0FpSTtPQWpDQUo7T0F1Q0FZO09BUUFFO09BL0ZRckQ7T0FpSFIwRDtPQS9IUWhEOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lDdVVvQnFEO0lBREFDO0lBekpGQztJQWtCRUM7SUFVQUM7O0lBeER2QjdNOzs7Ozs7Ozs7Ozs7SUE4Rkc4TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBbFBOak4sVUFBVXRCO0lBRUQ7S0FBQSxPQUFBLGdDQUZDQTtLQUVUO09BQUE7U0FBTztJQUFQLE9BQUE7O0dBVFU7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BT1hzQjs7Ozs7OztZQVNBa04sUUFBUXhPO0lBQWlCLFdBQUE7SUFBQSxPQUFBLHNCQUFqQkE7R0FBMEI7R0FIekI7SUFBQSwwREFHVHdPO0lBV2dDLE1BQUE7SUFDdEIsVUFBQTtJQVBaQztNQUtGO0lBYUlDO1lBQUFDLG9CO1lBQUFDO0lBQUE7O09BQ0U7O09BQ0E7O09BQ0E7ZUFDQTs7R0FDa0M7WUFFaENDLHNCQUF1QkMsTUFBTUM7SUFDL0I7O1lBRHlCRDs7aUJBQU1DLFVBQUFBOztlQUFBQTs7Z0JBQUFBO3lCQUFBQSxXQUFBQTs7S0FXaUM7O0lBQ1Y7R0FBSztHQXBCL0MsaUJBQ2RMLFdBQUFDLFNBQUFDLGFBT0lDO1lBa0JGRztRQUVLQyxlQUdBQyxxQkFHQUMsbUJBS0xDO09BUktGOztNQVFMcE4sSUFSS29OOzs2REFRTHBOLFVBQUFzTjs7Z0JBQUFBOzZEQVhLSDs7dURBTUFFOztHQWMyQixJQUFBLHNCQXVCOUJFO1lBRUFDLFc7WUFDQUMsUUFBUXZQLEdBQUksT0FESixzQkFDQUEsR0FIUnFQLE1BRzZCO1lBQzdCRyxRQUFReFAsR0FBSSxXQURadVAsUUFDUXZQLEdBQW1CO1lBQzNCeVAsV0FBV0MsSUFBR0MsSUFBSyxPQURuQkgsUUFDV0UsTUFBQUEsS0FBR0MsR0FBa0M7WUFLNUNDLG1CO0dBRm1CO0lBQUEsc0JBTHZCTCxTQU9JSztJQUhpQjtZQVNyQkMsWUFDYUM7SSx1Q0FBQUE7SUFFYixJQUFLdEcsUUFBTCxvQ0FGYXNHO1dBOURmZCxjQWdFT3hGOztZQUdMdUcsUUFDYUQsa0JBREpFO0ksdUNBQ0lGO0tBQ0wsT0FGQ0U7SUFHVCxJQUFLeEcsUUFBTCxvQ0FGYXNHO0lBRUMsT0FBVHRHOztZQUdMeUcsVUFDYUg7SSx1Q0FBQUE7Ozs7O0lBRWIsSUFBS3RHLFFBQUwsb0NBRmFzRztJQUVDLE9BQVR0Rzs7WUFHTDBHLFVBQ2FKO0ksdUNBQUFBLG1CQUNMO0lBQ1IsSUFBS3RHLFFBQUwsb0NBRmFzRztJQUVDLFdBQVR0Rzs7WUFHTDJHO0lBQVksWUEvRGtCLE9BdUI5QmQ7UUEwQ0s3RjtJQUFTLE9BQVRBO0dBQW1CO0dBcEVkOzs7O09BMEJWNkY7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7O09BV0FJO09BTUFFO09BTUFFO09BTUFDO09BTUFDO0dBTU4sU0FnQlloQixPQUFBdk4sR0FBQSxPQUFBQSxLQUFNO1lBQU53TyxXQUFBeE8sR0FBQUUsR0FBQUYsT0FBQUUsWUFBTTtZQUROdU8sV0FBQXpPLEdBQUEsT0FBQUEsS0FBVTtZQUFWME8sZUFBQTFPLEdBQUFFLEdBQUFGLE9BQUFFLFlBQVU7WUFEVnlPLFdBQUEzTyxHQUFBLE9BQUFBLEtBQVU7WUFBVjRPLGVBQUE1TyxHQUFBRSxHQUFBRixPQUFBRSxZQUFVO1lBUFZvTixTQUFBdE4sR0FBQSxPQUFBQSxLQUFRO1lBQVI2TyxhQUFBN08sR0FBQUUsR0FBQUYsT0FBQUUsWUFBUTtZQUZoQm9JLGtCQUFBdEksR0FBQSxPQUFBQSxLQUFpQjtZQURqQjhPLFNBQUE5TyxHQUFBLE9BQUFBLEtBQVE7WUFEQStPLEtBQUEvTyxHQUFBLE9BQUFBLEtBQUU7WUFBRmdQLE9BQUFoUCxHQUFBRSxHQUFBRixPQUFBRSxZQUFFO1lBREYrTyxNQUFBalAsR0FBQSxPQUFBQSxLQUFLO1lBQUxrUCxVQUFBbFAsR0FBQUUsR0FBQUYsT0FBQUUsWUFBSztnQkFjTEYsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRTtHQUFNO0dBQU47SUFBQSxVQUFBc087SUFBQVcsK0JBQUEsU0FBTSxvQkFBTjVCO2dCQURBdk4sR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRSxHQUFBRjtHQUFVO0dBQVY7SUFBQSxVQUFBME87SUFBQVU7MEJBQUEsU0FBVSx3QkFBVlg7Z0JBREF6TyxHQUFBRTtJQUFBLFdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUFBO0dBQVU7R0FBVjtJQUFBLFVBQUE0TztJQUFBUzswQkFBQSxTQUFVLHdCQUFWVjtnQkFQQTNPLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUE7R0FBUTtHQUFSO0lBQUEsVUFBQTZPO0lBQUFTOzBCQUFBLFNBQVEsc0JBQVJoQztnQkFGUnROLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUEsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUE7R0FBaUI7R0FBakI7O0lBQUF1UDs7dUJBQUEsU0FBaUI7OztPQUFqQmpIOztnQkFEQXRJLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUE7R0FBUTtHQUFSOztJQUFBd1A7MEJBQUEsU0FBUSxzQkFBUlY7Z0JBRFE5TyxHQUFBRTtJQUFBLFdBQUFGLE1BQUFFLEdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBO0dBQUU7R0FBRjtJQUFBLFVBQUFnUDtJQUFBUywyQkFBQSxTQUFFLGdCQUFGVjtnQkFEQS9PLEdBQUFFO0lBQUEsV0FBQUEsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUE7R0FBSztHQUFMO0lBQUEsVUFBQWtQO0lBQUFRLDhCQUFBLFNBQUssbUJBQUxUO1lBRlAzTjtJQUFBcU87SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQW5PO0lBQUE7S0FBQSxRQUFBLFdBQUE0TixXQUVPRCxTQUZQM047S0FBQUM7S0FBQW1PO0tBQUEsVUFBQSxXQUFBUCxRQUdPSCxNQUhQek47S0FBQUU7S0FBQWtPO0tBQUEsVUFBQSxXQUFBUCxjQUlETCxZQUpDdE47S0FBQUU7S0FBQWlPO0tBQUE7T0FBQSxXQUFBUCx1QkFLRFAscUJBTENuTjtLQUFBRTtLQUFBZ087S0FBQSxVQUFBLFdBQUFQLGNBT09ULFlBUFBoTjtLQUFBRTtLQUFBK047S0FBQSxVQUFBLFdBQUFQLGdCQWNPWCxjQWRQN007S0FBQUU7S0FBQThOO0tBQUEsVUFBQSxXQUFBUCxnQkFlT2IsY0FmUDFNO0tBQUFFO0tBQUE2TjtLQUFBLFVBQUEsV0FBQVAsWUFnQk9mLFVBaEJQdk07S0FBQUU7S0FBQTROO0lBQUE7cUJBQUExTjthQUFBO2NBQUFpTSxRQUFBLFdBQUFrQixXQUFBbk47Y0FBQXFLLEtBQUEsV0FBQStDLFFBQUFwTjtjQUFBOEwsV0FBQSxXQUFBdUIsY0FBQXJOO2NBQUFzRixvQkFBQSxXQUFBZ0ksdUJBQUF0TjtjQUFBc0ssV0FBQSxXQUFBaUQsY0FBQXZOO2NBQUEyTCxhQUFBLFdBQUE2QixnQkFBQXhOO2NBQUF5TCxhQUFBLFdBQUFnQyxnQkFBQXpOO2NBQUF1SyxTQUFBLFdBQUFtRCxZQUFBMU47YUFBQTtxQkFBQWlNO3FCQUFBNUI7cUJBQUF5QjtxQkFBQXhHO3FCQUFBZ0Y7cUJBQUFxQjtxQkFBQUY7cUJBQUFsQjtZQUFDO1lBQUR6Szs7WUFBQUc7SUFBQWdNO0lBQUE1QjtJQUFBeUI7SUFBQXhHO0lBQUFnRjtJQUFBcUI7SUFBQUY7SUFBQWxCO0lBQUE7WUFBQTBCO1lBQUE1QjtZQUFBeUI7WUFBQXhHO1lBQUFnRjtZQUFBcUI7WUFBQUY7WUFBQWxCO0dBQUM7WUFBRHJLO0lBQUF5TTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBQSxZQWdCT2Y7S0FoQlAsT0FBQSxXQUFBYyxnQkFlT2I7S0FmUCxPQUFBLFdBQUFZLGdCQWNPWDtLQWRQLE9BQUEsV0FBQVUsY0FPT1Q7S0FQUCxPQUFBLFdBQUFRLHVCQUtEUDtLQUxDLE9BQUEsV0FBQU0sY0FJREw7S0FKQyxPQUFBLFdBQUFJLFFBR09IO0lBSFA7WUFBQSxXQUFBRSxXQUVPRDs7Ozs7Ozs7R0FGTjtZQUFEdk07SUFBQXdNO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUEsV0FBQVAsV0FFT0Q7SUFGUCxXQUFBRSxRQUdPSDtJQUhQLFdBQUFJLGNBSURMO0lBSkMsV0FBQU0sdUJBS0RQO0lBTEMsV0FBQVEsY0FPT1Q7SUFQUCxXQUFBVSxnQkFjT1g7SUFkUCxXQUFBWSxnQkFlT2I7SUFDQSxPQUFBLFdBaEJQYyxZQWdCT2Y7R0FoQk47WUFBRC9MO0lBQUFDO0lBQUFzTTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLE9BZ0JPO2FBaEJQQTthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRCxRQUFBLFdBQUFELFdBQUF0TSxNQUVPcU0sVUFDQUQ7dUJBQ1JEO3FCQUNBRDttQkFFUUQ7aUJBT0FEO2VBQ0FEO2FBQ0FEO0dBaEJOO1lBQUQ3TCxTQUFBQztJQUFBO0tBQUEsV0FBQSxXQUFBQSxXQWdCTzRMO0tBaEJQLFdBQUEsV0FBQTVMLFdBZU82TDtLQWZQLFdBQUEsV0FBQTdMLFdBY084TDtLQWRQLFdBQUEsV0FBQTlMLFdBT08rTDtLQVBQLFdBQUEsV0FBQS9MLFdBS0RnTTtLQUxDLFdBQUEsV0FBQWhNLFdBSURpTTtLQUpDLFdBQUEsV0FBQWpNLFdBR09rTTtJQUhQLFdBQUEsV0FBQWxNLFdBRU9tTTtHQUZOO1lBQURsTTtJQUFBbU07SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQVAsV0FFT0Q7S0FGUCxjQUFBLFdBQUFFLFFBR09IO0tBSFAsY0FBQSxXQUFBSSxjQUlETDtLQUpDO2NBQUEsV0FBQU0sdUJBS0RQO0tBTEMsY0FBQSxXQUFBUSxjQU9PVDtLQVBQLGNBQUEsV0FBQVUsZ0JBY09YO0tBZFAsY0FBQSxXQUFBWSxnQkFlT2I7SUFmUCxjQWdCTyxXQWhCUGMsWUFnQk9mO0dBaEJOO1lBQUQxTDtJQUFBa007SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQVAsV0FFT0Q7S0FGUCxlQUFBLFdBQUFFLFFBR09IO0tBSFAsZUFBQSxXQUFBSSxjQUlETDtLQUpDLGVBQUEsV0FBQU0sdUJBS0RQO0tBTEMsZUFBQSxXQUFBUSxjQU9PVDtLQVBQLGVBQUEsV0FBQVUsZ0JBY09YO0tBZFAsZUFBQSxXQUFBWSxnQkFlT2I7SUFmUCxxQkFnQk8sV0FoQlBjLFlBZ0JPZjtHQWhCTjtZQUFEekw7SUFBQWlNO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxXQUFBLFdBQUFBLFlBZ0JPZjtLQWhCUCxXQUFBLFdBQUFjLGdCQWVPYjtLQWZQLFdBQUEsV0FBQVksZ0JBY09YO0tBZFAsV0FBQSxXQUFBVSxjQU9PVDtLQVBQLFdBQUEsV0FBQVEsdUJBS0RQO0tBTEMsV0FBQSxXQUFBTSxjQUlETDtLQUpDLFdBQUEsV0FBQUksUUFHT0g7SUFIUCxXQUFBLFdBQUFFLFdBRU9EO0dBRk47WUFBRC9MO0lBQUFKO0lBQUFvTTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLFdBQUFQLFdBRU9ELFNBRlBuTSxRQUFBQTtJQUFBLFdBQUFxTSxRQUdPSCxNQUhQbE0sUUFBQUE7SUFBQSxXQUFBc00sY0FJREwsWUFKQ2pNLFFBQUFBO0lBQUEsV0FBQXVNLHVCQUtEUCxxQkFMQ2hNLFFBQUFBO0lBQUEsV0FBQXdNLGNBT09ULFlBUFAvTCxRQUFBQTtJQUFBLFdBQUF5TSxnQkFjT1gsY0FkUDlMLFFBQUFBO0lBQUEsV0FBQTBNLGdCQWVPYixjQWZQN0wsUUFBQUE7SUFnQk8sT0FBQSxXQWhCUDJNLFlBZ0JPZixVQWhCUDVMLFFBQUFBO0dBQUM7WUFBREs7SUFBQUw7SUFBQUY7SUFBQXNNO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztZQUFBM007WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7SUFBQSxPQUFBO2FBQUEyTTthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRDt5QkFBQSxXQUFBRCxXQUFBdE0sTUFFT3FNLFNBRlBuTSxRQUFBQTt5QkFHT2tNO3lCQUhQbE07O3VCQUlEaU07dUJBSkNqTTs7cUJBS0RnTTtxQkFMQ2hNOzttQkFPTytMO21CQVBQL0w7O2lCQWNPOEw7aUJBZFA5TDs7ZUFlTzZMO2VBZlA3TDs7YUFnQk80TDthQWhCUDVMOzs7WUFBQU07SUFBQU47SUFBQW9NO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxPQUFBLFdBQUFQLFdBRU9ELFNBRlBuTSxRQUFBQTtLQUFBLGNBQUEsV0FBQXFNLFFBR09ILE1BSFBsTSxRQUFBQTtLQUFBO2NBQUEsV0FBQXNNLGNBSURMLFlBSkNqTSxRQUFBQTtLQUFBOztVQUFBO1dBQUF1TSx1QkFLRFAscUJBTENoTSxRQUFBQTs7S0FBQTtjQUFBLFdBQUF3TSxjQU9PVCxZQVBQL0wsUUFBQUE7S0FBQTs7VUFBQSxXQUFBeU0sZ0JBY09YLGNBZFA5TCxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBME0sZ0JBZU9iLGNBZlA3TCxRQUFBQTs7SUFBQSxjQWdCTyxXQWhCUDJNLFlBZ0JPZixVQWhCUDVMLFFBQUFBO0dBQUM7WUFBRE87SUFBQVA7SUFBQW9NO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxPQUFBLFdBQUFQLFdBRU9ELFNBRlBuTSxRQUFBQTtLQUFBLGVBQUEsV0FBQXFNLFFBR09ILE1BSFBsTSxRQUFBQTtLQUFBLGVBQUEsV0FBQXNNLGNBSURMLFlBSkNqTSxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBdU0sdUJBS0RQLHFCQUxDaE0sUUFBQUE7S0FBQSxlQUFBLFdBQUF3TSxjQU9PVCxZQVBQL0wsUUFBQUE7S0FBQTtlQUFBLFdBQUF5TSxnQkFjT1gsY0FkUDlMLFFBQUFBO0tBQUE7ZUFBQSxXQUFBME0sZ0JBZU9iLGNBZlA3TCxRQUFBQTtJQUFBLHFCQWdCTyxXQWhCUDJNLFlBZ0JPZixVQWhCUDVMLFFBQUFBO0dBQUM7WUFBRFE7SUFBQVI7SUFBQW9NO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxXQUFBLFdBQUFBLFlBZ0JPZixVQWhCUDVMLFFBQUFBO0tBQUE7V0FBQSxXQUFBME0sZ0JBZU9iLGNBZlA3TCxRQUFBQTtLQUFBO1dBQUEsV0FBQXlNLGdCQWNPWCxjQWRQOUwsUUFBQUE7S0FBQSxXQUFBLFdBQUF3TSxjQU9PVCxZQVBQL0wsUUFBQUE7S0FBQTs7UUFBQTtVQUFBdU0sdUJBS0RQLHFCQUxDaE0sUUFBQUE7O0tBQUEsV0FBQSxXQUFBc00sY0FJREwsWUFKQ2pNLFFBQUFBO0tBQUEsV0FBQSxXQUFBcU0sUUFHT0gsTUFIUGxNLFFBQUFBO0lBQUEsV0FBQSxXQUFBb00sV0FFT0QsU0FGUG5NLFFBQUFBO0dBQUM7WUFBRFM7SUFBQVQ7SUFBQW9NO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxPQUFBLFdBQUFBLFlBZ0JPZixVQWhCUDVMLFFBQUFBO0tBQUEsT0FBQSxXQUFBME0sZ0JBZU9iLGNBZlA3TCxRQUFBQTtLQUFBLE9BQUEsV0FBQXlNLGdCQWNPWCxjQWRQOUwsUUFBQUE7S0FBQSxPQUFBLFdBQUF3TSxjQU9PVCxZQVBQL0wsUUFBQUE7S0FBQTtPQUFBO1NBQUF1TSx1QkFLRFAscUJBTENoTSxRQUFBQTtLQUFBLE9BQUEsV0FBQXNNLGNBSURMLFlBSkNqTSxRQUFBQTtLQUFBLE9BQUEsV0FBQXFNLFFBR09ILE1BSFBsTSxRQUFBQTtJQUFBO1lBQUEsV0FBQW9NLFdBRU9ELFNBRlBuTSxRQUFBQTs7Ozs7Ozs7R0FBQztZQUFEVTtJQUFBVixRQUFBMEwsT0FBQTVCLElBQUFDLFVBQUFxQixZQUFBRixZQUFBbEI7SUFBQSxJQUFBckosV0FBQSw2QkFBQVg7SUFBQVcsY0FBQStLO0lBQUEvSyxjQUFBbUo7SUFBQW5KLGNBQUFvSjtJQUFBcEosY0FBQXlLO0lBQUF6SyxjQUFBdUs7SUFBQXZLLGNBQUFxSjs7R0FBQztHQUFEO0lBQUE7O09BQUE1SjtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztJQUFBOztPQUFBcEU7T0FnQk9zUDtPQURBQztPQURBQztPQVBBQztPQUZSQztPQURBQztPQURRQztPQURBQztPQUZQcE87T0FBQTJCO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFFO09BQUFDO09BQUFDOztZQXNCRHNELFVBQVU1STs7Y0FFTmlNLE1BQU1DLEdBQUksT0FBQSw4QkFGSmxNLEdBRUFrTSxHQUE2QjtLQUN2QyxvQjtLQXdCSTtNQUFBO1FBekJBRDttQkEwQmtCNkQ7VywrQkFBQUEsbUJBSWI7V0FDQTtZQUFLTyxhQUFMLDRCQUxhUDtZQU1FeUMsTUFsQ2R2UztZQWtDY3dTO1lBQUFDO1lBQUFDO1lBQUE1UjtZQUFBMEI7b0JBQUFtUSxXQUFBQyxPQUFBQztZQUFBLE9BQUEsc0JBQUFELE9BQUFDO1dBQVE7OzthQUFSdkU7YUFBQWtFO2FBQUFHO2FBQUFuUTthQUFBMUI7YUFBQTRSO2FBQUFEO2FBQUFGO1dBQ0ksV0FGZGxDLGVBRWMsT0FBQSxzQkFuQ2xCclE7V0FtQ00sR0FBQTtXQUFQLE1BQUE7O01BbEJMO1FBZkFpTTttQkFnQmtCNkQ7VywrQkFBQUEsbUJBSWI7V0FDQTtZQUFLUyxhQUFMLDRCQUxhVDtZQU1FeUMsTUF4QmR2UztZQXdCY3dTO1lBQUFDO1lBQUFDO1lBQUE1UjtZQUFBMEI7b0JBQUFtUSxXQUFBRyxPQUFBQztZQUFBLE9BQUEsc0JBQUFELE9BQUFDO1dBQVE7OzthQUFSMUU7YUFBQW1FO2FBQUFHO2FBQUFuUTthQUFBMUI7YUFBQTRSO2FBQUFEO2FBQUFGO1dBQ0ksV0FGZGhDLGVBRWMsT0FBQSxzQkF6QmxCdlE7V0F5Qk0sR0FBQTtXQUFQLE1BQUE7O3lCO3lCO3lCO3lCO0tBcEJMOztRQUhBaU07bUJBR1k0RTtXQUNUO1lBQWUwQixNQUNiLHFCQUZPMUI7WUFDTTRCLGVBTlp6UztZQU1Zd1M7WUFBQUU7WUFBQTVSO1lBQUEwQjtvQkFBQW1RLFdBQUFLLE9BQUFDO1lBQUEsT0FBQSxzQkFBQUQsT0FBQUM7V0FBSTs7O29CQUFKN0U7b0JBQUFvRTtvQkFBQUc7b0JBQUFuUTtvQkFBQTFCO29CQUFBNFI7b0JBQUFEO29CQUFBRjtVQUtXO0tBeUJ2QixPQUFBOztJQUFNO0lBbkMwQixPQUFBLG1DQURoQ3ZTLEdBakhWZ1A7R0FxSmlCO1lBR2pCa0UsYUFBV2xULEdBQUUrTztJQUNmLElBQUlELE9BRFM5TztXQUVOLHNCQURIOE8sTUFEV0M7O2tDQXhKYkMsY0F3SldoUDt3REFBRStPO3dEQUNYRDs7Ozs7Ozs7OztLQUdGOztJQUpXOU8sT0FBRStPOztHQVdBO1lBR2JvRSxjQUFlQyxJQUFHcFQsR0FBRStPO0lBQVMsV0FBQSxzQkFBZHFFLElBQUdwVDtJQUFXLGNBZDdCa1QsYUFja0JsVCxHQUFFK087R0FBdUQ7R0FqTWxFO0lBQUE7OztPQTJCVEM7O09BMkdRRztPQURBa0I7T0FBQUM7T0FEQUM7T0FBQUM7T0FQQXRCO09BQUF1QjtPQUZSdkc7T0FEQXdHO09BRFFDO09BQUFDO09BREFDO09BQUFDOztPQTdGUjlCO09BaUhBcEc7T0F1Q0FzSztPQWNBQztPQXhFUXhDOzs7Ozs7WUErRVIwQyxZQUFVclQ7SUFDWjtLQUNPc1QsSUFBSyw0Q0FGQXRUO0tBSUhvUCxRQURBLDRDQURGa0UsR0FGS3RUO1dBRUxzVDs7b0NBRUVsRTtHQUlhO0dBWEo7a0VBR2hCaUU7R0FZTixTQXdCSTNGLFVBQUE5TCxHQUFBLE9BQUFBLEtBQVM7WUFEVDJSLGNBQUEzUixHQUFBLE9BQUFBLEtBQWE7WUFEYjRSLGFBQUE1UixHQUFBLE9BQUFBLEtBQVk7WUFISjZSLG9CQUFBN1IsR0FBQSxPQUFBQSxLQUFtQjtZQUFuQjhSLHdCQUFBOVIsR0FBQUUsR0FBQUYsT0FBQUUsWUFBbUI7WUFSbkI2UixhQUFBL1IsR0FBQSxPQUFBQSxLQUFZO1lBQVpnUyxpQkFBQWhTLEdBQUFFLEdBQUFGLE9BQUFFLFlBQVk7WUFIcEJrSSxPQUFBcEksR0FBQSxPQUFBQSxLQUFNO1lBREVpUyxhQUFBalMsR0FBQSxPQUFBQSxLQUFZO1lBQVprUyxpQkFBQWxTLEdBQUFFLEdBQUFGLE9BQUFFLFlBQVk7WUFIWmlTLGVBQUFuUyxHQUFBLE9BQUFBLEtBQWM7WUFBZG9TLG1CQUFBcFMsR0FBQUUsR0FBQUYsT0FBQUUsWUFBYztZQUh0QlMsR0FBQVgsR0FBQSxPQUFBQSxLQUFFO2dCQXVCRkEsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRTtHQUFTO0dBQVQ7O0lBQUFtUzswQkFBQSxTQUFTLHVCQUFUdkc7Z0JBREE5TCxHQUFBRTtJQUFBLFdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFFLEdBQUFGO0dBQWE7R0FBYjs7SUFBQXNTOzt1QkFBQSxTQUFhOzs7T0FBYlg7O2dCQURBM1IsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRSxHQUFBRixNQUFBQTtHQUFZO0dBQVo7O0lBQUF1Uzs7dUJBQUEsU0FBWTs7O09BQVpYOztnQkFIUTVSLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUE7R0FBbUI7R0FBbkI7SUFBQSxVQUFBOFI7SUFBQVU7O3VCQUFBLFNBQW1COzs7T0FBbkJYOztnQkFSQTdSLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUE7R0FBWTtHQUFaO0lBQUEsVUFBQWdTO0lBQUFTOzt1QkFBQSxTQUFZOzs7T0FBWlY7O2dCQUhSL1IsR0FBQUU7SUFBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBRSxHQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQTtHQUFNO0dBQU47O0lBQUEwUywrQkFBQSxTQUFNLG9CQUFOdEs7Z0JBRFFwSSxHQUFBRTtJQUFBLFdBQUFGLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBO0dBQVk7R0FBWjtJQUFBLFVBQUFrUztJQUFBUzs7dUJBQUEsU0FBWTs7O09BQVpWOztnQkFIQWpTLEdBQUFFO0lBQUEsV0FBQUYsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUE7R0FBYztHQUFkO0lBQUEsVUFBQW9TO0lBQUFROzt1QkFBQSxTQUFjOzs7T0FBZFQ7O2dCQUhSblMsR0FBQUU7SUFBQSxXQUFBQSxHQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQSxNQUFBQTtHQUFFO0dBQUYsYUFBQW1CLDJCQUFBLFNBQUUsZ0JBQUZSO1lBRE1rUztJQUFBcFI7SUFBQXFSO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUF0UjtJQUFBO0tBQUEsUUFBQSxXQUFBTixRQUNOTixNQURNWTtLQUFBQztLQUFBSztLQUFBLFVBQUEsV0FBQXlRLG9CQUlFRixrQkFKRjVRO0tBQUFFO0tBQUFvUjtLQUFBLFVBQUEsV0FBQVAsa0JBT0VKLGdCQVBGelE7S0FBQUU7S0FBQW1SO0tBQUEsVUFBQSxXQUFBUCxZQVFOTixVQVJNdFE7S0FBQUU7S0FBQWtSO0tBQUEsVUFBQSxXQUFBUCxrQkFXRVIsZ0JBWEZuUTtLQUFBRTtLQUFBaVI7S0FBQTtPQUFBO1NBQUFQLHlCQW1CRVYsdUJBbkJGaFE7S0FBQUU7S0FBQWdSO0tBQUEsVUFBQSxXQUFBUCxrQkFzQk5aLGdCQXRCTTdQO0tBQUFFO0tBQUErUTtLQUFBLFVBQUEsV0FBQVAsbUJBdUJOZCxpQkF2Qk0xUDtLQUFBRTtLQUFBOFE7S0FBQSxVQUFBLFdBQUFQLGVBd0JOaEIsYUF4Qk12UDtLQUFBK1E7S0FBQUM7SUFBQTtxQkFBQTlRO2FBQUE7Y0FBQXJDLEtBQUEsV0FBQTBCLFFBQUFXO2NBQUFtUCxpQkFBQSxXQUFBbUIsb0JBQUF0UTtjQUFBaVAsZUFBQSxXQUFBc0Isa0JBQUF2UTtjQUFBb0YsU0FBQSxXQUFBb0wsWUFBQXhRO2NBQUErTyxlQUFBLFdBQUEwQixrQkFBQXpRO2NBQUE2TyxzQkFBQSxXQUFBNkIseUJBQUExUTtjQUFBNE8sZUFBQSxXQUFBK0Isa0JBQUEzUTtjQUFBMk8sZ0JBQUEsV0FBQWlDLG1CQUFBNVE7Y0FBQThJLFlBQUEsV0FBQWdJLGVBQUE5UTthQUFBO3FCQUFBckM7cUJBQUF3UjtxQkFBQUY7cUJBQUE3SjtxQkFBQTJKO3FCQUFBRjtxQkFBQUQ7cUJBQUFEO3FCQUFBN0Y7WUFBQztZQUFEK0g7O1lBQUFFO0lBQUFwVDtJQUFBd1I7SUFBQUY7SUFBQTdKO0lBQUEySjtJQUFBRjtJQUFBRDtJQUFBRDtJQUFBN0Y7SUFBQTtZQUFBbkw7WUFBQXdSO1lBQUFGO1lBQUE3SjtZQUFBMko7WUFBQUY7WUFBQUQ7WUFBQUQ7WUFBQTdGO0dBQUM7WUFBRGtJO0lBQUF2UztJQUFBcVI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQUEsZUF3Qk5oQjtLQXhCTSxPQUFBLFdBQUFlLG1CQXVCTmQ7S0F2Qk0sT0FBQSxXQUFBYSxrQkFzQk5aO0tBdEJNLE9BQUEsV0FBQVcseUJBbUJFVjtLQW5CRixPQUFBLFdBQUFTLGtCQVdFUjtLQVhGLE9BQUEsV0FBQU8sWUFRTk47S0FSTSxPQUFBLFdBQUFLLGtCQU9FSjtLQVBGLE9BQUEsV0FBQUcsb0JBSUVGO0lBSkY7WUFBQSxXQUFBblIsUUFDTk47Ozs7Ozs7OztHQURPO1lBQUQ4UztJQUFBeFM7SUFBQXFSO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUEsV0FBQTVSLFFBQ05OO0lBRE0sV0FBQTJSLG9CQUlFRjtJQUpGLFdBQUFHLGtCQU9FSjtJQVBGLFdBQUFLLFlBUU5OO0lBUk0sV0FBQU8sa0JBV0VSO0lBWEYsV0FBQVMseUJBbUJFVjtJQW5CRixXQUFBVyxrQkFzQk5aO0lBdEJNLFdBQUFhLG1CQXVCTmQ7SUFDQSxPQUFBLFdBeEJNZSxlQXdCTmhCO0dBeEJPO1lBQUQ2QjtJQUFBN1E7SUFBQTVCO0lBQUFxUjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLE9Bd0JOO2FBeEJNQTthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRDt5QkFBQTsyQkFBQUQ7MkJBQUEsV0FBQXJSLFFBQUE0QixNQUNObEM7MkJBR1F5Ujt5QkFHQUQ7dUJBQ1JEO3FCQUdRRDttQkFRQUQ7aUJBR1JEO2VBQ0FEO2FBQ0FEO0dBeEJPO1lBQUQ4QixXQUFBNVE7SUFBQTtLQUFBLFdBQUEsV0FBQUEsV0F3Qk44TztLQXhCTSxXQUFBLFdBQUE5TyxXQXVCTitPO0tBdkJNLFdBQUEsV0FBQS9PLFdBc0JOZ1A7S0F0Qk0sV0FBQSxXQUFBaFAsV0FtQkVpUDtLQW5CRixXQUFBLFdBQUFqUCxXQVdFa1A7S0FYRixXQUFBLFdBQUFsUCxXQVFObVA7S0FSTSxXQUFBLFdBQUFuUCxXQU9Fb1A7S0FQRixXQUFBLFdBQUFwUCxXQUlFcVA7SUFKRixXQUFBLFdBQUFyUCxXQUNOcEM7R0FETztZQUFEaVQ7SUFBQTNTO0lBQUFxUjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBNVIsUUFDTk47S0FETSxjQUFBLFdBQUEyUixvQkFJRUY7S0FKRixjQUFBLFdBQUFHLGtCQU9FSjtLQVBGLGNBQUEsV0FBQUssWUFRTk47S0FSTSxjQUFBLFdBQUFPLGtCQVdFUjtLQVhGOztVQUFBLFdBQUFTLHlCQW1CRVY7O0tBbkJGLGNBQUEsV0FBQVcsa0JBc0JOWjtLQXRCTSxjQUFBLFdBQUFhLG1CQXVCTmQ7SUF2Qk0sY0F3Qk4sV0F4Qk1lLGVBd0JOaEI7R0F4Qk87WUFBRGdDO0lBQUE1UztJQUFBcVI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQTVSLFFBQ05OO0tBRE0sZUFBQSxXQUFBMlIsb0JBSUVGO0tBSkYsZUFBQSxXQUFBRyxrQkFPRUo7S0FQRixlQUFBLFdBQUFLLFlBUU5OO0tBUk0sZUFBQSxXQUFBTyxrQkFXRVI7S0FYRixlQUFBLFdBQUFTLHlCQW1CRVY7S0FuQkYsZUFBQSxXQUFBVyxrQkFzQk5aO0tBdEJNLGVBQUEsV0FBQWEsbUJBdUJOZDtJQXZCTSxxQkF3Qk4sV0F4Qk1lLGVBd0JOaEI7R0F4Qk87WUFBRGlDO0lBQUE3UztJQUFBcVI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsZUF3Qk5oQjtLQXhCTSxXQUFBLFdBQUFlLG1CQXVCTmQ7S0F2Qk0sV0FBQSxXQUFBYSxrQkFzQk5aO0tBdEJNO1dBQUEsV0FBQVcseUJBbUJFVjtLQW5CRixXQUFBLFdBQUFTLGtCQVdFUjtLQVhGLFdBQUEsV0FBQU8sWUFRTk47S0FSTSxXQUFBLFdBQUFLLGtCQU9FSjtLQVBGLFdBQUEsV0FBQUcsb0JBSUVGO0lBSkYsV0FBQSxXQUFBblIsUUFDTk47R0FETztZQUFEb1Q7SUFBQWhSO0lBQUE5QjtJQUFBcVI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQSxXQUFBNVIsUUFDTk4sTUFETW9DLFFBQUFBO0lBQUEsV0FBQXVQLG9CQUlFRixrQkFKRnJQLFFBQUFBO0lBQUEsV0FBQXdQLGtCQU9FSixnQkFQRnBQLFFBQUFBO0lBQUEsV0FBQXlQLFlBUU5OLFVBUk1uUCxRQUFBQTtJQUFBLFdBQUEwUCxrQkFXRVIsZ0JBWEZsUCxRQUFBQTtJQUFBO01BQUEyUCx5QkFtQkVWLHVCQW5CRmpQLFFBQUFBO0lBQUEsV0FBQTRQLGtCQXNCTlosZ0JBdEJNaFAsUUFBQUE7SUFBQSxXQUFBNlAsbUJBdUJOZCxpQkF2Qk0vTyxRQUFBQTtJQXdCTixPQUFBLFdBeEJNOFAsZUF3Qk5oQixhQXhCTTlPLFFBQUFBO0dBQUM7WUFBRGlSO0lBQUFqUjtJQUFBRjtJQUFBNUI7SUFBQXFSO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztZQUFBOVA7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7SUFBQSxPQUFBO2FBQUE4UDthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRDt5QkFBQTsyQkFBQUQ7MkJBQUEsV0FBQXJSLFFBQUE0QixNQUNObEMsTUFETW9DLFFBQUFBOzJCQUlFcVA7MkJBSkZyUDs7eUJBT0VvUDt5QkFQRnBQOzt1QkFRTm1QO3VCQVJNblA7O3FCQVdFa1A7cUJBWEZsUDs7bUJBbUJFaVA7bUJBbkJGalA7O2lCQXNCTmdQO2lCQXRCTWhQOztlQXVCTitPO2VBdkJNL087O2FBd0JOOE87YUF4Qk05Tzs7O1lBQUFrUjtJQUFBbFI7SUFBQTlCO0lBQUFxUjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBNVIsUUFDTk4sTUFETW9DLFFBQUFBO0tBQUE7O1VBQUEsV0FBQXVQLG9CQUlFRixrQkFKRnJQLFFBQUFBOztLQUFBOztVQUFBLFdBQUF3UCxrQkFPRUosZ0JBUEZwUCxRQUFBQTs7S0FBQSxjQUFBLFdBQUF5UCxZQVFOTixVQVJNblAsUUFBQUE7S0FBQTs7VUFBQSxXQUFBMFAsa0JBV0VSLGdCQVhGbFAsUUFBQUE7O0tBQUE7O1VBQUE7V0FBQTJQLHlCQW1CRVYsdUJBbkJGalAsUUFBQUE7O0tBQUE7O1VBQUEsV0FBQTRQLGtCQXNCTlosZ0JBdEJNaFAsUUFBQUE7O0tBQUE7O1VBQUEsV0FBQTZQLG1CQXVCTmQsaUJBdkJNL08sUUFBQUE7O0lBQUE7Y0F3Qk4sV0F4Qk04UCxlQXdCTmhCLGFBeEJNOU8sUUFBQUE7O0dBQUM7WUFBRG1SO0lBQUFuUjtJQUFBOUI7SUFBQXFSO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxPQUFBLFdBQUE1UixRQUNOTixNQURNb0MsUUFBQUE7S0FBQTs7VUFBQSxXQUFBdVAsb0JBSUVGLGtCQUpGclAsUUFBQUE7S0FBQTtlQUFBLFdBQUF3UCxrQkFPRUosZ0JBUEZwUCxRQUFBQTtLQUFBLGVBQUEsV0FBQXlQLFlBUU5OLFVBUk1uUCxRQUFBQTtLQUFBO2VBQUEsV0FBQTBQLGtCQVdFUixnQkFYRmxQLFFBQUFBO0tBQUE7OztRQUFBO1VBQUEyUCx5QkFtQkVWLHVCQW5CRmpQLFFBQUFBO0tBQUE7ZUFBQSxXQUFBNFAsa0JBc0JOWixnQkF0Qk1oUCxRQUFBQTtLQUFBOztVQUFBLFdBQUE2UCxtQkF1Qk5kLGlCQXZCTS9PLFFBQUFBO0lBQUE7O2NBd0JOLFdBeEJNOFAsZUF3Qk5oQixhQXhCTTlPLFFBQUFBO0dBQUM7WUFBRG9SO0lBQUFwUjtJQUFBOUI7SUFBQXFSO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxXQUFBLFdBQUFBLGVBd0JOaEIsYUF4Qk05TyxRQUFBQTtLQUFBOztRQUFBLFdBQUE2UCxtQkF1Qk5kLGlCQXZCTS9PLFFBQUFBOztLQUFBOztRQUFBLFdBQUE0UCxrQkFzQk5aLGdCQXRCTWhQLFFBQUFBOztLQUFBOztRQUFBO1VBQUEyUCx5QkFtQkVWLHVCQW5CRmpQLFFBQUFBOztLQUFBOztRQUFBLFdBQUEwUCxrQkFXRVIsZ0JBWEZsUCxRQUFBQTs7S0FBQSxXQUFBLFdBQUF5UCxZQVFOTixVQVJNblAsUUFBQUE7S0FBQTs7UUFBQSxXQUFBd1Asa0JBT0VKLGdCQVBGcFAsUUFBQUE7O0tBQUE7O1FBQUEsV0FBQXVQLG9CQUlFRixrQkFKRnJQLFFBQUFBOztJQUFBLFdBQUEsV0FBQTlCLFFBQ05OLE1BRE1vQyxRQUFBQTtHQUFDO1lBQURxUjtJQUFBclI7SUFBQTlCO0lBQUFxUjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBQSxlQXdCTmhCLGFBeEJNOU8sUUFBQUE7S0FBQSxPQUFBLFdBQUE2UCxtQkF1Qk5kLGlCQXZCTS9PLFFBQUFBO0tBQUEsT0FBQSxXQUFBNFAsa0JBc0JOWixnQkF0Qk1oUCxRQUFBQTtLQUFBO09BQUE7U0FBQTJQLHlCQW1CRVYsdUJBbkJGalAsUUFBQUE7S0FBQSxPQUFBLFdBQUEwUCxrQkFXRVIsZ0JBWEZsUCxRQUFBQTtLQUFBLE9BQUEsV0FBQXlQLFlBUU5OLFVBUk1uUCxRQUFBQTtLQUFBLE9BQUEsV0FBQXdQLGtCQU9FSixnQkFQRnBQLFFBQUFBO0tBQUE7T0FBQSxXQUFBdVAsb0JBSUVGLGtCQUpGclAsUUFBQUE7SUFBQTtZQUFBLFdBQUE5QixRQUNOTixNQURNb0MsUUFBQUE7Ozs7Ozs7OztHQUFDO1lBQURzUjtJQUFBdFIsUUFBQTRPLGdCQUFBRixjQUFBRixjQUFBRjtJQUFBLElBQUEzTixXQUFBLDZCQUFBWDtJQUFBVyxjQUFBaU87SUFBQWpPLGNBQUErTjtJQUFBL04sY0FBQTZOO0lBQUE3TixjQUFBMk47O0dBQUM7R0FBRDtJQUFBOztPQUFBMEM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7SUFBQTs7T0FBQWxJO09Bd0JOMEY7T0FEQUM7T0FEQUM7T0FIUUM7T0FSQUM7T0FIUkM7T0FEUUM7T0FIQUM7T0FIUnpSO09BRE0wUjtPQUFBa0I7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7O1lBOEJOUTtJQWFRO0tBUkoxTTtLQUdBdUo7S0FLRm9ELE1BQU0sNkJBUkozTTtJQVNOLEdBTk11Sjs4REFLRm9EOzs7SUFJZSxJQUFiQztrQkFDNkIvRjtLQUMvQixXQUZFK0YsZUFFb0MsT0FBQSxxQkFkcEM1TSxRQWE2QjZHO0tBRDdCK0Ysd0JBRWEscUJBZGI1TSxRQWE2QjZHOztJQUMrQztJQURoRiw2QkFiSTdHO0lBYUosb0I7O0tBR2lDLElBQWU2TSxlQUFUQztLQUFvQixPQUFBLHlCQUFwQkEsS0FBU0Q7SUFBbUM7SUFBakY7S0FBQSxPQUFBLDBCQUpFRDtLQU9xQ3RDLFdBSHZDOzs7OzZEQUd1Q0E7OzswREFYdkNxQzs7WUFjRkksaUJBQWlCL1csR0FBSSxvQ0FBSkEsTUFBNkI7WUFFOUNnWCxtQkFPRWhYLEdBQUVpWDtJQUFnQixJQU5QQyxZQU1YbFgsTUFMYThQLG1CQURGb0g7O3NDQUNFcEgsbUJBQ0w7S0FDUjtNQUFLcUgsVUFBTCw4QkFGYXJIO01BR2IsT0FBQSxzQkFES3FILFNBR0hGO0tBRkYsU0FBQTtTQUpXRyxZQUdORCxZQUZRckgsbUJBREZzSDs7R0FNMEM7WUFHdkRDLG9CQUFvQ0MsZUFBZ0N0WDs7Y0FFaEVpTSxNQUFNQyxHQUFJLE9BQUEsOEJBRnNEbE0sR0FFMURrTSxHQUE2QjtLQUN2QyxvQjt5Qjt5QjtLQWtDSTtNQUFBO1FBbkNBRDttQkFvQ2tCd0g7VyxpQ0FBQUEsc0JBQ0w7V0FDUixJQUFLakssUUFBTCw4QkFGYWlLO1dBRVEsR0FsRDlCdUQsbUJBVW9FaFgsR0F3Q3REd0o7V0FBUyxNQUFBOztNQWxCbkI7UUFwQkF5QzttQkE2QitCNkQ7V0FSNUIsaUNBUTRCQSxtQkFDbEI7V0FDUjtZQVZtQm9ILFlBVW5CLDhCQUYwQnBIO1lBUlBxSCxVQUFBRDtXQUNuQjtZQUFrQyxXQXBDM0NILGlCQVlvRS9XO1lBd0JwRCxLQUFBLHdCQURZbVg7YUFDbkIsTUFBQTtnQkFDNEJJLHFCQUZUSjs2Q0FFU0kscUJBQ2xCO1lBQ1IsSUFBS0gsWUFBTCw4QkFGMEJHO1lBR25CLEtBQUEsd0JBTFVKLFlBSVpDO2FBQ0wsTUFBQTtnQkFMaUJELFVBSVpDOztVQU13QjtNQXpCcEM7UUFOQW5MO21CQU1ZakM7K0I7V0FDVCxrQ0FEU0E7eUJBRXdCNkc7WUFDL0I7YUFBSTlHLGVBQWUscUJBSFpDLFFBRXdCNkc7YUFHeEJ5QyxJQUFLLCtCQUZSdko7YUFLS1AsUUFGQSwrQkFERjhKLEdBRkh2SjtlQUVHdUosR0FFTyxPQUFBLFdBZmFnRSxlQWdCbEI5TjtZQUNBLEtBQUEsc0JBUHNCcUgsT0FNdEJySDthQUNQLE1BQUE7WUFDMkM7YUFBNUIrSSxNQUZSL0k7YUFFUWlKLFNBQTRCLHFCQVZ0Q3pJLFFBRXdCNkc7YUFRZDJCO2FBQUFFO2FBQUE1UjthQUFBMEI7cUJBQUFtUSxXQUFBNkUsT0FBQUM7YUFBQSxPQUFBLHlCQUFBRCxPQUFBQztZQUFTOzs7Y0FBVHRKO2NBQUFxRTtjQUFBRztjQUFBblE7Y0FBQTFCO2NBQUE0UjtjQUFBRDtjQUFBRjs7YUFDQW1GLFFBSFJsTzthQUdRbU87YUFBQUM7YUFBQWpKO2FBQUFrSjthQUFBN1U7cUJBQUE4VSxhQUFBQyxPQUFBQzthQUFBLE9BQUEsd0JBQUFELE9BQUFDO1lBQWM7OztjQUFkOUo7Y0FBQXlKO2NBQUFHO2NBQUE5VTtjQUFBNlU7Y0FBQWxKO2NBQUFpSjtjQUFBRjtZQUFmLE9BQUEsc0JBSE9sTztXQUljO1dBVkcsT0FBQSw2QkFGbkJRO1VBWWlCO3lCO3lCO3lCO0tBcUJwQixPQUFBOzs7Ozs7Ozs7OztJQUFNO2tCQXhDb0JpTztLLE9BeEN2Q3ZCLDRCLGVBd0N1Q3VCOztJQUFLLE9BQUEsb0NBRHdCalk7R0F5Q2hEO1lBR3BCa1ksWUFBVWxZO0lBQUksT0E1Q2RxWCxvQ0E0Q2lELFNBQUUsR0FBekNyWDtHQUE0QztHQXRVaEQ7Ozs7O09BNk9OME47T0FEQTZGO09BREFDO09BSFFDO09BQUFDO09BUkFDO09BQUFDO09BSFI1SjtPQURRNko7T0FBQUM7T0FIQUM7T0FBQUM7T0FIUnpSOztPQTZCQW1VO09BMkJBSztPQUVBQztPQVVBSztPQTRDQWE7WUFLTkMsWUFBQUMsT0FBQSxPQUFBLDhCQUFBQSxPQUF1QztPQUVuQ0Msc0JBQ0FDO1lBR0ZDLFlBQUFDLE9BQUEsT0FBQSw4QkFBQUEsT0FBNkM7R0FEM0IscUJBQ2xCRCxhQUpFRixhQUNBQztZQVNBRyxLQUFHelksR0FBSSxPQUFKQSxLQUFRO1lBQ1gwWSxnQkFBYzFZLEdBQUksT0FBSkEsS0FBbUI7WUFDakNtSyxPQUFPbkssR0FBSSxvQ0FBSkEsTUFBZ0M7WUFDdkMyWSx1QkFBdUIzWTtJQUFJLG9DQUFKQTtHQUFnRDtZQUN2RTRZLFVBQVc1WSxHQUF1QixPQUF2QkEsRUFBd0I7WUFJbkM2WSxLQUFLN1ksR0FBR3dKO0lBQ1Ysc0JBRFVBO0lBQUFBLFdBRUs7UUFPRXNHLG1CQVRWOVA7Ozt3Q0FTVThQO01BQ2I7T0FBSzJELHNCQUFMLDhCQURhM0Q7U0FDaUIsd0JBQXpCMkQsd0JBVkNqSztPQVVOO1FBQUs0SztVQUFMLDhCQURhdEU7T0FUUHRHLFdBV2Msd0JBRGY0SztPQVZDNUssV0FVRDRLOzs7O0tBVkM1SztLQUFBQSxXQUFIeEo7O0lBQUFBLE9BaUJrQix3QkFqQmZ3Sjs7U0F1Qk8rTixxQkF2QlAvTjtzQ0F1Qk8rTjtVQUdUdUI7O01BREo7T0FBS0MsU0FBTCw4QkFGYXhCO09BR1R5QixhQUFXLHdCQURWRCxXQXpCQ3ZQO01BMkJOLEdBREl3UCxZQTFCRXhQLFdBQUFBLFVBQUFBLFdBeUJEdVA7VUFDREQsYUFBQUU7O0tBS0osS0FMSUY7O1FBVVNHLHFCQXBDUHpQO3VDQW9DT3lQO0tBRWIsSUFBS0MsT0FBTCw4QkFGYUQ7S0FFUkMsVUFBMkIsd0JBdEMxQjFQOztRQXdDSzJQLHFCQXhDTDNQO3FDQXdDSzJQLHFCQXhDUm5aLE9BeUNxQix3QkF6Q2xCd0o7SUEwQ1IsSUFBSzRQLE9BQUwsOEJBRmFEO0lBRVJDLFVBQTJCLHdCQTFDeEI1UDs7R0EwQytDO1lBR3ZENlAsZ0JBQWdCclosR0FBSSxvQ0FBSkEsTUFBeUM7WUFDekRzWixvQkFBb0J0WixHQUFJLG9DQUFKQSxNQUE2QztZQUVqRXVaLG1CQUFtQnZaO0lBQ3JCLE9BQUcsd0JBRGtCQTtrQkFFWCxtQkFGV0E7MkNBQUFBO0dBR3lCO1lBRzVDd1osTUFBSXhaO0lBQUksT0FBSkEsT0FBNEIsNkJBQW9CLG1CQUFoREE7R0FBa0U7T0FDdEV5WjtZQUVBQyxTQUFTMVosR0FBR3dKO0lBQ2Qsc0JBRGNBO0lBRXdDLFdBQUEscUJBRnhDQTtJQUFBQSxXQUVDLDZCQUZKeEosTUFBR3dKOztHQUV3RTtZQUdwRm1RLGtCQUFrQjNaLEdBQUd3SixPQUFrQm9RO0lBQ3pDLElBQ2lCOUosbUJBRkc5UDt1Q0FFSDhQO0tBRWI7TUFBSzJELHNCQUFMLDhCQUZhM0Q7S0FHVixHQUFBLHNCQUxnQnRHLE9BSWRpSztNQUpXelQsT0FPVyx3QkFQUndKLFVBQUFBOztJQVN2QixJQUNpQitOLHFCQVZNL047cUNBVU4rTjtLQVZHdlgsT0FBR3dKOztLQVluQixJQUFLNFAsT0FBTCw4QkFGYTdCO0tBRVI2QixVQVpjNVA7O0lBY3ZCLElBQ2lCeVAscUJBZk16UDt1Q0FlTnlQO0tBRWIsSUFBS0MsT0FBTCw4QkFGYUQ7S0FFUkMsVUFqQmMxUDs7SUFBQUE7SUFBQUE7SUFxQnZCLE9BQUEsc0JBckJ1QkEsT0FBa0JvUTtHQXFCUjs7OztJQXRaM0JDOztJQTJHUUM7SUFEQUM7SUFBQUM7SUFEQUM7SUFBQUM7SUFQQUM7SUFBQUM7SUFGUkM7SUFEQUM7SUFEUUM7SUFEQUM7SUFBQUM7O0lBa0JSQztJQUVBQztJQXVDQUM7SUFjQUM7SUFDQUM7WUFxUEZDLGdCQUFnQi9hLEdBQUdpUCxJQUFJQyxVQUFVd0I7SUFDbkMsbURBRGtCMVE7SUFDbEI7WUFBVTtZQURXaVA7WUFBY3lCOztZQUFWeEI7Ozs7R0FTeEI7WUFHQzhMLE1BQUloYixHQUFFd0o7SUFDbUIsV0FBQSxXQS9DM0JpUSxvQkE4Q016WjtJQUNILE9BQUEsd0JBREt3SjtjQXJHUnFQLEtBcUdNN1ksR0FBRXdKO2NBNUNSa1EsU0E0Q00xWixHQUFFd0o7R0FHYTtZQUduQnlSLGVBQWVqYixHQUFHaVAsSUFBSUMsVUFBVXdCO0lBQ3RCLElBQVJsSCxRQW5CRnVSLGdCQWtCZS9hLEdBQUdpUCxJQUFJQyxVQUFVd0I7SUFOaENzSyxNQU1laGIsR0FDYndKO0lBQ0osT0FESUE7R0FFQztZQUdIMFIsS0FBR2xiLEdBQUVpUCxJQUFHeUIsVUFBVyxPQU5uQnVLLGVBTUdqYixHQUFFaVAsT0FBR3lCLFVBQXdEO1lBRWhFeUssUUFBTW5iLEdBQUVDLE1BQUt5UTtJQUNxQixXQTlEcEM4SSxNQTZEUXhaO0lBQ1IsT0FURWliO2FBUU1qYixHQUNhLCtCQURYQyxVQUFLeVE7R0FDMkQ7WUFHeEUwSywrQkFBc0NwYixHQUFFQztJQUMxQztLQUFJb2Isb0JBM0VKaEMsZ0JBMEV3Q3JaO0tBRXJDLE9BQUEsZ0NBRnVDQyxNQUN0Q29iO0lBQ0QsV0FBQTs7Ozs7dURBRENBOzs7OzBEQURzQ3BiOzs7Ozs7OztHQVFDO1lBR3pDcWIsYUFBYXRiLEdBQUVDLE1BQUt5UTtJQVhwQjBLLCtCQVdhcGIsR0FBRUM7SUFDakIsT0F4QkVnYixlQXVCYWpiLEdBNUVmd1osTUE0RWV4WixRQUFFQyxPQUFLeVE7R0FFc0M7R0FJNUQsU0FBQTZLO0lBQUE7O09BQ0U7O09BQ0E7ZUFDQTs7R0FDa0I7R0FMQSx1QkFDcEJBO1lBT0VDLE1BQU14YixHQUFHd0o7SUFDWCxPQURXQTs7T0FqRlhtUSxrQkFpRlEzWixHQUFHd0osV0FTVDs7Y0FUU0EsWUFBQUE7O09BWVQsc0JBWlNBO09BYVQsNkJBYk14SixNQUFHd0o7T0FBQUEsV0FjTTtPQUNmO2VBQ2U7O0dBQXNCO1lBR3JDaVMsa0JBQWtCemIsR0FBRXdKLE9BbkJwQmdTLE1BbUJrQnhiLEdBQUV3SixRQUFnQixTQUErQjtZQUVuRWtTLFVBQVUxYixHQUFFd0o7SUFDUixJQUVKbVMsU0F4QkFILE1BcUJVeGIsR0FBRXdKO1NBR1ptUyxRQURNOzs7eURBQ05BOzs7Ozs7O0dBSWdDO1lBR2hDQyxTQUFPNWIsR0FBRTBRO0lBQVcsT0FyRnBCcUssZ0JBcUZPL2EsbUJBQUUwUTtHQUF1RTtZQUVoRm1MLHFCQUFxQjdiLEdBQUd3SixPQUFXeUYsSUFBSUM7SUFJekMsSUFDRUMsU0FMd0IzRjtZQUt4QjJGO0tBTHdCM0YsV0FBV3lGO0tBQVh6RixXQUFlMEY7S0EzRXZDOEwsTUEyRXFCaGIsR0FBR3dKO0tBV3hCOzs7d0NBTkEyRjs7Ozs7OztHQU9LO1lBR0wyTSxZQUFZOWIsR0FBRXdKLE9BQU15RjtJQUFLLE9BZnpCNE0scUJBZVk3YixHQUFFd0osT0FBTXlGO0dBQW1EO1lBQ3ZFOE0sZUFBZS9iLEdBQUV3SixPQUFNdko7SUFBMEMsV0ExSW5FdVosTUEwSWlCeFo7SUFBbUMsT0FEbEQ4YixZQUNlOWIsR0FBRXdKLE9BQWlDLCtCQUEzQnZKO0dBQXVEO1lBRTlFK2Isc0JBQXNCaGMsR0FBRXdKLE9BQU12SjtJQTNFOUJtYiwrQkEyRXNCcGIsR0FBUUM7SUFFZSxPQXBCN0M0YixxQkFrQnNCN2IsR0FBRXdKLE9BNUkxQmdRLE1BNEl3QnhaLFFBQVFDO0dBRTBCO1lBR3hEZ2MsY0FBY2pjLEdBQUV3SixPQUFNeUY7SUFDeEIsT0FEa0J6Rjs7T0F6SWxCbVEsa0JBeUlnQjNaLEdBQUV3SixXQUFBQSxXQUFNeUYsSUFLdEIsT0F2R0ErTCxNQWtHY2hiLEdBQUV3Sjs7T0FBQUEsV0FBTXlGLElBU3RCLE9BM0dBK0wsTUFrR2NoYixHQUFFd0o7O09BQUFBLFdBQU15RjtPQVlGLFdBQUEsV0E1SnRCd0ssb0JBZ0pnQnpaO09BWVgsT0FBQSx3QkFabUJpUDtpQkFhakIsNkJBYlNqUCxNQUFFd0osVUFBTXlGO2tCQWVwQjtxQ0FmWWpQLE1BQUV3SjtpQkF2TWxCcVAsS0F1TWdCN1ksR0FBRXdKO2VBQUFBLFdBQU15RixJQUFOekYsY0FvQmhCLE9BdEhBd1IsTUFrR2NoYixHQUFFd0o7O0dBb0JMO1lBR1gwUyxpQkFBaUJsYyxHQUFFd0osT0FBTXZKO0lBQTRDLFdBeEt2RXVaLE1Bd0ttQnhaO0lBQXFDLE9BdkJ0RGljLGNBdUJpQmpjLEdBQUV3SixPQUFtQywrQkFBN0J2SjtHQUF5RDtHQXhJekU7Ozs7T0F6WlA0Wjs7T0EyR1FDO09BREFDO09BQUFDO09BREFDO09BQUFDO09BUEFDO09BQUFDO09BRlJDO09BREFDO09BRFFDO09BREFDO09BQUFDOztPQWtCUkM7T0FFQUM7T0F1Q0FDO09BY0FDO09BQ0FDO09BcVBGQztPQVlBQztPQU1BQztPQU1BQztPQUVBQztPQUlBQztPQVdBRTs7T0FhQUU7T0FtQkFDO09BRUFDO09BVUFFO09BRUFDO09BZUFDO09BQ0FDO09BRUFDO09BS0FDO09BdUJBQztZQUlGQyxVQUFVbmMsR0FBRUMsTUFBS3lRO0lBQW1CLHdCQUExQjFRLEdBQUVDLE1BQUt5UTtJQUFtQjtHQUFzQztZQUMxRTBMLE9BQU9wYyxHQUFFaVAsSUFBR3lCO0lBQW1CLHdCQUF4QjFRLEdBQUVpUCxJQUFHeUI7SUFBbUI7R0FBaUM7WUFFaEUyTCxpQkFBaUJyYyxHQUFFQyxNQUFLeVE7SUFDbEIsd0JBRFcxUSxHQUFFQyxNQUFLeVE7SUFDbEI7R0FBNkM7WUFLbkQ0TCxpQkFBaUJ0YyxHQUFJdWM7SUFDdkIsSUFBSUMsNEJBRGV4Yzs7U0FHRjhQLG1CQUhFOVA7d0NBR0Y4UDs7O01BRWIsSUFBS3RHLFFBQUwsZ0NBRmFzRztTQUVSdEc7T0FFcUMsTUFBQTtNQXBMNUNtUSxrQkE2S2lCM1osR0FLVndKO01BT0YsdUNBWll4SixNQUtWd0o7OztPQU9GLElBVU8sV0FqQkxBO2FBa0JXdUU7WUFBQUMsMEJBQUFEO1FBQ1YsR0F4QmF3TztTQTJCTTtVQURYRSxhQTFCS0Y7VUEyQk50TyxZQUFZO1NBQ2hCO1dBRkt3TyxZQXJCVGpULGdDQXNCUXlFLGFBSkdEOzs7b0JBdkJEaE87U0FBQUEsV0F5QnNCLDhCQUZyQmdPOztRQU1WLDJCQXhCRHhFOzs7T0EwQkMsWUExQkRBOztZQTRCUzBGO1FBQ0YsR0FBQSw2QkE3QlAxRjtTQXFDa0IsV0FBQSxXQTlOekJpUSxvQkFvTGlCelo7U0FLVndKLFdBa0NTLDJCQWxDVEEsZ0JBNEJTMEY7U0FuTmhCd0ssU0FrTGlCMVosR0FLVndKOzs7O1FBMkJZLDJCQTNCWkE7Ozs7S0F3Q0Y7TUFJUCxPQUFBOzJDQWpEbUJ4SixNQUNmd2M7O0dBZ0RrRTtZQUdwRUUsY0FBYzFjLEdBQUcrTyxJQUFLd047SUFDeEIsNkJBRGdCdmMsTUFBRytPLElBQUgvTztJQUNoQixPQXJERXNjLGlCQW9EY3RjLEdBQVF1YztHQUVJO1lBRzFCSSxpQkFBaUIzYyxHQUFHdWM7SUFDdEIsNkJBRG1CdmMsTUFBQUE7SUFDbkIsT0ExREVzYyxpQkF5RGlCdGMsR0FBR3VjO0dBRU07WUFHMUJLLGlCQUFpQjVjLEdBQUcrTyxJQUFLd047SUFWekJHLGNBVWlCMWMsR0FBRytPLElBQUt3TjtJQUMzQixPQU5FSSxpQkFLaUIzYyxHQUFRdWM7R0FFQztZQUcxQk0sbUJBQW1CN2MsR0FBR3VjO0lBQ3hCLEdBRHFCdmM7OztLQUduQjs7SUFIbUJBO09BQUFBLE1BQUFBO0lBUXJCLE9BM0VFc2MsaUJBbUVtQnRjLEdBQUd1YztHQVFJO1lBRzFCTyxpQkFBaUI5YztJQUFBQTtRQUlqQitjLFNBSmlCL2M7V0FJakIrYztlQUppQi9jLGNBTVgsOEJBRk4rYzs7R0FFNEI7WUFHNUJDLGtCQUFrQmhkLEdBQUcrTztJQXBCckI4TixtQkFvQmtCN2M7SUFHTCxJQUFYOFkscUJBRkF5RDs7VUFFQXpEO01BNUJGOEQsaUJBeUJrQjVjLEdBQUcrTyxJQUNuQndOO01BZ0JKLE9BMUJFTyxpQkFTa0I5Yzs7S0FLZixHQUFBLDZCQUxlQTtNQUdoQjhZOztNQUtxQixJQUFqQm1FLGlCQUFpQiw2QkFSTGpkO01BU2IsR0FBQSx3QkFEQ2lkLGdCQVJlbE87T0FHbkIrSjs7T0E1QkY4RCxpQkF5QmtCNWMsR0FRWmlkLGdCQVBKVjs7O0dBaUJjO1lBR2hCVywrQkFBb0RsZCxHQUFHK087SUF6Q3ZEOE4sbUJBeUNvRDdjO0lBR3ZDLElBQVg4WSxxQkFGQXlEOztVQUVBekQ7TUFqREY4RCxpQkE4Q29ENWMsR0FBRytPLElBQ3JEd047TUFtQkosT0FsREVPLGlCQThCb0Q5Yzs7S0FLakQsR0FBQSw2QkFMaURBO01BR2xEOFk7O01BSzBCLElBQXRCUSxzQkFBc0IsNkJBUndCdFo7TUFTL0MsR0FBQSx3QkFEQ3NaLHFCQVJpRHZLO09BR3JEK0o7O09BakRGOEQsaUJBOENvRDVjLEdBaUJ6Qyw2QkFqQnlDQSxPQUNsRHVjOzs7R0FvQmM7WUFHaEJZLGlCQUFpQm5kLEdBQUcrTztJQWpFcEI4TixtQkFpRWlCN2M7SUF0RWpCNGMsaUJBc0VpQjVjLEdBQUcrTztJQUd0QixPQXpERStOLGlCQXNEaUI5YztHQUlEO1lBR2hCb2QsWUFBWXBkLEdBQUVrTTtJQUNoQjtLQUFJbVIsUUFqVUY3RCxNQWdVWXhaO0tBRVZFLFNBQVMsV0FGR2dNO0tBR1ksT0FuVTFCc04sTUFnVVl4WjtLQUdWc2QsV0FBVyw4QkFGWEQ7SUFHSixXQUZJbmQsUUFDQW9kO0dBQ1k7WUFHZEMsK0JBQTRDdmQ7SUFDOUMsb0NBRDhDQTtHQUNNO1lBR2xEd2Qsa0JBQWtCeGQsR0FBSSxpQ0FBSkEsTUFBdUM7Ozs7Ozs7Ozs7T0EvdUJ6RHlPOztPQTBWSjBKO09BRUlFO09BQ0FDOztPQVNBRztPQUNBQztPQUNBdk87T0FDQXdPO09BQ0FDO09BSUFDO09BNkNBUTtPQUNBQztPQUVBQztPQU1BQztPQUNBQztPQUVBQztPQUtBQzs7T0FvS0F3QztPQUNBQztPQUVBQztPQU1BQztPQW9EQUk7T0FLQUM7T0FLQUM7T0FLQUM7T0FXQUM7T0FTQUU7T0FxQkFFO09Bd0JBQztPQU9BQztPQU9BRztPQUlBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUM1dEJHL2I7SUFhRjhNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaEREN007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFLRStiLGlCQUFpQkMsTUFBTyxXQUFQQSxNQUFlO1lBQ2hDN1ksY0FBWSxjQUFzQjtZQUVsQzhZLFlBQXNCL1EsR0FTeEIsZUFUd0JBLElBUzRCO0dBZjFDLGVBR1I2USxrQkFDQTVZLFFBRUE4WTtZQWdCQWhJO0lBQW9CLGtCQUFrQztJQUFsQyxPQUFBO0dBQWtEO0dBSDlELGVBR1JBO0dBS0YsU0FBQXJVLGlCQUFBLHlCQUdvQjtHQUpELHNCQUNuQkE7R0FNRixTQUVJc2MsS0FBQWhjLEdBQUEsT0FBQUEsS0FBSTtZQURKc0ksa0JBQUF0SSxHQUFBLE9BQUFBLEtBQWlCO2dCQUNqQkEsR0FBQUUsR0FBQSxXQUFBRixNQUFBRSxHQUFJO0dBQUo7O0lBQUErYiw2QkFBQSxTQUFJLGtCQUFKRDtnQkFEQWhjLEdBQUFFLEdBQUEsV0FBQUEsR0FBQUYsTUFBaUI7R0FBakI7O0lBQUF1UDs7dUJBQUEsU0FBaUI7OztPQUFqQmpIOztZQURDaEgsYUFBQXdPLHVCQUFBb00sVUFBQW5hO0lBQUE7S0FBQTtPQUFBLFdBQUErTix1QkFDRFAscUJBREN4TjtLQUFBQztLQUFBc087S0FBQSxVQUFBLFdBQUE0TCxVQUVERCxRQUZDamE7S0FBQUU7S0FBQWlhO0lBQUE7cUJBQUFuWjthQUFBO2NBQUFzRixvQkFBQSxXQUFBZ0ksdUJBQUF0TjtjQUFBZ1osT0FBQSxXQUFBRyxVQUFBblo7YUFBQSxXQUFBc0YsbUJBQUEwVDtZQUFDO1lBQUQ5WjtHQUFDO1lBQUQ4WCxTQUFBMVIsbUJBQUEwVCxNQUFBLFdBQUExVCxtQkFBQTBUO0dBQUM7WUFBRDlZLElBQUE0TSx1QkFBQW9NO0lBQUEsV0FBQSxXQUFBQSxVQUVERDtJQUZDLFdBQUEsV0FBQW5NLHVCQUNEUDtHQURFO1lBQURwTSxLQUFBMk0sdUJBQUFvTTtJQUFBLFdBQUFwTSx1QkFDRFA7SUFDQSxPQUFBLFdBRkMyTSxVQUVERDtHQUZFO1lBQUQ3WSxLQUFBQyxNQUFBeU0sdUJBQUFvTTtJQUFBLE9BRUQ7YUFGQ0E7YUFBQSxXQUFBcE0sdUJBQUF6TSxNQUNEa007YUFDQTBNO0dBRkU7WUFBRDNZLFNBQUFDO0lBQUEsZUFBQSxXQUFBQSxXQUVEMFk7SUFGQyxXQUFBLFdBQUExWSxXQUNEZ007R0FERTtZQUFEL0wsUUFBQXNNLHVCQUFBb007SUFBQSxXQUFBLFdBQUFwTSx1QkFDRFA7SUFEQyxjQUVELFdBRkMyTSxVQUVERDtHQUZFO1lBQUR4WSxPQUFBcU0sdUJBQUFvTTtJQUFBLFdBQUEsV0FBQXBNLHVCQUNEUDtJQURDLHFCQUVELFdBRkMyTSxVQUVERDtHQUZFO1lBQUR2WSxRQUFBb00sdUJBQUFvTTtJQUFBLGVBQUEsV0FBQUEsVUFFREQ7SUFGQyxXQUFBLFdBQUFuTSx1QkFDRFA7R0FERTtZQUFENUwsT0FBQUosUUFBQXVNLHVCQUFBb007SUFBQSxXQUFBcE0sdUJBQ0RQLHFCQURDaE0sUUFBQUE7SUFFRCxPQUFBLFdBRkMyWSxVQUVERCxRQUZDMVksUUFBQUE7R0FBQztZQUFESyxPQUFBTCxRQUFBRixNQUFBeU0sdUJBQUFvTTtJQUFBLFdBQUEzWTtJQUFBLE9BQUE7YUFBQTJZO2FBQUE7ZUFBQXBNO2VBQUF6TTtlQUNEa007ZUFEQ2hNO2VBQUFBO2FBRUQwWTthQUZDMVk7O0dBQUM7WUFBRE0sVUFBQU4sUUFBQXVNLHVCQUFBb007SUFBQTs7T0FBQTtTQUFBcE0sdUJBQ0RQLHFCQURDaE0sUUFBQUE7SUFBQSxjQUVELFdBRkMyWSxVQUVERCxRQUZDMVksUUFBQUE7R0FBQztZQUFETyxTQUFBUCxRQUFBdU0sdUJBQUFvTTtJQUFBOztPQUFBO1NBQUFwTSx1QkFDRFAscUJBRENoTSxRQUFBQTtJQUFBLHFCQUVELFdBRkMyWSxVQUVERCxRQUZDMVksUUFBQUE7R0FBQztZQUFEUSxVQUFBUixRQUFBdU0sdUJBQUFvTTtJQUFBLGVBQUEsV0FBQUEsVUFFREQsUUFGQzFZLFFBQUFBO0lBQUE7WUFBQTtjQUFBdU0sdUJBQ0RQLHFCQURDaE0sUUFBQUE7O0dBQUM7WUFBRFMsTUFBQVQsUUFBQXVNLHVCQUFBb007SUFBQSxXQUFBLFdBQUFBLFVBRURELFFBRkMxWSxRQUFBQTtJQUFBO1lBQUE7Y0FBQXVNLHVCQUNEUCxxQkFEQ2hNLFFBQUFBOztHQUFDO1lBQURVLHVCQUFBVjtJQUFBLDZCQUFBQTtJQUFBO0dBQUM7R0FBRDtJQUFBOztPQUFBSTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztJQUFBOztPQUFBcEU7T0FFRG9jO09BREExTTtPQURDak87T0FBQTBZO09BQUE5VztPQUFBQztPQUFBQztPQUFBRTtPQUFBRTtPQUFBQztPQUFBQzs7WUFBTDBZO0lBQUEsSUFDSUMsa0NBREo1Vjt3QjtJQUVJO0tBQUFHO0tBRkpELGtDQUVJQyxlQUZKSDtLQUNJSztPQUFBLDhDQUFBdVY7S0FESnhWLGtDQUNJQyxlQURKSDtJQUFBLFdBQUFFO0dBSTRCO1lBRXhCRyxVQUFVNUk7O0tBR1Ysb0I7S0FBeUU7TUFEL0RrTTtNQUFJLE9BQUEsOEJBRkpsTSxHQUVBa007S0FDK0QsT0FBQTtJQUFNO0lBRnJDLE9BQUEsbUNBRGhDbE0sR0FOZGdlO0dBU29GO0dBakJwRDs7OztPQVU1Qko7T0FEQTFUOztPQURKOFQ7T0FNSXBWO0dBT04sU0EwRFlzVixrQkFBQXRjLEdBQUEsT0FBQUEsTUFBaUI7WUFBakJ1YyxzQkFBQXZjLEdBQUFFLEdBQUFGLFFBQUFFLFlBQWlCO1lBRGpCc2MsK0JBQUF4YyxHQUFBLE9BQUFBLE1BQW1DO1lBQW5DeWMsK0JBQUF6YyxHQUFBRSxHQUFBRixRQUFBRSxZQUFtQztZQURuQ3djLGlCQUFBMWMsR0FBQSxPQUFBQSxNQUFnQjtZQUFoQjJjLHFCQUFBM2MsR0FBQUUsR0FBQUYsUUFBQUUsWUFBZ0I7WUFGaEIwYywyQkFBQTVjLEdBQUEsT0FBQUEsTUFBMEI7WUFBMUI2YywrQkFBQTdjLEdBQUFFLEdBQUFGLFFBQUFFLFlBQTBCO1lBRDFCNGMsUUFBQTljLEdBQUEsT0FBQUEsTUFBSztZQUFMK2MsVUFBQS9jLEdBQUFFLEdBQUFGLFFBQUFFLFlBQUs7WUFETDhjLGlCQUFBaGQsR0FBQSxPQUFBQSxNQUFnQjtZQUFoQmlkLHFCQUFBamQsR0FBQUUsR0FBQUYsUUFBQUUsWUFBZ0I7WUFEaEJnZCxnQkFBQWxkLEdBQUEsT0FBQUEsTUFBZTtZQUFmbWQsb0JBQUFuZCxHQUFBRSxHQUFBRixRQUFBRSxZQUFlO1lBSmZrZCw4QkFBQXBkLEdBQUEsT0FBQUEsTUFBNkI7WUFBN0JxZCwrQkFBQXJkLEdBQUFFLEdBQUFGLFFBQUFFLFlBQTZCO1lBRHJDOEwsY0FBQWhNLEdBQUEsT0FBQUEsTUFBYTtZQWxCTHNkLFlBQUF0ZCxHQUFBLE9BQUFBLE1BQVc7WUFBWHVkLGdCQUFBdmQsR0FBQUUsR0FBQUYsUUFBQUUsWUFBVztZQURYc2QsaUJBQUF4ZCxHQUFBLE9BQUFBLE1BQWdCO1lBQWhCeWQscUJBQUF6ZCxHQUFBRSxHQUFBRixRQUFBRSxZQUFnQjtZQURoQndkLG9CQUFBMWQsR0FBQSxPQUFBQSxNQUFtQjtZQUFuQjJkLHdCQUFBM2QsR0FBQUUsR0FBQUYsUUFBQUUsWUFBbUI7WUFEbkIwZCxnQkFBQTVkLEdBQUEsT0FBQUEsTUFBZTtZQUFmNmQsb0JBQUE3ZCxHQUFBRSxHQUFBRixRQUFBRSxZQUFlO1lBRnZCNGQsMEJBQUE5ZCxHQUFBLE9BQUFBLE1BQXlCO1lBRGpCK2Qsb0JBQUEvZCxHQUFBLE9BQUFBLE1BQW1CO1lBQW5CZ2Usd0JBQUFoZSxHQUFBRSxHQUFBRixRQUFBRSxZQUFtQjtZQUYzQitkLDRCQUFBamUsR0FBQSxPQUFBQSxNQUEyQjtZQURuQmtlLHNCQUFBbGUsR0FBQSxPQUFBQSxNQUFxQjtZQUFyQm1lLDBCQUFBbmUsR0FBQUUsR0FBQUYsUUFBQUUsWUFBcUI7WUFEckJrZSxTQUFBcGUsR0FBQSxPQUFBQSxNQUFRO1lBQVJxZSxhQUFBcmUsR0FBQUUsR0FBQUYsUUFBQUUsWUFBUTtZQURSb2UsWUFBQXRlLEdBQUEsT0FBQUEsTUFBVztZQUFYdWUsZ0JBQUF2ZSxHQUFBRSxHQUFBRixRQUFBRSxZQUFXO1lBRFhzZSxZQUFBeGUsR0FBQSxPQUFBQSxLQUFXO1lBQVh5ZSxnQkFBQXplLEdBQUFFLEdBQUFGLE9BQUFFLFlBQVc7WUE4Q25Cd2UsdUJBL0NRMWUsR0FBQSxPQUFBQSxLQUFZO1lBQVoyZSxpQkFBQTNlLEdBQUFFLEdBQUFGLE9BQUFFLFlBQVk7WUFMWjBhLDBCQUFBNWEsR0FBQSxPQUFBQSxLQUF5QjtZQUF6QjRlLDhCQUFBNWUsR0FBQUUsR0FBQUYsT0FBQUUsWUFBeUI7WUFEekIyZSx1QkFBQTdlLEdBQUEsT0FBQUEsS0FBc0I7WUFBdEI4ZSwyQkFBQTllLEdBQUFFLEdBQUFGLE9BQUFFLFlBQXNCO1lBRDlCNmUsMEJBQUEvZSxHQUFBLE9BQUFBLEtBQXlCO1lBRHpCZ2Ysa0JBQUFoZixHQUFBLE9BQUFBLEtBQWlCO1lBRGpCaWYscUJBQUFqZixHQUFBLE9BQUFBLEtBQW9CO1lBRFprZixTQUFBbGYsR0FBQSxPQUFBQSxLQUFRO1lBQVJtZixhQUFBbmYsR0FBQUUsR0FBQUYsT0FBQUUsWUFBUTtZQURSa2YsYUFBQXBmLEdBQUEsT0FBQUEsS0FBWTtZQUFacWYsaUJBQUFyZixHQUFBRSxHQUFBRixPQUFBRSxZQUFZO2dCQXNEWkYsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTs7R0FBQTtJQUFBLFVBQUFxYztJQUFBK0M7O3VCQUFBLFNBQWlCOzs7T0FBakJoRDs7Z0JBREF0YyxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGOztHQUFBO0lBQUEsVUFBQXljO0lBQUE4Qzs7dUJBQUEsU0FBbUM7OztPQUFuQy9DOztnQkFEQXhjLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7O0dBQUE7SUFBQSxVQUFBMmM7SUFBQTZDOzt1QkFBQSxTQUFnQjs7O09BQWhCOUM7O2dCQUZBMWMsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUE2YztJQUFBNEM7O3VCQUFBLFNBQTBCOzs7T0FBMUI3Qzs7Z0JBREE1YyxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBOztHQUFBO0lBQUEsVUFBQStjO0lBQUEyQyw4QkFBQSxTQUFLLG1CQUFMNUM7Z0JBREE5YyxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBOztHQUFBO0lBQUEsVUFBQWlkO0lBQUEwQzs7dUJBQUEsU0FBZ0I7OztPQUFoQjNDOztnQkFEQWhkLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxVQUFBbWQ7SUFBQXlDOzt1QkFBQSxTQUFlOzs7T0FBZjFDOztnQkFKQWxkLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxVQUFBcWQ7SUFBQXdDOzt1QkFBQSxTQUE2Qjs7O09BQTdCekM7O2dCQURScGQsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTs7SUFBQThmOzt1QkFBQSxTQUFhOzs7T0FBYjlUOztnQkFsQlFoTSxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBOztHQUFBO0lBQUEsVUFBQXVkO0lBQUF3QzswQkFBQSxTQUFXLHlCQUFYekM7Z0JBREF0ZCxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBOztHQUFBO0lBQUEsVUFBQXlkO0lBQUF1Qzs7dUJBQUEsU0FBZ0I7OztPQUFoQnhDOztnQkFEQXhkLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxVQUFBMmQ7SUFBQXNDOzt1QkFBQSxTQUFtQjs7O09BQW5CdkM7O2dCQURBMWQsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUE2ZDtJQUFBcUM7O3VCQUFBLFNBQWU7OztPQUFmdEM7O2dCQUZSNWQsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTs7SUFBQW1nQjs7dUJBQUEsU0FBeUI7OztPQUF6QnJDOztnQkFEUTlkLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxVQUFBZ2U7SUFBQW9DOzt1QkFBQSxTQUFtQjs7O09BQW5CckM7O2dCQUZSL2QsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTs7SUFBQXFnQjs7dUJBQUEsU0FBMkI7OztPQUEzQnBDOztnQkFEUWplLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxVQUFBbWU7SUFBQW1DOzt1QkFBQSxTQUFxQjs7O09BQXJCcEM7O2dCQURBbGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUFxZTtJQUFBa0M7MEJBQUEsU0FBUSxzQkFBUm5DO2dCQURBcGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUF1ZTtJQUFBaUM7MEJBQUEsU0FBVyx5QkFBWGxDO2dCQURBdGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUF5ZTtJQUFBZ0M7MEJBQUEsU0FBVyx5QkFBWGpDO2dCQURBeGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUEyZTtJQUFBK0I7O3VCQUFBLFNBQVk7OztPQStDcEJoQzs7Z0JBcERRMWUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUE0ZTtJQUFBK0I7O3VCQUFBLFNBQXlCOzs7T0FBekIvRjs7Z0JBREE1YSxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBOztHQUFBO0lBQUEsV0FBQThlO0lBQUE4Qjs7dUJBQUEsU0FBc0I7OztPQUF0Qi9COztpQkFEUjdlLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7O0lBQUE2Z0I7O3VCQUFBLFNBQXlCOzs7T0FBekI5Qjs7aUJBREEvZSxHQUFBRTtJQUFBO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFFO1lBQUFGO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBOztHQUFBOztJQUFBOGdCOzt1QkFBQSxTQUFpQjs7O09BQWpCOUI7O2lCQURBaGYsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTs7SUFBQStnQjs7dUJBQUEsU0FBb0I7OztPQUFwQjlCOztpQkFEUWpmLEdBQUFFO0lBQUE7WUFBQUY7WUFBQUU7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxXQUFBbWY7SUFBQTZCOzBCQUFBLFNBQVEsdUJBQVI5QjtpQkFEQWxmLEdBQUFFO0lBQUE7WUFBQUE7WUFBQUY7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7O0dBQUE7SUFBQSxXQUFBcWY7SUFBQTRCOzt1QkFBQSxTQUFZOzs7T0FBWjdCOztZQUpQdk07SUFBQXFPO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFuRztJQUFBb0c7SUFBQTdnQjtJQUFBO0tBQUEsUUFBQSxXQUFBbWYsa0JBSU9ELGdCQUpQbGY7S0FBQUM7S0FBQTZnQjtLQUFBLFVBQUEsV0FBQTFCLGNBS09ILFlBTFBoZjtLQUFBRTtLQUFBNGdCO0tBQUE7T0FBQTtTQUFBMUIsMEJBTURMLHdCQU5DN2U7S0FBQUU7S0FBQTJnQjtLQUFBO09BQUEsV0FBQTFCLHVCQU9EUCxxQkFQQzFlO0tBQUFFO0tBQUEwZ0I7S0FBQTtPQUFBO1NBQUExQjtTQVFEVDtTQVJDdmU7S0FBQUU7S0FBQXlnQjtLQUFBO09BQUE7U0FBQTFCLDRCQVNPWCwwQkFUUHBlO0tBQUFFO0tBQUF3Z0I7S0FBQTtPQUFBO1NBQUExQjtTQVVPYjtTQVZQamU7S0FBQUU7S0FBQXVnQjtLQUFBLFVBQUEsV0FBQTFCLGtCQWVPZixjQWZQOWQ7S0FBQUU7S0FBQXNnQjtLQUFBLFVBQUEsV0FBQTFCLGlCQWdCT2pCLGVBaEJQM2Q7S0FBQStRO0tBQUF3UDtLQUFBLFVBQUEsV0FBQTFCLGlCQWlCT25CLGVBakJQM007S0FBQXlQO0tBQUFDO0tBQUEsVUFBQSxXQUFBM0IsY0FrQk9yQixZQWxCUCtDO0tBQUFFO0tBQUFDO0tBQUE7T0FBQTtTQUFBNUIsMkJBbUJPdkIseUJBbkJQa0Q7S0FBQUU7S0FBQUM7S0FBQTtPQUFBO1NBQUE3QjtTQW9CRHpCO1NBcEJDcUQ7S0FBQUU7S0FBQUM7S0FBQTtPQUFBO1NBQUE5Qix5QkFzQk8zQix1QkF0QlB3RDtLQUFBRTtLQUFBQztLQUFBO09BQUE7U0FBQS9CO1NBdUJEN0I7U0F2QkMyRDtLQUFBRTtLQUFBQztLQUFBO09BQUEsV0FBQWhDLHFCQXlCTy9CLG1CQXpCUDhEO0tBQUFFO0tBQUFDO0tBQUE7T0FBQTtTQUFBakMseUJBMEJPakMsdUJBMUJQaUU7S0FBQUU7S0FBQUM7S0FBQTtPQUFBLFdBQUFsQyxzQkEyQk9uQyxvQkEzQlBvRTtLQUFBRTtLQUFBQztLQUFBLFdBQUEsV0FBQW5DLGlCQTRCT3JDLGVBNUJQdUU7S0FBQUU7S0FBQUM7S0FBQSxXQUFBLFdBQUFwQyxtQkE4Q0R2QyxpQkE5Q0MwRTtLQUFBRTtLQUFBQztLQUFBO09BQUE7U0FBQXJDO1NBK0NPekM7U0EvQ1A2RTtLQUFBRTtLQUFBQztLQUFBO09BQUEsV0FBQXRDLHFCQW1ETzNDLG1CQW5EUGdGO0tBQUFFO0tBQUFDO0tBQUE7T0FBQSxXQUFBdkMsc0JBb0RPN0Msb0JBcERQbUY7S0FBQUU7S0FBQUM7S0FBQSxXQUFBLFdBQUF4QyxXQXFETy9DLFNBckRQc0Y7S0FBQUU7S0FBQUM7S0FBQTtPQUFBO1NBQUF6QztTQXNET2pEO1NBdERQeUY7S0FBQUU7S0FBQUM7S0FBQTtPQUFBLFdBQUExQyxzQkF3RE9uRCxvQkF4RFA0RjtLQUFBRTtLQUFBQztLQUFBO09BQUE7U0FBQS9JO1NBeURPK0M7U0F6RFArRjtLQUFBRTtLQUFBQztLQUFBO09BQUEsV0FBQTdDLHVCQTBET3RELHFCQTFEUGtHO0tBQUFFO0tBQUFDO0lBQUE7cUJBQUEzaUI7YUFBQTtjQUFBb2MsZUFBQSxXQUFBeUQsa0JBQUE3ZjtjQUFBa2MsV0FBQSxXQUFBNEQsY0FBQTlmO2NBQUFpYyx1QkFBQSxXQUFBOEQsMEJBQUEvZjtjQUFBZ2Msb0JBQUEsV0FBQWdFLHVCQUFBaGdCO2NBQUErYjtnQkFBQSxXQUFBa0UsK0JBQUFqZ0I7Y0FBQTZiO2dCQUFBLFdBQUFxRSw0QkFBQWxnQjtjQUFBNFg7Z0JBQUEsV0FBQXVJLCtCQUFBbmdCO2NBQUEwZCxlQUFBLFdBQUEwQyxrQkFBQXBnQjtjQUFBd2IsY0FBQSxXQUFBNkUsaUJBQUFyZ0I7Y0FBQXNiLGNBQUEsV0FBQWlGLGlCQUFBdmdCO2NBQUFvYixXQUFBLFdBQUFxRixjQUFBemdCO2NBQUFrYjtnQkFBQSxXQUFBeUYsMkJBQUEzZ0I7Y0FBQWliO2dCQUFBLFdBQUE0RixnQ0FBQTdnQjtjQUFBK2Esc0JBQUEsV0FBQWdHLHlCQUFBL2dCO2NBQUE4YTtnQkFBQSxXQUFBbUcsK0JBQUFqaEI7Y0FBQTRhLGtCQUFBLFdBQUF1RyxxQkFBQW5oQjtjQUFBMGEsc0JBQUEsV0FBQTJHLHlCQUFBcmhCO2NBQUF3YSxtQkFBQSxXQUFBK0csc0JBQUF2aEI7Y0FBQXNhLGNBQUEsV0FBQW1ILGlCQUFBemhCO2NBQUFnSixnQkFBQSxXQUFBMlksbUJBQUEzaEI7Y0FBQW9hO2dCQUFBLFdBQUF5SCxrQ0FBQTdoQjtjQUFBa2Esa0JBQUEsV0FBQTZILHFCQUFBL2hCO2NBQUFnYSxtQkFBQSxXQUFBaUksc0JBQUFqaUI7Y0FBQThaLFVBQUEsV0FBQXFJLFdBQUFuaUI7Y0FBQTRaO2dCQUFBLFdBQUF5SSxnQ0FBQXJpQjtjQUFBMFosbUJBQUEsV0FBQTZJLHNCQUFBdmlCO2NBQUF3WjtnQkFBQSxXQUFBaUosa0NBQUF6aUI7Y0FBQXNaLG9CQUFBLFdBQUFxSix1QkFBQTNpQjthQUFBO3FCQUFBb2M7cUJBQUFGO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBRjtxQkFBQWpFO3FCQUFBOEY7cUJBQUFsQztxQkFBQUY7cUJBQUFGO3FCQUFBRjtxQkFBQUQ7cUJBQUFGO3FCQUFBRDtxQkFBQUY7cUJBQUFGO3FCQUFBRjtxQkFBQUY7cUJBQUF0UjtxQkFBQW9SO3FCQUFBRjtxQkFBQUY7cUJBQUFGO3FCQUFBRjtxQkFBQUY7cUJBQUFGO3FCQUFBRjs7WUFBQW9KOztZQUFBRTtJQUFBeEc7SUFBQUY7SUFBQUQ7SUFBQUQ7SUFBQUQ7SUFBQUY7SUFBQWpFO0lBQUE4RjtJQUFBbEM7SUFBQUY7SUFBQUY7SUFBQUY7SUFBQUQ7SUFBQUY7SUFBQUQ7SUFBQUY7SUFBQUY7SUFBQUY7SUFBQUY7SUFBQXRSO0lBQUFvUjtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBRjtJQUFBO1lBQUE4QztZQUFBRjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRjtZQUFBakU7WUFBQThGO1lBQUFsQztZQUFBRjtZQUFBRjtZQUFBRjtZQUFBRDtZQUFBRjtZQUFBRDtZQUFBRjtZQUFBRjtZQUFBRjtZQUFBRjtZQUFBdFI7WUFBQW9SO1lBQUFGO1lBQUFGO1lBQUFGO1lBQUFGO1lBQUFGO1lBQUFGO1lBQUFGOztZQUFBdEk7SUFBQWtOO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFuRztJQUFBb0c7SUFBQTtLQUFBLE9BQUEsV0FBQUEsdUJBMERPdEQ7S0ExRFA7T0FBQTtTQUFBOUMsZ0NBeURPK0M7S0F6RFAsT0FBQSxXQUFBb0Qsc0JBd0RPbkQ7S0F4RFA7T0FBQTtTQUFBa0QsZ0NBc0RPakQ7S0F0RFAsT0FBQSxXQUFBZ0QsV0FxRE8vQztLQXJEUCxPQUFBLFdBQUE4QyxzQkFvRE83QztLQXBEUCxPQUFBLFdBQUE0QyxxQkFtRE8zQztLQW5EUDtPQUFBO1NBQUEwQyxnQ0ErQ096QztLQS9DUCxPQUFBLFdBQUF3QyxtQkE4Q0R2QztLQTlDQyxPQUFBLFdBQUFzQyxpQkE0Qk9yQztLQTVCUCxPQUFBLFdBQUFvQyxzQkEyQk9uQztLQTNCUCxPQUFBLFdBQUFrQyx5QkEwQk9qQztLQTFCUCxPQUFBLFdBQUFnQyxxQkF5Qk8vQjtLQXpCUDtPQUFBLFdBQUE4QiwrQkF1QkQ3QjtLQXZCQyxPQUFBLFdBQUE0Qix5QkFzQk8zQjtLQXRCUDtPQUFBO1NBQUEwQixnQ0FvQkR6QjtLQXBCQyxPQUFBLFdBQUF3QiwyQkFtQk92QjtLQW5CUCxPQUFBLFdBQUFzQixjQWtCT3JCO0tBbEJQLE9BQUEsV0FBQW9CLGlCQWlCT25CO0tBakJQLE9BQUEsV0FBQWtCLGlCQWdCT2pCO0tBaEJQLE9BQUEsV0FBQWdCLGtCQWVPZjtLQWZQO09BQUEsV0FBQWMsK0JBVU9iO0tBVlAsT0FBQSxXQUFBWSw0QkFTT1g7S0FUUDtPQUFBLFdBQUFVLCtCQVFEVDtLQVJDLE9BQUEsV0FBQVEsdUJBT0RQO0tBUEMsT0FBQSxXQUFBTSwwQkFNREw7S0FOQyxPQUFBLFdBQUFJLGNBS09IO0lBTFA7WUFBQSxXQUFBRSxrQkFJT0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBSlBoTjtJQUFBaU47SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQW5HO0lBQUFvRztJQUFBLFdBQUExQixrQkFJT0Q7SUFKUCxXQUFBRSxjQUtPSDtJQUxQLFdBQUFJLDBCQU1ETDtJQU5DLFdBQUFNLHVCQU9EUDtJQVBDLFdBQUFRLCtCQVFEVDtJQVJDLFdBQUFVLDRCQVNPWDtJQVRQLFdBQUFZLCtCQVVPYjtJQVZQLFdBQUFjLGtCQWVPZjtJQWZQLFdBQUFnQixpQkFnQk9qQjtJQWhCUCxXQUFBa0IsaUJBaUJPbkI7SUFqQlAsV0FBQW9CLGNBa0JPckI7SUFsQlAsV0FBQXNCLDJCQW1CT3ZCO0lBbkJQLFdBQUF3QixnQ0FvQkR6QjtJQXBCQyxXQUFBMEIseUJBc0JPM0I7SUF0QlAsV0FBQTRCLCtCQXVCRDdCO0lBdkJDLFdBQUE4QixxQkF5Qk8vQjtJQXpCUCxXQUFBZ0MseUJBMEJPakM7SUExQlAsV0FBQWtDLHNCQTJCT25DO0lBM0JQLFdBQUFvQyxpQkE0Qk9yQztJQTVCUCxXQUFBc0MsbUJBOENEdkM7SUE5Q0M7TUFBQXdDLGdDQStDT3pDO0lBL0NQLFdBQUEwQyxxQkFtRE8zQztJQW5EUCxXQUFBNEMsc0JBb0RPN0M7SUFwRFAsV0FBQThDLFdBcURPL0M7SUFyRFAsV0FBQWdELGdDQXNET2pEO0lBdERQLFdBQUFrRCxzQkF3RE9uRDtJQXhEUDtNQUFBaEQsZ0NBeURPK0M7SUFDQSxPQUFBLFdBMURQcUQsdUJBMERPdEQ7O1lBMURQcEw7SUFBQTdRO0lBQUE2ZDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBMERPLE9BQUE7YUExRFBBO2FBQUE7ZUFBQXBHO2VBQUE7aUJBQUFtRztpQkFBQTttQkFBQUQ7bUJBQUE7cUJBQUFEO3FCQUFBO3VCQUFBRDt1QkFBQTt5QkFBQUQ7eUJBQUE7MkJBQUFEOzJCQUFBOzZCQUFBRDs2QkFBQTsrQkFBQUQ7K0JBQUE7aUNBQUFEO2lDQUFBO21DQUFBRDttQ0FBQTtxQ0FBQUQ7cUNBQUE7dUNBQUFEO3VDQUFBO3lDQUFBRDt5Q0FBQTsyQ0FBQUQ7MkNBQUE7NkNBQUFEOzZDQUFBOytDQUFBRDsrQ0FBQTtpREFBQUQ7aURBQUE7bURBQUFEO21EQUFBO3FEQUFBRDtxREFBQTt1REFBQUQ7dURBQUE7eURBQUFEO3lEQUFBOzJEQUFBRDsyREFBQTs2REFBQUQ7NkRBQUE7K0RBQUFEOytEQUFBO2lFQUFBRDtpRUFBQSxXQUFBRCxrQkFBQTdkLE1BSU80ZDtpRUFDQUQ7K0RBQ1JEOzZEQUNBRDsyREFDQUQ7eURBQ1FEO3VEQUNBRDtxREFLQUQ7bURBQ0FEO2lEQUNBRDsrQ0FDQUQ7NkNBQ0FEOzJDQUNSRDt5Q0FFUUQ7dUNBQ1JEO3FDQUVRRDttQ0FDQUQ7aUNBQ0FEOytCQUNBRDs2QkFrQlJEOzJCQUNRRDt5QkFJQUQ7dUJBQ0FEO3FCQUNBRDttQkFDQUQ7aUJBRUFEO2VBQ0FEO2FBQ0FEOztZQTFEUG5MLFdBQUE1UTtJQUFBO0tBQUEsV0FBQSxXQUFBQSxXQTBETytiO0tBMURQLFdBQUEsV0FBQS9iLFdBeURPZ2M7S0F6RFAsV0FBQSxXQUFBaGMsV0F3RE9pYztLQXhEUCxXQUFBLFdBQUFqYyxXQXNET2tjO0tBdERQLFdBQUEsV0FBQWxjLFdBcURPbWM7S0FyRFAsV0FBQSxXQUFBbmMsV0FvRE9vYztLQXBEUCxXQUFBLFdBQUFwYyxXQW1ET3FjO0tBbkRQLFdBQUEsV0FBQXJjLFdBK0NPc2M7S0EvQ1AsV0FBQSxXQUFBdGMsV0E4Q0R1YztLQTlDQyxXQUFBLFdBQUF2YyxXQTRCT3djO0tBNUJQLFdBQUEsV0FBQXhjLFdBMkJPeWM7S0EzQlAsV0FBQSxXQUFBemMsV0EwQk8wYztLQTFCUCxXQUFBLFdBQUExYyxXQXlCTzJjO0tBekJQLFdBQUEsV0FBQTNjLFdBdUJENGM7S0F2QkMsV0FBQSxXQUFBNWMsV0FzQk82YztLQXRCUCxXQUFBLFdBQUE3YyxXQW9CRDhjO0tBcEJDLFdBQUEsV0FBQTljLFdBbUJPK2M7S0FuQlAsV0FBQSxXQUFBL2MsV0FrQk9nZDtLQWxCUCxXQUFBLFdBQUFoZCxXQWlCT2lkO0tBakJQLFdBQUEsV0FBQWpkLFdBZ0JPa2Q7S0FoQlAsV0FBQSxXQUFBbGQsV0FlT21kO0tBZlAsV0FBQSxXQUFBbmQsV0FVT29kO0tBVlAsV0FBQSxXQUFBcGQsV0FTT3FkO0tBVFAsV0FBQSxXQUFBcmQsV0FRRHNkO0tBUkMsV0FBQSxXQUFBdGQsV0FPRHVkO0tBUEMsV0FBQSxXQUFBdmQsV0FNRHdkO0tBTkMsV0FBQSxXQUFBeGQsV0FLT3lkO0lBTFAsV0FBQSxXQUFBemQsV0FJTzBkO0dBSk47WUFBRDdNO0lBQUE4TTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUE7S0FBQSxPQUFBLFdBQUExQixrQkFJT0Q7S0FKUCxjQUFBLFdBQUFFLGNBS09IO0tBTFA7O1VBQUEsV0FBQUksMEJBTURMOztLQU5DO2NBQUEsV0FBQU0sdUJBT0RQO0tBUEM7O1VBQUE7V0FBQVEsK0JBUURUOztLQVJDOztVQUFBLFdBQUFVLDRCQVNPWDs7S0FUUDs7VUFBQTtXQUFBWSwrQkFVT2I7O0tBVlAsY0FBQSxXQUFBYyxrQkFlT2Y7S0FmUCxjQUFBLFdBQUFnQixpQkFnQk9qQjtLQWhCUCxjQUFBLFdBQUFrQixpQkFpQk9uQjtLQWpCUCxjQUFBLFdBQUFvQixjQWtCT3JCO0tBbEJQOztVQUFBLFdBQUFzQiwyQkFtQk92Qjs7S0FuQlA7O1VBQUE7V0FBQXdCLGdDQW9CRHpCOztLQXBCQzs7VUFBQSxXQUFBMEIseUJBc0JPM0I7O0tBdEJQOztVQUFBO1dBQUE0QiwrQkF1QkQ3Qjs7S0F2QkMsY0FBQSxXQUFBOEIscUJBeUJPL0I7S0F6QlA7O1VBQUEsV0FBQWdDLHlCQTBCT2pDOztLQTFCUCxjQUFBLFdBQUFrQyxzQkEyQk9uQztLQTNCUCxjQUFBLFdBQUFvQyxpQkE0Qk9yQztLQTVCUCxjQUFBLFdBQUFzQyxtQkE4Q0R2QztLQTlDQzs7VUFBQTtXQUFBd0MsZ0NBK0NPekM7O0tBL0NQLGNBQUEsV0FBQTBDLHFCQW1ETzNDO0tBbkRQLGNBQUEsV0FBQTRDLHNCQW9ETzdDO0tBcERQLGNBQUEsV0FBQThDLFdBcURPL0M7S0FyRFA7O1VBQUE7V0FBQWdELGdDQXNET2pEOztLQXREUCxjQUFBLFdBQUFrRCxzQkF3RE9uRDtLQXhEUDs7VUFBQTtXQUFBaEQsZ0NBeURPK0M7O0lBekRQO2NBMERPLFdBMURQcUQsdUJBMERPdEQ7OztZQTFEUGpMO0lBQUE2TTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUE7S0FBQSxPQUFBLFdBQUExQixrQkFJT0Q7S0FKUCxlQUFBLFdBQUFFLGNBS09IO0tBTFA7ZUFBQSxXQUFBSSwwQkFNREw7S0FOQyxlQUFBLFdBQUFNLHVCQU9EUDtLQVBDOzs7UUFBQSxXQUFBUSwrQkFRRFQ7S0FSQzs7VUFBQSxXQUFBVSw0QkFTT1g7S0FUUDs7O1FBQUEsV0FBQVksK0JBVU9iO0tBVlAsZUFBQSxXQUFBYyxrQkFlT2Y7S0FmUCxlQUFBLFdBQUFnQixpQkFnQk9qQjtLQWhCUCxlQUFBLFdBQUFrQixpQkFpQk9uQjtLQWpCUCxlQUFBLFdBQUFvQixjQWtCT3JCO0tBbEJQO2VBQUEsV0FBQXNCLDJCQW1CT3ZCO0tBbkJQOzs7UUFBQTtVQUFBd0IsZ0NBb0JEekI7S0FwQkMsZUFBQSxXQUFBMEIseUJBc0JPM0I7S0F0QlA7OztRQUFBLFdBQUE0QiwrQkF1QkQ3QjtLQXZCQyxlQUFBLFdBQUE4QixxQkF5Qk8vQjtLQXpCUCxlQUFBLFdBQUFnQyx5QkEwQk9qQztLQTFCUCxlQUFBLFdBQUFrQyxzQkEyQk9uQztLQTNCUCxlQUFBLFdBQUFvQyxpQkE0Qk9yQztLQTVCUCxlQUFBLFdBQUFzQyxtQkE4Q0R2QztLQTlDQzs7O1FBQUE7VUFBQXdDLGdDQStDT3pDO0tBL0NQLGVBQUEsV0FBQTBDLHFCQW1ETzNDO0tBbkRQLGVBQUEsV0FBQTRDLHNCQW9ETzdDO0tBcERQLGVBQUEsV0FBQThDLFdBcURPL0M7S0FyRFA7OztRQUFBO1VBQUFnRCxnQ0FzRE9qRDtLQXREUCxlQUFBLFdBQUFrRCxzQkF3RE9uRDtLQXhEUDs7O1FBQUE7VUFBQWhELGdDQXlETytDO0lBekRQOztjQTBETyxXQTFEUHFELHVCQTBET3REOztZQTFEUGhMO0lBQUE0TTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUE7S0FBQSxXQUFBLFdBQUFBLHVCQTBET3REO0tBMURQOztRQUFBO1VBQUE5QyxnQ0F5RE8rQzs7S0F6RFAsV0FBQSxXQUFBb0Qsc0JBd0RPbkQ7S0F4RFA7O1FBQUE7VUFBQWtELGdDQXNET2pEOztLQXREUCxXQUFBLFdBQUFnRCxXQXFETy9DO0tBckRQLFdBQUEsV0FBQThDLHNCQW9ETzdDO0tBcERQLFdBQUEsV0FBQTRDLHFCQW1ETzNDO0tBbkRQOztRQUFBO1VBQUEwQyxnQ0ErQ096Qzs7S0EvQ1AsV0FBQSxXQUFBd0MsbUJBOENEdkM7S0E5Q0MsV0FBQSxXQUFBc0MsaUJBNEJPckM7S0E1QlAsV0FBQSxXQUFBb0Msc0JBMkJPbkM7S0EzQlA7V0FBQSxXQUFBa0MseUJBMEJPakM7S0ExQlAsV0FBQSxXQUFBZ0MscUJBeUJPL0I7S0F6QlA7O1FBQUEsV0FBQThCLCtCQXVCRDdCOztLQXZCQztXQUFBLFdBQUE0Qix5QkFzQk8zQjtLQXRCUDs7UUFBQTtVQUFBMEIsZ0NBb0JEekI7O0tBcEJDOztRQUFBLFdBQUF3QiwyQkFtQk92Qjs7S0FuQlAsV0FBQSxXQUFBc0IsY0FrQk9yQjtLQWxCUCxXQUFBLFdBQUFvQixpQkFpQk9uQjtLQWpCUCxXQUFBLFdBQUFrQixpQkFnQk9qQjtLQWhCUCxXQUFBLFdBQUFnQixrQkFlT2Y7S0FmUDs7UUFBQSxXQUFBYywrQkFVT2I7O0tBVlA7O1FBQUEsV0FBQVksNEJBU09YOztLQVRQOztRQUFBLFdBQUFVLCtCQVFEVDs7S0FSQyxXQUFBLFdBQUFRLHVCQU9EUDtLQVBDO1dBQUEsV0FBQU0sMEJBTURMO0tBTkMsV0FBQSxXQUFBSSxjQUtPSDtJQUxQLFdBQUEsV0FBQUUsa0JBSU9EOztZQUpQMU07SUFBQWhSO0lBQUEyZDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUEsV0FBQTFCLGtCQUlPRCxnQkFKUDFkLFFBQUFBO0lBQUEsV0FBQTRkLGNBS09ILFlBTFB6ZCxRQUFBQTtJQUFBO01BQUE2ZCwwQkFNREwsd0JBTkN4ZCxRQUFBQTtJQUFBLFdBQUE4ZCx1QkFPRFAscUJBUEN2ZCxRQUFBQTtJQUFBO01BQUErZDtNQVFEVDtNQVJDdGQ7TUFBQUE7SUFBQTtNQUFBZ2UsNEJBU09YLDBCQVRQcmQsUUFBQUE7SUFBQTtNQUFBaWU7TUFVT2I7TUFWUHBkO01BQUFBO0lBQUEsV0FBQWtlLGtCQWVPZixjQWZQbmQsUUFBQUE7SUFBQSxXQUFBbWUsaUJBZ0JPakIsZUFoQlBsZCxRQUFBQTtJQUFBLFdBQUFvZSxpQkFpQk9uQixlQWpCUGpkLFFBQUFBO0lBQUEsV0FBQXFlLGNBa0JPckIsWUFsQlBoZCxRQUFBQTtJQUFBO01BQUFzZSwyQkFtQk92Qix5QkFuQlAvYyxRQUFBQTtJQUFBO01BQUF1ZTtNQW9CRHpCO01BcEJDOWM7TUFBQUE7SUFBQTtNQUFBd2UseUJBc0JPM0IsdUJBdEJQN2MsUUFBQUE7SUFBQTtNQUFBeWU7TUF1QkQ3QjtNQXZCQzVjO01BQUFBO0lBQUEsV0FBQTBlLHFCQXlCTy9CLG1CQXpCUDNjLFFBQUFBO0lBQUE7TUFBQTJlLHlCQTBCT2pDLHVCQTFCUDFjLFFBQUFBO0lBQUEsV0FBQTRlLHNCQTJCT25DLG9CQTNCUHpjLFFBQUFBO0lBQUEsV0FBQTZlLGlCQTRCT3JDLGVBNUJQeGMsUUFBQUE7SUFBQSxXQUFBOGUsbUJBOENEdkMsaUJBOUNDdmMsUUFBQUE7SUFBQTtNQUFBK2U7TUErQ096QztNQS9DUHRjO01BQUFBO0lBQUEsV0FBQWdmLHFCQW1ETzNDLG1CQW5EUHJjLFFBQUFBO0lBQUEsV0FBQWlmLHNCQW9ETzdDLG9CQXBEUHBjLFFBQUFBO0lBQUEsV0FBQWtmLFdBcURPL0MsU0FyRFBuYyxRQUFBQTtJQUFBO01BQUFtZjtNQXNET2pEO01BdERQbGM7TUFBQUE7SUFBQSxXQUFBb2Ysc0JBd0RPbkQsb0JBeERQamMsUUFBQUE7SUFBQTtNQUFBaVo7TUF5RE8rQztNQXpEUGhjO01BQUFBO0lBMERPLE9BQUE7YUExRFBxZix1QkEwRE90RCxxQkExRFAvYixRQUFBQTs7WUFBQWlSO0lBQUFqUjtJQUFBRjtJQUFBNmQ7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQW5HO0lBQUFvRzs7WUFBQXJmO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0lBQUEsT0FBQTthQUFBcWY7YUFBQTtlQUFBcEc7ZUFBQTtpQkFBQW1HO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRDt5QkFBQTsyQkFBQUQ7MkJBQUE7NkJBQUFEOzZCQUFBOytCQUFBRDsrQkFBQTtpQ0FBQUQ7aUNBQUE7bUNBQUFEO21DQUFBO3FDQUFBRDtxQ0FBQTt1Q0FBQUQ7dUNBQUE7eUNBQUFEO3lDQUFBOzJDQUFBRDsyQ0FBQTs2Q0FBQUQ7NkNBQUE7K0NBQUFEOytDQUFBO2lEQUFBRDtpREFBQTttREFBQUQ7bURBQUE7cURBQUFEO3FEQUFBO3VEQUFBRDt1REFBQTt5REFBQUQ7eURBQUE7MkRBQUFEOzJEQUFBOzZEQUFBRDs2REFBQTsrREFBQUQ7K0RBQUE7aUVBQUFEO2lFQUFBO21FQUFBRCxrQkFBQTdkLE1BSU80ZCxnQkFKUDFkLFFBQUFBO2lFQUtPeWQ7aUVBTFB6ZDs7K0RBTUR3ZDsrREFOQ3hkOzs2REFPRHVkOzZEQVBDdmQ7OzJEQVFEc2Q7MkRBUkN0ZDs7eURBU09xZDt5REFUUHJkOzt1REFVT29kO3VEQVZQcGQ7O3FEQWVPbWQ7cURBZlBuZDs7bURBZ0JPa2Q7bURBaEJQbGQ7O2lEQWlCT2lkO2lEQWpCUGpkOzsrQ0FrQk9nZDsrQ0FsQlBoZDs7NkNBbUJPK2M7NkNBbkJQL2M7OzJDQW9CRDhjOzJDQXBCQzljOzt5Q0FzQk82Yzt5Q0F0QlA3Yzs7dUNBdUJENGM7dUNBdkJDNWM7O3FDQXlCTzJjO3FDQXpCUDNjOzttQ0EwQk8wYzttQ0ExQlAxYzs7aUNBMkJPeWM7aUNBM0JQemM7OytCQTRCT3djOytCQTVCUHhjOzs2QkE4Q0R1Yzs2QkE5Q0N2Yzs7MkJBK0NPc2M7MkJBL0NQdGM7O3lCQW1ET3FjO3lCQW5EUHJjOzt1QkFvRE9vYzt1QkFwRFBwYzs7cUJBcURPbWM7cUJBckRQbmM7O21CQXNET2tjO21CQXREUGxjOztpQkF3RE9pYztpQkF4RFBqYzs7ZUF5RE9nYztlQXpEUGhjOzthQTBETytiO2FBMURQL2I7OztZQUFBa1I7SUFBQWxSO0lBQUEyZDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUE7S0FBQSxPQUFBLFdBQUExQixrQkFJT0QsZ0JBSlAxZCxRQUFBQTtLQUFBO2NBQUEsV0FBQTRkLGNBS09ILFlBTFB6ZCxRQUFBQTtLQUFBOztVQUFBO1dBQUE2ZDtXQU1ETDtXQU5DeGQ7V0FBQUE7O0tBQUE7O1VBQUE7V0FBQThkLHVCQU9EUCxxQkFQQ3ZkLFFBQUFBOztLQUFBOztVQUFBO1dBQUErZDtXQVFEVDtXQVJDdGQ7V0FBQUE7O0tBQUE7O1VBQUE7V0FBQWdlO1dBU09YO1dBVFByZDtXQUFBQTs7S0FBQTs7VUFBQTtXQUFBaWU7V0FVT2I7V0FWUHBkO1dBQUFBOztLQUFBOztVQUFBLFdBQUFrZSxrQkFlT2YsY0FmUG5kLFFBQUFBOztLQUFBOztVQUFBLFdBQUFtZSxpQkFnQk9qQixlQWhCUGxkLFFBQUFBOztLQUFBOztVQUFBLFdBQUFvZSxpQkFpQk9uQixlQWpCUGpkLFFBQUFBOztLQUFBO2NBQUEsV0FBQXFlLGNBa0JPckIsWUFsQlBoZCxRQUFBQTtLQUFBOztVQUFBO1dBQUFzZTtXQW1CT3ZCO1dBbkJQL2M7V0FBQUE7O0tBQUE7O1VBQUE7V0FBQXVlO1dBb0JEekI7V0FwQkM5YztXQUFBQTs7S0FBQTs7VUFBQTtXQUFBd2UseUJBc0JPM0IsdUJBdEJQN2MsUUFBQUE7O0tBQUE7O1VBQUE7V0FBQXllO1dBdUJEN0I7V0F2QkM1YztXQUFBQTs7S0FBQTs7VUFBQTtXQUFBMGUscUJBeUJPL0IsbUJBekJQM2MsUUFBQUE7O0tBQUE7O1VBQUE7V0FBQTJlLHlCQTBCT2pDLHVCQTFCUDFjLFFBQUFBOztLQUFBOztVQUFBO1dBQUE0ZSxzQkEyQk9uQyxvQkEzQlB6YyxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBNmUsaUJBNEJPckMsZUE1QlB4YyxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBOGUsbUJBOENEdkMsaUJBOUNDdmMsUUFBQUE7O0tBQUE7O1VBQUE7V0FBQStlO1dBK0NPekM7V0EvQ1B0YztXQUFBQTs7S0FBQTs7VUFBQTtXQUFBZ2YscUJBbURPM0MsbUJBbkRQcmMsUUFBQUE7O0tBQUE7O1VBQUE7V0FBQWlmLHNCQW9ETzdDLG9CQXBEUHBjLFFBQUFBOztLQUFBLGNBQUEsV0FBQWtmLFdBcURPL0MsU0FyRFBuYyxRQUFBQTtLQUFBOztVQUFBO1dBQUFtZjtXQXNET2pEO1dBdERQbGM7V0FBQUE7O0tBQUE7O1VBQUE7V0FBQW9mLHNCQXdET25ELG9CQXhEUGpjLFFBQUFBOztLQUFBOztVQUFBO1dBQUFpWjtXQXlETytDO1dBekRQaGM7V0FBQUE7O0lBQUE7Y0EwRE87ZUExRFBxZix1QkEwRE90RCxxQkExRFAvYixRQUFBQTs7O1lBQUFtUjtJQUFBblI7SUFBQTJkO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFuRztJQUFBb0c7SUFBQTtLQUFBLE9BQUEsV0FBQTFCLGtCQUlPRCxnQkFKUDFkLFFBQUFBO0tBQUEsZUFBQSxXQUFBNGQsY0FLT0gsWUFMUHpkLFFBQUFBO0tBQUE7OztRQUFBO1VBQUE2ZCwwQkFNREwsd0JBTkN4ZCxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBOGQsdUJBT0RQLHFCQVBDdmQsUUFBQUE7S0FBQTs7O1FBQUE7VUFBQStkO1VBUURUO1VBUkN0ZDtVQUFBQTtLQUFBOzs7UUFBQTtVQUFBZ2U7VUFTT1g7VUFUUHJkO1VBQUFBO0tBQUE7OztRQUFBO1VBQUFpZTtVQVVPYjtVQVZQcGQ7VUFBQUE7S0FBQTtlQUFBLFdBQUFrZSxrQkFlT2YsY0FmUG5kLFFBQUFBO0tBQUE7ZUFBQSxXQUFBbWUsaUJBZ0JPakIsZUFoQlBsZCxRQUFBQTtLQUFBO2VBQUEsV0FBQW9lLGlCQWlCT25CLGVBakJQamQsUUFBQUE7S0FBQSxlQUFBLFdBQUFxZSxjQWtCT3JCLFlBbEJQaGQsUUFBQUE7S0FBQTs7O1FBQUE7VUFBQXNlO1VBbUJPdkI7VUFuQlAvYztVQUFBQTtLQUFBOzs7UUFBQTtVQUFBdWU7VUFvQkR6QjtVQXBCQzljO1VBQUFBO0tBQUE7OztRQUFBO1VBQUF3ZSx5QkFzQk8zQix1QkF0QlA3YyxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBeWU7VUF1QkQ3QjtVQXZCQzVjO1VBQUFBO0tBQUE7OztRQUFBLFdBQUEwZSxxQkF5Qk8vQixtQkF6QlAzYyxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBMmUseUJBMEJPakMsdUJBMUJQMWMsUUFBQUE7S0FBQTs7O1FBQUE7VUFBQTRlLHNCQTJCT25DLG9CQTNCUHpjLFFBQUFBO0tBQUE7ZUFBQSxXQUFBNmUsaUJBNEJPckMsZUE1QlB4YyxRQUFBQTtLQUFBOztVQUFBLFdBQUE4ZSxtQkE4Q0R2QyxpQkE5Q0N2YyxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBK2U7VUErQ096QztVQS9DUHRjO1VBQUFBO0tBQUE7OztRQUFBLFdBQUFnZixxQkFtRE8zQyxtQkFuRFByYyxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBaWYsc0JBb0RPN0Msb0JBcERQcGMsUUFBQUE7S0FBQSxlQUFBLFdBQUFrZixXQXFETy9DLFNBckRQbmMsUUFBQUE7S0FBQTs7O1FBQUE7VUFBQW1mO1VBc0RPakQ7VUF0RFBsYztVQUFBQTtLQUFBOzs7UUFBQTtVQUFBb2Ysc0JBd0RPbkQsb0JBeERQamMsUUFBQUE7S0FBQTs7O1FBQUE7VUFBQWlaO1VBeURPK0M7VUF6RFBoYztVQUFBQTtJQUFBOztjQTBETztlQTFEUHFmLHVCQTBET3RELHFCQTFEUC9iLFFBQUFBOztZQUFBb1I7SUFBQXBSO0lBQUEyZDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUE7S0FBQTs7UUFBQTtVQUFBQSx1QkEwRE90RCxxQkExRFAvYixRQUFBQTs7S0FBQTs7UUFBQTtVQUFBaVo7VUF5RE8rQztVQXpEUGhjO1VBQUFBOztLQUFBOztRQUFBO1VBQUFvZixzQkF3RE9uRCxvQkF4RFBqYyxRQUFBQTs7S0FBQTs7UUFBQTtVQUFBbWY7VUFzRE9qRDtVQXREUGxjO1VBQUFBOztLQUFBLFdBQUEsV0FBQWtmLFdBcURPL0MsU0FyRFBuYyxRQUFBQTtLQUFBOztRQUFBO1VBQUFpZixzQkFvRE83QyxvQkFwRFBwYyxRQUFBQTs7S0FBQTs7UUFBQSxXQUFBZ2YscUJBbURPM0MsbUJBbkRQcmMsUUFBQUE7O0tBQUE7O1FBQUE7VUFBQStlO1VBK0NPekM7VUEvQ1B0YztVQUFBQTs7S0FBQTs7UUFBQSxXQUFBOGUsbUJBOENEdkMsaUJBOUNDdmMsUUFBQUE7O0tBQUE7O1FBQUEsV0FBQTZlLGlCQTRCT3JDLGVBNUJQeGMsUUFBQUE7O0tBQUE7O1FBQUE7VUFBQTRlLHNCQTJCT25DLG9CQTNCUHpjLFFBQUFBOztLQUFBOztRQUFBO1VBQUEyZSx5QkEwQk9qQyx1QkExQlAxYyxRQUFBQTs7S0FBQTs7UUFBQSxXQUFBMGUscUJBeUJPL0IsbUJBekJQM2MsUUFBQUE7O0tBQUE7O1FBQUE7VUFBQXllO1VBdUJEN0I7VUF2QkM1YztVQUFBQTs7S0FBQTs7UUFBQTtVQUFBd2UseUJBc0JPM0IsdUJBdEJQN2MsUUFBQUE7O0tBQUE7O1FBQUE7VUFBQXVlO1VBb0JEekI7VUFwQkM5YztVQUFBQTs7S0FBQTs7UUFBQTtVQUFBc2U7VUFtQk92QjtVQW5CUC9jO1VBQUFBOztLQUFBO1dBQUEsV0FBQXFlLGNBa0JPckIsWUFsQlBoZCxRQUFBQTtLQUFBOztRQUFBLFdBQUFvZSxpQkFpQk9uQixlQWpCUGpkLFFBQUFBOztLQUFBOztRQUFBLFdBQUFtZSxpQkFnQk9qQixlQWhCUGxkLFFBQUFBOztLQUFBOztRQUFBLFdBQUFrZSxrQkFlT2YsY0FmUG5kLFFBQUFBOztLQUFBOztRQUFBO1VBQUFpZTtVQVVPYjtVQVZQcGQ7VUFBQUE7O0tBQUE7O1FBQUE7VUFBQWdlO1VBU09YO1VBVFByZDtVQUFBQTs7S0FBQTs7UUFBQTtVQUFBK2Q7VUFRRFQ7VUFSQ3RkO1VBQUFBOztLQUFBOztRQUFBO1VBQUE4ZCx1QkFPRFAscUJBUEN2ZCxRQUFBQTs7S0FBQTs7UUFBQTtVQUFBNmQsMEJBTURMLHdCQU5DeGQsUUFBQUE7O0tBQUEsV0FBQSxXQUFBNGQsY0FLT0gsWUFMUHpkLFFBQUFBO0lBQUE7WUFBQSxXQUFBMmQsa0JBSU9ELGdCQUpQMWQsUUFBQUE7OztZQUFBcVI7SUFBQXJSO0lBQUEyZDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBbkc7SUFBQW9HO0lBQUE7S0FBQTtPQUFBO1NBQUFBLHVCQTBET3RELHFCQTFEUC9iLFFBQUFBO0tBQUE7T0FBQTtTQUFBaVo7U0F5RE8rQztTQXpEUGhjO1NBQUFBO0tBQUE7T0FBQTtTQUFBb2Ysc0JBd0RPbkQsb0JBeERQamMsUUFBQUE7S0FBQTtPQUFBO1NBQUFtZjtTQXNET2pEO1NBdERQbGM7U0FBQUE7S0FBQSxPQUFBLFdBQUFrZixXQXFETy9DLFNBckRQbmMsUUFBQUE7S0FBQTtPQUFBO1NBQUFpZixzQkFvRE83QyxvQkFwRFBwYyxRQUFBQTtLQUFBO09BQUEsV0FBQWdmLHFCQW1ETzNDLG1CQW5EUHJjLFFBQUFBO0tBQUE7T0FBQTtTQUFBK2U7U0ErQ096QztTQS9DUHRjO1NBQUFBO0tBQUEsT0FBQSxXQUFBOGUsbUJBOENEdkMsaUJBOUNDdmMsUUFBQUE7S0FBQSxPQUFBLFdBQUE2ZSxpQkE0Qk9yQyxlQTVCUHhjLFFBQUFBO0tBQUE7T0FBQTtTQUFBNGUsc0JBMkJPbkMsb0JBM0JQemMsUUFBQUE7S0FBQTtPQUFBO1NBQUEyZSx5QkEwQk9qQyx1QkExQlAxYyxRQUFBQTtLQUFBO09BQUEsV0FBQTBlLHFCQXlCTy9CLG1CQXpCUDNjLFFBQUFBO0tBQUE7T0FBQTtTQUFBeWU7U0F1QkQ3QjtTQXZCQzVjO1NBQUFBO0tBQUE7T0FBQTtTQUFBd2UseUJBc0JPM0IsdUJBdEJQN2MsUUFBQUE7S0FBQTtPQUFBO1NBQUF1ZTtTQW9CRHpCO1NBcEJDOWM7U0FBQUE7S0FBQTtPQUFBO1NBQUFzZTtTQW1CT3ZCO1NBbkJQL2M7U0FBQUE7S0FBQSxPQUFBLFdBQUFxZSxjQWtCT3JCLFlBbEJQaGQsUUFBQUE7S0FBQSxPQUFBLFdBQUFvZSxpQkFpQk9uQixlQWpCUGpkLFFBQUFBO0tBQUEsT0FBQSxXQUFBbWUsaUJBZ0JPakIsZUFoQlBsZCxRQUFBQTtLQUFBLE9BQUEsV0FBQWtlLGtCQWVPZixjQWZQbmQsUUFBQUE7S0FBQTtPQUFBO1NBQUFpZTtTQVVPYjtTQVZQcGQ7U0FBQUE7S0FBQTtPQUFBO1NBQUFnZTtTQVNPWDtTQVRQcmQ7U0FBQUE7S0FBQTtPQUFBO1NBQUErZDtTQVFEVDtTQVJDdGQ7U0FBQUE7S0FBQTtPQUFBO1NBQUE4ZCx1QkFPRFAscUJBUEN2ZCxRQUFBQTtLQUFBO09BQUE7U0FBQTZkLDBCQU1ETCx3QkFOQ3hkLFFBQUFBO0tBQUEsT0FBQSxXQUFBNGQsY0FLT0gsWUFMUHpkLFFBQUFBO0lBQUE7WUFBQSxXQUFBMmQsa0JBSU9ELGdCQUpQMWQsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQUFzUjtJQUFBdFI7SUFBQTZiO0lBQUFGO0lBQUFMO0lBQUFqRTtJQUFBOEY7SUFBQWxDO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFIO0lBQUFIO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUFGO0lBQUEsSUFBQXBZLFdBQUEsNkJBQUFYO0lBQUFXLGNBQUFrYjtJQUFBbGIsY0FBQWdiO0lBQUFoYixjQUFBMmE7SUFBQTNhLGNBQUEwVztJQUFBMVcsY0FBQXdjO0lBQUF4YyxjQUFBc2E7SUFBQXRhLGVBQUFvYTtJQUFBcGEsZUFBQWthO0lBQUFsYSxlQUFBZ2E7SUFBQWhhLGVBQUE2WjtJQUFBN1osZUFBQTBaO0lBQUExWixlQUFBd1o7SUFBQXhaLGVBQUFzWjtJQUFBdFosZUFBQW9aO0lBQUFwWixlQUFBa1o7SUFBQWxaLGVBQUFnWjtJQUFBaFosZUFBQThZO0lBQUE5WSxlQUFBNFk7SUFBQTVZLGVBQUEwWTtJQUFBMVksZUFBQXdZO0lBQUF4WSxlQUFBc1k7SUFBQXRZLGVBQUFvWTs7R0FBQztHQUFEO0lBQUE7O09BQUEvSDtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztJQUFBOztPQUFBbEk7T0EwRE8yUztPQURBQztPQURBQztPQUZBQztPQURBQztPQURBQztPQURBQztPQUpBQztPQURSQztPQWxCUUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FGUkM7T0FEUUM7T0FGUkM7T0FEUUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FMQUM7T0FEQUM7T0FEUkM7T0FEQUM7T0FEQUM7T0FEUUM7T0FEQUM7T0FKUHBPO09BQUErUztPQUFBNVI7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7O1lBQUx0SDtJQTBEWTtLQXREQTZZO0tBQ0FDO0tBR1JDO0tBREFDO0tBREFDO0tBR1FDO0tBQ0FDO0tBS0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ1JDO0tBRVFDO0tBQ1JDO0tBRVFDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBa0JSQztLQUtRQztLQUNBQztLQUNBQztLQUNBQztLQUVBQztLQUNBN0s7S0FDQThLO0tBQUFDLFVBQUEsc0JBQUFEO0tBMURaRSxpQ0EwRFlEO0tBREFFO09BQUEsc0NBQUFqTDtLQXpEWmtMLG1DQXlEWUQsZUF6RFpEO0tBd0RZRyxVQUFBLHNCQUFBTjtLQXhEWk8sbUNBd0RZRCxlQXhEWkQ7S0FzRFlHO09BQUEsbUNBQUFUO0tBdERaVSxtQ0FzRFlELGVBdERaRDtLQXFEWUcsVUFBQSxtQ0FBQVo7S0FyRFphLG1DQXFEWUQsZUFyRFpEOzt5Qjs7O0lBb0RZO0tBQUFHLFVBQUEsNEJBQUFmO0tBcERaZ0IsbUNBb0RZRCxlQXBEWkQ7O3lCOzs7SUFtRFk7S0FBQUcsVUFBQSw0QkFBQWxCO0tBbkRabUIsbUNBbURZRCxlQW5EWkQ7d0I7SUErQ1k7S0FBQUc7S0EvQ1pDLG1DQStDWUQsZUEvQ1pEO0tBOENJRztPQUFBOzs7U0FBQXZCO0tBOUNKd0IsbUNBOENJRCxlQTlDSkQ7S0E0QllHO09BQUE7MkRBQUExQjtLQTVCWjJCLG1DQTRCWUQsZUE1QlpEO0tBMkJZRyxVQUFBLGdDQUFBN0I7S0EzQlo4QixtQ0EyQllELGVBM0JaRDtLQTBCWUcsVUFBQSxzQkFBQWhDO0tBMUJaaUMsb0NBMEJZRCxlQTFCWkQ7S0F5QllHLFVBQUEsZ0NBQUFuQztLQXpCWm9DLG9DQXlCWUQsZUF6QlpEO0tBdUJJRztPQUFBOzs7O1NBQUF0QztLQXZCSnVDLG9DQXVCSUQsZUF2QkpEO0tBc0JZRztPQUFBLDhDQUFBekM7S0F0QlowQyxvQ0FzQllELGVBdEJaRDtLQW9CSUc7T0FBQTs7OztTQUFBNUM7S0FwQko2QyxvQ0FvQklELGVBcEJKRDtLQW1CWUc7T0FBQTs0Q0FBQS9DO0tBbkJaZ0Qsb0NBbUJZRCxlQW5CWkQ7S0FrQllHLFVBQUEsc0JBQUFsRDtLQWxCWm1ELG9DQWtCWUQsZUFsQlpEO0tBaUJZRyxVQUFBLHFDQUFBckQ7S0FqQlpzRCxvQ0FpQllELGVBakJaRDtLQWdCWUcsVUFBQSxzQkFBQXhEO0tBaEJaeUQsb0NBZ0JZRCxlQWhCWkQ7OztNQWU0Qkc7TUFBQUM7TUFBQUMsbUNBQUFEO01BQUFFLHFDQUFBSDtvQkFBQUUsY0FBQUM7O0lBQWhCO0tBQUFDLFVBQUEsNEJBQUEvRDtLQWZaZ0Usb0NBZVlELGVBZlpMO0tBVVlPO09BQUE7NENBQUFsRTtLQVZabUUsb0NBVVlELGVBVlpEO0tBU1lHO09BQUE7NENBQUFyRTtLQVRac0Usb0NBU1lELGVBVFpEO0tBUUlHO09BQUE7OztTQUFBMUU7S0FSSjJFLG9DQVFJRCxlQVJKRDtLQU9JRyxVQUFBLHNDQUFBM0U7S0FQSjRFLG9DQU9JRCxlQVBKRDtLQU1JRyxVQUFBLHNDQUFBNUU7S0FOSjZFLG9DQU1JRCxlQU5KRDtLQUtZRyxVQUFBLHFDQUFBakY7S0FMWmtGLG9DQUtZRCxlQUxaRDs7eUI7OztJQUlZO0tBQUFHLFVBQUEsNEJBQUFwRjtLQUpacUYsb0NBSVlELGVBSlpEO0lBQUEsV0FBQUU7O1lBZ0VJQyxlQUFhL3NCO0lBQ2YsV0FEZUE7ZUFFTDt5QkFDR29CLGlCQUFMNE07OztNQUMwRGdmO01BQUFDO01BQUFDLG1DQUFBRDtNQUFBRSxxQ0FBQUg7b0JBQUFFLGNBQUFDOztJQUFoRTtZQUFLOzs7OztrQkFEQ25mLEtBQUs1TTs7R0FDcUU7WUFHaEZnc0IsaUJBQWlCcHRCO0lBQ3VCLFdBQUEsc0NBRHZCQTtJQUNuQixPQUFBLHNDQURtQkE7R0FDMkQ7WUFHNUU2SyxhQUFhN0s7SUFFYixXQUFBLHVDQUZhQTtJQUNmLE9BQUEsdUNBRGVBO0dBRTZCO1lBRzFDcXRCLHNCQUFvQnJ0QixHQUFJLE9BQUpBLE1BQXlCO1lBRTdDc3RCLHFCQUFzQjVhLE9BQWU2YSxPQUFNQztJQU03QyxjQUM4QzVvQixLQUFJNm9CO21CQUNyQkM7b0JBTk1DLEdBQUssV0FBSSxXQUZwQmpiLE9BRVdpYixHQUtlRixHQUxLO01BQS9DO09BQUEsT0FBQSwyQkFNcUJDOztPQUp6QkU7a0JBRFM7VUFDRGhzQjtNQUFLLFdBQUssc0JBQWxCZ3NCLEdBQVFoc0I7S0FJZ0M7S0FBcEIsT0FBQSw0QkFEc0JnRDtJQUNEO0lBRDNDLFdBQUEsMEJBUHFDMm9CLFdBQU1DO0lBTzNDLE9BQUE7R0FDNkM7WUFHN0NLLDJCQUEyQkMsT0FBTUM7SUFHcUIsV0FBQSw2QkFIM0JEO0lBR3RCLEdBZExSLHNDQVdpQ1M7SUFHbkMsTUFBQTtHQUFrRjtZQUdoRjdWLFlBQVVsWTtJQUNaO0tBaUNTO01BaENIaU07aUJBQU1DLEdBQUU4aEI7U0FBUSxPQUFFLFdBQVo5aEIsR0FBWSwwQkFBVjhoQixPQUZGaHVCO1FBRStCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOztpQkFnQ2dDMEo7U0FDL0QsR0FBTywwQkFuQ1AxSixNQWtDK0QwSjtTQUMvRCxNQUFBO1FBQTZDO01BRGhELE9BQUE7TUFESCxzQixPQS9CQXVDOzRCOztpQkE2QllxVDtTQUF1QixHQUFPLG1DQUE5QkE7O1NBQXVCLE1BQUE7UUFBaUM7TUFBcEUsc0IsT0E3QkFyVDs0Qjs7aUJBd0JZeVQ7U0FDVCxPQWpDUG1PLDJCQWdDZ0JuTywyQkExQk4xZjtRQTJCdUU7TUFEN0Usc0IsT0F4QkFpTTs0Qjs7aUJBa0JZNFQ7U0FDVCxPQTNCUGdPLDJCQTBCZ0JoTyw2QkFwQk43ZjtRQXVCc0I7TUFINUIsc0IsT0FsQkFpTTs0Qjs0Qjs0Qjs7aUJBYXVCbVU7U0FBZSxHQUFPLG1DQUF0QkE7U0FBZSxNQUFBO1FBQXlCO01BQXBELHNCLE9BYlhuVTs7aUJBV1lxVztTQUNOLFdBQUEsc0JBRE1BO1NBQ04sV0FBQTtTQUFrQyxXQTFDNUM4SyxpQkE0QlVwdEI7U0FjaUMsR0FBQTtTQUFQLE1BQUE7UUFBK0I7TUFEL0Qsc0IsT0FYQWlNO01BV0E7TUFGeUIsc0IsT0FUekJBO01BU3lCO01BREgsc0IsT0FSdEJBOztpQkFPWWdpQjtTQUFLLGtDQUFMQTtRQUF1RDtNQUFuRSxzQixPQVBBaGlCO01BT0E7TUFGaUIsc0IsT0FMakJBO01BS2lCO01BREcsc0IsT0FKcEJBO01BSW9CO01BRFosc0IsT0FIUkE7NEI7TUFDSjtRQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FBQTs7VUEyQ0E4Qjs7TUFBQUMsMEJBQUFEO21DQWpKSmEsWUFtR2M1Tzt5REE4Q1ZnTzs7Ozs7Ozs7O1lBR0FrZ0IsU0FBU2x1QixHQUFFMEosS0FBTSxPQUFBLDJCQUFSMUosTUFBRTBKLEtBQThCO1lBRXpDb0QsUUFBUTlNLEdBQUdrSyxtQkFBeUNnQyxHQUFFVTtJQUdyRCxXQUFBLHNCQUhPNU07SUFHUDtLQUdELElBRElrSCxXQUxPZ0Qsc0JBTVBpa0IsWUFEQWpuQixXQUxJbEgsT0FBQUE7S0FXUixzQ0FMSW11QixXQU5PamtCLG1CQUF5Q2dDLEdBQUVVO2lCQUE5QzVNO21CQWNEb3VCLGdCQUFLLE9BQUEsV0FBTEEsS0FUSGxuQjs7Ozs7SUFRTTtHQUNhO1lBR3ZCbW5CLFlBQVlydUIsR0FBRTBKLEtBQUt3a0I7SUFDckI7S0FBSXBOLFdBRFU5Z0I7S0FNWixPQUFBLDJCQUxFOGdCLFVBRFlwWDtLQUtkLE9BQUEsMkJBSkVvWCxVQURZcFg7SUFqQmRvRDtNQWlCWTlNO01BSVosMkJBSEU4Z0IsVUFEWXBYOzs7V0FBS3drQixXQU9KLDJCQVBIbHVCLE1BQUUwSixPQUFLd2tCO0dBT29CO1lBR3ZDMWEsYUFBYzBMLGFBQThDblY7SUFDOUQ7S0FDT3VKLElBQUssdURBRmtEdko7S0FLckRxRjtPQUZBLHVEQURGa0UsR0FGdUR2SjtXQUV2RHVKO2NBWkwrYSxZQVVjblAsZ0JBS1A5UDtjQUFTO21EQUxGOFAsYUFLUDlQO0dBQXVEO1lBRzlEa2Y7SUFDUTtLQUFOM1gsTUFBTTtLQUNGM1c7S0FpQ0prZjtLQUZBbFYsU0FDRixxREFqQ0UyTTs7OztLQTBCNkIsT0FBQTtLQURyQixPQUFBO0tBQUE7O3dCO0lBSlE7S0FBQSxPQUFBO0tBRkcsT0FBQTtLQUZELE9BQUE7O0tBRFU7T0FBQTs7S0FGRTtPQUFBOzs7S0FSRixPQUFBO0tBRFIsT0FBQTtLQURHLE9BQUE7O01BSG5CM1c7OztPQUVPOzs7Ozs7OztPQUhYMlc7Ozs7Ozs7OztPQWtDQXVJOzs7Ozs7Ozs7OztrQkFLb0JyTztLQUFTLE9BaEQvQjJDO2NBMkNFMEwsYUFLc0QsK0JBUHREbFYsUUFPb0I2RztJQUE0RDs7Ozs7TUFMaEZxTzs7T0FDSzs7O09BSExsVjs7Ozs7T0EvQkloSztJQTZDUixPQTdDUUE7O1lBZ0ROdXVCLFFBQVF2dUIsR0FBSSw2QkFBSkEsTUFBMEI7WUFDbEN3dUIsbUJBQWlCeHVCLEdBQUVrTSxHQUFGbE0sT0FBRWtNLFlBQXVCO0dBR3RDLFlBQUEsNEJBdERKb2lCOztRQXVER3R1QixjQUZIeXVCLFlBRUd6dUI7O1FBQ0dnTztJQUNOOzhEQURNQTtRQUhOeWdCLFFBS0E7O1lBR0FDLGVBQWExdUI7SUFDZixZQURlQTtnQkFFTDtRQUNIa007SUFBSyxPQUFBLFdBQUxBO0dBQVM7WUFHZDlGLFdBQ0YsSUFBSXBHLElBZkZ5dUIsVUFRQUMsZUFPRTF1QixJQUNKLE9BRElBLEVBRUg7WUFHQzJ1Qiw0QkFBMEIzdUI7SUFDNUIsT0FENEJBLHVEQUFBQSxRQUFBQTtHQUdJO1lBRzlCNHVCLHdCQUF3QjV1QixHQUFFNnVCLGFBQWEzaUIsR0FBRXVoQjtJQUN6QixJQUFkcUIsY0FQRkgsNEJBTXdCM3VCO0lBRTFCLGtDQUYwQkEsR0FBRTZ1Qjs7S0FHSyxPQURqQyxrQ0FGMEI3dUIsR0FDdEI4dUI7SUFFZ0U7SUFBN0MsT0FBQSxzQkFIa0I1aUIsR0FBRXVoQjtHQUcwQjtZQUduRXNCLHVCQUF1Qi91QixHQUFFNnVCLGFBQWEzaUI7SUFBSSxPQU4xQzBpQix3QkFNdUI1dUIsR0FBRTZ1QixhQUFhM2lCO0dBQStDO1lBRXJGOGlCLFdBQW9CaHZCLEdBQUVrSyxtQkFBa0JnQyxHQUFFVTtJQUM1QyxHQUFHLDJCQURtQjVNO0tBQUFBLE9BQ3dCLDhCQUR4QkE7SUFFdEIsT0FBQSwyQkFGc0JBLE1BQUVrSyxtQkFBa0JnQyxHQUFFVTtHQU14QjtZQUdsQnFpQixpQkFBaUJqdkIsR0FBRWdPLEtBQUk1TTtJQUN6QixHQTFVRU07S0EwVVk7Ozs7VUFBb0R3dEI7VUFBQUM7VUFBQUMsbUNBQUFEO1VBQUFFLHFDQUFBSDt3QkFBQUUsY0FBQUM7O0tBQXBEO3lEQURPcmhCLEtBQUk1TTs7SUFFekI7d0JBRm1CcEIsVUFBQUE7SUFBQUEsZUFBRWdPLEtBQUk1TTs7R0FHUztZQUtoQ2t1QixZQUFZdHZCLEdBQUd1dkI7SUFDVCxJQUFKaGlCLElBQUksc0NBRFNnaUI7SUFFakIsc0NBRmN2dkIsTUFDVnVOO0lBQ0osT0FBQSxzQ0FGY3ZOLE1BQ1Z1TjtHQUVvRDtZQU1sRE0sU0FBUzdOO0lBQ2Y7S0FBTSxJQUNKd3ZCLElBREksc0NBRFN4dkIsTUFBQUE7Y0FFYnd2QixNQUFnQixPQUFoQkE7S0FFTyxJQUNKQyxNQURJLHNDQUpNenZCLE1BQUFBO2NBS1Z5dkIsUUFBZ0IsT0FBaEJBO0tBR0c7O09BREEsc0NBUE96dkI7WUFRUCxzQ0FST0E7TUFVTDs7R0FBTTtZQUdkMHZCLFVBQVUxdkI7SUF0QlZzdkIsWUFzQlV0dkIsR0FJUjtJQUNFLFlBbEJBNk4sU0FhTTdOO3VCQU1EO1FBQ0ZnTztJQUFvQixXQUFwQkE7R0FBNkI7WUFHcEMyaEIsbUJBQ0lDLEtBQ0RqWjtJQUdMLEdBSk1pWjtTQUFzQkMsTUFBdEJELFFBQUFFLHNCQUFzQkQ7O1NBQXRCQztJQUlFO0tBQUo5dkIsSUExRUZvRztLQTJFRTRELFNBQVMsNEJBTFA4bEIscUJBQ0RuWjtLQUtHdUk7O2tCQUtnQnJPO0tBQVMsT0E1Si9CMkM7Y0F1Sk0wTCxhQUtrRCwrQkFOdERsVixRQU1vQjZHO0lBQTREOzs7OztNQUw1RXFPOztPQUNDOzs7T0FGTGxWOzs7OztPQURBaEs7SUFjSixPQVpRa2Y7R0FZRztZQUdUNlE7SUFBa0QsV0EzRmxEM3BCO0lBMkZrRCxPQUFBO0dBQWtCOzs7Ozs7Ozs7O09BdllwRTFFOzs7O09BMEdRd2M7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FGQUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FKQUM7T0FBQUM7T0FEUnJSO09BbEJRc1I7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUU7T0FEQUM7T0FBQUM7T0FGUkM7T0FEUUM7T0FBQUM7T0FGUkM7T0FEUUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUM7T0FBQUM7T0FEQUU7T0FMQUM7T0FEQUM7T0FBQUM7T0FEUkM7T0FEQUM7T0FEQUM7T0FEUUM7T0FBQUM7O09BTFpuUztPQThESTBSO09BRUF5TTtPQU9BSztPQUlBdmlCO09BS0F3aUI7T0FFQUM7T0FXQU87T0FNQTNWO09BaURBZ1c7T0FFQXBoQjtPQWlCQXVoQjtPQVVBN2E7T0FRQThhO09Ba0RBQztPQUNBQztPQUVBQztPQVFBQztPQU1BdG9CO09BTUF1b0I7T0FNQUM7T0FNQUc7T0FFQUM7T0FTQUM7T0FRQUs7T0FTSXpoQjtPQWFKNmhCO09BVUFDO09Bc0JBSTs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUM5VkVDLFNBQXFDQyxPQUFTeEMsR0FBVHdDLFdBQVN4QztZQUM5Q3lDLFNBQXFDRCxPQUFTeEMsR0FBVHdDLFdBQVN4QztZQUU5QzVvQixPQUFPc3JCLEtBQUlqbUI7SUFvQlQsSUFGQWxLLFFBbEJLbXdCLEtBQUlqbUI7SUFIWDhsQixTQXFCRWh3QixHQUFBQTtJQXBCRmt3QixTQW9CRWx3QixHQUFBQTtJQUtKLE9BTElBO0dBTUg7WUFHQ293QixRQUFRQyxNQUFLQyxvQkFBbUJDLE1BQUtDO0lBZ0J2QztLQUFJOWdCLFNBaEJNMmdCLE1BQUtDO0tBd0JYM2dCLFNBeEI4QjRnQixNQUFLQyxvQkFnQm5DOWdCLElBQUFBO0lBOUNGc2dCLFNBOENFdGdCLElBUUFDO0lBckRGdWdCLFNBNkNFeGdCLElBUUFDO0lBS0osT0FiSUQ7R0FjRjtZQWdCQXZGLE9BQU9uSztJQUNULElBQUl1TixZQUNBM0wsUUFGSzVCOztLQUdDLEdBQUEsc0JBRE40QixNQUZLNUIsV0FDTHVOO0tBQUFBO0tBQ0EzTCxPQUFBQTs7R0FLRjtZQUdBa0wsUUFBUTlNLEdBQUUwTixXQUFVNUw7SUFBSSxPQUFBLHdDQUFkNEwsV0FBRjFOLE1BQUFBLE1BQVk4QjtHQUErRDtZQUVuRjJ1QixjQUFjendCLEdBQUU4QjtJQUNGLElBQVo0TCxZQUFZO0lBSGRaLFFBRWM5TSxHQUNaME4sV0FEYzVMO0lBR1YsSUFBSkYsUUFIWTVCOztLQUlOLEdBQUEsc0JBRE40QixNQUhZNUI7S0FGZDhNLFFBS0VsTCxNQUZBOEwsV0FEYzVMO0tBR2RGLE9BQUFBOztHQUlBO1lBVUY4dUIsSUFBSTF3QixHQUFFbXdCLEtBQUlqbUI7SUFFaUIsSUFEekJoSyxhQURJaXdCLEtBQUlqbUIsbUJBQU5sSyxNQUFBQTtJQXhHSmt3QixTQXdHSWx3QixNQUNGRTtJQTFHRjh2QixTQXlHSWh3QixHQUNGRTtJQUlKLE9BSklBO0dBS0U7WUFtQkp5d0IsUUFBUS9DO0lBQ1YsS0FEVUEsR0FFRjtJQUVNO0tBQ01GLE1BTFZFO2FBQUFBO0tBR0YxakI7S0FBTGltQjtLQUVZUyxRQXBJYi9yQixPQWtJQ3NyQixLQUFLam1CO0tBRU9rUCxPQUFBd1g7S0FBS0MsTUFBQW5EO0lBQ2hCO1VBRGdCbUQsS0F2SWxCYixTQXVJYVksT0FBQXhYLE9BV2IsV0FYYXdYO0tBS29CO01BTGZFLE1BQUFEO2dCQUFBQTtNQUdSMWY7TUFBTDRmO01BSFFDLGFBR1JELE9BQUs1ZixxQkFIR2lJLE1BQUF3WDtLQXRJYlYsU0FzSWE5VyxNQUFBNFg7U0FBQTVYLE9BQUE0WCxRQUFLSCxNQUFBQzs7R0FXUjtZQUdWeHJCLFFBQVFzckI7SUFDVixJQUFhM3FCLE1BREgycUIsVUFDRzV3QixJQUFBaUcsS0FBRXJCO0lBQ2I7S0FBVSxJQURHcXNCLGdCQUFGanhCLE1BQUFBLE9BQUU0RTtLQUVWLEdBQUEsc0JBRlE1RSxHQURINHdCLFFBR21CLE9BRmRLO0tBRTRCLElBRjlCN3FCLE1BQUFwRyxNQUFBQSxJQUFBb0csS0FBRXhCLE1BQUFxc0I7O0dBSUs7WUFHbEIzdkIsaUJBQWF0QjtJQUNmLElBQTJDa0ssb0JBRDVCbEs7Ozs7OzREQUM0QmtLOztHQUdTO1lBT3BEZ25CLGdCQUNBekQsR0FBc0MsT0FBdENBLEVBQXVDO1lBR3ZDL2EsTUFBT3RNLEtBQVNwRyxHQUFLLE9BQUEsc0JBQWRvRyxLQUFTcEcsR0FBb0I7WUFDcENteEIsTUFBTW54QixHQUFJLGVBQUpBLElBQXNCOzs7Ozs7WUFPNUJveEIsT0FjRUM7SUFDRixjQURFQTs7S0FHQSxJQURNQyxrQkFFSEMsVUFGR0Q7ZUFFSEMsOEJBQUFBO1VBakJjQyxNQWlCZEQ7OztXQVhVSixRQVdWSSxTQWpCY3Z4QixJQUFBd3hCO09BRW5CO1lBRmFDLFVBQU16eEI7a0JBQU55eEI7aUJBQUFBO1lBQU1yckIsTUFBTnFyQixZQU1FTixRQU5GTSxTQUFNenhCLElBQUFvRzs7O1VBTU5ILE1BT1hvckI7TUFORjttQkFEYXByQjs7WUFBQXlyQjtRQUFBenJCLFNBQUVrckI7WUFBRmxyQixNQUFBeXJCOzs7T0FLTixPQUxNenJCOzs7S0FZSCxPQUhGcXJCOztJQUlELE9BTkxEO0dBTU07WUFLUnpvQixVQUFVK29CLGFBQVkzeEI7SUFDeEIsSUFBSW9HLE1BMUJGZ3JCLE9BeUJzQnB4QixJQVF0QjR4QixVQVBFeHJCO2NBT0Z3ckIsc0JBSFM7V0FHVEE7O09BckpBLDhDQXFKQUE7T0FwSlEsSUFBSmh3QixRQW9KSmd3Qjs7UUFuSlUsR0FBQSxzQkFETmh3QixNQW9KSmd3QjtZQWxKTWxpQixLQUZGOU47UUFHSyxLQUFBLHNCQURIOE4sVUFBQUE7U0FDSixNQUFBO1FBQ0EsOENBRklBO1FBRkY5TixPQUFBQTs7OztXQWtKa0JzSSxvQkFFdEIwbkI7T0FEQSxPQUFBLDhDQURzQjFuQjs7V0FGakIwQyxJQUlMZ2xCLFlBSlUsT0FBQSxXQUpBRCxhQUlML2tCO2VBRE0sTUFBQTs7R0FLeUQ7WUFHcEVvUixZQUFVMWQsV0FBVU47SUFDdEIsSUFBSW9HLE1BckNGZ3JCLE9Bb0NvQnB4QixJQUV0QixRQURJb0c7Ozs7WUFHR3dHO1FBQUssd0JBQW9CLFdBSnBCdE0sV0FJTHNNOztRQURNLE1BQUE7O0lBRW1EO0dBQVk7WUFHMUVpbEIsS0FBSzd4QjtJQUNQLElBQUlvRyxNQTdDRmdyQixPQTRDS3B4QixJQUVQLFFBRElvRzs7OztZQUdHd0csY0FBSyxXQUFMQTs7UUFETSxNQUFBOztJQUVtRDtHQUFJO1lBR2xFa2xCLE1BQU05eEIsR0FBRyt4QjtJQUNYLElBQUkzckIsTUFyREZnckIsT0FvRE1weEIsSUFFUixRQURJb0c7Ozs7WUFHR3dHLGNBQUssT0FBTEE7O1FBRE0sTUFBQTs7SUFHWCxPQUFBLG9CQU5TbWxCO0dBTXNCO1lBRy9COWhCLFVBQVVqUSxHQUFJLE9BVGQ4eEIsTUFTVTl4QixtQ0FBeUU7WUFFbkZneUIsU0FBU2h5QjtJQUNYLElBQUlvRyxNQWhFRmdyQixPQStEU3B4QixJQUVYLE1BRElvRzs7OztRQUdROztRQURDLE1BQUE7O0lBRW1EO0dBQUk7WUFHbEU2ckIsUUFBUWp5QixHQUFJLFdBUlpneUIsU0FRUWh5QixHQUFvQjtZQUU1Qmt5QixLQUFLbHlCLEdBQUU4QjtJQUNULElBRzREdUUsUUE3RTFEK3FCLE9BeUVLcHhCLElBU0w0eEIsVUFMMER2ckI7Y0FLMUR1ckI7WUFBQUE7O1FBTDBEdnJCLGVBSm5EdkUsSUFXUCxPQWhMRTJ1QixjQThLRm1CLFNBVE85dkI7O1lBTWlCb0ksb0JBR3hCMG5CLFlBSG1CekIsTUFHbkJ5QjtRQUwwRHZyQixlQUpuRHZFO1FBUVksVUFBQTtRQUFuQixPQUFBO2lCQUFXO2lCQUZhb0k7aUJBQUxpbUI7aUJBTlpydUI7O1FBSUc7U0FBQTs7Ozs7OztrQkF6Q1ZrYyw0QixjQXlDMEQzWDs7Ozs7Ozs7O1FBRC9DLE1BQUE7O0lBQytDQSxlQUpuRHZFOztHQVd3QjtZQUcvQnF3QixlQUFlbnlCLEdBQUc0eEI7SUFDcEIsU0E3UWlEbkUsTztJQTRRN0JtRSxhQTVRNkJuRTtJQThRekMsSUFBSnJuQixNQXpGRmdyQixPQXVGZXB4QixJQVlmMGQsT0FWRXRYO2NBVUZzWDtZQUFBQTs7UUFDRyxHQTlNNkIsc0JBaU1ka1UsU0FBQUEsYUFFaEJ4ckI7UUFjRyxHQUFBLHNCQWhCYXdyQixTQVlsQmxVLE9BVkV0WCxTQUZnQndyQjtRQTNRaEI1QixTQTJRZ0I0QixZQUFBQTtRQTFRaEIxQixTQTBRZ0IwQixZQUFBQTtRQTNRaEI1QixTQTJRZ0I0QixTQUFBQTtRQXRLbEIsT0FwR0UxQixTQTBRZ0IwQixTQUFBQTs7UUFXbEI7O1FBUFcsTUFBQTs7SUFHWDtHQVV5QjtZQUd6QlEsWUFBWXB5QixHQUFFbXdCLEtBQUlqbUI7SUFDcEIsSUFBSTlELE1BNUdGZ3JCLE9BMkdZcHhCLElBWVo0eEIsVUFYRXhyQjtjQVdGd3JCO1lBQUFBOztRQUEyQyxPQWxNekNsQixJQWtNRmtCLFNBWmN6QixLQUFJam1COztRQVNKO1NBRFdpSCxzQkFJekJ5Z0I7U0FKbUJiLFFBSW5CYTtTQUhJUztXQTFRRmpDLFFBaVFZRCxLQUFJam1CLG1CQVFDNm1CLE9BQU01ZjtRQVB2Qi9LLFNBUUVpc0I7UUFFSixPQUZJQTs7UUFLVTtTQURUdndCLElBREw4dkI7U0FFSVUsWUExU0Z6dEIsT0E0UllzckIsS0FBSWptQjtTQWlCZHFvQixpQkFBSXp3QixHQUFJLE9BQUEsV0FIUnd3QixjQUdJeHdCLEdBQXlCO1NBQ2QsTUFBQTtRQUFuQjtVQUFXO1VBbEJPb0k7VUFpQmRxb0I7VUFKQ3p3QjtRQUtMLE9BSkl3d0I7O1FBWE8sTUFBQTs7SUFFRyxJQUFWRSxZQWpTRjN0QixPQTRSWXNyQixLQUFJam1CO0lBQ2hCOUQsU0FJRW9zQjtJQUVKLE9BRklBO0dBY0c7WUFHUEMsYUFBYXp5QjtJQUNmLElBQUlvRyxNQWxJRmdyQixPQWlJYXB4QixJQUVmLE1BRElvRzs7OztRQUVTLE1BQUE7O2dCQUMyQzs7SUFDcEM7R0FBSztZQUd2QnNzQixLQUFNMXlCLEdBQUVtd0I7SUFBNkQsVUFBQTtJQUExQixPQTlCM0NpQyxZQThCTXB5QixHQUFFbXdCLEtBQW1DO0dBQWlDO1lBVzVFd0MsT0FBSzN5QixHQUFFbXdCO0lBQ1Q7S0FBSXppQixZQUFZO0tBQ1p4RCxvQkFBb0Isd0NBRHBCd0Q7S0FFQXRILE1BdkpGZ3JCLE9Bb0pLcHhCO0tBV0w0eEIsVUFSRXhyQjtjQVFGd3JCO1lBQUFBOztRQTFPRWxCLElBME9Ga0IsU0FYT3pCLEtBRUxqbUIsb0JBVU07O1lBSmlCaUgsc0JBR3pCeWdCLFlBSG1CYixRQUduQmE7UUFSRXhyQixTQTdTQWdxQixRQTBTS0QsS0FFTGptQixtQkFNaUI2bUIsT0FBTTVmOzs7WUFGcEJyUCxJQUtMOHZCO1FBTFUsT0FBQTs7aUJBTFJsa0I7aUJBQ0F4RDtpQkFGS2ltQjtpQkFNRnJ1Qjs7UUFETSxNQUFBOztJQUZUc0UsYUFISytwQixLQUVMam1COztHQVU4RDtZQTRCaEUwb0IsUUFtQkdDLGFBQWFDO0lBQ1QsY0FBQSxzQkFESkQsYUFBYUM7Y0FDVDtJQUVhLElBakJlQyxnQkFqTW5DM0IsT0ErTUd5QixjQWR5QjFCLFlBQU80Qjs7Ozs7O1VBQWJDLE9BY05GOztNQWJoQjtXQWtCTUcsb0JBbkJnQkQ7T0FFdEIsVUFpQk1DO09BakJOLE9BaUJNQTs7OztjQW5CZ0JDLFNBbUJoQkQ7VUFuQmdCRCxVQUFNN0I7Y0FBTjZCLE9BQUFFOzs7Ozs7O1lBV2Isc0JBWGFGLE1BQWFELGdCQUFiQyxVQUFNN0I7O0lBc0IxQixJQVdFemhCLEtBakMrQnFqQjs7Ozs7Z0JBaUMvQnJqQjtjQUFBQTs7b0JBZEV1akI7aUJBQUFBOzthQTlRTSxJQUFSRSxRQTRSQXpqQixPQTNSQTBqQixRQTZRRUg7YUF2WUovQyxTQXlIRWlELE9BOFFFRjthQXZZSi9DLFNBMEhFa0QsT0EyUkExakI7YUF0WkZzZ0IsU0FzWkV0Z0IsSUEzUkEwakI7YUFHSixPQTlIRXBELFNBd1lJaUQsbUJBOVFGRTs7O2NBb1MyQjNDLHFCQXRCekJ5QztjQXNCbUIxQyxPQXRCbkIwQzthQS9SSnZDLElBNlNFaGhCLElBUXFCNmdCLE1BQU1DO2FBQ25COztpQkFUd0MxdUIsSUFkOUNteEI7YUFuQjZCRixtQkFtQjdCRTthQWdCRixPQWhVRnhDLGNBOFRFL2dCLElBQWdENU47Ozs7Y0FIeEJvSSxvQkFHeEJ3RixPQUhtQnlnQixNQUduQnpnQjtvQkFkRXVqQjtpQkFBQUE7O2FBMEJhLElBQVhJLFdBelROM0MsSUErUkl1QyxtQkFXaUI5QyxLQUFLam1CO2FBOUJPNm9CLG1CQTZDM0JNOzs7YUFQVztjQURZQyx1QkFsQnpCTDtjQWtCbUJNLFNBbEJuQk47Y0FtQkVPO2dCQTdYTnBELFFBcVhxQkQsS0FBS2ptQixtQkFPSHFwQixRQUFNRDthQXJDSVAsbUJBc0MzQlM7OztpQkFSNkNDLE1BWC9DUjthQW5CNkJGLG1CQW1CN0JFO2FBYWlCLFVBQUE7YUFBbkIsT0FBQTtzQkFBVztzQkFGYS9vQjtzQkFBTGltQjtzQkFBOEJzRDs7Ozs7O2dCQVgvQ1Isd0NBQUFBOztnQkFjRnZqQjtNQU5hLE1BQUE7O0tBSmMsTUFBQTs7a0JBSnpCdWpCOztlQW5CNkJGLG1CQW1CN0JFO0dBNkJpRjs7Ozs7Ozs7T0E3TXZGalY7T0FYQXBWOzs7O09BbUJBaXBCO09BaUJBNWhCO09BVEE2aEI7T0FXQUU7T0FRQUM7T0EvRUF2ZjtPQW9NQWtnQjtPQW5IQVY7V0FoR0U1d0IsV0FqRkE2SSxRQXNEQXdtQixTQW1CQXJyQjtPQW1CRjRyQjtPQXVIQWtCO09BcEJBRDtPQTBDQU07T0FtQkFFO09BWEFEO09BaEpBdkI7T0FPQUM7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN6TUFzQyxRQUFrQlYsTUFBeUIsT0FBekJBLEtBQXVDO1lBRXpEcHFCLFVBQVUrcUIsYUFBWTN6QjtJQUFJLE9BQTJCLGtDQUEzQzJ6QixhQUFZM3pCO0dBQTBDO1lBQ2hFc0IsVUFBVWhCLFdBQVVOO0lBQUksT0FBeUIsa0NBQXZDTSxXQUFVTjtHQUF3QztZQUM1RDZ4QixLQUFLN3hCLEdBQUksT0FBVSxrQ0FBZEEsR0FBeUI7WUFDOUI0ekIsU0FBT2huQixHQUFJLE9BQVEsa0NBQVpBLEdBQWdDO1lBQ3ZDaW5CLGNBQWM3ekIsR0FBSSxPQUFhLG1DQUFqQkEsR0FBNEI7WUFFMUNpUSxVQUFValE7SUFDWixPQUFBO29DQURZQTtHQUdrRTtZQUc1RTB5QixLQUFLMXlCLEdBQUVrTSxHQUFJLE9BQUEsbUNBQU5sTSxHQUFFa00sR0FBMkI7WUFFbENySCxPQUFPcUg7SUFDSSxJQUFUaE0sU0FBUztJQUNiLFdBRlNnTSxHQUNMaE07SUFDSixPQURJQTtHQUVVO1lBSVo0ekIsS0FBSzl6QixHQUFHa007SUFDUSxJQUFkMm1CLGNBQWM7SUFWaEJIO01BU0sxeUI7ZUFFSzRNO09BQWtELFVBQUEsV0FGcERWLEdBRUVVO09BQXlDLE9BQUEsbUNBRGpEaW1CO01BQ2dFO0lBQXBFLE9BRElBO0dBRWU7WUFHakJULFlBQVlweUIsR0FBRWtNLEdBQUVoQztJQUFvQixPQUFBLG1DQUF4QmxLLEdBQUVrTSxHQUFFaEM7R0FBb0U7WUFDcEZpb0IsZUFBZW55QixHQUFFK3pCO0lBQUksT0FBQSxtQ0FBTi96QixHQUFFK3pCO0dBQXFDOzs7Ozs7OztPQTNCdER6eUI7T0FEQXNIO09BRkE4cUI7T0FnQkE3dUI7T0FaQWd0QjtPQUlBNWhCO09BRkE0akI7T0FEQUQ7T0FTQWxCO09BU0FvQjs7T0FNQTFCO09BQ0FEOzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3REQTZCOzs7WUFDQUMsY0FBY2owQixHQUFFOEI7SUFBTyxVQUFBLHFCQUFUOUI7SUFBUyxhQUFnQixpQkFBekJBLEdBQUU4QjtHQUErQjtZQVF6Q295QixXQUFXbDBCLEdBQUksT0FBQSxpQkFBSkEsR0FBVTtZQUVyQm0wQjtJQUFhLFlBQ0wsT0FBQTtRQUNIdm5CO0lBQUssT0FBQSx3QkFBTEE7R0FBa0I7Ozs7Ozs7Ozs7OztZQUp2QnNuQixZQUVBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BVk5GOzs7T0FEQUQ7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDS0osU0FBQUk7SUFBQTtRQUNFQztrREFBQUE7R0FNa0I7Ozs7O3lDQVBwQkQ7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDRklFO0lBQXFCLFVBQUE7SUFBQSxPQUFBO0dBQWdCO0dBYTNCOzs7OztJQUFOeHZCOzs7Z0JBUkk5RSxHQUFHa007UUFHSSxJQUFUaE0sU0FBUztRQUNiOztVQUpNRjttQkFJTTRNO1dBQXNCLFVBQUEsV0FKekJWLEdBSUdVO1dBQXNCLE9BQUEsa0NBRDlCMU07VUFDbUM7UUFBdkMsT0FBQSxzQkFESUE7T0FFVTtzREFHWjRFOzs7Ozs7OztJQWlCSnl2Qjs7OztJQUtFQzs7Ozs7O0lBS0VDO0lBSGMsbURBR2RBO0lBUlksZ0RBR2REO0lBZUZFLE9BQU87WUFFUEMsT0FBS2psQixJQUFHQztJQUNWLE9BQU87O3NCQUFLelA7Y0FBVSxPQUFROzt1QkFEdkJ3UDtnQ0FDNEJrbEI7d0JBQU0sT0FBUTs7aUNBRHZDamxCOzBDQUM0Q2tsQjtrQ0FBTSxPQUFpQjtrRUFBakUzMEIsWUFBdUIwMEIsSUFBbUJDO2lDQUErQjt1QkFBQzthQUFDO0dBQUM7R0FHM0U7OztJQUFBLCtDQUpYRjtZQWFBRyxzQkFBOEIsU0FBRTtZQUs5QnRlLGFBQW1CdWU7UUFBUkMsZUFBSGgxQjtJQUFnQixXQUFoQkEsWUFBMEJ5dEIsR0FBSyxPQUFHLFdBQXZCc0gsSUFBdUIsV0FBL0JDLElBQXVCdkgsSUFBYzs7R0FIdEMsaUJBR1ZqWDtZQVNJeWU7SUFBVTtJQUFBO21CQUNQO1NBQ1dDLG1CQUFUdEQsc0JBQUg1eEI7S0FDTiwyQkFETUEsR0FBRzR4QjttQkFBU3NEOztHQUVOO0dBVkUscUJBTVZEO1lBUU5FLE9BQU9uMUIsR0FBRWtNLEdBQUksV0FBTmxNLEdBQUVrTSxHQUFtQjtZQUU1QmtwQixRQUFRQztJQUNWLElBQUluMUIsU0FBUyxzQ0FDVG8xQjthQUNBQztLQUNDLFVBQUEsa0NBSERyMUI7S0FHQyxVQUFBO0tBRUQsMEJBSkFvMUI7O21CQU93Q3B2QjtPQUFMLElBQXNCZ0csY0FBSGxNLGNBQ3pDLFFBQUEsaUJBRHlDQTttQkFFckMsT0FGdUJrRztXQUcxQnBFO09BQUssV0FBQSxXQUhzQ29LLEdBRzNDcEssSUFIMEJvRTtNQUdYO01BSHpCLFVBQUEsMEJBVEVtdkI7TUFTRixPQUFBO0tBRzBCO0tBTGIsT0FBQSxrQ0FOakJuMUI7SUFXZ0M7SUFFeUI7S0FBQSxNQUFBO0tBQXpEZ0ssb0JBQStCO2lCQUVldEY7S0FBTCxJQUFvQjVFO0tBQy9EO2FBRCtEQTthQUN0RDsyQ0FEc0RBLEdBYjdEdTFCLE9BV0FyckI7YUFFOEN0RjtJQUNlO0lBZjdEMHdCLGlCQWNELDBCQWhCT0Q7SUFrQlYsT0FBQSxrQ0FqQkluMUI7R0FpQlk7WUFHVnMxQixjQUFjSDtJQUNwQixJQURvQkksWUFBQUo7SUFDcEI7VUFEb0JJO01BRVosTUFBQTtLQUVDO01BSldDLFlBQUFEO2NBQUFBO01BR0x2cEI7TUFBSGxNO01BQ0gsVUFBQSxpQkFER0E7cUJBR0Y4QixnQkFBSyxPQUFBLFdBSEFvSyxHQUdMcEs7U0FOVTJ6QixZQUFBQzs7R0FNRDtZQUdqQkMsT0FBT047SUFDVCxJQUFJbjFCLFNBQVMsc0NBQ1RvMUI7YUFDQUM7S0FDQyxVQUFBLGtDQUhEcjFCO0tBR0MsVUFBQTtLQUVELDBCQUpBbzFCO0tBS2lCLFVBaEJmRSxjQVNHSDtLQU9ZLE9BQUEsa0NBTmpCbjFCO0lBTXlDO0lBRWdCO0tBQUEsTUFBQTtLQUF6RGdLLG9CQUErQjtpQkFFZXRGO0tBQUwsSUFBb0I1RTtLQUMvRDthQUQrREE7YUFDdEQ7MkNBRHNEQSxHQVI3RHUxQixPQU1BcnJCO2FBRThDdEY7SUFDZTtJQVY3RDB3QixpQkFTRCwwQkFYTUQ7SUFhVCxPQUFBLGtDQVpJbjFCO0dBWVk7WUFHZDAxQixNQUFNQyxJQUFHM3BCO2lCQUFnQ2xNLEdBQUssV0FBTEEsR0FBaENrTSxHQUErQztJQUFwQyxPQWhCcEJ5cEIsT0FnQm9CLDBCQUFkRTtHQUFvRDtZQUMxREMsSUFBSUQsSUFBSyxPQURURCxNQUNJQyxrQkFBSyxjQUFjO1lBQ3ZCRSxTQUFTRixJQUFLLE9BRmRELE1BRVNDLGtCLFlBQXdDO1lBRWpERyxNQUFLM1ksT0FBT3RPLElBQUtrbkI7YUFDWEMsS0FBS3h2QjtLQUNYLEdBQUcscUJBRFFBLEdBRENxSSxLQUdQLE9BQUE7eUJBR0gsT0FMSW1uQixLQUFLeHZCLFdBS0c7S0FERSxVQUFBLFdBTEN1dkIsTUFDTnZ2Qjs7SUFLSTtJQUVqQixPQVBRd3ZCLEtBREQ3WTtHQVFHO1lBR1I4WSxzQkFBc0JDLE9BQU1scUI7SUFDOUIsT0FBTzs7c0JBQUttcUI7dUJBQ0ZILEtBQUtFOztnQkFFUDtxQkFDTUE7aUJBQVMsT0FIYkYsS0FHSUU7O29CQUNFbDJCO2dCQUFVLE9BQUEsa0NBTGRtMkIsVUFLSW4yQjtlQUFtQztlQUgvQyxVQUFBLFdBSDBCZ00sR0FFZmtxQjtlQUVQLE9BQUE7Y0FFMkM7cUJBSnpDRixLQUZjRTthQVFaO0dBQUM7WUFHWEUsUUFBUUYsT0FBTWxxQjtJQUNoQjtLQUFBO0tBQUE7T0FaRWlxQjtTQVdRQztrQkFDdUJBO3VCQUN2QkEsT0FDUixzQkFEUUEsT0FDSztVQURHLFVBQUEsV0FGRmxxQixHQUNpQmtxQjs7O0lBQWpDLE9BQUE7R0FHaUI7R0FHbkIsSUFBQWhDO1lBS0lwdkIsS0FBS2hGLEdBQUdpRixNQUFNaUg7SUFDaEIsT0FBTzs7c0JBQUtoTTt1QkFDRmcyQixLQUFLbDJCLEdBQUV1MkI7ZUFDYixLQURXdjJCLEdBRUgsT0FBQSxrQ0FIQUUsUUFDS3EyQjttQkFHTkMsS0FISXgyQixNQUdUeXRCLElBSFN6dEI7NEJBR2dCdTJCLEdBQUssT0FIMUJMLEtBR0NNLElBQW9CRCxHQUFjO2VBQTVCLFVBQUEsV0FMRHJxQixHQUVDcXFCLEdBR1g5STtlQUFxQixPQUFBO2NBQWtCO3FCQUhuQ3lJLEtBRkhsMkIsR0FBR2lGO2FBT0c7R0FBQztZQUdad3hCLE9BQU96MkIsR0FBR2tNO0lBQUk7S0FBQTtLQUFBO09BVmRsSDtTQVVPaEY7O2tCQUErQjAyQixJQUFHOXBCO3VCQUFpQjJwQixHQUFLLFdBQUxBLEdBQXBCRyxJQUFnQztVQUF4QixVQUFBLFdBQXBDeHFCLEdBQStCVTtVQUFhLE9BQUE7U0FBZ0I7SUFBeEQsT0FBQTtHQUFzRTtZQUNwRitwQixJQUFJQyxJQUFLLE9BRFRILE9BQ0lHLGtCQUFLLGNBQWtCO1lBQzNCQyxTQUFTRCxJQUFLLE9BWmQ1eEIsS0FZUzR4Qix1QkFBaUNFLEdBQUssT0FBTEEsRUFBTSxHQUFDO1lBQ2pEQyxHQUFHdEo7SUFBSSxhQUFVQSxHQUFLLFdBQUxBLEdBQVM7SUFBYixPQUFBLHFCQUFWQTtHQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTFMMUI2Rzs7Ozs7Ozs7O09BOEJBQzs7T0FvQkFHO09BRUFDOztPQWFBRzs7O09Bc0JBSztPQUVBQztPQXFCSUk7T0FTSkc7T0FnQkFDO09BQ0FFO09BQ0FDO09BRUFDO09BV0FHO09BV0FHO09BT0psQztPQUtJcHZCO09BVUF5eEI7T0FDQUU7T0FDQUU7T0FDQUU7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3pMQW5EOztJQUpBdUI7SUFDQVE7SUFDQWI7SUFDQVI7SUFFQTVCOzs7Ozs7Ozs7Ozs7O09BTEF5QztPQUNBUTtPQUNBYjtPQUNBUjtPQUNBVjtPQUNBbEI7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDREpweEIsVUFBSzAxQixVQUFMQzs7SyxZQUhFO0tBREE7TUFBQUM7TUFBQUMsV0FBQSxpQ0FJR0gsVUFKSEU7S0FBQSx3QkFBQUM7O0lBSUYsT0FBQSwyQkFBQUY7R0FBeUM7WUFFckNydUIsaUJBQVk1STs7S0FFWixZQUZZQTtpQkFHRjtTQUNGZ3pCO0tBQWUsR0FBQSxrQ0FBZkE7S0FBUSxNQUFBO0lBQTJCO2lCQUhKb0U7SyxPQUgzQzkxQiwwQixjQUcyQzgxQjs7SUFBSyxPQUFBLG1DQURoQ3AzQjtHQUlnQztZQUc1QzZFO0lBQ0YsSUFBSW11QixPQUFPLHNDQUNQaHpCLFlBREFnekI7SUFFSixXQURJaHpCLEdBQ0Qsa0NBRkNnekI7R0FFYTtZQUdmaEIsU0FBU2h5QixHQUNYLE9BRFdBLGFBR0k7WUFHYmt5QixLQUFLbHlCLEdBQUU0TTtJQUNULFlBRE81TTs7U0FFQzBHO0tBRkQxRztLQUlMLE9BQUEsa0NBRk0wRyxHQUZDa0c7Ozs7O0dBSytDOzs7Ozs7O1VBMUIxRHRMLFdBRUlzSCxXQU9BL0QsUUFNQW10QixVQU1BRTs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDbEJFNXdCLFVBQVVoQixXQUNDTjtJQUFiLElBQWE4MkIsSUFBQTkyQixHQUFFa0c7SUFDYjtLQUFNLFlBQUEsc0NBREs0d0I7aUJBRUQsV0FBSyxtQ0FGRjV3Qjs7bUJBR0MsV0FBSywwQkFITkE7S0FJa0I7TUFKcEJFO01BSUd3RztNQUpEekcsV0FJbUIsV0FMdEI3RixXQUtJc00sSUFKRDFHO01BQUY0d0IsSUFBQTF3QjtNQUFFRixLQUFBQzs7R0FNTjtZQUdQK1MsS0FBS2xaLEdBQUksT0FBSkEsRUFBSztHQWpCQSxpQkFPVnNCLFdBVUE0WDtZQU9GOEUsbUJBQVloZTtJQUNMOztPQUFBLGtDQURLQTs7O0lBQ2Q7R0FBc0U7WUFHcEU2RSxjQUFZLFdBQVMsc0NBQWdCO1lBQ3JDd3lCLFFBQVFyM0IsR0FBSSxPQUFVLGtDQUFkQSxNQUFzQjtZQUM5QnMzQixVQUFVdDNCLEdBQUksT0FBYSxrQ0FBakJBLE1BQXlCO1lBRW5DdTNCLFNBQVN2M0IsR0FBRThCO0lBQ2IsS0FIRXcxQixVQUVTdDNCLElBQ29ELE9BQUEsa0NBRHBEQSxNQUFFOEI7OztHQUNzRTtZQUdqRjAxQixVQUFVeDNCLEdBQUksT0FKZHUzQixTQUlVdjNCLE1BQWtCO1lBQzVCeTNCLGNBQWN6M0I7SUFBVyxjQVB6QnMzQixVQU9jdDNCO2lCQUE4QixrQ0FBOUJBO0dBQW9EO1lBRWxFMDNCLE9BQU8xM0IsR0FBRThCO0lBQ0EsSUFBUG9YLE9BQU87SUFSVHFlLFNBT092M0IsT0FBRThCLEdBRVUsa0NBRGpCb1g7SUFES2xaLE9BQ0xrWjs7R0FFVTs7Ozs7Ozs7T0FsQlo4RTtPQUlBblo7T0FXQTZ5QjtPQUhBRjtPQUNBQztPQVBBSDs7T0FEQUQ7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQzJESWxKO0lBQ0F3SjtJQUNBQztJQUNBendCO0lBQ0Ewd0I7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXRGSmx2QixVQUFVNUk7O0tBR1Ysb0I7eUI7eUI7eUI7Y0FEVWtNLEVBTWdCN0o7TUFBYyxHQUFPLGtDQUFyQkE7TUFBYyxNQUFBO0tBQWlDO0tBTjNELFdBQUEsOEJBRkpyQyxHQUVBa007eUI7eUI7eUI7S0FLSSxPQUFBOztJQUlVO0lBVmtCLE9BQUEsbUNBRGhDbE07R0FXZTtZQUd6QndjO0lBQW9FLFdBQUE7SUFBQSxPQUFBO0dBQU87WUFDM0VyRjtJQUF1QyxXQUR2Q3FGO0lBQ3VDLE9BQUE7R0FBOEI7WUFLckV1YixPQUFPLzNCLEdBQUFBLG1CQUE0QjtZQU9uQ2c0Qix1QkFBdUJoNEIsR0FBR2tNO0lBUDFCNnJCLE9BT3VCLzNCO0lBRVQ7S0FBWjBOLFlBQVk7S0FDWnhELG9CQUFvQix3Q0FEcEJ3RDtLQUVBdXFCO2FBQ0FDLE1BQU1scUI7S0FDUixZQUZFaXFCOztnQkFJYztNQURHLE1BQUE7O1NBRVRFO0tBQ1IsSUFBSyxXQUFBLFdBVm1CanNCLEdBS2xCOEIsTUFLRDtXQUNGb3FCO1VBQUFDLGdDQUFBRDtNQVBISDtNQVNHLHlCQWJrQmo0QixNQVNibTRCO01BUUwsTUFBQSw0QkFOQUU7O0lBTWdCO0lBYm5CSjtTQWdCTyx5QkFwQmNqNEIsVUFHckJrSyxtQkFFQWd1Qjs7R0FlcUU7WUFHdkVJLDRCQUE0QnQ0QjtJQTlCNUIrM0IsT0E4QjRCLzNCO0lBRW5CLElBQVB1NEIsT0FBTztJQUZtQnY0QixXQUUxQnU0QixNQUYwQnY0QjtJQUk5QixPQUFBLGlDQUZJdTRCO0dBRWE7WUFHZkMsZUFBZXg0QixHQUFJLHlDQUFKQSxNQUEwQjtZQUV6Q3k0QiwwQkFBMEJ6NEIsR0F2QzFCKzNCLE9BdUMwQi8zQixJQUM1QixPQUhFdzRCLGVBRTBCeDRCLEdBRVo7WUFHZDZFLE9BQVFyQyxNQUFNZ0UsTUFBTS9EO0lBQ1QsSUFBVGdFLFNBbERGMFE7SUFtRG1DLE9BQUEsK0JBRjNCM1UsTUFBTWdFLE1BQU0vRCxVQUNsQmdFO0dBQzhDO1lBVzlDd0gsVUFBVWpPLEdBQUksT0FBSkEsS0FBZTtZQUN6QjA0QixZQUFZMTRCLEdBQUksT0FBSkEsS0FBUztHQXNHM0I7Ozs7SUFHc0U7S0FJaEUsTUFBQTtJQW5FUTtLQWdFSUE7S0FuRW1DdUgsWUFtRW5Ddkg7S0FuRWdCZ0gsb0JBbUVoQmhIO0tBbkVLaU8sWUFtRUxqTztLQW5FQWdPLE1BbUVBaE87S0E5RFIyRyxJQUZJLHlCQUh1Q1k7S0FFM0M5RSxvQ0FHQWtFLGdCQUFBQTtLQUVKLFVBUCtDWTs7S0FjM0M7TUFKSy9FO01BR0RtMkIsU0FIQ24yQixVQUFBQTtNQUlMOztXQWNRLDJCQWxCSEE7V0FvQkEsMkJBcEJBQSxTQUFBQSxTQUdEbTJCLFFBQUFBO01BTkpycUI7O1NBQUFBO0lBOEJKLEdBOUJJQTtTQWdDR0QsUUFoQ0hDO1FBTEE3TDs7T0F1Q2FRLFNBdkNiUjtrQkF1Q3VCLDJCQUFWUSxRQUZWb0w7O3FCQUFlLDJCQUFmQTtTQXRDTHVxQjs7WUFDRW4yQjs7TUFzQ1NvMkIsU0F0Q1RwMkI7TUFERm0yQixnQkF1Q3FCLDJCQUFWQzs7U0F2Q1hEO0lBMENKLEdBM0NtQjNxQjs7TUErQ1I2cUIsY0EvQ1E3cUI7TUE5QmY4cUIsY0E2RW9CLDhCQUFiRDs7U0E3RVBDOzs7UUFBQUE7VUFJUTdELE9BSlI2RCxnQkFJRXJwQixLQUpGcXBCO01BSWtCLEdBQUEsNEJBQWhCcnBCLElBTkZtb0I7OztXQU1RM0M7YUFFRzhELFNBRkg5RCxTQUVIdmxCLEtBRkd1bEI7U0FFYSxHQUFBLDRCQUFoQnZsQixJQVBMbW9COzs7Y0FPV2tCO2dCQUVHQyxTQUZIRCxXQUVIRSxLQUZHRjtZQUVhLEdBQUEsNEJBQWhCRSxJQVRScEIsWUFTY3FCLFNBQUFGOztlQUFBRSxTQUZISDs7Y0FFR0ksU0FBQUQ7Ozs7WUFBQUMsU0FKTmxFOztXQUZObUUsU0FNWUQ7Ozs7U0FOWkMsU0FGRk47O0lBYUksWUFBQSwwQkFYRk07Ozs7VUFZSUMsbUJBQU5DO01BQWdCLEdBQUEsNEJBQWhCQSxNQXBCQXBMO1VBb0JNbUw7WUFFR0UsU0FGSEYsV0FFSEcsT0FGR0g7UUFFYSxHQUFBLDRCQUFoQkcsTUF0Qkh0TDs7WUFzQlNxTDtjQUVHRSxTQUZIRixXQUVIRyxPQUZHSDtVQU9FOztZQUpBLDRCQURMRyxNQXZCTmhDOzs7YUEwQlcsNEJBSExnQyxNQXRCTi9CO2tCQTJCVyw0QkFMTCtCLE1BckJOeHlCOztxQkEyQndCLDBCQU5adXlCOzs7b0JBT0QsMEJBVEZGOzs7O2tCQVVELDBCQVpGRjs7OztnQkFaSkQ7O0lBNkVKLElBTkVPLGNBTUYsNEJBaERFaEI7SUFrREosU0FBSWlCLGtCQUVBak0sR0FGb0IsT0FFcEJBLFFBQUFBLE9BQXFCO0lBSXRCO0tBQUEsVUFOQ2lNLGtCQVJBRDtLQWdCQyxPQVJEQyxrQkFuRDBCN3lCO0tBd0Q1Qjh5Qjs7O01BRzBDanpCO01BSDFDa3pCOzs7Z0VBRzBDbHpCO1NBSDFDaXpCOztTQUFBQyxVQUFBRDs7O01BQ2dDenpCO2tEQUFBQSxRQURoQzB6Qjs7Z0JBQUFBO1FBV3dCMzRCLHFDQW5FWjRNO2FBbUVZNU0sd0JBQUFBLG1CQUFBd3NCLElBQUF4c0IsZ0JBQUF3c0I7OztHQUdYO0dBSmpCO1lBT0VvTSxjQUdBaHNCO0lBRkYsR0FFRUEsd0JBQU8sT0FBUEE7UUFEWThwQixRQUNaOXBCO0lBRHFCLE9BQVQ4cEI7R0FDRjtZQUdWdmIsU0FBU3ZjLEdBQUk0dkIsS0FBa0I1aEI7SUFDakMsR0FEZTRoQixTQUFZQyxNQUFaRCxRQUFBM2hCLFlBQVk0aEIsY0FBWjVoQjtPQUFrQkQ7U0FDN0JELFFBRDZCQzs7ZUFBbEJDO1VBS1A2cUIsY0FFUSxpQ0FQaUI5cUI7O1VBUW5CdW9CLElBUkN0b0IsY0FLUDZxQixrQkFHTXZDO0tBRWM7TUFBcEJ2dkIsb0JBaE1Od1Y7TUF1TEV6Tyw2QkFENkJDLEtBS3pCOHFCLGFBS0E5eEIsbUJBVkdoSDs7SUFhWDs7Ozs7VUFBZ0ZpNkI7VUFBQUM7VUFBQXo1QixpQ0FBQXk1QjtVQUFBeDVCLGlDQUFBdTVCO3dCQUFBeDVCLGNBQUFDOztLQUFqRDt5REFicEJWLEdBQ1ArTjs7SUFETy9OO0lBZUssSUFBWjBOLFlBQVksNENBQ0h0SCxNQWhCRnBHO0lBaUJUO0tBQUEsa0NBRFdvRyxRQWZUMkg7S0FlUzNILFNBRUs7aUJBRkxBOztTQUFBSyxtQkFBQUwsTUFBQUs7OztLQWdCK0I7TUFBQSxPQUFBO01BQVosT0FBQTtLQUFZLE9BQUE7Y0FBN0IsK0NBL0JYc0g7Ozs7Ozs7VUFzQjJFb3NCO1VBQUFDO1VBQUFDLGlDQUFBRDtVQUFBRSxpQ0FBQUg7d0JBQUFFLGNBQUFDOztLQUF6RTs7O1dBUE9sMEIsS0FmVDJIOzs7O0tBdUJzQyxJQUF5QjdCLGNBQW5CaEM7S0FDMUMsT0FBQTs7Y0FWRndEO2NBUzRDeEQ7Y0FBbUJnQztjQXZCL0Q2QjtJQXdCc0Q7SUFEdEQsd0JBUlMzSDtrQkFVZ0NteUIsTUFBUSxPQVZyRCxpQ0FVNkNBLE1BekJ6Q3hxQixPQXlCcUU7SUFBakMsT0FBQSx5QkFWM0IzSDtHQWtCUDtZQUlGbTBCLGVBQWVDLFNBQVF0dUI7O0tBRWpCLFlBQUEsNEJBRmlCQTs0QkFHbEJ1aEIsY0FBSyxXQUFMQTtTQUNHemY7S0ExQ1Z1TztPQTJDYSw4Q0FMSWllLGVBSVB4c0I7S0FDTjtJQUNRO0lBTHNCLFdBQUE7SUFBbUIsT0FBQTthQUExQywrQ0FETXdzQjtHQU1KO1lBS1hDLFdBQVl0ekIsU0FBU0QsVUFBU2dGO0lBQ2hDO0tBQ2dDLE9Bek9oQ3NRO0tBd09JcVM7T0FDRjs0Q0FGWTFuQixTQUFTRDtJQUl2QixPQWZFcXpCLGVBWUUxTCxhQUQ0QjNpQjtHQUlKO1lBRzFCd3VCLE9BQVN2ekIsU0FBU0QsVUFBU2dGO0lBQ3ZCLFlBUkp1dUIsV0FPU3R6QixTQUFTRCxVQUFTZ0Y7dUJBRWYsT0FBQTtRQUNUNHFCO0lBQUssT0FBTEE7R0FBTTtZQUdUNkQsU0FBVXh6QixTQUFTRCxVQUFTZ0Y7SUFDeEIsWUFkSnV1QixXQWFVdHpCLFNBQVNELFVBQVNnRjt1QkFFaEI7UUFDVHVoQjtJQUFLLFdBQUxBO0dBQVc7WUFHZG1OLFNBQVF6ekIsU0FBU0QsVUFBU2dGO0lBQzVCLGFBcEJFdXVCLFdBbUJRdHpCLFNBQVNELFVBQVNnRjtHQUdmO1lBR1gydUIsbUJBQW9CMXpCLFNBQVNELFVBQVM0ekIsTUFBS3JOO0lBQzdDO0tBQUkvZixZQUFZO0tBSVgsT0FBQSx3Q0FKREE7S0FHRjtPQUFBOzRDQUpvQnZHLFNBQVNEO0lBRS9CLE9BQUEsd0NBREl3RyxpQkFEb0NvdEIsTUFBS3JOO0dBUzFDO1lBR0QvVCxTQUFVdlMsU0FBU0QsVUFBUzR6QjtJQUFPLE9BWm5DRCxtQkFZVTF6QixTQUFTRCxVQUFTNHpCO0dBQW9EO1lBSzlFQztRQUF3QnIwQixjQUFObzBCO0lBQVcsY0FBb0JsdUIsR0FBSyxPQUFBLGtDQUE5QmxHLEdBQXlCa0csR0FBa0I7SUFBakMsV0FBQSxXQUFoQmt1QjtJQUEwQixPQUFBOztZQUg5Q0UsV0FJRzd6QixTQUFTRCxVQUFTNHpCO0lBQ2IsSUFBSnAwQixJQUFJO0lBbkJSbTBCLG1CQWtCRzF6QixTQUFTRCxVQURWNnpCLHNCQUNtQkQsTUFDakJwMEI7SUFDSixPQUFBLGtDQURJQTtHQUVPO1lBR1h1MEIsMkJBQTJCL3VCO0lBQzdCO0tBQUl3QixZQUFZO0tBQ1p4RCxvQkFBb0Isd0NBRHBCd0Q7a0JBRU9kO0tBQUssT0FBQTsyQ0FGWmMsV0FDQXhELG1CQUZ5QmdDLEdBR2xCVTtJQUFzRDtJQUEzRCxPQUFBO0dBQTREO1lBR2hFc3VCLDZCQUE0Qmh2QjtJQUM5QjtLQUFJd0IsWUFBWTtLQUNaeEQsb0JBQW9CLHdDQURwQndEO0lBRUosU0FBSXl0QjtTQUFxQnowQixjQUFIa0csY0FBSFY7S0FBVyxhQUFnQnRLLEdBQUssT0FBQSxrQ0FBMUI4RSxHQUFxQjlFLEdBQWtCO0tBQTdCLFVBQUEsV0FBaEJzSyxHQUFHVTtLQUFtQixPQUFBOztpQkFDOUJBO2tCQUNZbEc7TUFDbkIsT0FBNEQ7O2VBTDVEZ0g7ZUFDQXhEO2VBQ0FpeEI7bUJBSDBCanZCLEdBSW5CVSxHQUNZbEc7S0FDa0Q7S0FEdkQsT0FBQTtJQUN3RDtJQUZwRSxPQUFBO0dBRXFFO1lBTTNFMDBCLFlBQVlDLFFBQVFudkI7YUFDZGdxQixLQUFLbUY7O01BRVAsWUFDSztVQUNFQSxtQkFBSHY1QjtNQUpGbzBCLEtBSUttRjtNQUNULE9BQUEsV0FOa0JudkIsR0FLWnBLO0tBRUg7S0FMTCxVQUFBLG9DQURXdTVCO0tBRVAsT0FBQTtJQUlDO0lBRVAsT0FSUW5GLEtBRE1tRjtHQVNIO1lBWVAxbEIsU0FBUW5ULE1BQU1nRSxNQUFNL0QsTUFBTTB0QixLQUFJamtCO0lBSWhDO0tBQUkvRSxVQUFVLCtCQUpKM0UsTUFBTWdFLE1BQU0vRDtLQUtsQjY0QixPQWhTSmhELDRCQStSSW54QjtLQUVBNHZCO29CQU53QjVHO1VBakQxQjZLLGVBcURFN3pCLGFBSjRCK0U7VUFqRjlCd3VCLFdBcUZFdnpCLGFBSjRCK0U7SUFXaEMsV0FMSTZxQixJQURBdUU7R0FNUTtZQUlaQztJQUNFQyxlQUNBdDdCLFFBQ0FvN0IsTUFDQUc7SUFFRCxVQUFBLHdDQUxDRDtJQUtEO2VBRUQ7NkNBUEVBLGVBQ0F0N0I7Y0FNRixXQUpFdTdCLDBCQURBSDs7R0FNNEI7R0FLOUI7SUFERUk7O2dCQUNPMXRCO1FBQ1A7NERBRE9BOzs7Ozs7O09BQzJFO0lBSHhFLGFBQ1YwdEI7WUFtQkZDLFNBQ0duNUIsTUFDQWdFLE1BQ0NvcEIsb0JBSUZ4QjtJQUVKLEdBTk13QixTQUFPQyxNQUFQRCxRQUFBbnRCLE9BQU9vdEIsY0FBUHB0QjtJQU1OO1NBTG1DbTVCLGdCQUFqQkMsaUJBQWlCRDs7U0FBakJDO0lBS2xCLFlBSllDLGdCQUFOM0wsTUFBTTJMLGdCQUFOM0w7SUFJTixZQUhhNEwsZ0JBbkJLN0csT0FtQkw2RyxnQkFuQks3RztJQXNCYTtLQUFBLFFBeEQzQnZmLFNBZ0RDblQsTUFDQWdFLFVBQ0MvRCxPQUVBMHRCLEtBRUYvQjtLQUVrQmtOO0tBQWhCdkU7Y0F0Qlk3QjttQkFBQUE7VUF1QmQ4Rzs7TUFqQlc7T0FBVHYxQixTQXRXSjBRO09BdVhFNmtCLHNCQWhCRWh1QixLQUFPLE9BbExYdU8sU0FpTEk5VixXQUNBdUgsS0FBMEM7O0tBRWpDO01BRFA5QixJQVJVZ3BCO01BU1pwdUIsV0F6V0pxUTtNQXVYRTZrQjtpQkFiRWh1QjtTQUFPLE9BakhUNHNCO3NCQWdIRTl6Qjs7a0NBQ3lDLE9BQWxDLFdBRkxvRixHQUVGOEIsS0FBOEM7UUFBQzthQWNqRHl0Qix5QkFBeUJILE1BQU8sT0EvRWxDRixZQStFMkJFLE1BRHpCVTtJQUM4RDtJQUs1QyxPQWhKbEJ0Qjs7OztjQWlKRixHQUFHLHNDQVJDM0Q7ZUFFRjBFLHlCQUZrQkg7ZUFXWCxjQUFJLHNDQVhUdkU7ZUFXSyxPQUFBOztjQUVxQjtlQUFBLFFBQUE7ZUFBVDcyQjtlQUFmczdCOzJCQUNTUztlQUNYLE9BeERKVjt3QkFzRE1DLG1CQUNTUyxNQWRLWCxNQUVsQkc7Y0FpQjRCO2NBTDVCLDBDQWRFMUU7O2VBb0JzQjtnQkFDYixNQUFBO2VBRVA7Z0JBRFd1RTtnQkFBTHR0QjtnQkFDRkQsUUE1Qk04dEIsaUJBbE1oQjdCLGNBNk5ZaHNCLE9BQUFBO2VBRU4sT0FqRU51dEI7d0JBc0RNQyxtQkFVSXp0QixRQURPdXRCLE1BcEJmRztjQTBCK0I7Y0FSMUIsVUFBQSxvQ0FwQmFIO2NBb0JsQjtjQUFBLE9BUG1CcDdCO2FBZ0JaO0dBQUM7WUFHVmc4QixrQkFBbUIxNUIsTUFBTWdFLE1BQU9vcEIsS0FBNkI4SSxhQUFheEQsTUFBS2hwQjtJQUNqRixHQURrQzBqQjtTQUFPQyxNQUFQRCxRQUFBbnRCLE9BQU9vdEI7O1NBQVBwdEI7O3NCO0lBQ2xDLFVBMUNFazVCLFNBeUNtQm41QixNQUFNZ0UsVUFBTy9ELE9BQTZCaTJCLGtCQUFheEQsTUFBS2hwQjs7R0FDRztZQUdsRml3Qix1QkFDRzM1QixNQUNBZ0UsTUFDQ29wQixLQUNEOEksYUFDQXhELE1BQ0RocEI7SUFFSixHQUxNMGpCO1NBQU9DLE1BQVBELFFBQUFudEIsT0FBT290Qjs7U0FBUHB0QjtJQUtOOztLQUFBLE1BWkV5NUIsa0JBS0cxNUIsTUFDQWdFLFVBQ0MvRCxPQUNEaTJCLGFBQ0F4RCxNQUNEaHBCO0lBRUosT0FBQTtHQUEwRTtZQUd4RWt3QixRQUFTNTVCLE1BQU1nRSxNQUFPb3BCLEtBQTJCOEksYUFBYXZJLEtBQUsrRSxNQUFLaHBCLEdBQUdtd0I7SSxHQUFyRHpNLFNBQU9DLE1BQVBELFFBQUFudEIsT0FBT290QixjQUFQcHRCO2lCQUNmYjtrQkFDRDA2QjtNQVVSLFNBWFMxNkI7V0FlSjI2QixNQWZJMzZCO2dCQUNEMDZCLE9BY1MsT0FBWkM7V0FERy9NLElBYkE4TTs7O1dBV0F0dUIsTUFaQ3BNO2dCQUNEMDZCOztTQVdXRSxjQVhYRjs7c0RBV1dFOzBEQUFYeHVCOzs7OztXQUVBd2hCLElBRkF4aEI7O01BRTRCLE1BQUEsNEJBQTVCd2hCO0tBQ1U7S0FiaEIsVUEzREFtTSxTQXdEU241QixNQUFNZ0UscUJBQW9EMHVCLE1BQVFtSDs7O0lBQ2hFLFVBekRYVixTQXdEU241QixNQUFNZ0UsVUFBTy9ELE9BQTJCaTJCLGFBQWF2SSxLQUFLK0UsTUFBS2hwQjs7O1lBbUJ4RXV3QixjQUFlajZCLE1BQU1nRSxNQUFNL0QsTUFBS3lKLEdBQUUwbEI7SUFDcEM7S0FBK0IsUUEzSDNCamMsU0EwSGFuVCxNQUFNZ0UsTUFBTS9ELGVBQUt5SjtLQUNab3ZCO0tBQWhCdkU7SUFoSkpxRSxZQWdKb0JFLE1BRGMxSjtJQUVwQyxPQURNbUY7R0FFSjtZQUdBMkYsYUFBY2w2QixNQUFNZ0UsTUFBTS9ELE1BQUt5SjtJQUNqQztLQUFNb3ZCO09BaklGM2xCO1VBZ0lZblQ7VUFBTWdFO1VBQU0vRDs7O1dBR3hCLFdBSDZCeUo7V0FHN0IsT0FBQTtVQUNTOztJQUViLE9BTE1vdkI7R0FLRjtZQUdGcUIsUUFBT242QixNQUFNZ0UsTUFBTS9ELE1BQUt5Sjs7SyxjQUVsQnVoQixjQUFTLE9BQVRBOzs7OztJQURjO0tBQUEsTUFWcEJpUCxhQVNPbDZCLE1BQU1nRSxNQUFNL0QsTUFBS3lKO0tBQ2hCLE1BQUE7OztZQUtSMHdCLFlBQWFwNkIsTUFBTWdFLE1BQU0vRCxNQUFLeUo7SUFBSTtzQjtJQUFBLFVBTmxDeXdCLFFBTWFuNkIsTUFBTWdFLE1BQU0vRCxNQUFLeUo7O0dBQThDO1lBRzFFekYsT0FBT3pHO0lBQ1QsWUFEU0E7O1FBR0F5RztJQUFVLFdBQVZBO0dBQ1M7WUFHaEJvMkIsTUFDVzc4QjtJQUFiLElBQWFvRyxNQUFBcEcsR0FBRXVOO0lBQ2I7S0FBTSxZQVROOUcsT0FRV0w7aUJBRUQsT0FGR21IO0tBR0QsSUFIRHRILGdCQUFFNjJCLE1BQUF2dkIsV0FBRm5ILE1BQUFILEtBQUVzSCxJQUFBdXZCOztHQUtQO0dBZE8sb0JBQ2JyMkIsUUFPQW8yQjs7Ozs7Ozs7O09BdGVGajBCO09BZ0VBL0Q7O09BakRBc1M7T0FLQTRnQjtPQU9BQztPQWdDQVM7T0FUQUg7T0FPQUU7V0FxQkVFLGFBREF6cUI7O09BaUhGK3JCOztPQU1BemQ7T0F3TEFvZjtPQXlDQU87T0FJQUM7T0E4QkFNO09BTUFDO09BU0FDO09BTUFDO09BeENBUjs7OztRQXhMRTFCO1FBWUFFO1FBTkFEO1FBMEJBSztRQUZBdGhCO1FBaERBNmdCO1FBNERBVTtRQU1BQzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ2xURjZCLFVBQVUvOEI7O0ssY0FHSnl0QixjQUFTLE9BQVRBOzs7OztJQUZFLFdBQUEsaUJBREV6dEI7OztZQU1WZ0YsS0FBTWhGLEdBQUdpRixNQUFNaUg7a0JBQ0loTTtjQUNYZzJCLEtBQUtsMkIsR0FBRXUyQjs7T0FDQyxZQUFkLE9BQUEsa0NBRmlCcjJCLFFBQ0pxMkI7V0FHQXYyQixjQUFIOEI7T0FBc0Isb0IsT0FIMUJvMEIsS0FHT2wyQjtPQUFXLFdBQUEsV0FMWGtNLEdBRUFxcUIsR0FHSHowQjtPQUFzQixPQUFBO01BQVM7TUFGcEMsV0FBQSxpQkFETTlCO01BQ0csT0FBQTtLQUUyQjtZQUhuQ2syQixLQUZGbDJCLEdBQUdpRjtJQU9FO0lBTkcsT0FBQTtHQU1GO1lBS1pPLE9BQUt4RixHQUFHaUYsTUFBTWlIO2tCQUNLaE07Y0FDWDg4QixnQkFBS2g5QixHQUFFdTJCO01BQ2I7T0FBb0IsT0FBQSxpQkFEVHYyQjtPQUNMLFFBQUE7O09BQ1M7d0JBQWNrWixNQUFRLE9BRW5DK2pCLFVBRjJCL2pCLE1BRmhCcWQsR0FFd0M7UUFBdEMsT0FBQSxpQkFGSnYyQjtPQUVhLE9BQUE7O1VBQ2pCK1k7TUFBUTtPQUFBLE9BQUEsdUJBQ2Jta0IsaUJBREtua0IsUUFITXdkOztNQUdFLE9BQ2IyRyx1QkFES25rQixRQUhNd2Q7S0FHa0I7Y0FDN0IyRyxxQkFBVWhrQixNQUFLcWQ7TUFDakIsS0FEWXJkLE1BRUgsT0FBQSxrQ0FQUWhaLFFBS0FxMkI7TUFHTyxJQUFidjJCLElBSENrWixTQUdKcFgsSUFISW9YLFNBR1ksT0FBQSxXQVRaaE4sR0FNS3FxQixHQUdUejBCO01BQWdCLGtCQUFBLE9BQUEsdUJBUGxCazdCLFlBT0toOUI7O01BQWEsT0FQbEJnOUIsa0JBT0toOUI7S0FBb0I7Y0FQekJrMkIsS0FBS2wyQixHQUFFdTJCLEcsdUJBQVB5RyxVQUFLaDlCLEdBQUV1MkI7Y0FJWDBHLFVBQVUvakIsTUFBS3FkO00sdUJBQWYyRyxlQUFVaGtCLE1BQUtxZDs7WUFKWEwsS0FGSGwyQixHQUFHaUY7SUFXRztJQVZHLE9BQUE7R0FVRjtZQUdaa0YsT0FBT25LO0lBQUksT0FkWHdGLE9BY094RixlQUEyQnVOLFVBQU8sT0FBUEEsVUFBWTtHQUFDO1lBQy9DeEksS0FBTS9FLEdBQUdrTTtJQUFJLE9BM0JibEgsS0EyQk1oRixzQkFBbUM4QixHQUFLLE9BQUEsV0FBckNvSyxHQUFnQ3BLLEdBQVE7R0FBQztZQUVsRHE3QixPQUFPbjlCO0lBQ1Q7S0FBb0IsT0FBQSxpQkFEWEE7S0FDSCxRQUFBOztLQUNRLE9BQUE7SUFDSSxPQUxoQitFO2FBRU8vRTs7Y0FHbUIsT0FBQTthQUFTO0dBQUM7WUFHcEN1RixPQUFLdkYsR0FBR2tNO0lBRVI7O09BVkFuSDtTQVFLL0U7a0JBRVk0TTtVQUNkLFdBSEtWLEdBRVNVO1VBQ2QsT0FBQTtTQUNTO0lBRlosT0FBQTtHQUVjO1lBR2QvSCxPQUFPcUg7SUFDVDtLQUFJcXNCLE9BQU87S0FFUHY0QixJQUFJLGlDQUZKdTRCO0lBR0osV0FKU3JzQixHQUNMcXNCO0lBR0osT0FESXY0QjtHQUVIO1lBR0NvOUIsT0FBTzdHLEdBQUdycUI7SUFDWixPQVRFckg7c0JBU1UwekI7dUJBQ0ZyQyxLQUFLSzs7Z0JBQ0EsWUFEYixPQUFBLGlDQURVZ0M7c0NBSUtoQyxjQUFIM3BCO2dCQUNOLGlDQUxJMnJCLE1BSUUzckI7Z0JBQ04sT0FKRXNwQixLQUdPSztlQUVGO2VBSk4sV0FBQSxXQUhHcnFCLEdBRUdxcUI7ZUFDQSxPQUFBO2NBSUE7cUJBTExMLEtBRkRLO2FBU0Q7R0FBQztZQUdQNUYsUUFBUS9DO0lBQ1YsT0FyQkUvb0I7c0JBcUJVMHpCOzRCQUNVOUs7ZUFBSyxPQUFBLGlDQURmOEssTUFDVTlLO2NBQXVCO2NBQTNDLHlCQUZRRztjQUVSLE9BQUEsaUNBRFUySzthQUVTO0dBQUM7WUFHcEJqekIsUUFBUXFCO0lBQUk7S0FBQTtLQUFBO09BcEVaM0I7U0FvRVEyQjs7a0JBQTZCNHZCLEdBQUUzcEI7VUFBSyxPQUFPLDhDQUFaQSxHQUFGMnBCO1NBQXNCO0lBQS9DLE9BQUE7R0FBNkQ7WUFDekU4RyxhQUFhcjlCLEdBQUV1NEI7SUFBTyxPQTFDdEJ4ekI7YUEwQ2EvRTtzQkFBeUI0TTtjQUFZLFdBQUEsaUNBQW5DMnJCLE1BQXVCM3JCO2NBQVksT0FBQTthQUFvQjtHQUFDO1lBRXZFMHdCLE9BQU81dEIsSUFBR0M7SUFDWixPQTlCRTlLO3NCQThCVTB6Qjs7O2dCQUUrQixPQUR6QyxpQ0FEVUE7ZUFFa0Q7ZUFBckQsV0FMUDhFLGFBRVUxdEIsSUFDQTRvQjtlQUVvQixPQUFBO2NBQStCO2NBRHhELFdBSkw4RSxhQUVPM3RCLElBQ0c2b0I7Y0FDa0IsT0FBQTthQUNrQztHQUFDO1lBRy9EeDNCLE9BQU9mO0lBQ1QsT0FwQ0U2RTtzQkFvQ1UwekI7O2VBQ2tELE9BQTVELGlDQURVQTtjQUNxRTtjQUExRSxXQXBETHh6QixLQWtETy9FLFlBRWVBLEdBQUssT0FWM0JxOUIsYUFVc0JyOUIsR0FEWnU0QixNQUNvQztjQUFHLE9BQUE7YUFBK0I7R0FBQztZQWFqRmdGLGtCQUFrQnY5QixHQUFHa007SUFBSSxPQWxEekJySDtzQkF5Q1UwekI7O2VBTUcsT0FMYixpQ0FEVUE7Y0FNc0I7Y0FKOUI7O2lCQTFERnh6QjttQkFpRWtCL0U7NEJBQXlCOEI7O3FCLGdEQVRqQ3kyQixNQVNpQ3oyQjs7b0JBQVk7cUJBQUEsT0FBQSxXQUFsQ29LLEdBQXNCcEs7cUJBQVksT0FBQTs7OztjQUhyRCxPQUFBO2FBQStCO0dBRzRCO1lBWTdEMDdCLHNCQUFzQng5QixHQUFHa007SUFBSSxPQTlEN0JySDtzQkFxRFUwekI7O2VBTUcsT0FMYixpQ0FEVUE7Y0FNc0I7Y0FKOUI7O2lCQXRFRnh6QjttQkE2RXNCL0U7NEJBQTZCOEI7O3FCLFlBTHBDO3lCQUNIQTtxQkFBSyxPQUFBLGlDQUxQeTJCLE1BS0V6MkI7O29CQUltRDtxQkFBQSxNQUFBLFdBQXRDb0ssR0FBMEJwSztxQkFBWSxNQUFBOzs7Y0FIN0QsT0FBQTthQUErQjtHQUdvQztZQUVyRWdELElBQUs5RSxHQUFHa007SUFDVixPQWpFRXJIO3NCQWlFVTB6Qjs7ZUFHRyxPQUZiLGlDQURVQTtjQUdzQjtjQUQ5Qjs7aUJBbEZGeHpCO21CQStFSy9FOzRCQUdjOEI7b0JBQUs7cUJBQVEsTUFBQSxpQ0FGdEJ5MkI7cUJBRWMsTUFBQSxXQUhoQnJzQixHQUdXcEs7b0JBQWEsT0FBQTttQkFBZ0I7Y0FDOUMsT0FBQTthQUErQjtHQUFDO1lBR2xDOEQsTUFBSTVGLEdBQUdrTTtJQUFJLE9BUFhwSDthQU9JOUU7c0JBQXNCNE07Y0FBWSxVQUFBLFdBQS9CVixHQUFtQlU7Y0FBWSxPQUFBO2FBQUs7R0FBQztZQUU1QzZ3QixRQUFROTJCLEdBQUU0RztJQUNaLE9BMUVFMUk7c0JBMEVVMHpCO3VCQUNGckMsS0FBS3Z2QixHQUFFNEc7ZUFDYixHQUFHLHFCQURVQTtnQkFBZixPQUFBLGlDQURVZ3JCOztnQkFLUSxZQUpsQixPQUFBLGlDQURVQTtvQkFPT3Y0QixjQUFIeXRCO2dCQUNOLGlDQVJFOEssTUFPSTlLO2dCQUZWLE9BSkl5SSxLQU1TbDJCLEdBTkZ1TjtlQVFRO2VBSmQsVUFBQSxpQkFKSTVHO2VBSUssT0FBQTtjQUlLO2NBVHpCLE9BQ1V1dkIsS0FGQXZ2QixHQUFFNEc7YUFZRjtHQUFDO1lBR1Rtd0IsY0FDVzE5QjtJQUFiLElBQWFvRyxNQUFBcEcsR0FBRWtHO0lBQ2I7S0FBb0I7TUFBQSxNQUFBLGlCQURURTtNQUNMLFFBQUE7Ozs7T0FFeUI7UUFIcEJIO1FBR0d3bkI7UUFIRHRuQixXQUdDc25CLEdBSER2bkI7UUFBRkUsTUFBQUg7UUFBRUMsS0FBQUM7Ozs7S0FFUSxXQUFBLDBCQUZSRCxLQUFGRTs7R0FLSjtZQUdQdTNCLE1BQVEvTixVQUFvRDV2QjtJQUM5RCxHQURVNHZCO1NBQU9DLE1BQVBELFFBQUFnTyxPQUFPL047O1NBQVArTixPQUFPO0lBQ2pCO1NBRDBDaEMsZ0JBQUoxdkIsSUFBSTB2Qjs7U0FBSjF2QixvQkFBYSxpQkFBUztJQUNsQztLQUF0QjJ4QixzQkFBc0I7S0FDdEJDLFNBQVM7YUFDVEMsT0FBT2o4QjtLQUNULGlDQUZFZzhCO0tBRUYsT0FBQSxrQ0FIRUQscUJBRU8vN0I7SUFFc0I7YUFFekJvMEIsS0FBS2wyQjs7TUFFUCw4QkFDaUIsT0FQbkIrOUIsc0JBSVMvOUI7VUFJSGcrQjtNQUNOLEtBRE1BLEdBRUksT0FWVkQ7TUFZVSxJQURFMzNCLE1BSE40M0IsTUFHR3B4QixJQUhIb3hCLE1BSUksUUFBQSxXQWZ3Qjl4QixHQWN6QlU7O09BR0gsaUNBZk5reEIsUUFZU2x4QjtPQUdILE9BVkZzcEIsS0FPUTl2Qjs7VUFLQ213QjtNQUFZLE9BaEJ6QndILDBCQWdCYXhILEdBTERud0I7S0FLOEI7S0FWeEM7a0JBRDRENDNCLEdBQUssc0JBQUxBLEdBQVk7S0FBMUI7TUFBQSxNQUFBLGlCQUR2Q2grQjtnQkFDZ0M7eUJBQVgsaUJBQVE7S0FBakM7TUFBQSxVQUFFLHlDQVJENDlCO01BUVIsTUFBQTtLQUNJLE9BQUE7SUFVd0M7SUFadEMxSCxLQVBzRGwyQjtJQXNCekMsVUFBQSxrQ0FyQmpCNjlCO0lBcUJKLFdBQUEsaUNBcEJJQztHQW9COEM7WUFHaERHLEtBQUtqK0IsR0FBR2tNO0lBQ1Y7S0FBT2d5QjtPQTFCTFA7OztvQkEwQjZCL3dCO1lBQUssT0FBRyxXQUQ3QlYsR0FDcUJVLG9CQUFBQTtXQUF3QztVQURoRTVNOztpQkFJTHl0QjtLLFVBQUFBLDhCQUFBQTtNQURjLE1BQUE7S0FDc0IsT0FBcENBOzt1REFIS3lRO0dBR2dDO1lBR3JDQyxRQUFRbitCO0lBQ1YsT0FsSUU2RTtzQkFrSVUwekI7O2VBS0csT0FKYixpQ0FEVUE7Y0FLc0I7Y0FIOUI7O2lCQW5KRnh6QjttQkFnSlEvRTs0QkFHVzR0QjtpQ0FDTUg7cUJBQUssT0FBQSxpQ0FIcEI4SyxNQUdlOUs7b0JBQXVCO29CQUEzQyx5QkFEY0c7b0JBQ2QsT0FBQTttQkFDUztjQUNaLE9BQUE7YUFBK0I7R0FBQztZQUdsQ3dRLFdBQVd2STtJQUNiLE9BM0lFaHhCO3NCQTJJVTB6QjtjQUtLLElBQVg4Rjt1QkFFQUM7ZUFGQUQsY0FBQUE7ZUFJQyxVQUFBLHFCQUpEQTtlQUlDLGFBRkwsaUNBUFU5RjtjQVNpQztjQUd6QztlQURFZ0c7aUJBcktKeDVCO21CQXlKVzh3Qjs0QkFhUTcxQjtvQkFQZnErQixjQUFBQTtvQkFTSyxVQTlIVGhCLGFBNEhtQnI5QixHQVpUdTRCO29CQWNOLCtDQVBBK0Y7b0JBT0EsT0FBQTttQkFDUztjQUViLE9BQUE7c0RBTklDLGNBSkFEO2FBVW1CO0dBQUM7WUFHeEJFLFdBQVd4K0IsR0FBRTgyQjtJQUNmLE9BaEtFanlCO3NCQWdLVTB6Qjt1QkFDRnJDLEtBQUtsMkI7O2dCQUdUOzs7c0JBRW9CQSxjQUFIeXRCO2tCQUNiLGlDQVBFOEssTUFNVzlLO2tCQUNiLE9BTkF5SSxLQUtnQmwyQjs7O2dCQUx4QixPQUFBLGlDQURVdTRCO2VBUUs7ZUFKWDs0QkFEMkRrRyxHQUFLLHNCQUFMQSxHQUFZO2VBQTFCO2dCQUFBLE1BQUEsaUJBRnBDeitCOztzQkFFNkI7bUNBQVIsaUJBQUs7ZUFBM0I7Z0JBQUE7c0JBQUUseUNBSkQ4MkI7Z0JBSVQsTUFBQTtlQUNBLE9BQUE7Y0FJVztxQkFQUFosS0FGR2wyQjthQVdMO0dBQUM7WUFHUDArQixhQUFjMStCLEdBQUdrTTtpQkFDRWhNO2NBQ1hnMkIsS0FBS2wyQjs7T0FFUCxZQUNLLE9BQUEsa0NBSlFFO1dBS05GLGNBQUh5dEI7b0JBTUVnUjtRQVZKdkksS0FJS2wyQjtpQkFNRHkrQixNQUdJO1FBQ21CLElBQXRCalAsSUFKRGlQLE1BSXVCLE1BQUE7UUFBakIsT0FBQSw2Q0FBTGpQO09BQTZDOzJCQUx6QyxPQVZuQixXQURtQnRqQixHQU1QdWhCLEdBS1U7T0FKaEI7Y0FBQTtPQUtJLE9BQUE7TUFJa0Q7TUFieEQsVUFBQSxpQkFEV3p0QjtNQUVQLE9BQUE7S0FZb0Q7WUFkbERrMkIsS0FGTWwyQjtJQWtCUjtJQWpCUSxPQUFBO0dBaUJQO1lBR1AyK0Isd0JBQXdCMytCLEdBQUdrTTtpQkFDUmhNO2NBQ1hnMkIsS0FBS2wyQjs7T0FFUCxZQUNLLE9BQUEsa0NBSlFFO1dBS05GLGNBQUh5dEI7T0FKRnlJLEtBSUtsMkI7T0FJVCxPQUFBLFdBVnVCa00sR0FNakJ1aEI7TUFLSDtNQVJMLFVBQUEsaUJBRFd6dEI7TUFFUCxPQUFBO0tBT0M7WUFUQ2syQixLQUZnQmwyQjtJQWFsQjtJQVpRLE9BQUE7R0FZUDtZQUdQNCtCLGVBQWE1K0IsR0FBR2tNO0lBQW1CLFVBaEJuQ3l5Qix3QkFnQmEzK0IsR0FBR2tNO0lBQW1CLE9BQUE7R0FBOEI7WUFFakUyeUIsT0FBTzN5QjtJQUNULE9BN01Fa3hCOzs7MkJBOE1ReHdCLEdBQ1IsZUFEUUEsT0FDSTtjQURBLFVBQUEsV0FGTFY7OztHQUdNOzs7Ozs7Ozs7T0F2TmJySDs7T0FoREFrNEI7T0FvRUFwTTtPQU1BcnJCO09BMExBdTVCO09BekxBeEI7T0FFQUM7T0FNQXY4QjtPQXFEQTI4QjtPQXRDQUg7T0FZQUM7T0F4R0F4NEI7T0FZQVE7T0FlQVQ7T0FFQW80QjtPQU1BNTNCO09Bc0tBaTVCO09BY0FFO09BcUNBRTtPQWhCQUQ7T0FsTkF4MEI7T0FnRkFyRjtPQU9BYztPQUVBNjNCO09BakVBTDtPQXlGQU87T0F5QkFNO09BT0FFO09BU0FDOzs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDMUxKLFNBRVlwTCxLQUFBcHhCLEdBQUEsT0FBQUEsS0FBSTtZQUFKazlCLFNBQUFsOUIsR0FBQUUsR0FBQUYsT0FBQUUsWUFBSTtZQURKaTlCLGdCQUFBbjlCLEdBQUEsT0FBQUEsS0FBZTtZQUFmbzlCLG9CQUFBcDlCLEdBQUFFLEdBQUFGLE9BQUFFLFlBQWU7Z0JBQ2ZGLEdBQUFFLEdBQUEsV0FBQUYsTUFBQUUsR0FBSTtHQUFKO0lBQUEsVUFBQWc5QjtJQUFBNUwsNkJBQUEsU0FBSSxrQkFBSkY7Z0JBREFweEIsR0FBQUUsR0FBQSxXQUFBQSxHQUFBRixNQUFlO0dBQWY7SUFBQSxVQUFBbzlCO0lBQUFDOzt1QkFBQSxTQUFlOzs7T0FBZkY7O1lBS1JuMkIsVUFBVStxQixvQkFBYzN6QjtJQUNmLElBQVBrL0IsT0FBTyxzQ0FEZWwvQjs7Y0FHcEJpTSxNQUFNQyxHQUFJLE9BQUEsOEJBRlpnekIsTUFFUWh6QixHQUFnQztLQU10QztNQWZBaXpCO1FBU0FsekI7bUJBTVkrbUI7V0FDVCxrQ0FWR1csYUFTTVg7V0FFRixHQUFBLGtDQUZFQTtXQUVULE1BQUE7VUFBMkI7TUFqQjlCb007UUFTQW56QjttQkFHWTh5QjtXQUNOLFVBQUEsa0NBTlJHO1dBTVEsVUFBQTtjQURNSDtXQUMyQixNQUFBO1VBQXNCO0tBYjdELFdBQUFLLHFCQUNJSDtLQUNBLE9BQUEsV0FGSkUsVUFFSWpNO0lBZTRCO2lCQVRNa0U7Y0FSekNpSSxnQjtLQUVPO01BREFDLHNCQU9rQ2xJO01BTmxDbUksV0FNa0NuSTtNQU5sQ29JLFVBQUEsaUNBRlBILFVBRU9FO01BRlpFLGdDQUVZRDtNQURBRSxVQUFBLHNCQUFBSjtNQURaSyxrQ0FDWUQsZUFEWkQ7S0FBQSxXQUFBRTs7SUFRc0QsT0FBQSxtQ0FEaERUO0dBVW1DO1lBR3JDNTlCLHNCQUFjdEI7SUFDaEIsSUFBTSsrQixrQkFBOEIsc0NBRHBCLytCO2tEQUNWKytCO0dBRTZCOztZQUtqQ2EsVUFBVTUvQixHQUFFNE07SUFDZDtLQUFJc3lCLE9BQU8sc0NBRENsL0I7S0FFWixNQURJay9COzs7V0FBQUE7OztVQUlGLGtDQUpFQSxTQURVdHlCO1VBQ1ZzeUIsVUFLVzs7OztHQUFlO1lBRzVCVyxLQUFLNy9CO0lBQ0ksSUFBUGsvQixPQUFPLHNDQURKbC9CO0lBQ0hrL0I7NkNBQUFBO0dBRWU7WUFHakJZLGtCQUFnQjkvQjtJQUNQLElBQVBrL0IsT0FBTyxzQ0FET2wvQjtJQUVsQixPQURJay9CO0dBQ2dCOzs7Ozs7O1VBekJsQjU5QixXQWRBc0gsbUJBK0JBaTNCLE1BVEFELFdBZUFFOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDcVAwQnh4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWpTMUI1TTtJQU1BZ3hCO0lBQ0FpRDtJQUNBUjs7O0lBNENBOWQ7SUFEQXpPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBbkNFdEg7UUFvQmMwSSxrQkFaVnVKO0lBS04sR0FMTUE7Ozt5Qjs7OzsyREFZVXZKOzs7O29EQVpWdUo7OztZQW1CUnlLLFlBQUFuWCxPQUFBLE9BM0JJdkYscUJBMkJKdUYsT0FBNkM7R0FEM0IscUJBQ2xCbVgsYUFRRXBWLFdBQ0F5TztZQUhKekksWUFBQW14QixPQUFBLE9BakNNeitCLHFCQWlDTnkrQixPQUF1QztZQUluQ25uQixVQUFXNVksR0FBdUIsT0FBdkJBLEVBQXdCOztJQUNuQzZFO0lBQ0FrckI7WUFDQTFXLGdCQUFnQnJaLEdBQUksb0NBQUpBLE1BQXlDO1lBQ3pEdVQsY0FBY3ZULEdBQUksT0FBSkEsS0FBbUI7WUFDakNzWixvQkFBb0J0WixHQUFJLG9DQUFKQSxNQUE2QztZQUNqRStXLGlCQUFpQi9XLEdBQUksb0NBQUpBLE1BQTZCO1lBQzlDdUMsR0FBR3ZDLEdBQUksT0FBSkEsS0FBUTtZQUlYMlcsSUFBSTNXO0lBQ04sT0FETUE7Y0FTSjtjQWRBK1csaUJBS0kvVztHQVVpQjtHQUlWLElBQVh1YztZQUNBWSxpQkFBaUJuZCxHQUFHK087SUFBTSxPQURmLCtDQUNNL08sR0FBRytPLElBRHBCd047R0FDaUY7WUFDakZ5akIsb0JBQW9CaGdDLEdBQUVpZ0M7SUFBNEMsV0FoQmxFdHBCLElBZ0JvQjNXO0lBQStCLE9BRG5EbWQ7YUFDb0JuZCxHQUErQiw0Q0FBN0JpZ0M7R0FBdUQ7WUFHN0V0akIsaUJBQWlCM2M7SUFBSSxPQUxWLCtDQUtNQSxHQUxqQnVjO0dBSzBFO1lBQzFFbUMsUUFBTTFlO0lBQWMsV0FBQSx3Q0FBZEE7SUFBYyxPQUFBO0dBQTZCO1lBRWpEZ2Qsa0JBQW1Ca2pCLFVBQVNsZ0MsR0FBRytPO2FBQzdCb3hCO0tBTUYsS0FQbUJELFVBQ3JCLE9BSEV4aEIsUUFFNEIxZTtTQVNyQmtNLElBVFlnMEI7S0FTUCxPQUFBLFdBQUxoMEI7SUFBUzthQUVkNnhCO0tBbEJGNWdCLGlCQU80Qm5kLEdBQUcrTztLQUgvQjROLGlCQUc0QjNjO0tBYTVCLE9BWkVtZ0M7SUFja0I7YUFFZEM7S0FDTjtNQUFNLFlBQUEsNkJBbEJzQnBnQztrQkFtQmxCLE9BUlIrOUI7VUFTS3NDO01BQ0Y7UUFBQTtvQ0FERUEsZ0NBcEJ3QnR4QjtPQXNCeEIsT0FYTGd2QjtNQWxCRjVnQixpQkFPNEJuZCxHQW9CckJxZ0M7TUF2QlAxakIsaUJBRzRCM2M7TUEwQkEsSUFBcEJzZ0Msb0JBekJOSDtNQTBCSyxLQUFBLHNDQURDRztrQ0FLRixPQWRBRixlQWNjOztpREFMWkU7OztJQUtjO0lBbEN0QjNqQixpQkFHNEIzYzt5QkF1QzlCLE9BdEJRb2dDLGVBc0JNO0lBREEsV0FyQ1ZEOztHQXNDVTtZQUdaampCLCtCQUFxRGdqQixVQUFTbGdDLEdBQUcrTzthQUMvRG94QjtLQU1GLEtBUHFERCxVQUN2RCxPQTdDRXhoQixRQTRDOEQxZTtTQVN2RGtNLElBVDhDZzBCO0tBU3pDLE9BQUEsV0FBTGgwQjtJQUFTO2FBRWQ2eEI7S0E1REY1Z0IsaUJBaUQ4RG5kLEdBQUcrTztLQTdDakU0TixpQkE2QzhEM2M7S0FhOUQsT0FaRW1nQztJQWNrQjthQUVkQztLQUNOO01BQU0sWUF4Rk45bUIsb0JBc0U4RHRaO2tCQW1CcEQsT0FSUis5QjtVQVNLd0M7TUFDRixHQUFBLHFDQURFQSx1QkFwQjBEeHhCO09Bc0IxRCxPQVhMZ3ZCO01BNURGNWdCLGlCQWlEOERuZCxHQXdCbEMsNkJBeEJrQ0E7TUE3QzlEMmMsaUJBNkM4RDNjO01BMEJsQyxJQUFwQnNnQyxvQkF6Qk5IO01BMEJLLEtBQUEsc0NBRENHO2tDQUtGLE9BZEFGLGVBY2M7O2lEQUxaRTs7O0lBS2M7SUE1RXRCM2pCLGlCQTZDOEQzYzt5QkF1Q2hFLE9BdEJRb2dDLGVBc0JNO0lBREEsV0FyQ1ZEOztHQXNDVTtZQUdaSyxxQkFBc0JOLFVBQVNsZ0MsR0FBRWlnQztJQUNlLFdBM0doRHRwQixJQTBHK0IzVztJQUNFLE9BckZqQ2dkO2FBb0ZzQmtqQixVQUFTbGdDLEdBQ0UsNENBREFpZ0M7R0FDMEI7WUFHM0RRLGFBQWF6Z0MsR0FBRUM7SUFBcUIsV0E5R3BDMFcsSUE4R2EzVztJQUFTLE9BQUEsNENBQVBDO0dBQWlDO1lBZWhEeWdDLGdCQUFnQjFnQyxHQUFFMmdDLE1BQUt2UyxLQUFFeGhCO0lBQzNCO0tBZHFCMUMsb0JBY0csd0NBRE5sSztLQUVJLE9BQUEsNkJBRkpBO0lBRWYsS0FBQSxxQ0FGaUIyZ0M7S0FLbEIsd0NBTGdCM2dDLE1BYkdrSyxtQkFhSWtrQixLQUFFeGhCO0tBS3pCLE9BQUE7O0lBYnVCO0tBQUE7T0FBQTtzQ0FRUDVNLE1BYkdrSyxtQkFhSWtrQixLQUFFeGhCO0tBUnZCLE9BQUE7S0FKQWlFLFFBQ0YsNkJBV2dCN1EsTUFBRTJnQzthQUFGM2dDO2tCQUpWa00sY0FBSyxXQUFMQSxHQUlZeTBCO0lBSHBCLE9BVEk5dkI7R0FrQlk7WUFHZHVMLE9BQU9wYyxHQUFFMmdDLE1BQUt6MEIsR0FBRVUsR0FUaEI4ekIsZ0JBU08xZ0MsR0FBRTJnQyxNQUFLejBCLEdBQUVVLElBQVksU0FBdUM7WUFDbkV1UCxVQUFVbmMsR0FBRUMsTUFBS2lNLEdBQUVVO0lBQUksT0FEdkJ3UCxPQUNVcGMsR0F6QlZ5Z0MsYUF5QlV6Z0MsR0FBRUMsT0FBS2lNLEdBQUVVO0dBQXNDO1lBR3ZEc2xCLEtBQUtoeUIsUUFBUyxPQUFBLGtDQUFUQSxXQUE0QjtZQURuQytPLEdBRUVqUCxHQUFFMmdDO0lBQ21CLFdBQUEsNkJBRHJCM2dDO0lBQ0MsR0FBQSxxQ0FEQzJnQztLQUVDLE9BQUE7SUFFVSxJQUFUemdDLFNBQVM7SUFsQmZ3Z0MsZ0JBY0UxZ0MsR0FBRTJnQyxNQURGek8sTUFLSWh5QjtJQUVKLE9BQUEsa0NBRklBO0dBRWE7WUFHbkJILE1BQU1DLEdBQUVDLE1BQU8sT0FYZmdQLEdBV01qUCxHQXRDTnlnQyxhQXNDTXpnQyxHQUFFQyxPQUFpQztZQUV6QzJnQyxhQUFhNWdDLEdBQUU2UTtJQUNqQjtLQUFJOUcsZUFBZSwrQkFESi9KLE1BQUU2UTtLQUdUeUMsSUFBSywrQkFGVHZKO0tBSUlxRixRQURFLCtCQURGa0UsR0FGSnZKO1NBRUl1SixHQU1MLE1BQUE7SUFKWSx3Q0FMQXRULE1BS1BvUDtJQUtSLE9BQUEsNkJBVmVwUCxNQUFFNlE7R0FVaUI7R0FTaEMsU0FBQWhCLFlBQU1neEIsVUFBSUM7SUFBVjtLQUNFLElBQUFDLHFCQUFBQyxXQUFBLFdBRElILFVBQ0pFO0tBQUEsd0JBQUFDOztJQUNBLElBQUFDLHFCQUFBQyxXQUFBLFdBRlFKLFVBRVJHO0lBQUEsd0JBQUFDO0dBQ2tCO0dBSlAsZ0JBQ2JyeEI7WUF1QlVpTCxhQUFBbFosR0FBQSxPQUFBQSxLQUFZO1lBQVp1L0IsaUJBQUF2L0IsR0FBQUUsR0FBQUYsT0FBQUUsWUFBWTtZQUpacy9CLGtCQUFBeC9CLEdBQUEsT0FBQUEsS0FBaUI7WUFBakJ5L0Isc0JBQUF6L0IsR0FBQUUsR0FBQUYsT0FBQUUsWUFBaUI7WUFOekJ3L0IsTUFBQTEvQixHQUFBLE9BQUFBLEtBQUs7WUFOR2lQLE1BQUFqUCxHQUFBLE9BQUFBLEtBQUs7WUFBTGtQLFVBQUFsUCxHQUFBRSxHQUFBRixPQUFBRSxZQUFLO2dCQWdCTEYsR0FBQUUsR0FBQSxXQUFBRixNQUFBQSxNQUFBQSxNQUFBQSxNQUFBRSxHQUFBRixNQUFZO0dBQVo7SUFBQSxVQUFBdS9CO0lBQUFJOzt1QkFBQSxTQUFZOzs7T0FBWnptQjs7Z0JBSkFsWixHQUFBRSxHQUFBLFdBQUFGLE1BQUFBLE1BQUFBLE1BQUFFLEdBQUFGLE1BQUFBLE1BQWlCO0dBQWpCO0lBQUEsVUFBQXkvQjtJQUFBRzs7dUJBQUEsU0FBaUI7OztPQUFqQko7O2dCQU5SeC9CLEdBQUFFLEdBQUEsV0FBQUYsTUFBQUEsTUFBQUUsR0FBQUYsTUFBQUEsTUFBQUEsTUFBSztHQUFMOztJQUFBNi9CLDhCQUFBLFNBQUssbUJBQUxIO2dCQU5RMS9CLEdBQUFFLEdBQUEsV0FBQUEsR0FBQUYsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBSztHQUFMO0lBQUEsVUFBQWtQO0lBQUFRLDhCQUFBLFNBQUssbUJBQUxUO1lBRFp3QyxZQUFNcXVCLFVBQUlDO0lBQVY7S0FDWUM7S0FNUkM7S0FNUUM7S0FJQUM7S0FDUkM7S0FBQXpXLFVBQUEsOENBQUF5VztLQWxCSkMsZ0NBa0JJMVc7S0FEUUUsVUFBQSxxQ0FBQXNXO0tBakJaRyxrQ0FpQll6VyxlQWpCWndXO0tBYVlFLFVBQUEsc0JBQUFMO0tBYlpNLGtDQWFZRCxlQWJaRDtpQ0FBTVIsVUFBSUM7S0FPTlUsVUFBQSx1Q0FBQVI7S0FQSlMsa0NBT0lELGVBUEpEO3dCO0lBRVk7S0FBQXJXO0tBRlp3VyxrQ0FFWXhXLGVBRlp1VztLQUNZclcsVUFBQSxnREFBQTJWO0tBRFpZLGtDQUNZdlcsZUFEWnNXO0lBQUEsV0FBQUM7R0FvQjRCO1lBRTVCQyxlQUFBQztJQUFBLE9BdEJBcnZCLGtDQXNCQXF2QjtHQUFpRDtZQUU3Q0MsUUFBTTNpQyxHQUFJLHlDQUFKQSxNQUFxQjtZQUUzQmtZLFlBQVV5YixhQUFZaVAsYUFBWTVpQzs7S0FFbEMsSUFBSWdLLFNBRjhCaEs7S0FHbEMsU0FBSWlNLE1BQU1DLEdBQUksT0FBQSw4QkFIb0JsTSxHQUd4QmtNLEdBQTZCO0tBa0JuQztNQS9DTTIyQjtRQTZCTjUyQjttQkFxQm9CNk87V0FGZCxXQUFBLDZCQXBCTjlRLFFBRjhCaEs7V0FzQnhCLFdBQUE7V0FJUztZQUZLeVMsU0FFTCwrQkF4QmZ6SSxRQUY4QmhLO1lBd0JWd1M7WUFBQUU7WUFBQTVSO1lBQUEwQjtvQkFBQW1RLFdBQUFtd0IsT0FBQUM7WUFBQSxPQUFBLHNDQUFBRCxPQUFBQztXQUFTOzs7b0JBQVR6MEI7b0JBQUFrRTtvQkFBQUc7b0JBQUFuUTtvQkFBQTFCO29CQUFBNFI7b0JBQUFEO29CQUFBcUk7VUFFb0I7TUFwRGxDa29CO1FBNkJOLzJCO21CQWdCWW0xQjtXQUFxQixHQUFPLG1DQUE1QkE7O1dBQXFCLE1BQUE7VUFBK0I7TUE3QzFENkI7UUE2Qk5oM0I7bUJBVWFxMUI7V0FDVjtZQUFvQixPQUFBLGtDQURWQTtZQUNKLFFBQUE7dUJBQ0k7OztnQkFDTTEwQjtZQUFNLE9BQUEsV0FoQm5CK21CLGFBZ0JhL21COztlQUNDbW5CO1dBQU0sT0FBQSxXQWpCUjZPLGFBaUJFN087VUFBbUI7TUEzQ2pDeGlCO1FBNkJOdEY7bUJBR1k0RTtXQUNULEdBQUcsa0NBUHdCN1E7WUFRVixHQUFBLDZCQU5wQmdLLFFBSVk2RzthQUVKLE1BQUE7OztXQUNHLFdBQUEsNkJBUFg3RyxRQUlZNkc7V0FHRCxXQUFBO1dBQ3lCLFdBQUEsK0JBUnBDN0csUUFJWTZHO1dBSUcsR0FBQTtXQUFQLE1BQUE7VUFBdUQ7S0FwQ3pELFdBQUFVLFdBQ0ZEO0tBREUsV0FBQTJ4QixXQU9WeEI7S0FQVSxXQUFBdUIsdUJBYUZ4QjtLQWJFLFdBQUFxQixrQkFpQkZ0QjtLQUNSO0lBbUNxQjtrQkExQmtCMkI7MEI7WUEzQjNDN3ZCLDRCLG9CQTJCMkM2dkI7O0lBQVUsT0FBQSxtQ0FEZmxqQztHQTJCWjtHQUl4QixTQUFBMFcsWUFBTXlzQixVQUFJQztJQUFWOztPQUNFLElBQUFDLHFCQUFBQyxXQUFBLFdBRElILFVBQ0pFO09BQUEsd0JBQUFDOztPQUNBLElBQUFDLHFCQUFBQyxXQUFBLFdBRlFKLFVBRVJHO09BQUEsd0JBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEscUNBQUFEO09BQUEsd0JBQUFDOztHQUNrQjtHQUxOLGlCQUNkaHRCO1lBT0V2SCxPQUFPblA7SUFDVDtLQUFvQixPQUFBLGtDQURYQTtLQUNILFFBQUE7Z0JBQ0ksV0FGREE7OzZCQUdPNE0sZ0JBQU0sV0FBTkE7UUFDQ21uQjtJQUFNLFdBQU5BO0dBQWdCO0dBSWpDLFNBQUE1YixZQUFNd3JCLFVBQUlDO0lBQVYsOEJBQ0U7O0tBQ0EsSUFBQUMscUJBQUFDLFdBQUEsV0FGSUgsVUFFSkU7S0FBQSx3QkFBQUM7O0lBQ0EsSUFBQUMscUJBQUFDLFdBQUEsV0FIUUosVUFHUkc7SUFBQSx3QkFBQUM7R0FDa0I7R0FMQSx1QkFDcEI3ckI7WUFPRXFELE1BQU14YixHQUFFNE07SUFDVixHQS9UQWxMOzs7aUJBK1QrRHVpQzs4QjtnQkFoRmpFNXdCLDRCLG9CQWdGaUU0d0I7O0tBQWpELGdFQUROamtDOztJQUVZO0tBQUEsT0F6RGxCMmlDLFFBdURNM2lDO0tBRUYsUUFBQTs7S0FJSixrQ0FOTUEsVUFBRTRNO1NBM0ZrQmlFLFFBMkZwQjdRLE1BM0ZrQm9HLE1BMkZsQnBHO0tBMUZQLEdBQUEsNkJBRHlCb0csUUFBRXlLLFFBYjVCK3ZCLGFBYTBCeDZCLEtBQUV5SztLQWtHMUI7Ozs2QkFKY3F6QixrQkFBTSxXQUFOQTtRQUNDblE7SUFBTSxXQUFOQTtHQUliO1lBR0ZyWSxVQUFVMWIsR0FBRTRNO0lBQ1IsWUFaSjRPLE1BV1V4YixHQUFFNE07a0NBRU47Ozs7Ozs7Ozs7R0FNNEU7WUFHbEY2TyxrQkFBa0J6YixHQUFFNE0sR0F0QnBCNE8sTUFzQmtCeGIsR0FBRTRNLElBQVksU0FBNkI7WUFDN0Q4TSxTQUFTMVosR0FBQUEsT0F4SlgwZ0MsZ0JBd0pXMWdDLE1BQUFBLE1BQUFBLGlCQUFxRTtHQUdoRixTQUFBdVksWUFBTTRyQixVQUFJQztJQUFWLDhCQUNFOztLQUNBLElBQUFDLHFCQUFBQyxXQUFBLFdBRklILFVBRUpFO0tBQUEsd0JBQUFDOztJQUNBLElBQUFDLHFCQUFBQyxXQUFBLFdBSFFKLFVBR1JHO0lBQUEsd0JBQUFDO0dBQ2tCO0dBTEssNEJBQ3pCanNCO1lBT0UwRCxjQUFjamMsR0FBRWlQO0lBQ2xCLEdBaFdBdk47Ozs7YUFrV2lFK2lDLHFCQUFBQzs4Qjs7VUFBQUMsV0FuSG5FdHhCLDRCLG9CQW1IbUVxeEI7VUFBQUUsZ0RBQUFIO3dCQUFBRSxjQUFBQzs7S0FBL0Q7OztXQUhjNWtDLEdBQUVpUDs7O0lBSUU7S0FBQSxPQTVGbEIwekIsUUF3RmMzaUM7S0FJVixRQUFBOzs7OEJBQ1U0TSxnQkFBTSxXQUFOQTtTQUNDbW5CO0tBQU0sV0FBTkE7O0lBR1U7S0FEckIvcEIsU0FSVWhLO0tBU1Y2a0MscUJBQXFCLDZCQURyQjc2QixRQVJVaEs7S0FXSyxPQUFBLDZCQUhmZ0s7S0FFQTg2QjtPQUNGLHFDQVhjNzFCO0lBQUZqUCxPQUFFaVA7T0FVWjYxQjtRQURBRDtNQWFhLDZCQWRiNzZCLFFBUlVoSyxNQUFFaVA7VUFBRmpQLE9BQUFBLGNBVmQwWixTQVVjMVo7WUFTVjZrQztLQVFELFdBakJXN2tDLFNBQUFBO0tBa0JYLDZCQVZDZ0ssUUFSVWhLOztJQXVCZDtHQUFFO1lBR0ZrYyxpQkFBaUJsYyxHQUFFQztJQUFPLE9BMUIxQmdjLGNBMEJpQmpjLEdBM01uQnlnQyxhQTJNbUJ6Z0MsTUFBRUM7R0FBd0Q7WUFFM0U4a0MsU0FBTzdsQixhQUFZcEUsY0FBYTVPLEdBQUV1eUI7SUFDcEMsR0E1WEEvOEI7S0E0WGM7OztPQURPb1o7O0lBS1QsY0FBQSxPQUFBO3dCO0lBRlY7S0FERTlhOztRQUNROzs7O1FBSFM4YTtRQUFab0U7YUFXTHJHO0tBR0MsV0FBQSxrQ0FaRDdZO0tBWUM7TUFFRSxHQUFBLG1DQWRIQSxVQUFBQSxPQUFBQTtNQWlCZTtPQUFURSxTQUFTLFdBbkJlZ00sR0FBRXV5QjtPQXFCM0IsT0FBQSxrQ0FuQkx6K0I7TUFtQkssU0FBNkMsT0FBQSxrQ0FuQmxEQSxVQWlCTUU7Ozs7O0tBRUQ7SUFBK0Q7SUFuQnBFRixPQVNBNlk7SUFqREZhLFNBd0NFMVo7SUFzQkosT0F0QklBO0dBdUJIO1lBR0MyUSxLQUFHdU8sYUFBWXloQjtJQUFPO0lBQUEsT0E1QnRCb0UsU0E0Qkc3bEIsYUFBWXloQixxQjtHQUF3QztZQUV2RHFFLFlBQVU5bEIsYUFBWWpmLE1BQUtpTSxHQUFFVTtJQUMvQixPQS9CRW00QixTQThCVTdsQixhQTNPWnVoQixhQTJPWXZoQixhQUFZamYsT0FBS2lNLEdBQUVVO0dBQ3VCO1lBR3BEdU8sUUFBTStELGFBQVlqZjtJQUFPLE9BTnpCMFEsS0FNTXVPLGFBL09SdWhCLGFBK09RdmhCLGFBQVlqZjtHQUFxRDtZQUd6RWdsQyxTQUFXclYsS0FBMEI1dkIsR0FBRWtsQztJQUN6QyxHQURhdFY7U0FBT0MsTUFBUEQsUUFBQWdPLE9BQU8vTjs7U0FBUCtOLE9BQU87SUFDVCxJQUFQckYsT0FBTzthQUNIckM7O01BR0Y7aUJBR0YsaUNBUEFxQyxVQUNJckM7Z0JBQVIsaUNBRElxQztLQVFPO0tBSkw7MEJBRHVFLGlCQUFLOzs7WUFBN0MsV0E1Wm5DcEQsUUFpTUFsbUIsR0F1TnFDalAsR0FJVyxXQUpUa2xDO0tBS25DLE9BQUE7Y0EvWkp4UztjQTZaQTtnQkE1WkFpRDs7aUJBNlpJLFdBNVpKUixRQXdaV3lJLHNCQUlnQixpQkFBSzs7O0lBS3ZCO0lBUEgxSDtJQVNSLE9BQUEsaUNBVklxQztHQVdhO1lBR2Y0TSxxQkFBc0J2SCxNQUFLNTlCLEdBQUVvbEM7SUFDL0IsT0FoQkVIO2FBZXNCckg7YUFBSzU5Qjs7Y0FDRCxJQUFzQixPQUFBLFdBRG5Cb2xDLGtCQUNXLE9BaFh4Q3p1QixJQStXMkIzVztjQUNxQixPQUFBO2FBQWlCO0dBQUM7WUFHbEVzYixhQUFjK0IsT0FBT3VnQixNQUFLNTlCLEdBQUVrUDtJQUM5QixHQURnQm1PLFdBR1BvUSxJQUhPcFEsVUFDWmdvQixVQUVLNVgsWUFGTDRYLFVBcFhGMXVCLElBbVgwQjNXO0lBTVgsT0F6QmZpbEM7YUFtQnFCckg7YUFBSzU5Qjs7Y0FPZSxXQTFYekMyVyxJQW1YMEIzVztjQU8xQixPQUFBO29EQU5FcWxDLGVBRDBCbjJCO2FBT2lDO0dBQUM7T0FTNURvMkI7WUFXRkMsZUFDSTNWLEtBQ0RnTyxpQkFHRDFlLGFBQ0NoVCxHQUNBNE07SUFFTCxHQVJNOFc7U0FBUUMsTUFBUkQsUUFBQXZTLFFBQVF3Uzs7U0FBUnhTLFFBQVE7SUFRZDtTQU4wQnVlLGlCQUFwQjRKLG9CQUFvQjVKOztTQUFwQjRKO0lBTU47U0FMaUIxSixnQkFBWHpGLFdBQVd5Rjs7U0FBWHpGLFdBQVc7SUFNYixPQUFBO2FBbGRGM0Q7YUF5Y0lyVjs7Y0FVTSxJQUFSeE0sWUFBWTtjQUNoQixHQVZLK3NCO21CQWFJNkgsU0FiSjdIO2VBY0Q7aUJBeGRGbEw7aUJBdWRPK1M7O2tCQUVBOztxQkFBQSw2QkFaTHZtQixnQkFNQXJPO2tCQU1LOzZCQXpRUCt2Qjs4QkE2UEUxaEIsYUFNQXJPOzRCQVFJLGtDQWZGd2xCOztpQkFnQmlDO21CQVJuQ3FQLFNBR0tEOzs7bUJBSExDLFNBRVE7dUJBV0p4TjtlQUVOLEdBQUcsc0NBZkR3TjtnQkFnQkcsT0FBQSxrQ0F4QkRyUDtrQkFEQW1QO2dCQTJCQyxPQUFBO3lCQXRlTDlTO3lCQXNlSzsyRUF4QkZ4bUI7eUJBZ0NEeTVCO2VBTlEsSUFBSjdPLElBQUksV0ExQlA1cUI7ZUEyQkUsT0FBQSxzQ0FEQzRxQjt5QkFFSjhPO3lCQUZRLFdBeGVWbFQsTUF3ZU1vRSxHQUVKOE87Y0FEcUU7dUJBQ3JFQTtlQUNGLEdBQUcsc0NBdkJERjtnQkF3QkcsT0FBQSxrQ0FoQ0RyUDs7eUJBR0R2ZDt3REFGRG9HOzZCQUVDcEc7O2lCQWJLN1ksT0FhTDZZO3dCQXZTSDJuQixhQXFTRXZoQixhQVhNamY7O2dCQUU2QjtpQkFEZGlQLFdBWXBCNEo7aUJBWmMrc0IsT0FZZC9zQjtpQkFYa0MsT0ExWXJDbkMsSUFtWkV1STs7bUJBVEE7a0RBRGUybUIsWUFBTTMyQjtlQWdCckIyQixXQTVSRjZ2QixnQkFzUkV4aEIsbUJBb0JJZ1o7O2NBWTJEO3VCQUMvRHlOLGtCQUFrQkc7ZUFDcEIsU0FEb0JBO2dCQUdlO2lCQUExQmhPLFFBSFdnTztpQkFHZSxPQUFBO2dCQUFqQiw4Q0FBVGhPOztlQUNULE9BUkU4TjtjQVFXO2NBRWYsT0FuQlExTjthQW1CQTtHQUFBO1lBR042TixNQUFRMW9CLE9BQU91Z0IsTUFBTTRILG1CQUFtQm5QLFVBQVNyMkIsR0FBRUMsTUFBS2lNO0lBQzFELEdBQUcsZ0NBRGtEak07Ozs2REFBQUE7Ozs7OztLQUVoRDs7SUFDbUUsT0FsRHRFc2xDO2FBK0NRbG9CLE9BQU91Z0IsTUFBTTRILG1CQUFtQm5QLFVBQVNyMkIsR0FBT2tNLE9BQUxqTTtHQUcrQjtZQUdsRitsQyxRQUFPM29CLE9BQU91Z0IsTUFBTTRILG1CQUFrQnhsQyxHQUFFQyxNQUFLaU07SUFDL0MsT0FQRTY1QjthQU1PMW9CO2FBQU91Z0I7YUFBTTRIOzthQUFrQnhsQzthQUFFQzs7Y0FFeEMsV0FGNkNpTTtjQUU3QyxPQUFBO2FBQ1M7R0FBQztZQUdWbVEsaUJBQW1CZ0IsT0FBT3VnQixNQUFNNEgsbUJBQWtCeGxDLEdBQUVrUCxVQUFTaEQ7SUFDckQsSUFBTnNOLFFBMWNGN0MsSUF5Y2tEM1c7T0FBL0JxZDs7TUFLWmdvQixVQUxZaG9CO01BRVg0b0I7O1NBbFVSaDNCO1dBZ1VrRGpQO1dBVXpDOzRDQUxGcWxDLFNBSkw3ckIsT0FEa0R0SztNQUVsRDIyQixPQUdLUjs7U0FIQ1ksYUFBTkosT0FEQXJzQjtJQXNCUSxPQWxGVityQjthQTZEUVUsU0FGa0JySSxNQUFNNEgsc0JBQWtCeGxDLEdBQVdrTSxPQUUzRDI1QixNQUZrRDMyQjtHQXVCVjtZQUcxQ2czQixtQkFBa0I3b0IsT0FBT3VnQixNQUFNNEgsbUJBQWtCeGxDLEdBQUVrUCxVQUFTaEQ7SUFDOUQsT0EzQkVtUTthQTBCa0JnQjthQUFPdWdCO2FBQU00SDthQUFrQnhsQzthQUFFa1A7O2NBRW5ELFdBRjREaEQ7Y0FFNUQsT0FBQTthQUNTO0dBQUM7WUFHVmk2QixhQUFhbm1DLEdBQUVDLE1BQUs2MkI7SUFDdEIsSUFBSXNQLFVBN0lBanJCLFFBNElXbmIsR0FBRUMsT0FDSDs7S0FlbUIsbUJBQ1Y7Ozs7SUFHMkQ7a0JBSjlFLFdBampCRmsxQixRQStQRXdOLFFBbVNBeUQ7SUFPRixPQUFBO2FBMWlCQXpROztjQTBpQkU7Z0JBemlCRlI7Z0JBaWlCb0IyQjt5QkFRSmgxQjtpQkFDTCxZQXBQVDBaLE1BNE9BNHFCOzs7Ozs7O2tCQWFLOzs7aUJBQ0gsdUJBUFl0a0M7Z0JBT0g7O0dBTVo7WUFHRHNiLFlBQVlwZCxHQUFFa007SUFDSixJQUFSbVIsUUFsZ0JGMUcsSUFpZ0JZM1c7aUJBRU5FO0tBQ1I7TUFBNEIsTUFwZ0IxQnlXLElBaWdCWTNXO01BR1ZzZCxXQUFXLDBDQUZYRDtLQUdKLFdBRlFuZCxRQUNKb2Q7SUFDWTtJQUZDLFVBQUEsV0FGRHBSOztHQUlBO1lBR2RtNkIsZUFBZXJtQyxHQUFJLE9BQUpBLEVBQUs7WUFDcEJzbUMsZUFBZXRtQyxHQUFJLE9BQUpBLEVBQUs7Ozs7Ozs7O1dBempCbEJzQjs7O09BaUNOc047T0FXSXJNO09BVEFxRztPQUNBeU87T0FDQXVCO09BQ0EvVDtPQUNBa3JCO09BQ0ExVztPQUNBOUY7T0FDQStGO09BTUEzQztPQUxBSTtPQW9CQW9HO09BQUFBO09BQ0E2aUI7T0FBQUE7T0FHQXJqQjtPQUdBSztPQTBDQUU7T0EwQ0FzakI7V0F5UkU4RTtPQVdGQztPQXhRQW5wQjtPQUNBRDtPQUVBbE47T0FXQWxQO09BcVZBb21DO09Bd0JBL29COztRQWxWRi9KO1FBc0JBb3ZCO1FBSUl2cUI7UUFUUTRDOztRQStDUjNMO1FBNEVBNDFCO1FBOEJBQzs7UUEzRkF4cEI7UUFXQUU7UUFXQUQ7O1FBN0VBa25COztRQXdGQTFtQjtRQTBCQUM7UUE4QkF2TDtRQU1Bd0s7T0FrQkZncUI7T0FJQTdwQjtPQTBFQXlxQjtPQU1BQztPQU1BM3BCO09BMEJBNnBCO09BcUNBRztPQUNBQzs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUl2a0JpQmhYO0lBQUFOO0lBQUFEO0lBQUFIO0lBQUFwUztJQUFBd0U7SUFBQXlOO0lBQUF4TjtJQUFBc047SUFBQUY7SUFBQXZoQjtJQUFBb2hCO0lBQUF0bEI7SUFBQTBXO0lBQUF6VTtJQUFBdWlCO0lBQUE5SztJQUFBaEM7SUFBQWhmO0lBQUFrZTs7SUFBQTlkO0lBQUF1STtJQUFBRDtJQUVqQmhLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUlBOEksV0FBV0M7SUFBbUMsV0FBQSxXQU43QnlULDJCQU13RCxXQUp6RXhjO0lBSWlCLE9BQUEscURBQU4rSTtHQUF5RTtZQUVwRkMsV0FBV0QsS0FBSStvQixPQUFPNWxCO0lBQ3hCO0tBQUk5RixNQUFJLFdBUE5wRztLQVM2QixPQUFBLFdBWFp3YywyQkFTZnBXO0tBQ0E4RDtPQUNGLHFEQUhXbkIsS0FBSStvQjtJQUtqQixPQUFBLFdBYm1CL0Msd0JBU2Yzb0IsS0FDQThELG1CQUZvQmdDO0dBS3FCO0dBR2xCLElBQXpCdVUseUJBQXlCLFdBZHpCemdCO1lBZUF3TixjQUFjeE47SUFBSTtLQUFBLE9BQUEsV0FqQkRvdEIsa0JBaUJIcHRCO0tBQUksT0FBQTtJQUFBLHNEQUFKQTtHQUEwRDtZQUN4RXdyQyxtQkFBbUJ4ckM7SUFBK0IsV0FBQSxXQWxCakNnSyxRQWtCRWhLO0lBQVEsV0FBQTtHQUFrQztZQUM3RHlyQyxvQkFBb0J6ckM7SUFBcUMsV0FBQSxXQW5CeENnSyxRQW1CR2hLO0lBQXFDLE9BQUE7R0FBVTtZQUNuRTByQyx3QkFBd0IxckM7SUFBeUMsVUFBQSxXQXBCaERnSyxRQW9CT2hLO0lBQXlDLE9BQUE7R0FBVTtZQUMzRTJyQyxnQkFBZ0IzckM7SUFBaUMsVUFBQSxXQXJCaENnSyxRQXFCRGhLO0lBQWlDLE9BQUE7R0FBVTtZQUMzRGtnQixZQUFZbGdCLEdBQUksT0FBSkEsTUFBaUI7WUFDN0I4ZixzQkFBc0I5ZixHQUFHa00sR0FBSGxNLFlBQUdrTSxHQUFIbE0saUJBQThEO1lBQ3BGMmYsb0JBQW9CM2YsR0FBR2tNLEdBQUhsTSxZQUFHa00sR0FBSGxNLGlCQUEwRDtZQUU5RTRyQywyQkFBMkI1ckMsR0FBR2tNO0lBQ25CLElBQVQyL0IsU0FBUztJQUNiLDZCQUY2QjdyQyxPQUN6QjZyQyxRQUQ0QjMvQjtJQUg5QjRULHNCQUcyQjlmLEdBQUdrTTtJQUdoQyxPQUZJMi9CO0dBR0U7WUFHSkMseUJBQXlCOXJDLEdBQUdrTTtJQUNqQixJQUFUMi9CLFNBQVM7SUFDYiw2QkFGMkI3ckMsT0FDdkI2ckMsUUFEMEIzL0I7SUFUNUJ5VCxvQkFTeUIzZixHQUFHa007SUFHOUIsT0FGSTIvQjtHQUdFO1lBVUpFLHlCQUF5QkMsS0FBSTkvQjtJQUdKLElBVEZraUIsTUFTRSxzQkFISWxpQjtpQkFMQXVoQixHQUFLLFdBQUksV0FEZlcsS0FDTVgsR0FBYztJQUF2QztLQUFBLE1BQUEsMkJBS3FCdWU7O0tBSHpCcGU7O1NBQVFoc0IsNEJBQVUsc0JBQWxCZ3NCLEdBQVFoc0I7OztvQkFPSHFxQyxvQkFBTyxPQUFQQTs7OztHQUs2RTtZQUdsRkMsK0JBQWtDbHNDLEdBQUU2ckM7SUFDaEMsWUFBQSw2QkFEOEI3ckMsT0FBRTZyQztnQkFHcEMsT0FBQTtRQUNLMy9CO0lBSjZCbE0sUUFabEMrckMseUJBWWtDL3JDLE9BSTdCa007O0dBQ3dFO1lBRzdFaWdDLCtCQUFnQ25zQyxHQUFFNnJDO0lBQzlCLFlBQUEsNkJBRDRCN3JDLE9BQUU2ckM7Z0JBR2xDLE9BQUE7UUFDSzMvQjtJQUoyQmxNLFFBcEJoQytyQyx5QkFvQmdDL3JDLE9BSTNCa007O0dBQThFO1lBR25Ga2dDLGdCQUFnQnBzQyxHQUFHa007aUJBQ0Zxc0I7S0FDakIsT0FyREF6WTtjQW1EZ0I5Zjs7ZUFFdUMsVUFBQSxXQUZwQ2tNLEdBQUhsTTtlQUV1QyxPQUFBLGlDQUR0Q3U0QjtjQUMyRDtJQUFDO0lBRGpFLE9BQUE7R0FDa0U7WUFHOUU4VCxZQUFZcnNDLEdBQUdzc0M7aUJBQ0UvVDtLQUNqQixPQTFEQXpZO2NBd0RZOWY7O2VBR1AsVUFBQSxnQ0FIT0EsT0FBR3NzQztlQUdWO3lCQURMLGlDQURpQi9ULE1BREx2NEI7O2NBSTZCO0lBQUM7SUFIOUIsT0FBQTtHQUcrQjtZQUczQ3VzQyxlQUFldnNDO2lCQUNFdTRCO0tBQ2pCLE9BakVBelk7Y0ErRGU5Zjs7ZUFFdUIsT0FBdEMsaUNBRGlCdTRCLE1BREZ2NEI7Y0FFNkQ7SUFBQztJQURqRSxPQUFBO0dBQ2tFO1lBRzlFb2dCLFlBQVlwZ0IsR0FBSSxPQUFKQSxLQUFpQjtZQUU3QnFlLCtCQUF3Q3JlLEdBQUV3c0M7SUFBRnhzQyxRQUV2QyxzQ0FGeUN3c0M7O0dBRVM7WUFHbkRwdUIsK0JBQW9DcGU7SUFDdEMsNkNBRHNDQTtHQUN1QztZQUczRWlmLCtCQUFrQ2pmLEdBQUVrTSxHQUFGbE0sUUFBRWtNLFlBQXdDO1lBRTVFdWdDLCtCQUFpQ3pzQyxHQUFFa0ssbUJBQWtCZ0MsR0FBRVU7SUFDekQsaUNBRG1DNU0sV0FBRWtLLG1CQUFrQmdDLEdBQUVVO0lBQ3pELE9BQUEsV0FEbUM1TTtHQUVEO1lBR2hDNmUscUJBQXFCN2UsR0FBRWtNLEdBQUZsTSxZQUFFa00sYUFBZ0M7WUFDdkQ2UyxvQkFBb0IvZSxHQUFFa00sR0FBRmxNLFlBQUVrTSxhQUErQjtZQUVyRHdnQyxhQUFhMXNDLEdBQUVrTTtJQUNPLElBQXBCaEMsb0JBQW9CLFdBakhMc1MsMkJBZ0hKeGM7O0tBR2IsT0FYQXlzQywrQkFRYXpzQyxHQUNYa0ssbUJBRGFnQztJQUcwQztJQURwQyxPQUFBO0dBQ3FDO1lBRzFEeWdDLGNBQWMzc0MsR0FBRTRzQyxZQUFXMWdDO0lBQ0wsSUFBcEJoQyxvQkFBb0IsV0F2SExzUywyQkFzSEh4YzthQUVaNnNDLFVBQVVEO0tBY1o7TUFBeUI7S0FBQSxPQTlCekJIO2NBY2N6c0MsR0FDWmtLLG1CQUR5QmdDLEdBRWYwZ0M7SUFlcUQ7SUFFbkU7S0FBeUI7SUFBQSxJQUdyQixVQUFBLHlCQXBCQUMsV0FGY0QsYUFzQmQ7Ozs7OEJBSUY7OztHQUFFO1lBR0ZFLGtCQUFrQjlzQyxHQUFFeXRCLEdBQUV2aEI7aUJBQ3VCMGdDO0tBQzdDLE9BQUUsV0FGb0IxZ0MsR0FFcEIsK0JBRDJDMGdDO0lBQ2Q7SUFEUyxPQTlCeENELGNBNkJrQjNzQyxHQUNKLCtCQURNeXRCO0dBRVk7WUFHaENzZixtQkFBbUIvc0MsR0FBRTRzQyxZQUFXMWdDO0lBQ1YsSUFBcEJoQyxvQkFBb0IsV0F6SkxzUywyQkF3SkV4YzthQUVqQjZzQztLQUdGO01BQ0s7S0FBQSxPQXRETEosK0JBZ0RtQnpzQyxHQUNqQmtLLG1CQUQ4QmdDO0lBT3lCO0lBRTNEO0tBQXlCO0lBQUEsSUFJckIsVUFBQSx5QkFYQTJnQyxXQUZtQkQsYUFhbkI7Ozs7OEJBSUY7OztHQUFFO1lBR0ZJLHVCQUF1Qmh0QyxHQUFFeXRCLEdBQUV2aEI7SUFBSSxPQXBCL0I2Z0MsbUJBb0J1Qi9zQyxHQUE2QiwrQkFBM0J5dEIsSUFBRXZoQjtHQUFvRDtZQUsvRStnQywyQkFBMkJqdEM7SUFDN0IsT0FBQSxzQ0FENkJBO0dBQzhCO0dBSTlDLElBQVh1YztZQUVBRyxjQUFjMWMsR0FBRzJXO0lBQ25CLE9BSGE7aURBRUczVyxPQUFHMlcsS0FGakI0RjtHQUd3RTtZQUd4RTJ3QixVQUFVbHRDO0lBQ1osR0E3TG1CMEI7S0E2TEwsMkRBREYxQixHQTVMT3NCO0lBOExULElBQU5xVixNQUFNO0lBRkUzVyxPQUFBQTtJQUFBQSxRQUVSMlc7SUFGUTNXO0lBTVosaUNBTllBO0lBT3lCLElBQWpDbXRDLGlDQUFpQyxXQW5NbEJ0aUMsY0E0TFA3SztJQVFaLGFBQTBDa00sR0FBSyxPQUFBLFdBQUxBLE1BQVM7SUFBbkQseUJBUllsTTtJQUpWMGMsY0FJVTFjLEdBRVIyVztJQVFKLFdBdE1tQjJZLGFBNExQdHZCLEdBQUFBO0lBWVY7S0FBTSxZQUFBLHdDQVpJQTs7S0FlUzs7TUFETGlPO01BQUxEO01BQ1UsTUFBQTtLQUFqQjt5REFEWUMsYUFBTEQ7O0lBT21CO1dBckJsQmhPO0tBcUJrQixNQUFBO0tBQTFCb3RDLGFBQWE7SUFyQkxwdEMsUUFxQlJvdEM7SUFyQlFwdEMsUUF1QmEsV0FuTk42SyxjQTRMUDdLLEtBT1JtdEM7SUFQUW50QyxRQXdCd0IsZ0NBeEJ4QkEsT0FxQlJvdEM7SUFJRCxVQUFBLGlDQXpCU3B0QztJQXlCVDtLQUFxRDtNQUFBLE1BQUEsV0FyTnJDb3RCLGtCQTRMUHB0QjtZQXlCNEM7OztJQUFBLFFBQ25ELGlDQTFCT0E7SUEwQlAsYUFDbUNrTSxHQUFLLE9BQUEsV0FBTEEsTUFBUztJQUFqRCx5QkEzQllsTTtJQUFBQTtTQTVMTzBCLGNBQUFBO0lBMk5qQjs7TUFHYW5CO01BQUFDO01BQUEyMkIsZ0RBQUEzMkI7TUFBQTZzQyxpQ0FBQTlzQztvQkFBQTQyQixjQUFBa1c7O0lBRGM7S0FBQSxNQTFNM0I1QixvQkF5S1V6ckM7S0FpQ1MsTUFBQTtLQUFqQixVQUFDLFdBN05jc2lCLGNBNExQdGlCOzs7R0FrQ3lCO1lBR25Dc3RDO0lBQ0YsR0FsT21CNXJDO0tBa09MO0lBQ04sSUFBSjBFLE1BQUksV0FqT05wRztJQWtPQyxHQUFBLFdBcE9nQnV1QixTQW1PZm5vQjs7NENBbk9lOUUsV0FtT2Y4RTs7Ozs7O0tBR0Y7O0lBS0E7S0EvQ0E4bUMsVUF1Q0U5bUM7S0EzQ0ZzVyxjQTJDRXRXLEtBU21CO0tBQ2xCLEtBNU5Ib0gsY0FrTkVwSDtNQWVKLFdBbFBtQjZELHVCQW1PZjdELEtBQUFBO1NBbk9lMUU7T0FtUEw7TUFBQSxJQUFBLHNCQUNGLE1BQUEsV0FwUE80Z0IsY0FtT2ZsYztNQWdCVSxPQUFBOzs7R0FDNkI7WUFHekNtbkM7SUFDRixJQUFJdnRDLElBeFBleXVCO0lBd1BmenVCOzs7T0FJSTs7OztNQUEwRTs7R0FBQztZQUdqRnd0QztJQUNGLEdBaFFtQjlyQyxPQWdRTDtJQUVNLFVBQUE7OztHQUFVO1lBRzVCNGMsaUJBQWlCdGUsR0FBSSxPQUFKQSxNQUFzQjtZQUN2Q3VlLHFCQUFxQnZlLEdBQUV1MkIsR0FBRnYyQixRQUFFdTJCLFlBQTJCO1lBQ2xEcFksc0JBQXNCbmUsR0FBRXUyQixHQUFGdjJCLFFBQUV1MkIsWUFBNEI7WUFDcEQ3WCxRQUFNMWUsR0FBSSx3Q0FBSkEsT0FBcUI7WUFFM0J3ZSwyQkFBNkJvUixLQUFnQzV2QjtJQUMvRCxHQUQrQjR2QjtTQUF5QkMsTUFBekJELFFBQUE2ZCx5QkFBeUI1ZDs7U0FBekI0ZDtJQUMvQixHQUQrQkE7S0FDRixVQUFBLFdBM1FWcmdCLGtCQTBRNENwdEI7S0FDbEMsR0FBQTtNQUN4QixPQUFBOzs0Q0FGMERBO0dBR3BCO1lBR3pDMHRDLFlBQWFuZ0M7SUFDZixHQUFHLG1DQURZQTs7dURBQUFBOzs7Ozs7OztJQUdQLEdBQUEsbUNBSE9BO3dCQUlDdk4sR0FBSyxPQVpuQjBlLFFBWWMxZSxHQUFZO0tBQWpCLE9BQUE7O0lBRWUsSUFBcEIydEMsd0JBTlNwZ0M7aUJBT0Z2TjtLQURQMnRDO0tBR0MsT0FBQSxtQ0FIREE7ZUFJRztnQkFKSEEsdUJBTlNwZ0MsR0FSYm1SLFFBZVcxZTtJQU1DO0lBTk4sT0FBQTtHQU1RO1lBR2RvZixpQkFBaUJwZjtJQUVuQixLQUZtQkEsY0FBQUE7SUFJbUI7V0FKbkJBO0tBSW1CLE1BQUE7S0FBaEM0dEMsa0JBQTJCO0lBQy9CLE9BQUEsZ0NBTGlCNXRDLE9BSWI0dEM7R0FFaUI7WUFPZnpkLElBRVFud0I7SUFGQSxJQWVTNnRDO0lBWnZCO0tBQUcsR0FBQSxtQ0FZb0JBO01BWGxCLE9BT0hDLGVBVFk5dEM7S0FHRixjQUFBLDJCQUhFQTtlQUdGO0tBRUcsSUFRQSt0QyxTQVJBLDJCQUxEL3RDO0tBTVosV0FyVGVpSyx1QkErU0hqSyxHQWFDK3RDOzs7VUFBUUMsOEJBQUFIO01BQ3ZCO09BQU8sS0FBQSxzQkFkTzd0QyxNQWFDK3RDO1FBQ2YsTUFBQTtPQUNHLEdBQUEsbUNBRm9CQyxpQ0FJckIsMkJBakJZaHVDLE1BYUMrdEMsU0FJYixPQVJBRCxlQVRZOXRDO09BbUJULElBbkJZaXVDLDhCQWFNRDtPQVFyQixJQUFNLFVBQUEsV0FST0Q7YUFXRGhnQyxXQUFBQywwQkFBQUQ7O1dBWFNpZ0MsOEJBYk5DOztNQXlCSjtPQUFMQyxLQUFLO09BQ1EsTUFBQTtNQUFqQiw2REFESUEsTUFETWxnQztVQVhTNi9CLDRCQWJOSTs7O1NBYU1KLDRCQWJOSTs7R0FGMkM7WUFXMURILGVBQWU5dEM7SUFDVixjQUFBLDJCQURVQTtjQUNWO3dCQUNpQyxPQWJsQ213QixJQVdXbndCLEdBRTRCO0lBQTFCLFVBbERuQjBlLFFBZ0RpQjFlO0lBRVksT0FBQTtHQUFpQjtZQW1CNUM0cUMsVUFBUzErQjtJQUNYO0tBQUk5RixNQUFJLFdBNVVScEc7S0E2VUltdUMsUUFEQS9uQztLQUVBZ29DLGNBQWMsMkJBRGREO0tBRzRCLE1BQUEsV0FsVmYzeEIsMkJBOFVicFc7S0FHQThEO09BQ0Y7SUFFRiwyQkFMSWlrQyxXQUVBamtDLG1CQUpPZ0M7a0JBR1BraUM7aUJBS2dCLFdBclZIdGhDLFNBOFViMUcsS0FHQThELG1CQXBDRWltQixLQWlDRi9wQjtHQU9pRDtHQUl0QyxvQkFqS2ZzVztZQXFLQXNELFNBQVNoZ0IsR0FBSSxPQUFKQSxNQUFjOzs7Ozs7OztPQTdWTnNCO09BRWpCdEI7T0FGaUI0STtPQUFBNFQ7T0FBQXVTO09BQUFIO09BQUEza0I7T0FBQTZDO09BQUFraUI7T0FBQVg7T0FBQUg7T0FnQmpCek47T0FNQVA7T0FzS0FndEI7T0FxQ0FJO09BL01BOUI7T0FDQUM7T0FDQUM7T0FDQUM7T0FyQmlCcnBCO09BQUFoQztPQUFBOE07T0FBQXZpQjtPQUFBeVU7T0EwRWpCOHNCO09BWUFHO09BS0Fuc0I7T0FxTUFoQjtPQTlMQWhCO09BTEFDO09BN0ZpQjRDO09BQUFEO09BcVFqQjFDO09BQ0FDO09BQ0FKO09BaFBBMkI7T0FDQUg7T0FFQWlzQjtPQU9BRTtPQTBCQUk7T0FRQUM7T0FuRWlCM3NCO09BK0VqQjZzQjtPQTlEQTcrQjtPQStGQWsvQjtPQU1BQztPQTZCQUc7T0FLQUM7T0FvQkFDO09BdEVBL3RCO09BUUFGO09BREFGO09BTEE0dEI7T0F5RUFROzs7Ozs7Ozs7T0EzS0Fua0M7T0FFQUU7T0ErT0F1a0M7T0FRQUM7T0FTQTl1QjtPQVFBZ3ZCO09BTkFsdkI7d0NBbUVFb3NCOztPQWdCRjVxQjs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZRS9WQXFPLFlBQVlua0IsbUJBQWtCZ0MsR0FBRVU7SUFBSSxPQUFBLG9CQUFRLGtCQUFoQzFDLG1CQUFrQmdDLEdBQUVVO0dBQXdDO1lBRXhFeWhDLHdCQUF3Qm5rQyxtQkFBa0JnQyxHQUFFVTtJQUM5QyxPQUFBOzthQUFpQzthQURQMUM7YUFBa0JnQzthQUFFVTtHQUNlO1lBRzNENFA7SUFBK0IsT0FBMEIsZ0JBQUE7R0FBTTtZQUMvRDRELG1CQUFpQixPQUFZLGdCQUFBLGtCQUFNO1lBQ25Da3VCLHNCQUFvQixPQUFZLGdCQUFBLGtCQUFNO1lBQ3RDcHVCO0lBQXFELFVBRHJEb3VCO0lBQ3FELE9BQUE7R0FBbUI7WUFDeEVDO0lBQW9CLGtCQUFBO0lBQTBCLE9BQUEsNEJBQVY7R0FBZTtZQUNuREM7SUFBaUI7SUFBZ0IsT0FBQSw0QkFBQTtHQUFrRDtZQUNuRnB2Qix3QkFBc0IsT0FBaUIsZ0JBQUEsa0JBQU07WUFDN0NJLHVCQUFxQixPQUFnQixnQkFBQSxrQkFBTTtZQUMzQzZzQixZQUFhQztJQUFXLE9BQUEsZ0JBQVksa0JBQXZCQTtHQUF1QztZQUNwRG1DO0lBQXdCLE9BQWdCLGdCQUFBO0dBQU07WUFDOUM5QztJQUE4RCxVQUQ5RDhDO0lBQzhELE9BQUE7R0FBdUI7WUFFckZwd0IsK0JBQXdDM1g7SUFDMUMsT0FBQSxnQkFBd0Msa0JBREVBO0dBQ007WUFHOUMwWCxzQ0FBeUMsT0FBb0MsZ0JBQUE7R0FBTTtZQUNuRkQsc0JBQXNCdXdCO0lBQU8sT0FBQSxnQkFBc0Isa0JBQTdCQTtHQUF3QztZQUM5RHpCLGtDQUFnQyxPQUEyQixnQkFBQTtHQUFNO1lBQ2pFdnVCLGVBQVcsT0FBTSxnQkFBQSxrQkFBTTtZQUV2QkYsMkJBQTRCaXZCLCtCQUM5QixPQUFtRCxnQkFEckJBLHdCQUNxQjtHQUFNO1lBR3ZEQyxZQUFhbmdDO0lBQ2Y7S0FBaUMsTUFBQSxnQkFEbEJBO0tBQ1htZ0MsY0FBYztLQUNkdG5DLE1BQUk7d0JBQ1MsT0FBakIsV0FGSXNuQyxhQUNBdG5DLEtBQzBCO0lBQXhCLE9BQUE7R0FBeUI7WUFHN0J5RSxvQkFBa0IsT0FBYSxnQkFBQSxrQkFBTTtZQUNyQ3VpQix3QkFBc0IsT0FBaUIsZ0JBQUEsa0JBQU07WUFJM0N2TDtJQUF5QixPQUFvQixnQ0FBQTtHQUFNO1lBQ25ESyx3QkFBc0JoVztJQUFJLE9BQUEsa0NBQXNCLGtCQUExQkE7R0FBbUM7WUFDekQ4VixzQkFBb0I5VjtJQUFJLE9BQUEsZ0NBQW9CLGtCQUF4QkE7R0FBaUM7WUFDckR5aUMsNkJBQTRCemlDO0lBQUksT0FBQSx1Q0FBMkIsa0JBQS9CQTtHQUF3QztZQUNwRTBpQywyQkFBMEIxaUM7SUFBSSxPQUFBLHFDQUF5QixrQkFBN0JBO0dBQXNDO1lBRWhFMmlDLGlDQUFrQ2hEO0lBQ3BDLE9BQUE7NkNBQWtDLGtCQURFQTtHQUNXO1lBRzdDaUQsaUNBQWdDakQ7SUFDbEMsT0FBQTs2Q0FBZ0Msa0JBREVBO0dBQ1c7WUFHM0NrRCx5QkFBdUI3a0MsbUJBQWtCZ0M7SUFDM0MsT0FBQTtxQ0FBdUIsa0JBREVoQyxtQkFBa0JnQztHQUNPO1lBR2hEOGlDLDBCQUF3QjlrQyxtQkFBbUJnQyxHQUFFdWhCO0lBQy9DLE9BQUE7O2FBQXdCO2FBREV2akI7YUFBbUJnQzthQUFFdWhCO0dBQ007R0FyQnpDOzs7O09BRVY1TDtPQUNBSztPQUNBRjtPQUNBMnNCO09BQ0FDO09BRUFDO09BSUFDO09BSUFDO09BSUFDOzs7Ozs7OztPQXRERnh5Qjs7Ozs7Ozs7O09BTkE2UjtPQUVBZ2dCOzs7T0FPQW51QjtPQURBb3VCO09BR0FFO09BREFEO09BR0EvdUI7T0FDQTZzQjtPQVBBanNCO09BS0FoQjtPQUlBdXNCO09BREE4QztPQVNBeEI7T0FOQTV1QjtPQUlBRDtPQUNBRDtPQUVBTztPQUVBRjtPQUlBa3ZCO09BTUE3aUM7T0FDQXVpQjs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZRWpDQWxPO0lBQWlCLFVBQUE7SUFBQSxPQUFBO0dBQTBEO1lBQzNFbmYsTUFBTUU7SUFBeUIsVUFEL0JpZjtJQUNhLE9BQUEsOENBQVBqZjtHQUE4QztZQUNwRGdQLEdBQUcweEI7SUFBc0IsVUFGekJ6aEI7SUFFVSxPQUFBLDhDQUFQeWhCO0dBQTJDO1lBRTlDd0UscUJBQXNCdkgsTUFBS3dIO0lBQ1UsVUFMckNsbUI7SUFLRixPQUFBLHlDQUR3QjBlLFdBQUt3SDtHQUN1QztZQUdsRTlwQixhQUFjK0IsT0FBT3VnQixNQUFLMXVCO0lBQ1UsVUFUcENnUTtJQVNGLE9BQUE7MkNBRGdCN0IsT0FBT3VnQixXQUFLMXVCO0dBQ21DO1lBRzdENjJCLE1BQVExb0IsT0FBT3VnQixNQUFNNEgsbUJBQW1CblAsVUFBU3AyQixNQUFLaU07SUFDSyxVQWIzRGdUO0lBYUYsT0FBQTs7YUFEVTdCO2FBQU91Z0I7YUFBTTRIO2FBQW1CblA7O2FBQVNwMkI7YUFBS2lNO0dBQzRCO1lBR2xGODVCLFFBQU8zb0IsT0FBT3VnQixNQUFNNEgsbUJBQWtCdmxDLE1BQUtpTTtJQUNLLFVBakJoRGdUO0lBaUJGLE9BQUE7O2FBRFM3QjthQUFPdWdCO2FBQU00SDs7YUFBa0J2bEM7YUFBS2lNO0dBQzRCO1lBR3ZFaVEsVUFBVWxjLE1BQUtpTSxHQUFFVTtJQUEwQixVQXBCM0NzUztJQW9CcUIsT0FBQSw4Q0FBWGpmLE1BQUtpTSxHQUFFVTtHQUFtRDtZQUNwRXdQLE9BQU91a0IsTUFBS3owQixHQUFFVTtJQUF1QixVQXJCckNzUztJQXFCa0IsT0FBQSw4Q0FBWHloQixNQUFLejBCLEdBQUVVO0dBQWdEO1lBRTlEeVAsaUJBQWtCZ0IsT0FBT3VnQixNQUFNNEgsbUJBQWtCdDJCLFVBQVNoRDtJQUNDLFVBeEIzRGdUO0lBd0JGLE9BQUE7O2FBRG9CN0I7YUFBT3VnQjthQUFNNEg7O2FBQWtCdDJCO2FBQVNoRDtHQUM0QjtZQUd0Rmc2QixtQkFBbUI3b0IsT0FBT3VnQixNQUFNNEgsbUJBQWtCdDJCLFVBQVNoRDtJQUszRCxVQWhDQWdUO0lBNEJGLE9BQUE7O2FBRHFCN0I7YUFBT3VnQjthQUFNNEg7O2FBQWtCdDJCO2FBQVNoRDtHQU8xRDtZQUdEaTZCLGFBQWFsbUMsTUFBSzYyQjtJQUE2QixVQXJDL0M1WDtJQXFDc0IsT0FBQSw4Q0FBVGpmLE1BQUs2MkI7R0FBb0Q7WUFDdEUxWixZQUFZbFI7SUFBNEIsVUF0Q3hDZ1Q7SUFzQ2dCLE9BQUEsOENBQUpoVDtHQUE4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUt4RGlQLFFBQU1sYixNQUFPLE9BQUEsZ0JBM0NmaWYsZ0JBMkNRamYsTUFBa0M7WUFDeEMra0MsWUFBVS9rQyxNQUFLaU0sR0FBRVU7SUFBSSxPQUFBLGdCQTVDdkJzUyxnQkE0Q1lqZixNQUFLaU0sR0FBRVU7R0FBdUM7WUFDeEQrRCxLQUFHZ3dCLE1BQU8sT0FBQSxnQkE3Q1p6aEIsZ0JBNkNLeWhCLE1BQStCO1lBQ2xDb0UsU0FBT3BFLE1BQUt6MEIsR0FBRXV5QjtJQUFJLE9BQUEsZ0JBOUNwQnZmLGdCQThDU3loQixNQUFLejBCLEdBQUV1eUI7R0FBb0M7Ozs7Ozs7O09BekJwRHJpQjtPQURBRDtPQWxCQWxOO09BREFsUDtPQW9DQW9tQzs7Ozs7Ozs7UUFTRXBCO1FBRkFDOzs7Ozs7O1FBQ0FyMEI7UUFGQXdLO09BdkNGZ3FCO09BSUE3cEI7T0FJQXlxQjtPQUlBQztPQVdBRTtPQUpBN3BCO09BZUFlOzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WU1yQ0F1MEIsUUFBUWppQyxJQUFHQyxJQUFJb25CLElBQUk2YTs7U0FFakJqaUMsZUFESUQ7S0FFUixPQUFBLDRCQUZRQSxJQUNKQyxJQUZhb25CLElBQUk2YTs7MERBQVhsaUMsSUFBR0M7OztZQVNQaWtCLFNBQU9obkI7SUFBSSxPQUFnQiwyQ0FBcEJBO0dBQTBCO1lBRWpDa25CLEtBQUs5ekIsR0FBR2tNO2lCQUdONHJCO0tBRmUsU0FFZkEsVUFBb0IsT0FBQSx1Q0FBcEJBO1NBREdsckIsSUFDSGtyQjtLQURRLE9BQUEsV0FGRjVyQixHQUVIVTtJQUN1QztJQUYzQixPQUFBLHVDQURaNU07R0FHdUM7R0FJdEM7SUFBTjhFOzs7Z0JBREk5RSxHQUFHa007cUJBQTJCdEssR0FBSyxPQUE1Qiw0QkFBdUJBLEdBQTNCc0ssR0FBK0M7UUFBekIsT0FBQSx1Q0FBekJsTTtPQUFtRDs0Q0FOdkQ4ekIsTUFPQWh2QixLQVRBOHVCOzs7Ozs7Ozs7Ozs7WUFZSmllLEtBQUtwa0IsR0FBSSxPQUFnQiwyQ0FBcEJBLElBQTZCO1lBQ2xDcWtCLE1BQU1DLFFBQVMsT0FBQSwyQkFEZkYsTUFDTUUsUUFBb0M7WUFDMUNDLFVBQVVoeUMsR0FBR2tNO2lCQUEyQnRLLEdBQUssT0FBNUIsNEJBQXVCQSxHQUEzQnNLLEdBQXFEO0lBQS9CLE9BQUEsdUNBQXpCbE07R0FBeUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FGbkU2eEM7T0FDQUM7T0FDQUU7T0F2QkFMOzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WVNGQWhGLGNBQWNDLFlBQVcxZ0M7SUFBNkIsVUFBQTtJQUF6QixPQUFBO2FBQVcsNkNBQTFCMGdDLFlBQVcxZ0M7R0FBaUQ7WUFFMUU0Z0Msa0JBQWtCRixZQUFXMWdDO0lBQWlDLFVBQUE7SUFBN0IsT0FBQTthQUFXLDZDQUExQjBnQyxZQUFXMWdDO0dBQXFEO1lBQ2xGNmdDLG1CQUFtQkgsWUFBVzFnQztJQUFrQyxVQUFBO0lBQTlCLE9BQUE7YUFBVyw2Q0FBMUIwZ0MsWUFBVzFnQztHQUFzRDtZQUVwRjhnQyx1QkFBdUJKLFlBQVcxZ0M7SUFDRixVQUFBO0lBQWxDLE9BQUE7YUFBVyw2Q0FEYzBnQyxZQUFXMWdDO0dBQ2tCO09BTXRENUs7WUFFSXVELE9BQU9xSDtJQUE0QixVQUFBO0lBQXhCLE9BQUEsV0FBVyw2Q0FBZkE7R0FBcUM7R0FMbkMsSUFNVGk2Qyw4QkFOUyxZQUdiN2tELFdBRUl1RCxRQUNBc2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FmRnhaO09BRUFHO09BQ0FDO09BRUFDOzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJR2dGYTErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW5CYTtJQW5DMUJ2TztJQUNBa1A7SUFDQTB0QjtJQUNBeEg7SUFDQVE7SUFDQWI7SUFDQWlSO0lBQ0F6UjtJQUNBNWE7SUFDQXNoQjtJQUNBVztJQUNBako7SUFDQXlUO0lBQ0F6TDtJQUNBRTtJQU9BaW5CO0lBR0F5RTtJQUdBQzs7Ozs7O0lBUTBCOzs7Ozs7SUFhbkIsSUFNTTl6QyxTQU5OO0lBQ21CO0lBQ0E7SUFDQTtJQUNBO0lBQ25CO0tBQ01GLE1BRE47S0FDTUM7S0FBQUU7S0FBQTVSO0tBQUEwQjthQUFBbVEsV0FBQXc4QixPQUFBQztLQUFBLE9BQUEsc0JBQUFELE9BQUFDO0lBQUc7OztNQUFIOWdDO01BQUFrRTtNQUFBRztNQUFBblE7TUFBQTFCO01BQUE0UjtNQUFBRDtNQUFBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F0RGJ4UztPQUNBa1A7T0FDQTB0QjtPQUNBeEg7T0FDQVE7T0FDQWI7T0FDQWlSO09BQ0F6UjtPQUNBNWE7T0FDQXNoQjtPQUNBVztPQUNBako7T0FDQXlUO09BQ0F6TDtPQUNBRTtPQU9BaW5CO09BR0F5RTtPQUdBQzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZaUNuREE2c0Usb0JBQXFCQyxNQUFLQztJQUFPO01BWGhDLDZCQVd5QkE7Z0JBUnBCLHdCQVFvQkE7OztLQUx4QjtNQUFBOztTQUFvQjs7Ozs7Ozs7Ozs7OztVQUVYOztTQUR5QztRQUNuQzthQUZLLDRCQUtJQTtJQUFPLHNCQUF3Qix5QkFBcENELE1BQUtDO0lBQStCO0dBQW1CO1lBZ0J4RUM7SUFBYyx1QkFDUkMsY0FBc0IsT0FBQSx3QkFBdEJBO1FBRUFDO09BQUFBO2VBQUFBOztnQkFBQUE7O1dBRGFDLGNBQU5DO09BQWEsT0FBQSx1QkFBYkEsUUFGYkosWUFFbUJHOzs7OztLQWhCRkU7S0FBQVAsT0FBQU87S0FBTUM7S0FBUUMsT0FpQnpCTDtJQWhCWjtRQURxQ0s7a0JBQUFBOztXQUFBQyxPQUFBRCxTQUc5QlI7T0FBa0IsR0FMdkJGLG9CQUVxQkMsTUFHaEJDO1FBQ1M7U0FKYVUsb0JBR3RCVixVQUhzQk87U0FBTkksU0FLVix5QkFMVVosTUFHaEJDO1NBSGdCRCxPQUFBWTtTQUFNSixVQUFBRztTQUFRRixPQUFBQzs7Ozs7Ozs7Ozs7Y0FBQUcsU0FBQUosU0FPakJLLFlBQU5DO1VBQXVCLEdBVG5DaEIsb0JBRXFCQyxNQU9UZTtXQUNFO1lBUmFDLG9CQU9mRCxZQUFNRCxLQVBTTjtZQUFOUyxTQVNWLHlCQVRVakIsTUFPVGU7WUFQU2YsT0FBQWlCO1lBQU1ULFVBQUFRO1lBQVFQLE9BQUFJOzs7Ozs7Ozs7O3dCQUV4QiwwQkFGZ0JMOztNQW1CaEIsVUFBQSwwQkFGREosUUFITkY7TUFLTyxPQUFBLG1CQUFBOztTQUVIZ0I7VUFBQUEsR0FETSxPQUFBO0tBR1I7OztTQUFjLHNCQUVWakI7cUJBQWMsV0FBZEE7YUFEV2E7U0FBSyxXQUNoQmIsTUFYTkMsWUFVaUJZO1FBQ2tDO01BRmpELE1BQUEsMEJBRkVJO0tBQ0wsT0FBQSxlQUNFOztHQUdtQjtZQUd4QkMsTUFBTUM7SUFBNEIsVUFmOUJsQixZQWVFa0I7O0dBQThDO1lBQ3BEQyxnQkFBZ0JEO0lBQTRCLFVBQUEsd0JBQVcsNkJBQXZDQTs7R0FBaUU7Ozs7O2FBTWpGRTtLQUFBLFlBQ0U7S0FHTTtNQUFBQztNQURBQztNQUNBQyxVQUFBLGlDQUFBRjtNQUZORyxnQ0FFTUQ7TUFOR0UsZ0JBS0hIO01BTEdJLFVBQUEsc0JBQUFEO01BQVhFLGdDQUFXRDtNQUtIRSxjQUxSRDtNQUlFRSxrQ0FDTUQsZUFETko7S0FBQSxvQkFBQUs7SUFJZTthQUdmQyxVQUNFQztLQUFPLE9BQUEsd0JBQWMsNkJBQXJCQTtJQUFpRTtJQUd6RCxVQUpWRCxVQS9CRTlCLFlBc0JKb0I7SUFhRjtJQUNBOzs7UUFBQTs7Ozs7SUFBQTtJQUVFLFVBUEVVLFVBL0JFOUIsWUFzQkpvQjtJQWVGO0lBS0E7OztRQUFBOzs7OztJQUFBLE9BQUE7R0FBcUY7R0FOckY7SUFBQTs7T0FBQTs7Ozs7Ozs7Ozs7U0FBQTs7Ozs7OztJQU1BOztPQUFBOzs7Ozs7Ozs7OztTQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUlBO0tBR0lZLDJCQUEyQjtLQUZ6QkQsTUEvQ0EvQixZQWlERmdDO0tBRlMsTUFBQSx3QkFBYyw2QkFBckJEO0lBR047SUFDQTs7O1FBQUE7Ozs7O0lBQUEsT0FBQTtHQUFxQztHQUFyQztJQUFBOztPQUFBOzs7Ozs7Ozs7OztTQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUlBLGFBQWlDRSxHQUFLLFdBQUEsMkJBQUxBLElBQUFBLEdBQXVCO0lBQWhELElBQ2NDLFFBRGQ7OztNQUNlQztNQUFBQztNQUFBQyxpQ0FBQUQ7TUFBQUUsaUNBQUFIO29CQUFBRSxjQUFBQzs7SUFDZixJQURKcEIsa0NBQWtCZ0IsUUFDZCxLQXpERmxDLFlBd0RGa0I7SUFFSjtJQUNBOzs7UUFBQTs7Ozs7SUFBQSxPQUFBO0dBQW1CO0dBQW5CO0lBQUE7O09BQUE7Ozs7Ozs7Ozs7O1NBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQTVDRUQsT0FDQUUsaUJBaEJJbkI7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJSW9HRm1KO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUE5SEZDLE1BQU1SO0lBQW1CLFVBQUEsZ0NBQW5CQTtJQUFtQixPQUFBO0dBQXVCO1lBQ2hEUztJQUEyQixVQUFBO0lBQUEsT0FBQTtHQUFnQjtZQUUzQ0MsaUJBQWtCL0Q7SUFDSCxVQUFBLCtCQURHQTtJQUNILE9BQUE7R0FBd0I7R0FrQjdCLElBQVJnRSxnQkFDQUMsV0FBVztHQUNmLFNBQUlDLFVBQVdDLEdBQUdDO0lBQWEsc0NBQWhCRCxHQUFHQztJQUFhO0dBQW9EO1lBQzNFQztJQUNOLElBQUlDLElBQUksMENBQ1IsUUFMRU47U0FLWSx1Q0FEVk07S0FKRk47S0FTQSx1Q0FMRU07S0FPRyxHQUFBLHVDQVBIQTtVQU1FQzs7TUFJTSxjQUFBLHVDQVZSRDs7T0FhYztRQURMRTtRQUNEQyxNQUFNO1FBQ05wQixJQUFJLDZCQUZIbUIsTUFDREM7UUFFQUMsU0FBTyxnQ0FEUHJCO1FBRUQsTUFBQSw0QkFEQ3FCLHNCQUhDRixNQUdERTs7OztVQVROSDs7S0FZSjtNQUFBOztTQUFvRDtVQUFNdkU7VUFHdER1QixRQUZJLHFDQURrRHZCO1lBR3REdUI7Y0FEU29ELE1BQ1RwRDtVQURnQixPQUFBLCtCQUFQb0Q7O1NBRUYsWUE3Q2JaLGlCQTRDTXhDO3FCQUVXLE1BQUEsNEJBRlhBO1NBTTBCO1VBSGxCcUQ7VUFHa0IsTUFBQSx3QkFBVyx5QkFOckNyRDtTQU1HO1NBQUEsT0FBQSwrQkFIS3FEO1FBUWtCO01BZGxCLE1BQUEsdUNBbEJWTjtLQWtCRjtlQVpJQzthQUFBQTtpQkFWSlAsY0FFQUUsVUFDSUc7aUJBSEpMO1NBMENXYSxPQWhDUE4sZ0JBZ0NHTyxLQWhDSFA7S0FWSlA7S0E0Q00sVUFBQSwwQkEzQ05DO0tBMkNNOzs7TUFBNEM7T0FBQSxNQUFBLDJCQTNDbERBO2FBMkNpQyw2QkFGMUJhO0tBRTBCO2dCQUU1QjtpQ0E3Q0xiLFVBeUNPYTtlQXhDUFosVUE4Q0FhLGFBTldGOzs7SUFwQ3dCO0dBeUNLO1lBQ3hDRTtJQUlNLDJCQW5ETmQ7SUFvREYsT0FsRE1JO0dBa0RDO1lBcEVQVztJQXVFQSxPQXhERWhCLGdCQUVBRSxVQUNJRyxXQUhKTDtHQTREeUM7WUFHM0NpQixJQUFJMUssTUFBS3lGO0lBRUgsSUFFSnVCLFFBRkkscUNBRkd2QjtPQUlQdUI7U0FEU29ELE1BQ1RwRCxVQUhBbkIsbUJBRVN1RTs7S0FFRixjQXZGVFosaUJBc0ZFeEM7O1VBR1EyRCw2Q0FIUjNELE9BR1EyRDs7NkJBSFIzRDtTQUhBbkI7O0lBUUosVUFSSUE7O0tBVW9EO01BQWpEK0UsUUFWSC9FO01BVW9ELE1BQUEsd0JBQVcseUJBQTVEK0U7eUNBQWdDLHdCQVhqQzVLOzs7S0Fhc0M7Y0FaeEM2RjtNQVdnQndFO01BQUxRO01BQzZCLE1BQUEsd0JBQVcseUJBRHhDQTs7Y0FDWSx3QkFickI3SyxZQVljcUs7O1FBRmRTLFFBVEZqRjt3Q0FTa0Msd0JBVmhDN0YsT0FVQThLO0dBR3lFO0dBRzNEO0lBQWxCQztJQUVBQzs7O1FBRVMsSUFBSmpCLElBQUk7UUFKVGdCOzRCQU0yQyxPQXBHM0NOLE9Bb0dpRDtRQUFoRCx1Q0FGSVY7NEJBR3VDLE9Bckc1Q1UsT0FxR2tEO1FBQWpELHVDQUhJVjtRQUlKLHVDQUpJQSxHQWxHTFU7UUF1R2lELGtCLE9BekJqREM7O1FBNEJNLGtCLE9BNUJOQTtRQTBCQztRQUFBLE9BeEdERDs7WUE4R0FRLFlBQVUsT0FaVixzQkFGQUQsZ0JBYzhCO1lBQzlCRSxtQkFBaUIsT0FqQmpCSCxtQkFpQmlDO1lBRy9CSSxrQkFBa0JqTDtJQUNwQixJQUFJa0w7SUFDOEMsT0FBQTthQUQ5Q0EsZ0NBQzhDLHdCQUY5QmxMO0dBRTJDO0dBSXZDO0lBQXRCbUw7TUFBc0IsbUNBRnRCakM7R0FHSixTQUFJa0MsVUFBVUMsUUFBT0MsS0FBSUM7SUFFcEI7Z0NBRlNGLFFBQU9DLEtBQUlDO0lBRXBCO0dBQStFO1lBVmxGQztJQWFBO0lBQUcsR0FBQSxXQVpEUCxrQkFLQTlCO0tBUUc7SUFFVSxJQUFUc0MsU0FBUzthQUNURjtLQUNGOztNQUFRLFVBQUEsV0FqQlZOLGtCQUlBL0I7S0FhVTs7Ozs7O2FBQ0wsV0FsQkwrQixrQkFLQTlCO0tBYUssUUFDRSxrQ0FKSHNDO0tBSUc7SUFDRztJQUVrRCxVQUFBLGdDQU54REY7SUFUSkg7SUFnQmdELFVBQUEsZ0NBUDVDRztJQVRKSCxtQ0FEQUQ7SUFrQjhDLFVBQUEsZ0NBUjFDSTtJQVRKSDtJQWlCQSxPQUFBLGtDQVRJSztHQVUwQjs7Ozs7OztVQWxKaENyQyxPQUNBQyxTQW9IQTBCLE1BQ0FDLGFBRUFROzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN4SEF4SztJQUNBRTs7Ozs7Ozs7Ozs7OztPQURBRjtPQUNBRTs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzRCQXdLLGlCQUFrQkMsY0FBZSxRQUFmQTtHQUFxQztZQUt2REMsYUFBYUMsR0FBSSxPQUFKQSxhQUFvQjtZQUNqQ0MsY0FBY0QsR0FBRUUsR0FBSSxPQURwQkgsYUFDY0MsTUFBRUUsVUFBdUI7WUFJdkNDLFdBQVdILEdBQUVFO0lBR2Y7S0FDTUUsaUNBSlNGLElBQUZGO0tBR1RLO09BQ0VELGlDQUpPSjtVQUlQSTtVQUFBQSxpQ0FKT0o7V0FHVEssZ0JBUkZOLGFBS1dDO0dBVWlCO1lBSzVCTSxVQUFVQyxXQUFVUDtpQkFEcUJFO0tBREYsVUFidkNDLFdBZW9CSCxHQURxQkU7S0FERixPQUFBLGtDQUVuQkY7SUFEc0M7SUFBdEI7S0FDUVEsUUFEUiwyQkFDaEJSO2lDQUFWTztzQ0FBa0NDOztZQUU1Q0MsVUFBVUMsYUFBWVY7SUFDeEI7S0FBSVcsT0FEb0JYO0tBRVgsTUFBQSxpQ0FEVFc7OztTQUNKQzs7TUFDUSxZQUFBLGtDQUZKRCxNQUNKQztvQkFHU0MsY0FBSyxXQUxGSCxhQUtIRztNQUhULFVBQUFEO2lCQUFBQTtVQUFBQTs7O0lBS2EsSUFBQSxNQTdCWGIsYUFzQnNCQyxZQU94Qjs7U0FBQUU7O01BQ2E7T0FBUFksT0FuQ0pqQixpQkFrQ0ZLO09BRU1hLFFBREFEO09BRUFFLGVBQWUsa0NBVGpCTCxNQU9FRztPQUdBRyxnQkFBZ0Isa0NBVmxCTixNQVFFSTs7O09BR0QsR0FBQSxrQ0FYREosTUFNSlQ7UUFJc0IsS0FEaEJjLGtCQUNBQztRQUVDLE1BQUE7Ozs7U0FsQ0xoQixjQXFCc0JELEdBUWxCYztjQTdCSmIsY0FxQnNCRCxHQVNsQmUsWUFDQUMsa0JBQ0FDO1FBSUYsTUFBQTs7TUFSSixVQUFBZjtpQkFBQUE7VUFBQUE7Ozs7R0FVSTtZQUdGZ0IsV0FBYUMsWUFBbUNDLFlBQVlDO0lBQzlELEdBRGVGO1NBQXVCRyxNQUF2QkgsUUFBQVosWUFBdUJlOztTQUF2QmYsNEI7T0FBbUNhOzt1REFBQUE7Ozs7OztLQUdoRDs7SUFBQTtLQUVFckIsZUFMOENxQjtLQU05Q0c7T0FBaUMseUJBTmFILGNBQUFBO0tBTzlDVCxPQUFPLGlDQUZQWixlQUw4Q3FCO0lBUWxEO1lBRElUO1lBUDhDUztZQU05Q0c7WUFOMERGO1lBQS9DZDtHQVF3RDtZQUdyRWlCLGVBQWV4QixHQUFFRTtJQUNuQixHQURtQkE7O3VEQUFBQTs7Ozs7O0tBR2pCOztRQUVFdUIsU0FMYXpCLFlBS2J5QixVQUxldkI7OztzREFLZnVCO3NEQUxldkI7Ozs7Ozs7R0FZSTtZQUdyQndCLFFBQVExQixHQUFFRSxHQUFFVztJQWZaVyxlQWVReEIsR0FBRUU7SUFHSixJQURKUyxPQUZNWCxNQUdOWSxVQWxFRlQsV0ErRFFILEdBQUVFO0lBSVosa0NBRklTLE1BQ0FDLFFBSFVDOztjQUdWRDtTQTdFWWUsY0E2RVpmLFFBR0VnQixVQWhGVUQ7S0FpRlgsR0FBQSxrQ0FMRGhCLE1BSUVpQjtNQUhGaEI7VUFPQSxrQ0FSQUQsTUFJRWlCLFNBSEZoQixTQUdFZ0I7O0dBTUY7WUFHRkMsUUFBUTdCLEdBQUVFO0lBOUJWc0IsZUE4QlF4QixHQUFFRTtJQUVxQixVQWhGL0JDLFdBOEVRSCxHQUFFRTtJQUVxQixPQUFBLGtDQUZ2QkY7R0FFdUM7Z0JBRy9COEIsT0FBRTVCO0lBQ3BCLEdBQUcsa0NBRGU0QixVQUFFNUI7S0FFZixPQUFBLGtDQUZhNEIsVUFBRTVCO0lBSVAsSUFBUFksT0FqR0pqQixpQkE2RmtCSyxJQUtkYSxRQURBRDtPQUVPLGlDQU5LZ0IsYUFJWmhCOztNQUtFUCxZQVRVdUI7aUNBcEVoQnhCLFVBNkVNQyxXQVRVdUI7Ozs7OztLQVVkOztJQUlvQztLQUFBLFVBZHRCQSxPQUtaZjtLQVNhLFVBZERlLE9BSVpoQjtLQVVBRCxJQUFJLFdBZFFpQjtJQWVoQixrQ0FmZ0JBLFVBQUU1QixHQWNkVztJQUNKLE9BRElBO0dBRUY7WUFHRmtCLFlBQVkvQixHQUFJLFdBQUpBLE1BQW1COzs7Ozs7O1VBdkYvQk0sV0FFQUcsV0FvQkFTLFlBMEJBUSxTQWVBRyxTQXdCQUU7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDOUlFQzs7Ozs7Ozs7R0FHTixTQUVJQyxNQUFBQyxHQUFBLE9BQUFBLEtBQUs7WUFETEMsS0FBQUQsR0FBQSxPQUFBQSxLQUFJO1lBRFJFLFlBQUtDO0lBQUwsSUFFSUMsc0JBREFDLHFCQURKQzs7O01BRWFDO01BQUFDO01BQUFDLHNCQUxQWCxXQUtPVTtNQUFBRSxzQkFGUlAsVUFFUUk7b0JBQUFFLGNBQUFDOztJQUFUO0tBQUFDLFVBQUEsbUNBQUFQO0tBRkpRLGtDQUVJRCxlQUZKTDtLQUNJTyxVQUFBLFdBRENWLFVBQ0RFO0tBREpTLGtDQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBSTRCO1lBRXhCQyxVQUFVQztRQUFjZjtJQUFvQixPQUFBLFdBQWxDZSxhQUFjZjs7WUFTeEJnQixNQUFNQyxLQUFHQztJQUFLLElBUFVDLFVBT2xCRixRQVBhRyxTQU9iSCxRQVBhakIsT0FBQW9CLFFBQUt0QixRQUFBcUI7SUFDMUI7S0FBTSxZQUFBLDhCQURvQnJCO2lCQUVoQixPQUZXRTs7O01BQUtxQjs7TUFBTEM7TUFHWkM7S0FDSixHQUFBLG1CQUdNTCxJQUpGSyxJQUNvQixPQUpSdkI7U0FBQUEsT0FBQXNCLFFBQUt4QixRQUFBdUI7O0dBT3VCO1lBQy9DRyxTQUFTeEIsTUFBTyxXQUFQQSx5QkFBdUM7WUFFaER5QixXQUFZekIsTUFBTUY7O0tBRWdCLElBQWlCNEIsZ0JBQVhDO0tBQ2xDLE9BQUEsb0JBRGtDQSxPQUFXRDtJQUNqQjtXQUQvQiwyQkFGZTVCO0tBS2xCO01BQUE7OzBCO01BR3lDOEIsUUFBM0IsMEJBUkk5Qjs7O2dEQXJCaEJELFdBNkJ1QytCOzs7Ozs7O0tBSHpDOztJQUlGLFdBVGM1QixNQVNFLCtCQVRJRjtHQVN1QjtZQUd6QytCLHFCQUFzQjdCLE1BQU1GLE9BQVEsV0FBZEUsTUFBTUYsT0FBdUI7Ozs7Ozs7O09BOUJ2REc7T0FNSWE7T0FMQWQ7T0FDQUY7T0FhQWtCO09BQ0FRO09BRUFDO09BWUFJOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNoQ0FDLE9BQVFDLEtBQU0sT0FBQSwyQkFBTkEsS0FBcUI7WUFDN0JDLE9BQU9DLEdBQUksT0FBQSwyQkFBSkEsR0FBaUI7T0FDeEJDO1lBRUFDLFFBQVFGLEdBQUVHLEdBQUVDO0lBQUksT0FBUTthQUZ4QkgsS0FFUUQsR0FBRUcsR0FBYyw0QkFBWkM7R0FBbUQ7T0FFL0RDO1lBQ0FDLFFBQVFOLEdBQUVHLEdBQUksT0FBQSwyQkFBTkgsR0FBRUcsR0FBa0I7WUFDNUJJLFFBQVFQLEdBQUVHLEdBQUksV0FEZEcsUUFDUU4sR0FBRUcsR0FBcUI7WUFFL0JLLFVBQVVDLFdBQVVUO2lCQUR1QkcsR0FBSyxPQUFBLFdBSGhERSxLQUlvQkwsR0FEdUJHLEdBQVk7SUFBL0I7S0FBQSxNQVJ4QkosT0FTb0JDO0tBQWVVLFFBREc7MENBQzVCRDs7c0NBQXlCQztHQUF5QztZQUU1RUMsS0FBS1gsR0FBR1k7SUFDVixJQUFhLE1BWlhiLE9BV0tDLFlBQ1A7O1NBQUFHOztNQUNRLFlBQUEsV0FSTkUsS0FNS0wsR0FDUEc7O1dBR1NVO09BQUssV0FKSkQsR0FJTSwrQkFBUEM7O01BSFQsVUFBQVY7aUJBQUFBO1VBQUFBOzs7O0dBSUk7WUFFRlcsTUFBTWQsR0FBR1k7SUFDWCxJQUFhLE1BbkJYYixPQWtCTUMsWUFDUjs7U0FBQUc7O01BQ1EsWUFBQSxXQWZORSxLQWFNTCxHQUNSRzs7V0FHU1U7T0FBSyxXQUpIRCxHQUNYVCxHQUdrQiwrQkFBVFU7O01BSFQsVUFBQVY7aUJBQUFBO1VBQUFBOzs7O0dBSUk7WUFFRlksS0FBTUMsS0FBS0MsU0FBU0MsS0FBS0MsU0FBU3JCO0lBQ3BDLE9BQUEsMkJBRFFrQixLQUFLQyxTQUFTQyxLQUFLQyxTQUFTckI7R0FDQzs7Ozs7Ozs7T0FqQm5DVTtPQVZBWDtPQUNBRTtPQUNBRTtPQUVBQztPQUVBRztPQUNBQztPQUNBQztPQUlBSTtPQU9BRztPQU9BQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMxQkFLLGNBQVksT0FBQSw2QkFBd0I7T0FHcENDO1lBRUFDLElBQUlDLEdBQUksaUNBQUpBLEdBRkpGLE9BRThCO1lBRTlCRyxVQUFVQyxXQUFVRjtJQUFZLElBQVFHLFFBRnhDSixJQUVvQkMseUNBQVZFO3NDQUE4QkM7O1lBRXhDQyxRQUFRSixHQUFJLGlDQUFKQSxHQU5SRixPQU1zQztZQUN0Q08sUUFBUUwsR0FBSSxpQ0FBSkEsR0FQUkYsT0FPc0M7WUFFdENRLElBQUlOLEdBQUVPO0lBQVEsT0FBdUIsMEJBQWpDUCxHQVRKRixXQVNNUztHQUEyQzs7Ozs7MEJBTGpETixXQVBBSixRQUtBRSxLQUtBTSxTQURBRCxTQUdBRTs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUF2Q0QsNkJBQTBCdkIsS0FBSUksR0FBRWtCLFFBQU9FOzs7STtJQUZuQ0c7OztHOzs7O09BekZKUDtPQXlGSU87T0FFSkM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7UTs7OztZO1k7VztTLE87USxzQjs7TyxnQixPO08sc0I7Ozs7NEM7OzttQjs7Tzs7OztJO0c7O0k7SSxPO0c7O0k7STs7O0c7O0k7SSxJLDJEOzs7O00sUTs7O087Ozs7Ozs7Ozs7YTs7YTs7YTs7YTs7YTs7YTs7Ozs7Ozs7Ozs7O087TztPO087TztPOzs7TTs7Ozs7STtLOzs7Ozs7Ozs7Szs7Ozs7O0ssTTs7SSxPO0c7O0ksUztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7SSxZOztJO0k7SyxJO0ssTztJLE87Rzs7STs7OztnQjtpQjtHOztJOzs7OztPLFk7Ozs7Ozs7USxNOzs7Ozs7O0s7Szs7Ozs0Qjs7O0c7O0ksWTs7O0ssTzs7bUIsTztJO0ssSzs7Tzs7VTtJO0k7SSxjO0c7O0k7O2E7Ozs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjt3Qjs7STtJO0ksYztHOztJLFk7OztlOzs7SSxPO0c7O0ksWTs7Ozs7OztLLE87OztLLE87STtLLEs7O087O1U7STtJO0ksYztHOztJLFk7OztlOzs7Ozs7O0ksTztHOzs7SSxjOztJOzs7aUI7O0s7Szs7OztzQixPLHNDOztJLDBCOzs7MEM7OzRDOztNOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7OztLO0s7Szs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7STtJOzs7SztLOztJLE87Rzs7SSwwQjs7OzBDOzs7Ozs7OztXO1c7Vzs7TztPO08sTzs7O007TTtNLE87O3lDOztLOzs7eUM7O0s7Ozs7SyxPOzs7STtHOztJO0k7SSxPO0c7O0ksUTs7STtJO0k7STtJLE87Rzs7STtJO0ksUSw0QjtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCO0k7STtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFc7STs7O007OztJLE87Rzs7STtJLFM7STtLO0ssVztLOzs7O0s7SyxNOztHOztJO0k7SSxvQjtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCOztLO0s7SyxPO0k7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STs7OztPLGMsTztPLHNCOzs7Tzs7OztXO1c7VTtRLE87USxNOzs7VztXLE87VTtPLHNCOzs7Ozs7TywrQjs7Ozs7TSxnQixPO00sc0I7OztJO0c7OztLLE87STtJLE87Rzs7STs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STtJOztNLE87Ozs7O1Esa0IsTztRLE87OztPO1EsVztRO2tCOzs7USxTO1E7a0I7O08sTzs7OztPLE87O00sa0I7TSxPOzs7O007bUIsTzswQjtPOztRLDRCO1EsNEI7Tzs7cUI7O00sSTs7Ozs7O2tCLE87MkI7UTtTOzs7WSwwQjtZO1ksTzs7UztnQztROztzQjs7O2lCLE87MEI7TyxHO1E7O1MsNEI7UztnQztROzs7UTs7Uyw0QjtTO2dDO1E7OztxQjs7OztPLE87Ozs7O087UTtTOztTLDRCO1EsTzs7TztRO1E7Ozs7O1E7USxPOztPLEk7Ozs7Rzs7STs7SSwwQjtJLE87Rzs7STtLLE87Ozs7O007TTs7Ozs7VSxRO1U7VTtTO007TTtNLE87Ozs7O087Tzs7Ozs7VztXLFE7VztXO1c7VztXO1c7VTtPO087TyxPOzs7TTtNOzs7OztVLFE7VTtVO1M7TTtNO00sTzs7OztNO007TSxPOzs7SztLO0s7Szs7O007TTtNOzs7TTtLO0ssTzs7Ozs7TTtNO00sTzs7O0s7SztLLE87Ozs7SztLO0ssTzs7O0k7STtJLE87O29CLE8sOEM7O0k7STs7OztPOzs7Ozs7Ozs7O1M7OztVOzthO2EsTztZO1UsTztVLE87UztVOzs7Yzs7Ozs7cUI7OzthO1csVztVOzs7O29DOzs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7Ozs7Ozs7OztjLDBCOzs7Ozs7OzBCO1M7Ozs7OztPO1EsYTtROzs7O2tDOzs7Ozs7OztTLE87Ozs7Z0gsTzs7Ozs7O1MsTzs7Ozs7OztRLE87OztLOztHO3NDLHVCOztJLDBCO0ksTztHOztJLFU7SSwwQjtJLE87Rzs7Ozs7Ozs7STs7Ozs7OztJLE07Rzs7STs7Szs7SyxPO0s7O21DOzs7STs7O1U7VTtLLE07SSxPO0c7O0ksVztJO2E7Rzs7STtLLE87SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7O0k7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7OztJLE07Rzs7STs7SztLO0s7Szs7Ozt3QixNO00sVzs7TTs7Ozs7aUIsTTs7Rzs7STs7O0c7O0k7SSxPO0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTtROztRO1M7Uzs7Ozs7VSx1Qjs7OztRO1M7Uzs7Ozs7VSx1Qjs7OztROztnQixxQjs7UTtRO1M7UztTO1M7UztTOzs7O1U7VTtVO1U7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtRO1E7OztROztROzs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7OztROztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7OztRLGMsTztRLE8sYzs7UTs7UTtnQjs7O0c7O0k7STtLOztROztLOzs7OztPLFE7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TztRLEk7USxJO1EsTTtRLEk7UTtRO1E7Ozs7UTtTOztZOztTOzs7OztXO1ksTTtZLE07WSxNO1ksTTtZO1k7WTs7O1ksTztXOztXOztXOzs7TyxPOztPO2U7O0c7O0k7STtLOztROzs7O1M7O1UsSTtTO1M7UyxPOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1Msb0M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1MsSSx5Qzs7OztXOzs7O1MsSSx5Qzs7OztXOzs7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxtQjtVOztxQjs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLHFCO1U7O3FCOztTO1M7UyxJLFcseUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7UyxPLHFCOztTO1M7UyxJLFcseUI7Ozs7Ozs7Ozs7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTLFE7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7OztTLE87O2tCOzs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtpQjs7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTs7cUI7O1M7UztTOztzQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPLEksYztPO1E7UTtpQjs7O1M7UztTO2tCOzs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O2lCO1MsTTs7aUIsTTtTO2lCOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7aUI7UyxNOztpQixNO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtRLGlCO1E7UTtRO2lCOztTO1M7UztTLG1CO1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtTO1M7UztTO1M7UztTO1M7VTtVO1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7OztROztROzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztTO1M7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1E7UTtROztRO1M7O1k7O1M7Ozs7O1c7VztXOztXO1k7O2U7Ozs7Z0IsTzs7Z0I7O2dCOztZOzs7OztXLE87O1c7O1c7Ozs7UTs7UTtROzs7USx5Qzs7UTs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsMEI7O1E7UTs7O1EseUM7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTLE87O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsTzs7UTs7USx5QztnQjs7O0c7O0k7MkIsTztJO0c7O0k7SSxPO0c7O0k7WTtJOzs7SyxNO0ssSTtLO0s7Ozs7TSxXO007YTtNOzs7OztJO0c7O0k7SztHOzs7STtJO0k7SyxNO0k7O0s7O007O0k7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7O0k7OzsrQixPOztLLEksbUQ7OztpQyxvQjtNLEk7OztPLE07O00sTTs7STtJO0c7O0ksUTtJLDZCO0c7O0k7SyxTO0ssSTtJO0c7O0ksUztJLG9CLE8sMkI7STtLO0ssUztLLEk7STtHOztJOzs7K0IsTztJO0ksdUI7O0s7TTtPLE87TztPLHNCO087Ozs7TTs7OzsyQixvQjtNO00sMkM7O0k7SSxzQjtHOztJLFM7SSxvQixPLDJCO0k7STtHOztJO0c7O0k7RztHOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs0QjtHO0c7O0k7O0ssSSxXLHdDOzs7NkI7Ozs7SSxXO0ksYzs7O0k7STtlOzs7O00sSSxZOzs7OEI7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7OztHOztJO0k7YSxPOzs7TTs7TyxROzs7Ozs7O0c7O0k7O2M7O2U7Z0IsZTtnQjs7MkI7O2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2M7O2U7Z0IsZTtnQjs7MkI7O2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLHdFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2M7O3NEOzBEOztjO2E7O0c7O0k7O2MsMkU7YzthOztHOztJO3lCLG9CLFc7SSxPLFc7Rzs7STt5QixzQixhO0ksTyxXO0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7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SCxRQUFlRztZQUt0QixNQUFBOztHQUFnQjtZQUVoQkosS0FBTUMsR0FBZUM7SUFDdkIsSUEvQkl3QyxVQThCSXpDLE1BN0JKMEMsU0FEQUQ7T0E4Qkl6QyxTQTdCSjBDO1NBRUVDLGlCQUZGRCxTQVRGRiw2QkFTRUU7UUE2QkkxQyxRQTNCRjJDO01BTUosTUFBQTtLQUNlLElBQVhDLFlBQVcsdUJBUFhELFVBMkJpQjFDO0tBbkJyQiw0QkFYRXdDLFlBVUVHLGNBVEZGO0tBNkJJMUMsT0FwQkY0Qzs7UUFzQkZ6QyxJQUZJSDtJQUFBQSxPQUVKRztJQUZJSCxTQUVKRyxLQUZtQkY7SUFJdkIsT0FGSUU7R0FHSDtZQUVDTSxJQUFLVCxHQUFlRyxHQWRwQjBCLE1BY0s3QixHQUFlRyxJQUV0QixPQUZPSCxTQUFlRyxHQUVNO1lBRTFCVSxJQUFLYixHQUFlRyxHQUFjRixHQWxCbEM0QixNQWtCSzdCLEdBQWVHLElBQWZILFNBQWVHLEtBQWNGLEdBRXBDLFNBQThCO1lBRTVCTyxHQUFLUixHQUFlRyxHQUFjQyxHQXRCbEN5QixNQXNCSzdCLEdBQWVHLElBdEJwQjBCLE1Bc0JLN0IsR0FBNkJJLFdBQWRELE1BQWNDLFVBRy9CO21DQTFFSFAsV0FPQUMsTUFpREFDLE1BT0FVLEtBSUFJLEtBSUFMOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7dUIsdUM7STs7OztLO0ssSTtJO0k7STs7SztLO0s7Szs7STtJO0k7STtJO0ssSTtLO0s7SztLO0s7SztLO0s7SztLOztLOzs7Ozs7Tzs7USxNO1EsTTtRLE07USxNO087Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7UyxNOzs7Tzs7UTtTO1M7UztTO1M7UztROzs7TztROztROzs7Ozs7Tzs7Ozs7Ozs7O007Ozs7O0ksUTs7SztLO0s7SztLO0k7STtJO0k7STtJO0ksTzs7O0k7SyxNLG1CO0ssTTtLLEk7a0M7K0I7SSxPO0c7c0IsK0I7c0IsaUM7O0k7SyxJO2U7Z0I7STtJO0ksTztHOzJCLE8sb0M7RyxVO0csMkI7O0k7SyxLO0ssSztLLEs7SyxLO0ssSztLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJLHFCO0ksdUIsb0M7Rzs7SSw4Qjs7O0s7OztJO0c7MEIsYSxvQzs7d0IsUzs7STtJLFU7NkI7Z0M7SSxXO0c7O0k7SyxRO0sscUI7SztLO0k7SSxRO0k7STtJO0k7SSxPO0c7cUMsc0I7O0k7Z0I7O0k7RzsrQixTOytCLFM7O0k7SSxVO0k7OztjOztlOztnQjttQjtLO007TyxJO087TztPOztVLFcsTTtzQjtxQixNO3NCO3FCLE07c0IsTTtVO1M7Tzs7VSxlO3NCO1M7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7USxjO1E7O087Tzs7Ozs7Ozs0Qjs7O0k7Rzs7STtJO0ksdUIsNEM7STtLLEk7SztLOztLOzs7STs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7b0IsTztLLFU7Szs7OztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDeEJKcUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBMUNJQyxVQUNGQzs0Q0FBSztxREFBa0I7NEJBQXZCQTs0Q0FBMEM7WUFFeENDOzRDQUNGOzZDQUlPLCtDQUFBOzs0Q0FGTDtLQURrQkM7NkNBQ2xCOytDQUFBLHlCQURrQkE7OzhDQUVPLGdEQUFBOzs2Q0FBK0M7NENBRHhFLCtDQUFBO3FEQUNHOzs7NENBQ2lEO1lBRXBEQyxZQUF3Q0g7NkNBQUs7O3FEQUFPOzRCQUFaQTs0Q0FBZ0M7WUFFeEVJOzRDQUNGOzs2Q0FFRTtNQURPRjs4Q0FDUDtnREFBQSx5QkFET0E7OztpREFHRiwrQ0FBQTs7aURBQWlEOzZDQUZ0RCwrQ0FBQTtzREFDRzs7Ozs0Q0FHRSwr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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWprQ0VDLFdBQVczd0Q7b0RBQUssT0FBTEE7bURBQU07WUFDakIraEMsWUFBVy9oQztvREFBTSxPQUFOQTttREFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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bURBQUEsT0FBQXIrRDttREE0Q007WUE1Q05zK0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUF4K0Q7bURBNENNO1lBNUNOeStEO21EQUFBLE9BQUF6K0Q7bURBNENNO1lBNUNOMCtEO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7O21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBNytEO21EQTRDTTtZQTVDTjgrRDttREFBQTs7bURBNENNO1lBNUNOQzttREFBQSxPQUFBLytEO21EQTRDTTtZQTVDTmcvRDttREFBQTs7bURBNENNO1lBNUNOQzttREFBQSxPQUFBai9EO21EQTRDTTtZQTVDTmsvRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBci9EO21EQTRDTTtZQTVDTnMvRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBei9EO21EQTRDTTtZQTVDTjAvRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQTUvRDttREE0Q007WUE1Q042L0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUEvL0Q7bURBNENNO1lBNUNOZ2dFO21EQUFBLE9BQUFoZ0U7bURBNENNO1lBNUNOaWdFO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7O21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBcGdFO21EQTRDTTtZQTVDTnFnRTttREFBQTs7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUF2Z0U7bURBNENNO1lBNUNOd2dFO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBLE9BQUF6Z0U7bURBNENNO1lBNUNOMGdFO21EQUFBO21EQTRDTTtZ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Qks7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDOzs7OztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7O0lBQUFDOzs7SUFBQUM7Ozs7Ozs7SUF2VlhDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lBbjVFcEJDOzs7Ozs7Ozs7Ozs7OztJQUxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7SUMxSUpDO0lBQUFDO0lBT0FDO0lBQUFDO0lBT0FDO0lBQUFDO0lBb0JBQztJQUFBQztJQW1CQUM7SUFBQUM7SUFvQkFDO0lBQUFDO0lBMENBQztJQUFBQztJQU9BQztJQUFBQztJQXFCQUM7SUFBQUM7SUFpRkFDO0lBQUFDO0lBV0FDO0lBQUFDO0lBaUZBQztJQUFBQztJQU9FQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFwVUZDLGlCQUNBQztJQUFBOztPQUFBLE9BQUEsOEJBQUFBOztPQUFB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QUFBOzRDQUFBdEwsa0JBQUFzTDtTQUFBQyw4Q0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0hBQUFBOzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7O2dIQUFBQTs4R0FBQUE7Ozs7K0dBQUFBOytHQUFBQTsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2R0FBQUE7Ozs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzRHQUFBQTs7OzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7O2dIQUFBQTs7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTs4R0FBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzs7O3lGQUFBQTs7Ozs0R0FBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7OzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs0R0FBQUE7Ozs7O2tIQUFBQTs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBO2dIQUFBQTs7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTs7Z0hBQUFBOzhHQUFBQTs7OzsrR0FBQUE7OytHQUFBQTs7K0dBQUFB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QUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOzs7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7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QUFBOzs7bUhBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7OzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7NEdBQUFBOzs7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOzhHQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7bUhBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7Ozs7eUZBQUFBOzs7OzRHQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzRHQUFBQTs7Ozs7a0hBQUFBOzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOztnSEFBQUE7OEdBQUFBOzs7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2R0FBQUE7Ozs7OEdBQUFBOzhHQUFBQTs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7NEdBQUFBOzs7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOzhHQUFBQTs7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2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Ozs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7OztzQkFIQTs7Ozs7U0FkQTs7Ozs7O3NCQU5VOzs7OztTQWRBOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7Ozs7O1NBZlY7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQU5VOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQTNCSDs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7c0JBR2E7SUExQm5DOzs7Ozs7Ozs7O2FBV3lCOzs7Ozs7Ozs7O0lBcEJULG1CQUFlO3VCQUZJO3VCQU5FO3VCQUhBOzs7OztTQXZCVTs7Ozs7O3VCQUxBOzs7OztTQXJCQTs7Ozs7O3VCQUxBO0lBekJiOzs7OztVQUlhOzs7Ozs7Ozs7OztTQWhCVjs7Ozs7Ozs7OztTQWZBOzs7Ozs7dUJBSEE7Ozs7O1NBZkE7Ozs7Ozt1QkFIQTs7Ozs7U0F2QlU7Ozs7Ozt1QkFMQTs7Ozs7U0FyQkE7Ozs7Ozt1QkFMQTtJQXpCYjs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O3VCQUhBO3VCQVJVO3VCQUxBO3VCQUxBOzs7OztTQXJCQTs7Ozs7OztzQkFMQTt1QkFQQTs7Ozs7U0FyQkE7Ozs7Ozt1QkFMQTs7Ozs7U0FyQkE7Ozs7Ozt1QkFMQTs7Ozs7U0FyQkE7Ozs7OztJQVRiOzttQkFJYTs7Ozs7O1NBakJWOzs7Ozs7dUJBTEE7dUJBSEE7dUJBUFU7Ozs7O1NBckJBOzs7Ozs7SUFUYjtzQkFJYTs7Ozs7U0FqQlY7Ozs7Ozt1QkFMQTs7c0JBSEE7dUJBSkE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTs7Ozs7U0FmQTs7Ozs7O3VCQUhBOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZkE7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O0lBTmI7O21CQUdhOzs7Ozs7Ozs7Ozs7O2NBZlY7Ozs7Ozs7Ozs7O0lBbEJYLG1CQUFlO3VCQUZJO3VCQU5FO3VCQUhBO3VCQUZBOzs7OztTQXZCVTs7Ozs7O3VCQUxBOzs7OztTQXJCQTs7Ozs7O3VCQUxBO0lBekJiOzs7OztVQUlhOzs7Ozs7Ozs7OztTQWhCVjs7Ozs7Ozs7OztTQWZBOzs7Ozs7dUJBSEE7Ozs7O1NBZkE7Ozs7Ozt1QkFIQTs7Ozs7U0F2QlU7Ozs7Ozt1QkFMQTs7Ozs7U0FyQkE7Ozs7Ozt1QkFMQTtJQXpCYjs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O3VCQUhBO3VCQVJVO3VCQUxBOzs7OztTQXJCQTs7Ozs7OztzQkFMQTt1QkFQQTs7Ozs7U0FyQkE7Ozs7Ozt1QkFMQTs7Ozs7U0FyQkE7Ozs7Ozt1QkFMQTs7Ozs7U0FyQkE7Ozs7OztJQVRiOzttQkFJYTs7Ozs7O1NBakJWOzs7Ozs7dUJBSEE7dUJBUlU7dUJBTEE7Ozs7O1NBckJBOzs7Ozs7O3NCQUxBO3VCQVBBOzs7OztTQXJCQTs7Ozs7O3VCQUxBOzs7OztTQXJCQTs7Ozs7O3VCQUxBOzs7OztTQXJCQTs7Ozs7O0lBVGI7O21CQUlhOzs7Ozs7U0FqQlY7Ozs7Ozt1QkFMQTt1QkFIQTt1QkFQVTs7Ozs7U0FyQkE7Ozs7OztJQVRiO3NCQUlhOzs7OztTQWpCVjs7Ozs7O3VCQUxBOztzQkFIQTt1QkFKQTs7Ozs7U0FkQTs7Ozs7O3VCQUhBOzs7OztTQWZBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTs7Ozs7U0FmQTs7Ozs7Ozs7OztTQWZBOzs7Ozs7SUFOYjs7bUJBR2E7O0lBM0JyQzs7Ozs7Ozs7Ozs7Y0FZMkI7Ozs7Ozs7Ozs7O3VCQXBCRjt1QkFESTt1QkFORTt1QkFISTt1QkFESjt1QkFQVTs7Ozs7U0FoQkE7Ozs7OztJQVRiO3NCQUlhOzs7OztTQWhCVjs7Ozs7O3VCQUxBOztzQkFIQTt1QkFKQTs7Ozs7U0FkQTs7Ozs7O3VCQUhBOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQUhBOzs7OztTQWRBOzs7Ozs7SUFOYjs7bUJBR2E7O0lBeEIvQjs7Ozs7Ozs7O1lBU3FCOzs7Ozs7Ozs7SUF6QnJCOzs7OzsrQkFPeUM7Ozs7dUJBZFo7SUFIakI7eUJBRXFCO3VCQVBGOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O3VCQUhBOzs7OztTQWRBOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQUxmOzt1QkFFdUI7O0lBaEIvQjs7OztTQUVXOzs7Ozs7O0lBUFQsbUJBRVc7dUJBSlE7Ozs7O1NBaEJFOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQWxCYjs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O3VCQUhROzs7OztTQWJSOzs7Ozs7dUJBSFE7Ozs7O1NBaEJFOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTtJQWxCYjs7Ozs7VUFJYTs7Ozs7Ozs7Ozs7U0FoQlY7Ozs7Ozs7Ozs7U0FmQTs7Ozs7O3VCQUhRO3VCQU5FO3VCQUhBOzs7OztTQWRBOzs7Ozs7O3NCQUhBO3VCQUpBOzs7OztTQWRBOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFIQTs7Ozs7U0FkQTs7Ozs7O0lBTmI7O21CQUdhOzs7Ozs7U0FmVjs7Ozs7O3VCQUhBO3VCQUZRO3VCQUpFOzs7OztTQWRBOzs7Ozs7SUFOYjtzQkFHYTs7Ozs7U0FmVjs7Ozs7O3VCQUhBO0lBVHJCOzs7Ozs7cUJBTzZCOzs7O0lBM0IvQkk7Ozs7O09BRkFKOzs7Ozs0QkFnQm1DOzs7Ozs7OzsyQ0FoQm5DQSxRQUVBSTs7OztFOzs7Ozs7O0dDRmlDOzs7SUFGakNDOzs7O0lBRUFDOzs7O3lDQUZBRCxVQUFBQSxVQUVBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7SUNLSjVlO0lBQUFDO0lBS0FPO0lBQUFMO0lBTUEwZTtJQUFBeGU7SUFRQXllO0lBQUF2ZTtJQU1BUztJQUFBUDtJQVFFc2U7SUFBQXBlO0lBTUFxZTtJQUFBbmU7SUFPQW9lO0lBQUFsZTtJQU1BbWU7SUFBQWplO0lBS0lrZTtJQUdGQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTdESkMsbUJBQ0ExZDtJQUFBO2NBQUEsOEJBQUFBO2NBQUEsOEJBQUFBO0dBRWM7WUFIZDJkLHFCQUNBam1CO0lBQUEsT0FBQSxvQ0FEQWdtQixvQkFDQWhtQjtHQUVjO0dBRmQsU0FBQWttQix3QkFBQXpkO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztPQUFBOztNQUFBOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7OztNQUFBLE9BQUE7NENBQUE5QixrQkFBQThCOzs7Ozs7OztNQUFBLE9BQUE7NENBQUE5QixrQkFBQThCOztLQUFBLE9BQUE7MkNBQUE5QixrQkFBQThCOztJQUFBLE9BQUEsd0NBQUE5QixrQkFBQThCO0dBRWM7WUFGZDBkLCtCQUFBLHlCQUVjO0dBRmQsU0FBQUMsMEJBQUF4ZDtJQUFBLFVBQUFBLHFDQUFBQTtnQkFBQUE7O01BQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7Ozs7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7SUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDO0dBRWM7WUFGZHlkLGlDQUFBLHlCQUVjOztJQUVkQztJQUFBQzs7S0FBQUQ7Y0FDQWhlLEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBREEseUNBQ0FzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQU5BMGQsbUJBTUExZCxLQUFBdEk7TUFBQSwrQkFBQXNJO01BQUEsT0FBQSwrQkFBQUE7S0FHQzs7S0FKRGllO2NBQ0F2bUI7TUFBQSxPQUFBLG9DQURBc21CLGtCQUNBdG1CO0tBR0M7WUFIRHdtQixzQkFBQUM7SUFBQSxTQUFBQTtLQUFBLE9BQUE7NENBQUF0ZixrQkFBQXNmO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0VFO0tBQ0FDO0tBRkZDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFKO09BQUE7O1lBQUFLO2lCQUFBQTttQkFBQUE7Ozs7WUFBQUMsMkJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQTdmLGtCQUFBc2Y7Z0JBQUFPO2NBQUEsTUFBQTtpQkFBQUssUUFBQUw7YUFBQSxPQUFBSztZQUdDO21CQUhERDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBOztXQUFBSCxtQkFBQUcsZ0JBQUFIOztpQkFDRUg7VUFERkUsd0JBQUFJLGdCQUFBSjs7VUFDRTtXQURGUyxtQkFBQUY7V0FDRUc7YUFBQSx5Q0FERkQ7VUFDRVgsb0JBQUFZOztnQkFDQVg7U0FGRkMsd0JBQUFJLGdCQUFBSjs7U0FFRTtVQUZGVyxtQkFBQUo7VUFFRUssYUFQRnZCLHdCQUtBc0I7U0FFRVosc0JBQUFhOztvQkFGRlA7Ozs7OztLQUFBLHlDQUFBL2Ysa0JBQUE0Zjs7T0FBQUY7S0FBQSxPQUFBOztjQUFBMWY7Y0FBQTBmO2NBQUFKO09BQUFLO0tBQUEsT0FBQTs7Y0FBQTNmO2NBQUEyZjtjQUFBTDtlQUNFRSx1QkFDQUM7O1NBQUFjLHlCQURBQztLQURGLFdBQ0VBLFlBQ0FEOztJQUZGLE9BQUE7O2FBQUF2Z0I7YUFBQXNmOzt3QkFDRUU7NEJBQ0FDO0dBQ0Q7WUFIRGdCO0lBQUE7S0FFRUM7S0FEQUM7S0FDQUMsVUFQRjVCLHdCQU9FMEI7S0FGRkcsZ0NBRUVEO0tBREFFLFVBQUEseUNBQUFIO0tBREZJLGtDQUNFRCxlQURGRDtJQUFBLFdBQUFFO0dBR0M7WUFIREMsd0JBQUF2ZjtJQUFBLFVBQUFBLHFDQUFBQTtLQUNFO01BREZrSSxnQkFBQWxJO01BQ0VtSTtNQUNBcVg7TUFGRmxYO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtRQUFBO1VBQUE7O1NBQUFILGVBQUFHLFlBQUEsbUNBQUFIOztlQUNFLG1DQUFBSjtRQURGRzthQUFBSSxZQUNFLG1DQURGSjs7UUFDRSxJQUFBSyxTQUFBLHlDQURGRjtRQUNFTixzQkFBQVE7O2NBQ0EsbUNBQUE2VztPQUZGbFg7WUFBQUksWUFFRSxtQ0FGRko7O09BRUUsSUFBQU0sV0FQRjRVLDBCQUtBL1U7T0FFRStXLHdCQUFBNVc7O2tCQUZGSjs7UUFBQSxtQ0FBQUY7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFwSyxnQkFBQThCOztRQUFBLG1DQUFBdUk7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFySyxnQkFBQThCOztLQUNFO01BQUEsVUFBQSxtQ0FBQW1JO01BQ0EsVUFBQSxtQ0FBQXFYOztVQUFBQyw2QkFEQXpXO01BREYsV0FDRUEsY0FDQXlXOztLQUZGO01BQUE7OztnQkFFRSxtQ0FBQUQ7OztNQUZGOzs7Z0JBQ0UsbUNBQUFyWDs7O0tBREYsT0FBQTtrREFBQWpLLFVBQUE4Qjs7SUFBQSxPQUFBLCtDQUFBOUIsVUFBQThCO0dBR0M7WUFIRDBmO0lBQUE7S0FFRUM7S0FEQXZXO0tBQ0FDLE1BUEZvVSwwQkFPRWtDO0tBQUFyVywrQkFBQUQ7S0FEQUUsaURBQUFIO0tBQUFJLCtCQUFBRCxRQUNBRDtJQUZGLHNCQUNFRTtHQUVEOztJQUVEb1c7SUFBQUM7O0tBQUFEO2NBQ0FsZ0IsS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FEQSx5Q0FDQXNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQURBLHlDQUNBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7a0JBQUF0STs7V0FHd0JpVjtPQUFBLDhCQUh4QjNNO09BWkEwZCxtQkFZQTFkLEtBR3dCMk07T0FBQSw4QkFIeEIzTTs7O09BR3dCLDhCQUh4QkE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7VUFJWTZNLE1BSlpuVjtNQUlZLCtCQUpac0k7O29CQUlZOE0sS0FBQXBWO09BQUEsR0FBQW9WLEtBQUEsK0JBSlo5TTtPQUlZLFdBTFosV0FOQWdlLGtCQU9BaGUsTUFJWXRJO09BQUE7TUFBbUI7TUFBbkIsd0NBQUFtVjtNQUFBLCtCQUpaN007TUFBQSwrQkFBQUE7TUFBQSxPQUFBLCtCQUFBQTtLQUtDOztLQU5EbWdCO2NBQ0F6b0I7TUFBQSxPQUFBLG9DQURBd29CLGVBQ0F4b0I7S0FLQztZQUxEMG9CLG1CQUFBQztJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQW5ELGtCQUFBbUQ7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDRUU7S0FDQUM7S0FDQUM7S0FDQUM7S0FKRkM7S0FBQUM7Ozs7Ozs7OzttQkFBQU47T0FBQTs7WUFBQU87aUJBQUFBO21CQUFBQTs7OztZQUFBQywyQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBRTtTQUFBQztvQkFBQUg7cUJBQUFJO2FBQUEsS0FBQUo7Y0FBQSxPQUFBO3FEQUFBNUQsa0JBQUFtRDtnQkFBQVM7Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBS0M7bUJBTEREOztTQUFBQSxpQkFBQUQsaUJBQUFIO2dDQUFBQztpQ0FBQUE7a0NBQUFBO21DQUFBQTs7YUFBQUgsbUJBQUFHLGdCQUFBSDs7bUJBQ0VMO1lBREZJLHdCQUFBSSxnQkFBQUo7O1lBQ0U7YUFERlMsbUJBQUFGO2FBQ0VHO2VBQUEseUNBREZEO1lBQ0ViLG1CQUFBYzs7a0JBQ0FiO1dBRkZHLHdCQUFBSSxnQkFBQUo7O1dBRUU7WUFGRlcsbUJBQUFKO1lBRUVLO2NBQUEseUNBRkZEO1dBRUVkLGtCQUFBZTs7aUJBQ0FkO1VBSEZFLHdCQUFBSSxnQkFBQUo7O1VBR0U7V0FIRmEsbUJBQUFOO1dBR0VPO2FBQUE7Z0NBZEY3RCx5QkFXQTREO1VBR0VmLGtDQUFBZ0I7O2dCQUNBZjtTQUpGQyx3QkFBQUksZ0JBQUFKOztTQUlFO1VBSkZlLG1CQUFBUjtVQUlFUztZQUFBOytCQVZGekQsdUJBTUF3RDtTQUlFaEIsc0JBQUFpQjs7b0JBSkZYOzs7Ozs7S0FBQSx5Q0FBQTlELGtCQUFBMkQ7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQXpEO2NBQUF5RDtjQUFBTjtPQUFBTztLQUFBLE9BQUE7O2NBQUExRDtjQUFBMEQ7Y0FBQVA7O1lBQ0VFO1lBQ0FDO1lBQ0FDO2FBQ0FDOzs7TUFBQWtCO01BREFDO01BREFDO01BREFDO0tBREYsV0FDRUEsV0FDQUQsVUFDQUQsMEJBQ0FEOztJQUpGLE9BQUE7O2FBQUExRTthQUFBbUQ7O3dCQUNFRTs7eUJBQ0FDOzs7dUJBQ0FDOzs4QkFDQUM7R0FDRDtZQUxEc0I7SUFBQTtLQUlFQztLQURBQztLQURBQztLQURBQztLQUdBQztPQUFBLDRCQVZGL0MsdUJBVUUyQztLQUpGSyxnQ0FJRUQ7S0FEQUU7T0FBQTswQkFkRjFFLHlCQWNFcUU7S0FIRk0sa0NBR0VELGVBSEZEO0tBRUVHLFVBQUEseUNBQUFOO0tBRkZPLGtDQUVFRCxlQUZGRDtLQUNFRyxVQUFBLHlDQUFBUDtLQURGUSxrQ0FDRUQsZUFERkQ7SUFBQSxXQUFBRTtHQUtDO1lBTERDLHFCQUFBdmlCO0lBQUEsVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRXdpQjtNQUNBQztNQUNBQztNQUNBblM7TUFKRmpJO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtnQ0FBQUE7aUNBQUFBO1VBQUE7WUFBQTs7V0FBQUg7Z0JBQUFHLFlBQUEsbUNBQUFIOztpQkFDRSxtQ0FBQWlhO1VBREZsYTtlQUFBSSxZQUNFLG1DQURGSjs7VUFDRSxJQUFBSyxTQUFBLHlDQURGRjtVQUNFK1oscUJBQUE3Wjs7Z0JBQ0EsbUNBQUE4WjtTQUZGbmE7Y0FBQUksWUFFRSxtQ0FGRko7O1NBRUU7VUFBQU0sV0FBQSx5Q0FGRkg7U0FFRWdhLG9CQUFBN1o7O2VBQ0EsbUNBQUE4WjtRQUhGcGE7YUFBQUksWUFHRSxtQ0FIRko7OztTQUdFTzs7O2FBZEYyVTthQVdBL1U7UUFHRWlhLG9DQUFBN1o7O2NBQ0EsbUNBQUEwSDtPQUpGakk7WUFBQUksWUFJRSxtQ0FKRko7OztRQUlFb0k7OztZQVZGNk87WUFNQTlXO09BSUU4SCx3QkFBQUc7O2tCQUpGbEk7O1FBQUEsbUNBQUFGO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBbEssZ0JBQUE0Qjs7UUFBQSxtQ0FBQXVJO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBbkssZ0JBQUE0Qjs7S0FDRTtNQUFBLFVBQUEsbUNBQUF3aUI7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQW5TOzs7T0FBQUs7T0FEQStSO09BREFDO09BREFDO01BREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7Y0FDQS9SOztLQUpGO01BQUE7OztnQkFJRSxtQ0FBQUw7OztNQUpGOzs7Z0JBR0UsbUNBQUFtUzs7Ozs7TUFIRjs7O2dCQUVFLG1DQUFBRDs7O01BRkY7OztnQkFDRSxtQ0FBQUQ7OztLQURGLE9BQUE7a0RBQUFwa0IsVUFBQTRCOztJQUFBLE9BQUEsK0NBQUE1QixVQUFBNEI7R0FLQztZQUxEOGlCO0lBQUE7S0FJRTVSO0tBREE2UjtLQURBQztLQURBQztLQUdBNVo7OztTQVZGcVc7U0FVRXhPO0tBQUE1SCwrQkFBQUQ7S0FEQUU7OztTQWRGa1U7U0FjRXNGO0tBQUF2Wiw2Q0FBQUQsUUFDQUQ7S0FGQUcsaURBQUF1WjtLQUFBdFosNkJBQUFELFFBQ0FEO0tBRkErSCxpREFBQTBSO0tBQUF6Uiw4QkFBQUQsUUFDQTdIO0lBRkYsc0JBQ0U4SDtHQUlEOztJQUVEMFI7SUFBQUM7O0tBQUFEO2NBQ0F4akIsS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FEQSx5Q0FDQXNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQURBLHlDQUNBc0k7TUFBQSwrQkFBQUE7TUFBQSxPQUFBLCtCQUFBQTtLQUdDOztLQUpEeWpCO2NBQ0EvckI7TUFBQSxPQUFBLG9DQURBOHJCLGdCQUNBOXJCO0tBR0M7R0FIRCxTQUFBZ3NCLG9CQUFBQztJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQXhHLGtCQUFBd0c7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDRUU7S0FDQUM7S0FGRkM7S0FBQUM7Ozs7Ozs7OzttQkFBQUo7T0FBQTs7WUFBQUs7aUJBQUFBO21CQUFBQTs7OztZQUFBQywyQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBRTtTQUFBQztvQkFBQUg7cUJBQUFJO2FBQUEsS0FBQUo7Y0FBQSxPQUFBO3FEQUFBL0csa0JBQUF3RztnQkFBQU87Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBR0M7bUJBSEREOztTQUFBQSxpQkFBQUQsaUJBQUFIO2dDQUFBQztpQ0FBQUE7O1dBQUFILG1CQUFBRyxnQkFBQUg7O2lCQUVFRjtVQUZGQyx3QkFBQUksZ0JBQUFKOztVQUVFO1dBRkZTLG1CQUFBRjtXQUVFRzthQUFBLHlDQUZGRDtVQUVFVixzQkFBQVc7O2dCQURBWjtTQURGRSx3QkFBQUksZ0JBQUFKOztTQUNFO1VBREZXLG1CQUFBSjtVQUNFSztZQUFBLHlDQURGRDtTQUNFYixtQkFBQWM7O29CQURGUDs7Ozs7O0tBQUEseUNBQUFqSCxrQkFBQThHOztPQUFBRjtLQUFBLE9BQUE7O2NBQUE1RztjQUFBNEc7Y0FBQUo7T0FBQUs7S0FBQSxPQUFBOztjQUFBN0c7Y0FBQTZHO2NBQUFMO2VBQ0VFLHNCQUNBQzs7U0FBQWMseUJBREFDO0tBREYsV0FDRUEsV0FDQUQ7O0lBRkYsT0FBQTs7YUFBQXpIO2FBQUF3Rzs7d0JBQ0VFOzRCQUNBQztHQUNEO1lBSERnQjtJQUFBO0tBRUVDO0tBREFDO0tBQ0FDLFVBQUEseUNBQUFGO0tBRkZHLGdDQUVFRDtLQURBRSxVQUFBLHlDQUFBSDtLQURGSSxrQ0FDRUQsZUFERkQ7SUFBQSxXQUFBRTtHQUdDO0dBSEQsU0FBQUMsc0JBQUEva0I7SUFBQSxVQUFBQSxxQ0FBQUE7S0FDRTtNQURGa0ksZ0JBQUFsSTtNQUNFd2lCO01BQ0F3QztNQUZGMWM7TUFBQUM7Y0FBQUw7S0FBQTs7O09BQUFNOztPQUFBQztPQUFBQzs4QkFBQUE7K0JBQUFBO1FBQUE7VUFBQTs7U0FBQUgsZUFBQUcsWUFBQSxtQ0FBQUg7O2VBRUUsbUNBQUF5YztRQUZGMWM7YUFBQUksWUFFRSxtQ0FGRko7O1FBRUUsSUFBQUssU0FBQSx5Q0FGRkY7UUFFRXVjLHdCQUFBcmM7O2NBREEsbUNBQUE2WjtPQURGbGE7WUFBQUksWUFDRSxtQ0FERko7O09BQ0UsSUFBQU0sV0FBQSx5Q0FERkg7T0FDRStaLHFCQUFBNVo7O2tCQURGSjs7UUFBQSxtQ0FBQUY7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFoSyxnQkFBQTBCOztRQUFBLG1DQUFBdUk7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFqSyxnQkFBQTBCOztLQUNFO01BQUEsVUFBQSxtQ0FBQXdpQjtNQUNBLFVBQUEsbUNBQUF3Qzs7VUFBQUMsNkJBREFwQztNQURGLFdBQ0VBLGFBQ0FvQzs7S0FGRjtNQUFBOzs7Z0JBRUUsbUNBQUFEOzs7TUFGRjs7O2dCQUNFLG1DQUFBeEM7OztLQURGLE9BQUE7a0RBQUFsa0IsVUFBQTBCOztJQUFBLE9BQUEsK0NBQUExQixVQUFBMEI7R0FHQztZQUhEa2xCO0lBQUE7S0FFRUM7S0FEQWxDO0tBQ0E1WiwrQ0FBQThiO0tBQUE3YiwrQkFBQUQ7S0FEQUUsaURBQUEwWjtLQUFBelosOEJBQUFELFFBQ0FEO0lBRkYsc0JBQ0VFO0dBRUQ7O0lBRURzTTtJQUFBQzs7S0FBQUQ7Y0FDQXBXLEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBQ29CLCtCQURwQnNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO1VBRVMyTSxNQUZUalY7TUFFUywrQkFGVHNJOztvQkFFUzhNLEtBQUFwVjtPQUFBLEdBQUFvVixLQUFBLCtCQUZUOU07T0FFUyxXQUhULFdBZEFrZ0IsZUFlQWxnQixNQUVTdEk7T0FBQTtNQUFnQjtNQUFoQix3Q0FBQWlWO01BQUEsK0JBRlQzTTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtVQUdVNk0sTUFIVm5WO01BR1UsK0JBSFZzSTs7b0JBR1U4TSxLQUFBcFY7T0FBQSxHQUFBb1YsS0FBQSwrQkFIVjlNO09BR1UsV0FKVixXQU5Bd2pCLGdCQU9BeGpCLE1BR1V0STtPQUFBO01BQWlCO01BQWpCLHdDQUFBbVY7TUFBQSwrQkFIVjdNO01BQUEsK0JBQUFBO01BQUEsT0FBQSwrQkFBQUE7S0FJQzs7S0FMRHFXLGVBQ0EzZSxHQUFBLE9BQUEscUNBREEwZSxJQUNBMWUsR0FJQztZQUpENGUsVUFBQW9QO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBcm1CLGtCQUFBcW1CO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0VFO0tBQ0FDO0tBQ0FDO0tBSEZDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFMO09BQUE7O1lBQUFNO2lCQUFBQTttQkFBQUE7Ozs7WUFBQUMsMkJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQTdtQixrQkFBQXFtQjtnQkFBQVE7Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBSUM7bUJBSkREOztTQUFBQSxpQkFBQUQsaUJBQUFIO2dDQUFBQztpQ0FBQUE7a0NBQUFBOztZQUFBSCxtQkFBQUcsZ0JBQUFIOztrQkFDRUo7V0FERkcsd0JBQUFJLGdCQUFBSjs7V0FDRTtZQURGUyxtQkFBQUY7WUFDRUcsYUFBQSwyQkFERkQ7V0FDRVosOEJBQUFhOztpQkFFQVg7VUFIRkMsd0JBQUFJLGdCQUFBSjs7VUFHRTtXQUhGVyxtQkFBQUo7V0FHRUs7YUFBQTtnQ0FURmpELHFCQU1BZ0Q7VUFHRVosb0JBQUFhOztnQkFEQWQ7U0FGRkUsd0JBQUFJLGdCQUFBSjs7U0FFRTtVQUZGYSxtQkFBQU47VUFFRU87WUFBQSw0QkFoQkZ6RyxvQkFjQXdHO1NBRUVmLG1CQUFBZ0I7O29CQUZGVDs7Ozs7O0tBQUEseUNBQUEvbUIsa0JBQUE0bUI7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQTFtQjtjQUFBMG1CO2NBQUFMO09BQUFNO0tBQUEsT0FBQTs7Y0FBQTNtQjtjQUFBMm1CO2NBQUFOOztZQUNFRTtZQUNBQzthQUNBQzs7O01BQUFnQjtNQURBQztNQURBQztLQURGLFdBQ0VBLHNCQUNBRCxXQUNBRDs7SUFIRixPQUFBOzthQUFBem5CO2FBQUFxbUI7OztxQkFDRUU7Ozt5QkFDQUM7NkJBQ0FDO0dBQ0Q7WUFKRC9NO0lBQUE7S0FHRWtPO0tBREFDO0tBREFDO0tBRUFDLFVBQUEsNEJBVEZ0QyxxQkFTRW1DO0tBSEZJLGlDQUdFRDtLQURBRSxVQUFBLDRCQWhCRnRGLG9CQWdCRWtGO0tBRkZLLG1DQUVFRCxlQUZGRDtLQUNFRyxVQUFBLDJCQUFBTDtLQURGTSxtQ0FDRUQsZUFERkQ7SUFBQSxXQUFBRTtHQUlDO1lBSkRsTixZQUFBamE7SUFBQSxVQUFBQSxxQ0FBQUE7S0FDRTtNQURGa0ksZ0JBQUFsSTtNQUNFb25CO01BQ0ExUjtNQUNBMlI7TUFIRi9lO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtnQ0FBQUE7U0FBQTtXQUFBOztVQUFBSDtlQUFBRyxZQUFBLG1DQUFBSDs7Z0JBQ0UsbUNBQUE2ZTtTQURGOWU7Y0FBQUksWUFDRSxtQ0FERko7O1NBQ0U7VUFBQUs7WUFBQSxxREFERkY7U0FDRTJlLGdDQUFBemU7O2VBRUEsbUNBQUEwZTtRQUhGL2U7YUFBQUksWUFHRSxtQ0FIRko7OztTQUdFTTs7O2FBVEZtYzthQU1BdGM7UUFHRTRlLHNCQUFBemU7O2NBREEsbUNBQUE4TTtPQUZGcE47WUFBQUksWUFFRSxtQ0FGRko7OztRQUVFTzs7O1lBaEJGMFo7WUFjQTlaO09BRUVpTixxQkFBQTdNOztrQkFGRkw7O1FBQUEsbUNBQUFGO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBOUosZ0JBQUF3Qjs7UUFBQSxtQ0FBQXVJO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBL0osZ0JBQUF3Qjs7S0FDRTtNQUFBLFVBQUEsbUNBQUFvbkI7TUFDQSxVQUFBLG1DQUFBMVI7TUFDQSxVQUFBLG1DQUFBMlI7OztPQUFBQztPQURBM1I7T0FEQTRSO01BREYsV0FDRUEsd0JBQ0E1UixhQUNBMlI7O0tBSEY7TUFBQTs7O2dCQUdFLG1DQUFBRDs7O01BSEY7OztnQkFFRSxtQ0FBQTNSOzs7TUFGRjs7O2dCQUNFLG1DQUFBMFI7Ozs7O0tBREYsT0FBQTtrREFBQTVvQixVQUFBd0I7O0lBQUEsT0FBQSwrQ0FBQXhCLFVBQUF3QjtHQUlDO1lBSkR3YTtJQUFBO0tBR0VnTjtLQURBM1I7S0FEQTRSO0tBRUFwZTs7O1NBVEY2YjtTQVNFc0M7S0FBQWxlLDZCQUFBRDtLQURBRTs7O1NBaEJGdVo7U0FnQkVqTjtLQUFBck0sOEJBQUFELFFBQ0FEO0tBRkFHOzJEQUFBZ2U7S0FBQS9kLHlDQUFBRCxRQUNBRDtJQUZGLHNCQUNFRTtHQUdEOztJQUdDZ2U7SUFBQUM7O0tBQUFEO2NBQ0Fob0I7TUFBQTs7aUJBQUEsOEJBQUFBO2lCQUFBLDhCQUFBQTtVQURBc0M7TUFDQSwrQkFBQXRDO01BREEsV0FBQSw0QkFDQUEsTUFEQXNDO01BQUEsT0FBQSwrQkFDQXRDO0tBR087O0tBSlBpb0I7Y0FDQXZ3QjtNQUFBLE9BQUEscUNBREFzd0IsY0FDQXR3QjtLQUdPO0dBSFAsU0FBQXd3QixrQkFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O1FBQUEsT0FBQTs4Q0FBQS9LLGtCQUFBK0s7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBL0ssa0JBQUErSzs7O01BQUEsT0FBQTs0Q0FBQS9LLGtCQUFBK0s7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7V0FBQUM7VUFBQUEsbUJBQUFBO1FBQUE7U0FBQUMsV0FBQUQ7U0FBQUUsV0FBQSw0QkFBQUQ7UUFBQSxXQUFBQzs7T0FBQSxPQUFBOztnQkFBQW5MO2dCQUFBZ0w7Z0JBQUFEOztNQUFBLE9BQUE7NENBQUEvSyxrQkFBQStLOztLQUFBLE9BQUE7MkNBQUEvSyxrQkFBQStLOztJQUFBLE9BQUEsd0NBQUEvSyxrQkFBQStLO0dBR087WUFIUEs7SUFBQTtJQUVJLElBQUExZCxxQkFBQUMsV0FBQSw0QkFBQUQ7SUFBQSx5QkFBQUM7R0FDRztHQUhQLFNBQUEwZCxvQkFBQW5vQjtJQUFBLFVBQUFBO2dCQUFBQTs7Z0NBQUFBO09BQUEsT0FBQSw4Q0FBQXRCLFVBQUFzQjs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBdEIsVUFBQXNCOzs7OztZQUFBeUU7a0NBQUFBOzttQkFBQTt1REFBQS9GLFVBQUFzQjs7a0NBQUF5RTs7bUJBQUE7dURBQUEvRixVQUFBc0I7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUEsSUFBQUMsS0FBQUQsZ0JBQUFFLE9BQUEsNEJBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQWxHLFVBQUErRixLQUFBekU7Ozs7UUFBQSxPQUFBLDhDQUFBdEIsVUFBQXNCOzs7O0lBQUEsT0FBQSw4Q0FBQXRCLFVBQUFzQjtHQUdPO1lBSFBvb0I7SUFBQTtJQUVJLElBQUF6akIsZUFBQUMsT0FBQSw0QkFBQUQ7SUFBQSxvQ0FBQUM7R0FDRzs7SUFFUHlqQjtJQUFBQzs7S0FBQUQ7Y0FDQTNvQixLQUFBdEk7TUFBQSwrQkFBQXNJO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQUNRLCtCQURSc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBRWlCLCtCQUZqQnNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQURBLFdBTkFzd0IsY0FPQWhvQjtNQUFBLCtCQUFBQTtNQUFBLE9BQUEsK0JBQUFBO0tBSUM7O0tBTEQ0b0I7Y0FDQWx4QixHQUFBLE9BQUEscUNBREFpeEIsTUFDQWp4QixHQUlDO1lBSkRteEIsWUFBQUM7SUFBQSxTQUFBQTtLQUFBLE9BQUE7NENBQUF6TCxrQkFBQXlMO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0VFO0tBQ0FDO0tBQ0FDO0tBSEZDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFMO09BQUE7O1lBQUFNO2lCQUFBQTttQkFBQUE7Ozs7WUFBQUMsMkJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQWpNLGtCQUFBeUw7Z0JBQUFRO2NBQUEsTUFBQTtpQkFBQUssUUFBQUw7YUFBQSxPQUFBSztZQUlDO21CQUpERDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBO2tDQUFBQTs7WUFBQUgsbUJBQUFHLGdCQUFBSDs7a0JBRUVIO1dBRkZFLHdCQUFBSSxnQkFBQUo7O1dBRUU7WUFGRlMsbUJBQUFGO1lBRUVHLGFBQUEsMkJBRkZEO1dBRUVYLDJCQUFBWTs7aUJBREFiO1VBREZHLHdCQUFBSSxnQkFBQUo7O1VBQ0U7V0FERlcsbUJBQUFKO1dBQ0VLLGFBQUEsMkJBREZEO1VBQ0VkLGtCQUFBZTs7Z0JBRUFiO1NBSEZDLHdCQUFBSSxnQkFBQUo7O1NBR0U7VUFIRmEsbUJBQUFOO1VBR0VPLGFBVEYvQixrQkFNQThCO1NBR0VkLHVCQUFBZTs7b0JBSEZUOzs7Ozs7S0FBQSx5Q0FBQW5NLGtCQUFBZ007O09BQUFGO0tBQUEsT0FBQTs7Y0FBQTlMO2NBQUE4TDtjQUFBTDtPQUFBTTtLQUFBLE9BQUE7O2NBQUEvTDtjQUFBK0w7Y0FBQU47O1lBQ0VFO1lBQ0FDO2FBQ0FDOzs7TUFBQWdCO01BREFDO01BREFDO0tBREYsV0FDRUEsVUFDQUQsbUJBQ0FEOztJQUhGLE9BQUE7O2FBQUE3TTthQUFBeUw7O3dCQUNFRTs7eUJBQ0FDOzZCQUNBQztHQUNEO1lBSkRtQjtJQUFBO0tBR0VDO0tBREFDO0tBREFDO0tBRUFDLFVBVEZqQyxrQkFTRThCO0tBSEZJLGlDQUdFRDtLQURBRSxVQUFBLDJCQUFBSjtLQUZGSyxtQ0FFRUQsZUFGRkQ7S0FDRUcsVUFBQSwyQkFBQUw7S0FERk0sbUNBQ0VELGVBREZEO0lBQUEsV0FBQUU7R0FJQztZQUpEQyxjQUFBenFCO0lBQUEsVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRTBxQjtNQUNBQztNQUNBQztNQUhGdGlCO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtnQ0FBQUE7U0FBQTtXQUFBOztVQUFBSDtlQUFBRyxZQUFBLG1DQUFBSDs7Z0JBRUUsbUNBQUFvaUI7U0FGRnJpQjtjQUFBSSxZQUVFLG1DQUZGSjs7U0FFRTtVQUFBSztZQUFBLHFEQUZGRjtTQUVFa2lCLDZCQUFBaGlCOztlQURBLG1DQUFBK2hCO1FBREZwaUI7YUFBQUksWUFDRSxtQ0FERko7O1FBQ0U7U0FBQU07V0FBQSxxREFERkg7UUFDRWlpQixvQkFBQTloQjs7Y0FFQSxtQ0FBQWdpQjtPQUhGdGlCO1lBQUFJLFlBR0UsbUNBSEZKOztPQUdFLElBQUFPLFdBVEZzZixvQkFNQTFmO09BR0VtaUIseUJBQUEvaEI7O2tCQUhGTDs7UUFBQSxtQ0FBQUY7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUExSixnQkFBQW9COztRQUFBLG1DQUFBdUk7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUEzSixnQkFBQW9COztLQUNFO01BQUEsVUFBQSxtQ0FBQTBxQjtNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7OztPQUFBQztPQURBQztPQURBQztNQURGLFdBQ0VBLFlBQ0FELHFCQUNBRDs7S0FIRjtNQUFBOzs7Z0JBR0UsbUNBQUFEOzs7TUFIRjs7O2dCQUVFLG1DQUFBRDs7Ozs7TUFGRjs7O2dCQUNFLG1DQUFBRDs7O0tBREYsT0FBQTtrREFBQTlyQixVQUFBb0I7O0lBQUEsT0FBQSwrQ0FBQXBCLFVBQUFvQjtHQUlDO1lBSkRnckI7SUFBQTtLQUdFQztLQURBQztLQURBQztLQUVBOWhCLE1BVEYrZSxvQkFTRTZDO0tBQUEzaEIsZ0NBQUFEO0tBREFFOzJEQUFBMmhCO0tBQUExaEIsc0NBQUFELFFBQ0FEO0tBRkFHLDREQUFBMGhCO0tBQUF6aEIsNkJBQUFELFFBQ0FEO0lBRkYsc0JBQ0VFO0dBR0Q7O0lBRUQwaEI7O0lBQUFDOztLQUFBRDtjQUNBMXJCO01BQUE7O2lCQUFBLDhCQUFBQTtpQkFBQSw4QkFBQUE7VUFEQXNDO01BQ0EsK0JBQUF0QztNQURBLFdBQUEsNEJBQ0FBLE1BREFzQztNQUFBLE9BQUEsK0JBQ0F0QztLQUdjOztLQUpkMnJCO2NBQ0FqMEI7TUFBQSxPQUFBLHFDQURBZzBCLHFCQUNBaDBCO0tBR2M7R0FIZCxTQUFBazBCLHlCQUFBQztJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7UUFBQTs7T0FBQTs7TUFBQSxPQUFBOzRDQUFBdk8sa0JBQUF1Tzs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUF2TyxrQkFBQXVPOzs7TUFBQSxPQUFBOzRDQUFBdk8sa0JBQUF1TztTQUFBQzs7NkJBQUFBOzs4QkFBQUE7K0JBQUFBO2tDQUFBQTtrQ0FBQUE7Z0NBQUFBOztPQUFBLE9BQUE7NkNBQUF4TyxrQkFBQXVPOztNQUFBLE9BQUE7NENBQUF2TyxrQkFBQXVPOztTQUFBRTtRQUFBQSxtQkFBQUE7TUFBQTtPQUFBdGQsV0FBQXNkO09BQUFDLFdBQUEsNEJBQUF2ZDtNQUFBLFdBQUF1ZDs7S0FBQSxPQUFBOztjQUFBMU87Y0FBQXdPO2NBQUFEOztJQUFBLE9BQUEsd0NBQUF2TyxrQkFBQXVPO0dBR2M7WUFIZEk7SUFBQTtJQUVJLElBQUFDLHFCQUFBQyxXQUFBLDRCQUFBRDtJQUFBLHlCQUFBQztHQUNVO0dBSGQsU0FBQUMsMkJBQUE5ckI7SUFBQSxVQUFBQTtnQkFBQUE7O2dDQUFBQTtPQUFBLE9BQUEsOENBQUFsQixVQUFBa0I7OztpQkFBQUE7O09BQUEsT0FBQSw4Q0FBQWxCLFVBQUFrQjs7Ozs7WUFBQXlFO2tDQUFBQTthQUFBQztZQUFBQSxpQkFBQUE7VUFBQSxJQUFBQyxLQUFBRCxnQkFBQUUsT0FBQSw0QkFBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBOUYsVUFBQTJGLEtBQUF6RTs7a0NBQUF5RTs7bUJBQUE7dURBQUEzRixVQUFBa0I7O2tDQUFBeUU7O21CQUFBO3VEQUFBM0YsVUFBQWtCOzs7O1FBQUEsT0FBQSw4Q0FBQWxCLFVBQUFrQjs7OztJQUFBLE9BQUEsOENBQUFsQixVQUFBa0I7R0FHYztZQUhkK3JCO0lBQUE7SUFFSSxJQUFBcG5CLGVBQUFDLE9BQUEsNEJBQUFEO0lBQUEsb0NBQUFDO0dBQ1U7O0lBRWRvbkI7SUFBQUM7O0tBQUFEO2NBQ0F0c0I7TUFBQTs7aUJBQUEsOEJBQUFBO2lCQUFBLDhCQUFBQTtVQURBc0M7TUFDQSwrQkFBQXRDO01BREEsV0FBQSxXQU5BMHJCLHFCQU9BMXJCLE1BREFzQztNQUFBLE9BQUEsK0JBQ0F0QztLQUdrQzs7S0FKbEN1c0I7Y0FDQTcwQixHQUFBLE9BQUEscUNBREE0MEIsV0FDQTUwQixHQUdrQztZQUhsQzgwQixlQUFBQztJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7UUFBQTs7T0FBQTs7TUFBQSxPQUFBOzRDQUFBbFAsa0JBQUFrUDs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUFsUCxrQkFBQWtQOzs7TUFBQSxPQUFBOzRDQUFBbFAsa0JBQUFrUDtTQUFBQzs7NkJBQUFBOzs4QkFBQUE7K0JBQUFBO2tDQUFBQTtrQ0FBQUE7Z0NBQUFBOztPQUFBLE9BQUE7NkNBQUFuUCxrQkFBQWtQOztNQUFBLE9BQUE7NENBQUFsUCxrQkFBQWtQOztTQUFBRTtRQUFBQSxtQkFBQUE7TUFBQTtPQUFBQyxXQUFBRDtPQUFBRSxXQU5BakIseUJBTUFnQjtNQUFBLFdBQUFDOztLQUFBLE9BQUE7O2NBQUF0UDtjQUFBbVA7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQWxQLGtCQUFBa1A7R0FHa0M7WUFIbENLO0lBQUE7SUFHSSxJQUFBQyxxQkFBQUMsV0FUSmYseUJBU0ljO0lBQUEseUJBQUFDO0dBQThCO1lBSGxDQyxpQkFBQTNzQjtJQUFBLFVBQUFBO2dCQUFBQTs7Z0NBQUFBO09BQUEsT0FBQSw4Q0FBQWhCLFVBQUFnQjs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBaEIsVUFBQWdCOzs7OztZQUFBeUU7a0NBQUFBO2FBQUFDO1lBQUFBLGlCQUFBQTtVQUFBLElBQUFDLEtBQUFELGdCQUFBRSxPQU5Ba25CLDJCQU1Bbm5CO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQTVGLFVBQUF5RixLQUFBekU7O2tDQUFBeUU7O21CQUFBO3VEQUFBekYsVUFBQWdCOztrQ0FBQXlFOzttQkFBQTt1REFBQXpGLFVBQUFnQjs7OztRQUFBLE9BQUEsOENBQUFoQixVQUFBZ0I7Ozs7SUFBQSxPQUFBLDhDQUFBaEIsVUFBQWdCO0dBR2tDO1lBSGxDNHNCO0lBQUE7SUFHSSxJQUFBam9CLGVBQUFDLE9BVEptbkIsMkJBU0lwbkI7SUFBQSxvQ0FBQUM7R0FBOEI7R0F4QmxCOzs7T0FDaEI4aUI7T0FBQUM7T0FDQUM7T0FBQU07T0FBQUM7T0FBQUM7T0FLQUM7T0FBQUM7T0FDQUM7T0FBQXdCO09BQUFVO09BQUFPO09BTUFJO09BQUFDO09BQ0FDO09BQUFLO09BQUFHO09BQUFDO09BS0FDO09BQUFDO09BQ0FDO09BQUFNO09BQUFHO09BQUFDO09BS0kxUDtZQUtGMlAseUJBQ0MzUixVQUFvQkQsU0FBa0I2UjtJQUFzQyxXQUF0Q0E7a0JBR3BDLzBCO0tBQXFCO01BQUEsT0FBQSxXQUFyQkEsU0FIRm1qQjtNQUd1QixjQUEwQixXQUEvQ25qQixTQUhrQmtqQjtLQUc2QjtJQUFvQjtJQUR0RSxJQURFOFIsUUFDRjtJQUlGLEtBTElBLE9BTUk7T0FOSkE7S0FnQm1CO01BQUEsT0FBQSwyQkFoQm5CQTtNQWdCSyxPQUFBO01BQUEsT0FBQTtNQURBLE9BQUE7TUFEZSxPQUFBLHlDQWZyQjdSO01BZU0sT0FBQTtNQUFBLE9BQUE7TUFEQSxPQUFBO01BRGUsT0FBQSx5Q0FiREQ7TUFhZCxPQUFBO01BQUEsT0FBQTtNQURILE9BQUE7S0FGSixNQUFBOztRQUZDbGpCLE9BUENnMUI7SUFPUSxPQUFUaDFCO0dBY0o7WUFFR2kxQixxQkFDQzlSLFVBQW9CRCxTQUFrQmdTLFlBQXdCSDtJQUNsQyxXQURrQ0E7a0JBSTVELzBCO0tBQXFCO01BQUEsT0FBQSxXQUFyQkEsU0FKRm1qQjtNQUl1QixjQUEwQixXQUEvQ25qQixTQUprQmtqQjtLQUk2QjtJQUFvQjtJQUR0RSxJQURFOFIsUUFDRjtJQUtGLEtBTklBLE9BT0k7T0FQSkE7S0F3Q21CO01BQUEsT0FBQSwyQkF4Q25CQTtNQXdDSyxPQUFBO01BQUEsT0FBQTtNQURBLE9BQUE7TUFEZSxPQUFBLHlDQXhDRDlSO01Bd0NkLE9BQUE7TUFBQSxPQUFBO01BREEsT0FBQTtNQURlLE9BQUEseUNBdENyQkM7TUFzQ00sT0FBQTtNQUFBLE9BQUE7TUFESCxPQUFBO0tBRkosTUFBQTs7SUF4QkEsSUFEQ25qQixPQVJDZzFCLFVBU0YsT0FEQ2gxQjtrQkFHSW0xQixTQUEyQixPQUFBLFdBQTNCQSxZQWJrQ0QsWUFhcUI7SUFEMUQsSUFERXBTLFdBQ0Y7SUFJRixLQUxJQSxVQU1JO09BTkpBO0tBa0JtQjtNQUFBLE9BQUEsMkJBbEJuQkE7TUFrQkssT0FBQTtNQUFBLE9BQUE7TUFEQSxPQUFBO01BRGUsT0FBQSx5Q0EzQmVvUztNQTJCOUIsT0FBQTtNQUFBLE9BQUE7TUFEQSxPQUFBO01BRGUsT0FBQSx5Q0F6QkhoUztNQXlCWixPQUFBO01BQUEsT0FBQTtNQURBLE9BQUE7TUFEZSxPQUFBLHlDQXZCdkJDO01BdUJRLE9BQUE7TUFBQSxPQUFBO01BREgsT0FBQTtLQUZKLE1BQUE7O1FBRkNnUyxVQVBDclM7SUFPVyxXQUFacVM7R0E2Qk47WUFFR0Msa0JBQXFCbFMsU0FBa0JtUztJQUF1QixXQUF2QkE7a0JBUXhCcjFCLE1BQWUsT0FBQSxXQUFmQSxTQVJNa2pCLFNBUTJCO0lBQWhEO0tBQUEsT0FBQTtLQUZvQixPQUFBLHlDQU5tQm1TO0tBTWxDLE9BQUE7S0FEQSxPQUFBO0tBRGUsT0FBQSx5Q0FKQ25TO0tBSWhCLE9BQUE7S0FBQSxPQUFBO0tBREgsT0FBQTtJQUtGLE9BQUE7R0FFSDtZQUVHb1Msb0JBQXVCRCxPQUFjTjtJQUFtQixXQUFuQkE7a0JBR2xDUSxTQUF3QixPQUFBLFdBQXhCQSxZQUhvQkYsVUFHNEI7SUFEbkQsSUFERUcsV0FDRix5Q0FJRixRQU55Qkg7T0FDckJHO1NBT0FDLGFBUEFEO1VBQUFBLGFBT2lCLE9BcEJuQkosa0JBb0JFSyxlQVJxQko7S0FlRjtNQUFBLE9BQUEsMkJBZG5CRztNQWNLLE9BQUE7TUFBQSxPQUFBO01BREEsT0FBQTtNQURlLE9BQUEseUNBYkNIO01BYWhCLE9BQUE7TUFBQSxPQUFBO01BREgsT0FBQTtLQUZKLE1BQUE7OztLQVVBLE1BQUE7O1FBYk1yMUI7SUFBa0IsT0FBbEJBO0dBZVQ7WUFFRzAxQixZQUFlTDtJQUNqQixPQUFJLDJCQURhQSxXQUNpQjtlQURqQkE7a0JBTVZyMUI7S0FJSzs7UUFBQTs7O1dBSkxBOztLQUNDLFdBRERBO0lBV0U7SUFaTCxXQUFBO0lBQUEsT0FBQTtHQWdCSDtZQUVDMjFCLHFCQUNDTixPQUFjTjtJQUNtQixXQXpCbENXLFlBd0JDTDtJQUErRCxXQWhEaEVDLG9CQWdEQ0QsT0FBY047R0FFbEI7Ozs7T0F4TUQxUDtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUlBQztPQUFBQztPQUNBQztPQUFBb0I7T0FBQU87T0FBQUc7T0FLQUU7T0FBQUM7T0FDQUM7T0FBQTRCO09BQUFhO09BQUFPO09BT0FJO09BQUFDO09BQ0FDO09BQUFvQjtPQUFBTztPQUFBRztPQUtBcFA7T0FBQUM7T0FDQUM7T0FBQXlDO09BQUF3QjtPQUFBTzs7T0FtQ0kyQztPQUVBMFA7T0F5QkFHO09Ba0RBRztPQVlBRTtPQXdCQUk7T0F1QkFDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUN4TUozdkI7SUFBQUM7SUFjQTJ2QjtJQUFBenZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWZBMHZCLFFBQ0FsdUI7SUFBQTs7T0FBQSxPQUFBLDhCQUFBQTs7T0FBQSxPQUFBLDhCQUFBQTtlQUFBLE9BQUEsOEJBQUFBOztHQUdhO1lBSmJtdUIsVUFDQXoyQjtJQUFBLE9BQUEsb0NBREF3MkIsU0FDQXgyQjtHQUdhO0dBSGIsU0FBQTAyQixhQUFBanVCO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBOztPQUFBOztNQUFBOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7OztNQUFBLE9BQUE7NENBQUE5QixrQkFBQThCOzs7Ozs7Ozs7OztPQUFBLE9BQUE7NkNBQUE5QixrQkFBQThCOztNQUFBLE9BQUE7NENBQUE5QixrQkFBQThCOztLQUFBLE9BQUE7MkNBQUE5QixrQkFBQThCOztJQUFBLE9BQUEsd0NBQUE5QixrQkFBQThCO0dBR2E7WUFIYmt1QjtJQUFBLHNCQUNJLG1CQUNBLG9CQUNBOztHQUFTO0dBSGIsU0FBQUMsZUFBQWh1QjtJQUFBLFVBQUFBLHFDQUFBQTtnQkFBQUE7O01BQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7Ozs7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7SUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDO0dBR2E7WUFIYml1QjtJQUFBLHNCQUNJLG1CQUNBLG9CQUNBOztHQUFTO1lBRVRDLGVBQWtCQztJQUNwQiwwQkFEb0JBLHlCQUdDOzhCQUhEQSxxQkFJSDs4QkFKR0EsbUJBRUw7SUFHQyxXQUFBLHVEQUxJQTtJQUtKLE9BQUE7R0FDZjs7SUFFSHJZO0lBQUFDOztLQUFBRDtjQUNBcFcsS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FDWSwrQkFEWnNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQUVtQiwrQkFGbkJzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FEQSxzQ0FDQXNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQUlvQiwrQkFKcEJzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FLcUIsK0JBTHJCc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBTW1CLCtCQU5uQnNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQU9hLCtCQVBic0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBREEsNkNBQ0FzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQWZBa3VCLFFBZUFsdUIsS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLE9BQUEsK0JBQUFBO0tBVUM7O0tBWERxVyxlQUNBM2UsR0FBQSxPQUFBLG9DQURBMGUsSUFDQTFlLEdBVUM7WUFWRDRlLFVBQUE2SDtJLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQThQLGtCQUFBOVA7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDRXVRO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBVEZDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFoUjtPQUFBOztZQUFBSztpQkFBQUE7bUJBQUFBOzs7O1lBQUE2QiwyQkFBQStPO1dBQUEvTyxtQkFBQUE7O1NBQUFnUDtTQUFBQztvQkFBQWpQO3FCQUFBa1A7YUFBQSxLQUFBbFA7Y0FBQSxPQUFBO3FEQUFBMk4sa0JBQUE5UDtnQkFBQW1DO2NBQUEsTUFBQTtpQkFBQW1QLFFBQUFuUDthQUFBLE9BQUFtUDtZQVVDO21CQVZERDs7U0FBQUEsaUJBQUFELGlCQUFBalA7Z0NBQUErTztpQ0FBQUE7a0NBQUFBO21DQUFBQTtvQ0FBQUE7cUNBQUFBO3NDQUFBQTt1Q0FBQUE7O3VDQUFBQTs7a0JBQUFELG1CQUFBQyxnQkFBQUQ7O3dCQUVFVDtpQkFGRlEsd0JBQUFFLGdCQUFBRjs7aUJBRUU7a0JBRkZPLG1CQUFBRjtrQkFFRUcsYUFBQSwyQkFGRkQ7aUJBRUVmLDZCQUFBZ0I7O3VCQU9BVDtnQkFURkMsd0JBQUFFLGdCQUFBRjs7Z0JBU0U7aUJBVEZTLG1CQUFBSjtpQkFTRUssYUF2QkZ6QixhQWNBd0I7Z0JBU0VWLGtCQUFBVzs7c0JBSEFkO2VBTkZJLHdCQUFBRSxnQkFBQUY7O2VBTUU7Z0JBTkZXLG1CQUFBTjtnQkFNRU8sYUFBQSwyQkFORkQ7ZUFNRWYsNkJBQUFnQjs7cUJBRUFkO2NBUkZFLHdCQUFBRSxnQkFBQUY7O2NBUUU7ZUFSRmEsbUJBQUFSO2VBUUVTO2lCQUFBO3FEQVJGRDtjQVFFZix5QkFBQWdCOztvQkFMQXJCO2FBSEZPLHdCQUFBRSxnQkFBQUY7O2FBR0U7Y0FIRmUsbUJBQUFWO2NBR0VXO2dCQUFBLHNDQUhGRDthQUdFdEIsa0JBQUF1Qjs7bUJBRUFyQjtZQUxGSyx3QkFBQUUsZ0JBQUFGOztZQUtFO2FBTEZpQixtQkFBQVo7YUFLRWEsYUFBQSwyQkFMRkQ7WUFLRXRCLCtCQUFBdUI7O2tCQUpBM0I7V0FERlMsd0JBQUFFLGdCQUFBRjs7V0FDRTtZQURGbUIsbUJBQUFkO1lBQ0VlLGFBQUEsMkJBREZEO1dBQ0U1QixzQkFBQTZCOztpQkFNQXZCO1VBUEZHLHdCQUFBRSxnQkFBQUY7O1VBT0U7V0FQRnFCLG1CQUFBaEI7V0FPRWlCLGFBQUEsMkJBUEZEO1VBT0V4Qix1QkFBQXlCOztnQkFIQTVCO1NBSkZNLHdCQUFBRSxnQkFBQUY7O1NBSUU7VUFKRnVCLG1CQUFBbEI7VUFJRW1CLGFBQUEsMkJBSkZEO1NBSUU3Qiw4QkFBQThCOztvQkFKRnJCOzs7Ozs7S0FBQSx5Q0FBQXJCLGtCQUFBeFA7O09BQUEwUTtLQUFBLE9BQUE7O2NBQUFsQjtjQUFBa0I7Y0FBQWhSO09BQUFpUjtLQUFBLE9BQUE7O2NBQUFuQjtjQUFBbUI7Y0FBQWpSOztZQUNFdVE7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7YUFDQUM7OztNQUFBMEI7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7S0FERjthQUNFQTthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDs7SUFURixPQUFBOzthQUFBM0M7YUFBQTlQOzt3QkFDRXVROzs7c0JBQ0FDOzs7MEJBQ0FDOzs7d0JBQ0FDOzs7O3lCQUNBQzs7OzswQkFDQUM7Ozs4QkFDQUM7OytCQUNBQzttQ0FDQUM7O1lBVEZuVztJQUFBO0tBU0VzWTtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQVFBQyxVQXZCRnpELGFBdUJFZ0Q7S0FURlUsZ0NBU0VEO0tBREF6UCxVQUFBLDhDQUFBaVA7S0FSRlUsa0NBUUUzUCxlQVJGMFA7S0FPRXhQLFVBQUEsMkJBQUFnUDtLQVBGVSxrQ0FPRTFQLGVBUEZ5UDtLQU1FdlAsVUFBQSwyQkFBQStPO0tBTkZVLGtDQU1FelAsZUFORndQO0tBS0V0UCxVQUFBLDJCQUFBOE87S0FMRlUsa0NBS0V4UCxlQUxGdVA7S0FJRUUsVUFBQSwyQkFBQVY7S0FKRlcsa0NBSUVELGVBSkZEO0tBR0VHLFVBQUEsc0NBQUFYO0tBSEZZLGtDQUdFRCxlQUhGRDtLQUVFRyxVQUFBLDJCQUFBWjtLQUZGYSxrQ0FFRUQsZUFGRkQ7S0FDRUcsVUFBQSwyQkFBQWI7S0FERmMsa0NBQ0VELGVBREZEO0lBQUEsV0FBQUU7R0FVQztZQVZEcFksWUFBQWphO0ksVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRXN5QjtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQVRGeHFCO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtnQ0FBQUE7aUNBQUFBO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7ZUFBQTtpQkFBQTs7O2dCQUFBSDtxQkFBQUcsWUFBQSxtQ0FBQUg7OztnQkFFRSxtQ0FBQWdxQjtlQUZGanFCOztpQkFBQUk7aUJBRUUsbUNBRkZKOztlQUVFO2dCQUFBSztrQkFBQTs4REFGRkY7ZUFFRThwQiwrQkFBQTVwQjs7cUJBT0EsbUNBQUFtcUI7Y0FURnhxQjttQkFBQUksWUFTRSxtQ0FURko7O2NBU0UsSUFBQU0sV0F2QkZvbEIsZUFjQXZsQjtjQVNFcXFCLG9CQUFBbHFCOztvQkFIQSxtQ0FBQStwQjthQU5GcnFCO2tCQUFBSSxZQU1FLG1DQU5GSjs7YUFNRTtjQUFBTztnQkFBQTs0REFORko7YUFNRWtxQiwrQkFBQTlwQjs7bUJBRUEsbUNBQUFncUI7WUFSRnZxQjtpQkFBQUksWUFRRSxtQ0FSRko7O1lBUUU7YUFBQW9JO2VBQUEsOENBUkZqSTtZQVFFb3FCLDJCQUFBbmlCOztrQkFMQSxtQ0FBQThoQjtXQUhGbHFCO2dCQUFBSSxZQUdFLG1DQUhGSjs7V0FHRSxJQUFBcUksV0FBQSxzQ0FIRmxJO1dBR0UrcEIsb0JBQUE3aEI7O2lCQUVBLG1DQUFBK2hCO1VBTEZwcUI7ZUFBQUksWUFLRSxtQ0FMRko7O1VBS0U7V0FBQXlxQjthQUFBO3lEQUxGdHFCO1VBS0VpcUIsaUNBQUFLOztnQkFKQSxtQ0FBQVQ7U0FERmhxQjtjQUFBSSxZQUNFLG1DQURGSjs7U0FDRTtVQUFBMHFCO1lBQUEscURBREZ2cUI7U0FDRTZwQix3QkFBQVU7O2VBTUEsbUNBQUFKO1FBUEZ0cUI7YUFBQUksWUFPRSxtQ0FQRko7O1FBT0U7U0FBQTJxQjtXQUFBLHFEQVBGeHFCO1FBT0VtcUIseUJBQUFLOztjQUhBLG1DQUFBUjtPQUpGbnFCO1lBQUFJLFlBSUUsbUNBSkZKOztPQUlFO1FBQUE0cUI7VUFBQSxxREFKRnpxQjtPQUlFZ3FCLGdDQUFBUzs7a0JBSkYxcUI7O1FBQUEsbUNBQUFGO01BQUEsVUFBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBcEssZUFBQThCOztRQUFBLG1DQUFBdUk7TUFBQSxVQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFySyxlQUFBOEI7O0tBQ0U7TUFBQSxVQUFBLG1DQUFBc3lCO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQzs7Ozs7Ozs7O09BQUFLO09BREFDO09BREFDO09BREFDO09BREFDO09BREFDO09BREFDO09BREFDO09BREFDO01BREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7O0tBVEY7TUFBQTs7O2dCQVNFLG1DQUFBTDs7O01BVEY7OztnQkFRRSxtQ0FBQUQ7OztNQVJGOzs7Z0JBT0UsbUNBQUFEOzs7TUFQRjs7O2dCQU1FLG1DQUFBRDs7Ozs7TUFORjs7O2dCQUtFLG1DQUFBRDs7Ozs7TUFMRjs7O2dCQUlFLG1DQUFBRDs7Ozs7TUFKRjs7O2dCQUdFLG1DQUFBRDs7O01BSEY7OztnQkFFRSxtQ0FBQUQ7Ozs7O01BRkY7OztnQkFDRSxtQ0FBQUQ7OztLQURGLE9BQUE7a0RBQUFwMEIsVUFBQThCOztJQUFBLE9BQUEsK0NBQUE5QixVQUFBOEI7O1lBQUF3YTtJQUFBO0tBU0VvWjtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQVFBL3FCLE1BdkJGNGtCLGVBdUJFMkY7S0FBQXRxQiwyQkFBQUQ7S0FEQUUsc0RBQUFzcUI7S0FBQXJxQixvQ0FBQUQsUUFDQUQ7S0FGQUcsNERBQUFxcUI7S0FBQXBxQixrQ0FBQUQsUUFDQUQ7S0FGQStIOzJEQUFBd2lCO0tBQUF2aUIsd0NBQUFELFFBQ0E3SDtLQUZBK0g7O2tEQUFBdWlCO0tBQUF0aUIsMENBQUFELFFBQ0FEO0tBRkE2aUI7MkRBQUFKO0tBQUFLLHlDQUFBRCxRQUNBM2lCO0tBRkE2aUIsOENBQUFMO0tBQUFNLDZCQUFBRCxRQUNBRDtLQUZBRzsyREFBQU47S0FBQU8sd0NBQUFELFFBQ0FEO0tBRkFHLDREQUFBUDtLQUFBUSxpQ0FBQUQsUUFDQUQ7SUFGRixzQkFDRUU7R0FTRDtZQUVHQyxvQkFBc0JDO0lBQ3hCLEdBRHdCQTtLQUMyQzthQUQzQ0E7YUFBQUE7YUFBQUE7YUFBQUE7YUFBQUE7O2FBQUFBO2FBQUFBO2FBQUFBO0lBR2pCLE9BSGlCQTtHQUt2Qjs7OztPQWhDSGxIO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BS0lDO09BUUpwWTtPQUFBQztPQUNBQztPQUFBeUM7T0FBQXdCO09BQUFPO09BWUlxYTs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDM0JKRTtJQUFBQzs7Ozs7O0tBQUFELG1CQUNBcjFCLEtBREEsT0FBQSxnQ0FDQUEsS0FBcUI7O0tBRHJCczFCO2NBQ0E1OUIsR0FBQSxPQUFBLG9DQURBMjlCLFVBQ0EzOUIsR0FBcUI7R0FBckI7SUFBQTY5QjtJQUFBQztJQUFBQztJQUFBQztJQUVBQztJQUFBQzs7S0FBQUQ7Y0FDQTMxQixLQURBLE9BQUEsMENBQ0FBLEtBQTBDOztLQUQxQzQxQjtjQUNBbCtCO01BQUEsT0FBQSxvQ0FEQWkrQixxQkFDQWorQjtLQUEwQztHQUExQztJQUFBbStCO0lBQUFDO0lBQUFDO0lBQUFDO1lBRUlDLFlBQWNyOUIsR0FBSyxPQUFBLG9DQUFMQSxHQUFvQjtZQUVsQ3M5QixRQUFXQztJQUFrQixpREFBbEJBO0dBRWQ7WUFFR0MsVUFBYTU4QjtJQUNGLElBQVQ2OEIsV0FBUywwQ0FERTc4QjtJQUVmLE9BQUEsc0NBREk2OEI7R0FFTDtZQUVHQyxVQUFhQztJQUNmLFVBQUEsV0FkRlQsMEJBSUlJLFFBU2FLO0lBQ2YsT0FBQTtHQUNEO1lBRUdDLFlBQWVDO0lBQWlCLE9BVGhDTDthQVVGO2VBbEJGUCwwQkFrQkUsNkJBRGlCWTtHQUVsQjtZQUVHQyxnQkFBbUJEO0lBQWlCO0tBRWpDO01BQUE7O1NBQU07V0F2QmJaLDBCQXVCYSw2QkFGVVk7TUFDakJFOzttQkFBQUE7aUJBSWVBLE1BQVEsT0FsQnpCUCxVQWtCaUJPLE1BQXlCO0lBQTVDLE9BQUEsV0FBUSxtQ0FKSkE7R0FLTDtZQUVHQyxTQUFVTDtJQUFpQixPQUM3QixXQTlCRlAsNEJBSUlFLFFBeUJVSztHQUViO1lBRUdNLFNBQVVKO0lBQWlCLE9BekIzQkw7YUEwQkY7ZUFsQ0ZMO2VBa0NFLHFDQURZVTtHQUViO1lBRUdLLFlBQWVQO0lBQWlCLE9BQ2xDLFdBdkNGWCx1QkFLSU0sUUFpQ2VLO0dBRWxCO1lBRUdRLFdBQ0UzQixVQUFzQmUsUUFBa0JhO0lBQ2Y7S0FDekJDLE9BQU8sbUNBRmVkO0tBR3RCZTtPQUFXLHNDQUhYOUIsYUFBd0M0QixVQUV4Q0M7S0FFQUU7T0FDRixvQ0FMd0JoQixpQkFHdEJlO0lBR0osV0FKSUQsTUFDQUMsVUFDQUM7R0FHTDs7OztPQXJERDlCO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BRUFDO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BRUlDO09BRUFDO09BSUFFO09BS0FFO09BSUFFO09BSUFFO09BUUFFO09BSUFDO09BSUFDO09BSUFDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQzNDSng0QjtJQUFBRDtJQU9BODRCO0lBQUE1NEI7SUFPQTJlO0lBQUF6ZTs7Ozs7Ozs7Ozs7Ozs7O0lBZkEyNEI7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBQUFEO2NBQ0FyM0I7TUFBQSxJQUdFdTNCLGVBREEzcUIsZUFIRnRLO01BQ2UsK0JBQWZ0QztNQURBLFdBRUUsK0JBREZBLFdBREFzQztNQUNlLCtCQUFmdEM7TUFFRSwrQkFGRkE7O29CQUVFOE0sS0FBQXBWO09BQUEsR0FBQW9WLEtBQUEsK0JBRkY5TTtPQUVFLFdBSEYscUNBQ0FBLE1BRUV0STtPQUFBO01BQW1DO01BQW5DLHdDQUFBa1Y7TUFBQSwrQkFGRjVNO01BQWUsK0JBQWZBO01BR0UsK0JBSEZBOztvQkFHRThNLEtBQUFwVjtPQUFBLEdBQUFvVixLQUFBLCtCQUhGOU07V0FEQTRNLEtBSUVsVixNQUpGNEssS0FJRTVLO09BQUssK0JBSFBzSTtPQURBLFdBSVEsK0JBSFJBLFdBREFzQztPQUlPLCtCQUhQdEM7T0FEQSxXQUFBLHNDQUNBQSxNQURBNE07T0FBQSwrQkFDQTVNO09BR0U7TUFBc0M7TUFBdEMsd0NBQUF1M0I7TUFBQSwrQkFIRnYzQjtNQURBLE9BQUEsK0JBQ0FBO0tBSUM7O0tBTERzM0I7Y0FDQTUvQixHQUFBLE9BQUEsb0NBREEyL0IsWUFDQTMvQixHQUlDO0dBSkQsU0FBQTgvQixnQkFBZUM7SUFBZixTQUFlQTtnQkFBQUE7Ozs7OztRQUFBO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDLFdBQUEsNEJBQUFEO1NBQUFFO1dBQUEsc0RBQUFIOztvQkFHUnhaO1lBQUwsU0FBS0E7d0JBQUFBOzs7O2VBQUE7Z0JBQUE0WjtnQkFBQUM7Z0JBQUFDLFdBQUEsNEJBQUFEO2dCQUFBRSxXQUFBLHNDQUFBSDtlQUFBLFdBQUFFLFVBQUFDOzs7O1lBQUEsT0FBQTtrREFIUDM1QixxQkFHTzRmO1dBQWlDO1NBSHpCZ2EsV0FBQSxrQ0FBQVQ7UUFBQSxXQUFBRyxVQUFBQyxVQUFBSzs7Ozs7SUFBQSxPQUFBOzBDQUFmNTVCLHFCQUFlazVCO0dBSWQ7WUFKRFc7SUFBQTtLQUFlQztLQUFBQztLQUFBQztLQUFBQyx1Q0FBQUQ7S0FBQUU7OERBQUFIOzs7TUFHUkk7TUFBQUM7TUFBQUMsc0NBQUFEO01BQUFFLGlEQUFBSDtvQkFBQUUsY0FBQUM7O1FBSFFDLDZDQUFBVDttQkFBQUcsY0FBQUMsY0FBQUs7R0FJZDtHQUpELFNBQUFDLGtCQUFlejRCO0lBQWYsVUFBZUEscUNBQUFBO2dCQUFBQTs7Ozs7OztTQUFBMDRCO1NBQUFsb0I7U0FBQTdMO1NBQUFDLDREQUFBRDtTQUFBOEw7Ozs7YUFBQUQ7O29CQUdSeFE7WSxVQUFBQSxxQ0FBQUE7d0JBQUFBOzs7OztnQkFBQXdRO2dCQUFBN0w7Z0JBQUFDO3VFQUFBRDtnQkFBQThMLDZDQUFBRDswQkFBQTVMLE1BQUE2TDs7Ozs7d0RBSFB6UyxXQUdPZ0M7O1NBSFEyNEIsa0VBQUFEO21CQUFBOXpCLE1BQUE2TCxNQUFBa29COzs7Ozt5REFBZjM2QixXQUFlZ0M7R0FJZDtZQUpENDRCO0lBQUE7S0FBZUY7S0FBQWxvQjtLQUFBN0w7S0FBQUMsMkRBQUFEO0tBQUE4TDs7OztTQUFBRDs7O01BR1JBO01BQUE3TDtNQUFBQywyREFBQUQ7TUFBQThMLDZDQUFBRDsrQkFBQTVMLFVBQUE2TDs7UUFIUWtvQixrRUFBQUQ7OEJBQUE5ekIsVUFBQTZMLFVBQUFrb0I7R0FJZDs7SUFFREU7SUFBQUM7O0tBQUFEO2NBQ0FuNUI7TUFBQSxJQUdFdTNCLGVBREEzcUIsZUFIRnRLO01BQ3FCLCtCQUFyQnRDO01BREEsV0FFRSwrQkFERkEsV0FEQXNDO01BQ3FCLCtCQUFyQnRDO01BRUUsK0JBRkZBOztvQkFFRThNLEtBQUFwVjtPQUFBLEdBQUFvVixLQUFBLCtCQUZGOU07V0FEQTRNLEtBR0VsVixNQUhGNEssS0FHRTVLO09BQUssK0JBRlBzSTtPQURBLFdBR1EsK0JBRlJBLFdBREFzQztPQUdPLCtCQUZQdEM7T0FEQSxXQUFBLHFDQUNBQSxNQURBNE07T0FBQSwrQkFDQTVNO09BRUU7TUFBNkM7TUFBN0Msd0NBQUE0TTtNQUFBLCtCQUZGNU07TUFBcUIsK0JBQXJCQTtNQUdFLCtCQUhGQTs7b0JBR0U4TSxLQUFBcFY7T0FBQSxHQUFBb1YsS0FBQSwrQkFIRjlNO1dBREE0TSxLQUlFbFYsTUFKRjRLLEtBSUU1SztPQUFtQiwrQkFIckJzSTtPQURBLFdBSXNCLCtCQUh0QkEsV0FEQXNDO09BSXFCLCtCQUhyQnRDO09BREEsV0FBQSxzQ0FDQUEsTUFEQTRNO09BQUEsK0JBQ0E1TTtPQUdFO01BQW9EO01BQXBELHdDQUFBdTNCO01BQUEsK0JBSEZ2M0I7TUFEQSxPQUFBLCtCQUNBQTtLQUlDOztLQUxEbzVCO2NBQ0ExaEM7TUFBQSxPQUFBLG9DQURBeWhDLGtCQUNBemhDO0tBSUM7R0FKRCxTQUFBMmhDLHNCQUFxQkM7SUFBckIsU0FBcUJBO2dCQUFBQTs7Ozs7O1FBQUE7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUMsV0FBQSw0QkFBQUQ7O29CQUVkRTtZQUFMLFNBQUtBO3dCQUFBQTs7OztlQUFBO2dCQUFBQztnQkFBQUM7Z0JBQUFDLFdBQUEsNEJBQUFEO2dCQUFBRSxXQUFBLHFDQUFBSDtlQUFBLFdBQUFFLFVBQUFDOzs7O1lBQUEsT0FBQTtrREFGUDNDLHFCQUVPdUM7V0FBd0M7U0FGMUJLLFdBQUEsa0NBQUFSOztvQkFHQVM7WUFBbkIsU0FBbUJBO3dCQUFBQTs7OztlQUFBO2dCQUFBQztnQkFBQUM7Z0JBQUFsM0IsV0FBQSw0QkFBQWszQjtnQkFBQUMsV0FBQSxzQ0FBQUY7ZUFBQSxXQUFBajNCLFVBQUFtM0I7Ozs7WUFBQSxPQUFBO2tEQUhyQmhELHFCQUdxQjZDO1dBQWlDO1NBSGpDSSxXQUFBLGtDQUFBZDtRQUFBLFdBQUFHLFVBQUFNLFVBQUFLOzs7OztJQUFBLE9BQUE7MENBQXJCakQscUJBQXFCa0M7R0FJcEI7WUFKRGdCO0lBQUE7S0FBcUJDO0tBQUFDO0tBQUFDO0tBQUFDLHNDQUFBRDs7O01BRWRFO01BQUFDO01BQUFDLHNDQUFBRDtNQUFBRSxpREFBQUg7b0JBQUFFLGNBQUFDOztRQUZjQyw2Q0FBQVA7OztNQUdBUTtNQUFBNzNCO01BQUE4M0Isc0NBQUE5M0I7TUFBQSszQixpREFBQUY7b0JBQUFDLGNBQUFDOztRQUhBQyw2Q0FBQVo7bUJBQUFHLGNBQUFLLGNBQUFJO0dBSXBCO0dBSkQsU0FBQUMsd0JBQXFCOTZCO0lBQXJCLFVBQXFCQSxxQ0FBQUE7Z0JBQUFBOzs7Ozs7O1NBQUEwNEI7U0FBQWxvQjtTQUFBN0w7U0FBQUMsNERBQUFEOztvQkFFZDNFO1ksVUFBQUEscUNBQUFBO3dCQUFBQTs7Ozs7Z0JBQUF3UTtnQkFBQTdMO2dCQUFBQzt1RUFBQUQ7Z0JBQUE4TCw2Q0FBQUQ7MEJBQUE1TCxNQUFBNkw7Ozs7O3dEQUZQdlMsYUFFTzhCOztTQUZjeVEsa0VBQUFEOztvQkFHQXhRO1ksVUFBQUEscUNBQUFBO3dCQUFBQTs7Ozs7Z0JBQUF3UTtnQkFBQTdMO2dCQUFBQzt1RUFBQUQ7Z0JBQUE4TCw2Q0FBQUQ7MEJBQUE1TCxNQUFBNkw7Ozs7O3dEQUhyQnZTLGFBR3FCOEI7O1NBSEEyNEIsa0VBQUFEO21CQUFBOXpCLE1BQUE2TCxNQUFBa29COzs7Ozt5REFBckJ6NkIsYUFBcUI4QjtHQUlwQjtZQUpEKzZCO0lBQUE7S0FBcUJyQztLQUFBbG9CO0tBQUE3TDtLQUFBQywyREFBQUQ7OztNQUVkNkw7TUFBQTdMO01BQUFDLDJEQUFBRDtNQUFBOEwsNkNBQUFEOytCQUFBNUwsVUFBQTZMOztRQUZjQSxrRUFBQUQ7OztNQUdBQTtNQUFBN0w7TUFBQUMsMkRBQUFEO01BQUE4TCw2Q0FBQUQ7K0JBQUE1TCxVQUFBNkw7O1FBSEFrb0Isa0VBQUFEOzhCQUFBOXpCLFVBQUE2TCxVQUFBa29CO0dBSXBCOztJQUVEN2lCO0lBQUFDOztLQUFBRDtjQUNBcFcsS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FEQSxpQ0FDQXNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQURBLFdBZEEyL0IsWUFlQXIzQjtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FEQSxXQVBBeWhDLGtCQVFBbjVCO01BQUEsK0JBQUFBO01BQUEsT0FBQSwrQkFBQUE7S0FJQzs7S0FMRHFXLGVBQ0EzZSxHQUFBLE9BQUEsb0NBREEwZSxJQUNBMWUsR0FJQztZQUpENGUsVUFBQWdsQjtJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQW5lLGtCQUFBbWU7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDRUU7S0FDQUM7S0FDQUM7S0FIRkM7S0FBQUM7Ozs7Ozs7OzttQkFBQUw7T0FBQTs7WUFBQU07aUJBQUFBO21CQUFBQTs7OztZQUFBQywyQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBMVg7U0FBQTRYO29CQUFBRjtxQkFBQUc7YUFBQSxLQUFBSDtjQUFBLE9BQUE7cURBQUEzZSxrQkFBQW1lO2dCQUFBUTtjQUFBLE1BQUE7aUJBQUF2WCxRQUFBdVg7YUFBQSxPQUFBdlg7WUFJQzttQkFKRDBYOztTQUFBQSxpQkFBQUQsaUJBQUFGO2dDQUFBQztpQ0FBQUE7a0NBQUFBOztZQUFBSCxtQkFBQUcsZ0JBQUFIOztrQkFDRUo7V0FERkcsd0JBQUFJLGdCQUFBSjs7V0FDRTtZQURGTyxtQkFBQUQ7WUFDRXRYLGFBQUEsa0NBREZ1WDtXQUNFVixzQkFBQTdXOztpQkFDQThXO1VBRkZFLHdCQUFBSSxnQkFBQUo7O1VBRUU7V0FGRlEsbUJBQUFGO1dBRUV4WCxhQWhCRitTLGdCQWNBMkU7VUFFRVYscUJBQUFoWDs7Z0JBQ0FpWDtTQUhGQyx3QkFBQUksZ0JBQUFKOztTQUdFO1VBSEZTLG1CQUFBSDtVQUdFSSxhQVZGaEQsc0JBT0ErQztTQUdFViwyQkFBQVc7O29CQUhGalk7Ozs7OztLQUFBLHlDQUFBakgsa0JBQUEwZTs7T0FBQUY7S0FBQSxPQUFBOztjQUFBeGU7Y0FBQXdlO2NBQUFMO09BQUFNO0tBQUEsT0FBQTs7Y0FBQXplO2NBQUF5ZTtjQUFBTjs7WUFDRUU7WUFDQUM7YUFDQUM7OztNQUFBWTtNQURBQztNQURBQztLQURGLFdBQ0VBLGNBQ0FELGFBQ0FEOztJQUhGLE9BQUE7O2FBQUFuZjthQUFBbWU7O3dCQUNFRTs7eUJBQ0FDOzswQkFDQUM7O0dBQ0Q7WUFKRDNpQjtJQUFBO0tBR0UwakI7S0FEQUM7S0FEQUM7S0FFQUMsVUFWRnRDLHNCQVVFbUM7S0FIRnZYLGdDQUdFMFg7S0FEQTNYLFVBaEJGbVQsZ0JBZ0JFc0U7S0FGRnRYLGtDQUVFSCxlQUZGQztLQUNFQyxVQUFBLGtDQUFBd1g7S0FERkUsa0NBQ0UxWCxlQURGQztJQUFBLFdBQUF5WDtHQUlDO1lBSkR0aUIsWUFBQWphO0lBQUEsVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRXc4QjtNQUNBQztNQUNBQztNQUhGcDBCO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtnQ0FBQUE7U0FBQTtXQUFBOztVQUFBSDtlQUFBRyxZQUFBLG1DQUFBSDs7Z0JBQ0UsbUNBQUFpMEI7U0FERmwwQjtjQUFBSSxZQUNFLG1DQURGSjs7U0FDRSxJQUFBSyxTQUFBLGtDQURGRjtTQUNFK3pCLHdCQUFBN3pCOztlQUNBLG1DQUFBOHpCO1FBRkZuMEI7YUFBQUksWUFFRSxtQ0FGRko7O1FBRUUsSUFBQU0sV0FoQkY2dkIsa0JBY0Fod0I7UUFFRWcwQix1QkFBQTd6Qjs7Y0FDQSxtQ0FBQTh6QjtPQUhGcDBCO1lBQUFJLFlBR0UsbUNBSEZKOztPQUdFLElBQUFPLFdBVkZpeUIsd0JBT0FyeUI7T0FHRWkwQiw2QkFBQTd6Qjs7a0JBSEZMOztRQUFBLG1DQUFBRjtNQUFBLFVBQUEsbUNBQUFBO01BQUEsT0FBQTttREFBQWxLLGVBQUE0Qjs7UUFBQSxtQ0FBQXVJO01BQUEsVUFBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBbkssZUFBQTRCOztLQUNFO01BQUEsVUFBQSxtQ0FBQXc4QjtNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7OztPQUFBQztPQURBQztPQURBQztNQURGLFdBQ0VBLGdCQUNBRCxlQUNBRDs7S0FIRjtNQUFBOzs7Z0JBR0UsbUNBQUFEOzs7OztNQUhGOzs7Z0JBRUUsbUNBQUFEOzs7TUFGRjs7O2dCQUNFLG1DQUFBRDs7O0tBREYsT0FBQTtrREFBQXArQixVQUFBNEI7O0lBQUEsT0FBQSwrQ0FBQTVCLFVBQUE0QjtHQUlDO1lBSkR3YTtJQUFBO0tBR0VzaUI7S0FEQUM7S0FEQUM7S0FFQTN6QixNQVZGMHhCLHdCQVVFK0I7S0FBQXh6QixvQ0FBQUQ7S0FEQUUsUUFoQkZxdkIsa0JBZ0JFbUU7S0FBQXZ6QixnQ0FBQUQsUUFDQUQ7S0FGQUcsMENBQUF1ekI7S0FBQXR6QixpQ0FBQUQsUUFDQUQ7SUFGRixzQkFDRUU7R0FHRDs7OztPQW5CRHF0QjtPQUFBQztPQUNBRTtPQUFBWTtPQUFBVztPQUFBRztPQU1BQztPQUFBQztPQUNBQztPQUFBaUI7T0FBQWM7T0FBQUM7T0FNQWpsQjtPQUFBQztPQUNBQztPQUFBeUM7T0FBQXdCO09BQUFPOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUNYRXpjO0lBQUFDO0lBS0FpL0I7SUFBQS8rQjtJQVFBZy9CO0lBQUE5K0I7SUFLQSsrQjtJQUFBNytCO0lBU0Y4K0I7SUFBQTUrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTVCRTYrQjtJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FBQUQ7Y0FDQTM5QjtNQUFBLFlBQUEsT0FBQSw4QkFBQUE7VUFEQXNDO01BQ0EsK0JBQUF0QztNQURBLFdBQUEsc0NBQ0FBLE1BREFzQztNQUFBLE9BQUEsK0JBQ0F0QztLQUVpQzs7S0FIakM0OUI7Y0FDQWxtQyxHQUFBLE9BQUEsb0NBREFpbUMsU0FDQWptQyxHQUVpQztHQUZqQyxTQUFBbW1DLGFBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztPQUFBLE9BQUE7NkNBQUF6L0Isa0JBQUF5L0I7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9COzs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9CO1NBQUFDOzs2QkFBQUE7OEJBQUFBO2lDQUFBQTsrQkFBQUE7O1VBQUFDO1NBQUFBLG1CQUFBQTtPQUFBO1FBQUFwRyxXQUFBb0c7UUFBQUMsV0FBQSxzQ0FBQXJHO09BQUEsV0FBQXFHOztNQUFBLE9BQUE7O2VBQUE1L0I7ZUFBQTAvQjtlQUFBRDs7S0FBQSxPQUFBOzJDQUFBei9CLGtCQUFBeS9COztJQUFBLE9BQUEsd0NBQUF6L0Isa0JBQUF5L0I7R0FFaUM7WUFGakNJO0lBQUEsWUFDSTtJQUNBO0tBQUFDO0tBQUF0RyxXQUFBLHNDQUFBc0c7SUFBQSx3QkFBQXRHO0dBQTZCO0dBRmpDLFNBQUF1RyxlQUFBOTlCO0lBQUEsVUFBQUE7Z0JBQUFBOztnQ0FBQUE7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7Ozs7O1lBQUF5RTtrQ0FBQUE7O21CQUFBO3VEQUFBekcsUUFBQWdDOztrQ0FBQXlFO2FBQUFDO1lBQUFBLGlCQUFBQTtVQUFBO1dBQUFDLEtBQUFEO1dBQUFFLE9BQUEsc0NBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQTVHLFFBQUF5RyxLQUFBekU7Ozs7UUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7O0lBQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQztHQUVpQztZQUZqQys5QjtJQUFBLFlBQ0k7SUFDQSxJQUFBcDVCLGVBQUFDLE9BQUEsc0NBQUFEO0lBQUEsbUNBQUFDO0dBQTZCOztJQUVqQ2tSO0lBQUFDOztLQUFBRDtjQUNBcFc7TUFBQTs7YUFEQXNDO1NBQ0EsK0JBQUF0QztTQURBLFdBQUEsV0FMQTI5QixTQU1BMzlCLE1BREFzQztTQUFBLE9BQUEsK0JBQ0F0Qzs7YUFEQXVDO1NBQ0EsK0JBQUF2QztTQURBLFdBQUEsV0FMQTI5QixTQU1BMzlCLE1BREF1QztTQUFBLE9BQUEsK0JBQ0F2Qzs7YUFEQTRNLGVBQUFwSztTQUNBLCtCQUFBeEM7U0FEQSxXQUFBLGtDQUNBQSxNQURBd0M7U0FDQSwrQkFBQXhDO1NBREEsV0FBQSxXQUxBMjlCLFNBTUEzOUIsTUFEQTRNO1NBQUEsT0FBQSwrQkFDQTVNOztLQUdpQzs7S0FKakNxVyxlQUNBM2UsR0FBQSxPQUFBLG9DQURBMGUsSUFDQTFlLEdBR2lDO1lBSGpDNGUsVUFBQTdVO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBLE9BQUE7OENBQUE4N0Isa0JBQUE5N0I7O09BQUEsT0FBQTs2Q0FBQTg3QixrQkFBQTk3Qjs7TUFBQSxPQUFBOzRDQUFBODdCLGtCQUFBOTdCOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQTg3QixrQkFBQTk3Qjs7O01BQUEsT0FBQTs0Q0FBQTg3QixrQkFBQTk3QjtTQUFBNjhCOzs2QkFBQUE7OzhCQUFBQTsrQkFBQUE7a0NBQUFBO2tDQUFBQTtnQ0FBQUE7O1dBQUFDO1VBQUFBLG1CQUFBQTtRQUFBLElBQUFoRyxXQUFBZ0csa0JBQUFDLFdBTEFYLGFBS0F0RjtRQUFBLFdBQUFpRzs7T0FBQSxPQUFBOztnQkFBQWpCO2dCQUFBZTtnQkFBQTc4Qjs7VUFBQWc5QjtNQUFBLEdBQUFBO2tCQUFBQTs7UUFBQTtTQUFBQztTQUFBQyxXQUFBRjtTQUFBRyxXQUFBLGtDQUFBRDtTQUFBRSxXQUxBaEIsYUFLQWE7UUFBQSxXQUFBRSxVQUFBQzs7O01BQUEsT0FBQTs7ZUFBQXRCO2VBQUFlO2VBQUE3OEI7O1NBQUFxOUI7UUFBQUEsbUJBQUFBO01BQUEsSUFBQUMsV0FBQUQsa0JBQUFFLFdBTEFuQixhQUtBa0I7TUFBQSxXQUFBQzs7S0FBQSxPQUFBOztjQUFBekI7Y0FBQWU7Y0FBQTc4Qjs7SUFBQSxPQUFBLHdDQUFBODdCLGtCQUFBOTdCO0dBR2lDO1lBSGpDc1g7SUFBQTs7T0FDSSxJQUFBL1YscUJBQUFDLFdBTkppN0IsYUFNSWw3QjtPQUFBLHdCQUFBQzs7T0FDQSxJQUFBZzhCLHFCQUFBQyxXQVBKaEIsYUFPSWU7T0FBQSx3QkFBQUM7O09BQ0E7UUFBQTFGO1FBQUFDO1FBQUF6MUIsV0FBQSxrQ0FBQXkxQjtRQUFBMEYsV0FSSmpCLGFBUUkxRTtPQUFBLHdCQUFBeDFCLGNBQUFtN0I7O0dBQTZCO1lBSGpDNWtCLFlBQUFqYTtJQUFBLFVBQUFBO2dCQUFBQTs7aUJBQUFBOzs7Ozs7OztPQUFBLE9BQUEsOENBQUE5QixVQUFBOEI7OztpQkFBQUE7O09BQUEsT0FBQSw4Q0FBQTlCLFVBQUE4Qjs7Ozs7WUFBQXlFO2tDQUFBQTthQUFBTztZQUFBQSxtQkFBQUE7VUFBQSxJQUFBQyxPQUFBRCxrQkFBQUUsT0FMQTQ0QixlQUtBNzRCO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQWhILFVBQUF1RyxLQUFBekU7O2tDQUFBeUU7YUFBQVU7U0FBQSxHQUFBQTtxQkFBQUE7O1dBQUE7WUFBQXFMO1lBQUFwTCxPQUFBRDtZQUFBRSxPQUFBLGtDQUFBRDtZQUFBcUwsT0FMQXF0QixlQUtBdHRCO1dBQUEsV0FBQW5MLE1BQUFvTDs7O1NBQUEsT0FBQTtxREFBQXZTLFVBQUF1RyxLQUFBekU7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUEsSUFBQUMsS0FBQUQsZ0JBQUFFLE9BTEFrNUIsZUFLQW41QjtVQUFBLFdBQUFDOztTQUFBLE9BQUE7cURBQUExRyxVQUFBdUcsS0FBQXpFOzs7O1FBQUEsT0FBQSw4Q0FBQTlCLFVBQUE4Qjs7OztJQUFBLE9BQUEsOENBQUE5QixVQUFBOEI7R0FHaUM7WUFIakN3YTtJQUFBOztPQUNJLElBQUE3VixlQUFBQyxPQU5KbTVCLGVBTUlwNUI7T0FBQSxtQ0FBQUM7O09BQ0EsSUFBQVEsaUJBQUFDLE9BUEowNEIsZUFPSTM0QjtPQUFBLG1DQUFBQzs7T0FDQTtRQUFBbUw7UUFBQXZMO1FBQUFDLE9BQUEsa0NBQUFEO1FBQUF3TCxPQVJKc3RCLGVBUUl2dEI7T0FBQSxtQ0FBQXRMLFVBQUF1TDs7R0FBNkI7R0FWaEI7SUFBQTs7T0FDakI0c0I7T0FBQUM7T0FDQUM7T0FBQUs7T0FBQUU7T0FBQUM7T0FJQWpvQjtPQUFBQztPQUNBQztPQUFBeUM7T0FBQXdCO09BQUFPO0lBT0Fza0I7SUFBQUM7O0tBQUFEO2NBQ0FwL0I7TUFBQTtXQURBc0M7T0FDQSwrQkFBQXRDO09BREEsV0FBQSxpQ0FDQUEsTUFEQXNDO09BQUEsT0FBQSwrQkFDQXRDOztVQURBdUM7TUFDQSwrQkFBQXZDO01BREEsV0FBQSxzQ0FDQUEsTUFEQXVDO01BQUEsT0FBQSwrQkFDQXZDO0tBRThCOztLQUg5QnEvQjtjQUNBM25DLEdBQUEsT0FBQSxvQ0FEQTBuQyxXQUNBMW5DLEdBRThCO0dBRjlCLFNBQUE0bkMsZUFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O09BQUEsT0FBQTs2Q0FBQS9CLGtCQUFBK0I7O01BQUEsT0FBQTs0Q0FBQS9CLGtCQUFBK0I7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBL0Isa0JBQUErQjs7O01BQUEsT0FBQTs0Q0FBQS9CLGtCQUFBK0I7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQTc3QjtTQUFBQSxtQkFBQUE7T0FBQTtRQUFBQyxXQUFBRDtRQUFBRSxXQUFBLHNDQUFBRDtPQUFBLFdBQUFDOztNQUFBLE9BQUE7O2VBQUEyNUI7ZUFBQWdDO2VBQUFEOztTQUFBcjhCO1FBQUFBLG1CQUFBQTtNQUFBO09BQUFDLFdBQUFEO09BQUFFLFdBQUEsaUNBQUFEO01BQUEsV0FBQUM7O0tBQUEsT0FBQTs7Y0FBQW82QjtjQUFBZ0M7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQS9CLGtCQUFBK0I7R0FFOEI7WUFGOUJFO0lBQUE7S0FDSTtNQUFBdjdCO01BQUFDLFdBQUEsaUNBQUFEO0tBQUEsd0JBQUFDOztJQUNBO0tBQUFDO0tBQUFDLFdBQUEsc0NBQUFEO0lBQUEsd0JBQUFDO0dBQTBCO0dBRjlCLFNBQUFxN0IsaUJBQUFwL0I7SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7T0FBQSxPQUFBLDhDQUFBNUIsVUFBQTRCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUE1QixVQUFBNEI7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQVU7WUFBQUEsbUJBQUFBO1VBQUE7V0FBQUMsT0FBQUQ7V0FBQUUsT0FBQSxpQ0FBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBakgsVUFBQXFHLEtBQUF6RTs7a0NBQUF5RTthQUFBQztZQUFBQSxpQkFBQUE7VUFBQTtXQUFBQyxLQUFBRDtXQUFBRSxPQUFBLHNDQUFBRDtVQUFBLFdBQUFDOztTQUFBLE9BQUE7cURBQUF4RyxVQUFBcUcsS0FBQXpFOzs7O1FBQUEsT0FBQSw4Q0FBQTVCLFVBQUE0Qjs7OztJQUFBLE9BQUEsOENBQUE1QixVQUFBNEI7R0FFOEI7WUFGOUJxL0I7SUFBQTtLQUNJLElBQUExNkIsZUFBQUMsT0FBQSxpQ0FBQUQ7S0FBQSxtQ0FBQUM7O0lBQ0EsSUFBQVEsaUJBQUFDLE9BQUEsc0NBQUFEO0lBQUEsbUNBQUFDO0dBQTBCOztJQUU5QmdqQjtJQUFBQzs7S0FBQUQ7Y0FDQTNvQjtNQUFBOzthQURBc0M7U0FDQSwrQkFBQXRDO1NBREEsV0FBQSxXQUxBby9CLFdBTUFwL0IsTUFEQXNDO1NBQUEsT0FBQSwrQkFDQXRDOzthQURBdUM7U0FDQSwrQkFBQXZDO1NBREEsV0FBQSxXQUxBby9CLFdBTUFwL0IsTUFEQXVDO1NBQUEsT0FBQSwrQkFDQXZDOzthQURBNE0sZUFBQXBLO1NBQ0EsK0JBQUF4QztTQURBLFdBQUEsa0NBQ0FBLE1BREF3QztTQUNBLCtCQUFBeEM7U0FEQSxXQUFBLFdBTEFvL0IsV0FNQXAvQixNQURBNE07U0FBQSxPQUFBLCtCQUNBNU07O0tBR2lDOztLQUpqQzRvQjtjQUNBbHhCLEdBQUEsT0FBQSxvQ0FEQWl4QixNQUNBanhCLEdBR2lDO1lBSGpDbXhCLFlBQUErVztJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7UUFBQSxPQUFBOzhDQUFBbkMsa0JBQUFtQzs7T0FBQSxPQUFBOzZDQUFBbkMsa0JBQUFtQzs7TUFBQSxPQUFBOzRDQUFBbkMsa0JBQUFtQzs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUFuQyxrQkFBQW1DOzs7TUFBQSxPQUFBOzRDQUFBbkMsa0JBQUFtQztTQUFBQzs7NkJBQUFBOzs4QkFBQUE7K0JBQUFBO2tDQUFBQTtrQ0FBQUE7Z0NBQUFBOztXQUFBQztVQUFBQSxtQkFBQUE7UUFBQSxJQUFBQyxXQUFBRCxrQkFBQUUsV0FMQVYsZUFLQVM7UUFBQSxXQUFBQzs7T0FBQSxPQUFBOztnQkFBQXZDO2dCQUFBb0M7Z0JBQUFEOztVQUFBSztNQUFBLEdBQUFBO2tCQUFBQTs7UUFBQTtTQUFBQztTQUFBQyxXQUFBRjtTQUFBRyxXQUFBLGtDQUFBRDtTQUFBRSxXQUxBZixlQUtBWTtRQUFBLFdBQUFFLFVBQUFDOzs7TUFBQSxPQUFBOztlQUFBNUM7ZUFBQW9DO2VBQUFEOztTQUFBVTtRQUFBQSxtQkFBQUE7TUFBQSxJQUFBQyxXQUFBRCxrQkFBQUUsV0FMQWxCLGVBS0FpQjtNQUFBLFdBQUFDOztLQUFBLE9BQUE7O2NBQUEvQztjQUFBb0M7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQW5DLGtCQUFBbUM7R0FHaUM7WUFIakN2VjtJQUFBOztPQUNJLElBQUFvVyxxQkFBQUMsV0FOSmpCLGVBTUlnQjtPQUFBLHdCQUFBQzs7T0FDQSxJQUFBQyxxQkFBQUMsV0FQSm5CLGVBT0lrQjtPQUFBLHdCQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQyxXQUFBLGtDQUFBRDtRQUFBRSxXQVJKdkIsZUFRSW9CO09BQUEsd0JBQUFFLGNBQUFDOztHQUE2QjtZQUhqQ2pXLGNBQUF6cUI7SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7T0FBQSxPQUFBLDhDQUFBMUIsVUFBQTBCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUExQixVQUFBMEI7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQU87WUFBQUEsbUJBQUFBO1VBQUEsSUFBQUMsT0FBQUQsa0JBQUFFLE9BTEFrNkIsaUJBS0FuNkI7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBNUcsVUFBQW1HLEtBQUF6RTs7a0NBQUF5RTthQUFBVTtTQUFBLEdBQUFBO3FCQUFBQTs7V0FBQTtZQUFBcUw7WUFBQXBMLE9BQUFEO1lBQUFFLE9BQUEsa0NBQUFEO1lBQUFxTCxPQUxBMnVCLGlCQUtBNXVCO1dBQUEsV0FBQW5MLE1BQUFvTDs7O1NBQUEsT0FBQTtxREFBQW5TLFVBQUFtRyxLQUFBekU7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUEsSUFBQUMsS0FBQUQsZ0JBQUFFLE9BTEF3NkIsaUJBS0F6NkI7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBdEcsVUFBQW1HLEtBQUF6RTs7OztRQUFBLE9BQUEsOENBQUExQixVQUFBMEI7Ozs7SUFBQSxPQUFBLDhDQUFBMUIsVUFBQTBCO0dBR2lDO1lBSGpDZ3JCO0lBQUE7O09BQ0ksSUFBQXJtQixlQUFBQyxPQU5KeTZCLGlCQU1JMTZCO09BQUEsbUNBQUFDOztPQUNBLElBQUFRLGlCQUFBQyxPQVBKZzZCLGlCQU9JajZCO09BQUEsbUNBQUFDOztPQUNBO1FBQUFtTDtRQUFBdkw7UUFBQUMsT0FBQSxrQ0FBQUQ7UUFBQXdMLE9BUko0dUIsaUJBUUk3dUI7T0FBQSxtQ0FBQXRMLFVBQUF1TDs7R0FBNkI7R0FWbkI7SUFBQTs7T0FDZHF1QjtPQUFBQztPQUNBQztPQUFBRztPQUFBQztPQUFBQztPQUlBaFg7T0FBQUM7T0FDQUM7T0FBQXdCO09BQUFVO09BQUFPO0lBUUYyVjtJQUFBQzs7S0FBQUQ7Y0FDQWpoQztNQUFBOzthQUNpQjRNLGVBRmpCdEs7U0FDQSwrQkFBQXRDO1NBREEsV0FFWSwrQkFEWkEsV0FEQXNDO1NBQ0EsK0JBQUF0QztTQUNpQiwrQkFEakJBOzs7O3FCQUNpQjhNLEtBQUFwVjthQUFBLEdBQUFvVixLQUFBLCtCQURqQjlNO2FBQ2lCLFdBRmpCLHFDQUNBQSxNQUNpQnRJO2FBQUE7WUFBd0I7U0FBeEIsd0NBQUFrVjtTQUFBLCtCQURqQjVNO1NBREEsT0FBQSwrQkFDQUE7O2FBRTBCbWhDLGlCQUgxQjUrQjtTQUNBLCtCQUFBdkM7U0FEQSxXQUdrQiwrQkFGbEJBLFdBREF1QztTQUNBLCtCQUFBdkM7U0FFMEIsK0JBRjFCQTs7OztxQkFFMEI4TSxLQUFBcFY7YUFBQSxHQUFBb1YsS0FBQSwrQkFGMUI5TTtpQkFEQTRNLEtBRzBCbFYsTUFIMUI0SyxLQUcwQjVLO2FBQUssK0JBRi9Cc0k7YUFEQSxXQUdnQywrQkFGaENBLFlBREFzQzthQUcrQiwrQkFGL0J0QzthQURBLFdBQUEscUNBQ0FBLE1BREE0TTthQUFBLCtCQUNBNU07YUFFMEI7WUFBa0M7U0FBbEMsd0NBQUFtaEM7U0FBQSwrQkFGMUJuaEM7U0FEQSxPQUFBLCtCQUNBQTs7YUFEQXUzQixlQUltQjZKLGlCQUpuQjUrQjtTQUNBLCtCQUFBeEM7U0FEQSxXQUljLCtCQUhkQSxZQURBd0M7U0FDQSwrQkFBQXhDO1NBR21CLCtCQUhuQkE7Ozs7cUJBR21COE0sS0FBQXBWO2FBQUEsR0FBQW9WLEtBQUEsK0JBSG5COU07YUFHbUIsV0FKbkIsa0NBQ0FBLE1BR21CdEk7YUFBQTtZQUFtQjtTQUFuQix3Q0FBQTBwQztTQUFBLCtCQUhuQnBoQztTQUFBLCtCQUFBQTtTQURBLFdBQUEsa0NBQ0FBLE1BREF1M0I7U0FBQSxPQUFBLCtCQUNBdjNCOztLQUd1RDs7S0FKdkRraEM7Y0FDQXhwQyxHQUFBLE9BQUEscUNBREF1cEMsTUFDQXZwQyxHQUd1RDtHQUh2RCxTQUFBMnBDLFlBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBLE9BQUE7OENBQUE1RCxrQkFBQTREOztPQUFBLE9BQUE7NkNBQUE1RCxrQkFBQTREOztNQUFBLE9BQUE7NENBQUE1RCxrQkFBQTREOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQTVELGtCQUFBNEQ7OztNQUFBLE9BQUE7NENBQUE1RCxrQkFBQTREO1NBQUFDOzs2QkFBQUE7OzhCQUFBQTsrQkFBQUE7a0NBQUFBO2tDQUFBQTtnQ0FBQUE7O1dBQUFDO09BQUEsR0FBQUE7bUJBQUFBOztTQUFBO1VBQUFDO1VBQUFDLFdBQUFGO1VBQUFHLFdBQUEsNEJBQUFEO1VBQUFFO1lBQUEsc0RBQUFIO1NBQUEsV0FBQUUsVUFBQUM7OztPQUFBLE9BQUE7O2dCQUFBbEU7Z0JBQUE2RDtnQkFBQUQ7O1VBQUFPO01BQUEsR0FBQUE7a0JBQUFBOzs7O1NBQUE7VUFBQUM7VUFBQUM7VUFBQUMsV0FBQUg7VUFBQXIyQixXQUFBLDRCQUFBdzJCO1VBQUFDO1lBQUEsbURBQUFGO1VBQUFHLFdBQUEsa0NBQUFKO1NBQUEsV0FBQXQyQixVQUFBeTJCLFVBQUFDOzs7O01BQUEsT0FBQTs7ZUFBQXhFO2VBQUE2RDtlQUFBRDs7U0FBQWE7S0FBQSxHQUFBQTtpQkFBQUE7O09BQUE7UUFBQUM7UUFBQUMsV0FBQUY7UUFBQUcsV0FBQSw0QkFBQUQ7O21CQUUrQkU7V0FBTCxTQUFLQTt1QkFBQUE7Ozs7Y0FBQTtlQUFBQztlQUFBQztlQUFBQyxXQUFBLDRCQUFBRDtlQUFBRSxXQUFBLHFDQUFBSDtjQUFBLFdBQUFFLFVBQUFDOzs7O1dBQUEsT0FBQTtpREFGL0JqRixxQkFFK0I2RTtVQUE2QjtRQUY1REssV0FBQSxrQ0FBQVI7T0FBQSxXQUFBRSxVQUFBTTs7O0tBQUEsT0FBQTs7Y0FBQWxGO2NBQUE2RDtjQUFBRDs7SUFBQSxPQUFBLHdDQUFBNUQsa0JBQUE0RDtHQUd1RDtZQUh2RHVCO0lBQUE7O09BQ0k7UUFBQUM7UUFBQUM7UUFBQWg0QixXQUFBLDRCQUFBZzRCO1FBQUFDO1VBQUEsc0RBQUFGO09BQUEseUJBQUEvM0IsY0FBQWk0Qjs7T0FDQTtRQUFBQztRQUFBcDNCO1FBQUFxM0IsV0FBQSwyQkFBQXIzQjs7OztZQUEyQnMzQjtZQUFBQztZQUFBQyxzQ0FBQUQ7WUFBQUUsZ0RBQUFIOzBCQUFBRSxjQUFBQzs7UUFBM0JDLFdBQUEsa0NBQUFOO09BQUEseUJBQUFDLGNBQUFLOztPQUNBO1FBQUFDO1FBQUFDO1FBQUF4M0I7UUFBQUcsV0FBQSw0QkFBQUg7UUFBQXkzQjtVQUFBLG1EQUFBRDtRQUFBRSxXQUFBLGtDQUFBSDtPQUFBLHlCQUFBcDNCLGNBQUFzM0IsY0FBQUM7O0dBQW1EO0dBSHZELFNBQUFDLGNBQUF0akM7SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7T0FBQSxPQUFBLDhDQUFBeEIsVUFBQXdCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUF4QixVQUFBd0I7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQU87U0FBQSxHQUFBQTtxQkFBQUE7O1dBQUE7WUFBQXUrQjtZQUFBdCtCLE9BQUFEO1lBQUFFLE9BQUEscURBQUFEOzt1QkFFK0JqRjtlLFVBQUFBLHFDQUFBQTsyQkFBQUE7Ozs7O21CQUFBd1E7bUJBQUE3TDttQkFBQUM7MEVBQUFEO21CQUFBOEwsNENBQUFEOzZCQUFBNUwsTUFBQTZMOzs7OzsyREFGL0JqUyxhQUUrQndCOztZQUYvQndqQzt5RUFBQUQ7V0FBQSxXQUFBcitCLE1BQUFzK0I7OztTQUFBLE9BQUE7cURBQUFobEMsVUFBQWlHLEtBQUF6RTs7a0NBQUF5RTthQUFBVTtTQUFBLEdBQUFBO3FCQUFBQTs7OztZQUFBO2FBQUF1ekI7YUFBQStLO2FBQUFyK0IsT0FBQUQ7YUFBQUUsT0FBQSxxREFBQUQ7YUFBQXMrQjs7OztpQkFBQUQ7YUFBQTlLLE9BQUEsa0NBQUFEO1lBQUEsV0FBQXJ6QixNQUFBcStCLE1BQUEvSzs7OztTQUFBLE9BQUE7cURBQUFuNkIsVUFBQWlHLEtBQUF6RTs7a0NBQUF5RTthQUFBQztTQUFBLEdBQUFBO3FCQUFBQTs7V0FBQTtZQUFBOEw7WUFBQTdMLEtBQUFEO1lBQUFFLE9BQUEscURBQUFEO1lBQUE4TDs7OztnQkFBQUQ7V0FBQSxXQUFBNUwsTUFBQTZMOzs7U0FBQSxPQUFBO3FEQUFBalMsVUFBQWlHLEtBQUF6RTs7OztRQUFBLE9BQUEsOENBQUF4QixVQUFBd0I7Ozs7SUFBQSxPQUFBLDhDQUFBeEIsVUFBQXdCO0dBR3VEO1lBSHZEMmpDO0lBQUE7O09BQ0k7UUFBQW56QjtRQUFBN0w7UUFBQUMsT0FBQSxvREFBQUQ7UUFBQThMOzs7O1lBQUFEO09BQUEsb0NBQUE1TCxVQUFBNkw7O09BQ0E7UUFBQWd6QjtRQUFBcitCO1FBQUFDLE9BQUEsb0RBQUFEOzs7O1lBQTJCb0w7WUFBQTdMO1lBQUFDLDJEQUFBRDtZQUFBOEwsNENBQUFEO3FDQUFBNUwsVUFBQTZMOztRQUEzQml6QjtxRUFBQUQ7T0FBQSxvQ0FBQXArQixVQUFBcStCOztPQUNBO1FBQUFoTDtRQUFBNks7UUFBQXQrQjtRQUFBQyxPQUFBLG9EQUFBRDtRQUFBdStCOzs7O1lBQUFEO1FBQUE1SyxPQUFBLGtDQUFBRDtPQUFBLG9DQUFBeHpCLFVBQUFzK0IsVUFBQTdLOztHQUFtRDtZQUVuRGlMLHFCQUNDQyxHQUE2Q0M7SUFDaEQsT0FEZ0RBOztXQUVuQ0MsU0FGbUNELFlBRXRDeHJDLElBRnNDd3JDO09BRXhCLFdBQWR4ckMsR0FBeUIsOEJBQXpCQSxHQUZQdXJDLEdBRVVFOztPQUlhO1FBSExDLFdBSDJCRjtRQUdoQ2xtQyxNQUhnQ2ttQztRQU10QjtjQUhWbG1DLEtBR2dCLFdBTjdCaW1DLEdBTStCLDRCQUhsQmptQyxLQUFLb21DO09BQ25CLFdBRGNwbUMsS0FHWixvQ0FIaUJvbUM7ZUFNSCxPQVQ4QkY7O0dBVS9DO1lBRUNHLG9CQUE0Q0gsU0FJeEIsOEJBQWlCO1lBR3JDSSxvQkFBNENKLFNBSXhCLDhCQUFpQjtZQUdyQ3JOLFdBQWUzQixVQUFzQmdQO0lBQ3hCLElBQVhwTixXQWZGdU4sYUFjZW5QLFVBQXNCZ1A7T0FBdEJoUDtZQUFzQmdQOztRQUtGO1NBRHRCQyxTQUp3QkQ7U0FJN0JLLE1BSjZCTDtTQUtGLE9BQUEsdUJBRDNCSztTQUNKQyxNQUFNO1NBQ052TyxTQUFTLDJCQUZBa08sUUFBTEk7U0FHUjs7O2FBRklDO2FBRUcsc0NBUFF0UCxVQU1YZSxRQUxGYTs7UUFNRixPQUFBOztRQUdVO1NBRFVzTixXQVRpQkY7U0FTdkI5dUMsT0FUdUI4dUM7U0FVakNPLFFBQU0sc0NBRElydkM7U0FFVnN2QyxXQUFTLDRCQUZDdHZDLE1BQU1ndkM7U0FHcEI7OzthQUZJSzthQUVHOzBDQVpRdlAsVUFXWHdQLFVBVkY1Tjs7UUFXRixPQUFBOztRQUdBO1NBRGdCamEsV0FkcUJxbkI7U0FlckMsT0FBQSxtQ0FmZWhQLGFBY0NyWTtRQUNoQixPQUFBOztJQVppQyxPQUFBO0dBY3BDO1lBRUc4bkIsZUFDRXpQLFVBQXVCMFAsV0FBeUJDLFNBQVNYO0lBR3BELEtBSExoUCxnQkFHK0I7V0FIMEJnUDs7V0FJbERLLE1BSmtETDtnQkFBbENVO1FBS1U7U0FBQSxPQUFBLHVCQUQxQkw7U0FDTEMsTUFBTTtRQUNWLE9BQUEsd0NBTmtESyxTQUs5Q0w7Ozs7V0FFV3B2QyxPQVA0Qzh1QztnQkFBbENVO1FBUWYsSUFBTkgsUUFBTSxzQ0FES3J2QztRQUVmLE9BQUEsd0NBVGtEeXZDLFNBUTlDSjs7OztnQkFScUJHO1FBV2Y7U0FEZUUsTUFWQUY7U0FXckJHLFFBQU0sbUNBRGVEO1FBRXpCLE9BQUEsd0NBWmtERCxTQVc5Q0U7OztJQUllO0dBWlU7WUFzQjdCQyxrQkFDRTlQLFVBQXNCMlAsU0FBU1g7SUFFbkMsT0FGbUNBOztPQUlFO1FBRDNCSyxNQUh5Qkw7UUFJRSxPQUFBLHVCQUQzQks7UUFDSkMsTUFBTTtRQUVSLFFBakNGRyxlQTJCRXpQLGdCQUFzQjJQLFNBQVNYO1FBS1JsTjtRQUFORDtRQU9ma08sSUFBSSxtQ0FaTi9QLGFBS3VCOEIsVUFBTkQ7T0FRbkIsZUFUSXlOLFNBUUFTOztPQUdNO1FBREk3dkMsT0FkbUI4dUM7UUFlN0JPLFFBQU0sc0NBRElydkM7UUFHWixVQTVDRnV2QyxlQTJCRXpQLGdCQUFzQjJQLFNBQVNYO1FBZ0JSZ0I7UUFBTkM7UUFPZkM7VUFBSSxtQ0F2Qk5sUSxhQWdCdUJnUSxZQUFOQztPQVFuQixlQVRJVixXQVFBVzs7V0FFWXZvQixXQXpCaUJxbkI7T0EwQmpDLE9BQUEsbUNBMUJFaFAsYUF5QmNyWTs7R0FFakI7WUFFQ3dvQixvQkFBdUJuQixTQUFZb0I7SUFDckMsU0FEeUJwQixZQUdILE9BSEdBO1FBSUhybkIsV0FKR3FuQixZQUlWcUIsUUFKVXJCLFlBSWJ4ckMsSUFKYXdyQztJQUt2QjtZQURVeHJDO1lBQUc2c0M7WUFJWCxtQ0FKa0Ixb0IsVUFKZXlvQjtHQVVwQztZQUVDRSxnQkFBbUI5c0MsR0FBR3lyQztJQUFXO0tBQzNCc0I7S0FDSmxQLE9BQU8sMkJBREhrUCxjQURhL3NDO0tBR2pCZ3RDLFdBQVcsc0NBRFhuUDtJQUVKLE9BQUEsOEJBSnFCNzlCLEdBR2pCZ3RDLFVBSG9CdkI7R0FLekI7WUFFR3dCLGtCQUFxQnZ3QyxNQUFNK3VDO0lBQVc7S0FDaENzQjtLQUNKbFAsT0FBTyw0QkFGWW5oQyxNQUNmcXdDO0tBRUpHLFlBQVksc0NBRFpyUDtLQUVKLE9BQUEsV0FBVSw0QkFKYW5oQyxPQUFNK3VDO0lBSTdCLE9BQUEsV0FBcUMsK0JBSmQvdUMsTUFHbkJ3d0M7R0FFTDtZQUVHQyxjQUFpQjNCLFNBQWFvQjtJQUNoQyxPQURtQnBCOztXQUVOQyxTQUZNRCxZQUVUeHJDLElBRlN3ckM7T0FFSyxXQUFkeHJDLEdBaEJSOHNDLGdCQWdCUTlzQyxHQUFHeXJDOztXQUNTQyxXQUhIRixZQUdIOXVDLE9BSEc4dUM7T0FJakIsV0FEYzl1QyxNQVZkdXdDLGtCQVVjdndDLE1BQU1ndkM7O09BTWxCO1FBSldtQixRQUxJckI7UUFLUDRCLE1BTE81QjtRQVNmLE9BQUEsMkJBSldxQixPQUFITztPQUNWO2VBRFVBO2VBQUdQO2VBSVgseUNBVDRCRDs7R0FXL0I7WUFFQ1MsZUFBa0I3QixTQUFZM047SUFDaEMsU0FEb0IyTixZQUdGLE9BQUE7UUFDSEMsU0FKS0QsWUFJVkssTUFKVUw7SUFLbEIsS0FMOEIzTixNQU1wQixPQU5RMk47SUFRSjtLQURQOEIsU0FQdUJ6UDtLQVF4QkYsUUFBUSxzQ0FEUDJQO0tBRUQ1QixXQUFTLDhCQUxQRyxLQUlGbE8sT0FKTzhOO0lBTVgsV0FOTUksS0FLRkg7R0FHUDtZQUVDNkIscUJBQXdCL0IsU0FBWTl1QztJQUN0QyxTQUQwQjh1QyxZQUdSO1FBQ0ZnQyxNQUpVaEMsWUFJTEMsU0FKS0Q7SUFLZ0I7TUFBaEMsNEJBTDRCOXVDLE1BSWpCK3VDO1dBQ3FCLDBCQUQxQitCLEtBSnNCOXdDO1NBT25CZ3ZDLFdBUE9GO0tBT0ksZUFQUTl1QyxNQU9uQmd2Qzs7SUFEakI7R0FFRDtZQUVDK0Isb0JBQ0V2QixXQUF3QlYsU0FBWWtDO0lBQ3hDLE9BRDRCbEM7O1dBU2pCSyxNQVRpQkwsWUFTWkMsU0FUWUQ7Z0JBQXhCVSxjQWVpQjttQkFmakJBO21CQVVGLE9BQUEsMkJBRGNULFFBQUxJO09BRzBCO1FBREo4QjtRQUNJLE9BQUEsdUJBSDFCOUI7UUFHTEMsTUFBTTtRQUNWO21CQUFLOEI7V0FDTCxPQUFBLHNDQUgrQkQsYUFFMUJDO1VBQytDO1FBRHRDLE9BQUEsdUNBYndCRixlQVlsQzVCO09BRUosT0FBQTs7V0FaZXB2QyxPQUZXOHVDLFlBRUxFLFdBRktGO2dCQUF4QlUsY0FRdUI7cUJBUnZCQTtxQkFHRixPQUFBLDRCQURleHZDLE1BQU1ndkM7T0FHWDtRQURpQ21DO1FBQ3ZDOUIsUUFBTSxzQ0FIS3J2QztRQUlmO21CQUFLa3hDO1dBQ0wsT0FBQSxzQ0FIMkNDLGFBRXRDRDtVQUMrQztRQUR0QyxPQUFBLHVDQU53QkYsZUFLbEMzQjtPQUVKLE9BQUE7O1dBU2lCNW5CLFdBaEJTcW5CO2dCQUF4QlUsY0FzQm1CO3FCQXRCbkJBLGNBZ0JvQzRCLGNBaEJwQzVCOztRQWlCRixXQUFLLGtDQURpQzRCLGFBQXJCM3BCO09BR2pCO1FBRHFDNHBCO1FBQ3JDO21CQUFLSDtXQUVMLE9BQUEsc0NBSHFDRyxhQUNoQ0g7VUFFK0M7UUFEZixPQUFBLG1DQUpDRTtRQUlwQyxPQUFBLHVDQXBCb0NKO09BcUJ0QyxPQUFBOztHQUVEO1lBRUNNLG9CQUVHOUIsV0FDRFYsU0FDQWtDLGVBQ0FuUTtJQUdKLE9BTElpTzs7V0FzQk9LLE1BdEJQTCxZQXNCWUMsU0F0QlpEO2dCQURDVSxjQXNDZ0IsV0FyQ2pCVixTQUNBa0M7bUJBRkN4Qjs7UUF3QlU7Z0NBQTJCLE9BckJ0QzNPLE9BcUI0QztTQUExQ21PLFdBQVMsOEJBREpHLFdBQUtKO1FBRWQsZUFGU0ksS0FDTEgsV0F0QkZnQzs7T0F5QmlDO1FBREpDO1FBQ0ksT0FBQSx1QkFKMUI5QjtRQUlMQyxNQUFNOzttQkFFSDhCO1dBRUg7WUFERUs7Y0FDRjsyQ0FMMkJOLGFBR3hCQyxRQTFCTHJRO1dBNkJBLE9BQUE7Z0RBTEV1TyxLQUdFbUMsVUE1QkpQO1VBOEJvRDtRQUh0QyxPQUFBLHVDQTNCZEEsZUF5QkU1QjtRQUNBb0MsVUFBVTtPQU1kLEtBTklBLFNBUU0sV0FuQ1IxQyxTQUNBa0M7V0FpQ0tTLFlBUEhEO09BT2UsV0FsQ2pCMUMsU0FrQ0syQzs7V0E1QlF6eEMsT0FOYjh1QyxZQU1tQjRDLFdBTm5CNUM7Z0JBRENVLGNBc0JzQixXQXJCdkJWLFNBQ0FrQztxQkFGQ3hCOztRQVFVO1NBQVRtQyxXQUFTLGtDQURFM3hDLE1BSmI2Z0MsU0FJbUI2UTtRQUVyQixlQUZlMXhDLE1BQ1gyeEMsV0FORlg7O09BU1E7UUFEaUNHO1FBQ3ZDOUIsUUFBTSxzQ0FKS3J2Qzs7bUJBTVJreEM7V0FFSDtZQURFSztjQUNGOzJDQUx1Q0osYUFHcENELFFBVkxyUTtXQWFBLE9BQUE7Z0RBTEV3TyxPQUdFa0MsVUFaSlA7VUFjb0Q7UUFIdEMsT0FBQSx1Q0FYZEEsZUFTRTNCO1FBQ0F1QyxZQUFVO09BTWQsS0FOSUEsV0FRTSxXQW5CUjlDLFNBQ0FrQztXQWlCS2EsWUFQSEQ7T0FPZSxXQWxCakI5QyxTQWtCSytDOztXQW9CSXZ1QyxJQXRDVHdyQyxZQXNDa0JybkIsV0F0Q2xCcW5CLFlBc0NZZ0QsT0F0Q1poRDtnQkFEQ1UsY0FzRGtCLFdBckRuQlYsU0FDQWtDO3FCQUZDeEIsY0F1Q3NDRSxNQXZDdENGOztRQXdDWTtTQUFYdUMsYUFBVyxrQ0FEMEJyQyxLQUFyQmpvQixVQXBDbEJvWjtRQXNDRixlQUZXdjlCLEdBQUd3dUMsTUFDVkMsYUF0Q0ZmOztPQXlDUTtRQUQyQkk7UUFDakN6QixRQUFNLG1DQUorQkQ7O21CQU1sQ3dCO1dBRUg7WUFERUs7Y0FDRjsyQ0FMaUNILGFBRzlCRixRQTFDTHJRO1dBNkNBLE9BQUE7Z0RBTEU4TyxPQUdFNEIsVUE1Q0pQO1VBOENvRDtRQUh0QyxPQUFBLHVDQTNDZEEsZUF5Q0VyQjtRQUNBcUMsWUFBVTtPQU1kLEtBTklBLFdBUU0sV0FuRFJsRCxTQUNBa0M7V0FpREtpQixZQVBIRDtPQU9lLFdBbERqQmxELFNBa0RLbUQ7O0dBSVI7WUFFQ0MsdUJBRUcxQyxXQUNEWCxHQUNBQyxTQUNBMEM7SUFFbUQsS0FMbERoQyxXQU9LLGVBTE5WLFNBQ0EwQztJQU1LO0tBREZQLGNBUkZ6QjtLQVNJLFFBaEdQdUIsb0JBK0ZLRSxhQU5IbkMsU0FDQTBDO2dCQU9RLGVBUlIxQyxTQUNBMEM7SUFTTyxJQURGM1EsbUJBQ0UsVUFBQSxXQVhQZ08sR0FVS2hPOztLQUlEO01BRkN5TztNQUVELFVBNUVOZ0Msb0JBcUVLTCxhQU5IbkMsU0FDQTBDLFNBVUtsQztNQUNXbUM7TUFBVFU7S0FFTCxlQUZLQSxXQUFTVjs7UUFHUlc7SUFBTSxXQUFOQTtHQUliO1lBRUdDO0lBRUc3QyxXQUNBMVAsVUFDRGdQLFNBQ0FrQyxlQUNBdkI7a0JBRUNEO0tBQ1MsSUFBVjhDLFlBOU9GL0MsZUF3T0d6UCxVQUtBMFAsV0FGREMsU0FGQVg7S0FNSixjQUFLak87TUFDTCwwQ0FES0EsY0FERHlSO0tBRW1EO0tBRHpDLFdBeEhadkIsb0JBc0hHdkIsV0FKRFYsU0FDQWtDO0tBTUosT0FBQTtJQUF1RDtJQUZ2RCxPQUFBLGdDQVBLeEI7R0FVTjs7Ozs7O09BclNEN0Q7T0FBQUM7T0FDQUc7T0FBQXdCO09BQUFlO09BQUFLO09BS0lDO09BYUFLO09BT0FDO09BT0F6TjtPQW1CQThOO09BMEJBSztPQThCQUs7T0FZQUc7T0FPQUc7T0FPQUU7T0FhQUU7T0FjQUU7T0FVQUU7T0EwQkFPO09BMkRBWTtPQXlCQUc7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUNwVEp0cEM7SUFBQUM7Ozs7Ozs7Ozs7OztJQURBdXBDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FBQUQ7Y0FDQTduQztNQUFBOzthQURBc0M7U0FDQSwrQkFBQXRDO1NBREEsV0FFb0IsK0JBRHBCQSxXQURBc0M7U0FBQSxPQUFBLCtCQUNBdEM7O2FBREF1M0IsZUFBQTNxQixlQUFBcks7U0FDQSwrQkFBQXZDO1NBREEsV0FBQSx5Q0FDQUEsTUFEQXVDO1NBQ0EsK0JBQUF2QztTQURBLFdBQUEseUNBQ0FBLE1BREE0TTtTQUNBLCtCQUFBNU07U0FEQSxXQUFBLHlDQUNBQSxNQURBdTNCO1NBQUEsT0FBQSwrQkFDQXYzQjs7YUFEQStuQyxlQUFBQyxpQkFBQTdHLGlCQUFBMytCO1NBQ0EsK0JBQUF4QztTQURBLFdBQUEseUNBQ0FBLE1BREF3QztTQUNBLCtCQUFBeEM7U0FEQSxXQUFBLHlDQUNBQSxNQURBbWhDO1NBQ0EsK0JBQUFuaEM7U0FEQSxXQUFBLHlDQUNBQSxNQURBZ29DO1NBQ0EsK0JBQUFob0M7U0FEQSxXQUFBLHlDQUNBQSxNQURBK25DO1NBQUEsT0FBQSwrQkFDQS9uQzs7YUFEQW9oQyxpQkFBQTMrQjtTQUNBLCtCQUFBekM7U0FEQSxXQUFBLHlDQUNBQSxNQURBeUM7U0FDQSwrQkFBQXpDO1NBREEsV0FBQSx5Q0FDQUEsTUFEQW9oQztTQUFBLE9BQUEsK0JBQ0FwaEM7O0tBSTJDOztLQUwzQzhuQztjQUNBcHdDLEdBQUEsT0FBQSxvQ0FEQW13QyxXQUNBbndDLEdBSTJDO0dBSjNDLFNBQUF1d0MsZUFBQW5LO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7U0FBQSxPQUFBOytDQUFBei9CLGtCQUFBeS9COztRQUFBLE9BQUE7OENBQUF6L0Isa0JBQUF5L0I7O09BQUEsT0FBQTs2Q0FBQXovQixrQkFBQXkvQjs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9COztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQXovQixrQkFBQXkvQjs7O01BQUEsT0FBQTs0Q0FBQXovQixrQkFBQXkvQjtTQUFBQzs7NkJBQUFBOzs4QkFBQUE7OytCQUFBQTtnQ0FBQUE7bUNBQUFBO21DQUFBQTs7bUNBQUFBOztpQ0FBQUE7O1lBQUFoN0I7UUFBQSxHQUFBQTtvQkFBQUE7O1VBQUE7V0FBQW1sQztXQUFBbGxDLFdBQUFEO1dBQUFvbEMsV0FBQSx5Q0FBQW5sQztXQUFBb2xDLFdBQUEseUNBQUFGO1VBQUEsV0FBQUMsVUFBQUM7OztRQUFBLE9BQUE7O2lCQUFBL3BDO2lCQUFBMC9CO2lCQUFBRDs7V0FBQXVLO09BQUEsR0FBQUE7bUJBQUFBOzs7O1VBQUE7V0FBQUM7V0FBQUM7V0FBQUMsV0FBQUg7V0FBQUksV0FBQSx5Q0FBQUQ7V0FBQUUsV0FBQSx5Q0FBQUg7V0FBQUksV0FBQSx5Q0FBQUw7VUFBQSxXQUFBRyxVQUFBQyxVQUFBQzs7OztPQUFBLE9BQUE7O2dCQUFBdHFDO2dCQUFBMC9CO2dCQUFBRDs7VUFBQThLO01BQUEsR0FBQUE7a0JBQUFBOzs7Ozs7VUFBQTtXQUFBQztXQUFBQztXQUFBQztXQUFBQyxXQUFBSjtXQUFBSyxXQUFBLHlDQUFBRDtXQUFBRSxXQUFBLHlDQUFBSDtXQUFBSSxXQUFBLHlDQUFBTDtXQUFBTSxXQUFBLHlDQUFBUDtVQUFBLFdBQUFJLFVBQUFDLFVBQUFDLFVBQUFDOzs7OztNQUFBLE9BQUE7O2VBQUEvcUM7ZUFBQTAvQjtlQUFBRDs7U0FBQUU7UUFBQUEsbUJBQUFBO01BQUE7T0FBQXBHLFdBQUFvRztPQUFBQyxXQUFBLDJCQUFBckc7TUFBQSxXQUFBcUc7O0tBQUEsT0FBQTs7Y0FBQTUvQjtjQUFBMC9CO2NBQUFEOztJQUFBLE9BQUEsd0NBQUF6L0Isa0JBQUF5L0I7R0FJMkM7WUFKM0N1TDtJQUFBOztPQUNJO1FBQUE1UDtRQUFBNlAsV0FBQSwyQkFBQTdQO09BQUEsd0JBQUE2UDs7T0FDQTtRQUFBQztRQUFBQztRQUFBQztRQUFBQyxXQUFBLHlDQUFBRDtRQUFBRSxXQUFBLHlDQUFBSDtRQUFBSSxXQUFBLHlDQUFBTDtPQUFBLHdCQUFBRyxjQUFBQyxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBNW1DLFdBQUEseUNBQUE0bUM7UUFBQUMsV0FBQSx5Q0FBQUY7UUFBQUcsV0FBQSx5Q0FBQUo7UUFBQUssV0FBQSx5Q0FBQU47T0FBQTs7O29CQUFBem1DLGNBQUE2bUMsY0FBQUMsY0FBQUM7O09BQ0E7UUFBQUM7UUFBQXhtQztRQUFBODJCLFdBQUEseUNBQUE5MkI7UUFBQW0zQixXQUFBLHlDQUFBcVA7T0FBQSx3QkFBQTFQLGNBQUFLOztHQUF1QztHQUozQyxTQUFBc1AsaUJBQUEvcEM7SUFBQSxVQUFBQTtlQUFBQTs7Z0JBQUFBOzs7Ozs7Ozs7OztPQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7OztnQkFBQUE7O09BQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7Ozs7WUFBQXlFO2tDQUFBQTthQUFBSTtZQUFBQSxtQkFBQUE7VUFBQTtXQUFBQyxPQUFBRDtXQUFBRSxPQUFBLHFEQUFBRDtVQUFBLFdBQUFDOztTQUFBLE9BQUE7cURBQUEvRyxRQUFBeUcsS0FBQXpFOztrQ0FBQXlFO2FBQUFPO1NBQUEsR0FBQUE7b0JBQUFBOzs7Ozs7YUFBQTtjQUFBZ2xDO2NBQUFDO2NBQUExRztjQUFBdCtCLE9BQUFEO2NBQUFFLE9BQUEseUNBQUFEO2NBQUF1K0IsT0FBQSx5Q0FBQUQ7Y0FBQTJHLE9BQUEseUNBQUFEO2NBQUFFLE9BQUEseUNBQUFIO2FBQUEsV0FBQTlrQyxNQUFBcytCLE1BQUEwRyxNQUFBQzs7Ozs7U0FBQSxPQUFBO3FEQUFBbnNDLFFBQUF5RyxLQUFBekU7O2tDQUFBeUU7YUFBQVU7U0FBQSxHQUFBQTtvQkFBQUE7Ozs7WUFBQTthQUFBdXpCO2FBQUErSzthQUFBcitCLE9BQUFEO2FBQUFFLE9BQUEseUNBQUFEO2FBQUFzK0IsT0FBQSx5Q0FBQUQ7YUFBQTlLLE9BQUEseUNBQUFEO1lBQUEsV0FBQXJ6QixNQUFBcStCLE1BQUEvSzs7OztTQUFBLE9BQUE7cURBQUEzNkIsUUFBQXlHLEtBQUF6RTs7a0NBQUF5RTthQUFBQztTQUFBLEdBQUFBO29CQUFBQTs7V0FBQTtZQUFBOEw7WUFBQTdMLEtBQUFEO1lBQUFFLE9BQUEseUNBQUFEO1lBQUE4TCxPQUFBLHlDQUFBRDtXQUFBLFdBQUE1TCxNQUFBNkw7OztTQUFBLE9BQUE7cURBQUF6UyxRQUFBeUcsS0FBQXpFOzs7O1FBQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7OztJQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7R0FJMkM7WUFKM0NvcUM7SUFBQTs7T0FDSTtRQUFBemxDO1FBQUFDLE9BQUEsb0RBQUFEO09BQUEsbUNBQUFDOztPQUNBO1FBQUE4ekI7UUFBQWxvQjtRQUFBcEw7UUFBQUMsT0FBQSx5Q0FBQUQ7UUFBQXFMLE9BQUEseUNBQUFEO1FBQUFtb0IsT0FBQSx5Q0FBQUQ7T0FBQSxtQ0FBQXJ6QixVQUFBb0wsVUFBQWtvQjs7T0FDQTtRQUFBcVI7UUFBQUM7UUFBQXhHO1FBQUF4K0I7UUFBQUMsT0FBQSx5Q0FBQUQ7UUFBQXkrQixPQUFBLHlDQUFBRDtRQUFBeUcsT0FBQSx5Q0FBQUQ7UUFBQUUsT0FBQSx5Q0FBQUg7T0FBQTs7NEJBQUE5a0MsVUFBQXcrQixVQUFBd0csVUFBQUM7O09BQ0E7UUFBQTVHO1FBQUF6K0I7UUFBQUMsT0FBQSx5Q0FBQUQ7UUFBQTArQixPQUFBLHlDQUFBRDtPQUFBLG1DQUFBeCtCLFVBQUF5K0I7O0dBQXVDO1lBRXZDNkcsV0FDQ0Msa0JBQXNDQztJQUFrQyxPQUFsQ0E7O1dBRXZCQyxJQUZ1QkQsTUFFakIsV0FBTkMsR0FGZkYscUJBQUFBOztPQUtDO1FBRjJDRyxrQkFITkY7UUFHSHR2QixVQUhHc3ZCO1FBR2JydkIsV0FIYXF2Qjs7bUJBS0UxRztXQUNyQztZQUFBLE1BQUEsV0FEcUNBLE1BRkw1b0I7WUFHaEMsWUFBcUIsV0FEZ0I0b0IsTUFGZjNvQjtXQUdEO1VBQW1CO1FBRDFDLFFBQUEsNkJBTERvdkI7UUFJZUk7UUFBTjN5QztRQUFMNHlDO09BSUwsR0FKVTV5QztRQU9OLElBREs2eUMsU0FOQzd5QyxTQU9OLE1BREs2eUM7Ozs7OztnQkFQb0NIOztrQkFBQUE7Y0FRckNJOzs7YUFBQUEsZUFScUNKOztZQUt6Q0ssYUFFS0YsV0FBQUEsV0FDREMsVUFEQ0Q7OztZQUZMRSxhQUxzQjV2QixVQUFVRCxhQUFTd3ZCO09Bd0JWO2NBM0JsQ0g7UUEyQmtDLE1BQUEsMkJBbkIvQlEsWUFKWUo7UUF1QmEsTUFBQSx1QkF2QnhCQztPQXVCTCxXQTNCQ0w7O09BOEJDO1FBRm1EUyxvQkE1QmRSO1FBNEJFdGQsYUE1QkZzZDtRQTRCUFMsWUE1Qk9UO1FBNEJqQlUsYUE1QmlCVjs7bUJBOEJFMUc7V0FDckM7WUFBQSxNQUFBLFdBRHFDQSxNQUZUbUg7WUFHNUIsWUFBcUIsV0FEZ0JuSCxNQUZuQm9IO1dBR0c7VUFBbUI7UUFEMUMsVUFBQSw2QkE5QkRYO1FBNkJvQlk7UUFBTkM7UUFBVkM7T0FJTCxHQUplRDtRQU9YO1NBREtFLFNBTk1GO1NBT1gsZUFDZ0MvRCxHQUFLLE9BQUEsV0FBTEEsTUFUS25hLFlBU3NCO1NBQXpELFVBQUEsNkJBRkdvZTtTQUNzQkM7U0FBVHBlO1NBQWJxZTtRQUVMLEdBRmtCcmU7YUFJVHNlLFlBSlN0ZTs7Ozs7Y0FJVHNlO2lCQVp3Q1Q7O21CQUFBQTtxQkFvQmYsdUJBWjdCUSxhQUFzQkQ7OztVQVNuQjtXQUFBO2FBQUE7O3VCQUxDRSxjQVp3Q1Q7ZUFRdEJPO2lCQVFyQix1QkFSREM7O2FBRUQxd0I7OztTQWNFO1VBQUE7WUFBQTs7c0JBeEIrQm9TLFlBQVk4ZDtjQVF0Qk87VUFFdkJ6d0IsV0FhQSx1QkFmQzB3QjtZQUhMRSxhQUVLSixXQUFBQSxXQUFBQSxXQUdEeHdCOzs7O1NBTEo0d0I7O1lBTGtCUjtZQUFVRDs7b0JBQVMvZCxZQUFZOGQ7T0FtQ2I7Y0EvRHZDVDtRQStEdUMsTUFBQSwyQkE5QnBDbUIsWUFKaUJQO1FBa0NRLE1BQUEsdUJBbEN4QkU7T0FrQ0wsV0EvRENkOztPQWlFRDtRQUQrQm9CLFlBaEVRbkI7UUFnRWxCb0IsYUFoRWtCcEI7UUFpRXZDLGVBQzBDcUIsR0FBSyxPQUFBLFdBQUxBLE1BRnJCRCxZQUU2QztRQUFoRSxVQUFBLDZCQWxFRHJCO1FBaUV1QnVCO1FBQW5CQztRQUtXO1VBQUE7Z0NBTktILFlBQVVELGdCQUNQRztRQUtwQixNQUFBLHVCQUxDQztPQUVMLFdBbkVDeEIscUJBQUFBOztHQXlFSjs7OztPQWpGRC9DO09BQUFDO09BQ0FHO09BQUFvQjtPQUFBZ0I7T0FBQUs7T0FNSUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUNSSmhzQztJQUFBTDtJQUtJa2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBUEpwSCxHQUVBcFcsS0FBQXRJO0lBQUEsK0JBQUFzSTtJQUFBLCtCQUFBQTtJQUZBLFVBRUF0STtJQUFBLFdBQ2MsK0JBRGRzSTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtJQUZBLFVBRUF0STtJQUFBLFdBRWEsK0JBRmJzSTtJQUFBLCtCQUFBQTtJQUFBLE9BQUEsK0JBQUFBO0dBR0M7WUFMRHFXLEtBRUEzZSxHQUFBLE9BQUEsb0NBRkEwZSxJQUVBMWUsR0FHQztHQUhELFNBQUE0ZSxVQUFBKzFCO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBMXRDLGtCQUFBMHRDO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0VFO0tBQ0FDO0tBRkZDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFKO09BQUE7O1lBQUFLO2lCQUFBQTtrQkFBQUE7Ozs7WUFBQUMsMEJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQWp1QyxrQkFBQTB0QztnQkFBQU87Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBR0M7bUJBSEREOztTQUFBQSxpQkFBQUQsaUJBQUFIO2dDQUFBQztpQ0FBQUE7O1dBQUFILG1CQUFBRyxnQkFBQUg7O2lCQUNFSDtVQURGRSx3QkFBQUksZ0JBQUFKOztVQUNFO1dBREZTLG1CQUFBRjtXQUNFRyxhQUFBLDRCQURGRDtVQUNFWCx3QkFBQVk7O2dCQUNBWDtTQUZGQyx3QkFBQUksZ0JBQUFKOztTQUVFO1VBRkZXLG1CQUFBSjtVQUVFSyxhQUFBLDRCQUZGRDtTQUVFWix1QkFBQWE7O29CQUZGUDs7Ozs7O0tBQUEseUNBQUFudUMsa0JBQUFndUM7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQTl0QztjQUFBOHRDO2NBQUFKO09BQUFLO0tBQUEsT0FBQTs7Y0FBQS90QztjQUFBK3RDO2NBQUFMO2NBQ0VFLDJCQUNBQzs7U0FBQWMsMEJBREFDO0tBREYsYUFDRUEsZ0JBQ0FEOztJQUZGLE9BQUE7O2FBQUEzdUM7YUFBQTB0Qzs7d0JBQ0VFOzRCQUNBQztHQUNEO1lBSER6ekI7SUFBQTtLQUVFeTBCO0tBREFDO0tBQ0FDLFVBQUEsNEJBQUFGO0tBRkZHLGdDQUVFRDtLQURBRSxVQUFBLDRCQUFBSDtLQURGSSxrQ0FDRUQsZUFERkQ7SUFBQSxXQUFBRTtHQUdDO0dBSEQsU0FBQXR6QixZQUFBamE7SUFBQSxVQUFBQSxxQ0FBQUE7S0FDRTtNQURGa0ksZ0JBQUFsSTtNQUNFd3RDO01BQ0FDO01BRkZubEM7TUFBQUM7Y0FBQUw7S0FBQTs7O09BQUFNOztPQUFBQztPQUFBQzs4QkFBQUE7K0JBQUFBO1FBQUE7VUFBQTs7U0FBQUgsZUFBQUcsWUFBQSxtQ0FBQUg7O2VBQ0UsbUNBQUFpbEM7UUFERmxsQzthQUFBSSxZQUNFLG1DQURGSjs7UUFDRTtTQUFBSztXQUFBLHFEQURGRjtRQUNFK2tDLDBCQUFBN2tDOztjQUNBLG1DQUFBOGtDO09BRkZubEM7WUFBQUksWUFFRSxtQ0FGRko7O09BRUU7UUFBQU07VUFBQSxxREFGRkg7T0FFRWdsQyx5QkFBQTdrQzs7a0JBRkZKOztRQUFBLG1DQUFBRjtNQUFBLFVBQUEsbUNBQUFBO01BQUEsT0FBQTttREFBQXRLLGFBQUFnQzs7UUFBQSxtQ0FBQXVJO01BQUEsVUFBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBdkssYUFBQWdDOztLQUNFO01BQUEsVUFBQSxtQ0FBQXd0QztNQUNBLFVBQUEsbUNBQUFDOztVQUFBQyw4QkFEQUM7TUFERixhQUNFQSxrQkFDQUQ7O0tBRkY7TUFBQTs7O2dCQUVFLG1DQUFBRDs7O01BRkY7OztnQkFDRSxtQ0FBQUQ7OztLQURGLE9BQUE7a0RBQUF4dkMsUUFBQWdDOztJQUFBLE9BQUEsK0NBQUFoQyxRQUFBZ0M7R0FHQztZQUhEd2E7SUFBQTtLQUVFb3pCO0tBREFDO0tBQ0F4a0MsMERBQUF1a0M7S0FBQXRrQyxnQ0FBQUQ7S0FEQUUsNERBQUFza0M7S0FBQXJrQyxtQ0FBQUQsUUFDQUQ7SUFGRixzQkFDRUU7R0FFRDs7O1VBTERzTSxJQUFBQyxNQUVBQyxXQUFBeUMsV0FBQXdCLGFBQUFPLGFBS0kwQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQ3lHQTR3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQS9HQUMsZUFBaUJuNEM7SUFBTSxJQUNyQm80QztJQUNKO0tBR0ksdUJBTGVwNEM7S0FNZixNQUFBO0lBQ0Q7SUFKRCxVQUZFbzRDLG1CQUVrQix3QkFISHA0QztJQUlqQixPQUFBO0dBS0g7WUFFR3E0Qyw4QkFBeURDO0lBVTNELG9CQUN5QyxPQUFBLG9DQUFvQjtJQUEzRDtLQVZjQyxZQVVkO2VBVmNBO0lBQ2Q7S0FBRyxHQUFZLDJCQUE4Qix3QkFGWUQ7TUFFWTtLQUU5RDtNQUFBLHNCQUVxQyxPQUFBLHNDQUFzQjtNQUxwREUsWUFLVjtnQkFMVUE7O0dBYWpCO1lBRUdDLGdCQUFpQiw4QkFFcEI7WUFFR0MsaUJBQWtCLE9BSmxCRCxzQkFJcUM7WUFFckNFO0lBQ0Ysb0JBQTRDLE9BQUEsMENBQTBCO0lBQXRFLE9BQUE7YUFBYTtHQUEyRDtZQUV0RUMsZUFBbUIsdUJBQXlCO1lBQzVDQyxnQkFBb0Isd0JBQTBCO1lBQzlDQyxjQUFrQixzQkFBd0I7WUFDMUNDLGVBQW1CLHVCQUF5QjtZQUU1Q0MsZ0JBQ0Ysa0JBQThCO1lBRTVCQyxnQkFBbUJsNUMsS0FDckIsYUFEcUJBLG1CQUNEO1lBRWxCbTVDLHFCQUNFcHlCLFVBQW1CcXlCLGNBQXVCQztJQUFxQjtLQUMvREMsT0FBTyxvQ0FEWUYsa0JBQXVCQzs7S0FFcEMsTUFBQSx3QkFETkM7S0FHTyxPQUFBOztJQUVYLDhCQUEwQyx3QkFOdEN2eUI7d0JBT29DLHlCQUFVO0lBQWhDLFVBQUE7OztHQUVuQjtZQUVHd3lCLGNBQWlCeHlCLFVBQVVzeUI7SUFJakIsVUFBQSx1Q0FKaUJBO0lBSWpCLE9BaEJWRjthQWNVLHVCQUZPcHlCOzs7R0FLbEI7WUFFQ3l5QixVQUFhQyxNQUFNNTNDO0lBQ1I7SUFDYixrQkFGZTQzQzs7S0FJSTtNQUNYbEo7TUFDMEIsTUFBQSxtQ0FEMUJBO01BQ0FtSixTQUFTO01BQ1RsWixPQUFPLHNEQURQa1o7S0FFSixXQVJpQjczQyxHQU9iMitCO0tBQ0o7SUFFRDtJQU5ELFVBQUE7O0dBT0g7WUFFR21aLGVBQWtCOTNDLEdBQVdHO0lBQW9CO0tBRUcsTUFBQTtJQUFhO0lBQWpFOztLQURFNDNDLGNBQ0Y7V0FERUE7YUFFaUIsd0JBSEQvM0MsSUFHZSx3QkFISkc7R0FJaEM7WUFFRzYzQyxlQUFrQmg0QztJQUNwQjtLQUVJOzs7U0FBb0QsTUFBQTtRQUFhOztNQUQvRCszQyxjQUNGO01BR0FuNEMsSUFKRW00QyxvQkFFaUIsd0JBSkgvM0M7TUFNWDs7U0FBb0IsTUFBQTtRQUFhO01BQWpDLE1BQUEsd0JBQUEsaUNBQUxKO01BQUssTUFBQTtLQUZQOztlQUtLO0dBQ047WUFFQ3E0QztJQUF5QjtLQUUyQixNQUFBO0lBQWE7SUFBakU7O0tBREVGLGNBQ0Y7V0FERUE7R0FHTDtZQUVHRyxRQUFVQztJQUFXLE9BQ1osZ0NBQXlCLHdCQUR4QkE7O0dBRWI7WUFFR0MsSUFBTXpaLE1BQVEsa0NBQVJBLE1BRVQ7WUFJRzBaO0lBQTZCLE9Bakg3QjlCLGVBK0dBRDtHQUVxRTtHQUd6QztJQUFBLFVBQUMsb0NBTDdCQTtJQUtrQixVQUFBO0lBRGxCZ0MsaUJBQWlCO1lBSWpCQyxLQUFRbnlDO0lBTlJpeUM7SUFRRjs7SUFRRTtXQUFBLHFDQUFtQix3QkFWWGp5QztJQU9WOzs7R0FVRDtZQUVHb3lDO0lBQ0Y7S0FDbUI7TUFBYkMsYUE1SUpsQztNQTZJSW1DLE9BN0lKbkM7TUE4SWdCLFlBRFptQztNQUVhLGFBSGJEOztnQkFBQUE7O01BT087T0FBQTttQkFQUEE7S0FLb0M7Ozs7OEJBTW5COzs7R0FDdEI7WUFHR0UsWUFJQUM7SUFKc0I7S0FDcEJDO29DQUdGRDtVQUFVLDRCQUFWQTs7O0tBRUVFO0tBQ3VDLE1BQUEsOEJBQVEsd0JBTi9DRDtXQUtBQztHQUVMO1lBRUdDO0lBQW9CLFNBQ2xCQyxnQkFBbUJqNkM7S0FDckIsSUFDcUJxSCxZQUZBckgsU0FBQUEsWUFBQUE7S0FJWSxPQUZacUg7SUFHcEI7SUFDSCxVQUFBO0lBQUEsT0FBQSxXQUFxQiw2QkFOakI0eUM7R0FPTDtHQW5CZTtJQUFBLGVBQ1pMLGFBVUFJOzs7T0FyS0Z4QztPQVdBRTtPQWdCQUk7T0FJQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FZQUk7T0FPQUM7T0FhQUc7T0FNQUU7T0FZQUM7T0FNQUM7T0FJQUU7T0FJQTlCO09BRUErQjtPQUVBQztPQUlBQztPQW1CQUM7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3pJRVM7SUFlQUM7SUEyQ0FDO0lBZ0RBQztJQXdEQUM7SUFtRUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBbk9BQyxTQUFZM00sS0FBd0IsT0FBQSx1QkFGcENxTSxRQUVZck0sS0FFZjtZQUVHNE0sS0FBUTVNLEtBQWE2TTtJQUNELFdBTHBCRixTQUlRM007SUFDVixPQUFBLHNDQUR1QjZNO0dBQ29CO1lBRXpDQyxLQUFROU07SUFDWSxXQVJwQjJNLFNBT1EzTTtJQUNZLE9BQUE7R0FBYztHQVh2QjtJQUFBLGNBQ1hxTSxRQUVBTSxVQUlBQyxNQUdBRTtJQVFBNTBCO1lBRUEwWixVQUFZbEI7SUFDZCxXQUFBLGtDQURjQTtJQUNkLE9BQUE7R0FBd0Q7WUFFdERvQixZQUFjQztJQUNoQjtLQUNFO01BQUEsT0FBQSw2QkFGY0E7TUFFZCxPQUFBO01BREMsT0FBQTtLQUFBOzs7S0FPRDtLQVhZLE9BRlo3Wjs7R0FlRDtZQUVDNjBCLE9BQVFyYztJQUMrQixXQWhCdkNrQixVQWVRbEI7SUFDK0IsT0FBQSxnQ0FwQnZDNGI7R0FvQjJEO1lBRTNEeHpCO0lBQ3VDLFdBbkJ2QzhZLFVBRkExWjtJQXFCRixnQ0F2QkVvMEI7V0FFQXAwQjtHQXVCSDtZQUVHODBCO0lBQ0ssWUFBQSxnQ0E1QkxWO2dCQTZCUSxPQVBSeHpCO1FBUUtpWjtJQUFTLE9BdkJkRCxZQXVCS0M7R0FDTjtZQUVDRztJQUEwQixXQUFBLGdDQWpDMUJvYTtJQWlDMEIsT0FBQTtHQUF5QztZQUNuRW5hLFNBQVNKO0lBQ0ksSUFBWHJCLFdBNUJGb0IsWUEyQlNDO0lBZlRnYixPQWdCRXJjO0lBQ0osT0FESUE7R0FHTDtHQXZDZTs7O09BQ1o0YjtPQUVBcDBCO09BRUEwWjtPQUdBRTtPQVlBaWI7T0FHQWowQjtPQUtBazBCO09BTUE5YTtPQUNBQztZQVdBOGEsWUFBWS9HO0lBQ2QsV0FBQSwwQ0FEY0E7SUFDZCxPQUFBO0dBQXdFO1lBRXRFZ0gsY0FBY25iO0lBQ2hCO0tBQUk7TUFBQSxPQUFBLDZCQURZQTtNQUNiLE9BQUE7S0FBQTs7O0tBRUQ7S0FBQTs7R0FFRDtZQUVDb2IsT0FBUWpIO0lBR1IsV0FiQStHLFlBVVEvRztJQUdSLE9BQUEsZ0NBZkFxRztHQWdCRDtZQUVDeHpCO0lBR0EsVUFuQkFrMEI7SUFpQkYsZ0NBbkJFVjtJQW1CRjtHQUtEO1lBRUdhO0lBQ0ssWUFBQSxnQ0EzQkxiO2dCQTRCUSxPQVZSeHpCO1FBV0tnWjtJQUFTLE9BeEJkbWIsY0F3QktuYjtHQUNOO1lBRUtzYjtJQUNOO0tBQU8sWUFBQSxnQ0FqQ0xkO21CQXFDS3hhLGlCQUFTLE9BQVRBO0tBbkJMaFo7O0dBb0JEO1lBRUN1MEIsU0FBU3ZiO0lBQ1ksSUFBbkJtVSxtQkFwQ0ZnSCxjQW1DU25iO0lBRVgsT0E5QkVvYixPQTZCRWpIO0dBRUw7R0E1Q3VCO0lBQUE7O09BQ3BCcUc7T0FFQVU7T0FHQUM7T0FPQUM7T0FNQXAwQjtPQVFBcTBCO09BTUlDO09BUUpDO0lBVUpDO0lBQUFDOztLQUFBRDtjQUNBanlDLEtBREEsT0FBQSx1Q0FDQUEsS0FBd0M7O0tBRHhDa3lDO2NBQ0F4NkM7TUFBQSxPQUFBLG9DQURBdTZDLGVBQ0F2NkM7S0FBd0M7R0FBeEM7SUFBQXk2QztJQUFBQztJQUFBQztJQUFBQztZQUVJQztJQUFnQjtLQUFlekw7S0FBUnpDO0tBQUxJO0tBR3BCO09BQUE7U0FDRztTQUo4QnFDO0tBR2pDLE1BQUE7SUFIMEQ7WUFBdENyQztZQUVwQix1REFGeUJKOztHQU0xQjtZQUVHbU8sY0FBa0JwZDtJQUFGO0tBQTBCMFI7S0FBUnpDO0tBQUxJO0tBSTdCLE1BQUEsNEJBSjBDcUM7S0FJMUMsTUFBQTtLQUdvQixNQUFBLHNDQVBGMVI7S0FJbEIsTUFBQSxXQUdHO0lBUGdFO1lBQXRDcVA7WUFHN0IsdURBSGtDSjs7R0FTckM7WUFFR29PLFlBQVlDO0lBQ2QsVUFBQSxXQXRCRk4sb0JBRUlHLGNBbUJZRztJQUNkLE9BQUE7R0FDRDtZQUVHQyxjQUFjbGM7SUFDaEI7V0FBQSxXQTFCRjBiLG9CQTBCRSw2QkFEZ0IxYjtJQUFRLHFCQUN4QixPQWhCRStiO0dBaUJIO1lBRUdJLE9BQVFGO0lBQzhCLFVBVHRDRCxZQVFRQztJQUM4QixPQUFBLGdDQWpDdEN4QjtHQWtDSDtZQUVHMkIsT0FBU3pkO0lBQ0csSUFBVnNkLFVBeEJGRixjQXVCU3BkO0lBSlR3ZCxPQUtFRjtJQUNKLE9BRElBO0dBR0w7WUFFR0ksT0FBUzFkO0lBQ0osWUFBQSxnQ0EzQ0w4YjtnQkE0Q1EsT0FSUjJCLE9BTVN6ZDtRQUdKcUI7SUFDTCxJQUFHLFVBbEJIa2MsY0FpQktsYyxNQUhJckIsV0FJTjtlQUNJLE9BWFB5ZCxPQU1TemQ7R0FPVjtZQUVDMmQsU0FBVzNkLFVBQWEsT0EzQnhCcWQsWUFrQkFLLE9BU1cxZCxXQUF1QztZQUNsRDRkLFNBQVc1ZCxVQUFVcUI7SUFBUyxPQXBCOUJtYyxPQUpBRCxjQXdCcUJsYyxNQUFWckI7R0FBcUQ7R0FyRHJEO0lBQUE7O09BQ1g4YjtPQUVKZTtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUVJQztPQVFBQztPQVdBQztPQUlBRTtPQUlBQztPQUlBQztPQU1BQztPQVNBQztPQUNBQztJQU1KQztJQUFBQzs7S0FBQUQ7Y0FDQWp6QyxLQURBLE9BQUEsdUNBQ0FBLEtBQThDOztLQUQ5Q2t6QztjQUNBeDdDO01BQUEsT0FBQSxvQ0FEQXU3QyxpQkFDQXY3QztLQUE4QztHQUE5QztJQUFBeTdDO0lBQUFDO0lBQUFDO0lBQUFDO1lBRUlwZDtJQUFVLElBQVFDLG1CQUFON2dDO0lBQTRCLFdBQTVCQSxNQUNQLDBDQURhNmdDO0dBRXJCO1lBRUdDO0lBQVk7S0FBUTU4QjtLQUFObEU7S0FDWitnQyxXQUFTLDBDQURTNzhCO0lBRXRCLFdBRmdCbEUsTUFFVCxzQ0FESCtnQztHQUVMO1lBRUdrZDtJQUFnQjtLQUFrQnpNO0tBQVJ6QztLQUFSbVA7S0FHcEI7T0FBQTtTQUNHO1NBSmlDMU07S0FHcEMsTUFBQTtJQUg2RCxXQUF6QzBNLFFBRXBCLDRCQVhFdGQsU0FTMEJtTztHQU03QjtZQUVHb1AsZ0JBQWtCcmU7SUFBRjtLQUE2QjBSO0tBQVJ6QztLQUFSbVA7S0FJN0IsTUFBQSw0QkFKNkMxTTtLQUk3QyxNQUFBO0tBR29CLE1BQUEsc0NBUEYxUjtLQUlsQixNQUFBLFdBR0c7SUFQbUUsV0FBekNvZSxRQUc3Qiw0QkFoQkFwZCxXQWFxQ2lPO0dBU3hDO1lBRUdxUCxZQUFZclA7SUFDZCxVQUFBLFdBL0JGK08sc0JBV0lHLGdCQW1CWWxQO0lBQ2QsT0FBQTtHQUNEO1lBRUdzUCxjQUFjbGQ7SUFDaEI7O09BQUEsV0FuQ0YwYyxzQkFtQ0UsNkJBRGdCMWM7SUFBUSxxQkFDeEIsT0FoQkVnZDtHQWlCSDtZQUVHRyxPQUFRdlA7SUFDb0MsVUFUNUNxUCxZQVFRclA7SUFDb0MsT0FBQSxnQ0ExQzVDOE07R0EyQ0g7WUFFRzBDLE9BQVN6ZTtJQUNTLElBQWhCMGUsZ0JBeEJGTCxnQkF1QlNyZTtJQUpUd2UsT0FLRUU7SUFDSixPQURJQTtHQUdMO1lBRUdDLE9BQVMzZTtJQUNKLFlBQUEsZ0NBcERMK2I7Z0JBcURRLE9BUlIwQyxPQU1TemU7UUFHSnFCO0lBQ0wsSUFBRyxVQWxCSGtkLGNBaUJLbGQsTUFISXJCLFdBSU47ZUFDSSxPQVhQeWUsT0FNU3plO0dBT1Y7WUFFQzRlLFNBQVc1ZSxVQUFhLE9BM0J4QnNlLFlBa0JBSyxPQVNXM2UsV0FBdUM7WUFDbEQ2ZSxTQUFXN2UsVUFBVXFCO0lBQVMsT0FwQjlCbWQsT0FKQUQsY0F3QnFCbGQsTUFBVnJCO0dBQXFEO0dBOUQvQzs7O09BQ2pCK2I7T0FFSjhCO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BRUlwZDtPQUlBRTtPQUtBbWQ7T0FRQUU7T0FXQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FNQUU7T0FTQUM7T0FDQUM7WUFRQUMsaUJBQW1CeFA7SUFDckIsVUFBQSxrQ0FEcUJBO0lBQ3JCLE9BQUE7R0FDRDtZQUVHeVAsYUFBZXg0QjtJQUFLLE9BSnBCdTRCLGlCQUtGLGtDQURpQnY0QjtHQUVsQjtZQUVHeTRCLGlCQUFtQkM7SUFDckIsVUFBQSw2QkFEcUJBO0lBQ3JCLE9BQUE7R0FDRDtZQUVHQyxrQkFBb0I1UDtJQUNrQixVQWJ0Q3dQLGlCQVlvQnhQO0lBQ2tCLE9BQUEsZ0NBZnRDME07R0FnQkg7WUFFR21ELGNBQWlCeDNCLFVBQVd5b0I7SUFBb0I7S0FDOUNkLE1BQU0sa0NBRFMzbkI7S0FFZnMzQixZQWxCRkgsaUJBaUJFeFA7S0FFQTZNLFFBQVEsbUNBSE94MEIsVUFBV3lvQjtJQUk5QixPQUFBLGdDQUZJNk8sV0FDQTlDO0dBRUw7WUFFR2lELGNBQWlCcE4sTUFBTzVCO0lBQW9CO0tBQzFDZCxNQUFNLGtDQURTMEM7S0FFZmlOLFlBekJGSCxpQkF3QkV4UDtLQUVBM25CLFdBQVcsbUNBSElxcUIsTUFBTzVCO0lBUHhCK08sY0FVRXgzQixVQUhzQnlvQjtJQUsxQixnQ0E5QkU0TCxrQkEyQkVpRDtJQUdKLE9BRkl0M0I7R0FJTDtZQUVHMDNCLGNBQWlCL1AsS0FBSzBDLE1BQU81QjtJQUFvQztLQUMvRDZPLFlBakNGSCxpQkFnQ2lCeFA7S0FFWixRQUFBLGdDQURIMlA7Z0JBU00sT0FuQlJHLGNBU3NCcE4sTUFBTzVCO1FBR3hCL087SUFDTDtLQUNLO01BQUEsTUFBQSxtQ0FGQUEsTUFIaUIyUSxNQUFPNUI7TUFJekJ6b0I7O21CQUFBQSxXQWJKeTNCLGNBU3NCcE4sTUFBTzVCO0lBUTdCLGdDQTFDQTRMLGtCQW1DRWlEO0lBT0YsT0FKSXQzQjtHQVFQO1lBRUcyM0IsY0FBK0JsUDtJQUF4QjtLQUFZem9CO0tBQVAwb0I7S0FBSDdzQztLQUNNLE1BQUEsMkJBREg2c0MsT0FBSDdzQztLQUNQOHJDLE1BQU07S0FDTjJQLFlBaERGSCxpQkErQ0V4UDtJQS9CRjZQLGNBOEJtQngzQixVQUFZeW9CO0lBR2pDLE9BQUEsZ0NBbkRFNEwsa0JBa0RFaUQ7R0FHTDtZQUVHTSxPQUFTblA7SUFBb0I7S0FLM0IsTUFBQTtLQUFBLE1BQUEsd0NBTE9BO0tBQ1B2b0I7SUFSRnkzQixPQVFFejNCLFdBRE91b0I7SUFTWCxPQVJJdm9CO0dBVUw7WUFFRzIzQixPQUFTblAsT0FBUUQ7SUFDWixZQUFBLGdDQXJFTDRMO2dCQTZGUSxPQXRDUnVELE9BYWlCblA7SUFHUDtLQURMNk87S0FDRDNQLE1BN0RKMFAsaUJBNERLQztLQUVFLFVBQUEsa0NBREgzUCxLQUhLZTs7S0FxQlU7TUFBYm9QLGFBQWEsMkJBckJWcFA7TUFzQkhxUCxZQUFZLGtDQURaRDtLQUVKOzthQXZCT3BQO2FBbENUZ1AsY0F3RE1LLFdBREFELFlBckJXclA7O0lBTVI7O0tBREU0QjtLQUFIeHVDO0tBQ0MsVUFBQSxnQ0FKSnk3Qzs7S0FhYztNQUFYaE4sYUFBVyxtQ0FWUkQsTUFMTTVCO0tBbERqQitPLGNBaUVRbE4sWUFmUzdCO0tBaUJiLFdBWkk1c0MsR0FMQzZzQyxPQWVENEI7O1FBUkM1UTtJQUNMO0tBQ0s7TUFBQSxNQUFBLG1DQUZBQSxNQUZFMlEsTUFMTTVCO01BUVR6b0I7O21CQUFBQSxXQW5EUnkzQixjQWdEV3BOLE1BTE01QjtJQVliLFdBUEk1c0MsR0FMQzZzQyxPQVFEMW9CO0dBbUJYO1lBRUdnNEIscUJBQXlCdFAsT0FBUUQ7aUJBUW5CNEI7S0FBUTtNQUNYMUMsTUFBTSxrQ0FESDBDO01BR0wsTUExRVRxTixjQXdFVy9QLEtBREcwQyxNQVJtQjVCO01BVXRCem9CLFdBQ0Ysd0NBWHdCeW9CO0tBYTFCLFdBSklkLEtBQ0EzbkI7SUFJTDtJQVBKO0tBQUEsTUFBQSxXQUNHLGtDQVJvQjBvQjtLQUlWLE1BQUEsZ0NBckdmMkw7SUFpR3FELFdBdkZyRGdELGlCQTJGSTtHQVlQO1lBRUdZLDBCQUE4QnZQLE9BQVFEO0lBQW9CO0tBQzVELE1BbkJFdVAscUJBa0I4QnRQLE9BQVFEO0tBQ3hDLE1BQUE7SUFBQSxPQUFBO0dBR0Q7WUFFR3lQLFNBQVd4UCxPQUFRRDtJQUFvQixPQU52Q3dQLDBCQU1XdlAsT0FBUUQ7R0FFdEI7WUFFRzBQLFNBQVV6ZSxNQUFPZ1AsT0FBUUQ7SUFDTCxJQUFsQjJQLGtCQUFrQixtQ0FEVjFlO0lBL0dWNmQsa0JBZ0hFYTtjQUFBQTs7S0FHUztNQUFPQztNQUFMMVE7TUFDTjBDLE9BQU8sa0NBREQxQyxLQUpJZTtLQU1kLEtBREkyQixNQUdGLE9BQUE7U0FDU2lPLFNBSlBqTztLQUtGLE9BckhMbU47Y0FzSE87O2dCQVBXYTtnQkFLSkM7Z0JBVFc3UDtjQUFBQTtJQW1CdkI7SUFmRCxPQUFBLFdBQUE7R0FnQko7R0FwSmU7SUFBQTs7T0FHWjRMO09BRUE4QztPQUlBQztPQUlBQztPQUlBRTtPQUlBQztPQU9BQztPQVNBQztPQWNBQztPQU9BQztPQWFBQztPQTZCQUc7T0FrQkFDO09BTUFDO09BSUFDOzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ2hWTjUyQztJQUFBZzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFMQUMsYUFDQXYxQztJQUFpQixPQUFBLCtCQUFqQkE7R0FBc0I7WUFEdEJ3MUMsZUFDQTk5QztJQUFBLE9BQUEsb0NBREE2OUMsY0FDQTc5QztHQUFzQjs7SUFBdEIrOUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFHQUM7SUFBQUM7O0tBQUFEO2NBQ0E3MUMsS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLCtCQUFBQTtnQkFBQXRJO01BQUEsV0FEQSxvQ0FDQXNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2dCQUFBdEk7TUFBQSxXQUV5QiwrQkFGekJzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtnQkFBQXRJO01BQUEsV0FHYSwrQkFIYnNJO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2tCQUFBdEk7O1dBSWlCaVY7T0FBQSw4QkFKakIzTTtPQUlpQixXQUxqQixtQ0FDQUEsTUFJaUIyTTtPQUFBLDhCQUpqQjNNOzs7T0FJaUIsOEJBSmpCQTtNQUFBLCtCQUFBQTtNQUFBLE9BQUEsK0JBQUFBO0tBS0M7O0tBTkQ4MUM7Y0FDQXArQyxHQUFBLE9BQUEsb0NBREFtK0MsYUFDQW4rQyxHQUtDO0dBTEQsU0FBQXErQyxtQkFBQXoxQztJQUFBLFVBQUFBLHFDQUFBQTtLQUNFO01BREZrSSxnQkFBQWxJO01BQ0UwMUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFKRnZ0QztNQUFBQztjQUFBTDtLQUFBOzs7T0FBQU07O09BQUFDO09BQUFDOzhCQUFBQTsrQkFBQUE7Z0NBQUFBO2lDQUFBQTtVQUFBO1lBQUE7O1dBQUFIO2dCQUFBRyxZQUFBLG1DQUFBSDs7O1dBRUUsbUNBQUFvdEM7VUFGRnJ0QztlQUFBSSxZQUVFLG1DQUZGSjs7VUFFRTtXQUFBSzthQUFBLG1EQUZGRjtVQUVFa3RDLHFDQUFBaHRDOztnQkFDQSxtQ0FBQWl0QztTQUhGdHRDO2NBQUFJLFlBR0UsbUNBSEZKOztTQUdFO1VBQUFNO1lBQUEsbURBSEZIO1NBR0VtdEMseUJBQUFodEM7O2VBRkEsbUNBQUE4c0M7UUFERnB0QzthQUFBSSxZQUNFLG1DQURGSjs7UUFDRSxJQUFBTyxXQUFBLG9DQURGSjtRQUNFaXRDLDRCQUFBN3NDOztjQUdBLG1DQUFBZ3RDO09BSkZ2dEM7WUFBQUksWUFJRSxtQ0FKRko7OztRQUlFb0k7Ozs7WUFKRmpJO09BSUVvdEMsNkJBQUFubEM7O2tCQUpGbEk7O1FBQUEsbUNBQUFGO01BQUEsVUFBQSxtQ0FBQUE7TUFBQSxPQUFBO3FEQUFBdEssYUFBQWdDOztRQUFBLG1DQUFBdUk7TUFBQSxVQUFBLG1DQUFBQTtNQUFBLE9BQUE7cURBQUF2SyxhQUFBZ0M7O0tBQ0U7TUFBQSxVQUFBLG1DQUFBMDFDO01BQ0E7UUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDOzs7T0FBQUM7T0FEQUM7T0FEQUM7T0FEQUM7TUFERjtjQUNFQTtjQUNBRDtjQUNBRDtjQUNBRDs7S0FKRjtNQUFBOzs7Z0JBSUUsbUNBQUFEOzs7OztNQUpGOzs7Z0JBR0UsbUNBQUFEOzs7TUFIRjs7OztlQUVFLG1DQUFBRDs7Ozs7TUFGRjs7O2dCQUNFLG1DQUFBRDs7O0tBREYsT0FBQTtvREFBQTEzQyxRQUFBZ0M7O0lBQUEsT0FBQSxpREFBQWhDLFFBQUFnQztHQUtDO1lBTERrMkM7SUFBQTtLQUlFQztLQURBQztLQURBQztLQURBQztLQUdBanRDOzs7O1NBQUE4c0M7S0FBQTdzQyxvQ0FBQUQ7S0FEQUUsMERBQUE2c0M7S0FBQTVzQyxrQ0FBQUQsUUFDQUQ7S0FGQUc7O2dEQUFBNHNDO0tBQUEzc0MsOENBQUFELFFBQ0FEO0tBRkErSCw0Q0FBQStrQztLQUFBOWtDLHFDQUFBRCxRQUNBN0g7SUFGRixzQkFDRThIO0dBSUQ7R0FMRCxTQUFBK2tDLGlCQUFBQztJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQXhCLGtCQUFBd0I7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDRUU7S0FDQUM7S0FDQUM7S0FDQUM7S0FKRkM7S0FBQUM7Ozs7Ozs7OzttQkFBQU47T0FBQTs7WUFBQU87aUJBQUFBO2tCQUFBQTs7OztZQUFBQywwQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBRTtTQUFBQztvQkFBQUg7cUJBQUFJO2FBQUEsS0FBQUo7Y0FBQSxPQUFBO3FEQUFBakMsa0JBQUF3QjtnQkFBQVM7Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBS0M7bUJBTEREOztTQUFBQSxpQkFBQUQsaUJBQUFIO2dDQUFBQztpQ0FBQUE7a0NBQUFBOztrQ0FBQUE7O2FBQUFILG1CQUFBRyxnQkFBQUg7O21CQUVFSjtZQUZGRyx3QkFBQUksZ0JBQUFKOztZQUVFO2FBRkZTLG1CQUFBRjthQUVFRyxhQUFBLDJCQUZGRDtZQUVFWixtQ0FBQWE7O2tCQUNBWjtXQUhGRSx3QkFBQUksZ0JBQUFKOztXQUdFO1lBSEZXLG1CQUFBSjtZQUdFSyxhQUFBLDJCQUhGRDtXQUdFYix1QkFBQWM7O2lCQUZBaEI7VUFERkksd0JBQUFJLGdCQUFBSjs7VUFDRTtXQURGYSxtQkFBQU47V0FDRU8sYUFBQSxvQ0FERkQ7VUFDRWpCLDBCQUFBa0I7O2dCQUdBZjtTQUpGQyx3QkFBQUksZ0JBQUFKOztTQUlFO1VBSkZlLG1CQUFBUjtVQUlFMTRCO1lBQUE7dURBSkZrNUI7U0FJRWhCLDJCQUFBbDRCOztvQkFKRnc0Qjs7Ozs7O0tBQUEseUNBQUFuQyxrQkFBQWdDOztPQUFBRjtLQUFBLE9BQUE7O2NBQUE5QjtjQUFBOEI7Y0FBQU47T0FBQU87S0FBQSxPQUFBOztjQUFBL0I7Y0FBQStCO2NBQUFQOztXQUNFRTtXQUNBQztXQUNBQzthQUNBQzs7O01BQUFpQjtNQURBQztNQURBQztNQURBQztLQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEOztJQUpGLE9BQUE7O2FBQUE5QzthQUFBd0I7O3dCQUNFRTs7O3NCQUNBQzs7OzBCQUNBQzs7MkJBQ0FDOztHQUNEO1lBTERxQjtJQUFBO0tBSUVDO0tBREFDO0tBREFDO0tBREFDO0tBR0FDO09BQUEscURBQUFKO0tBSkZLLGdDQUlFRDtLQURBRSxVQUFBLDJCQUFBTDtLQUhGTSxrQ0FHRUQsZUFIRkQ7S0FFRUcsVUFBQSwyQkFBQU47S0FGRk8sa0NBRUVELGVBRkZEO0tBQ0VHLFVBQUEsb0NBQUFQO0tBREZRLGtDQUNFRCxlQURGRDtJQUFBLFdBQUFFO0dBS0M7R0FFbUIsSUFBaEJDO1lBZ0JBQyxpQjtZQUVBamlELEdBQU0rc0MsU0FBUzBDLFNBQVMvQjtJQUFZO1lBQTlCWDs7WUFBUzBDO1lBQVMvQjs7WUFsQnhCc1U7R0F5Qkg7R0FHQztJQURFRSxRQVRBbGlEO1lBWUFtaUQsYUFBaUJwa0I7SUFDbkIsT0FEbUJBOztPQUdZO1FBQUEsUUFBQSxrQ0FIWkE7UUFHQzBSO1FBQVJ6QztRQUFMSTtPQUNMLGVBREtBLEtBQUtKLFNBQVF5Qzs7T0FJaEI7UUFBQSxVQUFBLGtDQVBlMVI7UUFNRTJSO1FBQVJ6QztRQUFOaHZDO09BRUwsZUFGS0EsTUFBTWd2QyxXQUFReUM7O09BS2pCO1FBQUE7VUFBQTtpRUFYZTNSO1FBVUZyWTtRQUFQMG9CO1FBQUg3c0M7T0FLTCxlQUxLQSxHQUFHNnNDLE9BQU8xb0I7O0dBTWhCO1lBRUMwOEIsYUFDQ3JWLFNBQW9CMEMsU0FBMEJ0QjtJQUVqRCxPQUZHcEI7O1dBR1VDLFNBSFZELFlBR094ckMsSUFIUHdyQztPQUd3QyxPQUFBLHNDQUFqQ3hyQyxHQUFHeXJDLFFBSFV5Qzs7V0FJRHhDLFdBSm5CRixZQUlhOXVDLE9BSmI4dUM7T0FLd0IsT0FBQSxzQ0FEWDl1QyxNQUFNZ3ZDLFVBSkN3Qzs7V0FNRC9wQixXQU5uQnFuQixZQU1ZcUIsUUFOWnJCLFlBTVM0QixNQU5UNUI7T0FPRCxPQUFBOztvQkFEVTRCLEtBQUdQLE9BQU8xb0I7Z0JBTjJCeW9COztHQVFoRDtZQUVDZ00sS0FBUWtJO0lBQXFCO0tBQzNCdGtCLFdBQVc7S0FDWHdWLG1CQUFtQjtLQUNFLFFBaEN2QjRPLGFBOEJFcGtCO0tBRVUwUjtLQUFUMUM7S0FDRHVWLFdBSk1EO0tBS04zVSxVQUFVLGlDQUpWM1AsVUFFQ2dQO0lBR0w7WUFIS0E7WUFGRGhQO1lBRVUwUjtZQUVWL0I7WUFIQTZGO1lBRUErTztHQUdMO1lBRUdySTtJQUFPO0tBQXFCMUc7S0FBa0I5RDtLQUE1QjFSO0tBQVRnUDtJQXBCVHFWLGFBb0JTclYsU0FBcUMwQyxTQUE1QjFSO0lBRXBCLGlDQUY4QndWO0lBRTlCLE9BQUEsaUNBRm9CeFY7R0FJckI7WUFFR3drQixnQkFBbUJ4c0IsT0FObkJra0IsS0FNbUJsa0IsUUFFckIsV0FGcUJBLE9BR3RCO1lBQ0d5c0IsTUFBU3pzQjtJQUlJLElBQVhnSSxXQUFXO0lBQ1I7SUFDQSxrQ0FGSEE7SUFHRyxrQ0FISEE7SUFJRztJQUNTLElBQVowa0IsWUE1QkZ0SSxLQWhDQStILGNBbURTbnNCO0lBVVg7WUFESTBzQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtnQkFUTzFzQjtHQWlCWjs7OztPQTNHRG1vQjtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUdBQztPQUFBQztPQUNBQztPQUFBUztPQUFBSztPQUFBMkI7T0FPSWE7T0FnQkFDO09BRUFqaUQ7T0FTQWtpRDtPQUdBQztPQWtCQUM7T0FXQWpJO09BU0FGO09BTUFzSTtPQUlBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQ3RHSng3QztJQUFBQztJQVlBQztJQUFBQztJQWVBdTdDO0lBQUFyN0M7SUFNQTgrQjtJQUFBNStCO0lBSUFvN0M7SUFBQWw3QztJQUtBbTdDO0lBQUFqN0M7SUFPQWs3QztJQUFBaDdDO0lBS0FpN0M7SUFBQS82QztJQUlBZzdDO0lBQUE5NkM7SUFNQSs2QztJQUFBNzZDO0lBcUNFODZDO0lBQUE1NkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBdEdGNjZDLDhCQUNBdjZDO0lBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7O09BQUEsT0FBQSw4QkFBQUE7ZUFBQSxPQUFBLDhCQUFBQTs7R0FTbUI7WUFWbkJ3NkMsK0JBQ0E5aUQ7SUFBQSxPQUFBO3NDQURBNmlELCtCQUNBN2lEO0dBU21CO0dBVG5CLFNBQUEraUQsK0JBQUF0NkM7SUFBQTs7Y0FBQUE7O2NBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBQUE7O2FBQUE7O1lBQUE7O1dBQUE7O1VBQUE7O1NBQUE7O1FBQUE7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBOUIsa0JBQUE4Qjs7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBQUEsT0FBQTttREFBQTlCLGtCQUFBOEI7O1lBQUEsT0FBQTtrREFBQTlCLGtCQUFBOEI7O1dBQUEsT0FBQTtpREFBQTlCLGtCQUFBOEI7O1VBQUEsT0FBQTtnREFBQTlCLGtCQUFBOEI7O1NBQUEsT0FBQTsrQ0FBQTlCLGtCQUFBOEI7O1FBQUEsT0FBQTs4Q0FBQTlCLGtCQUFBOEI7O09BQUEsT0FBQTs2Q0FBQTlCLGtCQUFBOEI7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7O0tBQUEsT0FBQTsyQ0FBQTlCLGtCQUFBOEI7O0lBQUEsT0FBQSx3Q0FBQTlCLGtCQUFBOEI7R0FTbUI7WUFUbkJ1NkM7SUFBQTs7T0FDSTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQUFlO0dBVG5CLFNBQUFDLGlDQUFBcjZDO0lBQUEsVUFBQUEscUNBQUFBO2dCQUFBQTs7TUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7Ozs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztrQkFBQTtzREFBQWhDLFFBQUFnQzs7OztPQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7OztJQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7R0FTbUI7WUFUbkJzNkM7SUFBQTs7T0FDSTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQUFlOztJQUVuQkM7O0lBQUFDOztLQUFBRDtjQUNBNzZDO01BQUE7OztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOzs7O2FBREFzQztTQUNBLCtCQUFBdEM7U0FiQXU2Qyw4QkFhQXY2QyxLQURBc0M7U0FBQSxPQUFBLCtCQUNBdEM7O2FBREF1QztTQUNBLCtCQUFBdkM7U0FEQSxXQUFBLDhDQUNBQSxNQURBdUM7U0FBQSxPQUFBLCtCQUNBdkM7O2FBREF3QztTQUNBLCtCQUFBeEM7U0FEQSxXQUFBLGlDQUNBQSxNQURBd0M7U0FBQSxPQUFBLCtCQUNBeEM7O0tBWXVCOztLQWJ2Qjg2QztjQUNBcGpEO01BQUEsT0FBQSxvQ0FEQW1qRCxvQkFDQW5qRDtLQVl1QjtZQVp2QnFqRCx3QkFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBQUEsT0FBQTt1REFBQXo4QyxrQkFBQXk4Qzs7Z0JBQUEsT0FBQTtzREFBQXo4QyxrQkFBQXk4Qzs7ZUFBQTs7Y0FBQSxPQUFBO29EQUFBejhDLGtCQUFBeThDOzthQUFBOztZQUFBOztXQUFBOztVQUFBOztTQUFBOztRQUFBOztPQUFBOztNQUFBOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQXo4QyxrQkFBQXk4Qzs7O01BQUEsT0FBQTs0Q0FBQXo4QyxrQkFBQXk4QztTQUFBQyw4Q0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0RBQUFBOzs0Q0FBQUE7NENBQUFBOzRDQUFBQTs7NENBQUFBOzBDQUFBQTs7Ozs0Q0FBQUE7OzRDQUFBQTs7NENBQUFBOzRDQUFBQTs7MENBQUFBOzs7OztnREFBQUE7OzRDQUFBQTs0Q0FBQUE7OzRDQUFBQTs0Q0FBQUE7OzRDQUFBQTswQ0FBQUE7Ozs7NENBQUFBOzs0Q0FBQUE7OzRDQUFBQTs0Q0FBQUE7OzBDQUFBQTs7OztvQkFBQUM7bUJBQUFBLG1CQUFBQTtpQkFBQTtrQkFBQUMsV0FBQUQ7a0JBQUFFLFdBWkFYLCtCQVlBVTtpQkFBQSxXQUFBQzs7Z0JBQUEsT0FBQTs7eUJBQUE3OEM7eUJBQUEwOEM7eUJBQUFEOzttQkFBQUs7a0JBQUFBLG1CQUFBQTtnQkFBQTtpQkFBQUMsV0FBQUQ7aUJBQUFFO21CQUFBLDhDQUFBRDtnQkFBQSxXQUFBQzs7ZUFBQSxPQUFBOzt3QkFBQWg5Qzt3QkFBQTA4Qzt3QkFBQUQ7O2NBQUEsT0FBQTtvREFBQXo4QyxrQkFBQXk4Qzs7aUJBQUFwUztnQkFBQUEsbUJBQUFBO2NBQUE7ZUFBQUksV0FBQUo7ZUFBQTRTLFdBQUEsaUNBQUF4UztjQUFBLFdBQUF3Uzs7YUFBQSxPQUFBOztzQkFBQWo5QztzQkFBQTA4QztzQkFBQUQ7O1lBQUEsT0FBQTtrREFBQXo4QyxrQkFBQXk4Qzs7V0FBQSxPQUFBO2lEQUFBejhDLGtCQUFBeThDOztVQUFBLE9BQUE7Z0RBQUF6OEMsa0JBQUF5OEM7O1NBQUEsT0FBQTsrQ0FBQXo4QyxrQkFBQXk4Qzs7UUFBQSxPQUFBOzhDQUFBejhDLGtCQUFBeThDOztPQUFBLE9BQUE7NkNBQUF6OEMsa0JBQUF5OEM7O01BQUEsT0FBQTs0Q0FBQXo4QyxrQkFBQXk4Qzs7S0FBQSxPQUFBOzJDQUFBejhDLGtCQUFBeThDOztJQUFBLE9BQUEsd0NBQUF6OEMsa0JBQUF5OEM7R0FZdUI7WUFadkJTO0lBQUE7OztRQUNJOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBO2dCQUNBOzs7O09BQ0E7UUFBQTFjO1FBQUFDLFdBdEJKMGIsK0JBc0JJM2I7T0FBQSx3QkFBQUM7O09BQ0E7UUFBQW5GO1FBQUE2aEIsV0FBQSw4Q0FBQTdoQjtPQUFBLHdCQUFBNmhCOztPQUNBO1FBQUFqNEM7UUFBQUMsV0FBQSxpQ0FBQUQ7T0FBQSx3QkFBQUM7O0dBQW1CO1lBWnZCaTRDLDBCQUFBcjdDO0lBQUEsVUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7Ozs7O09BQUEsT0FBQSw4Q0FBQTlCLFVBQUE4Qjs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBOUIsVUFBQThCOzs7Ozs7U0FBQXlFO3dDQUFBQTs7O2NBQUFPO2FBQUFBLG1CQUFBQTtXQUFBO1lBQUFDLE9BQUFEO1lBQUFFLE9BWkFtMUMsaUNBWUFwMUM7V0FBQSxXQUFBQzs7VUFBQSxPQUFBO3NEQUFBaEgsVUFBQXVHLEtBQUF6RTs7bUNBQUF5RTtjQUFBVTthQUFBQSxtQkFBQUE7V0FBQTtZQUFBQyxPQUFBRDtZQUFBRSxPQUFBLDhDQUFBRDtXQUFBLFdBQUFDOztVQUFBLE9BQUE7c0RBQUFuSCxVQUFBdUcsS0FBQXpFOzttQ0FBQXlFOztvQkFBQTt3REFBQXZHLFVBQUE4Qjs7bUNBQUF5RTtjQUFBQzthQUFBQSxpQkFBQUE7V0FBQTtZQUFBQyxLQUFBRDtZQUFBRSxPQUFBLGlDQUFBRDtXQUFBLFdBQUFDOztVQUFBLE9BQUE7c0RBQUExRyxVQUFBdUcsS0FBQXpFOzttQ0FBQXlFOztvQkFBQTt3REFBQXZHLFVBQUE4Qjs7bUNBQUF5RTs7b0JBQUE7d0RBQUF2RyxVQUFBOEI7Ozs7bUNBQUF5RTs7b0JBQUE7d0RBQUF2RyxVQUFBOEI7O21DQUFBeUU7O29CQUFBO3dEQUFBdkcsVUFBQThCOzttQ0FBQXlFOztvQkFBQTt3REFBQXZHLFVBQUE4Qjs7bUNBQUF5RTs7b0JBQUE7d0RBQUF2RyxVQUFBOEI7O21DQUFBeUU7O29CQUFBO3dEQUFBdkcsVUFBQThCOzttQ0FBQXlFOztvQkFBQTt3REFBQXZHLFVBQUE4Qjs7Ozs7UUFBQSxPQUFBLDhDQUFBOUIsVUFBQThCOzs7O0lBQUEsT0FBQSw4Q0FBQTlCLFVBQUE4QjtHQVl1QjtZQVp2QnM3QztJQUFBOzs7UUFDSTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTtnQkFDQTs7OztPQUNBLElBQUEzMkMsZUFBQUMsT0F0QkowMUMsK0JBc0JJMzFDO09BQUEsbUNBQUFDOztPQUNBO1FBQUFRO1FBQUFDLE9BQUEsOENBQUFEO09BQUEsbUNBQUFDOztPQUNBLElBQUFKLGlCQUFBQyxPQUFBLGlDQUFBRDtPQUFBLG1DQUFBQzs7R0FBbUI7WUFFdkJxMkMsa0JBQ0E3N0M7SUFBQTs7ZUFBQSw4QkFBQUE7ZUFBQSw4QkFBQUE7UUFEQXNDO0lBQ0EsK0JBQUF0QztJQURBLFdBRWdCLCtCQURoQkEsV0FEQXNDO0lBQUEsT0FBQSwrQkFDQXRDO0dBR2U7WUFKZjg3QyxvQkFDQXBrRDtJQUFBLE9BQUEsb0NBREFta0QsbUJBQ0Fua0Q7R0FHZTtHQUhmLFNBQUFxa0QsdUJBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBLE9BQUE7OENBQUFqQyxrQkFBQWlDOztPQUFBOztNQUFBOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQWpDLGtCQUFBaUM7OztNQUFBLE9BQUE7NENBQUFqQyxrQkFBQWlDO1NBQUFDOzs2QkFBQUE7OzhCQUFBQTsrQkFBQUE7a0NBQUFBO2tDQUFBQTtnQ0FBQUE7O1dBQUFDO1VBQUFBLG1CQUFBQTtRQUFBO1NBQUF6aUIsV0FBQXlpQjtTQUFBNVMsV0FBQSw0QkFBQTdQO1FBQUEsV0FBQTZQOztPQUFBLE9BQUE7O2dCQUFBeVE7Z0JBQUFrQztnQkFBQUQ7O01BQUEsT0FBQTs0Q0FBQWpDLGtCQUFBaUM7O0tBQUEsT0FBQTsyQ0FBQWpDLGtCQUFBaUM7O0lBQUEsT0FBQSx3Q0FBQWpDLGtCQUFBaUM7R0FHZTtZQUhmRztJQUFBO0lBQ0ksSUFBQTFTLHFCQUFBL1AsV0FBQSw0QkFBQStQO0lBQUEseUJBQUEvUDtHQUVXO0dBSGYsU0FBQTBpQix5QkFBQTk3QztJQUFBLFVBQUFBO2dCQUFBQTs7Z0NBQUFBO09BQUEsT0FBQSw4Q0FBQTVCLFVBQUE0Qjs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBNUIsVUFBQTRCOzs7OztZQUFBeUU7a0NBQUFBOzttQkFBQTt1REFBQXJHLFVBQUE0Qjs7a0NBQUF5RTs7bUJBQUE7dURBQUFyRyxVQUFBNEI7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUE7V0FBQUMsS0FBQUQ7V0FBQUUsT0FBQSxxREFBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBeEcsVUFBQXFHLEtBQUF6RTs7OztRQUFBLE9BQUEsOENBQUE1QixVQUFBNEI7Ozs7SUFBQSxPQUFBLDhDQUFBNUIsVUFBQTRCO0dBR2U7WUFIZis3QztJQUFBO0lBQ0k7S0FBQXAzQztLQUFBQyxPQUFBLG9EQUFBRDtJQUFBLG9DQUFBQztHQUVXO1lBRWZvM0MsU0FDQXQ4QztJQUFBLE9BQUEsOEJBQUFBO0dBQ1E7WUFGUnU4QyxXQUNBN2tEO0lBQUEsT0FBQSxxQ0FEQTRrRCxVQUNBNWtEO0dBQ1E7R0FEUixTQUFBOGtELGNBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7TUFBQTs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUFqZixrQkFBQWlmOzs7TUFBQSxPQUFBOzRDQUFBamYsa0JBQUFpZjs7Ozs7O0tBQUEsT0FBQTsyQ0FBQWpmLGtCQUFBaWY7O0lBQUEsT0FBQSx3Q0FBQWpmLGtCQUFBaWY7R0FDUTtZQURSQyxxQkFDSSxZQUFJO0dBRFIsU0FBQUMsZ0JBQUFyOEM7SUFBQSxVQUFBQSxxQ0FBQUE7Z0JBQUFBOztNQUFBLE9BQUEsOENBQUExQixVQUFBMEI7Ozs7Ozs7a0JBQUE7c0RBQUExQixVQUFBMEI7Ozs7T0FBQSxPQUFBLDhDQUFBMUIsVUFBQTBCOzs7SUFBQSxPQUFBLDhDQUFBMUIsVUFBQTBCO0dBQ1E7WUFEUnM4Qyx1QkFDSSxZQUFJOztJQUVSQztJQUFBQzs7S0FBQUQ7Y0FDQTc4QztNQUFBO09BQUEsT0FBQSw4QkFBQUE7VUFEQXNDO01BQ0EsK0JBQUF0QztNQUxBczhDLFNBS0F0OEMsS0FEQXNDO01BQUEsT0FBQSwrQkFDQXRDO0tBRW9COztLQUhwQjg4QztjQUNBcGxEO01BQUEsT0FBQSxxQ0FEQW1sRCxpQkFDQW5sRDtLQUVvQjtZQUZwQnFsRCxxQkFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O09BQUEsT0FBQTs2Q0FBQWhELGtCQUFBZ0Q7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBaEQsa0JBQUFnRDs7O01BQUEsT0FBQTs0Q0FBQWhELGtCQUFBZ0Q7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQUM7U0FBQUEsbUJBQUFBO09BQUEsSUFBQXppQixXQUFBeWlCLGtCQUFBQyxXQUpBWCxjQUlBL2hCO09BQUEsV0FBQTBpQjs7TUFBQSxPQUFBOztlQUFBbkQ7ZUFBQWlEO2VBQUFEOztLQUFBLE9BQUE7MkNBQUFoRCxrQkFBQWdEOztJQUFBLE9BQUEsd0NBQUFoRCxrQkFBQWdEO0dBRW9CO1lBRnBCSTtJQUFBLFlBRUk7SUFEQSxJQUFBQyxxQkFBQTNpQixXQUxKZ2lCLGNBS0lXO0lBQUEseUJBQUEzaUI7R0FDZ0I7WUFGcEI0aUIsdUJBQUFoOUM7SUFBQSxVQUFBQTtnQkFBQUE7O2dDQUFBQTtPQUFBLE9BQUEsOENBQUF4QixVQUFBd0I7OztpQkFBQUE7O09BQUEsT0FBQSw4Q0FBQXhCLFVBQUF3Qjs7Ozs7WUFBQXlFO2tDQUFBQTs7bUJBQUE7dURBQUFqRyxVQUFBd0I7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUEsSUFBQUMsS0FBQUQsZ0JBQUFFLE9BSkF5M0MsZ0JBSUExM0M7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBcEcsVUFBQWlHLEtBQUF6RTs7OztRQUFBLE9BQUEsOENBQUF4QixVQUFBd0I7Ozs7SUFBQSxPQUFBLDhDQUFBeEIsVUFBQXdCO0dBRW9CO1lBRnBCaTlDO0lBQUEsWUFFSTtJQURBLElBQUF0NEMsZUFBQUMsT0FMSjAzQyxnQkFLSTMzQztJQUFBLG9DQUFBQztHQUNnQjs7SUFFcEJzNEM7SUFBQUM7O0tBQUFEO2NBQ0F4OUM7TUFBQTs7aUJBQUEsOEJBQUFBO2lCQUFBLDhCQUFBQTs7V0FEQXNDO09BQ0EsK0JBQUF0QztPQURBLFdBSXdCLCtCQUh4QkEsWUFEQXNDO09BQUEsT0FBQSwrQkFDQXRDOztVQURBdUM7TUFDQSwrQkFBQXZDO01BREEsV0FBQSxvQ0FDQUEsTUFEQXVDO01BQUEsT0FBQSwrQkFDQXZDO0tBSThCOztLQUw5Qnk5QztjQUNBL2xELEdBQUEsT0FBQSxxQ0FEQThsRCxhQUNBOWxELEdBSThCO0dBSjlCLFNBQUFnbUQsaUJBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7Ozs7OztTQUFBLE9BQUE7K0NBQUExRCxrQkFBQTBEOztRQUFBOztPQUFBOztNQUFBLE9BQUE7NENBQUExRCxrQkFBQTBEOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQTFELGtCQUFBMEQ7OztNQUFBLE9BQUE7NENBQUExRCxrQkFBQTBEO1NBQUFDOzs2QkFBQUE7OzhCQUFBQTs7K0JBQUFBO2dDQUFBQTttQ0FBQUE7bUNBQUFBO21DQUFBQTtpQ0FBQUE7O1lBQUFDO1dBQUFBLG1CQUFBQTtTQUFBO1VBQUFuNUMsV0FBQW01QztVQUFBbDVDLFdBQUEsMkJBQUFEO1NBQUEsV0FBQUM7O1FBQUEsT0FBQTs7aUJBQUFzMUM7aUJBQUEyRDtpQkFBQUQ7O09BQUEsT0FBQTs2Q0FBQTFELGtCQUFBMEQ7O01BQUEsT0FBQTs0Q0FBQTFELGtCQUFBMEQ7O1NBQUFHO1FBQUFBLG1CQUFBQTtNQUFBO09BQUFDLFdBQUFEO09BQUFFLFdBQUEsb0NBQUFEO01BQUEsV0FBQUM7O0tBQUEsT0FBQTs7Y0FBQS9EO2NBQUEyRDtjQUFBRDs7SUFBQSxPQUFBLHdDQUFBMUQsa0JBQUEwRDtHQUk4QjtZQUo5Qk07SUFBQTs7S0FHSSxJQUFBQyxxQkFBQUMsV0FBQSwyQkFBQUQ7S0FBQSx5QkFBQUM7O0lBQ0E7S0FBQUM7S0FBQUMsV0FBQSxvQ0FBQUQ7SUFBQSx5QkFBQUM7R0FBMEI7R0FKOUIsU0FBQUMsbUJBQUFoK0M7SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7T0FBQSxPQUFBLDhDQUFBdEIsVUFBQXNCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUF0QixVQUFBc0I7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQVU7WUFBQUEsbUJBQUFBO1VBQUE7V0FBQUMsT0FBQUQ7V0FBQUUsT0FBQSxvQ0FBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBM0csVUFBQStGLEtBQUF6RTs7a0NBQUF5RTs7bUJBQUE7dURBQUEvRixVQUFBc0I7O2tDQUFBeUU7O21CQUFBO3VEQUFBL0YsVUFBQXNCOztrQ0FBQXlFO2FBQUFDO1lBQUFBLGlCQUFBQTtVQUFBO1dBQUFDLEtBQUFEO1dBQUFFLE9BQUEscURBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQWxHLFVBQUErRixLQUFBekU7Ozs7UUFBQSxPQUFBLDhDQUFBdEIsVUFBQXNCOzs7O0lBQUEsT0FBQSw4Q0FBQXRCLFVBQUFzQjtHQUk4QjtZQUo5QmkrQztJQUFBOztLQUdJO01BQUF0NUM7TUFBQUMsT0FBQSxvREFBQUQ7S0FBQSxvQ0FBQUM7O0lBQ0EsSUFBQVEsaUJBQUFDLE9BQUEsb0NBQUFEO0lBQUEsb0NBQUFDO0dBQTBCO1lBRTlCNjRDLG9CQUNBeCtDO0lBQUE7Y0FBQSw4QkFBQUE7Y0FBQSw4QkFBQUE7R0FFVTtZQUhWeStDLHNCQUNBL21EO0lBQUEsT0FBQSxxQ0FEQThtRCxxQkFDQTltRDtHQUVVO0dBRlYsU0FBQWduRCx5QkFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBekUsa0JBQUF5RTs7O01BQUEsT0FBQTs0Q0FBQXpFLGtCQUFBeUU7Ozs7Ozs7O01BQUEsT0FBQTs0Q0FBQXpFLGtCQUFBeUU7O0tBQUEsT0FBQTsyQ0FBQXpFLGtCQUFBeUU7O0lBQUEsT0FBQSx3Q0FBQXpFLGtCQUFBeUU7R0FFVTtZQUZWQyxnQ0FBQSwyQkFFVTtHQUZWLFNBQUFDLDJCQUFBditDO0lBQUEsVUFBQUEscUNBQUFBO2dCQUFBQTs7TUFBQSxPQUFBLDhDQUFBcEIsVUFBQW9COzs7Ozs7OztrQkFBQTtzREFBQXBCLFVBQUFvQjs7OztrQkFBQTtzREFBQXBCLFVBQUFvQjs7OztPQUFBLE9BQUEsOENBQUFwQixVQUFBb0I7OztJQUFBLE9BQUEsOENBQUFwQixVQUFBb0I7R0FFVTtZQUZWdytDLGtDQUFBLDJCQUVVOztJQUVWQztJQUFBQzs7S0FBQUQ7Y0FDQS8rQztNQUFBLElBREFzQztNQUNBLCtCQUFBdEM7TUFEQSxXQUFBLGlDQUNBQSxNQURBc0M7TUFBQSxPQUFBLCtCQUNBdEM7S0FDcUI7O0tBRnJCZy9DO2NBQ0F0bkQ7TUFBQSxPQUFBLHFDQURBcW5ELGtCQUNBcm5EO0tBQ3FCO0dBRHJCLFNBQUF1bkQsc0JBQUFDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7TUFBQSxPQUFBOzRDQUFBL0Usa0JBQUErRTs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUEvRSxrQkFBQStFOzs7TUFBQSxPQUFBOzRDQUFBL0Usa0JBQUErRTtTQUFBQzs7NEJBQUFBOytCQUFBQTs7U0FBQUM7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQXJlLFdBQUEsaUNBQUFzZTtNQUFBLFdBQUF0ZTs7S0FBQSxPQUFBOztjQUFBb1o7Y0FBQWdGO2NBQUFEOztJQUFBLE9BQUEsd0NBQUEvRSxrQkFBQStFO0dBQ3FCO1lBRHJCSTtJQUFBO0tBQ0lDO0tBQUFDLFdBQUEsaUNBQUFEO0lBQUEseUJBQUFDO0dBQWlCO0dBRHJCLFNBQUFDLHdCQUFBbi9DO0lBQUEsVUFBQUE7Z0JBQUFBOztnQ0FBQUE7T0FBQSxPQUFBLDhDQUFBbEIsVUFBQWtCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFsQixVQUFBa0I7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUE7V0FBQUMsS0FBQUQ7V0FBQUUsT0FBQSxpQ0FBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBOUYsVUFBQTJGLEtBQUF6RTs7OztRQUFBLE9BQUEsOENBQUFsQixVQUFBa0I7Ozs7SUFBQSxPQUFBLDhDQUFBbEIsVUFBQWtCO0dBQ3FCO1lBRHJCby9DO0lBQUEsSUFDSXo2QyxlQUFBQyxPQUFBLGlDQUFBRDtJQUFBLG9DQUFBQztHQUFpQjs7SUFFckJ5NkM7SUFBQUM7O0tBQUFEO2NBQ0EzL0M7TUFBQTtPQUFBLE9BQUEsOEJBQUFBOztXQURBc0M7T0FDQSwrQkFBQXRDO09BaENBNjdDLGtCQWdDQTc3QyxLQURBc0M7T0FBQSxPQUFBLCtCQUNBdEM7O1VBREF1QztNQUNBLCtCQUFBdkM7TUFEQSxXQUFBLFdBSkErK0Msa0JBS0EvK0MsTUFEQXVDO01BQUEsT0FBQSwrQkFDQXZDO0tBR3lCOztLQUp6QjQvQztjQUNBbG9EO01BQUEsT0FBQSxxQ0FEQWlvRCxnQkFDQWpvRDtLQUd5QjtZQUh6Qm1vRCxvQkFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O1FBQUE7O09BQUEsT0FBQTs2Q0FBQTFGLGtCQUFBMEY7O01BQUEsT0FBQTs0Q0FBQTFGLGtCQUFBMEY7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBMUYsa0JBQUEwRjs7O01BQUEsT0FBQTs0Q0FBQTFGLGtCQUFBMEY7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7T0FBQSxPQUFBOzZDQUFBM0Ysa0JBQUEwRjs7VUFBQUU7U0FBQUEsbUJBQUFBO09BQUE7UUFBQUMsV0FBQUQ7UUFBQXJlLFdBL0JBb2EsdUJBK0JBa0U7T0FBQSxXQUFBdGU7O01BQUEsT0FBQTs7ZUFBQXlZO2VBQUEyRjtlQUFBRDs7U0FBQUk7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQUUsV0FKQW5CLHNCQUlBa0I7TUFBQSxXQUFBQzs7S0FBQSxPQUFBOztjQUFBaEc7Y0FBQTJGO2NBQUFEOztJQUFBLE9BQUEsd0NBQUExRixrQkFBQTBGO0dBR3lCO1lBSHpCTztJQUFBLDhCQUNJOztLQUNBLElBQUFDLHFCQUFBNWQsV0FqQ0p5Wix1QkFpQ0ltRTtLQUFBLHlCQUFBNWQ7O0lBQ0EsSUFBQTZkLHFCQUFBQyxXQVBKbEIsc0JBT0lpQjtJQUFBLHlCQUFBQztHQUFxQjtZQUh6QkMsc0JBQUFuZ0Q7SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7T0FBQSxPQUFBLDhDQUFBaEIsVUFBQWdCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFoQixVQUFBZ0I7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQVU7WUFBQUEsbUJBQUFBO1VBQUEsSUFBQUMsT0FBQUQsa0JBQUFFLE9BSkE4NUMsd0JBSUEvNUM7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBckcsVUFBQXlGLEtBQUF6RTs7a0NBQUF5RTthQUFBQztZQUFBQSxpQkFBQUE7VUFBQSxJQUFBQyxLQUFBRCxnQkFBQUUsT0EvQkFrM0MseUJBK0JBbjNDO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQTVGLFVBQUF5RixLQUFBekU7O2tDQUFBeUU7O21CQUFBO3VEQUFBekYsVUFBQWdCOzs7O1FBQUEsT0FBQSw4Q0FBQWhCLFVBQUFnQjs7OztJQUFBLE9BQUEsOENBQUFoQixVQUFBZ0I7R0FHeUI7WUFIekJvZ0Q7SUFBQSw4QkFDSTs7S0FDQSxJQUFBejdDLGVBQUFDLE9BakNKbTNDLHlCQWlDSXAzQztLQUFBLG9DQUFBQzs7SUFDQSxJQUFBUSxpQkFBQUMsT0FQSis1Qyx3QkFPSWg2QztJQUFBLG9DQUFBQztHQUFxQjs7SUFFekJ5UTtJQUFBQzs7S0FBQUQ7Y0FDQXBXO01BQUE7OztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBO2tCQUFBLE9BQUEsOEJBQUFBOzs7O2FBREFzQztTQUNBLCtCQUFBdEM7U0FEQSxXQUFBLFdBcERBNjZDLG9CQXFEQTc2QyxNQURBc0M7U0FBQSxPQUFBLCtCQUNBdEM7O2FBREF1QztTQUNBLCtCQUFBdkM7U0FEQSxXQUFBLFdBdEJBdzlDLGFBdUJBeDlDLE1BREF1QztTQUFBLE9BQUEsK0JBQ0F2Qzs7YUFEQXdDO1NBQ0EsK0JBQUF4QztTQURBLFdBQUEsMENBQ0FBLE1BREF3QztTQUFBLE9BQUEsK0JBQ0F4Qzs7YUFEQXlDO1NBQ0EsK0JBQUF6QztTQURBLFdBUWlCLCtCQVBqQkEsWUFEQXlDO1NBQUEsT0FBQSwrQkFDQXpDOztTQUFBLCtCQUFBQTtTQVVrQiw4QkFWbEJBO1NBREEsT0FBQSwrQkFDQUE7O2FBREEwQztTQUNBLCtCQUFBMUM7WUFEQTBDO2NBWW9CaEwsSUFacEJnTDtVQVlvQiw4QkFYcEIxQztVQVdvQixXQUFPLCtCQVgzQkEsWUFXb0J0STtVQUFBLDhCQVhwQnNJOzs7VUFXb0IsOEJBWHBCQTtTQURBLE9BQUEsK0JBQ0FBOzthQURBMkM7U0FDQSwrQkFBQTNDO1NBREEsV0FBQSxtQ0FDQUEsTUFEQTJDO1NBQUEsT0FBQSwrQkFDQTNDOzthQURBMmdEO1NBQ0EsK0JBQUEzZ0Q7U0FEQSxXQWM2QiwrQkFiN0JBLFlBREEyZ0Q7U0FBQSxPQUFBLCtCQUNBM2dEOztTQUFBLCtCQUFBQTtTQWV5Qiw4QkFmekJBO1NBREEsT0FBQSwrQkFDQUE7O2FBREE0Z0Q7U0FDQSwrQkFBQTVnRDtZQURBNGdEO2NBaUIyQmowQyxNQWpCM0JpMEM7VUFpQjJCLDhCQWhCM0I1Z0Q7VUFnQjJCLFdBQU8sK0JBaEJsQ0EsWUFnQjJCMk07VUFBQSw4QkFoQjNCM007OztVQWdCMkIsOEJBaEIzQkE7U0FEQSxPQUFBLCtCQUNBQTs7YUFEQTZnRDtTQUNBLCtCQUFBN2dEO1NBREEsV0FrQnVCLCtCQWpCdkJBLFlBREE2Z0Q7U0FBQSxPQUFBLCtCQUNBN2dEOzthQURBOGdEO1NBQ0EsK0JBQUE5Z0Q7U0FEQSxXQUFBLGlDQUNBQSxNQURBOGdEO1NBQUEsT0FBQSwrQkFDQTlnRDs7YUFEQStnRDtTQUNBLCtCQUFBL2dEO1NBREEsV0FBQSw4QkFDQUEsTUFEQStnRDtTQUFBLE9BQUEsK0JBQ0EvZ0Q7O2FBREFnaEQ7U0FDQSwrQkFBQWhoRDtTQWhCQXcrQyxvQkFnQkF4K0MsS0FEQWdoRDtTQUFBLE9BQUEsK0JBQ0FoaEQ7O2FBREFpaEQ7U0FDQSwrQkFBQWpoRDtTQURBLFdBQUEsV0EzQkE2OEMsaUJBNEJBNzhDLE1BREFpaEQ7U0FBQSxPQUFBLCtCQUNBamhEOzthQURBa2hEO1NBQ0EsK0JBQUFsaEQ7U0FEQSxXQUFBLDBDQUNBQSxNQURBa2hEO1NBQUEsT0FBQSwrQkFDQWxoRDs7YUFEQTRNLGVBQUF1MEM7U0FDQSwrQkFBQW5oRDtTQURBLFdBQUEsMENBQ0FBLE1BREFtaEQ7U0FDQSwrQkFBQW5oRDtTQXRDQTY3QyxrQkFzQ0E3N0MsS0FEQTRNO1NBQUEsT0FBQSwrQkFDQTVNOzthQURBb2hEO1NBQ0EsK0JBQUFwaEQ7U0FEQSxXQUFBLCtCQUNBQSxNQURBb2hEO1NBQUEsT0FBQSwrQkFDQXBoRDs7YUFEQXFoRDtTQUNBLCtCQUFBcmhEO1NBREEsV0FBQSx1Q0FDQUEsTUFEQXFoRDtTQUFBLE9BQUEsK0JBQ0FyaEQ7O0tBaUNnQzs7S0FsQ2hDcVcsZUFDQTNlLEdBQUEsT0FBQSxxQ0FEQTBlLElBQ0ExZSxHQWlDZ0M7WUFqQ2hDNGUsVUFBQWdyQztJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBQTs7aUNBQUEsT0FBQTt1RUFBQWpILGtCQUFBaUg7O2dDQUFBOzsrQkFBQSxPQUFBO3FFQUFBakgsa0JBQUFpSDs7OEJBQUE7OzZCQUFBLE9BQUE7bUVBQUFqSCxrQkFBQWlIOzs0QkFBQSxPQUFBO2tFQUFBakgsa0JBQUFpSDs7MkJBQUEsT0FBQTtpRUFBQWpILGtCQUFBaUg7OzBCQUFBOzt5QkFBQTs7d0JBQUE7O3VCQUFBLE9BQUE7NkRBQUFqSCxrQkFBQWlIOztzQkFBQSxPQUFBOzREQUFBakgsa0JBQUFpSDs7cUJBQUEsT0FBQTsyREFBQWpILGtCQUFBaUg7O29CQUFBLE9BQUE7MERBQUFqSCxrQkFBQWlIOzttQkFBQSxPQUFBO3lEQUFBakgsa0JBQUFpSDs7a0JBQUEsT0FBQTt3REFBQWpILGtCQUFBaUg7O2lCQUFBLE9BQUE7dURBQUFqSCxrQkFBQWlIOztnQkFBQSxPQUFBO3NEQUFBakgsa0JBQUFpSDs7ZUFBQSxPQUFBO3FEQUFBakgsa0JBQUFpSDs7Y0FBQSxPQUFBO29EQUFBakgsa0JBQUFpSDs7YUFBQTs7WUFBQSxPQUFBO2tEQUFBakgsa0JBQUFpSDs7V0FBQSxPQUFBO2lEQUFBakgsa0JBQUFpSDs7VUFBQTs7U0FBQTs7UUFBQSxPQUFBOzhDQUFBakgsa0JBQUFpSDs7T0FBQTs7TUFBQSxPQUFBOzRDQUFBakgsa0JBQUFpSDs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUFqSCxrQkFBQWlIOzs7TUFBQSxPQUFBOzRDQUFBakgsa0JBQUFpSDs7TUFBQUM7aUNBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpRUFBQUE7Ozs7K0RBQUFBOzs7OERBQUFBOzhEQUFBQTs7OERBQUFBOzhEQUFBQTs7OzsyREFBQUE7OzREQUFBQTs7OzZEQUFBQTs7NkRBQUFBOzZEQUFBQTs2REFBQUE7NkRBQUFBOzs7MERBQUFBOzs7O2lFQUFBQTs7NkRBQUFBOzZEQUFBQTs2REFBQUE7NkRBQUFBOzs7NERBQUFBOzs2REFBQUE7OzswREFBQUE7Ozs7OzsyREFBQUE7OzREQUFBQTs0REFBQUE7OzREQUFBQTs7NERBQUFBOzBEQUFBQTs7Ozs7O3lEQUFBQTs7OzswREFBQUE7Ozs4REFBQUE7Ozs2REFBQUE7OzhEQUFBQTs4REFBQUE7OzhEQUFBQTs7NERBQUFBOzs7NkRBQUFBOzZEQUFBQTs7NkRBQUFBOzZEQUFBQTs2REFBQUE7Ozs7MERBQUFBOzsyREFBQUE7Ozs7OzsrREFBQUE7Ozs4REFBQUE7OERBQUFBOzs4REFBQUE7OERBQUFBOzs7OzJEQUFBQTs7NERBQUFBOzs7NkRBQUFBOzs0REFBQUE7OzZEQUFBQTs2REFBQUE7NkRBQUFBOzZEQUFBQTs7OzBEQUFBQTs7Ozs7aUNBQUEsT0FBQTt1RUFBQWxILGtCQUFBaUg7O29DQUFBRTttQ0FBQUEsbUJBQUFBO2lDQUFBO2tDQUFBQyxXQUFBRDtrQ0FBQUUsV0FBQSw0QkFBQUQ7aUNBQUEsWUFBQUM7O2dDQUFBLE9BQUE7O3lDQUFBckg7eUNBQUFrSDt5Q0FBQUQ7OytCQUFBLE9BQUE7cUVBQUFqSCxrQkFBQWlIOztrQ0FBQUs7aUNBQUFBLG1CQUFBQTsrQkFBQTtnQ0FBQUMsV0FBQUQ7Z0NBQUFFO2tDQUFBLDBDQUFBRDsrQkFBQSxZQUFBQzs7OEJBQUEsT0FBQTs7dUNBQUF4SDt1Q0FBQWtIO3VDQUFBRDs7NkJBQUEsT0FBQTttRUFBQWpILGtCQUFBaUg7O2dDQUFBUTsrQkFBQUEsbUJBQUFBOzZCQUFBOzhCQUFBQyxXQUFBRDs4QkFBQUUsV0FBQSwrQkFBQUQ7NkJBQUEsWUFBQUM7OzRCQUFBLE9BQUE7O3FDQUFBM0g7cUNBQUFrSDtxQ0FBQUQ7OytCQUFBVzs4QkFBQUEsbUJBQUFBOzRCQUFBOzZCQUFBN2UsV0FBQTZlOzZCQUFBQzsrQkFBQSwwQ0FBQTllOzRCQUFBLFdBQUE4ZTs7MkJBQUEsT0FBQTs7b0NBQUE3SDtvQ0FBQWtIO29DQUFBRDs7OEJBQUFhOzZCQUFBQSxtQkFBQUE7MkJBQUE7NEJBQUFDLFdBQUFEOzRCQUFBRSxXQUFBLHVDQUFBRDsyQkFBQSxZQUFBQzs7MEJBQUEsT0FBQTs7bUNBQUFoSTttQ0FBQWtIO21DQUFBRDs7eUJBQUEsT0FBQTsrREFBQWpILGtCQUFBaUg7O3dCQUFBLE9BQUE7OERBQUFqSCxrQkFBQWlIOzt1QkFBQSxPQUFBOzZEQUFBakgsa0JBQUFpSDs7MEJBQUF6Zjt5QkFBQUEsbUJBQUFBO3VCQUFBO3dCQUFBRyxXQUFBSDt3QkFBQXlnQixXQXBEQXZILHdCQW9EQS9ZO3VCQUFBLFdBQUFzZ0I7O3NCQUFBLE9BQUE7OytCQUFBakk7K0JBQUFrSDsrQkFBQUQ7O3lCQUFBajVCO3dCQUFBQSxtQkFBQUE7c0JBQUE7dUJBQUFDLFdBQUFEO3VCQUFBRSxXQXRCQW0xQixpQkFzQkFwMUI7c0JBQUEsV0FBQUM7O3FCQUFBLE9BQUE7OzhCQUFBOHhCOzhCQUFBa0g7OEJBQUFEOzt3QkFBQWlCO29CQUFBLEdBQUFBO2dDQUFBQTs7c0JBQUE7dUJBQUFDO3VCQUFBQyxXQUFBRjt1QkFBQUc7eUJBQUEsMENBQUFEO3VCQUFBRSxXQXJDQTVHLHVCQXFDQXlHO3NCQUFBLFlBQUFFLFVBQUFDOzs7b0JBQUEsT0FBQTs7NkJBQUF0STs2QkFBQWtIOzZCQUFBRDs7dUJBQUFzQjtzQkFBQUEsbUJBQUFBO29CQUFBO3FCQUFBQyxXQUFBRDtxQkFBQUUsV0FBQSw0QkFBQUQ7b0JBQUEsV0FBQUM7O21CQUFBLE9BQUE7OzRCQUFBekk7NEJBQUFrSDs0QkFBQUQ7O3NCQUFBeUI7cUJBQUFBLG1CQUFBQTttQkFBQTtvQkFBQUMsV0FBQUQ7b0JBQUFyMEM7c0JBQUEsNkNBQUFzMEM7bUJBQUEsV0FBQXQwQzs7a0JBQUEsT0FBQTs7MkJBQUEyckM7MkJBQUFrSDsyQkFBQUQ7O3FCQUFBMkI7b0JBQUFBLG1CQUFBQTtrQkFBQTttQkFBQTkyQyxXQUFBODJDO21CQUFBNzJDLFdBQUEsbUNBQUFEO2tCQUFBLFdBQUFDOztpQkFBQSxPQUFBOzswQkFBQWl1QzswQkFBQWtIOzBCQUFBRDs7b0JBQUE0QjttQkFBQUEsbUJBQUFBO2lCQUFBO2tCQUFBQyxXQUFBRDtrQkFBQUUsV0FBQSxtQ0FBQUQ7aUJBQUEsV0FBQUM7O2dCQUFBLE9BQUE7O3lCQUFBL0k7eUJBQUFrSDt5QkFBQUQ7O21CQUFBK0I7a0JBQUFBLG1CQUFBQTtnQkFBQTtpQkFBQUMsV0FBQUQ7aUJBQUFFLFdBQUEsbUNBQUFEO2dCQUFBLFdBQUFDOztlQUFBLE9BQUE7O3dCQUFBbEo7d0JBQUFrSDt3QkFBQUQ7O2tCQUFBa0M7aUJBQUFBLG1CQUFBQTtlQUFBO2dCQUFBQyxXQUFBRDtnQkFBQUUsV0FBQSw4QkFBQUQ7ZUFBQSxZQUFBQzs7Y0FBQSxPQUFBOzt1QkFBQXJKO3VCQUFBa0g7dUJBQUFEOztpQkFBQTMwQjtnQkFBQUEsbUJBQUFBO2NBQUE7ZUFBQUMsV0FBQUQ7ZUFBQUUsV0FBQSxpQ0FBQUQ7Y0FBQSxZQUFBQzs7YUFBQSxPQUFBOztzQkFBQXd0QjtzQkFBQWtIO3NCQUFBRDs7WUFBQSxPQUFBO2tEQUFBakgsa0JBQUFpSDs7ZUFBQXFDO2NBQUFBLG1CQUFBQTtZQUFBO2FBQUFDLFdBQUFEO2FBQUFFLFdBM0JBOUcscUJBMkJBNkc7WUFBQSxZQUFBQzs7V0FBQSxPQUFBOztvQkFBQXhKO29CQUFBa0g7b0JBQUFEOztjQUFBd0M7YUFBQUEsbUJBQUFBO1dBQUE7WUFBQUMsV0FBQUQ7WUFBQUUsV0FmQXRGLHlCQWVBcUY7V0FBQSxZQUFBQzs7VUFBQSxPQUFBOzttQkFBQTNKO21CQUFBa0g7bUJBQUFEOztTQUFBLE9BQUE7K0NBQUFqSCxrQkFBQWlIOztRQUFBLE9BQUE7OENBQUFqSCxrQkFBQWlIOztXQUFBMkM7VUFBQUEsbUJBQUFBO1FBQUE7U0FBQUMsV0FBQUQ7U0FBQS9nQixXQUFBLDRCQUFBZ2hCO1FBQUEsV0FBQWhoQjs7T0FBQSxPQUFBOztnQkFBQW1YO2dCQUFBa0g7Z0JBQUFEOztNQUFBLE9BQUE7NENBQUFqSCxrQkFBQWlIOztTQUFBNkM7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQUUsV0FBQSw2Q0FBQUQ7TUFBQSxXQUFBQzs7S0FBQSxPQUFBOztjQUFBaEs7Y0FBQWtIO2NBQUFEOztJQUFBLE9BQUEsd0NBQUFqSCxrQkFBQWlIO0dBaUNnQztZQWpDaEN2b0M7SUFBQTs7O1FBRUk7O1FBSUE7O1FBR0E7O1FBVUE7O1FBQ0E7O1FBRUE7O1FBQ0E7O1FBQ0E7O1FBQ0E7Z0JBQ0E7Ozs7T0F2QkEsSUFBQXVyQyxxQkFBQUMsV0F2REo5SSx3QkF1REk2STtPQUFBLHlCQUFBQzs7T0FDQSxJQUFBQyxxQkFBQUMsV0ExQkp4RyxpQkEwQkl1RztPQUFBLHlCQUFBQzs7T0FDQTtRQUFBdHhDO1FBQUFDLFdBQUEsMENBQUFEO09BQUEseUJBQUFDOztPQUVBO1FBQUFFO1FBQUFDLFdBQUEsMkJBQUFEO09BQUEseUJBQUFDOztPQUdBO1FBQUFDO1FBQUFDLFdBQUEsbUNBQUFEO09BQUEseUJBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEsNENBQUFEO09BQUEseUJBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEsb0NBQUFEO09BQUEseUJBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEsMkJBQUFEO09BQUEseUJBQUFDOztPQUVBO1FBQUEyd0M7UUFBQUMsV0FBQSxtQ0FBQUQ7T0FBQSx5QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUMsV0FBQSw0Q0FBQUQ7T0FBQSx5QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUMsV0FBQSw0QkFBQUQ7T0FBQSx5QkFBQUM7O09BSUE7UUFBQUM7UUFBQUMsV0FBQSxpQ0FBQUQ7T0FBQSx5QkFBQUM7O09BTUE7UUFBQUM7UUFBQUMsV0FBQSw4QkFBQUQ7T0FBQSx5QkFBQUM7O09BQ0EsSUFBQUMscUJBQUFDLFdBM0NKekcseUJBMkNJd0c7T0FBQSx5QkFBQUM7O09BQ0EsSUFBQUMscUJBQUFDLFdBeERKbkkscUJBd0RJa0k7T0FBQSx5QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUMsV0FBQSwwQ0FBQUQ7T0FBQSx5QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSwwQ0FBQUQ7UUFBQUUsV0FwRUoxSix1QkFvRUl1SjtPQUFBLHlCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQyxXQUFBLGdDQUFBRDtPQUFBLHlCQUFBQzs7T0FDQTtRQUFBQztRQUFBQyxXQUFBLHVDQUFBRDtPQUFBLHlCQUFBQzs7R0FBNEI7WUFqQ2hDMXJDLFlBQUFqYTtJQUFBLFVBQUFBO2dCQUFBQTs7O2NBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFBQSxPQUFBLDhDQUFBZCxVQUFBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BQUEsT0FBQSw4Q0FBQWQsVUFBQWM7OztpQkFBQUE7O09BQUEsT0FBQSw4Q0FBQWQsVUFBQWM7Ozs7OztTQUFBeUU7d0NBQUFBOzs7O29CQUFBO3dEQUFBdkYsVUFBQWM7OzRDQUFBeUU7OztlQUFBZ0I7Y0FBQUEsbUJBQUFBO1lBQUE7YUFBQUMsT0FBQUQ7YUFBQUUsT0FBQSxxREFBQUQ7WUFBQSxZQUFBQzs7V0FBQSxPQUFBO3VEQUFBekcsVUFBQXVGLEtBQUF6RTs7b0NBQUF5RTs7cUJBQUE7eURBQUF2RixVQUFBYzs7b0NBQUF5RTtlQUFBSTtjQUFBQSxtQkFBQUE7WUFBQTthQUFBQyxPQUFBRDthQUFBRSxPQUFBLDBDQUFBRDtZQUFBLFlBQUFDOztXQUFBLE9BQUE7dURBQUE3RixVQUFBdUYsS0FBQXpFOztvQ0FBQXlFOztxQkFBQTt5REFBQXZGLFVBQUFjOztvQ0FBQXlFO2VBQUFPO2NBQUFBLG1CQUFBQTtZQUFBO2FBQUFDLE9BQUFEO2FBQUFFLE9BQUEsZ0NBQUFEO1lBQUEsWUFBQUM7O1dBQUEsT0FBQTt1REFBQWhHLFVBQUF1RixLQUFBekU7O29DQUFBeUU7ZUFBQVU7Y0FBQUEsbUJBQUFBO1lBQUE7YUFBQUMsT0FBQUQ7YUFBQUUsT0FBQSwwQ0FBQUQ7WUFBQSxXQUFBQzs7V0FBQSxPQUFBO3VEQUFBbkcsVUFBQXVGLEtBQUF6RTs7b0NBQUF5RTtlQUFBQztjQUFBQSxpQkFBQUE7WUFBQTthQUFBQyxLQUFBRDthQUFBRSxPQUFBLHVDQUFBRDtZQUFBLFlBQUFDOztXQUFBLE9BQUE7dURBQUExRixVQUFBdUYsS0FBQXpFOzs7O29DQUFBeUU7O3FCQUFBO3lEQUFBdkYsVUFBQWM7O29DQUFBeUU7O3FCQUFBO3lEQUFBdkYsVUFBQWM7O29DQUFBeUU7O3FCQUFBO3lEQUFBdkYsVUFBQWM7O29DQUFBeUU7ZUFBQW1oRDtjQUFBQSxtQkFBQUE7WUFBQTthQUFBQyxRQUFBRDthQUFBRSxRQXBEQXpLLDBCQW9EQXdLO1lBQUEsV0FBQUM7O1dBQUEsT0FBQTt1REFBQTVtRCxVQUFBdUYsS0FBQXpFOztvQ0FBQXlFO2VBQUFzaEQ7Y0FBQUEsbUJBQUFBO1lBQUEsSUFBQUMsUUFBQUQsa0JBQUFFLFFBdEJBakksbUJBc0JBZ0k7WUFBQSxXQUFBQzs7V0FBQSxPQUFBO3VEQUFBL21ELFVBQUF1RixLQUFBekU7O29DQUFBeUU7ZUFBQXloRDtXQUFBLEdBQUFBO3VCQUFBQTs7YUFBQTtjQUFBMTFDO2NBQUEyMUMsUUFBQUQ7Y0FBQUUsUUFBQSwwQ0FBQUQ7Y0FBQTExQyxPQXJDQXFyQyx5QkFxQ0F0ckM7YUFBQSxZQUFBNDFDLE9BQUEzMUM7OztXQUFBLE9BQUE7dURBQUF2UixVQUFBdUYsS0FBQXpFOztvQ0FBQXlFO2VBQUFhO2NBQUFBLG1CQUFBQTtZQUFBO2FBQUFDLE9BQUFEO2FBQUFFO2VBQUEscURBQUFEO1lBQUEsV0FBQUM7O1dBQUEsT0FBQTt1REFBQXRHLFVBQUF1RixLQUFBekU7Ozs7OzRDQUFBeUU7OztlQUFBNGhEO2NBQUFBLG9CQUFBQTs7YUFBQUMsUUFBQUQ7YUFBQUU7Ozs7aUJBQUFEO1lBQUEsV0FBQUM7O1dBQUEsT0FBQTt1REFBQXJuRCxVQUFBdUYsS0FBQXpFOztvQ0FBQXlFO2VBQUEraEQ7Y0FBQUEsb0JBQUFBO1lBQUE7YUFBQUMsUUFBQUQ7YUFBQUUsUUFBQSxpREFBQUQ7WUFBQSxXQUFBQzs7V0FBQSxPQUFBO3VEQUFBeG5ELFVBQUF1RixLQUFBekU7O29DQUFBeUU7ZUFBQWtpRDtjQUFBQSxvQkFBQUE7WUFBQTthQUFBQyxRQUFBRDthQUFBRSxRQUFBLGlEQUFBRDtZQUFBLFdBQUFDOztXQUFBLE9BQUE7dURBQUEzbkQsVUFBQXVGLEtBQUF6RTs7b0NBQUF5RTtlQUFBcWlEO2NBQUFBLG9CQUFBQTtZQUFBO2FBQUFDLFFBQUFEO2FBQUFFLFFBQUEsb0NBQUFEO1lBQUEsV0FBQUM7O1dBQUEsT0FBQTt1REFBQTluRCxVQUFBdUYsS0FBQXpFOztvQ0FBQXlFO2VBQUF3aUQ7Y0FBQUEsbUJBQUFBO1lBQUE7YUFBQUMsUUFBQUQ7YUFBQUUsUUFBQSw4QkFBQUQ7WUFBQSxZQUFBQzs7V0FBQSxPQUFBO3VEQUFBam9ELFVBQUF1RixLQUFBekU7O29DQUFBeUU7ZUFBQTJpRDtjQUFBQSxtQkFBQUE7WUFBQTthQUFBQyxRQUFBRDthQUFBRSxRQUFBLGlDQUFBRDtZQUFBLFlBQUFDOztXQUFBLE9BQUE7dURBQUFwb0QsVUFBQXVGLEtBQUF6RTs7b0NBQUF5RTs7cUJBQUE7eURBQUF2RixVQUFBYzs7OztvQ0FBQXlFO2VBQUE4aUQ7Y0FBQUEsb0JBQUFBO1lBQUE7YUFBQUMsUUFBQUQ7YUFBQUUsUUEzQkF6Syx1QkEyQkF3SztZQUFBLFlBQUFDOztXQUFBLE9BQUE7dURBQUF2b0QsVUFBQXVGLEtBQUF6RTs7b0NBQUF5RTtlQUFBaWpEO2NBQUFBLG9CQUFBQTtZQUFBO2FBQUFDLFFBQUFEO2FBQUFFLFFBZkFySiwyQkFlQW9KO1lBQUEsWUFBQUM7O1dBQUEsT0FBQTt1REFBQTFvRCxVQUFBdUYsS0FBQXpFOztvQ0FBQXlFOztxQkFBQTt5REFBQXZGLFVBQUFjOztvQ0FBQXlFOztxQkFBQTt5REFBQXZGLFVBQUFjOztvQ0FBQXlFO2VBQUFvakQ7Y0FBQUEsb0JBQUFBO1lBQUE7YUFBQUMsUUFBQUQ7YUFBQUU7ZUFBQSxxREFBQUQ7WUFBQSxXQUFBQzs7V0FBQSxPQUFBO3VEQUFBN29ELFVBQUF1RixLQUFBekU7O29DQUFBeUU7O3FCQUFBO3lEQUFBdkYsVUFBQWM7O29DQUFBeUU7ZUFBQXVqRDtjQUFBQSxvQkFBQUE7O2FBQUFDLFFBQUFEO2FBQUFFOzs7O2lCQUFBRDtZQUFBLFdBQUFDOztXQUFBLE9BQUE7dURBQUFocEQsVUFBQXVGLEtBQUF6RTs7Ozs7O1FBQUEsT0FBQSw4Q0FBQWQsVUFBQWM7Ozs7SUFBQSxPQUFBLDhDQUFBZCxVQUFBYztHQWlDZ0M7WUFqQ2hDd2E7SUFBQTs7O1FBRUk7O1FBSUE7O1FBR0E7O1FBVUE7O1FBQ0E7O1FBRUE7O1FBQ0E7O1FBQ0E7O1FBQ0E7Z0JBQ0E7Ozs7T0F2QkEsSUFBQTdWLGVBQUFDLE9BdkRKMDJDLDBCQXVESTMyQztPQUFBLG9DQUFBQzs7T0FDQSxJQUFBUSxpQkFBQUMsT0ExQko0NEMsbUJBMEJJNzRDO09BQUEsb0NBQUFDOztPQUNBO1FBQUFKO1FBQUFDLE9BQUEsMENBQUFEO09BQUEsb0NBQUFDOztPQUVBO1FBQUFKO1FBQUFDLE9BQUEsb0RBQUFEO09BQUEsb0NBQUFDOztPQUdBO1FBQUFXO1FBQUFDLE9BQUEsaURBQUFEO09BQUEsb0NBQUFDOzs7UUFDQUo7UUFBQUM7Ozs7WUFBQUQ7T0FBQSxvQ0FBQUM7O09BQ0E7UUFBQTJnRDtRQUFBQyxRQUFBLG9DQUFBRDtPQUFBLG9DQUFBQzs7T0FDQTtRQUFBSjtRQUFBQyxRQUFBLG9EQUFBRDtPQUFBLG9DQUFBQzs7T0FFQTtRQUFBSjtRQUFBQyxRQUFBLGlEQUFBRDtPQUFBLG9DQUFBQzs7O1FBQ0F1QjtRQUFBQzs7OztZQUFBRDtPQUFBLG9DQUFBQzs7T0FDQTtRQUFBSjtRQUFBQyxRQUFBLG9EQUFBRDtPQUFBLG9DQUFBQzs7T0FJQSxJQUFBSixrQkFBQUMsUUFBQSxpQ0FBQUQ7T0FBQSxvQ0FBQUM7O09BTUEsSUFBQUosa0JBQUFDLFFBQUEsOEJBQUFEO09BQUEsb0NBQUFDOztPQUNBLElBQUFKLGtCQUFBQyxRQTNDSmxJLDJCQTJDSWlJO09BQUEsb0NBQUFDOztPQUNBLElBQUFKLGtCQUFBQyxRQXhESnRKLHVCQXdESXFKO09BQUEsb0NBQUFDOztPQUNBO1FBQUEwQjtRQUFBQyxRQUFBLDBDQUFBRDtPQUFBLG9DQUFBQzs7T0FDQTtRQUFBMTNDO1FBQUFzM0M7UUFBQUMsUUFBQSwwQ0FBQUQ7UUFBQXIzQyxPQXBFSnNyQyx5QkFvRUl2ckM7T0FBQSxvQ0FBQXUzQyxXQUFBdDNDOztPQUNBLElBQUFrM0Msa0JBQUFDLFFBQUEsZ0NBQUFEO09BQUEsb0NBQUFDOztPQUNBO1FBQUFKO1FBQUFDLFFBQUEsdUNBQUFEO09BQUEsb0NBQUFDOztHQUE0Qjs7SUFHOUJwL0I7SUFBQUM7O0tBQUFEO2NBQ0Ezb0I7TUFBQTs7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7OztXQURBc0M7T0FDQSwrQkFBQXRDO09BREEsV0FBQSxvQ0FDQUEsTUFEQXNDO09BQUEsT0FBQSwrQkFDQXRDOztVQURBdUM7TUFDQSwrQkFBQXZDO01BREEsV0FPYywrQkFOZEEsWUFEQXVDO01BQUEsT0FBQSwrQkFDQXZDO0tBTXFCOztLQVByQjRvQjtjQUNBbHhCLEdBQUEsT0FBQSxxQ0FEQWl4QixNQUNBanhCLEdBTXFCO0dBTnJCLFNBQUFteEIsWUFBQTQvQjtJQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBQUE7O1VBQUE7O1NBQUEsT0FBQTsrQ0FBQW5PLGtCQUFBbU87O1FBQUE7O09BQUEsT0FBQTs2Q0FBQW5PLGtCQUFBbU87O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBbk8sa0JBQUFtTzs7O01BQUEsT0FBQTs0Q0FBQW5PLGtCQUFBbU87O01BQUFDO2lDQUFBQTs7Ozs7Ozs7Ozs7OztzQ0FBQUE7c0NBQUFBO3NDQUFBQTtzQ0FBQUE7b0NBQUFBOzs7O3VDQUFBQTtxQ0FBQUE7cUNBQUFBO3FDQUFBQTtxQ0FBQUE7bUNBQUFBOzs7VUFBQSxPQUFBO2dEQUFBcE8sa0JBQUFtTzs7U0FBQSxPQUFBOytDQUFBbk8sa0JBQUFtTzs7WUFBQUU7V0FBQUEsbUJBQUFBO1NBQUE7VUFBQUMsV0FBQUQ7VUFBQUUsV0FBQSw0QkFBQUQ7U0FBQSxXQUFBQzs7UUFBQSxPQUFBOztpQkFBQXZPO2lCQUFBb087aUJBQUFEOztPQUFBLE9BQUE7NkNBQUFuTyxrQkFBQW1POztVQUFBSztTQUFBQSxtQkFBQUE7T0FBQTtRQUFBQyxXQUFBRDtRQUFBRSxXQUFBLG9DQUFBRDtPQUFBLFdBQUFDOztNQUFBLE9BQUE7O2VBQUExTztlQUFBb087ZUFBQUQ7O0tBQUEsT0FBQTsyQ0FBQW5PLGtCQUFBbU87O0lBQUEsT0FBQSx3Q0FBQW5PLGtCQUFBbU87R0FNcUI7WUFOckJwK0I7SUFBQTs7O1FBQ0k7O1FBQ0E7O1FBQ0E7Z0JBQ0E7OztLQUNBO01BQUE0K0I7TUFBQUMsV0FBQSxvQ0FBQUQ7S0FBQSx5QkFBQUM7O0lBQ0EsSUFBQUMscUJBQUFDLFdBQUEsMkJBQUFEO0lBQUEseUJBQUFDO0dBQWlCO0dBTnJCLFNBQUFyK0IsY0FBQXpxQjtJQUFBLFVBQUFBO2dCQUFBQTs7aUJBQUFBOzs7OztPQUFBLE9BQUEsOENBQUFaLFVBQUFZOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFaLFVBQUFZOzs7OztZQUFBeUU7a0NBQUFBOzttQkFBQTt1REFBQXJGLFVBQUFZOztrQ0FBQXlFOzttQkFBQTt1REFBQXJGLFVBQUFZOztrQ0FBQXlFO2FBQUFVO1lBQUFBLG1CQUFBQTtVQUFBO1dBQUFDLE9BQUFEO1dBQUFFLE9BQUEscURBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQWpHLFVBQUFxRixLQUFBekU7O2tDQUFBeUU7O21CQUFBO3VEQUFBckYsVUFBQVk7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUE7V0FBQUMsS0FBQUQ7V0FBQUUsT0FBQSxvQ0FBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBeEYsVUFBQXFGLEtBQUF6RTs7a0NBQUF5RTs7bUJBQUE7dURBQUFyRixVQUFBWTs7OztRQUFBLE9BQUEsOENBQUFaLFVBQUFZOzs7O0lBQUEsT0FBQSw4Q0FBQVosVUFBQVk7R0FNcUI7WUFOckJnckI7SUFBQTs7O1FBQ0k7O1FBQ0E7O1FBQ0E7Z0JBQ0E7OztLQUNBLElBQUFybUIsZUFBQUMsT0FBQSxvQ0FBQUQ7S0FBQSxvQ0FBQUM7O0lBQ0E7S0FBQVE7S0FBQUMsT0FBQSxvREFBQUQ7SUFBQSxvQ0FBQUM7R0FBaUI7R0FSTjtJQUFBOztPQUNmZ2pCO09BQUFDO09BQ0FDO09BQUF3QjtPQUFBVTtPQUFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVNjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUtaKzlCO0lBQ0Y7Ozs7Ozs7YUFFTUM7U0FDSixVQURJQSwrQkFBQUEsYUFFUztTQVdNOztTQU9DOzthQXJCTkMsY0FBTSxPQUFBLGlDQUFOQTs7Ozs7Ozs7Ozs7S0FpRFU7O0lBZGY7R0Fjb0I7WUFFN0JDO0lBQ0Y7Ozs7Ozs7YUFFTUY7OztVQUNKLFVBRElBO1dBQ0osT0FESUE7d0JBQUFBO1VBb0JTOztTQUpYOztTQVdrQjs7YUE1Qk5DLGNBQU0sT0FBQSxpQ0FBTkE7Ozs7Ozs7Ozs7O0tBd0ROOztJQVpRO0dBWUo7WUFFWkU7SUFDRjs7Ozs7OztjQUNNSDtVQUNKLFVBRElBLCtCQUFBQSxhQUVTO1VBV007O2NBRVhJO1VBQ1IsVUFEUUEsa0NBQUFBO1dBRVk7VUFHUTs7Y0FzQmRIOzs7V0FDZCxVQURjQSxnQkFDZCxTQURjQTs7WUFDZCxPQURjQTs7MEJBQUFBOzs7Ozs7O1dBZ0JPOztVQUpQOzt5QkEzQmlCOzs7Ozs7Ozs7Ozs7O09BRGtDOzs7OztLQXdDakQ7O0lBekJUO0dBeUJjOzs7O09BelN6QmhQO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFDO09BV0FDO09BQUFDO09BQ0FDO09BQUFVO09BQUFFO09BQUFDO09BY0FDO09BQUFDO09BQ0FDO09BQUFJO09BQUFDO09BQUFDO09BS0FDO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BR0FDO09BQUFDO09BQ0FDO09BQUFLO09BQUFFO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFPO09BQUFLO09BQUFDO09BTUFDO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFLO09BQUFHO09BQUFDO09BR0FDO09BQUFDO09BQ0FDO09BQUFRO09BQUFJO09BQUFDO09BS0F0cUM7T0FBQUM7T0FDQUM7T0FBQXlDO09BQUF3QjtPQUFBTzs7O09BbURJdXVDO09BcURBRztPQTREQUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNwT0FFLCtCQUVFdjhCLE9BQ0F3OEI7SUFGRixJQUN1QzlrQixZQUFyQzFYLGFBQUNnSSxXQUFEaEk7aUJBS0cwWDtrQkFDQTNPO01BRUwsSUFBSWg0QixJQUZDZzRCO01BR0wsR0FSRXl6QjtPQVVlO1FBQVg1eUIsV0FBVyxpQ0FYZDVCLFVBQURoSTtRQVlPLFFBQUEsOEJBWk5nSSxhQVdHNEIsVUFIRjc0QjttQkFLUTtXQUNIMHJEO09BQWUsZUFBZkE7O01BR1A7Z0JBVEUxckQ7Z0JBV1U7aUJBQ1E7TUFFWCxjQUFBLDhCQWRQQTtvQkFlVTtVQW1CSDJyRDtNQWhCaUIsS0FBQSw4QkFnQmpCQTtPQUFlO21CQUFPLDJDQUF0QkE7O01BUlc7T0FBQSxJQUFBLG1DQTVCakIzekI7T0E2Qks0ekIsUUFBUSx1Q0EzQmQ1ckQ7TUE0QkU7a0JBQ1EsMkNBS0gyckQ7OEJBUERDO0tBVVI7S0F0Q0E7WUFBQSxpQ0FGR2psQixXQUxIMVgsVUFBQUE7S0FRRixPQUFBO0lBcUNFO0lBekNKO0tBQUEsTUFBQSxnQ0FKeUMwWDtLQUl6QyxNQUFBO0lBQUEsT0FBQTtHQTRDZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbERiNmtCOzs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ0xBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF3Q0FDLGVBQWtCL3JEO2lCQUdsQjNGO0tBQUs7TUFDQ2pCLElBQUksOEJBSlE0RyxLQUdsQjNGO01BRU0yeEQsTUFBSSwwQkFESjV5RCxnQ0FBQUE7S0FFSixnQkFESTR5RDtJQUVMO0lBSkQsT0FBQTs0REFIa0Joc0Q7R0FRbkI7R0FFYTtJQUFBLE1BVlorckQsZUF4Q0FEO0lBa0RBRyxZQUFZO0lBRVpDO1lBRUFMO0lBRkFLLFVBR007SUFDUixPQUFBO0dBQ0Q7WUFFR0M7SUFBcUIsR0FQckJEO0tBYWM7WUFiZEE7TUFhSUUsV0FBVztLQWJmRjtLQWVBLFVBQUEsa0NBRklFO0tBRUosT0FBQTs7SUFMQSxVQUFBO0lBQUEsT0FBQTtHQVFIOzs7VUF0RUdOLFVBd0NBQyxnQkFVQUUsV0FFQUMsTUFFQUwsT0FLQU07OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNyREFFLGFBR0U3bEI7SUFGRjtLQUNpQzhsQjtLQUFtQjFqQjtLQVk5QzFSO0tBWk9nUDtJQUdILEtBSHVCb21CO0tBK0N6QixPQUFBO0lBeENOO0tBRkdDLGtCQUw0QkQ7S0FNN0JyMEI7T0FDRixpQ0FGR3MwQixpQkFMUXJtQixTQUF1QzBDO0lBUXBELEtBRkkzUSxRQXVDTSxPQUFBO1FBcENIeU8sV0FISHpPLFdBSUVoNEIsSUFEQ3ltQztJQUVMLFNBQUkybEIsTUFBUXJzRCxLQUFPLE9BQUEsdUJBQVBBLEtBQTJCO0lBRXZDLFNBQUkrNEIsS0FBTzk0QixHQUFLLE9BQUEsbUNBQUxBLE1BQTJDO0lBQ3ZDLElBQVg2NEIsV0FBVyxpQ0FGWDVCLFVBWk9nUDs4QkFDWE07S0FlVSxPQUxONmxCLE1BS00sZ0NBTk5wc0Q7OEJBVEp1bUM7S0FnQlUsVUFBQSxvQ0FQTnZtQztLQU9NLE9BTk5vc0QsTUFNTTs7OEJBaEJWN2xCO0tBaUJVLFVBTE56TixLQUhBOTRCO0tBUU0sT0FQTm9zRCxNQU9NOzs4QkFqQlY3bEI7S0FtQkU7TUFBQSxNQVBFek4sS0FIQTk0QjtNQVVGO1FBQUE7VUFFRyxzQ0FWRGkzQixhQUVBNEI7S0FNRixPQVRFdXpCLE1BU0Y7OzhCQW5CRjdsQjtLQXlCaUI7TUFBWGdtQixXQUFXLGlDQWRidDFCLFVBWk9nUDtNQTJCVDtRQUFBLG1DQWZFaFAsYUFFQTRCLFVBWUUwekIsVUFoQkZ2c0Q7S0FpQkYsT0FoQkVvc0QsTUFnQkY7OzRCQTFCRjdsQjtLQTBDYSxPQWhDVDZsQixNQWdDUyxvREExQ2I3bEI7SUE4QmM7S0FBUmltQixRQUFRLG1DQXJCVnhzRDtLQXVCQSxNQXBCQTg0QixLQUhBOTRCO0tBc0JFcEc7T0FDRjtTQUFhLHNDQXJCYnE5QixhQUVBNEI7SUFvQkYsS0FISTJ6QixPQVNNLE9BN0JSSjtJQXlCTztLQURGSyxVQUpIRDtLQUtLLFFBQUEsaUNBREZDLFNBSEg3eUQ7Z0JBTVEsT0EzQlZ3eUQ7UUEwQk9NO0lBQWEsT0ExQnBCTixNQTBCb0IsZ0NBQWJNO0dBWWhCO21DQW5ER047Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7SUNxQ0VPO0lBQ0FDO0lBb0NKenNEO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBNUVFeXNEO0lBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkIrQjs7SUFsQlY7R0FrQmM7R0E3Qm5DO0lBQUE7O1lBeUNJQyxTQUFZQyxJQUNkLGlDQURjQSxJQUZaSCxZQUcwQztZQUUxQ0ksUUFBV2huQjtJQUFZLFNBQ3JCaW5CO0tBQW1CLE9BQUE7SUFBc0M7YUFDekRDLFFBQVdILElBQVF4akI7S0FDckIsZUFEcUJBLGlDQUFBQTtvQkFFVix3QkFGRXdqQixJQVBiSDtJQVM2QztJQUMvQyxhQUE4Q0csSUFBTSxPQUFBLFdBTHZDL21CLEdBS2lDK21CLElBQVc7SUFBWCxPQUFBOzhCQUgxQ0csY0FEQUQsYUFQRk47R0FZSDtZQUVHUSxJQUFPNW1CLEtBQWE2TTtJQUN0QixPQVRFNFo7c0JBU01EO2NBQ047ZUFBc0MsTUFidENELFNBWU1DO2VBQ0ssVUFGSnhtQjtlQUVJO2VBQWUsbUJBQUFBLEtBQVEsU0FBRTtjQUR0QyxPQUFBLHlDQURzQjZNO2FBRXNDO0dBQzNEO1lBRUMzNUMsSUFBTzhzQyxLQUFhUDtJQUFvQyxTQUN0RGluQixhQUFhLE9BQUEsa0NBQXFDO0lBQzlDLE9BZk5EO3NCQWVNRDtjQUF3QixVQWxCOUJELFNBa0JNQztjQUF5QyxPQUFBLHlCQUQ3Q0UsYUFEa0JqbkIsT0FBYk87YUFFK0M7R0FDekQ7WUFFRzZtQixRQUFXcG5CO0lBQWtDLFNBQzNDaW5CLGFBQWEsT0FBQSxrQ0FBeUM7SUFDbEQsT0FwQk5EO3NCQW9CTUQ7Y0FBNEIsVUF2QmxDRCxTQXVCTUM7Y0FBUixPQUFBLHlCQURJRSxtQkFEU2puQjthQUV1QztHQUNyRDtZQUVHcW5CLFVBQWFDO0lBQW1CLFNBQzlCTCxhQUFhLE9BQUEsa0NBQXVDO0lBQ2hELE9BekJORDtzQkF5Qk1EO2NBQXFDLFVBNUIzQ0QsU0E0Qk1DO2NBQXFDLE9BQUEsMEJBRHpDRSxZQURXSzthQUUyQztHQUMzRDtHQXZDUztJQUFBOzs7T0FPTlg7T0FDQUM7T0FFQUU7T0FHQUU7T0FRQUc7T0FLQTF6RDtPQUtBMnpEO09BS0FDO0lBT0pwMUM7SUFBQUM7O0tBQUFEO2NBQ0FwVztNQUFBLElBREE0TSxlQUFBdEs7TUFDUywrQkFBVHRDO01BREEsV0FBQSw4QkFDQUEsTUFEQXNDO01BQ1MsK0JBQVR0QztNQURBLFdBQUEsc0NBQ0FBLE1BREE0TTtNQUFBLE9BQUEsK0JBQ0E1TTtLQUEwQzs7S0FEMUNxVyxlQUNBM2UsR0FBQSxPQUFBLG9DQURBMGUsSUFDQTFlLEdBQTBDO0dBQTFDLFNBQUE2aUIsWUFBU2phO0lBQVQsVUFBU0EscUNBQUFBO2VBQUFBOzs7OztRQUFBd1E7UUFBQTdMO1FBQUFDLHFDQUFBRDtRQUFBOEwsNkNBQUFEO2tCQUFBNUwsTUFBQTZMOzs7O3lEQUFUelMsV0FBU2dDO0dBQWlDO1lBQTFDd2E7SUFBQTtLQUFTaEs7S0FBQTdMO0tBQUFDLHFDQUFBRDtLQUFBOEwsNkNBQUFEOzhCQUFBNUwsVUFBQTZMO0dBQWlDO0dBQTFDLFNBQUF1RixVQUFTNkg7SUFBVCxTQUFTQTtlQUFBQTs7OztPQUFBO1FBQUE0WjtRQUFBQztRQUFBQyxXQUFBLDhCQUFBRDtRQUFBRSxXQUFBLHNDQUFBSDtPQUFBLFdBQUFFLFVBQUFDOzs7O0lBQUEsT0FBQTswQ0FBVDM1QixxQkFBUzRmO0dBQWlDO1lBQTFDcEY7SUFBQTtLQUFTNGU7S0FBQUM7S0FBQTh6Qix5Q0FBQTl6QjtLQUFBK3pCLGlEQUFBaDBCO21CQUFBK3pCLGNBQUFDO0dBQWlDOztJQUUxQ0M7SUFBQUM7O0tBQUFEO2NBQ0E1ckQsS0FBU3RJO01BQUEsK0JBQVRzSTs7bUJBQVM4TSxLQUFBcFY7T0FBQSxHQUFBb1YsS0FBQSwrQkFBVDlNO09BQVMsV0FEVCxXQUhBb1csSUFJQXBXLE1BQVN0STtPQUFBO01BQU87TUFBUCxzQ0FBQUE7TUFBQSxPQUFBLCtCQUFUc0k7S0FBZ0I7O0tBRGhCNnJEO2NBQ0FuMEQsR0FBQSxPQUFBLG9DQURBazBELE1BQ0FsMEQsR0FBZ0I7R0FBaEIsU0FBQW8wRCxZQUFBajBEO0k7dURBSEEwaUIsYUFHQTFpQjs7WUFBQWswRCxZQUFBOXpEO0k7dURBSEE2aUIsYUFHQTdpQjs7WUFBQSt6RCxVQUFBQztJQUFBLE9BQUEsNEJBSEEzMUMsV0FHQTIxQztHQUFnQjtZQUFoQkMsVUFBQUM7SUFBQSxPQUFBLDRCQUhBcHpDLFdBR0FvekM7R0FBZ0I7WUFFWjkwRCxHQUFNKzBELFFBQWMsV0FDckIsbUNBRE9BLFFBRVQ7WUFFRzlhO0lBQU87S0FBTS82QztLQUFKODFEO0tBR1QsTUFaSnR6QyxjQVNhc3pDLElBQUk5MUQ7S0FHYixNQUFBO0tBREEsTUFBQSxrQ0FGUzgxRDtJQUdULE9BQUE7R0FDRDtHQWZVOzs7T0FDYmoyQztPQUFBQztPQUNBa0U7T0FBQU87T0FBQXhFO09BQUF5QztPQUVBNnlDO09BQUFDO09BQ0FDO09BQUFDO09BQUFDO09BQUFFO09BRUk3MEQ7T0FJQWk2QztZQU9GemEsU0FBVUo7O0tBR1Y7TUFDRTtPQUFBLE1BQUEsNkJBSlFBO09BSVIsTUFBQTtPQURDLE1BQUEsV0FJRTtNQUpGOztnQkFNSSxPQUFBO0lBQ047SUFSVSxPQUFBO0dBU1o7WUFFQzIxQixPQUFVNzFEO0lBQ1QsVUExR0R5MEQsaUJBeUdVejBEO0lBQ1QsVUFBQTtJQUNVLFVBQUEsc0JBRkRBO0lBRUMsT0FBQTtHQUNaO1lBRUMrMUQsUUFBV25vQjtpQkFDRm9vQjtLQUFXO01BQVMsTUFBQSxvQ0FBcEJBO01BQW9CLE1BQUE7S0FBUCxPQUFBLFdBRFhwb0IsR0FDVztJQUEwQztJQUF2RCxPQUFBO0dBQXdEOzt1QkEvR2pFNm1CLDZCQTRGQW4wQixVQWFBdTFCLFFBS0FFOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDL0dKRTtJQUFBbHVEO0lBV0FtdUQ7SUFBQWp1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBWkFrdUQsT0FDQTFzRCxLQUFBdEk7SUFBQSwrQkFBQXNJO0lBQUEsK0JBQUFBO2VBQUF0STtJQUFBLFdBQ1ksK0JBRFpzSTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtlQUFBdEk7SUFBQSxXQUVvQiwrQkFGcEJzSTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtlQUFBdEk7SUFBQSxXQUdXLCtCQUhYc0k7SUFBQSwrQkFBQUE7SUFBQSwrQkFBQUE7SUFBQSwrQkFBQUE7ZUFBQXRJO0lBQUEsV0FJWSwrQkFKWnNJO0lBQUEsK0JBQUFBO0lBQUEsK0JBQUFBO0lBQUEsK0JBQUFBO2VBQUF0STtJQUFBLFdBS2lCLCtCQUxqQnNJO0lBQUEsK0JBQUFBO0lBQUEsK0JBQUFBO0lBQUEsK0JBQUFBO2VBQUF0STtJQUFBLFdBTU8sK0JBTlBzSTtJQUFBLCtCQUFBQTtJQUFBLE9BQUEsK0JBQUFBO0dBT0M7WUFSRDJzRCxTQUNBajFEO0lBQUEsT0FBQSxvQ0FEQWcxRCxRQUNBaDFEO0dBT0M7R0FQRCxTQUFBazFELFlBQUF2Z0I7SSxTQUFBQTtLQUFBLE9BQUE7NENBQUFtZ0Isa0JBQUFuZ0I7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDRXdnQjtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQU5GQztLQUFBQzs7Ozs7Ozs7O21CQUFBOWdCO09BQUE7O1lBQUFLO2lCQUFBQTttQkFBQUE7Ozs7WUFBQTBnQiwyQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBRTtTQUFBQztvQkFBQUg7cUJBQUFJO2FBQUEsS0FBQUo7Y0FBQSxPQUFBO3FEQUFBYixrQkFBQW5nQjtnQkFBQWdoQjtjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFPQzttQkFQREQ7O1NBQUFBLGlCQUFBRCxpQkFBQUg7Z0NBQUFDO2lDQUFBQTtrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7O2VBQUFGLG1CQUFBRSxnQkFBQUY7O3FCQUNFUDtjQURGTSx3QkFBQUcsZ0JBQUFIOztjQUNFO2VBREZRLG1CQUFBRjtlQUNFRyxhQUFBLDRCQURGRDtjQUNFZCxzQkFBQWU7O29CQUVBYjthQUhGSSx3QkFBQUcsZ0JBQUFIOzthQUdFO2NBSEZVLG1CQUFBSjtjQUdFSyxhQUFBLDRCQUhGRDthQUdFZCxxQkFBQWU7O21CQUdBWjtZQU5GQyx3QkFBQUcsZ0JBQUFIOztZQU1FO2FBTkZZLG1CQUFBTjthQU1FdlYsYUFBQSw0QkFORjZWO1lBTUViLGlCQUFBaFY7O2tCQUpBNFU7V0FGRkssd0JBQUFHLGdCQUFBSDs7V0FFRTtZQUZGYSxtQkFBQVA7WUFFRVEsYUFBQSw0QkFGRkQ7V0FFRWxCLDhCQUFBbUI7O2lCQUVBakI7VUFKRkcsd0JBQUFHLGdCQUFBSDs7VUFJRTtXQUpGZSxtQkFBQVQ7V0FJRVUsYUFBQSw0QkFKRkQ7VUFJRWxCLHNCQUFBbUI7O2dCQUNBbEI7U0FMRkUsd0JBQUFHLGdCQUFBSDs7U0FLRTtVQUxGaUIsbUJBQUFYO1VBS0VZLGFBQUEsNEJBTEZEO1NBS0VuQiwyQkFBQW9COztvQkFMRmQ7Ozs7OztLQUFBLHlDQUFBZixrQkFBQTdmOztPQUFBd2dCO0tBQUEsT0FBQTs7Y0FBQVg7Y0FBQVc7Y0FBQTlnQjtPQUFBK2dCO0tBQUEsT0FBQTs7Y0FBQVo7Y0FBQVk7Y0FBQS9nQjs7WUFDRXdnQjtZQUNBQztZQUNBQztZQUNBQztZQUNBQzthQUNBQzs7O01BQUFvQjtNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztLQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEOztJQU5GLE9BQUE7O2FBQUE5QjthQUFBbmdCOzt3QkFDRXdnQjs7O3NCQUNBQzs7OzBCQUNBQzs7MkJBQ0FDOzs0QkFDQUM7Z0NBQ0FDOztZQU5GMEI7SUFBQTtLQU1FQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQUtBQyxVQUFBLDJCQUFBTjtLQU5GTyxnQ0FNRUQ7S0FEQUUsVUFBQSwyQkFBQVA7S0FMRlEsa0NBS0VELGVBTEZEO0tBSUVHLFVBQUEsMkJBQUFSO0tBSkZTLGtDQUlFRCxlQUpGRDtLQUdFRyxVQUFBLDJCQUFBVDtLQUhGVSxrQ0FHRUQsZUFIRkQ7S0FFRUcsVUFBQSwyQkFBQVY7S0FGRlcsa0NBRUVELGVBRkZEO0tBQ0VHLFVBQUEsMkJBQUFYO0tBREZZLGtDQUNFRCxlQURGRDtJQUFBLFdBQUFFO0dBT0M7R0FQRCxTQUFBQyxjQUFBenZEO0ksVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRXc4QjtNQUNBa3pCO01BQ0FqekI7TUFDQWt6QjtNQUNBanpCO01BQ0FrekI7TUFORnRuRDtNQUFBQztjQUFBTDtLQUFBOzs7T0FBQU07O09BQUFDO09BQUFDOzhCQUFBQTsrQkFBQUE7Z0NBQUFBO2lDQUFBQTtrQ0FBQUE7bUNBQUFBO1lBQUE7Y0FBQTs7YUFBQUg7a0JBQUFHLFlBQUEsbUNBQUFIOzttQkFDRSxtQ0FBQWkwQjtZQURGbDBCO2lCQUFBSSxZQUNFLG1DQURGSjs7WUFDRTthQUFBSztlQUFBOzJEQURGRjtZQUNFK3pCLHdCQUFBN3pCOztrQkFFQSxtQ0FBQTh6QjtXQUhGbjBCO2dCQUFBSSxZQUdFLG1DQUhGSjs7V0FHRTtZQUFBTTtjQUFBOzBEQUhGSDtXQUdFZzBCLHVCQUFBN3pCOztpQkFHQSxtQ0FBQWduRDtVQU5GdG5EO2VBQUFJLFlBTUUsbUNBTkZKOztVQU1FO1dBQUFPO2FBQUE7eURBTkZKO1VBTUVtbkQsbUJBQUEvbUQ7O2dCQUpBLG1DQUFBNm1EO1NBRkZwbkQ7Y0FBQUksWUFFRSxtQ0FGRko7O1NBRUU7VUFBQW9JO1lBQUEscURBRkZqSTtTQUVFaW5ELGdDQUFBaC9DOztlQUVBLG1DQUFBaS9DO1FBSkZybkQ7YUFBQUksWUFJRSxtQ0FKRko7O1FBSUU7U0FBQXFJO1dBQUEscURBSkZsSTtRQUlFa25ELHdCQUFBaC9DOztjQUNBLG1DQUFBK3JCO09BTEZwMEI7WUFBQUksWUFLRSxtQ0FMRko7O09BS0U7UUFBQXlxQjtVQUFBLHFEQUxGdHFCO09BS0VpMEIsNkJBQUEzSjs7a0JBTEZ2cUI7O1FBQUEsbUNBQUFGO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBdEssY0FBQWdDOztRQUFBLG1DQUFBdUk7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUF2SyxjQUFBZ0M7O0tBQ0U7TUFBQSxVQUFBLG1DQUFBdzhCO01BQ0EsVUFBQSxtQ0FBQWt6QjtNQUNBLFVBQUEsbUNBQUFqekI7TUFDQSxVQUFBLG1DQUFBa3pCO01BQ0EsVUFBQSxtQ0FBQWp6QjtNQUNBLFVBQUEsbUNBQUFrekI7OztPQUFBQztPQURBbHpCO09BREFtekI7T0FEQWx6QjtPQURBbXpCO09BREFsekI7TUFERjtjQUNFQTtjQUNBa3pCO2NBQ0FuekI7Y0FDQWt6QjtjQUNBbnpCO2NBQ0FrekI7O0tBTkY7TUFBQTs7O2dCQU1FLG1DQUFBRDs7O01BTkY7OztnQkFLRSxtQ0FBQWx6Qjs7Ozs7TUFMRjs7O2dCQUlFLG1DQUFBaXpCOzs7TUFKRjs7O2dCQUdFLG1DQUFBbHpCOzs7TUFIRjs7O2dCQUVFLG1DQUFBaXpCOzs7OztNQUZGOzs7Z0JBQ0UsbUNBQUFsekI7OztLQURGLE9BQUE7a0RBQUF4K0IsUUFBQWdDOztJQUFBLE9BQUEsK0NBQUFoQyxRQUFBZ0M7O1lBQUFnd0Q7SUFBQTtLQU1FQztLQURBbnpCO0tBREFvekI7S0FEQW56QjtLQURBb3pCO0tBREFuekI7S0FLQTN6QiwwREFBQTRtRDtLQUFBM21ELDBCQUFBRDtLQURBRTsyREFBQXV6QjtLQUFBdHpCLHNDQUFBRCxRQUNBRDtLQUZBRyw0REFBQXltRDtLQUFBeG1ELGlDQUFBRCxRQUNBRDtLQUZBK0gsNERBQUF3ckI7S0FBQXZyQixnQ0FBQUQsUUFDQTdIO0tBRkErSDsyREFBQTArQztLQUFBeitDLHlDQUFBRCxRQUNBRDtLQUZBNmlCLDREQUFBMkk7S0FBQTFJLGlDQUFBRCxRQUNBM2lCO0lBRkYsc0JBQ0U0aUI7R0FNRDtZQUdEODdCLFdBQ0Exd0QsS0FBQXRJO0lBQUEsK0JBQUFzSTtJQUFBLCtCQUFBQTtlQUFBdEk7SUFBQSxXQUNZLCtCQURac0k7SUFBQSwrQkFBQUE7SUFBQSwrQkFBQUE7SUFBQSwrQkFBQUE7ZUFBQXRJO0lBQUEsV0FFVywrQkFGWHNJO0lBQUEsK0JBQUFBO0lBQUEsK0JBQUFBO0lBQUEsK0JBQUFBO2VBQUF0STtJQUFBLFdBR1ksK0JBSFpzSTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtJQUFBLCtCQUFBQTtlQUFBdEk7SUFBQSxXQUlPLCtCQUpQc0k7SUFBQSwrQkFBQUE7SUFBQSxPQUFBLCtCQUFBQTtHQUtDO1lBTkQyd0QsYUFDQWo1RDtJQUFBLE9BQUEsb0NBREFnNUQsWUFDQWg1RDtHQUtDO0dBTEQsU0FBQWs1RCxnQkFBQXJ4QjtJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQWt0QixrQkFBQWx0QjtJQUFBO0tBQUFzeEIsa0JBQUF0eEI7S0FDRXV4QjtLQUNBQztLQUNBQztLQUNBQztLQUpGQztLQUFBQzs7Ozs7Ozs7O21CQUFBTjtPQUFBOztZQUFBTztpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUE1RSxrQkFBQWx0QjtnQkFBQTh4QjtjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFLQzttQkFMREQ7O1NBQUFBLGlCQUFBRCxpQkFBQUg7Z0NBQUFDO2lDQUFBQTtrQ0FBQUE7bUNBQUFBOzthQUFBSCxtQkFBQUcsZ0JBQUFIOzttQkFDRUw7WUFERkksd0JBQUFJLGdCQUFBSjs7WUFDRTthQURGUyxtQkFBQUY7YUFDRUcsYUFBQSw0QkFERkQ7WUFDRWIsc0JBQUFjOztrQkFDQWI7V0FGRkcsd0JBQUFJLGdCQUFBSjs7V0FFRTtZQUZGVyxtQkFBQUo7WUFFRUssYUFBQSw0QkFGRkQ7V0FFRWQscUJBQUFlOztpQkFFQWI7VUFKRkMsd0JBQUFJLGdCQUFBSjs7VUFJRTtXQUpGYSxtQkFBQU47V0FJRU8sYUFBQSw0QkFKRkQ7VUFJRWQsaUJBQUFlOztnQkFEQWhCO1NBSEZFLHdCQUFBSSxnQkFBQUo7O1NBR0U7VUFIRmUsbUJBQUFSO1VBR0VTLGFBQUEsNEJBSEZEO1NBR0VqQixzQkFBQWtCOztvQkFIRlg7Ozs7OztLQUFBLHlDQUFBOUUsa0JBQUEyRTs7T0FBQUY7S0FBQSxPQUFBOztjQUFBekU7Y0FBQXlFO2NBQUEzeEI7T0FBQTR4QjtLQUFBLE9BQUE7O2NBQUExRTtjQUFBMEU7Y0FBQTV4Qjs7WUFDRXV4QjtZQUNBQztZQUNBQzthQUNBQzs7O01BQUFrQjtNQURBQztNQURBQztNQURBQztLQURGLFdBQ0VBLGNBQ0FELGFBQ0FELGNBQ0FEOztJQUpGLE9BQUE7O2FBQUExRjthQUFBbHRCOzt3QkFDRXV4Qjs7eUJBQ0FDOzswQkFDQUM7OEJBQ0FDO0dBQ0Q7WUFMRHNCO0lBQUE7S0FJRUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FHQUMsVUFBQSwyQkFBQUo7S0FKRkssZ0NBSUVEO0tBREFFLFVBQUEsMkJBQUFMO0tBSEZNLGtDQUdFRCxlQUhGRDtLQUVFRyxVQUFBLDJCQUFBTjtLQUZGTyxtQ0FFRUQsZUFGRkQ7S0FDRUcsVUFBQSwyQkFBQVA7S0FERlEsbUNBQ0VELGVBREZEO0lBQUEsV0FBQUU7R0FLQztHQUxELFNBQUFDLGtCQUFBOXlEO0lBQUEsVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRXc4QjtNQUNBQztNQUNBa3pCO01BQ0FDO01BSkZ0bkQ7TUFBQUM7Y0FBQUw7S0FBQTs7O09BQUFNOztPQUFBQztPQUFBQzs4QkFBQUE7K0JBQUFBO2dDQUFBQTtpQ0FBQUE7VUFBQTtZQUFBOztXQUFBSDtnQkFBQUcsWUFBQSxtQ0FBQUg7O2lCQUNFLG1DQUFBaTBCO1VBREZsMEI7ZUFBQUksWUFDRSxtQ0FERko7O1VBQ0U7V0FBQUs7YUFBQTt5REFERkY7VUFDRSt6Qix3QkFBQTd6Qjs7Z0JBQ0EsbUNBQUE4ekI7U0FGRm4wQjtjQUFBSSxZQUVFLG1DQUZGSjs7U0FFRTtVQUFBTTtZQUFBLHFEQUZGSDtTQUVFZzBCLHVCQUFBN3pCOztlQUVBLG1DQUFBZ25EO1FBSkZ0bkQ7YUFBQUksWUFJRSxtQ0FKRko7O1FBSUU7U0FBQU87V0FBQSxxREFKRko7UUFJRW1uRCxtQkFBQS9tRDs7Y0FEQSxtQ0FBQThtRDtPQUhGcm5EO1lBQUFJLFlBR0UsbUNBSEZKOztPQUdFO1FBQUFvSTtVQUFBLHFEQUhGakk7T0FHRWtuRCx3QkFBQWovQzs7a0JBSEZsSTs7UUFBQSxtQ0FBQUY7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFwSyxnQkFBQThCOztRQUFBLG1DQUFBdUk7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFySyxnQkFBQThCOztLQUNFO01BQUEsVUFBQSxtQ0FBQXc4QjtNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQWt6QjtNQUNBLFVBQUEsbUNBQUFDOzs7T0FBQUM7T0FEQUM7T0FEQWx6QjtPQURBQztNQURGLFdBQ0VBLGdCQUNBRCxlQUNBa3pCLGdCQUNBRDs7S0FKRjtNQUFBOzs7Z0JBSUUsbUNBQUFEOzs7TUFKRjs7O2dCQUdFLG1DQUFBRDs7O01BSEY7OztnQkFFRSxtQ0FBQWx6Qjs7O01BRkY7OztnQkFDRSxtQ0FBQUQ7OztLQURGLE9BQUE7a0RBQUF0K0IsVUFBQThCOztJQUFBLE9BQUEsK0NBQUE5QixVQUFBOEI7R0FLQztZQUxEK3lEO0lBQUE7S0FJRTlDO0tBREFDO0tBREFuekI7S0FEQUM7S0FHQTN6QiwwREFBQTRtRDtLQUFBM21ELDBCQUFBRDtLQURBRSw0REFBQTJtRDtLQUFBMW1ELGlDQUFBRCxRQUNBRDtLQUZBRyw0REFBQXN6QjtLQUFBcnpCLGdDQUFBRCxRQUNBRDtLQUZBK0gsNERBQUF5ckI7S0FBQXhyQixpQ0FBQUQsUUFDQTdIO0lBRkYsc0JBQ0U4SDtHQUlEO1lBRUd3aEQsT0FBVzl0QixpQkFBa0IwSztJQUFRO0tBQ25DOWEsV0FBVztLQUNYd1YsbUJBQW1CO0tBQ25COEgsVUFBVTtLQUNWb0I7T0FDRjtLQUNFLzJCO09BQ0Y7OERBUFd5b0I7SUFXYjtZQVZJcFE7WUFDQXdWO1lBQ0E4SDtZQUdBMzFCO1lBRkErMkI7WUFKMkI1RDtHQVloQztZQUVHcWpCLFdBQWUvdEIsaUJBQWtCMEs7SUFBUSxPQWhDN0NvZ0IsY0FrQklnRCxPQWNlOXRCLGlCQUFrQjBLO0dBRXBDO1lBRUdzakIsV0FBYy84QixNQUFPZ1A7SUFBVTtLQUU1QjtNQUFBLE9BdENQc3FCLGNBc0NRLHFDQUZVdDVCO01BQ1pnOUI7OztLQUdjO01BQVZDLFVBN0JWTixrQkE2Qm9CLHFDQUpGMzhCO01BQ1pnOUIsVUFHSUMsaUJBQUFBLFlBQUFBLGNBQUFBOztJQVVPLElBQVh0K0IsV0FBVyxpQ0FiWHErQjtJQWNKLGlDQWRJQTtRQWVBanVCLGtCQUZBcFE7SUFHSixrQ0FISUEsYUFiQXErQjtJQWlCSixrQ0FqQklBLFFBRG1CaHVCLE9BZ0JuQkQ7dUNBZkFpdUI7R0FtQkw7Ozs7T0F6REQvRztPQUFBQztPQUNBQztPQUFBZ0M7T0FBQW1CO09BQUFPO09BVUFJO09BQUFDO09BQ0FDO09BQUEyQjtPQUFBYTtPQUFBQztPQU9JQztPQWNBQztPQUlBQzs7O0U7Ozs7Ozs7WUN0Q0FoMkMsWUFBYSxTQUFFOzRCQUFmQTs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNHQW0yQyxnQkFDQ3BLLEdBQW9CbjhCO0lBQXJCLElBQXNCZ0ksV0FBRGhJO0lBQ3ZCLFVBREdtOEI7S0FDSCxPQURHQTs7UUE0SVc7Z0JBNUlTbjhCOztxQkFBQ2dJO2lCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7Z0JBQURoSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7UUFtSkg7Z0JBbkpHQTs7aUJBQUNnSTtxQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBO2dCQUFEaEk7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7OztvQkFBQ2dJO2dCQUFEaEk7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUNnSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTt1QkFBQUE7UUFLdEI7Z0JBTHFCaEk7O2lCQUFDZ0k7aUJBQUFBOztzQkFBQUE7a0JBQUFBO3NCQUFBQTs7Ozs7Ozs7Ozs7Ozs7O29CQUFBQTtnQkFBRGhJO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFDZ0k7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7b0JBQUFBO2dCQUFBQTtnQkFBQUE7d0JBQUFBO1FBK0JWO2dCQS9CU2hJOztpQkFBQ2dJO2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7b0JBQUFBO2dCQUFEaEk7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUNnSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7b0JBQUFBO2dCQUFBQTt3QkFBQUE7UUE0Q1o7Z0JBNUNXaEk7O2lCQUFDZ0k7aUJBQUFBOzs7Ozs7Ozs7Ozs7OztvQkFBQUE7Z0JBQURoSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQ2dJO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7b0JBQUFBO3dCQUFBQTtRQWtCVDtnQkFsQlFoSTs7aUJBQUNnSTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7UUFxSVQ7Z0JBcklRaEk7O2lCQUFDZ0k7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtxQkFBQUE7aUJBQUFBO2lCQUFBQTtnQkFBRGhJO2dCQUFBQTtnQkFBQUE7Z0JBQUFBOztRQTBKRDtnQkExSkNBOztpQkFBQ2dJO2lCQUFBQTtpQkFBQUE7aUJBQUFBO3FCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7Z0JBQURoSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7UUFzS1Q7U0FKUndtQyxlQWxLa0J4K0I7Z0JBQURoSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtTQXNLVDs7WUF0S1VnSTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtnQkFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7UUFtS3RCO2dCQUVXLGlDQXJLVWhJLFVBa0tqQndtQzs7Ozs7OztJQWpLTixPQURHcks7O1dBeURVMWUsSUF6RFYwZSxNQTBER3NLLGFBMURrQnorQjtPQTJEdEIsT0FGV3lWOzs7V0FFUGlwQjs7Y0FEQUQ7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7a0JBQUFBO2NBQUFBO2NBQUFBOzs7O1dBQ0FDOztrQkFEQUQ7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Ozs7V0FDQUM7O2NBREFEO2tCQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTs7OztXQUNBQzs7Y0FEQUQ7Y0FBQUE7Y0FBQUE7a0JBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBOzs7O1dBQ0FDOztjQURBRDtjQUFBQTtrQkFBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Ozs7V0FDQUM7O2NBREFEO2NBQUFBO2NBQUFBO2NBQUFBO2tCQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTs7OztXQUNBQzs7Y0FEQUQ7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7a0JBQUFBO2NBQUFBO2NBQUFBO2NBQUFBOzs7O1dBQ0FDOztjQURBRDtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtrQkFBQUE7Y0FBQUE7Ozs7V0FDQUM7O2NBREFEO2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBO2tCQUFBQTs7a0JBMURrQnorQjtPQWdHdEI7ZUFoR3FCaEk7O2dCQUFDZ0k7Z0JBQUFBO3dEQTJEbEIwK0I7Z0JBM0RrQjErQjtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2VBQURoSTtlQUFBQTtlQUFBQTtlQUFBQTs7bUJBQXBCbThCOzs7U0FrSGlCO2lCQWxISW4wQjtVQWtIbEIyK0IsK0JBbEhrQjMrQjtVQXNIbEI0K0I7O2FBdEhrQjUrQjthQUFBQTthQUFBQTthQUFBQTthQUFBQTthQUFBQTthQUFBQTthQWtIbEIyK0I7YUFsSGtCMytCO1NBdUh0QjtpQkF2SHFCaEk7aUJBc0hqQjRtQztpQkF0SGlCNW1DO2lCQUFBQTtpQkFBQUE7aUJBQUFBOztRQTJHSDtnQkEzR0lnSTtTQTJHbEI2K0Isd0JBM0drQjcrQjtTQStHbEI4K0I7O1lBL0drQjkrQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQTJHbEI2K0I7WUEzR2tCNytCO1FBZ0h0QjtnQkFoSHFCaEk7Z0JBK0dqQjhtQztnQkEvR2lCOW1DO2dCQUFBQTtnQkFBQUE7Z0JBQUFBOztXQXdISSttQyx1QkF4SEgvK0I7O2lCQXdIRysrQjtXQUFBQTtrREFDckJDO2FBQUFBOzs7a0RBQUFBO2FBQUFBOzs7WUFLT2wrRCxLQU5jaStEOzs7O3dCQU1kaitEOztZQUxQaytEOztPQVNKO1FBQUEsT0FsSXNCaC9CO1FBa0lsQmkvQixzQ0FUQUQ7UUFVQUU7O1dBbklrQmwvQjtXQUFBQTtXQUFBQTtXQUFBQTtXQUFBQTtXQUFBQTtXQUFBQTtXQWtJbEJpL0I7V0FsSWtCai9CO09Bb0l0QjtlQXBJcUJoSTtlQW1JakJrbkM7ZUFuSWlCbG5DO2VBQUFBO2VBQUFBO2VBQUFBOztXQTJLaEJtbkMsT0EzS0poTDtPQTJLYTtlQTNLT244Qjs7Z0JBQUNnSTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBMktqQm0vQjtlQTNLZ0JubkM7ZUFBQUE7ZUFBQUE7ZUFBQUE7O0dBa0x0QjtZQUVDb25DLG9CQUF3QkMsaUJBQWlCcm5DO0lBQzNDLFdBRDJDQTs7SUFHdkM7S0FERXNuQyxRQUNGLGlDQUh1Q3RuQyxVQUFBQSxVQUFBQTt5QkFTOUIsSUFBTStYLGlCQUFKdnNDLGNBQXNDLFdBQXRDQSxHQUFJdXNDLEdBQXdDO0lBQXZELElBREV3dkIsVUFDRixrQ0FQRUQ7YUFRQSwyQkFGQUM7OztpQkFPRUM7OEJBSVEsSUFBRWg4RCxjQUFVLFdBQVZBLFFBQTJDO1NBRmpELE9BQUE7a0JBakJjNjdEO3VCQWtCWixrQ0FITkc7UUFRRztzQkFWSUMsSUFBTSxPQUFnQixXQWJYSixzQkFhWEksS0FBc0M7S0FIcEIscUNBRjNCRjs7SUFvQkY7WUE1QnVDdm5DO0tBMkJyQzBuQztPQUNGO1NBQ0csdUNBN0JvQzFuQyxhQUVyQ3NuQztLQTRCQUssVUFBVSx1Q0FIVkQ7SUFJQyxHQUFBLHNDQUREQztLQU1jLE9BQUEsV0FwQ01OLHNCQTJCcEJLO0lBTUE7S0FERUU7T0FDRjtTQUFXLHVDQWpDMEI1bkMsY0E4QnJDMm5DO0lBSWMsT0FBQSxXQWxDTU4sc0JBZ0NsQk87R0FNUDtZQUVDQyxtQkFBdUJSLGlCQUFpQnJJLFFBQVE4STtJQUF3QjtLQUNyRCxPQUFBLG9CQURxQjlJO0tBQ3RDK0kseUJBQW9DLG1DQURFL0k7S0FFdENnSixrQkFBa0IsbUNBRm9CaEo7S0FDdENpSjtPQUFBRixtQkFDQUMsa0JBRjhDRixhQUU5Q0U7T0FEQUM7S0FJa0I7YUFMNEJIO2FBQUFBO01BSzVCLE9BQUEsaUNBTDRCQSxNQUFBQTtNQUc5Q0ksVUFIOENKLE1BQUFBLE1BQUFBOztTQUc5Q0ksTUFIOENKO09BRTlDRSxtQkFDQUU7S0EzQ0ZkLG9CQXdDdUJDLGlCQUdyQmE7S0FLRixPQUxFQTs7SUFPRyxPQVBIQTtHQVVMO1lBRUdDLGVBQWtCbm9DLE9BQWdCbThCO0lBQ3BDO0tBRWU7YUFIS244QjthQUFBQTtNQUdMLE9BQUEsNkJBSEtBO01BRWxCLE9BQUE7TUFBQSxPQUFBO01BREssTUFBQSxXQU9GLGlDQVJlQSxhQUFnQm04Qjs7OzsrQkFVQyxXQVZqQm44Qjs7OztLQWVIO01BSFpvb0M7YUFaZXBvQzthQUFBQTtNQWVILE9BQUEsNkJBZkdBO01BY2hCLFFBQUEsbURBRkNvb0M7TUFDVzF1QjtNQUFUMUM7TUFPRHF4QixjQVBDcnhCLFNBYmFoWCxVQWFKMFosU0FiSTFaLFVBQUFBLFVBQUFBO0tBdUJsQixXQUhJcW9DOztRQVRFQztJQUFRLGVBQVJBO0dBYVA7WUFFS0M7SUFBa0IsSUFBQ0Y7SUFBRDttQkFFaEIsV0FGaUJBO0tBSWhCLElBREFHLGlCQUFOck0sZ0JBR0RtTSxNQWhDQUgsZUEwQnVCRSxTQUd0QmxNO2NBR0RtTSxRQUFxQixPQUFyQkE7U0FES0csVUFDTEgsUUFOdUJELFVBS2xCSSxtQkFGRUQ7O0dBSU47WUFFREUscUJBQ0MxeEIsU0FBcUJvQixpQkFBaUJmO0lBQ3pDLE9BREdMOztXQUdPeHJDLElBSFB3ckMsWUFJVUMsU0FKVkQ7VUFHT3hyQyxNQUgrQjZyQyxLQUdSO1VBQ0EsMkJBQXBCSixXQUo0QkksS0FJZTtXQUMzQ0gsV0FMVkY7T0FLcUIsZUFMaUJLLEtBSzVCSDs7T0FIUzs7V0FJUG1CLFFBTlpyQjtVQU1rQywyQkFBdEJxQixVQU4wQmhCLEtBTWtCO09BRTlDO1FBREVzeEIsVUFQWjN4QjtRQVFHZ0QsT0FBTywyQkFERTJ1QixTQVAwQnR4QjtRQVNuQ0MsTUFBTSxrQ0FETjBDO1FBRUFycUI7VUFBVyxpQ0FEWDJuQixLQURBMEMsTUFSa0I1QjtPQVd0QixlQVh1Q2YsS0FPMUJzeEIsU0FHVGg1Qzs7R0FFTDtZQVdDaTVDO0lBQStCO0tBRzdCLE9BQUE7S0FBQSxPQUFBO0tBR0EsT0FBQTtLQUFBLE9BQUE7S0FMQXYvQixXQU9RO0tBRzZCLE9BQUEsd0NBVnJDQTtLQVNBNlksV0FDRjtJQUNGLDZEQUZJQTtJQUVKLE9BQUE7R0FNRDtZQUVHMm1CLGdCQUNDdGMsVUFBMEJ5UztJQUNQLFVBRE9BO2tCQUFBQTttQkFBMUJ6UyxhQUFBQSxnQkFBQUE7bUJBQUFBLGFBQUFBLGdCQUFBQTthQUEwQnlTO1NBS1B0aEIsSUFMT3NoQjtLQUtELFdBTHpCelMsYUFLbUI3TyxHQUxuQjZPLGFBQUFBOztRQU1XdWMsZUFOZTlKO0lBTUUsV0FBakI4SixjQU5YdmMsYUFBQUEsYUFBQUE7R0FRSjtZQUVPd2MsTUFDQy9vQyxPQUFnQmcvQixRQUFXNzFCLE9BQWlCaytCO0lBQ3RCO2NBRE5ySTtZQUFBQTs7WUFFbkI4SSxRQUVZLCtCQUpUOW5DOztRQWhDTDRvQywrQkFrQ0VkLFFBRkc5bkM7O1FBaURXO1NBRFZvWSxrQkFoRERwWTtTQWlEQ2dYLFVBQVUsaUNBakRYaFgsVUFnRENvWTtTQTlDSjB2QjtXQWdEQTs7aUJBREk5d0IsU0FqRERoWCxVQUFBQSxVQUFBQSxVQUFBQSxVQUFBQTs7O1FBK0VZO2VBL0VaQTtlQUFBQTtTQStFWSxNQUFBLDZCQS9FWkE7U0E4RUQsTUFBQTtTQU1Lb29DLEtBTkw7U0FERXIzRCxJQU9HcTNEO1dBRUwsb0NBVEVyM0Q7YUFRQW9yRDs7bUJBR0UsaUNBWEZwckQsZ0JBUUFvckQ7WUFuRkoyTCxJQUhFaUIsTUFDQy9vQyxPQXFGQ204QixHQXJGMEJoekIsT0FBaUJrK0I7OztZQUUvQ1MsSUF1QlEsK0JBekJMOW5DOztvQkFBQUE7O1NBOEdNO1VBREYwWDtVQUNFO1lBQUEsaUNBREZBLFdBN0dKMVgsVUFBQUE7O1VBc0htQjtXQURiZ3BDO1dBQ0RDLGNBQWM7V0FDZEMsU0FBUyxxQ0FGUkY7V0FHRTthQUFBLHNDQUZIQyxjQUNBQzs7V0FLVztZQUZSQztZQUVEcGdDLFNBQVMsdUNBRlJvZ0MsS0FMRkg7WUFTRDtjQUFBO3NDQWpCRHR4QixXQTdHSjFYLFVBQUFBLFVBNEhPK0k7WUFDVTJRO1lBQVRXOzs7bUJBQUFBLFdBN0hScmEsVUE2SGlCMFosU0E3SGpCMVosVUFBQUEsVUFBQUE7Ozs7Ozt3QkFBQUE7Ozs7dUJBQUFBO1lBRUg4bkM7OztZQUFBQSxJQTdGRkssZUEyRktub0M7O1lBRUg4bkMsUUFGRzluQzs7UUFpSkk7ZUFqSkpBO2VBQUFBOztvQkFvSkMrSTtZQUNTLFlBQUEsaUNBRFRBO3dCQUVZO2dCQUNIeU87WUFBVyxXQUFYQTtXQUNOO1NBUEE7V0FBQSxpQ0FqSkp4WDs7OztVQTZKWTJaO1VBQVR5dkI7OztpQkFBQUEsV0E3SkhwcEMsVUE2SlkyWixXQTdKWjNaLFVBQUFBLFVBQUFBOzthQThKS3NhLDhCQUFBQTtZQTVKUnd0Qjs7O1FBK0pPO2VBaktKOW5DO2VBQUFBOztvQkFvS0MrSTtZQUNTLFlBQUEsaUNBRFRBO3dCQUVZO2dCQUNIeU87WUFBVyxXQUFYQTtXQUNOO1NBUEE7V0FBQSxpQ0FqS0p4WDs7OztVQTZLWThaO1VBQVR1dkI7OztpQkFBQUEsV0E3S0hycEMsVUE2S1k4WixXQTdLWjlaLFVBQUFBLFVBQUFBOzthQThLS3NwQyxnQ0FBQUE7WUE1S1J4Qjs7O1lBRm1COUk7O1lBS2Y5QyxXQUxlOEM7OzttQkFLZjlDLCtCQUFBQTt3QkE1VU5xSyxnQkE0VU1ySyxVQUxEbDhCOzs7U0FPUyxJQUFScW9DLFVBOVVOOUIsZ0JBNFVNckssVUFMRGw4QjtTQVFILCtCQURJcW9DOzs7b0JBUGVySiw2QkFBQUE7cUJBQUFBOzswQkFXRSwrQkFKakJxSjs7Ozt3QkFBQUE7Ozs7WUFMSlA7OztRQWNFO1NBRk0zK0QsU0FkVzYxRDtTQWVmelMsV0EzQk5zYyxnQkFZSzdvQyxVQWNLNzJCLFFBZHVDaytEO1NBRS9DUzs7Z0JBRkc5bkMsVUFBQUEsVUFBQUEsVUFBQUEsVUFBQUEsVUFlQ3VzQjs7O1FBS0Y7U0FGcUI5TyxJQWxCSnVoQjtTQW1CZnhoQjtXQUNGLDBDQXBCQ3hkLFVBa0JvQnlkO1NBaEJ2QnFxQjtXQW1CQTs7O2NBckJHOW5DO2NBQUFBO2NBQUFBO2NBQUFBO2NBbUJDd2Q7Y0FuQkR4ZDs7O1lBc0JVc1gsTUF0Qk0wbkI7UUF1Qm5CLHFDQXZCR2gvQixPQXNCVXNYO1lBcEJid3dCLFFBRkc5bkM7OztRQTJCSDtTQURjc2lCLE9BMUJLMGM7U0EyQm5CLGVBQXVCMzFCLE1BQVEsT0FBZ0IsV0EzQkFnK0IscUJBMkJ4QmgrQixPQUE4QztRQUFyRSxnQ0FEY2laO1lBeEJkd2xCLFFBRkc5bkM7OztZQTZCYXFKLE9BN0JHMjFCO1FBOEJuQixHQURnQjMxQjthQUdUeVAsU0FIU3pQO1NBSWQsZ0NBREt5UDt1QkFFRiwrQkFsQ0Y5WTs7O3VCQUFBQTtZQUVIOG5DOzs7O1NBNERXbHdCLE1BOURRb25CO2VBQWhCaC9CO1NBRUg4bkM7OzthQUZHOW5DO2FBQUFBO2FBQUFBO2FBQUFBO2FBQUFBOzZDQThEUTRYOzs7UUFKSjtTQURrQjF2QyxPQXpETjgyRDtTQTBEWixVQUFBLGlDQTFESmgvQixVQXlEc0I5M0I7OztVQUdsQnFoRTs7WUFBWTs7a0JBQVpBLFdBNURKdnBDLFVBQUFBLFVBQUFBLFVBQUFBLFVBQUFBOzs7WUFFSDhuQzs7O1FBbUNBO1NBRHFCMEIsU0FwQ0Z4SztTQXFDbkIsZUFBdUIzMUIsTUFDckIsT0FBZ0IsV0F0QzZCZytCLHFCQXFDeEJoK0IsT0FDd0I7UUFEL0MsZ0NBRHFCbWdDO1lBbENyQjFCLFFBRkc5bkM7OztRQTBDVztTQURTeXBDLFNBekNKeks7U0EwQ2YwSyxZQUFVLGlDQTFDWDFwQyxVQXlDb0J5cEM7U0F2Q3ZCM0I7V0F5Q0E7O2lCQURJNEIsV0ExQ0QxcEMsVUFBQUEsVUFBQUEsVUFBQUEsVUFBQUE7OztRQXFESTtTQUZZeDBCLElBbkRBd3pEO1NBb0RmMkssb0JBcEREM3BDO1NBcURJLFVBN0dUMG9DLHFCQXdESzFvQyxVQW9EQzJwQyxtQkFEZW4rRDs7O1VBSVpvK0Q7O1lBQVk7O2tCQUFaQSxXQXZESjVwQyxVQUFBQSxVQUFBQSxVQUFBQSxVQUFBQTs7O1lBRUg4bkM7OztZQW9HY2YsTUF0R0svSDs7O1lBQWhCaC9CLGtCQUFBQTtVQTRGZ0U7V0FBQSxlQUU5REEsT0FPTCxXQVBLQSxPQU9LO1dBUEcsTUEvSlh1b0MsZ0JBaUVDdm9DLGtCQXNHVyttQztpQkFSZDs7O21CQXpMRm9CLGVBMkZLbm9DLE9Bc0dXK21DOztZQXBHZGU7OztZQThLZS92QixJQWhMSWluQixXQUVuQjhJLElBN0ZGSyxlQTJGS25vQyxzQkFnTFkrWDs7Ozs7V0FoTElpbkI7ZUE0TG5CLDBDQTVMR2gvQjtlQXdMSDtpQ0F4TCtDcW5DO2NBeUwvQztrQkF6TEdybkM7U0FFSDhuQzs7OztTQWdMVStCLFdBbExTN0s7U0FFbkI4STtXQW5FRVM7YUFpRUN2b0MsT0FxTEQseUNBckxDQSxPQWtMTzZwQzs7O1lBd0JJdHlCLFFBMU1LeW5COztzQkFBQUEsV0E4TExubkIsUUE5TEttbkI7O3lCQTBNTHpuQixRQVpBTTtTQU9kO1VBQUEsTUFyTUc3WDtVQXNNRCxNQUFBLFdBQ0csdUNBVFM2WDtVQU9WaXlCO1lBQ0Y7Y0FFRyxzQ0F4TUY5cEM7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO1VBeU1vQjtZQUFBLFdBQWlCLHNDQVgxQjZYLE9BT1ZpeUI7d0JBck1EOXBDLFVBQUFBOzs7U0ErTEg7VUFEK0JxWDtVQUMvQixNQS9MR3JYO1VBZ01EO1lBQUEsV0FDRyx1Q0FIUzZYO1VBQ1ZreUIsTUFDRixXQUVHLHNDQUowQjF5QjtpQkE5TDVCclg7aUJBQUFBO2lCQUFBQTtpQkFBQUE7VUFtTW9CO1lBQUE7Y0FBaUIsc0NBTDFCNlgsT0FDVmt5Qjt3QkEvTEQvcEMsVUFBQUE7WUFFSDhuQzs7O1FBOE5JO1NBSlFrQyxRQTVOT2hMO2dCQUFoQmgvQjtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7b0JBaU9JMFo7WUFBRDthQUFnQnV3QjthQUFMM3lCO2FBR0ksT0FBQSxzQ0FIQzJ5QjthQUdaLE9BQUE7WUFGRixPQUFBLHNDQURTM3lCLFdBQVZvQztXQUtFO1NBTkwsT0FBQSx3Q0FKUXN3QjtTQTFOWmxDLFlBRkc5bkMsVUFBQUE7OztRQTBORDtTQUZXK1osWUF4Tk1pbEI7Z0JBQWhCaC9CO2dDQTBOc0JtOEIsR0FBSXplLEdBQU0sV0FBTkEsR0FBYTtTQUR0Q3hEO1dBQ0YsbURBRldIO1NBdE5iK3RCOztnQkFGRzluQyxVQUFBQSxVQXlOQ2thLFdBek5EbGEsVUFBQUEsVUFBQUE7OztLQStNQztZQS9NREE7WUFBQUE7WUFBQUE7WUFBQUE7O2lCQWdONkJuMUI7U0FDdkIsd0NBRHVCQTtTQUN2QjtpQkFDRTttQkFFRyxzQ0FwTlhtMUI7UUFxTk87TUFOTixNQUFBLFdBQ0csc0NBTk91WDtNQXhNZHV3QixZQUZHOW5DLFVBQUFBOzs7SUE0T1ksT0FBQTs7YUExT2Y4bkM7O2MsT0E1R0ZELG1CQTBHaURSLGlCQUE1QnJJOztHQTZPeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXBqQkd1SDtPQXFMQWE7T0F3Q0FTO09BZUFNO09BMEJJSTtPQVNKRztPQXdCQUU7T0FvQkFDO09BV0lFOzs7RTs7Ozs7Ozs7O0lDMVVKbUI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7SUFDQUM7SUFFQUM7WUFJQUMsT0FBVXZwQztJQUFtQixJQUMzQndwQyxxQ0FEUXhwQyxJQUVZczdCLFdBQVltTztJQUNsQztRQUZFRCxTQUNvQmxPLFFBQVltTyxtQkFEaENELE9BQ2dDQztTQUk1QnQvRCxtQ0FOSTYxQixHQUVZczdCLFFBQVltTztLQUtoQyxVQURJdC9EO2dCQUFBQTtpQkFBQUE7UUFPRztTQVh5QnUvRCxVQUFBRDtTQUFaRSxVQUFBck87U0FBQUEsUUFBQXFPO1NBQVlGLFFBQUFDOztRQVNYO1NBVFdFLFVBQUFIO1NBQVpJLFVBQUF2TztTQUFBQSxRQUFBdU87U0FBWUosUUFBQUc7O09BT1g7UUFQV0UsVUFBQUw7UUFBWk0sVUFBQXpPO1FBQUFBLFFBQUF5TztRQUFZTixRQUFBSzs7VUFBWkUsVUFBQTFPLGVBQUFBLFFBQUEwTzs7R0FpQnpCOzs7O09BbENHbkI7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FFQUM7T0FJQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDVkFVLFVBQWExK0Q7SUFDZixZQURlQTt3REFFVHRDLGNBQU0sT0FBTkE7SUFDQztHQUNOO1lBRUNpaEUsUUFBV0MsS0FBYW5xQztJQUMxQjtLQUFtQyxXQUFDLGdDQURWQTtLQUNoQixXQUFBLDhDQURHbXFDO0lBQ3NCLE9BQUE7R0FBVTtZQUUzQ0MsV0FBY3BxQztJQUNoQjtLQUFvQyxXQUFDLGdDQURyQkE7S0FDTixXQUFBO0lBQTBCLE9BQUE7R0FBVTtZQUV4Q3FxQyxRQUFZemlFO0lBQTBCLElBQTFCMGlFLFFBQUExaUU7SUFBMEI7UUFBMUIwaUU7VUFBbUJ2aUUsTUFBbkJ1aUUsVUFBQUMscUJBQW1CeGlFOztVQUFuQndpRTtLQUNYLFlBQUE7Ozs7U0FXRSxPQWxCUEw7O1NBbUJTLE9BbkJUQTs7U0FxQlEsT0FyQlJBO2lCQW9CVSxPQXBCVkE7Ozs7UUFlRTtTQVBNTTtTQU9OLFVBQUM7U0FGYyxNQUFBLDhCQUxUQTttQkFLRjtTQUZRLFVBQ1I7U0FERixVQUFBO1FBSUYsT0FBQTs7WUFPRTNqRSxpQkFBUyxPQXRCYnFqRSxpQkFzQklyakU7O1FBY0Y7U0FIR3VDO21CQUdxQjttQkE5QnRCaWhFLFdBMkJDamhFO1NBR0gsVUFBQztTQURLLFVBQUE7UUFDTixPQUFBOztRQUtpQjtTQUhUcWhFO1NBQUpDO21CQWhDRkwsV0FnQ01JO1NBR1MsVUFBQztTQUFsQixNQXlERkUsV0E1RE1EO1NBR0osTUFBQTtTQURNLFVBQUE7UUFDTixPQUFBOztZQWlDRTlNO1FBQ0osR0FESUE7YUFLQ2dOLEtBTERoTjtZQUFBQTtVQVFFO1dBRk1pTixPQU5Sak47O3NCQVFXeDBEO2NBQUs7ZUFBZ0IsT0FNcEMwaEUsU0FOZTFoRTtlQUFLLFdBQUM7Y0FBZSxPQUFBO2FBQVc7V0FBekMsTUFBQSxpQ0FGTXloRTtXQUNKRSxXQUNGO1dBQ0YsTUFLSkQsU0FUS0Y7aUJBSUQsNEJBRklHOztVQUZrQjtXQUFBLE1BUzFCRCxTQVRLRjtXQUFPLFVBQUM7aUJBQUQ7Ozs7dUJBREQ7UUFGSCxjQUFBO1FBRUUsT0FBQTs7OztTQW5Dd0M7VUFBQSxXQUFDO1VBQTdCLFdBQUE7U0FBNEIsT0FBQTs7WUFHNUNJOztTQUNOO1VBRGFDO1VBQ2I7WUF6Q2dCVjs7bUJBOERUOzs7cUJBUFVuaEU7YUFBcUIsV0FxQ3RDdWhFLFdBckNpQnZoRTthQUFLLFdBQUM7WUFBNkI7VUFBNUMsTUFBQSxpQ0FmSzZoRTtVQWNMLE1BQUE7VUFERixNQXVDTk4sV0FwRE1LO1VBYUEsTUFBQTtVQURNLFVBQUE7VUFGUixVQUNBO1VBREEsTUFBQTtVQUFBO1lBbERZVDs7bUJBNkNUO1VBRkwsTUFBQTtVQURNLFVBQUE7U0FDTixPQUFBOztRQUpvQztTQUFBLFdBQUM7U0FBN0IsV0FBQTtRQUE0QixPQUFBOzs2QkF2Q3RCRDs7UUFnRlAsT0FBQTs7UUE1RFM7U0FIUlk7U0FBTkM7b0JBakJBZCxXQWlCTWE7U0FHUSxPQWhDbEJqQixVQTZCSWtCO1NBR2MsT0FBQTtTQUFWLE9BQUE7U0FBTixXQUFDO1NBREssV0FBQTtRQUNOLE9BQUE7O1FBS21CO1NBSFJDO1NBQU5DO29CQXRCSGhCLFdBc0JTZTtTQUdRLE9BckNyQm5CLFVBa0NPb0I7U0FHYyxPQUFBO1NBQWIsT0FBQTtTQUFOLFdBQUM7U0FESyxXQUFBO1FBQ04sT0FBQTs7O0dBd0RIO1lBQ0NQO0lBQ0Y7U0FPV1E7S0FBUSxXQTFGYmpCLFdBMEZLaUI7OzBCQU5EQztnQkFBaUIsV0FBQyxnQ0FBbEJBO0lBRUQ7S0FEY2pnRTtlQUduQjtlQXhGRSsrRCxXQXFGaUIvK0Q7S0FDZCxNQUFBLHVCQUZDaWdFO0lBQ3NCLFdBQzVCO0dBSTZCO1lBRS9CWixXQUFhci9EO0lBQ2YsS0FBRyw4QkFEWUEsTUFHUixXQS9GRCsrRCxXQTRGUy8rRDs7ZUFFdUM7ZUE5RmhEKytELGFBNEZTLytEO0lBQ1ksV0FDeEI7R0FHRjtZQUVDa2dFLEtBQVFDO0lBQ1csY0FwR2ZwQixXQW1HSW9CO0lBQ1csT0FBQTtHQUFjOzs7VUFoSGpDeEIsV0FNQUMsU0FHQUUsWUFHSUMsU0FrRkpTLFVBVUFILFlBT0FhOzs7RTs7Ozs7Ozs7Rzs7Ozs7R0NoSGE7O0lBWVg3K0M7Ozs7O0lBWkYrK0M7OztPQUdBOzs7O0lBTUFDLEtBQU07SUFDTnZoRSxNQUFPO2NBR3lDLHlDQUhoREE7Y0FEQXVoRSxRQUlvQztJQUFoQixjQUFFO0lBQXBCL2hFLFdBQVE7SUFLYSxrQkFBWTtJQVBuQ2dpRTs7O09BRUVoaUU7ZUFLTSxnQ0FUUitoRTtPQUdFaC9DO1dBWkYrK0M7SUF3QkFHLG1DQWJBRDs7VUFYQUYsWUFTQUMsSUFDQXZoRSxLQUNBd2hFLFlBYUFDOzs7O0U7Ozs7Ozs7O0c7Ozs7O0dDeEJtQjs7SUFnQmpCbC9DOzs7SUFoQkZtL0M7OztPQUdBOzs7O0lBS0FDLFdBQVk7SUFDWnpnRSxNQUFPO1lBQ1AwZ0UsMkJBQ0VDLE1BQWFDO0lBQXFDLGtCQUVyRCxnQ0FKQzVnRSxNQUVlNGdFO0lBQXFDLGVBQ3JELGdDQUpDSCxXQUdFRTtHQUdMO0dBR0M7SUFGRUU7Ozs7UUFQQUo7WUFXNEIseUNBVjVCemdFOztPQU9FcWhCO1dBaEJGbS9DO0lBMEJBTSx3QkFYQUQ7OztPQWZBTDtPQVFBQztPQUNBemdFO09BQ0EwZ0U7T0FLQUc7T0FXQUM7OztFOzs7Ozs7OztHOzs7OztHQzNCTzs7SUFRTHovQzs7OztJQVJGdGlCLE1BQU87SUFDUGlCLE1BQU87WUFDUCtnRSx3QkFDRUMsUUFBZUo7SUFBcUMsa0JBRXZELGdDQUpDNWdFLE1BRWlCNGdFO0lBQXFDLGVBQ3ZELGdDQUpDN2hFLE1BR0VpaUU7R0FHTDtHQUdDO2NBRTZDLHlDQVYzQ2hoRTtjQVVnQztJQUpoQ2loRTs7O1dBUEFsaUUsU0FXdUI7O09BSHJCc2lCOztJQVVGNi9DLHFCQVhBRDs7VUFQQWxpRSxLQUNBaUIsS0FDQStnRSx5QkFLQUUsWUFXQUM7OztFOzs7Ozs7OztHOzs7OztHQ2pCUTs7SUFPTjcvQzs7OztJQVBGcGhCLE9BQVE7SUFDUmtoRSxVQUFXOztZQUNYQyw4QkFBa0NDLFNBQWdCQztJQUFpQixrQkFFcEUsZ0NBSENILFVBQ2tERztJQUFpQixlQUNwRSxnQ0FIQ3JoRSxPQUVrQ29oRTtHQUdyQztHQUljO2NBRVg7Y0FEQTtjQVRBRixhQVEyRDtrQkFBbkI7Y0FUeENsaEUsVUFTNkI7SUFBbEIsY0FBRTtJQURYM0IsV0FDRjtJQUhBaWpFLHNCQUVFampFLFNBREEraUI7SUFlRm1nRCwyQkFoQkFEOzs7T0FOQXRoRTtPQUNBa2hFO09BQ0FDO09BSUFHO09BZ0JBQzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDcEJVOztJQURSbmdEOzs7O0lBYUFvZ0Q7OztJQWtCQUM7O0lBcUJBQzs7OztJQW5EQUMsUUFBUTtjQUt5QztjQUFiO0lBQWIsVUFBQztJQUF4QixjQUFNLGdDQUxOQTtjQUcyQztjQUgzQ0EsV0FHa0M7SUFMcENDOzs7V0FLaUI7O09BSmZ4Z0Q7O0lBWUZ5Z0Q7OztXQUlpQjs7T0FIZkw7O0lBVUZNLFlBQWE7SUFDYkMsWUFBYTs7Ozs7Ozs7O1lBQ2JDLHdCQUNFQyxVQUFpQkM7SUFBdUM7bUJBRTNELGdDQUpDSCxZQUVtQkc7SUFBdUMsZUFDM0QsZ0NBSkNKLFlBR0VHO0dBR0w7R0FHYTtJQUFSRSxVQUFRO2NBS3lDO2NBQWI7SUFBYixVQUFDO0lBQXhCLGNBQU0sZ0NBTE5BO0lBRkZDOzs7O1FBUEFOOztTQVNFSzthQUdrQyx5Q0FYcENKOztPQU9FTjs7SUFXRlksY0FBYTtJQUNiQyxjQUFhO0lBQ2JDLFlBQWE7WUFDYkMsd0JBQ0VQLFVBQWlCQyxVQUFpQk87SUFBdUM7bUJBRzVFLGdDQUxDRixZQUVvQ0U7O2VBRXJDLGdDQUxDSCxjQUdtQko7SUFBd0Q7Z0JBQzVFLGdDQUxDRyxjQUlFSjs7R0FJTDtHQUdhO0lBQVJTLFVBQVE7Y0FlNkM7Y0FBYjtjQUFaO2NBQWI7SUFBYixVQUFDO0lBRkgsY0FDRSxnQ0FkRkE7OztPQVZGSjs7UUFVRUk7WUFTQSx5Q0FsQkZIO2NBZUU7SUFSRkk7OztXQVRBTixpQkFnQkU7O09BTkFYOztJQXVCRmtCLG9CQTVFQWhCO0lBOEVBaUIscUJBakVBaEI7SUFtRUFpQixxQkFqREFWLGdCQS9CQVI7SUFrRkFtQixxQkE5QkFKLGdCQXBEQWY7OztPQUFBQTtPQWFBQztPQWFBRztPQUtBSTtPQVlBQztPQUNBQztPQUNBQztPQUNBQztPQU1BRztPQXdCQUM7T0FFQUM7T0FFQUM7T0FFQUM7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDaEZVOztJQURSM2hEOzs7O0lBbUJBb2dEOztJQXFCQUM7Ozs7SUF2Q0FFLFFBQVE7Y0FLd0M7Y0FBYjtJQUFaLFVBQUM7SUFBeEIsY0FBTSxnQ0FMTkE7Y0FHMEM7Y0FIMUNBLFdBR2lDO0lBTG5DcUI7OztXQUtpQjs7T0FKZjVoRDs7SUFXRjZoRCxPQUFRO0lBQ1JDLE9BQVE7Ozs7Ozs7OztZQUNSQyw2QkFDRWxCLFVBQWlCQztJQUF1QyxrQkFFM0QsZ0NBSkNnQixPQUVtQmhCO0lBQXVDLGVBQzNELGdDQUpDZSxPQUdFaEI7R0FHTDtHQUdhO0lBQVJFLFVBQVE7Y0FLd0M7Y0FBYjtJQUFaLFVBQUM7SUFBeEIsY0FBTSxnQ0FMTkE7SUFGRmlCOzs7O1FBUEFIO1lBU0VkLGFBRzZCLHlDQVgvQmU7O09BT0UxQjs7SUFXRjZCLFNBQVE7SUFDUkMsU0FBUTtJQUNSQyxPQUFRO1lBQ1JDLDZCQUNFdkIsVUFBaUJDLFVBQWlCTztJQUF1QzttQkFHNUUsZ0NBTENjLE9BRW9DZDttQkFFckMsZ0NBTENhLFNBR21CcEI7SUFBd0QsZUFDNUUsZ0NBTENtQixTQUlFcEI7R0FJTDtHQUdhO0lBQVJTLFVBQVE7Y0FlMkM7Y0FBYjtjQUFYO2NBQWI7SUFBWixVQUFDO0lBRkgsY0FDRSxnQ0FkRkE7OztPQVZGWTtXQVVFWixhQVNBLHlDQWxCRmE7Y0FlRTtJQVJGRTs7O1dBVEFKLFlBZ0JFOztPQU5BNUI7O0lBdUJGbUIsb0JBaEVBSTtJQWlFQUYscUJBOUNBTSxxQkFuQkFKO0lBa0VBRCxxQkExQkFVLHFCQXhDQVQ7OztPQUFBQTtPQWNBRztPQUtBQztPQVlBQztPQUNBQztPQUNBQztPQUNBQztPQU1BQztPQXdCQWI7T0FDQUU7T0FDQUM7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDbEVrQjs7SUFXaEIzaEQ7OztJQWtCQW9nRDtJQXVCQUM7Ozs7SUFwREZpQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFLRmhDLFFBQVE7Y0FLd0M7Y0FBYjtJQUFaLFVBQUM7SUFBeEIsY0FBTSxnQ0FMTkE7Y0FHMEM7Y0FIMUNBLFdBR2lDO0lBTG5DaUM7OztXQUtpQjs7T0FKZnhpRDtXQVhGc2lELHFCQUtBQztJQWlCQUUsT0FBUTtJQUNSQyxPQUFROzs7Ozs7Ozs7WUFDUkMsNkJBQ0VDLFNBQWdCQztJQUFzQyxrQkFDNUIsZ0NBSDVCSCxPQUVrQkc7SUFBc0MsZUFDeEQsZ0NBSkFKLE9BR0VHO0dBRUw7R0FHYTtJQUFSN0IsVUFBUTtjQUt3QztjQUFiO0lBQVosVUFBQztJQUF4QixjQUFNLGdDQUxOQTtJQUZGK0I7Ozs7UUFOQUw7WUFRRTFCLGFBRzZCLHlDQVYvQjJCOztPQU1FdEM7V0E3QkZrQztJQXdDQVMsU0FBUTtJQUNSQyxTQUFRO0lBQ1JDLE9BQVE7WUFDUkMsNkJBQ0VOLFNBQWdCQyxTQUFnQk07SUFBc0M7bUJBSXZFLGdDQU5ERixPQUVrQ0U7bUJBR2pDLGdDQU5ESCxTQUdrQkg7SUFBc0QsZUFFdkUsZ0NBTkRFLFNBSUVIO0dBTUw7R0FHYTtJQUFSdEIsVUFBUTtjQWUyQztjQUFiO2NBQVg7Y0FBYjtJQUFaLFVBQUM7SUFGSCxjQUNFLGdDQWRGQTs7O09BWkYwQjtXQVlFMUIsYUFTQSx5Q0FwQkYyQjtjQWlCRTtJQVJGRzs7O1dBWEFMLFlBa0JFOztPQU5BMUM7V0EvQ0ZrQztJQXNFQWMscUJBakVBYjtJQW1FQWMsc0JBakRBUixxQkFsQkFOO0lBcUVBZSxzQkE1QkFILHFCQXpDQVo7OztPQVZBRjtPQUtBQztPQUtBQztPQWNBRztPQUlBRztPQVlBQztPQUNBQztPQUNBQztPQUNBQztPQVFBRTtPQXdCQUM7T0FFQUM7T0FFQUM7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztZQ2pGQUMsSUFBT0MsT0FBT3ZtRTtJQUNhLGNBQUEsbUNBRHBCdW1FO0lBQ1QsT0FBQSxrREFEZ0J2bUU7R0FDd0M7WUFFdEQyL0QsS0FBTzRHO0lBQXVDLGNBQUEsbUNBQXZDQTtJQUFTLE9BQUE7R0FBbUQ7K0JBSG5FRCxLQUdBM0c7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzBCQTVnRSxHQUFNeW5FO0lBRWMsSUFBaEJDLGdCQUFnQiw4Q0FGZEQ7aUJBTVV2bUUsR0FBR3ltRSxHQUFNLFdBQU5BLEdBQUh6bUUsR0FBZTtJQUQ3QjtLQUFBLE1BQUEsV0FDRyxrQ0FKRHdtRTtLQUdGLE1BQUE7S0FKU0UsV0FJVDtLQUpDQyxXQUdELDZCQUZFSDtJQVVOLFNBQVFJLFFBQVc1VixHQUFZemU7S0FBcUIsSUFBakN5ZSxlQUFZemU7VUFDekJzMEI7O01BS2tDO09BRDlCQyxPQUxTOVYsSUFBWXplO09BTVMsMEJBQWxDLE9BTkVxMEIsUUFLRUUsS0FMcUJ2MEI7T0FDekJzMEIsZ0NBS2tDLE9BTmhDRCxRQUFXNVYsR0FLVDhWO0tBR1IsZUFSaUI5VixHQUFZemUsSUFDekJzMEI7SUFRTDtJQUVELFdBWFFELFdBWEhELDhCQUFBQSxVQUFRRDtHQXVCZDtZQXNDR0ssUUFBV0MsV0FBc0JDO0lBQXZCLElBQVMxMEIsY0FBSHllO0lBQWdDLFNBQzFDa1csR0FBTUYsSUFBSUcsVUFBb0JDO0tBQXpCO01BQVM3MEIsSUFBSjQwQjtNQUFDblcsSUFBRG1XO01BQXlDLFVBQXJCQztNQUMzQkM7TUFBSnpMOzs7U0FEWTVLLEtBQ1o0SyxPQUFJeUwsT0FEVzkwQjs7Y0FBUnkwQixLQUF3Qkksa0JBQUFBO1FBckNuQkUsYUFxQ21CRixTQUFBQTs7O29CQUFBQTs7O1FBZ0JwQnhJO1FBQUgySTtRQUNIVCxPQWhCTGxMLE1BQUl5TDtRQWlCQ0c7VUFEQVYsT0FqQk85VjthQWdCSnVXOzs7cUNBQUFBOzs7eUJBQUFBOzt3REFBQUE7eURBQUFBOztjQUV1QyxPQWxCOUNMLEdBQU1GLElBQUlHOztRQW1CTk07VUFuQlVsMUIsS0FpQlZ1MEI7YUFETWxJOzs7cUNBQUFBOzs7eUJBQUFBOzt3REFBQUE7eURBQUFBOztjQUdvQyxPQW5COUNzSSxHQUFNRixJQUFJRzs7a0JBQW9CQyxhQWtCMUJJLEtBQ0FDLFFBbkIwQkw7O2lCQUFBQTtVQXJDbkJFOztZQUFBQTtVQUNmSTs7a0JBRGVKOztXQU9IM0ksY0FBSHorRCxpQ0FBQUE7OztrQkFBQUE7O2lEQUFBQTtrREFBQUE7O09BQ0MsSUFBQSxxQ0FERXkrRDs7O2tCQUFBQTs7aURBQUFBO2tEQUFBQTs7OztRQUNvQjtRQUFBOzs7Ozs7O1VBUGhDK0k7O0tBYUosV0FkbUJKLFdBQUFBLFdBQ2ZJLFFBRGVKO0lBNkRsQjtJQUVDO0tBQUEsUUFBQSw4QkEzQmlDTCxTQUFqQmpXO0tBNEJoQixVQUFBLDhCQTVCaUNpVyxTQUFkMTBCOztLQXdDSjtNQUZBODBCO01BQVR6TDtNQUNGdUwsV0FERXZMLE1BQVN5TCxVQUFUekwsS0FBU3lMLFdBQUFBLEtBQVR6TDtNQUVGK0wsV0F2Q0VULEdBREtGLElBdUNQRyxVQXZDNkJGO0tBeUNqQyxXQURJVSxVQXhDNkJWLFNBQUFBOztJQWlDL0I7V0FqQ1NEO0tBZ0NQWSxNQUNGO0lBSUYsTUFBQSwyQ0FMSUE7R0FXUDtHQTNDYTtHQTRDRCxTQUFUQyxpQixPQTVDQWQ7R0E0Q1M7R0FDQSxTQUFUZSxtQixPQTdDQWY7WUFtREFnQiwrQkFBNkNkO0lBQW5CLElBQUsxMEIsY0FBSHllO0lBQTZDLFNBQ25Fa1csR0FDRXBwRTtLQUFVLEdBQVZBLFNBQU1HLE1BQU5ILFFBQUFrcUUsUUFBTS9wRSxjQUFOK3BFO0tBQVUsSUFBSXoxQixpQkFBSHllO0tBQW1CLGdCQUFBb1c7TUFDRixZQURFQSxTQUU3QkMsZ0JBQUp6TDthQUZpQ3dMOztZQUFuQnBXLEtBRWQ0SyxPQUFJeUwsT0FGYTkwQjthQUFkeTFCOztZQVFZQyxPQVJaRDtzQkFBQUE7WUFRR0U7WUFBTEM7Y0FORHZNLFFBTU1zTSxLQUFpQyxlQUF0Q0MsS0FOR2QsTUFNV1k7O1VBQ1gsZUFQSnJNLEtBQUl5TCxNQUZEVzs7OztnQkFBQUE7O29CQUE4Qlo7MkJBQTlCWTtVQWNNckosZ0JBQUh6K0QsZ0JBQ0g0bUUsT0FiSGxMLE1BQUl5TDtTQWFEUCxPQWZXOVY7V0FnQlhvWCxVQWhCQUo7OzhCQWNHOW5FOzs7a0JBQUFBOztpREFBQUE7a0RBQUFBOztXQUVIa29FLFVBakJGbEIsT0FDRWM7O1NBQWN6MUIsS0FlZHUwQixLQUVPLE9BRFBzQjs2QkFGTXpKOzs7aUJBQUFBOztnREFBQUE7aURBQUFBOztNQUc4QixPQWxCdEN1SSxPQWlCRWtCLHlCQUlUO0lBQUE7SUFFQztLQUFBLFFBQUEsOEJBeEI2Q25CLFNBQWpCalc7S0F5QjVCLFVBQUEsOEJBekI2Q2lXLFNBQWQxMEI7O0tBK0IvQjtNQUZlODBCO01BQVR6TDtNQUNGdUwsV0FERXZMLE1BQVN5TCxVQUFUekwsS0FBU3lMLFdBQUFBLEtBQVR6TDtNQUVOLE1BL0I2Q3FMO01BK0I3QyxNQTlCTUMsTUE2QkZDOzs7U0FFUSxJQUFZa0IscUJBQVZDO1lBSFIxTSxNQUFTeUw7Y0FJRGtCLEtBRFVGLFVBQ2RHLEtBRElGOztjQUNBQyxLQURBRCxVQUNKRSxLQURjSDtTQUVuQixXQUFDLGVBbEN1Q3BCLFNBaUNuQ3VCLEtBQ2EsZUFsQ3NCdkIsU0FpQy9Cc0I7UUFFVjtLQUpKLE9BQUEsV0FDRzs7SUFKVSxPQUFBO0dBU2hCOzsrQkF0Skd6cEUsSUEwR0Erb0UsUUFDQUMsVUFNQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0M3SVc7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0lBT0M7SUFPRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQThCUlUsU0FBYTNxRTtJQUFhLEdBQWJBLFNBQUVHLE1BQUZILFFBQUFxQixJQUFFbEIsY0FBRmtCO0lBQWEsYUFBSnVwRSxpQkFBRmpDLElBQUVpQyxnQkFBRmpDO0lBRXRCO0tBQUE7O1FBQ0ksa0JBQUlrQyxnQkFBSHYwRDtRQUFVLGlCQUFWQSxNQUhValYsR0FHUHdwRSxNQUhjbEM7O1FBSWxCLG9CQUFJbUMsa0JBQUh0MEQ7UUFBVSxpQkFBVkEsTUFKVW5WLEdBSVB5cEUsTUFKY25DOztZQUtqQm9DLFlBQVMsV0FBVEEsTUFMVTFwRTs7WUFNVjJwRSxZQUFTLFdBQVRBLE1BTmlCckM7O0lBT2Y7R0FFUjtZQUVHOUosRUFBTXg5RCxHQUFJc25FLEdBQU0saUJBQVZ0bkUsR0FBSXNuRSxJQUFpRDtZQUMzRHZtRSxFQUFPNm9FLElBQUtDLElBQU8saUJBQVpELElBQUtDLEtBQXVEO1lBQ25FQyxFQUFNOXBFLEdBQU0sV0FBTkEsR0FBNkI7WUFDbkMrcEUsSUFBT0gsSUFBTyxXQUFQQSxJQUFpQztZQUN4Q3JwRSxFQUFNK21FLEdBQU0sV0FBTkEsR0FBNkI7WUFDbkMwQyxJQUFPSCxJQUFPLFdBQVBBLElBQWlDO1lBRXhDSSxVQUFjdHJFO0lBQ2hCLEdBRGdCQSxTQUFRRyxNQUFSSCxRQUFBdXJFLFVBQVFwckUsY0FBUm9yRTtJQUNoQixhQURxQ1gsaUJBQVJZLFVBQVFaLGdCQUFSWTtJQUM3QjtLQUFBOztRQUVLLG9CQUFLTixlQUFKRDtRQUFZLGlCQUhGTSxVQUdWTixJQUh1Qk8sVUFHbkJOOztRQUNMLHNCQUFLTyxtQkFBSkM7UUFBWSxpQkFKRkgsVUFJVkcsTUFKdUJGLFVBSW5CQzs7WUFDSkUsZUFBVyxXQUxESixVQUtWSTs7WUFDQUMsZUFBVyxXQU5ZSixVQU12Qkk7O0lBSjhDO0dBSWY7WUFFbkNDLE1BQVF6ekM7SUFBSyxJQUF3QyxXQUE3Q0EsSUFBaUMsV0FBakNBO0lBQWMsb0IsT0FSdEJrekM7SUFRc0IsT0FBQTtHQUFrQztZQUN4REMsUUFBVW56QztJQUFpQyxlQUFqQ0E7dUIsT0FUVmt6Qzs7R0FTOEM7WUFDOUNFLFFBQVVwekM7SUFBaUMsZUFBakNBO3VCLE9BVlZrekM7O0dBVThDO0dBRXZCLG1CLE9BWnZCQTtHQVlVLElBQVZRLFVBQVU7WUFFVkMsY0FBaUJucUUsR0FFbkJvcUU7SUFGa0IsVUFFbEJBO1lBQUFBOztRQUNJLFlBREpBLFFBQ1FyRCxjQUFIdG5FO1FBQVUsaUJBQVZBLElBSGNPLE1BR1grbUUsSUFIVy9tRTs7UUFJZixjQUZKb3FFLFFBRVFuQixrQkFBSHYwRDtRQUFVLGlCQUFWQSxNQUpjMVUsTUFJWGlwRSxNQUpXanBFOztZQUtkNFUsTUFITHcxRCxRQUdjLFdBQVR4MUQsTUFMYzVVOztZQU1ka3BFLE1BSkxrQixRQUljLFdBQVRsQixNQU5jbHBFOztJQUVxQyxPQUF4RG9xRTtHQUk2QjtZQUMzQkMsVUFBWXJxRTtJQUFjLG9CLE9BUDFCbXFFLGNBT1lucUU7SUFBYyxPQUFBO0dBQWlCO1lBRTNDc3FFLHNCQUNGLDZCQUVhO1lBRVhDO0lBQ0YsOEJBQ087OztPQUNILHNCQUFJeEQsY0FBSHRuRTtPQUFVLE9BQUEsa0NBQVZBLEdBQUdzbkU7O09BQ0gsd0JBQUt1QyxpQkFBSkQ7T0FBWSxPQUFBLGtDQUFaQSxJQUFJQzs7T0FDTix3QkFBSUwsa0JBQUh2MEQ7T0FBVSxPQUFBLGtDQUFWQSxLQUFHdTBEOztPQUNILHdCQUFLWSxtQkFBSkM7T0FBWSxPQUFBLGtDQUFaQSxNQUFJRDs7V0FDTGoxRCxnQkFBTyxPQUFBLGtDQUFQQTs7V0FDQ20xRCxpQkFBUSxPQUFBLGtDQUFSQTs7V0FDRGIsZ0JBQU8sT0FBQSxrQ0FBUEE7O1dBQ0NjLGlCQUFRLE9BQUEsa0NBQVJBOztPQVFGO1FBUDJEUTtRQUFKQztRQUFaQztRQUFoQkM7UUFBakJDO1FBQUpDO1FBQUpDO1FBT0YsT0F2QkZSLGVBZ0I2Q0k7UUFNM0MsT0F0QkZKLGVBZ0I2Qks7T0FDN0IsT0FBQTs7O2dCQURJRztnQkFBSUQ7Z0JBQUlEOzs7Z0JBQTZDSDtnQkFBSUQ7O0dBVTVEO1lBRUR4SSxLQUFTNEUsT0FBZ0JtRTtJQUFvQjtLQUNwQixPQUFBLDJCQURBQTtLQUN2QkMsU0FBUztrQkFFQVo7S0FDa0IsV0EzQjdCRyxrQkEwQldIO0tBQ1IsOEJBSERZO0tBR0MsT0FBQSw4QkFIREE7SUFLQTtJQUpKLFdBQ0csbUNBSHdCRDtJQVVLO0tBQUEsT0FBQSw2QkFUNUJDO0tBU1UsV0FBQyxpREFWSnBFO0tBVVAsV0FBQTtJQVJKLE9BQUE7R0FXRDtHQXhHVzs7O09Bc0JSbUM7T0FXQTlMO09BQ0F6OEQ7T0FDQStvRTtPQUNBQztPQUNBeHBFO09BQ0F5cEU7T0FFQUM7T0FRQU87T0FDQU47T0FDQUM7T0FFQU07T0FFQUM7T0FPQUU7T0FFQUM7T0FLQUM7T0F1QkF2STtZQXlCQWlKLGVBQWtCQyxJQUFJQztJQUFPO0tBQUEsTUFBQSxXQUFYRCxPQUFJQztLQUFPLGFBQW9CLFdBQS9CRCxPQUFJQztJQUEyQjtHQUFnQjtZQUVqRUMsbUJBQXNCQztJQUFtQixJQUN2Q0MsTUFEb0JELFNBRXBCRSxNQUZvQkY7V0FDcEJDLFVBQ0FDLGFBQUFBLFNBREFELGNBQ0FDLFNBREFEO0dBR0w7WUFFR0UscUJBQXlDVDtJQUF6QixJQUFhRixlQUFYQztJQUFnRCxTQUloRVc7S0FDQTtNQUFxQ25DO01BQVhEO01BQWJ3QjtNQUFYQztNQUNBWSxTQUFTLHVCQURUWixJQUNpQixTQURPekI7TUFFeEJzQyxTQUFTLHVCQUZFZCxJQUVNLFNBRmtCdkI7WUFDbkNvQyxTQURXYixNQUVYYyxTQUZBYjttQkFDQVksUUFBQUEsU0FEV2IsS0FBWEM7bUJBRUFhLFNBRkFiLEtBQVdELElBRVhjO0lBR0w7aUJBT0l2QjtLQUhBLFVBR0FBO2FBQUFBOzthQUZXZixLQUVYZSxRQUZ5QixlQUFkZixtQkFBQUE7O2FBQ0xDLEtBQ05jLFFBRGMsZUFBUmQsbUJBQUFBOztLQUNHLFdBQVRjO0lBQWM7SUFMbkI7S0FBQSxNQUFBLFdBQ0csa0NBYndDVztLQVkzQyxNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7O0tBVVksSUFBa0JhLGlCQUFoQkM7S0FBb0MsVUFBcENBO01BQW9DLE9BQXBDQTs7bUJBQWdCRCwyQkFBQUE7VUFHUjtXQURBdEMsS0FGUXNDO1dBRWxCdkMsS0FGRXdDO1dBR1EsUUFyQmxCSixjQUpnQlgsSUFBV0QsU0F3Qm5CeEIsSUFBVUM7V0FDTndDO1dBQUpDO1dBQ0RDO2FBQVksbUJBRlgzQyxRQUVpQyxtQkFGdkJDO1VBR1Q7c0JBQ0ksb0JBQWdCLFNBSnJCRCxNQUNBMEMsTUFEQTFDOzs7b0JBQ0EwQztvQkFBSUQ7OztvQkFDTEU7b0JBU0ksb0JBVkhELE1BREExQztvQkFZRyxvQkFYQ3lDLE1BRE14QzsyQkFjTCxvQkFBZ0IsU0FkWEEsTUFDTndDLE1BRE14Qzs7OzttQkFGUXNDLDJCQUFBQTtVQW1CUjtXQURBOUIsT0FsQlE4QjtXQWtCbEIvQixPQWxCRWdDO1dBbUJRLFVBckNsQkosY0FKZ0JYLElBQVdELFNBd0NUZixNQUFWRDtXQUNJb0M7V0FBSkM7V0FDREM7YUFBWSxtQkFGWHRDLFVBRWlDLG1CQUZ2QkM7VUFHZjtzQkFDVSxvQkFBZ0IsU0FKckJELFFBQ0lvQyxNQURKcEM7OztvQkFDQXFDO29CQUFJRDs7O29CQUNMRTtvQkFTSSxvQkFWSEQsTUFEVXBDO29CQVlQLG9CQVhDbUMsTUFESnBDOzt3QkFjSyxvQkFBZ0IsU0FkWEMsUUFDVm9DLE1BRFVwQzs7Ozs7S0FnQlYsV0FsQ0UrQixVQUFnQkQ7SUFvQzFCO0lBOUNKLFVBQUEsV0FVRztJQVZILE9BQUE7R0FnREQ7WUFFR1EsYUFBZ0JmLE1BQTRCLE9BQTVCQSxhQUFBQSxtQkFFbkI7WUFLR2dCLCtCQUNDQztJQUFnRDtLQUduQixRQUFBLDRCQVg5QkYsY0FRQ0U7S0FHY0M7S0FBWkM7aUJBR1czekQsSUFBSWtvQjtLQUNiLE9BRFNsb0IsV0FBSWtvQjs7ZUFBQUE7OztpQkFBSmxvQjs7c0JBTUEsNkJBTkFBLFVBQUlrb0I7SUFPWjtJQVJOO0tBQUEsTUFBQSxXQUNHLGtDQUhBeXJDO0tBRUg7aUJBY09sRSxPQUhNdG9FO0tBQ04sS0FFQXNvRSxPQURRLFdBRkZ0b0U7U0FHSXlzRSxLQUFWbkUsVUFBR29FLEtBQUhwRTtRQUhNdG9FLFdBR0gwc0UsWUFBQUEsWUFIRzFzRTtNQUk0QyxlQUQvQzBzRSxPQUhHMXNFLE1BR0gwc0UsUUFBT0Q7S0FHRCxXQU5IenNFLEdBR05zb0U7SUFNQztJQXBCUjtLQURFcUU7T0FDRixXQVVHO2lCQWVXOXpELElBQUlrb0I7S0FDYixPQURTbG9CLFdBQUlrb0I7O2VBQUFBOzs7aUJBQUpsb0I7O2lCQU1pQiw2QkFOakJBLFVBQUlrb0I7SUFPWjtJQVJOO0tBQUEsTUFBQSxXQUNHLGtDQTNCWXdyQztLQTBCZjtpQkFjT2pFLE9BSE10b0U7S0FDTixLQUVBc29FLE9BRFEsV0FGRnRvRTtTQUdJeXNFLEtBQVZuRSxVQUFHb0UsS0FBSHBFO1FBSE10b0UsV0FHSDBzRSxZQUhHMXNFLFdBR0gwc0U7TUFDK0MsZUFEL0NBLE9BSEcxc0UsTUFHSDBzRSxRQUFPRDtLQUdELFdBTkh6c0UsR0FHTnNvRTtJQU1DO0lBcEJSO0tBREVzRTtPQUNGLFdBVUc7SUFhTCxPQUFBLHVCQWhESUQsbUJBd0JBQztHQXlCTDtZQU1HQyx1QkFBMEJDOztLQUdkO01BQW1CQztNQUFQQztNQUFMQztNQUNWQyxRQURVRCxTQUFLRDtNQUVmRyxRQUZVRixTQUFZRjtNQUd0QkssWUFGQUYsT0FDQUM7TUFFQUUsZ0JBSlVKLFFBRVZFO01BR0FHLGdCQUpBSixPQURVRDtLQU1kLGVBRklJLFNBSlVKLGlCQUtWSyxTQUZBRjtJQVNMO0lBYko7S0FBQSxNQUFBLFdBQ0csa0NBSHVCTjtLQUUxQixNQUFBO2lCQWVjajBELElBQUlrb0I7S0FDYixHQURTbG9CLFdBQUlrb0IsVUFDWTtRQURaQSxXQUFKbG9CLFVBR3VCO0tBS2YsSUFBWDAwRCxXQTVGWG5CLGFBb0ZjdnpELEtBU0gyMEQsV0E3RlhwQixhQW9Ga0JyckM7S0FTSSxHQURYd3NDLGNBQ0FDLFVBQ3VCO1VBRnZCRCxZQUNBQyxVQUc4QjtLQUUzQjtJQUdSO0lBaENOO0tBREVDLHdCQUNGLFdBZUc7O0tBc0JTLElBQVlWLG1CQUFMRTtLQUFvQixXQUFwQkEsWUFBQUEsU0FBS0Y7SUFBdUM7SUFEL0Q7S0FBQSxNQUFBLFdBQ0csa0NBdkN1QkQ7S0FzQzFCLE1BQUE7S0FERVksZUFDRjtpQkFRSW5HLE1BQU12bkU7S0FBTSxJQUNQUCxJQURDTyxTQUVEMnRFLFNBRkMzdEUsU0FBQUE7S0FHTCxTQUFJNHRFO01BQWtCO09BQVNDO09BQVBDO09BQ2xCeEMsWUFIRjdyRSxHQUVvQnF1RTtPQUVsQnZDLFlBSkY5ckUsR0FFMkJvdUU7TUFHN0IsV0FGSXZDLEtBQ0FDO0tBRUw7S0FDRSxHQXpIUmEsYUFpSFVwc0U7TUFVRDtPQUFBLE1BQUEsb0NBUkEydEUsSUFGTHBHO09BU093RztTQUNGLFdBQ0csNEJBUkhIO09BU0VJLGVBQWUsb0NBVmpCTCxJQUZMcEc7TUFhRyxXQURJeUcsY0FIQUQ7O0tBTWU7TUFBZkUsaUJBQWUsb0NBYmpCTixJQUZMcEc7TUFpQkssTUFBQSxvQ0FmQW9HLElBYUVNO01BQ0FDO1FBQ0YsV0FDRyw0QkFmSE47S0FnQkYsV0FKSUssZ0JBQ0FDO0lBS1A7SUF4Qk47O09BQUE7VUFFRyxpQ0FSQ1I7VUFwQ0FEOztJQTBDSixPQXZHRXBCLCtCQXVHRjtHQWdDRDtZQVFHanRFLEdBQU8rdUUsY0FBOEJyQjtJQUEyQixTQUEzQkE7S0FDdkMsTUFBQTtJQUU2QixJQUF6QnNCLDJCQXRGRnZCLHVCQW1GcUNDO2lCQU8zQjlzRSxHQUFLLGtCQUFMQSxlQUFBQSxRQUE0QjtJQUR4QztLQUFBO09BQUEsV0FDRyxrQ0FKQ291RTtLQUdKLE1BQUE7O0tBSWE7TUFBMEJydEM7TUFBVHN0QztNQUFOeDFEO01BQVR5MUQ7TUFDTkMsTUFETUQsVUFBU3oxRCxRQUFBQTtNQUVmMjFELE1BRnFCSCxVQUFTdHRDLFFBQUFBO1lBQzlCd3RDLFNBQ0FDOztlQUFBQTs7aUJBREFEOztpQkFPbUIsNkJBUG5CQSxRQUNBQztJQVFMO0lBZEo7S0FBQSxNQUFBLFdBSUc7S0FKSCxNQUFBOztLQWlCYTs7TUFBMkJ6dEM7TUFBVHN0Qzs7TUFBTngxRDtNQUFUeTFEO01BQ1BDLE1BRE9ELFVBQVN6MUQsUUFBQUE7TUFFaEIyMUQsTUFGc0JILFVBQVN0dEMsUUFBQUE7UUFDL0J3dEMsVUFDQUM7TUFDSixNQUFBO0tBQ1EsSUFBSnpILElBSEF3SDtRQURPRDtVQU1jRyxPQU5MNTFELElBTUQ2MUQsT0FOZ0IzdEMsSUFNdkI0dEMsUUFMUkosUUFLQ0ssUUFKREo7O01BS3lDO09BRGpDSyxVQUpSTDtPQUlDTSxVQUxEUDtPQUtxQkUsT0FOVTF0QztPQU1oQjJ0QyxPQU5DNzFEO09BTVI4MUQsUUFBQUU7T0FBUEQsUUFBQUU7S0FJTztNQUFOeEQsWUFKRHNELE9BRkQ3SDtNQU9Fd0UsWUFMTW9ELE9BRlI1SDtNQUtBd0MsUUFDRStCLEtBQ0FDLFNBTG1Ca0Q7S0FBTkMsY0FHZm5GOztJQU1MO0lBaENKLFdBaUJHO0lBaUJTLElBQVJ6WCxRQUFRLDJCQXJDUnNjO2FBc0NJVyxXQUFjMUQ7S0FBOEIsWUFBOUJBO2lCQUVWLE9BQUE7U0FDSG9EO1FBeFFQeEQsZUF3UU93RCxNQUpMM2MsUUFNSTtLQUFtQyxVQUxuQ2lkLFdBR0NOO0tBRUksV0F4UVhyRCxtQkFzUU9xRDtJQUlSO0lBQ3lDO0tBQUEsTUFSbENNLFdBREpqZDtLQVNBaVosV0EzUUZLLG1CQWtRRXRaO1dBNVBGMFosY0FvTk8yQyxjQWlETHBEO0lBRUosT0FBQTthQUVHOzs7O2tCQWJDalosY0FBQUE7a0JBQUFBLGNBQUFBOztHQW1CTDtHQWhTd0I7SUFBQTs7T0FTckJtWjtPQUVBRztPQU1BSTtPQThEQVk7T0FPQUM7T0E0REFRO09BbUZBenRFOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0lDaFZGNHZFO0lBQ0FDO0lBd0JBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBOUNBQztJQUNBQztJQUNBQztJQUNBQztZQUVBQyxhQUFnQkMsTUFBbUJySTtJQUNyQyxPQURxQ0E7Y0FBbkJxSTtnQkFBbUJySTtnQkFBQUEsV0FIbkNrSSxhQURBRDs7R0FXRDtHQVBnQjtJQVNmSztJQUVBN3ZFO0lBQ0E4dkU7SUFFQUM7SUFPQUM7SUFDQUM7SUFDQUM7SUFFQUM7WUFrQkFDLFFBQVk5aUMsR0FBVTl1QztJQUFvQixHQUFwQkEsU0FBYUcsTUFBYkgsUUFBQTZ4RSxRQUFhMXhFLGNBQWIweEUsUUFGdEJmO0lBUUEsT0FBQTs7O2FBTlloaUMseUJBQVUraUM7YUFBVi9pQyx5QkFBVStpQzthQUFWL2lDLDBCQUFVK2lDO2FBQVYvaUMsMEJBQVUraUM7R0FPdkI7WUFFQ0MsZUFFR2pTLHFCQUVBNy9EO1FBRHdCK3hFLGlCQUFSQztJQUtqQixHQUpDaHlFLFNBQVNHLE1BQVRILFFBQUFpeUUsV0FBUzl4RSxjQUFUOHhFO0lBSUQsYUFIVXJILGlCQUFUc0gsV0FBU3RILGdCQUFUc0g7SUFHRCxhQUZNQyxpQkFBTEMsT0FBS0QsZ0JBQUxDO0lBRUQsYUFEY0MsaUJBQWJSLFFBQWFRLGdCQUFiUixRQWxCSGY7SUFvQks7S0FDSXdCLE1BUFVOO0tBT2hCTyxPQVBnQlA7S0FRVHJELFNBRVYsd0JBVjJCb0QsVUFBUkM7S0FRaEJwRCxRQUNILHVCQVQyQm1ELFVBQVJDO0tBWWpCUSxRQXhCRlosWUFvQkdoRCxPQUFPRCxRQURQNEQsTUFBTUQsVUFITlQsUUFMQWhTO0tBMEJ1QixXQUFDLG9DQXZCeEJxUztLQXVCSCxXQUFDOzs7UUFKSzs7S0FEdUIsT0FBQSxrQ0FaMUJ0RCxPQUFPRDtnQkFZSjtnQkFEQSw4Q0FQSjZEO0tBS0UsV0FDRSxvQ0FqQkhQO0tBZ0JDLE9BQUEsNkJBZERHO0tBYUQsV0FBQTtJQVNGLE9BQUE7O1lBSUFLLFNBRUd6eUU7SUFNRCxHQU5DQSxTQUFNRyxNQUFOSCxRQUFBd3lFLFFBQU1yeUUsY0FBTnF5RTtJQU1EO1NBTFk1SCxpQkFBWDhILGFBQVc5SDs7U0FBWDhIO0lBS0QsWUFKV1AsZ0JBQVZRLFlBQVVSLGdCQUFWUTtJQUlEO1NBSGFOLGdCQUFaTyxjQUFZUDs7U0FBWk87SUFHRDtTQUZjQyxnQkFBYkMsZUFBYUQ7O1NBQWJDO0lBRUQsWUFET0MsZ0JBQU5sSCxRQUFNa0gsZ0JBQU5sSDtJQUVELGdCQUFBbUc7S0FFSjtNQUlLO1FBQUE7OztVQU5EQSw4QkFOQ1U7VUFNRFYsOEJBTENXO1VBR0E5RywyQkFGQStHO1VBRUEvRywyQkFEQWlIO01BUUEsT0FBQTtNQURILE9BQUEsdUJBWEdOO0tBV0gsT0FBQSxzREFTRDtHQUFBO1lBRUNRLGFBRUdoekU7SUFLRCxHQUxDQSxTQUFXRyxNQUFYSCxRQUFBMHlFLGFBQVd2eUUsY0FBWHV5RTtJQUtELFlBSlc5SCxnQkFBVitILFlBQVUvSCxnQkFBVitIO0lBSUQ7U0FIYVIsZ0JBQVpTLGNBQVlUOztTQUFaUztJQUdEO1NBRmNQLGdCQUFiUyxlQUFhVDs7U0FBYlM7SUFFRCxZQURPRCxnQkFBTmhILFFBQU1nSCxnQkFBTmhIO0lBRUQsZ0JBQUFtRztLQUNHLE9BakNMUzs7bUJBMEJHQzttQkFDQUM7bUJBQ0FDO21CQUNBRTttQkFDQWpIOztjQUVEbUcsUUFZTDtHQUFBO1lBRUdpQjtJQUVHcFQsY0FDQW1TLFFBQ0FoeUU7SSxHQUFBQSxTQUFTRyxNQUFUSCxRQUFBaXlFLFdBQVM5eEUsY0FBVDh4RTtJQVNELFlBUlVySCxnQkFBVHNILFdBQVN0SCxnQkFBVHNIO0lBUUQsWUFQWUMsZ0JBQVhPLGFBQVdQLGdCQUFYTztJQU9ELFlBTldMLGdCQUFWTSxZQUFVTixnQkFBVk07SUFNRDtTQUxhRSxnQkFBWkQsY0FBWUM7O1NBQVpEO0lBS0Q7U0FKY0csZ0JBQWJELGVBQWFDOztTQUFiRDtJQUlELFlBSElJLGdCQUFIcnpFLEtBQUdxekUsZ0JBQUhyekU7SUFHRCxZQUZPc3pFLGdCQUFOM0ssUUFBTTJLLGdCQUFOM0s7SUFFRCxZQURTNEssZ0JBQVJDLFVBQVFELGdCQUFSQztJQXVDdUI7S0FBQSxVQUFDLG9DQTlDeEJuQjtLQThDSCxVQUFDOzs7UUFKSzs7O0tBRHVCLE1BQUE7S0EzQjNCckc7ZUEyQkk7O09BbENId0g7VUFsQ0hMO2dCQTRCR047Z0JBQ0FDO2dCQUNBQztnQkFDQUU7Z0JBVURqSDtZQWpCQ2hNO1dBQ0FtUztVQWpESFM7O2dCQW9ER0M7Z0JBQ0FDO2dCQUNBQztnQkFDQUU7Z0JBVURqSDtZQWpCQ2hNO1dBQ0FtUztLQXNCRyxVQUNBLG9DQXRCSEM7S0FxQkcsTUFBQSw0QkFkSHpKOztPQWFFLDBCQWRGM29FOztjQWNtQixvQ0FkbkJBO0tBY0MsTUFBQTtLQURGLFVBQUE7SUE0QkYsT0FBQTs7WUFJQXl6RSxxQkFBd0JDO0lBQTJCO0tBQ2pEbjdDLElBQUksK0JBRGtCbTdDO2VBYWhCOztXQURBLDJDQXBMUjFDOztXQW1MUSwyQ0FwTFJEO0tBa0xnQixVQUNSO0tBREYsVUFBQTtLQUpOO1dBQ0U7S0FGWSxNQUFBLCtDQUhaeDRDO0tBR0ksVUFBQTtJQUNOLE9BQUE7R0FjSDtZQUVHbzdDLGNBQWlCRDtJQUEyQjtLQUMxQ243QyxJQUFJLCtCQURXbTdDOztXQWFUOzs7UUFEQSw2Q0F6TVIxQzs7OztRQXdNUSw2Q0F6TVJEOztLQXVNZ0IsVUFDUjtLQURGLFVBQUE7S0FKTjtXQUNFO0tBRlksTUFBQSx3Q0FIWng0QztLQUdJLFVBQUE7SUFDTixPQUFBO0dBY0g7R0FNSztJQUFBLE1BQUEsNEJBekJGbzdDO0lBd0JBLE1BQUEsNEJBN0NBRjtJQTZDQSxNQUFBO0lBRE0sVUFBQTtJQUZORyxVQUNGOzs7T0F6T0UxQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVNBRTtPQUVBN3ZFO09BQ0E4dkU7T0FFQUM7T0FFQVg7T0FDQUM7T0FEQUQ7T0FDQUM7T0FJQVc7T0FDQUM7T0FDQUM7T0FFQUM7T0FnQkFiO09BRUFjO09BU0FFO09BZ0NBVztPQXdCQU87T0FzQkFDO09BdURBSztPQXFCQUU7T0FxQkFDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JPSnZyRTtJQUFBRDs7Ozs7Ozs7Ozs7OztJQURBeXJFO0lBQUFDOzs7Ozs7Ozs7OztLQUFBRDtjQUNBL3BFO01BQUEsSUFEQTRNLGVBQUF0SztNQUNpQiwrQkFBakJ0QztNQURBLFdBQUEsNkJBQ0FBLE1BREFzQztNQUNpQiwrQkFBakJ0QztNQURBLFdBQ21DLCtCQUFuQ0EsV0FEQTRNO01BQUEsT0FBQSwrQkFDQTVNO0tBQXVDOztLQUR2Q2dxRTtjQUNBdHlFLEdBQUEsT0FBQSxvQ0FEQXF5RSxjQUNBcnlFLEdBQXVDO0dBQXZDLFNBQUF1eUUsa0JBQWlCOXJEO0lBQWpCLFNBQWlCQTtlQUFBQTs7OztPQUFBO1FBQUE0WjtRQUFBQztRQUFBQyxXQUFBLDZCQUFBRDtRQUFBRSxXQUFBLDRCQUFBSDtPQUFBLFdBQUFFLFVBQUFDOzs7O0lBQUEsT0FBQTswQ0FBakIzNUIscUJBQWlCNGY7R0FBc0I7WUFBdkMrckQ7SUFBQTtLQUFpQnZ5QztLQUFBQztLQUFBOHpCLHdDQUFBOXpCO0tBQUErekIsdUNBQUFoMEI7bUJBQUErekIsY0FBQUM7R0FBc0I7R0FBdkMsU0FBQXdlLG9CQUFpQjdwRTtJQUFqQixVQUFpQkEscUNBQUFBO2VBQUFBOzs7OztRQUFBd1E7UUFBQTdMO1FBQUFDLG9DQUFBRDtRQUFBOEwsNERBQUFEO2tCQUFBNUwsTUFBQTZMOzs7O3lEQUFqQnpTLFdBQWlCZ0M7R0FBc0I7WUFBdkM4cEU7SUFBQTtLQUFpQnQ1RDtLQUFBN0w7S0FBQUMsb0NBQUFEO0tBQUE4TCwyREFBQUQ7OEJBQUE1TCxVQUFBNkw7R0FBc0I7WUFHbkNzNUQsTUFFWWgwRTtJQUNWLEdBRFVBLFNBQUVHLE1BQUZILFFBQUFvNEIsSUFBRWo0QixjQUFGaTRCO0lBRVYsZ0JBQUNwNEI7S0FLTCxHQUxLQTtVQUFrQkcsTUFBbEJILFFBQUFpMEUsb0JBQWtCOXpFOztVQUFsQjh6RTtLQUtMLFlBSmVySixnQkFBVnNKLFlBQVV0SixnQkFBVnNKO0tBSUwsWUFIZS9CLGdCQUFWZ0MsWUFBVWhDLGdCQUFWZ0M7UUFGQUY7TUFXUTtPQUFBO09BSkVHO09BQU5DOztNQVFJO09BUkVDLG1CQU5WSjtPQU1JSyxnREFMSko7T0FLVUMsYUFBQUU7T0FBTkQsT0FBQUU7O01BVUQ1SDs7ZUFWT3lILGdCQUFOQztlQUFBQSxVQUFNRDtLQWVYLE9BQUEsbUNBeEJVaDhDLEdBbUJOdTBDLE1BT1A7R0FBQTtZQUVDNkgsTUFFR0MsTUFDQXowRTtJQUtMLEdBTEtBO1NBQWtCRyxNQUFsQkgsUUFBQWkwRSxvQkFBa0I5ekU7O1NBQWxCOHpFO0lBS0wsWUFKZXJKLGdCQUFWc0osWUFBVXRKLGdCQUFWc0o7SUFJTCxZQUhlL0IsZ0JBQVZnQyxZQUFVaEMsZ0JBQVZnQztJQUlIOztPQXZDQUgsU0FnQ0dTO2FBQ0FSLHdCQUNBQyxnQkFDQUM7SUFJSCxPQUFBO0dBQ0Q7WUFHQ08sTUFFR0QsTUFDQXowRTtJQUtMLEdBTEtBO1NBQWtCRyxNQUFsQkgsUUFBQWkwRSxvQkFBa0I5ekU7O1NBQWxCOHpFO0lBS0wsWUFKZXJKLGdCQUFWc0osWUFBVXRKLGdCQUFWc0o7SUFJTCxZQUhlL0IsZ0JBQVZnQyxZQUFVaEMsZ0JBQVZnQztPQUZBRjs7TUFPVVU7TUFBTk47O0tBTWdEO01BTjFDRCxpQkFOVkY7TUFNSUssOENBTEpKO01BS1VRLFdBQUFQO01BQU5DLE9BQUFFO3dCQVJKRTtrQkFRVUUsY0FBTk47a0JBQUFBLFVBQU1NO0dBWWQ7WUFFQ0MsTUFFR0gsTUFDQXowRTtJQUtMLEdBTEtBO1NBQWtCRyxNQUFsQkgsUUFBQWkwRSxvQkFBa0I5ekU7O1NBQWxCOHpFO0lBS0wsWUFKZXJKLGdCQUFWc0osWUFBVXRKLGdCQUFWc0o7SUFJTCxZQUhlL0IsZ0JBQVZnQyxZQUFVaEMsZ0JBQVZnQztJQUlIOztPQWpDQU8sTUEwQkdELFVBQ0FSLHdCQUNBQyxnQkFDQUM7SUFJSCxPQUFBO0dBQ0Q7WUFFQ1UsY0FDYTcwRTtJQUE0QixHQUE1QkEsU0FBSUcsTUFBSkgsUUFBQTgwRSxNQUFJMzBFLGNBQUoyMEU7SUFBNEIsWUFBSmxLLGdCQUFKbUssTUFBSW5LLGdCQUFKbUs7O0tBTXJCO01BRGdCeHlFO01BQ3RCeXlFOzs7Ozs7Y0FEc0J6eUU7TUFRZ0I7T0FBQSxNQS9ENUNpeUU7T0E2RE1TOzs7aUJBN0ROVDtPQTZETVM7U0FHRTs7Ozs7YUFSRkQ7Ozs7cUJBRHNCenlFLCtCQUFBQTs7TUFpQk07T0FBQTtPQUExQixNQW5DUnF5RTtPQWlDTU0sV0FFRTs7TUFDWTs7OztjQWpCZEY7T0FpQmMsVUFwQ3BCSjtPQWlDTU0sV0FHRTtTQXRCTnZJLE9BNEJBLHVCQWxCSXNJLGFBU0FDOzs7S0FoQnNCO01BQUEsTUF0RDVCVjtNQXNERSxNQWpCRkk7TUFjRWpJLE9BR0E7SUEyQlMsVUFBQSxvQ0EvQnNCb0ksS0FDL0JwSTtJQThCUyxPQUFBLG9DQS9CRW1JO0dBZ0NoQjtZQUNHSyxlQUNhbjFFO0lBQTRCLEdBQTVCQSxTQUFJRyxNQUFKSCxRQUFBODBFLE1BQUkzMEUsY0FBSjIwRTtJQUE0QixZQUFKbEssZ0JBQUptSyxNQUFJbkssZ0JBQUptSzs7S0FPckI7TUFGZ0J4eUU7TUFFdEJ5eUU7Ozs7OztrQkFGc0J6eUU7MEJBQUFBOztNQVNLO09BQUEsTUFoSWpDeXhFO09BOEhNa0I7OztpQkE5SE5sQjtPQThITWtCO1NBR0U7Ozs7O2FBUkZGOzs7O2NBRnNCenlFO01Ba0JNO09BQUE7T0FBMUIsTUE5RlJteUU7T0E0Rk1PLGNBRUU7O01BQ1k7Ozs7O1dBakJkRDs7OztPQWlCYyxVQS9GcEJOO09BNEZNTyxjQUdFO1NBdkJOdEksT0E2QkEsdUJBbEJJdUksVUFTQUQ7OztLQWpCc0I7TUFBQSxNQXRINUJqQjtNQXNIRSxNQTNFRlU7TUF3RUUvSCxPQUdBO0lBNEJTLFVBQUEsb0NBaENzQm9JLEtBQy9CcEk7SUErQlMsT0FBQSxvQ0FoQ0VtSTtHQWlDaEI7Ozs7T0F2SkRwQjtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUdJQztPQThCQVE7T0FhQUU7T0F3QkFFO09BWUFDO09Ba0NBTTs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDeEhhOzs7Ozs7OztJQUFBOzs7O1lBT2J4SSxLQUFReUksT0FBT0MsT0FBT0MsUUFBUWw5QztJQUFhOzs7a0JBQWJBOztTQVU1QixrQ0FWNEJBLGNBQUFBLFFBQXRCZzlDOztLQUdNOztzQkFIUUUsb0JBQVFsOUMsd0JBQUFBOztTQVE1QixrQ0FSNEJBLGNBQUFBLFFBQWZpOUM7O0lBR0QsT0FBQTtHQVdqQjtZQUVHelIsS0FBUy9EO0lBQUY7S0FBOEIwVjtLQUFiQztLQUN0QmpDLE9BRG1DZ0M7S0FFbkNFLFFBQVEsK0JBRFJsQztLQUdGLFFBQUEsZ0RBSnFDZ0M7S0FHM0JGO0tBQVBEO0tBRU9NLGNBRkFMLE9BRlI5QjtLQUlDb0MsY0FGQVAsT0FGRDdCO0tBYUYsTUE5QkE1RyxLQXFCR2dKLFNBQU9EO0lBU1YsT0FBQTs7YUFkUzdWO2FBQWUyVjs7OENBRXRCQzs7OztHQWNMOzRDQWhDRzlJLE1BZ0JBL0k7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDakJBO0tBQXlEMWhFO0tBQWIwekU7S0FBZkM7S0FBTnRDO0tBQWR1QztLQUFQcDFFOztPQUFPbzFFO1NBQ0h2VDtZQUR1QnNUO0tBS2hCLEdBTCtCRDs7U0FBMUNsMUUsV0FBQUE7V0FPSzAzQixJQVBMMTNCO09BTWEsR0FBQSwwQkFDUjAzQjs7O1FBQVEsS0FBQSwrQkFBUkE7OztXQU5EbXFDOzs7VUFBQUE7OztVQUFBQTs7U0FBQUE7SUFVSjtLQURJd1Qsa0JBQVksMkJBVmhCcjFFO0tBV0lzMUU7T0FYR0Y7VUFXb0IsMkNBWDNCcDFFO1VBQUFBO0tBZ0JlLE1BQUEsMkJBTFhzMUUsU0FYbUQ5ekU7S0FnQm5ELFVBQUM7S0FEYzs7O1lBZGZxZ0UsU0FjOEIsK0JBZmJnUixXQVVqQndDO0tBS0UsVUFBQTtJQUhOLFdBQ0U7R0FNSDtHQXJCSCxJQURFRSxXQUNGO1lBdUJFQyxXQUNDSixjQUFjRCxlQUFlcjBFLEdBQWVVO0lBTTdDLFVBQUEsK0JBTjhCVjtJQUN0QixPQUFBO2FBMUJSeTBFO2lCQXlCOEJ6MEUsTUFBN0JzMEUsY0FBNkJ0MEUsU0FBZnEwRSxvQkFBOEIzekU7R0FRN0M7R0FFVztJQUFYaTBFLGVBQVk7O0lBSWE7S0FBNEJDO0tBQWpCQztLQUFUdjBFOztLQUNWLE1BQUEsb0NBRFVBO0lBQ3hCLEdBQUE7S0FLVztNQUpSK0YsTUFGOEJ3dUU7TUFNdEIsTUFBQSwrQkFOdUNEO2dCQU1qRDtnQkFEQTtNQURvQixVQUFDLGdDQUZuQnZ1RTtLQUNKLFdBQ0U7O0lBSUc7S0FBQTtLQUFpQixNQUFBLG9DQVJHL0Y7SUFRakIsR0FBQTtLQUVhO01BRGpCdzBFLFFBVDhCRDtNQVViLFVBQUMsZ0NBRGxCQztLQUNKLFdBQUM7O0lBQ08sR0FBQSxvQ0FYaUJ4MEU7S0FZSztNQUFBLE1BQUEsb0NBWkxBO01BWU4sVUFBQztLQUQ0QixXQUMvQzs7SUFFK0I7S0FBQSxNQUFBLG9DQWRQQTtLQWNKLFVBQUM7SUFEakIsV0FDSjtHQUNGO0dBaEJILElBREV5MEUsZUFDRjs7YUF1QkkxWCxFQUFJdjVDLEdBQUssMENBQUxBLFNBQThCO2FBQzlCa3hELFdBQ0NDLFlBQVlDLFVBQVVuRCxNQUFNb0Q7S0FBaUMsR0FBakREO01BS2I7T0FBQSxlQUE0QngwRSxHQUFLLFdBQUxBLE1BQWtCO09BQXBDLE1BQUEsMkJBTG1CeTBFO09BRy9CQyxpQkFFRTs7VUFGRkEsaUJBR0Usa0NBTnVCckQsTUFBTW9EO2tCQWFyQnowRSxHQUFHb2pCLEdBQU0sV0FBVHBqQixHQUFHb2pCLEdBQVk7S0FEN0IsVUFBQSxXQUNHLGtDQWJnQ3F4RDs7TUFjaEI7T0FBS3J4RDtPQVBKOG9CO09BQ1gsUUFBQSw0QkFEV0EsS0FKaEJ3b0M7b0JBT0tyRCx1QkFBQUE7TUFLSixPQUdIc0QsU0FsQktKLGlCQWNpQm54RDtLQUNzQjtLQUg5QyxPQUFBLFdBRUc7SUFHSjthQUNHdXhELFNBQ0NKLFlBQVlLLGVBQXVCeHhEO0tBQTZCLE9BQTdCQTs7WUFFL0I5akIsSUFGK0I4akIsTUFFekIsT0FNWHl4RCxRQVJDTixZQUFZSyxlQUVSdDFFOztRQWpESSxPQUFYMjBFOztZQW1EYXIwRSxVQUp5QndqQixlQXJCcEN1NUMsRUFxQm9DdjVDO1FBS3ZCLE9BQUEsV0FsRGZpeEQsa0JBaURhejBFOztJQUdkO2FBQ0dpMUUsUUFBV04sWUFBWUssZUFBdUJ0MUU7S0FBNEI7TUFNeEQsTUFBQSx3QkFONEJBLE1BQUFBO01BTTVDLE1BQUE7a0JBSENVO01BQUQ7T0FBZTIrRDtPQUFQbVc7T0FBSDUwRTtjQUFBQSxlQUFVeStELElBRVEsMkJBTHFCci9ELFNBRzNDVTtNQUVDLFdBRk04MEU7S0FFa0Q7S0FINUQ7TUFERUMscUJBQ0Y7TUFNRXBCLGdCQUFnQiw4QkFSNEJyMEUsU0FBdkJzMUU7TUFTckJoQixlQUFlLDRCQVQ2QnQwRSxNQUFuQ2kxRTtNQVViLE1BQUEsd0JBVmdEajFFLE1BQzVDeTFFOztNQVVrRCxJQUFPMUQsaUJBQUxvRDtNQUNuRCxPQXhDQ0gsV0E0Qk9DLGVBV2dEbEQsTUFBTG9EO0tBQ1g7S0FEakM7TSxPQTdFWlQsV0EyRUlKLGNBREFELGVBUjRDcjBFOztLQVVoRCxVQUFBLFdBQ0c7S0FESCxPQUFBO0lBS0Q7SUE3Q2tCLFdBQ2ZxOUQsR0FDSTJYLFlBbUJKSyxVQVNBRTs7WUFrQkVHLE1BQ0VyWCxjQUFlbitELEtBQWlCaTFFOztLQUduQzs7UUFFYTtTQUFObjFFO1NBQU0sTUFBTkE7U0FBc0Isb0IsT0FONUIwMUUsTUFDRXJYLGNBQWVuK0Q7UUFLTCxPQUFBOztRQU1DO1NBTE5tMEM7U0FLTSxNQUFBLCtCQUxOQTtTQUdGLFVBQ2UsbUNBSmJBLEdBTlVuMEM7UUFNSixXQUNWLHFDQVBEbStEO2dCQUlxQjs7SUFVckI7SUFiUixPQUFBLFdBQ0csa0NBRnFDOFc7R0FlcEM7WUFFRlEsWUFDRXRYLGNBQWV1WCxZQUFhMTFFLEtBQU1xOUI7SUFBaUM7dUJBQXZDcjlCLEtBQU1xOUI7S0FNbENzNEMsVUF6QkVILE1BbUJGclgsY0FBNEJuK0QsS0FBYjAxRTtLQVVLLE1BQUEsK0JBVkxBO0tBU2pCLFVBQ0UsZ0RBSkFDO0tBRUksVUFBQTtJQUNOLE9BQUE7R0FLSDtZQUVHQyxRQUFZelgsY0FBZTBYLFVBQVUxaEM7SUFFdkM7S0FJVSxNQUFBLCtCQU42QkE7S0FJckMsVUFDZSxtQ0FMc0JBLEdBQVYwaEM7SUFJM0IsT0FBQSxxQ0FKWTFYO0dBUWI7WUFFQytELEtBRUcyUCxNQUNBMVQsY0FDQTlnQztJQUhIOztLQUk0QjAzQztLQUF3QlM7S0FBWkU7S0FBdEJHO3VCQUFBQSxVQURmeDRDO0tBU0QzWSxPQUFPLHNCQVJtQnF3RCxlQUh6QmxELE1BR3FDNkQ7SUFTckIsa0IsT0F4Qm5CRSxRQWFHelgsY0FFZTBYO0lBU1I7S0FBUkYsVUFBUSxpQ0FUMENIO0tBVXZCLFVBQUMsNENBRjVCOXdELE9BQ0FpeEQ7S0FDTSxVQUFBO0lBQXFCLE9BQUE7R0FDaEM7Ozs7T0F6S0dwQjtPQXdCQUM7T0FXQUM7T0FFQUk7O09BdUVJVztPQWtCSkM7T0FpQkFHO09BVUExVDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lDM0pKNTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBQUEsU0FBQWlZLFVBQUF3bkI7SUFBQTs7Y0FBQUE7O2FBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQUFBOztxQkFBQTs7b0JBQUEsT0FBQTswREFBQXovQixrQkFBQXkvQjs7bUJBQUEsT0FBQTt5REFBQXovQixrQkFBQXkvQjs7a0JBQUEsT0FBQTt3REFBQXovQixrQkFBQXkvQjs7aUJBQUE7O2dCQUFBOztlQUFBOztjQUFBLE9BQUE7b0RBQUF6L0Isa0JBQUF5L0I7O2FBQUE7O1lBQUE7O1dBQUE7O1VBQUEsT0FBQTtnREFBQXovQixrQkFBQXkvQjs7U0FBQTs7UUFBQTs7T0FBQTs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9COztlQUFBQTs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9COzs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9COztNQUFBQztnQ0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29EQUFBQTs7O2lEQUFBQTs7aURBQUFBO2lEQUFBQTtpREFBQUE7aURBQUFBOztpREFBQUE7K0NBQUFBOzs7Z0RBQUFBO2dEQUFBQTtnREFBQUE7OytDQUFBQTs7Z0RBQUFBOztnREFBQUE7OytDQUFBQTs7OENBQUFBOzs7b0RBQUFBOztpREFBQUE7O2lEQUFBQTtpREFBQUE7aURBQUFBOztnREFBQUE7O2lEQUFBQTs7aURBQUFBOytDQUFBQTs7Ozs7aURBQUFBOztpREFBQUE7O2lEQUFBQTtpREFBQUE7aURBQUFBO2lEQUFBQTs7aURBQUFBOytDQUFBQTs7OztxQkFBQSxPQUFBOzJEQUFBMS9CLGtCQUFBeS9COztvQkFBQSxPQUFBOzBEQUFBei9CLGtCQUFBeS9COzt1QkFBQSt2QztzQkFBQUEsbUJBQUFBO29CQUFBO3FCQUFBMXpDLFdBQUEwekM7cUJBQUFDO3VCQUFBLDhDQUFBM3pDO29CQUFBLFdBQUEyekM7O21CQUFBLE9BQUE7OzRCQUFBenZFOzRCQUFBMC9COzRCQUFBRDs7c0JBQUFFO3FCQUFBQSxtQkFBQUE7bUJBQUE7b0JBQUFwRyxXQUFBb0c7b0JBQUFDLFdBQUEsNEJBQUFyRzttQkFBQSxXQUFBcUc7O2tCQUFBLE9BQUE7OzJCQUFBNS9COzJCQUFBMC9COzJCQUFBRDs7cUJBQUFvZTtvQkFBQUEsbUJBQUFBO2tCQUFBO21CQUFBemlCLFdBQUF5aUI7bUJBQUE1UyxXQUFBLDRCQUFBN1A7a0JBQUEsV0FBQTZQOztpQkFBQSxPQUFBOzswQkFBQWpyQzswQkFBQTAvQjswQkFBQUQ7O2dCQUFBLE9BQUE7c0RBQUF6L0Isa0JBQUF5L0I7O2VBQUEsT0FBQTtxREFBQXovQixrQkFBQXkvQjs7Y0FBQSxPQUFBO29EQUFBei9CLGtCQUFBeS9COztpQkFBQWl3QzthQUFBLEdBQUFBO3dCQUFBQTs7ZUFBQTtnQkFBQUM7Z0JBQUFDLFdBQUFGO2dCQUFBdjFDLFdBQUEseUNBQUF5MUM7Z0JBQUF4MUMsV0FBQSw0QkFBQXUxQztlQUFBLFdBQUF4MUMsVUFBQUM7OzthQUFBLE9BQUE7O3NCQUFBcDZCO3NCQUFBMC9CO3NCQUFBRDs7WUFBQSxPQUFBO2tEQUFBei9CLGtCQUFBeS9COztXQUFBLE9BQUE7aURBQUF6L0Isa0JBQUF5L0I7O1VBQUEsT0FBQTtnREFBQXovQixrQkFBQXkvQjs7YUFBQXVLO1NBQUEsR0FBQUE7b0JBQUFBOztXQUFBO1lBQUFFO1lBQUFDLFdBQUFIO1lBQUE2bEMsV0FBQSwyQkFBQTFsQztZQUFBMmxDLFdBQUEsNENBQUE1bEM7V0FBQSxXQUFBMmxDLFVBQUFDOzs7U0FBQSxPQUFBOztrQkFBQTl2RTtrQkFBQTAvQjtrQkFBQUQ7O1FBQUEsT0FBQTs4Q0FBQXovQixrQkFBQXkvQjs7T0FBQSxPQUFBOzZDQUFBei9CLGtCQUFBeS9COztNQUFBLE9BQUE7NENBQUF6L0Isa0JBQUF5L0I7O1NBQUFzd0M7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQXQwQyxXQUFBLDRCQUFBdTBDO01BQUEsV0FBQXYwQzs7S0FBQSxPQUFBOztjQUFBejdCO2NBQUEwL0I7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQXovQixrQkFBQXkvQjtHQWlCZTtZQWpCZi9rQjtJQUFBOzs7UUFDSTs7UUFFQTs7UUFDQTs7UUFDQTs7UUFFQTs7UUFHQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFHQTtnQkFDQTs7OztPQWZBO1FBQUEwd0I7UUFBQS9QLFdBQUEsNEJBQUErUDtPQUFBLHdCQUFBL1A7O09BSUE7UUFBQTQwQztRQUFBQztRQUFBQyxXQUFBLDJCQUFBRDtRQUFBRSxXQUFBLDRDQUFBSDtPQUFBLHdCQUFBRSxjQUFBQzs7T0FFQTtRQUFBMWtDO1FBQUFDO1FBQUEwa0MsV0FBQSx5Q0FBQTFrQztRQUFBMmtDLFdBQUEsNEJBQUE1a0M7T0FBQSx3QkFBQTJrQyxjQUFBQzs7T0FDQTtRQUFBQztRQUFBM3pDLFdBQUEsNEJBQUEyekM7T0FBQSx3QkFBQTN6Qzs7T0FLQTtRQUFBNHpDO1FBQUFDLFdBQUEsOENBQUFEO09BQUEsd0JBQUFDOztPQUNBO1FBQUFsckU7UUFBQUMsV0FBQSw0QkFBQUQ7T0FBQSx3QkFBQUM7O0dBRVc7OEJBakJmeVMsV0FBQXlDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ1VJZzJEO0lBRUdDO0lBQ0E5WTtJQUNBbVM7SUFPRDRHO0lBQ0FDO0lBTEN0VztJQUNEdHBCO0lBRVU7S0FJVjYvQixxQkFIQUYsa0JBUkMvWTtLQWFEa1osb0JBSkFGLGlCQVRDaFo7S0FnQkRtWixxQkFmQ2hILFlBREFuUztLQWtCRG9aLHFCQWpCQ2pILFlBREFuUztJQW9CTCxHQXJCSzhZO0tBaUNPO01BQUE7UUFBQTtpQ0FuQlJJLG1CQUZBRDtnQkFtQk07TUFKYTs7O2FBRVgsa0NBeEJQdlc7TUFxQmEsVUFDUjtNQURGLFVBQUE7TUFMSjJXLFFBR0EseUNBbEJBamdDOztLQWlEUTs7O1NBRUY7O01BRkUsTUFBQSxrQ0EzQ1I2L0I7Z0JBeUNNO01BRHFCLE1BQUEsa0NBdEMzQkM7Z0JBc0NNO01BRkUsTUFBQSxrQ0F4Q1JGLGdCQURBRDtnQkF1Q007TUFGUSxVQUNSLHdDQTFDTHJXO01BeUNHLFVBQUE7TUF6QkoyVyxRQXNCQSxrREFyQ0FqZ0M7SUFpRUk7S0FBQTtPQUFBO2dDQXRESisvQixvQkFFQUM7ZUFrREU7S0FKYTs7O1lBRVgsa0NBOURIMVc7S0EyRFMsVUFDUjtLQURGLFVBQUE7SUFjRixPQUFBLDZDQXpERTJXO0dBMkRMO1lBRUduSixhQUFnQmxRO0lBQWdDLGlCQUFoQ0EsdUJBQUFBO0dBR25CO1lBRUc2TyxNQUVHMXVFO0lBRUQsR0FGQ0EsU0FBT0csTUFBUEgsUUFBQW8yRSxTQUFPajJFLGNBQVBpMkU7SUFFRCxZQURPeEwsZ0JBQU51TyxRQUFNdk8sZ0JBQU51TztJQUVELGdCQUFBdGE7S0FFd0IsSUFtQnhCdDhELElBQUksMkJBckJKczhELE9Bc0JKLE1BdEJJQTtrQkF1QlUzOEQsR0FBR2szRSxLQUFRLFdBQVhsM0UsR0FBR2szRSxLQUFnQjtLQURqQyxVQUFBLFdBQ0c7a0JBRUcxbEI7TUFBRDtPQWpCQzBsQjtPQWlCNEJsM0U7T0FuQjNCbTNFLFVBbUIyQm4zRSxPQUo5Qks7T0FoQkcrMkUsaUJBb0IyQnAzRTtPQTNCN0JxM0UsVUFRRUYsVUFSRkY7T0FBQUssVUFPRUYsV0FQRkg7T0FtQkMsTUFUQUMsU0FWREksVUFBQUQ7YUFVQ0g7T0FWREssVUFPRUgsV0FQRkg7TUE0QkU7a0JBRER6bEIsV0FqQkEwbEIsWUFYRGhEO3dCQTRCQzFpQixVQUFBQSxXQTNCRCtsQjtLQStCRztLQVBSLE9BQUEsV0FFRyxpREFTSjtHQUFBO1lBR0s3VixLQUVHNWpFO0lBQ0QsR0FEQ0EsU0FBTUcsTUFBTkgsUUFBQW01RSxRQUFNaDVFLGNBQU5nNUU7SUFFRDtLQUFBO01BQVNPO01BQVJwRTtNQUdMLE1BaERBNUcsYUEyQ0t5SyxlQUVBN0QsU0FBUW9FO01BR2IsTUFBQSxXQUVHOzs7U0FLTTs7O01BRkksVUFDSjtLQU5ULE9BQUEsV0FHRywrQ0FNQztHQUFBO0dBakJTLGtCQUNYOVY7WUFvQkErVixPQUVHMzVFO0lBQ0QsR0FEQ0EsU0FBTUcsTUFBTkgsUUFBQW01RSxRQUFNaDVFLGNBQU5nNUU7SUFFRDtLQUFBO01BQVNPO01BQVJwRTtNQUdMLE1BcEVBNUcsYUErREt5SyxlQUVBN0QsU0FBUW9FO01BR2IsTUFBQSxXQUVHOzs7U0FLTTs7Ozs7TUFGSSxVQUNKO0tBTlQsT0FBQSxXQUdHLCtDQU1DO0dBQUE7R0FqQlk7SUFBQSxpQkFDZEM7O1VBdEpGakIsV0FvRkEzSSxjQUtBckI7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJRS9GQW9MO0lBZ0RtQ0M7SUE5Q25DQztJQUNBQztJQUNBQztZQUVBQyxXQUFjdFc7SUFDVCxZQUFBLDhCQURTQTs7OztlQUZkcVc7O2VBNENtQ0g7O2VBaERuQ0Q7O2VBSUFJOztlQURBRDs7V0FEQUQ7R0FvQkQ7WUFFQ0ksVUFFcUJwNkUsS0FDbEJxNkU7SUFBRCxHQURtQnI2RTtTQUFPRyxNQUFQSCxRQUFJNmdFLElBQUcxZ0UsUUFBTmlDLElBQU1qQzs7S0FBYztNQUFqQjJnRSxNQUFpQjtNQUFwQjJJLE1BQU87TUFBSjVJLElBQUFDO01BQUgxK0QsSUFBQXFuRTtJQUVwQixnQkFBQXVOO0tBRUs7TUFDcUIsV0FMTjUwRSxPQUtVLFdBSDlCNDBFLGVBRnVCblc7TUFLdkJ5WixnQkFBZ0I7aUJBTWQ7TUFEaUIsT0FBQSxXQVJuQnRELE9BRENxRDtpQkFTQztNQUZJLFdBQ0o7TUFIRkUsY0FDRTtLQU9OLE9BYktGO2VBSURDO2VBUzZCLDJCQVQ3QkEsZUFDQUMsYUFTTDtHQUFBO1lBRUdDLFNBQVdwaUQ7SUFBaUMsV0FBQSwwQkFBakNBO0lBQWlDLE9BQUE7R0FBUztZQUVqRHAzQixHQUFPaEI7SUFBb0IsR0FBcEJBLFNBQWFHLE1BQWJILFFBYUh5NkUsZUFiZ0J0NkUsY0FhaEJzNkU7SUFiOEMsZ0JBQUE1VztjQUVwRDNpRSxXQUZvRCxPQUFsREY7S0FjRyxZQUFBLDhCQWQrQzZpRTs7Ozs7VUFhOUM2VyxpQkFBQUQ7VUFBTHhpQyxNQU9POzs7O1VBUEZ5aUMsaUJBQUFEO1VBQUx4aUMsTUFRUzs7OztVQVJKeWlDLGlCQUFBRDtVQUFMeGlDLE1BU1E7Ozs7VUFUSHlpQyxpQkFBQUQ7VUFBTHhpQyxNQVVVOzs7OztTQU55QztVQUFBLE1BQUE7VUFBM0IsTUFBQTtVQUpuQnlpQyxpQkFBQUQ7VUFBTHhpQyxNQUlDOzs7O1VBT0VoNUM7VUFYRXk3RSxpQkFBQUQ7VUFBTHhpQyxNQVdhLDBCQUFWaDVDOzs7U0FFSTtVQURIMDdFO29CQTNCUEg7O3FCQStCVUg7YUFDeUIsV0E5Qi9CcjVFLE1BNkJNcTVFLGdCQUpITTthQUs0QixPQUFBO1lBQXdCO29CQW5EM0RQO1VBK0NVLFVBNUJWSTtVQWVRRSxpQkFBQUQ7VUFBTHhpQyxNQWFDOzs7U0FoQkY7VUFQcUQyaUM7VUFBTEM7VUFPaEQsTUFSQTM1RSxTQXpDRmk1RSxXQTBDdURTLG1CQUFBQTtVQW1DNUNFLEtBOUJYO1VBRkUsTUFKQTU1RSxTQXpDRmk1RSxXQTBDa0RVLG9CQUFBQTtVQW1DM0NFLEtBbENQO1VBeUNhLE1BQUE7b0JBQUw7b0JBRHNCO1VBQWQsVUFBQztVQURMLFVBQ0o7VUFIRSxVQUhIQSxRQUtELHFDQUxLRDtVQXpCSEosaUJBQUFEO1VBQUx4aUMsTUE0QkM7OztTQTBEQTtVQUZFK2lDOztxQkFHQzk0RSxHQUFHKzRFO2FBQU8sU0FBUEE7Y0FXcUM7ZUFEMUJOLE9BVlhNO2VBV3FDLFdBN0c3Qy81RSxRQTRHbUJ5NUU7ZUFDb0IsT0FBQTtjQUFBLE9BQUEsK0JBWGxDejRFOzt5QkFBRys0RSxPQUdVdFgsTUFIVnNYOztjQVFnQjtlQUhPcFg7MEJBR2U7MEJBMUc5QzNpRSxRQXVHK0IyaUU7ZUFHUCxPQUFBLHVCQUxORjtlQUtBLFdBQUM7ZUFBUCxPQUFBO2NBQUEsT0FBQSwrQkFSUHpoRTs7YUFJa0MsV0FBQSwwQkFEckJ5aEU7YUFDcUIsT0FBQSwrQkFKbEN6aEU7WUFjQTtVQWZILE1BQUEsaUNBRkU4NEU7b0JBcUI0QztVQUFkLFVBQUM7b0JBQVQ7VUFBYixVQUFDO1VBQVAsTUFBQTtVQW5CTCxNQUFBLFdBa0JHO1VBbkJERSxTQUNGO1VBdEZJUjtVQUFMemlDLE1BcUZHaWpDOzs7OztVQXZDRztXQVBRem9FO1dBQVQwb0U7O3NCQVFJajVFLEdBQUcyaEU7Y0FHQSxXQTdEYjNpRSxTQXpDRmk1RSxXQW1HZXRXLG1CQUFBQTtjQUdBLE9BQUEsK0JBSEgzaEU7YUFJRTtXQUxMLE1BQUEsaUNBUFF1UTtXQUtULE1BdkROdlIsU0F6Q0ZpNUUsV0EyRlFnQixxQkFBQUE7V0FFSixVQUNFO3FCQWMyQztXQUFkLFVBQUM7cUJBQVQ7V0FBWixVQUFDO1dBQVAsTUFBQTtXQWZMLE1BQUEsV0FjRztXQWZEQyxXQUNGO1dBekNJVjtXQUFMemlDLE1Bd0NHbWpDOzs7V0F4Q0VWLGlCQUFBRDtXQUFMeGlDLE1Bc0NZOzs7O1VBcENOb2pDO1VBRkRYO1VBQUx6aUMsTUFiQ2ozQyx3QkFlS3E2RTs7O1NBNEdDO1VBRER4WTtVQUFKQztvQkFDbUM7b0JBekh0QzVoRSxRQXdITzJoRTtvQkFDVztVQUFWLFVBekhSM2hFLFFBd0hHNGhFO1VBN0dHNFgsaUJBQUFEO1VBQUx4aUMsTUE4R0M7OztTQWhEaUI7VUFGVHFqQztVQUFOL1g7b0JBM0VOaVg7O3FCQStFVUg7YUFDeUIsV0E5RS9CcjVFLE1BNkVNcTVFLGdCQUpFaUI7YUFLdUIsT0FBQTtZQUF3QjtvQkFuRzNEbEI7VUFnR3FCLE1BQUEsNkJBRmY3VztVQUVlLE1BQUE7VUFBVixNQUFBO1VBREQsVUFDSjtVQTlERW1YLGlCQUFBRDtVQUFMeGlDLE1BNkRDOzs7U0Fhb0I7VUFGVHNqQztVQUFOOVg7b0JBdkZUK1c7O3FCQTJGVUg7YUFDeUIsV0ExRi9CcjVFLE1BeUZNcTVFLGdCQUpLa0I7YUFLb0IsT0FBQTtZQUF3QjtxQkEvRzNEbkI7VUE0R3dCLE9BQUEsNkJBRmYzVztVQUVlLE9BQUE7VUFBYixPQUFBO1VBREQsV0FDSjtVQTFFSCtYLFFBeUVDO1VBekVJZCxpQkFBQUQ7VUFBTHhpQyxNQUFBdWpDOztLQWtISyxJQUFOQyxRQUFNLDhCQWxITHhqQztLQW1ITCxLQW5IVXlpQyxnQkFtSHNELE9BRDVEZTtLQUNxQjtnQkFEckJBLFdBaklGakI7TUFrSXVCLFVBbEl2QkE7S0FrSXVCLE9BQUEsZ0NBQzFCO0dBQUE7OEJBaklPeDVFOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O1lDbERKMDZFO0lBQ0Y7MkJBR3lCLGlCQUNKLGtCQUhEO1FBQ0huNUU7SUFBTSxXQUFOQTtHQUVpQjtZQUNoQ281RSxRQUFXN3NDO0lBQTBCLE9BQUEsV0FBSywyQkFOMUM0c0MsZ0JBTVc1c0M7R0FBMkQ7WUFDdEU5dEMsR0FBT3E1RSxnQkFBc0J4VztJQUMvQixPQUZFOFg7YUFFRjtrREFEU3RCLGlCQUFzQnhXO0dBQ2E7Z0NBUjFDNlgsZUFNQUMsU0FDQTM2RTs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDc0NJNDZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXpDSkM7SUFDQTVCO0lBQ0E2QjtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7OztZQUVBdkMsVUFFcUJwNkUsS0FDbEJxNkU7SUFBRCxHQURtQnI2RTtTQUFPRyxNQUFQSCxRQUFJNmdFLElBQUcxZ0UsUUFBTmlDLElBQU1qQzs7S0FBYztNQUFqQjJnRSxNQUFpQjtNQUFwQjJJLE1BQU87TUFBSjVJLElBQUFDO01BQUgxK0QsSUFBQXFuRTtJQUVwQixnQkFBQXVOO0tBRUs7TUFDcUIsVUFMTjUwRSxPQUtVLFdBSDlCNDBFLGVBRnVCblc7TUFLdkJ5WixnQkFBZ0I7Z0JBTWQ7TUFEaUIsTUFBQSxXQVJuQnREO2dCQVFFO01BRkksVUFDSjtNQUhGdUQsY0FDRTtLQU9OLE9BYktGO2VBSURDO2VBUzZCLDJCQVQ3QkEsZUFDQUMsYUFTTDtHQUFBO1lBR0t2NUUsR0FBTTQ3RTtJQUNSLFVBQUEsMEJBRFFBO0lBQ1IsT0FBQSxXQUF3QjtHQUF3QjtZQUU5Q0MsV0FBY0M7SUFBa0M7S0FJbEQsTUFBQSwwQkFISWxCO0tBR0osTUFBQSxXQUNHO0lBREgsT0FBQSxXQUVHO0dBQ0o7R0FFYztJQUFYbUIsV0FaQS83RTtJQWFBZzhFLE9BYkFoOEU7SUFjQWk4RSxPQWRBajhFO0lBZ0JBazhFLHFCQWhCQWw4RTtJQWlCQW04RSxzQkFqQkFuOEU7SUFtQkFvOEUsVUFuQkFwOEU7SUFvQkFxOEUsWUFwQkFyOEU7SUFxQkFzOEUsWUFyQkF0OEU7SUF1QkF1OEUsV0F2QkF2OEU7SUF5QkF3OEUsYUF6QkF4OEU7SUEwQkF5OEUsYUExQkF6OEU7SUE0QkEwOEUsWUE1QkExOEU7SUE2QkEyOEUsYUE3QkEzOEU7SUErQkE0OEUsV0EvQkE1OEU7SUFnQ0E2OEUsYUFoQ0E3OEU7SUFrQ0E4OEUsWUFsQ0E5OEU7SUFtQ0ErOEUsYUFuQ0EvOEU7SUFvQ0FnOUUsa0JBcENBaDlFO0lBcUNBaTlFLGFBckNBajlFO0lBdUNBazlFLGtCQUFrQixXQUFhLCtCQUwvQko7SUFPRixNQXpDRTk4RTtJQXdDQW05RSxtQkFDRixXQUE0QjtJQUMxQkMsbUJBQW1CLFdBQWMsK0JBTGpDSDtJQXRDUzs7T0FDVGo5RTtPQUdBNjdFO09BU0FFO09BQ0FDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BQ0FDO09BQ0FDO09BRUFDO09BRUFDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BQ0FDO09BRUFDO1lBR0ZDLGFBQWlCcitFO0lBQWdCLEdBQWhCQSxTQUFTRyxNQUFUSCxRQUFBdzNCLFdBQVNyM0IsY0FBVHEzQjtJQUNuQixVQUFBO0lBQUEsT0FBQSxXQUF5QiwrQkFETkE7R0FDaUQ7WUFFbEU4bUQsZUFBaUI5OEU7SUFBSyxVQUFBLDBCQUFMQTtJQUFLLE9BQUEsV0FBZTtHQUEwQjtZQUUvRCs4RSxZQUFlQyxNQUFNQztJQUFvQixjQUExQkQsVUFBaUMsa0NBQTNCQztJQUFvQixPQUFBO0dBQTJCO1lBRXBFQyxVQUFZbjhFO0lBQWMsVUFBQSx1QkFBZEE7SUFBYyxPQUFBO0dBQWlCO1lBRTNDbzhFLGFBQWV2bUQ7SUFBYyxVQUFBLCtCQUFkQTtJQUFjLE9BQUE7R0FBcUI7WUFFbER3bUQsUUFBVXA5RTtJQUFLO2VBQUxBLE9BQWtDO0tBQWxCLFVBQUM7SUFBRCxPQUFBO0dBQWdDO1lBRTFEcTlFLFlBQWUvd0M7SUFDakI7S0FBZ0IsUUFBQSw2QkFEQ0E7S0FDcUIsVUFBQSw2QkFEckJBO09BQUFBO2VBR0ksT0FBQTs7bUJBREMsT0FBQTtnQkFFSixPQUFBO0lBQ0YsVUFBQSx1QkFMQ0E7SUFLRCxPQUFBO0dBQ2Y7WUFFQ2d4QyxXQUFhcnFDO0lBQWMsVUFBQSx1QkFBZEE7SUFBYyxPQUFBO0dBQWtCO0dBQWhDLElBRWJzcUM7WUFFQUMsUUFBVzFRLElBQUlEO0lBQWtCLGNBQXRCQyxRQUEyQix1Q0FBdkJEO0lBQWtCLE9BQUE7R0FBc0I7WUFDdkQ0USxjQUFpQjNRLElBQUlEO0lBQWtCLGNBQXRCQyxRQUEyQix1Q0FBdkJEO0lBQWtCLE9BQUE7R0FBcUI7WUFFNUQ2USxhQUFnQkMsSUFBSUMsSUFBSWg5RTtJQUFNLFNBQ3hCaTlFLG1CQUFxQmo5RTtLQUFLLEtBQUxBLEdBRW5CO1NBQ0xrc0UsS0FId0Jsc0U7VUFBQUEsTUFHakIsV0FBUGtzRTtLQUNzQztNQUEvQkQsS0FKaUJqc0U7TUFJYyxNQUpuQ2k5RSxtQkFJSWhSO01BQVksVUFEbkJDLFFBQ3dCO0tBQWMsT0FBQTtJQUUxQztJQUMrQztLQUFBLFVBQUMsMEJBUjNCOFE7S0FRRSxNQVBoQkMsbUJBRGtCajlFO0tBUUYsTUFBQTtLQUFiLFVBQUMsMEJBUk0rOEU7S0FRUCxNQUFBO0lBQUEsT0FBQTtHQUNaO1lBRUdHLFdBQWFsOUUsR0FBSyxPQVhsQjg4RSw2QkFXYTk4RSxHQUE4QjtZQUUzQ205RSxTQUFXQyxNQUFRLE9BYm5CTiw2QkFhV00sTUFBa0M7WUFFN0NDLFNBQVlqQixNQUFNQztJQUNwQjtlQURvQkEsVUFDZ0I7S0FBekIsVUFER0QsVUFDSTtJQUFQLE9BQUE7R0FBcUM7WUFFOUNrQixNQUFTbEIsTUFBTUM7SUFDakI7ZUFEaUJBLFVBQ2tCO0tBQXhCLFVBREFELFVBQ087SUFBUCxPQUFBO0dBQW9DO1lBRTdDbUIsVUFBYW5CLE1BQU1DO0lBQW9CLGNBQTFCRCxVQUFpQyx1Q0FBM0JDO0lBQW9CLE9BQUE7R0FBNEI7Ozs7T0FuSW5FNUM7T0FDQTVCO09BR0ErQjtPQUZBRjtPQUdBRztPQUNBQztPQUNBQztPQUpBSjtPQUtBSztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBdkM7O09BaUVBaUU7T0FHQUM7T0FFQUM7T0FNQUs7T0FKQUY7T0FNQUc7T0FRQUM7T0FFQUM7T0FkQUo7T0FnQkFLO09BQ0FDO09BYUFLO09BRUFDO09BRUFFO09BR0FDO09BR0FDOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztZQ3ZJQXhGLFdBQWN5RjtJQUNULFlBQUEsZ0NBRFNBOzs7O1FBY0g7O1FBREM7O1FBR0M7O1FBREo7O1FBRUU7O0lBTE87R0FNbkI7WUFFSzUrRSxHQUVHNitFLFNBQ0E3L0UsS0FDQTgvRTtJQUNELEdBRkM5L0UsU0FBYUcsTUFBYkgsUUFBQXk2RSxlQUFhdDZFLGNBQWJzNkU7SUFHRCxnQkFBQW1GO2NBR0oxK0UsVSxPQVRFRixHQUVHNitFLGNBRUFDO0tBZUEsWUFBQSxnQ0FiREY7Ozs7MkJBWUozbkM7Ozs7O2NBSVF6MkMsY0FKUnkyQyxNQUljLHNDQUFOejJDOzs7Y0FJSmUsY0FSSjAxQyxNQVFVLHNDQUFOMTFDOzs7Y0FDRXVyQyxjQVRObUssTUFTWSxzQ0FBTm5LOzs7Y0FDRDJHLGNBVkx3RCxNQVVXLHNDQUFOeEQ7OztjQUNFcmMsY0FYUDZmLE1BV2Esc0NBQU43Zjs7O1VBRUU7V0FERDJuRDsrQixPQXJCUjcrRTtXQXNCSTgrRSxLQUFLLGlDQURERDtXQVpSOW5DLE1BY0Esc0NBREkrbkM7Ozs7V0FOUS9nRjtXQVBaZzVDLE1BT3FCLHNDQUFUaDVDOzs7VUFUZDtXQUZ1RGdoRjtXQUFMQztXQUFmQztXQW9CdEJDLFNBekJYbC9FLFNBS2lDaS9FLGdCQWxDbkNoRyxXQWtDdUQ4RixlQUFBQTtXQW9CaERJLFNBekJMbi9FLFNBS2lDaS9FLGlCQWxDbkNoRyxXQWtDa0QrRixlQUFBQTtXQUloRGpvQyxNQWtCQSxzQ0FGS29vQyxRQUFNRDs7O2NBWFAvK0UsY0FMSjQyQyxNQUtVLDBCQUFONTJDOztjQWVFaS9FO2FBQUFBO1dBQTZCO2dDLE9BN0JuQ3AvRTtZQTZCbUMsTUFBQSxpQ0FBN0JvL0U7a0JBQU87OztjQXBCYnJvQzs7OztXQXFDT3NvQztXQXJDUHRvQyxNQWxCRWozQyxHQUVHNitFLGNBRUFDLDRCQW1ERVM7OztVQTNDVDtXQUZzREM7V0FBTEM7V0FBZkM7V0FnRHJCakM7YUFqRFh2OUUsU0FDZ0N3L0UsbUJBOUJsQ3ZHLFdBOEJzRHFHLGlCQUFBQTtXQWdEL0NoQzthQWpETHQ5RSxTQUNnQ3cvRSxrQkE5QmxDdkcsV0E4QmlEc0csaUJBQUFBO1dBUS9DeG9DLE1BMENBLHNDQUZLdW1DLE1BQU1DOzs7Y0FKTmtDLGlCQWRROWQsZUFBSkM7VUFBYSxHQXBDakJnZDtXQXlDRDs7c0JBSUUscUNBVE9qZDs7c0JBT1AscUNBUEdDO1lBS0w7Y0FBQTs7c0JBRkY7WUFGUSxVQWhDVjVoRSxRQTZDS3kvRTtrQkFiTDs7cUJBaENBei9FLFNBTkt1NUUsZUFtREFrRztjQXBDTDFvQzs7OztPQUFBQTtTQUdhOzs7S0EwQzJCO01BQUEsTUFBQSxnQ0F6RHBDMm5DO01Bd0RKbkU7UUFDSyxrQ0E3REFvRTtXQThETSw4QkE5Q1g1bkM7V0FBQUE7S0FpREosT0FoRVN3aUM7ZUFpRUs7Ozs7cUJBTlZnQjtlQUFBQSxNQVlMO0dBQUE7Z0NBOUZHdEIsWUFvQkluNUU7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNsQko0L0UsZUFBa0IxWDtJQUNYLFdBQUEsb0NBRFdBO0lBQ1gsT0FBQTtHQUFnQztZQUV2QzJYLGNBQWlCM1g7SUFDVixXQUFBLG9DQURVQTtJQUNWLE9BQUE7R0FBK0I7WUFFdEM0WCxnQkFBbUI1WDtJQUNaLFdBQUEsb0NBRFlBO0lBQ1osT0FBQTtHQUFpQztZQUV4QzZYLGlCQUFvQjdYO0lBQ2IsV0FBQSxvQ0FEYUE7SUFDYixPQUFBO0dBQWtDO1lBRXpDbG9FO0lBRUcrOUI7SUFDQXM3QztJQUNBMkc7SUFFQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQXRFO0lBQ0ErQztJQUNEL3dDO2FBYUlzNkIsR0FFRXQ2QixHQUNBZ3VDLEtBQ0F6QyxnQkFDQWdIO0s7O1NBeEJMSjttQkFBQUEsa0JBOEJXcGhGLGVBQUp5aEY7T0FBYyxHQUFBLFdBQVZ6aEYsSUFBZ0IsZ0NBVHRCaXZDO1FBVVksY0FEVnd5QyxPQUNVLFVBQUEsZ0NBRFZBOzs7Ozs7O2tCQVFVaDhELHNCQUFhLGdDQUFiQTs7Ozs7Ozs7ZUFFR2k4RDtxQkFBYSxnQ0FBYkE7Ozs7Ozs7Y0FQVjtlQURPQztlQUNQLFdBQUEsZ0NBRE9BOzs7OztpQkFFUkM7d0JBQWUsZ0NBQWZBOzs7Ozs7Ozs7Ozs7O1lBTlJDOzs7O1VBQUFBLGlCQUpJTDs7Y0FnREpNLEtBRUczaEYsaUJBR0Q4dUM7TUFDRyxHQUpGOXVDLFNBQUlHLE1BQUpILFFBQUE0aEYsUUFBSXpoRixjQUFKeWhGLFFBcERDOUU7TUF3REM7V0FIYWxTLGlCQUFmaVgsbUJBQWVqWDs7V0FBZmlYLG1CQXBEQ3hIO01BdURDO1dBRldsSSxpQkFBYmtQLGVBQWFsUDs7V0FBYmtQLGVBaERISztNQWtESyxPQTNESHRZLEdBMERBdDZCLEdBSEM4eUMsT0FDQUMsa0JBQ0FSO0tBSU47Y0FDR1M7TUFBZTtPQUFNQztPQUFKbkM7T0FDMEIsT0FBQTtPQUF6Q29DLGdCQUFnQjtTQXRGbkJqakQ7T0E2RjBCO1FBQUEsT0FqQnpCNGlELGdCQVNxQkk7bUJBUWI7UUFGSSxXQUNKO21CQURGO21CQWZOSixnQkFTcUJJO1FBS1QsV0FBQztRQURELFdBQ047UUFISkUsYUFFRTs7T0FPSztRQUFBLE9BQUE7UUFUUEEsYUFTRSxpQ0FWRkQ7O3FEQUNBQztnREE5RUhwQyxZQVRBOWdEOzBCLDhCQXFGa0I2Z0Q7TUFnQmM7T0FBQSxPQUFBO09BQVYsZUFBQzs7O1VBRnRCLFdBQ0c7O01BSEMsT0FBQTs7S0FVUDtLQXFCRCxTQUFJc0MsZUFBbUI3SDtNQUF3QixlQUF4QkE7TUFBbUI7T0FBSyw0QixPQXBEM0NzSDtLQW9EMEQ7S0FDOUQsU0FBSVEsNkJBQWdDcEgsSUFBSUQ7TUFBaUIsV0FyRHJENkcsY0FxRG9DN0c7TUFBTyxXQXJEM0M2RyxjQXFEZ0M1RztLQUE2QjtLQUNqRSxTQUFJcUgsOEJBQWlDckgsSUFBSUQ7TUFBaUIsV0F0RHRENkcsY0FzRHFDN0c7TUFBTyxXQXRENUM2RyxjQXNEaUM1RztLQUE2QjtLQUV6RCxjQUFBLGdDQTNHRGpzQzs7TUErSVE7T0FBQTs7VUFBQTtnQkFBSyxnQ0EvSWJBLEtBdkJMa3lDO09BaUlDL29DLE1Bb0NBLDJDQTdJSTZrQzs7OzthQXVKSXQ3RSxnQkE5Q1J5MkMsTUE4Q2Msc0NBQU56MkM7OztTQUhJO1VBQUE7O2FBQUE7bUJBQUssZ0NBckpic3RDO2VBdkJMa3lDO1VBaUlDL29DLE1BMENBLDJDQW5KSTZrQzs7O1NBcVNRO1VBRFF6ZDtVQUFIcHdCO1VBQ2JvekMsUUFuUEpWLGNBa1BpQjF5QztVQUdOLE1BQUEsOENBSFNvd0I7VUFHbEIsTUFBQTtVQURFaWpCLGFBQ0YsV0FDRywrQkFKZWpqQjtVQTNMcEJwbkIsTUFnTUEsK0JBSklvcUMsV0FDQUM7OztTQWZRO1VBRFFDO1VBQUwxSDtVQUFKRTtVQUNQeUgsVUFyT0piLGNBb09XNUc7O29CQVFMLHFDQVJjd0g7O1VBS1YsVUFDSixxQ0FOUzFIO29CQUtYO1VBRkY7WUFBQTs7VUFERTRILGtCQUNGLFdBU0c7VUF6TEx4cUM7WUEwTEEsK0JBWkl1cUMsYUFDQUM7OzthQS9LSnhxQyxNQXlFZTs7YUFMVnhELGdCQXBFTHdELE1Bb0VXLHNDQUFOeEQ7OzthQUNEbHlDLGdCQXJFSjAxQyxNQXFFVSxzQ0FBTjExQzs7O2FBQ0V1ckMsZ0JBdEVObUssTUFzRVksc0NBQU5uSzs7O2FBQ0MxVixnQkF2RVA2ZixNQXVFYSxzQ0FBTjdmOzs7U0FPRTtVQUREMm5EO3lCQUNvQmp4QyxHQUFLLE9BcklqQzZ5QyxjQXFJNEI3eUMsR0FBVztVQUFuQ2t4QyxLQUFLLFdBQVUsa0NBRFhEO1VBN0VSOW5DLE1BK0VBLHNDQURJK25DOzs7O1VBWFEvZ0Y7VUFuRVpnNUMsTUFtRXFCLHNDQUFUaDVDOzs7bUNBeU1KeWpGLG9CQUFKOUM7O2NBakRtQitDLGtCQUFQZjthQTlWakI3aUQ7V0FnV2tCO1lBQVg2akQsV0FBVyxnQ0ErQ2JoRDtZQXJDNkIsTUFBQSw4QkFaVitDO1lBWWIsTUFBQSxnQ0FxQ04vQztZQXJDTSxNQUFBO1lBREYsVUFBQSxrREEvVUo5Qzs7dUJBb1ZnQno3RTtlQUFLLFdBQUMsNEJBQU5BLEdBZGR1aEY7Y0FjeUM7WUFBdkMsWUFBQSxpQ0E5VVJsQjtZQW9Vd0MsTUFBQSw4QkFOakJpQjtZQUtqQjs7ZUFDRSxrREFOUWY7ZUFpRFJjO1lBNUNGLE1BQUE7WUFGQUc7O2VBRUEsT0FBQSxXQW5PTlg7Ozs7ZUE0UE07OERBM0JBVzs7c0JBMEJBO1lBRkE7WUFBQTtvREFoWFBoRCxZQVRBOWdEO2lDLDZCQStZSzZnRDtZQTFCaUMsTUFBQTtZQUFWLGNBQUM7OztlQUZ0QjtpQkFDRywyQ0F6Vkx2Rjs7O1lBc1ZBO2NBQUE7O2tCQURGOztjQWxCcUJzSTtnQkF1Q1ZwZixTQXZDVW9mOzs7YUEwQ1IsS0F4WWhCNWpELGVBd1lnQixxQ0FIRndrQztjQUlFO2VBQUE7aUJBQUE7O21CQUpGQTs7eUNBQUFBO2VBSUUsT0FBQTtzQkFBUDs7O2FBQ3FCO2NBQUEsTUFBQSx1QkFMaEJBO3FCQUtTOzs7Ozs7V0FSbEI7WUFBQSxPQUFBO2tCQUhHOzs7OztjQWdCY3VmO2FBL1l0Qi9qRDtXQWlaa0I7WUFBWGdrRCxhQUFXLGdDQUZibkQ7WUFNTzs7ZUFBQSw2Q0FKTG1ELFlBdlhGakc7O3VCQTZYZ0J6N0U7ZUFBSyxXQUFDLDRCQUFOQSxHQU5kMGhGO2NBTXlDO1lBQXZDLFdBQUEsa0NBdlhSckI7WUFrWE1zQjs7ZUFsUlcsT0FBQSxXQUFqQmQsbUNBK1FRUTs7OztlQXNCRjswREExWUZySTtpQkF1WEUySTs7dUJBa0JBO1lBRkE7WUFBQTtxREF6WlBuRCxZQVRBOWdEO2tDLDhCQStZSzZnRDtZQWVpQyxPQUFBO1lBQVYsZUFBQzs7O2VBRnRCO2lCQUNHLDRDQWxZTHZGOzs7WUErWEE7Y0FBQTs7bUJBREY7a0JBVm1CeUk7V0E0QmtDO1lBQTlDcmYsU0E1QllxZjtZQTRCa0MsT0FBQSx1QkFBOUNyZjtZQUF1QyxPQUFBO1lBQUwsT0FBQTttQkFBekI7O1dBRG1CO1lBQUEsT0FBQTttQkFBekI7OzthQXZTWnhyQjs7O2FBMlNzQmdyQztTQUV0QixHQUZzQkE7Y0FLYkMsU0FMYUQ7OztXQVFYLEtBdGJabGtELGVBc2JZLHFDQUhGbWtEOzthQUtBQztlQURMOztpQkFKS0Q7O3VDQUFBQTs7O2VBS0FDLFNBTEFEOztjQUhMRSxTQVFLRDs7O2NBUkxDO1NBVWlDO1VBQUEsT0FBQSx1QkFWakNBO1VBVTBCLE9BQUE7VUFBTCxPQUFBO1VBdlR6Qm5yQyxNQXVUQTs7O2FBak1NcW9DO1lBQUFBO1VBQTZCOzJCQUFleHhDLEdBQUssT0E3S3ZENnlDLGNBNktrRDd5QyxHQUFXO1dBQTFCLE9BQUEsV0FBTSxtQ0FBbkN3eEM7a0JBQU87OzthQXRIYnJvQzs7O2FBZ0RJNTJDO1lBbkxMMDlCO3FCQWtMMkMsMEJBQ3RDMTlCOztVQUNHLGNBQUEsNkNBMUpIeTdFLEtBeUpBejdFOztlQUdHZ2lGO1dBQ0YsR0FBQSw0QkFKRGhpRixHQW5KSnFnRjtZQXVKaUM7YUFBQTs2QkFNQ2x0QyxHQUFLLE9BQUEsNkJBQUxBLEdBVjlCbnpDLEdBVXlDO2FBQXZCLFdBQUEsa0NBN0p0QnFnRjs7O2dCQTRDQUMscURBMEdPMEI7O2FBR0QsT0E3R04xQixrREFuREk3eUM7YUErSk07bUJBQ0osV0FDRztvQkFId0I7O3VCQTNHakM2eUMsa0RBMEdPMEI7Ozs7c0JBREcsMEJBRk5oaUY7OzthQWhESjQyQzs7O2FBOEljcXJDLHNCQUFOQyxtQkFBSmhEO1NBQ0osR0F2UElsRztxQkF1UGdCOztVQUdIO1dBQVhtSixhQUFXLGdDQUpiakQ7V0FLRWtEOztjQUFKLE9BQUEsV0F0SkZ2Qiw0QkFpSlFxQjs7V0FLUTs7c0JBcUJJbGlGO2NBQUssV0FBQyw0QkFBTkEsR0F0QmRtaUY7YUFzQnlDO1dBQXZDLFdBQUEsa0NBM1FSOUI7OztjQTRDQUM7O2lCQTZOVyw2Q0FwQkw2QixZQTNQRjFHOzs7Z0JBdVBVd0c7O3NCQW9CUjtXQUgrQixPQUFBO1dBQVYsZUFBQzs7O2NBRnRCO2dCQUNHLGdEQVhIRzs7c0JBU0E7b0RBdFJQNUQsWUFUQTlnRDtpQyw4QkFpUkt3aEQ7V0FXaUMsT0FBQTtXQUFWLGVBQUM7OztjQUZ0QjtnQkFDRyw0Q0FoUUxsRzs7O1dBNlBNLFdBQ0o7V0FGRSxXQUNKO2tCQURGO2FBcEpGcGlDOzs7YUF3VEswb0MsbUJBQUkrQzs7Ozs7Y0EzYlYza0QsZUFBQUE7WUFnYzBDO2FBQUEsT0FBQSxnQ0FMcEM0aEQ7YUFLSTttQkFBQSxtREF0YUw3RDthQW1hQTZHOztnQkE3VGEsT0FBQSxXQUFqQnpCLCtCQTJUU3dCOzs7O2dCQXNCTDsyREF0YkFySjtrQkFrYUFzSjs7d0JBbUJBOzthQUhBLFdBQ0E7OztnQkFSQTt5Q0E3Ykw5RCxZQVRBOWdELGdCQTJiTTRoRDs7d0JBVUQ7YUFGRjtlQUFBOztvQkFERjs7O3NCQVBTK0M7Ozs7O2dCQXlCd0JwdEU7WUFDOUIsR0FBQSxzQ0FEOEJBO2FBSWpCO2NBQUE7Z0JBQUE7O2tCQUppQkE7O3dDQUFBQTtjQUlqQixPQUFBO2NBQVAsT0FBQTtjQUFMLE9BQUE7cUJBSGtDOzthQU1DO2NBQUEsT0FBQSx1QkFQTkE7Y0FPRCxPQUFBO2NBQUwsT0FBQTtxQkFEcEI7Ozs7V0FHbUM7WUFBQSxPQUFBO21CQUF6Qjs7Ozs7YUExVmpCMmhDOzs7YUF3SGMyckMsa0JBeEhkM3JDLE1BdkRBMHBDLGNBK0tjaUM7OztVQTdCZTtXQURiOUk7V0FBSitJO1dBQ0RwRixPQWxKWGtELGNBaUpnQjdHO1dBQ1gwRCxPQWxKTG1ELGNBaUpZa0M7a0JBRVosc0NBRFdwRixNQUFORDs7VUFWd0I7V0FEYnNGO1dBQUpDO1dBQ0QzRCxTQXhJWHVCLGNBdUlnQm1DO1dBQ1h6RCxTQXhJTHNCLGNBdUlZb0M7a0JBRVosc0NBREsxRCxRQUFNRDthQWpGWG5vQzs7O1NBdUZXO1VBREQ0ckI7VUFBSm1nQjtVQUNGQyxTQTlJSnRDLGNBNklNcUM7VUFFRkUsU0FBTyxxQ0FGRHJnQjtVQXRGVjVyQixNQXlGQSxzQ0FGSWdzQyxRQUNBQzs7O1NBSnlCO1VBRGRDO1VBQUpDO1VBQ0FDLFNBM0lYMUMsY0EySWlDLHFDQURsQndDO1VBQ1ZHLFNBM0lMM0MsY0EwSVd5QztVQW5GWG5zQyxNQXFGQSxzQ0FES3FzQyxRQUFNRDs7O1NBa0lzQjtVQXJCdkJFO1VBQUpDO1VBQUh2akY7VUFDQ3dqRjsyQkFBSixPQUFBLFdBck1BdkMsNEJBb01HamhGO1VBRUN5akY7O2FBQUosT0FBQSxXQXRNQXhDLDRCQW9NTXNDOztVQUdGRzs7YUFBSixPQUFBLFdBdk1BekMsNEJBb01VcUM7O3FCQXdCUjtVQUgrQixPQUFBO1VBQVYsZUFBQzs7O2FBRnRCO2VBQ0csZ0RBakJESTs7cUJBZUY7VUFIK0IsT0FBQTtVQUFWLGVBQUM7OzthQUZ0QjtlQUNHLGdEQVpERDs7cUJBVUY7VUFIK0IsT0FBQTtVQUFWLGVBQUM7OzthQUZ0QixXQUNHLGdEQVBERDs7cUJBS0Y7VUFGSSxXQUNKO1VBdE1GeHNDLE1BcU1BOzs7U0ExSDZCO1VBRHJCMnNDO1VBQUpDO1VBQ09DLFNBbElYbkQsY0FpSVFpRDtVQUNIRyxTQWxJTHBELGNBaUlJa0Q7VUExRUo1c0MsTUE0RUEsc0NBREs4c0MsUUFBTUQ7OztTQUhxQjtVQUEzQkU7VUFBMkIsT0EvSGhDckQsY0ErSEtxRDtVQXhFTC9zQyxNQXdFVzs7O2FBcEVDZ3RDLGtCQUFMdi9FO1lBdklScTVCO21CQXVJUXI1QjtXQUlXO3NCQUpYQTtZQUdVdy9FO1lBQUx6aUY7WUFDSjBpRixVQUFVLHVDQURERDtZQUVURTs7ZUFBSixPQUFBLFdBWkpsRCw0QkFVWXovRTs7dUJBOURaay9FLGNBMkRZc0Q7dUJBY0o7WUFIK0IsT0FBQTtZQUFWLGVBQUM7OztlQUZ0QjtpQkFDRyxnREFMSEc7O1lBRUk7a0JBQ0oseUNBSkFEO1lBRUUsV0FDSjttQkFERjs7V0FhYztZQURIRSxRQWxCUjMvRTtZQW1CQzQvRSxZQUFVLHVDQURIRDt1QkE3RWYxRCxjQTJEWXNEO1lBb0JGO2tCQUFDLHlDQURISzttQkFDSjs7MkJBcEJHNS9FLFNBM0RQaThFLGNBMkRZc0QsT0EzRFp0RCxjQTJEWXNEO2FBSlpodEM7Ozs7VUFHY3N0QztVQUFOQztVQUhSdnRDLE1BdkRBMHBDLFNBMERRNkQsY0FBTUQ7OztTQURNO1VBQWJFO3FCQUFrQztxQkF6RHpDOUQsY0F5RE84RDtVQUFhLFdBQUM7VUFGckJ4dEMsTUFFYzs7O1NBMkdLO1VBRFZ5dEM7VUFBSkM7VUFDYyxVQTlHbkJ2RCw4QkE2R0t1RCxNQUFJRDtVQUNFRTtVQUFOQztVQTdHTDV0QyxNQThHQSxzQ0FESzR0QyxRQUFNRDs7O1NBR1E7VUFESkU7VUFBSkM7VUFDUSxVQWpIbkIzRCw4QkFnSFcyRCxNQUFJRDtVQUNKRTtVQUFOQztVQWhITGh1QyxNQWlIQSxzQ0FES2d1QyxRQUFNRDs7Ozs7WUFuQnlCO2FBQWhCRTt3QkFwSnBCdkUsY0FvSm9CdUU7YUFBZ0IsV0FBQztvQkFBWDs7O1lBRU87YUFBaEJDO3dCQXRKakJ4RSxjQXNKaUJ3RTthQUFnQixXQUFDO29CQUFYOzs7WUFEUzthQUFoQkM7d0JBckpoQnpFLGNBcUpnQnlFO2FBQWdCLFdBQUM7b0JBQVg7O2FBOUZ0Qm51Qzs7Ozs7O1lBa0dtQjthQUZBb3VDO2FBQUpDO2FBQUxwZDthQUVTLFdBcEduQmlaLDZCQWtHZW1FLE1BQUlEO2FBRVJFO2FBQU5DO2FBQ0MsV0FEREEsWUFoUFQzRixjQThPYzNYLFNBRUNxZDtvQkFDWDs7O1lBR21CO2FBRkVFO2FBQUpDO2FBQUxDO2FBRU8sV0F4R25CeEUsNkJBc0dpQnVFLE1BQUlEO2FBRVZHO2FBQU5DO2FBQ0MsV0FEREEsWUFqUFQvRixnQkErT2dCNkYsV0FFREM7b0JBQ1g7OztZQVltQjthQURDRTthQUFKQzthQUFMQzthQUNRLFdBcEhuQjVFLDhCQW1IZ0IyRSxPQUFJRDthQUNURzthQUFOQzthQUNDLFdBRERBLFlBcFFUdEcsZUFtUWVvRyxXQUNBQztvQkFDWDs7O1lBVm1CO2FBRkdFO2FBQUpDO2FBQUxDO2FBRU0sV0E1R25CbEYsNkJBMEdrQmlGLE9BQUlEO2FBRVhHO2FBQU5DO2FBQ0MsV0FEREEsWUFsUFR4RyxpQkFnUGlCc0csV0FFRkM7b0JBQ1g7O2FBM0dBcnZDOzs7YUFrRVd1dkMsa0JBbEVYdnZDLE1Ba0VpQiwwQkFBTnV2Qzs7YUF6RlFDLGtCQUFSQztZQWpGUHJOO3FCQWtGYzs7VUFRSztXQUFBLE1BekN2QnNILGdCQWdDVytGO3FCQVNMO1dBRkksVUFDSjtxQkFERjtxQkF2Q0ovRixnQkFnQ1crRjtXQU1ELFVBQUM7V0FERCxVQUNOO1dBRkFDLFlBQ0Y7Ozs7Y0FVRSxXQUFPLDRCQXRDWDdGLGVBdUJtQjJGOztXQWFMOzs7ZUFDVDtnRUFWREU7OztXQVNGLE1BQUE7a0JBQUE7YUFVRjF2Qzs7O2FBMklLMnZDLG1CQWxCTy9rQixpQkFBSkM7WUE1UFQvakM7VUE4UFc7V0FBTjhvRCxRQWxMSmxHLGNBa01LaUc7O3NCQU5HLHFDQVpJL2tCOztzQkFVSixxQ0FWQUM7V0FRRjthQUFBOztXQUZGLE9BQUE7a0JBSEEsMkJBREEra0I7O1VBaUJNLElBQU5DLFFBbk1KbkcsY0FrTUtpRyxjQUNERTthQTVJSjd2Qzs7O01BOFYwQixJQUFLcDRDO01BQVEsT0FBQSxXQUFSQSxJQUFjLGdDQXhjekNpdkM7S0F3Y3dEO0tBQTlELElBREVpNUMsWUFDRixXQUFjLGtDQTFkYjNHO2tCQTZkYS8vRTtNQUE4QixXQUFBLGdDQTNjdEN5dEM7TUEyY2EsT0FBQSxXQUFBLGdDQUFMenRDO0tBQTZDO0tBRDNEO01BQUEsTUFBQSxXQUNHLG1DQTlkRjgvRTtNQTRkQzZHLFVBQ0Y7O01BS2lCO09BQVFub0Y7T0FBTm9vRjtvQkFBQUE7cUJBR1gsV0FIaUJwb0YsSUFHWCxnQ0FsZFJpdkM7TUFrZEU7S0FBcUI7S0FKN0I7TUFERW81QztRQUNGLFdBQ0csa0NBbmVGaEg7S0F3ZUgsR0FQSWdIO01BVU87T0FEREQsT0FUTkM7T0FVTyxVQUFBLGdDQURERDs7OztZQUVBcm1GO1FBQVEsR0FBQSw0QkFBUkEsR0FqZE44L0U7U0FrZFM7VUFBQSxNQUFBLDBCQURIOS9FO1VBQ0U7Z0JBQUMsV0FBVywwQ0EvV3BCcTJDO1VBQUF3akMsUUErV0U7Ozs7V0EvV0ZBLFFBQUF4akM7O1VBMFdBdWpDLFFBMVdBQzs7O1VBMFdBRCxRQTFXQXZqQztLQW9YSixHQXJCSSt2QztVQXFCQUcsUUFDVyw4QkFYWDNNO2FBYkF1TTs7T0E0QlE3bEYsSUE1QlI2bEY7T0F1QkFJLFFBS2tCLCtCQUFWam1GLElBZlJzNUU7O1VBVUEyTSxRQVZBM007S0FtQkosT0FUSTJNOztJQVdOLE9BM2VRL2UsR0FiSnQ2QixHQUZDZ3VDLEtBUEF6QztHQWtnQk47Ozs7T0FqaEJHdUc7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQS8vRTs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7R0ViSixTQUFBaWYsVUFBQTI1RDtJQUFBLE9BQUEsMERBQUFBO0dBQW9DO1lBQXBDbDNELFVBQUFtM0Q7SUFBQSxPQUFBLDBEQUFBQTtHQUFvQzs7Ozs7OztvQ0FBcEM1NUQsV0FBQXlDOzs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDRUkwbEUsU0FBVzdsQjtJQUFPO0tBQUE7S0FBZ0IsV0FBQSx3Q0FBdkJBO0lBQU8sc0JBQWdCLE9BQUE7R0FBb0I7WUFFdEQ4bEIsZUFDRUMsUUFBU3pvQixjQUE4QjBvQixZQUFZbm1GO0lBQ3pDO0tBQ1YydEUsZUFBZSwwQ0FGTmxRO0tBSVgsTUFBQSx5Q0FKcUR6OUQ7S0FJckQ7O2lCQVNTZ25FLElBQUtnTixRQUFTMWlCLE9BQU84MEIsT0FBa0IzcEI7S0FBTSxJQUM3QixRQUFBLFdBRGhCdUssSUFBdUN2SyxJQUM3QnloQixlQUFMbUk7OztNQUNMLFVBRnFCRDtPQUVyQixPQUZxQkE7O1VBd0NOLGVBQUUsV0F4RDFCSiw0QkFpQmNLLFVBQUtuSTs7VUF3Q0ssZUFBRSxXQXpEMUI4SCw0QkFpQmNLLFVBQUtuSTs7VUF5Q0MsZUFBRSxXQTFEdEI4SCw2QkFpQmNLLFVBQUtuSTs7VUErRFc7c0JBQUUsV0FoRmhDOEgsa0NBaUJjSztrQkFBS25JOztVQWdFZ0I7O21CQUNyQixXQWxGZDhILHVDQWlCY0s7O2tCQUFLbkk7O1VBb0VVO3NCQUFFLFdBckYvQjhILGlDQWlCY0s7a0JBQUtuSTs7VUF3QnNCO1dBQUEsVUFBQztXQUFYLFVBQUE7VUFGVDtzQkFFUCx5Q0F4QkRtSTtrQkFBS25JOztVQStCYztXQUFBLFVBQUM7V0FBWCxVQUFBO1VBSEc7c0JBRVgseUNBOUJEbUk7a0JBQUtuSTs7Ozs7T0FDVixPQUZxQmtJOztVQTJDVztXQUFwQmh4RCxXQTNDU2d4RDtXQTJDVzs7OztjQVVsQjs7O2FBR0U7cUJBSko7aUJBVEFoeEQ7V0FJUTs7Y0FDUjs7V0FERixVQUFBO1VBSnNCO3NCQUUxQix5Q0E1Q0RpeEQ7a0JBQUtuSTs7VUFtRk0sZUFBRSxXQXBHM0I4SCw0QkFpQmNLLFVBQUtuSTs7b0JBRFdrSTs7O3dCQTZFaEIsV0E3RmRKLGlDQWlCY0s7b0JBQUtuSTs7OzswQkFnRkwsV0FqR2Q4SCxtQ0FpQmNLO3NCQUFLbkk7OzBCQXdFTCxXQXpGZDhILG1DQWlCY0s7c0JBQUtuSTs7VUFFVTtXQUFSb0ksTUFIU0Y7V0FHRDs7OztjQU9OLE9BQ0UsV0F4QnZCRixhQUF1Q0MsZ0JBZ0JwQkc7YUFZRztzQkFOSDtXQUZRO2lCQUNSO1dBREYsV0FBQTtVQUpVO3NCQUVkLDBDQUpERDtrQkFBS25JOzs7O01BZ0dKO09BVEFoTCxTQXhGUTVoQixXQUFUMGlCO09BaUdDOztVQUFDO2lEQTVHZHJHLGtCQW1HYXVGLFFBeEZpQ3pXOztPQThGMUIsTUFBQSx5Q0FOUHlXLFNBeEZpQ3pXO09BNkZ6QixNQUFBLHFDQTdGeUJBO09BeUZqQ3lqQjtTQUNGOzs7V0F2R0Z6aUI7ZUFhWW5NLFVBQVQwaUI7Ozs7O01BbUdILFdBbEdHcVMsU0F3RkNuRyxZQXhGSWhDOztLQXNDQSxXQXRDTG1JLEtBQUtuSTtJQW9HWDs7S0F2R0U7TUFBd0JxSTtNQUFOQztNQUFQQztNQUFOQztNQUEwQyxNQUFBLHVCQUFwQ0QsS0FBYUY7S0FBUyxXQUFDLHVCQUE3QkcsTUFBYUY7SUFBdUM7O0tBRjVEO01BQVV0STtNQUFMbUk7TUFDYyxVQUFBO0tBQWpCLGVBQUUseUNBRENBLFVBQUtuSTtJQUM0Qzt3QkFIOUNsb0Q7S0FBTSxlQUFFLGdDQUFSQTtJQUEwQjs7S0FEcEIsZUFBRTtJQUFlO0lBRnRDO0tBQUE7T0FBQTtTQUNHOzs7O0tBRk0yd0Q7S0FBTkM7S0FtSEgsVUFBQyxXQXpIRFosdUJBTUdZLE9BQU1EO0tBa0hILFVBQUE7SUFDTixPQUFBO0dBRUg7WUFFR25sQixLQUVhNWpFLEtBQ1Zzb0YsUUFDQXZwRDtJQUFEO01BQ0NpaUQ7TUFDQW5oQjtNQUNBK087TUFDQTV1RTs7Ozs7O0tBS0QsR0FMQ0EsU0FBSUcsTUFBSkgsUUFBQTJ1QyxNQUFJeHVDLGNBQUp3dUM7S0FLRDtVQUptRGk4QixnQkFBbERxVyxnQkFBa0RyVzs7VUFBbERxVztLQUlEO1VBSGdEOU8sZ0JBQS9DK08sZUFBK0MvTzs7VUFBL0MrTztLQUdEO1VBRnlDN08sZ0JBQXhDOE8sY0FBd0M5Tzs7VUFBeEM4TztLQUVELFlBRCtCdE8sZ0JBQTlCdU8sYUFBOEJ2TyxnQkFBOUJ1TztLQUVELGdCQUFDdkIsU0FDRC93QztNQUVVO09BQ2Q7U0FBQTs7V0FkSy9QOztXQUNBaWlEO1dBSUFDO1dBQ0FDO1dBQ0FDO1dBQ0FDOztXQUVBdkI7V0FDRC93QztPQUdKLE1BQUEsdUNBWEs4L0IsT0FDQWpnQzs7T0F3QkEsT0FBQTtNQUEwRDthQTNKN0QwNUM7ZUE4SEdDO2VBR0F6b0I7O2VBWUwsV0FhRyx3Q0FJSixFQUFBO0dBQUE7WUFJRzhaLE9BRWEzNUUsWUFFVisrQixlQUVBOGdDO0lBQUQsdUJBRVE3L0Q7S0FLUix1QkFFQTh1QztNQUNHO09BQ0htNkMsZ0JBQWdCLHVDQUZoQm42QztPQUdBbzZDLFVBQVUseUNBRFZEO09BRUEzdkMsU0FBUyx3Q0FEVDR2QztPQUVzQyxNQUFBLGlDQUR0QzV2QztPQUNBeFosU0FBUztPQUNUcXBEO1NBQ0Y7OztXQWhCR3RwQjtXQUZBOWdDO1dBZ0JEZTtpQkFNa0M7T0FBdEIsVUFBQztPQUFYLFVBQUE7T0FIRnNwRDtTQUNGLDZDQUhFRDtNQVFKLE9BTklDLFVBT0wsRUFBQTtHQUFBOzZCQWxNR2hCLFVBRUFDLGdCQTJIQXprQixNQXVDQStWOzs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDaktBMFAsbUJBRUd0cUQsVUFDQXVwRCxRQUNBem9CLGNBQ0FnZ0I7SUFKSDtLQUtNalc7S0FBSDk2QjtLQUtIOztRQUNFOzs7VUFUQ3c1QztVQURBdnBEOztVQUVBOGdDOzs7Ozs7OztVQUNBZ2dCO1VBQ0Evd0M7O0tBSWU7OztZQUFrQixvQ0FKOUI4NkI7S0FJTSxXQUFDO0tBQVgsV0FBQTtJQUNGLE9BQUE7R0FZRDtZQUVDMGYsYUFBaUJoQixRQUFRMzVDLEtBQUs5dUM7SUFBVTtLQUN0QzBwRixVQUFVLFdBREtqQixnQkFBUTM1QztLQUV2QjY2QyxVQUFVLFdBRktsQixxQkFBYXpvRjtJQUdoQyxjQUF3QjRwRixTQUFZLE9BRGhDRCxRQUN1QztJQUFuQixPQUFBLGtDQUZwQkQ7R0FHTDtZQUVHRyxpQkFFRzNxRCxVQUNBdXBELFFBQ0F6b0IsY0FDQTcvRCxLQUNBNi9FO0lBQ0QsR0FGQzcvRSxTQUE0QkcsTUFBNUJILFFBQUEycEYsY0FBNEJ4cEYsY0FBNUJ3cEY7SUFHRDtLQUFBO01BQUtDO01BQUovcEY7TUFHSCxNQUFBLGlDQUhPK3BGO01BRUxoZ0IsU0FDRjtLQUNGLEdBUEsrZjtNQThCbUQ7T0FBN0M3NkMsSUE5Qk42NkM7T0E4Qm1ELFVBQUMsZ0NBQTlDNzZDO09BQWlCLFVBQUE7aUJBQVY7Ozs7S0FSVjtNLE9BMUROdTZDLG1CQWlDR3RxRCxVQUNBdXBELFFBQ0F6b0IsY0FFQWdnQjs7S0FvQkM7TUFBQSxNQUFBLGlDQWxCRytKO01BaUJHLFVBQUE7aUJBRFI7TUFGUSxPQUFBO01BQU4sV0FBQztNQUZVOzZCQUFZLGlDQVZ6QmhnQjtNQVVRLFdBQUE7TUFGVixXQUNFO01BREYsT0FBQTtNQUFBOztLQUZrQixvQixPQXRCbEIwZixhQVNHaEIsY0FLQXpvRjtLQU1TO2lCQUVSO01BRlEsV0FDUjtNQURGLFdBQUE7S0FJRixPQUFBLGdEQXFCSDtHQUFBO1lBRUdncUY7SUFFRzlxRCxVQUNBdXBELFFBQ0F6b0IsY0FDQWdnQixTQUNBaUs7SUFFTCxHQUZLQTtLQU9EO01BREtDLGlCQU5KRDtNQU9ELE1BREtDOztpQkFFRjduRixHQUFHMitEO1NBQ0YsT0F4RE42b0I7bUJBMkNHM3FEO21CQUNBdXBEO21CQUNBem9CO3VCQWdCa0IsMkJBUmRrcUIsbUJBRUY3bkY7bUJBVEYyOUU7bUJBU0UzOUU7a0JBQUcyK0Q7UUFTRDtZQVZMOzs7O1lBRlM7SUFGTCxjQUFBO0lBRUksT0FBQTtHQWdCWDtZQUVDbXBCLGlCQUFxQjFCLFFBQVEzNUM7SUFBVjtLQUFvQnM3QztLQUFKcHFGO0tBQ3hCLE1BQUEsaUNBRDRCb3FGO0tBQ3JDcmdCLFNBQVM7S0FBQTtLQUNiO0lBSW9CLGtCLE9BbEZsQjBmLGFBNEVxQmhCLFFBQVEzNUMsS0FBTTl1QztJQUl2QjtlQUVSO0tBRlEsVUFDUiw2Q0FKRitwRTtLQUdBLFVBQUE7SUFGSixPQUFBO0dBUUQ7WUFFR3NnQixTQUFhNUIsUUFBU3dCLGNBQTZCbjdDO0lBQ3JELFVBRHdCbTdDO0lBR2Isa0IsT0FmVEUsaUJBWWExQixRQUFzQzM1QztJQUduRDtLQUFBLE1BQUE7S0FETSxVQUFBO0lBQ04sT0FBQTtHQUNEO1lBSUN3N0MsYUFBZ0I1bkYsR0FBUStpQjtJQUFtQjtLQUN6QzhrRSxtQkFEYzduRixrQkFBUStpQixJQUFSL2lCO0tBS1YsTUFBQSxrQ0FKSjZuRjtLQUlGLFVBQUM7S0FBRDtXQUxnQjduRixNQUFRK2lCO0tBSWxCLFVBQUE7SUFDTixPQUFBO0dBRUg7WUFFRytrRSxnQkFBbUJQO0lBQ3JCLE9BVkVLLGFBU21CTCxpQkFBQUE7R0FDaUM7WUFFcERRLFVBQWFSO0lBQ2Y7S0FLUyxNQUFBLHFDQU5NQTtlQU1YO0tBREksVUFBQztlQUFMO0tBRkYsVUFOQU8sZ0JBR2FQO0tBRVAsVUFBQTtJQUNOLE9BQUE7R0FLRDtZQUVDUyxhQUFpQmpDLFFBQVN3QjtJQUF3QyxHQUF4Q0E7O01BTWpCQyxpQkFOaUJEO2dCQTlCMUJJLFNBOEJpQjVCLFFBTVJ5QjtnQkFoQlRPLFVBZ0JTUDs7OztZQURJO0lBSFAsY0FBQTtJQUdNLE9BQUE7R0FRZjtZQUVHUyx1QkFBMEJDO0lBQzVCO0tBRUUsVUFBQyxnQ0FIeUJBO0tBRVYsVUFBQztLQUFYLFVBQUE7SUFDTixPQUFBO0dBQ0Q7WUFFQ0M7SUFFRzNyRCxVQUNBdXBELFFBQ0F6b0IsY0FDQThxQixVQUNBOUssU0FDRGhnRjtJQUdHLFlBQUEsa0NBSEhBLElBRkM4cUY7O1NBTUVDO0tBQWdCLFNBQUEsaUNBQWhCQTtNQUNMO09BQUE7T0FPVTs7VSxPQXZMVnZCO21CQXNLR3RxRCxVQUNBdXBELFFBQ0F6b0IsY0FFQWdnQjs7T0FZSyxNQUFBLGlDQVBIK0s7T0FNUyxVQUFBO09BRlYsVUFDRTtPQUZJLFVBQUE7TUFGVixXQUNFOzs7SUFhRztHQUVSOzs7O09BaE1HdkI7T0F5QkFDO09BTUFJO09BeUNBRztPQTZCQUc7T0FZQUU7T0FRQUM7T0FTQUU7T0FHQUM7T0FVQUM7T0FlQUM7T0FNQUU7OztFOzs7Ozs7OztHOzs7OztHQ3pLZTs7SUFnQmIzbEU7Ozs7SUFoQkY4bEU7OztPQUVJOztJQUlKQzs7O09BRUk7O0lBR0pDLFdBQVk7WUFDWkMsc0JBQTBCQztJQUFzQyxlQUNqRSxnQ0FGQ0YsV0FDMEJFO0dBRTdCO0dBSzRCO2NBUnpCRixjQVErQztJQUF0QixjQUFFO0lBSjNCRzs7O1dBSWlCOztPQUhmbm1FO1dBaEJGOGxFLGtCQU1BQztJQW9CQUssb0JBWEFEOzs7T0FmQUw7T0FNQUM7T0FLQUM7T0FDQUM7T0FHQUU7T0FXQUM7OztFOzs7Ozs7OztHOzs7OztHQ3pCRjs7SUEyQ0lDO0lBNUNBcm1FO0lBV0FvZ0Q7O0lBV0FDO0lBV0FDOztJQWxDRmdtQjs7O1dBSWlCOztPQUhmdG1FOztJQVVGdW1FOzs7V0FJaUI7O09BSGZubUI7O0lBVUZvbUI7OztXQUlpQjs7T0FIZm5tQjs7SUFVRm9tQjs7O1dBSWlCOztPQUhmbm1COztZQVVGb21CLFFBQVd4c0Y7SUFJTSxVQUFBLGlDQUpOQTtJQUViOztnQkFFbUI7O1lBSGZtc0Y7O0dBUUw7R0FFZ0I7SUFBYjlvRixvQkF2REErb0Y7SUF5REFLLHNCQTlDQUo7SUFnREFLLG1CQXJDQUo7SUF1Q0ExakYsa0JBNUJBMmpGO1lBOEJBSSxNQUFPM3NGLE1BQXdCLG1CQW5CL0J3c0YsUUFtQk94c0YsV0FBNEQ7Ozs7T0EvRG5Fb3NGO09BV0FDO09BV0FDO09BV0FDO09BV0FDO09BV0FucEY7T0FFQW9wRjtPQUVBQztPQUVBOWpGO09BRUErakY7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7R0M5REY7O0lBNEVJQzs7SUFYQUM7O0lBdEJBVjs7SUFYQS9sQjs7SUFYQUQ7O0lBWEFEOztJQVhBcGdEOztJQXVEQWduRTs7Ozs7O0lBeERGQzs7O1dBSWlCOztPQUhmam5FOztZQVVGa25FLFdBQWMvcEY7SUFBaUI7S0FJZCxNQUFBLHVCQUpIQTtLQUlHLE1BQUE7SUFGbkI7O2dCQUVtQjs7WUFIZmlqRTs7R0FRTDtZQUVHK21CLGFBQWdCcCtDO0lBQW1CO0tBSWxCLE1BQUEsdUJBSkRBO0tBSUMsTUFBQTtJQUZuQjs7Z0JBRW1COztZQUhmczNCOztHQVFMO1lBRUcrbUIsWUFBZTEzQztJQUFrQjtLQUloQixNQUFBLHVCQUpGQTtLQUlFLE1BQUE7SUFGbkI7O2dCQUVtQjs7WUFIZjR3Qjs7R0FRTDtZQUVHK21CLFdBQWNoMEQ7SUFBb0I7S0FJakIsTUFBQSxpQ0FKSEE7S0FJRyxNQUFBO0lBRm5COztnQkFFbUI7O1lBSGZnekQ7O0dBUUw7R0FJQztJQUZFaUI7OztXQUlpQjs7T0FIZk47O1lBVUZPLFFBQVdydEY7SUFJTSxVQUFBLGlDQUpOQTtJQUViOztnQkFFbUI7O1lBSGY2c0Y7O0dBUUw7WUFFR1MsUUFBV3R0RjtJQUlNLFVBQUEsaUNBSk5BO0lBRWI7O2dCQUVtQjs7WUFIZjRzRjs7R0FRTDtHQUVpQixJQUFkNU8sbUJBeEZBK087WUEwRkFRLE9BQVV0cUYsR0FBa0IsbUJBL0U1QitwRixXQStFVS9wRixRQUFzRDtZQUVoRXVxRixTQUFZMytDLEdBQW9CLG1CQXRFaENvK0MsYUFzRVlwK0MsUUFHZjtZQUVHNCtDLFFBQVdqNEMsR0FBbUIsbUJBaEU5QjAzQyxZQWdFVzEzQyxRQUF5RDtZQUVwRWs0QyxPQUFVdjBELEdBQXFCLG1CQXZEL0JnMEQsV0F1RFVoMEQsUUFBeUQ7R0FFckQsSUFBZDRrRCxtQkE5Q0FxUDtZQWdEQVQsTUFBTzNzRixNQUF3QixtQkFyQy9CcXRGLFFBcUNPcnRGLFdBQTREO1lBRW5FMGtFLElBQU8xa0UsTUFBd0IsbUJBNUIvQnN0RixRQTRCT3R0RixXQUE0RDs7OztPQXpHbkUrc0Y7T0FXQUM7T0FXQUM7T0FXQUM7T0FXQUM7T0FXQUM7T0FXQUM7T0FXQUM7T0FXQXRQO09BRUF1UDtPQUVBQztPQUtBQztPQUVBQztPQUVBM1A7T0FFQTRPO09BRUFqb0I7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7R0N4R2lCOzs7Ozs7O0lBQWpCaXBCOzs7V0FFZTs7OztJQUtmQyx1QkFQQUQ7SUFTQUU7OztPQUdBOzs7O0lBS0FDOzs7V0FFZTs7O1dBVmZEO0lBZUFFLDJCQVBBRDs7Ozs7Ozs7Ozs7WUFTQUUsU0FBWXg0QztJQUVPLFVBQUEsdUJBRlBBO0lBQWtCOztnQkFFZjs7OztHQUlsQjtZQUNHeTRDLFVBQWF6NEMsR0FBbUIsa0JBUGhDdzRDLFNBT2F4NEMsUUFBc0Q7WUFFbkUwNEMsUUFBVzVxRjtJQUVJLFVBQUEsdUJBRkpBO0lBQWlCOztnQkFFYjs7OztHQUlsQjtZQUNHNnFGLFNBQVlsckYsR0FBa0Isa0JBUDlCaXJGLFFBT1lqckYsUUFBbUQ7WUFFL0RtckYsVUFBYXYvQztJQUVFLFVBQUEsdUJBRkZBO0lBQW1COztnQkFFakI7Ozs7R0FJbEI7WUFDR3cvQyxXQUFjeC9DLEdBQW9CLGtCQVBsQ3UvQyxVQU9jdi9DLFFBR2pCO1lBRUd5L0MsV0FBY24xRDtJQUFvQjtLQUVuQixNQUFBLGlDQUZEQTtLQUVDLE1BQUE7SUFGbUI7O2dCQUVuQjs7OztHQUlsQjtZQUNHbzFELFlBQWVwMUQsR0FBcUIsa0JBUHBDbTFELFdBT2VuMUQsUUFHbEI7WUFFR3ExRCxRQUFXbHJGO0lBRUksVUFBQSxpQ0FGSkE7SUFBb0I7O2dCQUVoQjs7OztHQUlsQjtZQUNHbXJGLFNBQVlyc0YsR0FBcUIsa0JBUGpDb3NGLFFBT1lwc0YsUUFBc0Q7WUFFbEVzc0YsUUFBVzFzRjtJQUVJLFVBQUEsaUNBRkpBO0lBQW9COztnQkFFaEI7Ozs7R0FJbEI7WUFDRzBpRSxJQUFPMWlFLEdBQXFCLGtCQVA1QjBzRixRQU9PMXNGLFFBQXNEOzs7O09BcEY3RDJyRjtPQU9BQztPQUVBQztPQVFBQztPQU9BQztPQUVBQztPQU9BQztPQUVBQztPQU9BQztPQUVBQztPQU9BQztPQUtBQztPQU9BQztPQUtBQztPQU9BQztPQUVBQztPQU9BaHFCOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0dDakZnQzs7SUE2QjlCeUI7O0lBWEFEOztJQW5CQXBnRDs7Ozs7O0lBQzhCLE1BQUE7SUFBOUI2b0UsVUFBVTtjQVVWO2NBREE7Y0FUQUEsYUFRQTtjQUZBO2NBREE7SUFQRkM7OztXQU1FOztPQUxBOW9FOzs7WUFrQkYrb0UsOEJBQWlDN3NGO0lBQW9CO0tBSXBDLE1BQUEsdUJBSmdCQTtLQUloQixNQUFBO0lBRm5COztnQkFFbUI7O1lBSGZra0U7O0dBUUw7WUFFRzRvQiwrQkFBbUM5c0Y7SUFJbEIsVUFBQSxpQ0FKa0JBO0lBRXJDOztnQkFFbUI7O1lBSGZta0U7O0dBUUw7R0FFOEIsSUFBM0I0b0IsZ0NBekNBSDtZQThDQUksK0JBQWtDaHRGO0lBQXFCLG1CQTNCdkQ2c0YsOEJBMkJrQzdzRjtHQUdyQztZQUVHaXRGLGlDQUFvQ2p0RjtJQUFxQixtQkFyQnpEOHNGLCtCQXFCb0M5c0Y7R0FHdkM7Ozs7T0F0REc0c0Y7T0FtQkFDO09BV0FDO09BV0FDO09BS0FDO09BS0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNuREFDLGtCQUVFQyxPQUNBQyxPQUNBeGlCLE9BQ0F5aUI7SUFKRjtLQUtheHNGO0tBSVBKLE1BQU0seUNBSkNJO0tBS1BpOUI7NkNBREFyOUIsS0FDQXE5QjtLQW1Cb0MsVUFBQztLQUEzQyxNQUFBLDZCQXhCYWo5QjtLQXdCYixNQUFBO0tBVk0sTUFBQSxrQ0FsQkpzc0YsT0FDQUMsT0FDQXhpQixPQUNBeWlCO2VBYUU7S0FGUSxVQUNSO0tBREYsVUFBQTtJQWNGLE9BQUE7R0FFSDtZQUVHMXFCLEtBRUcvRCxjQUNBbVMsUUFDRGxxRTtRQUFDNUUsV0FBRDRFO0lBRVUsR0FGVDVFOztNQU9Bb3JFLEtBUEFwckU7TUFJRHFyRixjQUdjLG1DQUFiamdCOztTQUhEaWdCO0lBYVU7S0FSVkM7T0FDSyxpQ0FWTDFtRixXQUFBQTtLQWlCRWloRSxRQUFRLGlDQWpCVmpoRTtLQW1CTyxRQUFBLHNDQW5CUEE7a0JBb0JXc3BFLG9CQUZUcWQsU0FFU3JkLGVBRlRxZDtJQUtKO0tBUEVDLFlBT0YsZ0NBTElELFFBREExbEI7S0FRRjRsQixlQVRBRCxZQWxCQzd1QjtLQThCRCt1QjtLQUNBQyxnQkE5QkM3YyxpQkFBQUEsWUE2QkQ0YztLQUVBRTtPQUNGOzs7U0FoQ0c5YyxZQURBblMsa0JBMkJEOHVCO1lBMUJDM2MsWUE4QkQ2YyxxQkF6QkFOO1dBTkMxdUI7SUF1Q0wsU0FBSWt2QixTQUFXM2dELEtBQU8sb0JBQVBBLHFCQUEyQztJQUMvQyxJQUNQNGdELHFCQUVBQzthQUNBQyxNQUFTOWdELEtBQUsrZ0Q7S0FHYixVQVJESixTQUtTM2dEO0tBQ1gsT0E3Q0d5eEIsa0JBNENhc3ZCO0lBSVg7SUFDYTtLQUFoQkMsZ0JBTEFGLE1BREFELFVBckNBVjtLQXlEQSxVQXBCQVUsVUFNQUcsZUFSQUo7d0JBVytCNTJEO0tBQS9CO01BQTBCaTNEO01BQVRmO01BQVZnQjtNQUFMbGhEO01BQ0krZ0QsY0FBYyxtQ0FEVy8yRDtNQUV6Qnl6QyxRQWZOa2pCLFNBYUUzZ0Q7TUFHSW1oRCxnQkFISm5oRDtNQUlJb2hELGVBSkNGLFdBUlBKLE1BUUU5Z0QsS0FDSStnRDtNQUlBdnRGLElBN0ZSdXNGLGtCQTJGUW9CLFVBQ0FDLGNBRkEzakIsT0FGV3lpQixTQUFjbDJEO01BTXpCcTNELFVBTkpyaEQ7TUFPSXNoRCxjQVBXcEI7S0FTZjthQUhJbUI7YUFGQUQ7YUFHQUU7YUFFaUMsMkJBSmpDOXRGLEdBTG9CeXRGO0lBVXpCO0lBT1c7S0FuQkZNLGFBQ1osc0NBakRHenNGO2VBcUVHO0tBRlE7O1FBQ1IsZ0RBdENKNHJGOztLQXFDRSxVQUFBO0tBSEZjLGtCQUNGLHlDQWpCWUQ7SUF5QmQsR0F6RUt6c0Y7O01BNEVBMnNGLE9BNUVBM3NGO01BeUVEeStELFNBR2MsbUNBQWJrdUI7O1NBSERsdUI7SUFPRjtLQURFbXVCO09BQ0Y7OztTQWpGRzlkLFlBREFuUyxrQkEyQkQ4dUI7VUExQkMzYyxZQThCRDZjLHFCQS9CQ2h2QjtjQStCRGd2QixnQkEvQkNodkI7ZUErRkc7S0FGUTtXQUNSLGdEQWJKaXdCO0tBWUUsVUFBQTtLQUhGQyxTQUNGO0tBU0VDO09BQ0Y7O1NBckdHbndCOzs7Ozs7Ozs7OzttQ0EyRUQ4QjtLQXVDQXN1QjtPQUNGOzs7U0FsSEdqZSxZQURBblMsa0JBMkJEOHVCO1VBMUJDM2MsWUE4QkQ2YyxxQkEvQkNodkI7aUJBRUEzOEQsZUF3RkQ2c0Y7S0F5Q1UsVUFBQSxnREFqQlZFO0tBZUY7O1FBL0RFTDtZQWlFQSw2Q0EvQkFJO0tBNkJGLE1BQUE7S0FBQTtXQXRIRXhCO0tBbUhJLE1BQUE7S0FGTSxVQUNSO0tBREYsVUFBQTtJQUtGLE9BQUE7O21DQXJLQUwsbUJBa0NBdnFCOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7OztHQy9CYTs7OztJQUZic3NCO0lBRWE7Ozs7SUFKYkM7SUFDQUM7WUFXQUMsV0FBY3RuQjtJQUErQixHQUEvQkE7ZUFBQUEsYUFWZG1uQixhQUFBQSxZQVdFSTs7U0FBQUE7SUFNSixHQVBnQnZuQjtlQUFBQSxrQkFYZHFuQixrQkFrQkVHOztTQUFBQSxvQkFuQkZKO0lBeUJJO1lBQ0o7O2lCQVBFSTs7MEJBTkFEOzt5QkFBQUE7O3NCQU1BQzs7NkJBTkFEOytCQUFBQTtHQXFCTDtZQUVHMXNCLEtBRUcvRDtJQURIO0tBRWVrSjtLQUFhaUo7S0FBTlo7S0FFcEJvZixRQUFRLGdDQUZZcGYsTUFBUHJJO0tBV2YsTUF0Q0FzbkIsV0EyQmV0bkI7SUFXZixPQUFBOzthQVpHbEo7YUFDeUJtUzs7O2lCQUUxQndlLFFBSEMzd0I7Ozt1Q0FBQUE7Ozs7O0dBY047Ozs7T0FwREdzd0I7T0FDQUM7T0FDQUY7O09BVUFHO09Bd0JBenNCOzs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDckNhOzs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBU2I2c0IscUJBQ0U1d0IsY0FBOEIyUztJQUF5QixJQUN2RDNSLGlCQUQ4QjJSLHFCQUFBQTtJQVFsQyxXQVBJM1IsSUFEQWhCLGlCQUNBZ0IsSUFEQWhCO0dBU0w7WUFFRytELEtBQVMvRDtJQUFGO0tBQXdCMFQ7S0FBTWlDO0tBQWJoRDtLQUNULFFBYmZpZSxxQkFZUzV3QixjQUFlMlM7S0FDaEJrZTtLQUFMQztLQUNEbGIsUUFBUSwrQkFGcUJsQztLQUc3QmhSO29CQUhzQmlRO3VCQUFBQTt1QkFBQUE7OztRQTZCZDs7MkNBMUJSalEsU0FEQWtUOztLQTBCeUIsTUFBQSx1Q0EzQm5CaWI7ZUEyQkU7S0FEZ0IsTUFBQSx1Q0ExQnZCQztlQTBCTztLQURZLE1BQUEsd0NBekJkRDtlQXlCRTtLQURZLE1BQUEsb0NBeEJuQkM7S0F1QlcsVUFDSjtLQUZKLFVBQUE7S0FKTixVQUNFOzs7UUFIRTs7S0FEdUIsTUFBQTtlQUF2Qjs7O1FBREE7K0NBZks5d0IsY0FBNEIyVjs7S0FhekIsVUFDUixvQ0FYRmpUO0tBVUEsVUFBQTtJQU1GLE9BQUE7R0FpQkg7MkNBaERHa3VCLHNCQVlBN3NCOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDYlE7O0lBRlJndEI7Ozs7Ozs7O0lBRUFDO1lBQ0FDLFVBQWFqeEY7SUFBRDtLQUErQnkwRDtLQUFUeThCO0tBQzdCLFFBQUEsaUNBRFFseEYsSUFBcUJreEY7a0JBTTdCQyxrQkFBVSxXQUFWQSxXQU42QkQsU0FBU3o4QjtJQUcvQjs0QkFIK0JBLE9BR0UsMkJBTjdDczhCO0tBTUlLLFVBQVEsMkJBTlpMO0tBT0lNLFlBQVUsZ0NBSkRyeEYsSUFHVG94RixTQUg4QkY7SUFLbEMsV0FGSUUsYUFDQUMsV0FKdUM1OEI7R0FPNUM7WUFFQzY4QixRQUFXenZGO0lBQ0QsVUFBQSxpQ0FEQ0E7SUFDRCxPQUFBO0dBQ2I7aUNBZEdrdkYsY0FFQUMsT0FDQUMsV0FTQUs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDeUpFQztJQWpEQUM7SUFoQ0FDO0lBeEJBcmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTlERnNmO0lBQ0Y7R0FFMEM7WUFFeENDO0lBQ0Y7R0FFbUM7WUFFakNDLE9BQVVydkY7SUFBbUM7b0JBTDdDb3ZGLElBS1VwdkY7MEJBVlZtdkYsSUFVVW52Rjs0QkFWVm12RixJQVVVbnZGO0lBQW1DLGlCQUw3Q292RixJQUtVcHZGO0dBS2I7WUFFR3N2RixPQUFVN3dCO0lBQW1DO3NCQVo3QzJ3QixJQVlVM3dCOzRCQWpCVjB3QixJQWlCVTF3QjswQkFqQlYwd0IsSUFpQlUxd0I7SUFBbUMsZUFaN0Myd0IsSUFZVTN3QjtHQUtiO1lBRUc4d0IseUJBQTBDaHdCO0lBQXRCO0tBQUtkO0tBQUh6K0Q7Z0JBZHRCcXZGLE9BY3NCcnZGO29CQUtuQjtnQkFaSHN2RixPQU95Qjd3QjtnQkFHUCxtQ0FId0JjO0tBRXBDLGVBQ0g7SUFERyxPQUFBO0dBTVA7WUFFQ2l3QjtJQUVHL3hCLGNBQ0FneUIsUUFDQTNmLFVBQ0FELFVBQ0FqeUU7SUFFRCxHQUZDQSxTQUFLRyxNQUFMSCxRQUFBb3lFLE9BQUtqeUUsY0FBTGl5RTtJQUVEO1NBRE94SCxpQkFBTmlILFFBQU1qSDs7U0FBTmlIO0lBV0g7O09BNUJBOGYsa0JBYUdFO0lBZUgsT0FBQTs7YUFoQkdoeUI7O2lCQUdBb1M7aUJBREFDO2lCQUVBRTtpQkFDQVA7O0dBWUo7WUFFQ2lnQixzQkFDRWp5QixjQUFlZ3lCLFFBQVNyYyxhQUFvQzVJO0lBQWM7S0FBQTtZQUFkQTtLQUM1RHNGO0lBTUosT0E3QkUwZjthQXNCRS94QixjQUFlZ3lCLFFBQ2YzZixVQUtBRCxrQkFOd0J1RDtHQWdCN0I7WUFFR3VjO0lBRUdseUIsY0FDQW15QixXQUNBSCxRQUNBdGUsTUFDQWlDO0lBRUk7WUFMSndjO0tBT0g7Ozs4QkFBd0IsK0JBTHJCemU7S0FJRHJCLFdBQ0Y7SUFHRixPQXJERTBmO2FBMENHL3hCLGNBRUFneUIsUUFLRDNmLFVBR0FvZixrQkFOQzliO0dBUU47WUFFR3ljLHdCQUNFcHlCLGNBQThCcXlCO0lBQWhDLElBQStEQyxtQkFBTjVjLGlCQUFKMTFFOztLQUdyRDtNQUFTMjFFO01BQVBsaEI7YUFIdURpaEI7TUFPN0MsT0FBQSxtQ0FKVmpoQixRQUh1RGloQjtLQUl2RCxPQXJCRndjO2NBaUJFbHlCO2NBTWEsV0FOaUJxeUIsV0FBcUJyeUYsSUFHbkR5MEQ7OztjQUFPa2hCO0lBT047SUFSTCxPQUFBLGtDQUZpRTJjO0dBWWhFO1lBRUNDO0lBRUc5SixRQUNBem9CLGNBQ0FteUIsV0FDQUgsUUFDQXRlLE1BQ0FpQztJQUVJO1lBTEp3YztLQU9IOzs7OEJBQXdCLCtCQUxyQnplO0tBSURyQixXQUNGO0tBR0Y7OztLQU9NO0tBQUEsT0FBQSxXQW5CRG9XO0lBcUJBO0lBVEwsT0FyRkVzSjthQTBFRy94QjthQUVBZ3lCO2FBS0QzZjthQUdBbWY7cUJBT0E7O2FBYkM3YjtHQW9CTjtZQUVHNmMsMkJBRUcvSixRQUNBem9CLGNBQ0FxeUI7SUFISCxJQUlhQyxtQkFBTjVjLGlCQUFKMTFFOztLQUlIO01BQVMyMUU7TUFBUGxoQjthQUpLaWhCO01BU0ssT0FBQSxtQ0FMVmpoQixRQUpLaWhCO0tBS0wsT0F2Q0Y2YztjQStCRzlKO2NBQ0F6b0I7Y0FVWSxXQVRacXlCLFdBQ0FyeUYsSUFJRHkwRDs7O2NBQU9raEI7SUFRTjtJQVRMLE9BQUEsa0NBSGUyYztHQWNkO1lBRUNHO0lBRUd6eUIsY0FDQW15QixXQUNBSCxRQUNBdGUsTUFDQWlDO0lBRUk7WUFMSndjO0tBT0g7Ozs4QkFBd0IsK0JBTHJCemU7S0FJRHJCLFdBQ0Y7SUFHRixPQXRJRTBmO2FBMkhHL3hCLGNBRUFneUIsUUFLRDNmLFVBR0FrZixrQkFOQzViO0dBUU47WUFFRytjLDRCQUNFMXlCLGNBQThCcXlCO0lBQWhDLElBQStEQyxtQkFBTjVjLGlCQUFKMTFFOztLQUdyRDtNQUFTMjFFO01BQVBsaEI7YUFIdURpaEI7TUFPN0MsT0FBQSxtQ0FKVmpoQixRQUh1RGloQjtLQUl2RCxPQXJCRitjO2NBaUJFenlCO2NBTWEsV0FOaUJxeUIsV0FBcUJyeUYsSUFHbkR5MEQ7OztjQUFPa2hCO0lBT047SUFSTCxPQUFBLGtDQUZpRTJjO0dBWWhFO0dBRWdDLGtDQUFBO1lBQS9CSyxrQkFBK0IsT0FBQTtZQUUvQkMsZ0JBQWtCQzt5QkFFRCxJQUFRUCxtQkFBWSxPQUFaQSxPQUFrQjtJQUQ3QyxXQUFBLFdBQ0csbUNBRmlCTzs7S0FJZixJQUFvQ0MsY0FBL0JDO0tBQ0wsT0FBQSx1Q0FES0EsT0FBK0JEO0lBQ1E7SUFKakQsT0FBQSxXQUVHO0dBR0M7WUFFRkUsU0FFR2h6QixjQUNBaXpCLE1BQ0RKO0lBRVc7S0FDWFAsU0FmRk0sZ0JBWUVDO0tBSUFLLGFBQWEsdUNBRGJaO0tBR0Y7T0FBQSxXQUNHLGdEQUhEWTs7S0FNSztNQUFvQ2x5QjtNQUE5QnorRDtpQkFLRixtQ0FMZ0N5K0QsVUFBOUJ6K0Q7TUFJVSxPQUFBO01BREEsV0FDWixXQTVCWG93RjtLQXlCTyxXQURNcHdGO0lBT0w7SUFSSDtLQUFBLE9BQUE7S0FKSDR3RixjQUNGLFdBRUc7S0FhSCxPQUFBLDhCQWpCRUQ7O0tBbUJHLElBQWlDRSx1QkFBL0JDO0tBQW1FLFNBQW5FQTtNQUNGLE1BQUE7Y0FEaUNEO01BRWpDLE1BQUE7S0FHYTtNQUZUamhCLFNBQWEsMkJBSGZraEI7TUFJRUMsV0FBYywyQkFKZUY7TUFLN0I3YyxTQUFTLHVDQUZUcEUsV0EzQk44Z0I7TUE4Qk1NLFVBRkFELGdCQUNBL2M7O1lBUUEsbUNBVEErYyxjQUNBL2M7TUFPWTtRQUFBO21DQVJaK2MsY0FEQW5oQixpQkFHQW9oQjtpQkFNQSxXQWpEVFo7O1lBZ0RTLG1DQU5BcGMsU0FGQXBFO01BT1ksT0FBQTtLQUhoQixXQUpJQSxZQU9BLFdBL0NUd2dCO0lBcURJO0lBbEJKLElBREVhLGNBQ0YsV0FDRztJQW1CTCxHQXpDSVg7U0E0Q0tuZCxPQTVDTG1kLGFBeUNBdDZELElBR0ttOUM7O1NBSExuOUMsSUFFTTtJQUdDO0tBQVBrN0QsK0JBQXNCLCtCQUx0Qmw3RDtLQU1KLE9BQUEsdUJBMUNJNDZELGFBZUFLOztLQTZCUSxJQUFVMW1CLGlCQUFScUY7S0FDVCxPQUFBOztjQXBEQW5TO2NBbURTbVM7O2tCQUhWc2hCOzs7Ozs7OztjQUdrQjNtQjtJQUM2QztJQUhuRSxPQUFBLFdBRUc7R0FHSjtZQUVHNG1CLFVBRUcxekIsY0FDQWl6QixhQUVESjtJQUpGO0tBR3dCN3hCO0tBQXJCeitEO0tBSUQrdkYsU0ExRUZNLGdCQXVFRUM7S0FLTWMsVUFBVywyQkFGakJyQjtLQUlJWSxhQUFhLHVDQUpqQlo7SUFLQSxTQURJWTtLQUNKLE1BQUE7SUFDVSxJQUFOVSxNQUFNLDJCQUZOVjtJQUdKLFNBRElVO0tBQ0osTUFBQTtRQUpNQyxrQkFLTiw4QkFGSUQ7SUFJRixRQUFBLHVDQWREcnhGLEdBTUtveEY7U0FETkc7O0tBWUk7TUFBQSxNQUFBLGlDQWpCSHZ4RixPQU1Lb3hGO01BVUosTUFBQSw0Q0FqQkRWO01BZ0JHYyxVQUNGLFdBSUcsdUJBZENKO01BZUZwZCxTQUFTLHVDQWZQb2QsZUFQTFY7O1FBQ0Exd0YsU0FNS294RjtNQXFCYzs7Ozs7OztVQUNaLG1DQTVCUHB4RixPQU1Lb3hGOztPQXFCYyxNQUFBO09BRGQsVUFDRSxXQW5HVmhCO2lCQThFUWdCOztNQW1ERTs7O09BQUE7O1VBQ0EsbUNBMURQcHhGLE9BTUtveEY7O1NBQUFBLGtCQWVGcGQ7T0EwQm9CO1FBQUE7VUFBQSxtQ0EvQ3ZCaDBFLE9BT0tzeEY7a0JBd0NNLFdBdkhkbEI7OztXQXNIYyxtQ0EvQlJvQixVQVRFSjs7OztXQXNDTTs7YUFyQ05FLHdCQURBRjs7OztPQWdEa0I7UUFBQSxNQUFBLG1DQXREdkJweEYsT0FNS294RjtrQkFnRE0sV0E5SGRoQjs7O1dBNkhjLG1DQXRDUm9CLFVBVEVKOztRQThDa0I7VUFBQTtxQ0FwRHZCcHhGLGdCQU1Lb3hGO2tCQThDTSxXQTVIZGhCOzs7V0EySGMsbUNBOUJScGMsU0FmRW9kOztRQTRDa0IsT0FBQTtrQkFBWixXQTFIZGhCO01BaUhRLElBQUEsTUFBQSw0Q0FuQ0FnQjs7U0FETkc7O0lBb0VTO0tBREhFLFNBQVUsOEJBcEVoQjFCO0tBcUVFMkI7Ozs7UUF6RW9CanpCLFNBd0VoQmd6QixnQkFBQUEsZUF4RWdCaHpCO01Bc0ZkOzs7VUFLRixtQ0EzRmdCQSxPQXdFaEJnekI7VUFDSkM7T0FhTTtTQUFBOztXQWRGRCxlQUFBQTtZQUFBQSxlQUFBQTtPQVlGLFVBQ0UsV0E3SlJyQjtPQStJRXVCLGlCQUNNRjs7O1FBQUFBLGVBeEVnQmh6QjtNQW1HbEI7T0FBQSxNQUFBLGlDQTNCRWd6QixlQXhFZ0JoekI7T0FrR3BCLE1BQUEsNENBbkdEaXlCO09Ba0dHa0IsVUFDRixXQUlHLHVCQTlCQ0g7T0FpQ0FJLGVBQWEsdUNBckduQjlCO01Bc0dFLFNBREk4QjtPQUNKLE1BQUE7TUFDVSxJQUFOQyxRQUFNLDhCQUZORDtNQUdKLFNBRElDO09BQ0osTUFBQTtNQVlnQjtPQWhCVkMsVUFLTiwyQkFGSUQ7OztVQWNBLG1DQXpIZ0JyekIsT0F3R2RzekI7VUEvQk5MO09BK0NnQjtTQUFBO29DQXhISWp6QixPQXdHZHN6QjtpQkFnQkYsV0FoTVIzQjs7O1VBK0xRLG1DQXRCRndCLFVBT0lHOztPQWFBO1NBQUE7OztZQWJBQSxnQkFBQUE7T0FXSixVQUNFLFdBNUxSM0I7T0ErSUV1QixpQkFpQ1FJOzs7VUFqQ1JKOztJQTRESixHQWxJSXJCO1NBcUlLbmQsT0FySUxtZCxhQWtJQXQ2RCxJQUdLbTlDOztTQUhMbjlDLElBRU07SUFHQztLQUFQazdELGlDQUFzQiwrQkFMdEJsN0Q7S0FNSixNQUFBLHVCQXBJSXU3RCxRQWtFQUk7O0tBb0VRLElBQVVwbkIsaUJBQVJxRjtLQUNULE9BQUE7O2NBOUlBblM7Y0E2SVNtUzs7a0JBSFZzaEI7Ozs7Ozs7O2NBR2tCM21CO0lBQzZDO0lBSG5FLE9BQUEsV0FFRztHQUdKO1lBRUd5bkIsVUFFR3YwQixjQUNBaXpCLE1BQ0FaLE9BQ0FRLE9BQ0QyQjtJQUVnQjtLQUdsQixNQXpOQXhCLFNBZ05HaHpCLGNBQ0FpekIsTUFFQUo7S0FLSCxNQTlKQWEsVUFzSkcxekIsY0FDQWl6QixNQUdEdUIsT0FEQzNCO0tBS0gsTUFBQTtJQURjO0ssT0FqVWRULHdCQTBUR3B5QixjQUVBcXlCOztJQUtMLFVBQUEsaUNBSktRO0lBS0gsT0FBQTtHQUVIOzs7O09BOVpHbkI7T0FLQUM7T0FLQUM7T0FPQUM7T0FPQUM7T0FVQUM7T0FxQkFFO09BbUJBQztPQWdCQUU7T0FlQUc7T0E2QkFDO09BcUJBQztPQWdCQUM7T0FlQUM7T0FFQUM7T0FRQUk7T0EwREFVO09Bb0pBYTs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NoWkV2MEI7S0FDQW4rRDtLQUNBNHlGO0tBQ0FDO0tBQ0FDO0tBQ0E5QjthQUVBK0IsS0FBTzUwRixJQUFNLHdDQUFOQSxJQUZQNnlGLE9BRW1DO2FBRW5DUixNQUFTcHFGO0tBQThCO01BQ3JDa3FFLFNBQVMsaUNBVFh0d0UsS0FRU29HO01BRVBpaEUsUUFBUSxpQ0FGRGpoRTtNQUlGLFFBQUEsc0NBSkVBO21CQUtFc3BFLG9CQUZUcWQsU0FFU3JkLGVBRlRxZDtLQUtKO2FBQUM7cUNBakJDNXVCLGtCQVlFNHVCLFFBRkF6YyxRQUNBako7O0lBT0w7YUFJRzJyQixjQUNFcGdDLE9BQVVxZ0MsYUFBYW5mLGFBQW1DbHdEO0tBR3JDLFdBQUEsb0NBSFhxdkUsY0FBZ0RydkU7S0FDbkIsV0FEaEJrd0QsYUFHM0IsK0JBSElsaEI7SUFJTDthQUVPc2dDLGFBQ0NELGFBQTBCcnZFO0tBQ2tCLE9BRGxCQTs7WUFJeEI5akIsSUFKd0I4akIsTUFFN0J1dkUsYUFrQkZDLFlBcEJLSCxhQUlFbnpGOzs7U0FDQ3EwQyxJQUx1QnZ3QjtTQUU3QnV2RTs7O2FBVkZIO2tCQVFLQyxhQU1nQyxtQ0FEN0I5K0MsR0FsQ1JuMEMsTUE2QitCNGpCOzs7O1FBUVg7U0FDUnl2RSxJQVRtQnp2RTtTQVFYO1dBQUEsb0NBQ1J5dkU7Ozs7ZUFqQlpMOztpQkFRS0M7aUJBVWdDLG1DQUR6QkksR0F0Q1pyekY7aUJBNkIrQjRqQjs7U0FFN0J1dkU7O0tBWUssWUFBQSxnQ0Fkd0J2dkU7O1VBZ0JuQnlqRCx3QkFIVmlzQixnQkFHVWpzQjs7VUFIVmlzQixnQkFiR0w7S0FrQlAsV0FMSUssZUFYQUg7SUFpQkw7YUFDR0MsWUFBZ0JILGFBQWFuekY7S0FFN0IsV0FBQSxtQ0FGNkJBLEdBakQ3QkU7O01Bb0RlLElBQUVRO01BQVUsT0FBQSw0QkFBVkEsR0FIWVY7S0FHbUI7S0FEaEQsV0FBQSxXQUNHOztNQUNTLElBQVNnMEUsd0JBQVBsaEI7TUFDVDtrQkFqQ0xvZ0Msa0JBZ0NjcGdDLFFBSkVxZ0MsYUFJS25mLGlCQUpRaDBFOztLQU92QjtLQUxOO01BREV5ekYsY0FDRixXQUVHO01BTUwsT0FWK0J6ekY7bUJBV0w4eUQ7TUFBUyxXQUZQLG1DQUVGQSxRQVhLOXlEO01BV21CLHNCLE9BR2hEMHpGO0tBSGdFO0tBQWhFO01BREVDLGtCQUNGLFdBQWM7TUFDaEIsT0FBQSw4QkFYSUYsYUFTQUU7S0FFSixPQUFBO0lBQ0Q7YUFDR0QsZUFDQ1AsYUFBMEJoZTtLQUM3Qjs7UUFBQTtXQUNHLDhCQXRDR2llLGNBb0NIRCxjQUEwQmhlOztLQUM3QixPQUFBO0lBSUQ7YUFDR3llLGdCQUFtQnR0RjtLQU1yQjthQU5xQkE7TUFNckI7UUFiRW90RixlQWNJLG1DQVBlcHRGO01BTXJCLE9BQUE7TUFBQSxPQUFBOztNQU1ZOztPQUFzQ3V0RjtPQUFSMUM7O09BQXRCMkM7T0FBTDFDO01BQ1QsZUFEU0EsT0FBMkJELFlBQXRCMkMsSUFBOEJEO0tBQ2U7S0FQakUsV0FBQSxXQU1HOztNQUdTO09BQWV4RDtPQUFicmM7T0FFQyxPQUFBLG9DQWpCTTF0RTtNQWlCTixPQUFBO3FDQXhGYiszRCxjQXNGeUJneUIsUUFBYnJjO0tBTVI7S0FmTixPQUFBLFdBU0c7SUFPQzthQUVGK2YscUJBQXdCenRGO0tBQ25CLFlBQUEsc0NBRG1CQTtjQUFBQSxTQUVZO2lCQUM1Qjs2QkFFRndkO2NBQUFBLE1BRG9CO0tBS2pCLElBSkE4ckQsbUJBSUEsVUFBQSxpQ0FUZXRwRTs7VUFXZjB0RjtNQUFRLGlDQUFSQSxLQU5BcGtCOztLQVVjO01BQUEsTUFBQSxnQ0FWakI5ckQ7TUFVSyxNQUFBLHNDQTNHWGl2RTtNQTJHTTEwRixLQUFLO01BQ0YsVUFBQSxxQ0FESEEsSUExR04yMEY7O01BOEdZOztPQURHaUI7T0FBTEM7T0FDRnR6RixJQUFJLG1DQURGc3pGLEtBaEhWaDBGO09Ba0hRbS9ELElBQUksbUNBRkc0MEIsS0FoSGYvekY7T0EyR0kyeUYsZ0JBTUlqeUYsR0FDQXkrRDs7VUFQSnd6QjtLQVlLLGNBQUEsbUNBekJldnNGO3FCQTJCZjVGLGdCQUhMb3lELFFBR0tweUQsWUFITG95RDtLQUtKLEtBaEJJKy9CLE9BaUJNO0tBR007TUFGVHNCLFVBbEJIdEI7TUFvQlksTUFBQSxnQ0E1QlYvdUU7TUE0QkYsTUFBQSxzQ0E3SEppdkU7TUE2SEksTUFBQTttQkFNWTEwRjtNQUFNLElBQ1QyQixJQWhJYml6RixLQStIZ0I1MEYsS0FFTSxPQUFBLG1DQURUMkIsR0F0SWJFO01BdUlTLFdBRk83QixJQUNIMkI7S0FFTDtLQVRKO01BREVreEYsUUFDRixXQU1HO01BT0ksV0FBQyxnQ0F6Q05wdEUsSUFtQkZndkM7S0FtQkYsT0FBQTs7Y0ExSUZ1TDtjQUNBbitEOztjQThITWd4RjtjQURDaUQ7SUFxQlY7YUFFT0MsUUFBWUMsa0JBQW9CQyxJQUFnQm5mO0tBT3BELFVBQUEsOEJBUG9EQTs7TUFRakM7T0FBSzdWO09BQUgySTtPQUVnQixNQUFBLGtDQUZiM0k7T0FQR2kxQixXQVNYLGtDQUZLdHNCO09BUFl1c0IsTUFBTkQ7T0FBQ25oRCxNQUFEbWhEO01BQzNCLEdBRmdCRjs7Z0JBQUFBO1FBSUxoMUI7UUFBSHorRDtRQUtDNnpGLGlCQUxEN3pGLEdBSG9Cd3lDLE1BR0ksdUJBSENvaEQsU0FHdEJuMUI7O1dBS0ZvMUIsU0FSa0JGO01BV2YsY0FBQSxtQ0FISEUsUUFUMkJIOztPQWlCcEI7UUFBQSxNQUFBLHVDQVRLcnNCLEtBQUczSTs7Ozs7YUFRYjBVLGNBRWdCOzs7OztTQUVSO1VBRENsd0Q7VUFDTHU1QyxJQUFJLG1DQURDdjVDLEdBdktwQjVqQjtvQkF3S2VtOUQsTUFBQUE7O1NBR0k7VUFERjBpQjtVQUNGdGlCLE1BQUksbUNBREZzaUIsS0ExS2pCNy9FO29CQTJLZXU5RCxRQUFBQTtZQVBKdVc7O09BV0YsSUFERTBnQix5QkFWQTFnQjtPQVlKO2VBQUMsb0NBakxSM1YsY0ErS1dxMkI7OztNQVprQjtLQWdCekI7S0F2QkosSUFERUMsZUFDRixXQUNHO0tBdUJMLEdBekJJQSxjQTBCVyxPQTFCWEE7O01BOEJHLG1CQUVPO1VBRE0zMEY7TUFBTSxXQUFOQTtLQUNGO0tBSmhCLFVBQUEsV0FDRyxrQ0FuQ2lEbTFFO2tCQXdDaENuMUU7TUFFZixVQUFBLCtCQUZlQTs7T0FHSSxJQUFVcS9ELGNBQUw4VixnQkFBSHYwRTtPQUNoQixPQTVDTnd6RixnQkEyQ3NCeHpGLEdBQVF5K0QsS0EzQ0VpMUIsSUEyQ1BuZjtNQUN1QjtNQUYvQyxPQUFBLFdBQ0c7S0FHSjtLQVpKLE9BQUEsV0FNRztJQVFOO2FBRUd6ekUsU0FBWTRFO0tBQzJCLFVBQUEsaUNBdk12Q3BHLEtBc01Zb0c7S0FBOEIsV0FDNUMscUNBeE1FKzNELG1CQXVNWS8zRDtJQUVmO2FBRUdzdUYsVUFBWWx6RixVQUFVeXpFO0tBQVE7O1FBek05QjJkO1dBME11QixtQ0FEWHB4RjtXQXpNWm94RjtrQkFtSklzQixXQXNEUTF5RixVQUFVeXpFO0lBR3pCO2FBRUcwZixnQkFFR3gyRixJQUNEeTJGO0tBRUc7TUFDVSxRQUFBLHFDQUpaejJGLElBOU1IMjBGO01Ba05RaUI7TUFBTEM7TUFDRHR6RixJQUFJLG1DQURIc3pGLEtBck5IaDBGO01BdU5FbS9ELElBQUksbUNBRkU0MEIsS0FyTlIvekY7TUEwTkEsTUFBQSxpQ0FKRVUsT0FDQXkrRDtrQkFJaUIzK0Q7TUFBSztPQUNmdXhGLE1BQU0sdUNBREl2eEYsR0EzTm5CUjtpQkE2TjhDO2FBRjNCUSxNQUpqQjIrRCxPQUFBQSxPQUtPNHlCO01BQ0osV0FBQztLQUNGO0tBSko7TUFERThDLFNBQ0YsV0FDRztNQUtILE1BQUEsaUNBVkVuMEYsT0FDQXkrRDtrQkFVYzMrRDtNQUFLO09BQ1p1eEYsTUFBTSx1Q0FEQ3Z4RixHQWpPaEJSO2lCQW1PNkM7YUFGN0JRLE1BWGRFLE9BQUFBLE9BWU9xeEY7TUFDSixXQUFDO0tBQ0Y7S0FKSjtNQUFBLE1BQUEsV0FDRztNQUZEK0MsU0FDRjtNQVFFLE1BQUEsdUJBVEFBO01BUUYsVUFBQyxtQ0FqQkNwMEYsTUFBQUEsT0FHQW0wRjtNQWNGLE1BQUE7TUFERTVwQjtRQUNGO1VBR0csNENBcEJEdnFFLFlBQUFBOztLQXFCSixPQUFBLFdBekJJazBGLFVBSUFsMEYsR0FDQXkrRCxHQWVBOEw7SUFNTDthQUVHOHBCLGVBQW1CbkQsTUFBb0J6ekY7S0FBYSxPQS9CcER3MkY7Y0ErQnVDeDJGOztlQUNwQixJQUFnQjhzRSxpQkFBTm9GLGlCQUFSQztlQUNyQixPQUFBOzt3QkFqUEFuUzs0QkFnUHFCbVMsUUFBUUQ7NEJBRFZ1aEI7Ozs7d0JBQ2dCM21CO2NBTWxDO0lBRUo7YUFFRytwQixpQkFBb0IxeEU7O01BRXBCLElBQU1nc0Usa0JBQUpueEY7TUFLQTtPQUFHOzs7V0FsQkw0MkY7aUJBa0JpQywyQ0FMM0J6RixZQUFKbnhGO09BS0c7Ozs7NkJBQ1k7OztLQUNkO0tBVHFELE9BQUEsaUNBQXBDbWxCO0lBWXZCO2FBR0cyeEUsVUFBWTcxRDtLQUNMLGtCLE9BM0JQMjFEO0tBMkJGLE9BQUEsaUNBRGMzMUQ7SUFDeUM7YUFFckRzZ0QsV0FBY0EsWUFBYWtIO2tCQUNnQmpuRixHQUFBLE9BSi9CLGtDQUkrQkEsR0F4UTNDcXhGLE9Bd1FtRDtLQUF6QyxJQUFSa0UsVUFBUSxpQ0FESXhWO2tCQUdibC9FLEdBQUdWO01BQWM7T0FDWjNCLEtBQUssK0JBRFAyQjtPQUVFK3pFLE9BRkYvekU7T0FHRTJ3RixTQUFTLG1DQUhYM3dGLEdBOVFKRTtPQXNSSSxVQVBFN0IsSUFDQTAxRSxNQUNBNGM7T0FHSzswQkFDTyxPQVJwQixXQUY2QjdKLFFBRzFCcG1GLEdBTzBCO01BQ3ZCLE9BQUEsdUNBdlJKMjlEO0tBeVJDO0tBWEgsVUFBQSxpQ0FESSsyQjtLQUNKLE9BQUE7SUFlRDthQUVHQyxXQUFhQTtLQUlYLFVBQUEsOEJBSldBO2tCQUdNeDFGLEdBQUEsT0F0Qk4sa0NBc0JNQSxHQTdSbkJxeEYsT0E2UjJCO0tBRDNCLElBREVrRSxVQUNGO2tCQUtDcDFGO01BQWM7T0FDVDNCLEtBQUssK0JBRFYyQjtPQUVLK3pFLE9BRkwvekU7T0FHSzJ3RixTQUFTLG1DQUhkM3dGLEdBclNERTtNQTRTSSxPQUFBOztlQTdTSm0rRDs7bUJBdVNNaGdFLElBQ0EwMUUsTUFDQTRjO0tBTUw7S0FWSCxVQUFBLGlDQUxJeUU7S0FLSixPQUFBO0lBY0Q7YUFFR2xvRCxRQUFVb29ELElBQU0sT0E1Q2hCSCxVQTRDVUcsSUFBbUI7YUFFN0JoM0QsT0FBVTM4QixRQUFRNHpGO0tBQ3BCO2dCQTdHRVgsVUE0R1VqekYsV0FBUTR6RjtnQkFoSGxCN3pGLFNBZ0hVQztnQkFoUFZpeUYsZ0JBZ1BVanlGO2dCQXhOVm95RixxQkF3TlVweUY7TUFDQSxVQS9TVit1RixNQThTVS91RjtLQUNBLE9BQUE7SUFNVjtJQS9UZTtZQUNmMDhEO1lBQ0FuK0Q7WUFDQTR5RjtZQUNBQztZQUNBQztZQUNBOUI7WUFFQStCO1lBRUF2QztZQWFBd0M7WUFPSUU7WUFxQkpFO1lBY0FJO1lBT0FFO1lBd0JBRztZQXNESUs7WUFrREoxeUY7WUFJQWt6RjtZQUtBQztZQStCQUk7WUFXQUM7WUFlQUM7WUFHQXZWO1lBbUJBeVY7WUFzQkFub0Q7WUFFQTVPOzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDbFRGaTJCLE9BQVdoM0IsVUFBVTcrQixRQUFRNjJCO2lCQUMxQitJLFFBQ0wsV0FES0EsUUFEMEIvSSxVQUVFO0lBRG5CLFVBQUEsaUNBRERnSSxVQUFVNytCLFFBQVE2MkI7SUFFL0IsT0FBQTtHQUNEO1lBRUdpZ0UsVUFBY2o0RCxVQUFXazRELFFBQVFsZ0U7SUFBckI7S0FBOEIyWCxVQUFUM1g7S0FBQytJLFNBQUQvSTtLQUMvQjZKO09BQU8sV0FEZ0JxMkQsUUFDaEIsbUNBRHlCbjNEO0lBRWpDLE9BQUEsOEJBRENjLE1BRHdDOE47Y0FBVDNYOztjQUFDK0k7Y0FPdkIsdUNBUEdmLFVBQ1o2QixNQURnQ2Q7R0FVckM7WUFRRzhqQyxLQUVHdGdCLFVBQ0F2a0IsVUFDQS8rQjtJQUVELEdBRkNBLFNBQXVCRyxNQUF2QkgsUUFBQWszRixXQUF1Qi8yRixjQUF2QisyRjtJQUVEO1NBRE10c0IsZ0JBQUwySSxPQUFLM0k7O1NBQUwySTtJQUlIO0tBREU0VjtPQUNGLDZCQUpHNVYsTUFIQWp3QixhQUNBdmtCO0tBZ0JLZTs2Q0FqQkx3akIsVUFpQkt4akI7S0FKTnEzRCxnQkFNRjtLQUltQixNQUFBLHVCQVZqQkEsZUFYQ0Q7S0FxQkgsTUFBQSwyQkFqQkUvTjtLQWdCYyxVQUFDO0tBQVgsVUFBQTtJQUNOLE9BQUE7R0FFSDtxQ0FsREdwekIsUUFLQWloQyxXQWtCQXB6Qjs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDM0JBN047SUFFQWloQzs7Ozs7Ozs7OztZQVFFSSxTQUVHdjNCLGNBQ0R3M0I7SUFFRztLQUNJLE9BSFBBO0tBSUFDO0tBQ0FDO0lBQ0o7YUFESUEscUJBTkMxM0I7WUFXUSwwQkFOVHkzQixzQkFMQ3ozQjs7R0FjTjtZQUVHMjNCLGtCQUFzQkMsUUFBU25QLFFBQVN6b0I7SUFDMUMsSUFBQTs7S0FNMEIsSUFFV3grRDtLQUFBLG9CQUFRLE9BQUEscUNBQXFCO0tBQTFCO01BQUEsZ0JBQUEsaUNBQUhBO01BSVRpVjtLQUFBLG9CQUFRLE9BQUEsMkJBQVk7S0FBakI7TUFBQSxNQUFBLGlDQUFIQTtNQUZoQixNQUFBO01BREUrZ0YsV0FDRjtNQU9FSyxPQXBDWk4sU0FrQndDdjNCLGNBVTVCdzNCO0tBU0csT0FBQSxXQW5CZ0IvTyx3QkFrQm5Cb1A7SUFFTDtrQkFiRDt3QkFEZ0IsT0FBQSxXQU5BRCxXQU1lO0lBRjNCO2VBRUo7S0FGSTtXQUNKO0tBRkosVUFBQTtJQUZKLE9BQUE7R0F1QkM7WUFFQ0Usa0JBQXNCRixRQUFTblAsUUFBU3pvQjtJQUFzQixJQUs5Q3grRDtJQUFBLG9CQUFRLE9BQUEsNkJBQVk7SUFBakI7S0FDY2lWLE1BRGQsaUNBQUhqVjtLQUNpQixNQUFBLCtCQUFBaVY7S0FML0JvaEYsT0E3Q0ZOLFNBNEN3Q3YzQixjQUl0QztLQU1JLFFBQUE7S0FBdUIsVUFBQTs7S0FFakI7Z0JBR1YsV0FmNkJ5b0I7Z0JBYzdCLFdBZDZCQSxvQkFDN0JvUDtNQVdVLFVBQ1YsV0Fib0JEO0tBWXRCOztJQUY2Qjs7OztRQVFqQjttQkFHVixXQXJCNkJuUCxvQkFDN0JvUDttQkFtQkEsV0FwQm9CRDtTQWtCVixVQUNWLFdBbkJvQkE7UUFrQnRCOztRQUtjLE9BQUEsV0F2QmlCblA7O0lBd0JiLE9BQUEsV0F4QmFBO0dBMEJsQztZQUVHMWtCO0lBRUc2ekI7SUFDQW5QO0lBQ0FobEM7SUFDQXZrQjtJQUNBdkg7SUFDQW9nRTtJQUNBNTNGO0lBQ0F1ekU7O0lBQ0QsR0FGQ3Z6RSxTQUF1QkcsTUFBdkJILFFBQUFrM0YsV0FBdUIvMkYsY0FBdkIrMkY7SUFHRTtLQUlHcDNEOzZDQVhMd2pCLFVBV0t4akI7T0FSTDgzRDtLQWV1QjtNQURqQkMsV0FkTkQ7TUFldUIsTUFBQSxtQ0FEakJDO1lBQ0w7OztJQUpKO0tBQUEsTUFBQTtLQU5FQyxhQU1GO0tBU0VDLGFBQVcsdUJBZlhELFlBSkNaO0tBb0JEOU47T0FDRjs7U0F6Qkc5bEM7U0FDQXZrQjthQXNCRGc1RDtTQWxCQ3hrQjs7S0FxQkwsTUF4QksvN0MsV0FGQThyQixjQUVBOXJCO0tBd0JEd2dFO2lCQXBGRlIsa0JBd0RHQyxRQUNBblAsUUFDQWhsQztLQW9DTCxNQXBDS0E7SUFxQ0gsU0FERTIwQztLLE9BcEVGTixrQkE4QkdGLFFBQ0FuUDs7SUFrREg7S0FBQSxNQUFBLHVCQXZCRTBQLHlCQUZBNU87ZUF1QkUsb0NBWEY2TztlQVVFO0tBRlEsVUFDUjtLQURGLFVBQUE7SUFLRixPQUFBO0dBRUg7R0FoSVc7SUFBQSxXQUNSYixVQWtCQUksbUJBMEJBRyxtQkE0QkEvekI7SUEwREYrVjs4QkE1SUE1akIsUUFFQWloQyxpQkEwSUFyZDs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O1lDdElFL1YsS0FDRXRnQixVQUEyQnZrQixVQUFXLytCO0lBQWEsR0FBYkEsU0FBU0csTUFBVEgsUUFBQWszRixXQUFTLzJGLGNBQVQrMkY7SUFPN0I7S0FISHAzRDs2Q0FKTndqQixVQUlNeGpCO0tBR0csTUFBQTtLQU5UaTRELGFBTUYsdUJBUHdDYjtJQVMxQyxPQUFBOzthQVRJNXpDO2FBQTJCdmtCO2lCQUMzQmc1RDs7O0dBU0w7R0F4QmMsa0JBYVhuMEI7WUF5QkErVixPQUVHOGQsUUFDQW4wQyxVQUNBdmtCLFVBQ0EvK0I7SUFDRCxHQURDQSxTQUFTRyxNQUFUSCxRQUFBazNGLFdBQVMvMkYsY0FBVCsyRjs7S0FNS3AzRDs2Q0FSTHdqQixVQVFLeGpCO2lCQUlvQ3orQixHQUFLLE9BQU8sV0FickRvMkYsWUFheUNwMkYsSUFBd0I7SUFBbEU7S0FBQSxNQUFBO0tBUEEwMkYsYUFNRix1QkFUR2I7SUFZTCxPQUFBOzthQWRLNXpDO2FBQ0F2a0I7aUJBSURnNUQ7OztHQVVMO0dBN0JnQjtJQUFBLGdCQVdicGU7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0dDckNJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBTnVlLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFTkMsTUFBU0MsUUFBUXQyRjtJQUNuQjtLQUs4QixXQUFBO2dCQUExQiw0Q0FOZUE7S0FLc0MsV0FBQyxnQ0FML0NzMkY7S0FLaUIsV0FBQTtLQUQxQixXQUNFO0tBRkksV0FBQTtJQUNOLE9BQUE7R0FJRDtZQUVDaHlFLEtBQU90a0I7SUFBVztLQUFnQyxXQUFDLGdDQUE1Q0E7S0FBc0IsV0FBQTtJQUFxQixPQUFBO0dBQWdCO1lBRWxFdTJGLEdBQUt2MkY7SUFBVztLQUE4QixXQUFDLGdDQUExQ0E7S0FBc0IsV0FBQTtJQUFtQixPQUFBO0dBQWdCO1lBRTlEdzJGO0lBQ0Y7Ozs7Ozt3QkE4UkUsV0E3U0FIOztPQTRCUTs7O1dBV0E7O2tCQTdCUi94RTtrQkEyQlE7a0JBREE7a0JBMUJSQTs7O1dBcUJROztrQkFyQlJBO1FBa0JROztXQUNBOztrQkFERjtRQVBFOztXQUNBOztPQUxSO2VBakJBK3hFOztxQkFxQk07OztPQXlSMkIsV0E5U2pDQTs7T0FtVEEsV0FuVEFBOztPQXVUQSxXQXZUQUE7O09BcVRBLFdBclRBQTs7Ozs7V0FzS007O2tCQTVKTi94RTtPQW9KQTtlQTlKQSt4RTs7O2tCQWtLTTs7Ozs7T0FvQkU7a0JBT0E7a0JBakxSRTs7O1dBNktROztrQkE3S1JBO1FBMEtROztXQUNBOztrQkFERjtRQUxFOztXQUNBOztPQUxSO2VBN0tBRjs7cUJBaUxNOzs7T0EwSHdCLFdBM1M5QkE7O09BMElRO1FBQUE7O1dBQ0E7O2tCQURGOzs7V0FKRTs7a0JBNUhSL3hFOzs7V0EwSFE7O2tCQTFIUkE7OztXQXNIUTs7a0JBdEhSQTtRQWlIUTs7V0FDQTs7a0JBREY7UUFMRTs7V0FDQTs7T0FMUjtlQWxIQSt4RTs7cUJBc0hNOzs7OztPQTBHRTttQkFvQkE7bUJBMU9SL3hFOzs7V0F3T1E7O21CQXhPUkE7OztXQW9PUTs7bUJBREE7bUJBbk9SQTttQkFpT1E7bUJBak9SQTs7O1dBK05ROzttQkEvTlJBO21CQTZOUTttQkE3TlJBO21CQTJOUTttQkEzTlJBO1FBc05ROztXQUNBOzttQkFERjs7Y0FGRTttQkFwTlJBOzs7V0FnTlE7O21CQURBO21CQS9NUkE7OztXQTJNUTs7bUJBM01SQTtRQXNNUTs7V0FDQTs7bUJBREY7bUJBRkU7bUJBcE1SQTttQkFrTVE7bUJBbE1SQTtRQTZMUTs7V0FDQTs7T0FMUjtlQW5NQSt4RTs7cUJBdU1NOzs7T0F0SEU7UUFBQTs7V0FDQTs7bUJBREY7OztXQUpFOzttQkFEQTttQkFsRVIveEU7OztXQThEUTs7bUJBOURSQTtRQTJEUTtjQUNBO21CQURGO21CQUZFO21CQXpEUkE7bUJBdURRO21CQXZEUkE7bUJBcURRO21CQW5EUml5RTs7O1dBK0NROzttQkFEQTttQkFoRFJqeUU7O2NBOENRO21CQTlDUkE7bUJBNENRO21CQTFDUml5RTs7O1dBd0NROzttQkF4Q1JBO1FBcUNROztXQUNBOztPQUxSO2VBN0NBRjs7cUJBaURNOzs7T0FrR047ZUFuSkFBOzs7a0JBdUpNOzs7O09BbERFOzs7V0FLQTs7a0JBaEdSL3hFO1FBMkZROztXQUNBOzttQkFERjs7O1dBSkU7O21CQXZGUkE7UUFvRlEsV0FDQTtPQUxSO2VBMUZBK3hFOztxQkE4Rk07OztPQWdLRTtrQkFTQTtrQkE3UFIveEU7a0JBMlBRO2tCQTNQUkE7a0JBeVBRO2tCQXZQUml5RTtRQWtQUTs7V0FDQTs7T0FMUjtlQTFQQUY7O3FCQThQTTs7O09BK0JFOzs7V0FPQTs7a0JBMVJSL3hFO2tCQXdSUTtrQkF4UlJBO1FBbVJROztXQUNBOztrQkFERjs7O1dBSkU7Ozs7V0FIQTs7a0JBNVFSQTtRQXVRUTs7V0FDQTs7T0FMUjtlQTdRQSt4RTs7cUJBaVJNOzs7T0F3Q04sV0F6VEFBOztPQStTNkIsV0EvUzdCQTs7T0FpVEEsV0FqVEFBOzs7SUEwVEs7R0FBSTttQ0E1VFRELEtBRUFDLE9BVUEveEUsTUFFQWl5RSxJQUVBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNqQkFDO1lBRUFDLFlBQWdCeDRGO0lBQWMsR0FBZEEsU0FBVUcsTUFBVkgsUUFBQXk0RixZQUFVdDRGLGNBQVZzNEY7SUFBNkIsZ0JBQUFuWTtrQkFlM0N4eEM7TUFDRTtPQUFBOztTQU1RLDBCQXRCSTJwRDs7O1lBc0JvQixrREF0QnBCQTs7T0FvQk4sVUFBQywwQ0FMVDNwRDtPQUtRLE1BQUE7T0FERixVQUFBO01BSEosT0FBQTtLQVVDO0tBWkw7TUFBQSxNQUFBLGlDQWQ2Q3d4Qzs7O1NBV3ZDOztNQURpQixNQUFBLGtDQVp2QmlZO2dCQVlNO01BRGdCLE1BQUEsa0NBWHRCQTtnQkFXTTtNQUZJLFVBQ0o7TUFGSixVQUFBO0tBUUYsT0FBQSx1REFlRDtHQUFBO0dBR0Q7SUFERUcsT0EvQkFGO0lBdUNBRyxPQXZDQUg7SUErQ0FJLE9BL0NBSjtJQXVEQUssT0F2REFMO0lBb0VBajRELFdBcEVBaTREO0lBNkVBaDRELFdBN0VBZzREO0lBc0ZBTSxPQXRGQU47SUE4RkFPLE9BOUZBUDtJQXNHQVEsa0JBdEdBUjtJQThHQVMsU0E5R0FUO0lBc0hBVSxPQXRIQVY7SUErSEFXLFVBL0hBWDtJQXdJQVksTUF4SUFaO0lBZ0pBYSxRQWhKQWI7SUF3SkFjLFdBeEpBZDtJQW9LQWUsVUFwS0FmO0lBNEtBZ0IsUUE1S0FoQjtJQW9MQWlCLFNBcExBakI7SUE0TEFuM0YsSUE1TEFtM0Y7SUFvTUF0MUYsV0FwTUFzMUY7OztPQUZBRDtPQUVBQztPQStCQUU7T0FRQUM7T0FRQUM7T0FRQUM7T0FhQXQ0RDtPQVNBQztPQVNBczREO09BUUFDO09BUUFDO09BUUFDO09BUUFDO09BU0FDO09BU0FDO09BUUFDO09BUUFDO09BWUFDO09BUUFDO09BUUFDO09BUUFwNEY7T0FRQTZCOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNwTUEwZ0UsS0FBUzBrQixRQUFRdnBEO0lBQXdDO0tBQUE7S0FDM0IsVUFBQztLQUFYLFVBQUE7SUFDdEIsU0FBSTI2RCxRQUFXejVGLE1BQU1oQixNQUFNMDZGLFNBQVN6NUY7S0FDbEMsY0FNSSxnQ0FQZWpCO3lCQUtiLE9BQU8sV0FQSnFwRixZQUV5QnBvRixTQUtGO0tBRjlCO01BQUE7O1NBQ0Usb0NBSmVqQixPQUFOZ0IsTUFBWTA1Rjs7TUFFUCxVQUFDO01BQVgsVUFBQTtLQUNOLE9BQUE7SUFNRDtJQVRXLElBQUEsU0FVZDt3QkFnRVUsT0FBQSxXQTVFQ3JSLGFBNEUyQztJQUh0QztlQUVSO0tBRlEsVUFDUjtLQURGLFVBQUE7ZUFGSjtlQXJFRW9SLG9DQUZlMzZEOztXQUVmMjZELHlDQUZlMzZEO2VBRWYyNkQsc0NBRmUzNkQ7OztRQUVmMjZELDhDQUZlMzZEOztlQUVmMjZELG1DQUZlMzZEOztXQUVmMjZELHlDQUZlMzZEO2VBRWYyNkQsc0NBRmUzNkQ7O1dBRWYyNkQseUNBRmUzNkQ7O3dCQWtCVCxPQUFBLFdBbEJDdXBELGFBa0IyQztJQUZoRDtLQUFBO1dBQ0U7S0FGYyxVQUFDO0tBQVgsVUFBQTtLQUZKLFVBQ0o7SUFGSixXQUNFLFdBWm9CO0dBaUZ2QjtvQ0FsRkcxa0I7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7R0NBbUI7O0lBbUJqQjcrQzs7OztJQW5CRjYwRTs7O09BRUk7O0lBSUpDOzs7T0FFSTs7SUFHSnJ5QixPQUFRO0lBQ1JDLE9BQVE7WUFDUnF5QixxQkFDRW55QixTQUFnQkM7SUFBc0Msa0JBRXpELGdDQUpDSCxPQUVrQkc7SUFBc0MsZUFDekQsZ0NBSkNKLE9BR0VHO0dBR0w7R0FHQztjQUVpQyx5Q0FWL0JGO0lBTUFzeUI7OztXQVBBdnlCLFVBV3dCOztPQUh0QnppRDtXQW5CRjYwRSxzQkFNQUM7SUF1QkFHLG1CQVhBRDs7O09BbEJBSDtPQU1BQztPQUtBcnlCO09BQ0FDO09BQ0FxeUI7T0FLQUM7T0FXQUM7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUU3QkFJLGVBQWtCdDRGO0lBQ3BCO0tBRWEsVUFBQTtLQUFYLFVBQUMsNkNBSGlCQTtLQUVaLFVBQUE7SUFDTixPQUFBO0dBQ0Q7WUFFQ3U0RixpQkFBb0J2NEY7SUFDWixjQUFBO0lBQVYsT0FBQSx5Q0FEc0JBO0dBQ3lCO1lBRTdDdzRGLFFBQVlud0IsTUFBd0Jvd0I7SUFDdEM7S0FFOEIsTUFBQSxXQUFRLG1EQUh4QnB3QjtLQUdlLE1BQUE7S0FBbkIsVUFBQyxnQ0FIMkJvd0I7S0FHcEMsVUFBQztLQUFELE1BQUE7S0FEZ0IsVUFBQztLQUFYLFVBQUE7SUFDTixPQUFBO0dBQ0Q7WUFFQ0MsaUJBQW9CQztJQUNaLGNBQUE7SUFBVixPQUFBLHlDQURzQkE7R0FDZTtZQUVuQ0MsbUJBQXFCNTRGO0lBQ2IsY0FBQTtJQUR3QixPQUFBLHlDQUFYQTtHQUV4QjtZQUVHNjRGLHdCQUE0QnJTLFFBQVN3QjtJQUF3QyxPQUo3RTRRO2lCQUtrQixrQ0FEVXBTLFFBQVN3QjtHQUV4QztZQUVHOFEsTUFBVTU2RixLQUFZOEI7SUFBUyxHQUFyQjlCLFNBQVFHLE1BQVJILFFBQUE2NkYsVUFBUTE2RixjQUFSMDZGO0lBR1I7S0FBQSxNQUFBO0tBRHNCLE1BQUEsNEJBRmRBO0tBRUMsVUFBQTtLQUFYLFVBQUMseUNBRnFCLzRGO0lBRXRCLE9BYkEwNEYsaUJBYUE7R0FHSDtZQUVHTSxXQUFhQztJQUFTO0tBSWtCLFVBQUMsZ0NBSjVCQTtLQUlBLFVBQUE7S0FBWCxVQUFDO0tBREssVUFBQTtJQUZPLE9BbkJmUDtpQkFvQkE7R0FLSDs7OztPQXhDR0o7T0FNQUM7T0FHQUM7T0FNQUU7T0FHQUU7T0FJQUM7T0FJQUM7T0FPQUU7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O0lDNUJKOXlGO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQURBZ3VCO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FBQUQ7Y0FDQXRzQjtNQUFBO09BQUEsT0FBQSw4QkFBQUE7O1dBREE0TSxlQUFBdEs7T0FDQSwrQkFBQXRDO09BREEsV0FFd0IsK0JBRHhCQSxXQURBc0M7T0FDQSwrQkFBQXRDO09BREEsV0FBQSxpQ0FDQUEsTUFEQTRNO09BQUEsT0FBQSwrQkFDQTVNOztVQURBdUM7TUFDQSwrQkFBQXZDO01BREEsV0FBQSxzQ0FDQUEsTUFEQXVDO01BQUEsT0FBQSwrQkFDQXZDO0tBR2lCOztLQUpqQnVzQjtjQUNBNzBCLEdBQUEsT0FBQSxvQ0FEQTQwQixXQUNBNTBCLEdBR2lCO0dBSGpCLFNBQUE4MEIsZUFBQXNSO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBOztPQUFBLE9BQUE7NkNBQUF6L0Isa0JBQUF5L0I7O01BQUEsT0FBQTs0Q0FBQXovQixrQkFBQXkvQjs7Z0JBQUFBOztNQUFBLE9BQUE7NENBQUF6L0Isa0JBQUF5L0I7OztNQUFBLE9BQUE7NENBQUF6L0Isa0JBQUF5L0I7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7T0FBQSxPQUFBOzZDQUFBMS9CLGtCQUFBeS9COztVQUFBRTtNQUFBLEdBQUFBO2tCQUFBQTs7UUFBQTtTQUFBckc7U0FBQUMsV0FBQW9HO1NBQUEwdEIsV0FBQSw0QkFBQTl6QjtTQUFBK3pCLFdBQUEsaUNBQUFoMEI7UUFBQSxXQUFBK3pCLFVBQUFDOzs7TUFBQSxPQUFBOztlQUFBdHREO2VBQUEwL0I7ZUFBQUQ7O1NBQUF1ekQ7UUFBQUEsbUJBQUFBO01BQUE7T0FBQTE0RCxXQUFBMDREO09BQUE1b0QsV0FBQSxzQ0FBQTlQO01BQUEsV0FBQThQOztLQUFBLE9BQUE7O2NBQUFwcUM7Y0FBQTAvQjtjQUFBRDs7SUFBQSxPQUFBLHdDQUFBei9CLGtCQUFBeS9CO0dBR2lCO1lBSGpCaFI7SUFBQSw4QkFHSTs7S0FGQTtNQUFBd2tFO01BQUFoMkM7TUFBQWkyQyxXQUFBLDRCQUFBajJDO01BQUFrMkMsV0FBQSxpQ0FBQUY7S0FBQSx3QkFBQUMsY0FBQUM7O0lBQ0E7S0FBQUM7S0FBQWo1RCxXQUFBLHNDQUFBaTVEO0lBQUEsd0JBQUFqNUQ7R0FDYTtHQUhqQixTQUFBdkwsaUJBQUEzc0I7SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7Ozs7O1lBQUF5RTtrQ0FBQUE7YUFBQVU7WUFBQUEsbUJBQUFBO1VBQUE7V0FBQUMsT0FBQUQ7V0FBQUUsT0FBQSxzQ0FBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBckgsUUFBQXlHLEtBQUF6RTs7a0NBQUF5RTthQUFBQztTQUFBLEdBQUFBO3FCQUFBQTs7V0FBQTtZQUFBOEw7WUFBQTdMLEtBQUFEO1lBQUFFLE9BQUEscURBQUFEO1lBQUE4TCxPQUFBLGlDQUFBRDtXQUFBLFdBQUE1TCxNQUFBNkw7OztTQUFBLE9BQUE7cURBQUF6UyxRQUFBeUcsS0FBQXpFOztrQ0FBQXlFOzttQkFBQTt1REFBQXpHLFFBQUFnQzs7OztRQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7Ozs7SUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDO0dBR2lCO1lBSGpCNHNCO0lBQUEsOEJBR0k7O0tBRkE7TUFBQXBjO01BQUE3TDtNQUFBQyxPQUFBLG9EQUFBRDtNQUFBOEwsT0FBQSxpQ0FBQUQ7S0FBQSxtQ0FBQTVMLFVBQUE2TDs7SUFDQSxJQUFBckwsaUJBQUFDLE9BQUEsc0NBQUFEO0lBQUEsbUNBQUFDO0dBQ2E7WUFFYnltRCxPQUFXaDNCLFVBQTBCNytCLFFBQVE2MkI7SUFDL0MsVUFEdUM3MkI7S0FXcEIsT0FBQSxzQ0FYTjYrQixVQUFrQ2hJO2FBQVI3MkI7U0FFWjBnRSxXQUZZMWdFLFdBRWpCa3VDLE1BRmlCbHVDO0tBR3JDLE9BQUE7eUNBSFc2K0IsVUFFU3FQLEtBQUt3eUIsVUFGb0I3cEM7O1FBSS9Cc2tFLGlCQUp1Qm43RjtjQUl2Qm03RjtZQUFBQTtlQUtnQixzQ0FUbkJ0OEQsVUFBa0NoSTtlQVEzQyxzQ0FSU2dJLGFBQWtDaEk7UUFNbEJ1a0UsUUFGYkQ7SUFFcUIsT0FBQSxzQ0FBUkMsT0FOa0J2a0U7R0FZOUM7WUFRR3drRSxVQUFhbDhCO0lBQ2YsVUFEZUEsa0JBSUY7YUFKRUE7U0FFRW04QixRQUZGbjhCO0tBRVUsT0FBQSx3Q0FBUm04Qjs7UUFDRTN6RixNQUhKdzNEO0lBR1ksT0FBUngzRDtHQUVsQjtZQUVDNHpGO0lBQ0YsOEJBQ21COzs7T0FHUDs7T0FGSztlQUNFOztHQUNGO1lBRWZDO1dBR0dwVCxRQUNBcVQsZUFDQXI0QyxVQUNBdmtCLFVBQ0E2OEQsV0FDREM7SUFHRixJQURFdGhELFVBQ0Ysa0NBTEd4YixnQkFFRDg4RDtJQUlKLEtBRkl0aEQsU0FHSTtJQU9DO0tBTk4rekIsS0FKQy96QjtLQVVLLFdBQUEsa0NBZEp4YixnQkFFRDg4RDtLQVVFLE9BQUEsV0FmRHZUO0tBWUN3VDtPQUNGO3lCQVNFLE9BQUEsV0F0QkR4VCxhQXNCbUM7SUFEcEM7S0FERXlUO09BQ0Y7eUJBU0UsT0FBQSxXQTdCREosb0JBNkIyQztJQUw1QztLQURFSztPQUNGLDRDQXRCQ2o5RDtJQTZCSCxxQkFFSSxPQUFBLFdBakNENDhELG9CQWlDNkM7SUFEOUM7S0FERU07T0FDRjtLQUd5QixRQUFBLHlCQXpCMUIzdEI7S0F5QmF4dUM7S0FBVDRPO0tBQ0wsT0FoQ0VtdEQ7a0JBdUNLdmlELFFBQW9DLHFDQUFwQ0EsV0FBOEQ7SUFQbEI7S0FBL0M0aUQ7ZUFEVXA4RCxRQUFUNE8sVUFPRDtJQUtKLEdBNUNHa3REO0tBZ0RLO01BQUE7OztTQUtJLElBQVV2NkY7U0FBYyxPQUFBLFdBekRqQ2luRixnQkF5RG1Cam5GO1FBQTRDOzs7U0FIMUQ7OztXQXBETGlpRDtXQUNBdmtCOztXQWtDQ205RDs7TUFnQm9DLFdBQUM7TUFBdkIsV0FBQTtpQkFBVjs7S0FZZ0M7OztTQXJEcENKOztVQW9CQUc7Y0FSQUQseUJBSkFEOzs7U0FnRFEsSUFBVTE2RjtTQUFjLE9BQUEsV0FwRWpDaW5GLGdCQW9FbUJqbkY7UUFBNEM7OztTQUYxRDs7O1dBaEVMaWlEO1dBQ0F2a0I7O1dBa0NDbTlEOztNQTRCb0MsV0FBQztNQUF2QixXQUFBO2lCQUFWO0lBZkU7S0FBQSxXQUFBO0tBRk52QyxVQUNGOztPQTlDQzU2RDtVQW1KRyxzQ0FySkg0OEQsZUFFQTU4RDs7S0ErSUMsV0FsR0E0NkQ7T0E3Q0Q1NkQ7S0F5SE87O2lCQUNFa3BEO1NBQ0UsR0EzSFhscEQ7VUE4SG9CO1dBQUEsT0FBQSxrQ0FKWGtwRDsyQkFLdUI1bUYsR0FBSyxjQUFMQSxHQUFjO2tCQUQxQixXQUNHOzs7U0FKWixrQkFERjRtRjtRQU9HO01BUkwsT0FBQSxrQ0FySFIxdEM7TUFxSFEsT0FBQTtNQURFNGhELFFBQ0Y7TUFnQkEsT0FBQSwyQkFqQkVBOztpQkFlRC90RDtTQUFEO1VBekRxQjY1QztVQUF6Qm1VO1VBQ3VCLFFBQUEseUJBREVuVTtVQUNmbm9EO1VBQVQ0TztVQUNMLE9BRjZCdTVDO3VCQVVWNW1GLEdBQTBCLHFDQUExQkEsTUFBK0M7U0FEOUQ7VUFBQSxPQUFBLFdBQ0c7VUFSSDAxQixnQkFEVStJLFFBQVQ0TyxVQUR3QnU1QztVQUVZO1VBVXpDO2lCQVo2QkE7dUJBNkJOOUc7VUFDVixXQUFBLGtDQURVQTtVQUNWLE9BQUE7U0FBeUQ7U0FGOUQ7VUFBQSxPQUFBLFdBQ0c7VUFESCxPQUFBO1VBRE0sV0FBQTtxQkFEUjs7O2FBTkE7NkNBbkdMNzlCLFVBQ0F2a0IsZUFnRkdoSTs7VUFpQmtDLFdBQUM7VUFBdkIsV0FBQTtVQURaLFdBQ0U7aUJBbkJGcWxFO1VBZ0JJLE9BQUE7VUFERixXQUFBO1NBSE4sV0FDRTtRQTZDa0Q7TUFGOUMsT0FBQTthQUFBOzs7SUFsQlIsV0FBQTtJQStCTSxPQUFBO0dBT1Q7WUFFR0M7SUFFRzVFLFFBQ0FuUCxRQUNBaGxDLFVBQ0F2a0IsVUFDQXZILFVBQ0E4a0UsUUFDRG5zRDtJQUNHLFVBREhBLG1CQUFBQTs7OzswREFLeUJvc0QsZ0JBSHpCejhELFNBR3lCeThEOzsrQkFEZkMsZ0JBRlYxOEQsU0FFVTA4RDs7WUFKVnJzRDtNQUVBclEsU0FJSyxXQUFpQjs7SUFldEI7S0FBQSxVQW5CQUE7S0FrQk07S0FBQTs7aUJBTEVvekIsR0FBSyxPQUFPLFdBcEJuQm8xQixlQW9CT3AxQixJQUFzQzs7S0FKNUM7O1FBQ2dCLE9BQUEsV0FsQmpCdWtDOztRQW1CYyxPQUFBLFdBbkJkQTtnQkFvQmdCLE9BQUEsV0FwQmhCQTs7SUFvQmlDO0lBTHBDO0tBREVyTztPQUNGOzs7O1NBYkc5bEM7U0FDQXZrQjtTQUNBdkg7Ozs7O0tBeUJMLFVBdkJJMlk7Ozs7TUEwQitDO09BRHBDa3ZCO09BQ29DLE9BbE5qRGs4QixVQWlOYWw4QjtPQUM4QixXQUFDO09BQTlCLFdBQUE7T0FIWm85QixlQUdFOzs7U0FIRkE7O0lBT0osR0EvQktIOzs7S0FtREs7TUFBQTs2QkFFRSxPQUFBLFdBekRQaFUsV0F5RDRCO2lCQUR2QjtJQVJpQjtLQUFBLDJCQTVOekJtVCxVQWlMRXRyRDtLQTJDVSxXQUFBOztXQURSLDhDQWxDRmk1QztLQStCc0MsV0FBQztLQUF2QixXQUFBO2dCQUFWO0tBRFUsV0FBQTtLQURaLFdBQ0U7S0FGaUIsMkJBck56QnFTLFVBaUxFdHJEO0tBb0NVLFdBQUE7S0FGUixXQUNBO0tBREEsT0FBQTtLQURGLE9BQUEsdUJBVkFzc0Q7S0FTTSxXQUFBO0lBQ04sT0FBQTtHQXlCTDtZQUVHQztJQUVHakY7SUFDQW5QO0lBQ0FxVDtJQUNBcjRDO0lBQ0F2a0I7SUFDQW9SO0lBQ0EzWTtJQUNBOGtFO0lBR0ksS0FOSnY5RCxnQkFNK0I7Y0FML0JvUixxQkFNTzthQU5QQTtTQU9RSyxXQVBSTDtLQU9tQjthQWxGdEJrc0Q7ZUFzRUc1RTtlQUNBblA7ZUFFQWhsQztlQUNBdmtCO2VBY1csbUJBWlh2SDtlQUNBOGtFO2VBS1E5ckQ7OztRQVdIcFksSUFsQkwrWDtJQW1CSCxPQWhRQXVyRDthQXdPR2pFLFFBQ0FuUCxRQUNBcVQsZUFDQXI0QyxVQUNBdmtCLFVBR0F1OUQsUUFnQktsa0U7R0Fic0I7WUF5QjlCdWtFLHNCQUNFOThCLGNBQWMrOEIsT0FBT0M7SUFDekIsS0FEeUJBLElBV2xCO0lBUlE7S0FESTlxQixPQUZNOHFCO0tBR1YsTUFBQSxpQ0FIR0Q7S0FHWmh6QixTQUFTO0tBQ1RqN0IsTUFBTSxnREFKUmt4QixjQUVla1M7S0FLRzs7UUFBQzs0REFKakJuSTtZQUNBajdCO0tBR00sVUFBQTtJQUZWLFdBQ0U7R0FNSDtZQUVDbXVELGtCQUNFajlCLGNBQWUwWCxVQUFzQnVTO0lBRXpDLFVBRnlDQTs7S0FHdkM7TUFBTThTO01BQUovOEY7TUFDTyxRQUFBLGlDQURQQSxJQUhlMDNFO2lCQU1MO1NBREhzbEI7S0FBTyxPQXJCaEJGLHNCQWdCRTk4QixjQUdJKzhCLE9BRUdDO0lBRU47SUFKSCxPQUFBO0dBTUQ7WUFPQ2o1QjtJQUVHNnpCLFFBQ0FuUCxRQUNBcVQsZUFDQXI0QyxVQUNBdmtCLFVBQ0F2SCxVQUNBeDNCO0lBQ0QsR0FEQ0EsU0FBWUcsTUFBWkgsUUFBQSs4RixjQUFZNThGLGNBQVo0OEY7SUFFRCxnQkFBQWhtRTtLQUVKLE9BSktnbUU7O1FBdURnQjtTQUFmalQsZUFBZSxzQ0FyRGpCL3lEO1NBc0RFaW1FO29CQUFnQmw5RDtZQUNYLFlBQUEsc0NBdkRQL0k7d0JBOERVO2dCQU5Ib1o7WUFDTCxPQXBGSjJzRCxrQkFzQkd4NUMsYUEyRGlCeGpCLGlCQUVYcVE7V0FPTjtTQUd5Qjs7WUFDdEIsa0NBekVId3JELGVBMkRDN1I7O1FBV0osZUFFSSx1Q0FaQWtUOztXQTFERGorRDtTQVVEO2dCQVRDdkg7VUFRQzJZO1lBcEZKdXNEO2NBdUVHakY7Y0FDQW5QO2NBQ0FxVDtjQUNBcjRDO2NBQ0F2a0I7Y0FJRGhJOzs7VUFnQkVrbUU7cUJBQWdCbjlEO2FBQ1gsWUFBQSxzQ0FqQlAvSTt5QkF3QlU7aUJBTkhvWjthQUNMLE9BOUNKMnNELGtCQXNCR3g1QyxhQXFCaUJ4akIsaUJBRVhxUTtZQU9OO1NBQ0gsV0FyQklBLFFBV0E4c0Q7O1dBcEJEbCtEO1NBb0NNLElBQUEsUUFBQSxzQ0FoQ1BoSSxRQThCRjs7VUFPTTtXQUpHbW1FOztpQkFBQUE7V0FJSDs7Y0FDVSxXQUFVOzs7YUFKdEI7MkNBdkNENTVDLFVBQ0F2a0I7O29CQThDUztTQVpDO1VBQVR5Ujs7YUFDRjs7U0FjRixXQWZJQSwwQkFlVyxTQUFFOzs7O0tBSUosOEJBQVcsU0FBRSxHQXVCM0I7R0FBQTtHQWpaUztJQUFBOztPQU1SK3FEO09BT0FFO09BT0FDO09Ba0tBVztPQW9FQUs7T0FxQ0FDO09BZUFHO09BaUJBbDVCO0lBcUZGK1Y7OztPQXhhSjFqRDtPQUFBQztPQUNBQztPQUFBTTtPQUFBRztPQUFBQztPQUtJay9COztPQWthQTRqQjs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SUNuYUE1akI7SUFFQWloQzs7Ozs7Ozs7Ozs7O1lBSUFwekI7SUFFR3U1QjtJQUNBN1U7SUFDQXFUO0lBQ0FyNEM7SUFDQXZrQjtJQUNBNjREO0lBQ0FwZ0U7SUFDQThpRTtJQUNBL21CO0lBQ0F3cEI7SUFDQS84RjtJQUNEKzJCO0ksR0FEQy8yQixTQUFPRyxNQUFQSCxRQUFBczhGLFNBQU9uOEYsY0FBUG04RjtJQWNTLFVBYlZ2bEUsVUFhVSxNQUFBLFdBbEJUUztpQkFjTzA3QixHQUFLLE9BQU8sV0FuQm5CbzFCLFlBbUJPcDFCLElBQTRCOztLQUpsQzs7Z0JBR2UsV0FqQmhCeW9DO2dCQWdCYyxXQWhCZEE7U0FlY3pvQztLQUFNLE9BQUEsV0FqQnBCaXFDLFFBaUJjanFDO0lBRTBDO0lBTDNEO0tBQUE7T0FBQTs7OztTQVpHeW9DO1NBQ0FyNEM7U0FDQXZrQjs7U0FLQWcrRDtTQUNBVDs7S0FHUXBGO0tBQVJ3RjtXQUZEM2xFO0tBMkNZLFVBQUEsV0F6Q0htZ0UsVUFGVG5nRTtLQWtCSjtLQXVCZ0IsTUFBQSxXQTlDWFM7O09BSUE4a0U7MEJBc0NZLG9CQUFnQjttQkFDcEJwOEYsUUFBVSxPQUFjLFdBL0NoQ3k3RixvQkErQ1F6N0YsU0FBOEM7O09BdkN0RG84RjswQkErQlksb0JBQWdCOzs7VUFDckI7O2FBR2dCLE9BQUEsV0E3Q3ZCYTs7YUEyQ29CLE9BQUEsV0F6Q3BCeEI7cUJBMENzQixPQUFBLFdBMUN0QkE7O1NBMkMyRDtLQVI1RDs7UUFDQTs7OztVQW5DQ3I0QztVQUNBdmtCOztVQUNBNjREOztVQUdBcmtCOzs7S0E2QkQsTUFBQSw0QkF4QkNtcEI7S0F1QkgsTUFBQSw4QkE3QkdwQztLQTZCSCxNQUFBO0tBQUE7V0ExQkdnQzs7O09BdUJDLDhCQTNCRDlrRTtLQXlCRDtXQUFBO0lBS0YsT0FBQTs7aUNBNUNBdStCLFFBRUFpaEMsV0FJQXB6Qjs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNqQkFBO0lBRUd1NUI7SUFDQTdVO0lBQ0FobEM7SUFDQXZrQjtJQUNBNjREO0lBQ0FubkQ7SUFDQTgzQztJQUNBNzVDO0lBQ0FsWDtJQUNEc0k7SUFFUztLQUFBLE1BQUEsdUNBTlIyUSxTQUNBODNDO0tBS0RwNEMsU0FBUztLQUFBO0tBa0JULGNBcEJBclEsUUFGQzRPLFVBSUR5Qjs7Ozs7S0FLRSx1QkFDYStpQixjQUFhLE9BQUEsV0FoQjNCbzFCLGFBZ0JjcDFCOzs7TUFHMkIsT0FBQSxXQW5CekNvMUIsYUFLQUM7O1VBZXVDenFCO01BQzdCLE9BQUEsV0FyQlZ3cUIsYUFvQnVDeHFCOztTQUhUdU07S0FDcEIsT0FBQSxXQWxCVmllLGFBS0FDLFlBWThCbGU7SUFJSDtJQVZoQztZQUNFOztjQWJHOHlCOztjQUNBN1U7Y0FDQWhsQztjQUNBdmtCO2NBQ0E2NEQ7Y0FJQXBnRTs7Ozs7Ozs7WUFnQ0g0bEUsY0FBZ0JsOUQ7O0tBSUUsSUFBWm05RCxZQUFZLHNDQUpGbjlEO0tBS2Qsc0RBREltOUQ7S0FDSjtJQUVEO0lBSkQsT0FBQTtHQU1EO1lBQ0NDLGNBQWdCaFY7aUJBSWhCanZDO0tBQVEsS0FBUkEsTUFFWTtTQUNIa25CLFNBSFRsbkI7S0FHeUIsT0FBQSxXQVBUaXZDLFlBT1AvbkI7SUFFUjtJQUxELE9BQUE7Ozs7OztHQU9EO1lBRUNnOUIsYUFBZWpWOztLQUtYO01BREVrVjtRQUNGO0tBR0YsT0FKSUEsWUFJVyxXQVJGbFY7SUFhZDtJQVZELE9BQUE7R0FZRDs7O1VBaEZDMWtCLE1BMENBdzVCLGVBVUFFLGVBYUFDOzs7O0U7Ozs7Ozs7O0c7Ozs7O0dDL0RROztJQWFOeDRFOzs7O0lBYkZwaEIsT0FBUTtJQUNSODVGLFVBQVc7Ozs7O1lBQ1hDLHFCQUNFMzRCLFNBQWdCNDRCO0lBQXVDLGtCQUUxRCxnQ0FKQ0YsVUFFa0JFO0lBQXVDLGVBQzFELGdDQUpDaDZGLE9BR0VvaEU7R0FHTDtHQUNjO0lBQVg2NEI7OztPQUVJOztJQVFXLGNBQU0sZ0NBakJyQmo2RixXQUNBODVGO2NBREE5NUYsVUFnQjBDO0lBQWxCLGNBQUU7SUFKMUJrNkY7OztXQUlpQiwyQ0FmakJKOztPQVlFMTRFO1dBTkY2NEU7SUFnQkFFLGtCQVhBRDs7VUFaQWw2RixNQUNBODVGLFNBQ0FDLHNCQUtBRSxVQUtBQyxTQVdBQzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNwQkFDLE9BQVdDLFFBQWVDO0lBQTBCO0tBNEI1Qzs7OztTQUdBOzs7S0FOTixNQUFBLCtCQXpCd0JBO0tBd0J4QixNQUFBLCtCQXhCU0Q7S0FzQlgsTUFBQTtpQkFMa0RFLE9BQVFDO0tBQ3hEO2dCQUE4Qix5Q0FEMEJBO2dCQUN0QztLQUFsQixXQURnREQsV0FDdkM7SUFBb0M7SUFsQks7OztZQWlCcEQ7OzZCQWpCV0Y7NkJBQWVDOzs7O0dBc0M3QjtrQ0F0Q0dGOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHQ0hnQjs7SUEyQmRoNUU7SUFpQkFvZ0Q7O0lBaUJBQzs7Ozs7O0lBN0RGZzVCOzs7T0FFSTs7SUFJSkM7OztPQUVJOzs7SUFHSkM7OztPQUdBOzs7O0lBS0FDLFVBQVc7SUFDWEMsVUFBVzs7OztZQUNYQyx3QkFDRUMsTUFBYVY7SUFBcUMsa0JBRXJELGdDQUpDUSxVQUVlUjtJQUFxQyxlQUNyRCxnQ0FKQ08sVUFHRUc7R0FHTDtHQUdDO0lBRkVDOzs7O1FBUEFKO1lBVzJCLHlDQVYzQkM7O09BT0V6NUU7V0EzQkZxNUU7SUFvQ0FRLFVBQVc7SUFDWEMsWUFBVztZQUNYQyx3QkFDRUosTUFBYVY7SUFBcUMsa0JBRXJELGdDQUpDYSxZQUVlYjtJQUFxQyxlQUNyRCxnQ0FKQ1ksVUFHRUY7R0FHTDtHQUdDO0lBRkVLOzs7O1FBUEFIO1lBVzJCLHlDQVYzQkM7O09BT0UxNUI7V0F0Q0ZrNUI7SUErQ0FXLFlBQVc7SUFDWEMsZUFBZ0I7WUFDaEJDLCtCQUNFUixNQUFhUztJQUEwQzs7ZUFFMUQsZ0NBSkNGLGVBRWVFO0lBQTBDLGVBQzFELGdDQUpDSCxZQUdFTjtHQUdMO0dBR2E7SUFBUnA1QixRQUFRO2NBYUo7OztPQXJCTjI1QjtXQVFFMzVCLFdBWUk7Y0FaSkEsV0FTSTtJQUpNLGNBRU47SUFUTjg1Qjs7O1dBUEFKLGVBY0U7O09BTkE1NUI7V0FsREZrNUI7SUEwRUFlLHFCQTNEQVY7SUE2REFXLHFCQTVDQVA7SUE4Q0FRLDBCQTdCQUg7OztPQTVEQWhCO09BTUFDO09BS0FDO09BVUFHO09BS0FFO09BVUFDO09BQ0FDO09BQ0FDO09BS0FDO09BVUFDO09BQ0FDO09BQ0FDO09BS0FFO09BeUJBQztPQUVBQztPQUVBQzs7O0U7Ozs7Ozs7O0c7Ozs7O0dDekZXOztJQU9UeDZFOzs7O0lBUEZ5NkUsVUFBVztJQUNYQyxVQUFXO1lBQ1hDLG9CQUF3QkMsUUFBZTNCO0lBQXFDLGtCQUU3RSxnQ0FIQ3lCLFVBQ3VDekI7SUFBcUMsZUFDN0UsZ0NBSEN3QixVQUV3Qkc7R0FHM0I7R0FHQztJQUZFQzs7OztRQU5BSjtZQVUyQix5Q0FUM0JDOztPQU1FMTZFOztJQVVGODZFLGlCQVhBRDswQkFOQUosU0FDQUMsU0FDQUMscUJBSUFFLFFBV0FDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7R0NqQlc7O0lBUVQ5NkU7O0lBbUJBb2dEOzs7O0lBM0JGczRCLFVBQVc7SUFDWHFDLFVBQVc7Ozs7Ozs7WUFDWEMsdUJBQ0UvQixRQUFlZ0M7SUFBd0M7bUJBRTFELGdDQUpDRixVQUVpQkU7SUFBd0MsZUFDMUQsZ0NBSkN2QyxVQUdFTztHQUdMO0dBTTRDO0lBQUEsVUFBQztJQUEzQixjQUFNLGdDQVhyQjhCO2NBVTZDLHlDQVY3Q0E7Y0FVb0M7SUFKcENHOzs7V0FQQXhDLGFBVzJCOztPQUh6QjE0RTs7SUFTRm03RSxXQUFZO0lBQ1pDLFdBQVk7SUFDWkMsWUFBVztZQUNYQyx3QkFDRUMsU0FBZ0JDLFNBQWdCUDtJQUF3QzttQkFHM0UsZ0NBTENJLFlBRWtDSjttQkFFbkMsZ0NBTENHLFdBR2tCSTtJQUF3RCxlQUMzRSxnQ0FMQ0wsV0FJRUk7R0FJTDtHQUdjO0lBQVRFLFNBQVM7Y0FleUM7Y0FBVDtJQUFqQixVQUFDO0lBQXpCLGNBQU0sZ0NBZk5BOztVQUFBQSxZQVdBLHlDQXBCRko7Y0FEQUQsY0FtQkU7Y0FGQTtjQURBO0lBUkZNOzs7V0FUQVAsY0FnQkU7O09BTkEvNkI7O0lBc0JGOWdFLG9CQTFDQTQ3RjtJQTRDQVMscUJBekJBRCxnQkFuQkFSOzs7T0FQQXhDO09BRUFzQztPQUtBRTtPQVVBQztPQUNBQztPQUNBQztPQUNBQztPQU1BSTtPQXVCQXA4RjtPQUVBcThGOzs7RTs7Ozs7Ozs7Rzs7Ozs7R0NuRDJCOztJQThCekIzN0U7Ozs7OztJQTlCRjQ3RTs7O09BRUk7O0lBR0pDOzs7T0FFSTs7O0lBR0pDOzs7T0FFSTs7OztJQUdKQzs7O09BRUk7Ozs7SUFRSkMsWUFBYTs7O1lBQ2JDLHNCQUEwQkM7SUFBdUMsZUFDbEUsZ0NBRkNGLFlBQzBCRTtHQUU3QjtHQWFlO2NBR1I7Y0FEQTtjQURBO2NBRCtCO2NBQVo7SUFBWCxjQUFFO2NBQVY7Y0FEQTtjQURBO2NBREE7Y0FEOEI7Y0FBWDtJQUFYLGNBQUU7Y0FBVjtjQVpKRixlQVdJO0lBSkksY0FFSjtJQUhGRyxTQUNGO0lBSEFDOzs7V0FFRUQ7O09BREFuOEU7O1FBcEJGODdFOztTQUtBQzthQWZBSCw4QkFLQUM7SUF3REFRLHFCQWhDQUQ7OztPQTdCQVI7T0FLQUM7T0FLQUM7T0FLQUM7T0FVQUM7T0FDQUM7T0FHQUc7T0FnQ0FDOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztZQzdEQXg5QixLQUFReTlCO0lBQ1YsR0FEVUE7S0FFNEIsSUFBMUJ4OUIsS0FGRnc5QixTQUU0QixVQUFDLDZCQUEzQng5QjtLQUEwQixPQUFBOztJQUNMLGNBQUM7SUFBRCxPQUFBO0dBQ2hDOzJCQUpDRDs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDQUEwOUIsUUFBVUM7SUFDWixvQkFBdUMsOEJBRDNCQTtHQUN5RDtZQUVuRUMsbUJBQXVCbFosUUFBUWlaO0lBQXVDLElBQUE7d0JBTTdDLE9BQU8sV0FOVGpaLFFBSHZCZ1osUUFHK0JDLFFBTWdCO0lBRmpDO2VBRVI7S0FGUSxVQUNSO0tBREYsVUFBQTthQUhGRSxjQUdFLE9BQUE7SUFLTixTQVRpQ0Y7S0F5Qkk7Z0JBekJKQTtNQW9CZEY7TUFBTjk5QjtnQkFNUCw2QkFOYTg5QjtNQUtrQixVQUFDO01BQXRCLFVBQUE7Z0JBQVY7TUFEUyxVQUFDLDZCQUpIOTlCO01BR1QsVUFDRSxXQXZCRmsrQjtLQXNCQSxPQUFBOztJQVBpQzthQWhCSkY7S0FVZjc5RjtLQUFOekU7ZUFPTiw2QkFQWXlFO0tBTW1CLFVBQUM7S0FBdEIsVUFBQTtlQUFWO0tBRFMsVUFBQyxnQ0FMSnpFO0tBSVIsVUFDRSxXQWRGd2lHO0lBYUEsT0FBQTtHQWdCTDtZQUVHQyxTQUFhcFosUUFBUXFaO0lBQ3ZCO0tBSUksTUFBQSw4QkFMbUJBO0tBS25CLE1BQUE7SUFEQSxrQixPQXBDRkgsbUJBZ0NhbFo7SUFHYjtLQUFBLE1BQUE7S0FETSxVQUFBO0lBQ04sT0FBQTtHQUlEO1lBRUNzWixlQUFtQnRaLFFBQVE5ekI7SUFDN0I7S0FBQSxNQUFBLGdDQUQ2QkE7S0FDN0IsTUFBQTtLQUFBLE1BQUE7SUFHWSxrQixPQTdDVmd0QyxtQkF5Q21CbFo7SUFDckIsT0FBQSxXQUdHO0dBQXFDO1lBRXRDMWtCLEtBQ0Uwa0IsUUFBU3ZwRCxVQUFzQnkxQjtJQUF5QztXQUEvRHoxQjtLQUdULE1BQUE7S0FGQXUwRCxPQUNGO0tBR2MsTUFaZHNPLGVBT0V0WixRQUErQjl6QjtJQUtuQixPQUFBLHdDQUpaOCtCO0dBS0w7OztVQXpER2dPLFNBR0FFLG9CQWdDQUUsVUFTQUUsZ0JBTUFoK0I7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQzlDb0I7O0lBK1BQdkU7Ozs7Ozs7Ozs7O0lBeFBYai9EOztJQVRGeWhHO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUNvQixVQUFBLDRCQUZwQkQ7WUFFQUUsY0FBb0IsT0FBQTtHQUFWO0lBQUE7SUFDUyxVQUFBLDRCQUZuQkQ7WUFFQUUsYUFBbUIsT0FBQTtZQUVuQkMsU0FBWTc3RTtJQUNkO0tBQTBCLFdBQUMsZ0NBRGJBO0tBQ0osV0FBQTtJQUFnQixPQUFBO0dBQWE7WUFFckM4N0Usb0JBQXdCNVosUUFBUzZaO0lBRW5DLFNBQUlDO0tBQ0Y7O01BQTZCLFdBQzNCLFdBSnNCOVo7S0FHeEI7SUFHRTtJQUdGO0tBQUE7O1FBQUM7O2NBUkNsb0Y7O1VBRCtCK2hHO1VBRS9CQzs7S0FNSSxXQUFBO0lBQ04sT0FBQTtHQUVIO1lBRUdDLFNBQVk3dEM7SUFDZDtLQUF3QyxPQUFBLGdDQUQxQkE7S0FDMEIsT0FBQTtLQUFOLFdBQUM7S0FBekIsV0FBQTtJQUF3QixPQUFBO0dBQXNDO1lBRXRFOHRDLFdBQWVoYSxRQUFRaWE7SUFDekI7S0FNRSxXQUFDO0tBQUQ7WUFQdUJBO0tBS2QsT0FBQTtnQkFBTDt5QkFEbUIsT0FBQSxXQUpSamEsYUFJNEM7SUFEL0M7S0FBQSxXQUNSO0tBREYsV0FBQTtJQUlGLE9BQUE7R0FDRDtZQUVDa2EsVUFBY2xhLFFBQVN2cEQsVUFBc0J5MUI7SUFBTztLQUMzQyxPQUFBLGdDQURvQ0E7S0FDM0MrZSxPQUFPO2dCQWRUOHVCLFNBYTZDN3RDO2dCQTFCN0MwdEMsb0JBMEJjNVosUUFBU3ZwRDtLQU9TLFdBQUMsZ0NBTi9CdzBDO0tBTVUsV0FBQTtnQkFBVjs7V0FEQSxxQ0FOWStVLFFBQVN2cEQsVUFBc0J5MUI7S0FJN0MsV0FkQTh0QyxXQVVjaGEsUUFBU3ZwRDtZQUdXLGdDQUhXeTFCLFVBbEM3Q3F0QztLQXFDVyxPQUFBLDhDQUZUdHVCO0tBRUksV0FBQTtJQUNOLE9BQUE7R0FXSDtZQUVHa3ZCO0lBQ0Y7Ozs7Ozs7Ozs7YUFJcUI7OzthQUhBOzs7Ozs7Ozs7O0tBRUg7O0lBRVgsT0FBQTtHQUFvRDtZQUV6REMsZ0JBQW1CbmdDLEtBQVlsRDtJQUNqQyxTQURpQ0E7bUJBQUFBOzs7O1NBbUJBc2pDO1NBQUxDO29CQUl4Qiw2QkFKd0JBOzs7WUFHeEI7O29CQURBLDZCQUY2QkQ7UUFBVSxXQUN2Qzs7UUFPNEI7U0FGUkU7U0FFUSxPQUFBLDhDQUZSQTtTQUVILE9BQUE7U0FBZCxPQUFBO1NBREUsT0FsQ1BKLGNBUW1CbGdDO1NBMEJaLE9BQUE7UUFEd0IsV0FDN0I7OztTQVpxQjcrRDs7O1lBR3JCOztvQkFEQSw2QkFGcUJBO1FBQVMsV0FDOUI7OztnQkFmNkIyN0Q7OztXQUVmeWpDO1VBQ1QsK0JBRFNBO1FBRUo7Z0JBQUM7OztPQUNJLFdBQUEsa0NBSERBO09BR0wsV0FBQzs7T0FNQTtRQUpLai9CO1FBSUwsT0FBQTttQkFBVjs7Y0FEQTttQkFEQSw2QkFGZUE7T0FBUTtlQUN2Qjs7OztRQUtxQjVrRTttQkFBMkI7T0FBakIsV0FuRWpDZ2pHLFNBbUV1QmhqRzs7R0FnQnhCO1lBRUM4akcsZUFBa0J4Z0MsS0FBWXlnQztJQUFvQjs7OzthQUFoQ3pnQzs7b0JBQUFBOzs7Ozs7O3FCQUFZeWdDO2FBS0Y7cUJBQUM7OzswQkFMQ0E7OzthQU9HQzt3QkFFL0IsNkJBRitCQTtZQUFjO29CQUM3Qzs7Ozs7O29CQVJnQjFnQzs7Ozs7O3FCQUFZeWdDO2FBTUY7cUJBQUM7OzBCQU5DQTs7O2FBV0dFO3dCQUUvQiw2QkFGK0JBO1lBQWM7b0JBQzdDOzs7Ozs7O01BVnNDO2NBQ3RDOzs7Y0FINEJGO1VBZXRCTCxNQWZzQkssa0JBZUQsNkJBQXJCTDtNQUFTLFdBQUM7OztjQWZBcGdDO2lCQUFBQTs7b0JBQVl5Z0M7OztPQWdCU0c7a0JBRXJDLDZCQUZxQ0E7TUFBYyxXQUNuRDs7aUJBakI0Qkg7O1VBeUJWSixnQkFMS1E7TUFBZ0IsR0FBQSxXQUtyQlIsS0FMS1E7OztjQUd2QjttQkFEQSw2QkFGdUJBO09BQThCLFdBQ3JEOzs7T0FJdUJDO2tCQUl2Qiw2QkFKa0JUOzs7VUFHbEI7O2tCQURBLDZCQUZ1QlM7TUFBYyxXQUNyQzs7O0lBVUE7ZUFwQzRCTDtLQStCZUg7S0FBYlM7Z0JBS1MsNkJBTFRBO0tBSzlCOztRQUFDOztLQUYyQixPQUFBLDhDQUhlVDtLQUcxQixPQUFBO0tBQWQsT0FBQTtLQURFLE9BeEVQSixjQXVDa0JsZ0M7S0FpQ1gsT0FBQTtLQURQLFdBQ0U7SUFHQSxPQUFBO0dBRUw7WUFFR2doQyxZQUFlaGhDLEtBQVl5Z0M7SUFDN0IsT0FENkJBOztPQVVmO1FBREVRLFNBVGFSO1FBU25CL2pHLE9BVG1CK2pHO21CQVl6Qiw2QkFIWVE7OztXQUVaOztRQURVLE9BQUEsa0NBREp2a0c7T0FBaUIsV0FDdkI7OztRQUlnQndrRyxXQWRTVDttQkFnQnpCLDZCQUZnQlM7T0FBVztlQUMzQjs7O09BVlU7UUFESUMsWUFKV1Y7UUFJakJ6L0IsU0FKaUJ5L0I7bUJBT3pCLDZCQUhjVTttQkFFZDtRQURVLE9BQUEsa0NBREZuZ0M7T0FBb0IsV0FDNUI7O1dBRkdNLEtBSHNCbS9CO09BRWQsR0FBQSxXQUZFemdDO1FBRXVCO2dCQUFDOztzQkFDWDtPQUFoQixXQUFDLDZCQUFSc0I7O0dBZU47WUFFQzgvQixhQUFnQlg7SUFDbEIsVUFEa0JBO2NBQUFBO01BWUc7Y0FBQzs7OztZQVpKQTs7O1NBTVBGLFFBTk9FOzs7WUFRZDs7UUFGaUIsV0F2Sm5CZixTQXVKU2E7O1FBSEc7U0FESzdqRyxPQUZEK2pHO29CQUlkO1NBRFUsT0FBQSxrQ0FESy9qRztRQUFTLFdBQ3hCOztRQVdVO1NBRFNza0UsU0FiTHkvQjs7O1lBZWQ7O1NBRFUsT0FBQSxrQ0FEU3ovQjtRQUFTLFdBQzVCOztJQUg2QixXQUFDO0dBTWpDO1lBRUNxZ0MsU0FBWXJoQyxLQUFZcUg7SUFDMUIsU0FEMEJBO2lCQUFBQTs7TUFLaEI7OztVQUFDOztNQUFELE9BQUEsV0E1S1JtNEI7Ozs7UUEwS1E7U0FEWTlpRztvQkFDSztTQUFqQixXQXZLUmdqRyxTQXNLb0Joakc7UUFDWixPQUFBLFdBMUtSOGlHOzs7O1NBdUxPO1VBUnNDOEI7VUFBVkM7VUFRNUIsT0FBQSx1QkFSc0NEO1VBUXRDLE9BQUE7O1VBREEsT0FBQTt1QkFQNEJDO1VBTTVCLE9BQUE7VUFEQSxPQUFBO1VBREEsT0FBQSx1QkFKNEJBO1VBSTVCLE9BQUE7VUFESCxPQUFBO1VBRkksV0FDTjtTQURNLE9BQUEsV0FoTFIvQjs7UUE4S1E7OztZQUFDOztRQUFELE9BQUEsV0E5S1JBOztRQTJMaUMsSUFBbkJodEMsa0JBQW1CLE9BbElqQzJ0QyxnQkE4R1luZ0MsS0FvQkV4TjtRQUFtQixPQUFBLFdBM0xqQ2d0Qzs7O2tCQXVLd0JuNEI7O0tBc0JqQjtNQUR5Qmc1QjtpQkFDQSw2QkFEQUE7TUFDekIsV0FBQztLQUFELE9BQUEsV0E1TFBaOztJQTZMZ0MsSUFBZmdCLGlCQUFlLE9BdEdoQ0QsZUErRVl4Z0MsS0F1Qkt5Z0M7SUFBZSxPQUFBLFdBN0xoQ2hCO0dBOExEO1lBRUMrQixTQUFZeGhDLEtBQVlxSDtJQUMxQixTQUQwQkE7S0FJQSxJQUFkbzVCLEtBSmNwNUIsV0FJQSxPQTdHeEJtNUIsZUF5R1l4Z0MsS0FJRnlnQztLQUFjLE9BQUEsV0FwTXhCaEI7O2dCQWdNd0JwNEI7O0tBR1MsSUFBbkI3VSxrQkFBbUIsT0EzSWpDMnRDLGdCQXdJWW5nQyxLQUdFeE47S0FBbUIsT0FBQSxXQXBNakNndEM7O0lBbU11Qzs7V0FBQztJQUFELE9BQUEsV0FuTXZDQTtHQXNNRDtZQUVDaUMsU0FBWXpoQyxLQUFZcUg7SUFDMUIsU0FEMEJBO0tBR0QsSUFBaEJ2SyxNQUhpQnVLLFdBR0QsT0F2RHZCKzVCLGFBdURPdGtDO0tBQWdCLE9BQUEsV0EzTXZCMGlDOztJQTBNd0IsSUFBZGlCLEtBRmNwNUIsV0FFQSxPQTFFeEIyNUIsWUF3RVloaEMsS0FFRnlnQztJQUFjLE9BQUEsV0F6TXhCaEI7R0EyTUQ7WUFFQzMvQixpQkFBdUJ1SDtJQUN6QixTQUR5QkE7aUJBQUFBOztNQUdRLElBQWpCM3FFLGlCQUFpQixVQUFDLDZCQUFsQkE7TUFBaUIsT0FBQSxXQWhOL0IraUc7O0tBK00yQjs7WUFBQztLQUFELE9BQUEsV0EvTTNCQTs7Y0E2TXVCcDRCOztTQWlCSnJHOzs7UUFQUDtTQUFBLE1BQUEsa0NBT09BO21CQVBqQjtTQUZNOztZQUNOOztRQURNLE9BQUEsV0F0TlJ3K0I7O1FBNk5ZO1NBQUEsTUFBQSxrQ0FFT3grQjttQkFGakI7U0FGTTs7WUFDTjs7UUFETSxPQUFBLFdBM05SdytCOztRQWtPWTtTQUFBLE1BQUEsa0NBSE94K0I7bUJBR2pCO1NBRk07O1lBQ047O1FBRE0sT0FBQSxXQWhPUncrQjs7OztLQW1OUTs7O1NBQUM7O0tBQUQsT0FBQSxXQW5OUkE7O0lBb044QixlQUFDO0lBQUQsT0FBQSxXQXBOOUJBO0dBb09EO1lBRUNrQyxlQUFrQjFoQztJQUFlO0tBQWEsTUFBQSw2QkFBNUJBO0tBQXNCLFVBQUM7SUFBRCxPQUFBLFdBck94Q3kvQjtHQXFPZ0U7WUFFaEVrQyxhQUFpQjViLFFBQVN2cEQsVUFBVXkxQjthQUNsQzJ2QyxRQUFVQztLQUNaO01BRUUsVUE1TUY1QixVQXdNaUJsYSxRQUFTdnBELFVBQVV5MUIsU0FDeEI0dkM7TUFFSixVQUFBO0tBQ04sT0FBQTtJQUNEO0lBQ0gsT0FOc0M1dkM7O21CQUFBQSxPQVF0Qm9WLG1CQUFMckg7T0FBNEIsT0FQbkM0aEMsUUFsRUZQLFNBeUVTcmhDLEtBQUtxSDs7cUJBUnNCcFYsT0FTdEI2dkMsdUJBQUxDO09BQTRCLE9BUm5DSCxRQXhDRkosU0FnRFNPLE9BQUtEOztxQkFUc0I3dkMsT0FVdEIrdkMsdUJBQUxDO09BQTRCLE9BVG5DTCxRQWpDRkgsU0EwQ1NRLE9BQUtEOztxQkFWc0IvdkMsT0FXckJpd0MsdUJBQUxDO09BQTRCLE9BVnBDUCxRQTNCRjloQyxVQXFDVXFpQyxPQUFLRDtlQUpTLE9BTnRCTixRQU1zQjs7R0FNM0I7WUFFR3paLGVBQW1CcEMsUUFBU3ZwRCxVQUFVeTFCO0lBQ3hDO0tBRUUsVUFsQkEwdkMsYUFlbUI1YixRQUFTdnBELFVBQVV5MUI7S0FHdEM7S0E1UEFtd0MsU0EyUG1DLGdDQUZHbndDLE1BelB0Q3F0QyxPQUNBQztLQTBQVyxNQUFBLGdDQTNQWDZDO0tBMlBNLFVBQUE7SUFDTixPQUFBO0dBQ0Q7WUFFQy9nQyxLQUFTMGtCLFFBQVN2cEQsVUFBc0I2bEU7SUFBZ0M7S0FBQTtLQUNqRCxVQUFBO2FBQXJCQyxjQUFxQixPQUFBO1NBREw5bEUsZ0JBVWU7T0FWTzZsRTtLQWlCTjtNQUw3QnB3QyxLQVptQ293QztNQWlCTixNQUFBLGdDQUw3QnB3QztNQUtnQixNQUFBO01BQVgsTUFBQTtNQUFOLFVBQUM7TUFESyxVQUFBO2dCQURSO01BRk8sVUFuQlRrMkIsZUFNU3BDLFFBQVN2cEQsVUFZYnkxQjtLQUNJLE9BQUEsV0FaUHF3Qzs7SUFLNkI7ZUFBa0IsZ0NBSnBDeGxDO0tBSWtCO0tBQWhCLFVBQUE7S0FBWCxVQUFDO0tBREssVUFBQTtLQUZELFVBQ1A7SUFETyxPQUFBLFdBRlB3bEM7R0FvQkw7Ozs7T0FwUkdoRDtPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUdBQztPQWFBRztPQUdBQztPQVVBRTtPQWlCQUM7T0FRQUM7T0ErQkFLO09Bd0NBUTtPQW9CQUk7T0FtQkFDO09BMEJBRztPQU9BQztPQU1BM2hDO09Bd0JBNGhDO09BRUFDO09BZUF4WjtPQU1BOW1COzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ2pRQWtoQyxZQUFlN2xHLE1BQU1zRDtJQUN2QjtLQUVFLFVBQUMsZ0NBSG9CQTs7T0FFZixrQkFGZUEsR0FBTnREO1VBRUc7VUFBc0M7SUFDeEQsT0FBQTtHQUNEO1lBRUM4bEcsVUFBY3pjLFFBQXlCcHFCO0lBQ3pDLElBQUEsU0FTb0IsTUFBQSxpQ0FWcUJBO0lBVWpDLGtCLE9BaEJONG1DO0lBZUksVUFBQTt3QkFIcUI3bEc7S0FDakIsT0FBTztjQVBEcXBGLGdCQU9VLGlDQURDcnBGO0lBQytCO0lBRGxEO0tBQUEsVUFBQTtLQUhOLFVBQ0U7ZUFGeUM7S0FBM0IsVUFBQztLQUFYLFVBQUE7SUFDTixPQUFBO0dBWUQ7WUFFQytsRyxhQUFpQjFjLFFBQVMyYyxXQUFZQztJQUFlO0tBQ25EQywyQkFEd0JGLG1CQUFZQztLQUVwQ0UsVUFBVSw0QkFGY0gsbUJBQVlDO0tBRTFCO3dCQUllLE9BQU8sV0FOakI1YyxhQUNmNmMsVUFLbUU7SUFEaEU7O1dBQ0w7S0FESyxNQUFBLGtDQUxxQkYsbUJBQVlDO2VBS3RDO3dCQUR3QixPQUFPLFdBSmQ1YyxhQUVmOGMsVUFFZ0U7SUFEcEU7WUFDRTs7R0FJSDtZQUVHQyxhQUFpQi9jLFFBQVMyYyxXQUFZajNEO0lBQ3hDO0tBQ0UsTUFaQWczRCxhQVVpQjFjLFFBQVMyYyxXQUVvQiwyQkFGUmozRDtLQUN4QyxVQTVCRSsyRCxVQTJCaUJ6YztJQUVqQixPQUFBO0dBQWtFO1lBRWxFZ2QsbUJBQXVCaGQsUUFBU3JwRixNQUFPOHVDO3NCO0lBQ3RCLElBQWZ3M0QsZUFBZSxpQ0FEc0J4M0Q7Ozs7Ozs7Ozs7O3FCQUNyQ3czRDtTQUVGOztjQUlHbGtHOzs4QkFBR3NuRTs7VUFFYyxHQUFBLGtCQVRZMXBFLE1BTzdCb0M7Y0FHTXlHO1VBQWMsR0FBQSxrQkFWUzdJLE1BTzFCMHBFO2NBSUc0Ryx1QkFBQUE7Ozs7OztPQUxLLEdBQUEsa0JBTmtCdHdFLE1BTzdCb0MsNkJBQUdzbkU7T0FBUSxHQUFBLGtCQVBrQjFwRSxNQU8xQjBwRSwwQkFBSHRuRTs7Ozs0QkFBQUEsUUFHTXlHOzs7OEJBSEg2Z0U7O1FBS0cwSCxtQkFBTkM7aUJBR1dsNEM7eUJBQ2UsT0FBTyxXQWhCYmt3RCxZQWVUbHdELElBQ3lEO0tBQS9DLE9BQUE7SUFBZ0Q7SUFGeEU7S0FBQSxNQUFBLFdBQ0csbUNBSEFrNEM7S0FFSDtLQVFTLE1BQUEsV0F0QmNnWTtLQWFyQmtkO09BT0s7OztTQUFBO2lCQVFPcHRFO3lCQUVQLE9BQU8sV0E5QlNrd0QsWUE0QlRsd0QsSUFFbUM7S0FEdEIsT0FBQTtJQUVyQjtJQUpOO0tBQUEsTUFBQSxXQUNHLG1DQWhCTWk0QztLQWVUO0tBVVMsTUFBQSxXQXJDY2lZO0tBMEJyQm1kO09BU0s7OztTQUFBO2VBVExBO0lBdUJTLGtCLE9BdEZYWCxZQXFDZ0M3bEc7SUFpRDlCLFVBQUEsaUNBaERBc21HO3dCQTZDcUJ0bUcsTUFDakIsT0FBTyxXQS9DVXFwRixZQThDQXJwRixPQUM0QjtJQUQvQztLQUFBLFVBQUE7O1dBakNGdW1HLFlBK0JGO0lBSEYsV0F4RUVULFVBK0J1QnpjO0dBcUQxQjtZQUVHb2Qsa0JBQXNCcGQsUUFBU241QztJQUNqQyxtQ0FNSTtJQUxBO3dCQUVFLE9BQUEsV0FKa0JtNUMsYUFJZ0I7SUFGcEM7WUFDQSwwQ0FINkJuNUM7O0dBTzNCO1lBRUp3MkQsZUFBbUJyZCxRQUFTMmMsV0FBWTcxRCxPQUFRRDtJQUFvQjtLQUdwRSxNQWpGQTYxRCxhQThFbUIxYyxRQUFTMmMsV0FHa0IsMkJBSE43MUQ7S0FFeEMsTUFYQXMyRCxrQkFTbUJwZCxRQUE2Qm41QztLQUVoRCxNQUFBO0tBREYsVUFoR0U0MUQsVUErRm1CemM7SUFFbkIsT0FBQTtHQUVIO1lBRUcxa0IsS0FFRzBrQixRQUNBdjZDO0lBRkgsSUFHZ0JvQjtJQUVKLE9BSFRwQjs7O1FBTWtCQyxTQU5sQkQ7UUFNT2szRCxZQU5QbDNEO1FBSURrTCxXQWpGRm9zRCxhQTRFRy9jLFFBT08yYyxXQUFXajNEOzs7O1FBRUNvRCxZQVJuQnJEO1FBUWE5dUMsT0FSYjh1QztRQUlEa0wsV0E3RUZxc0QsbUJBd0VHaGQsUUFTYXJwRixNQUFNbXlDOzs7O1FBRUNoQyxRQVZwQnJCO1FBVVM2M0QsY0FWVDczRDtRQUlEa0wsV0FiRjBzRCxlQVFHcmQsUUFXU3NkLGFBQVd4MkQsT0FUUEQ7O0lBWVIsY0FBQTtJQUFWLE9BQUEseUNBVEk4SjtHQVVMOzs7O09BNUhHNnJEO09BTUFDO09BaUJBQztPQVVBSztPQUlBQztPQXVEQUk7T0FTQUM7T0FNQS9oQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDMUdBaWlDO0lBQWE7S0FBa0I3MkI7S0FBaEI4MkI7S0FPVCxPQUFBLGtDQVBTQSxRQUFnQjkyQjtLQU8vQixXQUFDO0tBQUQ7O09BRkksNkJBTFc4MkIsUUFBZ0I5MkI7OztLQUc3Qjs7UUFBQTs7SUFJRixPQUFBO0dBRUg7WUFFRysyQixnQkFBbUJ6Z0Y7SUFBa0I7S0FPL0IsT0FBQSx5Q0FQYUE7S0FPbkIsV0FBQztLQUFEOztPQUZJLDZCQUxlQTtLQUdqQjs7UUFBQTs7SUFJRixPQUFBO0dBRUg7Ozs7O1lBSUswZ0YsZ0JBQW1CQztJQUFjLFlBQWRBOztLQUVYLFdBQUM7SUFJTDtLQUhDbmM7S0FFR29jLGNBRkhwYztLQUdHcWMsV0FOV0Y7O09BTVhFLFlBREFEO0tBSWlCO01BQUEsT0FBQSx1QkFIakJDO01BQ0FDLG9CQUVFOztLQUdHO01BQUEsT0FBQSx1QkFaTUg7TUFXTixPQUFBO01BREgsT0FBQSx1QkFQTG5jO01BSUdzYyxvQkFHRTtJQU9EO0tBQUEsT0FBQSw2QkFkSnRjO0tBYUksT0FBQTtLQURBLE9BQUEsdUJBUkRzYztLQU9GLE9BQUE7SUFYZ0IsV0FVbEI7R0FTUDtZQUVHeGlDLEtBQVMwa0IsUUFBUTJkLFFBQVdJO0lBQW9CLElBQUEsaUJBQS9CSjtrQkFhR25jO0tBQ1QsT0FBQSxpQ0FkRnhCLFFBYVd3QjtJQUtSO0lBTk47S0FBQSxPQUFBLFdBQ0c7S0FGTCxPQUFBO0tBSEksT0FoQ1JrYyxnQkF3QmlCQztLQU9YOztRQXZEUko7VUF1RG9COzhCQUFpQix1QkFQbEJJLFNBQVdJOztLQU90QixPQUFBO0tBRE0sV0FBQTtLQUZWLFdBQ0U7S0FERixPQUFBO0tBRE0sV0FBQTtLQUZjLFdBQ3RCO0lBRHNCLE9BQUE7R0FzQnpCO0dBakQyQjtJQUFBOzRDQUV4QkwsaUJBd0JBcGlDOzs7OztZQThCQTBpQyxnQkFBb0JDLE9BQVFDLE9BQVFDO0lBQ3RDO0tBRTJCLE9BQUEsd0JBSEdELE9BQVFDO2dCQUdoQjtLQUFwQixXQWpGRlosV0E4RXNCVTtLQUVkLFdBQUE7SUFDTixPQUFBO0dBQ0Q7WUFFQ0csSUFBUXBlLFFBQVFzQztrQkFJYi9xRjtLQUFEO01BQU0rcEU7TUFPSTtRQUFBLGlDQVhKMGUsWUFJTHpvRjtpQkFLTztNQURhOzZCQUFZLG9DQUozQitwRTtNQUdVLFdBQ1I7TUFERixXQUFBO0tBRkosT0FBQTtJQVVDO0lBWkw7S0FBQSxPQUFBLGtDQUhnQmdoQjtLQUVWLFdBQUE7SUFDTixPQUFBO0dBZUQ7WUFFQytiLFFBQVlyZSxRQUFTMmQsUUFBU0k7SUFBZSxJQUMzQ0csUUFBUSwyQkFEV1AsWUFFdkIsT0FGdUJBO3lCQUlQLElBQUU1a0csMkJBQUFBLFVBQWlDO0lBQS9DO0tBQUEsT0FBQTtLQUZBb2xHLFFBQ0Y7S0FHRUcsZUFMQUosVUFDQUM7Z0JBdEJGQyxJQW9CWXBlLFFBQVMyZDtLQWVyQjs7UUF6Q0FLO1VBMkNXOzhCQUFpQix5QkFqQlBMLFNBQVNJO1VBQzVCRztVQUNBQzs7S0FPQTs7UUFBQTs7OzswREFIQUc7SUFTRixPQUFBO0dBU0g7WUFFR0Msa0JBQXFCaG5HLElBQUt5b0YsUUFBU3dlLE1BQWVsOUI7SUFDcEQ7S0E2Qk0sV0FBQyxnQ0E5QjhCazlCO0tBeUJoQjs7Ozs7YUFHWCxvQ0E1QjBDbDlCO0tBeUI1QyxXQUFBO0tBSEosV0FDQTtLQUxRLE9BQUEsdUJBbEJXL3BFO0tBa0JqQixXQUFDO0tBSGEsT0FBQSxvQ0FmZ0MrcEU7S0FhL0IsNEJBRVg7S0FGRixXQUFBO0tBSE4sV0FDRTtLQURGLE9BQUE7S0FITTtPQUFBLGlDQVBvQjBlLFlBQUx6b0Y7Z0JBTWpCO0tBSFEsV0FDUjtLQURGLFdBQUE7SUFPRixPQUFBO0dBdUJEO1lBRUNrbkcsbUJBQXVCemUsUUFBUTBlO2tCQUdqQjlrRztLQUFELElBQWE0a0csaUJBQVJsOUI7S0FDYixPQXZDTGk5QixrQkFzQ2Mza0csR0FIU29tRixRQUdHd2UsTUFBUmw5QjtJQUNnQztJQUZsRDtZQUFBLFdBQ0csbUNBSDRCbzlCO0lBRS9CLE9BQUE7R0FJRDtZQTJEQ3J0QixPQUFTMk8sUUFBUTJkLFFBQVdJO0lBQzlCLFNBRDhCQSxZQUNULE9BQUE7SUFZVDtLQUFBLFdBM0lWTSxRQThIU3JlLFFBQVEyZCxRQUFXSTtnQkFqRTVCVSxtQkFpRVN6ZSxRQUFRMmQ7S0FNZixXQUNFO0lBTU0sT0FBQTtHQUVYO0dBM0swQjtJQUFBOzs7Ozs7T0FJekJLO09BTUFJO09Bb0JBQztPQTBCQUU7T0FtQ0FFO09BaUVBcHRCOztZQW9CQXN0QixvQkFBcUIva0csR0FBUTRrRyxNQUFjbDlCO0lBQWlCO0tBQzFEczlCLGdCQUR5Q3Q5QjtLQWN2QyxXQUFDLGdDQWR3Qms5QjtLQWFuQjs7UUFBQTs7Ozt3Q0FaUkk7S0FVQSxXQUNBO0tBSlEsT0FBQSx1QkFSV2hsRztLQVFqQixXQUFDO0tBRGtCOzs7WUFBWSxtQ0FOakNnbEc7S0FNUSxXQUFBO0tBRlYsV0FDRTtLQURGLE9BQUE7S0FETSxXQUFBO0lBQ04sT0FBQTtHQWFIO1lBRUdDLHFCQUFzQkM7a0JBR1JsbEc7S0FBRCxJQUFhNGtHLGlCQUFSbDlCO0tBQ2IsT0F4QkxxOUIsb0JBdUJjL2tHLEdBQVk0a0csTUFBUmw5QjtJQUNxQjtJQUZ2QyxXQUFBLFdBQ0csbUNBSG1CdzlCO0lBRXRCLE9BQUE7R0FLSDtZQUVHQyxPQUFRQztJQUFxQjs7V0FxQmY7S0FGRixVQS9SZHZCLGdCQTRRVXVCO0tBa0JVLFdBQUE7S0FGVixXQUNFO0tBRkksV0FBQTtLQUZjLFdBQ3RCO0tBRkosV0FDRTtnQkF0QkpILHFCQVNRRztLQUdSO1dBQ0U7SUFRQSxPQUFBO0dBbUJMO0dBOURtQjtJQUFBO2dCQUVoQkwscUJBb0JBRSxzQkFTQUU7Ozs7OztZQXFDQUUsa0JBQW1CdEI7SUFBYyxZQUFkQTs7S0FFWCxXQUFDO0lBR0E7S0FGSm5jO0tBRUksTUFBQSwrQkFGSkE7SUFBaUIsV0FDcEI7R0FLTDtZQTJCRzBkLG9CQUFxQnRsRyxHQUFJb21GLFFBQVN3ZSxNQUFlbDlCO0lBQTdCO0tBQXNDL3BFO0tBMkJ0RCxVQUFDLGdDQTNCNkJpbkc7S0FzQmY7Ozs7O2FBR1gsb0NBekJ5Q2w5QjtLQXNCM0MsVUFBQTtLQUhKLFVBQ0E7S0FMUSxNQUFBLHVCQWZXMW5FO0tBZWpCLFVBQUM7S0FIYSxNQUFBLG9DQVorQjBuRTtLQVU5Qiw2QkFFWDtLQUZGLFVBQUE7S0FITixVQUNFO0tBREYsTUFBQTtLQUZrQixNQUFBLGlDQUxPMGUsV0FBaUN6b0Y7ZUFLdEQ7S0FGUSxVQUNSO0tBREYsVUFBQTtJQUlGLE9BQUE7R0F1QkQ7WUFFQzRuRyxxQkFBdUJuZixRQUFTMmQ7SUFBVyxZQUFYQTs7S0FLekIsSUFIRm5jLHlCQUdFLE1BQUEsMkJBTHlCbWM7UUFJNUIsMkJBRkNuYztNQU9IO2FBVDhCbWM7O2tCQVVoQi9qRztVQUFELElBQWE0a0csaUJBQVJsOUI7VUFNWCxPQWhEVDQ5QjttQkEwQ2dCdGxHO21CQVZPb21GO21CQVVLd2U7bUJBQVJsOUI7bUJBTVgsMkJBZEprZ0IsaUJBUVc1bkY7U0FPUjtPQVJOLE1BQUEsV0FDRztNQURILE9BQUE7OztJQVdHLE9BQUE7R0FFUjtZQUVHd2xHLE9BQ0VwZixRQUFTMmQsUUFBWXFCLGVBQWdDakI7SUFBb0IsSUFBQSxlQUFoRUo7aUJBK0JlbmM7S0FDVCxPQUFBLGlDQWhDZnhCLFFBK0J3QndCO0lBQzZDO0lBRjNEO0tBQUEsTUFBQSxXQUNHO0tBRkwsTUFBQTtLQUhJLE1BdkhkeWQsa0JBNkZXdEI7S0FrQkM7O1FBM2FkSjtVQTZha0I7O1lBQ0UseUJBckJQSSxRQUFZcUI7WUFBZ0NqQjs7S0FrQjNDLE1BQUE7S0FETSxVQUFBO0tBRlYsVUFDRTtLQURGLE1BQUE7S0FETSxVQUFBO0tBRmMsVUFDdEI7S0FGSixVQUNFO2VBckNKb0IscUJBeUJFbmYsUUFBUzJkO0tBR1g7V0FDRTtJQU9BLE9BQUE7R0E0Qkw7R0F2SXdCO0lBQUE7Ozs7Ozs7T0FHckJzQjtPQW9DQUM7T0FnQ0FDO09Bd0JBQzs7O1lBOENBQyxtQkFBc0IxQjtJQUFjLE9BdGN0Q0osV0F1Y1csMEJBRGFJO0dBRXpCO0dBTG9CO0lBQUEsMkNBR2pCMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F0Y0Y5QjtPQVdBRTs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDd1VNNkI7SUFoQkFDO0lBZkE3dUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQS9TTjh1RCxhQUFnQi9vRSxVQUFzQm45QjtpQkFFdENtbUc7S0FDRSxTQURGQTtVQUVtQmo2RCxJQUZuQmk2RDthQUZnQmhwRSxrQkFJeUMsV0FBdEMrTzs7U0FDUnc3QixPQUhYeStCO0tBR29CLFdBQVR6K0I7SUFDUjtJQU5tRSxPQUFBLGlDQUFoQzFuRTtHQVN6QztZQUVHZ2lFO0lBRUd1NUI7SUFDQXhCO0lBQ0FyNEM7SUFDQTdVO0lBQ0ExUDtJQUNBclk7SUFDQStwQjtJQUNBbW5EO0lBSUg7S0FGWW9RLE1BSlR0aEY7V0FEQXFZLHFCQUVBMFI7S0FJRHczRDtPQUNGLG1DQVBHbHBFLGFBQ0FyWTtLQWlCSHdoRixjQVpFRDtLQVdGRSxhQVhFRjtLQVVGRyxVQVZFSDtLQVNGSSxhQVRFSjtLQVFGSyxZQVJFTDtLQU9GTSxrQkFQRU47S0FpQkFPO09BQWlCLG9DQWxCUFIsS0FDVkM7S0FtQkFwQyxhQUFhLG9DQUZiMkM7YUFJQUMsWUFFRzNvRSxRQUNBdzZELFNBQ0FvTyxZQUNBQyxJQUNBM29HO0tBQ0QsR0FEQ0EsU0FBWUcsTUFBWkgsUUFBQSs4RixjQUFZNThGLGNBQVo0OEY7S0FFRTtNQUFBLE1BSEY0TDtNQXVDSyxNQUFBLG9DQTFDTDdvRSxpQkFHQTZvRTtNQWdDSCxjQW5DRzdvRSxZQUdBNm9FLE9BQUFBOzs7TUFnQ0g7T0FBQTtPQUZDLFVBN0JFNUw7T0E2QkY7T0FDUSxVQUFBLDZCQWhDTjJMLFlBREFwTztTQS9CRjdyRDttQkFBQUEsY0F5Q2NyVyxjQUFMdVc7T0FBYyxHQUFBLG1CQUFkQSw4QkFBS3ZXOzs7OztNQUliO1dBQ3NDODZCOzs7O1FBV2xDLE9BQUE7aUJBM0RMeW9DO3NCQTJEZ0M7O1lBVEY3OUI7UUFFekIsT0FBQTtpQkFwREw2OUI7c0JBcURPLDhDQUh1Qjc5Qjs7V0FGUzVLOztNQUNMLE9BQUEsV0FqRGxDeW9DLG9CQWdEdUN6b0M7S0FZbkM7a0JBcEJHOTZCLEdBQUssT0FBTyxXQXpDbkIra0Usc0JBeUNPL2tFLElBQTBCO0tBMkJsQyxPQUFBOzs7O2NBbkVDdWpFO2NBQ0FyNEM7Y0FFQXZrQjtjQUdBNjREOzs7Ozs7O0lBNkVKO0lBRWdCO0tBQWJnUixhQUFhLDZCQTdFSFo7S0FpRjRCLFVBakY1QkE7S0FpRkEsVUFBQTtLQUFWLE1BQUE7S0FGQWEsY0FDRjs7O1dBckZHOXBFO0tBeUZEK3BFO1dBOURBTCxZQXRCVVQsK0JBV1pJO0tBb0ZFVzs7O1NBR0UsT0E1RUZOO2tCQXRCVVQsdUNBWVpHO1FBMkZLO0tBU0thO09BQ0YsaUNBakhJaEIsUUFZWkc7S0F5R1VjO09BQ0YsaUNBdEhJakIsUUFXWkk7SUE0R00sR0FQSVk7UUFLQUM7TUFVQTtPQUhLQyw4QkFQTEQ7T0FNS0UsbUNBWExIO09BY0VJO1NBQ0Y7O1dBSktEO1dBQ0FEO01BT1AsR0FMSUU7O1FBT0dDLGlCQVBIRDs7VUFRRixxQ0E5SVB6TixlQTZJWTBOOztPQURZO1FBQUE7Y0FBQztjQUFWO1VBckJWQzs7O01BVXNCO09BQUE7YUFBQztPQVZ2QkEsZUFVYTs7S0FEUztNQUFBO1lBQUM7TUFUdkJBLGVBU2E7SUFtQk87S0FBQTs7UUFDcEI7WUE3QkFBO0tBMkJrQixVQUNwQjtLQS9CSkMsNEJBOEJFO0tBWUZDOztRQWhJQWY7VUF0QlVULHFDQVFaTztLQXVLRSxNQUFBLDRCQS9LVVAsU0FhWkU7aUJBdUpHaG1HO0tBQUQsSUFBeUJ5bUcsZUFBVmM7S0FBa0I7O2NBS1csVUFBQSx1QkFMM0N2bkc7Y0FJTyxPQWxKUnVtRzt1QkE4SWVnQjt1QkFLRTs7dUJBTFFkOzsyQkFBeEJ6bUc7YUFRTTtJQUVOO0lBWEg7S0FERXduRyxtQkFDRjtLQWVFQzs7UUFFQTs7VUE1TENoTztVQTBCRDZNO1VBQUFBO0tBeUtBb0I7V0FyS0FuQixZQXRCVVQsb0NBU1pNO0tBOExFdUI7V0FDSyxvQ0F0TExyQjtLQXdMQXNCOztRQXBMQXJCO1VBdEJVVCwrQ0FVWks7S0E2TUUwQjs7O1NBR0UsT0FwTUZ0QixZQXRCVVQsaUNBWVpHO1FBbU5LO0tBR0g2Qjs7UUFFQTs7VUE1T0NyTztVQTBCRDZNO1VBQUFBO1VBQUFBO0tBbU9FO09BQUE7O1NBbkZGa0I7O1VBZ0JBQzs7V0FTQUM7O1lBWUFDOzthQUdBQztpQkFhQUMsdUJBV0FDO0tBV0Y7T0FuUUFsQztTQWlCRy9vRTtTQW9QRDs7O1lBM0pBK3BFOzthQVdBQztpQkFhQVEsMkJBMENBQzs7SUF1RkYsT0FBQTs7aUJBek5FM0QsZ0JBeURBK0MsZ0JBRUFDOzs7WUFrTEZ0TCxhQUFlalY7O0tBS1g7TUFERWtWO1FBQ0Y7S0FHRixPQUpJQSxZQUlXLFdBUkZsVjtJQWFkO0lBVkQsT0FBQTtHQVlEO1lBRUMyaEIsa0JBQXFCdmpGOztLQUdoQjtNQUVDRCxjQUxlQztNQU1mQyxXQUFXLHVCQU5JRDtNQVFmdXlCLFdBQVcsbUNBSFh4eUIsYUFMZUM7S0FTbkIsZ0NBSElDLFVBQ0FxeUIsY0FDQUM7S0FDSjtJQUVEO0lBUkQsT0FBQTtHQVVEO1lBRUNpeEQsK0JBQW1DeGpGOztLQUc5QjtNQUVDRCxjQUw2QkM7TUFNN0JDLFdBQVcsdUJBTmtCRDtNQVE3QnV5QixXQUNGLG1DQUpFeHlCLGFBTDZCQztLQVVqQyxnQ0FKSUMsVUFDQWtoRixnQkFDQTV1RDtLQUVKO0lBRUQ7SUFURCxPQUFBO0dBV0Q7WUFFQ2t4RCwwQkFBNkJ6akY7O0tBR3hCO01BRUNELGNBTHVCQztNQU12QkMsV0FBVyx1QkFOWUQ7TUFRdkJ1eUIsV0FBVyxtQ0FIWHh5QixhQUx1QkM7S0FTM0IsZ0NBSElDLFVBQ0FpaEYsZ0JBQ0EzdUQ7S0FDSjtJQUVEO0lBUkQsT0FBQTtHQVVEO1lBRUNteEQsc0JBQTBCajdEO2lCQUNoQjBLO0tBQ0MsSUFBUHpaLE9BQU8sZ0NBRmUrTyxpQkFDaEIwSztLQUVWLE9BQUE7aUVBREl6WjtJQUVMO0lBSFcsT0FBQTtHQUdWO1lBRUFpcUUsa0JBQXNCdHJFOztLQU50QnFyRSxzQkFNc0JyckU7S0FJcEI7SUFFRDtJQUhELE9BQUE7R0FLRDtZQUVDdXJFLGtCQUFzQmhpQjtpQkFJdEJqdkM7S0FBUSxLQUFSQSxNQUVZO1NBQ0hrbkIsU0FIVGxuQjtLQUd5QixPQUFBLFdBUEhpdkMsWUFPYi9uQjtJQUVSO0lBTEQsT0FBQTs7Ozs7O0dBT0Q7Ozs7T0FqWEN1bkM7T0FXQWxrQztPQTRRQTI1QjtPQWlCQTBNO09BZUFDO09BZ0JBQztPQWVBQztPQU1BQztPQVVBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzVXQUMsYUFBaUJDLE1BQWF2ZjtJQUE0QjtLQWFsRDs7OztTQUdBOzs7S0FMTixNQUFBLCtCQVhldWY7S0FVZixNQUFBLCtCQVY0QnZmO0tBUTlCLE1BQUE7aUJBSitDM2xFLEdBQUltbEY7S0FDakQ7Z0JBQXFDLHlDQURZQTtnQkFBSm5sRixPQUNwQjtNQUFmLGNBQUU7S0FBWixXQUFDO0lBQXlEO0lBTEY7OztZQUkxRDs7eUJBSmlCa2xGOzhCQUFhdmY7Ozs7R0FvQmpDO1lBRUd5ZixZQUFnQkYsTUFBYXZmO0lBQTRCO0tBYWpEOzs7O1NBSUo7OztLQU5GLE1BQUEsK0JBWGN1ZjtLQVVkLE1BQUEsK0JBVjJCdmY7S0FRN0IsTUFBQTtpQkFKK0MzbEUsR0FBSW1sRjtLQUNqRDtnQkFBb0MseUNBRGFBO2dCQUFKbmxGLE9BQ3JCO01BQWYsY0FBRTtLQUFYLFdBQUM7SUFBd0Q7SUFMRjs7O1lBSXpEOzsyQkFKZ0JrbEY7Z0NBQWF2Zjs7OztHQXVCaEM7WUFFRzBmLFlBQWdCSCxNQUFhdmY7SUFBNEI7S0FhakQ7Ozs7U0FJSjs7O0tBTkYsTUFBQSwrQkFYY3VmO0tBVWQsTUFBQSwrQkFWMkJ2ZjtLQVE3QixNQUFBO2lCQUorQzNsRSxHQUFJbWxGO0tBQ2pEO2dCQUFvQyx5Q0FEYUE7Z0JBQUpubEYsT0FDckI7TUFBZixjQUFFO0tBQVgsV0FBQztJQUF3RDtJQUxGOzs7WUFJekQ7OzJCQUpnQmtsRjtnQ0FBYXZmOzs7O0dBdUJoQztZQUVHMmYsYUFBaUJKLE1BQWF2ZjtJQUE0QjtLQWFsRDs7OztTQUdBOzs7S0FMTixNQUFBLCtCQVhldWY7S0FVZixNQUFBLCtCQVY0QnZmO0tBUTlCLE1BQUE7aUJBSitDM2xFLEdBQUltbEY7S0FDakQ7Z0JBQXFDLHlDQURZQTtnQkFBSm5sRixPQUNwQjtNQUFmLGNBQUU7S0FBWixXQUFDO0lBQXlEO0lBTEY7OztZQUkxRDs7MkJBSmlCa2xGO2dDQUFhdmY7Ozs7R0FvQmpDO1lBRUc0ZixRQUFZQztJQUEyQjtLQVFyQyxNQUFBLCtCQVJVQTtLQU9WLE1BQUEsK0JBUFVBO0tBQTJCO0tBS3ZDLE1BQUE7aUJBRnFDQztLQUFRLFdBQUMseUNBQVRBO0lBQThCO0lBSDVCOzs7WUFHL0I7NERBSElEOzs7R0FXZjs7O1VBekdHUCxjQXNCQUcsYUF5QkFDLGFBeUJBQyxjQXNCQUM7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMzRkE5TSxPQUFXcjVCLFFBQWV1bUI7SUFBNEI7Ozs7O1NBeUNsRDs7O0tBWEk7Ozs7U0FHQTs7O0tBTk4sTUFBQSwrQkEzQlN2bUI7S0EwQlQsTUFBQSwrQkExQndCdW1CO0tBeUJ4QixNQUFBLCtCQXpCd0JBO0tBd0J4QixNQUFBLCtCQXhCU3ZtQjtLQXNCWCxNQUFBO2lCQUw0Q3AvQyxHQUFHK3JCO0tBQzdDO2dCQUFrQyx5Q0FEV0E7Z0JBQUgvckIsT0FDcEI7TUFBZCxjQUFFO0tBQVYsV0FBQztJQUE0QztJQWxCTzs7O1lBaUJ0RDs7eUJBakJXby9DO3lCQUFldW1COzs7O0dBaUQ3Qjs4QkFqREc4Uzs7O0U7Ozs7Ozs7O0c7Ozs7O0dDSFE7O0lBUU5oNUU7Ozs7SUFSRnBoQixPQUFRO0lBQ1I4NUYsVUFBVztZQUNYdU4sd0JBQ0VqbUMsU0FBZ0I0NEI7SUFBdUMsa0JBRTFELGdDQUpDRixVQUVrQkU7SUFBdUMsZUFDMUQsZ0NBSkNoNkYsT0FHRW9oRTtHQUdMO0dBTWtCO0lBQUEsY0FBTSxnQ0FackJwaEUsV0FDQTg1RjtjQURBOTVGLFVBVzZDO0lBQWxCLGNBQUU7SUFKN0Jzbkc7OztXQUlpQiwyQ0FWakJ4Tjs7T0FPRTE0RTs7SUFVRm1tRixxQkFYQUQ7O1VBUEF0bkcsTUFDQTg1RixTQUNBdU4seUJBS0FDLFlBV0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHQ2xCZTs7SUFnR2JubUY7O0lBZ0JBb2dEOztJQWdCQUM7O0lBZUFDOzs7O0lBZ0JBK2xCO0lBZUFXOztJQWdCQUQ7O0lBZ0JBRDs7SUFnQkFzZjs7OztJQWVBQzs7OztJQWVBQzs7O0lBMEJBQzs7SUFxQkFDOztJQWVBQzs7OztJQTJCQUM7O0lBK0JBQzs7SUFvQ0FDOztJQXNCQUM7Ozs7O0lBOWFGQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUlKQztJQUNDQyxXQUFpQkMsWUFBbUJ0b0MsUUFBZXVtQjtJQUM1QixlQUR2QjhoQixXQUFvQ3JvQyxpQkFBbkJzb0MsWUFBa0MvaEI7R0FHdkQ7R0FDVTtJQUFQeG9GLE1BQU87SUFDUEQsTUFBTztJQUUyQyxNQUFBLGdDQUZsREE7SUFFa0MsTUFBQSxnQ0FIbENDO0dBR0YsU0FERXdxRztJLE9BUEFIOztHQVdpQjtjQUE2Qix5Q0FMOUN0cUc7Y0FEQUMsU0FNa0M7SUFBakIsY0FBRTtJQUFqQlQsV0FBUTtJQUkyQixVQUFDO0lBTnRDa3JHOzs7T0FFRWxyRztlQUltQixnQ0FWckJTO09BS0VzaUI7V0FoR0Y4bUY7SUEyR0Fwb0csZ0JBQXdCO0lBQ3hCRCxRQUFPO0lBRTJDLE1BQUEsZ0NBRmxEQTtJQUVrQyxNQUFBLGdDQUhsQ0M7R0FHRixTQURFMHBHO0ksT0F2QkFMOztHQTJCaUI7Y0FBNkIseUNBTDlDdHBHO2NBREFDLFdBTWtDO0lBQWpCLGNBQUU7SUFBakJveEMsYUFBUTtJQUtjLGtCQUFZO0lBUHBDdTREOzs7T0FFRXY0RDtlQUtNLGdDQVhScHhDO09BS0UwaEU7V0FoSEYwbUM7SUEySEF3QixRQUFPO0lBQ1BDLFFBQU87SUFFMkMsTUFBQSxnQ0FGbERBO0lBRWtDLE1BQUEsZ0NBSGxDRDtHQUdGLFNBREVFO0ksT0F2Q0FUOztHQTJDaUI7Y0FBNkIseUNBTDlDUTtjQURBRCxXQU1rQztJQUFqQixjQUFFO0lBQWpCdDRELGFBQVE7SUFJMkIsVUFBQztJQU50Q3k0RDs7O09BRUV6NEQ7ZUFJbUIsZ0NBVnJCczREO09BS0Vqb0M7V0FoSUZ5bUM7SUEwSUE0QixRQUFPO1lBQ1BDLCtCQUFtQ3ppQjtJQUFzQyxlQUN6RSxnQ0FGQXdpQixRQUNtQ3hpQjtHQUV0QztHQUdZO0lBQVAwaUIsUUFBTztjQUNxQyx5Q0FQOUNGO2NBTUVFLFdBQ2dDO0lBQWpCLGNBQUU7SUFBakJ2NEQsYUFBUTtJQUkyQixVQUFDO0lBUHRDdzREOzs7T0FHRXg0RDtlQUltQixnQ0FMbkJ1NEQ7T0FEQXRvQztXQTFJRnltQztJQXFKQStCLFFBQU87SUFDUEMsUUFBTztJQUUyQyxNQUFBLGdDQUZsREE7SUFFa0MsTUFBQSxnQ0FIbENEO0dBR0YsU0FERUU7SSxPQXRFQWpCOztHQTBFaUI7Y0FBNkIseUNBTDlDZ0I7Y0FEQUQsV0FNa0M7SUFBakIsY0FBRTtJQUFqQnY0RCxhQUFRO0lBSTJCLFVBQUM7SUFOdEMwNEQ7OztPQUVFMTREO2VBSW1CLGdDQVZyQnU0RDtPQUtFemlCO1dBckpGMmdCO0lBK0pBa0MsUUFBTztJQUNQQyxRQUFPO0lBRTJDLE1BQUEsZ0NBRmxEQTtJQUVrQyxNQUFBLGdDQUhsQ0Q7R0FHRixTQURFRTtJLE9BckZBckI7O0dBMEZpQjtjQUE2Qix5Q0FOOUNvQjtjQURBRCxXQU9rQztJQUFqQixjQUFFO0lBQWpCdjRELGFBQVE7SUFJMkIsVUFBQztJQVB0QzA0RDs7O09BR0UxNEQ7ZUFJbUIsZ0NBWHJCdTREO09BS0VsaUI7V0EvSkZpZ0I7SUEwS0FxQyxRQUFPO0lBQ1BDLFFBQU87SUFFMkMsTUFBQSxnQ0FGbERBO0lBRWtDLE1BQUEsZ0NBSGxDRDtHQUdGLFNBREVFO0ksT0FyR0F6Qjs7R0F5R2lCO2NBQTZCLHlDQUw5Q3dCO2NBREFELFdBTWtDO0lBQWpCLGNBQUU7SUFBakJHLGFBQVE7SUFJMkIsVUFBQztJQU50Q0M7OztPQUVFRDtlQUltQixnQ0FWckJIO09BS0V2aUI7V0ExS0ZtZ0I7SUFxTEF5QyxRQUFPO0lBQ1BDLFFBQU87SUFFMkMsTUFBQSxnQ0FGbERBO0lBRWtDLE1BQUEsZ0NBSGxDRDtHQUdGLFNBREVFO0ksT0FySEE5Qjs7R0EwSGlCO2NBQTZCLHlDQU45QzZCO2NBREFELFdBT2tDO0lBQWpCLGNBQUU7SUFBakJHLGFBQVE7SUFJMkIsVUFBQztJQVB0Q0M7OztPQUdFRDtlQUltQixnQ0FYckJIO09BS0U3aUI7V0FyTEZxZ0I7SUFnTUE2QyxRQUFPO0lBQ1BDLFFBQU87SUFFMkMsT0FBQSxnQ0FGbERBO0lBRWtDLE9BQUEsZ0NBSGxDRDtHQUdGLFNBREVFO0ksT0FySUFuQzs7R0F5SWlCO2VBQTZCLHlDQUw5Q2tDO2VBREFELFdBTWtDO0lBQWpCLGVBQUU7SUFBakJHLGFBQVE7SUFJMkIsV0FBQztJQU50Q0M7OztPQUVFRDtlQUltQixnQ0FWckJIO09BS0U1RDtXQWhNRmdCO0lBME1BaUQsUUFBTztJQUNQQyxRQUFPO0lBRTJDLE9BQUEsZ0NBRmxEQTtJQUVrQyxPQUFBLGdDQUhsQ0Q7R0FHRixTQURFRTtJLE9BcEpBeEM7O0dBd0ppQjtlQUE2Qix5Q0FMOUN1QztlQURBRCxXQU1rQztJQUFqQixlQUFFO0lBQWpCRyxhQUFRO0lBSTJCLFdBQUM7SUFOdENDOzs7T0FFRUQ7ZUFJbUIsZ0NBVnJCSDtPQUtFaEU7V0ExTUZnQjtlQW9Oc0Q7ZUFBVDtlQUFiO0lBQWIsZUFBRTtJQUFyQnFELFFBQU87SUFDUEMsUUFBTztJQUUyQyxPQUFBLGdDQUZsREE7SUFFa0MsT0FBQSxnQ0FIbENEO0dBR0YsU0FERUU7SSxPQW5LQTdDOztHQXVLaUI7ZUFBNkIseUNBTDlDNEM7ZUFEQUQsV0FNa0M7SUFBakIsZUFBRTtJQUFqQkcsYUFBUTtlQU9pQztlQUFiO0lBQWIsZUFBRTtJQUFmLFdBQUM7SUFUTEM7OztPQUVFRDtlQU1FLGdDQVpKSDtPQUtFcEU7V0F6TkZlLG9CQUtBQztJQWtPQXlELFNBQVU7SUFDVkMsU0FBVTtJQUNWQyxTQUFPO1lBQ1BDLCtCQUNFQyxPQUFjQyxPQUFjbGxCO0lBQXNDO29CQUluRSxnQ0FORCtrQixTQUU4Qi9rQjtvQkFHN0IsZ0NBTkQ4a0IsU0FHZ0JJO0lBQW9ELGVBRW5FLGdDQU5ETCxTQUlFSTtHQU1MO0dBR1k7SUFBUEUsT0FBTztlQUdULHlDQWRBSjs7O09BRkFGO1dBYUVNLFVBWkZMLFlBYzBDO0lBQW5DLGVBQUU7SUFEUE0sY0FDRjtlQVFrRDtlQUFaO0lBQWQsV0FBQztJQVp6QkM7OztPQUdFRDtlQVNNLGdDQVZORDtPQURBOUU7V0F6T0ZnQixvQkFLQUM7SUFvUEFnRSxTQUFPO0lBQ1BDLFNBQU87SUFFMkMsT0FBQSxnQ0FGbERBO0lBRWtDLE9BQUEsZ0NBSGxDRDtHQUdGLFNBREVFO0ksT0FsTkEzRDs7R0FzTmlCO2VBQTZCLHlDQUw5QzBEO2VBREFELFlBTWtDO0lBQWpCLGVBQUU7SUFBakJHLGNBQVE7SUFJMkIsV0FBQztJQU50Q0M7OztPQUVFRDtlQUltQixnQ0FWckJIO09BS0VoRjtXQTNTRk0sa0JBdURBVyxxQkFLQUM7SUF5UEFubkMsUUFBUztJQUNUc3JDLFNBQU87SUFFNkMsT0FBQSxnQ0FGcERBO0lBRWtDLE9BQUEsZ0NBSGxDdHJDO0dBR0YsU0FERXVyQztJLE9Bak9BL0Q7O0dBc09PO2VBQ1AseUNBUEE4RDtlQU0wRDtlQUFaO2VBUDlDdHJDLFdBT3FDO2VBQW5CO0lBQVgsZUFBRTtJQURQd3JDLGNBQ0Y7ZUFRbUQ7ZUFBYjtJQUFaLFdBQUM7SUFYM0JDOzs7T0FFRUQ7ZUFTTSxnQ0FmUnhyQztPQUtFa21DO1dBelBGa0IsbUJBS0FDO0lBbVFBL2xDLE9BQVE7SUFDUkMsT0FBUTtJQUNSbXFDLFNBQU87WUFDUEMsK0JBQ0VDLFNBQWdCQyxTQUFnQmxtQjtJQUFzQztvQkFJdkUsZ0NBTkQrbEIsU0FFa0MvbEI7b0JBR2pDLGdDQU5EcGtCLE9BR2tCc3FDO0lBQXNELGVBRXZFLGdDQU5EdnFDLE9BSUVzcUM7R0FNTDtHQUdhO0lBQVJwckMsVUFBUTtlQUdWLHlDQWRBa3JDO2VBREFucUMsVUFjZ0Q7O1VBZmhERCxVQWFFZCxhQUU4QjtJQUF6QixlQUFFO0lBRFBzckMsY0FDRjtlQVFrRDtlQUFiO0lBQVosV0FBQztJQVoxQkM7OztPQUdFRDtlQVNNLGdDQVZOdHJDO09BREEybEM7V0FwUkZpQjtJQW9TQTFsQyxTQUFRO0lBQ1JDLFNBQVE7SUFDUkMsT0FBUTtJQUNSb3FDLFNBQU87WUFDUEMsK0JBQ0VMLFNBQWdCQyxTQUFnQkssU0FBZ0J2bUI7SUFDMUI7b0JBS3ZCLGdDQVJEcW1CLFNBRWtEcm1CO29CQUtqRCxnQ0FSRC9qQixPQUdrQ3NxQztvQkFJakMsZ0NBUkR2cUMsU0FJa0JrcUM7SUFDTSxlQUV2QixnQ0FSRG5xQyxTQUtFa3FDO0dBUUw7R0FHYTtJQUFSN3FDLFVBQVE7ZUFlVix5Q0E1QkFpckM7ZUFEQXBxQyxVQTBCSTs7O09BM0JKRDtXQWVFWixhQVVFO2VBSEE7ZUF2QkpXLFlBc0JJO0lBSkcsZUFFSDtJQUhGeXFDLGNBQ0Y7ZUFzQnFEO2VBQWI7ZUFBWDtlQUFiO0lBQVosV0FBQztJQTFCTEM7OztPQUdFRDtlQXNCRSxnQ0F2QkZwckM7T0FEQXFsQztXQTlTRmlCO0lBNlVBZ0YsU0FBTztJQUNQQyxTQUFPO0lBRTJDLE9BQUEsZ0NBRmxEQTtJQUVrQyxPQUFBLGdDQUhsQ0Q7R0FHRixTQURFRTtJLE9BL1RBL0U7O0dBbVVpQjtlQUE2Qix5Q0FMOUM4RTtlQURBRCxZQU1rQztJQUFqQixlQUFFO0lBQWpCRyxjQUFRO0lBSTJCLFdBQUM7SUFOdENDOzs7T0FFRUQ7ZUFJbUIsZ0NBVnJCSDtPQUtFaEc7V0E3VUZpQjtJQXVWQXBOLFVBQVc7SUFDWEMsVUFBVztJQUNYdVMsU0FBTztZQUNQQyw2QkFDRXRTLFFBQWUzQixRQUFlL1M7SUFBc0M7b0JBSXJFLGdDQU5EK21CLFNBRWdDL21CO29CQUcvQixnQ0FORHdVLFVBR2lCekI7SUFBcUQsZUFFckUsZ0NBTkR3QixVQUlFRztHQU1MO0dBR1U7SUFBTEUsS0FBSyx5Q0FaUEo7ZUFhc0QseUNBWnREdVM7ZUFGQXhTLGFBYUVLLFFBQ3dDO0lBQXpCLGVBQUU7SUFBakJxUyxjQUFRO0lBS3FDLGVBQUU7ZUFBWjtJQUFmLFdBQUM7SUFSdkJDOzs7T0FHRUQ7ZUFLTSxnQ0FOTnJTO09BREErTDtXQTlWRmlCO0lBMldBdUYsMEJBNVZBbEY7SUE2VkFtRjtvQkE3VUFqRiw2QkFoQkFGO0lBaVdBb0Y7b0JBalVBOUUsNkJBaENBTjtJQXFXQXFGLCtCQXRUQTNFLHVCQS9DQVY7SUF5V0FzRiw4QkExU0F4RSx5QkEvREFkO0lBNldBdUY7b0JBL1JBckUsMkJBOUVBbEI7SUFpWEF3RjtvQkFuUkFqRSwwQkE5RkF2QjtJQXNYQXlGLDhCQXhRQTdELHlCQTlHQTVCO0lBMlhBMEYsK0JBN1BBekQsdUJBOUhBakM7SUFnWUEyRjtvQkFuUEFyRCwwQkE3SUF0QztJQXFZQTRGO29CQXpPQWpELDBCQTVKQTNDO0lBMFlBNkYsK0JBcE5BekMsdUJBdExBcEQ7SUErWUE4Riw4QkFwTUFyQyxzQkEzTUF6RDtJQW9aQStGLGdDQTFMQWxDLHdCQTFOQTdEO0lBeVpBZ0c7OztXQXBLQTdCLHlCQTNCQU4sd0JBMU5BN0Q7SUE4WkFpRzs7O1dBMUlBekIseUJBMURBWCx3QkExTkE3RDtJQW1hQWtHLDhCQTNHQXJCLHNCQXhUQTdFO0lBd2FBbUcsNkJBMUZBbEIscUJBOVVBakY7OztPQS9GQXJCO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BTUFDO09BT0FHO09BRUFDO09BY0FDO09BRUFDO09BY0FHO09BRUFDO09BWUFFO09BR0FFO09BY0FHO09BRUFDO09BYUFHO09BRUFDO09BY0FHO09BRUFFO09BY0FHO09BRUFFO09BY0FHO09BRUFFO09BYUFHO09BRUFFO09BYUFHO09BRUFFO09BZUFDO09BQ0FDO09BRUFFO09BUUFLO09BbUJBRztPQUVBRTtPQVdBcnJDO09BRUF1ckM7T0FFQUU7T0FtQkFFO09BUUFJO09BaUJBcnFDO09BQ0FDO09BQ0FDO09BRUFxcUM7T0FVQUc7T0FnQ0FDO09BRUFFO09BRUFFO09BV0F2UztPQUNBQztPQUNBdVM7T0FDQUM7T0FRQUU7T0FjQUM7T0FDQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3hmRXR1Rjs7Ozs7Ozs7OztZQWhCRnV1RixvQkFBdUIvL0IsTUFBTzFyRSxLQUFLaEk7SUFFbkMsSUFERWtsQixjQUNGLGtDQUY4QmxkO0lBTWhDO1lBTnFDaEk7d0JBUVA7O1lBUDFCa2xCOztHQVlMO1lBRUd3dUYsb0JBQXVCaGdDLE1BQU0xekU7SUFBYSxXQUFiQSxRQUlaLFdBSk0wekUsMkJBQ3JCeHVEO0dBUUw7bUNBeEJHdXVGLHFCQWVBQzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHQ2RGOzs7O0lBREVDO01BQ0Y7O0lBQ0VDLDZCQUZBRDtJQUlBRTtNQUNGO0lBRUVDLDZCQUhBRDs7VUFKQUYsZ0JBRUFDLGlCQUVBQyxnQkFHQUM7OztFOzs7Ozs7OztHOzs7OztHQ0xGOztJQURJNXVGOztJQVdBb2dEOzs7O0lBWkZ5dUM7OzttQkFJNEI7O09BSDFCN3VGOztJQVVGOHVGOzs7V0FJaUI7O09BSGYxdUM7O0lBVUYwWCx5QkF0QkErMkI7SUF3QkFFLHlCQWJBRDs7VUFYQUQsZ0JBV0FDLGdCQVdBaDNCLFlBRUFpM0I7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHQ3ZCRjs7OztJQURFQztNQUNGOztJQUNFQywrQkFGQUQ7SUFJQUU7TUFDRjtJQUVFQywrQkFIQUQ7OztPQUpBRjtPQUVBQztPQUVBQztPQUdBQzs7O0U7Ozs7Ozs7O0c7Ozs7O0dDSkY7O0lBREludkY7SUFZQW9nRDs7O0lBYkZndkM7OzttQkFJNEI7O09BSDFCcHZGOztJQVdGcXZGOzs7V0FJaUI7O09BSGZqdkM7O0lBVUYwWCx5QkF2QkFzM0I7SUF5QkFMLHlCQWJBTTs7VUFaQUQsZ0JBWUFDLGdCQVdBdjNCLFlBRUFpM0I7OztFOzs7Ozs7OztHOzs7OztHQ3pCbUI7O0lBb0JqQi91Rjs7OztJQXBCRnN2Rjs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkMsV0FBWTtJQUNaQyxXQUFZO0lBQ1pDLFdBQVk7WUFDWkMsb0JBQ0VDLFNBQWdCQyxTQUFnQkM7SUFBc0M7bUJBR3pFLGdDQUxDSixXQUVrQ0k7bUJBRW5DLGdDQUxDTCxXQUdrQkk7SUFBc0QsZUFDekUsZ0NBTENMLFdBSUVJO0dBSUw7R0FNVztjQUlOLHlDQWhCRkY7Y0FEQUQsY0FleUI7a0JBQXBCO2NBaEJMRCxjQWV5QjtJQURqQixjQUNIO0lBTkxPOzs7V0FLRTs7T0FKQS92RjtXQXBCRnN2RixzQkFLQUM7SUFnQ0FTLGtCQWxCQUQ7OztPQW5CQVQ7T0FLQUM7T0FLQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FNQUk7T0FrQkFDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDckNjOztJQXVHWmh3Rjs7SUFtQkFvZ0Q7O0lBb0JBQzs7SUFzQkFDOzs7O0lBeUJBK2xCO0lBd0JBVzs7SUF3QkFEOztJQXdCQUQ7O0lBd0JBc2Y7Ozs7SUFtQkFDOzs7O0lBeUJBQzs7O0lBd0JBQzs7SUE2QkFDOztJQW9CQUM7Ozs7SUE0QkFDOztJQWdDQUM7O0lBMENBQzs7SUF3QkFDOzs7OztJQWhoQkZvSjs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7OztJQUdKQzs7O09BRUk7Ozs7SUFHSkM7OztPQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUdBQztJQUVFakosV0FDQWtKLFdBQ0FqSixZQUNDdG9DLFFBQ0FNLFFBQ0FpbUI7SUFFcUI7Z0JBUHRCOGhCLFdBR0Nyb0M7b0JBRkR1eEMsV0FHQ2p4QyxpQkFGRGdvQyxZQUdDL2hCO0dBSU47WUFDR2lyQiw2QkFDQ25KLFdBQWlCa0osV0FBa0J2eEMsUUFBZU0sUUFDM0IsZUFEdkIrbkMsV0FBbUNyb0MsaUJBQWxCdXhDLFdBQWlDanhDO0dBR3REO0dBQ1U7SUFBUHZpRSxNQUFPO0lBQ1AwekcsVUFBVztJQUVpQyxNQUFBLGdDQUY1Q0E7SUFFNEIsTUFBQSxnQ0FINUIxekc7R0FHRixTQURFMnpHO0ksT0FQQUY7O0dBWU87Y0FFUDtjQURBO2NBUEFDLGFBTXNEO2tCQUFuQjtjQVBuQzF6RyxTQU93QjtJQUFqQixjQUFFO0lBRFBULFdBQ0Y7SUFPcUMsVUFBQztJQVZ0Q3EwRzs7O09BRUVyMEc7ZUFRbUIsZ0NBZHJCUztPQUtFc2lCO1dBdkdGaXdGO0lBcUhBdnhHLGdCQUF3QjtJQUN4QjZ5RyxZQUFXO0lBRWlDLE1BQUEsZ0NBRjVDQTtJQUU0QixNQUFBLGdDQUg1Qjd5RztHQUdGLFNBREU4eUc7SSxPQTFCQUw7O0dBK0JPO2NBRVA7Y0FEQTtjQVBBSSxlQU1zRDtrQkFBbkI7Y0FQbkM3eUcsV0FPd0I7SUFBakIsY0FBRTtJQURQb3hDLGFBQ0Y7SUFRd0Isa0JBQVk7SUFYcEMyaEU7OztPQUVFM2hFO2VBU00sZ0NBZlJweEM7T0FLRTBoRTtXQTFIRjZ2QztJQXlJQTNILFFBQU87SUFDUG9KLFlBQVc7SUFFaUMsTUFBQSxnQ0FGNUNBO0lBRTRCLE1BQUEsZ0NBSDVCcEo7R0FHRixTQURFcUo7SSxPQTlDQVI7O0dBbURPO2NBRVA7Y0FEQTtjQVBBTyxlQU1zRDtrQkFBbkI7Y0FQbkNwSixXQU93QjtJQUFqQixjQUFFO0lBRFB0NEQsYUFDRjtJQU9xQyxVQUFDO0lBVnRDNGhFOzs7T0FFRTVoRTtlQVFtQixnQ0FkckJzNEQ7T0FLRWpvQztXQTlJRjR2QztJQTRKQTRCLFlBQVc7SUFDWDdyQixXQUFZO1lBQ1o4ckIsMEJBQ0U3eEMsUUFBZWltQjtJQUFzQztvQkFFeEQsZ0NBSkNGLFdBRWlCRTtJQUFzQyxlQUN4RCxnQ0FKQzJyQixZQUdFNXhDO0dBR0w7R0FHWTtJQUFQMm9DLFFBQU87Y0FHVCx5Q0FYQTVpQjtjQURBNnJCLGVBV3NEO2tCQUFuQjtjQUZqQ2pKLFdBRXNCO0lBQWpCLGNBQUU7SUFEUHY0RCxhQUNGO0lBT3FDLFVBQUM7SUFYdEMwaEU7OztPQUdFMWhFO2VBUW1CLGdDQVRuQnU0RDtPQURBdG9DO1dBL0pGNHZDO0lBOEtBcEgsUUFBTztJQUNQa0osWUFBVztJQUNYQyxhQUFZO0lBS1osTUFBQSxnQ0FMQUE7SUFJQSxNQUFBLGdDQUxBRDtJQUlBLE1BQUEsZ0NBTEFsSjtHQUlGLFNBREVvSjtJLE9BckdBakI7O0dBOEdPO2NBQ1AseUNBWEFnQjtjQURBRCxlQVdzRDtrQkFBbkI7Y0FabkNsSixXQVl3QjtJQUFqQixjQUFFO0lBRFB2NEQsYUFDRjtJQU9xQyxVQUFDO0lBVnRDNGhFOzs7T0FFRTVoRTtlQVFtQixnQ0FuQnJCdTREO09BVUV6aUI7V0FuTEY4cEI7SUFpTUFqSCxRQUFPO0lBQ1BrSixZQUFXO0lBQ1hDLGFBQVk7SUFLWixNQUFBLGdDQUxBQTtJQUlBLE1BQUEsZ0NBTEFEO0lBSUEsTUFBQSxnQ0FMQWxKO0dBSUYsU0FERW9KO0ksT0E3SEFyQjs7R0FzSU87Y0FDUCx5Q0FYQW9CO2NBREFELGVBV3NEO2tCQUFuQjtjQVpuQ2xKLFdBWXdCO0lBQWpCLGVBQUU7SUFEUHY0RCxhQUNGO0lBT3FDLFdBQUM7SUFWdEM0aEU7OztPQUVFNWhFO2VBUW1CLGdDQW5CckJ1NEQ7T0FVRWxpQjtXQXRNRm9wQjtJQW9OQTlHLFFBQU87SUFDUGtKLFlBQVc7SUFDWEMsYUFBWTtJQUtaLE9BQUEsZ0NBTEFBO0lBSUEsT0FBQSxnQ0FMQUQ7SUFJQSxPQUFBLGdDQUxBbEo7R0FJRixTQURFb0o7SSxPQXJKQXpCOztHQThKTztlQUNQLHlDQVhBd0I7ZUFEQUQsZUFXc0Q7bUJBQW5CO2VBWm5DbEosV0FZd0I7SUFBakIsZUFBRTtJQURQRyxhQUNGO0lBT3FDLFdBQUM7SUFWdENrSjs7O09BRUVsSjtlQVFtQixnQ0FuQnJCSDtPQVVFdmlCO1dBek5Gc3BCO0lBdU9BMUcsUUFBTztJQUNQaUosWUFBVztJQUNYQyxhQUFZO0lBS1osT0FBQSxnQ0FMQUE7SUFJQSxPQUFBLGdDQUxBRDtJQUlBLE9BQUEsZ0NBTEFqSjtHQUlGLFNBREVtSjtJLE9BN0tBN0I7O0dBc0xPO2VBQ1AseUNBWEE0QjtlQURBRCxlQVdzRDttQkFBbkI7ZUFabkNqSixXQVl3QjtJQUFqQixlQUFFO0lBRFBHLGFBQ0Y7SUFPcUMsV0FBQztJQVZ0Q2lKOzs7T0FFRWpKO2VBUW1CLGdDQW5CckJIO09BVUU3aUI7V0E1T0Z3cEI7SUEwUEF0RyxRQUFPO0lBQ1BnSixZQUFXO0lBQ1hDLGFBQVk7SUFLWixPQUFBLGdDQUxBQTtJQUlBLE9BQUEsZ0NBTEFEO0lBSUEsT0FBQSxnQ0FMQWhKO0dBSUYsU0FERWtKO0ksT0FyTUFqQzs7R0E4TU87ZUFDUCx5Q0FYQWdDO2VBREFELGVBV3NEO21CQUFuQjtlQVpuQ2hKLFdBWXdCO0lBQWpCLGVBQUU7SUFEUEcsYUFDRjtJQU9xQyxXQUFDO0lBVnRDZ0o7OztPQUVFaEo7ZUFRbUIsZ0NBbkJyQkg7T0FVRTVEO1dBL1BGbUs7ZUE2UXNEO2VBQVQ7ZUFBYjtJQUFiLGVBQUU7SUFBckJsRyxRQUFPO0lBQ1ArSSxZQUFXO0lBRWlDLE9BQUEsZ0NBRjVDQTtJQUU0QixPQUFBLGdDQUg1Qi9JO0dBR0YsU0FERWdKO0ksT0FoTkFsQzs7R0FxTk87ZUFFUDtlQURBO2VBUEFpQyxlQU1zRDttQkFBbkI7ZUFQbkMvSSxXQU93QjtJQUFqQixlQUFFO0lBRFBHLGFBQ0Y7ZUFRaUQ7ZUFBYjtJQUFaLFdBQUM7SUFYekI4STs7O09BRUU5STtlQVNNLGdDQWZSSDtPQUtFaEU7V0E3UUZtSztJQTRSQTlGLFFBQU87SUFDUDZJLFlBQVc7SUFDWEMsYUFBWTtJQUtaLE9BQUEsZ0NBTEFBO0lBSUEsT0FBQSxnQ0FMQUQ7SUFJQSxPQUFBLGdDQUxBN0k7R0FJRixTQURFK0k7SSxPQWpQQXhDOztHQTBQTztlQUNQLHlDQVhBdUM7ZUFEQUQsZUFXc0Q7bUJBQW5CO2VBWm5DN0ksV0FZd0I7SUFBakIsZUFBRTtJQURQRyxhQUNGO0lBT3FDLFdBQUM7SUFWdEM2STs7O09BRUU3STtlQVFtQixnQ0FuQnJCSDtPQVVFcEU7V0FqU0ZtSztJQStTQTFGLFNBQVU7SUFDVkMsU0FBVTtJQUNWMkksYUFBVztZQUNYQywwQkFDRXpJLE9BQWNDLE9BQWNuckM7SUFBcUM7b0JBR3BFLGdDQUxDMHpDLGFBRThCMXpDO29CQUUvQixnQ0FMQytxQyxTQUdnQkk7SUFBbUQsZUFDcEUsZ0NBTENMLFNBSUVJO0dBSUw7R0FHWTtJQUFQRSxPQUFPO2VBT1Q7ZUFEQTtlQWZBc0ksZ0JBYXNCO21CQUFuQjs7O09BZkg1STtXQVdFTSxVQVZGTCxZQWFvQztJQUQ3QixlQUNKO0lBRkRNLGNBQ0Y7ZUFXa0Q7ZUFBWjtJQUFkLFdBQUM7SUFmekJ1STs7O09BR0V2STtlQVlNLGdDQWJORDtPQURBOUU7V0FwVEZtSyxvQkFLQUM7SUFrVUFuRixTQUFPO0lBQ1BzSSxhQUFXO0lBQ1hDLGFBQVk7SUFLWixPQUFBLGdDQUxBQTtJQUlBLE9BQUEsZ0NBTEFEO0lBSUEsT0FBQSxnQ0FMQXRJO0dBSUYsU0FERXdJO0ksT0F0U0EvQzs7R0ErU087ZUFDUCx5Q0FYQThDO2VBREFELGdCQVdzRDttQkFBbkI7ZUFabkN0SSxZQVl3QjtJQUFqQixlQUFFO0lBRFBHLGNBQ0Y7SUFPcUMsV0FBQztJQVZ0Q3NJOzs7T0FFRXRJO2VBUW1CLGdDQW5CckJIO09BVUVoRjtXQXZVRm9LO0lBc1ZBcndDLFFBQVM7SUFDVDJ6QyxhQUFXO0lBRW1DLE9BQUEsZ0NBRjlDQTtJQUU0QixPQUFBLGdDQUg1QjN6QztHQUdGLFNBREU0ekM7SSxPQWxUQWhEOztHQXVUTztlQUtQO2VBREE7ZUFWQStDLGdCQVFzQjttQkFBbkI7ZUFEaUQ7ZUFBWjtlQVJ4QzN6QyxXQVErQjtlQUFuQjtJQURMLGVBQ0o7SUFGRHdyQyxjQUNGO2VBV21EO2VBQWI7SUFBWixXQUFDO0lBZDNCcUk7OztPQUVFckk7ZUFZTSxnQ0FsQlJ4ckM7T0FLRWttQztXQXRWRm9LLG1CQUtBQztJQW1XQWp2QyxPQUFRO0lBQ1JDLE9BQVE7SUFDUnV5QyxhQUFXO1lBQ1hDLDRCQUNFbkksU0FBZ0JDLFNBQWdCbnNDO0lBQXFDO29CQUd4RSxnQ0FMQ28wQyxhQUVrQ3AwQztvQkFFbkMsZ0NBTEM2QixPQUdrQnNxQztJQUFxRCxlQUN4RSxnQ0FMQ3ZxQyxPQUlFc3FDO0dBSUw7R0FHYTtJQUFScHJDLFVBQVE7ZUFPVjtlQURBO2VBZkFzekMsZ0JBYXNCO21CQUFuQjtlQWRIdnlDLFVBYTBDOztVQWQxQ0QsVUFXRWQsYUFHd0I7SUFEbkIsZUFDSjtJQUZEc3JDLGNBQ0Y7ZUFXa0Q7ZUFBYjtJQUFaLFdBQUM7SUFmMUJrSTs7O09BR0VsSTtlQVlNLGdDQWJOdHJDO09BREEybEM7V0FsWEZtSztJQXFZQTV1QyxTQUFRO0lBQ1JDLFNBQVE7SUFDUkMsT0FBUTtJQUNScXlDLGFBQVc7WUFDWEMsNEJBQ0V0SSxTQUFnQkMsU0FBZ0JLLFNBQWdCeHNDO0lBQzFCO29CQUl6QixnQ0FQQ3UwQyxhQUVrRHYwQztvQkFJbkQsZ0NBUENrQyxPQUdrQ3NxQztvQkFHbkMsZ0NBUEN2cUMsU0FJa0JrcUM7SUFDTSxlQUN6QixnQ0FQQ25xQyxTQUtFa3FDO0dBTUw7R0FHYTtJQUFSN3FDLFVBQVE7ZUFpQlY7ZUFEQTtlQTNCQWt6QyxnQkF5QnNCO21CQUFuQjtlQTFCSHJ5QyxVQXdCSTs7O09BekJKRDtXQWFFWixhQVVFO2VBSEE7ZUFyQkpXLFlBb0JJO0lBSkcsZUFFSDtJQUhGeXFDLGNBQ0Y7ZUF1QnFEO2VBQWI7ZUFBWDtlQUFiO0lBQVosV0FBQztJQTNCTGdJOzs7T0FHRWhJO2VBdUJFLGdDQXhCRnByQztPQURBcWxDO1dBN1lGbUs7SUE2YUFsRSxTQUFPO0lBQ1ArSCxhQUFXO0lBQ1hDLGFBQVk7SUFLWixPQUFBLGdDQUxBQTtJQUlBLE9BQUEsZ0NBTEFEO0lBSUEsT0FBQSxnQ0FMQS9IO0dBSUYsU0FERWlJO0ksT0FoYUE1RDs7R0F5YU87ZUFDUCx5Q0FYQTJEO2VBREFELGdCQVdzRDttQkFBbkI7ZUFabkMvSCxZQVl3QjtJQUFqQixlQUFFO0lBRFBHLGNBQ0Y7SUFPcUMsV0FBQztJQVZ0QytIOzs7T0FFRS9IO2VBUW1CLGdDQW5CckJIO09BVUVoRztXQWxiRm1LO0lBZ2NBdFcsVUFBVztJQUNYQyxVQUFXO0lBQ1hxYSxhQUFXO1lBQ1hDLHdCQUNFcGEsUUFBZTNCLFFBQWVoNUI7SUFBcUM7b0JBR3RFLGdDQUxDODBDLGFBRWdDOTBDO29CQUVqQyxnQ0FMQ3k2QixVQUdpQnpCO0lBQW9ELGVBQ3RFLGdDQUxDd0IsVUFJRUc7R0FJTDtHQUdVO0lBQUxFLEtBQUsseUNBVlBKO2VBaUJBO2VBREE7ZUFmQXFhLGdCQWFzQjttQkFBbkI7ZUFmSHRhLGFBV0VLLFFBR3dCO0lBRG5CLGVBQ0o7SUFGRHFTLGNBQ0Y7SUFXK0MsZUFBRTtlQUFaO0lBQWYsV0FBQztJQWZ2QjhIOzs7T0FHRTlIO2VBWU0sZ0NBYk5yUztPQURBK0w7V0FyY0ZtSztJQXlkQWtFLCtCQTNhQXpELHdCQW5CQUg7SUFtY0E2RCwrQkE1WkF2RCx3QkF2Q0FOO0lBd2NBOEQsMEJBM1lBckQsa0JBN0RBVDtJQTZjQStELHlCQXZYQWxELGlCQXRGQWI7SUErY0FnRSwyQkFqV0EvQyxtQkE5R0FqQjtJQW9kQWlFLDBCQTlVQTVDLGtCQXRJQXJCO0lBeWRBa0UseUJBM1RBekMsaUJBOUpBekI7SUE4ZEFtRSwwQkF4U0F0QyxrQkF0TEE3QjtJQW1lQW9FLDZCQTFSQXBDLHFCQXpNQWhDO0lBd2VBcUUsNkJBdFFBakMscUJBbE9BcEM7SUE2ZUFzRSwwQkFuUEEvQixrQkExUEF2QztJQWtmQXVFLHlCQTNOQTVCLGlCQXZSQTNDO0lBb2ZBd0UsMkJBek1BMUIsbUJBM1NBOUM7SUF5ZkF5RTtvQkFsTEF4QixvQkE1QkFILG1CQTNTQTlDO0lBOGZBMEU7b0JBdkpBdEIsb0JBNURBTixtQkEzU0E5QztJQW1nQkEyRSx5QkFsSEFuQixpQkFqWkF4RDtJQXFnQkE0RSx3QkE1RkFqQixnQkF6YUEzRDs7O09BdEdBckI7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FNQUM7T0FZQUU7T0FPQUU7T0FFQUM7T0FpQkFFO09BRUFDO09Ba0JBRTtPQUVBQztPQWlCQUU7T0FLQUM7T0FtQkFHO09BTUFDO09Ba0JBRztPQU1BQztPQWtCQUc7T0FNQUM7T0FrQkFHO09BTUFDO09Ba0JBRztPQU1BQztPQWlCQUU7T0FFQUM7T0FtQkFHO09BTUFDO09BZUEzSTtPQUNBQztPQUVBNEk7T0FNQUM7T0F1QkFHO09BTUFDO09BZ0JBMXpDO09BRUE0ekM7T0FFQUM7T0FzQkFFO09BTUFDO09Bb0JBdHlDO09BQ0FDO09BQ0FDO09BRUFzeUM7T0FRQUM7T0FpQ0E5SDtPQUVBZ0k7T0FDQUM7T0FNQUM7T0FlQXJhO09BQ0FDO09BQ0FxYTtPQUNBQztPQU1BQztPQXFCQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FFQUM7OztFOzs7Ozs7OztHOzs7OztHQzFtQmE7O0lBVVhsMkY7O0lBNkJBb2dEOztJQWtCQUM7Ozs7SUF6REE4MUM7OztPQUVJOztJQUdKQzs7O09BRUk7O2NBTzJDO2NBQVQ7Y0FBYjtJQUFiLGNBQUU7SUFmaEJDOzs7V0FlRTs7T0FKQXIyRjtXQVZBbTJGLGNBS0FDO0lBaUJGRTs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkMsU0FBVTtJQUNWQyxTQUFVOzs7WUFDVkMsc0JBQTBCdkwsT0FBY0M7SUFBb0Msa0JBRTdFLGdDQUhDcUwsU0FDd0NyTDtJQUFvQyxlQUM3RSxnQ0FIQ29MLFNBRTBCckw7R0FHN0I7R0FHQztJQUZFOXNHOzs7V0FOQW00RyxZQVUwQix5Q0FUMUJDOztPQU1FcjJDO1dBakJGazJDLGNBS0FDO0lBc0JBSSxTQUFVO0lBQ1ZDLFNBQVU7WUFDVkMsd0JBQ0VDLE9BQWNDO0lBQW9DLGtCQUVyRCxnQ0FKQ0gsU0FFZ0JHO0lBQW9DLGVBQ3JELGdDQUpDSixTQUdFRztHQUdMO0dBR0M7Y0FFd0QseUNBVnRERjtjQVVtQztJQUpuQ3Q0Rzs7O1dBUEFxNEcsWUFXMEI7O09BSHhCdDJDOztJQVVGMjJDLHVCQXBFQVg7SUFzRUFZLHVCQS9CQTU0RztJQWlDQTY0RywwQkFmQTU0Rzs7O09BekRBKzNHO09BdUJBQztPQUtBQztPQUtBQztPQUNBQztPQUNBQztPQUlBcjRHO09BV0FzNEc7T0FDQUM7T0FDQUM7T0FLQXY0RztPQVdBMDRHO09BRUFDO09BRUFDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7R0NuRWM7O0lBSlpsM0Y7OztJQVlBb2dEOzs7SUFrQkFDOztJQW1CQUM7Ozs7Y0E3QytDO2NBQVQ7Y0FBYjtJQUFiLGNBQUU7SUFMaEI2MkM7OztXQUtFOztPQUpBbjNGOztJQVdGbzNGOzs7V0FJaUI7O09BSGZoM0M7O0lBVUYycUMsU0FBVTtJQUNWQyxTQUFVOzs7Ozs7O1lBQ1ZxTSwyQkFDRWxNLE9BQWNDO0lBQW9DLGtCQUVyRCxnQ0FKQ0osU0FFZ0JJO0lBQW9DLGVBQ3JELGdDQUpDTCxTQUdFSTtHQUdMO0dBTTJDO0lBQUEsVUFBQztJQUExQixjQUFNLGdDQVhyQkg7SUFNQXNNOzs7V0FQQXZNLFlBVzBCLHlDQVYxQkM7O09BT0UzcUM7O0lBU0ZrM0MsVUFBVztJQUNYQyxVQUFXO0lBQ1hDLFdBQVU7WUFDVkMsdUJBQ0VDLFFBQWVDLFFBQWV4TTtJQUFvQzttQkFHckUsZ0NBTENxTSxXQUVnQ3JNO21CQUVqQyxnQ0FMQ29NLFVBR2lCSTtJQUFtRCxlQUNyRSxnQ0FMQ0wsVUFJRUk7R0FJTDtHQUdTO0lBQUp6N0csSUFBSTtjQUswQztjQUFaO0lBQWYsVUFBQztJQUFwQixjQUFNLGdDQUxOQTtJQUZGMjdHOzs7O1FBVEFOOztTQWMyQjthQWIzQkMsYUFVRXQ3RyxPQVRGdTdHOztPQVFFbjNDOztJQVlGdzNDLHNCQTlEQVg7SUFnRUFZLHNCQXBEQVg7SUFzREEvTCxtQkFwQ0FpTTtJQXNDQVUsb0JBbkJBSCxlQW5CQVA7OztPQTlCQUg7T0FZQUM7T0FXQXJNO09BRUFzTTtPQUtBQztPQVVBQztPQUNBQztPQUNBQztPQUNBQztPQU1BRztPQWFBQztPQUVBQztPQUVBMU07T0FFQTJNOzs7RTs7Ozs7Ozs7Rzs7Ozs7R0NwRVk7O0lBTVZoNEY7Ozs7SUFORmk0RixXQUFZO1lBRVpDLHNCQUEwQkM7SUFBc0MsZUFDakUsZ0NBSENGLFdBRTBCRTtHQUU3QjtHQUdDO0lBRkVDOzs7V0FJaUIseUNBVGpCSDs7T0FNRWo0Rjs7SUFVRnE0RixtQkFYQUQ7MkJBTEFILFVBRUFDLHVCQUdBRSxVQVdBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0dDaEJxQjs7SUFxTm5CcjRGO0lBYUFvZ0Q7SUF5QkFDO0lBb0JBQztJQW9CQStsQjtJQWtCQVc7O0lBb0JBRDtJQW9CQUQ7SUFvQkFzZjtJQW9CQUM7SUFvQkFDO0lBb0JBQztJQW9CQUM7SUFvQkFDO0lBb0JBQztJQW9CQUM7SUFrQkFDOztJQW9CQUM7SUFvQkF5UjtJQW9CQUM7SUFvQkFDO0lBb0JBQztJQW9CQUM7SUFvQkFDO0lBb0JBQzs7SUFxQkFDOztJQW9CQUM7SUFvQkFDOzs7O0lBNXVCRkM7Y0FFSTtJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7O0lBR0pDOzs7T0FFSTs7SUFHSkM7OztPQUVJOztJQUdKQzs7O09BRUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUdKQyxzQkFDQ0MsV0FBa0JDLFFBQXFDLGVBQXZERCxXQUFrQkM7R0FFdEI7R0FDVSxJQUFQbCtHLE1BQU87WUFDUG0rRywrQkFBb0NEO0lBQ3RDLE9BTkVGLHNCQU1xQixnQ0FGckJoK0csTUFDb0NrK0c7R0FDUztHQUcvQztJQUZFRTs7O1dBSWlCLHlDQVBqQnArRzs7T0FJRXVpQjs7SUFTRnZoQixRQUFPO1lBQ1BxOUcsK0JBQXFDSDtJQUN2QyxPQW5CRUY7YUFtQnFCLGdDQUZyQmg5RyxRQUNxQ2s5RztHQUNRO0dBRy9DO0lBRkVJOzs7V0FJaUIseUNBUGpCdDlHOztPQUlFMmhFO1dBbE9GNDRDO1lBMk9BZ0QsdUJBQ0NDLFlBQWtCQyxhQUFvQkMsU0FBZ0JDLFVBQy9CLGVBRHZCSCxZQUFzQ0Usa0JBQXBCRCxhQUFvQ0U7R0FHMUQ7R0FDVztJQUFSMzVDLE9BQVE7SUFDUkMsT0FBUTtZQUNSMjVDLDBCQUNFRixTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQTE1QztJQUdGLE9BVEVzNUM7YUFVQSxnQ0FMQXY1QyxhQUdFMDVDLFNBQWdCQztHQU1uQjtHQUdEO2NBRTJDLHlDQWJ6QzE1QztjQWFpQztJQUpqQzQ1Qzs7O1dBVkE3NUMsVUFjd0I7O09BSHRCcEM7V0F0UEY0NEM7SUErUEFsMkMsU0FBUTtJQUNSQyxTQUFRO1lBQ1J1NUMsMkJBQ0VKLFNBQWdCQztJQUdsQixXQUFBLGdDQUxBcDVDO0lBR0YsT0E3QkVnNUM7YUE4QkEsZ0NBTEFqNUMsZUFHRW81QyxTQUFnQkM7R0FNbkI7R0FHRDtjQUU0Qyx5Q0FiMUNwNUM7Y0FhaUM7SUFKakN3NUM7OztXQVZBejVDLFlBY3dCOztPQUh0QnpDO1dBclFGNDRDO0lBOFFBdUQsU0FBUTtJQUNSQyxTQUFRO1lBQ1JDLDJCQUNFUixTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQU07SUFHRixPQWpERVY7YUFrREEsZ0NBTEFTLGVBR0VOLFNBQWdCQztHQU1uQjtHQUdEO2NBRTRDLHlDQWIxQ007Y0FhaUM7SUFKakNFOzs7V0FWQUgsWUFjd0I7O09BSHRCcDJCO1dBcFJGOHlCO1lBNlJBMEQsMkJBQ0VWLFNBQWdCQztJQUdsQixXQUFBLGdDQXZCQU07SUFxQkYsT0FuRUVWO2FBb0VBLGdDQXZCQVMsZUFxQkVOLFNBQWdCQztHQU1uQjtHQUdEO2NBRTRDLHlDQS9CMUNNO2NBK0JpQztJQUpqQ0k7OztXQTVCQUwsWUFnQ3dCOztPQUh0QnoxQjtXQWpTRm95QjtJQTBTQTJELFNBQVE7SUFDUkMsU0FBUTtZQUNSQyw0QkFDRWQsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEFZO0lBR0YsT0F2RkVoQjthQXdGQSxnQ0FMQWUsZUFHRVosU0FBZ0JDO0dBTW5CO0dBR0Q7Y0FFNkMseUNBYjNDWTtjQWFpQztJQUpqQ0U7OztXQVZBSCxZQWN3Qjs7T0FIdEJoMkI7V0FoVEZzeUI7SUF5VEE4RCxTQUFRO0lBQ1JDLFNBQVE7WUFDUkMsd0JBQ0VsQixTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQWdCO0lBR0YsT0EzR0VwQjthQTRHQSxnQ0FMQW1CLGVBR0VoQixTQUFnQkM7R0FNbkI7R0FHRDtjQUV5Qyx5Q0FidkNnQjtjQWFpQztJQUpqQ0U7OztXQVZBSCxZQWN3Qjs7T0FIdEJyMkI7V0EvVEZ3eUIsZ0JBS0FDO0lBbVVBZ0UsU0FBUTtJQUNSQyxTQUFRO1lBQ1JDLHlCQUNFdEIsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEFvQjtJQUdGLE9BL0hFeEI7YUFnSUEsZ0NBTEF1QixlQUdFcEIsU0FBZ0JDO0dBTW5CO0dBR0Q7Y0FFMEMseUNBYnhDb0I7Y0FhaUM7SUFKakNFOzs7V0FWQUgsWUFjd0I7O09BSHRCblg7V0F6VUZvVCxpQkFLQUMsaUJBS0FDO0lBd1VBaUUsU0FBUTtJQUNSQyxTQUFRO1lBQ1JDLHdCQUNFMUIsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEF3QjtJQUdGLE9BbkpFNUI7YUFvSkEsZ0NBTEEyQixlQUdFeEIsU0FBZ0JDO0dBTW5CO0dBR0Q7Y0FFeUMseUNBYnZDd0I7Y0FhaUM7SUFKakNFOzs7V0FWQUgsWUFjd0I7O09BSHRCdFg7V0E5VUZzVCxnQkFLQUM7SUFrVkFtRSxTQUFRO0lBQ1JDLFNBQVE7WUFDUkMseUJBQ0U5QixTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQTRCO0lBR0YsT0F2S0VoQzthQXdLQSxnQ0FMQStCLGVBR0U1QixTQUFnQkM7R0FNbkI7R0FHRDtjQUUwQyx5Q0FieEM0QjtjQWFpQztJQUpqQ0U7OztXQVZBSCxZQWN3Qjs7T0FIdEJ6WDtXQXhWRnVULGlCQUtBQyxpQkFLQUM7SUF1VkFvRSxTQUFRO0lBQ1JDLFNBQVE7WUFDUkMsd0JBQ0VsQyxTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQWdDO0lBR0YsT0EzTEVwQzthQTRMQSxnQ0FMQW1DLGVBR0VoQyxTQUFnQkM7R0FNbkI7R0FHRDtjQUU2Qyx5Q0FiM0NnQztjQWFpQztJQUpqQ0U7OztXQVZBSCxZQWN3Qjs7T0FIdEI1WDtXQTdWRnlULGdCQUtBQztJQWlXQXNFLFNBQVE7SUFDUkMsU0FBUTtZQUNSQyx5QkFDRXRDLFNBQWdCQztJQUdsQixXQUFBLGdDQUxBb0M7SUFHRixPQS9NRXhDO2FBZ05BLGdDQUxBdUMsZUFHRXBDLFNBQWdCQztHQU1uQjtHQUdEO2NBRWlELHlDQWIvQ29DO2NBYWlDO0lBSmpDRTs7O1dBVkFILFlBY3dCOztPQUh0Qi9YOztJQVNGbVksU0FBUTtJQUNSQyxTQUFRO1lBQ1JDLDRCQUNFMUMsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEF3QztJQUdGLE9Bbk9FNUM7YUFvT0EsZ0NBTEEyQyxlQUdFeEMsU0FBZ0JDO0dBTW5CO0dBR0Q7Y0FFNEMseUNBYjFDd0M7Y0FhaUM7SUFKakNFOzs7V0FWQUgsWUFjd0I7O09BSHRCbFk7V0EzWEZ5VDtJQW9ZQTZFLFVBQVE7SUFDUkMsVUFBUTtZQUNSQyw2QkFDRTlDLFNBQWdCQztJQUdsQixXQUFBLGdDQUxBNEM7SUFHRixPQXZQRWhEO2FBd1BBLGdDQUxBK0M7O2FBR0U1QzthQUFnQkM7R0FNbkI7R0FHRDtjQUU2Qyx5Q0FiM0M0QztjQWFpQztJQUpqQ0U7OztXQVZBSCxhQWN3Qjs7T0FIdEJyWTtXQTFZRnlUO0lBbVpBZ0YsVUFBUTtJQUNSQyxVQUFRO1lBQ1JDLDZCQUNFbEQsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEFnRDtJQUdGLE9BM1FFcEQ7YUE0UUEsZ0NBTEFtRDs7YUFHRWhEO2FBQWdCQztHQU1uQjtHQUdEO2NBRTZDLHlDQWIzQ2dEO2NBYWlDO0lBSmpDRTs7O1dBVkFILGFBY3dCOztPQUh0QnhZO1dBelpGeVQ7WUFrYUFtRiw2QkFDRXBELFNBQWdCQztJQUdsQixXQUFBLGdDQXZCQWdEO0lBcUJGLE9BN1JFcEQ7YUE4UkEsZ0NBdkJBbUQ7O2FBcUJFaEQ7YUFBZ0JDO0dBTW5CO0dBR0Q7Y0FFNkMseUNBL0IzQ2dEO2NBK0JpQztJQUpqQ0k7OztXQTVCQUwsYUFnQ3dCOztPQUh0QnZZO1dBdGFGeVQ7SUErYUFvRixVQUFRO0lBQ1JDLFVBQVE7WUFDUkMsOEJBQ0V4RCxTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQXNEO0lBR0YsT0FqVEUxRDthQWtUQSxnQ0FMQXlEOzthQUdFdEQ7YUFBZ0JDO0dBTW5CO0dBR0Q7Y0FFOEMseUNBYjVDc0Q7Y0FhaUM7SUFKakNFOzs7V0FWQUgsYUFjd0I7O09BSHRCNVk7V0FyYkZ5VDtJQThiQXVGLFVBQVE7SUFDUkMsVUFBUTtZQUNSQywwQkFDRTVELFNBQWdCQztJQUdsQixXQUFBLGdDQUxBMEQ7SUFHRixPQXJVRTlEO2FBc1VBLGdDQUxBNkQ7O2FBR0UxRDthQUFnQkM7R0FNbkI7R0FHRDtjQUUwQyx5Q0FieEMwRDtjQWFpQztJQUpqQ0U7OztXQVZBSCxhQWN3Qjs7T0FIdEJ2SDtXQXBjRmlDLGtCQUtBQztJQXdjQXlGLFVBQVE7SUFDUkMsVUFBUTtZQUNSQywyQkFDRWhFLFNBQWdCQztJQUdsQixXQUFBLGdDQUxBOEQ7SUFHRixPQXpWRWxFO2FBMFZBLGdDQUxBaUU7O2FBR0U5RDthQUFnQkM7R0FNbkI7R0FHRDtjQUUyQyx5Q0FiekM4RDtlQWFpQztJQUpqQ0U7OztXQVZBSCxhQWN3Qjs7T0FIdEIxSDtXQTljRmtDLG1CQUtBQyxtQkFLQUM7SUE2Y0EwRixVQUFRO0lBQ1JDLFVBQVE7WUFDUkMsMEJBQ0VwRSxTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQWtFO0lBR0YsT0E3V0V0RTthQThXQSxnQ0FMQXFFOzthQUdFbEU7YUFBZ0JDO0dBTW5CO0dBR0Q7ZUFFMEMseUNBYnhDa0U7ZUFhaUM7SUFKakNFOzs7V0FWQUgsYUFjd0I7O09BSHRCN0g7V0FuZEZvQyxrQkFLQUM7SUF1ZEE0RixVQUFRO0lBQ1JDLFVBQVE7WUFDUkMsMkJBQ0V4RSxTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQXNFO0lBR0YsT0FqWUUxRTthQWtZQSxnQ0FMQXlFOzthQUdFdEU7YUFBZ0JDO0dBTW5CO0dBR0Q7ZUFFMkMseUNBYnpDc0U7ZUFhaUM7SUFKakNFOzs7V0FWQUgsYUFjd0I7O09BSHRCaEk7V0E3ZEZxQyxtQkFLQUMsbUJBS0FDO0lBNGRBNkYsVUFBUTtJQUNSQyxVQUFRO1lBQ1JDLDBCQUNFNUUsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEEwRTtJQUdGLE9BclpFOUU7YUFzWkEsZ0NBTEE2RTs7YUFHRTFFO2FBQWdCQztHQU1uQjtHQUdEO2VBRThDLHlDQWI1QzBFO2VBYWlDO0lBSmpDRTs7O1dBVkFILGFBY3dCOztPQUh0Qm5JO1dBbGVGdUMsa0JBS0FDO0lBc2VBK0YsVUFBUTtJQUNSQyxVQUFRO1lBQ1JDLDJCQUNFaEYsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEE4RTtJQUdGLE9BemFFbEY7YUEwYUEsZ0NBTEFpRjs7YUFHRTlFO2FBQWdCQztHQU1uQjtHQUdEO2VBRWtELHlDQWJoRDhFO2VBYWlDO0lBSmpDRTs7O1dBVkFILGFBY3dCOztPQUh0QnRJOztJQVNGMEksVUFBUTtJQUNSQyxVQUFRO1lBQ1JDLDBCQUNFcEYsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEFrRjtJQUdGLE9BN2JFdEY7YUE4YkEsZ0NBTEFxRjs7YUFHRWxGO2FBQWdCQztHQU1uQjtHQUdEO2VBRWtELHlDQWJoRGtGO2VBYWlDO0lBSmpDRTs7O1dBVkFILGFBY3dCOztPQUh0QnpJO1dBaGdCRnVDLGtCQUtBQztJQW9nQkFxRyxVQUFRO0lBQ1JDLFVBQVE7WUFDUkMseUJBQ0V4RixTQUFnQkM7SUFHbEIsV0FBQSxnQ0FMQXNGO0lBR0YsT0FqZEUxRjthQWtkQSxnQ0FMQXlGOzthQUdFdEY7YUFBZ0JDO0dBTW5CO0dBSUQ7ZUFFaUQseUNBZC9Dc0Y7ZUFjaUM7SUFKakNFOzs7V0FYQUgsYUFld0I7O09BSHRCNUk7V0EzZ0JGd0MsaUJBS0FDO0lBK2dCQXVHLFVBQVE7SUFDUkMsVUFBUTtZQUNSQyx3QkFDRTVGLFNBQWdCQztJQUdsQixXQUFBLGdDQUxBMEY7SUFHRixPQXRlRTlGO2FBdWVBLGdDQUxBNkY7O2FBR0UxRjthQUFnQkM7R0FNbkI7R0FHRDtlQUU4Qyx5Q0FiNUMwRjtlQWFpQztJQUpqQ0U7OztXQVZBSCxhQWN3Qjs7T0FIdEIvSTtXQXJoQkZ5QyxnQkFLQUM7SUF5aEJBeUcsVUFBUTtJQUNSQyxVQUFRO1lBQ1JDLDRCQUNFaEcsU0FBZ0JDO0lBR2xCLFdBQUEsZ0NBTEE4RjtJQUdGLE9BMWZFbEc7YUEyZkEsZ0NBTEFpRzs7YUFHRTlGO2FBQWdCQztHQU1uQjtHQUdEO2VBRThDLHlDQWI1QzhGO2VBYWlDO0lBSmpDRTs7O1dBVkFILGFBY3dCOztPQUh0QmxKOztJQVVGc0osNEJBbGlCQXhHO0lBdWlCQXlHLDZCQTFoQkF2RztJQStoQkF3Ryx5QkF0Z0JBakc7SUF3Z0JBa0csMEJBcGZBaEc7SUFzZkFpRywwQkFsZUE3RjtJQW9lQThGLDBCQWxkQTVGO0lBb2RBNkYsMkJBaGNBekY7SUFxY0EwRiw4QkFqYkF0RjtJQXNiQXVGLG9DQWxhQW5GO0lBdWFBb0YsaUNBblpBaEY7SUF3WkFpRix1Q0FwWUE3RTtJQXlZQThFLDBCQXJYQTFFO0lBdVhBMkUsOEJBbldBdkU7SUF3V0F3RSwyQkFwVkFwRTtJQXlWQXFFLDRCQXJVQWpFO0lBMFVBa0UsNEJBdFRBOUQ7SUEyVEErRCw0QkF6U0E3RDtJQThTQThELDZCQTFSQTFEO0lBK1JBMkQsZ0NBM1FBdkQ7SUFnUkF3RCxzQ0E1UEFwRDtJQWlRQXFELG1DQTdPQWpEO0lBa1BBa0QseUNBOU5BOUM7SUFtT0ErQyw0QkEvTUEzQztJQW9OQTRDLGdDQWhNQXhDO0lBcU1BeUMseUJBakxBckM7SUFtTEFzQyx3QkE5SkFsQztJQWdLQW1DLDZCQTVJQS9CO0lBaUpBZ0MsOEJBN0hBNUI7OztPQTN1QkFwSjtPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQUtBRztPQUVBQztPQVVBcDlHO09BQ0FxOUc7T0FFQUM7T0FVQUM7T0FPQUs7T0FRQUM7T0FZQUM7T0FRQUM7T0FZQUc7T0FRQUM7T0FVQUM7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FVQUM7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FRQUM7T0FZQUc7T0FTQUM7T0FZQUc7T0FRQUM7T0FVQUM7T0FDQUM7T0FDQUM7T0FRQUM7T0FXQUM7T0FLQUM7T0FLQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FFQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FFQUM7T0FFQUM7T0FLQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0lDL2FKL2dIO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXJiSStnSDtJQUFpQnB2RSxTQUFTcXZFLFdBQVdDLFdBQVdDLGFBQWFDO0lBQWdCO0tBbUJ6RSxXQUFDO0tBbkJ3RTtnQkFpQnJFLG9DQWpCcURBO1lBQWJEO0tBZ0JuQyxPQUFBO0tBREcsV0FDUjtLQURGLFdBQUE7Z0JBRko7S0FGRSxXQUFDO2dCQUZHLG9DQVQ2QkQ7WUFBWEQ7S0FRYixPQUFBO0tBREcsV0FDUjtLQURGLFdBQUE7Z0JBRko7S0FENkIsV0FBQyxnQ0FKZnJ2RTtLQUlMLFdBQUE7S0FEWixXQUNFO0tBRkksV0FBQTtJQUNOLE9BQUE7R0FvQkg7WUFFR3l2RSwwQkFBOEIvZ0MsUUFBUW5qRSxVQUFVRCxTQUFTNlI7SUFFbEQ7O09BQUEsMENBRitCNVIsVUFBVUQsU0FBUzZSOzs7VUFDM0NveUYsaUJBQVhGOztVQUFXRSxpQkFBWEY7O1NBQVdFLGlCQUFYRjs7S0FtQkQsT0FDRSxXQXJCMEIzZ0MsZ0JBQVFuakUsVUFBVUQ7SUF3QjdDO0lBTEgsT0E1Q0E4akc7O2FBMEJHQzs7Y0FZRCxPQUNFLFdBZDBCM2dDLGdCQUFRbmpFLFVBQVVEO2FBaUI3QzthQWhCV2lrRzs7R0F5QmpCO1lBRUdHO0lBQTBCaGhDLFFBQVFuakUsVUFBVUQsU0FBU2dTLFlBQVlIO0lBRTFEOztPQUFBO3dDQUYyQjVSLFVBQVVELFNBQVNnUyxZQUFZSDs7O1VBQ25Eb3lGLGlCQUFYRjs7VUFBV0UsaUJBQVhGOztTQUFXRSxpQkFBWEY7O0tBd0JELE9BQ0UsV0ExQnNCM2dDLGdCQUFRbmpFLFVBQVVELFNBQVNnUztJQTZCbEQ7SUFMSCxPQTdFQTh4Rjs7YUFzREdDOztjQWlCRCxPQUNFO3VCQW5Cc0IzZ0MsZ0JBQVFuakUsVUFBVUQsU0FBU2dTO2FBc0JsRDthQXJCV2l5Rjs7R0E4QmpCO1lBRUdJLFVBQVl2Z0M7SUFBUTtLQUFnQyxXQUFDLGdDQUF6Q0E7S0FBd0IsV0FBQTtJQUFnQixPQUFBO0dBQWtCO1lBRXRFanJCLFVBQ0V1cUIsUUFBUXhlLEtBQW1CanFFLElBQVVreEY7SUFDWDtLQUNYLFFBQUEsbUNBRllseEYsSUFBVWt4RjtLQUVqQ0c7S0FBSGp3RjtLQUNjLFdBQUMsc0NBRGZBO0tBQ0Q0NUYsVUFBVTtJQUNkLEdBSkl2UztLQU9VO01BRExraEMsV0FOTGxoQzs7OztTQWdCSSxPQUFPLFdBVk5raEMsMkJBTnNCM3BIO1FBZ0J1QztpQkFEaEU7NkJBRkUsT0FBQSxXQVBDMnBILGVBTzhEO2lCQURqRTs7d0JBRkUsT0FBTyxXQUpOQSwwQkFOc0IzcEgsUUFVdUM7TUFIeEQ7WUFKVmc3RixhQU1FO01BTEZ6b0IsT0FHQTs7U0FIQUEsT0FEQXlvQjtJQWtCSixXQUFDLHdDQWpCR3pvQixPQUpRdEksTUFFSm9uQjtHQW9CVDtZQVVHdTRCLGVBQW1CbmhDLFFBQVFVO0lBQ25CLElBQU4wZ0MsTUFBTSx5QkFEbUIxZ0M7YUFHckIvYyxVQUNDaDBCLEtBQVk4NEM7S0ErQ2pCLGtCQS9DaUJBOzBCQUVBNDRCO01BQWpCLElBQU81NEIsb0JBQUxqbkI7TUFBd0IsVUFBVDYvQztPQUFTLE9BQVRBOztjQUVDNzZFLElBRkQ2NkUsU0FFTyxPQUxwQjE5QyxVQUtjbjlCLEdBRlhpaUQ7O1VBRzBCLElBQXhCdnZGLElBSFFtb0gsU0FHZ0IsV0FBQyxnQ0FBekJub0g7VUFBTSxXQUFDLDRCQUhkc29FLFlBQUtpbkI7O1VBMEJnQjtXQURkOWhELE1BekJRMDZFO1dBMEJNLFFBN0JuQjE5QyxVQTRCS2g5QixLQXpCRjhoRDtXQTBCS0c7V0FBSDdOO1dBUU8sT0FBQTtXQURGLFdBQUE7V0FITixXQUNFLDBDQUxEQTtVQUNMLFdBQ0UsNEJBNUJKdlosWUEwQlVvbkI7O1VBZko7V0FQRHVKLFFBSlVrdkI7V0FXVCxjQVhENTRCOzs2QkFPb0JqaUQ7Y0FBbkI7ZUFBU2lpRDtlQUFQNjRCO2VBQ21CLFFBWHpCMzlDLFVBVXVCbjlCLEdBQVZpaUQ7ZUFDQ0c7ZUFBSDN1RjtlQUNlLFdBQUMsdUNBRGhCQTtjQUNMLFdBQUMsNEJBRkRxbkgsY0FDUTE0QjthQUVUO1dBSkgsVUFBQSx3Q0FGQ3VKO1dBQ1dvdkI7V0FBVEM7V0FTYSxXQUFDLHVDQVRkQTtVQVNMLFdBQUMsNEJBZEhoZ0QsWUFLZ0IrL0M7O1VBVXNCLElBQXhCdm1ELE1BZkNxbUQsU0FldUIsV0F4RDFDSixVQXdEa0JqbUQ7VUFBTSxXQUFDLDRCQWZyQndHLFlBQUtpbkI7O1VBaUJnQjtXQURYbk4sTUFoQksrbEM7V0FnQlQ5cEgsS0FoQlM4cEg7V0FpQk0sVUFwQm5CMTlDLFVBbUJRMlgsS0FoQkxtTjtXQWlCS2c1QjtXQUFIL2tDO1dBRUksVUFBQSwrQkFITG5sRjs7ZUFJS21xSCxtQkFGTEMsT0FFS0Q7O2VBRkxDO1VBS3VCO1dBQUEsVUE5RGpDbHNELFVBaUNtQnVxQixRQXVCUnRELEtBQ0RpbEMsTUFESUY7V0FNUUc7V0FBWEM7VUFDTDtrQkFBQyw0QkF4QkhyZ0QsU0F1Qk9xZ0Q7a0JBQVdEOztNQW1CWCxXQTFDUHBnRCxLQUFLaW5CO0tBNENOO0tBN0NILE9BQUEsd0NBRE85NEM7SUFpRE47SUFDSCxPQW5EUWcwQixVQUZKeTlDO0dBc0RMO1lBRUdVLGVBRUc5aEMsUUFDQXZwRCxVQUNENVosVUFDQUQsU0FDQThqRSxNQUNBanlEO0lBRTBCO0tBQ1AsUUFuRXJCMHlGLG1CQTJER25oQyxTQUlEVTtLQUlNcWhDO0tBQUx2Z0Q7S0FDRGgxQjtPQVJDL1Y7Y0E1SkhzcUYsMEJBMkpHL2dDLFFBRURuakUsVUFDQUQsU0FFQTZSOztLQVFhLFdBQUE7S0FBWCxXQUFDLDBDQUxGK3lDO0tBS0MsT0FBQSw2QkFKRmgxQjtJQUdKLFdBQ0UsOENBTFF1MUU7R0FRWDtZQUVHQztJQUVHQyxNQUNBeHJGLFVBQ0F1cEQsUUFDWWhsQyxVQUNaNGxDLFNBQ0E3eEQsT0FDQTRnQixLQUNEblk7SUFSRjtLQUlnQisvQixlQUFEdmM7NkNBQUFBLFVBSWJ4akI7YUFEQ21ZO0tBUXNCLFVBQUEsMkJBVnRCaXhDOzs7TUFhSXNoQzs7O1NBR0w7VUFBYTc5QztVQUFYcUY7VUFDSXk0QyxrQkFDRixrQ0FuQlU1cUQ7aUJBSGIwcUQ7VUE4QkssT0FBQSx1QkFUQUU7VUFNQUM7WUFDRjtTQU1GLFNBQUlDLFNBQVdDO1VBQ04sWUFBQSwyQkFETUE7NkJBS047VUFGYTtXQURQcjFDO1dBQ08sT0FBQSwrQkFEUEE7VUFBYSxXQUN0QjtTQUdIOztVQVVHO1dBQStCcTFDO1dBQTdCL3FIO1dBQ0k2QixNQUFNLHlDQURtQmtwSDtXQUV6QnhoQzthQUNGO2lDQWxERXZwQixjQStDeUIrcUQsU0FDekJscEgsS0FsRGJxOUI7YUEyRFcsV0FWRmwvQixJQTVDVG80QztXQXVEOEI7WUFBQSxPQTNCekIweUUsU0FnQmlDQztZQVN6Qi92QixVQUVFOztlQUZGQSxVQXpCUjh2QixTQWdCaUNDO21CQVl6QkM7V0FDRixPQUNFLFdBOURidmlDLGdCQUdBanhELFVBNkNTeDNCO1VBaUJHO1VBR1c7OztjQUVSLG9DQVZGZ3JIOztXQVFVLFdBQ1Isd0JBWkZod0I7V0FXQSxXQUFBO1VBSUYsT0FBQSw4Q0F0QkV6UjtTQXdCTDtTQTNCSDtVQUFBLE9BQUEsa0NBN0NMRjtVQXlDaUIsV0FDUixrQ0FuQkp3aEM7VUFrQkUsV0FBQTtVQUhGSSxtQkFDRjtVQXNDRUM7WUFBcUIsZ0RBNURyQk47VUErRGdCLFdBQUMsa0NBSGpCTTtVQUdNLFdBQUE7VUFGTkMsZUFDRjtVQUtFQztZQUNGOztjQXRGVXByRDtjQWlCWm1TOzs7Ozs7Ozs7O2NBQVdyRjtpQkFwQlo0OUMsa0JBa0ZLUztVQTRCRjtZQUFBOztrQkF0QkVDLHFCQTlDQUg7O1VBb0VGOztVQVJ1QixPQUVmLFdBdEdYeGlDLG9CQUZBaWlDO1NBNEdRO1NBVE87cUJBR1I7OzthQURBO29EQWxHTTFxRCxjQWlCWm1TOztVQStFYyxXQUNSO1VBREYsV0FBQTtTQVdGLE9BQUE7UUFHSDtLQTdGRCxPQUFBLHFCQUhLdzRDOztJQURPLE9BQUE7R0FvR2pCO1lBRUdVO0lBRUc1aUMsUUFDQWhsQyxVQUNBdmtCLFVBQ0E1WixVQUNBRCxTQUNBSixVQUNBaVM7SUFDRSxTQUZGalMsVUFJRDtJQUNBOztLQUlJO01BQVc4MEI7TUFBTmhaO01BQWV1cUY7TUFDZHIyRTtRQWJUL1Y7O1dBN1FIdXFGLHNCQTJRR2hoQyxRQUdBbmpFLFVBQ0FELFNBVXVCaW1HLFFBUnZCcDBGOzs7TUFzRVcsV0FBQyxnQ0E5REU2aUI7TUE4REgsT0FBQSw2QkE3REY5RTtNQTREUSxXQUFBO2lCQURSO01BaENtQyxPQUFBLGlDQTVCcENsVTtNQTJCU2QsU0FDRjtNQUNHa1AsU0FDSCxtQ0FIRWxQO01BSUE0TztRQUNGLHVDQTVDZjNQLGFBeUNrQmlRLFFBRkRsUDtNQVVBcVE7UUFqRGpCcFI7OztnQkF5Q2tCaVE7WUFlSyxtQ0F4RHZCalEsZ0JBeUNrQmlROzs7TUFzQkwsZUF4QklsUCxRQUlBNE8sVUFNQXlCOzs7OzswQkFsQmMsb0JBQWdCOzBCQUR2QixvQkFBZ0I7MEJBRGhCLG9CQUFnQjtLQUZqQztNQUFBOztTQUNFOzs7OztXQTdCVG1UO1dBQ0F2a0I7Ozs7Ozs7OztNQTBCYSxXQUFBO0tBQ04sT0FBQTtJQW1ESDtJQW5FSDtLQUFBLE9BQUEsa0NBUkRqYTtLQU9PLFdBQUE7SUFGUixXQUNBO0dBMEVMO1lBRU9zbUcsNEJBQStCM29IO0lBQWUsSUFBZmdCLFFBQUFoQjtJQUFlO2lCQUFmZ0I7Ozs7O2FBQUE0cEcsa0JBQUE1cEcsUUFBQTRwRzs7S0FJOUIsT0FKOEI1cEc7O0dBTXRDO1lBRU80bkgsa0JBQXFCNW9IO0lBQWUsSUFBZmdCLFFBQUFoQjtJQUFlO2lCQUFmZ0I7MERBQUE0cEcsa0JBQUE1cEcsUUFBQTRwRztLQUdwQixPQUhvQjVwRzs7R0FLNUI7WUFFTzZuSCxrQkFBcUI5b0g7SUFBZSxJQUFmZ0IsUUFBQWhCO0lBQWU7aUJBQWZnQjswREFBQThwRyxrQkFBQTlwRyxRQUFBOHBHO0tBR3BCLE9BSG9COXBHOztHQUs1QjtZQUVPK25ILGtCQUFxQjduSDtJQUFlLElBQWZnZ0UsUUFBQWhnRTtJQUFlO2lCQUFmZ2dFO3lEQUFBOG5ELGtCQUFBOW5ELFFBQUE4bkQ7O0tBR3BCLE9BSG9COW5EOztHQUs1Qjs7SUFFRCtuRDtJQUFBQzs7S0FBQUQ7Y0FDQTloSDtNQUFBLFlBQUEsT0FBQSw4QkFBQUE7VUFEQXUzQixlQUFBM3FCO01BQ0EsK0JBQUE1TTtNQUVNLDhCQUZOQTtNQUFBLCtCQUFBQTtNQURBLFdBQUEsOEJBQ0FBLE1BREE0TTtNQUNBLCtCQUFBNU07TUFEQSxXQUFBLGlDQUNBQSxNQURBdTNCO01BQUEsT0FBQSwrQkFDQXYzQjtLQU1hOztLQVBiK2hIO2NBQ0FycUg7TUFBQSxPQUFBLG9DQURBb3FILGlCQUNBcHFIO0tBTWE7R0FOYixTQUFBc3FILHFCQUFBbGtGO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztPQUFBLE9BQUE7NkNBQUF6L0Isa0JBQUF5L0I7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9COzs7TUFBQSxPQUFBOzRDQUFBei9CLGtCQUFBeS9CO1NBQUFDOzs2QkFBQUE7OEJBQUFBO2lDQUFBQTsrQkFBQUE7O1VBQUFDO01BQUEsR0FBQUE7a0JBQUFBOzs7O1NBQUE7VUFBQXRHO1VBQUFDO1VBQUFDLFdBQUFvRztVQUFBbkcsV0FBQSxtQ0FBQUQ7VUFBQUUsV0FBQSwrQkFBQUg7VUFBQVEsV0FBQSxrQ0FBQVQ7U0FBQSxXQUFBRyxVQUFBQyxVQUFBSzs7OztNQUFBLE9BQUE7O2VBQUE5NUI7ZUFBQTAvQjtlQUFBRDs7S0FBQSxPQUFBOzJDQUFBei9CLGtCQUFBeS9COztJQUFBLE9BQUEsd0NBQUF6L0Isa0JBQUF5L0I7R0FNYTtZQU5ibWtGO0lBQUEsWUFNSTtRQUxBQyxxQkFBQUM7d0I7SUFBQTtLQUFBdnBGO0tBQUFDLFdBQUEsK0JBQUFzcEY7S0FBQUMsV0FBQSxrQ0FBQUY7SUFBQSx3QkFBQXRwRixjQUFBQyxjQUFBdXBGO0dBS1M7R0FOYixTQUFBQyx1QkFBQS9oSDtJQUFBLFVBQUFBO2dCQUFBQTs7Z0NBQUFBO09BQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7OztZQUFBeUU7a0NBQUFBOzttQkFBQTt1REFBQXpHLFFBQUFnQzs7a0NBQUF5RTthQUFBQztTQUFBLEdBQUFBO3FCQUFBQTs7OztZQUFBO2FBQUFnMEI7YUFBQWxvQjthQUFBN0wsS0FBQUQ7YUFBQUUsT0FBQSxpREFBQUQ7YUFBQThMLE9BQUEsOEJBQUFEO2FBQUFtb0IsT0FBQSxrQ0FBQUQ7WUFBQSxXQUFBOXpCLE1BQUE2TCxNQUFBa29COzs7O1NBQUEsT0FBQTtxREFBQTM2QixRQUFBeUcsS0FBQXpFOzs7O1FBQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7OztJQUFBLE9BQUEsOENBQUFoQyxRQUFBZ0M7R0FNYTtZQU5iZ2lIO0lBQUEsWUFNSTtRQUxBdHBGLGVBQUFsb0I7d0I7SUFBQTtLQUFBN0w7S0FBQThMLE9BQUEsK0JBQUFEO0tBQUFtb0IsT0FBQSxrQ0FBQUQ7SUFBQSxtQ0FBQS96QixRQUFBOEwsVUFBQWtvQjtHQUtTO1lBRVRzcEYsUUFFRzNCLE1BQ0Q1eEIsTUFDQXo2QjtJQUU4RCxTQUM5RGl1RCxPQUFTcmlEO0tBQTBCO0tBQW5CLHNCQUFPLGdDQUFkQTtJQUFpRDtJQUNoRCxJQUFWdmpELFlBREE0bEc7SUFFSixTQUFJQyxzQkFBd0Jqbkc7S0FDMUIsT0FBSSwwQ0FEc0JBLFVBUHZCb2xHO0lBUTBEO2FBQzNEOEIsWUFFR3JzSDtLQUVELEdBRkNBLFNBQVVHLE1BQVZILFFBQUFnbEIsWUFBVTdrQixjQUFWNmtCO0tBRUQsYUFEa0M0bEQsaUJBQWpDMGhELFNBQWlDMWhELGdCQUFqQzBoRDtLQUVELGdCQUFBajFGO01BR2lCO09BQUEsUUFBQSwwQ0FIakJBLE9BZERrekY7T0FpQk9yaEM7T0FBTGp4QztNQUdMO1dBRVU2eEIsc0JBRk55aUQsa0JBRU16aUQ7Y0FWTHdpRDtXQVdReCtFLElBWFJ3K0UsV0FRREMsa0JBR2dCLFdBQVB6K0UsR0FOUm1LOztXQUdEczBFLGtCQUhDdDBFO01BU0wsS0F4QkVpbUI7V0E4RlFzdUQsY0F0YVYvQyxrQkEwVkk4QztPQTZFRixxQkFEUUM7O01BbkVOO09BRitCenRGLFdBekJqQ20vQjtPQXlCdUI1YSxXQXpCdkI0YTtPQXlCZW9xQixTQXpCZnBxQjtPQTJCRTtTQTFTSmtzRDtXQXdTaUI5aEMsUUFBa0J2cEQsVUFiL0IxSCxVQUdDNGdCLFFBR0RzMEUsaUJBcEJEaEM7T0E0QmlCRjtPQUFibGxEO01BU0wsR0FwQ0F3ekI7V0F1Q1Nua0MsS0F2Q1Rta0MsU0FvQ0lwbEIsT0FHWSxnQ0FBUC9lOztXQUhMK2U7O09BT1U7UUFBMkJrNUM7UUFBekJDO1FBQ0oxN0IsUUFBWSxtQ0FEaUJ5N0IsU0FoQnZCcEM7T0FrQlgsV0FGU3FDLG1CQUNKMTdCO01BRU47TUFKSjtPQUFBLE9BQUEsV0FDRyxtQ0FqQ0Zoc0U7T0FnQ0QsT0FBQTtPQUFBLE9BQUE7T0FERTR5RSxhQUNGO09BUzZCLE9BQUEsaUNBbkM1QjMvQztPQWtDQ25ZLFNBQ0Y7T0FDRTZzRjtTQTlTTnJDO1dBeVBHQyxNQTJCZ0N4ckYsVUFBbEJ1cEQsUUFBUWhsQyxVQVZmNGxDLFNBSE43eEQsT0FHQzRnQixLQWtDQ25ZO01BYUosR0F0Qkk4M0Q7T0E4QnNCO1FBTmpCZzFCLGVBeEJMaDFCO2dEQWZtQnQwQyxVQXdCbkJ4akI7UUFxQnNCLE9BQUEsbUNBTmpCOHNGO1FBRkxDLGlCQVFBOztXQVJBQTtNQWdCVTtPQUxWbitFO09BS1U7YUFBQSx1QkFoQlZtK0Usb0JBWEFGO09BdUJBRztTQUNGOztXQWxEcUJ4cEU7V0FBVXZrQjs7ZUFVN0J3MEM7ZUFjQXp6QyxRQXdCQTRPO09BU0FxK0U7U0FyTk43QjtXQTRKaUI1aUMsUUFBUWhsQyxVQUFVdmtCLFVBYi9CMUgsVUFHQzRnQixRQUFBQSxRQWpCRnN5RTtNQThGRDtrQkFsQkl1QztzQkFoREMzbkQsbUJBQWFrbEQ7Y0F3RGQwQztJQWVQO0lBR0QsU0FBSUMsZUFBa0IzN0U7S0FBZ0M7TUFDZCxRQUFBLDRDQURsQkE7TUFDU2hhO01BQVhyUztNQUFiRDtLQUNMLE9BL0ZFc25HLGdCQThGZ0JybkcscUJBQWJELGNBQXdCc1M7SUFFOUI7SUFFRCxLQTFHSXNoRSxNQTgzRE0sT0F6M0ROcHlFO2dCQUxBb3lFOzs7O1FBMkdZLzNEO1FBQ05xc0Y7bUJBQ0Nyc0Y7ZUFBQW9PLFNBQUFwTzs7c0JBQUFvTzthQVNRO2FBQUEsT0E5R2ZxOUU7O21CQXFHT3I5RTs7ZUFHYSxPQTVHcEJtOUU7O2VBbUgwQjtlQUFBLE9BL0cxQkU7O2VBaUlpQjtlQUFBLE9BaklqQkE7O2VBa0l5QjtnQkFBbEI1M0UsSUE3QkF6RjtnQkE2QmtCLE9BQUEsb0NBQWxCeUY7ZUFBa0IsT0FsSXpCNDNFOztlQW1Jd0I7Z0JBQWxCbnFILElBOUJDOHNDO2dCQThCaUIsT0FBQSxvQ0FBbEI5c0M7ZUFBa0IsT0FuSXhCbXFIOztlQW9JMEI7Z0JBQWxCditFLElBL0JEa0I7Z0JBK0JtQixPQUFBLHFDQUFsQmxCO2VBQWtCLE9BcEkxQnUrRTs7ZUFxSTJCO2dCQUFsQmowRixJQWhDRjRXO2dCQWdDb0IsT0FBQSxxQ0FBbEI1VztlQUFrQixPQXJJM0JpMEY7O2VBdUlFLElBRFE5M0IsUUFqQ0h2bEQsd0NBa0NMO2VBQUEsT0F2SUZxOUU7Ozs7b0NBMElRdmlEOzRCQUNFOzZCQUVnQixPQUFBLDJCQVBoQnlxQjs2QkFPRSxPQUFBOzZCQURBLE9BQUEsNkJBRkp6cUI7NEJBR0ksT0FBQTsyQkFDRDs7OztlQWd6Q1A7Z0JBTlVsb0UsSUFuMUNQb3RDO2dCQXkxQ0gsT0FBQSxxQ0FOVXB0QztnQkFNVjtlQUFBLE9BOTdDSnlxSDs7OztvQ0E0N0NRdmlEOzRCQUFzQixXQUFBLDZCQUF0QkE7NEJBQXNCLE9BQUEsbUNBSmhCbG9FOzJCQUl1RDs7OztlQS92Q3pEO2dCQW5CRHNySCxPQXJFSmwrRTtnQkFxRUR2c0MsTUFyRUN1c0M7Z0JBc0VEbStFOzJCQUFRaG9HO21CQUFZO29CQUNsQnUvQyxTQUFTLDJCQUZYamlFO29CQUdFd29GLFVBQVUsMkJBSFBpaUM7b0JBSVA7b0JBSUk7OztpQ0FDRXBqRDt5QkFDRTswQkFHRSxPQUFBLCtCQVZObWhCOzBCQVNNLE9BQUEsK0JBVk52bUI7MEJBU00sT0FBQSw2QkFGSm9GO3lCQUlJLE9BQUE7d0JBQ0Q7bUJBVlQsT0E5S0p1aUQ7aUNBZ0xRLHFDQUpBM25ELFFBQ0F1bUI7Ozs0QkFGTTlsRTtrQkFpQlg7Z0JBQ0cxaEIsUUE5T0oybkgsNEJBMk5JM29IO2dCQW9CQWlpRSxTQUFTLDJCQURUamhFO2dCQUVBd25GLFVBQVUsMkJBckJMaWlDO2dCQXNCVCxRQUhJenBIOzs7O21CQWhNSSxPQUFWOGlCOzttQkE4TlcsV0E3Tlg2bEc7bUJBNE5PLEtBQUE7b0JBb0JJLE9BbkVMZTttQkFnRDhEO29CQUFBOztvQkFRMUQ7OztpQ0FDRXJqRDt5QkFDRTswQkFJRSxPQUFBLCtCQTNDVnBGOzBCQTBDVSxPQUFBLCtCQXpDVnVtQjswQkF3Q1UsT0FBQSwrQkF6Q1Z2bUI7MEJBd0NVLE9BQUEsNkJBRkpvRjt5QkFLSSxPQUFBO3dCQUNEO21CQWZxRCxPQTNOcEV1aUQ7aUNBOE5VLHFDQWhDSjNuRCxRQUNBdW1COzs7OzttQkFzRUs7b0JBRkhtaUM7b0JBRUcsT0F2UVhoQjttQkFzUU8sS0FBQTtvQkFxQkksT0E5R0xlO21CQTBGdUQ7b0JBQUE7O29CQVFuRDs7O2lDQUNFcmpEO3lCQUNFOzBCQUtFLE9BQUEsK0JBckZWbWhCOzBCQW9GVSxPQUFBLCtCQXJGVnZtQjswQkFvRlUsT0FBQSx1QkFmUjBvRDswQkFjUSxPQUFBLCtCQW5GVjFvRDswQkFrRlUsT0FBQSw2QkFGSm9GO3lCQU1JLE9BQUE7O3dCQUNEO21CQWhCOEMsT0FyUTdEdWlEO2lDQXdRVSxxQ0ExRUozbkQsUUFDQXVtQjs7Ozs7bUJBK0ZLO29CQUZEekQ7b0JBRUMsT0FoU1g0a0M7bUJBK1JPLEtBQUE7b0JBcUJJLE9BdklMZTttQkFtSHlEO29CQUFBOztvQkFRckQ7OztpQ0FDRXJqRDt5QkFDRTswQkFLRSxPQUFBLCtCQTlHVm1oQjswQkE2R1UsT0FBQSwrQkE5R1Z2bUI7MEJBNEdVLE9BQUEsK0JBNUdWQTswQkEyR1UsT0FBQSw2QkFGSm9GO3lCQU1JLE9BQUE7Z0VBakJOMGQ7d0JBa0JLO21CQWhCZ0QsT0E5Ui9ENmtDO2lDQWlTVSxxQ0FuR0ozbkQsUUFDQXVtQjs7Ozs7bUJBd0hLO29CQUZGMWhCO29CQUVFLE9BelRYNmlEO21CQXdUTyxLQUFBO29CQXFCSSxPQWhLTGU7bUJBNEl3RDtvQkFBQTs7b0JBUXBEOzs7aUNBQ0VyakQ7eUJBQ0U7MEJBS0UsT0FBQSwrQkF2SVZtaEI7MEJBc0lVLE9BQUEsK0JBdklWdm1COzBCQXFJVSxPQUFBLCtCQXJJVkE7MEJBb0lVLE9BQUEsNkJBRkpvRjt5QkFNSSxPQUFBO2dFQWpCUFA7d0JBa0JNO21CQWhCK0MsT0F2VDlEOGlEO2lDQTBUVSxxQ0E1SEozbkQsUUFDQXVtQjs7Ozs7bUJBaUpLO29CQUZBdEk7b0JBRUEsT0FsVlh5cEM7bUJBaVZPLEtBQUE7b0JBcUJJLE9BekxMZTttQkFxS3VEO29CQUFBOztvQkFRbkQ7OztpQ0FDRXJqRDt5QkFDRTswQkFLRSxPQUFBLCtCQWhLVm1oQjswQkErSlUsT0FBQSwrQkFoS1Z2bUI7MEJBOEpVLE9BQUEsK0JBOUpWQTswQkE2SlUsT0FBQSw2QkFGSm9GO3lCQU1JLE9BQUE7Z0VBakJMNlk7d0JBa0JJO21CQWhCOEMsT0FoVjdEMHBDO2lDQW1WVSxxQ0FySkozbkQsUUFDQXVtQjs7Ozs7dUJBK0xNb2lDO21CQUNKLFNBQUEsMkJBRElBO29CQUdDLFdBblliakI7b0JBa1lTLEtBQUE7cUJBb0JJLE9Bek9QZTtvQkFzTjZEO3FCQUFBOztxQkFRdkQ7OztrQ0FDRXJqRDswQkFDRTsyQkFJRSxPQUFBLCtCQWhOWm1oQjsyQkErTVksT0FBQSwrQkFoTlp2bUI7MkJBK01ZLE9BQUEsK0JBL01aQTsyQkE4TVksT0FBQSw2QkFGSm9GOzBCQUtJLE9BQUE7eUJBQ0Q7b0JBZmtELE9BalluRXVpRDtrQ0FvWVkscUNBdE1OM25ELFFBQ0F1bUI7Ozs7O21CQXlOWSxXQTFabEJtaEM7bUJBeVpjLEtBQUE7b0JBcUJILE9BalFMZTttQkE2T2tFO29CQUFBOztvQkFROUQ7OztpQ0FDRXJqRDt5QkFDRTswQkFLRSxPQUFBLCtCQXhPVm1oQjswQkF1T1UsT0FBQSwrQkF4T1Z2bUI7MEJBdU93QixPQUFBLDJCQXZDbEIyb0Q7MEJBdUNJLE9BQUE7MEJBREEsT0FBQSwrQkF0T1Yzb0Q7MEJBcU9VLE9BQUEsNkJBRkpvRjt5QkFNSSxPQUFBOzt3QkFDRDttQkFoQnlELE9BeFp4RXVpRDtpQ0EyWlUscUNBN05KM25ELFFBQ0F1bUI7Ozs7O21CQTRaSztvQkFGSzVmO29CQUVMLE9BN2xCWCtnRDttQkE0bEJPLEtBQUE7b0JBb0JJLE9BbmNMZTttQkFpYmE7b0JBQVRHLFdBQVMsMkJBL1piN3BIO29CQWdhSThwSCxZQUFVLDJCQW5iVEw7b0JBbWJTO29CQUNkO29CQUlJOzs7aUNBQ0VwakQ7eUJBQ0U7MEJBS0UsT0FBQSwrQkFaTnlqRDswQkFXTSxPQUFBLCtCQVpORDswQkFVTSxPQUFBLCtCQVZOQTswQkFTTSxPQUFBLDZCQUZKeGpEO3lCQU1JLE9BQUE7Z0VBaEJBdUI7d0JBaUJEO21CQVpULE9BOWxCTmdoRDs7OEJBZ21CVSxxQ0FKQWlCLFVBQ0FDOzs7OzttQkE1S0M7b0JBRkVsL0M7b0JBQUpDO29CQUVFLE9BbmJYODlDO21CQWtiTyxLQUFBO29CQXVCSSxPQTVSTGU7bUJBdVFZO29CQUFSamQsUUFBUSwyQkFIVDVoQztvQkFJQzZoQyxRQUFRLDJCQUpMOWhDO29CQUlLO29CQUNaO29CQVFJOzs7aUNBQ0V2RTt5QkFDRTswQkFJRSxPQUFBLCtCQW5RVm1oQjswQkFrUVUsT0FBQSwrQkFkTmtsQjswQkFhTSxPQUFBLCtCQWRORDswQkFhTSxPQUFBLDZCQUZKcG1DO3lCQUtJLE9BQUE7d0JBQ0Q7bUJBZlQsT0FwYk51aUQ7OzhCQXNiVSxxQ0FKQW5jLE9BQ0FDLE9BcFBKbGxCOzs7OzttQkE2UUs7b0JBRkhXO29CQUVHLE9BOWNYd2dDO21CQTZjTyxLQUFBO29CQWlCSSxPQWpUTGU7bUJBaVN1RDtvQkFBQTs7b0JBS25EOzs7aUNBQ0VyakQ7eUJBQ0U7MEJBSUUsT0FBQSwrQkF4UlZtaEI7MEJBc1JVLE9BQUEsK0JBdlJWdm1COzBCQXNSVSxPQUFBLDZCQUZKb0Y7eUJBS0ksT0FBQSx5Q0FiUjhoQjt3QkFjTzttQkFaOEMsT0E1YzdEeWdDO2lDQStjVSxxQ0FqUkozbkQsUUFDQXVtQjs7Ozs7dUJBZ1NJdWlDO3dCQUFBQTtvQkF0SEMsV0EzV1hwQjtvQkEwV08sS0FBQTtxQkFtQkksT0FoTkxlO29CQThMd0Q7cUJBQUE7O3FCQU9wRDs7O2tDQUNFcmpEOzBCQUNFOzJCQUlFLE9BQUEsK0JBdkxWbWhCOzJCQXNMVSxPQUFBLCtCQXZMVnZtQjsyQkFzTFUsT0FBQSwrQkF0TFZBOzJCQXFMVSxPQUFBLDZCQUZKb0Y7MEJBS0ksT0FBQTt5QkFDRDtvQkFkK0MsT0F6VzlEdWlEO2tDQTRXVSxxQ0E5S0ozbkQsUUFDQXVtQjs7Ozs7bUJBaVNXO29CQUFUd2lDLFdBQVMsMkJBblNYaHFIO29CQW9TRWlxSCxZQUFVLDJCQXZUUFI7b0JBd1RIUzsrQkFBY3hvRzt1QkFBWTs7d0JBUXhCOzs7cUNBQ0Uya0Q7NkJBQ0U7OEJBS0UsT0FBQSwrQkFoQlI0akQ7OEJBZVEsT0FBQSwrQkFoQlJEOzhCQWVzQixPQUFBLDJCQWhCcEJEOzhCQWdCTSxPQUFBOzhCQURBLE9BQUEsK0JBZFJDOzhCQWFRLE9BQUEsNkJBRkozakQ7NkJBTUksT0FBQTs7NEJBQ0Q7dUJBaEJtQixPQWxlbEN1aUQ7O2tDQXFlVSxxQ0FMRm9CLFVBQ0FDOzs7Z0NBQ2N2b0c7c0JBb0JqQjtvQkFFTSxVQUFBLDJCQXpCRHFvRzs7b0JBMkJTO3FCQUFUSSxTQTVmVnhCO29CQTZmUyxLQUFBLHdDQURDd0I7cUJBdUJNLE9BQUEsd0NBdkJOQTsrQkF4QkZEOytCQXZURlI7b0JBaVZ5QjtxQkFBQSxPQUFBLDJCQTdCckJLO3FCQTZCRXRjLFVBQVU7cUJBQ1MsT0FBQSwyQkE5QnJCc2M7cUJBOEJFcmMsVUFBVTtxQkFBQTtxQkFDZDtxQkFRSTs7O2tDQUNFcm5DOzBCQUNFOzJCQUlFLE9BQUEsK0JBM0NWNGpEOzJCQTBDVSxPQUFBLCtCQWROdmM7MkJBYU0sT0FBQSwrQkFkTkQ7MkJBYU0sT0FBQSw2QkFGSnBuQzswQkFLSSxPQUFBO3lCQUNEO29CQWZULE9BOWZSdWlEOzsrQkFnZ0JZOzJEQUpBbmIsU0FDQUMsU0E1Qkp1Yzs7Ozs7O29CQXVGSyxXQTFqQmJ0QjtvQkF5akJTLE9BQUE7OEJBckZEdUI7OEJBdlRGUjs7bUJBNFdhO29CQUFUVSxXQXpoQlZ6QjttQkEwaEJTLEtBQUEsd0NBREN5QjtvQkEwQk0sT0FBQSx3Q0ExQk5BOzhCQXJERkY7OEJBdlRGUjttQkE4V3lCO29CQUFBLE9BQUEsMkJBMURyQks7b0JBMERFTSxZQUFVO29CQUNTLE9BQUEsMkJBM0RyQk47b0JBMkRFTyxZQUFVO29CQUNTLE9BQUEsMkJBNURyQlA7b0JBNERFaGMsVUFBVTtvQkFBQTtvQkFDZDtvQkFTSTs7O2lDQUNFMW5DO3lCQUNFOzBCQUtFLE9BQUEsK0JBM0VWNGpEOzBCQTBFVSxPQUFBLCtCQWhCTmxjOzBCQWVNLE9BQUEsK0JBaEJOdWM7MEJBZU0sT0FBQSwrQkFoQk5EOzBCQWVNLE9BQUEsNkJBRkpoa0Q7eUJBTUksT0FBQTs7d0JBQ0Q7bUJBakJULE9BNWhCUnVpRDs7OEJBOGhCWTs7Z0NBTEF5QjtnQ0FDQUM7Z0NBQ0F2YztnQ0ExREprYzs7Ozs7bUJBcGVFLE9BQVZubkc7O21CQW1rQlc7b0JBRkNqVDtvQkFBTDA2RztvQkFFSSxPQWxrQlg1QjttQkFpa0JPLEtBQUE7b0JBdUJJLE9BM2FMZTttQkFzWmE7b0JBQVR4dEIsU0FBUywyQkFIWnF1QjtvQkFJR2h3QixTQUFTLDJCQUpQMXFGO29CQUlPO29CQUNiO29CQVFJOzs7aUNBQ0V3MkQ7eUJBQ0U7MEJBSUUsT0FBQSwrQkFsWlZtaEI7MEJBaVpVLE9BQUEsK0JBZE4rUzswQkFhTSxPQUFBLCtCQWROMkI7MEJBYU0sT0FBQSw2QkFGSjcxQjt5QkFLSSxPQUFBO3dCQUNEO21CQWZULE9BbmtCTnVpRDs7OEJBcWtCVTswREFKQTFzQixRQUNBM0IsUUFuWUovUzs7OzsyQkFsTUksT0FBVjFrRTs7O2dCQXNNVyxXQXJNWDZsRztnQkFvTU8sS0FBQTtpQkFvQkksT0EzQ0xlO2dCQXdCOEQ7aUJBQUE7O2lCQVExRDs7OzhCQUNFcmpEO3NCQUNFO3VCQUlFLE9BQUEsK0JBbkJWcEY7dUJBa0JVLE9BQUEsK0JBakJWdW1CO3VCQWdCVSxPQUFBLCtCQWpCVnZtQjt1QkFnQlUsT0FBQSw2QkFGSm9GO3NCQUtJLE9BQUE7cUJBQ0Q7Z0JBZnFELE9Bbk1wRXVpRDs4QkFzTVUscUNBUkozbkQsUUFDQXVtQjs7Ozs7ZUFvREssV0FyUFhtaEM7ZUFvUE8sS0FBQTtnQkFjSSxPQXJGTGU7ZUF3RXdEO2dCQUFBOztnQkFJcEQ7Ozs2QkFDRXJqRDtxQkFDRTtzQkFFRSxPQUFBLCtCQTVEVm1oQjtzQkEyRFUsT0FBQSw2QkFGSm5oQjtxQkFHSSxPQUFBO29CQUNEO2VBVCtDLE9BblA5RHVpRDs2QkFxUG1CLHFDQXREYnBoQzs7Ozs7ZUE1Q1E7Z0JBRENnakMsU0E3Q1JqL0U7Z0JBNkNFcnJDLE9BN0NGcXJDO2dCQThDTzdwQjtnQkFDTjQvQyxVQUFVLDJCQUZUcGhFO2dCQUdEdXFILFlBQVUsMkJBSEhEO2dCQUlYO2dCQU9JOzs7NkJBQ0Vua0Q7cUJBQ0U7c0JBR0UsT0FBQSwrQkFiTm9rRDtzQkFZTSxPQUFBLCtCQWJObnBEO3NCQVlNLE9BQUEsNkJBRkorRTtxQkFJSSxPQUFBO29CQUNEO2VBYlQsT0F0Skp1aUQ7OzBCQXdKUSxxQ0FKQXRuRCxTQUNBbXBEOzs7d0JBRk0vb0c7O2VBK2VMO2dCQWJEZ3BHLFVBaGhCRG4vRTtnQkFpaEJEby9FOzJCQUFRanBHO21CQUNWO21CQUFBLE9Bdm5CSmtuRzs7Ozt3Q0EwbkJVdmlEO2dDQUNFO2lDQUVnQixPQUFBLDJCQVJwQnFrRDtpQ0FRTSxPQUFBO2lDQURBLE9BQUEsNkJBRkpya0Q7Z0NBR0ksT0FBQTsrQkFDRDs7NEJBUkMza0Q7a0JBV1Q7Z0JBQ0ksVUFBQSwyQkFiRGdwRzs7Z0JBZ0JHLFdBdm9CWC9CO2dCQXNvQk8sS0FBQTtpQkFrQkksT0FoQ0xnQztnQkFnQnVCO2lCQUFBLE9BQUEsMkJBakJyQkQ7aUJBaUJFeG1ELFVBQVU7aUJBQ1MsT0FBQSwyQkFsQnJCd21EO2lCQWtCRXZtRCxVQUFVO2lCQUFBO2lCQUNkO2lCQUlJOzs7OEJBQ0VrQztzQkFDRTt1QkFHRSxPQUFBLCtCQVZObEM7dUJBU00sT0FBQSwrQkFWTkQ7dUJBU00sT0FBQSw2QkFGSm1DO3NCQUlJLE9BQUE7cUJBQ0Q7Z0JBVlQsT0F4b0JOdWlEOzhCQTBvQlUsaUNBSkExa0QsU0FDQUM7Ozs7O2lDQThDRCxPQS9ESHdtRDtlQXFDSyxXQTdwQlhoQztlQTRwQk8sS0FBQTtnQkF3QkksT0E1RExnQztlQXNDdUI7Z0JBQUEsT0FBQSwyQkF2Q3JCRDtnQkF1Q0VFLFlBQVU7Z0JBQ1MsT0FBQSwyQkF4Q3JCRjtnQkF3Q0VHLFlBQVU7Z0JBQ1MsT0FBQSwyQkF6Q3JCSDtnQkF5Q0VqbUQsVUFBVTtnQkFBQTtnQkFDZDtnQkFRSTs7OzZCQUNFNEI7cUJBQ0U7c0JBSUUsT0FBQSwrQkFmTjVCO3NCQWNNLE9BQUEsK0JBZk5vbUQ7c0JBY00sT0FBQSwrQkFmTkQ7c0JBY00sT0FBQSw2QkFGSnZrRDtxQkFLSSxPQUFBO29CQUNEO2VBZlQsT0EvcEJOdWlEOzswQkFpcUJVO2tEQUxBZ0MsV0FDQUMsV0FDQXBtRDs7Ozs7ZUF5QmM7Z0JBQWxCM2xFLElBbGxCQ3lzQztnQkFrbEJpQixPQUFBLHFDQUFsQnpzQztlQUFrQixPQXZyQnhCOHBIOztlQXlyQlk7Z0JBRElrQyxTQW5sQlR2L0U7Z0JBbWxCSXcvRSxNQW5sQkp4L0U7Z0JBbWxCRHErRCxRQW5sQkNyK0Q7Z0JBb2xCRDIrRCxRQTF1Qkp5ZCw0QkF5dUJJL2Q7Z0JBRUFvaEIsV0FBUywyQkFEVDlnQjtnQkFFQTNvQyxTQUFTLDJCQUhKd3BEO2dCQUlMRSxZQUFVLDJCQUpBSDtnQkFLVkk7MkJBQVF4cEc7bUJBQVk7O29CQUlsQjs7O2lDQUNFMmtEO3lCQUNFOzBCQUdFLE9BQUEsK0JBWlIya0Q7MEJBV1EsT0FBQSwrQkFWUnpwRDswQkFTUSxPQUFBLDZCQUZKOEU7eUJBSUksT0FBQTt3QkFDRDttQkFWYSxPQTdyQjFCdWlEO2lDQStyQmlCLGdDQUxYb0MsVUFDQXpwRDs7OzRCQUVRNy9DO2tCQWNYO2dCQUNELFVBbkJJd29GOzs7O21CQTVyQkksT0FBVnBuRjs7bUJBdXVCVyxXQXR1Qlg2bEc7bUJBcXVCTyxLQUFBO29CQWlCSSxPQXZETHVDO21CQXVDbUQ7b0JBQUE7O29CQUsvQzs7O2lDQUNFN2tEO3lCQUNFOzBCQUlFLE9BQUEsK0JBckRWMmtEOzBCQW9EVSxPQUFBLCtCQW5EVnpwRDswQkFrRFUsT0FBQSwrQkFuRFZ5cEQ7MEJBa0RVLE9BQUEsNkJBRkoza0Q7eUJBS0ksT0FBQTt3QkFDRDttQkFaMEMsT0FwdUJ6RHVpRDtpQ0F1dUJVLGdDQTdDSm9DLFVBQ0F6cEQ7Ozs7O21CQWlGMkI7b0JBRHpCNHBEO29CQUN5QixPQTl3QmpDeEM7bUJBOHdCTyxLQUFBO29CQWtCSSxPQWpHTHVDO21CQStFbUU7b0JBQUE7O29CQUsvRDs7O2lDQUNFN2tEO3lCQUNFOzBCQU1FLE9BQUEsK0JBN0ZWNGtEOzBCQTRGVSxPQUFBLCtCQTdGVjFwRDswQkE0RlUsT0FBQSx1QkFaUjRwRDswQkFXUSxPQUFBLCtCQTVGVkg7MEJBMkZVLE9BQUEsK0JBMUZWenBEOzBCQXlGVSxPQUFBLDZCQUZKOEU7eUJBT0ksT0FBQTs7d0JBQ0Q7bUJBZDBELE9BNXdCekV1aUQ7OzhCQSt3QlUsZ0NBckZKb0MsVUFDQXpwRCxRQUNBMHBEOzs7OzttQkEwR0s7b0JBRkRHO29CQUVDLE9BeHlCWHpDO21CQXV5Qk8sS0FBQTtvQkFvQkksT0E1SEx1QzttQkF5RytDO29CQUFBOztvQkFNM0M7OztpQ0FDRTdrRDt5QkFDRTswQkFNRSxPQUFBLCtCQXhIVjRrRDswQkF1SFUsT0FBQSwrQkF4SFYxcEQ7MEJBc0hVLE9BQUEsK0JBdkhWeXBEOzBCQXNIVSxPQUFBLCtCQXJIVnpwRDswQkFvSFUsT0FBQSw2QkFGSjhFO3lCQU9JLE9BQUE7c0VBaEJOK2tEO3dCQWlCSzttQkFmc0MsT0F0eUJyRHhDOzs4QkEweUJVLGdDQWhISm9DLFVBQ0F6cEQsUUFDQTBwRDs7Ozs7bUJBcUlLO29CQUZGdGtEO29CQUVFLE9BbjBCWGdpRDttQkFrMEJPLEtBQUE7b0JBbUJJLE9BdEpMdUM7bUJBb0k4QztvQkFBQTs7b0JBSzFDOzs7aUNBQ0U3a0Q7eUJBQ0U7MEJBTUUsT0FBQSwrQkFsSlY0a0Q7MEJBaUpVLE9BQUEsK0JBbEpWMXBEOzBCQWdKVSxPQUFBLCtCQWpKVnlwRDswQkFnSlUsT0FBQSwrQkEvSVZ6cEQ7MEJBOElVLE9BQUEsNkJBRko4RTt5QkFPSSxPQUFBO3NFQWZQTTt3QkFnQk07bUJBZHFDLE9BajBCcERpaUQ7OzhCQW8wQlUsZ0NBMUlKb0MsVUFDQXpwRCxRQUNBMHBEOzs7OzttQkE4SjJCO29CQUR0QjVyQztvQkFDc0IsT0E1MUJqQ3NwQzttQkE0MUJPLEtBQUE7b0JBa0JJLE9BL0tMdUM7bUJBNkptRTtvQkFBQTs7b0JBSy9EOzs7aUNBQ0U3a0Q7eUJBQ0U7MEJBTUUsT0FBQSwrQkEzS1Y0a0Q7MEJBMEtVLE9BQUEsK0JBM0tWMXBEOzBCQXlLVSxPQUFBLCtCQTFLVnlwRDswQkF5S1UsT0FBQSwrQkF4S1Z6cEQ7MEJBdUtVLE9BQUEsNkJBRko4RTt5QkFPSSxPQUFBO3NFQWRMZ1o7d0JBZUk7bUJBZDBELE9BMTFCekV1cEM7OzhCQTYxQlUsZ0NBbktKb0MsVUFDQXpwRCxRQUNBMHBEOzs7Ozt1QkErTU1JO21CQUNKLFNBQUEsMkJBRElBO29CQUdDLFdBaDVCYjFDO29CQSs0QlMsS0FBQTtxQkFzQkksT0F0T1B1QztvQkFpTm1EO3FCQUFBOztxQkFTN0M7OztrQ0FDRTdrRDswQkFDRTsyQkFLRSxPQUFBLCtCQWxPWjRrRDsyQkFpT1ksT0FBQSwrQkFsT1oxcEQ7MkJBaU9ZLE9BQUEsK0JBbE9aeXBEOzJCQWlPWSxPQUFBLCtCQWhPWnpwRDsyQkErTlksT0FBQSw2QkFGSjhFOzBCQU1JLE9BQUE7O3lCQUNEO29CQWpCd0MsT0E5NEJ6RHVpRDs7K0JBaTVCWSxnQ0F2Tk5vQyxVQUNBenBELFFBQ0EwcEQ7Ozs7O21CQTJPWSxXQXo2QmxCdEM7bUJBdzZCYyxLQUFBO29CQWlCSCxPQTFQTHVDO21CQTBPd0Q7b0JBQUE7O29CQUtwRDs7O2lDQUNFN2tEO3lCQUNFOzBCQUlnQixPQUFBLDJCQXZDbEJnbEQ7MEJBdUNJLE9BQUE7MEJBREEsT0FBQSwrQkF2UFZMOzBCQXNQVSxPQUFBLCtCQXJQVnpwRDswQkFvUFUsT0FBQSw2QkFGSjhFO3lCQUtJLE9BQUE7d0JBQ0Q7bUJBWitDLE9BdjZCOUR1aUQ7aUNBMDZCVSxnQ0FoUEpvQyxVQUNBenBEOzs7OzttQkEyWjJCO29CQURqQitwRDtvQkFDaUIsT0F4bENqQzNDO21CQXdsQ08sS0FBQTtvQkFrQkksT0EzYUx1QzttQkF5Wm1FO29CQUFBOztvQkFLL0Q7OztpQ0FDRTdrRDt5QkFDRTswQkFNRSxPQUFBLCtCQXZhVjRrRDswQkFzYVUsT0FBQSwrQkF2YVYxcEQ7MEJBcWFVLE9BQUEsK0JBdGFWeXBEOzBCQXFhVSxPQUFBLCtCQXBhVnpwRDswQkFtYVUsT0FBQSw2QkFGSjhFO3lCQU9JLE9BQUE7c0VBZEFpbEQ7d0JBZUQ7bUJBZDBELE9BdGxDekUxQzs7OEJBeWxDVSxnQ0EvWkpvQyxVQUNBenBELFFBQ0EwcEQ7Ozs7O21CQWdRSztvQkFGRU07b0JBQUpuL0I7b0JBRUUsT0E5N0JYdThCO21CQTY3Qk8sS0FBQTtvQkFtQkksT0FqUkx1QzttQkFnUVk7b0JBQVJNLFVBQVEsMkJBSFRwL0I7b0JBSUNxL0IsVUFBUSwyQkFKTEY7b0JBSUs7b0JBQ1o7b0JBSUk7OztpQ0FDRWxsRDt5QkFDRTswQkFJRSxPQUFBLCtCQVhOb2xEOzBCQVVNLE9BQUEsK0JBWE5EOzBCQVVNLE9BQUEsK0JBNVFWanFEOzBCQTJRVSxPQUFBLDZCQUZKOEU7eUJBS0ksT0FBQTt3QkFDRDttQkFYVCxPQS83Qk51aUQ7OzhCQWk4QlUsZ0NBSkE0QyxTQUNBQyxTQW5RSmxxRDs7Ozs7bUJBdVIyQjtvQkFEekJtcUQ7b0JBQ3lCLE9BcDlCakMvQzttQkFvOUJPLEtBQUE7b0JBaUJJLE9BdFNMdUM7bUJBcVJtRTtvQkFBQTs7b0JBSy9EOzs7aUNBQ0U3a0Q7eUJBQ0U7MEJBS0UsT0FBQSwrQkFsU1Y0a0Q7MEJBZ1NVLE9BQUEsK0JBbFNWRDswQkFpU1UsT0FBQSwrQkFoU1Z6cEQ7MEJBK1JVLE9BQUEsNkJBRko4RTt5QkFNSSxPQUFBO3NFQWJScWxEO3dCQWNPO21CQWIwRCxPQWw5QnpFOUM7OzhCQXE5QlUsZ0NBM1JKb0MsVUFDQXpwRCxRQUNBMHBEOzs7Ozt1QkEwU0lVO3dCQUFBQTtvQkFsSEMsV0F0M0JYaEQ7b0JBcTNCTyxLQUFBO3FCQWtCSSxPQXhNTHVDO29CQXVMOEM7cUJBQUE7O3FCQUsxQzs7O2tDQUNFN2tEOzBCQUNFOzJCQUtFLE9BQUEsK0JBcE1WNGtEOzJCQW1NVSxPQUFBLCtCQXBNVjFwRDsyQkFtTVUsT0FBQSwrQkFwTVZ5cEQ7MkJBbU1VLE9BQUEsK0JBbE1WenBEOzJCQWlNVSxPQUFBLDZCQUZKOEU7MEJBTUksT0FBQTs7eUJBQ0Q7b0JBYnFDLE9BcDNCcER1aUQ7OytCQXUzQlUsZ0NBN0xKb0MsVUFDQXpwRCxRQUNBMHBEOzs7OzttQkE0VEs7b0JBakJIVzsrQkFBY2xxRzt1QkFBWTs7d0JBSXhCOzs7cUNBQ0Uya0Q7NkJBQ0U7OEJBSWdCLE9BQUEsMkJBWHBCc2xEOzhCQVdNLE9BQUE7OEJBREEsT0FBQSwrQkF0VFZYOzhCQXFUVSxPQUFBLCtCQXBUVnpwRDs4QkFtVFUsT0FBQSw2QkFGSjhFOzZCQUtJLE9BQUE7NEJBQ0Q7dUJBWG1CLE9BditCbEN1aUQ7cUNBeStCbUIsZ0NBL1Nib0MsVUFDQXpwRDs7O2dDQTRTZ0I3L0M7c0JBZWpCO29CQUVNLFVBQUEsMkJBbEJEaXFHOztvQkFvQlMsSUFBVEUsV0E1L0JWbEQ7b0JBNi9CUyxLQUFBLG1DQURDa0Q7cUJBdUJNLE9BQUEsbUNBdkJOQTsrQkFuQkZEOytCQTFTRlY7b0JBK1R5QjtxQkFBQSxPQUFBLDJCQXRCckJTO3FCQXNCRUcsWUFBVTtxQkFDUyxPQUFBLDJCQXZCckJIO3FCQXVCRUksWUFBVTtxQkFBQTtxQkFDZDtxQkFRSTs7O2tDQUNFMWxEOzBCQUNFOzJCQUlFLE9BQUEsK0JBZk4wbEQ7MkJBY00sT0FBQSwrQkFmTkQ7MkJBY00sT0FBQSwrQkEvVVp2cUQ7MkJBOFVZLE9BQUEsNkJBRko4RTswQkFLSSxPQUFBO3lCQUNEO29CQWZULE9BOS9CUnVpRDs7K0JBZ2dDWTtzREFKQWtELFdBQ0FDLFdBbFVOeHFEOzs7Ozs7b0JBOFhPLFdBM2pDYm9uRDtvQkEwakNTLE9BQUE7OEJBakZEaUQ7OEJBMVNGVjs7bUJBMFZhLElBQVRjLFdBemhDVnJEO21CQTJoQ1MsS0FBQSxtQ0FGQ3FEO29CQTJCTSxPQUFBLG1DQTNCTkE7OEJBaERGSjs4QkExU0ZWO21CQTZWeUI7b0JBQUEsT0FBQSwyQkFwRHJCUztvQkFvREVNLFlBQVU7b0JBQ1MsT0FBQSwyQkFyRHJCTjtvQkFxREVPLFlBQVU7b0JBQ1MsT0FBQSwyQkF0RHJCUDtvQkFzREVRLFlBQVU7b0JBQUE7b0JBQ2Q7b0JBU0k7OztpQ0FDRTlsRDt5QkFDRTswQkFLRSxPQUFBLCtCQWpCTjhsRDswQkFnQk0sT0FBQSwrQkFqQk5EOzBCQWdCTSxPQUFBLCtCQWpCTkQ7MEJBZ0JNLE9BQUEsK0JBL1daMXFEOzBCQThXWSxPQUFBLDZCQUZKOEU7eUJBTUksT0FBQTs7d0JBQ0Q7bUJBakJULE9BN2hDUnVpRDs7OEJBK2hDWTs7Z0NBTEFxRDtnQ0FDQUM7Z0NBQ0FDO2dDQWpXTjVxRDs7Ozs7bUJBOXJCSSxPQUFWeitDOzttQkFta0NnQztvQkFEcEIvUztvQkFBTHE4RztvQkFDeUIsT0Fsa0NoQ3pEO21CQWtrQ08sS0FBQTtvQkFrQkksT0FyWkx1QzttQkFvWWE7b0JBQVRtQixXQUFTLDJCQUZaRDtvQkFHR0UsV0FBUywyQkFIUHY4RztvQkFHTztvQkFDYjtvQkFJSTs7O2lDQUNFczJEO3lCQUNFOzBCQUlFLE9BQUEsK0JBWE5pbUQ7MEJBVU0sT0FBQSwrQkFYTkQ7MEJBVU0sT0FBQSwrQkFoWlY5cUQ7MEJBK1lVLE9BQUEsNkJBRko4RTt5QkFLSSxPQUFBO3dCQUNEO21CQVhULE9BbmtDTnVpRDs7OEJBcWtDVSxnQ0FKQXlELFVBQ0FDLFVBdllKL3FEOzs7OzJCQTlyQkksT0FBVnorQzs7O2dCQWt0QlcsV0FqdEJYNmxHO2dCQWd0Qk8sS0FBQTtpQkFpQkksT0FsQ0x1QztnQkFrQm1EO2lCQUFBOztpQkFLL0M7Ozs4QkFDRTdrRDtzQkFDRTt1QkFJRSxPQUFBLCtCQWhDVjJrRDt1QkErQlUsT0FBQSwrQkE5QlZ6cEQ7dUJBNkJVLE9BQUEsK0JBOUJWeXBEO3VCQTZCVSxPQUFBLDZCQUZKM2tEO3NCQUtJLE9BQUE7cUJBQ0Q7Z0JBWjBDLE9BL3NCekR1aUQ7OEJBa3RCVSxnQ0F4QkpvQyxVQUNBenBEOzs7OztlQThESyxXQTN2QlhvbkQ7ZUEwdkJPLEtBQUE7Z0JBZ0JJLE9BM0VMdUM7ZUE0RDhDO2dCQUFBOztnQkFJMUM7Ozs2QkFDRTdrRDtxQkFDRTtzQkFJRSxPQUFBLCtCQXZFVjRrRDtzQkFzRVUsT0FBQSwrQkF2RVYxcEQ7c0JBc0VVLE9BQUEsK0JBdEVWQTtzQkFxRVUsT0FBQSw2QkFGSjhFO3FCQUtJLE9BQUE7b0JBQ0Q7ZUFYcUMsT0F6dkJwRHVpRDs2QkEydkJtQixnQ0FoRWJybkQsUUFDQTBwRDs7Ozs7ZUF1YlM7Z0JBSkhzQixTQTFnQ0xoaEY7Z0JBMGdDQTYrRCxRQTFnQ0E3K0Q7Z0JBOGdDUSxPQUFBLCtCQUpIZ2hGO2dCQUdFLE9BQUEsK0JBSFBuaUI7ZUFFSCxPQXBoQ0ptZjt3QkFvaENJOztlQWhnQ1k7Z0JBREVpRCxTQVhYamhGO2dCQVdHa2hGLFNBWEhsaEY7Z0JBWURtaEYsWUFBVSwyQkFETkQ7Z0JBRUpFLFdBQVMsMkJBRkdIO2dCQUVIO2dCQUNiO2dCQUlJOzs7NkJBQ0VubUQ7cUJBQ0U7c0JBR0UsT0FBQSwrQkFYTnFtRDtzQkFVTSxPQUFBLCtCQVROQztzQkFRTSxPQUFBLDZCQUZKdG1EO3FCQUlJLE9BQUE7b0JBQ0Q7ZUFWVCxPQW5IRnVpRDs7MEJBcUhNLG1DQUpBOEQsV0FDQUM7Ozs7O2tCQWJDcGhGO2dCQXFoQ007aUJBSk1xaEYsS0FqaENacmhGO2lCQWloQ090N0IsUUFqaENQczdCO2lCQXFoQ00sT0FBQSwrQkFKTXFoRjtpQkFHTCxPQUFBLCtCQUhBMzhHO2dCQUVWLE9BM2hDSnM1Rzt5QkEyaENJOztlQTJCUztnQkFESXh4RyxRQTdpQ1Z3ekI7Z0JBNmlDTzN0QyxJQTdpQ1AydEM7Z0JBOGlDRDB2RCxPQUFPLDJCQURDcjlGO2dCQUVSaXZILFdBQVMsMkJBRkU5MEc7Z0JBR1grMEc7MkJBQVNsNUYsT0FBT2kxRixRQUFRa0U7bUJBQWlCLE9BcnBDL0NuRTtpQ0F1cENpQixXQUZhbUUsY0FGeEI5eEIsTUFDQTR4QjtxQ0FDZ0JoRTs7NEJBQVBqMUY7a0JBTVo7Z0JBQ0QsVUFWWWgyQjs7O2lCQVdFb3ZIOzs7NEJBR1YzbUQ7b0JBQ0U7cUJBSUUsT0FBQSwrQkFqQkp3bUQ7cUJBZ0JJLE9BQUEsK0JBakJKNXhCO3FCQWVJLE9BQUEsNkJBRko1MEI7b0JBS0ksT0FBQSxtQ0FSTTJtRDttQkFTUDtnQkFSTCxPQVRFRjs7ZUFxQkY7Z0JBQUE7OzJCQUVFem1EO21CQUNFO29CQUdFLE9BQUEsK0JBNUJKd21EO29CQTJCSSxPQUFBLCtCQTVCSjV4QjtvQkEyQkksT0FBQSw2QkFGSjUwQjttQkFJSSxPQUFBO2tCQUNEO2VBUEwsT0FyQkV5bUQ7O2VBdkJPO2dCQURGN3NILE1BeGhDSnNyQztnQkF3aENDMGhGLE1BeGhDRDFoRjtnQkF5aENEcTFCLE9BQU8sMkJBRExxc0Q7Z0JBRUZwc0QsU0FBUywyQkFGSjVnRTtnQkFHbUI4c0g7Z0JBQVJsRTsyQkFTbEJ4aUQ7bUJBQ0U7b0JBR0UsT0FBQSwrQkFkRnhGO29CQWFFLE9BQUEsK0JBZEZEO29CQWFFLE9BQUEsNkJBRkp5RjttQkFJSSxPQUFBO2tCQUNEO2dCQWRRenlDO2VBQWdDLE9BaG9DL0NnMUY7NkJBa29DaUIsV0FGYW1FLGNBRnhCbnNELE1BQ0FDO2lDQUNnQmdvRDs7d0JBQVBqMUY7O2VBc0RGO2dCQURHczVGLE9BaGxDVDNoRjtnQkFnbENNMTRCLE1BaGxDTjA0QjtnQkFpbENENGhGLFNBQU8sMkJBREF0Nkc7Z0JBRVB1NkcsY0FBYztnQkFFWnRxSDtrQkFBVywrQ0FKSG9xSDtnQkFHVnh4QixjQUVGLDJCQURJNTRGO2VBR04sR0Fuc0NGMjNEO2dCQXFzQ0k7aUJBQUE7O2lCQUlJOzs7OEJBQ0U0TDtzQkFDRTt1QkFJRSxPQUFBLCtCQWhCUnExQjt1QkFlUSxPQUFBLCtCQWhCUjB4Qjt1QkFlUSxPQUFBLCtCQWhCUkQ7dUJBZVEsT0FBQSw2QkFGSjltRDtzQkFLSSxPQUFBO3FCQUNEO2dCQVhULE9BOXJDSnVpRDs4QkFnc0NRLGdDQVZGdUUsUUFFQXp4Qjs7Ozs7ZUFzQmE7Z0JBQVgyeEI7a0JBQVc7Z0JBQ1hDO2tCQUFpQjtnQkFDakJDO2tCQUFpQjtnQkFDakIvN0Q7MkJBQU84N0IsU0FBU3o5RTttQkFBZTtvQkFDN0IwcUYsU0FBUywyQkFESzFxRjtvQkFEaEIyOUc7c0JBS0EsOEJBSmdCMzlHO3lCQURoQjA5Rzt5QkFEQUQ7bUJBSUYsT0FBQTtpREFESS95QixRQUZGaXpCLGtCQUNPbGdDO2tCQU9WO2dCQUNHQSxVQUFVLGdDQW5DWjYvQixRQXdCRUU7Z0JBWUE1L0IsWUFBVSw0QkFUVmo4QixLQVFBODdCLFNBcENRNC9CO2dCQXNDUnRHO3NCQURBbjVCLFdBQ3NCLDJCQXRDZHkvQjtlQXVDWixxQkFESXRHOztlQUlRO2dCQURFNkcsU0F6bkNYbGlGO2dCQXluQ0ltaUYsT0F6bkNKbmlGO2dCQXluQ0ZvaUYsT0F6bkNFcGlGO2dCQTBuQ0QybEUsVUFBVSwyQkFEWHljO2dCQUVDeGMsVUFBVSwyQkFGTHVjO2dCQUdMdGMsVUFBVSwyQkFIRXFjO2dCQUdGO2dCQUNkO2dCQUdJOzs7NkJBQ0VwbkQ7cUJBQ0U7c0JBSUUsT0FBQSwrQkFWTitxQztzQkFTTSxPQUFBLCtCQVZORDtzQkFTTSxPQUFBLCtCQVZORDtzQkFTTSxPQUFBLDZCQUZKN3FDO3FCQUtJLE9BQUE7b0JBQ0Q7ZUFWVCxPQWx1Q0Z1aUQ7OzBCQW11Q2UsOEJBSlQxWCxTQUNBQyxTQUNBQzs7Ozs7ZUFnQlU7Z0JBREp3YyxRQTNvQ0xyaUY7Z0JBMm9DRHVqQyxPQTNvQ0N2akM7Z0JBNG9DRHNpRixZQUFVLDJCQURWLytDO2dCQUVBZy9DLFlBQVUsMkJBRkpGO2dCQUVJO2dCQUNkO2dCQUdJOzs7NkJBQ0V2bkQ7cUJBQ0U7c0JBR0UsT0FBQSwrQkFUTnluRDtzQkFRTSxPQUFBLCtCQVRORDtzQkFRTSxPQUFBLDZCQUZKeG5EO3FCQUlJLE9BQUE7b0JBQ0Q7ZUFUVCxPQW52Q0Z1aUQ7NkJBb3ZDZSwrQkFIVGlGLFdBQ0FDOzs7OztlQTRDVTtnQkFEVEMsU0F4ckNBeGlGO2dCQXlyQ0R5aUYsWUFBVSwyQkFEVEQ7Z0JBQ1M7Z0JBQ2Q7Z0JBR0k7Ozs2QkFDRTFuRDtxQkFDRTtzQkFFRSxPQUFBLCtCQVJOMm5EO3NCQU9NLE9BQUEsNkJBRkozbkQ7cUJBR0ksT0FBQTtvQkFDRDtlQVJULE9BL3hDRnVpRDs2QkFneUNlLGdDQUZUb0Y7Ozs7OzBCQXpyQ0N6aUY7aUNBdXJDUSxPQWh5Q2ZtOUU7bURBb3dDbUNsZTs7O2lCQWtCcEI7a0JBSjJCeWpCLFNBenFDbkMxaUY7a0JBNnFDUSxPQUFBLCtCQUoyQjBpRjtrQkFHOUIsT0FBQSwrQkFqQnVCempCO2lCQWdCL0IsT0FuckNKK2U7MEJBbXJDSTs7Z0JBU1c7aUJBSjJCMkUsU0FockNuQzNpRjtpQkFvckNRLE9BQUEsK0JBSjJCMmlGO2lCQUc5QixPQUFBLCtCQXhCdUIxakI7Z0JBdUIvQixPQTFyQ0orZTt5QkEwckNJOzs7Z0JBWlc7aUJBSjJCNEUsU0FscUNuQzVpRjtpQkFzcUNRLE9BQUEsK0JBSjJCNGlGO2lCQUc5QixPQUFBLCtCQVZ1QjNqQjtnQkFTL0IsT0E1cUNKK2U7eUJBNHFDSTs7ZUFMVztnQkFKMkI2RSxTQTNwQ25DN2lGO2dCQStwQ1EsT0FBQSwrQkFKMkI2aUY7Z0JBRzlCLE9BQUEsK0JBSHVCNWpCO2VBRS9CLE9BcnFDSitlO3dCQXFxQ0k7O2VBeUNjLElBQVQ4RSxTQXRzQ0Y5aUYsV0FBQStpRixTQXNzQ0VELFdBdHNDRjlpRixTQUFBK2lGOzs7ZUF3c0NPO2dCQURIQyxPQXZzQ0poakY7Z0JBdXNDQWlqRixPQXZzQ0FqakY7Z0JBd3NDRGtqRixVQUFRLDJCQURQRDtnQkFFREUsVUFBUSwyQkFGSEg7Z0JBRUc7Z0JBQ1o7Z0JBR0k7Ozs2QkFDRWxvRDtxQkFDRTtzQkFHRSxPQUFBLCtCQVROcW9EO3NCQVFNLE9BQUEsK0JBVE5EO3NCQVFNLE9BQUEsNkJBRkpwb0Q7cUJBSUksT0FBQTtvQkFDRDtlQVRULE9BL3lDRnVpRDs2QkFnekNlLGdDQUhUNkYsU0FDQUM7Ozs7O2VBZVE7Z0JBREc1aUQsS0F2dENWdmdDO2dCQXV0Q01vakYsS0F2dENOcGpGO2dCQXd0Q0Q2c0UsUUFBUSwyQkFERHVXO2dCQUVQdFcsUUFBUSwyQkFGR3ZzQztnQkFFSDtnQkFDWjtnQkFHSTs7OzZCQUNFekY7cUJBQ0U7c0JBR0UsT0FBQSwrQkFUTmd5QztzQkFRTSxPQUFBLCtCQVRORDtzQkFRTSxPQUFBLDZCQUZKL3hDO3FCQUlJLE9BQUE7b0JBQ0Q7ZUFUVCxPQS96Q0Z1aUQ7NkJBZzBDZSxpQ0FIVHhRLE9BQ0FDOzs7OzttQkFjS3Q1RyxNQXZ1Q0p3c0MsV0F1dUNBazZCLEtBdnVDQWw2QjtlQXd1Q0wsT0FES2s2Qjs7a0JBK0JzQyxXQUFBLCtCQS9CbEMxbUU7a0JBK0JRLE9BOXdDbkJ3cUg7MkJBOHdDbUI7O2tCQWRGO21CQUFUdE0sU0FBUywyQkFqQk5sK0c7bUJBaUJNO21CQUNiO21CQUdJOzs7Z0NBQ0VzbkU7d0JBQ0U7eUJBRUUsT0FBQSwrQkFSTjQyQzt5QkFPTSxPQUFBLDZCQUZKNTJDO3dCQUdJLE9BQUE7dUJBQ0Q7a0JBUlQsT0E5MUNKdWlEO2dDQSsxQ2lCLCtCQUZUM0w7OztrQkFkUzttQkFBVDJSLFdBQVMsMkJBSE43dkg7bUJBR007bUJBQ2I7bUJBR0k7OztnQ0FDRXNuRTt3QkFDRTt5QkFFRSxPQUFBLCtCQVJOdW9EO3lCQU9NLE9BQUEsNkJBRkp2b0Q7d0JBR0ksT0FBQTt1QkFDRDtrQkFSVCxPQWgxQ0p1aUQ7Z0NBaTFDaUIsK0JBRlRnRzs7OzttQkE4QlVDLFVBeHdDWHRqRixXQXd3Q0t1akYsU0F4d0NMdmpGLFdBd3dDQzIzQyxPQXh3Q0QzM0M7c0JBd3dDQzIzQzs7eUJBQUFBOzs7c0JBRU02ckM7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7c0JBQU9pN0Y7c0JBQVBqN0Y7Ozs7eUJBRkNvdkQ7OztzQkFFTTZyQztzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztzQkFBT2k3RjtzQkFBUGo3Rjs7OztxQkFGQ292RDs7b0JBRU02ckM7b0JBQVBqN0Y7OztvQkFBT2k3RjtvQkFBUGo3Rjs7O3FCQUZDb3ZEOztvQkFFTTZyQztvQkFBUGo3Rjs7bUJBMENpQjtvQkExQ1ZrN0Y7b0JBQVBDO29CQUFPRixpQkFBQUM7b0JBQVBsN0YsVUFBQW03Rjs7ZUE0Q1M7Z0JBQVZ4UixVQUFVLDJCQTlDSnFSO2dCQStDTnBSLFdBQVcsMkJBL0NDbVI7Z0JBZ0RoQjtnQkFHSTs7OzZCQUNFeG9EO3FCQUNFO3NCQUdFLE9BQUEsK0JBVE5xM0M7c0JBUU0sT0FBQSwrQkFUTkQ7c0JBUU0sT0FBQSw2QkFGSnAzQztxQkFJSSxPQUFBO29CQUNEO2VBVFQsT0E3NUNGdWlEOzZCQTg1Q2UsV0EvQ0RtRyxnQkE0Q1J0UixTQUNBQzs7O3dCQTdDQzVwRjs7ZUE0RFU7Z0JBRFRvN0YsUUFyMENEM2pGO2dCQXMwQ0RpeUQsV0FBVywyQkFEVDB4QjtnQkFDUztnQkFDZjtnQkFHSTs7OzZCQUNFN29EO3FCQUNFO3NCQUVFLE9BQUEsK0JBUk5tM0I7c0JBT00sT0FBQSw2QkFGSm4zQjtxQkFHSSxPQUFBO29CQUNEO2VBUlQsT0E1NkNGdWlEOzZCQTY2Q2UsZ0NBRlRwckI7O3VCQTl6Q2EsT0FqSG5Ca3JCOzs7O2NBd0dNYyxnQkFETXJzRjs7T0FnMkNOLElBRE1vTyxzQkFDTixVQTUrQ0pxOEUsa0JBMitDVXI4RTs7O1NBRUM7U0FBQSxPQXA4Q2JxOUU7O1FBczhDUTtRQUFBLE9BdDhDUkE7Ozs7VUE0cERjLE9BaHFEZEY7O1VBeThDZ0IsZ0NBQUEsT0FyOENoQkU7O1VBODhDRTtXQVBFbnFIO1dBT0YsT0FBQSxxQ0FQRUE7V0FPRjtVQUFBLE9BOThDRm1xSDs7OzsrQkEyOENNdmlEO3VCQUNpQixXQUFBLDZCQURqQkE7dUJBQ2lCLE9BQUEsbUNBTG5CNW5FLEdBQUFBO3NCQUsrRDs7OztVQVdqRTtXQVBJNHJDO1dBT0osT0FBQSxxQ0FQSUE7V0FPSjtVQUFBLE9BdjlDRnUrRTs7OzsrQkFvOUNNdmlEO3VCQUNpQixXQUFBLDZCQURqQkE7dUJBQ2lCLE9BQUEsbUNBTGpCaDhCLEdBQUFBO3NCQUs2RDs7OztVQVdqRTtXQVBHMkc7V0FPSCxPQUFBLHFDQVBHQTtXQU9IO1VBQUEsT0FoK0NGNDNFOzs7OytCQTY5Q012aUQ7dUJBQ2lCLFdBQUEsNkJBRGpCQTt1QkFDaUIsT0FBQSxtQ0FMbEJyMUIsR0FBQUE7c0JBSzhEOzs7O1VBV2pFO1dBUEtyYztXQU9MLE9BQUEscUNBUEtBO1dBT0w7VUFBQSxPQXorQ0ZpMEY7Ozs7K0JBcytDTXZpRDt1QkFDaUIsV0FBQSw2QkFEakJBO3VCQUNpQixPQUFBLG1DQUxoQjF4QyxHQUFBQTtzQkFLNEQ7Ozs7Y0FLM0RpMUY7VUFDSixTQUFBLDJCQURJQTtXQUN3QjtXQUFBLE9BNytDaENoQjs7VUErK0NPLElBQUE7VUFBQSxPQS8rQ1BBOzs7OytCQW0vQ1F2aUQ7dUJBQ0U7d0JBRWdCLE9BQUEsMkJBVmxCdWpEO3dCQVVJLE9BQUE7d0JBREEsT0FBQSw2QkFGSnZqRDt1QkFHSSxPQUFBO3NCQUNEOzs7O1VBbUpUO1dBTlVra0Q7V0FNVixPQUFBLHFDQU5VQTtXQU1WO1VBQUEsT0Exb0RGM0I7Ozs7K0JBd29ETXZpRDt1QkFBc0IsV0FBQSw2QkFBdEJBO3VCQUFzQixPQUFBLG1DQUpoQmtrRDtzQkFJeUQ7Ozs7VUEzSXpEO1dBREgzL0M7V0FBSkM7V0FDRDRoQyxRQUFRLDJCQURQNWhDO1dBRUQ2aEMsUUFBUSwyQkFGSDloQztXQUdMOCtDO3NCQUFRbDFFO2NBQ1Y7O2VBR0k7Ozs0QkFDRTZ4QjtvQkFDRTtxQkFHRSxPQUFBLCtCQVZScW1DO3FCQVNRLE9BQUEsK0JBVlJEO3FCQVNRLE9BQUEsNkJBRkpwbUM7b0JBSUksT0FBQTttQkFDRDtjQVRULE9BaGdERnVpRDs0QkFpZ0RlLGdDQUpYbmMsT0FDQUM7Ozt1QkFDUWw0RDthQWFUO1dBQ0gsVUFqQlNvMkI7O1dBbUJxQjtZQURkdWtEO1lBQUxDO1lBQ21CLE9BamhEOUJ6RztXQWloREssS0FBQTtZQXNCSSxPQXRDTGU7V0FpQmE7WUFBVDJGLFNBQVMsMkJBRk5EO1lBR0hFLFNBQVMsMkJBSERIO1lBR0M7WUFDYjtZQVFJOzs7eUJBQ0U5b0Q7aUJBQ0U7a0JBSUUsT0FBQSwrQkFmTmlwRDtrQkFjTSxPQUFBLCtCQWZORDtrQkFjTSxPQUFBLCtCQWpDVjVpQjtrQkFnQ1UsT0FBQSw2QkFGSnBtQztpQkFLSSxPQUFBO2dCQUNEO1dBZlQsT0FsaERKdWlEO3lCQW9oRFEsZ0NBdkJKbmMsT0FtQkk0aUIsUUFDQUM7Ozs7O1VBdUJELE9BekNINUY7O1VBaURGO1dBTkV2ckg7V0FNRixPQUFBLHFDQU5FQTtXQU1GO1VBQUEsT0FoakRGeXFIOzs7OytCQThpRE12aUQ7dUJBQXNCLFdBQUEsNkJBQXRCQTt1QkFBc0IsT0FBQSxtQ0FKeEJsb0U7c0JBSStEOzs7O2NBSTdENHJIO2VBQUFBO1dBdkVPO1dBQUEsT0EzK0NibkI7O1VBK2pETztXQVpIK0I7c0JBQVEvMkY7Y0FDVjtjQUFBLE9BcGpERmcxRjs7OzttQ0F1akRRdmlEOzJCQUNFOzRCQUVnQixPQUFBLDJCQVJwQjBqRDs0QkFRTSxPQUFBOzRCQURBLE9BQUEsNkJBRkoxakQ7MkJBR0ksT0FBQTswQkFDRDs7dUJBUkN6eUM7YUFXVDtXQUNJLFVBQUEsMkJBYkRtMkY7O1dBZ0JHLFdBcGtEVHBCO1dBbWtESyxLQUFBO1lBa0JJLE9BaENMZ0M7V0FnQndCO1lBQUEsT0FBQSwyQkFqQnRCWjtZQWlCRTVuRCxXQUFXO1lBQ1MsT0FBQSwyQkFsQnRCNG5EO1lBa0JFM25ELFdBQVc7WUFBQTtZQUNmO1lBSUk7Ozt5QkFDRWlFO2lCQUNFO2tCQUdFLE9BQUEsK0JBVk5qRTtrQkFTTSxPQUFBLCtCQVZORDtrQkFTTSxPQUFBLDZCQUZKa0U7aUJBSUksT0FBQTtnQkFDRDtXQVZULE9BcmtESnVpRDt5QkF1a0RRLGlDQUpBem1ELFVBQ0FDOzs7Ozs0QkE4Q0QsT0EvREh1b0Q7VUFxQ0ssV0ExbERUaEM7VUF5bERLLEtBQUE7V0F3QkksT0E1RExnQztVQXNDd0I7V0FBQSxPQUFBLDJCQXZDdEJaO1dBdUNFd0YsYUFBVztXQUNTLE9BQUEsMkJBeEN0QnhGO1dBd0NFeUYsYUFBVztXQUNTLE9BQUEsMkJBekN0QnpGO1dBeUNFcG5ELFdBQVc7V0FBQTtXQUNmO1dBUUk7Ozt3QkFDRTBEO2dCQUNFO2lCQUlFLE9BQUEsK0JBZk4xRDtpQkFjTSxPQUFBLCtCQWZONnNEO2lCQWNNLE9BQUEsK0JBZk5EO2lCQWNNLE9BQUEsNkJBRkpscEQ7Z0JBS0ksT0FBQTtlQUNEO1VBZlQsT0E1bERKdWlEOztxQkE4bERROzZDQUxBMkcsWUFDQUMsWUFDQTdzRDs7Ozs7VUFvRVIsT0FscURBNy9DOztVQXduRGE7V0FETGpUO1dBQUx1OEc7V0FDQ2x3QixTQUFTLDJCQURWa3dCO1dBRUM3eEIsU0FBUywyQkFGTDFxRjtXQUVLO1dBQ2I7V0FHSTs7O3dCQUNFdzJEO2dCQUNFO2lCQUdFLE9BQUEsK0JBVE5rMEI7aUJBUU0sT0FBQSwrQkFUTjJCO2lCQVFNLE9BQUEsNkJBRko3MUI7Z0JBSUksT0FBQTtlQUNEO1VBVFQsT0F2bkRBdWlEO3dCQXduRGEsK0JBSFQxc0IsUUFDQTNCOzs7OztVQXVCUztXQURIdDZGO1dBQUxqQjtXQUNEaWlFLFNBQVMsMkJBRFJqaUU7V0FFRDZoRSxTQUFTLDJCQUZINWdFO1dBRUc7V0FDYjtXQUdJOzs7d0JBQ0VvbUU7Z0JBQ0U7aUJBR0UsT0FBQSwrQkFUTnhGO2lCQVFNLE9BQUEsK0JBVE5JO2lCQVFNLE9BQUEsNkJBRkpvRjtnQkFJSSxPQUFBO2VBQ0Q7VUFUVCxPQS9vREF1aUQ7d0JBZ3BEYSxrQ0FIVDNuRCxRQUNBSjs7Ozs7O09Bb0JFO1FBREs0dUQ7UUFBQ3BCLFNBQURvQjtRQUNMLFVBN3JESjNILGtCQTRyRFV1Rzs7OztXQU1MO1dBQUEsT0F2cURQekY7O1dBd3FEUztXQUFBLE9BeHFEVEE7O1dBeXFEUTtXQUFBLE9BenFEUkE7O1dBMHFEVTtXQUFBLE9BMXFEVkE7Ozs7Ozs7OzhCQTYxRDZCLE9BajJEN0JGO1lBMHFEK0I7WUFBQSxPQXRxRC9CRTs7O1VBcXFENEI7VUFBQSxPQXJxRDVCQTs7Y0FrMURJcHJIO1VBRlEsR0FBQSxnQ0EvS0RpeUg7V0FnTEMsV0FBQSwrQkFDUmp5SDtXQURRLE9BajFEWm9ySDs7VUF3MURFLElBQUEsT0FBQSxxQ0FORXBySCxJQU1GO1VBQUEsT0F4MURGb3JIOzs7OytCQXMxRE12aUQ7dUJBQXNCLFdBQUEsNkJBQXRCQTt1QkFBc0IsT0FBQSxtQ0FKeEI3b0U7c0JBSStEOzs7O1VBMUtyRDtXQURUMG9IO1dBQ0R6TSxVQUFVLDJCQURUeU07V0FDUztXQUNkO1dBR0k7Ozt3QkFDRTcvQztnQkFDRTtpQkFFRSxPQUFBLCtCQVJOb3pDO2lCQU9NLE9BQUEsNkJBRkpwekM7Z0JBR0ksT0FBQTtlQUNEO1VBUlQsT0E3cURBdWlEO3dCQThxRGEsZ0NBRlRuUDs7O1VBOENTO1dBREYvc0U7V0FBTDM4QjtXQUNGdThHLFdBQVMsMkJBRFB2OEc7V0FFRndzRixZQUFZLDJCQUZMN3ZEO1dBR1B3K0U7c0JBQVExMkU7Y0FDVjs7ZUFHSTs7OzRCQUNFNnhCO29CQUNFO3FCQUdFLE9BQUEsK0JBVlJrMkI7cUJBU1EsT0FBQSwrQkFWUit2QjtxQkFTUSxPQUFBLDZCQUZKam1EO29CQUlJLE9BQUE7bUJBQ0Q7Y0FUVCxPQTd0REZ1aUQ7NEJBOHREZSxpQ0FKWDBELFVBQ0EvdkI7Ozt1QkFDUS9uRDthQWFUO1dBQ0gsVUFqQlc5SDs7V0FtQnFCO1lBRGRnakY7WUFBTkM7WUFDb0IsT0E5dURoQ2hIO1dBOHVESyxLQUFBO1lBc0JJLE9BdENMdUM7V0FpQmM7WUFBVnB1QixVQUFVLDJCQUZONnlCO1lBR0pDLGFBQWEsMkJBSEhGO1lBR0c7WUFDakI7WUFRSTs7O3lCQUNFcnBEO2lCQUNFO2tCQUlFLE9BQUEsK0JBZk51cEQ7a0JBY00sT0FBQSwrQkFmTjl5QjtrQkFjTSxPQUFBLCtCQWpDVnd2QjtrQkFnQ1UsT0FBQSw2QkFGSmptRDtpQkFLSSxPQUFBO2dCQUNEO1dBZlQsT0EvdURKdWlEOztzQkFpdkRROzhDQXZCSjBELFVBbUJJeHZCLFNBQ0E4eUI7Ozs7O1VBdUJELE9BekNIMUU7O1VBOEhNLCtCQUFBLE9BMTFEVnRDOztVQW94RE87V0FiRnlDO1dBQ0R5QjtzQkFBUWw1RjtjQUNWO2NBQUEsT0F6d0RGZzFGOzs7O21DQTR3RFF2aUQ7MkJBQ0U7NEJBRWdCLE9BQUEsMkJBUnJCZ2xEOzRCQVFPLE9BQUE7NEJBREEsT0FBQSw2QkFGSmhsRDsyQkFHSSxPQUFBOzBCQUNEOzt1QkFSQ3p5QzthQVdUO1dBQ0ksVUFBQSwyQkFiRnkzRjs7OztjQWUyQixXQXh4RGhDMUM7Y0F3eERLLEtBQUE7ZUFNSSxPQXBCTG1FO2NBY29FLElBQUE7Y0FBQSxPQXR4RHhFbEU7K0NBeXhEbUJ2aUQsS0FBTyxPQUFQQSxJQUFVOzs7Y0FPRyxXQWx5RGhDc2lEO2NBa3lESyxLQUFBO2VBZ0JJLE9BeENMbUU7Y0F5QndCO2VBQUEsT0FBQSwyQkExQnZCekI7ZUEwQkd3RSxhQUFXO2VBQ1MsT0FBQSwyQkEzQnZCeEU7ZUEyQkd5RSxhQUFXO2VBQUE7ZUFDZjtlQUdJOzs7NEJBQ0V6cEQ7b0JBQ0U7cUJBR0UsT0FBQSwrQkFUTnlwRDtxQkFRTSxPQUFBLCtCQVRORDtxQkFRTSxPQUFBLDZCQUZKeHBEO29CQUlJLE9BQUE7bUJBQ0Q7Y0FUVCxPQW55REp1aUQ7O3lCQW95RGlCLGlDQUhUaUgsWUFDQUM7Ozs7O2NBa0J3QixXQXR6RGhDbkg7Y0FzekRLLEtBQUE7ZUF1QkksT0FuRUxtRTtjQTZDd0I7ZUFBQSxPQUFBLDJCQTlDdkJ6QjtlQThDRzBFLGFBQVc7ZUFDUyxPQUFBLDJCQS9DdkIxRTtlQStDRzJFLGFBQVc7ZUFDUyxPQUFBLDJCQWhEdkIzRTtlQWdERzRFLGFBQVc7ZUFBQTtlQUNmO2VBUUk7Ozs0QkFDRTVwRDtvQkFDRTtxQkFJRSxPQUFBLCtCQWZONHBEO3FCQWNNLE9BQUEsK0JBZk5EO3FCQWNNLE9BQUEsK0JBZk5EO3FCQWNNLE9BQUEsNkJBRkoxcEQ7b0JBS0ksT0FBQTttQkFDRDtjQWZULE9BeHpESnVpRDs7eUJBMHpEUTtpREFMQW1ILFlBQ0FDLFlBQ0FDOzs7OztVQXVCRCxPQXRFSG5EOzs7O1dBb0ZRLElBREUxOEQsa0JBQ0YsT0FBQSwrQkFERUE7V0FDRixPQTUxRFp3NEQ7Ozs7VUEwc0RjO1dBREozb0Q7V0FBTi8vRDtXQUNBb2hFLFVBQVUsMkJBRFZwaEU7V0FFQWc2RixXQUFXLDJCQUZMajZCO1dBRUs7V0FDZjtXQUdJOzs7d0JBQ0VvRztnQkFDRTtpQkFHRSxPQUFBLCtCQVRONnpCO2lCQVFNLE9BQUEsK0JBVE41NEI7aUJBUU0sT0FBQSw2QkFGSitFO2dCQUlJLE9BQUE7ZUFDRDtVQVRULE9BNXNEQXVpRDt3QkE2c0RhLCtCQUhUdG5ELFNBQ0E0NEI7Ozs7O1VBakJVO1dBREQ2dEI7V0FBTm1JO1dBQ0h4RCxZQUFVLDJCQURQd0Q7V0FFSEMsYUFBVywyQkFGRnBJO1dBRUU7V0FDZjtXQUdJOzs7d0JBQ0UxaEQ7Z0JBQ0U7aUJBR0UsT0FBQSwrQkFUTjhwRDtpQkFRTSxPQUFBLCtCQVROekQ7aUJBUU0sT0FBQSw2QkFGSnJtRDtnQkFJSSxPQUFBO2VBQ0Q7VUFUVCxPQTVyREF1aUQ7O3FCQTZyRGEsa0NBSFQ4RCxXQUNBeUQ7Ozs7O09Bb0tTLE9BbDJEYnJ0Rzs7V0FvMkRZc3RHLDZCQUFBQTs7OztXQUVFLE9BdjJEZDFIOztXQXkyRGdCLGlDQUFBLE9BcjJEaEJFOztXQTQyREU7WUFORWhoRDtZQU1GLE9BQUEsZ0NBTkVBO1lBTUY7V0FBQSxPQTUyREZnaEQ7Ozs7Z0NBMDJETXZpRDt3QkFBc0IsV0FBQSw2QkFBdEJBO3dCQUFzQixPQUFBLG1DQUp4QnVCO3VCQUkrRDs7OztPQU50RDtPQUFBLE9BcDJEYmdoRDs7T0FnM0RGLElBRGUxcEMsZ0JBQ2YsT0FEZUE7Ozs7bUJBbjNEYndwQzttQkFBQUE7aUJBdzNESzs7O1lBTVAySCxRQUFZQyxjQUF1Qmg1QixPQUFlOWhEO0lBQ3BEO0tBRXNDLFdBQUMsZ0NBSEY4aEQ7S0FHeEIsV0FBQTtLQUFYLFdBQUM7S0FBRCxPQUFBLDZCQUhrRDloRDtLQUU1QztXQUFBLDZDQUZNODZFO0lBR1osT0FBQTtHQUNEO1lBRUNDLGNBQ0VqMUYsVUFBdUJ3VixrQkFBc0Nva0Q7SUFDakUsWUFESTU1RDs7aUJBQUFBO1VBR1dzckYsWUEvNERiNkIsUUE0NER5QjMzRSxrQkFBc0Nva0Q7TUFLL0QsV0FGYTB4Qjs7OztTQUdUeHFIO1FBTkZrL0I7O09BT1d5dEYsY0FuNURiTixRQTQ0RHlCMzNFLGtCQUFzQ29rRDt1QkFTM0NxeEIsYUFBVyxPQUFBLFdBSDNCbnFILElBR2dCbXFILE1BQW9CO01BQXhDLFdBQUssdUNBRlF3Qzs7O0lBR1I7R0FDTjtZQUVDNW9ELEtBRUcwa0IsUUFDQWhsQyxVQUNBdmtCLFVBQ0F3VixrQkFDRG9rRDtJQUNHO0tBRUwsT0FsNkRBdXpCLFFBODVERzMzRSxrQkFDRG9rRCxVQUpDclEsUUFDQWhsQyxVQUNBdmtCO0tBSTRCNUg7S0FBakJwUztLQUFYa3ZHOzs7YUFBNEI5OEY7O2NBNUIvQjI4RixzQ0E0QitCMzhGOztLQTJDdkIsT0FBQSx1QkEzQ0w4OEYsVUFBV2x2RztPQUZaNHpFO0tBMkN3QjtNQUFUazdCLFNBM0NmbDdCO01BMkN3QixPQUFBLGdDQUFUazdCO2FBQVM7OztJQU5wQjtLQUFBLFdBL0ROQztLQStETSxPQUFBO0tBQUE7O0tBTE0sV0FBQztLQUFEO3lCQUhNLE9BQUEsV0FqQ2Z4ckMsY0FpQ2dFO0lBSDNDO2dCQUVSO0tBRlEsV0FDUjtLQURGLFdBQUE7Z0JBRko7eUJBRkUsT0FBQSxXQTFCVEEsY0EwQm9FO0lBTi9EO0tBQUE7O1FBQ0U7Ozs7Z0JBbkJQdnBEOzs7S0FpQlcsV0FBQTtLQUZWLFdBQ0U7S0FERixPQUFBO0tBRE0sV0FBQTtLQUZWLFdBQ0U7S0FGSSxXQUFBO0lBQ04sT0FBQTtHQThDSDs7OztPQXA1RUdpcUY7T0F5QkFLO09BNEJBQztPQWlDQUM7T0FFQXhyRDtPQWlDQTByRDtPQXlEQVc7T0FvQkFFO09Bd0hBWTtPQXlGSUU7T0FRQUM7T0FPQUM7T0FPQUM7T0FPUkU7T0FBQUM7T0FDQUM7T0FBQUM7T0FBQUk7T0FBQUM7T0FRSUM7T0FxNERBNEg7T0FNQUU7T0FjQXB3RDs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7O1lDNTFFQUEsS0FBTy9qRTtJQUFNO0tBQTZCLFVBQUM7S0FBZCxVQUFBLG9DQUF0QkE7SUFBbUMsT0FBQTtHQUFpQjttQ0FBM0QrakU7Ozs7RTs7Ozs7O0dDRlM7O0lBQVRzd0Q7c0JBQUFBOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDQ0pqc0g7SUFLQUU7SUFLQUU7SUFLQUU7SUFLQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXJCQTBySCxPQUNBeHFIO0lBQUE7Y0FBQSw4QkFBQUE7Y0FBQSw4QkFBQUE7R0FFVztZQUhYeXFILFNBQ0EveUg7SUFBQSxPQUFBLG9DQURBOHlILFFBQ0E5eUg7R0FFVztHQUZYLFNBQUFnekgsY0FBQXBxSDtJQUFBLFVBQUFBLHFDQUFBQTtnQkFBQUE7O01BQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7Ozs7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7SUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDO0dBRVc7WUFGWHFxSCxxQkFBQSx5QkFFVztZQUVYQyxPQUNBNXFIO0lBQUE7U0FEQXNDO0tBQ0EsK0JBQUF0QztLQURBLFdBRU0sK0JBRE5BLFdBREFzQztLQUFBLE9BQUEsK0JBQ0F0Qzs7UUFEQXVDO0lBQ0EsK0JBQUF2QztJQURBLFdBR00sK0JBRk5BLFdBREF1QztJQUFBLE9BQUEsK0JBQ0F2QztHQUVhO1lBSGI2cUgsU0FDQW56SDtJQUFBLE9BQUEsb0NBREFrekgsUUFDQWx6SDtHQUVhO0dBRmIsU0FBQW96SCxjQUFBeHFIO0lBQUEsVUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7O09BQUEsT0FBQSw4Q0FBQTlCLFVBQUE4Qjs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBOUIsVUFBQThCOzs7OztZQUFBeUU7a0NBQUFBO2FBQUFVO1lBQUFBLG1CQUFBQTtVQUFBO1dBQUFDLE9BQUFEO1dBQUFFLE9BQUEscURBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQW5ILFVBQUF1RyxLQUFBekU7O2tDQUFBeUU7YUFBQUM7WUFBQUEsaUJBQUFBO1VBQUE7V0FBQUMsS0FBQUQ7V0FBQUUsT0FBQSxxREFBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBMUcsVUFBQXVHLEtBQUF6RTs7OztRQUFBLE9BQUEsOENBQUE5QixVQUFBOEI7Ozs7SUFBQSxPQUFBLDhDQUFBOUIsVUFBQThCO0dBRWE7WUFGYnlxSDtJQUFBO0tBQ0k7TUFBQTlsSDtNQUFBQyxPQUFBLG9EQUFBRDtLQUFBLG1DQUFBQzs7SUFDQTtLQUFBUTtLQUFBQyxPQUFBLG9EQUFBRDtJQUFBLG1DQUFBQztHQUFTO1lBRWJxbEgsT0FDQWhySDtJQUFBO2NBQUEsOEJBQUFBO2NBQUEsOEJBQUFBO0dBRU07WUFITmlySCxTQUNBdnpIO0lBQUEsT0FBQSxvQ0FEQXN6SCxRQUNBdHpIO0dBRU07R0FGTixTQUFBd3pILGNBQUE1cUg7SUFBQSxVQUFBQSxxQ0FBQUE7Z0JBQUFBOztNQUFBLE9BQUEsOENBQUE1QixVQUFBNEI7Ozs7Ozs7O2tCQUFBO3NEQUFBNUIsVUFBQTRCOzs7O2tCQUFBO3NEQUFBNUIsVUFBQTRCOzs7O09BQUEsT0FBQSw4Q0FBQTVCLFVBQUE0Qjs7O0lBQUEsT0FBQSw4Q0FBQTVCLFVBQUE0QjtHQUVNO1lBRk42cUgscUJBQUEseUJBRU07WUFFTkMsUUFDQXBySDtJQUFBO2NBQUEsOEJBQUFBO2NBQUEsOEJBQUFBO0dBRU07WUFITnFySCxVQUNBM3pIO0lBQUEsT0FBQSxvQ0FEQTB6SCxTQUNBMXpIO0dBRU07R0FGTixTQUFBNHpILGVBQUFockg7SUFBQSxVQUFBQSxxQ0FBQUE7Z0JBQUFBOztNQUFBLE9BQUEsOENBQUExQixVQUFBMEI7Ozs7Ozs7O2tCQUFBO3NEQUFBMUIsVUFBQTBCOzs7O2tCQUFBO3NEQUFBMUIsVUFBQTBCOzs7O09BQUEsT0FBQSw4Q0FBQTFCLFVBQUEwQjs7O0lBQUEsT0FBQSw4Q0FBQTFCLFVBQUEwQjtHQUVNO1lBRk5pckgsc0JBQUEseUJBRU07O0lBRU5uMUc7SUFBQUM7O0tBQUFEO2NBQ0FwVyxLQUFBdEk7TUFBQSwrQkFBQXNJO01BQUEsK0JBQUFBO01BaEJBNHFILE9BZ0JBNXFILEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFYQWdySCxPQVdBaHJILEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFOQW9ySCxRQU1BcHJILEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFOQW9ySCxRQU1BcHJILEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFOQW9ySCxRQU1BcHJILEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFOQW9ySCxRQU1BcHJILEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSxPQUFBLCtCQUFBQTtLQU9DOztLQVJEcVcsZUFDQTNlLEdBQUEsT0FBQSxvQ0FEQTBlLElBQ0ExZSxHQU9DO1lBUEQ2aUIsWUFBQWphO0ksVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRWtySDtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQU5GampIO01BQUFDO2NBQUFMO0tBQUE7OztPQUFBTTs7T0FBQUM7T0FBQUM7OEJBQUFBOytCQUFBQTtnQ0FBQUE7aUNBQUFBO2tDQUFBQTttQ0FBQUE7WUFBQTtjQUFBOzthQUFBSDtrQkFBQUcsWUFBQSxtQ0FBQUg7O21CQUVFLG1DQUFBNGlIO1lBRkY3aUg7aUJBQUFJLFlBRUUsbUNBRkZKOztZQUVFLElBQUFLLFNBWkZpaUgsY0FVQW5pSDtZQUVFMGlILG1CQUFBeGlIOztrQkFDQSxtQ0FBQXlpSDtXQUhGOWlIO2dCQUFBSSxZQUdFLG1DQUhGSjs7V0FHRSxJQUFBTSxXQVJGb2lILGVBS0F2aUg7V0FHRTJpSCxxQkFBQXhpSDs7aUJBQ0EsbUNBQUF5aUg7VUFKRi9pSDtlQUFBSSxZQUlFLG1DQUpGSjs7VUFJRSxJQUFBTyxXQVRGbWlILGVBS0F2aUg7VUFJRTRpSCxvQkFBQXhpSDs7Z0JBSEEsbUNBQUFxaUg7U0FERjVpSDtjQUFBSSxZQUNFLG1DQURGSjs7U0FDRSxJQUFBb0ksV0FoQkY4NUcsY0FlQS9oSDtTQUNFeWlILG1CQUFBeDZHOztlQUlBLG1DQUFBNDZHO1FBTEZoakg7YUFBQUksWUFLRSxtQ0FMRko7O1FBS0UsSUFBQXFJLFdBVkZxNkcsZUFLQXZpSDtRQUtFNmlILG9CQUFBMzZHOztjQUNBLG1DQUFBNDZHO09BTkZqakg7WUFBQUksWUFNRSxtQ0FORko7O09BTUUsSUFBQXlxQixXQVhGaTRGLGVBS0F2aUg7T0FNRThpSCxtQkFBQXg0Rjs7a0JBTkZ2cUI7O1FBQUEsbUNBQUFGO01BQUEsVUFBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBOUosZUFBQXdCOztRQUFBLG1DQUFBdUk7TUFBQSxVQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUEvSixlQUFBd0I7O0tBQ0U7TUFBQSxVQUFBLG1DQUFBa3JIO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQzs7O09BQUFDO09BREFDO09BREFDO09BREFDO09BREFDO09BREFDO01BREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7O0tBTkY7TUFBQTs7O2dCQU1FLG1DQUFBRDs7O01BTkY7OztnQkFLRSxtQ0FBQUQ7OztNQUxGOzs7Z0JBSUUsbUNBQUFEOzs7TUFKRjs7O2dCQUdFLG1DQUFBRDs7O01BSEY7OztnQkFFRSxtQ0FBQUQ7OztNQUZGOzs7Z0JBQ0UsbUNBQUFEOzs7S0FERixPQUFBO2tEQUFBMXNILFVBQUF3Qjs7SUFBQSxPQUFBLCtDQUFBeEIsVUFBQXdCOztZQUFBd2E7SUFBQTtLQU1Fc3hHO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBS0E5aUgsTUFYRjRoSCxlQVdFYTtLQUFBeGlILDBCQUFBRDtLQURBRSxRQVZGMGhILGVBVUVjO0tBQUF2aUgsNkJBQUFELFFBQ0FEO0tBRkFHLFFBVEZ3aEgsZUFTRWU7S0FBQXRpSCw2QkFBQUQsUUFDQUQ7S0FGQStILFFBUkYwNUcsZUFRRWdCO0tBQUF6NkcsOEJBQUFELFFBQ0E3SDtLQUZBK0gsUUFaRm81RyxjQVlFcUI7S0FBQXg2Ryw0QkFBQUQsUUFDQUQ7S0FGQTZpQixRQWhCRm8yRixjQWdCRTBCO0tBQUE3M0YsNEJBQUFELFFBQ0EzaUI7SUFGRixzQkFDRTRpQjtHQU1EO1lBRUc4M0YsT0FBVUMsS0FBVTEySDtJQUNaLElBQU55dUMsTUFBTSwrQkFEWXp1QztJQUV0QixPQUZZMDJILFVBQ1Jqb0YsV0FBQUE7R0FLTDtZQUVHa29GLFFBQXdCOWhGLEdBQUssT0FBTEEsVUFBa0I7WUFFMUN6ekMsR0FBTXMxSCxLQUFLMTJIO0lBQVc7S0FNbkIsTUFSSDIySCxRQVFXLCtCQU5BMzJIO0tBS1AsTUFQSjIySCxRQU9ZLCtCQUxEMzJIO0tBSVAsTUFOSjIySCxRQU1ZLCtCQUpEMzJIO0tBR04sTUFMTDIySCxRQUthLCtCQUhGMzJIOztJQUFXLFdBVnRCeTJILE9BVU1DLEtBQUsxMkg7R0FPZDtZQUVHNDJILGdCQUFtQnJyRCxHQUFTdE07SUFBYyxhQUF2QnNNLElBQW1DLDRCQUExQnRNO0dBQXlDO1lBRXJFNDNELGlCQUFvQnBvRjtJQUN0QjtLQUdHLE1BTkRtb0YsZ0JBRW9Cbm9GO0tBR25CLE1BTERtb0YsZ0JBRW9Cbm9GO0tBR25CLE1BQUE7S0FEQSxNQUpEbW9GLGdCQUVvQm5vRjtLQUVuQixNQUFBO0tBREgsTUFIRW1vRixnQkFFb0Jub0Y7SUFFbkIsT0FBQTtHQUUrQjtZQUVoQ3FvRixlQUFrQnJvRjtJQUNwQixZQURvQkE7O1NBR2hCQztLQUFRLE9BQUEsK0JBQVJBOztRQURBTTtJQUFRLE9BQUEsK0JBQVJBO0dBRUg7WUFFQytuRixVQUFhdG9GO0lBQ2Y7S0FBZ0MsTUFiOUJvb0YsaUJBWWFwb0Y7S0FDTixNQVBQcW9GLGVBTWFyb0Y7S0FDTixNQUFBO0lBQUEsT0FBQTtHQUE0Qzs7OztPQWhFdkQ4bEY7T0FBQUM7T0FDQUM7T0FBQUM7T0FJQUM7T0FBQUM7T0FDQUM7T0FBQUM7T0FJQUM7T0FBQUM7T0FDQUM7T0FBQUM7T0FJQUM7T0FBQUM7T0FDQUM7T0FBQUM7T0FJQW4xRztPQUFBQztPQUNBa0U7T0FBQU87T0FTSTR4RztPQVFBRTtPQUVBdjFIO09BU0F3MUg7T0FFQUM7T0FNQUM7T0FNQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDN0RBQyxTQUFXeCtGO0lBQTBCLFdBQUE7SUFBckIsT0FBQSw0QkFBTEE7R0FBbUQ7WUFDOUR5K0YsU0FBV3orRjtJQUEwQixXQUFBO0lBQXJCLE9BQUEsNEJBQUxBO0dBQTBEO1lBRXJFMCtGLGlCQUFvQnIxSDtJQUErQixTQUNqRHMxSCxJQUFPN2pFLEdBQ1QsZ0JBRFNBLElBQ2E7SUFDeEIsWUFIc0J6eEQ7O1NBSVo2c0M7aUNBQUFBOztRQVNBRCxnQkFNYzJvRixRQW5CRnYxSDs7Ozs7aUJBQUFBO1NBbUJFdTFIO1VBbkJGdjFILFFBQUFBO1dBQUFBO29DQWFaNHNDOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZDQUFBQSx3QkFaTjBvRjt3QkFBQUE7c0JBQUFBO29CQUFBQTs7OztjQURrQnQxSCxRQUFBQTtZQUFBQTtPQWNiLEdBaEJQbzFILFNBZVF4b0Y7b0NBQUFBLHFCQUFBQTs7OztVQWJZNXNDO1dBQUFBLFFBQUFBO3FDQWFaNHNDOztxQkFBQUE7O3VCQUFBQTs7eUJBQUFBOzsyQkFBQUE7OzZCQUFBQTs2QkFoQlJ1b0Y7K0JBZ0JRdm9GO3dDQThFMEMsbUJBOUUxQ0E7O2lDQUFBQTs7bUNBQUFBOztxQ0FBQUE7MERBQUFBLHFCQVpOMG9GO3FDQUFBQTttQ0FBQUE7aUNBQUFBOzs7O3VCQUFBQTtxQkFBQUE7OztlQURrQnQxSCxRQUFBQTtrQ0FhWjRzQyxxQkFrRFMsT0E5RGYwb0Y7a0NBWU0xb0YscUJBK0NTLE9BM0RmMG9GO2tDQVlNMW9GLHNCQWdEVSxPQTVEaEIwb0Y7a0NBWU0xb0YsbUJBaURPLE9BN0RiMG9GO2tDQVlNMW9GLGVBb0RHLE9BaEVUMG9GO2tDQVlNMW9GLGdCQW1ESSxPQS9EVjBvRjs7K0JBWU0xb0Ysb0NBQUFBO1NBcUREO1FBUEU7Ozs7VUEzRFc1c0M7V0FBQUE7WUFBQUE7c0NBYVo0c0M7eUNBQUFBLGdCQVpOMG9GO29CQUFBQTs7Z0JBRGtCdDFILFFBQUFBO3FDQWFaNHNDOztxQkFBQUE7O3VCQUFBQTs7eUJBQUFBOzsyQkFBQUE7OzZCQUFBQTs2QkFoQlJ1b0Y7K0JBZ0JRdm9GO3dDQStEMEMsbUJBL0QxQ0E7O2lDQUFBQTs7bUNBQUFBOztxQ0FBQUE7MERBQUFBLHdCQVpOMG9GO3FDQUFBQTttQ0FBQUE7aUNBQUFBOzs7O3VCQUFBQTtxQkFBQUE7OztpQkFEa0J0MUgsUUFBQUEsUUFBQUE7a0NBYVo0c0MscUJBd0NTLE9BcERmMG9GO2tDQVlNMW9GLHFCQXFDUyxPQWpEZjBvRjtrQ0FZTTFvRixzQkFzQ1UsT0FsRGhCMG9GO2tDQVlNMW9GLG1CQXVDTyxPQW5EYjBvRjs7K0JBWU0xb0Ysb0NBQUFBO1NBeUNEO1FBTEU7OztLQWdFSjs7SUE3RkwsR0FEc0Iyb0Y7Z0RBTmQzb0Y7O3dCQWVZLE9BM0JsQjBvRjtnQ0FZTTFvRixlQWFTLE9BekJmMG9GO2dDQVlNMW9GLGdCQWdCWSxPQTVCbEIwb0Y7Z0NBWU0xb0YsYUFrQlMsT0E5QmYwb0Y7Z0NBWU0xb0YsZ0JBWVUsT0F4QmhCMG9GO2dDQVlNMW9GLGVBaUJTOzs7Z0NBakJUQSxxQkFXZSxPQXZCckIwb0Y7Z0NBWU0xb0YscUJBUWUsT0FwQnJCMG9GO2dDQVlNMW9GLHNCQVNnQixPQXJCdEIwb0Y7Z0NBWU0xb0YsbUJBVWEsT0F0Qm5CMG9GO2dDQVlNMW9GLG1CQWNlLE9BMUJyQjBvRjs7OzsrQkFZTTFvRixxQkF1QmlCLE9BbkN2QjBvRjsrQkFZTTFvRixxQkFvQmlCLE9BaEN2QjBvRjsrQkFZTTFvRixzQkFxQmtCLE9BakN4QjBvRjsrQkFZTTFvRixtQkFzQmUsT0FsQ3JCMG9GOytCQVlNMW9GLGVBeUJXLE9BckNqQjBvRjsrQkFZTTFvRixnQkF3QlksT0FwQ2xCMG9GOytCQVlNMW9GLGVBbUJXOztnQ0FuQlhBO2tEQUFBQSxPQVpOMG9GLFFBWU0xb0Y7Y0FaTjBvRjtHQWtITDsrQkF0SEdILFVBQ0FDLFVBRUFDOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDQ0FuM0QsdUJBQTJCMm9CO3lCQUd0QixPQUFBLFdBSHNCQSxXQUdNO0lBQWpDLE9BQUE7R0FFRDs7SUFPSztLQURFa1Y7T0FDRjtJQUdGLEdBSklBO0tBS0Y7O0tBQ0E7O0lBQUE7R0FHSDtHQVpIO0lBREV5NUIsY0FDRjtZQWdCRUMsUUFBWTV1Qzt5QkFHUCxPQUFBLFdBSE9BLFdBR3FCO0lBQWpDLE9BQUE7R0FFRDtZQUVDNnVDLGNBRUc3dUM7SUFESDtLQU9NNXFCO0tBRkEwNUQ7S0FETUM7S0FBQzc1RCxhQUFENjVEO0tBRU5oaEQ7SUFJRCxTQUNINTFFLE9BQVVSLE1BQU1HLFNBQVN1ckYsTUFBTStOOzBCQUUvQixPQUFPLFdBWk5wUixZQVU4Qm9SLFVBRUU7S0FEQSxPQUFBLG9DQURqQnQ1RixVQUFOSCxNQUFlMHJGO0lBRzFCOztlQUhDbHJGLG9DQUpJaTlEO2VBSUpqOUQscUNBSklpOUQ7ZUFJSmo5RCxxQ0FQVys4RDs7V0FPWC84RCx3Q0FQVys4RDtlQU9YLzhELHFDQVBXKzhEOzs7UUFPWC84RCw0Q0FQVys4RDs7Z0JBT1gvOEQsa0NBUFcrOEQ7O1dBT1gvOEQscUNBUFcrOEQ7O1dBT1gvOEQsd0NBUFcrOEQ7Z0JBT1gvOEQsb0NBUFU0Mkg7Z0JBT1Y1MkgsbUNBUFU0Mkg7Z0JBT1Y1Mkgsb0NBTkkyMkg7Z0JBTUozMkgsbUNBTEk0MUU7Z0JBS0o1MUUsc0NBUFU0Mkg7SUFXZCxXQUpJNTJILG1DQVBVNDJIO0dBeUVmO1lBRUdDLFlBQWdCaHZDLFFBQVN2cEQsVUFBc0JnUDtJQUNqRCxPQURpREE7O09BR25DO1FBRE9DLFNBRjRCRDtRQUV2Q3dwRixZQUZ1Q3hwRjtRQUczQzdOLFFBQVEsMkJBRE84TixRQUFYdXBGO09BRVIsV0FBQyxvQ0FER3IzRjs7T0FHUTtRQURRK04sV0FMMkJGO1FBS2pDOXVDLE9BTGlDOHVDO1FBTTNDeXBGLFVBQVEsNEJBREV2NEgsTUFBTWd2QztPQUVwQixXQUFDLG9DQURHdXBGOztXQUVZOXdHLFdBUitCcW5CO1lBQXRCaFA7UUFlVCxXQUFDLHFDQWZRQTs7a0JBYXZCLHFDQUxjclk7a0JBSWQscUNBSmNBO2tCQUdkLHFDQUhjQTtrQkFFZCxxQ0FWdUJxWTtPQVFrQyxXQXZIM0Q0Z0MsdUJBK0dnQjJvQjs7R0FnQmpCO1lBRUNtdkMsWUFBZ0JudkMsUUFBUXY2QztJQUMxQixTQUQwQkE7bUJBU3RCLHFDQVRjdTZDO0tBT0EsV0FDZCxxQ0FSY0E7O2tCQUtkLG9DQUxjQTtJQUdJLFdBQ2xCLG9DQUpjQTtHQVdqQjtZQUVDb3ZDLFFBQVl0M0gsU0FBVUgsTUFBTTAzSDtJQUM5QjtLQU9jLFVBQUE7ZUFBVix5Q0FSMEJBO0tBTWIsVUFBQTtLQUFYLFVBQUMsNkNBTmlCMTNIO2VBS3VCLG9DQUxqQ0c7S0FLUSxVQUFDO0tBQVgsVUFBQTtLQUZWLFVBQ0U7S0FGSSxVQUFBO0lBQ04sT0FBQTtHQU9EO1lBRUN3akUsS0FDRTBrQixRQUF5QnZwRCxVQUF1QmdQO0lBQXVCOzs7UUEyQnZFOzs7OztRQS9LRmtwRjs7U0EwS0U7Ozs7OztlQXpKRkMsUUFtSUU1dUM7S0FrQkUsTUE1Q0ptdkMsWUEwQkVudkMsUUFBZ0R2NkM7ZUFibEQycEY7S0EwQkksTUF6REpKLFlBNENFaHZDLFFBQXlCdnBELFVBQXVCZ1A7ZUFibEQycEY7S0FxQkksTUFwSUpQLGNBNEhFN3VDLFFBQXlCdnBEO0tBSTNCLFVBakJBMjRGO0tBZ0JNLFVBQUE7ZUFEUjtLQUQ0QjtLQUFwQixVQUFBO0lBRG1FLFdBQzNFO0dBNkJEOzs7O09BekxHLzNEO09BT0FzM0Q7T0FpQkFDO09BT0FDO09BZ0ZBRztPQWtCQUc7T0FhQUM7T0FZQTl6RDs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDekpBZzBELFNBQWF0dkMsUUFDTXZ4RDtJQUtyQixTQUFJOGdHLFlBQ0V2dkMsUUFBU2d1QyxLQUFjMTJIO0tBRTNCO01BQ29DLE9BQUEsNkJBSHZCMDJILEtBQWMxMkg7TUFHbEIsUUFBQTtpQkFDRztTQUNITSw4QkFDb0MsV0FOekNvb0YsUUFLS3BvRjtLQUNMOzs7SUFFSDtpQkFiSXV1QztLQUNMO2FBQUEsaUNBREtBLFdBRGMxWCxVQUFBQTtLQUVuQixPQUFBO2NBQ0c7SUFBd0M7SUFEM0MsWUFBQSxnQ0FGbUJBOzs7TUF3Q1owWDs7OztTQU1ELGdDQU5DQTtTQU1ELE9BQUEsV0EvQ082NUM7UUFpRFI7Z0JBSEQ7OztTQUhFLGdDQUZDNzVDO1NBRUQ7UUFFRDtnQkFIRDs7Ozs7S0FaaUI7TUFFakI7UUFBQSxnQ0FBYTtNQUNTLE9BQUE7TUFGcEJxcEYsY0FDRixXQUNHO0tBQ0w7S0FDTyxPQUFBLFdBbkNJeHZDLGlCQStCUHd2QztJQUtMO2tCQU5EOztLQUhFO0tBQUE7SUFFRDtrQkFIRDs7S0FIRTtLQUFBO0lBRUQ7a0JBSEQ7d0JBRHFCLE9BQUEsV0FyQlJ4dkMsYUFxQmdDO2tCQUE3QztJQUZnQixtQixPQWJkdXZDLFlBTld2dkM7bUJBbUJiO0lBRGMsb0IsT0FaWnV2QyxZQU5XdnZDO21CQWtCYjt5QkFEc0IsOEJBQXNCO0lBRDlDLGVBQ0U7SUF3QnFCLE9BQUE7R0FZeEI7WUFFR3l2QyxVQUVHenZDO0lBRUU7S0FEcURobEM7S0FBcEMvTztLQUEyQjdGO0tBQVQrQjtLQUFyQzFSO0tBQVVnUDtLQUNSLFFBRHFEdVY7O0tBSWQ7TUFBckMwMEU7TUFBcUMsTUFBQSxtQ0FBckNBO01BQXFCLE1BQUE7S0FBZDs7O0tBQ0o7SUFHVjtLQURFcHpCO09BQ0Y7O1NBUjBEdGhEO1NBQXZEdmtCO1NBQVVnUDtTQUEyQjBDO1NBQVMvQjtLQW9CN0M7O1FBQUMsdUNBckJGNDVDLFFBQ1V2NkMsU0FBVmhQOztLQW1COEIsVUFBQztLQUFuQixVQUFBO0tBQVgsVUFBQztLQUFELE1BQUE7S0FERixNQUFBLGdDQW5CQ3VwRCxRQUNBdnBELFVBQVVnUDtLQWtCWCxNQUFBO0tBRE0sVUFBQTtLQUZOa3FGLFVBQ0Y7S0FNRUM7T0FBYSx5Q0F2Qlo1dkMsUUFDQXZwRCxVQU9ENmxFO1dBUEM3bEU7aUJBQUFBO0tBdUJEbzVGOztVQUVFOztXQTFCRDd2QztXQUN1RGhsQztXQUF2RHZrQjtXQUFtQndWO1dBT3BCcXdEO1VBeUJFO0tBQ0ZoTjtPQUNGO21DQWxDRzc0RCxVQUFtQndWLGtCQU9wQnF3RDtJQTRCSixPQW5DZTcyRDs7T0FzQ0U7UUFEQXFxRixLQXJDRnJxRjtRQXFDSEssTUFyQ0dMO1FBc0NQak8sU0FBUywyQkFEQXM0RixJQUFMaHFGO1FBRWtDLE1BQUEsdUJBRmxDQTtRQUVKbTZDLGFBQWE7UUFDYmgzQztVQUFVLHdDQXhDaUM3QyxTQXVDM0M2NUM7UUFFSixNQXpDd0RqbEM7Ozs7O2tDQTJDckJwaEQsZ0JBRi9CczFCLGVBRStCdDFCOztZQUYvQnMxQjs7O3VCQU9BWSxHQUNFLE9BQU8sV0FsRFprd0QsZ0JBaURHbHdELEtBQytEO1FBZG5FaWdHO1VBV0E7OztZQS9DQy92QztZQUN1RGhsQztZQUF2RHZrQjtZQWlDRDY0RDtZQWpDc0NubkQ7WUF1Q2xDODNDO1lBQ0FoM0M7WUFDQS9aO1lBSEFzSTs7O09BdUJTO1FBRE93NEYsT0E1RFR2cUY7UUE0REc5dUMsT0E1REg4dUM7UUE2RFBRLFdBQVMsNEJBREN0dkMsTUFBTXE1SDtRQUVoQkMsZUFBYSxzQ0FGSHQ1SDtRQUlaLE1BQUEscUNBaEVTOHVDOzttQkFpRUs3ckM7V0FBZSxjQUFBO1dBQWtCLE9BQUEsNkNBQWpDQTtVQUFxQztRQURuRCxNQUFBLFdBQ0c7UUFGRHkyRixPQUNGO1FBR0U2L0I7VUFBVSx3Q0FuRWlDOXBGLFNBOEQzQzZwRjtRQU1KLE1BcEV3RGoxRTs7Ozs7O2NBc0VmOHBFLGtCQUZyQzMxRixpQkFFcUMyMUY7Ozs7WUFGckMzMUY7O09BTUY7dUJBRUlXLEdBQ0UsT0FDRSxXQS9FVGt3RCxnQkE2RUtsd0QsS0FHRztRQUxQO1VBQUE7OztZQTNFRGt3RDtZQUN1RGhsQztZQUF2RHZrQjtZQWlDRDY0RDtZQWpDc0NubkQ7WUE4RGxDOG5GO1lBS0FDO1lBQ0EvZ0c7WUFQQThXO1FBMUJKOHBGLGVBc0NBLHVCQVZJMS9COzs7T0E0QkosSUFEZ0JqeUUsV0ExRkxxbkIsWUEyRlgsTUEzRndEdVY7Ozs7Ozs7V0E2RmR5bkQ7V0FBTHA4RDtXQUZqQ0Ysb0JBRWlDRSxLQUFLbzhEOzs7O1lBRnRDdDhEOzs7OztXQU9BLElBQU9zOEQsZ0JBQUxwOEQ7V0FFRSxPQUFBLFdBckdQMjVDLGdCQW1HSzM1QyxLQUFLbzhEO1VBR0o7UUFsRVBzdEI7VUE2REE7OztZQWpHQy92QztZQUN1RGhsQztZQTJGcEQ3VTtZQTNGSDFQO1lBMEZlclk7WUExRnNCK3BCO1lBaUN0Q21uRDs7SUFvRmlCO0tBQUEsVUFBQyxpQ0FySGpCNzREO2VBcUhHO0tBRlEsVUFDUjtLQURGLFVBQUE7SUFKTjtZQWhHSWs1Rjs7YUFrR0YseUNBOUVFSTtpQkFaQUYsYUFEQUQ7O1lBd0dGdDBELEtBQVMwa0IsUUFBNkN2eEQ7SUFDeEQ7S0FPSSxNQXpJRmdoRyxVQWlJU3p2QyxRQUE2Q3Z4RDs7S0FHdEQsVUFDRTtLQURGLE1BQUE7S0FEcUMsTUExTHJDNmdHLFNBd0xTdHZDLFFBQTZDdnhEO0tBRWhDLFVBQUE7S0FBaEIsVUFBQTtJQUNOLE9BQUE7R0FNRDsyQkFqTUM2Z0csVUF1REFHLFdBaUlBbjBEOzs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUk1TEo1N0Q7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQURBZ3VCLFVBQ0F0c0I7SUFBQTtjQUFBLDhCQUFBQTtjQUFBLDhCQUFBQTtHQUVjO1lBSGR1c0IsWUFDQTcwQjtJQUFBLE9BQUEsb0NBREE0MEIsV0FDQTUwQjtHQUVjO0dBRmQsU0FBQTgwQixlQUFBcnNCO0lBQUE7O2NBQUFBO2dCQUFBQTs7Ozs7OztPQUFBOztNQUFBOztlQUFBQTs7TUFBQSxPQUFBOzRDQUFBOUIsa0JBQUE4Qjs7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7Ozs7Ozs7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7O0tBQUEsT0FBQTsyQ0FBQTlCLGtCQUFBOEI7O0lBQUEsT0FBQSx3Q0FBQTlCLGtCQUFBOEI7R0FFYztZQUZkMnNCLHNCQUFBLHlCQUVjO0dBRmQsU0FBQUcsaUJBQUEzc0I7SUFBQSxVQUFBQSxxQ0FBQUE7ZUFBQUE7O01BQUEsT0FBQSw4Q0FBQWhDLFFBQUFnQzs7Ozs7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7a0JBQUE7c0RBQUFoQyxRQUFBZ0M7Ozs7T0FBQSxPQUFBLDhDQUFBaEMsUUFBQWdDOzs7SUFBQSxPQUFBLDhDQUFBaEMsUUFBQWdDO0dBRWM7WUFGZDRzQix3QkFBQSx5QkFFYztZQUVWb3lDLFFBQVcvb0U7SUFBeUIsR0FBekJBO0tBV0c7O0tBUkMsSUFBWDYrQixXQUFXLDJDQUFYQTtLQUNKOzs7UUFESUE7UUFBQUE7O1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBOzs7SUFVTjs7O0dBSUQ7WUFFR2s4RixJQUFPM2dDLFNBQVNwNkY7SUFBVyxJQVV6QixVQUFDLGdDQVZJbzZGLGNBVUw7d0JBN0JGcnhCLFFBbUJnQi9vRSxTQU1SLG9CQUVEO0lBSk87S0FBQSxVQUNSO0tBREYsVUFBQTtJQU1GLE9BQUE7R0FHTDtHQUlPO2NBakJKKzZIO0lBaUJJLFVBakJKQTtJQWVBcjNELE9BQ0c7WUFXQzNnQixtQkFBbUIsU0FBSztHQUZmLGdCQUVUQTtZQUlBdmdDLGlCQUFpQix3QkFBaUI7R0FGeEIsSUFBQSxhQUVWQSxZQUVTO1lBR1h3NEc7SUFDRixPQUFBO0dBQThCO1lBQzVCQztJQUNGLElBQUEsTUFBQSxrQ0FBQTtJQUN3QixPQUFBOzs7O2NBQ25COzs7O2VBQ2dCLG9DQUFpQyxTQUFFO2NBTnpDLE9BQUE7a0VBckJmdjNEO2FBOEJNO0dBQ0Y7R0F0Qkssb0NBWVBzM0QsWUFFQUM7WUFXRi94RDtJQUNGLE9BMUJXO0dBK0JWOzs7O09BL0VIbnpDO09BQUFDO09BQ0FDO09BQUFNO09BQUFHO09BQUFDO09BSUlveUM7T0FtQkFneUQ7T0FlQXIzRDs7T0FrQ0F3Rjs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0l2RWtCOztJQUlPOHlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSnpCQztJQUNBQztJQUNBQyx1QkFBdUI7Ozs7Ozs7OztZQXdFckJDLFdBQWVDLGlCQUFpQkM7SUFBZSxJQXJFbkQ7aUJBR0tDO0tBQWU7TUFDQztpQ0FBQSx5QkFEaEJBOztNQW9Fc0NDO0tBQ3JCLE9BQUEsV0FISEgseUJBRXdCRztJQTNEdEM7SUFYRyxVQUFBLCtCQUZtQlI7SUFDM0I7SUEyRUU7SUFHWSxJQUFSUyxRQUFRO0lBR1osZ0NBWmlCSixpQkFBaUJDOzs7O2dCQWVoQzs7SUFJRixPQUFBLHNDQVZJRztHQVdMO1lBRUdDLE9BRUVDLGNBRUNDO2lCQUdHRDtLQUdSO01BR0UsTUFBQSw2QkFUR0MsUUFHR0Q7TUFPTTs7eUJBQUtOO1VBQW9CLFVBN0d2Q0g7OztrQkFDQUM7MEJBOEdXOzs7O1dBL0dYRDtXQW9ITTtXQUNBLFdBUmFHOztvQkE5R25CSjs7cUJBQUFBOzs7b0JBMEhNOztTQUVIO01BZFc7TUFIRTs7a0JBMUVBWSxRQUFRSixPQUFRSjtVQVRsQztXQUNtQixpQkFBQTtXQUNqQjtXQUNRO1dBQ1I7OztVQU9DLEdBQUEsc0NBRmVRO1dBL0JoQlYsc0JBa0NvQjtXQW5DcEJEOztVQXNDQyxHQUFBLGdDQU5lVyxTQWpDaEJaO1VBRUFFLHNCQXdDa0I7VUFDcEI7V0FFb0I7WUFBWlc7Y0FBWTtxQ0EwRFZILE9BdEVRRSxRQUFRSixPQUFRSjtXQWE5Qiw0QkFiY1E7dUJBWVZDOztnQkFJTkM7V0FHSTtZQUhKQywwQkFBQUQ7WUFHSSxNQUFBLCtCQUhKQztXQUNFOytCQUlnQiwrQkFMbEJBOztpQ0FRR0Msb0JBQVUsT0FBVkE7Y0FNR0M7b0JBQUFBLDBCQUFBQTtXQUhRO1lBRlFDLFFBS2hCRDtZQUhRLE1BQUEsdUNBRlFDO1dBRXRCO1dBQUEsT0EyQ1FSOztVQXZDTSxVQUFBLG1DQURSTztVQUNOO1VBQUEsT0F1Q1FQOztLQU1OLE9BQUEsaURBTk1BO0lBc0JOOytDQTNCRUE7R0E0Qkw7R0FHSSxZQUFBOzs7bUVBQ1k7SUFHUDtLQUFBOzs7OztRQTNETlA7UUFzQkFNO0tBd0NhLE1BQUE7SUFKakI7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N2SE07R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHRvYykge1xuICB2YXIgc3ltYjtcbiAgd2hpbGUodG9jKSB7XG4gICAgaWYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodG9jWzFdWzFdKSA9PSBcIlNZSlNcIikge1xuICAgICAgc3ltYiA9IHRvY1sxXVsyXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBlbHNlIHRvYyA9IHRvY1syXVxuICB9XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnRvYykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMgPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS50b2MpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzW25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkge1xuICBpZiAoeCA+PSAwKSB7XG4gICAgdmFyIHkgPSBNYXRoLmZsb29yKHgpO1xuICAgIHJldHVybiAoeCAtIHkgPj0gMC41KT8oeSArIDEpOnlcbiAgfSBlbHNlIHtcbiAgICB2YXIgeSA9IE1hdGguY2VpbCh4KTtcbiAgICByZXR1cm4gKHkgLSB4ID49IDAuNSk/KHkgLSAxKTp5XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGNhc2UgXCJcIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX3N5c19mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICAvLyBBIGZpZWxkIHdhcyBhZGRlZCBpbiBPQ2FtbCA0LjEyLiBJdCBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSB0b1xuICAvLyByZXR1cm4gdG9vIG1hbnkgZmllbGRzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sLlxuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcbmZ1bmN0aW9uIGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrKHgpe1xuICByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9mZFxuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4sIGNhbWxfbWQ1X2NoYW4sIGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuZnVuY3Rpb24gY29yZV9tZDVfZmQoZmQpe1xuICAgIHZhciBpYyA9IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gY2FtbF9tZDVfY2hhbihpYywgLTEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChpYyk7XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21kNV9zdHJpbmcsIGNhbWxfYmxpdF9zdHJpbmcsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmcoYnVmLCBvZnMsIGxlbiwgcmVzKXtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKGJ1Ziwgb2ZzLCBieXRlcywgMCwgbGVuKTtcbiAgICB2YXIgcmVzMiA9IGNhbWxfbWQ1X3N0cmluZyhjYW1sX3N0cmluZ19vZl9ieXRlcyhieXRlcyksIDAsIGxlbik7XG4gICAgY2FtbF9ibGl0X3N0cmluZyhyZXMyLCAwLCByZXMsIDAsIDE2KTtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9CaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBiaWdzdHJpbmdfZGVzdHJveV9zdHViKHZfYnN0cikge1xuICBpZiAodl9ic3RyLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfZGVzdHJveTogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gIH1cbiAgLy8gTXV0YXRlIHRoZSBvcmlnaW5hbCBiaWdzdHJpbmcgaW4tcGxhY2UsIHRvIHNpbXVsYXRlIHdoYXQgdGhlIEMgdmVyc2lvbiBkb2VzXG4gIHZfYnN0ci5fX2lzX2RlYWxsb2NhdGVkID0gdHJ1ZTtcbiAgdl9ic3RyLmRhdGEgPSBuZXcgdl9ic3RyLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKDApO1xuICB2X2JzdHIuZGltcyA9IFsgMCBdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3JlYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG5mdW5jdGlvbiBiaWdzdHJpbmdfcmVhbGxvYyhiaWdzdHJpbmcsIHNpemUpIHtcbiAgICBpZiAoYmlnc3RyaW5nLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX3JlYWxsb2M6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICAgIH1cblxuICAgIHZhciBuZXdfZGF0YSA9IG5ldyBiaWdzdHJpbmcuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3Ioc2l6ZSk7XG4gICAgbmV3X2RhdGEuc2V0KGJpZ3N0cmluZy5kYXRhLnNsaWNlKDAsIHNpemUpKTtcbiAgICB2YXIgbmV3X2JpZ3N0cmluZyA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiaWdzdHJpbmcua2luZCwgYmlnc3RyaW5nLmxheW91dCwgW3NpemVdLCBuZXdfZGF0YSk7XG4gICAgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YihiaWdzdHJpbmcpO1xuXG4gICAgcmV0dXJuIG5ld19iaWdzdHJpbmc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfb2ZmLGRzdCxkc3Rfb2ZmLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmcoYmExLCBiYTFfb2ZmLCBiYTIsIGJhMl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmExLCBiYTFfb2ZmICsgaSksIGNhbWxfYmFfZ2V0XzEoYmEyLCBiYTJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmcoYmEsIGJhX29mZiwgc3RyLCBzdHJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzdHIsIHN0cl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY2hyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jaHIoYmEsIGJhX29mZiwgY2hyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSA9PSBjaHIpIHtcbiAgICAgIHJldHVybiAoYmFfb2ZmICsgaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCA9IGNhbWxfaGFzaF9taXhfaW50NjQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCA9IGNhbWxfaGFzaF9taXhfaW50O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXQgPSBjYW1sX2hhc2hfbWl4X2Zsb2F0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmcgPSBjYW1sX2hhc2hfbWl4X3N0cmluZztcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG5mdW5jdGlvbiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZShzZWVkKSB7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChzZWVkKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IFxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QgKHZvdXRwdXQsIHZzdGRvdXQsIHZzdGRlcnIpe1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyID0gY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXTtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF07XG4gIHZhciBvdXRwdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZvdXRwdXRdO1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gb3V0cHV0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gb3V0cHV0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0ICh2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczpjYW1sX291dF9jaGFubmVsX3Bvc19mZFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQoY2hhbil7XG4gIHZhciBpbmZvID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuXTtcbiAgcmV0dXJuIGluZm8ub2Zmc2V0XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vLy8vLy8vLyBCSU5fUFJPVFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoYmlnc3RyaW5nLCBpKXtcbiAgaWYgKGkgPj4+IDAgPj0gYmlnc3RyaW5nLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MpOyAvLyBmaXJzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3BvcytsZW4tMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3Bvcyk7ICAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICB2YXIgdmlldyA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkobGVuKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KHZpZXcuYnVmZmVyKTtcbiAgYnVmZmVyLnNldChzcmMuZGF0YS5zdWJhcnJheShzcmNfcG9zLCBzcmNfcG9zICsgKGxlbiAqIDgpKSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwIFxuICAgIGRzdFtkc3RfcG9zK2krMV0gPSB2aWV3W2ldO1xuICB9XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViKHNyY19wb3Msc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMCBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zKTsgLy8gZmlyc3QgcG9zIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MgKyBsZW4gLSAxKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zKTsgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwXG4gIHNyY19wb3MgPSBzcmNfcG9zICsgMVxuICB2YXIgZmxvYXQ2NCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkoc3JjLnNsaWNlKHNyY19wb3Msc3JjX3BvcyArIGxlbikpO1xuICB2YXIgZmxvYXQ2NF91aW50OCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KGZsb2F0NjQuYnVmZmVyKTtcbiAgdmFyIHZpZXcgPSBkc3QuZGF0YS5zdWJhcnJheShkc3RfcG9zLCBkc3RfcG9zICsgKGxlbiAqIDgpKTtcbiAgdmlldy5zZXQoZmxvYXQ2NF91aW50OCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSwgYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgLy8gW2Jpbl9wcm90X2JsaXRfYnVmX3N0dWJdIGlzIHVzZWQgd2l0aCBtaXhlZCBiaWdhcnJheSBraW5kcy5cbiAgLy8gQ29udmVydGVyIGV2ZXJ5dGhpbmcgdG8gYmlnYXJyYXkgb2YgY2hhciBiZWZvcmUgdGhlIGJsaXQuXG4gIGlmKHNyYy5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgc3JjID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KHNyYy5kYXRhKTtcbiAgaWYoZHN0LmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBkc3QgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoZHN0LmRhdGEpO1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50KHYpIHtcbiAgdiA9IHYgLSAoKHYgPj4+IDEpICYgMHg1NTU1NTU1NSk7XG4gIHYgPSAodiAmIDB4MzMzMzMzMzMpICsgKCh2ID4+PiAyKSAmIDB4MzMzMzMzMzMpO1xuICByZXR1cm4gKCh2ICsgKHYgPj4+IDQpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEwMSkgPj4+IDI0O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3BvcyBjb25zdFxuZnVuY3Rpb24gQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4gY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuKHgpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KSB7XG4gIHZhciBuID0gMzI7XG4gIHZhciB5O1xuICB5ID0geCA+PjE2OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gODsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDQ7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0geCA+PiAyOyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMTsgaWYgKHkgIT0gMCkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIHg7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHooeCkge1xuICB2YXIgbiA9IDY0O1xuICB2YXIgeTtcbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMzI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSBjYW1sX2ludDY0X3RvX2ludDMyKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCkge1xuICBpZiAoeCA9PT0gMCkgeyByZXR1cm4gMzI7IH1cbiAgdmFyIG4gPSAxO1xuICBpZiAoICh4ICYgMHgwMDAwRkZGRikgPT09IDApIHsgbiA9IG4gKyAxNjsgeCA9IHggPj4gMTY7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwRkYpID09PSAwKSB7IG4gPSBuICsgIDg7IHggPSB4ID4+ICA4OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDBGKSA9PT0gMCkgeyBuID0gbiArICA0OyB4ID0geCA+PiAgNDsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwMykgPT09IDApIHsgbiA9IG4gKyAgMjsgeCA9IHggPj4gIDI7IH1cbiAgcmV0dXJuIG4gLSAoeCAmIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYW5kLCBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHooeCkge1xuICBpZiAoY2FtbF9pbnQ2NF9pc196ZXJvKHgpKSB7IHJldHVybiA2NDsgfVxuICB2YXIgbiA9IDE7XG4gIGZ1bmN0aW9uIGlzX3plcm8gKHgpICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfaXNfemVybyh4KTsgfVxuICBmdW5jdGlvbiBsYW5kICh4LHkpICAgICB7IHJldHVybiBjYW1sX2ludDY0X2FuZCh4LCB5KTsgfVxuICBmdW5jdGlvbiBzbWFsbF9pbnQ2NCh4KSB7IHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSh4LDAsMCk7IH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgweEZGRkZGRiwgMHgwMDAwRkYsIDB4MDAwMCkpKSkge1xuICAgIG4gPSBuICsgMzI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDBGRkZGKSkpKSB7XG4gICAgbiA9IG4gKyAxNjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwRkYpKSkpIHtcbiAgICBuID0gbiArICA4OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDBGKSkpKSB7XG4gICAgbiA9IG4gKyAgNDsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMykpKSkge1xuICAgIG4gPSBuICsgIDI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICB9XG4gIHJldHVybiBuIC0gKGNhbWxfaW50NjRfdG9faW50MzIoY2FtbF9pbnQ2NF9hbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDEpKSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IDE7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghZXhwb25lbnQ9PTApIHtcbiAgICBtdWxbMV0gPSAobXVsWzFdICogbXVsWzNdKSB8IDA7XG4gICAgbXVsWzJdID0gKG11bFsxXSAqIG11bFsxXSkgfCAwO1xuICAgIG11bFszXSA9IChtdWxbMl0gKiBtdWxbMV0pIHwgMDtcbiAgICByZXMgPSAocmVzICogbXVsW2V4cG9uZW50ICYgM10pIHwgMDtcbiAgICBleHBvbmVudCA9IGV4cG9uZW50ID4+IDI7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkoMSwwKTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFjYW1sX2ludDY0X2lzX3plcm8oZXhwb25lbnQpKSB7XG4gICAgbXVsWzFdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbM10pO1xuICAgIG11bFsyXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzFdKTtcbiAgICBtdWxbM10gPSBjYW1sX2ludDY0X211bChtdWxbMl0sIG11bFsxXSk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9tdWwocmVzLCBtdWxbY2FtbF9pbnQ2NF9sbzMyKGV4cG9uZW50KSAmIDNdKTtcbiAgICBleHBvbmVudCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoZXhwb25lbnQsIDIpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxzKVxufVxuLy9Qcm92aWRlczogQmFzZV9oYXNoX2RvdWJsZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfZG91YmxlKGQpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxkKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9hbV90ZXN0aW5nIGNvbnN0XG4vL1dlYWtkZWZcbmZ1bmN0aW9uIEJhc2VfYW1fdGVzdGluZyh4KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczoganNfcGVyZm9ybWFuY2VcbnZhciBqc19wZXJmb3JtYW5jZSA9IHttYXJrOiAoZnVuY3Rpb24gKCkge30pLCBtZWFzdXJlOiAoZnVuY3Rpb24gKCkge30pIH07XG5pZiAodHlwZW9mIGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2U7XG59IGVsc2Uge1xuICB0cnkge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gcmVxdWlyZSgncGVyZl9ob29rcycpLnBlcmZvcm1hbmNlO1xuICB9IGNhdGNoIChfZSkge1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihcImNvdWxkbid0IGxvYWQgcGVyZm9ybWFuY2UgaG9va3NcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tYXJrXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21hcmsobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1hcmsoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21lYXN1cmVcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWVhc3VyZShuYW1lLCBzdGFydCwgZW5kKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWVhc3VyZShcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzdGFydCksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhlbmQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWFya3Ncbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWFya3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNYXJrcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tZWFzdXJlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tZWFzdXJlcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2x4bV9uZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfeG9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25ld19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdF9yKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gb3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfb3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfeG9yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gYWRkKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIG11bChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LGspLHNoaWZ0X3IgKHgsIDY0IC0gaykpO1xuICB9XG4gIGZ1bmN0aW9uIGdldChhLCBpKSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfZ2V0XzEoYSwgaSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KGEsIGksIHgpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9zZXRfMShhLCBpLCB4KTtcbiAgfVxuICB2YXIgTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSk7XG4gIHZhciBkYWJhID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkYWJhMGI2ZWIwOTMyMmUzXCIpKTtcbiAgdmFyIHosIHEwLCBxMTtcbiAgdmFyIHN0ID0gdjtcbiAgdmFyIGEgPSBnZXQoc3QsMCk7XG4gIHZhciBzID0gZ2V0KHN0LDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsMik7XG4gIHZhciB4MSA9IGdldChzdCwzKTtcbiAgLyogQ29tYmluaW5nIG9wZXJhdGlvbiAqL1xuICB6ID0gYWRkKHMsIHgwKTtcbiAgLyogTWl4aW5nIGZ1bmN0aW9uICovXG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LHNoaWZ0X3IoeiwzMikpO1xuICAvKiBMQ0cgdXBkYXRlICovXG4gIHNldChzdCwgMSwgYWRkIChtdWwocyxNKSwgYSkpO1xuICAvKiBYQkcgdXBkYXRlICovXG4gIHZhciBxMCA9IHgwXG4gIHZhciBxMSA9IHgxXG4gIHExID0geG9yKHExLHEwKTtcbiAgcTAgPSByb3RsKHEwLCAyNCk7XG4gIHEwID0geG9yKHhvcihxMCwgcTEpLCAoc2hpZnRfbChxMSwxNikpKTtcbiAgcTEgPSByb3RsKHExLCAzNyk7XG4gIHNldChzdCwgMiwgcTApO1xuICBzZXQoc3QsIDMsIHExKTtcbiAgLyogUmV0dXJuIHJlc3VsdCAqL1xuICByZXR1cm4gejtcbn1cbiIsIlxuLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjBcbi8vVmVyc2lvbjogPCA1LjEuMVxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjFcbi8vVmVyc2lvbjogPCA1LjIuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMlxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3pzdGRfaW5pdGlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xLjFcbmZ1bmN0aW9uIGNhbWxfenN0ZF9pbml0aWFsaXplKHVuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMVxufVxuXG4iLCIvL1Byb3ZpZGVzOiBjYW1sX29qc193cmFwX2Z1bl9hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikoYXJndW1lbnRzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNfdG9fc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMobywgZikge1xuICB2YXIgbmFtZTtcbiAgZm9yKG5hbWUgaW4gbykge1xuICAgIGlmKG8uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGYobmFtZSk7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8gVElNRV9OT1dcblxuLy9Qcm92aWRlczogdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxudmFyIG1zX3RvX25hbm8gPSBjYW1sX2ludDY0X29mX2ludDMyKDEwMDAqMTAwMCk7XG5mdW5jdGlvbiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8oKXtcbiAgICB2YXIgbXMgPSBEYXRlLm5vdygpO1xuICAgIC8vIG11bHRpcGxlIGJ5IHR3byAtIGludDYzIGludGVnZXJzIGFyZSBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICAgdmFyIG1zX2k2MyA9IGNhbWxfaW50NjRfb2ZfZmxvYXQobXMqMik7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKG1zX2k2Myxtc190b19uYW5vKTtcbn1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBFZmZlY3QgICAgICAgICA9IEVmZmVjdFxubW9kdWxlIEVpdGhlciAgICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgICA9IEdjXG5tb2R1bGUgSGFzaHRibCAgICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW5fY2hhbm5lbCAgICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBNdXRleCAgICAgICAgICA9IE11dGV4XG5tb2R1bGUgTmF0aXZlaW50ICAgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgICA9IE9wdGlvblxubW9kdWxlIE91dF9jaGFubmVsICAgID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQYXJzaW5nICAgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQcmludGV4YyAgICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZW1hcGhvcmUgICAgICA9IFNlbWFwaG9yZVxubW9kdWxlIFNlcSAgICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJpbmcgICAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyAgID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKiBAY29uZmlndXJlX2lucHV0QCAqKVxuIzMgXCJzeXMubWwuaW5cIlxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcbigqIFN5c3RlbSBpbnRlcmZhY2UgKilcblxuZXh0ZXJuYWwgZ2V0X2NvbmZpZzogdW5pdCAtPiBzdHJpbmcgKiBpbnQgKiBib29sID0gXCJjYW1sX3N5c19nZXRfY29uZmlnXCJcbmV4dGVybmFsIGdldF9leGVjdXRhYmxlX25hbWUgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lXCJcbmV4dGVybmFsIGFyZ3YgOiBzdHJpbmcgYXJyYXkgPSBcIiVzeXNfYXJndlwiXG5leHRlcm5hbCBiaWdfZW5kaWFuIDogdW5pdCAtPiBib29sID0gXCIlYmlnX2VuZGlhblwiXG5leHRlcm5hbCB3b3JkX3NpemUgOiB1bml0IC0+IGludCA9IFwiJXdvcmRfc2l6ZVwiXG5leHRlcm5hbCBpbnRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlaW50X3NpemVcIlxuZXh0ZXJuYWwgbWF4X3dvc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlbWF4X3dvc2l6ZVwiXG5leHRlcm5hbCB1bml4IDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3VuaXhcIlxuZXh0ZXJuYWwgd2luMzIgOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfd2luMzJcIlxuZXh0ZXJuYWwgY3lnd2luIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX2N5Z3dpblwiXG5leHRlcm5hbCBnZXRfYmFja2VuZF90eXBlIDogdW5pdCAtPiBiYWNrZW5kX3R5cGUgPSBcIiViYWNrZW5kX3R5cGVcIlxuXG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gZ2V0X2V4ZWN1dGFibGVfbmFtZSgpXG5sZXQgKG9zX3R5cGUsIF8sIF8pID0gZ2V0X2NvbmZpZygpXG5sZXQgYmFja2VuZF90eXBlID0gZ2V0X2JhY2tlbmRfdHlwZSAoKVxubGV0IGJpZ19lbmRpYW4gPSBiaWdfZW5kaWFuICgpXG5sZXQgd29yZF9zaXplID0gd29yZF9zaXplICgpXG5sZXQgaW50X3NpemUgPSBpbnRfc2l6ZSAoKVxubGV0IHVuaXggPSB1bml4ICgpXG5sZXQgd2luMzIgPSB3aW4zMiAoKVxubGV0IGN5Z3dpbiA9IGN5Z3dpbiAoKVxubGV0IG1heF9hcnJheV9sZW5ndGggPSBtYXhfd29zaXplICgpXG5sZXQgbWF4X2Zsb2F0YXJyYXlfbGVuZ3RoID0gbWF4X2FycmF5X2xlbmd0aCAvICg2NCAvIHdvcmRfc2l6ZSlcbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMVxuZXh0ZXJuYWwgcnVudGltZV92YXJpYW50IDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV92YXJpYW50XCJcbmV4dGVybmFsIHJ1bnRpbWVfcGFyYW1ldGVycyA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1wiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc3dhcF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdCAtPiBib29sXG4gID0gXCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXCJcbmV4dGVybmFsIGlzX3NoYXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9vYmpfaXNfc2hhcmVkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0M1xuXG5sZXQgZm9yY2luZ190YWcgPSAyNDRcbmxldCBjb250X3RhZyA9IDI0NVxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNcIlxuZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkXCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgc2V0IHIgeCA9IGlnbm9yZSAoZXhjaGFuZ2UgciB4KVxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG4oKiBbaXRlcjJdLCBbZm9sZF9sZWZ0Ml0sIFtmb3JfYWxsMl0sIFtleGlzdHMyXSwgW21hcDJdLCBbemlwXSB3b3JrIGFsc28gaW5cbiAgIHRoZSBjYXNlIHdoZXJlIHRoZSB0d28gc2VxdWVuY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHMuIFRoZXkgc3RvcCBhcyBzb29uXG4gICBhcyBvbmUgc2VxdWVuY2UgaXMgZXhoYXVzdGVkLiBUaGVpciBiZWhhdmlvciBpcyBzbGlnaHRseSBhc3ltbWV0cmljOiB3aGVuXG4gICBbeHNdIGlzIGVtcHR5LCB0aGV5IGRvIG5vdCBmb3JjZSBbeXNdOyBob3dldmVyLCB3aGVuIFt5c10gaXMgZW1wdHksIFt4c10gaXNcbiAgIGZvcmNlZCwgZXZlbiB0aG91Z2ggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gYXBwbGljYXRpb24gW3hzKCldIHR1cm5zIG91dFxuICAgdG8gYmUgdXNlbGVzcy4gKilcblxubGV0IHJlYyBpdGVyMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgpXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5O1xuICAgICAgICAgIGl0ZXIyIGYgeHMgeXNcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGFjY3VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgeCB5IGluXG4gICAgICAgICAgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXNcblxubGV0IHJlYyBmb3JfYWxsMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSAmJiBmb3JfYWxsMiBmIHhzIHlzXG5cbmxldCByZWMgZXhpc3RzMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5IHx8IGV4aXN0czIgZiB4cyB5c1xuXG5sZXQgcmVjIGVxdWFsIGVxIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgZXEgeCB5ICYmIGVxdWFsIGVxIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgIGZhbHNlXG5cbmxldCByZWMgY29tcGFyZSBjbXAgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgMFxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBsZXQgYyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjb21wYXJlIGNtcCB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXykgLT5cbiAgICAgIC0xXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgKzFcblxuXG5cbigqIFtpbml0X2F1eCBmIGkgal0gaXMgdGhlIHNlcXVlbmNlIFtmIGksIC4uLiwgZiAoai0xKV0uICopXG5cbmxldCByZWMgaW5pdF9hdXggZiBpIGogKCkgPVxuICBpZiBpIDwgaiB0aGVuIGJlZ2luXG4gICAgQ29ucyAoZiBpLCBpbml0X2F1eCBmIChpICsgMSkgailcbiAgZW5kXG4gIGVsc2VcbiAgICBOaWxcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU2VxLmluaXRcIlxuICBlbHNlXG4gICAgaW5pdF9hdXggZiAwIG5cblxubGV0IHJlYyByZXBlYXQgeCAoKSA9XG4gIENvbnMgKHgsIHJlcGVhdCB4KVxuXG5sZXQgcmVjIGZvcmV2ZXIgZiAoKSA9XG4gIENvbnMgKGYoKSwgZm9yZXZlciBmKVxuXG4oKiBUaGlzIHByZWxpbWluYXJ5IGRlZmluaXRpb24gb2YgW2N5Y2xlXSByZXF1aXJlcyB0aGUgc2VxdWVuY2UgW3hzXVxuICAgdG8gYmUgbm9uZW1wdHkuIEFwcGx5aW5nIGl0IHRvIGFuIGVtcHR5IHNlcXVlbmNlIHdvdWxkIHByb2R1Y2UgYVxuICAgc2VxdWVuY2UgdGhhdCBkaXZlcmdlcyB3aGVuIGl0IGlzIGZvcmNlZC4gKilcblxubGV0IHJlYyBjeWNsZV9ub25lbXB0eSB4cyAoKSA9XG4gIGFwcGVuZCB4cyAoY3ljbGVfbm9uZW1wdHkgeHMpICgpXG5cbigqIFtjeWNsZSB4c10gY2hlY2tzIHdoZXRoZXIgW3hzXSBpcyBlbXB0eSBhbmQsIGlmIHNvLCByZXR1cm5zIGFuIGVtcHR5XG4gICBzZXF1ZW5jZS4gT3RoZXJ3aXNlLCBbY3ljbGUgeHNdIHByb2R1Y2VzIG9uZSBjb3B5IG9mIFt4c10gZm9sbG93ZWRcbiAgIHdpdGggdGhlIGluZmluaXRlIHNlcXVlbmNlIFtjeWNsZV9ub25lbXB0eSB4c10uIFRodXMsIHRoZSBub25lbXB0aW5lc3NcbiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBqdXN0IG9uY2UuICopXG5cbmxldCBjeWNsZSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMnKSAtPlxuICAgICAgQ29ucyAoeCwgYXBwZW5kIHhzJyAoY3ljbGVfbm9uZW1wdHkgeHMpKVxuXG4oKiBbaXRlcmF0ZTEgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW2YgeCwgZiAoZiB4KSwgLi4uXS5cbiAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKGl0ZXJhdGUgZiB4KV0uXG4gICBbaXRlcmF0ZTFdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgaXRlcmF0ZTEgZiB4ICgpID1cbiAgbGV0IHkgPSBmIHggaW5cbiAgQ29ucyAoeSwgaXRlcmF0ZTEgZiB5KVxuXG4oKiBbaXRlcmF0ZSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbeCwgZiB4LCAuLi5dLiAqKVxuXG4oKiBUaGUgcmVhc29uIHdoeSB3ZSBnaXZlIHRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0sXG4gICBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIG5haXZlIGRlZmluaXRpb24gdGhhdCBtYXkgY29tZSB0byBtaW5kLCBpcyB0aGF0XG4gICB3ZSBhcmUgY2FyZWZ1bCB0byBhdm9pZCBldmFsdWF0aW5nIFtmIHhdIHVudGlsIHRoaXMgZnVuY3Rpb24gY2FsbCBpc1xuICAgYWN0dWFsbHkgbmVjZXNzYXJ5LiBUaGUgbmFpdmUgZGVmaW5pdGlvbiAobm90IHNob3duIGhlcmUpIGNvbXB1dGVzIHRoZVxuICAgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBzZXF1ZW5jZSwgW2YgeF0sIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzXG4gICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuICopXG5cbmxldCBpdGVyYXRlIGYgeCA9XG4gIGNvbnMgeCAoaXRlcmF0ZTEgZiB4KVxuXG5cblxubGV0IHJlYyBtYXBpX2F1eCBmIGkgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoZiBpIHgsIG1hcGlfYXV4IGYgKGkrMSkgeHMpXG5cbmxldFtAaW5saW5lXSBtYXBpIGYgeHMgPVxuICBtYXBpX2F1eCBmIDAgeHNcblxuKCogW3RhaWxfc2NhbiBmIHMgeHNdIGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKHNjYW4gZiBzIHhzKV0uXG4gICBbdGFpbF9zY2FuXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW3NjYW5dLiAqKVxuXG4oKiBUaGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW3NjYW5dIGlzIG1lYW50IHRvIGF2b2lkIGNvbXB1dGluZ1xuICAgZWxlbWVudHMgdG9vIGVhcmx5OyBzZWUgdGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgW2l0ZXJhdGUxXSBhbmQgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIHRhaWxfc2NhbiBmIHMgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IHMgPSBmIHMgeCBpblxuICAgICAgQ29ucyAocywgdGFpbF9zY2FuIGYgcyB4cylcblxubGV0IHNjYW4gZiBzIHhzID1cbiAgY29ucyBzICh0YWlsX3NjYW4gZiBzIHhzKVxuXG4oKiBbdGFrZV0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW3Rha2UgMCB4c10gcmV0dXJucyBbZW1wdHldXG4gICBpbW1lZGlhdGVseSwgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCByZWMgdGFrZV9hdXggbiB4cyA9XG4gIGlmIG4gPSAwIHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgIENvbnMgKHgsIHRha2VfYXV4IChuLTEpIHhzKVxuXG5sZXQgdGFrZSBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS50YWtlXCI7XG4gIHRha2VfYXV4IG4geHNcblxuKCogW2ZvcmNlX2Ryb3AgbiB4c10gaXMgZXF1aXZhbGVudCB0byBbZHJvcCBuIHhzICgpXS5cbiAgIFtmb3JjZV9kcm9wIG4geHNdIHJlcXVpcmVzIFtuID4gMF0uXG4gICBbZm9yY2VfZHJvcF0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtkcm9wXS4gKilcblxubGV0IHJlYyBmb3JjZV9kcm9wIG4geHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGV0IG4gPSBuIC0gMSBpblxuICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICB4cygpXG4gICAgICBlbHNlXG4gICAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG4oKiBbZHJvcF0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW2Ryb3AgMCB4c10gcmV0dXJucyBbeHNdIGltbWVkaWF0ZWx5LFxuICAgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCBkcm9wIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLmRyb3BcIlxuICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICB4c1xuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBmb3JjZV9kcm9wIG4geHNcblxubGV0IHJlYyB0YWtlX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gQ29ucyAoeCwgdGFrZV93aGlsZSBwIHhzKSBlbHNlIE5pbFxuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIGFzIG5vZGUgLT5cbiAgICAgIGlmIHAgeCB0aGVuIGRyb3Bfd2hpbGUgcCB4cyAoKSBlbHNlIG5vZGVcblxubGV0IHJlYyBncm91cCBlcSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChjb25zIHggKHRha2Vfd2hpbGUgKGVxIHgpIHhzKSwgZ3JvdXAgZXEgKGRyb3Bfd2hpbGUgKGVxIHgpIHhzKSlcblxuZXhjZXB0aW9uIEZvcmNlZF90d2ljZVxuXG5tb2R1bGUgU3VzcGVuc2lvbiA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egc3VzcGVuc2lvbiA9XG4gICAgdW5pdCAtPiAnYVxuXG4gICgqIENvbnZlcnNpb25zLiAqKVxuXG4gIGxldCB0b19sYXp5IDogJ2Egc3VzcGVuc2lvbiAtPiAnYSBMYXp5LnQgPVxuICAgIExhenkuZnJvbV9mdW5cbiAgICAoKiBmdW4gcyAtPiBsYXp5IChzKCkpICopXG5cbiAgbGV0IGZyb21fbGF6eSAocyA6ICdhIExhenkudCkgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBzXG5cbiAgKCogW21lbW9pemVdIHR1cm5zIGFuIGFyYml0cmFyeSBzdXNwZW5zaW9uIGludG8gYSBwZXJzaXN0ZW50IHN1c3BlbnNpb24uICopXG5cbiAgbGV0IG1lbW9pemUgKHMgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZyb21fbGF6eSAodG9fbGF6eSBzKVxuXG4gICgqIFtmYWlsdXJlXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBmYWlscyB3aGVuIGZvcmNlZC4gKilcblxuICBsZXQgZmFpbHVyZSA6IF8gc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBBIHN1c3BlbnNpb24gY3JlYXRlZCBieSBbb25jZV0gaGFzIGJlZW4gZm9yY2VkIHR3aWNlLiAqKVxuICAgICAgcmFpc2UgRm9yY2VkX3R3aWNlXG5cbiAgKCogSWYgW2ZdIGlzIGEgc3VzcGVuc2lvbiwgdGhlbiBbb25jZSBmXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBjYW4gYmUgZm9yY2VkXG4gICAgIGF0IG1vc3Qgb25jZS4gSWYgaXQgaXMgZm9yY2VkIG1vcmUgdGhhbiBvbmNlLCB0aGVuIFtGb3JjZWRfdHdpY2VdIGlzXG4gICAgIHJhaXNlZC4gKilcblxuICBsZXQgb25jZSAoZiA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgbGV0IGFjdGlvbiA9IEF0b21pYy5tYWtlIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEdldCB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHN0b3JlZCBpbiBbYWN0aW9uXSwgYW5kIHdyaXRlIHRoZVxuICAgICAgICAgZnVuY3Rpb24gW2ZhaWx1cmVdIGluIGl0cyBwbGFjZSwgc28gdGhlIG5leHQgYWNjZXNzIHdpbGwgcmVzdWx0XG4gICAgICAgICBpbiBhIGNhbGwgdG8gW2ZhaWx1cmUoKV0uICopXG4gICAgICBsZXQgZiA9IEF0b21pYy5leGNoYW5nZSBhY3Rpb24gZmFpbHVyZSBpblxuICAgICAgZigpXG5cbmVuZCAoKiBTdXNwZW5zaW9uICopXG5cbmxldCByZWMgbWVtb2l6ZSB4cyA9XG4gIFN1c3BlbnNpb24ubWVtb2l6ZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgbWVtb2l6ZSB4cylcbiAgKVxuXG5sZXQgcmVjIG9uY2UgeHMgPVxuICBTdXNwZW5zaW9uLm9uY2UgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG9uY2UgeHMpXG4gIClcblxuXG5sZXQgcmVjIHppcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKCh4LCB5KSwgemlwIHhzIHlzKVxuXG5sZXQgcmVjIG1hcDIgZiB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKGYgeCB5LCBtYXAyIGYgeHMgeXMpXG5cbmxldCByZWMgaW50ZXJsZWF2ZSB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgeXMoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoeCwgaW50ZXJsZWF2ZSB5cyB4cylcblxuKCogW3NvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIHlzXS5cblxuICAgW3NvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIHhzIChjb25zIHkgeXMpXS5cblxuICAgW3NvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSAoY29ucyB5IHlzKV0uXG5cbiAgIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyBidWlsZGluZyBibG9ja3MgaW4gdGhlIGRlZmluaXRpb25cbiAgIG9mIFtzb3J0ZWRfbWVyZ2VdLiAqKVxuXG5sZXQgcmVjIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzICgpID1cbiAgbWF0Y2ggeXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh4LCB4cylcbiAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHksIHlzKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXMgPVxuICBpZiBjbXAgeCB5IDw9IDAgdGhlblxuICAgIENvbnMgKHgsIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzKVxuICBlbHNlXG4gICAgQ29ucyAoeSwgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMpXG5cbmxldCBzb3J0ZWRfbWVyZ2UgY21wIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gICAgfCBOaWwsIE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IE5pbCwgY1xuICAgIHwgYywgTmlsIC0+XG4gICAgICAgIGNcbiAgICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5cbmxldCByZWMgbWFwX2ZzdCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoeCwgXyksIHh5cykgLT5cbiAgICAgIENvbnMgKHgsIG1hcF9mc3QgeHlzKVxuXG5sZXQgcmVjIG1hcF9zbmQgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKF8sIHkpLCB4eXMpIC0+XG4gICAgICBDb25zICh5LCBtYXBfc25kIHh5cylcblxubGV0IHVuemlwIHh5cyA9XG4gIG1hcF9mc3QgeHlzLCBtYXBfc25kIHh5c1xuXG5sZXQgc3BsaXQgPVxuICB1bnppcFxuXG4oKiBbZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgIFtmaWx0ZXJfbWFwIEVpdGhlci5maW5kX2xlZnQgKG1hcCBmIHhzKV0uICopXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgeSAtPlxuICAgICAgICAgIENvbnMgKHksIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKClcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IHogLT5cbiAgICAgICAgICBDb25zICh6LCBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMpXG5cbmxldCBwYXJ0aXRpb25fbWFwIGYgeHMgPVxuICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyxcbiAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzXG5cbmxldCBwYXJ0aXRpb24gcCB4cyA9XG4gIGZpbHRlciBwIHhzLCBmaWx0ZXIgKGZ1biB4IC0+IG5vdCAocCB4KSkgeHNcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW3BlZWwgeHNzXSBpcyBhIHBhaXIgb2ZcbiAgIHRoZSBmaXJzdCBjb2x1bW4gKGEgc2VxdWVuY2Ugb2YgZWxlbWVudHMpIGFuZCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgbWF0cml4IChhIHNlcXVlbmNlIG9mIHNob3J0ZXIgcm93cykuIFRoZXNlIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBBbiBlbXB0eSByb3cgaXMgaWdub3JlZC4gKilcblxuKCogQmVjYXVzZSBbcGVlbF0gdXNlcyBbdW56aXBdLCBpdHMgYXJndW1lbnQgbXVzdCBiZSBwZXJzaXN0ZW50LiBUaGUgc2FtZVxuICAgcmVtYXJrIGFwcGxpZXMgdG8gW3RyYW5zcG9zZV0sIFtkaWFnb25hbHNdLCBbcHJvZHVjdF0sIGV0Yy4gKilcblxubGV0IHBlZWwgeHNzID1cbiAgdW56aXAgKGZpbHRlcl9tYXAgdW5jb25zIHhzcylcblxubGV0IHJlYyB0cmFuc3Bvc2UgeHNzICgpID1cbiAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgeHNzIGluXG4gIGlmIGlzX2VtcHR5IGhlYWRzIHRoZW4gYmVnaW5cbiAgICBhc3NlcnQgKGlzX2VtcHR5IHRhaWxzKTtcbiAgICBOaWxcbiAgZW5kXG4gIGVsc2VcbiAgICBDb25zIChoZWFkcywgdHJhbnNwb3NlIHRhaWxzKVxuXG4oKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gW2RpYWdvbmFsc10gdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQsIFtyZW1haW5kZXJzXSxcbiAgIHdoaWNoIGNvbnRhaW5zIHRoZSByZW1haW5kZXJzIG9mIHRoZSByb3dzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgIGRpc2NvdmVyZWQuICopXG5cbmxldCByZWMgZGlhZ29uYWxzIHJlbWFpbmRlcnMgeHNzICgpID1cbiAgbWF0Y2ggeHNzKCkgd2l0aFxuICB8IENvbnMgKHhzLCB4c3MpIC0+XG4gICAgICBiZWdpbiBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgbm9uZW1wdHkgcm93IFt4IDo6IHhzXS4gVGh1cywgdGhlIG5leHQgZGlhZ29uYWxcbiAgICAgICAgICAgICBpcyBbeCA6OiBoZWFkc106IHRoaXMgZGlhZ29uYWwgYmVnaW5zIHdpdGggW3hdIGFuZCBjb250aW51ZXMgd2l0aFxuICAgICAgICAgICAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIGV2ZXJ5IHJvdyBpbiBbcmVtYWluZGVyc10uIEluIHRoZSByZWN1cnNpdmVcbiAgICAgICAgICAgICBjYWxsLCB0aGUgYXJndW1lbnQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIFt4cyA6OlxuICAgICAgICAgICAgIHRhaWxzXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3csIFt4c10sXG4gICAgICAgICAgICAgYW5kIHRoYXQgd2Uga2VlcCB0aGUgdGFpbHMgb2YgdGhlIHByZS1leGlzdGluZyByZW1haW5pbmcgcm93cy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoY29ucyB4IGhlYWRzLCBkaWFnb25hbHMgKGNvbnMgeHMgdGFpbHMpIHhzcylcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgZW1wdHkgcm93LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlhZ29uYWwgaXNcbiAgICAgICAgICAgICBqdXN0IFtoZWFkc10sIGFuZCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGgganVzdCBbdGFpbHNdLFxuICAgICAgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3cuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGhlYWRzLCBkaWFnb25hbHMgdGFpbHMgeHNzKVxuICAgICAgZW5kXG4gIHwgTmlsIC0+XG4gICAgICAoKiBUaGVyZSBhcmUgbm8gbW9yZSByb3dzIHRvIGJlIGRpc2NvdmVyZWQuIFRoZXJlIHJlbWFpbnMgdG8gZXhoYXVzdFxuICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgdHJhbnNwb3NlIHJlbWFpbmRlcnMgKClcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW2RpYWdvbmFscyB4c3NdIGlzXG4gICB0aGUgc2VxdWVuY2Ugb2YgaXRzIGRpYWdvbmFscy5cblxuICAgVGhlIGZpcnN0IGRpYWdvbmFsIGNvbnRhaW5zIGp1c3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBmaXJzdCByb3cuIFRoZSBzZWNvbmQgZGlhZ29uYWwgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBzZWNvbmQgcm93IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHJvdzsgYW5kIHNvIG9uLlxuICAgVGhpcyBraW5kIG9mIGRpYWdvbmFsIGlzIGluIGZhY3Qgc29tZXRpbWVzIGtub3duIGFzIGFuIGFudGlkaWFnb25hbC5cblxuICAgLSBFdmVyeSBkaWFnb25hbCBpcyBhIGZpbml0ZSBzZXF1ZW5jZS5cbiAgIC0gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBmaW5pdGUgKGluIGVpdGhlciBkaXJlY3Rpb24pLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIG11c3QgYmUgcGVyc2lzdGVudC4gKilcblxubGV0IGRpYWdvbmFscyB4c3MgPVxuICBkaWFnb25hbHMgZW1wdHkgeHNzXG5cbmxldCBtYXBfcHJvZHVjdCBmIHhzIHlzID1cbiAgY29uY2F0IChkaWFnb25hbHMgKFxuICAgIG1hcCAoZnVuIHggLT5cbiAgICAgIG1hcCAoZnVuIHkgLT5cbiAgICAgICAgZiB4IHlcbiAgICAgICkgeXNcbiAgICApIHhzXG4gICkpXG5cbmxldCBwcm9kdWN0IHhzIHlzID1cbiAgbWFwX3Byb2R1Y3QgKGZ1biB4IHkgLT4gKHgsIHkpKSB4cyB5c1xuXG5sZXQgb2ZfZGlzcGVuc2VyIGl0ID1cbiAgbGV0IHJlYyBjICgpID1cbiAgICBtYXRjaCBpdCgpIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgTmlsXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQ29ucyAoeCwgYylcbiAgaW5cbiAgY1xuXG5sZXQgdG9fZGlzcGVuc2VyIHhzID1cbiAgbGV0IHMgPSByZWYgeHMgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggKCFzKSgpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgcyA6PSB4cztcbiAgICAgICAgU29tZSB4XG5cblxuXG5sZXQgcmVjIGludHMgaSAoKSA9XG4gIENvbnMgKGksIGludHMgKGkgKyAxKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG5cbigqIFVURiBjb2RlY3MgdG9vbHMgKilcblxudHlwZSB1dGZfZGVjb2RlID0gaW50XG4oKiBUaGlzIGlzIGFuIGludCBbMHhEVVVVVVVVXSBkZWNvbXBvc2VkIGFzIGZvbGxvd3M6XG4gICAtIFtEXSBpcyBmb3VyIGJpdHMgZm9yIGRlY29kZSBpbmZvcm1hdGlvbiwgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCBpZiB0aGVcbiAgICAgZGVjb2RlIGlzIHZhbGlkLiBUaGUgdGhyZWUgbG93ZXIgYml0cyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgIGZyb20gdGhlIHNvdXJjZSB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGRlY29kZS5cbiAgIC0gW1VVVVVVVV0gaXMgdGhlIGRlY29kZWQgVW5pY29kZSBjaGFyYWN0ZXIgb3IgdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnRcbiAgICAgY2hhcmFjdGVyIFUrRkZGRCBpZiBmb3IgaW52YWxpZCBkZWNvZGVzLiAqKVxuXG5sZXQgdmFsaWRfYml0ID0gMjdcbmxldCBkZWNvZGVfYml0cyA9IDI0XG5cbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2lzX3ZhbGlkIGQgPSAoZCBsc3IgdmFsaWRfYml0KSA9IDFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2xlbmd0aCBkID0gKGQgbHNyIGRlY29kZV9iaXRzKSBsYW5kIDBiMTExXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV91Y2hhciBkID0gdW5zYWZlX29mX2ludCAoZCBsYW5kIDB4RkZGRkZGKVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGUgbiB1ID0gKCg4IGxvciBuKSBsc2wgZGVjb2RlX2JpdHMpIGxvciAodG9faW50IHUpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pbnZhbGlkIG4gPSAobiBsc2wgZGVjb2RlX2JpdHMpIGxvciByZXBcblxubGV0IHV0Zl84X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+IDFcbnwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDNcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgdXRmXzE2X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IHVuc2FmZV9lc2NhcGUgcyA9XG4gICgqIFdlIHBlcmZvcm0gdHdvIHBhc3NlcyBvbiB0aGUgaW5wdXQgc2VxdWVuY2UsIG9uZSB0byBjb21wdXRlIHRoZVxuICAgICByZXN1bHQgc2l6ZSBhbmQgb25lIHRvIHdyaXRlIHRoZSByZXN1bHQuXG5cbiAgICAgIzExNTA4LCAjMTE1MDk6IFRoaXMgbG9naWMgd291bGQgYmUgaW5jb3JyZWN0IGluIHByZXNlbmNlIG9mXG4gICAgIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIHRvIHRoZSBpbnB1dCwgbWFraW5nIHRoZSB1c2Ugb2ZcbiAgICAgW3Vuc2FmZV9zZXRdIGJlbG93IG1lbW9yeS11bnNhZmUuXG5cbiAgICAgUHJlY29uZGl0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzYWZlbHkgY2FsbGVkIG9uOlxuICAgICAtIGFuIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlXG4gICAgIC0gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlICh0aGUgZnVuY3Rpb24gdGFrZXMgb3duZXJzaGlwKVxuXG4gICAgIEluIGVpdGhlciBjYXNlIHdlIHJldHVybiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UuXG4gICopXG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gc1xuICBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IGVzY2FwZWQgYiA9XG4gIGxldCBiID0gY29weSBiIGluXG4gICgqIFdlIGNvcHkgb3VyIGlucHV0IHRvIG9idGFpbiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgW2JdXG4gICAgIHRvIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uICopXG4gIHVuc2FmZV9lc2NhcGUgYlxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBidHMgKEIudW5zYWZlX2VzY2FwZSBiKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3RyaW5nX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoIDAgeFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7IGxlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+IHVuaXQpIC0+IE11dGV4LnQgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIlxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHN0YXRlID1cbnwgUnVubmluZ1xufCBGaW5pc2hlZCBvZiAoJ2EsIGV4bikgcmVzdWx0XG5cbnR5cGUgJ2EgdCA9IHtcbiAgZG9tYWluIDogUmF3LnQ7XG4gIHRlcm1fbXV0ZXg6IE11dGV4LnQ7XG4gIHRlcm1fY29uZGl0aW9uOiBDb25kaXRpb24udDtcbiAgdGVybV9zdGF0ZTogJ2Egc3RhdGUgcmVmICgqIHByb3RlY3RlZCBieSBbdGVybV9tdXRleF0gKilcbn1cblxubW9kdWxlIERMUyA9IHN0cnVjdFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqLnQgYXJyYXlcblxuICBsZXQgdW5pcXVlX3ZhbHVlID0gT2JqLnJlcHIgKHJlZiAwKVxuXG4gIGV4dGVybmFsIGdldF9kbHNfc3RhdGUgOiB1bml0IC0+IGRsc19zdGF0ZSA9IFwiJWRsc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfc2V0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlX2RscyAoKSA9XG4gICAgbGV0IHN0ID0gQXJyYXkubWFrZSA4IHVuaXF1ZV92YWx1ZSBpblxuICAgIHNldF9kbHNfc3RhdGUgc3RcblxuICBsZXQgXyA9IGNyZWF0ZV9kbHMgKClcblxuICB0eXBlICdhIGtleSA9IGludCAqICh1bml0IC0+ICdhKVxuXG4gIGxldCBrZXlfY291bnRlciA9IEF0b21pYy5tYWtlIDBcblxuICB0eXBlIGtleV9pbml0aWFsaXplciA9XG4gICAgS0k6ICdhIGtleSAqICgnYSAtPiAnYSkgLT4ga2V5X2luaXRpYWxpemVyXG5cbiAgbGV0IHBhcmVudF9rZXlzID0gQXRvbWljLm1ha2UgKFtdIDoga2V5X2luaXRpYWxpemVyIGxpc3QpXG5cbiAgbGV0IHJlYyBhZGRfcGFyZW50X2tleSBraSA9XG4gICAgbGV0IGwgPSBBdG9taWMuZ2V0IHBhcmVudF9rZXlzIGluXG4gICAgaWYgbm90IChBdG9taWMuY29tcGFyZV9hbmRfc2V0IHBhcmVudF9rZXlzIGwgKGtpIDo6IGwpKVxuICAgIHRoZW4gYWRkX3BhcmVudF9rZXkga2lcblxuICBsZXQgbmV3X2tleSA/c3BsaXRfZnJvbV9wYXJlbnQgaW5pdF9vcnBoYW4gPVxuICAgIGxldCBpZHggPSBBdG9taWMuZmV0Y2hfYW5kX2FkZCBrZXlfY291bnRlciAxIGluXG4gICAgbGV0IGsgPSAoaWR4LCBpbml0X29ycGhhbikgaW5cbiAgICBiZWdpbiBtYXRjaCBzcGxpdF9mcm9tX3BhcmVudCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNwbGl0IC0+IGFkZF9wYXJlbnRfa2V5IChLSShrLCBzcGxpdCkpXG4gICAgZW5kO1xuICAgIGtcblxuICAoKiBJZiBuZWNlc3NhcnksIGdyb3cgdGhlIGN1cnJlbnQgZG9tYWluJ3MgbG9jYWwgc3RhdGUgYXJyYXkgc3VjaCB0aGF0IFtpZHhdXG4gICAqIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5LiAqKVxuICBsZXQgbWF5YmVfZ3JvdyBpZHggPVxuICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICBsZXQgc3ogPSBBcnJheS5sZW5ndGggc3QgaW5cbiAgICBpZiBpZHggPCBzeiB0aGVuIHN0XG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBjb21wdXRlX25ld19zaXplIHMgPVxuICAgICAgICBpZiBpZHggPCBzIHRoZW4gcyBlbHNlIGNvbXB1dGVfbmV3X3NpemUgKDIgKiBzKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3ogPSBjb21wdXRlX25ld19zaXplIHN6IGluXG4gICAgICBsZXQgbmV3X3N0ID0gQXJyYXkubWFrZSBuZXdfc3ogdW5pcXVlX3ZhbHVlIGluXG4gICAgICBBcnJheS5ibGl0IHN0IDAgbmV3X3N0IDAgc3o7XG4gICAgICBzZXRfZGxzX3N0YXRlIG5ld19zdDtcbiAgICAgIG5ld19zdFxuICAgIGVuZFxuXG4gIGxldCBzZXQgKGlkeCwgX2luaXQpIHggPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGVuc3VyZXMgdGhhdCBmbGFtYmRhIGRvZXMgbm90IGxvb2sgYXQgdGhlIHR5cGUgb2ZcbiAgICAgKiBbeF0sIHdoaWNoIG1heSBiZSBhIFtmbG9hdF0gYW5kIGNvbmNsdWRlIHRoYXQgdGhlIFtzdF0gaXMgYSBmbG9hdCBhcnJheS5cbiAgICAgKiBXZSBkbyBub3Qgd2FudCBPQ2FtbCdzIGZsb2F0IGFycmF5IG9wdGltaXNhdGlvbiBraWNraW5nIGluIGhlcmUuICopXG4gICAgc3QuKGlkeCkgPC0gT2JqLnJlcHIgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuICBsZXQgZ2V0IChpZHgsIGluaXQpID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCB2ID0gc3QuKGlkeCkgaW5cbiAgICBpZiB2ID09IHVuaXF1ZV92YWx1ZSB0aGVuXG4gICAgICBsZXQgdicgPSBPYmoucmVwciAoaW5pdCAoKSkgaW5cbiAgICAgIHN0LihpZHgpIDwtIChTeXMub3BhcXVlX2lkZW50aXR5IHYnKTtcbiAgICAgIE9iai5tYWdpYyB2J1xuICAgIGVsc2UgT2JqLm1hZ2ljIHZcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IChpbnQgKiBPYmoudCkgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKEtJICgoaWR4LCBfKSBhcyBrLCBzcGxpdCkpIC0+XG4gICAgICAgICAgIChpZHgsIE9iai5yZXByIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDogKGludCAqIE9iai50KSBsaXN0KSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpZHgsIHYpIC0+XG4gICAgICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluIHN0LihpZHgpIDwtIHYpXG4gICAgICBsXG5cbmVuZFxuXG4oKioqKioqKiogSWRlbnRpdHkgKioqKioqKioqKilcblxubGV0IGdldF9pZCB7IGRvbWFpbjsgXyB9ID0gZG9tYWluXG5cbmxldCBzZWxmICgpID0gUmF3LnNlbGYgKClcblxubGV0IGlzX21haW5fZG9tYWluICgpID0gKHNlbGYgKCkgOj4gaW50KSA9IDBcblxuKCoqKioqKioqIENhbGxiYWNrcyAqKioqKioqKioqKVxuXG4oKiBmaXJzdCBzcGF3biwgZG9tYWluIHN0YXJ0dXAgYW5kIGF0IGV4aXQgZnVuY3Rpb25hbGl0eSAqKVxubGV0IGZpcnN0X2RvbWFpbl9zcGF3bmVkID0gQXRvbWljLm1ha2UgZmFsc2VcblxubGV0IGZpcnN0X3NwYXduX2Z1bmN0aW9uID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBiZWZvcmVfZmlyc3Rfc3Bhd24gZiA9XG4gIGlmIEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlyc3QgZG9tYWluIGFscmVhZHkgc3Bhd25lZFwiKVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG9sZF9mID0gIWZpcnN0X3NwYXduX2Z1bmN0aW9uIGluXG4gICAgbGV0IG5ld19mICgpID0gb2xkX2YgKCk7IGYgKCkgaW5cbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSBuZXdfZlxuICBlbmRcblxubGV0IGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKSA9XG4gIGlmIG5vdCAoQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCkgdGhlbiBiZWdpblxuICAgIEF0b21pYy5zZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdHJ1ZTtcbiAgICAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24oKTtcbiAgICAoKiBSZWxlYXNlIHRoZSBvbGQgZnVuY3Rpb24gKilcbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSAoZnVuICgpIC0+ICgpKVxuICBlbmRcblxubGV0IGF0X2V4aXRfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPiAoZnVuICgpIC0+ICgpKSlcblxubGV0IGF0X2V4aXQgZiA9XG4gIGxldCBvbGRfZXhpdCA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICAoKiBUaGUgZG9tYWluIHRlcm1pbmF0aW9uIGNhbGxiYWNrcyAoW2F0X2V4aXRdKSBhcmUgcnVuIGluXG4gICAgICAgbGFzdC1pbi1maXJzdC1vdXQgKExJRk8pIG9yZGVyIGluIG9yZGVyIHRvIGJlIHN5bW1ldHJpYyB3aXRoIHRoZSBkb21haW5cbiAgICAgICBjcmVhdGlvbiBjYWxsYmFja3MgKFthdF9lYWNoX3NwYXduXSkgd2hpY2ggcnVuIGluIGZpcnN0LWluLWZpc3J0LW91dFxuICAgICAgIChGSUZPKSBvcmRlci4gKilcbiAgICBmICgpOyBvbGRfZXhpdCAoKVxuICBpblxuICBETFMuc2V0IGF0X2V4aXRfa2V5IG5ld19leGl0XG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgbGV0IGYgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGYgKClcblxubGV0IF8gPSBTdGRsaWIuZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgOj0gZG9fYXRfZXhpdFxuXG4oKioqKioqKiBDcmVhdGlvbiBhbmQgVGVybWluYXRpb24gKioqKioqKiopXG5cbmxldCBzcGF3biBmID1cbiAgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpO1xuICBsZXQgcGsgPSBETFMuZ2V0X2luaXRpYWxfa2V5cyAoKSBpblxuXG4gICgqIFRoZSBbdGVybV9tdXRleF0gYW5kIFt0ZXJtX2NvbmRpdGlvbl0gYXJlIHVzZWQgdG9cbiAgICAgc3luY2hyb25pemUgd2l0aCB0aGUgam9pbmluZyBkb21haW5zICopXG4gIGxldCB0ZXJtX211dGV4ID0gTXV0ZXguY3JlYXRlICgpIGluXG4gIGxldCB0ZXJtX2NvbmRpdGlvbiA9IENvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgbGV0IHRlcm1fc3RhdGUgPSByZWYgUnVubmluZyBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoXG4gICAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgICAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgICAgICAgcmVzXG4gICAgICB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gZXggLT4gRXJyb3IgZXhcbiAgICBpblxuXG4gICAgbGV0IHJlc3VsdCcgPVxuICAgICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICAgIHRlcm1pbmF0ZXMgbm9ybWFsbHkgb3IgZXhjZXB0aW9uYWxseS4gKilcbiAgICAgIG1hdGNoIGRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCAoKSAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIGV4IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIF8gLT5cbiAgICAgICAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICAgRXJyb3IgZXhcbiAgICAgICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgICAgICAgKCogSWYgYm90aCB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIGFuZCB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrc1xuICAgICAgICAgICAgICAgICByYWlzZWQgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgZW5kXG4gICAgaW5cblxuICAgICgqIFN5bmNocm9uaXplIHdpdGggam9pbmluZyBkb21haW5zICopXG4gICAgTXV0ZXgubG9jayB0ZXJtX211dGV4O1xuICAgIG1hdGNoICF0ZXJtX3N0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgdGVybV9zdGF0ZSA6PSBGaW5pc2hlZCByZXN1bHQnO1xuICAgICAgICBDb25kaXRpb24uYnJvYWRjYXN0IHRlcm1fY29uZGl0aW9uO1xuICAgIHwgRmluaXNoZWQgXyAtPlxuICAgICAgICBmYWlsd2l0aCBcImludGVybmFsIGVycm9yOiBBbSBJIGFscmVhZHkgZmluaXNoZWQ/XCJcbiAgICAoKiBbdGVybV9tdXRleF0gaXMgdW5sb2NrZWQgaW4gdGhlIHJ1bnRpbWUgYWZ0ZXIgdGhlIGNsZWFudXAgZnVuY3Rpb25zIG9uXG4gICAgICAgdGhlIEMgc2lkZSBhcmUgZmluaXNoZWQuICopXG4gIGluXG4gIHsgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9tdXRleDtcbiAgICB0ZXJtX211dGV4O1xuICAgIHRlcm1fY29uZGl0aW9uO1xuICAgIHRlcm1fc3RhdGUgfVxuXG5sZXQgam9pbiB7IHRlcm1fbXV0ZXg7IHRlcm1fY29uZGl0aW9uOyB0ZXJtX3N0YXRlOyBfIH0gPVxuICBNdXRleC5sb2NrIHRlcm1fbXV0ZXg7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggIXRlcm1fc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX2NvbmRpdGlvbiB0ZXJtX211dGV4O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgTXV0ZXgudW5sb2NrIHRlcm1fbXV0ZXg7XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBsb29wICgpIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICB2ZXJib3NlIDogaW50O1xuICBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIHN0YWNrX2xpbWl0IDogaW50O1xuICBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5cbmxldCBldmVudGxvZ19wYXVzZSAoKSA9ICgpXG5sZXQgZXZlbnRsb2dfcmVzdW1lICgpID0gKClcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIEF0b21pYy50XG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiBBdG9taWMuZ2V0IGFyZWMuYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gQXRvbWljLm1ha2UgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gQXRvbWljLnNldCBhIGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgYXNzaWduIChkc3Q6IHQpIChzcmM6IHQpID1cbiAgICBBcnJheTEuYmxpdCBzcmMgZHN0XG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHMnID0gY3JlYXRlKCkgaW4gYXNzaWduIHMnIHM7IHMnXG5cbiAgKCogVGhlIHNlZWQgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuICBJdCBjYW4gYmUganVzdCBvbmUgaW50ZWdlcixcbiAgICAgYnV0IGl0IGNhbiBhbHNvIGJlIDEyIG9yIG1vcmUgYnl0ZXMuICBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlLFxuICAgICB3ZSBzZXJpYWxpemUgdGhlIGFycmF5IGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHRoZW4gaGFzaCB0aGVcbiAgICAgc2VxdWVuY2Ugd2l0aCBNRDUgKERpZ2VzdC5ieXRlcykuICBNRDUgZ2l2ZXMgb25seSAxMjggYml0cyB3aGlsZVxuICAgICB3ZSBuZWVkIDI1NiBiaXRzLCBzbyB3ZSBoYXNoIHR3aWNlIHdpdGggZGlmZmVyZW50IHN1ZmZpeGVzLiAqKVxuICBsZXQgcmVpbml0IHMgc2VlZCA9XG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGxldCBiID0gQnl0ZXMuY3JlYXRlIChuICogOCArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGIgKGkgKiA4KSAoSW50NjQub2ZfaW50IHNlZWQuKGkpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDEnO1xuICAgIGxldCBkMSA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDInO1xuICAgIGxldCBkMiA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgc2V0IHMgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSA4KVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgOClcblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcyA9IGNyZWF0ZSgpIGluIHJlaW5pdCBzIHNlZWQ7IHNcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPVxuICAgIG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDEwNzM3NDE4MjQgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgMHgzRkZGX0ZGRkZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpICopXG4gIGxldCByZWMgaW50YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBiaXRzIHMgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IDB4M0ZGRkZGRkYgLSBuICsgMSB0aGVuIGludGF1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC50b19pbnQgKG5leHQgcykgbGFuZCBtYXhfaW50IGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIHRoZSBsb2FkIGZhY3RvciBiZWNvbWVzIHRvbyBoaWdoLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSBBdG9taWMubWFrZSByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IEF0b21pYy5zZXQgcmFuZG9taXplZCB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9IEF0b21pYy5nZXQgcmFuZG9taXplZFxuXG5sZXQgcHJuZ19rZXkgPSBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSkgZWxzZSAwXG4gIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlclxuICogICAgLSBMaW5rXG4gKiAgICAtIERhdGEgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDIgKCogQ0FNTF9FUEhFX0ZJUlNUX0tFWSBpbiB3ZWFrLmggKilcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG4oKiBJbml0aWFsaXNlIGRvbWFpbiBsb2NhbCBzdGF0ZSAqKVxubW9kdWxlIERMUyA9IERvbWFpbi5ETFNcblxubGV0IHN0ZGJ1Zl9rZXkgPSBETFMubmV3X2tleSBwcF9tYWtlX2J1ZmZlclxubGV0IF8gPSBETFMuc2V0IHN0ZGJ1Zl9rZXkgc3RkYnVmXG5cbmxldCBzdHJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgZm9ybWF0dGVyX29mX2J1ZmZlciAoRExTLmdldCBzdGRidWZfa2V5KSlcbmxldCBfID0gRExTLnNldCBzdHJfZm9ybWF0dGVyX2tleSBzdHJfZm9ybWF0dGVyXG5cbmxldCBidWZmZXJlZF9vdXRfc3RyaW5nIGtleSBzdHIgb2ZzIGxlbiA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIChEb21haW4uRExTLmdldCBrZXkpIHN0ciBvZnMgbGVuXG5cbmxldCBidWZmZXJlZF9vdXRfZmx1c2ggb2Mga2V5ICgpID1cbiAgbGV0IGJ1ZiA9IERvbWFpbi5ETFMuZ2V0IGtleSBpblxuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHIgMCBsZW4gO1xuICBTdGRsaWIuZmx1c2ggb2M7XG4gIEJ1ZmZlci5jbGVhciBidWZcblxubGV0IHN0ZF9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcbmxldCBlcnJfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5cbmxldCBzdGRfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBzdGRfZm9ybWF0dGVyX2tleSBzdGRfZm9ybWF0dGVyXG5cbmxldCBlcnJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBlcnJfZm9ybWF0dGVyX2tleSBlcnJfZm9ybWF0dGVyXG5cbmxldCBnZXRfc3RkX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfZXJyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RkYnVmICgpID0gRExTLmdldCBzdGRidWZfa2V5XG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID1cbiAgbGV0IHN0ZGJ1ZiA9IERMUy5nZXQgc3RkYnVmX2tleSBpblxuICBsZXQgc3RyX2Zvcm1hdHRlciA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXkgaW5cbiAgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG5sZXQgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBvdXRwdXQnID0gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGluXG4gICAgbGV0IGZsdXNoJyAoKSA9XG4gICAgICBvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBidWYpIDAgKEJ1ZmZlci5sZW5ndGggYnVmKTtcbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBmbHVzaCAoKVxuICAgIGluXG4gICAgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0JyBmbHVzaCcpXG5cbmxldCBzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggdiA9IHBwX29wZW5faGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fdmJveCB2ID0gcHBfb3Blbl92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9odmJveCB2ID0gcHBfb3Blbl9odmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faG92Ym94IHYgPSBwcF9vcGVuX2hvdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fYm94IHYgPSBwcF9vcGVuX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX2JveCB2ID0gcHBfY2xvc2VfYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9zdGFnIHYgPSBwcF9vcGVuX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9zdGFnIHYgPSBwcF9jbG9zZV9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYXMgdiB3ID0gcHBfcHJpbnRfYXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X3N0cmluZyB2ID0gcHBfcHJpbnRfc3RyaW5nIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID0gRmxvYXQuaHlwb3QgeC5yZSB4LmltXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxuXG5leHRlcm5hbCBzZXRfYnVmZmVyZWQgOiB0IC0+IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZXRfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc19idWZmZXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19idWZmZXJlZFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IC4uXG5leHRlcm5hbCBwZXJmb3JtIDogJ2EgdCAtPiAnYSA9IFwiJXBlcmZvcm1cIlxuXG50eXBlIGV4biArPSBVbmhhbmRsZWQ6ICdhIHQgLT4gZXhuXG5leGNlcHRpb24gQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG5sZXQgKCkgPVxuICBsZXQgcHJpbnRlciA9IGZ1bmN0aW9uXG4gICAgfCBVbmhhbmRsZWQgeCAtPlxuICAgICAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCJTdGRsaWIuRWZmZWN0LlVuaGFuZGxlZCglcylcIlxuICAgICAgICAgICAgKFByaW50ZXhjLnN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgQEAgT2JqLnJlcHIgeClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSBtc2dcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIHByaW50ZXJcblxuKCogUmVnaXN0ZXIgdGhlIGV4Y2VwdGlvbnMgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gYWNjZXNzIGl0ICopXG50eXBlIF8gdCArPSBTaG91bGRfbm90X3NlZV90aGlzX18gOiB1bml0IHRcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LlVuaGFuZGxlZFwiXG4gICAgICAgICAgKFVuaGFuZGxlZCBTaG91bGRfbm90X3NlZV90aGlzX18pXG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCJcbiAgICAgICAgICBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbnR5cGUgKCdhLCAnYikgc3RhY2tcblxuZXh0ZXJuYWwgcmVzdW1lIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJlc3VtZVwiXG5leHRlcm5hbCBydW5zdGFjayA6ICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gJ2IgPSBcIiVydW5zdGFja1wiXG5cbm1vZHVsZSBEZWVwID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuICB0eXBlIGxhc3RfZmliZXJcblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBsZXQgY29udGludWUgayB2ID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biB4IC0+IHgpIHZcblxuICBsZXQgZGlzY29udGludWUgayBlID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGVcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayBlIGJ0ID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+XG4gICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgZVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgbWF0Y2hfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgaGFuZGxlci5yZXRjIGhhbmRsZXIuZXhuYyBlZmZjIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIHR5cGUgJ2EgZWZmZWN0X2hhbmRsZXIgPVxuICAgIHsgZWZmYzogJ2IuICdiIHQgLT4gKCgnYiwnYSkgY29udGludWF0aW9uIC0+ICdhKSBvcHRpb24gfVxuXG4gIGxldCB0cnlfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYycgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG4gIHR5cGUgbGFzdF9maWJlclxuXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cblxuICBsZXQgZmliZXIgOiB0eXBlIGEgYi4gKGEgLT4gYikgLT4gKGEsIGIpIGNvbnRpbnVhdGlvbiA9IGZ1biBmIC0+XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0IHR5cGUgXyB0ICs9IEluaXRpYWxfc2V0dXBfXyA6IGEgdCBlbmQgaW5cbiAgICBsZXQgZXhjZXB0aW9uIEUgb2YgKGEsYikgY29udGludWF0aW9uIGluXG4gICAgbGV0IGYnICgpID0gZiAocGVyZm9ybSBNLkluaXRpYWxfc2V0dXBfXykgaW5cbiAgICBsZXQgZXJyb3IgXyA9IGZhaWx3aXRoIFwiaW1wb3NzaWJsZVwiIGluXG4gICAgbGV0IGVmZmMgZWZmIGsgX2xhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggZWZmIHdpdGhcbiAgICAgIHwgTS5Jbml0aWFsX3NldHVwX18gLT4gcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHZcblxuICBsZXQgY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biB4IC0+IHgpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gcmFpc2UgZSkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgdiBidCBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgdiBoYW5kbGVyXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9XG4gICAgdHJ5IFNvbWUgKFN0cmluZy5pbmRleF9mcm9tIHN0ciBzdGFydCAnXFxuJykgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLiBGb3IgZXhhbXBsZSwgW1R5Y29uIChcImxpc3RcIiwgWyBJbnRlZ2VyIF0pXVxuICAgICAgcmVwcmVzZW50cyBbaW50IGxpc3RdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbUmVjdXJzaXZlXVxuICAgICAgZ3JhbW1hciBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBncmFtbWFyICogZGVmbiBsaXN0XG4gICgqKiBbUmVjdXJzaXZlIChncmFtbWFyLCBkZWZpbml0aW9ucyldIGFsbG93cyBbZ3JhbW1hcl0gdG8gcmVmZXIgdG8gdHlwZSBjb25zdHJ1Y3RvcnNcbiAgICAgIGZyb20gdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSBbZGVmaW5pdGlvbnNdLiBUaGUgZGVmaW5pdGlvbnMgbWF5IGFsc28gcmVmZXIgdG8gZWFjaFxuICAgICAgb3RoZXJzJyB0eXBlIGNvbnN0cnVjdG9ycy5cblxuICAgICAgT3JkaW5hcmlseSwgW2dyYW1tYXJdIGl0c2VsZiBpcyBqdXN0IGEgW1R5Y29uXSBhcmd1bWVudCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgaXQgY2FuXG4gICAgICBiZSBhbnkgZ3JhbW1hci5cblxuICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZGVmaW5lIGEgYmluYXJ5IHRyZWUgcGFyYW1ldGVyaXplZCBieSBhIHR5cGVcbiAgICAgIHN0b3JlZCBhdCBpdHMgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJub2RlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gTGlzdCAoTWFueSAoVHljb24gXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBOb3JtYWxseSwgdGhlIHR5cGUgb2YgYSB0cmVlIHN0b3JpbmcgaW50ZWdlcnMgd291bGQgYmUgd3JpdHRlbiBsaWtlIHRoaXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZSAoVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSksIGRlZm5zKVxuICAgICAgXX1cblxuICAgICAgSXQgaXMgZXF1aXZhbGVudCwgdGhvdWdoIG5lZWRsZXNzbHkgdmVyYm9zZSwgdG8gcmVwbGFjZSB0aGUgW1R5Y29uXSByZWZlcmVuY2Ugd2l0aFxuICAgICAgdGhlIGdyYW1tYXIgb2YgW1widHJlZVwiXSwgc3Vic3RpdHV0aW5nIFtJbnRlZ2VyXSBmb3IgW1R5dmFyIFwiYVwiXTpcblxuICAgICAge1tcbiAgICAgICAgUmVjdXJzaXZlXG4gICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJUcmVlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICwgZGVmbnMgKVxuICAgICAgXX1cbiAgKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcbiIsImxldCB1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IEVtcHR5IH1cbmxldCBib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBCb29sIH1cbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQ2hhciB9XG5sZXQgaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gRmxvYXQgfVxubGV0IGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgc2V4cF90X3NleHBfZ3JhbW1hciA6IFNleHAudCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIlNleHAudFwiIH1cbmxldCByZWZfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcblxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIG9wdGlvbiBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IE9wdGlvbiB1bnR5cGVkIH1cbjs7XG5cbmxldCBsaXN0X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gbGlzdCBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGFycmF5X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gYXJyYXkgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBlbXB0eV9zZXhwX2dyYW1tYXIgOiBfIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxubGV0IG9wYXF1ZV9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbmxldCBmdW5fc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG4iLCIoKiBVdGlsaXR5IE1vZHVsZSBmb3IgUy1leHByZXNzaW9uIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBcblxuKCogQ29udmVyc2lvbiBvZiBPQ2FtbC12YWx1ZXMgdG8gUy1leHByZXNzaW9ucyAqKVxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiAnJS4xN2cnIGlzIGd1YXJhbnRlZWQgdG8gYmUgcm91bmQtdHJpcHBhYmxlLlxuXG4gICAnJS4xNWcnIHdpbGwgYmUgcm91bmQtdHJpcHBhYmxlIGFuZCBub3QgaGF2ZSBub2lzZSBhdCB0aGUgbGFzdCBkaWdpdCBvciB0d28gZm9yIGEgZmxvYXRcbiAgIHdoaWNoIHdhcyBjb252ZXJ0ZWQgZnJvbSBhIGRlY2ltYWwgKHN0cmluZykgd2l0aCA8PSAxNSBzaWduaWZpY2FudCBkaWdpdHMuICBTbyBpdCdzXG4gICB3b3J0aCB0cnlpbmcgZmlyc3QgdG8gYXZvaWQgdGhpbmdzIGxpa2UgXCIzLjE0MDAwMDAwMDAwMDAwMDFcIi5cblxuICAgU2VlIGNvbW1lbnQgYWJvdmUgW3RvX3N0cmluZ19yb3VuZF90cmlwcGFibGVdIGluIHshQ29yZS5GbG9hdH0gZm9yXG4gICBkZXRhaWxlZCBleHBsYW5hdGlvbiBhbmQgZXhhbXBsZXMuICopXG5sZXQgZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgPVxuICByZWYgKGZ1biB4IC0+XG4gICAgbGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1R1wiIHggaW5cbiAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4KVxuOztcblxubGV0IHJlYWRfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IHdyaXRlX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCBsaXN0X21hcCBmIGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGwgfmYpXG5sZXQgc2V4cF9vZl91bml0ICgpID0gTGlzdCBbXVxubGV0IHNleHBfb2ZfYm9vbCBiID0gQXRvbSAoc3RyaW5nX29mX2Jvb2wgYilcbmxldCBzZXhwX29mX3N0cmluZyBzdHIgPSBBdG9tIHN0clxubGV0IHNleHBfb2ZfYnl0ZXMgYnl0ZXMgPSBBdG9tIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgc2V4cF9vZl9jaGFyIGMgPSBBdG9tIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgc2V4cF9vZl9pbnQgbiA9IEF0b20gKHN0cmluZ19vZl9pbnQgbilcbmxldCBzZXhwX29mX2Zsb2F0IG4gPSBBdG9tICghZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgbilcbmxldCBzZXhwX29mX2ludDMyIG4gPSBBdG9tIChJbnQzMi50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX2ludDY0IG4gPSBBdG9tIChJbnQ2NC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX25hdGl2ZWludCBuID0gQXRvbSAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfcmVmIHNleHBfb2ZfX2EgcmYgPSBzZXhwX29mX19hICFyZlxubGV0IHNleHBfb2ZfbGF6eV90IHNleHBfb2ZfX2EgbHYgPSBzZXhwX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgWyBzZXhwX29mX19hIHggXVxuICB8IFNvbWUgeCAtPiBMaXN0IFsgQXRvbSBcInNvbWVcIjsgc2V4cF9vZl9fYSB4IF1cbiAgfCBOb25lIHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgW11cbiAgfCBOb25lIC0+IEF0b20gXCJub25lXCJcbjs7XG5cbmxldCBzZXhwX29mX3BhaXIgc2V4cF9vZl9fYSBzZXhwX29mX19iIChhLCBiKSA9IExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYiBdXG5cbmxldCBzZXhwX29mX3RyaXBsZSBzZXhwX29mX19hIHNleHBfb2ZfX2Igc2V4cF9vZl9fYyAoYSwgYiwgYykgPVxuICBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGI7IHNleHBfb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgc2V4cF9vZl9saXN0IHNleHBfb2ZfX2EgbHN0ID0gTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBsc3QgfmY6c2V4cF9vZl9fYSkpXG5cbmxldCBzZXhwX29mX2FycmF5IHNleHBfb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2hhc2h0Ymwgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IExpc3QgWyBzZXhwX29mX2tleSBrOyBzZXhwX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgc2V4cF9vZl9vcGFxdWUgXyA9IEF0b20gXCI8b3BhcXVlPlwiXG5sZXQgc2V4cF9vZl9mdW4gXyA9IEF0b20gXCI8ZnVuPlwiXG5cbigqIEV4Y2VwdGlvbiBjb252ZXJ0ZXIgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgKilcblxubW9kdWxlIEV4bl9jb252ZXJ0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhlc2UgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgY29udGV4dC1zd2l0Y2hlc1xuICAgICBjYW5ub3QgaGFwcGVuIHVubGVzcyB0aGVyZSBpcyBhbiBhbGxvY2F0aW9uLiAgSXQgaXMgcmVhc29uYWJsZSB0byBleHBlY3RcbiAgICAgdGhhdCB0aGlzIHdpbGwgcmVtYWluIHRydWUgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICBUaGF0IHdheSB3ZVxuICAgICBhdm9pZCB1c2luZyBtdXRleGVzIGFuZCB0aHVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgdGhyZWFkcyBsaWJyYXJ5LiAqKVxuXG4gICgqIEZhc3QgYW5kIGF1dG9tYXRpYyBleGNlcHRpb24gcmVnaXN0cmF0aW9uICopXG5cbiAgbW9kdWxlIFJlZ2lzdHJhdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNleHBfb2ZfZXhuIDogZXhuIC0+IFNleHAudFxuICAgICAgOyAoKiBJZiBbcHJpbnRleGMgPSB0cnVlXSB0aGVuIHRoaXMgc2V4cCBjb252ZXJ0ZXIgaXMgdXNlZCBmb3IgUHJpbnRleGMudG9fc3RyaW5nICopXG4gICAgICAgIHByaW50ZXhjIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgRXhuX3RhYmxlID0gRXBoZW1lcm9uLksxLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG5cbiAgICAgIGxldCBlcXVhbCA9ICggPT0gKVxuICAgICAgbGV0IGhhc2ggPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgZW5kKVxuXG4gIGxldCB0aGVfZXhuX3RhYmxlIDogUmVnaXN0cmF0aW9uLnQgRXhuX3RhYmxlLnQgPSBFeG5fdGFibGUuY3JlYXRlIDE3XG5cbiAgKCogRXBoZW1lcm9ucyBhcmUgdXNlZCBzbyB0aGF0IFtzZXhwX29mX2V4bl0gY2xvc3VyZSBkb24ndCBrZWVwIHRoZVxuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgbGl2ZS4gKilcbiAgbGV0IGFkZCA/KHByaW50ZXhjID0gdHJ1ZSkgP2ZpbmFsaXNlOl8gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHNleHBfb2ZfZXhuID1cbiAgICBFeG5fdGFibGUuYWRkIHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH1cbiAgOztcblxuICBsZXQgZmluZF9hdXRvIH5mb3JfcHJpbnRleGMgZXhuID1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhuIGluXG4gICAgbWF0Y2ggRXhuX3RhYmxlLmZpbmRfb3B0IHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9IC0+XG4gICAgICAobWF0Y2ggZm9yX3ByaW50ZXhjLCBwcmludGV4YyB3aXRoXG4gICAgICAgfCBmYWxzZSwgXyB8IF8sIHRydWUgLT4gU29tZSAoc2V4cF9vZl9leG4gZXhuKVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3VuaXRfdGVzdHNfb25seSA9IHN0cnVjdFxuICAgIGxldCBzaXplICgpID0gKEV4bl90YWJsZS5zdGF0c19hbGl2ZSB0aGVfZXhuX3RhYmxlKS5udW1fYmluZGluZ3NcbiAgZW5kXG5lbmRcblxubGV0IHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4Yzp0cnVlIGV4blxubGV0IHNleHBfb2ZfZXhuX29wdCBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOmZhbHNlIGV4blxuXG5sZXQgc2V4cF9vZl9leG4gZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBMaXN0IFsgQXRvbSAoUHJpbnRleGMudG9fc3RyaW5nIGV4bikgXVxuICB8IFNvbWUgc2V4cCAtPiBzZXhwXG47O1xuXG5sZXQgZXhuX3RvX3N0cmluZyBlID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKVxuXG4oKiB7W2V4Y2VwdGlvbiBCbGFoIFtAQGRlcml2aW5nIHNleHBdXX0gZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgZnVuY3Rpb25cbiAgIFtFeG5fY29udmVydGVyLmFkZF0gZGVmaW5lZCBpbiB0aGlzIGZpbGUuICBTbyB3ZSBhcmUgZ3VhcmFudGVkIHRoYXQgYXMgc29vbiBhcyB3ZVxuICAgbWFyayBhbiBleGNlcHRpb24gYXMgc2V4cGFibGUsIHRoaXMgbW9kdWxlIHdpbGwgYmUgbGlua2VkIGluIGFuZCB0aGlzIHByaW50ZXIgd2lsbCBiZVxuICAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiAqKVxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGV4biAtPlxuICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBzZXhwIC0+IFNvbWUgKFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cCkpXG47O1xuXG5sZXQgcHJpbnRleGNfcHJlZmVyX3NleHAgZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBQcmludGV4Yy50b19zdHJpbmcgZXhuXG4gIHwgU29tZSBzZXhwIC0+IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cFxuOztcblxuKCogQ29udmVyc2lvbiBvZiBTLWV4cHJlc3Npb25zIHRvIE9DYW1sLXZhbHVlcyAqKVxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IFNleHAuT2Zfc2V4cF9lcnJvclxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhjIHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSlcbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuXG5sZXQgdW5pdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+ICgpXG4gIHwgQXRvbSBfIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJ1bml0X29mX3NleHA6IGVtcHR5IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJvb2xfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSAoXCJ0cnVlXCIgfCBcIlRydWVcIikgLT4gdHJ1ZVxuICB8IEF0b20gKFwiZmFsc2VcIiB8IFwiRmFsc2VcIikgLT4gZmFsc2VcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogdW5rbm93biBzdHJpbmdcIiBzZXhwXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHN0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInN0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBieXRlc19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJieXRlc19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjaGFyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHNleHA7XG4gICAgc3RyLlswXVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGludF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgZmxvYXRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiZmxvYXRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDMyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQzMi5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQzMl9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50MzJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50NjRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDY0Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDY0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQ2NF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJuYXRpdmVpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm5hdGl2ZWludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCByZWZfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSByZWYgKGFfX29mX3NleHAgc2V4cClcbmxldCBsYXp5X3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSBMYXp5LmZyb21fdmFsIChhX19vZl9zZXhwIHNleHApXG5cbmxldCBvcHRpb25fb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBpZiAhcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdFxuICB0aGVuIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgW10gfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgZWwgXSB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IHJlcHJlc2VudCBvcHRpb25hbCB2YWx1ZVwiIHNleHBcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHApXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgYmUgKHNvbWUgZWwpXCIgc2V4cClcbjs7XG5cbmxldCBwYWlyX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgYSwgYlxuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHRyaXBsZV9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBjX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHA7IGNfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBsZXQgYyA9IGNfX29mX3NleHAgY19zZXhwIGluXG4gICAgYSwgYiwgY1xuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aHJlZSBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGxpc3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl9zZXhwIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwibGlzdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBhcnJheV9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gW3x8XVxuICB8IExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3NleHAgaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYXJyYXlfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaGFzaHRibF9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBMaXN0IFsga19zZXhwOyB2X3NleHAgXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl9zZXhwIGtfc2V4cCkgfmRhdGE6KHZhbF9vZl9zZXhwIHZfc2V4cClcbiAgICAgIHwgTGlzdCBfIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IHR1cGxlIGxpc3QgbmVlZGVkXCIgc2V4cFxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBvcGFxdWVfb2Zfc2V4cCBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciBcIm9wYXF1ZV9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgc2V4cFxuOztcblxubGV0IGZ1bl9vZl9zZXhwIHNleHAgPSBvZl9zZXhwX2Vycm9yIFwiZnVuX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHNleHBcblxuKCogU2V4cCBHcmFtbWFycyAqKVxuXG5pbmNsdWRlIFNleHBfY29udl9ncmFtbWFyXG5cbigqIFJlZ2lzdGVyaW5nIGRlZmF1bHQgZXhjZXB0aW9uIHByaW50ZXJzICopXG5cbmxldCBnZXRfZmxjX2Vycm9yIG5hbWUgKGZpbGUsIGxpbmUsIGNocikgPSBBdG9tIChzcHJpbnRmIFwiJXMgJXM6JWQ6JWRcIiBuYW1lIGZpbGUgbGluZSBjaHIpXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4YzpmYWxzZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFzc2VydF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFzc2VydF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiQXNzZXJ0X2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4aXRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRXhpdCAtPiBBdG9tIFwiRXhpdFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFbmRfb2ZfZmlsZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFbmRfb2ZfZmlsZSAtPiBBdG9tIFwiRW5kX29mX2ZpbGVcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBGYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZCAtPiBBdG9tIFwiTm90X2ZvdW5kXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEludmFsaWRfYXJndW1lbnRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhcmcgLT4gTGlzdCBbIEF0b20gXCJJbnZhbGlkX2FyZ3VtZW50XCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hdGNoX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTWF0Y2hfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIk1hdGNoX2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF9zXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZF9zIGFyZyAtPiBMaXN0IFsgQXRvbSBcIk5vdF9mb3VuZF9zXCI7IGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXNfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzX2Vycm9yIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlN5c19lcnJvclwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuSGVscF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuSGVscCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuSGVscFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuQmFkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5CYWQgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkJhZFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBMYXp5LlVuZGVmaW5lZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBMYXp5LlVuZGVmaW5lZCAtPiBBdG9tIFwiTGF6eS5VbmRlZmluZWRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2luZy5QYXJzZV9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEF0b20gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFF1ZXVlLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFF1ZXVlLkVtcHR5IC0+IEF0b20gXCJRdWV1ZS5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTY2FuZi5TY2FuX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlNjYW5mLlNjYW5fZmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTdGFjay5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTdGFjay5FbXB0eSAtPiBBdG9tIFwiU3RhY2suRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzLkJyZWFrXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5cy5CcmVhayAtPiBBdG9tIFwiU3lzLkJyZWFrXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOnRydWUgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkgLT5cbiAgICAgICAgICBMaXN0IFsgQXRvbSBcIlNleHBsaWIuQ29udi5PZl9zZXhwX2Vycm9yXCI7IHNleHBfb2ZfZXhuIGV4Yzsgc2V4cCBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFMtZXhwcmVzc2lvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBfY29udlxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3JcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4gc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlc19vZl9zZXhwOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgc2V4cCA9XG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgc2V4cFxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc2V4cF9ib29sX3dpdGhfcGF5bG9hZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvYyBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBhIFtzZXhwLmJvb2xdIGZpZWxkIHdhcyBnaXZlbiBhIHBheWxvYWQuXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogb25seSBwYWlycyBleHBlY3RlZCwgdGhlaXIgZmlyc3QgZWxlbWVudCBtdXN0IGJlIGFuIFxcXG4gICAgICAgYXRvbVwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHNleHAgbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl9zZXhwOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHNleHAgPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2Zfc2V4cDogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBmaWVsZHNcIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHNleHBcbjs7XG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggPSBDYW1sLm1heFxubGV0IG1pbiA9IENhbWwubWluXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIENhbWwucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW0NhbWxdIHNvIHRoYXQgd2UgY2hvb3NlIHRoZSBtb2R1bGVzIHVzaW5nIGxhYmVscyB3aGVuIGF2YWlsYWJsZS4gKilcbm1vZHVsZSBDYW1sID0gc3RydWN0XG5cbiAgaW5jbHVkZSBDYW1sXG5cbiAgbW9kdWxlIEFyZyA9IENhbWwuQXJnICgqKiBAY2Fub25pY2FsIENhbWwuQXJnICopXG5cbiAgbW9kdWxlIEFycmF5ID0gQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKilcblxuICBtb2R1bGUgQm9vbCA9IENhbWwuQm9vbCAoKiogQGNhbm9uaWNhbCBDYW1sLkJvb2wgKilcblxuICBtb2R1bGUgQnVmZmVyID0gQ2FtbC5CdWZmZXIgKCoqIEBjYW5vbmljYWwgQ2FtbC5CdWZmZXIgKilcblxuICBtb2R1bGUgQnl0ZXMgPSBDYW1sLlN0ZExhYmVscy5CeXRlcyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5CeXRlcyAqKVxuXG4gIG1vZHVsZSBDaGFyID0gQ2FtbC5DaGFyICgqKiBAY2Fub25pY2FsIENhbWwuQ2hhciAqKVxuXG4gIG1vZHVsZSBFcGhlbWVyb24gPSBDYW1sLkVwaGVtZXJvbiAoKiogQGNhbm9uaWNhbCBDYW1sLkVwaGVtZXJvbiAqKVxuXG4gIG1vZHVsZSBGbG9hdCA9IENhbWwuRmxvYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5GbG9hdCAqKVxuXG4gIG1vZHVsZSBGb3JtYXQgPSBDYW1sLkZvcm1hdCAoKiogQGNhbm9uaWNhbCBDYW1sLkZvcm1hdCAqKVxuXG4gIG1vZHVsZSBGdW4gPSBDYW1sLkZ1biAoKiogQGNhbm9uaWNhbCBDYW1sLkZ1biAqKVxuXG4gIG1vZHVsZSBHYyA9IENhbWwuR2MgKCoqIEBjYW5vbmljYWwgQ2FtbC5HYyAqKVxuXG4gIG1vZHVsZSBIYXNodGJsID0gQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKilcblxuICBtb2R1bGUgSW50MzIgPSBDYW1sLkludDMyICgqKiBAY2Fub25pY2FsIENhbWwuSW50MzIgKilcblxuICBtb2R1bGUgSW50ID0gQ2FtbC5JbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5JbnQgKilcblxuICBtb2R1bGUgSW50NjQgPSBDYW1sLkludDY0ICgqKiBAY2Fub25pY2FsIENhbWwuSW50NjQgKilcblxuICBtb2R1bGUgTGF6eSA9IENhbWwuTGF6eSAoKiogQGNhbm9uaWNhbCBDYW1sLkxhenkgKilcblxuICBtb2R1bGUgTGV4aW5nID0gQ2FtbC5MZXhpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5MZXhpbmcgKilcblxuICBtb2R1bGUgTGlzdCA9IENhbWwuU3RkTGFiZWxzLkxpc3QgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuTGlzdCAqKVxuXG4gIG1vZHVsZSBNYXAgPSBDYW1sLk1vcmVMYWJlbHMuTWFwICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5NYXAgKilcblxuICBtb2R1bGUgTmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5OYXRpdmVpbnQgKilcblxuICBtb2R1bGUgT2JqID0gQ2FtbC5PYmogKCoqIEBjYW5vbmljYWwgQ2FtbC5PYmogKilcblxuICBtb2R1bGUgT3B0aW9uID0gQ2FtbC5PcHRpb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5PcHRpb24gKilcblxuICBtb2R1bGUgUGFyc2luZyA9IENhbWwuUGFyc2luZyAoKiogQGNhbm9uaWNhbCBDYW1sLlBhcnNpbmcgKilcblxuICBtb2R1bGUgUHJpbnRleGMgPSBDYW1sLlByaW50ZXhjICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRleGMgKilcblxuICBtb2R1bGUgUHJpbnRmID0gQ2FtbC5QcmludGYgKCoqIEBjYW5vbmljYWwgQ2FtbC5QcmludGYgKilcblxuICBtb2R1bGUgUXVldWUgPSBDYW1sLlF1ZXVlICgqKiBAY2Fub25pY2FsIENhbWwuUXVldWUgKilcblxuICBtb2R1bGUgUmFuZG9tID0gQ2FtbC5SYW5kb20gKCoqIEBjYW5vbmljYWwgQ2FtbC5SYW5kb20gKilcblxuICBtb2R1bGUgUmVzdWx0ID0gQ2FtbC5SZXN1bHQgKCoqIEBjYW5vbmljYWwgQ2FtbC5SZXN1bHQgKilcblxuICBtb2R1bGUgU2NhbmYgPSBDYW1sLlNjYW5mICgqKiBAY2Fub25pY2FsIENhbWwuU2NhbmYgKilcblxuICBtb2R1bGUgU2VxID0gQ2FtbC5TZXEgKCoqIEBjYW5vbmljYWwgQ2FtbC5TZXEgKilcblxuICBtb2R1bGUgU2V0ID0gQ2FtbC5Nb3JlTGFiZWxzLlNldCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuU2V0ICopXG5cbiAgbW9kdWxlIFN0YWNrID0gQ2FtbC5TdGFjayAoKiogQGNhbm9uaWNhbCBDYW1sLlN0YWNrICopXG5cbiAgbW9kdWxlIFN0cmluZyA9IENhbWwuU3RkTGFiZWxzLlN0cmluZyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKilcblxuICBtb2R1bGUgU3lzID0gQ2FtbC5TeXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TeXMgKilcblxuICBtb2R1bGUgVWNoYXIgPSBDYW1sLlVjaGFyICgqKiBAY2Fub25pY2FsIENhbWwuVWNoYXIgKilcblxuICBtb2R1bGUgVW5pdCA9IENhbWwuVW5pdCAoKiogQGNhbm9uaWNhbCBDYW1sLlVuaXQgKilcblxuICBleGNlcHRpb24gTm90X2ZvdW5kID0gQ2FtbC5Ob3RfZm91bmRcbmVuZFxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4oKiBXZSB1c2UgW09iai5tYWdpY10gaGVyZSBhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZ2VuZXJhdGUgYSBjb25kaXRpb25hbCBqdW1wIGFuZCB0aGVcbiAgIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMgbm90aWNlYWJsZS4gKilcbmxldCBib29sX3RvX2ludCAoeCA6IGJvb2wpIDogaW50ID0gQ2FtbC5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gQ2FtbC4oICE9IClcbmxldCAoICogKSA9IENhbWwuKCAqIClcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxubGV0ICggKi4gKSA9IENhbWwuKCAqLiApXG5sZXQgKCArICkgPSBDYW1sLiggKyApXG5sZXQgKCArLiApID0gQ2FtbC4oICsuIClcbmxldCAoIC0gKSA9IENhbWwuKCAtIClcbmxldCAoIC0uICkgPSBDYW1sLiggLS4gKVxubGV0ICggLyApID0gQ2FtbC4oIC8gKVxubGV0ICggLy4gKSA9IENhbWwuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBDYW1sLkludDMyLnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBib29sKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJvb2wpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJvb2wpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYm9vbCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBjaGFyKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBDYW1sLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChpIHgpIChpIHkpXG4gIGxldCAoID4gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5hc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCAoaSB4KSAoaSB5KVxuICBsZXQgbWF4ICh4IDogQ2FtbC5VY2hhci50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogc3RyaW5nKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogc3RyaW5nKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYnl0ZXMpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IENhbWwuKCBAIClcbmxldCAoIF4gKSA9IENhbWwuKCBeIClcbmxldCAoIH4tICkgPSBDYW1sLiggfi0gKVxubGV0ICggfi0uICkgPSBDYW1sLiggfi0uIClcbmxldCAoIGFzciApID0gQ2FtbC4oIGFzciApXG5sZXQgKCBsYW5kICkgPSBDYW1sLiggbGFuZCApXG5sZXQgbG5vdCA9IENhbWwubG5vdFxubGV0ICggbG9yICkgPSBDYW1sLiggbG9yIClcbmxldCAoIGxzbCApID0gQ2FtbC4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IENhbWwuKCBsc3IgKVxubGV0ICggbHhvciApID0gQ2FtbC4oIGx4b3IgKVxubGV0ICggbW9kICkgPSBDYW1sLiggbW9kIClcbmxldCBhYnMgPSBDYW1sLmFic1xubGV0IGZhaWx3aXRoID0gQ2FtbC5mYWlsd2l0aFxubGV0IGZzdCA9IENhbWwuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBDYW1sLmludmFsaWRfYXJnXG5sZXQgc25kID0gQ2FtbC5zbmRcblxuKCogW3JhaXNlXSBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIGFzIHRoZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHJlcGxhY2VzXG4gICAnJXJhaXNlJyBieSAnJXJlcmFpc2UnIHdoZW4gYXBwcm9wcmlhdGUuICopXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgZGVjciA9IENhbWwuZGVjclxubGV0IGluY3IgPSBDYW1sLmluY3JcblxuKCogdXNlZCBieSBzZXhwX2NvbnYsIHdoaWNoIGZsb2F0MCBkZXBlbmRzIG9uIHRocm91Z2ggb3B0aW9uICopXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gQ2FtbC5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIm9wZW4hIEltcG9ydDBcbmluY2x1ZGUgQ2FtbC5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0IGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXQgaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW0NhbWwuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN5c10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzeXMubWxcbiAgIHNob3VsZCB1c2UgW0NhbWwuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGVcbmxldCBpbnRlcmFjdGl2ZSA9IENhbWwuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IENhbWwuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gQ2FtbC5TeXMudW5peFxubGV0IHdpbjMyID0gQ2FtbC5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBDYW1sLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IENhbWwuU3lzLndvcmRfc2l6ZVxubGV0IGludF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBDYW1sLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBDYW1sLlN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IG1heF9hcnJheV9sZW5ndGggPSBDYW1sLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gQ2FtbC5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gQ2FtbC5TeXMucnVudGltZV9wYXJhbWV0ZXJzXG5sZXQgYXJndiA9IENhbWwuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IENhbWwuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gQ2FtbC5TeXMub2NhbWxfdmVyc2lvblxubGV0IGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzID0gQ2FtbC5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBDYW1sLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IENhbWwuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gQ2FtbC5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbQ2FtbC5BcnJheV0uICBbQXJyYXkwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtDYW1sLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIHNldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgOiAgc3JjOidhIGFycmF5XG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6J2EgYXJyYXlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IENhbWwuQXJyYXkuYXBwZW5kXG5sZXQgYmxpdCA9IENhbWwuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IENhbWwuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IENhbWwuQXJyYXkuY29weVxubGV0IGZpbGwgPSBDYW1sLkFycmF5LmZpbGxcbmxldCBpbml0ID0gQ2FtbC5BcnJheS5pbml0XG5sZXQgbWFrZV9tYXRyaXggPSBDYW1sLkFycmF5Lm1ha2VfbWF0cml4XG5sZXQgb2ZfbGlzdCA9IENhbWwuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IENhbWwuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IENhbWwuQXJyYXkudG9fbGlzdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkFycmF5LmZvbGRfbGVmdCB0IH5pbml0IH5mXG5sZXQgZm9sZF9yaWdodCB0IH5mIH5pbml0ID0gQ2FtbC5BcnJheS5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXIgdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXJpIHQgfmZcbmxldCBtYXAgdCB+ZiA9IENhbWwuQXJyYXkubWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBDYW1sLkFycmF5Lm1hcGkgdCB+ZlxubGV0IHN0YWJsZV9zb3J0IHQgfmNvbXBhcmUgPSBDYW1sLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkNoYXJdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGNoYXIwLm1sIHNob3VsZCB1c2UgW0NhbWwuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IENhbWwuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gQ2FtbC5DaGFyLmxvd2VyY2FzZV9hc2NpaVxubGV0IHRvX2ludCA9IENhbWwuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IENhbWwuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gQ2FtbC5DaGFyLnVwcGVyY2FzZV9hc2NpaVxuXG4oKiBXZSB1c2Ugb3VyIG93biByYW5nZSB0ZXN0IHdoZW4gY29udmVydGluZyBpbnRlZ2VycyB0byBjaGFycyByYXRoZXIgdGhhblxuICAgY2FsbGluZyBbQ2FtbC5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbF0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtDYW1sXSB0aGF0IFtCYXNlXSB1c2VzIGZvciBpbnRlZ2VycyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gaW50MC5tbCBzaG91bGQgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSB0aHJvdWdoIFtDYW1sXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gQ2FtbC5pbnRfb2Zfc3RyaW5nXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0ID0gQ2FtbC5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBDYW1sLm1pbl9pbnRcbmxldCBzdWNjID0gQ2FtbC5zdWNjXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtDYW1sLkxpc3RdLiAgW0xpc3QwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbQ2FtbC5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGhkX2V4biA9IENhbWwuTGlzdC5oZFxubGV0IGxlbmd0aCA9IENhbWwuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gQ2FtbC5MaXN0LnJldl9hcHBlbmRcbmxldCB0bF9leG4gPSBDYW1sLkxpc3QudGxcbmxldCB1bnppcCA9IENhbWwuTGlzdC5zcGxpdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBleGlzdHMgdCB+ZiA9IENhbWwuTGlzdC5leGlzdHMgdCB+ZlxubGV0IGV4aXN0czJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZXhpc3RzMiBsMSBsMiB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQgdCB+ZiB+aW5pdFxubGV0IGZvbGQyX29rIGwxIGwyIH5pbml0IH5mID0gQ2FtbC5MaXN0LmZvbGRfbGVmdDIgbDEgbDIgfmluaXQgfmZcbmxldCBmb3JfYWxsIHQgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbCB0IH5mXG5sZXQgZm9yX2FsbDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbDIgbDEgbDIgfmZcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkxpc3QuaXRlciB0IH5mXG5sZXQgaXRlcjJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuaXRlcjIgbDEgbDIgfmZcbmxldCBub250YWlsX21hcCB0IH5mID0gQ2FtbC5MaXN0Lm1hcCB0IH5mXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBDYW1sLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBDYW1sLkxpc3QucGFydGl0aW9uIHQgfmZcbmxldCByZXZfbWFwIHQgfmYgPSBDYW1sLkxpc3QucmV2X21hcCB0IH5mXG5sZXQgcmV2X21hcDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QucmV2X21hcDIgbDEgbDIgfmZcbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc3RhYmxlX3NvcnQgbCB+Y21wOmNvbXBhcmVcblxubGV0IHJldiA9IGZ1bmN0aW9uXG4gIHwgKFtdIHwgWyBfIF0pIGFzIHJlcyAtPiByZXNcbiAgfCB4IDo6IHkgOjogcmVzdCAtPiByZXZfYXBwZW5kIHJlc3QgWyB5OyB4IF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0IGwgfmYgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbClcbjs7XG4iLCIoKlxuICAgVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIFtwcHhfaGFzaF0uXG5cbiAgIFRoZSBbcHB4X2hhc2hdIHN5bnRheCBleHRlbnNpb24gc3VwcG9ydHM6IFtAQGRlcml2aW5nIGhhc2hdIGFuZCBbJWhhc2hfZm9sZDogVFlQRV0gYW5kXG4gICBbJWhhc2g6IFRZUEVdXG5cbiAgIEZvciB0eXBlIFt0XSBhIGZ1bmN0aW9uIFtoYXNoX2ZvbGRfdF0gb2YgdHlwZSBbSGFzaC5zdGF0ZSAtPiB0IC0+IEhhc2guc3RhdGVdIGlzXG4gICBnZW5lcmF0ZWQuXG5cbiAgIFRoZSBnZW5lcmF0ZWQgW2hhc2hfZm9sZF88VD5dIGZ1bmN0aW9uIGlzIGNvbXBvc2l0aW9uYWwsIGZvbGxvd2luZyB0aGUgc3RydWN0dXJlIG9mIHRoZVxuICAgdHlwZTsgYWxsb3dpbmcgdXNlciBvdmVycmlkZXMgYXQgZXZlcnkgbGV2ZWwuIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gb2NhbWwncyBidWlsdGluXG4gICBwb2x5bW9ycGhpYyBoYXNoaW5nIFtIYXNodGJsLmhhc2hdIHdoaWNoIGlnbm9yZXMgdXNlciBvdmVycmlkZXMuXG5cbiAgIFRoZSBnZW5lcmF0b3IgYWxzbyBwcm92aWRlcyBhIGRpcmVjdCBoYXNoLWZ1bmN0aW9uIFtoYXNoXSAobmFtZWQgW2hhc2hfPFQ+XSB3aGVuIDxUPiAhPVxuICAgXCJ0XCIpIG9mIHR5cGU6IFt0IC0+IEhhc2guaGFzaF92YWx1ZV0uXG5cbiAgIFRoZSBmb2xkaW5nIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaF9mb2xkOiBUWVBFXVxuICAgVGhlIGRpcmVjdCBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2g6IFRZUEVdXG4qKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEhhc2hfaW50ZlxuXG4oKiogQnVpbHRpbiBmb2xkaW5nLXN0eWxlIGhhc2ggZnVuY3Rpb25zLCBhYnN0cmFjdGVkIG92ZXIgW0hhc2hfaW50Zi5TXSAqKVxubW9kdWxlIEZvbGRpbmcgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuQnVpbHRpbl9pbnRmXG4gIHdpdGggdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgaGFzaF9mb2xkX3VuaXQgcyAoKSA9IHNcbiAgbGV0IGhhc2hfZm9sZF9pbnQgPSBIYXNoLmZvbGRfaW50XG4gIGxldCBoYXNoX2ZvbGRfaW50NjQgPSBIYXNoLmZvbGRfaW50NjRcbiAgbGV0IGhhc2hfZm9sZF9mbG9hdCA9IEhhc2guZm9sZF9mbG9hdFxuICBsZXQgaGFzaF9mb2xkX3N0cmluZyA9IEhhc2guZm9sZF9zdHJpbmdcbiAgbGV0IGFzX2ludCBmIHMgeCA9IGhhc2hfZm9sZF9pbnQgcyAoZiB4KVxuXG4gICgqIFRoaXMgaWdub3JlcyB0aGUgc2lnbiBiaXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGxlYWQgdG9cbiAgICAgZnJlcXVlbnQgY29sbGlzaW9ucyAobWluX3ZhbHVlIGNvbGxpZGluZyB3aXRoIDAgaXMgdGhlIG1vc3QgbGlrZWx5IG9uZSkuICAqKVxuICBsZXQgaGFzaF9mb2xkX2ludDMyID0gYXNfaW50IENhbWwuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoQ2FtbC5MYXp5LmZvcmNlIHgpXG4gIGxldCBoYXNoX2ZvbGRfcmVmX2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzICF4XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gcyBhcnJheSBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIGFycmF5XG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZSA9IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSBpblxuICAgICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIGUpIGFycmF5IChpICsgMSkpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9hcnJheV9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyBhcnJheSA9XG4gICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pXG4gICAgICAoKiBbbGVuZ3RoXSBtdXN0IGJlIGluY29ycG9yYXRlZCBmb3IgYXJyYXlzLCBhcyBpdCBpcyBmb3IgbGlzdHMuIFNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBoYXNoX2ZvbGRfZWxlbVxuICAgICAgKGhhc2hfZm9sZF9pbnQgcyAoQXJyYXkubGVuZ3RoIGFycmF5KSlcbiAgICAgIGFycmF5XG4gICAgICAwXG4gIDs7XG5cbiAgKCogdGhlIGR1cGxpY2F0aW9uIGhlcmUgaXMgYmVjYXVzZSB3ZSB0aGlua1xuICAgICBvY2FtbCBjYW4ndCBlbGltaW5hdGUgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgb3RoZXJ3aXNlLiAqKVxuICBsZXQgaGFzaF9uYXRpdmVpbnQgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX25hdGl2ZWludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfaW50NjQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQ2NCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludDMyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50MzIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9jaGFyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfY2hhciAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2Jvb2wgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9ib29sIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcblxuICBsZXQgaGFzaF9zdHJpbmcgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3N0cmluZyAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZmxvYXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9mbG9hdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX3VuaXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF91bml0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbmVuZFxuXG5tb2R1bGUgRiAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5GdWxsXG4gIHdpdGggdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gICBhbmQgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIHNlZWQgPSBIYXNoLnNlZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IEZvbGRpbmcgKEhhc2gpXG5cbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChIYXNoLnJlc2V0ID9zZWVkIChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxoYXNoIDogc2lnXG4gIGluY2x1ZGVcbiAgICBIYXNoX2ludGYuU1xuICAgIHdpdGggdHlwZSBzdGF0ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnN0YXRlXG4gICAgICgqIFdlIGdpdmUgYSBjb25jcmV0ZSB0eXBlIGZvciBbc3RhdGVdLCBhbGJlaXQgb25seSBwYXJ0aWFsbHkgZXhwb3NlZCAoc2VlXG4gICAgICAgIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzKSwgc28gdGhhdCBpdCB1bmlmaWVzIHdpdGggdGhlIHNhbWUgdHlwZSBpbiBbQmFzZV9ib290XSxcbiAgICAgICAgYW5kIHRvIGFsbG93IG9wdGltaXphdGlvbnMgZm9yIHRoZSBpbW1lZGlhdGUgdHlwZS4gKilcbiAgICAgYW5kIHR5cGUgc2VlZCA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnNlZWRcbiAgICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLmhhc2hfdmFsdWVcblxuICBleHRlcm5hbCBmb2xkX2ludDY0IDogc3RhdGUgLT4gaW50NjQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfaW50IDogc3RhdGUgLT4gaW50IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9mbG9hdCA6IHN0YXRlIC0+IGZsb2F0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX3N0cmluZyA6IHN0YXRlIC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGdldF9oYXNoX3ZhbHVlIDogc3RhdGUgLT4gaGFzaF92YWx1ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcIlxuICBbQEBub2FsbG9jXVxuZW5kID0gc3RydWN0XG4gIGxldCBkZXNjcmlwdGlvbiA9IFwiaW50ZXJuYWxoYXNoXCJcblxuICBpbmNsdWRlIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzXG5cbiAgbGV0IGFsbG9jICgpID0gY3JlYXRlX3NlZWRlZCAwXG4gIGxldCByZXNldCA/KHNlZWQgPSAwKSBfdCA9IGNyZWF0ZV9zZWVkZWQgc2VlZFxuXG4gIG1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGFyZV9zdGF0ZSAoYSA6IHN0YXRlKSAoYiA6IHN0YXRlKSA9IGNvbXBhcmUgKGEgOj4gaW50KSAoYiA6PiBpbnQpXG4gICAgbGV0IHN0YXRlX3RvX3N0cmluZyAoc3RhdGUgOiBzdGF0ZSkgPSBJbnQudG9fc3RyaW5nIChzdGF0ZSA6PiBpbnQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgSW50ZXJuYWxoYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPSBnZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChyZXNldCA/c2VlZCAoYWxsb2MgKCkpKSB4KVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9sZGluZyA9IEZvbGRpbmcgKEludGVybmFsaGFzaClcbiAgICBpbmNsdWRlIEZvbGRpbmdcblxuICAgICgqIFtGb2xkaW5nXSBwcm92aWRlcyBzb21lIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgW2hhc2hfKl0gZnVuY3Rpb25zIGJlbG93LFxuICAgICAgIGJ1dCB0aGV5IGFyZSBpbmVmZmljaWVudCBmb3Igc29tZSB1c2UtY2FzZXMgYmVjYXVzZSBvZiB0aGUgdXNlIG9mIHRoZSBbaGFzaF9mb2xkXVxuICAgICAgIGZ1bmN0aW9ucy4gQXQgdGhpcyBwb2ludCwgdGhlIFtoYXNoX3ZhbHVlXSB0eXBlIGhhcyBiZWVuIGZpeGVkIHRvIFtpbnRdLCBzbyB0aGlzXG4gICAgICAgbW9kdWxlIGNhbiBwcm92aWRlIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucy4gKilcblxuICAgIGxldCBoYXNoX2NoYXIgPSBDaGFyMC50b19pbnRcblxuICAgICgqIFRoaXMgaGFzaCB3YXMgY2hvc2VuIGZyb20gaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYmFkYm95LzYyNjc3NDNcblxuICAgICAgIEl0IGF0dGVtcHRzIHRvIGZ1bGZpbGwgdGhlIHByaW1hcnkgZ29hbHMgb2YgYSBub24tY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uOlxuXG4gICAgICAgLSBhIGJpdCBjaGFuZ2UgaW4gdGhlIGlucHV0IHNob3VsZCBjaGFuZ2UgfjEvMiBvZiB0aGUgb3V0cHV0IGJpdHNcbiAgICAgICAtIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIG91dHB1dCByYW5nZVxuICAgICAgIC0gaW5wdXRzIHRoYXQgYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgc2hvdWxkbid0IGxlYWQgdG8gb3V0cHV0cyB0aGF0IGFyZSBjbG9zZSB0b1xuICAgICAgICAgZWFjaCBvdGhlci5cbiAgICAgICAtIGFsbCBiaXRzIG9mIHRoZSBpbnB1dCBhcmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBvdXRwdXRcblxuICAgICAgIEluIG91ciBjYXNlIHdlIGFsc28gd2FudCBpdCB0byBiZSBmYXN0LCBub24tYWxsb2NhdGluZywgYW5kIGlubGluYWJsZS4gICopXG4gICAgbGV0W0BpbmxpbmUgYWx3YXlzXSBoYXNoX2ludCAodCA6IGludCkgPVxuICAgICAgbGV0IHQgPSBsbm90IHQgKyAodCBsc2wgMjEpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMykgKyAodCBsc2wgOCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAxNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAyKSArICh0IGxzbCA0KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI4KSBpblxuICAgICAgdCArICh0IGxzbCAzMSlcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfYm9vbCB4ID0gaWYgeCB0aGVuIDEgZWxzZSAwXG5cbiAgICBleHRlcm5hbCBoYXNoX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCJCYXNlX2hhc2hfZG91YmxlXCIgW0BAbm9hbGxvY11cblxuICAgIGxldCBoYXNoX3VuaXQgKCkgPSAwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuIiwib3BlbiBJbXBvcnQwXG5cbmxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG5leHRlcm5hbCBwb2x5bW9ycGhpY19jb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBwb2x5bW9ycGhpY19lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmb3JtYXR0ZXIgKE0udG9fc3RyaW5nIHQpXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBleG4gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9leG4gOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuW0BAQGVuZF1cblxubGV0IGV4aXQgPSBDYW1sLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgQ2FtbC5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4nIGJ0KVxuICBlbHNlIHJhaXNlIGV4bidcbjs7XG5cbmxldCByZXJhaXNlZiBleGMgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyICgpIC0+IHJlcmFpc2UgZXhjIHN0cikgZm9ybWF0XG5sZXQgdG9fc3RyaW5nIGV4YyA9IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgKHNleHBfb2ZfZXhuIGV4YylcbmxldCB0b19zdHJpbmdfbWFjaCBleGMgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX2V4biBleGMpXG5sZXQgc2V4cF9vZl90ID0gc2V4cF9vZl9leG5cblxubGV0IHByb3RlY3R4IH5mIHggfihmaW5hbGx5IDogXyAtPiB1bml0KSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgcmVzIC0+XG4gICAgZmluYWxseSB4O1xuICAgIHJlc1xuICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKENhbWwuUHJpbnRleGMudG9fc3RyaW5nIHQpXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FeG5cIlxuICBlbmQpXG5cbmxldCBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSA9XG4gIENhbWwuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBDYW1sLlByaW50ZXhjLnByaW50X3Jhd19iYWNrdHJhY2UgQ2FtbC5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgQ2FtbC5mbHVzaCBDYW1sLnN0ZGVyclxuOztcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKSA9XG4gIENhbWwuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgQ2FtbC5kb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgKHRyeSBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgIHwgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDYW1sLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIENhbWwucmFpc2Vfbm90cmFjZSBlXG47O1xuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGNsZWFyX2JhY2t0cmFjZSA9IGNsZWFyX2JhY2t0cmFjZVxuZW5kXG4iLCIoKiBiZWxvbmdzIGluIENvbW1vbiwgYnV0IG1vdmVkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHJldHVybiA9IHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxubGV0IHdpdGhfcmV0dXJuICh0eXBlIGEpIGYgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAoKiBSYWlzZWQgdG8gaW5kaWNhdGUgfnJldHVybiB3YXMgY2FsbGVkLiAgTG9jYWwgc28gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHRpZWQgdG8gYVxuICAgICAgIHBhcnRpY3VsYXIgY2FsbCBvZiBbd2l0aF9yZXR1cm5dLiAqKVxuICAgIGV4Y2VwdGlvbiBSZXR1cm4gb2YgYVxuICBlbmRcbiAgaW5cbiAgbGV0IGlzX2FsaXZlID0gcmVmIHRydWUgaW5cbiAgbGV0IHJldHVybiBhID1cbiAgICBpZiBub3QgIWlzX2FsaXZlXG4gICAgdGhlbiBmYWlsd2l0aCBcInVzZSBvZiBbcmV0dXJuXSBmcm9tIGEgW3dpdGhfcmV0dXJuXSB0aGF0IGFscmVhZHkgcmV0dXJuZWRcIjtcbiAgICBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgKE0uUmV0dXJuIGEpXG4gIGluXG4gIHRyeVxuICAgIGxldCBhID0gZiB7IHJldHVybiB9IGluXG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgYVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgKG1hdGNoIGV4biB3aXRoXG4gICAgIHwgTS5SZXR1cm4gYSAtPiBhXG4gICAgIHwgXyAtPiByYWlzZSBleG4pXG47O1xuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uIGYgPVxuICB3aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgIGYgeyByZXR1cm4gPSAoZnVuIGEgLT4gcmV0dXJuLnJldHVybiAoU29tZSBhKSkgfTtcbiAgICBOb25lKVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgaWRlbnRpdGllcyBvdWdodCB0byBob2xkIChmb3Igc29tZSB2YWx1ZSBvZiA9KTpcblxuICAgICAgLSBbcmV0dXJuIHggPj49IGYgPSBmIHhdXG4gICAgICAtIFt0ID4+PSBmdW4geCAtPiByZXR1cm4geCA9IHRdXG4gICAgICAtIFsodCA+Pj0gZikgPj49IGcgPSB0ID4+PSBmdW4geCAtPiAoZiB4ID4+PSBnKV1cblxuICAgICAgTm90ZTogWz4+PV0gaXMgdGhlIGluZml4IG5vdGF0aW9uIGZvciBbYmluZF0pICopXG5cbiAgKCoqIFRoZSBbbWFwXSBhcmd1bWVudCB0byBbTW9uYWQuTWFrZV0gc2F5cyBob3cgdG8gaW1wbGVtZW50IHRoZSBtb25hZCdzIFttYXBdIGZ1bmN0aW9uLlxuICAgICAgW2BEZWZpbmVfdXNpbmdfYmluZF0gbWVhbnMgdG8gZGVmaW5lIFttYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC5cblxuICAgICAgU29tZSBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW01vbmFkLk1ha2VdIGFyZSBkZWZpbmVkIGluIHRlcm1zIG9mIFttYXBdLCBzb1xuICAgICAgcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFttYXBdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBtYXAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdCBdXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIFt0ID4+PSBmXSByZXR1cm5zIGEgY29tcHV0YXRpb24gdGhhdCBzZXF1ZW5jZXMgdGhlIGNvbXB1dGF0aW9ucyByZXByZXNlbnRlZCBieSB0d29cbiAgICAgIG1vbmFkIGVsZW1lbnRzLiAgVGhlIHJlc3VsdGluZyBjb21wdXRhdGlvbiBmaXJzdCBkb2VzIFt0XSB0byB5aWVsZCBhIHZhbHVlIFt2XSwgYW5kXG4gICAgICB0aGVuIHJ1bnMgdGhlIGNvbXB1dGF0aW9uIHJldHVybmVkIGJ5IFtmIHZdLiAqKVxuICB2YWwgKCA+Pj0gKSA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgKCoqIFRoZXNlIGFyZSBjb252ZW5pZW50IHRvIGhhdmUgaW4gc2NvcGUgd2hlbiBwcm9ncmFtbWluZyB3aXRoIGEgbW9uYWQ6ICopXG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgaW5jbHVkZSBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW0NhbWwuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHQgXVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgyID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9IHNpZ1xuICB0eXBlICgnYSwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgbW9kdWxlIElkZW50IDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCBiaW5kIGEgfmYgPSBmIGFcbiAgICAgIGxldCByZXR1cm4gYSA9IGFcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gYSB+ZiAtPiBmIGEpXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYXBwbHkgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IG1hcDIgdGEgdGIgfmYgPSBtYXAgfmYgdGEgPCo+IHRiXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwIH5mIHRhIDwqPiB0YiA8Kj4gdGNcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgKCAqPiApIHUgdiA9IHJldHVybiAoZnVuICgpIHkgLT4geSkgPCo+IHUgPCo+IHZcbiAgbGV0ICggPCogKSB1IHYgPSByZXR1cm4gKGZ1biB4ICgpIC0+IHgpIDwqPiB1IDwqPiB2XG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTMgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4M1xuICAgIChYIDogRm9yX2xldF9zeW50YXgzKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gSW1wbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4MlxuICAgIChYIDogRm9yX2xldF9zeW50YXgyKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4M1xuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgJ2QsIF8pIHQgPSAoJ2EsICdkKSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXhcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4KSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbigqKiBUaGlzIGZ1bmN0b3IgY2xvc2VseSByZXNlbWJsZXMgW01ha2UzXSwgYW5kIGluZGVlZCBpdCBjb3VsZCBiZSBpbXBsZW1lbnRlZFxuICAgIG11Y2ggc2hvcnRlciBpbiB0ZXJtcyBvZiBbTWFrZTNdLiBIb3dldmVyLCB3ZSBpbXBsZW1lbnQgaXQgYnkgaGFuZCBzbyB0aGF0XG4gICAgdGhlIHJlc3VsdGluZyBmdW5jdGlvbnMgYXJlIG1vcmUgZWZmaWNpZW50LCBlLmcuIHVzaW5nIFttYXAyXSBkaXJlY3RseSBpbnN0ZWFkIG9mXG4gICAgZGVmaW5pbmcgW2FwcGx5XSBpbiB0ZXJtcyBvZiBpdCBhbmQgdGhlbiBbbWFwMl0gaW4gdGVybXMgb2YgdGhhdC4gRm9yIG1vc3RcbiAgICBhcHBsaWNhdGl2ZXMgdGhpcyBkb2VzIG5vdCBtYXR0ZXIsIGJ1dCBmb3Igc29tZSAoc3VjaCBhcyBCb25zYWkuVmFsdWUudCksIGl0IGhhcyBhXG4gICAgbGFyZ2VyIGltcGFjdC4gKilcbm1vZHVsZSBNYWtlM191c2luZ19tYXAyIChYIDogQmFzaWMzX3VzaW5nX21hcDIpIDpcbiAgUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0IGFwcGx5IHRmIHRhID0gbWFwMiB0ZiB0YSB+ZjooZnVuIGYgYSAtPiBmIGEpXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAyIChtYXAyIHRhIHRiIH5mKSB0YyB+ZjooZnVuIGZhYiBjIC0+IGZhYiBjKVxuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0ICggKj4gKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuICgpIHkgLT4geSlcbiAgbGV0ICggPCogKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuIHggKCkgLT4geClcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMl91c2luZ19tYXAyIChYIDogQmFzaWMyX3VzaW5nX21hcDIpIDpcbiAgUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTNfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfbWFwMiAoWCA6IEJhc2ljX3VzaW5nX21hcDIpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPVxuICBNYWtlMl91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDIgKE0gOiBNb25hZC5TMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBNLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgICBsZXQgYXBwbHkgbWYgbXggPSBNLmJpbmQgbWYgfmY6KGZ1biBmIC0+IE0ubWFwIG14IH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIE0ubWFwXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkIChNIDogTW9uYWQuUykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE9mX21vbmFkMiAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgXykgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBDb21wb3NlIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRy5yZXR1cm4gKEYucmV0dXJuIGEpXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBHLmFwcGx5IChHLm1hcCB+ZjpGLmFwcGx5IHRmKSB0eFxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEcubWFwIH5mOihGLm1hcCB+ZikgdFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgUGFpciAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBGLnJldHVybiBhLCBHLnJldHVybiBhXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBGLmFwcGx5IChmc3QgdGYpIChmc3QgdHgpLCBHLmFwcGx5IChzbmQgdGYpIChzbmQgdHgpXG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRi5tYXAgfmYgKGZzdCB0KSwgRy5tYXAgfmYgKHNuZCB0KVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuIiwiKCogW0J5dGVzMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW0NhbWwuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtDYW1sLkJ5dGVzXS4gW0J5dGVzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZFxuICAgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5CeXRlc10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEJ5dGVzICA9IEJ5dGVzMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBCeXRlcyA9IEJ5dGVzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5CeXRlc10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0ICAgICAgICA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6c3RyaW5nXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5pbmNsdWRlIFByaW1pdGl2ZXNcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBibGl0ID0gQ2FtbC5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBDYW1sLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IENhbWwuQnl0ZXMuY29tcGFyZVxubGV0IGNvcHkgPSBDYW1sLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBDYW1sLkJ5dGVzLmNyZWF0ZVxubGV0IGZpbGwgPSBDYW1sLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gQ2FtbC5CeXRlcy5tYWtlXG5sZXQgbWFwID0gQ2FtbC5CeXRlcy5tYXBcbmxldCBtYXBpID0gQ2FtbC5CeXRlcy5tYXBpXG5sZXQgc3ViID0gQ2FtbC5CeXRlcy5zdWJcbmxldCB1bnNhZmVfYmxpdCA9IENhbWwuQnl0ZXMudW5zYWZlX2JsaXRcbmxldCB0b19zdHJpbmcgPSBDYW1sLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IENhbWwuQnl0ZXMub2Zfc3RyaW5nXG5sZXQgdW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzID0gQ2FtbC5CeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbmxldCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb24gPSBDYW1sLkJ5dGVzLnVuc2FmZV9vZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIGNvbXBhcmF0b3IgLT4gKCdhIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wX2EpIGNvbXBhcmF0b3JcbiAgICAtPiAoJ2IsICdjbXBfYikgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsICdiKSB0LCAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkMiAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2EsICdiKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgfCBGaXJzdCBfYV9fMDAzXywgRmlyc3QgX2JfXzAwNF8gLT4gX2NtcF9fZiBfYV9fMDAzXyBfYl9fMDA0X1xuICAgIHwgRmlyc3QgXywgXyAtPiAtMVxuICAgIHwgXywgRmlyc3QgXyAtPiAxXG4gICAgfCBTZWNvbmQgX2FfXzAwNV8sIFNlY29uZCBfYl9fMDA2XyAtPiBfY21wX19zIF9hX18wMDVfIF9iX18wMDZfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBmIHMuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHMgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChmLCBzKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfZiBfaGFzaF9mb2xkX3MgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IEZpcnN0IF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9mIGhzdiBfYTBcbiAgfCBTZWNvbmQgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX3MgaHN2IF9hMFxuOztcblxubGV0IHRfb2Zfc2V4cCA6XG4gICdmICdzLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdmKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdzKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdmLCAncykgdFxuICA9XG4gIGZ1biAodHlwZSBmX18wMjNfIHNfXzAyNF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBmX18wMjNfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IHNfXzAyNF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChmX18wMjNfLCBzX18wMjRfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAxMV8gPSBcImVpdGhlcjAubWwudFwiIGluXG4gICAgZnVuIF9vZl9mX18wMDdfIF9vZl9zX18wMDhfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2ZfXzAwN18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgICBGaXJzdCByZXMwX18wMTdfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBfdGFnX18wMTlfKSA6OiBzZXhwX2FyZ3NfXzAyMF8pIGFzXG4gICAgICAgIF9zZXhwX18wMThfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyMF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAyMV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9zX18wMDhfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgICAgU2Vjb25kIHJlczBfXzAyMl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE5X1xuICAgICAgICAgICAgIF9zZXhwX18wMThfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdmICdzLlxuICAoJ2YgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2YsICdzKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBmX18wMzFfIHNfXzAzMl8pXG4gICAgICA6ICAoKGZfXzAzMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDMyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGZfXzAzMV8sIHNfXzAzMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfZl9fMDI1XyBfb2Zfc19fMDI2XyAtPiBmdW5jdGlvblxuICAgICAgfCBGaXJzdCBhcmcwX18wMjdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2ZfXzAyNV8gYXJnMF9fMDI3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJGaXJzdFwiOyByZXMwX18wMjhfIF1cbiAgICAgIHwgU2Vjb25kIGFyZzBfXzAyOV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMF8gPSBfb2Zfc19fMDI2XyBhcmcwX18wMjlfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNlY29uZFwiOyByZXMwX18wMzBfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nZl9zZXhwX2dyYW1tYXIgXydzX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRmlyc3RcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlNlY29uZFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nc19zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cbiIsIigqIFRoZSB0eXBlIFt0XSBzaG91bGQgYmUgYWJzdHJhY3QgdG8gbWFrZSB0aGUgZnNldCBhbmQgc2V0IGZ1bmN0aW9ucyB1bmF2YWlsYWJsZVxuICAgZm9yIHByaXZhdGUgdHlwZXMgYXQgdGhlIGxldmVsIG9mIHR5cGVzIChhbmQgbm90IGJ5IHB1dHRpbmcgTm9uZSBpbiB0aGUgZmllbGQpLlxuICAgVW5mb3J0dW5hdGVseSwgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0IG1lYW5zIHRoYXQgd2hlbiBjcmVhdGluZyBmaWVsZHMgKHRocm91Z2hcbiAgIGEgW2NyZWF0ZV0gZnVuY3Rpb24pIHZhbHVlIHJlc3RyaWN0aW9uIGtpY2tzIGluLiBUaGlzIGlzIHdvcmtlZCBhcm91bmQgYnkgaW5zdGVhZFxuICAgbm90IG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCwgYnV0IGZvcmNpbmcgYW55b25lIGJyZWFraW5nIHRoZSBhYnN0cmFjdGlvbiB0byB1c2VcbiAgIHRoZSBbRm9yX2dlbmVyYXRlZF9jb2RlXSBtb2R1bGUsIG1ha2luZyBpdCBvYnZpb3VzIHRvIGFueSByZWFkZXIgdGhhdCBzb21ldGhpbmcgdWdseVxuICAgaXMgZ29pbmcgb24uXG4gICB0X3dpdGhfcGVybSAoYW5kIGRlcml2YXRpdmVzKSBpcyB0aGUgdHlwZSB0aGF0IHVzZXJzIHJlYWxseSB1c2UuIEl0IGlzIGEgY29uc3RydWN0b3JcbiAgIGJlY2F1c2U6XG4gICAxLiBpdCBtYWtlcyB0eXBlIGVycm9ycyBtb3JlIHJlYWRhYmxlIChsZXNzIGFsaWFzaW5nKVxuICAgMi4gdGhlIHR5cGVyIGluIG9jYW1sIDQuMDEgYWxsb3dzIHRoaXM6XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBBID0gc3RydWN0XG4gICAgICAgdHlwZSB0ID0ge2EgOiBpbnR9XG4gICAgIGVuZFxuICAgICB0eXBlIHQgPSBBLnRcbiAgICAgbGV0IGYgKHggOiB0KSA9IHguYVxuICAgXX1cblxuICAgKGFsdGhvdWdoIHdpdGggV2FybmluZyA0MDogYSBpcyB1c2VkIG91dCBvZiBzY29wZSlcbiAgIHdoaWNoIG1lYW5zIHRoYXQgaWYgW3Rfd2l0aF9wZXJtXSB3YXMgcmVhbGx5IGFuIGFsaWFzIG9uIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0sXG4gICBwZW9wbGUgY291bGQgc2F5IFt0LnNldHRlcl0gYW5kIGJyZWFrIHRoZSBhYnN0cmFjdGlvbiB3aXRoIG5vIGluZGljYXRpb24gdGhhdFxuICAgc29tZXRoaW5nIHVnbHkgaXMgZ29pbmcgb24gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgVGhlIHdhcm5pbmcgaXMgKEkgdGhpbmspIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gbWFrZSB0aGVpciBjb2RlIGNvbXBhdGlibGUgd2l0aFxuICAgcHJldmlvdXMgdmVyc2lvbnMgb2Ygb2NhbWwsIHNvIHdlIG1heSB2ZXJ5IHdlbGwgdHVybiBpdCBvZmYuXG5cbiAgIFRoZSB0eXBlIHRfd2l0aF9wZXJtIGNvdWxkIGFsc28gaGF2ZSBiZWVuIGEgW3VuaXQgLT4gRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHRvIHdvcmtcbiAgIGFyb3VuZCB2YWx1ZSByZXN0cmljdGlvbiBhbmQgdGhlbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHdvdWxkIGhhdmUgYmVlbiBhIHByb3BlclxuICAgYWJzdHJhY3QgdHlwZSwgYnV0IGl0IGxvb2tzIGxpa2UgaXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIChmb3IgZXhhbXBsZSwgYSBmb2xkIG9uIGFcbiAgIHJlY29yZCB0eXBlIHdpdGggNDAgZmllbGRzIHdvdWxkIGFjdHVhbGx5IGFsbG9jYXRlIHRoZSA0MCBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdJ3MgYXRcbiAgIGV2ZXJ5IHNpbmdsZSBmb2xkLikgKilcblxubW9kdWxlIEZvcl9nZW5lcmF0ZWRfY29kZSA9IHN0cnVjdFxuICB0eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICB7IGZvcmNlX3ZhcmlhbmNlIDogJ3Blcm0gLT4gdW5pdFxuICAgIDsgKCogZm9yY2UgW3RdIHRvIGJlIGNvbnRyYXZhcmlhbnQgaW4gWydwZXJtXSwgYmVjYXVzZSBwaGFudG9tIHR5cGUgdmFyaWFibGVzIG9uXG4gICAgICAgICBjb25jcmV0ZSB0eXBlcyBkb24ndCB3b3JrIHRoYXQgd2VsbCBvdGhlcndpc2UgKHVzaW5nIDo+IGNhbiByZW1vdmUgdGhlbSBlYXNpbHkpICopXG4gICAgICBuYW1lIDogc3RyaW5nXG4gICAgOyBzZXR0ZXIgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBnZXR0ZXIgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgIDsgZnNldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkIC0+ICdyZWNvcmRcbiAgICB9XG5cbiAgbGV0IG9wYXF1ZV9pZGVudGl0eSA9IFN5czAub3BhcXVlX2lkZW50aXR5XG5lbmRcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gPVxuICB8IEZpZWxkIG9mICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSBGb3JfZ2VuZXJhdGVkX2NvZGUudFxuW0BAdW5ib3hlZF1cblxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID0gKFsgYFJlYWQgfCBgU2V0X2FuZF9jcmVhdGUgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSByZWFkb25seV90ID0gKFsgYFJlYWQgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxuXG5sZXQgbmFtZSAoRmllbGQgZmllbGQpID0gZmllbGQubmFtZVxubGV0IGdldCAoRmllbGQgZmllbGQpIHIgPSBmaWVsZC5nZXR0ZXIgclxubGV0IGZzZXQgKEZpZWxkIGZpZWxkKSByIHYgPSBmaWVsZC5mc2V0IHIgdlxubGV0IHNldHRlciAoRmllbGQgZmllbGQpID0gZmllbGQuc2V0dGVyXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAncmVzdWx0KSB1c2VyID1cbiAgeyBmIDogJ2ZpZWxkLiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gLT4gJ3Jlc3VsdCB9XG5cbmxldCBtYXAgKEZpZWxkIGZpZWxkKSByIH5mID0gZmllbGQuZnNldCByIChmIChmaWVsZC5nZXR0ZXIgcikpXG5cbmxldCB1cGRhdGVyIChGaWVsZCBmaWVsZCkgPVxuICBtYXRjaCBmaWVsZC5zZXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgc2V0dGVyIC0+IFNvbWUgKGZ1biByIH5mIC0+IHNldHRlciByIChmIChmaWVsZC5nZXR0ZXIgcikpKVxuOztcbiIsIigqIFtTdHJpbmcwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtDYW1sLlN0cmluZ10uICBbU3RyaW5nMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzXG4gICBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzLCBpbmNsdWRpbmcgdGhlIHN1YnNjcmlwdCBzeW50YXhcbiAgIFt4LihpKV0gb3IgW3guKGkpIDwtIGVdIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0b1xuICAgW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBDYW1sLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IENhbWwuU3RyaW5nLmNvbXBhcmVcblxubGV0IGNvcHkgeCA9XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpcbiAgICAgIChCeXRlcy5vZl9zdHJpbmcgeClcbjs7XG5cbmxldCBlc2NhcGVkID0gQ2FtbC5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBDYW1sLlN0cmluZy5tYWtlXG5sZXQgc3ViID0gQ2FtbC5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLlN0cmluZy51bnNhZmVfYmxpdFxubGV0IHVwcGVyY2FzZSA9IENhbWwuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxuXG5sZXQgY29uY2F0ID8oc2VwID0gXCJcIikgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiXCJcbiAgKCogVGhlIHN0ZGxpYiBkb2VzIG5vdCBzcGVjaWFsaXplIHRoaXMgY2FzZSBiZWNhdXNlIGl0IGNvdWxkIGJyZWFrIGV4aXN0aW5nIHByb2plY3RzLiAqKVxuICB8IFsgeCBdIC0+IHhcbiAgfCBsIC0+IENhbWwuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbigqIFRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuU3RyaW5nLml0ZXIgdCB+ZlxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2FtbC5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgICAgIHRoZW4gMFxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbWF0Y2ggY29tcGFyZV9zdHJpbmcgYV9fMDAxXy5wb3NfZm5hbWUgYl9fMDAyXy5wb3NfZm5hbWUgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19sbnVtIGJfXzAwMl8ucG9zX2xudW0gd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19ib2wgYl9fMDAyXy5wb3NfYm9sIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMDFfLnBvc19jbnVtIGJfXzAwMl8ucG9zX2NudW1cbiAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgZnVuIGhzdiBhcmcgLT5cbiAgICAgIGxldCBoc3YgPVxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IGFyZy5wb3NfZm5hbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfbG51bVxuICAgICAgICBpblxuICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2JvbFxuICAgICAgaW5cbiAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfY251bVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW4geyBwb3NfZm5hbWUgPSBwb3NfZm5hbWVfXzAwNF9cbiAgICAgICAgIDsgcG9zX2xudW0gPSBwb3NfbG51bV9fMDA2X1xuICAgICAgICAgOyBwb3NfYm9sID0gcG9zX2JvbF9fMDA4X1xuICAgICAgICAgOyBwb3NfY251bSA9IHBvc19jbnVtX18wMTBfXG4gICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAzXyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfY251bVwiOyBhcmdfXzAxMV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfYm9sXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfbG51bVwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19mbmFtZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBDYW1sLnJlc3VsdCA9XG4gIHwgT2sgb2YgJ2FcbiAgfCBFcnJvciBvZiAnYlxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG5cbmxldCB0X29mX3NleHAgOlxuICAnYSAnYi5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYikgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnYSwgJ2IpIHRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDE3XyBiX18wMThfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE3XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoYV9fMDE3XywgYl9fMDE4XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJyZXN1bHQubWwudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcIm9rXCIgfCBcIk9rXCIpIGFzIF90YWdfXzAwOF8pIDo6IHNleHBfYXJnc19fMDA5XykgYXNcbiAgICAgICAgX3NleHBfXzAwN18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDA5XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDEwXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTFfID0gX29mX2FfXzAwMV8gYXJnMF9fMDEwXyBpblxuICAgICAgICAgICBPayByZXMwX18wMTFfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAwOF9cbiAgICAgICAgICAgICBfc2V4cF9fMDA3XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgX3RhZ19fMDEzXykgOjogc2V4cF9hcmdzX18wMTRfKSBhc1xuICAgICAgICBfc2V4cF9fMDEyXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTRfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTVfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYl9fMDAyXyBhcmcwX18wMTVfIGluXG4gICAgICAgICAgIEVycm9yIHJlczBfXzAxNl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDEzX1xuICAgICAgICAgICAgIF9zZXhwX18wMTJfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwib2tcIiB8IFwiT2tcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDI1XyBiX18wMjZfKVxuICAgICAgOiAgKChhX18wMjVfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMjVfLCBiX18wMjZfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxOV8gX29mX2JfXzAyMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDIxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDIyXyBdXG4gICAgICB8IEVycm9yIGFyZzBfXzAyM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyNF8gPSBfb2ZfYl9fMDIwXyBhcmcwX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkVycm9yXCI7IHJlczBfXzAyNF8gXVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJPa1wiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXJyb3JcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAyN18gYl9fMDI4XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IHQgLT4gZjooZWx0IC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwLiBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOihlbHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiBfIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gXyB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiBfIHQgLT4gZjooZWx0IC0+ICdhIG9wdGlvbikgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIHBvbHltb3JwaGljIGNvbnRhaW5lciwgZS5nLiwgWydhIGxpc3RdIG9yIFsnYSBhcnJheV0uICopXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiAnYSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbmltdW0gKHJlc3AgbWF4aW11bSkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZFxuICAgICAgW2NvbXBhcmVdIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdFxuICAgICAgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5IGFzIFtmb2xkXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICsncGhhbnRvbSkgdFxuXG4gIGluY2x1ZGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWMgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSBlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIGVsdCAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogVGhlIFtpdGVyXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2l0ZXJdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lIFtpdGVyXVxuICAgICAgdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBpdGVyIHQgfmYgPSBDb250YWluZXIuaXRlciB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtpdGVyXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtpdGVyXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeVxuICAgICAgYXMgd2VsbC4gKilcbiAgdmFsIGl0ZXIgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdCBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAnYSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBNb25hZC5JZGVudC50XG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgJ2EgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tX2ludmFyaWFudCA9IFMxX3BoYW50b21faW52YXJpYW50XG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfcGhhbnRvbSA9IEdlbmVyaWNfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgbWluX2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdlKSBSZXN1bHQudClcbiAgICAtPiAndFxuICAgIC0+ICgnYiwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdiKSBmb2xkXG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2FycmF5IDogbGVuZ3RoOid0IGxlbmd0aCAtPiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgYXJyYXlcblxuICAoKiogVGhlIGlkaW9tIGZvciB1c2luZyBbQ29udGFpbmVyLk1ha2VdIGlzIHRvIGJpbmQgdGhlIHJlc3VsdGluZyBtb2R1bGUgYW5kIHRvXG4gICAgICBleHBsaWNpdGx5IGltcG9ydCBlYWNoIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBvbmUgd2FudHM6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgICBsZXQgY291bnQgICAgPSBDLmNvdW50XG4gICAgICAgIGxldCBleGlzdHMgICA9IEMuZXhpc3RzXG4gICAgICAgIGxldCBmaW5kICAgICA9IEMuZmluZFxuICAgICAgICAoKiAuLi4gKilcbiAgICAgIF19XG5cbiAgICAgIFRoaXMgaXMgcHJlZmVyYWJsZSB0bzpcblxuICAgICAge1tcbiAgICAgICAgaW5jbHVkZSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICBdfVxuXG4gICAgICBiZWNhdXNlIHRoZSBbaW5jbHVkZV0gbWFrZXMgaXQgdG9vIGVhc3kgdG8gc2hhZG93IHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICAgY29udGFpbmVyIGZ1bmN0aW9ucyAoW2xlbmd0aF0gYmVpbmcgYSBjb21tb24gb25lKS5cblxuICAgICAgW0NvbnRhaW5lci5NYWtlMF0gaXMgbGlrZSBbQ29udGFpbmVyLk1ha2VdLCBidXQgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lcnMgbGlrZVxuICAgICAgW3N0cmluZ10uICopXG4gIG1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA6IFMwIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICAgIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxudHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxubGV0IGl0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKVxubGV0IGNvdW50IH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gYSAtPiBpZiBmIGEgdGhlbiBuICsgMSBlbHNlIG4pXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSlcbjs7XG5cbmxldCBmb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIH5maW5pc2ggdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIGZpbmlzaFxuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSB4IC0+IHhcbiAgICAgICAgIHwgU3RvcCB4IC0+IHJldHVybiB4KSkpXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKVxuOztcblxubGV0IGxlbmd0aCB+Zm9sZCBjID0gZm9sZCBjIH5pbml0OjAgfmY6KGZ1biBhY2MgXyAtPiBhY2MgKyAxKVxuXG5sZXQgaXNfZW1wdHkgfml0ZXIgYyA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIF8gLT4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZXhpc3RzIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiAoU29tZSB4KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDogc2lnXG4gIGluY2x1ZGUgR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kID0gc3RydWN0XG4gIGxldCBmb2xkID0gVC5mb2xkXG5cbiAgbGV0IGl0ZXIgPVxuICAgIG1hdGNoIFQuaXRlciB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXIgLT4gaXRlclxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXIgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBsZW5ndGggPVxuICAgIG1hdGNoIFQubGVuZ3RoIHdpdGhcbiAgICB8IGBDdXN0b20gbGVuZ3RoIC0+IGxlbmd0aFxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IC0+IGxlbmd0aCB+Zm9sZCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBpc19lbXB0eSB+aXRlciB0XG4gIGxldCBzdW0gbSB0ID0gc3VtIH5mb2xkIG0gdFxuICBsZXQgY291bnQgdCB+ZiA9IGNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzIH5pdGVyIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGwgfml0ZXIgdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmQgfml0ZXIgdCB+ZlxuICBsZXQgdG9fbGlzdCB0ID0gdG9fbGlzdCB+Zm9sZCB0XG4gIGxldCB0b19hcnJheSB0ID0gdG9fYXJyYXkgfmxlbmd0aCB+aXRlciB0XG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IGZvbGRfcmVzdWx0IHQgfmZvbGQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gZm9sZF91bnRpbCB0IH5mb2xkIH5pbml0IH5mIH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IGVsdCA9IGV4aXN0cyB0IH5mOihULkVsdC5lcXVhbCBlbHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDYW1sLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuIHggPSBmcm9tX3ZhbCB4XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGxhenkgKGZvcmNlIChmIChmb3JjZSB0KSkpXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBUX3VuZm9yY2luZyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIGlzX3ZhbCB0IHRoZW4gc2V4cF9vZl9hIChmb3JjZSB0KSBlbHNlIHNleHBfb2Zfc3RyaW5nIFwiPHVuZm9yY2VkIGxhenk+XCJcbiAgOztcbmVuZFxuIiwiKCogU3BsaXQgb2ZmIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3kgd2l0aCBbT3JfZXJyb3JdLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgcG9zaXRpb246ICVkXCIgcG9zICgpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgbGVuZ3RoOiAlZFwiIGxlbiAoKTtcbiAgKCogV2UgdXNlIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiB0b3RhbF9sZW5ndGhdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicG9zICsgbGVuIHBhc3QgZW5kOiAlZCArICVkID4gJWRcIiBwb3MgbGVuIHRvdGFsX2xlbmd0aCAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gICgqIFRoaXMgaXMgYmV0dGVyIHRoYW4gW3Nsb3dfY2hlY2tfcG9zX2xlbl9leG5dIGZvciB0d28gcmVhc29uczpcblxuICAgICAtIG11Y2ggbGVzcyBpbmxpbmVkIGNvZGVcbiAgICAgLSBvbmx5IG9uZSBjb25kaXRpb25hbCBqdW1wXG5cbiAgICAgVGhlIHJlYXNvbiBpdCB3b3JrcyBpcyB0aGF0IGNoZWNraW5nIFs8IDBdIGlzIHRlc3RpbmcgdGhlIGhpZ2hlc3Qgb3JkZXIgYml0LCBzb1xuICAgICBbYSA8IDAgfHwgYiA8IDBdIGlzIHRoZSBzYW1lIGFzIFthIGxvciBiIDwgMF0uXG5cbiAgICAgW3BvcyArIGxlbl0gY2FuIG92ZXJmbG93LCBzbyBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSBpcyBub3QgZXF1aXZhbGVudCB0b1xuICAgICBbdG90YWxfbGVuZ3RoIC0gbGVuIC0gcG9zIDwgMF0sIHdlIG5lZWQgdG8gdGVzdCBmb3IgW3BvcyArIGxlbl0gb3ZlcmZsb3cgYXNcbiAgICAgd2VsbC4gKilcbiAgbGV0IHN0b3AgPSBwb3MgKyBsZW4gaW5cbiAgaWYgcG9zIGxvciBsZW4gbG9yIHN0b3AgbG9yICh0b3RhbF9sZW5ndGggLSBzdG9wKSA8IDBcbiAgdGhlbiBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIG9wZW4gQ2FtbC5CaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBsZXQgb2Zfc3RhdGUgOiBDYW1sLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gZHN0IHNyYyA9XG4gIGxldCBkc3QgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIGRzdCkgaW5cbiAgbGV0IHNyYyA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2Ugc3JjKSBpblxuICBDYW1sLkJpZ2FycmF5LkFycmF5MS5ibGl0IHNyYyBkc3RcblxubGV0IG1ha2VfZGVmYXVsdCBkZWZhdWx0ID1cbiAgbGV0IHNwbGl0X2Zyb21fcGFyZW50IHYgPVxuICAgIENhbWwuTGF6eS5tYXBfdmFsIENhbWwuUmFuZG9tLlN0YXRlLnNwbGl0IHZcbiAgaW5cbiAgQ2FtbC5Eb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50IChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IGdldF9zdGF0ZSByYW5kb21fa2V5ID0gQ2FtbC5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbQ2FtbC5SYW5kb20uU3RhdGUuZGVmYXVsdF0sIHdlIGhhdmUgdG8gY29uc3RydWN0IG91ciBvd24uICBXZSB0aGVuIGJ1aWxkIHRoZVxuICAgW0NhbWwuUmFuZG9tLmludF0sIFtDYW1sLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtDYW1sLlJhbmRvbS5TdGF0ZS5hc3NpZ25dXG4gICBmdW5jdGlvbiwgd2hpY2ggYWNjZXNzZXMgdGhlIHVuZXhwb3NlZCBzdGF0ZSByZXByZXNlbnRhdGlvbi4gIFNvLCB3ZSBjb3B5IHRoZVxuICAgW1N0YXRlLnJlcHJdIHR5cGUgZGVmaW5pdGlvbiBhbmQgW2Fzc2lnbl0gZnVuY3Rpb24gdG8gaGVyZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LFxuICAgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBnZXQgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiAqKVxuXG4oKiBSZWdyZXNzaW9uIHRlc3RzIG91Z2h0IHRvIGJlIGRldGVybWluaXN0aWMgYmVjYXVzZSB0aGF0IHdheSBhbnlvbmUgd2hvIGJyZWFrcyB0aGUgdGVzdFxuICAga25vd3MgdGhhdCBpdCdzIHRoZWlyIGNvZGUgdGhhdCBicm9rZSB0aGUgdGVzdC4gIElmIHRlc3RzIGFyZSBub25kZXRlcm1pbmlzdGljLCBhIHRlc3RcbiAgIGZhaWx1cmUgbWF5IGluc3RlYWQgaGFwcGVuIGJlY2F1c2UgdGhlIHRlc3QgcnVubmVyIGdvdCB1bmx1Y2t5IGFuZCB1bmNvdmVyZWQgYW5cbiAgIGV4aXN0aW5nIGJ1ZyBpbiB0aGUgY29kZSBzdXBwb3NlZGx5IGJlaW5nIFwicHJvdGVjdGVkXCIgYnkgdGhlIHRlc3QgaW4gcXVlc3Rpb24uICopXG5sZXQgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cyA9XG4gIGlmIGFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggYWxsb3dfaW5fdGVzdHMgd2l0aFxuICAgIHwgU29tZSB0cnVlIC0+ICgpXG4gICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgXCJpbml0aWFsaXppbmcgUmFuZG9tIHdpdGggYSBub25kZXRlcm1pbmlzdGljIHNlZWQgaXMgZm9yYmlkZGVuIGluIGlubGluZSB0ZXN0c1wiKVxuOztcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQgOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5sZXQgcmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgcmFuZG9tX3NlZWQgKClcbjs7XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBXZSBhbGxvdyBsYXppbmVzcyBvbmx5IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBbZGVmYXVsdF0sIGJlbG93LCB3aGljaCBtYXkgbGF6aWx5IGNhbGxcbiAgICAgW21ha2Vfc2VsZl9pbml0XS4gRm9yIGFsbCBvdGhlciBwdXJwb3Nlcywgd2UgY3JlYXRlIGFuZCB1c2UgW3RdIGVhZ2VybHkuICopXG4gIHR5cGUgdCA9IENhbWwuUmFuZG9tLlN0YXRlLnQgTGF6eS50XG5cbiAgbGV0IGJpdHMgdCA9IENhbWwuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IENhbWwuUmFuZG9tLlN0YXRlLmJvb2wgKExhenkuZm9yY2UgdClcbiAgbGV0IGludCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50MzIgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50NjQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbmF0aXZlaW50IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLm5hdGl2ZWludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBtYWtlIHNlZWQgPSBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5jb3B5IChMYXp5LmZvcmNlIHQpKVxuICBsZXQgY2hhciB0ID0gaW50IHQgMjU2IHw+IENoYXIudW5zYWZlX29mX2ludFxuICBsZXQgYXNjaWkgdCA9IGludCB0IDEyOCB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICAgIExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuICA7O1xuXG4gIGxldCBhc3NpZ24gPSBSYW5kb21fcmVwci5hc3NpZ25cblxuICBsZXQgZnVsbF9pbml0IHQgc2VlZCA9IGFzc2lnbiB0IChtYWtlIHNlZWQpXG5cbiAgbGV0IGRlZmF1bHQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGRlZmluZSBCYXNlJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUgYXMgYSBjb3B5IG9mIE9DYW1sJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUuXG4gICAgICAgICBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgdGhhdCB1c2UgQmFzZS5SYW5kb20gd2lsbCBzZWUgdGhlIHNhbWUgc2VxdWVuY2Ugb2ZcbiAgICAgICAgIHJhbmRvbSBiaXRzIGFzIGlmIHRoZXkgaGFkIHVzZWQgQ2FtbC5SYW5kb20uIEhvd2V2ZXIsIGJlY2F1c2UgW2dldF9zdGF0ZV0gcmV0dXJuc1xuICAgICAgICAgYSBjb3B5LCBCYXNlLlJhbmRvbSBhbmQgT0NhbWwuUmFuZG9tIGFyZSBub3QgdXNpbmcgdGhlIHNhbWUgc3RhdGUuIElmIGEgcHJvZ3JhbVxuICAgICAgICAgdXNlZCBib3RoLCBlYWNoIG9mIHRoZW0gd291bGQgZ28gdGhyb3VnaCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiByYW5kb20gYml0cy4gVG9cbiAgICAgICAgIGF2b2lkIHRoYXQsIHdlIHJlc2V0IE9DYW1sJ3MgcmFuZG9tIHN0YXRlIHRvIGEgZGlmZmVyZW50IHNlZWQsIGdpdmluZyBpdCBhXG4gICAgICAgICBkaWZmZXJlbnQgc2VxdWVuY2UuICopXG4gICAgICBsZXQgdCA9IENhbWwuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgQ2FtbC5SYW5kb20uaW5pdCAxMzc7XG4gICAgICBMYXp5LmZyb21fdmFsIHQpXG4gICAgZWxzZVxuICAgICAgbGF6eVxuICAgICAgICAoKiBPdXRzaWRlIG9mIHRlc3RzLCB3ZSBpbml0aWFsaXplIHJhbmRvbSBzdGF0ZSBub25kZXRlcm1pbmlzdGljYWxseSBhbmQgbGF6aWx5LlxuICAgICAgICAgICBXZSBmb3JjZSB0aGUgcmFuZG9tIGluaXRpYWxpemF0aW9uIHRvIGJlIGxhenkgc28gdGhhdCB3ZSBkbyBub3QgcGF5IGFueSBjb3N0XG4gICAgICAgICAgIGZvciBpdCBpbiBwcm9ncmFtcyB0aGF0IGRvIG5vdCB1c2UgcmFuZG9tbmVzcy4gKilcbiAgICAgICAgKExhenkuZm9yY2UgKG1ha2Vfc2VsZl9pbml0ICgpKSlcbiAgOztcblxuICBsZXQgaW50X29uXzY0Yml0cyB0IGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgQ2FtbC5JbnQ2NC50b19pbnQgKGludDY0IHQgKENhbWwuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBDYW1sLkludDMyLnRvX2ludCAoaW50MzIgdCAoQ2FtbC5JbnQzMi5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50NjQgPVxuICAgIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIENhbWwuSW50MzIgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT4gbG9neG9yIChiaXRzIHN0YXRlKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyBzdGF0ZSA9IENhbWwuSW50NjQudG9faW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIHN0YXRlID0gQ2FtbC5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBDYW1sLkludDY0LnRvX25hdGl2ZWludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIHN0YXRlID1cbiAgICBDYW1sLk5hdGl2ZWludC5vZl9pbnQzMiAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCByYWlzZV9jcm9zc2VkX2JvdW5kcyBuYW1lIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kIHN0cmluZ19vZl9ib3VuZCA9XG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJSYW5kb20uJXM6IGNyb3NzZWQgYm91bmRzIFslcyA+ICVzXVwiXG4gICAgICBuYW1lXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIGxvd2VyX2JvdW5kKVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCB1cHBlcl9ib3VuZClcbiAgICAgICgpXG4gIFtAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG4gIDs7XG5cbiAgbGV0IGludF9pbmNsID1cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludFwiIGxvIGhpIEludC50b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBJbnQubWF4X3ZhbHVlXG4gICAgICB0aGVuIGxvICsgKGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGxhbmQgSW50Lm1heF92YWx1ZSlcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwXG4gICAgICB0aGVuIGxvICsgaW50IHN0YXRlIChJbnQuc3VjYyBkaWZmKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQzMl9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDMyIHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5OYXRpdmVpbnQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcIm5hdGl2ZWludFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMG5cbiAgICAgIHRoZW4gYWRkIGxvIChuYXRpdmVpbnQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDY0X2luY2wgPVxuICAgIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50NjRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQ2NCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICAoKiBSZXR1cm4gYSB1bmlmb3JtbHkgcmFuZG9tIGZsb2F0IGluIFswLCAxKS4gKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzdGF0ZSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHNjYWxlID0gMHgxcC0zMCBpblxuICAgICgqIDJeLTMwICopXG4gICAgbGV0IHIxID0gQ2FtbC5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gQ2FtbC5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHJlc3VsdCA9ICgocjEgKi4gc2NhbGUpICsuIHIyKSAqLiBzY2FsZSBpblxuICAgICgqIFdpdGggdmVyeSBzbWFsbCBwcm9iYWJpbGl0eSwgcmVzdWx0IGNhbiByb3VuZCB1cCB0byAxLjAsIHNvIGluIHRoYXQgY2FzZSwgd2UganVzdFxuICAgICAgIHRyeSBhZ2Fpbi4gKilcbiAgICBpZiByZXN1bHQgPCAxLjAgdGhlbiByZXN1bHQgZWxzZSByYXdmbG9hdCBzdGF0ZVxuICA7O1xuXG4gIGxldCBmbG9hdCBzdGF0ZSBoaSA9IHJhd2Zsb2F0IHN0YXRlICouIGhpXG5cbiAgbGV0IGZsb2F0X3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJmbG9hdFwiIGxvIGhpIENhbWwuc3RyaW5nX29mX2Zsb2F0O1xuICAgIGxvICsuIGZsb2F0IHN0YXRlIChoaSAtLiBsbylcbiAgOztcbmVuZFxuXG5sZXQgZGVmYXVsdCA9IFJhbmRvbV9yZXByLm1ha2VfZGVmYXVsdCBTdGF0ZS5kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgaW50IHggPSBTdGF0ZS5pbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50MzIgeCA9IFN0YXRlLmludDMyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IG5hdGl2ZWludCB4ID0gU3RhdGUubmF0aXZlaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDY0IHggPSBTdGF0ZS5pbnQ2NCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBmbG9hdCB4ID0gU3RhdGUuZmxvYXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50X2luY2wgeCB5ID0gU3RhdGUuaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQzMl9pbmNsIHggeSA9IFN0YXRlLmludDMyX2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBuYXRpdmVpbnRfaW5jbCB4IHkgPSBTdGF0ZS5uYXRpdmVpbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDY0X2luY2wgeCB5ID0gU3RhdGUuaW50NjRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGZsb2F0X3JhbmdlIHggeSA9IFN0YXRlLmZsb2F0X3JhbmdlIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGNoYXIgKCkgPSBTdGF0ZS5jaGFyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBhc2NpaSAoKSA9IFN0YXRlLmFzY2lpIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNcbiIsIigqKiBBbiBpbnRlcm5hbC1vbmx5IG1vZHVsZSBmYWN0b3JlZCBvdXQgZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvcmVfYXJyYXlcbiAgICBhbmQgY29yZV9saXN0LiAgQ29udGFpbnMgY29kZSBmb3IgcGVybXV0aW5nIGFuIGFycmF5LiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpID8ocG9zID0gMCkgP2xlbiB0ID1cbiAgKCogQ29waWVkIGZyb20gW09yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjb21waWxpbmdcbiAgICAgd2l0aG91dCBmbGFtYmRhLiAqKVxuICBsZXQgdG90YWxfbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgbGV0IG51bV9zd2FwcyA9IGxlbiAtIDEgaW5cbiAgZm9yIGkgPSBudW1fc3dhcHMgZG93bnRvIDEgZG9cbiAgICBsZXQgdGhpc19pID0gcG9zICsgaSBpblxuICAgICgqIFtyYW5kb21faV0gaXMgZHJhd24gZnJvbSBbcG9zLHRoaXNfaV0gKilcbiAgICBsZXQgcmFuZG9tX2kgPSBwb3MgKyBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoaSArIDEpIGluXG4gICAgc3dhcCB0IHRoaXNfaSByYW5kb21faVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIHRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIFtDYW1sLmlnbm9yZV0gKilcblxubGV0IG5vbiBmIHggPSBub3QgKGYgeClcblxubGV0IGZvcmV2ZXIgZiA9XG4gIGxldCByZWMgZm9yZXZlciAoKSA9XG4gICAgZiAoKTtcbiAgICBmb3JldmVyICgpXG4gIGluXG4gIHRyeSBmb3JldmVyICgpIHdpdGhcbiAgfCBlIC0+IGVcbjs7XG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGUgdHlwaWNhbCB1c2UgY2FzZSBmb3IgdGhlc2UgZnVuY3Rpb25zIGlzIHRvIHBhc3MgaW4gZnVuY3Rpb25hbCBhcmd1bWVudHMgYW5kIGdldFxuICAgZnVuY3Rpb25zIGFzIGEgcmVzdWx0LiAqKVxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgcmVjIGFwcGx5X25fdGltZXMgfm4gZiB4ID0gaWYgbiA8PSAwIHRoZW4geCBlbHNlIGFwcGx5X25fdGltZXMgfm46KG4gLSAxKSBmIChmIHgpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGlzdF9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xpc3RcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA2XyBiX18wMDdfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA2XyBiX18wMDdfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDZfLCBiX18wMDdfIHdpdGhcbiAgICAgIHwgT2sgX2FfXzAwOF8sIE9rIF9iX18wMDlfIC0+IF9jbXBfX2EgX2FfXzAwOF8gX2JfXzAwOV9cbiAgICAgIHwgT2sgXywgXyAtPiAtMVxuICAgICAgfCBfLCBPayBfIC0+IDFcbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzLCBVbmVxdWFsX2xlbmd0aHMgLT4gMClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDEzXykgOiAoKGFfXzAxM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMTNfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMTFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAxMF8gYXJnMF9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMTJfIF1cbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxfbGVuZ3Roc1wiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcbmxldCBvZl9saXN0IHQgPSB0XG5cbmxldCByYW5nZScgfmNvbXBhcmUgfnN0cmlkZSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBsZXQgbmV4dF9pID0gc3RyaWRlIHN0YXJ0X2kgaW5cbiAgbGV0IG9yZGVyIHggeSA9IE9yZGVyaW5nLm9mX2ludCAoY29tcGFyZSB4IHkpIGluXG4gIGxldCByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpID1cbiAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZVwiXG4gIGluXG4gIGxldCBpbml0aWFsX3N0cmlkZV9vcmRlciA9XG4gICAgbWF0Y2ggb3JkZXIgc3RhcnRfaSBuZXh0X2kgd2l0aFxuICAgIHwgRXF1YWwgLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgIHwgTGVzcyAtPiBgTGVzc1xuICAgIHwgR3JlYXRlciAtPiBgR3JlYXRlclxuICBpblxuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgbGV0IGlfdG9fc3RvcF9vcmRlciA9IG9yZGVyIGkgc3RvcF9pIGluXG4gICAgbWF0Y2ggaV90b19zdG9wX29yZGVyLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+XG4gICAgICAoKiBoYXZlbid0IHlldCByZWFjaGVkIFtzdG9wX2ldLiBDb250aW51ZS4gKilcbiAgICAgIGxldCBuZXh0X2kgPSBzdHJpZGUgaSBpblxuICAgICAgKG1hdGNoIG9yZGVyIGkgbmV4dF9pLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgICAgfCBFcXVhbCwgXyAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rpb25cIlxuICAgICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPiBsb29wIG5leHRfaSAoaSA6OiBhY2N1bSkpXG4gICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAoKiBzdGVwcGVkIHBhc3QgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIGFjY3VtXG4gICAgfCBFcXVhbCwgXyAtPlxuICAgICAgKCogcmVhY2hlZCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgKG1hdGNoIHN0b3Agd2l0aFxuICAgICAgIHwgYGluY2x1c2l2ZSAtPiBpIDo6IGFjY3VtXG4gICAgICAgfCBgZXhjbHVzaXZlIC0+IGFjY3VtKVxuICBpblxuICBsZXQgc3RhcnRfaSA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF9pXG4gICAgfCBgZXhjbHVzaXZlIC0+IG5leHRfaVxuICBpblxuICByZXYgKGxvb3Agc3RhcnRfaSBbXSlcbjs7XG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGlmIHN0cmlkZSA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2U6IHN0cmlkZSBtdXN0IGJlIG5vbi16ZXJvXCI7XG4gIHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlOihmdW4geCAtPiB4ICsgc3RyaWRlKSB+c3RhcnQgfnN0b3Agc3RhcnRfaSBzdG9wX2lcbjs7XG5cbmxldCBoZCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogXyAtPiBTb21lIHhcbjs7XG5cbmxldCB0bCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogdCcgLT4gU29tZSB0J1xuOztcblxubGV0IG50aCB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBudGhfYXV4IHQgbiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhIDo6IHQgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IHQgKG4gLSAxKVxuICAgIGluXG4gICAgbnRoX2F1eCB0IG4pXG47O1xuXG5sZXQgbnRoX2V4biB0IG4gPVxuICBtYXRjaCBudGggdCBuIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIkxpc3QubnRoX2V4biAlZCBjYWxsZWQgb24gbGlzdCBvZiBsZW5ndGggJWRcIiBuIChsZW5ndGggdCkgKClcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHVub3JkZXJlZF9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsIHwgbCwgW10gLT4gbFxuICB8IF8gLT4gcmV2X2FwcGVuZCBsMSBsMlxuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiIC0+IGxvb3AgYSBiIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8gfCBfLCBbXSAtPiBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIGwxIGwyID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iIH0gLT5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiXG4gICAgICBuYW1lXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EpXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IpXG4gICAgICAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMilcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2MgOiAnYyBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyIGwzID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIGMgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiLCBjIHdpdGhcbiAgICAgIHwgW10sIFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiLCBfIDo6IGMgLT4gbG9vcCBhIGIgYyAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfLCBfIHwgXywgW10sIF8gfCBfLCBfLCBbXSAtPlxuICAgICAgICBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiOyB0YWlsX29mX2MgPSBjIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgbDMgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgzX2V4biBuYW1lIGwxIGwyIGwzID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iOyB0YWlsX29mX2MgfSAtPlxuICAgIGxldCBuMSA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hIGluXG4gICAgbGV0IG4yID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IgaW5cbiAgICBsZXQgbjMgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYyBpblxuICAgIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWQgfHwgJWQgPD4gJWRcIiBuYW1lIG4xIG4yIG4yIG4zICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyIGwzKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubGV0IGl0ZXIyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooaXRlcjJfb2sgfmYpXG5cbmxldCBpdGVyMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIml0ZXIyX2V4blwiIGwxIGwyO1xuICBpdGVyMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoocmV2X21hcDJfb2sgfmYpXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpXG5cbmxldCBmb2xkMl9leG4gbDEgbDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGQyX2V4blwiIGwxIGwyO1xuICBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZlxuOztcblxubGV0IGZvcl9hbGwyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9yX2FsbDJfb2sgfmYpXG5cbmxldCBmb3JfYWxsMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvcl9hbGwyX2V4blwiIGwxIGwyO1xuICBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGV4aXN0czIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihleGlzdHMyX29rIH5mKVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHRcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIGxvb3AgbFxuICBpblxuICBsb29wIHRcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmVjIGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCB4IDo6IHQgLT4gaWYgZiB4IHRoZW4geCBlbHNlIGZpbmRfZXhuIHQgfmZcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgKGksIHgpIGVsc2UgbG9vcCAoaSArIDEpIGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkICYmIGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCB8fCBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZiA9XG4gIGxldCByZWMgcmlzZSB5cyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB5c1xuICAgIHwgKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzIC0+XG4gICAgICByaXNlICh5MCA6OiB5MSA6OiB5MiA6OiB5MyA6OiB5NCA6OiB5NSA6OiB5NiA6OiB5NyA6OiB5OCA6OiB5cykgYnNcbiAgaW5cbiAgbGV0IHJlYyBkaXZlIGJzID0gZnVuY3Rpb25cbiAgICB8IHgwIDo6IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHg2IDo6IHg3IDo6IHg4IDo6IHhzIC0+XG4gICAgICBsZXQgeTAgPSBmIHgwIGluXG4gICAgICBsZXQgeTEgPSBmIHgxIGluXG4gICAgICBsZXQgeTIgPSBmIHgyIGluXG4gICAgICBsZXQgeTMgPSBmIHgzIGluXG4gICAgICBsZXQgeTQgPSBmIHg0IGluXG4gICAgICBsZXQgeTUgPSBmIHg1IGluXG4gICAgICBsZXQgeTYgPSBmIHg2IGluXG4gICAgICBsZXQgeTcgPSBmIHg3IGluXG4gICAgICBsZXQgeTggPSBmIHg4IGluXG4gICAgICBkaXZlICgoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMpIHhzXG4gICAgfCB4cyAtPiByaXNlIChub250YWlsX21hcCB+ZiB4cykgYnNcbiAgaW5cbiAgZGl2ZSBbXSB4c1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmYgbCBjdHIgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFsgeDEgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBbIGYxIF1cbiAgfCBbIHgxOyB4MiBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBbIGYxOyBmMiBdXG4gIHwgWyB4MTsgeDI7IHgzIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBbIGYxOyBmMjsgZjMgXVxuICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBbIGYxOyBmMjsgZjM7IGY0IF1cbiAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBsZXQgZjUgPSBmIHg1IGluXG4gICAgZjFcbiAgICA6OiBmMlxuICAgIDo6IGYzXG4gICAgOjogZjRcbiAgICA6OiBmNVxuICAgIDo6IChpZiBjdHIgPiBtYXhfbm9uX3RhaWxjYWxsIHRoZW4gdGFpbF9tYXAgfmYgdGwgZWxzZSBjb3VudF9tYXAgfmYgdGwgKGN0ciArIDEpKVxuOztcblxubGV0IG1hcCBsIH5mID0gY291bnRfbWFwIH5mIGwgMFxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpXG5cbmxldCBtYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwibWFwMl9leG5cIiBsMSBsMjtcbiAgbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAzX29rIGwxIGwyIGwzIH5mID1cbiAgbGV0IHJlYyBsb29wIGwxIGwyIGwzIGFjID1cbiAgICBtYXRjaCBsMSwgbDIsIGwzIHdpdGhcbiAgICB8IFtdLCBbXSwgW10gLT4gYWNcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiwgeDMgOjogbDMgLT4gbG9vcCBsMSBsMiBsMyAoZiB4MSB4MiB4MyA6OiBhYylcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxvb3AgbDEgbDIgbDMgW11cbjs7XG5cbmxldCByZXZfbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KHJldl9tYXAzX29rIH5mKVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZilcblxubGV0IG1hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJtYXAzX2V4blwiIGwxIGwyIGwzO1xuICBtYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGwxIGwyIH5mID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIH5mIHQgKGYgaCA6OiBsMilcbjs7XG5cbmxldCB1bnppcCBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyXG4gICAgfCAoeCwgeSkgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXVxuOztcblxubGV0IHVuemlwMyBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgbDMgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyLCBsM1xuICAgIHwgKHgsIHksIHopIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKSAoeiA6OiBsMylcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdIFtdXG47O1xuXG5sZXQgemlwX2V4biBsMSBsMiA9XG4gIHRyeSBtYXAyX29rIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiB6aXBfZXhuOiAlZCA8PiAlZFwiIChsZW5ndGggbDEpIChsZW5ndGggbDIpICgpXG47O1xuXG5sZXQgemlwIGwxIGwyID0gbWFwMiB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMlxuXG4oKiogQWRkaXRpb25hbCBsaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJldl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHQgLT4gbG9vcCAoaSArIDEpIChmIGkgaCA6OiBhY2MpIHRcbiAgaW5cbiAgbG9vcCAwIFtdIGxcbjs7XG5cbmxldCBtYXBpIGwgfmYgPSByZXYgKHJldl9tYXBpIGwgfmYpXG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpXG5cbmxldCBzb3J0X2FuZF9ncm91cCBsIH5jb21wYXJlID1cbiAgbCB8PiBzdGFibGVfc29ydCB+Y29tcGFyZSB8PiBncm91cCB+YnJlYWs6KGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPD4gMClcbjs7XG5cbmxldCBjb25jYXRfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCBbXSBsXG47O1xuXG5sZXQgY29uY2F0X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGNvbnQgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAoY29udCArIDEpIChyZXZfYXBwZW5kIChmIGNvbnQgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuOztcblxubGV0IG1lcmdlIGwxIGwyIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGFjYyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGFjYyBsMlxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgYWNjIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNvbXBhcmUgaDEgaDIgPD0gMCB0aGVuIGxvb3AgKGgxIDo6IGFjYykgdDEgbDIgZWxzZSBsb29wIChoMiA6OiBhY2MpIGwxIHQyXG4gIGluXG4gIGxvb3AgW10gbDEgbDJcbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG5cbiAgb3BlbiBzdHJ1Y3RcbiAgICBtb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgTW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgYWxsID0gTW9uYWQuYWxsXG4gIGxldCBhbGxfdW5pdCA9IE1vbmFkLmFsbF91bml0XG4gIGxldCBpZ25vcmVfbSA9IE1vbmFkLmlnbm9yZV9tXG4gIGxldCBqb2luID0gTW9uYWQuam9pblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuICBlbmRcblxuICBsZXQgYXBwbHkgPSBBcHBsaWNhdGl2ZS5hcHBseVxuICBsZXQgYm90aCA9IEFwcGxpY2F0aXZlLmJvdGhcbiAgbGV0IG1hcDMgPSBBcHBsaWNhdGl2ZS5tYXAzXG4gIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gICAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKENhcnRlc2lhbl9wcm9kdWN0IDogTW9uYWQuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4oKiogcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdF9leG4gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IHRsIC0+IGxhc3RfZXhuIHRsXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lmxhc3RcIlxuOztcblxuKCoqIG9wdGlvbmFsbHkgcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdCBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4gU29tZSB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0IHRsXG4gIHwgW10gLT4gTm9uZVxuOztcblxubGV0IHJlYyBpc19wcmVmaXggbGlzdCB+cHJlZml4IH5lcXVhbCA9XG4gIG1hdGNoIHByZWZpeCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGhkIDo6IHRsIC0+XG4gICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICB8IFtdIC0+IGZhbHNlXG4gICAgIHwgaGQnIDo6IHRsJyAtPiBlcXVhbCBoZCBoZCcgJiYgaXNfcHJlZml4IHRsJyB+cHJlZml4OnRsIH5lcXVhbClcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhMSA6OiB0IC0+XG4gICAgbGV0IHJlYyBsb29wIGExIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYTIgOjogdCAtPiBpZiBlcXVhbCBhMSBhMiB0aGVuIFNvbWUgKGExLCBhMikgZWxzZSBsb29wIGEyIHRcbiAgICBpblxuICAgIGxvb3AgYTEgdFxuOztcblxuKCogcmV0dXJucyBsaXN0IHdpdGhvdXQgYWRqYWNlbnQgZHVwbGljYXRlcyAqKVxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzID8od2hpY2hfdG9fa2VlcCA9IGBMYXN0KSBsaXN0IH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCB0b19rZWVwIGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRvX2tlZXAgOjogYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBlcXVhbCBoZCB0b19rZWVwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRvX2tlZXAgPVxuICAgICAgICAgIG1hdGNoIHdoaWNoX3RvX2tlZXAgd2l0aFxuICAgICAgICAgIHwgYEZpcnN0IC0+IHRvX2tlZXBcbiAgICAgICAgICB8IGBMYXN0IC0+IGhkXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgdG9fa2VlcCBhY2N1bSB0bClcbiAgICAgIGVsc2UgbG9vcCBoZCAodG9fa2VlcCA6OiBhY2N1bSkgdGxcbiAgaW5cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiByZXYgKGxvb3AgaGQgW10gdGwpXG47O1xuXG4oKiogcmV0dXJucyBzb3J0ZWQgdmVyc2lvbiBvZiBsaXN0IHdpdGggZHVwbGljYXRlcyByZW1vdmVkICopXG5sZXQgZGVkdXBfYW5kX3NvcnQgbGlzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdCAoKiBwZXJmb3JtYW5jZSBoYWNrICopXG4gIHwgXyAtPlxuICAgIGxldCBlcXVhbCB4IHgnID0gY29tcGFyZSB4IHgnID0gMCBpblxuICAgIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGxpc3QgaW5cbiAgICByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyB+ZXF1YWwgc29ydGVkXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWRcbjs7XG5cbmxldCBjb250YWluc19kdXAgbHN0IH5jb21wYXJlID1cbiAgbWF0Y2ggZmluZF9hX2R1cCBsc3QgfmNvbXBhcmUgd2l0aFxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZpbmRfYWxsX2R1cHMgbCB+Y29tcGFyZSA9XG4gICgqIFdlIGFkZCB0aGlzIHJldmVyc2FsLCBzbyB3ZSBjYW4gc2tpcCBhIFtyZXZdIGF0IHRoZSBlbmQuIFdlIGNvdWxkIHNraXBcbiAgICAgW3Jldl0gYW55d2F5IHNpbmNlIHdlIGRvbiBub3QgZ2l2ZSBhbnkgb3JkZXJpbmcgZ3VhcmFudGVlcywgYnV0IGl0IGlzXG4gICAgIG5pY2UgdG8gZ2V0IHJlc3VsdHMgaW4gbmF0dXJhbCBvcmRlci4gKilcbiAgbGV0IGNvbXBhcmUgYSBiID0gLTEgKiBjb21wYXJlIGEgYiBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdXG47O1xuXG5sZXQgcmVjIGFsbF9lcXVhbF90byB0IHYgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IHggOjogeHMgLT4gZXF1YWwgeCB2ICYmIGFsbF9lcXVhbF90byB4cyB2IH5lcXVhbFxuOztcblxubGV0IGFsbF9lcXVhbCB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IGlmIGFsbF9lcXVhbF90byB4cyB4IH5lcXVhbCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG47O1xuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmluaXQgJWRcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPSAwIHRoZW4gYWNjdW0gZWxzZSBsb29wIChpIC0gMSkgKGYgKGkgLSAxKSA6OiBhY2N1bSlcbiAgaW5cbiAgbG9vcCBuIFtdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXVxuOztcblxubGV0IGZpbHRlcl9tYXAgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXAgbCB+ZilcblxubGV0IHJldl9maWx0ZXJfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGkgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgKGkgKyAxKSB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIHRsIGFjY3VtKVxuICBpblxuICBsb29wIDAgbCBbXVxuOztcblxubGV0IGZpbHRlcl9tYXBpIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwaSBsIH5mKVxubGV0IGZpbHRlcl9vcHQgbCA9IGZpbHRlcl9tYXAgbCB+ZjpGbi5pZFxuXG5sZXQgcGFydGl0aW9uM19tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IGZzdCBzbmQgdHJkID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmQsIHJldiB0cmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBgRnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kIHRyZFxuICAgICAgIHwgYFNuZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSB0cmRcbiAgICAgICB8IGBUcmQgeSAtPiBsb29wIHQgZnN0IHNuZCAoeSA6OiB0cmQpKVxuICBpblxuICBsb29wIHQgW10gW10gW11cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZlxuOztcblxubGV0IHBhcnRpdGlvbl9yZXN1bHQgdCA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgKiAnYikgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyMl8gPSBcImxpc3QubWwuQXNzb2MudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMTRfIF9vZl9iX18wMTVfIHhfXzAyM18gLT5cbiAgICAgIGxpc3Rfb2Zfc2V4cFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzAxN187IGFyZzFfXzAxOF8gXSAtPlxuICAgICAgICAgICAgbGV0IHJlczBfXzAxOV8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTdfXG4gICAgICAgICAgICBhbmQgcmVzMV9fMDIwXyA9IF9vZl9iX18wMTVfIGFyZzFfXzAxOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAxOV8sIHJlczFfXzAyMF9cbiAgICAgICAgICB8IHNleHBfXzAyMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDIxXylcbiAgICAgICAgeF9fMDIzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDI2XywgYXJnMV9fMDI3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfYV9fMDI0XyBhcmcwX18wMjZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMjlfID0gX29mX2JfXzAyNV8gYXJnMV9fMDI3XyBpblxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wMjhfOyByZXMxX18wMjlfIF0pXG4gICAgICAgIHhfXzAzMF9cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICBsaXN0X3NleHBfZ3JhbW1hclxuICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgTGlzdCAoQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSkpXG4gICAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKVxuXG4gIGxldCBhZGQgdCB+ZXF1YWwga2V5IHZhbHVlID1cbiAgICAoKiB0aGUgcmVtb3ZlIGRvZXNuJ3QgY2hhbmdlIHRoZSBtYXAgc2VtYW50aWNzLCBidXQga2VlcHMgdGhlIGxpc3Qgc21hbGwgKilcbiAgICAoa2V5LCB2YWx1ZSkgOjogcmVtb3ZlIHQgfmVxdWFsIGtleVxuICA7O1xuXG4gIGxldCBpbnZlcnNlIHQgPSBtYXAgdCB+ZjooZnVuICh4LCB5KSAtPiB5LCB4KVxuICBsZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZjooZnVuIChrZXksIHZhbHVlKSAtPiBrZXksIGYgdmFsdWUpXG5lbmRcblxubGV0IHN1YiBsIH5wb3MgfmxlbiA9XG4gICgqIFdlIHVzZSBbcG9zID4gbGVuZ3RoIGwgLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiBsZW5ndGggbF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gbGVuZ3RoIGwgLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3Quc3ViXCI7XG4gIHJldlxuICAgIChmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgZWwgLT5cbiAgICAgICBpZiBpID49IHBvcyAmJiBpIDwgcG9zICsgbGVuIHRoZW4gZWwgOjogYWNjIGVsc2UgYWNjKSlcbjs7XG5cbmxldCBzcGxpdF9uIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW10sIHRfb3JpZ1xuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bSwgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZywgW10gKCogaW4gdGhpcyBjYXNlLCB0X29yaWcgPSByZXYgYWNjdW0gKilcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfbl0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZSB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxubGV0IHJlYyBkcm9wIHQgbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IF8gOjogdGwgd2hlbiBuID4gMCAtPiBkcm9wIHRsIChuIC0gMSlcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjaHVua3Nfb2YgbCB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDw9IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmNodW5rc19vZjogRXhwZWN0ZWQgbGVuZ3RoID4gMCwgZ290ICVkXCIgbGVuZ3RoICgpO1xuICBsZXQgcmVjIGF1eCBvZl9sZW5ndGggYWNjIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgc3VibGlzdCwgbCA9IHNwbGl0X24gbCBsZW5ndGggaW5cbiAgICAgIGF1eCBvZl9sZW5ndGggKHN1Ymxpc3QgOjogYWNjKSBsXG4gIGluXG4gIGF1eCBsZW5ndGggW10gbFxuOztcblxubGV0IHNwbGl0X3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgdCAtPiByZXYgYWNjLCB0XG4gIGluXG4gIGxvb3AgW10geHNcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzXG47O1xuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBkcm9wX3doaWxlIHRsIH5mXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgZHJvcF9sYXN0IHQgPVxuICBtYXRjaCByZXYgdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogbHN0IC0+IFNvbWUgKHJldiBsc3QpXG47O1xuXG5sZXQgZHJvcF9sYXN0X2V4biB0ID1cbiAgbWF0Y2ggZHJvcF9sYXN0IHQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJMaXN0LmRyb3BfbGFzdF9leG46IGVtcHR5IGxpc3RcIlxuICB8IFNvbWUgbHN0IC0+IGxzdFxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IGxpc3QxIGxpc3QyID1cbiAgaWYgaXNfZW1wdHkgbGlzdDJcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbDEgbDIgYWNjdW0gPVxuICAgICAgbWF0Y2ggbDEgd2l0aFxuICAgICAgfCBbXSAtPiBhY2N1bVxuICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGwyIChyZXZfYXBwZW5kIChtYXAgfmY6KGZ1biB4IC0+IGhkLCB4KSBsMikgYWNjdW0pXG4gICAgaW5cbiAgICByZXYgKGxvb3AgbGlzdDEgbGlzdDIgW10pKVxuOztcblxubGV0IGNvbmNhdCBsID0gZm9sZF9yaWdodCBsIH5pbml0OltdIH5mOmFwcGVuZFxubGV0IGNvbmNhdF9ub19vcmRlciBsID0gZm9sZCBsIH5pbml0OltdIH5mOihmdW4gYWNjIGwgLT4gcmV2X2FwcGVuZCBsIGFjYylcbmxldCBjb25zIHggbCA9IHggOjogbFxuXG5sZXQgaXNfc29ydGVkIGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPD0gMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsXG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPCAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGxcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbCBlcXVhbCB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzAzMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDMxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wMzJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG5sZXQgaXNfc3VmZml4IGxpc3QgfnN1ZmZpeCB+ZXF1YWw6ZXF1YWxfZWx0ID1cbiAgbGV0IGxpc3RfbGVuID0gbGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIGxpc3RfbGVuID49IHN1ZmZpeF9sZW4gJiYgZXF1YWwgZXF1YWxfZWx0IChkcm9wIGxpc3QgKGxpc3RfbGVuIC0gc3VmZml4X2xlbikpIHN1ZmZpeFxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGFzIG1hbnkgcGxhY2VzIGFzIHBvc3NpYmxlLiBQbGVhc2UgYXZvaWRcbiAgIGFkZGluZyBuZXcgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb19pbnRmXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG5tb2R1bGUgTWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IEV4biBvZiBleG5cbiAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbjAudCBvcHRpb25cbiAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgcmVjIHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgYXJnMF9fMDAxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAyXyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ291bGRfbm90X2NvbnN0cnVjdFwiOyByZXMwX18wMDJfIF1cbiAgICAgIHwgU3RyaW5nIGFyZzBfXzAwM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlN0cmluZ1wiOyByZXMwX18wMDRfIF1cbiAgICAgIHwgRXhuIGFyZzBfXzAwNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNl8gPSBzZXhwX29mX2V4biBhcmcwX18wMDVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4blwiOyByZXMwX18wMDZfIF1cbiAgICAgIHwgU2V4cCBhcmcwX18wMDdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDhfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDA3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwXCI7IHJlczBfXzAwOF8gXVxuICAgICAgfCBUYWdfc2V4cCAoYXJnMF9fMDA5XywgYXJnMV9fMDEwXywgYXJnMl9fMDExXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDlfXG4gICAgICAgIGFuZCByZXMxX18wMTNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDEwX1xuICAgICAgICBhbmQgcmVzMl9fMDE0XyA9IHNleHBfb2Zfb3B0aW9uIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgYXJnMl9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19zZXhwXCI7IHJlczBfXzAxMl87IHJlczFfXzAxM187IHJlczJfXzAxNF8gXVxuICAgICAgfCBUYWdfdCAoYXJnMF9fMDE1XywgYXJnMV9fMDE2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxN18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTVfXG4gICAgICAgIGFuZCByZXMxX18wMThfID0gc2V4cF9vZl90IGFyZzFfXzAxNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3RcIjsgcmVzMF9fMDE3XzsgcmVzMV9fMDE4XyBdXG4gICAgICB8IFRhZ19hcmcgKGFyZzBfXzAxOV8sIGFyZzFfXzAyMF8sIGFyZzJfXzAyMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE5X1xuICAgICAgICBhbmQgcmVzMV9fMDIzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAyMF9cbiAgICAgICAgYW5kIHJlczJfXzAyNF8gPSBzZXhwX29mX3QgYXJnMl9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19hcmdcIjsgcmVzMF9fMDIyXzsgcmVzMV9fMDIzXzsgcmVzMl9fMDI0XyBdXG4gICAgICB8IE9mX2xpc3QgKGFyZzBfXzAyNV8sIGFyZzFfXzAyNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9pbnQgYXJnMF9fMDI1X1xuICAgICAgICBhbmQgcmVzMV9fMDI4XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX3QgYXJnMV9fMDI2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPZl9saXN0XCI7IHJlczBfXzAyN187IHJlczFfXzAyOF8gXVxuICAgICAgfCBXaXRoX2JhY2t0cmFjZSAoYXJnMF9fMDI5XywgYXJnMV9fMDMwXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBzZXhwX29mX3QgYXJnMF9fMDI5X1xuICAgICAgICBhbmQgcmVzMV9fMDMyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzFfXzAzMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiV2l0aF9iYWNrdHJhY2VcIjsgcmVzMF9fMDMxXzsgcmVzMV9fMDMyXyBdXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcmVjIHRvX3N0cmluZ3NfaHVtIHQgYWMgPVxuICAgICgqIFdlIHVzZSBbU2V4cC50b19zdHJpbmdfbWFjaF0sIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgaW1wbGVtZW50aW5nXG4gICAgICAgW3RvX3N0cmluZ3NfaHVtXSwgYmVjYXVzZSB3ZSB3YW50IHRoZSBpbmZvIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lLCBhbmQgb25jZSB3ZSd2ZVxuICAgICAgIGhhZCB0byByZXNvcnQgdG8gc2V4cHMsIHRoZSBtZXNzYWdlIGlzIGdvaW5nIHRvIHN0YXJ0IG5vdCBsb29raW5nIHNvIHByZXR0eVxuICAgICAgIGFueXdheS4gKilcbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgc2V4cCAtPlxuICAgICAgXCJjb3VsZCBub3QgY29uc3RydWN0IGluZm86IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gU2V4cC50b19zdHJpbmdfbWFjaCAoRXhuLnNleHBfb2ZfdCBleG4pIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBfKSAtPiB0YWcgOjogXCI6IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gdGFnIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhYyBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gYm9keSBlbHNlIHRhZyA6OiBcIjogXCIgOjogYm9keVxuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKFwiXFxuQmFja3RyYWNlOlxcblwiIDo6IGJhY2t0cmFjZSA6OiBhYylcbiAgICB8IE9mX2xpc3QgKHRydW5jX2FmdGVyLCB0cykgLT5cbiAgICAgIGxldCB0cyA9XG4gICAgICAgIG1hdGNoIHRydW5jX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRzXG4gICAgICAgIHwgU29tZSBtYXggLT5cbiAgICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIHRzIGluXG4gICAgICAgICAgaWYgbiA8PSBtYXhcbiAgICAgICAgICB0aGVuIHRzXG4gICAgICAgICAgZWxzZSBMaXN0LnRha2UgdHMgbWF4IEAgWyBTdHJpbmcgKFByaW50Zi5zcHJpbnRmIFwiYW5kICVkIG1vcmUgaW5mb1wiIChuIC0gbWF4KSkgXVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPlxuICAgICAgICB0b19zdHJpbmdzX2h1bSB0IChpZiBMaXN0LmlzX2VtcHR5IGFjIHRoZW4gYWMgZWxzZSBcIjsgXCIgOjogYWMpKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IFN0cmluZy5jb25jYXQgKHRvX3N0cmluZ3NfaHVtIHQgW10pXG5cbiAgbGV0IHJlYyB0b19zZXhwc19odW0gdCBhYyA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IF8gYXMgdCAtPiBzZXhwX29mX3QgdCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBBdG9tIHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBFeG4uc2V4cF9vZl90IGV4biA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIGhlcmUpIC0+XG4gICAgICBMaXN0XG4gICAgICAgIChBdG9tIHRhZ1xuICAgICAgICAgOjogc2V4cFxuICAgICAgICAgOjpcbiAgICAgICAgIChtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgaGVyZSAtPiBbIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZSBdKSlcbiAgICAgIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiBMaXN0IChBdG9tIHRhZyA6OiB0b19zZXhwc19odW0gdCBbXSkgOjogYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gc2V4cCA6OiB0b19zZXhwc19odW0gdCBbXSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gTGlzdCBib2R5IDo6IGFjIGVsc2UgTGlzdCAoQXRvbSB0YWcgOjogYm9keSkgOjogYWNcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICBTZXhwLkxpc3QgWyB0b19zZXhwX2h1bSB0OyBTZXhwLkF0b20gYmFja3RyYWNlIF0gOjogYWNcbiAgICB8IE9mX2xpc3QgKF8sIHRzKSAtPlxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+IHRvX3NleHBzX2h1bSB0IGFjKVxuXG4gIGFuZCB0b19zZXhwX2h1bSB0ID1cbiAgICBtYXRjaCB0b19zZXhwc19odW0gdCBbXSB3aXRoXG4gICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgfCBzZXhwcyAtPiBTZXhwLkxpc3Qgc2V4cHNcbiAgOztcblxuICAoKiBXZSB1c2UgW3Byb3RlY3RdIHRvIGd1YXJkIGFnYWluc3QgZXhjZXB0aW9ucyByYWlzZWQgYnkgdXNlci1zdXBwbGllZCBmdW5jdGlvbnMsIHNvXG4gICAgIHRoYXQgZmFpbHVyZSB0byBwcm9kdWNlIG9uZSBwYXJ0IG9mIGFuIGluZm8gZG9lc24ndCBpbnRlcmZlcmUgd2l0aCBvdGhlciBwYXJ0cy4gKilcbiAgbGV0IHByb3RlY3QgZiA9XG4gICAgdHJ5IGYgKCkgd2l0aFxuICAgIHwgZXhuIC0+IENvdWxkX25vdF9jb25zdHJ1Y3QgKEV4bi5zZXhwX29mX3QgZXhuKVxuICA7O1xuXG4gIGxldCBvZl9pbmZvIGluZm8gPSBwcm90ZWN0IChmdW4gKCkgLT4gTGF6eS5mb3JjZSBpbmZvKVxuICBsZXQgdG9faW5mbyB0ID0gbGF6eSB0XG5lbmRcblxub3BlbiBNZXNzYWdlXG5cbnR5cGUgdCA9IE1lc3NhZ2UudCBMYXp5LnRcblxubGV0IGludmFyaWFudCBfID0gKClcbmxldCB0b19tZXNzYWdlID0gTWVzc2FnZS5vZl9pbmZvXG5sZXQgb2ZfbWVzc2FnZSA9IE1lc3NhZ2UudG9faW5mb1xuXG4oKiBJdCBpcyBPSyB0byB1c2UgW01lc3NhZ2UudG9fc2V4cF9odW1dLCB3aGljaCBpcyBub3Qgc3RhYmxlLCBiZWNhdXNlIFt0X29mX3NleHBdIGJlbG93XG4gICBjYW4gaGFuZGxlIGFueSBzZXhwLiAqKVxubGV0IHNleHBfb2ZfdCB0ID0gTWVzc2FnZS50b19zZXhwX2h1bSAodG9fbWVzc2FnZSB0KVxubGV0IHRfb2Zfc2V4cCBzZXhwID0gbGF6eSAoTWVzc2FnZS5TZXhwIHNleHApXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBBbnkgXCJJbmZvLnRcIiB9XG5sZXQgY29tcGFyZSB0MSB0MiA9IFNleHAuY29tcGFyZSAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGVxdWFsIHQxIHQyID0gU2V4cC5lcXVhbCAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBTZXhwLmhhc2hfZm9sZF90IHN0YXRlIChzZXhwX29mX3QgdClcbmxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG5cbmxldCB0b19zdHJpbmdfaHVtIHQgPVxuICBtYXRjaCB0b19tZXNzYWdlIHQgd2l0aFxuICB8IFN0cmluZyBzIC0+IHNcbiAgfCBtZXNzYWdlIC0+IFNleHAudG9fc3RyaW5nX2h1bSAoTWVzc2FnZS50b19zZXhwX2h1bSBtZXNzYWdlKVxuOztcblxubGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gTWVzc2FnZS50b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgKHRvX21lc3NhZ2UgdClcbmxldCB0b19zdHJpbmdfbWFjaCB0ID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl90IHQpXG5sZXQgb2ZfbGF6eSBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV9zZXhwIGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU2V4cCAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV90IGxhenlfdCA9IExhenkuam9pbiBsYXp5X3RcbmxldCBvZl9zdHJpbmcgbWVzc2FnZSA9IExhenkuZnJvbV92YWwgKFN0cmluZyBtZXNzYWdlKVxubGV0IGNyZWF0ZWYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIG9mX3N0cmluZyBmb3JtYXRcbmxldCBvZl90aHVuayBmID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoZiAoKSkpKVxuXG5sZXQgY3JlYXRlID9oZXJlID9zdHJpY3QgdGFnIHggc2V4cF9vZl94ID1cbiAgbWF0Y2ggc3RyaWN0IHdpdGhcbiAgfCBOb25lIC0+IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpKVxuICB8IFNvbWUgKCkgLT4gb2ZfbWVzc2FnZSAoVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBMYXp5LmZyb21fdmFsIChTZXhwIHNleHApXG5sZXQgdGFnIHQgfnRhZyA9IGxhenkgKFRhZ190ICh0YWcsIHRvX21lc3NhZ2UgdCkpXG5cbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnIChcIlwiLCBMYXp5LmZvcmNlIHRhZywgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgdGFnX3MgdCB+dGFnID0gdGFnX3NfbGF6eSB0IH50YWc6KExhenkuZnJvbV92YWwgdGFnKVxuXG5sZXQgdGFnX2FyZyB0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnICh0YWcsIHNleHBfb2ZfeCB4LCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCBvZl9saXN0ID90cnVuY19hZnRlciB0cyA9IGxhenkgKE9mX2xpc3QgKHRydW5jX2FmdGVyLCBMaXN0Lm1hcCB0cyB+Zjp0b19tZXNzYWdlKSlcblxuZXhjZXB0aW9uIEV4biBvZiB0XG5cbmxldCAoKSA9XG4gICgqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2VcbiAgICAgW2V4Y2VwdGlvbiBFeG4gb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF0gLi4uIFtAQEBlbmRdXSB0byBlbGltaW5hdGUgdGhlIGV4dHJhXG4gICAgIHdyYXBwaW5nIG9mIFwiKEV4biAuLi4pXCIuICopXG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeG5dIChmdW5jdGlvblxuICAgIHwgRXhuIHQgLT4gc2V4cF9vZl90IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHRvX2V4biB0ID1cbiAgaWYgbm90IChMYXp5LmlzX3ZhbCB0KVxuICB0aGVuIEV4biB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIExhenkuZm9yY2UgdCB3aXRoXG4gICAgfCBNZXNzYWdlLkV4biBleG4gLT4gZXhuXG4gICAgfCBfIC0+IEV4biB0KVxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9XG4gIGxldCBiYWNrdHJhY2UgPVxuICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYEdldCAtPiBTb21lIChDYW1sLlByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gICAgfCBTb21lIChgVGhpcyBzKSAtPiBTb21lIHNcbiAgaW5cbiAgbWF0Y2ggZXhuLCBiYWNrdHJhY2Ugd2l0aFxuICB8IEV4biB0LCBOb25lIC0+IHRcbiAgfCBFeG4gdCwgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKHRvX21lc3NhZ2UgdCwgYmFja3RyYWNlKSlcbiAgfCBfLCBOb25lIC0+IExhenkuZnJvbV92YWwgKE1lc3NhZ2UuRXhuIGV4bilcbiAgfCBfLCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAoU2V4cCAoRXhuLnNleHBfb2ZfdCBleG4pLCBiYWNrdHJhY2UpKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbmZvXCJcbiAgICBsZXQgcHAgcHBmIHQgPSBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbiAgUmVzdWx0IDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlc3VsdFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgRXJyb3IgOj0gUmVzdWx0LkVycm9yKVxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlc3VsdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyIEVycm9yLnRfc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgUmVzdWx0LmNvbWJpbmUgZiB4IH5vazooZnVuIGYgeCAtPiBmIHgpIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgb2sgPSBSZXN1bHQub2tcbmxldCBpc19vayA9IFJlc3VsdC5pc19va1xubGV0IGlzX2Vycm9yID0gUmVzdWx0LmlzX2Vycm9yXG5cbmxldCB0cnlfd2l0aCA/KGJhY2t0cmFjZSA9IGZhbHNlKSBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuID9iYWNrdHJhY2U6KGlmIGJhY2t0cmFjZSB0aGVuIFNvbWUgYEdldCBlbHNlIE5vbmUpKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2JhY2t0cmFjZSBmID0gam9pbiAodHJ5X3dpdGggP2JhY2t0cmFjZSBmKVxuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBlcnIgLT4gRXJyb3IucmFpc2UgZXJyXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRXJyb3IgKEVycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcblxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSA9IGZ1bmN0aW9uXG4gIHwgT2sgXyBhcyB6IC0+IHpcbiAgfCBFcnJvciBleG4gLT4gb2ZfZXhuID9iYWNrdHJhY2UgZXhuXG47O1xuXG5sZXQgZXJyb3IgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRXJyb3IgKEVycm9yLmNyZWF0ZSA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZXJyb3JfcyBzZXhwID0gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1lc3NhZ2UgPSBFcnJvciAoRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooZnVuIGUgLT4gRXJyb3IudGFnX2FyZyBlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBzID0gZXJyb3IgXCJ1bmltcGxlbWVudGVkXCIgcyBzZXhwX29mX3N0cmluZ1xubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBSZXN1bHQubWFwX2Vycm9yIChSZXN1bHQuY29tYmluZV9lcnJvcnMgbCkgfmY6RXJyb3Iub2ZfbGlzdFxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IFJlc3VsdC5tYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKVxuOztcblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCBpdGVyID0gUmVzdWx0Lml0ZXJcbmxldCBpdGVyX2Vycm9yID0gUmVzdWx0Lml0ZXJfZXJyb3JcbiIsIigqIFRoaXMgaXMgYnJva2VuIG9mZiB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gU2lnbiBhbmQgQ29tcGFyYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmVnXG4gIHwgWmVyb1xuICB8IFBvc1xuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ24wLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IHNleHBfXzAwMl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zIF0gOiB0IGxpc3QpXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5sZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMVxuICB8IFplcm8gLT4gMFxuICB8IFBvcyAtPiAxXG47O1xuXG5sZXQgXyA9IGhhc2hcblxuKCogSWdub3JlIHRoZSBoYXNoIGZ1bmN0aW9uIHByb2R1Y2VkIGJ5IFtAQGRlcml2aW5nX2lubGluZSBoYXNoXSAqKVxubGV0IGhhc2ggPSB0b19pbnRcbmxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduXCJcbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTmVnIGVsc2UgaWYgbiA9IDAgdGhlbiBaZXJvIGVsc2UgUG9zXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIFRcblxuICBsZXQgaXNfcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID4gMFxuICBsZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+PSAwXG4gIGxldCBpc19uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPCAwXG4gIGxldCBpc19ub25fcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDw9IDBcbiAgbGV0IHNpZ24gdCA9IFNpZ24wLm9mX2ludCAoY29tcGFyZSB0IHplcm8pXG5lbmRcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBQb2x5XG4gIGVuZFxuXG4gIGluY2x1ZGUgUG9seVxuXG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSlcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG5lbmRcblxubGV0IGd0IGNtcCBhIGIgPSBjbXAgYSBiID4gMFxubGV0IGx0IGNtcCBhIGIgPSBjbXAgYSBiIDwgMFxubGV0IGdlcSBjbXAgYSBiID0gY21wIGEgYiA+PSAwXG5sZXQgbGVxIGNtcCBhIGIgPSBjbXAgYSBiIDw9IDBcbmxldCBlcXVhbCBjbXAgYSBiID0gY21wIGEgYiA9IDBcbmxldCBub3RfZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPD4gMFxubGV0IG1pbiBjbXAgdCB0JyA9IGlmIGxlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xubGV0IG1heCBjbXAgdCB0JyA9IGlmIGdlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xuXG5tb2R1bGUgSW5maXggKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IEluZml4IHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBsZXQgKCA+ICkgYSBiID0gZ3QgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8ICkgYSBiID0gbHQgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA+PSApIGEgYiA9IGdlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw9ICkgYSBiID0gbGVxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPSApIGEgYiA9IGVxdWFsIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD4gKSBhIGIgPSBub3RfZXF1YWwgVC5jb21wYXJlIGEgYlxuZW5kXG5cbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4IChUKVxuXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCBtaW4gdCB0JyA9IG1pbiBjb21wYXJlIHQgdCdcbiAgbGV0IG1heCB0IHQnID0gbWF4IGNvbXBhcmUgdCB0J1xuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5bW9ycGhpY19jb21wYXJlIChUKVxuICBpbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHQgdCcgPSBjb21wYXJlIHQnIHRcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICAgICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgICAgICBbQEBAZW5kXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbigqIGNvbXBhcmUgW3hdIGFuZCBbeV0gbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgZnVuY3Rpb25zIGluIHRoZSBsaXN0IFtjbXBzXSAqKVxubGV0IGxleGljb2dyYXBoaWMgY21wcyB4IHkgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgY21wIDo6IGNtcHMgLT5cbiAgICAgIGxldCByZXMgPSBjbXAgeCB5IGluXG4gICAgICBpZiByZXMgPSAwIHRoZW4gbG9vcCBjbXBzIGVsc2UgcmVzXG4gICAgfCBbXSAtPiAwXG4gIGluXG4gIGxvb3AgY21wc1xuOztcblxubGV0IGxpZnQgY21wIH5mIHggeSA9IGNtcCAoZiB4KSAoZiB5KVxubGV0IHJldmVyc2UgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBDYW1sLkhhc2h0YmwuaGFzaF9wYXJhbVxuICBsZXQgaGFzaCA9IENhbWwuSGFzaHRibC5oYXNoXG4gIGxldCBwb2x5ID0geyBoYXNoOyBjb21wYXJlID0gUG9seS5jb21wYXJlOyBzZXhwX29mX3QgPSAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB9XG5cbiAgbGV0IG9mX2tleSAodHlwZSBhKSAobW9kdWxlIEtleSA6IEtleSB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICB7IGhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgOztcblxuICBsZXQgdG9fa2V5ICh0eXBlIGEpIHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kIDogS2V5XG4gICAgICB3aXRoIHR5cGUgdCA9IGEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBIYXNoYWJsZVxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBIYXNoYWJsZS50ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgcG9seSA6ICdhIHRcbiAgdmFsIG9mX2tleSA6IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpIC0+ICdhIHRcbiAgdmFsIHRvX2tleSA6ICdhIHQgLT4gKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSlcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlX2ludGZcblxubW9kdWxlIE1ha2UgKFQgOiBBcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IEFyZ193aXRoX2NvbXBhcmF0b3IpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfdW5pdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfdW5pdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAodW5pdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl91bml0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHVuaXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgY29tcGFyZSBfIF8gPSAwXG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcIigpXCIgLT4gKClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJCYXNlLlVuaXQub2Zfc3RyaW5nOiAoKSBleHBlY3RlZFwiXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVW5pdFwiXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG5sZXQgaW52YXJpYW50ICgpID0gKClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMFxuXG5sZXQgZ2V0X3Bvc19sZW4gP3BvcyA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICB0cnkgUmVzdWx0Lk9rIChnZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGgpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCBhIHNlYXJjaCBmb3IgdGhlIGZpcnN0IChyZXNwLiBsYXN0KSBlbGVtZW50XG4gICBzYXRpc2Z5aW5nIGEgcHJlZGljYXRlLCBhc3N1bWluZyB0aGF0IHRoZSBwcmVkaWNhdGUgaXMgaW5jcmVhc2luZyBvblxuICAgdGhlIGNvbnRhaW5lciwgbWVhbmluZyB0aGF0LCBpZiB0aGUgY29udGFpbmVyIGlzIFt1MS4uLnVuXSwgdGhlcmUgZXhpc3RzIGFcbiAgIGsgc3VjaCB0aGF0IHAodTEpPS4uLi49cCh1aykgPSBmYWxzZSBhbmQgcCh1aysxKT0uLi4uPXAodW4pPSB0cnVlLlxuICAgSWYgdGhpcyBrID0gMSAocmVzcCBuKSwgZmluZF9sYXN0X25vdF9zYXRpc2Z5aW5nIChyZXNwIGZpbmRfZmlyc3Rfc2F0aXNmeWluZylcbiAgIHdpbGwgcmV0dXJuIE5vbmUuICopXG5cbmxldCByZWMgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgaWYgbG8gPiBoaVxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiBwcmVkIChnZXQgdCBsbylcbiAgdGhlbiBTb21lIGxvXG4gIGVsc2UgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KGxvICsgMSkgfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhIGNvbnRhaW5lciBbdF0sIGEgcHJlZGljYXRlIFtwcmVkXSBhbmQgdHdvIGluZGljZXMgW2xvIDwgaGldLCBzdWNoIHRoYXRcbiAgIFtwcmVkXSBpcyBpbmNyZWFzaW5nIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uXG5cbiAgIHJldHVybiBhIHJhbmdlIChsbywgaGkpIHdoZXJlOlxuICAgLSBsbyBhbmQgaGkgYXJlIGNsb3NlIGVub3VnaCB0b2dldGhlciBmb3IgYSBsaW5lYXIgc2VhcmNoXG4gICAtIElmIFtwcmVkXSBpcyBub3QgY29uc3RhbnRseSBbZmFsc2VdIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0sIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgIG9uIHdoaWNoIFtwcmVkXSBpcyBbdHJ1ZV0gaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldLiAqKVxuKCogSW52YXJpYW50OiB0aGUgZmlyc3QgZWxlbWVudCBzYXRpc2Z5aW5nIFtwcmVkXSwgaWYgaXQgZXhpc3RzIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXSAqKVxubGV0IHJlYyBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gICgqIFdhcm5pbmc6IHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgdGVybWluYXRlIGlmIHRoZSBjb25zdGFudCAoY3VycmVudGx5IDgpIGlzXG4gICAgIHNldCA8PSAxICopXG4gIGlmIGhpIC0gbG8gPD0gOFxuICB0aGVuIGxvLCBoaVxuICBlbHNlIChcbiAgICBsZXQgbWlkID0gbG8gKyAoKGhpIC0gbG8pIC8gMikgaW5cbiAgICBpZiBwcmVkIChnZXQgdCBtaWQpXG4gICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50IGlzIGJldHdlZW4gW2xvXSBhbmQgW21pZF0gKilcbiAgICB0aGVuXG4gICAgICBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaTptaWQgfnByZWRcbiAgICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCwgaWYgaXQgZXhpc3RzLFxuICAgICAgICAgaXMgYmV0d2VlbiBbbWlkKzFdIGFuZCBbaGldICopXG4gICAgZWxzZSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihtaWQgKyAxKSB+aGkgfnByZWQpXG47O1xuXG5sZXQgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbG8gPSBwb3MgaW5cbiAgbGV0IGhpID0gcG9zICsgbGVuIC0gMSBpblxuICBsZXQgbG8sIGhpID0gZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgaW5cbiAgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhbiBhcnJheSB3aXRoIHNoYXBlIFt0cnVlLC4uLnRydWUsZmFsc2UsLi4uZmFsc2VdIChpLmUuLCB0aGUgX3JldmVyc2VfIG9mIHdoYXRcbiAgIGlzIGRlc2NyaWJlZCBhYm92ZSkgYW5kIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRydWUgb3IgTm9uZSBpZiB0aGVyZSBhcmUgbm9cbiAgIHRydWUqKVxubGV0IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5wcmVkIH5nZXQgfmxlbmd0aCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICAoKiBUaGUgbGFzdCBzYXRpc2Z5aW5nIGlzIHRoZSBvbmUganVzdCBiZWZvcmUgdGhlIGZpcnN0IG5vdCBzYXRpc2Z5aW5nICopXG4gICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIH5wb3MgfmxlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooRm4ubm9uIHByZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAoKiBUaGlzIG1lYW5zIHRoYXQgYWxsIGVsZW1lbnRzIHNhdGlzZnkgcHJlZC5cbiAgICAgICBUaGVyZSBpcyBhdCBsZWFzdCBhbiBlbGVtZW50IGFzIChsZW4gPiAwKSAqKVxuICAgIHwgU29tZSBpIHdoZW4gaSA9IHBvcyAtPiBOb25lICgqIG5vIGVsZW1lbnQgc2F0aXNmaWVzIHByZWQgKilcbiAgICB8IFNvbWUgaSAtPiBTb21lIChpIC0gMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgaG93IHYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKVxuICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBpc19sZWZ0IHggPVxuICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgaW5cbiAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19sZWZ0XG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfcmlnaHRcbjs7XG4iLCIoKiogTW9kdWxlIHR5cGVzIGZvciBhIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbiBmb3IgYSBzZXF1ZW5jZSwgYW5kIGZ1bmN0b3JzIGZvciBidWlsZGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbnMuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogQW4gW0luZGV4YWJsZV0gdHlwZSBpcyBhIGZpbml0ZSBzZXF1ZW5jZSBvZiBlbGVtZW50cyBpbmRleGVkIGJ5IGNvbnNlY3V0aXZlIGludGVnZXJzXG4gICAgWzBdIC4uLiBbbGVuZ3RoIHQgLSAxXS4gIFtnZXRdIGFuZCBbbGVuZ3RoXSBtdXN0IGJlIE8oMSkgZm9yIHRoZSByZXN1bHRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gdG8gYmUgbGcobikuICopXG5tb2R1bGUgdHlwZSBJbmRleGFibGUgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGVsdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGUxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPVxuICAgIChbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICA7IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBMYXN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgXVxuICAgICA6IHQgbGlzdClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfb25fbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPSAoWyBgTGFzdF9vbl9sZWZ0OyBgRmlyc3Rfb25fcmlnaHQgXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuZW5kXG5cbnR5cGUgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gY29tcGFyZTooJ2VsdCAtPiAna2V5IC0+IGludClcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gIC0+ICdrZXlcbiAgLT4gaW50IG9wdGlvblxuXG50eXBlICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBzZWdtZW50X29mOignZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCbGl0X2ludGZcblxubW9kdWxlIHR5cGUgU2VxdWVuY2VfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuXG4gICAgKFNyYyA6IFNlcXVlbmNlX2dlbikgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIFNyYy50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgU3JjLnQsICdhIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHVuc2FmZV9ibGl0ID0gRHN0LnVuc2FmZV9ibGl0XG5cbiAgbGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6c3JjX3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6ZHN0X3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooRHN0Lmxlbmd0aCBkc3QpO1xuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICA7O1xuXG4gIGxldCBibGl0b1xuICAgICAgICB+c3JjXG4gICAgICAgID8oc3JjX3BvcyA9IDApXG4gICAgICAgID8oc3JjX2xlbiA9IFNyYy5sZW5ndGggc3JjIC0gc3JjX3BvcylcbiAgICAgICAgfmRzdFxuICAgICAgICA/KGRzdF9wb3MgPSAwKVxuICAgICAgICAoKVxuICAgID1cbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfmxlbjpzcmNfbGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICAoKiBbc3ViXSBhbmQgW3N1Ym9dIGVuc3VyZSB0aGF0IGV2ZXJ5IHBvc2l0aW9uIG9mIHRoZSBjcmVhdGVkIHNlcXVlbmNlIGlzIHBvcHVsYXRlZCBieVxuICAgICBhbiBlbGVtZW50IG9mIHRoZSBzb3VyY2UgYXJyYXkuICBUaHVzIGV2ZXJ5IGVsZW1lbnQgb2YgW2RzdF0gYmVsb3cgaXMgd2VsbFxuICAgICBkZWZpbmVkLiAqKVxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBsZXQgZHN0ID0gRHN0LmNyZWF0ZV9saWtlIH5sZW4gc3JjIGluXG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICAgIHN1YlxuICAgICAgc3JjXG4gICAgICB+cG9zXG4gICAgICB+bGVuOlxuICAgICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgIHwgTm9uZSAtPiBTcmMubGVuZ3RoIHNyYyAtIHBvcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIGJsaXRcbiAgZW5kKSA9XG4gIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEpID0gTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBTZXF1ZW5jZS50XG5cbiAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdFxuICAgIChTcmMgOiBTZXF1ZW5jZSkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBTcmMudFxuXG4gICAgICBvcGVuIFNyY1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IERzdC50XG5cbiAgICAgIG9wZW4gRHN0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgICBlbmQpXG5cbm1vZHVsZSBNYWtlX3RvX3N0cmluZyAoVCA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmQpXG4gICAgKFRvX2J5dGVzIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFQudCB3aXRoIHR5cGUgZHN0IDo9IGJ5dGVzKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUb19ieXRlc1xuXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1YiBzcmMgfnBvcyB+bGVuKVxuICA7O1xuXG4gIGxldCBzdWJvID9wb3MgP2xlbiBzcmMgPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWJvID9wb3MgP2xlbiBzcmMpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9vcHRpb25cblxuICBsZXQgaGFzaF9mb2xkX3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgaGFzaF9mb2xkX29wdGlvblxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICAgIG9wdGlvbl9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgc2V4cF9vZl9vcHRpb25cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IG9wdGlvbl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICB8IE5vbmVcbiAgfCBTb21lIG9mICdhXG5cbmxldCBpc19ub25lID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgdmFsdWVfbWFwIG8gfmRlZmF1bHQgfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4gZiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0XG47O1xuXG5sZXQgaXRlciBvIH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5cbmxldCBjYWxsIHggfmYgPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgeFxuOztcblxubGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IHZhbHVlX2V4biA/aGVyZSA/ZXJyb3IgP21lc3NhZ2UgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBoZXJlLCBlcnJvciwgbWVzc2FnZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gRXJyb3Iub2Zfc3RyaW5nIFwiT3B0aW9uLnZhbHVlX2V4biBOb25lXCJcbiAgICAgIHwgTm9uZSwgTm9uZSwgU29tZSBtIC0+IEVycm9yLm9mX3N0cmluZyBtXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgTm9uZSAtPiBlXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgU29tZSBtIC0+IEVycm9yLnRhZyBlIH50YWc6bVxuICAgICAgfCBTb21lIHAsIE5vbmUsIE5vbmUgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIFwiT3B0aW9uLnZhbHVlX2V4blwiIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5jcmVhdGUgbSBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBTb21lIGUsIF8gLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgICAgKHZhbHVlIG1lc3NhZ2UgfmRlZmF1bHQ6XCJcIilcbiAgICAgICAgICAoZSwgcClcbiAgICAgICAgICAoc2V4cF9vZl9wYWlyIEVycm9yLnNleHBfb2ZfdCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90KVxuICAgIGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCB2YWx1ZV9vcl90aHVuayBvIH5kZWZhdWx0ID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGRlZmF1bHQgKClcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbfHxdXG4gIHwgU29tZSB4IC0+IFt8IHggfF1cbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSB4IC0+IFsgeCBdXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlOl8gPSB0XG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlOl8gPSB0XG5cbmxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIHZhbHVlX21hcCB0IH5kZWZhdWx0Ok0uemVybyB+ZlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhJyAtPiBlcXVhbCBhIGEnXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIF8gLT4gMVxuOztcblxubGV0IGlzX2VtcHR5ID0gaXNfbm9uZVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSB4IC0+IGYgaW5pdCB4XG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgYSAtPiBpZiBmIGEgdGhlbiAxIGVsc2UgMFxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBpZiBmIHggdGhlbiB0IGVsc2UgTm9uZVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgZXF1YWwgZiB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB4JyAtPiBmIHggeCdcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc29tZSB4ID0gU29tZSB4XG5cbmxldCBmaXJzdF9zb21lIHggeSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgXyAtPiB4XG4gIHwgTm9uZSAtPiB5XG47O1xuXG5sZXQgc29tZV9pZiBjb25kIHggPSBpZiBjb25kIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuXG5sZXQgbWVyZ2UgYSBiIH5mID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgeCB8IHgsIE5vbmUgLT4geFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKGYgYSBiKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB2IGFzIG8gd2hlbiBmIHYgLT4gb1xuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuOztcblxubGV0IGFwcGx5IGYgeCA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZiAtPiBtYXAgfmYgeFxuOztcblxubW9kdWxlIE1vbmFkX2FyZyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICBsZXQgcmV0dXJuIHggPSBTb21lIHhcbiAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgbGV0IGJpbmQgbyB+ZiA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKE1vbmFkX2FyZylcbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoTW9uYWRfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlXG5cbm1vZHVsZSBPZl9zZXhwYWJsZVxuICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMVxuICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTJcbiAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUzXG4gICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSAoTSA6IFN0cmluZ2FibGUuUykgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBNYWtlX2ZvY3VzZWQgKE0gOiBzaWdcbiAgICB0eXBlICgrJ2EsICsnYikgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgIHZhbCBvdGhlciA6ICdiIC0+IChfLCAnYikgdFxuICAgIHZhbCBlaXRoZXIgOiAoJ2EsICdiKSB0IC0+IHJldHVybjooJ2EgLT4gJ2MpIC0+IG90aGVyOignYiAtPiAnYykgLT4gJ2NcblxuICAgIHZhbCBjb21iaW5lXG4gICAgICA6ICAoJ2EsICdkKSB0XG4gICAgICAtPiAoJ2IsICdkKSB0XG4gICAgICAtPiBmOignYSAtPiAnYiAtPiAnYylcbiAgICAgIC0+IG90aGVyOignZCAtPiAnZCAtPiAnZClcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOignYSAtPiAoJ2MsICdiKSB0KSAtPiAoJ2MsICdiKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuICBvcGVuIFdpdGhfcmV0dXJuXG5cbiAgbGV0IG1hcCB0IH5mID0gYmluZCB0IH5mOihmdW4geCAtPiByZXR1cm4gKGYgeCkpXG5cbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBtb2R1bGUgQXBwID0gQXBwbGljYXRpdmUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGFwcGx5IHQxIHQyID0gYmluZCB0MSB+ZjooZnVuIGYgLT4gYmluZCB0MiB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSlcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBpbmNsdWRlIEFwcFxuXG4gIGxldCBjb21iaW5lX2FsbCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8pIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4geCAtPiByZXR1cm5fbG9vcCBmICh4IDo6IGFjYykgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIFtdIHRzXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsX3VuaXQgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4gKCkgLT4gb3RoZXJfbG9vcCBmIGFjYyB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2MgbykgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXIgdCB+cmV0dXJuOihmdW4gKCkgLT4gcmV0dXJuX2xvb3AgZiB0cykgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gZWl0aGVyIHQgfnJldHVybjpPcHRpb24uc29tZSB+b3RoZXI6KGZ1biBfIC0+IE5vbmUpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gZWl0aGVyIHQgfnJldHVybjpGbi5pZCB+b3RoZXI6KGZ1biBfIC0+IGRlZmF1bHQpXG5cbiAgbGV0IHdpdGhfcmV0dXJuIGYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gcmV0IC0+IG90aGVyIChmIChXaXRoX3JldHVybi5wcmVwZW5kIHJldCB+ZjpyZXR1cm4pKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBlaXRoZXIgdCB+cmV0dXJuIH5vdGhlciA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiByZXR1cm4geFxuICAgICAgfCBTZWNvbmQgeSAtPiBvdGhlciB5XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChmIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAob3RoZXIgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgXyB8IF8sIFNlY29uZCB4IC0+IFNlY29uZCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbi4gKilcbiAgICAgIHwgU2Vjb25kIF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgU2Vjb25kID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IHJldHVybiA9IHNlY29uZFxuICAgIGxldCBvdGhlciA9IGZpcnN0XG5cbiAgICBsZXQgZWl0aGVyIHQgfnJldHVybiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB5IC0+IHJldHVybiB5XG4gICAgICB8IEZpcnN0IHggLT4gb3RoZXIgeFxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAoZiB4IHkpXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKG90aGVyIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgXyB8IF8sIEZpcnN0IHggLT4gRmlyc3QgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLCBsaWtlIFtGaXJzdC5iaW5kXSBhYm92ZS4gKilcbiAgICAgIHwgRmlyc3QgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2YsICdzKSBfZWl0aGVyID0gKCdmLCAncykgdCA9XG4gICAgfCBGaXJzdCBvZiAnZlxuICAgIHwgU2Vjb25kIG9mICdzXG5lbmRcbiIsImluY2x1ZGUgSW5kZXhlZF9jb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgaXRlcmkgfmZvbGQgdCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgdiAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyB2IGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9IGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKVxuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBmb3JfYWxsaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgbm90IChmIGkgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBmaW5kX21hcGkgfml0ZXJpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSlcbjs7XG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgQ29udGFpbmVyX2ludGYuTWFrZV9nZW5fYXJnXG5cbiAgICB2YWwgaXRlcmkgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhIHQsICdhIGVsdCkgaXRlcmkgXVxuICAgIHZhbCBmb2xkaSA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EgdCwgJ2EgZWx0LCBfKSBmb2xkaSBdXG4gIGVuZCkgOiBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID0gc3RydWN0XG4gIGluY2x1ZGUgQ29udGFpbmVyLk1ha2VfZ2VuIChUKVxuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoVClcblxuICAoKiBOb3QgcGFydCBvZiBbQ29udGFpbmVyLkdlbmVyaWNdLiAqKVxuICBsZXQgbWVtID0gQy5tZW1cblxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlMCAoVClcblxuICAoKiBOb3QgcGFydCBvZiBbQ29udGFpbmVyLkdlbmVyaWNdLiAqKVxuICBsZXQgbWVtID0gQy5tZW1cblxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgJ3NcbiAgICB8IFlpZWxkIG9mICdhICogJ3NcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ3MuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ3MpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAwOV8gc19fMDEwXylcbiAgICAgICAgOiAgKChhX18wMDlfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzAwOV8sIHNfXzAxMF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wMDFfIF9vZl9zX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEb25lXCJcbiAgICAgICAgfCBTa2lwIGFyZzBfXzAwM18gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IF9vZl9zX18wMDJfIGFyZzBfXzAwM18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTa2lwXCI7IHJlczBfXzAwNF8gXVxuICAgICAgICB8IFlpZWxkIChhcmcwX18wMDVfLCBhcmcxX18wMDZfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wMDdfID0gX29mX2FfXzAwMV8gYXJnMF9fMDA1X1xuICAgICAgICAgIGFuZCByZXMxX18wMDhfID0gX29mX3NfXzAwMl8gYXJnMV9fMDA2XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIllpZWxkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxub3BlbiBTdGVwXG5cbigqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIHNlcXVlbmNlICopXG50eXBlICtfIHQgPSBTZXF1ZW5jZSA6ICdzICogKCdzIC0+ICgnYSwgJ3MpIFN0ZXAudCkgLT4gJ2EgdFxudHlwZSAnYSBzZXF1ZW5jZSA9ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSAocywgZikpID1cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIGYpKVxuICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBTZXF1ZW5jZSAocywgZikpXG4gIDs7XG5cbiAgbGV0IGRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBsb29wIHMgbmV4dCBmaW5pc2ggZiBhY2MgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgICB8IFNraXAgcyAtPiBmIGFjYyBOb25lIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGYgYWNjIChTb21lIGEpIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSAoaW5pdCwgZilcblxubGV0IHVuZm9sZCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOihmdW4gcyAtPlxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBOb25lIC0+IFN0ZXAuRG9uZVxuICAgIHwgU29tZSAoYSwgcykgLT4gU3RlcC5ZaWVsZCAoYSwgcykpXG47O1xuXG5sZXQgdW5mb2xkX3dpdGggcyB+aW5pdCB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIChpbml0LCBzKVxuICAgICAgLCBmdW4gKHNlZWQsIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKHNlZWQsIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHNlZWQgLT4gU2tpcCAoc2VlZCwgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgc2VlZCkgLT4gWWllbGQgKGEsIChzZWVkLCBzKSkpIClcbjs7XG5cbmxldCB1bmZvbGRfd2l0aF9hbmRfZmluaXNoIHMgfmluaXQgfnJ1bm5pbmdfc3RlcCB+aW5uZXJfZmluaXNoZWQgfmZpbmlzaGluZ19zdGVwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYElubmVyX3J1bm5pbmcgKGluaXQsIHMpXG4gICAgICAsIGZ1biBzdGF0ZSAtPlxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBpbm5lcl9zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIChgSW5uZXJfZmluaXNoZWQgKGlubmVyX2ZpbmlzaGVkIHN0YXRlKSlcbiAgICAgICAgICAgfCBTa2lwIGlubmVyX3N0YXRlIC0+IFNraXAgKGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKVxuICAgICAgICAgICB8IFlpZWxkICh4LCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcnVubmluZ19zdGVwIHN0YXRlIHggd2l0aFxuICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICB8IFNraXAgc3RhdGUgLT4gU2tpcCAoYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpXG4gICAgICAgICAgICAgIHwgWWllbGQgKHksIHN0YXRlKSAtPiBZaWVsZCAoeSwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpKSlcbiAgICAgICAgfCBgSW5uZXJfZmluaXNoZWQgc3RhdGUgLT5cbiAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgc3RhdGUgLT4gU2tpcCAoYElubmVyX2ZpbmlzaGVkIHN0YXRlKVxuICAgICAgICAgICB8IFlpZWxkICh5LCBzdGF0ZSkgLT4gWWllbGQgKHksIGBJbm5lcl9maW5pc2hlZCBzdGF0ZSkpIClcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkICh4LCBsKSlcbjs7XG5cblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIHYgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiB2XG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIHYgbmV4dCBmXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gbG9vcCBzIChmIHYgYSkgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgaW5pdCBuZXh0IGZcbjs7XG5cbmxldCB0b19saXN0X3JldiB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbClcblxuXG5sZXQgdG9fbGlzdCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gW11cbiAgICAgIHwgU2tpcCBzIC0+IHRvX2xpc3QgcyBuZXh0IGlcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGEgOjogdG9fbGlzdCBzIG5leHQgKGkgLSAxKSlcbiAgaW5cbiAgdG9fbGlzdCBzIG5leHQgNTAwXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfdiBzdG9wX3YgPVxuICBsZXQgc3RlcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPiBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgaW5jbHVzaXZlIC0+IGZ1biBpIC0+IGlmIGkgPCBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgZXhjbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPj0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9IExhenkuZm9yY2UgdF9sYXp5IGluXG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+XG4gICAgICBTa2lwXG4gICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIChzLCBuZXh0KSBpblxuICAgICAgICAgbGF6eSB2KVxuICAgIHwgWWllbGQgKHgsIHMpIC0+XG4gICAgICBZaWVsZFxuICAgICAgICAoIHhcbiAgICAgICAgLCBsZXQgdiA9IFNlcXVlbmNlIChzLCBuZXh0KSBpblxuICAgICAgICAgIGxhenkgdiApKVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc2VlZFxuICAgICAgLCBmdW4gc2VlZCAtPlxuICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGYgYSwgcykgKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChmIGkgYSwgKGkgKyAxLCBzKSkgKVxuOztcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0IH5mOihmdW4gYWNjIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBhY2MgeCBpblxuICAgIFlpZWxkICh4LCBhY2MpKVxuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgaSBhY2MgeCBpblxuICAgIFlpZWxkICh4LCAoaSArIDEsIGFjYykpKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc2VlZFxuICAgICAgLCBmdW4gc2VlZCAtPlxuICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gWWllbGQgKGEsIHMpXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgcyApXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCA9IGZvbGQgdCB+aW5pdDooW10sIDApIH5mOihmdW4gKGwsIGkpIHggLT4geCA6OiBsLCBpICsgMSlcblxubGV0IHRvX2FycmF5IHQgPVxuICBsZXQgbCwgbGVuID0gdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgeCA6OiBsIC0+XG4gICAgbGV0IGEgPSBBcnJheS5jcmVhdGUgfmxlbiB4IGluXG4gICAgbGV0IHJlYyBsb29wIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gLTEpXG4gICAgICB8IHggOjogbCAtPlxuICAgICAgICBhLihpKSA8LSB4O1xuICAgICAgICBsb29wIChpIC0gMSkgbFxuICAgIGluXG4gICAgbG9vcCAobGVuIC0gMikgbDtcbiAgICBhXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGEgLT4gU29tZSBhXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGZcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIG5vdCAoZiBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIG5vdCAoZiBpIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBpIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiAoKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgZiBhO1xuICAgICAgbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGEgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYiwgXykgd2hlbiBlcXVhbCBhIGIgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGFcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGFcbjs7XG5cbmxldCBlbXB0eSA9IFNlcXVlbmNlICgoKSwgZnVuICgpIC0+IERvbmUpXG5cbmxldCBiaW5kIHQgfmYgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCksIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoZW1wdHksIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgICAgICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFNraXAgKGYgYSwgU2VxdWVuY2UgKHMsIG5leHQpKSkpXG4gICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgbmV4dCksIHJlc3QpXG4gICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgKFNlcXVlbmNlIChzLCBuZXh0KSwgcmVzdCkpKSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkICh4LCBOb25lKSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgcyAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgbiBzIG5leHQpXG47O1xuXG5sZXQgbnRoX2V4biBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UubnRoXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbnRoIHMgbiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UubnRoXCJcbiAgICB8IFNvbWUgeCAtPiB4KVxuOztcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDExXyBiX18wMTJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTFfLCBiX18wMTJfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDEzXywgTGVmdCBfYl9fMDE0XyAtPiBfY21wX19hIF9hX18wMTNfIF9iX18wMTRfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE1XywgUmlnaHQgX2JfXzAxNl8gLT4gX2NtcF9fYiBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE3XywgX2FfXzAxOV8pLCBCb3RoIChfYl9fMDE4XywgX2JfXzAyMF8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTdfIF9iX18wMThfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMTlfIF9iX18wMjBfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDRfIGJfXzA0NV8pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0NF8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ1XylcbiAgICAgICAgICAgIC0+IFNleHBsaWIwLlNleHAudCAtPiAoYV9fMDQ0XywgYl9fMDQ1XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyNV8gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjFfIF9vZl9iX18wMjJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDI4XykgOjogc2V4cF9hcmdzX18wMjlfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjdfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDI5XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzBfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IF9vZl9hX18wMjFfIGFyZzBfXzAzMF8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzMV9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMjhfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI3XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzM18pIDo6IHNleHBfYXJnc19fMDM0XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDMyXyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNF8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM1XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzNl8gPSBfb2ZfYl9fMDIyXyBhcmcwX18wMzVfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM2X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAzM19cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzJfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzAzOF8pIDo6IHNleHBfYXJnc19fMDM5XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM3XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzOV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQwXzsgYXJnMV9fMDQxXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBfb2ZfYV9fMDIxXyBhcmcwX18wNDBfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0M18gPSBfb2ZfYl9fMDIyXyBhcmcxX18wNDFfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQyXywgcmVzMV9fMDQzXylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMzhfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM3XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgICAgICAgfCBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNTZfIGJfXzA1N18pXG4gICAgICAgIDogICgoYV9fMDU2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTdfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNTZfLCBiX18wNTdfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ2XyBfb2ZfYl9fMDQ3XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDQ4XyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNDlfID0gX29mX2FfXzA0Nl8gYXJnMF9fMDQ4XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDQ5XyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2JfXzA0N18gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1MV8gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1Ml8sIGFyZzFfXzA1M18pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2ZfYV9fMDQ2XyBhcmcwX18wNTJfXG4gICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2ZfYl9fMDQ3XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTRfOyByZXMxX18wNTVfIF1cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkJvdGhcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSB+Y29tcGFyZSA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IChZaWVsZCAoYSwgczEnKSBhcyBzMSksIChZaWVsZCAoYiwgczInKSBhcyBzMikgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgKExlZnQgYSwgKFNraXAgczEnLCBzMikpXG4gICAgICBlbHNlIGlmIGNvbXBhcmlzb24gPSAwXG4gICAgICB0aGVuIFlpZWxkIChCb3RoIChhLCBiKSwgKFNraXAgczEnLCBTa2lwIHMyJykpXG4gICAgICBlbHNlIFlpZWxkIChSaWdodCBiLCAoczEsIFNraXAgczInKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoTGVmdCBhLCAoU2tpcCBzMSwgRG9uZSkpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChSaWdodCBiLCAoRG9uZSwgU2tpcCBzMikpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgfmNvbXBhcmUgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCAoWWllbGQgKGEsIHMxJykgYXMgczEpLCAoWWllbGQgKGIsIHMyJykgYXMgczIpIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IGNvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDw9IDAgdGhlbiBZaWVsZCAoYSwgKFNraXAgczEnLCBzMikpIGVsc2UgWWllbGQgKGIsIChzMSwgU2tpcCBzMicpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChhLCAoU2tpcCBzMSwgRG9uZSkpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChiLCAoRG9uZSwgU2tpcCBzMikpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgaGQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKGEsIF8pIC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKF8sIGEpIC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICAobWF0Y2ggbG9vcCBzIG5leHQgd2l0aFxuICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB8IFNvbWUgcyAtPiBTb21lIChTZXF1ZW5jZSAocywgbmV4dCkpKVxuOztcblxubGV0IHRsX2VhZ2VybHlfZXhuIHMgPVxuICBtYXRjaCB0bCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UudGxfZXhuXCJcbiAgfCBTb21lIHMgLT4gc1xuOztcblxubGV0IGxpZnRfaWRlbnRpdHkgbmV4dCBzID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBEb25lIC0+IERvbmVcbiAgfCBTa2lwIHMgLT4gU2tpcCAoYElkZW50aXR5IHMpXG4gIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgSWRlbnRpdHkgcylcbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBTb21lIChhLCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGZpbHRlcl9vcHQgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNcbiAgICAgICwgZnVuIHMgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKE5vbmUsIHMpIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChTb21lIGEsIHMpIC0+IFlpZWxkIChhLCBzKSApXG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgKHMsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IExpc3QucmV2IGFjY3VtLCBlbXB0eVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBzIGkgYWNjdW0gbmV4dFxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gbG9vcCBzIChpIC0gMSkgKGEgOjogYWNjdW0pIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbiBbXSBuZXh0XG47O1xuXG5sZXQgY2h1bmtzX2V4biB0IG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmNodW5rc19leG5cIlxuICBlbHNlXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQ6dCB+ZjooZnVuIHQgLT5cbiAgICAgIG1hdGNoIHNwbGl0X24gdCBuIHdpdGhcbiAgICAgIHwgW10sIF9lbXB0eSAtPiBEb25lXG4gICAgICB8IChfIDo6IF8gYXMgeHMpLCB0IC0+IFlpZWxkICh4cywgdCkpXG47O1xuXG5sZXQgZmluZGkgcyB+ZiA9IGZpbmQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBmaW5kX2V4biBzIH5mID1cbiAgbWF0Y2ggZmluZCBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UuZmluZF9leG5cIlxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgYXBwZW5kIHMxIHMyID1cbiAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgfCBTZXF1ZW5jZSAoczEsIG5leHQxKSwgU2VxdWVuY2UgKHMyLCBuZXh0MikgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgRmlyc3RfbGlzdCBzMVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQxIHMxIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IFNraXAgKGBTZWNvbmRfbGlzdCBzMilcbiAgICAgICAgICAgfCBTa2lwIHMxIC0+IFNraXAgKGBGaXJzdF9saXN0IHMxKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzMSkgLT4gWWllbGQgKGEsIGBGaXJzdF9saXN0IHMxKSlcbiAgICAgICAgfCBgU2Vjb25kX2xpc3QgczIgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dDIgczIgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgczIgLT4gU2tpcCAoYFNlY29uZF9saXN0IHMyKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzMikgLT4gWWllbGQgKGEsIGBTZWNvbmRfbGlzdCBzMikpIClcbjs7XG5cbmxldCBjb25jYXRfbWFwIHMgfmYgPSBiaW5kIHMgfmZcbmxldCBjb25jYXQgcyA9IGNvbmNhdF9tYXAgcyB+ZjpGbi5pZFxubGV0IGNvbmNhdF9tYXBpIHMgfmYgPSBjb25jYXRfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgemlwIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIChhLCBzMSksIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKChhLCBiKSwgKFNraXAgczEsIFNraXAgczIpKVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IHppcF9mdWxsIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIChhLCBzMSksIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGBCb3RoIChhLCBiKSwgKFNraXAgczEsIFNraXAgczIpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChgUmlnaHQgYiwgKERvbmUsIG5leHQyIHMyKSlcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKGBMZWZ0IGEsIChuZXh0MSBzMSwgRG9uZSkpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgYm91bmRlZF9sZW5ndGggKFNlcXVlbmNlIChzZWVkLCBuZXh0KSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHNlZWQgLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCAoXywgc2VlZCkgLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICAgIGxldCByZWMgbG9vcCBzIGFjYyA9XG4gICAgICBpZiBhY2MgPj0gbWluXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTa2lwIHMgLT4gbG9vcCBzIGFjY1xuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgKGFjYyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIDBcbiAgaW5cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IGxlbmd0aF9pc19hdF9sZWFzdCB0XG4gIHwgU29tZSBtYXggLT5cbiAgICAobWF0Y2ggYm91bmRlZF9sZW5ndGggdCB+YXRfbW9zdDptYXggd2l0aFxuICAgICB8IGBJcyBsZW4gd2hlbiBsZW4gPj0gbWluIC0+IHRydWVcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IGl0ZXJpIHMgfmYgPSBpdGVyIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2Mgcylcbjs7XG5cbmxldCByZWR1Y2UgcyB+ZiA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYSwgcykgLT4gU29tZSAoZm9sZCBzIH5pbml0OmEgfmYpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBzIH5mID1cbiAgbWF0Y2ggcmVkdWNlIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHJlcyAtPiByZXNcbjs7XG5cbmxldCBncm91cCAoU2VxdWVuY2UgKHMsIG5leHQpKSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgcyAtPiBTa2lwIChTb21lIChhY2MsIHMpKVxuICAgICAgICAgfCBbXSwgRG9uZSAtPiBEb25lXG4gICAgICAgICB8IGFjYywgRG9uZSAtPiBZaWVsZCAoTGlzdC5yZXYgYWNjLCBOb25lKVxuICAgICAgICAgfCBbXSwgWWllbGQgKGN1ciwgcykgLT4gU2tpcCAoU29tZSAoWyBjdXIgXSwgcykpXG4gICAgICAgICB8IChwcmV2IDo6IF8gYXMgYWNjKSwgWWllbGQgKGN1ciwgcykgLT5cbiAgICAgICAgICAgaWYgYnJlYWsgcHJldiBjdXJcbiAgICAgICAgICAgdGhlbiBZaWVsZCAoTGlzdC5yZXYgYWNjLCBTb21lIChbIGN1ciBdLCBzKSlcbiAgICAgICAgICAgZWxzZSBTa2lwIChTb21lIChjdXIgOjogYWNjLCBzKSkpKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSAocywgbmV4dCkpIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBsYXN0X2VsdCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBsYXN0X2VsdCBzXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBsYXN0X2VsdCB3aXRoXG4gICAgICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU29tZSAoYiwgYSlcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gbG9vcCAoU29tZSBhKSBzKVxuICBpblxuICBsb29wIE5vbmUgc1xuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCAoU29tZSBhKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBZaWVsZCAoYSwgU29tZSBhKSlcbjs7XG5cbmxldCBjb3VudCBzIH5mID0gbGVuZ3RoIChmaWx0ZXIgcyB+ZilcbmxldCBjb3VudGkgdCB+ZiA9IGxlbmd0aCAoZmlsdGVyaSB0IH5mKVxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBpbml0IG4gfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPiBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgKGYgaSwgaSArIDEpKVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIGlmIGkgLSBwb3MgPj0gbGVuXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGkgPj0gcG9zIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKVxuICAgICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgKGkgKyAxLCBzKSkgKVxuOztcblxubGV0IHRha2UgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS50YWtlXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSkpIClcbjs7XG5cbmxldCBkcm9wIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UuZHJvcFwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGkgPj0gbGVuIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKVxuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIChpICsgMSwgcykgKVxuOztcblxubGV0IHRha2Vfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNcbiAgICAgICwgZnVuIHMgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFlpZWxkIChhLCBzKVxuICAgICAgICB8IFlpZWxkIChfLCBfKSAtPiBEb25lIClcbjs7XG5cbmxldCBkcm9wX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgRHJvcHBpbmcgc1xuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBEcm9wcGluZyBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBEcm9wcGluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBTa2lwIChgRHJvcHBpbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBJZGVudGl0eSBzKSlcbiAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcyApXG47O1xuXG5sZXQgc2hpZnRfcmlnaHQgcyB4ID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYENvbnNpbmcgKHNlZWQsIHgpXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYENvbnNpbmcgKHNlZWQsIHgpIC0+IFlpZWxkICh4LCBgSWRlbnRpdHkgc2VlZClcbiAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcyApXG47O1xuXG5sZXQgc2hpZnRfcmlnaHRfd2l0aF9saXN0IHMgbCA9IGFwcGVuZCAob2ZfbGlzdCBsKSBzXG5sZXQgc2hpZnRfbGVmdCA9IGRyb3BcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBpbnRlcnNwZXJzZSBzIH5zZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgSW5pdCBzXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgSW5pdCBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYFJ1bm5pbmcgcykpXG4gICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgUnVubmluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoc2VwLCBgUHV0dGluZyAoYSwgcykpKVxuICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCAoYSwgYFJ1bm5pbmcgcykgKVxuOztcblxubGV0IHJlcGVhdCB4ID0gdW5mb2xkX3N0ZXAgfmluaXQ6eCB+ZjooZnVuIHggLT4gWWllbGQgKHgsIHgpKVxuXG5sZXQgY3ljbGVfbGlzdF9leG4geHMgPVxuICBpZiBMaXN0LmlzX2VtcHR5IHhzIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jeWNsZV9saXN0X2V4blwiO1xuICBsZXQgcyA9IG9mX2xpc3QgeHMgaW5cbiAgY29uY2F0X21hcCB+ZjooZnVuICgpIC0+IHMpIChyZXBlYXQgKCkpXG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3Qgc2Egc2IgPSBjb25jYXRfbWFwIHNhIH5mOihmdW4gYSAtPiB6aXAgKHJlcGVhdCBhKSBzYilcbmxldCBzaW5nbGV0b24geCA9IHJldHVybiB4XG5cbmxldCBkZWxheWVkX2ZvbGQgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmZpbmlzaCB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiBrIGFjY1xuICAgIHwgU29tZSBhIC0+IGYgYWNjIGEgfmspXG47O1xuXG5sZXQgZm9sZF9tIH5iaW5kIH5yZXR1cm4gdCB+aW5pdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gYWNjKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGFjYyBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgaXRlcl9tIH5iaW5kIH5yZXR1cm4gdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdDooKVxuICAgIH5mOihmdW4gKCkgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiAoKSkgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgZm9sZF91bnRpbCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKCdhLCAnYikgQ29udGludWVfb3Jfc3RvcC50KSB3aXRoXG4gICAgICAgfCBTdG9wIHggLT4geFxuICAgICAgIHwgQ29udGludWUgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgcyB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IFJlc3VsdC5yZXR1cm4gYWNjXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKF8sIF8pIFJlc3VsdC50KSB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgIHwgT2sgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgb2YgKGEsIHQpIFN0ZXAudCBMYXp5LnRcbiAgZW5kXG4gIGluXG4gIGxldCByZWMgbWVtb2l6ZSBzID0gTS5UIChsYXp5IChmaW5kX3N0ZXAgcykpXG4gIGFuZCBmaW5kX3N0ZXAgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+IGZpbmRfc3RlcCBzXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIG1lbW9pemUgcylcbiAgaW5cbiAgU2VxdWVuY2UgKG1lbW9pemUgcywgZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKVxuOztcblxubGV0IGRyb3BfZWFnZXJseSBzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpIH5sZW4gcyBuZXh0ID1cbiAgICBpZiBpID49IGxlblxuICAgIHRoZW4gU2VxdWVuY2UgKHMsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgcyAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgMCB+bGVuIHMgbmV4dFxuOztcblxubGV0IGRyb3Bfd2hpbGVfb3B0aW9uIChTZXF1ZW5jZSAocywgbmV4dCkpIH5mID1cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHNcbiAgICB8IFlpZWxkICh4LCBzKSAtPiBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gIGluXG4gIGxvb3Agc1xuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgZikgOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYgcyB3aXRoXG4gICAgICAgfCBZaWVsZCAoeCwgcykgLT4gWWllbGQgKHgsICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAocywgZikgOjogZG9uZV9zdGFjaykpXG4gICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIGYpIDo6IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spXG4gICAgICAgfCBEb25lIC0+IFNraXAgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spKVxuICAgIHwgW10gLT4gaWYgTGlzdC5pc19lbXB0eSBkb25lX3N0YWNrIHRoZW4gRG9uZSBlbHNlIFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdKVxuICBpblxuICBsZXQgc3RhdGUgPSBsaXN0LCBbXSBpblxuICBTZXF1ZW5jZSAoc3RhdGUsIG5leHQpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZSAoU2VxdWVuY2UgKHMxLCBmMSkpID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSAoczIsIGYyKSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZjIgczIgd2l0aFxuICAgICAgIHwgWWllbGQgKHgsIHMyKSAtPiBZaWVsZCAoeCwgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzMiwgZjIpIDo6IGRvbmVfc3RhY2ssIHMxKSlcbiAgICAgICB8IFNraXAgczIgLT4gU2tpcCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMyLCBmMikgOjogZG9uZV9zdGFjaywgczEpXG4gICAgICAgfCBEb25lIC0+IFNraXAgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgKHQsIHMxKSwgXyAtPiBTa2lwIChMaXN0LnJldiAodCA6OiBkb25lX3N0YWNrKSwgW10sIHMxKVxuICAgICAgIHwgU2tpcCBzMSwgXyAtPiBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEpXG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxKVxuICAgICAgIHwgRG9uZSwgW10gLT4gRG9uZSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gW10sIFtdLCBzMSBpblxuICBTZXF1ZW5jZSAoc3RhdGUsIG5leHQpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIENhbWwuU2VxLnQpID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6c2VxIH5mOihmdW4gc2VxIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBEb25lXG4gICAgfCBDb25zIChoZCwgdGwpIC0+IFlpZWxkIChoZCwgdGwpKVxuOztcblxubGV0IHRvX3NlcSAoU2VxdWVuY2UgKHN0YXRlLCBuZXh0KSkgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIG5leHQgc3RhdGUgd2l0aFxuICAgIHwgRG9uZSAtPiBDYW1sLlNlcS5OaWxcbiAgICB8IFNraXAgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgIHwgWWllbGQgKGhkLCBzdGF0ZSkgLT4gQ2FtbC5TZXEuQ29ucyAoaGQsIGZ1biAoKSAtPiBsb29wIHN0YXRlKVxuICBpblxuICBmdW4gKCkgLT4gbG9vcCBzdGF0ZVxuOztcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlICdlbHQgc3RlcHMgPSBXcmFwIG9mICgnZWx0LCB1bml0IC0+ICdlbHQgc3RlcHMpIFN0ZXAudFxuXG4gIGxldCB1bndyYXAgKFdyYXAgc3RlcCkgPSBzdGVwXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2VsdCkgdCA9ICgnYSAtPiAnZWx0IHN0ZXBzKSAtPiAnZWx0IHN0ZXBzXG5cbiAgICBsZXQgcmV0dXJuIHggayA9IGsgeFxuXG4gICAgbGV0IGJpbmQgbSB+ZiBrID1cbiAgICAgIG0gKGZ1biBhIC0+XG4gICAgICAgIGxldCBtJyA9IGYgYSBpblxuICAgICAgICBtJyBrKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIG0gfmYgayA9IG0gKGZ1biBhIC0+IGsgKGYgYSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIE1vbmFkLk1ha2UyIChUKVxuXG4gIGxldCB5aWVsZCBlIGsgPSBXcmFwIChZaWVsZCAoZSwgaykpXG4gIGxldCB0b19zdGVwcyB0ID0gdCAoZnVuICgpIC0+IFdyYXAgRG9uZSlcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuICgpIHggfmsgZiAtPiBXcmFwIChZaWVsZCAoeCwgZnVuICgpIC0+IGsgKCkgZikpKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gYXJyYXlfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfYXJyYXlcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnQgPSBzdHJ1Y3RcbiAgKCogRm9yIHRoZSBzYWtlIG9mIHNwZWVkIHdlIGNvdWxkIHVzZSB1bnNhZmUgZ2V0L3NldCB0aHJvdWdob3V0LCBidXQgc3BlZWQgdGVzdHMgZG9uJ3RcbiAgICAgc2hvdyBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50LiAqKVxuICBsZXQgZ2V0ID0gZ2V0XG4gIGxldCBzZXQgPSBzZXRcblxuICBsZXQgc3dhcCBhcnIgaSBqID1cbiAgICBsZXQgdG1wID0gZ2V0IGFyciBpIGluXG4gICAgc2V0IGFyciBpIChnZXQgYXJyIGopO1xuICAgIHNldCBhcnIgaiB0bXBcbiAgOztcblxuICBtb2R1bGUgdHlwZSBTb3J0ID0gc2lnXG4gICAgdmFsIHNvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+IGxlZnQ6aW50ICgqIGxlZnRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiByaWdodDppbnQgKCogcmlnaHRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiB1bml0XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zZXJ0aW9uX3NvcnQgKilcbiAgbW9kdWxlIEluc2VydGlvbl9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgICBbYXJyXSBpcyBzb3J0ZWQgZnJvbSBbbGVmdF0gdG8gW3BvcyAtIDFdLCBpbmNsdXNpdmUgKilcbiAgICAgIGZvciBwb3MgPSBsZWZ0ICsgMSB0byByaWdodCBkb1xuICAgICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uIHBvc10gaXMgc29ydGVkIGFuZCBjb250YWlucyBvbmx5IGVsZW1lbnRzID4gdlxuICAgICAgICAgICAzLiAgYXJyW2ldIG1heSBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgdlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFsbG9jYXRlIGEgY2xvc3VyZSwgYnV0IGlzIGxlZnQgaW4gdGhlIGZvclxuICAgICAgICAgICBsb29wIGZvciB0aGUgcmVhZGFiaWxpdHkgb2YgdGhlIGRvY3VtZW50YXRpb24uICopXG4gICAgICAgIGxldCByZWMgbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaSB2ID1cbiAgICAgICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgICAgICBpZiBpX25leHQgPj0gbGVmdCAmJiBjb21wYXJlIChnZXQgYXJyIGlfbmV4dCkgdiA+IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICAgICAgbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICAgICAgZWxzZSBpXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIHBvcyB2IGluXG4gICAgICAgIHNldCBhcnIgZmluYWxfcG9zIHZcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlYXBzb3J0ICopXG4gIG1vZHVsZSBIZWFwX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgcm9vdCdzIGNoaWxkcmVuIGFyZSBib3RoIGVpdGhlciByb290cyBvZiBtYXgtaGVhcHMgb3IgPiByaWdodCAqKVxuICAgIGxldCByZWMgaGVhcGlmeSBhcnIgfmNvbXBhcmUgcm9vdCB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHJlbGF0aXZlX3Jvb3QgPSByb290IC0gbGVmdCBpblxuICAgICAgbGV0IGxlZnRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDEgaW5cbiAgICAgIGxldCByaWdodF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMiBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiBsZWZ0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgbGVmdF9jaGlsZCkgKGdldCBhcnIgcm9vdCkgPiAwXG4gICAgICAgIHRoZW4gbGVmdF9jaGlsZFxuICAgICAgICBlbHNlIHJvb3RcbiAgICAgIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIHJpZ2h0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgcmlnaHRfY2hpbGQpIChnZXQgYXJyIGxhcmdlc3QpID4gMFxuICAgICAgICB0aGVuIHJpZ2h0X2NoaWxkXG4gICAgICAgIGVsc2UgbGFyZ2VzdFxuICAgICAgaW5cbiAgICAgIGlmIGxhcmdlc3QgPD4gcm9vdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN3YXAgYXJyIHJvb3QgbGFyZ2VzdDtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGFyZ2VzdCB+bGVmdCB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogRWxlbWVudHMgaW4gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBhcnJheSBhcmUgYWxyZWFkeSBoZWFwcyBvZiBzaXplIDEuICBXZSBtb3ZlXG4gICAgICAgICB0aHJvdWdoIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBhcnJheSBmcm9tIGJhY2sgdG8gZnJvbnQgZXhhbWluaW5nIHRoZSBlbGVtZW50IGF0XG4gICAgICAgICBoYW5kLCBhbmQgdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLCBmaXhpbmcgdGhlIGhlYXAgcHJvcGVydHkgYXMgd2UgZ28uICopXG4gICAgICBmb3IgaSA9IChsZWZ0ICsgcmlnaHQpIC8gMiBkb3dudG8gbGVmdCBkb1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBpIH5sZWZ0IH5yaWdodFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodDtcbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4uIGldIGlzIGEgbWF4LWhlYXAgSFxuICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uLiByaWdodF0gaXMgc29ydGVkIChjYWxsIGl0IFMpXG4gICAgICAgICAzLiAgZXZlcnkgZWxlbWVudCBvZiBIIGlzIGxlc3MgdGhhbiBldmVyeSBlbGVtZW50IG9mIFMgKilcbiAgICAgIGZvciBpID0gcmlnaHQgZG93bnRvIGxlZnQgKyAxIGRvXG4gICAgICAgIHN3YXAgYXJyIGxlZnQgaTtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGVmdCB+bGVmdCB+cmlnaHQ6KGkgLSAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50cm9zb3J0ICopXG4gIG1vZHVsZSBJbnRyb19zb3J0IDogc2lnXG4gICAgaW5jbHVkZSBTb3J0XG5cbiAgICB2YWwgZml2ZV9lbGVtZW50X3NvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTUgPVxuICAgICAgbGV0IGNvbXBhcmVfYW5kX3N3YXAgaSBqID1cbiAgICAgICAgaWYgY29tcGFyZSAoZ2V0IGFyciBpKSAoZ2V0IGFyciBqKSA+IDAgdGhlbiBzd2FwIGFyciBpIGpcbiAgICAgIGluXG4gICAgICAoKiBPcHRpbWFsIDUtZWxlbWVudCBzb3J0aW5nIG5ldHdvcms6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICAxLS1vLS0tLS1vLS0tLS1vLS0tLS0tLS0tLS0tLS0xXG4gICAgICAgICAgICAgICB8ICAgICB8ICAgICB8XG4gICAgICAgICAgICAyLS1vLS0tLS18LS1vLS18LS0tLS1vLS1vLS0tLS0yXG4gICAgICAgICAgICAgICAgICAgICB8ICB8ICB8ICAgICB8ICB8XG4gICAgICAgICAgICAzLS0tLS0tLS1vLS1vLS18LS1vLS18LS1vLS0tLS0zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICB8XG4gICAgICAgICAgICA0LS0tLS1vLS0tLS0tLS1vLS1vLS18LS0tLS1vLS00XG4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICB8XG4gICAgICAgICAgICA1LS0tLS1vLS0tLS0tLS0tLS0tLS1vLS0tLS1vLS01XG4gICAgICAgICAgdn0gKilcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTI7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMyBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBzaXh0aCA9IChyaWdodCAtIGxlZnQpIC8gNiBpblxuICAgICAgbGV0IG0xID0gbGVmdCArIHNpeHRoIGluXG4gICAgICBsZXQgbTIgPSBtMSArIHNpeHRoIGluXG4gICAgICBsZXQgbTMgPSBtMiArIHNpeHRoIGluXG4gICAgICBsZXQgbTQgPSBtMyArIHNpeHRoIGluXG4gICAgICBsZXQgbTUgPSBtNCArIHNpeHRoIGluXG4gICAgICBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTU7XG4gICAgICBsZXQgbTJfdmFsID0gZ2V0IGFyciBtMiBpblxuICAgICAgbGV0IG0zX3ZhbCA9IGdldCBhcnIgbTMgaW5cbiAgICAgIGxldCBtNF92YWwgPSBnZXQgYXJyIG00IGluXG4gICAgICBpZiBjb21wYXJlIG0yX3ZhbCBtM192YWwgPSAwXG4gICAgICB0aGVuIG0yX3ZhbCwgbTNfdmFsLCB0cnVlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgbTNfdmFsIG00X3ZhbCA9IDBcbiAgICAgIHRoZW4gbTNfdmFsLCBtNF92YWwsIHRydWVcbiAgICAgIGVsc2UgbTJfdmFsLCBtNF92YWwsIGZhbHNlXG4gICAgOztcblxuICAgIGxldCBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBwaXZvdDEsIHBpdm90MiwgcGl2b3RzX2VxdWFsID0gY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgbGVmdCA8PSBsIDwgciA8PSByaWdodFxuICAgICAgICAgMi4gIGwgPD0gcCA8PSByXG4gICAgICAgICAzLiAgbCA8PSB4IDwgcCAgICAgaW1wbGllcyBhcnJbeF0gPj0gcGl2b3QxXG4gICAgICAgICBhbmQgYXJyW3hdIDw9IHBpdm90MlxuICAgICAgICAgNC4gIGxlZnQgPD0geCA8IGwgIGltcGxpZXMgYXJyW3hdIDwgcGl2b3QxXG4gICAgICAgICA1LiAgciA8IHggPD0gcmlnaHQgaW1wbGllcyBhcnJbeF0gPiBwaXZvdDIgKilcbiAgICAgIGxldCByZWMgbG9vcCBsIHAgciA9XG4gICAgICAgIGxldCBwdiA9IGdldCBhcnIgcCBpblxuICAgICAgICBpZiBjb21wYXJlIHB2IHBpdm90MSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc3dhcCBhcnIgcCBsO1xuICAgICAgICAgIGNvbnQgKGwgKyAxKSAocCArIDEpIHIpXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZSBwdiBwaXZvdDIgPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIGxvb3AgaW52YXJpYW50czogIHNhbWUgYXMgdGhvc2Ugb2YgdGhlIG91dGVyIGxvb3AgKilcbiAgICAgICAgICBsZXQgcmVjIHNjYW5fYmFja3dhcmRzIHIgPVxuICAgICAgICAgICAgaWYgciA+IHAgJiYgY29tcGFyZSAoZ2V0IGFyciByKSBwaXZvdDIgPiAwIHRoZW4gc2Nhbl9iYWNrd2FyZHMgKHIgLSAxKSBlbHNlIHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByID0gc2Nhbl9iYWNrd2FyZHMgciBpblxuICAgICAgICAgIHN3YXAgYXJyIHIgcDtcbiAgICAgICAgICBjb250IGwgcCAociAtIDEpKVxuICAgICAgICBlbHNlIGNvbnQgbCAocCArIDEpIHJcbiAgICAgIGFuZCBjb250IGwgcCByID0gaWYgcCA+IHIgdGhlbiBsLCByIGVsc2UgbG9vcCBsIHAgciBpblxuICAgICAgbGV0IGwsIHIgPSBjb250IGxlZnQgbGVmdCByaWdodCBpblxuICAgICAgbCwgciwgcGl2b3RzX2VxdWFsXG4gICAgOztcblxuICAgIGxldCByZWMgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGxlbiA9IHJpZ2h0IC0gbGVmdCArIDEgaW5cbiAgICAgICgqIFRoaXMgdGFrZXMgY2FyZSBvZiBzb21lIGVkZ2UgY2FzZXMsIHN1Y2ggYXMgbGVmdCA+IHJpZ2h0IG9yIHZlcnkgc2hvcnQgYXJyYXlzLFxuICAgICAgICAgc2luY2UgSW5zZXJ0aW9uX3NvcnQuc29ydCBoYW5kbGVzIHRoZXNlIGNhc2VzIHByb3Blcmx5LiAgVGh1cyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICBtYWtlIHN1cmUgdGhhdCBsZWZ0IGFuZCByaWdodCBhcmUgdmFsaWQgaW4gcmVjdXJzaXZlIGNhbGxzLiAqKVxuICAgICAgaWYgbGVuIDw9IDMyXG4gICAgICB0aGVuIEluc2VydGlvbl9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSBpZiBtYXhfZGVwdGggPCAwXG4gICAgICB0aGVuIEhlYXBfc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbWF4X2RlcHRoID0gbWF4X2RlcHRoIC0gMSBpblxuICAgICAgICBsZXQgbCwgciwgbWlkZGxlX3NvcnRlZCA9IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ6KGwgLSAxKTtcbiAgICAgICAgaWYgbm90IG1pZGRsZV9zb3J0ZWQgdGhlbiBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OmwgfnJpZ2h0OnI7XG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6KHIgKyAxKSB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGhlYXBfc29ydF9zd2l0Y2hfZGVwdGggPVxuICAgICAgICAoKiBXZSBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXQgYSByZWN1cnNpb24gZGVwdGggb2YgMzIuIEdOVSBpbnRyb3NvcnQgdXNlcyAybGcobikuXG4gICAgICAgICAgIFRoZSBleHBlY3RlZCByZWN1cnNpb24gZGVwdGggZm9yIHBlcmZlY3QgMy13YXkgc3BsaXRzIGlzIGxvZ18zKG4pLlxuXG4gICAgICAgICAgIFVzaW5nIDMyIG1lYW5zIGEgYmFsYW5jZWQgMy13YXkgc3BsaXQgd291bGQgd29yayB1cCB0byAzXjMyIGVsZW1lbnRzIChyb3VnaGx5XG4gICAgICAgICAgIDJeNTAgb3IgMTBeMTUpLiBHTlUgcmVhY2hlcyBhIGRlcHRoIG9mIDMyIGF0IDY1NTM2IGVsZW1lbnRzLlxuXG4gICAgICAgICAgIEZvciBzbWFsbCBhcnJheXMsIHRoaXMgbWFrZXMgdXMgbGVzcyBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0LCBidXQgdGhlXG4gICAgICAgICAgIDMyKk4gY29zdCBiZWZvcmUgd2UgZG8gaXMgbm90IHRoYXQgbXVjaC5cblxuICAgICAgICAgICBGb3IgbGFyZ2UgYXJyYXlzLCB0aGlzIG1lYW5zIHdlIGFyZSBtb3JlIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXRcbiAgICAgICAgICAgc29tZSBwb2ludCBpZiB3ZSBnZXQgc29tZSBiYWQgc3BsaXRzIG9yIGlmIHRoZSBhcnJheSBpcyBodWdlLiBCdXQgdGhhdCdzIG9ubHkgYVxuICAgICAgICAgICBjb25zdGFudCBmYWN0b3IgY29zdCBpbiB0aGUgZmluYWwgc3RhZ2VzIG9mIHJlY3Vyc2lvbi5cblxuICAgICAgICAgICBBbGwgaW4gYWxsLCB0aGlzIHNlZW1zIHRvIGJlIGEgc21hbGwgdHJhZGVvZmYgYW5kIGF2b2lkcyBwYXlpbmcgYSBjb3N0IHRvXG4gICAgICAgICAgIGNvbXB1dGUgYSBsb2dhcml0aG0gYXQgdGhlIHN0YXJ0LiAqKVxuICAgICAgICAzMlxuICAgICAgaW5cbiAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGg6aGVhcF9zb3J0X3N3aXRjaF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgc29ydCA/cG9zID9sZW4gYXJyIH5jb21wYXJlID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIGFycilcbiAgaW5cbiAgU29ydC5JbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpc19zb3J0ZWQgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID4gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPj0gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lcmdlIGExIGEyIH5jb21wYXJlID1cbiAgbGV0IGwxID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGxldCBsMiA9IEFycmF5Lmxlbmd0aCBhMiBpblxuICBpZiBsMSA9IDBcbiAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbDIgPSAwXG4gIHRoZW4gY29weSBhMVxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTIgMCkgKHVuc2FmZV9nZXQgYTEgKGwxIC0gMSkpID49IDBcbiAgdGhlbiBhcHBlbmQgYTEgYTJcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGExIDApICh1bnNhZmVfZ2V0IGEyIChsMiAtIDEpKSA+IDBcbiAgdGhlbiBhcHBlbmQgYTIgYTFcbiAgZWxzZSAoXG4gICAgbGV0IGxlbiA9IGwxICsgbDIgaW5cbiAgICBsZXQgbWVyZ2VkID0gY3JlYXRlIH5sZW4gKHVuc2FmZV9nZXQgYTEgMCkgaW5cbiAgICBsZXQgYTFfaW5kZXggPSByZWYgMCBpblxuICAgIGxldCBhMl9pbmRleCA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCB1c2VfYTEgPVxuICAgICAgICBpZiBsMSA9ICFhMV9pbmRleFxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgaWYgbDIgPSAhYTJfaW5kZXhcbiAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgIGVsc2UgY29tcGFyZSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCkgPD0gMFxuICAgICAgaW5cbiAgICAgIGlmIHVzZV9hMVxuICAgICAgdGhlbiAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KTtcbiAgICAgICAgYTFfaW5kZXggOj0gIWExX2luZGV4ICsgMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCk7XG4gICAgICAgIGEyX2luZGV4IDo9ICFhMl9pbmRleCArIDEpXG4gICAgZG9uZTtcbiAgICBtZXJnZWQpXG47O1xuXG5sZXQgY29weV9tYXRyaXggPSBtYXAgfmY6Y29weVxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bFxuOztcblxubGV0IG9mX2xpc3RfbWFwaSB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIDAgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGEgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSBoZCk7XG4gICAgICAgIGZpbGwgYSAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIGEgMSB0bFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcCB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXAgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcGkgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwaSB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByID0gcmVmIFt8fF0gaW5cbiAgbGV0IGsgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IHQgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBpZiAhayA9IDAgdGhlbiByIDo9IGNyZWF0ZSB+bGVuOihsZW5ndGggdCkgYTtcbiAgICAgIHVuc2FmZV9zZXQgIXIgIWsgYTtcbiAgICAgIGluY3Iga1xuICBkb25lO1xuICBpZiAhayA9IGxlbmd0aCB0IHRoZW4gIXIgZWxzZSBpZiAhayA+IDAgdGhlbiBzdWIgfnBvczowIH5sZW46IWsgIXIgZWxzZSBbfHxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIF9pIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lm1hcDJfZXhuXCIgdDEgdDI7XG4gIGluaXQgKGxlbmd0aCB0MSkgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgZm9sZDJfZXhuIHQxIHQyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb2xkMl9leG5cIiB0MSB0MjtcbiAgZm9sZGkgdDEgfmluaXQgfmY6KGZ1biBpIGFjIHggLT4gZiBhYyB4ICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IGZpbHRlcmkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAhaSAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPSBPcHRpb24ubWFwIChmaW5kaSB0IH5mOihmdW4gX2kgeCAtPiBmIHgpKSB+ZjooZnVuIChfaSwgeCkgLT4geClcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgIWkgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA8PSAxXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgaSA9IHJlZiAxIGluXG4gICAgbGV0IHByZXYgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGN1ciA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZXF1YWwgY3VyICFwcmV2XG4gICAgICB0aGVuIChcbiAgICAgICAgcmVzdWx0IDo9IFNvbWUgKCFwcmV2LCBjdXIpO1xuICAgICAgICBpIDo9IG4pXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJldiA6PSBjdXI7XG4gICAgICAgIGluY3IgaSlcbiAgICBkb25lO1xuICAgICFyZXN1bHQpXG47O1xuXG5sZXQgcmVkdWNlIHQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICAgIGRvbmU7XG4gICAgU29tZSAhcilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHQgfmYgPVxuICBtYXRjaCByZWR1Y2UgdCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcGVybXV0ZSA9IEFycmF5X3Blcm11dGUucGVybXV0ZVxuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGFycmF5XCJcbiAgZWxzZSB0LihSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIHQpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHppcCB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDIgdGhlbiBOb25lIGVsc2UgU29tZSAobWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpKVxuOztcblxubGV0IHppcF9leG4gdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyXG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS56aXBfZXhuXCJcbiAgZWxzZSBtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4Milcbjs7XG5cbmxldCB1bnppcCB0ID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuID0gMFxuICB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHgsIHkgPSB0LigwKSBpblxuICAgIGxldCByZXMxID0gY3JlYXRlIH5sZW46biB4IGluXG4gICAgbGV0IHJlczIgPSBjcmVhdGUgfmxlbjpuIHkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCB4LCB5ID0gdC4oaSkgaW5cbiAgICAgIHJlczEuKGkpIDwtIHg7XG4gICAgICByZXMyLihpKSA8LSB5XG4gICAgZG9uZTtcbiAgICByZXMxLCByZXMyKVxuOztcblxubGV0IHNvcnRlZF9jb3B5IHQgfmNvbXBhcmUgPVxuICBsZXQgdDEgPSBjb3B5IHQgaW5cbiAgc29ydCB0MSB+Y29tcGFyZTtcbiAgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBsZXQgYm90aCA9IG1hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEVpdGhlci5GaXJzdCB4IGVsc2UgRWl0aGVyLlNlY29uZCB4KSBpblxuICBsZXQgdHJ1ZXMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IGZhbHNlcyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBfIC0+IE5vbmVcbiAgICAgIHwgU2Vjb25kIHggLT4gU29tZSB4KVxuICBpblxuICB0cnVlcywgZmFsc2VzXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfaSB4IC0+IGYgeClcbmxldCBsYXN0IHQgPSB0LihsZW5ndGggdCAtIDEpXG5cbigqIENvbnZlcnQgdG8gYSBzZXF1ZW5jZSBidXQgZG9lcyBub3QgYXR0ZW1wdCB0byBwcm90ZWN0IGFnYWluc3QgbW9kaWZpY2F0aW9uXG4gICBpbiB0aGUgYXJyYXkuICopXG5sZXQgdG9fc2VxdWVuY2VfbXV0YWJsZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAodC4oaSksIGkgKyAxKSlcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fc2VxdWVuY2VfbXV0YWJsZSAoY29weSB0KVxuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgdDEgdDIgPVxuICBpZiBpc19lbXB0eSB0MSB8fCBpc19lbXB0eSB0MlxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbjoobjEgKiBuMikgKHQxLigwKSwgdDIuKDApKSBpblxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBmb3IgaTEgPSAwIHRvIG4xIC0gMSBkb1xuICAgICAgZm9yIGkyID0gMCB0byBuMiAtIDEgZG9cbiAgICAgICAgdC4oIXIpIDwtIHQxLihpMSksIHQyLihpMik7XG4gICAgICAgIGluY3IgclxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCB0cmFuc3Bvc2UgdHQgPVxuICBpZiBsZW5ndGggdHQgPSAwXG4gIHRoZW4gU29tZSBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB3aWR0aCA9IGxlbmd0aCB0dCBpblxuICAgIGxldCBkZXB0aCA9IGxlbmd0aCB0dC4oMCkgaW5cbiAgICBpZiBleGlzdHMgdHQgfmY6KGZ1biB0IC0+IGxlbmd0aCB0IDw+IGRlcHRoKVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoaW5pdCBkZXB0aCB+ZjooZnVuIGQgLT4gaW5pdCB3aWR0aCB+ZjooZnVuIHcgLT4gdHQuKHcpLihkKSkpKSlcbjs7XG5cbmxldCB0cmFuc3Bvc2VfZXhuIHR0ID1cbiAgbWF0Y2ggdHJhbnNwb3NlIHR0IHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkudHJhbnNwb3NlX2V4blwiXG4gIHwgU29tZSB0dCcgLT4gdHQnXG47O1xuXG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gW3x8XVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gdC4oMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ID0gU29ydFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0IGFsbCB2YWx1ZXMgb2YgdHlwZSBbdF0gZG8gbm90IGhhdmUgdGhlIHRhZ1xuICAgW2RvdWJsZV9hcnJheV90YWddLiAgU29tZSBmdW5jdGlvbnMgYmVsb3cgYXNzdW1lIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGVzdGluZyB0aGVcbiAgIHRhZywgYW5kIHdpbGwgc2VnZmF1bHQgaWYgdGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGhvbGQuICopXG50eXBlIHQgPSBDYW1sLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAoQ2FtbC5PYmoudGFnIChDYW1sLk9iai5yZXByIHQpIDw+IENhbWwuT2JqLmRvdWJsZV9hcnJheV90YWcpXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBDYW1sLk9iai5yZXByICgwIDogaW50KVxuXG4oKiBXZSBjYWxsIFtBcnJheS5jcmVhdGVdIHdpdGggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIGZsb2F0IHNvIHRoYXQgdGhlIGFycmF5IGRvZXNuJ3QgZ2V0XG4gICB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG5sZXQgY3JlYXRlX3plcm8gfmxlbiA9IEFycmF5LmNyZWF0ZSB+bGVuIHplcm9fb2JqXG5sZXQgZW1wdHkgPSBbfHxdXG5cbnR5cGUgbm90X2FfZmxvYXQgPVxuICB8IE5vdF9hX2Zsb2F0XzBcbiAgfCBOb3RfYV9mbG9hdF8xIG9mIGludFxuXG5sZXQgX25vdF9hX2Zsb2F0XzAgPSBOb3RfYV9mbG9hdF8wXG5sZXQgX25vdF9hX2Zsb2F0XzEgPSBOb3RfYV9mbG9hdF8xIDQyXG5cbmxldCBnZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICBJdCBpcyBOT1Qgb2sgdG8gdXNlIFtpbnQgYXJyYXldIHNpbmNlIChpZlxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgYW5kIHRoZSBhcnJheSBjb250YWlucyBpbi1oZWFwIGJveGVkIHZhbHVlcykgd3JvbmcgcmVnaXN0ZXJcbiAgICAgdHlwaW5nIG1heSByZXN1bHQsIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHRvIHJlZ2lzdGVyIG5lY2Vzc2FyeSBHQyByb290cy4gKilcbiAgQ2FtbC5PYmoucmVwciAoKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkuKGkpIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG4gIENhbWwuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldCAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSBpIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpXG4gICAgaVxuICAgIChDYW1sLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogc2FtZSBhcyB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgYnV0IHNhZmUgKilcbiAgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkuKGkpXG4gIDwtIChDYW1sLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXQgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpIGkgKFN5cy5vcGFxdWVfaWRlbnRpdHkgaW50KVxuOztcblxuKCogRm9yIFtzZXRdIGFuZCBbdW5zYWZlX3NldF0sIGlmIGEgcG9pbnRlciBpcyBpbnZvbHZlZCwgd2UgZmlyc3QgZG8gYSBwaHlzaWNhbC1lcXVhbGl0eVxuICAgdGVzdCB0byBzZWUgaWYgdGhlIHBvaW50ZXIgaXMgY2hhbmdpbmcuICBJZiBub3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIFtzZXRdLCB3aGljaFxuICAgc2F2ZXMgYSBjYWxsIHRvIFtjYW1sX21vZGlmeV0uICBXZSB0aGluayB0aGlzIHBoeXNpY2FsLWVxdWFsaXR5IHRlc3QgaXMgd29ydGggaXRcbiAgIGJlY2F1c2UgaXQgaXMgdmVyeSBjaGVhcCAoYm90aCB2YWx1ZXMgYXJlIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIFtpc19pbnRdIHRlc3QpXG4gICBhbmQgYmVjYXVzZSBbY2FtbF9tb2RpZnldIGlzIGV4cGVuc2l2ZS4gKilcblxubGV0IHNldCB0IGkgb2JqID1cbiAgKCogV2UgdXNlIFtnZXRdIGZpcnN0IGJ1dCB0aGVuIHdlIHVzZSBbQXJyYXkudW5zYWZlX3NldF0gc2luY2Ugd2Uga25vdyB0aGF0IFtpXSBpc1xuICAgICB2YWxpZC4gKilcbiAgbGV0IG9sZF9vYmogPSBnZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldCB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgYSA9IGdldCB0IGkgaW5cbiAgbGV0IGIgPSBnZXQgdCBqIGluXG4gIHVuc2FmZV9zZXQgdCBpIGI7XG4gIHVuc2FmZV9zZXQgdCBqIGFcbjs7XG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgKCogSWYgd2UgY2FuLCB1c2UgW0FycmF5LmNyZWF0ZV0gZGlyZWN0bHkuICopXG4gIGlmIENhbWwuT2JqLnRhZyB4IDw+IENhbWwuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZVxuICAgICgqIFt0LihpKV0gaXMgYW4gaW50ZWdlciBhbmQgW29ial0gaXMgbm90LCBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBpZiB0aGV5IGFyZVxuICAgICAgIGVxdWFsLiAqKVxuICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQgdCBpIGludCA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIGludClcbjs7XG5cbmxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IGkgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIG5vdCAoQ2FtbC5PYmouaXNfaW50IG9sZF9vYmopIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgQmxpdC5ibGl0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA6IF8gdCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IE9ial9hcnJheS50XG5cbiAgbGV0IGVtcHR5ID0gT2JqX2FycmF5LmVtcHR5XG4gIGxldCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGVfb2JqX2FycmF5IH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlIH5sZW4geCA9IE9ial9hcnJheS5jcmVhdGUgfmxlbiAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCBzd2FwIHQgaSBqID0gT2JqX2FycmF5LnN3YXAgdCBpIGpcbiAgbGV0IGdldCBhcnIgaSA9IENhbWwuT2JqLm9iaiAoT2JqX2FycmF5LmdldCBhcnIgaSlcbiAgbGV0IHNldCBhcnIgaSB4ID0gT2JqX2FycmF5LnNldCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IENhbWwuT2JqLm9iaiAoT2JqX2FycmF5LnVuc2FmZV9nZXQgYXJyIGkpXG4gIGxldCB1bnNhZmVfc2V0IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX3NldF9pbnQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0X2ludCBhcnIgaSB4XG5cbiAgbGV0IHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeFxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPSBPYmpfYXJyYXkuc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKENhbWwuT2JqLnRhZyAoQ2FtbC5PYmoucmVwciB0KSA8PiBDYW1sLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuXG5sZXQgaW5pdCBsIH5mID1cbiAgaWYgbCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlVuaWZvcm1fYXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjpsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID0gaW5pdCB+ZjooQXJyYXkudW5zYWZlX2dldCBhcnIpIChBcnJheS5sZW5ndGggYXJyKVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpXG5sZXQgbWFwaSBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiBpICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSlcblxubGV0IGl0ZXIgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGZvbGRpIGEgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgfmY6KGdldCB0KSAobGVuZ3RoIHQpXG5cbmxldCBvZl9saXN0IGwgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSB4IC0+IHNldCByZXMgaSB4KTtcbiAgcmVzXG47O1xuXG4oKiBJdCBpcyBub3Qgc2FmZSBmb3IgW3RvX2FycmF5XSB0byBiZSB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYmVjYXVzZSB3ZSBoYXZlIGNvZGUgdGhhdFxuICAgcmVsaWVzIG9uIFtmbG9hdCBhcnJheV1zIGJlaW5nIHVuYm94ZWQsIGZvciBleGFtcGxlIGluIFtiaW5fd3JpdGVfYXJyYXldLiAqKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID1cbiAgICBpZiBpIDwgMCB0aGVuIGZhbHNlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCB+ZiAoaSAtIDEpXG4gIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPSBpZiBpIDwgMCB0aGVuIHRydWUgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgJiYgbG9vcCB0IH5mIChpIC0gMSkgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQxIGluXG4gIGlmIGxlbmd0aCB0MiA8PiBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDJfZXhuXCI7XG4gIGluaXQgbGVuIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IENhbWwuY2VpbFxubGV0IGZsb29yID0gQ2FtbC5mbG9vclxubGV0IG1vZF9mbG9hdCA9IENhbWwubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IENhbWwubW9kZlxubGV0IGZsb2F0X29mX3N0cmluZyA9IENhbWwuZmxvYXRfb2Zfc3RyaW5nXG5sZXQgbmFuID0gQ2FtbC5uYW5cbmxldCBpbmZpbml0eSA9IENhbWwuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBDYW1sLm5lZ19pbmZpbml0eVxubGV0IG1heF9maW5pdGVfdmFsdWUgPSBDYW1sLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBDYW1sLmVwc2lsb25fZmxvYXRcbmxldCBjbGFzc2lmeV9mbG9hdCA9IENhbWwuY2xhc3NpZnlfZmxvYXRcbmxldCBhYnNfZmxvYXQgPSBDYW1sLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBDYW1sLkZsb2F0LmlzX2ludGVnZXJcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxuXG5sZXQgKCAlLiApIGEgYiA9XG4gICgqIFJhaXNlIGluIGNhc2Ugb2YgYSBuZWdhdGl2ZSBtb2R1bHVzLCBhcyBkb2VzIEludC4oICUgKS4gKilcbiAgaWYgYiA8IDAuXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIiVmICUlICVmIGluIGZsb2F0MC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIiBhIGIgKCk7XG4gIGxldCBtID0gQ2FtbC5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIENhbWwgOlxuICBzaWdcbiAgICBleHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcblxuICAgIGV4dGVybmFsIGxkZXhwXG4gICAgICA6ICAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgICAgLT4gKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIlxuICAgIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICBlbmQpXG5cbigqIFdlIG5lZWQgdGhpcyBpbmRpcmVjdGlvbiBiZWNhdXNlIHRoZXNlIGFyZSBleHBvc2VkIGFzIFwidmFsXCIgaW5zdGVhZCBvZiBcImV4dGVybmFsXCIgKilcbmxldCBmcmV4cCA9IGZyZXhwXG5sZXQgbGRleHAgPSBsZGV4cFxubGV0IGlzX25hbiB4ID0gKHggOiBmbG9hdCkgPD4geFxuXG4oKiBBbiBvcmRlci1wcmVzZXJ2aW5nIGJpamVjdGlvbiBiZXR3ZWVuIGFsbCBmbG9hdHMgZXhjZXB0IGZvciBOYU5zLCBhbmQgOTkuOTUlIG9mXG4gICBpbnQ2NHMuXG5cbiAgIE5vdGUgd2UgZG9uJ3QgZGlzdGluZ3Vpc2ggMC4gYW5kIC0wLiBhcyBzZXBhcmF0ZSB2YWx1ZXMgaGVyZSwgdGhleSBib3RoIG1hcCB0byAwTCwgd2hpY2hcbiAgIG1hcHMgYmFjayB0byAwLlxuXG4gICBUaGlzIHNob3VsZCB3b3JrIGJvdGggb24gbGl0dGxlLWVuZGlhbiBhbmQgaGlnaC1lbmRpYW4gQ1BVcy4gIFdpa2lwZWRpYSBzYXlzOiBcIm9uXG4gICBtb2Rlcm4gc3RhbmRhcmQgY29tcHV0ZXJzIChpLmUuLCBpbXBsZW1lbnRpbmcgSUVFRSA3NTQpLCBvbmUgbWF5IGluIHByYWN0aWNlIHNhZmVseVxuICAgYXNzdW1lIHRoYXQgdGhlIGVuZGlhbm5lc3MgaXMgdGhlIHNhbWUgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgZm9yIGludGVnZXJzXCJcbiAgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZGlhbm5lc3MjRmxvYXRpbmctcG9pbnRfYW5kX2VuZGlhbm5lc3MpLlxuKilcbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0ID1cbiAgaWYgaXNfbmFuIHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gKCogYWxzbyBpbmNsdWRlcyAtMC4gKilcbiAgICBTb21lIDBMXG4gIGVsc2UgaWYgdCA+IDAuXG4gIHRoZW4gU29tZSAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQpXG4gIGVsc2UgU29tZSAoQ2FtbC5JbnQ2NC5uZWcgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCAoLS50KSkpXG47O1xuXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIHggPSBPcHRpb24udmFsdWVfZXhuICh0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4KVxuXG5sZXQgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXIgeCA9XG4gIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgeCAwTFxuICB0aGVuIENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyB4XG4gIGVsc2Ugfi0uKENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyAoQ2FtbC5JbnQ2NC5uZWcgeCkpXG47O1xuXG5sZXQgb25lX3VscCBkaXIgdCA9XG4gIG1hdGNoIHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgd2l0aFxuICB8IE5vbmUgLT4gQ2FtbC5uYW5cbiAgfCBTb21lIHggLT5cbiAgICBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlclxuICAgICAgKENhbWwuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IENhbWwuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIG9uZV91bHAgYERvd24gKDIuICoqIGV4cClcbjs7XG5cbmxldCBpc194X21pbnVzX29uZV9leGFjdCB4ID1cbiAgKCogW3ggPSB4IC0uIDEuXSBkb2VzIG5vdCB3b3JrIHdpdGggeDg3IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFja2VuZCAod2hpY2ggaXMgdXNlZFxuICAgICBvbiAzMi1iaXQgb2NhbWwpIGJlY2F1c2Ugb2YgODAtYml0IHJlZ2lzdGVyIHByZWNpc2lvbiBvZiBpbnRlcm1lZGlhdGUgY29tcHV0YXRpb25zLlxuXG4gICAgIEFuIGFsdGVybmF0aXZlIHdheSBvZiBjb21wdXRpbmcgdGhpczogW3ggLS4gb25lX3VscCBgRG93biB4IDw9IDEuXSBpcyBhbHNvIHByb25lIHRvXG4gICAgIHRoZSBzYW1lIHByZWNpc2lvbiBpc3N1ZXM6IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSBbeF0gaXMgNjQtYml0LlxuICAqKVxuICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgbm90IChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgeCA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBDYW1sLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBsZXQgbWluX2ludF9hc19mbG9hdCA9IH4tLigyLiAqKiBleHApIGluXG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbnVtX2JpdHMgLSAxIDwgNTMgKCogNTMgPSAjYml0cyBpbiB0aGUgZmxvYXQncyBtYW50aXNzYSB3aXRoIHNpZ24gaW5jbHVkZWQgKilcbiAgdGhlbiAoXG4gICAgKCogVGhlIHNtYWxsZXN0IGZsb2F0IHRoYXQgcm91bmRzIHRvd2FyZHMgemVybyB0byBbbWluX2ludF0gaXNcbiAgICAgICBbbWluX2ludCAtIDEgKyBlcHNpbG9uXSAqKVxuICAgIGFzc2VydCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCk7XG4gICAgb25lX3VscCBgVXAgKG1pbl9pbnRfYXNfZmxvYXQgLS4gMS4pKVxuICBlbHNlIChcbiAgICAoKiBbbWluX2ludF9hc19mbG9hdF0gaXMgYWxyZWFkeSB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0uICopXG4gICAgYXNzZXJ0IChub3QgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpKTtcbiAgICBtaW5faW50X2FzX2Zsb2F0KVxuOztcblxuKCogRmxvYXQgY2xhbXBpbmcgaXMgc3RydWN0dXJlZCBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIGNsYW1waW5nIGZvciBvdGhlciB0eXBlcywgc29cbiAgIHRoYXQgd2UgZ2V0IHRoZSBiZWhhdmlvciBvZiBbY2xhbXBfdW5jaGVja2VkIG5hbiB+bWluIH5tYXggPSBuYW5dIChmb3IgYW55IFttaW5dIGFuZFxuICAgW21heF0pIGZvciBmcmVlLlxuKilcbmxldCBjbGFtcF91bmNoZWNrZWQgKHQgOiBmbG9hdCkgfm1pbiB+bWF4ID1cbiAgaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIG1heCA8IHQgdGhlbiBtYXggZWxzZSB0XG47O1xuXG5sZXQgYm94ID1cbiAgKCogUHJldmVudCBwb3RlbnRpYWwgY29uc3RhbnQgZm9sZGluZyBvZiBbKy4gMC5dIGluIHRoZSBuZWFyIG9jYW1sb3B0IGZ1dHVyZS4gKilcbiAgbGV0IHggPSBTeXMwLm9wYXF1ZV9pZGVudGl0eSAwLiBpblxuICBmdW4gZiAtPiBmICsuIHhcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuaW5jbHVkZSBDaGFyMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9jaGFyIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2NoYXJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2NoYXIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLm1ha2UgMSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgd2l0aFxuICAgIHwgMSAtPiBzLlswXVxuICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJDaGFyLm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkNoYXJcIlxuICBlbmQpXG5cbmxldCBwcCBmbXQgYyA9IENhbWwuRm9ybWF0LmZwcmludGYgZm10IFwiJUNcIiBjXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYWxsID0gQXJyYXkuaW5pdCAyNTYgfmY6dW5zYWZlX29mX2ludCB8PiBBcnJheS50b19saXN0XG5cbmxldCBpc19sb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc191cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19wcmludCA9IGZ1bmN0aW9uXG4gIHwgJyAnIC4uICd+JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICdcXHQnIHwgJ1xcbicgfCAnXFwwMTEnICgqIHZlcnRpY2FsIHRhYiAqKSB8ICdcXDAxMicgKCogZm9ybSBmZWVkICopIHwgJ1xccicgfCAnICcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2FscGhhID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxuKCogV3JpdGluZyB0aGVzZSBvdXQsIGluc3RlYWQgb2YgY2FsbGluZyBbaXNfYWxwaGFdIGFuZCBbaXNfZGlnaXRdLCByZWR1Y2VzXG4gICBydW50aW1lIGJ5IGFwcHJveC4gMzAlICopXG5sZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9kaWdpdF91bnNhZmUgdCA9IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuXG5sZXQgZ2V0X2RpZ2l0X2V4biB0ID1cbiAgaWYgaXNfZGlnaXQgdFxuICB0aGVuIGdldF9kaWdpdF91bnNhZmUgdFxuICBlbHNlIGZhaWx3aXRoZiBcIkNoYXIuZ2V0X2RpZ2l0X2V4biAlQzogbm90IGEgZGlnaXRcIiB0ICgpXG47O1xuXG5sZXQgZ2V0X2RpZ2l0IHQgPSBpZiBpc19kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2RpZ2l0X3Vuc2FmZSB0KSBlbHNlIE5vbmVcblxubGV0IGlzX2hleF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X2xvd2VyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF91cHBlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0X2V4biA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuICB8ICdhJyAuLiAnZicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnYScgKyAxMFxuICB8ICdBJyAuLiAnRicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnQScgKyAxMFxuICB8IHQgLT5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkNoYXIuZ2V0X2hleF9kaWdpdF9leG46IG5vdCBhIGhleGFkZWNpbWFsIGRpZ2l0XCJcbiAgICAgICAgIFsgXCJjaGFyXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdCB0ID0gaWYgaXNfaGV4X2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfaGV4X2RpZ2l0X2V4biB0KSBlbHNlIE5vbmVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSBjMSBjMiA9IGNvbXBhcmUgKGxvd2VyY2FzZSBjMSkgKGxvd2VyY2FzZSBjMilcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9jaGFyIHN0YXRlIChsb3dlcmNhc2UgdClcbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnQwLkludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxuKCogQ29uc3RydWN0IGEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDI1NiwgbWFwcGluZyBldmVyeSBpbnB1dCBjaGFyYWN0ZXIgY29kZSB0b1xuICAgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0IGNoYXJhY3Rlci5cblxuICAgQmVuY2htYXJrcyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW4gdGhlIGxhbWJkYSAoaW5jbHVkaW5nIGNvc3Qgb2ZcbiAgIHRoaXMgZnVuY3Rpb24pLCBldmVuIGlmIHRhcmdldC9yZXBsYWNlbWVudCBhcmUganVzdCAyIGNoYXJhY3RlcnMgZWFjaC5cblxuICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYW5zbGF0aW9uIG1hcCBpcyBlcXVpdmFsZW50IHRvIGp1c3QgdGhlIGlkZW50aXR5LiAqKVxubGV0IHRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBsZXQgdHJfbWFwID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgLSAxIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IChTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCBpKVxuICBkb25lO1xuICBsZXQgbGFzdF9yZXBsYWNlbWVudCA9IFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50IC0gMSkgaW5cbiAgZm9yXG4gICAgaSA9IG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSB0byBTdHJpbmcubGVuZ3RoIHRhcmdldCAtIDFcbiAgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggbGFzdF9yZXBsYWNlbWVudFxuICBkb25lO1xuICBsZXQgcmVjIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgaSA9XG4gICAgaWYgaSA9IDI1NlxuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgaSkgKENoYXIub2ZfaW50X2V4biBpKVxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAoaSArIDEpXG4gIGluXG4gICgqIHF1aWNrIGNoZWNrIG9uIHRoZSBmaXJzdCB0YXJnZXQgY2hhcmFjdGVyIHdoaWNoIHdpbGwgOTklIGJlIHRydWUgKilcbiAgbGV0IGZpcnN0X3RhcmdldCA9IHRhcmdldC5bMF0gaW5cbiAgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgZmlyc3RfdGFyZ2V0KSkgZmlyc3RfdGFyZ2V0XG4gIHx8IGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgMFxuICB0aGVuIFNvbWUgKEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRyX21hcClcbiAgZWxzZSBOb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhXG5cbmxldCBzdGFnZSA9IEZuLmlkXG5sZXQgdW5zdGFnZSA9IEZuLmlkXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuaW5jbHVkZSBTdHJpbmcwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbigqIFRoaXMgYWxpYXMgaXMgbmVjZXNzYXJ5IGRlc3BpdGUgW1N0cmluZzBdIGRlZmluaW5nIFtCeXRlcyA9IEJ5dGVzMF0sIGluIG9yZGVyIHRvXG4gICBjb252aW5jZSBvY2FtbGRlcCB0aGF0IHRoaXMgZmlsZSBkb2Vzbid0IGRlcGVuZCBvbiBieXRlcy5tbC4gKilcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBcIlwiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpKVxuOztcblxubGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gIHN1YlxuICAgIHNyY1xuICAgIH5wb3NcbiAgICB+bGVuOlxuICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgIHwgTm9uZSAtPiBsZW5ndGggc3JjIC0gcG9zKVxuOztcblxubGV0IHJlYyBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfIGNoYXIgPVxuICBwb3MgPCBlbmRfXG4gICYmIChDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHQgcG9zKSBjaGFyIHx8IGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3M6KHBvcyArIDEpIH5lbmRfIGNoYXIpXG47O1xuXG5sZXQgY29udGFpbnMgPyhwb3MgPSAwKSA/bGVuIHQgY2hhciA9XG4gIGxldCB0b3RhbF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9IE9wdGlvbi52YWx1ZSBsZW4gfmRlZmF1bHQ6KHRvdGFsX2xlbmd0aCAtIHBvcykgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXzoocG9zICsgbGVuKSBjaGFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgcmVjIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zID49IGxlblxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgKyAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KSB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2V4biB0IGNoYXIgPSBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9leG5cbjs7XG5cbmxldCBpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCByZWMgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zIDwgMFxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6KGxlbiAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9leG4gdCBjaGFyID0gcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9leG5cbjs7XG5cbmxldCByaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAtMSB8fCBwb3MgPj0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9mcm9tX2V4blxuOztcblxubGV0IGluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSA9IF8gfSA6IFNleHAudCA9XG4gICAgTGlzdFxuICAgICAgWyBMaXN0IFsgQXRvbSBcInBhdHRlcm5cIjsgc2V4cF9vZl9zdHJpbmcgcGF0dGVybiBdXG4gICAgICA7IExpc3QgWyBBdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlIF1cbiAgICAgIF1cbiAgOztcblxuICBsZXQgcGF0dGVybiB0ID0gdC5wYXR0ZXJuXG4gIGxldCBjYXNlX3NlbnNpdGl2ZSB0ID0gdC5jYXNlX3NlbnNpdGl2ZVxuXG4gICgqIEZpbmQgbWF4IG51bWJlciBvZiBtYXRjaGVkIGNoYXJhY3RlcnMgYXQgW25leHRfdGV4dF9jaGFyXSwgZ2l2ZW4gdGhlIGN1cnJlbnRcbiAgICAgW21hdGNoZWRfY2hhcnNdLiBUcnkgdG8gZXh0ZW5kIHRoZSBjdXJyZW50IG1hdGNoLCBpZiBjaGFycyBkb24ndCBtYXRjaCwgdHJ5IHRvIG1hdGNoXG4gICAgIGZld2VyIGNoYXJzLiBJZiBjaGFycyBtYXRjaCB0aGVuIGV4dGVuZCB0aGUgbWF0Y2guICopXG4gIGxldCBrbXBfaW50ZXJuYWxfbG9vcCB+bWF0Y2hlZF9jaGFycyB+bmV4dF90ZXh0X2NoYXIgfnBhdHRlcm4gfmttcF9hcnJheSB+Y2hhcl9lcXVhbCA9XG4gICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgbWF0Y2hlZF9jaGFycyBpblxuICAgIHdoaWxlXG4gICAgICAhbWF0Y2hlZF9jaGFycyA+IDBcbiAgICAgICYmIG5vdCAoY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKSlcbiAgICBkb1xuICAgICAgbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoIW1hdGNoZWRfY2hhcnMgLSAxKVxuICAgIGRvbmU7XG4gICAgaWYgY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKVxuICAgIHRoZW4gbWF0Y2hlZF9jaGFycyA6PSAhbWF0Y2hlZF9jaGFycyArIDE7XG4gICAgIW1hdGNoZWRfY2hhcnNcbiAgOztcblxuICBsZXQgZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBtYXRjaCBjYXNlX3NlbnNpdGl2ZSB3aXRoXG4gICAgfCB0cnVlIC0+IENoYXIuZXF1YWxcbiAgICB8IGZhbHNlIC0+IENoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUCBwcmUtcHJvY2Vzc2luZyBvZiB0aGUgcGF0dGVybjogYnVpbGQgdGhlIGludCBhcnJheSwgd2hpY2gsIGZvciBlYWNoIGksXG4gICAgIGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgbm9uLXRyaXZpYWwgcHJlZml4IG9mIHMgd2hpY2ggaXMgZXF1YWwgdG8gYSBzdWZmaXhcbiAgICAgZW5kaW5nIGF0IHMuW2ldICopXG4gIGxldCBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIGxldCBuID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICBsZXQga21wX2FycmF5ID0gQXJyYXkuY3JlYXRlIH5sZW46biAoLTEpIGluXG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSAwIDA7XG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyOih1bnNhZmVfZ2V0IHBhdHRlcm4gaSlcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgaSAhbWF0Y2hlZF9jaGFyc1xuICAgICAgZG9uZSk7XG4gICAgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH1cbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUDogdXNlIHRoZSBwcmUtcHJvY2Vzc2VkIHBhdHRlcm4gdG8gb3B0aW1pemUgbG9vay1iZWhpbmRzIG9uIG5vbi1tYXRjaGVzLlxuICAgICBXZSByZXR1cm4gaW50IHRvIGF2b2lkIGFsbG9jYXRpb24gaW4gW2luZGV4X2V4bl0uIC0xIG1lYW5zIG5vIG1hdGNoLiAqKVxuICBsZXQgaW5kZXhfaW50ZXJuYWwgPyhwb3MgPSAwKSB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+aW5fOnRleHQgPVxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuZ3RoIHRleHQgLSBsZW5ndGggcGF0dGVyblxuICAgIHRoZW4gLTFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgaiA9IHJlZiBwb3MgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIHdoaWxlICFqIDwgbiAmJiAhbWF0Y2hlZF9jaGFycyA8IGsgZG9cbiAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0ICFqIGluXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBqIDo9ICFqICsgMVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0gayB0aGVuICFqIC0gayBlbHNlIC0xKVxuICA7O1xuXG4gIGxldCBtYXRjaGVzIHQgc3RyID0gaW5kZXhfaW50ZXJuYWwgdCB+aW5fOnN0ciA+PSAwXG5cbiAgbGV0IGluZGV4ID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSBwXG4gIDs7XG5cbiAgbGV0IGluZGV4X2V4biA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPj0gMFxuICAgIHRoZW4gcFxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIlN1YnN0cmluZyBub3QgZm91bmRcIiBbIFwic3Vic3RyaW5nXCIsIHNleHBfb2Zfc3RyaW5nIHQucGF0dGVybiBdKVxuICA7O1xuXG4gIGxldCBpbmRleF9hbGwgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfm1heV9vdmVybGFwIH5pbl86dGV4dCA9XG4gICAgaWYgbGVuZ3RoIHBhdHRlcm4gPSAwXG4gICAgdGhlbiBMaXN0LmluaXQgKDEgKyBsZW5ndGggdGV4dCkgfmY6Rm4uaWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICBsZXQgZm91bmQgPSByZWYgW10gaW5cbiAgICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0ga1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBmb3VuZCA6PSAoaiAtIGspIDo6ICFmb3VuZDtcbiAgICAgICAgICAoKiB3ZSBqdXN0IGZvdW5kIGEgbWF0Y2ggaW4gdGhlIHByZXZpb3VzIGl0ZXJhdGlvbiAqKVxuICAgICAgICAgIG1hdGNoIG1heV9vdmVybGFwIHdpdGhcbiAgICAgICAgICB8IHRydWUgLT4gbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoayAtIDEpXG4gICAgICAgICAgfCBmYWxzZSAtPiBtYXRjaGVkX2NoYXJzIDo9IDApO1xuICAgICAgICBpZiBqIDwgblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgaiBpblxuICAgICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICAgIH5jaGFyX2VxdWFsKVxuICAgICAgZG9uZTtcbiAgICAgIExpc3QucmV2ICFmb3VuZClcbiAgOztcblxuICBsZXQgcmVwbGFjZV9maXJzdCA/cG9zIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbWF0Y2ggaW5kZXggP3BvcyB0IH5pbl86cyB3aXRoXG4gICAgfCBOb25lIC0+IHNcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyBsZW5fd2l0aCAtIGxlbl90KSBpblxuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46aTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6d2l0aF8gfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmkgfmxlbjpsZW5fd2l0aDtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczooaSArIGxlbl90KVxuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOihpICsgbGVuX3dpdGgpXG4gICAgICAgIH5sZW46KGxlbl9zIC0gaSAtIGxlbl90KTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cblxuICBsZXQgcmVwbGFjZV9hbGwgdCB+aW5fOnMgfndpdGhfID1cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBtYXRjaCBtYXRjaGVzIHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IG51bV9tYXRjaGVzID0gTGlzdC5sZW5ndGggbWF0Y2hlcyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyAoKGxlbl93aXRoIC0gbGVuX3QpICogbnVtX21hdGNoZXMpKSBpblxuICAgICAgbGV0IG5leHRfZHN0X3BvcyA9IHJlZiAwIGluXG4gICAgICBsZXQgbmV4dF9zcmNfcG9zID0gcmVmIDAgaW5cbiAgICAgIExpc3QuaXRlciBtYXRjaGVzIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgbGVuID0gaSAtICFuZXh0X3NyY19wb3MgaW5cbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOiFuZXh0X3NyY19wb3MgfmRzdCB+ZHN0X3BvczohbmV4dF9kc3RfcG9zIH5sZW47XG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgICAgfnNyYzp3aXRoX1xuICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICB+ZHN0XG4gICAgICAgICAgfmRzdF9wb3M6KCFuZXh0X2RzdF9wb3MgKyBsZW4pXG4gICAgICAgICAgfmxlbjpsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9kc3RfcG9zIDo9ICFuZXh0X2RzdF9wb3MgKyBsZW4gKyBsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9zcmNfcG9zIDo9ICFuZXh0X3NyY19wb3MgKyBsZW4gKyBsZW5fdCk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6IW5leHRfc3JjX3Bvc1xuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOiFuZXh0X2RzdF9wb3NcbiAgICAgICAgfmxlbjoobGVuX3MgLSAhbmV4dF9zcmNfcG9zKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cbiAgbGV0IHNwbGl0X29uIHQgcyA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAoLXBhdHRlcm5fbGVuIDo6IG1hdGNoZXMpXG4gICAgICAobWF0Y2hlcyBAIFsgU3RyaW5nLmxlbmd0aCBzIF0pXG4gICAgICB+ZjooZnVuIGkgaiAtPiBzdWIgcyB+cG9zOihpICsgcGF0dGVybl9sZW4pIH5sZW46KGogLSBpIC0gcGF0dGVybl9sZW4pKVxuICA7O1xuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgdHlwZSBwdWJsaWMgPSB0XG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCA9XG4gICAgICAoZnVuIGFfXzAwMl8gYl9fMDAzXyAtPlxuICAgICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAyXyBiX18wMDNfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAyXy5wYXR0ZXJuIGJfXzAwM18ucGF0dGVybilcbiAgICAgICAgICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwMl8uY2FzZV9zZW5zaXRpdmUgYl9fMDAzXy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwMl8ua21wX2FycmF5IGJfXzAwM18ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwN19cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMDlfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTFfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSBbXSBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9pbnQga21wX2FycmF5X18wMTFfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmVfXzAwOV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBhcmdfXzAxMF8gXVxuICAgICAgICAgIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX3N0cmluZyBwYXR0ZXJuX18wMDdfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGF0dGVyblwiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDZfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKHJzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY2hhcl9saXN0X21lbSBsIChjIDogY2hhcikgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IGhkIDo6IHRsIC0+IENoYXIuZXF1YWwgaGQgYyB8fCBjaGFyX2xpc3RfbWVtIHRsIGNcbjs7XG5cbmxldCBzcGxpdF9nZW4gc3RyIH5vbiA9XG4gIGxldCBpc19kZWxpbSA9XG4gICAgbWF0Y2ggb24gd2l0aFxuICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBsYXN0X3BvcyBwb3MgPVxuICAgIGlmIHBvcyA9IC0xXG4gICAgdGhlbiBzdWIgc3RyIH5wb3M6MCB+bGVuOmxhc3RfcG9zIDo6IGFjY1xuICAgIGVsc2UgaWYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9zMSA9IHBvcyArIDEgaW5cbiAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOnBvczEgfmxlbjoobGFzdF9wb3MgLSBwb3MxKSBpblxuICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHBvcyAocG9zIC0gMSkpXG4gICAgZWxzZSBsb29wIGFjYyBsYXN0X3BvcyAocG9zIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSBsZW4gKGxlbiAtIDEpXG47O1xuXG5sZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbmxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbmxldCBzcGxpdF9saW5lcyA9XG4gIGxldCBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sID1cbiAgICBwb3MgOj0gIXBvcyAtIGlmICFwb3MgPiAwICYmIENoYXIuZXF1YWwgdC5bIXBvcyAtIDFdICdcXHInIHRoZW4gMiBlbHNlIDE7XG4gICAgZW9sIDo9ICFwb3MgKyAxXG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgIGlmIG4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgKCogSW52YXJpYW50OiBbLTEgPD0gcG9zIDwgZW9sXS4gKilcbiAgICAgIGxldCBwb3MgPSByZWYgKG4gLSAxKSBpblxuICAgICAgbGV0IGVvbCA9IHJlZiBuIGluXG4gICAgICBsZXQgYWMgPSByZWYgW10gaW5cbiAgICAgICgqIFdlIHRyZWF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzcGVjaWFsbHksIGJlY2F1c2UgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYVxuICAgICAgICAgbmV3bGluZSwgd2UgZG9uJ3Qgd2FudCBhbiBleHRyYSBlbXB0eSBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0aGUgb3V0cHV0LiAqKVxuICAgICAgaWYgQ2hhci5lcXVhbCB0LlshcG9zXSAnXFxuJyB0aGVuIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2w7XG4gICAgICB3aGlsZSAhcG9zID49IDAgZG9cbiAgICAgICAgaWYgQ2hhci4oIDw+ICkgdC5bIXBvc10gJ1xcbidcbiAgICAgICAgdGhlbiBkZWNyIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBCZWNhdXNlIFtwb3MgPCBlb2xdLCB3ZSBrbm93IHRoYXQgW3N0YXJ0IDw9IGVvbF0uICopXG4gICAgICAgICAgbGV0IHN0YXJ0ID0gIXBvcyArIDEgaW5cbiAgICAgICAgICBhYyA6PSBzdWIgdCB+cG9zOnN0YXJ0IH5sZW46KCFlb2wgLSBzdGFydCkgOjogIWFjO1xuICAgICAgICAgIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wpXG4gICAgICBkb25lO1xuICAgICAgc3ViIHQgfnBvczowIH5sZW46IWVvbCA6OiAhYWMpXG47O1xuXG5sZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbmxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0IHMgfnBvcyB+c3Vic3RyaW5nID1cbiAgaXNfc3Vic3RyaW5nX2F0X2dlbiBzIH5wb3MgfnN1YnN0cmluZyB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG47O1xuXG5sZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgZWxzZSAoXG4gICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgfCBfIC0+IG9uX2Vycm9yKVxuOztcblxubGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3ByZWZpeFwiIHQgbiB+cG9zOm4gfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3N1ZmZpeFwiIHQgbiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbmxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG5sZXQgbGZpbmRpID8ocG9zID0gMCkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpID0gbiB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbmxldCByZmluZGkgP3BvcyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpIC0gMSkgaW5cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICAgIHwgTm9uZSAtPiBsZW5ndGggdCAtIDFcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbmxldCBsYXN0X25vbl9kcm9wIH5kcm9wIHQgPSByZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSlcblxubGV0IGxzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIDAgLT4gdFxuICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbjs7XG5cbigqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbmxldCBzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgaSB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBtYXAgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKGxlbmd0aCBzKSB+ZjooZnVuIGkgLT4gcy5baV0pXG5cbmxldCBleGlzdHMgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpIDwgbGVuICYmIChmIHMuW2ldIHx8IGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvcl9hbGwgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpID0gbGVuIHx8IChmIHMuW2ldICYmIGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGkgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0XG5sZXQgbWF4X2VsdCB0ID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdFxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5cbigqIFtmaWx0ZXIgdCBmXSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS5cblxuICAgTGV0IFtuID0gbGVuZ3RoIHRdLlxuXG4gICAxLiBGaW5kIHRoZSBsb3dlc3QgW2ldIHN1Y2ggdGhhdCBbbm90IChmIHQuW2ldKV0uXG5cbiAgIDIuIElmIHRoZXJlIGlzIG5vIHN1Y2ggW2ldLCB0aGVuIHJldHVybiBbdF0uXG5cbiAgIDMuIElmIHRoZXJlIGlzIHN1Y2ggYW4gW2ldLCBhbGxvY2F0ZSBhIHN0cmluZywgW291dF0sIHRvIGhvbGQgdGhlIHJlc3VsdC4gIFtvdXRdIGhhc1xuICAgbGVuZ3RoIFtuIC0gMV0sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBvc3NpYmxlIG91dHB1dCBzaXplIGdpdmVuIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3RcbiAgIG9uZSBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgW2ZdLlxuXG4gICA0LiBDb3B5IGNoYXJhY3RlcnMgYXQgaW5kaWNlcyAwIC4uLiBbaSAtIDFdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA1LiBXYWxrIHRocm91Z2ggY2hhcmFjdGVycyBhdCBpbmRpY2VzIFtpKzFdIC4uLiBbbi0xXSBvZiBbdF0sIGNvcHlpbmcgdGhvc2UgdGhhdFxuICAgc2F0aXNmeSBbZl0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDYuIElmIHdlIGNvbXBsZXRlbHkgZmlsbGVkIFtvdXRdLCB0aGVuIHJldHVybiBpdC4gIElmIG5vdCwgcmV0dXJuIHRoZSBwcmVmaXggb2YgW291dF1cbiAgIHRoYXQgd2UgZGlkIGZpbGwgaW4uXG5cbiAgIFRoaXMgYWxnb3JpdGhtIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IHN0cmluZyBpZiB0aGVyZSdzXG4gICBub3RoaW5nIHRvIGZpbHRlciwgd2hpY2ggaXMgYSBjb21tb24gY2FzZS4gKilcbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmICFpIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmICFpIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBTb21lIChkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfaWZfZXhpc3RzIHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9leG4gcyB+cHJlZml4ID1cbiAgbWF0Y2ggY2hvcF9wcmVmaXggcyB+cHJlZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3ByZWZpeF9leG4gJVMgJVNcIiBzIHByZWZpeCAoKVxuOztcblxubGV0IGNob3Bfc3VmZml4IHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBTb21lIChkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfaWZfZXhpc3RzIHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9leG4gcyB+c3VmZml4ID1cbiAgbWF0Y2ggY2hvcF9zdWZmaXggcyB+c3VmZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3N1ZmZpeF9leG4gJVMgJVNcIiBzIHN1ZmZpeCAoKVxuOztcblxubW9kdWxlIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXggPSBzdHJ1Y3RcbiAgKCogV2hlbiB0YWtpbmcgYSBzdHJpbmcgcHJlZml4IG9yIHN1ZmZpeCwgd2UgZXh0cmFjdCBmcm9tIHRoZSBzaG9ydGVzdCBpbnB1dCBhdmFpbGFibGVcbiAgICAgaW4gY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gb25lIG9mIG91ciBpbnB1dHMgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZy4gKilcblxuICBsZXQgc2hvcnRlciBhIGIgPSBpZiBsZW5ndGggYSA8PSBsZW5ndGggYiB0aGVuIGEgZWxzZSBiXG5cbiAgbGV0IHNob3J0ZXN0IGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpmaXJzdCB+ZjpzaG9ydGVyXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIGZvciBjb21tb24gcHJlZml4L3N1ZmZpeCBhYnN0cmFjdCBvdmVyIFtnZXRfcG9zXSwgd2hpY2ggaXNcbiAgICAgZWl0aGVyIFtwb3NfZnJvbV9sZWZ0XSBvciBbcG9zX2Zyb21fcmlnaHRdLiAqKVxuXG4gIGxldCBwb3NfZnJvbV9sZWZ0IChfIDogdCkgKGkgOiBpbnQpID0gaVxuICBsZXQgcG9zX2Zyb21fcmlnaHQgdCBpID0gbGVuZ3RoIHQgLSBpIC0gMVxuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhciA9XG4gICAgaWYgbGVuX3NvX2ZhciA+PSBtYXhfbGVuXG4gICAgdGhlbiBtYXhfbGVuXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGEgKGdldF9wb3MgYSBsZW5fc29fZmFyKSlcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYiAoZ2V0X3BvcyBiIGxlbl9zb19mYXIpKVxuICAgIHRoZW4gY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjoobGVuX3NvX2ZhciArIDEpXG4gICAgZWxzZSBsZW5fc29fZmFyXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zID1cbiAgICBsZXQgbWF4X2xlbiA9IG1pbiAobGVuZ3RoIGEpIChsZW5ndGggYikgaW5cbiAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgOztcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IGxpc3QgfmdldF9wb3Mgfm1heF9sZW4gPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbWF4X2xlblxuICAgIHwgc2Vjb25kIDo6IHJlc3QgLT5cbiAgICAgIGxldCBtYXhfbGVuID1cbiAgICAgICAgKCogV2UgY2FsbCBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhbiBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF0gc29cbiAgICAgICAgICAgdGhhdCBbbWF4X2xlbl0gbGltaXRzIG91ciB0cmF2ZXJzYWwgb2YgW2ZpcnN0XSBhbmQgW3NlY29uZF0uICopXG4gICAgICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBmaXJzdCBzZWNvbmQgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICAgICAgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIHNlY29uZCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIFByZWNvbXB1dGluZyBbbWF4X2xlbl0gYmFzZWQgb24gW3Nob3J0ZXN0IGxpc3RdIHNhdmVzIHVzIHdvcmsgaW4gbG9uZ2VyIHN0cmluZ3MsXG4gICAgICAgICBhdCB0aGUgY29zdCBvZiBhbiBleHRyYSBwYXNzIG92ZXIgdGhlIHNwaW5lIG9mIFtsaXN0XS5cblxuICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIHN0cmluZ3M6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICBsZXQgbG9uZ19hID0gTGlzdC5pbml0IDEwMDAgfmY6KEZuLmNvbnN0ICdhJylcbiAgICAgICAgICAgIFsgbG9uZ19hOyBsb25nX2E7ICdhYScgXVxuICAgICAgICAgdn1cblxuICAgICAgICAgdGhlIGFwcHJvYWNoIGJlbG93IHdpbGwganVzdCBjaGVjayB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgYWxsIHRoZSBzdHJpbmdzLlxuICAgICAgKilcbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIChzaG9ydGVzdCBsaXN0KSBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyB0aGF0IHByb2R1Y2UgYSBzdHJpbmcgYWJzdHJhY3Qgb3ZlciBbdGFrZV0sIHdoaWNoIGlzIGVpdGhlclxuICAgICBbcHJlZml4XSBvciBbc3VmZml4XS4gKilcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyIGEgYiB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbGV0IGxlbiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zIGluXG4gICAgKCogVXNlIHRoZSBzaG9ydGVyIG9mIHRoZSB0d28gc3RyaW5ncywgc28gdGhhdCBpZiB0aGUgc2hvcnRlciBvbmUgaXMgdGhlIHNoYXJlZFxuICAgICAgIHByZWZpeCwgW3Rha2VdIHdvbid0IGFsbG9jYXRlIGFub3RoZXIgc3RyaW5nLiAqKVxuICAgIHRha2UgKHNob3J0ZXIgYSBiKSBsZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMgbGlzdCB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBBcyB3aXRoIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdLCB3ZSBiYXNlIFttYXhfbGVuXSBvbiBbc2hvcnRlc3QgbGlzdF0uIFdlIGFsc29cbiAgICAgICAgIHVzZSB0aGlzIHJlc3VsdCBmb3IgW3Rha2VdLCBiZWxvdywgdG8gcG90ZW50aWFsbHkgYXZvaWQgYWxsb2NhdGluZyBhIHN0cmluZy4gKilcbiAgICAgIGxldCBzID0gc2hvcnRlc3QgbGlzdCBpblxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggcyBpblxuICAgICAgaWYgbWF4X2xlbiA9IDBcbiAgICAgIHRoZW4gXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICgqIFdlIGNhbGwgZGlyZWN0bHkgaW50byBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0gdG8gYXZvaWQgcmVjb21wdXRpbmcgW3Nob3J0ZXN0IGxpc3RdLiAqKVxuICAgICAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgICAgICAgaW5cbiAgICAgICAgdGFrZSBzIGxlbilcbiAgOztcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXhcblxuICBsZXQgY29tbW9uX3ByZWZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG5lbmRcblxuKCogVGhlcmUgdXNlZCB0byBiZSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBmYXN0ZXIgZm9yIHZlcnkgc2hvcnQgc3RyaW5nc1xuICAgKHBlYWtpbmcgYXQgNDAlIGZhc3RlciBmb3IgNC02IGNoYXIgbG9uZyBzdHJpbmdzKS5cbiAgIFRoaXMgbmV3IGZ1bmN0aW9uIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiwgYnV0IHNsb3dlclxuICAgdGhhbiB0aGUgcHJldmlvdXMgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgbmV3IE9DYW1sIGZ1bmN0aW9uIGlzIHdlbGxcbiAgIGJlaGF2ZWQsIGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIGxlc3MgbGlrZWx5IHRvIGRpdmVyZ2UgZnJvbSB0aGUgZGVmYXVsdCBPQ2FtbFxuICAgaW1wbGVtZW50YXRpb24gZG9lcywgd2hpY2ggaXMgYSBkZXNpcmFibGUgcHJvcGVydHkuIChUaGUgb25seSB3YXkgdG8gYXZvaWQgdGhlXG4gICBkaXZlcmdlbmNlIGlzIHRvIGV4cG9zZSB0aGUgbWFjcm8gcmVkZWZpbmVkIGluIGhhc2hfc3R1YnMuYyBpbiB0aGUgaGFzaC5oIGhlYWRlciBvZlxuICAgdGhlIE9DYW1sIGNvbXBpbGVyLikgKilcbm1vZHVsZSBIYXNoID0gc3RydWN0XG4gIGV4dGVybmFsIGhhc2ggOiBzdHJpbmcgLT4gaW50ID0gXCJCYXNlX2hhc2hfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmVuZFxuXG4oKiBbaW5jbHVkZSBIYXNoXSB0byBtYWtlIHRoZSBbZXh0ZXJuYWxdIHZlcnNpb24gb3ZlcnJpZGUgdGhlIFtoYXNoXSBmcm9tXG4gICBbSGFzaGFibGUuTWFrZV9iaW5hYmxlXSwgc28gdGhhdCB3ZSBnZXQgYSBsaXR0bGUgYml0IG9mIGEgc3BlZWR1cCBieSBleHBvc2luZyBpdCBhc1xuICAgZXh0ZXJuYWwgaW4gdGhlIG1saS4gKilcbmxldCBfID0gaGFzaFxuXG5pbmNsdWRlIEhhc2hcblxuKCogZm9yIGludGVyYWN0aXZlIHRvcC1sZXZlbHMgLS0gbW9kdWxlcyBkZXJpdmluZyBmcm9tIFN0cmluZyBzaG91bGQgaGF2ZSBTdHJpbmcncyBwcmV0dHlcbiAgIHByaW50ZXIuICopXG5sZXQgcHAgcHBmIHN0cmluZyA9IENhbWwuRm9ybWF0LmZwcmludGYgcHBmIFwiJVNcIiBzdHJpbmdcbmxldCBvZl9jaGFyIGMgPSBtYWtlIDEgY1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IEJ5dGVzLnNldCB0IGkgYyk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpXG4gIDs7XG5cbiAgbGV0IGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIGxmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSlcbiAgOztcblxuICBsZXQgcnN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuICA7O1xuXG4gIGxldCBsc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSAwIC0+IHRcbiAgICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbiAgOztcblxuICAoKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxuICBsZXQgc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgICAoKiBwZXJmb3JtYW5jZSBoYWNrOiBhdm9pZCBjb3B5aW5nIFt0XSBpbiBjb21tb24gY2FzZXMgKilcbiAgICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG4gIDs7XG5lbmRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG4oKiBPdmVycmlkZSBbU2VhcmNoX3BhdHRlcm5dIHdpdGggZGVmYXVsdCBjYXNlLXNlbnNpdGl2aXR5IGFyZ3VtZW50IGF0IHRoZSBlbmQgb2YgdGhlXG4gICBmaWxlLCBzbyB0aGF0IGNhbGwgc2l0ZXMgYWJvdmUgYXJlIGZvcmNlZCB0byBzdXBwbHkgY2FzZS1zZW5zaXRpdml0eSBleHBsaWNpdGx5LiAqKVxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gc3RydWN0XG4gIGluY2x1ZGUgU2VhcmNoX3BhdHRlcm4wXG5cbiAgbGV0IGNyZWF0ZSA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSkgcGF0dGVybiA9IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwID0gKGJ5dGVzX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2J5dGVzIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJ5dGVzX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBCeXRlczBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQnl0ZXNcIlxuICBsZXQgcHAgZm10IHQgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgKHRvX3N0cmluZyB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgVG9fYnl0ZXMgPSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoVCkgKFRvX2J5dGVzKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgZW5kKVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBuIDBcbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiQnl0ZXMuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBzZXQgdCBpIGMpO1xuICB0XG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCAoaSAtIDEpICh1bnNhZmVfZ2V0IHQgaSA6OiBhY2MpXG4gIGluXG4gIGxvb3AgdCAobGVuZ3RoIHQgLSAxKSBbXVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxubGV0IG1hcCB0IH5mID0gbWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBtYXBpIHQgfmZcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIHBvcyBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHMgaSkgdGFyZ2V0IHRoZW4gdW5zYWZlX3NldCBzIGkgcmVwbGFjZW1lbnRcbiAgZG9uZVxuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIDBcbiAgdGhlbiBzdGFnZSBpZ25vcmVcbiAgZWxzZSBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aTogcmVwbGFjZW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBpZ25vcmVcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgcyBpIChTdHJpbmcudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50ICh1bnNhZmVfZ2V0IHMgaSkpKVxuICAgICAgICBkb25lKSlcbjs7XG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBjb250YWlucyA/cG9zID9sZW4gdCBjaGFyID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsYXN0ID0gcG9zICsgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgbGFzdFxuICAgICYmIChDaGFyLmVxdWFsIChnZXQgdCBpKSBjaGFyIHx8IGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIiMgMSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiBcbnR5cGUgcmVzdWx0ID1cbnwgTmVnIG9mIHN0cmluZ1xufCBQb3Mgb2Ygc3RyaW5nXG5cbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwODJcXDAwMFxcMTA1XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHBhcnNlX2hleCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDEzNSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE0IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5lZyBib2R5IClcbiMgMTM5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTQ1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTUgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggUG9zIGJvZHkgKVxuIyAxNDkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGNvbnZlcnRfZmFpbHVyZSB4IGEgYiB0b19zdHJpbmcgPVxuICBQcmludGYuZmFpbHdpdGhmXG4gICAgXCJjb252ZXJzaW9uIGZyb20gJXMgdG8gJXMgZmFpbGVkOiAlcyBpcyBvdXQgb2YgcmFuZ2VcIlxuICAgIGFcbiAgICBiXG4gICAgKHRvX3N0cmluZyB4KVxuICAgICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IG51bV9iaXRzX2ludCA9IFN5cy5pbnRfc2l6ZV9pbl9iaXRzXG5sZXQgbnVtX2JpdHNfaW50MzIgPSAzMlxubGV0IG51bV9iaXRzX2ludDY0ID0gNjRcbmxldCBudW1fYml0c19uYXRpdmVpbnQgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPSA2MyB8fCBudW1fYml0c19pbnQgPSAzMSB8fCBudW1fYml0c19pbnQgPSAzMilcbmxldCBtaW5faW50MzIgPSBDYW1sLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBDYW1sLkludDMyLm1heF9pbnRcbmxldCBtaW5faW50NjQgPSBDYW1sLkludDY0Lm1pbl9pbnRcbmxldCBtYXhfaW50NjQgPSBDYW1sLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQubWluX2ludFxubGV0IG1heF9uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5tYXhfaW50XG5sZXQgaW50X3RvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IENhbWwuSW50MzIudG9fc3RyaW5nXG5sZXQgaW50NjRfdG9fc3RyaW5nID0gQ2FtbC5JbnQ2NC50b19zdHJpbmdcbmxldCBuYXRpdmVpbnRfdG9fc3RyaW5nID0gQ2FtbC5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IENhbWwuSW50MzIudG9faW50XG5sZXQgaW50X3RvX2ludDMyX3RydW5jID0gQ2FtbC5JbnQzMi5vZl9pbnRcblxubGV0IGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9faW50X3RydW5jIG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19pbnRfdHJ1bmMgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX2ludDMyX3RydW5jIEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX2ludDMyX3RydW5jIEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDMyIG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQzMiB4IG1heCA8PSAwKVxuOztcblxubGV0IGludF90b19pbnQzMiB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQzMl90b19pbnQgeCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQzMl90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIGludF90b19pbnQzMl90cnVuYyB4IGVsc2UgaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxubGV0IGludDMyX3RvX2ludF9leG4geCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQzMl90b19pbnRfdHJ1bmMgeCBlbHNlIGludDMyX3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50X3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBDYW1sLkludDY0LnRvX2ludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBsZXQgbWluID0gaW50X3RvX2ludDY0IEludC5taW5fdmFsdWUgaW5cbiAgbGV0IG1heCA9IGludF90b19pbnQ2NCBJbnQubWF4X3ZhbHVlIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQ2NF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDY0X3RvX2ludF90cnVuYyB4IGVsc2UgaW50NjRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludFwiIG5hdGl2ZWludF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnRfdG9fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQub2ZfaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludF90cnVuYyA9IENhbWwuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2ludDMyXG5sZXQgaW50NjRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLkludDY0LnRvX2ludDMyXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgbGV0IG1pbiA9IGludDMyX3RvX2ludDY0IG1pbl9pbnQzMiBpblxuICBsZXQgbWF4ID0gaW50MzJfdG9faW50NjQgbWF4X2ludDMyIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMiB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBpbnQ2NF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4ID1cbiAgY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludDMyXCIgbmF0aXZlaW50X3RvX3N0cmluZ1xuOztcblxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50MzJfdG9fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLk5hdGl2ZWludC50b19pbnQzMlxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19uYXRpdmVpbnQgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX25hdGl2ZWludCBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJuYXRpdmVpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50NjQgPj0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDY0X3RvX25hdGl2ZWludF90cnVuYyA9IENhbWwuSW50NjQudG9fbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgbWluX2ludDY0IDEgaW5cbiAgbGV0IG1heCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgbWF4X2ludDY0IDEgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X2ZpdF9vbl9pbnQ2M19leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuICgpIGVsc2UgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4XG47O1xuXG4oKiBzdHJpbmcgY29udmVyc2lvbnMgKilcblxubGV0IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlciA9XG4gIGxldCBpbnB1dF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGlmIGlucHV0X2xlbmd0aCA8PSBjaGFyc19wZXJfZGVsaW1pdGVyXG4gIHRoZW4gaW5wdXRcbiAgZWxzZSAoXG4gICAgbGV0IGhhc19zaWduID1cbiAgICAgIG1hdGNoIGlucHV0LlswXSB3aXRoXG4gICAgICB8ICcrJyB8ICctJyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBudW1fZGlnaXRzID0gaWYgaGFzX3NpZ24gdGhlbiBpbnB1dF9sZW5ndGggLSAxIGVsc2UgaW5wdXRfbGVuZ3RoIGluXG4gICAgbGV0IG51bV9kZWxpbWl0ZXJzID0gKG51bV9kaWdpdHMgLSAxKSAvIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgb3V0cHV0X2xlbmd0aCA9IGlucHV0X2xlbmd0aCArIG51bV9kZWxpbWl0ZXJzIGluXG4gICAgbGV0IG91dHB1dCA9IEJ5dGVzLmNyZWF0ZSBvdXRwdXRfbGVuZ3RoIGluXG4gICAgbGV0IGlucHV0X3BvcyA9IHJlZiAoaW5wdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgb3V0cHV0X3BvcyA9IHJlZiAob3V0cHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSByZWYgY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBmaXJzdF9kaWdpdF9wb3MgPSBpZiBoYXNfc2lnbiB0aGVuIDEgZWxzZSAwIGluXG4gICAgd2hpbGUgIWlucHV0X3BvcyA+PSBmaXJzdF9kaWdpdF9wb3MgZG9cbiAgICAgIGlmICFudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgZGVsaW1pdGVyO1xuICAgICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICAgIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgOj0gY2hhcnNfcGVyX2RlbGltaXRlcik7XG4gICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGlucHV0LlshaW5wdXRfcG9zXTtcbiAgICAgIGRlY3IgaW5wdXRfcG9zO1xuICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgZGVjciBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyXG4gICAgZG9uZTtcbiAgICBpZiBoYXNfc2lnbiB0aGVuIEJ5dGVzLnNldCBvdXRwdXQgMCBpbnB1dC5bMF07XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXRwdXQpXG47O1xuXG5sZXQgaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyID1cbiAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyOjNcbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgaW5wdXQgPSBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXI6J18nXG5sZXQgc2V4cF9vZl9pbnRfc3R5bGUgPSBTZXhwLm9mX2ludF9zdHlsZVxuXG5tb2R1bGUgTWFrZSAoSSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gSVxuXG4gIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gM1xuXG4gIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID1cbiAgICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5ICh0b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgdCBpblxuICAgIFNleHAuQXRvbVxuICAgICAgKG1hdGNoICFzZXhwX29mX2ludF9zdHlsZSB3aXRoXG4gICAgICAgfCBgVW5kZXJzY29yZXMgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBzIH5jaGFyc19wZXJfZGVsaW1pdGVyIH5kZWxpbWl0ZXI6J18nXG4gICAgICAgfCBgTm9fdW5kZXJzY29yZXMgLT4gcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9oZXggKEkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVF9oZXggPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChJLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgSS5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBJLmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSA0XG5cbiAgICBsZXQgdG9fc3RyaW5nJyA/ZGVsaW1pdGVyIHQgPVxuICAgICAgbGV0IG1ha2Vfc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEkudG9fc3RyaW5nXG4gICAgICAgIHwgU29tZSBkZWxpbWl0ZXIgLT5cbiAgICAgICAgICBmdW4gdCAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IChJLnRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gICAgICBpblxuICAgICAgaWYgSS4oIDwgKSB0IEkuemVybyB0aGVuIFwiLTB4XCIgXiBtYWtlX3N1ZmZpeCAoSS5uZWcgdCkgZWxzZSBcIjB4XCIgXiBtYWtlX3N1ZmZpeCB0XG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IHRvX3N0cmluZycgdCA/ZGVsaW1pdGVyOk5vbmVcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9IHRvX3N0cmluZycgdCB+ZGVsaW1pdGVyXG5cbiAgICBsZXQgaW52YWxpZCBzdHIgPVxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIiVzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIEkubW9kdWxlX25hbWUgc3RyICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgc3RyID1cbiAgICAgIEkub2Zfc3RyaW5nIChTdHJpbmcuZmlsdGVyIHN0ciB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAnXycpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgICBsZXQgbW9kdWxlIEwgPSBIZXhfbGV4ZXIgaW5cbiAgICAgIGxldCBsZXggPSBDYW1sLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcblxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRfaGV4XG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUX2hleClcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9nZW5lcmF0ZS9nZW5lcmF0ZV9wb3dfb3ZlcmZsb3dfYm91bmRzLmV4ZSAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIGhhdmUgdG8gdXNlIEludDY0LnRvX2ludF9leG4gaW5zdGVhZCBvZiBpbnQgY29uc3RhbnRzIHRvIG1ha2VcbiAgIHN1cmUgdGhhdCBmaWxlIGNhbiBiZSBwcmVwcm9jZXNzZWQgb24gMzItYml0IG1hY2hpbmVzLiAqKVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIDogaW50MzIgPVxuICAyMTQ3NDgzNjQ3bFxuXG5sZXQgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50MzIgYXJyYXkgPVxuICBbfCAyMTQ3NDgzNjQ3bFxuICA7ICAyMTQ3NDgzNjQ3bFxuICA7ICA0NjM0MGxcbiAgOyAgMTI5MGxcbiAgOyAgMjE1bFxuICA7ICA3M2xcbiAgOyAgMzVsXG4gIDsgIDIxbFxuICA7ICAxNGxcbiAgOyAgMTBsXG4gIDsgIDhsXG4gIDsgIDdsXG4gIDsgIDVsXG4gIDsgIDVsXG4gIDsgIDRsXG4gIDsgIDRsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIDogaW50ID1cbiAgKC0xKSBsc3IgMVxuXG5sZXQgaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludCBhcnJheSA9XG4gIG1hdGNoIEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnQgd2l0aFxuICB8IDMyIC0+IEFycmF5Lm1hcCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgfmY6Q2FtbC5JbnQzMi50b19pbnRcbiAgfCA2MyAtPlxuICAgIFt8IENhbWwuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgQ2FtbC5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBDYW1sLkludDY0LnRvX2ludCAyMTQ3NDgzNjQ3TFxuICAgIDsgIDE2NjQ1MTBcbiAgICA7ICA0NjM0MFxuICAgIDsgIDU0MDRcbiAgICA7ICAxMjkwXG4gICAgOyAgNDYzXG4gICAgOyAgMjE1XG4gICAgOyAgMTE4XG4gICAgOyAgNzNcbiAgICA7ICA0OVxuICAgIDsgIDM1XG4gICAgOyAgMjdcbiAgICA7ICAyMVxuICAgIDsgIDE3XG4gICAgOyAgMTRcbiAgICA7ICAxMlxuICAgIDsgIDEwXG4gICAgOyAgOVxuICAgIDsgIDhcbiAgICA7ICA3XG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCAzMSAtPlxuICAgIFt8IDEwNzM3NDE4MjNcbiAgICA7ICAxMDczNzQxODIzXG4gICAgOyAgMzI3NjdcbiAgICA7ICAxMDIzXG4gICAgOyAgMTgxXG4gICAgOyAgNjNcbiAgICA7ICAzMVxuICAgIDsgIDE5XG4gICAgOyAgMTNcbiAgICA7ICAxMFxuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgNDYxMTY4NjAxODQyNzM4NzkwM0xcblxubGV0IGludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgMjE0NzQ4MzY0N0xcbiAgOyAgMTY2NDUxMExcbiAgOyAgNDYzNDBMXG4gIDsgIDU0MDRMXG4gIDsgIDEyOTBMXG4gIDsgIDQ2M0xcbiAgOyAgMjE1TFxuICA7ICAxMThMXG4gIDsgIDczTFxuICA7ICA0OUxcbiAgOyAgMzVMXG4gIDsgIDI3TFxuICA7ICAyMUxcbiAgOyAgMTdMXG4gIDsgIDE0TFxuICA7ICAxMkxcbiAgOyAgMTBMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG5cbmxldCBpbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDMwMzcwMDA0OTlMXG4gIDsgIDIwOTcxNTFMXG4gIDsgIDU1MTA4TFxuICA7ICA2MjA4TFxuICA7ICAxNDQ4TFxuICA7ICA1MTFMXG4gIDsgIDIzNExcbiAgOyAgMTI3TFxuICA7ICA3OExcbiAgOyAgNTJMXG4gIDsgIDM4TFxuICA7ICAyOExcbiAgOyAgMjJMXG4gIDsgIDE4TFxuICA7ICAxNUxcbiAgOyAgMTNMXG4gIDsgIDExTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC0zMDM3MDAwNDk5TFxuICA7ICAtMjA5NzE1MUxcbiAgOyAgLTU1MTA4TFxuICA7ICAtNjIwOExcbiAgOyAgLTE0NDhMXG4gIDsgIC01MTFMXG4gIDsgIC0yMzRMXG4gIDsgIC0xMjdMXG4gIDsgIC03OExcbiAgOyAgLTUyTFxuICA7ICAtMzhMXG4gIDsgIC0yOExcbiAgOyAgLTIyTFxuICA7ICAtMThMXG4gIDsgIC0xNUxcbiAgOyAgLTEzTFxuICA7ICAtMTFMXG4gIDsgIC05TFxuICA7ICAtOExcbiAgOyAgLTdMXG4gIDsgIC03TFxuICA7ICAtNkxcbiAgOyAgLTZMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTFMXG4gIHxdXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBuZWdhdGl2ZV9leHBvbmVudCAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJleHBvbmVudCBjYW4gbm90IGJlIG5lZ2F0aXZlXCIgKClcbmxldCBvdmVyZmxvdyAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJpbnRlZ2VyIG92ZXJmbG93IGluIHBvd1wiICgpXG5cbigqIFRvIGltcGxlbWVudCBbaW50NjRfcG93XSwgd2UgdXNlIEMgY29kZSByYXRoZXIgdGhhbiBPQ2FtbCB0byBlbGltaW5hdGUgYWxsb2NhdGlvbi4gKilcbmV4dGVybmFsIGludF9tYXRoX2ludF9wb3cgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWJcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaW50X21hdGhfaW50NjRfcG93IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWJcIlxuXG5sZXQgaW50X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgaWYgZXhwb25lbnQgPCAwIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMVxuICAmJiAoZXhwb25lbnQgPiA2M1xuICAgICAgfHwgYWJzIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKGV4cG9uZW50KSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgSW50NjRfd2l0aF9jb21wYXJpc29ucyA9IHN0cnVjdFxuICBpbmNsdWRlIENhbWwuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgICAgICApXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZSA8IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgICAgICApKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBVcCAtPiByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGludF9wb3cgPSBpbnRfcG93XG4gIGxldCBpbnQ2NF9wb3cgPSBpbnQ2NF9wb3dcbiAgbGV0IGludDYzX3Bvd19vbl9pbnQ2NCA9IGludDYzX3Bvd19vbl9pbnQ2NFxuXG4gIG1vZHVsZSBQb3dfb3ZlcmZsb3dfYm91bmRzID0gUG93X292ZXJmbG93X2JvdW5kc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCogQyBzdHViIGZvciBpbnQgcG9wY291bnQgdG8gdXNlIHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbmV4dGVybmFsIGludF9wb3Bjb3VudCA6IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50XCIgW0BAbm9hbGxvY11cblxuKCogVG8gbWFpbnRhaW4gamF2YXNjcmlwdCBjb21wYXRpYmlsaXR5IGFuZCBlbmFibGUgdW5ib3hpbmcsIHdlIGltcGxlbWVudCBwb3Bjb3VudCBpblxuICAgT0NhbWwgcmF0aGVyIHRoYW4gdXNlIEMgc3R1YnMuIEltcGxlbWVudGF0aW9uIGFkYXB0ZWQgZnJvbTpcbiAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbW1pbmdfd2VpZ2h0I0VmZmljaWVudF9pbXBsZW1lbnRhdGlvbiAqKVxubGV0IGludDY0X3BvcGNvdW50ID1cbiAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKENhbWwuSW50NjQubG9nYW5kIChDYW1sLkludDY0Lm9mX2ludDMyIHgpIG1hc2spXG47O1xuXG5sZXQgbmF0aXZlaW50X3BvcGNvdW50ID1cbiAgbWF0Y2ggQ2FtbC5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChDYW1sLk5hdGl2ZWludC50b19pbnQzMiB4KVxuICB8IDY0IC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTaWduMFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoU2lnbjApXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMS5cbiAgfCBaZXJvIC0+IDAuXG4gIHwgUG9zIC0+IDEuXG47O1xuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbjs7XG5cbmxldCAoICogKSB0IHQnID0gb2ZfaW50ICh0b19pbnQgdCAqIHRvX2ludCB0JylcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYXQgdGhlIGVuZCwgYWZ0ZXIgYW55XG4gICBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzb1xuICAgdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzXG4gICBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludF9pbnRmXG5pbmNsdWRlIEludDBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlIHggeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSB4IHlcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgfCBfIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG5lbmRcblxubGV0IG51bV9iaXRzID0gSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IENhbWwuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIENhbWwuaW50X29mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJXhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiV4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IHQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzJfdHJ1bmMgOiBpbnQzMiAtPiB0ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2ludDY0X3RydW5jIDogaW50NjQgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiBuYXRpdmVpbnQgLT4gdCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuXG5sZXQgcHJlZCBpID0gaSAtIDFcbmxldCBzdWNjIGkgPSBpICsgMVxubGV0IHRvX2ludCBpID0gaVxubGV0IHRvX2ludF9leG4gPSB0b19pbnRcbmxldCBvZl9pbnQgaSA9IGlcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gQ2FtbC5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IENhbWwuaW5jclxubGV0IGRlY3IgPSBDYW1sLmRlY3JcbmxldCBzaGlmdF9yaWdodCBhIGIgPSBhIGFzciBiXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCBhIGIgPSBhIGxzciBiXG5sZXQgc2hpZnRfbGVmdCBhIGIgPSBhIGxzbCBiXG5sZXQgYml0X25vdCBhID0gbG5vdCBhXG5sZXQgYml0X29yIGEgYiA9IGEgbG9yIGJcbmxldCBiaXRfYW5kIGEgYiA9IGEgbGFuZCBiXG5sZXQgYml0X3hvciBhIGIgPSBhIGx4b3IgYlxubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50X3Bvd1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IC0gMSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCArIDFcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggLSAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kICh4IC0gMSkgPSAwXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogICgqIE5vdGUgdGhhdCB3ZSBwYXNzIHRoZSB0YWdnZWQgaW50IGhlcmUuIFNlZSBpbnRfbWF0aF9zdHVicy5jIGZvciBkZXRhaWxzIG9uIHdoeVxuICAgICAgICAgIHRoaXMgaXMgY29ycmVjdC4gKilcbiAgICBpbnRcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50W0B1bnRhZ2dlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2N0el91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIGlmIGkgPSAxIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChpIC0gMSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IHNpZ24gPSBTaWduLm9mX2ludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50X3BvcGNvdW50XG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbiAgZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuICBleHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiB0IC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgbW9kdWxlIEYgPSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBpbmNsdWRlIEZcblxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuXG4gICgqIFRoZXNlIGlubGluZWQgdmVyc2lvbnMgb2YgKCUpLCAoLyUpLCBhbmQgKC8vKSBwZXJmb3JtIGJldHRlciB0aGFuIHRoZWlyIGZ1bmN0b3JpemVkXG4gICAgIGNvdW50ZXJwYXJ0cyBpbiBbRl0gKHNlZSBiZW5jaG1hcmtzIGJlbG93KS5cblxuICAgICBUaGUgcmVhc29uIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBpbiBbSW50XSBidXQgbm90IGluIGFueSBvZiB0aGUgb3RoZXIgaW50ZWdlclxuICAgICBtb2R1bGVzIGlzIHRoYXQgdGhleSBleGlzdGVkIGluIFtJbnRdIGFuZCBbSW50XSBhbG9uZSBwcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mXG4gICAgIHRoZSBbSW50X21hdGguTWFrZV0gZnVuY3RvciwgYW5kIHdlIGRpZG4ndCB3YW50IHRvIGRlZ3JhZGUgdGhlaXIgcGVyZm9ybWFuY2UuXG5cbiAgICAgV2Ugd29uJ3QgcHJlLWVtcHRpdmVseSBkbyB0aGUgc2FtZSBmb3IgbmV3IGZ1bmN0aW9ucywgdW5sZXNzIHNvbWVvbmUgY2FyZXMsIG9uIGEgY2FzZVxuICAgICBieSBjYXNlIGZhc2hpb24uICAqKVxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSByZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG4gIGV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbiAgbGV0IGxub3QgPSBsbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludF0gYW5kIFtJbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgT19GID0gTy5GXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yXG4gICBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgVWNoYXIwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVjaGFyXCJcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBIYXNoLmZvbGRfaW50IHN0YXRlICh0b19pbnQgdClcbiAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgbGV0IHRvX3N0cmluZyB0ID0gUHJpbnRmLnNwcmludGYgXCJVKyUwNFhcIiAodG9faW50IHQpXG5cbiAgKCogRG8gbm90IGFjdHVhbGx5IGV4cG9ydCB0aGlzLiBTZWUgZGlzY3Vzc2lvbiBpbiB0aGUgLm1saSAqKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBNLktleSlcbiAgICA7O1xuXG4gICAgKCogV2Ugd2FudCBhIGNvbnN0YW50IGFsbG9jYXRlZCBvbmNlIHRoYXQgW3NhbWVdIGNhbiByZXR1cm4gd2hlbmV2ZXIgaXQgZ2V0cyB0aGUgc2FtZVxuICAgICAgIHdpdG5lc3Nlcy4gIElmIHdlIHdyaXRlIHRoZSBjb25zdGFudCBpbnNpZGUgdGhlIGJvZHkgb2YgW3NhbWVdLCB0aGUgbmF0aXZlLWNvZGVcbiAgICAgICBjb21waWxlciB3aWxsIGRvIHRoZSByaWdodCB0aGluZyBhbmQgbGlmdCBpdCBvdXQuICBCdXQgZm9yIGNsYXJpdHkgYW5kIHJvYnVzdG5lc3MsXG4gICAgICAgd2UgZG8gaXQgb3Vyc2VsdmVzLiAqKVxuICAgIGxldCBzb21lX3QgPSBTb21lIFRcblxuICAgIGxldCBzYW1lICh0eXBlIGEgYikgKGEgOiBhIHQpIChiIDogYiB0KSA6IChhLCBiKSBlcXVhbCBvcHRpb24gPVxuICAgICAgbGV0IG1vZHVsZSBBID0gKHZhbCBhIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEIgPSAodmFsIGIgOiBTIHdpdGggdHlwZSB0ID0gYikgaW5cbiAgICAgIG1hdGNoIEEuS2V5IHdpdGhcbiAgICAgIHwgQi5LZXkgLT4gc29tZV90XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdpdG5lc3MgOiAnYSBXaXRuZXNzLnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IHRvX3NleHAgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCBfIHsgd2l0bmVzczsgbmFtZTsgdG9fc2V4cCB9IDogU2V4cC50ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiBBdG9tIG5hbWVcbiAgICBlbHNlXG4gICAgICBMaXN0XG4gICAgICAgIFsgTGlzdCBbIEF0b20gXCJuYW1lXCI7IEF0b20gbmFtZSBdXG4gICAgICAgIDsgTGlzdCBbIEF0b20gXCJ3aXRuZXNzXCI7IHdpdG5lc3MgfD4gV2l0bmVzcy5zZXhwX29mX3QgdG9fc2V4cCBdXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc2V4cCB0ID0gdC50b19zZXhwXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IGNyZWF0ZSB+bmFtZSB0b19zZXhwID0geyB3aXRuZXNzID0gV2l0bmVzcy5jcmVhdGUgKCk7IG5hbWU7IHRvX3NleHAgfVxuICBsZXQgdWlkIHQgPSBXaXRuZXNzLnVpZCB0LndpdG5lc3NcbiAgbGV0IGhhc2ggdCA9IHVpZCB0XG4gIGxldCBoYXNoX2ZvbGRfdCBzIHQgPSBoYXNoX2ZvbGRfaW50IHMgKHVpZCB0KVxuICBsZXQgc2FtZV93aXRuZXNzIHQxIHQyID0gV2l0bmVzcy5zYW1lIHQxLndpdG5lc3MgdDIud2l0bmVzc1xuICBsZXQgc2FtZSB0MSB0MiA9IE9wdGlvbi5pc19zb21lIChzYW1lX3dpdG5lc3MgdDEgdDIpXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gdDEgdDIgPVxuICAgIG1hdGNoIHNhbWVfd2l0bmVzcyB0MSB0MiB3aXRoXG4gICAgfCBTb21lIHcgLT4gd1xuICAgIHwgTm9uZSAtPlxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGdvdCBkaWZmZXJlbnQgaWRzXCJcbiAgICAgICAgICAgWyAoIFwiXCJcbiAgICAgICAgICAgICAsIHNleHBfb2ZfcGFpciAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAodDEsIHQyKVxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgXSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBbJ2EgQ2hlYXBfb3B0aW9uLnRdIGlzIGxpa2UgWydhIG9wdGlvbl0sIGJ1dCBpdCBkb2Vzbid0IGJveCBbc29tZSBfXSB2YWx1ZXMuXG5cbiAgICBUaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdGhhdCBhcmUgdW5zYWZlIGFib3V0IGl0OlxuXG4gICAgLSBbZmxvYXQgdCBhcnJheV0gKG9yIGFueSBhcnJheS1iYWNrZWQgY29udGFpbmVyKSBpcyBub3QgbWVtb3J5LXNhZmVcbiAgICAgIGJlY2F1c2UgZmxvYXQgYXJyYXkgb3B0aW1pemF0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHVuYm94ZWQgb3B0aW9uXG4gICAgICBvcHRpbWl6YXRpb24uIFlvdSBoYXZlIHRvIHVzZSBbVW5pZm9ybV9hcnJheS50XSBpbnN0ZWFkIG9mIFthcnJheV0uXG5cbiAgICAtIE5lc3RlZCBvcHRpb25zIChbJ2EgdCB0XSkgZG9uJ3Qgd29yay4gVGhleSBhcmUgYmVsaWV2ZWQgdG8gYmVcbiAgICAgIG1lbW9yeS1zYWZlLCBidXQgbm90IHBhcmFtZXRyaWMuXG5cbiAgICAtIEEgcmVjb3JkIHdpdGggW2Zsb2F0IHRdcyBpbiBpdCBzaG91bGQgYmUgc2FmZSwgYnV0IGl0J3Mgb25seSBbdF0gYmVpbmdcbiAgICAgIGFic3RyYWN0IHRoYXQgZ2l2ZXMgeW91IHNhZmV0eS4gSWYgdGhlIGNvbXBpbGVyIHdhcyBzbWFydCBlbm91Z2ggdG8gcGVla1xuICAgICAgdGhyb3VnaCB0aGUgbW9kdWxlIHNpZ25hdHVyZSB0aGVuIGl0IGNvdWxkIGRlY2lkZSB0byBjb25zdHJ1Y3QgYSBmbG9hdFxuICAgICAgYXJyYXkgaW5zdGVhZC4gKilcbm1vZHVsZSBDaGVhcF9vcHRpb24gPSBzdHJ1Y3RcbiAgKCogVGhpcyBpcyB0YWtlbiBmcm9tIGNvcmUuIFJhdGhlciB0aGFuIGV4cG9zZSBpdCBpbiB0aGUgcHVibGljIGludGVyZmFjZSBvZiBiYXNlLCBqdXN0XG4gICAgIGtlZXAgYSBjb3B5IGFyb3VuZCBoZXJlLiAqKVxuICBsZXQgcGh5c19zYW1lICh0eXBlIGEgYikgKGEgOiBhKSAoYiA6IGIpID0gcGh5c19lcXVhbCBhIChDYW1sLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0XG5cbiAgICAoKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICAgICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgICAgICBJdCB3b3VsZCBiZSBzaW1wbGVyIHRvIHVzZSB0aGlzIHZhbHVlIGFzIFtub25lXSwgYnV0IHdlIHVzZSBhbiBpbW1lZGlhdGUgaW5zdGVhZFxuICAgICAgIGJlY2F1c2UgaXQgbGV0cyB1cyBhdm9pZCBjYW1sX21vZGlmeSB3aGVuIHNldHRpbmcgdG8gW25vbmVdLCBtYWtpbmcgY2VydGFpblxuICAgICAgIGJlbmNobWFya3Mgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKGUuZy4gLi4vYmVuY2gvYXJyYXlfcXVldWUuZXhlKS5cblxuICAgICAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE1vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyIHBsYWNlIHdoZXJlIHdlIHdhbnRcbiAgICAgICBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxuICAgIGxldCBub25lX3N1YnN0aXR1dGUgOiBfIHQgPSBDYW1sLk9iai5vYmogKENhbWwuT2JqLm5ld19ibG9jayBDYW1sLk9iai5hYnN0cmFjdF90YWcgMSlcblxuICAgIGxldCBub25lIDogXyB0ID1cbiAgICAgICgqIFRoZSBudW1iZXIgd2FzIHByb2R1Y2VkIGJ5XG4gICAgICAgICBbPCAvZGV2L3VyYW5kb20gdHIgLWMgLWQgJzEyMzQ1Njc4OTBhYmNkZWYnIHwgaGVhZCAtYyAxNl0uXG5cbiAgICAgICAgIFRoZSBpZGVhIGlzIHRoYXQgYSByYW5kb20gbnVtYmVyIHdpbGwgaGF2ZSBsb3dlciBwcm9iYWJpbGl0eSB0byBjb2xsaWRlIHdpdGhcbiAgICAgICAgIGFueXRoaW5nIHRoYW4gYW55IG51bWJlciB3ZSBjYW4gY2hvb3NlIG91cnNlbHZlcy5cblxuICAgICAgICAgV2UgYXJlIHVzaW5nIGEgcG9seW1vcnBoaWMgdmFyaWFudCBpbnN0ZWFkIG9mIGFuIGludGVnZXIgY29uc3RhbnQgYmVjYXVzZSB0aGVyZVxuICAgICAgICAgaXMgYSBjb21waWxlciBidWcgd2hlcmUgaXQgd3JvbmdseSBhc3N1bWVzIHRoYXQgdGhlIHJlc3VsdCBvZiBbaWYgXyB0aGVuIGMgZWxzZVxuICAgICAgICAgeV0gaXMgbm90IGEgcG9pbnRlciBpZiBbY10gaXMgYW4gaW50ZWdlciBjb21waWxlLXRpbWUgY29uc3RhbnQuICBUaGlzIGlzIGJlaW5nXG4gICAgICAgICBmaXhlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvcHVsbC81NTUuICBUaGUgXCJtZW1vcnkgY29ycnVwdGlvblwiIHRlc3RcbiAgICAgICAgIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgaXNzdWUuICAqKVxuICAgICAgQ2FtbC5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgQ2FtbC5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfdW5zYWZlICh0eXBlIGEpICh4IDogYSB0KSA6IGEgPVxuICAgICAgaWYgcGh5c19lcXVhbCB4IG5vbmVfc3Vic3RpdHV0ZSB0aGVuIENhbWwuT2JqLm1hZ2ljIG5vbmUgZWxzZSBDYW1sLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICBVbmlmb3JtX2FycmF5LnRfc2V4cF9ncmFtbWFyIChDaGVhcF9vcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcilcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlbXB0eSA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbmxldCBjcmVhdGUgfmxlbiA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW4gQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBpbml0IG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiAoZiBpKSlcbmxldCBpbml0X3NvbWUgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24uc29tZSAoZiBpKSlcbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KVxuXG5sZXQgZm9sZGkgaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gYWNjIDo9IGYgaSAhYWNjIGVsZW0pO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZCBpbnB1dCB+aW5pdCB+ZiA9IGZvbGRpIGlucHV0IH5pbml0IH5mOihmdW4gKF8gOiBpbnQpIGFjYyB4IC0+IGYgYWNjIHgpXG5cbmluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWFwaSBpbnB1dCB+ZiA9XG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbjoobGVuZ3RoIGlucHV0KSBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiB1bnNhZmVfc2V0IG91dHB1dCBpIChmIGkgZWxlbSkpO1xuICBvdXRwdXRcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIGVsZW0gLT4gZiBlbGVtKVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSBbXSBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA2XyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDA1XyBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDAzXyBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW0NhbWwuU3RhY2tdICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAhciAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmVcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2xpc3QgKHR5cGUgYSkgKGwgOiBhIGxpc3QpID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsXG4gIHRoZW4gY3JlYXRlICgpXG4gIGVsc2UgKFxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KDIgKiBsZW5ndGgpIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIE9wdGlvbl9hcnJheS5zZXRfc29tZSBlbHRzIGkgYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB7IGxlbmd0aDsgZWx0cyB9KVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCByZXNpemUgdCBzaXplID1cbiAgbGV0IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpzaXplIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6dC5lbHRzIH5kc3Q6YXJyIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnQubGVuZ3RoO1xuICB0LmVsdHMgPC0gYXJyXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCBuZXdfY2FwYWNpdHkgKGxlbmd0aCB0KSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHJlc2l6ZSB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IHB1c2ggdCBhID1cbiAgaWYgdC5sZW5ndGggPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyB0aGVuIHJlc2l6ZSB0ICgyICogKHQubGVuZ3RoICsgMSkpO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5lbHRzIHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSB0Lmxlbmd0aCAtIDEgaW5cbiAgbGV0IHJlc3VsdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpO1xuICB0Lmxlbmd0aCA8LSBpO1xuICByZXN1bHRcbjs7XG5cbmxldCBwb3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay5wb3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHBvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3Bfbm9uZW1wdHkgdClcbmxldCBwb3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgcG9wX2Vycm9yIGVsc2UgcG9wX25vbmVtcHR5IHRcbmxldCB0b3Bfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzICh0Lmxlbmd0aCAtIDEpXG5sZXQgdG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sudG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCB0b3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX25vbmVtcHR5IHQpXG5sZXQgdG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHRvcF9lcnJvciBlbHNlIHRvcF9ub25lbXB0eSB0XG5sZXQgY29weSB7IGxlbmd0aDsgZWx0cyB9ID0geyBsZW5ndGg7IGVsdHMgPSBPcHRpb25fYXJyYXkuY29weSBlbHRzIH1cblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwKVxuOztcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBmIChwb3Bfbm9uZW1wdHkgdCk7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBwdXNoIHQgeDtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGlzIGxpZnRlZCBvdXQgb2YgW01dIGJlY2F1c2UgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uMF0gZXhwb3J0cyBbU3RyaW5nMF1cbiAgIGFzIFtTdHJpbmddLCB3aGljaCBkb2VzIG5vdCBleHBvcnQgYSBoYXNoIGZ1bmN0aW9uLiAqKVxubGV0IGhhc2hfb3ZlcnJpZGUgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG4oKiBJbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGFueSBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0XG4gICBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGFsbCA6ICdhLiAnYSBsaXN0IC0+ICdhIHQgbGlzdCA9XG4gIGZ1biBfYWxsX29mX2EgLT5cbiAgUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgfCBlbnVtZXJhdGVfXzAwMV8gOjogbCAtPiBtYXAgbCAoSW5jbCBlbnVtZXJhdGVfXzAwMV8gOjogYWNjKVxuICAgICBpblxuICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgIChQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICAgICB8IGVudW1lcmF0ZV9fMDAyXyA6OiBsIC0+IG1hcCBsIChFeGNsIGVudW1lcmF0ZV9fMDAyXyA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgICAgWyBVbmJvdW5kZWQgXSlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDE4XykgOiAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XyB0KSAtPlxuICBsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJtYXliZV9ib3VuZC5tbC50XCIgaW5cbiAgZnVuIF9vZl9hX18wMDNfIC0+IGZ1bmN0aW9uXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIF90YWdfXzAwOV8pIDo6IHNleHBfYXJnc19fMDEwXykgYXNcbiAgICAgIF9zZXhwX18wMDhfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTBfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDExXyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgIEluY2wgcmVzMF9fMDEyX1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDA5X1xuICAgICAgICAgICBfc2V4cF9fMDA4XylcbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2FfXzAwM18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgRXhjbCByZXMwX18wMTdfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgLT4gVW5ib3VuZGVkXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSA6OiBfKSBhc1xuICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuICh0eXBlIGFfXzAyNF8pIDogKChhX18wMjRfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDI0XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgZnVuIF9vZl9hX18wMTlfIC0+IGZ1bmN0aW9uXG4gICAgfCBJbmNsIGFyZzBfXzAyMF8gLT5cbiAgICAgIGxldCByZXMwX18wMjFfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIwXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5jbFwiOyByZXMwX18wMjFfIF1cbiAgICB8IEV4Y2wgYXJnMF9fMDIyXyAtPlxuICAgICAgbGV0IHJlczBfXzAyM18gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGNsXCI7IHJlczBfXzAyM18gXVxuICAgIHwgVW5ib3VuZGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuYm91bmRlZFwiXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmVcbiAgIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludClcbjs7XG5cbmxldCAoaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gOlxuICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBJbl9yYW5nZSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gSW5jbCAoZiBpbmNsKVxuICB8IEV4Y2wgZXhjbCAtPiBFeGNsIChmIGV4Y2wpXG4gIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuOztcblxubGV0IGlzX2xvd2VyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgaW5jbCBhIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBleGNsIGEgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBpc191cHBlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGEgaW5jbCA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgYSBleGNsIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIG1hdGNoIGxvd2VyIHdpdGhcbiAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgfCBJbmNsIGxvd2VyIHwgRXhjbCBsb3dlciAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgIHwgSW5jbCB1cHBlciB8IEV4Y2wgdXBwZXIgLT4gY29tcGFyZSBsb3dlciB1cHBlciA+IDApXG47O1xuXG5sZXQgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBpZiBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlXG4gIHRoZW4gZmFpbHdpdGggXCJNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4bjogbG93ZXIgYm91bmQgPiB1cHBlciBib3VuZFwiXG47O1xuXG5sZXQgY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmU7XG4gIGlmIG5vdCAoaXNfbG93ZXJfYm91bmQgbG93ZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEJlbG93X2xvd2VyX2JvdW5kXG4gIGVsc2UgaWYgbm90IChpc191cHBlcl9ib3VuZCB1cHBlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQWJvdmVfdXBwZXJfYm91bmRcbiAgZWxzZSBJbl9yYW5nZVxuOztcblxubGV0IGludGVydmFsX2NvbnRhaW5zX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBtYXRjaCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgd2l0aFxuICB8IEluX3JhbmdlIC0+IHRydWVcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYER1cGxpY2F0ZVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICB8IGBPayBfbGVmdF9fMDAzXywgYE9rIF9yaWdodF9fMDA0XyAtPiBfY21wX19hIF9sZWZ0X18wMDNfIF9yaWdodF9fMDA0X1xuICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IDBcbiAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA1XyBiX18wMDZfIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCB0X18wMTRfIHRfXzAxNl9cbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHRfXzAxNF8sIHRfXzAxNl8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMTdfLCBgTGVmdCBfcmlnaHRfXzAxOF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE3XyBfcmlnaHRfXzAxOF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAxOV8sIGBSaWdodCBfcmlnaHRfXzAyMF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE5XyBfcmlnaHRfXzAyMF9cbiAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDIxXywgYFVuZXF1YWwgX3JpZ2h0X18wMjJfIC0+XG4gICAgICAgICAgbGV0IHRfXzAyM18sIHRfXzAyNF8gPSBfbGVmdF9fMDIxXyBpblxuICAgICAgICAgIGxldCB0X18wMjVfLCB0X18wMjZfID0gX3JpZ2h0X18wMjJfIGluXG4gICAgICAgICAgKG1hdGNoIF9jbXBfX3YgdF9fMDIzXyB0X18wMjVfIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IF9jbXBfX3YgdF9fMDI0XyB0X18wMjZfXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICAgIHwgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gJ2sgLT4gYm9vbCkgLT4gKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDI3XyBiX18wMjhfIC0+XG4gICAgICBsZXQgdF9fMDI5XywgdF9fMDMwXyA9IGFfXzAyN18gaW5cbiAgICAgIGxldCB0X18wMzFfLCB0X18wMzJfID0gYl9fMDI4XyBpblxuICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAoX2NtcF9fayB0X18wMjlfIHRfXzAzMV8pXG4gICAgICAgIChpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCB0X18wMzBfIHRfXzAzMl9cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIHRfXzAzMF8sIHRfXzAzMl8gd2l0aFxuICAgICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMzNfLCBgTGVmdCBfcmlnaHRfXzAzNF8gLT4gX2NtcF9fdiBfbGVmdF9fMDMzXyBfcmlnaHRfXzAzNF9cbiAgICAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAzNV8sIGBSaWdodCBfcmlnaHRfXzAzNl8gLT4gX2NtcF9fdiBfbGVmdF9fMDM1XyBfcmlnaHRfXzAzNl9cbiAgICAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDM3XywgYFVuZXF1YWwgX3JpZ2h0X18wMzhfIC0+XG4gICAgICAgICAgICAgbGV0IHRfXzAzOV8sIHRfXzA0MF8gPSBfbGVmdF9fMDM3XyBpblxuICAgICAgICAgICAgIGxldCB0X18wNDFfLCB0X18wNDJfID0gX3JpZ2h0X18wMzhfIGluXG4gICAgICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKSAoX2NtcF9fdiB0X18wMzlfIHRfXzA0MV8pIChfY21wX192IHRfXzA0MF8gdF9fMDQyXylcbiAgICAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdrICd2LlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2spXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAndilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzA1N18gPSBcIm1hcF9pbnRmLm1sLlN5bW1ldHJpY19kaWZmX2VsZW1lbnQudFwiIGluXG4gICAgZnVuIF9vZl9rX18wNDNfIF9vZl92X18wNDRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA2N187IGFyZzFfXzA2OF8gXSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDY5XyA9IF9vZl9rX18wNDNfIGFyZzBfXzA2N19cbiAgICAgICAgYW5kIHJlczFfXzA3MF8gPVxuICAgICAgICAgIGxldCBzZXhwX18wNjZfID0gYXJnMV9fMDY4XyBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc2V4cF9fMDY2XyB3aXRoXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIGFzIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gOjogc2V4cF9hcmdzX18wNTBfKSBhc1xuICAgICAgICAgICAgICBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIGFzIF90YWdfXzA2M18gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDY0XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjVfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDY0XyBpblxuICAgICAgICAgICAgICAgICAgICBgTGVmdCByZXMwX18wNjVfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2M19cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIGFzIF90YWdfXzA2MF8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDYxXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjJfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDYxXyBpblxuICAgICAgICAgICAgICAgICAgICBgUmlnaHQgcmVzMF9fMDYyX1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjBfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIGFzIF90YWdfXzA1MV8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDU4XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTlfID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhcmcwX18wNThfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA1Ml87IGFyZzFfXzA1M18gXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNTJfXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzMV9fMDU1XyA9IF9vZl92X18wNDRfIGFyZzFfXzA1M18gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlczBfXzA1NF8sIHJlczFfXzA1NV9cbiAgICAgICAgICAgICAgICAgICAgICB8IHNleHBfXzA1Nl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDU2X1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBgVW5lcXVhbCByZXMwX18wNTlfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA1MV9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgc2V4cF9fMDY2X1xuICAgICAgICBpblxuICAgICAgICByZXMwX18wNjlfLCByZXMxX18wNzBfXG4gICAgICB8IHNleHBfXzA3MV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBlcnJvcl9zb3VyY2VfXzA1N18gMiBzZXhwX18wNzFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9rX18wNzJfIF9vZl92X18wNzNfIChhcmcwX18wODFfLCBhcmcxX18wODJfKSAtPlxuICAgICAgbGV0IHJlczBfXzA4M18gPSBfb2Zfa19fMDcyXyBhcmcwX18wODFfXG4gICAgICBhbmQgcmVzMV9fMDg0XyA9XG4gICAgICAgIG1hdGNoIGFyZzFfXzA4Ml8gd2l0aFxuICAgICAgICB8IGBMZWZ0IHZfXzA3NF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl92X18wNzNfIHZfXzA3NF8gXVxuICAgICAgICB8IGBSaWdodCB2X18wNzVfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3ZfXzA3M18gdl9fMDc1XyBdXG4gICAgICAgIHwgYFVuZXF1YWwgdl9fMDc2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgIDsgKGxldCBhcmcwX18wNzdfLCBhcmcxX18wNzhfID0gdl9fMDc2XyBpblxuICAgICAgICAgICAgICAgbGV0IHJlczBfXzA3OV8gPSBfb2Zfdl9fMDczXyBhcmcwX18wNzdfXG4gICAgICAgICAgICAgICBhbmQgcmVzMV9fMDgwXyA9IF9vZl92X18wNzNfIGFyZzFfXzA3OF8gaW5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA3OV87IHJlczFfXzA4MF8gXSlcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wODNfOyByZXMxX18wODRfIF1cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wODVfIGJfXzA4Nl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzA4NV8sIGJfXzA4Nl8gd2l0aFxuICAgICAgfCBgTGVmdCBfbGVmdF9fMDg3XywgYExlZnQgX3JpZ2h0X18wODhfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA4N18gX3JpZ2h0X18wODhfXG4gICAgICB8IGBSaWdodCBfbGVmdF9fMDg5XywgYFJpZ2h0IF9yaWdodF9fMDkwXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMDg5XyBfcmlnaHRfXzA5MF9cbiAgICAgIHwgYEJvdGggX2xlZnRfXzA5MV8sIGBCb3RoIF9yaWdodF9fMDkyXyAtPlxuICAgICAgICBsZXQgdF9fMDkzXywgdF9fMDk0XyA9IF9sZWZ0X18wOTFfIGluXG4gICAgICAgIGxldCB0X18wOTVfLCB0X18wOTZfID0gX3JpZ2h0X18wOTJfIGluXG4gICAgICAgIChtYXRjaCBfY21wX19sZWZ0IHRfXzA5M18gdF9fMDk1XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fcmlnaHQgdF9fMDk0XyB0X18wOTZfXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wOTdfIGJfXzA5OF8gLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzA5N18gYl9fMDk4X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDk3XywgYl9fMDk4XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzA5OV8sIGBMZWZ0IF9yaWdodF9fMTAwXyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wOTlfIF9yaWdodF9fMTAwX1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMTAxXywgYFJpZ2h0IF9yaWdodF9fMTAyXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMTAxXyBfcmlnaHRfXzEwMl9cbiAgICAgICAgfCBgQm90aCBfbGVmdF9fMTAzXywgYEJvdGggX3JpZ2h0X18xMDRfIC0+XG4gICAgICAgICAgbGV0IHRfXzEwNV8sIHRfXzEwNl8gPSBfbGVmdF9fMTAzXyBpblxuICAgICAgICAgIGxldCB0X18xMDdfLCB0X18xMDhfID0gX3JpZ2h0X18xMDRfIGluXG4gICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKSAoX2NtcF9fbGVmdCB0X18xMDVfIHRfXzEwN18pIChfY21wX19yaWdodCB0X18xMDZfIHRfXzEwOF8pXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfbGVmdF9fMTA5XyBfb2ZfcmlnaHRfXzExMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgdl9fMTExXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl9sZWZ0X18xMDlfIHZfXzExMV8gXVxuICAgICAgfCBgUmlnaHQgdl9fMTEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2ZfcmlnaHRfXzExMF8gdl9fMTEyXyBdXG4gICAgICB8IGBCb3RoIHZfXzExM18gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCJcbiAgICAgICAgICA7IChsZXQgYXJnMF9fMTE0XywgYXJnMV9fMTE1XyA9IHZfXzExM18gaW5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMTE2XyA9IF9vZl9sZWZ0X18xMDlfIGFyZzBfXzExNF9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMTE3XyA9IF9vZl9yaWdodF9fMTEwXyBhcmcxX18xMTVfIGluXG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMTE2XzsgcmVzMV9fMTE3XyBdKVxuICAgICAgICAgIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3AgKilcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb250aW51ZVxuICAgIHwgU3RvcFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBDb250aW51ZTsgU3RvcCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvbnRpbnVlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbnRpbnVlXCJcbiAgICAgIHwgU3RvcCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdG9wXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZCAqKVxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZpbmlzaGVkXG4gICAgfCBVbmZpbmlzaGVkXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEZpbmlzaGVkOyBVbmZpbmlzaGVkIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmluaXNoZWRcIlxuICAgICAgfCBVbmZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZmluaXNoZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2NtcCBjbXBcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYWRkX2V4blxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHNldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBsaXN0KSBvcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCd2IG9wdGlvbiAtPiAndiBvcHRpb24pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCd2IG9wdGlvbiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmluZCA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3Ygb3B0aW9uKSBvcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIG9wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgbWVtIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOignayBrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigndiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBmb2xkMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhIC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9rZXlzXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ2sga2V5IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCdrLCAnY21wLCAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50KSBvcHRpb25zXG5cbiAgdmFsIGVxdWFsXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGtleSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayBrZXkgKiAndikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbWJpbmU6KGtleTonayBrZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooJ2EgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBtaW46J2sga2V5XG4gICAgICAtPiBtYXg6J2sga2V5XG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbnRoIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAnayBrZXkgKiAndlxuICB2YWwgcmFuayA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBpbnQgb3B0aW9uKSBvcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUga2V5XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgbGlzdCB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5IC0+ICdhIGxpc3QgdFxuICB2YWwgZmluZF9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiBrZXkgLT4gZjooJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiBrZXkgLT4gZjooJ2Egb3B0aW9uIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiAnYSB0XG4gIHZhbCBtZW0gOiBfIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6IF8gdCAtPiBmOihrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyIDogJ2EgdCAtPiAnYiB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTooJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjYyAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkMlxuICAgIDogICdhIHRcbiAgICAtPiAnYiB0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTooJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmlsdGVyX2tleXMgOiAnYSB0IC0+IGY6KGtleSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlcmkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBwYXJ0aXRpb25fbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICgnYiwgJ2MpIEVpdGhlci50KSAtPiAnYiB0ICogJ2MgdFxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gKCdiLCAnYykgRWl0aGVyLnQpIC0+ICdiIHQgKiAnYyB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogJ2EgT3JfZXJyb3IudCB0IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6IF8gdCAtPiBrZXkgbGlzdFxuICB2YWwgZGF0YSA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYWxpc3QgOiA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdIC0+ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2IgdCAtPiBmOihrZXk6a2V5IC0+ICgnYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiAnYyBvcHRpb24pIC0+ICdjIHRcbiAgdmFsIG1lcmdlX3NrZXdlZCA6ICd2IHQgLT4gJ3YgdCAtPiBjb21iaW5lOihrZXk6a2V5IC0+ICd2IC0+ICd2IC0+ICd2KSAtPiAndiB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+IChrZXksICdhKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoa2V5LCAnYSkgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICdhIHQgLT4ga2V5ICogJ2FcbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICdhIHQgLT4ga2V5ICogJ2FcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzcGxpdCA6ICdhIHQgLT4ga2V5IC0+ICdhIHQgKiAoa2V5ICogJ2EpIG9wdGlvbiAqICdhIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDonYSB0XG4gICAgLT4gdXBwZXJfcGFydDonYSB0XG4gICAgLT4gWyBgT2sgb2YgJ2EgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAnYSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6a2V5IE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDprZXkgTWF5YmVfYm91bmQudFxuICAgIC0+ICdhIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAnYSB0XG4gICAgLT4gbWluOmtleVxuICAgIC0+IG1heDprZXlcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKVxuICAgIC0+ICdiXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogJ2EgdCAtPiBtaW46a2V5IC0+IG1heDprZXkgLT4gKGtleSAqICdhKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiBrZXlcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBudGggOiAnYSB0IC0+IGludCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICdhIHQgLT4gaW50IC0+IGtleSAqICdhXG4gIHZhbCByYW5rIDogXyB0IC0+IGtleSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogJ2EgdCAtPiAnYSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOmtleVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86a2V5XG4gICAgLT4gJ2EgdFxuICAgIC0+IChrZXkgKiAnYSkgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KGtleTprZXkgLT4gZGF0YTonYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAnYSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdFxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2EgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIC0+ICdiIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gKCdhLCAnYikgdFxuICB2YWwgdXBkYXRlIDogKCdhLCAnYikgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG1lbSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYikgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudCkgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdhLCAnYiBPcl9lcnJvci50KSB0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcbiAgdmFsIHRvX2FsaXN0IDogP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAtPiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIHNwbGl0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAoJ2EsICdiKSB0ICogKCdhICogJ2IpIG9wdGlvbiAqICgnYSwgJ2IpIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2EsICdiKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2EsICdiKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnYSwgJ2IpIHQgLT4gbWluOidhIC0+IG1heDonYSAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogKCdhLCBfKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgc2V0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+ICdhIC0+ICdiIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgdXBkYXRlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbmQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIG1lbSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfLCAnY21wKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnYSwgJ2IgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYiwgXykgdCAtPiAnYiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnYSwgJ2IsIF8pIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2EsICdiLCBfKSB0IC0+IG1pbjonYSAtPiBtYXg6J2EgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2EsICdiLCBfKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiLCBfKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYiwgXykgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6ICgnYSwgXywgXykgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgc2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgZmluZF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICdiIGxpc3RcblxuICB2YWwgY2hhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmluZCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiXG5cbiAgdmFsIHJlbW92ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG1lbSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8sICdjbXApIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgT3JfZXJyb3IudCwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2IgLT4gJ2IgLT4gaW50KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBrZXlzIDogKCdhLCBfLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IsIF8pIHQgLT4gJ2IgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSAqICdiKSBvcHRpb24gKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsb3dlcl9wYXJ0OignYSwgJ2IsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignYSwgJ2IsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczMgKE0gOiBBY2Nlc3NvcnMzKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2ssICdjbXAsICdrIGtleSAtPiAndiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAgIC0+IGY6KCdrMSBrZXkgLT4gJ2syIGtleSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHQgLT4gZjooJ2sxIGtleSAtPiAnazIga2V5KSAtPiAoJ2syLCAndiwgJ2NtcDIpIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCBsZW46aW50IC0+IGY6KGludCAtPiAnayBrZXkgKiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3QgLT4gaW5pdDondjIgLT4gZjooJ3YyIC0+ICd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+IGY6KCd2IC0+ICd2IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF1cbiAgICAgIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgU2VxdWVuY2UudFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCd2MiAtPiAndjEgLT4gJ3YyKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBmOigndiAtPiAndiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOihmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdCkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YsICdjbXApIHRyZWUgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUga2V5XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogXyB0XG4gIHZhbCBzaW5nbGV0b24gOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgbWFwX2tleXMgOiAndiB0IC0+IGY6KGtleSAtPiBrZXkpIC0+IFsgYE9rIG9mICd2IHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgbWFwX2tleXNfZXhuIDogJ3YgdCAtPiBmOihrZXkgLT4ga2V5KSAtPiAndiB0XG4gIHZhbCBvZl9hbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiBbIGBPayBvZiAnYSB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIGxpc3QgdFxuICB2YWwgb2ZfYWxpc3RfZm9sZCA6IChrZXkgKiAnYSkgbGlzdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2UgOiAoa2V5ICogJ2EpIGxpc3QgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6IChrZXkgKiAnYSkgYXJyYXkgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKGtleSAqICdhKSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+IGtleSAqICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgJ2EgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSBsaXN0IHRcbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGQgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgaXRlcmk6KGY6KGtleTprZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICd2IHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG4gOiBpdGVyaTooZjooa2V5OmtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpIC0+ICd2IHRcbiAgdmFsIG9mX3RyZWUgOiAnYSB0cmVlIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IChfLCBfKSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYiAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMSwgJ3YpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2KSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICB2YWwgbWFwX2tleXNfZXhuIDogKCdrMSwgJ3YpIHQgLT4gZjooJ2sxIC0+ICdrMikgLT4gKCdrMiwgJ3YpIHRcbiAgdmFsIG9mX2FsaXN0IDogKCdhICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgb2ZfYWxpc3RfZm9sZCA6ICgnYSAqICdiKSBsaXN0IC0+IGluaXQ6J2MgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZSA6ICgnYSAqICdiKSBsaXN0IC0+IGY6KCdiIC0+ICdiIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EgKiAnYikgYXJyYXkgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhICogJ2IpIGFycmF5IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EgKiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+IGY6KCdiIC0+ICdiIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuIDogaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdiKSB0cmVlIC0+ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgXywgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSAqICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfdHJlZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMVxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUga2V5IDo9IGtleVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczJcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3RcbiAgICA6ICAobW9kdWxlIENvbXBhcmVfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gaW50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChIYXNoLnN0YXRlIC0+ICd2IC0+IEhhc2guc3RhdGUpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gICgqKiBbTWFwXSBpcyBhIGZ1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmUgKGJhbGFuY2VkIGJpbmFyeSB0cmVlKSBpbXBsZW1lbnRpbmcgZmluaXRlIG1hcHNcbiAgICAgIG92ZXIgYSB0b3RhbGx5LW9yZGVyZWQgZG9tYWluLCBjYWxsZWQgYSBcImtleVwiLiAqKVxuXG4gIHR5cGUgKCdrZXksICsndmFsdWUsICdjbXApIHRcblxuICBtb2R1bGUgT3JfZHVwbGljYXRlID0gT3JfZHVwbGljYXRlXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG4gIG1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkIDogc2lnXG4gICAgdHlwZSB0ID0gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgVW5maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9lbnVtZXJhdGVfbGliLkVudW1lcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogTWFwcyBbQ29udGludWVdIHRvIFtGaW5pc2hlZF0gYW5kIFtTdG9wXSB0byBbVW5maW5pc2hlZF0uICopXG4gICAgdmFsIG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdFxuXG4gICAgKCoqIE1hcHMgW0ZpbmlzaGVkXSB0byBbQ29udGludWVdIGFuZCBbVW5maW5pc2hlZF0gdG8gW1N0b3BdLiAqKVxuICAgIHZhbCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1lcmdlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBib29sXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIGxlZnQgOiAoJ2xlZnQsIF8pIHQgLT4gJ2xlZnQgb3B0aW9uXG4gICAgdmFsIHJpZ2h0IDogKF8sICdyaWdodCkgdCAtPiAncmlnaHQgb3B0aW9uXG4gICAgdmFsIGxlZnRfdmFsdWUgOiAoJ2xlZnQsIF8pIHQgLT4gZGVmYXVsdDonbGVmdCAtPiAnbGVmdFxuICAgIHZhbCByaWdodF92YWx1ZSA6IChfLCAncmlnaHQpIHQgLT4gZGVmYXVsdDoncmlnaHQgLT4gJ3JpZ2h0XG5cbiAgICB2YWwgdmFsdWVzXG4gICAgICA6ICAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gbGVmdF9kZWZhdWx0OidsZWZ0XG4gICAgICAtPiByaWdodF9kZWZhdWx0OidyaWdodFxuICAgICAgLT4gJ2xlZnQgKiAncmlnaHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdCBpZiB0aGUgaW52YXJpYW50cyBvZiB0aGUgaW50ZXJuYWwgQVZMIHNlYXJjaCB0cmVlIGhvbGQuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGMuXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIFRoZSBlbXB0eSBtYXAuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIEEgbWFwIHdpdGggb25lIChrZXksIGRhdGEpIHBhaXIuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC4gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gVGhlIGFjY3VtdWxhdG9yIGlzIHBlci1rZXkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgICMgbGV0IG1hcCA9IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJhXCIsIDE7IFwiYVwiLCAxMDsgXCJiXCIsIDI7IFwiYlwiLCAyMDsgXCJiXCIsIDIwMCBdXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXQ6SW50LlNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgIH5mOlNldC5hZGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X3MgWyVzZXhwIChtYXAgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07O1xuICAgICAgICAoKGEgKDEgMTApKSAoYiAoMiAyMCAyMDApKSlcbiAgICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgXX1cbiAgKilcbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pdGVyaSB+aXRlcmldIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RdLCBleGNlcHQgdGhhdCBpbnN0ZWFkIG9mIHRha2luZyBhIGNvbmNyZXRlXG4gICAgICBkYXRhIHN0cnVjdHVyZSwgaXQgdGFrZXMgYW4gaXRlcmF0aW9uIGZ1bmN0aW9uLiAgRm9yIGluc3RhbmNlLCB0byBjb252ZXJ0IGEgc3RyaW5nIHRhYmxlXG4gICAgICBpbnRvIGEgbWFwOiBbb2ZfaXRlcmkgKG1vZHVsZSBTdHJpbmcpIH5mOihIYXNodGJsLml0ZXJpIHRhYmxlKV0uICBJdCBpcyBmYXN0ZXIgdGhhblxuICAgICAgYWRkaW5nIHRoZSBlbGVtZW50cyBvbmUgYnkgb25lLiAqKVxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGEgc29ydGVkIGFycmF5IG9mIGtleS1kYXRhIHBhaXJzLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZSBzb3J0ZWRcbiAgICAgIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIpLCBhcyBnaXZlbiBieSB0aGUgcmVsZXZhbnQgY29tcGFyYXRvciwgYW5kXG4gICAgICBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzLiBJZiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBkb2VzIG5vdCBob2xkLFxuICAgICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuICAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX3NvcnRlZF9hcnJheV0gZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIG1hcCB3aXRoIGJyb2tlbiBpbnZhcmlhbnRzIHdoZW4gYW5cbiAgICAgIFtFcnJvcl0gd291bGQgaGF2ZSBiZWVuIHJldHVybmVkLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EgKiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9yZWR1Y2UgYyBzZXEgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfcmVkdWNlIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCd2IG9wdGlvbiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG5cbiAgKCoqIFJldHVybnMgW1NvbWUgdmFsdWVdIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIFtOb25lXSBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCByYWlzaW5nIFtDYW1sLk5vdF9mb3VuZF0gb3IgW05vdF9mb3VuZF9zXVxuICAgICAgaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3ZcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBhbnkgYmluZGluZyBmb3IgdGhlIGtleSBpbiBxdWVzdGlvbiByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFttZW0gbWFwIGtleV0gdGVzdHMgd2hldGhlciBbbWFwXSBjb250YWlucyBhIGJpbmRpbmcgZm9yIFtrZXldLiAqKVxuICB2YWwgbWVtIDogKCdrLCBfLCAnY21wKSB0IC0+ICdrIC0+IGJvb2xcblxuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCdrIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgdW50aWwgdGhlIGZpcnN0IHRpbWUgW2ZdIHJldHVybnMgW1N0b3BdLiBJZiBbZl0gcmV0dXJucyBbU3RvcF0sIHRoZSBmaW5hbFxuICAgICAgcmVzdWx0IGlzIFtVbmZpbmlzaGVkXS4gT3RoZXJ3aXNlLCB0aGUgZmluYWwgcmVzdWx0IGlzIFtGaW5pc2hlZF0uICopXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgKCoqIEl0ZXJhdGVzIHR3byBtYXBzIHNpZGUgYnkgc2lkZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBPKE0gKyBOKS4gIElmIHR3b1xuICAgICAgaW5wdXRzIGFyZSBbWygwLCBhKTsgKDEsIGEpXV0gYW5kIFtbKDEsIGIpOyAoMiwgYildXSwgW2ZdIHdpbGwgYmUgY2FsbGVkIHdpdGggW1soMCxcbiAgICAgIGBMZWZ0IGEpOyAoMSwgYEJvdGggKGEsIGIpKTsgKDIsIGBSaWdodCBiKV1dLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICAoKiogTGlrZSBbbWFwX2tleXNdLCBidXQgcmFpc2VzIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkIDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLCB1bnRpbCB0aGUgZmlyc3RcbiAgICAgIHRpbWUgdGhhdCBbZl0gcmV0dXJucyBbU3RvcCBfXS4gSWYgW2ZdIHJldHVybnMgW1N0b3AgZmluYWxdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIFtmaW5hbF0uIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCBhbmQgdGhlIGZpbmFsXG4gICAgICBjYWxsIHRvIFtmXSByZXR1cm5zIFtDb250aW51ZSBsYXN0XSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFtmaW5pc2ggbGFzdF0uICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2MgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYSAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4gKiBsZ1xuICAgICAgbikgdGltZTsgdGhleSBzaW1wbHkgYWNjdW11bGF0ZSBlYWNoIGtleSAmIGRhdGEgcGFpciByZXRhaW5lZCBieSBbZl0gaW50byBhIG5ldyBtYXBcbiAgICAgIHVzaW5nIFthZGRdLiAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCdrIC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXNcbiAgICAgIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKlxuICAgICB7W1xuICAgICAgIHBhcnRpdGlvbmlfdGYgdCB+ZlxuICAgICAgID1cbiAgICAgICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgaWYgZiB+a2V5IH5kYXRhXG4gICAgICAgICB0aGVuIEZpcnN0IGRhdGFcbiAgICAgICAgIGVsc2UgU2Vjb25kIGRhdGEpXG4gICAgIF19ICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBQcm9kdWNlcyBbT2tdIG9mIGEgbWFwIGluY2x1ZGluZyBhbGwga2V5cyBpZiBhbGwgZGF0YSBpcyBbT2tdLCBvciBhbiBbRXJyb3JdXG4gICAgICBpbmNsdWRpbmcgYWxsIGVycm9ycyBvdGhlcndpc2UuICopXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogUmV0dXJucyBhIHRvdGFsIG9yZGVyaW5nIGJldHdlZW4gbWFwcy4gVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgdG90YWwgb3JkZXJpbmcgdXNlZFxuICAgICAgdG8gY29tcGFyZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlcXVhbCBrZXlzIGluIHRoZSB0d28gbWFwcy4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgbWFwcyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBtKS5jb21wYXJlXSBvZiB0aGUgbWFwIFttXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdrIEhhc2guZm9sZGVyIC0+ICd2IEhhc2guZm9sZGVyIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIGNtcCBtMSBtMl0gdGVzdHMgd2hldGhlciB0aGUgbWFwcyBbbTFdIGFuZCBbbTJdIGFyZSBlcXVhbCwgdGhhdCBpcywgY29udGFpblxuICAgICAgdGhlIHNhbWUga2V5cyBhbmQgYXNzb2NpYXRlIGVhY2gga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUuICBbY21wXSBpcyB0aGUgZXF1YWxpdHlcbiAgICAgIHByZWRpY2F0ZSB1c2VkIHRvIGNvbXBhcmUgdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXMuICopXG4gIHZhbCBlcXVhbCA6ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUga2V5cyBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBsaXN0XG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBkYXRhIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICAoKiogQ3JlYXRlcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGZyb20gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAoKiogZGVmYXVsdCBpcyBbYEluY3JlYXNpbmddICopXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIHsyIEFkZGl0aW9uYWwgb3BlcmF0aW9ucyBvbiBtYXBzfSAqKVxuXG4gICgqKiBNZXJnZXMgdHdvIG1hcHMuIFRoZSBydW50aW1lIGlzIE8obGVuZ3RoKHQxKSArIGxlbmd0aCh0MikpLiBZb3Ugc2hvdWxkbid0IHVzZSB0aGlzXG4gICAgICBmdW5jdGlvbiB0byBtZXJnZSBhIGxpc3Qgb2YgbWFwczsgY29uc2lkZXIgdXNpbmcgW21lcmdlX3NrZXdlZF0gaW5zdGVhZC4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIEEgc3BlY2lhbCBjYXNlIG9mIFttZXJnZV0sIFttZXJnZV9za2V3ZWQgdDEgdDJdIGlzIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZVxuICAgICAgYmluZGluZ3Mgb2YgW3QxXSBhbmQgW3QyXS4gQmluZGluZ3MgdGhhdCBhcHBlYXIgaW4gYm90aCBbdDFdIGFuZCBbdDJdIGFyZVxuICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyB0aGUgW2NvbWJpbmVdIGZ1bmN0aW9uLiBJbiBhIGNhbGxcbiAgICAgIFtjb21iaW5lIH5rZXkgdjEgdjJdLCB0aGUgdmFsdWUgW3YxXSBjb21lcyBmcm9tIFt0MV0gYW5kIFt2Ml0gZnJvbSBbdDJdLlxuXG4gICAgICBUaGUgcnVudGltZSBvZiBbbWVyZ2Vfc2tld2VkXSBpcyBbTyhtaW4obDEsIGwyKSAqIGxvZyhtYXgobDEsIGwyKSkpXSwgd2hlcmUgW2wxXSBpc1xuICAgICAgdGhlIGxlbmd0aCBvZiBbdDFdIGFuZCBbbDJdIHRoZSBsZW5ndGggb2YgW3QyXS4gVGhpcyBpcyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW5cbiAgICAgIFttZXJnZV0gd2hlbiBvbmUgb2YgdGhlIG1hcHMgaXMgYSBsb3Qgc21hbGxlciwgb3Igd2hlbiB5b3UgbWVyZ2UgYSBsaXN0IG9mIG1hcHMuICopXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOignYSAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW21pbl9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1pbmltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBbbWF4X2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWF4aW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgW21hcF0gaXMgZW1wdHkuICopXG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydF0gcmV0dXJucyBbYE9rIG1hcF0gd2hlcmUgW21hcF0gY29udGFpbnMgYWxsIHRoZVxuICAgICAgWyhrZXksIHZhbHVlKV0gcGFpcnMgZnJvbSB0aGUgdHdvIGlucHV0IG1hcHMgaWYgYWxsIHRoZSBrZXlzIGZyb20gW2xvd2VyX3BhcnRdIGFyZVxuICAgICAgbGVzcyB0aGFuIGFsbCB0aGUga2V5cyBmcm9tIFt1cHBlcl9wYXJ0XS4gIE90aGVyd2lzZSBpdCByZXR1cm5zXG4gICAgICBbYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNdLlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG4pIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGxhcmdlciBpbnB1dCBtYXAuICBUaGlzIGNhbiBiZVxuICAgICAgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBbTWFwLm1lcmdlXSBvciByZXBlYXRlZCBbTWFwLmFkZF0uXG5cbiAgICAgIHtbXG4gICAgICAgIGFzc2VydCAobWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgfCBgT2sgd2hvbGVfbWFwIC0+XG4gICAgICAgICAgICBNYXAudG9fYWxpc3Qgd2hvbGVfbWFwXG4gICAgICAgICAgICA9IExpc3QuYXBwZW5kICh0b19hbGlzdCBsb3dlcl9wYXJ0KSAodG9fYWxpc3QgdXBwZXJfcGFydClcbiAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IHRydWUpO1xuICAgICAgXX0gKilcbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgKCoqIFtzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRdIHJldHVybnMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlIGVudHJpZXMgZnJvbVxuICAgICAgW3RdIHdob3NlIGtleXMgbGllIGluc2lkZSB0aGUgaW50ZXJ2YWwgaW5kaWNhdGVkIGJ5IFt+bG93ZXJfYm91bmRdIGFuZFxuICAgICAgW351cHBlcl9ib3VuZF0uICBJZiB0aGlzIGludGVydmFsIGlzIGVtcHR5LCBhbiBlbXB0eSBtYXAgaXMgcmV0dXJuZWQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBvdXRwdXQgbWFwLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlXG4gICAgICBvdXRwdXQgbWFwLiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+Zl0gZm9sZHMgW2ZdICh3aXRoIGluaXRpYWwgdmFsdWUgW35pbml0XSlcbiAgICAgIG92ZXIgYWxsIGtleXMgKGFuZCB0aGVpciBhc3NvY2lhdGVkIHZhbHVlcykgdGhhdCBhcmUgaW4gdGhlIHJhbmdlIFtbbWluLCBtYXhdXVxuICAgICAgKGluY2x1c2l2ZSkuICAqKVxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbWluOidrXG4gICAgLT4gbWF4OidrXG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFtyYW5nZV90b19hbGlzdCB0IH5taW4gfm1heF0gcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBsaXN0IG9mIHRoZSBlbGVtZW50cyB3aG9zZSBrZXlzXG4gICAgICBsaWUgaW4gW1ttaW4sIG1heF1dIChpbmNsdXNpdmUpLCB3aXRoIHRoZSBzbWFsbGVzdCBrZXkgYmVpbmcgYXQgdGhlIGhlYWQgb2YgdGhlXG4gICAgICBsaXN0LiAqKVxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayAtPiBtYXg6J2sgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogW2Nsb3Nlc3Rfa2V5IHQgZGlyIGtdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdIHdpdGggW2tleV0gY2xvc2VzdCB0b1xuICAgICAgW2tdIHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbiBpbmVxdWFsaXR5IGJvdW5kLlxuXG4gICAgICBGb3IgZXhhbXBsZSwgW2Nsb3Nlc3Rfa2V5IHQgYExlc3NfdGhhbiBrXSB3b3VsZCBiZSB0aGUgcGFpciB3aXRoIHRoZSBjbG9zZXN0IGtleSB0b1xuICAgICAgW2tdIHdoZXJlIFtrZXkgPCBrXS5cblxuICAgICAgW3RvX3NlcXVlbmNlXSBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIHNhbWUgcmVzdWx0cyBhcyBbY2xvc2VzdF9rZXldLiAgSXQgaXMgbGVzc1xuICAgICAgZWZmaWNpZW50IGZvciBpbmRpdmlkdWFsIGxvb2t1cHMgYnV0IG1vcmUgZWZmaWNpZW50IGZvciBmaW5kaW5nIG1hbnkgZWxlbWVudHMgc3RhcnRpbmdcbiAgICAgIGF0IHNvbWUgdmFsdWUuICopXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2tcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtudGggdCBuXSBmaW5kcyB0aGUgKGtleSwgdmFsdWUpIHBhaXIgb2YgcmFuayBuIChpLmUuLCBzdWNoIHRoYXQgdGhlcmUgYXJlIGV4YWN0bHkgblxuICAgICAga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGZvdW5kIGtleSksIGlmIG9uZSBleGlzdHMuICBPKGxvZyhsZW5ndGggdCkgKyBuKSB0aW1lLiAqKVxuICB2YWwgbnRoIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gJ2sgKiAndlxuXG4gICgqKiBbcmFuayB0IGtdIElmIFtrXSBpcyBpbiBbdF0sIHJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba10gaW5cbiAgICAgIFt0XSwgYW5kIFtOb25lXSBvdGhlcndpc2UuICopXG4gIHZhbCByYW5rIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBpbnQgb3B0aW9uXG5cblxuXG4gICgqKiBbdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XVxuICAgICAgZ2l2ZXMgYSBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgYmV0d2VlbiBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSwgcHJlc2VudGVkIGluIFtvcmRlcl0uICBJZlxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA+IGtleXNfbGVzc19vcl9lcXVhbF90b10sIHRoZSBzZXF1ZW5jZSBpc1xuICAgICAgZW1wdHkuXG5cbiAgICAgIFdoZW4gbmVpdGhlciBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBub3IgW2tleXNfbGVzc19vcl9lcXVhbF90b10gYXJlXG4gICAgICBwcm92aWRlZCwgdGhlIGNvc3QgaXMgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIHRvIHByb2R1Y2VcbiAgICAgIGVhY2ggZWxlbWVudC4gSWYgZWl0aGVyIGlzIHByb3ZpZGVkIChhbmQgaXMgdXNlZCBieSB0aGUgb3JkZXIgcGFyYW1ldGVyXG4gICAgICBwcm92aWRlZCksIHRoZW4gdGhlIHRoZSBjb3N0IGlzIE8obikgdXAgZnJvbnQsIGFuZCBhbW9ydGl6ZWQgTygxKSB0b1xuICAgICAgcHJvZHVjZSBlYWNoIGVsZW1lbnQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzona1xuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdXG4gICAgICBzcGVjaWZpZWQgYnkgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZVxuICAgICAgc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGVcbiAgICAgIGxlZnQgc2VnbWVudCwgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LlxuICAgICAgSXQgcmV0dXJucyBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gaW50IE1hcC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IChTdHJpbmcudCwgaW50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBNYXAuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgW1N0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzc11cbiAgICAgIC0tIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuXG5cbiAgICAgIEluIGFkZGl0aW9uLCB3aGVuIHVzaW5nIFtAQGRlcml2aW5nXSwgdGhlIHJlcXVpcmVtZW50cyBvbiB0aGUga2V5IG1vZHVsZSBhcmUgb25seVxuICAgICAgdGhvc2UgbmVlZGVkIHRvIHNhdGlzZnkgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkZXJpdmUgb24gdGhlIG1hcCBpdHNlbGYuIFNheSB5b3VcbiAgICAgIHdyaXRlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHQgPSBpbnQgTWFwLk0oWCkudCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgXX1cblxuICAgICAgdGhlbiB0aGlzIHdpbGwgYmUgd2VsbCB0eXBlZCBleGFjdGx5IGlmIFtYXSBjb250YWlucyBhdCBsZWFzdDpcbiAgICAgIC0gYSB0eXBlIFt0XSB3aXRoIG5vIHBhcmFtZXRlcnNcbiAgICAgIC0gYSBjb21wYXJhdG9yIHdpdG5lc3NcbiAgICAgIC0gYSBbaGFzaF9mb2xkX3RdIGZ1bmN0aW9uIHdpdGggdGhlIHJpZ2h0IHR5cGUgKilcbiAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdrZXksICd2YWx1ZSwgJ2NtcCkgdCA6PSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0XG5cbiAgKCoqIFtVc2luZ19jb21wYXJhdG9yXSBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbTWFwXSwgZXhjZXB0IHRoZVxuICAgICAgZnVuY3Rpb25zIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRdLCB3aGVyZWFzIHRoZSBmdW5jdGlvbnMgYXQgdGhlXG4gICAgICB0b3BsZXZlbCBvZiBbTWFwXSB0YWtlIGEgWygnaywgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdrLCArJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgrJ2ssICsndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfLCBfKSB0XG5cbiAgICAgICgqKiBbQnVpbGRfaW5jcmVhc2luZ10gY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWFwIGluY3JlbWVudGFsbHkgZnJvbSBhXG4gICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyBrbm93biB0byBiZSBpbmNyZWFzaW5nLlxuXG4gICAgICAgICAgVGhlIHRvdGFsIHRpbWUgY29tcGxleGl0eSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXAgdGhpcyB3YXkgaXMgTyhuKSwgd2hpY2ggaXMgbW9yZVxuICAgICAgICAgIGVmZmljaWVudCB0aGFuIHVzaW5nIFtNYXAuYWRkXSBieSBhIGxvZ2FyaXRobWljIGZhY3Rvci5cblxuICAgICAgICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgZHVhbCBvZiBbdG9fc2VxdWVuY2VdLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIGFuIGVxdWFsbHkgbmVhdCBpZGlvbSBmb3IgdGhlIGR1YWxzIG9mIHNlcXVlbmNlcyAoW29mX3NlcXVlbmNlXSBpcyBtdWNoIGxlc3NcbiAgICAgICAgICBnZW5lcmFsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHNlcXVlbmNlIHRvIGJlIHByb2R1Y2VkIGFzeW5jaHJvbm91c2x5KS4gKilcbiAgICAgIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nIDogc2lnXG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgdHlwZSAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgIHZhbCBlbXB0eSA6ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBvZiBbYWRkX2V4bl0gaXMgYW1vcnRpemVkIGNvbnN0YW50LXRpbWUgKGlmIFt0XSBpcyB1c2VkXG4gICAgICAgICAgICBsaW5lYXJseSksIHdpdGggYSB3b3JzdC1jYXNlIE8obG9nKG4pKSB0aW1lLiAqKVxuICAgICAgICB2YWwgYWRkX2V4blxuICAgICAgICAgIDogICgnaywgJ3YsICd3KSB0XG4gICAgICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICd3KSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiBrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOid2XG4gICAgICAgICAgLT4gKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IGlzIE8obG9nKG4pKS4gKilcbiAgICAgICAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAndykgdCAtPiAoJ2ssICd2LCAndykgdHJlZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gQWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gQWNjZXNzb3JzMlxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gQWNjZXNzb3JzM1xuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gQ3JlYXRvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IENyZWF0b3JzMlxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuR2VuZXJpY19waGFudG9tXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFtvcHRpb25zXSB0eXBlIGlzIHVzZWQgdG8gbWFrZSBbQWNjZXNzb3JzX2dlbmVyaWNdIGZsZXhpYmxlIGFzIHRvIHdoZXRoZXIgYVxuICAgICAgY29tcGFyYXRvciBpcyByZXF1aXJlZCB0byBiZSBwYXNzZWQgdG8gY2VydGFpbiBmdW5jdGlvbnMuICopXG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgaW52YXJpYW50cyA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIG9wdGlvbnNcblxuICB2YWwgYWRkIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludCkgb3B0aW9uc1xuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIG5hbWVkIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSBuYW1lZCAtPiAoJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudCkgb3B0aW9uc1xuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSBlbHQgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYiAtPiBmOignYSBlbHQgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgZWx0IHwgYFJpZ2h0IG9mICdhIGVsdCB8IGBCb3RoIG9mICdhIGVsdCAqICdhIGVsdCBdIC0+IHVuaXQpXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICdhIGVsdCBvcHRpb24gKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0XG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAna2V5IC0+IGludClcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCdhIGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EgZWx0LCAnYSBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzBcblxuICB0eXBlIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IHQgLT4gYm9vbFxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuICB2YWwgYWRkIDogdCAtPiBlbHQgLT4gdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBlbHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6IHQgLT4gdCAtPiAoZWx0LCBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogdCAtPiBvZl86dCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiB0IC0+IHQgLT4gYm9vbFxuXG4gIHR5cGUgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogbmFtZWQgLT4gb2ZfOm5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6IG5hbWVkIC0+IG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gZWx0IC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogdCAtPiBpbml0OidiIC0+IGY6KGVsdCAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICB0XG4gICAgLT4gdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgZWx0IHwgYFJpZ2h0IG9mIGVsdCB8IGBCb3RoIG9mIGVsdCAqIGVsdCBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiB0ICogdFxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6IHQgLT4gZWx0XG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6IHQgLT4gZWx0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiB0IC0+IGVsdFxuICB2YWwgc3BsaXQgOiB0IC0+IGVsdCAtPiB0ICogZWx0IG9wdGlvbiAqIHRcbiAgdmFsIGdyb3VwX2J5IDogdCAtPiBlcXVpdjooZWx0IC0+IGVsdCAtPiBib29sKSAtPiB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gZWx0XG4gIHZhbCBudGggOiB0IC0+IGludCAtPiBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiB0IC0+IGludCAtPiB0XG4gIHZhbCB0b190cmVlIDogdCAtPiB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gdFxuICAgIC0+IGVsdCBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICB0XG4gICAgLT4gY29tcGFyZTooZWx0IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzplbHRcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzplbHRcbiAgICAtPiB0XG4gICAgLT4gdFxuICAgIC0+IChlbHQsIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxXG5cbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiBfIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgaW50ZXIgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6ICdhIHQgLT4gb2ZfOidhIHQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICB0eXBlICdhIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6ICdhIG5hbWVkIC0+IG9mXzonYSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiAnYSBuYW1lZCAtPiAnYSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBlbGVtZW50cyA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNwbGl0IDogJ2EgdCAtPiAnYSAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgZ3JvdXBfYnkgOiAnYSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAnYSB0IC0+IGludCAtPiAnYSB0XG4gIHZhbCB0b190cmVlIDogJ2EgdCAtPiAnYSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICdhIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMV9waGFudG9tX2ludmFyaWFudFxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIG5hbWVkIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgbmFtZWQgLT4gKCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYiAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3BoYW50b21faW52YXJpYW50XG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHVuaW9uXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBpbnRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWwgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBpc19zdWJzZXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gb2ZfOignYSwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgYXJlX2Rpc2pvaW50XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiBvZl86KCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2EgLT4gJ2FjY3VtIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICB2YWwgc3BsaXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHJlbW92ZV9pbmRleFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBpbnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKE5hbWVkIDogVDIpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczAgKE0gOiBBY2Nlc3NvcnMwKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXAsICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOihpbnQgLT4gJ2EgZWx0KSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8sICdhIGVsdCBsaXN0IC0+ICdhIGVsdCBsaXN0KSBvcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBlbHQpIC0+ICgnYiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIGVsdCBvcHRpb24pIC0+ICgnYiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgdFxuICB0eXBlIHRyZWVcbiAgdHlwZSBlbHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBzaW5nbGV0b24gOiBlbHQgLT4gdFxuICB2YWwgdW5pb25fbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiBlbHQgU2VxdWVuY2UudCAtPiB0XG4gIHZhbCBvZl9hcnJheSA6IGVsdCBhcnJheSAtPiB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogZWx0IGFycmF5IC0+IHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gZWx0KSAtPiB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6IGVsdCBsaXN0IC0+IGVsdCBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiBlbHQpIC0+IHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiBlbHQgb3B0aW9uKSAtPiB0XG4gIHZhbCBvZl90cmVlIDogdHJlZSAtPiB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAnYSBTZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogJ2EgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBvZl90cmVlIDogJ2EgdHJlZSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICgnYiwgJ2NtcCkgdFxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICB2YWwgbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2IsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgc2V0XG4gICAgLT4gZjooJ2EgLT4gJ2IpXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYiwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBzZXRcbiAgICAtPiBmOignYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3RyZWUgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMCAoTSA6IENyZWF0b3JzMCkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczBcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgd2l0aCB0eXBlIHRyZWUgOj0gdHJlZVxuICAgIHdpdGggdHlwZSBlbHQgOj0gZWx0XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczFcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMlxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdCA6IChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsICdjbXApIHQgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gKCdlbHQsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190IDogKG1vZHVsZSBDb21wYXJlX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWxfbV9fdCA6IChtb2R1bGUgRXF1YWxfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2VsdCwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcblxuICB2YWwgaGFzaF9tX190IDogKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCBfKSB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICAoKiogU2V0cyBiYXNlZCBvbiB7IUNvbXBhcmF0b3IuU30uXG5cbiAgICAgIENyZWF0b3JzIHJlcXVpcmUgYSBjb21wYXJhdG9yIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCBpbiwgd2hlcmVhcyBhY2Nlc3NvcnMgdXNlIHRoZVxuICAgICAgY29tcGFyYXRvciBwcm92aWRlZCBieSB0aGUgaW5wdXQgc2V0LiAqKVxuXG4gICgqKiBUaGUgdHlwZSBvZiBhIHNldC4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LCBhbmRcbiAgICAgIHRoZSBzZWNvbmQgaWRlbnRpZmllcyB0aGUgY29tcGFyYXRvciwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiB0aGF0XG4gICAgICBpcyB1c2VkIGZvciBvcmRlcmluZyBlbGVtZW50cyBpbiB0aGlzIHNldC4gIE1hbnkgb3BlcmF0aW9ucyAoZS5nLiwgeyF1bmlvbn0pLFxuICAgICAgcmVxdWlyZSB0aGF0IHRoZXkgYmUgcGFzc2VkIHNldHMgd2l0aCB0aGUgc2FtZSBlbGVtZW50IHR5cGUgYW5kIHRoZSBzYW1lIGNvbXBhcmF0b3JcbiAgICAgIHR5cGUuICopXG4gIHR5cGUgKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHQgOj0gKCdlbHQsICdjbXApIHRcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3RzIGludGVybmFsIGludmFyaWFudHMgb2YgdGhlIHNldCBkYXRhIHN0cnVjdHVyZS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIENyZWF0ZXMgYW4gZW1wdHkgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IgdGhhdCBjb250YWlucyBvbmx5IHRoZSBwcm92aWRlZFxuICAgICAgZWxlbWVudC4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlIHNldC4gW08oMSldLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFtpc19lbXB0eSB0XSBpcyBbdHJ1ZV0gaWZmIFt0XSBpcyBlbXB0eS4gIFtPKDEpXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbWVtIHQgYV0gcmV0dXJucyBbdHJ1ZV0gaWZmIFthXSBpcyBpbiBbdF0uICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcblxuICAoKiogW2FkZCB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIGFkZGVkIHRvIFt0XSwgb3IgcmV0dXJucyBbdF0gaWYgW21lbSB0IGFdLlxuICAgICAgW08obG9nIG4pXS4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3JlbW92ZSB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIHJlbW92ZWQgZnJvbSBbdF0gaWYgW21lbSB0IGFdLCBvciByZXR1cm5zIFt0XVxuICAgICAgb3RoZXJ3aXNlLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIHQxIHQyXSByZXR1cm5zIHRoZSB1bmlvbiBvZiB0aGUgdHdvIHNldHMuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIGMgbGlzdF0gcmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHRoZSBzZXRzIGluIFtsaXN0XS4gIFRoZVxuICAgICAgW2NvbXBhcmF0b3JdIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBbbGlzdF0gaXMgZW1wdHkuXG4gICAgICBbTyhtYXgoTGlzdC5sZW5ndGggbGlzdCwgbiBsb2cgbikpXSwgd2hlcmUgW25dIGlzIHRoZSBzdW0gb2Ygc2l6ZXMgb2YgdGhlIGlucHV0IHNldHMuICopXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaW50ZXIgdDEgdDJdIGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2Ygc2V0cyBbdDFdIGFuZCBbdDJdLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildLiAqKVxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZGlmZiB0MSB0Ml0gY29tcHV0ZXMgdGhlIHNldCBkaWZmZXJlbmNlIFt0MSAtIHQyXSwgaS5lLiwgdGhlIHNldCBjb250YWluaW5nIGFsbFxuICAgICAgZWxlbWVudHMgaW4gW3QxXSB0aGF0IGFyZSBub3QgaW4gW3QyXS4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0Ml0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLiBJdCBpc1xuICAgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnQgb2ZcbiAgICAgIHN0cnVjdHVyZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtjb21wYXJlX2RpcmVjdCB0MSB0Ml0gY29tcGFyZXMgdGhlIHNldHMgW3QxXSBhbmQgW3QyXS4gIEl0IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0XG4gICAgICBhcyBbY29tcGFyZV0sIGJ1dCB1bmxpa2UgY29tcGFyZSwgZG9lc24ndCByZXF1aXJlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW4gZm9yIHRoZVxuICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXQuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHNldHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgcykuY29tcGFyZV0gb2YgdGhlIHNldCBbc10gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnYSBIYXNoLmZvbGRlciAtPiAoJ2EsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlIHR3byBzZXRzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMuICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0gKilcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtleGlzdHMgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZXJlIGV4aXN0cyBhbiBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhXS4gIFtPKG4pXSxcbiAgICAgIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbZiBhXS4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFtjb3VudCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyBbdHJ1ZV0uXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogW3N1bSB0XSByZXR1cm5zIHRoZSBzdW0gb2YgW2YgdF0gZm9yIGVhY2ggW3RdIGluIHRoZSBzZXQuXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtmaW5kX21hcCB0IGZdIHJldHVybnMgW2JdIGZvciBzb21lIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGEgPSBTb21lIGJdLiAgSWYgbm8gc3VjaFxuICAgICAgW2FdIGV4aXN0cywgdGhlbiBbZmluZF0gcmV0dXJucyBbTm9uZV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZVxuICAgICAgZWxlbWVudCBpcyBmb3VuZC4gKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIExpa2UgW2ZpbmRdLCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgdn1cblxuICAgICAgc28gW25hbWVdIHNob3VsZCBiZSBhIG5vdW4gcGhyYXNlIHRoYXQgZG9lc24ndCBzb3VuZCBhd2t3YXJkIGluIHRoZSBhYm92ZSBlcnJvclxuICAgICAgbWVzc2FnZS4gIEV2ZW4gdGhvdWdoIGl0IGFkZHMgdmVyYm9zaXR5LCBjaG9vc2luZyBbbmFtZV1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgcGhyYXNlXG4gICAgICBcInRoZSBzZXQgb2ZcIiBvZnRlbiBtYWtlcyB0aGUgZXJyb3IgbWVzc2FnZSBzb3VuZCBtb3JlIG5hdHVyYWwuXG4gICopXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHNldCA6ICgnYSwgJ2NtcCkgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgZXF1YWwgdG8gW3QyXSBhbmQgYSBodW1hbi1yZWFkYWJsZVxuICAgICAgICBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gICgqKiBUaGUgbGlzdCBvciBhcnJheSBnaXZlbiB0byBbb2ZfbGlzdF0gYW5kIFtvZl9hcnJheV0gbmVlZCBub3QgYmUgc29ydGVkLiAqKVxuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt0b19saXN0XSBhbmQgW3RvX2FycmF5XSBwcm9kdWNlIHNlcXVlbmNlcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGFjY29yZGluZyB0byB0aGVcbiAgICAgIGNvbXBhcmF0b3IuICopXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogQ3JlYXRlIHNldCBmcm9tIHNvcnRlZCBhcnJheS4gIFRoZSBpbnB1dCBtdXN0IGJlIHNvcnRlZCAoZWl0aGVyIGluIGFzY2VuZGluZyBvclxuICAgICAgZGVzY2VuZGluZyBvcmRlciBhcyBnaXZlbiBieSB0aGUgY29tcGFyYXRvcikgYW5kIGNvbnRhaW4gbm8gZHVwbGljYXRlcywgb3RoZXJ3aXNlIHRoZVxuICAgICAgcmVzdWx0IGlzIGFuIGVycm9yLiAgVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBbTyhuKV0uICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFNpbWlsYXIgdG8gW29mX3NvcnRlZF9hcnJheV0sIGJ1dCB3aXRob3V0IGNoZWNraW5nIHRoZSBpbnB1dCBhcnJheS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N0YWJsZV9kZWR1cF9saXN0XSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBbTGlzdF0gbW9kdWxlIGJlY2F1c2UgdGhlXG4gICAgICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgY3J1Y2lhbGx5IG9uIHNldHMsIGFuZCBiZWNhdXNlIGRvaW5nIHNvIGFsbG93cyBvbmUgdG8gYXZvaWQgdXNlc1xuICAgICAgb2YgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBieSBpbnN0YW50aWF0aW5nIHRoZSBmdW5jdG9yIGF0IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uXG4gICAgICBvZiBbQ29tcGFyYXRvcl0gYW5kIHVzaW5nIHRoZSByZXN1bHRpbmcgW3N0YWJsZV9kZWR1cF9saXN0XS4gKilcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICgqKiBbbWFwIGMgdCB+Zl0gcmV0dXJucyBhIG5ldyBzZXQgY3JlYXRlZCBieSBhcHBseWluZyBbZl0gdG8gZXZlcnkgZWxlbWVudCBpblxuICAgICAgW3RdLiAgVGhlIHJldHVybmVkIHNldCBpcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgW2NvbXBhcmF0b3JdLiAgW08obiBsb2cgbildLiAqKVxuICB2YWwgbWFwIDogKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIHRoZSBzdWJzZXQgb2YgW3RdIGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICBbTyhuIGxvZ1xuICAgICAgbildLiAqKVxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdC4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LCBzaG9ydCBjaXJjdWl0aW5nIHRoZSBmb2xkIGlmIFtmIGFjY3VtIHhdIGlzIGFuIFtFcnJvciBfXSAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhIC0+ICdhY2N1bSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbaXRlciB0IH5mXSBjYWxscyBbZl0gb24gZXZlcnkgZWxlbWVudCBvZiBbdF0sIGdvaW5nIGluIG9yZGVyIGZyb20gdGhlIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LiAgKilcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIGlmIFthLCBiID0gcGFydGl0aW9uX3RmIHNldCB+Zl0gdGhlbiBbYV0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlZCBbdHJ1ZV0sXG4gICAgICBhbmQgW2JdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZXMgW2ZhbHNlXS4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0gd2hlcmUgW3QxXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzXG4gICAgICBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLCBbbWF5YmVfeF0gaXMgdGhlIG1lbWJlciAoaWYgYW55KSBvZiBbdF0gd2hpY2ggY29tcGFyZXMgZXF1YWxcbiAgICAgIHRvIFt4XSwgYW5kIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gICgqKiBbdG9fc2VxdWVuY2UgdF0gY29udmVydHMgdGhlIHNldCBbdF0gdG8gYSBzZXF1ZW5jZSBvZiB0aGUgZWxlbWVudHMgYmV0d2VlblxuICAgICAgW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZCBbbGVzc19vcl9lcXVhbF90b10gaW5jbHVzaXZlIGluIHRoZSBvcmRlciBpbmRpY2F0ZWQgYnlcbiAgICAgIFtvcmRlcl0uICBJZiBbZ3JlYXRlcl9vcl9lcXVhbF90byA+IGxlc3Nfb3JfZXF1YWxfdG9dIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eS4gIENvc3QgaXNcbiAgICAgIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSBmb3IgZWFjaCBlbGVtZW50IHByb2R1Y2VkLiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgZWxlbWVudCBpbiBbdF0gc3BlY2lmaWVkIGJ5XG4gICAgICBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWdtZW50cyBhc1xuICAgICAgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGVmdCBzZWdtZW50LFxuICAgICAgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LiAgSXQgcmV0dXJuc1xuICAgICAgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgICAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgICAgIHsgdHJlZSA6ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgICAgIH1cblxuICAgICAgICB2YWwgaXNfc3Vic2V0XG4gICAgICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IG9mXzooJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgICB2YWwgZXF1YWxcbiAgICAgICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuICAgICAgICB3aXRoIG1vZHVsZSBOYW1lZCA6PSBOYW1lZFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfKSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMyXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdlbHQgSGFzaC5mb2xkZXIgLT4gKCdlbHQsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMCA9IEFjY2Vzc29yczBcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IEFjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IEFjY2Vzc29yczJcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IENyZWF0b3JzMFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBDcmVhdG9yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gQ3JlYXRvcnMyXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgPSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczBcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID1cbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V0X2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEVtcHR5XG4gICAgKCogKExlYWYgeCkgaXMgdGhlIHNhbWUgYXMgKE5vZGUgKEVtcHR5LCB4LCBFbXB0eSwgMSwgMSkpIGJ1dCB1c2VzIGxlc3Mgc3BhY2UuICopXG4gICAgfCBMZWFmIG9mICdhXG4gICAgKCogZmlyc3QgaW50IGlzIGhlaWdodCwgc2Vjb25kIGlzIHN1Yi10cmVlIHNpemUgKilcbiAgICB8IE5vZGUgb2YgJ2EgdCAqICdhICogJ2EgdCAqIGludCAqIGludFxuXG4gIHR5cGUgJ2EgdHJlZSA9ICdhIHRcblxuICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZSBjaGlsZHJlbiBkaWZmZXIgYnlcbiAgICAgYXQgbW9zdCAyLiAqKVxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdiA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfZWx0IGxvd2VyIHYgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9lbHQgdiB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgdiAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIGgsIG4pIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBuID0gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIHYpIGNvbXBhcmVfZWx0IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSB2KSB1cHBlciBjb21wYXJlX2VsdCByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9lbHQgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9lbHQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2VcbiAgOztcblxuICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgaWYgaCA9IDFcbiAgICB0aGVuIExlYWYgdlxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuU2V0IG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrID0gZiBpIGluXG4gICAgICAgIExlYWYga1xuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgRW1wdHlcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyID0gZiAoaSArIDIpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayAoTGVhZiBrcilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgICgqIFdlIGRvbid0IGNoZWNrIGlmIHRoZSBhcnJheSBpcyBzb3J0ZWQgb3Iga2V5cyBhcmUgZHVwbGljYXRlZCwgYmVjYXVzZSB0aGF0XG4gICAgICAgICBjaGVja2luZyBpcyBzbG93ZXIgdGhhbiB0aGUgd2hvbGUgW29mX3NvcnRlZF9hcnJheV0gZnVuY3Rpb24gKilcbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDIgfHwgY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHRcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT4gUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdClcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oaSkgYXJyYXkuKGkgKyAxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KSlcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgbGV0IGJhbCBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChsKT5oKHIpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgbHJ2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IGxsKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IEVtcHR5KSBscnYgKGNyZWF0ZSBFbXB0eSB2IHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKHIpPmgobCkrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBybHYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgcnIpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IEVtcHR5KSBybHYgKGNyZWF0ZSBFbXB0eSBydiBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycikpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBpZiBoID0gMSB0aGVuIExlYWYgdiBlbHNlIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICBleGNlcHRpb24gU2FtZVxuXG4gIGxldCBhZGQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gcmFpc2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJhaXNlIFNhbWUgZWxzZSBpZiBjIDwgMCB0aGVuIGJhbCAoYXV4IGwpIHYgciBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IGFkZCByIHYgfmNvbXBhcmVfZWx0XG4gICAgfCBfLCBFbXB0eSAtPiBhZGQgbCB2IH5jb21wYXJlX2VsdFxuICAgIHwgTGVhZiBsdiwgXyAtPiBhZGQgKGFkZCByIHYgfmNvbXBhcmVfZWx0KSBsdiB+Y29tcGFyZV9lbHRcbiAgICB8IF8sIExlYWYgcnYgLT4gYWRkIChhZGQgbCB2IH5jb21wYXJlX2VsdCkgcnYgfmNvbXBhcmVfZWx0XG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBsaCwgXyksIE5vZGUgKHJsLCBydiwgcnIsIHJoLCBfKSAtPlxuICAgICAgaWYgbGggPiByaCArIDJcbiAgICAgIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgciB+Y29tcGFyZV9lbHQpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAyXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIHYgcmwgfmNvbXBhcmVfZWx0KSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZVxuICAgICAgfCBOb2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiBsZWZ0IGFjYyB3aXRoXG4gICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiBhY2MgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgICAgfCBDb250aW51ZSBhIC0+IGZvbGRfdW50aWxfaGVscGVyIH5mIHJpZ2h0IGEpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBpbml0IHdpdGhcbiAgICB8IENvbnRpbnVlIHggLT4gZmluaXNoIHhcbiAgICB8IFN0b3AgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKF8sIHYsIEVtcHR5LCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIF8sIHIsIF8sIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBiYWwgdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcbiAgbGV0IGNvbmNhdCB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MikgfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgc3BsaXQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBTb21lIHYsIEVtcHR5XG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgTGVhZiB2XG4gICAgICAgIGVsc2UgTGVhZiB2LCBOb25lLCBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGwsIFNvbWUgdiwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsbCwgbWF5YmVfZWx0LCBybCA9IHNwbGl0IGwgaW5cbiAgICAgICAgICBsbCwgbWF5YmVfZWx0LCBqb2luIHJsIHYgciB+Y29tcGFyZV9lbHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsciwgbWF5YmVfZWx0LCByciA9IHNwbGl0IHIgaW5cbiAgICAgICAgICBqb2luIGwgdiBsciB+Y29tcGFyZV9lbHQsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgcmVjIG1lbSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMFxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMCB8fCBtZW0gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gTGVhZiB4XG5cbiAgbGV0IHJlbW92ZSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBTYW1lXG4gICAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPSAwIHRoZW4gRW1wdHkgZWxzZSByYWlzZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBTYW1lXG4gICAgICB8IExlYWYgXyAtPiBpZiBpID0gMCB0aGVuIEVtcHR5IGVsc2UgcmFpc2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwgaSkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgICBpblxuICAgIHRyeSBhdXggdCBpIHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCB1bmlvbiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgICAgIHwgTGVhZiB2MSwgXyAtPiB1bmlvbiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHMyXG4gICAgICAgIHwgXywgTGVhZiB2MiAtPiB1bmlvbiBzMSAoTm9kZSAoRW1wdHksIHYyLCBFbXB0eSwgMSwgMSkpXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgaDEsIF8pLCBOb2RlIChsMiwgdjIsIHIyLCBoMiwgXykgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMlxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMVxuICAgICAgICAgICAgdGhlbiBhZGQgczEgdjIgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGwyLCBfLCByMiA9IHNwbGl0IHMyIHYxIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKSB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgZWxzZSBpZiBoMSA9IDFcbiAgICAgICAgICB0aGVuIGFkZCBzMiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsMSwgXywgcjEgPSBzcGxpdCBzMSB2MiB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgfCBsMiwgU29tZSB2MSwgcjIgLT4gam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIGludGVyIHMxIHMyXG4gIDs7XG5cbiAgbGV0IGRpZmYgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBFbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gLT4gRW1wdHlcbiAgICAgICAgfCB0MSwgRW1wdHkgLT4gdDFcbiAgICAgICAgfCBMZWFmIHYxLCB0MiAtPiBkaWZmIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgdDJcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpIH5jb21wYXJlX2VsdFxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICBkaWZmIHMxIHMyXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdhLCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2EgKiAnYSB0cmVlICogKCdhLCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgcyAoZSA6IChfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29ucyBsIChNb3JlICh2LCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHMgKGUgOiAoXywgZGVjcmVhc2luZykgdCkgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXQgcyA6IChfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyBzIEVuZFxuICAgIGxldCBvZl9zZXRfcmlnaHQgcyA6IChfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCBzIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCByLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCBsIChNb3JlICh2LCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBlMSBlMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgZTEgZTJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpdGVyIH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+ICgpXG4gICAgICB8IE1vcmUgKGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGYgYTtcbiAgICAgICAgaXRlciAoY29ucyB0cmVlIGVudW0pIH5mXG4gICAgOztcblxuICAgIGxldCBpdGVyMiBjb21wYXJlX2VsdCB0MSB0MiB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+ICgpXG4gICAgICAgIHwgRW5kLCBfIC0+IGl0ZXIgdDIgfmY6KGZ1biBhIC0+IGYgKGBSaWdodCBhKSlcbiAgICAgICAgfCBfLCBFbmQgLT4gaXRlciB0MSB+ZjooZnVuIGEgLT4gZiAoYExlZnQgYSkpXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBzdGVwIHN0YXRlIDogKChfLCBfKSBFaXRoZXIudCwgXykgU2VxdWVuY2UuU3RlcC50ID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IERvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGVsdCwgdHJlZSwgZW51bSkgLT4gWWllbGQgKFNlY29uZCBlbHQsIChFbmQsIGNvbnMgdHJlZSBlbnVtKSlcbiAgICAgICAgfCBNb3JlIChlbHQsIHRyZWUsIGVudW0pLCBFbmQgLT4gWWllbGQgKEZpcnN0IGVsdCwgKGNvbnMgdHJlZSBlbnVtLCBFbmQpKVxuICAgICAgICB8IChNb3JlIChhMSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU2tpcCBuZXh0X3N0YXRlKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBZaWVsZCAoRmlyc3QgYTEsIChjb25zIHRyZWUxIGVudW0xLCByaWdodCkpXG4gICAgICAgICAgZWxzZSBZaWVsZCAoU2Vjb25kIGEyLCAobGVmdCwgY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KG9mX3NldCB0MSwgb2Zfc2V0IHQyKSB+ZjpzdGVwXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoaywgRW51bS5jb25zIHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKGssIEVudW0uY29uc19yaWdodCB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXRfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVsdCAtPiBhZGQgdCBlbHQgfmNvbXBhcmVfZWx0XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBsZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0OmdyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpsZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMClcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IHggPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHRcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0ID0gRW51bS5pdGVyMiBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgbGV0IGVxdWFsIHMxIHMyIH5jb21wYXJlX2VsdCA9IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPSAwXG5cbiAgbGV0IGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpc19zdWJzZXQgczEgfm9mXzpzMiA9XG4gICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgfCBFbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IExlYWYgdjEsIHQyIC0+IG1lbSB0MiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIExlYWYgdjIgLT5cbiAgICAgICAgKG1hdGNoIGwxLCByMSB3aXRoXG4gICAgICAgICB8IEVtcHR5LCBFbXB0eSAtPlxuICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkbid0IG9jY3VyIGluIHByYWN0aWNlIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgY29uc3RydWN0ZWRcbiAgICAgICAgICAgICAgYSBMZWFmIHJhdGhlciB0aGFuIGEgTm9kZSB3aXRoIHR3byBFbXB0eSBzdWJ0cmVlcyAqKVxuICAgICAgICAgICBjb21wYXJlX2VsdCB2MSB2MiA9IDBcbiAgICAgICAgIHwgXywgXyAtPiBmYWxzZSlcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIChOb2RlIChsMiwgdjIsIHIyLCBfLCBfKSBhcyB0MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgcGh5c19lcXVhbCBzMSBzMiB8fCAoaXNfc3Vic2V0IGwxIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86cjIpXG4gICAgICAgICAgKCogTm90ZSB0aGF0IGhlaWdodCBhbmQgc2l6ZSBkb24ndCBtYXR0ZXIgaGVyZS4gKilcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGlzX3N1YnNldCAoTm9kZSAobDEsIHYxLCBFbXB0eSwgMCwgMCkpIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86dDJcbiAgICAgICAgZWxzZSBpc19zdWJzZXQgKE5vZGUgKEVtcHR5LCB2MSwgcjEsIDAsIDApKSB+b2ZfOnIyICYmIGlzX3N1YnNldCBsMSB+b2ZfOnQyXG4gICAgaW5cbiAgICBpc19zdWJzZXQgczEgfm9mXzpzMlxuICA7O1xuXG4gIGxldCByZWMgYXJlX2Rpc2pvaW50IHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBlbHQsIG90aGVyX3NldCB8IG90aGVyX3NldCwgTGVhZiBlbHQgLT4gbm90IChtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQpXG4gICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICB8IGwyLCBOb25lLCByMiAtPlxuICAgICAgICAgIGFyZV9kaXNqb2ludCBsMSBsMiB+Y29tcGFyZV9lbHQgJiYgYXJlX2Rpc2pvaW50IHIxIHIyIH5jb21wYXJlX2VsdFxuICAgICAgICB8IF8sIFNvbWUgXywgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGl0ZXIgbDtcbiAgICAgICAgZiB2O1xuICAgICAgICBpdGVyIHJcbiAgICBpblxuICAgIGl0ZXIgdFxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+IGlmIHAgdiB0aGVuIGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0IGVsc2UgYWNjdVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0IChmaWx0IChpZiBwIHYgdGhlbiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdCBlbHNlIGFjY3UpIGwpIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgc1xuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHRcbiAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgc1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBwYXJ0ICgodCwgZikgYXMgYWNjdSkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPiBpZiBwIHYgdGhlbiBhZGQgdCB2IH5jb21wYXJlX2VsdCwgZiBlbHNlIHQsIGFkZCBmIHYgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIHBhcnQgKHBhcnQgKGlmIHAgdiB0aGVuIGFkZCB0IHYgfmNvbXBhcmVfZWx0LCBmIGVsc2UgdCwgYWRkIGYgdiB+Y29tcGFyZV9lbHQpIGwpIHJcbiAgICBpblxuICAgIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9IGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCAoZiB4KSB+Y29tcGFyZV9lbHQpXG5cbiAgbGV0IGdyb3VwX2J5IHNldCB+ZXF1aXYgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KSB+Y29tcGFyZV9lbHRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBub3RfZXF1aXZfeCAoZXF1aXZfeCA6OiBlcXVpdl9jbGFzc2VzKSlcbiAgICBpblxuICAgIGxvb3Agc2V0IFtdXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgdHJlZSA6ICdhIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgbGV0IGlzX3N1YnNldCAoc3Vic2V0IDogXyB0KSB+b2ZfOihzdXBlcnNldCA6IF8gdCkgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnRyZWUgc3VwZXJzZXQudHJlZSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGlzX2VtcHR5IGludmFsaWRfZWxlbWVudHNcbiAgICAgIHRoZW4gT2sgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaW52YWxpZF9lbGVtZW50c19zZXhwID0gc2V4cF9vZl90IHNleHBfb2ZfZWx0IGludmFsaWRfZWxlbWVudHMgaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAoc3Vic2V0Lm5hbWUgXiBcIiBpcyBub3QgYSBzdWJzZXQgb2YgXCIgXiBzdXBlcnNldC5uYW1lKVxuICAgICAgICAgICAgIFsgXCJpbnZhbGlkX2VsZW1lbnRzXCIsIGludmFsaWRfZWxlbWVudHNfc2V4cCBdKSlcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHMxIHMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgICBbIGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgOyBpc19zdWJzZXQgczIgfm9mXzpzMSB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnYSwgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAnYSBUcmVlMC50XG4gIH1cblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlID0gJ2EgVHJlZTAudFxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBjb21wYXJhdG9yIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciB9XG5sZXQgY29tcGFyZV9lbHQgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEudHJlZSBiLnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQudHJlZSB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0LnRyZWUgfmZcbiAgbGV0IG1lbSB0IGEgPSBUcmVlMC5tZW0gdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IGFkZCB0IGEgPSBsaWtlIHQgKFRyZWUwLmFkZCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgcmVtb3ZlIHQgYSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLnVuaW9uIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGludGVyIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuaW50ZXIgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmRpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY29tcGFyZV9lbHQgdDEpIHQxLnRyZWUgdDIudHJlZVxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdC50cmVlIH5vZl86b2ZfLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyBzZXQgOiAoJ2EsICdjbXApIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgbGV0IHRvX25hbWVkX3RyZWUgeyBzZXQ7IG5hbWUgfSA9IHsgVHJlZTAuTmFtZWQudHJlZSA9IHNldC50cmVlOyBuYW1lIH1cblxuICAgIGxldCBpc19zdWJzZXQgKHN1YnNldCA6IChfLCBfKSB0KSB+b2ZfOihzdXBlcnNldCA6IChfLCBfKSB0KSA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgKHRvX25hbWVkX3RyZWUgc3Vic2V0KVxuICAgICAgICB+b2ZfOih0b19uYW1lZF90cmVlIHN1cGVyc2V0KVxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHN1YnNldC5zZXQpXG4gICAgICAgIH5zZXhwX29mX2VsdDpzdWJzZXQuc2V0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB0MSB0MiA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0IFsgaXNfc3Vic2V0IHQxIH5vZl86dDI7IGlzX3N1YnNldCB0MiB+b2ZfOnQxIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxldCB0cmVlX3QsIHRyZWVfZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlX3QsIGxpa2UgdCB0cmVlX2ZcbiAgOztcblxuICBsZXQgc3BsaXQgdCBhID1cbiAgICBsZXQgdHJlZTEsIGIsIHRyZWUyID0gVHJlZTAuc3BsaXQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgYiwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID1cbiAgICBMaXN0Lm1hcCAoVHJlZTAuZ3JvdXBfYnkgdC50cmVlIH5lcXVpdiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKSB+ZjoobGlrZSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQudHJlZSBpXG4gIGxldCByZW1vdmVfaW5kZXggdCBpID0gbGlrZSB0IChUcmVlMC5yZW1vdmVfaW5kZXggdC50cmVlIGkgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIHQuY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gICAgICB0Jy50cmVlXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBzdGF0ZSB0LnRyZWVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY29tcGFyZSBfIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGNlIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcikgYV9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gZSA9IFRyZWUwLnNpbmdsZXRvbiBlXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0XG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHRcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdFxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdCB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlciB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgYSBiIH5mID0gVHJlZTAuaXRlcjIgYSBiIH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5tZW0gdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5hZGQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5yZW1vdmUgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAudW5pb24gdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaW50ZXIgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5pbnRlciB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBkaWZmIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY2UgY29tcGFyYXRvcikgdDEgdDJcbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0IH5vZl8gfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBhcmVfZGlzam9pbnQgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6XyB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAudW5pb25fbGlzdCBsIH50b190cmVlOkZuLmlkIH5jb21wYXJhdG9yXG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IH5jb21wYXJhdG9yIHQgfmVxdWl2ID0gVHJlZTAuZ3JvdXBfYnkgdCB+ZXF1aXYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdCBpXG4gIGxldCByZW1vdmVfaW5kZXggfmNvbXBhcmF0b3IgdCBpID0gVHJlZTAucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHQgPSB0XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVHJlZTAuTmFtZWRcblxuICAgIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdDEgfm9mXzp0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgdDFcbiAgICAgICAgfm9mXzp0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5lcXVhbFxuICAgICAgICB0MVxuICAgICAgICB0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLmNvbXBhcmUgYV9vZl9zZXhwIHNleHApXG4gIDs7XG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuICBlbmRcblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gZSB9XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAudW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSBsKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBsZXQgdHJlZSA9XG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgeyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZilcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5Nb25hZF9pbmZpeC4oXG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICA+PnwgZnVuIHRyZWUgLT4geyBjb21wYXJhdG9yOyB0cmVlIH0pXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yXG4gICAgOyB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfVxuICA7O1xuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbnR5cGUgKCdlbHQsICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgZWx0IGNtcCkgKChtb2R1bGUgTSkgOiAoZWx0LCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IHVuaW9uX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIH5sZW4gfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9zZXF1ZW5jZSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IHN0YWJsZV9kZWR1cF9saXN0IG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG1hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgZmlsdGVyX21hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICB0eXBlIG5vbnJlYyAnZWx0IG5hbWVkID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX3JlZlxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID0gZXF1YWxfcmVmXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSByZWZfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9yZWZcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IHJlZl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxuKCogSW4gdGhlIGRlZmluaXRpb24gb2YgW3RdLCB3ZSBkbyBub3QgaGF2ZSBbW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1dIGJlY2F1c2VcbiAgIGluIGdlbmVyYWwsIHN5bnRheCBleHRlbnNpb25zIHRlbmQgdG8gdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3aGVuIGF2YWlsYWJsZSByYXRoZXIgdGhhblxuICAgdXNpbmcgdGhlIGFsaWFzLiAgSGVyZSB0aGF0IHdvdWxkIGxlYWQgdG8gdXNlIHRoZSByZWNvcmQgcmVwcmVzZW50YXRpb24gWyB7IG11dGFibGVcbiAgIGNvbnRlbnRzIDogJ2EgfSBdIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQgKGFuZCB1bndhbnRlZCkgYmVoYXZpb3IuICAqKVxudHlwZSAnYSB0ID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG5leHRlcm5hbCBjcmVhdGUgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSB0IC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHQgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbmxldCBzd2FwIHQxIHQyID1cbiAgbGV0IHRtcCA9ICF0MSBpblxuICB0MSA6PSAhdDI7XG4gIHQyIDo9IHRtcFxuOztcblxubGV0IHJlcGxhY2UgdCBmID0gdCA6PSBmICF0XG5cbmxldCBzZXRfdGVtcG9yYXJpbHkgdCBhIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSAhdCBpblxuICB0IDo9IGE7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdCA6PSByZXN0b3JlX3RvKVxuOztcblxubW9kdWxlIEFuZF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUIDogJ2EgcmVmICogJ2EgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXQgKFQgKHIsIGEpKSA9IHIgOj0gYVxuICBsZXQgc2V0cyB0cyA9IExpc3QuaXRlciB0cyB+ZjpzZXRcbiAgbGV0IHNuYXBzaG90IChUIChyLCBfKSkgPSBUIChyLCAhcilcbiAgbGV0IHNuYXBzaG90cyB0cyA9IExpc3QubWFwIHRzIH5mOnNuYXBzaG90XG5lbmRcblxubGV0IHNldHNfdGVtcG9yYXJpbHkgYW5kX3ZhbHVlcyB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gQW5kX3ZhbHVlLnNuYXBzaG90cyBhbmRfdmFsdWVzIGluXG4gIEFuZF92YWx1ZS5zZXRzIGFuZF92YWx1ZXM7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gQW5kX3ZhbHVlLnNldHMgcmVzdG9yZV90bylcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuXG4oKiBbdF0gc3RvcmVzIHRoZSBbdC5sZW5ndGhdIHF1ZXVlIGVsZW1lbnRzIGF0IGNvbnNlY3V0aXZlIGluY3JlYXNpbmcgaW5kaWNlcyBvZiBbdC5lbHRzXSxcbiAgIG1vZCB0aGUgY2FwYWNpdHkgb2YgW3RdLCB3aGljaCBpcyBbT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAgVGhlIGNhcGFjaXR5IGlzXG4gICByZXF1aXJlZCB0byBiZSBhIHBvd2VyIG9mIHR3byAodXNlci1yZXF1ZXN0ZWQgY2FwYWNpdGllcyBhcmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdFxuICAgcG93ZXIpLCBzbyB0aGF0IG1vZCBjYW4gcXVpY2tseSBiZSBjb21wdXRlZCB1c2luZyBbbGFuZCB0Lm1hc2tdLCB3aGVyZSBbdC5tYXNrID1cbiAgIGNhcGFjaXR5IHQgLSAxXS4gIFNvLCBxdWV1ZSBlbGVtZW50IFtpXSBpcyBhdCBbdC5lbHRzLiggKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayApXS5cblxuICAgW251bV9tdXRhdGlvbnNdIGlzIHVzZWQgdG8gZGV0ZWN0IG1vZGlmaWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIG51bV9tdXRhdGlvbnMgOiBpbnRcbiAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxX1xuICAgIHsgbnVtX211dGF0aW9ucyA9IG51bV9tdXRhdGlvbnNfXzAwM19cbiAgICA7IGZyb250ID0gZnJvbnRfXzAwNV9cbiAgICA7IG1hc2sgPSBtYXNrX18wMDdfXG4gICAgOyBsZW5ndGggPSBsZW5ndGhfXzAwOV9cbiAgICA7IGVsdHMgPSBlbHRzX18wMTFfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMDJfID0gW10gaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwOV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbWFza19fMDA3XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZyb250XCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBudW1fbXV0YXRpb25zX18wMDNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJudW1fbXV0YXRpb25zXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgdHlwZSBTID0gUXVldWVfaW50Zi5TXG5cbmxldCBpbmNfbnVtX211dGF0aW9ucyB0ID0gdC5udW1fbXV0YXRpb25zIDwtIHQubnVtX211dGF0aW9ucyArIDFcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxubGV0IGVsdHNfaW5kZXggdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFza1xubGV0IHVuc2FmZV9nZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfaXNfc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfaXNfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIGEgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpIGFcbmxldCB1bnNhZmVfdW5zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxuXG5sZXQgY2hlY2tfaW5kZXhfZXhuIHQgaSA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gdC5sZW5ndGhcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiUXVldWUgaW5kZXggb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBbIFwiaW5kZXhcIiwgaSB8PiBJbnQuc2V4cF9vZl90OyBcImxlbmd0aFwiLCB0Lmxlbmd0aCB8PiBJbnQuc2V4cF9vZl90IF0pXG47O1xuXG5sZXQgZ2V0IHQgaSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIHVuc2FmZV9nZXQgdCBpXG47O1xuXG5sZXQgc2V0IHQgaSBhID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgdW5zYWZlX3NldCB0IGkgYVxuOztcblxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcbmxldCBsZW5ndGggeyBsZW5ndGg7IF8gfSA9IGxlbmd0aFxuXG5sZXQgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucyA9XG4gIGlmIHQubnVtX211dGF0aW9ucyA8PiBudW1fbXV0YXRpb25zXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIm11dGF0aW9uIG9mIHF1ZXVlIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgICAgWyBcIlwiLCB0IHw+IHNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSBdKVxuOztcblxubGV0IGNvbXBhcmUgPVxuICBsZXQgcmVjIHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgcG9zIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDIgPVxuICAgIG1hdGNoIHBvcyA9IGxlbjEsIHBvcyA9IGxlbjIgd2l0aFxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICBsZXQgeCA9IGNvbXBhcmVfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IDAgLT4gdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MlxuICAgICAgIHwgbiAtPiBuKVxuICBpblxuICBmdW4gY29tcGFyZV9lbHQgdDEgdDIgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gICAgdGhlbiAwXG4gICAgZWxzZVxuICAgICAgdW5zYWZlX2NvbXBhcmVfZnJvbVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICAwXG4gICAgICAgIH50MVxuICAgICAgICB+dDJcbiAgICAgICAgfmxlbjE6dDEubGVuZ3RoXG4gICAgICAgIH5sZW4yOnQyLmxlbmd0aFxuICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBlcXVhbCA9XG4gIGxldCByZWMgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IHBvcyB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW4gPVxuICAgIHBvcyA9IGxlblxuICAgIHx8XG4gICAgbGV0IGIgPSBlcXVhbF9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgYiAmJiB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgKHBvcyArIDEpIH50MSB+dDIgfm11dDEgfm11dDIgfmxlblxuICBpblxuICBmdW4gZXF1YWxfZWx0IHQxIHQyIC0+XG4gICAgcGh5c19lcXVhbCB0MSB0MlxuICAgIHx8XG4gICAgbGV0IGxlbjEgPSB0MS5sZW5ndGggaW5cbiAgICBsZXQgbGVuMiA9IHQyLmxlbmd0aCBpblxuICAgIGxlbjEgPSBsZW4yXG4gICAgJiYgdW5zYWZlX2VxdWFsX2Zyb21cbiAgICAgICAgIGVxdWFsX2VsdFxuICAgICAgICAgMFxuICAgICAgICAgfnQxXG4gICAgICAgICB+dDJcbiAgICAgICAgIH5sZW46bGVuMVxuICAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IHsgbnVtX211dGF0aW9uczsgbWFzayA9IF87IGVsdHM7IGZyb250OyBsZW5ndGggfSA9IHQgaW5cbiAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpO1xuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGFzc2VydCAoY2FwYWNpdHkgPSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICBhc3NlcnQgKGNhcGFjaXR5ID49IDEpO1xuICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5KTtcbiAgZm9yIGkgPSAwIHRvIGNhcGFjaXR5IC0gMSBkb1xuICAgIGlmIGkgPCB0Lmxlbmd0aFxuICAgIHRoZW4gKFxuICAgICAgaW52YXJpYW50X2EgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMpXG4gICAgZWxzZSBhc3NlcnQgKG5vdCAodW5zYWZlX2lzX3NldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpID9jYXBhY2l0eSAoKSA6IGEgdCA9XG4gIGxldCBjYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiAxXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcImNhbm5vdCBoYXZlIHF1ZXVlIHdpdGggbmVnYXRpdmUgY2FwYWNpdHlcIlxuICAgICAgICAgICAgIFsgXCJjYXBhY2l0eVwiLCBjYXBhY2l0eSB8PiBJbnQuc2V4cF9vZl90IF0pXG4gICAgICBlbHNlIGlmIGNhcGFjaXR5ID0gMFxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIEludC5jZWlsX3BvdzIgY2FwYWNpdHlcbiAgaW5cbiAgeyBudW1fbXV0YXRpb25zID0gMFxuICA7IGZyb250ID0gMFxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBsZW5ndGggPSAwXG4gIDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpjYXBhY2l0eVxuICB9XG47O1xuXG5sZXQgYmxpdF90b19hcnJheSB+c3JjIGRzdCA9XG4gIGFzc2VydCAoc3JjLmxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGRzdCk7XG4gIGxldCBmcm9udF9sZW4gPSBJbnQubWluIHNyYy5sZW5ndGggKGNhcGFjaXR5IHNyYyAtIHNyYy5mcm9udCkgaW5cbiAgbGV0IHJlc3RfbGVuID0gc3JjLmxlbmd0aCAtIGZyb250X2xlbiBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOmZyb250X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOnNyYy5mcm9udCB+ZHN0IH5kc3RfcG9zOjA7XG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46cmVzdF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6ZnJvbnRfbGVuXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgZGVzaXJlZF9jYXBhY2l0eSA9XG4gICgqIFdlIGFsbG93IGFyZ3VtZW50cyBsZXNzIHRoYW4gMSB0byBbc2V0X2NhcGFjaXR5XSwgYnV0IHRyYW5zbGF0ZSB0aGVtIHRvIDEgdG8gc2ltcGxpZnlcbiAgICAgdGhlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGFycmF5IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIuICopXG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQuY2VpbF9wb3cyIChtYXggMSAobWF4IGRlc2lyZWRfY2FwYWNpdHkgdC5sZW5ndGgpKSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdFxuICB0aGVuIChcbiAgICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIGJsaXRfdG9fYXJyYXkgfnNyYzp0IGRzdDtcbiAgICB0LmZyb250IDwtIDA7XG4gICAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gICAgdC5lbHRzIDwtIGRzdClcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYSA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID0gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eSB0ICgyICogdC5sZW5ndGgpO1xuICB1bnNhZmVfc2V0IHQgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZGVxdWV1ZV9ub25lbXB0eSB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IGVsdHMgPSB0LmVsdHMgaW5cbiAgbGV0IGZyb250ID0gdC5mcm9udCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGZyb250IGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSBlbHRzIGZyb250O1xuICB0LmZyb250IDwtIGVsdHNfaW5kZXggdCAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGZyb250X25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgdC5mcm9udFxubGV0IGxhc3Rfbm9uZW1wdHkgdCA9IHVuc2FmZV9nZXQgdCAodC5sZW5ndGggLSAxKVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZnJvbnRfbm9uZW1wdHkgdClcbmxldCBwZWVrX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgbGFzdF9ub25lbXB0eSB0XG5cbmxldCBjbGVhciB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHVuc2FmZV91bnNldCB0IGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgdC5mcm9udCA8LSAwKVxuOztcblxubGV0IGJsaXRfdHJhbnNmZXIgfnNyYyB+ZHN0ID9sZW4gKCkgPVxuICBpbmNfbnVtX211dGF0aW9ucyBzcmM7XG4gIGluY19udW1fbXV0YXRpb25zIGRzdDtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gc3JjLmxlbmd0aFxuICAgIHwgU29tZSBsZW4gLT5cbiAgICAgIGlmIGxlbiA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcIlF1ZXVlLmJsaXRfdHJhbnNmZXI6IG5lZ2F0aXZlIGxlbmd0aFwiXG4gICAgICAgICAgICAgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgICAgIG1pbiBsZW4gc3JjLmxlbmd0aFxuICBpblxuICBpZiBsZW4gPiAwXG4gIHRoZW4gKFxuICAgIHNldF9jYXBhY2l0eSBkc3QgKG1heCAoY2FwYWNpdHkgZHN0KSAoZHN0Lmxlbmd0aCArIGxlbikpO1xuICAgIGxldCBkc3Rfc3RhcnQgPSBkc3QuZnJvbnQgKyBkc3QubGVuZ3RoIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICgqIFRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBzaW1wbHkgW2VucXVldWUgZHN0IChkZXF1ZXVlX25vbmVtcHR5IHNyYyldICopXG4gICAgICBsZXQgc3JjX2kgPSAoc3JjLmZyb250ICsgaSkgbGFuZCBzcmMubWFzayBpblxuICAgICAgbGV0IGRzdF9pID0gKGRzdF9zdGFydCArIGkpIGxhbmQgZHN0Lm1hc2sgaW5cbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWVcbiAgICAgICAgZHN0LmVsdHNcbiAgICAgICAgZHN0X2lcbiAgICAgICAgKE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHNyYy5lbHRzIHNyY19pKTtcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgc3JjLmVsdHMgc3JjX2lcbiAgICBkb25lO1xuICAgIGRzdC5sZW5ndGggPC0gZHN0Lmxlbmd0aCArIGxlbjtcbiAgICBzcmMuZnJvbnQgPC0gKHNyYy5mcm9udCArIGxlbikgbGFuZCBzcmMubWFzaztcbiAgICBzcmMubGVuZ3RoIDwtIHNyYy5sZW5ndGggLSBsZW4pXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIHNldF9jYXBhY2l0eSB0IChJbnQubWF4IChjYXBhY2l0eSB0KSAodC5sZW5ndGggKyBMaXN0Lmxlbmd0aCBsKSk7XG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICAgIGRvbmU7XG4gICAgIXIpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGEgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYylcbjs7XG5cblxuKCogW2l0ZXJdIGlzIGltcGxlbWVudGVkIGRpcmVjdGx5IGJlY2F1c2UgaW1wbGVtZW50aW5nIGl0IGluIHRlcm1zIG9mIFtmb2xkXSBpc1xuICAgc2xvd2VyLiAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgcmVzdWx0IDo9IHVuc2FmZV9nZXQgdCBpIDo6ICFyZXN1bHRcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5cblxuKCogRm9yIFtjb25jYXRfbWFwXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl0sIHdlIGRvbid0IGNyZWF0ZSBbdF9yZXN1bHRdIHdpdGggW3RdJ3NcbiAgIGNhcGFjaXR5IGJlY2F1c2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyBtYW55IGVsZW1lbnRzIFt0X3Jlc3VsdF0gd2lsbCB1bHRpbWF0ZWx5IGhvbGQuICopXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlciB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlcmkgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlIH5jYXBhY2l0eTpzcmMubGVuZ3RoICgpIGluXG4gIGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QuZWx0cztcbiAgZHN0Lmxlbmd0aCA8LSBzcmMubGVuZ3RoO1xuICBkc3Rcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OihMaXN0Lmxlbmd0aCBsKSAoKSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG4oKiBUaGUgcXVldWUgW3RdIHJldHVybmVkIGJ5IFtjcmVhdGVdIHdpbGwgaGF2ZSBbdC5sZW5ndGggPSAwXSwgW3QuZnJvbnQgPSAwXSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IEludC5jZWlsX3BvdzIgbGVuXS4gIFNvLCB3ZSBvbmx5IGhhdmUgdG8gc2V0IFt0Lmxlbmd0aF0gdG8gW2xlbl0gYWZ0ZXJcbiAgIHRoZSBibGl0IHRvIG1haW50YWluIGFsbCB0aGUgaW52YXJpYW50czogW3QubGVuZ3RoXSBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICBpbiB0aGUgcXVldWUsIFt0LmZyb250XSBpcyB0aGUgYXJyYXkgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAqKVxubGV0IGluaXQgbGVuIH5mID1cbiAgaWYgbGVuIDwgMFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIlF1ZXVlLmluaXQ6IG5lZ2F0aXZlIGxlbmd0aFwiIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTpsZW4gKCkgaW5cbiAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyA+PSBsZW4pO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIGkgKGYgaSlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gbGVuO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkudW5zYWZlX2dldCBhKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IHQubGVuZ3RoIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IG1hcCB0YSB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdGEubnVtX211dGF0aW9ucyBpblxuICBsZXQgdGIgPSBjcmVhdGUgfmNhcGFjaXR5OnRhLmxlbmd0aCAoKSBpblxuICB0Yi5sZW5ndGggPC0gdGEubGVuZ3RoO1xuICBmb3IgaSA9IDAgdG8gdGEubGVuZ3RoIC0gMSBkb1xuICAgIGxldCBiID0gZiAodW5zYWZlX2dldCB0YSBpKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0YSBudW1fbXV0YXRpb25zO1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdGIuZWx0cyBpIGJcbiAgZG9uZTtcbiAgdGJcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIG1hcCB0IH5mOihmdW4gYSAtPlxuICAgIGxldCByZXN1bHQgPSBmICFpIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5OYXRpdmVpbnRcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChuYXRpdmVpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfbmF0aXZlaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IG5hdGl2ZWludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlbnhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudW1fYml0cyA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJOYXRpdmVpbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLk5hdGl2ZWludC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5OYXRpdmVpbnQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyICh4IDogbmF0aXZlaW50KSA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuTmF0aXZlaW50LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5OYXRpdmVpbnQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5OYXRpdmVpbnQucHJlZCB4ID0gMG5cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBuYXRpdmVpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgaWYgQ2FtbC5OYXRpdmVpbnQuZXF1YWwgaSBDYW1sLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLk5hdGl2ZWludC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfbmF0aXZlaW50IHQgPSB0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCB0ID0gdFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50Lm5hdGl2ZWludF9wb3Bjb3VudFxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludF90cnVuY1xubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCB0b19pbnQzMl90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbTmF0aXZlaW50XSBhbmQgW05hdGl2ZWludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmV4dGVybmFsIGJzd2FwIDogdCAtPiB0ID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtDYW1sLk9iai5tYWdpY10gaXMgY29ycmVjdCBhbmQgc2FmZS4gKilcbiAgbGV0IG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdCA9IENhbWwuT2JqLm1hZ2ljXG4gIGxldCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IExlYWYgb2YgJ2sgKiAndlxuICAgIHwgTm9kZSBvZiAoJ2ssICd2KSB0ICogJ2sgKiAndiAqICgnaywgJ3YpIHQgKiBpbnRcblxuICB0eXBlICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSB0XG5cbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgaCkgLT4gaFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgayA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfa2V5IGxvd2VyIGsgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9rZXkgayB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2tleSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgKGssIF8pIC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgIHwgTm9kZSAobCwgaywgXywgciwgaCkgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSBrKSBjb21wYXJlX2tleSBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgaykgdXBwZXIgY29tcGFyZV9rZXkgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfa2V5IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfa2V5IHRcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDIgKilcbiAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPSAwICYmIGhyID0gMFxuICAgIHRoZW4gTGVhZiAoeCwgZClcbiAgICBlbHNlIE5vZGUgKGwsIHgsIGQsIHIsIGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKVxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBMZWFmIChrZXksIGRhdGEpXG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuTWFwIG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA6IChfLCBfKSB0ID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGssIHYgPSBmIGkgaW5cbiAgICAgICAgTGVhZiAoaywgdilcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIEVtcHR5LCAyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyLCB2ciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBMZWFmIChrciwgdnIpLCAyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHYgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyXG4gICAgICAgICB8fFxuICAgICAgICAgbGV0IGswLCBfID0gYXJyYXkuKDApIGluXG4gICAgICAgICBsZXQgazEsIF8gPSBhcnJheS4oMSkgaW5cbiAgICAgICAgIGNvbXBhcmVfa2V5IGswIGsxIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dCwgYXJyYXlfbGVuZ3RoXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKDApKSAoZnN0IGFycmF5LigxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oaSkpIChmc3QgYXJyYXkuKGkgKyAxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSkpXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAzICopXG4gIGxldCBiYWwgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhyICsgMiAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxkLCBsciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAobHJ2LCBscmQpIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIEVtcHR5KSBscnYgbHJkIChjcmVhdGUgRW1wdHkgeCBkIHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJkLCBscnIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhsICsgMiAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJkLCByciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAocmx2LCBybGQpIC0+IGNyZWF0ZSAoY3JlYXRlIGwgeCBkIEVtcHR5KSBybHYgcmxkIChjcmVhdGUgRW1wdHkgcnYgcmQgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxkLCBybHIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpKSlcbiAgICBlbHNlIGNyZWF0ZSBsIHggZCByXG4gIDs7XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiW01hcC5hZGRfZXhuXSBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbW9kdWxlIEFkZF9vcl9zZXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBZGRfZXhuX2ludGVybmFsXG4gICAgICB8IEFkZF9leG5cbiAgICAgIHwgU2V0XG4gIGVuZFxuXG5cbiAgbGV0IHJlYyBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+bGVuZ3RoXG4gICAgICAgICAgICB+a2V5OnhcbiAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgICAgfihhZGRfb3Jfc2V0IDogQWRkX29yX3NldC50KVxuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKHgsIGRhdGEpLCBsZW5ndGggKyAxXG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlXG4gICAgICAgIHwgQWRkX2V4biAtPiByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXlcbiAgICAgICAgfCBTZXQgLT4gTGVhZiAoeCwgZGF0YSksIGxlbmd0aClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSwgbGVuZ3RoICsgMVxuICAgICAgZWxzZSBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpLCBsZW5ndGggKyAxXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlXG4gICAgICAgIHwgQWRkX2V4biAtPiByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXlcbiAgICAgICAgfCBTZXQgLT4gTm9kZSAobCwgeCwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbCwgbGVuZ3RoID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByLCBsZW5ndGggPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0OkFkZF9leG5cbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICB0XG4gICAgICB+bGVuZ3RoXG4gICAgICB+a2V5XG4gICAgICB+ZGF0YVxuICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICB+c2V4cF9vZl9rZXlcbiAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG5faW50ZXJuYWxcbiAgOztcblxuICBsZXQgc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgdFxuICAgICAgfmxlbmd0aFxuICAgICAgfmtleVxuICAgICAgfmRhdGFcbiAgICAgIH5jb21wYXJlX2tleVxuICAgICAgfnNleHBfb2Zfa2V5OihmdW4gXyAtPiBMaXN0IFtdKVxuICAgICAgfmFkZF9vcl9zZXQ6U2V0XG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSBmc3QgKHNldCB0IH5sZW5ndGg6MCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSlcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBGcmFnbWVudCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9XG4gICAgICAgIHsgbGVmdF9zdWJ0cmVlIDogKCdrLCAndikgdFxuICAgICAgICA7IGtleSA6ICdrXG4gICAgICAgIDsgZGF0YSA6ICd2XG4gICAgICAgIH1cblxuICAgICAgbGV0IHNpbmdsZXRvbl90b190cmVlX2V4biA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH0gLT4gc2luZ2xldG9uIGtleSBkYXRhXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1hcC5zaW5nbGV0b25fdG9fdHJlZV9leG46IG5vdCBhIHNpbmdsZXRvblwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2luZ2xldG9uIH5rZXkgfmRhdGEgPSB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfVxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgY29sbGFwc2UgbCByID0gY3JlYXRlIGwubGVmdF9zdWJ0cmVlIGwua2V5IGwuZGF0YSByXG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQoci5sZWZ0X3N1YnRyZWUpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgam9pbiBsIHIgPSB7IHIgd2l0aCBsZWZ0X3N1YnRyZWUgPSBjb2xsYXBzZSBsIHIubGVmdF9zdWJ0cmVlIH1cbiAgICAgIGxldCBtYXhfa2V5IHQgPSB0LmtleVxuICAgIGVuZFxuXG4gICAgKCoqIEJ1aWxkIHRyZWVzIGZyb20gc2luZ2xldG9ucyBpbiBhIGJhbGFuY2VkIHdheSBieSB1c2luZyBza2V3IGJpbmFyeSBlbmNvZGluZy5cbiAgICAgICAgRWFjaCBsZXZlbCBjb250YWlucyB0cmVlcyBvZiB0aGUgc2FtZSBoZWlnaHQsIGNvbnNlY3V0aXZlIGxldmVscyBoYXZlIGNvbnNlY3V0aXZlXG4gICAgICAgIGhlaWdodHMuIFRoZXJlIGFyZSBubyBnYXBzLiBUaGUgZmlyc3QgbGV2ZWwgYXJlIHNpbmdsZSBrZXlzLlxuICAgICopXG4gICAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICAgIHwgWmVybyBvZiB1bml0XG4gICAgICAoKiBbdW5pdF0gdG8gbWFrZSBwYXR0ZXJuIG1hdGNoaW5nIGZhc3RlciAqKVxuICAgICAgfCBPbmUgb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnRcbiAgICAgIHwgVHdvIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50ICogKCdrLCAndikgRnJhZ21lbnQudFxuXG4gICAgbGV0IGVtcHR5ID0gWmVybyAoKVxuXG4gICAgbGV0IGFkZF91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHggPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IE9uZSAodCwgeClcbiAgICAgICAgfCBPbmUgKHQsIHkpIC0+IFR3byAodCwgeSwgeClcbiAgICAgICAgfCBUd28gKHQsIHosIHkpIC0+IE9uZSAoZ28gdCAoRnJhZ21lbnQuam9pbiB6IHkpLCB4KVxuICAgICAgaW5cbiAgICAgIGZ1biB0IH5rZXkgfmRhdGEgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uIH5rZXkgfmRhdGEpXG4gICAgOztcblxuICAgIGxldCB0b190cmVlX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgciA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gclxuICAgICAgICB8IE9uZSAodCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgbCByKVxuICAgICAgICB8IFR3byAodCwgbGwsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIChGcmFnbWVudC5qb2luIGxsIGwpIHIpXG4gICAgICBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBFbXB0eVxuICAgICAgfCBPbmUgKHQsIHIpIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgICAgfCBUd28gKHQsIGwsIHIpIC0+IGdvIChPbmUgKHQsIGwpKSAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgOztcblxuICAgIGxldCBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBOb25lXG4gICAgICB8IE9uZSAoXywgcikgfCBUd28gKF8sIF8sIHIpIC0+IFNvbWUgKEZyYWdtZW50Lm1heF9rZXkgcilcbiAgICA7O1xuICBlbmRcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCBidWlsZGVyLCBsZW5ndGggPVxuICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgc2VxXG4gICAgICAgICAgfmluaXQ6KEJ1aWxkX2luY3JlYXNpbmcuZW1wdHksIDApXG4gICAgICAgICAgfmY6KGZ1biAoYnVpbGRlciwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IGJ1aWxkZXIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyZV9rZXkgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+IEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCBidWlsZGVyIH5rZXkgfmRhdGEsIGxlbmd0aCArIDEpXG4gICAgICBpblxuICAgICAgT2sgKEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgYnVpbGRlciwgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBMaWtlIFtiYWxdIGJ1dCBhbGxvd3MgYW55IGRpZmZlcmVuY2UgaW4gaGVpZ2h0IGJldHdlZW4gW2xdIGFuZCBbcl0uXG5cbiAgICAgTyh8aGVpZ2h0IGwgLSBoZWlnaHQgcnwpICopXG4gIGxldCByZWMgam9pbiBsIGsgZCByIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXQnIHIgayBkIH5jb21wYXJlX2tleVxuICAgIHwgXywgRW1wdHkgLT4gc2V0JyBsIGsgZCB+Y29tcGFyZV9rZXlcbiAgICB8IExlYWYgKGxrLCBsZCksIF8gLT4gc2V0JyAoc2V0JyByIGsgZCB+Y29tcGFyZV9rZXkpIGxrIGxkIH5jb21wYXJlX2tleVxuICAgIHwgXywgTGVhZiAocmssIHJkKSAtPiBzZXQnIChzZXQnIGwgayBkIH5jb21wYXJlX2tleSkgcmsgcmQgfmNvbXBhcmVfa2V5XG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByIH5jb21wYXJlX2tleSlcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDNcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgayBkIHJsIH5jb21wYXJlX2tleSkgcmsgcmQgcnJcbiAgICAgIGVsc2UgYmFsIGwgayBkIHJcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IHggayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgeCBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIGwsIFNvbWUgKGssIGQpLCByXG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIG1heWJlLCBsciA9IHNwbGl0IGwgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgbGwsIG1heWJlLCBqb2luIGxyIGsgZCByIH5jb21wYXJlX2tleSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmwsIG1heWJlLCByciA9IHNwbGl0IHIgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgam9pbiBsIGsgZCBybCB+Y29tcGFyZV9rZXksIG1heWJlLCBycilcbiAgOztcblxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID0gc3BsaXQgdCB4IH5jb21wYXJlX2tleSBpblxuICAgIG1hdGNoIGJvdW5kYXJ5X29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxlZnQsIHJpZ2h0XG4gICAgfCBTb21lIChrZXksIGRhdGEpIC0+XG4gICAgICBsZXQgaW5zZXJ0X2ludG8gdHJlZSA9IGZzdCAoc2V0IHRyZWUgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5KSBpblxuICAgICAgKG1hdGNoIGludG8gd2l0aFxuICAgICAgIHwgYExlZnQgLT4gaW5zZXJ0X2ludG8gbGVmdCwgcmlnaHRcbiAgICAgICB8IGBSaWdodCAtPiBsZWZ0LCBpbnNlcnRfaW50byByaWdodClcbiAgOztcblxuICBsZXQgc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+KGxvd2VyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfih1cHBlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH5jb21wYXJlX2tleVxuICAgID1cbiAgICBpZiBNYXliZV9ib3VuZC5ib3VuZHNfY3Jvc3NlZFxuICAgICAgICAgfmNvbXBhcmU6Y29tcGFyZV9rZXlcbiAgICAgICAgIH5sb3dlcjpsb3dlcl9ib3VuZFxuICAgICAgICAgfnVwcGVyOnVwcGVyX2JvdW5kXG4gICAgdGhlbiBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVmdCwgbWlkX2FuZF9yaWdodCA9XG4gICAgICAgIG1hdGNoIGxvd2VyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gZW1wdHksIHRcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxldCBtaWQsIHJpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdXBwZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBtaWRfYW5kX3JpZ2h0LCBlbXB0eVxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPlxuICAgICAgICAgIHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZWZ0LCBtaWQsIHJpZ2h0KVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBTb21lIGQgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkIGVsc2UgZmluZCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGRhdGEgPSBkYXRhIDo6IE9wdGlvbi52YWx1ZSAoZmluZCB0IGtleSB+Y29tcGFyZV9rZXkpIH5kZWZhdWx0OltdIGluXG4gICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB4IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIGwgLT4gbFxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IGlmX25vdF9mb3VuZCBrZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIHJhaXNlIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJNYXAuZmluZF9leG46IG5vdCBmb3VuZFwiOyBzZXhwX29mX2tleSBrZXkgXSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbmRfZXhuIHQgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIGQgZWxzZSBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBkIGVsc2UgZmluZF9leG4gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IHggfmNvbXBhcmVfa2V5ID0gT3B0aW9uLmlzX3NvbWUgKGZpbmQgdCB4IH5jb21wYXJlX2tleSlcblxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKEVtcHR5LCBrLCBkLCBfLCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBrLCBkLCBFbXB0eSwgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIF8sIF8sIHIsIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCBfLCByLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB4LCBkLCByLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHggZCByXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIG1heF9lbHQgbG93ZXJfcGFydCwgbWluX2VsdCB1cHBlcl9wYXJ0IHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gYE9rIHVwcGVyX3BhcnRcbiAgICB8IF8sIE5vbmUgLT4gYE9rIGxvd2VyX3BhcnRcbiAgICB8IFNvbWUgKG1heF9sb3dlciwgXyksIFNvbWUgKG1pbl91cHBlciwgdikgd2hlbiBjb21wYXJlX2tleSBtYXhfbG93ZXIgbWluX3VwcGVyIDwgMCAtPlxuICAgICAgbGV0IHVwcGVyX3BhcnRfd2l0aG91dF9taW4gPSByZW1vdmVfbWluX2VsdCB1cHBlcl9wYXJ0IGluXG4gICAgICBgT2sgKGpvaW4gfmNvbXBhcmVfa2V5IGxvd2VyX3BhcnQgbWluX3VwcGVyIHYgdXBwZXJfcGFydF93aXRob3V0X21pbilcbiAgICB8IF8gLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgPVxuICAgICgqIFRoaXMgYXNzdW1lcyB0aGF0IG1pbiA8PSBtYXgsIHdoaWNoIGlzIGNoZWNrZWQgYnkgdGhlIG91dGVyIGZ1bmN0aW9uLiAqKVxuICAgIGxldCByZWMgZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbml0XG4gICAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgbWluIDwgMCB8fCBjb21wYXJlX2tleSBrIG1heCA+IDBcbiAgICAgICAgdGhlbiAoKiBrIDwgbWluIHx8IGsgPiBtYXggKilcbiAgICAgICAgICBpbml0XG4gICAgICAgIGVsc2UgZiB+a2V5OmsgfmRhdGE6ZCBpbml0XG4gICAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjX21pbiA9IGNvbXBhcmVfa2V5IGsgbWluIGluXG4gICAgICAgIGlmIGNfbWluIDwgMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA8IG1pbiwgdGhlbiB0aGlzIG5vZGUgYW5kIGl0cyBsZWZ0IGJyYW5jaCBhcmUgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSBpZiBjX21pbiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPSBtaW4sIHRoZW4gdGhpcyBub2RlJ3MgbGVmdCBicmFuY2ggaXMgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdDooZiB+a2V5OmsgfmRhdGE6ZCBpbml0KSB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogayA+IG1pbiAqKVxuICAgICAgICAgIGxldCB6ID0gZ28gbCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgbGV0IGNfbWF4ID0gY29tcGFyZV9rZXkgayBtYXggaW5cbiAgICAgICAgICAoKiBpZiBrID4gbWF4LCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgaWYgY19tYXggPiAwXG4gICAgICAgICAgdGhlbiB6XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgeiA9IGYgfmtleTprIH5kYXRhOmQgeiBpblxuICAgICAgICAgICAgKCogaWYgayA9IG1heCwgdGhlbiB3ZSBmb2xkIGluIHRoaXMgb25lIGxhc3QgdmFsdWUgYW5kIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICAgIGlmIGNfbWF4ID0gMCB0aGVuIHogZWxzZSBnbyByIH5taW4gfm1heCB+aW5pdDp6IH5mIH5jb21wYXJlX2tleSkpXG4gICAgaW5cbiAgICBmdW4gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBjb21wYXJlX2tleSBtaW4gbWF4IDw9IDAgdGhlbiBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgZWxzZSBpbml0XG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgICAgdFxuICAgICAgICAgfm1pblxuICAgICAgICAgfm1heFxuICAgICAgICAgfmluaXQ6W11cbiAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBsIC0+IChrZXksIGRhdGEpIDo6IGwpXG4gICAgICAgICB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBleGNlcHRpb24gUmVtb3ZlX25vX29wXG5cbiAgbGV0IHJlbW92ZSB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wXG4gICAgICB8IExlYWYgKHYsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IHggdiA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgbGVuZ3RoIC0gMVxuICAgICAgICBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3BcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBjb25jYXRfdW5jaGVja2VkIGwgciwgbGVuZ3RoIC0gMVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSByZW1vdmVfbG9vcCBsIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gcmVtb3ZlX2xvb3AgciB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHRyeSByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgUmVtb3ZlX25vX29wIC0+IHQsIGxlbmd0aFxuICA7O1xuXG4gICgqIFVzZSBleGNlcHRpb24gdG8gYXZvaWQgdHJlZS1yZWJ1aWxkIGluIG5vLW9wIGNhc2UgKilcbiAgZXhjZXB0aW9uIENoYW5nZV9ub19vcFxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgY2hhbmdlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gcmFpc2UgQ2hhbmdlX25vX29wICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgfCBTb21lIGRhdGEgLT4gTGVhZiAoa2V5LCBkYXRhKSwgbGVuZ3RoICsgMSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHksIGxlbmd0aCAtIDFcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gTGVhZiAodiwgZCcpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIEVtcHR5LCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBFbXB0eSB2IGQgciwgbGVuZ3RoKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXRfdW5jaGVja2VkIGwgciwgbGVuZ3RoIC0gMVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSBjaGFuZ2VfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHRyeSBjaGFuZ2VfY29yZSB0IGtleSBmIHdpdGhcbiAgICB8IENoYW5nZV9ub19vcCAtPiB0LCBsZW5ndGhcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHVwZGF0ZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIGxldCBkYXRhID0gZiBOb25lIGluXG4gICAgICAgIExlYWYgKGtleSwgZGF0YSksIGxlbmd0aCArIDFcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZCcgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgTGVhZiAodiwgZCcpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIEVtcHR5LCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBFbXB0eSB2IGQgciwgbGVuZ3RoKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkYXRhID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgIE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSB1cGRhdGVfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHVwZGF0ZV9jb3JlIHQga2V5IGZcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyX2tleXMgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgXykgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCBfLCByLCBfKSAtPlxuICAgICAgaXRlcl9rZXlzIH5mIGw7XG4gICAgICBmIHY7XG4gICAgICBpdGVyX2tleXMgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlciB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIChfLCBkKSAtPiBmIGRcbiAgICB8IE5vZGUgKGwsIF8sIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyIH5mIGw7XG4gICAgICBmIGQ7XG4gICAgICBpdGVyIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyaSB+ZiBsO1xuICAgICAgZiB+a2V5OnYgfmRhdGE6ZDtcbiAgICAgIGl0ZXJpIH5mIHJcbiAgOztcblxuICBsZXQgaXRlcmlfdW50aWwgPVxuICAgIGxldCByZWMgaXRlcmlfdW50aWxfbG9vcCB0IH5mIDogQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBpdGVyaV91bnRpbF9sb29wIH5mIGwgd2l0aFxuICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgIHwgQ29udGludWUgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgICAgIHwgQ29udGludWUgLT4gaXRlcmlfdW50aWxfbG9vcCB+ZiByKSlcbiAgICBpblxuICAgIGZ1biB0IH5mIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQub2ZfY29udGludWVfb3Jfc3RvcCAoaXRlcmlfdW50aWxfbG9vcCB0IH5mKVxuICA7O1xuXG4gIGxldCByZWMgbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXAgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICBsZXQgcicgPSBtYXAgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiB+a2V5OnYgfmRhdGE6ZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXBpIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IG1hcGkgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIGZvbGQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfbG9vcCB0IH5hY2MgfmYgOiAoXywgXykgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2xvb3AgbCB+YWNjIH5mIHdpdGhcbiAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCBhY2Mgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgICAgIHwgQ29udGludWUgYWNjIC0+IGZvbGRfdW50aWxfbG9vcCByIH5hY2MgfmYpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9sb29wIHQgfmFjYzppbml0IH5mIHdpdGhcbiAgICB8IENvbnRpbnVlIGFjYyAtPiBmaW5pc2ggYWNjXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYga2V5IHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuXG4gIGxldCBmaWx0ZXIgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiBkYXRhIHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuICBsZXQgZmlsdGVyaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIH5rZXkgfmRhdGEgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIG1hdGNoIGYgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjdSwgbGVuZ3RoXG4gICAgICB8IFNvbWUgYiAtPiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhOmIgYWNjdSB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjdSwgbGVuZ3RoXG4gICAgICB8IFNvbWUgYiAtPiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhOmIgYWNjdSB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooKEVtcHR5LCAwKSwgKEVtcHR5LCAwKSlcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAocGFpcjEsIHBhaXIyKSAtPlxuICAgICAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT5cbiAgICAgICAgICBsZXQgdCwgbGVuZ3RoID0gcGFpcjEgaW5cbiAgICAgICAgICBzZXQgdCB+a2V5IH5kYXRhOnggfmNvbXBhcmVfa2V5IH5sZW5ndGgsIHBhaXIyXG4gICAgICAgIHwgU2Vjb25kIHkgLT5cbiAgICAgICAgICBsZXQgdCwgbGVuZ3RoID0gcGFpcjIgaW5cbiAgICAgICAgICBwYWlyMSwgc2V0IHQgfmtleSB+ZGF0YTp5IH5jb21wYXJlX2tleSB+bGVuZ3RoKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBpZiBmIGRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdrLCAndiwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdrICogJ3YgKiAoJ2ssICd2KSB0cmVlICogKCdrLCAndiwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHQgKGUgOiAoXywgXywgaW5jcmVhc2luZykgdCkgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29ucyBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHQgKGUgOiAoXywgXywgZGVjcmVhc2luZykgdCkgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RyZWUgdHJlZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyB0cmVlIEVuZFxuICAgIGxldCBvZl90cmVlX3JpZ2h0IHRyZWUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgdHJlZSBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCBfLCByLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJiBpZiBwaHlzX2VxdWFsIHIxIHIyIHRoZW4gbG9vcCBlMSBlMiBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYylcbiAgICAgICAgfCBfLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIHQxIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBMZWZ0IGRhdGEpIGFjYylcbiAgICAgICAgfCBNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYEJvdGggKHYxLCB2MikpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYExlZnQgdjEpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyIG5leHQpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMiB+ZGF0YTooYFJpZ2h0IHYyKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgaW5pdFxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrZXksIGBSaWdodCBkYXRhKSwgKEVuZCwgY29ucyB0cmVlIGVudW0pKVxuICAgICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrZXksIGBMZWZ0IGRhdGEpLCAoY29ucyB0cmVlIGVudW0sIEVuZCkpXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGRhdGFfZXF1YWwgdjEgdjJcbiAgICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Ta2lwIG5leHRfc3RhdGVcbiAgICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsxLCBgVW5lcXVhbCAodjEsIHYyKSksIG5leHRfc3RhdGUpKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazEsIGBMZWZ0IHYxKSwgKGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0KSlcbiAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMiwgYFJpZ2h0IHYyKSwgKGxlZnQsIGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl90cmVlIHQxLCBvZl90cmVlIHQyKSB+ZjpzdGVwXG4gICAgOztcblxuICAgIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsZWZ0IHJpZ2h0IGFjYyA9XG4gICAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBFbmQsIGVudW0gLT4gZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgZW51bSwgRW5kIC0+IGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBpZiBkYXRhX2VxdWFsIHYxIHYyIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGsxLCBgVW5lcXVhbCAodjEsIHYyKSkgaW5cbiAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgIHRoZW4gbG9vcCBlbnVtMSBlbnVtMiBhY2NcbiAgICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgazEgdjEgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHJpZ2h0IGFjYylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsyIHYyIGluXG4gICAgICAgICAgICBsb29wIGxlZnQgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChvZl90cmVlIHQxKSAob2ZfdHJlZSB0MikgaW5pdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrLCB2KSwgRW51bS5jb25zIHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoaywgdiksIEVudW0uY29uc19yaWdodCB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlX3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nX2tleSlcbiAgICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfa2V5IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIChrZXksIGRhdGEpIC0+IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXlcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2xlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MilcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBFbnVtLmVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKVxuICA7O1xuXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDJcbiAgICAgIGNvbXBhcmVfa2V5XG4gICAgICAoRW51bS5vZl90cmVlIHQxKVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MilcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKCkgLT4gZiB+a2V5IH5kYXRhKVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgb2xkX3ZhbHMsIEVtcHR5IC0+XG4gICAgICAgICAgZm9sZCBvbGRfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IExlYWYgKGssIHYpLCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IGsgaycgd2l0aFxuICAgICAgICAgICB8IHggd2hlbiB4ID0gMCAtPiBkZWx0YSBhY2MgayB2IHYnXG4gICAgICAgICAgIHwgeCB3aGVuIHggPCAwIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgayB2IGluXG4gICAgICAgICAgICAgYWRkIGFjYyBrJyB2J1xuICAgICAgICAgICB8IF8gKCogd2hlbiB4ID4gMCAqKSAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsnIHYnIGluXG4gICAgICAgICAgICAgcmVtb3ZlIGFjYyBrIHYpXG4gICAgICAgIHwgTm9kZSAobCwgaywgdiwgciwgXyksIE5vZGUgKGwnLCBrJywgdicsIHInLCBfKSB3aGVuIGNvbXBhcmVfa2V5IGsgaycgPSAwIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGxvb3AgbCBsJyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gZGVsdGEgYWNjIGsgdiB2JyBpblxuICAgICAgICAgIGxvb3AgciByJyBhY2NcbiAgICAgICAgKCogT3VyIHJvb3RzIGFyZW4ndCB0aGUgc2FtZSBrZXkuIEZhbGxiYWNrIHRvIHRoZSBzbG93IG1vZGUuIFRyZWVzIHdpdGggc21hbGxcbiAgICAgICAgICAgZGlmZnMgd2lsbCBvbmx5IGRvIHRoaXMgb24gdmVyeSBzbWFsbCBwYXJ0cyBvZiB0aGUgdHJlZSAoaG9wZWZ1bGx5IC0gaWYgdGhlXG4gICAgICAgICAgIG92ZXJhbGwgcm9vdCBpcyByZWJhbGFuY2VkLCB3ZSdsbCBlYXQgdGhlIHdob2xlIGNvc3QsIHVuZm9ydHVuYXRlbHkuKSAqKVxuICAgICAgICB8IE5vZGUgXywgTm9kZSBfIHwgTm9kZSBfLCBMZWFmIF8gfCBMZWFmIF8sIE5vZGUgXyAtPiBzbG93IHQgdCcgfmluaXQ6YWNjKVxuICAgIGluXG4gICAgbG9vcCB0MSB0MiBpbml0XG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuICBlbmRcblxuICBtb2R1bGUgT2ZfZm9sZGFibGUgKE0gOiBGb2xkYWJsZSkgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfZm9sZGFibGVfZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAoYWNjdW0sIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IHByZXZfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5pdFxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRhdGEgPSBmIHByZXZfZGF0YSBkYXRhIGluXG4gICAgICAgIHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIChhY2N1bSwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgbmV3X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBmIHByZXYgZGF0YVxuICAgICAgICBpblxuICAgICAgICBzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhOm5ld19kYXRhIH5jb21wYXJlX2tleSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAodCwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgbGVuZ3RoJykgYXMgYWNjKSA9IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KSBlbHNlIGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9hbGlzdCA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJhbGlzdFwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGZvbGQgPSBMaXN0LmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX2FsaXN0ID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2V4blxuXG4gICgqIFJldmVyc2UgdGhlIGlucHV0LCB0aGVuIGZvbGQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBUaGUgcmVzdWx0aW5nIG1hcCB1c2VzIHRoZSBmaXJzdFxuICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICBvdXRwdXQgbGlzdCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQgbGlzdC4gKilcbiAgbGV0IG9mX2ZvbGRhYmxlX211bHRpIGZvbGRhYmxlIH5mb2xkIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFsaXN0ID0gZm9sZCBmb2xkYWJsZSB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIGluXG4gICAgb2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXkgPVxuICAgIG9mX2ZvbGRhYmxlX211bHRpIGFsaXN0IH5mb2xkOkxpc3QuZm9sZCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcXVlbmNlIH5jb21wYXJlX2tleSA9XG4gICAgb2ZfZm9sZGFibGVfbXVsdGkgc2VxdWVuY2UgfmZvbGQ6U2VxdWVuY2UuZm9sZCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgbm90IChmIGRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBub3QgKGYgfmtleSB+ZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbiAgOztcblxuICBsZXQgdG9fYWxpc3QgPyhrZXlfb3JkZXIgPSBgSW5jcmVhc2luZykgdCA9XG4gICAgbWF0Y2gga2V5X29yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICAgIHwgYERlY3JlYXNpbmcgLT4gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGVsdHMgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOihsZW5ndGggdDEgKyBsZW5ndGggdDIpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIyIHQxIHQyIH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGE6dmFsdWVzIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgdmFsdWVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICBVbmlmb3JtX2FycmF5LnNldCBlbHRzICFpIChrZXksIHZhbHVlKTtcbiAgICAgICAgaW5jciBpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAgIGxldCBsZW4gPSAhaSBpblxuICAgIGxldCBnZXQgaSA9IFVuaWZvcm1fYXJyYXkuZ2V0IGVsdHMgaSBpblxuICAgIGxldCB0cmVlID0gb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZjpnZXQgaW5cbiAgICB0cmVlLCBsZW5cbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkID1cbiAgICBsZXQgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoX2xhcmdlIHRfbGFyZ2UgdF9zbWFsbCB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgZm9sZCB0X3NtYWxsIH5pbml0Oih0X2xhcmdlLCBsZW5ndGhfbGFyZ2UpIH5mOihmdW4gfmtleSB+ZGF0YTpkYXRhJyAodCwgbGVuZ3RoKSAtPlxuICAgICAgICB1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGRhdGEnXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gY2FsbCBjb21iaW5lIH5rZXkgZGF0YSBkYXRhJykpXG4gICAgaW5cbiAgICBsZXQgY2FsbCBmIH5rZXkgeCB5ID0gZiB+a2V5IHggeSBpblxuICAgIGxldCBzd2FwIGYgfmtleSB4IHkgPSBmIH5rZXkgeSB4IGluXG4gICAgZnVuIHQxIHQyIH5sZW5ndGgxIH5sZW5ndGgyIH5jb21iaW5lIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgbGVuZ3RoMiA8PSBsZW5ndGgxXG4gICAgICB0aGVuIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDEgdDEgdDIgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDIgdDIgdDEgfmNhbGw6c3dhcCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgQ2xvc2VzdF9rZXlfaW1wbCA9IHN0cnVjdFxuICAgICgqIFttYXJrZXJdIGFuZCBbcmVwYWNrYWdlXSBhbGxvdyB1cyB0byBjcmVhdGUgXCJsb2dpY2FsXCIgb3B0aW9ucyB3aXRob3V0IGFjdHVhbGx5XG4gICAgICAgYWxsb2NhdGluZyBhbnkgb3B0aW9ucy4gUGFzc2luZyBbRm91bmQga2V5IHZhbHVlXSB0byBhIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICBwYXNzaW5nIFtTb21lIChrZXksIHZhbHVlKV07IHBhc3NpbmcgW01pc3NpbmcgKCkgKCldIGlzIGVxdWl2YWxlbnQgdG8gcGFzc2luZ1xuICAgICAgIFtOb25lXS4gKilcbiAgICB0eXBlICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXIgPVxuICAgICAgfCBNaXNzaW5nIDogKCdrLCAndiwgdW5pdCwgdW5pdCkgbWFya2VyXG4gICAgICB8IEZvdW5kIDogKCdrLCAndiwgJ2ssICd2KSBtYXJrZXJcblxuICAgIGxldCByZXBhY2thZ2VcbiAgICAgICAgICAodHlwZSBrIHYga19vcHQgdl9vcHQpXG4gICAgICAgICAgKG1hcmtlciA6IChrLCB2LCBrX29wdCwgdl9vcHQpIG1hcmtlcilcbiAgICAgICAgICAoayA6IGtfb3B0KVxuICAgICAgICAgICh2IDogdl9vcHQpXG4gICAgICA6IChrICogdikgb3B0aW9uXG4gICAgICA9XG4gICAgICBtYXRjaCBtYXJrZXIgd2l0aFxuICAgICAgfCBNaXNzaW5nIC0+IE5vbmVcbiAgICAgIHwgRm91bmQgLT4gU29tZSAoaywgdilcbiAgICA7O1xuXG4gICAgKCogVGhlIHR5cGUgc2lnbmF0dXJlIGlzIGV4cGxpY2l0IGhlcmUgdG8gYWxsb3cgcG9seW1vcnBoaWMgcmVjdXJzaW9uLiAqKVxuICAgIGxldCByZWMgbG9vcCA6XG4gICAgICAnayAndiAna19vcHQgJ3Zfb3B0LlxuICAgICAgKCdrLCAndikgdHJlZVxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2tcbiAgICAgIC0+IGNvbXBhcmVfa2V5OignayAtPiAnayAtPiBpbnQpXG4gICAgICAtPiAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyXG4gICAgICAtPiAna19vcHRcbiAgICAgIC0+ICd2X29wdFxuICAgICAgLT4gKCdrICogJ3YpIG9wdGlvblxuICAgICAgPVxuICAgICAgZnVuIHQgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gLT4gYyA+PSAwXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT4gYyA+IDBcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gYyA8PSAwXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT4gYyA8IDBcbiAgICAgICAgICB0aGVuIFNvbWUgKGsnLCB2JylcbiAgICAgICAgICBlbHNlIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTm9kZSAobCwgaycsIHYnLCByLCBfKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIGMgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGlzIGlzIGEgYmFzZSBjYXNlIChubyByZWN1cnNpdmUgY2FsbCkuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IFNvbWUgKGsnLCB2JylcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSByIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtaW5fZWx0IHJcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSBsIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtYXhfZWx0IGwpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBXZSBhcmUgZ3VhcmFudGVlZCBoZXJlIHRoYXQgaycgPD4gay4gKilcbiAgICAgICAgICAgICgqIFRoaXMgaXMgdGhlIG9ubHkgcmVjdXJzaXZlIGNhc2UuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjIDwgMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBjbG9zZXN0X2tleSB0IGRpciBrIH5jb21wYXJlX2tleSA9IGxvb3AgdCBkaXIgayB+Y29tcGFyZV9rZXkgTWlzc2luZyAoKSAoKVxuICBlbmRcblxuICBsZXQgY2xvc2VzdF9rZXkgPSBDbG9zZXN0X2tleV9pbXBsLmNsb3Nlc3Rfa2V5XG5cbiAgbGV0IHJlYyByYW5rIHQgayB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaycsIF8pIC0+IGlmIGNvbXBhcmVfa2V5IGsnIGsgPSAwIHRoZW4gU29tZSAwIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaycsIF8sIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIFNvbWUgKGxlbmd0aCBsKVxuICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgdGhlbiByYW5rIGwgayB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgT3B0aW9uLm1hcCAocmFuayByIGsgfmNvbXBhcmVfa2V5KSB+ZjooZnVuIHJhbmsgLT4gcmFuayArIDEgKyBsZW5ndGggbClcbiAgOztcblxuICAoKiB0aGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtTZXF1ZW5jZV0gaW50ZXJmYWNlIGJ1dCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uXG4gICAgIGFsbG9jYXRlcyBvbmx5IDIgd29yZHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB3cml0ZS1iYXJyaWVyICopXG4gIGxldCByZWMgbnRoJyBudW1fdG9fc2VhcmNoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+XG4gICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgIGVsc2UgKFxuICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgIE5vbmUpXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgKG1hdGNoIG50aCcgbnVtX3RvX3NlYXJjaCBsIHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHNvbWVcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgICAgbnRoJyBudW1fdG9fc2VhcmNoIHIpKVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gbnRoJyAocmVmIG4pIHRcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8IDApXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID4gMClcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRdIGZpbmRzIHRoZSBrZXkgaW4gW3RdIHdoaWNoIHNhdGlzZmllcyBbbWF5YmVfYm91bmRdXG4gICAgIGFuZCB0aGUgcmVsZXZhbnQgb25lIG9mIFtpZl9leGNsdXNpdmVdIG9yIFtpZl9pbmNsdXNpdmVdLCBhcyBqdWRnZWQgYnkgW2NvbXBhcmVdLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSB+aWZfZXhjbHVzaXZlIH5pZl9pbmNsdXNpdmUgPVxuICAgIGxldCBmaW5kX2JvdW5kIHQgaG93IGJvdW5kIH5jb21wYXJlIDogXyBNYXliZV9ib3VuZC50IG9wdGlvbiA9XG4gICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIHQgaG93IGJvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgIHwgU29tZSAoYm91bmQsIF8pIC0+IFNvbWUgKEluY2wgYm91bmQpXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggKG1heWJlX2JvdW5kIDogXyBNYXliZV9ib3VuZC50KSB3aXRoXG4gICAgfCBFeGNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9leGNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IEluY2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2luY2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgVW5ib3VuZGVkIC0+IFNvbWUgVW5ib3VuZGVkXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kc10gZmluZHMgdGhlIChub3QgbmVjZXNzYXJpbHkgZGlzdGluY3QpIGtleXMgaW4gW3RdXG4gICAgIHdoaWNoIG1vc3QgY2xvc2VseSBhcHByb2FjaCAoYnV0IGRvIG5vdCBjcm9zcykgW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXSwgYXNcbiAgICAganVkZ2VkIGJ5IFtjb21wYXJlXS4gSXQgcmV0dXJucyBbTm9uZV0gaWYgbm8ga2V5cyBpbiBbdF0gYXJlIHdpdGhpbiB0aGF0IHJhbmdlLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGZpbmRfbG93ZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIGxldCBmaW5kX3VwcGVyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbWF0Y2ggZmluZF9sb3dlcl9ib3VuZCB0IGxvd2VyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBsb3dlcl9ib3VuZCAtPlxuICAgICAgKG1hdGNoIGZpbmRfdXBwZXJfYm91bmQgdCB1cHBlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgdXBwZXJfYm91bmQgLT4gU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSlcbiAgOztcblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgKiBpbnRcbiAgICB9XG5cbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhY2MgPSB7IGJhZF9rZXkgPSBOb25lOyBtYXBfbGVuZ3RoID0gZW1wdHksIDAgfSBpblxuICAgIGl0ZXJpIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0IG1hcCwgbGVuZ3RoID0gYWNjLm1hcF9sZW5ndGggaW5cbiAgICAgIGxldCAoKF8sIGxlbmd0aCcpIGFzIHBhaXIpID0gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBtYXAgfmNvbXBhcmVfa2V5IGluXG4gICAgICBpZiBsZW5ndGggPSBsZW5ndGgnICYmIE9wdGlvbi5pc19ub25lIGFjYy5iYWRfa2V5XG4gICAgICB0aGVuIGFjYy5iYWRfa2V5IDwtIFNvbWUga2V5XG4gICAgICBlbHNlIGFjYy5tYXBfbGVuZ3RoIDwtIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBsZXQgb2tzLCAoZXJyb3JfdHJlZSwgXykgPSBwYXJ0aXRpb25fbWFwIHQgfmNvbXBhcmVfa2V5IH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgICBpZiBpc19lbXB0eSBlcnJvcl90cmVlXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JfdHJlZSlcbiAgOztcblxuICBsZXQgbWFwX2tleXNcbiAgICAgICAgdDFcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3I6KHsgY29tcGFyZSA9IGNvbXBhcmVfa2V5OyBzZXhwX29mX3QgPSBzZXhwX29mX2tleSB9IDogXyBDb21wYXJhdG9yLnQpXG4gICAgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgYE9rXG4gICAgICAgIChmb2xkIHQxIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biB+a2V5IH5kYXRhICh0MiwgbGVuZ3RoKSAtPlxuICAgICAgICAgICBsZXQga2V5ID0gZiBrZXkgaW5cbiAgICAgICAgICAgdHJ5IGFkZF9leG5faW50ZXJuYWwgdDIgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgd2l0aFxuICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSlcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHJlc3VsdCAtPiByZXN1bHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiTWFwLm1hcF9rZXlzX2V4bjogZHVwbGljYXRlIGtleVwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5lbmRcblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdrLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICgnaywgJ3YpIFRyZWUwLnRcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuXG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gKHRyZWUsIGxlbmd0aCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZTIgeCAoeSwgeikgPSBsaWtlIHggeSwgbGlrZSB4IHpcblxubGV0IGxpa2VfbWF5YmVfbm9fb3AgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpICh0cmVlLCBsZW5ndGgpXG4gID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgd2l0aF9zYW1lX2xlbmd0aCB7IHRyZWUgPSBfOyBjb21wYXJhdG9yOyBsZW5ndGggfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxubGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4oKiBFeHBvc2luZyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IGZvciB0aGUgaW52YXJpYW50c1xuICAgb2YgdGhpcyBtb2R1bGUgdG8gYmUgYnJva2VuLiAqKVxubGV0IG9mX3RyZWVfdW5zYWZlIH5jb21wYXJhdG9yIH5sZW5ndGggdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcblxuICBsZXQgaW52YXJpYW50cyB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpICYmIFRyZWUwLmxlbmd0aCB0LnRyZWUgPSB0Lmxlbmd0aFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2UgdCAoVHJlZTAuc2V0IHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgICBsaWtlIHQgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IGtleSA9IFRyZWUwLmZpbmRfbXVsdGkgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiA9XG4gICAgbGlrZSB0IChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9XG4gICAgbGlrZSB0IChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdC50cmVlXG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgdCBrZXkgPSBUcmVlMC5maW5kIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCByZW1vdmUgdCBrZXkgPVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmUgdC50cmVlIGtleSB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MS50cmVlIHQyLnRyZWUgfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX2tleXMgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyaSB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX21hcGkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uaV90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjoobGlrZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfZGF0YSB0MSB0MiA9IFRyZWUwLmVxdWFsIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0LnRyZWVcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdC50cmVlXG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHQudHJlZVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxLnRyZWVcbiAgICAgIHQyLnRyZWVcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mID1cbiAgICBsaWtlIHQxIChUcmVlMC5tZXJnZSB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBsZWZ0LCBtaWQsIHJpZ2h0ID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlIHQudHJlZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgb3V0ZXJfam9pbmVkX2hlaWdodCA9XG4gICAgICBsZXQgaF9sID0gVHJlZTAuaGVpZ2h0IGxlZnRcbiAgICAgIGFuZCBoX3IgPSBUcmVlMC5oZWlnaHQgcmlnaHQgaW5cbiAgICAgIGlmIGhfbCA9IGhfciB0aGVuIGhfbCArIDEgZWxzZSBtYXggaF9sIGhfclxuICAgIGluXG4gICAgaWYgb3V0ZXJfam9pbmVkX2hlaWdodCA8IFRyZWUwLmhlaWdodCBtaWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBtaWRfbGVuZ3RoID0gdC5sZW5ndGggLSAoVHJlZTAubGVuZ3RoIGxlZnQgKyBUcmVlMC5sZW5ndGggcmlnaHQpIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdCkgfmxlbmd0aDptaWRfbGVuZ3RoKVxuICAgIGVsc2Ugb2ZfdHJlZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdClcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYXBwZW5kXG4gICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgbG93ZXJfcGFydClcbiAgICAgICAgfmxvd2VyX3BhcnQ6bG93ZXJfcGFydC50cmVlXG4gICAgICAgIH51cHBlcl9wYXJ0OnVwcGVyX3BhcnQudHJlZVxuICAgIHdpdGhcbiAgICB8IGBPayB0cmVlIC0+XG4gICAgICBgT2tcbiAgICAgICAgKG9mX3RyZWVfdW5zYWZlXG4gICAgICAgICAgIHRyZWVcbiAgICAgICAgICAgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgbG93ZXJfcGFydClcbiAgICAgICAgICAgfmxlbmd0aDoobG93ZXJfcGFydC5sZW5ndGggKyB1cHBlcl9wYXJ0Lmxlbmd0aCkpXG4gICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmUgdC50cmVlIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0LnRyZWUgfm1pbiB+bWF4IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0LnRyZWUgZGlyIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdC50cmVlIG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgdCBrZXkgPSBUcmVlMC5yYW5rIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0LnRyZWUgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IGxpa2VfbWF5YmVfbm9fb3AgdCAoRW1wdHksIDApXG4gIDs7XG5lbmRcblxuKCogWzBdIGlzIHVzZWQgYXMgdGhlIFtsZW5ndGhdIGFyZ3VtZW50IGV2ZXJ5d2hlcmUgaW4gdGhpcyBtb2R1bGUsIHNpbmNlIHRyZWVzIGRvIG5vdFxuICAgaGF2ZSB0aGVpciBsZW5ndGhzIHN0b3JlZCBhdCB0aGUgcm9vdCwgdW5saWtlIG1hcHMuIFRoZSB2YWx1ZXMgYXJlIGRpc2NhcmRlZCBhbHdheXMuICopXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID0gKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBrIHYgPSBUcmVlMC5zaW5nbGV0b24gayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGZzdCAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID0gZnN0IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IGZzdCAoVHJlZTAub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcilcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6X3JlcXVpcmVkX2J5X2ludGYgfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjpmc3RcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b190cmVlIHQgPSB0XG5cbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuXG4gIGxldCBzZXQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBmc3QgKFRyZWUwLnNldCB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIGZzdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHRcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+bGVuZ3RoOjBcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICB0cnkgYE9rIChhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSkgd2l0aFxuICAgIHwgXyAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IGZzdFxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLnJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHw+IGZzdFxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGZzdCAoVHJlZTAuY2hhbmdlIHQga2V5IH5mIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBmc3QgKFRyZWUwLnJlbW92ZSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5tZW0gdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0IH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdCB+ZlxuXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgVHJlZTAuaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gVHJlZTAubWFwIHQgfmZcbiAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwLm1hcGkgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+ZiB+aW5pdCB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgfmNvbXBhcmF0b3IgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXIgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXIgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfbWFwaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB+Y29tcGFyYXRvciB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOmZzdFxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzXG4gICAgICAgICB0XG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuZXF1YWwgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdFxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0XG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHRcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MVxuICAgICAgdDJcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgZnN0IChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB+Y29tcGFyYXRvciB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogTGVuZ3RoIGNvbXB1dGF0aW9uIG1ha2VzIHRoaXMgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBbbWVyZ2Vfc2tld2VkXSBvbiBhIG1hcFxuICAgICAgIHdpdGggYSBbbGVuZ3RoXSBmaWVsZCwgYnV0IGRvZXMgcHJlc2VydmUgYW1vdW50IG9mIGFsbG9jYXRpb24uICopXG4gICAgZnN0XG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MVxuICAgICAgICAgdDJcbiAgICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgICB+bGVuZ3RoMjoobGVuZ3RoIHQyKVxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdCB+ZlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBrID0gVHJlZTAuc3BsaXQgdCBrIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIGZzdCAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gRW1wdHlcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgKHQsIF8pIC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSBmc3QgKFRyZWUwLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mKVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAndykgdCA9ICgnaywgJ3YpIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudFxuXG4gICAgbGV0IGVtcHR5ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuXG4gICAgbGV0IGFkZF9leG4gdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSB0IHdpdGhcbiAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgIEVycm9yLnJhaXNlX3MgKFNleHAuQXRvbSBcIk1hcC5CdWlsZF9pbmNyZWFzaW5nLmFkZDogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICB8IF8gLT4gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQgfmtleSB+ZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZSB0ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2ID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGsgdjsgbGVuZ3RoID0gMSB9XG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAodHJlZSwgbGVuZ3RoKSA9IHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IG9mX3RyZWUwIH5jb21wYXJhdG9yICh0cmVlLCBUcmVlMC5sZW5ndGggdHJlZSlcbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgICB+ZjooZnVuIHRyZWUgLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIGxlbmd0aCkgLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiwgbGVuKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjoob2ZfdHJlZTAgfmNvbXBhcmF0b3IpXG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBsZW5ndGgpIC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yID0gSy5jb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl90cmVlICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpIHRyZWUgPVxuICBvZl90cmVlIH5jb21wYXJhdG9yOk0uY29tcGFyYXRvciB0cmVlXG47O1xuXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdF9tdWx0aSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X2ZvbGQgbSBhIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9hbGlzdF9yZWR1Y2UgbSBhIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2l0ZXJpIG0gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcblxubGV0IG9mX2l0ZXJpX2V4biBtIH5pdGVyaSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgbSBzZXEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc2VxXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2UgbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9leG4gbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2VfbXVsdGkgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZm9sZCBtIHMgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+aW5pdCB+ZlxuOztcblxubGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBtIHMgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5mXG47O1xuXG5sZXQgbWFwX2tleXMgbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgbWFwX2tleXNfZXhuIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcblxubW9kdWxlIE0gKEsgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgayBjbXApXG4gICAgICAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHZfb2Zfc2V4cFxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpLLmNvbXBhcmF0b3IgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgaylcbiAgICAgIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaylcbiAgICAgICh2X2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICB7IHVudHlwZWQgPVxuICAgICAgTGlzdFxuICAgICAgICAoTWFueSAoTGlzdCAoQ29ucyAoSy50X3NleHBfZ3JhbW1hci51bnR5cGVkLCBDb25zICh2X2dyYW1tYXIudW50eXBlZCwgRW1wdHkpKSkpKVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBDYW1sLlF1ZXVlLnRcblxubGV0IGNyZWF0ZSA9IENhbWwuUXVldWUuY3JlYXRlXG5sZXQgY2xlYXIgPSBDYW1sLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IENhbWwuUXVldWUuY29weVxubGV0IGlzX2VtcHR5ID0gQ2FtbC5RdWV1ZS5pc19lbXB0eVxubGV0IGxlbmd0aCA9IENhbWwuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IENhbWwuUXVldWUucGVla1xubGV0IHBvcCA9IENhbWwuUXVldWUucG9wXG5sZXQgcHVzaCA9IENhbWwuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gQ2FtbC5RdWV1ZS50cmFuc2ZlclxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuUXVldWUuaXRlciBmIHRcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLlF1ZXVlLmZvbGQgZiBpbml0IHRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaW5rZWRfcXVldWUwXG5cbmxldCBlbnF1ZXVlIHQgeCA9IExpbmtlZF9xdWV1ZTAucHVzaCB4IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucG9wIHQpXG5sZXQgZGVxdWV1ZV9leG4gPSBMaW5rZWRfcXVldWUwLnBvcFxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wZWVrIHQpXG5sZXQgcGVla19leG4gPSBMaW5rZWRfcXVldWUwLnBlZWtcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgaXRlcmkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb2xkaSA9IEMuZm9sZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbmxldCBpdGVyaSA9IEMuaXRlcmlcbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPSBMaW5rZWRfcXVldWUwLnRyYW5zZmVyIHNyYyBkc3RcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGVucXVldWUgcmVzIChmIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGVucXVldWUgcmVzIChmIGkgYSkpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlcmkgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbGlzdCA9IExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyYXkgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IGluaXQgbGVuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBlbnF1ZXVlIHQgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBsZW5ndGggdCB3aXRoXG4gIHwgMCAtPiBbfHxdXG4gIHwgbGVuIC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuIChwZWVrX2V4biB0KSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biB2IC0+XG4gICAgICBhcnIuKCFpKSA8LSB2O1xuICAgICAgaW5jciBpKTtcbiAgICBhcnJcbjs7XG5cbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChsaXN0X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCBzaW5nbGV0b24gYSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCBhO1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLkludDY0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBjb21wYXJlID0gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gNjRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnQ2NF9wb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBDYW1sLkludDY0Lm9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIENhbWwuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiB0IC0+IHQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAxNiB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMzJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXA0OCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDE2XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBpbmNyIHIgPSByIDo9IGFkZCAhciBvbmVcbmxldCBkZWNyIHIgPSByIDo9IHN1YiAhciBvbmVcblxuZXh0ZXJuYWwgb2ZfaW50NjQgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NFxubGV0IHRvX2ludDY0IHQgPSB0XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5leHRlcm5hbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50X3RydW5jIDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLkludDY0LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuSW50NjQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLkludDY0LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLkludDY0LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLkludDY0LnByZWQgeCA9IENhbWwuSW50NjQuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBDYW1sLkludDY0LmVxdWFsIGkgQ2FtbC5JbnQ2NC5vbmUgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuSW50NjQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6IHQgLT4gdCA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6IHQgLT4gdCA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9hbmRcIlxuICBleHRlcm5hbCAoIGxvciApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9vclwiXG4gIGV4dGVybmFsICggbHhvciApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF94b3JcIlxuXG4gIGxldCBsbm90ID0gYml0X25vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfbHNsXCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9hc3JcIlxuICBleHRlcm5hbCAoIGxzciApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCB3cmFwX21vZHVsbyA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCB1bndyYXAgOiB0IC0+IENhbWwuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBDYW1sLkludDY0LnRcblxuICB2YWwgaW52YXJpYW50IDogdCAtPiB1bml0XG4gIHZhbCBhZGQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ViIDogdCAtPiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBzdWNjIDogdCAtPiB0XG4gIHZhbCBwcmVkIDogdCAtPiB0XG4gIHZhbCBtdWwgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93IDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpdiA6IHQgLT4gdCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuICB2YWwgcG9wY291bnQgOiB0IC0+IGludFxuICB2YWwgYml0X25vdCA6IHQgLT4gdFxuICB2YWwgYml0X3hvciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfb3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X2FuZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzaGlmdF9sZWZ0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50NjQgOiB0IC0+IENhbWwuSW50NjQudFxuICB2YWwgb2ZfaW50NjQgOiBDYW1sLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCBvZl9pbnQ2NF90cnVuYyA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgY2VpbF9wb3cyIDogdCAtPiB0XG4gIHZhbCBmbG9vcl9wb3cyIDogdCAtPiB0XG4gIHZhbCBjZWlsX2xvZzIgOiB0IC0+IGludFxuICB2YWwgZmxvb3JfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBpc19wb3cyIDogdCAtPiBib29sXG4gIHZhbCBjbHogOiB0IC0+IGludFxuICB2YWwgY3R6IDogdCAtPiBpbnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFQwXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICBsZXQgd3JhcF9leG4geCA9XG4gICAgKCogUmFpc2VzIGlmIHRoZSBpbnQ2NCB2YWx1ZSBkb2VzIG5vdCBmaXQgb24gaW50NjMuICopXG4gICAgQ29udi5pbnQ2NF9maXRfb25faW50NjNfZXhuIHg7XG4gICAgQ2FtbC5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoQ2FtbC5JbnQ2NC5tdWwgeCAyTCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHdyYXBfbW9kdWxvIHggPSBDYW1sLkludDY0Lm11bCB4IDJMXG4gIGxldCB1bndyYXAgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDFcblxuICAoKiBUaGlzIGRvZXMgbm90IHVzZSB3cmFwIG9yIHVud3JhcCB0byBhdm9pZCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgaW50IHR5cGUgb24gNjQgYml0IGFyY2hpdGVjdHVyZS4gKilcbiAgbGV0IGYyIGYgYSBiID1cbiAgICBDYW1sLkludDY0Lm11bCAoZiAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSkpIDJMXG4gIDs7XG5cbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZl9mZmZmX2ZmZmVMXG4gIGxldCBtIHggPSBDYW1sLkludDY0LmxvZ2FuZCB4IG1hc2tcbiAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChtIHQgPSB0KVxuICBsZXQgYWRkIHggeSA9IENhbWwuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IENhbWwuSW50NjQuc3ViIHggeVxuICBsZXQgbmVnIHggPSBDYW1sLkludDY0Lm5lZyB4XG4gIGxldCBhYnMgeCA9IENhbWwuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBDYW1sLkludDY0Lm1pbl9pbnRcbiAgbGV0IG1heF92YWx1ZSA9IG0gQ2FtbC5JbnQ2NC5tYXhfaW50XG4gIGxldCBiaXRfbm90IHggPSBtIChDYW1sLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IENhbWwuSW50NjQubG9nYW5kXG4gIGxldCBiaXRfeG9yID0gQ2FtbC5JbnQ2NC5sb2d4b3JcbiAgbGV0IGJpdF9vciA9IENhbWwuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gQ2FtbC5JbnQ2NC5zaGlmdF9sZWZ0IHggaVxuICBsZXQgc2hpZnRfcmlnaHQgeCBpID0gbSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCB4IGkpXG4gIGxldCBzaGlmdF9yaWdodF9sb2dpY2FsIHggaSA9IG0gKENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IENhbWwuSW50NjQubXVsIGEgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYiAxKVxuICBsZXQgZGl2IGEgYiA9IHdyYXBfbW9kdWxvIChDYW1sLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gQ2FtbC5JbnQ2NC5yZW0gYSBiXG4gIGxldCBwb3Bjb3VudCB4ID0gUG9wY291bnQuaW50NjRfcG9wY291bnQgeFxuICBsZXQgdG9faW50NjQgdCA9IHVud3JhcCB0XG4gIGxldCBvZl9pbnQ2NCB0ID0gd3JhcCB0XG4gIGxldCBvZl9pbnQ2NF9leG4gdCA9IHdyYXBfZXhuIHRcbiAgbGV0IG9mX2ludDY0X3RydW5jIHQgPSB3cmFwX21vZHVsbyB0XG4gIGxldCB0X29mX3NleHAgeCA9IHdyYXBfZXhuIChpbnQ2NF9vZl9zZXhwIHgpXG4gIGxldCBzZXhwX29mX3QgeCA9IHNleHBfb2ZfaW50NjQgKHVud3JhcCB4KVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgaXNfcG93MiB4ID0gSW50NjQuaXNfcG93MiAodW53cmFwIHgpXG5cbiAgbGV0IGNseiB4ID1cbiAgICAoKiBXZSBydW4gSW50NjQuY2x6IGRpcmVjdGx5IG9uIHRoZSB3cmFwcGVkIGludDYzIHZhbHVlLiBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB0aGVcbiAgICAgICBiaXRzIG9mIHRoZSBpbnQ2M19lbXVsIGFyZSBsZWZ0LWFsaWduZWQgaW4gdGhlIEludDY0LiAqKVxuICAgIEludDY0LmNseiB4XG4gIDs7XG5cbiAgbGV0IGN0eiB4ID0gSW50NjQuY3R6ICh1bndyYXAgeClcbiAgbGV0IGZsb29yX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgY2VpbF9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGZsb29yX2xvZzIgeCA9IEludDY0LmZsb29yX2xvZzIgKHVud3JhcCB4KVxuICBsZXQgY2VpbF9sb2cyIHggPSBJbnQ2NC5jZWlsX2xvZzIgKHVud3JhcCB4KVxuZW5kXG5cbm9wZW4gV1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBXLnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgVy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoVy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChXLnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBXLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBXLmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBXLmNvbXBhcmVcbiAgbGV0IGludmFyaWFudCA9IFcuaW52YXJpYW50XG5cbiAgKCogV2UgZG9uJ3QgZXhwZWN0IFtoYXNoXSB0byBmb2xsb3cgdGhlIGJlaGF2aW9yIG9mIGludCBpbiA2NGJpdCBhcmNoaXRlY3R1cmUgKilcbiAgbGV0IF8gPSBoYXNoXG4gIGxldCBoYXNoICh4IDogdCkgPSBDYW1sLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gQ2FtbC5JbnQ2NC50b19zdHJpbmcgKHVud3JhcCB4KVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnlcbiAgICAgIGxldCBzaWduLCBzaWduZWRuZXNzID0gc2lnbl9hbmRfc2lnbmVkbmVzcyBzdHIgaW5cbiAgICAgIGlmIHNpZ25lZG5lc3NcbiAgICAgIHRoZW4gb2ZfaW50NjRfZXhuIChDYW1sLkludDY0Lm9mX3N0cmluZyBzdHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBvc19zdHIgPVxuICAgICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICAgIHwgYFBvcyAtPiBzdHJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludDY0ID0gQ2FtbC5JbnQ2NC5vZl9zdHJpbmcgcG9zX3N0ciBpblxuICAgICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaW50NjQgMEwgdGhlbiBpbnZhbGlkX3N0ciBzdHI7XG4gICAgICAgIGxldCBpbnQ2MyA9IHdyYXBfbW9kdWxvIGludDY0IGluXG4gICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICB8IGBOZWcgLT4gbmVnIGludDYzXG4gICAgICAgIHwgYFBvcyAtPiBpbnQ2MylcbiAgICB3aXRoXG4gICAgfCBfIC0+IGludmFsaWRfc3RyIHN0clxuICA7O1xuXG4gIGxldCBic3dhcDE2IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAxNiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXAzMiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMzIgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwNDggdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDQ4ICh1bndyYXAgdCkpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBudW1fYml0cyA9IDYzXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBiaXRfbm90XG5sZXQgYml0X3hvciA9IGJpdF94b3JcbmxldCBiaXRfb3IgPSBiaXRfb3JcbmxldCBiaXRfYW5kID0gYml0X2FuZFxubGV0IHBvcGNvdW50ID0gcG9wY291bnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlXG5sZXQgbWludXNfb25lID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC5taW51c19vbmVcbmxldCBvbmUgPSB3cmFwX2V4biBDYW1sLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBDYW1sLkludDY0Lnplcm9cbmxldCBpc19wb3cyID0gaXNfcG93MlxubGV0IGZsb29yX3BvdzIgPSBmbG9vcl9wb3cyXG5sZXQgY2VpbF9wb3cyID0gY2VpbF9wb3cyXG5sZXQgZmxvb3JfbG9nMiA9IGZsb29yX2xvZzJcbmxldCBjZWlsX2xvZzIgPSBjZWlsX2xvZzJcbmxldCBjbHogPSBjbHpcbmxldCBjdHogPSBjdHpcbmxldCB0b19mbG9hdCB4ID0gQ2FtbC5JbnQ2NC50b19mbG9hdCAodW53cmFwIHgpXG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkIHggPSB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5vZl9mbG9hdCB0KVxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2My5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IG9mX2ludDY0ID0gb2ZfaW50NjRcbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IG9mX2ludDY0X3RydW5jXG5sZXQgdG9faW50NjQgPSB0b19pbnQ2NFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcblxuKCogV2UgY2FuIHJldXNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZnJvbS90byBpbnQ2NCBoZXJlLiAqKVxubGV0IG9mX2ludCB4ID0gd3JhcF9leG4gKENvbnYuaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50X2V4biB4ID0gb2ZfaW50IHhcbmxldCB0b19pbnQgeCA9IENvbnYuaW50NjRfdG9faW50ICh1bndyYXAgeClcbmxldCB0b19pbnRfZXhuIHggPSBDb252LmludDY0X3RvX2ludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnRfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX2ludDMyIHggPSB3cmFwX2V4biAoQ29udi5pbnQzMl90b19pbnQ2NCB4KVxubGV0IG9mX2ludDMyX2V4biB4ID0gb2ZfaW50MzIgeFxubGV0IHRvX2ludDMyIHggPSBDb252LmludDY0X3RvX2ludDMyICh1bndyYXAgeClcbmxldCB0b19pbnQzMl9leG4geCA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnQzMl90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfbmF0aXZlaW50IHggPSBvZl9pbnQ2NCAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfZXhuIHggPSB3cmFwX2V4biAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgeCA9IG9mX2ludDY0X3RydW5jIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IHRvX25hdGl2ZWludCB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnQgKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF9leG4geCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuYyAodW53cmFwIHgpXG5cbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKFQuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBULmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IFQuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcblxuICAgIGxldCB0b19zdHJpbmcgaSA9XG4gICAgICAoKiB0aGUgdXNlIG9mIFt1bndyYXBfdW5zaWduZWRdIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0aGUgY2FzZSBvZiBbbWluX3ZhbHVlXSAqKVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlTHhcIiAodW53cmFwX3Vuc2lnbmVkIGkpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IG9mX3N0cmluZyAoXCIweFwiIF4gcylcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjMuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nIHhcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjNcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDYzXSBhbmQgW0ludDYzLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSBlbXVsYXRlZCA9IHRcblxuICB0eXBlICgndW5kZXJseWluZ190eXBlLCAnaW50ZXJtZWRpYXRlX3R5cGUpIHQgPVxuICAgIHwgSW50IDogKGludCwgaW50KSB0XG4gICAgfCBJbnQ2NCA6IChpbnQ2NCwgZW11bGF0ZWQpIHRcbmVuZFxuXG5sZXQgcmVwciA9IFJlcHIuSW50NjRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfYm9vbFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfYm9vbCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoYm9vbF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ib29sIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJvb2xfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcInRydWVcIiAtPiB0cnVlXG4gICAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgICB8IHMgLT4gaW52YWxpZF9hcmdmIFwiQm9vbC5vZl9zdHJpbmc6IGV4cGVjdGVkIHRydWUgb3IgZmFsc2UgYnV0IGdvdCAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gQ2FtbC5PYmoubWFnaWMgeFxuICBsZXQgKCB8fCApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxvciB0b19pbnQgYilcbiAgbGV0ICggJiYgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsYW5kIHRvX2ludCBiKVxuZW5kXG5cbigqIFdlIGRvIHRoaXMgYXMgYSBkaXJlY3QgYXNzZXJ0IG9uIHRoZSB0aGVvcnkgdGhhdCBpdCdzIGEgY2hlYXAgdGhpbmcgdG8gdGVzdCBhbmQgYVxuICAgcmVhbGx5IGNvcmUgaW52YXJpYW50IHRoYXQgd2UgbmV2ZXIgZXhwZWN0IHRvIGJyZWFrLCBhbmQgd2Ugc2hvdWxkIGJlIGhhcHB5IGZvciBhXG4gICBwcm9ncmFtIHRvIGZhaWwgaW1tZWRpYXRlbHkgaWYgdGhpcyBpcyB2aW9sYXRlZC4gKilcbmxldCAoKSA9IGFzc2VydCAoUG9seS4oID0gKSAodG9faW50IHRydWUpIDEgJiYgUG9seS4oID0gKSAodG9faW50IGZhbHNlKSAwKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gMzJcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCBjb21wYXJlID0gY29tcGFyZVxubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDMyLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBJbmZpeF9jb21wYXJlID0gc3RydWN0XG4gIG9wZW4gUG9seVxuXG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0geCA+PSB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0geCA8PSB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0geCA+IHlcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IHggPCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0geCA8PiB5XG5lbmRcblxubW9kdWxlIENvbXBhcmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeF9jb21wYXJlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9pbnQzMiB0ID0gdFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgdCA9IHRcbmxldCB0b19pbnQzMl9leG4gPSB0b19pbnQzMlxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50MzJfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgb2ZfaW50X2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludF90cnVuYyA9IENvbnYuaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50ID0gQ29udi5pbnQzMl90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5pbnQzMl90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5pbnQzMl90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDMyIDogdCAtPiB0ID0gXCIlYnN3YXBfaW50MzJcIlxuXG5sZXQgYnN3YXAxNiB4ID0gQ2FtbC5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDMyIHgpIDE2XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5JbnQzMi5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLkludDMyLnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgQ2FtbC5JbnQzMi5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgQ2FtbC5JbnQzMi5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5JbnQzMi5wcmVkIHggPSBDYW1sLkludDMyLnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQzMiBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQzMi5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgQ2FtbC5JbnQzMi5lcXVhbCBpIENhbWwuSW50MzIub25lIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLkludDMyLnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQzMiA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50MzJcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVseFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBsZXQgcmVwciA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IChDYW1sLk9iai5tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAoQ2FtbC5PYmoubWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOignYSBrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYikgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIG92ZXIgYm90aCBrZXlzIGFuZCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLml0ZXJpIGggfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIHByaW50X2VuZGxpbmUgKFByaW50Zi5zcHJpbnRmIFwiJWQtJWRcIiBrZXkgZGF0YSkpOztcbiAgICAgIDEtNFxuICAgICAgNS02XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fSAqKVxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIFNldHMgdGhlIGdpdmVuIFtrZXldIHRvIFtkYXRhXS4gKilcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2FkZF0gYW5kIFthZGRfZXhuXSBsZWF2ZSB0aGUgdGFibGUgdW5jaGFuZ2VkIGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgcHJlc2VudC4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IFsgYE9rIHwgYER1cGxpY2F0ZSBdXG5cbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIGNoYW5nZXMgW3RdJ3MgdmFsdWUgZm9yIFtrZXldIHRvIGJlIFtmIChmaW5kIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlX2FuZF9yZXR1cm4gdCBrZXkgfmZdIGlzIFt1cGRhdGVdLCBidXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIFtmIG9dLiAqKVxuICB2YWwgdXBkYXRlX2FuZF9yZXR1cm4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIFttYXAgdCBmXSByZXR1cm5zIGEgbmV3IHRhYmxlIHdpdGggdmFsdWVzIHJlcGxhY2VkIGJ5IHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgW2ZdXG4gICAgICB0byB0aGUgY3VycmVudCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBsZXQgaCcgPSBIYXNodGJsLm1hcCBoIH5mOihmdW4geCAtPiB4ICogMikgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgdGFibGUgYnkgZmlsdGVyaW5nIHRoZSBnaXZlbiB0YWJsZSdzIHZhbHVlcyBieSBbZl06IHRoZSBrZXlzIGZvciB3aGljaFxuICAgICAgW2ZdIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcmV0dXJucyBbU29tZV0gYXJlIGtlcHQsIGFuZCB0aG9zZSBmb3Igd2hpY2ggaXRcbiAgICAgIHJldHVybnMgW05vbmVdIGFyZSBkaXNjYXJkZWQuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLmZpbHRlcl9tYXAgaCB+ZjooZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooJ2Ega2V5IC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl90Zl0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogW2ZpbmRfb3JfYWRkIHQgayB+ZGVmYXVsdF0gcmV0dXJucyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFtrXSBpZiBpdCBpcyBpbiB0aGVcbiAgICAgIHRhYmxlIFt0XSwgYW5kIG90aGVyd2lzZSBhc3NpZ25zIFtrXSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgW2RlZmF1bHQgKCldLiAqKVxuICB2YWwgZmluZF9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0Oih1bml0IC0+ICdiKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooJ2Ega2V5IC0+ICdiKSAtPiAnYlxuXG4gICgqKiBbZmluZCB0IGtdIHJldHVybnMgW1NvbWVdICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBba10gaW4gW3RdLCBvciBbTm9uZV0gaWYgbm8gc3VjaFxuICAgICAgYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIFtmaW5kX2V4biB0IGtdIHJldHVybnMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBba10gaW4gW3RdLCBvciByYWlzZXMgW0NhbWwuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICAoKiogSnVzdCBsaWtlIFtmaW5kX2FuZF9jYWxsXSwgYnV0IHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHdoaWNoIGlzIHBhc3NlZCB0byBbaWZfZm91bmRdXG4gICAgICBhbmQgW2lmX25vdF9mb3VuZF0sIHNvIHRoYXQgdGhlIGNsaWVudCBjb2RlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGNsb3N1cmVzIG9yIHVzaW5nXG4gICAgICByZWZzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBpbiBjb2RlXG4gICAgICB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBoZWFwIGFsbG9jYXRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdkIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+ICdhIC0+ICdiIG9wdGlvbiAtPiAnYiBNZXJnZV9pbnRvX2FjdGlvbi50KVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwga2V5cyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBrZXkgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBkYXRhIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcblxuICAoKiogW2ZpbHRlcl9pbnBsYWNlIHQgfmZdIHJlbW92ZXMgYWxsIHRoZSBlbGVtZW50cyBmcm9tIFt0XSB0aGF0IGRvbid0IHNhdGlzZnkgW2ZdLiAqKVxuICB2YWwgZmlsdGVyX2tleXNfaW5wbGFjZSA6ICgnYSwgXykgdCAtPiBmOignYSBrZXkgLT4gYm9vbCkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiB1bml0XG5cbiAgKCoqIFttYXBfaW5wbGFjZSB0IH5mXSBhcHBsaWVzIFtmXSB0byBhbGwgZWxlbWVudHMgaW4gW3RdLCB0cmFuc2Zvcm1pbmcgdGhlbSBpblxuICAgICAgcGxhY2UuICopXG4gIHZhbCBtYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiAnYikgLT4gdW5pdFxuXG4gIHZhbCBtYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYikgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAoJ2Ega2V5LCAnciwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgZ3JvdXBcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgICAgICAtPiBjb21iaW5lOignYiAtPiAnYiAtPiAnYilcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiAoJ2EsICdiKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9ycyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogezIgQ3JlYXRvcnN9ICopXG5cbiAgKCoqIFRoZSBtb2R1bGUgeW91IHBhc3MgdG8gW2NyZWF0ZV0gbXVzdCBoYXZlIGEgdHlwZSB0aGF0IGlzIGhhc2hhYmxlLCBzZXhwYWJsZSwgYW5kXG4gICAgICBjb21wYXJhYmxlLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCk7O1xuICAgICAgICAtIDogKGludCwgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+OztcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDMsIFwic29tZXRoaW5nXCIpOyAoMiwgXCJ3aGF0ZXZlclwiKV1cbiAgICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogV2hlcmVhcyBbb2ZfYWxpc3RdIHdpbGwgcmVwb3J0IFtEdXBsaWNhdGVfa2V5XSBubyBtYXR0ZXIgaG93IG1hbnkgZHVwcyB0aGVyZSBhcmUgaW5cbiAgICAgIHlvdXIgbGlzdCwgW29mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc10gd2lsbCByZXBvcnQgZWFjaCBhbmQgZXZlcnkgZHVwbGljYXRlIGVudHJ5LlxuXG4gICAgICBGb3IgZXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5IDFcblxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5cyBbMTsgMl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSB7eyFNdWx0aX0gXCJtdWx0aVwifSBoYXNodGFibGUsIGkuZS4sIGEgaGFzaHRhYmxlIHdoZXJlIGVhY2gga2V5IHBvaW50cyB0byBhXG4gICAgICBsaXN0IHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbXVsdGlwbGUgdmFsdWVzLiBTbyBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgd2l0aCBhXG4gICAgICBbYER1cGxpY2F0ZV9rZXldIHZhcmlhbnQgb24gZHVwbGljYXRlcywgYXMgaW4gW29mX2FsaXN0XSwgW29mX2FsaXN0X211bHRpXSBmb2xkc1xuICAgICAgdGhvc2UgdmFsdWVzIGludG8gYSBsaXN0IGZvciB0aGUgZ2l2ZW4ga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X211bHRpIChtb2R1bGUgSW50KSBbKDEsIFwiYVwiKTsgKDEsIFwiYlwiKTsgKDIsIFwiY1wiKTsgKDIsIFwiZFwiKV07O1xuICAgICAgdmFsIGggOiAoaW50LCBzdHJpbmcgbGlzdCkgSGFzaHRibC50ID0gPGFic3RyPlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAtIDogc3RyaW5nIGxpc3QgPSBbXCJiXCI7IFwiYVwiXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICAoKiogQXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyIGxpc3RdIHRvIGNyZWF0ZSB0aGVcbiAgICAgIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZS5cblxuICAgICAge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl1cbiAgICAgIF19XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBIYXNodGJsLmNyZWF0ZV9tYXBwZWQgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgICB+Z2V0X2tleTooZnVuIHggLT4geClcbiAgICAgICAgICAgIH5nZXRfZGF0YTooZnVuIHggLT4geCArIDEpXG4gICAgICAgICAgIFsxOyAyOyAzXTs7XG4gICAgICAgIHZhbCBoIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgaW50KSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG5cbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIG1hdGNoIGggd2l0aFxuICAgICAgICAgIHwgYE9rIHggLT4geFxuICAgICAgICAgIHwgYER1cGxpY2F0ZV9rZXlzIF8gLT4gZmFpbHdpdGggXCJcIlxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAgIC0gOiBpbnQgPSAyXG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooZnVuIHggLT4geCAvIDIpXG4gICAgICAgICAgIH5nZXRfZGF0YTooZnVuIHggLT4geClcbiAgICAgICAgICAgfmNvbWJpbmU6KGZ1biB4IHkgLT4geCAqIHkpXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgIC0+IGNvbWJpbmU6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiBXZSBwcm92aWRlIGEgW3NleHBfb2ZfdF0gYnV0IG5vdCBhIFt0X29mX3NleHBdIGZvciB0aGlzIHR5cGUgYmVjYXVzZSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgIGV4cGxpY2l0IGFib3V0IHRoZSBoYXNoIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBoYXNodGFibGUuXG4gICAgICBOb3RlIHRoYXQgW0hhc2h0YmwuUG9seS50XSBkb2VzIGhhdmUgW1tAQGRlcml2aW5nIHNleHBdXSwgYW5kIHVzZXMgT0NhbWwncyBidWlsdC1pblxuICAgICAgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBhbmQgYW5kIHBvbHltb3JwaGljIGhhc2hpbmcuICopXG4gIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHAudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCAoKiogQGlubGluZSAqKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICgqKiBAaW5saW5lICopXG5cblxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgKCoqIEBpbmxpbmUgKilcblxuICB2YWwgaGFzaGFibGVfcyA6ICgna2V5LCBfKSB0IC0+ICdrZXkgS2V5LnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgIDogICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICB2YWwgaGFzaGFibGUgOiAnYSBIYXNoYWJsZS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnaywgJ3YpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaHRibCA9IHNpZ1xuICAoKiogQSBoYXNoIHRhYmxlIGlzIGEgbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRpbmcgYSBtYXAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMuXG4gICAgICBJdCBzdXBwb3J0cyBjb25zdGFudC10aW1lIGxvb2t1cCBhbmQgaW4tcGxhY2UgbW9kaWZpY2F0aW9uLlxuXG4gICAgICB7MSBVc2FnZX1cblxuICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UnbGwgY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHN0cmluZyBrZXlzIHVzaW5nIHRoZVxuICAgICAge3shY3JlYXRlfVtjcmVhdGVdfSBjb25zdHJ1Y3Rvciwgd2hpY2ggZXhwZWN0cyBhIG1vZHVsZSBkZWZpbmluZyB0aGUga2V5J3MgdHlwZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGggPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFN0cmluZyk7O1xuICAgICAgICB2YWwgaCA6IChzdHJpbmcsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPlxuICAgICAgXX1cblxuICAgICAgV2UgY2FuIHNldCB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwga2V5cyB3aXRoIHt7IXNldH1bc2V0XX0uIElmIHRoZSBrZXkgYWxyZWFkeSBoYXNcbiAgICAgIGEgdmFsdWUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo1OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImJhclwiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn1cblxuICAgICAgV2UgY2FuIGFjY2VzcyB2YWx1ZXMgYnkga2V5LCBvciBkdW1wIGFsbCBvZiB0aGUgaGFzaCB0YWJsZSdzIGRhdGE6XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmZpbmQgaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgb3B0aW9uID0gU29tZSA2XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgPSA2XG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgNik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cbiAgICAgIHt7IWNoYW5nZX1bY2hhbmdlXX0gbGV0cyB1cyBjaGFuZ2UgYSBrZXkncyB2YWx1ZSBieSBhcHBseWluZyB0aGUgZ2l2ZW4gZnVuY3Rpb246XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmNoYW5nZSBoIFwiZm9vXCIgKGZ1biB4IC0+XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gU29tZSAoeCAqIDIpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICk7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDEyKTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuXG4gICAgICBXZSBjYW4gdXNlIHt7IW1lcmdlfVttZXJnZV19IHRvIG1lcmdlIHR3byBoYXNodGFibGVzIHdpdGggZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgICAgaG93IHdlIGNob29zZSB2YWx1ZXMgd2hlbiBhIGtleSBpcyBwcmVzZW50IGluIHRoZSBmaXJzdCAoXCJsZWZ0XCIpIGhhc2h0YWJsZSwgdGhlXG4gICAgICBzZWNvbmQgKFwicmlnaHRcIiksIG9yIGJvdGguIEhlcmUsIHdlJ2xsIGNvbnMgdGhlIHZhbHVlcyB3aGVuIGJvdGggaGFzaHRhYmxlcyBoYXZlIGFcbiAgICAgIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9XG5cbiAgICAgIHsxIEludGVyZmFjZX0gKilcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zdWJtb2R1bGVzICgqKiBAaW5saW5lICopXG5cbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gQWNjZXNzb3JzXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzID0gQ3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgTXVsdGkgPSBNdWx0aVxuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBTX3dpdGhvdXRfc3VibW9kdWxlc1xuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IE1lcmdlX2ludG9fYWN0aW9uXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIG1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgICB0eXBlICdhIHRcblxuICAgICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IGludCBIYXNodGJsLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSAoU3RyaW5nLnQsIGludCkgSGFzaHRibC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IEhhc2h0YmwuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmRcbiAgICAgIHN5bnRheCBkb2Vzbid0IChiZWNhdXNlIFt0X29mX3NleHBdIGRvZXNuJ3Qga25vdyB3aGF0IGNvbXBhcmlzb24vaGFzaCBmdW5jdGlvbiB0b1xuICAgICAgdXNlKS4gKilcbiAgbW9kdWxlIE0gKEsgOiBULlQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiovKiopXG5cbiAgKCpfIFNlZSB0aGUgSmFuZSBTdHJlZXQgU3R5bGUgR3VpZGUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFtQcml2YXRlXSBzdWJtb2R1bGVzOlxuXG4gICAgaHR0cHM6Ly9vcGVuc291cmNlLmphbmVzdHJlZXQuY29tL3N0YW5kYXJkcy8jcHJpdmF0ZS1zdWJtb2R1bGVzICopXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcblxuICAgIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiAoJ2tleSwgXykgdCAtPiAna2V5IEhhc2hhYmxlLnRcbiAgZW5kXG5lbmRcbiIsIigqIEEgZmV3IHNtYWxsIHRoaW5ncyBjb3BpZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiBCYXNlIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gdXMsIHNvIHdlXG4gICBjYW4ndCB1c2UgdGhlbS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIEl0cyBpbXBvcnRhbnQgdGhhdCBFbXB0eSBoYXZlIG5vIGFyZ3MuIEl0J3MgdGVtcHRpbmcgdG8gbWFrZSB0aGlzIHR5cGUgYSByZWNvcmRcbiAgIChlLmcuIHRvIGhvbGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24pLCBidXQgYSBsb3Qgb2YgbWVtb3J5IGlzIHNhdmVkIGJ5IEVtcHR5IGJlaW5nIGFuXG4gICBpbW1lZGlhdGUsIHNpbmNlIGFsbCB1bnVzZWQgYnVja2V0cyBpbiB0aGUgaGFzaHRibCBkb24ndCB1c2UgYW55IG1lbW9yeSAoYmVzaWRlcyB0aGVcbiAgIGFycmF5IGNlbGwpICopXG50eXBlICgnaywgJ3YpIHQgPVxuICB8IEVtcHR5XG4gIHwgTm9kZSBvZlxuICAgICAgeyBtdXRhYmxlIGxlZnQgOiAoJ2ssICd2KSB0XG4gICAgICA7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgICAgOyBtdXRhYmxlIHJpZ2h0IDogKCdrLCAndikgdFxuICAgICAgfVxuICB8IExlYWYgb2ZcbiAgICAgIHsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICB9XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuOztcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodDsgcmlnaHQgPSBfIH0gLT4gaGVpZ2h0XG47O1xuXG5sZXQgaW52YXJpYW50IGNvbXBhcmUgPVxuICBsZXQgbGVnYWxfbGVmdF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgbGVmdF9rZXkga2V5IDwgMClcbiAgaW5cbiAgbGV0IGxlZ2FsX3JpZ2h0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIHJpZ2h0X2tleSBrZXkgPiAwKVxuICBpblxuICBsZXQgcmVjIGludiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSB8IExlYWYgXyAtPiAoKVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGs7IHZhbHVlID0gXzsgaGVpZ2h0ID0gaDsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGhsLCBociA9IGhlaWdodCBsZWZ0LCBoZWlnaHQgcmlnaHQgaW5cbiAgICAgIGludiBsZWZ0O1xuICAgICAgaW52IHJpZ2h0O1xuICAgICAgbGVnYWxfbGVmdF9rZXkgayBsZWZ0O1xuICAgICAgbGVnYWxfcmlnaHRfa2V5IGsgcmlnaHQ7XG4gICAgICBhc3NlcnQgKGggPSBJbnQubWF4IGhsIGhyICsgMSk7XG4gICAgICBhc3NlcnQgKGFicyAoaGwgLSBocikgPD0gMilcbiAgaW5cbiAgaW52XG47O1xuXG5sZXQgaW52YXJpYW50IHQgfmNvbXBhcmUgPSBpbnZhcmlhbnQgY29tcGFyZSB0XG5cbigqIEluIHRoZSBmb2xsb3dpbmcgY29tbWVudHMsXG4gICAndCBpcyBiYWxhbmNlZCcgbWVhbnMgdGhhdCAnaW52YXJpYW50IHQnIGRvZXMgbm90XG4gICByYWlzZSBhbiBleGNlcHRpb24uICBUaGlzIGltcGxpZXMgb2YgY291cnNlIHRoYXQgZWFjaCBub2RlJ3MgaGVpZ2h0IGZpZWxkIGlzXG4gICBjb3JyZWN0LlxuICAgJ3QgaXMgYmFsYW5jZWFibGUnIG1lYW5zIHRoYXQgaGVpZ2h0IG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBvZiB0XG4gICBkaWZmZXIgYnkgYXQgbW9zdCAzLiAqKVxuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBoYXZlIGNvcnJlY3QgaGVpZ2h0c1xuICAgQHBvc3Q6IG91dHB1dCBoYXMgdGhlIGNvcnJlY3QgaGVpZ2h0ICopXG5sZXQgdXBkYXRlX2hlaWdodCA9IGZ1bmN0aW9uXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IG9sZF9oZWlnaHQ7IHJpZ2h0IH0gYXMgeCkgLT5cbiAgICBsZXQgbmV3X2hlaWdodCA9IEludC5tYXggKGhlaWdodCBsZWZ0KSAoaGVpZ2h0IHJpZ2h0KSArIDEgaW5cbiAgICBpZiBuZXdfaGVpZ2h0IDw+IG9sZF9oZWlnaHQgdGhlbiB4LmhlaWdodCA8LSBuZXdfaGVpZ2h0XG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBhcmUgYmFsYW5jZWRcbiAgIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwb3N0OiBvdXRwdXQgaXMgYmFsYW5jZWQgKGluIHBhcnRpY3VsYXIsIGhlaWdodCBpcyBjb3JyZWN0KSAqKVxubGV0IGJhbGFuY2UgdHJlZSA9XG4gIG1hdGNoIHRyZWUgd2l0aFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IHRyZWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByb290X25vZGUpIC0+XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxlZnRcbiAgICBhbmQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAoKiArIDIgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQsIGxvd2VyaW5nIGl0IHRvIDEgd2lsbCBicmVhayB0aGUgTGVhZlxuICAgICAgIGFzc3VtcHRpb25zIGluIHRoZSBjb2RlIGJlbG93LCBhbmQgd2lsbCBmb3JjZSB1cyB0byBwcm9tb3RlIGxlYWYgbm9kZXMgaW5cbiAgICAgICB0aGUgYmFsYW5jZSByb3V0aW5lLiBJdCdzIGFsc28gZmFzdGVyLCBzaW5jZSBpdCB3aWxsIGJhbGFuY2UgbGVzcyBvZnRlbi5cbiAgICAgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGRlbGljYXRlLiAgVGhlIHVwZGF0ZV9oZWlnaHQgY2FsbHMgbXVzdFxuICAgICAgIG9jY3VyIGluIHRoZSBjb3JyZWN0IG9yZGVyLCBzaW5jZSB1cGRhdGVfaGVpZ2h0IGFzc3VtZXMgaXRzIGNoaWxkcmVuIGhhdmVcbiAgICAgICB0aGUgY29ycmVjdCBoZWlnaHRzLiAgKilcbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICAoKiBJdCBjYW5ub3QgYmUgYSBsZWFmLCBiZWNhdXNlIGV2ZW4gaWYgcmlnaHQgaXMgZW1wdHksIGEgbGVhZlxuICAgICAgICAgaXMgb25seSBoZWlnaHQgMSAqKVxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSBsZWZ0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyBsZWZ0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCBsZWZ0X25vZGVfbGVmdCA+PSBoZWlnaHQgbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgIGxlZnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGlmIHJpZ2h0IGlzIGEgbGVhZiwgdGhlbiBsZWZ0IG11c3QgYmUgZW1wdHkuIFRoYXQgbWVhbnNcbiAgICAgICAgICAgICBoZWlnaHQgaXMgMi4gRXZlbiBpZiBociBpcyBlbXB0eSB3ZSBzdGlsbCBjYW4ndCBnZXQgaGVyZS4gKilcbiAgICAgICAgICBtYXRjaCBsZWZ0X25vZGVfcmlnaHQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBscl9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gbHJfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgbHJfbm9kZSkgLT5cbiAgICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSBscl9sZWZ0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbHJfcmlnaHQ7XG4gICAgICAgICAgICBscl9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgICBscl9ub2RlLmxlZnQgPC0gbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgICAgbGVmdF9ub2RlX3JpZ2h0KSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSByaWdodCBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSByaWdodF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgcmlnaHRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0X25vZGVfcmlnaHQgPj0gaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgIHJpZ2h0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgICAgICBtYXRjaCByaWdodF9ub2RlX2xlZnQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBybF9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gcmxfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgcmxfbm9kZSkgLT5cbiAgICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSBybF9yaWdodDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSBybF9sZWZ0O1xuICAgICAgICAgICAgcmxfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgICBybF9ub2RlLnJpZ2h0IDwtIHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgICAgcmlnaHRfbm9kZV9sZWZ0KSlcbiAgICBlbHNlIChcbiAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgIHRyZWUpXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X2xlZnQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCBsZWZ0IHRyZWUgdGhlbiAoKSBlbHNlIHIubGVmdCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAobGVmdCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9yaWdodCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHJpZ2h0IHRyZWUgdGhlbiAoKSBlbHNlIHIucmlnaHQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdCBpcyBiYWxhbmNlZC5cbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWQsIHdpdGggbmV3IG5vZGUgaW5zZXJ0ZWRcbiAgIEBwb3N0OiAhYWRkZWQgPSB0cnVlIGlmZiB0aGUgc2hhcGUgb2YgdGhlIGlucHV0IHRyZWUgY2hhbmdlZC4gICopXG5sZXQgYWRkID1cbiAgbGV0IHJlYyBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBMZWFmICh7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsnIGsgaW5cbiAgICAgICgqIFRoaXMgY29tcGFyZSBpcyByZXZlcnNlZCBvbiBwdXJwb3NlLCB3ZSBhcmUgcHJldGVuZGluZ1xuICAgICAgICAgdGhhdCB0aGUgbGVhZiB3YXMganVzdCBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXlcbiAgICAgICAgIHJvdW5kLCB0aGF0IHdheSB3ZSBvbmx5IGFsbG9jYXRlIG9uZSBub2RlLiAqKVxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdjtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgICBpZiBjIDwgMFxuICAgICAgICB0aGVuIE5vZGUgeyBsZWZ0ID0gdDsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IEVtcHR5IH1cbiAgICAgICAgZWxzZSBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gdCB9KVxuICAgIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdilcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gc2V0X2xlZnQgdCAoYWRkIGxlZnQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdilcbiAgICAgIGVsc2Ugc2V0X3JpZ2h0IHQgKGFkZCByaWdodCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KTtcbiAgICAgIHRcbiAgaW5cbiAgZnVuIHQgfnJlcGxhY2UgfmNvbXBhcmUgfmFkZGVkIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgdCA9IGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrZXkgZGF0YSBpblxuICAgIGlmICFhZGRlZCB0aGVuIGJhbGFuY2UgdCBlbHNlIHRcbjs7XG5cbmxldCByZWMgZmlyc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBsOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IGZpcnN0IGxcbjs7XG5cbmxldCByZWMgbGFzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSByIH0gLT4gbGFzdCByXG47O1xuXG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9ub3RfZm91bmRcbiAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlIGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlXG4gICAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgIChpZiBjIDwgMCB0aGVuIGxlZnQgZWxzZSByaWdodClcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAga1xuICAgICAgICBhcmcxXG4gICAgICAgIGFyZzJcbiAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgIH5pZl9mb3VuZFxuICAgICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCBkYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCBkYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCBkYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtID1cbiAgbGV0IGlmX2ZvdW5kIF8gPSB0cnVlIGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IGZhbHNlIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCByZW1vdmUgPVxuICBsZXQgcmVjIG1pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiBfIC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gbWluX2VsdCBsZWZ0XG4gIGluXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IExlYWYgXyAtPiBFbXB0eSAoKiBUaGlzIG11c3QgYmUgdGhlIHJvb3QgKilcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPiByaWdodFxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgRW1wdHk7XG4gICAgICB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIChyZW1vdmVfbWluX2VsdCBsZWZ0KTtcbiAgICAgIHRyZWVcbiAgaW5cbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHRyZWUgPSBtaW5fZWx0IHQyIGluXG4gICAgICAobWF0Y2ggdHJlZSB3aXRoXG4gICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgICAgICAgbGV0IHQyID0gYmFsYW5jZSAocmVtb3ZlX21pbl9lbHQgdDIpIGluXG4gICAgICAgICBOb2RlXG4gICAgICAgICAgIHsgbGVmdCA9IHQxXG4gICAgICAgICAgIDsga2V5ID0ga1xuICAgICAgICAgICA7IHZhbHVlID0gdlxuICAgICAgICAgICA7IGhlaWdodCA9IEludC5tYXggKGhlaWdodCB0MSkgKGhlaWdodCB0MikgKyAxXG4gICAgICAgICAgIDsgcmlnaHQgPSB0MlxuICAgICAgICAgICB9XG4gICAgICAgfCBOb2RlIF8gYXMgbm9kZSAtPlxuICAgICAgICAgc2V0X3JpZ2h0IG5vZGUgKHJlbW92ZV9taW5fZWx0IHQyKTtcbiAgICAgICAgIHNldF9sZWZ0IG5vZGUgdDE7XG4gICAgICAgICBub2RlKVxuICBpblxuICBsZXQgcmVjIHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgRW1wdHlcbiAgICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIEVtcHR5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICAgIHQpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldF9sZWZ0IHQgKHJlbW92ZSBsZWZ0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzZXRfcmlnaHQgdCAocmVtb3ZlIHJpZ2h0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgaW5cbiAgZnVuIHQgfnJlbW92ZWQgfmNvbXBhcmUgayAtPiBiYWxhbmNlIChyZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgaylcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gaW5pdFxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YSBpbml0XG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gRW1wdHlcbiAgICAgIH0gLT4gZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IEVtcHR5XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfSB9XG4gICAgLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfVxuICAgIC0+IGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpIH5mXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKSB+ZlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGl0ZXIgbGVmdCB+ZjtcbiAgICBmIH5rZXkgfmRhdGE7XG4gICAgaXRlciByaWdodCB+ZlxuOztcblxubGV0IHJlYyBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoeyBrZXk7IHZhbHVlIH0gYXMgdCkgLT4gdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleTsgdmFsdWU7IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgdCkgLT5cbiAgICBtYXBpX2lucGxhY2UgfmYgbGVmdDtcbiAgICB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZTtcbiAgICBtYXBpX2lucGxhY2UgfmYgcmlnaHRcbjs7XG5cbmxldCBjaG9vc2VfZXhuID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbQXZsdHJlZS5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pXG4gIHwgTGVhZiB7IGtleTsgdmFsdWU7IF8gfSB8IE5vZGUgeyBrZXk7IHZhbHVlOyBfIH0gLT4ga2V5LCB2YWx1ZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNodGJsX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5LlNcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBoYXNoX3BhcmFtID0gSGFzaGFibGUuaGFzaF9wYXJhbVxubGV0IGhhc2ggPSBIYXNoYWJsZS5oYXNoXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxudHlwZSAoJ2ssICd2KSB0ID1cbiAgeyBtdXRhYmxlIHRhYmxlIDogKCdrLCAndikgQXZsdHJlZS50IGFycmF5XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgKCogW3JlY2VudGx5X2FkZGVkXSBpcyB0aGUgcmVmZXJlbmNlIHBhc3NlZCB0byBbQXZsdHJlZS5hZGRdLiBXZSBwdXQgaXQgaW4gdGhlIGhhc2hcbiAgICAgdGFibGUgdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBhdCBldmVyeSBbc2V0XS4gKilcbiAgOyByZWNlbnRseV9hZGRlZCA6IGJvb2wgcmVmXG4gIDsgZ3Jvd3RoX2FsbG93ZWQgOiBib29sXG4gIDsgaGFzaGFibGUgOiAnayBIYXNoYWJsZS50XG4gIDsgbXV0YWJsZSBtdXRhdGlvbl9hbGxvd2VkIDogYm9vbCAoKiBTZXQgZHVyaW5nIGFsbCBpdGVyYXRpb24gb3BlcmF0aW9ucyAqKVxuICB9XG5cbnR5cGUgJ2Ega2V5ID0gJ2FcblxubGV0IHNleHBfb2Zfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdFxubGV0IGNvbXBhcmVfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmVcblxubGV0IGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQgPVxuICBpZiBub3QgdC5tdXRhdGlvbl9hbGxvd2VkIHRoZW4gZmFpbHdpdGggXCJIYXNodGJsOiBtdXRhdGlvbiBub3QgYWxsb3dlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbjs7XG5cbmxldCB3aXRob3V0X211dGF0aW5nIHQgZiA9XG4gIGlmIHQubXV0YXRpb25fYWxsb3dlZFxuICB0aGVuIChcbiAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgcmFpc2UgZXhuKVxuICBlbHNlIGYgKClcbjs7XG5cbigqKiBJbnRlcm5hbGx5IHVzZSBhIG1heGltdW0gc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgMi4gUmV2ZXJzZXMgdGhlIGFib3ZlIHRvIGZpbmQgdGhlXG4gICAgZmxvb3IgcG93ZXIgb2YgMiBiZWxvdyB0aGUgc3lzdGVtIG1heCBhcnJheSBsZW5ndGggKilcbmxldCBtYXhfdGFibGVfbGVuZ3RoID0gSW50LmZsb29yX3BvdzIgQXJyYXkubWF4X2xlbmd0aFxuXG4oKiBUaGUgZGVmYXVsdCBzaXplIGlzIGNob3NlbiB0byBiZSAwIChhcyBvcHBvc2VkIHRvIDEyOCBhcyBpdCB3YXMgYmVmb3JlKSBiZWNhdXNlOlxuICAgLSAxMjggY2FuIGNyZWF0ZSBzdWJzdGFudGlhbCBtZW1vcnkgb3ZlcmhlYWQgKHgxMCkgd2hlbiBjcmVhdGluZyBtYW55IHRhYmxlcywgbW9zdFxuICAgICBvZiB3aGljaCBhcmUgbm90IGJpZyAoc2F5LCBpZiB5b3UgaGF2ZSBhIGhhc2h0Ymwgb2YgaGFzaHRibCkuIEFuZCBtZW1vcnkgb3ZlcmhlYWQgaXNcbiAgICAgbm90IHRoYXQgZWFzeSB0byBwcm9maWxlLlxuICAgLSBpZiBhIGhhc2h0YmwgaXMgZ29pbmcgdG8gZ3JvdywgaXQncyBub3QgY2xlYXIgd2h5IDEyOCBpcyBtYXJrZWRseSBiZXR0ZXIgdGhhbiBvdGhlclxuICAgICBzaXplcyAoaWYgeW91IGdvaW5nIHRvIHN0aWNrIDEwMDAgZWxlbWVudHMsIHlvdSdyZSBnb2luZyB0byBncm93IHRoZSBoYXNodGFibGUgb25jZVxuICAgICBvciB0d2ljZSBhbnl3YXkpXG4gICAtIGluIG90aGVyIGxhbmd1YWdlcyAobGlrZSBydXN0LCBweXRob24sIGFuZCBhcHBhcmVudGx5IGdvKSwgdGhlIGRlZmF1bHQgaXMgYWxzbyBhXG4gICAgIHNtYWxsIHNpemUuICopXG5sZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAwKSB+aGFzaGFibGUgKCkgPVxuICBsZXQgc2l6ZSA9IEludC5taW4gKEludC5tYXggMSBzaXplKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gIGxldCBzaXplID0gSW50LmNlaWxfcG93MiBzaXplIGluXG4gIHsgdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpzaXplIEF2bHRyZWUuZW1wdHlcbiAgOyBsZW5ndGggPSAwXG4gIDsgZ3Jvd3RoX2FsbG93ZWRcbiAgOyByZWNlbnRseV9hZGRlZCA9IHJlZiBmYWxzZVxuICA7IGhhc2hhYmxlXG4gIDsgbXV0YXRpb25fYWxsb3dlZCA9IHRydWVcbiAgfVxuOztcblxuKCoqIFN1cHBsZW1lbnRhbCBoYXNoLiBUaGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBpdCBpcyBpbnRlbmRlZCBhcyBhIGRlZmVuc2UgYWdhaW5zdCBwb29yXG4gICAgaGFzaCBmdW5jdGlvbnMsIGZvciB3aGljaCB0aGUgcG93ZXIgb2YgMiBzaXplZCB0YWJsZSB3aWxsIGJlIGVzcGVjaWFsbHkgc2Vuc2l0aXZlLlxuICAgIFdpdGggc29tZSB0ZXN0aW5nIHdlIG1heSBjaG9vc2UgdG8gYWRkIGl0LCBidXQgdGhpcyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSByb2J1c3QgdG9cbiAgICBjb2xsaXNpb25zLCBhbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nIHRoaXMgZGVncmFkZXMgcGVyZm9ybWFuY2UuICopXG5sZXQgX3N1cHBsZW1lbnRhbF9oYXNoIGggPVxuICBsZXQgaCA9IGggbHhvciAoKGggbHNyIDIwKSBseG9yIChoIGxzciAxMikpIGluXG4gIGggbHhvciAoaCBsc3IgNykgbHhvciAoaCBsc3IgNClcbjs7XG5cbmxldCBzbG90IHQga2V5ID1cbiAgbGV0IGhhc2ggPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmhhc2gga2V5IGluXG4gICgqIHRoaXMgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBiZWNhdXNlIHdlIGRvIFtsYW5kXSB3aXRoIG5vbi1uZWdhdGl2ZSBudW1iZXIgKilcbiAgaGFzaCBsYW5kIChBcnJheS5sZW5ndGggdC50YWJsZSAtIDEpXG47O1xuXG5sZXQgYWRkX3dvcmtlciB0IH5yZXBsYWNlIH5rZXkgfmRhdGEgPVxuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWQgPSB0LnJlY2VudGx5X2FkZGVkIGluXG4gIGFkZGVkIDo9IGZhbHNlO1xuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdFxuOztcblxubGV0IG1heWJlX3Jlc2l6ZV90YWJsZSB0ID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gIGxldCBzaG91bGRfZ3JvdyA9IHQubGVuZ3RoID4gbGVuIGluXG4gIGlmIHNob3VsZF9ncm93ICYmIHQuZ3Jvd3RoX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnJheV9sZW5ndGggPSBJbnQubWluIChsZW4gKiAyKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gICAgaWYgbmV3X2FycmF5X2xlbmd0aCA+IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld190YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm5ld19hcnJheV9sZW5ndGggQXZsdHJlZS5lbXB0eSBpblxuICAgICAgbGV0IG9sZF90YWJsZSA9IHQudGFibGUgaW5cbiAgICAgIHQudGFibGUgPC0gbmV3X3RhYmxlO1xuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBmIH5rZXkgfmRhdGEgPSBhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhO1xuICBtYXliZV9yZXNpemVfdGFibGUgdFxuOztcblxubGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBhZGRfd29ya2VyIH5yZXBsYWNlOmZhbHNlIHQgfmtleSB+ZGF0YTtcbiAgaWYgISh0LnJlY2VudGx5X2FkZGVkKVxuICB0aGVuIChcbiAgICBtYXliZV9yZXNpemVfdGFibGUgdDtcbiAgICBgT2spXG4gIGVsc2UgYER1cGxpY2F0ZVxuOztcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gIHwgYE9rIC0+ICgpXG4gIHwgYER1cGxpY2F0ZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5IHQgaW5cbiAgICBsZXQgZXJyb3IgPSBFcnJvci5jcmVhdGUgXCJIYXNodGJsLmFkZF9leG4gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBrZXkgc2V4cF9vZl9rZXkgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IGNsZWFyIHQgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgdC50YWJsZS4oaSkgPC0gQXZsdHJlZS5lbXB0eVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMiB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwyXG4gICAgICB0cmVlXG4gICAgICB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgICAgIGtleVxuICAgICAgfmFcbiAgICAgIH5iXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCBrZXkgLT4gZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSB0IGtleSA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGZhbHNlXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSBfIH0gLT4gY29tcGFyZV9rZXkgdCBrIGtleSA9IDBcbiAgfCB0cmVlIC0+IEF2bHRyZWUubWVtIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuOztcblxubGV0IHJlbW92ZSB0IGtleSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZF9vcl9yZW1vdmVkID0gdC5yZWNlbnRseV9hZGRlZCBpblxuICBhZGRlZF9vcl9yZW1vdmVkIDo9IGZhbHNlO1xuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGl0ZXJfa2V5cyB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IHJlYyBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgaSA9XG4gIGxldCBhdmx0cmVlID0gdGFibGUuKGkpIGluXG4gIGlmIEF2bHRyZWUuaXNfZW1wdHkgYXZsdHJlZVxuICB0aGVuIGNob29zZV9ub25lbXB0eSB0YWJsZSAoaSArIDEpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSBpbnZhcmlhbnRfZGF0YSB0ID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIEF2bHRyZWUuaW52YXJpYW50IHQudGFibGUuKGkpIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICBkb25lO1xuICBsZXQgcmVhbF9sZW4gPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBpIC0+XG4gICAgICBpbnZhcmlhbnRfa2V5IGtleTtcbiAgICAgIGludmFyaWFudF9kYXRhIGRhdGE7XG4gICAgICBpICsgMSlcbiAgaW5cbiAgYXNzZXJ0IChyZWFsX2xlbiA9IHQubGVuZ3RoKVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IGlmX2ZvdW5kIHYgXyA9IHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBrIHQgPVxuICAgIHJhaXNlXG4gICAgICAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiSGFzaHRibC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHQuaGFzaGFibGUuc2V4cF9vZl90IGsgXSkpXG4gIGluXG4gIGxldCBmaW5kX2V4biB0IGtleSA9IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hOnQgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTooZiB+a2V5IH5kYXRhKSk7XG4gIG5ld190XG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGNvcHkgdCA9IG1hcCB0IH5mOkZuLmlkXG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgU29tZSBuZXdfZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgTm9uZSAtPiAoKSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmaWx0ZXJfa2V5cyB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbDJcbiAgICB0XG4gICAgaWRcbiAgICB+YTp0XG4gICAgfmI6ZGVmYXVsdFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgXyBfIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSB0IGRlZmF1bHQgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCAoKSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdClcbjs7XG5cbmxldCBmaW5kaV9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGwyXG4gICAgdFxuICAgIGlkXG4gICAgfmE6dFxuICAgIH5iOmRlZmF1bHRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIF8gXyAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgdCBkZWZhdWx0IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQga2V5IGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KVxuOztcblxuKCogU29tZSBoYXNodGJsIGltcGxlbWVudGF0aW9ucyBtYXkgYmUgYWJsZSB0byBwZXJmb3JtIHRoaXMgbW9yZSBlZmZpY2llbnRseSB0aGFuIHR3b1xuICAgc2VwYXJhdGUgbG9va3VwcyAqKVxubGV0IGZpbmRfYW5kX3JlbW92ZSB0IGlkID1cbiAgbGV0IHJlc3VsdCA9IGZpbmQgdCBpZCBpblxuICBpZiBPcHRpb24uaXNfc29tZSByZXN1bHQgdGhlbiByZW1vdmUgdCBpZDtcbiAgcmVzdWx0XG47O1xuXG5cbmxldCBjaGFuZ2UgdCBpZCB+ZiA9XG4gIG1hdGNoIGYgKGZpbmQgdCBpZCkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHQgaWRcbiAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleTppZCB+ZGF0YVxuOztcblxubGV0IHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgPVxuICBsZXQgZGF0YSA9IGYgKGZpbmQgdCBpZCkgaW5cbiAgc2V0IHQgfmtleTppZCB+ZGF0YTtcbiAgZGF0YVxuOztcblxubGV0IHVwZGF0ZSB0IGlkIH5mID0gaWdub3JlICh1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mIDogXylcblxubGV0IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5ID1cbiAgaWYgcmVtb3ZlX2lmX3plcm9cbiAgdGhlblxuICAgIGNoYW5nZSB0IGtleSB+ZjooZnVuIG9wdCAtPlxuICAgICAgbWF0Y2ggYnkgKyBPcHRpb24udmFsdWUgb3B0IH5kZWZhdWx0OjAgd2l0aFxuICAgICAgfCAwIC0+IE5vbmVcbiAgICAgIHwgbiAtPiBTb21lIG4pXG4gIGVsc2VcbiAgICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYnlcbiAgICAgIHwgU29tZSBpIC0+IGJ5ICsgaSlcbjs7XG5cbmxldCBpbmNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnlcbmxldCBkZWNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgKC1ieSlcblxubGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFsgZGF0YSBdXG4gICAgfCBTb21lIGwgLT4gZGF0YSA6OiBsKVxuOztcblxubGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIFtdIHwgU29tZSBbIF8gXSAtPiByZW1vdmUgdCBrZXlcbiAgfCBTb21lIChfIDo6IHRsKSAtPiBzZXQgdCB+a2V5IH5kYXRhOnRsXG47O1xuXG5sZXQgZmluZF9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGwgLT4gbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlIH5zaXplICgpIGluXG4gIGxldCBkdXBlcyA9IHJlZiBbXSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgaWYgbWVtIHJlcyBrZXkgdGhlbiBkdXBlcyA6PSBrZXkgOjogIWR1cGVzIGVsc2Ugc2V0IHJlcyB+a2V5IH5kYXRhKTtcbiAgbWF0Y2ggIWR1cGVzIHdpdGhcbiAgfCBbXSAtPiBgT2sgcmVzXG4gIHwga2V5cyAtPiBgRHVwbGljYXRlX2tleXMgKExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6aGFzaGFibGUuSGFzaGFibGUuY29tcGFyZSBrZXlzKVxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgfmhhc2hhYmxlICgpIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBhZGRfbXVsdGkgcmVzIH5rZXkgfmRhdGEpO1xuICByZXNcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Qgd2l0aFxuICB8IGBPayB0IC0+IGBPayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGsgLT4gYER1cGxpY2F0ZV9rZXkgKExpc3QuaGRfZXhuIGspXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IGBPayB2IC0+IFJlc3VsdC5PayB2XG4gIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3IgXCJIYXNodGJsLm9mX2FsaXN0X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBzZXhwX29mX2tleVxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBSZXN1bHQuT2sgdiAtPiB2XG4gIHwgUmVzdWx0LkVycm9yIGUgLT4gRXJyb3IucmFpc2UgZVxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IHRvX2FsaXN0IHQgPSBmb2xkIH5mOihmdW4gfmtleSB+ZGF0YSBsaXN0IC0+IChrZXksIGRhdGEpIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gIHRcbiAgfD4gdG9fYWxpc3RcbiAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKGsxLCBfKSAoazIsIF8pIC0+IHQuaGFzaGFibGUuY29tcGFyZSBrMSBrMilcbiAgfD4gc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhKVxuOztcblxubGV0IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID1cbiAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCkgc2V4cCBpblxuICBtYXRjaCBvZl9hbGlzdCB+aGFzaGFibGUgYWxpc3QgfnNpemU6KExpc3QubGVuZ3RoIGFsaXN0KSB3aXRoXG4gIHwgYE9rIHYgLT4gdlxuICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgIExpc3QuaXRlcjJfZXhuIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgIGlmIGhhc2hhYmxlLmNvbXBhcmUgayBrMiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiSGFzaHRibC50X29mX3NleHA6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgayB2KVxuICAgICAgKGtfZ3JhbW1hciA6IGsgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICAodl9ncmFtbWFyIDogdiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiAoaywgdikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbjs7XG5cbmxldCBrZXlzIHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhOl8gYWNjIC0+IGtleSA6OiBhY2MpXG5sZXQgZGF0YSB0ID0gZm9sZCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgYWRkX3RvX2dyb3VwcyBncm91cHMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzID1cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByb3cgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByb3cgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHJvdyBpblxuICAgIGxldCBkYXRhID1cbiAgICAgIG1hdGNoIGZpbmQgZ3JvdXBzIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgfCBTb21lIG9sZCAtPiBjb21iaW5lIG9sZCBkYXRhXG4gICAgaW5cbiAgICBzZXQgZ3JvdXBzIH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSkpO1xuICAgIG5ld190XG47O1xuXG5sZXQgbWVyZ2VfaW50byB+c3JjIH5kc3QgfmYgPVxuICBpdGVyaSBzcmMgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IGRzdF9kYXRhID0gZmluZCBkc3Qga2V5IGluXG4gICAgbGV0IGFjdGlvbiA9IHdpdGhvdXRfbXV0YXRpbmcgZHN0IChmdW4gKCkgLT4gZiB+a2V5IGRhdGEgZHN0X2RhdGEpIGluXG4gICAgbWF0Y2ggKGFjdGlvbiA6IF8gTWVyZ2VfaW50b19hY3Rpb24udCkgd2l0aFxuICAgIHwgUmVtb3ZlIC0+IHJlbW92ZSBkc3Qga2V5XG4gICAgfCBTZXRfdG8gZGF0YSAtPlxuICAgICAgKG1hdGNoIGRzdF9kYXRhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gc2V0IGRzdCB+a2V5IH5kYXRhXG4gICAgICAgfCBTb21lIGRzdF9kYXRhIC0+IGlmIG5vdCAocGh5c19lcXVhbCBkc3RfZGF0YSBkYXRhKSB0aGVuIHNldCBkc3QgfmtleSB+ZGF0YSkpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjIGVsc2Uga2V5IDo6IGFjKVxuICBpblxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4ga2V5IC0+IHJlbW92ZSB0IGtleSlcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IG1hcF9yZXN1bHRzID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiAoa2V5LCBmIH5rZXkgfmRhdGEpIDo6IGFjKSBpblxuICBMaXN0Lml0ZXIgbWFwX3Jlc3VsdHMgfmY6KGZ1biAoa2V5LCByZXN1bHQpIC0+XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtb3ZlIHQga2V5XG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIHdpdGhvdXRfbXV0YXRpbmcgdCAoZnVuICgpIC0+IEFycmF5Lml0ZXIgdC50YWJsZSB+ZjooQXZsdHJlZS5tYXBpX2lucGxhY2UgfmYpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBtYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBlcXVhbCBlcXVhbCB0IHQnID1cbiAgbGVuZ3RoIHQgPSBsZW5ndGggdCdcbiAgJiYgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgd2l0aG91dF9tdXRhdGluZyB0JyAoZnVuICgpIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBtYXRjaCBmaW5kIHQnIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByLnJldHVybiBmYWxzZVxuICAgICAgICB8IFNvbWUgZGF0YScgLT4gaWYgbm90IChlcXVhbCBkYXRhIGRhdGEnKSB0aGVuIHIucmV0dXJuIGZhbHNlKSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBzaW1pbGFyID0gZXF1YWxcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBjaG9vc2UgPSBjaG9vc2VcbiAgbGV0IGNob29zZV9leG4gPSBjaG9vc2VfZXhuXG4gIGxldCBjbGVhciA9IGNsZWFyXG4gIGxldCBjb3B5ID0gY29weVxuICBsZXQgcmVtb3ZlID0gcmVtb3ZlXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgYWRkX2V4biA9IGFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuICBsZXQgdXBkYXRlID0gdXBkYXRlXG4gIGxldCB1cGRhdGVfYW5kX3JldHVybiA9IHVwZGF0ZV9hbmRfcmV0dXJuXG4gIGxldCBhZGRfbXVsdGkgPSBhZGRfbXVsdGlcbiAgbGV0IHJlbW92ZV9tdWx0aSA9IHJlbW92ZV9tdWx0aVxuICBsZXQgZmluZF9tdWx0aSA9IGZpbmRfbXVsdGlcbiAgbGV0IG1lbSA9IG1lbVxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZmlsdGVyX21hcCA9IGZpbHRlcl9tYXBcbiAgbGV0IGZpbHRlcl9tYXBpID0gZmlsdGVyX21hcGlcbiAgbGV0IGZpbHRlcl9rZXlzID0gZmlsdGVyX2tleXNcbiAgbGV0IGZpbHRlciA9IGZpbHRlclxuICBsZXQgZmlsdGVyaSA9IGZpbHRlcmlcbiAgbGV0IHBhcnRpdGlvbl9tYXAgPSBwYXJ0aXRpb25fbWFwXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA9IHBhcnRpdGlvbl9tYXBpXG4gIGxldCBwYXJ0aXRpb25fdGYgPSBwYXJ0aXRpb25fdGZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgPSBwYXJ0aXRpb25pX3RmXG4gIGxldCBmaW5kX29yX2FkZCA9IGZpbmRfb3JfYWRkXG4gIGxldCBmaW5kaV9vcl9hZGQgPSBmaW5kaV9vcl9hZGRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBmaW5kX2V4biA9IGZpbmRfZXhuXG4gIGxldCBmaW5kX2FuZF9jYWxsID0gZmluZF9hbmRfY2FsbFxuICBsZXQgZmluZF9hbmRfY2FsbDEgPSBmaW5kX2FuZF9jYWxsMVxuICBsZXQgZmluZF9hbmRfY2FsbDIgPSBmaW5kX2FuZF9jYWxsMlxuICBsZXQgZmluZGlfYW5kX2NhbGwgPSBmaW5kaV9hbmRfY2FsbFxuICBsZXQgZmluZGlfYW5kX2NhbGwxID0gZmluZGlfYW5kX2NhbGwxXG4gIGxldCBmaW5kaV9hbmRfY2FsbDIgPSBmaW5kaV9hbmRfY2FsbDJcbiAgbGV0IGZpbmRfYW5kX3JlbW92ZSA9IGZpbmRfYW5kX3JlbW92ZVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgbWVyZ2UgPSBtZXJnZVxuICBsZXQgbWVyZ2VfaW50byA9IG1lcmdlX2ludG9cbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgZmlsdGVyX2tleXNfaW5wbGFjZSA9IGZpbHRlcl9rZXlzX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9pbnBsYWNlID0gZmlsdGVyX2lucGxhY2VcbiAgbGV0IGZpbHRlcmlfaW5wbGFjZSA9IGZpbHRlcmlfaW5wbGFjZVxuICBsZXQgbWFwX2lucGxhY2UgPSBtYXBfaW5wbGFjZVxuICBsZXQgbWFwaV9pbnBsYWNlID0gbWFwaV9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlXG4gIGxldCBlcXVhbCA9IGVxdWFsXG4gIGxldCBzaW1pbGFyID0gc2ltaWxhclxuICBsZXQgaW5jciA9IGluY3JcbiAgbGV0IGRlY3IgPSBkZWNyXG4gIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5XG5lbmRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEtleS5oYXNoYWJsZVxuXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKVxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPSBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cFxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICB0eXBlICdhIGtleSA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gSGFzaGFibGUucG9seVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgSGFzaGFibGUgPSBIYXNoYWJsZS5IYXNoYWJsZVxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGxldCBoYXNoYWJsZSB0ID0gdC5oYXNoYWJsZVxuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBjcmVhdGUgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Rfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9tdWx0aSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICBjcmVhdGVfbWFwcGVkIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICBncm91cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbjs7XG5cbmxldCBoYXNoYWJsZV9zIHQgPSBIYXNoYWJsZS50b19rZXkgdC5oYXNoYWJsZVxuXG5tb2R1bGUgTSAoSyA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGspIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGspIHZfb2Zfc2V4cCBzZXhwID1cbiAgdF9vZl9zZXhwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgSykpIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKSB2X2dyYW1tYXIgPVxuICB0X3NleHBfZ3JhbW1hciBLLnRfc2V4cF9ncmFtbWFyIHZfZ3JhbW1hclxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5cbmxldCBoYXNoYWJsZV9zID0gSGFzaHRibC5oYXNoYWJsZV9zXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmxldCBwb2x5X2hhc2hhYmxlID0gSGFzaHRibC5Qb2x5Lmhhc2hhYmxlXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICdhIHQgPSAoJ2EsIHVuaXQpIEhhc2h0YmwudFxudHlwZSAnYSBoYXNoX3NldCA9ICdhIHRcbnR5cGUgJ2EgZWx0ID0gJ2FcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICBsZXQgY2xlYXIgPSBIYXNodGJsLmNsZWFyXG4gIGxldCBsZW5ndGggPSBIYXNodGJsLmxlbmd0aFxuICBsZXQgbWVtID0gSGFzaHRibC5tZW1cbiAgbGV0IGlzX2VtcHR5IHQgPSBIYXNodGJsLmlzX2VtcHR5IHRcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBIYXNodGJsLml0ZXJfa2V5cyB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIGFzIG8gLT4gci5yZXR1cm4gbyk7XG4gICAgICBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKVxuICBsZXQgYWRkIHQgayA9IEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpXG5cbiAgbGV0IHN0cmljdF9hZGQgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJlbGVtZW50IGFscmVhZHkgZXhpc3RzXCJcbiAgICBlbHNlIChcbiAgICAgIEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICA7O1xuXG4gIGxldCBzdHJpY3RfYWRkX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9hZGQgdCBrKVxuICBsZXQgcmVtb3ZlID0gSGFzaHRibC5yZW1vdmVcblxuICBsZXQgc3RyaWN0X3JlbW92ZSB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZSB0IGs7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvciBcImVsZW1lbnQgbm90IGluIHNldFwiIGsgKEhhc2h0Ymwuc2V4cF9vZl9rZXkgdClcbiAgOztcblxuICBsZXQgc3RyaWN0X3JlbW92ZV9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfcmVtb3ZlIHQgaylcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KVxuICBsZXQgaXRlciB0IH5mID0gSGFzaHRibC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgdG9fbGlzdCA9IEhhc2h0Ymwua2V5c1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lIHQgPVxuICAgIHNleHBfb2ZfbGlzdCBzZXhwX29mX2UgKHRvX2xpc3QgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGhhc2hhYmxlIHQpLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBpbmRleCA9IHJlZiAobGVuIC0gMSkgaW5cbiAgICBmb2xkIHQgfmluaXQ6W3x8XSB+ZjooZnVuIGFjYyBrZXkgLT5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBhY2MgPSAwXG4gICAgICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIGtleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGluZGV4IDo9ICFpbmRleCAtIDE7XG4gICAgICAgIGFjYy4oIWluZGV4KSA8LSBrZXk7XG4gICAgICAgIGFjYykpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mID0gSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gSGFzaHRibC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyBfIC0+IFNvbWUgKCkpXG4gIGxldCBkaWZmIHQxIHQyID0gZmlsdGVyIHQxIH5mOihmdW4ga2V5IC0+IG5vdCAoSGFzaHRibC5tZW0gdDIga2V5KSlcblxuICBsZXQgaW50ZXIgdDEgdDIgPVxuICAgIGxldCBzbWFsbGVyLCBsYXJnZXIgPSBpZiBsZW5ndGggdDEgPiBsZW5ndGggdDIgdGhlbiB0MiwgdDEgZWxzZSB0MSwgdDIgaW5cbiAgICBIYXNodGJsLmZpbHRlcmkgc21hbGxlciB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gSGFzaHRibC5tZW0gbGFyZ2VyIGtleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gICAgbGV0IHRvX3JlbW92ZSA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIHggLT4gaWYgZiB4IHRoZW4gYWMgZWxzZSB4IDo6IGFjKSBpblxuICAgIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biB4IC0+IHJlbW92ZSB0IHgpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsID0gSGFzaHRibC5tYXAgaGFzaHRibCB+ZjppZ25vcmVcbiAgbGV0IHRvX2hhc2h0YmwgdCB+ZiA9IEhhc2h0YmwubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIGxcbiAgaW5cbiAgbGV0IHQgPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgbSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGsgLT4gYWRkIHQgayk7XG4gIHRcbjs7XG5cbmxldCB0X29mX3NleHAgbSBlX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IFNleHAuQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgcmVxdWlyZXMgYSBsaXN0XCIgc2V4cFxuICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgbGV0IHQgPSBjcmVhdGUgbSB+c2l6ZTooTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHNleHAgLT5cbiAgICAgIGxldCBlID0gZV9vZl9zZXhwIHNleHAgaW5cbiAgICAgIG1hdGNoIHN0cmljdF9hZGQgdCBlIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgIHwgRXJyb3IgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIGdvdCBhIGR1cGxpY2F0ZSBlbGVtZW50XCIgc2V4cCk7XG4gICAgdFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEVsdC50KSAtPiBTZXhwLnQgLT4gJ2EgRWx0LnQgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgRWx0LnQgdFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgZV9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGVfb2Zfc2V4cCBzZXhwXG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgaGFzaF9zZXRcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IHBvbHlfaGFzaGFibGVcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbmVuZFxuXG5tb2R1bGUgTSAoRWx0IDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gRWx0LnQgdFxuZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCkgc2V4cCA9XG4gIHRfb2Zfc2V4cCAobW9kdWxlIEVsdCkgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KSA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgUHJpbnRmXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbmluY2x1ZGUgRmxvYXQwXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChmbG9hdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9mbG9hdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBmbG9hdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgdG9fZmxvYXQgeCA9IHhcbmxldCBvZl9mbG9hdCB4ID0geFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICB0cnkgZmxvYXRfb2Zfc3RyaW5nIHMgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwiRmxvYXQub2Zfc3RyaW5nICVzXCIgcyAoKVxuOztcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBDYW1sLkludDY0LnRvX2Zsb2F0IGlcbmxldCB0b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfZmxvYXRcbmxldCBpcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcbmxldCBpcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcblxuKCogVGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBcImV4blwiIHJvdW5kaW5nIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQsIHNvIHRoZXkgYXJlIHdyaXR0ZW5cbiAgIG91dCBzZXBhcmF0ZWx5LCBhbmQgdHVuZWQgaW5kaXZpZHVhbGx5LiAgKFdlIGNvdWxkIGhhdmUgdGhlIG9wdGlvbiB2ZXJzaW9ucyBjYWxsXG4gICB0aGUgXCJleG5cIiB2ZXJzaW9ucywgYnV0IHRoYXQgaW1wb3NlcyBhcmd1YWJseSBncmF0dWl0b3VzIG92ZXJoZWFkLS0tZXNwZWNpYWxseVxuICAgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGNhcHR1cmUgb2YgYmFja3RyYWNlcyBpcyBlbmFibGVkIHVwb24gXCJ3aXRoXCItLS1hbmQgdGhhdCBzZWVtc1xuICAgbm90IHdvcnRoIGl0IHdoZW4gY29tcGFyZWQgdG8gdGhlIHJlbGF0aXZlbHkgc21hbGwgYW1vdW50IG9mIGNvZGUgZHVwbGljYXRpb24uKSAqKVxuXG4oKiBFcnJvciByZXBvcnRpbmcgYmVsb3cgaXMgdmVyeSBjYXJlZnVsbHkgYXJyYW5nZWQgc28gdGhhdCwgZS5nLiwgW2lyb3VuZF9uZWFyZXN0X2V4bl1cbiAgIGl0c2VsZiBjYW4gYmUgaW5saW5lZCBpbnRvIGNhbGxlcnMgc3VjaCB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIGJveCBmb3IgdGhlXG4gICBbZmxvYXRdIGFyZ3VtZW50LiAgVGhpcyBpcyBkb25lIHdpdGggYSBib3ggW2JveF0gZnVuY3Rpb24gY2FyZWZ1bGx5IGNob3NlbiB0byBhbGxvdyB0aGVcbiAgIGNvbXBpbGVyIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIGJveCBmb3IgdGhlIGZsb2F0IG9ubHkgaW4gZXJyb3IgY2FzZXMuICBTZWUsIGUuZy4sXG4gICBbLi4vLi4vemVyby90ZXN0L3ByaWNlX3Rlc3QubWxdIGZvciBhIG1lY2hhbmljYWwgdGVzdCBvZiB0aGlzIHByb3BlcnR5IHdoZW4gYnVpbGRpbmdcbiAgIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz10cnVlXS4gKilcblxubGV0IGlyb3VuZF91cCB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfZG93biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlbiBpZiB0IDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpIGVsc2UgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpKVxuOztcblxubGV0IGlyb3VuZF90b3dhcmRzX3plcm8gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0Lmlyb3VuZF90b3dhcmRzX3plcm9fZXhuOiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKGJveCB0KVxuICAgICAgKClcbjs7XG5cbigqIE91dHNpZGUgb2YgdGhlIHJhbmdlIChyb3VuZF9uZWFyZXN0X2xiLi5yb3VuZF9uZWFyZXN0X3ViKSwgYWxsIHJlcHJlc2VudGFibGUgZG91Ymxlc1xuICAgYXJlIGludGVnZXJzIGluIHRoZSBtYXRoZW1hdGljYWwgc2Vuc2UsIGFuZCBbcm91bmRfbmVhcmVzdF0gc2hvdWxkIGJlIGlkZW50aXR5LlxuXG4gICBIb3dldmVyLCBmb3Igb2RkIG51bWJlcnMgd2l0aCB0aGUgYWJzb2x1dGUgdmFsdWUgYmV0d2VlbiAyKio1MiBhbmQgMioqNTMsIHRoZSBmb3JtdWxhXG4gICBbcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKyAwLjUpXSBkb2VzIG5vdCBob2xkOlxuXG4gICB7dlxuICAgICAjIGxldCBuYWl2ZV9yb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArLiAwLjUpOztcbiAgICAgIyBsZXQgeCA9IDIuICoqIDUyLiArLiAxLjs7XG4gICAgIHZhbCB4IDogZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk3LlxuICAgICAjIG5haXZlX3JvdW5kX25lYXJlc3QgeDs7XG4gICAgIC0gOiAgICAgZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk4LlxuICAgdn1cbiopXG5cbmxldCByb3VuZF9uZWFyZXN0X2xiID0gLS4oMi4gKiogNTIuKVxubGV0IHJvdW5kX25lYXJlc3RfdWIgPSAyLiAqKiA1Mi5cblxuKCogRm9yIFt4ID0gb25lX3VscCBgRG93biAwLjVdLCB0aGUgZm9ybXVsYSBbZmxvb3IgKHggKy4gMC41KV0gZm9yIHJvdW5kaW5nIHRvIG5lYXJlc3RcbiAgIGRvZXMgbm90IHdvcmssIGJlY2F1c2UgdGhlIGV4YWN0IHJlc3VsdCBpcyBoYWxmd2F5IGJldHdlZW4gW29uZV91bHAgYERvd24gMS5dIGFuZCBbMS5dLFxuICAgYW5kIGl0IGdldHMgcm91bmRlZCB1cCB0byBbMS5dIGR1ZSB0byB0aGUgcm91bmQtdGllcy10by1ldmVuIHJ1bGUuICopXG5sZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHAgYERvd24gMC41XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCA9XG4gIHRcbiAgKy5cbiAgaWYgdCA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgdGhlbiBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmICgqIHNpbmNlIHQgPCAwLjUsIG1ha2Ugc3VyZSB0aGUgcmVzdWx0IGlzIDwgMS4wICopXG4gIGVsc2UgMC41XG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCkpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgICBlbHNlIE5vbmVcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3QgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfMzJcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG5fMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbFwiIChib3ggdCkgKCkpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9uZWFyZXN0X2V4bl82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0X2V4bl8zMlxuOztcblxuKCogVGhlIGZvbGxvd2luZyBbaXJvdW5kX2V4bl0gYW5kIFtpcm91bmRdIGZ1bmN0aW9ucyBhcmUgc2xvd2VyIHRoYW4gdGhlIG9uZXMgYWJvdmUuXG4gICBUaGVpciBlcXVpdmFsZW5jZSB0byB0aG9zZSBmdW5jdGlvbnMgaXMgdGVzdGVkIGluIHRoZSB1bml0IHRlc3RzIGJlbG93LiAqKVxuXG5sZXRbQGlubGluZV0gaXJvdW5kX2V4biA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgWmVybyAtPiBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0XG4gIHwgYE5lYXJlc3QgLT4gaXJvdW5kX25lYXJlc3RfZXhuIHRcbiAgfCBgVXAgLT4gaXJvdW5kX3VwX2V4biB0XG4gIHwgYERvd24gLT4gaXJvdW5kX2Rvd25fZXhuIHRcbjs7XG5cbmxldCBpcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIHRyeSBTb21lIChpcm91bmRfZXhuIH5kaXIgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzX2luZiB0ID0gMS4gLy4gdCA9IDAuXG5sZXQgaXNfZmluaXRlIHQgPSB0IC0uIHQgPSAwLlxuXG5sZXQgbWluX2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IG1heF9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBhZGQgPSAoICsuIClcbmxldCBzdWIgPSAoIC0uIClcbmxldCBuZWcgPSAoIH4tLiApXG5sZXQgYWJzID0gYWJzX2Zsb2F0XG5sZXQgc2NhbGUgPSAoICouIClcbmxldCBzcXVhcmUgeCA9IHggKi4geFxuXG5tb2R1bGUgUGFydHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGZyYWN0aW9uYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBpbnRlZ3JhbCA6IHQgLT4gZmxvYXRcbiAgdmFsIG1vZGYgOiBmbG9hdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgKiBmbG9hdFxuXG4gIGxldCBmcmFjdGlvbmFsIHQgPSBmc3QgdFxuICBsZXQgaW50ZWdyYWwgdCA9IHNuZCB0XG4gIGxldCBtb2RmID0gbW9kZlxuZW5kXG5cbmxldCBtb2RmID0gUGFydHMubW9kZlxubGV0IHJvdW5kX2Rvd24gPSBmbG9vclxubGV0IHJvdW5kX3VwID0gY2VpbFxubGV0IHJvdW5kX3Rvd2FyZHNfemVybyB0ID0gaWYgdCA+PSAwLiB0aGVuIHJvdW5kX2Rvd24gdCBlbHNlIHJvdW5kX3VwIHRcblxuKCogc2VlIHRoZSBjb21tZW50IGFib3ZlIFtyb3VuZF9uZWFyZXN0X2xiXSBhbmQgW3JvdW5kX25lYXJlc3RfdWJdIGZvciBhbiBleHBsYW5hdGlvbiAqKVxubGV0W0BvY2FtbC5pbmxpbmVdIHJvdW5kX25lYXJlc3RfaW5saW5lIHQgPVxuICBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYiAmJiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIGZsb29yIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICBlbHNlIHQgKy4gMC5cbjs7XG5cbmxldCByb3VuZF9uZWFyZXN0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHRcblxubGV0IHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIHQgPVxuICBpZiB0IDw9IHJvdW5kX25lYXJlc3RfbGIgfHwgdCA+PSByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gdCArLiAwLlxuICBlbHNlIChcbiAgICBsZXQgZmxvb3IgPSBmbG9vciB0IGluXG4gICAgKCogW2NlaWxfb3Jfc3VjYyA9IGlmIHQgaXMgYW4gaW50ZWdlciB0aGVuIHQgKy4gMS4gZWxzZSBjZWlsIHRdLiAgRmFzdGVyIHRoYW4gW2NlaWxdLiAqKVxuICAgIGxldCBjZWlsX29yX3N1Y2MgPSBmbG9vciArLiAxLiBpblxuICAgIGxldCBkaWZmX2Zsb29yID0gdCAtLiBmbG9vciBpblxuICAgIGxldCBkaWZmX2NlaWwgPSBjZWlsX29yX3N1Y2MgLS4gdCBpblxuICAgIGlmIGRpZmZfZmxvb3IgPCBkaWZmX2NlaWxcbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBpZiBkaWZmX2Zsb29yID4gZGlmZl9jZWlsXG4gICAgdGhlbiBjZWlsX29yX3N1Y2NcbiAgICBlbHNlIGlmICgqIGV4YWN0IHRpZSwgcGljayB0aGUgZXZlbiAqKVxuICAgICAgbW9kX2Zsb2F0IGZsb29yIDIuID0gMC5cbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBjZWlsX29yX3N1Y2MpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xubGV0IGludDYzX3JvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcblxubGV0IGludDYzX3JvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gdDAgPVxuICBsZXQgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdDAgaW5cbiAgaWYgdCA+IDAuXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoYm94IHQwKVxuICAgICAgICAoKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChib3ggdDApXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuIGYgPSBJbnQ2My5vZl9pbnQgKGlyb3VuZF9uZWFyZXN0X2V4biBmKVxuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgfCBXMzIgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbjs7XG5cbmxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IHRcbiAgfCBgRG93biAtPiByb3VuZF9kb3duIHRcbiAgfCBgVXAgLT4gcm91bmRfdXAgdFxuICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyB0XG47O1xuXG5tb2R1bGUgQ2xhc3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEluZmluaXRlXG4gICAgfCBOYW5cbiAgICB8IE5vcm1hbFxuICAgIHwgU3Vibm9ybWFsXG4gICAgfCBaZXJvXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBJbmZpbml0ZTsgTmFuOyBOb3JtYWw7IFN1Ym5vcm1hbDsgWmVybyBdIDogdCBsaXN0KVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJmbG9hdC5tbC5DbGFzcy50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgLT4gSW5maW5pdGVcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSAtPiBOb3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSAtPiBTdWJub3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgfCBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluZmluaXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluZmluaXRlXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICB8IE5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOb3JtYWxcIlxuICAgICAgfCBTdWJub3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3Vibm9ybWFsXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkluZmluaXRlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOb3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiU3Vibm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5lbmRcblxubGV0IGNsYXNzaWZ5IHQgPVxuICBsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgfCBGUF9ub3JtYWwgLT4gQy5Ob3JtYWxcbiAgfCBGUF9zdWJub3JtYWwgLT4gQy5TdWJub3JtYWxcbiAgfCBGUF96ZXJvIC0+IEMuWmVyb1xuICB8IEZQX2luZmluaXRlIC0+IEMuSW5maW5pdGVcbiAgfCBGUF9uYW4gLT4gQy5OYW5cbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgPyhkZWxpbWl0ZXIgPSAnXycpID8oc3RyaXBfemVybyA9IGZhbHNlKSBzdHJpbmcgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHJpbmcgfm9uOicuJyB3aXRoXG4gIHwgTm9uZSAtPiBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBzdHJpbmcgfmRlbGltaXRlclxuICB8IFNvbWUgKGxlZnQsIHJpZ2h0KSAtPlxuICAgIGxldCBsZWZ0ID0gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgbGVmdCB+ZGVsaW1pdGVyIGluXG4gICAgbGV0IHJpZ2h0ID1cbiAgICAgIGlmIHN0cmlwX3plcm8gdGhlbiBTdHJpbmcucnN0cmlwIHJpZ2h0IH5kcm9wOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJzAnKSBlbHNlIHJpZ2h0XG4gICAgaW5cbiAgICAobWF0Y2ggcmlnaHQgd2l0aFxuICAgICB8IFwiXCIgLT4gbGVmdFxuICAgICB8IF8gLT4gbGVmdCBeIFwiLlwiIF4gcmlnaHQpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA/ZGVsaW1pdGVyID8oZGVjaW1hbHMgPSAzKSA/c3RyaXBfemVybyA/KGV4cGxpY2l0X3BsdXMgPSBmYWxzZSkgZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgZGVjaW1hbHMgMFxuICB0aGVuIGludmFsaWRfYXJnZiBcInRvX3N0cmluZ19odW06IGludmFsaWQgYXJndW1lbnQgfmRlY2ltYWxzPSVkXCIgZGVjaW1hbHMgKCk7XG4gIG1hdGNoIGNsYXNzaWZ5IGYgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIGYgPiAwLiB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hblwiXG4gIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBzID1cbiAgICAgIGlmIGV4cGxpY2l0X3BsdXMgdGhlbiBzcHJpbnRmIFwiJSsuKmZcIiBkZWNpbWFscyBmIGVsc2Ugc3ByaW50ZiBcIiUuKmZcIiBkZWNpbWFscyBmXG4gICAgaW5cbiAgICBpbnNlcnRfdW5kZXJzY29yZXMgcyA/ZGVsaW1pdGVyID9zdHJpcF96ZXJvXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBsZXQgc2V4cCA9IHNleHBfb2ZfdCB0IGluXG4gIG1hdGNoICFTZXhwLm9mX2Zsb2F0X3N0eWxlIHdpdGhcbiAgfCBgTm9fdW5kZXJzY29yZXMgLT4gc2V4cFxuICB8IGBVbmRlcnNjb3JlcyAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBMaXN0IF8gLT5cbiAgICAgICByYWlzZV9zXG4gICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICBcIltzZXhwX29mX2Zsb2F0XSBwcm9kdWNlZCBzdHJhbmdlIHNleHBcIlxuICAgICAgICAgICAgWyBcInNleHBcIiwgU2V4cC5zZXhwX29mX3Qgc2V4cCBdKVxuICAgICB8IEF0b20gc3RyaW5nIC0+XG4gICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHN0cmluZyAnRScgdGhlbiBzZXhwIGVsc2UgQXRvbSAoaW5zZXJ0X3VuZGVyc2NvcmVzIHN0cmluZykpXG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0ID8ocHJlZml4ID0gXCJcIikgfmtpbG8gfm1lZ2EgfmdpZ2EgfnRlcmEgP3BldGEgKCkgPVxuICAoKiBSb3VuZCBhIHJhdGlvIHRvd2FyZCB0aGUgbmVhcmVzdCBpbnRlZ2VyLCByZXNvbHZpbmcgdGllcyB0b3dhcmQgdGhlIG5lYXJlc3QgZXZlblxuICAgICBudW1iZXIuICBGb3Igc2FuZSBpbnB1dHMgKGluIHBhcnRpY3VsYXIsIHdoZW4gW2Rlbm9taW5hdG9yXSBpcyBhbiBpbnRlZ2VyIGFuZFxuICAgICBbYWJzIG51bWVyYXRvciA8IDJlNTJdKSB0aGlzIHNob3VsZCBiZSBhY2N1cmF0ZS4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBtaWdodCBiZSBhXG4gICAgIGxpdHRsZSBiaXQgb2ZmLCBidXQgd2UgZG9uJ3QgcmVhbGx5IHVzZSB0aGF0IGNhc2UuICopXG4gIGxldCBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgayA9IGZsb29yIChudW1lcmF0b3IgLy4gZGVub21pbmF0b3IpIGluXG4gICAgKCogaWYgW2FicyBrIDwgMmU1M10sIHRoZW4gYm90aCBba10gYW5kIFtrICsuIDEuXSBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYW5kIGluXG4gICAgICAgcGFydGljdWxhciBbayArLiAxLiA+IGtdLiAgSWYgW2Rlbm9taW5hdG9yXSBpcyBhbHNvIGFuIGludGVnZXIsIGFuZFxuICAgICAgIFthYnMgKGRlbm9taW5hdG9yICouIChrICsuIDEpKSA8IDJlNTNdIChhbmQgaW4gc29tZSBvdGhlciBjYXNlcywgdG9vKSwgdGhlbiBbbG93ZXJdXG4gICAgICAgYW5kIFtoaWdoZXJdIGFyZSBhY3R1YWxseSBib3RoIGFjY3VyYXRlLiAgU2luY2UgKHJvdWdobHkpXG4gICAgICAgW251bWVyYXRvciA9IGRlbm9taW5hdG9yICouIGtdIHRoZW4gZm9yIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0gd2Ugc2hvdWxkIGJlXG4gICAgICAgZmluZS4gKilcbiAgICBsZXQgbG93ZXIgPSBkZW5vbWluYXRvciAqLiBrIGluXG4gICAgbGV0IGhpZ2hlciA9IGRlbm9taW5hdG9yICouIChrICsuIDEuKSBpblxuICAgICgqIFN1YnRyYWN0aW5nIG51bWJlcnMgd2l0aGluIGEgZmFjdG9yIG9mIHR3byBmcm9tIGVhY2ggb3RoZXIgaXMgYWNjdXJhdGUuXG4gICAgICAgU28gZWl0aGVyIHRoZSB0d28gc3VidHJhY3Rpb25zIGJlbG93IGFyZSBhY2N1cmF0ZSwgb3IgayA9IDAsIG9yIGsgPSAtMS5cbiAgICAgICBJbiBjYXNlIG9mIGEgdGllLCByb3VuZCB0byBldmVuLiAqKVxuICAgIGxldCBkaWZmX3JpZ2h0ID0gaGlnaGVyIC0uIG51bWVyYXRvciBpblxuICAgIGxldCBkaWZmX2xlZnQgPSBudW1lcmF0b3IgLS4gbG93ZXIgaW5cbiAgICBsZXQgayA9IGlyb3VuZF9uZWFyZXN0X2V4biBrIGluXG4gICAgaWYgZGlmZl9yaWdodCA8IGRpZmZfbGVmdFxuICAgIHRoZW4gayArIDFcbiAgICBlbHNlIGlmIGRpZmZfcmlnaHQgPiBkaWZmX2xlZnRcbiAgICB0aGVuIGtcbiAgICBlbHNlIGlmICgqIGEgdGllICopXG4gICAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChrIG1vZCAyKSAwXG4gICAgdGhlbiBrXG4gICAgZWxzZSBrICsgMVxuICBpblxuICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiB0IDwgMC4wIHRoZW4gXCItaW5mICBcIiBlbHNlIFwiaW5mICBcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hbiAgXCJcbiAgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IGdvIHQgPVxuICAgICAgbGV0IGNvbnZfb25lIHQgPVxuICAgICAgICBhc3NlcnQgKDAuIDw9IHQgJiYgdCA8IDk5OS45NSk7XG4gICAgICAgIGxldCB4ID0gcHJlZml4IF4gZm9ybWF0X2Zsb2F0IFwiJS4xZlwiIHQgaW5cbiAgICAgICAgKCogRml4IHRoZSBcIi4wXCIgc3VmZml4ICopXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggeCB+c3VmZml4OlwiLjBcIlxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeCA9IEJ5dGVzLm9mX3N0cmluZyB4IGluXG4gICAgICAgICAgbGV0IG4gPSBCeXRlcy5sZW5ndGggeCBpblxuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMSkgJyAnO1xuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMikgJyAnO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6eClcbiAgICAgICAgZWxzZSB4XG4gICAgICBpblxuICAgICAgbGV0IGNvbnYgbWFnIHQgZGVub21pbmF0b3IgPVxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIChkZW5vbWluYXRvciA9IDEwMC4gJiYgdCA+PSA5OTkuOTUpXG4gICAgICAgICAgfHwgKGRlbm9taW5hdG9yID49IDEwMF8wMDAuICYmIHQgPj0gcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOS45OTlfNSkpKTtcbiAgICAgICAgYXNzZXJ0ICh0IDwgcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOV85OTkuNSkpO1xuICAgICAgICBsZXQgaSwgZCA9XG4gICAgICAgICAgbGV0IGsgPSBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3I6dCB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgICAoKiBbbW9kXSBpcyBva2F5IGhlcmUgYmVjYXVzZSB3ZSBrbm93IGkgPj0gMC4gKilcbiAgICAgICAgICBrIC8gMTAsIGsgbW9kIDEwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICAgICAgYXNzZXJ0ICgwIDw9IGkgJiYgaSA8IDEwMDApO1xuICAgICAgICBhc3NlcnQgKDAgPD0gZCAmJiBkIDwgMTApO1xuICAgICAgICBpZiBkID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIlcyVkJXMgXCIgcHJlZml4IGkgbWFnXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJWQlcyVkXCIgcHJlZml4IGkgbWFnIGRcbiAgICAgIGluXG4gICAgICAoKiBXaGlsZSB0aGUgc3RhbmRhcmQgbWV0cmljIHByZWZpeGVzIChlLmcuIGNhcGl0YWwgXCJNXCIgcmF0aGVyIHRoYW4gXCJtXCIsIFsxXSkgYXJlXG4gICAgICAgICBub21pbmFsbHkgbW9yZSBjb3JyZWN0LCB0aGlzIGhpbmRlcnMgcmVhZGFiaWxpdHkgaW4gb3VyIGNhc2UuICBFLmcuLCAxMEc2IGFuZFxuICAgICAgICAgMTA2NiBsb29rIHRvbyBzaW1pbGFyLiAgVGhhdCdzIGFuIGV4dHJlbWUgZXhhbXBsZSwgYnV0IGluIGdlbmVyYWwgayxtLGcsdCxwXG4gICAgICAgICBwcm9iYWJseSBzdGFuZCBvdXQgYmV0dGVyIHRoYW4gSyxNLEcsVCxQIHdoZW4gaW50ZXJzcGVyc2VkIHdpdGggZGlnaXRzLlxuXG4gICAgICAgICBbMV0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRyaWNfcHJlZml4ICopXG4gICAgICAoKiBUaGUgdHJpY2sgaGVyZSBpcyB0aGF0OlxuICAgICAgICAgLSB0aGUgZmlyc3QgYm91bmRhcnkgKDk5OS45NSkgYXMgYSBmbG9hdCBpcyBzbGlnaHRseSBvdmVyLXJlcHJlc2VudGVkIChzbyBpdCBpc1xuICAgICAgICAgICBiZXR0ZXIgYXBwcm94aW1hdGVkIGFzIFwiMWtcIiB0aGFuIGFzIFwiOTk5LjlcIiksXG4gICAgICAgICAtIHRoZSBvdGhlciBib3VuZGFyaWVzIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBiZWNhdXNlIHRoZXkgYXJlIGludGVnZXJzLlxuICAgICAgICAgICBUaGF0J3Mgd2h5IHRoZSBzdHJpY3QgZXF1YWxpdGllcyBiZWxvdyBkbyBleGFjdGx5IHdoYXQgd2Ugd2FudC4gKilcbiAgICAgIGlmIHQgPCA5OTkuOTVFMFxuICAgICAgdGhlbiBjb252X29uZSB0XG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFM1xuICAgICAgdGhlbiBjb252IGtpbG8gdCAxMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFNlxuICAgICAgdGhlbiBjb252IG1lZ2EgdCAxMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTlcbiAgICAgIHRoZW4gY29udiBnaWdhIHQgMTAwXzAwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFMTJcbiAgICAgIHRoZW4gY29udiB0ZXJhIHQgMTAwXzAwMF8wMDBfMDAwLlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBldGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0XG4gICAgICAgIHwgU29tZSBwZXRhIC0+XG4gICAgICAgICAgaWYgdCA8IDk5OS45NUUxNVxuICAgICAgICAgIHRoZW4gY29udiBwZXRhIHQgMTAwXzAwMF8wMDBfMDAwXzAwMC5cbiAgICAgICAgICBlbHNlIHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdClcbiAgICBpblxuICAgIGlmIHQgPj0gMC4gdGhlbiBnbyB0IGVsc2UgXCItXCIgXiBnbyB+LS50XG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIHQgPVxuICB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgfmtpbG86XCJrXCIgfm1lZ2E6XCJtXCIgfmdpZ2E6XCJnXCIgfnRlcmE6XCJ0XCIgfnBldGE6XCJwXCIgKClcbjs7XG5cbigqIFBlcmZvcm1hbmNlIG5vdGU6IEluaXRpYWxpemluZyB0aGUgYWNjdW11bGF0b3IgdG8gMSByZXN1bHRzIGluIG9uZSBleHRyYVxuICAgbXVsdGlwbHk7IGUuZy4sIHRvIGNvbXB1dGUgeCAqKiA0LCB3ZSBpbiBwcmluY2lwbGUgb25seSBuZWVkIDIgbXVsdGlwbGllcyxcbiAgIGJ1dCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSAzIG11bHRpcGxpZXMuICBIb3dldmVyLCBhdHRlbXB0cyB0byBhdm9pZCB0aGlzXG4gICAobGlrZSBkZWNyZW1lbnRpbmcgbiBhbmQgaW5pdGlhbGl6aW5nIGFjY3VtIHRvIGJlIHgsIG9yIGhhbmRsaW5nIHNtYWxsXG4gICBleHBvbmVudHMgYXMgYSBzcGVjaWFsIGNhc2UpIGhhdmUgbm90IHlpZWxkZWQgYW55dGhpbmcgdGhhdCBpcyBhIG5ldFxuICAgaW1wcm92ZW1lbnQuXG4qKVxubGV0IGludF9wb3cgeCBuID1cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBuID0gMFxuICB0aGVuIDEuXG4gIGVsc2UgKFxuICAgICgqIFVzaW5nIFt4ICsuICgtMC4pXSBvbiB0aGUgZm9sbG93aW5nIGxpbmUgY29udmluY2VzIHRoZSBjb21waWxlciB0byBhdm9pZCBhIGNlcnRhaW5cbiAgICAgICBib3hpbmcgKHRoYXQgd291bGQgcmVzdWx0IGluIGFsbG9jYXRpb24gaW4gZWFjaCBpdGVyYXRpb24pLiAgU29vbiwgdGhlIGNvbXBpbGVyXG4gICAgICAgc2hvdWxkbid0IG5lZWQgdGhpcyBcImhpbnRcIiB0byBhdm9pZCB0aGUgYm94aW5nLiAgVGhlIHJlYXNvbiB3ZSBhZGQgLTAgcmF0aGVyIHRoYW4gMFxuICAgICAgIGlzIHRoYXQgW3ggKy4gKC0wLildIGlzIGFwcGFyZW50bHkgYWx3YXlzIHRoZSBzYW1lIGFzIFt4XSwgd2hlcmVhcyBbeCArLiAwLl0gaXNcbiAgICAgICBub3QsIGluIHRoYXQgaXQgc2VuZHMgWy0wLl0gdG8gWzAuXS4gIFRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGJlY2F1c2Ugd2Ugd2FudFxuICAgICAgIFtpbnRfcG93ICgtMC4pICgtMSldIHRvIHJldHVybiBuZWdfaW5maW5pdHkganVzdCBsaWtlIFstMC4gKiogLTEuXSB3b3VsZC4gICopXG4gICAgbGV0IHggPSByZWYgKHggKy4gLTAuKSBpblxuICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICBsZXQgYWNjdW0gPSByZWYgMS4gaW5cbiAgICBpZiAhbiA8IDBcbiAgICB0aGVuIChcbiAgICAgICgqIHggKiogbiA9ICgxL3gpICoqIC1uICopXG4gICAgICB4IDo9IDEuIC8uICF4O1xuICAgICAgbiA6PSB+LSAoIW4pO1xuICAgICAgaWYgIW4gPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogbiBtdXN0IGhhdmUgYmVlbiBtaW5faW50LCBzbyBpdCBpcyBub3cgc28gYmlnIHRoYXQgaXQgaGFzIHdyYXBwZWQgYXJvdW5kLlxuICAgICAgICAgICBXZSBkZWNyZW1lbnQgaXQgc28gdGhhdCBpdCBsb29rcyBwb3NpdGl2ZSBhZ2FpbiwgYnV0IGFjY29yZGluZ2x5IGhhdmVcbiAgICAgICAgICAgdG8gcHV0IGFuIGV4dHJhIGZhY3RvciBvZiB4IGluIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgICAgKilcbiAgICAgICAgYWNjdW0gOj0gIXg7XG4gICAgICAgIGRlY3IgbikpO1xuICAgICgqIExldHRpbmcgW2FdIGRlbm90ZSAodGhlIG9yaWdpbmFsIHZhbHVlIG9mKSBbeCAqKiBuXSwgd2UgbWFpbnRhaW5cbiAgICAgICB0aGUgaW52YXJpYW50IHRoYXQgWyh4ICoqIG4pICouIGFjY3VtID0gYV0uICopXG4gICAgd2hpbGUgIW4gPiAxIGRvXG4gICAgICBpZiAhbiBsYW5kIDEgPD4gMCB0aGVuIGFjY3VtIDo9ICF4ICouICFhY2N1bTtcbiAgICAgIHggOj0gIXggKi4gIXg7XG4gICAgICBuIDo9ICFuIGxzciAxXG4gICAgZG9uZTtcbiAgICAoKiBuIGlzIG5lY2Vzc2FyaWx5IDEgYXQgdGhpcyBwb2ludCwgc28gdGhlcmUgaXMgb25lIGFkZGl0aW9uYWxcbiAgICAgICBtdWx0aXBsaWNhdGlvbiBieSB4LiAqKVxuICAgICF4ICouICFhY2N1bSlcbjs7XG5cbmxldCByb3VuZF9nZW4geCB+aG93ID1cbiAgaWYgeCA9IDAuXG4gIHRoZW4gMC5cbiAgZWxzZSBpZiBub3QgKGlzX2Zpbml0ZSB4KVxuICB0aGVuIHhcbiAgZWxzZSAoXG4gICAgKCogU2lnbmlmaWNhbnQgZGlnaXRzIGFuZCBkZWNpbWFsIGRpZ2l0cy4gKilcbiAgICBsZXQgc2QsIGRkID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGBzaWduaWZpY2FudF9kaWdpdHMgc2QgLT5cbiAgICAgICAgbGV0IGRkID0gc2QgLSB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgICB8IGBkZWNpbWFsX2RpZ2l0cyBkZCAtPlxuICAgICAgICBsZXQgc2QgPSBkZCArIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBzZCA8IDBcbiAgICB0aGVuIDAuXG4gICAgZWxzZSBpZiBzZCA+PSAxN1xuICAgIHRoZW4geFxuICAgIGVsc2UgKFxuICAgICAgKCogQ2hvb3NlIHRoZSBvcmRlciB0aGF0IGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LiBTbWFsbCBwb3NpdGl2ZVxuICAgICAgICAgaW50ZWdlcnMgYXJlLCBidXQgdGhlaXIgaW52ZXJzZXMgaW4gbW9zdCBjYXNlcyBhcmUgbm90LiAqKVxuICAgICAgbGV0IGFic19kZCA9IEludC5hYnMgZGQgaW5cbiAgICAgIGlmIGFic19kZCA+IDIyIHx8IHNkID49IDE2XG4gICAgICAoKiAxMCoqMjIgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIGJ1dCAxMCoqMjMgaXMgbm90LCBzbyB1c2UgdGhlIHNsb3dcbiAgICAgICAgIHBhdGguICBTaW1pbGFybHksIGlmIHdlIG5lZWQgMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGluIHRoZSByZXN1bHQsIHRoZW4gdGhlIGludGVnZXJcbiAgICAgICAgIFtyb3VuZF9uZWFyZXN0ICh4IDxvcD4gb3JkZXIpXSBtaWdodCBub3QgYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIHNpbmNlXG4gICAgICAgICBmb3Igc29tZSByYW5nZXMgd2Ugb25seSBoYXZlIDE1IGRpZ2l0cyBvZiBwcmVjaXNpb24gZ3VhcmFudGVlZC5cblxuICAgICAgICAgVGhhdCBzYWlkLCB3ZSBhcmUgc3RpbGwgcm91bmRpbmcgdHdpY2UgaGVyZTpcblxuICAgICAgICAgMSkgZmlyc3QgdGltZSB3aGVuIHJvdW5kaW5nIFt4ICouIG9yZGVyXSBvciBbeCAvLiBvcmRlcl0gdG8gdGhlIG5lYXJlc3QgZmxvYXRcbiAgICAgICAgIChqdXN0IHRoZSBub3JtYWwgd2F5IGZsb2F0aW5nLXBvaW50IG11bHRpcGxpY2F0aW9uIG9yIGRpdmlzaW9uIHdvcmtzKSxcblxuICAgICAgICAgMikgc2Vjb25kIHRpbWUgd2hlbiBhcHBseWluZyBbcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW5dIHRvIHRoZSByZXN1bHQgb2YgdGhlXG4gICAgICAgICBhYm92ZSBvcGVyYXRpb25cblxuICAgICAgICAgU28gZm9yIGFyZ3VtZW50cyB3aXRoaW4gYW4gdWxwIGZyb20gYSB0aWUgd2UgbWlnaHQgc3RpbGwgcHJvZHVjZSBhbiBvZmYtYnktb25lXG4gICAgICAgICByZXN1bHQuICopXG4gICAgICB0aGVuIG9mX3N0cmluZyAoc3ByaW50ZiBcIiUuKmdcIiBzZCB4KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBvcmRlciA9IGludF9wb3cgMTAuIGFic19kZCBpblxuICAgICAgICBpZiBkZCA+PSAwXG4gICAgICAgIHRoZW4gcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggKi4gb3JkZXIpIC8uIG9yZGVyXG4gICAgICAgIGVsc2Ugcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggLy4gb3JkZXIpICouIG9yZGVyKSkpXG47O1xuXG5sZXQgcm91bmRfc2lnbmlmaWNhbnQgeCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgc2lnbmlmaWNhbnRfZGlnaXRzIDBcbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5yb3VuZF9zaWduaWZpY2FudDogaW52YWxpZCBhcmd1bWVudCBzaWduaWZpY2FudF9kaWdpdHM6JWRcIlxuICAgICAgc2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgICAoKVxuICBlbHNlIHJvdW5kX2dlbiB4IH5ob3c6KGBzaWduaWZpY2FudF9kaWdpdHMgc2lnbmlmaWNhbnRfZGlnaXRzKVxuOztcblxubGV0IHJvdW5kX2RlY2ltYWwgeCB+ZGVjaW1hbF9kaWdpdHMgPSByb3VuZF9nZW4geCB+aG93OihgZGVjaW1hbF9kaWdpdHMgZGVjaW1hbF9kaWdpdHMpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gICgqIGNsYW1wX3VuY2hlY2tlZCBpcyBpbiBmbG9hdDAubWwgKilcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBpZiBtaW4gPD0gbWF4XG4gIHRoZW4gT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbjs7XG5cbmxldCAoICsgKSA9ICggKy4gKVxubGV0ICggLSApID0gKCAtLiApXG5sZXQgKCAqICkgPSAoICouIClcbmxldCAoICoqICkgPSAoICoqIClcbmxldCAoIC8gKSA9ICggLy4gKVxubGV0ICggJSApID0gKCAlLiApXG5sZXQgKCB+LSApID0gKCB+LS4gKVxuXG5sZXQgc2lnbl9leG4gdCA6IFNpZ24udCA9XG4gIGlmIHQgPiAwLlxuICB0aGVuIFBvc1xuICBlbHNlIGlmIHQgPCAwLlxuICB0aGVuIE5lZ1xuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuIFplcm9cbiAgZWxzZSBFcnJvci5yYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJGbG9hdC5zaWduX2V4biBvZiBOQU5cIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgc2lnbl9vcl9uYW4gdCA6IFNpZ25fb3JfbmFuLnQgPVxuICBpZiB0ID4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwgMC4gdGhlbiBOZWcgZWxzZSBpZiB0ID0gMC4gdGhlbiBaZXJvIGVsc2UgTmFuXG47O1xuXG5sZXQgaWVlZV9uZWdhdGl2ZSB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgQ2FtbC5JbnQ2NC56ZXJvKVxuOztcblxubGV0IGV4cG9uZW50X2JpdHMgPSAxMVxubGV0IG1hbnRpc3NhX2JpdHMgPSA1MlxubGV0IGV4cG9uZW50X21hc2s2NCA9IEludDY0LihzaGlmdF9sZWZ0IG9uZSBleHBvbmVudF9iaXRzIC0gb25lKVxubGV0IGV4cG9uZW50X21hc2sgPSBJbnQ2NC50b19pbnRfZXhuIGV4cG9uZW50X21hc2s2NFxubGV0IG1hbnRpc3NhX21hc2sgPSBJbnQ2My4oc2hpZnRfbGVmdCBvbmUgbWFudGlzc2FfYml0cyAtIG9uZSlcbmxldCBtYW50aXNzYV9tYXNrNjQgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYV9tYXNrXG5cbmxldCBpZWVlX2V4cG9uZW50IHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDY0LihiaXRfYW5kIChzaGlmdF9yaWdodF9sb2dpY2FsIGJpdHMgbWFudGlzc2FfYml0cykgZXhwb25lbnRfbWFzazY0KVxuICB8PiBDYW1sLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjMub2ZfaW50NjRfZXhuIENhbWwuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBDYW1sLkludDY0Lm1pbl9pbnQgZWxzZSBDYW1sLkludDY0Lnplcm8gaW5cbiAgICBsZXQgZXhwdF9iaXRzID0gQ2FtbC5JbnQ2NC5zaGlmdF9sZWZ0IChDYW1sLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0cyBpblxuICAgIGxldCBtYW50X2JpdHMgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYSBpblxuICAgIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC4obG9nb3Igc2lnbl9iaXRzIChsb2dvciBleHB0X2JpdHMgbWFudF9iaXRzKSkgaW5cbiAgICBDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBDYW1sLkJ1ZmZlclxuXG5sZXQgY29udGVudHNfYnl0ZXMgPSB0b19ieXRlc1xubGV0IGFkZF9zdWJzdHJpbmcgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJzdHJpbmcgdCBzIHBvcyBsZW5cbmxldCBhZGRfc3ViYnl0ZXMgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJieXRlcyB0IHMgcG9zIGxlblxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9zdHJpbmcgKGNvbnRlbnRzIHQpXG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIENhbWwuQnVmZmVyLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKENhbWwuQnVmZmVyKSAoVG9fYnl0ZXMpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9IENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZVxuXG5sZXQgZWxpZGUgPSByZWYgZmFsc2VcbmxldCBlbGlkZWRfbWVzc2FnZSA9IFwiPGJhY2t0cmFjZSBlbGlkZWQgaW4gdGVzdD5cIlxuXG5sZXQgZ2V0ID8oYXRfbW9zdF9udW1fZnJhbWVzID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBDYW1sLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgdFxuOztcblxubGV0IHRvX3N0cmluZ19saXN0IHQgPSBTdHJpbmcuc3BsaXRfbGluZXMgKHRvX3N0cmluZyB0KVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5MaXN0IChMaXN0Lm1hcCAodG9fc3RyaW5nX2xpc3QgdCkgfmY6KGZ1biB4IC0+IFNleHAuQXRvbSB4KSlcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgc2V0X3JlY29yZGluZyA9IENhbWwuUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZVxuICBsZXQgYW1fcmVjb3JkaW5nID0gQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKClcblxuICBsZXQgbW9zdF9yZWNlbnRfZm9yX2V4biBleG4gPVxuICAgIGlmIEV4bi5pc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4biB0aGVuIFNvbWUgKG1vc3RfcmVjZW50ICgpKSBlbHNlIE5vbmVcbiAgOztcblxuICAoKiBXZSB0dXJuIG9uIGJhY2t0cmFjZXMgYnkgZGVmYXVsdCBpZiBPQ0FNTFJVTlBBUkFNIGRvZXNuJ3QgZXhwbGljaXRseSBtZW50aW9uIHRoZW0uICopXG4gIGxldCBtYXliZV9zZXRfcmVjb3JkaW5nICgpID1cbiAgICBsZXQgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzID1cbiAgICAgIG1hdGNoIFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgeCAtPiBMaXN0LmV4aXN0cyAoU3RyaW5nLnNwbGl0IHggfm9uOicsJykgfmY6KFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcImJcIilcbiAgICBpblxuICAgIGlmIG5vdCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgdGhlbiBzZXRfcmVjb3JkaW5nIHRydWVcbiAgOztcblxuICAoKiB0aGUgY2FsbGVyIHNldCBzb21ldGhpbmcsIHRoZXkgYXJlIHJlc3BvbnNpYmxlICopXG5cbiAgbGV0IHdpdGhfcmVjb3JkaW5nIGIgfmYgPVxuICAgIGxldCBzYXZlZCA9IGFtX3JlY29yZGluZyAoKSBpblxuICAgIHNldF9yZWNvcmRpbmcgYjtcbiAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHNldF9yZWNvcmRpbmcgc2F2ZWQpXG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gRXhuLm1heWJlX3NldF9yZWNvcmRpbmcgKClcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyB0aGUgdG9wbGV2ZWwgb2YgdGhlIEJhc2UgbGlicmFyeTsgaXQncyB3aGF0IHlvdSBnZXQgd2hlbiB5b3Ugd3JpdGVcbiAgICBbb3BlbiBCYXNlXS5cblxuICAgIFRoZSBnb2FsIG9mIEJhc2UgaXMgYm90aCB0byBiZSBhIG1vcmUgY29tcGxldGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCByaWNoZXIgQVBJcyxcbiAgICBhbmQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIGl0cyBkZXNpZ24uIEZvciBpbnN0YW5jZSwgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnlcbiAgICBzb21lIHRoaW5ncyBoYXZlIG1vZHVsZXMgYW5kIG90aGVycyBkb24ndDsgaW4gQmFzZSwgZXZlcnl0aGluZyBpcyBhIG1vZHVsZS5cblxuICAgIEJhc2UgZXh0ZW5kcyBzb21lIG1vZHVsZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBsaWtlIFtBcnJheV0sXG4gICAgW0J1ZmZlcl0sIFtCeXRlc10sIFtDaGFyXSwgW0hhc2h0YmxdLCBbSW50MzJdLCBbSW50NjRdLCBbTGF6eV0sIFtMaXN0XSwgW01hcF0sXG4gICAgW05hdGl2ZWludF0sIFtQcmludGZdLCBbUmFuZG9tXSwgW1NldF0sIFtTdHJpbmddLCBbU3lzXSwgYW5kIFtVY2hhcl0uIE9uZSBrZXlcbiAgICBkaWZmZXJlbmNlIGlzIHRoYXQgQmFzZSBkb2Vzbid0IHVzZSBleGNlcHRpb25zIGFzIG11Y2ggYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kXG4gICAgaW5zdGVhZCBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIFtSZXN1bHRdIHR5cGUsIGFzIGluOlxuXG4gICAge1sgdHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2IgXX1cblxuICAgIEJhc2UgYWxzbyBhZGRzIGVudGlyZWx5IG5ldyBtb2R1bGVzLCBtb3N0IG5vdGFibHk6XG5cbiAgICAtIFtDb21wYXJhYmxlXSwgW0NvbXBhcmF0b3JdLCBhbmQgW0NvbXBhcmlzb25zXSBpbiBsaWV1IG9mIHBvbHltb3JwaGljIGNvbXBhcmUuXG4gICAgLSBbQ29udGFpbmVyXSwgd2hpY2ggcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBhY3Jvc3MgY29udGFpbmVyLWxpa2UgZGF0YVxuICAgICAgc3RydWN0dXJlcyAoYXJyYXlzLCBsaXN0cywgc3RyaW5ncykuXG4gICAgLSBbUmVzdWx0XSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0sIHN1cHBvcnRpbmcgdGhlIG9yLWVycm9yIHBhdHRlcm4uXG4qKVxuXG4oKl8gV2UgaGlkZSB0aGlzIGZyb20gdGhlIHdlYiBkb2NzIGJlY2F1c2UgdGhlIGxpbmUgd3JhcHBpbmcgaXMgYmFkLCBtYWtpbmcgaXRcbiAgcHJldHR5IG11Y2ggaW5zY3J1dGFibGUuICopXG4oKiovKiopXG5cbigqIFRoZSBpbnRlbnQgaXMgdG8gc2hhZG93IGFsbCBvZiBJTlJJQSdzIHN0YW5kYXJkIGxpYnJhcnkuICBNb2R1bGVzIGJlbG93IHdvdWxkIGNhdXNlXG4gICBjb21waWxhdGlvbiBlcnJvcnMgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gW1NoYWRvd19zdGRsaWJdIGJlZm9yZSBpbmNsdXNpb24uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gICgqIE1vZHVsZXMgZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEluX2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5Jbl9jaGFubmVsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgT3V0X2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5PdXRfY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdFxuICAoKiBTdXBwb3J0IGZvciBnZW5lcmF0ZWQgbGV4ZXJzICopXG4gIHdpdGggbW9kdWxlIExleGluZyA6PSBTaGFkb3dfc3RkbGliLkxleGluZ1xuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZikgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCoqLyoqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJ1ZmZlciA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBFeG5cbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaGVyID0gSGFzaGVyXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBQb2x5ID0gUG9seVxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMV0gdXNlIFtQb2x5XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcbiAgbW9kdWxlIFBweF9jb21wYXJlX2xpYiA9IFBweF9jb21wYXJlX2xpYlxuICBtb2R1bGUgUHB4X2VudW1lcmF0ZV9saWIgPSBQcHhfZW51bWVyYXRlX2xpYlxuXG4gIGxldCBhbV90ZXN0aW5nID0gYW1fdGVzdGluZ1xuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgYXJyYXlfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgYXJyYXkgPVxuICAgIEFycmF5LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2FycmF5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgQXJyYXkuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgYXJyYXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IEFycmF5LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9ib29sIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQm9vbC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9ib29sIDogYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQm9vbC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGJvb2xfb2Zfc2V4cCA9IChCb29sLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBib29sKVxuICBsZXQgc2V4cF9vZl9ib29sID0gKEJvb2wuc2V4cF9vZl90IDogYm9vbCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJvb2wudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9jaGFyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQ2hhci5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9jaGFyIDogY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQ2hhci5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGNoYXJfb2Zfc2V4cCA9IChDaGFyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBjaGFyKVxuICBsZXQgc2V4cF9vZl9jaGFyID0gKENoYXIuc2V4cF9vZl90IDogY2hhciAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IENoYXIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZXhuID0gRXhuLnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfZXhuID0gKEV4bi5zZXhwX29mX3QgOiBleG4gLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9mbG9hdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBGbG9hdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9mbG9hdCA6IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBGbG9hdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGZsb2F0X29mX3NleHAgPSAoRmxvYXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGZsb2F0KVxuICBsZXQgc2V4cF9vZl9mbG9hdCA9IChGbG9hdC5zZXhwX29mX3QgOiBmbG9hdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50ID0gSW50LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgSW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludCA6IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50X29mX3NleHAgPSAoSW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQpXG4gIGxldCBzZXhwX29mX2ludCA9IChJbnQuc2V4cF9vZl90IDogaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQzMiA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQzMi5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQzMiA6IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQzMi5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDMyX29mX3NleHAgPSAoSW50MzIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDMyKVxuICBsZXQgc2V4cF9vZl9pbnQzMiA9IChJbnQzMi5zZXhwX29mX3QgOiBpbnQzMiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50MzIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50NjQgPSBJbnQ2NC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50NjQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50NjQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50NjQgOiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50NjQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQ2NF9vZl9zZXhwID0gKEludDY0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQ2NClcbiAgbGV0IHNleHBfb2ZfaW50NjQgPSAoSW50NjQuc2V4cF9vZl90IDogaW50NjQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDY0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIGxpc3RcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgTGlzdC5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBsaXN0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGxpc3QgPVxuICAgIExpc3QudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfbGlzdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBsaXN0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgTGlzdC5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKGxpc3Rfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IExpc3QudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfbmF0aXZlaW50IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBOYXRpdmVpbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IChOYXRpdmVpbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IG5hdGl2ZWludClcbiAgbGV0IHNleHBfb2ZfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5zZXhwX29mX3QgOiBuYXRpdmVpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIGxldCAobmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIE5hdGl2ZWludC50X3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2Egb3B0aW9uXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIE9wdGlvbi5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2Egb3B0aW9uID1cbiAgICBPcHRpb24udF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfb3B0aW9uIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIG9wdGlvbiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIE9wdGlvbi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Egb3B0aW9uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBPcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChyZWZfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVmLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfc3RyaW5nID0gKFN0cmluZy5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gIGxldCBlcXVhbF9zdHJpbmcgPSAoU3RyaW5nLmVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX3N0cmluZyA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgU3RyaW5nLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3N0cmluZyA6IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gU3RyaW5nLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc3RyaW5nX29mX3NleHAgPSAoU3RyaW5nLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBzdHJpbmcpXG4gIGxldCBzZXhwX29mX3N0cmluZyA9IChTdHJpbmcuc2V4cF9vZl90IDogc3RyaW5nIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYnl0ZXMgPSAoQnl0ZXMuY29tcGFyZSA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGludClcbiAgbGV0IGVxdWFsX2J5dGVzID0gKEJ5dGVzLmVxdWFsIDogYnl0ZXMgLT4gYnl0ZXMgLT4gYm9vbClcbiAgbGV0IGJ5dGVzX29mX3NleHAgPSAoQnl0ZXMudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJ5dGVzKVxuICBsZXQgc2V4cF9vZl9ieXRlcyA9IChCeXRlcy5zZXhwX29mX3QgOiBieXRlcyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQnl0ZXMudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF91bml0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgVW5pdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF91bml0IDogdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVW5pdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHVuaXRfb2Zfc2V4cCA9IChVbml0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB1bml0KVxuICBsZXQgc2V4cF9vZl91bml0ID0gKFVuaXQuc2V4cF9vZl90IDogdW5pdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFVuaXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gICgqKiBGb3JtYXQgc3R1ZmYgKilcblxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuXG4gICgqKiBMaXN0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgTGlzdC5JbmZpeFxuXG4gICgqKiBJbnQgb3BlcmF0b3JzIGFuZCBjb21wYXJpc29ucyAqKVxuXG4gIGluY2x1ZGUgSW50Lk9cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgKCoqIEZsb2F0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgRmxvYXQuT19kb3RcblxuICAoKiBUaGlzIGlzIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGJlIG9wdGltaXplZCBhd2F5IGluIG1vcmUgY29udGV4dHMuICopXG5cbiAgKCoqIFJldmVyc2UgYXBwbGljYXRpb24gb3BlcmF0b3IuIFt4IHw+IGcgfD4gZl0gaXMgZXF1aXZhbGVudCB0byBbZiAoZyAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuICAoKiogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbiAgKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbiAgZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBleHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4gICgqKiBDb21tb24gc3RyaW5nIG9wZXJhdGlvbnMgKilcbiAgbGV0ICggXiApID0gU3RyaW5nLiggXiApXG5cbiAgKCoqIFJlZmVyZW5jZSBvcGVyYXRpb25zICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlIGFuZFxuICAgICB0byBrZWVwIHJlZmVyZW5jZSB1bmJveGluZyB3b3JraW5nICopXG4gIGV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbiAgKCoqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBmc3QgPSBmc3RcbiAgbGV0IHNuZCA9IHNuZFxuXG4gICgqKiBFeGNlcHRpb25zIHN0dWZmICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgbWF5IHJld3JpdGUgJyVyYWlzZScgYXMgJyVyZXJhaXNlJy4gKilcbiAgZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxuICBsZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICAoKiogTWlzYyAqKVxuXG4gIGxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG4gIGV4dGVybmFsIGZvcmNlIDogJ2EgTGF6eS50IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9IChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvY1xuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID0gRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0XG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnID1cbiAgICBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpblxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpblxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9IHJhaXNlX2Vycm9yZiA/bG9jIG1zZ1xuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG5cbmxldCBwYXJzZSBzID1cbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDExIHBhcnNlIHMgKilcbiAgKCpJRl9BVF9MRUFTVCA0MTEgT2NhbWxfY29tbW9uLlBhcnNlLmxvbmdpZGVudCBAQCBMZXhpbmcuZnJvbV9zdHJpbmcgQEAgcyAqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMxXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMxXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgVGhvbWFzIEdhemFnbmFpcmUsIE9DYW1sUHJvICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgRmFicmljZSBMZSBGZXNzYW50LCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBIb25nYm8gWmhhbmcsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcmlnaW5hbCBDb2RlIGZyb20gQmVyLW1ldGFvY2FtbCwgbW9kaWZpZWQgZm9yIDMuMTIuMCBhbmQgZml4ZWQgKilcbigqIFByaW50aW5nIGNvZGUgZXhwcmVzc2lvbnMgKilcbigqIEF1dGhvcnM6ICBFZCBQaXp6aSwgRmFicmljZSBMZSBGZXNzYW50ICopXG4oKiBFeHRlbnNpdmUgUmV3cml0ZTogSG9uZ2JvIFpoYW5nOiBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAqKVxuKCogVE9ETyBtb3JlIGZpbmUtZ3JhaW5lZCBwcmVjZWRlbmNlIHByZXR0eS1wcmludGluZyAqKVxuXG5vcGVuIEFzdF80MTRcbm9wZW4gQXN0dHlwZXNcbm9wZW4gRm9ybWF0XG5vcGVuIExvY2F0aW9uXG5vcGVuIExvbmdpZGVudFxub3BlbiBQYXJzZXRyZWVcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuZW5kXG5cbmxldCB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICBpblxuICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKSB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzXG4gICAgICAgIC0+XG4gICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPiBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgaW5cbiAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgbGV0IHBvZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gIGluXG4gIGxvb3AgdFxuXG5sZXQgcHJlZml4X3N5bWJvbHMgPSBbICchJzsgJz8nOyAnficgXVxuXG5sZXQgaW5maXhfc3ltYm9scyA9XG4gIFsgJz0nOyAnPCc7ICc+JzsgJ0AnOyAnXic7ICd8JzsgJyYnOyAnKyc7ICctJzsgJyonOyAnLyc7ICckJzsgJyUnOyAnIycgXVxuXG4oKiB0eXBlIGZpeGl0eSA9IEluZml4fCBQcmVmaXggICopXG5sZXQgc3BlY2lhbF9pbmZpeF9zdHJpbmdzID1cbiAgWyBcImFzclwiOyBcImxhbmRcIjsgXCJsb3JcIjsgXCJsc2xcIjsgXCJsc3JcIjsgXCJseG9yXCI7IFwibW9kXCI7IFwib3JcIjsgXCI6PVwiOyBcIiE9XCI7IFwiOjpcIiBdXG5cbmxldCBsZXRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdsJ1xuICAmJiBzLlsxXSA9ICdlJ1xuICAmJiBzLlsyXSA9ICd0J1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbmxldCBhbmRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdhJ1xuICAmJiBzLlsxXSA9ICduJ1xuICAmJiBzLlsyXSA9ICdkJ1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbigqIGRldGVybWluZXMgaWYgdGhlIHN0cmluZyBpcyBhbiBpbmZpeCBzdHJpbmcuXG4gICBjaGVja3MgYmFja3dhcmRzLCBmaXJzdCBhbGxvd2luZyBhIHJlbmFtaW5nIHBvc3RmaXggKFwiXzEwMlwiKSB3aGljaFxuICAgbWF5IGhhdmUgcmVzdWx0ZWQgZnJvbSBQZXhwIC0+IFRleHAgLT4gUGV4cCB0cmFuc2xhdGlvbiwgdGhlbiBjaGVja2luZ1xuICAgaWYgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgdmFsaWQgaW5maXhcbiAgIGNoYXJhY3RlcnMuICopXG5sZXQgZml4aXR5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiBgTm9ybWFsXG4gIHwgcyB3aGVuIExpc3QubWVtIHMgc3BlY2lhbF9pbmZpeF9zdHJpbmdzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIGluZml4X3N5bWJvbHMgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gcHJlZml4X3N5bWJvbHMgLT4gYFByZWZpeCBzXG4gIHwgcyB3aGVuIHMuWzBdID0gJy4nIC0+IGBNaXhmaXggc1xuICB8IHMgd2hlbiBsZXRvcCBzIC0+IGBMZXRvcCBzXG4gIHwgcyB3aGVuIGFuZG9wIHMgLT4gYEFuZG9wIHNcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IHZpZXdfZml4aXR5X29mX2V4cCA9IGZ1bmN0aW9uXG4gIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgZml4aXR5X29mX3N0cmluZyBsXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCBpc19pbmZpeCA9IGZ1bmN0aW9uIGBJbmZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfbWl4Zml4ID0gZnVuY3Rpb24gYE1peGZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfa3dkb3AgPSBmdW5jdGlvbiBgTGV0b3AgXyB8IGBBbmRvcCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgZmlyc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuWzBdID0gY1xubGV0IGxhc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuW1N0cmluZy5sZW5ndGggc3RyIC0gMV0gPSBjXG5sZXQgZmlyc3RfaXNfaW4gY3Mgc3RyID0gc3RyIDw+IFwiXCIgJiYgTGlzdC5tZW0gc3RyLlswXSBjc1xuXG4oKiB3aGljaCBpZGVudGlmaWVycyBhcmUgaW4gZmFjdCBvcGVyYXRvcnMgbmVlZGluZyBwYXJlbnRoZXNlcyAqKVxubGV0IG5lZWRzX3BhcmVucyB0eHQgPVxuICBsZXQgZml4ID0gZml4aXR5X29mX3N0cmluZyB0eHQgaW5cbiAgaXNfaW5maXggZml4IHx8IGlzX21peGZpeCBmaXggfHwgaXNfa3dkb3AgZml4XG4gIHx8IGZpcnN0X2lzX2luIHByZWZpeF9zeW1ib2xzIHR4dFxuXG4oKiBzb21lIGluZml4ZXMgbmVlZCBzcGFjZXMgYXJvdW5kIHBhcmVucyB0byBhdm9pZCBjbGFzaGVzIHdpdGggY29tbWVudFxuICAgc3ludGF4ICopXG5sZXQgbmVlZHNfc3BhY2VzIHR4dCA9IGZpcnN0X2lzICcqJyB0eHQgfHwgbGFzdF9pcyAnKicgdHh0XG5sZXQgc3RyaW5nX2xvYyBwcGYgeCA9IGZwcmludGYgcHBmIFwiJXNcIiB4LnR4dFxuXG4oKiBhZGQgcGFyZW50aGVzZXMgdG8gYmluZGVycyB3aGVuIHRoZXkgYXJlIGluIGZhY3QgaW5maXggb3IgcHJlZml4IG9wZXJhdG9ycyAqKVxubGV0IHByb3RlY3RfaWRlbnQgcHBmIHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIoQDslc0A7KVwiXG4gICAgZWxzZSBcIiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgdHh0XG5cbmxldCBwcm90ZWN0X2xvbmdpZGVudCBwcGYgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVhLiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIiVhLihAOyVzQDspXCJcbiAgICBlbHNlIFwiJWEuKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHRcblxudHlwZSBzcGFjZV9mb3JtYXR0ZXIgPSAodW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdW5pdCkgZm9ybWF0XG5cbmxldCBvdmVycmlkZSA9IGZ1bmN0aW9uIE92ZXJyaWRlIC0+IFwiIVwiIHwgRnJlc2ggLT4gXCJcIlxuXG4oKiB2YXJpYW5jZSBlbmNvZGluZzogbmVlZCB0byBzeW5jIHVwIHdpdGggdGhlIFtwYXJzZXIubWx5XSAqKVxubGV0IHR5cGVfdmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IE5vVmFyaWFuY2UgLT4gXCJcIlxuICB8IENvdmFyaWFudCAtPiBcIitcIlxuICB8IENvbnRyYXZhcmlhbnQgLT4gXCItXCJcblxubGV0IHR5cGVfaW5qZWN0aXZpdHkgPSBmdW5jdGlvbiBOb0luamVjdGl2aXR5IC0+IFwiXCIgfCBJbmplY3RpdmUgLT4gXCIhXCJcblxudHlwZSBjb25zdHJ1Y3QgPVxuICBbIGBjb25zIG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBsaXN0IG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBuaWxcbiAgfCBgbm9ybWFsXG4gIHwgYHNpbXBsZSBvZiBMb25naWRlbnQudFxuICB8IGB0dXBsZSBdXG5cbmxldCB2aWV3X2V4cHIgeCA9XG4gIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCIoKVwiOyBfIH0sIF8pIC0+IGB0dXBsZVxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gYG5pbFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBfKSAtPlxuICAgICAgbGV0IHJlYyBsb29wIGV4cCBhY2MgPVxuICAgICAgICBtYXRjaCBleHAgd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgICBTb21lIHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGUxOyBlMiBdOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgICAgKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBsb29wIGUyIChlMSA6OiBhY2MpXG4gICAgICAgIHwgZSAtPiAoTGlzdC5yZXYgKGUgOjogYWNjKSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGxzLCBiID0gbG9vcCB4IFtdIGluXG4gICAgICBpZiBiIHRoZW4gYGxpc3QgbHMgZWxzZSBgY29ucyBsc1xuICB8IFBleHBfY29uc3RydWN0ICh4LCBOb25lKSAtPiBgc2ltcGxlIHgudHh0XG4gIHwgXyAtPiBgbm9ybWFsXG5cbmxldCBpc19zaW1wbGVfY29uc3RydWN0IDogY29uc3RydWN0IC0+IGJvb2wgPSBmdW5jdGlvblxuICB8IGBuaWwgfCBgdHVwbGUgfCBgbGlzdCBfIHwgYHNpbXBsZSBfIC0+IHRydWVcbiAgfCBgY29ucyBfIHwgYG5vcm1hbCAtPiBmYWxzZVxuXG5sZXQgcHAgPSBmcHJpbnRmXG5cbnR5cGUgY3R4dCA9IHsgcGlwZSA6IGJvb2w7IHNlbWkgOiBib29sOyBpZnRoZW5lbHNlIDogYm9vbCB9XG5cbmxldCByZXNldF9jdHh0ID0geyBwaXBlID0gZmFsc2U7IHNlbWkgPSBmYWxzZTsgaWZ0aGVuZWxzZSA9IGZhbHNlIH1cbmxldCB1bmRlcl9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlID0gdHJ1ZSB9XG5sZXQgdW5kZXJfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaSA9IHRydWUgfVxubGV0IHVuZGVyX2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2UgPSB0cnVlIH1cbigqXG5sZXQgcmVzZXRfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaT1mYWxzZSB9XG5sZXQgcmVzZXRfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZT1mYWxzZSB9XG5sZXQgcmVzZXRfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZT1mYWxzZSB9XG4qKVxuXG5sZXQgbGlzdCA6XG4gICAgICAnYS5cbiAgICAgID9zZXA6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBsaXN0IC0+XG4gICAgICB1bml0ID1cbiBmdW4gP3NlcCA/Zmlyc3QgP2xhc3QgZnUgZiB4cyAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgc2VwID0gbWF0Y2ggc2VwIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIkAgXCIgOiBfIGZvcm1hdDYpIGluXG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgfCB4cyAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICAgICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICAgICAgZnUgZiB4O1xuICAgICAgICAgICAgICBwcCBmIHNlcDtcbiAgICAgICAgICAgICAgbG9vcCBmIHhzXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIGZpcnN0O1xuICAgICAgICBsb29wIGYgeHM7XG4gICAgICAgIHBwIGYgbGFzdFxuICBpblxuICBhdXggZiB4c1xuXG5sZXQgb3B0aW9uIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2Egb3B0aW9uIC0+XG4gICAgICB1bml0ID1cbiBmdW4gP2ZpcnN0ID9sYXN0IGZ1IGYgYSAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KSBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBwcCBmIGZpcnN0O1xuICAgICAgZnUgZiB4O1xuICAgICAgcHAgZiBsYXN0XG5cbmxldCBwYXJlbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgYm9vbCAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIC0+XG4gICAgICB1bml0ID1cbiBmdW4gPyhmaXJzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgPyhsYXN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSBiIGZ1IGYgeCAtPlxuICBpZiBiIHRoZW4gKFxuICAgIHBwIGYgXCIoXCI7XG4gICAgcHAgZiBmaXJzdDtcbiAgICBmdSBmIHg7XG4gICAgcHAgZiBsYXN0O1xuICAgIHBwIGYgXCIpXCIpXG4gIGVsc2UgZnUgZiB4XG5cbmxldCByZWMgbG9uZ2lkZW50IGYgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHByb3RlY3RfaWRlbnQgZiBzXG4gIHwgTGRvdCAoeSwgcykgLT4gcHJvdGVjdF9sb25naWRlbnQgZiBsb25naWRlbnQgeSBzXG4gIHwgTGFwcGx5ICh5LCBzKSAtPiBwcCBmIFwiJWEoJWEpXCIgbG9uZ2lkZW50IHkgbG9uZ2lkZW50IHNcblxubGV0IGxvbmdpZGVudF9sb2MgZiB4ID0gcHAgZiBcIiVhXCIgbG9uZ2lkZW50IHgudHh0XG5cbmxldCBjb25zdGFudCBmID0gZnVuY3Rpb25cbiAgfCBQY29uc3RfY2hhciBpIC0+IHBwIGYgXCIlQ1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBOb25lKSAtPiBwcCBmIFwiJVNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgU29tZSBkZWxpbSkgLT4gcHAgZiBcInslc3wlc3wlc31cIiBkZWxpbSBpIGRlbGltXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuICB8IFBjb25zdF9mbG9hdCAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9mbG9hdCAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuXG4oKiB0cmFpbGluZyBzcGFjZSopXG5sZXQgbXV0YWJsZV9mbGFnIGYgPSBmdW5jdGlvbiBJbW11dGFibGUgLT4gKCkgfCBNdXRhYmxlIC0+IHBwIGYgXCJtdXRhYmxlQDtcIlxubGV0IHZpcnR1YWxfZmxhZyBmID0gZnVuY3Rpb24gQ29uY3JldGUgLT4gKCkgfCBWaXJ0dWFsIC0+IHBwIGYgXCJ2aXJ0dWFsQDtcIlxuXG4oKiB0cmFpbGluZyBzcGFjZSBhZGRlZCAqKVxubGV0IHJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiAoKSB8IFJlY3Vyc2l2ZSAtPiBwcCBmIFwicmVjIFwiXG5cbmxldCBub25yZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gcHAgZiBcIm5vbnJlYyBcIiB8IFJlY3Vyc2l2ZSAtPiAoKVxuXG5sZXQgZGlyZWN0aW9uX2ZsYWcgZiA9IGZ1bmN0aW9uXG4gIHwgVXB0byAtPiBwcCBmIFwidG9AIFwiXG4gIHwgRG93bnRvIC0+IHBwIGYgXCJkb3dudG9AIFwiXG5cbmxldCBwcml2YXRlX2ZsYWcgZiA9IGZ1bmN0aW9uIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcInByaXZhdGVAIFwiXG5sZXQgaXRlcl9sb2MgZiBjdHh0IHsgdHh0OyBsb2MgPSBfIH0gPSBmIGN0eHQgdHh0XG5sZXQgY29uc3RhbnRfc3RyaW5nIGYgcyA9IHBwIGYgXCIlU1wiIHNcblxubGV0IHR5dmFyIHBwZiBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgcy5bMV0gPSAnXFwnJyB0aGVuXG4gICAgKCogd2l0aG91dCB0aGUgc3BhY2UsIHRoaXMgd291bGQgYmUgcGFyc2VkIGFzXG4gICAgICAgYSBjaGFyYWN0ZXIgbGl0ZXJhbCAqKVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIicgJXNcIiBzXG4gIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJyVzXCIgc1xuXG5sZXQgdHl2YXJfbG9jIGYgc3RyID0gdHl2YXIgZiBzdHIudHh0XG5sZXQgc3RyaW5nX3F1b3QgZiB4ID0gcHAgZiBcImAlc1wiIHhcblxuKCogYyBbJ2EsJ2JdICopXG5sZXQgcmVjIGNsYXNzX3BhcmFtc19kZWYgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIlslYV0gXCIgKCogc3BhY2UgKikgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfnNlcDpcIixcIikgbFxuXG5hbmQgdHlwZV93aXRoX2xhYmVsIGN0eHQgZiAobGFiZWwsIGMpID1cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IE5vbGFiZWwgLT4gY29yZV90eXBlMSBjdHh0IGYgYyAoKiBvdGhlcndpc2UgcGFyZW50aGVzaXplICopXG4gIHwgTGFiZWxsZWQgcyAtPiBwcCBmIFwiJXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcbiAgfCBPcHRpb25hbCBzIC0+IHBwIGYgXCI/JXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcblxuYW5kIGNvcmVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY29yZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hcnJvdyAobCwgY3QxLCBjdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjdDEpIChjb3JlX3R5cGUgY3R4dCkgY3QyXG4gICAgfCBQdHlwX2FsaWFzIChjdCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgY3QgdHl2YXIgc1xuICAgIHwgUHR5cF9wb2x5IChbXSwgY3QpIC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICB8IFB0eXBfcG9seSAoc2wsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFcIlxuICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIGwpXG4gICAgICAgICAgICAgIGwpXG4gICAgICAgICAgc2wgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuXG5hbmQgY29yZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gY29yZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQdHlwX3ZhciBzIC0+IHR5dmFyIGYgc1xuICAgIHwgUHR5cF90dXBsZSBsIC0+IHBwIGYgXCIoJWEpXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICB8IFB0eXBfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiAoKiBcIiVhJWFAO1wiICopIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCBbIHggXSAtPiBwcCBmIFwiJWFAO1wiIChjb3JlX3R5cGUxIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0IH5maXJzdDpcIihcIiB+bGFzdDpcIilAO1wiIChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixAO1wiIGYgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfdmFyaWFudCAobCwgY2xvc2VkLCBsb3cpIC0+XG4gICAgICAgIGxldCBmaXJzdF9pc19pbmhlcml0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IHsgUGFyc2V0cmVlLnByZl9kZXNjID0gUmluaGVyaXQgXyB9IDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwZV92YXJpYW50X2hlbHBlciBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUnRhZyAobCwgXywgY3RsKSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQDslYUBdXCIgKGl0ZXJfbG9jIHN0cmluZ19xdW90KSBsXG4gICAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIiZcIikgY3RsKVxuICAgICAgICAgICAgICAgIGN0bCAoYXR0cmlidXRlcyBjdHh0KSB4LnByZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBSaW5oZXJpdCBjdCAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPlslYSVhXUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggKGwsIGNsb3NlZCkgd2l0aFxuICAgICAgICAgICAgfCBbXSwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICB8IFtdLCBPcGVuIC0+IHBwIGYgXCI+XCIgKCogQ2YgIzcyMDA6IHByaW50IFs+XSBjb3JyZWN0bHkgKilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlc0A7JWFcIlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIChjbG9zZWQsIGxvdykgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIE5vbmUgLT4gaWYgZmlyc3RfaXNfaW5oZXJpdCB0aGVuIFwiIHxcIiBlbHNlIFwiXCJcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBTb21lIF8gLT4gXCI8XCIgKCogRklYTUUgZGVzdWdhciB0aGUgc3ludGF4IHN1Z2FyKilcbiAgICAgICAgICAgICAgICAgIHwgT3BlbiwgXyAtPiBcIj5cIilcbiAgICAgICAgICAgICAgICAgIChsaXN0IHR5cGVfdmFyaWFudF9oZWxwZXIgfnNlcDpcIkA7PDEgLTI+fCBcIilcbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgbFxuICAgICAgICAgIChmdW4gZiBsb3cgLT5cbiAgICAgICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgW10gfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgeHMgLT4gcHAgZiBcIj5AICVhXCIgKGxpc3Qgc3RyaW5nX3F1b3QpIHhzKVxuICAgICAgICAgIGxvd1xuICAgIHwgUHR5cF9vYmplY3QgKGwsIG8pIC0+XG4gICAgICAgIGxldCBjb3JlX2ZpZWxkX3R5cGUgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IE90YWcgKGwsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lczogJWFAICVhQCBAXVwiIGwudHh0IChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBvZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBPaW5oZXJpdCBjdCAtPiBwcCBmIFwiQFs8aG92Mj4lYUAgQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWVsZF92YXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBc3R0eXBlcy5DbG9zZWQgLT4gKClcbiAgICAgICAgICB8IEFzdHR5cGVzLk9wZW4gLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gcHAgZiBcIi4uXCIgfCBfIC0+IHBwIGYgXCIgOy4uXCIpXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPjxAICVhJWFAID4gQF1cIlxuICAgICAgICAgIChsaXN0IGNvcmVfZmllbGRfdHlwZSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGwgZmllbGRfdmFyIG9cbiAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICB8IFB0eXBfY2xhc3MgKGxpLCBsKSAtPlxuICAgICAgICAoKkZJWE1FKilcbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEjJWFAXVwiXG4gICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfcGFja2FnZSAobGlkLCBjc3RycykgLT4gKFxuICAgICAgICBsZXQgYXV4IGYgKHMsIGN0KSA9XG4gICAgICAgICAgcHAgZiBcInR5cGUgJWFAID1AICVhXCIgbG9uZ2lkZW50X2xvYyBzIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY3N0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYUAgd2l0aEAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgICAgICAobGlzdCBhdXggfnNlcDpcIkAgYW5kQCBcIikgY3N0cnMpXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChjb3JlX3R5cGUgY3R4dCkgZiB4XG5cbigqKioqKioqKioqKioqKioqKioqKnBhdHRlcm4qKioqKioqKioqKioqKioqKioqKilcbigqIGJlIGNhdXRpb3VzIHdoZW4gdXNlIFtwYXR0ZXJuXSwgW3BhdHRlcm4xXSBpcyBwcmVmZXJyZWQgKilcbmFuZCBwYXR0ZXJuIGN0eHQgZiB4ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChwYXR0ZXJuIGN0eHQpXG4gICAgICB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBwYXRfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9hbGlhcyAocCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcCBwcm90ZWN0X2lkZW50IHMudHh0XG4gICAgfCBfIC0+IHBhdHRlcm5fb3IgY3R4dCBmIHhcblxuYW5kIHBhdHRlcm5fb3IgY3R4dCBmIHggPVxuICBsZXQgcmVjIGxlZnRfYXNzb2NpYXRpdmUgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X29yIChwMSwgcDIpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIGxlZnRfYXNzb2NpYXRpdmUgcDEgKHAyIDo6IGFjYylcbiAgICB8IHggLT4geCA6OiBhY2NcbiAgaW5cbiAgbWF0Y2ggbGVmdF9hc3NvY2lhdGl2ZSB4IFtdIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiBwYXR0ZXJuMSBjdHh0IGYgeFxuICB8IG9ycGF0cyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgfnNlcDpcIkAgfCBcIiAocGF0dGVybjEgY3R4dCkpIG9ycGF0c1xuXG5hbmQgcGF0dGVybjEgY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgbGV0IHJlYyBwYXR0ZXJuX2xpc3RfaGVscGVyIGYgPSBmdW5jdGlvblxuICAgIHwge1xuICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgIFBwYXRfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICBTb21lIChbXSwgeyBwcGF0X2Rlc2MgPSBQcGF0X3R1cGxlIFsgcGF0MTsgcGF0MiBdOyBfIH0pICk7XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWE6OiVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdDEgcGF0dGVybl9saXN0X2hlbHBlciBwYXQyICgqUkEqKVxuICAgIHwgcCAtPiBwYXR0ZXJuMSBjdHh0IGYgcFxuICBpblxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgU29tZSBwKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgXykgLT5cbiAgICAgICAgc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcbiAgICB8IFBwYXRfY29uc3RydWN0ICgoeyB0eHQ7IF8gfSBhcyBsaSksIHBvKSAtPiAoXG4gICAgICAgIGlmICgqIEZJWE1FIFRoZSB0aGlyZCBmaWVsZCBhbHdheXMgZmFsc2UgKilcbiAgICAgICAgICAgdHh0ID0gTGlkZW50IFwiOjpcIiB0aGVuIHBwIGYgXCIlYVwiIHBhdHRlcm5fbGlzdF9oZWxwZXIgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcG8gd2l0aFxuICAgICAgICAgIHwgU29tZSAoW10sIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7JWFcIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBTb21lICh2bCwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQCAodHlwZSAlYSlAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgICAgICAgIChsaXN0IH5zZXA6XCJAIFwiIHN0cmluZ19sb2MpXG4gICAgICAgICAgICAgICAgdmwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaSlcbiAgICB8IF8gLT4gc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9wYXR0ZXJuIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50ICgoXCIoKVwiIHwgXCJbXVwiKSBhcyB4KTsgXyB9LCBOb25lKSAtPlxuICAgICAgICBwcCBmIFwiJXNcIiB4XG4gICAgfCBQcGF0X2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHByb3RlY3RfaWRlbnQgZiB0eHRcbiAgICB8IFBwYXRfYXJyYXkgbCAtPiBwcCBmIFwiQFs8Mj5bfCVhfF1AXVwiIChsaXN0IChwYXR0ZXJuMSBjdHh0KSB+c2VwOlwiO1wiKSBsXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IE5vbmUgfSAtPiBwcCBmIFwiKG1vZHVsZUAgXylAIFwiXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IFNvbWUgcyB9IC0+IHBwIGYgXCIobW9kdWxlQCAlcylAIFwiIHNcbiAgICB8IFBwYXRfdHlwZSBsaSAtPiBwcCBmIFwiIyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHBhdF9yZWNvcmQgKGwsIGNsb3NlZCkgLT4gKFxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfcGF0dGVybiBmIChsaSwgcCkgPVxuICAgICAgICAgIG1hdGNoIChsaSwgcCkgd2l0aFxuICAgICAgICAgIHwgKCB7IHR4dCA9IExpZGVudCBzOyBfIH0sXG4gICAgICAgICAgICAgIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSApXG4gICAgICAgICAgICB3aGVuIHMgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNsb3NlZCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8Mj57QDslYUA7fUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGxcbiAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPntAOyVhO199QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbClcbiAgICB8IFBwYXRfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MT4oJWEpQF1cIiAobGlzdCB+c2VwOlwiLEA7XCIgKHBhdHRlcm4xIGN0eHQpKSBsICgqIGxldmVsMSopXG4gICAgfCBQcGF0X2NvbnN0YW50IGMgLT4gcHAgZiBcIiVhXCIgY29uc3RhbnQgY1xuICAgIHwgUHBhdF9pbnRlcnZhbCAoYzEsIGMyKSAtPiBwcCBmIFwiJWEuLiVhXCIgY29uc3RhbnQgYzEgY29uc3RhbnQgYzJcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBwYXRfY29uc3RyYWludCAocCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiglYUA7OkA7JWEpQF1cIiAocGF0dGVybjEgY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQcGF0X2xhenkgcCAtPiBwcCBmIFwiQFs8Mj4obGF6eUA7JWEpQF1cIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9leGNlcHRpb24gcCAtPiBwcCBmIFwiQFs8Mj5leGNlcHRpb25AOyVhQF1cIiAocGF0dGVybjEgY3R4dCkgcFxuICAgIHwgUHBhdF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBwYXRfb3BlbiAobGlkLCBwKSAtPlxuICAgICAgICBsZXQgd2l0aF9wYXJlbiA9XG4gICAgICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHBhdF9hcnJheSBfIHwgUHBhdF9yZWNvcmQgX1xuICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWEgQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgIChwYXJlbiB3aXRoX3BhcmVuIEBAIHBhdHRlcm4xIGN0eHQpXG4gICAgICAgICAgcFxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChwYXR0ZXJuIGN0eHQpIGYgeFxuXG5hbmQgbGFiZWxfZXhwIGN0eHQgZiAobCwgb3B0LCBwKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT5cbiAgICAgICgqIHNpbmdsZSBjYXNlIHBhdHRlcm4gcGFyZW5zIG5lZWRlZCBoZXJlICopXG4gICAgICBwcCBmIFwiJWFAIFwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gIHwgT3B0aW9uYWwgcmVzdCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgIHdoZW4gdHh0ID0gcmVzdCAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPiBwcCBmIFwiPyglcz1AOyVhKUA7XCIgcmVzdCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXNAIFwiIHJlc3QpXG4gICAgICB8IF8gLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIj8lczooJWE9QDslYSlAO1wiIHJlc3QgKHBhdHRlcm4xIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzOiVhQDtcIiByZXN0IChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKSlcbiAgfCBMYWJlbGxlZCBsIC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gd2hlbiB0eHQgPSBsXG4gICAgICAgIC0+XG4gICAgICAgICAgcHAgZiBcIn4lc0A7XCIgbFxuICAgICAgfCBfIC0+IHBwIGYgXCJ+JXM6JWFAO1wiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApXG5cbmFuZCBzdWdhcl9leHByIGN0eHQgZiBlID1cbiAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9hcHBseVxuICAgICAgICAoIHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGlkOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICAgICAgYXJncyApXG4gICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIChsYWIsIF8pIC0+IGxhYiA9IE5vbGFiZWwpIGFyZ3MgLT4gKFxuICAgICAgICBsZXQgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IHNlcCByaWdodCBwcmludF9pbmRleFxuICAgICAgICAgICAgaW5kaWNlcyByZW1fYXJncyA9XG4gICAgICAgICAgbGV0IHByaW50X3BhdGggcHBmID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIG0gLT4gcHAgcHBmIFwiLiVhXCIgbG9uZ2lkZW50IG1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIChhc3NpZ24sIHJlbV9hcmdzKSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSwgW10gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aCBwYXRoX3ByZWZpeFxuICAgICAgICAgICAgICAgIGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodDtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgdHJ1ZSwgWyB2IF0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0AgPC1AOzwxIDI+JWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGhcbiAgICAgICAgICAgICAgICBwYXRoX3ByZWZpeCBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHRcbiAgICAgICAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgdjtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoaWQsIExpc3QubWFwIHNuZCBhcmdzKSB3aXRoXG4gICAgICAgIHwgTGlkZW50IFwiIVwiLCBbIGUgXSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdj4hJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlO1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICB8IExkb3QgKHBhdGgsICgoXCJnZXRcIiB8IFwic2V0XCIpIGFzIGZ1bmMpKSwgYSA6OiBvdGhlcl9hcmdzIC0+IChcbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBmdW5jID0gXCJzZXRcIiBpblxuICAgICAgICAgICAgbGV0IHByaW50ID0gcHJpbnRfaW5kZXhvcCBhIE5vbmUgYXNzaWduIGluXG4gICAgICAgICAgICBtYXRjaCAocGF0aCwgb3RoZXJfYXJncykgd2l0aFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJBcnJheVwiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi4oXCIgXCJcIiBcIilcIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExpZGVudCBcIlN0cmluZ1wiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi5bXCIgXCJcIiBcIl1cIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkxXCIpLCBpMSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MlwiKSwgaTEgOjogaTIgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTIgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkzXCIpLCBpMSA6OiBpMiA6OiBpMyA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMjsgaTMgXSByZXN0XG4gICAgICAgICAgICB8ICggTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJHZW5hcnJheVwiKSxcbiAgICAgICAgICAgICAgICB7IHBleHBfZGVzYyA9IFBleHBfYXJyYXkgaW5kZXhlczsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSA6OiByZXN0XG4gICAgICAgICAgICAgICkgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIGluZGV4ZXMgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICB8IChMaWRlbnQgcyB8IExkb3QgKF8sIHMpKSwgYSA6OiBpIDo6IHJlc3Qgd2hlbiBmaXJzdF9pcyAnLicgcyAtPlxuICAgICAgICAgICAgKCogZXh0cmFjdCBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0IF4gXCI8LVwiXSxcbiAgICAgICAgICAgICAgIGFjY2VzcyBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXRdIGRpcmVjdGx5XG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgbGV0IG11bHRpX2luZGljZXMgPSBTdHJpbmcuY29udGFpbnMgcyAnOycgaW5cbiAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgbWF0Y2ggaS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgbCB3aGVuIG11bHRpX2luZGljZXMgLT4gbFxuICAgICAgICAgICAgICB8IF8gLT4gWyBpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gbGFzdF9pcyAnLScgcyBpblxuICAgICAgICAgICAgbGV0IGtpbmQgPVxuICAgICAgICAgICAgICAoKiBleHRyYWN0IHRoZSByaWdodCBlbmQgYnJhY2tldCAqKVxuICAgICAgICAgICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBhc3NpZ24gdGhlbiBzLltuIC0gM10gZWxzZSBzLltuIC0gMV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgfCAnKScgLT4gKCcoJywgXCIpXCIpXG4gICAgICAgICAgICAgIHwgJ10nIC0+ICgnWycsIFwiXVwiKVxuICAgICAgICAgICAgICB8ICd9JyAtPiAoJ3snLCBcIn1cIilcbiAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXRoX3ByZWZpeCA9XG4gICAgICAgICAgICAgIG1hdGNoIGlkIHdpdGggTGRvdCAobSwgXykgLT4gU29tZSBtIHwgXyAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQgPSBTdHJpbmcuc3ViIHMgMCAoMSArIFN0cmluZy5pbmRleCBzIGxlZnQpIGluXG4gICAgICAgICAgICBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgXCI7XCIgcmlnaHRcbiAgICAgICAgICAgICAgKGlmIG11bHRpX2luZGljZXMgdGhlbiBleHByZXNzaW9uIGN0eHQgZWxzZSBzaW1wbGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICBpIHJlc3RcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5hbmQgZXhwcmVzc2lvbiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSlALCVhKVwiIChleHByZXNzaW9uIGN0eHQpXG4gICAgICB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBleHBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9mdW5jdGlvbiBfIHwgUGV4cF9mdW4gXyB8IFBleHBfbWF0Y2ggXyB8IFBleHBfdHJ5IF8gfCBQZXhwX3NlcXVlbmNlIF9cbiAgICB8IFBleHBfbmV3dHlwZSBfXG4gICAgICB3aGVuIGN0eHQucGlwZSB8fCBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IChQZXhwX2lmdGhlbmVsc2UgXyB8IFBleHBfc2VxdWVuY2UgXykgd2hlbiBjdHh0LmlmdGhlbmVsc2UgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfbGV0IF8gfCBQZXhwX2xldG1vZHVsZSBfIHwgUGV4cF9vcGVuIF8gfCBQZXhwX2xldGV4Y2VwdGlvbiBfXG4gICAgfCBQZXhwX2xldG9wIF9cbiAgICAgIHdoZW4gY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2Z1biAobCwgZTAsIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7JWEtPkA7JWFAXVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGUwLCBwKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbmV3dHlwZSAobGlkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyh0eXBlQDslcylAOy0+QDslYUBdXCIgbGlkLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Z1bmN0aW9uIGwgLT4gcHAgZiBcIkBbPGh2PmZ1bmN0aW9uJWFAXVwiIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9tYXRjaCAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjA+QFs8Mj5tYXRjaCAlYUBdQCB3aXRoQF0lYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF90cnkgKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPGh2Mj50cnlAICVhQF1AIEBbPDA+d2l0aCVhQF1AXVwiXG4gICAgICAgICAgKCogXCJ0cnlAO0BbPDI+JWFAXUBcXG53aXRoQFxcbiVhXCIqKVxuICAgICAgICAgIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbGV0IChyZiwgbCwgZSkgLT5cbiAgICAgICAgKCogcHAgZiBcIkBbPDI+bGV0ICVhJWEgaW5AOzwxIC0yPiVhQF1cIlxuICAgICAgICAgICAoKm5vIGluZGVudGF0aW9uIGhlcmUsIGEgbmV3IGxpbmUqKSAqKVxuICAgICAgICAoKiAgIHJlY19mbGFnIHJmICopXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdzIHJlc2V0X2N0eHQpIChyZiwgbClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2FwcGx5IChlLCBsKSAtPiAoXG4gICAgICAgIGlmIG5vdCAoc3VnYXJfZXhwciBjdHh0IGYgeCkgdGhlblxuICAgICAgICAgIG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCBlIHdpdGhcbiAgICAgICAgICB8IGBJbmZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoKE5vbGFiZWwsIF8pIGFzIGFyZzEpOyAoKE5vbGFiZWwsIF8pIGFzIGFyZzIpIF0gLT5cbiAgICAgICAgICAgICAgICAgICgqIEZJWE1FIGFzc29jaWF0aXZpdHkgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtICopXG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7JXNAOyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzEgc1xuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IGBQcmVmaXggcyAtPiAoXG4gICAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5tZW0gcyBbIFwifitcIjsgXCJ+LVwiOyBcIn4rLlwiOyBcIn4tLlwiIF1cbiAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgICgqIFNlZSAjNzIwMDogYXZvaWQgdHVybmluZyAofi0gMSkgaW50byAoLSAxKSB3aGljaCBpc1xuICAgICAgICAgICAgICAgICAgICAgcGFyc2VkIGFzIGFuIGludCBsaXRlcmFsICopXG4gICAgICAgICAgICAgICAgICB8IFsgKF8sIHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdGFudCBfIH0pIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICAgICAgICAgICAgICBlbHNlIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoTm9sYWJlbCwgeCkgXSAtPiBwcCBmIFwiQFs8Mj4lc0A7JWFAXVwiIHMgKHNpbXBsZV9leHByIGN0eHQpIHhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmIChlLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChleHByZXNzaW9uMiBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICgqIHJlc2V0IGhlcmUgb25seSBiZWNhdXNlIFtmdW5jdGlvbixtYXRjaCx0cnksc2VxdWVuY2VdXG4gICAgICAgICAgICAgICAgICAgICBhcmUgbG93ZXIgcHJpb3JpdHkgKikpXG4gICAgICAgICAgICAgICAgKGUsIGwpKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGxpLCBTb21lIGVvKSB3aGVuIG5vdCAoaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpKVxuICAgICAgLT4gKFxuICAgICAgICAoKiBOb3QgZWZmaWNpZW50IEZJWE1FKilcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBjb25zIGxzIC0+IGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIGYgbHMgfnNlcDpcIkA7OjpAO1wiXG4gICAgICAgIHwgYG5vcm1hbCAtPiBwcCBmIFwiQFs8Mj4lYUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX3NldGZpZWxkIChlMSwgbGksIGUyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYUAgPC1AICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTEgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSBlMlxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIChlMSwgZTIsIGVvKSAtPlxuICAgICAgICAoKiBAO0BbPDI+ZWxzZUAgJWFAXUBdICopXG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzwyPmlmQCAlYUBdQDtAWzwyPnRoZW5AICVhQF0lYUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSA9IGV4cHJlc3Npb24gKHVuZGVyX2lmdGhlbmVsc2UgY3R4dCkgaW5cbiAgICAgICAgcHAgZiBmbXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUxIGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMlxuICAgICAgICAgIChmdW4gZiBlbyAtPlxuICAgICAgICAgICAgbWF0Y2ggZW8gd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiQDtAWzwyPmVsc2VAOyVhQF1cIiAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgeFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAoKiBwcCBmIFwiKClcIiAqKSlcbiAgICAgICAgICBlb1xuICAgIHwgUGV4cF9zZXF1ZW5jZSBfIC0+XG4gICAgICAgIGxldCByZWMgc2VxdWVuY2VfaGVscGVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfc2VxdWVuY2UgKGUxLCBlMik7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgc2VxdWVuY2VfaGVscGVyIChlMSA6OiBhY2MpIGUyXG4gICAgICAgICAgfCB2IC0+IExpc3QucmV2ICh2IDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxzdCA9IHNlcXVlbmNlX2hlbHBlciBbXSB4IGluXG4gICAgICAgIHBwIGYgXCJAWzxodj4lYUBdXCIgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIikgbHN0XG4gICAgfCBQZXhwX25ldyBsaSAtPiBwcCBmIFwiQFs8aG92Mj5uZXdAICVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NldGluc3R2YXIgKHMsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA8LUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfb3ZlcnJpZGUgbCAtPlxuICAgICAgICAoKiBGSVhNRSAqKVxuICAgICAgICBsZXQgc3RyaW5nX3hfZXhwcmVzc2lvbiBmIChzLCBlKSA9XG4gICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAID1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPns8JWE+fUBdXCIgKGxpc3Qgc3RyaW5nX3hfZXhwcmVzc2lvbiB+c2VwOlwiO1wiKSBsXG4gICAgfCBQZXhwX2xldG1vZHVsZSAocywgbWUsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgbW9kdWxlQCAlc0AgPUAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfZXhwciByZXNldF9jdHh0KSBtZSAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoY2QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgZXhjZXB0aW9uQCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICAgICAgICBjZCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Fzc2VydCBlIC0+IHBwIGYgXCJAWzxob3YyPmFzc2VydEAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX2xhenkgZSAtPiBwcCBmIFwiQFs8aG92Mj5sYXp5QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAoKiBQZXhwX3BvbHk6IGltcG9zc2libGUgYnV0IHdlIHNob3VsZCBwcmludCBpdCBhbnl3YXksIHJhdGhlciB0aGFuXG4gICAgICAgYXNzZXJ0IGZhbHNlICopXG4gICAgfCBQZXhwX3BvbHkgKGUsIE5vbmUpIC0+IHBwIGYgXCJAWzxob3YyPiFwb2x5IUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPighcG9seSFAICVhQCA6ICVhKUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvLnBvcGVuX2V4cHIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF92YXJpYW50IChsLCBTb21lIGVvKSAtPiBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgIHwgUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5AWzx2PiVhQCwlYUBdIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdfb3AgY3R4dCkgbGV0X1xuICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nX29wIGN0eHQpKVxuICAgICAgICAgIGFuZHMgKGV4cHJlc3Npb24gY3R4dCkgYm9keVxuICAgIHwgUGV4cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gcHAgZiBcIi5cIlxuICAgIHwgXyAtPiBleHByZXNzaW9uMSBjdHh0IGYgeFxuXG5hbmQgZXhwcmVzc2lvbjEgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfb2JqZWN0IGNzIC0+IHBwIGYgXCIlYVwiIChjbGFzc19zdHJ1Y3R1cmUgY3R4dCkgY3NcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjIgY3R4dCBmIHhcbigqIHVzZWQgaW4gW1BleHBfYXBwbHldICopXG5cbmFuZCBleHByZXNzaW9uMiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9maWVsZCAoZSwgbGkpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhLiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NlbmQgKGUsIHMpIC0+IHBwIGYgXCJAWzxob3YyPiVhIyVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBzLnR4dFxuICAgIHwgXyAtPiBzaW1wbGVfZXhwciBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfY29uc3RydWN0IF8gd2hlbiBpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkgLT4gKFxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYG5pbCAtPiBwcCBmIFwiW11cIlxuICAgICAgICB8IGB0dXBsZSAtPiBwcCBmIFwiKClcIlxuICAgICAgICB8IGBsaXN0IHhzIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aHYwPlslYV1AXVwiXG4gICAgICAgICAgICAgIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgICAgIHhzXG4gICAgICAgIHwgYHNpbXBsZSB4IC0+IGxvbmdpZGVudCBmIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfaWRlbnQgbGkgLT4gbG9uZ2lkZW50X2xvYyBmIGxpXG4gICAgKCogKG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCB4IHdpdGggKilcbiAgICAoKiB8YE5vcm1hbCAtPiBsb25naWRlbnRfbG9jIGYgbGkgKilcbiAgICAoKiB8IGBQcmVmaXggXyB8IGBJbmZpeCBfIC0+IHBwIGYgXCIoICVhIClcIiBsb25naWRlbnRfbG9jIGxpKSAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBjIC0+IGNvbnN0YW50IGYgY1xuICAgIHwgUGV4cF9wYWNrIG1lIC0+IHBwIGYgXCIobW9kdWxlQDslYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBleHBfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWEpQF1cIiAobGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgfnNlcDpcIixAO1wiKSBsXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhIDogJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX2NvZXJjZSAoZSwgY3RvMSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWElYSA6PiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgKG9wdGlvbiAoY29yZV90eXBlIGN0eHQpIH5maXJzdDpcIiA6IFwiIH5sYXN0OlwiIFwiKVxuICAgICAgICAgIGN0bzFcbiAgICAgICAgICAoKiBubyBzZXAgaGludCopIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICBjdFxuICAgIHwgUGV4cF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUGV4cF9yZWNvcmQgKGwsIGVvKSAtPlxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiBmIChsaSwgZSkgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0OyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH1cbiAgICAgICAgICAgIHdoZW4gbGkudHh0ID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj57QDslYSVhQF1AO31AXVwiICgqIFwiQFs8aG92Mj57JWElYX1AXVwiICopXG4gICAgICAgICAgKG9wdGlvbiB+bGFzdDpcIiB3aXRoQDtcIiAoc2ltcGxlX2V4cHIgY3R4dCkpXG4gICAgICAgICAgZW9cbiAgICAgICAgICAobGlzdCBsb25naWRlbnRfeF9leHByZXNzaW9uIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX2FycmF5IGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8Mj5bfCVhfF1AXUBdXCJcbiAgICAgICAgICAobGlzdCAoc2ltcGxlX2V4cHIgKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF93aGlsZSAoZTEsIGUyKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9IFwiQFs8Mj53aGlsZUA7JWFAO2RvQDslYUA7ZG9uZUBdXCIgaW5cbiAgICAgICAgcHAgZiBmbXQgKGV4cHJlc3Npb24gY3R4dCkgZTEgKGV4cHJlc3Npb24gY3R4dCkgZTJcbiAgICB8IFBleHBfZm9yIChzLCBlMSwgZTIsIGRmLCBlMykgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPGh2Mj5AWzwyPmZvciAlYSA9QDslYUA7JWElYUA7ZG9AXUA7JWFAXUA7ZG9uZUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uIGN0eHQgaW5cbiAgICAgICAgcHAgZiBmbXQgKHBhdHRlcm4gY3R4dCkgcyBleHByZXNzaW9uIGUxIGRpcmVjdGlvbl9mbGFnIGRmIGV4cHJlc3Npb24gZTJcbiAgICAgICAgICBleHByZXNzaW9uIGUzXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGV4cHJlc3Npb24gY3R4dCkgZiB4XG5cbmFuZCBhdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChhdHRyaWJ1dGUgY3R4dCBmKSBsXG5hbmQgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChpdGVtX2F0dHJpYnV0ZSBjdHh0IGYpIGxcblxuYW5kIGF0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgaXRlbV9hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCBmIHggPVxuICAoKiBub3RlOiB2YWx1ZV9kZXNjcmlwdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICAgICAgICBidXQgdGhleSdyZSBhbHJlYWR5IHByaW50ZWQgYnkgdGhlIGNhbGxlcnMgdGhpcyBtZXRob2QgKilcbiAgcHAgZiBcIkBbPGhvdjI+JWElYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSB4LnB2YWxfdHlwZVxuICAgIChmdW4gZiB4IC0+XG4gICAgICBpZiB4LnB2YWxfcHJpbSA8PiBbXSB0aGVuXG4gICAgICAgIHBwIGYgXCJAID1AICVhXCIgKGxpc3QgY29uc3RhbnRfc3RyaW5nKSB4LnB2YWxfcHJpbSlcbiAgICB4XG5cbmFuZCBleHRlbnNpb24gY3R4dCBmIChzLCBlKSA9IHBwIGYgXCJAWzwyPlslJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPVxuICBwcCBmIFwiQFs8Mj5bJSUlJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gIHBwIGYgXCJAWzxob3YyPmV4Y2VwdGlvbkAgJWFAXSVhXCJcbiAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgeC5wdHlleG5fY29uc3RydWN0b3IgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4bl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3RmX2Rlc2Mgd2l0aFxuICB8IFBjdGZfaW5oZXJpdCBjdCAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJWFAXSVhXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfdmFsIChzLCBtZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIEAgJWElYSVzQCA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfbWV0aG9kIChzLCBwZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kICVhICVhJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludEAgJWFAID1AICVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjdGZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdGZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiB7IHBjc2lnX3NlbGYgPSBjdDsgcGNzaWdfZmllbGRzID0gbDsgXyB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0QFs8MT4lYUBdQCAlYUBdQCBlbmRAXVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbnk7IHB0eXBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT4gKClcbiAgICAgIHwgY3QgLT4gcHAgZiBcIiAoJWEpXCIgKGNvcmVfdHlwZSBjdHh0KSBjdClcbiAgICBjdFxuICAgIChsaXN0IChjbGFzc190eXBlX2ZpZWxkIGN0eHQpIH5zZXA6XCJAO1wiKVxuICAgIGxcblxuKCogY2FsbCBbY2xhc3Nfc2lnbmF0dXJlXSBjYWxsZWQgYnkgW2NsYXNzX3NpZ25hdHVyZV0gKilcbmFuZCBjbGFzc190eXBlIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3R5X2Rlc2Mgd2l0aFxuICB8IFBjdHlfc2lnbmF0dXJlIGNzIC0+XG4gICAgICBjbGFzc19zaWduYXR1cmUgY3R4dCBmIGNzO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2NvbnN0ciAobGksIGwpIC0+XG4gICAgICBwcCBmIFwiJWElYSVhXCJcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KSB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfYXJyb3cgKGwsIGNvLCBjbCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY28pIChjbGFzc190eXBlIGN0eHQpIGNsXG4gIHwgUGN0eV9leHRlbnNpb24gZSAtPlxuICAgICAgZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X29wZW4gKG8sIGUpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc190eXBlIGN0eHQpIGVcblxuKCogW2NsYXNzIHR5cGUgYSA9IG9iamVjdCBlbmRdICopXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsID1cbiAgbGV0IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24ga3dkIGYgeCA9XG4gICAgbGV0IHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSA9IHggaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAID1AICVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIilcbiAgICAgICAgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgeHNcblxuYW5kIGNsYXNzX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY2ZfZGVzYyB3aXRoXG4gIHwgUGNmX2luaGVyaXQgKG92ZiwgY2UsIHNvKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJXNAICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICAgICAgKGZ1biBmIHNvIC0+XG4gICAgICAgICAgbWF0Y2ggc28gd2l0aCBOb25lIC0+ICgpIHwgU29tZSBzIC0+IHBwIGYgXCJAIGFzICVzXCIgcy50eHQpXG4gICAgICAgIHNvIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwlcyAlYSVzID1AOyVhQF0lYVwiIChvdmVycmlkZSBvdmYpIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCB2aXJ0dWFsICVhICVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCB2aXJ0dWFsICVhJXMgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIGxldCBiaW5kIGUgPVxuICAgICAgICBiaW5kaW5nIGN0eHQgZlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgcztcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZTtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kJXMgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBwcml2YXRlX2ZsYWcgcGZcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgU29tZSBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVzIDpAOyVhPUA7JWFcIiBzLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBOb25lKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBiaW5kIGVcbiAgICAgICAgICB8IF8gLT4gYmluZCBlKVxuICAgICAgICBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnQgJWEgPUA7JWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDEgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2luaXRpYWxpemVyIGUgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaXRpYWxpemVyQCAlYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY2ZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjZl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIHsgcGNzdHJfc2VsZiA9IHA7IHBjc3RyX2ZpZWxkcyA9IGwgfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdCVhQDslYUBdQDtlbmRAXVwiXG4gICAgKGZ1biBmIHAgLT5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50IF8gLT4gcHAgZiBcIiAlYVwiIChwYXR0ZXJuIGN0eHQpIHBcbiAgICAgIHwgXyAtPiBwcCBmIFwiICglYSlcIiAocGF0dGVybiBjdHh0KSBwKVxuICAgIHBcbiAgICAobGlzdCAoY2xhc3NfZmllbGQgY3R4dCkpXG4gICAgbFxuXG5hbmQgY2xhc3NfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGNsX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjbGFzc19leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGNsX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGNsX2Rlc2Mgd2l0aFxuICAgIHwgUGNsX3N0cnVjdHVyZSBjcyAtPiBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIGNzXG4gICAgfCBQY2xfZnVuIChsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bkAgJWFAIC0+QCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGVvLCBwKSAoY2xhc3NfZXhwciBjdHh0KSBlXG4gICAgfCBQY2xfbGV0IChyZiwgbCwgY2UpIC0+XG4gICAgICAgIHBwIGYgXCIlYUAgaW5AICVhXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbCkgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICB8IFBjbF9hcHBseSAoY2UsIGwpIC0+XG4gICAgICAgIHBwIGYgXCIoKCVhKUAgJWEpXCJcbiAgICAgICAgICAoKiBDZjogIzcyMDAgKikgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgICAgICBjZVxuICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgbFxuICAgIHwgUGNsX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgaWYgbCA8PiBbXSB0aGVuIHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQY2xfY29uc3RyYWludCAoY2UsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhQCA6QCAlYSlcIiAoY2xhc3NfZXhwciBjdHh0KSBjZSAoY2xhc3NfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGNsX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGNsX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc19leHByIGN0eHQpIGVcblxuYW5kIG1vZHVsZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbXR5X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgbXQyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yICgpIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAocywgbXQxKSwgbXQyKSAtPiAoXG4gICAgICAgIG1hdGNoIHMudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10MVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yQCAoJXNAIDpAICVhKUAgLT5AICVhQF1cIiBuYW1lXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDEgKG1vZHVsZV90eXBlIGN0eHQpIG10MilcbiAgICB8IFBtdHlfd2l0aCAobXQsIFtdKSAtPiBtb2R1bGVfdHlwZSBjdHh0IGYgbXRcbiAgICB8IFBtdHlfd2l0aCAobXQsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCB3aXRoQCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdFxuICAgICAgICAgIChsaXN0ICh3aXRoX2NvbnN0cmFpbnQgY3R4dCkgfnNlcDpcIkAgYW5kQCBcIilcbiAgICAgICAgICBsXG4gICAgfCBfIC0+IG1vZHVsZV90eXBlMSBjdHh0IGYgeFxuXG5hbmQgd2l0aF9jb25zdHJhaW50IGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUHdpdGhfdHlwZSAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgPUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kdWxlIChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlIChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG4gIHwgUHdpdGhfdHlwZXN1YnN0IChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA6PUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kc3Vic3QgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG5cbmFuZCBtb2R1bGVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuIG1vZHVsZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfYWxpYXMgbGkgLT4gcHAgZiBcIihtb2R1bGUgJWEpXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9zaWduYXR1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5zaWdAICVhQF1AIGVuZEBdXCIgKCogXCJAWzxob3Y+c2lnQCAlYUAgZW5kQF1cIiAqKVxuICAgICAgICAgIChsaXN0IChzaWduYXR1cmVfaXRlbSBjdHh0KSlcbiAgICAgICAgICBzXG4gICAgICAgICgqIEZJWE1FIHdyb25nIGluZGVudGF0aW9uKilcbiAgICB8IFBtdHlfdHlwZW9mIG1lIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgb2ZAICVhQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKG1vZHVsZV90eXBlIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzaWduYXR1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZV9pdGVtIGN0eHQgZiB4IDogdW5pdCA9XG4gIG1hdGNoIHgucHNpZ19kZXNjIHdpdGhcbiAgfCBQc2lnX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHNpZ190eXBlc3Vic3QgbCAtPlxuICAgICAgKCogUHNpZ190eXBlc3Vic3QgaXMgbmV2ZXIgcmVjdXJzaXZlLCBidXQgd2Ugc3BlY2lmeSBbUmVjdXJzaXZlXSBoZXJlIHRvXG4gICAgICAgICBhdm9pZCBwcmludGluZyBhIFtub25yZWNdIGZsYWcsIHdoaWNoIHdvdWxkIGJlIHJlamVjdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAqKVxuICAgICAgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKFJlY3Vyc2l2ZSwgZmFsc2UsIGwpXG4gIHwgUHNpZ192YWx1ZSB2ZCAtPlxuICAgICAgbGV0IGludHJvID0gaWYgdmQucHZhbF9wcmltID0gW10gdGhlbiBcInZhbFwiIGVsc2UgXCJleHRlcm5hbFwiIGluXG4gICAgICBwcCBmIFwiQFs8Mj4lc0AgJWFAIDpAICVhQF0lYVwiIGludHJvIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc2lnX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHNpZ19jbGFzcyBsIC0+IChcbiAgICAgIGxldCBjbGFzc19kZXNjcmlwdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAOzpAOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVzY3JpcHRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc2lnX21vZHVsZVxuICAgICAgKHtcbiAgICAgICAgIHBtZF90eXBlID0geyBwbXR5X2Rlc2MgPSBQbXR5X2FsaWFzIGFsaWFzOyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHBtZCkgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICBsb25naWRlbnRfbG9jIGFsaWFzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R1bGUgcG1kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDpAICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kc3Vic3QgcG1zIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDo9QCAlYUBdJWFcIiBwbXMucG1zX25hbWUudHh0IGxvbmdpZGVudF9sb2NcbiAgICAgICAgcG1zLnBtc19tYW5pZmVzdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtcy5wbXNfYXR0cmlidXRlc1xuICB8IFBzaWdfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+b3BlbiVzQCAlYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3QgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIC0+XG4gICAgICBsZXQgbWQgPVxuICAgICAgICBtYXRjaCBtZCB3aXRoIE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGFzdCBpbnZhcmlhbnQgKikgfCBTb21lIG10IC0+IG10XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlc0AgOj1AICVhQF0lYVwiIHMudHh0IChtb2R1bGVfdHlwZSBjdHh0KSBtZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHNpZ19yZWNtb2R1bGUgZGVjbHMgLT5cbiAgICAgIGxldCByZWMgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmID8oZmlyc3QgPSB0cnVlKSBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBwbWQgOjogdGwgLT5cbiAgICAgICAgICAgIGlmIG5vdCBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgIHBwIGYgXCJAIEBbPGhvdjI+YW5kQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiB+Zmlyc3Q6ZmFsc2UgdGxcbiAgICAgIGluXG4gICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgZGVjbHNcbiAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIG1vZHVsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wbW9kX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbW9kX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2Rfc3RydWN0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2Mj5zdHJ1Y3RAO0BbPDA+JWFAXUA7PDEgLTI+ZW5kQF1cIlxuICAgICAgICAgIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSB+c2VwOlwiQFxcblwiKVxuICAgICAgICAgIHNcbiAgICB8IFBtb2RfY29uc3RyYWludCAobWUsIG10KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWFAIDpAICVhKUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lIChtb2R1bGVfdHlwZSBjdHh0KSBtdFxuICAgIHwgUG1vZF9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIG1lKSAtPiBwcCBmIFwiZnVuY3RvciAoKUA7LT5AOyVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChzLCBtdCksIG1lKSAtPlxuICAgICAgICBwcCBmIFwiZnVuY3RvckAgKCVzQCA6QCAlYSlAOy0+QDslYVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2FwcGx5IChtZTEsIG1lMikgLT5cbiAgICAgICAgcHAgZiBcIiglYSkoJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lMSAobW9kdWxlX2V4cHIgY3R4dCkgbWUyXG4gICAgICAgICgqIENmOiAjNzIwMCAqKVxuICAgIHwgUG1vZF91bnBhY2sgZSAtPiBwcCBmIFwiKHZhbEAgJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUG1vZF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcblxuYW5kIHN0cnVjdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBwYXlsb2FkIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChlLCBhdHRycykgfSBdIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQU3RyIHggLT4gc3RydWN0dXJlIGN0eHQgZiB4XG4gIHwgUFR5cCB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgfCBQU2lnIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIHNpZ25hdHVyZSBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIE5vbmUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeDtcbiAgICAgIHBwIGYgXCIgd2hlbiBcIjtcbiAgICAgIGV4cHJlc3Npb24gY3R4dCBmIGVcblxuKCogdHJhbnNmb3JtIFtmID0gZnVuIGcgaCAtPiAuLl0gdG8gW2YgZyBoID0gLi4uIF0gY291bGQgYmUgaW1wcm92ZWQgKilcbmFuZCBiaW5kaW5nIGN0eHQgZiB7IHB2Yl9wYXQgPSBwOyBwdmJfZXhwciA9IHg7IF8gfSA9XG4gICgqIC5wdmJfYXR0cmlidXRlcyBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIsICNiaW5kaW5ncyAqKVxuICBsZXQgcmVjIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZiB4ID1cbiAgICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICBlbHNlXG4gICAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfZnVuIChsYWJlbCwgZW8sIHAsIGUpIC0+XG4gICAgICAgICAgaWYgbGFiZWwgPSBOb2xhYmVsIHRoZW5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobGFiZWwsIGVvLCBwKSBwcF9wcmludF9wZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIGVcbiAgICAgIHwgUGV4cF9uZXd0eXBlIChzdHIsIGUpIC0+XG4gICAgICAgICAgcHAgZiBcIih0eXBlQCAlcylAICVhXCIgc3RyLnR4dCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgIHwgXyAtPiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGluXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdHl2YXJzIGluXG4gIGxldCBpc19kZXN1Z2FyZWRfZ2FkdCBwIGUgPVxuICAgIGxldCBnYWR0X3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIFNvbWUgKHBhdCwgYXJnc190eXZhcnMsIHJ0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgZ2FkdF9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBnYWR0X2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBnYWR0X2V4cCA9IGdhZHRfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAoZ2FkdF9wYXR0ZXJuLCBnYWR0X2V4cCkgd2l0aFxuICAgIHwgU29tZSAocCwgcHRfdHl2YXJzLCBwdF9jdCksIFNvbWUgKGVfdHl2YXJzLCBlLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW4gU29tZSAocCwgcHRfdHl2YXJzLCBlX2N0LCBlKSBlbHNlIE5vbmVcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCB7XG4gICAgIHBwYXRfZGVzYyA9XG4gICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cCkgKTtcbiAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgIF87XG4gICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdCAoY29yZV90eXBlIGN0eHQpIHR5cFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBlbHNlXG4gICAgbWF0Y2ggaXNfZGVzdWdhcmVkX2dhZHQgcCB4IHdpdGhcbiAgICB8IFNvbWUgKHAsIFtdLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBTb21lIChwLCB0eXZhcnMsIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogdHlwZUA7JWEuQDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgIChsaXN0IHBwX3ByaW50X3N0cmluZyB+c2VwOlwiQDtcIilcbiAgICAgICAgICAodHl2YXJzX3N0ciB0eXZhcnMpIChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwLCB0eSk7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT4gKFxuICAgICAgICAgICAgKCogc3BlY2lhbCBjYXNlIGZvciB0aGUgZmlyc3QqKVxuICAgICAgICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVhQDs6QDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgICAgICAgICB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVhQDs6QDslYSlAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgdHkgKGV4cHJlc3Npb24gY3R4dCkgeClcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIHhcbiAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHgpXG5cbigqIFtpbl0gaXMgbm90IHByaW50ZWQgKilcbmFuZCBiaW5kaW5ncyBjdHh0IGYgKHJmLCBsKSA9XG4gIGxldCBiaW5kaW5nIGt3ZCByZiBmIHggPVxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWFAXSVhXCIga3dkIHJlY19mbGFnIHJmIChiaW5kaW5nIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdmJfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGJpbmRpbmcgXCJsZXRcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiIChiaW5kaW5nIFwibGV0XCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmcgXCJhbmRcIiBOb25yZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgYmluZGluZ19vcCBjdHh0IGYgeCA9XG4gIG1hdGNoICh4LnBib3BfcGF0LCB4LnBib3BfZXhwKSB3aXRoXG4gIHwgKCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gcHZhcjsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAge1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGV2YXI7IF8gfTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIF87XG4gICAgICB9IClcbiAgICB3aGVuIHB2YXIgPSBldmFyIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlc0BdXCIgeC5wYm9wX29wLnR4dCBldmFyXG4gIHwgcGF0LCBleHAgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVhQDs9QDslYUBdXCIgeC5wYm9wX29wLnR4dCAocGF0dGVybiBjdHh0KSBwYXRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZXhwXG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucHN0cl9kZXNjIHdpdGhcbiAgfCBQc3RyX2V2YWwgKGUsIGF0dHJzKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+OzslYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX3R5cGUgKF8sIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBQc3RyX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHN0cl92YWx1ZSAocmYsIGwpIC0+XG4gICAgICAoKiBwcCBmIFwiQFs8aG92Mj5sZXQgJWElYUBdXCIgIHJlY19mbGFnIHJmIGJpbmRpbmdzIGwgKilcbiAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKVxuICB8IFBzdHJfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzdHJfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc3RyX21vZHVsZSB4IC0+XG4gICAgICBsZXQgcmVjIG1vZHVsZV9oZWxwZXIgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChhcmdfb3B0LCBtZScpOyBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAobWF0Y2ggYXJnX29wdCB3aXRoXG4gICAgICAgICAgICB8IFVuaXQgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgICAgIHwgTmFtZWQgKHMsIG10KSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJXM6JWEpXCJcbiAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQpO1xuICAgICAgICAgICAgbW9kdWxlX2hlbHBlciBtZSdcbiAgICAgICAgfCBtZSAtPiBtZVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZSAlcyVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgeC5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChmdW4gZiBtZSAtPlxuICAgICAgICAgIGxldCBtZSA9IG1vZHVsZV9oZWxwZXIgbWUgaW5cbiAgICAgICAgICBtYXRjaCBtZSB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAobWUnLCAoeyBwbXR5X2Rlc2MgPSBQbXR5X2lkZW50IF8gfCBQbXR5X3NpZ25hdHVyZSBfOyBfIH0gYXMgbXQpKTtcbiAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiIDpAOyVhQDs9QDslYUA7XCIgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICAgIG1lJ1xuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiID1AICVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lKVxuICAgICAgICB4LnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wbWJfYXR0cmlidXRlc1xuICB8IFBzdHJfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPDI+b3BlbiVzQDslYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzdHJfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgZXh0cmFjdF9jbGFzc19hcmdzIGNsID1cbiAgICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2Z1biAobCwgZW8sIHAsIGNsJyk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBsb29wICgobCwgZW8sIHApIDo6IGFjYykgY2wnXG4gICAgICAgICAgfCBjbCAtPiAoTGlzdC5yZXYgYWNjLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFyZ3MsIGNsID0gbG9vcCBbXSBjbCBpblxuICAgICAgICBsZXQgY29uc3RyLCBjbCA9XG4gICAgICAgICAgbWF0Y2ggY2wgd2l0aFxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9jb25zdHJhaW50IChjbCcsIGN0KTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIChTb21lIGN0LCBjbCcpXG4gICAgICAgICAgfCBfIC0+IChOb25lLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgKGFyZ3MsIGNvbnN0ciwgY2wpXG4gICAgICBpblxuICAgICAgbGV0IGNsYXNzX2NvbnN0cmFpbnQgZiBjdCA9IHBwIGYgXCI6IEBbJWFAXSBcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCBpblxuICAgICAgbGV0IGNsYXNzX2RlY2xhcmF0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIGxldCBhcmdzLCBjb25zdHIsIGNsID0gZXh0cmFjdF9jbGFzc19hcmdzIHgucGNpX2V4cHIgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzICVhJWE9QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHRcbiAgICAgICAgICAobGlzdCAobGFiZWxfZXhwIGN0eHQpKVxuICAgICAgICAgIGFyZ3MgKG9wdGlvbiBjbGFzc19jb25zdHJhaW50KSBjb25zdHIgKGNsYXNzX2V4cHIgY3R4dCkgY2xcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzdHJfcHJpbWl0aXZlIHZkIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5leHRlcm5hbEAgJWFAIDpAICVhQF0lYVwiIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV9leHByIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9yZWNtb2R1bGUgZGVjbHMgLT4gKFxuICAgICAgKCogMy4wNyAqKVxuICAgICAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzOiVhQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgfCBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggZGVjbHMgd2l0aFxuICAgICAgfCAoeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIpXG4gICAgICAgIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOiVhQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IHBtYiA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlc0AgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIHR5cGVfcGFyYW0gY3R4dCBmIChjdCwgKGEsIGIpKSA9XG4gIHBwIGYgXCIlcyVzJWFcIiAodHlwZV92YXJpYW5jZSBhKSAodHlwZV9pbmplY3Rpdml0eSBiKSAoY29yZV90eXBlIGN0eHQpIGN0XG5cbmFuZCB0eXBlX3BhcmFtcyBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiJWEgXCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsQDtcIikgbFxuXG5hbmQgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCBleHBvcnRlZCwgbCkgPVxuICBsZXQgdHlwZV9kZWNsIGt3ZCByZiBmIHggPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCAmJiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuIFwiXCJcbiAgICAgIGVsc2UgaWYgZXhwb3J0ZWQgdGhlbiBcIiA9XCJcbiAgICAgIGVsc2UgXCIgOj1cIlxuICAgIGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzJXMlYUBdJWFcIiBrd2Qgbm9ucmVjX2ZsYWcgcmYgKHR5cGVfcGFyYW1zIGN0eHQpXG4gICAgICB4LnB0eXBlX3BhcmFtcyB4LnB0eXBlX25hbWUudHh0IGVxICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwZV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHR5cGVfZGVjbCBcInR5cGVcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiICh0eXBlX2RlY2wgXCJ0eXBlXCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKHR5cGVfZGVjbCBcImFuZFwiIFJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCByZWNvcmRfZGVjbGFyYXRpb24gY3R4dCBmIGxibHMgPVxuICBsZXQgdHlwZV9yZWNvcmRfZmllbGQgZiBwbGQgPVxuICAgIHBwIGYgXCJAWzwyPiVhJXM6QDslYUA7JWFAXVwiIG11dGFibGVfZmxhZyBwbGQucGxkX211dGFibGUgcGxkLnBsZF9uYW1lLnR4dFxuICAgICAgKGNvcmVfdHlwZSBjdHh0KSBwbGQucGxkX3R5cGUgKGF0dHJpYnV0ZXMgY3R4dCkgcGxkLnBsZF9hdHRyaWJ1dGVzXG4gIGluXG4gIHBwIGYgXCJ7QFxcbiVhfVwiIChsaXN0IHR5cGVfcmVjb3JkX2ZpZWxkIH5zZXA6XCI7QFxcblwiKSBsYmxzXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgKCogdHlwZV9kZWNsYXJhdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICBidXQgaXQncyBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCAqKVxuICBsZXQgcHJpdiBmID1cbiAgICBtYXRjaCB4LnB0eXBlX3ByaXZhdGUgd2l0aCBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJAO3ByaXZhdGVcIlxuICBpblxuICBsZXQgbWFuaWZlc3QgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT5cbiAgICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgdGhlblxuICAgICAgICAgIHBwIGYgXCIldEA7JWFcIiBwcml2IChjb3JlX3R5cGUgY3R4dCkgeVxuICAgICAgICBlbHNlIHBwIGYgXCJAOyVhXCIgKGNvcmVfdHlwZSBjdHh0KSB5XG4gIGluXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBmIHBjZCA9XG4gICAgcHAgZiBcInxAO1wiO1xuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgKCBwY2QucGNkX25hbWUudHh0LFxuICAgICAgICBwY2QucGNkX3ZhcnMsXG4gICAgICAgIHBjZC5wY2RfYXJncyxcbiAgICAgICAgcGNkLnBjZF9yZXMsXG4gICAgICAgIHBjZC5wY2RfYXR0cmlidXRlcyApXG4gIGluXG4gIGxldCByZXByIGYgPVxuICAgIGxldCBpbnRybyBmID0gaWYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiAoKSBlbHNlIHBwIGYgXCJAOz1cIiBpblxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IHhzIC0+XG4gICAgICAgIGxldCB2YXJpYW50cyBmbXQgeHMgPVxuICAgICAgICAgIGlmIHhzID0gW10gdGhlbiBwcCBmbXQgXCIgfFwiXG4gICAgICAgICAgZWxzZSBwcCBmbXQgXCJAXFxuJWFcIiAobGlzdCB+c2VwOlwiQFxcblwiIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSB4c1xuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiJXQldCVhXCIgaW50cm8gcHJpdiB2YXJpYW50cyB4c1xuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICB8IFB0eXBlX3JlY29yZCBsIC0+IHBwIGYgXCIldCV0QDslYVwiIGludHJvIHByaXYgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsXG4gICAgfCBQdHlwZV9vcGVuIC0+IHBwIGYgXCIldCV0QDsuLlwiIGludHJvIHByaXZcbiAgaW5cbiAgbGV0IGNvbnN0cmFpbnRzIGYgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoY3QxLCBjdDIsIF8pIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPkAgY29uc3RyYWludEAgJWFAID1AICVhQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyKVxuICAgICAgeC5wdHlwZV9jc3Ryc1xuICBpblxuICBwcCBmIFwiJXQldCV0XCIgbWFuaWZlc3QgcmVwciBjb25zdHJhaW50c1xuXG5hbmQgdHlwZV9leHRlbnNpb24gY3R4dCBmIHggPVxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGYgeCA9XG4gICAgcHAgZiBcIkBcXG58QDslYVwiIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCkgeFxuICBpblxuICBwcCBmIFwiQFs8Mj50eXBlICVhJWEgKz0gJWFAICVhQF0lYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBwcCBmIFwiJWFAO1wiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLFwiKSBsKVxuICAgIHgucHR5ZXh0X3BhcmFtcyBsb25naWRlbnRfbG9jIHgucHR5ZXh0X3BhdGggcHJpdmF0ZV9mbGFnXG4gICAgeC5wdHlleHRfcHJpdmF0ZSAoKiBDZjogIzcyMDAgKilcbiAgICAobGlzdCB+c2VwOlwiXCIgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZiAobmFtZSwgdmFycywgYXJncywgcmVzLCBhdHRycykgPVxuICBsZXQgbmFtZSA9IG1hdGNoIG5hbWUgd2l0aCBcIjo6XCIgLT4gXCIoOjopXCIgfCBzIC0+IHMgaW5cbiAgbGV0IHBwX3ZhcnMgZiB2cyA9XG4gICAgbWF0Y2ggdnMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHZzIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSB2c1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHBwIGYgXCIlcyVhQDslYVwiIG5hbWVcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiAoKVxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgU29tZSByIC0+XG4gICAgICBwcCBmIFwiJXM6QDslYSVhQDslYVwiIG5hbWUgcHBfdmFycyB2YXJzXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gY29yZV90eXBlMSBjdHh0IGYgclxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiXG4gICAgICAgICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpXG4gICAgICAgICAgICAgICAgbCAoY29yZV90eXBlMSBjdHh0KSByXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbCAoY29yZV90eXBlMSBjdHh0KSByKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCBmIHggPVxuICAoKiBDZjogIzcyMDAgKilcbiAgbWF0Y2ggeC5wZXh0X2tpbmQgd2l0aFxuICB8IFBleHRfZGVjbCAodiwgbCwgcikgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgICAoeC5wZXh0X25hbWUudHh0LCB2LCBsLCByLCB4LnBleHRfYXR0cmlidXRlcylcbiAgfCBQZXh0X3JlYmluZCBsaSAtPlxuICAgICAgcHAgZiBcIiVzQDs9QDslYSVhXCIgeC5wZXh0X25hbWUudHh0IGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNhc2VfbGlzdCBjdHh0IGYgbCA6IHVuaXQgPVxuICBsZXQgYXV4IGYgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSA9XG4gICAgcHAgZiBcIkA7fCBAWzwyPiVhJWFAOy0+QDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcGNfbGhzXG4gICAgICAob3B0aW9uIChleHByZXNzaW9uIGN0eHQpIH5maXJzdDpcIkA7d2hlbkA7XCIpXG4gICAgICBwY19ndWFyZFxuICAgICAgKGV4cHJlc3Npb24gKHVuZGVyX3BpcGUgY3R4dCkpXG4gICAgICBwY19yaHNcbiAgaW5cbiAgbGlzdCBhdXggZiBsIH5zZXA6XCJcIlxuXG5hbmQgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQgZiAobCwgZSkgPVxuICBsZXQgc2ltcGxlX25hbWUgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBTb21lIGxcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGV4cHJlc3Npb24yIGN0eHQgZiBlICgqIGxldmVsIDIqKVxuICB8IE9wdGlvbmFsIHN0ciAtPlxuICAgICAgaWYgU29tZSBzdHIgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCI/JXNcIiBzdHJcbiAgICAgIGVsc2UgcHAgZiBcIj8lczolYVwiIHN0ciAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICB8IExhYmVsbGVkIGxibCAtPlxuICAgICAgaWYgU29tZSBsYmwgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCJ+JXNcIiBsYmxcbiAgICAgIGVsc2UgcHAgZiBcIn4lczolYVwiIGxibCAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50IGYgeCA9XG4gIG1hdGNoIHgucGRpcmFfZGVzYyB3aXRoXG4gIHwgUGRpcl9zdHJpbmcgcyAtPiBwcCBmIFwiQCAlU1wiIHNcbiAgfCBQZGlyX2ludCAobiwgTm9uZSkgLT4gcHAgZiBcIkAgJXNcIiBuXG4gIHwgUGRpcl9pbnQgKG4sIFNvbWUgbSkgLT4gcHAgZiBcIkAgJXMlY1wiIG4gbVxuICB8IFBkaXJfaWRlbnQgbGkgLT4gcHAgZiBcIkAgJWFcIiBsb25naWRlbnQgbGlcbiAgfCBQZGlyX2Jvb2wgYiAtPiBwcCBmIFwiQCAlc1wiIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG5sZXQgdG9wbGV2ZWxfcGhyYXNlIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFB0b3BfZGVmIHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0KSkgc1xuICAoKiBwcF9vcGVuX2h2Ym94IGYgMDsgKilcbiAgKCogcHBfcHJpbnRfbGlzdCBzdHJ1Y3R1cmVfaXRlbSBmIHMgOyAqKVxuICAoKiBwcF9jbG9zZV9ib3ggZiAoKTsgKilcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBOb25lOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0BdXCIgcGRpcl9uYW1lLnR4dFxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IFNvbWUgcGRpcl9hcmc7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQCAlYUBdXCIgcGRpcl9uYW1lLnR4dCBkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmdcblxubGV0IGV4cHJlc3Npb24gZiB4ID0gcHAgZiBcIkBbJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIHhcblxubGV0IHN0cmluZ19vZl9leHByZXNzaW9uIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgZXhwcmVzc2lvbiBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHN0cmluZ19vZl9zdHJ1Y3R1cmUgeCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBzdHJ1Y3R1cmUgcmVzZXRfY3R4dCBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHRvcF9waHJhc2UgZiB4ID1cbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpO1xuICB0b3BsZXZlbF9waHJhc2UgZiB4O1xuICBwcCBmIFwiOztcIjtcbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpXG5cbmxldCBjb3JlX3R5cGUgPSBjb3JlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHBhdHRlcm4gPSBwYXR0ZXJuIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmUgPSBzaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfZXhwciA9IGNsYXNzX2V4cHIgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2ZpZWxkID0gY2xhc3NfZmllbGQgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGUgPSBjbGFzc190eXBlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19zaWduYXR1cmUgPSBjbGFzc19zaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGVfZmllbGQgPSBjbGFzc190eXBlX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfZXhwciA9IG1vZHVsZV9leHByIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfdHlwZSA9IG1vZHVsZV90eXBlIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmVfaXRlbSA9IHNpZ25hdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmVfaXRlbSA9IHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCB0eXBlX2RlY2xhcmF0aW9uID0gdHlwZV9kZWNsYXJhdGlvbiByZXNldF9jdHh0XG4iLCIoKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gNC4xNCBhbmQgNS4wIGZyb20gYSBQYXJzZXRyZWUgcG9pbnQgb2YgdmlldyBhcmUgdGhlIG1hZ2ljIG51bWJlcnMgKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5Bc3R0eXBlc1xuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LlBhcnNldHJlZVxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMyXCJcbmVuZFxuIiwibW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMzXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIGxldCBtZXJnZV9sb2MgbGVmdCByaWdodCA9XG4gICAgTG9jYXRpb24uXG4gICAgICB7IGxvY19zdGFydCA9IGxlZnQubG9jX3N0YXJ0OyBsb2NfZW5kID0gcmlnaHQubG9jX2VuZDsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICBpblxuICBsZXQgZ2hvc3RfbG9jIGxvYyA9IHsgbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgPVxuICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICBnaG9zdF9sb2NcbiAgICAgICAgKG1lcmdlX2xvYyBwYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgIGluXG4gICAge1xuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYztcbiAgICAgIHBwYXRfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAocGF0LCB0eXApO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICB9XG4gIGluXG4gIGxldCBwdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQgYW5kIHB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByIGluXG4gIGxldCBjb25zdHJhaW5fcGF0IHBhdCB0eXAgZXhwciA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwIGluXG4gICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIgPVxuICAgIG1hdGNoIChwdmJfY29uc3RyYWludCwgcHZiX3BhdCkgd2l0aFxuICAgIHwgKCBTb21lXG4gICAgICAgICAgKFB2Y19jb25zdHJhaW50XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdO1xuICAgICAgICAgICAgICB0eXAgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIHRoZSBzdWdhcmluZyBvZiBbbGV0IHg6IHVuaXZhcnMgLiB0eXAgPSBleHAgXSB3YXMgZGVzdWdhcmVkIHRvXG4gICAgICAgICAgIFtsZXQgKHg6dW5pdmFycyAuIHR5cCkgPSBleHBdIGluIDUuMCB3aGljaCBkb2Vzbid0IGZpdCB0aGUgY2FzZSBiZWxvdyAqKVxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCAoIFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gICAgICAgIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICAgICAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICAgICAgICBsZXQgZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnLFxuICAgICAgICAgICAgICAgICAgICAgIGxibF9sc3Rfb3B0aW9uIClcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9XG4gICAgICAgICAgbWF0Y2ggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGdob3N0X2xvYyB0eXAucHR5cF9sb2NcbiAgICAgICAgICB8IF8gOjogXyAtPiBnaG9zdF9sb2MgcGV4cF9sb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cF9wb2x5ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXAgd2l0aFxuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAgICAgICAgICggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzLFxuICAgICAgICAgICAgICAgICAgdmFyaWZ5X2NvbnN0cnVjdG9ycyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgdHlwICk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICAgICAgZ2hvc3RfbG9jXG4gICAgICAgICAgICAobWVyZ2VfbG9jIHB2Yl9wYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2NcbiAgICAgICAgICAgICAgIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSB7IChnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwX3BvbHkpIHdpdGggcHBhdF9sb2MgfVxuICAgICAgICBhbmQgcHZiX2V4cHIgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGV4cHIgdmFyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleHByIHdpdGhcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh2YXIsIGV4cHIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChwdmJfZXhwciwgdHlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChMaXN0LnJldiBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMpXG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107IHR5cCB9KSwgXyAtPlxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCBTb21lIChQdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pLCBfIC0+XG4gICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IGdob3N0X2xvYyBjb2VyY2lvbi5wdHlwX2xvYyBpblxuICAgICAgICBsZXQgdHlwID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2VyY2lvbiB3aXRoXG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5IChbXSwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwIGluXG4gICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAocHZiX2V4cHIsIGdyb3VuZCwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgXyAtPiAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBsb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIHBtb2RfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGxvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEgPSBjb3B5X21vZHVsZV9leHByIHgxIGluXG4gICAgICBsZXQgeDEgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgbG9jID0geyB4MS5wbW9kX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgeyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgbG9jIH07XG4gICAgICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciBbXTtcbiAgICAgICAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiB4MS5wbW9kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgfCBfIC0+IHgxXG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBsZXQgZW1wdHlfc3RydWN0ID1cbiAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBlbXB0eV9zdHJ1Y3QpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLmxldF87IEFzdF81MDAuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT4gUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG4gIGluXG4gICgqIE1hdGNoIHRoZSBmb3JtIG9mIHRoZSBleHByIGFuZCBwYXR0ZXJuIHRvIGRlY2lkZSB0aGUgdmFsdWUgb2ZcbiAgICAgW3B2Yl9jb25zdHJhaW50XS4gQWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBQUHJpbnRlci4gKilcbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB0eXZhcnMgaW5cbiAgbGV0IHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcCBlID1cbiAgICBsZXQgdmFsdWVfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSBhcyB0eV9leHQpICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYXNzZXJ0IChtYXRjaCBydC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSk7XG4gICAgICAgICAgbGV0IHR5ID0gbWF0Y2ggYXJnc190eXZhcnMgd2l0aCBbXSAtPiBydCB8IF8gLT4gdHlfZXh0IGluXG4gICAgICAgICAgYFZhciAocGF0LCBhcmdzX3R5dmFycywgcnQsIHR5KVxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwYXQsIHJ0KTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBgTm9uVmFyIChwYXQsIHJ0KVxuICAgICAgfCBfIC0+IGBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIHZhbHVlX2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIHZhbHVlX2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCB2YWx1ZV9leHAgPSB2YWx1ZV9leHAgW10gZSBpblxuICAgIG1hdGNoICh2YWx1ZV9wYXR0ZXJuLCB2YWx1ZV9leHApIHdpdGhcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIFNvbWUgKGVfdHl2YXJzLCBpbm5lcl9lLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuXG4gICAgICAgICAgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCBwdF90eXZhcnMsIGVfY3QsIGlubmVyX2UpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiB0aGUgZXhwcmVzc2lvbiBjb25zdHJhaW50IGFuZCB0aGUgcGF0dGVybiBjb25zdHJhaW50LFxuICAgICAgICAgICAgIGRvbid0IG1hdGNoLCBidXQgd2Ugc3RpbGwgaGF2ZSBhIFB0eXBfcG9seSBwYXR0ZXJuIGNvbnN0cmFpbnQgdGhhdFxuICAgICAgICAgICAgIHNob3VsZCBiZSByZXN1Z2FyZWQgdG8gYSB2YWx1ZSBiaW5kaW5nICopXG4gICAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgXyAtPlxuICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgTm9uVmFyIChwYXQsIGN0KSwgXyAtPiBgTm9uVmFyIChwYXQsIGN0LCBlKVxuICAgIHwgXyAtPiBgTm9uZVxuICBpblxuICBsZXQgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgU29tZVxuICAgICAgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgICB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IHR5X3ZhcnM7IHR5cCB9KVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIsIHB2Yl9jb25zdHJhaW50ID1cbiAgICBtYXRjaCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHB2Yl9wYXQgcHZiX2V4cHIgd2l0aFxuICAgIHwgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCB0eV92YXJzLCB0eXAsIGUpIC0+XG4gICAgICAgIChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXApXG4gICAgfCBgVW5pdmFycyAocGF0LCBbXSwgY3QsIGV4cHIpIC0+IChcbiAgICAgICAgKCogY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBbbGV0IHggOiB0eT8gOj4gY29lciA9IGV4cHIgXSBjYXNlICopXG4gICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb2VyY2UgKGV4cHIsIGdyLCBjb2VyY2UpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyIGluXG4gICAgICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2UgaW5cbiAgICAgICAgICAgIGxldCBwdmJfY29uc3RyYWludCA9XG4gICAgICAgICAgICAgIFNvbWUgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAocGF0LCBleHByLCBwdmJfY29uc3RyYWludClcbiAgICAgICAgfCBfIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdCkpXG4gICAgfCBgVW5pdmFycyAocGF0LCBfLCBjdCwgZXhwcikgLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KVxuICAgIHwgYE5vblZhciAocCwgdHlwLCBlKSAtPiAocCwgZSwgd2l0aF9jb25zdHJhaW50IFtdIHR5cClcbiAgICB8IGBOb25lIC0+IChwdmJfcGF0LCBwdmJfZXhwciwgTm9uZSlcbiAgaW5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEsIGlzX3VuaXQgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0ciBhY2MgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IF8gPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lID0geyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgXyB9O1xuICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogcSAtPlxuICAgICAgICAgICAgICAgICAgKExpc3QucmV2X2FwcGVuZCBhY2MgcSwgZmFsc2UpXG4gICAgICAgICAgICAgIHwgaGQgOjogdGwgLT4gZXh0cmFjdF9hdHRyIChoZCA6OiBhY2MpIHRsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYiA9IGV4dHJhY3RfYXR0ciBbXSB4MS5wbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgICAgICh7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH0sIGIpXG4gICAgICAgIHwgXyAtPiAoeDEsIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3VuaXQgdGhlbiBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gICAgICBlbHNlXG4gICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzQxNFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF81MDAuUGFyc2V0cmVlLiVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzQxNC5QYXJzZXRyZWUuJXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSAoW10sIFApXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgIEMgKHR5cGUgYSBiKSBQICAgU29tZSAoW2E7IGJdLCBQKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA6PSAgLi4uICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMwXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5sZXRfOyBBc3RfNDE0LlBhcnNldHJlZS5hbmRzOyBBc3RfNDE0LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT4gKFxuICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICAgICAgfCBoZCA6OiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInR5cGUgcGFyYW1ldGVycyBpbiBleHRlbnNpb24gY29uc3RydWN0b3JzXCIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwY2RfdmFycyB3aXRoXG4gIHwgW10gLT5cbiAgICAgIHtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgfVxuICB8IGhkIDo6IF8gLT4gbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInBjZF92YXJzIGluIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uc1wiXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTQuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoW10sIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTQuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzID0gW107XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTQuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTQuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHgwIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICB8IHR5IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB0eS5Bc3RfNDEzLkFzdHR5cGVzLmxvY1xuICAgICAgICAgICAgICAgICAgICBcImV4aXN0ZW50aWFscyBpbiBwYXR0ZXJuLW1hdGNoaW5nXCIpO1xuICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4geDEpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyBcIm1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0IChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jXG4gICAgICAgIFwiZGVzdHJ1Y3RpdmUgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAuQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2NcbiAgICAgICAgXCJsb2NhbCBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiAoW10sIGNvcHlfcGF0dGVybiB4KSkgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI4XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI4XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI3XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI3XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIF8sIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBMb2NhdGlvbi5ub25lLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjZcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xMFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvY1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW5vbnltb3VzIGxldCBtb2R1bGVcIlxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jXG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW55bnltb3VzIHVucGFja1wiIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IExvY2F0aW9uLnQgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1iX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBiaW5kaW5nXCIpXG4gICAgICAgIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT5cbiAgICBzdHJpbmcgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgKiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSBvcHRpb24gPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gKHsgbG9jID0gTG9jYXRpb24ubm9uZTsgdHh0ID0gXCIqXCIgfSwgTm9uZSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgKCBjb3B5X2xvYyAoZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgeCAtPiB4KSB4MCxcbiAgICAgICAgU29tZSAoY29weV9tb2R1bGVfdHlwZSB4MSkgKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWRfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBUaHUgTWFyIDIxIDA5OjUwOjQyIEdNVCAyMDE5XG4gICBPQ2FtbCB3YXM6XG4gICBjb21taXQgNTVjOWJhNDY2MzYyZjMwM2ViNGQ1ZWQ1MTFmNmZkYTE0Mjg3OTEzNyAoSEVBRCAtPiA0LjA4LCBvcmlnaW4vNC4wOClcbiAgICAgQXV0aG9yOiBOaWNvbMOhcyBPamVkYSBCw6RyIDxuLm9qZS5iYXJAZ21haWwuY29tPlxuICAgICBEYXRlOiAgIFR1ZSBNYXIgMTkgMDg6MTE6MDIgMjAxOSArMDEwMFxuXG4gICAgICAgICBNZXJnZSBwdWxsIHJlcXVlc3QgIzg1MjEgZnJvbSBub2piL2ZpeF91bml4X3Rlc3RzXzQwOFxuXG4gICAgICAgICBBY3R1YWxseSBydW4gYWxsIGxpYi11bml4IHRlc3RzIFs0LjA4XVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI1XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI1XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOS5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDguUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA4LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA4LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDguQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDguQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOC5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDguUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA4LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA4LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDguQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBXZWQgQXByIDE4IDEwOjMzOjI5IEJTVCAyMDE4XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCBjMGJkNmEyN2UxMzg5MTE1NjBmNDNkYzc1ZDVmZGUyYWRlNGQ2Y2ZlIChIRUFELCB0YWc6IDQuMDcuMCtiZXRhMilcbiAgICAgQXV0aG9yOiBEYW1pZW4gRG9saWdleiA8ZGFtaWVuLmRvbGlnZXpAaW5yaWEuZnI+XG4gICAgIERhdGU6ICAgVHVlIEFwciAxMCAxNDo1MDo0OCAyMDE4ICswMjAwXG5cbiAgICAgICAgIGNoYW5nZSBWRVJTSU9OIGZvciA0LjA3LjArYmV0YTJcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjNcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wOFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2xvYyA9IF87XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAgKCBwZGlyX25hbWUuTG9jYXRpb24udHh0LFxuICAgICAgICAgIG1hdGNoIHBkaXJfYXJnIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgYXJnIClcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgRnJvbS5QYXJzZXRyZWUucGRpcmFfbG9jID0gX3BkaXJhX2xvYyB9IC0+XG4gIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzY1xuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkLFxuICAgICAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEgKVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG9wIHsgbGV0XzsgYW5kcyA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsZXRfLnBib3Bfb3AubG9jIFwibGV0IG9wZXJhdG9yc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwcmZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9ib29sIHgxLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBvZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbG9jID0gXztcbiAgICAgfSAtPlxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZSwgY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZClcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQ7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9XG4gICAgICAgICAgICAgICAgY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIGxldCB4MF9sb2MgPVxuICAgICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICAgIHwgW10gLT4gTG9jYXRpb24ubm9uZVxuICAgICAgICB8IHsgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jOyBfIH0gOjogXyAtPiBwdHlwZV9sb2NcbiAgICAgIGluXG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDBfbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5wbXNfbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbigqIGFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gICBmdW5cbiAgICAgeyBGcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHB0eWV4bl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBwdHlleG5fYXR0cmlidXRlcyB9XG4gICAgICAtPlxuICAgICB7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IChjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2MpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9XG4gICAgICAgICAoY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzKVxuICAgICB9KilcbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbmFtZSA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLnR4dCA9IHgwOyBMb2NhdGlvbi5sb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfYXJnID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDE7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvblxuICAgID1cbiAgbGV0IHdyYXAgcGRpcmFfZGVzYyA9XG4gICAgU29tZSB7IFRvLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBUby5QYXJzZXRyZWUucGRpcmFfbG9jID0gTG9jYXRpb24ubm9uZSB9XG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IE5vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKSB8PiB3cmFwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSk7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2Jvb2wgeDIsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPSBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgyKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPSBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MDtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIHgxO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZCk7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzdHJfZmllbGRzXG4gIGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKVxuICAgICAgICAgICAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3NpZ19maWVsZHNcbiAgaW5cblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IF8gOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfbG9jID0gcHR5ZXh0X3BhdGguTG9jYXRpb24ubG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gTW9uIE9jdCAgMiAxMToyNTo1NyBDRVNUIDIwMTdcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IDY1OTQwYTJjNmJlNDNjNDJmNzVjNmM2YjI1NTk3NGY3ZTZkZTAzY2EgKEhFQUQgLT4gNC4wNiwgb3JpZ2luLzQuMDYpXG4gICAgIEF1dGhvcjogQ2hyaXN0b3BoZSBSYWZmYWxsaSA8Y2hyaXN0b3BoZUByYWZmYWxsaS5ldT5cbiAgICAgRGF0ZTogICBTdW4gT2N0IDEgMTg6Mjc6MDcgMjAxNyArMDIwMFxuXG4gICAgICAgICBmaXhlZCBwb3NpdGlvbiBvZiBsYXN0IG9wdGlvbmFsIGxhc3Qgc2VtaWNvbHVtbiBpbiBzZXF1ZW5jZSAoIzEzODcpXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIyXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA2XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBMb2NhdGlvbi5ub25lIFwiaW5oZXJpdGFuY2UgaW4gb2JqZWN0IHR5cGVcIilcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MC50eHQsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgZXhwcmVzc2lvblwiXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IF87IF8gfSwgeDApIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCB4MDsgbG9jIH0sIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IHgwOyBsb2MgfSwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IGxvYzsgXyB9LCBfeDApIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyBsb2M7IF8gfSwgX3gxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyB0eXBlXCJcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggeyB0eHQgPSBjb3B5X2xhYmVsIHgwOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLkZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWUsXG4gICAgICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwIClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxLkZyb20uQXN0dHlwZXMudHh0KVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBub2xvYyB4ID0geyBMb2NhdGlvbi50eHQgPSB4OyBsb2MgPSBMb2NhdGlvbi5ub25lIH1cblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIG5vbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAobm9sb2MgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIChub2xvYyB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IG5vbG9jIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBub2xvYyB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImxvY2FsIGV4Y2VwdGlvbnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIGxhYiBtdXN0IHN0YXJ0IHdpdGggJz8nLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuXG4gICAgTm90ZTogd2hlbiB1c2VkIHVuZGVyIFBzdHJfcHJpbWl0aXZlLCBwcmltIGNhbm5vdCBiZSBlbXB0eVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvcmVfdHlwZSBsaXN0O1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKGFyZ3MgPSBbXSwgcmVzID0gU29tZSBUMClcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDApXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb3JlX3R5cGUgbGlzdCAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2YgaW50XG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE1XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwMlxuXG5sZXQgaW5qZWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgZCA9XG4gIGxldCBvcGVuIFRvIGluXG4gIGxldCBvcGVuIFBhcnNldHJlZSBpblxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCBfIC0+XG4gICAgICBsZXQgbG9jID0geyBkLnB0eXBfbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgdHh0ID0gTG9uZ2lkZW50Lkxkb3QgKExvbmdpZGVudC5MaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKSBpblxuICAgICAgbGV0IGlkZW50ID0geyBMb2NhdGlvbi50eHQ7IGxvYyB9IGluXG4gICAgICB7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZGVudCwgWyBkIF0pO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG4gIHwgXyAtPiBkXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInVucmVhY2hhYmxlIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCBsb2MgeDAsIGNvcHlfY29uc3RhbnQgbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgbG9jIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcInNpZ25hdHVyZXMgaW4gYXR0cmlidXRlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIChmcm9tX2xvYyBwZXh0X25hbWUpIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyAoZnJvbV9sb2MgcGNkX25hbWUpIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgbGlzdCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT4gTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJpbmxpbmUgcmVjb3Jkc1wiXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBcIlwiXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gXCI/XCIgXiB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgbG9jIDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uQXN0dHlwZXMuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ2wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDMyIChJbnQzMi5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ0wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDY0IChJbnQ2NC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ24nIC0+IFRvLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCAoTmF0aXZlaW50Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gaW50ZWdlciBsaXRlcmFsc1wiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+IFRvLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDBcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gZmxvYXQgbGl0ZXJhbHNcIilcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgcmVjZmxhZyB0eXBlcyA9XG4gIG1hdGNoIChyZWNmbGFnLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMpIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMgLT4gdHlwZXNcbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgW10gLT4gW11cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeCA6OiB4cyAtPlxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJfbm9uZV9cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgICh7IFRvLkFzdHR5cGVzLnR4dCA9IFwibm9ucmVjXCI7IGxvYyB9LCBUby5QYXJzZXRyZWUuUFN0ciBbXSlcbiAgICAgICAgOjogeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgX3gxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwMlxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHR5cCA9XG4gIGxldCBvcGVuIEZyb20gaW5cbiAgbGV0IG9wZW4gTG9uZ2lkZW50IGluXG4gIG1hdGNoIChsYWJlbCwgdHlwLlBhcnNldHJlZS5wdHlwX2Rlc2MpIHdpdGhcbiAgfCAoIFRvLkFzdHR5cGVzLk9wdGlvbmFsIF8sXG4gICAgICBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoeyBMb2NhdGlvbi50eHQgPSBMZG90IChMaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKTsgXyB9LCBbIGQgXSkgKSAtPlxuICAgICAgZFxuICB8IF8gLT4gdHlwXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MCksXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgcGNkX2FyZ3MpO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gZnVuIHggLT5cbiAgaWYgeCA8PiBcIlwiIHRoZW5cbiAgICBpZiB4LlswXSA9ICc/JyB0aGVuXG4gICAgICBUby5Bc3R0eXBlcy5PcHRpb25hbCAoU3RyaW5nLnN1YiB4IDEgKFN0cmluZy5sZW5ndGggeCAtIDEpKVxuICAgIGVsc2UgVG8uQXN0dHlwZXMuTGFiZWxsZWQgeFxuICBlbHNlIFRvLkFzdHR5cGVzLk5vbGFiZWxcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLkFzdHR5cGVzLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQzMiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgeDAsIFNvbWUgJ2wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50NjQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHgwLCBTb21lICdMJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHgwLCBTb21lICduJylcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgdHlwZXMgPVxuICBsZXQgaXNfbm9ucmVjIChhdHRyLCBfKSA9IGF0dHIuTG9jYXRpb24udHh0ID0gXCJub25yZWNcIiBpblxuICBtYXRjaCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMgd2l0aFxuICB8IHggOjogeHMgd2hlbiBMaXN0LmV4aXN0cyBpc19ub25yZWMgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyAtPlxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IChpc19ub25yZWMgeCkpIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzKVxuICB8IHR5cGVzIC0+IChUby5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzKVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaW50IChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibGV0IGlzX2tleXdvcmQgPSBmdW5jdGlvblxuICB8IFwiYW5kXCIgLT4gdHJ1ZVxuICB8IFwiYXNcIiAtPiB0cnVlXG4gIHwgXCJhc3NlcnRcIiAtPiB0cnVlXG4gIHwgXCJiZWdpblwiIC0+IHRydWVcbiAgfCBcImNsYXNzXCIgLT4gdHJ1ZVxuICB8IFwiY29uc3RyYWludFwiIC0+IHRydWVcbiAgfCBcImRvXCIgLT4gdHJ1ZVxuICB8IFwiZG9uZVwiIC0+IHRydWVcbiAgfCBcImRvd250b1wiIC0+IHRydWVcbiAgfCBcImVsc2VcIiAtPiB0cnVlXG4gIHwgXCJlbmRcIiAtPiB0cnVlXG4gIHwgXCJleGNlcHRpb25cIiAtPiB0cnVlXG4gIHwgXCJleHRlcm5hbFwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZm9yXCIgLT4gdHJ1ZVxuICB8IFwiZnVuXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3Rpb25cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdG9yXCIgLT4gdHJ1ZVxuICB8IFwiaWZcIiAtPiB0cnVlXG4gIHwgXCJpblwiIC0+IHRydWVcbiAgfCBcImluY2x1ZGVcIiAtPiB0cnVlXG4gIHwgXCJpbmhlcml0XCIgLT4gdHJ1ZVxuICB8IFwiaW5pdGlhbGl6ZXJcIiAtPiB0cnVlXG4gIHwgXCJsYXp5XCIgLT4gdHJ1ZVxuICB8IFwibGV0XCIgLT4gdHJ1ZVxuICB8IFwibWF0Y2hcIiAtPiB0cnVlXG4gIHwgXCJtZXRob2RcIiAtPiB0cnVlXG4gIHwgXCJtb2R1bGVcIiAtPiB0cnVlXG4gIHwgXCJtdXRhYmxlXCIgLT4gdHJ1ZVxuICB8IFwibmV3XCIgLT4gdHJ1ZVxuICB8IFwibm9ucmVjXCIgLT4gdHJ1ZVxuICB8IFwib2JqZWN0XCIgLT4gdHJ1ZVxuICB8IFwib2ZcIiAtPiB0cnVlXG4gIHwgXCJvcGVuXCIgLT4gdHJ1ZVxuICB8IFwib3JcIiAtPiB0cnVlXG4gICgqIHwgXCJwYXJzZXJcIiAtPiB0cnVlICopXG4gIHwgXCJwcml2YXRlXCIgLT4gdHJ1ZVxuICB8IFwicmVjXCIgLT4gdHJ1ZVxuICB8IFwic2lnXCIgLT4gdHJ1ZVxuICB8IFwic3RydWN0XCIgLT4gdHJ1ZVxuICB8IFwidGhlblwiIC0+IHRydWVcbiAgfCBcInRvXCIgLT4gdHJ1ZVxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcInRyeVwiIC0+IHRydWVcbiAgfCBcInR5cGVcIiAtPiB0cnVlXG4gIHwgXCJ2YWxcIiAtPiB0cnVlXG4gIHwgXCJ2aXJ0dWFsXCIgLT4gdHJ1ZVxuICB8IFwid2hlblwiIC0+IHRydWVcbiAgfCBcIndoaWxlXCIgLT4gdHJ1ZVxuICB8IFwid2l0aFwiIC0+IHRydWVcbiAgfCBcImxvclwiIC0+IHRydWVcbiAgfCBcImx4b3JcIiAtPiB0cnVlXG4gIHwgXCJtb2RcIiAtPiB0cnVlXG4gIHwgXCJsYW5kXCIgLT4gdHJ1ZVxuICB8IFwibHNsXCIgLT4gdHJ1ZVxuICB8IFwibHNyXCIgLT4gdHJ1ZVxuICB8IFwiYXNyXCIgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVyc1xuICAgIG9wZW4gUHJpbnRmICQqKVxuXG4oKiBDb3B5IG9mIE9DYW1sIHBhcnNldHJlZXMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb24gKGZ1biBzdWZmaXggXyAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIEFzdF8lcyA9IEFzdF8lc1xcblwiIHN1ZmZpeCBzdWZmaXgpXG4qKVxubW9kdWxlIEFzdF80MDIgPSBBc3RfNDAyXG5tb2R1bGUgQXN0XzQwMyA9IEFzdF80MDNcbm1vZHVsZSBBc3RfNDA0ID0gQXN0XzQwNFxubW9kdWxlIEFzdF80MDUgPSBBc3RfNDA1XG5tb2R1bGUgQXN0XzQwNiA9IEFzdF80MDZcbm1vZHVsZSBBc3RfNDA3ID0gQXN0XzQwN1xubW9kdWxlIEFzdF80MDggPSBBc3RfNDA4XG5tb2R1bGUgQXN0XzQwOSA9IEFzdF80MDlcbm1vZHVsZSBBc3RfNDEwID0gQXN0XzQxMFxubW9kdWxlIEFzdF80MTEgPSBBc3RfNDExXG5tb2R1bGUgQXN0XzQxMiA9IEFzdF80MTJcbm1vZHVsZSBBc3RfNDEzID0gQXN0XzQxM1xubW9kdWxlIEFzdF80MTQgPSBBc3RfNDE0XG5tb2R1bGUgQXN0XzUwMCA9IEFzdF81MDBcbm1vZHVsZSBBc3RfNTAxID0gQXN0XzUwMVxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb25faW50ZiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlY19jaGVjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJlY19jaGVjayBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVmX3RvX3ZhcmlhYmxlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWZfdG9fdmFyaWFibGVzIGluc3RlYWRcIl1cbm1vZHVsZSBSZWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVnIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2FyZ3VtZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2FyZ3VtZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzIGluc3RlYWRcIl1cbm1vZHVsZSBSdW50aW1lZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUnVudGltZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkdWxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWR1bGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0Z2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfaWQgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YXRpY19leGNlcHRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhdGljX2V4Y2VwdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFN0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Vic3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdWJzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3dpdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3dpdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBTeW10YWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bXRhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBTeW50YXhlcnIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW50YXhlcnIgaW5zdGVhZFwiXVxubW9kdWxlIFRhZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UYWcgaW5zdGVhZFwiXVxubW9kdWxlIFRhcmdldGludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhcmdldGludCBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRlcm1pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGVybWluZm8gaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbnR5cGVhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5VbnR5cGVhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFZhcl93aXRoaW5fY2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJfd2l0aGluX2Nsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIFZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBXYXJuaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLldhcm5pbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBYODZfZHNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9kc2wgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9nYXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2dhcyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X21hc20gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X21hc20gaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9wcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9wcm9jIGluc3RlYWRcIl1cbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MgPVxuICBsZXQgYXJncyA9XG4gICAgTGlzdC5jb25jYXRcbiAgICAgIFtcbiAgICAgICAgWyBcIi1rZWVwLXdoaXRlc3BhY2VcIiBdO1xuICAgICAgICBbIFwiLWxvY2F0aW9uLXN0eWxlIG9tYWtlXCIgXTtcbiAgICAgICAgKGlmIHVzZV9jb2xvciB0aGVuIFtdIGVsc2UgWyBcIi1hc2NpaVwiIF0pO1xuICAgICAgICBleHRyYV9wYXRkaWZmX2FyZ3M7XG4gICAgICBdXG4gIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoXCJwYXRkaWZmXCIgOjogYXJncylcblxubGV0IHByaW50ID9kaWZmX2NvbW1hbmQgPyhleHRyYV9wYXRkaWZmX2FyZ3MgPSBbXSkgPyh1c2VfY29sb3IgPSBmYWxzZSkgfmZpbGUxXG4gICAgfmZpbGUyICgpID1cbiAgbGV0IGV4ZWMgY21kID1cbiAgICBsZXQgY21kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgMT4mMlwiIGNtZCAoRmlsZW5hbWUucXVvdGUgZmlsZTEpXG4gICAgICAgIChGaWxlbmFtZS5xdW90ZSBmaWxlMilcbiAgICBpblxuICAgIG1hdGNoIFN5cy5jb21tYW5kIGNtZCB3aXRoXG4gICAgfCAwIC0+IGBTYW1lXG4gICAgfCAxIC0+IGBEaWZmZXJlbnRcbiAgICB8IG4gLT4gYEVycm9yIChuLCBjbWQpXG4gIGluXG4gIG1hdGNoIGRpZmZfY29tbWFuZCB3aXRoXG4gIHwgU29tZSBzIC0+IGlnbm9yZSAoZXhlYyBzIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggZXhlYyAocGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzKSB3aXRoXG4gICAgICB8IGBTYW1lIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBwcm9kdWNlZCBubyBvdXRwdXQsIGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gICAgICB8IGBEaWZmZXJlbnQgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHN1Y2Nlc3NmdWxseSBmb3VuZCBhIGRpZmZlcmVuY2UgKilcbiAgICAgICAgICAoKVxuICAgICAgfCBgRXJyb3IgKGVycl9jb2RlLCBjbWQpIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiB0aHJldyBhbiBlcnJvci4uLiBwZXJoYXBzIGl0IHdhc24ndCBpbnN0YWxsZWQ/IGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJFcnJvcjpcXG5cXFxuICAgICAgICAgICAgID4gJVMgZXhpdGVkIHdpdGggY29kZSAlZFxcblxcXG4gICAgICAgICAgICAgPiBQZXJoYXBzIHBhdGRpZmYgaXMgbm90IGluc3RhbGxlZD8gSGludCwgdHJ5OiBvcGFtIGluc3RhbGwgcGF0ZGlmZlxcblxcXG4gICAgICAgICAgICAgPiBGYWxsaW5nIGJhY2sgdG8gZGlmZiAtdVxcblxcblwiXG4gICAgICAgICAgICBjbWQgZXJyX2NvZGU7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKSlcbiIsInR5cGUgZGVyaXZlciA9IC4uXG5cbmxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSA0MlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSBkZXJpdmVyID1cbiAgaWYgSGFzaHRibC5tZW0gYWxsIG5hbWUgdGhlblxuICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgXCJQcHhfZGVyaXZpZXJzLnJlZ2lzdGVyOiAlUyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcIiBuYW1lO1xuICBIYXNodGJsLmFkZCBhbGwgbmFtZSBkZXJpdmVyXG5cbmxldCBsb29rdXAgbmFtZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCBhbGwgbmFtZSB3aXRoXG4gIHwgZHJ2IC0+IFNvbWUgZHJ2XG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbmxldCBkZXJpdmVycyAoKSA9XG4gIEhhc2h0YmwuZm9sZCAoZnVuIG5hbWUgZHJ2IGFjYyAtPiAobmFtZSwgZHJ2KSA6OiBhY2MpIGFsbCBbXVxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBtYXAgPSAnYSAtPiAnYVxuICB0eXBlICdhIGl0ZXIgPSAnYSAtPiB1bml0XG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkID0gJ2EgLT4gJ2FjYyAtPiAnYWNjXG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkX21hcCA9ICdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjXG4gIHR5cGUgKCdjdHgsICdhKSBtYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYVxuICB0eXBlICgnYSwgJ3JlcykgbGlmdCA9ICdhIC0+ICdyZXNcbiAgdHlwZSAoJ2N0eCwgJ2EsICdyZXMpIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzXG5lbmRcblxuY2xhc3MgbWFwID1cbiAgbGV0IGFueSB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQubWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULm1hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULm1hcCAtPiAnYSBvcHRpb24gVC5tYXAgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQubWFwIC0+ICdhIGxpc3QgVC5tYXAgPSBMaXN0Lm1hcFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULm1hcCAtPiAnYSBhcnJheSBULm1hcCA9IEFycmF5Lm1hcFxuICBlbmRcblxuY2xhc3MgaXRlciA9XG4gIGxldCBhbnkgPSBpZ25vcmUgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5pdGVyID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQuaXRlciAtPiAnYSBvcHRpb24gVC5pdGVyID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgbGlzdCBULml0ZXIgPSBMaXN0Lml0ZXJcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGFycmF5IFQuaXRlciA9IEFycmF5Lml0ZXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkID1cbiAgbGV0IGFueSBfIGFjYyA9IGFjYyBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgeCBhY2MgLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gYWNjIHwgU29tZSB4IC0+IGYgeCBhY2NcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGQgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gYWNjIHwgeCA6OiBsIC0+IGxvb3AgZiBsIChmIHggYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIHIgOj0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZF9tYXAgPVxuICBsZXQgYW55IHggYWNjID0gKHgsIGFjYykgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIGFjYylcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICAoU29tZSB4LCBhY2MpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIGFjYylcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICBsZXQgbCwgYWNjID0gbG9vcCBmIGwgYWNjIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiAoYSwgYWNjKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSBhY2MgaW5cbiAgICAgICAgICBsZXQgYScgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXIgaW5cbiAgICAgICAgICAgIEFycmF5LnVuc2FmZV9zZXQgYScgaSB4O1xuICAgICAgICAgICAgciA6PSBhY2NcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIChhJywgIXIpXG4gIGVuZFxuXG5jbGFzcyBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIGxldCBhbnkgXyB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKCdjdHgsIGludCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBvcHRpb24pIFQubWFwX3dpdGhfY29udGV4dFxuICAgICAgICA9XG4gICAgICBmdW4gZiBjdHggeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgY3R4IHgpXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBsaXN0KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT4gTGlzdC5tYXAgKGYgY3R4KSBsXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgYXJyYXkpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggYSAtPiBBcnJheS5tYXAgKGYgY3R4KSBhXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlbGYjY29uc3RyIFwiTm9uZVwiIFtdXG4gICAgICAgIHwgU29tZSB4IC0+IHNlbGYjY29uc3RyIFwiU29tZVwiIFsgZiB4IF1cblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZWxmI2NvbnN0ciBcIltdXCIgW11cbiAgICAgICAgfCB4IDo6IGwgLT4gc2VsZiNjb25zdHIgXCI6OlwiIFsgZiB4OyBzZWxmI2xpc3QgZiBsIF1cbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIHNlbGYjY29uc3RyIGN0eCBcIk5vbmVcIiBbXSlcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCByZXMgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICAoU29tZSB4LCBzZWxmI2NvbnN0ciBjdHggXCJTb21lXCIgWyByZXMgXSlcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIHNlbGYjY29uc3RyIGN0eCBcIltdXCIgW10pXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzX2hlYWQgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICBsZXQgbCwgcmVzX3RhaWwgPSBzZWxmI2xpc3QgZiBjdHggbCBpblxuICAgICAgICAgICAgKHggOjogbCwgc2VsZiNjb25zdHIgY3R4IFwiOjpcIiBbIHJlc19oZWFkOyByZXNfdGFpbCBdKVxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ3Jlc10gc3RkX2xpZnRlcnMgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICBtZXRob2QgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnRcbmVuZFxuXG5jbGFzcyB0eXBlIFsnY3R4LCAncmVzXSBzdGRfbGlmdF9tYXBwZXJzX3dpdGhfY29udGV4dCA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgYXJyYXkgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2Qgb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgbGlzdCA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuZW5kXG4iLCJtb2R1bGUgQ2FtbCA9IFN0ZGxpYiBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjMtMDZdIHVzZSBTdGRsaWIgaW5zdGVhZFwiXVxub3BlbiBTdGRsaWJcbm9wZW4gU3RkTGFiZWxzXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgdHlwZSBDb21wYXJpc29ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG1pbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBtYXggOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgbWluID0gbWluXG4gIGxldCBtYXggPSBtYXhcbmVuZFxuXG5pbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxubW9kdWxlIEFycmF5ID0gQXJyYXlcblxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9ib29sXG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGJvb2wpXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQnl0ZXNcblxuICBsZXQgc3ViX3N0cmluZyB0IH5wb3MgfmxlbiA9IFN0ZGxpYi5CeXRlcy5zdWJfc3RyaW5nIHQgcG9zIGxlblxuXG4gIGxldCBibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gY2hhcilcbmVuZFxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgeSAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICByYWlzZSBleG5cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9mbG9hdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBmbG9hdClcbmVuZFxuXG5tb2R1bGUgRm4gPSBzdHJ1Y3RcbiAgbGV0IGlkIHggPSB4XG5lbmRcblxubW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIHdoaWxlIG1lbSB0IGtleSBkb1xuICAgICAgcmVtb3ZlIHQga2V5XG4gICAgZG9uZTtcbiAgICBhZGQgdCBrZXkgZGF0YVxuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBpZiBtZW0gdCBrZXkgdGhlbiBFcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0YmwuYWRkX2V4blwiKVxuICAgIGVsc2UgKFxuICAgICAgYWRkIHQga2V5IGRhdGE7XG4gICAgICBPayAoKSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aCBPayAoKSAtPiAoKSB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cblxuICBsZXQgZmluZF9vcHQgdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aCBkYXRhIC0+IFNvbWUgZGF0YSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZmluZF9vcHQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgICAgIGFkZF9leG4gdCB+a2V5IH5kYXRhO1xuICAgICAgICBkYXRhXG5cbiAgbGV0IHJlYyBhZGRfYWxpc3QgdCBhbGlzdCA9XG4gICAgbWF0Y2ggYWxpc3Qgd2l0aFxuICAgIHwgW10gLT4gT2sgKClcbiAgICB8IChrZXksIGRhdGEpIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBhZGRfYWxpc3QgdCB0YWlsXG4gICAgICAgIHwgRXJyb3IgKF8gOiBleG4pIC0+IEVycm9yIGtleSlcblxuICBsZXQgb2ZfYWxpc3QgP3NpemUgYWxpc3QgPVxuICAgIGxldCBzaXplID1cbiAgICAgIG1hdGNoIHNpemUgd2l0aCBTb21lIHNpemUgLT4gc2l6ZSB8IE5vbmUgLT4gTGlzdC5sZW5ndGggYWxpc3RcbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlIHNpemUgaW5cbiAgICBtYXRjaCBhZGRfYWxpc3QgdCBhbGlzdCB3aXRoIE9rICgpIC0+IE9rIHQgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/c2l6ZSBhbGlzdCA9XG4gICAgbWF0Y2ggb2ZfYWxpc3QgP3NpemUgYWxpc3Qgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5vZl9hbGlzdF9leG5cIilcbmVuZFxuXG5tb2R1bGUgSW5fY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gICAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZW5hbWUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgZmlsZW5hbWUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9pblxuXG4gIGxldCBpbnB1dF9hbGwgdCA9XG4gICAgbGV0IHJlYyByZWFkX2FsbF9pbnRvIHQgYnVmID1cbiAgICAgIG1hdGNoIGlucHV0X2NoYXIgdCB3aXRoXG4gICAgICB8IGNoYXIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgICAgICAgcmVhZF9hbGxfaW50byB0IGJ1ZlxuICAgICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gKClcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgcmVhZF9hbGxfaW50byB0IGJ1ZjtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHJlYWRfYWxsIGZpbGVuYW1lID0gd2l0aF9maWxlIGZpbGVuYW1lIH5mOmlucHV0X2FsbFxuZW5kXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG1heF9pbnQgPSBtYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbmVuZFxuXG5tb2R1bGUgRWl0aGVyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuZW5kXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgKCogc2hhZG93IG5vbi10YWlsLXJlY3Vyc2l2ZSBmdW5jdGlvbnMgKilcbiAgICBsZXQgbWVyZ2UgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NvYyA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc3EgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG5cbiAgICBsZXQgcmV2X21hcGkgbGlzdCB+ZiA9XG4gICAgICBsZXQgcmVjIHJldl9tYXBpX2F0IGxpc3QgaSB+ZiB+YWNjID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+IHJldl9tYXBpX2F0IHRhaWwgKGkgKyAxKSB+ZiB+YWNjOihmIGkgaGVhZCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgcmV2X21hcGlfYXQgbGlzdCAwIH5mIH5hY2M6W11cblxuICAgIGxldCBmb2xkX3JpZ2h0MiBsaXN0MSBsaXN0MiB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQyIChyZXYgbGlzdDEpIChyZXYgbGlzdDIpIH5pbml0IH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSBhY2MpXG5cbiAgICBsZXQgbWFwIGxpc3QgfmYgPSByZXYgKHJldl9tYXAgbGlzdCB+ZilcbiAgICBsZXQgbWFwaSBsaXN0IH5mID0gcmV2IChyZXZfbWFwaSBsaXN0IH5mKVxuXG4gICAgbGV0IGZvbGRfcmlnaHQgbGlzdCB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQgKExpc3QucmV2IGxpc3QpIH5pbml0IH5mOihmdW4gYWNjIHggLT4gZiB4IGFjYylcblxuICAgIGxldCBhcHBlbmQgeCB5ID0gcmV2X2FwcGVuZCAocmV2IHgpIHlcbiAgICBsZXQgY29uY2F0IGxpc3QgPSBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6W10gfmY6YXBwZW5kXG5cbiAgICBsZXQgcmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIgPVxuICAgICAgZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gKHgsIHkpIDo6IGFjYylcblxuICAgIGxldCBjb21iaW5lIGxpc3QxIGxpc3QyID0gcmV2IChyZXZfY29tYmluZSBsaXN0MSBsaXN0MilcblxuICAgIGxldCBzcGxpdCBsaXN0ID1cbiAgICAgIGZvbGRfcmlnaHQgbGlzdCB+aW5pdDooW10sIFtdKSB+ZjooZnVuICh4LCB5KSAoeHMsIHlzKSAtPlxuICAgICAgICAgICh4IDo6IHhzLCB5IDo6IHlzKSlcblxuICAgIGxldCBtYXAyIGxpc3QxIGxpc3QyIH5mID1cbiAgICAgIHJldiAoZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgOjogYWNjKSlcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsKVxuICAgIGluXG4gICAgcGFydCBbXSBbXSBsXG5cbiAgbGV0IGluaXQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIH5sZW4gfnBvcyB+ZiB+YWNjID1cbiAgICAgIGlmIHBvcyA+PSBsZW4gdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgIGVsc2UgbG9vcCB+bGVuIH5wb3M6KHBvcyArIDEpIH5mIH5hY2M6KGYgcG9zIDo6IGFjYylcbiAgICBpblxuICAgIGxvb3AgfmxlbiB+cG9zOjAgfmYgfmFjYzpbXVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIFtdIC0+IHRydWUgfCBfIDo6IF8gLT4gZmFsc2VcblxuICBsZXQgcmV2X2ZpbHRlcl9vcHQgbGlzdCA9XG4gICAgZm9sZF9sZWZ0IGxpc3QgfmluaXQ6W10gfmY6KGZ1biB0YWlsIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aCBOb25lIC0+IHRhaWwgfCBTb21lIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuXG4gIGxldCBmaWx0ZXJfb3B0IGxpc3QgPSByZXYgKHJldl9maWx0ZXJfb3B0IGxpc3QpXG4gIGxldCBmaWx0ZXJfbWFwIGxpc3QgfmYgPSByZXZfZmlsdGVyX29wdCAocmV2X21hcCBsaXN0IH5mKVxuICBsZXQgY29uY2F0X21hcCBsaXN0IH5mID0gY29uY2F0IChtYXAgbGlzdCB+ZilcblxuICBsZXQgcmVjIGZpbmRfbWFwIGxpc3QgfmYgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggZiBoZWFkIHdpdGggU29tZSBfIGFzIHNvbWUgLT4gc29tZSB8IE5vbmUgLT4gZmluZF9tYXAgdGFpbCB+ZilcblxuICBsZXQgZmluZF9tYXBfZXhuIGxpc3QgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIGxpc3QgfmYgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbiAgbGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgeCBdIC0+IFNvbWUgeFxuICAgIHwgXyA6OiAoXyA6OiBfIGFzIHJlc3QpIC0+IGxhc3QgcmVzdFxuXG4gIGxldCBzcGxpdF93aGlsZSBsaXN0IH5mID1cbiAgICBsZXQgcmVjIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBmIGhlYWQgLT4gc3BsaXRfd2hpbGVfaW50byB0YWlsIH5mIH5hY2M6KGhlYWQgOjogYWNjKVxuICAgICAgfCBfIDo6IF8gfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCBsaXN0KVxuICAgIGluXG4gICAgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2M6W11cblxuICBsZXQgZmluZF9hX2R1cCAodHlwZSBlbHQpIGxpc3QgfmNvbXBhcmUgPVxuICAgIGxldCBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBlbHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgZW5kIGluXG4gICAgbGV0IG1vZHVsZSBFbHRfc2V0ID0gU2V0Lk1ha2UgKEVsdCkgaW5cbiAgICBsZXQgcmVjIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0ID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIEVsdF9zZXQubWVtIGhlYWQgc2V0IHRoZW4gU29tZSBoZWFkXG4gICAgICAgICAgZWxzZSBmaW5kX2FfZHVwX2luIHRhaWwgfnNldDooRWx0X3NldC5hZGQgaGVhZCBzZXQpXG4gICAgaW5cbiAgICBmaW5kX2FfZHVwX2luIGxpc3QgfnNldDpFbHRfc2V0LmVtcHR5XG5cbiAgbGV0IGFzc29jX29wdCBrZXkgYWxpc3QgPVxuICAgIG1hdGNoIGFzc29jIGtleSBhbGlzdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgKCogcmVvcmRlcnMgYXJndW1lbnRzIHRvIGltcHJvdmUgdHlwZSBpbmZlcmVuY2UgKilcbiAgbGV0IGl0ZXIgbGlzdCB+ZiA9IGl0ZXIgbGlzdCB+ZlxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcbiAgbGV0IGl0ZXIgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbiAgbGV0IHRvX2xpc3QgdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IFtdIHwgU29tZSB4IC0+IFsgeCBdXG5lbmRcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICBsZXQgYmluZCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gZiBhIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXBfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgaGFuZGxlX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBhIHwgRXJyb3IgZSAtPiBmIGVcbmVuZFxuXG5tb2R1bGUgTm9uRW1wdHlMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogJ2EgbGlzdFxuXG4gIGxldCAoIEAgKSAodDEsIHExKSAodDIsIHEyKSA9ICh0MSwgcTEgQCAodDIgOjogcTIpKVxuICBsZXQgaGQgPSBmc3RcbiAgbGV0IHRvX2xpc3QgKHQsIHEpID0gdCA6OiBxXG4gIGxldCBtYXAgfmYgKHQsIHEpID0gKGYgdCwgTGlzdC5tYXAgfmYgcSlcbmVuZFxuXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpID8oYXBwZW5kID0gZmFsc2UpID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9vdXRcblxuICBsZXQgd3JpdGVfYWxsIGZpbGVuYW1lIH5kYXRhID1cbiAgICB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgaXNfZW1wdHkgKHQgOiB0KSA9IGxlbmd0aCB0ID0gMFxuICBsZXQgcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW5cbiAgbGV0IHN1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6KGxlbmd0aCB0IC0gbGVuKSB+bGVuXG4gIGxldCBkcm9wX3ByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6bGVuIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuICBsZXQgZHJvcF9zdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG5cbiAgbGV0IGlzX3ByZWZpeCB0IH5wcmVmaXggPVxuICAgIGxldCByZWMgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCBwb3MpIChnZXQgcHJlZml4IHBvcylcbiAgICAgICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOihwb3MgKyAxKSB+bGVuXG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggcHJlZml4XG4gICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6MCB+bGVuOihsZW5ndGggcHJlZml4KVxuXG4gIGxldCBpc19zdWZmaXggdCB+c3VmZml4ID1cbiAgICBsZXQgcmVjIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvcyB+c3VmZml4X29mZnNldCA9XG4gICAgICBwb3MgPCAwXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCAoc3VmZml4X29mZnNldCArIHBvcykpIChnZXQgc3VmZml4IHBvcylcbiAgICAgICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvczoocG9zIC0gMSkgfnN1ZmZpeF9vZmZzZXRcbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBzdWZmaXhcbiAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4XG4gICAgICAgICB+cG9zOihsZW5ndGggc3VmZml4IC0gMSlcbiAgICAgICAgIH5zdWZmaXhfb2Zmc2V0OihsZW5ndGggdCAtIGxlbmd0aCBzdWZmaXgpXG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICBsZXQgcmVjIGV4aXN0c19hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPCBsZW4gJiYgKGYgKGdldCB0IHBvcykgfHwgZXhpc3RzX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGV4aXN0c19hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICBsZXQgcmVjIGZvcl9hbGxfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlbiB8fCAoZiAoZ2V0IHQgcG9zKSAmJiBmb3JfYWxsX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIGluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCByaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aFxuICAgIHwgaSAtPiBTb21lIGlcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBsc3BsaXQyIHQgfm9uID1cbiAgICBtYXRjaCBpbmRleF9vcHQgdCBvbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgICBTb21lIChzdWIgdCB+cG9zOjAgfmxlbjppLCBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSkpXG5cbiAgbGV0IGNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IGxvd2VyY2FzZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG4gIGxldCB1bmNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgc3BsaXRfb25fY2hhciB0IH5zZXAgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXIgc2VwIHRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gc3RyaW5nKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICBsZXQgZmluZF9vcHQga2V5IHQgPVxuICAgICAgbWF0Y2ggZmluZCBrZXkgdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoU3RyaW5nKVxuZW5kXG5cbmxldCAoIEAgKSA9IExpc3QuYXBwZW5kXG5sZXQgb3V0cHV0IG9jIGJ5dGVzIH5wb3MgfmxlbiA9IG91dHB1dCBvYyBieXRlcyBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgfnBvcyB+bGVuID0gb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgcG9zIGxlblxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBMID0gQXN0bGliLkxvY2F0aW9uXG5cbnR5cGUgdCA9IGxvY2F0aW9uID0ge1xuICBsb2Nfc3RhcnQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19lbmQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmxldCBpbl9maWxlIG5hbWUgPVxuICBsZXQgbG9jID0geyBwb3NfZm5hbWUgPSBuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IC0xIH0gaW5cbiAgeyBsb2Nfc3RhcnQgPSBsb2M7IGxvY19lbmQgPSBsb2M7IGxvY19naG9zdCA9IHRydWUgfVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxvYyBmbiA9XG4gIGxldCBsb2Nfc3RhcnQgPSB7IGxvYy5sb2Nfc3RhcnQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIGxldCBsb2NfZW5kID0geyBsb2MubG9jX2VuZCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQ7IGxvY19lbmQgfVxuXG5sZXQgbm9uZSA9IGluX2ZpbGUgXCJfbm9uZV9cIlxuXG5sZXQgaW5pdCBsZXhidWYgZm5hbWUgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfVxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgZm10ID0gTC5yYWlzZV9lcnJvcmYgP2xvYyBmbXRcbmxldCByZXBvcnRfZXhjZXB0aW9uID0gTC5yZXBvcnRfZXhjZXB0aW9uXG5cbmxldCBvZl9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAge1xuICAgIGxvY19zdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICBsb2NfZW5kID0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gIH1cblxubGV0IHByaW50IHBwZiB0ID1cbiAgU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcIlxuICAgIHQubG9jX3N0YXJ0LnBvc19mbmFtZSB0LmxvY19zdGFydC5wb3NfbG51bVxuICAgICh0LmxvY19zdGFydC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG4gICAgKHQubG9jX2VuZC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG5cbnR5cGUgbm9ucmVjICdhIGxvYyA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IHQgfVxuXG5sZXQgY29tcGFyZV9wb3MgcDEgcDIgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV0IGNvbHVtbiBwID1cbiAgICAoKiBNYW51YWwgZXh0cmFjdDpcbiAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc19jbnVtIGFuZCBwb3NfYm9sIGlzIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0XG4gICAgICAgd2l0aGluIHRoZSBsaW5lIChpLmUuIHRoZSBjb2x1bW4gbnVtYmVyLCBhc3N1bWluZyBlYWNoIGNoYXJhY3RlciBpc1xuICAgICAgIG9uZSBjb2x1bW4gd2lkZSkuICopXG4gICAgcC5wb3NfY251bSAtIHAucG9zX2JvbFxuICBpblxuICBtYXRjaCBJbnQuY29tcGFyZSBwMS5wb3NfbG51bSBwMi5wb3NfbG51bSB3aXRoXG4gIHwgMCAtPiBJbnQuY29tcGFyZSAoY29sdW1uIHAxKSAoY29sdW1uIHAyKVxuICB8IG4gLT4gblxuXG5sZXQgbWluX3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyIDw9IDAgdGhlbiBwMSBlbHNlIHAyXG5sZXQgbWF4X3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyID49IDAgdGhlbiBwMSBlbHNlIHAyXG5cbmxldCBjb21wYXJlIGxvYzEgbG9jMiA9XG4gIG1hdGNoIGNvbXBhcmVfcG9zIGxvYzEubG9jX3N0YXJ0IGxvYzIubG9jX3N0YXJ0IHdpdGhcbiAgfCAwIC0+IGNvbXBhcmVfcG9zIGxvYzEubG9jX2VuZCBsb2MyLmxvY19lbmRcbiAgfCBuIC0+IG5cblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIGluY2x1ZGUgUHB4bGliX2FzdC5Mb2NhdGlvbl9lcnJvclxuXG4gIGxldCBjcmVhdGVmIH5sb2MgZm10ID0gRm9ybWF0Lmthc3ByaW50ZiAoZnVuIHN0ciAtPiBtYWtlIH5sb2MgfnN1YjpbXSBzdHIpIGZtdFxuZW5kXG5cbmxldCBlcnJvcl9leHRlbnNpb25mIH5sb2MgZm10ID1cbiAgRm9ybWF0Lmthc3ByaW50ZlxuICAgIChmdW4gc3RyIC0+IEVycm9yLnRvX2V4dGVuc2lvbiBAQCBFcnJvci5tYWtlIH5sb2MgfnN1YjpbXSBzdHIpXG4gICAgZm10XG5cbmV4Y2VwdGlvbiBFcnJvciA9IEwuRXJyb3JcblxubGV0ICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgfCBFcnJvciBlIC0+IFNvbWUgKEVycm9yLm1lc3NhZ2UgZSlcbiAgICB8IF8gLT4gTm9uZSlcbiIsIm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gRXhwZWN0ZWQgb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgZmFpbCBsb2MgZXhwZWN0ZWQgPSByYWlzZSAoRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpKVxuXG50eXBlIGNvbnRleHQgPSB7XG4gICgqIFttYXRjaGVkXSBjb3VudHMgaG93IG1hbnkgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBtYXRjaGVkLiBUaGlzIGlzIHVzZWQgdG8gZmluZCB3aGF0XG4gICAgIHBhdHRlcm4gbWF0Y2hlcyB0aGUgbW9zdCBzb21lIHBpZWNlIG9mIGFzdCBpbiBbQXN0X3BhdHRlcm4uYWx0XS4gSW4gdGhlIGNhc2Ugd2hlcmVcbiAgICAgYWxsIGJyYW5jaGVzIGZhaWwgdG8gbWF0Y2gsIHdlIHJlcG9ydCB0aGUgZXJyb3IgZnJvbSB0aGUgb25lIHRoYXQgbWF0Y2hlcyB0aGVcbiAgICAgbW9zdC5cblxuICAgICBUaGlzIGlzIG9ubHkgaW5jcmVtZW50ZWQgYnkgY29tYmluYXRvcnMgdGhhdCBjYW4gZmFpbC4gKilcbiAgbXV0YWJsZSBtYXRjaGVkIDogaW50O1xufVxuXG50eXBlICgnbWF0Y2hlZF92YWx1ZSwgJ2ssICdrX3Jlc3VsdCkgdCA9XG4gIHwgVCBvZiAoY29udGV4dCAtPiBMb2NhdGlvbi50IC0+ICdtYXRjaGVkX3ZhbHVlIC0+ICdrIC0+ICdrX3Jlc3VsdClcbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTSA9XG4gIHN0cnVjdFxuICAgIGxldCBhdHRyaWJ1dGUgfmxvYyAgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB+bG9jICB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfmxvYyAgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB+bG9jICB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9tYXRjaCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGZpZWxkIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZm9yIH5sb2MgIHgwIHgxIHgyIHgzIHg0ID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb2VyY2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VuZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXNzZXJ0IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcGFjayB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG9wIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgfmxvYyAgfm5hbWUgIH5raW5kICA9XG4gICAgICB7XG4gICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBpbmNsdWRlX2luZm9zIH5sb2MgIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+bXV0YWJsZV8gIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgbGV0b3AgfmxldF8gIH5hbmRzICB+Ym9keSAgPSB7IGxldF87IGFuZHM7IGJvZHkgfVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgIH5lbmRfICB+Z2hvc3QgID1cbiAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9XG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5sb2MgIH5uYW1lICB+ZXhwciAgPVxuICAgICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBbXTsgcG1iX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH50eXBlXyAgPVxuICAgICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwZV87IHBtZF9hdHRyaWJ1dGVzID0gW107IHBtZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgfm5hbWUgIH5tYW5pZmVzdCAgPVxuICAgICAge1xuICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV93aXRoIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBvdGFnIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfVxuICAgIGxldCBvaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9XG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgfmV4cHIgIH5vdmVycmlkZSAgPVxuICAgICAge1xuICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgIH5sbnVtICB+Ym9sICB+Y251bSAgPVxuICAgICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSBsbnVtOyBwb3NfYm9sID0gYm9sOyBwb3NfY251bSA9IGNudW0gfVxuICAgIGxldCBydGFnIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpIH1cbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICB+bmFtZSAgfmFyZyAgPVxuICAgICAgeyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+cGFyYW1zICB+Y3N0cnMgIH5raW5kICB+cHJpdmF0ZV8gXG4gICAgICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leGNlcHRpb24gfmxvYyAgY29uc3RydWN0b3IgPVxuICAgICAge1xuICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICB+cGF0aCAgfnBhcmFtcyAgfmNvbnN0cnVjdG9ycyAgfnByaXZhdGVfICA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5sb2MgIH5wYXQgIH5leHByICA9XG4gICAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBbXTsgcHZiX2xvYyA9IGxvYyB9XG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gIH5wcmltICA9XG4gICAgICB7XG4gICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCB4MSA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfVxuICAgIGxldCBwZGlyX2lkZW50IHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9ldmFsIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl92YWx1ZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfICB+bWFuaWZlc3QgXG4gICAgICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgKCkgPVxuICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIlBweGxpYi5Mb25naWRlbnQucGFyc2U6ICVTXCIgcylcbiAgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDwgMSB0aGVuIGludmFsaWQgKCk7XG4gIGxldCBvcGVuX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKCcgaW5cbiAgbGV0IGNsb3NlX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKScgaW5cbiAgbWF0Y2ggKHMuWzBdLCBvcGVuX3BhciwgY2xvc2VfcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgTm9uZSwgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE5vbmUsIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBpbnZhbGlkICgpXG4gIHwgXywgU29tZSBsLCBTb21lIHIgLT4gKFxuICAgICAgaWYgSW50LihyIDw+IFN0cmluZy5sZW5ndGggcyAtIDEpIHRoZW4gaW52YWxpZCAoKTtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGlmIEludC4ociA9IGwgKyAxKSB0aGVuIFwiKClcIlxuICAgICAgICBlbHNlIFN0cmluZy50cmltIChTdHJpbmcuc3ViIHMgfnBvczoobCArIDEpIH5sZW46KHIgLSBsIC0gMSkpXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkICgpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgcmVjIHBsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG5sZXQgb3B0aW9uYWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE9wdGlvbmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcHRpb25hbFwiKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgfnBheWxvYWQ6KFQgcGF5bG9hZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICB+cGF0OihUIHBhdCkgIH5leHA6KFQgZXhwKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gb3AgY3R4ICh4LnBib3Bfb3ApLmxvYyAoeC5wYm9wX29wKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbmxldCBjYXNlIH5saHM6KFQgbGhzKSAgfmd1YXJkOihUIGd1YXJkKSAgfnJoczooVCByaHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcmhzIGN0eCBsb2MgeC5wY19yaHMgayBpbiBrKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbmxldCBwY2xfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbmxldCBwY2xfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBjbF9sZXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjbF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY2ZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY2ZfaW5pdGlhbGl6ZXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5pdGlhbGl6ZXJcIikpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjZmtfdmlydHVhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZpcnR1YWxcIilcbmxldCBjZmtfY29uY3JldGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbmNyZXRlXCIpXG5sZXQgY2xhc3NfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNpX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjaV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjbGFzc19pbmZvcyB+dmlydDooVCB2aXJ0KSAgfnBhcmFtczooVCBwYXJhbXMpICB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFRcbiAgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2lfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSB2aXJ0IGN0eCBsb2MgeC5wY2lfdmlydCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wY2lfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBjaV9leHByIGsgaW4gaykpXG5sZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmOihUIHNlbGYpICB+ZmllbGRzOihUIGZpZWxkcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3NpZ19maWVsZHMgayBpbiBrKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgfmZpZWxkczooVCBmaWVsZHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBjdHlfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbmxldCBwY3RmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbmxldCBwY3RmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZWdlclwiKVxubGV0IHBjb25zdF9jaGFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfY2hhciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2hhclwiKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG5sZXQgcGNvbnN0X2Zsb2F0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbmxldCBwY3N0cl9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnZhcnM6KFQgdmFycykgIH5hcmdzOihUIGFyZ3MpIFxuICB+cmVzOihUIHJlcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG5sZXQgcHR5cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG5sZXQgcHR5cF9jbGFzcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHR5cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHVwdG8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVXB0byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVXB0b1wiKVxubGV0IGRvd250b18gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgRG93bnRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJEb3dudG9cIilcbmxldCBwZGlyYV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGRpcl9zdHJpbmcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfc3RyaW5nIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbmxldCBwZGlyX2ludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG5sZXQgcGV4cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxubGV0IHBleHBfbGV0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxubGV0IHBleHBfZnVuY3Rpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0aW9uXCIpKVxubGV0IHBleHBfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtYXRjaFwiKSlcbmxldCBwZXhwX3RyeSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwZXhwX3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBleHBfZmllbGQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmllbGRcIikpXG5sZXQgcGV4cF9zZXRmaWVsZCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxubGV0IHBleHBfc2VxdWVuY2UgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG5sZXQgcGV4cF9mb3IgKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpIChUIGY0KSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxubGV0IHBleHBfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvZXJjZVwiKSlcbmxldCBwZXhwX3NlbmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZW5kXCIpKVxubGV0IHBleHBfbmV3IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX25ldyB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld1wiKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxubGV0IHBleHBfbGV0bW9kdWxlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG5sZXQgcGV4cF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxubGV0IHBleHBfbmV3dHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBleHBfbGV0b3AgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0b3AgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG9wXCIpKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgfmtpbmQ6KFQga2luZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnBleHRfa2luZCBrIGluIGspKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbmxldCBwZXh0X3JlYmluZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWJpbmRcIilcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbmxldCBuYW1lZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+bXV0YWJsZV86KFQgbXV0YWJsZV8pICB+dHlwZV86KFRcbiAgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGxkX25hbWUpLmxvYyAoeC5wbGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxubGV0IGxldG9wIH5sZXRfOihUIGxldF8pICB+YW5kczooVCBhbmRzKSAgfmJvZHk6KFQgYm9keSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBib2R5IGN0eCBsb2MgeC5ib2R5IGsgaW4gaylcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICB+ZW5kXzooVCBlbmRfKSAgfmdob3N0OihUIGdob3N0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBlbmRfIGN0eCBsb2MgeC5sb2NfZW5kIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbmxldCBsZG90IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxubGV0IGxhcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFQgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBtYl9leHByIGsgaW4gaykpXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG1kX3R5cGUgayBpbiBrKSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG5sZXQgcG1vZF9mdW5jdG9yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcG1vZF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCAoeC5wbXNfbWFuaWZlc3QpLmxvYyAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGspKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbmxldCBwbXR5X2Z1bmN0b3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG5sZXQgcG10eV93aXRoIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxubGV0IHBtdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3RhZ1wiKSlcbmxldCBvaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9pbmhlcml0XCIpKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBvdmVycmlkZSBjdHggbG9jIHgucG9wZW5fb3ZlcnJpZGUgayBpbiBrKSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBwcGF0X2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHBhdF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBwYXRfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBwYXRfb3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcHBhdF90eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbmxldCBwcGF0X2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwcGF0X29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBzdHIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBTdHIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTdHJcIilcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxubGV0IHBwYXQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgfmxudW06KFQgbG51bSkgIH5ib2w6KFQgYm9sKSAgfmNudW06KFQgY251bSkgXG4gID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG5sZXQgcmluaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSaW5oZXJpdFwiKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbmxldCBwc2lnX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc2lnX21vZHN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc2lnX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc2lnX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc2lnX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgcHN0cl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc3RyX2V2YWwgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJldmFsXCIpXG5sZXQgcHN0cl92YWx1ZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzdHJfcHJpbWl0aXZlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInByaW1pdGl2ZVwiKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc3RyX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc3RyX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc3RyX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICB+YXJnOihUIGFyZykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBkaXJfbmFtZSkubG9jICh4LnBkaXJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxubGV0IHB0b3BfZGVmIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdG9wX2RlZiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVmXCIpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnBhcmFtczooVCBwYXJhbXMpICB+Y3N0cnM6KFQgY3N0cnMpIFxuICB+a2luZDooVCBraW5kKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucHR5cGVfbmFtZSkubG9jICh4LnB0eXBlX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlwZV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluIGspKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICB+cGFyYW1zOihUIHBhcmFtcykgIH5jb25zdHJ1Y3RvcnM6KFRcbiAgY29uc3RydWN0b3JzKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2MgKHgucHR5ZXh0X3BhdGgpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlleHRfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlleHRfcHJpdmF0ZSBrIGluIGspKVxubGV0IHB0eXBlX2Fic3RyYWN0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhYnN0cmFjdFwiKVxubGV0IHB0eXBlX3ZhcmlhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIilcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICB+ZXhwcjooVCBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICB+cHJpbTooVCBwcmltKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wdmFsX25hbWUpLmxvYyAoeC5wdmFsX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG5sZXQgY292YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ292YXJpYW50XCIpXG5sZXQgY29udHJhdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb250cmF2YXJpYW50XCIpXG5sZXQgbm92YXJpYW5jZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb1ZhcmlhbmNlXCIpXG5sZXQgdmlydHVhbF8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVmlydHVhbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVmlydHVhbFwiKVxubGV0IGNvbmNyZXRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvbmNyZXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb25jcmV0ZVwiKVxubGV0IHB3aXRoX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwd2l0aF9tb2R0eXBlc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXN0X3BhdHRlcm4wXG5cbmxldCBzYXZlX2NvbnRleHQgY3R4ID0gY3R4Lm1hdGNoZWRcbmxldCByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cCA9IGN0eC5tYXRjaGVkIDwtIGJhY2t1cFxubGV0IGluY3JfbWF0Y2hlZCBjID0gYy5tYXRjaGVkIDwtIGMubWF0Y2hlZCArIDFcblxubGV0IHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIHRyeSBPayAoZiB7IG1hdGNoZWQgPSAwIH0gbG9jIHggaylcbiAgd2l0aCBFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkgLT4gKFxuICAgIG1hdGNoIG9uX2Vycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIiVzIGV4cGVjdGVkXCIgZXhwZWN0ZWQsIFtdKVxuICAgIHwgU29tZSBmIC0+IE9rIChmICgpKSlcblxubGV0IHBhcnNlIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgbWF0Y2ggcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrIHdpdGhcbiAgfCBPayByIC0+IHJcbiAgfCBFcnJvciAociwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgclxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4wLnQgKiAnYiAtPiAoJ2EsICdjKSB0XG5cbiAgbGV0IGNyZWF0ZSB0IGYgPSBUICh0LCBmKVxuICBsZXQgcGFyc2VfcmVzIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZV9yZXMgdCBsb2MgeCBmXG4gIGxldCBwYXJzZSAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2UgdCBsb2MgeCBmXG5lbmRcblxubGV0IF9fID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB4KVxuXG5sZXQgX18nID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHsgbG9jOyB0eHQgPSB4IH0pXG5cbmxldCBkcm9wID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgXyBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgaylcblxubGV0IGFzX18gKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4IChrIHgpIGluXG4gICAgICBrKVxuXG5sZXQgY3N0IH50b19zdHJpbmcgPyhlcXVhbCA9IFBvbHkuZXF1YWwpIHYgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaWYgZXF1YWwgeCB2IHRoZW4gKFxuICAgICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgICBrKVxuICAgICAgZWxzZSBmYWlsIGxvYyAodG9fc3RyaW5nIHYpKVxuXG5sZXQgaW50IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQudG9fc3RyaW5nIHZcbmxldCBjaGFyIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlQ1wiKSB2XG5sZXQgc3RyaW5nIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlU1wiKSB2XG5sZXQgZmxvYXQgdiA9IGNzdCB+dG9fc3RyaW5nOkZsb2F0LnRvX3N0cmluZyB2XG5sZXQgaW50MzIgdiA9IGNzdCB+dG9fc3RyaW5nOkludDMyLnRvX3N0cmluZyB2XG5sZXQgaW50NjQgdiA9IGNzdCB+dG9fc3RyaW5nOkludDY0LnRvX3N0cmluZyB2XG5sZXQgbmF0aXZlaW50IHYgPSBjc3QgfnRvX3N0cmluZzpOYXRpdmVpbnQudG9fc3RyaW5nIHZcbmxldCBib29sIHYgPSBjc3QgfnRvX3N0cmluZzpCb29sLnRvX3N0cmluZyB2XG5cbmxldCBib29sJyAoVCBmdW5jKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgXCJ0cnVlXCIgLT4gZnVuYyBjdHggbG9jIHRydWUga1xuICAgICAgfCBcImZhbHNlXCIgLT4gZnVuYyBjdHggbG9jIGZhbHNlIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkJvb2xcIilcblxubGV0IGZhbHNlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmFsc2VcIilcblxubGV0IHRydWVfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRydWVcIilcblxubGV0IG5pbCA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiW11cIilcblxubGV0ICggXjo6ICkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgeDAgOjogeDEgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIjo6XCIpXG5cbmxldCBub25lID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbmVcIilcblxubGV0IHNvbWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIHgwIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiU29tZVwiKVxuXG5sZXQgcGFpciAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGspXG5cbmxldCAoICoqICkgPSBwYWlyXG5cbmxldCB0cmlwbGUgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIsIHgzKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICBrKVxuXG5sZXQgYWx0IChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGJhY2t1cCA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgIHRyeSBmMSBjdHggbG9jIHgga1xuICAgICAgd2l0aCBlMSAtPiAoXG4gICAgICAgIGxldCBtMSA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXA7XG4gICAgICAgIHRyeSBmMiBjdHggbG9jIHgga1xuICAgICAgICB3aXRoIGUyIC0+XG4gICAgICAgICAgbGV0IG0yID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICAgIGlmIG0xID49IG0yIHRoZW4gKFxuICAgICAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBtMTtcbiAgICAgICAgICAgIHJhaXNlIGUxKVxuICAgICAgICAgIGVsc2UgcmFpc2UgZTIpKVxuXG5sZXQgKCB8fHwgKSA9IGFsdFxubGV0IG1hcCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBrKSlcbmxldCBtYXAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGxvYyBrKSlcbmxldCBtYXBfcmVzdWx0IChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgKGZ1bmMgY3R4IGxvYyB4IGspKVxubGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbmxldCBtYXAwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIGYpKVxubGV0IG1hcDEgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgYSkpKVxuXG5sZXQgbWFwMiAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGEgYikpKVxuXG5sZXQgbWFwMCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgKGYgbG9jKSkpXG5cbmxldCBtYXAxJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBsb2MgYSkpKVxuXG5sZXQgbWFwMicgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBsb2MgYSBiKSkpXG5cbmxldCBtYXBfdmFsdWUgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIHgpIGspXG5sZXQgbWFwX3ZhbHVlJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgbG9jIHgpIGspXG5cbmxldCBhbHRfb3B0aW9uIHNvbWUgbm9uZSA9XG4gIGFsdCAobWFwMSBzb21lIH5mOihmdW4geCAtPiBTb21lIHgpKSAobWFwMCBub25lIH5mOk5vbmUpXG5cbmxldCBtYW55IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyBsIGsgLT5cbiAgICAgIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGsgKExpc3QucmV2IGFjY3UpXG4gICAgICAgIHwgeCA6OiB4cyAtPiBmIGN0eCBsb2MgeCAoZnVuIHggLT4gYXV4ICh4IDo6IGFjY3UpIHhzKVxuICAgICAgaW5cbiAgICAgIGF1eCBbXSBsKVxuXG5sZXQgbG9jIChUIGYpID0gVCAoZnVuIGN0eCBfbG9jICh4IDogXyBMb2MudCkgayAtPiBmIGN0eCB4LmxvYyB4LnR4dCBrKVxubGV0IHBhY2swIHQgPSBtYXAgdCB+ZjooZnVuIGYgLT4gZiAoKSlcbmxldCBwYWNrMiB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSAtPiBmICh4LCB5KSlcbmxldCBwYWNrMyB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSB6IC0+IGYgKHgsIHksIHopKVxuXG5pbmNsdWRlIEFzdF9wYXR0ZXJuX2dlbmVyYXRlZFxuXG5sZXQgZWNoYXIgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgZXN0cmluZyB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBlZmxvYXQgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgcGNoYXIgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgcHN0cmluZyB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBwZmxvYXQgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgaW50JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKGludF9vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQzMicgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQzMi5vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQ2NCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQ2NC5vZl9zdHJpbmcgeCkgaylcblxubGV0IG5hdGl2ZWludCcgKFQgZikgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChOYXRpdmVpbnQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBjb25zdF9pbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQnIHQpIG5vbmVcbmxldCBjb25zdF9pbnQzMiB0ID0gcGNvbnN0X2ludGVnZXIgKGludDMyJyB0KSAoc29tZSAoY2hhciAnbCcpKVxubGV0IGNvbnN0X2ludDY0IHQgPSBwY29uc3RfaW50ZWdlciAoaW50NjQnIHQpIChzb21lIChjaGFyICdMJykpXG5sZXQgY29uc3RfbmF0aXZlaW50IHQgPSBwY29uc3RfaW50ZWdlciAobmF0aXZlaW50JyB0KSAoc29tZSAoY2hhciAnbicpKVxubGV0IGVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IGVpbnQzMiB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBlaW50NjQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgZW5hdGl2ZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgcGludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgcGludDMyIHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IHBpbnQ2NCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBwbmF0aXZlaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBzaW5nbGVfZXhwcl9wYXlsb2FkIHQgPSBwc3RyIChwc3RyX2V2YWwgdCBuaWwgXjo6IG5pbClcbmxldCBub19sYWJlbCB0ID0gY3N0IEFzdHR5cGVzLk5vbGFiZWwgfnRvX3N0cmluZzooZnVuIF8gLT4gXCJOb2xhYmVsXCIpICoqIHRcbmxldCBlYm9vbCB0ID0gcGV4cF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcbmxldCBwYm9vbCB0ID0gcHBhdF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcblxubGV0IGV4dGVuc2lvbiAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoKG5hbWUgOiBfIExvYy50KSwgcGF5bG9hZCkgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbmFtZS5sb2MgbmFtZS50eHQgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHBheWxvYWQgayBpblxuICAgICAgaylcblxubGV0IHJlYyBwYXJzZV9lbGlzdCAoZSA6IFBhcnNldHJlZS5leHByZXNzaW9uKSBhY2MgPVxuICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXM7XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIE5vbmUpIC0+IExpc3QucmV2IGFjY1xuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBhcmcpIC0+IChcbiAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBhcmcucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgbWF0Y2ggYXJnLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfdHVwbGUgWyBoZDsgdGwgXSAtPiBwYXJzZV9lbGlzdCB0bCAoaGQgOjogYWNjKVxuICAgICAgfCBfIC0+IGZhaWwgYXJnLnBleHBfbG9jIFwibGlzdFwiKVxuICB8IF8gLT4gZmFpbCBlLnBleHBfbG9jIFwibGlzdFwiXG5cbmxldCBlbGlzdCAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IGwgPSBwYXJzZV9lbGlzdCBlIFtdIGluXG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayAoTGlzdC5tYXAgbCB+ZjooZnVuIHggLT4gZiBjdHggeC5QYXJzZXRyZWUucGV4cF9sb2MgeCAoZnVuIHggLT4geCkpKSlcblxubGV0IGVzZXF1ZW5jZSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IHJlYyBwYXJzZV9zZXEgZXhwciBhY2MgPVxuICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoZXhwciwgbmV4dCkgLT4gcGFyc2Vfc2VxIG5leHQgKGV4cHIgOjogYWNjKVxuICAgICAgICB8IF8gLT4gZXhwciA6OiBhY2NcbiAgICAgIGluXG4gICAgICBrXG4gICAgICAgIChMaXN0LnJldl9tYXAgKHBhcnNlX3NlcSBlIFtdKSB+ZjooZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICBmIGN0eCBleHByLnBleHBfbG9jIGV4cHIgKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBvZl9mdW5jIGYgPSBUIGZcbmxldCB0b19mdW5jIChUIGYpID0gZlxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBwb2x5X2VxdWFsIGEgYiA9XG4gIGxldCBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiBfIC0+IHRcbiAgZW5kIGluXG4gIFN0ZHBweC5Qb2x5LmVxdWFsIChQb2x5LlQgYSkgKFBvbHkuVCBiKVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiB0XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gdFxuICAgIHwgVHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiB0XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ2xhc3NfaW5mb3MgOiBfIGNsYXNzX2luZm9zIHRcbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiB0XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiB0XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiB0XG4gICAgfCBJbmNsdWRlX2luZm9zIDogXyBpbmNsdWRlX2luZm9zIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgVmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgdFxuICAgIHwgTW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyB0XG4gICAgfCBQc3RyX2V2YWwgOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc3RyX2V4dGVuc2lvbiA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgUnRhZyA6IHJvd19maWVsZCB0XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCA6IG9iamVjdF9maWVsZCB0XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uID0gTGFiZWxfZGVjbGFyYXRpb25cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZGVjbGFyYXRpb24gPSBUeXBlX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA9IFR5cGVfZXh0ZW5zaW9uXG4gIGxldCB0eXBlX2V4Y2VwdGlvbiA9IFR5cGVfZXhjZXB0aW9uXG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFZhbHVlX2Rlc2NyaXB0aW9uXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNsYXNzX2luZm9zID0gQ2xhc3NfaW5mb3NcbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfZGVjbGFyYXRpb25cbiAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgbGV0IG9wZW5fZGVzY3JpcHRpb24gPSBPcGVuX2Rlc2NyaXB0aW9uXG4gIGxldCBpbmNsdWRlX2luZm9zID0gSW5jbHVkZV9pbmZvc1xuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgdmFsdWVfYmluZGluZyA9IFZhbHVlX2JpbmRpbmdcbiAgbGV0IG1vZHVsZV9iaW5kaW5nID0gTW9kdWxlX2JpbmRpbmdcbiAgbGV0IHBzdHJfZXZhbCA9IFBzdHJfZXZhbFxuICBsZXQgcHN0cl9leHRlbnNpb24gPSBQc3RyX2V4dGVuc2lvblxuICBsZXQgcHNpZ19leHRlbnNpb24gPSBQc2lnX2V4dGVuc2lvblxuICBsZXQgcnRhZyA9IFJ0YWdcbiAgbGV0IG9iamVjdF90eXBlX2ZpZWxkID0gT2JqZWN0X3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X3BzdHJfZXZhbCBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXZhbCAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXZhbFwiXG5cbiAgbGV0IGdldF9wc3RyX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfcHNpZ19leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzaWdfZGVzYyB3aXRoXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzaWdfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geC5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geC5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHgucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHgucHR5ZXhuX2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB4LnBleHRfYXR0cmlidXRlc1xuICAgIHwgUGF0dGVybiAtPiB4LnBwYXRfYXR0cmlidXRlc1xuICAgIHwgQ29yZV90eXBlIC0+IHgucHR5cF9hdHRyaWJ1dGVzXG4gICAgfCBFeHByZXNzaW9uIC0+IHgucGV4cF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB4LnB2YWxfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZSAtPiB4LnBjdHlfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB4LnBjdGZfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfaW5mb3MgLT4geC5wY2lfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZXhwciAtPiB4LnBjbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19maWVsZCAtPiB4LnBjZl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZSAtPiB4LnBtdHlfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHgucG1kX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHgucG10ZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHgucG1zX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB4LnBpbmNsX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9leHByIC0+IHgucG1vZF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHgucHZiX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHgucG1iX2F0dHJpYnV0ZXNcbiAgICB8IFBzdHJfZXZhbCAtPiBzbmQgKGdldF9wc3RyX2V2YWwgeClcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHgpXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc2lnX2V4dGVuc2lvbiB4KVxuICAgIHwgUnRhZyAtPiB4LnByZl9hdHRyaWJ1dGVzXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB4LnBvZl9hdHRyaWJ1dGVzXG5cbiAgbGV0IHNldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfaW5mb3MgLT4geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19leHByIC0+IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfYmluZGluZyAtPiB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUHN0cl9ldmFsIC0+XG4gICAgICAgIHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZ2V0X3BzdHJfZXZhbCB4IHw+IGZzdCwgYXR0cnMpIH1cbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFJ0YWcgLT4geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiBcImxhYmVsIGRlY2xhcmF0aW9uXCJcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IFwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4gXCJ0eXBlIGV4dGVuc2lvblwiXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiBcInR5cGUgZXhjZXB0aW9uXCJcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4gXCJ2YWx1ZVwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDbGFzc19pbmZvcyAtPiBcImNsYXNzIGRlY2xhcmF0aW9uXCJcbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IFwibW9kdWxlIHN1YnN0aXR1dGlvblwiXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IFwib3BlblwiXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IFwib3BlblwiXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IFwiaW5jbHVkZVwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4gXCJ2YWx1ZSBiaW5kaW5nXCJcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IFwibW9kdWxlIGJpbmRpbmdcIlxuICAgIHwgUHN0cl9ldmFsIC0+IFwidG9wbGV2ZWwgZXhwcmVzc2lvblwiXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIGV4dGVuc2lvblwiXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIHNpZ25hdHVyZSBleHRlbnNpb25cIlxuICAgIHwgUnRhZyAtPiBcInBvbHltb3JwaGljIHZhcmlhbnQgdGFnXCJcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IFwib2JqZWN0IHR5cGUgZmllbGRcIlxuXG4gICgqXG4gIGxldCBwYXR0ZXJuIDogdHlwZSBhIGIgYyBkLiBhIHRcbiAgICAtPiAoYXR0cmlidXRlcywgYiwgYykgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBjLCBkKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGIsIGQpIEFzdF9wYXR0ZXJuLnQgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gICAgICAgLT4gQXN0X3BhdHRlcm4ucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IEFzdF9wYXR0ZXJuLnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAgICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yICAgLT4gQXN0X3BhdHRlcm4ucGV4dF9hdHRyaWJ1dGVzXG4qKVxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG5tb2R1bGUgRmxvYXRpbmdfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSB0IHggPVxuICAgIG1hdGNoIGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSB0IHggd2l0aFxuICAgIHwgU29tZSBhIC0+IGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlXCJcblxuICBsZXQgcmVwbGFjZV9ieV9kdW1teSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYSA9XG4gICAgbGV0IGR1bW15X2V4dCA9ICh7IHR4dCA9IFwiXCI7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSwgUFN0ciBbXSkgaW5cbiAgICBmdW4gdCB4IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZHVtbXlfZXh0IH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbnR5cGUgcGFja2VkX2NvbnRleHQgPVxuICB8IE9uX2l0ZW0gOiBfIENvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuICB8IEZsb2F0aW5nIDogXyBGbG9hdGluZ19jb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcblxudHlwZSBfIHBheWxvYWRfcGFyc2VyID1cbiAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAocGF5bG9hZCwgJ2EsICdiKSBBc3RfcGF0dGVybi50XG4gICAgICAqIChhdHRyX2xvYzpMb2NhdGlvbi50IC0+IG5hbWVfbG9jOkxvY2F0aW9uLnQgLT4gJ2EpXG4gICAgICAtPiAnYiBwYXlsb2FkX3BhcnNlclxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xufVxuXG50eXBlIHBhY2tlZCA9IFQgOiAoXywgXykgdCAtPiBwYWNrZWRcblxubGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxubGV0IGNvbnRleHQgdCA9IHQuY29udGV4dFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiYXR0cmlidXRlXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuY3Rpb25cbiAgICB8IE9uX2l0ZW0gdCAtPiBTb21lIChDb250ZXh0LmRlc2MgdClcbiAgICB8IEZsb2F0aW5nIHQgLT4gU29tZSAoRmxvYXRpbmdfY29udGV4dC5kZXNjIHQgXiBcIiAoZmxvYXRpbmcpXCIpKVxuXG5sZXQgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICB7XG4gICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgY29udGV4dDtcbiAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICB9XG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKVxuXG5sZXQgZGVjbGFyZV93aXRoX25hbWVfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2MgLT5cbiAgICAgIGsgfm5hbWVfbG9jKVxuXG5sZXQgZGVjbGFyZV93aXRoX2F0dHJfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2Mgfm5hbWVfbG9jOl8gLT5cbiAgICAgIGsgfmF0dHJfbG9jKVxuXG50eXBlICdhIGZsYWcgPSAoJ2EsIHVuaXQpIHRcblxubGV0IGRlY2xhcmVfZmxhZyBuYW1lIGNvbnRleHQgPVxuICBsZXQgcGF5bG9hZF9wYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSBpblxuICBsZXQgY29udGludWF0aW9uIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfID0gKCkgaW5cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXlsb2FkX3BhdHRlcm4gY29udGludWF0aW9uXG5cbm1vZHVsZSBBdHRyaWJ1dGVfdGFibGUgPSBTdGRsaWIuSGFzaHRibC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxvY1xuXG4gIGxldCBub3JtYWxpemUgdCA9IHsgdCB3aXRoIGxvYyA9IHsgdC5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gfVxuICBsZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIChub3JtYWxpemUgdClcbiAgbGV0IGVxdWFsIHggeSA9IFBvbHkuZXF1YWwgKG5vcm1hbGl6ZSB4KSAobm9ybWFsaXplIHkpXG5lbmQpXG5cbmxldCBub3Rfc2VlbiA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgMTI4XG5sZXQgbWFya19hc19zZWVuIHsgYXR0cl9uYW1lOyBfIH0gPSBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIG5vdF9zZWVuIGF0dHJfbmFtZVxubGV0IG1hcmtfYXNfaGFuZGxlZF9tYW51YWxseSA9IG1hcmtfYXNfc2VlblxuXG5sZXQgZXhwbGljaXRseV9kcm9wID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSA9IG1hcmtfYXNfc2VlblxuICBlbmRcblxubGV0IGdldF9pbnRlcm5hbCA9XG4gIGxldCByZWMgZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBsb25nZXN0X21hdGNoID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVzIHdpdGhcbiAgICB8IFtdIC0+IE9rIGxvbmdlc3RfbWF0Y2hcbiAgICB8ICh7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBhcyBhdHRyKSA6OiByZXN0IC0+XG4gICAgICAgIGlmIE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dCB0aGVuXG4gICAgICAgICAgbWF0Y2ggbG9uZ2VzdF9tYXRjaCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICB8IFNvbWUgeyBhdHRyX25hbWUgPSBuYW1lJzsgXyB9IC0+XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIG5hbWUudHh0IGluXG4gICAgICAgICAgICAgIGxldCBsZW4nID0gU3RyaW5nLmxlbmd0aCBuYW1lJy50eHQgaW5cbiAgICAgICAgICAgICAgaWYgbGVuID4gbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPCBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCJEdXBsaWNhdGVkIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2UgZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gIGluXG4gIGZ1biB0IGF0dHJpYnV0ZXMgLT4gZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBOb25lXG5cbmxldCBjb252ZXJ0ID8oZG9fbWFya19hc19zZWVuID0gdHJ1ZSkgcGF0dGVybiBhdHRyID1cbiAgaWYgZG9fbWFya19hc19zZWVuIHRoZW4gbWFya19hc19zZWVuIGF0dHI7XG4gIGxldCAoUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspKSA9IHBhdHRlcm4gaW5cbiAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm5cbiAgICAoQ29tbW9uLmxvY19vZl9wYXlsb2FkIGF0dHIpXG4gICAgYXR0ci5hdHRyX3BheWxvYWRcbiAgICAoayB+YXR0cl9sb2M6YXR0ci5hdHRyX2xvYyB+bmFtZV9sb2M6YXR0ci5hdHRyX25hbWUubG9jKVxuXG5sZXQgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA/ZG9fbWFya19hc19zZWVuID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuXG5sZXQgZ2V0IHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHggPVxuICBtYXRjaCBnZXRfcmVzID9tYXJrX2FzX3NlZW4gdCB4IHdpdGhcbiAgfCBPayAoU29tZSAoKSkgLT4gT2sgdHJ1ZVxuICB8IE9rIE5vbmUgLT4gT2sgZmFsc2VcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuXG5sZXQgaGFzX2ZsYWcgdCA/bWFya19hc19zZWVuIHggPVxuICBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGNvbnN1bWVfcmVzIHQgeCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBsZXQgYXR0cnMgPSBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoYXR0ciA9PSBhdHRyJykpIGluXG4gICAgICBsZXQgeCA9IENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggYXR0cnMgaW5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lICh4LCB2YWx1ZSlcblxubGV0IGNvbnN1bWUgdCB4ID1cbiAgY29uc3VtZV9yZXMgdCB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCByZW1vdmVfc2Vlbl9yZXMgKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gT2sgYWNjXG4gICAgfCBUIHQgOjogcmVzdCAtPlxuICAgICAgICBpZiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0IHRoZW5cbiAgICAgICAgICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICAgICAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICB8IFNvbWUgYXR0ciAtPlxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgICAgICAgIGlmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZSB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBsb29wIChhdHRyIDo6IGFjYykgcmVzdFxuICAgICAgICBlbHNlIGxvb3AgYWNjIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBwYWNrZWRzID4+fCBmdW4gbWF0Y2hlZCAtPlxuICBsZXQgYXR0cnMgPVxuICAgIExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChMaXN0Lm1lbXEgfnNldDptYXRjaGVkIGF0dHInKSlcbiAgaW5cbiAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnNcblxubGV0IHJlbW92ZV9zZWVuICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIHJlbW92ZV9zZWVuX3JlcyAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSlcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHBhdHRlcm5fcmVzIHQgcCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgZiA9IEFzdF9wYXR0ZXJuLnRvX2Z1bmMgcCBpblxuICBBc3RfcGF0dGVybi5vZl9mdW5jIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGNvbnN1bWVfcmVzIHQgeCA+PnwgZnVuIHJlcyAtPlxuICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmIGN0eCBsb2MgeCAoayBOb25lKVxuICAgICAgfCBTb21lICh4LCB2KSAtPiBmIGN0eCBsb2MgeCAoayAoU29tZSB2KSkpXG5cbmxldCBwYXR0ZXJuIHQgcCA9XG4gIHBhdHRlcm5fcmVzIHQgcCB8PiBBc3RfcGF0dGVybi50b19mdW5jXG4gIHw+IChmdW4gZiBhIGIgYyBkIC0+XG4gICAgICAgZiBhIGIgYyBkXG4gICAgICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycikpXG4gIHw+IEFzdF9wYXR0ZXJuLm9mX2Z1bmNcblxubW9kdWxlIEZsb2F0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gRmxvYXRpbmdfY29udGV4dFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG4gIH1cblxuICBsZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gayk7XG4gICAgfVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB4ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBtYXRjaCB0cyB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCB7IGNvbnRleHQ7IF8gfSA6OiBfIC0+IChcbiAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgdHMgfmY6KGZ1biB0IC0+IENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQpKTtcbiAgICAgICAgbGV0IGF0dHIgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGUgY29udGV4dCB4IGluXG4gICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0KVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gT2sgTm9uZVxuICAgICAgICB8IFsgdCBdIC0+IGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGZsb2F0aW5nIGF0dHJpYnV0ZXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgICAgIFtdICkpXG5cbiAgbGV0IGNvbnZlcnQgdHMgeCA9XG4gICAgY29udmVydF9yZXMgdHMgeFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgaWZcbiAgICAobm90XG4gICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEF0dHJpYnV0ZSBuYW1lLnR4dFxuICAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dCkpXG4gICAgJiYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lXG4gIHRoZW5cbiAgICBsZXQgYWxsb3dsaXN0ID0gTmFtZS5BbGxvd2xpc3RlZC5nZXRfYXR0cmlidXRlX2xpc3QgKCkgaW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciBjb250ZXh0IH5hbGxvd2xpc3RcbiAgICAgICAgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgbm90IHVzZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IF8gPVxuICAgICAgW1xuICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgIF1cblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuXG4gICAgICAgIGEgQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGF0dHJzXG4gICAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3RlZF9lcnJvcnMpXG4gICAgICAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdLCBlcnJvcnMpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19mbG9hdGluZyA6IHR5cGUgYS5cbiAgICAgICAgYSBGbG9hdGluZy5Db250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBGbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSBjb250ZXh0IG5vZGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IFNvbWUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgKEZsb2F0aW5nLkNvbnRleHQucmVwbGFjZV9ieV9kdW1teSBjb250ZXh0IG5vZGUsIGNvbGxlY3RlZF9lcnJvcnMpXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBMYWJlbF9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4dGVuc2lvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXhjZXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXhjZXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGluXG4gICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFBhdHRlcm4geCBpblxuICAgICAgc3VwZXIjcGF0dGVybiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb3JlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY29yZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHByZXNzaW9uIHggaW5cbiAgICAgIHN1cGVyI2V4cHJlc3Npb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZSB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4IGluXG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19leHByIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZSB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2V4cHIgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjdmFsdWVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aCBSdGFnIF8gLT4gc2VsZiNjaGVja19ub2RlIFJ0YWcgeCB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3Jvd19maWVsZCB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZykgLT5cbiAgICAgICAgICAgIGxldCBmaWVsZHMsIGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+Zjooc2VsZiNjaGVja19ub2RlIE9iamVjdF90eXBlX2ZpZWxkKVxuICAgICAgICAgICAgICB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSwgTGlzdC5jb25jYXQgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU3RydWN0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXZhbCBpdGVtXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFNpZ25hdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzaWdfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuICBlbmRcblxubGV0IGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgbWF0Y2ggY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByYWlzZV9pZl9ub25fZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuIGEgQ29udGV4dC50IC0+IGEgLT4gYSA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBub2RlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyIGF0dHJzXG4gICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgICAgICAgICAgIGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHIpO1xuICAgICAgICAgICAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW11cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9ID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbGFiZWxfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXh0ZW5zaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leGNlcHRpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcGF0dGVybiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4cHJlc3Npb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNyb3dfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuICBlbmRcblxubGV0IHJlc2V0X2NoZWNrcyAoKSA9IEF0dHJpYnV0ZV90YWJsZS5jbGVhciBub3Rfc2VlblxuXG5sZXQgY29sbGVjdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cilcbiAgICAgICAgPVxuICAgICAgbGV0IGxvYyA9IENvbW1vbi5sb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5hZGQgbm90X3NlZW4gbmFtZSBsb2NcbiAgZW5kXG5cbmxldCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgPVxuICBsZXQgZmFpbCBuYW1lIGxvYyBhY2MgPVxuICAgIGxldCB0eHQgPSBuYW1lLnR4dCBpblxuICAgIGlmIG5vdCAoTmFtZS5pZ25vcmVfY2hlY2tzIHR4dCkgdGhlblxuICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlIGAlcycgd2FzIHNpbGVudGx5IGRyb3BwZWRcIiB0eHRcbiAgICAgIDo6IGFjY1xuICAgIGVsc2UgYWNjXG4gIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkIGZhaWwgbm90X3NlZW4gW11cblxubGV0IGNoZWNrX2FsbF9zZWVuICgpID1cbiAgbWF0Y2ggY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSA9XG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIHRhYmxlIG5hbWVcbiAgZW5kXG5cbmxldCBjb3B5X29mX25vdF9zZWVuICgpID1cbiAgbGV0IGNvcHkgPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIChBdHRyaWJ1dGVfdGFibGUubGVuZ3RoIG5vdF9zZWVuKSBpblxuICBBdHRyaWJ1dGVfdGFibGUuaXRlciAoQXR0cmlidXRlX3RhYmxlLmFkZCBjb3B5KSBub3Rfc2VlbjtcbiAgY29weVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIHN0ID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc3RydWN0dXJlIHN0O1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIHNnID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc2lnbmF0dXJlIHNnO1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgZmlsZV9wYXRoIDogc3RyaW5nO1xuICBtYWluX21vZHVsZV9uYW1lIDogc3RyaW5nO1xuICBzdWJtb2R1bGVfcGF0aCA6IHN0cmluZyBsb2MgbGlzdDtcbiAgZW5jbG9zaW5nX21vZHVsZSA6IHN0cmluZztcbiAgZW5jbG9zaW5nX3ZhbHVlIDogc3RyaW5nIG9wdGlvbjtcbiAgdmFsdWUgOiBzdHJpbmcgbG9jIG9wdGlvbjtcbiAgaW5fZXhwciA6IGJvb2w7XG59XG5cbmxldCB0b3BfbGV2ZWwgfmZpbGVfcGF0aCA9XG4gIGxldCBtYWluX21vZHVsZV9uYW1lID1cbiAgICBmaWxlX3BhdGggfD4gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIHw+IFN0ZGxpYi5GaWxlbmFtZS5yZW1vdmVfZXh0ZW5zaW9uXG4gICAgfD4gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgaW5cbiAge1xuICAgIGZpbGVfcGF0aDtcbiAgICBtYWluX21vZHVsZV9uYW1lO1xuICAgIHN1Ym1vZHVsZV9wYXRoID0gW107XG4gICAgZW5jbG9zaW5nX21vZHVsZSA9IG1haW5fbW9kdWxlX25hbWU7XG4gICAgZW5jbG9zaW5nX3ZhbHVlID0gTm9uZTtcbiAgICB2YWx1ZSA9IE5vbmU7XG4gICAgaW5fZXhwciA9IGZhbHNlO1xuICB9XG5cbmxldCBmaWxlX3BhdGggdCA9IHQuZmlsZV9wYXRoXG5sZXQgbWFpbl9tb2R1bGVfbmFtZSB0ID0gdC5tYWluX21vZHVsZV9uYW1lXG5sZXQgZW5jbG9zaW5nX21vZHVsZSB0ID0gdC5lbmNsb3NpbmdfbW9kdWxlXG5sZXQgZW5jbG9zaW5nX3ZhbHVlIHQgPSB0LmVuY2xvc2luZ192YWx1ZVxuXG5sZXQgc3VibW9kdWxlX3BhdGggdCA9XG4gIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcblxubGV0IHZhbHVlIHQgPSBPcHRpb24ubWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC52YWx1ZVxuXG5sZXQgZnVsbHlfcXVhbGlmaWVkX3BhdGggdCA9XG4gIGxldCB2YWx1ZSA9IHZhbHVlIHQgaW5cbiAgbGV0IHN1Ym1vZHVsZV9wYXRoID1cbiAgICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IFNvbWUgbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcbiAgaW5cbiAgbGV0IG5hbWVzID0gKFNvbWUgdC5tYWluX21vZHVsZV9uYW1lIDo6IHN1Ym1vZHVsZV9wYXRoKSBAIFsgdmFsdWUgXSBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgQEAgTGlzdC5maWx0ZXJfb3B0IG5hbWVzXG5cbmxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBpbl9leHByID0gdHJ1ZSB9XG5cbmxldCBlbnRlcl9tb2R1bGUgfmxvYyBtb2R1bGVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgc3VibW9kdWxlX3BhdGggPSB7IHR4dCA9IG1vZHVsZV9uYW1lOyBsb2MgfSA6OiB0LnN1Ym1vZHVsZV9wYXRoO1xuICAgICAgZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lO1xuICAgIH1cblxubGV0IGVudGVyX3ZhbHVlIH5sb2MgdmFsdWVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgdmFsdWUgPSBTb21lIHsgdHh0ID0gdmFsdWVfbmFtZTsgbG9jIH07XG4gICAgICBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWU7XG4gICAgfVxuXG5sZXQgdG9fc3RyaW5nX3BhdGggdCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiAodC5maWxlX3BhdGggOjogc3VibW9kdWxlX3BhdGggdClcbmxldCB3aXRoX3N0cmluZ19wYXRoIGYgfmxvYyB+cGF0aCA9IGYgfmxvYyB+cGF0aDoodG9fc3RyaW5nX3BhdGggcGF0aCk7O1xuXG5sZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgbGV0IGEgPSBcImxvbFwiXG5lbmQgaW5cbk0uYVxuIiwibW9kdWxlIEJhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyB0b29sX25hbWUgOiBzdHJpbmc7IGNvZGVfcGF0aCA6IENvZGVfcGF0aC50OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICBsZXQgdG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IGNvZGVfcGF0aCA9IENvZGVfcGF0aC50b3BfbGV2ZWwgfmZpbGVfcGF0aCBpblxuICAgIHsgdG9vbF9uYW1lOyBjb2RlX3BhdGg7IGlucHV0X25hbWUgfVxuXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC50b29sX25hbWVcbiAgbGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9leHByIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYyA6IExvY2F0aW9uLnQ7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jIH5iYXNlICgpID0geyBleHRlbnNpb25fcG9pbnRfbG9jOyBiYXNlIH1cbiAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgdCA9IHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGRlcml2ZWRfaXRlbV9sb2MgOiBMb2NhdGlvbi50OyBpbmxpbmUgOiBib29sOyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZGVyaXZlZF9pdGVtX2xvYyB+aW5saW5lIH5iYXNlICgpID1cbiAgICB7IGRlcml2ZWRfaXRlbV9sb2M7IGJhc2U7IGlubGluZSB9XG5cbiAgbGV0IGRlcml2ZWRfaXRlbV9sb2MgdCA9IHQuZGVyaXZlZF9pdGVtX2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG4gIGxldCBpbmxpbmUgdCA9IHQuaW5saW5lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmRlcml2ZWRfaXRlbV9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vbi5XaXRoX2Vycm9yc1xuaW5jbHVkZSBBc3RfdHJhdmVyc2UwXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIFBweGxpYl90cmF2ZXJzZV9idWlsdGlucy5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBBc3QubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIGVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSBuYW1lIC0+IG5hbWVcbmxldCBlbnRlciBuYW1lIHBhdGggPSBpZiBTdHJpbmcuaXNfZW1wdHkgcGF0aCB0aGVuIG5hbWUgZWxzZSBwYXRoIF4gXCIuXCIgXiBuYW1lXG5sZXQgZW50ZXJfb3B0IG5hbWVfb3B0IHBhdGggPSBlbnRlciAobW9kdWxlX25hbWUgbmFtZV9vcHQpIHBhdGhcblxuY2xhc3MgbWFwX3dpdGhfcGF0aCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZ10gbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgKCogV0FTOlxuICAgICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHggPVxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgUHN0cl9tb2R1bGUgbWIgLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyAoZW50ZXIgbWIucG1iX25hbWUudHh0IHBhdGgpIHhcbiAgICAgICB8IF8gLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHhcblxuICAgICAgIE92ZXJyaWRpbmcgW21vZHVsZV9iaW5kaW5nXSBzZWVtcyB0byBiZSBPSyBiZWNhdXNlIGl0IGRvZXMgbm90IGNhdGNoXG4gICAgICAgbG9jYWwgbW9kdWxlIGJpbmRpbmdzIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB0aGUgcGFyc2V0cmVlIGRvZXNuJ3QgbWFrZVxuICAgICAgIHVzZSBvZiBbbW9kdWxlX2JpbmRpbmddIGZvciBsb2NhbCBtb2R1bGVzLCBidXQgdGhhdCBtaWdodCBjaGFuZ2UgaW4gdGhlXG4gICAgICAgZnV0dXJlLCBzbyB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuXG5cbiAgICAgICBUaGUgZm9sbG93aW5nOlxuXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcblxuICAgICAgIGlzIGRpc2FsbG93ZWQsIGJ1dFxuXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG5cbiAgICAgICBpc24ndCwgYW5kIHRoZSBcInBhdGhcIiBjb25zdHJ1Y3RlZCBoZXJlIHdvdWxkIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZVxuICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHBhdGggbWIgPVxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgKGVudGVyX29wdCBtYi5wbWJfbmFtZS50eHQgcGF0aCkgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHBhdGggbWQgPVxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIChlbnRlcl9vcHQgbWQucG1kX25hbWUudHh0IHBhdGgpIG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHBhdGggbXRkID1cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIChlbnRlciBtdGQucG10ZF9uYW1lLnR4dCBwYXRoKSBtdGRcbiAgZW5kXG5cbmxldCB2YXJfbmFtZXNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHAgYWNjID1cbiAgICAgIGxldCBhY2MgPSBzdXBlciNwYXR0ZXJuIHAgYWNjIGluXG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoIFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gdHh0IDo6IGFjYyB8IF8gLT4gYWNjXG4gIGVuZFxuXG5sZXQgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jIG5hbWVfb3B0IGN0eHQgPVxuICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgY3R4dFxuXG5sZXQgZW50ZXJfdmFsdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl92YWx1ZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9pZGVudCAobGlkZW50IF9fJykpKVxuICAgIEZuLmlkXG5cbmxldCBlbnRlcl9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZXhwclxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2NvbnN0cnVjdCAobGlkZW50IF9fJykgbm9uZSkpXG4gICAgRm4uaWRcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfZGVzY3JpcHRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5jbGFzcyBtYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzID1cbiAgbGV0IHJldHVybiBfY3R4IHggPSAoeCwgW10pIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0XG4gICAgICBbRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50LCBMb2NhdGlvbi5FcnJvci50IGxpc3RdIGxpZnRfbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgbWV0aG9kIGludCA9IHJldHVyblxuICAgIG1ldGhvZCBzdHJpbmcgPSByZXR1cm5cbiAgICBtZXRob2QgYm9vbCA9IHJldHVyblxuICAgIG1ldGhvZCBjaGFyID0gcmV0dXJuXG4gICAgbWV0aG9kIGZsb2F0ID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDMyID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDY0ID0gcmV0dXJuXG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHJldHVyblxuICAgIG1ldGhvZCB1bml0ID0gcmV0dXJuXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0KSAtPlxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgICAgICdhIGFycmF5IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGYgY3R4IGEgLT5cbiAgICAgICAgbGV0IGxpc3QsIGVycm9ycyA9IHNlbGYjbGlzdCBmIGN0eCAoQXJyYXkudG9fbGlzdCBhKSBpblxuICAgICAgICAoQXJyYXkub2ZfbGlzdCBsaXN0LCBlcnJvcnMpXG5cbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+IExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gXyBfIC0+IFtdXG5cbiAgICBtZXRob2QgcmVjb3JkIF9jdHggZmllbGRzID0gTGlzdC5jb25jYXRfbWFwIGZpZWxkcyB+ZjpzbmRcbiAgICBtZXRob2QgY29uc3RyIF9jdHggX3RhZyBhcmdzID0gTGlzdC5jb25jYXQgYXJnc1xuICAgIG1ldGhvZCB0dXBsZSBfY3R4IGwgPSBMaXN0LmNvbmNhdCBsXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gY3R4dFxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYXMgZXhwcikgPVxuICAgICAgbGV0IHdpdGhfdmFsdWUgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl92YWx1ZSBleHByIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWUgPj49IGZ1biBjdHh0IC0+XG4gICAgICBsZXQgY3R4dCA9IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfZXhwciBjdHh0IGluXG4gICAgICBsZXQgcGV4cF9kZXNjLCBkZXNjX2Vycm9ycyA9XG4gICAgICAgIG1hdGNoIHBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSAtPlxuICAgICAgICAgICAgbGV0IG5hbWUsIG5hbWVfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHh0IG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlX2V4cHIsIG1vZHVsZV9leHByX2Vycm9ycyA9XG4gICAgICAgICAgICAgIGxldCB3aXRoX2xldF9tb2R1bGUgPVxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIGV4cHJcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptb2R1bGVfZXhwci5wbW9kX2xvYyBuYW1lLnR4dCBjdHh0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHdpdGhfbGV0X21vZHVsZSA+Pj0gZnVuIGN0eHQgLT4gc2VsZiNtb2R1bGVfZXhwciBjdHh0IG1vZHVsZV9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGJvZHksIGJvZHlfZXJyb3JzID0gc2VsZiNleHByZXNzaW9uIGN0eHQgYm9keSBpblxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eHQgXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBuYW1lX2Vycm9yczsgbW9kdWxlX2V4cHJfZXJyb3JzOyBib2R5X2Vycm9ycyBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSksIGVycm9ycylcbiAgICAgICAgfCBfIC0+IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eHQgcGV4cF9kZXNjXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jIGluXG4gICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGxvY19zdGFja19lcnJvcnMgPVxuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jX3N0YWNrXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgY3R4dCBwZXhwX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LFxuICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIGRlc2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgbG9jX3N0YWNrX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJhdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgY3R4dCBtZSA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZXhwciA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX21vZHVsZSBtZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZXhwciA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2V4cHIgY3R4dCBtZVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBjdHh0IG1iID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9iaW5kaW5nID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIG1iXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1iLnBtYl9sb2MgbWIucG1iX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9iaW5kaW5nID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBjdHh0IG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gbWRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWQucG1kX2xvYyBtZC5wbWRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBtdGRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYzptdGQucG10ZF9sb2NcbiAgICAgICAgICAgICAgbXRkLnBtdGRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIHZkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzp2ZC5wdmFsX2xvYyB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICAgICAgIGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgY3R4dFxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhcyB2YikgPVxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgdmIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lICgpIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgY3R4dCB2YlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGluX2JpbmRpbmdfY3R4dCA9XG4gICAgICAgICAgICBtYXRjaCB2YXJfbmFtZXNfb2YjcGF0dGVybiBwdmJfcGF0IFtdIHdpdGhcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPiBjdHh0XG4gICAgICAgICAgICB8IFsgdmFyX25hbWUgXSAtPlxuICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzpwdmJfbG9jIHZhcl9uYW1lIGN0eHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfcGF0LCBwYXRfZXJyb3JzID0gc2VsZiNwYXR0ZXJuIGN0eHQgcHZiX3BhdCBpblxuICAgICAgICAgIGxldCBwdmJfZXhwciwgZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGluX2JpbmRpbmdfY3R4dCBwdmJfZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgaW5fYmluZGluZ19jdHh0IHB2Yl9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwdmJfbG9jIGluXG4gICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHBhdF9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIGV4cHJfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGVycm9ycylcbiAgZW5kXG5cbmNsYXNzIHNleHBfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtTZXhwLnRdIEFzdC5saWZ0XG4gICAgbWV0aG9kIGludCA9IHNleHBfb2ZfaW50XG4gICAgbWV0aG9kIHN0cmluZyA9IHNleHBfb2Zfc3RyaW5nXG4gICAgbWV0aG9kIGJvb2wgPSBzZXhwX29mX2Jvb2xcbiAgICBtZXRob2QgY2hhciA9IHNleHBfb2ZfY2hhclxuICAgIG1ldGhvZCBmbG9hdCA9IHNleHBfb2ZfZmxvYXRcbiAgICBtZXRob2QgaW50MzIgPSBzZXhwX29mX2ludDMyXG4gICAgbWV0aG9kIGludDY0ID0gc2V4cF9vZl9pbnQ2NFxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSBzZXhwX29mX25hdGl2ZWludFxuICAgIG1ldGhvZCB1bml0ID0gc2V4cF9vZl91bml0XG4gICAgbWV0aG9kIG9wdGlvbiA9IHNleHBfb2Zfb3B0aW9uXG4gICAgbWV0aG9kIGxpc3QgPSBzZXhwX29mX2xpc3RcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhIC0+IFNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiAnYSAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCJcblxuICAgIG1ldGhvZCByZWNvcmQgZmllbGRzID1cbiAgICAgIExpc3RcbiAgICAgICAgKExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChsYWJlbCwgc2V4cCkgLT5cbiAgICAgICAgICAgICBTZXhwLkxpc3QgWyBBdG9tIGxhYmVsOyBzZXhwIF0pKVxuXG4gICAgbWV0aG9kIGNvbnN0ciB0YWcgYXJncyA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGggW10gLT4gQXRvbSB0YWcgfCBfIC0+IExpc3QgKEF0b20gdGFnIDo6IGFyZ3MpXG5cbiAgICBtZXRob2QgdHVwbGUgbCA9IExpc3QgbFxuICBlbmRcblxubGV0IHNleHBfb2YgPSBuZXcgc2V4cF9vZlxuIiwiIyAxIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gXG5vcGVuIExleGluZ1xuXG5sZXQgdXBkYXRlX2xvYyBsZXhidWYgbGluZXNfdG9fc2tpcCA9XG4gIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IHBvcyB3aXRoXG4gICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyBsaW5lc190b19za2lwO1xuICAgIHBvc19ib2wgPSBwb3MucG9zX2NudW07XG4gIH1cblxuIyAxMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBza2lwX2hhc2hfYmFuZyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTQgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMyApXG4jIDExMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAxIC0+XG4jIDE2IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDEgKVxuIyAxMTggXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMiAtPlxuIyAxNyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgICggKCkgKVxuIyAxMjMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4gSW1wb3J0XG5cbmxldCB3aXRoX291dHB1dCBmbiB+YmluYXJ5IH5mID1cbiAgbWF0Y2ggZm4gd2l0aFxuICB8IE5vbmUgfCBTb21lIFwiLVwiIC0+XG4gICAgICAoKiBGbGlwcGluZyBiYWNrIGFuZCBmb3J0aCBmcm9tIGJpbmFyeSB0byB0ZXh0IGlzIG5vdFxuICAgICAgICAgYSBnb29kIGlkZWEsIHNvIHdlJ2xsIG1ha2UgdHdvIHNpbXBsaWZ5aW5nIGFzc3VtcHRpb25zOlxuICAgICAgICAgMS4gQXNzdW1lIHRoYXQgbm90aGluZyBpcyBidWZmZXJlZCBvbiBzdGRvdXQgYmVmb3JlXG4gICAgICAgICAgICBlbnRlcmluZyBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgICAgIGZsdXNoIHRoZSBzdGRvdXQgb24gZW50cnkuXG4gICAgICAgICAyLiBBc3N1bWUgdGhhdCBub3RoaW5nIGVsc2UgaXMgc2VudCB0byBzdGRvdXQgYWZ0ZXJcbiAgICAgICAgICAgIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgaXQgaXMgc2FmZSB0byBsZWF2ZSBzdGRvdXRcbiAgICAgICAgICAgIGNoYW5uZWwgaW4gYmluYXJ5IG1vZGUgKG9yIHRleHQgbW9kZSBpZiBbYmluYXJ5PXRydWVdKVxuICAgICAgICAgICAgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGlzIGRvbmUuICopXG4gICAgICBzZXRfYmluYXJ5X21vZGVfb3V0IHN0ZG91dCBiaW5hcnk7XG4gICAgICBmIHN0ZG91dFxuICB8IFNvbWUgZm4gLT4gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5iaW5hcnkgfmZcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiB8IEltcGxcblxuICBsZXQgb2ZfZmlsZW5hbWUgZm4gOiB0IG9wdGlvbiA9XG4gICAgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbFwiIHRoZW4gU29tZSBJbXBsXG4gICAgZWxzZSBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1saVwiIHRoZW4gU29tZSBJbnRmXG4gICAgZWxzZSBOb25lXG5cbiAgbGV0IGRlc2NyaWJlID0gZnVuY3Rpb24gSW1wbCAtPiBcImltcGxlbWVudGF0aW9uXCIgfCBJbnRmIC0+IFwiaW50ZXJmYWNlXCJcbiAgbGV0IGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBQb2x5LmVxdWFsXG5lbmRcblxubW9kdWxlIEludGZfb3JfaW1wbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG5cbiAgbGV0IG1hcCB0IChtYXAgOiBBc3RfdHJhdmVyc2UubWFwKSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgeClcblxuICBsZXQgbWFwX3dpdGhfY29udGV4dCB0IChtYXAgOiBfIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0KSBjdHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgY3R4IHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSBjdHggeClcblxuICBsZXQga2luZCA6IF8gLT4gS2luZC50ID0gZnVuY3Rpb24gSW50ZiBfIC0+IEludGYgfCBJbXBsIF8gLT4gSW1wbFxuZW5kXG5cbm1vZHVsZSBBc3RfaW8gPSBzdHJ1Y3RcbiAgdHlwZSBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKVxuXG4gIGxldCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pXG4gICgqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBpbnB1dCB2ZXJzaW9uIGNhbid0IGJlIGRldGVybWluZWQgZHVlIHRvXG4gICAgICBsb2FkaW5nIG9yIHByZXByb2Nlc3NpbmcgZXJyb3JzICopXG5cbiAgdHlwZSB0ID0ge1xuICAgIGlucHV0X25hbWUgOiBzdHJpbmc7XG4gICAgaW5wdXRfdmVyc2lvbiA6IGlucHV0X3ZlcnNpb247XG4gICAgYXN0IDogSW50Zl9vcl9pbXBsLnQ7XG4gIH1cblxuICB0eXBlIHJlYWRfZXJyb3IgPVxuICAgIHwgTm90X2FfYmluYXJ5X2FzdFxuICAgIHwgVW5rbm93bl92ZXJzaW9uIG9mIHN0cmluZyAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuICAgIHwgU3lzdGVtX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG5cbiAgdHlwZSBpbnB1dF9zb3VyY2UgPSBTdGRpbiB8IEZpbGUgb2Ygc3RyaW5nXG4gIHR5cGUgaW5wdXRfa2luZCA9IFBvc3NpYmx5X3NvdXJjZSBvZiBLaW5kLnQgKiBzdHJpbmcgfCBOZWNlc3NhcmlseV9iaW5hcnlcblxuICBsZXQgcmVhZF9lcnJvcl90b19zdHJpbmcgKGVycm9yIDogcmVhZF9lcnJvcikgPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vdF9hX2JpbmFyeV9hc3QgLT4gXCJFcnJvcjogTm90IGEgYmluYXJ5IGFzdFwiXG4gICAgfCBVbmtub3duX3ZlcnNpb24gKHMsIF8pIC0+IFwiRXJyb3I6IFVua25vd24gdmVyc2lvbiBcIiBeIHNcbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciAobG9jLCBfKSAtPlxuICAgICAgICBcIlNvdXJjZSBwYXJzZSBlcnJvcjpcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG4gICAgfCBTeXN0ZW1fZXJyb3IgKGxvYywgXykgLT4gXCJTeXN0ZW0gZXJyb3I6IFwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcblxuICBsZXQgcGFyc2Vfc291cmNlX2NvZGUgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaWNcbiAgICAgID1cbiAgICAoKiBUaGUgaW5wdXQgdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIGlucHV0IHdpbGwgZ2V0IHBhcnNlZCBieVxuICAgICAgIHRoZSBjdXJyZW50IGNvbXBpbGVyIFBhcnNlIG1vZHVsZSAqKVxuICAgIGxldCBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgaW5cbiAgICB0cnlcbiAgICAgICgqIFRvIHRlc3QgaWYgYSBmaWxlIGlzIGFuIEFTVCBmaWxlLCB3ZSBoYXZlIHRvIHJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBvZiB0aGVcbiAgICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICAgc291cmNlIGNvZGUuXG5cbiAgICAgICAgICBUaGUgY29tcGlsZXIganVzdCBkb2VzIFtzZWVrX29uIDBdIGluIHRoaXMgY2FzZSwgaG93ZXZlciB0aGlzIGRvZXNuJ3Qgd29yayB3aGVuXG4gICAgICAgICAgdGhlIGlucHV0IGlzIGEgcGlwZS5cblxuICAgICAgICAgIFdoYXQgd2UgZG8gaW5zdGVhZCBpcyBjcmVhdGUgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhlIGlucHV0IGNoYW5uZWwgYW5kIHByZS1maWxsXG4gICAgICAgICAgaXQgd2l0aCB3aGF0IHdlIHJlYWQgdG8gZG8gdGhlIHRlc3QuICopXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0OmxleGJ1Zi5sZXhfYnVmZmVyIH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZW47XG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgICB7IHBvc19mbmFtZSA9IGlucHV0X25hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9O1xuICAgICAgU2tpcF9oYXNoX2Jhbmcuc2tpcF9oYXNoX2JhbmcgbGV4YnVmO1xuICAgICAgbGV0IGFzdCA6IEludGZfb3JfaW1wbC50ID1cbiAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgIHwgSW50ZiAtPiBJbnRmIChQYXJzZS5pbnRlcmZhY2UgbGV4YnVmKVxuICAgICAgICB8IEltcGwgLT4gSW1wbCAoUGFyc2UuaW1wbGVtZW50YXRpb24gbGV4YnVmKVxuICAgICAgaW5cbiAgICAgIE9rIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCBtYWdpY19sZW5ndGggPSBTdHJpbmcubGVuZ3RoIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbiAgbGV0IHJlYWRfbWFnaWMgaWMgPVxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyBidWYgfnBvczowIH5sZW4gaW5cbiAgICBpZiBsZW4gPSBtYWdpY19sZW5ndGggdGhlbiBPayBzIGVsc2UgRXJyb3Igc1xuXG4gIGxldCBmcm9tX2NoYW5uZWwgY2ggfmlucHV0X2tpbmQgPVxuICAgIGxldCBoYW5kbGVfbm9uX2JpbmFyeSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSA9XG4gICAgICBtYXRjaCBpbnB1dF9raW5kIHdpdGhcbiAgICAgIHwgUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSAtPlxuICAgICAgICAgIHBhcnNlX3NvdXJjZV9jb2RlIH5raW5kIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBjaFxuICAgICAgfCBOZWNlc3NhcmlseV9iaW5hcnkgLT4gRXJyb3IgTm90X2FfYmluYXJ5X2FzdFxuICAgIGluXG4gICAgKCogTWFyc2hhbGxlZCBBU1QgbXVzdCBiZSByZWFkIGluIGJpbmFyeSBtb2RlLiBFdmVuIHRob3VnaCB3ZSBkb24ndCBrbm93XG4gICAgICAgYmVmb3JlIHJlYWRpbmcgdGhlIG1hZ2ljIG51bWJlciB3aGVuIHRoZSBmaWxlIGhhcyBhIG1hcnNoYWxsZWQgQVNULFxuICAgICAgIGl0IGlzIHNhZmUgdG8gcmVhZCBzb3VyY2UgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICopXG4gICAgc2V0X2JpbmFyeV9tb2RlX2luIGNoIHRydWU7XG4gICAgbWF0Y2ggcmVhZF9tYWdpYyBjaCB3aXRoXG4gICAgfCBFcnJvciBzIC0+IGhhbmRsZV9ub25fYmluYXJ5IHNcbiAgICB8IE9rIHMgLT4gKFxuICAgICAgICBtYXRjaCBGaW5kX3ZlcnNpb24uZnJvbV9tYWdpYyBzIHdpdGhcbiAgICAgICAgfCBJbnRmIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbnRmIChJbnB1dF90b19wcHhsaWIuY29weV9zaWduYXR1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IEltcGwgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkltcGwgKElucHV0X3RvX3BweGxpYi5jb3B5X3N0cnVjdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgVW5rbm93biAtPlxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgIHx8IFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgdGhlbiBFcnJvciAoVW5rbm93bl92ZXJzaW9uIChzLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpXG4gICAgICAgICAgICBlbHNlIGhhbmRsZV9ub25fYmluYXJ5IHMpXG5cbiAgbGV0IHJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIGlucHV0X3NvdXJjZSB3aXRoXG4gICAgICB8IFN0ZGluIC0+XG4gICAgICAgICAgc2V0X2JpbmFyeV9tb2RlX2luIHN0ZGluIHRydWU7XG4gICAgICAgICAgZnJvbV9jaGFubmVsIHN0ZGluIH5pbnB1dF9raW5kXG4gICAgICB8IEZpbGUgZm4gLT4gSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZClcbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgd3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uKTsgYXN0IH1cbiAgICAgIH5hZGRfcHB4X2NvbnRleHQgPVxuICAgIGxldCBtb2R1bGUgUHB4bGliX3RvX2lucHV0ID0gQ29udmVydCAoSnMpIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIGxldCBtb2R1bGUgT2NhbWxfdG9faW5wdXQgPSBDb252ZXJ0IChDb21waWxlcl92ZXJzaW9uKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBtYXRjaCBhc3Qgd2l0aFxuICAgIHwgSW50ZiBzZyAtPlxuICAgICAgICBsZXQgc2cgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3NpZ25hdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzZ1xuICAgIHwgSW1wbCBzdCAtPlxuICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3N0cnVjdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzdFxuXG4gIG1vZHVsZSBSZWFkX2JpbiA9IHN0cnVjdFxuICAgIHR5cGUgYXN0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuICAgIHR5cGUgdCA9IHsgYXN0IDogYXN0OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICAgIGxldCByZWFkX2JpbmFyeSBmbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kOk5lY2Vzc2FyaWx5X2JpbmFyeSlcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgeyBhc3Q7IGlucHV0X25hbWU7IF8gfSAtPlxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICAgIHwgSW1wbCBzdHJ1Y3R1cmUgLT4gSW1wbCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgIHwgSW50ZiBzaWduYXR1cmUgLT4gSW50ZiBzaWduYXR1cmVcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgYXN0OyBpbnB1dF9uYW1lIH1cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAocmVhZF9lcnJvcl90b19zdHJpbmcgZSlcblxuICAgIGxldCBnZXRfYXN0IHQgPSB0LmFzdFxuICAgIGxldCBnZXRfaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeXN0ZW0gPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dCB+b3V0cHV0ID1cbiAgICBsZXQgY29tbWFuZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzID4gJXNcIiBwcFxuICAgICAgICAoaWYgU3RyaW5nLmVxdWFsIGlucHV0IFwiLVwiIHRoZW4gXCJcIiBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBpbnB1dClcbiAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBvdXRwdXQpXG4gICAgaW5cbiAgICBpZiBTdGRsaWIuU3lzLmNvbW1hbmQgY29tbWFuZCA9IDAgdGhlbiBPayAoKVxuICAgIGVsc2UgRXJyb3IgKGNvbW1hbmQsIEFzdF9pby5mYWxsX2JhY2tfaW5wdXRfdmVyc2lvbilcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxubW9kdWxlIEZpbGVuYW1lID0gU3RkbGliLkZpbGVuYW1lXG5cbigqIFRPRE86IG1ha2UgdGhlIFwiZGVyaXZpbmcuXCIgZGVwZW5kIG9uIHRoZSBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZS4gKilcbmxldCBlbmRfbWFya2VyX3NpZyA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU2lnbmF0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGVuZF9tYXJrZXJfc3RyID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTdHJ1Y3R1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5tb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICB0eXBlICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZ2V0X2xvYyA6IHQgLT4gTG9jYXRpb24udFxuICB2YWwgZW5kX21hcmtlciA6ICh0LCB1bml0KSBBdHRyaWJ1dGUuRmxvYXRpbmcudFxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgOiBzaWdcbiAgICB2YWwgYXBwbHkgOlxuICAgICAgPCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIFQudFxuICAgICAgOyBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIFQudFxuICAgICAgOyAuLiA+IC0+XG4gICAgICB0IFQudFxuICBlbmRcblxuICB2YWwgcGFyc2UgOiBMZXhpbmcubGV4YnVmIC0+IHQgbGlzdFxuICB2YWwgcHAgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fc2V4cCA6IHQgLT4gU2V4cC50XG5lbmQpID1cbnN0cnVjdFxuICBsZXQgZXh0cmFjdF9wcmVmaXggfnBvcyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJwcHhsaWI6IFtAQEBAQEAlc10gYXR0cmlidXRlIG1pc3NpbmdcIlxuICAgICAgICAgICAgICAgIChBdHRyaWJ1dGUuRmxvYXRpbmcubmFtZSBNLmVuZF9tYXJrZXIpLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLkZsb2F0aW5nLmNvbnZlcnRfcmVzIFsgTS5lbmRfbWFya2VyIF0geCB3aXRoXG4gICAgICAgICAgfCBPayBOb25lIC0+IGxvb3AgKHggOjogYWNjKSBsXG4gICAgICAgICAgfCBPayAoU29tZSAoKSkgLT4gT2sgKExpc3QucmV2IGFjYywgKE0uZ2V0X2xvYyB4KS5sb2Nfc3RhcnQpXG4gICAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBGYWlsdXJlIF8gLT4gbG9vcCAoeCA6OiBhY2MpIGwpXG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuICBsZXQgcmVtb3ZlX2xvYyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICAgIG1ldGhvZCEgbG9jYXRpb24gXyA9IExvY2F0aW9uLm5vbmVcbiAgICAgIG1ldGhvZCEgbG9jYXRpb25fc3RhY2sgXyA9IFtdXG4gICAgZW5kXG5cbiAgbW9kdWxlIE1fbWFwID0gTS5UcmFuc2Zvcm0gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIC0+ICdhXG4gIGVuZClcblxuICBsZXQgcmVtb3ZlX2xvYyB4ID0gTV9tYXAuYXBwbHkgcmVtb3ZlX2xvYyB4XG4gIGxldCByZWMgbGFzdCBwcmV2ID0gZnVuY3Rpb24gW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBkaWZmX2FzdHMgfmdlbmVyYXRlZCB+cm91bmRfdHJpcCA9XG4gICAgbGV0IHdpdGhfdGVtcF9maWxlIGYgPVxuICAgICAgRXhuLnByb3RlY3R4XG4gICAgICAgIChGaWxlbmFtZS50ZW1wX2ZpbGUgXCJwcHhsaWJcIiBcIlwiKVxuICAgICAgICB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZlxuICAgIGluXG4gICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjEgLT5cbiAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjIgLT5cbiAgICAgICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGR1bXAgZm4gYXN0ID1cbiAgICAgICAgICAgICAgICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBTZXhwLnBwX2h1bSBwcGYgKE0udG9fc2V4cCBhc3QpO1xuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBkdW1wIGZuMSBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICAgICAgZHVtcCBmbjIgcm91bmRfdHJpcDtcbiAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwicGF0ZGlmZiAtYXNjaWkgLWFsdC1vbGQgZ2VuZXJhdGVkIC1hbHQtbmV3IFxcXG4gICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvayA9XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiZGlmZiAtLWxhYmVsIGdlbmVyYXRlZCAtLWxhYmVsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgb2sgdGhlbiBJbl9jaGFubmVsLnJlYWRfYWxsIG91dFxuICAgICAgICAgICAgICAgIGVsc2UgXCI8bm8gZGlmZmVyZW5jZXMgcHJvZHVjZWQgYnkgZGlmZj5cIikpKVxuXG4gIGxldCBwYXJzZV9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggTS5wYXJzZSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IHJlYyBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlID1cbiAgICBtYXRjaCAoZXhwZWN0ZWQsIHNvdXJjZSkgd2l0aFxuICAgIHwgW10sIFtdIC0+ICgpXG4gICAgfCBbXSwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgKE0uZ2V0X2xvYyB4KSB3aXRoIGxvY19lbmQgPSAoTS5nZXRfbG9jIChsYXN0IHggbCkpLmxvY19lbmQgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbXVxuICAgIHwgXywgW10gLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyBMb2NhdGlvbi5sb2NfZ2hvc3QgPSBmYWxzZTsgbG9jX3N0YXJ0ID0gZW5kX3BvczsgbG9jX2VuZCA9IGVuZF9wb3MgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBleHBlY3RlZFxuICAgIHwgeCA6OiBleHBlY3RlZCwgeSA6OiBzb3VyY2UgLT5cbiAgICAgICAgbGV0IGxvYyA9IE0uZ2V0X2xvYyB5IGluXG4gICAgICAgIGxldCB4ID0gcmVtb3ZlX2xvYyB4IGluXG4gICAgICAgIGxldCB5ID0gcmVtb3ZlX2xvYyB5IGluXG4gICAgICAgIGlmIFBvbHkuKCA8PiApIHggeSB0aGVuIChcbiAgICAgICAgICBsZXQgcm91bmRfdHJpcCA9XG4gICAgICAgICAgICByZW1vdmVfbG9jIChwYXJzZV9zdHJpbmcgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiBNLnBwIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUG9seS4oIDw+ICkgeCByb3VuZF90cmlwIHRoZW5cbiAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgICAgICAgIFwicHB4bGliOiB0aGUgY29ycmVjdGVkIGNvZGUgZG9lc24ndCByb3VuZC10cmlwLlxcblxcXG4gICAgICAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBPQ2FtbCBwcmludGVyOlxcblxcXG4gICAgICAgICAgICAgICAlc1wiXG4gICAgICAgICAgICAgIChkaWZmX2FzdHMgfmdlbmVyYXRlZDp4IH5yb3VuZF90cmlwKTtcbiAgICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbIHggXSk7XG4gICAgICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcblxuICBsZXQgZG9fbWF0Y2ggfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgc291cmNlID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBleHRyYWN0X3ByZWZpeCB+cG9zIHNvdXJjZSA+PnwgZnVuIChzb3VyY2UsIGVuZF9wb3MpIC0+XG4gICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuZW5kXG5cbigqJCopXG5tb2R1bGUgU3RyID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHN0cl9sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3N0clxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW1wbGVtZW50YXRpb25cbiAgbGV0IHBwID0gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlX2l0ZW1cbmVuZClcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubW9kdWxlIFNpZyA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzaWduYXR1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzaWdfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zaWdcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3NpZ25hdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmludGVyZmFjZVxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmVfaXRlbVxuZW5kKVxuXG4oKiQqKVxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlX3JlcyA9IFN0ci5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zdHJ1Y3R1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IG1hdGNoX3NpZ25hdHVyZV9yZXMgPSBTaWcuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3NpZ25hdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc2lnbmF0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5cbnR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBweF9pbXBvcnQgOiB0eXBlX2RlY2xhcmF0aW9uIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBQcHhfaW1wb3J0IC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG5cbiAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgIGZ1biBhIGIgLT5cbiAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgQ2xhc3NfZXhwciAtPiBFcVxuICAgIHwgQ2xhc3NfZmllbGQsIENsYXNzX2ZpZWxkIC0+IEVxXG4gICAgfCBDbGFzc190eXBlLCBDbGFzc190eXBlIC0+IEVxXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCBDbGFzc190eXBlX2ZpZWxkIC0+IEVxXG4gICAgfCBDb3JlX3R5cGUsIENvcmVfdHlwZSAtPiBFcVxuICAgIHwgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiAtPiBFcVxuICAgIHwgTW9kdWxlX2V4cHIsIE1vZHVsZV9leHByIC0+IEVxXG4gICAgfCBNb2R1bGVfdHlwZSwgTW9kdWxlX3R5cGUgLT4gRXFcbiAgICB8IFBhdHRlcm4sIFBhdHRlcm4gLT4gRXFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCBTaWduYXR1cmVfaXRlbSAtPiBFcVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIFN0cnVjdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBQcHhfaW1wb3J0LCBQcHhfaW1wb3J0IC0+IEVxXG4gICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAoUG9seS4oIDw+ICkgKFQgYSkgKFQgYikpO1xuICAgICAgICBOZVxuXG4gIGxldCBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsID1cbiAgICBtYXRjaCB0eXBlX2RlY2wgd2l0aFxuICAgIHwgeyBwdHlwZV9tYW5pZmVzdCA9IFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiAobmFtZSwgXyk7IF8gfTsgXyB9XG4gICAgICAtPlxuICAgICAgICBsZXQgdmlydHVhbF9wYXlsb2FkID1cbiAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfdHlwZSB+bG9jOnR5cGVfZGVjbC5wdHlwZV9sb2MgUmVjdXJzaXZlXG4gICAgICAgICAgICBbIHR5cGVfZGVjbCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyID0gW10gaW5cbiAgICAgICAgU29tZSAoKG5hbWUsIFBTdHIgWyB2aXJ0dWFsX3BheWxvYWQgXSksIGF0dHIpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2V4dGVuc2lvbiA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gKGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMpIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIHsgcGNsX2Rlc2MgPSBQY2xfZXh0ZW5zaW9uIGU7IHBjbF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZTsgcGNmX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGUsIHsgcGN0eV9kZXNjID0gUGN0eV9leHRlbnNpb24gZTsgcGN0eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGU7IHBjdGZfYXR0cmlidXRlcyA9IGE7IF8gfVxuICAgICAgLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENvcmVfdHlwZSwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBlOyBwdHlwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IEV4cHJlc3Npb24sIHsgcGV4cF9kZXNjID0gUGV4cF9leHRlbnNpb24gZTsgcGV4cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfZXhwciwgeyBwbW9kX2Rlc2MgPSBQbW9kX2V4dGVuc2lvbiBlOyBwbW9kX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV90eXBlLCB7IHBtdHlfZGVzYyA9IFBtdHlfZXh0ZW5zaW9uIGU7IHBtdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgUGF0dGVybiwgeyBwcGF0X2Rlc2MgPSBQcGF0X2V4dGVuc2lvbiBlOyBwcGF0X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgUHB4X2ltcG9ydCwgdHlwZV9kZWNsIC0+IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2xcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzX3JlcyA6XG4gICAgICB0eXBlIGEuXG4gICAgICBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IChhLCBMb2NhdGlvbi5FcnJvci50IE5vbkVtcHR5TGlzdC50KSByZXN1bHQgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciAtPiBPayB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IHgucGNsX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiBPayB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IHgucGNmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IE9rIHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IHgucGN0eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPlxuICAgICAgICBPayB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSB4LnBjdGZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiBPayB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSB4LnB0eXBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4gT2sgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0geC5wZXhwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiBPayB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSB4LnBtb2RfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IE9rIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IHgucG10eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiBPayB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSB4LnBwYXRfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFBweF9pbXBvcnQgLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1lcmdlX2F0dHJpYnV0ZXNfcmVzIHQgeCBhdHRyc1xuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImV4dGVuc2lvblwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1biAoQ29udGV4dC5UIGN0eCkgLT4gU29tZSAoQ29udGV4dC5kZXNjIGN0eCkpXG5cbm1vZHVsZSBNYWtlIChDYWxsYmFjayA6IHNpZ1xuICB0eXBlICdhIHRcbmVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcGF5bG9hZF9wYXJzZXIgPVxuICAgIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgICAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udCAqICdiIENhbGxiYWNrLnRcbiAgICAgICAgLT4gKCdhLCAnYykgcGF5bG9hZF9wYXJzZXJcblxuICB0eXBlICgnY29udGV4dCwgJ3BheWxvYWQpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnY29udGV4dCBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6IChwYXlsb2FkLCAncGF5bG9hZCkgcGF5bG9hZF9wYXJzZXI7XG4gICAgd2l0aF9hcmcgOiBib29sO1xuICB9XG5cbiAgbGV0IGRlY2xhcmUgOlxuICAgICAgdHlwZSBhLlxuICAgICAgd2l0aF9hcmc6Ym9vbCAtPlxuICAgICAgc3RyaW5nIC0+XG4gICAgICBhIENvbnRleHQudCAtPlxuICAgICAgKHBheWxvYWQsICdiLCAncGF5bG9hZCkgQXN0X3BhdHRlcm4udCAtPlxuICAgICAgJ2IgQ2FsbGJhY2sudCAtPlxuICAgICAgKGEsICdwYXlsb2FkKSB0ID1cbiAgIGZ1biB+d2l0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayAtPlxuICAgICgqIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gY29sbGlzaW9ucyBiZXR3ZWVuIHBweF9pbXBvcnQgYW5kIGNvcmVfdHlwZVxuICAgICAgIGV4dGVuc2lvbnMgKilcbiAgICAobWF0Y2ggY29udGV4dCB3aXRoXG4gICAgfCBDb250ZXh0LlBweF9pbXBvcnQgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBDb3JlX3R5cGUpIG5hbWVcbiAgICB8IENvbnRleHQuQ29yZV90eXBlIC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgUHB4X2ltcG9ydCkgbmFtZVxuICAgIHwgXyAtPiAoKSk7XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEV4dGVuc2lvbiByZWdpc3RyYXIgKENvbnRleHQuVCBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gICAgICB3aXRoX2FyZztcbiAgICB9XG5cbiAgbGV0IGZpbmQgdHMgKGV4dCA6IGV4dGVuc2lvbikgPVxuICAgIGxldCB7IHR4dCA9IG5hbWU7IGxvYyB9ID0gZnN0IGV4dCBpblxuICAgIGxldCBuYW1lLCBhcmcgPSBOYW1lLnNwbGl0X3BhdGggbmFtZSBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgXyA6OiBfIDo6IF8gYXMgbCAtPlxuICAgICAgICBFcnJvclxuICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGV4dGVuc2lvbnM6ICVzXCJcbiAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgIFtdIClcbiAgICB8IFsgdCBdIC0+XG4gICAgICAgIGlmIChub3QgdC53aXRoX2FyZykgJiYgT3B0aW9uLmlzX3NvbWUgYXJnIHRoZW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgICAgICAgICBcIkV4dGVuc2lvbiAlcyBkb2Vzbid0IGV4cGVjdCBhIHBhdGggYXJndW1lbnRcIiBuYW1lLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYXJnID1cbiAgICAgICAgICAgIE9wdGlvbi5tYXAgYXJnIH5mOihmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaGlmdCA9IFN0cmluZy5sZW5ndGggbmFtZSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBsb2MubG9jX3N0YXJ0IGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHh0ID0gTG9uZ2lkZW50LnBhcnNlIHM7XG4gICAgICAgICAgICAgICAgICBsb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGFydCB3aXRoIHBvc19jbnVtID0gc3RhcnQucG9zX2NudW0gKyBzaGlmdCB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayAoU29tZSAodCwgYXJnKSlcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjdHggcGF0dCBmXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGN0eCBwYXR0IChmdW4gfmFyZzpfIC0+IGYpXG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBmaW5kIHRzIGV4dCA+Pj0gZnVuIHIgLT5cbiAgICBtYXRjaCByIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+YXJnKSA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgU29tZSBwYXlsb2FkXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmxvYyBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5tb2R1bGUgTSA9IE1ha2UgKHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLnQgLT4gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuZW5kKVxuXG50eXBlICdhIGV4cGFuZGVyX3Jlc3VsdCA9IFNpbXBsZSBvZiAnYSB8IElubGluZSBvZiAnYSBsaXN0XG5cbm1vZHVsZSBGb3JfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsICdhIGV4cGFuZGVyX3Jlc3VsdCkgTS50XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgICAgICAgfCBTaW1wbGUgeCAtPiBTb21lIHhcbiAgICAgICAgfCBJbmxpbmUgXyAtPiBmYWlsd2l0aCBcIkV4dGVuc2lvbi5jb252ZXJ0XCIpXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aCBTaW1wbGUgeCAtPiBTb21lIFsgeCBdIHwgSW5saW5lIGwgLT4gU29tZSBsKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZSB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbnR5cGUgdCA9IFQgOiBfIEZvcl9jb250ZXh0LnQgLT4gdFxuXG5sZXQgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIDogdHlwZSBhLiBmdW5jOnN0cmluZyAtPiBhIENvbnRleHQudCAtPiB1bml0ID1cbiBmdW4gfmZ1bmMgY3R4IC0+XG4gIG1hdGNoIGN0eCB3aXRoXG4gIHwgQ29udGV4dC5DbGFzc19maWVsZCAtPiAoKVxuICB8IENvbnRleHQuQ2xhc3NfdHlwZV9maWVsZCAtPiAoKVxuICB8IENvbnRleHQuU2lnbmF0dXJlX2l0ZW0gLT4gKClcbiAgfCBDb250ZXh0LlN0cnVjdHVyZV9pdGVtIC0+ICgpXG4gIHwgY29udGV4dCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiJXM6ICVzIGNhbid0IGJlIGlubGluZWRcIiBmdW5jXG4gICAgICAgIChDb250ZXh0LmRlc2MgY29udGV4dClcblxubGV0IHJlYyBmaWx0ZXJfYnlfY29udGV4dCA6XG4gICAgdHlwZSBhLiBhIENvbnRleHQudCAtPiB0IGxpc3QgLT4gYSBGb3JfY29udGV4dC50IGxpc3QgPVxuIGZ1biBjb250ZXh0IGV4cGFuZGVycyAtPlxuICBtYXRjaCBleHBhbmRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgVCB0IDo6IHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggQ29udGV4dC5lcSBjb250ZXh0IHQuY29udGV4dCB3aXRoXG4gICAgICB8IEVxIC0+IHQgOjogZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0XG4gICAgICB8IE5lIC0+IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdClcblxubGV0IHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgY3R4IChuYW1lLCBfKSA9XG4gIGlmXG4gICAgbm90XG4gICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgRXh0ZW5zaW9uIG5hbWUudHh0XG4gICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpXG4gIHRoZW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciAoQ29udGV4dC5UIGN0eClcbiAgICAgICAgXCJFeHRlbnNpb24gYCVzJyB3YXMgbm90IHRyYW5zbGF0ZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSBhY2MgPVxuICAgICAgYWNjXG4gICAgICBAIFtcbiAgICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgICBdXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDb3JlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBQYXR0ZXJuIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIEV4cHJlc3Npb24gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3RmX2V4dGVuc2lvbiBleHQgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGVfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG10eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU2lnbmF0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTdHJ1Y3R1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjXG4gIGVuZFxuXG5sZXQgZXJyb3JfbGlzdF90b19leGNlcHRpb24gPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjcGF0dGVybl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjZXhwcmVzc2lvbl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV9leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuICBlbmRcblxubW9kdWxlIFYzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dCB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZVwiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcblxuICBsZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcbmVuZFxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBfX2RlY2xhcmVfcHB4X2ltcG9ydCBuYW1lIGV4cGFuZCA9XG4gICgqIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIHVud3JhcCB0aGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBwYXlsb2FkXG4gICAgIGFzc2VtYmxlZCBieSBbQ29udGV4dC5nZXRfcHB4X2ltcG9ydF9leHRlbnNpb25dICopXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfdHlwZSByZWN1cnNpdmUgKF9fIF46OiBuaWwpIF46OiBuaWwpKSBpblxuICBWMy5kZWNsYXJlIG5hbWUgQ29udGV4dC5QcHhfaW1wb3J0IHBhdHRlcm4gZXhwYW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlID0gZGVjbGFyZVxuICBsZXQgZGVjbGFyZV9pbmxpbmUgPSBkZWNsYXJlX2lubGluZVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgRSA9IEV4dGVuc2lvblxubW9kdWxlIEVDID0gRXh0ZW5zaW9uLkNvbnRleHRcbm1vZHVsZSBBID0gQXR0cmlidXRlXG5tb2R1bGUgQUMgPSBBdHRyaWJ1dGUuQ29udGV4dFxuXG5tb2R1bGUgUnVsZSA9IHN0cnVjdFxuICBtb2R1bGUgQXR0cl9ncm91cF9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6XG4gICAgICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgICAgICdiIGxpc3QgLT5cbiAgICAgICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAgICAgJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgQXR0cl9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWNpYWxfZnVuY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgaWRlbnQgOiBMb25naWRlbnQudDtcbiAgICAgIGV4cGFuZCA6IFBhcnNldHJlZS5leHByZXNzaW9uIC0+IFBhcnNldHJlZS5leHByZXNzaW9uIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudF9raW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRmxvYXQgfCBJbnRlZ2VyXG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN1ZmZpeCA6IGNoYXI7XG4gICAgICBraW5kIDogQ29uc3RhbnRfa2luZC50O1xuICAgICAgZXhwYW5kIDogTG9jYXRpb24udCAtPiBzdHJpbmcgLT4gUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBFeHRlbnNpb24gOiBFeHRlbnNpb24udCB0XG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24gOiBTcGVjaWFsX2Z1bmN0aW9uLnQgdFxuICAgICAgfCBDb25zdGFudCA6IENvbnN0YW50LnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG5cbiAgICB0eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG4gICAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgICAgZnVuIGEgYiAtPlxuICAgICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICAgIHwgRXh0ZW5zaW9uLCBFeHRlbnNpb24gLT4gRXFcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiwgU3BlY2lhbF9mdW5jdGlvbiAtPiBFcVxuICAgICAgfCBDb25zdGFudCwgQ29uc3RhbnQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsLCBBdHRyX3N0cl90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsLCBBdHRyX3NpZ190eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQsIEF0dHJfc3RyX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0LCBBdHRyX3NpZ190eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24sIEF0dHJfc3RyX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24sIEF0dHJfc2lnX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgXyAtPiBOZVxuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2EgRmllbGQudCAqICdhIC0+IHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2dyb3VwX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICdiIGxpc3QgLT5cbiAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0KSAtPlxuICAgIHRcblxuICBsZXQgcmVjIGZpbHRlciA6IHR5cGUgYS4gYSBGaWVsZC50IC0+IHQgbGlzdCAtPiBhIGxpc3QgPVxuICAgZnVuIGZpZWxkIGwgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBUIChmaWVsZCcsIHgpIDo6IGwgLT4gKFxuICAgICAgICBtYXRjaCBGaWVsZC5lcSBmaWVsZCBmaWVsZCcgd2l0aFxuICAgICAgICB8IEZpZWxkLkVxIC0+IHggOjogZmlsdGVyIGZpZWxkIGxcbiAgICAgICAgfCBGaWVsZC5OZSAtPiBmaWx0ZXIgZmllbGQgbClcblxuICBsZXQgZXh0ZW5zaW9uIGV4dCA9IFQgKEV4dGVuc2lvbiwgZXh0KVxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9uIGlkIGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IGlkOyBpZGVudCA9IExvbmdpZGVudC5wYXJzZSBpZDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxubGV0IHJlYyBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBFQy5tZXJnZV9hdHRyaWJ1dGVzX3JlcyBjb250ZXh0IHggYXR0cnNcbiAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6eFxuICAgICAgICAgID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMpXG5cbmxldCBtYXBfbm9kZSBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5ob29rIH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dFxuICAgICAgICAgICAgKEVDLm1lcmdlX2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzKVxuICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgID4+fCBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGxvYyAoU2luZ2xlIGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICBnZW5lcmF0ZWRfY29kZSlcblxubGV0IHJlYyBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2sgfmVtYmVkX2Vycm9yc1xuICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBbXVxuICB8IHggOjogbCAtPiAoXG4gICAgICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGVzZSB0d28gbGV0cyBmb3JjZSB0aGUgZXZhbHVhdGlvbiBvcmRlciwgc28gdGhhdCBlcnJvcnMgYXJlIHJlcG9ydGVkIGluIHRoZVxuICAgICAgICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBmaWxlLiAqKVxuICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gZ2V0X2xvYyB4IGluXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgICAgICB8IFNvbWUgY29udmVydGVkIC0+XG4gICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBjb252ZXJ0ZWQgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgICAgICAgID4+PSBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgIChNYW55IGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBjb2RlIC0+IGdlbmVyYXRlZF9jb2RlIEAgY29kZSkpXG5cbmxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbmxldCB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9ucyBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gIG1hdGNoXG4gICAgTGlzdC5tYXAgc3BlY2lhbF9mdW5jdGlvbnNcbiAgICAgIH5mOihmdW4geyBSdWxlLlNwZWNpYWxfZnVuY3Rpb24uaWRlbnQ7IGV4cGFuZDsgXyB9IC0+IChpZGVudCwgZXhwYW5kKSlcbiAgICAoKiBXZSBleHBlY3QgdGhlIGxvb2t1cCB0byBmYWlsIG1vc3Qgb2YgdGhlIHRpbWUsIGJ5IG1ha2luZyB0aGUgdGFibGUgYmlnIChhbmRcbiAgICAgICBzcGFyc2UpLCB3ZSBtYWtlIGl0IG1vcmUgbGlrZWx5IHRvIGZhaWwgcXVpY2tseSAqKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3QgfnNpemU6KG1heCAxMDI0IChMaXN0Lmxlbmd0aCBzcGVjaWFsX2Z1bmN0aW9ucyAqIDIpKVxuICB3aXRoXG4gIHwgT2sgdGFibGUgLT4gdGFibGVcbiAgfCBFcnJvciBpZGVudCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiQ29udGV4dF9mcmVlLlYxLm1hcF90b3BfZG93bjogJXMgcHJlc2VudCB0d2ljZSBpbiBsaXN0IG9mIHNwZWNpYWwgXFxcbiAgICAgICAgIGZ1bmN0aW9uc1wiXG4gICAgICAgIChMaXN0LmZpbmRfbWFwX2V4biBzcGVjaWFsX2Z1bmN0aW9ucyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICBpZiBQb2x5LmVxdWFsIHIuaWRlbnQgaWRlbnQgdGhlbiBTb21lIHIubmFtZSBlbHNlIE5vbmUpKVxuXG4oKiBbZ2V0X2dyb3VwIGF0dHIgbF0gcmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyBmb3IgZWFjaFxuICAgbm9kZSBpbiBbbF0uXG4gICBJZiBbbF0gaXMgZW1wdHkgb3IgaWYgbm9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhdmUgYW4gYXR0cmlidXRlIGF0dGFjaGVkLFxuICAgW2dldF9ncm91cF0gcmV0dXJucyBbTm9uZV0uXG4gICBJZiBbbF0gaXMgbm90IGVtcHR5IGFuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXMgYW4gYXR0cmlidWVcbiAgIGF0dGFjaGVkLCBbZ2V0X2dyb3VwXSByZXR1cm5zIHRoZSBlcXVpdmFsZW50IG9mXG4gICBbU29tZSAoTGlzdC5tYXAgfmY6KEF0dHJpYnV0ZS5nZXQgYXR0cikgbCldLiAqKVxubGV0IHJlYyBnZXRfZ3JvdXAgYXR0ciBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgZ2V0X2dyb3VwIGF0dHIgbCA+Pj0gZnVuIGdyb3VwIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhdHRyIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmUgPj58IGZ1biBhdHRyMiAtPlxuICAgICAgbWF0Y2ggKGF0dHIyLCBncm91cCkgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgIHwgTm9uZSwgU29tZSB2YWxzIC0+IFNvbWUgKE5vbmUgOjogdmFscylcbiAgICAgIHwgU29tZSB2YWx1ZSwgTm9uZSAtPiBTb21lIChTb21lIHZhbHVlIDo6IExpc3QubWFwIGwgfmY6KGZ1biBfIC0+IE5vbmUpKVxuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIHZhbHMgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiB2YWxzKSlcblxuKCogU2FtZSBhcyBbTGlzdC5yZXZdIHRoZW4gW0xpc3QuY29uY2F0XSBidXQgZXhwZWN0aW5nIHRoZSBpbnB1dCB0byBiZSBvZiBsZW5ndGggPD0gMiAqKVxubGV0IHJldl9jb25jYXQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgWyB4IF0gLT4geFxuICB8IFsgeDsgeSBdIC0+IHkgQCB4XG4gIHwgbCAtPiBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgbClcblxubGV0IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBzb3J0X2F0dHJfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyA9XG4gIEVycm9yXG4gICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgXCJBIGNvbnRleHQtZnJlZSBydWxlIGRlbGV0ZWQgb3IgYWRkZWQgYXR0cmlidWVzIG9mIGEgc3RyL3NpZyBpdGVtXCIsXG4gICAgICBbXSApXG5cbigqIFJldHVybnMgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGF0dHJpYnV0ZSBoYW5kbGVycy4gV2UgZG9uJ3QgcmVtb3ZlIHRoZXNlIGF0dHJpYnV0ZXMsIGFzXG4gICBhbm90aGVyIHBhc3MgbWlnaHQgaW50ZXJwcmV0IHRoZW0gbGF0ZXIuIEZvciBpbnN0YW5jZSBib3RoIHBweF9kZXJpdmluZyBhbmRcbiAgIHBweGxpYl9kZXJpdmluZyBpbnRlcnByZXRzIFtAQGRlcml2aW5nXSBhdHRyaWJ1dGVzLlxuXG4gICBUaGlzIGNvbXBsZXhpdHkgaXMgaG9ycmlibGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBkb24ndCBjYXJlIGFzIFthdHRyc10gaXMgYWx3YXlzIGEgbGlzdFxuICAgb2Ygb25lIGVsZW1lbnQ7IGl0IG9ubHkgaGFzIFtAQGRlcml2aW5nXS5cbiopXG5sZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJzIHJmIH5pdGVtcyB+ZXhwYW5kZWRfaXRlbXMgfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChhY2MsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5pdGVtIH5leHBhbmRlZF9pdGVtIH5sb2MgfmJhc2VfY3R4dCB+ZW1iZWRfZXJyb3JzXG4gICAgPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2lubGluZS5UIGEpIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGl0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzEgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTphLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGEuZXhwYW5kIH5jdHh0IGV4cGFuZGVkX2l0ZW0gdmFsdWUgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoYWNjLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChlLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfZmxvYXQgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEZsb2F0IGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChlLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB0ZSwgUHN0cl90eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc2lnX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHNpZ19kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHJmLCB0ZHMpLCBQc2lnX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQqKVxuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeHRlbnNpb24gb2YgJ2EgRXh0ZW5zaW9uLkNvbnRleHQudFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIG9mICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnRcblxuICBsZXQgcGFyZW4gcHAgcHBmIHggPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiKCVhKVwiIHBwIHhcblxuICBsZXQgcHJpbnRlciA6IHR5cGUgYS4gYSB0IC0+IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyIC0+IGEgLT4gdW5pdCA9XG4gICAgbGV0IG9wZW4gRXh0ZW5zaW9uLkNvbnRleHQgaW5cbiAgICBsZXQgb3BlbiBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dCBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZXhwciAtPiBQcHJpbnRhc3QuY2xhc3NfZXhwclxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGUgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ29yZV90eXBlIC0+IHBhcmVuIFBwcmludGFzdC5jb3JlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBFeHByZXNzaW9uIC0+IHBhcmVuIFBwcmludGFzdC5leHByZXNzaW9uXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX2V4cHIgLT4gUHByaW50YXN0Lm1vZHVsZV9leHByXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX3R5cGUgLT4gUHByaW50YXN0Lm1vZHVsZV90eXBlXG4gICAgfCBFeHRlbnNpb24gUGF0dGVybiAtPiBwYXJlbiBQcHJpbnRhc3QucGF0dGVyblxuICAgIHwgRXh0ZW5zaW9uIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFBweF9pbXBvcnQgLT4gUHByaW50YXN0LnR5cGVfZGVjbGFyYXRpb25cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG5lbmRcblxubW9kdWxlIFJlcGxhY2VtZW50ID0gc3RydWN0XG4gIHR5cGUgZGF0YSA9XG4gICAgfCBWYWx1ZXMgOlxuICAgICAgICAnYSBDb250ZXh0LnQgKiAnYSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5zaW5nbGVfb3JfbWFueVxuICAgICAgICAtPiBkYXRhXG4gICAgfCBUZXh0IG9mIHN0cmluZ1xuXG4gIHR5cGUgdCA9IHsgc3RhcnQgOiBMZXhpbmcucG9zaXRpb247IHN0b3AgOiBMZXhpbmcucG9zaXRpb247IGRhdGEgOiBkYXRhIH1cblxuICBsZXQgbWFrZSB+Y29udGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPVxuICAgIHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBWYWx1ZXMgKGNvbnRleHQsIHJlcGwpIH1cblxuICBsZXQgbWFrZV90ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9IHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBUZXh0IHJlcGwgfVxuXG4gIGxldCB0ZXh0IGJsb2NrID1cbiAgICBtYXRjaCBibG9jay5kYXRhIHdpdGhcbiAgICB8IFRleHQgcyAtPiBzXG4gICAgfCBWYWx1ZXMgKGNvbnRleHQsIGdlbmVyYXRlZCkgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBwcmludGVyID0gQ29udGV4dC5wcmludGVyIGNvbnRleHQgaW5cbiAgICAgICAgICBtYXRjaCBnZW5lcmF0ZWQgd2l0aFxuICAgICAgICAgIHwgU2luZ2xlIHggLT4gU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHJpbnRlciB4XG4gICAgICAgICAgfCBNYW55IGwgLT5cbiAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBwZiBsIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICBwcmludGVyIHBwZiB4O1xuICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpKVxuICAgICAgICAgICAgICAgIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX3dzID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSBpblxuICAgICAgICBsZXQgc3RyaXBfd3MgcyBpIGxlbiA9XG4gICAgICAgICAgbGV0IGxlbiA9IHJlZiBsZW4gaW5cbiAgICAgICAgICB3aGlsZSAhbGVuID4gMCAmJiBpc193cyBzLltpICsgIWxlbiAtIDFdIGRvXG4gICAgICAgICAgICBsZW4gOj0gIWxlbiAtIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIFN0cmluZy5zdWIgcyB+cG9zOmkgfmxlbjohbGVuXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHBvcyA9XG4gICAgICAgICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggcyB0aGVuIFtdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGlkeCA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tX29wdCBzIHBvcyAnXFxuJyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHN0cmlwX3dzIHMgcG9zIChpZHggLSBwb3MpIDo6IFwiXFxuXCIgOjogbG9vcCBzIChpZHggKyAxKVxuICAgICAgICBpblxuICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAobG9vcCBzIDApXG5lbmRcblxub3BlbiBSZXBsYWNlbWVudFxuXG5tb2R1bGUgUmVwbGFjZW1lbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcGxhY2VtZW50LnQgbGlzdFxuXG4gICgqIE1lcmdlIGxvY2F0aW9ucyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIE92ZXJsYXBwaW5nIGxvY2F0aW9ucyBhcmUgbWVyZ2VkIGludG8gb25lLiBUaGVcbiAgICAgcmVzdWx0IGlzIHNvcnRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgdG8gdGhlIGVuZC4gKilcbiAgbGV0IGNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyA9XG4gICAgTGlzdC5pdGVyIHJlcGxzIH5mOihmdW4gcmVwbCAtPlxuICAgICAgICBpZlxuICAgICAgICAgIFN0cmluZy4oIDw+ICkgcmVwbC5zdGFydC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICAgIHx8IFN0cmluZy4oIDw+ICkgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZW5hbWUpXG4gICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IHRoZSByZXdyaXRpbmcgY29udGFpbnMgcGFydHMgZnJvbSBhbm90aGVyIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICBJdCBpcyB0b28gY29tcGxpY2F0ZWQgdG8gcmVjb25jaWxlIGl0IHdpdGggdGhlIHNvdXJjZTogJXMgb3IgJXMgXFxcbiAgICAgICAgICAgICBhbmQgJXNcIlxuICAgICAgICAgICAgcmVwbC5zdGFydC5wb3NfZm5hbWUgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICBhc3NlcnQgKHJlcGwuc3RhcnQucG9zX2NudW0gPD0gcmVwbC5zdG9wLnBvc19jbnVtKSk7XG4gICAgbGV0IHJlcGxzID1cbiAgICAgIExpc3Quc29ydCByZXBscyB+Y21wOihmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0IGQgPSBjb21wYXJlIGEuc3RhcnQucG9zX2NudW0gYi5zdG9wLnBvc19jbnVtIGluXG4gICAgICAgICAgaWYgZCA9IDAgdGhlblxuICAgICAgICAgICAgKCogUHV0IHRoZSBsYXJnZXN0IGZpcnN0LCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgW2ZpbHRlcl0gZnVuY3Rpb25zIGFsd2F5cyBwaWNrcyB1cFxuICAgICAgICAgICAgICAgdGhlIGxhcnRlc3QgZmlyc3Qgd2hlbiBzZXZlcmFsIGdlbmVyYXRlZCByZXBscyBzdGFydCBhdCB0aGUgc2FtZSBwb3NpdGlvbiAqKVxuICAgICAgICAgICAgY29tcGFyZSBiLnN0b3AucG9zX2NudW0gYS5zdG9wLnBvc19jbnVtXG4gICAgICAgICAgZWxzZSBkKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgcHJldiByZXBscyB+YWNjID1cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgKHByZXYgOjogYWNjKVxuICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID4gcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPj0gcmVwbC5zdG9wLnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgKCogW3JlcGxdIGlzIGluY2x1ZGVkIGluIFtwcmV2XSA9PiBza2lwIFtyZXBsXSAqKVxuICAgICAgICAgICAgICBmaWx0ZXIgcHJldiByZXBscyB+YWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogbG9jYXRpb25zIG9mIGdlbmVyYXRlZCBjb2RlIGFyZSBvdmVybGFwcGluZywgXFxcbiAgICAgICAgICAgICAgICAgY2Fubm90IHJlY29uY2lsZVwiXG4gICAgICAgICAgICAgICAgfmxvYzpcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID0gcmVwbC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2VuZCA9IHByZXYuc3RvcDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOihwcmV2IDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHJlcGxzIHdpdGggW10gLT4gW10gfCByZXBsIDo6IHJlcGxzIC0+IGZpbHRlciByZXBsIHJlcGxzIH5hY2M6W11cbmVuZFxuXG5sZXQgY291bnRfbmV3bGluZXMgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgU3RyaW5nLml0ZXIgcyB+ZjooZnVuY3Rpb24gJ1xcbicgLT4gbiA6PSAhbiArIDEgfCBfIC0+ICgpKTtcbiAgIW5cblxubGV0IGdlbmVyYXRlZF9jb2RlX2JlZ2luID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgQkVHSU4gfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfZW5kID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgRU5EICAgfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG50eXBlIG1vZGUgPSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3NcbnR5cGUgdGFyZ2V0ID0gT3V0cHV0IG9mIG1vZGUgfCBDb3JyZWN0ZWRcblxubGV0IHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIChwb3MgOiBMZXhpbmcucG9zaXRpb24pID1cbiAgbGV0IHJlYyBsb29wIGNudW0gPVxuICAgIGlmIGNudW0gPSBTdHJpbmcubGVuZ3RoIGNvbnRlbnRzIHRoZW4geyBwb3Mgd2l0aCBwb3NfY251bSA9IGNudW0gfVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGNvbnRlbnRzLltjbnVtXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gbG9vcCAoY251bSArIDEpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9zIHdpdGhcbiAgICAgICAgICAgIHBvc19jbnVtID0gY251bSArIDE7XG4gICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIDE7XG4gICAgICAgICAgICBwb3NfYm9sID0gY251bSArIDE7XG4gICAgICAgICAgfVxuICAgICAgfCBfIC0+IHBvc1xuICBpblxuICBsb29wIHBvcy5wb3NfY251bVxuXG5sZXQgd2l0aF9vdXRwdXQgfnN0eWxlciB+KGtpbmQgOiBLaW5kLnQpIGZuIH5mID1cbiAgbWF0Y2ggc3R5bGVyIHdpdGhcbiAgfCBOb25lIC0+IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnk6ZmFsc2UgfmZcbiAgfCBTb21lIGNtZCAtPlxuICAgICAgbGV0IHRtcF9mbiwgb2MgPVxuICAgICAgICBTdGRsaWIuRmlsZW5hbWUub3Blbl90ZW1wX2ZpbGUgXCJwcHhsaWJfZHJpdmVyXCJcbiAgICAgICAgICAobWF0Y2gga2luZCB3aXRoIEltcGwgLT4gXCIubWxcIiB8IEludGYgLT4gXCIubWxpXCIpXG4gICAgICBpblxuICAgICAgbGV0IGNtZCA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMlc1wiIGNtZFxuICAgICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgdG1wX2ZuKVxuICAgICAgICAgIChtYXRjaCBmbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgZm4gLT4gXCIgPiBcIiBeIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBmbilcbiAgICAgIGluXG4gICAgICBsZXQgbiA9XG4gICAgICAgIEV4bi5wcm90ZWN0eCB0bXBfZm4gfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmY6KGZ1biBfIC0+XG4gICAgICAgICAgICBFeG4ucHJvdGVjdHggb2MgfmZpbmFsbHk6Y2xvc2Vfb3V0IH5mO1xuICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZClcbiAgICAgIGluXG4gICAgICBpZiBuIDw+IDAgdGhlbiAoXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiY29tbWFuZCBleGl0ZWQgd2l0aCBjb2RlICVkOiAlc1xcblwiIG4gY21kO1xuICAgICAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgcmVjb25jaWxlID9zdHlsZXIgKHJlcGxzIDogUmVwbGFjZW1lbnRzLnQpIH5raW5kIH5jb250ZW50cyB+aW5wdXRfZmlsZW5hbWVcbiAgICB+b3V0cHV0IH5pbnB1dF9uYW1lIH50YXJnZXQgPVxuICBsZXQgcmVwbHMgPSBSZXBsYWNlbWVudHMuY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzIGluXG4gIGxldCBvdXRwdXRfbmFtZSA9IG1hdGNoIG91dHB1dCB3aXRoIE5vbmUgLT4gXCI8c3Rkb3V0PlwiIHwgU29tZSBmbiAtPiBmbiBpblxuICB3aXRoX291dHB1dCBvdXRwdXQgfnN0eWxlciB+a2luZCB+ZjooZnVuIG9jIC0+XG4gICAgICBsZXQgY29weV9pbnB1dCBwb3MgfnVwX3RvIH5saW5lIH5sYXN0X2lzX3RleHQgfmlzX3RleHQgPVxuICAgICAgICBsZXQgcG9zID0gaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zIGluXG4gICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHVwX3RvIHRoZW4gKFxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG4lKnNcIiBwb3MucG9zX2xudW0gaW5wdXRfbmFtZVxuICAgICAgICAgICAgICAgIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIHwgQ29ycmVjdGVkIC0+ICgpKTtcbiAgICAgICAgICBvdXRwdXRfc3Vic3RyaW5nIG9jIGNvbnRlbnRzIH5wb3M6cG9zLnBvc19jbnVtXG4gICAgICAgICAgICB+bGVuOih1cF90byAtIHBvcy5wb3NfY251bSk7XG4gICAgICAgICAgbGV0IGxpbmUgPSByZWYgKGxpbmUgKyAxKSBpblxuICAgICAgICAgIGZvciBpID0gcG9zLnBvc19jbnVtIHRvIHVwX3RvIC0gMSBkb1xuICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBjb250ZW50cy5baV0gJ1xcbicgdGhlbiBsaW5lIDo9ICFsaW5lICsgMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGxpbmUgPSAhbGluZSBpblxuICAgICAgICAgIGlmIChub3QgaXNfdGV4dCkgJiYgQ2hhci4oIDw+ICkgY29udGVudHMuW3VwX3RvIC0gMV0gJ1xcbicgdGhlbiAoXG4gICAgICAgICAgICBvdXRwdXRfY2hhciBvYyAnXFxuJztcbiAgICAgICAgICAgIGxpbmUgKyAxKVxuICAgICAgICAgIGVsc2UgbGluZSlcbiAgICAgICAgZWxzZSBsaW5lXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChjb3B5X2lucHV0IHBvcyB+dXBfdG86KFN0cmluZy5sZW5ndGggY29udGVudHMpIH5saW5lXG4gICAgICAgICAgICAgICAgIH5sYXN0X2lzX3RleHQgfmlzX3RleHQ6ZmFsc2VcbiAgICAgICAgICAgICAgICA6IGludClcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgICBsZXQgaXNfdGV4dCA9XG4gICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIGNvcHlfaW5wdXQgcG9zIH51cF90bzpyZXBsLnN0YXJ0LnBvc19jbnVtIH5saW5lIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgICAgICB+aXNfdGV4dFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuXCIgKGxpbmUgKyAxKSBvdXRwdXRfbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBDb3JyZWN0ZWQgLT4gbGluZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMgfmxhc3RfaXNfdGV4dDppc190ZXh0XG4gICAgICBhbmQgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzXG4gICAgICAgICAgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICB8IHJlcGwgOjogcmVwbHMnIC0+XG4gICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgICBsZXQgbGFzdF9pc190ZXh0ID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMnIH5sYXN0X2lzX3RleHRcbiAgICAgIGFuZCBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfZW5kKTtcbiAgICAgICAgbG9vcCBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gaW5wdXRfbmFtZTtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCB7IHN0YXJ0ID0geyBwb3NfY251bSA9IDA7IF8gfTsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luKTtcbiAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2VcbiAgICAgIHwgXyAtPiBsb29wIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2UpXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgbmV4dF9pZCA6IGludDtcbiAgbXV0YWJsZSBiaW5kaW5ncyA6IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIGxpc3Q7XG59XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHRfaWQgPSAwOyBiaW5kaW5ncyA9IFtdIH1cblxubGV0IHNhbml0aXplIHQgZSA9XG4gIG1hdGNoIHQuYmluZGluZ3Mgd2l0aFxuICB8IFtdIC0+IGVcbiAgfCBiaW5kaW5ncyAtPlxuICAgICAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgZS5wZXhwX2xvYyBpblxuICAgICAgQXN0LnBleHBfbGV0IE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBlXG5cbmxldCBxdW90ZSB0IChlIDogZXhwcmVzc2lvbikgPVxuICBsZXQgbG9jID0gZS5wZXhwX2xvYyBpblxuICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBsb2MgaW5cbiAgbGV0IG5hbWUgPSBcIl9fXCIgXiBJbnQudG9fc3RyaW5nIHQubmV4dF9pZCBpblxuICBsZXQgYmluZGluZ19leHByLCBxdW90ZWRfZXhwciA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgKCogT3B0aW1pemUgaWRlbnRpZmllciBxdW90aW5nIGJ5IGF2b2lkaW5nIGNsb3N1cmUuXG4gICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1wcHgvcHB4X2Rlcml2aW5nL3B1bGwvMjUyLiAqKVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPiAoZSwgQXN0LmV2YXIgbmFtZSlcbiAgICB8IF8gLT5cbiAgICAgICAgbGV0IGJpbmRpbmdfZXhwciA9XG4gICAgICAgICAgQXN0LnBleHBfZnVuIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgKGxldCB1bml0ID0gQXN0X2J1aWxkZXIuRGVmYXVsdC5Mb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIiBpblxuICAgICAgICAgICAgIEFzdC5wcGF0X2NvbnN0cnVjdCB1bml0IE5vbmUpXG4gICAgICAgICAgICBlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBxdW90ZWRfZXhwciA9IEFzdC5lYXBwbHkgKEFzdC5ldmFyIG5hbWUpIFsgQXN0LmV1bml0IF0gaW5cbiAgICAgICAgKGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIpXG4gIGluXG4gIGxldCBiaW5kaW5nID1cbiAgICBsZXQgcGF0ID0gQXN0LnB2YXIgbmFtZSBpblxuICAgIEFzdC52YWx1ZV9iaW5kaW5nIH5wYXQgfmV4cHI6YmluZGluZ19leHByXG4gIGluXG4gIHQuYmluZGluZ3MgPC0gYmluZGluZyA6OiB0LmJpbmRpbmdzO1xuICB0Lm5leHRfaWQgPC0gdC5uZXh0X2lkICsgMTtcbiAgcXVvdGVkX2V4cHJcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgbWtfYXR0cl9ub2xvYyB0eHQgPSBBc3RfaGVscGVyLkF0dHIubWsgTG9jYXRpb24ueyB0eHQ7IGxvYyA9IG5vbmUgfVxubGV0IGhpZGVfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5oaWRlXCIgKFBTdHIgW10pXG5sZXQgZm9jdXNfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5mb2N1c1wiIChQU3RyIFtdKVxuXG5sZXQgaGlkZV9wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGhpZGVfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG4iLCJvcGVuIEltcG9ydFxuXG5tb2R1bGUgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaW5zZXJ0IDogbm9kZV9uYW1lOnN0cmluZyAtPiBMb2NhdGlvbi50IC0+IHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBjb3ZlcmVkX2J5IDogdCAtPiBsb2M6TG9jYXRpb24udCAtPiBib29sXG4gICgqKiBbY292ZXJlZF9ieSB0IH5sb2MgPSB0cnVlXSBpZmYgW3RdIGlzIGNvdmVyZWQgYnkgW2xvY10gKilcblxuICB2YWwgZmluZF9vdXRzaWRlIDogTG9jYXRpb24udCAtPiB0IC0+IHN0cmluZyAqIExvY2F0aW9uLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWluX3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgbWF4X3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgcmFuZ2VzIDogKHN0cmluZyAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gIH1cblxuICBsZXQgZW1wdHkgPSB7IG1pbl9wb3MgPSBOb25lOyBtYXhfcG9zID0gTm9uZTsgcmFuZ2VzID0gW10gfVxuXG4gIGxldCByZWMgaW5zZXJ0IHJhbmdlcyAoKG5vZGVfbmFtZSwgbm9kZV9sb2MpIGFzIG5vZGUpID1cbiAgICBtYXRjaCByYW5nZXMgd2l0aFxuICAgIHwgW10gLT4gWyBub2RlIF1cbiAgICB8ICgoeF9uYW1lLCB4X2xvYykgYXMgeCkgOjogeHMgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24gaW5cbiAgICAgICAgaWYgY29tcGFyZV9wb3Mgbm9kZV9sb2MubG9jX3N0YXJ0IHhfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgbm9kZSA6OiB4IDo6IHhzXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZV9wb3MgeF9sb2MubG9jX3N0YXJ0IG5vZGVfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgeCA6OiBpbnNlcnQgeHMgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgICAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHgsICVzIG92ZXJsYXBzIHdpdGggJXMgYXQgbG9jYXRpb246QC4lYVwiXG4gICAgICAgICAgICBub2RlX25hbWUgeF9uYW1lIExvY2F0aW9uLnByaW50IHhfbG9jXG5cbiAgbGV0IG1pbl9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5taW5fcG9zIHAxIHAyKVxuXG4gIGxldCBtYXhfcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWF4X3BvcyBwMSBwMilcblxuICBsZXQgbG9uZ2VzdF9maXJzdCBsMSBsMiB+c3RvcF9hZnRlciA9XG4gICAgbGV0IHJlYyBsb29wIHhzIHlzIG4gPVxuICAgICAgbWF0Y2ggKHhzLCB5cywgbikgd2l0aFxuICAgICAgfCBbXSwgXywgXyB8IF8sIF8sIDAgLT4gKGwyLCBsMSlcbiAgICAgIHwgXywgW10sIF8gLT4gKGwxLCBsMilcbiAgICAgIHwgXyA6OiB4cywgXyA6OiB5cywgbiAtPiBsb29wIHhzIHlzIChuIC0gMSlcbiAgICBpblxuICAgIGxvb3AgbDEgbDIgc3RvcF9hZnRlclxuXG4gIGxldCB1bmlvbiB0MSB0MiA9XG4gICAgbGV0IGluaXQsIGwgPSBsb25nZXN0X2ZpcnN0IHQxLnJhbmdlcyB0Mi5yYW5nZXMgfnN0b3BfYWZ0ZXI6NDIgaW5cbiAgICBsZXQgcmFuZ2VzID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjppbnNlcnQgaW5cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyB0MS5taW5fcG9zIHQyLm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyB0MS5tYXhfcG9zIHQyLm1heF9wb3M7XG4gICAgICByYW5nZXM7XG4gICAgfVxuXG4gIGxldCBpbnNlcnQgfm5vZGVfbmFtZSBsb2MgdCA9XG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgKFNvbWUgbG9jLmxvY19zdGFydCkgdC5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgKFNvbWUgbG9jLmxvY19lbmQpIHQubWF4X3BvcztcbiAgICAgIHJhbmdlcyA9IGluc2VydCB0LnJhbmdlcyAobm9kZV9uYW1lLCBsb2MpO1xuICAgIH1cblxuICBsZXQgY292ZXJlZF9ieSB0IH5sb2MgPVxuICAgIG1hdGNoICh0Lm1pbl9wb3MsIHQubWF4X3Bvcykgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIG1pbl9wb3MsIFNvbWUgbWF4X3BvcyAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBtaW5fcG9zIGxvYy5sb2Nfc3RhcnQgPj0gMFxuICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtYXhfcG9zIGxvYy5sb2NfZW5kIDw9IDBcbiAgICB8IF8sIF8gLT5cbiAgICAgICAgKCogdGhlcmUgYXJlIG5vIG9wZW4gcmFuZ2VzICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4gIGxldCBmaW5kX291dHNpZGUgbG9jIHQgPVxuICAgIExpc3QuZmluZCB0LnJhbmdlcyB+ZjooZnVuIChfLCBsKSAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX3N0YXJ0IGwubG9jX3N0YXJ0ID4gMFxuICAgICAgICB8fCBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBsLmxvY19lbmQgPCAwKVxuZW5kXG5cbmxldCByZWxvY19wbXR5X2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtdHlfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG10eV9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbXR5X2xvYyA9IHsgcmVzLnBtdHlfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCByZWxvY19wbW9kX2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtb2RfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG1vZF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbW9kX2xvYyA9IHsgcmVzLnBtb2RfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jID1cbiAgTGlzdC5mb3JfYWxsIH5mOihmdW4gYXR0ciAtPlxuICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgYXR0ci5hdHRyX2xvYy5sb2NfZW5kID49IDApXG5cbmxldCBmaWxlIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxubGV0IHNhbWVfZmlsZV9zb19mYXIgPSByZWYgdHJ1ZVxuXG5sZXQgc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgZm5hbWUgPVxuICAoKiBUT0RPOiByZW1vdmUgdXNlcyBvZiBMb2NhdGlvbi5ub25lIGZyb20gdGhlIHBweGVzLiAqKVxuICBpZiBTdHJpbmcuZXF1YWwgZm5hbWUgXCJfbm9uZV9cIiB0aGVuIHRydWUgKCogZG8gbm90aGluZyBmb3Igbm93LiAqKVxuICBlbHNlXG4gICAgbWF0Y2ggIWZpbGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBmaWxlIDo9IFNvbWUgZm5hbWU7XG4gICAgICAgIHRydWVcbiAgICB8IFNvbWUgb3JpZ19mbmFtZSAtPlxuICAgICAgICBTdHJpbmcuZXF1YWwgb3JpZ19mbmFtZSBmbmFtZVxuICAgICAgICB8fFxuICAgICAgICAoc2FtZV9maWxlX3NvX2ZhciA6PSBmYWxzZTtcbiAgICAgICAgIGZhbHNlKVxuXG5sZXQgc2hvdWxkX2lnbm9yZSBsb2MgYXR0cnMgPVxuICAoKiBJZiB0aGUgZmlsZW5hbWUgY2hhbmdlZCwgdGhlbiB0aGVyZSB3ZXJlIGxpbmUgZGlyZWN0aXZlcywgYW5kIHRoZSBsb2NhdGlvbnNcbiAgICAgYXJlIGFsbCBtZXNzZWQgdXAuICopXG4gIChub3QgKHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lKSlcbiAgfHwgKCogSWdub3JlIHRoaW5ncyBleHBsaWNpdGx5IG1hcmtlZC4gKilcbiAgTGlzdC5leGlzdHNcbiAgICB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIFN0cmluZy5lcXVhbCBhdHRyLmF0dHJfbmFtZS50eHRcbiAgICAgICAgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUuYXR0cl9uYW1lLnR4dClcbiAgICBhdHRyc1xuXG5sZXQgcmVjIGV4dHJhY3RfY29uc3RyYWludCBlID1cbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIHwgUGV4cF9jb2VyY2UgKGUsIF8sIGN0KSAtPiBTb21lIChlLCBjdClcbiAgfCBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCkgLT5cbiAgICAgIE9wdGlvbi5tYXAgKGV4dHJhY3RfY29uc3RyYWludCBleHApIH5mOihmdW4gKGV4cCwgY3QpIC0+XG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGN0ICkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBkb19jaGVjayB+bm9kZV9uYW1lIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3MgPVxuICBpZiBub3QgIXNhbWVfZmlsZV9zb19mYXIgdGhlbiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICBlbHNlIGlmIG5vZGVfbG9jLmxvY19naG9zdCB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudW5pb24gY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuICBlbHNlIGlmIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmNvdmVyZWRfYnkgY2hpbGRyZW5zX2xvY3MgfmxvYzpub2RlX2xvYyB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWUgbm9kZV9sb2Mgc2libGluZ3NfbG9jc1xuICBlbHNlXG4gICAgbGV0IGNoaWxkX25hbWUsIGNoaWxkX2xvYyA9XG4gICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5maW5kX291dHNpZGUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICBpblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4OkAgdGhpcyAlcyBpcyBidWlsdCBmcm9tIGElcyB3aG9zZSBsb2NhdGlvbiBpcyBcXFxuICAgICAgIG91dHNpZGUgb2YgdGhpcyBub2RlJ3MuQC5DaGlsZCAlcyBmb3VuZCBhdDpAICVhXCJcbiAgICAgIG5vZGVfbmFtZVxuICAgICAgKChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBjaGlsZF9uYW1lIDAgd2l0aFxuICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIC0+IFwibiBcIlxuICAgICAgIHwgXyAtPiBcIiBcIilcbiAgICAgIF4gY2hpbGRfbmFtZSlcbiAgICAgIGNoaWxkX25hbWUgTG9jYXRpb24ucHJpbnQgY2hpbGRfbG9jXG5cbmxldCBlbmZvcmNlX2ludmFyaWFudHMgZm5hbWUgPVxuICBsZXQgKCkgPSBmaWxlIDo9IGZuYW1lIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgKCogVE9ETzogd2Ugc2hvdWxkIGdlbmVyYXRlIGEgY2xhc3Mgd2hpY2ggZW5mb3JjZXMgdGhlIGxvY2F0aW9uIGludmFyaWFudC5cbiAgICAgICBBbmQgdGhlbiB3ZSBzaG91bGQgb25seSBvdmVycmlkZSB0aGUgbWV0aG9kcyB3aGVyZSB3ZSBuZWVkIGFuIGVzY2FwZVxuICAgICAgIGhhdGNoIGJlY2F1c2UgdGhlIHBhcnNlciBpc24ndCBkb2luZyB0aGUgcmlnaHQgdGhpbmcuXG5cbiAgICAgICBUaGF0IHdvdWxkIGVuc3VyZSB0aGF0IHdlIHN0YXkgdXAgdG8gZGF0ZSBhcyB0aGUgQVNUIGNoYW5nZXMuICopXG5cbiAgICBtZXRob2QhIGxvbmdpZGVudF9sb2MgeCBzaWJsaW5ncyA9XG4gICAgICBpZiB4LmxvYy5sb2NfZ2hvc3QgdGhlbiBzaWJsaW5nc1xuICAgICAgZWxzZSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZTpcImlkZW50XCIgeC5sb2Mgc2libGluZ3NcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHJmX2xvYyB4LnByZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNyb3dfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicm93IGZpZWxkXCIgeC5wcmZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb2JqZWN0X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9mX2xvYyB4LnBvZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29iamVjdF9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvYmplY3QgZmllbGRcIiB4LnBvZl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGJpbmRpbmdfb3AgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2JpbmRpbmdfb3AgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImJpbmRpbmcgb3BlcmF0b3JcIiB4LnBib3BfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmFsX2xvYyB4LnB2YWxfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBkZXNjcmlwdGlvblwiIHgucHZhbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwZV9sb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBkZWNsYXJhdGlvblwiIHgucHR5cGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBsZF9sb2MgeC5wbGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJsYWJlbCBkZWNsYXJhdGlvblwiIHgucGxkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2RfbG9jIHgucGNkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIiB4LnBjZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXh0X2xvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZXh0ZW5zaW9uXCIgeC5wdHlleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXh0X2xvYyB4LnBleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCIgeC5wZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdHlfbG9jIHgucGN0eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc190eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGVcIiB4LnBjdHlfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdGZfbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZSBmaWVsZFwiIHgucGN0Zl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2lfbG9jIHgucGNpX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzc1wiIHgucGNpX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2xfbG9jIHgucGNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZXhwcmVzc2lvblwiIHgucGNsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2ZfbG9jIHgucGNmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZmllbGRcIiB4LnBjZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzaWdfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInNpZ25hdHVyZSBpdGVtXCIgeC5wc2lnX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1kX2xvYyB4LnBtZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZGVjbGFyYXRpb25cIiB4LnBtZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXNfbG9jIHgucG1zX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3N1YnN0aXR1dGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgc3Vic3RpdHV0aW9uXCIgeC5wbXNfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdGRfbG9jIHgucG10ZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCIgeC5wbXRkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb3Blbl9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9wZW5fbG9jIHgucG9wZW5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvcGVuX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib3BlblwiIHgucG9wZW5fbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGluY2xfbG9jIHgucGluY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiaW5jbHVkZVwiIHgucGluY2xfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc3RyX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzdHJ1Y3R1cmUgaXRlbVwiIHgucHN0cl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1iX2xvYyB4LnBtYl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBiaW5kaW5nXCIgeC5wbWJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSAqKVxuICAgICgqIHRoZSB0eXBlIGNvbnN0cmFpbnQgaXMgZHVwbGljYXRlZC4gICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2Yl9sb2MgeC5wdmJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBtYXRjaCAoeC5wdmJfcGF0LnBwYXRfZGVzYywgZXh0cmFjdF9jb25zdHJhaW50IHgucHZiX2V4cHIpIHdpdGhcbiAgICAgICAgICAoKiBsZXQgeCA6IHR5cGUgYSBiIGMuIGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8gOjogXywgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICgqIGxldCB4IDogIGN0ID0gZVxuICAgICAgICAgICAgIGxldCB4IDo+IGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnQgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChbXSwgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0cC5wdHlwX2xvYyBjdGUucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBfYWNjID0gc2VsZiNjb3JlX3R5cGUgY3RwIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGJpbmRpbmdcIiB4LnB2Yl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTVQgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSB0eXBlLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIHR5cGUuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbXR5X2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgeC5wbXR5X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGVcIiB4LnBtdHlfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1FIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgZXhwci4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSBleHByLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG1vZF9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHgucG1vZF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBleHByZXNzaW9uXCIgeC5wbW9kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyB4LnB0eXBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb3JlIHR5cGVcIiB4LnB0eXBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiBBbmQgYWdhaW4gLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyB4LnBleHBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHByZXNzaW9uXCIgeC5wZXhwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogLi4uIGFuZCBhZ2FpbiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNwYXR0ZXJuIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgeC5wcGF0X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicGF0dGVyblwiIHgucHBhdF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiAgKilcbiAgICAoKiB0aGUgY29uc3RydWN0IGVxdWFscyB0aGUgbG9jYXRpb24gb2YgdGhlIHR5cGVfZXhjZXB0aW9uICopXG4gICAgKCogKGFuZCBzbyBjb3ZlcnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzKS4gICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleG5fbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBpbml0ID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgbGV0IGNoaWxkc19sb2NzID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4LnB0eWV4bl9jb25zdHJ1Y3RvciBpbml0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyc19sb2NzID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXMgaW5pdCBpblxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBhdHRyc19sb2NzIHNpYmxpbmdzX2xvY3MpO1xuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGNoaWxkc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSAqKVxuICAgICgqIGxocyBpcyBzb21ldGltZXMgaW5jbHVkZWQgaW4gdGhlIHJocy4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB3aXRoX3R5cGUgKF8sIHRkZWNsKSB8IFB3aXRoX3R5cGVzdWJzdCAoXywgdGRlY2wpIC0+XG4gICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIHRkZWNsIHNpYmxpbmdzX2xvY1xuICAgICAgfCBfIC0+IHN1cGVyI3dpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjoqKVxuICAgICgqIC0gRm9vLnsgYmFyOyAuLi4gfSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uWyBiYXI7IC4uLiBdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby4oIGJhcjsgLi4uICkgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gbWV0aG9kIHggOiB0eXBlIGEuIC4uLiA9IC4uLiAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgPC0gYmF6ICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX3JlY29yZCAobGFiZWxzLCBleHByX28pIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAobGlkLCBlKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBlLnBleHBfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICgqIHB1bm5pbmcuICopXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgICAgICBpblxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBleHByX28gYWNjXG4gICAgICB8IFBleHBfb3BlblxuICAgICAgICAgICgoeyBwb3Blbl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2lkZW50IGxpZDsgXyB9OyBfIH0gYXMgb3BuKSwgZSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydCA9IDBcbiAgICAgICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19lbmQgZS5wZXhwX2xvYy5sb2NfZW5kIDw+IDAgLT5cbiAgICAgICAgICAoKiBsZXQncyByZWxvY2F0ZSAuLi4gKilcbiAgICAgICAgICBsZXQgZV9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsaWQubG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb25fZGVzY1xuICAgICAgICAgICAgKFBleHBfb3BlbiAob3BuLCB7IGUgd2l0aCBwZXhwX2xvYyA9IGVfbG9jIH0pKVxuICAgICAgICAgICAgYWNjXG4gICAgICB8IFBleHBfcG9seSAoZSwgU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXywgY3QpOyBfIH0pIC0+IChcbiAgICAgICAgICBtYXRjaCBleHRyYWN0X2NvbnN0cmFpbnQgZSB3aXRoXG4gICAgICAgICAgfCBTb21lIChlLCBjdGUpIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdGUucHR5cF9sb2MgY3QucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGN0IGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBQZXhwX2FwcGx5ICh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBsaWQ7IF8gfTsgXyB9LCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTG9uZ2lkZW50Lmxhc3RfZXhuIGxpZCB3aXRoXG4gICAgICAgICAgfCBpZFxuICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IGlkIH5wcmVmaXg6XCIuXCJcbiAgICAgICAgICAgICAgICAgJiYgKFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKCk8LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW108LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9XCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie308LVwiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xpc3QgKGZ1biAoXywgZSkgLT4gc2VsZiNleHByZXNzaW9uIGUpIGFyZ3MgYWNjXG4gICAgICAgICAgfCBleGNlcHRpb24gXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6ICAgICAgICAgICAgICopXG4gICAgKCogLSBwdW5uaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSByZWNvcmQgZmllbGQgd2l0aCB0eXBlIGNvbnN0cmFpbnQuICAgICAgICAgICAgICAgICopXG4gICAgKCogLSB1bnBhY2sgbG9jYXRpb25zIGJlaW5nIGluY29ycmVjdCB3aGVuIGNvbnN0cmFpbmVkICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9yZWNvcmQgKGxhYmVscywgXykgLT5cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGxpZCwgcGF0KSBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBwYXQucHBhdF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgcGF0LnBwYXRfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAoKiBzaW1wbGUgcHVubmluZyEgKilcbiAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAocCwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHAgYWNjXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcGF0IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYXQgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHsgcHBhdF9kZXNjID0gUHBhdF91bnBhY2sgYTsgXyB9LCBiKSAtPlxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogZmFrZSBzdHJ1Y3R1cmUgZm9yIGEgZ2VuZXJhdGl2ZSBhcmd1bWVudCBjb3ZlcnMgdGhlICAgICAqKVxuICAgICgqIGxvY2F0aW9uIG9mIHRoZSBmdW5jdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfYXBwbHkgKG0sIHsgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107IHBtb2RfbG9jOyBfIH0pXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbS5wbW9kX2xvYy5sb2Nfc3RhcnQgcG1vZF9sb2MubG9jX3N0YXJ0ID0gMCAtPlxuICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIG0gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBvcGVuX2luZm9zIGZvciBQY2xfb3BlbiBvbmx5IGNvdmVycyB0aGUgXCJvcGVuXCIga2V5d29yZCAgKilcbiAgICAoKiBhbmQgbm90IHRoZSBtb2R1bGUgb3BlbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9vcGVuIChvZCwgY2UpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjZSBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfb3BlbiAob2QsIGN0KSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBkb2NzdHJpbmdzIGhhdmUgICAgKilcbiAgICAoKiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgaXRlbSB0aGV5IGdldCBhdHRhY2hlZCB0by4gICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHggYWNjID1cbiAgICAgIG1hdGNoIHguYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwuZG9jXCIgfCBcIm9jYW1sLnRleHRcIiAtPiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNhdHRyaWJ1dGUgeCBhY2NcbiAgZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuIEltcG9ydFxub3BlbiBVdGlsc1xub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBBcmcgPSBTdGRsaWIuQXJnXG5cbmxldCBleGVfbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxubGV0IGFyZ3MgPSByZWYgW11cbmxldCBhZGRfYXJnIGtleSBzcGVjIH5kb2MgPSBhcmdzIDo9IChrZXksIHNwZWMsIGRvYykgOjogIWFyZ3NcbmxldCBsb2NfZm5hbWUgPSByZWYgTm9uZVxubGV0IHBlcmZvcm1fY2hlY2tzID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3NcbmxldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9uc1xubGV0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrID0gcmVmIE9wdGlvbnMucGVyZm9ybV9sb2NhdGlvbnNfY2hlY2tcbmxldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCA9IHJlZiBmYWxzZVxubGV0IGFwcGx5X2xpc3QgPSByZWYgTm9uZVxubGV0IHByZXByb2Nlc3NvciA9IHJlZiBOb25lXG5sZXQgbm9fbWVyZ2UgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zID0gcmVmIGZhbHNlXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgT3B0aW9ucy5kaWZmX2NvbW1hbmRcbmxldCBwcmV0dHkgPSByZWYgZmFsc2VcbmxldCBzdHlsZXIgPSByZWYgTm9uZVxubGV0IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA9IHJlZiBOb25lXG5sZXQgY29ycmVjdGVkX3N1ZmZpeCA9IHJlZiBcIi5wcHgtY29ycmVjdGVkXCJcblxubGV0IGdob3N0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgbWV0aG9kISBsb2NhdGlvbiBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICBlbmRcblxubGV0IGNob3BfcHJlZml4IH5wcmVmaXggeCA9XG4gIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeCB4IHRoZW5cbiAgICBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggeCAoU3RyaW5nLmxlbmd0aCBwcmVmaXgpKVxuICBlbHNlIE5vbmVcblxubGV0IGdldF9kZWZhdWx0X3BhdGggKGxvYyA6IExvY2F0aW9uLnQpID1cbiAgbGV0IGZuYW1lID0gbG9jLmxvY19zdGFydC5wb3NfZm5hbWUgaW5cbiAgbWF0Y2ggY2hvcF9wcmVmaXggfnByZWZpeDpcIi4vXCIgZm5hbWUgd2l0aFxuICB8IFNvbWUgZm5hbWUgLT4gZm5hbWVcbiAgfCBOb25lIC0+IGZuYW1lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3N0ciA6IHN0cnVjdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzdHJfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zaWcgOiBzaWduYXR1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc2lnX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubW9kdWxlIExpbnRfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTG9jYXRpb24udCAqIHN0cmluZ1xuXG4gIGxldCBvZl9zdHJpbmcgbG9jIHMgPSAobG9jLCBzKVxuZW5kXG5cbm1vZHVsZSBDb29raWVzID0gc3RydWN0XG4gIHR5cGUgdCA9IFRcblxuICBsZXQgZ2l2ZW5fdGhyb3VnaF9jbGkgPSByZWYgW11cblxuICBsZXQgZ2V0IFQgbmFtZSBwYXR0ZXJuID1cbiAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZSBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcblxuICBsZXQgZ2V0X3JlcyBUIG5hbWUgcGF0dGVybiA9XG4gICAgbWF0Y2hcbiAgICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lIChPayBlKSAtPiBPayAoU29tZSBlKVxuICAgIHwgU29tZSAoRXJyb3IgZSkgLT4gRXJyb3IgZVxuXG4gIGxldCBzZXQgVCBuYW1lIGV4cHIgPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuc2V0X2Nvb2tpZSBuYW1lIChTZWxlY3RlZF9hc3QudG9fb2NhbWwgRXhwcmVzc2lvbiBleHByKVxuXG4gIGxldCBoYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX2hhbmRsZXIgZiA9IGhhbmRsZXJzIDo9ICFoYW5kbGVycyBAIFsgZiBdXG5cbiAgbGV0IGFkZF9zaW1wbGVfaGFuZGxlciBuYW1lIHBhdHRlcm4gfmYgPVxuICAgIGFkZF9oYW5kbGVyIChmdW4gVCAtPiBmIChnZXQgVCBuYW1lIHBhdHRlcm4pKVxuXG4gIGxldCBhY2tub3dsZWRnZV9jb29raWVzIFQgPSBMaXN0Lml0ZXIgIWhhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG4gIGxldCBwb3N0X2hhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfcG9zdF9oYW5kbGVyIGYgPSBwb3N0X2hhbmRsZXJzIDo9ICFwb3N0X2hhbmRsZXJzIEAgWyBmIF1cbiAgbGV0IGNhbGxfcG9zdF9oYW5kbGVycyBUID0gTGlzdC5pdGVyICFwb3N0X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG5lbmRcblxubW9kdWxlIEluc3RydW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBCZWZvcmUgfCBBZnRlclxuXG4gIHR5cGUgdCA9IHtcbiAgICB0cmFuc2Zvcm1hdGlvbiA6XG4gICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudDtcbiAgICBwb3NpdGlvbiA6IHBvcztcbiAgfVxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb24gY3R4IHN0ID0gcmV0dXJuICh0cmFuc2Zvcm1hdGlvbiBjdHggc3QpIGluXG4gICAgICB7IHRyYW5zZm9ybWF0aW9uOyBwb3NpdGlvbiB9XG4gIGVuZFxuXG4gIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgbGV0IHRyYW5zZm9ybWF0aW9uIF8gc3QgPSB0cmFuc2Zvcm1hdGlvbiBzdCBpblxuICAgIFYyLm1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uXG5lbmRcblxubW9kdWxlIFRyYW5zZm9ybSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBhbGlhc2VzIDogc3RyaW5nIGxpc3Q7XG4gICAgaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgKiBQYXJzZXRyZWUuc3RydWN0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAqIFBhcnNldHJlZS5zaWduYXR1cmUpXG4gICAgICBvcHRpb247XG4gICAgaW5zdHJ1bWVudCA6IEluc3RydW1lbnQudCBvcHRpb247XG4gICAgcnVsZXMgOiBDb250ZXh0X2ZyZWUuUnVsZS50IGxpc3Q7XG4gICAgcmVnaXN0ZXJlZF9hdCA6IENhbGxlcl9pZC50O1xuICB9XG5cbiAgbGV0IGhhc19uYW1lIHQgbmFtZSA9XG4gICAgU3RyaW5nLmVxdWFsIG5hbWUgdC5uYW1lIHx8IExpc3QuZXhpc3RzIH5mOihTdHJpbmcuZXF1YWwgbmFtZSkgdC5hbGlhc2VzXG5cbiAgbGV0IGFsbCA6IHQgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgcHJpbnRfY2FsbGVyX2lkIG9jIChjYWxsZXJfaWQgOiBDYWxsZXJfaWQudCkgPVxuICAgIG1hdGNoIGNhbGxlcl9pZCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dF9zdHJpbmcgb2MgXCI8dW5rbm93biBsb2NhdGlvbj5cIlxuICAgIHwgU29tZSBsb2MgLT4gUHJpbnRmLmZwcmludGYgb2MgXCIlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcblxuICBsZXQgcmVnaXN0ZXIgPyhleHRlbnNpb25zID0gW10pID8ocnVsZXMgPSBbXSkgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG4gICAgICA/aW5zdHJ1bWVudCA/KGFsaWFzZXMgPSBbXSkgbmFtZSA9XG4gICAgbGV0IHJ1bGVzID0gTGlzdC5tYXAgZXh0ZW5zaW9ucyB+ZjpDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gQCBydWxlcyBpblxuICAgIGxldCBjYWxsZXJfaWQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOlsgU3RkbGliLl9fRklMRV9fIF0gaW5cbiAgICAobWF0Y2ggTGlzdC5maWx0ZXIgIWFsbCB+ZjooZnVuIGN0IC0+IGhhc19uYW1lIGN0IG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBjdCA6OiBfIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiV2FybmluZzogY29kZSB0cmFuc2Zvcm1hdGlvbiAlcyByZWdpc3RlcmVkIHR3aWNlLlxcblwiXG4gICAgICAgICAgbmFtZTtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gZmlyc3QgdGltZSB3YXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWRcbiAgICAgICAgICBjdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBzZWNvbmQgdGltZSBpcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZCBjYWxsZXJfaWQpO1xuICAgIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBjdCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIGFsaWFzZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW1wbDtcbiAgICAgICAgaW50ZjtcbiAgICAgICAgbGludF9pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgbGludF9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50O1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gY2FsbGVyX2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgYWxsIDo9IGN0IDo6ICFhbGxcblxuICBsZXQgcmVjIGxhc3QgcHJldiBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgbG9jX29mX2xpc3QgfmdldF9sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGZpcnN0IDogTG9jYXRpb24udCA9IGdldF9sb2MgeCBpblxuICAgICAgICBsZXQgbGFzdCA9IGdldF9sb2MgKGxhc3QgeCBsKSBpblxuICAgICAgICBTb21lIHsgZmlyc3Qgd2l0aCBsb2NfZW5kID0gbGFzdC5sb2NfZW5kIH1cblxuICBsZXQgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgdCB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IHsgcnVsZXM7IGVuY2xvc2VfaW1wbDsgZW5jbG9zZV9pbnRmOyBpbXBsOyBpbnRmOyBfIH0gPSB0IGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBuZXcgQ29udGV4dF9mcmVlLm1hcF90b3BfZG93blxuICAgICAgICBydWxlcyB+ZW1iZWRfZXJyb3JzIH5nZW5lcmF0ZWRfY29kZV9ob29rOmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgaW5cbiAgICBsZXQgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIGNvbnRleHQgd2hvbGVfbG9jIGYgPVxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID0gZiB3aG9sZV9sb2MgaW5cbiAgICAgIChtYXRjaCB3aG9sZV9sb2Mgd2l0aFxuICAgICAgfCBTb21lIChsb2MgOiBMb2NhdGlvbi50KSAtPiAoXG4gICAgICAgICAgbGV0IGxvY19oZWFkZXIgPSB7IGxvYyB3aXRoIGxvY19lbmQgPSBsb2MubG9jX3N0YXJ0IH0gaW5cbiAgICAgICAgICBsZXQgbG9jX2Zvb3RlciA9IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIChtYXRjaCBoZWFkZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2hlYWRlciAoTWFueSBoZWFkZXIpKTtcbiAgICAgICAgICBtYXRjaCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2Zvb3RlciAoTWFueSBmb290ZXIpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBoZWFkZXIgQCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhvb2suZiBjb250ZXh0IGxvYyAoTWFueSBsKSkpO1xuICAgICAgKGhlYWRlciwgZm9vdGVyKVxuICAgIGluXG4gICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoIFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgaW5cbiAgICBsZXQgbWFwX2ltcGwgY3R4dCBzdF93aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc3QgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHN0X3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW1wbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHN0IH5nZXRfbG9jOihmdW4gc3QgLT4gc3QuUGFyc2V0cmVlLnBzdHJfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTdHJ1Y3R1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzdHJ1Y3R1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHN0OyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc3QgLT4gbWF0Y2ggaW1wbCB3aXRoIE5vbmUgLT4gcmV0dXJuIHN0IHwgU29tZSBmIC0+IGYgY3R4dCBzdFxuICAgIGluXG4gICAgbGV0IG1hcF9pbnRmIGN0eHQgc2dfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHNnID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzZ193aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ludGYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzZyB+Z2V0X2xvYzooZnVuIHNnIC0+IHNnLlBhcnNldHJlZS5wc2lnX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU2lnbmF0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc2lnbmF0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzZzsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHNnIC0+IG1hdGNoIGludGYgd2l0aCBOb25lIC0+IHJldHVybiBzZyB8IFNvbWUgZiAtPiBmIGN0eHQgc2dcbiAgICBpblxuICAgIHsgdCB3aXRoIGltcGwgPSBTb21lIG1hcF9pbXBsOyBpbnRmID0gU29tZSBtYXBfaW50ZiB9XG5cbiAgbGV0IGJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+aG9vayB+cnVsZXMgfmVuY2xvc2VfaW1wbCB+ZW5jbG9zZV9pbnRmXG4gICAgICB+aW5wdXRfbmFtZSA9XG4gICAgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmhvb2sgfmlucHV0X25hbWVcbiAgICAgIHtcbiAgICAgICAgbmFtZSA9IFwiPGJ1aWx0aW46Y29udGV4dC1mcmVlPlwiO1xuICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICBydWxlcztcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IENhbGxlcl9pZC5nZXQgfnNraXA6W107XG4gICAgICB9XG5cbiAgbGV0IHBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgdHMgPVxuICAgIGxldCBiZWZvcmVfaW5zdHJzLCBhZnRlcl9pbnN0cnMsIHJlc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgdHMgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKGJlZl9pLCBhZnRfaSwgcmVzdCkgdCAtPlxuICAgICAgICAgIGxldCByZWR1Y2VkX3QgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0IHdpdGhcbiAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmIGluc3RyID1cbiAgICAgICAgICAgIChpbnN0ci5JbnN0cnVtZW50LnBvc2l0aW9uLCBpbnN0ci5JbnN0cnVtZW50LnRyYW5zZm9ybWF0aW9uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggT3B0aW9uLm1hcCB0Lmluc3RydW1lbnQgfmYgd2l0aFxuICAgICAgICAgIHwgU29tZSAoQmVmb3JlLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBiZWZfaSxcbiAgICAgICAgICAgICAgICBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBTb21lIChBZnRlciwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIGJlZl9pLFxuICAgICAgICAgICAgICAgIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgTm9uZSAtPiAoYmVmX2ksIGFmdF9pLCByZWR1Y2VkX3QgOjogcmVzdCkpXG4gICAgaW5cbiAgICAoIGBMaW50ZXJzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ltcGwgfHwgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ludGYgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPGxpbnQ6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSB0LmxpbnRfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSB0LmxpbnRfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYFByZXByb2Nlc3NcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ltcGxcbiAgICAgICAgICAgICAgIHx8IE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbnRmXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPHByZXByb2Nlc3M6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gdC5wcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IHQucHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgYFJlc3QgcmVzdCApXG5lbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybS5yZWdpc3RlclxuXG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG4gICAgICA9XG4gICAgbGV0IGltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBpbXBsIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU3RydWN0dXJlKVxuICAgIGluXG4gICAgbGV0IGludGYgPVxuICAgICAgT3B0aW9uLm1hcCBpbnRmIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU2lnbmF0dXJlKVxuICAgIGluXG4gICAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuZW5kXG5cbmxldCBhZGRfY3R4dF9hcmcgKGYgOiAnYSAtPiAnYikgOiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2IgPVxuIGZ1biBfIHggLT4gZiB4XG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmID9pbXBsXG4gICAgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW1wbCA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbnRmID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ltcGwgPSBPcHRpb24ubWFwIGxpbnRfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW50ZiA9IE9wdGlvbi5tYXAgbGludF9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbXBsID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ludGYgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcblxubGV0IHJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24gfm5hbWUgPyhhbGlhc2VzID0gW10pIH5pbXBsIH5pbnRmID1cbiAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gbmFtZSB+aW1wbCB+aW50ZiB+YWxpYXNlc1xuW0BAd2FybmluZyBcIi0xNlwiXVxuKCogVGhpcyBmdW5jdGlvbiB0cmlnZ2VycyBhIHdhcm5pbmcgMTYgYXMgb2Ygb2NhbWwgNC4xMiAqKVxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmXG5cbmxldCBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBuYW1lIH5vbGRfZHJvcHBlZCB+bmV3X2Ryb3BwZWQgPVxuICBsZXQgcHJpbnRfZGlmZiB3aGF0IGEgYiA9XG4gICAgbGV0IGRpZmYgPVxuICAgICAgTGlzdC5maWx0ZXIgYSB+ZjooZnVuIChuYW1lIDogXyBMb2MudCkgLT5cbiAgICAgICAgICBub3RcbiAgICAgICAgICAgIChMaXN0LmV4aXN0cyBiIH5mOihmdW4gKG5hbWUnIDogXyBMb2NhdGlvbi5sb2MpIC0+XG4gICAgICAgICAgICAgICAgIG5hbWUudHh0ID09IG5hbWUnLnR4dCkpKVxuICAgIGluXG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGRpZmYpIHRoZW4gKFxuICAgICAgUHJpbnRmLmVwcmludGYgXCJUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgJXMgYWZ0ZXIgYXBwbHlpbmcgJXM6XFxuXCIgd2hhdFxuICAgICAgICBuYW1lO1xuICAgICAgTGlzdC5pdGVyIGRpZmYgfmY6KGZ1biB7IExvY2F0aW9uLnR4dDsgbG9jIH0gLT5cbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCItICVhOiAlc1xcblwiIExvY2F0aW9uLnByaW50IGxvYyB0eHQpO1xuICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQC5cIilcbiAgaW5cbiAgcHJpbnRfZGlmZiBcImRpc2FwcGVhcmVkXCIgbmV3X2Ryb3BwZWQgb2xkX2Ryb3BwZWQ7XG4gIHByaW50X2RpZmYgXCJyZWFwcGVhcmVkXCIgb2xkX2Ryb3BwZWQgbmV3X2Ryb3BwZWRcblxubGV0IGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICB+aW5wdXRfbmFtZSA9XG4gIGxldCBjdHMgPVxuICAgIG1hdGNoICFhcHBseV9saXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5yZXYgIVRyYW5zZm9ybS5hbGxcbiAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgICBMaXN0LmZpbmQgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gIGluXG4gIGxldCAoIGBMaW50ZXJzIGxpbnRlcnMsXG4gICAgICAgIGBQcmVwcm9jZXNzIHByZXByb2Nlc3MsXG4gICAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgICBgUmVzdCBjdHMgKSA9XG4gICAgVHJhbnNmb3JtLnBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgY3RzXG4gIGluXG4gICgqIEFsbG93IG9ubHkgb25lIHByZXByb2Nlc3NvciB0byBhc3N1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAqKVxuICAoaWYgTGlzdC5sZW5ndGggcHJlcHJvY2VzcyA+IDEgdGhlblxuICAgICBsZXQgcHAgPVxuICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QubWFwIHByZXByb2Nlc3MgfmY6KGZ1biB0IC0+IHQubmFtZSkpXG4gICAgIGluXG4gICAgIGxldCBlcnIgPVxuICAgICAgIFByaW50Zi5zcHJpbnRmIFwiQXQgbW9zdCBvbmUgcHJlcHJvY2Vzc29yIGlzIGFsbG93ZWQsIHdoaWxlIGdvdDogJXNcIiBwcFxuICAgICBpblxuICAgICBmYWlsd2l0aCBlcnIpO1xuICBsZXQgbWFrZV9nZW5lcmljIHRyYW5zZm9ybXMgPVxuICAgIGlmICFub19tZXJnZSB0aGVuXG4gICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zXG4gICAgICAgIH5mOlxuICAgICAgICAgIChUcmFuc2Zvcm0ubWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmVtYmVkX2Vycm9ycyB+aG9vayB+dG9vbF9uYW1lXG4gICAgICAgICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lKVxuICAgIGVsc2VcbiAgICAgIChsZXQgZ2V0X2VuY2xvc2VycyB+ZiA9XG4gICAgICAgICBMaXN0LmZpbHRlcl9tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGYgY3Qgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoY3QubmFtZSwgeCkpXG4gICAgICAgICAoKiBTb3J0IHRoZW0gdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcgKilcbiAgICAgICAgIHw+IExpc3Quc29ydCB+Y21wOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpXG4gICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgICBpblxuXG4gICAgICAgbGV0IHJ1bGVzID1cbiAgICAgICAgIExpc3QubWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QucnVsZXMpXG4gICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgIGFuZCBpbXBsX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ltcGwpXG4gICAgICAgYW5kIGludGZfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW50ZikgaW5cbiAgICAgICBtYXRjaCAocnVsZXMsIGltcGxfZW5jbG9zZXJzLCBpbnRmX2VuY2xvc2Vycykgd2l0aFxuICAgICAgIHwgW10sIFtdLCBbXSAtPiB0cmFuc2Zvcm1zXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAgIGxldCBtZXJnZV9lbmNsb3NlciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgfCBlbmNsb3NlcnMgLT5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChmdW4gY3R4dCBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzLCBmb290ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgZW5jbG9zZXJzIH5mOihmdW4gZiAtPiBmIGN0eHQgbG9jKSB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBMaXN0LmNvbmNhdCBoZWFkZXJzIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZm9vdGVycyA9IExpc3QuY29uY2F0IChMaXN0LnJldiBmb290ZXJzKSBpblxuICAgICAgICAgICAgICAgICAgICAgKGhlYWRlcnMsIGZvb3RlcnMpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBUcmFuc2Zvcm0uYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ydWxlcyB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW1wbDoobWVyZ2VfZW5jbG9zZXIgaW1wbF9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW50ZjoobWVyZ2VfZW5jbG9zZXIgaW50Zl9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZVxuICAgICAgICAgICA6OiB0cmFuc2Zvcm1zKVxuICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCAoY3QuaW1wbCwgY3QuaW50Zikgd2l0aCBOb25lLCBOb25lIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICBpblxuICBsaW50ZXJzIEAgcHJlcHJvY2VzcyBAIGJlZm9yZV9pbnN0cnMgQCBtYWtlX2dlbmVyaWMgY3RzIEAgYWZ0ZXJfaW5zdHJzXG5cbmxldCBhcHBseV90cmFuc2Zvcm1zIH50b29sX25hbWUgfmZpbGVfcGF0aCB+ZmllbGQgfmxpbnRfZmllbGQgfmRyb3BwZWRfc29fZmFyXG4gICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnMgYXN0ID1cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfnRvb2xfbmFtZSB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfmlucHV0X25hbWVcbiAgaW5cbiAgbGV0IGZpbmlzaCAoYXN0LCBfZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycykgPVxuICAgICggYXN0LFxuICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnMgfmY6KGZ1biAobG9jLCBzKSAtPlxuICAgICAgICAgIENvbW1vbi5hdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyksXG4gICAgICBlcnJvcnMgKVxuICBpblxuICBsZXQgYWNjID1cbiAgICBMaXN0LmZvbGRfbGVmdCBjdHMgfmluaXQ6KGFzdCwgW10sIFtdLCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoYXN0LCBkcm9wcGVkLCAobGludF9lcnJvcnMgOiBfIGxpc3QpLCBlcnJvcnMpIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgICAgICAgbWF0Y2ggbGludF9maWVsZCBjdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IChsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IChsaW50X2Vycm9ycyBAIGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAobGludF9lcnJvcnMsIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycykpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZpZWxkIGN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgKGFzdCwgbW9yZV9lcnJvcnMpLCBlcnJvcnMgPVxuICAgICAgICAgICAgICB0cnkgKGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAoKGFzdCwgW10pLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRyb3BwZWQgPVxuICAgICAgICAgICAgICBpZiAhZGVidWdfYXR0cmlidXRlX2Ryb3AgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IG5ld19kcm9wcGVkID0gZHJvcHBlZF9zb19mYXIgYXN0IGluXG4gICAgICAgICAgICAgICAgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgY3QubmFtZSB+b2xkX2Ryb3BwZWQ6ZHJvcHBlZFxuICAgICAgICAgICAgICAgICAgfm5ld19kcm9wcGVkO1xuICAgICAgICAgICAgICAgIG5ld19kcm9wcGVkKVxuICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycyBAIG1vcmVfZXJyb3JzKSlcbiAgaW5cbiAgZmluaXNoIGFjY1xuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfihraW5kIDogS2luZC50KSA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IEludGYgLT4gSW50Zl9vcl9pbXBsLkludGYgWyBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yIF1cbiAgfCBJbXBsIC0+IEludGZfb3JfaW1wbC5JbXBsIFsgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciBdXG5cbmxldCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+KGtpbmQgOiBLaW5kLnQpID1cbiAgZXhuX3RvX2xvY19lcnJvciBleG4gfD4gZXJyb3JfdG9fZXh0ZW5zaW9uIH5raW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgQWN0dWFsIHJld3JpdGluZyBvZiBzdHJ1Y3R1cmUvc2lnbmF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHByaW50X3Bhc3NlcyAoKSA9XG4gIGxldCB0b29sX25hbWUgPSBcInBweGxpYl9kcml2ZXJcIiBpblxuICBsZXQgZW1iZWRfZXJyb3JzID0gZmFsc2UgaW5cbiAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgICB+aW5wdXRfbmFtZTpOb25lXG4gIGluXG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmZyZXNoZW4tYW5kLWNvbGxlY3QtYXR0cmlidXRlcz5cXG5cIjtcbiAgTGlzdC5pdGVyIGN0cyB+ZjooZnVuIGN0IC0+IFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0LlRyYW5zZm9ybS5uYW1lKTtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtYXR0cmlidXRlcz5cXG5cIjtcbiAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWV4dGVuc2lvbnM+XFxuXCIpXG5cbmxldCBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzID1cbiAgTGlzdC5zb3J0IGVycm9ycyB+Y21wOihmdW4gZXJyb3IgZXJyb3InIC0+XG4gICAgICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gICAgICBsZXQgbG9jJyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcicgaW5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmUgbG9jIGxvYycpXG5cbigqJCopXG5cbmxldCBtYXBfc3RydWN0dXJlX2dlbiBzdCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc3RydWN0dXJlIHN0KTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc3QgPVxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzdFxuICAgIGluXG4gICAgc3RcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzdCA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc3RydWN0dXJlX2l0ZW0pXG4gICAgQCBzdFxuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc3QgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHN0XG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICBsZXQgc3QsIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc3QgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW1wbClcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW1wbClcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzdCB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc3RydWN0dXJlIHN0ID1cbiAgbWF0Y2hcbiAgICBtYXBfc3RydWN0dXJlX2dlbiBzdFxuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgbWFwX3NpZ25hdHVyZV9nZW4gc2cgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3NpZ25hdHVyZSBzZyk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHNnID1cbiAgICBsZXQgc2cgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzZ1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc2dcbiAgICBpblxuICAgIHNnXG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc2cgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3NpZ25hdHVyZV9pdGVtKVxuICAgIEAgc2dcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHNnID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzZ1xuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgbGV0IHNnLCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHNnIH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmludGYpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ludGYpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc2cgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3NpZ25hdHVyZSBzZyA9XG4gIG1hdGNoXG4gICAgbWFwX3NpZ25hdHVyZV9nZW4gc2dcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCopXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgRW50cnkgcG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgPVxuICBsZXQgdGVzdCBtYWdpY19udW1iZXIgPVxuICAgIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OihTdHJpbmcuc3ViIG1hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICBpblxuICB0ZXN0IEFzdF9tYWdpYy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfHwgdGVzdCBBc3RfbWFnaWMuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbmxldCB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gaW5wdXRfZmlsZV9uYW1lID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnIC0+XG4gICAgICBsZXQgZXJyID1cbiAgICAgICAgTG9jYXRpb24uRXJyb3IubWFrZSB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVfbmFtZSkgbXNnIH5zdWI6W11cbiAgICAgIGluXG4gICAgICBFcnJvciAoZXJyLCBpbnB1dF92ZXJzaW9uKSlcblxubGV0IHJlbW92ZV9ub19lcnJvciBmbiA9IHRyeSBTdGRsaWIuU3lzLnJlbW92ZSBmbiB3aXRoIFN5c19lcnJvciBfIC0+ICgpXG5cbmxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCB2IC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICB2XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmYgPVxuICBtYXRjaCAhcHJlcHJvY2Vzc29yIHdpdGhcbiAgfCBOb25lIC0+IGYgZm5cbiAgfCBTb21lIHBwIC0+XG4gICAgICBwcm90ZWN0eCAoU3RkbGliLkZpbGVuYW1lLnRlbXBfZmlsZSBcIm9jYW1scHBcIiBcIlwiKSB+ZmluYWxseTpyZW1vdmVfbm9fZXJyb3JcbiAgICAgICAgfmY6KGZ1biB0bXBmaWxlIC0+XG4gICAgICAgICAgbWF0Y2ggU3lzdGVtLnJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dDpmbiB+b3V0cHV0OnRtcGZpbGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gZiB0bXBmaWxlXG4gICAgICAgICAgfCBFcnJvciAoZmFpbGVkX2NvbW1hbmQsIGZhbGxfYmFja192ZXJzaW9uKSAtPlxuICAgICAgICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgICAgICAgICAgXCJFcnJvciB3aGlsZSBydW5uaW5nIGV4dGVybmFsIHByZXByb2Nlc3NvclxcbkNvbW1hbmQgbGluZTogJXNcXG5cIlxuICAgICAgICAgICAgICAgIGZhaWxlZF9jb21tYW5kKVxuXG5sZXQgcmVsb2NhdGVfbWFwcGVyID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nICogc3RyaW5nXSBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kISBwb3NpdGlvbiAob2xkX2ZuLCBuZXdfZm4pIHBvcyA9XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgcG9zLnBvc19mbmFtZSBvbGRfZm4gdGhlbiB7IHBvcyB3aXRoIHBvc19mbmFtZSA9IG5ld19mbiB9XG4gICAgICBlbHNlIHBvc1xuICBlbmRcblxuKCogU2V0IHRoZSBpbnB1dCBuYW1lIGdsb2JhbGx5LiBUaGlzIGlzIHVzZWQgYnkgc29tZSBwcHggcmV3cml0ZXJzXG4gICBzdWNoIGFzIGJpc2VjdF9wcHguICopXG5sZXQgc2V0X2lucHV0X25hbWUgPSBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X25hbWVcblxubGV0IGxvYWRfaW5wdXQgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgZm4gPVxuICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICBsZXQgaW5wdXRfc291cmNlID0gaWYgU3RyaW5nLmVxdWFsIGZuIFwiLVwiIHRoZW4gQXN0X2lvLlN0ZGluIGVsc2UgRmlsZSBmbiBpblxuICBsZXQgaW5wdXRfa2luZCA9IEFzdF9pby5Qb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIGluXG4gIG1hdGNoIEFzdF9pby5yZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0X2tpbmQgPSBJbnRmX29yX2ltcGwua2luZCBhc3QgaW5cbiAgICAgIGlmIG5vdCAoS2luZC5lcXVhbCBraW5kIGFzdF9raW5kKSB0aGVuXG4gICAgICAgIHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBmblxuICAgICAgICAgIFwiRmlsZSBjb250YWlucyBhIGJpbmFyeSAlcyBBU1QgYnV0IGFuICVzIHdhcyBleHBlY3RlZFwiXG4gICAgICAgICAgKEtpbmQuZGVzY3JpYmUgYXN0X2tpbmQpIChLaW5kLmRlc2NyaWJlIGtpbmQpXG4gICAgICBlbHNlIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHx8IG5vdCByZWxvY2F0ZSB0aGVuIChcbiAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgIE9rIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgT2tcbiAgICAgICAgICAoIGlucHV0X25hbWUsXG4gICAgICAgICAgICBpbnB1dF92ZXJzaW9uLFxuICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpIClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgIFwiRmlsZSBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKVxuICB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICBFcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKVxuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBsb2FkX2lucHV0X3J1bl9hc19wcHggZm4gPVxuICAoKiBJZiB0aGVyZSdzIGFuIGVycm9yIHdoaWxlIGxvYWRpbmcgaW4gcnVuX2FzX3BweCBtb2RlLCB0aGUga2luZCBvZiBBU1QgKGltcGwvaW50ZikgaXMgc3RpbGwgdW5rbm93bi5cbiAgICAgVGhhdCdzIHdoeSwgYXMgb3Bwb3NlZCB0byBsb2FkX2lucHV0LCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyBlcnJvcnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSByZXN1bHQ6XG4gICAgIGhhbmRsaW5nIGFuIGVycm9yIGJ5IHJldHVybmluZyBhbiBBU1Qgd2l0aCB0aGUgZXJyb3IgcGFja2VkIGFzIGV4dGVuc2lvbiBub2RlIHdvdWxkbid0IGJlIHBvc3NpYmxlLiAqKVxuICBtYXRjaCBBc3RfaW8ucmVhZCAoRmlsZSBmbikgfmlucHV0X2tpbmQ6QXN0X2lvLk5lY2Vzc2FyaWx5X2JpbmFyeSB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgICAgICBhc3RcbiAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB0aGVuIGFzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKVxuICAgICAgaW5cbiAgICAgICgqIFdpdGggYC0tYXMtcHB4YCwgb2NhbWwgY2FsbHMgdGhlIHN0YW5kYWxvbmUgc2VwYXJhdGVseSBmb3IgZXZlcnkgc3RydWN0dXJlL3NpZ25hdHVyZSBpdGVtXG4gICAgICAgICB3aXRoIHRoZSBmaWxlbmFtZSBhcyBtZXRhZGF0YSB0aGF0IGl0IGdldHMgZnJvbSB0aGUgcHJldmlvdXMgY2FsbC4gcmVsb2NhdGVfbWFwcGVyIG9ubHlcbiAgICAgICAgIHJlbG9jYXRlcyBwb3NpdGlvbnMgd2hvc2UgcG9zaXRpb24gZmlsZW5hbWUgY29pbmNpZGVzIHdpdGggdGhhdCBtZXRhZGF0YSBmaWxlbmFtZS5cbiAgICAgICAgIFNvIGFsd2F5cyByZXR1cm4gdGhlIG1ldGFkYXRhIGZpbGVuYW1lIGl0c2VsZiwgZXZlbiBpZiBgLWxvYy1maWxlbmFtZWAgaXMgcHJvdmlkZWQuICopXG4gICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBfKSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIlRoZSBpbnB1dCBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJFeHBlY3RlZCBhIGJpbmFyeSBBU1QgYXMgaW5wdXRcIlxuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBfKSkgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgXykpIC0+XG4gICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcblxubGV0IGxvYWRfc291cmNlX2ZpbGUgZm4gPVxuICBsZXQgcyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZm4gaW5cbiAgaWYgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICBcInBweGxpYl9kcml2ZXI6IGNhbm5vdCB1c2UgLXJlY29uY2lsZSB3aXRoIGJpbmFyeSBBU1QgZmlsZXNcIjtcbiAgc1xuXG50eXBlIG91dHB1dF9tb2RlID1cbiAgfCBQcmV0dHlfcHJpbnRcbiAgfCBEdW1wX2FzdFxuICB8IERwYXJzZXRyZWVcbiAgfCBSZWNvbmNpbGUgb2YgUmVjb25jaWxlLm1vZGVcbiAgfCBOdWxsXG5cbigqJCopXG5sZXQgZXh0cmFjdF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBzdCA9XG4gICAgbWF0Y2ggc3Qgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgIFBzdHJfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHN0IC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTdHJ1Y3R1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc3RyIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHN0XG4gICAgfCBfIC0+IHN0XG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc3RcblxubGV0IGFkZF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU3RydWN0dXJlXG4gIGluXG4gIHByZWZpeCBAIHN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHNnID1cbiAgICBtYXRjaCBzZyB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHNpZ19kZXNjID1cbiAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc2cgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFNpZ25hdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zaWcgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc2dcbiAgICB8IF8gLT4gc2dcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzZ1xuXG5sZXQgYWRkX2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTaWduYXR1cmVcbiAgaW5cbiAgcHJlZml4IEAgc2dcblxuKCokKilcblxubGV0IGV4dHJhY3RfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChleHRyYWN0X2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGV4dHJhY3RfY29va2llc19zdHIgeClcblxubGV0IGFkZF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGFkZF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChhZGRfY29va2llc19zdHIgeClcblxubGV0IGNvcnJlY3Rpb25zID0gcmVmIFtdXG5sZXQgYWRkX3RvX2xpc3QgciB4ID0gciA6PSB4IDo6ICFyXG5cbmxldCByZWdpc3Rlcl9jb3JyZWN0aW9uIH5sb2MgfnJlcGwgPVxuICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZV90ZXh0ICgpIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kXG4gICAgICAgfnJlcGwpXG5cbmxldCBwcm9jZXNzX2ZpbGVfaG9va3MgPSByZWYgW11cbmxldCByZWdpc3Rlcl9wcm9jZXNzX2ZpbGVfaG9vayBmID0gYWRkX3RvX2xpc3QgcHJvY2Vzc19maWxlX2hvb2tzIGZcblxubW9kdWxlIEZpbGVfcHJvcGVydHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAgIHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudDtcbiAgfVxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgYWxsID0gcmVmIFtdXG4gIGxldCByZWdpc3RlciB0ID0gYWRkX3RvX2xpc3QgYWxsIChUIHQpXG4gIGxldCByZXNldF9hbGwgKCkgPSBMaXN0Lml0ZXIgIWFsbCB+ZjooZnVuIChUIHQpIC0+IHQuZGF0YSA8LSBOb25lKVxuXG4gIGxldCBkdW1wX2FuZF9yZXNldF9hbGwgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC5yZXYgIWFsbCkgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBtYXRjaCB0LmRhdGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgdC5kYXRhIDwtIE5vbmU7XG4gICAgICAgICAgICBTb21lICh0Lm5hbWUsIHQuc2V4cF9vZl90IHYpKVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZmlsZV9wcm9wZXJ0eVxuICAgIChOYW1lIDogc2lnXG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZClcbiAgICAoVCA6IFNleHBhYmxlLlMpID1cbnN0cnVjdFxuICBsZXQgdCA6IF8gRmlsZV9wcm9wZXJ0eS50ID1cbiAgICB7IG5hbWUgPSBOYW1lLm5hbWU7IGRhdGEgPSBOb25lOyBzZXhwX29mX3QgPSBULnNleHBfb2ZfdCB9XG5cbiAgbGV0ICgpID0gRmlsZV9wcm9wZXJ0eS5yZWdpc3RlciB0XG4gIGxldCBzZXQgeCA9IHQuZGF0YSA8LSBTb21lIHhcbmVuZFxuXG5sZXQgcHJvY2Vzc19hc3QgKGFzdCA6IEludGZfb3JfaW1wbC50KSB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rXG4gICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5lbWJlZF9lcnJvcnMgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3NpZ25hdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbnRmIGFzdFxuICB8IEltcGwgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3N0cnVjdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbXBsIGFzdFxuXG5sZXQgcHJvY2Vzc19maWxlIChraW5kIDogS2luZC50KSBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlXG4gICAgfmVtYmVkX2Vycm9ycyB+b3V0cHV0ID1cbiAgRmlsZV9wcm9wZXJ0eS5yZXNldF9hbGwgKCk7XG4gIExpc3QuaXRlciAoTGlzdC5yZXYgIXByb2Nlc3NfZmlsZV9ob29rcykgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBjb3JyZWN0aW9ucyA6PSBbXTtcbiAgbGV0IHJlcGxhY2VtZW50cyA9IHJlZiBbXSBpblxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhfZHJpdmVyXCIgaW5cbiAgbGV0IGhvb2sgOiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay50ID1cbiAgICBtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gICAgfCBSZWNvbmNpbGUgKFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIGYgPVxuICAgICAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICAgICAgYWRkX3RvX2xpc3QgcmVwbGFjZW1lbnRzXG4gICAgICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihFeHRlbnNpb24gY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDpnZW5lcmF0ZWQpKTtcbiAgICAgICAgfVxuICAgIHwgXyAtPiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIDogQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLnQgPVxuICAgIHtcbiAgICAgIGYgPVxuICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEZsb2F0aW5nX2F0dHJpYnV0ZSBjb250ZXh0KVxuICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6KE1hbnkgZ2VuZXJhdGVkKSkpO1xuICAgIH1cbiAgaW5cblxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID1cbiAgICBsZXQgcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgPVxuICAgICAgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZjoobG9hZF9pbnB1dCB+a2luZCB+aW5wdXRfbmFtZSB+cmVsb2NhdGUpXG4gICAgaW5cbiAgICBtYXRjaCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCB3aXRoXG4gICAgfCBPayAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkgLT4gKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIGV4dHJhY3RfY29va2llcyBhc3RcbiAgICAgICAgICAgIHw+IHByb2Nlc3NfYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQpKVxuICAgIHwgRXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAoaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH5raW5kKVxuICAgIHwgRXJyb3IgKGVycm9yLCBfKSAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm5cbiAgICAgICAgfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuICBpblxuICBPcHRpb24uaXRlciAhb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIH5mOihmdW4gZm4gLT5cbiAgICAgIGxldCBtZXRhZGF0YSA9IEZpbGVfcHJvcGVydHkuZHVtcF9hbmRfcmVzZXRfYWxsICgpIGluXG4gICAgICBPdXRfY2hhbm5lbC53cml0ZV9hbGwgZm5cbiAgICAgICAgfmRhdGE6XG4gICAgICAgICAgKExpc3QubWFwIG1ldGFkYXRhIH5mOihmdW4gKHMsIHNleHApIC0+XG4gICAgICAgICAgICAgICBTZXhwLnRvX3N0cmluZ19odW0gKFNleHAuTGlzdCBbIEF0b20gczsgc2V4cCBdKSBeIFwiXFxuXCIpXG4gICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIpKTtcblxuICBsZXQgaW5wdXRfY29udGVudHMgPSBsYXp5IChsb2FkX3NvdXJjZV9maWxlIGZuKSBpblxuICBsZXQgY29ycmVjdGVkID0gZm4gXiAhY29ycmVjdGVkX3N1ZmZpeCBpblxuICBsZXQgbWlzbWF0Y2hlc19mb3VuZCA9XG4gICAgbWF0Y2ggIWNvcnJlY3Rpb25zIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAgIGlmIFN0ZGxpYi5TeXMuZmlsZV9leGlzdHMgY29ycmVjdGVkIHRoZW4gU3RkbGliLlN5cy5yZW1vdmUgY29ycmVjdGVkO1xuICAgICAgICBmYWxzZVxuICAgIHwgY29ycmVjdGlvbnMgLT5cbiAgICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSBjb3JyZWN0aW9uc1xuICAgICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgICB+b3V0cHV0OihTb21lIGNvcnJlY3RlZCkgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lXG4gICAgICAgICAgfnRhcmdldDpDb3JyZWN0ZWQgP3N0eWxlcjohc3R5bGVyIH5raW5kO1xuICAgICAgICB0cnVlXG4gIGluXG5cbiAgKG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgfCBOdWxsIC0+ICgpXG4gIHwgUHJldHR5X3ByaW50IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlIHBwZiBhc3RcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFBwcmludGFzdC5zdHJ1Y3R1cmUgcHBmIGFzdCk7XG4gICAgICAgICAgbGV0IG51bGxfYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoIEludGYgW10gfCBJbXBsIFtdIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgbnVsbF9hc3QgdGhlbiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IER1bXBfYXN0IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBBc3RfaW8ud3JpdGUgb2NcbiAgICAgICAgICAgIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICAgICAgICAgIH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcbiAgfCBEcGFyc2V0cmVlIC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgbGV0IGFzdCA9IGFkZF9jb29raWVzIGFzdCBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmUgYXN0KVxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmUgYXN0KSk7XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBSZWNvbmNpbGUgbW9kZSAtPlxuICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSAhcmVwbGFjZW1lbnRzXG4gICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgfm91dHB1dCB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWUgfnRhcmdldDooT3V0cHV0IG1vZGUpXG4gICAgICAgID9zdHlsZXI6IXN0eWxlciB+a2luZCk7XG5cbiAgaWZcbiAgICBtaXNtYXRjaGVzX2ZvdW5kICYmIG1hdGNoICFkaWZmX2NvbW1hbmQgd2l0aCBTb21lIFwiLVwiIC0+IGZhbHNlIHwgXyAtPiB0cnVlXG4gIHRoZW4gKFxuICAgIFBweGxpYl9wcmludF9kaWZmLnByaW50ICgpIH5maWxlMTpmbiB+ZmlsZTI6Y29ycmVjdGVkIH51c2VfY29sb3I6IXVzZV9jb2xvclxuICAgICAgP2RpZmZfY29tbWFuZDohZGlmZl9jb21tYW5kO1xuICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCBvdXRwdXRfbW9kZSA9IHJlZiBQcmV0dHlfcHJpbnRcbmxldCBvdXRwdXQgPSByZWYgTm9uZVxubGV0IGtpbmQgPSByZWYgTm9uZVxubGV0IGlucHV0ID0gcmVmIE5vbmVcbmxldCBlbWJlZF9lcnJvcnMgPSByZWYgZmFsc2VcblxubGV0IHNldF9pbnB1dCBmbiA9XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnB1dCA6PSBTb21lIGZuXG4gIHwgU29tZSBfIC0+IHJhaXNlIChBcmcuQmFkIFwidG9vIG1hbnkgaW5wdXQgZmlsZXNcIilcblxubGV0IHNldF9raW5kIGsgPVxuICBtYXRjaCAha2luZCB3aXRoXG4gIHwgU29tZSBrJyB3aGVuIG5vdCAoS2luZC5lcXVhbCBrIGsnKSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJtdXN0IHNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgLWltcGwgb3IgLWludGZcIilcbiAgfCBfIC0+IGtpbmQgOj0gU29tZSBrXG5cbmxldCBzZXRfb3V0cHV0X21vZGUgbW9kZSA9XG4gIG1hdGNoICghb3V0cHV0X21vZGUsIG1vZGUpIHdpdGhcbiAgfCBQcmV0dHlfcHJpbnQsIF8gLT4gb3V0cHV0X21vZGUgOj0gbW9kZVxuICB8IF8sIFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEdW1wX2FzdCwgRHVtcF9hc3QgfCBEcGFyc2V0cmVlLCBEcGFyc2V0cmVlIC0+ICgpXG4gIHwgUmVjb25jaWxlIGEsIFJlY29uY2lsZSBiIHdoZW4gUG9seS5lcXVhbCBhIGIgLT4gKClcbiAgfCB4LCB5IC0+XG4gICAgICBsZXQgYXJnX29mX291dHB1dF9tb2RlID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgRHVtcF9hc3QgLT4gXCItZHVtcC1hc3RcIlxuICAgICAgICB8IERwYXJzZXRyZWUgLT4gXCItZHBhcnNldHJlZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPiBcIi1yZWNvbmNpbGVcIlxuICAgICAgICB8IFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT4gXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIlxuICAgICAgICB8IE51bGwgLT4gXCItbnVsbFwiXG4gICAgICBpblxuICAgICAgcmFpc2VcbiAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgYW5kICVzIGFyZSBpbmNvbXBhdGlibGVcIiAoYXJnX29mX291dHB1dF9tb2RlIHgpXG4gICAgICAgICAgICAgIChhcmdfb2Zfb3V0cHV0X21vZGUgeSkpKVxuXG5sZXQgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpID1cbiAgTGlzdC5pdGVyICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5uYW1lKVxuXG5sZXQgcGFyc2VfYXBwbHlfbGlzdCBzID1cbiAgbGV0IG5hbWVzID1cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiIHRoZW4gW10gZWxzZSBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6JywnXG4gIGluXG4gIExpc3QuaXRlciBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgIGlmXG4gICAgICAgIG5vdFxuICAgICAgICAgIChMaXN0LmV4aXN0cyAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChTdGRsaWIuQXJnLkJhZFxuICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcImNvZGUgdHJhbnNmb3JtYXRpb24gJyVzJyBkb2VzIG5vdCBleGlzdFwiIG5hbWUpKSk7XG4gIG5hbWVzXG5cbnR5cGUgbWFzayA9IHtcbiAgbXV0YWJsZSBhcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgbXV0YWJsZSBkb250X2FwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xufVxuXG5sZXQgbWFzayA9IHsgYXBwbHkgPSBOb25lOyBkb250X2FwcGx5ID0gTm9uZSB9XG5cbmxldCBoYW5kbGVfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgKCogVGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzIG1vcmUgaW50dWl0aXZlICopXG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIC1kb250LWFwcGx5XCIpO1xuICBtYXNrLmFwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGhhbmRsZV9kb250X2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgbWFzay5kb250X2FwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGludGVycHJldF9tYXNrICgpID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB8fCBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIGxldCBzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSBjdCA9XG4gICAgICBsZXQgaXNfY2FuZGlkYXRlID1cbiAgICAgICAgbWF0Y2ggbWFzay5hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPiBMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19zZWxlY3RlZCA9XG4gICAgICAgIG1hdGNoIG1hc2suZG9udF9hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpc19jYW5kaWRhdGVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgICAgICBpc19jYW5kaWRhdGUgJiYgbm90IChMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KSlcbiAgICAgIGluXG4gICAgICBpZiBpc19zZWxlY3RlZCB0aGVuIFNvbWUgY3QubmFtZSBlbHNlIE5vbmVcbiAgICBpblxuICAgIGFwcGx5X2xpc3QgOj1cbiAgICAgIFNvbWUgKExpc3QuZmlsdGVyX21hcCAhVHJhbnNmb3JtLmFsbCB+ZjpzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSlcblxubGV0IHNldF9jb29raWUgcyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOic9JyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJpbnZhbGlkIGNvb2tpZSwgbXVzdCBiZSBvZiB0aGUgZm9ybSBcXFwiPG5hbWU+PTxleHByPlxcXCJcIilcbiAgfCBTb21lIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgdmFsdWUgaW5cbiAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiPGNvbW1hbmQtbGluZT5cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9O1xuICAgICAgbGV0IGV4cHIgPSBQYXJzZS5leHByZXNzaW9uIGxleGJ1ZiBpblxuICAgICAgQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSA6PSAobmFtZSwgZXhwcikgOjogIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGlcblxubGV0IHNoYXJlZF9hcmdzID1cbiAgW1xuICAgICggXCItbG9jLWZpbGVuYW1lXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBsb2NfZm5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiPHN0cmluZz4gRmlsZSBuYW1lIHRvIHVzZSBpbiBsb2NhdGlvbnNcIiApO1xuICAgICggXCItcmVzZXJ2ZS1uYW1lc3BhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzLnJlc2VydmUsXG4gICAgICBcIjxzdHJpbmc+IE1hcmsgdGhlIGdpdmVuIG5hbWVzcGFjZSBhcyByZXNlcnZlZFwiICk7XG4gICAgKFwiLW5vLWNoZWNrXCIsIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrcywgXCIgRGlzYWJsZSBjaGVja3MgKHVuc2FmZSlcIik7XG4gICAgKFwiLWNoZWNrXCIsIEFyZy5TZXQgcGVyZm9ybV9jaGVja3MsIFwiIEVuYWJsZSBjaGVja3NcIik7XG4gICAgKCBcIi1uby1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIERpc2FibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIEVuYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItbm8tbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBEaXNhYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIEVuYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gQXBwbHkgdGhlc2UgdHJhbnNmb3JtYXRpb25zIGluIG9yZGVyIChjb21tYS1zZXBhcmF0ZWQgbGlzdClcIiApO1xuICAgICggXCItZG9udC1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfZG9udF9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBFeGNsdWRlIHRoZXNlIHRyYW5zZm9ybWF0aW9uc1wiICk7XG4gICAgKCBcIi1uby1tZXJnZVwiLFxuICAgICAgQXJnLlNldCBub19tZXJnZSxcbiAgICAgIFwiIERvIG5vdCBtZXJnZSBjb250ZXh0IGZyZWUgdHJhbnNmb3JtYXRpb25zIChiZXR0ZXIgZm9yIGRlYnVnZ2luZyBcXFxuICAgICAgIHJld3JpdGVycykuIEFzIGEgcmVzdWx0LCB0aGUgY29udGV4dC1mcmVlIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGFsbCBcXFxuICAgICAgIGFwcGxpZWQgYmVmb3JlIGFsbCBpbXBsIGFuZCBpbnRmLlwiICk7XG4gICAgKFwiLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiTkFNRT1FWFBSIFNldCB0aGUgY29va2llIE5BTUUgdG8gRVhQUlwiKTtcbiAgICAoXCItLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiIFNhbWUgYXMgLWNvb2tpZVwiKTtcbiAgXVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgc2hhcmVkX2FyZ3MgfmY6KGZ1biAoa2V5LCBzcGVjLCBkb2MpIC0+IGFkZF9hcmcga2V5IHNwZWMgfmRvYylcblxubGV0IGFzX3BwICgpID1cbiAgc2V0X291dHB1dF9tb2RlIER1bXBfYXN0O1xuICBlbWJlZF9lcnJvcnMgOj0gdHJ1ZVxuXG5sZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgW1xuICAgICggXCItYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBSdW4gYXMgYSAtcHB4IHJld3JpdGVyIChtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudClcIiApO1xuICAgICggXCItLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi0tYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFNhbWUgYXMgLWFzLXBweFwiICk7XG4gICAgKFwiLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTaG9ydGhhbmQgZm9yOiAtZHVtcC1hc3QgLWVtYmVkLWVycm9yc1wiKTtcbiAgICAoXCItLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTYW1lIGFzIC1hcy1wcFwiKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dCA6PSBTb21lIHMpLFxuICAgICAgXCI8ZmlsZW5hbWU+IE91dHB1dCBmaWxlICh1c2UgJy0nIGZvciBzdGRvdXQpXCIgKTtcbiAgICAoXCItXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2lucHV0IFwiLVwiKSwgXCIgUmVhZCBpbnB1dCBmcm9tIHN0ZGluXCIpO1xuICAgICggXCItZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIER1bXAgdGhlIG1hcnNoYWxlZCBhc3QgdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQgb2YgcHJldHR5LXByaW50aW5nIGl0XCJcbiAgICApO1xuICAgICggXCItLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBTYW1lIGFzIC1kdW1wLWFzdFwiICk7XG4gICAgKCBcIi1kcGFyc2V0cmVlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEcGFyc2V0cmVlKSxcbiAgICAgIFwiIFByaW50IHRoZSBwYXJzZXRyZWUgKHNhbWUgYXMgb2NhbWxjIC1kcGFyc2V0cmVlKVwiICk7XG4gICAgKCBcIi1lbWJlZC1lcnJvcnNcIixcbiAgICAgIEFyZy5TZXQgZW1iZWRfZXJyb3JzLFxuICAgICAgXCIgRW1iZWQgZXJyb3JzIGluIHRoZSBvdXRwdXQgQVNUIChkZWZhdWx0OiB0cnVlIHdoZW4gLWFzLXBwLCBmYWxzZSBcXFxuICAgICAgIG90aGVyd2lzZSlcIiApO1xuICAgICggXCItbnVsbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgTnVsbCksXG4gICAgICBcIiBQcm9kdWNlIG5vIG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcIiApO1xuICAgICggXCItaW1wbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbCBmaWxlXCIgKTtcbiAgICAoXCItLWltcGxcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW1wbFwiKTtcbiAgICAoIFwiLWludGZcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWxpIGZpbGVcIiApO1xuICAgIChcIi0taW50ZlwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbnRmXCIpO1xuICAgICggXCItZGVidWctYXR0cmlidXRlLWRyb3BcIixcbiAgICAgIEFyZy5TZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AsXG4gICAgICBcIiBEZWJ1ZyBhdHRyaWJ1dGUgZHJvcHBpbmdcIiApO1xuICAgICggXCItcHJpbnQtdHJhbnNmb3JtYXRpb25zXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zLFxuICAgICAgXCIgUHJpbnQgbGlua2VkLWluIGNvZGUgdHJhbnNmb3JtYXRpb25zLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgYXBwbGllZFwiICk7XG4gICAgKCBcIi1wcmludC1wYXNzZXNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF9wYXNzZXMsXG4gICAgICBcIiBQcmludCB0aGUgYWN0dWFsIHBhc3NlcyBvdmVyIHRoZSB3aG9sZSBBU1QgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIFxcXG4gICAgICAgYXBwbGllZFwiICk7XG4gICAgKCBcIi1pdGUtY2hlY2tcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJXYXJuaW5nOiB0aGUgLWl0ZS1jaGVjayBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyBubyBlZmZlY3QuXFxuJSFcIjtcbiAgICAgICAgICBFeHRyYV93YXJuaW5ncy5jYXJlX2Fib3V0X2l0ZV9icmFuY2ggOj0gdHJ1ZSksXG4gICAgICBcIiAobm8gZWZmZWN0IC0tIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkpXCIgKTtcbiAgICAoIFwiLXBwXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBwcmVwcm9jZXNzb3IgOj0gU29tZSBzKSxcbiAgICAgIFwiPGNvbW1hbmQ+ICBQaXBlIHNvdXJjZXMgdGhyb3VnaCBwcmVwcm9jZXNzb3IgPGNvbW1hbmQ+IChpbmNvbXBhdGlibGUgXFxcbiAgICAgICB3aXRoIC1hcy1wcHgpXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMpKSxcbiAgICAgIFwiIChXSVApIFByZXR0eSBwcmludCB0aGUgb3V0cHV0IHVzaW5nIGEgbWl4IG9mIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHRoZSBcXFxuICAgICAgIGdlbmVyYXRlZCBjb2RlXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykpLFxuICAgICAgXCIgKFdJUCkgc2FtZSBhcyAtcmVjb25jaWxlIGJ1dCB1c2VzIGNvbW1lbnRzIHRvIGVuY2xvc2UgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBEb24ndCB1c2UgY29sb3JzIHdoZW4gcHJpbnRpbmcgZXJyb3JzXCIpO1xuICAgICggXCItZGlmZi1jbWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpLFxuICAgICAgXCIgRGlmZiBjb21tYW5kIHdoZW4gdXNpbmcgY29kZSBleHBlY3RhdGlvbnMgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApO1xuICAgICggXCItcHJldHR5XCIsXG4gICAgICBBcmcuU2V0IHByZXR0eSxcbiAgICAgIFwiIEluc3RydWN0IGNvZGUgZ2VuZXJhdG9ycyB0byBpbXByb3ZlIHRoZSBwcmV0dGluZXNzIG9mIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItc3R5bGVyXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHN0eWxlciA6PSBTb21lIHMpLCBcIiBDb2RlIHN0eWxlclwiKTtcbiAgICAoIFwiLW91dHB1dC1tZXRhZGF0YVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIkZJTEUgV2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBtZXRhZGF0YVwiICk7XG4gICAgKCBcIi1jb3JyZWN0ZWQtc3VmZml4XCIsXG4gICAgICBBcmcuU2V0X3N0cmluZyBjb3JyZWN0ZWRfc3VmZml4LFxuICAgICAgXCJTVUZGSVggU3VmZml4IHRvIGFwcGVuZCB0byBjb3JyZWN0ZWQgZmlsZXNcIiApO1xuICBdXG5cbmxldCBnZXRfYXJncyA/KHN0YW5kYWxvbmVfYXJncyA9IHN0YW5kYWxvbmVfYXJncykgKCkgPVxuICBzdGFuZGFsb25lX2FyZ3MgQCBMaXN0LnJldiAhYXJnc1xuXG5sZXQgc3RhbmRhbG9uZV9tYWluICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gWzxmaWxlcz5dXCIgZXhlX25hbWUgaW5cbiAgbGV0IGFyZ3MgPSBnZXRfYXJncyAoKSBpblxuICBBcmcucGFyc2UgKEFyZy5hbGlnbiBhcmdzKSBzZXRfaW5wdXQgdXNhZ2U7XG4gIGludGVycHJldF9tYXNrICgpO1xuICBpZiAhcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgdGhlbiAoXG4gICAgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBpZiAhcmVxdWVzdF9wcmludF9wYXNzZXMgdGhlbiAoXG4gICAgcHJpbnRfcGFzc2VzICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IG5vIGlucHV0IGZpbGUgZ2l2ZW5cXG4lIVwiIGV4ZV9uYW1lO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IFNvbWUgZm4gLT5cbiAgICAgIGxldCBraW5kID1cbiAgICAgICAgbWF0Y2ggIWtpbmQgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICBtYXRjaCBLaW5kLm9mX2ZpbGVuYW1lIGZuIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICBcIiVzOiBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAnJXMnLCB1c2UgLWltcGwgb3IgLWludGYuXFxuXCJcbiAgICAgICAgICAgICAgICAgIGV4ZV9uYW1lIGZuO1xuICAgICAgICAgICAgICAgIFN0ZGxpYi5leGl0IDIpXG4gICAgICBpblxuICAgICAgbGV0IGlucHV0X25hbWUsIHJlbG9jYXRlID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoIE5vbmUgLT4gKGZuLCBmYWxzZSkgfCBTb21lIGZuIC0+IChmbiwgdHJ1ZSlcbiAgICAgIGluXG4gICAgICBwcm9jZXNzX2ZpbGUga2luZCBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlOiFvdXRwdXRfbW9kZVxuICAgICAgICB+b3V0cHV0OiFvdXRwdXQgfmVtYmVkX2Vycm9yczohZW1iZWRfZXJyb3JzXG5cbmxldCByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm4gPVxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID0gbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGlucHV0X2ZuIGluXG4gIGxldCBhc3QgPVxuICAgIHRyeVxuICAgICAgbGV0IGFzdCA9IGV4dHJhY3RfY29va2llcyBhc3QgaW5cbiAgICAgIGxldCB0b29sX25hbWUgPSBBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSBpblxuICAgICAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgICAgIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgICAgIHByb2Nlc3NfYXN0IGFzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICB+ZW1iZWRfZXJyb3JzOnRydWVcbiAgICB3aXRoIGV4biAtPiBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZDooSW50Zl9vcl9pbXBsLmtpbmQgYXN0KVxuICBpblxuICB3aXRoX291dHB1dCAoU29tZSBvdXRwdXRfZm4pIH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICBBc3RfaW8ud3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSB+YWRkX3BweF9jb250ZXh0OnRydWUpXG5cbmxldCBwYXJzZV9pbnB1dCBwYXNzZWRfaW5fYXJncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IHBhc3NlZF9pbl9hcmdzIChBcmcuYWxpZ24gdmFsaWRfYXJncylcbiAgICAgIChmdW4gXyAtPiByYWlzZSAoQXJnLkJhZCBcImFub255bW91cyBhcmd1bWVudHMgbm90IGFjY2VwdGVkXCIpKVxuICAgICAgaW5jb3JyZWN0X2lucHV0X21zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMFxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGlucHV0ID1cbiAgbGV0IHZhbGlkX2FyZ3MgPSBnZXRfYXJncyB+c3RhbmRhbG9uZV9hcmdzICgpIGluXG4gIG1hdGNoIExpc3QucmV2IEBAIEFycmF5LnRvX2xpc3QgQEAgaW5wdXQgd2l0aFxuICB8IG91dHB1dF9mbiA6OiBpbnB1dF9mbiA6OiBmbGFnc19hbmRfcHJvZ19uYW1lXG4gICAgd2hlbiBMaXN0Lmxlbmd0aCBmbGFnc19hbmRfcHJvZ19uYW1lID4gMCAtPlxuICAgICAgbGV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgPSBMaXN0LnJldiBmbGFnc19hbmRfcHJvZ19uYW1lIHw+IEFycmF5Lm9mX2xpc3QgaW5cbiAgICAgIHBhcnNlX2lucHV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBpbnRlcnByZXRfbWFzayAoKTtcbiAgICAgIHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbjtcbiAgICAgIFN0ZGxpYi5leGl0IDBcbiAgfCBbIGhlbHA7IF8gXSB3aGVuIFN0cmluZy5lcXVhbCBoZWxwIFwiLWhlbHBcIiB8fCBTdHJpbmcuZXF1YWwgaGVscCBcIi0taGVscFwiIC0+XG4gICAgICBwYXJzZV9pbnB1dCBpbnB1dCB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB8IF8gLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVXNhZ2U6ICVzXFxuJSFcIiB1c2FnZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcblxubGV0IHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiBpblxuICBsZXQgdXNhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgLWFzLXBweCBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWVcbiAgaW5cbiAgbGV0IGFyZ3YgPSBBcnJheS5tYWtlIChuIC0gMSkgXCJcIiBpblxuICBhcmd2LigwKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKDApO1xuICBmb3IgaSA9IDEgdG8gbiAtIDIgZG9cbiAgICBhcmd2LihpKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKGkgKyAxKVxuICBkb25lO1xuICBsZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgICBMaXN0Lm1hcCBzdGFuZGFsb25lX2FyZ3MgfmY6KGZ1biAoYXJnLCBzcGVjLCBfZG9jKSAtPlxuICAgICAgICAoYXJnLCBzcGVjLCBcIiBVbnVzZWQgd2l0aCAtYXMtcHB4XCIpKVxuICBpblxuICBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgYXJndlxuXG5sZXQgc3RhbmRhbG9uZSAoKSA9XG4gIEFzdGxpYi5pbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKTtcbiAgdHJ5XG4gICAgaWZcbiAgICAgIEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgPj0gMlxuICAgICAgJiZcbiAgICAgIG1hdGNoIFN0ZGxpYi5TeXMuYXJndi4oMSkgd2l0aFxuICAgICAgfCBcIi1hcy1wcHhcIiB8IFwiLS1hcy1wcHhcIiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKVxuICAgIGVsc2Ugc3RhbmRhbG9uZV9tYWluICgpO1xuICAgIFN0ZGxpYi5leGl0IDBcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lIGluXG4gIGxldCBpbnB1dCA9IFN0ZGxpYi5TeXMuYXJndiBpblxuICB0cnkgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3M6W10gfnVzYWdlIGlucHV0XG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHByZXR0eSAoKSA9ICFwcmV0dHlcblxubGV0IGVuYWJsZV9jaGVja3MgKCkgPVxuICAoKiBXZSBkbyBub3QgZW5hYmxlIHRoZSBsb2NhdGlvbnMgY2hlY2sgaGVyZSwgd2UgY3VycmVudGx5IHJlcXVpcmUgdGhhdCBvbmVcbiAgICAgdG8gYmUgc3BlY2lmaWNhbGx5IGVuYWJsZWQuICopXG4gIHBlcmZvcm1fY2hlY2tzIDo9IHRydWU7XG4gIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgOj0gdHJ1ZVxuXG5sZXQgZW5hYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gdHJ1ZVxubGV0IGRpc2FibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSBmYWxzZVxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPSBtYXBfc3RydWN0dXJlIHN0XG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbmxldCB1bmRlcnNjb3JlX2JpbmRpbmcgZXhwID1cbiAgbGV0IGxvYyA9IGV4cC5wZXhwX2xvYyBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYykgfmV4cHI6ZXhwXG5cbmxldCB2YXJzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9uZ2lkZW50LnQgTG9jYXRlZC50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0dCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0dC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3ZhciB2IC0+IExvY2F0ZWQubWFwIChmdW4gdmFyIC0+IExvbmdpZGVudC5MaWRlbnQgdmFyKSB2IDo6IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0dCBhY2NcbiAgZW5kXG5cbigqIEZvciBldmVyeSBbbGV0IHggPSAuLi5dIHN0cnVjdHVyZSBpdGVtLCBhZGQgYSBbbGV0IF8gPSB4XSAqKVxubGV0IGFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlIHN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBzdCBhY2MgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICAgIHwgKHsgcHN0cl9kZXNjID0gUHN0cl92YWx1ZSAoXywgdmJzKTsgcHN0cl9sb2MgPSBsb2MgfSBhcyBpdGVtKSA6OiByZXN0XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCB2YXJzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgdmJzIH5pbml0OltdIH5mOihmdW4gYWNjIHZiIC0+XG4gICAgICAgICAgICAgICAgICB2YXJzX29mI3BhdHRlcm4gdmIucHZiX3BhdCBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGlnbiA9XG4gICAgICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgdmFycyB+ZjooZnVuIHYgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmVfYmluZGluZyAocGV4cF9pZGVudCB+bG9jOnYubG9jIHYpKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsb29wIHJlc3QgKGlnbiBAIChpdGVtIDo6IGFjYykpXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IGxvb3AgcmVzdCAoaXRlbSA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAoc3VwZXIjc3RydWN0dXJlIHN0KSBbXVxuICBlbmRcblxubGV0IGJpbmRzX21vZHVsZV9uYW1lcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW2Jvb2xdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIG1iIGFjYyA9XG4gICAgICBtYXRjaCBtYi5wbWJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgbWIgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2MgPVxuICAgICAgbWF0Y2ggbWQucG1kX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiBtcyBfID1cbiAgICAgIG1hdGNoIG1zLnBtc19uYW1lLnR4dCB3aXRoIChfIDogc3RyaW5nKSAtPiB0cnVlXG5cbiAgICBtZXRob2QhIGZ1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYyA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0IGFjYyA9XG4gICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF91bnBhY2sgbmFtZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlIHwgTm9uZSAtPiBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXQgYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gZXhwciBhY2MgPVxuICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgXywgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG4oKiBbZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZV0gLS0gSWYgdHJ1ZSwgZ2VuZXJhdGVkIGNvZGVcbiAgIGNvbnRhaW5zIGNvbXBpbGVyIGF0dHJpYnV0ZSB0byBkaXNhYmxlIHVudXNlZCB3YXJuaW5ncywgaW5zdGVhZCBvZlxuICAgaW5zZXJ0aW5nIFtsZXQgXyA9IC4uLiBdLiAqKVxubGV0IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93MzJfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgbGV0IGNvbnZfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJjb2RlXCI7IFwiYXR0cmlidXRlXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImNvZGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IGZhbHNlXG4gICAgICAgIHwgXCJhdHRyaWJ1dGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBIb3cgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1rZWVwLXczMlwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYtdzMyXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIlxuXG5sZXQga2VlcF93MzJfaW1wbCAoKSA9ICFrZWVwX3czMl9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3czMl9pbnRmICgpID0gIWtlZXBfdzMyX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3c2MF9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3c2MF9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3c2MF9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93NjBfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXc2MFwiIGtlZXBfdzYwX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDYwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIlxuXG5sZXQga2VlcF93NjBfaW1wbCAoKSA9ICFrZWVwX3c2MF9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbnRmICgpID0gIWtlZXBfdzYwX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzID0gcmVmIE9wdGlvbnMuZGVmYXVsdF9hbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi11bnVzZWQtY29kZS13YXJuaW5nc1wiXG4gICAgKEJvb2wgKCggOj0gKSBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncykpXG4gICAgfmRvYzpcIl8gQWxsb3cgcHB4IGRlcml2ZXJzIHRvIGVuYWJsZSB1bnVzZWQgY29kZSB3YXJuaW5nc1wiXG5cbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKSA9ICFhbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5tb2R1bGUgQXJncyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBBc3RfcGF0dGVybiA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBBc3RfcGF0dGVyblxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQpXG5cbiAgdHlwZSAnYSBwYXJhbSA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIHBhdHRlcm4gOiAoZXhwcmVzc2lvbiwgJ2EpIEFzdF9wYXR0ZXJuLlBhY2tlZC50O1xuICAgIGRlZmF1bHQgOiAnYTtcbiAgfVxuXG4gIGxldCBhcmcgbmFtZSBwYXR0ZXJuID1cbiAgICB7XG4gICAgICBuYW1lO1xuICAgICAgZGVmYXVsdCA9IE5vbmU7XG4gICAgICBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIChmdW4geCAtPiBTb21lIHgpO1xuICAgIH1cblxuICBsZXQgZmxhZyBuYW1lID1cbiAgICBsZXQgcGF0dGVybiA9IHBleHBfaWRlbnQgKGxpZGVudCAoc3RyaW5nIG5hbWUpKSBpblxuICAgIHsgbmFtZTsgZGVmYXVsdCA9IGZhbHNlOyBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIHRydWUgfVxuXG4gIHR5cGUgKF8sIF8pIHQgPVxuICAgIHwgTmlsIDogKCdtLCAnbSkgdFxuICAgIHwgQ29ucyA6ICgnbTEsICdhIC0+ICdtMikgdCAqICdhIHBhcmFtIC0+ICgnbTEsICdtMikgdFxuXG4gIGxldCBlbXB0eSA9IE5pbFxuICBsZXQgKCArPiApIGEgYiA9IENvbnMgKGEsIGIpXG5cbiAgbGV0IHJlYyBuYW1lcyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBzdHJpbmcgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHQsIHApIC0+IHAubmFtZSA6OiBuYW1lcyB0XG5cbiAgbW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gICAgdHlwZSAoXywgXykgaW5zdGFuY2UgPVxuICAgICAgfCBJX25pbCA6ICgnbSwgJ20pIGluc3RhbmNlXG4gICAgICB8IElfY29ucyA6ICgnbTEsICdhIC0+ICdtMikgaW5zdGFuY2UgKiAnYSAtPiAoJ20xLCAnbTIpIGluc3RhbmNlXG5cbiAgICBsZXQgcmVjIGNyZWF0ZSA6XG4gICAgICAgIHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCAtPiAoYSwgYikgaW5zdGFuY2UgPVxuICAgICBmdW4gc3BlYyBhcmdzIC0+XG4gICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgIHwgTmlsIC0+IElfbmlsXG4gICAgICB8IENvbnMgKHQsIHApIC0+XG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Nfb3B0IHAubmFtZSBhcmdzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwLmRlZmF1bHRcbiAgICAgICAgICAgIHwgU29tZSBleHByIC0+IEFzdF9wYXR0ZXJuLlBhY2tlZC5wYXJzZSBwLnBhdHRlcm4gZXhwci5wZXhwX2xvYyBleHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBJX2NvbnMgKGNyZWF0ZSB0IGFyZ3MsIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiLiAoYSwgYikgaW5zdGFuY2UgLT4gYSAtPiBiID1cbiAgICAgZnVuIHQgZiAtPiBtYXRjaCB0IHdpdGggSV9uaWwgLT4gZiB8IElfY29ucyAodCwgeCkgLT4gYXBwbHkgdCBmIHhcbiAgZW5kXG5cbiAgbGV0IGFwcGx5IHQgYXJncyBmID0gSW5zdGFuY2UuYXBwbHkgKEluc3RhbmNlLmNyZWF0ZSB0IGFyZ3MpIGZcbmVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEdlbmVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgaWdub3JlIChfIDogdCkgPSAoKVxuXG50eXBlIHBhcnNlZF9hcmdzID1cbiAgfCBBcmdzIG9mIChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0XG4gIHwgVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG50eXBlICdpdGVtIGRlcml2ZWRfY29kZSA9IHsgaXRlbXMgOiAnaXRlbSBsaXN0OyB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2wgfVxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgZGVyaXZlciA9IHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgVCA6IHtcbiAgICAgICAgc3BlYyA6ICgnYywgJ2EpIEFyZ3MudDtcbiAgICAgICAgZ2VuIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2M7XG4gICAgICAgIGFyZ19uYW1lcyA6IFN0cmluZy5TZXQudDtcbiAgICAgICAgZGVwcyA6IGRlcml2ZXIgbGlzdDtcbiAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sO1xuICAgICAgfVxuICAgICAgICAtPiAoJ2EsICdiKSB0XG5cbiAgbGV0IGRlcHMgKFQgdCkgPSB0LmRlcHNcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSA/YXR0cmlidXRlczooXyA9IFtdKSA/KGRlcHMgPSBbXSkgPyh1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlKVxuICAgICAgICBzcGVjIGdlbiA9XG4gICAgICBsZXQgYXJnX25hbWVzID0gU3RyaW5nLlNldC5vZl9saXN0IChBcmdzLm5hbWVzIHNwZWMpIGluXG4gICAgICBUIHsgc3BlYzsgZ2VuOyBhcmdfbmFtZXM7IGRlcHM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH1cblxuICAgIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cbiAgZW5kXG5cbiAgbGV0IG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWMgZ2VuID1cbiAgICBWMi5tYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjXG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci53aXRoX2xvY19hbmRfcGF0aCBnZW4pXG5cbiAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cblxuICBsZXQgbWVyZ2VfYWNjZXB0ZWRfYXJncyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IFQgdCA6OiByZXN0IC0+IGxvb3AgKFN0cmluZy5TZXQudW5pb24gYWNjIHQuYXJnX25hbWVzKSByZXN0XG4gICAgaW5cbiAgICBsb29wIFN0cmluZy5TZXQuZW1wdHkgbFxuXG4gIGxldCBjaGVja19hcmd1bWVudHMgbmFtZSBnZW5lcmF0b3JzIChhcmdzIDogKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QpID1cbiAgICBsZXQgZW1wdHlfbGFiZWxfZXJyb3IgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IGxhYmVsIHRoZW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgYXJndW1lbnRzIG11c3QgYmUgbGFiZWxsZWRcIilcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yID1cbiAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgKExpc3QuZmluZF9hX2R1cCBhcmdzIH5jb21wYXJlOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuICAgICAgICB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGFyZ3VtZW50IGxhYmVsbGVkICclcycgYXBwZWFycyBtb3JlIHRoYW4gb25jZVwiXG4gICAgICAgICAgICBsYWJlbClcbiAgICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgaW5cbiAgICBsZXQgYWNjZXB0ZWRfYXJncyA9IG1lcmdlX2FjY2VwdGVkX2FyZ3MgZ2VuZXJhdG9ycyBpblxuICAgIGxldCB1bmFjY2VwdGVkX2FyZ3VtZW50ID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLlNldC5tZW0gbGFiZWwgYWNjZXB0ZWRfYXJncykgdGhlblxuICAgICAgICAgICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKFN0cmluZy5TZXQuZWxlbWVudHMgYWNjZXB0ZWRfYXJncykgbGFiZWxcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yICclcycgZG9lc24ndCBhY2NlcHQgYXJndW1lbnQgXFxcbiAgICAgICAgICAgICAgICAgICclcyclc1wiXG4gICAgICAgICAgICAgICAgIG5hbWUgbGFiZWwgc3BlbGxjaGVja19tc2cpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBlbXB0eV9sYWJlbF9lcnJvciBAIGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciBAIHVuYWNjZXB0ZWRfYXJndW1lbnRcbiAgICBpblxuICAgIGlmIExpc3QubGVuZ3RoIGVycm9ycyA9IDAgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yc1xuXG4gIGxldCBhcHBseSAoVCB0KSB+bmFtZTpfIH5jdHh0IHggYXJncyA9IEFyZ3MuYXBwbHkgdC5zcGVjIGFyZ3MgKHQuZ2VuIH5jdHh0IHgpXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSAobmFtZSwgZ2VuZXJhdG9ycywgYXJncykgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGNoZWNrX2FyZ3VtZW50cyBuYW1lLnR4dCBnZW5lcmF0b3JzIGFyZ3MgPj58IGZ1biAoKSAtPlxuICAgIExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgaXRlbXMgPSBhcHBseSAoVCB0KSB+bmFtZTpuYW1lLnR4dCB+Y3R4dCBlbnRyeSBhcmdzO1xuICAgICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzID0gdC51bnVzZWRfY29kZV93YXJuaW5ncztcbiAgICAgICAgfSlcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IGdlbmVyYXRvcnMgZXh0X3RvX2l0ZW0gPVxuICAgIGxldCBsID0gTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooYXBwbHlfYWxsIH5jdHh0IGVudHJ5KSBpblxuICAgIGxldCBsMSwgbGVyciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uIE9rIGUgLT4gTGVmdCBlIHwgRXJyb3IgZSAtPiBSaWdodCBlKSBsXG4gICAgaW5cbiAgICBsZXQgbGVyciA9XG4gICAgICBMaXN0LmNvbmNhdCBsZXJyXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGVyciAtPiBleHRfdG9faXRlbSB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgIGluXG4gICAgTGlzdC5jb25jYXQgbDEgQCBbIHsgaXRlbXMgPSBsZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH0gXVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIG1vZHVsZSBBY3R1YWxfZGVyaXZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBzdHJfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZXh0ZW5zaW9uIDpcbiAgICAgICAgKGxvYzpMb2NhdGlvbi50IC0+IHBhdGg6c3RyaW5nIC0+IGNvcmVfdHlwZSAtPiBleHByZXNzaW9uKSBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQWxpYXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdHJfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlIGtpbmQgPSBTdHIgfCBTaWdcblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBraW5kIDoga2luZDtcbiAgICAgIGdldCA6IEFjdHVhbF9kZXJpdmVyLnQgLT4gKCdhLCAnYikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZ2V0X3NldCA6IEFsaWFzLnQgLT4gc3RyaW5nIGxpc3Q7XG4gICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcImV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwibW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIGV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIG1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gQWN0dWFsX2Rlcml2ZXIgb2YgQWN0dWFsX2Rlcml2ZXIudCB8IEFsaWFzIG9mIEFsaWFzLnRcbiAgdHlwZSBQcHhfZGVyaXZlcnMuZGVyaXZlciArPSBUIG9mIHRcblxuICBsZXQgZGVyaXZlcnMgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoUHB4X2Rlcml2ZXJzLmRlcml2ZXJzICgpKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgVCB0IC0+IFNvbWUgKG5hbWUsIHQpXG4gICAgICB8IF8gLT4gTm9uZSlcblxuICBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBvZiBzdHJpbmdcblxuICBsZXQgcmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIGxldCByZWMgbG9vcCBuYW1lIGNvbGxlY3RlZCA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0cyBjb2xsZWN0ZWQgfmY6KGZ1biAoZCA6IEFjdHVhbF9kZXJpdmVyLnQpIC0+XG4gICAgICAgICAgICBTdHJpbmcuZXF1YWwgZC5uYW1lIG5hbWUpXG4gICAgICB0aGVuIGNvbGxlY3RlZFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGRydikpIC0+IGRydiA6OiBjb2xsZWN0ZWRcbiAgICAgICAgfCBTb21lIChUIChBbGlhcyBhbGlhcykpIC0+XG4gICAgICAgICAgICBsZXQgc2V0ID0gZmllbGQuZ2V0X3NldCBhbGlhcyBpblxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHNldCB+aW5pdDpjb2xsZWN0ZWQgfmY6bG9vcFxuICAgICAgICB8IF8gLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIG5hbWUgW10pXG5cbiAgbGV0IHJlc29sdmVfaW50ZXJuYWwgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIExpc3QubWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBuYW1lKSB+ZjooZnVuIGRydiAtPlxuICAgICAgICBtYXRjaCBmaWVsZC5nZXQgZHJ2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgICAgIHwgU29tZSBnIC0+IChkcnYubmFtZSwgZykpXG5cbiAgbGV0IHN1cHBvcnRlZF9mb3IgZmllbGQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChkZXJpdmVycyAoKSkgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgXykgLT5cbiAgICAgICAgbWF0Y2ggcmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgfCBfIC0+IFN0cmluZy5TZXQuYWRkIG5hbWUgYWNjXG4gICAgICAgIHwgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgXyAtPiBhY2MpXG4gICAgfD4gU3RyaW5nLlNldC5lbGVtZW50c1xuXG4gIGxldCBub3Rfc3VwcG9ydGVkIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSA/KHNwZWxsY2hlY2sgPSB0cnVlKSBuYW1lID1cbiAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgaWYgc3BlbGxjaGVjayB0aGVuXG4gICAgICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoc3VwcG9ydGVkX2ZvciBmaWVsZCkgbmFtZS50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgIGVsc2UgXCJcIlxuICAgIGluXG4gICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICBcIlBweGxpYi5EZXJpdmluZzogJyVzJyBpcyBub3QgYSBzdXBwb3J0ZWQgJXMgZGVyaXZpbmcgZ2VuZXJhdG9yJXNcIlxuICAgICAgbmFtZS50eHQgZmllbGQubmFtZSBzcGVsbGNoZWNrX21zZ1xuXG4gIGxldCByZXNvbHZlIGZpZWxkIG5hbWUgPVxuICAgIHRyeSBPayAocmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lLnR4dClcbiAgICB3aXRoIE5vdF9zdXBwb3J0ZWQgbmFtZScgLT5cbiAgICAgIEVycm9yIChub3Rfc3VwcG9ydGVkIGZpZWxkIH5zcGVsbGNoZWNrOihTdHJpbmcuZXF1YWwgbmFtZS50eHQgbmFtZScpIG5hbWUpXG5cbiAgbGV0IHJlc29sdmVfYWxsIGZpZWxkIGRlcml2ZXJzID1cbiAgICBsZXQgZGVyaXZlcnNfYW5kX2FyZ3MsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICAgKGZ1biAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRWl0aGVyLlJpZ2h0IChub3Rfc3VwcG9ydGVkIGZpZWxkIG5hbWUpXG4gICAgICAgICAgfCBTb21lIChUIF8pIC0+IChcbiAgICAgICAgICAgICAgKCogSXQncyBvbmUgb2Ygb3VycywgcGFyc2UgdGhlIGFyZ3VtZW50cyBub3cuIFdlIGNhbid0IGRvIGl0IGJlZm9yZSBzaW5jZVxuICAgICAgICAgICAgICAgICBwcHhfZGVyaXZpbmcgdXNlcyBhIGRpZmZlcmVudCBzeW50YXggZm9yIGFyZ3VtZW50cy4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgICAgIHwgQXJncyBsIC0+IEVpdGhlci5MZWZ0IChTb21lIChuYW1lLCBsKSlcbiAgICAgICAgICAgICAgfCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+XG4gICAgICAgICAgICAgICAgICBFaXRoZXIuUmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYyBcIlBweGxpYi5EZXJpdmluZzogJXNcIiBtc2cpKVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICgqIEl0J3Mgbm90IG9uZSBvZiBvdXJzLCBpZ25vcmUgaXQuICopXG4gICAgICAgICAgICAgIEVpdGhlci5MZWZ0IE5vbmUpXG4gICAgICAgIGRlcml2ZXJzXG4gICAgICB8PiBmdW4gKGwxLCBsMikgLT4gKExpc3QuZmlsdGVyX29wdCBsMSwgbDIpXG4gICAgaW5cbiAgICAoKiBTZXQgb2YgYWN0dWFsIGRlcml2ZXIgbmFtZXMgKilcbiAgICBsZXQgc2VlbiA9IEhhc2h0YmwuY3JlYXRlIDE2IGluXG4gICAgbGV0IHJlc3VsdCwgZGVwX2Vycm9ycyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+aW5pdDooW10sIFtdKSBkZXJpdmVyc19hbmRfYXJnc1xuICAgICAgICB+ZjooZnVuIChyZXN1bHQsIGVycm9ycykgKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzb2x2ZSBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT4gKHJlc3VsdCwgZXJyb3JzIEAgWyBlIF0pXG4gICAgICAgICAgfCBPayBuYW1lZF9nZW5lcmF0b3JzIC0+XG4gICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIG5hbWVkX2dlbmVyYXRvcnNcbiAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGFjdHVhbF9kZXJpdmVyX25hbWUsIGdlbikgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGR1cF9lcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMuZmFpbF9vbl9kdXBsaWNhdGVfZGVyaXZlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIEhhc2h0YmwubWVtIHNlZW4gYWN0dWFsX2Rlcml2ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGFwcGVhcnMgdHdpY2VcIiBhY3R1YWxfZGVyaXZlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKEdlbmVyYXRvci5kZXBzIGdlbikgfmY6KGZ1biBkZXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBkZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBfbmFtZSA9IGRydi5uYW1lIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEhhc2h0YmwubWVtIHNlZW4gZGVwX25hbWUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgaXMgbmVlZGVkIGZvciAlcywgeW91IG5lZWQgdG8gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGl0IGJlZm9yZSBpbiB0aGUgbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwX25hbWUgbmFtZS50eHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCBzZWVuIH5rZXk6YWN0dWFsX2Rlcml2ZXJfbmFtZSB+ZGF0YTooKTtcbiAgICAgICAgICAgICAgICAgICAgZHVwX2Vycm9yIEAgbF9lcnIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggcmVzdWx0IEAgWyAobmFtZSwgTGlzdC5tYXAgbmFtZWRfZ2VuZXJhdG9ycyB+ZjpzbmQsIGFyZ3MpIF0sXG4gICAgICAgICAgICAgICAgZXJyb3JzIEAgbF9lcnIgKSlcbiAgICBpblxuICAgIChyZXN1bHQsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyBAIGRlcF9lcnJvcnMpXG5cbiAgbGV0IGFkZCA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uID9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvbiA/c2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9leHRlbnNpb24gbmFtZSA9XG4gICAgbGV0IGFjdHVhbF9kZXJpdmVyIDogQWN0dWFsX2Rlcml2ZXIudCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIGV4dGVuc2lvbjtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBY3R1YWxfZGVyaXZlciBhY3R1YWxfZGVyaXZlcikpO1xuICAgIChtYXRjaCBleHRlbnNpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCBleHRlbnNpb24gPVxuICAgICAgICAgIEV4dGVuc2lvbi5kZWNsYXJlIG5hbWUgRXhwcmVzc2lvbiBBc3RfcGF0dGVybi4ocHR5cCBfXykgZlxuICAgICAgICBpblxuICAgICAgICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAoXCJQcHhsaWIuRGVyaXZpbmcuXCIgXiBuYW1lKVxuICAgICAgICAgIH5ydWxlczpbIENvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBleHRlbnNpb24gXSk7XG4gICAgbmFtZVxuXG4gIGxldCBhZGRfYWxpYXMgbmFtZSA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uXG4gICAgICA/c3RyX21vZHVsZV90eXBlX2RlY2wgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvblxuICAgICAgP3NpZ19tb2R1bGVfdHlwZV9kZWNsIHNldCA9XG4gICAgbGV0IGFsaWFzIDogQWxpYXMudCA9XG4gICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gTm9uZSAtPiBzZXQgfCBTb21lIHNldCAtPiBzZXQgaW5cbiAgICAgIHtcbiAgICAgICAgc3RyX3R5cGVfZGVjbCA9IGdldCBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQgPSBnZXQgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uID0gZ2V0IHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsID0gZ2V0IHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dCA9IGdldCBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb24gPSBnZXQgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWxpYXMgYWxpYXMpKTtcbiAgICBuYW1lXG5lbmRcblxubGV0IGFkZCA9IERlcml2ZXIuYWRkXG5sZXQgYWRkX2FsaWFzID0gRGVyaXZlci5hZGRfYWxpYXNcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBbQEBkZXJpdmluZyBdIHBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgaW52YWxpZF93aXRoIH5sb2MgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcImludmFsaWQgW0BAZGVyaXZpbmcgXSBhdHRyaWJ1dGUgc3ludGF4XCJcblxubGV0IGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCA9XG4gIG1hdGNoIExvbmdpZGVudC5mbGF0dGVuX2V4biBpZCB3aXRoXG4gIHwgbCAtPiB7IGxvYzsgdHh0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIGwgfVxuICB8IGV4Y2VwdGlvbiBfIC0+IGludmFsaWRfd2l0aCB+bG9jXG5cbmV4Y2VwdGlvbiBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBwYXJzZV9hcmd1bWVudHMgbCA9XG4gIHRyeVxuICAgIEFyZ3NcbiAgICAgIChtYXRjaCBsIHdpdGhcbiAgICAgIHwgWyAoTm9sYWJlbCwgZSkgXSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgLT5cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGlkLCBleHByKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IExpZGVudCBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheCAoaWQubG9jLCBcInNpbXBsZSBpZGVudGlmaWVyIGV4cGVjdGVkXCIpKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIChuYW1lLCBleHByKSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICggZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICAgICAgIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IG9yIHJlY29yZCBleHBlY3RlZFwiICkpKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbCB+ZjooZnVuIChsYWJlbCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgICAgICAgICAgICB8IExhYmVsbGVkIHMgLT4gKHMsIGV4cHIpXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAgICAgKGV4cHIucGV4cF9sb2MsIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IGV4cGVjdGVkXCIpKSkpXG4gIHdpdGggVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPiBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpXG5cbmxldCBta19kZXJpdmluZ19hdHRyIGNvbnRleHQgfnByZWZpeCB+c3VmZml4ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICAocHJlZml4IF4gXCJkZXJpdmluZ1wiIF4gc3VmZml4KVxuICAgIGNvbnRleHRcbiAgICBBc3RfcGF0dGVybi4oXG4gICAgICBsZXQgZ2VuZXJhdG9yX25hbWUgKCkgPVxuICAgICAgICBtYXAnIChwZXhwX2lkZW50IF9fKSB+ZjooZnVuIGxvYyBmIGlkIC0+XG4gICAgICAgICAgICBmIChnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3IgKCkgPVxuICAgICAgICBtYXAgKGdlbmVyYXRvcl9uYW1lICgpKSB+ZjooZnVuIGYgeCAtPiBmICh4LCBBcmdzIFtdKSlcbiAgICAgICAgfHx8IHBhY2syXG4gICAgICAgICAgICAgIChwZXhwX2FwcGx5IChnZW5lcmF0b3JfbmFtZSAoKSlcbiAgICAgICAgICAgICAgICAgKG1hcDEgKG1hbnkgX18pIH5mOnBhcnNlX2FyZ3VtZW50cykpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvcnMgPVxuICAgICAgICBwZXhwX3R1cGxlIChtYW55IChnZW5lcmF0b3IgKCkpKVxuICAgICAgICB8fHwgbWFwIChnZW5lcmF0b3IgKCkpIH5mOihmdW4gZiB4IC0+IGYgWyB4IF0pXG4gICAgICBpblxuICAgICAgcHN0ciAocHN0cl9ldmFsIGdlbmVyYXRvcnMgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFVudXNlZCB3YXJuaW5nIHN0dWZmICsgbG9jYXRpb25zIGNoZWNrIHNpbGVuY2luZyAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncyA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBzdHJpbmcgPVxuICAgIExpc3Quc29ydCB3YXJuaW5ncyB+Y21wOkludC5jb21wYXJlXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB3YXJuaW5nIC0+IFwiLVwiIF4gSW50LnRvX3N0cmluZyB3YXJuaW5nKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiXG4gIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwud2FybmluZ1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzdHJpbmcpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlubGluZV9kb2NfYXR0ciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwuZG9jXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIFwiQGlubGluZVwiKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbigqIHdyYXAgYSBzdHJ1Y3R1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG1vZF9zdHJ1Y3R1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzdHJfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzdHJ1Y3R1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zdHJdICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc3QgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZiBrZWVwX3czMl9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gKFtdLCBzdClcbiAgICBlbHNlIGlmIG5vdCAhZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSB0aGVuXG4gICAgICAoW10sIElnbm9yZV91bnVzZWRfd2FybmluZy5hZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzI3N0cnVjdHVyZSBzdClcbiAgICBlbHNlIChbIDMyIF0sIHN0KVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgfHwgbm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3N0cnVjdHVyZSBzdCBmYWxzZSlcbiAgICB0aGVuICh3YXJuaW5ncywgc3QpXG4gICAgZWxzZSAoNjAgOjogd2FybmluZ3MsIHN0KVxuICBpblxuICBsZXQgd3JhcCwgc3QgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc3QpXG4gICAgZWxzZSAodHJ1ZSwgcHN0cl9hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHN0KVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCBlbHNlIHN0XG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc3RyXSBhYm92ZSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiB3cmFwIGEgc2lnbmF0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtdHlfc2lnbmF0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc2lnX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc2lnbmF0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc2lnXSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHNnID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZiBrZWVwX3czMl9pbnRmICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gW10gZWxzZSBbIDMyIF1cbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW50ZiAoKVxuICAgICAgfHwgKG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzaWduYXR1cmUgc2cgZmFsc2UpKVxuICAgICAgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICB0aGVuIHdhcm5pbmdzXG4gICAgZWxzZSA2MCA6OiB3YXJuaW5nc1xuICBpblxuICBsZXQgd3JhcCwgc2cgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc2cpXG4gICAgZWxzZSAodHJ1ZSwgcHNpZ19hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHNnKVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zaWcgfmxvYyB+aGlkZSBzZyBlbHNlIHNnXG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc2lnXSBhYm92ZSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE1haW4gZXhwYW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCB0eXBlc191c2VkX2J5X2Rlcml2aW5nICh0ZHMgOiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIDogc3RydWN0dXJlX2l0ZW0gbGlzdCA9XG4gIGlmIGtlZXBfdzMyX2ltcGwgKCkgdGhlbiBbXVxuICBlbHNlXG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgbGV0IHR5cCA9IENvbW1vbi5jb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCBpblxuICAgICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICAgIHBzdHJfdmFsdWUgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICBbXG4gICAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYylcbiAgICAgICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICAgICAgKHBleHBfZnVuIH5sb2MgTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAgICAgICAgKHBwYXRfY29uc3RyYWludCB+bG9jIChwcGF0X2FueSB+bG9jKSB0eXApXG4gICAgICAgICAgICAgICAgICAgKGV1bml0IH5sb2MpKTtcbiAgICAgICAgICBdKVxuXG5sZXQgbWVyZ2VfZ2VuZXJhdG9ycyBmaWVsZCBsID1cbiAgTGlzdC5maWx0ZXJfbWFwIGwgfmY6KGZ1biB4IC0+IHgpIHw+IExpc3QuY29uY2F0IHw+IERlcml2ZXIucmVzb2x2ZV9hbGwgZmllbGRcblxuKCogVGhpcyBmdW5jdGlvbiBtZXJnZXMgWydhIGRlcml2ZWRdIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLiBUaGlzXG4gICByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgYWRkIFtpbmNsdWRlIHN0cnVjdCAuLi4gZW5kXSB0byBkaXNhYmxlIHdhcm5pbmdzLiAqKVxubGV0IG1lcmdlX2Rlcml2ZWQgbGlzdHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgbGlzdHMgfmluaXQ6W10gfmY6KGZ1biBkZXJpdmVkIGFjYyAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgb3RoZXIgOjogb3RoZXJzXG4gICAgICAgIHdoZW4gQm9vbC5lcXVhbCBkZXJpdmVkLnVudXNlZF9jb2RlX3dhcm5pbmdzIG90aGVyLnVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICAgIC0+XG4gICAgICAgICAgeyBvdGhlciB3aXRoIGl0ZW1zID0gZGVyaXZlZC5pdGVtcyBAIG90aGVyLml0ZW1zIH0gOjogb3RoZXJzXG4gICAgICB8IF8gLT4gZGVyaXZlZCA6OiBhY2MpXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICAoKiBUT0RPOiBpbnN0ZWFkIG9mIGRpc2FibGluZyB0aGUgdW51c2VkIHdhcm5pbmcgZm9yIHR5cGVzIHRoZW1zZWx2ZXMsIHdlXG4gICAgIHNob3VsZCBhZGQgYSB0YWcgW0BAdW51c2VkXS4gKilcbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgdGRzIEAgbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBydWxlcyB+dHlwIH5leHBhbmRfc2lnIH5leHBhbmRfc3RyIH5ydWxlX3N0ciB+cnVsZV9zaWcgfnJ1bGVfc3RyX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3QgPVxuICBsZXQgcHJlZml4ID0gXCJwcHhsaWIuXCIgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHIgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJcIiB+cHJlZml4IHR5cCBpblxuICBsZXQgZGVyaXZpbmdfYXR0cl9leHBlY3QgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJfaW5saW5lXCIgfnByZWZpeCB0eXAgaW5cbiAgW1xuICAgIHJ1bGVfc2lnIGRlcml2aW5nX2F0dHIgZXhwYW5kX3NpZztcbiAgICBydWxlX3N0ciBkZXJpdmluZ19hdHRyIGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zdHJfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zaWdfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zaWc7XG4gIF1cblxubGV0IHJ1bGVzX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZGVjbHNcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZGVjbHNcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgcnVsZXNfdHlwZV9leHQgPVxuICBydWxlcyB+dHlwOlR5cGVfZXh0ZW5zaW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9leHRcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0XG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdFxuXG5sZXQgcnVsZXNfZXhjZXB0aW9uID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4Y2VwdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX2V4Y2VwdGlvblxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvblxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3RcblxubGV0IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOk1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgKCkgPVxuICBsZXQgcnVsZXMgPVxuICAgIFsgcnVsZXNfdHlwZV9kZWNsOyBydWxlc190eXBlX2V4dDsgcnVsZXNfZXhjZXB0aW9uOyBydWxlc19tb2R1bGVfdHlwZV9kZWNsIF1cbiAgICB8PiBMaXN0LmNvbmNhdFxuICBpblxuICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gXCJkZXJpdmluZ1wiIH5hbGlhc2VzOlsgXCJ0eXBlX2NvbnZcIiBdIH5ydWxlc1xuIiwib3BlbiBJbXBvcnRcblxudHlwZSBhZmZpeCA9XG4gIHwgUHJlZml4IG9mIHN0cmluZ1xuICB8IFN1ZmZpeCBvZiBzdHJpbmdcbiAgfCBQcmVmaXhTdWZmaXggb2Ygc3RyaW5nICogc3RyaW5nXG5cbmxldCBtYW5nbGUgPyhmaXhwb2ludCA9IFwidFwiKSBhZmZpeCBuYW1lID1cbiAgbWF0Y2ggKFN0cmluZy4obmFtZSA9IGZpeHBvaW50KSwgYWZmaXgpIHdpdGhcbiAgfCB0cnVlLCAoUHJlZml4IHggfCBTdWZmaXggeCkgLT4geFxuICB8IHRydWUsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIG5hbWUgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4IHggLT4geCBeIFwiX1wiIF4gbmFtZVxuICB8IGZhbHNlLCBTdWZmaXggeCAtPiBuYW1lIF4gXCJfXCIgXiB4XG5cbmxldCBtYW5nbGVfdHlwZV9kZWNsID9maXhwb2ludCBhZmZpeCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IG5hbWU7IF8gfTsgXyB9ID1cbiAgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBuYW1lXG5cbmxldCBtYW5nbGVfbGlkID9maXhwb2ludCBhZmZpeCBsaWQgPVxuICBtYXRjaCBsaWQgd2l0aFxuICB8IExpZGVudCBzIC0+IExpZGVudCAobWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExkb3QgKHAsIHMpIC0+IExkb3QgKHAsIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMYXBwbHkgXyAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5FeHBhbnNpb25faGVscGVycy5tYW5nbGVfbGlkOiBMYXBwbHlcIlxuXG5tb2R1bGUgUXVvdGVyID0gUXVvdGVyXG4iLCIoKiogU3RhbmRhcmQgbGlicmFyeSBmb3IgcHB4IHJld3JpdGVycyAqKVxuXG4oKiogW3BweGxpYl0gaXMgbWVhbnQgdG8gYmUgb3BlbmVkIGdsb2JhbGx5IGluIHlvdXIgUFBYIHNvdXJjZSBmaWxlcy5cblxuICAgIE9wZW5pbmcgaXQgY29tZXMgd2l0aCB0d28gYWR2YW50YWdlcy4gRmlyc3QsIGl0IHdpbGwgc2hhZG93IHRoZVxuICAgIFtjb21waWxlci1saWJzXSBtb2R1bGVzLiBUaGUgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMgYXJlIHVuc3RhYmxlIGFuZCBhcmVuJ3RcbiAgICBtZWFudCB0byBiZSB1c2VkLCBzbyBzaGFkb3dpbmcgdGhlbSBpcyBhIGdvb2QgcHJvdGVjdGlvbiBtZWNoYW5pc20uIEluIGNhc2VcbiAgICB5b3UgZG9uJ3Qgd2FudCB0byBvcGVuIFtQcHhsaWJdLCB5b3UgY2FuIG9wZW4gW09jYW1sX3NoYWRvd10gdG8gZ2V0IHRoZSBzYW1lXG4gICAgcHJvdGVjdGlvbi4gU2Vjb25kLCBpdCB3aWxsIGJyaW5nIHNldmVyYWwgbW9kdWxlcyBpbiBzY29wZSwgdGhhdCBhcmUgdXNlZnVsXG4gICAgdG8gaGF2ZSB3aGVuIHdyaXRpbmcgYSByZXdyaXRlcjpcblxuICAgIC0gVGhlIG1haW4gW3BweGxpYl0gbW9kdWxlcywgc3VjaCBhcyBtb2R1bGVzIHRvIGhlbHAgbWFuaXB1bGF0ZSB0aGUgQVNUXG4gICAgICAoeyFBc3RfYnVpbGRlcn0sIHshQXN0X3BhdHRlcm59KSwgYW5kIGEgZmV3IGZ1bmN0aW9ucy5cbiAgICAtIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXMsIHN1Y2ggYXMgeyFBc3RfaGVscGVyfSBvciB7IVBwcmludGFzdH0sXG4gICAgLSBUaGUgd2hvbGUgQVNUIHR5cGVzIChieSBbaW5jbHVkaW5nXSB0aGUgeyFBc3R9IG1vZHVsZSkuXG5cbiAgICB7MSBUaGUgY29yZSBbcHB4bGliXSBlbnRyaWVzfSAqKVxuXG4oKiogezIgTWFuaXB1bGF0aW5nIHRoZSBBU1R9ICopXG5cbm1vZHVsZSBBc3RfYnVpbGRlciA9IEFzdF9idWlsZGVyXG5tb2R1bGUgQXN0X3BhdHRlcm4gPSBBc3RfcGF0dGVyblxubW9kdWxlIEFzdF90cmF2ZXJzZSA9IEFzdF90cmF2ZXJzZVxuXG4oKiogezIgQ29udGV4dC1mcmVlIHJld3JpdGluZ30gKilcblxubW9kdWxlIENvbnRleHRfZnJlZSA9IENvbnRleHRfZnJlZVxubW9kdWxlIERlcml2aW5nID0gRGVyaXZpbmdcbm1vZHVsZSBFeHRlbnNpb24gPSBFeHRlbnNpb25cbm1vZHVsZSBFeHBhbnNpb25fY29udGV4dCA9IEV4cGFuc2lvbl9jb250ZXh0XG5tb2R1bGUgQ29kZV9wYXRoID0gQ29kZV9wYXRoXG5cbigqKiB7MiBPdGhlciBoZWxwZXJzfSAqKVxuXG5tb2R1bGUgRXhwYW5zaW9uX2hlbHBlcnMgPSBFeHBhbnNpb25faGVscGVyc1xubW9kdWxlIE1lcmxpbl9oZWxwZXJzID0gTWVybGluX2hlbHBlcnNcbm1vZHVsZSBTcGVsbGNoZWNrID0gU3BlbGxjaGVja1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5cbigqKiB7MiBEcml2ZXItcmVsYXRlZCBtb2R1bGVzfSAqKVxuXG5tb2R1bGUgRHJpdmVyID0gRHJpdmVyXG5tb2R1bGUgQ2FsbGVyX2lkID0gQ2FsbGVyX2lkXG5tb2R1bGUgQXN0X2lvID0gVXRpbHMuQXN0X2lvLlJlYWRfYmluXG5cbigqKiB7MiBDaGVja3N9ICopXG5cbm1vZHVsZSBBdHRyaWJ1dGUgPSBBdHRyaWJ1dGVcbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzXG5cbigqKiB7MiBDb21tb24gaGVscGVyIGZ1bmN0aW9uc30gKilcblxuaW5jbHVkZSBDb21tb25cblxuKCoqIHsxIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXN9XG5cbiAgICBFeHBvc2Ugc29tZSBtb2R1bGVzIGZyb20geyFQcHhsaWJfYXN0fS4gKilcblxubW9kdWxlIEFzdCA9IFBweGxpYl9hc3QuQXN0XG5tb2R1bGUgQXN0X2hlbHBlciA9IFBweGxpYl9hc3QuQXN0X2hlbHBlclxubW9kdWxlIEFzdHR5cGVzID0gUHB4bGliX2FzdC5Bc3R0eXBlc1xubW9kdWxlIFBhcnNlID0gUHB4bGliX2FzdC5QYXJzZVxubW9kdWxlIFBhcnNldHJlZSA9IFBweGxpYl9hc3QuUGFyc2V0cmVlXG5tb2R1bGUgUHByaW50YXN0ID0gUHB4bGliX2FzdC5QcHJpbnRhc3Rcbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBMb2MgPSBMb2NcblxuKCoqIHsxIFRoZSB3aG9sZSBBU1QgdHlwZXN9ICopXG5cbmluY2x1ZGUgQXN0XG4oKiogSW5jbHVkZSBhbGwgdGhlIEFzdCBkZWZpbml0aW9ucyBzaW5jZSB3ZSBuZWVkIHRoZW0gaW4gZXZlcnkgc2luZ2xlIHBweFxuXG4gICAgQGNsb3NlZCAqKVxuXG4oKiogTWFrZSBzdXJlIGNvZGUgdXNpbmcgUHB4bGliIGRvZXNuJ3QgcmVmZXIgdG8gY29tcGlsZXItbGlicyB3aXRob3V0IGJlaW5nXG4gICAgZXhwbGljaXQgYWJvdXQgaXQ6XG5cbiAgICBAY2xvc2VkICopXG5pbmNsdWRlIHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgb3BlbiBPY2FtbF9zaGFkb3dcblxuICBpbmNsdWRlIChcbiAgICBPY2FtbF9zaGFkb3cgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgT2NhbWxfc2hhZG93XG4gICAgICBlbmRcbiAgICAgIHdpdGggbW9kdWxlIEFzdF9oZWxwZXIgOj0gQXN0X2hlbHBlclxuICAgICAgd2l0aCBtb2R1bGUgQXN0dHlwZXMgOj0gQXN0dHlwZXNcbiAgICAgIHdpdGggbW9kdWxlIERvY3N0cmluZ3MgOj0gRG9jc3RyaW5nc1xuICAgICAgd2l0aCBtb2R1bGUgSWRlbnRpZmlhYmxlIDo9IElkZW50aWZpYWJsZVxuICAgICAgd2l0aCBtb2R1bGUgTGV4ZXIgOj0gTGV4ZXJcbiAgICAgIHdpdGggbW9kdWxlIExvY2F0aW9uIDo9IExvY2F0aW9uXG4gICAgICB3aXRoIG1vZHVsZSBMb25naWRlbnQgOj0gTG9uZ2lkZW50XG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZSA6PSBQYXJzZVxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2V0cmVlIDo9IFBhcnNldHJlZVxuICAgICAgd2l0aCBtb2R1bGUgUHByaW50YXN0IDo9IFBwcmludGFzdFxuICAgICAgd2l0aCBtb2R1bGUgU3ludGF4ZXJyIDo9IFN5bnRheGVycilcbmVuZFxuXG4oKiovKiopXG5cbigqIEZvciB0ZXN0cyBhbmQgUHB4X2NvcmUgY29tcGF0aWJpbGl0eSBsYXllciAqKVxubW9kdWxlIFBweGxpYl9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb21tb24gPSBDb21tb25cbiAgbW9kdWxlIE5hbWUgPSBOYW1lXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIFBweGxpYlxuXG5sZXQgZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2RlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKGFsdF9vcHRpb24gKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkgbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfZXF1YWwgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9jb21wYXJlID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF95b2pzb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2lmID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9pZlwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBvcGFxdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInlvanNvbi5vcGFxdWVcIiBBdHRyaWJ1dGUuQ29udGV4dC5jb3JlX3R5cGUgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSAoKVxuOztcblxubGV0IG9wdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ub3B0aW9uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC50eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgeW9qc29uX2tleSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ua2V5XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5ydGFnXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGludmFsaWRfYXR0cmlidXRlIH5sb2MgYXR0ciBkZXNjcmlwdGlvbiA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgIH5sb2NcbiAgICBcInBweF95b2pzb25fY29udjogW0Alc10gaXMgb25seSBhbGxvd2VkIG9uIHR5cGUgWyVzXS5cIlxuICAgIChBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICAgIGRlc2NyaXB0aW9uXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfY2QgeClcbiAgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgfmxvY1xuICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIGlubGluZSByZWNvcmRzLlwiXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfdGQgeClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzXG4gICAgICB3aGVuIExpc3QuZXhpc3RzIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgXyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gb25seSB3b3JrcyBvbiByZWNvcmRzLiBGb3IgaW5saW5lIFxcXG4gICAgICAgICByZWNvcmRzLCBkbzogdHlwZSB0ID0gQSBvZiB7IGEgOiBpbnQgfSBbQEBhbGxvd19leHRyYV9maWVsZHNdIHwgQiBbQEBAQGRlcml2aW5nIFxcXG4gICAgICAgICB5b2pzb25dXCJcbiAgICB8IF8gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIHJlY29yZHMuXCIpXG47O1xuXG5tb2R1bGUgUmVjb3JkX2ZpZWxkX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSBjb21tb24gPSBbIGB5b2pzb25fb3B0aW9uIG9mIGNvcmVfdHlwZSBdXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgYXR0ciBsZCB+ZiA9XG4gICAgT3B0aW9uLm1hcCAoQXR0cmlidXRlLmdldCBhdHRyIGxkKSB+ZjooZnVuIHggLT4gZiB4LCBBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfmxvYyBnZXR0ZXJzIGxkID1cbiAgICBsZXQgY29tbW9uX2dldHRlcnMgPVxuICAgICAgWyAoZnVuIGxkIC0+XG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLmdldCBvcHRpb24gbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgICAgICB8IFsldHlwZTogWyV0PyB0eV0gb3B0aW9uXSAtPiBTb21lIChgeW9qc29uX29wdGlvbiB0eSwgXCJbQHlvanNvbi5vcHRpb25dXCIpXG4gICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfYXR0cmlidXRlIH5sb2Mgb3B0aW9uIFwiXyBvcHRpb25cIilcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIF1cbiAgICBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyX21hcCAoZ2V0dGVycyBAIGNvbW1vbl9nZXR0ZXJzKSB+ZjooZnVuIGYgLT4gZiBsZCkgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyAodiwgXykgXSAtPiBTb21lIHZcbiAgICB8IF8gOjogXyA6OiBfIGFzIGF0dHJpYnV0ZXMgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiVGhlIGZvbGxvd2luZyBlbGVtZW50cyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOiAlc1wiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKExpc3QubWFwIGF0dHJpYnV0ZXMgfmY6c25kKSlcbiAgOztcblxuICBtb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkZWZhdWx0IG9mIGV4cHJlc3Npb25cbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGUgfmxvYyBbIGdldF9hdHRyaWJ1dGUgZGVmYXVsdCB+ZjooZnVuIGRlZmF1bHQgLT4gYGRlZmF1bHQgZGVmYXVsdCkgXSBsZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBvZiBbIGBub19hcmcgfCBgY29tcGFyZSB8IGBlcXVhbCB8IGB5b2pzb24gfCBgZnVuYyBvZiBleHByZXNzaW9uIF1cbiAgICAgIHwgYGRyb3BfaWYgb2YgZXhwcmVzc2lvblxuICAgICAgfCBga2VlcFxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+bG9jXG4gICAgICAgIFsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gYGRyb3BfZGVmYXVsdCBgbm9fYXJnXG4gICAgICAgICAgICB8IFNvbWUgZSAtPiBgZHJvcF9kZWZhdWx0IChgZnVuYyBlKSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9lcXVhbCB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGVxdWFsKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2NvbXBhcmUgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBjb21wYXJlKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X3lvanNvbiB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYHlvanNvbilcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfaWYgfmY6KGZ1biB4IC0+IGBkcm9wX2lmIHgpXG4gICAgICAgIF1cbiAgICAgICAgbGRcbiAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpga2VlcFxuICAgIDs7XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9XG4gIHsgbGFiZWwgOiBzdHJpbmdcbiAgOyBuYW1lX292ZXJyaWRlIDogc3RyaW5nIG9wdGlvblxuICB9XG5cbmxldCBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlID0geyBsYWJlbDsgbmFtZV9vdmVycmlkZSB9XG5cbmxldCBvZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoY2QgOiBQcHhsaWIuY29uc3RydWN0b3JfZGVjbGFyYXRpb24pID1cbiAgbGV0IGxhYmVsID0gY2QucGNkX25hbWUudHh0IGluXG4gIGxldCBuYW1lX292ZXJyaWRlID0gUHB4bGliLkF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3ZhcmlhbnRfbmFtZSBjZCBpblxuICBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlXG47O1xuXG5sZXQgbGFiZWwgdCA9IHQubGFiZWxcbmxldCBuYW1lIHQgPSBPcHRpb24udmFsdWUgdC5uYW1lX292ZXJyaWRlIH5kZWZhdWx0OnQubGFiZWxcbiIsIm9wZW4gQmFzZVxub3BlbiBQcHhsaWJcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEF0dHJzID0gQXR0cnNcblxubGV0ICggLS0+ICkgbGhzIHJocyA9IGNhc2Ugfmd1YXJkOk5vbmUgfmxocyB+cmhzXG5cbigqIFNpbXBsaWZpZXMgbWF0Y2ggY2FzZXMsIGZvciByZWFkYWJpbGl0eSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEl0J3Mgbm90IG9idmlvdXMgd2UgY2FuXG4gICBzdGljayB0aGlzIGluIHBweF9jb3JlLCBhcyAobWF0Y2ggZTEgd2l0aCBwIC0+IGUyKSBhbmQgKGxldCBwID0gZTEgaW4gZTIpIGFyZSBub3QgdHlwZWRcbiAgIGV4YWN0bHkgdGhlIHNhbWUgKHR5cGUgaW5mZXJlbmNlIGdvZXMgaW4gZGlmZmVyZW50IG9yZGVyLCBtZWFuaW5nIHR5cGUgZGlzYW1iaWd1YXRpb25cbiAgIGRpZmZlcnMpLiAqKVxubGV0IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzID1cbiAgbWF0Y2ggY2FzZXMgd2l0aFxuICB8IFsgeyBwY19saHM7IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzIH0gXSAtPlxuICAgIChtYXRjaCBwY19saHMsIGV4cHIgd2l0aFxuICAgICB8ICggeyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBpZGVudDsgXyB9OyBfIH1cbiAgICAgICAsIHsgcGV4cF9hdHRyaWJ1dGVzID0gW107IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgaWRlbnQnOyBfIH07IF8gfSApXG4gICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgaWRlbnQgaWRlbnQnIC0+IHBjX3Joc1xuICAgICB8IF8gLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwY19saHMgfmV4cHIgXSBwY19yaHMpXG4gIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlc1xuOztcblxubW9kdWxlIEZ1bl9vcl9tYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRnVuIG9mIGV4cHJlc3Npb25cbiAgICB8IE1hdGNoIG9mIGNhc2UgbGlzdFxuXG4gIGxldCBleHByIH5sb2MgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBmXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgY2FzZXNcbiAgOztcblxuICBsZXQgdW5yb2xsIH5sb2MgZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGVhcHBseSB+bG9jIGYgWyBlIF1cbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfbWF0Y2ggfmxvYyBlIGNhc2VzXG4gIDs7XG5cbiAgbGV0IG1hcF90bXBfdmFycyB+bG9jIHRzID1cbiAgICBsZXQgdmFycyA9IExpc3QubWFwaSB0cyB+ZjooZnVuIGkgXyAtPiBcInZcIiBeIEludC50b19zdHJpbmcgaSkgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgTGlzdC5tYXAyX2V4biB2YXJzIHRzIH5mOihmdW4gdmFyIHQgLT5cbiAgICAgICAgbGV0IGV4cHIgPSB1bnJvbGwgfmxvYyAoZXZhciB+bG9jIHZhcikgdCBpblxuICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIHZhcikgfmV4cHIpXG4gICAgaW5cbiAgICBiaW5kaW5ncywgTGlzdC5tYXAgdmFycyB+ZjoocHZhciB+bG9jKSwgTGlzdC5tYXAgdmFycyB+ZjooZXZhciB+bG9jKVxuICA7O1xuZW5kXG5cbigqIEEgcmVuYW1pbmcgaXMgYSBtYXBwaW5nIGZyb20gdHlwZSB2YXJpYWJsZSBuYW1lIHRvIHR5cGUgdmFyaWFibGUgbmFtZS5cbiAgIEluIGRlZmluaXRpb25zIHN1Y2ggYXM6XG5cbiAgIHR5cGUgJ2EgdCA9XG4gICB8IEEgOiA8dHlwZT4gLT4gJ2IgdFxuICAgfCBCIG9mICdhXG5cbiAgIHdlIGdlbmVyYXRlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkIGFmdGVyICdhLCBidXQgJ2EgaXMgbm90IGluXG4gICBzY29wZSBpbiA8dHlwZT4gd2hlbiBoYW5kbGluZyB0aGUgY29uc3RydWN0b3IgQSAoYmVjYXVzZSBBIGlzIGEgZ2FkdCBjb25zdHJ1Y3RvcikuXG4gICBJbnN0ZWFkIHRoZSB0eXBlIHZhcmlhYmxlcyBpbiBzY29wZSBhcmUgdGhlIG9uZXMgZGVmaW5lZCBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgQSxcbiAgIG5hbWVseSAnYi4gVGhlcmUgY291bGQgYmUgbGVzcyBvciBtb3JlIHR5cGUgdmFyaWFibGUgaW4gY2FzZXMgc3VjaCBhczpcblxuICAgdHlwZSBfIGxlc3MgPSBMZXNzIDogaW50IGxlc3NcbiAgIHR5cGUgXyBtb3JlID0gTW9yZSA6ICgnYSAqICdhKSBtb3JlXG5cbiAgIElmIGZvciBpbnN0YW5jZSwgPHR5cGU+IGlzIFsnYiAqICdjXSwgd2hlbiB3ZSBmaW5kICdiLCB3ZSB3aWxsIGxvb2sgZm9yIFsnYl0gaW4gdGhlXG4gICByZW5hbWluZyBhbmQgZmluZCBbJ2FdIChvbmx5IGluIHRoYXQgZ2FkdCBicmFuY2gsIGl0IGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlIGluIG90aGVyXG4gICBicmFuY2hlcyksIGF0IHdoaWNoIHBvaW50IHdlIGNhbiBjYWxsIHRoZSBwcmV2aW91c2x5IGJvdW5kIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWRcbiAgIGFmdGVyICdhLlxuICAgSWYgd2UgY2FuJ3QgZmluZCBhIHJlc3VsdGluZyBuYW1lLCBsaWtlIHdoZW4gbG9va2luZyB1cCBbJ2NdIGluIHRoZSByZW5hbWluZywgdGhlbiB3ZVxuICAgYXNzdW1lIHRoZSB2YXJpYWJsZSBpcyBleGlzdGVudGlhbGx5IHF1YW50aWZpZWQgYW5kIHRyZWF0IGl0IGFzIFtfXSAod2hpY2ggaXMgb2ssXG4gICBhc3N1bWluZyB0aGVyZSBhcmUgbm8gY29uc3RyYWludHMpLiAqKVxubW9kdWxlIFJlbmFtaW5nIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBpZGVudGl0eSA6IHRcbiAgdmFsIGFkZF91bml2ZXJzYWxseV9ib3VuZCA6IHQgLT4gc3RyaW5nIGxvYyAtPiB0XG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgdmFsIGJpbmRpbmdfa2luZCA6IHQgLT4gc3RyaW5nIC0+IGJpbmRpbmdfa2luZFxuICB2YWwgb2ZfZ2FkdCA6IHN0cmluZyBsaXN0IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVycm9yID0gc3RyaW5nIExvYy50XG4gIHR5cGUgdCA9IChzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnQgb3B0aW9uXG5cbiAgbGV0IGlkZW50aXR5ID0gTm9uZVxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIGxldCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgKHQgOiB0KSBuYW1lIDogdCA9XG4gICAgbGV0IG5hbWUgPSBuYW1lLnR4dCBpblxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG1hcCAtPiBTb21lIChNYXAuc2V0IH5rZXk6bmFtZSB+ZGF0YTooT2sgbmFtZSkgbWFwKVxuICA7O1xuXG4gIGxldCBiaW5kaW5nX2tpbmQgdCB2YXIgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YXJcbiAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAobWF0Y2ggTWFwLmZpbmQgbWFwIHZhciB3aXRoXG4gICAgICAgfCBOb25lIC0+IEV4aXN0ZW50aWFsbHlfYm91bmRcbiAgICAgICB8IFNvbWUgKE9rIHZhbHVlKSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YWx1ZVxuICAgICAgIHwgU29tZSAoRXJyb3IgeyBsb2M7IHR4dCB9KSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIiVzXCIgdHh0KVxuICA7O1xuXG4gICgqIFJldHVybiBhIG1hcCB0cmFuc2xhdGluZyB0eXBlIHZhcmlhYmxlcyBhcHBlYXJpbmcgaW4gdGhlIHJldHVybiB0eXBlIG9mIGEgR0FEVFxuICAgICBjb25zdHJ1Y3RvciB0byB0aGVpciBuYW1lIGluIHRoZSB0eXBlIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgIEZvciBpbnN0YW5jZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgKCdhLCAnYikgdCA9IFggOiAneCAqICd5IC0+ICgneCwgJ3kpIHRcbiAgICAgXX1cblxuICAgICB3aWxsIHByb2R1Y2U6XG5cbiAgICAge1tcbiAgICAgICBcInhcIiAtPiBPayBcImFcIlxuICAgICAgICAgICAgICAgIFwieVwiIC0+IE9rIFwiYlwiXG4gICAgIF19XG5cbiAgICAgSWYgYSB2YXJpYWJsZSBhcHBlYXJzIHR3aWNlIGluIHRoZSByZXR1cm4gdHlwZSBpdCB3aWxsIG1hcCB0byBbRXJyb3IgX10uIElmIGFcbiAgICAgdmFyaWFibGUgY2Fubm90IGJlIG1hcHBlZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgaXQgd2lsbCBtYXAgdG9cbiAgICAgW0Vycm9yXSAoZm9yIGluc3RhbmNlIFtBIDogJ2EgLT4gJ2EgbGlzdCB0XSkuXG5cbiAgICAgSXQgcmV0dXJucyBOb25lIG9uIHVzZXIgZXJyb3IsIHRvIGxldCB0aGUgdHlwZXIgZ2l2ZSB0aGUgZXJyb3IgbWVzc2FnZSAqKVxuICBsZXQgb2ZfZ2FkdCA9XG4gICAgKCogQWRkIGFsbCB0eXBlIHZhcmlhYmxlcyBvZiBhIHR5cGUgdG8gYSBtYXAuICopXG4gICAgbGV0IGFkZF90eXBldmFycyA9XG4gICAgICBvYmplY3RcbiAgICAgICAgaW5oZXJpdCBbKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSBtYXAgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIHsgbG9jID0gdHkucHR5cF9sb2NcbiAgICAgICAgICAgICAgOyB0eHQgPVxuICAgICAgICAgICAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IHZhcmlhYmxlIGlzIG5vdCBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YTooRXJyb3IgZXJyb3IpXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB0eSBtYXBcbiAgICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGF1eCBtYXAgdHBfbmFtZSB0cF9pbl9yZXR1cm5fdHlwZSA9XG4gICAgICBtYXRjaCB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgIGlmIE1hcC5tZW0gbWFwIHZhclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IHRwX2luX3JldHVybl90eXBlLnB0eXBfbG9jIGluXG4gICAgICAgICAgICBFcnJvciB7IGxvYzsgdHh0ID0gXCJwcHhfeW9qc29uX2NvbnY6IGR1cGxpY2F0ZSB2YXJpYWJsZVwiIH0pXG4gICAgICAgICAgZWxzZSBPayB0cF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhXG4gICAgICB8IF8gLT4gYWRkX3R5cGV2YXJzI2NvcmVfdHlwZSB0cF9pbl9yZXR1cm5fdHlwZSBtYXBcbiAgICBpblxuICAgIGZ1biB0cHMgY2QgLT5cbiAgICAgIG1hdGNoIGNkLnBjZF9yZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAobWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgIHwgUHR5cF9jb25zdHIgKF8sIHBhcmFtcykgLT5cbiAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggcGFyYW1zIDw+IExpc3QubGVuZ3RoIHRwc1xuICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgIChTdGRsaWIuTGlzdExhYmVscy5mb2xkX2xlZnQyXG4gICAgICAgICAgICAgICAgICB0cHNcbiAgICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZykpXG4gICAgICAgICAgICAgICAgICB+ZjphdXgpXG4gICAgICAgICB8IF8gLT4gTm9uZSlcbiAgOztcbmVuZFxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBQdHlwX3ZhciBfIC0+IFB0eXBfYW55XG4gICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbmxldCByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHggPVxuICBsZXQgcHJlZml4ID0gXCJyaWdpZF9cIiBpblxuICBpZiBTdHJpbmcuZXF1YWwgeCB0eXBlX25hbWUgfHwgU3RyaW5nLmlzX3ByZWZpeCB4IH5wcmVmaXhcbiAgdGhlbiBwcmVmaXggXiB4IF4gXCJfb2ZfdHlwZV9cIiBeIHR5cGVfbmFtZVxuICBlbHNlIHhcbjs7XG5cbmxldCBtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5ID1cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHMgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChMb2NhdGVkLmxpZGVudCB+bG9jOnR5LnB0eXBfbG9jIChyaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHMpLCBbXSlcbiAgICAgICAgICB8IGRlc2MgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgZGVzY1xuICAgICAgICBpblxuICAgICAgICB7IHR5IHdpdGggcHR5cF9kZXNjIH1cbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBxdWFudGlmaWVkIHR5cGUgWyAhICdhIC4uICd6IC4gKG1ha2VfbW9ub190eXBlIHQgKCdhIC4uICd6KSkgXSBvclxuICAgW3R5cGUgYSAuLiB6LiBtYWtlX21vbm9fdHlwZSB0IChhIC4uIHopXSB3aGVuIFt1c2VfcmlnaWRfdmFyaWFibGVzXSBpcyB0cnVlLlxuICAgQW5ub3RhdGlvbiBhcmUgbmVlZGVkIGZvciBub24gcmVndWxhciByZWN1cnNpdmUgZGF0YXR5cGVzIGFuZCBnYWR0IHdoZW4gdGhlIHJldHVybiB0eXBlXG4gICBvZiBjb25zdHJ1Y3RvcnMgYXJlIGNvbnN0cmFpbmVkLiBVbmZvcnR1bmF0ZWx5LCBwdXR0aW5nIHJpZ2lkIHZhcmlhYmxlcyBldmVyeXdoZXJlIGRvZXNcbiAgIG5vdCB3b3JrIGJlY2F1c2Ugb2YgY2VydGFpbnMgdHlwZXMgd2l0aCBjb25zdHJhaW50cy4gV2UgdGh1cyBvbmx5IHVzZSByaWdpZCB2YXJpYWJsZXNcbiAgIGZvciBzdW0gdHlwZXMsIHdoaWNoIGluY2x1ZGVzIGFsbCBHQURUcy4gKilcblxubGV0IHR2YXJzX29mX2NvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBzdHJpbmcgbGlzdCA9XG4gIGxldCB0dmFycyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBpZiBMaXN0Lm1lbSBhY2MgeCB+ZXF1YWw6U3RyaW5nLmVxdWFsIHRoZW4gYWNjIGVsc2UgeCA6OiBhY2NcbiAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB4IGFjY1xuICAgIGVuZFxuICBpblxuICBmdW4gdHlwIC0+IExpc3QucmV2ICh0dmFycyNjb3JlX3R5cGUgdHlwIFtdKVxuOztcblxubGV0IGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmdcbiAgICAgICgqIHBsYWNpbmcgYSBzdWl0YWJseSBwb2x5bW9ycGhpYyBvciByaWdpZCB0eXBlIGNvbnN0cmFpbnQgb24gdGhlIHBhdHRlcm4gb3IgYm9keSAqKVxuICAgICAgKGxvYyA6IExvY2F0aW9uLnQpXG4gICAgICAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICAgKHR5cCA6IGNvcmVfdHlwZSlcbiAgICAgIH4odHBzIDogc3RyaW5nIGxvYyBsaXN0KVxuICAgICAgfihmdW5jX25hbWUgOiBzdHJpbmcpXG4gICAgICAoYm9keSA6IGV4cHJlc3Npb24pXG4gID1cbiAgbGV0IHZhcnMgPSB0dmFyc19vZl9jb3JlX3R5cGUgdHlwIGluXG4gIGxldCBoYXNfdmFycyA9XG4gICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgXyA6OiBfIC0+IHRydWVcbiAgaW5cbiAgbGV0IHBhdCA9XG4gICAgbGV0IHBhdCA9IHB2YXIgfmxvYyBmdW5jX25hbWUgaW5cbiAgICBpZiBub3QgaGFzX3ZhcnNcbiAgICB0aGVuIHBhdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHZhcnMgPSBMaXN0Lm1hcCB+ZjooZnVuIHR4dCAtPiB7IHR4dDsgbG9jIH0pIHZhcnMgaW5cbiAgICAgIHBwYXRfY29uc3RyYWludCB+bG9jIHBhdCAocHR5cF9wb2x5IH5sb2MgdmFycyB0eXApKVxuICBpblxuICBsZXQgYm9keSA9XG4gICAgbGV0IHVzZV9yaWdpZF92YXJpYWJsZXMgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHVzZV9yaWdpZF92YXJpYWJsZXNcbiAgICB0aGVuIChcbiAgICAgIGxldCB0eXBlX25hbWUgPSB0ZC5wdHlwZV9uYW1lLnR4dCBpblxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIHRwc1xuICAgICAgICB+ZjooZnVuIHRwIGJvZHkgLT5cbiAgICAgICAgICBwZXhwX25ld3R5cGUgfmxvYyB7IHR4dCA9IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgdHAudHh0OyBsb2MgPSB0cC5sb2MgfSBib2R5KVxuICAgICAgICB+aW5pdDoocGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSAobWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgdHlwKSkpXG4gICAgZWxzZSBpZiBoYXNfdmFyc1xuICAgIHRoZW4gYm9keVxuICAgIGVsc2UgcGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSB0eXBcbiAgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQgfmV4cHI6Ym9keVxuOztcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgKG9iamVjdFxuICAgIGluaGVyaXQgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZSB3aXRoXG4gICAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCB+bWFya19hc19zZWVuOmZhbHNlIEF0dHJzLm9wYXF1ZSBjdHlwZSkgLT5cbiAgICAgICAgKClcbiAgICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+ICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG4gIGVuZClcbiAgI2dvXG4gICAgKClcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gdG8gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2ZfeW9qc29uX29mIH5sb2MgdCA9IFsldHlwZTogWyV0IHRdIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudF1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX3lvanNvbl9vZlxuXG4gIGxldCBta19zaWcgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9XG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKCggXiApIFwieW9qc29uX29mX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86KG1rX3R5cGUgdGQpXG4gICAgICAgICAgIH5wcmltOltdKSlcbiAgOztcbmVuZFxuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIGZyb20gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2Zfb2ZfeW9qc29uIH5sb2MgdCA9IFsldHlwZTogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50IC0+IFsldCB0XV1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX29mX3lvanNvblxuXG4gIGxldCBzaWdfb2ZfdGQgd2l0aF9wb2x5IHRkID1cbiAgICBsZXQgb2ZfeW9qc29uX3R5cGUgPSBta190eXBlIHRkIGluXG4gICAgbGV0IGxvYyA9IHsgdGQucHR5cGVfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IG9mX3lvanNvbl9pdGVtID1cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IHMgXiBcIl9vZl95b2pzb25cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgIH5wcmltOltdKVxuICAgIGluXG4gICAgbWF0Y2ggd2l0aF9wb2x5LCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUgd2l0aFxuICAgIHwgdHJ1ZSwgYFN1cmVseV9ub3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiU2lnX2dlbmVyYXRlX29mX3lvanNvbi5zaWdfb2ZfdGQ6IHlvanNvbl9wb2x5IGFubm90YXRpb24gYnV0IHR5cGUgaXMgc3VyZWx5IG5vdCBcXFxuICAgICAgICAgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCJcbiAgICB8IGZhbHNlLCAoYFN1cmVseV9ub3QgfCBgTWF5YmUpIC0+IFsgb2ZfeW9qc29uX2l0ZW0gXVxuICAgIHwgKHRydWUgfCBmYWxzZSksIGBEZWZpbml0ZWx5IHwgdHJ1ZSwgYE1heWJlIC0+XG4gICAgICBbIG9mX3lvanNvbl9pdGVtXG4gICAgICA7IHBzaWdfdmFsdWVcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gXCJfX1wiIF4gcyBeIFwiX29mX3lvanNvbl9fXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgICAgfnByaW06W10pXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IG1rX3NpZyB+cG9seSB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+Zjooc2lnX29mX3RkIHBvbHkpXG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgKCogSGFuZGxpbmcgb2YgcmVjb3JkIGRlZmF1bHRzICopXG5cbiAgbGV0IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZCB+ZjooZnVuIHMgLT4gXCJ5b2pzb25fb2ZfXCIgXiBzKSBhcmdzXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHlvanNvbl9vZl90eXBlXG4gICAgICAgICAgICB+KHR5cGV2YXJfaGFuZGxpbmcgOiBbIGBvayBvZiBSZW5hbWluZy50IHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIF0pXG4gICAgICAgICAgICB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgWyV0eXBlOiBfXSAtPiBGdW4gWyVleHByIGZ1biBfIC0+IGBTdHJpbmcgXCJfXCJdXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoIFsgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSBdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJXlvanNvbl9vZjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiXG4gICAgICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgICAgIChtYXRjaCBSZW5hbWluZy5iaW5kaW5nX2tpbmQgcmVuYW1pbmcgcGFybSB3aXRoXG4gICAgICAgICAgfCBVbml2ZXJzYWxseV9ib3VuZCBwYXJtIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyBbJXR5cGU6IF9dKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgKHlvanNvbl9vZl90eXBlX2NvbnN0clxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIGlkXG4gICAgICAgICAgIChMaXN0Lm1hcCBhcmdzIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApKSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4gX2YgLT5cbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX2Z1biBQcHhfeW9qc29uX2NvbnZfbGliLmlnbm9yZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfdmFyaWFudCB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW3lvanNvbl9vZl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KGZ1biB0cCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwdmFycywgZXZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IGluX2V4cHIgPSBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgZXZhcnNdXSBpblxuICAgIGxldCBleHByID0gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgaW5fZXhwciBpblxuICAgIHBwYXRfdHVwbGUgfmxvYyBwdmFycyAtLT4gZXhwclxuXG4gICgqIENvbnZlcnNpb24gb2YgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgeW9qc29uX29mX3ZhcmlhbnRcbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgKChsb2MsIHJvd19maWVsZHMpIDogTG9jYXRpb24udCAqIHJvd19maWVsZCBsaXN0KVxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGl0ZW0gcm93ID1cbiAgICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvdyBpblxuICAgICAgbWF0Y2ggcm93LnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIF1dXG4gICAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXV0gaW5cbiAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID0gTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nKSBhcmdzIGluXG4gICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSB+bG9jIChTb21lIHBhdHQpXG4gICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXVxuICAgICAgfCBSaW5oZXJpdCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgW10pOyBfIH0gLT5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpXG4gICAgICAgIC0tPiB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBbIFslZXhwciB2XSBdXG4gICAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SdGFnLyZcIlxuICAgICAgfCBSaW5oZXJpdCAoeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIF8gOjogXyk7IF8gfSBhcyB0eXApIC0+XG4gICAgICAgIGxldCBjYWxsID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHlwKSBpblxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYykgLS0+IFslZXhwciBbJWUgY2FsbF0gdl1cbiAgICAgIHwgUmluaGVyaXQgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SaW5oZXJpdC9ub24taWRcIlxuICAgICAgKCogaW1wb3NzaWJsZT8qKVxuICAgICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICAgIGluXG4gICAgTWF0Y2ggKExpc3QubWFwIH5mOml0ZW0gcm93X2ZpZWxkcylcblxuICAoKiBQb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzICopXG4gIGFuZCB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICgqIFNob3VsZCBiZSBpbXBvc3NpYmxlIGJlY2F1c2UgW3lvanNvbl9vZl9wb2x5XSBpcyBvbmx5IGNhbGxlZCBvbiBwb2x5bW9ycGhpYyByZWNvcmRcbiAgICAgICAgIGZpZWxkcyBhbmQgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbnMgY2FuJ3Qgb2NjdXIgaW4gdHlwZSBleHByZXNzaW9ucy4gKilcbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicG9seW1vcnBoaWMgdHlwZSBpbiBhIHR5cGUgZXhwcmVzc2lvblwiXG4gICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgICB+ZXhwcjpbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgICBpblxuICAgICAgbGV0IHJlbmFtaW5nID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgcGFybXMgfmluaXQ6cmVuYW1pbmcgfmY6UmVuYW1pbmcuYWRkX3VuaXZlcnNhbGx5X2JvdW5kXG4gICAgICBpblxuICAgICAgKG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICAgICBNYXRjaFxuICAgICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICAgICAgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiByZWNvcmQgdHlwZXMgKilcblxuICBsZXQgbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSA9XG4gICAgbGV0IHAgPSBMb2MubWFrZSAoTG9uZ2lkZW50LkxpZGVudCBuYW1lKSB+bG9jLCBwdmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgcGF0dCBAIFsgcCBdXG4gIDs7XG5cbiAgdHlwZSBpc19lbXB0eV9leHByID1cbiAgICB8IEluc3BlY3RfdmFsdWUgb2YgKGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcbiAgICB8IEluc3BlY3RfeW9qc29uIG9mIChjbnZfZXhwcjpleHByZXNzaW9uIC0+IGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcblxuICBsZXQgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eV9leHByIGtleSA9XG4gICAgbGV0IGxvYyA9IHsgdHAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgfCBGdW4gZXhwIC0+IGV4cFxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biBlbCAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBlbF0gbWF0Y2hpbmdzXV1cbiAgICBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGNudl9leHByXG4gICAgICB8IFNvbWUgeW9qc29uX29mIC0+IFslZXhwciBbJWUgeW9qc29uX29mXSBbJWUgY252X2V4cHJdXVxuICAgIGluXG4gICAgbGV0IGV4cHIgPVxuICAgICAgbGV0IHZfbmFtZSA9IFwidl9cIiBeIG5hbWUgaW5cbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBtYXRjaCBpc19lbXB0eV9leHByIHdpdGhcbiAgICAgICAgICAgIHwgSW5zcGVjdF92YWx1ZSBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIGxvYyAoZXZhciB+bG9jIHZfbmFtZSldXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXVxuICAgICAgICAgICAgfCBJbnNwZWN0X3lvanNvbiBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIH5jbnZfZXhwciBsb2MgWyVleHByIGFyZ11dXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1dXG4gICAgICAgIGluXG4gICAgICAgIFslZSBleHByXV1cbiAgICBpblxuICAgIHBhdHQsIGV4cHJcbiAgOztcblxuICBsZXQgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+bG9jIH53aHkgdHAgPVxuICAgIGxldCBkaXNhbGxvd192YXJpYWJsZXMgPVxuICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFB0eXBfdmFyIHYgLT5cbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBjb250YWlucyBcXFxuICAgICAgICAgICAgICAgICBhIHR5cGUgdmFyaWFibGU6ICclcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb21wYXJpc29uIGlzIG5vdCBhdmFpYWJsZSBmb3IgdHlwZSB2YXJpYWJsZXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgIHZcbiAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBsZXQgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IGZ1biBfIC0+ICgpXG4gICAgICB8IGBSZWN1cnNpdmUgdHlwZXNfYmVpbmdfZGVmaW5lZCAtPlxuICAgICAgICBsZXQgaXRlciA9XG4gICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IGxvYyA9IF87IHR4dCA9IExpZGVudCBzIH0sIF8pIGFzIHQgLT5cbiAgICAgICAgICAgICAgICBpZiBTZXQubWVtIHR5cGVzX2JlaW5nX2RlZmluZWQgc1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBcXFxuICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSB0eXBlIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgcmVjdXJzaXZlIGJsb2NrOiAlcy5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBub3Qgc3VwcG9ydGVkLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGRpc2FsbG93X3ZhcmlhYmxlcyB0cDtcbiAgICBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgdHBcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgaG93XG4gICAgICAgIH5yZW5hbWluZ1xuICAgICAgICBwYXR0XG4gICAgICAgIGV4cHJcbiAgICAgICAgbmFtZVxuICAgICAgICB0cFxuICAgICAgICA/eW9qc29uX29mXG4gICAgICAgIGRlZmF1bHRcbiAgICAgICAga2V5XG4gICAgPVxuICAgIGxldCBpc19lbXB0eSA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgeW9qc29uIC0+XG4gICAgICAgIEluc3BlY3RfeW9qc29uXG4gICAgICAgICAgKGZ1biB+Y252X2V4cHIgbG9jIHlvanNvbl9leHByIC0+XG4gICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgKFslZSBjbnZfZXhwcl0gWyVlIGRlZmF1bHRdKSBbJWUgeW9qc29uX2V4cHJdXSlcbiAgICAgIHwgKGBub19hcmcgfCBgZnVuYyBfIHwgYGNvbXBhcmUgfCBgZXF1YWwpIGFzIGhvdyAtPlxuICAgICAgICBsZXQgZXF1YWxpdHlfZiBsb2MgPVxuICAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICAgfCBgbm9fYXJnIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFtAb2NhbWwucHB3YXJuaW5nXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHRdIGlzIGRlcHJlY2F0ZWQ6IFxcXG4gICAgICAgICAgICAgICAgIHBsZWFzZSB1c2Ugb25lIG9mOlxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0IGZdIGFuZCBnaXZlIGFuIFxcXG4gICAgICAgICAgICAgICAgIGV4cGxpY2l0IGVxdWFsaXR5IGZ1bmN0aW9uIChbZiA9IFxcXG4gICAgICAgICAgICAgICAgIFBvbHkuKD0pXSBjb3JyZXNwb25kcyB0byB0aGUgb2xkIFxcXG4gICAgICAgICAgICAgICAgIGJlaGF2aW9yKVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslY29tcGFyZV1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbF0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVlcXVhbF1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIGlmIHlvdSBcXFxuICAgICAgICAgICAgICAgICB3YW50IHRvIGNvbXBhcmUgdGhlIHlvanNvbiBcXFxuICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbnNcXG5cIl1dXG4gICAgICAgICAgfCBgZnVuYyBmIC0+IGZcbiAgICAgICAgICB8IGBjb21wYXJlIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGNvbXBhcmVcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWNvbXBhcmUuZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICAgIHwgYGVxdWFsIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGVxdWFsXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVlcXVhbDogWyV0IHRwXV1dXG4gICAgICAgIGluXG4gICAgICAgIEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIGVxdWFsaXR5X2YgbG9jXSBbJWUgZGVmYXVsdF0gWyVlIGV4cHJdXSlcbiAgICBpblxuICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHkga2V5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IH50eXBlc19iZWluZ19kZWZpbmVkIH5yZW5hbWluZyBsb2MgZmxkcyB+d3JhcF9leHByID1cbiAgICBsZXQgY29sbCAoKHBhdHQgOiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCksIGV4cHIpIGxkID1cbiAgICAgIGxldCBuYW1lID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IGxkLnBsZF9uYW1lLmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuWW9qc29uX29mLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgIHwgYHlvanNvbl9vcHRpb24gdHAgLT5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IFslZXhwciB2XSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSldIHdpdGhcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT5cbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgWyVlIGV4cHJdXVxuICAgICAgICBpblxuICAgICAgICBwYXR0LCBleHByXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgaG93IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIChtYXRjaCBBdHRyaWJ1dGUuZ2V0IEF0dHJzLmRlZmF1bHQgbGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwibm8gZGVmYXVsdCB0byBkcm9wXCJcbiAgICAgICAgIHwgU29tZSBkZWZhdWx0IC0+XG4gICAgICAgICAgIHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICBob3dcbiAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICBwYXR0XG4gICAgICAgICAgICAgZXhwclxuICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICB0cFxuICAgICAgICAgICAgIGRlZmF1bHRcbiAgICAgICAgICAgICBrZXkpXG4gICAgICB8IGBkcm9wX2lmIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgeW9qc29uX29mX3JlY29yZF9maWVsZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIHBhdHRcbiAgICAgICAgICBleHByXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIHRwXG4gICAgICAgICAgKEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIHRlc3RdIFslZSBleHByXV0pKVxuICAgICAgICAgIGtleVxuICAgICAgfCBga2VlcCBhcyB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgYGtlZXAgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgICAgfCBgb21pdF9uaWwgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBtYXRjaCBbJWUgY252X2V4cHJdIHdpdGhcbiAgICAgICAgICAgICAgfCBgTnVsbCAtPiBibmRzXG4gICAgICAgICAgICAgIHwgYXJnIC0+IChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgaW5cbiAgICAgICAgKCBwYXR0XG4gICAgICAgICwgWyVleHByXG4gICAgICAgICAgbGV0IGJuZHMgPSBbJWUgYm5kc10gaW5cbiAgICAgICAgICBbJWUgZXhwcl1dIClcbiAgICBpblxuICAgIGxldCBpbml0X2V4cHIgPSB3cmFwX2V4cHIgWyVleHByIGJuZHNdIGluXG4gICAgbGV0IHBhdHQsIGV4cHIgPSBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihbXSwgaW5pdF9leHByKSBmbGRzIGluXG4gICAgKCBwcGF0X3JlY29yZCB+bG9jIHBhdHQgQ2xvc2VkXG4gICAgLCBbJWV4cHJcbiAgICAgIGxldCBibmRzIDogKHN0cmluZyAqIFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCkgbGlzdCA9IFtdIGluXG4gICAgICBbJWUgZXhwcl1dIClcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHN1bSB0eXBlcyAqKVxuXG4gIGxldCBicmFuY2hfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHJlbmFtaW5nIH5sb2MgY29uc3RyX2xpZCBjb25zdHJfc3RyIGFyZ3MgPVxuICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgUGNzdHJfcmVjb3JkIGxkcyAtPlxuICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBsb2NcbiAgICAgICAgICBsZHNcbiAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYExpc3QgWyBbJWUgY25zdHJfZXhwcl07IGBBc3NvYyBbJWUgZXhwcl0gXV0pXG4gICAgICBpblxuICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpIC0tPiBleHByXG4gICAgfCBQY3N0cl90dXBsZSBwY2RfYXJncyAtPlxuICAgICAgKG1hdGNoIHBjZF9hcmdzIHdpdGhcbiAgICAgICB8IFtdIC0+XG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgTm9uZSAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgY29uc3RyX3N0cl0gXV1cbiAgICAgICB8IGFyZ3MgLT5cbiAgICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9XG4gICAgICAgICAgIExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSkgYXJnc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgICBpblxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpXG4gICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dKVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHRwcyBjZHMgPVxuICAgIEZ1bl9vcl9tYXRjaC5NYXRjaFxuICAgICAgKExpc3QubWFwIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5vZl9nYWR0IHRwcyBjZCBpblxuICAgICAgICAgbGV0IGNvbnN0cl9saWQgPSBMb2NhdGVkLm1hcCBsaWRlbnQgY2QucGNkX25hbWUgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbmFtZSA9XG4gICAgICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCBpblxuICAgICAgICAgICBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCB8PiBlc3RyaW5nIH5sb2M6Y2QucGNkX25hbWUubG9jXG4gICAgICAgICBpblxuICAgICAgICAgYnJhbmNoX3N1bVxuICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICByZW5hbWluZ1xuICAgICAgICAgICB+bG9jOmNkLnBjZF9sb2NcbiAgICAgICAgICAgY29uc3RyX2xpZFxuICAgICAgICAgICBjb25zdHJfbmFtZVxuICAgICAgICAgICBjZC5wY2RfYXJncykpXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgeW9qc29uX29mX25pbCBsb2MgPSBGdW5fb3JfbWF0Y2guRnVuIFslZXhwciBmdW4gX3YgLT4gYXNzZXJ0IGZhbHNlXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGNkcyAtPlxuICAgICAgICAgIHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgKExpc3QubWFwIHRwcyB+ZjooZnVuIHggLT4geC50eHQpKSBjZHNcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+XG4gICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcuaWRlbnRpdHkgaW5cbiAgICAgICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGxkc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYEFzc29jIFslZSBleHByXV0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNYXRjaCBbIHBhdHQgLS0+IGV4cHIgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiB5b2pzb25fb2ZfbmlsIGxvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayBSZW5hbWluZy5pZGVudGl0eSkgdHkpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3ByaXZhdGVfYWxpYXMgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kLCB0ZC5wdHlwZV9tYW5pZmVzdCwgdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QsIFNvbWUgXywgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3ByaXZhdGVfYWxpYXNcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBSZXBsYWNlIGFsbCB0eXBlIHZhcmlhYmxlIGJ5IF8gdG8gYXZvaWQgZ2VuZXJhbGl6YXRpb24gcHJvYmxlbXMgKilcbiAgICAgICAgbGV0IHR5X3NyYyA9XG4gICAgICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1hbmlmZXN0ID1cbiAgICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG1hbmlmZXN0IC0+IG1hbmlmZXN0XG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwieW9qc29uX29mX3RkL25vLW1hbmlmZXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5X2RzdCA9IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIG1hbmlmZXN0IGluXG4gICAgICAgIGxldCBjb2VyY2lvbiA9IFslZXhwciAodiA6IFsldCB0eV9zcmNdIDo+IFsldCB0eV9kc3RdKV0gaW5cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBjb2VyY2lvbiBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biB2IC0+IFslZSBwZXhwX21hdGNoIH5sb2MgY29lcmNpb24gbWF0Y2hpbmdzXV0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoIHJlY3Vyc2l2ZSB0eXBlcyBieVxuICAgICAgICAgICBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdl0gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3MpXG4gICAgaW5cbiAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta190eXBlIHRkIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBsZXQgcmVjX2ZsYWcgPVxuICAgICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgICAgfCBgUmVjdXJzaXZlIF8gLT4gUmVjdXJzaXZlXG4gICAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgWyBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHkgXVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfdGRzIH5sb2MgfnBhdGg6XyAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgbGV0IHR5cGVzX2JlaW5nX2RlZmluZWQgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gYE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgYFJlY3Vyc2l2ZVxuICAgICAgICAgIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KSkpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOih5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQpIGluXG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3NcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgZmxkcyA9XG4gICAgbGV0IGNvbGwgbGQgPVxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICBlc3RyaW5nIH5sb2Mga2V5XG4gICAgaW5cbiAgICBlbGlzdCB+bG9jIChMaXN0Lm1hcCB+Zjpjb2xsIGZsZHMpXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgbGRzXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX29wZW4gfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogeW9qc29uX2ZpZWxkcyBvbmx5IHdvcmtzIG9uIHJlY29yZHNcIlxuICAgIGluXG4gICAgbGV0IHR5cCA9IFsldHlwZTogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX2ZpZWxkc19vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfZmllbGRzX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZHMgfmxvYyB+cGF0aDpfIChfLCB0ZHMpID1cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgKExpc3QubWFwIHRkcyB+Zjp5b2pzb25fZmllbGRzX29mX3RkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gICgqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG4gICgqIEhhbmRsZSBiYWNrdHJhY2tpbmcgd2hlbiB2YXJpYW50cyBkbyBub3QgbWF0Y2ggKilcbiAgbGV0IGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByID1cbiAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdIC0tPiBleHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgbWF0Y2ggZm9yIHRoZSBsYXN0XG4gICAgIGNhc2Ugb2YgbWF0Y2hpbmcgYSB2YXJpYW50ICopXG4gIGxldCBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaGVzID1cbiAgICBtYXRjaCBtYXRjaF9sYXN0LCBtYXRjaGVzIHdpdGhcbiAgICB8IHRydWUsIFsgeyBwY19saHMgPSBfOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdXG4gICAgfCBfLCBbIHsgcGNfbGhzID0gWyVwYXQ/IF9dOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdIC0+IGV4cHJcbiAgICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciBhdG9tXSBtYXRjaGVzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgbWFsZm9ybWVkIFlvanNvbnMgKilcbiAgbGV0IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHMgY2FsbCA9XG4gICAgbGV0IGNvbGxfc3RydWN0cyBhY2MgKGxvYywgbGFiZWwpID1cbiAgICAgIChwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgIC0tPlxuICAgICAgIG1hdGNoIGNhbGwgd2l0aFxuICAgICAgIHwgYHB0YWdfbm9fYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19ub19hcmdzIF90cF9sb2MgX3lvanNvbl1cbiAgICAgICB8IGBwdGFnX3Rha2VzX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBfdHBfbG9jIF95b2pzb25dKVxuICAgICAgOjogYWNjXG4gICAgaW5cbiAgICBsZXQgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggPVxuICAgICAgWyVwYXQ/IF9dIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpXVxuICAgIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbF9zdHJ1Y3RzIH5pbml0OlsgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggXSByZXZfZWxzXG4gIDs7XG5cbiAgKCogU3BsaXQgdGhlIHJvdyBmaWVsZHMgb2YgYSB2YXJpYW50IHR5cGUgaW50byBsaXN0cyBvZiBhdG9taWMgdmFyaWFudHMsXG4gICAgIHN0cnVjdHVyZWQgdmFyaWFudHMsIGF0b21pYyB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMsXG4gICAgIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcy4gKilcbiAgbGV0IHNwbGl0X3Jvd19maWVsZCB+bG9jIChhdG9tcywgc3RydWN0cywgYWluaHMsIHNpbmhzKSByb3dfZmllbGQgPVxuICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvd19maWVsZCBpblxuICAgIG1hdGNoIHJvd19maWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCB0cGwgPSBsb2MsIGxhYmVsIGluXG4gICAgICB0cGwgOjogYXRvbXMsIHN0cnVjdHMsIGBBIHRwbCA6OiBhaW5ocywgc2luaHNcbiAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIGF0b21zLCAobG9jLCBsYWJlbCkgOjogc3RydWN0cywgYWluaHMsIGBTIChsb2MsIGxhYmVsLCB0cCwgcm93X2ZpZWxkKSA6OiBzaW5oc1xuICAgIHwgUmluaGVyaXQgaW5oIC0+XG4gICAgICBsZXQgaWluaCA9IGBJIGluaCBpblxuICAgICAgYXRvbXMsIHN0cnVjdHMsIGlpbmggOjogYWluaHMsIGlpbmggOjogc2luaHNcbiAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJzcGxpdF9yb3dfZmllbGQvJlwiXG4gICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0eXBlX2NvbnN0cl9vZl95b2pzb24gPyhpbnRlcm5hbCA9IGZhbHNlKSB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgaWQgYXJncyB+bG9jIH5mOihmdW4gcyAtPlxuICAgICAgbGV0IHMgPSBzIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICAgIGlmIGludGVybmFsIHRoZW4gXCJfX1wiIF4gcyBeIFwiX19cIiBlbHNlIHMpXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgPyhpbnRlcm5hbCA9IGZhbHNlKSB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIHwgWyV0eXBlOiBfXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggKHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYG9rIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJW9mX3lvanNvbjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIGxldCBhcmdzID1cbiAgICAgICAgTGlzdC5tYXAgYXJncyB+ZjooZnVuIGFyZyAtPlxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGFyZykpXG4gICAgICBpblxuICAgICAgRnVuICh0eXBlX2NvbnN0cl9vZl95b2pzb24gfmxvYyB+aW50ZXJuYWwgaWQgYXJncylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LmZ1bl9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW29mX3lvanNvbl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZnBzIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyVwIHBsaXN0IH5sb2MgcGF0dHNdXVxuICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX3R1cGxlIH5sb2MgdmFycylcbiAgICA7IFslcGF0PyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIFslZSBlaW50IH5sb2Mgbl1cbiAgICAgICAgICB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmggPVxuICAgIGxldCBsb2MgPSBpbmgucHR5cF9sb2MgaW5cbiAgICBsZXQgZnVuY19leHByID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oIGluXG4gICAgbGV0IGFwcCA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICAgIGxldCBmdW5fZXhwciA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgZnVuY19leHByIGluXG4gICAgICBGdW4gWyVleHByIFslZSBmdW5fZXhwcl0gX3lvanNvbl1cbiAgICBpblxuICAgIGxldCBtYXRjaF9leGMgPVxuICAgICAgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2hcbiAgICAgICAgbG9jXG4gICAgICAgIChoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzKVxuICAgIGluXG4gICAgbGV0IG5ld19vdGhlcl9tYXRjaGVzID1cbiAgICAgIFsgWyVwYXQ/IF9dXG4gICAgICAgIC0tPiBwZXhwX3RyeVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIChbJWUgRnVuX29yX21hdGNoLmV4cHIgfmxvYyBhcHBdXG4gICAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICAgICAgbWF0Y2hfZXhjXG4gICAgICBdXG4gICAgaW5cbiAgICBuZXdfb3RoZXJfbWF0Y2hlcywgdHJ1ZVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGF0b21pYyB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9hdG9tIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9hdG9tc19pbmhzIH5yZXZfc3RydWN0cyA9XG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYEEgKGxvYywgbGFiZWwpIC0+XG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgICAgLS0+IHBleHBfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9zdHJ1Y3RzIGBwdGFnX3Rha2VzX2FyZ3NcbiAgICBpblxuICAgIGxldCBtYXRjaF9hdG9tc19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfYXRvbXNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfYXRvbXNfaW5oc1xuXG4gICgqIFZhcmlhbnQgY29udmVyc2lvbnMgKilcblxuICAoKiBNYXRjaCBhcmd1bWVudHMgb2YgY29uc3RydWN0b3JzICh2YXJpYW50cyBvciBzdW0gdHlwZXMpICopXG4gIGFuZCBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQgbGFiZWwgdHBzID1cbiAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICBsZXQgY25zdHIgdmFyc19leHByID1cbiAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgIHRoZW4gcGV4cF92YXJpYW50IH5sb2MgY25zdHJfbGFiZWwgKFNvbWUgdmFyc19leHByKVxuICAgICAgZWxzZSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSB2YXJzX2V4cHIpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgICBsZXQgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgICBsZXQgdmFyc19leHByID1cbiAgICAgICAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICAgICAgICB8IFsgdmFyX2V4cHIgXSAtPiB2YXJfZXhwclxuICAgICAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgdmFyc1xuICAgICAgICBpblxuICAgICAgICBjbnN0ciB2YXJzX2V4cHJcbiAgICAgIGluXG4gICAgICBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIG1hdGNoIHlvanNvbl9hcmdzIHdpdGhcbiAgICAgIHwgWyVwIHBsaXN0IH5sb2MgcGF0dHNdIC0+IFslZSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBnb29kX2FyZ19tYXRjaF1cbiAgICAgIHwgXyAtPlxuICAgICAgICBbJWVcbiAgICAgICAgICBpZiBpc192YXJpYW50XG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1dXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIHN0cnVjdHVyZWQgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgID1cbiAgICBsZXQgaGFzX3N0cnVjdHNfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYFMgKGxvYywgbGFiZWwsIHRwLCBfcm93KSAtPlxuICAgICAgICBoYXNfc3RydWN0c19yZWYgOj0gdHJ1ZTtcbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBta19jbnN0cl9hcmdzX21hdGNoXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmxvYzp0cC5wdHlwX2xvY1xuICAgICAgICAgICAgfmlzX3ZhcmlhbnQ6dHJ1ZVxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgWyVwYXQ/IFslcCBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gYXMgX3RhZ10gLS0+IGV4cHJcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X2F0b21zIGBwdGFnX25vX2FyZ3MgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0c19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfc3RydWN0c19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9zdHJ1Y3RzX2luaHMsICFoYXNfc3RydWN0c19yZWZcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyBhdG9taWMgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKGkuZS4gbm90XG4gICAgIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMpICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRfbGlzdCA9XG4gICAgbGV0IHJldl9hdG9tcywgcmV2X3N0cnVjdHMsIHJldl9hdG9tc19pbmhzLCByZXZfc3RydWN0c19pbmhzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOihzcGxpdF9yb3dfZmllbGQgfmxvYykgfmluaXQ6KFtdLCBbXSwgW10sIFtdKSByb3dfZmllbGRfbGlzdFxuICAgIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdCwgaGFzX3N0cnVjdHMgPVxuICAgICAgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dCA9IGlmIGhhc19zdHJ1Y3RzIHRoZW4gWyVwYXQ/IHlvanNvbl9hcmdzXSBlbHNlIFslcGF0PyBfXSBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBhdG9tIF0gYXMgX3lvanNvbl1cbiAgICAgIC0tPiBta192YXJpYW50X21hdGNoX2F0b21cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZ1bGxfdHlwZVxuICAgICAgICAgICAgfnJldl9hdG9tc19pbmhzXG4gICAgICAgICAgICB+cmV2X3N0cnVjdHNcbiAgICA7IFslcGF0PyBgTGlzdCAoYFN0cmluZyBhdG9tIDo6IFslcCBtYXliZV95b2pzb25fYXJnc19wYXR0XSkgYXMgX3lvanNvbl1cbiAgICAgIC0tPiBtYXRjaF9zdHJ1Y3RcbiAgICA7IFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB2YXJpYW50cyAqKVxuICBhbmQgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKSA9XG4gICAgbGV0IGlzX2NvbnRhaW5lZCwgZnVsbF90eXBlID1cbiAgICAgIG1hdGNoIGZ1bGxfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgcHR5cF92YXJpYW50IH5sb2Mgcm93X2ZpZWxkcyBDbG9zZWQgTm9uZVxuICAgICAgfCBTb21lIGZ1bGxfdHlwZSAtPiBmYWxzZSwgZnVsbF90eXBlXG4gICAgaW5cbiAgICBsZXQgdG9wX21hdGNoID1cbiAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgfCB7IHByZl9kZXNjID0gUmluaGVyaXQgaW5oOyBfIH0gOjogcmVzdCAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgaW5oIHJvd19maWVsZHMgPVxuICAgICAgICAgIGxldCBjYWxsID1cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAoWyVlXG4gICAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHJcbiAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmgpXVxuICAgICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2FsbFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgICAgIG1hdGNoIGgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IGluaCAtPiBsb29wIGluaCB0XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCByZnRhZ19tYXRjaGVzID1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSByZnRhZ19tYXRjaGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcGV4cF90cnkgfmxvYyBjYWxsIChoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwcilcbiAgICAgICAgaW5cbiAgICAgICAgWyBbJXBhdD8geW9qc29uXSAtLT4gbG9vcCBpbmggcmVzdCBdXG4gICAgICB8IF8gOjogXyAtPiBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogaW1wb3NzaWJsZSAqKVxuICAgIGluXG4gICAgaWYgaXNfY29udGFpbmVkXG4gICAgdGhlblxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgIHRyeSBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHRvcF9tYXRjaF0gd2l0aFxuICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICBlbHNlIE1hdGNoIHRvcF9tYXRjaFxuXG4gIGFuZCBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3BvbHlfZmllbGRfdmFsdWVcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgaW5cbiAgICBtYXRjaCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cCB3aXRoXG4gICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgTWF0Y2hcbiAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGV4dHJhY3RpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA9XG4gICAgbGV0IHJlYyBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGluaXRzLCBub19hcmdzLCBhcmdzXG4gICAgICB8IGxkIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICBsZXQga2V5ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0Om5tIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpIGluXG4gICAgICAgIChtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQsIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gdHApLCBfIHwgKE5vbmUgfCBTb21lIChgZGVmYXVsdCBfKSksIHRwIC0+XG4gICAgICAgICAgIGxldCBpbml0cyA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXSA6OiBpbml0cyBpblxuICAgICAgICAgICBsZXQgdW5yb2xsZWQgPVxuICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIFslZXhwciBfZmllbGRfeW9qc29uXVxuICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgICAgKHBzdHJpbmcgfmxvYyBrZXlcbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZSA9IFslZSB1bnJvbGxlZF0gaW5cbiAgICAgICAgICAgICAgICAgIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXG4gICAgICAgICAgICAgICAgICA6PSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzXSlcbiAgICAgICAgICAgICA6OiBhcmdzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzIG1vcmVfZmxkcylcbiAgICBpblxuICAgIGxldCBoYW5kbGVfZXh0cmEgPVxuICAgICAgWyAoWyVwYXQ/IF9dXG4gICAgICAgICAtLT5cbiAgICAgICAgIGlmIGFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgdGhlbiBbJWV4cHIgKCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgIGlmIFBweF95b2pzb25fY29udl9saWIuKCAhIClcbiAgICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgIHRoZW4gZXh0cmEgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhXG4gICAgICAgICAgICAgZWxzZSAoKV0pXG4gICAgICBdXG4gICAgaW5cbiAgICBsb29wIFtdIGhhbmRsZV9leHRyYSBoYW5kbGVfZXh0cmEgKExpc3QucmV2IGZsZHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgdGhlIHJlc3VsdCBvZiBtYXRjaGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgaGFzX25vbm9wdF9maWVsZHMgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgcmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cyA9XG4gICAgICBsZXQgcmVjIGxvb3AgKChyZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICAgICAgfCAoeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IGxvYyB9OyBfIH0gYXMgbGQpIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICAgIGxldCBmbGQgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXV0gaW5cbiAgICAgICAgICBsZXQgbWtfZGVmYXVsdCBsb2MgPVxuICAgICAgICAgICAgYmlfbHN0LCBbJXBhdD8gWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dIDo6IGdvb2RfcGF0dHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBfIHwgYHlvanNvbl9vcHRpb24gXykgLT4gbWtfZGVmYXVsdCBsb2NcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBoYXNfbm9ub3B0X2ZpZWxkcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAoIFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbJWUgZmxkXSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICwgWyVlIGVzdHJpbmcgfmxvYyBubV1dXG4gICAgICAgICAgICAgICAgOjogYmlfbHN0XG4gICAgICAgICAgICAgICwgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dXG4gICAgICAgICAgICAgICAgOjogZ29vZF9wYXR0cyApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWNjID0gWyVleHByIFslZSBmbGRdXSA6OiByZXNfdHBscywgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgaW5cbiAgICAgICAgICBsb29wIGFjYyBtb3JlX2ZsZHNcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIChbXSwgW10sIFtdKSAoTGlzdC5yZXYgZmxkcylcbiAgICBpblxuICAgIGxldCBtYXRjaF9nb29kX2V4cHIgPVxuICAgICAgaWYgaGFzX3BvbHlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY252dCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgXyB9OyBfIH0gLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIExpc3QubWFwIH5mOmNudnQgZmxkcyB3aXRoXG4gICAgICAgIHwgWyBtYXRjaF9nb29kX2V4cHIgXSAtPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgfCBtYXRjaF9nb29kX2V4cHJzIC0+IHBleHBfdHVwbGUgfmxvYyBtYXRjaF9nb29kX2V4cHJzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjbnZ0IGxkID1cbiAgICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgZGVmYXVsdCkgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBbJWUgZGVmYXVsdF1cbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPiB2XVxuICAgICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiBfKSB8IE5vbmUgLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5tLCB2YWx1ZVxuICAgICAgICBpblxuICAgICAgICB3cmFwX2V4cHIgKHBleHBfcmVjb3JkIH5sb2MgKExpc3QubWFwIH5mOmNudnQgZmxkcykgTm9uZSkpXG4gICAgaW5cbiAgICBsZXQgZXhwciwgcGF0dCA9XG4gICAgICBtYXRjaCByZXNfdHBscywgZ29vZF9wYXR0cyB3aXRoXG4gICAgICB8IFsgcmVzX2V4cHIgXSwgWyByZXNfcGF0dCBdIC0+IHJlc19leHByLCByZXNfcGF0dFxuICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyByZXNfdHBscywgcHBhdF90dXBsZSB+bG9jIGdvb2RfcGF0dHNcbiAgICBpblxuICAgIGlmICFoYXNfbm9ub3B0X2ZpZWxkc1xuICAgIHRoZW5cbiAgICAgIHBleHBfbWF0Y2hcbiAgICAgICAgfmxvY1xuICAgICAgICBleHByXG4gICAgICAgIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIDsgWyVwYXQ/IF9dXG4gICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzXG4gICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgIFslZSBlbGlzdCB+bG9jIGJpX2xzdF1dXG4gICAgICAgIF1cbiAgICBlbHNlIHBleHBfbWF0Y2ggfmxvYyBleHByIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBjb252ZXJ0aW5nIHJlY29yZCBmaWVsZHMgKilcblxuICBsZXQgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBleHByX3JlZl9pbml0cywgX21jX25vX2FyZ3NfZmllbGRzLCBtY19maWVsZHNfd2l0aF9hcmdzID1cbiAgICAgIG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcylcbiAgICBpblxuICAgIGxldCBmaWVsZF9yZWZzID1cbiAgICAgIExpc3QubWFwMl9leG5cbiAgICAgICAgZmxkc1xuICAgICAgICBleHByX3JlZl9pbml0c1xuICAgICAgICB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gaW5pdCAtPlxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAobmFtZSBeIFwiX2ZpZWxkXCIpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIHJlZiBbJWUgaW5pdF1dKVxuICAgIGluXG4gICAgcGV4cF9sZXRcbiAgICAgIH5sb2NcbiAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgKGZpZWxkX3JlZnNcbiAgICAgICBAIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGR1cGxpY2F0ZXNdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICA7IHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBleHRyYV0gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIF0pXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IHJlYyBpdGVyID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIHBleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbIFslcGF0PyAoZmllbGRfbmFtZSwgX2ZpZWxkX3lvanNvbikgOjogdGFpbF1cbiAgICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgICBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBmaWVsZF9uYW1lXSBtY19maWVsZHNfd2l0aF9hcmdzXTtcbiAgICAgICAgICAgICAgICAgIGl0ZXIgdGFpbF1cbiAgICAgICAgICAgICAgOyBbJXBhdD8gW11dIC0tPiBbJWV4cHIgKCldXG4gICAgICAgICAgICAgIF1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgZmllbGRfeW9qc29ucztcbiAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzIHdpdGhcbiAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9kdXBsaWNhdGVfZmllbGRzXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzKVxuICAgICAgICAgICAgeW9qc29uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAobWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSlcbiAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICB8IFtdIC0+IFslZSBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXSldXG4gIDs7XG5cbiAgbGV0IGlzX3BvbHkgKF8sIGZsZHMpID1cbiAgICBMaXN0LmV4aXN0cyBmbGRzIH5mOihmdW5jdGlvblxuICAgICAgfCB7IHBsZF90eXBlID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9OyBfIH0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgIGxvY1xuICAgICAgICBmbGRzXG4gICAgICAgIH53cmFwX2V4cHJcbiAgICA9XG4gICAgbGV0IGhhc19wb2x5ID0gaXNfcG9seSAobG9jLCBmbGRzKSBpblxuICAgIGxldCBjbnZfZmllbGRzID1cbiAgICAgIG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXG4gICAgaW5cbiAgICBpZiBoYXNfcG9seVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBhdHQgPVxuICAgICAgICBsZXQgcGF0cyA9XG4gICAgICAgICAgTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT4gcHZhciB+bG9jIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHBhdHMgd2l0aFxuICAgICAgICB8IFsgcGF0IF0gLT4gcGF0XG4gICAgICAgIHwgcGF0cyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0c1xuICAgICAgaW5cbiAgICAgIGxldCByZWNvcmRfZGVmID1cbiAgICAgICAgd3JhcF9leHByXG4gICAgICAgICAgKHBleHBfcmVjb3JkXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIChMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPlxuICAgICAgICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpKVxuICAgICAgICAgICAgIE5vbmUpXG4gICAgICBpblxuICAgICAgcGV4cF9sZXRcbiAgICAgICAgfmxvY1xuICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwYXR0IH5leHByOmNudl9maWVsZHMgXVxuICAgICAgICByZWNvcmRfZGVmKVxuICAgIGVsc2UgY252X2ZpZWxkc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHJlY29yZHMgKilcbiAgbGV0IHJlY29yZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBNYXRjaFxuICAgICAgWyBbJXBhdD8gYEFzc29jIGZpZWxkX3lvanNvbnMgYXMgeW9qc29uXVxuICAgICAgICAtLT4gbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgZmxkc1xuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4geCAtPiB4KVxuICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9saXN0X2luc3RlYWRfYXRvbVxuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgeW9qc29uXVxuICAgICAgXVxuICA7O1xuXG4gICgqIFN1bSB0eXBlIGNvbnZlcnNpb25zICopXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHdlbGwtZm9ybWVkIFlvanNvbnMgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfcmVjb3JkIGZpZWxkczsgXyB9IC0+XG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfY2QgY2QpKVxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBlIC0+XG4gICAgICAgICAgICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIGUpKVxuICAgICAgICBpblxuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IFsgYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKTsgYEFzc29jIGZpZWxkX3lvanNvbnMgXVxuICAgICAgICAgIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGV4cHJcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gXV1cbiAgICAgICAgLS0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIE5vbmVcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8gYXMgdHBzKTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCAoYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKSA6OiB5b2pzb25fYXJncykgYXNcbiAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAtLT4gbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50OmZhbHNlIGxhYmVsIHRwcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBtYWxmb3JtZWQgWW9qc29ucyB3aXRoIGdvb2QgdGFnc1xuICAgICB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgTGlzdCAoYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBfdHBfbG9jIHlvanNvbl1cbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8pIHwgUGNzdHJfcmVjb3JkIF87IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBfdHBfbG9jIHlvanNvbl0pXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igc3VtIHR5cGVzICopXG4gIGxldCBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIGxldCBhbHRzID1cbiAgICAgIExpc3QubWFwIGFsdHMgfmY6KGZ1biBjZCAtPiBjZCwgTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkKVxuICAgIGluXG4gICAgTWF0Y2hcbiAgICAgIChMaXN0LmNvbmNhdFxuICAgICAgICAgWyBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpXG4gICAgICAgICA7IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBbIFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgICAgICAgIF1cbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgbmlsX29mX3lvanNvbiBsb2MgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgRnVuXG4gICAgICBbJWV4cHJcbiAgICAgICAgZnVuIHlvanNvbiAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X3R5cGUgX3RwX2xvYyB5b2pzb25dXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2M6XyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBmdWxsX3R5cGUgPVxuICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICBpblxuICAgIGxldCBpc19wcml2YXRlID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgfCBQcml2YXRlIC0+IHRydWVcbiAgICAgIHwgUHVibGljIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19wcml2YXRlXG4gICAgdGhlbiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm9mX3lvanNvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIHR5cGVcIjtcbiAgICBsZXQgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uID1cbiAgICAgIG1hdGNoIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186ZmFsc2Ugd2l0aFxuICAgICAgfCBgRGVmaW5pdGVseSAtPiB0cnVlXG4gICAgICB8IGBNYXliZSAtPiBwb2x5XG4gICAgICB8IGBTdXJlbHlfbm90IC0+XG4gICAgICAgIGlmIHBvbHlcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgXCJ5b2pzb25fcG9seSBhbm5vdGF0aW9uIG9uIGEgdHlwZSB0aGF0IGlzIHN1cmVseSBub3QgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCI7XG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYWx0cyAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nICh0ZC5wdHlwZV9sb2MsIGFsdHMpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxibHMgLT5cbiAgICAgICAgICByZWNvcmRfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc190ZCB0ZCkpXG4gICAgICAgICAgICAobG9jLCBsYmxzKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbmlsX29mX3lvanNvbiB0ZC5wdHlwZV9sb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgICAgICAgdHlwZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgIH5mdWxsX3R5cGVcbiAgICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgICB+aW50ZXJuYWw6Y3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgICAgICAgICB0eSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYnkgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB0IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB0XSBdXV1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9uYW1lID0gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICBsZXQgaW50ZXJuYWxfbmFtZSA9IFwiX19cIiBeIHR5cGVfbmFtZSBeIFwiX29mX3lvanNvbl9fXCIgaW5cbiAgICBsZXQgYXJnX3BhdHRzLCBhcmdfZXhwcnMgPVxuICAgICAgTGlzdC51bnppcFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgIGxldCBuYW1lID0gXCJfb2ZfXCIgXiB0cC50eHQgaW5cbiAgICAgICAgICAgICBwdmFyIH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpXG4gICAgICAgICAgIHRwcylcbiAgICBpblxuICAgIGxldCBiaW5kX3RwX2xvY19pbiA9XG4gICAgICBsZXQgZnVsbF90eXBlX25hbWUgPSBQcmludGYuc3ByaW50ZiBcIiVzLiVzXCIgcGF0aCB0eXBlX25hbWUgaW5cbiAgICAgIGZ1biBlIC0+XG4gICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT5cbiAgICAgICAgICAoKiB3ZSBkZWZpbml0ZWx5IGRvbid0IHVzZSB0aGUgc3RyaW5nLCBzbyBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgYSBiaXQgKilcbiAgICAgICAgICBlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICAgICAgWyVlIGVdXVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgdGhlblxuICAgICAgICBTb21lXG4gICAgICAgICAgKGJpbmRfdHBfbG9jX2luXG4gICAgICAgICAgICAgKGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5KSkpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBsZXQgbmVlZF90cF9sb2MsIGJvZHlfYmVsb3dfbGFtYmRhcyA9XG4gICAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbm9fdmFyaWFudF9tYXRjaF9tYyA9XG4gICAgICAgICAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdXG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBpbnRlcm5hbF9jYWxsID1cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbF9leHByID0gZXZhciB+bG9jIGludGVybmFsX25hbWUgaW5cbiAgICAgICAgICAgIGVhcHBseSB+bG9jIGludGVybmFsX2V4cHIgKGFyZ19leHBycyBAIFsgWyVleHByIHlvanNvbl0gXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cnlfd2l0aCA9IHBleHBfdHJ5IH5sb2MgaW50ZXJuYWxfY2FsbCBub192YXJpYW50X21hdGNoX21jIGluXG4gICAgICAgICAgZmFsc2UsIGJpbmRfdHBfbG9jX2luIFslZXhwciBmdW4geW9qc29uIC0+IFslZSB0cnlfd2l0aF1dKVxuICAgICAgICBlbHNlIHRydWUsIGJvZHlcbiAgICAgIGluXG4gICAgICBsZXQgYm9keV93aXRoX2xhbWJkYXMgPVxuICAgICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbiAgICAgICAgICB+cmVjX2ZsYWdcbiAgICAgICAgICAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHlfYmVsb3dfbGFtYmRhcylcbiAgICAgIGluXG4gICAgICBpZiBuZWVkX3RwX2xvYyB0aGVuIGJpbmRfdHBfbG9jX2luIGJvZHlfd2l0aF9sYW1iZGFzIGVsc2UgYm9keV93aXRoX2xhbWJkYXNcbiAgICBpblxuICAgIGxldCBta19iaW5kaW5nIGZ1bmNfbmFtZSBib2R5ID1cbiAgICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3R5cGUgdGQgaW5cbiAgICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2JpbmRpbmdzID1cbiAgICAgIG1hdGNoIGludGVybmFsX2Z1bl9ib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGJvZHkgLT4gWyBta19iaW5kaW5nIGludGVybmFsX25hbWUgYm9keSBdXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfYmluZGluZyA9IG1rX2JpbmRpbmcgZXh0ZXJuYWxfbmFtZSBleHRlcm5hbF9mdW5fYm9keSBpblxuICAgIGludGVybmFsX2JpbmRpbmdzLCBbIGV4dGVybmFsX2JpbmRpbmcgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG4gIGxldCB0ZHNfb2ZfeW9qc29uIH5sb2MgfnBvbHkgfnBhdGggKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgdHlwZXZhcl9oYW5kbGluZyA9IGBvayBpblxuICAgIGxldCBzaW5nbGV0b24gPVxuICAgICAgbWF0Y2ggdGRzIHdpdGhcbiAgICAgIHwgWyBfIF0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBzaW5nbGV0b25cbiAgICB0aGVuIChcbiAgICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgICBpblxuICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBSZWN1cnNpdmUgYmluZGluZ3NcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBpbnRlcm5hbHNcbiAgICAgICAgICBAIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBleHRlcm5hbHMpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cG9seSB+bG9jIH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgaW5cbiAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzKVxuICA7O1xuXG4gIGxldCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cGF0aCBjdHlwID1cbiAgICBsZXQgbG9jID0geyBjdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IGZwID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgY3R5cCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBbJWUgZnVuX2V4cHJdIHlvanNvbl1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzIGxpbmUgJWk6ICVzXCJcbiAgICAgICAgcGF0aFxuICAgICAgICBsb2MubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgICAgIChzdHJpbmdfb2ZfY29yZV90eXBlIGN0eXApXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICBbJWUgYm9keV1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YudHlwZV9vZl95b2pzb25fb2YgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSB0eSA9XG4gICAgU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgdHlcbiAgICB8PiBGdW5fb3JfbWF0Y2guZXhwciB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdGRzXG5lbmRcblxubW9kdWxlIFlvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcy55b2pzb25fZmllbGRzX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2Zfb2ZfeW9qc29uIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgPVxuICAgIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udGRzX29mX3lvanNvblxuZW5kXG5cbm1vZHVsZSBTaWdfeW9qc29uID0gc3RydWN0XG4gIGxldCBta19zaWcgfmxvYyB+cGF0aCBkZWNscyA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICAgIEAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWcgfnBvbHk6ZmFsc2UgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsIH5sb2MgfnBhdGggKChfcmYsIHRkcykgYXMgZGVjbHMpID1cbiAgICBtYXRjaFxuICAgICAgbWtfbmFtZWRfc2lnXG4gICAgICAgIH5sb2NcbiAgICAgICAgfnNnX25hbWU6XCJQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbmFibGUuU1wiXG4gICAgICAgIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudDpmYWxzZVxuICAgICAgICB0ZHNcbiAgICB3aXRoXG4gICAgfCBTb21lIGluY2x1ZGVfaW5mb3MgLT4gWyBwc2lnX2luY2x1ZGUgfmxvYyBpbmNsdWRlX2luZm9zIF1cbiAgICB8IE5vbmUgLT4gbWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJpbmNsdWRlIEpzX29mX29jYW1sLkpzXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWwuVXJsXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbC5Eb21faHRtbFxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbC5GaXJlYnVnXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sLkZpbGVcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbC5Eb21cbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sLlR5cGVkX2FycmF5XG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWwuUmVnZXhwXG5cbnR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgU3RkbGliLnJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxudHlwZSB3aW5kb3cgPSBEb21faHRtbC53aW5kb3dcblxubGV0IHRvX2FycmF5ZiBmIGEgPSBBcnJheS5tYXAgZiAodG9fYXJyYXkgYSlcblxubGV0IG9mX2FycmF5ZiBmIGEgPSBhcnJheSAoQXJyYXkubWFwIGYgYSlcblxubGV0IHRvX2xpc3QgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXkgYVxuXG5sZXQgb2ZfbGlzdCBsID0gYXJyYXkgQEAgQXJyYXkub2ZfbGlzdCBAQCBsXG5cbmxldCB0b19saXN0ZiBmIGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5ZiBmIGFcblxubGV0IG9mX2xpc3RmIGYgYSA9IG9mX2FycmF5ZiBmIEBAIEFycmF5Lm9mX2xpc3QgYVxuXG5sZXQgb3B0ZGVmIGYgPSBmdW5jdGlvbiBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgdW5vcHRkZWZfZiBkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4gZiB4XG5cbmxldCB1bm9wdGRlZiBkZWYgeCA9IG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IHhcblxubGV0IGNvbnZkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG9wdCBmID0gZnVuY3Rpb24gTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGNvbnZvcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGpzX2xvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKHN0cmluZyBzKVxuXG5sZXQgbG9nIGZtdCA9XG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gX2ZtdCAtPiBqc19sb2cgKHN0cmluZyAoRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpKSlcbiAgICBGb3JtYXQuc3RyX2Zvcm1hdHRlciBmbXRcblxubGV0IGVycm9yX29mX3N0cmluZyBzID0gbmV3JWpzIGVycm9yX2NvbnN0ciAoc3RyaW5nIHMpXG5sZXQgY2F0Y2hfZXhuIGYgPSBmdW5jdGlvblxuICB8IEpzX2Vycm9yLkV4biBlIC0+IGYgKEpzX2Vycm9yLnRvX2Vycm9yIGUpXG4gIHwgZXhuIC0+IGYgQEAgZXJyb3Jfb2Zfc3RyaW5nIEBAIFByaW50ZXhjLnRvX3N0cmluZyBleG5cblxubW9kdWxlIEFPcHQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuICBsZXQgbnVsbCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgdW5kZWZpbmVkIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBjb2VyY2UgOiAnYSB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBqc19lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG4gIGxldCBpc19ub25lICh4IDogJ2EgdCkgOiBib29sID0geCA9PSB1bmRlZmluZWQgfHwganNfZXF1YWxzIHggbnVsbFxuICBsZXQgbWFwID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYikgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgcmV0dXJuIChmIChjb2VyY2UgeCkpXG4gIGxldCBiaW5kID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYiB0KSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSBmIChjb2VyY2UgeClcbiAgbGV0IHRlc3QgKHggOiAnYSB0KSA6IGJvb2wgPSBub3QgKGlzX25vbmUgeClcbiAgbGV0IGl0ZXIgKHggOiAnYSB0KSAoZiA6ICdhIC0+IHVuaXQpIDogdW5pdCA9IGlmIG5vdCAoaXNfbm9uZSB4KSB0aGVuIGYgKGNvZXJjZSB4KVxuICBsZXQgY2FzZSAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYikgKGcgOiAnYSAtPiAnYikgOiAnYiA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSBnIChjb2VyY2UgeClcbiAgbGV0IGdldCAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYSkgOiAnYSA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSAoY29lcmNlIHgpXG4gIGxldCBvcHRpb24gPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSBvcHRpb24pIDogJ2EgdCA9IG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgbGV0IHRvX29wdGlvbiAoeCA6ICdhIHQpIDogJ2Egb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgbGV0IGFvcHQgPyhub25lPSh1bmRlZmluZWQgOiAnYiB0KSkgKGYgOiAnYSAtPiAnYikgOiAnYSBvcHRpb24gLT4gJ2IgdCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4gKGYgeClcbiAgbGV0IHRvX2FvcHQgKGYgOiAnYSAtPiAnYikgKHggOiAnYSB0KSA6ICdiIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIChmIHgpKVxuZW5kXG50eXBlICdhIGFvcHQgPSAnYSBBT3B0LnRcblxudHlwZSAnYSBjYXNlX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA+IGdlbl9wcm9wXG5cbmxldCByZWMgY2hvb3NlX2Nhc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBoIDo6IHQgLT4gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBoIHdpdGggTm9uZSAtPiBjaG9vc2VfY2FzZV9vcHQgdCB8IFNvbWUgXyAtPiBoXG5cbmxldCBjaG9vc2VfY2FzZSBsID0gY2hvb3NlX2Nhc2Vfb3B0IChMaXN0Lm1hcCBPcHRkZWYucmV0dXJuIGwpXG5cbmxldCBvYmplY3RfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxubGV0IGFzc2lnbiAobzEgOiBfIHQpIChvMiA6IF8gdCkgPSBVbnNhZmUuY29lcmNlIChvYmplY3RfY3MjI2Fzc2lnbiBvMSBvMilcbmxldCBhc3NpZ25fbGlzdCBsID0gVW5zYWZlLmNvZXJjZSAoVW5zYWZlLm1ldGhfY2FsbCBvYmplY3RfY3MgXCJhc3NpZ25cIiAoQXJyYXkub2ZfbGlzdCBsKSlcblxubGV0IHJlbW92ZV91bmRlZmluZWQgbyA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgbyBpblxuICBrZXlzIyNmb3JFYWNoICh3cmFwX2NhbGxiYWNrIChmdW4gayBfIF8gLT5cbiAgICAgIGlmIG5vdCAoT3B0ZGVmLnRlc3QgKFVuc2FmZS5nZXQgbyBrKSkgdGhlbiBVbnNhZmUuZGVsZXRlIG8gaykpXG4iLCJvcGVuIEpzXG5cbnR5cGUgbm9ucmVjICdhIHQgPSA8ID4gdFxuXG5sZXQgb2JqID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgKHYgOiAnYSkgPSBVbnNhZmUuc2V0IHQgKHN0cmluZyBrKSB2XG5cbmxldCBhZGRfbGlzdCAodCA6ICdhIHQpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIGxcblxubGV0IGFkZF9saXN0ZiAodCA6ICdiIHQpIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgKGYgdikpIGxcblxubGV0IG1ha2UgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0IHQgbDtcbiAgdFxuXG5sZXQgbWFrZWYgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYiB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3RmIHQgZiBsO1xuICB0XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgPSBVbnNhZmUuZGVsZXRlIHQgKHN0cmluZyBrKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA6ICdhIG9wdGlvbiA9XG4gIE9wdGRlZi50b19vcHRpb24gKFVuc2FmZS5nZXQgdCAoc3RyaW5nIGspKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogc3RyaW5nIGxpc3QgPVxuICB0b19saXN0ZiB0b19zdHJpbmcgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2EpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXNmIChmIDogKCdhIC0+ICdiKSkgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYikgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgZiBAQCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGxlbmd0aCAodCA6ICdhIHQpID0gKG9iaiMja2V5cyB0KSMjLmxlbmd0aFxuXG5sZXQgbWVyZ2UgKGwgOiAnYSB0IGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgKGl0ZW1zIHgpKSBsO1xuICB0XG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gcHJvbWlzZTAgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdGhlbl8gOiAoJ2EgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gICAgbWV0aG9kIGNhdGNoIDogKCdiIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb21pc2UgPSBbJ2EsIGVycm9yIHRdIHByb21pc2UwXG5cbnR5cGUgKCdhLCAnYikgcHJvbWlzZV9jcyA9XG4gICgoKCdhIC0+IHVuaXQpIC0+ICgnYiAtPiB1bml0KSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0KVxuICBjb25zdHJcblxubGV0IHByb21pc2UgZiA9XG4gIGxldCBjcyA6ICgnYSwgJ2IpIHByb21pc2VfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX1Byb21pc2UgaW5cbiAgbmV3JWpzIGNzICh3cmFwX2NhbGxiYWNrIGYpXG5cbmxldCBqdGhlbjAgP2Vycm9yIChwcm9tIDogKCdhLCAnYiB0KSBwcm9taXNlMCB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIChmdW4geCAtPiBlZiAoVW5zYWZlLmNvZXJjZSB4KSkgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbiA/ZXJyb3IgKHByb20gOiAnYSBwcm9taXNlIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9IG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIGVmIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4wX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbjAgcHJvbSBmXG5sZXQganRoZW5fb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuIHByb20gZlxuXG5sZXQgcnRoZW4gcHJvbSBmID1cbiAganRoZW4gfmVycm9yOihmdW4gZSAtPiBmIEBAIEVycm9yIGUpIHByb20gKGZ1biB4IC0+IGYgKE9rIHgpKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2cyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiBvMSBvMlxuXG5sZXQgbG9nMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjbG9nXzMgbzEgbzIgbzNcblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IGxvZ19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgbG9nX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBkZWJ1ZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyBvXG5cbmxldCBkZWJ1ZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgbzEgbzJcblxubGV0IGRlYnVnMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMyBvMSBvMiBvM1xuXG5sZXQgZGVidWdfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgcylcblxubGV0IGRlYnVnX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGRlYnVnX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IHdhcm4gbyA9IEZpcmVidWcuY29uc29sZSMjd2FybiBvXG5cbmxldCB3YXJuMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIG8xIG8yXG5cbmxldCB3YXJuMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8zIG8xIG8yIG8zXG5cbmxldCB3YXJuX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIChKcy5zdHJpbmcgcylcblxubGV0IHdhcm5fc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCB3YXJuX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZXJyb3IgbyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3Igb1xuXG5sZXQgZXJyb3IyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIG8xIG8yXG5cbmxldCBlcnJvcjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgbzEgbzIgbzNcblxubGV0IGVycm9yX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpXG5cbmxldCBlcnJvcl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBlcnJvcl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgYmlnSW50ID0gb2JqZWN0XG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBfIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdmFsdWVPZiA6IGJpZ0ludCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vbnJlYyB0ID0gYmlnSW50IHRcblxubGV0IGJpZ0ludCA6IChVbnNhZmUuYW55IC0+IHQpID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIkJpZ0ludFwiXG5cbmxldCBvZl9zdHJpbmcgcyA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBzdHJpbmcgcylcbmxldCBvZl9pbnQgKGkgOiBpbnQpID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIGkpXG5sZXQgb2ZfaW50NjQgKGkgOiBpbnQ2NCkgPSBvZl9zdHJpbmcgKEludDY0LnRvX3N0cmluZyBpKVxubGV0IG9mX25hdGl2ZSAoaSA6IG5hdGl2ZWludCkgPSBvZl9zdHJpbmcgKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbmxldCBvZl9mbG9hdCBmID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIG51bWJlcl9vZl9mbG9hdCBmKVxuXG5sZXQgdG9fbG9jYWxlX3N0cmluZyA/Zm10ID9vcHRpb25zIChuIDogdCkgPVxuICB0b19zdHJpbmcgKG4jI3RvTG9jYWxlU3RyaW5nIChvcHRkZWYgc3RyaW5nIGZtdCkgKE9wdGRlZi5vcHRpb24gb3B0aW9ucykpXG5sZXQgdG9fc3RyaW5nIChuIDogdCkgPSB0b19zdHJpbmcgbiMjdG9TdHJpbmdcbiIsIm9wZW4gSnNcblxubGV0IHNldElubmVySHRtbCBlbHQgcyA9IGVsdCMjLmlubmVySFRNTCA6PSBzdHJpbmcgc1xuXG5sZXQgc2V0VGV4dCBlbHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBzIC0+XG4gICAgICBlbHQjIy50ZXh0Q29udGVudCA6PSBzb21lIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNhZGQgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3NlcyBlbHQgbCA9IExpc3QuaXRlciAoYWRkQ2xhc3MgZWx0KSBsXG5cbmxldCByZW1vdmVDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjcmVtb3ZlIChzdHJpbmcgcylcblxubGV0IGNvbnRhaW5zQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2NvbnRhaW5zIChzdHJpbmcgcylcblxubGV0IHNldEF0dHJpYnV0ZSBlbHQga2V5IHZhbHVlID0gZWx0IyNzZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpIChzdHJpbmcgdmFsdWUpXG5cbmxldCByZW1vdmVBdHRyaWJ1dGUgZWx0IGtleSA9IGVsdCMjcmVtb3ZlQXR0cmlidXRlIChzdHJpbmcga2V5KVxuXG5sZXQgZ2V0QXR0cmlidXRlIGVsdCBrZXkgPSBPcHQudG9fb3B0aW9uIChlbHQjI2dldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkpXG5cbmxldCBzZXRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFkZENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIGxldCBzdHlsZXMgPVxuICAgIG1hdGNoIGdldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgc3R5bGVzXG4gICAgfCBTb21lIG9sZF9zdHlsZXMgLT5cbiAgICAgICAgb2xkX3N0eWxlcyBeIFwiOyBcIiBeIHN0eWxlc1xuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFwcGVuZENoaWxkID0gRG9tLmFwcGVuZENoaWxkXG5cbmxldCByZW1vdmVDaGlsZCA9IERvbS5yZW1vdmVDaGlsZFxuXG5sZXQgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID0gTGlzdC5pdGVyIChEb20uYXBwZW5kQ2hpbGQgcGFyZW50KSBjaGlsZHJlblxuXG5sZXQgY2hpbGRyZW4gcGFyZW50ID0gRG9tLmxpc3Rfb2Zfbm9kZUxpc3QgcGFyZW50IyMuY2hpbGROb2Rlc1xuXG5sZXQgcmVtb3ZlQ2hpbGRpIHBhcmVudCBpID1cbiAgbWF0Y2ggTGlzdC5udGhfb3B0IChjaGlsZHJlbiBwYXJlbnQpIGkgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBjaGlsZCAtPlxuICAgICAgcmVtb3ZlQ2hpbGQgcGFyZW50IGNoaWxkXG5cbmxldCByZW1vdmVDaGlsZHJlbiBwYXJlbnQgPSBMaXN0Lml0ZXIgKHJlbW92ZUNoaWxkIHBhcmVudCkgKGNoaWxkcmVuIHBhcmVudClcblxubGV0IHJlcGxhY2VDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPVxuICByZW1vdmVDaGlsZHJlbiBwYXJlbnQgO1xuICBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW5cblxubGV0IGJ5X2lkIHMgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBzXG5cbmxldCBhZGRMaXN0ZW5lciA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgZXYgZiA9XG4gIGxldCBjYXB0dXJlID0gT3B0aW9uLm1hcCBib29sIGNhcHR1cmUgaW5cbiAgbGV0IG9uY2UgPSBPcHRpb24ubWFwIGJvb2wgb25jZSBpblxuICBsZXQgcGFzc2l2ZSA9IE9wdGlvbi5tYXAgYm9vbCBwYXNzaXZlIGluXG4gIGlnbm9yZSBAQFxuICBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCAoRG9tLkV2ZW50Lm1ha2UgZXYpXG4gICAgKERvbS5oYW5kbGVyIChmdW4gZSAtPiBib29sIChmIGUpKSlcblxubW9kdWxlIEVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhjbGFzc2VzID0gW10pID8oc3R5bGVzID0gW10pID8obGlzdGVuID0gW10pID8oYXR0ciA9IFtdKSA/dGV4dCBmXG4gICAgICBjaGlsZHJlbiA9XG4gICAgbGV0IGVsdCA9IGYgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biAoZXYsIGYpIC0+IGFkZExpc3RlbmVyIGVsdCBldiBmKSBsaXN0ZW4gO1xuICAgIGFkZENsYXNzZXMgZWx0IGNsYXNzZXMgO1xuICAgIHNldENTUyBlbHQgc3R5bGVzIDtcbiAgICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gc2V0QXR0cmlidXRlIGVsdCBrIHYpIGF0dHIgO1xuICAgIHNldFRleHQgZWx0IHRleHQgO1xuICAgIGFwcGVuZENoaWxkcmVuIGVsdCBjaGlsZHJlbiA7XG4gICAgZWx0XG5cbiAgbGV0IGJ1dHRvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQnV0dG9uIGNoaWxkcmVuXG5cbiAgbGV0IGRpdiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRGl2IGNoaWxkcmVuXG5cbiAgbGV0IGEgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUEgY2hpbGRyZW5cblxuICBsZXQgc3BhbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU3BhbiBjaGlsZHJlblxuXG4gIGxldCBmb3JtID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVGb3JtIGNoaWxkcmVuXG5cbiAgbGV0IG9wdGlvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlT3B0aW9uIGNoaWxkcmVuXG5cbiAgbGV0IHNlbGVjdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2VsZWN0IGNoaWxkcmVuXG5cbiAgbGV0IGlucHV0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCAoKSA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbnB1dCBbXVxuXG4gIGxldCBpZnJhbWUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlmcmFtZSBjaGlsZHJlblxuXG4gIGxldCBsYWJlbCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGFiZWwgY2hpbGRyZW5cblxuICBsZXQgdWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVVsIGNoaWxkcmVuXG5cbiAgbGV0IGxpID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMaSBjaGlsZHJlblxuXG4gIGxldCBpbWcgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUltZyBjaGlsZHJlblxuXG4gIGxldCBzY3JpcHQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNjcmlwdCBjaGlsZHJlblxuXG4gIGxldCB0YWJsZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGFibGUgY2hpbGRyZW5cblxuICBsZXQgdHIgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRyIGNoaWxkcmVuXG5cbiAgbGV0IHRoID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUaCBjaGlsZHJlblxuXG4gIGxldCB0ZCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGQgY2hpbGRyZW5cbmVuZFxuXG5sZXQgZW5jYXBzZSBzID0gXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCJcblxubGV0IHN0cmluZ3NfdG9fYXJyYXkgbCA9IFwiW1wiIF4gU3RyaW5nLmNvbmNhdCBcIixcIiBsIF4gXCJdXCJcblxubGV0IHN0cmluZ3NfdG9fb2JqZWN0IGwgPVxuICBsZXQgcyA9XG4gICAgXCJ7XCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIsXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGVuY2Fwc2UgayBeIFwiOlwiIF4gdikgbClcbiAgICBeIFwifVwiXG4gIGluXG4gIHRyeSBfSlNPTiMjcGFyc2UgKHN0cmluZyBzKVxuICB3aXRoIF8gLT5cbiAgICBsb2dfc3RyIChcImNhbm5vdCBwYXJzZSBqc29uIFwiIF4gcykgO1xuICAgIFVuc2FmZS5vYmogW3x8XVxuIiwib3BlbiBFempzX21pblxuXG5tb2R1bGUgVHlwZXMgPSBFempzX2lkYl90eXBlc1xub3BlbiBUeXBlc1xuXG50eXBlIG1vZGUgPSBSRUFET05MWSB8IFJFQURXUklURSB8IFZFUlNJT05DSEFOR0VcbnR5cGUgZGlyZWN0aW9uID0gTkVYVCB8IFBSRVYgfCBORVhUVU5JUVVFIHwgUFJFVlVOSVFVRVxuXG50eXBlIGRiX29wdGlvbnMgPSB7IGtleV9wYXRoIDogc3RyaW5nIG9wdGlvbjsgYXV0b19pbmNyZW1lbnQgOiBib29sIG9wdGlvbiB9XG5cbnR5cGUgZGJfdXBncmFkZSA9IHsgb2xkX3ZlcnNpb24gOiBpbnQ7IG5ld192ZXJzaW9uIDogaW50IH1cblxudHlwZSBpbmRleF9vcHRpb25zID0geyB1bmlxdWUgOiBib29sIG9wdGlvbjsgbXVsdGlfZW50cnkgOiBib29sIG9wdGlvbjsgbG9jYWxlIDogYm9vbCBvcHRpb24gfVxuXG5tb2R1bGUgdHlwZSBUcl9zaWcgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUganNcbiAgdmFsIHRvX2pzIDogdCAtPiBqc1xuICB2YWwgb2ZfanMgOiBqcyAtPiB0XG5lbmRcblxubGV0IHN0cl9vZl9tb2RlID0gZnVuY3Rpb25cbiAgfCBSRUFET05MWSAtPiBzdHJpbmcgXCJyZWFkb25seVwiXG4gIHwgUkVBRFdSSVRFIC0+IHN0cmluZyBcInJlYWR3cml0ZVwiXG4gIHwgVkVSU0lPTkNIQU5HRSAtPiBzdHJpbmcgXCJ2ZXJzaW9uY2hhbmdlXCJcblxubGV0IHN0cl9vZl9kaXJlY3Rpb24gPSBmdW5jdGlvblxuICB8IE5FWFQgLT4gc3RyaW5nIFwibmV4dFwiXG4gIHwgUFJFViAtPiBzdHJpbmcgXCJwcmV2XCJcbiAgfCBORVhUVU5JUVVFIC0+IHN0cmluZyBcIm5leHR1bmlxdWVcIlxuICB8IFBSRVZVTklRVUUgLT4gc3RyaW5nIFwicHJldnVuaXF1ZVwiXG5cbmxldCBpREJLZXlSYW5nZSA6IFVuc2FmZS5hbnkgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCJcbmxldCBpbmRleGVkREIgOiBqc19zdHJpbmcgdCBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCJcblxubGV0IHJlc3VsdCByID0gciMjLnJlc3VsdFxuXG5sZXQgd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAocmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCB3cmFwZiA/ZXJyb3IgP2NhbGxiYWNrIGcgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChnIEBAIHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgZGJfdXBncmFkZV9ldmVudCAoZSA6IGlEQlZlcnNpb25DaGFuZ2VFdmVudCB0KSA9IHtcbiAgb2xkX3ZlcnNpb24gPSBlIyMub2xkVmVyc2lvbjtcbiAgbmV3X3ZlcnNpb24gPSBlIyMubmV3VmVyc2lvbjtcbn1cblxubGV0IG9wZW5EQiA/dXBncmFkZSA/ZXJyb3IgP3ZlcnNpb24gbmFtZSBjYWxsYmFjayA9XG4gIGxldCBpbmRleGVkREIgOiBfIGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIiBpblxuICBsZXQgciA9IGxhenkgKGluZGV4ZWREQiMjX29wZW4gKHN0cmluZyBuYW1lKSAoQU9wdC5vcHRpb24gdmVyc2lvbikpIGluXG4gIHdyYXAgP2Vycm9yIH5jYWxsYmFjayByO1xuICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICByIyMub251cGdyYWRlbmVlZGVkIDo9XG4gICAgQU9wdC5hb3B0IChmdW4gdSAtPiB3cmFwX2NhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICBsZXQgdiA9IGRiX3VwZ3JhZGVfZXZlbnQgZSBpblxuICAgICAgICBsZXQgZGIgPSByZXN1bHQgciBpblxuICAgICAgICB1IGRiIHYpKSB1cGdyYWRlXG5cbmxldCB0cmFuc2FjdGlvbiByIDogaURCVHJhbnNhY3Rpb24gdCA9IHIjIy50cmFuc2FjdGlvblxuXG5sZXQgY3JlYXRlX2RiX29wdGlvbnMge2tleV9wYXRoOyBhdXRvX2luY3JlbWVudH0gOiBjcmVhdGVfZGJfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gIHZhbCBrZXlQYXRoID0gQU9wdC5hb3B0IHN0cmluZyBrZXlfcGF0aFxuICB2YWwgYXV0b0luY3JlbWVudCA9IEFPcHQuYW9wdCBib29sIGF1dG9faW5jcmVtZW50XG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lID1cbiAgVW5zYWZlLmNvZXJjZSBAQFxuICBkYiMjY3JlYXRlT2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKSAoQU9wdC5hb3B0IGNyZWF0ZV9kYl9vcHRpb25zIG9wdGlvbnMpXG5cbmxldCBnZXRfc3RvcmUgP21vZGUgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA6IChfLCBfKSBpREJPYmplY3RTdG9yZSB0ID1cbiAgbGV0IHRyID0gZGIjI3RyYW5zYWN0aW9uIChhcnJheSBbfCBzdHJpbmcgbmFtZSB8XSkgKEFPcHQuYW9wdCBzdHJfb2ZfbW9kZSBtb2RlKSBpblxuICBVbnNhZmUuY29lcmNlIEBAIHRyIyNvYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpXG5cbm1vZHVsZSBTdG9yZShLIDogVHJfc2lnKShEIDogVHJfc2lnKSA9IHN0cnVjdFxuXG4gIHR5cGUgc3RvcmUgPSAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdFxuICB0eXBlIGtleXMgPSBLIG9mIEsudCB8IEtSIG9mIEsuanMgaURCS2V5UmFuZ2UgdFxuXG4gIGxldCBjcmVhdGUgP29wdGlvbnMgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBjcmVhdGVfc3RvcmUgP29wdGlvbnMgZGIgbmFtZVxuXG4gIGxldCBzdG9yZSA/bW9kZSBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGdldF9zdG9yZSA/bW9kZSBkYiBuYW1lXG5cbiAgbGV0IGFkZCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciBLLm9mX2pzIEBAIGxhenkgKHN0IyNhZGQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHB1dCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcCA/Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNwdXQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHJhbmdlID9vbG93ZXIgP291cHBlciA/bG93ZXIgP3VwcGVyICgpID1cbiAgICBsZXQgaURCS2V5UmFuZ2UgOiBLLmpzIGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiIGluXG4gICAgbWF0Y2ggbG93ZXIsIHVwcGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGxvd2VyLCBOb25lIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2xvd2VyQm91bmQgKEsudG9fanMgbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpKVxuICAgIHwgTm9uZSwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyN1cHBlckJvdW5kIChLLnRvX2pzIHVwcGVyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcbiAgICB8IFNvbWUgbG93ZXIsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjYm91bmRcbiAgICAgICAgICAgIChLLnRvX2pzIGxvd2VyKSAoSy50b19qcyB1cHBlcilcbiAgICAgICAgICAgIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuXG4gIGxldCBjb3VudCA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKGNhbGxiYWNrIDogaW50IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IEFPcHQudW5kZWZpbmVkKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IChBT3B0LmRlZiAoSy50b19qcyBrKSkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50X3JhbmdlIChBT3B0LmRlZiByKSlcblxuICBsZXQgZ2V0ID9lcnJvciAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEQub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXQgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldF9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbCA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbF9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZ2V0X2tleSA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChLLm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXlfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGxfa2V5cyA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5c19yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZGVsZXRlID9jYWxsYmFjayA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpID0gZnVuY3Rpb25cbiAgICB8IEsga2V5IC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlIChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZV9yYW5nZSByYW5nZSlcblxuICBsZXQgaXRlciA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrIChELm9mX2pzIGMjIy52YWx1ZSk7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGQgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAoRC5vZl9qcyBjIyMudmFsdWUpICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGl0ZXJfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGs7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGRfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgY2xlYXIgP2Vycm9yID9jYWxsYmFjayAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgKGZ1biBfIC0+ICgpKSBAQCBsYXp5IHN0IyNjbGVhclxuXG4gIGxldCBjcmVhdGVfaW5kZXhfb3B0aW9ucyB7dW5pcXVlOyBtdWx0aV9lbnRyeTsgbG9jYWxlfSA6IGNyZWF0ZV9pbmRleF9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgICB2YWwgdW5pcXVlID0gQU9wdC5hb3B0IGJvb2wgdW5pcXVlXG4gICAgdmFsIG11bHRpRW50cnkgPSBBT3B0LmFvcHQgYm9vbCBtdWx0aV9lbnRyeVxuICAgIHZhbCBsb2NhbGUgPSBBT3B0LmFvcHQgYm9vbCBsb2NhbGVcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9pbmRleCA/b3B0aW9ucyAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSBrZXlfcGF0aCA9XG4gICAgbGV0IG9wdGlvbnMgPSBBT3B0LmFvcHQgY3JlYXRlX2luZGV4X29wdGlvbnMgb3B0aW9ucyBpblxuICAgIHN0IyNjcmVhdGVJbmRleCAoc3RyaW5nIG5hbWUpIChzdHJpbmcga2V5X3BhdGgpIG9wdGlvbnNcblxuICBsZXQgZGVsZXRlX2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBpZ25vcmUgQEAgc3QjI2RlbGV0ZUluZGV4IChzdHJpbmcgbmFtZSlcblxuICBsZXQgZ2V0X2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBzdCMjaW5kZXggKHN0cmluZyBuYW1lKVxuXG5lbmRcblxubW9kdWxlIE5vVHIoUyA6IHNpZyB0eXBlIHQgZW5kKSA6IFRyX3NpZyB3aXRoIHR5cGUgdCA9IFMudCBhbmQgdHlwZSBqcyA9IFMudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTLnRcbiAgdHlwZSBqcyA9IFMudFxuICBsZXQgdG9fanMgeCA9IHhcbiAgbGV0IG9mX2pzIHggPSB4XG5lbmRcblxubW9kdWxlIEludFRyIDogKFRyX3NpZyB3aXRoIHR5cGUganMgPSBpbnQgYW5kIHR5cGUgdCA9IGludCkgPSBOb1RyKHN0cnVjdCB0eXBlIHQgPSBpbnQgZW5kKVxuXG5tb2R1bGUgU3RyaW5nVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0ganNfc3RyaW5nIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0ganNfc3RyaW5nIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gc3RyaW5nIHhcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBudW1iZXIgdCBhbmQgdHlwZSB0ID0gZmxvYXQgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IG51bWJlciB0XG4gIHR5cGUgdCA9IGZsb2F0XG4gIGxldCB0b19qcyB4ID0gbnVtYmVyX29mX2Zsb2F0IHhcbiAgbGV0IG9mX2pzIHggPSBmbG9hdF9vZl9udW1iZXIgeFxuZW5kXG5cbm1vZHVsZSBEYXRlVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gZGF0ZSB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGRhdGUgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBuZXclanMgZGF0ZV9mcm9tVGltZVZhbHVlIChkYXRlIyNwYXJzZSAoc3RyaW5nIHgpKVxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4IyN0b0xvY2FsZVN0cmluZ1xuZW5kXG4iLCJtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Jcbm1vZHVsZSBTZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG50eXBlICdhIHRlc3RfcHJlZFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiAoJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfZXFcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9yZXN1bHRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiBleHBlY3Q6J2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG5leGNlcHRpb24gRSBvZiBzdHJpbmcgKiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZyBib2R5ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0YWdcbiAgICB8IFNvbWUgcyAtPiBzIF4gXCI6IFwiIF4gdGFnXG4gIGluXG4gIGxldCBzZXhwID1cbiAgICBTZXhwLkxpc3QgKFxuICAgICAgYm9keVxuICAgICAgQCBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIkxvY1wiOyBTZXhwLkF0b20gcG9zIF0gXVxuICAgICAgQCBiZWdpbiBtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IF8gLT4gWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJTdGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IFslc2V4cF9vZjogU291cmNlX2NvZGVfcG9zaXRpb24udCBsaXN0XSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdIF1cbiAgICAgIGVuZFxuICAgIClcbiAgaW5cbiAgKCogSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHdlIHJldHVybiBleGNlcHRpb25zLCByYXRoZXIgdGhhbiBkaXJlY3RseSByYWlzaW5nLCBhbmRcbiAgICAgaW5zdGVhZCByYWlzZSBhdCB0aGUgbGF0ZXN0IG1vbWVudCBwb3NzaWJsZSwgc28gYmFja3RyYWNlIGRvbid0IGluY2x1ZGUgbm9pc2UgZnJvbVxuICAgICB0aGVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdHJ1Y3QgZXhjZXB0aW9ucy4gKilcbiAgRSAobWVzc2FnZSwgc2V4cClcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcInByZWRpY2F0ZSBmYWlsZWRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJWYWx1ZVwiOyBzZXhwaWZpZXIgdF1cbiAgXVxuXG5sZXQgdGVzdF9wcmVkIH5wb3MgfnNleHBpZmllciB+aGVyZSA/bWVzc2FnZSBwcmVkaWNhdGUgdCA9XG4gIGlmIG5vdCAocHJlZGljYXRlIHQpIHRoZW5cbiAgICByYWlzZSAoZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdClcblxubGV0IHJfZGlmZiA6IChmcm9tXzpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB1bml0KSBvcHRpb24gcmVmID0gcmVmICAgTm9uZVxubGV0IHNldF9kaWZmX2Z1bmN0aW9uIGYgPSByX2RpZmYgOj0gZlxuXG5sZXQgW0Bjb2xkXSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgZ290ID0gc2V4cGlmaWVyIGdvdCBpblxuICBsZXQgZXhwZWN0ID0gc2V4cGlmaWVyIGV4cGVjdCBpblxuICBiZWdpbiBtYXRjaCAhcl9kaWZmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkaWZmIC0+XG4gICAgbGV0IGZyb21fID0gU2V4cC50b19zdHJpbmdfaHVtIGV4cGVjdCBpblxuICAgIGxldCB0b18gICA9IFNleHAudG9fc3RyaW5nX2h1bSBnb3QgaW5cbiAgICBkaWZmIH5mcm9tXyB+dG9fXG4gIGVuZDtcbiAgYEZhaWwgKGV4cGVjdCwgZ290KVxuXG5sZXQgdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbGV0IHBhc3MgPVxuICAgIG1hdGNoIGVxdWFsIHdpdGhcbiAgICB8IE5vbmUgLT4gY29tcGFyYXRvciBnb3QgZXhwZWN0ID0gMFxuICAgIHwgU29tZSBmIC0+IGYgZ290IGV4cGVjdFxuICBpblxuICBpZiBwYXNzXG4gIHRoZW4gYFBhc3NcbiAgZWxzZSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3RcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiY29tcGFyaXNvbiBmYWlsZWRcIiBbXG4gICAgdDE7XG4gICAgU2V4cC5BdG9tIFwidnNcIjtcbiAgICB0MjtcbiAgXVxuXG5sZXQgdGVzdF9lcSB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdDp0MSB+Z290OnQyIHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsICh0MSwgdDIpIC0+IHJhaXNlIChleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIpXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImdvdCB1bmV4cGVjdGVkIHJlc3VsdFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImV4cGVjdGVkXCI7IGV4cGVjdF07XG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJnb3RcIjsgZ290XTtcbiAgXVxuXG5sZXRbQHdhcm5pbmcgXCItMTZcIl0gdGVzdF9yZXN1bHQgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3Qgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKGV4cGVjdCwgZ290KSAtPiByYWlzZSAoZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290KVxuIiwibGV0IHVuaXF1ZV9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG4oKiBVc2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IGxpYm5hbWUgaW4gc3VjaCBhIHdheSB0aGF0IGZvciBmdW5jdG9yIGFwcGxpY2F0aW9ucywgaXQgaXNcbiAgIHRoZSBjYWxsaW5nIGxpYnJhcmllcyBuYW1lIHRoYXQgZ2V0cyByZWdpc3RlcmVkLiAqKVxubW9kdWxlIEN1cnJlbnRfbGlibmFtZSA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiPHVua25vd24+XCJcbiAgbGV0IGxpYm5hbWVfcmVmID0gcmVmIG51bGxcbiAgbGV0IHNldCBzdHIgPSBsaWJuYW1lX3JlZiA6PSBzdHJcbiAgbGV0IHVuc2V0ICgpID0gbGlibmFtZV9yZWYgOj0gbnVsbFxuICBsZXQgZ2V0ICgpID0gIWxpYm5hbWVfcmVmXG5lbmRcblxubW9kdWxlIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrID0gc3RydWN0XG4gIGxldCB0ID0gcmVmIFtdXG4gIGxldCBwdXNoIHMgPSB0IDo9IHMgOjogIXRcbiAgbGV0IHBvcF9leG4gKCkgPSB0IDo9IExpc3QudGwgIXRcblxuICBsZXQgdG9fbmFtZSAoKSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbXMgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIi5cIiAoTGlzdC5yZXYgbXMpKVxuICA7O1xuZW5kXG5cbigqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgb2YgdGhpcyBtb2R1bGUuIEFuIFtFbnRyeS50XSByZXByZXNlbnRzIGEgYmVuY2htYXJrXG4gICBhbG9uZyB3aXRoIHNvbWUgbWV0YWRhdGEgYWJvdXQgaXMgcG9zaXRpb24sIGFyZ3VtZW50cyBldGMuICopXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjID1cbiAgICB7IGFyZ19uYW1lIDogc3RyaW5nXG4gICAgOyBwYXJhbXMgOiAoc3RyaW5nICogJ3BhcmFtKSBsaXN0XG4gICAgOyB0aHVuayA6ICdwYXJhbSAtPiB1bml0IC0+ICdhXG4gICAgfVxuXG4gIHR5cGUgdGVzdF9zcGVjID1cbiAgICB8IFJlZ3VsYXJfdGh1bmsgOiAoWyBgaW5pdCBdIC0+IHVuaXQgLT4gJ2EpIC0+IHRlc3Rfc3BlY1xuICAgIHwgUGFyYW1ldGVyaXNlZF90aHVuayA6ICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgLT4gdGVzdF9zcGVjXG5cbiAgdHlwZSB0ID1cbiAgICB7IHVuaXF1ZV9pZCA6IGludFxuICAgIDsgY29kZSA6IHN0cmluZ1xuICAgIDsgdHlwZV9jb252X3BhdGggOiBzdHJpbmdcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGZpbGVuYW1lIDogc3RyaW5nXG4gICAgOyBsaW5lIDogaW50XG4gICAgOyBzdGFydHBvcyA6IGludFxuICAgIDsgZW5kcG9zIDogaW50XG4gICAgOyB0ZXN0X3NwZWMgOiB0ZXN0X3NwZWNcbiAgICA7IGJlbmNoX21vZHVsZV9uYW1lIDogc3RyaW5nIG9wdGlvblxuICAgIH1cblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmUgdDEudW5pcXVlX2lkIHQyLnVuaXF1ZV9pZFxuXG4gICgqIEV4dHJhY3RzIG1vZHVsZSBuYW1lIGZyb20gW1wiZmlsZW5hbWUubWwuTW9kdWxlXCJdLCB3aGljaCBpcyB0aGUgZm9ybWF0IG9mIFtleHRfbmFtZV1cbiAgICAgYXMgc2V0IGJ5IFt0eXBlY29udl0uICopXG4gIGxldCBnZXRfbW9kdWxlX25hbWVfb3B0IHQgPVxuICAgIGxldCBzdHIgPSB0LnR5cGVfY29udl9wYXRoIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSArIDQgPD0gbGVuXG4gICAgICB0aGVuXG4gICAgICAgIGlmIFN0cmluZy5zdWIgc3RyIGkgNCA9IFwiLm1sLlwiXG4gICAgICAgIHRoZW4gU29tZSAoU3RyaW5nLnN1YiBzdHIgKGkgKyA0KSAobGVuIC0gaSAtIDQpKVxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgd2l0aF90ZXN0X3NwZWMgdCB0ZXN0X3NwZWMgPSB7IHQgd2l0aCB0ZXN0X3NwZWMgfVxuZW5kXG5cbigqIEluc3BlY3Qgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWNpZGUgaWYgYmVuY2htYXJrcyBhcmUgYmVpbmcgcnVuLiBUaGlzIGlzXG4gICBjYWxsZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbcGFfYmVuY2hdIHN5bnRheCB0byBkZWNpZGUgaWYgdGhlIGdsb2JhbCBoYXNodGFibGVcbiAgIHNob3VsZCBiZSBwb3B1bGF0ZWQuICopXG5sZXQgYWRkX2Vudmlyb25tZW50X3ZhciA9XG4gIGxldCB2ID1cbiAgICB0cnkgU3lzLmdldGVudiBcIkJFTkNITUFSS1NfUlVOTkVSXCIgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IFwiXCJcbiAgaW5cbiAgdiA9IFwiVFJVRVwiXG47O1xuXG4oKiBUaGlzIGhhc2h0YWJsZSBjb250YWlucyBhbGwgdGhlIGJlbmNobWFya3MgZnJvbSBhbGwgdGhlIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgYmVlblxuICAgbG9hZGVkLiBBdCB0aGUgdGltZSB0aGUgYmVuY2htYXJrcyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyB3aXRoIFtwcHhfYmVuY2hfbGliXSB3ZVxuICAgZG9uJ3QgeWV0IGtub3cgd2hpY2ggbGlicmFyaWVzIHdpbGwgbmVlZCB0byBiZSBydW4uICAqKVxubGV0IGxpYnNfdG9fZW50cmllcyA6IChzdHJpbmcsIEVudHJ5LnQgbGlzdCkgSGFzaHRibC50ID0gSGFzaHRibC5jcmVhdGUgMTBcblxubGV0IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lID1cbiAgdHJ5IEhhc2h0YmwuZmluZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IFtdXG47O1xuXG5sZXQgbG9va3VwX2xpYiB+bGlibmFtZSA9IExpc3QucmV2IChsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcblxubGV0IGZvcmNlX2Ryb3AgPVxuICAoKiBVc2VmdWwgZm9yIGpzX29mX29jYW1sIHRvIHBlcmZvcm0gZGVhZGNvZGUgZWxpbWluYXRpb24uXG4gICAgIHNlZSBwcHgvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwgW0FjdGlvbi5nZXRdIGZvciBtb3JlIGRldGFpbHMgKilcbiAgdHJ5XG4gICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9CRU5DSFwiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfbW9kZSAoKSA9IGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgYENvbGxlY3RcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaFxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aFxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvc1xuICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcGVjXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgIGxldCBsaWJuYW1lID0gQ3VycmVudF9saWJuYW1lLmdldCAoKSBpblxuICAgIGxldCBlbnRyeSA9XG4gICAgICB7IEVudHJ5LmNvZGVcbiAgICAgIDsgdW5pcXVlX2lkID0gdW5pcXVlX2lkICgpXG4gICAgICA7IHR5cGVfY29udl9wYXRoXG4gICAgICA7IGJlbmNoX21vZHVsZV9uYW1lID0gQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sudG9fbmFtZSAoKVxuICAgICAgOyBuYW1lXG4gICAgICA7IGZpbGVuYW1lXG4gICAgICA7IGxpbmVcbiAgICAgIDsgc3RhcnRwb3NcbiAgICAgIDsgZW5kcG9zXG4gICAgICA7IHRlc3Rfc3BlY1xuICAgICAgfVxuICAgIGluXG4gICAgSGFzaHRibC5hZGQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgKGVudHJ5IDo6IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZTpfXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGg6X1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5saW5lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvczpfXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgKCogUnVubmluZyBmIHJlZ2lzdGVycyB0aGUgYmVuY2htYXJrcyB1c2luZyBCRU5DSCAqKVxuICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnB1c2ggbmFtZTtcbiAgICAodHJ5XG4gICAgICAgZiAoKTtcbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpXG4gICAgIHdpdGhcbiAgICAgfCBleCAtPlxuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKCk7XG4gICAgICAgcmFpc2UgZXgpXG47O1xuIiwidHlwZSB0ID0gc3RyaW5nXG5cbigqIFNoYXJlIHRoZSBkaWdlc3Qgb2YgdGhlIGVtcHR5IHN0cmluZyAqKVxubGV0IGVtcHR5ID0gRGlnZXN0LnN0cmluZyBcIlwiXG5sZXQgbWFrZSBzID1cbiAgaWYgcyA9IGVtcHR5IHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgc1xuXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcblxubGV0IGxlbmd0aCA9IDE2XG5cbmxldCB0b19iaW5hcnkgcyA9IHNcbmxldCBvZl9iaW5hcnlfZXhuIHMgPSBhc3NlcnQgKFN0cmluZy5sZW5ndGggcyA9IGxlbmd0aCk7IG1ha2Ugc1xubGV0IHVuc2FmZV9vZl9iaW5hcnkgPSBtYWtlXG5cbmxldCB0b19oZXggPSBEaWdlc3QudG9faGV4XG5sZXQgb2ZfaGV4X2V4biBzID0gbWFrZSAoRGlnZXN0LmZyb21faGV4IHMpXG5cbmxldCBzdHJpbmcgcyA9IG1ha2UgKERpZ2VzdC5zdHJpbmcgcylcblxubGV0IGJ5dGVzIHMgPSBtYWtlIChEaWdlc3QuYnl0ZXMgcylcblxubGV0IHN1YmJ5dGVzIGJ5dGVzIH5wb3MgfmxlbiA9IG1ha2UgKERpZ2VzdC5zdWJieXRlcyBieXRlcyBwb3MgbGVuKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTG9jYXRpb24gOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFV1aWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubGV0IGV2YWxfZmFpbCBsb2MgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgIVwiJXtMb2NhdGlvbn06ICVzXCIgbG9jIHMpKSBmbXRcbjs7XG5cbmxldCBlcXVhbF9vcHRpb24gZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG47O1xuXG5tb2R1bGUgU29ydGVkX3RhYmxlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgZXhwb3NlIDogJ2EgdCAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7IHNvcnRlZCA6IChzdHJpbmcgKiAnYSkgbGlzdCB9IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHNcbiAgICA6ICBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAtPiBbIGBPayBvZiAoc3RyaW5nICogJ2EpIGxpc3QgfCBgTWlzbWF0Y2ggb2Ygc3RyaW5nIF1cbiAgICA9XG4gICAgZnVuIH5lcSAtPlxuICAgIGxldCByZWMgbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYE9rIChMaXN0LnJldiBhY2MpXG4gICAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPlxuICAgICAgICBpZiBTdHJpbmcuKGxhc3Rfa2V5ID0ga2V5KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgZXEgbGFzdF92YWx1ZSB2YWx1ZSB0aGVuIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSB4cyBlbHNlIGBNaXNtYXRjaCBrZXlcbiAgICAgICAgZWxzZSBsb29wICgoa2V5LCB2YWx1ZSkgOjogYWNjKSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gICAgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT4gYE9rIFtdXG4gICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT4gbG9vcCBbIGtleSwgdmFsdWUgXSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBsb2MgfmVxIHhzID1cbiAgICBsZXQgc29ydGVkID0gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB4cyBpblxuICAgIG1hdGNoIG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHMgfmVxIHNvcnRlZCB3aXRoXG4gICAgfCBgT2sgc29ydGVkIC0+IHsgc29ydGVkIH1cbiAgICB8IGBNaXNtYXRjaCBzIC0+XG4gICAgICBldmFsX2ZhaWwgbG9jIFwiRGlmZmVyZW50IHNoYXBlcyBmb3IgZHVwbGljYXRlZCBwb2x5bW9ycGhpYyBjb25zdHJ1Y3RvcjogYCVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCBleHBvc2UgdCA9IHQuc29ydGVkXG4gIGxldCBtYXAgdCB+ZiA9IHsgc29ydGVkID0gTGlzdC5tYXAgdC5zb3J0ZWQgfmY6KGZ1biAoaywgdikgLT4gaywgZiB2KSB9XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgPSBNZDVfbGliLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgdG9fbWQ1IDogdCAtPiBNZDVfbGliLnRcbiAgdmFsIG9mX21kNSA6IE1kNV9saWIudCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgY29uc3RydWN0b3IgOiBzdHJpbmcgLT4gdCBsaXN0IC0+IHRcbiAgdmFsIGxpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgcGFpciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgdXVpZCA6IFV1aWQudCAtPiB0XG4gIHZhbCBpbnQgOiBpbnQgLT4gdFxuICB2YWwgb3B0aW9uIDogdCBvcHRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTWQ1X2xpYlxuXG4gIGxldCB0b19tZDUgdCA9IHRcbiAgbGV0IG9mX21kNSB0ID0gdFxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBzZXhwX29mX3N0cmluZ1xuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IHN0cmluZ19vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHV1aWQgdSA9IHN0cmluZyAoVXVpZC50b19zdHJpbmcgdSlcbiAgbGV0IGludCB4ID0gc3RyaW5nIChJbnQudG9fc3RyaW5nIHgpXG4gIGxldCBwYWlyIHggeSA9IHN0cmluZyAodG9fYmluYXJ5IHggXiB0b19iaW5hcnkgeSlcbiAgbGV0IGxpc3QgbCA9IHN0cmluZyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKExpc3QubWFwIH5mOnRvX2JpbmFyeSBsKSlcbiAgbGV0IGNvbnN0cnVjdG9yIHMgbCA9IHN0cmluZyAocyBeIHRvX2JpbmFyeSAobGlzdCBsKSlcblxuICBsZXQgb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gY29uc3RydWN0b3IgXCJub25lXCIgW11cbiAgICB8IFNvbWUgeCAtPiBjb25zdHJ1Y3RvciBcInNvbWVcIiBbIHggXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gc3RydWN0XG4gICgqIFsnYSB0XSBpcyBhIG5vbi1yZWN1cnNpdmUgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgMS1sYXllciBvZiBleHByZXNzaW9uLiAgVGhlXG4gICAgIHJlY3Vyc2l2ZSBrbm90IGlzIHRpZWQgYmVsb3cgaW4gW0Nhbm9uaWNhbF9mdWxsLkV4cC50XS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqICdhXG4gICAgfCBCYXNlIG9mIFV1aWQudCAqICdhIGxpc3RcbiAgICB8IFR1cGxlIG9mICdhIGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqICdhIGxpc3QpIGxpc3RcbiAgICAoKiBQb2x5bW9ycGhpYyB2YXJpYW50cyBhcmUgaW5zZW5zaXRpdmUgdG8gdGhlIG9yZGVyIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIGxpc3RlZCAqKVxuICAgIHwgUG9seV92YXJpYW50IG9mICdhIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICgqIExlZnQtaGFuZC1zaWRlIG9mIFtBcHBsaWNhdGlvbl0gaXMgYSBwb3RlbnRpYWxseSByZWN1cnNpdmUgZGVmaW5pdGlvbjogaXRcbiAgICAgICBjYW4gcmVmZXIgdG8gaXRzZWxmIHVzaW5nIFtSZWNfYXBwIChpLCBfKV0gd2hlcmUgW2ldIGlzIHRoZSBkZXB0aCBvZiB0aGlzXG4gICAgICAgYXBwbGljYXRpb24gbm9kZSAoaG93IG1hbnkgYXBwbGljYXRpb24gbm9kZXMgYXJlIGFib3ZlIGl0KS5cbiAgICAgICBJdCBhbHNvIGhhcyBpdHMgb3duIHNjb3BlIG9mIHR5cGUgdmFyaWFibGVzIHNvIGl0IGNhbiBub3QgcmVmZXIgdG8gdHlwZSB2YXJpYWJsZXNcbiAgICAgICBvZiB0aGUgZW5jbG9zaW5nIHNjb3BlLlxuICAgICopXG4gICAgfCBBcHBsaWNhdGlvbiBvZiAnYSAqICdhIGxpc3RcbiAgICB8IFJlY19hcHAgb2YgaW50ICogJ2EgbGlzdFxuICAgIHwgVmFyIG9mIGludFxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBtYXAgeCB+ZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbm5vdGF0ZSAodSwgeCkgLT4gQW5ub3RhdGUgKHUsIGYgeClcbiAgICB8IEJhc2UgKHMsIHhzKSAtPiBCYXNlIChzLCBMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFR1cGxlIHhzIC0+IFR1cGxlIChMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFJlY29yZCBsIC0+IFJlY29yZCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4KSAtPiBzLCBmIHgpKVxuICAgIHwgVmFyaWFudCBsIC0+IFZhcmlhbnQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeHMpIC0+IHMsIExpc3QubWFwIH5mIHhzKSlcbiAgICB8IFBvbHlfdmFyaWFudCB0IC0+IFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLm1hcCB0IH5mOihPcHRpb24ubWFwIH5mKSlcbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBBcHBsaWNhdGlvbiAoZiB4LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgUmVjX2FwcCAodCwgbCkgLT4gUmVjX2FwcCAodCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFZhciB2IC0+IFZhciB2XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIF8gLT4gQXRvbSBcIi4uLlwiKSB0KVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZGlnZXN0IDogc2lnXG4gICgqIERpZ2VzdCB2YXJpb3VzIGV4cHJlc3Npb24gZm9ybXMgKilcblxuICB2YWwgZGlnZXN0X2xheWVyIDogRGlnZXN0LnQgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IC0+IERpZ2VzdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRpZ2VzdF9sYXllciA9IGZ1bmN0aW9uXG4gICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFubm90YXRlICh1LCB4KSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yIFwiYW5ub3RhdGVcIiBbIERpZ2VzdC51dWlkIHU7IHggXVxuICAgIHwgQmFzZSAodSwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYmFzZVwiIFsgRGlnZXN0LnV1aWQgdTsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBUdXBsZSBsIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInR1cGxlXCIgWyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY29yZCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJyZWNvcmRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHQpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIHQpKSBdXG4gICAgfCBWYXJpYW50IGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCBsKSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSAoRGlnZXN0Lmxpc3QgbCkpKVxuICAgICAgICBdXG4gICAgfCBQb2x5X3ZhcmlhbnQgdGFibGUgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInBvbHlfdmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWJsZSkgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgIERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHgpIChEaWdlc3Qub3B0aW9uIHkpKSlcbiAgICAgICAgXVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImFwcGxpY2F0aW9uXCIgWyB4OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY19hcHAgKG4sIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInJlY19hcHBcIiBbIERpZ2VzdC5pbnQgbjsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBWYXIgbiAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ2YXJcIiBbIERpZ2VzdC5pbnQgbiBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFZpc2liaWxpdHkgPSBzdHJ1Y3RcbiAgdHlwZSB2aXNpYmxlID0gVmlzaWJsZVxuICB0eXBlIG9wYXF1ZSA9IE9wYXF1ZVxuXG4gIGxldCBfID0gVmlzaWJsZVxuICBsZXQgXyA9IE9wYXF1ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENhbm9uaWNhbCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9fZGlnZXN0IDogdCAtPiBEaWdlc3QudFxuXG4gIG1vZHVsZSBFeHAxIDogc2lnXG4gICAgdHlwZSBfIHRcblxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyB0XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIGFwcGx5IDogJ2EgdCAtPiAnYSB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIG9wYXF1ZSA6IF8gdCAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICB2YWwgZ2V0X3BvbHlfdmFyaWFudFxuICAgICAgOiAgVmlzaWJpbGl0eS52aXNpYmxlIHRcbiAgICAgIC0+IChWaXNpYmlsaXR5Lm9wYXF1ZSB0IG9wdGlvbiBTb3J0ZWRfdGFibGUudCwgc3RyaW5nKSBSZXN1bHQudFxuICBlbmRcblxuICBtb2R1bGUgRGVmIDogc2lnXG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlIDogc2lnXG4gICAgdmFsIGFubm90YXRlIDogVXVpZC50IC0+IF8gRXhwMS50IC0+IF8gRXhwMS50XG4gICAgdmFsIGJhc2V0eXBlIDogVXVpZC50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdHVwbGUgOiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHBvbHlfdmFyaWFudCA6IExvY2F0aW9uLnQgLT4gKHN0cmluZyAqIF8gRXhwMS50IG9wdGlvbikgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGFwcGx5IDogJ2EgRXhwMS50IC0+ICdhIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGRlZmluZSA6IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnQgLT4gRGVmLnRcbiAgICB2YWwgcmVjb3JkIDogKHN0cmluZyAqIF8gRXhwMS50KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhcmlhbnQgOiAoc3RyaW5nICogXyBFeHAxLnQgbGlzdCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBjcmVhdGUgOiBfIEV4cDEudCAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZGlnZXN0IDogQ2Fub25pY2FsID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbm9uaWNhbCBvZiBEaWdlc3QudFxuXG4gIGxldCB0b19kaWdlc3QgKENhbm9uaWNhbCB4KSA9IHhcblxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIG9wYXF1ZSA9IERpZ2VzdC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgb2Ygb3BhcXVlIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IG9mIChzdHJpbmcgKiBvcGFxdWUpXG4gICAgICB8IE9wYXF1ZSA6IG9wYXF1ZSAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICBsZXQgdG9fZGlnZXN0ICh0eXBlIGEpICh4IDogYSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT3BhcXVlIHggLT4geFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChfLCB4KSAtPiB4XG4gICAgICB8IFBvbHlfdmFyaWFudCB4IC0+IENELmRpZ2VzdF9sYXllciAoUG9seV92YXJpYW50IHgpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCAodHlwZSBhKSAoeCA6IGEgdCkgKHkgOiBhIHQpID1cbiAgICAgIERpZ2VzdC5jb21wYXJlICh0b19kaWdlc3QgeCkgKHRvX2RpZ2VzdCB5KSA9IDBcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB4ID0gT3BhcXVlICh0b19kaWdlc3QgeClcblxuICAgIGxldCBjcmVhdGUgeCA9XG4gICAgICBsZXQgeCA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCB4IGluXG4gICAgICBsZXQgZGVzYyA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudCBsIC0+IFBvbHlfdmFyaWFudCBsXG4gICAgICB8IEJhc2UgXyAtPiBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQW5ub3RhdGUgXyAtPlxuICAgICAgICAoKiBJdCdzIHVuc2FmZSB0byB1c2UgZGVyaXZpbmcgYmluX2lvIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgcG9seW1vcnBoaWMgdmFyaWFudFxuICAgICAgICAgICB0aGF0IGhhcyBhIGN1c3RvbSBiaW5faW8uICBJZiB3ZSBmb3JiaWQgdGhhdCwgd2UgY2FuIGhhcHBpbHkgcmVqZWN0IGhlcmVcbiAgICAgICAgICAgYW55dGhpbmcgdGhhdCdzIGFubm90YXRlZC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFwcGxpY2F0aW9uIF8gLT5cbiAgICAgICAgKCogQXBwbGljYXRpb24gY2FuIHJlYWxseSBiZSBhIHBvbHktdmFyaWFudCB5b3UgY2FuIGluaGVyaXQgZnJvbSEgIEJ1dCBpdCdzIGFcbiAgICAgICAgICAgcmFyZSBzaXR1YXRpb24gdGhhdCBtb3N0bHkgKG9ubHk/KSBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZSBmcm9tIHJlY3Vyc2l2ZVxuICAgICAgICAgICBwb2x5bW9ycGljIHZhcmlhbnRzLCB3aGljaCB3ZSd2ZSBub3Qgc2VlbiBhbnl3aGVyZSB5ZXQuICBTbyB3ZSByZWplY3QgaXQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBSZWNfYXBwIF8gLT5cbiAgICAgICAgKCogWW91IGNhbiBvbmx5IGdldCB0aGUgW1JlY19hcHBdIGNvbnN0cnVjdG9yIGZvciB0eXBlLXJlZmVyZW5jZXMgd2l0aGluIHRoZVxuICAgICAgICAgICBtdXR1YWwgZ3JvdXAgYmVpbmcgZGVmaW5lZC4gUmVmZXJlbmNlcyB3aGljaFxuICAgICAgICAgICBmb2xsb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgZ3JvdXAgd2lsbCBhbHdheXMgYmUgW0FwcGxpY2F0aW9uXXMuXG5cbiAgICAgICAgICAgQW5kIHNpbmNlIG9jYW1sIHJlamVjdHMgcmVmZXJlbmNlcyBpbiBgaW5oZXJpdGFuY2UnIHBvc2l0aW9uIHRvIHR5cGVzIHdpdGhpblxuICAgICAgICAgICB0aGUgY3VycmVudCBncm91cCAoc2VlIGV4YW1wbGUpIHdpdGg6XG5cbiAgICAgICAgICAgRXJyb3I6IFRoZSB0eXBlIGNvbnN0cnVjdG9yIHRcbiAgICAgICAgICAgaXMgbm90IHlldCBjb21wbGV0ZWx5IGRlZmluZWRcblxuICAgICAgICAgICB0aGVuIGl0cyBvayB0byBzYXkgdGhhdCBhIHJlYy1hcHAgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgaW5oZXJpdGVkIGZyb20gYW5kXG4gICAgICAgICAgIHJldHVybiBbTm9uX3BvbHlfdmFyaWFudF0uXG5cbiAgICAgICAgICAgQW5kIHVubGlrZSB0aGUgW0FwcGxpY2F0aW9uXSBjYXNlLCBpdCBzaG91bGQgbmV2ZXIgYmUgcG9zc2libGUgdG8gc2VlXG4gICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgW2Rlc2NdID0gW1JlY19hcHBdLlxuXG4gICAgICAgICAgIEV4YW1wbGU6IFt0eXBlIHQgPSBbYGEgb2YgWyB8IHRdIF1dXG4gICAgICAgICAgIEhlcmUsIFt8IHRdIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgaW5oZXJpdGFuY2UgZnJvbSBhIFJlY19hcHAsIHdoaWNoXG4gICAgICAgICAgIGlzIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICAgKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFZhciBfIHwgVHVwbGUgXyB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+XG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBjcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSBkZWYgbCA9IGNyZWF0ZSAoQXBwbGljYXRpb24gKGRlZiwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdGlkIGwgPSBjcmVhdGUgKFJlY19hcHAgKHRpZCwgbCkpXG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCAoeCA6IFZpc2liaWxpdHkudmlzaWJsZSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgXykgLT4gRXJyb3IgZGVzY1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgbCAtPiBPayAoU29ydGVkX3RhYmxlLm1hcCB+ZjooT3B0aW9uLm1hcCB+ZjooZnVuIHggLT4gT3BhcXVlIHgpKSBsKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5jcmVhdGUgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSBsID0gRXhwMS5jcmVhdGUgKEJhc2UgKHUsIGwpKVxuICAgIGxldCB0dXBsZSBsID0gRXhwMS5jcmVhdGUgKFR1cGxlIGwpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyBsID1cbiAgICAgIEV4cDEuY3JlYXRlIChQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIEV4cDEuZXF1YWwpIGwpKVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBFeHAxLmNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IHggbCA9IEV4cDEuY3JlYXRlIChBcHBsaWNhdGlvbiAoeCwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdCBsID0gRXhwMS5jcmVhdGUgKFJlY19hcHAgKHQsIGwpKVxuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIGwgPSBFeHAxLmNyZWF0ZSAoUmVjb3JkIGwpXG4gICAgbGV0IHZhcmlhbnQgbCA9IEV4cDEuY3JlYXRlIChWYXJpYW50IGwpXG4gICAgbGV0IGNyZWF0ZSBlID0gQ2Fub25pY2FsIChFeHAxLnRvX2RpZ2VzdCBlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2Z1bGwgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDYW5vbmljYWwgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB0b19zdHJpbmdfaHVtIDogdCAtPiBzdHJpbmdcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgciA9IHJlZiAwXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IHUgPSAhciBpblxuICAgIHIgOj0gMSArIHU7XG4gICAgdVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHByZXNzaW9uID0gc3RydWN0XG4gIHR5cGUgJ3QgcG9seV9jb25zdHIgPVxuICAgIFsgYENvbnN0ciBvZiBzdHJpbmcgKiAndCBvcHRpb25cbiAgICB8IGBJbmhlcml0IG9mIExvY2F0aW9uLnQgKiAndFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IChUaWQudCAqIFZpZC50IGxpc3QgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGlkIDogJ2EgdCAtPiBHaWQudFxuICAgIHZhbCBsb29rdXAgOiAnYSB0IC0+IFRpZC50IC0+IFZpZC50IGxpc3QgKiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBnaWQgOiBHaWQudFxuICAgICAgOyBsb2MgOiBMb2NhdGlvbi50XG4gICAgICA7IG1lbWJlcnMgOiAoVGlkLnQgKiAoVmlkLnQgbGlzdCAqICdhKSkgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIGxvYyB0cmlwcyA9XG4gICAgICBsZXQgZ2lkID0gR2lkLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IG1lbWJlcnMgPSBMaXN0Lm1hcCB0cmlwcyB+ZjooZnVuICh4LCB2cywgdCkgLT4geCwgKHZzLCB0KSkgaW5cbiAgICAgIHsgZ2lkOyBsb2M7IG1lbWJlcnMgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgZyA9IGcuZ2lkXG5cbiAgICBsZXQgbG9va3VwIGcgdGlkID1cbiAgICAgIG1hdGNoIExpc3QuQXNzb2MuZmluZCBnLm1lbWJlcnMgfmVxdWFsOlRpZC4oID0gKSB0aWQgd2l0aFxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICBnLmxvY1xuICAgICAgICAgICFcImltcG9zc2libGU6IGxvb2t1cF9ncm91cCwgdW5ib3VuZCB0eXBlLWlkZW50aWZpZXI6ICV7VGlkfVwiXG4gICAgICAgICAgdGlkXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgIHwgQmFzZSBvZiBVdWlkLnQgKiB0IGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgfCBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IFBvbHlfdmFyaWFudCBvZiAoTG9jYXRpb24udCAqIHQgcG9seV9jb25zdHIgbGlzdClcbiAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgIHwgUmVjX2FwcCBvZiBUaWQudCAqIHQgbGlzdFxuICAgIHwgVG9wX2FwcCBvZiB0IEdyb3VwLnQgKiBUaWQudCAqIHQgbGlzdFxuICBbQEBkZXJpdmluZyB2YXJpYW50cywgc2V4cF9vZl1cblxuICB0eXBlIGdyb3VwID0gdCBHcm91cC50XG5cbiAgbGV0IGdyb3VwID0gR3JvdXAuY3JlYXRlXG5cbiAgdHlwZSBwb2x5X3ZhcmlhbnRfcm93ID0gdCBwb2x5X2NvbnN0clxuXG4gIGxldCBjb25zdHIgcyB0ID0gYENvbnN0ciAocywgdClcbiAgbGV0IGluaGVyaXRfIGxvYyB0ID0gYEluaGVyaXQgKGxvYywgdClcbiAgbGV0IHZhciBsb2MgdCA9IFZhciAobG9jLCB0KVxuICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9IFBvbHlfdmFyaWFudCAobG9jLCB4cylcbiAgbGV0IGJhc2V0eXBlID0gYmFzZVxuXG4gICgqIFwiVlJcIiBzdGFuZHMgZm9yIFwidmFyaWFudCBvciByZWNvcmRcIiAqKVxuXG4gIGxldCBpc19jeWNsaWNfMCB+KHZpYV9WUiA6IGJvb2wpIDogZ3JvdXAgLT4gVGlkLnQgLT4gYm9vbCA9XG4gICAgZnVuIGdyb3VwIHRpZCAtPlxuICAgIGxldCBzZXQgPSByZWYgW10gaW5cbiAgICBsZXQgdmlzaXRlZCB0aWQgPSBMaXN0Lm1lbSAhc2V0IHRpZCB+ZXF1YWw6VGlkLmVxdWFsIGluXG4gICAgbGV0IGFkZCB0aWQgPSBzZXQgOj0gdGlkIDo6ICFzZXQgaW5cbiAgICBsZXQgcmVjIHRyYXYgPSBmdW5jdGlvblxuICAgICAgKCogV2UgbG9vayBmb3IgY3ljbGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHN0cnVjdHVyZSBvZiB0eXBlLWV4cHJlc3Npb25zICopXG4gICAgICB8IEFubm90YXRlIChfLCB0KSAtPiB0cmF2IHRcbiAgICAgIHwgQmFzZSAoXywgdHMpIHwgVHVwbGUgdHMgfCBUb3BfYXBwIChfLCBfLCB0cykgLT4gTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICAgICgqIC4uaW5jbHVkaW5nIHBvbHktdmFyaWFudHMgKilcbiAgICAgIHwgUG9seV92YXJpYW50IChfLCBjcykgLT5cbiAgICAgICAgTGlzdC5pdGVyIGNzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgYENvbnN0ciAoXywgTm9uZSkgLT4gKClcbiAgICAgICAgICB8IGBDb25zdHIgKF8sIFNvbWUgdCkgLT4gdHJhdiB0XG4gICAgICAgICAgfCBgSW5oZXJpdCAoX2xvYywgdCkgLT4gdHJhdiB0KVxuICAgICAgKCogLi4gYW5kIHJlY29yZHMgJiAobm9ybWFsKSB2YXJpYW50cyAqKVxuICAgICAgfCBSZWNvcmQgeHMgLT4gaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHQpIC0+IHRyYXYgdCkgZWxzZSAoKVxuICAgICAgfCBWYXJpYW50IHhzIC0+XG4gICAgICAgIGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0cykgLT4gTGlzdC5pdGVyIH5mOnRyYXYgdHMpIGVsc2UgKClcbiAgICAgICgqIFdlIGRvbnQgZm9sbG93IHR5cGUtdmFycyAqKVxuICAgICAgfCBWYXIgXyAtPiAoKVxuICAgICAgKCogdHJhdmVyc2UgKHJlY3Vyc2l2ZSkgdHlwZS1hcHBzIHdoZW4gZmlyc3QgZW5jb3VudGVyZWQgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCB0cykgLT5cbiAgICAgICAgaWYgdmlzaXRlZCB0aWRcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhZGQgdGlkO1xuICAgICAgICAgIHRyYXZfdGlkIHRpZCk7XG4gICAgICAgIExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgYW5kIHRyYXZfdGlkIHRpZCA9XG4gICAgICBsZXQgXywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIHRyYXYgYm9keVxuICAgIGluXG4gICAgdHJhdl90aWQgdGlkO1xuICAgIGxldCByZXMgPSB2aXNpdGVkIHRpZCBpblxuICAgICgqbGV0IF9zcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTGlzdC5tYXAgKCFzZXQpIH5mOihzcHJpbnRmICFcIiV7VGlkfVwiKSkgaW4qKVxuICAgICgqUHJpbnRmLnByaW50ZiAhXCJpc19jeWxpYzogJXtUaWR9IC0tPiAoJXMpICViICAtLSAlcyUhXCIgdGlkIF9zcyByZXMgKEdyb3VwLmxvYyBncm91cCk7KilcbiAgICByZXNcbiAgOztcblxuICBsZXQgaXNfY3ljbGljID0gaXNfY3ljbGljXzAgfnZpYV9WUjp0cnVlXG4gIGxldCBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiA9IGlzX2N5Y2xpY18wIH52aWFfVlI6ZmFsc2VcbmVuZFxuXG5pbmNsdWRlIEV4cHJlc3Npb25cblxubW9kdWxlIEV2YWx1YXRpb24gKENhbm9uaWNhbCA6IENhbm9uaWNhbCkgPSBzdHJ1Y3RcbiAgKCogW1ZlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLXZhcnMgKilcbiAgbW9kdWxlIFZlbnYgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBsb29rdXAgOiB0IC0+IFZpZC50IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvblxuICAgIHZhbCBjcmVhdGUgOiAoVmlkLnQgKiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCkgbGlzdCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IE1hcC5NKFZpZCkudFxuXG4gICAgbGV0IGNyZWF0ZSA9XG4gICAgICBMaXN0LmZvbGRcbiAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFZpZCkpXG4gICAgICAgIH5mOihmdW4gdCAoaywgdikgLT4gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwIHQgayA9IE1hcC5maW5kIHQga1xuICBlbmRcblxuICBtb2R1bGUgQXBwbGljYW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUmVjdXJzaW9uX2xldmVsIG9mIGludFxuICAgICAgfCBEZWZpbml0aW9uIG9mIENhbm9uaWNhbC5EZWYudFxuICBlbmRcblxuICAoKiBbVGVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtZGVmaW5pdGlvbnMgKilcbiAgbW9kdWxlIFRlbnYgOiBzaWdcbiAgICB0eXBlIGtleSA9IEdpZC50ICogVGlkLnRcbiAgICB0eXBlIHRcblxuICAgIHZhbCBmaW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIG9wdGlvblxuICAgIHZhbCBlbXB0eSA6IHRcbiAgICB2YWwgZXh0ZW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gR2lkLnQgKiBUaWQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICB0eXBlIGtleSA9IEtleS50XG4gICAgdHlwZSB0ID0gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIE1hcC5NKEtleSkudFxuXG4gICAgbGV0IGZpbmQgdCBrID0gTWFwLmZpbmQgdCBrXG4gICAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgS2V5KVxuICAgIGxldCBleHRlbmQgdCBrIHYgPSBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHRcbiAgZW5kXG5cbiAgKCogW0RlZmluaW5nLnRdXG4gICAgIE1vbmFkIGZvciBtYW5hZ2luZyB1bi1yb2xsaW5nIGRlcHRoLCBhbmQgbWFpbnRhaW5nIGEgW1RlbnYudF0gKilcbiAgbW9kdWxlIERlZmluaW5nIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCBsb29rX2VudiA6IFRlbnYua2V5IC0+IEFwcGxpY2FuZC50IG9wdGlvbiB0XG4gICAgdmFsIGV4dGVuZF9uZXdfdGlkIDogVGVudi5rZXkgLT4gQ2Fub25pY2FsLkRlZi50IHQgLT4gQXBwbGljYW5kLnQgdFxuICAgIHZhbCBleGVjIDogJ2EgdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBkZXB0aDppbnQgLT4gVGVudi50IC0+ICdhXG5cbiAgICBsZXQgcmV0dXJuIHggfmRlcHRoOl8gX3RlbnYgPSB4XG5cbiAgICBsZXQgYmluZCB0IGYgfmRlcHRoIHRlbnYgPVxuICAgICAgbGV0IHggPSB0IH5kZXB0aCB0ZW52IGluXG4gICAgICAoZiB4KSB+ZGVwdGggdGVudlxuICAgIDs7XG5cbiAgICBsZXQgbG9va19lbnYga2V5IH5kZXB0aDpfIHRlbnYgPVxuICAgICAgbGV0IHJlc3VsdCA9IFRlbnYuZmluZCB0ZW52IGtleSBpblxuICAgICAgT3B0aW9uLm1hcCB+ZjooZnVuIChgUmVjdXJzaW9uX2xldmVsIHgpIC0+IEFwcGxpY2FuZC5SZWN1cnNpb25fbGV2ZWwgeCkgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBleHRlbmRfbmV3X3RpZCBrZXkgZGVmX3QgfmRlcHRoIHRlbnYgPVxuICAgICAgQXBwbGljYW5kLkRlZmluaXRpb25cbiAgICAgICAgKGxldCB2YWx1ZSA9IGBSZWN1cnNpb25fbGV2ZWwgZGVwdGggaW5cbiAgICAgICAgIGxldCB0ZW52ID0gVGVudi5leHRlbmQgdGVudiBrZXkgdmFsdWUgaW5cbiAgICAgICAgIGRlZl90IH5kZXB0aDooZGVwdGggKyAxKSB0ZW52KVxuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB0ID0gdCB+ZGVwdGg6MCBUZW52LmVtcHR5XG4gIGVuZFxuXG4gIHR5cGUgJ2EgZGVmaW5pbmcgPSAnYSBEZWZpbmluZy50XG5cbiAgbGV0ICggPj49ICkgPSBEZWZpbmluZy5iaW5kXG4gIGxldCByZXR1cm4gPSBEZWZpbmluZy5yZXR1cm5cblxuICBsZXQgc2VxdWVuY2VfZGVmaW5pbmcgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiIGRlZmluaW5nKSAtPiAnYiBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4geHMgfmYgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjX3lzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2NfeXMpXG4gICAgICB8IHggOjogeHMgLT4gZiB4ID4+PSBmdW4geSAtPiBsb29wICh5IDo6IGFjY195cykgeHNcbiAgICBpblxuICAgIGxvb3AgW10geHNcbiAgOztcblxuICAoKlxuICAgICBTaGFwZSBldmFsdWF0aW9uLlxuXG4gICAgIFNoYXBlcyBhcmUgZXZhbHVhdGVkIHRvIGNhbm9uaWNhbC1zaGFwZSAoZXhwcmVzc2lvbnMpLCB3aXRoIGFkZGl0aW9uYWwgZGVmcyBjb2xsZWN0ZWRcbiAgICAgaW4gdGhlIFtkZWZpbmluZ10gbW9uYWQsIHdoaWNoIGFsc28gbWFuYWdlcyBnZW5lcmF0aW9uL21hcHBpbmcgdG8gW0Nhbm9uaWNhbC5UaWQudF1cblxuICAgICBUaGVyZSBpcyBkb3dud2FyZHMgY29udGV4dCBvZiBbZ3JvdXBdIGFuZCBbVmVudi50XVxuICAgICBUaGUgKGN1cnJlbnQpIFtncm91cF0gY2hhbmdlcyB3aGVuIHRoZSBjYXNlIGZvciBbVG9wX2FwcF0gY2FsbHMgW2V2YWxfYXBwXS5cblxuICAgICBUaGUgY3VycmVudCBbVmVudi50XSBpcyBhYmFuZG9uZWQgd2hlbiBbZXZhbF9hcHBdIGlzIGNhbGxlZCwgYW5kIHRoZW4gcmUtY3JlYXRlZCBhZnRlclxuICAgICB0aGUgZGVjaXNpb24gaGFzIGJlZW4gbWFkZSB0byBlaXRoZXIgaW5saW5lIHRoZSB0eXBlLWFwcGxpY2F0aW9uLCBvciBtYWtlIGEgcmVmZXJlbmNlXG4gICAgIHRvIGEgdHlwZS1kZWZpbml0aW9uLCB3aGljaCBpcyBjcmVhdGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCAoR2lkLnQgKiBUaWQudCkuXG5cbiAgICAgV2UgbWFrZSBhIHR5cGUtZGVmaW5pdGlvbiBhbHdheXMgZm9yIFJlY29yZHMgYW5kIFZhcmlhbnRzLCBhbmQgaW4gYWRkaXRpb24gZm9yIGFueVxuICAgICBvdGhlciBjeWNsaWMgdHlwZS1kZWZpbml0aW9uLlxuICAqKVxuXG4gIGxldCByZWMgZXZhbCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgUmVjb3JkIGJpbmRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGJpbmRzIH5mOihmdW4gKHMsIHgpIC0+XG4gICAgICAgICAgZXZhbCBncm91cCB2ZW52IHggPj49IGZ1biB5IC0+IHJldHVybiAocywgeSkpXG4gICAgICAgID4+PSBmdW4gYmluZHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnJlY29yZCBiaW5kcylcbiAgICAgIHwgVmFyaWFudCBhbHRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGFsdHMgfmY6KGZ1biAocywgeHMpIC0+XG4gICAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgeHMgPj49IGZ1biB5cyAtPiByZXR1cm4gKHMsIHlzKSlcbiAgICAgICAgPj49IGZ1biBhbHRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS52YXJpYW50IGFsdHMpXG4gICAgICB8IFZhciAobG9jLCB2aWQpIC0+XG4gICAgICAgIChtYXRjaCBWZW52Lmxvb2t1cCB2ZW52IHZpZCB3aXRoXG4gICAgICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgICAgICAgfCBOb25lIC0+IGV2YWxfZmFpbCBsb2MgIVwiRnJlZSB0eXBlIHZhcmlhYmxlOiAnJXtWaWR9XCIgdmlkICgpKVxuICAgICAgfCBBbm5vdGF0ZSAocywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5hbm5vdGF0ZSBzIHYpXG4gICAgICB8IEJhc2UgKHMsIHRzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5iYXNldHlwZSBzIHZzKVxuICAgICAgfCBUdXBsZSB0cyAtPiBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS50dXBsZSB2cylcbiAgICAgIHwgVG9wX2FwcCAoaW5fZ3JvdXAsIHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJnc1xuICAgICAgICA+Pj0gZnVuIGFyZ3MgLT5cbiAgICAgICAgKCogYXJncyBldmFsdWF0ZWQgaW4gY3VycmVudCBncm91cCAqKVxuICAgICAgICBldmFsX2FwcCBpbl9ncm91cCB0aWQgYXJnc1xuICAgICAgKCogZ3JvdXAgY2hhbmdlZCBoZXJlICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJncyA+Pj0gZnVuIGFyZ3MgLT4gZXZhbF9hcHAgZ3JvdXAgdGlkIGFyZ3NcbiAgICAgIHwgUG9seV92YXJpYW50IChsb2MsIGNzKSAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyB+ZjooZXZhbF9wb2x5X2NvbnN0ciBncm91cCB2ZW52KSBjc1xuICAgICAgICA+Pj0gZnVuIHhzcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucG9seV92YXJpYW50IGxvYyAoTGlzdC5jb25jYXQgeHNzKSlcblxuICBhbmQgZXZhbF9saXN0IDogZ3JvdXAgLT4gVmVudi50IC0+IHQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdHMgLT4gc2VxdWVuY2VfZGVmaW5pbmcgdHMgfmY6KGV2YWwgZ3JvdXAgdmVudilcblxuICBhbmQgZXZhbF9wb2x5X2NvbnN0clxuICAgIDogIGdyb3VwIC0+IFZlbnYudCAtPiB0IHBvbHlfY29uc3RyXG4gICAgICAtPiAoc3RyaW5nICogVmlzaWJpbGl0eS5vcGFxdWUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb24pIGxpc3QgZGVmaW5pbmdcbiAgICA9XG4gICAgZnVuIGdyb3VwIHZlbnYgYyAtPlxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8IGBDb25zdHIgKHMsIE5vbmUpIC0+IHJldHVybiBbIHMsIE5vbmUgXVxuICAgICAgfCBgQ29uc3RyIChzLCBTb21lIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gWyBzLCBTb21lIChDYW5vbmljYWwuRXhwMS5vcGFxdWUgdikgXVxuICAgICAgfCBgSW5oZXJpdCAobG9jLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdFxuICAgICAgICA+Pj0gZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIENhbm9uaWNhbC5FeHAxLmdldF9wb2x5X3ZhcmlhbnQgdiB3aXRoXG4gICAgICAgICB8IE9rIHRhYiAtPiByZXR1cm4gKFNvcnRlZF90YWJsZS5leHBvc2UgdGFiKVxuICAgICAgICAgfCBFcnJvciBkZXNjIC0+XG4gICAgICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgIFwiVGhlIHNoYXBlIGZvciBhbiBpbmhlcml0ZWQgdHlwZSBpcyBub3QgZGVzY3JpYmVkIGFzIGEgcG9seW1vcnBoaWMtdmFyaWFudDogJXNcIlxuICAgICAgICAgICAgIGRlc2NcbiAgICAgICAgICAgICAoKSlcblxuICBhbmQgZXZhbF9kZWZpbml0aW9uIDogZ3JvdXAgLT4gVmlkLnQgbGlzdCAtPiB0IC0+IENhbm9uaWNhbC5EZWYudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIGZvcm1hbHMgYm9keSAtPlxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSAoTGlzdC5tYXBpIGZvcm1hbHMgfmY6KGZ1biBpIHggLT4geCwgQ2Fub25pY2FsLkV4cDEudmFyIGkpKSBpblxuICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5kZWZpbmUgdilcblxuICBhbmQgZXZhbF9hcHAgOiBncm91cCAtPiBUaWQudCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB0aWQgYXJncyAtPlxuICAgICAgbGV0IGdpZCA9IEdyb3VwLmlkIGdyb3VwIGluXG4gICAgICBsZXQgZm9ybWFscywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIGxldCByZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICAgIHwgVHVwbGUgXyB8IEFubm90YXRlIF8gfCBCYXNlIF8gfCBQb2x5X3ZhcmlhbnQgXyB8IFZhciBfIHwgUmVjX2FwcCBfIHwgVG9wX2FwcCBfIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgY3ljbGljID0gaXNfY3ljbGljIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IGN5Y2xpY19ub19WUiA9IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSIGdyb3VwIHRpZCBpblxuICAgICAgaWYgKHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCAmJiBjeWNsaWMpIHx8IGN5Y2xpY19ub19WUlxuICAgICAgdGhlblxuICAgICAgICBEZWZpbmluZy5sb29rX2VudiAoZ2lkLCB0aWQpXG4gICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgcmVjdXJzZSAtPiByZXR1cm4gcmVjdXJzZVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRGVmaW5pbmcuZXh0ZW5kX25ld190aWQgKGdpZCwgdGlkKSAoZXZhbF9kZWZpbml0aW9uIGdyb3VwIGZvcm1hbHMgYm9keSkpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IFJlY3Vyc2lvbl9sZXZlbCByIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEucmVjdXJzZSByIGFyZ3MpXG4gICAgICAgIHwgRGVmaW5pdGlvbiBkZWYgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5hcHBseSBkZWYgYXJncylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdmVudiA9XG4gICAgICAgICAgbWF0Y2ggTGlzdC56aXAgZm9ybWFscyBhcmdzIHdpdGhcbiAgICAgICAgICB8IE9rIHggLT4gVmVudi5jcmVhdGUgeFxuICAgICAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IGZhaWx3aXRoIFwiYXBwbHksIGluY29ycmVjdCB0eXBlIGFwcGxpY2F0aW9uIGFyaXR5XCJcbiAgICAgICAgaW5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkpXG4gIDs7XG5cbiAgKCogdG9wIGxldmVsIGVudHJ5IHBvaW50IGZvciBldmFsdWF0aW9uICopXG4gIGxldCBldmFsIDogdCAtPiBDYW5vbmljYWwudCA9XG4gICAgZnVuIHQgLT5cbiAgICAgIGxldCBncm91cCA9IGdyb3VwIChMb2NhdGlvbi5vZl9zdHJpbmcgXCJ0b3AtbGV2ZWxcIikgW10gaW5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgW10gaW5cbiAgICAgIGxldCB2ID0gRGVmaW5pbmcuZXhlYyAoZXZhbCBncm91cCB2ZW52IHQpIGluXG4gICAgICBDYW5vbmljYWwuQ3JlYXRlLmNyZWF0ZSB2XG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbCA9IHN0cnVjdFxuICBpbmNsdWRlIENhbm9uaWNhbF9mdWxsXG5cbiAgbW9kdWxlIEV4cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFdmFsdWF0aW9uIChDYW5vbmljYWxfZnVsbClcbm1vZHVsZSBDYW5vbmljYWxfc2VsZWN0ZWQgPSBDYW5vbmljYWxfZGlnZXN0XG5tb2R1bGUgRXZhbHVhdGlvbl90b19kaWdlc3QgPSBFdmFsdWF0aW9uIChDYW5vbmljYWxfc2VsZWN0ZWQpXG5cbmxldCBldmFsX3RvX2RpZ2VzdCBleHAgPSBDYW5vbmljYWxfc2VsZWN0ZWQudG9fZGlnZXN0IChFdmFsdWF0aW9uX3RvX2RpZ2VzdC5ldmFsIGV4cClcbmxldCBldmFsX3RvX2RpZ2VzdF9zdHJpbmcgZXhwID0gRGlnZXN0LnRvX2hleCAoZXZhbF90b19kaWdlc3QgZXhwKVxuXG5tb2R1bGUgRm9yX3R5cGVyZXAgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIE5vdF9hX3R1cGxlIG9mIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZGVjb25zdHJ1Y3RfdHVwbGVfZXhuIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVHVwbGUgdHMgLT4gdHNcbiAgICB8IF8gLT4gcmFpc2UgKE5vdF9hX3R1cGxlIHQpXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTk9URTpcbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmdMYWJlbHMubWxpLCBydW4gdG9vbHMvc3luY19zdGRsaWJfZG9jcyBhZnRlciBlZGl0aW5nXG4gICBpdCB0byBnZW5lcmF0ZSBzdHJpbmcubWxpLlxuXG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nLm1saSwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkgLS0gZWRpdFxuICAgc3RyaW5nTGFiZWxzLm1saSBpbnN0ZWFkLlxuICopXG5cbigqKiBTdHJpbmdzLlxuXG4gICAgQSBzdHJpbmcgW3NdIG9mIGxlbmd0aCBbbl0gaXMgYW4gaW5kZXhhYmxlIGFuZCBpbW11dGFibGUgc2VxdWVuY2VcbiAgICBvZiBbbl0gYnl0ZXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlc2UgYnl0ZXMgYXJlIHJlZmVycmVkIHRvXG4gICAgYXMgY2hhcmFjdGVycy5cblxuICAgIFRoZSBzZW1hbnRpY3Mgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICAgaW5kaWNlcyBhbmQgcG9zaXRpb25zLiBUaGVzZSBhcmUgZGVwaWN0ZWQgYW5kIGRlc2NyaWJlZFxuICAgIGFzIGZvbGxvd3MuXG5cbnt2XG5wb3NpdGlvbnMgIDAgICAxICAgMiAgIDMgICA0ICAgIG4tMSAgICBuXG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG4gIGluZGljZXMgIHwgMCB8IDEgfCAyIHwgMyB8IC4uLiB8IG4tMSB8XG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG52fVxuICAgIHt1bFxuICAgIHstIEFuIHtlIGluZGV4fSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFxcW1swXTtbbi0xXVxcXS5cbiAgICAgICBJdCByZXByZXNlbnRzIHRoZSBbaV10aCBieXRlIChjaGFyYWN0ZXIpIG9mIFtzXSB3aGljaCBjYW4gYmVcbiAgICAgICBhY2Nlc3NlZCB1c2luZyB0aGUgY29uc3RhbnQgdGltZSBzdHJpbmcgaW5kZXhpbmcgb3BlcmF0b3JcbiAgICAgICBbcy5baV1dLn1cbiAgICB7LSBBIHtlIHBvc2l0aW9ufSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICAgICAgXFxbWzBdO1tuXVxcXS4gSXQgcmVwcmVzZW50cyBlaXRoZXIgdGhlIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2ZcbiAgICAgICB0aGUgc3RyaW5nLCBvciB0aGUgcG9pbnQgYmV0d2VlbiB0d28gaW5kaWNlcywgb3IgdGhlIHBvaW50IGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGUgW2lddGggYnl0ZSBpbmRleCBpcyBiZXR3ZWVuIHBvc2l0aW9uXG4gICAgICAgW2ldIGFuZCBbaSsxXS59fVxuXG4gICAgVHdvIGludGVnZXJzIFtzdGFydF0gYW5kIFtsZW5dIGFyZSBzYWlkIHRvIGRlZmluZSBhIHtlIHZhbGlkXG4gICAgc3Vic3RyaW5nfSBvZiBbc10gaWYgW2xlbiA+PSAwXSBhbmQgW3N0YXJ0XSwgW3N0YXJ0K2xlbl0gYXJlXG4gICAgcG9zaXRpb25zIG9mIFtzXS5cblxuICAgIHtiIFVuaWNvZGUgdGV4dC59IFN0cmluZ3MgYmVpbmcgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBieXRlcywgdGhleVxuICAgIGNhbiBob2xkIGFueSBraW5kIG9mIHRleHR1YWwgZW5jb2RpbmcuIEhvd2V2ZXIgdGhlIHJlY29tbWVuZGVkXG4gICAgZW5jb2RpbmcgZm9yIHN0b3JpbmcgVW5pY29kZSB0ZXh0IGluIE9DYW1sIHN0cmluZ3MgaXMgVVRGLTguIFRoaXNcbiAgICBpcyB0aGUgZW5jb2RpbmcgdXNlZCBieSBVbmljb2RlIGVzY2FwZXMgaW4gc3RyaW5nIGxpdGVyYWxzLiBGb3JcbiAgICBleGFtcGxlIHRoZSBzdHJpbmcgW1wiXFx1ezFGNDJCfVwiXSBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlXG4gICAgVW5pY29kZSBjaGFyYWN0ZXIgVSsxRjQyQi5cblxuICAgIHtiIFBhc3QgbXV0YWJpbGl0eS59IEJlZm9yZSBPQ2FtbCA0LjAyLCBzdHJpbmdzIHVzZWQgdG8gYmUgbW9kaWZpYWJsZSBpblxuICAgIHBsYWNlIGxpa2UgeyFCeXRlcy50fSBtdXRhYmxlIHNlcXVlbmNlcyBvZiBieXRlcy5cbiAgICBPQ2FtbCA0IGhhZCB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc3VwcG9ydCB0aGVcbiAgICB0cmFuc2l0aW9uIHBlcmlvZCBmcm9tIG11dGFibGUgdG8gaW1tdXRhYmxlIHN0cmluZ3MuXG4gICAgVGhvc2Ugb3B0aW9ucyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgYW5kIHN0cmluZ3MgYXJlIG5vdyBhbHdheXNcbiAgICBpbW11dGFibGUuXG5cbiAgICBUaGUgbGFiZWxlZCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgICB7IVN0ZExhYmVsc30gbW9kdWxlLlxuKilcblxuKCoqIHsxOnN0cmluZ3MgU3RyaW5nc30gKilcblxudHlwZSB0ID0gc3RyaW5nXG4oKiogVGhlIHR5cGUgZm9yIHN0cmluZ3MuICopXG5cbnZhbCBtYWtlIDogaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4oKiogW21ha2UgbiBjXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggZWFjaCBpbmRleCBob2xkaW5nIHRoZVxuICAgIGNoYXJhY3RlciBbY10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS4gKilcblxudmFsIGluaXQgOiBpbnQgLT4gKGludCAtPiBjaGFyKSAtPiBzdHJpbmdcbigqKiBbaW5pdCBuIGZdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBpbmRleFxuICAgIFtpXSBob2xkaW5nIHRoZSBjaGFyYWN0ZXIgW2YgaV0gKGNhbGxlZCBpbiBpbmNyZWFzaW5nIGluZGV4IG9yZGVyKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LlxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBvZl9ieXRlcyA6IGJ5dGVzIC0+IHN0cmluZ1xuKCoqIFJldHVybiBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW4gYnl0ZVxuICAgIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWluc19mcm9tIHMgc3RhcnQgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGFmdGVyIHBvc2l0aW9uIFtzdGFydF0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RhcnRdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbcmNvbnRhaW5zX2Zyb20gcyBzdG9wIGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBiZWZvcmUgcG9zaXRpb24gW3N0b3ArMV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RvcCA8IDBdIG9yIFtzdG9wKzFdIGlzIG5vdCBhIHZhbGlkXG4gICAgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgY29udGFpbnMgOiBzdHJpbmcgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zIHMgY10gaXMgeyFTdHJpbmcuY29udGFpbnNfZnJvbX1bIHMgMCBjXS4gKilcblxuKCoqIHsxOmV4dHJhY3QgRXh0cmFjdGluZyBzdWJzdHJpbmdzfSAqKVxuXG52YWwgc3ViIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gc3RyaW5nXG4oKiogW3N1YiBzIHBvcyBsZW5dIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbGVuXSwgY29udGFpbmluZyB0aGVcbiAgICBzdWJzdHJpbmcgb2YgW3NdIHRoYXQgc3RhcnRzIGF0IHBvc2l0aW9uIFtwb3NdIGFuZCBoYXMgbGVuZ3RoXG4gICAgW2xlbl0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbcG9zXSBhbmQgW2xlbl0gZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkXG4gICAgc3Vic3RyaW5nIG9mIFtzXS4gKilcblxudmFsIHNwbGl0X29uX2NoYXIgOiBjaGFyIC0+IHN0cmluZyAtPiBzdHJpbmcgbGlzdFxuKCoqIFtzcGxpdF9vbl9jaGFyIHNlcCBzXSBpcyB0aGUgbGlzdCBvZiBhbGwgKHBvc3NpYmx5IGVtcHR5KVxuICAgIHN1YnN0cmluZ3Mgb2YgW3NdIHRoYXQgYXJlIGRlbGltaXRlZCBieSB0aGUgY2hhcmFjdGVyIFtzZXBdLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0LjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGNoYXIgLT4gJ2EpIC0+ICdhIC0+IHN0cmluZyAtPiAnYVxuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9sZF9yaWdodCA6IChjaGFyIC0+ICdhIC0+ICdhKSAtPiBzdHJpbmcgLT4gJ2EgLT4gJ2FcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9yX2FsbCA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2Zvcl9hbGwgcCBzXSBjaGVja3MgaWYgYWxsIGNoYXJhY3RlcnMgaW4gW3NdIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIGVzY2FwZWQgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2VzY2FwZWQgc10gaXMgW3NdIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGVzY2FwZVxuICAgIHNlcXVlbmNlcywgZm9sbG93aW5nIHRoZSBsZXhpY2FsIGNvbnZlbnRpb25zIG9mIE9DYW1sLlxuXG4gICAgQWxsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMtQVNDSUkgcHJpbnRhYmxlIHJhbmdlIFxcWzB4MjA7MHg3RVxcXSBhcmVcbiAgICBlc2NhcGVkLCBhcyB3ZWxsIGFzIGJhY2tzbGFzaCAoMHgyRikgYW5kIGRvdWJsZS1xdW90ZSAoMHgyMikuXG5cbiAgICBUaGUgZnVuY3Rpb24geyFTY2FuZi51bmVzY2FwZWR9IGlzIGEgbGVmdCBpbnZlcnNlIG9mIFtlc2NhcGVkXSxcbiAgICBpLmUuIFtTY2FuZi51bmVzY2FwZWQgKGVzY2FwZWQgcykgPSBzXSBmb3IgYW55IHN0cmluZyBbc10gKHVubGVzc1xuICAgIFtlc2NhcGVkIHNdIGZhaWxzKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCB1cHBlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VwcGVyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgbG93ZXJjYXNlIGxldHRlcnNcbiAgICB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIHVuY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdW5jYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvIGxvd2VyY2FzZSxcbiAgICB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG4oKiogezE6c2VhcmNoaW5nIFNlYXJjaGluZ30gKilcblxudmFsIGluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG5cbnZhbCBpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCBpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb219WyBzIDAgY10uICopXG5cbnZhbCBpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb21fb3B0fVsgcyAwIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXggcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbX1bIHMgKGxlbmd0aCBzIC0gMSkgY10uICopXG5cbnZhbCByaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb21fb3B0fVsgcyAobGVuZ3RoIHMgLSAxKSBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbigqKiB7MSBTdHJpbmdzIGFuZCBTZXF1ZW5jZXN9ICopXG5cbnZhbCB0b19zZXEgOiB0IC0+IGNoYXIgU2VxLnRcbigqKiBbdG9fc2VxIHNdIGlzIGEgc2VxdWVuY2UgbWFkZSBvZiB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyBpblxuICAgIGluY3JlYXNpbmcgb3JkZXIuIEluIFtcInVuc2FmZS1zdHJpbmdcIl0gbW9kZSwgbW9kaWZpY2F0aW9ucyBvZiB0aGUgc3RyaW5nXG4gICAgZHVyaW5nIGl0ZXJhdGlvbiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgdG9fc2VxaSA6IHQgLT4gKGludCAqIGNoYXIpIFNlcS50XG4oKiogW3RvX3NlcWkgc10gaXMgbGlrZSB7IXRvX3NlcX0gYnV0IGFsc28gdHVwbGVzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIG9mX3NlcSA6IGNoYXIgU2VxLnQgLT4gdFxuKCoqIFtvZl9zZXEgc10gaXMgYSBzdHJpbmcgbWFkZSBvZiB0aGUgc2VxdWVuY2UncyBjaGFyYWN0ZXJzLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxuKCoqIHsxOnV0ZiBVVEYgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb25zfVxuXG4gICAgQHNpbmNlIDQuMTQgKilcblxuKCoqIHsyOnV0Zl84IFVURi04fSAqKVxuXG52YWwgZ2V0X3V0Zl84X3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzhfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi04IGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW5cbiAgICBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfOCA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfOCBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTggZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmJlIFVURi0xNkJFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmJlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2YmVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkJFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZiZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZiZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2QkUgZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmxlIFVURi0xNkxFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmxlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2bGVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkxFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZsZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZsZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2TEUgZGF0YS4gKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFtibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlbl0gY29waWVzIFtsZW5dIGJ5dGVzXG4gICAgZnJvbSB0aGUgc3RyaW5nIFtzcmNdLCBzdGFydGluZyBhdCBpbmRleCBbc3JjX3Bvc10sXG4gICAgdG8gYnl0ZSBzZXF1ZW5jZSBbZHN0XSwgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIG51bWJlciBbZHN0X3Bvc10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3JjX3Bvc10gYW5kIFtsZW5dIGRvIG5vdFxuICAgIGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtzcmNdLCBvciBpZiBbZHN0X3Bvc10gYW5kIFtsZW5dXG4gICAgZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtkc3RdLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIGdldF9pbnQzMl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBDYW1sLkhhc2h0YmwuYWRkIGh0YmwgayB2O1xuICAgIGNvcHlfaHRibF9saXN0IGh0YmwgcmVzdFxuOztcblxuKCogQmlnYXJyYXlzICopXG5cbnR5cGUgdmVjMzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjNjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gdmVjNjRcbnR5cGUgbWF0MzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0NjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gbWF0NjRcblxuKCogRmxvYXQgYXJyYXlzICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCoqKilcblxubGV0ICggKyApID0gKCArIClcbiIsIigqIE5hdDA6IG5hdHVyYWwgbnVtYmVycyAoaW5jbHVkaW5nIHplcm8pICopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB0aGVuIGZhaWx3aXRoIFwiQmluX3Byb3QuTmF0MC5vZl9pbnQ6IG4gPCAwXCI7XG4gIG5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbiIsIigqIFdyaXRlX21sOiB3cml0aW5nIHZhbHVlcyB0byB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHdyaXRlciA9IGJ1ZiAtPiBwb3M6cG9zIC0+ICdhIC0+IHBvc1xudHlwZSAoJ2EsICdiKSB3cml0ZXIxID0gJ2Egd3JpdGVyIC0+ICdiIHdyaXRlclxudHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyMiA9ICdhIHdyaXRlciAtPiAoJ2IsICdjKSB3cml0ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyMyA9ICdhIHdyaXRlciAtPiAoJ2IsICdjLCAnZCkgd3JpdGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnVmIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MTYgOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgY29kZV9ORUdfSU5UOCA9ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKikgJ1xceGZmJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQzMiA9ICgqJCBDb2RlLmNoYXIgSU5UMzIgKikgJ1xceGZkJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQ2NCA9ICgqJCBDb2RlLmNoYXIgSU5UNjQgKikgJ1xceGZjJyAoKiQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgYXIgPVxuICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zOnBvcyB+bjooQXJyYXkubGVuZ3RoIGFyKSBhclxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQzMiA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQ2NCA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuXG5sZXQgYmluX3dyaXRlX21kNSBidWYgfnBvcyB4ID1cbiAgbGV0IHggPSBNZDVfbGliLnRvX2JpbmFyeSB4IGluXG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCB4ID0gMTYpO1xuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggOCBpblxuICAgIHVuc2FmZV9zZXQ2NCBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDY0IGJ1ZiAocG9zICsgOCkgYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDQgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA4IGluXG4gICAgbGV0IGQgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMTIgaW5cbiAgICB1bnNhZmVfc2V0MzIgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDQpIGI7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgOCkgYztcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyAxMikgZCk7XG4gIG5leHRcbjs7XG4iLCIoKiBSZWFkX21sOiByZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2EgcmVhZGVyID0gYnVmIC0+IHBvc19yZWY6cG9zX3JlZiAtPiAnYVxudHlwZSAoJ2EsICdiKSByZWFkZXIxID0gJ2EgcmVhZGVyIC0+ICdiIHJlYWRlclxudHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyMiA9ICdhIHJlYWRlciAtPiAoJ2IsICdjKSByZWFkZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyMyA9ICdhIHJlYWRlciAtPiAoJ2IsICdjLCAnZCkgcmVhZGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnVmIC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDggOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxubGV0IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IGMgPSB1bnNhZmVfZ2V0OCBidWYgcG9zIGluXG4gIGlmIGMgPj0gMTI4IHRoZW4gYyAtIDI1NiBlbHNlIGNcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfaW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1pbl9pbnRcbmxldCBtYXhfaW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1pbl9pbnRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQzMiBwb3MgeCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSBpZiB4ID49IG1pbl9pbnRfaW50MzIgJiYgeCA8PSBtYXhfaW50X2ludDMyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDY0IHBvcyB4ID1cbiAgaWYgeCA+PSBtaW5faW50X2ludDY0ICYmIHggPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIEludDY0LnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0IHNhZmVfbmF0aXZlaW50X29mX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gX3BvcyB4IC0+IEludDY0LnRvX25hdGl2ZWludCB4XG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmUgYWx3YXlzXSBwb3MgeCAtPlxuICAgICAgaWYgeCA+PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1pbl9pbnRcbiAgICAgICYmIHggPD0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5tYXhfaW50XG4gICAgICB0aGVuIEludDY0LnRvX25hdGl2ZWludCB4XG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9nZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MTYgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MzIgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0NjQgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2IGVsc2UgdW5zYWZlX2dldDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyIGVsc2UgdW5zYWZlX2dldDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0IGVsc2UgdW5zYWZlX2dldDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgeCA9IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgeCA+IDMyNzY3IHRoZW4geCAtIDY1NTM2IGVsc2UgeFxuOztcblxubGV0IGJpbl9yZWFkX3VuaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgdW5zYWZlX2dldCBidWYgcG9zID0gJ1xcMDAwJ1xuICB0aGVuIHBvc19yZWYgOj0gcG9zICsgMVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlVuaXRfY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9ib29sIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBmYWxzZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgdHJ1ZVxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQm9vbF9jb2RlIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDEgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyBpblxuICBpZiBuID49IDAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OZWdfaW50OCAhcG9zX3JlZjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIENhbiBiZSBhYm92ZSBuZXh0IGxpbmUgKG5vIGVycm9ycyBwb3NzaWJsZSB3aXRoIDE2Yml0KS5cbiAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUuICopXG4gIHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDMybGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQzMiAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDY0ICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBJbnQ2NC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgTmF0aXZlaW50Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCBwb3MgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBOYXQwLnVuc2FmZV9vZl9pbnQgKHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MpXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IG1hc2tfMzJiaXQgPSBJbnQ2NC50b19pbnQgMHhmZmZmX2ZmZmZMIGluXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICBsZXQgbiA9IEludDMyLnRvX2ludCAodW5zYWZlX2dldDMybGUgYnVmIHBvcykgaW5cbiAgICAgIGlmIG4gPj0gMFxuICAgICAgdGhlbiBOYXQwLnVuc2FmZV9vZl9pbnQgblxuICAgICAgZWxzZVxuICAgICAgICAoKiBFcmFzZSB0aGUgdXBwZXIgYml0cyB0aGF0IHdlcmUgc2V0IHRvIDEgZHVyaW5nIHRoZSBpbnQzMiAtPiBpbnQgY29udmVyc2lvbi4gKilcbiAgICAgICAgTmF0MC51bnNhZmVfb2ZfaW50IChuIGxhbmQgbWFza18zMmJpdCkpXG4gIGVsc2VcbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnRfaW50MzJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50MzIudG9faW50IG4pIGluXG4gICAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgICAgbilcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiAoXG4gICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDY0LnRvX2ludCBuKSBpblxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBuKVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuU3RyaW5nX3Rvb19sb25nIHN0YXJ0X3BvcztcbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdHIgPSBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgaW5cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9jaGFyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBDaGFyLmNvZGUgY2hcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2Zsb2F0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgSW50NjQuZmxvYXRfb2ZfYml0cyAodW5zYWZlX2dldDY0bGUgYnVmIHBvcylcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50MzIub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDMyX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQ2NC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50NjRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXRpdmVpbnQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSB3aGVuIGFyY2hfc2l4dHlmb3VyIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdGl2ZWludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9yZWYgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIHJlZiBlbFxuOztcblxubGV0IGJpbl9yZWFkX2xhenkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIExhenkuZnJvbV92YWwgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9vcHRpb24gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5vbmVcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgIFNvbWUgZWxcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk9wdGlvbl9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiXG47O1xuXG5sZXQgYmluX3JlYWRfdHJpcGxlIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYyA9IGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGIsIGNcbjs7XG5cbmxldCBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gPVxuICBsZXQgcmVjIGxvb3AgbiBhY2MgPVxuICAgIGlmIG4gPSAwIHRoZW4gYWNjIGVsc2UgbG9vcCAobiAtIDEpIChiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgOjogYWNjKVxuICBpblxuICBsb29wIGxlbiBbXVxuOztcblxubGV0IGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfbGVuIHRoZW4gcmFpc2VfcmVhZF9lcnJvciAoTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9KSAhcG9zX3JlZjtcbiAgbGV0IHJldl9sc3QgPSBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgTGlzdC5yZXYgcmV2X2xzdFxuOztcblxubGV0IGJpbl9yZWFkX2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW46bWF4X2ludCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbjs7XG5cbmxldCBkdW1teV9mbG9hdF9idWYgPSBjcmVhdGVfYnVmIDhcbmxldCAoKSA9IGlnbm9yZSAoV3JpdGUuYmluX3dyaXRlX2Zsb2F0IGR1bW15X2Zsb2F0X2J1ZiB+cG9zOjAgMy4xKVxuXG5sZXQgbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuIH5jcmVhdGUgfmJsaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgcG9zO1xuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgYXJyID0gY3JlYXRlIGxlbiBpblxuICBibGl0IH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBhcnIgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBhcnJcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6RmxvYXQuQXJyYXkuY3JlYXRlXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6QXJyYXkuY3JlYXRlX2Zsb2F0XG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9hcnJheSAodHlwZSBhKSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9lbCA6IGEgcmVhZGVyKSA6IGZsb2F0IHJlYWRlcikgPT0gYmluX3JlYWRfZmxvYXRcbiAgdGhlbiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgOiBmbG9hdCBhcnJheSkgOiBhIGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbfHxdXG4gICAgZWxzZSAoXG4gICAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKVxuICAgICAgZWxzZSBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbWF5YmVfZmxvYXQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgZHVtbXlfZmxvYXRfYnVmIH5wb3NfcmVmOihyZWYgMCkgaW5cbiAgICAgICAgICAgIFNvbWUgZWxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbWF5YmVfZmxvYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zXG4gICAgICAgIHwgU29tZSBlbCAtPlxuICAgICAgICAgIGlmIE9iai50YWcgKE9iai5yZXByIGVsKSA9IE9iai5kb3VibGVfdGFnIHx8IGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpO1xuICAgICAgbGV0IGZpcnN0ID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gZmlyc3QgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyBpIGVsXG4gICAgICBkb25lO1xuICAgICAgcmVzKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgbGVuIGluXG4gIGxldCByZWFkX2t2X3BhaXIgPSBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgaW5cbiAgbGV0IGVscyA9IGJpbl9yZWFkX25fcmV2X2xpc3QgcmVhZF9rdl9wYWlyIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgY29weV9odGJsX2xpc3QgaHRibCBlbHNcbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWMzMiB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWM2NCB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX3ZlYyA9IGJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQzMiBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDY0IG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfbWF0ID0gYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBzdHIgPSBjcmVhdGVfYnVmIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6c3RyIH5kc3RfcG9zOjAgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF92YXJpYW50X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgKCogW25dIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGFscmVhZHkgZW5jb2RlZCwgaS5lLiBbbiA9IDIgKiBrICsgMV0uICopXG4gIGlmIEludDMyLmxvZ2FuZCBuIDFsID0gMGxcbiAgdGhlbiByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfdGFnLCBwb3MpKVxuICBlbHNlIChcbiAgICAoKiBXZSBzaGlmdCBpdCBieSBvbmUgYml0IHRvIHRoZSByaWdodCBzZSB3ZSBnZXQgYmFjayBbMiAqIGsgKyAxXSBpbiB0aGUgZW5kLiAqKVxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0IG4gMSkpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzhiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0OCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzE2Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8zMmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludF82NGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludDY0X2JpdHMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazE2X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDMyYmUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zXG47O1xuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDA3LCAwKV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQ2NHVcIlxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG5bJSVlbmRpZl1cblxubGV0IGJpbl9yZWFkX21kNSBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQ2NCBidWYgKHBvcyArIDgpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyA4IGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDQpIGluXG4gICAgbGV0IGMgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA4KSBpblxuICAgIGxldCBkID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgMTIpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA0IGI7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA4IGM7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAxMiBkKTtcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcylcbjs7XG4iLCJpbmNsdWRlIEJpbl9zaGFwZV9saWIuU3RkLlNoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUgYWxpYXMgKilcbmxldCBiaW5fc2hhcGVfZmxvYXRfYXJyYXkgPSBiaW5fc2hhcGVfYXJyYXkgYmluX3NoYXBlX2Zsb2F0XG5bQEBvY2FtbC5kZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSBcXFxuICAgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXVxuOztcblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuXG5sZXQgYmluX3NpemVfYXJyYXlfbm9fbGVuZ3RoIGJpbl9zaXplX2VsIGFyID1cbiAgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuOjAgfm46KEFycmF5Lmxlbmd0aCBhcilcbjs7XG4iLCIoKiBUcF9jbGFzczogc2l6ZXJzLCB3cml0ZXJzLCBhbmQgcmVhZGVycyBpbiByZWNvcmRzICopXG5cbnR5cGUgJ2Egd3JpdGVyID1cbiAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICA7IHdyaXRlIDogJ2EgV3JpdGUud3JpdGVyXG4gIH1cblxudHlwZSAnYSByZWFkZXIgPVxuICB7IHJlYWQgOiAnYSBSZWFkLnJlYWRlclxuICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gIH1cblxudHlwZSAnYSB0ID1cbiAgeyBzaGFwZSA6IFNoYXBlLnRcbiAgOyB3cml0ZXIgOiAnYSB3cml0ZXJcbiAgOyByZWFkZXIgOiAnYSByZWFkZXJcbiAgfVxuXG50eXBlICdhIHdyaXRlcjAgPSAnYSB3cml0ZXJcbnR5cGUgJ2EgcmVhZGVyMCA9ICdhIHJlYWRlclxudHlwZSAnYSB0MCA9ICdhIHRcblxubW9kdWxlIFMxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAnYiB3cml0ZXIwXG4gIHR5cGUgKCdhLCAnYikgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAnYiByZWFkZXIwXG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhIHQwIC0+ICdiIHQwXG5lbmRcblxubW9kdWxlIFMyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYykgUzEud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYykgUzEucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSB0MCAtPiAoJ2IsICdjKSBTMS50XG5lbmRcblxubW9kdWxlIFMzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICdhIHQwIC0+ICgnYiwgJ2MsICdkKSBTMi50XG5lbmRcblxubGV0IHZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lIF9idWYgfnBvc19yZWYgX3ggPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgIXBvc19yZWZcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcy5TdHIgKilcbigqJCBta19iYXNlIFwidW5pdFwiICopXG5sZXQgYmluX3dyaXRlcl91bml0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV91bml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV91bml0IH1cbmxldCBiaW5fcmVhZGVyX3VuaXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3VuaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiB9XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBTaGFwZS5iaW5fc2hhcGVfdW5pdFxuXG5sZXQgYmluX3VuaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3VuaXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfdW5pdDsgcmVhZGVyID0gYmluX3JlYWRlcl91bml0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiYm9vbFwiICopXG5sZXQgYmluX3dyaXRlcl9ib29sID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ib29sOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ib29sIH1cbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Jvb2w7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiB9XG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBTaGFwZS5iaW5fc2hhcGVfYm9vbFxuXG5sZXQgYmluX2Jvb2wgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Jvb2w7IHdyaXRlciA9IGJpbl93cml0ZXJfYm9vbDsgcmVhZGVyID0gYmluX3JlYWRlcl9ib29sIH1cbjs7XG5cbigqJCBta19iYXNlIFwic3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmcgfVxuXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfc3RyaW5nXG5cbmxldCBiaW5fc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9zdHJpbmc7IHdyaXRlciA9IGJpbl93cml0ZXJfc3RyaW5nOyByZWFkZXIgPSBiaW5fcmVhZGVyX3N0cmluZyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJ5dGVzXCIgKilcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ieXRlczsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXMgfVxuXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYnl0ZXM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFNoYXBlLmJpbl9zaGFwZV9ieXRlc1xuXG5sZXQgYmluX2J5dGVzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ieXRlczsgd3JpdGVyID0gYmluX3dyaXRlcl9ieXRlczsgcmVhZGVyID0gYmluX3JlYWRlcl9ieXRlcyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImNoYXJcIiAqKVxubGV0IGJpbl93cml0ZXJfY2hhciA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfY2hhcjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfY2hhciB9XG5sZXQgYmluX3JlYWRlcl9jaGFyID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9jaGFyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgfVxubGV0IGJpbl9zaGFwZV9jaGFyID0gU2hhcGUuYmluX3NoYXBlX2NoYXJcblxubGV0IGJpbl9jaGFyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9jaGFyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2NoYXI7IHJlYWRlciA9IGJpbl9yZWFkZXJfY2hhciB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50IH1cbmxldCBiaW5fcmVhZGVyX2ludCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiB9XG5sZXQgYmluX3NoYXBlX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5faW50ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludCB9XG5cbigqJCBta19iYXNlIFwiZmxvYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdCB9XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0XG5cbmxldCBiaW5fZmxvYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50MzIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMiB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQzMjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX2ludDMyXG5cbmxldCBiaW5faW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDMyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDMyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDMyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NCB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX2ludDY0XG5cbmxldCBiaW5faW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0IH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0aXZlaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25hdGl2ZWludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0aXZlaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmF0aXZlaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gU2hhcGUuYmluX3NoYXBlX25hdGl2ZWludFxuXG5sZXQgYmluX25hdGl2ZWludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0aXZlaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXRpdmVpbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdGl2ZWludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdDBcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0MCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0MDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0MCB9XG5sZXQgYmluX3JlYWRlcl9uYXQwID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXQwOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXQwXCIgfVxubGV0IGJpbl9zaGFwZV9uYXQwID0gU2hhcGUuYmluX3NoYXBlX25hdDBcblxubGV0IGJpbl9uYXQwID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXQwOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdDA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0MCB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJyZWZcIiAqKVxubGV0IGJpbl93cml0ZXJfcmVmIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9yZWYgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3JlZiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9yZWYgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJyZWZcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3JlZiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9yZWYgeDFcblxubGV0IGJpbl9yZWYgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9yZWYgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9yZWYgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcmVmIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGF6eVwiICopXG5sZXQgYmluX3dyaXRlcl9sYXp5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9sYXp5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9sYXp5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGF6eSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9sYXp5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGF6eSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9sYXp5IHgxXG5cbmxldCBiaW5fbGF6eSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xhenkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9sYXp5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xhenkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJvcHRpb25cIiAqKVxubGV0IGJpbl93cml0ZXJfb3B0aW9uIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9vcHRpb24gYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX29wdGlvbiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9vcHRpb24gYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJvcHRpb25cIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX29wdGlvbiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9vcHRpb24geDFcblxubGV0IGJpbl9vcHRpb24gYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9vcHRpb24gYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9vcHRpb24gYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwicGFpclwiICopXG5sZXQgYmluX3dyaXRlcl9wYWlyIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcGFpciBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9wYWlyIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3BhaXIgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfcGFpciBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInBhaXJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3BhaXIgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfcGFpciB4MSB4MlxuXG5sZXQgYmluX3BhaXIgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9wYWlyIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcGFpciBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcGFpciBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTMgXCJ0cmlwbGVcIiAqKVxubGV0IGJpbl93cml0ZXJfdHJpcGxlIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyIGJpbl93cml0ZXJfZWwzID1cbiAgeyBzaXplID1cbiAgICAgIChmdW4gdiAtPlxuICAgICAgICAgU2l6ZS5iaW5fc2l6ZV90cmlwbGUgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIGJpbl93cml0ZXJfZWwzLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV90cmlwbGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDEud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDIud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDMud3JpdGVcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyIGJpbl9yZWFkZXJfZWwzID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3RyaXBsZVxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMS5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwyLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDMucmVhZFxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidHJpcGxlXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDMgPSBTaGFwZS5iaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzXG5cbmxldCBiaW5fdHJpcGxlIGJpbl9lbDEgYmluX2VsMiBiaW5fZWwzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV90cmlwbGUgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlIGJpbl9lbDMuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlciBiaW5fZWwzLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyIGJpbl9lbDMucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxpc3RcIiAqKVxubGV0IGJpbl93cml0ZXJfbGlzdCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGlzdCBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGlzdCBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xpc3QgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGlzdCBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xpc3QgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGlzdCB4MVxuXG5sZXQgYmluX2xpc3QgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9saXN0IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGlzdCBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9saXN0IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwiYXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfYXJyYXkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2FycmF5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9hcnJheSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2FycmF5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2FycmF5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2FycmF5IHgxID0gU2hhcGUuYmluX3NoYXBlX2FycmF5IHgxXG5cbmxldCBiaW5fYXJyYXkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9hcnJheSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2FycmF5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2FycmF5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwiaGFzaHRibFwiICopXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfaGFzaHRibCB4MSB4MlxuXG5sZXQgYmluX2hhc2h0YmwgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9oYXNodGJsIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcblxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInZlY1wiICopXG5sZXQgYmluX3dyaXRlcl92ZWMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmVjIH1cbmxldCBiaW5fcmVhZGVyX3ZlYyA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiB9XG5sZXQgYmluX3NoYXBlX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fdmVjID0geyBzaGFwZSA9IGJpbl9zaGFwZV92ZWM7IHdyaXRlciA9IGJpbl93cml0ZXJfdmVjOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZlYyB9XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxuXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX21hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9tYXQgfVxubGV0IGJpbl9yZWFkZXJfbWF0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiIH1cbmxldCBiaW5fc2hhcGVfbWF0ID0gU2hhcGUuYmluX3NoYXBlX21hdFxubGV0IGJpbl9tYXQgPSB7IHNoYXBlID0gYmluX3NoYXBlX21hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9tYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfbWF0IH1cblxuKCokIG1rX2Jhc2UgXCJiaWdzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9iaWdzdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2JpZ3N0cmluZyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYmlnc3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfYmlnc3RyaW5nXG5cbmxldCBiaW5fYmlnc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9iaWdzdHJpbmdcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2JpZ3N0cmluZ1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYmlnc3RyaW5nXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXRhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdGFycmF5OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXk7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRhcnJheVxuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0YXJyYXlcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbiAgfVxuOztcblxuKCokKilcblxudHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqJCBta19iYXNlIFwiZmxvYXRfYXJyYXlcIiAqKVxuICBsZXQgYmluX3dyaXRlcl9mbG9hdF9hcnJheSA9XG4gICAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdF9hcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRfYXJyYXkgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX2Zsb2F0X2FycmF5ID1cbiAgICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0X2FycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdF9hcnJheVwiIH1cbiAgOztcblxuICBsZXQgYmluX3NoYXBlX2Zsb2F0X2FycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0X2FycmF5XG5cbiAgbGV0IGJpbl9mbG9hdF9hcnJheSA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdF9hcnJheVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdF9hcnJheVxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdF9hcnJheVxuICAgIH1cbiAgOztcbiAgKCokKilcbmVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuKCokIG1rX2Jhc2UgXCJ2YXJpYW50X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl92YXJpYW50X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmFyaWFudF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZhcmlhbnRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF92YXJpYW50X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmFyaWFudF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gU2hhcGUuYmluX3NoYXBlX3ZhcmlhbnRfaW50XG5cbmxldCBiaW5fdmFyaWFudF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3ZhcmlhbnRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl92YXJpYW50X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmFyaWFudF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfOGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfOGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzhiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF84Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF84Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfOGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzhiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF84Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF84Yml0XG5cbmxldCBiaW5faW50XzhiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF84Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfOGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzhiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMTZiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzE2Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMTZiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8xNmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMTZiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8xNmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzE2Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzE2Yml0XG5cbmxldCBiaW5faW50XzE2Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMTZiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8xNmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzE2Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzMyYml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8zMmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzMyYml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMzJiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzMyYml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMzJiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8zMmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8zMmJpdFxuXG5sZXQgYmluX2ludF8zMmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzMyYml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMzJiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8zMmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF82NGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfNjRiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF82NGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF82NGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfNjRiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfNjRiaXRcblxubGV0IGJpbl9pbnRfNjRiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF82NGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzY0Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfNjRiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NF9iaXRzXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0X2JpdHMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0X2JpdHM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0X2JpdHMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50NjRfYml0cyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjRfYml0czsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRfYml0c1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjRfYml0cyA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NF9iaXRzXG5cbmxldCBiaW5faW50NjRfYml0cyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjRfYml0c1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjRfYml0c1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjRfYml0c1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmsxNl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazE2X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazE2X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazE2X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMTZfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMTZfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludFxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQzMlxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnQzMlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMlxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50NjRcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50NjRcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjRcbiAgfVxuOztcblxuKCokKilcbmxldCBiaW5fd3JpdGVyX2FycmF5X25vX2xlbmd0aCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IChTaXplLmJpbl9zaXplX2FycmF5X25vX2xlbmd0aCBbQHdhcm5pbmcgXCItM1wiXSkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAoV3JpdGUuYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCBbQHdhcm5pbmcgXCItM1wiXSkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubGV0IGNudl93cml0ZXIgY252IHRwX2NsYXNzID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IHRwX2NsYXNzLnNpemUgKGNudiB2KSlcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiB0cF9jbGFzcy53cml0ZSBidWYgfnBvcyAoY252IHYpKVxuICB9XG47O1xuXG5sZXQgY252X3JlYWRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBjbnYgKHRwX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmKSlcbiAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiB2dGFnIC0+IGNudiAodHBfY2xhc3MudnRhZ19yZWFkIGJ1ZiB+cG9zX3JlZiB2dGFnKSlcbiAgfVxuOztcblxubGV0IGNudiBmb3Jfc2hhcGUgZm9yX3dyaXRlciBmb3JfcmVhZGVyIHRwX2NsYXNzID1cbiAgeyBzaGFwZSA9IGZvcl9zaGFwZSB0cF9jbGFzcy5zaGFwZVxuICA7IHdyaXRlciA9IGNudl93cml0ZXIgZm9yX3dyaXRlciB0cF9jbGFzcy53cml0ZXJcbiAgOyByZWFkZXIgPSBjbnZfcmVhZGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MucmVhZGVyXG4gIH1cbjs7XG4iLCIoKiBCaW5hYmxlOiBzaWduYXR1cmVzIGRlZmluaW5nIGdlbmVyYXRlZCBmdW5jdGlvbnMgZm9yIHRoZSBiaW5hcnkgcHJvdG9jb2wuXG4gICBbUywgUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHNhdGlzZmllZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUgYW5kXG4gICBbTWluaW1hbC5TLCBNaW5pbWFsLlMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyB0aGF0IGdlbmVyYXRlZCBjb2RlIHVzZXMuICopXG5cbigqIHRoZSBzdWJzZXQgb2YgUyBjb250YWluaW5nIG9ubHkgZnVuY3Rpb25zLCBzbyB0aGF0IG9uZSBjYW4gcmVjdXJzaXZlbHkgZGVmaW5lIG1vZHVsZXNcbiAgIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSAqKVxubW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcblxuICAoKipcbiAgICAgVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIGltcGxlbWVudGF0aW9uIGlmIFt0XSBleHBvc2VkIHRvIGJlIGEgcG9seW1vcnBoaWMgdmFyaWFudC5cbiAgICAgRGVzcGl0ZSB3aGF0IHRoZSB0eXBlIHJlYWRzLCB0aGlzIGRvZXMgKm5vdCogcHJvZHVjZSBhIGZ1bmN0aW9uIGFmdGVyIHJlYWRpbmc7XG4gICAgIGluc3RlYWQgaXQgdGFrZXMgdGhlIGNvbnN0cnVjdG9yIHRhZyAoaW50KSBiZWZvcmUgcmVhZGluZyBhbmQgcmVhZHMgdGhlIHJlc3Qgb2YgdGhlXG4gICAgIHZhcmlhbnQgW3RdIGFmdGVyd2FyZHMuXG4gICopXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9ucyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICB2YWwgYmluX3dyaXRlcl90IDogdCBUeXBlX2NsYXNzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogdCBUeXBlX2NsYXNzLnJlYWRlclxuICB2YWwgYmluX3QgOiB0IFR5cGVfY2xhc3MudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS50XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy50XG5lbmRcblxubW9kdWxlIE1pbmltYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gICAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgZW5kXG5lbmRcbiIsIigqIFV0aWxzOiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlciBjb252ZW5pZW5jZSAqKVxuXG5vcGVuIENvbW1vblxub3BlbiBTaXplXG5vcGVuIFR5cGVfY2xhc3NcbmluY2x1ZGUgVXRpbHNfaW50ZlxuXG5sZXQgc2l6ZV9oZWFkZXJfbGVuZ3RoID0gOFxubGV0IGJpbl93cml0ZV9zaXplX2hlYWRlciA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXRcbmxldCBiaW5fcmVhZF9zaXplX2hlYWRlciA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0XG5cbmxldCBiaW5fZHVtcCA/KGhlYWRlciA9IGZhbHNlKSB3cml0ZXIgdiA9XG4gIGxldCBidWYsIHBvcywgcG9zX2xlbiA9XG4gICAgbGV0IHZfbGVuID0gd3JpdGVyLnNpemUgdiBpblxuICAgIGlmIGhlYWRlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IHRvdF9sZW4gPSB2X2xlbiArIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdG90X2xlbiBpblxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvczowIHZfbGVuIGluXG4gICAgICBidWYsIHBvcywgcG9zICsgdl9sZW4pXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB2X2xlbiBpblxuICAgICAgYnVmLCAwLCB2X2xlbilcbiAgaW5cbiAgbGV0IHBvcyA9IHdyaXRlci53cml0ZSBidWYgfnBvcyB2IGluXG4gIGlmIHBvcyA9IHBvc19sZW5cbiAgdGhlbiBidWZcbiAgZWxzZSBmYWlsd2l0aCBcIkJpbl9wcm90LlV0aWxzLmJpbl9kdW1wOiBzaXplIGNoYW5nZWQgZHVyaW5nIHdyaXRpbmdcIlxuOztcblxuKCogUmVhZGluZyBmcm9tIHN0cmVhbXMgKilcblxubGV0IGJpbl9yZWFkX3N0cmVhbSA/bWF4X3NpemUgfnJlYWQgcmVhZGVyID1cbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIHJlYWQgYnVmIH5wb3M6MCB+bGVuOnNpemVfaGVhZGVyX2xlbmd0aDtcbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgbGVuID0gYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gIG1hdGNoIG1heF9zaXplIHdpdGhcbiAgfCBTb21lIG1heF9zaXplIHdoZW4gbGVuID4gbWF4X3NpemUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogc2l6ZSBleGNlZWRzIG1heF9zaXplOiAlZCA+ICVkXCJcbiAgICAgICAgIGxlblxuICAgICAgICAgbWF4X3NpemUpXG4gIHwgXyAtPlxuICAgIGxldCBidWYgPSBpZiBsZW4gPiBzaXplX2hlYWRlcl9sZW5ndGggdGhlbiBjcmVhdGVfYnVmIGxlbiBlbHNlIGJ1ZiBpblxuICAgIHJlYWQgYnVmIH5wb3M6MCB+bGVuO1xuICAgIHBvc19yZWYgOj0gMDtcbiAgICBsZXQgcmVzID0gcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgaWYgIXBvc19yZWYgPSBsZW5cbiAgICB0aGVuIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG1zZyA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHByb3RvY29sIGxpZWQgYWJvdXQgbGVuZ3RoIG9mIHZhbHVlOiBleHBlY3RlZCBcXFxuICAgICAgICAgICAlZCwgcmVjZWl2ZWQgJWRcIlxuICAgICAgICAgIGxlblxuICAgICAgICAgICFwb3NfcmVmXG4gICAgICBpblxuICAgICAgZmFpbHdpdGggbXNnKVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbm1vZHVsZSBPZl9taW5pbWFsIChTIDogQmluYWJsZS5NaW5pbWFsLlMpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbmxldCBtYXliZV9hbm5vdGF0ZV9zaGFwZSBtYXliZV91dWlkIHNoYXBlID1cbiAgbWF0Y2ggbWF5YmVfdXVpZCB3aXRoXG4gIHwgTm9uZSAtPiBzaGFwZVxuICB8IFNvbWUgdXVpZCAtPiBTaGFwZS5hbm5vdGF0ZSB1dWlkIHNoYXBlXG47O1xuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE9mX21pbmltYWwgKHN0cnVjdFxuICAgICAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICAgICAgdHlwZSB0ID0gUy50XG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IEIuYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBCLmJpbl9zaXplX3QgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPSBCLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9IFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZilcbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbiA9IFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbilcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbClcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbCB0ID0gQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsIChTLnRvX2JpbmFibGUgdClcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMilcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTIuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMyA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMylcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMy5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhfdXVpZF9zcGVjKSA9IE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZSA9IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUxID0gTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUyID0gTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUzID0gTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRcblxubGV0IHdpdGhfbW9kdWxlX25hbWUgZiB+bW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZSA9XG4gIG1hdGNoIG1vZHVsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IGYgZnVuY3Rpb25fbmFtZVxuICB8IFNvbWUgbW9kdWxlX25hbWUgLT4gUHJpbnRmLmtzcHJpbnRmIGYgXCIlcy4lc1wiIG1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWVcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiA9IHdpdGhfbW9kdWxlX25hbWUgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb25cblxubGV0IHJhaXNlX3JlYWRfdG9vX211Y2ggPVxuICB3aXRoX21vZHVsZV9uYW1lXG4gICAgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiB0cmllZCB0byByZWFkIG1vcmUgZWxlbWVudHMgdGhhbiBhdmFpbGFibGVcIilcbjs7XG5cbmxldCByYWlzZV9yZWFkX25vdF9lbm91Z2ggPVxuICB3aXRoX21vZHVsZV9uYW1lIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogZGlkbid0IHJlYWQgYWxsIGVsZW1lbnRzXCIpXG47O1xuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcIjY1OTIzNzFhLTQ5OTQtMTFlNi05MjNhLTc3NDhlNDE4Mjc2NFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTFfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJhYzhhOWZmNC00OTk0LTExZTYtOWExYi05ZmI0ZTkzM2JkOWRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgX24gLT4gX19iaW5fcmVhZF90X18gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBfbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTJfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYjRlNTRhZDItNDk5NC0xMWU2LWI4ZGYtODdjMjk5N2Y5ZjUyXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTMgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiB0MyA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImYyMTEyZWRhLWU3ZDctMTFlNi1iYjM2LTA3MmU5Y2UxNTlkYlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiB0MyBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9iaW5fcmVhZF9jIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuIiwiKCoqXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIGRlZmF1bHQgY29udmVydGVycyBmb3IgdGhlIHR5cGVzIGRlZmluZWQgaW4gdGhlIE9DYW1sXG4gICBzdGFuZGFyZCBsaWJyYXJ5LlxuKilcblxuaW5jbHVkZSBTaXplXG5cbmxldCBiaW5fdW5pdCA9IFR5cGVfY2xhc3MuYmluX3VuaXRcbmxldCBiaW5fc2hhcGVfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3VuaXRcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdW5pdFxubGV0IGJpbl93cml0ZV91bml0ID0gV3JpdGUuYmluX3dyaXRlX3VuaXRcbmxldCBiaW5fcmVhZGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdW5pdFxubGV0IGJpbl9yZWFkX3VuaXQgPSBSZWFkLmJpbl9yZWFkX3VuaXRcblxubGV0IF9fYmluX3JlYWRfdW5pdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9ib29sXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ib29sXG5sZXQgYmluX3dyaXRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Jvb2xcbmxldCBiaW5fd3JpdGVfYm9vbCA9IFdyaXRlLmJpbl93cml0ZV9ib29sXG5sZXQgYmluX3JlYWRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Jvb2xcbmxldCBiaW5fcmVhZF9ib29sID0gUmVhZC5iaW5fcmVhZF9ib29sXG5cbmxldCBfX2Jpbl9yZWFkX2Jvb2xfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zdHJpbmdcbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfc3RyaW5nXG5sZXQgYmluX3dyaXRlX3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmdcbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmdcbmxldCBiaW5fcmVhZF9zdHJpbmcgPSBSZWFkLmJpbl9yZWFkX3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9zdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fYnl0ZXNcbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ieXRlc1xubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYnl0ZXNcbmxldCBiaW5fd3JpdGVfYnl0ZXMgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXNcbmxldCBiaW5fcmVhZGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2J5dGVzXG5sZXQgYmluX3JlYWRfYnl0ZXMgPSBSZWFkLmJpbl9yZWFkX2J5dGVzXG5cbmxldCBfX2Jpbl9yZWFkX2J5dGVzX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9jaGFyXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9jaGFyXG5sZXQgYmluX3dyaXRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2NoYXJcbmxldCBiaW5fd3JpdGVfY2hhciA9IFdyaXRlLmJpbl93cml0ZV9jaGFyXG5sZXQgYmluX3JlYWRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2NoYXJcbmxldCBiaW5fcmVhZF9jaGFyID0gUmVhZC5iaW5fcmVhZF9jaGFyXG5cbmxldCBfX2Jpbl9yZWFkX2NoYXJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9pbnRcbmxldCBiaW5fc2hhcGVfaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50XG5sZXQgYmluX3dyaXRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50XG5sZXQgYmluX3dyaXRlX2ludCA9IFdyaXRlLmJpbl93cml0ZV9pbnRcbmxldCBiaW5fcmVhZGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnRcbmxldCBiaW5fcmVhZF9pbnQgPSBSZWFkLmJpbl9yZWFkX2ludFxubGV0IF9fYmluX3JlYWRfaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0XG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0XG5sZXQgYmluX3dyaXRlX2Zsb2F0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0XG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdFxubGV0IGJpbl9yZWFkX2Zsb2F0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRhcnJheVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheVxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdGFycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDldIFVzZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBpbnN0ZWFkXCJdXG5cbiAgbGV0IChiaW5fc2hhcGVfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIFxcXG4gICAgICAgICAgb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3dyaXRlcl9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3dyaXRlX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgV3JpdGUuYmluX3dyaXRlX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IFxcXG4gICAgICAgICAgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9ucyBcXFxuICAgICAgICAgIGRpcmVjdGx5XCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgUmVhZC5iaW5fcmVhZF9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gICAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0X2FycmF5XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgKF9fYmluX3JlYWRfZmxvYXRfYXJyYXlfXyBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlIGZsb2F0YXJyYXkgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X19cbiAgOztcbmVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwiaW5jbHVkZSBNZDVfbGliXG5cbmxldCBiaW5fc2hhcGVfdCA9XG4gIFNoYXBlLmJhc2V0eXBlIChTaGFwZS5VdWlkLm9mX3N0cmluZyBcImY2YmRjZGQwLTlmNzUtMTFlNi05YTdlLWQzMDIwNDI4ZWZlZFwiKSBbXVxuOztcblxubGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxubGV0IGJpbl93cml0ZV90ID0gV3JpdGUuYmluX3dyaXRlX21kNVxubGV0IGJpbl9yZWFkX3QgPSBSZWFkLmJpbl9yZWFkX21kNVxuXG5sZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJTaGFwZS5NZDUudFwiICFwb3NfcmVmXG47O1xuIiwib3BlbiBDb21tb25cblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTI1NTdlLTQ5MGEtMTFlNi05OGFjLTRiODk1M2Q1MjVmZVwiKSBbIHQgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGEgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBiaW5fc2l6ZV9hIGFcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgYSA9XG4gICAgbGV0IHN0YXJ0X2EgPSBwb3MgKyBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICBsZXQgZW5kX2EgPSBiaW5fd3JpdGVfYSBidWYgfnBvczpzdGFydF9hIGEgaW5cbiAgICBsZXQgc2l6ZSA9IGVuZF9hIC0gc3RhcnRfYSBpblxuICAgIGxldCB3cml0dGVuID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBzdGFydF9hKTtcbiAgICBlbmRfYVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgZXhwZWN0ZWRfc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBzdGFydF9hID0gIXBvc19yZWYgaW5cbiAgICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGVuZF9hID0gIXBvc19yZWYgaW5cbiAgICBpZiBlbmRfYSAtIHN0YXJ0X2EgPD4gZXhwZWN0ZWRfc2l6ZVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICBcIkJpbl9wcm90LkJsb2IuYmluX3JlYWRfdDogc2l6ZSAoJWQpIDw+IGV4cGVjdGVkICglZClcIlxuICAgICAgICAgICAoZW5kX2EgLSBzdGFydF9hKVxuICAgICAgICAgICBleHBlY3RlZF9zaXplKTtcbiAgICBhXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi50XCIgIXBvc19yZWZcbiAgOztcbmVuZFxuXG50eXBlICdhIGlkID0gJ2FcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gVFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSB0ID0gdFxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0XG4gIGVuZClcblxubW9kdWxlIE9wYXF1ZSA9IHN0cnVjdFxuICAoKiBbQmlnc3RyaW5nXSBhbmQgW1N0cmluZ10gc2hhcmUgW2Jpbl9zaGFwZV90XSBiZWNhdXNlIHRoZXkgaGF2ZSBleGFjdGx5IHRoZSBzYW1lXG4gICAgIHNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCB0aGV5IGRlbm90ZSB0aGUgc2FtZSB2YWx1ZXMuXG5cbiAgICAgSW4gZmFjdCBhbG1vc3QgY2VydGFpbmx5IFtCbG9iLnRdIGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiaW5fc2hhcGVfdCBhcyB3ZWxsLiAqKVxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWExZjc2ZS00OTBhLTExZTYtODZhOS01YmVmNTg1ZjI2MDJcIikgW10pXG4gIDs7XG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgICgqIFtidWZdIGlzIHRoZSBiaW4taW8gZGF0YSBleGNsdWRpbmcgdGhlIHNpemUgaGVhZGVyLiBXaGVuIChkZS0pc2VyaWFsaXplZCwgdGhlIHNpemVcbiAgICAgICBoZWFkZXIgaXMgaW5jbHVkZWQuICopXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJ1ZlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJ1Zl9sZW4gdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gYnVmX2xlbiB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3Mgc2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGVfYnVmIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6IXBvc19yZWYgfmRzdDp0IH5kc3RfcG9zOjAgc2l6ZTtcbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IHRvX29wYXF1ZSBibG9iIGJpbl93cml0ZXIgPSBVdGlscy5iaW5fZHVtcCBiaW5fd3JpdGVyIGJsb2JcbiAgICBsZXQgb2Zfb3BhcXVlX2V4biAodCA6IHQpIGJpbl9yZWFkZXIgPSBiaW5fcmVhZGVyLlR5cGVfY2xhc3MucmVhZCB0IH5wb3NfcmVmOihyZWYgMClcblxuICAgICgqIEJpZ3N0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IGJ1ZiAtPiBidWYgLT4gaW50KVxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIFBweF9zZXhwX2NvbnZfbGliLlNleHAuQXRvbSAob2Zfb3BhcXVlX2V4biB0IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBTdHJpbmcubGVuZ3RoIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IH5zcmNfcG9zOjAgYnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICBibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgbGVuID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvczohcG9zX3JlZiB+bGVuIGluXG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBsZW47XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IGxlbmd0aCB0ID0gU3RyaW5nLmxlbmd0aCB0XG5cbiAgICBsZXQgdG9fb3BhcXVlIH5idWYgdiBiaW5fd3JpdGVyX3YgOiB0ID1cbiAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlcl92LlR5cGVfY2xhc3Mud3JpdGUgYnVmIH5wb3MgdiBpblxuICAgICAgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBvZl9vcGFxdWVfZXhuIH5idWYgKHQgOiB0KSBiaW5fcmVhZGVyX3YgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IGJ1ZiB+bGVuO1xuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlcyA9IGJpbl9yZWFkZXJfdi5UeXBlX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICBpZiAhcG9zX3JlZiA8PiBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICBcIk9wYXF1ZSBibG9iIGhhcyAlZCBieXRlcyBidXQgW29mX29wYXF1ZV9leG5dIHJlYWQgJWRcIlxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAhcG9zX3JlZlxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBlcnJvcilcbiAgICAgIGVsc2UgcmVzXG4gICAgOztcblxuICAgICgqIFN0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICAgIGxldCBzZXhwX29mX3QgPSBQcHhfc2V4cF9jb252X2xpYi5Db252LnNleHBfb2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJZ25vcmVkID0gc3RydWN0XG4gICgqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpZ25vcmVkIHZhbHVlIGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIHZhbHVlIGl0IHdhcyBjcmVhdGVkXG4gICAgIGZyb20gKGkuZS4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIGlnbm9yZWQgZnJvbSB0aGUgYnVmZmVyIHdlIHdlcmUgcmVhZGluZ1xuICAgICAtLSB3ZSBleGNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBoZWFkZXIgZnJvbSB3aGljaCB0aGUgc2l6ZSB3YXMgcmVhZCkuICopXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBiaW5fc2l6ZV90IHNpemUgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBzaXplXG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgIHNpemVcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5JZ25vcmVkLnRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IFR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgcHJlX3Rlc3RfaG9vayA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBwcmVfdGVzdF9ob29rID0gaWdub3JlXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3VjY2VzcyB8IEZhaWx1cmUgfCBFcnJvclxuXG4gIGxldCB0b19leGl0X2NvZGUgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiAwXG4gICAgfCBGYWlsdXJlIC0+IDJcbiAgICB8IEVycm9yICAgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgICAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgICAgICAgIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yICAsIF8gfCBfLCBFcnJvciAgIC0+IEVycm9yXG4gICAgfCBGYWlsdXJlLCBfIHwgXywgRmFpbHVyZSAtPiBGYWlsdXJlXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsIHRzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBTdWNjZXNzIHRzXG5lbmRcblxubGV0IHBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPiBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT4gUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcbjs7XG5cbnR5cGUgZGVzY3IgPSBzdHJpbmdcbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG50eXBlICdhIHRlc3RfZnVuY3Rpb25fYXJnc1xuICA9IGNvbmZpZzpjb25maWdcbiAgLT4gZGVzY3I6ZGVzY3IgTGF6eS50XG4gIC0+IHRhZ3M6c3RyaW5nIGxpc3RcbiAgLT4gZmlsZW5hbWU6ZmlsZW5hbWVcbiAgLT4gbGluZV9udW1iZXI6bGluZV9udW1iZXJcbiAgLT4gc3RhcnRfcG9zOnN0YXJ0X3Bvc1xuICAtPiBlbmRfcG9zOmVuZF9wb3NcbiAgLT4gJ2FcblxubW9kdWxlIFRhZ19wcmVkaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJlcXVpcmVkX3RhZ3MgIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBlbmFibGVfZXZlcnl0aGluZyA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbXSB9XG5cbiAgbGV0IGRyb3AgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gdGFnIDo6IHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5lbmRcblxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOlxuICAgICAgWyBgUnVuX3BhcnRpdGlvbiBvZiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgdmFsIGdldCA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gW1xuICAgIHwgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgXVxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5IGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7IHRydWVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuICBsZXQgZ2V0ICgpID1cbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGNvbXBpbGluZyB0byBqYXZhc2NyaXB0LlxuICAgICAgIEpzX29mX29jYW1sIGNhbiBzdGF0aWNhbGx5IGV2YWx1YXRlIFtTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiXVxuICAgICAgIGFuZCBpbmxpbmUgdGhlIHJlc3VsdCAoW2BJZ25vcmVdKSB3aGVuZXZlciBbZ2V0ICgpXSBpcyBjYWxsZWQuXG4gICAgICAgVW5pdCB0ZXN0cyBjYW4gdGhlbiBiZSB0cmVhdGVkIGFzIGRlYWRjb2RlIHNpbmNlIHRoZSBhcmd1bWVudCBbZl0gb2YgdGhlIFt0ZXN0XVxuICAgICAgIGZ1bmN0aW9uIGJlbG93IGlzIG5ldmVyIHVzZWQuICopXG4gICAgaWYgZm9yY2VfZHJvcFxuICAgIHRoZW4gYElnbm9yZVxuICAgIGVsc2UgIWFjdGlvblxuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuICBsZXQgZm91bmRfdGVzdCAoKSA9XG4gICAgaWYgIWN1cnJlbnQgPD4gXCJcIiAmJiBub3QgKEhhc2h0YmwubWVtIGFsbCAhY3VycmVudCkgdGhlblxuICAgICAgSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuICBsZXQgYWxsICgpID1cbiAgICBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmVcbiAgICAgIChIYXNodGJsLmZvbGQgKGZ1biBrICgpIGFjYyAtPiBrIDo6IGFjYykgYWxsIFtdKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNb2R1bGVfY29udGV4dCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgb25lX21vZHVsZSA9XG4gICAgICB7IGRlc2NyIDogc3RyaW5nXG4gICAgICA7IHRhZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgfVxuXG4gICAgdHlwZSB0ID0gb25lX21vZHVsZSBsaXN0XG5cbiAgICBsZXQgZGVzY3IgdCA9IExpc3QubWFwIChmdW4gbSAtPiBtLmRlc2NyKSB0XG4gICAgbGV0IHRhZ3MgdCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCAoZnVuIG0gLT4gbS50YWdzKSB0KVxuICBlbmRcblxuICBsZXQgY3VycmVudCA6IFQudCByZWYgPSByZWYgW11cblxuICBsZXQgd2l0aF8gfmRlc2NyIH50YWdzIGYgPVxuICAgIGxldCBwcmV2ID0gIWN1cnJlbnQgaW5cbiAgICBjdXJyZW50IDo9IHsgVC4gZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICByYWlzZSBlXG5cbiAgbGV0IGN1cnJlbnRfZGVzY3IgKCkgPSBULmRlc2NyICFjdXJyZW50XG4gIGxldCBjdXJyZW50X3RhZ3MgICgpID0gVC50YWdzICAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcblxubGV0IGxvZyA9IHJlZiBOb25lXG5cbmxldCB0aW1lX3NlYyA9IHJlZiAwLlxuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSAgPSByZWYgZmFsc2VcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgTm9uZVxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSByZWYgTm9uZVxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9IHJlZiBmYWxzZVxuXG5sZXQgZGlzcGxheWVkX2Rlc2NyIChsYXp5IGRlc2NyKSBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lIGxpbmUgc3RhcnRfcG9zIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAsIGxpbmUgJWQgJSFcIiAoZnVuIGZpbGUgbGluZSAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSlcbiAgd2l0aCBfIC0+IE5vbmVcblxubGV0ICgpID1cbiAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0XG4gICAgd2hlbiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmcgLT4gYmVnaW5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmVuYWJsZV9ldmVyeXRoaW5nIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3YgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpIChBcmcuYWxpZ24gW1xuICAgICAgICBcIi1saXN0LXRlc3QtbmFtZXNcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBsaXN0X3Rlc3RfbmFtZXMgOj0gdHJ1ZTsgdmVyYm9zZSA6PSB0cnVlKSxcbiAgICAgICAgXCIgRG8gbm90IHJ1biB0ZXN0cyBidXQgc2hvdyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBydW5cIjtcbiAgICAgICAgXCItbGlzdC1wYXJ0aXRpb25zXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpLFxuICAgICAgICBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCI7XG4gICAgICAgIFwiLXBhcnRpdGlvblwiLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKSxcbiAgICAgICAgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIjtcbiAgICAgICAgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCI7XG4gICAgICAgIFwiLXN0b3Atb24tZXJyb3JcIiwgQXJnLlNldCBzdG9wX29uX2Vycm9yLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiO1xuICAgICAgICBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCI7XG4gICAgICAgIFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIjtcbiAgICAgICAgXCItbG9nXCIsIEFyZy5Vbml0IChmdW4gKCkgLT5cbiAgICAgICAgICAodHJ5IFN5cy5yZW1vdmUgXCJpbmxpbmVfdGVzdHMubG9nXCIgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpXG4gICAgICAgICksIFwiIExvZyB0aGUgdGVzdHMgcnVuIGluIGlubGluZV90ZXN0cy5sb2dcIjtcbiAgICAgICAgXCItZHJvcC10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUuZHJvcCAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1yZXF1aXJlLXRhZylcIjtcbiAgICAgICAgXCItcmVxdWlyZS10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgLWRyb3AtdGFnKVwiO1xuICAgICAgICBcIi1tYXRjaGluZ1wiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlciksXG4gICAgICAgIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiO1xuICAgICAgICBcIi1vbmx5LXRlc3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHBhcnNlX2Rlc2NyIHMgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnOicgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleF9zdHJpbmcgPSBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIkFyZ3VtZW50ICVzIGRvZXNuJ3QgZml0IHRoZSBmb3JtYXQgZmlsZW5hbWVbOmxpbmVfbnVtYmVyXVxcbiUhXCIgcztcbiAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcywgTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgdGVzdHMgOj0gKGZpbGVuYW1lLCBpbmRleCwgcmVmIGZhbHNlKSA6OiAhdGVzdHNcbiAgICAgICAgKSwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxuICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9ucyBjYW4gYmUgb25lIG9mIHRoZXNlIGZvcm1zOlxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIjtcbiAgICAgICAgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIjtcbiAgICAgICAgXCItaW4tcGxhY2VcIiwgQXJnLlNldCBpbl9wbGFjZSwgXCIgVXBkYXRlIGV4cGVjdCB0ZXN0cyBpbiBwbGFjZVwiO1xuICAgICAgICBcIi1kaWZmLWNtZFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgICAgXCIgRGlmZiBjb21tYW5kIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZGlmZmluZyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiO1xuICAgICAgICBcIi1hbGxvdy1vdXRwdXQtcGF0dGVybnNcIiwgQXJnLlNldCBhbGxvd19vdXRwdXRfcGF0dGVybnMsXG4gICAgICAgIFwiIEFsbG93IG91dHB1dCBwYXR0ZXJucyBpbiB0ZXN0cyBleHBlY3RhdGlvbnNcIjtcbiAgICAgICAgXCItc291cmNlLXRyZWUtcm9vdFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcyksXG4gICAgICAgIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCJcbiAgICAgIF0pIChmdW4gYW5vbiAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzOiB1bmV4cGVjdGVkIGFub255bW91cyBhcmd1bWVudCAlc1xcbiUhXCIgbmFtZSBhbm9uO1xuICAgICAgICBleGl0IDFcbiAgICAgICkgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0IChcbiAgICAgICAgYFRlc3RfbW9kZVxuICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSAhdGVzdHM7XG4gICAgICAgICAgICAgICAgd2hpY2hfdGFncyA9ICF0YWdfcHJlZGljYXRlO1xuICAgICAgICAgICAgICAgIG5hbWVfZmlsdGVyID0gIW5hbWVfZmlsdGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICBpZiAhbGlzdF9wYXJ0aXRpb25zXG4gICAgICAgICAgICAgIHRoZW4gYExpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb25cbiAgICAgICAgICB9KVxuICAgIGVuZFxuICB8IF8gLT5cbiAgICAoKVxuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2VcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciA9XG4gICgqIGZvciBhcHByb3hpbWF0ZSBjb21wYXRpYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgZXhhY3RseSBlcXVpdmFsZW50XG4gICAgIHRvIHdoYXQgUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUIHVzZWQgdG8gYmUgKilcbiAgXCJURVNUSU5HX0ZSQU1FV09SS1wiXG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+IHRydWUgKCogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwZW9wbGUgc2V0dGluZyB0aGlzIHZhcmlhYmxlIGRpcmVjdGx5ICopXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgIG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyIHdpdGhcbiAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCB0ZXN0aW5nID1cbiAgaWYgYW1fdGVzdF9ydW5uZXJcbiAgdGhlbiBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXJcbiAgZWxzZVxuICAgIChpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gICAgIHRoZW4gYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyXG4gICAgIGVsc2UgYE5vdF90ZXN0aW5nKVxuXG5sZXQgd2FsbF90aW1lX2Nsb2NrX25zICgpID1cbiAgVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKVxuXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID0gbGF6eSAoXG4gIEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSlcbiAgICB3aXRoIGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpICAvLiAxZTk7XG4gIHJlc1xuXG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcblxubGV0IHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkgPVxuICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgIExpc3QubWFwIChmdW4gcyAtPiBcIiAgaW4gVEVTXCIgXiBcIlRfTU9EVUxFIGF0IFwiIF4gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBzIF4gXCJcXG5cIilcbiAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKVxuICApXG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0cyAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCB1c2VkKSAtPlxuICAgIGxldCBwb3NpdGlvbl9zdGFydCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBsZXQgZm91bmQgPVxuICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMCAmJlxuICAgICAgbGV0IGVuZF9vZl9kZWZfZmlsZW5hbWUgPVxuICAgICAgICBTdHJpbmcuc3ViIGRlZl9maWxlbmFtZVxuICAgICAgICAgIHBvc2l0aW9uX3N0YXJ0XG4gICAgICAgICAgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpIGluXG4gICAgICBlbmRfb2ZfZGVmX2ZpbGVuYW1lID0gZmlsZW5hbWVcbiAgICAgICYmIChwb3NpdGlvbl9zdGFydCA9IDAgfHwgZGVmX2ZpbGVuYW1lLltwb3NpdGlvbl9zdGFydCAtIDFdID0gJy8nKVxuICAgICAgJiYgKG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcilcbiAgICBpblxuICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgIGZvdW5kXG4gICkgbFxuXG5sZXQgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIGRlc2NyID1cbiAgbWF0Y2ggbmFtZV9maWx0ZXIgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT5cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHN1YnN0cmluZyAtPiBCYXNlLlN0cmluZy5pc19zdWJzdHJpbmcgfnN1YnN0cmluZyBkZXNjcikgbmFtZV9maWx0ZXJcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIG1lc3NhZ2VcbiAgICApIGRlbGF5ZWRfZXJyb3JzXG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT5cbiAgICBpZiAhdmVyYm9zZSB0aGVuIGRlbGF5ZWRfZXJyb3JzIDo9IHMgOjogIWRlbGF5ZWRfZXJyb3JzXG4gICAgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgIGlmICFzdG9wX29uX2Vycm9yIHRoZW4gYmVnaW5cbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgZXhpdCAyXG4gICAgZW5kXG4gICkgZm10XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgPVxuICBmdW4gKCkgLT4gQy5wcmVfdGVzdF9ob29rICgpOyBmICgpXG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIGJvb2xfb2ZfZiA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbjsgd2hpY2hfdGFnczsgbmFtZV9maWx0ZXIgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgPSBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcykgaW5cbiAgICBsZXQgY29tcGxldGVfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICYmIGJlZ2luIG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgZW5kXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncylcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBiZWdpblxuICAgICAgICAgICAgUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjclxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiIGRlc2NyIHNlcCBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICB8IGBJZ25vcmUgLT4gKClcbiAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgIHwgYExpc3RfcGFydGl0aW9ucyB8IGBSdW5fcGFydGl0aW9uIChTb21lIF8pIC0+IHRydWVcbiAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgaWYgcGFydGl0aW9uID0gXCJcIiAmJiByZXF1aXJlc19wYXJ0aXRpb25cbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcInBweF9pbmxpbmVfdGVzdDogY2Fubm90IHVzZSAtbGlzdC1wYXJ0aXRpb24gb3IgLXBhcnRpdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgYSBwYXJ0aXRpb24gYXQgcHJlcHJvY2Vzc2luZyB0aW1lXCJcbiAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICBlbmRcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+XG4gICAgaWYgbGliID0gc3RhdGljX2xpYiB0aGVuIGR5bmFtaWNfbGliIDo9IE5vbmVcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biBiIC0+IGIpXG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biAoKSAtPiB0cnVlKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9tb2R1bGUgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lOmRlZl9maWxlbmFtZSB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpIHNlcCBleG5fc3RyIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCIgdGhlblxuICAgICAgUHJpbnRmLmVwcmludGYgXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGJ5IGhhbmQsIHlvdSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuJSFcIlxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiWW91IGFyZSBkb2luZyBzb21ldGhpbmcgdW5leHBlY3RlZCB3aXRoIHRoZSB0ZXN0cy4gTm8gdGVzdHMgaGF2ZSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgdGVzdHMuXFxuJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPiBiZWdpblxuICAgICAgYmVnaW4gbWF0Y2ggIWxvZyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2hcbiAgICAgIGVuZDtcbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgbWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICAgfCAwLCAwIC0+IGJlZ2luXG4gICAgICAgICAgaWYgIXNob3dfY291bnRzIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIiAhdGVzdHNfcmFuICF0ZXN0X21vZHVsZXNfcmFuXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGVycm9ycyB3aXRoXG4gICAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogdGhlIGZvbGxvd2luZyAtb25seS10ZXN0IGZsYWdzIG1hdGNoZWQgbm90aGluZzpcIjtcbiAgICAgICAgICAgIExpc3QuaXRlciAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlclxuICAgICAgICAgICAgKSB0ZXN0cztcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdCB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5TdWNjZXNzXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGNvdW50LCBjb3VudF90ZXN0X21vZHVsZXMgLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGQUlMRUQgJWQgLyAlZCB0ZXN0cyVzXFxuJSFcIiBjb3VudCAhdGVzdHNfcmFuXG4gICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDAgdGhlbiBcIlwiIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlXG4gICAgZW5kXG5cbmxldCB1c2VfY29sb3IgPSAhdXNlX2NvbG9yXG5sZXQgaW5fcGxhY2UgID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9ICFhbGxvd19vdXRwdXRfcGF0dGVybnNcblxubGV0IGV2YWx1YXRvcnMgPSByZWYgW3N1bW1hcml6ZV1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5sZXQgZXhpdCAoKSA9XG4gIExpc3QubWFwIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWV2YWx1YXRvcnMpXG4gIHw+IFRlc3RfcmVzdWx0LmNvbWJpbmVfYWxsXG4gIHw+IFRlc3RfcmVzdWx0LnRvX2V4aXRfY29kZVxuICB8PiBleGl0XG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IENhbWwuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IENhbWwuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBDYW1sLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBDYW1sLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gQ2FtbC5zdGRpblxuXG5sZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIENhbWwub3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuOztcblxubGV0IGNsb3NlID0gQ2FtbC5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgcmVhbGx5X2lucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlbilcbmxldCByZWFsbHlfaW5wdXRfZXhuIHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfYnl0ZSB0KVxubGV0IGlucHV0X2NoYXIgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2NoYXIgdClcbmxldCBpbnB1dF9iaW5hcnlfaW50IHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF92YWx1ZSB0KVxubGV0IGlucHV0X2J1ZmZlciB0IGJ1ZiB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZiB0IGxlbilcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBDYW1sLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgQ2FtbC5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmZmVyIHQgY2h1bmtfc2l6ZTtcbiAgICBsb29wICgpXG4gIGluXG4gIHRyeSBsb29wICgpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYnVmZmVyXG47O1xuXG5sZXQgdHJpbSB+Zml4X3dpbl9lb2wgbGluZSA9XG4gIGlmIGZpeF93aW5fZW9sXG4gIHRoZW4gKFxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgKFN0cmluZy5nZXQgbGluZSAobGVuIC0gMSkpICdcXHInXG4gICAgdGhlbiBTdHJpbmcuc3ViIGxpbmUgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgZWxzZSBsaW5lKVxuICBlbHNlIGxpbmVcbjs7XG5cbmxldCBpbnB1dF9saW5lID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbWF0Y2ggbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfbGluZSB0KSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBsaW5lIC0+IFNvbWUgKHRyaW0gfmZpeF93aW5fZW9sIGxpbmUpXG47O1xuXG5sZXQgaW5wdXRfbGluZV9leG4gPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBsZXQgbGluZSA9IENhbWwuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gQ2FtbC5vdXRfY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IENhbWwuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gQ2FtbC5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IENhbWwuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZG91dCA9IENhbWwuc3Rkb3V0XG5sZXQgc3RkZXJyID0gQ2FtbC5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBDYW1sLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcbjs7XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBDYW1sLnNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBmbHVzaCA9IENhbWwuZmx1c2hcbmxldCBjbG9zZSA9IENhbWwuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9fZXJyID0gQ2FtbC5jbG9zZV9vdXRfbm9lcnJcbmxldCBvdXRwdXQgdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLm91dHB1dF9zdWJzdHJpbmcgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdHJpbmcgPSBDYW1sLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBDYW1sLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gQ2FtbC5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gQ2FtbC5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gQ2FtbC5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBDYW1sLkJ1ZmZlci5vdXRwdXRfYnVmZmVyXG5sZXQgb3V0cHV0X3ZhbHVlID0gQ2FtbC5vdXRwdXRfdmFsdWVcbmxldCBuZXdsaW5lIHQgPSBvdXRwdXRfc3RyaW5nIHQgXCJcXG5cIlxuXG5sZXQgb3V0cHV0X2xpbmVzIHQgbGluZXMgPVxuICBMaXN0Lml0ZXIgbGluZXMgfmY6KGZ1biBsaW5lIC0+XG4gICAgb3V0cHV0X3N0cmluZyB0IGxpbmU7XG4gICAgbmV3bGluZSB0KVxuOztcblxubGV0IHByaW50ZiA9IENhbWwuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBDYW1sLlByaW50Zi5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IENhbWwuUHJpbnRmLmZwcmludGZcbmxldCBrZnByaW50ZiA9IENhbWwuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gQ2FtbC5wcmludF9zdHJpbmdcbmxldCBwcmludF9lbmRsaW5lID0gQ2FtbC5wcmludF9lbmRsaW5lXG5sZXQgcHJlcnJfZW5kbGluZSA9IENhbWwucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjooZnVuIGR1cmF0aW9uX3N0cmluZyB7IHJ1bnRpbWUgPSBfOyBkZXNjcmlwdGlvbjsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICAgICAtPlxuICAgICAgICAgICAoIGR1cmF0aW9uX3N0cmluZ1xuICAgICAgICAgICAsIGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgXiBnY19ldmVudHNfc3VmZml4X3N0cmluZyBnY19ldmVudHNcbiAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICh0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbmVzdGVkX3RpbWluZ19ldmVudHMgfmluZGVudDooaW5kZW50ICsgNCkpXG4gICAgICAgICAgICAgICAgICAgIH5mOihmdW4gbGluZSAtPiBcIlxcblwiIF4gbGluZSkpICkpXG4gIHw+IHdpdGhfbGVmdF9jb2x1bW5fcmlnaHRfanVzdGlmaWVkXG4gIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBwcmVmaXggXiBsaW5lKVxuOztcblxubGV0IGZha2VfdGltaW5nX2V2ZW50cyA9XG4gIGxldCBnY19ldmVudHMgaSA6IEdjX2V2ZW50cy50ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSAyID0gMSB0aGVuIDEgZWxzZSAwKVxuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDQgPSAzIHRoZW4gMSBlbHNlIDApXG4gICAgOyBjb21wYWN0aW9ucyA9IChpZiBpICUgOCA9IDcgdGhlbiAxIGVsc2UgMClcbiAgICB9XG4gIGluXG4gIGxhenlcbiAgICAoTGlzdC5pbml0IDEyIH5mOihmdW4gaSA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiRmFrZV9fRGVwZW5kZW5jeV8lZFwiIChpICsgMSlcbiAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChpICsgMSkpXG4gICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgaVxuICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAoaWYgKGkgKyAxKSAlIDQgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIExpc3QuaW5pdCAoaSArIDEpIH5mOihmdW4gaiA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiTGluZSAlZFwiIChqICsgMSlcbiAgICAgICAgICAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChqICsgMSkpXG4gICAgICAgICAgICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgalxuICAgICAgICAgICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPSBbXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbHNlIFtdKVxuICAgICAgIH0pKVxuOztcblxubGV0IHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHMgdGltaW5nX2V2ZW50cyA9XG4gIGxldCBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKSA9XG4gICAgU3RkaW8ucHJpbnRfZW5kbGluZSBcInBweF9tb2R1bGVfdGltZXI6IG92ZXJyaWRpbmcgdGltZSBtZWFzdXJlbWVudHMgZm9yIHRlc3RpbmdcIlxuICBpblxuICBsZXQgdGltaW5nX2V2ZW50cyA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlX2V4biBhbV9yZWNvcmRpbmdfdmFsdWUgd2l0aFxuICAgIHwgXCJGQUtFX01PRFVMRVNcIiAtPlxuICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICBmb3JjZSBmYWtlX3RpbWluZ19ldmVudHNcbiAgICB8IHN0cmluZyAtPlxuICAgICAgKG1hdGNoIER1cmF0aW9uLm9mX3N0cmluZyBzdHJpbmcgd2l0aFxuICAgICAgIHwgb3ZlcnJpZGUgLT5cbiAgICAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgICAgTGlzdC5tYXBpIHRpbWluZ19ldmVudHMgfmY6KGZ1biBpbmRleCAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+XG4gICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgICBMaXN0Lm1hcGlcbiAgICAgICAgICAgICAgIHRpbWluZ19ldmVudC5uZXN0ZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAgICAgICAgfmY6KGZ1biBpbmRleCBuZXN0ZWRfdGltaW5nX2V2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgICAgICAgeyBuZXN0ZWRfdGltaW5nX2V2ZW50IHdpdGggcnVudGltZSB9KVxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHRpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWU7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0pXG4gICAgICAgfCBleGNlcHRpb24gXyAtPiB0aW1pbmdfZXZlbnRzKVxuICBpblxuICB0aW1pbmdfZXZlbnRzIHw+IHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyB+aW5kZW50OjAgfD4gTGlzdC5pdGVyIH5mOlN0ZGlvLnByaW50X2VuZGxpbmVcbjs7XG5cbmxldCAoKSA9XG4gIGlmIGFtX3JlY29yZGluZ1xuICB0aGVuXG4gICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAoTGlzdC5yZXYgbW9kdWxlX3RpbWVyLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyKSlcbjs7XG4iLCJ0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCYXNlLlR5cGVfZXF1YWwudCA9IFQgOiAoJ2EsICdhKSB0XG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBjb252IDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IGEgLT4gYiA9IGZ1biBUIHggLT4geFxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuIiwiKCogdGhpcyBsaWIgc2hvdWxkIG5vdCBkZXBlbmQgb24gY29yZSAqKVxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgbGV0IGNvbXBhcmUgY21wIGEgYiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IDBcbiAgICAgIHwgW10sIF8gLT4gLTFcbiAgICAgIHwgXywgW10gLT4gMVxuICAgICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICAgIGxldCBuID0gY21wIHggeSBpblxuICAgICAgICBpZiBuID0gMCB0aGVuIGxvb3AgeHMgeXMgZWxzZSBuXG4gICAgaW5cbiAgICBsb29wIGEgYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBVaWQgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBuZXh0IDogc3RyaW5nIC0+IHRcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuICB2YWwgbmFtZSA6IHQgLT4gc3RyaW5nXG4gIHZhbCBzdGF0aWMgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSAoYS5jb2RlIDogaW50KSBiLmNvZGVcbiAgbGV0IGVxdWFsIGEgYiA9IChhLmNvZGUgOiBpbnQpID0gYi5jb2RlXG4gIGxldCB1aWQgPSByZWYgMFxuXG4gIGxldCBuZXh0IG5hbWUgPVxuICAgIGxldCBjb2RlID0gIXVpZCBpblxuICAgIGluY3IgdWlkO1xuICAgIHsgY29kZTsgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGhhc2ggYSA9IEhhc2h0YmwuaGFzaCBhLmNvZGVcbiAgbGV0IG5hbWUgYSA9IGEubmFtZVxuICBsZXQgc3RhdGljID0gbmV4dCBcInN0YXRpY1wiXG5lbmRcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdWlkIDogVWlkLnRcbiAgICA7IHBhcmFtcyA6IHQgbGlzdFxuICAgIH1cblxuICBsZXQgcmVjIGNvbXBhcmUgazEgazIgPVxuICAgIGlmIGsxID09IGsyXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY21wID0gVWlkLmNvbXBhcmUgazEudWlkIGsyLnVpZCBpblxuICAgICAgaWYgY21wIDw+IDAgdGhlbiBjbXAgZWxzZSBMaXN0LmNvbXBhcmUgY29tcGFyZSBrMS5wYXJhbXMgazIucGFyYW1zKVxuICA7O1xuXG4gIGxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcbiAgbGV0IGhhc2ggPSAoSGFzaHRibC5oYXNoIDogdCAtPiBpbnQpXG4gIGxldCBzdGF0aWMgPSB7IHVpZCA9IFVpZC5zdGF0aWM7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG50eXBlICdhIHQgPSBLZXkudFxudHlwZSAnYSB0eXBlbmFtZSA9ICdhIHRcblxubGV0IGtleSB0ID0gdFxubGV0IHVpZCB0ID0gdC5LZXkudWlkXG5sZXQgbmFtZSB0ID0gVWlkLm5hbWUgdC5LZXkudWlkXG5sZXQgc3RhdGljID0gS2V5LnN0YXRpY1xubGV0IGNyZWF0ZSA/KG5hbWUgPSBcIlR5cGVuYW1lLmNyZWF0ZVwiKSAoKSA9IHsgS2V5LnVpZCA9IFVpZC5uZXh0IG5hbWU7IHBhcmFtcyA9IFtdIH1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogVGhlIGFyZ3VtZW50IGZvciBPYmoubWFnaWMgaGVyZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluIGNvcmUvdHlwZV9lcXVhbCAqKVxuXG4gIGxldCBzYW1lICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPSBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuXG4gIGxldCBzYW1lX3dpdG5lc3MgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIFNvbWUgKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBmYWlsd2l0aCBcIlR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG5cIlxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2EgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gKCdhLCAnYikgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICdjIHR5cGVuYW1lIC0+ICgnYSwgJ2IsICdjKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICdlIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYyBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZCBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgZSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkOyBlIF0gfVxuZW5kXG5cbm1vZHVsZSBLZXlfdGFibGUgPSBIYXNodGJsLk1ha2UgKEtleSlcblxubW9kdWxlIFRhYmxlIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZGF0YSA9IERhdGEgOiAnYSB0ICogJ2EgWC50IC0+IGRhdGFcbiAgdHlwZSB0ID0gZGF0YSBLZXlfdGFibGUudFxuXG4gIGxldCBjcmVhdGUgaW50ID0gS2V5X3RhYmxlLmNyZWF0ZSBpbnRcbiAgbGV0IG1lbSB0YWJsZSBuYW1lID0gS2V5X3RhYmxlLm1lbSB0YWJsZSAoa2V5IG5hbWUpXG4gIGxldCBzZXQgdGFibGUgbmFtZSBkYXRhID0gS2V5X3RhYmxlLnJlcGxhY2UgdGFibGUgKGtleSBuYW1lKSAoRGF0YSAobmFtZSwgZGF0YSkpXG5cbiAgbGV0IGZpbmQgKHR5cGUgYSkgdGFibGUgKG5hbWUgOiBhIHR5cGVuYW1lKSA9XG4gICAgbGV0IGRhdGEgPVxuICAgICAgdHJ5IFNvbWUgKEtleV90YWJsZS5maW5kIHRhYmxlIChrZXkgbmFtZSkpIHdpdGhcbiAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXQgZG91YmxlX2FycmF5X3ZhbHVlID0gT2JqLm1hZ2ljIDAuXG5sZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgYSA9IE9iai5kb3VibGVfYXJyYXlfdGFnID0gT2JqLnRhZyAoT2JqLnJlcHIgYSlcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSBkb3VibGUgPVxuICAgICAgeyBhIDogZmxvYXRcbiAgICAgIDsgYiA6IGZsb2F0XG4gICAgICB9XG5cbiAgICB0eXBlIHNpbXBsZSA9XG4gICAgICB7IGMgOiBmbG9hdFxuICAgICAgOyBkIDogaW50XG4gICAgICB9XG5cbiAgICBsZXQgZG91YmxlID0geyBhID0gZG91YmxlX2FycmF5X3ZhbHVlOyBiID0gZG91YmxlX2FycmF5X3ZhbHVlIH1cbiAgICBsZXQgc2ltcGxlID0geyBjID0gZG91YmxlX2FycmF5X3ZhbHVlOyBkID0gZG91YmxlX2FycmF5X3ZhbHVlIH1cbiAgZW5kXG4gIGluXG4gIGFzc2VydCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5kb3VibGUpO1xuICBhc3NlcnQgKG5vdCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5zaW1wbGUpKVxuOztcbiIsIm1vZHVsZSBNIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdhIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAoJ2EsICdiKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICgnYSwgJ2IsICdjKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICdkIFgudCAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBYLnRcbiAgICAgIC0+ICdiIFgudFxuICAgICAgLT4gJ2MgWC50XG4gICAgICAtPiAnZCBYLnRcbiAgICAgIC0+ICdlIFgudFxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBYLnRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmID0gVmFyaWFudF9hbmRfcmVjb3JkX2ludGZcblxubW9kdWxlIEhlbHBlciAoQSA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpIChCIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgPSBzdHJ1Y3RcbiAgdHlwZSBtYXAgPSB7IG1hcCA6ICdhLiAnYSBBLnQgLT4gJ2EgQi50IH1cblxuICBsZXQgbWFwX3ZhcmlhbnQgKHR5cGUgdmFyaWFudCkgeyBtYXAgfSAodmFyaWFudCA6IHZhcmlhbnQgQS5WYXJpYW50LnQpID1cbiAgICBsZXQgbWFwX2NyZWF0ZSA9IGZ1bmN0aW9uXG4gICAgICB8IEEuVGFnLkFyZ3MgZmN0IC0+IEIuVGFnX2ludGVybmFsLkFyZ3MgZmN0XG4gICAgICB8IEEuVGFnLkNvbnN0IGsgLT4gQi5UYWdfaW50ZXJuYWwuQ29uc3Qga1xuICAgIGluXG4gICAgbGV0IG1hcF90YWcgdGFnID1cbiAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5UYWcgdGFnIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuVGFnLmxhYmVsIHRhZyBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLlRhZy50cmF2ZXJzZSB0YWcpIGluXG4gICAgICAgIGxldCBhcml0eSA9IEEuVGFnLmFyaXR5IHRhZyBpblxuICAgICAgICBsZXQgYXJnc19sYWJlbHMgPSBBLlRhZy5hcmdzX2xhYmVscyB0YWcgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5UYWcuaW5kZXggdGFnIGluXG4gICAgICAgIGxldCBvY2FtbF9yZXByID0gQS5UYWcub2NhbWxfcmVwciB0YWcgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLlRhZy50eWlkIHRhZyBpblxuICAgICAgICBsZXQgY3JlYXRlID0gbWFwX2NyZWF0ZSAoQS5UYWcuY3JlYXRlIHRhZykgaW5cbiAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlRhZ1xuICAgICAgICAgIChCLlRhZy5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5UYWdfaW50ZXJuYWwubGFiZWxcbiAgICAgICAgICAgICA7IHJlcFxuICAgICAgICAgICAgIDsgYXJpdHlcbiAgICAgICAgICAgICA7IGFyZ3NfbGFiZWxzXG4gICAgICAgICAgICAgOyBpbmRleFxuICAgICAgICAgICAgIDsgb2NhbWxfcmVwclxuICAgICAgICAgICAgIDsgdHlpZFxuICAgICAgICAgICAgIDsgY3JlYXRlXG4gICAgICAgICAgICAgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQgaW5cbiAgICBsZXQgcG9seW1vcnBoaWMgPSBBLlZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCBpblxuICAgIGxldCB0YWdzID1cbiAgICAgIEFycmF5LmluaXQgKEEuVmFyaWFudC5sZW5ndGggdmFyaWFudCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfdGFnIChBLlZhcmlhbnQudGFnIHZhcmlhbnQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IHZhbHVlIChhIDogdmFyaWFudCkgPVxuICAgICAgbWF0Y2ggQS5WYXJpYW50LnZhbHVlIHZhcmlhbnQgYSB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5WYWx1ZSAoYXRhZywgYSkgLT5cbiAgICAgICAgKGZ1biAodHlwZSBhcmdzKSAoYXRhZyA6ICh2YXJpYW50LCBhcmdzKSBBLlRhZy50KSAoYSA6IGFyZ3MpIC0+XG4gICAgICAgICAgIGxldCAoQi5WYXJpYW50X2ludGVybmFsLlRhZyBidGFnKSA9IHRhZ3MuKEEuVGFnLmluZGV4IGF0YWcpIGluXG4gICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChidGFnIDogKHZhcmlhbnQsIGV4KSBCLlRhZy50KSAtPlxuICAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLlRhZy50eWlkIGF0YWcpIChCLlRhZy50eWlkIGJ0YWcpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBidGFnID0gKGJ0YWcgOiAodmFyaWFudCwgYXJncykgQi5UYWcudCkgaW5cbiAgICAgICAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlZhbHVlIChidGFnLCBhKSlcbiAgICAgICAgICAgICBidGFnKVxuICAgICAgICAgIGF0YWdcbiAgICAgICAgICBhXG4gICAgaW5cbiAgICBCLlZhcmlhbnQuaW50ZXJuYWxfdXNlX29ubHkgeyBCLlZhcmlhbnRfaW50ZXJuYWwudHlwZW5hbWU7IHRhZ3M7IHBvbHltb3JwaGljOyB2YWx1ZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9yZWNvcmQgKHR5cGUgcmVjb3JkKSB7IG1hcCB9IChyZWNvcmQgOiByZWNvcmQgQS5SZWNvcmQudCkgPVxuICAgIGxldCBtYXBfZmllbGQgZmllbGQgPVxuICAgICAgbWF0Y2ggZmllbGQgd2l0aFxuICAgICAgfCBBLlJlY29yZC5GaWVsZCBmaWVsZCAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLkZpZWxkLmxhYmVsIGZpZWxkIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuRmllbGQudHJhdmVyc2UgZmllbGQpIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuRmllbGQuaW5kZXggZmllbGQgaW5cbiAgICAgICAgbGV0IGlzX211dGFibGUgPSBBLkZpZWxkLmlzX211dGFibGUgZmllbGQgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLkZpZWxkLnR5aWQgZmllbGQgaW5cbiAgICAgICAgbGV0IGdldCA9IEEuRmllbGQuZ2V0IGZpZWxkIGluXG4gICAgICAgIEIuUmVjb3JkX2ludGVybmFsLkZpZWxkXG4gICAgICAgICAgKEIuRmllbGQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuRmllbGRfaW50ZXJuYWwubGFiZWw7IHJlcDsgaW5kZXg7IGlzX211dGFibGU7IHR5aWQ7IGdldCB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZWNvcmQgaW5cbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgPSBBLlJlY29yZC5oYXNfZG91YmxlX2FycmF5X3RhZyByZWNvcmQgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIEFycmF5LmluaXQgKEEuUmVjb3JkLmxlbmd0aCByZWNvcmQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX2ZpZWxkIChBLlJlY29yZC5maWVsZCByZWNvcmQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IGNyZWF0ZSB7IEIuUmVjb3JkX2ludGVybmFsLmdldCB9ID1cbiAgICAgIGxldCBnZXQgKHR5cGUgYSkgKGFmaWVsZCA6IChfLCBhKSBBLkZpZWxkLnQpID1cbiAgICAgICAgbWF0Y2ggZmllbGRzLihBLkZpZWxkLmluZGV4IGFmaWVsZCkgd2l0aFxuICAgICAgICB8IEIuUmVjb3JkX2ludGVybmFsLkZpZWxkIGJmaWVsZCAtPlxuICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChiZmllbGQgOiAocmVjb3JkLCBleCkgQi5GaWVsZC50KSAtPlxuICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5GaWVsZC50eWlkIGFmaWVsZCkgKEIuRmllbGQudHlpZCBiZmllbGQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgYmZpZWxkID0gKGJmaWVsZCA6IChyZWNvcmQsIGEpIEIuRmllbGQudCkgaW5cbiAgICAgICAgICAgICBnZXQgYmZpZWxkKVxuICAgICAgICAgICAgYmZpZWxkXG4gICAgICBpblxuICAgICAgQS5SZWNvcmQuY3JlYXRlIHJlY29yZCB7IEEuUmVjb3JkLmdldCB9XG4gICAgaW5cbiAgICBCLlJlY29yZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgeyBCLlJlY29yZF9pbnRlcm5hbC50eXBlbmFtZTsgZmllbGRzOyBoYXNfZG91YmxlX2FycmF5X3RhZzsgY3JlYXRlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBOYW1lZCA9IHNpZ1xuICB0eXBlICdhIGNvbXB1dGF0aW9uXG5cbiAgbW9kdWxlIENvbnRleHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGluaXQgOiBDb250ZXh0LnQgLT4gJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCBnZXRfd2lwX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2hhcmUgOiBfIFR5cGVyZXAudCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcHV0YXRpb24gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgaW50IDogaW50IHRcbiAgdmFsIGludDMyIDogaW50MzIgdFxuICB2YWwgaW50NjQgOiBpbnQ2NCB0XG4gIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICB2YWwgY2hhciA6IGNoYXIgdFxuICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gIHZhbCBib29sIDogYm9vbCB0XG4gIHZhbCB1bml0IDogdW5pdCB0XG4gIHZhbCBvcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gIHZhbCBsaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgdmFsIGFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gIHZhbCBsYXp5X3QgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gIHZhbCByZWZfIDogJ2EgdCAtPiAnYSByZWYgdFxuICB2YWwgZnVuY3Rpb25fIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAtPiAnYikgdFxuICB2YWwgdHVwbGUyIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0dXBsZTMgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gIHZhbCB0dXBsZTQgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICB2YWwgdHVwbGU1IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAnZSB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG4gIHZhbCByZWNvcmQgOiAnYSBSZWNvcmQudCAtPiAnYSB0XG4gIHZhbCB2YXJpYW50IDogJ2EgVmFyaWFudC50IC0+ICdhIHRcblxuICBtb2R1bGUgTmFtZWQgOiBOYW1lZCB3aXRoIHR5cGUgJ2EgY29tcHV0YXRpb24gOj0gJ2EgdFxuZW5kXG5cbigqIHNwZWNpYWwgZnVuY3RvciBhcHBsaWNhdGlvbiBmb3IgY29tcHV0YXRpb24gYXMgY2xvc3VyZSBvZiB0aGUgZm9ybSBbYSAtPiBiXSAqKVxubW9kdWxlIE1ha2VfbmFtZWRfZm9yX2Nsb3N1cmUgKFggOiBzaWdcbiAgICB0eXBlICdhIGlucHV0XG4gICAgdHlwZSAnYSBvdXRwdXRcbiAgICB0eXBlICdhIHQgPSAnYSBpbnB1dCAtPiAnYSBvdXRwdXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0XG5cbiAgICBsZXQgY3JlYXRlID0gaWdub3JlXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50XG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA6ICdhIFgudCByZWZcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50IG9wdGlvbiByZWZcbiAgICB9XG5cbiAgZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmdcblxuICBsZXQgaW5pdCAoKSBuYW1lID1cbiAgICBsZXQgcGF0aCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgbmFtZSkgaW5cbiAgICBsZXQgciA9IHJlZiAoZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZCBwYXRoKSkgaW5cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgPSAoZnVuIGlucHV0IC0+ICFyIGlucHV0KVxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgPSByXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHJlZiBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBnZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZCA9XG4gICAgbWF0Y2ggc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgY2xvcyAtPiBjbG9zXG4gICAgfCBOb25lIC0+IHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlXG4gIDs7XG5cbiAgbGV0IHNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24gPVxuICAgIGxldCBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZSBpblxuICAgIG1hdGNoIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIEJhc2UucGh5c19lcXVhbCBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZSBjb21wdXRhdGlvbiB0aGVuIGFzc2VydCBmYWxzZTtcbiAgICAgIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDo9IFNvbWUgY29tcHV0YXRpb247XG4gICAgICBzaGFyZWQucnVudGltZV9yZWZlcmVuY2UgOj0gY29tcHV0YXRpb247XG4gICAgICBjb21wdXRhdGlvblxuICA7O1xuXG4gIGxldCBzaGFyZSBfID0gdHJ1ZVxuZW5kXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgaW1wbGVtZW50cyA6IFR5cGVuYW1lLlVpZC50IC0+IGJvb2xcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEJyb2tlbl9kZXBlbmRlbmN5IG9mIHN0cmluZ1xuXG4gIGxldCBjaGVja19kZXBlbmRlbmNpZXMgbmFtZSByZXF1aXJlZCA9XG4gICAgbWF0Y2ggcmVxdWlyZWQgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gKClcbiAgICB8IF8gLT5cbiAgICAgIGZ1biB1aWQgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB7IG5hbWUgPSBuYW1lJzsgaW1wbGVtZW50cyB9IC0+XG4gICAgICAgICAgICAgaWYgbm90IChpbXBsZW1lbnRzIHVpZClcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICgqIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBzZXQgdXAsIHRoaXMgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHByb2dyYW0sIHdlIHJhdGhlciBmYWlsIHdpdGggYSBodW1hblxuICAgICAgICAgICAgICAgICAgcmVhZGFibGUgb3V0cHV0ICopXG4gICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJUeXBlX2dlbmVyaWMgJVMgcmVxdWlyZXMgJVMgZm9yIHVpZCAlU1xcblwiXG4gICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgIG5hbWUnXG4gICAgICAgICAgICAgICAgICAgKFR5cGVuYW1lLlVpZC5uYW1lIHVpZClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBwcmVycl9lbmRsaW5lIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICByYWlzZSAoQnJva2VuX2RlcGVuZGVuY3kgbWVzc2FnZSkpKVxuICAgICAgICAgIHJlcXVpcmVkXG4gIDs7XG5lbmRcblxuKCogRXh0ZW5kaW5nIGFuIGV4aXN0aW5nIGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIEV4dGVuZGluZyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICB2YWwgaWRlbnQgOiBJZGVudC50XG5cbiAgKCogZ2VuZXJpY19pZGVudCAqIHR5cGVuYW1lIG9yIGluZm8gKilcbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2EgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdiIGNvbXB1dGF0aW9uIC0+ICgnYSwgJ2IpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gJ2UgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgdmFsIHJlZ2lzdGVyMCA6IChtb2R1bGUgUykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIxIDogKG1vZHVsZSBTMSkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIyIDogKG1vZHVsZSBTMikgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIzIDogKG1vZHVsZSBTMykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI0IDogKG1vZHVsZSBTNCkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI1IDogKG1vZHVsZSBTNSkgLT4gdW5pdFxuXG4gICgqIHNwZWNpYWwgbGVzcyBzY2FyeSB0eXBlIHdoZW4gdGhlIHR5cGUgaGFzIG5vIHBhcmFtZXRlcnMgKilcbiAgdmFsIHJlZ2lzdGVyIDogJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIC0+IHVuaXRcblxuICAoKlxuICAgICBFc3NlbnRpYWxseSBiZWNhdXNlIHdlIGNhbm5vdCB0YWxrIGFib3V0IGEgdmFyaWFibGUgb2Yga2luZCAqIC0+IGtcbiAgICAgdmFsIHJlZ2lzdGVyMSA6ICdhICd0IFR5cGVyZXAudCAtPiAoJ2EgY29tcHV0YXRpb24gLT4gJ2EgJ3QgY29tcHV0YXRpb24pIC0+IHVuaXRcbiAgICAgLi4uXG4gICopXG5lbmRcblxuKCogSW1wbGVtZW50aW5nIGEgbmV3IGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIFNfaW1wbGVtZW50YXRpb24gPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICAoKiByYWlzZSB1c2luZyB0aGUgY3VycmVudCBpZGVudCAqKVxuICB2YWwgcmFpc2Vfbm90X2ltcGxlbWVudGVkIDogc3RyaW5nIC0+ICdhXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbiA9IHsgZ2VuZXJpYyA6ICdhLiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gfVxuXG4gICgqXG4gICAgIFN0YW5kYXJkIGNhc2UsIGZpbmQgYSBleHRlbmRlZF9pbXBsZW1lbnRhdGlvbiwgb3IgbG9vayBpbiB0aGUgY29udGVudFxuICAqKVxuICB2YWwgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBUeXBlcmVwLnQgbGF6eV90IG9wdGlvblxuICAgIC0+ICdhIGNvbXB1dGF0aW9uXG5cbiAgKCpcbiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IG1vcmUgY29udHJvbCBvbiB3aGF0IHlvdSB3YW50IHRvIGRvXG4gICopXG4gIHZhbCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBjb21wdXRhdGlvbiBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgdmFsIG9mX3R5cGVyZXAgOiAnYSBUeXBlcmVwLnQgLT4gWyBgZ2VuZXJpYyBvZiAnYSBjb21wdXRhdGlvbiBdXG5cbiAgbW9kdWxlIENvbXB1dGF0aW9uIDogQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcbiAgZW5kKSA6IFNfaW1wbGVtZW50YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWC50XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgaW5jbHVkZSBUeXBlX2dlbmVyaWNfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuXG4gICgqIHdlIGRvIG5vdCB1c2UgY29yZSBzaW5jZSB3ZSBhcmUgZWFybGllciBpbiB0aGUgZGVwZW5kZW5jaWVzIGdyYXBoICopXG4gIG1vZHVsZSBVaWRfdGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuVWlkKVxuXG4gICAgbGV0IGZpbmQgdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICB0cnkgU29tZSAoZmluZCB0YWJsZSBrZXkpIHdpdGhcbiAgICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAyNF8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW5jdGlvblxuICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IGZpZWxkX3NleHBzX18wMDNfIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICAgIGxldCBmaWxlbmFtZV9fMDA0XyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgbGluZV9udW1iZXJfXzAwNl8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGxpbmVfc3RhcnRfXzAwOF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIHN0YXJ0X3Bvc19fMDEwXyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgZW5kX3Bvc19fMDEyXyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgZHVwbGljYXRlc19fMDE0XyA9IFN0ZGxpYi5yZWYgW11cbiAgICAgICAgIGFuZCBleHRyYV9fMDE1XyA9IFN0ZGxpYi5yZWYgW10gaW5cbiAgICAgICAgIGxldCByZWMgaXRlcl9fMDI1XyA9IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIGZpZWxkX25hbWVfXzAxNl9cbiAgICAgICAgICAgICAgICA6OiAoKFtdIHwgWyBfIF0pIGFzIF9maWVsZF9zZXhwc19fMDE4XykpXG4gICAgICAgICAgICAgOjogdGFpbF9fMDI2XyAtPlxuICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyAoKSA9XG4gICAgICAgICAgICAgICBtYXRjaCBfZmllbGRfc2V4cHNfXzAxOF8gd2l0aFxuICAgICAgICAgICAgICAgfCBbIHhfXzAyN18gXSAtPiB4X18wMjdfXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfb25seV9wYWlyc19leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmaWVsZF9uYW1lX18wMTZfIHdpdGhcbiAgICAgICAgICAgICAgfCBcImZpbGVuYW1lXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGZpbGVuYW1lX18wMDRfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyM18gPSBOYW1lLnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgZmlsZW5hbWVfXzAwNF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyM18pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJsaW5lX251bWJlclwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBsaW5lX251bWJlcl9fMDA2XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjJfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGxpbmVfbnVtYmVyX18wMDZfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjJfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwibGluZV9zdGFydFwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyMV8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgbGluZV9zdGFydF9fMDA4XyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIxXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcInN0YXJ0X3Bvc1wiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIwXyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBzdGFydF9wb3NfXzAxMF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyMF8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJlbmRfcG9zXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDE5XyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBlbmRfcG9zX18wMTJfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMTlfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBpZiBTdGRsaWIuKCAhICkgU2V4cGxpYjAuU2V4cF9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGV4dHJhX18wMTVfIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XylcbiAgICAgICAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgICAgICBpdGVyX18wMjVfIHRhaWxfXzAyNl9cbiAgICAgICAgICAgfCAoKFNleHBsaWIwLlNleHAuQXRvbSBfIHwgU2V4cGxpYjAuU2V4cC5MaXN0IF8pIGFzIHNleHBfXzAwMl8pIDo6IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWRcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICBpblxuICAgICAgICAgaXRlcl9fMDI1XyBmaWVsZF9zZXhwc19fMDAzXztcbiAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XyB3aXRoXG4gICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKVxuICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XyB3aXRoXG4gICAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGV4dHJhX18wMTVfKVxuICAgICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAoIFN0ZGxpYi4oICEgKSBmaWxlbmFtZV9fMDA0X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgbGluZV9udW1iZXJfXzAwNl9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGxpbmVfc3RhcnRfXzAwOF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwX1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgZW5kX3Bvc19fMDEyXyApXG4gICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgIHwgKCBTdGRsaWIuT3B0aW9uLlNvbWUgZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGVuZF9wb3NfXzAxM18gKSAtPlxuICAgICAgICAgICAgICAgICAgeyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAwN19cbiAgICAgICAgICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMTNfXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgICBbICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZmlsZW5hbWVfXzAwNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJmaWxlbmFtZVwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGxpbmVfbnVtYmVyX18wMDZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwibGluZV9udW1iZXJcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwibGluZV9zdGFydFwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcInN0YXJ0X3Bvc1wiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJlbmRfcG9zXCIgKVxuICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gXyBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGVycm9yX3NvdXJjZV9fMDI0XyBzZXhwX18wMDJfXG4gICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHRfb2Zfc2V4cFxuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgZmlsZW5hbWUgPSBmaWxlbmFtZV9fMDI5X1xuICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAzMV9cbiAgICAgICAgICAgOyBsaW5lX3N0YXJ0ID0gbGluZV9zdGFydF9fMDMzX1xuICAgICAgICAgICA7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDM1X1xuICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMzdfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPSBbXSBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM4XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAzN18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDM4XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzNl8gPSBzZXhwX29mX2ludCBzdGFydF9wb3NfXzAzNV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMzZfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM0XyA9IHNleHBfb2ZfaW50IGxpbmVfc3RhcnRfXzAzM18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX3N0YXJ0XCI7IGFyZ19fMDM0XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzMl8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDMxXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfbnVtYmVyXCI7IGFyZ19fMDMyXyBdXG4gICAgICAgICAgOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDMwXyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMjlfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZmlsZW5hbWVcIjsgYXJnX18wMzBfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDI4X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gICAgbGV0IGNvbXBhcmUgPVxuICAgICAgKGZ1biBhX18wMzlfIGJfXzA0MF8gLT5cbiAgICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzOV8gYl9fMDQwX1xuICAgICAgICAgdGhlbiAwXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggTmFtZS5jb21wYXJlIGFfXzAzOV8uZmlsZW5hbWUgYl9fMDQwXy5maWxlbmFtZSB3aXRoXG4gICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLmxpbmVfbnVtYmVyIGJfXzA0MF8ubGluZV9udW1iZXIgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5saW5lX3N0YXJ0IGJfXzA0MF8ubGluZV9zdGFydCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLnN0YXJ0X3BvcyBiX18wNDBfLnN0YXJ0X3BvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMzlfLmVuZF9wb3MgYl9fMDQwXy5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gICAgOztcblxuICAgIGxldCBfID0gY29tcGFyZVxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfZmlsZSBmaWxlbmFtZSA9XG4gICAgeyBmaWxlbmFtZTsgbGluZV9udW1iZXIgPSAxOyBsaW5lX3N0YXJ0ID0gMDsgc3RhcnRfcG9zID0gMDsgZW5kX3BvcyA9IDAgfVxuICA7O1xuXG4gIGxldCBvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiAocG9zIDogU291cmNlX2NvZGVfcG9zaXRpb24udCkgPVxuICAgIHsgZmlsZW5hbWUgPSBOYW1lLm9mX3N0cmluZyAoQ2FtbC5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNC4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBjaGFyIC0+ICdhKSAtPiAnYSAtPiBzdHJpbmcgLT4gJ2FcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYSAtPiAnYSkgLT4gc3RyaW5nIC0+ICdhIC0+ICdhXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBbYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5dIGNvcGllcyBbbGVuXSBieXRlc1xuICAgIGZyb20gdGhlIHN0cmluZyBbc3JjXSwgc3RhcnRpbmcgYXQgaW5kZXggW3NyY19wb3NdLFxuICAgIHRvIGJ5dGUgc2VxdWVuY2UgW2RzdF0sIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBudW1iZXIgW2RzdF9wb3NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3NyY19wb3NdIGFuZCBbbGVuXSBkbyBub3RcbiAgICBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbc3JjXSwgb3IgaWYgW2RzdF9wb3NdIGFuZCBbbGVuXVxuICAgIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbZHN0XS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbm9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeGFjdCBvZiBzdHJpbmdcbiAgICB8IE91dHB1dFxuICAgIHwgUHJldHR5IG9mICdhXG4gICAgfCBVbnJlYWNoYWJsZVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMDZfKSA6ICgoYV9fMDA2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAwNl8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEV4YWN0IGFyZzBfXzAwMl8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4YWN0XCI7IHJlczBfXzAwM18gXVxuICAgICAgfCBPdXRwdXQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiT3V0cHV0XCJcbiAgICAgIHwgUHJldHR5IGFyZzBfXzAwNF8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlByZXR0eVwiOyByZXMwX18wMDVfIF1cbiAgICAgIHwgVW5yZWFjaGFibGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5yZWFjaGFibGVcIlxuICA7O1xuXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA3XyBiX18wMDhfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDdfLCBiX18wMDhfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAwOV8sIEV4YWN0IF9iX18wMTBfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDlfIF9iX18wMTBfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgRXhhY3QgXyAtPiAxXG4gICAgICB8IE91dHB1dCwgT3V0cHV0IC0+IDBcbiAgICAgIHwgT3V0cHV0LCBfIC0+IC0xXG4gICAgICB8IF8sIE91dHB1dCAtPiAxXG4gICAgICB8IFByZXR0eSBfYV9fMDExXywgUHJldHR5IF9iX18wMTJfIC0+IF9jbXBfX2EgX2FfXzAxMV8gX2JfXzAxMl9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gMVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gMClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSBbXSBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyOF8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBib2R5X2xvY2F0aW9uX18wMjdfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXh0aWRfbG9jYXRpb25cIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI0XyA9IEJvZHkuc2V4cF9vZl90IF9vZl9hX18wMTlfIGJvZHlfXzAyM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDIyXyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHRhZ19fMDIxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAyOV8gYl9fMDMwX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggY29tcGFyZV9vcHRpb24gY29tcGFyZV9zdHJpbmcgYV9fMDI5Xy50YWcgYl9fMDMwXy50YWcgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKG1hdGNoIEJvZHkuY29tcGFyZSBfY21wX19hIGFfXzAyOV8uYm9keSBiX18wMzBfLmJvZHkgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKG1hdGNoIEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmV4dGlkX2xvY2F0aW9uIGJfXzAzMF8uZXh0aWRfbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgMCAtPiBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5ib2R5X2xvY2F0aW9uIGJfXzAzMF8uYm9keV9sb2NhdGlvblxuICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgIHwgbiAtPiBuKVxuICAgIHwgbiAtPiBuKVxuOztcblxubGV0IF8gPSBjb21wYXJlXG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMzVfIGJfXzAzNl8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDM1XyBiX18wMzZfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlXG4gICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgKGVxdWFsX29wdGlvbiBlcXVhbF9zdHJpbmcgYV9fMDM1Xy50YWcgYl9fMDM2Xy50YWcpXG4gICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgKEJvZHkuZXF1YWwgX2NtcF9fYSBhX18wMzVfLmJvZHkgYl9fMDM2Xy5ib2R5KVxuICAgICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uZXh0aWRfbG9jYXRpb24gYl9fMDM2Xy5leHRpZF9sb2NhdGlvbilcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uYm9keV9sb2NhdGlvbiBiX18wMzZfLmJvZHlfbG9jYXRpb24pKSlcbjs7XG5cbmxldCBfID0gZXF1YWxcblxuW0BAQGVuZF1cblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gc3RyaW5nIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKGZ1biB4X18wNDFfIC0+IHNleHBfb2ZfdCBzZXhwX29mX3N0cmluZyB4X18wNDFfIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDQyXyBiX18wNDNfIC0+IGNvbXBhcmUgY29tcGFyZV9zdHJpbmcgYV9fMDQyXyBiX18wNDNfIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtYXBfcHJldHR5IHQgfmYgPSB7IHQgd2l0aCBib2R5ID0gQm9keS5tYXBfcHJldHR5IHQuYm9keSB+ZiB9XG4iLCJtb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBGaWxlID0gRmlsZVxuICBtb2R1bGUgRXhwZWN0YXRpb24gPSBFeHBlY3RhdGlvblxuZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIHVzZSBbRXhwZWN0X3Rlc3RfY29tbW9uXSBpbnN0ZWFkXCJdXG5cbmluY2x1ZGUgU3RkIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cbiIsIm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYENSICgqKiBMZWF2ZXMgYSBDUiwgc28gdGhhdCBmZWF0dXJlcyBjYW5ub3QgYmUgcmVsZWFzZWQuICopXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgKCoqIE9ubHkgZm9yIHBweF9leHBlY3QgdGVzdGluZzsgZG8gbm90IHVzZS4gKilcbiAgICBdXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgSU9fcnVuIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZFxuXG4gICgqKiBBIG5vdy1sZWdhY3kgbW9uYWQuIFRoaXMgc2lnbmF0dXJlIHVzZWQgdG8gZGVjbGFyZSBhIFtmbHVzaF0gZnVuY3Rpb24uXG4gICAgICBbWyVleHBlY3Qub3V0cHV0XV0gc3RpbGwgcmV0dXJucyB0aGlzIHR5cGUuIE5vIG1lYW5pbmdmdWwgbW9uYWRpYyB3b3JrIGlzIGRvbmUuICopXG4gIG1vZHVsZSBJT19mbHVzaCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCB0b19ydW4gOiAnYSB0IC0+ICdhIElPX3J1bi50XG4gIGVuZFxuXG4gICgqKiBSdW4gYW4gSU8gb3BlcmF0aW9uIHVudGlsIGNvbXBsZXRpb24gKilcbiAgdmFsIHJ1biA6ICh1bml0IC0+IHVuaXQgSU9fcnVuLnQpIC0+IHVuaXRcblxuICAoKiogU3luY2hyb25vdXMgY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBwZW5kaW5nIG91dHB1dCBvbiBmaWxlIGRlc2NyaXB0aW9uIDAuIFdpdGggYXN5bmMsXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBvbiB0aGUgcmhzIG9mIGEgW0lPLmJpbmQgKGZsdXNoICgpKSAuLi5dIHRoZSBvdXRwdXQgaXNcbiAgICAgIGNvbXBsZXRlbHkgZmx1c2hlZCwgdGhhdCdzIHdoeSB3ZSBuZWVkIHRoaXMuICopXG4gIHZhbCBmbHVzaGVkIDogdW5pdCAtPiBib29sXG5cbiAgKCoqIFtzYW5pdGl6ZV0gY2FuIGJlIHVzZWQgdG8gbWFwIGFsbCBvdXRwdXQgc3RyaW5ncywgZS5nLiBmb3IgY2xlYW5zaW5nLiAqKVxuICB2YWwgc2FuaXRpemUgOiBzdHJpbmcgLT4gc3RyaW5nXG5cblxuICAoKiogW3Vwb25fdW5yZWxlYXNhYmxlX2lzc3VlXSBzcGVjaWZpZXMgaG93IHRvIGRlYWwgd2l0aCBvdXRwdXQgdGhhdCBzaG91bGQgbm90IGJlXG4gICAgICByZWxlYXNlZCBldmVuIGlmIGl0IGlzIGFjY2VwdGVkIChlLmcuIGJhY2t0cmFjZXMpLiBUaGUgZGVmYXVsdCBpcyBbYENSXS4gICopXG4gIHZhbCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbmVuZFxuXG4oKiogQ29uZmlndXJhdGlvbiBmb3IgcnVubmluZyBleHBlY3QgdGVzdHMgKilcbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9IHNpZ1xuICAoKiogVG8gY29uZmlndXJlIGV4cGVjdF90ZXN0LCBhZGQgdGhlIGZvbGxvd2luZyBhdCB0aGUgdG9wIG9mIHlvdXIgLm1sIGZpbGUsIG9yIGluIHNvbWVcbiAgICAgIGltcG9ydC5tbDpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnXG4gICAgICAgICAgbGV0IHByZV9yZWRpcmVjdF9ob29rICgpID0gLi4uXG4gICAgICAgIGVuZFxuICAgICAgXX1cblxuICAgICAgTm90ZSB0aGF0IHNpbmNlIGFsbCBleHBlY3QgdGVzdCBhcmUgYWxzbyBpbmxpbmUgdGVzdHMsIHRoZSBpbmxpbmUgdGVzdCBjb25maWd1cmF0aW9uXG4gICAgICBhbHNvIGFwcGxpZXMgdG8gYWxsIGV4cGVjdCB0ZXN0LlxuICAqKVxuXG4gIG1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbW1lbnRfcHJlZml4IDogdCAtPiBzdHJpbmdcblxuICAgICgqKiBNZXNzYWdlIHRvIHByaW50IHdoZW4gYW4gZXhwZWN0YXRpb24gY29udGFpbnMgYSBiYWNrdHJhY2UgKilcbiAgICB2YWwgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSA6IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5TXG5cbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9XG4gIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLkV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc1xuXG5tb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IHQxID0gdDJcblxuICBsZXQgY29tbWVudF9wcmVmaXggPSBmdW5jdGlvblxuICAgIHwgYENSIC0+IFwiQ1IgXCJcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAtPiBcIlwiXG4gIDs7XG5cbiAgbGV0IG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgdCA9XG4gICAgUHJpbnRmLnNwcmludGZcbiAgICAgIHt8XG4oKiAlc2V4cGVjdF90ZXN0X2NvbGxlY3RvcjogVGhpcyB0ZXN0IGV4cGVjdGF0aW9uIGFwcGVhcnMgdG8gY29udGFpbiBhIGJhY2t0cmFjZS5cbiAgIFRoaXMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgYmFja3RyYWNlcyBhcmUgZnJhZ2lsZS5cbiAgIFBsZWFzZSBjaGFuZ2UgdGhpcyB0ZXN0IHRvIG5vdCBpbmNsdWRlIGEgYmFja3RyYWNlLiAqKVxuXG58fVxuICAgICAgKGNvbW1lbnRfcHJlZml4IHQpXG4gIDs7XG5lbmRcbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDI4XFwwMDBcXDAwNVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMDZcXDAwMFxcMDg1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDBcXDAwMFxcMDMxXFwwMDBcXDA0NlxcMDAwXFwwNDhcXDAwMFxcMDA3XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwNjJcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwxMDNcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTA1XFwwMDBcXDA5NVxcMDAwXFwxMDdcXDAwMFxcMDk1XFwwMDBcXDExM1xcMDAwXFwwMTBcXDAwMFxcMTA0XFwwMDBcXFxuICAgIFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMDRcXDAwMFxcMTIyXFwwMDBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMDEyXFwwMDBcXDEyNlxcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMTlcXDAwMFxcMTIyXFwwMDBcXDAxM1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDEyXFwwMDBcXDAzOVxcMDAwXFwwMTJcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA2MVxcMDAwXFwwNzFcXDAwMFxcMDU5XFwwMDBcXDA4NlxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAzXFwwMDBcXDAyOVxcMDAwXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAxOFxcMDAwXFwwMjdcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAyNlxcMDAwXFwwMTZcXDAwMFxcMDA1XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMTNcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDYwXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU2XFwwMDBcXDA1OFxcMDAwXFwwNjJcXDAwMFxcMDQ2XFwwMDBcXDA2M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMzNcXDAwMFxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDYwXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDg1XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI4XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDE3XFwwMDBcXDAyNlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTZcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2MVxcMDAwXFwwNDRcXDAwMFxcMDYyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIGNoZWNrIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTYzIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTY4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBub3RfYXRfYm9zIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgNDRcbmFuZCBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTgwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA5IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxODUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgKCBmYWxzZSApXG4jIDE5MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTIgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuIFxuICBsZXQgY29udGFpbnNfYmFja3RyYWNlcyBzID0gY2hlY2sgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4jIDIwMSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcbiIsIm9wZW4gRXhwZWN0X3Rlc3RfY29tbW9uXG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcblxubW9kdWxlIFRlc3Rfb3V0Y29tZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZmlsZV9kaWdlc3QgOiBGaWxlLkRpZ2VzdC50XG4gICAgOyBsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICAgIDsgZXhwZWN0YXRpb25zIDogRXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIDogRXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgOyBzYXZlZF9vdXRwdXQgOiAoRmlsZS5Mb2NhdGlvbi50ICogc3RyaW5nKSBsaXN0XG4gICAgOyB0cmFpbGluZ19vdXRwdXQgOiBzdHJpbmdcbiAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbiAgICA7IHVuY2F1Z2h0X2V4biA6IChleG4gKiBQcmludGV4Yy5yYXdfYmFja3RyYWNlKSBvcHRpb25cbiAgICB9XG5lbmRcblxubGV0IHRlc3RzX3J1biA6IFRlc3Rfb3V0Y29tZS50IGxpc3QgcmVmID0gcmVmIFtdXG5cbmxldCBwcm90ZWN0IH5maW5hbGx5IH5mID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgZmluYWxseSAoKTtcbiAgICByYWlzZSBlXG47O1xuXG5tb2R1bGUgQ3VycmVudF9maWxlID0gc3RydWN0XG4gIGxldCBjdXJyZW50ID0gcmVmIE5vbmVcblxuICBsZXQgc2V0IH5hYnNvbHV0ZV9maWxlbmFtZSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBjdXJyZW50IDo9IFNvbWUgYWJzb2x1dGVfZmlsZW5hbWVcbiAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5zZXQ6IGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgdW5zZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgXyAtPiBjdXJyZW50IDo9IE5vbmVcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IudW5zZXQ6IG5vdCBzZXRcIlxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgZm4gLT4gZm5cbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuZ2V0OiBub3Qgc2V0XCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2F2ZWQgOiAoRmlsZS5Mb2NhdGlvbi50ICogaW50KSBsaXN0XG4gICAgOyBjaGFuIDogb3V0X2NoYW5uZWxcbiAgICA7IGZpbGVuYW1lIDogRmlsZS5OYW1lLnRcbiAgICB9XG5cbiAgZXh0ZXJuYWwgYmVmb3JlX3Rlc3RcbiAgICA6ICBvdXRwdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgYWZ0ZXJfdGVzdFxuICAgIDogIHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3RcIlxuXG4gIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXCJcblxuICBsZXQgZ2V0X3Bvc2l0aW9uICgpID0gcG9zX291dCBzdGRvdXRcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgZmlsZW5hbWUgPSBGaWxlbmFtZS50ZW1wX2ZpbGUgXCJleHBlY3QtdGVzdFwiIFwib3V0cHV0XCIgaW5cbiAgICBsZXQgY2hhbiA9IG9wZW5fb3V0X2JpbiBmaWxlbmFtZSBpblxuICAgIGJlZm9yZV90ZXN0IH5vdXRwdXQ6Y2hhbiB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgeyBjaGFuOyBmaWxlbmFtZSA9IEZpbGUuTmFtZS5vZl9zdHJpbmcgZmlsZW5hbWU7IHNhdmVkID0gW10gfVxuICA7O1xuXG4gIGxldCByZWxhdGl2ZV9maWxlbmFtZSB0ID0gRmlsZS5OYW1lLnJlbGF0aXZlX3RvIH5kaXI6KEZpbGUuaW5pdGlhbF9kaXIgKCkpIHQuZmlsZW5hbWVcblxuICBsZXQgd2l0aF9pYyBmbmFtZSB+ZiA9XG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBwcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gY2xvc2VfaW4gaWMpIH5mOihmdW4gKCkgLT4gZiBpYylcbiAgOztcblxuICBsZXQgY3VycmVudF90ZXN0IDogKEZpbGUuTG9jYXRpb24udCAqIHQpIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBiYXNpY19mbHVzaCAoKSA9XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKTtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5lcnJfZm9ybWF0dGVyICgpO1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZG91dDtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgbGV0IGluc3RhbmNlID0gSW5zdGFuY2UuZ2V0X2N1cnJlbnQgKCkgaW5cbiAgYmFzaWNfZmx1c2ggKCk7XG4gIEluc3RhbmNlLnNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCBpbnN0YW5jZSBsb2NhdGlvblxuOztcblxubW9kdWxlIE1ha2UgKEMgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuUykgPSBzdHJ1Y3RcbiAgbGV0ICggPj49ICkgdCBmID0gQy5JT19mbHVzaC5iaW5kIHQgfmZcbiAgbGV0IHJldHVybiA9IEMuSU9fZmx1c2gucmV0dXJuXG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENcblxuICAgIGxldCBmbHVzaCAoKSA9XG4gICAgICBiYXNpY19mbHVzaCAoKTtcbiAgICAgIEMuSU9fZmx1c2gucmV0dXJuICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEluc3RhbmNlX2lvIDogc2lnXG4gICAgdmFsIHNhdmVfb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHVuaXQgQy5JT19mbHVzaC50XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nIEMuSU9fZmx1c2gudFxuXG4gICAgdmFsIGV4ZWNcbiAgICAgIDogIGZpbGVfZGlnZXN0OkZpbGUuRGlnZXN0LnRcbiAgICAgIC0+IGxvY2F0aW9uOkZpbGUuTG9jYXRpb24udFxuICAgICAgLT4gZXhwZWN0YXRpb25zOkV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICAgIC0+IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbjpFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICAgIC0+IGY6KHVuaXQgLT4gdW5pdCBDLklPX3J1bi50KVxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIEluc3RhbmNlXG5cbiAgICBsZXQgZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIGxlbiA9XG4gICAgICBsZXQgcyA9IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHw+IEMuc2FuaXRpemUgaW5cbiAgICAgIGlmIG5vdCAoQ2hlY2tfYmFja3RyYWNlcy5jb250YWluc19iYWNrdHJhY2VzIHMpXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIC5tZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlXG4gICAgICAgICAgQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICBeIHNcbiAgICA7O1xuXG4gICAgbGV0IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgPVxuICAgICAgbGV0IGxhc3Rfb2ZzID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgICBhZnRlcl90ZXN0IH5zdGRvdXQgfnN0ZGVycjtcbiAgICAgIGNsb3NlX291dCB0LmNoYW47XG4gICAgICBsZXQgZm5hbWUgPSByZWxhdGl2ZV9maWxlbmFtZSB0IGluXG4gICAgICBwcm90ZWN0XG4gICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT4gU3lzLnJlbW92ZSBmbmFtZSlcbiAgICAgICAgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgIHdpdGhfaWMgZm5hbWUgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgbGV0IG9mcywgb3V0cHV0cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHQuc2F2ZWQpXG4gICAgICAgICAgICAgICAgfmluaXQ6KDAsIFtdKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKG9mcywgYWNjKSAobG9jLCBuZXh0X29mcykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChuZXh0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgICAgICAgIG5leHRfb2ZzLCAobG9jLCBzKSA6OiBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRyYWlsaW5nX291dHB1dCA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobGFzdF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXRzLCB0cmFpbGluZ19vdXRwdXQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgQy5mbHVzaCAoKVxuICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uO1xuICAgICAgcmV0dXJuICgpXG4gICAgOztcblxuICAgIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIEMuZmx1c2ggKCkgPj49IGZ1biAoKSAtPiByZXR1cm4gKHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uKVxuICAgIDs7XG5cbiAgICBsZXQgKCkgPVxuICAgICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSAobG9jLCB0KSAtPlxuICAgICAgICAgIGxldCBibG9ja3MsIHRyYWlsaW5nID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgICAgICAgICBFcnJvcjogcHJvZ3JhbSBleGl0ZWQgd2hpbGUgZXhwZWN0IHRlc3Qgd2FzIHJ1bm5pbmchXFxuXFxcbiAgICAgICAgICAgICBPdXRwdXQgY2FwdHVyZWQgc28gZmFyOlxcblxcXG4gICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgKEZpbGUuTmFtZS50b19zdHJpbmcgbG9jLmZpbGVuYW1lKVxuICAgICAgICAgICAgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAobG9jLnN0YXJ0X3BvcyAtIGxvYy5saW5lX3N0YXJ0KVxuICAgICAgICAgICAgKGxvYy5lbmRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpO1xuICAgICAgICAgIExpc3QuaXRlciBibG9ja3MgfmY6KGZ1biAoXywgcykgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcyk7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgdHJhaWxpbmcpXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfZmx1c2ggPyhjb3VudCA9IDApIGsgPVxuICAgICAgbGV0IG1heF9hdHRlbXB0cyA9IDEwIGluXG4gICAgICBDLmZsdXNoICgpXG4gICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICBpZiBDLmZsdXNoZWQgKClcbiAgICAgIHRoZW4gayB+YXBwZW5kOlwiXCJcbiAgICAgIGVsc2UgaWYgY291bnQgPSBtYXhfYXR0ZW1wdHNcbiAgICAgIHRoZW5cbiAgICAgICAga1xuICAgICAgICAgIH5hcHBlbmQ6XG4gICAgICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgIFwiXFxuXFxcbiAgICAgICAgICAgICAgICBTVE9QUEVEIENPTExFQ1RJTkcgT1VUUFVUIEFGVEVSICVkIEZMVVNISU5HIEFUVEVNUFNcXG5cXFxuICAgICAgICAgICAgICAgIFRIRVJFIE1VU1QgQkUgQSBCQUNLR1JPVU5EIEpPQiBQUklOVElORyBUTyBTVERPVVRcXG5cIlxuICAgICAgICAgICAgICAgbWF4X2F0dGVtcHRzKVxuICAgICAgZWxzZSBmaW5hbF9mbHVzaCB+Y291bnQ6KGNvdW50ICsgMSkga1xuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB+ZmlsZV9kaWdlc3QgfmxvY2F0aW9uIH5leHBlY3RhdGlvbnMgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiB+ZiA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgY3VycmVudF90ZXN0IDo9IFNvbWUgKGxvY2F0aW9uLCB0KTtcbiAgICAgIGxldCBmaW5hbGx5IHVuY2F1Z2h0X2V4biA9XG4gICAgICAgIEMucnVuIChmdW4gKCkgLT5cbiAgICAgICAgICBDLklPX2ZsdXNoLnRvX3J1blxuICAgICAgICAgICAgKGZpbmFsX2ZsdXNoIChmdW4gfmFwcGVuZCAtPlxuICAgICAgICAgICAgICAgY3VycmVudF90ZXN0IDo9IE5vbmU7XG4gICAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgICB0ZXN0c19ydW5cbiAgICAgICAgICAgICAgIDo9IHsgZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgIDsgZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICAgIDsgdHJhaWxpbmdfb3V0cHV0ID0gdHJhaWxpbmdfb3V0cHV0IF4gYXBwZW5kXG4gICAgICAgICAgICAgICAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDo6ICF0ZXN0c19ydW47XG4gICAgICAgICAgICAgICByZXR1cm4gKCkpKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBDLnJ1biBmIHdpdGhcbiAgICAgIHwgKCkgLT4gZmluYWxseSBOb25lXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgICAgZmluYWxseSAoU29tZSAoZXhuLCBidCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNhdmVfb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9vdXRwdXRcbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0XG5cbiAgbGV0IHJ1blxuICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgfihsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udClcbiAgICAgICAgfmFic29sdXRlX2ZpbGVuYW1lOmRlZmluZWRfaW5cbiAgICAgICAgfmRlc2NyaXB0aW9uXG4gICAgICAgIH50YWdzXG4gICAgICAgIH5leHBlY3RhdGlvbnNcbiAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICB+aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICAgIGZcbiAgICA9XG4gICAgUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLnRlc3RcbiAgICAgIH5jb25maWc6aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICB+ZGVzY3I6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKG1hdGNoIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIHMgLT4gcykpXG4gICAgICB+dGFnc1xuICAgICAgfmZpbGVuYW1lOihGaWxlLk5hbWUudG9fc3RyaW5nIGxvY2F0aW9uLmZpbGVuYW1lKVxuICAgICAgfmxpbmVfbnVtYmVyOmxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICB+c3RhcnRfcG9zOihsb2NhdGlvbi5zdGFydF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgfmVuZF9wb3M6KGxvY2F0aW9uLmVuZF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvciA9IEN1cnJlbnRfZmlsZS5nZXQgKCkgaW5cbiAgICAgICAgIGlmIGRlZmluZWRfaW4gPD4gcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJUcnlpbmcgdG8gcnVuIGFuIGV4cGVjdCB0ZXN0IGZyb20gdGhlIHdyb25nIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICAgLSB0ZXN0IGRlY2xhcmVkIGF0ICVzOiVkXFxuXFxcbiAgICAgICAgICAgICAgLSB0cnlpbmcgdG8gcnVuIGl0IGZyb20gJXNcXG5cIlxuICAgICAgICAgICAgIGRlZmluZWRfaW5cbiAgICAgICAgICAgICBsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgICAgICAgIHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICgqIFRvIGF2b2lkIGNhcHR1cmluZyBub3QteWV0IGZsdXNoZWQgZGF0YSBvZiB0aGUgc3Rkb3V0IGJ1ZmZlciAqKVxuICAgICAgICAgICBDLnJ1biAoZnVuICgpIC0+IEMuSU9fZmx1c2gudG9fcnVuIChDLmZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPX3J1biA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCByZXR1cm4geCA9IHhcbiAgbGV0IGJpbmQgdCB+ZiA9IGYgdFxuZW5kXG5cbm1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICBpbmNsdWRlIElPX3J1blxuXG4gIGxldCB0b19ydW4gdCA9IHRcbmVuZFxuXG5sZXQgc2FuaXRpemUgcyA9IHNcbmxldCBydW4gZiA9IGYgKClcbmxldCBmbHVzaGVkICgpID0gdHJ1ZSAoKiB0aGUgcnVudGltZSBmbHVzaGVkIFtzdGRvdXRdIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gKilcblxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IG9mZnNldF9fMDA2XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9pbnQgY29sX18wMDRfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29sXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZVwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogcG9zIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3BvcyA9IENhbWwuY29tcGFyZVxubGV0IGJlZ2lubmluZ19vZl9maWxlID0geyBsaW5lID0gMTsgY29sID0gMDsgb2Zmc2V0ID0gMCB9XG5sZXQgc2hpZnRfcG9zIHBvcyB+Y29scyA9IHsgcG9zIHdpdGggY29sID0gcG9zLmNvbCArIGNvbHM7IG9mZnNldCA9IHBvcy5vZmZzZXQgKyBjb2xzIH1cblxudHlwZSByYW5nZSA9XG4gIHsgc3RhcnRfcG9zIDogcG9zXG4gIDsgZW5kX3BvcyA6IHBvc1xuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcmFuZ2UgPVxuICAoZnVuIHsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMDlfOyBlbmRfcG9zID0gZW5kX3Bvc19fMDExXyB9IC0+XG4gICAgIGxldCBibmRzX18wMDhfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9wb3Mgc3RhcnRfcG9zX18wMDlfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwOF9cbiAgICAgOiByYW5nZSAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9yYW5nZSA9IENhbWwuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gYWxsb2NfbmV3X2NodW5rIHQgPVxuICAgIHQuZmlsbGVkX2NodW5rcyA8LSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcztcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDBcbiAgOztcblxuICBsZXQgYWRkX3VpbnQxNiB0IG4gPVxuICAgIGlmIHQuY2h1bmtfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gYWxsb2NfbmV3X2NodW5rIHQ7XG4gICAgQ2h1bmsuc2V0MTYgdC5jaHVuayB+cG9zOnQuY2h1bmtfcG9zIG5cbiAgOztcblxuICBsZXQgYWRkX2JpdHMgdCBuIH5udW1fYml0cyA9XG4gICAgbGV0IGludF9idWYgPSAodC5pbnRfYnVmIGxzbCBudW1fYml0cykgbG9yIG4gaW5cbiAgICBsZXQgbnVtX2JpdHMgPSB0Lm51bV9iaXRzICsgbnVtX2JpdHMgaW5cbiAgICB0LmludF9idWYgPC0gaW50X2J1ZjtcbiAgICBpZiBudW1fYml0cyA8IDE2XG4gICAgdGhlbiB0Lm51bV9iaXRzIDwtIG51bV9iaXRzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2JpdHMgPSBudW1fYml0cyAtIDE2IGluXG4gICAgICB0Lm51bV9iaXRzIDwtIG51bV9iaXRzO1xuICAgICAgYWRkX3VpbnQxNiB0IChpbnRfYnVmIGxzciBudW1fYml0cyk7XG4gICAgICB0LmNodW5rX3BvcyA8LSB0LmNodW5rX3BvcyArIDJcbiAgICAgICgqIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGJpdHMgb2YgaW50X2J1ZiB3ZSBqdXN0IHdyb3RlLCBhcyBmdXJ0aGVyIHNldDE2IHdpbGwgaWdub3JlXG4gICAgICAgICB0aGVzZSBleHRyYSBiaXRzLiAqKSlcbiAgOztcblxuICBsZXQgY29udGVudHMgdCA9XG4gICAgKCogRmx1c2ggdGhlIGN1cnJlbnQgW3QuaW50X2J1Zl0gKilcbiAgICBhZGRfdWludDE2IHQgdC5pbnRfYnVmO1xuICAgIGxldCByZXZfY2h1bmtzID0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3MgaW5cbiAgICBsZXQgY2h1bmtfcG9zID0gdC5jaHVua19wb3MgaW5cbiAgICBsZXQgZXh0cmFfYml0cyA9IHQubnVtX2JpdHMgaW5cbiAgICBsZXQgaW5pdGlhbF9wb3MgPSB0LmluaXRpYWxfcG9zIGluXG4gICAgbGF6eVxuICAgICAgeyBjaHVua3MgPSBMaXN0LnJldiByZXZfY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9ICgoTGlzdC5sZW5ndGggcmV2X2NodW5rcyAtIDEpICogQ2h1bmsubGVuZ3RoKSArIGNodW5rX3Bvc1xuICAgICAgOyBleHRyYV9iaXRzXG4gICAgICA7IGluaXRpYWxfcG9zXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGxvbmdfc2hpZnQgdCBuID1cbiAgICBsZXQgbiA9IHJlZiAobiAtIDUpIGluXG4gICAgd2hpbGUgIW4gPiAwIGRvXG4gICAgICBhZGRfYml0cyB0ICgwYjExMDBfMDAwMCBsb3IgKCFuIGxhbmQgMGIwMDAxXzExMTEpKSB+bnVtX2JpdHM6ODtcbiAgICAgIG4gOj0gIW4gbHNyIDVcbiAgICBkb25lXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiBuID49IDUgKilcbiAgbGV0W0BpbmxpbmVkIG5ldmVyXSBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgbG9uZ19zaGlmdCB0IG47XG4gICAgYWRkX2JpdHMgdCBpbnN0ciB+bnVtX2JpdHM6aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBzaGlmdDQgPSAwYjEwXzEwXzEwXzEwXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGludmFyaWFudCB0O1xuICAgIGxldCBuID0gb2Zmc2V0IC0gdC5vZmZzZXQgaW5cbiAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgMCB8IDEgfCAyIHwgMyB8IDQgLT5cbiAgICAgIGxldCBudW1fYml0cyA9IChuIGxzbCAxKSArIGluc3RyX2JpdHMgaW5cbiAgICAgIGFkZF9iaXRzIHQgKChzaGlmdDQgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0ciBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkpIH5udW1fYml0c1xuICAgIHwgNVxuICAgIHwgNlxuICAgIHwgN1xuICAgIHwgOFxuICAgIHwgOVxuICAgIHwgMTBcbiAgICB8IDExXG4gICAgfCAxMlxuICAgIHwgMTNcbiAgICB8IDE0XG4gICAgfCAxNVxuICAgIHwgMTZcbiAgICB8IDE3XG4gICAgfCAxOFxuICAgIHwgMTlcbiAgICB8IDIwXG4gICAgfCAyMVxuICAgIHwgMjJcbiAgICB8IDIzXG4gICAgfCAyNFxuICAgIHwgMjVcbiAgICB8IDI2XG4gICAgfCAyN1xuICAgIHwgMjhcbiAgICB8IDI5XG4gICAgfCAzMFxuICAgIHwgMzFcbiAgICB8IDMyXG4gICAgfCAzM1xuICAgIHwgMzRcbiAgICB8IDM1XG4gICAgfCAzNiAtPlxuICAgICAgYWRkX2JpdHNcbiAgICAgICAgdFxuICAgICAgICAoKCgwYjExMDBfMDAwMCBsb3IgKG4gLSA1KSkgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0cilcbiAgICAgICAgfm51bV9iaXRzOig4ICsgaW5zdHJfYml0cylcbiAgICB8IF8gLT5cbiAgICAgIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5hZGRfZ2VuXCI7XG4gICAgICBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBhZGQgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMCB+aW5zdHJfYml0czoxXG4gIGxldCBhZGRfdHdpY2UgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMSB+aW5zdHJfYml0czo0XG4gIGxldCBhZGRfbmV3bGluZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTEwIH5pbnN0cl9iaXRzOjRcbmVuZFxuXG50eXBlIHBvc2l0aW9ucyA9IHRcblxubW9kdWxlIEl0ZXJhdG9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiBwb3NpdGlvbnMgLT4gdFxuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgKCogW2FkdmFuY2UgdCB+c2tpcF0gaWdub3JlcyBbc2tpcF0gc2F2ZWQgcG9zaXRpb25zIGFuZCByZXR1cm5zIHRoZSBuZXh0IHNhdmVkIHBvc2l0aW9uLlxuICAgICBSYWlzZXMgW05vX21vcmVdIHdoZW4gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgcG9zaXRpb24gc2V0LiAqKVxuICB2YWwgYWR2YW5jZV9leG4gOiB0IC0+IHNraXA6aW50IC0+IHBvc1xuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNodW5rIDogQ2h1bmsudFxuICAgIDsgbXV0YWJsZSBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgICA7ICgqIFtudW1fYnl0ZXMgKiA4ICsgZXh0cmFfYml0c10gaXMgdGhlIG51bWJlciBvZiBiaXRzIGF2YWlsYWJsZSBmcm9tIFtpbnN0cl9wb3NdIGluXG4gICAgICAgICBbY2h1bmsgOjogY2h1bmtzXS4gKilcbiAgICAgIG11dGFibGUgbnVtX2J5dGVzIDogaW50XG4gICAgOyBleHRyYV9iaXRzIDogaW50XG4gICAgOyBtdXRhYmxlIGluc3RyX3BvcyA6IGludCAoKiBwb3NpdGlvbiBpbiBbY2h1bmtdICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBsaW5lIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbCA6IGludFxuICAgIDsgbXV0YWJsZSBpbnRfYnVmIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIE51bWJlciBvZiBiaXRzIG5vdCB5ZXQgY29uc3VtZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIHBlbmRpbmcgOiBwb3Mgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjcmVhdGUgKChsYXp5IHApIDogcG9zaXRpb25zKSA9XG4gICAgbWF0Y2ggcC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHsgY2h1bmtcbiAgICAgIDsgY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9IHAubnVtX2J5dGVzXG4gICAgICA7IGV4dHJhX2JpdHMgPSBwLmV4dHJhX2JpdHNcbiAgICAgIDsgaW5zdHJfcG9zID0gMFxuICAgICAgOyBvZmZzZXQgPSBwLmluaXRpYWxfcG9zLm9mZnNldFxuICAgICAgOyBsaW5lID0gcC5pbml0aWFsX3Bvcy5saW5lXG4gICAgICA7IGJvbCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0IC0gcC5pbml0aWFsX3Bvcy5jb2xcbiAgICAgIDsgaW50X2J1ZiA9IDBcbiAgICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgICA7IHBlbmRpbmcgPSBOb25lXG4gICAgICB9XG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICBsZXQgbm9fbW9yZSAoKSA9IHJhaXNlX25vdHJhY2UgTm9fbW9yZVxuXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gQ2FtbC5jb21wYXJlICh0b19hcnJheSB0MSkgKHRvX2FycmF5IHQyKVxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX3BvcyAodG9fYXJyYXkgdClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IEF0b20gb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGF0b20gOiBzdHJpbmdcbiAgICAgIDsgdW5lc2NhcGVkIDogc3RyaW5nIG9wdGlvblxuICAgICAgfVxuICB8IExpc3Qgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGVsZW1lbnRzIDogdF9vcl9jb21tZW50IGxpc3RcbiAgICAgIH1cblxuYW5kIHRfb3JfY29tbWVudCA9XG4gIHwgU2V4cCBvZiB0XG4gIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbmFuZCBjb21tZW50ID1cbiAgfCBQbGFpbl9jb21tZW50IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBjb21tZW50IDogc3RyaW5nXG4gICAgICB9XG4gIHwgU2V4cF9jb21tZW50IG9mXG4gICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICA7IGNvbW1lbnRzIDogY29tbWVudCBsaXN0XG4gICAgICA7IHNleHAgOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHJlYyBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IEF0b20geyBsb2MgPSBsb2NfXzAwMl87IGF0b20gPSBhdG9tX18wMDRfOyB1bmVzY2FwZWQgPSB1bmVzY2FwZWRfXzAwNl8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdW5lc2NhcGVkX18wMDZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVuZXNjYXBlZFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgYXRvbV9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJhdG9tXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwM18gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkF0b21cIiA6OiBibmRzX18wMDFfKVxuICAgIHwgTGlzdCB7IGxvYyA9IGxvY19fMDA5XzsgZWxlbWVudHMgPSBlbGVtZW50c19fMDExXyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDA4XyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWxlbWVudHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA4X1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMjFfID0gc2V4cF9vZl9zdHJpbmcgY29tbWVudF9fMDIwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAxOV8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAxOF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlBsYWluX2NvbW1lbnRcIiA6OiBibmRzX18wMTdfKVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGhhc2hfc2VtaV9wb3NfXzAyM19cbiAgICAgICAgOyBjb21tZW50cyA9IGNvbW1lbnRzX18wMjVfXG4gICAgICAgIDsgc2V4cCA9IHNleHBfXzAyN19cbiAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAyMl8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjhfID0gc2V4cF9vZl90IHNleHBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V4cFwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjZfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfY29tbWVudCBjb21tZW50c19fMDI1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50c1wiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjRfID0gUG9zaXRpb25zLnNleHBfb2ZfcG9zIGhhc2hfc2VtaV9wb3NfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiaGFzaF9zZW1pX3Bvc1wiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwX2NvbW1lbnRcIiA6OiBibmRzX18wMjJfKVxuICAgICAgOiBjb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlID0gQ2FtbC5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBDYW1sLmNvbXBhcmVcbmxldCBjb21wYXJlX2NvbW1lbnQgPSBDYW1sLmNvbXBhcmVcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoU2V4cC50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChTZXhwLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChTZXhwLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20geyBhdG9tOyBfIH0gLT4gayAoU2V4cC5BdG9tIGF0b20pXG4gICAgICB8IExpc3QgeyBlbGVtZW50czsgXyB9IC0+IGZvcmdldF90b2NzIGVsZW1lbnRzIChmdW4geHMgLT4gayAoU2V4cC5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YWNrX2ludGZcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBUX29yX2NvbW1lbnQgb2YgQ3N0LnRfb3JfY29tbWVudCAqIHRcbiAgICB8IE9wZW4gb2YgUG9zaXRpb25zLnBvcyAqIHRcbiAgICB8IEluX3NleHBfY29tbWVudCBvZlxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICAgIDsgcmV2X2NvbW1lbnRzIDogQ3N0LmNvbW1lbnQgbGlzdFxuICAgICAgICA7IHN0YWNrIDogdFxuICAgICAgICB9XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgZ2V0X21hbnkgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbG9vcCAodCA6OiBhY2MpIHN0YWNrXG4gICAgICB8IE9wZW4gXyB8IEluX3NleHBfY29tbWVudCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnlcIlxuICAgIGluXG4gICAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbiAgOztcbmVuZFxuXG5tb2R1bGUgSnVzdF9wb3NpdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdFxuXG4gIGxldCBlbXB0eSA9ICgpXG5lbmRcblxudHlwZSB0ID1cbiAgfCBFbXB0eVxuICB8IE9wZW4gb2YgdFxuICB8IFNleHAgb2YgU2V4cC50ICogdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgZ2V0X3NpbmdsZSA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAoc2V4cCwgRW1wdHkpIC0+IHNleHBcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGVcIlxuOztcblxubGV0IGdldF9tYW55ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IE9wZW4gXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfbWFueVwiXG4gICAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbG9vcCAoc2V4cCA6OiBhY2MpIHN0YWNrXG4gIGluXG4gIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICB8IFNleHBcbmVuZFxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQgKCoqIFN0YXJ0aW5nIHBvc2l0aW9ucyBvZiB0aGUgY3VycmVudCB0b2tlbiAqKilcbiAgICA7IG11dGFibGUgdG9rZW5fc3RhcnRfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgUG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIHVuaXQpIHRcbiAgICB8IFNleHAgOiAodW5pdCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IENzdCA6IChGb3JfY3N0LnQsIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpIHRcbmVuZFxuXG5tb2R1bGUgcmVjIFN0YXRlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgeyBtdXRhYmxlIGF1dG9tYXRvbl9zdGF0ZSA6IGludFxuICAgIDsga2luZCA6ICgndSwgJ3MpIEtpbmQudFxuICAgIDsgbXV0YWJsZSBkZXB0aCA6IGludCAoKiogTnVtYmVyIG9mIG9wZW5lZCAjfCB3aGVuIHBhcnNpbmcgYSBibG9jayBjb21tZW50ICopXG4gICAgOyBtdXRhYmxlIGJsb2NrX2NvbW1lbnRfZGVwdGggOiBpbnRcbiAgICAoKiogU3RhY2sgb2YgaWdub3JpbmcgZGVwdGhzOyB0aGUgY3VycmVudCBkZXB0aCBpcyBwdXNoZWRcbiAgICAgICAgZWFjaCB0aW1lIGEgIzsgY29tbWVudCBpcyBlbnRlcmVkLiAqKVxuICAgIDsgbXV0YWJsZSBpZ25vcmluZ19zdGFjayA6IGludCBsaXN0XG4gICAgKCoqIFdoZW4gcGFyc2luZyBhbiBlc2NhcGUgc2VxdWVuY2Ugb2YgdGhlIGZvcm0gXCJcXFxcTk5OXCIgb3IgXCJcXFxcWFhcIiwgdGhpcyBhY2N1bXVsYXRlc1xuICAgICAgICB0aGUgY29tcHV0ZWQgbnVtYmVyICopXG4gICAgOyBtdXRhYmxlIGVzY2FwZWRfdmFsdWUgOiBpbnQgKCoqIEJ1ZmZlciBmb3IgYWNjdW11bGF0aW5nIGF0b21zICopXG4gICAgOyBhdG9tX2J1ZmZlciA6IEJ1ZmZlci50XG4gICAgOyB1c2VyX3N0YXRlIDogJ3VcbiAgICA7IG1vZGUgOiAoJ3UsICdzKSBNb2RlLnRcbiAgICA7IG11dGFibGUgZnVsbF9zZXhwcyA6IGludFxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnQgKCoqIGdsb2JhbCBvZmZzZXQgKiopXG4gICAgOyBtdXRhYmxlIGxpbmVfbnVtYmVyIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbF9vZmZzZXQgOiBpbnQgKCoqIG9mZnNldCBvZiBiZWdpbm5pbmcgb2YgbGluZSAqKilcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgTW9kZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgU2luZ2xlXG4gICAgfCBNYW55XG4gICAgfCBFYWdlciBvZlxuICAgICAgICB7IGdvdF9zZXhwIDogKCd1LCAncykgU3RhdGUudCAtPiAncyAtPiAnc1xuICAgICAgICA7IG11dGFibGUgbm9fc2V4cF9pc19lcnJvciA6IGJvb2xcbiAgICAgICAgfVxuZW5kID1cbiAgTW9kZVxuXG5tb2R1bGUgdHlwZSBBdXRvbWF0b25fc3RhdGUgPSBzaWdcbiAgbW9kdWxlIENvbnRleHQgPSBDb250ZXh0XG4gIG1vZHVsZSBGb3JfY3N0ID0gRm9yX2NzdFxuICBtb2R1bGUgS2luZCA9IEtpbmRcbiAgbW9kdWxlIE1vZGUgPSBNb2RlXG4gIG1vZHVsZSBTdGF0ZSA9IFN0YXRlXG5cbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/aW5pdGlhbF9wb3M6UG9zaXRpb25zLnBvc1xuICAgIC0+ICgndSwgJ3MpIE1vZGUudFxuICAgIC0+ICgndSwgJ3MpIEtpbmQudFxuICAgIC0+ICgndSwgJ3MpIHRcblxuICB2YWwgcmVzZXQgOiA/cG9zOlBvc2l0aW9ucy5wb3MgLT4gXyB0IC0+IHVuaXRcbiAgdmFsIHBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBfKSB0IC0+IFBvc2l0aW9ucy50XG4gIHZhbCBtb2RlIDogKCd1LCAncykgdCAtPiAoJ3UsICdzKSBNb2RlLnRcblxuICAoKiogTnVtYmVyIG9mIGNoYXJhY3RlcnMgZmVkIHRvIHRoZSBwYXJzZXIgKilcbiAgdmFsIG9mZnNldCA6IF8gdCAtPiBpbnRcblxuICAoKiogUG9zaXRpb24gaW4gdGhlIHRleHQgKilcbiAgdmFsIGxpbmUgOiBfIHQgLT4gaW50XG5cbiAgdmFsIGNvbHVtbiA6IF8gdCAtPiBpbnRcblxuICAoKiogV2hldGhlciB0aGVyZSBhcmUgc29tZSB1bmNsb3NlZCBwYXJlbnRoZXNlcyAqKVxuICB2YWwgaGFzX3VuY2xvc2VkX3BhcmVuIDogKCd1LCAncykgdCAtPiBib29sXG5cbiAgdmFsIHNldF9lcnJvcl9zdGF0ZSA6IF8gdCAtPiB1bml0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBPbmx5IGZvciBjb252ZXJ0aW5nIGVycm9ycyB0byB0aGUgb2xkIHBhcnNlciBlcnJvcnMgKilcbiAgdmFsIGF0b21fYnVmZmVyIDogXyB0IC0+IEJ1ZmZlci50XG5cbiAgKCpfIEZvciBjb3ZlcmF0ZSB0ZXN0cyAqKVxuICB2YWwgYXV0b21hdG9uX3N0YXRlIDogKCd1LCAncykgdCAtPiBpbnRcbiAgdmFsIGNvbnRleHQgOiBfIHQgLT4gQ29udGV4dC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVfaW50ZlxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbm9wZW4gU3RhdGVcblxubGV0IGluaXRpYWxfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IFBvc2l0aW9ucy5wb3MgLT4gdSA9XG4gIGZ1biBraW5kIGluaXRpYWxfcG9zIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IENzdCAtPlxuICAgICgqIFt0b2tlbl9zdGFydF9wb3NdIGlzIHNldCB0byBhIGR1bW15IGxvY2F0aW9uIGhlcmUuIEl0IGlzIHByb3Blcmx5IHNldCB3aGVuIHdlXG4gICAgICAgc3RhcnQgdG8gY2FwdHVyZSBhIHRva2VuIGZyb20gdGhlIGlucHV0ICopXG4gICAgeyB0b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyODsgdG9rZW5fc3RhcnRfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlIH1cbjs7XG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fc3RhdGUucHJpbnRfY29uc3RhbnRzICgpICopXG5sZXQgaW5pdGlhbF9zdGF0ZSA9IDBcbmxldCBlcnJvcl9zdGF0ZSA9IDFcblxuKCokKilcblxubGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSBtb2RlIGtpbmQgPVxuICB7IGtpbmRcbiAgOyBkZXB0aCA9IDBcbiAgOyBhdXRvbWF0b25fc3RhdGUgPSBpbml0aWFsX3N0YXRlXG4gIDsgYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgOyBpZ25vcmluZ19zdGFjayA9IFtdXG4gIDsgZXNjYXBlZF92YWx1ZSA9IDBcbiAgOyBhdG9tX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4XG4gIDsgdXNlcl9zdGF0ZSA9IGluaXRpYWxfdXNlcl9zdGF0ZSBraW5kIGluaXRpYWxfcG9zXG4gIDsgbW9kZVxuICA7IGZ1bGxfc2V4cHMgPSAwXG4gIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gIDsgbGluZV9udW1iZXIgPSBpbml0aWFsX3Bvcy5saW5lXG4gIDsgYm9sX29mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldCAtIGluaXRpYWxfcG9zLmNvbFxuICB9XG47O1xuXG5sZXQgbW9kZSB0ID0gdC5tb2RlXG5sZXQgcG9zaXRpb25zIHQgPSBQb3NpdGlvbnMuQnVpbGRlci5jb250ZW50cyB0LnVzZXJfc3RhdGVcbmxldCBhdG9tX2J1ZmZlciB0ID0gdC5hdG9tX2J1ZmZlclxubGV0IG9mZnNldCBzdGF0ZSA9IHN0YXRlLm9mZnNldFxubGV0IGxpbmUgc3RhdGUgPSBzdGF0ZS5saW5lX251bWJlclxubGV0IGNvbHVtbiBzdGF0ZSA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbmxldCBwb3NpdGlvbiB0ID0geyBQb3NpdGlvbnMuY29sID0gY29sdW1uIHQ7IGxpbmUgPSBsaW5lIHQ7IG9mZnNldCA9IG9mZnNldCB0IH1cblxubGV0IHJlc2V0X3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIHQgLT4gdW5pdCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgQ3N0IC0+IEJ1ZmZlci5jbGVhciB0LnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyXG47O1xuXG5sZXQgcmVzZXQgPyhwb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIHQgPVxuICB0LmRlcHRoIDwtIDA7XG4gIHQuYXV0b21hdG9uX3N0YXRlIDwtIGluaXRpYWxfc3RhdGU7XG4gIHQuYmxvY2tfY29tbWVudF9kZXB0aCA8LSAwO1xuICB0Lmlnbm9yaW5nX3N0YWNrIDwtIFtdO1xuICB0LmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgdC5mdWxsX3NleHBzIDwtIDA7XG4gIHQub2Zmc2V0IDwtIHBvcy5vZmZzZXQ7XG4gIHQubGluZV9udW1iZXIgPC0gcG9zLmxpbmU7XG4gIHQuYm9sX29mZnNldCA8LSBwb3Mub2Zmc2V0IC0gcG9zLmNvbDtcbiAgcmVzZXRfdXNlcl9zdGF0ZSB0O1xuICBCdWZmZXIuY2xlYXIgdC5hdG9tX2J1ZmZlclxuOztcblxubGV0IGNvbnRleHQgc3RhdGUgOiBDb250ZXh0LnQgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgXyA6OiBfIC0+IFNleHBfY29tbWVudFxuICB8IFtdIC0+IFNleHBcbjs7XG5cbmxldCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgPSBzdGF0ZS5kZXB0aCA+IDBcbmxldCBzZXRfZXJyb3Jfc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0gZXJyb3Jfc3RhdGVcbmxldCBhdXRvbWF0b25fc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgUmVhc29uID0gc3RydWN0XG4gICgqXyBTb21lIG9mIHRoZXNlIGNvbWUgZnJvbSBbUGFyc2V4cF9zeW1ib2xpY19hdXRvbWF0b24uUGFyc2VfZXJyb3JfcmVhc29uXS4gKilcbiAgdHlwZSB0ID1cbiAgICAoKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fcGFyc2VfZXJyb3IucHJpbnRfY29uc3RydWN0b3JzICgpICopXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xuICAgICgqJCopXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2VcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXRcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgICB8IFRvb19tYW55X3NleHBzXG4gICAgfCBVbmNsb3NlZF9wYXJlblxuZW5kXG5cbm1vZHVsZSB0eXBlIFBhcnNlX2Vycm9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCBwb3NpdGlvbiA6IHQgLT4gUG9zaXRpb25zLnBvc1xuICB2YWwgbWVzc2FnZSA6IHQgLT4gc3RyaW5nXG5cbiAgKCoqIFJlcG9ydCBhbiBlcnJvciBpbiBhIHN0eWxlIHNpbWlsYXIgdG8gT0NhbWwsIGZvciBpbnN0YW5jZTpcblxuICAgICAgRmlsZSBcImJsYWhcIiwgbGluZSA0MiwgY2hhcmFjdGVyIDEwOlxuICAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xuICAgICAgdW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmcuXG4gICopXG4gIHZhbCByZXBvcnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGZpbGVuYW1lOnN0cmluZyAtPiB0IC0+IHVuaXRcblxuICBleGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdFxuXG4gICgqKi8qKilcblxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICAgICgqKiBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgb2xkIHBhcnNlciBzb21ldGltZXMgcmFpc2VkIFtGYWlsdXJlXSBhbmQgc29tZXRpbWVzXG4gICAgICAgIHJhaXNlZCBbUGFyc2VfZXJyb3JdICopXG4gICAgdmFsIG9sZF9wYXJzZXJfZXhuIDogdCAtPiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cblxuICAgIHZhbCByYWlzZSA6IFJlYXNvbi50IC0+IFBvc2l0aW9ucy5wb3MgLT4gYXRfZW9mOmJvb2wgLT4gYXRvbV9idWZmZXI6QnVmZmVyLnQgLT4gJ2FcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBQYXJzZV9lcnJvcl9pbnRmXG5cbnR5cGUgdCA9XG4gIHsgcG9zaXRpb24gOiBQb3NpdGlvbnMucG9zXG4gIDsgbWVzc2FnZSA6IHN0cmluZ1xuICA7IG9sZF9wYXJzZXJfZXhuIDogWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG4gIH1cblxubGV0IHNleHBfb2ZfdCB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biA9IF8gfSA6IFNleHAudCA9XG4gIExpc3RcbiAgICBbIExpc3QgWyBBdG9tIFwicG9zaXRpb25cIjsgUG9zaXRpb25zLnNleHBfb2ZfcG9zIHBvc2l0aW9uIF1cbiAgICA7IExpc3QgWyBBdG9tIFwibWVzc2FnZVwiOyBzZXhwX29mX3N0cmluZyBtZXNzYWdlIF1cbiAgICBdXG47O1xuXG5sZXQgcG9zaXRpb24gdCA9IHQucG9zaXRpb25cbmxldCBtZXNzYWdlIHQgPSB0Lm1lc3NhZ2VcbmxldCBvbGRfcGFyc2VyX2V4biB0ID0gdC5vbGRfcGFyc2VyX2V4blxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBwb3MgPSBwb3NpdGlvbiB0IGluXG4gIGxldCBtc2cgPSBtZXNzYWdlIHQgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVyICVkOlxcbkVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcXG4lc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBwb3MubGluZVxuICAgIHBvcy5jb2xcbiAgICBtc2dcbjs7XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBzZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGFyc2VfZXJyb3IubWwuUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSAocmVhc29uIDogUmVhc29uLnQpIHBvc2l0aW9uIH5hdF9lb2YgfmF0b21fYnVmZmVyID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgICgqIFRoZXNlIG1lc3NhZ2VzIHdoZXJlIGNob29zZW4gc3VjaCB0aGF0IHdlIGNhbiBidWlsZCB0aGUgdmFyaW91cyBTZXhwbGliIHBhcnNpbmdcbiAgICAgICBmdW5jdGlvbnMgb24gdG9wIG9mIFBhcnNleHAgYW5kIGtlZXAgdGhlIHNhbWUgZXhjZXB0aW9ucy5cblxuICAgICAgIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcywgYSBzaW1wbGUgbGF5ZXIgb24gdG9wIG9mIHBhcnNleHAgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgIHNleHBsaWIgQVBJIGlzIHBhc3NpbmcgYWxsIHRoZSBzZXhwbGliIHRlc3RzLlxuXG4gICAgICAgTm90ZSB0aGF0IHBhcnNleHAgbWF0Y2hlcyB0aGUgc2VtYW50aWMgb2YgU2V4cC5wYXJzZSB3aGljaCBpcyBzbGlnaHRseVxuICAgICAgIGRpZmZlcmVudCBmcm9tIHRoZSBvY2FtbGxleC9vY2FtbHlhY2MgYmFzZWQgcGFyc2VyIG9mIFNleHBsaWIuIFRoZSBsYXR0ZXIgb25lXG4gICAgICAgaXMgbGVzcyB0ZXN0ZWQgYW5kIGFzc3VtZWQgdG8gYmUgbGVzcyB1c2VkLiAqKVxuICAgIG1hdGNoIHJlYXNvbiB3aXRoXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nIC0+IFwidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmdcIlxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnQgLT4gXCJ1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFwiXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlIC0+IFwiZXNjYXBlIHNlcXVlbmNlIGluIHF1b3RlZCBzdHJpbmcgb3V0IG9mIHJhbmdlXCJcbiAgICB8IFVuY2xvc2VkX3BhcmVuIC0+IFwidW5jbG9zZWQgcGFyZW50aGVzZXMgYXQgZW5kIG9mIGlucHV0XCJcbiAgICB8IFRvb19tYW55X3NleHBzIC0+IFwicy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGFcIlxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkIC0+IFwidW5leHBlY3RlZCBjaGFyYWN0ZXI6ICcpJ1wiXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20gLT5cbiAgICAgIGlmIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIlxuICAgICAgdGhlbiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIlxuICAgICAgZWxzZSBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIlxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cCAtPiBcInVudGVybWluYXRlZCBzZXhwIGNvbW1lbnRcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3IgLT5cbiAgICAgIGlmIGF0X2VvZlxuICAgICAgdGhlbiBcInVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgICBlbHNlIFwidW5leHBlY3RlZCBjaGFyYWN0ZXIgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXQgLT4gXCJubyBzLWV4cHJlc3Npb24gZm91bmQgaW4gaW5wdXRcIlxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5QYXJzZXJfYXV0b21hdG9uOiBwYXJzZXIgaXMgZGVhZFwiXG4gIGluXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9XG4gICAgbWF0Y2ggcmVhc29uLCBhdF9lb2Ygd2l0aFxuICAgIHwgVG9vX21hbnlfc2V4cHMsIF8gfCBfLCB0cnVlIC0+IGBGYWlsdXJlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20sIF9cbiAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiIC0+IGBGYWlsdXJlXG4gICAgfCBfIC0+IGBQYXJzZV9lcnJvclxuICBpblxuICByYWlzZSAoUGFyc2VfZXJyb3IgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gfSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPSBvbGRfcGFyc2VyX2V4blxuICBsZXQgcmFpc2UgPSByYWlzZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXV0b21hdG9uX3N0YXRlXG5vcGVuIFN0YXRlXG5cbmxldCByYWlzZV9lcnJvciA6IHR5cGUgYSBiLiAoYSwgYikgQXV0b21hdG9uX3N0YXRlLnQgLT4gXyA9XG4gIGZ1biBzdGF0ZSB+YXRfZW9mIHJlYXNvbiAtPlxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIFBhcnNlX2Vycm9yLlByaXZhdGUucmFpc2VcbiAgICByZWFzb25cbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuICAgIH5hdF9lb2ZcbiAgICB+YXRvbV9idWZmZXI6c3RhdGUuYXRvbV9idWZmZXJcbjs7XG5cbnR5cGUgbm9ucmVjIGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuQ29udGV4dC50ID1cbiAgfCBTZXhwX2NvbW1lbnRcbiAgfCBTZXhwXG5cbmxldCBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLmNvbnRleHRcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiAncyAtPiAnc1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuZW5kXG5cbm1vZHVsZSBFcHNpbG9uID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+ICdzIC0+ICdzXG5cbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuICBlbmRcbmVuZFxuXG5sZXQgY3VycmVudF9wb3MgPyhkZWx0YSA9IDApIHN0YXRlIDogUG9zaXRpb25zLnBvcyA9XG4gIGxldCBvZmZzZXQgPSBzdGF0ZS5vZmZzZXQgKyBkZWx0YSBpblxuICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlcjsgY29sID0gb2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldDsgb2Zmc2V0IH1cbjs7XG5cbmxldCBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIHggPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0geFxubGV0IGFkdmFuY2Ugc3RhdGUgPSBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgMVxuXG5sZXQgYWR2YW5jZV9lb2wgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbGV0IG5ld2xpbmVfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gIHN0YXRlLm9mZnNldCA8LSBuZXdsaW5lX29mZnNldCArIDE7XG4gIHN0YXRlLmJvbF9vZmZzZXQgPC0gc3RhdGUub2Zmc2V0O1xuICBzdGF0ZS5saW5lX251bWJlciA8LSBzdGF0ZS5saW5lX251bWJlciArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoXG5cbmxldCBhZGRfdG9rZW5fY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGFkZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBzdGFja1xuOztcblxubGV0IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGlzX2lnbm9yaW5nIHN0YXRlID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cCAtPiBmYWxzZVxuICB8IFNleHBfY29tbWVudCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfbm90X2lnbm9yaW5nIHN0YXRlID0gbm90IChpc19pZ25vcmluZyBzdGF0ZSlcblxubGV0IGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGUgPVxuICBsZXQgaXNfc2luZ2xlID1cbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IFNpbmdsZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGlzX3NpbmdsZSAmJiBzdGF0ZS5mdWxsX3NleHBzID4gMCAmJiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFRvb19tYW55X3NleHBzXG47O1xuXG5sZXQgYWRkX3BvcyBzdGF0ZSB+ZGVsdGEgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5hZGQgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgKyBkZWx0YSlcbjs7XG5cbmxldCBhZGRfZmlyc3RfY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjaGFyO1xuICAoKiBGb3Igbm9uLXF1b3RlZCBhdG9tcywgd2Ugc2F2ZSBib3RoIHBvc2l0aW9ucyBhdCB0aGUgZW5kLiBXZSBjYW4gYWx3YXlzIGRldGVybWluZSB0aGVcbiAgICAgc3RhcnQgcG9zaXRpb24gZnJvbSB0aGUgZW5kIHBvc2l0aW9uIGFuZCB0aGUgYXRvbSBsZW5ndGggZm9yIG5vbi1xdW90ZWQgYXRvbXMuXG5cbiAgICAgRG9pbmcgaXQgdGhpcyB3YXkgYWxsb3dzIHVzIHRvIGRldGVjdCBzaW5nbGUgY2hhcmFjYXRlciBhdG9tcyBmb3Igd2hpY2ggd2UgbmVlZCB0b1xuICAgICBzYXZlIHRoZSBwb3NpdGlvbiB0d2ljZS4gKilcbiAgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnIyc7XG4gIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfcXVvdGVkX3N0cmluZyA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJ1wiJztcbiAgICBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfZXNjYXBlZCBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IGMnID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICduJyAtPiAnXFxuJ1xuICAgIHwgJ3InIC0+ICdcXHInXG4gICAgfCAnYicgLT4gJ1xcYidcbiAgICB8ICd0JyAtPiAnXFx0J1xuICAgIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXCInIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxcXCc7XG4gICAgICBjXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjJztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxyJztcbiAgc3RhY2tcbjs7XG5cbmxldCBkZWNfdmFsIGMgPSBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcblxubGV0IGhleF92YWwgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gIHwgJ2EnIC4uICdmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICB8IF8gLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbjs7XG5cbmxldCBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IG9wZW5pbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gT3BlbiBzdGFjayBlbHNlIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgIHRoZW4gKFxuICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIE9wZW4gc3RhY2spXG4gICAgZWxzZSBzdGFja1xuICB8IENzdCAtPiBPcGVuIChjdXJyZW50X3BvcyBzdGF0ZSwgc3RhY2spXG47O1xuXG5sZXQgZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIucmVzZXRcbiAgICBzdGF0ZS51c2VyX3N0YXRlXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbjs7XG5cbmxldCByZXNldF9wb3NpdGlvbnMgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cCAtPiAoKVxuICB8IENzdCAtPiAoKVxuOztcblxubGV0IHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgfCBTaW5nbGUgfCBNYW55IC0+IHN0YWNrXG4gIHwgRWFnZXIgeyBnb3Rfc2V4cCA9IGY7IF8gfSAtPlxuICAgICgqIE1vZGlmeSB0aGUgb2Zmc2V0IHNvIHRoYXQgW2ZdIGdldCBhIHN0YXRlIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnRcbiAgICAgICBzLWV4cHJlc3Npb24gKilcbiAgICBsZXQgc2F2ZWRfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gICAgc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIGRlbHRhO1xuICAgIGxldCBzYXZlZF9mdWxsX3NleHBzID0gc3RhdGUuZnVsbF9zZXhwcyBpblxuICAgIChtYXRjaCBmIHN0YXRlIHN0YWNrIHdpdGhcbiAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgICAgICByYWlzZSBlXG4gICAgIHwgc3RhY2sgLT5cbiAgICAgICAoKiBUaGlzIGFzc2VydCBpcyBub3QgYSBmdWxsIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgdXNlciBtdXRhdGluZyB0aGUgc3RhdGUgYnV0XG4gICAgICAgICAgaXQgc2hvdWxkIGNhdGNoIG1vc3QgY2FzZXMuICopXG4gICAgICAgYXNzZXJ0IChzdGF0ZS5vZmZzZXQgPSBzYXZlZF9vZmZzZXQgKyBkZWx0YSAmJiBzdGF0ZS5mdWxsX3NleHBzID0gc2F2ZWRfZnVsbF9zZXhwcyk7XG4gICAgICAgc3RhdGUub2Zmc2V0IDwtIHNhdmVkX29mZnNldDtcbiAgICAgICByZXNldF9wb3NpdGlvbnMgc3RhdGU7XG4gICAgICAgc3RhY2spXG47O1xuXG5sZXQgaXNfdG9wX2xldmVsIHN0YXRlID0gaXNfbm90X2lnbm9yaW5nIHN0YXRlICYmIHN0YXRlLmRlcHRoID0gMFxuXG5sZXQgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSBlbHNlIHN0YWNrXG47O1xuXG5sZXQgbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogX3RsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA+IHN0YXRlLmRlcHRoIC0+XG4gICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiB0bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPSBzdGF0ZS5kZXB0aCAtPlxuICAgIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHRsO1xuICAgIHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc2V4cF9hZGRlZCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gcyAtPiBkZWx0YTppbnQgLT4gcyA9XG4gIGZ1biBzdGF0ZSBzdGFjayB+ZGVsdGEgLT5cbiAgbGV0IGlzX2NvbW1lbnQgPSBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgaW5cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlXG4gIHRoZW4gKFxuICAgIGlmIG5vdCBpc19jb21tZW50IHRoZW4gc3RhdGUuZnVsbF9zZXhwcyA8LSBzdGF0ZS5mdWxsX3NleHBzICsgMTtcbiAgICBpZiAobm90IGlzX2NvbW1lbnQpXG4gICAgICAgfHxcbiAgICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgICB8IENzdCAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhXG4gICAgZWxzZSBzdGFjaylcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBtYWtlX2xpc3QgYWNjIDogQXV0b21hdG9uX3N0YWNrLnQgLT4gQXV0b21hdG9uX3N0YWNrLnQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IE9wZW4gc3RhY2sgLT4gU2V4cCAoTGlzdCBhY2MsIHN0YWNrKVxuICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBtYWtlX2xpc3QgKHNleHAgOjogYWNjKSBzdGFja1xuOztcblxubGV0IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IChzdGFjayA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpXG4gIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9XG4gIG1hdGNoIHN0YWNrIHdpdGhcbiAgfCBJbl9zZXhwX2NvbW1lbnQgciAtPlxuICAgIEluX3NleHBfY29tbWVudCB7IHIgd2l0aCByZXZfY29tbWVudHMgPSBjb21tZW50IDo6IHIucmV2X2NvbW1lbnRzIH1cbiAgfCBfIC0+IFRfb3JfY29tbWVudCAoQ29tbWVudCBjb21tZW50LCBzdGFjaylcbjs7XG5cbmxldCBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyByZXZfY29tbWVudHM7IHN0YWNrIH0gLT5cbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBTZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyBjb21tZW50cyA9IExpc3QucmV2IHJldl9jb21tZW50czsgc2V4cCB9XG4gICAgICBpblxuICAgICAgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2tcbiAgICB8IHN0YWNrIC0+IFRfb3JfY29tbWVudCAoU2V4cCBzZXhwLCBzdGFjaylcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0X2NzdCBlbmRfcG9zIGFjYyA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgKHQgOjogYWNjKSBzdGFja1xuICAgIHwgT3BlbiAoc3RhcnRfcG9zLCBzdGFjaykgLT5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBMaXN0IHsgbG9jID0geyBzdGFydF9wb3M7IGVuZF9wb3MgfTsgZWxlbWVudHMgPSBhY2MgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgICB8IEVtcHR5IHwgSW5fc2V4cF9jb21tZW50IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2xvc2luZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwXG4gIHRoZW4gKFxuICAgIGxldCBzdGFjayA6IHMgPVxuICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgICAoKiBOb3RlIHdlIHN0b3JlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlIGluIFtQb3NpdGlvbnMudF0sIHNvIHdlIHVzZSBbZGVsdGE6MF0sXG4gICAgICAgICAgIHdoaWxlIGluIHRoZSBbQ3N0XSBjYXNlIHdlIHNhdmUgZGlyZWN0bHkgdGhlIGZpbmFsIHJhbmdlcywgc28gd2UgdXNlXG4gICAgICAgICAgIFtkZWx0YToxXS4gKilcbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgc3RhY2tcbiAgICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBtYWtlX2xpc3QgW10gc3RhY2sgZWxzZSBzdGFja1xuICAgICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICAgIG1ha2VfbGlzdCBbXSBzdGFjaylcbiAgICAgICAgZWxzZSBzdGFja1xuICAgICAgfCBDc3QgLT4gbWFrZV9saXN0X2NzdCAoY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjEpIFtdIHN0YWNrXG4gICAgaW5cbiAgICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCAtIDE7XG4gICAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgZWxzZSByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuOztcblxubGV0IG1ha2VfbG9jID8oZGVsdGEgPSAwKSAoc3RhdGUgOiAoQXV0b21hdG9uX3N0YXRlLkZvcl9jc3QudCwgXykgQXV0b21hdG9uX3N0YXRlLnQpXG4gIDogUG9zaXRpb25zLnJhbmdlXG4gID1cbiAgeyBzdGFydF9wb3MgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvczsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YSB9XG47O1xuXG4oKiBUaGlzIGlzIGFsd2F5cyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uIGV4YWN0bHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhXG4gICBub24tcXVvdGVkIGF0b20gKilcbmxldCBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGF0b20gaW5cbiAgaWYgbGVuID0gMVxuICB0aGVuIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF90d2ljZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCAtIDEpXG4gIGVsc2UgKFxuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtbGVuKTtcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLTEpKVxuOztcblxubGV0IGVwc19wdXNoX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgbG9jIDogUG9zaXRpb25zLnJhbmdlID1cbiAgICAgICAgeyBzdGFydF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC1TdHJpbmcubGVuZ3RoIHN0cilcbiAgICAgICAgOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjBcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBBdG9tIHsgbG9jOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHN0ciB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgcHVzaF9xdW90ZWRfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXCInO1xuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IHNleHAgOiBDc3QudCA9XG4gICAgICAgIEF0b20geyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzIH1cbiAgICAgIGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxXG47O1xuXG5sZXQgc3RhcnRfc2V4cF9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHN0YXRlLmRlcHRoIDo6IHN0YXRlLmlnbm9yaW5nX3N0YWNrO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnRcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpOyByZXZfY29tbWVudHMgPSBbXTsgc3RhY2sgfVxuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBzdGFydF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDFcbiAgICB0aGVuIChcbiAgICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICcjJyk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbjs7XG5cbmxldCBlbmRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggLSAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgY29tbWVudCA9IHMgfVxuICAgICAgaW5cbiAgICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgZW5kX2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID0gUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlOyBjb21tZW50ID0gcyB9IGluXG4gICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IGVwc19lb2lfY2hlY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgVW5jbG9zZWRfcGFyZW47XG4gIGlmIGlzX2lnbm9yaW5nIHN0YXRlIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFNleHBfY29tbWVudF93aXRob3V0X3NleHA7XG4gIGlmIHN0YXRlLmZ1bGxfc2V4cHMgPSAwXG4gIHRoZW4gKFxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgTWFueSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IGZhbHNlOyBfIH0gLT4gKClcbiAgICB8IFNpbmdsZSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IHRydWU7IF8gfSAtPlxuICAgICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIE5vX3NleHBfZm91bmRfaW5faW5wdXQpO1xuICBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX2F0b21cbiAgfCBQYXJzaW5nX2xpc3RcbiAgfCBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfYXRvbSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2F0b21cIlxuICAgIHwgUGFyc2luZ19saXN0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbGlzdFwiXG4gICAgfCBQYXJzaW5nX3NleHBfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3NleHBfY29tbWVudFwiXG4gICAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19ibG9ja19jb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbWF0Y2ggc2V4cF9vZl90IHQgd2l0aFxuICB8IEF0b20gcyAtPiBzXG4gIHwgTGlzdCBfIC0+IGZhaWx3aXRoIFwiQlVHOiBbc2V4cF9vZl90XSByZXR1cm5lZCBhIFtMaXN0IF9dXCJcbjs7XG4iLCJvcGVuIEF1dG9tYXRvbl9hY3Rpb25cblxubGV0IHJhaXNlID0gQXV0b21hdG9uX2FjdGlvbi5yYWlzZV9lcnJvclxuXG50eXBlIHUnXG50eXBlIHMnXG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fdGFibGVzLnByaW50X2NvZGUgKCkgKilcbmxldCB0cl8wMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDBfZiB9XG5cbmxldCB0cl8wMV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMV9mIH1cblxubGV0IHRyXzAyX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMl9mIH1cblxubGV0IHRyXzAzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAzX2YgfVxuXG5sZXQgdHJfMDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDRfZiB9XG5cbmxldCB0cl8wNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNV9mIH1cblxubGV0IHRyXzA2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA2X2YgfVxuXG5sZXQgdHJfMDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDdfZiB9XG5cbmxldCB0cl8wOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA4X2YgfVxuXG5sZXQgdHJfMDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA5X2YgfVxubGV0IHRyXzEwX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyXzEwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMF9mIH1cbmxldCB0cl8xMV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyXzExIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMV9mIH1cblxubGV0IHRyXzEyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEyX2YgfVxuXG5sZXQgdHJfMTNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xM19mIH1cblxubGV0IHRyXzE0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE0X2YgfVxuXG5sZXQgdHJfMTVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNV9mIH1cblxubGV0IHRyXzE2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTZfZiB9XG5cbmxldCB0cl8xN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xN19mIH1cblxubGV0IHRyXzE4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMThfZiB9XG5cbmxldCB0cl8xOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE5X2YgfVxuXG5sZXQgdHJfMjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIwX2YgfVxuXG5sZXQgdHJfMjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjFfZiB9XG5cbmxldCB0cl8yMl9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbjs7XG5cbmxldCB0cl8yMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjJfZiB9XG5cbmxldCB0cl8yM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjNfZiB9XG5cbmxldCB0cl8yNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNF9mIH1cblxubGV0IHRyXzI1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjVfZiB9XG5cbmxldCB0cl8yNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNl9mIH1cblxubGV0IHRyXzI3X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjdfZiB9XG5cbmxldCB0cl8yOF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOF9mIH1cblxubGV0IHRyXzI5X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjlfZiB9XG5cbmxldCB0cl8zMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMwX2YgfVxuXG5sZXQgdHJfMzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzFfZiB9XG5cbmxldCB0cl8zMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMyX2YgfVxuXG5sZXQgdHJfMzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zM19mIH1cblxubGV0IHRyXzM0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3NleHBfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzRfZiB9XG5cbmxldCB0cl8zNV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzVfZiB9XG5cbmxldCB0cl8zNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzZfZiB9XG5cbmxldCB0cl8zN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM3X2YgfVxuXG5sZXQgdHJfMzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzhfZiB9XG5cbmxldCB0cl8zOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzlfZiB9XG5cbmxldCB0cl80MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZXNjYXBlZCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDBfZiB9XG5cbmxldCB0cl80MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MV9mIH1cblxubGV0IHRyXzQyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDJfZiB9XG5cbmxldCB0cl80M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDNfZiB9XG5cbmxldCB0cl80NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ0X2YgfVxuXG5sZXQgdHJfNDVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NV9mIH1cblxubGV0IHRyXzQ2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Nl9mIH1cblxubGV0IHRyXzQ3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDdfZiB9XG5cbmxldCB0cl80OF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG47O1xuXG5sZXQgdHJfNDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ4X2YgfVxuXG5sZXQgdHJfNDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ5X2YgfVxuXG5sZXQgdHJfNTBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MF9mIH1cblxubGV0IHRyXzUxX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbjs7XG5cbmxldCB0cl81MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTFfZiB9XG5cbmxldCB0cl81Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTJfZiB9XG5cbmxldCB0cl81M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUzX2YgfVxuXG5sZXQgdHJfNTRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU0X2YgfVxuXG5sZXQgdHJfNTVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NV9mIH1cblxubGV0IHRyXzU2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTZfZiB9XG5cbmxldCB0cl81N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81N19mIH1cblxubGV0IHRyXzU4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OF9mIH1cblxubGV0IHRyXzU5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTlfZiB9XG5cbmxldCB0cl82MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MF9mIH1cblxubGV0IHRyXzYxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjFfZiB9XG5cbmxldCB0cl82Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYyX2YgfVxuXG5sZXQgdHJfNjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82M19mIH1cblxubGV0IHRyXzY0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAoaWYgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA8PiAwIHRoZW4gMTYgZWxzZSAwKTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjRfZiB9XG5cbmxldCB0cl82NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NV9mIH1cblxubGV0IHRyXzY2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjZfZiB9XG5cbmxldCB0cl82N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82N19mIH1cblxubGV0IHRyXzY4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjhfZiB9XG5cbmxldCB0cl82OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjlfZiB9XG5cbmxldCB0cl83MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcwX2YgfVxuXG5sZXQgdHJfNzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MV9mIH1cblxubGV0IHRyXzcyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzJfZiB9XG5cbmxldCB0cl83M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzczX2YgfVxuXG5sZXQgdHJfNzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc0X2YgfVxuXG5sZXQgdHJfNzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NV9mIH1cblxubGV0IHRyXzc2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzZfZiB9XG5cbmxldCB0cl83N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc3X2YgfVxuXG5sZXQgdHJfNzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzhfZiB9XG5sZXQgdHJfZW9pXzAwX2Ygc3RhdGUgc3RhY2sgPSBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG5sZXQgdHJfZW9pXzAwIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMF9mIH1cbmxldCB0cl9lb2lfMDFfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfZW9pXzAxIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMV9mIH1cbmxldCB0cl9lb2lfMDJfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl9lb2lfMDIgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAyX2YgfVxuXG5sZXQgdHJfZW9pXzAzX2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDMgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAzX2YgfVxuXG5sZXQgdHJfZW9pXzA0X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDQgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA0X2YgfVxuXG5sZXQgdHJfZW9pXzA1X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDUgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA1X2YgfVxubGV0IHRyX2VvaV8wNl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xubGV0IHRyX2VvaV8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDZfZiB9XG5sZXQgdHJfZW9pXzA3X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG5sZXQgdHJfZW9pXzA3IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wN19mIH1cblxubGV0IHRyYW5zaXRpb25zID1cbiAgW3wgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDNcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDRcbiAgIDsgdHJfMDVcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDZcbiAgIDsgdHJfMDdcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDhcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDlcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjRcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjVcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjhcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjlcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzBcbiAgIDsgdHJfMzFcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzJcbiAgIDsgdHJfMzNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzRcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzVcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzdcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzhcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzlcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDJcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDRcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDZcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDdcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTZcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTdcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNThcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfMzVcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjVcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjZcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjhcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzBcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzhcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgfF1cbjs7XG5cbmxldCB0cmFuc2l0aW9uc19lb2kgPVxuICBbfCB0cl9lb2lfMDBcbiAgIDsgdHJfZW9pXzAxXG4gICA7IHRyX2VvaV8wMlxuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDRcbiAgIDsgdHJfZW9pXzA1XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICB8XVxuOztcblxubGV0IG9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgYXJyYXkgPVxuICBbfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgfF1cbjs7XG4oKiQqKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlXG5cbmxldCBmZWVkICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSBjaGFyIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBpZHggPSAoYXV0b21hdG9uX3N0YXRlIHN0YXRlIGxzbCA4KSBsb3IgQ2hhci5jb2RlIGNoYXIgaW5cbiAgQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9ucy4oaWR4KS5mIHN0YXRlIGNoYXIgc3RhY2tcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZmVlZF9lb2kgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBzdGFjayA9IEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnNfZW9pLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpLmYgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50ID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cF9jb21tZW50IC0+IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgU2V4cCAtPlxuICAgIChtYXRjaFxuICAgICAgICggQXV0b21hdG9uX3RhYmxlcy5vbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcy4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKVxuICAgICAgICwgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlIClcbiAgICAgd2l0aFxuICAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSwgdHJ1ZSAtPiBQYXJzaW5nX2xpc3RcbiAgICAgfCBzLCBfIC0+IHMpXG47O1xuXG5sZXQgcmVjIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgZmVlZF9zdWJzdHJpbmcgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJzdHJpbmdcIjtcbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N1YmJ5dGVzIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IEJ5dGVzLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJieXRlc1wiO1xuICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdHJpbmcgc3RhdGUgc3RyIHN0YWNrID1cbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChTdHJpbmcubGVuZ3RoIHN0cilcbjs7XG5cbmxldCBmZWVkX2J5dGVzIHN0YXRlIHN0ciBzdGFjayA9IGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChCeXRlcy5sZW5ndGggc3RyKVxuXG5sZXQgZW1wdHlfc3RhY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBzID0gZnVuY3Rpb25cbiAgfCBTZXhwIC0+IFN0YWNrLmVtcHR5XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBTdGFjay5lbXB0eVxuICB8IFBvc2l0aW9ucyAtPiBTdGFjay5KdXN0X3Bvc2l0aW9ucy5lbXB0eVxuICB8IENzdCAtPiBTdGFjay5Gb3JfY3N0LmVtcHR5XG47O1xuXG5sZXQgb2Zfc3Vic3RyaW5nICh0eXBlIHUgcykgKG1vZGUgOiAodSwgcykgTW9kZS50KSAoa2luZCA6ICh1LCBzKSBLaW5kLnQpIHMgfnBvcyB+bGVuID1cbiAgbGV0IHN0YXRlID0gY3JlYXRlIG1vZGUga2luZCBpblxuICBsZXQgc3RhY2sgPSBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzIH5wb3MgfmxlbiAoZW1wdHlfc3RhY2sga2luZCkgaW5cbiAgc3RhdGUsIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgdXNlcl9leG4gOiBleG5cbiAgOyBzdWJfc2V4cCA6IFNleHAudFxuICA7IGxvY2F0aW9uIDogUG9zaXRpb25zLnJhbmdlIG9wdGlvblxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW4geyB1c2VyX2V4biA9IHVzZXJfZXhuX18wMDJfOyBzdWJfc2V4cCA9IHN1Yl9zZXhwX18wMDRfOyBsb2NhdGlvbiA9IGxvY2F0aW9uX18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jYXRpb25cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IFNleHAuc2V4cF9vZl90IHN1Yl9zZXhwX18wMDRfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDAzXyA9IHNleHBfb2ZfZXhuIHVzZXJfZXhuX18wMDJfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidXNlcl9leG5cIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zICgpID0gQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyBtb2RlIGtpbmRcbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RvcCBzdGF0ZSA9IEEuc2V0X2Vycm9yX3N0YXRlIHN0YXRlXG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IG1ha2VfdmFsdWUgc3RhdGUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2spXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciA9XG4gICAgICBsZXQgc3RhdGUgPSBTdGF0ZS5jcmVhdGUgKCkgaW5cbiAgICAgIGZlZWRfZW9pIHN0YXRlIChmZWVkX3N0cmluZyBzdGF0ZSBzdHIgU3RhY2suZW1wdHkpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9zdHJpbmcgc3RyID1cbiAgICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIHdpdGhcbiAgICAgIHwgeCAtPiBPayB4XG4gICAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIGVcbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgbWFrZV9lYWdlciAodHlwZSBzdGFjayBzdGF0ZSBwYXJzZWRfdmFsdWUpIGtpbmQgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU19lYWdlciB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFJlYWRfb25seVxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgPyhub19zZXhwX2lzX2Vycm9yID0gZmFsc2UpIGYgPVxuICAgICAgICBsZXQgZ290X3NleHAgc3RhdGUgc3RhY2sgPVxuICAgICAgICAgIGxldCBwYXJzZWRfdmFsdWUgPSBtYWtlX3ZhbHVlIHN0YXRlIHN0YWNrIGluXG4gICAgICAgICAgZiBzdGF0ZSBwYXJzZWRfdmFsdWU7XG4gICAgICAgICAgU3RhY2suZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyAoRWFnZXIgeyBnb3Rfc2V4cDsgbm9fc2V4cF9pc19lcnJvciB9KSBraW5kXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgc3RvcCB0ID0gQS5zZXRfZXJyb3Jfc3RhdGUgdFxuICAgICAgbGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSB0ID0gQXV0b21hdG9uLm9sZF9wYXJzZXJfY29udF9zdGF0ZSB0XG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IGlnbm9yZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjayA6IFN0YWNrLnQpXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIG1vZHVsZSBMZXhidWZfY29uc3VtZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0YXRlLnRcblxuICAgICAgZXhjZXB0aW9uIEdvdF9zZXhwIG9mIHBhcnNlZF92YWx1ZSAqIFBvc2l0aW9ucy5wb3NcblxuICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHBhcnNlZF92YWx1ZSA9XG4gICAgICAgIHJhaXNlX25vdHJhY2UgKEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIFN0YXRlLnBvc2l0aW9uIHN0YXRlKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBTdGF0ZS5jcmVhdGUgZ290X3NleHBcblxuICAgICAgbGV0IHBvc19vZl9sZXhidWYgbGV4YnVmID1cbiAgICAgICAgbGV0IHAgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgaW5cbiAgICAgICAgeyBQb3NpdGlvbnMubGluZSA9IHAucG9zX2xudW07IGNvbCA9IHAucG9zX2NudW0gLSBwLnBvc19ib2w7IG9mZnNldCA9IHAucG9zX2NudW0gfVxuICAgICAgOztcblxuICAgICAgbGV0IHVwZGF0ZV9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIChwb3MgOiBQb3NpdGlvbnMucG9zKSA9XG4gICAgICAgIGxldCBwID0gcG9zLm9mZnNldCAtIGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wXG4gICAgICAgIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aFxuICAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLmxpbmVcbiAgICAgICAgICAgOyBwb3NfY251bSA9IHBvcy5vZmZzZXRcbiAgICAgICAgICAgOyBwb3NfYm9sID0gcG9zLm9mZnNldCAtIHBvcy5jb2xcbiAgICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmZWVkX2xleGJ1ZiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSBzdGFjayA9XG4gICAgICAgIGxldCBzdGFjayA9XG4gICAgICAgICAgZmVlZF9zdWJieXRlc1xuICAgICAgICAgICAgdFxuICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXJcbiAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICB+cG9zOmxleGJ1Zi5sZXhfY3Vycl9wb3NcbiAgICAgICAgICAgIH5sZW46KGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfY3Vycl9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGlmIG5vdCBsZXhidWYubGV4X2VvZl9yZWFjaGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxleGJ1Zi5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICAgICAgZmVlZF9sZXhidWYgdCBsZXhidWYgc3RhY2spXG4gICAgICAgIGVsc2UgZmVlZF9lb2kgdCBzdGFja1xuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX2dlbiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgICAgIEEucmVzZXQgdCB+cG9zOihwb3Nfb2ZfbGV4YnVmIGxleGJ1Zik7XG4gICAgICAgIG1hdGNoIGZlZWRfbGV4YnVmIHQgbGV4YnVmIFN0YWNrLmVtcHR5IHdpdGhcbiAgICAgICAgfCAoKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgZXhjZXB0aW9uIEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIHBvcykgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiBwb3M7XG4gICAgICAgICAgU29tZSBwYXJzZWRfdmFsdWVcbiAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIHJhaXNlIGV4blxuICAgICAgOztcblxuICAgICAgbGV0IHNldF9ub19zZXhwX2lzX2Vycm9yIHQgeCA9XG4gICAgICAgIG1hdGNoIEEubW9kZSB0IHdpdGhcbiAgICAgICAgfCBFYWdlciBlIC0+IGUubm9fc2V4cF9pc19lcnJvciA8LSB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZSB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgdHJ1ZTtcbiAgICAgICAgbWF0Y2ggcGFyc2VfZ2VuIHQgbGV4YnVmIHdpdGhcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLnBhcnNlX2dlbjogTm9uZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfb3B0IHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCBmYWxzZTtcbiAgICAgICAgcGFyc2VfZ2VuIHQgbGV4YnVmXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbnZfaW50ZlxuXG5tb2R1bGUgTWFrZVxuICAgIChNb2RlIDogTW9kZSlcbiAgICAoU2V4cF9wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gTW9kZS5wYXJzZWRfc2V4cClcbiAgICAoUG9zaXRpb25zX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBQb3NpdGlvbnMudCkgPVxuc3RydWN0XG4gIGxldCByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiB1c2VyX2V4biA9XG4gICAgbGV0IGxvY2F0aW9uID0gTW9kZS5maW5kIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiBpblxuICAgIE9mX3NleHBfZXJyb3IucmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cDpzdWIgfmxvY2F0aW9uXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyIGYgPVxuICAgIGxldCBwYXJzZWRfdmFsdWUgPSBTZXhwX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT5cbiAgICAgIGxldCBwb3NpdGlvbnMgPSBQb3NpdGlvbnNfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgICByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSlcbiAgOztcblxuICBsZXQgY29udl9leG4gKHBhcnNlZF92YWx1ZSwgcG9zaXRpb25zKSBmID1cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBjb252IHggZiA9XG4gICAgbWF0Y2ggY29udl9leG4geCBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIGVcbiAgOztcblxuICBsZXQgY29udl9jb21iaW5lIHJlc3VsdCBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IE9rIHggLT5cbiAgICAgIChtYXRjaCBjb252IHggZiB3aXRoXG4gICAgICAgfCBPayBfIGFzIHIgLT4gclxuICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252LlNcbm1vZHVsZSB0eXBlIFBhcnNlciA9IFBhcnNlci5TXG5tb2R1bGUgdHlwZSBFYWdlcl9wYXJzZXIgPSBQYXJzZXIuU19lYWdlclxuXG5tb2R1bGUgQ29udl9lcnJvciA9IENvbnZfZXJyb3Jcbm1vZHVsZSBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxubW9kdWxlIE9sZF9wYXJzZXJfY29udF9zdGF0ZSA9IE9sZF9wYXJzZXJfY29udF9zdGF0ZVxubW9kdWxlIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3Jcbm1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbm1vZHVsZSBDc3QgPSBDc3Rcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvclxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5tb2R1bGUgU2luZ2xlID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIFNpbmdsZSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxubW9kdWxlIE1hbnkgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgTWFueSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KSlcbm1vZHVsZSBFYWdlciA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgU2V4cCAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxuXG5sZXQgYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHAgc3RhdGUgc3RhY2sgPSBnZXRfc2V4cCBzdGFjaywgQS5wb3NpdGlvbnMgc3RhdGVcblxubGV0IGFuZF9wb3NpdGlvbnMgbW9kZSBnZXRfc2V4cCA9XG4gIFBhcnNlci5tYWtlIFNleHBfd2l0aF9wb3NpdGlvbnMgbW9kZSAoYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHApXG47O1xuXG5tb2R1bGUgU2luZ2xlX2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgU2luZ2xlIEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKVxubW9kdWxlIE1hbnlfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBNYW55IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2FuZF9wb3NpdGlvbnMgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyXG4gICAgICAgICBTZXhwX3dpdGhfcG9zaXRpb25zXG4gICAgICAgICAoQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUgfD4gYW5kX2dldF9wb3NpdGlvbnMpKVxuXG5sZXQganVzdF9nZXRfcG9zaXRpb25zIHN0YXRlICgpID0gQS5wb3NpdGlvbnMgc3RhdGVcbmxldCBqdXN0X3Bvc2l0aW9ucyBtb2RlID0gUGFyc2VyLm1ha2UgUG9zaXRpb25zIG1vZGUganVzdF9nZXRfcG9zaXRpb25zXG5cbm1vZHVsZSBTaW5nbGVfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIFNpbmdsZSlcbm1vZHVsZSBNYW55X2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBNYW55KVxubW9kdWxlIEVhZ2VyX2p1c3RfcG9zaXRpb25zID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBQb3NpdGlvbnMganVzdF9nZXRfcG9zaXRpb25zKVxuXG5sZXQgY3N0IG1vZGUgZiA9IFBhcnNlci5tYWtlIENzdCBtb2RlIChjb25zdCBmKVxuXG5tb2R1bGUgTWFueV9jc3QgPSAodmFsIGNzdCBNYW55IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfY3N0ID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlciBDc3QgKGZ1biBfIHN0YWNrIC0+XG4gICAgIG1hdGNoIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55IHN0YWNrIHdpdGhcbiAgICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG50eXBlICdhIGlkID0gJ2FcbnR5cGUgc2V4cF9saXN0ID0gU2V4cC50IGxpc3RcblxubW9kdWxlIENvbnZfc2luZ2xlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfcGh5c1xuICAgIGVuZClcbiAgICAoU2luZ2xlKVxuICAgIChTaW5nbGVfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnkgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhIGxpc3RcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHggfmYpXG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueV9hdF9vbmNlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnQgbGlzdFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF1dG9tYXRvbiA9IEF1dG9tYXRvblxuICBtb2R1bGUgQXV0b21hdG9uX3N0YWNrID0gQXV0b21hdG9uX3N0YWNrXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhdGUgPSBBdXRvbWF0b25fc3RhdGVcbiAgbW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xuZW5kXG4iLCIoKiBmb3IgbGV4aW5nIHBvc2l0aW9uczpcbiAgIC0gbG51bSBzdGFydHMgZnJvbSAxXG4gICAtIGNudW0gc3RhcnRzIGZyb20gMFxuICAgLSBwb3NfYm9sIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lXG5cbiAgIGZvciBhYnNvbHV0ZSBwb3M6XG4gICAtIHJvdyBzdGFydHMgZnJvbSAxXG4gICAtIGNvbCBzdGFydHMgZnJvbSAxXG5cbiAgIGZvciByZWxhdGl2ZSBwb3MsIG9idmlvdXNseSAwIG1lYW5zIHNhbWUgcG9zaXRpb25cbiopXG5cbigqIG9wZXJhdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvciBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwb3NpdGlvbnMgKilcbm1vZHVsZSBQb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJvdyA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyByb3c7IGNvbCB9ID0gVHlwZS5BdG9tIChQcmludGYuc3ByaW50ZiBcIiVkOiVkXCIgcm93IGNvbClcbiAgbGV0IGFkZCB0MSB0MiA9IHsgcm93ID0gdDEucm93ICsgdDIucm93OyBjb2wgPSB0MS5jb2wgKyB0Mi5jb2wgfVxuICBsZXQgc3ViIHQxIHQyID0geyByb3cgPSB0MS5yb3cgLSB0Mi5yb3c7IGNvbCA9IHQxLmNvbCAtIHQyLmNvbCB9XG5cbiAgbGV0IGNvbXBhcmUgeyByb3cgPSByMTsgY29sID0gYzEgfSB7IHJvdyA9IHIyOyBjb2wgPSBjMiB9ID1cbiAgICBpZiByMSA9IHIyIHRoZW4gYzEgLSBjMiBlbHNlIHIxIC0gcjJcbiAgOztcblxuICBsZXQgZ2VxIHQxIHQyID0gY29tcGFyZSB0MSB0MiA+PSAwXG5lbmRcblxubW9kdWxlIFJlbGF0aXZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IHplcm8gPSB7IHJvdyA9IDA7IGNvbCA9IDAgfVxuZW5kXG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCBvcmlnaW4gPSB7IHJvdyA9IDE7IGNvbCA9IDEgfVxuXG4gIGxldCBvZl9sZXhpbmcgeyBMZXhpbmcucG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sOyBwb3NfZm5hbWUgPSBfIH0gPVxuICAgIHsgcm93ID0gcG9zX2xudW07IGNvbCA9IHBvc19jbnVtIC0gcG9zX2JvbCArIDEgfVxuICA7O1xuXG4gIGxldCBkaWZmID0gc3ViXG5lbmRcbiIsIigqKiBUeXBlIG9mIGFubm90YXRlZCBTLWV4cHJlc3Npb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChQb3MgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICgqKiBJbiBbQXRvbSAoXywgcywgb3B0KV0sIFtzXSBpcyB0aGUgdW5lc2NhcGVkIHN0cmluZywgdGhhdCBpcyB0aGUgYXJndW1lbnQgb2ZcbiAgICAgICAgW1R5cGUuQXRvbV0uIFdoZW4gW29wdF0gaXMgZGVmaW5lZCwgaXQgaXMgdGhlIHNvdXJjZSBzeW50YXggb2YgW3NdLCB0aGF0IGlzIGFcbiAgICAgICAgc3RyaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQgYXMgaXMgaWYgb25lIHdhbnRzIHRvIHBhcnNlIGFuZCBwcmludCBwcmVzZXJ2aW5nXG4gICAgICAgIHN5bnRheC4gVGhpcyBpcyB1c3VhbGx5IHNldCBmb3IgcXVvdGVkIGF0b21zICh0byBwcmVzZXJ2ZSB0aGUgZmFjdCB0aGF0IHdlcmVcbiAgICAgICAgcXVvdGVkKSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gZG8gdGhlIHJldmVyc2U6IHNldCBpdCBmb3IgYXRvbXMgdGhhdCBjYW4gYmVcbiAgICAgICAgcGFyc2VkIHVucXVvdGVkIGJ1dCB3b3VsZCBiZSBwcmludGVkIHdpdGggcXVvdGVzLCB0byBwcmVzZXJ2ZSB0aGUgbGFjayBvZiBxdW90ZXMuXG4gICAgICAgIEZvciBpbnN0YW5jZTpcbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8YXx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhIGJcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBTb21lIFwiXFxcImFcXFwiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBTb21lIFwiYSBiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8YSBifH0gb3IgbWF5IHJhaXNlLCBhcyBpdCBpc1xuICAgICAgICBhbiBlcnJvciB0byBjb25zdHJ1Y3RlZCBzdWNoIGFuIGF0b20gKGRvZXNuJ3QgcGFyc2UgYmFjaykgKilcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdG9tIG9mIFBvcy50ICogc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICAgfCBMaXN0IG9mIFBvcy50ICogdF9vcl9jb21tZW50IGxpc3QgKiBQb3MudFxuXG4gICAgKCogcG9zaXRpb25zIG9mIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyAqKVxuICAgIGFuZCB0X29yX2NvbW1lbnQgPVxuICAgICAgfCBTZXhwIG9mIHRcbiAgICAgIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbiAgICBhbmQgY29tbWVudCA9XG4gICAgICB8IFBsYWluX2NvbW1lbnQgb2YgUG9zLnQgKiBzdHJpbmdcbiAgICAgIHwgU2V4cF9jb21tZW50IG9mIFBvcy50ICogY29tbWVudCBsaXN0ICogdFxuICBlbmRcblxuICBpbmNsdWRlIFRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBUXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zZXhwIDogc2lnXG4gICAgdmFsIG9mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBvZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBtYXliZSB3ZSBjYW4gYWN0dWFsbHkgdXNlIGNvbnYgaGVyZSwgaW5zdGVhZCBvZiBpbmxpbmluZyBpdCAqKVxuXG4gICAgbGV0IG9mX3BvcyA9IFBvcy5zZXhwX29mX3RcbiAgICBsZXQgb2Zfc3RyaW5nIHggPSBUeXBlLkF0b20geFxuICAgIGxldCBvZl9saXN0IG9mX2EgeHMgPSBUeXBlLkxpc3QgKExpc3QubWFwIH5mOm9mX2EgeHMpXG5cbiAgICBsZXQgb2Zfb3B0aW9uIG9mX2EgPSBmdW5jdGlvblxuICAgICAgfCBTb21lIHggLT4gVHlwZS5MaXN0IFsgb2ZfYSB4IF1cbiAgICAgIHwgTm9uZSAtPiBUeXBlLkxpc3QgW11cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBvZl90ID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQXRvbVwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2Mjsgb2Zfb3B0aW9uIG9mX3N0cmluZyB2MyBdXG4gICAgICB8IExpc3QgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkxpc3RcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX3Rfb3JfY29tbWVudCB2Mjsgb2ZfcG9zIHYzIF1cblxuICAgIGFuZCBvZl90X29yX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwIHQgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cFwiOyBvZl90IHQgXVxuICAgICAgfCBDb21tZW50IGMgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQ29tbWVudFwiOyBvZl9jb21tZW50IGMgXVxuXG4gICAgYW5kIG9mX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBQbGFpbl9jb21tZW50ICh2MSwgdjIpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlBsYWluX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjIgXVxuICAgICAgfCBTZXhwX2NvbW1lbnQgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBfY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfY29tbWVudCB2Mjsgb2ZfdCB2MyBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRvX3NleHAub2ZfdFxuICBsZXQgc2V4cF9vZl9jb21tZW50ID0gVG9fc2V4cC5vZl9jb21tZW50XG4gIGxldCBzZXhwX29mX3Rfb3JfY29tbWVudCA9IFRvX3NleHAub2ZfdF9vcl9jb21tZW50XG5lbmRcblxuaW5jbHVkZSBNYWtlIChTcmNfcG9zLlJlbGF0aXZlKVxubW9kdWxlIFBhcnNlZCA9IE1ha2UgKFNyY19wb3MuQWJzb2x1dGUpXG5cbmxldCByZWxhdGl2aXplID1cbiAgbGV0IHJlbCB+b3V0ZXJfcCBwID0gU3JjX3Bvcy5BYnNvbHV0ZS5kaWZmIHAgb3V0ZXJfcCBpblxuICBsZXQgcmVjIGF1eF90IH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5BdG9tIChwb3MsIHMsIHNvcHQpIC0+IEF0b20gKHJlbCBwb3Mgfm91dGVyX3AsIHMsIHNvcHQpXG4gICAgfCBQYXJzZWQuTGlzdCAoc3RhcnRfcG9zLCB0b2NzLCBlbmRfcG9zKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoIHJlbCBzdGFydF9wb3Mgfm91dGVyX3BcbiAgICAgICAgLCBMaXN0Lm1hcCB0b2NzIH5mOihmdW4gdG9jIC0+IGF1eF90b2Mgfm91dGVyX3A6c3RhcnRfcG9zIHRvYylcbiAgICAgICAgLCByZWwgZW5kX3BvcyB+b3V0ZXJfcCApXG4gIGFuZCBhdXhfdG9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5TZXhwIHQgLT4gU2V4cCAoYXV4X3QgdCB+b3V0ZXJfcClcbiAgICB8IFBhcnNlZC5Db21tZW50IGMgLT4gQ29tbWVudCAoYXV4X2MgYyB+b3V0ZXJfcClcbiAgYW5kIGF1eF9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5QbGFpbl9jb21tZW50IChwb3MsIHR4dCkgLT4gUGxhaW5fY29tbWVudCAocmVsIHBvcyB+b3V0ZXJfcCwgdHh0KVxuICAgIHwgUGFyc2VkLlNleHBfY29tbWVudCAocG9zLCBjcywgdCkgLT5cbiAgICAgIFNleHBfY29tbWVudFxuICAgICAgICAocmVsIHBvcyB+b3V0ZXJfcCwgTGlzdC5tYXAgY3MgfmY6KGZ1biBjIC0+IGF1eF9jIH5vdXRlcl9wIGMpLCBhdXhfdCB0IH5vdXRlcl9wKVxuICBpblxuICBmdW4gdG9jIC0+IGF1eF90b2MgdG9jIH5vdXRlcl9wOlNyY19wb3MuQWJzb2x1dGUub3JpZ2luXG47O1xuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjMgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTc3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDE5NyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjAzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxMCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxOCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyNSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjYxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI2OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjkxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzExIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMxNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbilcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcbiAgKCogY29tcGFyZSB0byBwYXJzZXIubWx5ICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgV2l0aF9wb3MgPSBzdHJ1Y3RcblxuICAgIG9wZW4gVHlwZV93aXRoX2xheW91dC5QYXJzZWRcblxuICAgIGxldCBjb2VyY2UgPSBTcmNfcG9zLkFic29sdXRlLm9mX2xleGluZ1xuXG4gICAgbGV0IHN0YXJ0X3BvcyAoKSA9IGNvZXJjZSAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKVxuXG4gICAgbGV0IGVuZF9wb3MgKCkgPVxuICAgICAgbGV0IHAgPSBQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpIGluXG4gICAgICBjb2VyY2UgeyBwIHdpdGggTGV4aW5nLnBvc19jbnVtID0gcC5MZXhpbmcucG9zX2NudW0gLSAxIH1cblxuICAgIGxldCBhdG9tICh4LCB5KSA9XG4gICAgICBsZXQgKHBvcywgeSkgPVxuICAgICAgICBtYXRjaCB5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChzdGFydF9wb3MgKCksIFNvbWUgeClcbiAgICAgICAgfCBTb21lIChwb3MsIHgpIC0+IChjb2VyY2UgcG9zLCBTb21lIHgpXG4gICAgICBpblxuICAgICAgQXRvbSAocG9zLCB4LCB5KVxuXG4gICAgbGV0IGxpc3QgdHMgPSBMaXN0IChzdGFydF9wb3MgKCksIHRzLCBlbmRfcG9zICgpKVxuXG4gICAgbGV0IHNleHAgICAgeCA9IFNleHAgICAgeFxuICAgIGxldCBjb21tZW50IHggPSBDb21tZW50IHhcblxuICAgIGxldCBzZXhwX2NvbW1lbnQgY3MgdCA9IFNleHBfY29tbWVudCAoc3RhcnRfcG9zICgpLCBjcywgdClcblxuICAgIGxldCBwbGFpbl9jb21tZW50ICh4LCBwb3Nfb3B0KSA9XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggcG9zX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGFydF9wb3MgKClcbiAgICAgICAgfCBTb21lIHBvcyAtPiBjb2VyY2UgcG9zXG4gICAgICBpblxuICAgICAgUGxhaW5fY29tbWVudCAocG9zLCB4KVxuXG4gIGVuZFxuXG4jIDYyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTkgKCogTFBBUkVOICopO1xuICAyNjAgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjEgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAyNTggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDEwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMDZcXDAwMFxcMDIyXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMjBcXDAwMFxcMDE1XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE2XFwwMDBcXDAyMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxN1xcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA2XFwwMDBcXFxuXFwwMjBcXDAwMFxcMDE4XFwwMDBcXDAyMVxcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDE1XFwwMDBcXDAyMlxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAzN1xcMDAwXFxcblxcMDA5XFwyNTVcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwyNTVcXDAwOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDI1NVxcMjUxXFwyNTVcXDIzNVxcMjU1XFxcblxcMDAwXFwwMDBcXDIzNFxcMjU1XFwwMTBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI5MlxubGV0IHl5dGFibGUgPSBcIlxcMDM2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDI4XFwwMDBcXDAzM1xcMDAwXFwwMTlcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDI1XFwwMDBcXDAxMVxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMzVcXDAwMFxcMDExXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAxMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAoIFdpdGhfcG9zLmF0b20gXzEgKVxuIyAyMTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3MubGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjIxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjI3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgODAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAoIFdpdGhfcG9zLnBsYWluX2NvbW1lbnQgXzEgKVxuIyAyMzQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHBfY29tbWVudCAoTGlzdC5yZXYgXzIpIF8zIClcbiMgMjQyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjQ4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwIF8xIClcbiMgMjYzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmNvbW1lbnQgXzEgKVxuIyAyNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgKCBUeXBlX3dpdGhfbGF5b3V0LnJlbGF0aXZpemUgXzEgKVxuIyAyOTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggU29tZSBfMSApXG4jIDI5OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMzA0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggW18xXSApXG4jIDMxMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAzMTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMyNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMzIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzM5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwc19hYnMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgc2V4cHNfYWJzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDUgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG4iLCIjIDEgXCJzcmMvbGV4ZXIubWxsXCJcbiBcbiAgKCoqIExleGVyOiBMZXhlciBTcGVjaWZpY2F0aW9uIGZvciBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgICB8ICduJyAtPiAnXFwwMTAnXG4gICAgfCAncicgLT4gJ1xcMDEzJ1xuICAgIHwgJ2InIC0+ICdcXDAwOCdcbiAgICB8ICd0JyAtPiAnXFwwMDknXG4gICAgfCBjIC0+IGNcblxuICBsZXQgbGYgPSAnXFwwMTAnXG5cbiAgbGV0IGRlY19jb2RlIGMxIGMyIGMzID1cbiAgICAxMDAgKiAoQ2hhci5jb2RlIGMxIC0gNDgpICsgMTAgKiAoQ2hhci5jb2RlIGMyIC0gNDgpICsgKENoYXIuY29kZSBjMyAtIDQ4KVxuXG4gIGxldCBoZXhfY29kZSBjMSBjMiA9XG4gICAgbGV0IGQxID0gQ2hhci5jb2RlIGMxIGluXG4gICAgbGV0IHZhbDEgPVxuICAgICAgaWYgZDEgPj0gOTcgdGhlbiBkMSAtIDg3XG4gICAgICBlbHNlIGlmIGQxID49IDY1IHRoZW4gZDEgLSA1NVxuICAgICAgZWxzZSBkMSAtIDQ4IGluXG4gICAgbGV0IGQyID0gQ2hhci5jb2RlIGMyIGluXG4gICAgbGV0IHZhbDIgPVxuICAgICAgaWYgZDIgPj0gOTcgdGhlbiBkMiAtIDg3XG4gICAgICBlbHNlIGlmIGQyID49IDY1IHRoZW4gZDIgLSA1NVxuICAgICAgZWxzZSBkMiAtIDQ4IGluXG4gICAgdmFsMSAqIDE2ICsgdmFsMlxuXG4gIGxldCBmb3VuZF9uZXdsaW5lICh7IGxleF9jdXJyX3A7IF8gfSBhcyBsZXhidWYpIGRpZmYgPVxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7XG4gICAgICAgIGxleF9jdXJyX3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxleF9jdXJyX3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGV4X2N1cnJfcC5wb3NfY251bSAtIGRpZmY7XG4gICAgICB9XG5cbiAgKCogc2FtZSBsZW5ndGggY29tcHV0YXRpb24gYXMgaW4gW0xleGluZy5sZXhlbWVdICopXG4gIGxldCBsZXhlbWVfbGVuIHsgbGV4X3N0YXJ0X3BvczsgbGV4X2N1cnJfcG9zOyBfIH0gPSBsZXhfY3Vycl9wb3MgLSBsZXhfc3RhcnRfcG9zXG5cbiAgbGV0IG1haW5fZmFpbHVyZSBsZXhidWYgbXNnID1cbiAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgIGxldCBtc2cgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIlNleHBsaWIuTGV4ZXIubWFpbjogJXMgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgbXNnIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICAgICAgdmFsIGFkZF9jaGFyIDogdCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfc3ViYnl0ZXMgOiB0IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9sZXhlbWUgOiB0IC0+IGxleGJ1ZiAtPiB1bml0XG4gICAgICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgICAgIHZhbCBvZl9idWZmZXIgOiBCdWZmZXIudCAtPiB0XG4gICAgZW5kXG4gICAgbW9kdWxlIFRva2VuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBscGFyZW4gOiB0XG4gICAgICB2YWwgcnBhcmVuIDogdFxuICAgICAgdmFsIGVvZiA6IHRcbiAgICAgIHZhbCBzaW1wbGVfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgIHZhbCBoYXNoX3NlbWkgOiB0XG4gICAgICB2YWwgcXVvdGVkX3N0cmluZyA6IExleGluZy5wb3NpdGlvbiAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IHRcbiAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICB2YWwgY29tbWVudCA6IHN0cmluZyAtPiBtYWluOnMgLT4gc1xuICAgICAgdmFsIGJsb2NrX2NvbW1lbnQgOiBMZXhpbmcucG9zaXRpb24gLT4gbWFpbjpzIC0+IHNcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBUKSA6IHNpZ1xuICAgIHZhbCBtYWluIDogP2J1ZjpCdWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IFguVG9rZW4udFxuICBlbmQgPSBzdHJ1Y3QgKCogQkVHSU4gRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcbiAgICBvcGVuIFhcblxuIyA4MyBcInNyYy9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNDRcXDI1NVxcMDEwXFwwMDBcXDA0M1xcMDAwXFwwNTNcXDAwMFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDg2XFwwMDBcXDI0OFxcMjU1XFwyNDlcXDI1NVxcMDk2XFwwMDBcXFxuICAgIFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNzJcXDAwMFxcMTgyXFwwMDBcXDIyMFxcMDAwXFwyMzBcXDAwMFxcMDA3XFwwMDFcXDI0N1xcMjU1XFxcbiAgICBcXDAxN1xcMDAxXFwwNTBcXDAwMVxcMDYwXFwwMDFcXDA5M1xcMDAxXFwxMDNcXDAwMVxcMTM2XFwwMDFcXDE0NlxcMDAxXFwxODFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMjI0XFwwMDFcXDIzNFxcMDAxXFwwMTFcXDAwMlxcMDM3XFwwMDBcXDI0NlxcMjU1XFwwODBcXDAwMFxcMjQ4XFwyNTVcXFxuICAgIFxcMDIzXFwwMDJcXDI1NVxcMjU1XFwyNDlcXDI1NVxcMDU3XFwwMDJcXDAzM1xcMDAyXFwyNTJcXDI1NVxcMDA3XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwxMTJcXDAwMlxcMjUxXFwyNTVcXDE0NFxcMDAyXFwyNTBcXDI1NVxcMDgxXFwwMDBcXDI1MFxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwxMjJcXDAwMFxcMjU1XFwyNTVcXDE2NlxcMDAwXFwxMzBcXDAwMVxcMjUyXFwyNTVcXDI1MVxcMjU1XFwxNzNcXDAwMVxcMjUxXFwwMDFcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDE3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNVxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwNDZcXDAwMFxcMDA5XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAzNlxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcMDM4XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwNTNcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMTdcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzhcXDAwMFxcMDUzXFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDE3XFwwMDBcXDA1OVxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMjU1XFwyNTVcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMTlcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAyOVxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMjVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIG1haW4gYnVmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgKCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICAgICAgICAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA5NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAoIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuIyAzODAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5jb21tZW50IHRleHQgfm1haW4gYnVmIGxleGJ1ZiApXG4jIDM4NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ubHBhcmVuIClcbiMgMzg5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgOTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5ycGFyZW4gKVxuIyAzOTQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMDEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgcG9zIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLnF1b3RlZF9zdHJpbmcgcG9zIGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MDYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMDkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggVG9rZW4uaGFzaF9zZW1pIClcbiMgNDExIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTExIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBbcG9zXSBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5ibG9ja19jb21tZW50IHBvcyB+bWFpbiBidWYgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQyMyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDExOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiIClcbiMgNDI4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTI1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCIgKVxuIyA0MzMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbmxldFxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyXG4jIDQzOSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLnNpbXBsZV9zdHJpbmcgc3RyIClcbiMgNDQzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmVvZiApXG4jIDQ0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgMzZcbmFuZCBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmOyAoKSApXG4jIDQ2MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDEzMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAyIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ3MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDEzOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAzIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ4MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTQ1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyA0ODYgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTQ2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDk0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICBjMVxuIyA1MDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUwNSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE1MSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM1xuIyA1MTAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gZGVjX2NvZGUgYzEgYzIgYzMgaW5cbiAgICAgICAgaWYgdiA+IDI1NSB0aGVuIChcbiAgICAgICAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiBcXFxuICAgICAgICAgICAgICAgaWxsZWdhbCBlc2NhcGUgYXQgbGluZSAlZCBjaGFyICVkOiBgXFxcXCVjJWMlYydcIlxuICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sIC0gMylcbiAgICAgICAgICAgICAgYzEgYzIgYzMgaW5cbiAgICAgICAgICBmYWlsd2l0aCBtc2cpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTI4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbmxldFxuIyAxNjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFcbiMgNTM0IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTY3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTM5IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGhleF9jb2RlIGMxIGMyIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NDggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDE3NCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgY1xuIyA1NTQgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTYzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTgyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBsZjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU3MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE4OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgb2ZzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBvZnMgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBvZnMgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTg0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgc3RhcnQucG9zX2xudW0gKHN0YXJ0LnBvc19jbnVtIC0gc3RhcnQucG9zX2JvbClcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDU5NiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIDUzXG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIwOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7IHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAyMTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjE1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMjE0IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDEgfSBpblxuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmXG4gICAgICApXG4jIDYyNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDIyMiBcInNyYy9sZXhlci5tbGxcIlxuICAgIChcbiAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMiB9IGluXG4gICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIChzdGFydCA6OiBsb2NzKSBsZXhidWZcbiAgICApXG4jIDYzNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDIyOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtfXSAtPiAoKSAoKiB0aGUgY29tbWVudCBpcyBmaW5pc2hlZCAqKVxuICAgICAgICB8IF8gOjogKF8gOjogXyBhcyB0KSAtPiBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIHQgbGV4YnVmXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlICAoKiBpbXBvc3NpYmxlICopXG4gICAgICApXG4jIDY0NyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDIzNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9IDo6IF8gLT5cbiAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICBzcHJpbnRmIFwiU2V4cGxpYi5MZXhlci5zY2FuX2Jsb2NrX2NvbW1lbnQ6IFxcXG4gICAgICAgICAgICAgICAgdW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnQgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA2NjIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDI0OSBcInNyYy9sZXhlci5tbGxcIlxuICAoKiBSRVNVTUUgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICAgIGxldCBtYWluID9idWYgPVxuICAgICAgbGV0IGJ1ZiA9XG4gICAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jcmVhdGUgNjRcbiAgICAgICAgfCBTb21lIGJ1ZiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIub2ZfYnVmZmVyIGJ1ZlxuICAgICAgaW5cbiAgICAgIG1haW4gYnVmXG5cbiAgZW5kICgqIEVORCBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gIG1vZHVsZSBWYW5pbGxhID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJ1ZmZlclxuICAgICAgICBsZXQgYWRkX2xleGVtZSBfIF8gPSAoKVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGIgPSBiXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlclxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgeFxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBfIGJ1ZiA9IFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgX3BvcyB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWZcbiAgICAgICAgbGV0IGNvbW1lbnQgX3RleHQgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmICgqIHNraXAgYW5kIGNvbnRpbnVlIGxleGluZyAqKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBXaXRoX2xheW91dCA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgIGNvbnRlbnRzIDogQnVmZmVyLnQ7XG4gICAgICAgICAgbGV4ZW1lIDogQnVmZmVyLnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNyZWF0ZSBuID0ge2NvbnRlbnRzID0gQnVmZmVyLmNyZWF0ZSBuOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIG59XG4gICAgICAgIGxldCBvZl9idWZmZXIgY29udGVudHMgPSB7IGNvbnRlbnRzOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIDY0IH1cbiAgICAgICAgbGV0IGFkZF9jaGFyIHQgY2ggPSBCdWZmZXIuYWRkX2NoYXIgdC5jb250ZW50cyBjaFxuICAgICAgICBsZXQgYWRkX3N1YmJ5dGVzIHQgc3RyIG9mcyBsZW4gPSBCdWZmZXIuYWRkX3N1YmJ5dGVzIHQuY29udGVudHMgc3RyIG9mcyBsZW5cbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgdCBsZXhidWYgPSBCdWZmZXIuYWRkX3N0cmluZyB0LmxleGVtZSAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgIGxldCBjbGVhciB0ID0gQnVmZmVyLmNsZWFyIHQubGV4ZW1lOyBCdWZmZXIuY2xlYXIgdC5jb250ZW50c1xuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJfd2l0aF9sYXlvdXRcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HICh4LCBOb25lKVxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBwb3Mge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzOyBsZXhlbWV9ID1cbiAgICAgICAgICBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBjb250ZW50cywgU29tZSAocG9zLCBCdWZmZXIuY29udGVudHMgbGV4ZW1lKSlcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgcG9zIH5tYWluOl8ge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzID0gXzsgbGV4ZW1lfSBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UIChCdWZmZXIuY29udGVudHMgbGV4ZW1lLCBTb21lIHBvcylcbiAgICAgICAgbGV0IGNvbW1lbnQgdGV4dCB+bWFpbjpfIF9idWYgX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAodGV4dCwgTm9uZSlcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBsZXQgbWFpbiA9IFZhbmlsbGEubWFpblxuICBsZXQgbWFpbl93aXRoX2xheW91dCA9IFdpdGhfbGF5b3V0Lm1haW5cblxuXG4jIDc0NCBcInNyYy9sZXhlci5tbFwiXG4iLCIoKiBTZXhwOiBNb2R1bGUgZm9yIGhhbmRsaW5nIFMtZXhwcmVzc2lvbnMgKEkvTywgZXRjLikgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gQmlnYXJyYXlcbm1vZHVsZSBTZXhwbGliID0gU2V4cGxpYjBcbm1vZHVsZSBDb252ID0gU2V4cGxpYi5TZXhwX2NvbnZcblxuKCogY29udi5tbCBkZXBlbmRzIG9uIHVzIHNvIHdlIGNhbiBvbmx5IHVzZSB0aGlzIG1vZHVsZSAqKVxuXG5pbmNsdWRlIFR5cGVcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcml2YXRlXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBJL08tY2hhbm5lbHMgKilcblxubGV0IHdpdGhfbmV3X2J1ZmZlciBvYyBmID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICBmIGJ1ZjtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG47O1xuXG5sZXQgb3V0cHV0X2h1bSBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gc2V4cCB+YnVmKVxuXG5sZXQgb3V0cHV0X2h1bV9pbmRlbnQgaW5kZW50IG9jIHNleHAgPVxuICB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSB+aW5kZW50IHNleHAgfmJ1Zilcbjs7XG5cbmxldCBvdXRwdXRfbWFjaCBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZilcbmxldCBvdXRwdXQgPSBvdXRwdXRfbWFjaFxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmaWxlICopXG5cbigqIFRoZSB0ZW1wIGZpbGUgZnVuY3Rpb25zIGluIHRoZSBPQ2FtbCBGaWxlbmFtZSBtb2R1bGUgZG8gbm90IHN1cHBvcnRcbiAgIHBlcm1pc3Npb25zLiAgQnV0IG9wZW5pbmcgYSBmaWxlIHdpdGggZ2l2ZW4gcGVybWlzc2lvbnMgaXMgZGlmZmVyZW50XG4gICBmcm9tIG9wZW5pbmcgaXQgYW5kIGNobW9kaW5nIGl0IHRvIHRoZXNlIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRoZSB1bWFza1xuICAgaXMgdGFrZW4gaW4gYWNjb3VudC4gIFVuZGVyIFVuaXggdGhlcmUncyBubyBlYXN5IHdheSB0byBnZXQgdGhlIHVtYXNrIGluXG4gICBhIHRocmVhZC1zYWZlIHdheS4gKilcbm1vZHVsZSBUbXBfZmlsZSA9IHN0cnVjdFxuICBsZXQgcHJuZyA9IHJlZiBOb25lXG5cbiAgbGV0IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByYW5kX3N0YXRlID1cbiAgICAgIG1hdGNoICFwcm5nIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgcmV0ID0gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpIGluXG4gICAgICAgIHBybmcgOj0gU29tZSByZXQ7XG4gICAgICAgIHJldFxuICAgIGluXG4gICAgbGV0IHJuZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRfc3RhdGUgbGFuZCAweEZGRkZGRiBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeFxuICA7O1xuXG4gICgqIEtlZXAgdGhlIHBlcm1pc3Npb25zIGxvb3NlLiBTZXhwcyBhcmUgdXN1YWxseSBzaGFyZWQgYW5kIHJhcmVseSBwcml2YXRlKilcbiAgbGV0IG9wZW5fdGVtcF9maWxlID8ocGVybSA9IDBvNjY2KSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IG9jID1cbiAgICAgICAgICBvcGVuX291dF9nZW4gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXSBwZXJtIG5hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbmFtZSwgb2NcbiAgICAgIHdpdGhcbiAgICAgIHwgU3lzX2Vycm9yIF8gYXMgZSAtPiBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICAgIGluXG4gICAgdHJ5X25hbWUgMFxuICA7O1xuZW5kXG5cbmxldCBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfZnVuY3Rpb24gZmlsZSBzZXhwID1cbiAgbGV0IHRtcF9uYW1lLCBvYyA9IFRtcF9maWxlLm9wZW5fdGVtcF9maWxlID9wZXJtIGZpbGUgXCJ0bXBcIiBpblxuICAodHJ5XG4gICAgIG91dHB1dF9mdW5jdGlvbiBvYyBzZXhwO1xuICAgICBjbG9zZV9vdXQgb2NcbiAgIHdpdGhcbiAgIHwgZSAtPlxuICAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgICh0cnkgU3lzLnJlbW92ZSB0bXBfbmFtZSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICByYWlzZSBlKTtcbiAgU3lzLnJlbmFtZSB0bXBfbmFtZSBmaWxlXG47O1xuXG5sZXQgb3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jIHNleHAgPVxuICBkb19vdXRwdXQgb2Mgc2V4cDtcbiAgb3V0cHV0X3N0cmluZyBvYyBcIlxcblwiXG47O1xuXG5sZXQgc2F2ZV9odW0gP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cFxubGV0IHNhdmVfbWFjaCA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfbWFjaCBmaWxlIHNleHBcbmxldCBzYXZlID0gc2F2ZV9tYWNoXG5sZXQgb3V0cHV0X3NleHBzX25sIGRvX291dHB1dCBvYyBzZXhwcyA9IExpc3QuaXRlciAob3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jKSBzZXhwc1xuXG5sZXQgc2F2ZV9zZXhwc19odW0gP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHNfbWFjaCA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfbWFjaCkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHMgPSBzYXZlX3NleHBzX21hY2hcblxuKCogU2NhbiBmdW5jdGlvbnMgKilcblxubGV0IHNjYW5fc2V4cCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cF9vcHQgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cF9vcHQgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3Jldl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5yZXZfc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5cbmxldCBnZXRfbWFpbl9idWYgYnVmID1cbiAgbGV0IGJ1ZiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgICB8IFNvbWUgYnVmIC0+IGJ1ZlxuICBpblxuICBMZXhlci5tYWluIH5idWZcbjs7XG5cbmxldCBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+ZiB+aW5pdCBsZXhidWYgPVxuICBsZXQgbWFpbiA9IGdldF9tYWluX2J1ZiBidWYgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggUGFyc2VyLnNleHBfb3B0IG1haW4gbGV4YnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHNleHAgLT4gbG9vcCAoZiBhY2Mgc2V4cClcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgc2Nhbl9pdGVyX3NleHBzID9idWYgfmYgbGV4YnVmID1cbiAgc2Nhbl9mb2xkX3NleHBzID9idWYgbGV4YnVmIH5pbml0OigpIH5mOihmdW4gKCkgc2V4cCAtPiBmIHNleHApXG47O1xuXG5sZXQgc2Nhbl9zZXhwc19jb252ID9idWYgfmYgbGV4YnVmID1cbiAgbGV0IGNvbGwgYWNjIHNleHAgPSBmIHNleHAgOjogYWNjIGluXG4gIExpc3QucmV2IChzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+Zjpjb2xsIH5pbml0OltdIGxleGJ1Zilcbjs7XG5cbmxldCBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSA/Y29udGFpbmluZ19zZXhwID9sb2NhdGlvbiA/aW52YWxpZF9zZXhwICgpIH5leG4gOiB0ID1cbiAgTGlzdFxuICAgIChMaXN0LmNvbmNhdFxuICAgICAgIFsgWyBBdG9tIFwiT2Zfc2V4cF9lcnJvclwiIF1cbiAgICAgICA7IChtYXRjaCBsb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBBdG9tIHggXSlcbiAgICAgICA7IFsgKG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgICAgfCBGYWlsdXJlIHggLT4gQXRvbSB4XG4gICAgICAgICAgICAgfCBfIC0+IENvbnYuc2V4cF9vZl9leG4gZXhuKVxuICAgICAgICAgXVxuICAgICAgIDsgKG1hdGNoIGludmFsaWRfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImludmFsaWRfc2V4cFwiOyB4IF0gXSlcbiAgICAgICA7IChtYXRjaCBjb250YWluaW5nX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJjb250YWluaW5nX3NleHBcIjsgeCBdIF0pXG4gICAgICAgXSlcbjs7XG5cbigqIFBhcnRpYWwgcGFyc2luZyAqKVxuXG5tb2R1bGUgQW5ub3QgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBQYXJzZXhwLlBvc2l0aW9ucy5wb3MgPVxuICAgIHsgbGluZSA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgOyBvZmZzZXQgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSByYW5nZSA9IFBhcnNleHAuUG9zaXRpb25zLnJhbmdlID1cbiAgICB7IHN0YXJ0X3BvcyA6IHBvc1xuICAgIDsgZW5kX3BvcyA6IHBvc1xuICAgIH1cblxuICB0eXBlIHQgPVxuICAgIHwgQXRvbSBvZiByYW5nZSAqIFR5cGUudFxuICAgIHwgTGlzdCBvZiByYW5nZSAqIHQgbGlzdCAqIFR5cGUudFxuXG4gIHR5cGUgJ2EgY29udiA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgRXJyb3Igb2YgZXhuICogdFxuICAgIF1cblxuICBleGNlcHRpb24gQ29udl9leG4gb2Ygc3RyaW5nICogZXhuXG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDb252X2V4bl0gKGZ1bmN0aW9uXG4gICAgICB8IENvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSAtPiBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmV4blxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICB0eXBlIHN0YWNrID1cbiAgICB7IG11dGFibGUgcG9zaXRpb25zIDogcG9zIGxpc3RcbiAgICA7IG11dGFibGUgc3RhY2sgOiB0IGxpc3QgbGlzdFxuICAgIH1cblxuICBsZXQgZ2V0X3NleHAgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAoXywgc2V4cCkgfCBMaXN0IChfLCBfLCBzZXhwKSAtPiBzZXhwXG4gIDs7XG5cbiAgbGV0IGdldF9yYW5nZSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChyYW5nZSwgXykgfCBMaXN0IChyYW5nZSwgXywgXykgLT4gcmFuZ2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl9jb252IHNleHBfb2ZfYSA9IGZ1bmN0aW9uXG4gICAgfCBgUmVzdWx0IGEgLT4gVHlwZS5MaXN0IFsgQXRvbSBcIlJlc3VsdFwiOyBhIHw+IHNleHBfb2ZfYSBdXG4gICAgfCBgRXJyb3IgKGV4biwgdCkgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwiRXJyb3JcIjsgTGlzdCBbIGV4biB8PiBDb252LnNleHBfb2ZfZXhuOyB0IHw+IGdldF9zZXhwIF0gXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBBbm5vdF9zZXhwIG9mIHRcblxuICBsZXQgZmluZF9zZXhwIGFubm90X3NleHAgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIGFubm90X3NleHAgPVxuICAgICAgbWF0Y2ggYW5ub3Rfc2V4cCB3aXRoXG4gICAgICB8IChBdG9tIChfLCBzdWJfc2V4cCkgfCBMaXN0IChfLCBfLCBzdWJfc2V4cCkpIHdoZW4gc2V4cCA9PSBzdWJfc2V4cCAtPlxuICAgICAgICByYWlzZSAoQW5ub3Rfc2V4cCBhbm5vdF9zZXhwKVxuICAgICAgfCBMaXN0IChfLCBhbm5vdHMsIF8pIC0+IExpc3QuaXRlciBsb29wIGFubm90c1xuICAgICAgfCBBdG9tIF8gLT4gKClcbiAgICBpblxuICAgIHRyeVxuICAgICAgbG9vcCBhbm5vdF9zZXhwO1xuICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IEFubm90X3NleHAgcmVzIC0+IFNvbWUgcmVzXG4gIDs7XG5lbmRcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jYXRpb24sIGV4biksIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4biwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZV9wb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgdGV4dF9saW5lIDogaW50XG4gICAgOyBtdXRhYmxlIHRleHRfY2hhciA6IGludFxuICAgIDsgbXV0YWJsZSBnbG9iYWxfb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGJ1Zl9wb3MgOiBpbnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHRleHRfbGluZSA9IDEpID8odGV4dF9jaGFyID0gMCkgPyhidWZfcG9zID0gMCkgPyhnbG9iYWxfb2Zmc2V0ID0gMCkgKCkgPVxuICAgIGxldCBmYWlsIG1zZyA9IGZhaWx3aXRoIChcIlNleHBsaWIuU2V4cC5QYXJzZV9wb3MuY3JlYXRlOiBcIiBeIG1zZykgaW5cbiAgICBpZiB0ZXh0X2xpbmUgPCAxXG4gICAgdGhlbiBmYWlsIFwidGV4dF9saW5lIDwgMVwiXG4gICAgZWxzZSBpZiB0ZXh0X2NoYXIgPCAwXG4gICAgdGhlbiBmYWlsIFwidGV4dF9jaGFyIDwgMFwiXG4gICAgZWxzZSBpZiBnbG9iYWxfb2Zmc2V0IDwgMFxuICAgIHRoZW4gZmFpbCBcImdsb2JhbF9vZmZzZXQgPCAwXCJcbiAgICBlbHNlIGlmIGJ1Zl9wb3MgPCAwXG4gICAgdGhlbiBmYWlsIFwiYnVmX3BvcyA8IDBcIlxuICAgIGVsc2UgeyB0ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9XG4gIDs7XG5cbiAgbGV0IHdpdGhfYnVmX3BvcyB0IGJ1Zl9wb3MgPSB7IHQgd2l0aCBidWZfcG9zIH1cbmVuZFxuXG5tb2R1bGUgQ29udF9zdGF0ZSA9IFBhcnNleHAuT2xkX3BhcnNlcl9jb250X3N0YXRlXG5cbnR5cGUgKCdhLCAndCkgcGFyc2VfcmVzdWx0ID1cbiAgfCBEb25lIG9mICd0ICogUGFyc2VfcG9zLnRcbiAgfCBDb250IG9mIENvbnRfc3RhdGUudCAqICgnYSwgJ3QpIHBhcnNlX2Z1blxuXG5hbmQgKCdhLCAndCkgcGFyc2VfZnVuID0gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+ICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdFxuXG50eXBlICd0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgOiBQYXJzZV9wb3MudCB9XG5cbnR5cGUgcGFyc2VfZXJyb3IgPVxuICB7IGVycl9tc2cgOiBzdHJpbmdcbiAgOyBwYXJzZV9zdGF0ZSA6IFsgYFNleHAgb2YgdCBsaXN0IGxpc3QgcGFyc2Vfc3RhdGUgfCBgQW5ub3Qgb2YgQW5ub3Quc3RhY2sgcGFyc2Vfc3RhdGUgXVxuICB9XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiBwYXJzZV9lcnJvclxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBwZSAtPlxuICAgICAgbGV0IHBwb3MgPVxuICAgICAgICBtYXRjaCBwZS5wYXJzZV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYFNleHAgeyBwYXJzZV9wb3MgfSB8IGBBbm5vdCB7IHBhcnNlX3BvcyB9IC0+IHBhcnNlX3Bvc1xuICAgICAgaW5cbiAgICAgIExpc3RcbiAgICAgICAgWyBBdG9tIFwiU2V4cGxpYi5TZXhwLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICBbIExpc3QgWyBBdG9tIFwiZXJyX21zZ1wiOyBBdG9tIHBlLmVycl9tc2cgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfbGluZVwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfbGluZSBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9jaGFyXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9jaGFyIF1cbiAgICAgICAgICAgIDsgTGlzdFxuICAgICAgICAgICAgICAgIFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMuMCAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4gKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExheW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaWdhcnJheS5sYXlvdXRcblxuICBsZXQgb2Zmc2V0IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICB8IEJpZ2FycmF5LkNfbGF5b3V0IC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkxLmRpbSB0IC0gMSBkb1xuICAgICAgZiAoaSArIG9mZnNldCkgdC57aSArIG9mZnNldH1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0gfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gdC57aX0gPC0gZiBpKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IGluaXQgOj0gZiAhaW5pdCB0LntpfSk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTEuZGltIHQpIH5mOihmdW4gaSAtPiB0LntpICsgb2Zmc2V0fSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTIudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMSB0IC0gMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQgLSAxIGRvXG4gICAgICAgIGYgKGkgKyBvZmZzZXQpIChqICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbTEgZGltMiB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTIuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIGogKF8gOiBlbHQpIC0+IHQue2ksIGp9IDwtIGYgaSBqKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIChfIDogaW50KSAoXyA6IGludCkgZWx0IC0+IGluaXQgOj0gZiAhaW5pdCBlbHQpO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgfmY6KGZ1biBpIC0+XG4gICAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMiB0KSB+ZjooZnVuIGogLT4gdC57aSArIG9mZnNldCwgaiArIG9mZnNldH0pKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgaW5cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMiB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgLT4gc2l6ZTppbnQgLT4gaGFzaDpIYXNoLnN0YXRlIC0+IEhhc2guc3RhdGVcblxubGV0IGNyZWF0ZSBmIDogXyB0ID0gZlxuXG5sZXQgb2JzZXJ2ZSAodCA6IF8gdCkgeCB+c2l6ZSB+aGFzaCA9XG4gIGlmIHNpemUgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gIGVsc2UgdCB4IH5zaXplIH5oYXNoXG47O1xuXG5sZXQgb3BhcXVlIF8gfnNpemU6XyB+aGFzaCA9IGhhc2hcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGdlbmVyYXRlIDogJ2EgdCAtPiBzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgU3RhZ2VkLnRcblxuICBsZXQgY3JlYXRlIGYgOiBfIHQgPSBTdGFnZWQuc3RhZ2UgZlxuXG4gIGxldCBnZW5lcmF0ZSAodCA6IF8gdCkgfnNpemUgfnJhbmRvbSA9XG4gICAgaWYgc2l6ZSA8IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5nZW5lcmF0ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gICAgZWxzZSBTdGFnZWQudW5zdGFnZSB0IH5zaXplIH5yYW5kb21cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tOl8gLT4gc2l6ZSlcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnNwbGl0IHJhbmRvbSBpblxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgaGFzaCA9IE9ic2VydmVyMC5vYnNlcnZlIGRvbSB4IH5zaXplIH5oYXNoOihIYXNoLmFsbG9jICgpKSBpblxuICAgICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNvcHkgcmFuZG9tIGluXG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKTtcbiAgICAgIGdlbmVyYXRlIHJuZyB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IHdpdGhfc2l6ZSB0IH5zaXplID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcblxubGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIHNhbHQ7XG4gICAgZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB+c2l6ZSB+cmFuZG9tID1cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBTb21lIHkgLT4geVxuICAgIHwgTm9uZSAtPiBsb29wIH5zaXplOihzaXplICsgMSkgfnJhbmRvbVxuICBpblxuICBjcmVhdGUgbG9vcFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IHJldHVybiB4ID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tOl8gLT4geClcbmxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZiAoZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFwcGx5IHRmIHR4ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBmID0gZ2VuZXJhdGUgdGYgfnNpemUgfnJhbmRvbSBpblxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdHggfnNpemUgfnJhbmRvbSBpblxuICAgIGYgeClcbjs7XG5cbmxldCBiaW5kIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBnZW5lcmF0ZSAoZiB4KSB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGFsbCBsaXN0ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lm1hcCBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QuaXRlciBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDIgPSBGb3JfYXBwbGljYXRpdmUubWFwMlxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIEZvcl9tb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGlnbm9yZV9tID0gRm9yX21vbmFkLmlnbm9yZV9tXG5sZXQgam9pbiA9IEZvcl9tb25hZC5qb2luXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IEZvcl9tb25hZC5Nb25hZF9pbmZpeFxuaW5jbHVkZSBNb25hZF9pbmZpeFxubW9kdWxlIExldF9zeW50YXggPSBGb3JfbW9uYWQuTGV0X3N5bnRheFxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2ZfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gIGxldCBsbyA9IDAgaW5cbiAgbGV0IGhpID0gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbyB+aGkgaW5cbiAgICBhcnJheS4oaW5kZXgpKVxuOztcblxubGV0IHVuaW9uIGxpc3QgPSBqb2luIChvZl9saXN0IGxpc3QpXG5cbmxldCBvZl93ZWlnaHRlZF9saXN0IGFsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBhbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgd2VpZ2h0cywgdmFsdWVzID0gTGlzdC51bnppcCBhbGlzdCBpblxuICBsZXQgdmFsdWVfYXJyYXkgPSBBcnJheS5vZl9saXN0IHZhbHVlcyBpblxuICBsZXQgdG90YWxfd2VpZ2h0LCBjdW11bGF0aXZlX3dlaWdodF9hcnJheSA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHZhbHVlX2FycmF5KSB+ZjooZnVuIF8gLT4gMC4pIGluXG4gICAgbGV0IHN1bSA9XG4gICAgICBMaXN0LmZvbGRpIHdlaWdodHMgfmluaXQ6MC4gfmY6KGZ1biBpbmRleCBhY2Mgd2VpZ2h0IC0+XG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHdlaWdodClcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5vdCBmaW5pdGVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBpZiBGbG9hdC4oIDwgKSB3ZWlnaHQgMC5cbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgbGV0IGN1bXVsYXRpdmUgPSBhY2MgKy4gd2VpZ2h0IGluXG4gICAgICAgIGFycmF5LihpbmRleCkgPC0gY3VtdWxhdGl2ZTtcbiAgICAgICAgY3VtdWxhdGl2ZSlcbiAgICBpblxuICAgIGlmIEZsb2F0LiggPD0gKSBzdW0gMC5cbiAgICB0aGVuXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogdG90YWwgd2VpZ2h0IGlzIHplcm9cIl07XG4gICAgc3VtLCBhcnJheVxuICBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgY2hvaWNlID0gU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzowLiB+aGk6dG90YWxfd2VpZ2h0IGluXG4gICAgbWF0Y2hcbiAgICAgIEFycmF5LmJpbmFyeV9zZWFyY2hcbiAgICAgICAgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXlcbiAgICAgICAgfmNvbXBhcmU6RmxvYXQuY29tcGFyZVxuICAgICAgICBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgICAgIGNob2ljZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5kZXggLT4gdmFsdWVfYXJyYXkuKGluZGV4KVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgd2VpZ2h0ZWRfdW5pb24gYWxpc3QgPSBqb2luIChvZl93ZWlnaHRlZF9saXN0IGFsaXN0KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZm9yY2UgbGF6eV90KSB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2ZfZ2VuZXJhdG9yID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9nZW5lcmF0b3IgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgZm9yY2UgbGF6eV90XG47O1xuXG5sZXQgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IHJlY19saXN0ID1cbiAgICAgIExpc3QubWFwIChmIHNlbGYpIH5mOihmdW4gKHcsIHQpIC0+XG4gICAgICAgICggd1xuICAgICAgICAsIGxldCViaW5kIG4gPSBzaXplIGluXG4gICAgICAgICAgd2l0aF9zaXplIH5zaXplOihuIC0gMSkgdCApKVxuICAgIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBub25yZWNfbGlzdCB8fCBMaXN0LmlzX2VtcHR5IHJlY19saXN0XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iud2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uOiBsaXN0cyBtdXN0IGJlIG5vbi1lbXB0eVwiXTtcbiAgICBsZXQgbm9ucmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIG5vbnJlY19saXN0IGluXG4gICAgbGV0IHJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiAobm9ucmVjX2xpc3QgQCByZWNfbGlzdCkgaW5cbiAgICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICAgIHwgMCAtPiBub25yZWNfZ2VuXG4gICAgfCBfIC0+IHJlY19nZW4pXG47O1xuXG5sZXQgcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgbGV0IHdlaWdodGVkIGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gdCAtPiAxLiwgdCkgaW5cbiAgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uICh3ZWlnaHRlZCBub25yZWNfbGlzdCkgfmY6KGZ1biBzZWxmIC0+IHdlaWdodGVkIChmIHNlbGYpKVxuOztcblxubGV0IHNpemVzID8obWluX2xlbmd0aCA9IDApID8obWF4X2xlbmd0aCA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGFzc2VydCAobWluX2xlbmd0aCA8PSBtYXhfbGVuZ3RoKTtcbiAgICBsZXQgdXBwZXJfYm91bmQgPSBtaW5fbGVuZ3RoICsgc2l6ZSBpblxuICAgIGxldCBtYXhfbGVuZ3RoID1cbiAgICAgIGlmIHVwcGVyX2JvdW5kID49IG1pbl9sZW5ndGggKCogZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdyAqKVxuICAgICAgdGhlbiBtaW4gbWF4X2xlbmd0aCB1cHBlcl9ib3VuZFxuICAgICAgZWxzZSBtYXhfbGVuZ3RoXG4gICAgaW5cbiAgICAoKiBwaWNrIGEgbGVuZ3RoLCB3ZWlnaHRlZCBsb3cgc28gdGhhdCBtb3N0IG9mIHRoZSBzaXplIGlzIHNwZW50IG9uIGVsZW1lbnRzICopXG4gICAgbGV0IGxlbiA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOm1pbl9sZW5ndGggfmhpOm1heF9sZW5ndGggaW5cbiAgICAoKiBpZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgcmV0dXJuIGFuIGVtcHR5IGFycmF5LCBvdGhlcndpc2UgcmV0dXJuIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgICAgd2l0aCB0aGUgc2l6ZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgZWxlbWVudHMgKilcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNpemVzID0gQXJyYXkuaW5pdCBsZW4gfmY6KGZ1biBfIC0+IDApIGluXG4gICAgICBsZXQgcmVtYWluaW5nID0gc2l6ZSAtIChsZW4gLSBtaW5fbGVuZ3RoKSBpblxuICAgICAgbGV0IG1heF9pbmRleCA9IGxlbiAtIDEgaW5cbiAgICAgIGZvciBfID0gMSB0byByZW1haW5pbmcgZG9cbiAgICAgICAgKCogcGljayBhbiBpbmRleCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgd2Ugc2VlIHVuYmFsYW5jZWQgZGlzdHJpYnV0aW9ucyBvZnRlbiAqKVxuICAgICAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgc2l6ZXMuKGluZGV4KSA8LSBzaXplcy4oaW5kZXgpICsgMVxuICAgICAgZG9uZTtcbiAgICAgICgqIHBlcm11dGUgdGhlIGFycmF5IHNvIHRoYXQgbm8gaW5kZXggaXMgZmF2b3JlZCBvdmVyIGFub3RoZXIgKilcbiAgICAgIGZvciBpID0gMCB0byBtYXhfaW5kZXggLSAxIGRvXG4gICAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIEFycmF5LnN3YXAgc2l6ZXMgaSBqXG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IChBcnJheS5zdW0gKG1vZHVsZSBJbnQpIHNpemVzIH5mOkZuLmlkICsgKGxlbiAtIG1pbl9sZW5ndGgpID0gc2l6ZSk7XG4gICAgICBBcnJheS50b19saXN0IHNpemVzKSlcbjs7XG5cbmxldCB1bml0ID0gcmV0dXJuICgpXG5sZXQgYm9vbCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSlcbmxldCBvcHRpb24gdmFsdWVfdCA9IHVuaW9uIFsgcmV0dXJuIE5vbmU7IG1hcCB2YWx1ZV90IH5mOk9wdGlvbi5yZXR1cm4gXVxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9IHVuaW9uIFsgbWFwIGZzdF90IH5mOkVpdGhlci5maXJzdDsgbWFwIHNuZF90IH5mOkVpdGhlci5zZWNvbmQgXVxuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbjs7XG5cbmxldCBsaXN0X2dlbmVyaWMgP21pbl9sZW5ndGggP21heF9sZW5ndGggZWx0X2dlbiA9XG4gIGxldCViaW5kIHNpemVzID0gc2l6ZXMgP21pbl9sZW5ndGggP21heF9sZW5ndGggKCkgaW5cbiAgTGlzdC5tYXAgc2l6ZXMgfmY6KGZ1biBzaXplIC0+IHdpdGhfc2l6ZSB+c2l6ZSBlbHRfZ2VuKSB8PiBhbGxcbjs7XG5cbmxldCBsaXN0IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgZWx0X2dlblxubGV0IGxpc3Rfbm9uX2VtcHR5IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6MSBlbHRfZ2VuXG5cbmxldCBsaXN0X3dpdGhfbGVuZ3RoIGVsdF9nZW4gfmxlbmd0aCA9XG4gIGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoIGVsdF9nZW5cbjs7XG5cbmxldCBsaXN0X2ZpbHRlcmVkIGVsdHMgPVxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgbGVuZ3RoX29mX2lucHV0ID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGxlbmd0aF9vZl9vdXRwdXQgPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTpsZW5ndGhfb2ZfaW5wdXQgaW5cbiAgICBsZXQgaW5kaWNlcyA9IEFycmF5LmluaXQgbGVuZ3RoX29mX2lucHV0IH5mOkZuLmlkIGluXG4gICAgKCogQ2hvb3NlIFtsZW5ndGhfb2Zfb3V0cHV0XSByYW5kb20gdmFsdWVzIGluIHRoZSBwcmVmaXggb2YgW2luZGljZXNdLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfb2Zfb3V0cHV0IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaToobGVuZ3RoX29mX2lucHV0IC0gMSkgaW5cbiAgICAgIEFycmF5LnN3YXAgaW5kaWNlcyBpIGpcbiAgICBkb25lO1xuICAgICgqIFNvcnQgdGhlIGNob3NlbiBpbmRpY2VzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHRoZW0uICopXG4gICAgQXJyYXkuc29ydCBpbmRpY2VzIH5wb3M6MCB+bGVuOmxlbmd0aF9vZl9vdXRwdXQgfmNvbXBhcmU6SW50LmNvbXBhcmU7XG4gICAgKCogUmV0dXJuIHRoZSBjaG9zZW4gZWxlbWVudHMuICopXG4gICAgTGlzdC5pbml0IGxlbmd0aF9vZl9vdXRwdXQgfmY6KGZ1biBpIC0+IGVsdHMuKGluZGljZXMuKGkpKSkpXG47O1xuXG5sZXQgbGlzdF9wZXJtdXRhdGlvbnMgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmkgaW5cbiAgICAgIEFycmF5LnN3YXAgYXJyYXkgaSBqXG4gICAgZG9uZTtcbiAgICBBcnJheS50b19saXN0IGFycmF5KVxuOztcblxubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbFxuXG5sZXQgY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOihDaGFyLnRvX2ludCBsbykgfmhpOihDaGFyLnRvX2ludCBoaSlcbiAgICB8PiBDaGFyLnVuc2FmZV9vZl9pbnQpXG47O1xuXG5sZXQgY2hhcl91cHBlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdBJyAnWidcbmxldCBjaGFyX2xvd2VyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ2EnICd6J1xubGV0IGNoYXJfZGlnaXQgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcwJyAnOSdcbmxldCBjaGFyX3ByaW50X3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcgJyAnfidcbmxldCBjaGFyX3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIENoYXIubWluX3ZhbHVlIENoYXIubWF4X3ZhbHVlXG5sZXQgY2hhcl9hbHBoYSA9IHVuaW9uIFsgY2hhcl9sb3dlcmNhc2U7IGNoYXJfdXBwZXJjYXNlIF1cblxubGV0IGNoYXJfYWxwaGFudW0gPVxuICB3ZWlnaHRlZF91bmlvblxuICAgICgqIE1vc3QgcGVvcGxlIHByb2JhYmx5IGV4cGVjdCB0aGlzIHRvIGJlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24sIG5vdCB3ZWlnaHRlZFxuICAgICAgIHRvd2FyZCBkaWdpdHMgbGlrZSB3ZSB3b3VsZCBnZXQgd2l0aCBbdW5pb25dIChzaW5jZSB0aGVyZSBhcmUgZmV3ZXIgZGlnaXRzIHRoYW5cbiAgICAgICBsZXR0ZXJzKS4gKilcbiAgICBbIDUyLiwgY2hhcl9hbHBoYTsgMTAuLCBjaGFyX2RpZ2l0IF1cbjs7XG5cbmxldCBjaGFyX3doaXRlc3BhY2UgPSBvZl9saXN0IChMaXN0LmZpbHRlciBDaGFyLmFsbCB+ZjpDaGFyLmlzX3doaXRlc3BhY2UpXG5sZXQgY2hhcl9wcmludCA9IHdlaWdodGVkX3VuaW9uIFsgMTAuLCBjaGFyX2FscGhhbnVtOyAxLiwgY2hhcl9wcmludF91bmlmb3JtIF1cblxubGV0IGNoYXIgPVxuICB3ZWlnaHRlZF91bmlvblxuICAgIFsgMTAwLiwgY2hhcl9wcmludFxuICAgIDsgMTAuLCBjaGFyX3VuaWZvcm1cbiAgICA7IDEuLCByZXR1cm4gQ2hhci5taW5fdmFsdWVcbiAgICA7IDEuLCByZXR1cm4gQ2hhci5tYXhfdmFsdWVcbiAgICBdXG47O1xuXG4oKiBQcm9kdWNlcyBhIG51bWJlciBmcm9tIDAgb3IgMSB0byBzaXplICsgMSwgd2VpZ2h0ZWQgaGlnaC4gV2UgaGF2ZSBmb3VuZCB0aGlzXG4gICBkaXN0cmlidXRpb24gZW1waXJpY2FsbHkgdXNlZnVsIGZvciBzdHJpbmcgbGVuZ3Rocy4gKilcbmxldCBzbWFsbF9pbnQgfmFsbG93X3plcm8gPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGxvd2VyX2JvdW5kID0gaWYgYWxsb3dfemVybyB0aGVuIDAgZWxzZSAxIGluXG4gICAgbGV0IHVwcGVyX2JvdW5kID0gc2l6ZSArIDEgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfbG93ID1cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOih1cHBlcl9ib3VuZCAtIGxvd2VyX2JvdW5kKVxuICAgIGluXG4gICAgbGV0IHdlaWdodGVkX2hpZ2ggPSB1cHBlcl9ib3VuZCAtIHdlaWdodGVkX2xvdyBpblxuICAgIHdlaWdodGVkX2hpZ2gpXG47O1xuXG5sZXQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86dHJ1ZVxubGV0IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzpmYWxzZVxuXG5tb2R1bGUgdHlwZSBJbnRfd2l0aF9yYW5kb20gPSBzaWdcbiAgaW5jbHVkZSBJbnQuU1xuXG4gIHZhbCB1bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuICB2YWwgbG9nX3VuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG5lbmRcblxubW9kdWxlIEZvcl9pbnRlZ2VyIChJbnRlZ2VyIDogSW50X3dpdGhfcmFuZG9tKSA9IHN0cnVjdFxuICBsZXQgdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLnVuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IGxvZ191bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIubG9nX3VuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IG5vbl91bmlmb3JtIGYgbG8gaGkgPVxuICAgIHdlaWdodGVkX3VuaW9uIFsgMC4wNSwgcmV0dXJuIGxvOyAwLjA1LCByZXR1cm4gaGk7IDAuOSwgZiBsbyBoaSBdXG4gIDs7XG5cbiAgbGV0IGluY2x1c2l2ZSA9IG5vbl91bmlmb3JtIHVuaWZvcm1faW5jbHVzaXZlXG4gIGxldCBsb2dfaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4gIGxldCB1bmlmb3JtX2FsbCA9IHVuaWZvcm1faW5jbHVzaXZlIEludGVnZXIubWluX3ZhbHVlIEludGVnZXIubWF4X3ZhbHVlXG5cbiAgbGV0IGFsbCA9XG4gICAgWyVtYXBcbiAgICAgIGxldCBuZWdhdGl2ZSA9IGJvb2xcbiAgICAgIGFuZCBtYWduaXR1ZGUgPSBsb2dfaW5jbHVzaXZlIEludGVnZXIuemVybyBJbnRlZ2VyLm1heF92YWx1ZSBpblxuICAgICAgaWYgbmVnYXRpdmUgdGhlbiBJbnRlZ2VyLmJpdF9ub3QgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludFxuICBlbmQpXG5cbmxldCBpbnQgPSBGb3JfaW50LmFsbFxubGV0IGludF91bmlmb3JtID0gRm9yX2ludC51bmlmb3JtX2FsbFxubGV0IGludF9pbmNsdXNpdmUgPSBGb3JfaW50LmluY2x1c2l2ZVxubGV0IGludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZVxubGV0IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDMyID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50MzJcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50MzJcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQzMlxuICBlbmQpXG5cbmxldCBpbnQzMiA9IEZvcl9pbnQzMi5hbGxcbmxldCBpbnQzMl91bmlmb3JtID0gRm9yX2ludDMyLnVuaWZvcm1fYWxsXG5sZXQgaW50MzJfaW5jbHVzaXZlID0gRm9yX2ludDMyLmluY2x1c2l2ZVxubGV0IGludDMyX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfaW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDYzID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjNcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2M1xuICBlbmQpXG5cbmxldCBpbnQ2MyA9IEZvcl9pbnQ2My5hbGxcbmxldCBpbnQ2M191bmlmb3JtID0gRm9yX2ludDYzLnVuaWZvcm1fYWxsXG5sZXQgaW50NjNfaW5jbHVzaXZlID0gRm9yX2ludDYzLmluY2x1c2l2ZVxubGV0IGludDYzX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX25hdGl2ZWludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE5hdGl2ZWludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5uYXRpdmVpbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5uYXRpdmVpbnRcbiAgZW5kKVxuXG5sZXQgbmF0aXZlaW50ID0gRm9yX25hdGl2ZWludC5hbGxcbmxldCBuYXRpdmVpbnRfdW5pZm9ybSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9hbGxcbmxldCBuYXRpdmVpbnRfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ19pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBmbG9hdF96ZXJvX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAwLlxubGV0IGZsb2F0X3plcm9fbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIDAuXG5cbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID1cbiAgRmxvYXQub25lX3VscCBgRG93biBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gRmxvYXQubWF4X2Zpbml0ZV92YWx1ZVxubGV0IGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X2luZl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9pbmZfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfbmFuX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5uYW5cbmxldCBmbG9hdF9taW5fbmFuX21hbnRpc3NhID0gSW50NjMuc3VjYyBmbG9hdF9pbmZfbWFudGlzc2FcbmxldCBmbG9hdF9tYXhfbmFuX21hbnRpc3NhID0gZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYVxubGV0IGZsb2F0X251bV9tYW50aXNzYV9iaXRzID0gNTJcblxuKCogV2Ugd2VpZ2h0IG1hbnRpc3NhcyBzbyB0aGF0IFwiaW50ZWdlci1saWtlXCIgdmFsdWVzLCBhbmQgdmFsdWVzIHdpdGggb25seSBhIGZldyBkaWdpdHNcbiAgIHBhc3QgdGhlIGRlY2ltYWwsIGFyZSByZWFzb25hYmx5IGNvbW1vbi4gKilcbmxldCBmbG9hdF9ub3JtYWxfbWFudGlzc2EgPVxuICBsZXQlYmluZCBudW1fYml0cyA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmUgMCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBpblxuICBsZXQlbWFwIGJpdHMgPVxuICAgIEZvcl9pbnQ2My5pbmNsdXNpdmUgSW50NjMuemVybyAoSW50NjMucHJlZCAoSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHMpKVxuICBpblxuICBJbnQ2My5zaGlmdF9sZWZ0IGJpdHMgKEludC4oIC0gKSBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBudW1fYml0cylcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oICsgKSBsb3dlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCAtICkgdXBwZXJfYm91bmQgb2Zmc2V0XG47O1xuXG4oKiBXZSB3ZWlnaHQgZXhwb25lbnRzIHN1Y2ggdGhhdCB2YWx1ZXMgbmVhciAxIGFyZSBtb3JlIGxpa2VseS4gKilcbmxldCBmbG9hdF9leHBvbmVudCA9XG4gIGxldCBtaWRwb2ludCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMS4gaW5cbiAgdW5pb25cbiAgICBbIGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCBtaWRwb2ludFxuICAgIDsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IG1pZHBvaW50IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnRcbiAgICBdXG47O1xuXG5sZXQgZmxvYXRfemVybyA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF96ZXJvX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X3plcm9fbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9XG4gICAgRm9yX2ludDYzLmxvZ19pbmNsdXNpdmUgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhXG4gIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IGZsb2F0X2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IGZsb2F0X25vcm1hbF9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9pbmZpbml0ZSA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF9pbmZfZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfaW5mX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbmFuID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X25hbl9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBGb3JfaW50NjMuaW5jbHVzaXZlIGZsb2F0X21pbl9uYW5fbWFudGlzc2EgZmxvYXRfbWF4X25hbl9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiBmbG9hdF96ZXJvXG4gIHwgU3Vibm9ybWFsIC0+IGZsb2F0X3N1Ym5vcm1hbFxuICB8IE5vcm1hbCAtPiBmbG9hdF9ub3JtYWxcbiAgfCBJbmZpbml0ZSAtPiBmbG9hdF9pbmZpbml0ZVxuICB8IE5hbiAtPiBmbG9hdF9uYW5cbjs7XG5cbmxldCBmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gMS5cbiAgfCBTdWJub3JtYWwgLT4gMTAuXG4gIHwgTm9ybWFsIC0+IDEwMC5cbiAgfCBJbmZpbml0ZSAtPiAxLlxuICB8IE5hbiAtPiAxLlxuOztcblxubGV0IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgZmlsdGVyID1cbiAgTGlzdC5maWx0ZXJfbWFwIEZsb2F0LkNsYXNzLmFsbCB+ZjooZnVuIGMgLT5cbiAgICBpZiBmaWx0ZXIgYyB0aGVuIFNvbWUgKGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjLCBmbG9hdF9vZl9jbGFzcyBjKSBlbHNlIE5vbmUpXG4gIHw+IHdlaWdodGVkX3VuaW9uXG47O1xuXG5sZXQgZmxvYXRfZmluaXRlID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfd2l0aG91dF9uYW4gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCB8IEluZmluaXRlIC0+IHRydWVcbiAgICB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdCA9IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1biBfIC0+IHRydWUpXG5cbmxldCBmbG9hdF9maW5pdGVfbm9uX3plcm8gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IFplcm8gfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9wb3NpdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X25lZ2F0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF9wb3NpdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfbmVnYXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGlmIChub3QgKEZsb2F0LmlzX2Zpbml0ZSBsb3dlcl9ib3VuZCkpIHx8IG5vdCAoRmxvYXQuaXNfZmluaXRlIHVwcGVyX2JvdW5kKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IGJvdW5kcyBhcmUgbm90IGZpbml0ZVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgbGV0IGxvd2VyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kIGluXG4gIGxldCB1cHBlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHVwcGVyX2JvdW5kIGluXG4gIGlmIGxvd2VyX2luY2x1c2l2ZSA+IHVwcGVyX2luY2x1c2l2ZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IHJlcXVlc3RlZCByYW5nZSBpcyBlbXB0eVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzpsb3dlcl9pbmNsdXNpdmUgfmhpOnVwcGVyX2luY2x1c2l2ZSlcbjs7XG5cbmxldCBmbG9hdF9pbmNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBpZiBGbG9hdC5lcXVhbCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICB0aGVuIHJldHVybiBsb3dlcl9ib3VuZFxuICBlbHNlIGlmIEZsb2F0LiggPSApIChGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCkgdXBwZXJfYm91bmRcbiAgdGhlbiB1bmlvbiBbIHJldHVybiBsb3dlcl9ib3VuZDsgcmV0dXJuIHVwcGVyX2JvdW5kIF1cbiAgZWxzZVxuICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICBbIDAuMDUsIHJldHVybiBsb3dlcl9ib3VuZFxuICAgICAgOyAwLjA1LCByZXR1cm4gdXBwZXJfYm91bmRcbiAgICAgIDsgMC45LCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICAgICAgXVxuOztcblxubGV0IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoID1cbiAgbGlzdF93aXRoX2xlbmd0aCBjaGFyX2dlbiB+bGVuZ3RoIHw+IG1hcCB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0XG47O1xuXG5sZXQgc3RyaW5nX29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZyA9IHN0cmluZ19vZiBjaGFyXG5sZXQgc3RyaW5nX25vbl9lbXB0eSA9IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhclxubGV0IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoID0gc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXIgfmxlbmd0aFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMuMCAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4gKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGF0b21pYyA6IF8gdFxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdhIFNlcXVlbmNlLnQpIC0+ICdhIHRcbiAgdmFsIHNocmluayA6ICdhIHQgLT4gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+ICdhIFNlcXVlbmNlLnRcblxuICBsZXQgYXRvbWljIF8gPSBTZXF1ZW5jZS5lbXB0eVxuICBsZXQgY3JlYXRlID0gRm4uaWRcbiAgbGV0IHNocmluayA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBtYXAgdCB+ZiB+Zl9pbnZlcnNlID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxubGV0IGZpbHRlciB0IH5mID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXIgfmYgKHNocmluayB0IHgpKVxuXG5sZXQgZmlsdGVyX21hcCB0IH5mIH5mX2ludmVyc2UgPVxuICBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlcl9tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxuOztcblxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5vZl9sYXp5IChsYXp5IChzaHJpbmsgKGZvcmNlIGxhenlfdCkgeCkpKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2Zfc2hyaW5rZXIgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX3Nocmlua2VyIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgWyBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOihmdW4gZnN0IC0+IGZzdCwgc25kKVxuICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOihmdW4gc25kIC0+IGZzdCwgc25kKVxuICAgICAgXSlcbjs7XG5cbmxldCB1bml0ID0gYXRvbWljXG5sZXQgYm9vbCA9IGF0b21pY1xubGV0IGNoYXIgPSBhdG9taWNcbmxldCBpbnQgPSBhdG9taWNcbmxldCBpbnQzMiA9IGF0b21pY1xubGV0IGludDYzID0gYXRvbWljXG5sZXQgaW50NjQgPSBhdG9taWNcbmxldCBuYXRpdmVpbnQgPSBhdG9taWNcbmxldCBmbG9hdCA9IGF0b21pY1xuXG5sZXQgYmlnYXJyYXkxIHNyYyA9XG4gIGxldCBkaW0gPSBCaWdhcnJheS5BcnJheTEuZGltIHNyYyBpblxuICBtYXRjaCBkaW0gd2l0aFxuICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgfCBfIC0+XG4gICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTEua2luZCBzcmMgaW5cbiAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkxLmxheW91dCBzcmMgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgIFNlcXVlbmNlLmluaXQgZGltIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IChkaW0gLSAxKSB+ZjooZnVuIGkgLT5cbiAgICAgICAgc3JjLntpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMX0pKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDMyX3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDY0X3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcblxubGV0IGJpZ2FycmF5MiA9XG4gIGxldCBtb2R1bGUgRGltcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGRpbTEgOiBpbnRcbiAgICAgIDsgZGltMiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgYSA9IEJpZ2FycmF5LkFycmF5Mi57IGRpbTEgPSBkaW0xIGE7IGRpbTIgPSBkaW0yIGEgfVxuICBlbmRcbiAgaW5cbiAgbGV0IHNocmluayBmaWVsZCBzcmMgPVxuICAgIGxldCBkaW1zID0gRGltcy5jcmVhdGUgc3JjIGluXG4gICAgbWF0Y2ggRmllbGQuZ2V0IGZpZWxkIGRpbXMgd2l0aFxuICAgIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTIua2luZCBzcmMgaW5cbiAgICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTIubGF5b3V0IHNyYyBpblxuICAgICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIGRpbXMgfmY6SW50LnByZWQgaW5cbiAgICAgIFNlcXVlbmNlLmluaXQgKEZpZWxkLmdldCBmaWVsZCBkaW1zKSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICAgIGxldCBza2lwIGkgPSBpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMSBpblxuICAgICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGRpbTEgZGltMiAtPlxuICAgICAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIHsgZGltMTsgZGltMiB9IH5mOnNraXAgaW5cbiAgICAgICAgICBzcmMue2RpbTEsIGRpbTJ9KSlcbiAgaW5cbiAgZnVuIHNyYyAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTEgc3JjOyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMiBzcmMgXVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxubGV0IGZsb2F0NjRfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiBOb25lKVxuICAgICAgICAoU2VxdWVuY2UubWFwIH5mOk9wdGlvbi5yZXR1cm4gKHNocmluayB2YWx1ZV90IHZhbHVlKSkpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGZpeGVkX3BvaW50IChmdW4gbGlzdF90IC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiB0YWlsXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBlbHRfdCBoZWFkKSB+ZjooZnVuIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgbGlzdF90IHRhaWwpIH5mOihmdW4gdGFpbCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgc3RyaW5nID0gbWFwIChsaXN0IGNoYXIpIH5mOlN0cmluZy5vZl9jaGFyX2xpc3QgfmZfaW52ZXJzZTpTdHJpbmcudG9fbGlzdFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmcgfmZfaW52ZXJzZTpCeXRlcy50b19zdHJpbmdcbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3QgfmZfaW52ZXJzZTpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlIH5mX2ludmVyc2U6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsIH5mX2ludmVyc2U6TGF6eS5mb3JjZVxuXG5sZXQgc2V4cCA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2hyaW5rZXIgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IFNleHAuTGlzdCBsIC0+XG4gICAgICAgIGxldCBzaHJpbmtfbGlzdCA9XG4gICAgICAgICAgc2hyaW5rIChsaXN0IHNocmlua2VyKSBsIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIGwgLT4gU2V4cC5MaXN0IGwpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaHJpbmtfdHJlZSA9IFNlcXVlbmNlLm9mX2xpc3QgbCBpblxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmlua19saXN0OyBzaHJpbmtfdHJlZSBdKSlcbjs7XG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6RWl0aGVyLmZpcnN0XG4gICAgfCBTZWNvbmQgc25kIC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6RWl0aGVyLnNlY29uZClcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcFxuICAgIChlaXRoZXIgb2tfdCBlcnJfdClcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG4gICAgfmZfaW52ZXJzZTooZnVuY3Rpb25cbiAgICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGFsaXN0ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3Bfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgYWxpc3QpIH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgaylcbiAgICBpblxuICAgIGxldCBzaHJpbmtfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUga2V5IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBrZXlfdCBrZXkpIH5mOihmdW4gc21hbGxlcl9rZXkgLT5cbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5OnNtYWxsZXJfa2V5IH5kYXRhXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgYE9rIHRyZWUgLT4gU29tZSB0cmVlXG4gICAgICAgICAgICAgfCBgRHVwbGljYXRlIC0+IE5vbmUpKSlcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZGF0YSA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBTZXF1ZW5jZS5tYXAgKHNocmluayBkYXRhX3QgZGF0YSkgfmY6KGZ1biBzbWFsbGVyX2RhdGEgLT5cbiAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnNldCB+Y29tcGFyYXRvciB0cmVlIH5rZXkgfmRhdGE6c21hbGxlcl9kYXRhKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3Bfa2V5czsgc2hyaW5rX2tleXM7IHNocmlua19kYXRhIF0pXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgbGlzdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3BfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgbGlzdCkgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2VsdHMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdCBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsgZWx0X3QgZWx0KSB+ZjooZnVuIHNtYWxsZXJfZWx0IC0+XG4gICAgICAgICAgICAgbWF0Y2ggU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5tZW0gfmNvbXBhcmF0b3IgdHJlZSBzbWFsbGVyX2VsdCB3aXRoXG4gICAgICAgICAgICAgfCB0cnVlIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICBTb21lIChTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB0cmVlIH5jb21wYXJhdG9yIHNtYWxsZXJfZWx0KSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2VsdHM7IHNocmlua19lbHRzIF0pXG47O1xuXG5sZXQgbWFwX3Qga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gbWFwX3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG1hcF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdClcbiAgICAgICAgfmY6KE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgbWFwX3QpXG47O1xuXG5sZXQgc2V0X3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBzZXRfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gU2V0LmNvbXBhcmF0b3Igc2V0X3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QpXG4gICAgICAgIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IHNldF90KVxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVGVzdF9pbnRmXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb25kZXRlcm1pbmlzdGljXG4gICAgICB8IERldGVybWluaXN0aWMgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbW9kdWxlIFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBzZXF1ZW5jZSA9XG4gICAgICBsZXQgcHJlZml4LCBzdWZmaXggPSBTZXF1ZW5jZS5zcGxpdF9uIHNlcXVlbmNlIDEwMCBpblxuICAgICAgbGV0IHByZWZpeCA9IExpc3QubWFwIHByZWZpeCB+ZjpzZXhwX29mX2VsdCBpblxuICAgICAgbGV0IHN1ZmZpeCA9XG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLmlzX2VtcHR5IHN1ZmZpeCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBbXVxuICAgICAgICB8IGZhbHNlIC0+IFsgWyVtZXNzYWdlIFwiLi4uXCJdIF1cbiAgICAgIGluXG4gICAgICBTZXhwLkxpc3QgKHByZWZpeCBAIHN1ZmZpeClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgc2VlZCA6IFNlZWQudFxuICAgIDsgdGVzdF9jb3VudCA6IGludFxuICAgIDsgc2hyaW5rX2NvdW50IDogaW50XG4gICAgOyBzaXplcyA6IGludCBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5lbmRcblxubGV0IGRlZmF1bHRfY29uZmlnIDogQ29uZmlnLnQgPVxuICB7IHNlZWQgPSBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG4gIDsgdGVzdF9jb3VudCA9IDEwXzAwMFxuICA7IHNocmlua19jb3VudCA9IDEwXzAwMFxuICA7IHNpemVzID0gU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCB+c3RhcnQ6YGluY2x1c2l2ZSAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICB9XG47O1xuXG5sZXQgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyA9XG4gIG1hdGNoIENvbmZpZy5zZWVkIGNvbmZpZyB3aXRoXG4gIHwgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgfCBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFN0cmluZy5oYXNoIHN0cmluZylcbjs7XG5cbmxldCBvbmVfc2l6ZV9wZXJfdGVzdCB+KGNvbmZpZyA6IENvbmZpZy50KSA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooY29uZmlnLnNpemVzLCAwKSB+ZjooZnVuIChzaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzKSAtPlxuICAgIG1hdGNoIG51bWJlcl9vZl9zaXplX3ZhbHVlcyA+PSBjb25maWcudGVzdF9jb3VudCB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBzaXplcyB3aXRoXG4gICAgICAgfCBTb21lIChzaXplLCByZW1haW5pbmdfc2l6ZXMpIC0+XG4gICAgICAgICBTb21lIChzaXplLCAocmVtYWluaW5nX3NpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgKyAxKSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IGluc3VmZmljaWVudCBzaXplIHZhbHVlcyBmb3IgdGVzdCBjb3VudFwiXG4gICAgICAgICAgICAgICB+dGVzdF9jb3VudDooY29uZmlnLnRlc3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAgICAobnVtYmVyX29mX3NpemVfdmFsdWVzIDogaW50KV0pKVxuOztcblxubGV0IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciA9XG4gIGxldCByZWMgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yID1cbiAgICBtYXRjaCBzaHJpbmtfY291bnQgd2l0aFxuICAgIHwgMCAtPiBpbnB1dCwgZXJyb3JcbiAgICB8IF8gLT5cbiAgICAgIGxldCBzaHJpbmtfY291bnQgPSBzaHJpbmtfY291bnQgLSAxIGluXG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBhbHRlcm5hdGVzIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gaW5wdXQsIGVycm9yXG4gICAgICAgfCBTb21lIChhbHRlcm5hdGUsIGFsdGVybmF0ZXMpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhbHRlcm5hdGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG4gICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgYWx0ZXJuYXRlIGluXG4gICAgICAgICAgICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgYWx0ZXJuYXRlIGVycm9yKSlcbiAgaW5cbiAgbGV0IHNocmlua19jb3VudCA9IENvbmZpZy5zaHJpbmtfY291bnQgY29uZmlnIGluXG4gIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGlucHV0IGluXG4gIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuOztcblxubGV0IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgPVxuICBsZXQgcmFuZG9tID0gaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyBpblxuICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAoU2VxdWVuY2Uub2ZfbGlzdCBleGFtcGxlcylcbiAgICAob25lX3NpemVfcGVyX3Rlc3QgfmNvbmZpZ1xuICAgICB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBzaXplIC0+IEdlbmVyYXRvci5nZW5lcmF0ZSBnZW5lcmF0b3IgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5sZXQgd2l0aF9zYW1wbGUgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBnZW5lcmF0b3IgPVxuICBsZXQgc2VxdWVuY2UgPSBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yIGluXG4gIGYgc2VxdWVuY2Vcbjs7XG5cbmxldCByZXN1bHQgKHR5cGUgYSkgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBtID1cbiAgbGV0IChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9IG0gaW5cbiAgd2l0aF9zYW1wbGUgTS5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29uZmlnIH5leGFtcGxlcyB+ZjooZnVuIHNlcXVlbmNlIC0+XG4gICAgbWF0Y2hcbiAgICAgIFNlcXVlbmNlLmZvbGRfcmVzdWx0IHNlcXVlbmNlIH5pbml0OigpIH5mOihmdW4gKCkgaW5wdXQgLT5cbiAgICAgICAgbWF0Y2ggZiBpbnB1dCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoaW5wdXQsIGVycm9yKSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICAgIGxldCBzaHJpbmtlciA9IE0ucXVpY2tjaGVja19zaHJpbmtlciBpblxuICAgICAgbGV0IGlucHV0LCBlcnJvciA9IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciBpblxuICAgICAgRXJyb3IgKGlucHV0LCBlcnJvcikpXG47O1xuXG5sZXQgcnVuICh0eXBlIGEpIH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBtYXRjaCByZXN1bHQgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNKSB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogdGVzdCBmYWlsZWRcIiAoaW5wdXQgOiBNLnQpIChlcnJvciA6IEVycm9yLnQpXVxuOztcblxubGV0IHdpdGhfc2FtcGxlX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgPVxuICBsZXQgZiB4ID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmIHgpIGluXG4gIHdpdGhfc2FtcGxlIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciB8PiBPcl9lcnJvci5va19leG5cbjs7XG5cbmxldCBydW5fZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGggfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBydW4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBPYnNlcnZlcjBcblxubGV0IHVubWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgdCAoZiB4KSB+c2l6ZSB+aGFzaClcbmxldCBvZl9oYXNoX2ZvbGQgZiA9IGNyZWF0ZSAoZnVuIHggfnNpemU6XyB+aGFzaCAtPiBmIGhhc2ggeClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZm9yY2UgbGF6eV90KSB4IH5zaXplIH5oYXNoKVxuXG5sZXQgZml4ZWRfcG9pbnQgd3JhcCA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAod3JhcCAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IHVuaXQgPSBvcGFxdWVcbmxldCBib29sID0gb2ZfaGFzaF9mb2xkIEJvb2wuaGFzaF9mb2xkX3RcbmxldCBjaGFyID0gb2ZfaGFzaF9mb2xkIENoYXIuaGFzaF9mb2xkX3RcbmxldCBpbnQgPSBvZl9oYXNoX2ZvbGQgSW50Lmhhc2hfZm9sZF90XG5sZXQgaW50MzIgPSBvZl9oYXNoX2ZvbGQgSW50MzIuaGFzaF9mb2xkX3RcbmxldCBpbnQ2MyA9IG9mX2hhc2hfZm9sZCBJbnQ2My5oYXNoX2ZvbGRfdFxubGV0IGludDY0ID0gb2ZfaGFzaF9mb2xkIEludDY0Lmhhc2hfZm9sZF90XG5sZXQgbmF0aXZlaW50ID0gb2ZfaGFzaF9mb2xkIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxubGV0IGZsb2F0ID0gb2ZfaGFzaF9mb2xkIEZsb2F0Lmhhc2hfZm9sZF90XG5sZXQgc3RyaW5nID0gb2ZfaGFzaF9mb2xkIFN0cmluZy5oYXNoX2ZvbGRfdFxubGV0IHNleHAgPSBvZl9oYXNoX2ZvbGQgU2V4cC5oYXNoX2ZvbGRfdFxubGV0IGJpZ3N0cmluZyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9jaGFyKVxubGV0IGZsb2F0MzJfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0MzJfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGJ5dGVzID0gdW5tYXAgc3RyaW5nIH5mOkJ5dGVzLnRvX3N0cmluZ1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIH5zaXplIH5oYXNoIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpXG4gICAgfCBTZWNvbmQgc25kIC0+IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMikpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaCBpblxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2ggaW5cbiAgICBoYXNoKVxuOztcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgdW5tYXAgKGVpdGhlciBvcGFxdWUgdmFsdWVfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZpcnN0ICgpXG4gICAgfCBTb21lIHZhbHVlIC0+IFNlY29uZCB2YWx1ZSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gbGlzdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICBHZW5lcmF0b3Iuc2l6ZXMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCAoKVxuICAgICAgfD4gR2VuZXJhdG9yLmdlbmVyYXRlIH5zaXplIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZDJfZXhuIGxpc3Qgc2l6ZXMgfmluaXQ6KGhhc2hfZm9sZF9pbnQgaGFzaCAwKSB+ZjooZnVuIGhhc2ggZWx0IHNpemUgLT5cbiAgICAgIG9ic2VydmUgZWx0X3QgZWx0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSkpKVxuOztcblxubGV0IGFycmF5IHQgPSB1bm1hcCAobGlzdCB0KSB+ZjpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSB1bm1hcCB0IH5mOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gdW5tYXAgdCB+ZjpMYXp5LmZvcmNlXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gZiB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgKCogRW1waXJpY2FsbHksIGRvdWJsaW5nIHRoZSBzaXplIHdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBpbnB1dHMgZ2l2ZXMgdXMgbXVjaFxuICAgICAgICAgYmV0dGVyIGNvdmVyYWdlIG9mIHRoZSBzcGFjZSBvZiBmdW5jdGlvbnMuICopXG4gICAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgKEdlbmVyYXRvci5zaXplcyAoKSkgfnNpemU6KHNpemUgKiAyKSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQgc2l6ZXMgfmluaXQ6aGFzaCB+ZjooZnVuIGhhc2ggc2l6ZSAtPlxuICAgICAgbGV0IHggPSBHZW5lcmF0b3IuZ2VuZXJhdGUgZG9tIH5zaXplIH5yYW5kb20gaW5cbiAgICAgIG9ic2VydmUgcm5nIChmIHgpIH5zaXplIH5oYXNoKSlcbjs7XG5cbmxldCBtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKGxpc3QgKGJvdGgga2V5X29icyBkYXRhX29icykpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3Rcbjs7XG5cbmxldCBzZXRfdHJlZSBlbHRfb2JzID0gdW5tYXAgKGxpc3QgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0XG5cbmxldCBtYXBfdCBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbjs7XG5cbmxldCBzZXRfdCBlbHRfb2JzID0gdW5tYXAgKHNldF90cmVlIGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiIsIm1vZHVsZSBHZW5lcmF0b3IgPSBHZW5lcmF0b3Jcbm1vZHVsZSBPYnNlcnZlciA9IE9ic2VydmVyXG5tb2R1bGUgU2hyaW5rZXIgPSBTaHJpbmtlclxubW9kdWxlIFRlc3QgPSBUZXN0XG5tb2R1bGUgRXhwb3J0ID0gRXhwb3J0XG5pbmNsdWRlIEV4cG9ydFxuXG4oKiovKiopXG5cbigqXyBUaGlzIG1vZHVsZSBpcyBleHBvc2VkIG9ubHkgdG8gbWFrZSBvY2FtbGRvYyBvdXRwdXQgbW9yZSByZWFkYWJsZS4gKilcbm1vZHVsZSBXaXRoX2Jhc2ljX3R5cGVzID0gV2l0aF9iYXNpY190eXBlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQmlnYXJyYXlfaGVscGVycyA9IEJpZ2FycmF5X2hlbHBlcnNcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIHRvX2Jhc2VfaW50X2V4biA6IHQgLT4gQmFzZS5JbnQudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl91aW50OCA6IHVpbnQ4IC0+IHRcbiAgICB2YWwgb2ZfdWludDE2IDogdWludDE2IC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX3RydW5jIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX2V4biA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF90cnVuYyA6IHVpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF9leG4gOiB1aW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50MzJfd3JhcCA6IGludDMyIC0+IHRcbiAgICB2YWwgb2ZfaW50MzJfZXhuIDogaW50MzIgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQmFja2VuZDMyIDogc2lnXG4gIHZhbCBpbXBsIDogKG1vZHVsZSBCYWNrZW5kMzJfUylcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gICAgICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICAgICAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9ICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB0cnVuYyB4XG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuIHhcblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludC5vZl9pbnQ2NF90cnVuYyA0Mjk0OTY3Mjk1TFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgICAgIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICAgICAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICAgICAgbGV0IG1hc2sgPSBCYXNlLkludDY0LnRvX2ludF90cnVuYyAweEZGRkZGRkZGTFxuICAgICAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgICAgIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gICAgICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IGV4bjY0IHggPVxuICAgICAgICBleG5fdW5zaWduZWRcbiAgICAgICAgICB+Y29udlxuICAgICAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgICAgICB+bWFzazptYXNrNjRcbiAgICAgICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgICAgIH5tb2RfbmFtZVxuICAgICAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgICAgICB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID1cbiAgICAgICAgQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgKGxvZ2FuZDY0IChCYXNlLkludDY0Lm9mX2ludDMyIHgpIG1hc2s2NClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSBCYXNlLkludC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQuKCA8PSApIHggKEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDIxNDc0ODM2NDdMKVxuICAgICAgICB0aGVuIEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50LnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBOID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IEJhc2UuSW50NjMudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjQudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4IDogdCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50MzIuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50MzIuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQzMi4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludDMyLiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDMyLiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQzMi4oIC8gKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IGNvbXBhcmUgeCB5ID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2NvbXBhcmUgeCB5IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IC0xbFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDMyLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMICYmIEJhc2UuSW50NjQuKCA8PSApIHggNDI5NDk2NzI5NUxcbiAgICAgICAgdGhlbiBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50MzIudG9faW50NjQgeCkgMHhGRkZGRkZGRkxcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICAgIHw+IEJhc2UuSW50MzIudG9faW50X2V4blxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDYzLnRvX2ludDY0IHgpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlbHVcIiB4KVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICAgICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgb2ZfYmFzZV9pbnQ2NF9leG4gd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG5cbiAgICAgIGxldCAoIC8gKSB4IHkgPVxuICAgICAgICBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDY0LiggLyApICh0b19iYXNlX2ludDY0IHgpICh0b19iYXNlX2ludDY0IHkpKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDY0Lm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDY0XCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjQub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzIHggPSBCYXNlLkludDYzLnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2NC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDY0LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2NC4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCBjb21wYXJlID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmVcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IC0xTFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2NFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gVWludDMyLnRvX2Jhc2VfaW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjMgKHggOiB1aW50NjMpIDogaW50NjQgPVxuICAgIEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiIHgpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2RpdlxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDhcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG4gIHZhbCBnZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG4gIHZhbCBnZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuICB2YWwgZ2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuICB2YWwgZ2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcbiAgdmFsIGdldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbiAgdmFsIGdldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OCAtPiB1bml0XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OCAtPiB1bml0XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgR2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50XG4gIHZhbCBnZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIHNldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudCAtPiB1bml0XG5lbmRcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogQ2FtbC5JbnQzMi50IC0+IENhbWwuSW50MzIudCA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCBzZXRfdWludDggOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuICBleHRlcm5hbCBzZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG4gIGV4dGVybmFsIHNldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMpXG4gIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlczBVbnNhZmUpXG4gICAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMwVW5zYWZlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMClcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMFVuc2FmZSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIEJpZ3N0cmluZzAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICAoIGNoYXJcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdFxuICAgICwgU3RkbGliLkJpZ2FycmF5LmNfbGF5b3V0IClcbiAgICAgIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCBnZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW0gOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbmVuZFxuXG5pbmNsdWRlIEJpZ3N0cmluZzBcblxuZXh0ZXJuYWwgYXV4X2NyZWF0ZSA6IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlczppbnQgLT4gc2l6ZTppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX2FsbG9jXCJcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBPbmUgbmVlZHMgdG8gdXNlIFtDYW1sLlN5cy53b3JkX3NpemVdIHNvIHRoYXQgaXRzIHZhbHVlIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZS4gKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IENhbWwuU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gQ2FtbC5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IENhbWwuU3lzLndvcmRfc2l6ZSA+IDMyXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLnZhbHVlIG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+ZGVmYXVsdDooLTEpXG4gIGluXG4gICgqIFRoaXMgY2hlY2sgaXMgaW1wb3J0YW50IGJlY2F1c2UgW2F1eF9jcmVhdGUgfnNpemU6KC0xKV0gcmFpc2VzIFtPdXRfb2ZfbWVtb3J5XSwgd2hpY2hcbiAgICAgY291bGQgYmUgY29uZnVzaW5nIGR1cmluZyBkZWJ1Z2dpbmcuICopXG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJjcmVhdGU6IHNpemUgPSAlZCA8IDBcIiBzaXplKTtcbiAgYXV4X2NyZWF0ZSB+bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5zaXplXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG5leHRlcm5hbCBpc19tbWFwcGVkIDogdCAtPiBib29sID0gXCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXCIgW0BAbm9hbGxvY11cblxubGV0IGluaXQgbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdC57aX0gPC0gZiBpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBwb3MgPCAwXCIpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBsZW4gPCAwXCIpO1xuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICAoKiBCZSBjYXJlZnVsIHdpdGggb3ZlcmZsb3chICBXZSBjb3VsZCBoYXZlIGJvZ29ucyBsaWtlIFtwb3MgPSBJbnQubWF4X3ZhbHVlXSBvciBbbGVuID1cbiAgICAgSW50Lm1heF92YWx1ZV0gcGFzc2VkIGJ5IHRoZSB1c2VyLiAqKVxuICBpZiBic3RyX2xlbiAtIHBvcyA8IGxlblxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiQmlnc3RyaW5nLiVzOiBsZW5ndGgoYnN0cikgPCBwb3MgKyBsZW5cIiBsb2MpXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6dFxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6dFxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpZ3N0cmluZ19ibGl0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCogRXhwb3NpbmcgdGhlIGV4dGVybmFsIHZlcnNpb24gb2YgZ2V0L3NldCBzdXBwb3J0cyBiZXR0ZXIgaW5saW5pbmcuICopXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxubW9kdWxlIEJpZ3N0cmluZ19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuZW5kXG5cbm1vZHVsZSBCeXRlc19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuZW5kXG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5tb2R1bGUgRnJvbV9ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCeXRlc19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6Ynl0ZXNcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJpZ3N0cmluZ19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dFxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnN0cmluZ1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dFxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFRvX2J5dGVzXG4gIGluY2x1ZGUgQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnc3RyaW5nMCkgKFRvX2J5dGVzKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGcm9tX3N0cmluZy5zdWJvXG5sZXQgb2ZfYnl0ZXMgPSBGcm9tX2J5dGVzLnN1Ym9cbmxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcuc3Vib1xubGV0IHRvX2J5dGVzID0gVG9fYnl0ZXMuc3Vib1xubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxubGV0IHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0ID0gZnVuY3Rpb25cbiAgfCBBdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYub2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjb3B5IHQgOiB0ID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG5sZXQgY29uY2F0ID1cbiAgbGV0IGFwcGVuZCB+c3JjIH5kc3QgfmRzdF9wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGxldCBzcmNfcG9zID0gMCBpblxuICAgIGxldCBkc3RfcG9zID0gIWRzdF9wb3NfcmVmIGluXG4gICAgYmxpdCB+ZHN0IH5kc3RfcG9zIH5zcmMgfnNyY19wb3MgfmxlbjtcbiAgICBkc3RfcG9zX3JlZiA6PSBkc3RfcG9zICsgbGVuXG4gIGluXG4gIGZ1biA/c2VwIGxpc3QgLT5cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGNyZWF0ZSAwXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCBoZWFkX2xlbiA9IGxlbmd0aCBoZWFkIGluXG4gICAgICBsZXQgc2VwX2xlbiA9IE9wdGlvbi52YWx1ZV9tYXAgc2VwIH5mOmxlbmd0aCB+ZGVmYXVsdDowIGluXG4gICAgICBsZXQgdGFpbF9jb3VudCA9IExpc3QubGVuZ3RoIHRhaWwgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBoZWFkX2xlbiArIChzZXBfbGVuICogdGFpbF9jb3VudCkgKyBMaXN0LnN1bSAobW9kdWxlIEludCkgdGFpbCB+ZjpsZW5ndGhcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbigqIHZpbTogc2V0IGZpbGV0eXBlPW9jYW1sIDogKilcblxuKCogQmluYXJ5LXBhY2tpbmcgbGlrZSBhY2Nlc3NvcnMgKilcblxuZXh0ZXJuYWwgaW50MzJfb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIGludDMyX3RvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBpbnQ2NF9vZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50NjRfdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzE2IDogdCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzY0IDogdCAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF8xNiA6IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxubGV0IGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0IGdldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50MzIgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfZ2V0XzMyIHQgcG9zXG47O1xuXG5sZXQgZ2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQ2NCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9nZXRfNjQgdCBwb3Ncbjs7XG5cbmxldCBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXQgc2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQzMikgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX3NldF8zMiB0IHBvcyB2XG47O1xuXG5sZXQgc2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQ2NCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX3NldF82NCB0IHBvcyB2XG47O1xuXG5sZXQgc2lnbl9leHRlbmRfMTYgdSA9ICh1IGxzbCAoSW50Lm51bV9iaXRzIC0gMTYpKSBhc3IgKEludC5udW1fYml0cyAtIDE2KVxuXG5sZXQgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MDAwIHx8IHggPiAweDdGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDggeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwIHx8IHggPiAweDdGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF8gfmxvYzpfIC0+ICgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IC0xIGxzbCAzMSAmJiB4IDwgMSBsc2wgMzFcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwICYmIHggPCAxIGxzbCAzMlxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ2NCB4IH5sb2MgPVxuICBpZiB4ID49IDBcbiAgdGhlbiAoKVxuICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKSlcbmxldCB1bnNhZmVfd3JpdGVfaW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKGdldF8xNiB0IHBvcylcbmxldCByZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAoZ2V0XzE2IHQgcG9zKSlcblxubGV0IHdyaXRlX2ludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX2ludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2IHQgfnBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfdWludDE2IHQgfnBvcyA9IGdldF8xNiB0IHBvc1xubGV0IHJlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2IChnZXRfMTYgdCBwb3MpXG5cbmxldCB3cml0ZV91aW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV91aW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyIHQgfnBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfaW50MzIgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbmxldCByZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKGdldF8zMiB0IHBvcylcbmxldCByZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyIChnZXRfMzIgdCBwb3MpKVxubGV0IHJlYWRfaW50MzIgdCB+cG9zID0gZ2V0XzMyIHQgcG9zXG5sZXQgcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAoZ2V0XzMyIHQgcG9zKVxubGV0IHdyaXRlX2ludDMyIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbmxldCB3cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcblxubGV0IHdyaXRlX2ludDMyX2ludF9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG47O1xuXG5sZXQgd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludCAoc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPVxuICB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50IChnZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID0gaW50NjRfdG9faW50IChzd2FwNjQgKGdldF82NCB0IHBvcykpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjQgdCB+cG9zID0gZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKGdldF82NCB0IHBvcylcbmxldCB3cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTYgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2IGVsc2UgdW5zYWZlX3JlYWRfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfdWludDE2XG47O1xuXG5sZXQgZ2V0X2ludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNiBlbHNlIHJlYWRfaW50MTZfc3dhcFxubGV0IGdldF9pbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTZfc3dhcCBlbHNlIHJlYWRfaW50MTZcbmxldCBnZXRfdWludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTYgZWxzZSByZWFkX3VpbnQxNl9zd2FwXG5sZXQgZ2V0X3VpbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2X3N3YXAgZWxzZSByZWFkX3VpbnQxNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNiBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2IGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2XG47O1xuXG5sZXQgc2V0X2ludDE2X2JlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X2V4biBlbHNlIHdyaXRlX2ludDE2X3N3YXBfZXhuXG5sZXQgc2V0X2ludDE2X2xlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MTZfZXhuXG5cbmxldCBzZXRfdWludDE2X2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9leG4gZWxzZSB3cml0ZV91aW50MTZfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfdWludDE2X2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX3VpbnQxNl9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMiBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzIgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyXG47O1xuXG5sZXQgZ2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyIGVsc2UgcmVhZF9pbnQzMl9zd2FwXG5sZXQgZ2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX3N3YXAgZWxzZSByZWFkX2ludDMyXG5sZXQgc2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMiBlbHNlIHdyaXRlX2ludDMyX3N3YXBcbmxldCBzZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX3N3YXAgZWxzZSB3cml0ZV9pbnQzMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludFxuOztcblxubGV0IGdldF9pbnQzMl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50IGVsc2UgcmVhZF9pbnQzMl9pbnRfc3dhcFxubGV0IGdldF9pbnQzMl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50X3N3YXAgZWxzZSByZWFkX2ludDMyX2ludFxuXG5sZXQgc2V0X2ludDMyX2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfaW50MzJfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludCBlbHNlIHJlYWRfaW50NjRfaW50X3N3YXBcbmxldCBnZXRfaW50NjRfbGVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgcmVhZF9pbnQ2NF9pbnRcbmxldCBzZXRfaW50NjRfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnQgZWxzZSB3cml0ZV9pbnQ2NF9pbnRfc3dhcFxubGV0IHNldF9pbnQ2NF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRfaW50XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0XG47O1xuXG5sZXQgZ2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0IGVsc2UgcmVhZF9pbnQ2NF9zd2FwXG5sZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXAgZWxzZSByZWFkX2ludDY0XG5sZXQgc2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NCBlbHNlIHdyaXRlX2ludDY0X3N3YXBcbmxldCBzZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NFxuXG5sZXQgaW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfaW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG5sZXQgdWludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX3VpbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbigqIFtQb2x5XSBpcyByZXF1aXJlZCBzbyB0aGF0IHdlIGNhbiBjb21wYXJlIHVuYm94ZWQgW2ludDY0XS4gKilcbmxldFtAaW5saW5lIGFsd2F5c10gaW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBDYW1sLk5hdGl2ZWludC4oc3ViIChzaGlmdF9sZWZ0IDFuIDMyKSAxbilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50MzJfb2ZfaW50MzJfdCBuID1cbiAgaWYgbm90X29uXzMyYml0XG4gIHRoZW5cbiAgICAoKiB1c2UgQ2FtbC5OYXRpdmVpbnQgdG8gZW5zdXJlIGlubGluaW5nIGV2ZW4gd2l0aG91dCB4LWxpYnJhcnktaW5saW5pbmcgKilcbiAgICBDYW1sLk5hdGl2ZWludC4odG9faW50IChsb2dhbmQgKG9mX2ludDMyIG4pIG1hc2szMl9uKSlcbiAgZWxzZSBpbnQzMl90b19pbnQgblxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2xlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2xlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfYmUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfYmUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2JlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuOztcblxubGV0IHNldF91aW50MzJfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9sZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9sZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDMyX2JlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfYmVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfYmVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxubGV0IGdldF91aW50MzJfYmUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2JlIHQgfnBvcylcblxubW9kdWxlIEludF9yZXByID0gc3RydWN0XG4gIG1vZHVsZSBGID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgIGxldCBnZXRfdWludDggdCBwb3MgPSBnZXRfdWludDggdCB+cG9zXG4gICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IHgpXG4gICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSBnZXRfMTYgdCBwb3NcbiAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gc2V0XzE2X3RydW5jIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gZ2V0XzMyIHQgcG9zXG4gICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gZ2V0XzY0IHQgcG9zXG4gICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gc2V0XzY0IHQgcG9zIHhcbiAgZW5kXG5cbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICAgIGxldCBnZXRfdWludDggdCBwb3MgPSB1bnNhZmVfZ2V0X3VpbnQ4IHQgfnBvc1xuICAgICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gdW5zYWZlX3NldF91aW50OCB0IH5wb3MgeFxuICAgICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG4gICAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzaWduX2V4dGVuZF8xNiA9IHNpZ25fZXh0ZW5kXzE2XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJsaXRcbmluY2x1ZGUgVGVzdF9ibGl0X2ludGZcblxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgb3BlbiBCbGl0XG5cbiAgdHlwZSAnYSBzcmNcbiAgdHlwZSAnYSBkc3RcblxuICAoKiAgdmFsIGJsaXQgICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIGJsaXRvIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0b1xuXG4gICgqICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgc3ViIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJcblxuICAoKnZhbCBzdWJvICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgc3VibyopXG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX3Rlc3RzX2dlbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2xcblxuICAgIHZhbCBvZl9ib29sIDogYm9vbCAtPiBib29sIHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB6XG5cbiAgbW9kdWxlIFNyYyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBEc3QgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAyXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBzID0gTm9uZVxuXG4gICAgICBsZXQgY3JlYXRlX3Rlc3RfY2FzZSAobnVtX3MsIG51bV9iKSA9XG4gICAgICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgYiB+bGVuOihudW1fcyArIG51bV9iKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gbnVtX3MgLSAxIGRvXG4gICAgICAgICAgYXJyLihpKSA8LSBzXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFyclxuICAgICAgOztcblxuICAgICAgbGV0IG9ubHlfc21hbGwgPSAxMF8wMDAsIDBcbiAgICAgIGxldCBvbmx5X2JpZyA9IDAsIDEwXzAwMFxuICAgICAgbGV0IGJvdGggPSAyNTMxLCA0NzE3XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIChjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwpIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+IHRydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBib3RoIGluXG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSB2IC0+IHYgPSAyNTMxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpID1cbiAgICAgICAgQXJyYXkuaW5pdCAxMDBfMDAwIH5mOihmdW4gaSAtPiBpZiBpID4gNTBfMDAwIHRoZW4gYiBlbHNlIHMpXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0cyBhcm91bmQgYSBnYXAqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBiZWdpbm5pbmcgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGVuZCBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgICAgZm9yIGxlbmd0aCA9IDAgdG8gNSBkb1xuICAgICAgICAgIGZvciBudW1fcyA9IDAgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICBsZXQgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggfmY6KGZ1biBpIC0+IGlmIGkgPCBudW1fcyB0aGVuIHMgZWxzZSBiKSBpblxuICAgICAgICAgICAgZm9yIHBvcyA9IC0xIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgICBmb3IgbGVuID0gLTEgdG8gbGVuZ3RoICsgMSBkb1xuICAgICAgICAgICAgICAgICgqdHJ5KilcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlID1cbiAgICAgICAgICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICAgICAgfnRvdGFsX2xlbmd0aDpsZW5ndGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5wb3MgfmxlbiB+Y29tcGFyZTplbHRfY29tcGFyZSBgTGFzdF9lcXVhbF90byBzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggc2hvdWxkX3JhaXNlLCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgRXJyb3IgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgT2sgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIHJhaXNlIGJ1dCBpdCBkaWRuJ3RcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIEVycm9yIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byBub3QgcmFpc2UsIGJ1dCBpdCByYWlzZWRcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIE9rIHJlc3VsdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHNlYXJjaGVkID0gbnVtX3MgLSAxIGluXG4gICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdF9yZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBzZWFyY2hlZCA8IHBvc1xuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPSAwXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHNlYXJjaGVkID49IHBvcyArIGxlblxuICAgICAgICAgICAgICAgICAgICB0aGVuIFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgU29tZSBzZWFyY2hlZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIG5vdCAoY29ycmVjdF9yZXN1bHQgPSByZXN1bHQpIHRoZW4gZmFpbHdpdGggXCJXcm9uZyByZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgKCp3aXRoIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aHMgXCJiaW5hcnlfc2VhcmNoIGJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgIChleG4sIGBsZW5ndGggbGVuZ3RoLCBgc2VhcmNoX2tleSBzZWFyY2hfa2V5LCBgcG9zIHBvcywgYGxlbiBsZW4pXG4gICAgICAgICAgICAgICAgICAgIDw6c2V4cF9vZjwgZXhuICogWyBgbGVuZ3RoIG9mIGludCBdICogWyBgc2VhcmNoX2tleSBvZiBpbnQgXVxuICAgICAgICAgICAgICAgICAgICogWyBgcG9zIG9mIGludCBdICogWyBgbGVuIG9mIGludCBdID4+KilcbiAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGEgPSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCAoRm9yX3Rlc3Qub2ZfYXJyYXkgYSlcblxuICAgICAgKCp0ZXN0IGZvciBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgeCA9IGlmIHggPSBiIHRoZW4gYFJpZ2h0IGVsc2UgYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDUwXzAwMFxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYFJpZ2h0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gTm9uZVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA5OV85OTlcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0IChNIDogQmluYXJ5X3NlYXJjaGFibGVfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBNLnRcbiAgICB0eXBlICdhIGVsdCA9IE0uZWx0XG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgZW5kKVxuXG5tb2R1bGUgVGVzdDEgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZTFfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBNLnRcbiAgICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gTS5Gb3JfdGVzdC5vZl9hcnJheVxuICAgICAgbGV0IGNvbXBhcmUgPSBCb29sLmNvbXBhcmVcbiAgICAgIGxldCBzbWFsbCA9IGZhbHNlXG4gICAgICBsZXQgYmlnID0gdHJ1ZVxuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gTS50XG4gICAgICB0eXBlIGVsdCA9IE0uZWx0XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTFfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGUxX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0MSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBNLnRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIEJhc2VcblxuKCoqIEVhY2ggc2luZ2xlX2Vycm9yIGlzIGEgcGF0aCBpbmRpY2F0aW5nIHRoZSBsb2NhdGlvbiB3aXRoaW4gdGhlIGRhdGFzdHJ1Y3R1cmUgaW5cbiAgICBxdWVzdGlvbiB0aGF0IGlzIGJlaW5nIHZhbGlkYXRlZCwgYWxvbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAqKVxudHlwZSBzaW5nbGVfZXJyb3IgPVxuICB7IHBhdGggOiBzdHJpbmcgbGlzdFxuICA7IGVycm9yIDogRXJyb3IudFxuICB9XG5cbnR5cGUgdCA9IHNpbmdsZV9lcnJvciBsaXN0XG50eXBlICdhIGNoZWNrID0gJ2EgLT4gdFxuXG5sZXQgcGFzcyA6IHQgPSBbXVxuXG5sZXQgZmFpbHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EgfSBdXG47O1xuXG5sZXQgZmFpbCBtZXNzYWdlID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSB9IF1cbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBmYWlsX3Mgc2V4cCA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlX3Mgc2V4cCB9IF1cbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0IG9mX2xpc3QgPSBMaXN0LmNvbmNhdFxuXG5sZXQgbmFtZSBuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXSAoKiB3aGVuIHN1Y2Nlc3NmdWwsIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGEgY2xvc3VyZSBmb3IgW35mXSwgYmVsb3cgKilcbiAgfCBfIC0+IExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4geyBwYXRoID0gbmFtZSA6OiBwYXRoOyBlcnJvciB9KVxuOztcblxubGV0IG5hbWVfbGlzdCBuIGwgPSBuYW1lIG4gKG9mX2xpc3QgbClcbmxldCBmYWlsX2ZuIG1lc3NhZ2UgXyA9IGZhaWwgbWVzc2FnZVxubGV0IHBhc3NfYm9vbCAoXyA6IGJvb2wpID0gcGFzc1xubGV0IHBhc3NfdW5pdCAoXyA6IHVuaXQpID0gcGFzc1xuXG5sZXQgcHJvdGVjdCBmIHYgPVxuICB0cnkgZiB2IHdpdGhcbiAgfCBleG4gLT5cbiAgICBmYWlsX3MgKFNleHAubWVzc2FnZSBcIkV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIHZhbGlkYXRpb25cIiBbIFwiXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBwcm90ZWN0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgIGYgKCk7XG4gICAgICAgcGFzcylcbiAgICAoKVxuOztcblxubGV0IHBhdGhfc3RyaW5nIHBhdGggPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgcGF0aFxuXG5sZXQgZXJyb3JzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+XG4gICAgRXJyb3IudG9fc3RyaW5nX2h1bSAoRXJyb3IudGFnIGVycm9yIH50YWc6KHBhdGhfc3RyaW5nIHBhdGgpKSlcbjs7XG5cbmxldCByZXN1bHRfZmFpbCB0ID1cbiAgT3JfZXJyb3IuZXJyb3JcbiAgICBcInZhbGlkYXRpb24gZXJyb3JzXCJcbiAgICAoTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiBwYXRoX3N0cmluZyBwYXRoLCBlcnJvcikpXG4gICAgWyVzZXhwX29mOiAoc3RyaW5nICogRXJyb3IudCkgTGlzdC50XVxuW0BAY29sZF1cbjs7XG5cbigqKiBbcmVzdWx0XSBpcyBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCAtLSBjYWxsaW5nIFtyZXN1bHRfZmFpbF0sXG4gICAgd2hpY2ggaXMgbm90IGlubGluZWFibGUsIGlzIGtleSB0byB0aGlzLiAqKVxubGV0IHJlc3VsdCB0ID0gaWYgTGlzdC5pc19lbXB0eSB0IHRoZW4gT2sgKCkgZWxzZSByZXN1bHRfZmFpbCB0XG5cbmxldCBtYXliZV9yYWlzZSB0ID0gT3JfZXJyb3Iub2tfZXhuIChyZXN1bHQgdClcbmxldCB2YWxpZF9vcl9lcnJvciBjaGVjayB4ID0gT3JfZXJyb3IubWFwIChyZXN1bHQgKHByb3RlY3QgY2hlY2sgeCkpIH5mOihmdW4gKCkgLT4geClcblxubGV0IGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgX3JlY29yZCB2ID1cbiAgbGV0IHJlc3VsdCA9IHByb3RlY3QgY2hlY2sgdiBpblxuICBuYW1lIChGaWVsZC5uYW1lIGZsZCkgcmVzdWx0XG47O1xuXG5sZXQgZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA9XG4gIGxldCB2ID0gRmllbGQuZ2V0IGZsZCByZWNvcmQgaW5cbiAgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdlxuOztcblxubGV0IGZpZWxkX2ZvbGRlciBjaGVjayByZWNvcmQgPVxuICAoKTtcbiAgZnVuIGFjYyBmbGQgLT4gZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA6OiBhY2Ncbjs7XG5cbmxldCBmaWVsZF9kaXJlY3RfZm9sZGVyIGNoZWNrID1cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYWNjIGZsZCByZWNvcmQgdiAtPlxuICAgIG1hdGNoIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHYgd2l0aFxuICAgIHwgW10gLT4gYWNjICgqIEF2b2lkIGFsbG9jYXRpbmcgYSBuZXcgbGlzdCBpbiB0aGUgc3VjY2VzcyBjYXNlICopXG4gICAgfCByZXN1bHQgLT4gcmVzdWx0IDo6IGFjYylcbjs7XG5cbmxldCBhbGwgY2hlY2tzIHYgPVxuICBsZXQgcmVjIGxvb3AgY2hlY2tzIHYgZXJycyA9XG4gICAgbWF0Y2ggY2hlY2tzIHdpdGhcbiAgICB8IFtdIC0+IGVycnNcbiAgICB8IGNoZWNrIDo6IGNoZWNrcyAtPlxuICAgICAgKG1hdGNoIHByb3RlY3QgY2hlY2sgdiB3aXRoXG4gICAgICAgfCBbXSAtPiBsb29wIGNoZWNrcyB2IGVycnNcbiAgICAgICB8IGVyciAtPiBsb29wIGNoZWNrcyB2IChlcnIgOjogZXJycykpXG4gIGluXG4gIG9mX2xpc3QgKExpc3QucmV2IChsb29wIGNoZWNrcyB2IFtdKSlcbjs7XG5cbmxldCBvZl9yZXN1bHQgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IGZhaWwgZXJyb3IpXG47O1xuXG5sZXQgb2ZfZXJyb3IgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IFsgeyBwYXRoID0gW107IGVycm9yIH0gXSlcbjs7XG5cbmxldCBib29sdGVzdCBmIH5pZl9mYWxzZSA9IHByb3RlY3QgKGZ1biB2IC0+IGlmIGYgdiB0aGVuIHBhc3MgZWxzZSBmYWlsIGlmX2ZhbHNlKVxuXG5sZXQgcGFpciB+ZnN0IH5zbmQgKGZzdF92YWx1ZSwgc25kX3ZhbHVlKSA9XG4gIG9mX2xpc3QgWyBuYW1lIFwiZnN0XCIgKHByb3RlY3QgZnN0IGZzdF92YWx1ZSk7IG5hbWUgXCJzbmRcIiAocHJvdGVjdCBzbmQgc25kX3ZhbHVlKSBdXG47O1xuXG5sZXQgbGlzdF9pbmRleGVkIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcGkgbGlzdCB+ZjooZnVuIGkgZWwgLT4gbmFtZSAoSW50LnRvX3N0cmluZyAoaSArIDEpKSAocHJvdGVjdCBjaGVjayBlbCkpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBsaXN0IH5uYW1lOmV4dHJhY3RfbmFtZSBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsIC0+XG4gICAgbWF0Y2ggcHJvdGVjdCBjaGVjayBlbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdCAtPlxuICAgICAgKCogZXh0cmEgbGV2ZWwgb2YgcHJvdGVjdGlvbiBpbiBjYXNlIGV4dHJhY3RfbmFtZSB0aHJvd3MgYW4gZXhjZXB0aW9uICopXG4gICAgICBwcm90ZWN0IChmdW4gdCAtPiBuYW1lIChleHRyYWN0X25hbWUgZWwpIHQpIHQpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBhbGlzdCB+bmFtZSBmIGxpc3QnID0gbGlzdCAoZnVuIChfLCB4KSAtPiBmIHgpIGxpc3QnIH5uYW1lOihmdW4gKGtleSwgXykgLT4gbmFtZSBrZXkpXG5sZXQgZmlyc3RfZmFpbHVyZSB0MSB0MiA9IGlmIExpc3QuaXNfZW1wdHkgdDEgdGhlbiB0MiBlbHNlIHQxXG5cbmxldCBvZl9lcnJvcl9vcHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGFzc1xuICB8IFNvbWUgZXJyb3IgLT4gZmFpbCBlcnJvclxuOztcblxubGV0IGJvdW5kZWQgfm5hbWUgfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4ID1cbiAgbWF0Y2ggTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4IHdpdGhcbiAgfCBJbl9yYW5nZSAtPiBwYXNzXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPD0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG4gIHwgQWJvdmVfdXBwZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPj0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggKysgKSB0MSB0MiA9IGNvbWJpbmUgdDEgdDJcbmVuZFxuIiwiXG4oKiBXZSBkbyBub3QgW2luY2x1ZGUgQmFzZV0gaGVyZSwgYW5kIGluc3RlYWQgaW1wb3J0IG1vZHVsZXMgdGhhdCBbQ29yZV0gZG9lc24ndCBleHRlbmQsXG4gICBiZWNhdXNlIHdlIHdhbnQgY29kZSBpbiBbQ29yZV0gdG8gYmUgY2xlYXIgd2hlbiBpdCByZWZlcmVuY2VzIGEgW0Jhc2VdIG1vZHVsZSB0aGF0XG4gICBbQ29yZV0gaXMgb3ZlcnJpZGluZy4gKilcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEJhc2UuQXBwbGljYXRpdmVcbm1vZHVsZSBBdmx0cmVlID0gQmFzZS5Bdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFzZS5CYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmFzZS5CaW5hcnlfc2VhcmNoXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmlzb25zXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEVxdWFsID0gQmFzZS5FcXVhbFxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRmxvYXRhYmxlID0gQmFzZS5GbG9hdGFibGVcbm1vZHVsZSBGb3JtYXR0ZXIgPSBCYXNlLkZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBCYXNlLkhhc2hcbm1vZHVsZSBIYXNoZXIgPSBCYXNlLkhhc2hlclxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gQmFzZS5JbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEludGFibGUgPSBCYXNlLkludGFibGVcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBCYXNlLkludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9tYXRoID0gQmFzZS5JbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEJhc2UuSW52YXJpYW50XG5tb2R1bGUgTW9uYWQgPSBCYXNlLk1vbmFkXG5tb2R1bGUgUG9seSA9IEJhc2UuUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gQmFzZS5QcmV0dHlfcHJpbnRlclxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gQmFzZS5TdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gQmFzZS5TeXNcbm1vZHVsZSBVY2hhciA9IEJhc2UuVWNoYXJcbm1vZHVsZSBXaXRoX3JldHVybiA9IEJhc2UuV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBCYXNlLldvcmRfc2l6ZVxuXG4oKiBXZSBkbyBpbmNsdWRlIFtCYXNlXSdzIHRvcC1sZXZlbCB2YWx1ZSBhbmQgdHlwZSBiaW5kaW5ncywgYmVjYXVzZSB0aGV5IGRvbid0IGNhdXNlXG4gICBhbnkgY29uZnVzaW9uLCBhbmQgZHVwbGljYXRpbmcgdGhlbSB3b3VsZCBiZSBlcnJvciBwcm9uZS4gKilcbmluY2x1ZGUgQmFzZS5FeHBvcnRcbmluY2x1ZGUgU3RkaW9cbmluY2x1ZGUgQmFzZV9mb3JfdGVzdHNcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9IFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS5hbV9ydW5uaW5nX2lubGluZV90ZXN0XG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKENhbWwuU3lzLmdldGVudiBcIlRFU1RJTkdfRlJBTUVXT1JLXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICAoKiBbQ2FtbC4qXSBuZXZlciByYWlzZXMgW05vdF9mb3VuZF9zXSAqKVxuICB8IENhbWwuTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG50eXBlICdhIGlkZW50aXR5ID0gJ2FcblxubW9kdWxlIE5vdF9mb3VuZCA9IHN0cnVjdFxuICBleGNlcHRpb25cbiAgICBOb3RfZm91bmQgPSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgICBbQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgICAgICAgIHt8W3NpbmNlIDIwMTgtMDJdIEluc3RlYWQgb2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgY29uc2lkZXIgdXNpbmcgW3JhaXNlX3NdIHdpdGggYW5cbmluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UuICBJZiBjb2RlIG5lZWRzIHRvIGRpc3Rpbmd1aXNoIFtOb3RfZm91bmRdIGZyb20gb3RoZXJcbmV4Y2VwdGlvbnMsIHBsZWFzZSBjaGFuZ2UgaXQgdG8gaGFuZGxlIGJvdGggW05vdF9mb3VuZF0gYW5kIFtOb3RfZm91bmRfc10uICBUaGVuLCBpbnN0ZWFkXG5vZiByYWlzaW5nIFtOb3RfZm91bmRdLCByYWlzZSBbTm90X2ZvdW5kX3NdIHdpdGggYW4gaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS58fV1cblxuICBleGNlcHRpb24gTm90X2ZvdW5kX3MgPSBCYXNlLk5vdF9mb3VuZF9zXG5lbmRcblxuaW5jbHVkZSBOb3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNleHBhYmxlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFN0cmluZ2FibGUuUykgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfcG9seV1cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTm9ib2R5ID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk5vYm9keSlcbiAgICBtb2R1bGUgTWUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTWUpXG4gICAgbW9kdWxlIFJlYWQgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZClcbiAgICBtb2R1bGUgV3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuV3JpdGUpXG4gICAgbW9kdWxlIFJlYWRfd3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZF93cml0ZSlcbiAgICBtb2R1bGUgSW1tdXRhYmxlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLkltbXV0YWJsZSlcblxuICAgIHR5cGUgbm9ib2R5ID0gTm9ib2R5LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbWUgPSBNZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSB3cml0ZSA9IFYxLldyaXRlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIHJlYWRfd3JpdGUgPSBWMS5SZWFkX3dyaXRlLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgJ2EgcGVybXMgPSAnYSBWMS5VcHBlcl9ib3VuZC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbm1vZHVsZSBFeHBvcnQgPSBTdGFibGUuRXhwb3J0XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBDb21wYXJhdG9yID0gQmFzZS5Db21wYXJhdG9yXG5cbnR5cGUgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIENvbXBhcmF0b3IudCA9IHByaXZhdGVcbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgfVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBDb21wYXJhdG9yIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuaW5jbHVkZSAoQ29tcGFyYXRvciA6IEJhc2VfbWFzaylcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgdCA9IHByaXZhdGVcbiAgICAgIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgICAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgICBtb2R1bGUgdHlwZSBTMSA9IFMxXG5cbiAgICBsZXQgbWFrZSA9IG1ha2VcblxuICAgIG1vZHVsZSBNYWtlID0gTWFrZVxuICAgIG1vZHVsZSBNYWtlMSA9IE1ha2UxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBSZXN1bHQgPSBCYXNlLlJlc3VsdFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFJlc3VsdC50ID1cbiAgICAgIHwgT2sgb2YgJ2FcbiAgICAgIHwgRXJyb3Igb2YgJ2JcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChmMiBlcnIpXG4gICAgICB8IE9rIHggLT4gT2sgKGYxIHgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxX3N0YWJsZV91bml0X3Rlc3QgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoc3RyaW5nLCBpbnQpIFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gICAgbGV0IHRlc3RzID1cbiAgICAgIFsgVjEuT2sgXCJmb29cIiwgXCIoT2sgZm9vKVwiLCBcIlxcMDAwXFwwMDNmb29cIjsgVjEuRXJyb3IgNywgXCIoRXJyb3IgNylcIiwgXCJcXDAwMVxcMDA3XCIgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFJlc3VsdFxuIiwiKCoqIEFuIGludGVyZmFjZSBmb3IgY3JlYXRpbmcgdW5pdCB0ZXN0cyB0byBjaGVjayBzdGFiaWxpdHkgb2Ygc2V4cCBhbmQgYmluLWlvXG4gICAgc2VyaWFsaXphdGlvbnMgKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcblxuXG4gICgqKiBbdGVzdHNdIGlzIGEgbGlzdCBvZiAodmFsdWUsIHNleHAtcmVwcmVzZW50YXRpb24sIGJpbi1pby1yZXByZXNlbnRhdGlvbikgdHJpcGxlcy5cbiAgICAgIFRoZSB1bml0IHRlc3RzIGNoZWNrIHRoYXQgdGhlIHR5cGUgcHJvcGVybHkgc2VyaWFsaXplcyBhbmRcbiAgICAgIGRlLXNlcmlhbGl6ZXMgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiByZXByZXNlbnRhdGlvbnMuICopXG4gIHZhbCB0ZXN0cyA6ICh0ICogc3RyaW5nICogc3RyaW5nKSBsaXN0XG5lbmRcblxuKCoqIFVub3JkZXJlZCBjb250YWluZXIgdGVzdHMgYXJlIGZvciB0eXBlcyB3aXRoIHNlcmlhbGl6YXRpb25zIHRoYXQgd2lsbCBjb250YWluIGFcbiAgICBjZXJ0YWluIHNldCBvZiBlbGVtZW50cyAoZWFjaCByZXByZXNlbnRlZCBieSBhIHNpbmdsZSBzZXhwIG9yIGJpbi1pbyBzdHJpbmcpIHdoaWNoIG1heVxuICAgIGFwcGVhciBpbiBhbnkgb3JkZXIsIHN1Y2ggYXMgaGFzaCB0YWJsZXMgYW5kIGhhc2ggc2V0cy4gKilcbm1vZHVsZSBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNleHBzIDogc3RyaW5nIGxpc3RcbiAgICA7IGJpbl9pb19oZWFkZXIgOiBzdHJpbmdcbiAgICA7IGJpbl9pb19lbGVtZW50cyA6IHN0cmluZyBsaXN0XG4gICAgfVxuZW5kXG5cbm1vZHVsZSB0eXBlIFVub3JkZXJlZF9jb250YWluZXJfYXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIHRlc3RzIDogKHQgKiBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QudCkgbGlzdFxuZW5kXG4iLCJsZXQgKCB8ISApIHggeSA9IHggfD4geVxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mICdzXG4gICAgfCBZaWVsZCBvZiAnYSAqICdzXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIHR5cGUgSGVhcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHBvcF9taW4gOiAnYSB0IC0+ICgnYSAqICdhIHQpIG9wdGlvblxuZW5kXG5cbmxldCBtZXJnZV9hbGwgKG1vZHVsZSBIZWFwIDogSGVhcCkgc2VxcyB+Y29tcGFyZSA9XG4gIGxldCBtb2R1bGUgTWVyZ2VfYWxsX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgaGVhcCA6ICgnYSAqICdhIEJhc2UuU2VxdWVuY2UudCkgSGVhcC50XG4gICAgICA7IG5vdF95ZXRfaW5faGVhcCA6ICdhIEJhc2UuU2VxdWVuY2UudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbiAgZW5kXG4gIGluXG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6XG4gICAgICAoTWVyZ2VfYWxsX3N0YXRlLmNyZWF0ZVxuICAgICAgICAgfmhlYXA6KEhlYXAuY3JlYXRlIH5jb21wYXJlOihCYXNlLkNvbXBhcmFibGUubGlmdCBjb21wYXJlIH5mOmZzdCkpXG4gICAgICAgICB+bm90X3lldF9pbl9oZWFwOnNlcXMpXG4gICAgfmY6KGZ1biB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCB9IC0+XG4gICAgICBtYXRjaCBub3RfeWV0X2luX2hlYXAgd2l0aFxuICAgICAgfCBzZXEgOjogbm90X3lldF9pbl9oZWFwIC0+XG4gICAgICAgIChtYXRjaCBFeHBlcnQubmV4dF9zdGVwIHNlcSB3aXRoXG4gICAgICAgICB8IERvbmUgLT4gU2tpcCB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9XG4gICAgICAgICB8IFNraXAgc2VxIC0+IFNraXAgeyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH1cbiAgICAgICAgIHwgWWllbGQgKGVsdCwgc2VxKSAtPiBTa2lwIHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0pXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBIZWFwLnBvcF9taW4gaGVhcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgICAgfCBTb21lICgoZWx0LCBzZXEpLCBoZWFwKSAtPiBZaWVsZCAoZWx0LCB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCA9IFsgc2VxIF0gfSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIHNleHBfZ3JhbW1hcl1cbiAgZW5kKVxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbm1vZHVsZSBQcml2YXRlID0gQmFzZS5BcnJheS5Qcml2YXRlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5BcnJheVxuXG4gIGxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG4gIGxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3BcbiAgOztcblxuICBsZXQgbmdldCB0IGkgPSB0Lihub3JtYWxpemUgdCBpKVxuICBsZXQgbnNldCB0IGkgdiA9IHQuKG5vcm1hbGl6ZSB0IGkpIDwtIHZcblxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICBvcGVuIEJhc2UuQXJyYXlcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IHNldCA9IHNldFxuICBlbmRcblxuICAoKiBTZWUgT0NhbWwgcGVyZiBub3RlcyBmb3Igd2h5IHRoZXNlIGFycmF5IGJsaXRzIGFyZSBzcGVjaWFsIGNhc2VkIC0tIGluIHBhcnRpY3VsYXIsXG4gICAgIHRoZSBzZWN0aW9uIGVudGl0bGVkIFwiRmFzdCwgU2xvdyBhbmQgSW5jb3JyZWN0IEFycmF5IGJsaXRzXCIgb2ZcbiAgICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTMwMjIwMDAwMjI5L2h0dHA6Ly9qYW5lc3RyZWV0LmdpdGh1Yi5jb20vb2NhbWwtcGVyZi1ub3Rlcy5odG1sICopXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gaW50IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRfXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0X1xuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dF9cbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRfXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSBCYXNlLkZsb2F0LmVxdWFsXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxLiBlbHNlIDAuXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwLlxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBlcm1pc3Npb25lZCA9IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdFxuXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhLCBfKSB0IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IChmbG9hdCwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpbml0IDogaW50IC0+IGY6KGludCAtPiAnYSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1ha2VfbWF0cml4IDogZGlteDppbnQgLT4gZGlteTppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29weV9tYXRyaXhcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGFwcGVuZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb25jYXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb3B5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbGwgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZGluZ19tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAnYiAqICdjKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAnYiAqICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpdGVyaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAnYiAqICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gaW5pdDonYiAtPiAnYlxuXG4gIHZhbCBzb3J0XG4gICAgOiAgP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3RcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuXG4gIHZhbCB0cmFuc3Bvc2VfZXhuXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBub3JtYWxpemUgOiAoJ2EsIF8pIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBuZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogKCdhIG9wdGlvbiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYSAtPiAnYiAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmb3JfYWxsMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBib29sXG5cbiAgdmFsIGV4aXN0czJfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBmOignYSAtPiAnYSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBwZXJtdXRlXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudFxuICAgIC0+ID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IHVuaXRcblxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgemlwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgc29ydGVkX2NvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBsYXN0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgSW50IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGludCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzpbPiByZWFkIF0gdFxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDpbPiB3cml0ZSBdIHRcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzpbPiByZWFkIF0gdFxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDpbPiB3cml0ZSBdIHRcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgdmFsIG9mX2FycmF5X2lkIDogJ2EgYXJyYXkgLT4gKCdhLCBbPCByZWFkX3dyaXRlIF0pIHRcbiAgdmFsIHRvX2FycmF5X2lkIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gJ2EgYXJyYXlcbiAgdmFsIHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA6ICgnYSwgWz4gaW1tdXRhYmxlIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuSW50XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkZsb2F0XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbGV0IHRvX2FycmF5X2lkID0gRm4uaWRcbiAgbGV0IG9mX2FycmF5X2lkID0gRm4uaWRcblxuICBpbmNsdWRlIChUIDogUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgbGV0IHRvX2FycmF5ID0gY29weVxuICBsZXQgdG9fc2VxdWVuY2VfaW1tdXRhYmxlID0gdG9fc2VxdWVuY2VfbXV0YWJsZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAnYSB0IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IGZsb2F0IHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooaW50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZm9sZGluZ19tYXAgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZF9tYXAgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2IgKiAnYyB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuICB2YWwgZm9sZGluZ19tYXBpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYyB0XG4gIHZhbCBmb2xkX21hcGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdiICogJ2MgdFxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+IGluaXQ6J2IgLT4gJ2JcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgc3RhYmxlX3NvcnQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgaXNfc29ydGVkIDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIGNvbmNhdF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHJhbnNwb3NlIDogJ2EgdCB0IC0+ICdhIHQgdCBvcHRpb25cbiAgdmFsIHRyYW5zcG9zZV9leG4gOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBub3JtYWxpemUgOiAnYSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIG5nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAnYSBvcHRpb24gdCAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBtYXAyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGluaXQ6J2MgLT4gZjooJ2MgLT4gJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgc3dhcCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EpIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSA6ICdhIHQgLT4gZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSAqICdhKSBvcHRpb25cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhXG4gIHZhbCBwZXJtdXRlIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiKSB0IC0+ICdhIHQgKiAnYiB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2YsICdzKSB0ID0gKCdmLCAncykgQmFzZS5FaXRoZXIudCA9XG4gICAgICB8IEZpcnN0IG9mICdmXG4gICAgICB8IFNlY29uZCBvZiAnc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgdHlwZXJlcF1cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuXG4gICAgdHlwZSB0ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50ID1cbiAgICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgICA7IHBvc19sbnVtIDogaW50XG4gICAgICA7IHBvc19ib2wgOiBpbnRcbiAgICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgQmluYWJsZV9leG4gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdCB8PiBbJXNleHBfb2Y6IHRdXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEV4bi5jcmVhdGVfc1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEV4dGVuZCAoSW5mbyA6IEJhc2UuSW5mby5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZm9cblxuICBtb2R1bGUgSW50ZXJuYWxfcmVwciA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5hYmxlX2V4biA9IEJpbmFibGVfZXhuLlN0YWJsZVxuXG4gICAgICBtb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBTdGFibGUuVjJcblxuICAgIGxldCB0b19pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cbiAgICBsZXQgb2ZfaW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50ZXJuYWxfcmVwci5TdGFibGUuVjIpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNleHApXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxuaW5jbHVkZSBFeHRlbmQgKEJhc2UuSW5mbylcblxuIiwiaW5jbHVkZSBCYXNlLkVycm9yXG5pbmNsdWRlIEluZm8uRXh0ZW5kIChCYXNlLkVycm9yKVxuXG5sZXQgZmFpbHdpdGhzID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGZhaWx3aXRocCA/c3RyaWN0IGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9yX2Vycm9yXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnX3dpdGhfdW5pdF9leHBlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPX3J1biA9IEJhc2UuT3JfZXJyb3JcblxuICBtb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZy5JT19mbHVzaFxuXG4gICAgbGV0IHRvX3J1biB0ID0gQmFzZS5Pcl9lcnJvci5yZXR1cm4gdFxuICBlbmRcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuICBsZXQgZmx1c2hlZCAoKSA9IHRydWVcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5lbmRcblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgSU8gPSBCYXNlLk9yX2Vycm9yXG4gIG1vZHVsZSBJT19ydW4gPSBJT1xuXG4gIG1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSU9cblxuICAgIGxldCB0b19ydW4gdCA9IHRcbiAgZW5kXG5cbiAgbGV0IHJ1biBmID0gb2tfZXhuIChmICgpKVxuICBsZXQgZmx1c2hlZCAoKSA9IHRydWVcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjEudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjIudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrX2ludGZcbm9wZW4gQmFzZV9xdWlja2NoZWNrXG5tb2R1bGUgRmxvYXQgPSBCYXNlLkZsb2F0XG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgT3B0aW9uID0gQmFzZS5PcHRpb25cblxubW9kdWxlIFBvbHltb3JwaGljX3R5cGVzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdmFyaWFudDIgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHZhcmlhbnQzID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHZhcmlhbnQ0ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdmFyaWFudDUgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHZhcmlhbnQ2ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIHwgYEYgb2YgJ2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiKSB0dXBsZTIgPSAnYSAqICdiIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHR1cGxlMyA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdHVwbGU0ID0gJ2EgKiAnYiAqICdjICogJ2QgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0dXBsZTUgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdHVwbGU2ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSAqICdmXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsICdyKSBmbjIgPSAnYSAtPiAnYiAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAncikgZm4zID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAncikgZm40ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgJ3IpIGZuNSA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsIC0nZiwgJ3IpIGZuNiA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5lbmRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICBsZXQgb2ZfaGFzaCAodHlwZSBhKSAobW9kdWxlIE0gOiBEZXJpdmluZ19oYXNoIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIG9mX2hhc2hfZm9sZCBNLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTZcbiAgbGV0IG9mX3ByZWRpY2F0ZSBhIGIgfmYgPSB1bm1hcCAodmFyaWFudDIgYSBiKSB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gYEEgeCBlbHNlIGBCIHgpXG4gIGxldCBzaW5nbGV0b24gKCkgPSBvcGFxdWVcbiAgbGV0IGRvdWJsZXRvbiBmID0gb2ZfcHJlZGljYXRlIChzaW5nbGV0b24gKCkpIChzaW5nbGV0b24gKCkpIH5mXG4gIGxldCBlbnVtIF8gfmYgPSB1bm1hcCBpbnQgfmZcblxuICBsZXQgb2ZfbGlzdCBsaXN0IH5lcXVhbCA9XG4gICAgbGV0IGYgeCA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRpIGxpc3QgfmY6KGZ1biBfIHkgLT4gZXF1YWwgeCB5KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJRdWlja2NoZWNrLk9ic2VydmVyLm9mX2xpc3Q6IHZhbHVlIG5vdCBmb3VuZFwiXG4gICAgICB8IFNvbWUgKGksIF8pIC0+IGlcbiAgICBpblxuICAgIGVudW0gKExpc3QubGVuZ3RoIGxpc3QpIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmICgpKSB4IH5zaXplIH5oYXNoKVxuXG4gIGxldCBjb21wYXJpc29uIH5jb21wYXJlIH5lcSB+bHQgfmd0ID1cbiAgICB1bm1hcFxuICAgICAgKHZhcmlhbnQzIGx0IChzaW5nbGV0b24gKCkpIGd0KVxuICAgICAgfmY6KGZ1biB4IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZSB4IGVxIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gYEEgeCBlbHNlIGlmIGMgPiAwIHRoZW4gYEMgeCBlbHNlIGBCIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyYXRvclxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgc2luZ2xldG9uID0gcmV0dXJuXG5cbiAgbGV0IGRvdWJsZXRvbiB4IHkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBpZiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSB0aGVuIHggZWxzZSB5KVxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGYgKCkpIH5zaXplIH5yYW5kb20pXG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5wIHNlcSA9XG4gICAgaWYgRmxvYXQuKCA8PSApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLlxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcHJvYmFiaWxpdHkgWyVmXSBvdXQgb2YgYm91bmRzXCIgcCk7XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXFcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZmluaXNoOihmdW4gKCkgLT4gZmFpbHdpdGggXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHJhbiBvdXQgb2YgdmFsdWVzXCIpXG4gICAgICB+ZjooZnVuICgpIHggfmsgLT4gd2VpZ2h0ZWRfdW5pb24gWyBwLCBzaW5nbGV0b24geDsgMS4gLS4gcCwgb2ZfZnVuIGsgXSlcbiAgOztcblxuICBsZXQgcmVjIGJvdW5kZWRfZ2VvbWV0cmljIH5wIH5tYXhpbXVtIGluaXQgPVxuICAgIGlmIGluaXQgPSBtYXhpbXVtXG4gICAgdGhlbiBzaW5nbGV0b24gbWF4aW11bVxuICAgIGVsc2VcbiAgICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICAgIFsgcCwgc2luZ2xldG9uIGluaXRcbiAgICAgICAgOyAxLiAtLiBwLCBvZl9mdW4gKGZ1biAoKSAtPiBib3VuZGVkX2dlb21ldHJpYyB+cCB+bWF4aW11bSAoaW5pdCArIDEpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IGdlb21ldHJpYyB+cCBpbml0ID0gYm91bmRlZF9nZW9tZXRyaWMgfnAgfm1heGltdW06SW50Lm1heF92YWx1ZSBpbml0XG4gIGxldCBzbWFsbF9ub25fbmVnYXRpdmVfaW50ID0gc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnRcbiAgbGV0IHNtYWxsX3Bvc2l0aXZlX2ludCA9IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludFxuICBsZXQgbGlzdF93aXRoX2xlbmd0aCBsZW5ndGggdCA9IGxpc3Rfd2l0aF9sZW5ndGggdCB+bGVuZ3RoXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNlxuICBsZXQgZm4yID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4yXG4gIGxldCBmbjMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjNcbiAgbGV0IGZuNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNFxuICBsZXQgZm41ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm41XG4gIGxldCBmbjYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjZcblxuICBsZXQgY29tcGFyZV9mbiBkb20gPVxuICAgIGZuIGRvbSBpbnQgPj58IGZ1biBnZXRfaW5kZXggeCB5IC0+IFslY29tcGFyZTogaW50XSAoZ2V0X2luZGV4IHgpIChnZXRfaW5kZXggeSlcbiAgOztcblxuICBsZXQgZXF1YWxfZm4gZG9tID0gY29tcGFyZV9mbiBkb20gPj58IGZ1biBjbXAgeCB5IC0+IEludC4oID0gKSAoY21wIHggeSkgMFxuZW5kXG5cbm1vZHVsZSBTaHJpbmtlciA9IHN0cnVjdFxuICBpbmNsdWRlIFNocmlua2VyXG5cbiAgbGV0IGVtcHR5ICgpID0gYXRvbWljXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEdlbmVyYXRvclxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEdlbmVyYXRvclxuICBlbmRcblxuICBpbmNsdWRlIEdlbmVyYXRvci5Nb25hZF9pbmZpeFxuXG4gIGxldCByZXR1cm4gPSBHZW5lcmF0b3IucmV0dXJuXG5lbmRcblxubW9kdWxlIENvbmZpZ3VyZSAoQ29uZmlnIDogUXVpY2tjaGVja19jb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgbGV0IG5vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbiAgbGV0IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICAgIHwgYERldGVybWluaXN0aWMgc3RyIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoWyVoYXNoOiBzdHJpbmddIHN0cilcbiAgOztcblxuICBsZXQgbWFrZV9zZWVkIHNlZWQgOiBUZXN0LkNvbmZpZy5TZWVkLnQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gTm9uZGV0ZXJtaW5pc3RpY1xuICAgIHwgYERldGVybWluaXN0aWMgc3RyaW5nIC0+IERldGVybWluaXN0aWMgc3RyaW5nXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2hyaW5rX2NvdW50ID0gZnVuY3Rpb25cbiAgICB8IGBFeGhhdXN0aXZlIC0+IEludC5tYXhfdmFsdWVcbiAgICB8IGBMaW1pdCBuIC0+IG5cbiAgOztcblxuICBsZXQgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyA6IFRlc3QuQ29uZmlnLnQgPVxuICAgIHsgc2VlZCA9IG1ha2Vfc2VlZCAoT3B0aW9uLnZhbHVlIHNlZWQgfmRlZmF1bHQ6ZGVmYXVsdF9zZWVkKVxuICAgIDsgc2l6ZXMgPSBPcHRpb24udmFsdWUgc2l6ZXMgfmRlZmF1bHQ6ZGVmYXVsdF9zaXplc1xuICAgIDsgdGVzdF9jb3VudCA9IE9wdGlvbi52YWx1ZSB0cmlhbHMgfmRlZmF1bHQ6ZGVmYXVsdF90cmlhbF9jb3VudFxuICAgIDsgc2hyaW5rX2NvdW50ID1cbiAgICAgICAgbWFrZV9zaHJpbmtfY291bnQgKE9wdGlvbi52YWx1ZSBzaHJpbmtfYXR0ZW1wdHMgfmRlZmF1bHQ6ZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMpXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX3Rlc3RfbSAodHlwZSBhKSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiA6IChtb2R1bGUgVGVzdC5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gT3B0aW9uLnZhbHVlIHNocmlua2VyIH5kZWZhdWx0OlNocmlua2VyLmF0b21pY1xuICAgICAgbGV0IHNleHBfb2ZfdCA9IE9wdGlvbi52YWx1ZSBzZXhwX29mIH5kZWZhdWx0Olslc2V4cF9vZjogX11cbiAgICBlbmRcbiAgICBpblxuICAgIChtb2R1bGUgTSlcbiAgOztcblxuICBsZXQgcmFuZG9tX3ZhbHVlID8oc2VlZCA9IGRlZmF1bHRfc2VlZCkgPyhzaXplID0gMzApIGdlbiA9XG4gICAgbGV0IHJhbmRvbSA9IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgaW5cbiAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuIH5zaXplIH5yYW5kb21cbiAgOztcblxuICBsZXQgcmFuZG9tX3NlcXVlbmNlID9zZWVkID9zaXplcyBnZW4gPVxuICAgIGxldCBjb25maWcgPVxuICAgICAgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHM6KFNvbWUgSW50Lm1heF92YWx1ZSkgfnNocmlua19hdHRlbXB0czpOb25lXG4gICAgaW5cbiAgICBsZXQgcmV0dXJuID0gcmVmIFNlcXVlbmNlLmVtcHR5IGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiByZXR1cm4gOj0gc2VxdWVuY2UpO1xuICAgICFyZXR1cm5cbiAgOztcblxuICBsZXQgaXRlciA/c2VlZCA/c2l6ZXMgP3RyaWFscyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzOk5vbmUgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IFNlcXVlbmNlLml0ZXIgc2VxdWVuY2UgfmYpXG4gIDs7XG5cbiAgbGV0IHRlc3QgP3NlZWQgP3NpemVzID90cmlhbHMgP3Nocmlua2VyID9zaHJpbmtfYXR0ZW1wdHMgP3NleHBfb2YgP2V4YW1wbGVzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1bl9leG4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3Rfb3JfZXJyb3JcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID90cmlhbHNcbiAgICAgICAgP3Nocmlua2VyXG4gICAgICAgID9zaHJpbmtfYXR0ZW1wdHNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgP2V4YW1wbGVzXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X2Rpc3RpbmN0X3ZhbHVlc1xuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfnRyaWFsc1xuICAgICAgICB+ZGlzdGluY3RfdmFsdWVzXG4gICAgICAgIH5jb21wYXJlXG4gICAgPVxuICAgIGxldCBtb2R1bGUgUyA9XG4gICAgICBDYW1sLlNldC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ga2V5XG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBsZXQgZmFpbCBzZXQgPVxuICAgICAgbGV0IGV4cGVjdF9jb3VudCA9IGRpc3RpbmN0X3ZhbHVlcyBpblxuICAgICAgbGV0IGFjdHVhbF9jb3VudCA9IFMuY2FyZGluYWwgc2V0IGluXG4gICAgICBsZXQgdmFsdWVzID1cbiAgICAgICAgbWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBzZXhwX29mX2VsdCAtPiBTb21lIFslc2V4cCAoUy5lbGVtZW50cyBzZXQgOiBlbHQgbGlzdCldXG4gICAgICBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImluc3VmZmljaWVudCBkaXN0aW5jdCB2YWx1ZXNcIlxuICAgICAgICAgICAgKHRyaWFscyA6IGludClcbiAgICAgICAgICAgIChleHBlY3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAoYWN0dWFsX2NvdW50IDogaW50KVxuICAgICAgICAgICAgKHZhbHVlcyA6IChCYXNlLlNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIFMuZW1wdHkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTLmFkZCBlbHQgIXNldDtcbiAgICAgICAgaWYgUy5jYXJkaW5hbCAhc2V0ID49IGRpc3RpbmN0X3ZhbHVlcyB0aGVuIHIucmV0dXJuICgpKTtcbiAgICAgIGZhaWwgIXNldClcbiAgOztcblxuICBsZXQgdGVzdF9jYW5fZ2VuZXJhdGVcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID8odHJpYWxzID0gZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQpXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgciA9IHJlZiBbXSBpblxuICAgIGxldCBmX2FuZF9lbnF1ZXVlIHJldHVybiB4ID0gaWYgZiB4IHRoZW4gcmV0dXJuIGBDYW5fZ2VuZXJhdGUgZWxzZSByIDo9IHggOjogIXIgaW5cbiAgICBtYXRjaFxuICAgICAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZfYW5kX2VucXVldWUgcmV0dXJuLnJldHVybik7XG4gICAgICAgIGBDYW5ub3RfZ2VuZXJhdGUpXG4gICAgd2l0aFxuICAgIHwgYENhbl9nZW5lcmF0ZSAtPiAoKVxuICAgIHwgYENhbm5vdF9nZW5lcmF0ZSAtPlxuICAgICAgKG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbm5vdCBnZW5lcmF0ZVwiXG4gICAgICAgfCBTb21lIHNleHBfb2ZfdmFsdWUgLT5cbiAgICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiY2Fubm90IGdlbmVyYXRlXCIgfmF0dGVtcHRzOighciA6IHZhbHVlIGxpc3QpXSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbmZpZ3VyZSAoc3RydWN0XG4gICAgbGV0IGRlZmF1bHRfc2VlZCA9IGBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG5cbiAgICBsZXQgZGVmYXVsdF90cmlhbF9jb3VudCA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgfCBXMzIgLT4gMV8wMDBcbiAgICA7O1xuXG4gICAgbGV0IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50ID0gMTBfMDAwXG4gICAgbGV0IGRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzID0gYExpbWl0IDEwMDBcblxuICAgIGxldCBkZWZhdWx0X3NpemVzID1cbiAgICAgIFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTMSA9IFMxXG5tb2R1bGUgdHlwZSBTMiA9IFMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFNfaW50XG5tb2R1bGUgdHlwZSBTX3JhbmdlID0gU19yYW5nZVxuXG50eXBlIG5vbnJlYyBzZWVkID0gc2VlZFxudHlwZSBub25yZWMgc2hyaW5rX2F0dGVtcHRzID0gc2hyaW5rX2F0dGVtcHRzXG5cbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlnID0gUXVpY2tjaGVja19jb25maWdcbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlndXJlZCA9IFF1aWNrY2hlY2tfY29uZmlndXJlZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUeXBlcmVwX2xpYi5TdGRcbmluY2x1ZGUgQmFzZS5MaXN0XG5cbnR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3NvY1xuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgY29tcGFyZSAodHlwZSBhIGIpIGNvbXBhcmVfYSBjb21wYXJlX2IgPSBbJWNvbXBhcmU6IChhICogYikgbGlzdF1cbmVuZFxuXG5sZXQgdG9fc3RyaW5nIH5mIHQgPVxuICBTZXhwbGliLlNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biB4IC0+IFNleHBsaWIuU2V4cC5BdG9tIHgpIChtYXAgdCB+ZikpXG47O1xuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RcbmxldCBnZW5fbm9uX2VtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X25vbl9lbXB0eVxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF93aXRoX2xlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciB+bGVuZ3RoXG47O1xuXG5sZXQgZ2VuX2ZpbHRlcmVkID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X2ZpbHRlcmVkXG5sZXQgZ2VuX3Blcm11dGF0aW9ucyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9wZXJtdXRhdGlvbnNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmxpc3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmxpc3RcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252XG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkID0gQ29udl9maWx0ZXJlZFxubW9kdWxlIHR5cGUgQ29udjEgPSBDb252MVxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZDEgPSBDb252X2ZpbHRlcmVkMVxubW9kdWxlIHR5cGUgUyA9IFF1aWNrY2hlY2suU1xubW9kdWxlIHR5cGUgUzEgPSBRdWlja2NoZWNrLlMxXG5tb2R1bGUgdHlwZSBTMiA9IFF1aWNrY2hlY2suUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gUXVpY2tjaGVjay5TX2ludFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udiB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOiBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9XG5zdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udjEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZCB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOlxuICBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZDEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNodGJsX2ludGYuSGFzaGFibGVcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IEhhc2h0YmxfaW50Zi5NZXJnZV9pbnRvX2FjdGlvblxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5cbm1vZHVsZSBDcmVhdG9ycyA9IEhhc2h0YmwuQ3JlYXRvcnNcblxuaW5jbHVkZSAoXG4gIEhhc2h0YmwgOlxuICBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQmFzZS5IYXNodGJsLlNfd2l0aG91dF9zdWJtb2R1bGVzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgfmNvbWJpbmVcbiAgICAgIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgKCdhLCAnYikgdF9fID0gKFQuS2V5LnQsICdiKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEhhc2h0YmwuQWNjZXNzb3JzXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfX1xuICAgICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleV9cblxuICAgICAgaW5jbHVkZVxuICAgICAgICBIYXNodGJsLk11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXyB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleV9cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgaGFzaHRibFxuICAgIGVuZClcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgdCA9IGludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2tleSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPSBQb2x5LnNleHBfb2ZfdCBULktleS5zZXhwX29mX3Qgc2V4cF9vZl92IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5LZXlcbiAgICAgICAgaW5jbHVkZSBLZXknXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSBLZXkudCAqICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGZhYmFiMGEtNDk5Mi0xMWU2LThjY2EtOWJhMmM0Njg2ZDllXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkhhc2h0YmwuYmluX3JlYWRfdDogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IEtleS50XVxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIGxldCBoYXNoYWJsZSA9XG4gICAgICB7IEhhc2hhYmxlLmhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNID0gSGFzaHRibC5NXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgRm9yX2Rlcml2aW5nIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoSGFzaHRibCA6IEhhc2h0YmwuRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5cbiAgbW9kdWxlIHR5cGUgTV9xdWlja2NoZWNrID0gTV9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2FsaXN0X29wdGlvbiBtIGFsaXN0ID0gUmVzdWx0Lm9rIChvZl9hbGlzdF9vcl9lcnJvciBtIGFsaXN0KVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX29ic2VydmVyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fYWxpc3RcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfc2hyaW5rZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgICAgIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICAgICAgICAgfmZfaW52ZXJzZTp0b19hbGlzdFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcbmluY2x1ZGUgQmFzZS5IYXNoX3NldFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gSGFzaHRibC5LZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEhhc2h0YmwuS2V5XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEhhc2h0YmwuS2V5X2JpbmFibGVcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGVsdCA9IFQuRWx0LnRcbiAgdHlwZSBub25yZWMgdCA9IGVsdCB0XG5cbiAgbGV0IGVxdWFsID0gZXF1YWxcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuRWx0LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBsZXQgc2V4cF9vZl90IHQgPSBQb2x5LnNleHBfb2ZfdCBULkVsdC5zZXhwX29mX3QgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuRWx0XG4gICAgICAgIGluY2x1ZGUgWFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJhZDM4MTY3Mi00OTkyLTExZTYtOWUzNi1iNzZkYzhjZDQ2NmZcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaF9zZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IHYgPSBuZXh0ICgpIGluXG4gICAgICAgICAgYWRkIHQgdlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcbmVuZFxuXG5sZXQgaGFzaGFibGUgPSBQcml2YXRlLmhhc2hhYmxlXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IEtleS50IExpc3QwLnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fbGlzdFxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5zaHJpbmtlcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKSB+Zl9pbnZlcnNlOnRvX2xpc3Rcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shTWFwfVtNYXBdfS4gU2VlIHRob3NlIGRvY3MgZm9yIGEgZGVzY3JpcHRpb25cbiAgICBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MSwyLDMsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbTWFwXSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczNdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuXG5vcGVuISBJbXBvcnRcbm9wZW4gVFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIE1hcCA9IEJhc2UuTWFwXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gTWFwLk9yX2R1cGxpY2F0ZVxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBUcmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIEtleV9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIGtleV9zZXQgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudCkgb3B0aW9uc1xuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczFcblxuICB2YWwga2V5X3NldCA6IF8gdCAtPiAoa2V5LCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooa2V5IC0+IHN0cmluZykgLT4gJ2EgVmFsaWRhdGUuY2hlY2sgLT4gJ2EgdCBWYWxpZGF0ZS5jaGVja1xuICB2YWwgdmFsaWRhdGVpIDogbmFtZTooa2V5IC0+IHN0cmluZykgLT4gKGtleSAqICdhKSBWYWxpZGF0ZS5jaGVjayAtPiAnYSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogIGtleSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzMlxuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCAndikgdCAtPiAoJ2ssIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IpIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2EgLT4gc3RyaW5nKVxuICAgIC0+ICgnYSAqICdiKSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnYSwgJ2IpIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YpIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzM1xuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCBfLCAnY21wKSB0IC0+ICgnaywgJ2NtcCkgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2EgLT4gc3RyaW5nKVxuICAgIC0+ICgnYSAqICdiKSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsIF8pIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIGtleV9zZXRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCBfLCAnY21wKSB0XG4gICAgLT4gKCdrLCAnY21wKSBCYXNlLlNldC50XG5cbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIC0+IHN0cmluZylcbiAgICAtPiAoJ2sgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdrIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczMgKE0gOiBBY2Nlc3NvcnMzKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNodGJsX2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtTZXQudF0uICopXG4gIHZhbCBvZl9rZXlfc2V0IDogKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQgLT4gZjooJ2sga2V5IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnMxXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuIDogKGtleSwgJ2EpIEhhc2h0YmwudCAtPiAnYSB0XG4gIHZhbCBvZl9rZXlfc2V0IDogKGtleSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IC0+IGY6KGtleSAtPiAndikgLT4gJ3YgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdhIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yczJcblxuICB2YWwgb2ZfaGFzaHRibF9leG4gOiAoJ2EsICdiKSBIYXNodGJsLnQgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfa2V5X3NldCA6ICgnYSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdiIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYikgSGFzaHRibC50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9rZXlfc2V0IDogKCdhLCAnY21wKSBCYXNlLlNldC50IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMxXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBrZXkgOj0ga2V5XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMlxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRcbiAgICAgIHdpdGggdHlwZSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoSyA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgKydhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUga2V5IDo9IEtleS50XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLk1hcC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLk1hcC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYykgS2V5X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnQgLT4gQmluX3Byb3QuU2hhcGUudFxuXG4gIHZhbCBiaW5fc2l6ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuU2l6ZS5zaXplclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlNpemUuc2l6ZXJcblxuICB2YWwgYmluX3dyaXRlX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcblxuICB2YWwgYmluX3JlYWRfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICB2YWwgX19iaW5fcmVhZF9tX190X19cbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+IChpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgW3F1aWNrY2hlY2sqXSBmdW5jdGlvbnMgc3VwcG9ydCBkZXJpdmluZyBxdWlja2NoZWNrIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKGludCwgc3RyaW5nKSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDA2NzRiZTlmZThkZmU5ZTlhZDQ3NjA2N2Q3ZDgxMDEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwIChrLCBkaWZmKSB+ZjEgfmYyID1cbiAgICAgICAgbGV0IGsgPSBmMSBrIGluXG4gICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IHYgLT4gYExlZnQgKGYyIHYpXG4gICAgICAgICAgfCBgUmlnaHQgdiAtPiBgUmlnaHQgKGYyIHYpXG4gICAgICAgICAgfCBgVW5lcXVhbCAodjEsIHYyKSAtPiBgVW5lcXVhbCAoZjIgdjEsIGYyIHYyKVxuICAgICAgICBpblxuICAgICAgICBrLCBkaWZmXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwX2RhdGEgdCB+ZiA9IG1hcCB0IH5mMTpGbi5pZCB+ZjI6ZlxuXG4gICAgICBsZXQgbGVmdCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgTGVmdCB4IHwgYFVuZXF1YWwgKHgsIF8pIC0+IFNvbWUgeFxuICAgICAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCByaWdodCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBCYXNlLk1hcC5NZXJnZV9lbGVtZW50XG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCkgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApIGNvbXBhcmF0b3IgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgbGV0IGdlbl90cmVlIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbSAob2ZfY29tcGFyYXRvciBjb21wYXJhdG9yKSBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBvYnNfdHJlZSBrX29icyB2X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdHJlZSBrX29icyB2X29ic1xuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBrX3NociB2X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHJcbiAgOztcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X21cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcC5Vc2luZ19jb21wYXJhdG9yXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpOihIYXNodGJsLml0ZXJpIGhhc2h0YmwpIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWFwLm9mX2hhc2h0YmxfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHRyZWVfb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgdG9fdHJlZSAob2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibClcbiAgOztcblxuICBsZXQga2V5X3NldCB+Y29tcGFyYXRvciB0ID1cbiAgICBCYXNlLlNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoTGlzdC50b19hcnJheSAoa2V5cyB0KSlcbiAgOztcblxuICBsZXQga2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHQgPSBrZXlfc2V0IH5jb21wYXJhdG9yIChvZl90cmVlIH5jb21wYXJhdG9yIHQpXG5cbiAgbGV0IG9mX2tleV9zZXQga2V5X3NldCB+ZiA9XG4gICAgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3I6KEJhc2UuU2V0LmNvbXBhcmF0b3Iga2V5X3NldClcbiAgICAgIChBcnJheS5tYXAgKEJhc2UuU2V0LnRvX2FycmF5IGtleV9zZXQpIH5mOihmdW4ga2V5IC0+IGtleSwgZiBrZXkpKVxuICA7O1xuXG4gIGxldCB0cmVlX29mX2tleV9zZXQga2V5X3NldCB+ZiA9IHRvX3RyZWUgKG9mX2tleV9zZXQga2V5X3NldCB+ZilcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIE1hcC5BY2Nlc3NvcnMzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNYXAudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50KVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBrZXlcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQWNjZXNzb3JzM1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5lbmQpXG5cbm1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG5cbmxldCBmaW5kX29yX2Vycm9yIHQga2V5ID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgU29tZSBkYXRhIC0+IE9rIGRhdGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcImtleSBub3QgZm91bmRcIiB+Xzooa2V5IDoga2V5KV1cbjs7XG5cbmxldCBtZXJnZV9za2V3ZWQgPSBNYXAubWVyZ2Vfc2tld2VkXG5sZXQgb2ZfaGFzaHRibF9leG4gbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IG9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgaW52YXJpYW50cyBhID0gaW52YXJpYW50cyBhIH5jb21wYXJhdG9yXG4gIGxldCBpc19lbXB0eSBhID0gaXNfZW1wdHkgYVxuICBsZXQgbGVuZ3RoIGEgPSBsZW5ndGggYVxuICBsZXQgc2V0IGEgfmtleSB+ZGF0YSA9IHNldCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCBhIH5rZXkgfmRhdGEgPSBhZGQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfZXhuIGEgfmtleSB+ZGF0YSA9IGFkZF9leG4gYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhID0gYWRkX211bHRpIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlX211bHRpIGEgYiA9IHJlbW92ZV9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfbXVsdGkgYSBiID0gZmluZF9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGNoYW5nZSBhIGIgfmYgPSBjaGFuZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCB1cGRhdGUgYSBiIH5mID0gdXBkYXRlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9leG4gYSBiID0gZmluZF9leG4gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kIGEgYiA9IGZpbmQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmUgYSBiID0gcmVtb3ZlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgbWVtIGEgYiA9IG1lbSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGl0ZXJpX3VudGlsID0gaXRlcmlfdW50aWxcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IGl0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGZvbGRfdW50aWwgPSBmb2xkX3VudGlsXG4gIGxldCBmb2xkX3JpZ2h0ID0gZm9sZF9yaWdodFxuICBsZXQgZm9sZDIgYSBiIH5pbml0IH5mID0gZm9sZDIgYSBiIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfa2V5cyBhIH5mID0gZmlsdGVyX2tleXMgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyIGEgfmYgPSBmaWx0ZXIgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyaSBhIH5mID0gZmlsdGVyaSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBmaWx0ZXJfbWFwIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXBpIGEgfmYgPSBmaWx0ZXJfbWFwaSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPSBjb21iaW5lX2Vycm9ycyB0IH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCBhIGIgYyA9IGNvbXBhcmVfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlcXVhbCBhIGIgYyA9IGVxdWFsIGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCA9IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+Y29tcGFyYXRvclxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmYgfmluaXQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgbWVyZ2UgYSBiIH5mID0gbWVyZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lID0gbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSB+Y29tcGFyYXRvclxuICBsZXQgbWluX2VsdCA9IG1pbl9lbHRcbiAgbGV0IG1pbl9lbHRfZXhuID0gbWluX2VsdF9leG5cbiAgbGV0IG1heF9lbHQgPSBtYXhfZWx0XG4gIGxldCBtYXhfZWx0X2V4biA9IG1heF9lbHRfZXhuXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBzcGxpdCBhIGIgPSBzcGxpdCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPSByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyYXRvclxuICBsZXQgY2xvc2VzdF9rZXkgYSBiIGMgPSBjbG9zZXN0X2tleSBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgbnRoID0gbnRoXG4gIGxldCBudGhfZXhuID0gbnRoX2V4blxuICBsZXQgcmFuayBhIGIgPSByYW5rIGEgYiB+Y29tcGFyYXRvclxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICA7O1xuXG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0XG4gIGxldCBtYXBfa2V5cyB0IH5mID0gbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfZ2VuZXJhdG9yXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgS2V5KSBLZXkucXVpY2tjaGVja19nZW5lcmF0b3Igdl9nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfb2JzZXJ2ZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBLZXkucXVpY2tjaGVja19vYnNlcnZlciB2X29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX3Nocmlua2VyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl9oYXNodGJsX2V4biA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4blxuICBsZXQga2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gKGtleSwgJ2EsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5KVxuICBlbmRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IFN5bW1ldHJpY19kaWZmX2VsZW1lbnQuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuTWF5YmVfYm91bmQudCA9XG4gICAgICB8IEluY2wgb2YgJ2FcbiAgICAgIHwgRXhjbCBvZiAnYVxuICAgICAgfCBVbmJvdW5kZWRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEluY2wgeCAtPiBJbmNsIChmIHgpXG4gICAgICB8IEV4Y2wgeCAtPiBFeGNsIChmIHgpXG4gICAgICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEJhc2UuTWF5YmVfYm91bmRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlYxLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHF1aWNrY2hlY2ssIHNleHBdXG5cbmxldCBjb21wYXJlX29uZV9zaWRlZCB+c2lkZSBjb21wYXJlX2EgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IFVuYm91bmRlZCwgVW5ib3VuZGVkIC0+IDBcbiAgfCBVbmJvdW5kZWQsIF8gLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IC0xXG4gICAgIHwgYFVwcGVyIC0+IDEpXG4gIHwgXywgVW5ib3VuZGVkIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAxXG4gICAgIHwgYFVwcGVyIC0+IC0xKVxuICB8IEluY2wgYTEsIEluY2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgRXhjbCBhMSwgRXhjbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBJbmNsIGExLCBFeGNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAtMVxuICAgICAgfCBgVXBwZXIgLT4gMSlcbiAgICBlbHNlIGNcbiAgfCBFeGNsIGExLCBJbmNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAxXG4gICAgICB8IGBVcHBlciAtPiAtMSlcbiAgICBlbHNlIGNcbjs7XG5cbm1vZHVsZSBBc19sb3dlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgVXBwZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFDb3JlLlNldH1bU2V0XX0uIFNlZSB0aGVcbiAgICB7IU1hcH0gZG9jcyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MCwxLDIsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbU2V0XSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczJdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuKCpcbiAgIENScyBhbmQgY29tbWVudHMgYWJvdXQgW1NldF0gZnVuY3Rpb25zIGRvIG5vdCBiZWxvbmcgaW4gdGhpcyBmaWxlLiAgVGhleSBiZWxvbmcgbmV4dFxuICAgdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGluIHNldC5tbGkuXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gVFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgVHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcbm1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gU2V0LldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFNldC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCB0b19tYXBcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+ICdiKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnYSBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMFxuXG4gIHZhbCB0b19tYXAgOiB0IC0+IGY6KGVsdCAtPiAnZGF0YSkgLT4gKGVsdCwgJ2RhdGEsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnMxXG5cbiAgdmFsIHRvX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAnYSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAnYSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMlxuXG4gIHZhbCB0b19tYXAgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgdG9fbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIEJhc2UuTWFwLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKE5hbWVkIDogVDIpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczAgKE0gOiBBY2Nlc3NvcnMwKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsICdjbXAsICgnYSBlbHQsIF8pIEhhc2h0YmwudCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW01hcC50XS4gKilcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhIGVsdCwgXywgJ2NtcCBjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMFxuXG4gIHZhbCBvZl9oYXNoX3NldCA6IGVsdCBIYXNoX3NldC50IC0+IHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6IChlbHQsIF8pIEhhc2h0YmwudCAtPiB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6IChlbHQsIF8sIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudCAtPiB0XG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IGVsdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczFcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAnYSBIYXNoX3NldC50IC0+ICdhIHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgXykgSGFzaHRibC50IC0+ICdhIHRcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhLCBfLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnQgLT4gJ2EgdFxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+ICdhIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczJcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAnYSBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgJ2NtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX2hhc2h0Ymxfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIEhhc2h0YmwudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgJ2NtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczAgKE0gOiBDcmVhdG9yczApID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMwXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IHRyZWVcbiAgICB3aXRoIHR5cGUgZWx0IDo9IGVsdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMxXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoRWx0IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIHRyZWUgOj0gdFxuICAgICAgd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuICAgICAgd2l0aCB0eXBlIG5hbWVkIDo9IG5hbWVkXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgQmFzZS5TZXQudFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgbmFtZWQgOj0gbmFtZWRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5vcGVuIFNldF9pbnRmXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnRcbm1vZHVsZSBOYW1lZCA9IE5hbWVkXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBTZXQuTmFtZWQudClcblxuICBsZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gcXVpY2tjaGVja19zaHJpbmtlclxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgU2V0Lk5hbWVkLnRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA6PSBOYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IG9mX2hhc2hfc2V0IG0gaHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaHNldFxuXG5sZXQgb2ZfaGFzaHRibF9rZXlzIG0gaGFzaHRibCA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhhc2h0Ymxcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnYSBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCB0X29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IEJhc2UuU2V4cC50IC0+ICgnYSwgJ2NvbXBhcmF0b3IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IGludmFyaWFudHMgdCA9IFRyZWUuaW52YXJpYW50cyB0IH5jb21wYXJhdG9yXG4gIGxldCBsZW5ndGggdCA9IFRyZWUubGVuZ3RoIHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZS5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZS50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUuaXRlciB0IH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlLml0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZS5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlLmZvbGRfdW50aWwgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZS5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgbWFwIHQgfmYgPSBUcmVlLm1hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUuZmlsdGVyIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSB0IGEgPSBUcmVlLm1lbSB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCB0IGEgPSBUcmVlLmFkZCB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSB0IGEgPSBUcmVlLnJlbW92ZSB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHVuaW9uIHQxIHQyID0gVHJlZS51bmlvbiB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgaW50ZXIgdDEgdDIgPSBUcmVlLmludGVyIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBkaWZmIHQxIHQyID0gVHJlZS5kaWZmIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9IFRyZWUuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZS5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJhdG9yXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPSBUcmVlLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdCBsID0gVHJlZS5vZl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBUcmVlLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBUcmVlLm9mX2hhc2hfc2V0IGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gVHJlZS5vZl9oYXNodGJsX2tleXMgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYXJyYXkgYSA9IFRyZWUub2ZfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVHJlZS5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb25fbGlzdCBsID0gVHJlZS51bmlvbl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gVHJlZS5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyYXRvclxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBUcmVlLmdyb3VwX2J5IHQgfmVxdWl2IH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdCB0IGEgPSBUcmVlLnNwbGl0IHQgYSB+Y29tcGFyYXRvclxuICBsZXQgbnRoIHQgaSA9IFRyZWUubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IFRyZWUucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZS50b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlLmJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvciB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZS5tZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHRvX21hcCB0IH5mID0gVHJlZS50b19tYXAgfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZS5OYW1lZC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJhdG9yXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5OYW1lZC5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZWx0ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgZWx0IH5jb21wYXJhdG9yXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdCA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGVsdFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHQgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSBlbHQgfmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoRWx0X1MxKVxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUuTmFtZWQudFxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gVHJlZS5zZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBYLnRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkVsdF9TMS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZSAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV90cmVlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxuKCogRG9uJ3QgdXNlIFtvZl9zb3J0ZWRfYXJyYXldIHRvIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGFuIGludGVybWVkaWF0ZSBhcnJheSAqKVxubGV0IGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmYgfmNvbXBhcmF0b3IgPVxuICBsZXQgc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mIGluXG4gIGlmIGludmFyaWFudHMgc2V0XG4gIHRoZW4gc2V0XG4gIGVsc2VcbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoZm9sZCBzZXQgfmluaXQ6KFRyZWUuZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgICAgICAgaWYgVHJlZS5tZW0gYWNjIGVsdCB+Y29tcGFyYXRvclxuICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNldC5iaW5fcmVhZF90OiBkdXBsaWNhdGUgZWxlbWVudCBpbiBtYXBcIlxuICAgICAgICAgZWxzZSBUcmVlLmFkZCBhY2MgZWx0IH5jb21wYXJhdG9yKSlcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBDb21wYXJhdG9yLlBvbHlcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0KVxuXG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAnYSBuYW1lZCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIFslc2V4cF9vZjogX10gdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODhiY2M0NzgtNDk5Mi0xMWU2LWE5NWQtZmY0ODMxYWNmNDEwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlICdhIG5hbWVkID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFRyZWUuc2V4cF9vZl90IHNleHBfb2ZfZWx0IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBlbHRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gRWx0X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEVsdCA6IEVsdF9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OTg5Mjc4ZS00OTkyLTExZTYtOGY0YS02Yjg5Nzc2YjFlNTNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEVsdC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGUgdFxuXG4gICAgbGV0IGhhc2ggdCA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGhhc2hfZm9sZF90IChQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpKSB0KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX2Jpbl9pbyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEVsdFxuICAgICAgaW5jbHVkZSBFbHQnXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gU2V0Lk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgRWx0LnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgRWx0LnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBTZXQuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoU2V0IDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ29tcGFyYWJsZS5Qb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBWYWxpZGF0ZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpIDogVmFsaWRhdGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGVcbiAgb3BlbiBNYXliZV9ib3VuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IEJhc2UuU2V4cC50b19zdHJpbmcgKFQuc2V4cF9vZl90IHQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWLmJvdW5kZWQgfm5hbWU6dG9fc3RyaW5nIH5sb3dlcjptaW4gfnVwcGVyOm1heCB+Y29tcGFyZTpULmNvbXBhcmUgdFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID0gdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4OlVuYm91bmRlZCB0XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID0gdmFsaWRhdGVfYm91bmQgfm1heCB+bWluOlVuYm91bmRlZCB0XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlX3dpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGUgKFQpXG4gIGluY2x1ZGUgVlxuXG4gICgqIFByZWFsbG9jYXRlIHRoZSBpbnRlcmVzdGluZyBib3VuZHMgdG8gbWluaW1pemUgYWxsb2NhdGlvbiBpbiB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFt2YWxpZGF0ZV8qXS4gKilcbiAgbGV0IGV4Y2xfemVybyA9IE1heWJlX2JvdW5kLkV4Y2wgVC56ZXJvXG4gIGxldCBpbmNsX3plcm8gPSBNYXliZV9ib3VuZC5JbmNsIFQuemVyb1xuICBsZXQgdmFsaWRhdGVfcG9zaXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fbmVnYXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmluY2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6aW5jbF96ZXJvIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQpXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLldpdGhfemVybyAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbiAgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLlBvbHkgKFQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIFZhbGlkYXRlIChDKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgPVxuICBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kX2JpbmFibGVcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFggOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuaW5jbHVkZSAoQmFzZS5Db21wYXJhYmxlIDogV2l0aF9jb21wYXJlKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgIE1hcC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgIFNldC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gc3RydWN0XG4gICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5NYWtlIChYKVxuICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsImluY2x1ZGUgTGlzdDAgKCoqIEBpbmxpbmUgKilcblxuKCoqIFtzdGFibGVfZGVkdXBdIFNhbWUgYXMgW2RlZHVwXSBidXQgbWFpbnRhaW5zIHRoZSBvcmRlciBvZiB0aGUgbGlzdCBhbmQgZG9lc24ndCBhbGxvd1xuICAgIGNvbXBhcmUgZnVuY3Rpb24gdG8gYmUgc3BlY2lmaWVkIChvdGhlcndpc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZiBTZXQudFxuICAgIHdvdWxkIGhpZGUgYSBoZWF2eXdlaWdodCBmdW5jdG9yIGluc3RhbnRpYXRpb24gYXQgZWFjaCBjYWxsKS4gKilcbmxldCBzdGFibGVfZGVkdXAgPSBTZXQuUG9seS5zdGFibGVfZGVkdXBfbGlzdFxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIHN0YWdlZCB0byBpbmRpY2F0ZSB0aGF0IHJlYWwgd29yayAodGhlIGZ1bmN0b3IgYXBwbGljYXRpb24pIHRha2VzXG4gICBwbGFjZSBhZnRlciBhIHBhcnRpYWwgYXBwbGljYXRpb24uICopXG5sZXQgc3RhYmxlX2RlZHVwX3N0YWdlZCAodHlwZSBhKSB+KGNvbXBhcmUgOiBhIC0+IGEgLT4gaW50KVxuICA6IChhIGxpc3QgLT4gYSBsaXN0KSBCYXNlLlN0YWdlZC50XG4gID1cbiAgbGV0IG1vZHVsZSBTZXQgPVxuICAgIFNldC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICAgICgqIFtzdGFibGVfZGVkdXBfbGlzdF0gbmV2ZXIgY2FsbHMgdGhlc2UgKilcbiAgICAgIGxldCB0X29mX3NleHAgXyA9IGFzc2VydCBmYWxzZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgZW5kKVxuICBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSBTZXQuc3RhYmxlX2RlZHVwX2xpc3Rcbjs7XG5cbmxldCB6aXBfd2l0aF9yZW1haW5kZXIgPVxuICBsZXQgcmVjIHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIGFjYyB4cyB5cyA9XG4gICAgbWF0Y2ggeHMsIHlzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiByZXYgYWNjLCBOb25lXG4gICAgfCBmc3QsIFtdIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5GaXJzdCBmc3QpXG4gICAgfCBbXSwgc25kIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5TZWNvbmQgc25kKVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciAoKHgsIHkpIDo6IGFjYykgeHMgeXNcbiAgaW5cbiAgZnVuIHhzIHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIFtdIHhzIHlzXG47O1xuXG50eXBlIHNleHBfdGh1bmsgPSB1bml0IC0+IEJhc2UuU2V4cC50XG5cbmxldCBzZXhwX29mX3NleHBfdGh1bmsgeCA9IHggKClcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9mb3VuZCBvZiBzZXhwX3RodW5rICogQmFzZS5TdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX2lmX2R1cCB+Y29tcGFyZSA/KGNvbnRleHQgPSBcImV4bl9pZl9kdXBcIikgdCB+dG9fc2V4cCA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgfmNvbXBhcmUgdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZHVwIC0+IHJhaXNlIChEdXBsaWNhdGVfZm91bmQgKChmdW4gKCkgLT4gdG9fc2V4cCBkdXApLCBjb250ZXh0KSlcbjs7XG5cbmxldCBzbGljZSBhIHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgYSBzdGFydCBzdG9wXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5vbmUgfnNvbWUgdCA9XG4gIGxldCBtb2R1bGUgViA9IFZhbGlkYXRlIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gVi5uYW1lIFwibm9uZVwiIChWLnByb3RlY3Qgbm9uZSAoKSlcbiAgfCBTb21lIHggLT4gVi5uYW1lIFwic29tZVwiIChWLnByb3RlY3Qgc29tZSB4KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vcHRpb25cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIub3B0aW9uXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzIgOiB0IC0+ICdhIC0+ICdiIC0+ICgnYSAtPiAnYiAtPiAnYykgLT4gJ2NcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzMgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCkgLT4gJ2RcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzQgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSkgLT4gJ2VcbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzIgdCBhIGIgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IG1lcmdlICh0MSA6IHQpIHQyID1cbiAgICBpZiBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgICB0aGVuIGBTYW1lX2FscmVhZHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuMSA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxKS5sZW5ndGggaW5cbiAgICAgIGxldCBuMiA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyKS5sZW5ndGggaW5cbiAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDEgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICB3aXRoX2l0ZXJhdGlvbl80IHQyIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgICBVbmlvbl9maW5kLnVuaW9uIHQxIHQyO1xuICAgICAgICAgIFVuaW9uX2ZpbmQuc2V0IHQxIHsgbGVuZ3RoID0gbjEgKyBuMjsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9KSk7XG4gICAgICBgTWVyZ2VkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbHQgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGhlYWRlciA6ICdhIHQgLT4gSGVhZGVyLnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bmxpbmsgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9iZWZvcmUgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIGluc2VydF9hZnRlciA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgaW5zZXJ0X2JlZm9yZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5saW5rX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbmV4dCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgcHJldiA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgcHJldiA6ICdhIHRcbiAgICA7IG11dGFibGUgbmV4dCA6ICdhIHRcbiAgICA7IG11dGFibGUgaGVhZGVyIDogSGVhZGVyLnRcbiAgICB9XG5cbiAgbGV0IGVxdWFsID0gcGh5c19lcXVhbFxuICBsZXQgbmV4dCB0ID0gdC5uZXh0XG4gIGxldCBwcmV2IHQgPSB0LnByZXZcbiAgbGV0IGhlYWRlciB0ID0gdC5oZWFkZXJcblxuICBsZXQgY3JlYXRlX2F1eCB2IGhlYWRlciA9XG4gICAgbGV0IHJlYyB0ID0geyB2YWx1ZSA9IHY7IHByZXYgPSB0OyBuZXh0ID0gdDsgaGVhZGVyIH0gaW5cbiAgICB0XG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gZXF1YWwgdCB0LnByZXZcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfYSB0LnZhbHVlXG4gIGxldCBjcmVhdGUgdiA9IGNyZWF0ZV9hdXggdiAoSGVhZGVyLmNyZWF0ZSAoKSlcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gIGxldCBzZXQgdCB2ID0gdC52YWx1ZSA8LSB2XG5cbiAgKCpcbiAgICAgW3NwbGl0X29yX3NwbGljZV0gaXMgc3VmZmljaWVudCBhcyB0aGUgbG9uZSBwcmltaXRpdmUgZm9yXG4gICAgIGFjY29tcGxpc2hpbmcgYWxsIHBvaW50ZXIgdXBkYXRlcyBvbiBjeWNsaWMgbG9vcHMgb2YgbGlzdCBub2Rlcy5cbiAgICAgSXQgdGFrZXMgdHdvIFwiZ2Fwc1wiIGJldHdlZW4gYWRqYWNlbnQgbGlua2VkIGxpc3Qgbm9kZXMuICBJZiB0aGUgZ2Fwc1xuICAgICBwb2ludCBpbnRvIHRoZSBzYW1lIGxpc3QsIHRoZSByZXN1bHQgaXMgdGhhdCBpdCB3aWxsIGJlIHNwbGl0IGludG9cbiAgICAgdHdvIGxpc3RzIGFmdGVyd2FyZHMuICBJZiB0aGUgZ2FwcyBwb2ludCBpbnRvIGRpZmZlcmVudCBsaXN0cywgdGhlXG4gICAgIHJlc3VsdCBpcyB0aGF0IHRoZXkgd2lsbCBiZSBzcGxpY2VkIHRvZ2V0aGVyIGludG8gb25lIGxpc3QgYWZ0ZXJ3YXJkcy5cblxuICAgICB7dlxuICAgICAgIEJlZm9yZSAgICAgICAgICAgICAgICAgICAgICBBZnRlclxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICAgICAgICAgICBBIHwgIDwtLT4gIHwgQiAgICAgICAgICAgICAgIEEgfCAgPC0tLSAgIC0tLT4gIHwgQlxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIFxcIC8gICAgICArLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIC8gXFwgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQyB8ICA8LS0+ICB8IEQgICAgICAgICAgICAgICBDIHwgIDwtLS0gICAtLS0+ICB8IERcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgdn0gKilcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZSB+cHJldjE6YSB+bmV4dDE6YiB+cHJldjI6YyB+bmV4dDI6ZCA9XG4gICAgYS5uZXh0IDwtIGQ7XG4gICAgZC5wcmV2IDwtIGE7XG4gICAgYy5uZXh0IDwtIGI7XG4gICAgYi5wcmV2IDwtIGNcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfm5leHQxOnQxLm5leHRcbiAgICAgIH5wcmV2MTp0MS5uZXh0LnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5uZXh0XG4gICAgICB+cHJldjI6dDIubmV4dC5wcmV2XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+cHJldjE6dDEucHJldlxuICAgICAgfm5leHQxOnQxLnByZXYubmV4dFxuICAgICAgfnByZXYyOnQyLnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5wcmV2Lm5leHRcbiAgOztcblxuICBsZXQgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MiA9XG4gICAgSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MS5oZWFkZXI7XG4gICAgaWYgbm90IChIZWFkZXIuZXF1YWwgdDEuaGVhZGVyIHQyLmhlYWRlcilcbiAgICB0aGVuIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIuaGVhZGVyXG4gIDs7XG5cbiAgKCogV2UgcmVkZWZpbmUgc2FmZSB2ZXJzaW9ucyBmb3IgZXhwb3J0ICopXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MlxuICA7O1xuXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGluc2VydF9iZWZvcmUgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGR1bW15X2hlYWRlciA9IEhlYWRlci5jcmVhdGUgKClcblxuICBsZXQgdW5saW5rX2JlZm9yZSB0ID1cbiAgICBsZXQgbm9kZSA9IHQucHJldiBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmtfYWZ0ZXIgdCA9XG4gICAgbGV0IG5vZGUgPSB0Lm5leHQgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9IGlnbm9yZSAodW5saW5rX2FmdGVyIHQucHJldiA6IF8gdClcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBFbHQudCBvcHRpb24gcmVmXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBoZWFkIC0+XG4gICAgbGV0IGhlYWRlciA9IEVsdC5oZWFkZXIgaGVhZCBpblxuICAgIGxldCByZWMgbG9vcCBuIGVsdCA9XG4gICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIGxldCBwcmV2X2VsdCA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQucHJldiBuZXh0X2VsdCkpO1xuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQubmV4dCBwcmV2X2VsdCkpO1xuICAgICAgYXNzZXJ0IChIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZWx0KSBoZWFkZXIpO1xuICAgICAgaW52YXJpYW50X2EgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgaWYgRWx0LmVxdWFsIG5leHRfZWx0IGhlYWQgdGhlbiBuIGVsc2UgbG9vcCAobiArIDEpIG5leHRfZWx0XG4gICAgaW5cbiAgICBsZXQgbGVuID0gbG9vcCAxIGhlYWQgaW5cbiAgICBhc3NlcnQgKGxlbiA9IEhlYWRlci5sZW5ndGggaGVhZGVyKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHJlZiBOb25lXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBjcmVhdGUgKClcbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSB4IGluXG4gICAgbGV0IF9sYXN0ID0gTGlzdC5mb2xkIHhzIH5pbml0OmZpcnN0IH5mOkVsdC5pbnNlcnRfYWZ0ZXIgaW5cbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgb2ZfYXJyYXkgPSBmdW5jdGlvblxuICB8IFt8fF0gLT4gY3JlYXRlICgpXG4gIHwgYXJyIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSBhcnIuKDApIGluXG4gICAgbGV0IHJlYyBsb29wIGFyciBlbHQgaSA9XG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGFyciB0aGVuIGxvb3AgYXJyIChFbHQuaW5zZXJ0X2FmdGVyIGVsdCBhcnIuKGkpKSAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIGFyciBmaXJzdCAxO1xuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgMCAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIGkgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAxIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgaXRlcl9lbHQgdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+IGYgZWx0KSBmXG5sZXQgaXRlcmlfZWx0IHQgfmYgPSBmb2xkaV9lbHQgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgZWx0IC0+IGYgaSBlbHQpXG5cbm9wZW4gV2l0aF9yZXR1cm5cblxubGV0IGZpbmRfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIGVsdCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkaV9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBpIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIGVsdCkpKTtcbiAgICBOb25lKVxuOztcblxuKCogdGhpcyBmdW5jdGlvbiBpcyBsYW1iZGEgbGlmdGVkIGZvciBwZXJmb3JtYW5jZSwgdG8gbWFrZSBkaXJlY3QgcmVjdXJzaXZlIGNhbGxzIGluc3RlYWRcbiAgIG9mIGNhbGxzIHRocm91Z2ggaXRzIGNsb3N1cmUuIEl0IGFsc28gYXZvaWRzIHRoZSBpbml0aWFsIGNsb3N1cmUgYWxsb2NhdGlvbi4gKilcbmxldCByZWMgaXRlcl9sb29wIGZpcnN0IGYgZWx0ID1cbiAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJfbG9vcCBmaXJzdCBmIG5leHRcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMiAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMiAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJpX2xvb3AgZmlyc3QgZiAwIGZpcnN0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBmb2xkaV9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBpIGYgYWNjIGVsdCAtPiBmIGkgYWNjIChFbHQudmFsdWUgZWx0KSlcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBmIGFjYyBlbHQgLT4gZiBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgdW5jaGVja2VkX2l0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGYgZWx0ID1cbiAgICAgIGYgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICgqIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBiYWcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IFtmXSAqKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChwaHlzX2VxdWFsIGZpcnN0IG5leHQpIHRoZW4gbG9vcCB0IGYgbmV4dFxuICAgIGluXG4gICAgbG9vcCB0IGYgZmlyc3Rcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gT3B0aW9uLmlzX25vbmUgIXRcblxuKCogbW9yZSBlZmZpY2llbnQgdGhhbiB3aGF0IENvbnRhaW5lci5NYWtlIHJldHVybnMgKilcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIChFbHQudmFsdWUgcHJldikgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfcmlnaHRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiBwcmV2IGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCB0b19saXN0IHQgPSBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB4IHRsIC0+IHggOjogdGwpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHMpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQmFzZS5MaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxubGV0IGNvcHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcbmxldCBjbGVhciB0ID0gdCA6PSBOb25lXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHQxIHQyID1cbiAgbWF0Y2ggIXQxLCAhdDIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIGYxLCBTb21lIGYyIC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjEpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zXG4gICAgICAgIChFbHQuaGVhZGVyIGYyKVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICBmMVxuICAgICAgICBmMlxuICAgICAgICAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICAgICAgIGxldCByZWMgbG9vcCBjb21wYXJlX2VsdCBlbHQxIGYxIGVsdDIgZjIgPVxuICAgICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IChFbHQudmFsdWUgZWx0MSkgKEVsdC52YWx1ZSBlbHQyKSBpblxuICAgICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0IDw+IDBcbiAgICAgICAgICAgICB0aGVuIGNvbXBhcmVfcmVzdWx0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBsZXQgbmV4dDEgPSBFbHQubmV4dCBlbHQxIGluXG4gICAgICAgICAgICAgICBsZXQgbmV4dDIgPSBFbHQubmV4dCBlbHQyIGluXG4gICAgICAgICAgICAgICBtYXRjaCBwaHlzX2VxdWFsIG5leHQxIGYxLCBwaHlzX2VxdWFsIG5leHQyIGYyIHdpdGhcbiAgICAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IGxvb3AgY29tcGFyZV9lbHQgbmV4dDEgZjEgbmV4dDIgZjIpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgY29tcGFyZV9lbHQgZjEgZjEgZjIgZjIpKVxuOztcblxuZXhjZXB0aW9uIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcblxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9XG4gIGlmIHBoeXNfZXF1YWwgc3JjIGRzdCB0aGVuIHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3Q7XG4gIG1hdGNoICFzcmMgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNyY19oZWFkIC0+XG4gICAgKG1hdGNoICFkc3Qgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBkc3QgOj0gU29tZSBzcmNfaGVhZDtcbiAgICAgICBjbGVhciBzcmNcbiAgICAgfCBTb21lIGRzdF9oZWFkIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5tZXJnZSAoRWx0LmhlYWRlciBzcmNfaGVhZCkgKEVsdC5oZWFkZXIgZHN0X2hlYWQpIHdpdGhcbiAgICAgICAgfCBgU2FtZV9hbHJlYWR5IC0+IHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcbiAgICAgICAgfCBgTWVyZ2VkIC0+XG4gICAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZHN0X2hlYWQgc3JjX2hlYWQ7XG4gICAgICAgICAgY2xlYXIgc3JjKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gaXRlcl9lbHQgdCB+ZjooZnVuIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiAoRWx0LnZhbHVlIGVsdCkpKVxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID0gaXRlcmlfZWx0IHQgfmY6KGZ1biBpIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiBpIChFbHQudmFsdWUgZWx0KSkpXG5cbmxldCByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZSA9XG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBlbHQgLT5cbiAgICAobWF0Y2ggIXQgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGhlYWQgLT5cbiAgICAgICBpZiBFbHQuZXF1YWwgaGVhZCBlbHRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgdCA6PSBpZiBFbHQuZXF1YWwgaGVhZCBuZXh0X2VsdCB0aGVuIE5vbmUgZWxzZSBTb21lIG5leHRfZWx0KSk7XG4gICAgRWx0LnVubGluayBlbHQpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmV4Y2VwdGlvbiBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcblxubGV0IGZpcnN0X2VsdCB0ID0gIXRcbmxldCBsYXN0X2VsdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQucHJldiAhdFxubGV0IGZpcnN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAoZmlyc3RfZWx0IHQpXG5sZXQgbGFzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGxhc3RfZWx0IHQpXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IFNleHBsaWIuU2V4cC50X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90ID0gU2V4cGxpYi5TZXhwLnNleHBfb2ZfdFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5pbmNsdWRlIChcbiAgQmFzZS5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIHR5cGUgc2V4cCA9IEJhc2UuU2V4cC50ID1cbiAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgfCBMaXN0IG9mIHQgbGlzdFxuZW5kXG5cbm1vZHVsZSBTZXhwX21heWJlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHQgKiBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBSZXN1bHQuT2sgYSAtPiBzZXhwX29mX2EgYVxuICAgIHwgUmVzdWx0LkVycm9yIChzZXhwLCBlcnIpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgRXJyb3Iuc2V4cF9vZl90IGVyciBdXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgXyBdIHwgc2V4cCAtPlxuICAgICAgKHRyeSBSZXN1bHQuT2sgKGFfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICAgfCBleG4gLT4gUmVzdWx0LkVycm9yIChzZXhwLCBFcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgKGdyYW1tYXIgOiBfIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQpIDogXyB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgIHsgdW50eXBlZCA9IFVuaW9uIFsgZ3JhbW1hci51bnR5cGVkOyBCYXNlLlNleHAudF9zZXhwX2dyYW1tYXIudW50eXBlZCBdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgV2l0aF90ZXh0ID0gc3RydWN0XG4gIG9wZW4gUmVzdWx0LkV4cG9ydFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB2YWx1ZSA6ICdhXG4gICAgOyB0ZXh0IDogc3RyaW5nXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBBdG9tIHQudGV4dFxuXG4gIGxldCBvZl90ZXh0IHZhbHVlX29mX3NleHAgPyhmaWxlbmFtZSA9IFwiXCIpIHRleHQgPVxuICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gb2Zfc3RyaW5nX2NvbnYgdGV4dCB2YWx1ZV9vZl9zZXhwKSB3aXRoXG4gICAgfCBPayAoYFJlc3VsdCB2YWx1ZSkgLT4gT2sgeyB2YWx1ZTsgdGV4dCB9XG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiBlcnJcbiAgICB8IE9rIChgRXJyb3IgKGV4biwgYW5ub3RhdGVkKSkgLT5cbiAgICAgIEVycm9yIChFcnJvci5vZl9leG4gKEFubm90YXRlZC5nZXRfY29udl9leG4gYW5ub3RhdGVkIH5maWxlOmZpbGVuYW1lIH5leGM6ZXhuKSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIldpdGhfdGV4dC50IHNob3VsZCBiZSBzdG9yZWQgYXMgYW4gYXRvbSwgYnV0IGluc3RlYWQgYSBsaXN0IHdhcyBmb3VuZC5cIlxuICAgICAgICBzZXhwXG4gICAgfCBBdG9tIHRleHQgLT4gb2ZfdGV4dCBhX29mX3NleHAgdGV4dCB8PiBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLlN0cmluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgdGV4dCB0ID0gdC50ZXh0XG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gIGxldCBvZl92YWx1ZSBzZXhwX29mX3ZhbHVlIHZhbHVlID1cbiAgICBsZXQgdGV4dCA9IHNleHBfb2ZfdmFsdWUgdmFsdWUgfD4gdG9fc3RyaW5nX2h1bSBpblxuICAgIHsgdmFsdWU7IHRleHQgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Egbm9fcmFpc2UgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBzZXhwX29mX25vX3JhaXNlIHNleHBfb2ZfYSBhID1cbiAgdHJ5IHNleHBfb2ZfYSBhIHdpdGhcbiAgfCBleG4gLT5cbiAgICAodHJ5IExpc3QgWyBBdG9tIFwiZmFpbHVyZSBidWlsZGluZyBzZXhwXCI7IHNleHBfb2ZfZXhuIGV4biBdIHdpdGhcbiAgICAgfCBfIC0+IEF0b20gXCJjb3VsZCBub3QgYnVpbGQgc2V4cCBmb3IgZXhuIHJhaXNlZCB3aGVuIGJ1aWxkaW5nIHNleHAgZm9yIHZhbHVlXCIpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNleHApIChCYXNlLlNleHApXG5cbmxldCBvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWN1cnNpdmVseSBvZl9zZXhwIHNleHAgPVxuICBsZXQgciA9IFNleHBsaWIuQ29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIGluXG4gIGxldCBwcmV2ID0gIXIgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZmluYWxseTooZnVuICgpIC0+IHIgOj0gcHJldilcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICByIDo9IGZhbHNlO1xuICAgICAgb2Zfc2V4cCBzZXhwKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXhwXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXhwXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXhwXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaF9xdWV1ZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgU19iYWNrZW5kID0gU19iYWNrZW5kXG5cbm1vZHVsZSBNYWtlX2JhY2tlbmQgKFRhYmxlIDogSGFzaHRibF9pbnRmLkhhc2h0YmwpIDogU19iYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIEJhY2tlbmQgPVxuICAgIFMxXG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2FyZyA6PSAna2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9rZXkgOj0gJ2tleVxuXG4gIG1vZHVsZSBCYWNrZW5kIDogQmFja2VuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXlfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgKCdrZXksICd2YWx1ZSkgdCA9XG4gICAgICAgICAgeyBrZXkgOiAna2V5XG4gICAgICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQga2V5IHQgPSB0LmtleVxuICAgICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHsga2V5OyB2YWx1ZSB9ID1cbiAgICAgICAgWyVzZXhwX29mOiBrZXkgKiBkYXRhXSAoa2V5LCB2YWx1ZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBvcGVuIEtleV92YWx1ZS5UXG4gICAgbW9kdWxlIEVsdCA9IERvdWJseV9saW5rZWQuRWx0XG5cbiAgICB0eXBlICgna2V5LCAnZGF0YSkgdCA9XG4gICAgICB7IG11dGFibGUgbnVtX3JlYWRlcnMgOiBpbnRcbiAgICAgIDsgcXVldWUgOiAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudFxuICAgICAgOyB0YWJsZSA6ICgna2V5LCAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IEVsdC50KSBUYWJsZS50XG4gICAgICB9XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgICAgIFslc2V4cF9vZjogKGtleSwgZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XSB0LnF1ZXVlXG4gICAgOztcblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBhc3NlcnQgKERvdWJseV9saW5rZWQubGVuZ3RoIHQucXVldWUgPSBUYWJsZS5sZW5ndGggdC50YWJsZSk7XG4gICAgICAoKiBMb29rIGF0IGVhY2ggZWxlbWVudCBpbiB0aGUgcXVldWUsIGNoZWNraW5nOlxuICAgICAgICogICAtIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIGlzIGluIHRoZSBoYXNoIHRhYmxlXG4gICAgICAgKiAgIC0gdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzXG4gICAgICAqKVxuICAgICAgbGV0IGtleXMgPSBUYWJsZS5jcmVhdGUgfnNpemU6KFRhYmxlLmxlbmd0aCB0LnRhYmxlKSAoVGFibGUuaGFzaGFibGVfcyB0LnRhYmxlKSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPlxuICAgICAgICBsZXQga2V5ID0ga3Yua2V5IGluXG4gICAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgYXNzZXJ0IChub3QgKFRhYmxlLm1lbSBrZXlzIGtleSkpO1xuICAgICAgICAgIFRhYmxlLnNldCBrZXlzIH5rZXkgfmRhdGE6KCkpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDE2KSBoYXNoYWJsZSA9XG4gICAgICB7IG51bV9yZWFkZXJzID0gMFxuICAgICAgOyBxdWV1ZSA9IERvdWJseV9saW5rZWQuY3JlYXRlICgpXG4gICAgICA7IHRhYmxlID0gVGFibGUuY3JlYXRlIH5ncm93dGhfYWxsb3dlZCB+c2l6ZSAoVGFibGUuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVhZCB0IGYgPVxuICAgICAgdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzICsgMTtcbiAgICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzIC0gMSlcbiAgICA7O1xuXG4gICAgbGV0IGVuc3VyZV9jYW5fbW9kaWZ5IHQgPVxuICAgICAgaWYgdC5udW1fcmVhZGVycyA+IDBcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJJdCBpcyBhbiBlcnJvciB0byBtb2RpZnkgYSBIYXNoX3F1ZXVlLnQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgaXQuXCJcbiAgICA7O1xuXG4gICAgbGV0IGNsZWFyIHQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIERvdWJseV9saW5rZWQuY2xlYXIgdC5xdWV1ZTtcbiAgICAgIFRhYmxlLmNsZWFyIHQudGFibGVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCB0ID0gVGFibGUubGVuZ3RoIHQudGFibGVcbiAgICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4gICAgbGV0IGxvb2t1cCB0IGsgPVxuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT4gU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9leG4gdCBrID0gKEVsdC52YWx1ZSAoVGFibGUuZmluZF9leG4gdC50YWJsZSBrKSkudmFsdWVcbiAgICBsZXQgbWVtIHQgayA9IFRhYmxlLm1lbSB0LnRhYmxlIGtcblxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSB0YWlsLXJlY3Vyc2l2ZSBDb3JlX2xpc3QubWFwICopXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG4gICAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5tYXAgKERvdWJseV9saW5rZWQudG9fYXJyYXkgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG5cbiAgICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZm9yX2FsbCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmV4aXN0cyB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZmluZF9tYXAgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGlmIFRhYmxlLm1lbSB0LnRhYmxlIGtleVxuICAgICAgdGhlbiBgS2V5X2FscmVhZHlfcHJlc2VudFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjb250ZW50cyA9IHsgS2V5X3ZhbHVlLmtleTsgdmFsdWUgfSBpblxuICAgICAgICBsZXQgZWx0ID1cbiAgICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2xhc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgICAgaW5cbiAgICAgICAgVGFibGUuc2V0IHQudGFibGUgfmtleSB+ZGF0YTplbHQ7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFjayB0ID0gZW5xdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnQgdCA9IGVucXVldWUgdCBgZnJvbnRcblxuICAgIGxldCByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUuZW5xdWV1ZV9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfZXhuIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbWF0Y2ggZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlIHdpdGhcbiAgICAgIHwgYEtleV9hbHJlYWR5X3ByZXNlbnQgLT4gcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5XG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrX2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250X2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgICgqIFBlcmZvcm1hbmNlIGhhY2s6IHdlIGltcGxlbWVudCB0aGlzIHZlcnNpb24gc2VwYXJhdGVseSB0byBhdm9pZCBhbGxvY2F0aW9uIGZyb20gdGhlXG4gICAgICAgb3B0aW9uLiAqKVxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFjayB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udCB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBtYXliZV9rdiA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2xhc3QgdC5xdWV1ZVxuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9maXJzdCB0LnF1ZXVlXG4gICAgICBpblxuICAgICAgbWF0Y2ggbWF5YmVfa3Ygd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPlxuICAgICAgICBUYWJsZS5yZW1vdmUgdC50YWJsZSBrdi5rZXk7XG4gICAgICAgIFNvbWUgKGt2LmtleSwga3YudmFsdWUpXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpID1cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX3dpdGhfa2V5OiBlbXB0eSBxdWV1ZVwiXVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpXG4gICAgICB8IFNvbWUgKGssIHYpIC0+IGssIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBmcm9udFxuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChfLCB2KSAtPiBTb21lIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFjayB0ID0gZGVxdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnQgdCA9IGRlcXVldWUgdCBgZnJvbnRcblxuICAgIGxldCBsYXN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgbGFzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfZXhuOiBlbXB0eSBxdWV1ZVwiXVxuXG4gICAgbGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKVxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBrZXlzIHQgPVxuICAgICAgKCogUmV0dXJuIHRoZSBrZXlzIGluIHRoZSBvcmRlciBvZiB0aGUgcXVldWUuICopXG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS5rZXlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG4gICAgbGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb2xkIHQucXVldWUgfmluaXQgfmY6KGZ1biBhYyBrdiAtPlxuICAgICAgICAgIGYgYWMgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIGFjIH5rZXk6XyB+ZGF0YSAtPiBmIGFjIGRhdGEpXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgICBsZXQgZGVxdWV1ZV9hbGwgdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBtYXRjaCBkZXF1ZXVlX2Zyb250IHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICBmIHY7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgKFwiLi4uXCIsIHNraXBfdG8pXG4gICAgICAgIGVsc2UgWWllbGQgKGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXgsIGxpbmVfaW5kZXggKyAxKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvcl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIEV4dGVuZCAoTSA6IEJhc2UuSWRlbnRpZmlhYmxlLlMpIChCIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9IE0udCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cbiAgICBpbmNsdWRlIChCIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kX2JpbmFibGUgKE0pIChUKVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IFRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gTS5oYXNoYWJsZVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgbGV0IG9mX3N0cmluZyA9IEZuLmlkXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgbGV0IGhhc2hhYmxlID0gU3RhYmxlLlYxLmhhc2hhYmxlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuU3RyaW5nKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc3RyaW5nXG5sZXQgZ2VuX25vbmVtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5XG5sZXQgZ2VuJyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX29mXG5sZXQgZ2VuX25vbmVtcHR5JyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eV9vZlxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBjaGFycyA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJzIH5sZW5ndGhcbjs7XG5cbmxldCB0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6MCB+bGVuOmlcbjs7XG5cbmxldCBydGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggcmZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSlcbjs7XG5cbigqKiBTZWUgeyFBcnJheS5ub3JtYWxpemV9IGZvciB0aGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zLiAqKVxubGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbmxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG47O1xuXG5sZXQgbmdldCB4IGkgPVxuICBsZXQgbW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nIGluXG4gIHguW25vcm1hbGl6ZSB4IGldXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5TdHJpbmd9W0Jhc2UuU3RyaW5nXX0uICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIFtDYXNlbGVzc10gY29tcGFyZXMgYW5kIGhhc2hlcyBzdHJpbmdzIGlnbm9yaW5nIGNhc2UsIHNvIHRoYXQgZm9yIGV4YW1wbGVcbiAgICBbQ2FzZWxlc3MuZXF1YWwgXCJPQ2FtbFwiIFwib2NhbWxcIl0gYW5kIFtDYXNlbGVzcy4oXCJhcHBsZVwiIDwgXCJCYW5hbmFcIildIGFyZSBbdHJ1ZV0sIGFuZFxuICAgIFtDYXNlbGVzcy5NYXBdLCBbQ2FzZWxlc3MuVGFibGVdIGxvb2t1cCBhbmQgW0Nhc2VsZXNzLlNldF0gbWVtYmVyc2hpcCBpc1xuICAgIGNhc2UtaW5zZW5zaXRpdmUuXG5cbiAgICBbQ2FzZWxlc3NdIGFsc28gcHJvdmlkZXMgY2FzZS1pbnNlbnNpdGl2ZSBbaXNfc3VmZml4XSBhbmQgW2lzX3ByZWZpeF0gZnVuY3Rpb25zLCBzb1xuICAgIHRoYXQgZm9yIGV4YW1wbGUgW0Nhc2VsZXNzLmlzX3N1ZmZpeCBcIk9DYW1sXCIgfnN1ZmZpeDpcIkFtTFwiXSBhbmQgW0Nhc2VsZXNzLmlzX3ByZWZpeFxuICAgIFwiT0NhbWxcIiB+cHJlZml4Olwib2NcIl0gYXJlIFt0cnVlXS4gKilcbm1vZHVsZSBDYXNlbGVzcyA6IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwXVxuXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5cbigqKiBbc2xpY2UgdCBzdGFydCBzdG9wXSByZXR1cm5zIGEgbmV3IHN0cmluZyBpbmNsdWRpbmcgZWxlbWVudHMgW3QuKHN0YXJ0KV0gdGhyb3VnaFxuICAgIFt0LihzdG9wLTEpXSwgbm9ybWFsaXplZCBQeXRob24tc3R5bGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgW3N0b3AgPSAwXSBpcyB0cmVhdGVkIGFzXG4gICAgW3N0b3AgPSBsZW5ndGggdF0uICopXG52YWwgc2xpY2UgOiB0IC0+IGludCAtPiBpbnQgLT4gdFxuXG4oKiogW25nZXQgcyBpXSBnZXRzIHRoZSBjaGFyIGF0IG5vcm1hbGl6ZWQgcG9zaXRpb24gW2ldIGluIFtzXS4gKilcbnZhbCBuZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuXG4oKiogW3Rha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgcHJlZml4IH5mXVxuICAgIChTZWUgW2xzdHJpcF0gdG8gZHJvcCBzdWNoIGEgcHJlZml4KSAqKVxudmFsIHRha2Vfd2hpbGUgOiB0IC0+IGY6KGNoYXIgLT4gYm9vbCkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooY2hhciAtPiBib29sKSAtPiB0XG5cbmluY2x1ZGUgSGV4ZHVtcC5TIHdpdGggdHlwZSB0IDo9IHRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eSA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2ZcbiAgICBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHknIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtzdHJpbmddIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtTdHJpbmcuU3RhYmxlXSBleGlzdHMgb25seSB0byBpbnRyb2R1Y2VcbiAgICBbU3RyaW5nLlN0YWJsZS5TZXRdLCBbU3RyaW5nLlN0YWJsZS5NYXBdLCBbU3RyaW5nLlN0YWJsZS5UYWJsZV0sIGFuZCBwcm92aWRlIGludGVyZmFjZVxuICAgIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBzdGFibGUgdHlwZXMuICopXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9jb21wYXJhYmxlLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkJvb2wpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQm9vbFxuXG5pbmNsdWRlIChcbiAgQmFzZS5Cb29sIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQm9vbFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJvb2wpXG5cbmxldCBvZl9zdHJpbmdfaHVtID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IHRhYmxlID0gU3RyaW5nLkNhc2VsZXNzLlRhYmxlLmNyZWF0ZSAoKSBpblxuICAgICAgIFsgZmFsc2UsIFsgXCJmYWxzZVwiOyBcIm5vXCI7IFwiMFwiIF07IHRydWUsIFsgXCJ0cnVlXCI7IFwieWVzXCI7IFwiMVwiIF0gXVxuICAgICAgIHw+IExpc3QuaXRlciB+ZjooZnVuIChib29sLCBzdHJpbmdzKSAtPlxuICAgICAgICAgTGlzdC5pdGVyIHN0cmluZ3MgfmY6KGZ1biBzdHJpbmcgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzdHJpbmcgfmRhdGE6Ym9vbDtcbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnByZWZpeCBzdHJpbmcgMSkgfmRhdGE6Ym9vbCkpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBsZXQgcmFpc2VfaW52YWxpZCBpbnB1dCA9XG4gICAgbGV0IGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyAoZm9yY2UgdGFibGUpKSBpblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkJvb2wub2Zfc3RyaW5nX2h1bTogaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgKGlucHV0IDogc3RyaW5nKVxuICAgICAgICAgIChleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlIDogU3RyaW5nLlNldC50KV1cbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIEhhc2h0YmwuZmluZF9hbmRfY2FsbCAoZm9yY2UgdGFibGUpIHN0cmluZyB+aWZfZm91bmQ6Rm4uaWQgfmlmX25vdF9mb3VuZDpyYWlzZV9pbnZhbGlkXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJvb2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJvb2xcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmJvb2xcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBiaW5faW9dXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJ5dGVzKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgZ2VuJyBjaGFyX2dlbiA9IFN0cmluZy5nZW4nIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gPVxuICBTdHJpbmcuZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQ2hhcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbigqIGluY2x1ZGUgW0Jhc2UuQ2hhcl0gYWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIG9mIFtJZGVudGlmaWFibGUuRXh0ZW5kXSB0byByZXBsYWNlIHRoZVxuICAgW0NvbXBhcmFibGVdIGZ1bmN0aW9ucyB3aXRoIHRoZSBwZXJ2YXNpdmUgdmVyc2lvbnMgKilcbmluY2x1ZGUgKFxuICBCYXNlLkNoYXIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5DaGFyXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ2hhclxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNoYXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmNoYXJcbmxldCBnZW5fZGlnaXQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfZGlnaXRcbmxldCBnZW5fbG93ZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2xvd2VyY2FzZVxubGV0IGdlbl91cHBlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdXBwZXJjYXNlXG5sZXQgZ2VuX2FscGhhID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhXG5sZXQgZ2VuX2FscGhhbnVtID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhbnVtXG5sZXQgZ2VuX3ByaW50ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3ByaW50XG5sZXQgZ2VuX3doaXRlc3BhY2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfd2hpdGVzcGFjZVxubGV0IGdlbl91bmlmb3JtX2luY2x1c2l2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbiA9IEJhc2UuU2lnblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ24udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ24pIChTdGFibGUuVjEpXG4iLCJleHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5GbG9hdFxuXG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKFQpXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gVFxuXG5sZXQgdmFsaWRhdGVfb3JkaW5hcnkgdCA9XG4gIFZhbGlkYXRlLm9mX2Vycm9yX29wdFxuICAgIChsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICAgICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgICAgfCBDLk5vcm1hbCB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IE5vbmVcbiAgICAgfCBDLkluZmluaXRlIC0+IFNvbWUgXCJ2YWx1ZSBpcyBpbmZpbml0ZVwiXG4gICAgIHwgQy5OYW4gLT4gU29tZSBcInZhbHVlIGlzIE5hTlwiKVxuOztcblxubW9kdWxlIFYgPSBzdHJ1Y3RcbiAgbW9kdWxlIFpaID0gQ29tcGFyYWJsZS5WYWxpZGF0ZSAoVClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9ib3VuZCB0IH5taW4gfm1heClcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2xib3VuZCB0IH5taW4pXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV91Ym91bmQgdCB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVlxuXG5tb2R1bGUgUm9idXN0X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICgqIGludGVuZGVkIHRvIGJlIGEgdG9sZXJhbmNlIG9uIGh1bWFuLWVudGVyZWQgZmxvYXRzICopXG5cbiAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcblxuICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IGZsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcbiAgICBlbmQpIDogUyA9IHN0cnVjdFxuICAgICgqIFdlIGhhdmUgdGVzdCBpbiB0aGUgdHJlZSB0aGF0IHJlbHkgb24gdGhlc2UgZnVuY3Rpb25zIG5vdCBhbGxvY2F0aW5nLCBldmVuIHdpdGhvdXRcbiAgICAgICBYX0xJQlJBUllfSU5MSU5HLiBUaGUgb25seSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlc2UgZG9uJ3QgY3JlYXRlIHRlbXBvcmFyeSBib3hlZFxuICAgICAgIGZsb2F0cyB3aXRob3V0IFhfTElCUkFSWV9JTkxJTkcgaXMgZm9yIHRoaXMgY29kZSB0byBzZWUgdGhlIGZsb2F0IG9wZXJhdGlvbnMgYXNcbiAgICAgICBleHRlcm5hbHMsIGFzIGRlZmluZWQgaW4gW1BlcnZhc2l2ZXNdLiBUaGF0J3Mgd2h5IHdlIHVzZSBbUG9seV0gYW5kIGZsb2F0XG4gICAgICAgYXJpdGhtZXRpYyBmcm9tIFtDYW1sXS4gKilcbiAgICBvcGVuIFBvbHlcblxuICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBULnJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoID49LiApIHggeSA9IHggPj0gQ2FtbC4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBDYW1sLiggKy4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDwuICkgeCB5ID0geSA+LiB4XG4gICAgbGV0ICggPD4uICkgeCB5ID0gbm90ICh4ID0uIHkpXG5cbiAgICBsZXQgcm9idXN0bHlfY29tcGFyZSB4IHkgPVxuICAgICAgbGV0IGQgPSBDYW1sLiggLS4gKSB4IHkgaW5cbiAgICAgIGlmIGQgPCBDYW1sLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cF1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogU3RhYmxlX2NvbXBhcmFibGUuVjFcbmVuZFxuXG5tb2R1bGUgdHlwZSBIZXhhYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBIZXggOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZ19odW0gOiA/ZGVsaW1pdGVyOmNoYXIgLT4gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgKCpfIEVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBvZiBbQmFzZS5JbnQuSGV4YWJsZV0uICopXG4gIGluY2x1ZGUgQmFzZS5JbnQuSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0IGFuZCBtb2R1bGUgSGV4IDo9IEhleFxuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TX2ludCB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU191bmJvdW5kZWQgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TX3VuYm91bmRlZFxuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbl93aXRoX3N0YWJsZSA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuc2lvblxuXG4gIG1vZHVsZSBTdGFibGUgOlxuICAgIFN0YWJsZSB3aXRoIHR5cGUgVjEudCA9IHQgYW5kIHR5cGUgVjEuY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQzMilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50MzJcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50MzIpXG5cbnR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50MzJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDMyXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDY0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQ2NFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2NClcblxudHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludDY0fVtCYXNlLkludDY0XX0uICopXG5cbigqKiB7MiBJbnRlcmZhY2UgZnJvbSBCYXNlfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkludDY0XG5lbmRcblxuKCoqIHsyIEV4dGVuc2lvbnN9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlXG4gIEludF9pbnRmLkV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQmluIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA6PSBCYXNlLkludDYzLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpbl9lbXVsYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2NClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcud3JhcF9leG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcudW53cmFwXG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgdHlwZSAnYSBiaW5hYmxlID0gKG1vZHVsZSBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IGJpbmFibGVfb2ZfcmVwciA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBiIGJpbmFibGUgPSBmdW5jdGlvblxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IChtb2R1bGUgSW50KVxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gKG1vZHVsZSBCaW5fZW11bGF0ZWQpXG4gIDs7XG5cbiAgbGV0IGJpbmFibGUgOiBCYXNlLkludDYzLnQgYmluYWJsZSA9IGJpbmFibGVfb2ZfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuXG4gIGluY2x1ZGUgKHZhbCBiaW5hYmxlKVxuXG4gIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLmJpbl9zaGFwZV9pbnQ2M1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJpblxuXG4gICAgICBpbmNsdWRlIChcbiAgICAgICAgQmFzZS5JbnQ2MyA6XG4gICAgICAgICAgQmFzZS5Db21wYXJhYmxlLlNcbiAgICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQmFzZS5JbnQ2My5jb21wYXJhdG9yX3dpdG5lc3MpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbigqIFRoaXMgW2luY2x1ZGUgc3RydWN0XSBpcyByZXF1aXJlZCBiZWNhdXNlIGl0IGxldHMgdXMgc2hhZG93IFt0XSB3aGVuIHdlIGluY2x1ZGVcbiAgIFtCYXNlLkludDYzXSBsYXRlciBvbi4gKilcbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudFxuZW5kXG5cbmxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2ludDYzXG5sZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX2ludDYzXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDYzKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgQmluXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyYWJsZS5Qb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPVxuICBCYXNlLkludDYzXG5cbmluY2x1ZGUgQmFzZS5JbnQ2M1xuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2MylcblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQmFzZS5FeHBvcnRcbiAgb3BlbiBCaW5fcHJvdC5TdGRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuVW5pdClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5Vbml0XG5cbnR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci51bml0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bml0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci51bml0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWcgZW5kXG5cbnR5cGUgbSA9IChtb2R1bGUgUylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgb3BlbiBTZXhwbGliLlN0ZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgc2V4cCwgdHlwZXJlcF1cblxuICAgIGxldCBtYXAgPSBCYXNlLkxhenkubWFwXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU3RhYmxlLlYxLnRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgKEJhc2UuTGF6eSA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5OYXRpdmVpbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5OYXRpdmVpbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuTmF0aXZlaW50KVxuXG50eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5uYXRpdmVpbnRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5Ob3RoaW5nLnQgPSB8XG5cbiAgICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5fc2hhcGVdXG4gICAgZW5kXG5cbiAgICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IEJhc2UuTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl9zaGFwZV90ID0gU2hhcGUuYmluX3NoYXBlX3RcbiAgICBsZXQgdHBfbG9jID0gWyVoZXJlXS5wb3NfZm5hbWUgXiBcIi5TdGFibGUuVjEudFwiXG4gICAgbGV0IGFsbCA9IFtdXG4gICAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICAgIGxldCBiaW5fc2l6ZV90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fd3JpdGVfdCBfYnVmIH5wb3M6XyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgdHBfbG9jICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IF9idWYgfnBvc19yZWYgPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3JlYWRfZXJyb3IgKEVtcHR5X3R5cGUgdHBfbG9jKSAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIuQ29udl9lcnJvci5lbXB0eV90eXBlIHRwX2xvYyBzZXhwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuTm90aGluZ1xuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChCYXNlLk5vdGhpbmcpIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBuZXZlcl9yZXR1cm5zID0gTm90aGluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuZXZlcl9yZXR1cm5zID0gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gQmFzZS5PcmRlcmluZy50ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuT3JkZXJpbmcgd2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIChCYXNlLk9yZGVyaW5nIDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlJlZlxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIFQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgbGV0IHJlYWRfb25seSA9IEZuLmlkXG4gIGxldCBvZl9yZWYgPSBGbi5pZFxuICBsZXQgdG9fcmVmID0gRm4uaWRcbiAgbGV0IHNldCA9ICggOj0gKVxuICBsZXQgZ2V0ID0gKCAhIClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cbmluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uKSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEJ1ZyBvZiBzdHJpbmcgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIERvbid0IHVzZSBbQnVnXVwiXVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgdXcgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIENhbWwuTm90X2ZvdW5kXG4gIDs7XG5lbmQgOlxuc2lnXG4gIHZhbCB1dyA6ICdhIG9wdGlvbiAtPiAnYSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTJdIFVzZSBbT3B0aW9uLnZhbHVlX2V4bl1cIl1cbmVuZClcblxuKCoqIFtwaHlzX3NhbWVdIGlzIGxpa2UgW3BoeXNfZXF1YWxdLCBidXQgd2l0aCBhIG1vcmUgZ2VuZXJhbCB0eXBlLiAgW3BoeXNfc2FtZV0gaXMgdXNlZnVsXG4gICAgd2hlbiBkZWFsaW5nIHdpdGggZXhpc3RlbnRpYWwgdHlwZXMsIHdoZW4gb25lIGhhcyBhIHBhY2tlZCB2YWx1ZSBhbmQgYW4gdW5wYWNrZWQgdmFsdWVcbiAgICB0aGF0IG9uZSB3YW50cyB0byBjaGVjayBhcmUgcGh5c2ljYWxseSBlcXVhbC4gIE9uZSBjYW4ndCB1c2UgW3BoeXNfZXF1YWxdIGluIHN1Y2ggYVxuICAgIHNpdHVhdGlvbiBiZWNhdXNlIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LiAqKVxubGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoT2JqLm1hZ2ljIGIgOiBhKVxuXG5sZXQgKCAlICkgPSBJbnQuKCAlIClcbmxldCAoIC8lICkgPSBJbnQuKCAvJSApXG5sZXQgKCAvLyApID0gSW50LiggLy8gKVxubGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5sZXQgYnByaW50ZiA9IFByaW50Zi5icHJpbnRmXG5sZXQgY29uc3QgPSBGbi5jb25zdFxubGV0IGVwcmludGYgPSBQcmludGYuZXByaW50ZlxubGV0IGVycm9yID0gT3JfZXJyb3IuZXJyb3JcbmxldCBlcnJvcl9zID0gT3JfZXJyb3IuZXJyb3Jfc1xubGV0IGZhaWx3aXRoZiA9IEJhc2UuUHJpbnRmLmZhaWx3aXRoZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgZmFpbHdpdGhwID0gKEVycm9yLmZhaWx3aXRocCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl0pXG5lbmQgOlxuc2lnXG4gIHZhbCBmYWlsd2l0aHBcbiAgICA6ICA/c3RyaWN0OnVuaXRcbiAgICAtPiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgLT4gc3RyaW5nXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgIC0+IF9cbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSBVc2UgW2ZhaWx3aXRoc10gaW5zdGVhZC5cIl1cbmVuZClcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IGZvcmNlID0gQmFzZS5MYXp5LmZvcmNlXG5sZXQgZnByaW50ZiA9IFByaW50Zi5mcHJpbnRmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGxldCBpZGVudCA9IEZuLmlkXG5lbmQgOlxuc2lnXG4gIHZhbCBpZGVudCA6ICdhIC0+ICdhIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOF0gVXNlIFtGbi5pZF0gaW5zdGVhZC5cIl1cbmVuZClcblxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcGh5c19zYW1lID0gcGh5c19zYW1lXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50ID0gSW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgPSAnYSBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICAoKiBCaW5fcHJvdCBoYXMgb3B0aW1pemVkIGZ1bmN0aW9ucyBmb3IgZmxvYXQgYXJyYXlzICopXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gRmxvYXQudCBhcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlIGZsb2F0X2FycmF5IDo9IGZsb2F0X2FycmF5KVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBib29sIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICBpbmNsdWRlIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOV0gdXNlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIGluc3RlYWRcIl1cbiAgZW5kXG4gICAgICAgICAgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5lbmRcbndpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxud2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxud2l0aCB0eXBlIGNoYXIgOj0gY2hhclxud2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG53aXRoIHR5cGUgaW50IDo9IGludFxud2l0aCB0eXBlIGludDMyIDo9IGludDMyXG53aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbndpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbndpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG53aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxud2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbndpdGggdHlwZSBieXRlcyA6PSBieXRlc1xud2l0aCB0eXBlICdhIGxhenlfdCA6PSAnYSBsYXp5X3RcbndpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG53aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuXG5sZXQgc2V4cF9vZl9leG4gPSBFeG4uc2V4cF9vZl90XG5cblxuKCogVGhlIGNvZGUgYmVsb3cgY2hlY2tzIHRoYXQgdGhlIHNpZ25hdHVyZXMgaW4gbWFwLm1saSBhbmQgc2V0Lm1saSBhcmVcbiAgIGNvbnNpc3RlbnQgd2l0aCB0aGUgZ2VuZXJpYyBtYXAgYW5kIHNldCBzaWduYXR1cmVzIGRlZmluZWQgaW4gbWFwX2ludGYubWxcbiAgIGFuZCBzZXRfaW50Zi5tbC4gKilcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgY21wID0gJ2FcbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgXyA6IHNpZ1xuICAgIG9wZW4gU2V0X2ludGZcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgVHJlZS5OYW1lZC50XG4gICAgZW5kXG5cbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczJcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIFQuY21wXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9ucyA6PVxuICAgICAgICAoJ2EsICdjbXAsICd6KSBTZXRfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gIGVuZCA9XG4gICAgU2V0XG4gIGluXG4gICgpXG47O1xuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIGtleSA9ICdrXG4gICAgdHlwZSAnYyBjbXAgPSAnY1xuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBfIDogc2lnXG4gICAgb3BlbiBNYXBfaW50ZlxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzM1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnMgOj1cbiAgICAgICAgKCdhLCAnY21wLCAneikgTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBULmtleVxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBULmNtcFxuICBlbmQgPVxuICAgIE1hcFxuICBpblxuICAoKVxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl0gW0BAaW1tZWRpYXRlNjRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9yZXByIDogUmVwci50IC0+IHRcbiAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcHIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBvZl9yZXByID0gRm4uaWRcbiAgbGV0IHRvX3JlcHIgPSBGbi5pZFxuXG4gIGxldCB0b19zdHJpbmcgbiA9XG4gICAgbGV0IG9wZW4gUmVwciBpblxuICAgIGxldCBraWIgPSBvZl9pbnQgMTAyNCBpblxuICAgIGxldCBtaWIgPSBraWIgKiBraWIgaW5cbiAgICBsZXQgZ2liID0ga2liICogbWliIGluXG4gICAgbGV0IG5fYWJzID0gYWJzIG4gaW5cbiAgICBpZiBuX2FicyA8IGtpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVkQlwiICh0b19pbnRfZXhuIG4pXG4gICAgZWxzZSBpZiBuX2FicyA8IG1pYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnS1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGtpYilcbiAgICBlbHNlIGlmIG5fYWJzIDwgZ2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdNXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgbWliKVxuICAgIGVsc2Ugc3ByaW50ZiBcIiVnR1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGdpYilcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IG4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBuKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgYnl0ZXNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuICh0b19yZXByIHQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEJpZ2FycmF5XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlX2JpZ3N0cmluZ1xuXG4gICAgbW9kdWxlIFogOiBzaWdcbiAgICAgIHR5cGUgdCA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJpZ3N0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFpcblxuICAgIHR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90IHQgPyhwb3MgPSAwKSB3cml0ZXIgdiA9XG4gIGxldCBkYXRhX2xlbiA9IHdyaXRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgdiBpblxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiB2YWx1ZSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkJpZ3N0cmluZy5zZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgICB2YWx1ZVxuICAgICAgbGVuXG4gICAgICAoKTtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuIHZhbHVlID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW5cbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiQmlnc3RyaW5nLnNldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmc6ICVTIGlzIGxvbmdlciB0aGFuICVkXCJcbiAgICAgIHZhbHVlXG4gICAgICBsZW5cbiAgICAgICgpO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBTdHJpbmdcblxuICAgICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBULm9mX2JpbmFyeV9leG5cbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgIGxldCBoYXNoID0gaGFzaFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDVcblxuICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgZGlnZXN0X3N0cmluZyBzID0gTWQ1X2xpYi5zdHJpbmcgc1xuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBkaWdlc3RfbnVtX2J5dGVzID0gMTZcbmxldCB0b19oZXggPSBULnRvX2hleFxubGV0IGZyb21faGV4ID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfaGV4X2V4biA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2JpbmFyeV9leG4gPSBULm9mX2JpbmFyeV9leG5cbmxldCB0b19iaW5hcnkgPSBULnRvX2JpbmFyeVxubGV0IGRpZ2VzdF9zdHJpbmcgPSBTdGFibGUuZGlnZXN0X3N0cmluZ1xubGV0IGRpZ2VzdF9ieXRlcyA9IE1kNV9saWIuYnl0ZXNcblxuZXh0ZXJuYWwgY2FtbF9zeXNfb3BlblxuICA6ICBzdHJpbmdcbiAgLT4gQ2FtbC5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChDYW1sLkRpZ2VzdC5jaGFubmVsIGNoYW5uZWwgbGVuKVxuOztcblxubGV0IGNoYW5uZWwgY2hhbm5lbCBsZW4gPVxuICBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuXG47O1xuXG5sZXQgb3V0cHV0X2Jsb2NraW5nIHQgb2MgPSBDYW1sLkRpZ2VzdC5vdXRwdXQgb2MgKHRvX2JpbmFyeSB0KVxubGV0IG91dHB1dCBvYyB0ID0gb3V0cHV0X2Jsb2NraW5nIHQgb2NcbmxldCBpbnB1dF9ibG9ja2luZyBpYyA9IG9mX2JpbmFyeV9leG4gKENhbWwuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG5cbm1vZHVsZSBPZl9iaW5hYmxlID0gT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTEgPSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTIgPSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTMgPSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2Zfc2V4cGFibGUgPSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuIiwiKCogRnVuY3Rpb25zIGZvciBwYXJzaW5nIHRpbWUgem9uZSBkYXRhYmFzZSBmaWxlcyAoemljIGZpbGVzKS5cblxuICAgQSB0aW1lIHpvbmUgZmlsZSBjb25zaXN0cyAoY29uY2VwdHVhbGx5IC0gdGhlIHJlcHJlc2VudGF0aW9uIGlzIG1vcmVcbiAgIGNvbXBhY3QpIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiAoVGltZS50ICogW2xvY2FsX3RpbWVfdHlwZV0pIHRoYXQgbWFya1xuICAgdGhlIGJvdW5kYXJpZXMgKG1hcmtlZCBmcm9tIHRoZSBlcG9jaCkgYXQgd2hpY2ggdmFyaW91cyB0aW1lIGFkanVzdG1lbnRcbiAgIHJlZ2ltZXMgYXJlIGluIGVmZmVjdC4gIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyBicmVha2luZyBkb3duIGFsbFxuICAgdGltZSBwYXN0IHRoZSBlcG9jaCBpbnRvIHJhbmdlcyB3aXRoIGEgW2xvY2FsX3RpbWVfdHlwZV0gdGhhdCBkZXNjcmliZXMgdGhlXG4gICBvZmZzZXQgZnJvbSBHTVQgdG8gYXBwbHkgdG8gZWFjaCByYW5nZSB0byBnZXQgbG9jYWwgdGltZS5cbiopXG5cbm9wZW4gSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBab25lX2ludGZcblxuZXhjZXB0aW9uIEludmFsaWRfZmlsZV9mb3JtYXQgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZ1bGxfZGF0YSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEluZGV4ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2NcbiAgICAgICAgbGV0IHByZXYgPSBJbnQucHJlZFxuICAgICAgICBsZXQgYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb24gPSAtMVxuXG4gICAgICAgICgqIFNvbWUgZXhpc3RpbmcgY2xpZW50cyBleHBlY3QgW2luZGV4ID49IDBdLCBzbyB3ZSBuZXZlciBzZXJpYWxpemUgYSBuZWdhdGl2ZVxuICAgICAgICAgICBpbmRleC4gVGhpcyBjb252ZXJzaW9uIGNhbiBiZSByZW1vdmVkIGlmIG5ldyBzdGFibGUgdmVyc2lvbnMgYXJlIG1pbnRlZC4gKilcbiAgICAgICAgbGV0IHRvX2V4dGVybmFsIHQgPSBtYXggMCB0XG5cbiAgICAgICAgKCogV2hlbiB0aGUgaW5kZXggb2YgYSB0aW1lIHpvbmUgd2l0aCBubyB0cmFuc2l0aW9ucyBpcyBjb252ZXJ0ZWQgdmlhIHRvX2V4dGVybmFsLFxuICAgICAgICAgICBpdHMgdmFsdWUgYmVjb21lcyAwIGV2ZW4gdGhvdWdoIGl0cyB0cmFuc2l0aW9uIGFycmF5IGlzIGVtcHR5IChhbmQgaXQgc2hvdWxkXG4gICAgICAgICAgIGhhdmUgYmVlbiAtMSkuIFdoZW4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBjaGFuZ2VkIGJhY2sgdG8gYSBab25lLnQgdGhyb3VnaFxuICAgICAgICAgICBvZl9leHRlcm5hbCwgcmV0dXJuaW5nIHRoaXMgdmFsdWUgZm9yIGl0cyBpbmRleCBjb3VsZCByZXN1bHQgaW4gdW5zYWZlIGFycmF5XG4gICAgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSB0cmFuc2l0aW9uIGFycmF5IG9mIHRoZSB6b25lIChzaW5jZSB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIGF0XG4gICAgICAgICAgIGluZGV4IDApLiBBbHNvLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGtlZXAgdGhlIGNvbnZlcnRlZCBpbmRleCBiZWNhdXNlIGl0XG4gICAgICAgICAgIGlzIGludGVuZGVkIHRvIGJlIGEgbXV0YWJsZSB2YWx1ZSB1c2VkIGZvciBjYWNoaW5nLiBTbyBvZl9leHRlcm5hbCBhbHdheXMgc2V0c1xuICAgICAgICAgICB0aGUgaW5kZXggdG8gLTEsIHdoaWNoIGlzIGEgc2FmZSB2YWx1ZS4gKilcbiAgICAgICAgbGV0IG9mX2V4dGVybmFsIChfIDogdCkgPSAtMVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGVcbiAgICAgICAgICAgIChJbnQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2ltZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdXRjX29mZnNldF9pbl9zZWNvbmRzIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IGlzX2RzdCA6IGJvb2xcbiAgICAgICAgICA7IGFiYnJ2IDogc3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgKCogaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBsZWFwIHNlY29uZHMgc2hvdWxkIGJlIGFwcGxpZWQgLSB1bnVzZWRcbiAgICAgICAgIGJlY2F1c2Ugd2UgYXJlIHRyYW5zbGF0aW5nIGJhc2VkIG9uIGEgZXBvY2ggc3lzdGVtIGNsb2NrIChzZWUgdGhlIENvcmVfem9uZVxuICAgICAgICAgZG9jdW1lbnRhdGlvbikuICopXG4gICAgICBtb2R1bGUgTGVhcF9zZWNvbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBzZWNvbmRzIDogaW50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgO1xuICAgICAgICAgIGRpZ2VzdCA6IE1kNS5Bc19iaW5hcnlfc3RyaW5nLnQgb3B0aW9uXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgOiBUcmFuc2l0aW9uLnQgYXJyYXlcbiAgICAgICAgOyAoKiBjYWNoZXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRyYW5zaXRpb24gd2UgdXNlZCB0byBtYWtlIGxvb2t1cHMgZmFzdGVyICopXG4gICAgICAgICAgbXV0YWJsZSBsYXN0X3JlZ2ltZV9pbmRleCA6IEluZGV4LnRcbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA6IFJlZ2ltZS50XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzIDogTGVhcF9zZWNvbmQudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kc1xuICAgIHRoZW4gYExlZnRcbiAgICBlbHNlIGBSaWdodClcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG47O1xuXG5sZXQgaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgPVxuICBsZXQgaW5kZXggPVxuICAgIGxldCBpbmRleCA9IHQubGFzdF9yZWdpbWVfaW5kZXggaW5cbiAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleDsgdHJ5IHByZXZpb3VzIGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCAtIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGJlZm9yZSBwcmV2aW91cyBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXggYW5kIG5vdCBiZWZvcmUgcHJldmlvdXMsIHNvIHdpdGhpbiBwcmV2aW91cyAqKVxuICAgICAgZWxzZSBpbmRleClcbiAgICBlbHNlIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXg7IHRyeSBuZXh0IGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCArIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGFmdGVyIG5leHQgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXggYW5kIG5vdCBhZnRlciBuZXh0LCBzbyB3aXRoaW4gbmV4dCAqKVxuICAgICAgZWxzZSBpbmRleCAoKiB0aW1lIGlzIHdpdGhpbiBjYWNoZWQgaW5kZXggKikpXG4gICAgZWxzZSBpbmRleFxuICBpblxuICB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIGluZGV4O1xuICBpbmRleFxuOztcblxubW9kdWxlIFRpbWVfaW5fc2Vjb25kcyA6IHNpZ1xuICBpbmNsdWRlIFpvbmVfaW50Zi5UaW1lX2luX3NlY29uZHNcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzID0gRm4uaWRcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBBYnNvbHV0ZVxuZW5kXG5cbmxldCBpbmRleCB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkFic29sdXRlXG47O1xuXG5sZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6RGF0ZV9hbmRfb2ZkYXlcbjs7XG5cbmxldCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXggPj0gMCAmJiBpbmRleCA8IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG5sZXQgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIHRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgbGV0IGFmdGVyID0gdHJhbnNpdGlvbi5uZXdfcmVnaW1lIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGluZGV4ID0gMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCAtIDEpLm5ld19yZWdpbWVcbiAgaW5cbiAgSW50NjMuKCAtICkgYWZ0ZXIudXRjX29mZnNldF9pbl9zZWNvbmRzIGJlZm9yZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgKGluZGV4ICsgMSlcbjs7XG5cbmxldCBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICByZWdpbWUuYWJicnZcbjs7XG5cbmxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzIHJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2Jpbl9pbyA9IFNfYmluX2lvIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCA9XG4gIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5sZXQgcmF3IHQgPSB0XG5cbm1vZHVsZSBNYWtlIChSYXcgOiBSYXcpID0gc3RydWN0XG4gIHR5cGUgd2l0bmVzc1xuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yID1cbiAgICBFcnJvci5jcmVhdGVcbiAgICAgIFwidmFsaWRhdGlvbiBmYWlsZWRcIlxuICAgICAgKHQsIGVycm9yLCBSYXcuaGVyZSlcbiAgICAgIFslc2V4cF9vZjogUmF3LnQgKiBFcnJvci50ICogU291cmNlX2NvZGVfcG9zaXRpb24udF1cbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5yYWlzZSAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rIHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IGNyZWF0ZV9leG4gKFJhdy50X29mX3NleHAgc2V4cClcbiAgbGV0IHJhdyB0ID0gdFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsImluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBpbmNsdWRlIElkXG5cbiAgbW9kdWxlIFVpZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcHN0cmVhbSA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcbiAgICBpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuRXh0ZW5kXG4gICAgICAgIChVcHN0cmVhbSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWQudCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFVwc3RyZWFtKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgICgoaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICAgZWxzZSBUeXBlX2VxdWFsLklkLlVpZC5zZXhwX29mX3QgKFR5cGVfZXF1YWwuSWQudWlkIHR5cGVfaWQpKSA6IFNleHAudClcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWQga2V5ID1cbiAgICAgIGxldCB0eXBlX2lkMSA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgbGV0IHR5cGVfaWQyID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBpZiBUeXBlX2VxdWFsLklkLnNhbWUgdHlwZV9pZDEgdHlwZV9pZDJcbiAgICAgIHRoZW4gdHlwZV9pZDFcbiAgICAgIGVsc2VcbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbS2V5LnR5cGVfaWRdIG11c3Qgbm90IHByb3ZpZGUgZGlmZmVyZW50IHR5cGUgaWRzIHdoZW4gY2FsbGVkIG9uIHRoZSBzYW1lIFxcXG4gICAgICAgICAgICAgaW5wdXRcIlxuICAgICAgICAgICAgICAoa2V5IDogXyBLZXkudClcbiAgICAgICAgICAgICAgKHR5cGVfaWQxIDogdHlwZV9pZClcbiAgICAgICAgICAgICAgKHR5cGVfaWQyIDogdHlwZV9pZCldXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAoJ3MsICdhKSBkYXRhID0gKCdzLCAnYSkgRGF0YS50XG5cbiAgbGV0IG5hbWVfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQubmFtZSAoS2V5LnR5cGVfaWQga2V5KVxuICBsZXQgdWlkX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLnVpZCAoS2V5LnR5cGVfaWQga2V5KVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQgPSBUIDogJ2EgS2V5LnQgKiAoJ3MsICdhKSBEYXRhLnQgLT4gJ3MgdFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKFQgKGtleSwgZGF0YSkpID1cbiAgICAgIERhdGEuc2V4cF9vZl90IHNleHBfb2ZfYSAoVHlwZV9lcXVhbC5JZC50b19zZXhwIChLZXkudHlwZV9pZCBrZXkpKSBkYXRhXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkX25hbWUgKFQgKGtleSwgXykpID0gbmFtZV9vZl9rZXkga2V5XG4gICAgbGV0IHR5cGVfaWRfdWlkIChUIChrZXksIF8pKSA9IHVpZF9vZl9rZXkga2V5XG5cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICBsZXQgYyA9IFN0cmluZy5jb21wYXJlICh0eXBlX2lkX25hbWUgdDEpICh0eXBlX2lkX25hbWUgdDIpIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgVWlkLmNvbXBhcmUgKHR5cGVfaWRfdWlkIHQxKSAodHlwZV9pZF91aWQgdDIpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAncyB0ID0gJ3MgUGFja2VkLnQgVWlkLk1hcC50XG5cbiAgbGV0IHRvX2FsaXN0IHQgPSBNYXAuZGF0YSB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTpQYWNrZWQuY29tcGFyZVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIHRvX2FsaXN0IHRcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHBhY2tlZCAtPiBQYWNrZWQudHlwZV9pZF9uYW1lIHBhY2tlZCwgcGFja2VkKVxuICAgIHw+IFslc2V4cF9vZjogKHN0cmluZyAqIGEgUGFja2VkLnQpIGxpc3RdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAodCA6IF8gdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBNYXAuaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgYXNzZXJ0IChVaWQuZXF1YWwga2V5IChQYWNrZWQudHlwZV9pZF91aWQgZGF0YSkpKSlcbiAgOztcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9IE1hcC5zZXQgdCB+a2V5Oih1aWRfb2Zfa2V5IGtleSkgfmRhdGE6KFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgbWVtX2J5X2lkIHQgaWQgPSBNYXAubWVtIHQgaWRcbiAgbGV0IG1lbSB0IGtleSA9IG1lbV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IHJlbW92ZV9ieV9pZCB0IGlkID0gTWFwLnJlbW92ZSB0IGlkXG4gIGxldCByZW1vdmUgdCBrZXkgPSByZW1vdmVfYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCBlbXB0eSA9IFVpZC5NYXAuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IFVpZC5NYXAuc2luZ2xldG9uICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgaXNfZW1wdHkgPSBNYXAuaXNfZW1wdHlcblxuICBsZXQgZmluZCAodHlwZSBiKSB0IChrZXkgOiBiIEtleS50KSA9XG4gICAgbWF0Y2ggTWFwLmZpbmQgdCAodWlkX29mX2tleSBrZXkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoUGFja2VkLlQgKGtleScsIHZhbHVlKSkgLT5cbiAgICAgICgqIGNhbm5vdCByYWlzZSAtLSBzZWUgW2ludmFyaWFudF0gKilcbiAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGtleSkgKEtleS50eXBlX2lkIGtleScpXG4gICAgICBpblxuICAgICAgU29tZSAodmFsdWUgOiAoXywgYikgRGF0YS50KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+IGZhaWx3aXRoZiBcIlVuaXZfbWFwLmFkZF9leG4gb24gZXhpc3Rpbmcga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlX2V4biB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSBkYXRhKVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5jaGFuZ2VfZXhuIG9uIHVua25vd24ga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbGV0IG9yaWcgPSBmaW5kIHQga2V5IGluXG4gICAgbGV0IG5leHQgPSB1cGRhdGUgb3JpZyBpblxuICAgIG1hdGNoIG5leHQgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICB8IE5vbmUgLT4gaWYgT3B0aW9uLmlzX25vbmUgb3JpZyB0aGVuIHQgZWxzZSByZW1vdmUgdCBrZXlcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID0gY2hhbmdlIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgVWlkLk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIHQgfmY6KGZ1biBwIC0+IFBhY2tlZC50eXBlX2lkX3VpZCBwLCBwKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6ICdhIEtleS50ICogJ2EgRGF0YS50IC0+IHRcbiAgZW5kXG5cbiAgbGV0IHRvX2FsaXN0IHQgPVxuICAgIExpc3QubWFwIChNLnRvX2FsaXN0IHQpIH5mOihmdW5jdGlvbiBNLlBhY2tlZC5UIChrZXksIGRhdGEpIC0+IFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgTS5vZl9hbGlzdF9leG5cbiAgICAgIChMaXN0Lm1hcCB0IH5mOihmdW5jdGlvbiBQYWNrZWQuVCAoa2V5LCBkYXRhKSAtPiBNLlBhY2tlZC5UIChrZXksIGRhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UgKEtleSA6IEtleSkgKElucHV0MV9kYXRhIDogRGF0YSkgKElucHV0Ml9kYXRhIDogRGF0YSkgKE91dHB1dF9kYXRhIDogRGF0YSkgPVxuc3RydWN0XG4gIHR5cGUgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgJ2EgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgJ2EgSW5wdXQxX2RhdGEudCAqICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAnYSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlICh0MSA6IE1ha2UoS2V5KShJbnB1dDFfZGF0YSkudCkgKHQyIDogTWFrZShLZXkpKElucHV0Ml9kYXRhKS50KSB+Zjp7IGYgfVxuICAgIDogTWFrZShLZXkpKE91dHB1dF9kYXRhKS50XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1lcmdlMVxuICAgIChLZXkgOiBLZXkpXG4gICAgKElucHV0MV9kYXRhIDogRGF0YTEpXG4gICAgKElucHV0Ml9kYXRhIDogRGF0YTEpXG4gICAgKE91dHB1dF9kYXRhIDogRGF0YTEpID1cbnN0cnVjdFxuICB0eXBlICgnczEsICdzMiwgJ3MzKSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50ICogKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAoJ3MzLCAnYSkgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UxIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgKHR5cGUgczEgczIpXG4gICAgICAgICh0MSA6IHMxIE1ha2UxKEtleSkoSW5wdXQxX2RhdGEpLnQpXG4gICAgICAgICh0MiA6IHMyIE1ha2UxKEtleSkoSW5wdXQyX2RhdGEpLnQpXG4gICAgICAgIH5mOnsgZiB9XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUeXBlX2lkX2tleSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBUeXBlX2VxdWFsLklkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdHlwZV9pZCA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSAoXG4gIE1ha2VcbiAgICAoVHlwZV9pZF9rZXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmQpIDpcbiAgICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgYW5kIG1vZHVsZSBLZXkgOj0gVHlwZV9pZF9rZXkpXG5cbm1vZHVsZSBLZXkgPSBUeXBlX2VxdWFsLklkXG5cbm1vZHVsZSBXaXRoX2RlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGtleSA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBkZWZhdWx0IDogJ2FcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmRlZmF1bHQgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGRlZmF1bHQ7IGtleSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBkZWZhdWx0IH0gPSBPcHRpb24udmFsdWUgfmRlZmF1bHQgKGZpbmQgdCBrZXkpXG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZGVmYXVsdCA9IF8gfSB+ZGF0YSA9IHNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPSBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgKGZpbmQgdCBrZXkpKVxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZvbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB7IGtleSA6ICdiIFdpdGhfZGVmYXVsdC5LZXkudFxuICAgICAgOyBmIDogJ2IgLT4gJ2EgLT4gJ2JcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmluaXQgfmYgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGY7IGtleSA9IFdpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OmluaXQgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gV2l0aF9kZWZhdWx0LktleS5pZCB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZiA9IF8gfSA9IFdpdGhfZGVmYXVsdC5maW5kIHQga2V5XG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZiA9IF8gfSB+ZGF0YSA9IFdpdGhfZGVmYXVsdC5zZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCB7IEtleS5rZXk7IGYgPSBfIH0gfmY6dXBkYXRlID0gV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+Zjp1cGRhdGVcblxuICBsZXQgYWRkIHQgfmtleTp7IEtleS5rZXk7IGYgfSB+ZGF0YSA9XG4gICAgV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+ZjooZnVuIGFjYyAtPiBmIGFjYyBkYXRhKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuICBvcGVuIFdpdGhfZm9sZFxuXG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsICdhIGxpc3QpIEtleS50XG5cbiAgICBsZXQgY3JlYXRlIH5uYW1lIHNleHBfb2YgPVxuICAgICAgS2V5LmNyZWF0ZSB+aW5pdDpbXSB+ZjooZnVuIHhzIHggLT4geCA6OiB4cykgfm5hbWUgKExpc3Quc2V4cF9vZl90IHNleHBfb2YpXG4gICAgOztcblxuICAgIGxldCBpZCA9IFdpdGhfZm9sZC5LZXkuaWRcbiAgZW5kXG5cbiAgbGV0IHNldCA9IHNldFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EpIHQgLT4gJ2EgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EpIHQgLT4gJ2EgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBtYXAgKHgsIHkpIH5mID0gZiB4LCBmIHlcbiAgbGV0IG1hcF9mc3QgKHgsIHkpIH5mID0gZiB4LCB5XG4gIGxldCBtYXBfc25kICh4LCB5KSB+ZiA9IHgsIGYgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcDIgKHgxLCB5MSwgejEpICh4MiwgeTIsIHoyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTIsIGYgejEgejJcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXywgXykgdCAtPiAnYSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXywgXykgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICAoKiBCZSB2ZXJ5IGdlbmVyb3VzIHdpdGggb2Zfc3RyaW5nLiAgV2UgYWNjZXB0IGFsbCBwb3NzaWJsZSBjYXBpdGFsaXphdGlvbnMgYW5kIHRoZVxuICAgICAgICAgaW50ZWdlciByZXByZXNlbnRhdGlvbnMgYXMgd2VsbC4gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmdfaW50ZXJuYWwgcyB3aXRoXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICh0cnkgb2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBzKSB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9zdHJpbmc6ICVTXCIgcyAoKSlcbiAgICAgIDs7XG5cbiAgICAgICgqIHRoaXMgaXMgaW4gVCByYXRoZXIgdGhhbiBvdXRzaWRlIHNvIHRoYXQgdGhlIGxhdGVyIGZ1bmN0b3IgYXBwbGljYXRpb24gdG8gYnVpbGQgbWFwc1xuICAgICAgICAgdXNlcyB0aGlzIHNleHAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIChDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVCkgOiBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFVuc3RhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG4oKiB3cml0dGVuIG91dCB0byBzYXZlIG92ZXJoZWFkIHdoZW4gbG9hZGluZyBtb2R1bGVzLiAgVGhlIG1lbWJlcnMgb2YgdGhlIHNldCBhbmQgdGhlXG4gICBvcmRlcmluZyBzaG91bGQgbmV2ZXIgY2hhbmdlLCBzbyBzcGVlZCB3aW5zIG92ZXIgc29tZXRoaW5nIG1vcmUgY29tcGxleCB0aGF0IHByb3Zlc1xuICAgdGhlIG9yZGVyID0gdGhlIG9yZGVyIGluIHQgYXQgcnVudGltZSAqKVxubGV0IGFsbCA9IFsgU3VuOyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaTsgU2F0IF1cblxubGV0IG9mX2ludCBpID1cbiAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRvX2ludCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3VuIC0+IDBcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbjs7XG5cbmxldCBpc29fODYwMV93ZWVrZGF5X251bWJlciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTW9uIC0+IDFcbiAgfCBUdWUgLT4gMlxuICB8IFdlZCAtPiAzXG4gIHwgVGh1IC0+IDRcbiAgfCBGcmkgLT4gNVxuICB8IFNhdCAtPiA2XG4gIHwgU3VuIC0+IDdcbjs7XG5cbmxldCBudW1fZGF5c19pbl93ZWVrID0gN1xubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKEludC4oICUgKSAodG9faW50IHQgKyBpKSBudW1fZGF5c19pbl93ZWVrKVxuXG5sZXQgbnVtX2RheXMgfmZyb20gfnRvXyA9XG4gIGxldCBkID0gdG9faW50IHRvXyAtIHRvX2ludCBmcm9tIGluXG4gIGlmIEludC4oZCA8IDApIHRoZW4gZCArIG51bV9kYXlzX2luX3dlZWsgZWxzZSBkXG47O1xuXG5sZXQgaXNfc3VuX29yX3NhdCB0ID0gdCA9IFN1biB8fCB0ID0gU2F0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFJvdW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICB8IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IFwiRGlnaXRfc3RyaW5nX2hlbHBlcnNcIlxubGV0IGludDYzX3R3byA9IEludDYzLm9mX2ludCAyXG5sZXQgaW50NjNfdGVuID0gSW50NjMub2ZfaW50IDEwXG5sZXQgaW50NjNfdHdlbnR5ID0gSW50NjMub2ZfaW50IDIwXG5sZXQgaW50NjNfYmlsbGlvbiA9IEludDYzLm9mX2ludCAxXzAwMF8wMDBfMDAwXG5sZXQgbWF4X2JpbGxpb25zID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX2JpbGxpb25cblxubGV0IHJlYyBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgbiA9XG4gIGlmIEludDYzLiggPCApIG4gaW50NjNfdGVuXG4gIHRoZW4gMVxuICBlbHNlIEludC5zdWNjIChkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgKEludDYzLiggLyApIG4gaW50NjNfdGVuKSlcbjs7XG5cbmxldCBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlID0gZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIEludDYzLm1heF92YWx1ZVxuXG5sZXQgcmVjIG1heF9pbnQ2M193aXRoIH5kaWdpdHMgPVxuICBtYXRjaCBkaWdpdHMgd2l0aFxuICB8IDEgLT4gSW50NjMub2ZfaW50IDlcbiAgfCAyIC0+IEludDYzLm9mX2ludCA5OVxuICB8IDMgLT4gSW50NjMub2ZfaW50IDk5OVxuICB8IDQgLT4gSW50NjMub2ZfaW50IDlfOTk5XG4gIHwgNSAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5XG4gIHwgNiAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OVxuICB8IDcgLT4gSW50NjMub2ZfaW50IDlfOTk5Xzk5OVxuICB8IDggLT4gSW50NjMub2ZfaW50IDk5Xzk5OV85OTlcbiAgfCA5IC0+IEludDYzLm9mX2ludCA5OTlfOTk5Xzk5OVxuICB8IF8gLT5cbiAgICBpZiBkaWdpdHMgPj0gZGlnaXRzX29mX2ludDYzX21heF92YWx1ZVxuICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My5zdWNjIChtYXhfaW50NjNfd2l0aCB+ZGlnaXRzOihkaWdpdHMgLSA5KSkgaW5cbiAgICAgIEludDYzLnByZWQgKEludDYzLiggKiApIGludDYzX2JpbGxpb24gYmlsbGlvbnMpKVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdW5zYWZlX2NoYXJfb2ZfZGlnaXQgbiA9IENoYXIudW5zYWZlX29mX2ludCAoQ2hhci50b19pbnQgJzAnICsgbilcbiAgbGV0IGRpZ2l0X29mX2NoYXIgY2hhciA9IENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyXG5cbiAgbGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ5dGVzIHBvcyAodW5zYWZlX2NoYXJfb2ZfZGlnaXQgaW50KVxuICA7O1xuXG4gIGxldCByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSBpbnQgLyAxMCBpblxuICAgIGxldCBvbmVzID0gaW50IC0gKHRlbnMgKiAxMCkgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIG9uZXM7XG4gICAgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAxKSBpbnQgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMikgaW50IGluXG4gICAgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDMpIGludCBpblxuICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA0KSBpbnQgaW5cbiAgICB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNSkgaW50IGluXG4gICAgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDYpIGludCBpblxuICAgIHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA3KSBpbnQgaW5cbiAgICB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgOCkgaW50IGluXG4gICAgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3MgaW50NjMgPVxuICAgIGxldCBiaWxsaW9ucyA9IEludDYzLiggLyApIGludDYzIGludDYzX2JpbGxpb24gaW5cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjMuKCAtICkgaW50NjMgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIGluXG4gICAgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biByZW1haW5kZXIpO1xuICAgIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYyB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAyIC0+IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAzIC0+IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA0IC0+IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA1IC0+IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA2IC0+IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA3IC0+IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA4IC0+IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA5IC0+IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID1cbiAgICAgICAgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSBpbnQ2M1xuICAgICAgaW5cbiAgICAgIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9IGRpZ2l0X29mX2NoYXIgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyBwb3MpXG5cbiAgbGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMSlcbiAgOztcblxuICBsZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAyKVxuICA7O1xuXG4gIGxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDMpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNClcbiAgOztcblxuICBsZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA1KVxuICA7O1xuXG4gIGxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDYpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNylcbiAgOztcblxuICBsZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA4KVxuICA7O1xuXG4gIGxldCByYWlzZV9pbnQ2M19vdmVyZmxvdyBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogb3ZlcmZsb3cgcmVhZGluZyBpbnQ2M1wiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICBsZXQgcmVjIHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gSW50NjMub2ZfaW50IChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAzIC0+IEludDYzLm9mX2ludCAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDQgLT4gSW50NjMub2ZfaW50IChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA2IC0+IEludDYzLm9mX2ludCAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDcgLT4gSW50NjMub2ZfaW50IChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA5IC0+IEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPSByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGluXG4gICAgICBsZXQgcmVtYWluZGVyID1cbiAgICAgICAgSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpKVxuICAgICAgaW5cbiAgICAgIGlmIEludDYzLiggPiApIGJpbGxpb25zIG1heF9iaWxsaW9ucyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgbGV0IHN1bSA9IEludDYzLiggKyApIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSByZW1haW5kZXIgaW5cbiAgICAgIGlmIEludDYzLiggPCApIHN1bSBJbnQ2My56ZXJvIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBzdW1cbiAgOztcblxuICBsZXQgZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIChudW1lcmF0b3IgKyBkZW5vbWluYXRvciAtIEludDYzLm9uZSkgLyUgZGVub21pbmF0b3JcbiAgOztcblxuICBsZXQgcmFpc2VfaW52YWxpZF9kZWNpbWFsIG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBpbnZhbGlkIGRlY2ltYWwgY2hhcmFjdGVyXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gICgqIFJlYWRzIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBiZXR3ZWVuIFtwb3NdIGFuZCBbcG9zK2RlY2ltYWxzLTFdLCBpbmNsdXNpdmUsIGFuZFxuICAgICBpbnRlcnBlcmV0cyBpdCBhcyBhIHBvc2l0aXZlIGRlY2ltYWwgcGFydCBvZiBhIG51bWJlciwgd2hpY2ggd2UgY2FsbCBbeF0uXG5cbiAgICAgTGV0IFtpXSBhbmQgW3JdIGJlIHRoZSBpbnRlZ2VyIHBhcnQgYW5kIHJlbWFpbmluZyBmcmFjdGlvbmFsIHBhcnQgb2ZcbiAgICAgW3ggKiBzY2FsZSAvIGRpdmlzb3JdLlxuXG4gICAgIElmIFtyIDwgcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldLlxuICAgICBJZiBbciA9IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXSBvciBbaSsxXSBiYXNlZCBvbiBbcm91bmRfZXhhY3RdLlxuICAgICBJZiBbciA+IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpKzFdLlxuXG4gICAgIEFzc3VtZXMgd2l0aG91dCBjaGVja2luZyB0aGF0IFtzY2FsZV0gYW5kIFtkaXZpc29yXSBhcmUgYm90aCBwb3NpdGl2ZSBhbmRcbiAgICAgbGVzcyB0aGFuIFtJbnQ2My5tYXhfdmFsdWUgLyAxMF0gKHRvIGF2b2lkIGludGVybmFsIG92ZXJmbG93IGR1cmluZyB0aGUgYWxnb3JpdGhtXG4gICAgIHdoZW4gbXVsdGlwbHlpbmcgYnkgMTApLCBhbmQgdGhhdCBbcm91bmRfYXQgPj0gMF0gYW5kIFtyb3VuZF9hdCA8IGRpdmlzb3JdLiAqKVxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5wb3M6c3RhcnRcbiAgICAgICAgfmRlY2ltYWxzXG4gICAgICAgIH5zY2FsZVxuICAgICAgICB+ZGl2aXNvclxuICAgICAgICB+cm91bmRfYXRcbiAgICAgICAgfnJvdW5kX2V4YWN0XG4gICAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gICAgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgdW50aWwgPSBJbnQuKCArICkgc3RhcnQgZGVjaW1hbHMgaW5cbiAgICAoKiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgdGhhdCBlYWNoIGl0ZXJhdGlvbiwgd2Ugc3RyaXAgb2ZmIHRoZSBuZXh0IGRlY2ltYWwgZGlnaXQgYW5kXG4gICAgICAgdXBkYXRlIFtzdW1dLCBbcm91bmRfYXRdLCBhbmQgW2Rpdmlzb3JdIHN1Y2ggdGhhdCB0aGUgZGVzaXJlZCByZXN1bHQgaXM6XG5cbiAgICAgICBbIHN1bSArIHJvdW5kKHJlbWFpbmluZ19kaWdpdHNfb2ZfeF9wYXJzZWRfYXNfZGVjaW1hbCAqIHNjYWxlIC8gZGl2aXNvcikgXVxuICAgICAgIHdoZXJlIFwicm91bmRcIiByb3VuZHMgYmFzZWQgb24gdGhlIG5ldyB2YWx1ZSBvZiBbcm91bmRfYXRdLlxuICAgICopXG4gICAgbGV0IGRpdmlzb3IgPSByZWYgZGl2aXNvciBpblxuICAgIGxldCByb3VuZF9hdCA9IHJlZiByb3VuZF9hdCBpblxuICAgIGxldCBzdW0gPSByZWYgSW50NjMuemVybyBpblxuICAgIGxldCBwb3MgPSByZWYgc3RhcnQgaW5cbiAgICAoKiBTdG9wIGlmIHdlIHJ1biBvdXQgb2YgY2hhcmFjdGVycywgb3IgaWYgZnVydGhlciBkaWdpdHMgY2Fubm90IGluY3JlYXNlIG91ciBzdW0uICopXG4gICAgd2hpbGUgSW50LiggPD4gKSAhcG9zIHVudGlsICYmICFyb3VuZF9hdCA8IHNjYWxlIGRvXG4gICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgIHwgJzAnIC4uICc5JyBhcyBjaGFyIC0+XG4gICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKGRpZ2l0X29mX2NoYXIgY2hhcikgaW5cbiAgICAgICAgICgqIEV2ZXJ5IG5ldyBkZWNpbWFsIHBsYWNlIGltcGxpY2l0bHkgc2NhbGVzIG91ciBudW1lcmF0b3IgYnkgYSBmYWN0b3Igb2YgdGVuLFxuICAgICAgICAgICAgc28gbXVzdCBhbHNvIGVmZmVjdGl2ZWx5IHNjYWxlIG91ciBkZW5vbWluYXRvci5cblxuICAgICAgICAgICAgMC5hYmNkZWYgKiBzY2FsZS9kaXZpc29yICAgICAgICBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS8oZGl2aXNvcioxMCkgIFtyb3VuZCBhdCByb3VuZF9hdCoxMF1cblxuICAgICAgICAgICAgVGhlbiByZWRlZmluZSBkaXZpc29yIDo9IGRpdmlzb3IqMTAgYW5kIHJvdW5kX2F0IDo9IHJvdW5kX2F0KjEwLCBzbyB3ZSBoYXZlOlxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XSAqKVxuICAgICAgICAgZGl2aXNvciA6PSAhZGl2aXNvciAqIGludDYzX3RlbjtcbiAgICAgICAgIHJvdW5kX2F0IDo9ICFyb3VuZF9hdCAqIGludDYzX3RlbjtcbiAgICAgICAgICgqIE5leHQgd2Ugd29yayBvdXQgdGhlIHBhcnQgb2YgdGhlIHN1bSBiYXNlZCBvbiBvdXIgY3VycmVudCBkaWdpdDpcblxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvZGl2aXNvciAtIHJvdW5kX2F0IC8gZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IChhKnNjYWxlLXJvdW5kX2F0KSAvIGRpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG5cbiAgICAgICAgICAgIERlY29tcG9zZSB0aGUgZmlyc3QgdGVybSBpbnRvIGludGVnZXIgYW5kIHJlbWFpbmRlciBwYXJ0cy5cbiAgICAgICAgICAgIFNpbmNlIHdlIGhhdmUgYWxyZWFkeSBzdWJ0cmFjdGVkIFtyb3VuZF9hdF0sIHdlIGRlY29tcG9zZSBiYXNlZFxuICAgICAgICAgICAgb24gdGhlIGNlaWxpbmcgcmF0aGVyIHRoYW4gdGhlIGZsb29yIG9mIHRoZSBkaXZpc2lvbixcbiAgICAgICAgICAgIGUuZy4gNS8zIHdvdWxkIGRlY29tcG9zZSBhcyAyICsgKC0xKS8zLCByYXRoZXIgdGhhbiAxICsgKDIvMykuXG5cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgcmVtYWluZGVyL2Rpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl1cbiAgICAgICAgICopXG4gICAgICAgICBsZXQgbnVtZXJhdG9yID0gKGRpZ2l0ICogc2NhbGUpIC0gIXJvdW5kX2F0IGluXG4gICAgICAgICBsZXQgZGVub21pbmF0b3IgPSAhZGl2aXNvciBpblxuICAgICAgICAgbGV0IGluY3JlbWVudCA9IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgIGxldCByZW1haW5kZXIgPSBudW1lcmF0b3IgLSAoaW5jcmVtZW50ICogZGVub21pbmF0b3IpIGluXG4gICAgICAgICAoKiBOb3cganVzdCBhY2N1bXVsYXRlIHRoZSBuZXcgaW5jcmVtZW50IGFuZCBpdGVyYXRlIG9uIHRoZSByZW1haW5pbmcgcGFydDpcbiAgICAgICAgICAgIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl0uXG5cbiAgICAgICAgICAgIFNpbmNlIFtyZW1haW5kZXJdIGlzIGJldHdlZW4gWy0oZGl2aXNvci0xKV0gYW5kIFswXSBpbmNsdXNpdmUsIHRoZSBuZXdcbiAgICAgICAgICAgIFtyb3VuZF9hdF0gd2lsbCBiZSB3aXRoaW4gWzBdIGFuZCBbZGl2aXNvci0xXSBpbmNsdXNpdmUuICopXG4gICAgICAgICByb3VuZF9hdCA6PSAtcmVtYWluZGVyO1xuICAgICAgICAgc3VtIDo9ICFzdW0gKyBpbmNyZW1lbnQ7XG4gICAgICAgICAoKiBUaGlzIGxpbmUgcHJldmVudHMgdGhlIGRpdmlzb3IgZnJvbSBncm93aW5nIHdpdGhvdXQgYm91bmQgYW5kIG92ZXJmbG93aW5nLiBJZlxuICAgICAgICAgICAgdGhpcyBsaW5lIGFjdHVhbGx5IGNoYW5nZXMgdGhlIGRpdmlzb3IsIHRoZW4gdGhlIGRpdmlzb3IgaXMgbGFyZ2VyIHRoYW4gdGhlXG4gICAgICAgICAgICBzY2FsZSwgc28gdGhlIHN1bSB3aWxsIGluY3JlYXNlIGlmIGFuZCBvbmx5IGlmIFtwYXJzZWRfcmVtYWluaW5nX2RpZ2l0cyAqXG4gICAgICAgICAgICBzY2FsZSAoPiBvciA+PSkgcm91bmRfYXRdLCB3aGljaCBkb2Vzbid0IGRlcGVuZCBvbiBob3cgbXVjaCBsYXJnZXIgdGhlXG4gICAgICAgICAgICBkaXZpc29yIGlzLiBTbyB0aGlzIGNoYW5nZSBpcyBzYWZlLiAqKVxuICAgICAgICAgZGl2aXNvciA6PSBJbnQ2My5taW4gZGVub21pbmF0b3Igc2NhbGVcbiAgICAgICB8ICdfJyB3aGVuIGFsbG93X3VuZGVyc2NvcmUgLT4gKClcbiAgICAgICB8IF8gLT4gcmFpc2VfaW52YWxpZF9kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIpO1xuICAgICAgcG9zIDo9IEludC5zdWNjICFwb3NcbiAgICBkb25lO1xuICAgIGlmICFyb3VuZF9hdCA9IHplcm9cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHJvdW5kX2V4YWN0IHdpdGhcbiAgICAgIHwgUm91bmQuVG93YXJkX25lZ2F0aXZlX2luZmluaXR5IC0+ICgpXG4gICAgICB8IFJvdW5kLlRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eSAtPiBzdW0gOj0gIXN1bSArIEludDYzLm9uZSk7XG4gICAgIXN1bVxuICA7O1xuXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gICAgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgIHN0cmluZ1xuICAgICAgfnBvc1xuICAgICAgfmRlY2ltYWxzXG4gICAgICB+c2NhbGU6KEludDYzLiggKiApIHNjYWxlIGludDYzX3R3bylcbiAgICAgIH5kaXZpc29yOmludDYzX3R3b1xuICAgICAgfnJvdW5kX2F0OkludDYzLm9uZVxuICAgICAgfnJvdW5kX2V4YWN0OnJvdW5kX3RpZXNcbiAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gIDs7XG5lbmRcblxubGV0IG1pbl9zY2FsZSA9IEludDYzLm9uZVxubGV0IG1heF9zY2FsZSA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M190d2VudHlcblxubGV0IHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRlY2ltYWxzPSVkIGlzIG5lZ2F0aXZlXCIgbW9kdWxlX25hbWUgbmFtZSBkZWNpbWFscyAoKVxuOztcblxubGV0IHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRpZ2l0cz0lZCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIiBtb2R1bGVfbmFtZSBuYW1lIGRpZ2l0cyAoKVxuOztcblxubGV0IHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGUgPVxuICBpbnZhbGlkX2FyZ2ZcbiAgICBcIiVzLiVzOiBzY2FsZT0lTGQgb3V0IG9mIHJhbmdlIFslTGQsICVMZF1cIlxuICAgIG1vZHVsZV9uYW1lXG4gICAgbmFtZVxuICAgIChJbnQ2My50b19pbnQ2NCBzY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWluX3NjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtYXhfc2NhbGUpXG4gICAgKClcbjs7XG5cbmxldCByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgPj0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6IHBvcz0lZCBvdXQgb2YgcmFuZ2UgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiAlZCBkaWdpdHMgZG8gbm90IGZpdCBhdCBwb3MgJWQgaW4gc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgZGlnaXRzXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbjs7XG5cbmxldCByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50ID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQgbWF4ICgpXG47O1xuXG5sZXQgcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjMgPVxuICBpbnZhbGlkX2FyZ2YgIVwiJXMuJXM6ICV7SW50NjN9IG91dCBvZiByYW5nZSBbMCwgJXtJbnQ2M31dXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQ2MyBtYXggKClcbjs7XG5cbmxldCBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGlmIGRlY2ltYWxzIDwgMCB0aGVuIHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9IGlmIGRpZ2l0cyA8IDEgdGhlbiByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0c1xuXG5sZXQgY2hlY2tfcG9zIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyArIGRpZ2l0cyA+IGxlbiB0aGVuIHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCBjaGVja19pbnQgbmFtZSB+bWF4IGludCA9XG4gIGlmIGludCA8IDAgfHwgaW50ID4gbWF4IHRoZW4gcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGlmIEludDYzLiggPCApIGludDYzIEludDYzLnplcm8gfHwgSW50NjMuKCA+ICkgaW50NjMgbWF4XG4gIHRoZW4gcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCBjaGVja19zY2FsZSBuYW1lIH5zY2FsZSA9XG4gIGlmIEludDYzLiggPCApIHNjYWxlIG1pbl9zY2FsZSB8fCBJbnQ2My4oID4gKSBzY2FsZSBtYXhfc2NhbGVcbiAgdGhlbiByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlXG47O1xuXG5sZXQgY2hlY2tfd3JpdGUgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIH5tYXggaW50ID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50IG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja193cml0ZTYzIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBtYXggPSBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzIGluXG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8xX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MSB+bWF4OjkgaW50O1xuICBVbnNhZmUud3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjIgfm1heDo5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8zX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MyB+bWF4Ojk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV80X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NCB+bWF4OjlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzVfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo1IH5tYXg6OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzZfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo2IH5tYXg6OTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV83X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NyB+bWF4OjlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV84X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OCB+bWF4Ojk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjkgfm1heDo5OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX3dyaXRlNjMgXCJ3cml0ZV9pbnQ2M1wiIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjM7XG4gIFVuc2FmZS53cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjNcbjs7XG5cbmxldCBjaGVja19yZWFkIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjMgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2M19kZWNpbWFsIG5hbWUgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHM7XG4gIGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlO1xuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzOmRlY2ltYWxzIH5sZW4gfnBvc1xuOztcblxubGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8xX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjE7XG4gIFVuc2FmZS5yZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzJfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MjtcbiAgVW5zYWZlLnJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfM19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czozO1xuICBVbnNhZmUucmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF80X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjQ7XG4gIFVuc2FmZS5yZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzVfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NTtcbiAgVW5zYWZlLnJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo2O1xuICBVbnNhZmUucmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF83X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjc7XG4gIFVuc2FmZS5yZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzhfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6ODtcbiAgVW5zYWZlLnJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo5O1xuICBVbnNhZmUucmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX3JlYWQ2MyBcInJlYWRfaW50NjNcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0cztcbiAgVW5zYWZlLnJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgY2hlY2tfcmVhZDYzX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIiB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZTtcbiAgVW5zYWZlLnJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgSmFuXG4gICAgICB8IEZlYlxuICAgICAgfCBNYXJcbiAgICAgIHwgQXByXG4gICAgICB8IE1heVxuICAgICAgfCBKdW5cbiAgICAgIHwgSnVsXG4gICAgICB8IEF1Z1xuICAgICAgfCBTZXBcbiAgICAgIHwgT2N0XG4gICAgICB8IE5vdlxuICAgICAgfCBEZWNcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0b19pbnQgdCAtIDFcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSBpID0gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gIGVuZFxuZW5kXG5cbmxldCBudW1fbW9udGhzID0gMTJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBsZXQgYWxsID0gWyBKYW47IEZlYjsgTWFyOyBBcHI7IE1heTsgSnVuOyBKdWw7IEF1ZzsgU2VwOyBPY3Q7IE5vdjsgRGVjIF1cbiAgbGV0IGhhc2ggPSB0b19pbnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgbW9udGhzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgaW50cy4gIEZyb20gMTA4LjA3XG4gICAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhc1xuICAgICAgIGNoYW5nZWQgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmVcbiAgICAgICBtb3N0IHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgICByYXcuICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEludC50X29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICB8IE5vbmUgLT4gVC50X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxuKCogUmVwbGFjZSB0aGUgb3ZlcnJpZGVuIHNleHAgY29udmVydGVycyBmcm9tIFtDb21wYXJhYmxlLk1ha2VfYmluYWJsZV0gd2l0aCB0aGUgb3JkaW5hcnlcbiAgIHN5bWJvbGljIGNvbnZlcnRlcnMuICopXG5sZXQgc2V4cF9vZl90ID0gVC5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBULnRfb2Zfc2V4cFxubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKDEgKyBJbnQuKCAlICkgKHRvX2ludCB0IC0gMSArIGkpIG51bV9tb250aHMpXG5cbmxldCBhbGxfc3RyaW5ncyA9XG4gIGxhenlcbiAgICAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgYWxsIH5mOihmdW4gdmFyaWFudCAtPiBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHZhcmlhbnQpKSkpXG47O1xuXG5sZXQgdG9fc3RyaW5nICh0IDogdCkgPVxuICBsZXQgYWxsX3N0cmluZ3MgPSBMYXp5LmZvcmNlIGFsbF9zdHJpbmdzIGluXG4gIGFsbF9zdHJpbmdzLih0b19pbnQgdCAtIDEpXG47O1xuXG5sZXQgb2Zfc3RyaW5nID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IG1vZHVsZSBUID0gU3RyaW5nLlRhYmxlIGluXG4gICAgICAgbGV0IHRhYmxlID0gVC5jcmVhdGUgfnNpemU6bnVtX21vbnRocyAoKSBpblxuICAgICAgIEFycmF5Lml0ZXJpIChMYXp5LmZvcmNlIGFsbF9zdHJpbmdzKSB+ZjooZnVuIGkgcyAtPlxuICAgICAgICAgbGV0IHQgPSBvZl9pbnRfZXhuIChpICsgMSkgaW5cbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6cyB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLmxvd2VyY2FzZSBzKSB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnVwcGVyY2FzZSBzKSB+ZGF0YTp0KTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgZnVuIHN0ciAtPlxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCAoTGF6eS5mb3JjZSB0YWJsZSkgc3RyIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkludmFsaWQgbW9udGg6ICVzXCIgc3RyICgpXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgbW9udGggPSB0ID1cbiAgICB8IEphblxuICAgIHwgRmViXG4gICAgfCBNYXJcbiAgICB8IEFwclxuICAgIHwgTWF5XG4gICAgfCBKdW5cbiAgICB8IEp1bFxuICAgIHwgQXVnXG4gICAgfCBTZXBcbiAgICB8IE9jdFxuICAgIHwgTm92XG4gICAgfCBEZWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgaXNfbGVhcF95ZWFyIH55ZWFyID0gKHllYXIgbW9kIDQgPSAwICYmIG5vdCAoeWVhciBtb2QgMTAwID0gMCkpIHx8IHllYXIgbW9kIDQwMCA9IDBcblxuKCogQ3JlYXRlIGEgbG9jYWwgcHJpdmF0ZSBkYXRlIHR5cGUgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBjcmVhdGVkIHZpYVxuICAgRGF0ZS5jcmVhdGVfZXhuLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgYmluX2lvLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA6IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICAoKiBXZSB1c2VkIHRvIHN0b3JlIGRhdGVzIGxpa2UgdGhpczpcbiAgICAgICAgICAgdHlwZSB0ID0geyB5OiBpbnQ7IG06IE1vbnRoLlN0YWJsZS5WMS50OyBkOiBpbnQ7IH1cbiAgICAgICAgICAgSW4gdGhlIGJlbG93IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5faW8gcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICAgICAgaWRlbnRpY2FsIChhbmQgdGhlIHN0YWJsZSB1bml0IHRlc3RzIGNoZWNrIHRoaXMpXG5cbiAgICAgICAgICAgSW4gbWVtb3J5IHdlIHVzZSB0aGUgZm9sbG93aW5nIG11Y2ggbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uOlxuICAgICAgICAgICAyIGJ5dGVzIHllYXJcbiAgICAgICAgICAgMSBieXRlIG1vbnRoXG4gICAgICAgICAgIDEgYnl0ZSBkYXlcblxuICAgICAgICAgICBhbGwgcGFja2VkIGludG8gYSBzaW5nbGUgaW1tZWRpYXRlIGludCAoc28gZnJvbSA0IHdvcmRzIGRvd24gdG8gMSkuXG4gICAgICAgICopXG4gICAgICAgIHR5cGUgdCA9IGludFxuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJdXG5cbiAgICAgICAgbGV0IGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgICgqIGNyZWF0ZV9leG4ncyB2YWxpZGF0aW9uIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdmFsdWUgZml0cyAqKVxuICAgICAgICAgICh5ZWFyIGxzbCAxNikgbG9yIChNb250aC50b19pbnQgbW9udGggbHNsIDgpIGxvciBkYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeWVhciB0ID0gdCBsc3IgMTZcbiAgICAgICAgbGV0IG1vbnRoIHQgPSBNb250aC5vZl9pbnRfZXhuICgodCBsc3IgOCkgbGFuZCAweGZmKVxuICAgICAgICBsZXQgZGF5IHQgPSB0IGxhbmQgMHhmZlxuXG4gICAgICAgIGxldCBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCA9XG4gICAgICAgICAgbWF0Y2ggKG1vbnRoIDogTW9udGgudCkgd2l0aFxuICAgICAgICAgIHwgSmFuIHwgTWFyIHwgTWF5IHwgSnVsIHwgQXVnIHwgT2N0IHwgRGVjIC0+IDMxXG4gICAgICAgICAgfCBBcHIgfCBKdW4gfCBTZXAgfCBOb3YgLT4gMzBcbiAgICAgICAgICB8IEZlYiAtPiBpZiBpc19sZWFwX3llYXIgfnllYXIgdGhlbiAyOSBlbHNlIDI4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkgPVxuICAgICAgICAgICgqIHllYXIsIG1vbnRoLCBhbmQgZGF5IG5lZWQgdG8gYmUgcGFzc2VkIGFzIHBhcmFtZXRlcnMgdG8gYXZvaWQgYWxsb2NhdGluZ1xuICAgICAgICAgICAgIGEgY2xvc3VyZSAoc2VlIHVuaXQgdGVzdCBiZWxvdykgKilcbiAgICAgICAgICBsZXQgaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBtc2cgPVxuICAgICAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgICAgICFcIkRhdGUuY3JlYXRlX2V4biB+eTolZCB+bTole01vbnRofSB+ZDolZCBlcnJvcjogJXNcIlxuICAgICAgICAgICAgICB5ZWFyXG4gICAgICAgICAgICAgIG1vbnRoXG4gICAgICAgICAgICAgIGRheVxuICAgICAgICAgICAgICBtc2dcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHllYXIgPCAwIHx8IHllYXIgPiA5OTk5XG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwieWVhciBvdXRzaWRlIG9mIFswLi45OTk5XVwiO1xuICAgICAgICAgIGlmIGRheSA8PSAwIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcImRheSA8PSAwXCI7XG4gICAgICAgICAgbGV0IGRheXNfaW5fbW9udGggPSBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCBpblxuICAgICAgICAgIGlmIGRheSA+IGRheXNfaW5fbW9udGhcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgKHNwcmludGYgXCIlZCBkYXkgbW9udGggdmlvbGF0aW9uXCIgZGF5c19pbl9tb250aCk7XG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIFdlIGRvbid0IHVzZSBNYWtlX2JpbmFibGUgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIGdvIHZpYSBhbiBpbW1lZGlhdGVcbiAgICAgICAgICAgdHVwbGUgb3IgcmVjb3JkLiAgVGhhdCBpcyBleGFjdGx5IHRoZSAzMiBieXRlcyB3ZSB3b3JrZWQgc28gaGFyZCBhYm92ZSB0b1xuICAgICAgICAgICBnZXQgcmlkIG9mLiAgV2UgYWxzbyBkb24ndCB3YW50IHRvIGp1c3QgYmluX2lvIHRoZSBpbnRlZ2VyIGRpcmVjdGx5XG4gICAgICAgICAgIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGEgbmV3IGJpbl9pbyBmb3JtYXQuICAqKVxuXG4gICAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5TdGFibGUuVjEuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICAoKiBfX2Jpbl9yZWFkX3QgaXMgb25seSBuZWVkZWQgZm9yIHZhcmlhbnRzICopXG4gICAgICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkRhdGUudFwiICFwb3NfcmVmXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgICAgICAgSW50LmJpbl9zaXplX3QgKHllYXIgdCkgKyBNb250aC5iaW5fc2l6ZV90IChtb250aCB0KSArIEludC5iaW5fc2l6ZV90IChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgICAgbGV0IHBvcyA9IEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoeWVhciB0KSBpblxuICAgICAgICAgIGxldCBwb3MgPSBNb250aC5iaW5fd3JpdGVfdCBidWYgfnBvcyAobW9udGggdCkgaW5cbiAgICAgICAgICBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgICAgIGxldCBiaW5fdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICAgICAgbGV0IG9mX2ludF9leG4gbiA9IGNyZWF0ZV9leG4gfnk6KHllYXIgbikgfm06KG1vbnRoIG4pIH5kOihkYXkgbilcbiAgICAgICAgbGV0IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA9IDBcblxuICAgICAgICBsZXQldGVzdCBcImludmFsaWQgdmFsdWVcIiA9XG4gICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSA6IHQgLT4gb2ZfaW50X2V4biBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cblxuICAgICAgKCoqIFlZWVktTU0tREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZCB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDQgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo1IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA3ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6OCAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgICgqKiBNTS9ERC9ZWVlZICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2FtZXJpY2FuIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDIgJy8nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnLyc7XG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfeWVhcjQgc3RyIHBvcyA9IHJlYWRfNF9kaWdpdF9pbnQgc3RyIH5wb3NcbiAgICAgIGxldCBwYXJzZV9tb250aCBzdHIgcG9zID0gTW9udGgub2ZfaW50X2V4biAocmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcylcbiAgICAgIGxldCBwYXJzZV9kYXkgc3RyIHBvcyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3NcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWMgc3RyIH5wb3MgPVxuICAgICAgICBpZiBwb3MgKyA4ID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRhdGUub2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWM6IHBvcyArIDggPiBzdHJpbmcgbGVuZ3RoXCI7XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICB+eToocGFyc2VfeWVhcjQgc3RyIHBvcylcbiAgICAgICAgICB+bToocGFyc2VfbW9udGggc3RyIChwb3MgKyA0KSlcbiAgICAgICAgICB+ZDoocGFyc2VfZGF5IHN0ciAocG9zICsgNikpXG4gICAgICA7O1xuXG4gICAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGEgbWF0ZXJpYWwgd2F5LCBiZSBzdXJlIHlvdVxuICAgICAgICAgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHdvcmtpbmcgaW4gU3RhYmxlICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgaW52YWxpZCAoKSA9IGZhaWx3aXRoIChcImludmFsaWQgZGF0ZTogXCIgXiBzKSBpblxuICAgICAgICBsZXQgZW5zdXJlIGIgPSBpZiBub3QgYiB0aGVuIGludmFsaWQgKCkgaW5cbiAgICAgICAgbGV0IG1vbnRoX251bSB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4biB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKSB+bToocGFyc2VfbW9udGggcyBtb250aCkgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vbnRoX2FicnYgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzIHllYXIpXG4gICAgICAgICAgICB+bTooTW9udGgub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHMgfnBvczptb250aCB+bGVuOjMpKVxuICAgICAgICAgICAgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy8nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB5LCBtLCBkID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonLycgd2l0aFxuICAgICAgICAgICAgfCBbIGE7IGI7IGMgXSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGEgPSA0IHRoZW4gYSwgYiwgYyAoKiB5L20vZCAqKSBlbHNlIGMsIGEsIGIgKCogbS9kL3kgKilcbiAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5vZl9zdHJpbmcgeSBpblxuICAgICAgICAgIGxldCB5ZWFyID1cbiAgICAgICAgICAgIGlmIHllYXIgPj0gMTAwIHRoZW4geWVhciBlbHNlIGlmIHllYXIgPCA3NSB0aGVuIDIwMDAgKyB5ZWFyIGVsc2UgMTkwMCArIHllYXJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLm9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgbSkgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50Lm9mX3N0cmluZyBkIGluXG4gICAgICAgICAgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSlcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnLSdcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogeXl5eS1tbS1kZCAqKVxuICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTAgJiYgQ2hhci4oID0gKSBzLls0XSAnLScgJiYgQ2hhci4oID0gKSBzLls3XSAnLScpO1xuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo1IH5kYXk6OClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnICdcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bMl0gJyAnICYmIENoYXIuKCA9ICkgcy5bNl0gJyAnXG4gICAgICAgICAgdGhlbiAoKiBERCBNTU0gWVlZWSAqKVxuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjMgfnllYXI6N1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogWVlZWSBNTU0gREQgKilcbiAgICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLls0XSAnICcgJiYgQ2hhci4oID0gKSBzLls4XSAnICcpO1xuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5Ojkgfm1vbnRoOjUgfnllYXI6MClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA5XG4gICAgICAgIHRoZW4gKCogRERNTU1ZWVlZICopXG4gICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjIgfnllYXI6NVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDhcbiAgICAgICAgdGhlbiAoKiBhc3N1bWUgWVlZWU1NREQgKilcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NCB+ZGF5OjZcbiAgICAgICAgZWxzZSBpbnZhbGlkICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJEYXRlLm9mX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPbGRfZGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IHkgOiBpbnRcbiAgICAgICAgICAgIDsgbSA6IGludFxuICAgICAgICAgICAgOyBkIDogaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIGxldCB0b19kYXRlIHQgPSBULmNyZWF0ZV9leG4gfnk6dC55IH5tOihNb250aC5vZl9pbnRfZXhuIHQubSkgfmQ6dC5kXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIGFzIHNleHAgLT4gT2xkX2RhdGUudG9fZGF0ZSAoT2xkX2RhdGUudF9vZl9zZXhwIHNleHApXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgICB0cnkgdF9vZl9zZXhwIHMgd2l0aFxuICAgICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGV4biAtPiByYWlzZSBleG5cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYSAtPiBvZl9zZXhwX2Vycm9yIGEgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGVcblxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPVxuICAgICAgICBsZXQgbiA9IEludC5jb21wYXJlICh5ZWFyIHQxKSAoeWVhciB0MikgaW5cbiAgICAgICAgaWYgbiA8PiAwXG4gICAgICAgIHRoZW4gblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbiA9IE1vbnRoLmNvbXBhcmUgKG1vbnRoIHQxKSAobW9udGggdDIpIGluXG4gICAgICAgICAgaWYgbiA8PiAwIHRoZW4gbiBlbHNlIEludC5jb21wYXJlIChkYXkgdDEpIChkYXkgdDIpKVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChXaXRob3V0X2NvbXBhcmFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF9leG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGlmIGlzX3NvbWUgdCB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0IGVsc2UgZGVmYXVsdFxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IFN0YWJsZS5WMS5XaXRob3V0X2NvbXBhcmFibGVcbmluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG5tb2R1bGUgQyA9IENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFdpdGhvdXRfY29tcGFyYWJsZSlcbmluY2x1ZGUgQ1xuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIChDIDogQ29tcGFyYWJsZS5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICBpbmNsdWRlIEJpbmFibGVcblxuICAgIGxldCBjb21wYXJlIChhIDogdCkgKGIgOiB0KSA9IGNvbXBhcmUgYSBiXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkRhdGVcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5sZXQgdW5peF9lcG9jaCA9IGNyZWF0ZV9leG4gfnk6MTk3MCB+bTpKYW4gfmQ6MVxuXG4oKiBUaGUgRGF5cyBtb2R1bGUgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb25zIHRoYXQgaW52b2x2ZSBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBrbm93biBudW1iZXJcbiAgIG9mIGRheXMgZnJvbSBhIGRhdGUuICBJbnRlcm5hbGx5IHRoZSBkYXRlIGlzIHRyYW5zbGF0ZWQgdG8gYSBkYXkgbnVtYmVyLCB0aGUgZGF5cyBhcmVcbiAgIGFkZGVkLCBhbmQgdGhlIG5ldyBkYXRlIGlzIHJldHVybmVkLiAgVGhvc2UgaW50ZXJlc3RlZCBpbiB0aGUgbWF0aCBjYW4gcmVhZDpcblxuICAgaHR0cDovL2FsY29yLmNvbmNvcmRpYS5jYS9+Z3BrYXRjaC9nZGF0ZS1tZXRob2QuaHRtbFxuXG4gICBub3RlOiB1bml0IHRlc3RzIGFyZSBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5tb2R1bGUgRGF5cyA6IHNpZ1xuICB0eXBlIGRhdGUgPSB0XG4gIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG5cbiAgdmFsIG9mX2RhdGUgOiBkYXRlIC0+IHRcbiAgdmFsIHRvX2RhdGUgOiB0IC0+IGRhdGVcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBhZGRfZGF5cyA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHVuaXhfZXBvY2ggOiB0XG5lbmRcbndpdGggdHlwZSBkYXRlIDo9IHQgPSBzdHJ1Y3RcbiAgb3BlbiBJbnRcblxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgb2ZfeWVhciB5ID0gKDM2NSAqIHkpICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKVxuXG4gIGxldCBvZl9kYXRlIGRhdGUgPVxuICAgIGxldCBtID0gKE1vbnRoLnRvX2ludCAobW9udGggZGF0ZSkgKyA5KSAlIDEyIGluXG4gICAgbGV0IHkgPSB5ZWFyIGRhdGUgLSAobSAvIDEwKSBpblxuICAgIG9mX3llYXIgeSArICgoKG0gKiAzMDYpICsgNSkgLyAxMCkgKyAoZGF5IGRhdGUgLSAxKVxuICA7O1xuXG4gIGxldCBjXzEwXzAwMCA9IEludDYzLm9mX2ludCAxMF8wMDBcbiAgbGV0IGNfMTRfNzgwID0gSW50NjMub2ZfaW50IDE0Xzc4MFxuICBsZXQgY18zXzY1Ml80MjUgPSBJbnQ2My5vZl9pbnQgM182NTJfNDI1XG5cbiAgbGV0IHRvX2RhdGUgZGF5cyA9XG4gICAgbGV0IHkgPVxuICAgICAgbGV0IG9wZW4gSW50NjMgaW5cbiAgICAgIHRvX2ludF9leG4gKCgoY18xMF8wMDAgKiBvZl9pbnQgZGF5cykgKyBjXzE0Xzc4MCkgLyBjXzNfNjUyXzQyNSlcbiAgICBpblxuICAgIGxldCBkZGQgPSBkYXlzIC0gb2ZfeWVhciB5IGluXG4gICAgbGV0IHksIGRkZCA9XG4gICAgICBpZiBkZGQgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHkgPSB5IC0gMSBpblxuICAgICAgICB5LCBkYXlzIC0gb2ZfeWVhciB5KVxuICAgICAgZWxzZSB5LCBkZGRcbiAgICBpblxuICAgIGxldCBtaSA9ICgoMTAwICogZGRkKSArIDUyKSAvIDNfMDYwIGluXG4gICAgbGV0IHkgPSB5ICsgKChtaSArIDIpIC8gMTIpIGluXG4gICAgbGV0IG0gPSAoKG1pICsgMikgJSAxMikgKyAxIGluXG4gICAgbGV0IGQgPSBkZGQgLSAoKChtaSAqIDMwNikgKyA1KSAvIDEwKSArIDEgaW5cbiAgICBjcmVhdGVfZXhuIH55IH5tOihNb250aC5vZl9pbnRfZXhuIG0pIH5kXG4gIDs7XG5cbiAgbGV0IHVuaXhfZXBvY2ggPSBvZl9kYXRlIHVuaXhfZXBvY2hcbiAgbGV0IGFkZF9kYXlzIHQgZGF5cyA9IHQgKyBkYXlzXG4gIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuZW5kXG5cbmxldCBhZGRfZGF5cyB0IGRheXMgPSBEYXlzLnRvX2RhdGUgKERheXMuYWRkX2RheXMgKERheXMub2ZfZGF0ZSB0KSBkYXlzKVxubGV0IGRpZmYgdDEgdDIgPSBEYXlzLmRpZmYgKERheXMub2ZfZGF0ZSB0MSkgKERheXMub2ZfZGF0ZSB0MilcblxubGV0IGFkZF9tb250aHMgdCBuID1cbiAgbGV0IHRvdGFsX21vbnRocyA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgKyBuIGluXG4gIGxldCB5ID0geWVhciB0ICsgKHRvdGFsX21vbnRocyAvJSAxMikgaW5cbiAgbGV0IG0gPSB0b3RhbF9tb250aHMgJSAxMiBpblxuICAoKiBjb3JyZWN0IGZvciBkZWNlbWJlciAqKVxuICBsZXQgeSwgbSA9IGlmIEludC4oID0gKSBtIDAgdGhlbiB5IC0gMSwgbSArIDEyIGVsc2UgeSwgbSBpblxuICBsZXQgbSA9IE1vbnRoLm9mX2ludF9leG4gbSBpblxuICAoKiBoYW5kbGUgaW52YWxpZCBkYXRlcyBmb3IgbW9udGhzIHdpdGggZmV3ZXIgbnVtYmVyIG9mIGRheXMgKilcbiAgbGV0IHJlYyB0cnlfY3JlYXRlIGQgPVxuICAgIHRyeSBjcmVhdGVfZXhuIH55IH5tIH5kIHdpdGhcbiAgICB8IF9leG4gLT5cbiAgICAgIGFzc2VydCAoSW50LiggPj0gKSBkIDEpO1xuICAgICAgdHJ5X2NyZWF0ZSAoZCAtIDEpXG4gIGluXG4gIHRyeV9jcmVhdGUgKGRheSB0KVxuOztcblxubGV0IGFkZF95ZWFycyB0IG4gPSBhZGRfbW9udGhzIHQgKG4gKiAxMilcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmF0aW9uX29mX3RoZV9kYXlfb2ZfdGhlX3dlZWsjUHVyZWx5X21hdGhlbWF0aWNhbF9tZXRob2RzXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubGV0IGRheV9vZl93ZWVrID1cbiAgbGV0IHRhYmxlID0gW3wgMDsgMzsgMjsgNTsgMDsgMzsgNTsgMTsgNDsgNjsgMjsgNCB8XSBpblxuICBmdW4gdCAtPlxuICAgIGxldCBtID0gTW9udGgudG9faW50IChtb250aCB0KSBpblxuICAgIGxldCB5ID0gaWYgSW50LiggPCApIG0gMyB0aGVuIHllYXIgdCAtIDEgZWxzZSB5ZWFyIHQgaW5cbiAgICBEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuXG4gICAgICAoKHkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApICsgdGFibGUuKG0gLSAxKSArIGRheSB0KSAlIDcpXG47O1xuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZGluYWxfZGF0ZSAqKVxubGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNTk7IDkwOyAxMjA7IDE1MTsgMTgxOyAyMTI7IDI0MzsgMjczOyAzMDQ7IDMzNCB8XVxubGV0IGxlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA2MDsgOTE7IDEyMTsgMTUyOyAxODI7IDIxMzsgMjQ0OyAyNzQ7IDMwNTsgMzM1IHxdXG5cbmxldCBvcmRpbmFsX2RhdGUgdCA9XG4gIGxldCB0YWJsZSA9XG4gICAgaWYgaXNfbGVhcF95ZWFyIH55ZWFyOih5ZWFyIHQpIHRoZW4gbGVhcF95ZWFyX3RhYmxlIGVsc2Ugbm9uX2xlYXBfeWVhcl90YWJsZVxuICBpblxuICBsZXQgb2Zmc2V0ID0gdGFibGUuKE1vbnRoLnRvX2ludCAobW9udGggdCkgLSAxKSBpblxuICBkYXkgdCArIG9mZnNldFxuOztcblxubGV0IGxhc3Rfd2Vla19vZl95ZWFyIHkgPVxuICBsZXQgZmlyc3Rfb2ZfeWVhciA9IGNyZWF0ZV9leG4gfnkgfm06SmFuIH5kOjEgaW5cbiAgbGV0IGlzIHQgZGF5ID0gRGF5X29mX3dlZWsuZXF1YWwgKGRheV9vZl93ZWVrIHQpIGRheSBpblxuICBpZiBpcyBmaXJzdF9vZl95ZWFyIFRodSB8fCAoaXNfbGVhcF95ZWFyIH55ZWFyOnkgJiYgaXMgZmlyc3Rfb2ZfeWVhciBXZWQpXG4gIHRoZW4gNTNcbiAgZWxzZSA1MlxuOztcblxuKCogU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSBvciBJU08gODYwMSBmb3IgdGhlIGRldGFpbHMgb2YgdGhpc1xuICAgYWxnb3JpdGhtLlxuXG4gICBVc2VzIGEgW35mXSBhcmd1bWVudCB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjYWxsZWQgYnkgW3dlZWtfbnVtYmVyXS5cbiopXG5sZXQgY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZiA9XG4gIGxldCBvcmRpbmFsID0gb3JkaW5hbF9kYXRlIHQgaW5cbiAgbGV0IHdlZWtkYXkgPSBEYXlfb2Zfd2Vlay5pc29fODYwMV93ZWVrZGF5X251bWJlciAoZGF5X29mX3dlZWsgdCkgaW5cbiAgKCogW29yZGluYWwgLSB3ZWVrZGF5ICsgNF0gaXMgdGhlIG9yZGluYWwgb2YgdGhpcyB3ZWVrJ3MgVGh1cnNkYXksIHRoZW4gKG4gKyA2KSAvIDcgaXNcbiAgICAgZGl2aXNpb24gYnkgNyByb3VuZGluZyB1cCAqKVxuICBsZXQgd2VlayA9IChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcgaW5cbiAgbGV0IHllYXIgPSB5ZWFyIHQgaW5cbiAgaWYgSW50LiggPCApIHdlZWsgMVxuICB0aGVuIGYgfndlZWs6KGxhc3Rfd2Vla19vZl95ZWFyICh5ZWFyIC0gMSkpIH55ZWFyOih5ZWFyIC0gMSlcbiAgZWxzZSBpZiBJbnQuKCA+ICkgd2VlayAobGFzdF93ZWVrX29mX3llYXIgeWVhcilcbiAgdGhlbiBmIH53ZWVrOjEgfnllYXI6KHllYXIgKyAxKVxuICBlbHNlIGYgfndlZWsgfnllYXJcbjs7XG5cbmxldCB3ZWVrX251bWJlcl9hbmRfeWVhciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyIC0+IHdlZWssIHllYXIpXG5sZXQgd2Vla19udW1iZXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhcjpfIC0+IHdlZWspXG5sZXQgaXNfd2Vla2VuZCB0ID0gRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCAoZGF5X29mX3dlZWsgdClcbmxldCBpc193ZWVrZGF5IHQgPSBub3QgKGlzX3dlZWtlbmQgdClcbmxldCBpc19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9IGlzX3dlZWtkYXkgdCAmJiBub3QgKGlzX2hvbGlkYXkgdClcblxubGV0IHJlYyBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MiA9XG4gIGlmIHQxIDwgdDJcbiAgdGhlbiAtZGlmZl93ZWVrZW5kX2RheXMgdDIgdDFcbiAgZWxzZSAoXG4gICAgKCogQmFzaWMgZGF0ZSBkaWZmICopXG4gICAgbGV0IGRpZmYgPSBkaWZmIHQxIHQyIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIFNhdHVyZGF5IC0+IFN1bmRheSBjcm9zc2luZ3MgKilcbiAgICBsZXQgZDEgPSBkYXlfb2Zfd2VlayB0MSBpblxuICAgIGxldCBkMiA9IGRheV9vZl93ZWVrIHQyIGluXG4gICAgbGV0IG51bV9zYXRzdW5fY3Jvc3NpbmdzID1cbiAgICAgIGlmIEludC4oIDwgKSAoRGF5X29mX3dlZWsudG9faW50IGQxKSAoRGF5X29mX3dlZWsudG9faW50IGQyKVxuICAgICAgdGhlbiAxICsgKGRpZmYgLyA3KVxuICAgICAgZWxzZSBkaWZmIC8gN1xuICAgIGluXG4gICAgKG51bV9zYXRzdW5fY3Jvc3NpbmdzICogMilcbiAgICArIChpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMiBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAxIGVsc2UgMClcbiAgICArIGlmIERheV9vZl93ZWVrLiggPSApIGQxIERheV9vZl93ZWVrLlN1biB0aGVuIC0xIGVsc2UgMClcbjs7XG5cbmxldCBkaWZmX3dlZWtkYXlzIHQxIHQyID0gZGlmZiB0MSB0MiAtIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyXG5cbmxldCBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwIG4gPVxuICBsZXQgc3RlcCA9IGlmIEludC4oID49ICkgbiAwIHRoZW4gMSBlbHNlIC0xIGluXG4gIGxldCByZWMgbG9vcCB0IGsgPVxuICAgIGxldCB0X25leHQgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgICBpZiBza2lwIHQgdGhlbiBsb29wIHRfbmV4dCBrIGVsc2UgaWYgSW50LiggPSApIGsgMCB0aGVuIHQgZWxzZSBsb29wIHRfbmV4dCAoayAtIDEpXG4gIGluXG4gIGxvb3AgdCAoYWJzIG4pXG47O1xuXG5sZXQgcmVjIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGlmIGNvbmRpdGlvbiB0IHRoZW4gdCBlbHNlIGZpcnN0X2RheV9zYXRpc2Z5aW5nIChhZGRfZGF5cyB0IHN0ZXApIH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGxldCBuZXh0X2RheSA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyBuZXh0X2RheSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgZm9sbG93aW5nX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHByZXZpb3VzX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcblxubGV0IHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCBhZGRfd2Vla2RheXMgdCBuID0gYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcDppc193ZWVrZW5kIG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfd2Vla2RheXNcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIHQgbiB+c2tpcDooZnVuIGQgLT4gaXNfd2Vla2VuZCBkIHx8IGlzX2hvbGlkYXkgZClcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF9idXNpbmVzc19kYXlzXG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBkYXRlc19iZXR3ZWVuIH5taW46dDEgfm1heDp0MiA9XG4gIGxldCByZWMgbG9vcCB0IGwgPSBpZiB0IDwgdDEgdGhlbiBsIGVsc2UgbG9vcCAoYWRkX2RheXMgdCAoLTEpKSAodCA6OiBsKSBpblxuICBsb29wIHQyIFtdXG47O1xuXG5sZXQgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggPVxuICBsZXQgYWxsX2RhdGVzID0gZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggaW5cbiAgT3B0aW9uLnZhbHVlX21hcCAoTGlzdC5oZCBhbGxfZGF0ZXMpIH5kZWZhdWx0OltdIH5mOihmdW4gZmlyc3RfZGF0ZSAtPlxuICAgICgqIHRvIGF2b2lkIGEgc3lzdGVtIGNhbGwgb24gZXZlcnkgZGF0ZSwgd2UganVzdCBnZXQgdGhlIHdlZWtkYXkgZm9yIHRoZSBmaXJzdFxuICAgICAgIGRhdGUgYW5kIHVzZSBpdCB0byBnZXQgYWxsIHRoZSBvdGhlciB3ZWVrZGF5cyAqKVxuICAgIGxldCBmaXJzdF93ZWVrZGF5ID0gZGF5X29mX3dlZWsgZmlyc3RfZGF0ZSBpblxuICAgIGxldCBkYXRlX2FuZF93ZWVrZGF5cyA9XG4gICAgICBMaXN0Lm1hcGkgYWxsX2RhdGVzIH5mOihmdW4gaSBkYXRlIC0+IGRhdGUsIERheV9vZl93ZWVrLnNoaWZ0IGZpcnN0X3dlZWtkYXkgaSlcbiAgICBpblxuICAgIExpc3QuZmlsdGVyX21hcCBkYXRlX2FuZF93ZWVrZGF5cyB+ZjooZnVuIChkYXRlLCB3ZWVrZGF5KSAtPlxuICAgICAgaWYgRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCB3ZWVrZGF5IHRoZW4gTm9uZSBlbHNlIFNvbWUgZGF0ZSkpXG47O1xuXG5sZXQgYnVzaW5lc3NfZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggfmlzX2hvbGlkYXkgPVxuICB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGQgLT4gbm90IChpc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGZpcnN0X3N0cmljdGx5X2FmdGVyIHQgfm9uOmRvdyA9XG4gIGxldCBkb3cgPSBEYXlfb2Zfd2Vlay50b19pbnQgZG93IGluXG4gIGxldCB0cGx1czEgPSBhZGRfZGF5cyB0IDEgaW5cbiAgbGV0IGN1ciA9IERheV9vZl93ZWVrLnRvX2ludCAoZGF5X29mX3dlZWsgdHBsdXMxKSBpblxuICBsZXQgZGlmZiA9IChkb3cgKyA3IC0gY3VyKSBtb2QgNyBpblxuICBhZGRfZGF5cyB0cGx1czEgZGlmZlxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIG9wZW4gUXVpY2tjaGVja1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyID1cbiAgICBpZiBkMSA+IGQyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkRhdGUuZ2VuX3VuaWZvcm1faW5jbDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAgIH5sb3dlcl9ib3VuZDooZDEgOiB0KVxuICAgICAgICAgICAgfnVwcGVyX2JvdW5kOihkMiA6IHQpXTtcbiAgICBHZW5lcmF0b3IubWFwIChJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChkaWZmIGQyIGQxKSkgfmY6KGZ1biBkYXlzIC0+IGFkZF9kYXlzIGQxIGRheXMpXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGQxIGQyID1cbiAgICBHZW5lcmF0b3Iud2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDE7IDEuLCBHZW5lcmF0b3IucmV0dXJuIGQyOyAxOC4sIGdlbl91bmlmb3JtX2luY2wgZDEgZDIgXVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIChvZl9zdHJpbmcgXCIxOTAwLTAxLTAxXCIpIChvZl9zdHJpbmcgXCIyMTAwLTAxLTAxXCIpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZTpfIH5oYXNoIC0+IGhhc2hfZm9sZF90IGhhc2ggdClcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBTaHJpbmtlci5lbXB0eSAoKVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG5sZXQgZ2VuX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgbGVhcF95ZWFyX3RhYmxlID0gbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gbm9uX2xlYXBfeWVhcl90YWJsZVxuICBsZXQgb3JkaW5hbF9kYXRlID0gb3JkaW5hbF9kYXRlXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19nZW5lcmF0b3IgcXVpY2tjaGVja19nZW5lcmF0b3IpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19zaHJpbmtlciBxdWlja2NoZWNrX3Nocmlua2VyKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLm9mX2hhc2hcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IHN1ZmZpeGVzIGNoYXIgPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIFsgc3ByaW50ZiBcIiVjXCIgY2hhcjsgc3ByaW50ZiBcIiVjTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk0uXCIgY2hhciBdXG4gIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIHN1ZmZpeCAtPlxuICAgIFsgU3RyaW5nLmxvd2VyY2FzZSBzdWZmaXg7IFN0cmluZy51cHBlcmNhc2Ugc3VmZml4IF0pXG47O1xuXG5sZXQgYW1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnQScpXG5sZXQgcG1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnUCcpXG5cbigqIEF2b2lkcyB0aGUgYWxsb2NhdGlvbiB0aGF0IFtMaXN0LmZpbmRdIHdvdWxkIGVudGFpbCBpbiBib3RoIGJvdGggdGhlIGNsb3N1cmUgaW5wdXQgYW5kXG4gICB0aGUgb3B0aW9uIG91dHB1dC4gKilcbmxldCByZWMgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzID1cbiAgbWF0Y2ggc3VmZml4ZXMgd2l0aFxuICB8IHN1ZmZpeCA6OiBzdWZmaXhlcyAtPlxuICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXggdGhlbiBzdWZmaXggZWxzZSBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXNcbiAgfCBbXSAtPiBcIlwiXG47O1xuXG5sZXQgaGFzX2NvbG9uIHN0cmluZyBwb3MgfnVudGlsID0gcG9zIDwgdW50aWwgJiYgQ2hhci5lcXVhbCAnOicgc3RyaW5nLltwb3NdXG5cbigqIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB3aGF0IHdlIG1lYW50IGJ5IFwiZGVjaW1hbCBwb2ludFwiLCBiZWNhdXNlIGluIHNvbWUgc3RyaW5nIGZvcm1hdHNcbiAgIGl0IG1lYW5zICcuJyBhbmQgaW4gc29tZSBpdCBjYW4gYmUgJy4nIG9yICcsJy4gVGhlcmUncyBubyBwYXJ0aWN1bGFyIGRlbWFuZCBmb3Igc3VwcG9ydFxuICAgZm9yICcsJywgYW5kIHVzaW5nIGp1c3QgJy4nIGxldHMgdXMgdXNlIFtGbG9hdC5vZl9zdHJpbmddIGZvciB0aGUgZGVjaW1hbCBzdWJzdHJpbmdcbiAgIHdpdGhvdXQgYW55IHN1YnN0aXR1dGlvbnMuICopXG5sZXQgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3MgPSBDaGFyLmVxdWFsICcuJyBzdHJpbmcuW3Bvc11cblxubGV0IGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgbGVuID1cbiAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICcgJyBzdHJpbmcuW2xlbiAtIDFdIHRoZW4gbGVuIC0gMSBlbHNlIGxlblxuOztcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZS5PZmRheTogaW52YWxpZCBzdHJpbmdcIiBzdHJpbmcgcmVhc29uXVxuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIHwgJ18nIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYW5kL29yIHVuZGVyc2NvcmVzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBwYXJzZSBzdHJpbmcgfmYgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IGFtX29yX3BtLCB1bnRpbCA9XG4gICAgKCogZGlzY3JpbWluYXRlIGFtb25nIEFNICgxOjMwYW0pLCBQTSAoMTI6MzA6MDAgUC5NLiksIG9yIDI0LWhyICgxMzowMCkuICopXG4gICAgbWF0Y2hcbiAgICAgICggZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIGFtX3N1ZmZpeGVzKVxuICAgICAgLCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgcG1fc3VmZml4ZXMpIClcbiAgICB3aXRoXG4gICAgfCBcIlwiLCBcIlwiIC0+IGBocl8yNCwgbGVuXG4gICAgfCBhbSwgXCJcIiAtPiBgaHJfQU0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggYW0pXG4gICAgfCBcIlwiLCBwbSAtPiBgaHJfUE0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggcG0pXG4gICAgfCBfLCBfIC0+IGBocl8yNCwgYXNzZXJ0IGZhbHNlXG4gICAgKCogSW1tZWRpYXRlbHkgYWJvdmUsIGl0IG1heSBzZWVtIG5vbnNlbnNpY2FsIHRvIHdyaXRlIFtgaHJfMjQsIGFzc2VydCBmYWxzZV0gd2hlbiB0aGVcbiAgICAgICBbYGhyXzI0XSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQuIFdlIGRvIHRoaXMgdG8gaGVscCB0aGUgY29tcGlsZXIgZmlndXJlIG91dCBuZXZlciB0b1xuICAgICAgIGFsbG9jYXRlIGEgdHVwbGUgaW4gdGhpcyBjb2RlOiB0aGUgW2xldF0gcGF0dGVybiBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUgYW5kIGV2ZXJ5XG4gICAgICAgbWF0Y2ggY2xhdXNlIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZS4gKilcbiAgaW5cbiAgbGV0IHBvcyA9IDAgaW5cbiAgbGV0IHBvcywgaHIsIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzID1cbiAgICAoKiBlLmcuIFwiMTowMFwiIG9yIFwiMTowMDowMFwiICopXG4gICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMSkgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMjowMFwiIG9yIFwiMTI6MDA6MDBcIiAqKVxuICAgIGVsc2UgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMywgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMSA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMSwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjA5MzBcIjsgbXVzdCBub3QgaGF2ZSBzZWNvbmRzICopXG4gICAgZWxzZSBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19idXRfbm90X3NlY29uZHNcbiAgaW5cbiAgbGV0IHBvcywgbWluLCBleHBlY3Rfc2Vjb25kcyA9XG4gICAgbWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiAqKVxuICAgICAgcG9zLCAwLCBmYWxzZVxuICAgIHwgKGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzKSBhcyBtYXliZV9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICggcG9zICsgM1xuICAgICAgICAsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3NcbiAgICAgICAgLCBtYXRjaCBtYXliZV9zZWNvbmRzIHdpdGhcbiAgICAgICAgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPiB0cnVlXG4gICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIC0+XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBlbmQgb2Ygc3RyaW5nIGFmdGVyIG1pbnV0ZXNcIiApXG4gICAgICAgICgqIGUuZy4gXCIxMjowMFwiICopXG4gICAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgICAgdGhlbiBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBjb2xvbiBvciBhbS9wbSBzdWZmaXggd2l0aCBvcHRpb25hbCBzcGFjZSBhZnRlciBtaW51dGVzXCJcbiAgaW5cbiAgbGV0IHNlYywgc3Vic2VjX3Bvcywgc3Vic2VjX2xlbiwgc3Vic2VjX25vbnplcm8gPVxuICAgIG1hdGNoIGV4cGVjdF9zZWNvbmRzIHdpdGhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiIG9yIFwiMTI6MDBcIiAqKVxuICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgIHRoZW4gMCwgcG9zLCAwLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgYWN0dWFsbHkgdW5yZWFjaGFibGUsIGJhc2VkIG9uIHRoZSB2YXJpb3VzIHdheXMgdGhhdFxuICAgICAgICAgICBbZXhwZWN0X3NlY29uZHNdIGNhbiBlbmQgdXAgZmFsc2UuICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiQlVHOiBkaWQgbm90IGV4cGVjdCBzZWNvbmRzLCBidXQgZm91bmQgdGhlbVwiXG4gICAgfCB0cnVlIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgcG9zICsgMiA+IHVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowXCIgKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCB0d28gZGlnaXRzIG9mIHNlY29uZHNcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zIGluXG4gICAgICAgIGxldCBwb3MgPSBwb3MgKyAyIGluXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICAgIHRoZW4gc2VjLCBwb3MsIDAsIGZhbHNlICgqIGUuZy4gXCIxMjowMDowMC4xMjNcIiAqKVxuICAgICAgICBlbHNlIGlmIHBvcyA8IHVudGlsICYmIGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoIHNlY1xuICAgICAgICAgICwgcG9zXG4gICAgICAgICAgLCB1bnRpbCAtIHBvc1xuICAgICAgICAgICwgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIChwb3MgKyAxKSB+dW50aWwgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRlY2ltYWwgcG9pbnQgb3IgYW0vcG0gc3VmZml4IGFmdGVyIHNlY29uZHNcIilcbiAgaW5cbiAgbGV0IGhyID1cbiAgICAoKiBOQi4gV2UgYWxyZWFkeSBrbm93IFtocl0gaXMgbm9uLW5lZ2F0aXZlLCBiZWNhdXNlIGl0J3MgdGhlIHJlc3VsdCBvZlxuICAgICAgIFtyZWFkXzJfZGlnaXRfaW50XS4gKilcbiAgICBtYXRjaCBhbV9vcl9wbSB3aXRoXG4gICAgfCBgaHJfQU0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMGFtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSBoclxuICAgIHwgYGhyX1BNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBwbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDEyXG4gICAgICBlbHNlIGhyICsgMTJcbiAgICB8IGBocl8yNCAtPlxuICAgICAgKG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgd2l0aG91dCBtaW51dGVzIG9yIEFNL1BNXCJcbiAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+XG4gICAgICAgICBpZiBociA+IDI0XG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBlbHNlIGlmIGhyID0gMjQgJiYgKG1pbiA+IDAgfHwgc2VjID4gMCB8fCBzdWJzZWNfbm9uemVybylcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ0aW1lIGlzIHBhc3QgMjQ6MDA6MDBcIiAoKiBlLmcuIFwiMTM6MDA6MDBcIiAqKVxuICAgICAgICAgZWxzZSBocilcbiAgaW5cbiAgbGV0IG1pbiA9XG4gICAgaWYgbWluID4gNTkgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm1pbnV0ZXMgb3V0IG9mIGJvdW5kc1wiIGVsc2UgbWluXG4gIGluXG4gIGxldCBzZWMgPVxuICAgIGlmIHNlYyA+IDYwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzZWNvbmRzIG91dCBvZiBib3VuZHNcIiBlbHNlIHNlY1xuICBpblxuICBsZXQgc3Vic2VjX2xlbiA9IGlmIHNlYyA9IDYwIHx8IG5vdCBzdWJzZWNfbm9uemVybyB0aGVuIDAgZWxzZSBzdWJzZWNfbGVuIGluXG4gIGYgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbjs7XG5cbmxldCBwYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmYgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIG1hdGNoXG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHN0cilcbiAgICB3aXRoXG4gICAgfCBSZXN1bHQuT2sgeiAtPiB6XG4gICAgfCBSZXN1bHQuRXJyb3IgcyAtPlxuICAgICAgZmFpbHdpdGhmIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6ICVzXCIgKEVycm9yLnRvX3N0cmluZ19tYWNoIHMpICgpXG4gIGluXG4gIGlmIGxlbiA8IDJcbiAgdGhlbiBmYWlsd2l0aCBcImxlbiA8IDJcIlxuICBlbHNlIChcbiAgICBsZXQgaHIgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zIGluXG4gICAgaWYgaHIgPiAyNCB0aGVuIGZhaWx3aXRoIFwiaG91ciA+IDI0XCI7XG4gICAgaWYgbGVuID0gMlxuICAgIHRoZW4gZiBzdHIgfmhyIH5taW46MCB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgIGVsc2UgaWYgbGVuIDwgNVxuICAgIHRoZW4gZmFpbHdpdGggXCIyIDwgbGVuIDwgNVwiXG4gICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyAyXSAnOicpXG4gICAgdGhlbiBmYWlsd2l0aCBcImZpcnN0IGNvbG9uIG1pc3NpbmdcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbiA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDMpIGluXG4gICAgICBpZiBtaW4gPj0gNjAgdGhlbiBmYWlsd2l0aCBcIm1pbnV0ZSA+IDYwXCI7XG4gICAgICBpZiBociA9IDI0ICYmIG1pbiA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gbWludXRlXCI7XG4gICAgICBpZiBsZW4gPSA1XG4gICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICBlbHNlIGlmIGxlbiA8IDhcbiAgICAgIHRoZW4gZmFpbHdpdGggXCI1IDwgbGVuIDwgOFwiXG4gICAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDVdICc6JylcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJzZWNvbmQgY29sb24gbWlzc2luZ1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDYpIGluXG4gICAgICAgICgqIHNlY29uZCBjYW4gYmUgNjAgaW4gdGhlIGNhc2Ugb2YgYSBsZWFwIHNlY29uZC4gVW5mb3J0dW5hdGVseSwgd2hhdCB3aXRoXG4gICAgICAgICAgIG5vbi1ob3VyLW11bHRpcGxlIHRpbWV6b25lIG9mZnNldHMsIHdlIGNhbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGF0XG4gICAgICAgICAgIHRoZSBob3VyIG9yIG1pbnV0ZSBtdXN0IGJlIGluIHRoYXQgY2FzZSAqKVxuICAgICAgICBpZiBzZWMgPiA2MCB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgc2Vjb25kOiAlaVwiIHNlYyAoKTtcbiAgICAgICAgaWYgaHIgPSAyNCAmJiBzZWMgPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHNlY29uZHNcIjtcbiAgICAgICAgaWYgbGVuID0gOFxuICAgICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgICBlbHNlIGlmIGxlbiA9IDlcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcImxlbmd0aCA9IDlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzdHIuW3BvcyArIDhdIHdpdGhcbiAgICAgICAgICB8ICcuJyB8ICcsJyAtPlxuICAgICAgICAgICAgbGV0IHN1YnNlY19wb3MgPSBwb3MgKyA4IGluXG4gICAgICAgICAgICBsZXQgc3Vic2VjX2xlbiA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm9cbiAgICAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgICAgICAgKHN1YnNlY19wb3MgKyAxKVxuICAgICAgICAgICAgICAgICAgfnVudGlsOihwb3MgKyBsZW4pXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gc2VjID0gNjAgLT4gMFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBociA9IDI0IC0+IGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHN1YnNlY29uZHNcIlxuICAgICAgICAgICAgICB8IF8gLT4gbGVuIC0gOFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJtaXNzaW5nIHN1YnNlY29uZCBzZXBhcmF0b3JcIikpKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIEhhc2guQnVpbHRpblxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgIGxldCB2ZXJpZnkgdCA9XG4gICAgICBtYXRjaCBDYW1sLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgICBsZXQgb2ZfbXVsdCBmID0gZlxuICAgIGxldCB0b19tdWx0IHQgPSB0XG4gICAgbGV0IG9mX3BlcmNlbnRhZ2UgZiA9IGYgLy4gMTAwLlxuICAgIGxldCB0b19wZXJjZW50YWdlIHQgPSB0ICouIDEwMC5cbiAgICBsZXQgb2ZfYnAgZiA9IGYgLy4gMTBfMDAwLlxuICAgIGxldCB0b19icCB0ID0gdCAqLiAxMF8wMDAuXG4gICAgbGV0IG9mX2JwX2ludCBpID0gb2ZfYnAgKEZsb2F0Lm9mX2ludCBpKVxuICAgIGxldCB0b19icF9pbnQgdCA9IEZsb2F0LnRvX2ludCAodG9fYnAgdClcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiAgSWYgeW91IGFyZSBjaGFuZ2luZyB0aGVcbiAgICAgICAgIHNlbWFudGljcyBvZiBhbnl0aGluZyB0aGF0IGFmZmVjdHMgdGhlIHNleHAgb3IgYmluLWlvIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcyBvZlxuICAgICAgICAgdGhpcyB0eXBlICh0aGlzIGluY2x1ZGVzIHRvX3N0cmluZyBhbmQgb2Zfc3RyaW5nKSBtYWtlIGEgU3RhYmxlLlYyIGFuZCBtYWtlIHlvdXJcbiAgICAgICAgIGNoYW5nZXMgdGhlcmUuICBUaGFua3MhICopXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gc3ByaW50ZiBcIiUuNkdcIiBmbG9hdCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgICB0aGVuIFwiMHhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAxLlxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdF9vZl9zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJ4XCIgd2l0aFxuICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcIiVcIiB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciAqLiAwLjAxXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBvZl9icCAoZmxvYXRfb2Zfc3RyaW5nIHN0cilcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIlBlcmNlbnQub2Zfc3RyaW5nOiBtdXN0IGVuZCBpbiB4LCAlJSwgb3IgYnA6ICVzXCIgc3RyICgpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgICAgbGV0IGZsb2F0IHN0ciA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi50X29mX3NleHAgKFNleHAuQXRvbSBzdHIpIGluXG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHN0ciA9IHJlYWxseV9vZl9zdHJpbmcgc3RyIEZsb2F0Lm9mX3N0cmluZ1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuXG4gICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuIHBlcmNlbnQgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nXG4gICAgICAgICAgIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyIHNlcmlhbGl6YXRpb24uICopXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBsZXQgbm9uZSA9IEZsb2F0Lm5hblxuICAgICAgbGV0IGlzX25vbmUgdCA9IEZsb2F0LmlzX25hbiB0XG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlID0gaXNfc29tZVxuICAgICAgbGV0IHNvbWUgPSBGbi5pZFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG4gICAgICBsZXQgYXBwbHlfd2l0aF9ub25lX2FzX25hbiA9ICggKi4gKVxuICAgICAgbGV0IG9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fbXVsdF93aXRoX25vbmVfYXNfbmFuID0gRm4uaWRcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlBlcmNlbnQuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGlmIGlzX3NvbWUgdCB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0IGVsc2UgZGVmYXVsdFxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0IGlzX3plcm8gdCA9IHQgPSAwLlxubGV0IGFwcGx5IHQgZiA9IHQgKi4gZlxubGV0IHNjYWxlIHQgZiA9IHQgKi4gZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIEZsb2F0XG5cbiAgbGV0ICggLy8gKSB4IHkgPSBvZl9tdWx0IHggLy4gb2ZfbXVsdCB5XG5lbmQgOlxuc2lnXG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvLyApIDogdCAtPiB0IC0+IGZsb2F0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgaXNfbmFuIDogdCAtPiBib29sXG4gIHZhbCBpc19pbmYgOiB0IC0+IGJvb2xcbiAgdmFsIHNpZ25fZXhuIDogdCAtPiBTaWduLnRcblxuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IHZhbGlkYXRlID0gRmxvYXQudmFsaWRhdGVfb3JkaW5hcnlcbmxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgcyA9IFN0cmluZ2FibGUub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHNcbmxldCB0X29mX3NleHBfYWxsb3dfbmFuX2FuZF9pbmYgc2V4cCA9IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiAoU2V4cC50b19zdHJpbmcgc2V4cClcblxubW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0ICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgbGV0IHRvX3N0cmluZyB4ID0gc3ByaW50ZiBcIiUuNkclJVwiICh4ICogMTAwLilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgcmFuZG9taXplIHNwYW4gfnBlcmNlbnQgfnNjYWxlID1cbiAgbGV0IG11bHQgPSBQZXJjZW50LnRvX211bHQgcGVyY2VudCBpblxuICBpZiBGbG9hdC4oIDwgKSBtdWx0IDAuIHx8IEZsb2F0LiggPiApIG11bHQgMS5cbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlNwYW4ucmFuZG9taXplOiBwZXJjZW50IGlzIG91dCBvZiByYW5nZSBbMHgsIDF4XVwiIChwZXJjZW50IDogUGVyY2VudC50KV07XG4gIGxldCBmYWN0b3IgPSBSYW5kb20uZmxvYXRfcmFuZ2UgKDEuIC0uIG11bHQpIChGbG9hdC5vbmVfdWxwIGBVcCAoMS4gKy4gbXVsdCkpIGluXG4gIHNjYWxlIHNwYW4gZmFjdG9yXG47O1xuXG5sZXQgZm9ybWF0X2RlY2ltYWwgbiB0ZW50aHMgdW5pdHMgPVxuICBhc3NlcnQgKHRlbnRocyA+PSAwICYmIHRlbnRocyA8IDEwKTtcbiAgaWYgbiA8IDEwICYmIHRlbnRocyA8PiAwXG4gIHRoZW4gc3ByaW50ZiBcIiVkLiVkJXNcIiBuIHRlbnRocyB1bml0c1xuICBlbHNlIHNwcmludGYgXCIlZCVzXCIgbiB1bml0c1xuOztcblxubGV0IHNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zID1cbiAgbGV0IHMgPVxuICAgIGlmIGhyID49IDI0XG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCAoaHIgLyAyNCkgKEludC5vZl9mbG9hdCAoRmxvYXQub2ZfaW50IChociAlIDI0KSAvLiAyLjQpKSBcImRcIlxuICAgIGVsc2UgaWYgaHIgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBociAobWluIC8gNikgXCJoXCJcbiAgICBlbHNlIGlmIG1pbiA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1pbiAoc2VjIC8gNikgXCJtXCJcbiAgICBlbHNlIGlmIHNlYyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHNlYyAobXMgLyAxMDApIFwic1wiXG4gICAgZWxzZSBpZiBtcyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1zICh1cyAvIDEwMCkgXCJtc1wiXG4gICAgZWxzZSBpZiB1cyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHVzIChucyAvIDEwMCkgXCJ1c1wiXG4gICAgZWxzZSBzcHJpbnRmIFwiJWluc1wiIG5zXG4gIGluXG4gIG1hdGNoIChzaWduIDogU2lnbi50KSB3aXRoXG4gIHwgTmVnIC0+IFwiLVwiIF4gc1xuICB8IFplcm8gfCBQb3MgLT4gc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc2lnbiA6IFNpZ24udFxuICAgICAgICA7IGhyIDogaW50XG4gICAgICAgIDsgbWluIDogaW50XG4gICAgICAgIDsgc2VjIDogaW50XG4gICAgICAgIDsgbXMgOiBpbnRcbiAgICAgICAgOyB1cyA6IGludFxuICAgICAgICA7IG5zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIExpa2VfYV9mbG9hdCA9IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCB6ZXJvIDogdFxuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IHRcbiAgICAgIHZhbCBhYnMgOiB0IC0+IHRcbiAgICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICAgICAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5TcGFuIHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgICAgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICAoKiB0aGlzIHByZXZlbnRzIGFueSB3b3JyeSBhYm91dCBoYXZpbmcgdGhlc2UgdmVyeSBjb21tb24gbmFtZXMgcmVkZWZpbmVkIGJlbG93IGFuZFxuICAgICAgICAgbWFrZXMgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgbW9kdWxlIHNhZmVyLiAgQ29uc3RhbnQgaXMgaW5jbHVkZWQgYXQgdGhlIHZlcnlcbiAgICAgICAgIGJvdHRvbSB0byByZS1leHBvcnQgdGhlc2UgY29uc3RhbnRzIGluIGEgbW9yZSBjb252ZW5pZW50IHdheSAqKVxuICAgICAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgICAgIGxldCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kID0gMUU5XG4gICAgICAgIGxldCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA9IDFFNlxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTNcblxuICAgICAgICAoKiBzcGFucyBhcmUgc3RvcmVkIGFzIGEgZmxvYXQgaW4gc2Vjb25kcyAqKVxuICAgICAgICBsZXQgbmFub3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBuYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWljcm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWxsaXNlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IHNlY29uZCA9IG9mX2Zsb2F0IDEuXG4gICAgICAgIGxldCBtaW51dGUgPSBvZl9mbG9hdCA2MC5cbiAgICAgICAgbGV0IGhvdXIgPSBvZl9mbG9hdCAoNjAuICouIDYwLilcbiAgICAgICAgbGV0IGRheSA9IG9mX2Zsb2F0ICgyNC4gKi4gNjAuICouIDYwLilcbiAgICAgIGVuZFxuXG5cbiAgICAgIGxldCB0b19wYXJ0cyB0IDogUGFydHMudCA9XG4gICAgICAgIGxldCBzaWduID0gRmxvYXQuc2lnbl9leG4gdCBpblxuICAgICAgICBsZXQgdCA9IGFicyB0IGluXG4gICAgICAgIGxldCBpbnRlZ3JhbCA9IEZsb2F0LnJvdW5kX2Rvd24gdCBpblxuICAgICAgICBsZXQgZnJhY3Rpb25hbCA9IHQgLS4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IHNlY29uZHMgPSBGbG9hdC5pcm91bmRfZG93bl9leG4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuIChmcmFjdGlvbmFsICouIDFFOSkgaW5cbiAgICAgICAgbGV0IHNlY29uZHMsIG5hbm9zZWNvbmRzID1cbiAgICAgICAgICBpZiBJbnQuZXF1YWwgbmFub3NlY29uZHMgMV8wMDBfMDAwXzAwMFxuICAgICAgICAgIHRoZW4gSW50LnN1Y2Mgc2Vjb25kcywgMFxuICAgICAgICAgIGVsc2Ugc2Vjb25kcywgbmFub3NlY29uZHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNlYyA9IHNlY29uZHMgbW9kIDYwIGluXG4gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwIGluXG4gICAgICAgIGxldCBtaW4gPSBtaW51dGVzIG1vZCA2MCBpblxuICAgICAgICBsZXQgaHIgPSBtaW51dGVzIC8gNjAgaW5cbiAgICAgICAgbGV0IG5zID0gbmFub3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgdXMgPSBtaWNyb3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kcyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IG1zID0gbWlsbGlzZWNvbmRzIGluXG4gICAgICAgIHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgKCAvICkgdCBmID0gVC5vZl9mbG9hdCAoKHQgOiBULnQgOj4gZmxvYXQpIC8uIGYpXG4gICAgbGV0ICggLy8gKSAoZiA6IFQudCkgKHQgOiBULnQpID0gKGYgOj4gZmxvYXQpIC8uICh0IDo+IGZsb2F0KVxuXG4gICAgKCogTXVsdGlwbHlpbmcgYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBkaXZpc2lvbiBieSAxRS0zICopXG4gICAgbGV0IHRvX25zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fdXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fbXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fc2VjICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KVxuICAgIGxldCB0b19taW4geCA9IHggLy8gVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgdG9faHIgeCA9IHggLy8gVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IHRvX2RheSB4ID0geCAvLyBULkNvbnN0YW50LmRheVxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHggPSBGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4biAodG9fc2VjIHgpXG4gICAgbGV0ICggKiogKSBmICh0IDogVC50KSA9IFQub2ZfZmxvYXQgKGYgKi4gKHQgOj4gZmxvYXQpKVxuXG4gICAgKCogRGl2aXNpb24gYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBtdWx0aXBseWluZyBieSAxRS0zICopXG4gICAgbGV0IG9mX25zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfdXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfbXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2Zfc2VjIHggPSBULm9mX2Zsb2F0IHhcbiAgICBsZXQgb2ZfaW50X3NlYyB4ID0gb2Zfc2VjIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50MzJfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDMyLnRvX2Zsb2F0IHNlYylcblxuICAgICgqIE5vdGUgdGhhdCBbSW50NjMudG9fZmxvYXRdIGNhbiBsb3NlIHByZWNpc2lvbiwgYnV0IG9ubHkgb24gaW5wdXRzIGxhcmdlIGVub3VnaCB0aGF0XG4gICAgICAgW29mX3NlY10gaW4gZWl0aGVyIHRoZSBUaW1lX25zIG9yIFRpbWVfZmxvYXQgY2FzZSB3b3VsZCBsb3NlIHByZWNpc2lvbiAob3IganVzdCBiZVxuICAgICAgIHBsYWluIG91dCBvZiBib3VuZHMpIGFueXdheS4gKilcbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDYzLnRvX2Zsb2F0IHNlYylcbiAgICBsZXQgb2ZfbWluIHggPSB4ICoqIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IG9mX2hyIHggPSB4ICoqIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCBvZl9kYXkgeCA9IHggKiogVC5Db25zdGFudC5kYXlcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSB0IH5wZXJjZW50ID0gU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IH5wZXJjZW50IH5zY2FsZVxuXG4gICAgbGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgICAgIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICAgICAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICBsZXQgb2Zfc3RyaW5nX3YxX3YyIChzIDogc3RyaW5nKSB+aXNfdjIgPVxuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJlbXB0eSBzdHJpbmdcIlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgZmxvYXQgbiA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuZHJvcF9zdWZmaXggcyBuIHdpdGhcbiAgICAgICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcIm5vIG51bWJlciBnaXZlblwiXG4gICAgICAgICAgICB8IHMgLT5cbiAgICAgICAgICAgICAgbGV0IHYgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgICAgICBWYWxpZGF0ZS5tYXliZV9yYWlzZSAoRmxvYXQudmFsaWRhdGVfb3JkaW5hcnkgdik7XG4gICAgICAgICAgICAgIHZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAobWF0Y2ggcy5bSW50LiggLSApIGxlbiAxXSB3aXRoXG4gICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgaWYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ20nXG4gICAgICAgICAgICAgdGhlbiBvZl9tcyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICd1J1xuICAgICAgICAgICAgIHRoZW4gb2ZfdXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbidcbiAgICAgICAgICAgICB0aGVuIG9mX25zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgVC5vZl9mbG9hdCAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnbScgLT4gb2ZfbWluIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdoJyAtPiBvZl9ociAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnZCcgLT4gb2ZfZGF5IChmbG9hdCAxKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBpZiBpc192MlxuICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG5zLCB1cywgbXMsIHMsIG0sIGgsIG9yIGQuXCJcbiAgICAgICAgICAgICBlbHNlIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBtcywgcywgbSwgaCwgb3IgZC5cIilcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZiBcIlNwYW4ub2Zfc3RyaW5nIGNvdWxkIG5vdCBwYXJzZSAnJXMnOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHAgPSBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cFxuXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cCBvZiBTZXhwLnQgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjIgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nX3YxX3YyIHggfmlzX3YyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHAgKHNleHAsIGV4bikpIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IHNleHApIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHN0cmluZyB+aXNfdjIgc3VmZml4IGZsb2F0ID1cbiAgICAgIGlmIGlzX3YyXG4gICAgICAoKiBUaGlzIGlzIHRoZSBzYW1lIGZsb2F0LXRvLXN0cmluZyBjb252ZXJzaW9uIHVzZWQgaW4gW0Zsb2F0LnNleHBfb2ZfdF0uICBJdCdzIGxpa2VcbiAgICAgICAgIFtGbG9hdC50b19zdHJpbmddLCBidXQgbWF5IGxlYXZlIG9mZiB0cmFpbGluZyBwZXJpb2QuICopXG4gICAgICB0aGVuICFTZXhwbGliLkNvbnYuZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgZmxvYXQgXiBzdWZmaXhcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiVnJXNcIiBmbG9hdCBzdWZmaXhcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgICgqIEknZCBsaWtlIGl0IHRvIGJlIHRoZSBjYXNlIHRoYXQgeW91IGNvdWxkIG5ldmVyIGNvbnN0cnVjdCBhbiBpbmZpbml0ZSBzcGFuLCBidXQgSVxuICAgICAgIGNhbid0IHRoaW5rIG9mIGEgZ29vZCB3YXkgdG8gZW5mb3JjZSBpdC4gIFNvIHRoaXMgdG9fc3RyaW5nIGZ1bmN0aW9uIGNhbiBwcm9kdWNlXG4gICAgICAgc3RyaW5ncyB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhleSBhcmUgZmVkIHRvIG9mX3N0cmluZyAqKVxuICAgIGxldCB0b19zdHJpbmdfdjFfdjIgKHQgOiBULnQpIH5pc192MiA9XG4gICAgICAoKiB0aGlzIGlzIGEgc2FkIGJyb2tlbiBhYnN0cmFjdGlvbi4uLiAqKVxuICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5ICh0IDo+IGZsb2F0KSB3aXRoXG4gICAgICB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IFwiMHNcIlxuICAgICAgfCBDLkluZmluaXRlIC0+IGlmIFQuKCA+ICkgdCBULnplcm8gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgICAgIHwgQy5OYW4gLT4gXCJuYW5cIlxuICAgICAgfCBDLk5vcm1hbCAtPlxuICAgICAgICBsZXQgKCA8ICkgPSBULiggPCApIGluXG4gICAgICAgIGxldCBhYnNfdCA9IFQub2ZfZmxvYXQgKEZsb2F0LmFicyAodCA6PiBmbG9hdCkpIGluXG4gICAgICAgIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWNyb3NlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJuc1wiICh0b19ucyB0KVxuICAgICAgICBlbHNlIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWxsaXNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJ1c1wiICh0b191cyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibXNcIiAodG9fbXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQubWludXRlXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInNcIiAodG9fc2VjIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmhvdXJcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibVwiICh0b19taW4gdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuZGF5XG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcImhcIiAodG9faHIgdClcbiAgICAgICAgZWxzZSBzdHJpbmcgfmlzX3YyIFwiZFwiICh0b19kYXkgdClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdF92MV92MiB0IH5pc192MiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3YxX3YyIHQgfmlzX3YyKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MjpmYWxzZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192MjpmYWxzZVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOnRydWVcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6dHJ1ZVxuICBlbmRcblxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICBsZXQgb3BlbiBUIGluXG4gICAgICBsZXQgb3BlbiBDb25zdGFudCBpblxuICAgICAgbGV0IGFic190ID0gVC5hYnMgdCBpblxuICAgICAgaWYgYWJzX3QgPj0gZGF5XG4gICAgICB0aGVuIERheVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gICAgICB0aGVuIEhvdXJcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gICAgICB0aGVuIE1pbnV0ZVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgICAgIHRoZW4gU2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICBlbHNlIE5hbm9zZWNvbmRcbiAgICA7O1xuXG4gICAgbGV0IG9mX3VuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50IC0+IFQudCA9XG4gICAgICBsZXQgb3BlbiBULkNvbnN0YW50IGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgICAgIHwgU2Vjb25kIC0+IHNlY29uZFxuICAgICAgfCBNaW51dGUgLT4gbWludXRlXG4gICAgICB8IEhvdXIgLT4gaG91clxuICAgICAgfCBEYXkgLT4gZGF5XG4gICAgOztcblxuICAgIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBcIm5zXCJcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gXCJ1c1wiXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IFwibXNcIlxuICAgICAgfCBTZWNvbmQgLT4gXCJzXCJcbiAgICAgIHwgTWludXRlIC0+IFwibVwiXG4gICAgICB8IEhvdXIgLT4gXCJoXCJcbiAgICAgIHwgRGF5IC0+IFwiZFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJUaW1lLlNwYW4ub2Zfc3RyaW5nOiBcIiBeIHJlYXNvbiBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBtZXNzYWdlIHN0cmluZ11cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggdW5pdF9vZl90aW1lX2xpc3QgPVxuICAgICAgICBtYXRjaCB1bml0X29mX3RpbWVfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBzdWZmaXhcIlxuICAgICAgICB8IHVuaXRfb2ZfdGltZSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCBzdHJpbmcgfnBvczppbmRleCB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgICAgIHRoZW4gdW5pdF9vZl90aW1lXG4gICAgICAgICAgZWxzZSBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCByZXN0XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXggPVxuICAgICAgICAoKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXCJtc1wiIGNvbWVzIGJlZm9yZSBcIm1cIiBpbiBbVW5pdF9vZl90aW1lLmFsbF0gdG8gZ2V0IGFcbiAgICAgICAgICAgY29ycmVjdCBtYXRjaCBvbiBtaWxsaXNlY29uZCB0aW1lc3RhbXBzLiBUaGlzIGFzc3VtcHRpb24gaXMgZGVtb25zdHJhdGVkIGluIHRoZVxuICAgICAgICAgICBleHBlY3QgdGVzdCBiZWxvdy4gKilcbiAgICAgICAgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggVW5pdF9vZl90aW1lLmFsbFxuICAgICAgOztcblxuICAgICAgKCogV2UgdmFsaWRhdGUgbWFnbml0dWRlIHN0cmluZ3Mgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB1bml0LW9mLXRpbWUgc3VmZml4XG4gICAgICAgICBiZWdpbnMsIGFuZCBzbyB0aGF0IG9ubHkgc2Vuc2libGUgc3RyaW5ncyBhcmUgYWxsb3dlZC4gV2UgZG8gbm90IHdhbnQgdG8gYmUgYXNcbiAgICAgICAgIHBlcm1pc3NpdmUgYXMgW0Zsb2F0Lm9mX3N0cmluZ107IGZvciBleGFtcGxlLCBoZXhhZGVjaW1hbCBzcGFuIG1hZ25pdHVkZXMgYXJlIG5vdFxuICAgICAgICAgYWxsb3dlZC4gQWZ0ZXIgdmFsaWRhdGlvbiwgd2Ugc3RpbGwgdXNlIFtGbG9hdC5vZl9zdHJpbmddIHRvIHByb2R1Y2UgdGhlIGFjdHVhbFxuICAgICAgICAgdmFsdWUuICopXG4gICAgICBtb2R1bGUgRmxvYXRfcGFyc2VyID0gc3RydWN0XG4gICAgICAgICgqIFtJbl9kZWNpbWFsX2hhdmVfZGlnaXRdIGluY2x1ZGVzIGhhdmluZyBhIGRpZ2l0IGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgdHlwZSBzdGF0ZSA9XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuXG4gICAgICAgIHR5cGUgdG9rZW4gPVxuICAgICAgICAgIHwgRGlnaXRcbiAgICAgICAgICB8IFBvaW50XG4gICAgICAgICAgfCBVbmRlclxuICAgICAgICAgIHwgU2lnblxuICAgICAgICAgIHwgRXhwdFxuXG4gICAgICAgIGxldCBzdGF0ZV9pc19maW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0IC0+IHRydWVcbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQgLT4gZmFsc2VcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9rZW5fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAnMCcgLi4gJzknIC0+IFNvbWUgRGlnaXRcbiAgICAgICAgICB8ICcuJyAtPiBTb21lIFBvaW50XG4gICAgICAgICAgfCAnXycgLT4gU29tZSBVbmRlclxuICAgICAgICAgIHwgJy0nIHwgJysnIC0+IFNvbWUgU2lnblxuICAgICAgICAgIHwgJ0UnIHwgJ2UnIC0+IFNvbWUgRXhwdFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBtYWduaXR1ZGVcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgIGlmIGluZGV4ID0gbGVuXG4gICAgICAgICAgdGhlbiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCB0b2tlbl9vZl9jaGFyIHN0cmluZy5baW5kZXhdIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICB8IFNvbWUgdG9rZW4gLT5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzdGF0ZSwgdG9rZW4gd2l0aFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFNpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFBvaW50IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBTaWduIC0+XG4gICAgICAgICAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBTaWduIC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXg6KGluZGV4ICsgMSkgfmxlbiB+c3RhdGUpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGU6SW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHJlYyBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXggfmxlbiA9XG4gICAgICAgIGlmIEludC5lcXVhbCBpbmRleCBsZW5cbiAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHN1ZmZpeF9pbmRleCA9IEZsb2F0X3BhcnNlci5maW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleDpzdWZmaXhfaW5kZXggaW5cbiAgICAgICAgICBsZXQgdW50aWxfaW5kZXggPVxuICAgICAgICAgICAgSW50LiggKyApIHN1ZmZpeF9pbmRleCAoU3RyaW5nLmxlbmd0aCAoc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9XG4gICAgICAgICAgICBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOmluZGV4IH5sZW46KEludC4oIC0gKSBzdWZmaXhfaW5kZXggaW5kZXgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5vZl9zdHJpbmcgZmxvYXRfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IG1hZ25pdHVkZSArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXg6dW50aWxfaW5kZXggfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGU6VC56ZXJvIH5pbmRleCB+bGVuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIG1hdGNoIHN0cmluZyB3aXRoXG4gICAgICAgIHwgXCJOQU5zXCIgLT4gb2Zfc2VjIEZsb2F0Lm5hblxuICAgICAgICB8IFwiLUlORnNcIiAtPiBvZl9zZWMgRmxvYXQubmVnX2luZmluaXR5XG4gICAgICAgIHwgXCJJTkZzXCIgLT4gb2Zfc2VjIEZsb2F0LmluZmluaXR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG5lZ2F0aXZlLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBzdHJpbmcuWzBdIHdpdGhcbiAgICAgICAgICAgIHwgJy0nIC0+IHRydWUsIDFcbiAgICAgICAgICAgIHwgJysnIC0+IGZhbHNlLCAxXG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UsIDBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGluZGV4ID49IGxlbiB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gVC5uZWcgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcblxuICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIGZsb2F0ID1cbiAgICAgICAgbGV0IHN0cmluZyA9IEZsb2F0LnRvX3N0cmluZyBmbG9hdCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gXCIuXCIgaW5cbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICB0aGVuIFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgZWxzZSBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgICgqIEFzIHdlIGJ1aWxkIHVwIGEgc3RyaW5nLCB3ZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSByZWFkXG4gICAgICAgICBiYWNrIGluLCBzbyB0aGF0IHdlIGNhbiBjb21wdXRlIHRoZSByZW1haW5kZXIgdGhhdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuICopXG4gICAgICBsZXQgc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgPVxuICAgICAgICBzdW1fdCArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBtYWduaXR1ZGUgdW5pdF9vZl90aW1lXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igc29tZSB1bml0cyAodmVyeSBsYXJnZSBudW1iZXJzIG9mIGRheXMsIG9yIHNlY29uZHMgYW5kIHNtYWxsZXIpIHdlIGp1c3RcbiAgICAgICAgIHJlbmRlciBhIGZsb2F0IGRpcmVjdGx5LCB3aXRoIGEgZml4IGZvciByb3VuZG9mZiBlcnJvci4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZSA9XG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIGFic190IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGlmIHN1bV90ID0gYWJzX3RcbiAgICAgICAgdGhlblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICAgIGlmIHN1bV90IDwgYWJzX3RcbiAgICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgICBlbHNlIGRpdmlkZV9ieV91bml0X29mX3RpbWUgKHByZXYgYWJzX3QpIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgZml4dXBfbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSByZW1fdCBmaXh1cF91bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAoKiBbcmVtX3RdIGlzIGF0IFVMUCBzaXplIG9mIFthYnNfdF0sIGl0IG5lZWRzIGp1c3Qgb25lIGJpdCBvZiBwcmVjaXNpb24gKilcbiAgICAgICAgICBeIHNwcmludGYgXCIlLjFnXCIgZml4dXBfbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIGZpeHVwX3VuaXRfb2ZfdGltZSlcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBub24tZGVjaW1hbCB1bml0cyAobWludXRlcyBhbmQgZ3JlYXRlciksIHdlIHJlbmRlciBhbiBpbnRlZ2VyIG1hZ25pdHVkZSwgYW5kXG4gICAgICAgICByZXR1cm4gdGhhdCB3aXRoIHRoZSBydW5uaW5nIHN1bSBzbyB0aGUgcmVtYWluZGVyIGNhbiBiZSByZW5kZXJlZCBhdCBhIHNtYWxsZXJcbiAgICAgICAgIHVuaXQuICopXG4gICAgICBsZXQgdG9faW50X3N0cmluZ19hbmRfc3VtIHVuaXRfb2ZfdGltZSB+YWJzX3QgfnN1bV90ID1cbiAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAoKiBXZSBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIG11bHRpcGxlIG9mIFt1bml0X29mX3RpbWVdIHRoYXQgbmVlZHMgdG8gYmVcbiAgICAgICAgICAgYWRkZWQgdG8gW3N1bV90XS4gRHVlIHRvIHJvdW5kaW5nLCB0aGlzIGNhbiBiZSBvZmYgYnkgb25lICh3ZSd2ZSBuZXZlciBzZWVuIGFcbiAgICAgICAgICAgY2FzZSBvZmYgYnkgdHdvIG9yIG1vcmUpLCBzbyB3ZSByZS1jb21wdXRlIHRoZSByZW1haW5kZXIgYW5kIGNvcnJlY3QgaWZcbiAgICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gRmxvYXQucm91bmRfZG93biAocmVtX3QgLy8gdW5pdF9zcGFuKSBpblxuICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgIGlmIG5ld19yZW1fdCA9IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgIGVsc2UgaWYgbmV3X3JlbV90IDwgemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlIC0uIDEuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dF9tYWduaXR1ZGUgPSBtYWduaXR1ZGUgKy4gMS4gaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGU6bmV4dF9tYWduaXR1ZGUgaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3JlbV90ID0gYWJzX3QgLSBuZXh0X3N1bV90IGluXG4gICAgICAgICAgICBpZiBuZXh0X3JlbV90IDwgemVybyB0aGVuIG1hZ25pdHVkZSBlbHNlIG5leHRfbWFnbml0dWRlKVxuICAgICAgICBpblxuICAgICAgICBpZiBGbG9hdC4oIDw9ICkgbWFnbml0dWRlIDAuXG4gICAgICAgIHRoZW4gXCJcIiwgc3VtX3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgICBJbnQ2My50b19zdHJpbmcgKEludDYzLm9mX2Zsb2F0IG1hZ25pdHVkZSlcbiAgICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIHN0cmluZywgbmV3X3N1bV90KVxuICAgICAgOztcblxuICAgICAgbGV0IGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHQgPSBGbG9hdC5sb2cxMCAodG9fc2VjIHQpXG5cbiAgICAgICgqIFRoZSBmaW5hbCBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBuZWVkcyB0byBiZSBwcmludGVkIHdpdGggZW5vdWdoIGRpZ2l0cyB0b1xuICAgICAgICAgcm91bmQtdHJpcCB0aGUgd2hvbGUgc3BhbiAod2hpY2ggaXMgbWludXRlcyBvciBncmVhdGVyKTsgdGhpcyBjYW4gYmVcbiAgICAgICAgIHNpZ25pZmljYW50bHkgZmV3ZXIgZGlnaXRzIHRoYW4gd291bGQgYmUgbmVlZGVkIGZvciB0aGUgc2Vjb25kcy1vci1zbWFsbGVyXG4gICAgICAgICByZW1haW5kZXIgaXRzZWxmLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+c3VtX3QgfmFic190ID1cbiAgICAgICAgaWYgc3VtX3QgPj0gYWJzX3RcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHJlbV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcmVtX3QgLy8gdW5pdF9zcGFuIGluXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgICAgaWYgYWJzIHJlbV90IDw9IGFicyBuZXdfcmVtX3RcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgPVxuICAgICAgICAgICAgICBGbG9hdC5pcm91bmRfZG93bl9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHJlbV90KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBoYWxmX3VscCA9IChhYnNfdCAtIHByZXYgYWJzX3QpIC8gMi4gaW5cbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXQgPVxuICAgICAgICAgICAgICAoKiBUaGlzIHdvcmtzIG91dCB0byByb3VuZGluZyBkb3duLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgZXhhY3QgaW50ZWdlcnMsXG4gICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkZWNyZW1lbnRlZC4gVGhpcyBtYWtlcyBzdXJlIHdlIGFsd2F5cyBzdG9wIGF0IGEgZGlnaXQgd2l0aFxuICAgICAgICAgICAgICAgICBzdHJpY3RseSBtb3JlIHByZWNpc2lvbiB0aGFuIGhhbGYgdGhlIFVMUC4gKilcbiAgICAgICAgICAgICAgSW50LnByZWQgKEZsb2F0Lmlyb3VuZF91cF9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIGhhbGZfdWxwKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0cyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIDEgKyBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgLSBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICAgIHNwcmludGYgXCIlLipnXCIgbnVtYmVyX29mX2RpZ2l0cyBtYWduaXR1ZGUgXiBzdWZmaXgpKVxuICAgICAgOztcblxuICAgICAgKCogVGhpcyBoZWxwZXIgYXZvaWRzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24sIGJlY2F1c2UgZm9yIG91ciB1c2UgYmVsb3csIGl0IGlzXG4gICAgICAgICBjb21tb24gdG8gaGF2ZSBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYmUgZW1wdHkuIEN1cnJlbnRseSAoMjAxOC0wMiksIHRoZVxuICAgICAgICAgYnVpbHQtaW4gW15dIGFsbG9jYXRlcyBldmVuIHdoZW4gYXBwZW5kaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4gKilcbiAgICAgIGxldCAoIF4/ICkgeCB5ID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHggdGhlbiB5IGVsc2UgaWYgU3RyaW5nLmlzX2VtcHR5IHkgdGhlbiB4IGVsc2UgeCBeIHlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBmbG9hdCA9IHRvX2Zsb2F0IHQgaW5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZmxvYXQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAoKiBXZSBwcmludCBzcGVjaWZpYyBzcGVjaWFsIHN0cmluZ3MgZm9yIG5vbi1maW5pdGUgZmxvYXRzICopXG4gICAgICAgICAgICBGbG9hdC5pc19uYW4gZmxvYXRcbiAgICAgICAgICB0aGVuIFwiTkFOc1wiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC5pc19uZWdhdGl2ZSBmbG9hdFxuICAgICAgICAgIHRoZW4gXCItSU5Gc1wiXG4gICAgICAgICAgZWxzZSBcIklORnNcIlxuICAgICAgICBlbHNlIGlmIHQgPSB6ZXJvXG4gICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgdCBpblxuICAgICAgICAgIGxldCBhYnNfdCA9IGFicyB0IGluXG4gICAgICAgICAgbGV0IHNpZ24gPSBpZiB0IDwgemVybyB0aGVuIFwiLVwiIGVsc2UgXCJcIiBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGVfc3RyaW5nID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZSB3aXRoXG4gICAgICAgICAgICAoKiBXZSBjYW4gdXNlIG5vcm1hbCBmbG9hdCBub3RhdGlvbiBmb3Igc2Vjb25kcyBhbmQgc3ViLXNlY29uZCB1bml0cywgdGhleSBhcmVcbiAgICAgICAgICAgICAgIHJlYWRhYmxlIHdpdGggYSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBNaWxsaXNlY29uZCB8IFNlY29uZCAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpOYW5vc2Vjb25kXG4gICAgICAgICAgICAoKiBGb3IgbGFyZ2UgZW5vdWdoIHZhbHVlcyB0aGF0IHRoZSBVTFAgaXMgYSBkYXkgb3IgbW9yZSwgd2UgY2FuIHVzZSBmbG9hdFxuICAgICAgICAgICAgICAgbm90YXRpb24gYmVjYXVzZSB3ZSBhcmUgZXhwcmVzc2luZyBhIHNpbmdsZSwgdmVyeSBsYXJnZSBpbnRlZ2VyLiAqKVxuICAgICAgICAgICAgfCBEYXkgd2hlbiBuZXh0IGFic190IC0gYWJzX3QgPj0gZGF5IC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOkRheVxuICAgICAgICAgICAgKCogRm9yIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbiwgd2UgbmVlZCB0byB1c2UgaW50ZWdlciB1bml0cyBvZiBkYXlzLCBob3VycyxcbiAgICAgICAgICAgICAgIGFuZC9vciBtaW51dGVzLCBiZWNhdXNlIHRob3NlIHVuaXRzIGFyZSBub3QgcmVhZGFibGUgYXMgZGVjaW1hbHMsIGFuZCB3ZVxuICAgICAgICAgICAgICAgdGFjayBvbiBhIGRlY2ltYWwgcmVtYWluZGVyIG9mIGEgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgaWYgbmVjZXNzYXJ5LiAqKVxuICAgICAgICAgICAgfCBNaW51dGUgfCBIb3VyIHwgRGF5IC0+XG4gICAgICAgICAgICAgIGxldCBzdW1fdCA9IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IGRheV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgRGF5IGluXG4gICAgICAgICAgICAgIGxldCBob3VyX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBIb3VyIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IE1pbnV0ZSBpblxuICAgICAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID0gdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5hYnNfdCB+c3VtX3QgaW5cbiAgICAgICAgICAgICAgZGF5X3N0cmluZyBePyBob3VyX3N0cmluZyBePyBtaW51dGVfc3RyaW5nIF4/IGZsb2F0X3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2lnbiBePyBtYWduaXR1ZGVfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgcylcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3Bhbi5TdGFibGUuVjMudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WM1xuXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0ID0gdG9fZmxvYXRcblxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBGbG9hdC5nZW5faW5jbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICgqIFRlY2huaWNhbGx5IGV4Y2x1c2l2ZSByYXRoZXIgdGhhbiBpbmNsdXNpdmUsIGJ1dCBvdGhlcndpc2Ugc2F0aXNmaWVzIHRoZSBjb250cmFjdCB0b1xuICAgICB3aXRoaW4gMXVscCBvZiB0aGUgZ2l2ZW4gYm91bmRzLiAqKVxuICBGbG9hdC5nZW5fdW5pZm9ybV9leGNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICgqIFdlIGdlbmVyYXRlIHNwYW5zIHVwIHRvIChzbGlnaHRseSBtb3JlIHRoYW4pIGEgbWlsbGVuaXVtLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4gVGhpc1xuICAgICBpcyBiYXNlZCBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBpbiB3aGljaCB5ZWFycyBhdmVyYWdlIDM2NS4yNDI1IGRheXMgd2hlblxuICAgICBhY2NvdW50aW5nIGZvciBsZWFwIGRheXMuIENvdmVyaW5nIGEgdHdvLW1pbGxlbml1bSBzcGFuIGlzIG1vcmUgdGhhbiBlbm91Z2ggZm9yIG1vc3RcbiAgICAgcHJhY3RpY2FsIHB1cnBvc2VzLCBjZXJ0YWlubHkgbW9yZSB0aGFuIGVub3VnaCB0byBjb3ZlciB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZlxuICAgICBbU3Bhbl9uc10sIGFuZCByZXN1bHRzIGluIGZpbml0ZSBzcGFucyBhbmQgdGltZXMgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC5cblxuICAgICBXZSBnZW5lcmF0ZSBieSBmaWx0ZXJpbmcgdGhlIGRlZmF1bHQgZ2VuZXJhdG9yIHNvIHRoYXQgc3BhbnMgYXJlIHN0aWxsIHNrZXdlZCB0b3dhcmRcbiAgICAgc21hbGwgdmFsdWVzLCBldmVuIHRob3VnaCB0aGUgYm91bmRzIGFyZSBsYXJnZS4gKilcbiAgbGV0IG1pbGxlbml1bSA9IG9mX2RheSAoRmxvYXQucm91bmRfdXAgKDM2NS4yNDI1ICouIDEwMDAuKSkgaW5cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOihmdW4gdCAtPlxuICAgIG5lZyBtaWxsZW5pdW0gPD0gdCAmJiB0IDw9IG1pbGxlbml1bSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuU3BhblwiXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBzcGFucyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb20gMTA4LjA3XG4gICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZCBwcmV0dHlcbiAgICAgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWQgZnJvbVxuICAgICByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lXG4gIGxldCBwYXJzZV9zdWZmaXggPSBTdGFibGUuVjMuT2Zfc3RyaW5nLnBhcnNlX3N1ZmZpeFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcblxuKCogQ3JlYXRlIGFuIGFic3RyYWN0IHR5cGUgZm9yIE9mZGF5IHRvIHByZXZlbnQgdXMgZnJvbSBjb25mdXNpbmcgaXQgd2l0aFxuICAgb3RoZXIgZmxvYXRzLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0XG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cbiAgICAgIGVuZCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9pbnQ2M19ucyB0XG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuXG4gICAgICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBcbiAgICAgICAgICAgIHRoZW4gMVxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDFfMDAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXzAwMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBfMDAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIHNwYW4gcGFydCBtYWduaXR1ZGVzIGFyZSBhbHdheXMgPCAxMDBfMDAwICopXG5cbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBhc3NlcnQgKGJpbGxpb250aHMgPj0gMCAmJiBiaWxsaW9udGhzIDw9IDk5OV85OTlfOTk5KTtcbiAgICAgICAgICAgIGlmIGJpbGxpb250aHMgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA3XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA2XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9jaGFyIGJ1ZiB+cG9zIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyO1xuICAgICAgICAgICAgcG9zICsgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfMl9jaGFycyBidWYgfnBvcyBjaGFyMSBjaGFyMiA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXIxO1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgKHBvcyArIDEpIGNoYXIyO1xuICAgICAgICAgICAgcG9zICsgMlxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2MyBidWYgfnBvcyB+ZGlnaXRzIChJbnQ2My5vZl9pbnQgaW50KTtcbiAgICAgICAgICAgIHBvcyArIGRpZ2l0c1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmRlY2ltYWxzIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2M1xuICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICB+ZGlnaXRzOmRlY2ltYWxzXG4gICAgICAgICAgICAgIChJbnQ2My5vZl9pbnQgKGJpbGxpb250aHMgLyBJbnQucG93IDEwICg5IC0gZGVjaW1hbHMpKSk7XG4gICAgICAgICAgICBwb3MgKyBkZWNpbWFsc1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHMgaW50IHN1ZmZpeCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50IGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zIHN1ZmZpeCBpblxuICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWxsaXNlY29uZCA9IHRvX2ludDYzX25zIG1pbGxpc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWljcm9zZWNvbmQgPSB0b19pbnQ2M19ucyBtaWNyb3NlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IGludDYzXzYwID0gSW50NjMub2ZfaW50IDYwXG4gICAgICAgICAgbGV0IGludDYzXzI0ID0gSW50NjMub2ZfaW50IDI0XG5cbiAgICAgICAgICAoKiBVbml0cyBvZiBzZWNvbmRzIGFuZCBzbWFsbGVyIGNhbiBiZSB3cml0dGVuIGluIGRlY2ltYWwgbm90YXRpb24gd2l0aG91dFxuICAgICAgICAgICAgIHdvcnJ5aW5nIGFib3V0IG5vbi1wb3dlci1vZi10ZW4gZmFjdG9ycy4gKilcbiAgICAgICAgICBtb2R1bGUgRGVjaW1hbF91bml0ID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IFNlY29uZFxuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIHwgTm9uZVxuICAgICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgICAgICAgbGV0IGNyZWF0ZSB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBzID4gMFxuICAgICAgICAgICAgICB0aGVuIFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gMVxuICAgICAgICAgICAgICB0aGVuIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgaW50ZWdlciB0IH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBzXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgYmlsbGlvbnRocyB0IH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgKiAxXzAwMFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWljcm9zZWNvbmQgKiAxXzAwMF8wMDBcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IDBcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBsZW5ndGggdCB+ZGlnaXRzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfbGVuID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNlY29uZCAtPiBkaWdpdHMgKyAxXG4gICAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTmFub3NlY29uZCAtPiBkaWdpdHMgKyAyXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX2xlbiA9IGlmIGRlY2ltYWxzID4gMCB0aGVuIGRlY2ltYWxzICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgZGlnaXRzX2xlbiArIGRlY2ltYWxzX2xlblxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zID1cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHdyaXRlX2NoYXIgYnVmIH5wb3MgJ3MnXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbScgJ3MnXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAndScgJ3MnXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICduJyAncydcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlIHQgYnVmIH5wb3MgfmludGVnZXIgfmRpZ2l0cyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgaW50ZWdlciB+ZGlnaXRzIGluXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWNpbWFscyA9IDBcbiAgICAgICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3MgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5iaWxsaW9udGhzIH5kZWNpbWFscylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmRcblxuICAgICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgICBpZiBlcXVhbCB0IHplcm9cbiAgICAgICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID0gdCA8IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My4oIC8gKSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgICBJbnQ2My5yZW0gKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My5hYnMgc2Vjb25kcyBpblxuICAgICAgICAgICAgICBsZXQgbnMgPSBJbnQuYWJzIG5zIGluXG4gICAgICAgICAgICAgIGxldCBzID0gSW50NjMucmVtIHNlY29uZHMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlcyA9IEludDYzLiggLyApIHNlY29uZHMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IG0gPSBJbnQ2My5yZW0gbWludXRlcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBob3VycyA9IEludDYzLiggLyApIG1pbnV0ZXMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IGggPSBJbnQ2My5yZW0gaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgZCA9IEludDYzLiggLyApIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfaCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6aCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX20gPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOm0gaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdCA9IERlY2ltYWxfdW5pdC5jcmVhdGUgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfaW50ZWdlciA9IERlY2ltYWxfdW5pdC5pbnRlZ2VyIGRlY2ltYWxfdW5pdCB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9iaWxsaW9udGhzID0gRGVjaW1hbF91bml0LmJpbGxpb250aHMgZGVjaW1hbF91bml0IH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHN0cmluZ19sZW5ndGggPVxuICAgICAgICAgICAgICAgIGxldCBzaWduX2xlbiA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZF9sZW4gPSBpZiBkaWdpdHNfb2ZfZCA+IDAgdGhlbiBkaWdpdHNfb2ZfZCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGhfbGVuID0gaWYgZGlnaXRzX29mX2ggPiAwIHRoZW4gZGlnaXRzX29mX2ggKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBtX2xlbiA9IGlmIGRpZ2l0c19vZl9tID4gMCB0aGVuIGRpZ2l0c19vZl9tICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2xlbiA9XG4gICAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgc2lnbl9sZW4gKyBkX2xlbiArIGhfbGVuICsgbV9sZW4gKyBkZWNpbWFsX3VuaXRfbGVuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAoc3RyaW5nX2xlbmd0aCA+IDApO1xuICAgICAgICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIHN0cmluZ19sZW5ndGggaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gd3JpdGVfY2hhciBidWYgfnBvcyAnLScgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9kIGQgJ2QnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfaCBoICdoJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX20gbSAnbScgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgRGVjaW1hbF91bml0LndyaXRlXG4gICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgfmludGVnZXI6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChwb3MgPSBzdHJpbmdfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYpXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcblxuICAgICAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgKCogV2UgZG8gY29tcHV0YXRpb25zIHVzaW5nIG5lZ2F0aXZlIG51bWJlcnMgZXZlcnl3aGVyZSBhbmQgdGVzdCBhZ2FpbnN0XG4gICAgICAgICAgICAgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1pbl92YWx1ZV0gcmF0aGVyIHRoYW4gdXNpbmcgcG9zaXRpdmUgbnVtYmVyc1xuICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIGFnYWluc3QgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1heF92YWx1ZV0gYmVjYXVzZSB0aGVcbiAgICAgICAgICAgICBuZWdhdGl2ZSBpbnRlZ2VyIHJhbmdlIGlzIG9uZSB3aWRlciB0aGFuIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIHJhbmdlXG4gICAgICAgICAgICAgKC0yKio2MyB2cyAyKio2My0xKSwgYW5kIHdlIG5lZWQgdGhhdCB0byBiZSBhYmxlIHRvIGhhbmRsZSBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICBuaWNlbHkuICopXG5cbiAgICAgICAgICBsZXQgaW50NjNfMTAgPSBJbnQ2My5vZl9pbnQgMTBcbiAgICAgICAgICBsZXQgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvdyA9IEludDYzLihtaW5fdmFsdWUgLyBpbnQ2M18xMClcblxuICAgICAgICAgIGxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5vZl9zdHJpbmc6IGludmFsaWQgc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgOiBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAocmVhc29uIDogc3RyaW5nKV1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogQXNzdW1lcyB4IGFuZCB5IGFyZSBib3RoIG5vbnBvc2l0aXZlICopXG4gICAgICAgICAgbGV0IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIHggeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgc3VtID0geCArIHkgaW5cbiAgICAgICAgICAgIGlmIHN1bSA+IHhcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIHN1bVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgYWRkX25lZ19kaWdpdCB+c3RyaW5nIGludDYzIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChDaGFyLmdldF9kaWdpdF9leG4gY2hhcikgaW5cbiAgICAgICAgICAgIGlmIGludDYzIDwgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgKGludDYzICogaW50NjNfMTApICgtZGlnaXQpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBtaW5fZmFjdG9yX29mIHNwYW4gPSBJbnQ2My4oIC8gKSBJbnQ2My5taW5fdmFsdWUgKHRvX2ludDYzX25zIHNwYW4pXG4gICAgICAgICAgbGV0IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBkYXlcbiAgICAgICAgICBsZXQgbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBob3VyXG4gICAgICAgICAgbGV0IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaW51dGVcbiAgICAgICAgICBsZXQgbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIHNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWxsaXNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWNyb3NlY29uZFxuICAgICAgICAgIGxldCBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG5hbm9zZWNvbmRcblxuICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgICAgICAgIHwgRGF5IC0+IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IEhvdXIgLT4gbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbnV0ZSAtPiBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBTZWNvbmQgLT4gbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IHNjYWxlID0gdG9faW50NjNfbnMgKG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpIGluXG4gICAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93ID1cbiAgICAgICAgICAgICAgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBJbnQ2My4oIDwgKSBuZWdfaW50ZWdlciBtaW5fd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlcl9ucyA9IEludDYzLiggKiApIG5lZ19pbnRlZ2VyIHNjYWxlIGluXG4gICAgICAgICAgICBsZXQgZnJhY3Rpb25fcG9zID0gZGVjaW1hbF9wb3MgKyAxIGluXG4gICAgICAgICAgICBpZiBmcmFjdGlvbl9wb3MgPj0gZW5kX3Bvc1xuICAgICAgICAgICAgdGhlbiBuZWdfaW50ZWdlcl9uc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX25zID1cbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy5yZWFkX2ludDYzX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfnBvczpmcmFjdGlvbl9wb3NcbiAgICAgICAgICAgICAgICAgIH5zY2FsZVxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOihlbmRfcG9zIC0gZnJhY3Rpb25fcG9zKVxuICAgICAgICAgICAgICAgICAgfmFsbG93X3VuZGVyc2NvcmU6dHJ1ZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXM6cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgbmVnX2ludGVnZXJfbnMgKEludDYzLiggfi0gKSBkZWNpbWFsX25zKSlcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBuZWdfbnMgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IHN0cmluZ1wiO1xuICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgfCAnKycgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmcgOiBEaWdpdF9zdHJpbmdfaGVscGVycy5Sb3VuZC50ID1cbiAgICAgICAgICAgICAgKCogVWx0aW1hdGVseSwgd2UgYWx3YXlzIHJvdW5kIHBhcnNlZCBzcGFucyB0b3dhcmRzIHBvc2l0aXZlIGluZmluaXR5IHdoZW5cbiAgICAgICAgICAgICAgICAgdGhlIG5lYXJlc3Qgcm91bmQgbnMgYXJlIGVxdWlkaXN0YW50LiBGb3IgZXhhbXBsZSwgXCIxLjVuc1wiIGlzIHJlYWQgYXNcbiAgICAgICAgICAgICAgICAgMi4wbnMsIGFuZCBcIi0xLjVuc1wiIGlzIHJlYWQgYXMgLTFucy4gU2luY2Ugd2UgcmVhZCBhYnNvbHV0ZSB2YWx1ZXMgYmVmb3JlXG4gICAgICAgICAgICAgICAgIGFwcGx5aW5nIHRoZSBzaWduLCB3ZSBtdXN0IGNob29zZSBvdXIgcm91bmRpbmcgZGlyZWN0aW9uIGJhc2VkIG9uIHRoZVxuICAgICAgICAgICAgICAgICBzaWduLiBSb3VuZGluZyBkZWNpbWFsIHZhbHVlcyBoYXBwZW5zIGJlZm9yZSBuZWdhdGluZyB0aGVpciBtYWduaXR1ZGUuICopXG4gICAgICAgICAgICAgIG1hdGNoIGlzX25lZ2F0aXZlIHdpdGhcbiAgICAgICAgICAgICAgfCBmYWxzZSAtPiBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgICAgfCB0cnVlIC0+IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIExvb3Agb3ZlciBwYXJ0cywgbGlrZSBcIjVtXCIgaW4gXCIxaDVtMzBzXCIgKilcbiAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gZG9cbiAgICAgICAgICAgICAgbGV0IGhhc19kaWdpdCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICBsZXQgbmVnX2ludGVnZXIgPVxuICAgICAgICAgICAgICAgIGxldCBpID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RpZ2l0cyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGlnaXRzIGRvXG4gICAgICAgICAgICAgICAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBpIDo9IGFkZF9uZWdfZGlnaXQgfnN0cmluZyAhaSBjO1xuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RpZ2l0cyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAhaVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmICFwb3MgPCBsZW4gJiYgQ2hhci5lcXVhbCAnLicgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zKVxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RlY2ltYWxzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kZWNpbWFscyBkb1xuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGVjaW1hbHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICAgICBsZXQgZW5kX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgbm90ICFoYXNfZGlnaXRcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIGRpZ2l0cyBiZWZvcmUgdW5pdCBzdWZmaXhcIjtcbiAgICAgICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgICAgICAgICAgICBpZiAhcG9zICsgMSA8IGxlbiAmJiBDaGFyLmVxdWFsICdzJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICghcG9zICsgMSkpXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICd1JyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICduJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAhcG9zIDwgbGVuXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdkJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgRGF5XG4gICAgICAgICAgICAgICAgICB8ICdoJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgSG91clxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIFNlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gdW5pdCBzdWZmaXggYWZ0ZXIgZGlnaXRzXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19uYW5vc19vZl9wYXJ0ID1cbiAgICAgICAgICAgICAgICBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG5lZ19ucyA6PSBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAhbmVnX25zIG5lZ19uYW5vc19vZl9wYXJ0XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgaWYgaXNfbmVnYXRpdmVcbiAgICAgICAgICAgICAgdGhlbiAhbmVnX25zXG4gICAgICAgICAgICAgIGVsc2UgaWYgSW50NjMuKCA9ICkgIW5lZ19ucyBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiXG4gICAgICAgICAgICAgIGVsc2UgSW50NjMuKCB+LSApICFuZWdfbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvZl9pbnQ2M19ucyBuc1xuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZV9ucy5TcGFuLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQwXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQwKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nID0gU3RhYmxlLlYyLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0YWJsZS5WMi5vZl9zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxubGV0IHRfc2V4cF9ncmFtbWFyID0gU3RhYmxlLlYyLnRfc2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIEZ1bmN0aW9ucyByZXF1aXJlZCBieSBbUm9idXN0bHlfY29tcGFyYWJsZV06IGFsbG93cyBmb3IgW3JvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZV1cbiAgIGdyYW51bGFyaXR5LlxuXG4gICBBIG1pY3Jvc2Vjb25kIGlzIGEgcmVhc29uYWJsZSBncmFudWxhcml0eSBiZWNhdXNlIHRoZXJlIGlzIHZlcnkgbGl0dGxlIG5ldHdvcmtcbiAgIGFjdGl2aXR5IHRoYXQgY2FuIGJlIG1lYXN1cmVkIHRvIHN1Yi1taWNyb3NlY29uZCByZXNvbHV0aW9uLiAqKVxubGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IG1pY3Jvc2Vjb25kXG5sZXQgKCA+PS4gKSB0IHUgPSB0ID49IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD0uICkgdCB1ID0gdCA8PSBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoID0uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA8PSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCAoID4uICkgdCB1ID0gdCA+IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPC4gKSB0IHUgPSB0IDwgSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8Pi4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgcm9idXN0bHlfY29tcGFyZSB0IHUgPSBpZiB0IDwuIHUgdGhlbiAtMSBlbHNlIGlmIHQgPi4gdSB0aGVuIDEgZWxzZSAwXG5cbigqIFdlIGRvbid0IGp1c3QgY29udmVydCB0byBbVGltZS5TcGFuLnRdIGFuZCB1c2UgdGhlIGNvbnZlcnNpb24gdGhlcmUgYmVjYXVzZSBvdXJcbiAgIFt0b19zcGFuXSBjb252ZXJzaW9uIGlzIGxpbWl0ZWQgdG8gbWljcm9zZWNvbmQgcHJlY2lzaW9uLiAqKVxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgc2luY2VfdW5peF9lcG9jaCAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gb2ZfaW50NjNfbnNcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPVxuICBJbnQ2My5yYW5kb20gP3N0YXRlIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbiAgLSBJbnQ2My5yYW5kb20gP3N0YXRlIChuZWcgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG47O1xuXG5sZXQgcmFuZG9taXplIHQgfnBlcmNlbnQgPSBTcGFuX2hlbHBlcnMucmFuZG9taXplIHQgfnBlcmNlbnQgfnNjYWxlXG5cbmxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbjs7XG5cbmxldCBnZW5faW5jbCA9IEludDYzLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEludDYzLmdlbl91bmlmb3JtX2luY2xcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBtb2R1bGVfbmFtZVxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZClcblxudHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTdGFibGUuVjIuY29tcGFyYXRvclxuICBlbmQpXG5cbigqIHJlLWluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYW5kIGl0cyBjb21wYXJpc29ucyB0byBzaGFkb3cgdGhlXG4gICB1bi1pbmxpbmVhYmxlIG9uZXMgZnJvbSBbQ29tcGFyYWJsZV0gKilcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBULlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0ID0gU3Bhbl9mbG9hdC5vZl9zZWMgKHRvX3NlYyB0KVxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBzID0gb2Zfc2VjIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxubGV0IGhhbGZfbWljcm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgNTAwXG5sZXQgbmVhcmVzdF9taWNyb3NlY29uZCB0ID0gSW50NjMuKCh0b19pbnQ2M19ucyB0ICsgaGFsZl9taWNyb3NlY29uZCkgLyUgb2ZfaW50IDEwMDApXG5cbmxldFtAY29sZF0gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlNwYW4udCBleGNlZWRzIGxpbWl0c1wiXG4gICAgICAgICh0IDogdClcbiAgICAgICAgKG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdClcbiAgICAgICAgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdCldXG47O1xuXG5sZXQgY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgaWYgdCA8IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIHx8IHQgPiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0XG4gIGVsc2UgdFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgU3Bhbl9mbG9hdC5vZl91cyAoSW50NjMudG9fZmxvYXQgKG5lYXJlc3RfbWljcm9zZWNvbmQgKGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCkpKVxuOztcblxubGV0IG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHMgPVxuICBpZiBTcGFuX2Zsb2F0LiggPiApIHMgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBTcGFuX2Zsb2F0LiggPCApIHMgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMuU3BhbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3BhblwiXG4gICAgICBzXG4gICAgICBbJXNleHBfb2Y6IFNwYW5fZmxvYXQudF07XG4gICgqIFVzaW5nIFtUaW1lLlNwYW4udG9fc2VjXSAoYmVpbmcgdGhlIGlkZW50aXR5KSBzbyB0aGF0XG4gICAgIHdlIG1ha2UgZG9uJ3QgYXBwbHkgdG9vIG1hbnkgY29udmVyc2lvblxuICAgICAtIFRvbyBtYW55IDogYFtTcGFuLnRdIC0+IFthXSAtPiBbdF1gXG4gICAgIC0gT25seSBPbmUgOiBgW1NwYW4udF09PVthXSAtPiBbdF1gLiAqKVxuICBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gKFNwYW5fZmxvYXQudG9fc2VjIHMpXG47O1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1heF92YWx1ZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgb2ZfcGFydHMgPSBvZl9wYXJ0c1xuICBsZXQgdG9fcGFydHMgPSB0b19wYXJ0c1xuZW5kXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IHRvX3NwYW4gPSB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFNwYW4uU3RhYmxlLlYyIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTcGFuLlN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfdW5pdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBmdW4gdCB+dW5pdCAtPlxuICAgICAgICBpZiBTcGFuLiggPCApIHQgc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA8ICkgc3RhcnRfb2ZfbmV4dF9kYXkgdFxuICAgICAgICB0aGVuIFwiSW5jb3JyZWN0IGRheVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaXh0eSA9ICE2MCBpblxuICAgICAgICAgIGxldCB0aG91c2FuZCA9ICExMDAwIGluXG4gICAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyB0IGluXG4gICAgICAgICAgbGV0IHVzID0gbnMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBucyA9IG5zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG1zID0gdXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCB1cyA9IHVzIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IHMgPSBtcyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG1zID0gbXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IHMgLyBzaXh0eSBpblxuICAgICAgICAgIGxldCBzID0gcyBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBoID0gbSAvIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IG0gbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgdW5pdCA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgKGBOYW5vc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYFNlY29uZCkgYXMgdW5pdCAtPiB1bml0XG4gICAgICAgICAgICB8IGBNaW51dGVfb3JfbGVzcyAtPlxuICAgICAgICAgICAgICBpZiBucyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiB1cyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBgTWludXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCBgTWludXRlIC0+IDVcbiAgICAgICAgICAgIHwgYFNlY29uZCAtPiA4XG4gICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAxMlxuICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gMTVcbiAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gMThcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MCBoO1xuICAgICAgICAgIEJ5dGVzLnNldCBzdHIgMiAnOic7XG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MyBtO1xuICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgfCBgTWludXRlIC0+ICgpXG4gICAgICAgICAgIHwgKGBTZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgNSAnOic7XG4gICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6NiBzO1xuICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgfCBgU2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgIHwgKGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA4ICcuJztcbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczo5IG1zO1xuICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgfCAoYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxMiB1cztcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTUgbnMpKSkpO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6c3RyKVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3MgfnVudGlsID1cbiAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICBsZXQgZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBwb3MgPSByZWYgcG9zIGluXG4gICAgICAoKiByZWFkIHVwIHRvIDEwIGRpZ2l0czsgc3RvcmUgdGhlIGZpcnN0IDksIHVzZSB0aGUgMTB0aCB0byByb3VuZCAqKVxuICAgICAgd2hpbGUgIXBvcyA8IHVudGlsICYmICFudW1fZGlnaXRzIDwgMTAgZG9cbiAgICAgICAgbGV0IGMgPSBzdHJpbmcuWyFwb3NdIGluXG4gICAgICAgIGlmIENoYXIuaXNfZGlnaXQgY1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIG51bV9kaWdpdHM7XG4gICAgICAgICAgaWYgIW51bV9kaWdpdHMgPCAxMFxuICAgICAgICAgIHRoZW4gZGlnaXRzIDo9ICghZGlnaXRzICogMTApICsgQ2hhci5nZXRfZGlnaXRfZXhuIGNcbiAgICAgICAgICBlbHNlIGlmIENoYXIuZ2V0X2RpZ2l0X2V4biBjID49IDVcbiAgICAgICAgICB0aGVuIGluY3IgZGlnaXRzXG4gICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgIGluY3IgcG9zXG4gICAgICBkb25lO1xuICAgICAgKCogaWYgdGhlcmUgYXJlIG1pc3NpbmcgZGlnaXRzLCBhZGQgemVyb2VzICopXG4gICAgICBpZiAhbnVtX2RpZ2l0cyA8IDkgdGhlbiBkaWdpdHMgOj0gIWRpZ2l0cyAqIEludC5wb3cgMTAgKDkgLSAhbnVtX2RpZ2l0cyk7XG4gICAgICAhZGlnaXRzXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IG5hbm9zZWNvbmRzID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zOihzdWJzZWNfcG9zICsgMSkgfnVudGlsOihzdWJzZWNfcG9zICsgc3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgbmFub3NlY29uZHMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLnNlY29uZCBzZWMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLm1pbnV0ZSBtaW4pXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLmhvdXIgaHIpXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHN0cmluZyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA6IHQgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJleHBlY3RlZCBhbiBhdG9tXCIgc2V4cFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdG9fc3RyaW5nICh0IDogdCkgPSB0b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE5hbm9zZWNvbmRcbiAgICBsZXQgc2V4cF9vZl90ICh0IDogdCkgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICAgIGxldCB0b19pbnQ2MyB0ID0gU3Bhbl9ucy5TdGFibGUuVjIudG9faW50NjMgdFxuICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbl9ucy5TdGFibGUuVjIub2ZfaW50NjNfZXhuIHQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBTdGFibGUuVjEgOlxuICAgIENvbXBhcmF0b3IuU1xuICB3aXRoIHR5cGUgdCA6PSB0XG4gICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RhYmxlLlYxIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGluY2x1ZGUgKFN0YWJsZS5WMSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuT2ZkYXlcIlxuICAgIGxldCBoYXNoID0gU3Bhbi5oYXNoXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gU3Bhbi5oYXNoX2ZvbGRfdFxuICBlbmQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdGFibGUuVjEudF9zZXhwX2dyYW1tYXJcbmxldCB0b19taWNyb3NlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pY3Jvc2Vjb25kXG5sZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWxsaXNlY29uZFxubGV0IHRvX3NlY19zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YFNlY29uZFxubGV0IHRvX3N0cmluZ190cmltbWVkIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaW51dGVfb3JfbGVzc1xuXG5sZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gIHRyeVxuICAgIE9mZGF5X2hlbHBlcnMucGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mOlN0YWJsZS5WMS5jcmVhdGVfZnJvbV9wYXJzZWRcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6IGNhbm5vdCBwYXJzZSBzdHJpbmdcIlxuICAgICAgICAgIH5fOihTdHJpbmcuc3VibyBzdHIgP3BvcyA/bGVuIDogc3RyaW5nKVxuICAgICAgICAgIH5fOihleG4gOiBleG4pXVxuOztcblxubGV0IGV2ZXJ5ID1cbiAgbGV0IHJlYyBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2MgPVxuICAgICgqIEFzc3VtZXMgW3NwYW5dLCBbc3RhcnRdLCBhbmQgW3N0b3BdIGFyZSB2YWxpZCBvZmRheXMuIEFzc3VtZXMgW3N0YXJ0IDwgc3RvcF0uXG4gICAgICAgQXNzdW1lcyBbc3BhbiA+IDBdLiAqKVxuICAgIGxldCBhY2MgPSBzdGFydCA6OiBhY2MgaW5cbiAgICBsZXQgc3RhcnQgPSBTcGFuLiggKyApIHN0YXJ0IHNwYW4gaW5cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3AgKCogY2Fubm90IG92ZXJmbG93ICopXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjY1xuICBpblxuICAoKiBpbnRlcm5hbCBbZXZlcnldIG5hbWVkIHRvIHNob3cgdXAgaW4gc3RhY2sgdHJhY2VzICopXG4gIGxldCBldmVyeSBzcGFuIH5zdGFydCB+c3RvcCA9XG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBbc3RhcnRdID4gW3N0b3BdXCIgKHN0YXJ0IDogdCkgKHN0b3AgOiB0KV1cbiAgICBlbHNlIGlmIFNwYW4uKCA8PSApIHNwYW4gU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggbmVnYXRpdmUgc3BhblwiIH5fOihzcGFuIDogU3Bhbi50KV1cbiAgICBlbHNlIGlmIGlzX2ludmFsaWQgc3BhblxuICAgIHRoZW4gT2sgWyBzdGFydCBdXG4gICAgZWxzZSBPayAoZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjOltdKVxuICBpblxuICBldmVyeVxuOztcblxubGV0IHNtYWxsX2RpZmYgPVxuICBsZXQgaG91ciA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5ob3VyIGluXG4gIGZ1biBvZmRheTEgb2ZkYXkyIC0+XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBvZmRheTEgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTEpIGluXG4gICAgbGV0IG9mZGF5MiA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICBsZXQgZGlmZiA9IG9mZGF5MSAtIG9mZGF5MiBpblxuICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgbGV0IGQxID0gSW50NjMucmVtIGRpZmYgaG91ciBpblxuICAgICgqICBkMiBpcyBpbiAoMDtob3VyKSAqKVxuICAgIGxldCBkMiA9IEludDYzLnJlbSAoZDEgKyBob3VyKSBob3VyIGluXG4gICAgbGV0IGQgPSBpZiBkMiA+IGhvdXIgLyBJbnQ2My5vZl9pbnQgMiB0aGVuIGQyIC0gaG91ciBlbHNlIGQyIGluXG4gICAgU3Bhbi5vZl9pbnQ2M19ucyBkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJzbWFsbF9kaWZmXCIgPVxuICBsZXQgdGVzdCB4IHkgPVxuICAgIGxldCBkaWZmID0gc21hbGxfZGlmZiB4IHkgaW5cbiAgICBwcmludGYgIVwic21hbGxfZGlmZiAlcyAlcyA9ICVzXFxuXCIgKHRvX3N0cmluZyB4KSAodG9fc3RyaW5nIHkpIChTcGFuLnRvX3N0cmluZyBkaWZmKVxuICBpblxuICBsZXQgZXhhbXBsZXMgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuICh4LCB5KSAtPiBvZl9zdHJpbmcgeCwgb2Zfc3RyaW5nIHkpXG4gICAgICBbIFwiMTI6MDBcIiwgXCIxMjowNVwiOyBcIjEyOjU4XCIsIFwiMTM6MDJcIjsgXCIwMDo1MlwiLCBcIjIzOjE5XCI7IFwiMDA6MDBcIiwgXCIyNDowMFwiIF1cbiAgaW5cbiAgTGlzdC5pdGVyIGV4YW1wbGVzIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgdGVzdCB4IHk7XG4gICAgdGVzdCB5IHgpO1xuICBbJWV4cGVjdFxuICAgIHt8XG4gICAgc21hbGxfZGlmZiAxMjowMDowMC4wMDAwMDAwMDAgMTI6MDU6MDAuMDAwMDAwMDAwID0gLTVtXG4gICAgc21hbGxfZGlmZiAxMjowNTowMC4wMDAwMDAwMDAgMTI6MDA6MDAuMDAwMDAwMDAwID0gNW1cbiAgICBzbWFsbF9kaWZmIDEyOjU4OjAwLjAwMDAwMDAwMCAxMzowMjowMC4wMDAwMDAwMDAgPSAtNG1cbiAgICBzbWFsbF9kaWZmIDEzOjAyOjAwLjAwMDAwMDAwMCAxMjo1ODowMC4wMDAwMDAwMDAgPSA0bVxuICAgIHNtYWxsX2RpZmYgMDA6NTI6MDAuMDAwMDAwMDAwIDIzOjE5OjAwLjAwMDAwMDAwMCA9IC0yN21cbiAgICBzbWFsbF9kaWZmIDIzOjE5OjAwLjAwMDAwMDAwMCAwMDo1MjowMC4wMDAwMDAwMDAgPSAyN21cbiAgICBzbWFsbF9kaWZmIDAwOjAwOjAwLjAwMDAwMDAwMCAyNDowMDowMC4wMDAwMDAwMDAgPSAwc1xuICAgIHNtYWxsX2RpZmYgMjQ6MDA6MDAuMDAwMDAwMDAwIDAwOjAwOjAwLjAwMDAwMDAwMCA9IDBzIHx9XVxuOztcblxubGV0IGdlbl9pbmNsID0gU3Bhbi5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBTcGFuLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIChTcGFuIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmdzICopXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgbm93ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9uc1xuXG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2UgdGhlIFVuaXggZXBvY2ggKDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDKSAqKVxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudCA9IFNwYW4uUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIChTcGFuIDogUXVpY2tjaGVjay5TX3JhbmdlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCBub3cgPSBTcGFuLnNpbmNlX3VuaXhfZXBvY2hcbmxldCBlcXVhbCA9IFNwYW4uZXF1YWxcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBlcG9jaCA9IFNwYW4uemVyb1xubGV0IGFkZCA9IFNwYW4uKCArIClcbmxldCBzdWIgPSBTcGFuLiggLSApXG5sZXQgZGlmZiA9IFNwYW4uKCAtIClcbmxldCBhYnNfZGlmZiB0IHUgPSBTcGFuLmFicyAoZGlmZiB0IHUpXG5sZXQgbWF4ID0gU3Bhbi5tYXhcbmxldCBtaW4gPSBTcGFuLm1pblxubGV0IG5leHQgPSBTcGFuLm5leHRcbmxldCBwcmV2ID0gU3Bhbi5wcmV2XG5sZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0ID0gdFxubGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggcyA9IHNcbmxldCB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IDogSW50NjMudCA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbmxldCBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCBpID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9pbnQ2M19ucyBpKVxubGV0W0Bjb2xkXSBvdmVyZmxvdyAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9uczogb3ZlcmZsb3dcIl1cbmxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPCB0MlxubGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPiB0MlxuXG5sZXQgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oIDwgKSBzdW0geCBlbHNlIFNwYW4uKCA+ICkgc3VtIHhcbjs7XG5cbmxldCBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oID4gKSBkaWZmIHggZWxzZSBTcGFuLiggPCApIGRpZmYgeFxuOztcblxubGV0IGFkZF9leG4geCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gdGhlbiBvdmVyZmxvdyAoKSBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9leG4geCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiB0aGVuIG92ZXJmbG93ICgpIGVsc2UgZGlmZlxuOztcblxubGV0IGFkZF9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmZcbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2UgZGlmZlxuOztcblxubGV0IHRvX2ludF9uc19zaW5jZV9lcG9jaCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnNfc2luY2VfZXBvY2ggdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMudG9faW50X25zX3NpbmNlX2Vwb2NoOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgb2ZfaW50X25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZSA9XG4gIGlmIFRpbWVfZmxvYXQuKCA8ICkgdGltZSBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFRpbWVfZmxvYXQuKCA+ICkgdGltZSBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdGltZVwiXG4gICAgICB0aW1lXG4gICAgICBbJXNleHBfb2Y6IFRpbWVfZmxvYXQuU3RhYmxlLldpdGhfdXRjX3NleHAuVjIudF1cbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdGltZSA9XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdGltZSA9XG4gIGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZTtcbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbCA9XG4gIGZhaWx3aXRoc1xuICAgIH5oZXJlOlslaGVyZV1cbiAgICBcIlRpbWVfbnMubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgIGludGVydmFsXG4gICAgWyVzZXhwX29mOiBTcGFuLnRdXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlbiByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbDtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9IGFkZCBiYXNlIChTcGFuLnNjYWxlX2ludDYzIGludGVydmFsIChTcGFuLmRpdiBiYXNlX3RvX2FmdGVyIGludGVydmFsKSkgaW5cbiAgICBpZiBuZXh0ID4gYWZ0ZXIgfHwgKGNhbl9lcXVhbF9hZnRlciAmJiBuZXh0ID0gYWZ0ZXIpIHRoZW4gbmV4dCBlbHNlIGFkZCBuZXh0IGludGVydmFsKVxuOztcblxubGV0IG5leHRfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYWZ0ZXIgPSBmYWxzZSkgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsXG47O1xuXG5sZXQgcHJldl9tdWx0aXBsZSA/KGNhbl9lcXVhbF9iZWZvcmUgPSBmYWxzZSkgfmJhc2UgfmJlZm9yZSB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsXG4gICAgfmNhbl9lcXVhbF9hZnRlcjoobm90IGNhbl9lcXVhbF9iZWZvcmUpXG4gICAgfmJhc2VcbiAgICB+YWZ0ZXI6KHN1YiBiZWZvcmUgaW50ZXJ2YWwpXG4gICAgfmludGVydmFsXG47O1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9IFNwYW4ucmFuZG9tID9zdGF0ZSAoKVxuXG5tb2R1bGUgVXRjIDogc2lnXG4gIHZhbCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gRGF0ZTAudCAqIFNwYW4udFxuICB2YWwgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiBEYXRlMC50IC0+IFNwYW4udCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogYSByZWNyZWF0aW9uIG9mIHRoZSBzeXN0ZW0gY2FsbCBnbXRpbWUgc3BlY2lhbGl6ZWQgdG8gdGhlIGZpZWxkcyB3ZSBuZWVkIHRoYXQgYWxzb1xuICAgICBkb2Vzbid0IHJlbHkgb24gVW5peC4gKilcbiAgbGV0IHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgKCAhPCApIGkgPSBJbnQ2My5vZl9pbnRfZXhuIGkgaW5cbiAgICBsZXQgKCAhPiApIHQgPSBJbnQ2My50b19pbnRfZXhuIHQgaW5cbiAgICBsZXQgbnNfc2luY2VfZXBvY2ggPSB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IGluXG4gICAgbGV0IG5zX3Blcl9kYXkgPSAhPDg2XzQwMCAqICE8MV8wMDBfMDAwXzAwMCBpblxuICAgIGxldCBhcHByb3hfZGF5c19mcm9tX2Vwb2NoID0gbnNfc2luY2VfZXBvY2ggLyBuc19wZXJfZGF5IGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBpZiBuc19zaW5jZV9lcG9jaCA8ICE8MCAmJiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSA8PiBuc19zaW5jZV9lcG9jaFxuICAgICAgdGhlbiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoIC0gITwxXG4gICAgICBlbHNlIGFwcHJveF9kYXlzX2Zyb21fZXBvY2hcbiAgICBpblxuICAgIGxldCBuc19zaW5jZV9zdGFydF9vZl9kYXkgPSBuc19zaW5jZV9lcG9jaCAtIChuc19wZXJfZGF5ICogZGF5c19mcm9tX2Vwb2NoKSBpblxuICAgIGxldCBkYXRlID1cbiAgICAgIERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoICE+ZGF5c19mcm9tX2Vwb2NoIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIGluXG4gICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gU3Bhbi5vZl9pbnQ2M19ucyBuc19zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID1cbiAgICBhc3NlcnQgKFxuICAgICAgU3Bhbi4oID49ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi56ZXJvXG4gICAgICAmJiBTcGFuLiggPCApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uZGF5KTtcbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIGluXG4gICAgbGV0IHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCA9IFNwYW4uc2NhbGVfaW50IFNwYW4uZGF5IGRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBzcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi4oICsgKSBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBvZl9zcGFuX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbW9kdWxlIE9mZGF5X2FzX3NwYW4gPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSW50Lk9cblxuICAgICAgbGV0IHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiA9XG4gICAgICAgIGxldCBzZWNvbmRzID0gU3Bhbi50b19pbnRfc2VjIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBsZXQgaCA9IHNlY29uZHMgLyAzNjAwIGluXG4gICAgICAgIGxldCBtID0gc2Vjb25kcyAvIDYwICUgNjAgaW5cbiAgICAgICAgbGV0IHMgPSBzZWNvbmRzICUgNjAgaW5cbiAgICAgICAgc3ByaW50ZiBcIiUwMmQ6JTAyZDolMDJkXCIgaCBtIHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0d29fZGlnaXRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgPSAyICYmIFN0cmluZy5mb3JfYWxsIHN0cmluZyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgSW50Lm9mX3N0cmluZyBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzZWNvbmRzX3N0cmluZyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhfc3RyaW5nOyBtX3N0cmluZzsgc19zdHJpbmcgXSAtPlxuICAgICAgICAgIGxldCBoID0gdHdvX2RpZ2l0X29mX3N0cmluZyBoX3N0cmluZyBpblxuICAgICAgICAgIGxldCBtID0gdHdvX2RpZ2l0X29mX3N0cmluZyBtX3N0cmluZyBpblxuICAgICAgICAgIGxldCBzID0gdHdvX2RpZ2l0X29mX3N0cmluZyBzX3N0cmluZyBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50X3NlYyAoKCgoaCAqIDYwKSArIG0pICogNjApICsgcylcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IG5zX29mXzEwMF9tcyA9IDEwMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbXMgPSAxMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV9tcyA9IDFfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF91cyA9IDEwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF91cyA9IDEwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfdXMgPSAxXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF9ucyA9IDEwMFxuICAgICAgbGV0IG5zX29mXzEwX25zID0gMTBcbiAgICAgIGxldCBuc19vZl8xX25zID0gMVxuXG4gICAgICBsZXQgc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyBzdWJfc2Vjb25kX3NwYW4gfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICBpZiBucyA9IDBcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDFkXCIgKG5zIC8gbnNfb2ZfMTAwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDJkXCIgKG5zIC8gbnNfb2ZfMTBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAzZFwiIChucyAvIG5zX29mXzFfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDRkXCIgKG5zIC8gbnNfb2ZfMTAwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDVkXCIgKG5zIC8gbnNfb2ZfMTBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA2ZFwiIChucyAvIG5zX29mXzFfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDdkXCIgKG5zIC8gbnNfb2ZfMTAwX25zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDhkXCIgKG5zIC8gbnNfb2ZfMTBfbnMpXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIi4lMDlkXCIgbnNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICAgIHRoZW4gU3Bhbi56ZXJvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaWdpdHMgPSBTdHJpbmcuY2hvcF9wcmVmaXhfZXhuIHN0cmluZyB+cHJlZml4OlwiLlwiIGluXG4gICAgICAgICAgYXNzZXJ0IChTdHJpbmcuZm9yX2FsbCBkaWdpdHMgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgICAgbGV0IG11bHRpcGxpZXIgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBkaWdpdHMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IG5zX29mXzEwMF9tc1xuICAgICAgICAgICAgfCAyIC0+IG5zX29mXzEwX21zXG4gICAgICAgICAgICB8IDMgLT4gbnNfb2ZfMV9tc1xuICAgICAgICAgICAgfCA0IC0+IG5zX29mXzEwMF91c1xuICAgICAgICAgICAgfCA1IC0+IG5zX29mXzEwX3VzXG4gICAgICAgICAgICB8IDYgLT4gbnNfb2ZfMV91c1xuICAgICAgICAgICAgfCA3IC0+IG5zX29mXzEwMF9uc1xuICAgICAgICAgICAgfCA4IC0+IG5zX29mXzEwX25zXG4gICAgICAgICAgICB8IDkgLT4gbnNfb2ZfMV9uc1xuICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IChJbnQub2Zfc3RyaW5nIGRpZ2l0cyAqIG11bHRpcGxpZXIpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgc3BhbiA9XG4gICAgICAgIGFzc2VydCAoU3Bhbi4oID49ICkgc3BhbiBTcGFuLnplcm8gJiYgU3Bhbi4oIDwgKSBzcGFuIFNwYW4uZGF5KTtcbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNwYW4gfD4gU3Bhbi50b19pbnRfc2VjIHw+IFNwYW4ub2ZfaW50X3NlYyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gU3Bhbi4oIC0gKSBzcGFuIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gXiBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgIGxldCBwcmVmaXhfbGVuID0gOCBpblxuICAgICAgICAoKiBcIkhIOk1NOkREXCIgKilcbiAgICAgICAgbGV0IHN1ZmZpeF9sZW4gPSBsZW4gLSBwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6MCB+bGVuOnByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpwcmVmaXhfbGVuIH5sZW46c3VmZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN1Yl9zZWNvbmRfc3RyaW5nIGluXG4gICAgICAgIFNwYW4uKCArICkgc2Vjb25kc19zcGFuIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBsZXQgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBVdGMudG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCBpblxuICAgICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5X2FzX3NwYW4udG9fc3RyaW5nIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IF4gXCJaXCJcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgbGV0IGRhdGVfc3RyaW5nLCBvZmRheV9zdHJpbmdfd2l0aF96b25lID0gU3RyaW5nLmxzcGxpdDJfZXhuIHN0cmluZyB+b246JyAnIGluXG4gICAgICBsZXQgb2ZkYXlfc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBvZmRheV9zdHJpbmdfd2l0aF96b25lIH5zdWZmaXg6XCJaXCIgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGVfc3RyaW5nIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheV9hc19zcGFuLm9mX3N0cmluZyBvZmRheV9zdHJpbmcgaW5cbiAgICAgIFV0Yy5vZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIG9mZGF5XG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBBbHRlcm5hdGVfc2V4cC5TdGFibGVcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuXG4oKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWUubWwgZnVuY3RvciwgY29udmVydGVkIGVub3VnaCB0byBnZXQgVGltZV9uc1xuICAgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbm1vZHVsZSBUb19hbmRfb2Zfc3RyaW5nIDogc2lnXG4gIHZhbCBvZl9kYXRlX29mZGF5IDogem9uZTpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gdFxuXG4gIHZhbCBvZl9kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICBEYXRlLnRcbiAgICAtPiBPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBbIGBPbmNlIG9mIHQgfCBgVHdpY2Ugb2YgdCAqIHQgfCBgTmV2ZXIgb2YgdCBdXG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudCAqIE9mZGF5LnRcblxuICB2YWwgdG9fZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgdFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gRGF0ZS50ICogT2ZkYXkudCAqIFsgYE9ubHkgfCBgQWxzb19hdCBvZiB0IHwgYEFsc29fc2tpcHBlZCBvZiBEYXRlLnQgKiBPZmRheS50IF1cblxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50XG4gIHZhbCB0b19vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gT2ZkYXkudFxuICB2YWwgY29udmVydCA6IGZyb21fdHo6Wm9uZS50IC0+IHRvX3R6OlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiBEYXRlLnQgKiBPZmRheS50XG4gIHZhbCByZXNldF9kYXRlX2NhY2hlIDogdW5pdCAtPiB1bml0XG4gIHZhbCB1dGNfb2Zmc2V0IDogdCAtPiB6b25lOlpvbmUudCAtPiBTcGFuLnRcblxuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW29mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRdXCJdXG5cbiAgdmFsIG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgOiBzdHJpbmcgLT4gdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW3RvX3N0cmluZ191dGNdXCJdXG4gIHZhbCB0b19zdHJpbmdfdXRjIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX2ZpbGVuYW1lX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9maWxlbmFtZV9zdHJpbmcgOiBzdHJpbmcgLT4gem9uZTpab25lLnQgLT4gdFxuICB2YWwgdG9fc3RyaW5nX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9sb2NhbGl6ZWRfc3RyaW5nIDogem9uZTpab25lLnQgLT4gc3RyaW5nIC0+IHRcblxuICB2YWwgb2Zfc3RyaW5nX2dlblxuICAgIDogIGRlZmF1bHRfem9uZToodW5pdCAtPiBab25lLnQpXG4gICAgLT4gZmluZF96b25lOihzdHJpbmcgLT4gWm9uZS50KVxuICAgIC0+IHN0cmluZ1xuICAgIC0+IHRcblxuICB2YWwgdG9fc3RyaW5nX2FicyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic19wYXJ0cyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcblxuICB2YWwgb2NjdXJyZW5jZVxuICAgIDogIFsgYEZpcnN0X2FmdGVyX29yX2F0IHwgYExhc3RfYmVmb3JlX29yX2F0IF1cbiAgICAtPiB0XG4gICAgLT4gb2ZkYXk6T2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9mbG9hdDAubWwsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgIFRpbWVfbnMgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX2ludDYzX25zIHRcblxuICAgIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgICAgbGV0IGRheXMgPVxuICAgICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggfD4gSW50NjMub2ZfaW50XG4gICAgICBpblxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgKGRheXMgKiBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5KVxuICAgICAgKyBTcGFuLnRvX2ludDYzX25zIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgc3ViX2V4biAoU3Bhbi5vZl9pbnQ2M19ucyByZWxhdGl2ZSkgb2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIFNwYW4udG9faW50NjNfbnMgKGFkZF9leG4gYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjKVxuICAgIDs7XG5cbiAgICBsZXQgbnNfcGVyX2RheSA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXlcblxuICAgIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgICAoKiBub3RlIFRpbWVfbnMgcmVwcmVzZW50cyBhYm91dCAxNDYgeWVhcnMsIG5vdCBlbm91Z2ggZm9yIFtEYXRlLmNyZWF0ZV9leG5dIHRvIGV2ZXJcbiAgICAgICAgIHJhaXNlICopXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IHQgLyBuc19wZXJfZGF5IGluXG4gICAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgICBpZiB0IDwgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIG5zX3Blcl9kYXlcbiAgICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICA7O1xuXG4gICAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9ucyA9IGRheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPSB0IC0gZGF5c19mcm9tX2Vwb2NoX2luX25zIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGUgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX29mZGF5IHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICAoKiBUaGlzIGludGVyZmFjZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9pbnRmLlpvbmUsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgICAgdGhpcyB0byB3b3JrLlxuXG4gICAgICAgVGhlIHByb2JsZW0gaXMgaGFzIHJlZmVyZW5jZXMgdG8gVGltZTBfaW50Zi5TLCB3aGljaCBpcyB0aGUgZnVuY3RvciBpbnB1dCBpbnRlcmZhY2VcbiAgICAgICB0aGF0IFRpbWVfbnMgY3VycmVudGx5IGRvZXMgbm90IHNhdGlzZnkuICopXG5cbiAgICB0eXBlIHRpbWUgPSB0XG4gICAgdHlwZSB0ID0gWm9uZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBtb2R1bGUgSW5kZXggPSBab25lLkluZGV4XG5cbiAgICAoKiBjb3BpZWQgZnVuY3Rpb25zIHJlZXhwb3J0ZWQgZnJvbSBab25lICopXG5cbiAgICB2YWwgdXRjIDogdFxuICAgIHZhbCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG4gICAgdmFsIGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcblxuICAgICgqIG5ldyBmdW5jdGlvbnMgZGVmaW5lZCBiZWxvdyAqKVxuXG4gICAgdmFsIGluZGV4IDogdCAtPiB0aW1lIC0+IEluZGV4LnRcbiAgICB2YWwgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSA6IHQgLT4gRGF0ZV9hbmRfb2ZkYXkudCAtPiB0aW1lXG4gICAgdmFsIGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgOiB0IC0+IHRpbWUgLT4gRGF0ZV9hbmRfb2ZkYXkudFxuICAgIHZhbCBuZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBzdHJpY3RseV9hZnRlcjp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgICB2YWwgcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gYXRfb3JfYmVmb3JlOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRpbWUgPSB0XG5cbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICB0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiB0XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogdFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgdGltZSA+PSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiB0aW1lIDwgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBzdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBhZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydCB8PiBtYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWwgfD4gbWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzID1cbiAgICBsZXQgYXR0ZW1wdCB0aW1lIH56b25lID1cbiAgICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgICAgXVxuICAgIGluXG4gICAgZnVuIHRpbWUgfnpvbmUgLT5cbiAgICAgIHRyeSBhdHRlbXB0IHRpbWUgfnpvbmUgd2l0aFxuICAgICAgfCAoXyA6IGV4bikgLT5cbiAgICAgICAgKCogSWYgd2Ugb3ZlcmZsb3cgYXBwbHlpbmcgdGhlIFVUQyBvZmZzZXQsIHRyeSBhZ2FpbiB3aXRoIFVUQyB0aW1lLiAqKVxuICAgICAgICBhdHRlbXB0IHRpbWUgfnpvbmU6Wm9uZS51dGNcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50clxuICAgICAgICB+dGFyZ2V0Oic6J1xuICAgICAgICB+cmVwbGFjZW1lbnQ6Jy0nXG4gICAgICAgIChTdHJpbmcuZHJvcF9zdWZmaXggKE9mZGF5LnRvX3N0cmluZyBvZmRheSkgMylcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9uc19vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfbnNfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuZW5kXG5cbmluY2x1ZGUgVG9fYW5kX29mX3N0cmluZ1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IHRvX3RpbWUgPSB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBvZl90aW1lID0gb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBfID0gc3RydWN0XG4gIG9wZW4gUHB4X21vZHVsZV90aW1lcl9ydW50aW1lXG5cbiAgbGV0ICgpID1cbiAgICBEdXJhdGlvbi5mb3JtYXRcbiAgICA6PSAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGR1cmF0aW9uX29mX3NwYW4gcyA9IHMgfD4gU3Bhbi50b19pbnQ2M19ucyB8PiBEdXJhdGlvbi5vZl9uYW5vc2Vjb25kc1xuICAgICAgbGV0IHNwYW5fb2ZfZHVyYXRpb24gZCA9IGQgfD4gRHVyYXRpb24udG9fbmFub3NlY29uZHMgfD4gU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBzdHJpbmcgfD4gU3Bhbi5vZl9zdHJpbmcgfD4gZHVyYXRpb25fb2Zfc3BhblxuXG4gICAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGR1cmF0aW9ucyA9XG4gICAgICAgIGxldCBzcGFucyA9IGR1cmF0aW9ucyB8PiBMaXN0Lm1hcCB+ZjpzcGFuX29mX2R1cmF0aW9uIGluXG4gICAgICAgIGxldCB1bml0X29mX3RpbWUgPVxuICAgICAgICAgIHNwYW5zXG4gICAgICAgICAgfD4gTGlzdC5tYXhfZWx0IH5jb21wYXJlOlNwYW4uY29tcGFyZVxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICAgICAgIH5mOlNwYW4udG9fdW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICB+ZGVmYXVsdDpVbml0X29mX3RpbWUuTmFub3NlY29uZFxuICAgICAgICBpblxuICAgICAgICBzcGFucyB8PiBMaXN0Lm1hcCB+ZjooU3Bhbi50b19zdHJpbmdfaHVtIH51bml0X29mX3RpbWUgfmFsaWduX2RlY2ltYWw6dHJ1ZSlcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDBcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgKGdldCB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBmb2xkaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+aW5pdCB+ZiAtPlxuICAgICAgICAgICBsZXQgcmVjIGdvIGFjYyBpID1cbiAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgaSBhY2MgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKSkgKGkgKyAxKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBnbyBpbml0IDApXG4gICAgOztcblxuICAgIGxldCBpdGVyaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiBpIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZFxuXG4gIG1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZTAgKE1ha2VfYXJnKVxuXG4gIGxldCBmb2xkID0gQy5mb2xkXG4gIGxldCBpdGVyID0gQy5pdGVyXG4gIGxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbiAgbGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuICAoKiBbQy50b19saXN0XSBoYXMgdG8gY29uc3RydWN0IHRoZW4gcmV2ZXJzZSB0aGUgbGlzdCAqKVxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGdldCB0KVxuICBsZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG4gIGxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbiAgbGV0IGZpbmQgPSBDLmZpbmRcbiAgbGV0IGV4aXN0cyA9IEMuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG4gIGxldCBtZW0gPSBDLm1lbVxuICBsZXQgY291bnQgPSBDLmNvdW50XG4gIGxldCBzdW0gPSBDLnN1bVxuICBsZXQgbWluX2VsdCA9IEMubWluX2VsdFxuICBsZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxuICBsZXQgZm9sZGkgPSBDLmZvbGRpXG4gIGxldCBpdGVyaSA9IEMuaXRlcmlcbiAgbGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbiAgbGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuICBsZXQgY291bnRpID0gQy5jb3VudGlcbiAgbGV0IGZpbmRpID0gQy5maW5kaVxuICBsZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcblxuICBsZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gICAgaWYgbiA8IDBcbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICAgIGVsc2UgKFxuICAgICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgICB8IF8gLT4gb25fZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3ByZWZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOm5cbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3Bfc3VmZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG4gIGxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG4gIGxldCBibGl0X3RvICh0eXBlIGEpIChibGl0IDogKFVuZGVybHlpbmcudCwgYSkgQmxpdC50KSB0IH5kc3QgfmRzdF9wb3MgPVxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X3RvX3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2J5dGVzID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG4gIGxldCBibGl0X2Jhc2UgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdFxuXG4gIGxldCBibGl0X2Zyb20gfm5hbWUgKHR5cGUgYSkgKGJsaXQgOiAoYSwgYmFzZSkgQmxpdC50KSB0IH5zcmMgfnNyY19wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gdC5sZW5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJTdWJzdHJpbmcuYmxpdF9mcm9tXyVzIGxlbiA+IHN1YnN0cmluZyBsZW5ndGggOiAlZCA+ICVkXCJcbiAgICAgICAgbmFtZVxuICAgICAgICBsZW5cbiAgICAgICAgdC5sZW5cbiAgICAgICAgKCk7XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuOmxlbiB+ZHN0OnQuYmFzZSB+ZHN0X3Bvczp0LnBvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X2Zyb21fc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwic3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nXG4gIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwiYmlnc3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nXG4gIGxldCBvZl9iYXNlIGJhc2UgPSB7IGJhc2U7IHBvcyA9IDA7IGxlbiA9IFVuZGVybHlpbmcubGVuZ3RoIGJhc2UgfVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX3N0cmluZyB4KVxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX2JpZ3N0cmluZyB4KVxuXG4gIGxldCBtYWtlICh0eXBlIGEpIGNyZWF0ZSAoYmxpdCA6IChiYXNlLCBhKSBCbGl0LnQpIHQgPVxuICAgIGxldCBkc3QgPSBjcmVhdGUgdC5sZW4gaW5cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3M6MCAoKTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihtYWtlIEJ5dGVzLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXMgeClcbiAgOztcblxuICBsZXQgdG9fYmlnc3RyaW5nID0gbWFrZSBCaWdzdHJpbmcuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcblxuICBsZXQgY29uY2F0X2dlbiBjcmVhdGVfZHN0IGJsaXRfZHN0IHRzID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBsZW4gdCAtPiBsZW4gKyBsZW5ndGggdCkgaW5cbiAgICBsZXQgZHN0ID0gY3JlYXRlX2RzdCBsZW4gaW5cbiAgICBpZ25vcmVcbiAgICAgIChMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGRzdF9wb3MgdCAtPlxuICAgICAgICAgYmxpdF9kc3QgdCB+ZHN0IH5kc3RfcG9zO1xuICAgICAgICAgZHN0X3BvcyArIGxlbmd0aCB0KVxuICAgICAgIDogaW50KTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgY29uY2F0IHRzID0gb2ZfYmFzZSAoY29uY2F0X2dlbiBVbmRlcmx5aW5nLmNyZWF0ZSBibGl0X2Jhc2UgdHMpXG5cbiAgbGV0IGNvbmNhdF9zdHJpbmcgdHMgPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihjb25jYXRfZ2VuIEJ5dGVzLmNyZWF0ZSBibGl0X3RvX3N0cmluZyB0cylcbiAgOztcblxuICBsZXQgY29uY2F0X2JpZ3N0cmluZyB0cyA9IGNvbmNhdF9nZW4gQmlnc3RyaW5nLmNyZWF0ZSBibGl0X3RvX2JpZ3N0cmluZyB0c1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IE1ha2Vfc3Vic3RyaW5nLlNcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCeXRlcy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQnl0ZXMuY3JlYXRlXG4gICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCeXRlcy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYnl0ZXNfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENhbWwuQXJnXG5cbnR5cGUgdCA9IGtleSAqIHNwZWMgKiBkb2NcblxubGV0IHNvcnRfYW5kX2FsaWduIGxzdCA9XG4gIGFsaWduIChCYXNlLkxpc3Quc29ydCBsc3QgfmNvbXBhcmU6KGZ1biAoYSwgXywgXykgKGIsIF8sIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG47O1xuIiwidHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZyA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuICBTdHJpbmcgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBDYW1sLkZpbGVuYW1lXG5cbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IGNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9leHRlbnNpb24gPSBjaG9wX2V4dGVuc2lvblxuICBsZXQgY2hvcF9zdWZmaXggPSBjaG9wX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gY2hvcF9zdWZmaXhfb3B0XG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gY3VycmVudF9kaXJfbmFtZVxuICBsZXQgaXNfaW1wbGljaXQgPSBpc19pbXBsaWNpdFxuICBsZXQgaXNfcmVsYXRpdmUgPSBpc19yZWxhdGl2ZVxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gcGFyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJfc2VwID0gZGlyX3NlcFxuICBsZXQgcXVvdGUgPSBxdW90ZVxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IGdldF90ZW1wX2Rpcl9uYW1lICgpXG4gIGxldCBkaXJuYW1lID0gZGlybmFtZVxuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVxuZW5kXG5cbmxldCBpc19hYnNvbHV0ZSBwID0gbm90IChpc19yZWxhdGl2ZSBwKVxuXG5sZXQgY29uY2F0IHAxIHAyID1cbiAgaWYgU3RyaW5nLmlzX2VtcHR5IHAxXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUudG9fYWJzb2x1dGVfZXhuIGNhbGxlZCB3aXRoIGEgW3JlbGF0aXZlX3RvXSB0aGF0IGlzIGEgcmVsYXRpdmUgcGF0aDogJXNcIlxuICAgICAgcmVsYXRpdmVfdG9cbiAgICAgICgpXG4gIGVsc2UgaWYgaXNfYWJzb2x1dGUgcFxuICB0aGVuIHBcbiAgZWxzZSBjb25jYXQgcmVsYXRpdmVfdG8gcFxuOztcblxubGV0IHNwbGl0IHMgPSBkaXJuYW1lIHMsIGJhc2VuYW1lIHNcblxuKCogW21heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZV0gY29tZXMgZnJvbSBnZXRjb25mIF9QT1NJWF9OQU1FX01BWCAvICopXG5sZXQgbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplID0gMjU1XG5cbmxldCBpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQgcyA9XG4gIGxldCBtb2R1bGUgUyA9IFN0cmluZyBpblxuICBzIDw+IFwiLlwiXG4gICYmIHMgPD4gXCIuLlwiXG4gICYmIEludC4oMCA8IFMubGVuZ3RoIHMpXG4gICYmIEludC4oUy5sZW5ndGggcyA8PSBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUpXG4gICYmIChub3QgKFMuY29udGFpbnMgcyAnLycpKVxuICAmJiBub3QgKFMuY29udGFpbnMgcyAnXFwwMDAnKVxuOztcblxubGV0IHJvb3QgPSBcIi9cIlxuXG5sZXQgc3BsaXRfZXh0ZW5zaW9uIGZuID1cbiAgbGV0IGRpciwgZm4gPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLycgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBmblxuICAgIHwgU29tZSAocGF0aCwgZm4pIC0+IFNvbWUgcGF0aCwgZm5cbiAgaW5cbiAgbGV0IGZuLCBleHQgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLicgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBmbiwgTm9uZVxuICAgIHwgU29tZSAoYmFzZV9mbiwgZXh0KSAtPiBiYXNlX2ZuLCBTb21lIGV4dFxuICBpblxuICBsZXQgZm4gPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBOb25lIC0+IGZuXG4gICAgfCBTb21lIGRpciAtPiBkaXIgXiBcIi9cIiBeIGZuXG4gIGluXG4gIGZuLCBleHRcbjs7XG5cbmxldCBwYXJ0cyBmaWxlbmFtZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgZmlsZW5hbWUgPVxuICAgIG1hdGNoIHNwbGl0IGZpbGVuYW1lIHdpdGhcbiAgICB8IChcIi5cIiBhcyBiYXNlKSwgXCIuXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IChcIi9cIiBhcyBiYXNlKSwgXCIvXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IHJlc3QsIGRpciAtPiBsb29wIChkaXIgOjogYWNjKSByZXN0XG4gIGluXG4gIGxvb3AgW10gZmlsZW5hbWVcbjs7XG5cbmxldCBvZl9wYXJ0cyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJGaWxlbmFtZS5vZl9wYXJ0czogZW1wdHkgcGFydHMgbGlzdFwiXG4gIHwgcm9vdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OnJvb3QgfmY6Q2FtbC5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBTdGFibGVfaW50ZXJuYWxcbiAgb3BlbiEgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYTE3ZmQzNGVjMjEzZTUwOGRiNDUwZjY0NjlmN2ZlOTkgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgQmFzZS5JbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBaZXJvIC0+ICgpXG4gICAgICAgICAgICB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcIk1hbnkgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWFueSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJNYXliZSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYXliZSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IENvbmNhdCBbXSB8IENvbmNhdCBbIF8gXSAtPiBmYWlsd2l0aCBcIkZsYXR0ZW4gemVybyBhbmQgb25lLWVsZW1lbnQgQ29uY2F0XCJcbiAgICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudFxuICAgICAgICAgICAgfCBBZF9ob2MgXyAtPiAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCB0ID0gWyVvZl9zZXhwOiB0XSBzZXhwIGluXG4gICAgICAgICAgaW52YXJpYW50IHQ7XG4gICAgICAgICAgdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgdXNhZ2UgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWmVybyAtPiBcIlwiXG4gICAgICAgICAgfCBPbmUgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1hbnkgKE9uZSBfIGFzIHQpIC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbJXMgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWFueSB0IC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbKCVzKSAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWF5YmUgdCAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyVzXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChCYXNlLkxpc3QubWFwIHRzIH5mOnVzYWdlKVxuICAgICAgICAgIHwgQWRfaG9jIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDgxZDllYzE2NzkwM2Y4ZjhjNDljYmY4ZTNmYjNhNjYgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA4ZmFhYzFlOGQ5ZGViMGJhYWE1NmFjOGViZjg1YjQ5OCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB1c2FnZSA6IHN0cmluZ1xuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAgIHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmYpIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID0geyB0IHdpdGggc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCB0LnN1YmNvbW1hbmRzIH5mIH1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZyb21fdmFsIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCkgOiAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mb3JjZSBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbGV0IGFic19wYXRoIH5kaXIgcGF0aCA9XG4gICAgICBpZiBGaWxlbmFtZS5pc19hYnNvbHV0ZSBwYXRoIHRoZW4gcGF0aCBlbHNlIEZpbGVuYW1lLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGMwYzgyNTZlOTIzOGNkZDhmMmVjMWY4Nzg1ZTAyYWUwIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0IHRvX3YzIHQgOiBWMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YzICh0IDogVjMudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmNvbXBvc2UgVjMudG9fbGF0ZXN0IHRvX3YzXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b192MiB0IDogVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSBcIi9cIlxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjIgKHQgOiBWMi50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uY29tcG9zZSBWMi50b19sYXRlc3QgdG9fdjJcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOTgxMTU0ZWYzOTE5NDM3YzZjODIyNjE5ODgyODQxZDQgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnRcbiAgICAgICAgfCBMYXp5IG9mIHQgTGF6eS5TdGFibGUuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgZDNjMzc1NTQ4ZjFhNDNjNThjNzFlODE0YzA0YmEzNmEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5pZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjNcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYxLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA1OThkNGI0MWVmNDM1YmM2OWE0ODg2YmRiYTBmODY4OSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzBkMjBiNTQzMmZmYWI3N2EzODViMDJiMDQwMzFkMmUgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS50b19sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS5vZl9sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVmVyc2lvbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFYxIG9mIFYxLnRcbiAgICAgICAgfCBWMiBvZiBWMi50XG4gICAgICAgIHwgVjMgb2YgVjMudCAoKiBhdmFpbGFibGUgYXQgbGVhc3Qgc2luY2UgMjAyMC0wNCAqKVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwLCB2YXJpYW50c11cblxuICAgICAgKCogSXQncyBva2F5IHRvIGNoYW5nZSB0aGlzIG9uZSBpbiBwbGFjZSwgYXMgbG9uZyBhcyB3ZSB3YWl0IGxvbmcgZW5vdWdoIGJlZm9yZVxuICAgICAgICAgZHJvcHBpbmcgc3VwcG9ydCBmb3Igb2xkIHZlcnNpb25zLiAqKVxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDc5NmZiZjAwNmRlYjI1MTU5MTcxNjM3YzJhNTEwYmY0IHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVjEgdCAtPiBWMS50b19sYXRlc3QgdFxuICAgICAgICB8IFYyIHQgLT4gVjIudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMyB0IC0+IFYzLnRvX2xhdGVzdCB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IH52ZXJzaW9uX3RvX3VzZSBsYXRlc3QgPVxuICAgICAgICBtYXRjaCB2ZXJzaW9uX3RvX3VzZSB3aXRoXG4gICAgICAgIHwgMSAtPiBWMSAoVjEub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAyIC0+IFYyIChWMi5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDMgLT4gVjMgKFYzLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgb3RoZXIgLT5cbiAgICAgICAgICBTdGRfaW50ZXJuYWwuZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInVuc3VwcG9ydGVkIHZlcnNpb25fdG9fdXNlXCJcbiAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGludmFyaWFudCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnVzYWdlXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5Nb2RlbC50ID1cbiAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBwYXJzZV9uYW1lIHQgPVxuICAgIGxldCBudW1fb2NjdXJyZW5jZXMsIGZsYWdfbmFtZSA9IE51bV9vY2N1cnJlbmNlcy5vZl9oZWxwX3N0cmluZyB0Lm5hbWUgaW5cbiAgICBtYXRjaCBTdHJpbmcuc3BsaXQgZmxhZ19uYW1lIH5vbjonICcgd2l0aFxuICAgIHwgWyBmbGFnX25hbWUgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCBmYWxzZSwgZmxhZ19uYW1lKVxuICAgIHwgWyBmbGFnX25hbWU7IF9hcmdfZG9jIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgdHJ1ZSwgZmxhZ19uYW1lKVxuICAgIHwgXyAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV1cbiAgOztcblxuICAoKiBVc2VycyBhcmUgbGlrZWx5IHRvIGNhbGwgYWxsIHRocmVlIG9mIHRoZXNlIGZ1bmN0aW9ucywgaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIHJlLXBhcnNlXG4gICAgIHRoZSBbbmFtZV0gc2V2ZXJhbCB0aW1lcy4gV2UgZG9uJ3QgZXhwZWN0IHVzZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucyB0byBjYXJlIGFib3V0IHRoZVxuICAgICBpbmVmZmljaWVuY3kuICopXG4gIGxldCBmbGFnX25hbWUgdCA9IHBhcnNlX25hbWUgdCB8PiBPcl9lcnJvci5tYXAgfmY6dHJkM1xuICBsZXQgbnVtX29jY3VycmVuY2VzIHQgPSBwYXJzZV9uYW1lIHQgfD4gT3JfZXJyb3IubWFwIH5mOmZzdDNcbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID0gcGFyc2VfbmFtZSB0IHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmQzXG5cbiAgbGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFwiWy1oZWxwXVwiIC0+IC0xXG4gICAgfCBcIlstaGVscF1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstdmVyc2lvbl1cIiAtPiAtMVxuICAgIHwgXCJbLXZlcnNpb25dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLWJ1aWxkLWluZm9dXCIgLT4gLTFcbiAgICB8IFwiWy1idWlsZC1pbmZvXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiaGVscFwiIC0+IC0xXG4gICAgfCBcImhlbHBcIiwgXyAtPiAxXG4gICAgfCBfLCBcInZlcnNpb25cIiAtPiAtMVxuICAgIHwgXCJ2ZXJzaW9uXCIsIF8gLT4gMVxuICAgIHwgXyAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaGVscF9kaXNwbGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IEZsYWdfaW5mby50IGxpc3RcblxuICBsZXQgc29ydCB0ID1cbiAgICBMaXN0LnN0YWJsZV9zb3J0IHQgfmNvbXBhcmU6KGZ1biBhIGIgLT5cbiAgICAgIEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlIGEuRmxhZ19pbmZvLm5hbWUgYi5GbGFnX2luZm8ubmFtZSlcbiAgOztcblxuICBsZXQgd29yZF93cmFwX2FuZF9zdHJpcCB0ZXh0IHdpZHRoID1cbiAgICBsZXQgY2h1bmtzID0gU3RyaW5nLnNwbGl0IHRleHQgfm9uOidcXG4nIGluXG4gICAgTGlzdC5jb25jYXRfbWFwIGNodW5rcyB+ZjooZnVuIHRleHQgLT5cbiAgICAgIGxldCB3b3JkcyA9XG4gICAgICAgIFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonICdcbiAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biB3b3JkIC0+IG5vdCAoU3RyaW5nLmlzX2VtcHR5IHdvcmQpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIExpc3QuZm9sZCB3b3JkcyB+aW5pdDpOb25lIH5mOihmdW4gYWNjIHdvcmQgLT5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAobWF0Y2ggYWNjIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gW10sIHdvcmRcbiAgICAgICAgICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPlxuICAgICAgICAgICAgICAgKCogZWZmaWNpZW5jeSBpcyBub3QgYSBjb25jZXJuIGZvciB0aGUgc3RyaW5nIGxlbmd0aHMgd2UgZXhwZWN0ICopXG4gICAgICAgICAgICAgICBsZXQgbGluZV9hbmRfd29yZCA9IGxpbmUgXiBcIiBcIiBeIHdvcmQgaW5cbiAgICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggbGluZV9hbmRfd29yZCA8PSB3aWR0aFxuICAgICAgICAgICAgICAgdGhlbiBsaW5lcywgbGluZV9hbmRfd29yZFxuICAgICAgICAgICAgICAgZWxzZSBsaW5lIDo6IGxpbmVzLCB3b3JkKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT4gTGlzdC5yZXYgKGxpbmUgOjogbGluZXMpKVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwbGF5IDogc2lnXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBudW1fY29scyA9IDgwXG4gICAgbGV0IHNwYWNlc19zdHJpbmcgd2lkdGggPSBTdHJpbmcubWFrZSB3aWR0aCAnICdcblxuICAgIGxldCBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB4IH53aWR0aCA9XG4gICAgICBsZXQgc2xhY2sgPSB3aWR0aCAtIFN0cmluZy5sZW5ndGggeCBpblxuICAgICAgeCBeIHNwYWNlc19zdHJpbmcgc2xhY2tcbiAgICA7O1xuXG4gICAgbGV0IGluZGVudGF0aW9uID0gXCIgIFwiXG4gICAgbGV0IGluZGVudF9hbmRfbmV3bGluZSB4ID0gTGlzdC5jb25jYXQgWyBbIGluZGVudGF0aW9uIF07IHg7IFsgXCJcXG5cIiBdIF1cbiAgICBsZXQgc3BhY2luZ19kb3QgPSBcIi4gXCJcblxuICAgIGxldCBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ID1cbiAgICAgIDI3XG4gICAgOztcblxuICAgIGxldCBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtbiA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc193aWR0aCA9IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uXG4gICAgbGV0IGxoc19wYWRfd2lkdGggPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfcGFkID0gc3BhY2VzX3N0cmluZyBsaHNfcGFkX3dpZHRoXG5cbiAgICBsZXQgbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgPVxuICAgICAgTGlzdC5tYXAgfmY6KGZ1biB2IC0+IGluZGVudF9hbmRfbmV3bGluZSBbIGxoc19wYWQ7IHYgXSlcbiAgICA7O1xuXG4gICAgbGV0IHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBkb2N1bWVudGF0aW9uID1cbiAgICAgIGxldCBmbGFnX29uX2l0c19vd25fbGluZSA9XG4gICAgICAgIGxldCBmbGFnX3dpZHRoID1cbiAgICAgICAgICBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uICsgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgIGluXG4gICAgICAgIGlmIGZsYWdfd2lkdGggPj0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggc3BhY2luZ19kb3RcbiAgICAgICAgdGhlbiBpbmRlbnRfYW5kX25ld2xpbmUgWyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgbGV0IHdyYXBwZWRfZG9jdW1lbnRhdGlvbiA9XG4gICAgICAgIHdvcmRfd3JhcF9hbmRfc3RyaXBcbiAgICAgICAgICBkb2N1bWVudGF0aW9uXG4gICAgICAgICAgKG51bV9jb2xzIC0gbGhzX3dpZHRoIC0gU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbilcbiAgICAgIGluXG4gICAgICBtYXRjaCB3cmFwcGVkX2RvY3VtZW50YXRpb24gd2l0aFxuICAgICAgfCBbXSAtPiBbIGZsYWdfb25faXRzX293bl9saW5lIF1cbiAgICAgIHwgZG9jX3dyYXBwZWRfZmlyc3RfbGluZSA6OiBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIC0+XG4gICAgICAgIGxldCB3cmFwcGVkX2RvY19saW5lcyA9IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlIGRvY193cmFwcGVkX3Jlc3RfbGluZXMgaW5cbiAgICAgICAgbGV0IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggeCA9XG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IHhcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIDsgZG9jX3dyYXBwZWRfZmlyc3RfbGluZVxuICAgICAgICAgICAgXVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPj0gZG90X2luZGVudGF0aW9uX29mZnNldFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmxhZ19vbl9pdHNfb3duX2xpbmVcbiAgICAgICAgICA6OiBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIFwiXCJcbiAgICAgICAgICA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBMaXN0LmNvbmNhdF9tYXAgdCB+ZjooZnVuIHQgLT5cbiAgICAgICAgbGV0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPVxuICAgICAgICAgIGxldCBmbGFnID0gdC5GbGFnX2luZm8ubmFtZSBpblxuICAgICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKGZsYWcgOjogdC5hbGlhc2VzKVxuICAgICAgICBpblxuICAgICAgICByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgdC5kb2MgfD4gTGlzdC5jb25jYXQpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gRGlzcGxheS50b19zdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3ViY29tbWFuZFxuICAgIHwgRmxhZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3ViY29tbWFuZCAtPiBcInN1YmNvbW1hbmRcIlxuICAgIHwgRmxhZyAtPiBcImZsYWdcIlxuICA7O1xuZW5kXG5cbmxldCBsb29rdXBfZXhwYW5kIGFsaXN0IHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBpc19kYXNoID0gQ2hhci5lcXVhbCAnLScgaW5cbiAgbGV0IGFsaXN0ID1cbiAgICAoKiBubyBwYXJ0aWFsIG1hdGNoZXMgdW5sZXNzIHNvbWUgbm9uLWRhc2ggY2hhciBpcyBwcmVzZW50ICopXG4gICAgaWYgU3RyaW5nLmZvcl9hbGwgcHJlZml4IH5mOmlzX2Rhc2hcbiAgICB0aGVuIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgKGRhdGEsIF8pKSAtPiBrZXksIChkYXRhLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkpXG4gICAgZWxzZSBhbGlzdFxuICBpblxuICBtYXRjaFxuICAgIExpc3QuZmlsdGVyIGFsaXN0IH5mOihmdW5jdGlvblxuICAgICAgfCBrZXksIChfLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXhcbiAgICAgIHwga2V5LCAoXywgYFByZWZpeCkgLT4gU3RyaW5nLmlzX3ByZWZpeCBrZXkgfnByZWZpeClcbiAgd2l0aFxuICB8IFsgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgXSAtPiBPayAoa2V5LCBkYXRhKVxuICB8IFtdIC0+IEVycm9yIChzcHJpbnRmICFcInVua25vd24gJXtLZXlfdHlwZX0gJXNcIiBrZXlfdHlwZSBwcmVmaXgpXG4gIHwgbWF0Y2hlcyAtPlxuICAgIChtYXRjaCBMaXN0LmZpbmQgbWF0Y2hlcyB+ZjooZnVuIChrZXksIF8pIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4KSB3aXRoXG4gICAgIHwgU29tZSAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSAtPiBPayAoa2V5LCBkYXRhKVxuICAgICB8IE5vbmUgLT5cbiAgICAgICBsZXQgbWF0Y2hpbmdfa2V5cyA9IExpc3QubWFwIH5mOmZzdCBtYXRjaGVzIGluXG4gICAgICAgRXJyb3JcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAhXCIle0tleV90eXBlfSAlcyBpcyBhbiBhbWJpZ3VvdXMgcHJlZml4OiAlc1wiXG4gICAgICAgICAgICBrZXlfdHlwZVxuICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiBtYXRjaGluZ19rZXlzKSkpXG47O1xuXG5tb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5CYXNlX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBhbm9ucyA6IEFub25zLnRcbiAgICA7IGZsYWdzIDogRmxhZ19pbmZvLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfZmxhZyB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCBmYWxzZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIkZsYWdzIG11c3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQlYmluZC5Pcl9lcnJvciBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgdC5mbGFncyB+ZjooZnVuIChmbGFnX2luZm8gOiBGbGFnX2luZm8udCkgLT5cbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBmbGFnX25hbWUgPSBGbGFnX2luZm8uZmxhZ19uYW1lIGZsYWdfaW5mbyBpblxuICAgICAgICAgIE9rXG4gICAgICAgICAgICAoTGlzdC5tYXAgKGZsYWdfbmFtZSA6OiBmbGFnX2luZm8uYWxpYXNlcykgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICAgICAgIGtleSwgKGZsYWdfaW5mbywgYFByZWZpeCkpKSlcbiAgICAgICAgfD4gT3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIChMaXN0LmNvbmNhdCBjaG9pY2VzKSBwcmVmaXggRmxhZ1xuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ2V0X3VzYWdlIHQgPVxuICAgIG1hdGNoIHQuYW5vbnMgd2l0aFxuICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBTdGFibGUuQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyXG4gIDs7XG5lbmRcblxubW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgU3RhYmxlLkdyb3VwX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC50IExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfc3ViY29tbWFuZCB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCB0cnVlIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiU3ViY29tbWFuZHMgbXVzdCBub3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5GdWxseV9mb3JjZWQuTW9kZWwudCA9XG4gICAgfCBCYXNpYyBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiB0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgZXhwYW5kZWRfc3ViY29tbWFuZHMgdCA9XG4gICAgbGV0IHJlYyBleHBhbmQgPSBmdW5jdGlvblxuICAgICAgfCBFeGVjIChfLCB0KSAtPiBleHBhbmQgdFxuICAgICAgfCBCYXNpYyBfIC0+IFsgW10gXVxuICAgICAgfCBHcm91cCB7IHN1YmNvbW1hbmRzOyBfIH0gLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzKSB+ZjooZnVuIChuYW1lLCB0KSAtPlxuICAgICAgICAgIExpc3QubWFwIH5mOihmdW4gcGF0aCAtPiBuYW1lIDo6IHBhdGgpIChleHBhbmQgdCkpXG4gICAgaW5cbiAgICAoKiBSZXZlcnNpbmcgc28gdGhhdCB0aGUgY29tbWFuZHMgc2hvdyB1cCBpbiB0aGUgc2FtZSBvcmRlciBhcyBoZWxwIGlzIG91dHB1dCAqKVxuICAgIExpc3QucmV2IChleHBhbmQgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLlNleHBhYmxlLk1vZGVsLnQgPVxuICAgIHwgQmFzZSBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnRcbiAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZXh0cmFjdGlvbl92YXIgPSBDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2VyaWFsaXphYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IFNlcmlhbGl6YWJsZS50XTtcbiAgICAgICAgWyVleHBlY3RcbiAgICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDBcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwIHx9XVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG9wZW4hIEltcG9ydFxuICAgICAgb3BlbiEgU3RkX2ludGVybmFsXG4gICAgICBvcGVuISBUMFxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHsgaG9zdDsgcG9ydCB9ID0gc3ByaW50ZiBcIiVzOiVkXCIgaG9zdCBwb3J0XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaG9zdDsgcG9ydCBdIC0+XG4gICAgICAgICAgbGV0IHBvcnQgPVxuICAgICAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgcG9ydCB3aXRoXG4gICAgICAgICAgICB8IF9leG4gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6IGJhZCBwb3J0OiAlc1wiIHMgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHsgaG9zdDsgcG9ydCB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogJXNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwLkF0b20gcyBhcyBzZXhwIC0+XG4gICAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgRmFpbHVyZSBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cClcbiAgICAgICAgfCBzZXhwIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5cbiAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgKCogaGFuZGxlcyB0aGUgaG9zdDpwb3J0IHN0cmluZyBjYXNlICopXG4gICAgICAgICAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgICAgICAgIDsgKCogaGFuZGxlcyB0aGUgbGlzdCAoaG9zdCBwb3J0KSBjYXNlICAqKVxuICAgICAgICAgICAgICAgICAgTGlzdCAoQ29ucyAoU3RyaW5nLCBDb25zIChJbnRlZ2VyLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVDEpXG5cbiAgICBsZXQldGVzdF91bml0IFwidF9vZl9zZXhwXCIgPVxuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3wobG9jYWxob3N0IDgwODApfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH07XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fGxvY2FsaG9zdDo4MDgwfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH1cbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInNleHAgcm91bmR0cmlwXCIgPVxuICAgICAgUXVpY2tjaGVjay50ZXN0IFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgICBbJXRlc3RfcmVzdWx0OiB0XSAodF9vZl9zZXhwIChzZXhwX29mX3QgdCkpIH5leHBlY3Q6dClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxuaW5jbHVkZSBMYXRlc3RcblxubGV0IGNyZWF0ZSB+aG9zdCB+cG9ydCA9IHsgaG9zdDsgcG9ydCB9XG5sZXQgaG9zdCB0ID0gdC5ob3N0XG5sZXQgcG9ydCB0ID0gdC5wb3J0XG5sZXQgdHVwbGUgdCA9IHRvX3NlcmlhbGl6YWJsZSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkhvc3RfYW5kX3BvcnRcIlxuICBlbmQpXG5cbmluY2x1ZGUgKEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoTGF0ZXN0KSA6IEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChMYXRlc3QpXG5cbmxldCB0eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJIb3N0X2FuZF9wb3J0XCIgc2V4cF9vZl90XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbnRhaW5lcnMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgZXhjZXB0aW9uIFBpZF9tdXN0X2JlX3Bvc2l0aXZlIG9mIEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgZW5zdXJlIGkgPSBpZiBpIDw9IDAgdGhlbiByYWlzZSAoUGlkX211c3RfYmVfcG9zaXRpdmUgaSkgZWxzZSBpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb250YWluZXJzKVxuICAgIGluY2x1ZGUgV2l0aG91dF9jb250YWluZXJzXG4gIGVuZFxuXG4gIG1vZHVsZSBMYXRlc3QgPSBWMVxuZW5kXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFibGUuTGF0ZXN0LldpdGhvdXRfY29udGFpbmVyc1xuXG50eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgaGFzaF1cblxubGV0IG9mX2ludCBpID0gZW5zdXJlIGlcbmxldCB0b19pbnQgPSBGbi5pZFxubGV0IG9mX3N0cmluZyBzdHJpbmcgPSBlbnN1cmUgKEludC5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbmxldCBpbml0ID0gb2ZfaW50IDFcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5QaWRcIlxuICBlbmQpXG4iLCIoKiogU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgcG9seW1vcnBoaWMgZnVuY3Rpb25hbCBkb3VibGUtZW5kZWQgcXVldWUuICopXG5cbigqKiBJbnZhcmlhbnRzOlxuICAgIC0gcXVldWUubGVuZ3RoID0gTGlzdC5sZW5ndGggcXVldWUuZnJvbnQgKyBMaXN0Lmxlbmd0aCBxdWV1ZS5iYWNrXG4gICAgLSBpZiBxdWV1ZSBoYXMgPj0gMiBlbGVtZW50cywgbmVpdGhlciBmcm9udCBub3IgYmFjayBhcmUgZW1wdHlcbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuZXhjZXB0aW9uIEVtcHR5IFtAQGRlcml2aW5nIHNleHBdXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZnJvbnQgOiAnYSBsaXN0XG4gIDsgYmFjayA6ICdhIGxpc3RcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcblxubGV0IGludmFyaWFudCBmIHQgPVxuICBsZXQgbl9mcm9udCA9IExpc3QubGVuZ3RoIHQuZnJvbnQgaW5cbiAgbGV0IG5fYmFjayA9IExpc3QubGVuZ3RoIHQuYmFjayBpblxuICBhc3NlcnQgKHQubGVuZ3RoID0gbl9mcm9udCArIG5fYmFjayk7XG4gIGFzc2VydCAodC5sZW5ndGggPCAyIHx8IChuX2Zyb250IDw+IDAgJiYgbl9iYWNrIDw+IDApKTtcbiAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gIExpc3QuaXRlciB0LmJhY2sgfmZcbjs7XG5cbmxldCBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrID1cbiAgbWF0Y2ggZnJvbnQsIGJhY2sgd2l0aFxuICB8IFtdLCBbXSB8IFsgXyBdLCBbXSB8IFtdLCBbIF8gXSB8IF8gOjogXywgXyA6OiBfIC0+IHsgZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgW10sIF8gOjogXyA6OiBfIC0+XG4gICAgbGV0IGJhY2ssIHJldl9mcm9udCA9IExpc3Quc3BsaXRfbiBiYWNrIChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQgPSBMaXN0LnJldiByZXZfZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgXyA6OiBfIDo6IF8sIFtdIC0+XG4gICAgbGV0IGZyb250LCByZXZfYmFjayA9IExpc3Quc3BsaXRfbiBmcm9udCAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250OyBiYWNrID0gTGlzdC5yZXYgcmV2X2JhY2s7IGxlbmd0aCB9XG47O1xuXG5sZXQgZW1wdHkgPSB7IGZyb250ID0gW107IGJhY2sgPSBbXTsgbGVuZ3RoID0gMCB9XG5sZXQgZW5xdWV1ZV9mcm9udCB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmZyb250Oih4IDo6IHQuZnJvbnQpIH5iYWNrOnQuYmFja1xubGV0IGVucXVldWVfYmFjayB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmJhY2s6KHggOjogdC5iYWNrKSB+ZnJvbnQ6dC5mcm9udFxuXG5sZXRbQGNvbGRdIHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxmcm9udHwgPSAwLCB8YmFja3wgPj0gMlwiXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iYWNrX2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxiYWNrfCA9IDAsIHxmcm9udHwgPj0gMlwiXVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmZyb250OnhzIH5iYWNrOnQuYmFja1xuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5iYWNrOnhzIH5mcm9udDp0LmZyb250XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBwZWVrX2Zyb250X2V4biB0LCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gcGVla19iYWNrX2V4biB0LCBkcm9wX2JhY2tfZXhuIHRcblxubGV0IG9wdGlvbmFsIGYgdCA9XG4gIG1hdGNoIGYgdCB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gRW1wdHkgLT4gTm9uZVxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IG9wdGlvbmFsIHBlZWtfZnJvbnRfZXhuIHRcbmxldCBwZWVrX2JhY2sgdCA9IG9wdGlvbmFsIHBlZWtfYmFja19leG4gdFxubGV0IGRyb3BfZnJvbnQgdCA9IG9wdGlvbmFsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkcm9wX2JhY2sgdCA9IG9wdGlvbmFsIGRyb3BfYmFja19leG4gdFxubGV0IGRlcXVldWVfZnJvbnQgdCA9IG9wdGlvbmFsIGRlcXVldWVfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2sgdCA9IG9wdGlvbmFsIGRlcXVldWVfYmFja19leG4gdFxuXG5sZXQgZW5xdWV1ZSB0IHNpZGUgeCA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgeFxuICB8IGBiYWNrIC0+IGVucXVldWVfYmFjayB0IHhcbjs7XG5cbmxldCBwZWVrIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuOztcblxubGV0IHBlZWtfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrX2V4biB0XG47O1xuXG5sZXQgZHJvcCB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2tfZXhuIHRcbjs7XG5cbmxldCByZXYgdCA9IHsgdCB3aXRoIGZyb250ID0gdC5iYWNrOyBiYWNrID0gdC5mcm9udCB9XG5cbm1vZHVsZSBBcmJpdHJhcnlfb3JkZXIgPSBzdHJ1Y3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5yZXZfYXBwZW5kIHQuZnJvbnQgdC5iYWNrXG4gIGxldCB0b19hcnJheSB0ID0gQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KVxuICBsZXQgdG9fc2VxdWVuY2UgdCA9IFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spXG5cbiAgbGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgICBsZXQgb3BlbiBNIGluXG4gICAgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmZyb250IH5mICsgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgdC5mcm9udCB+ZiArIExpc3QuY291bnQgdC5iYWNrIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgdC5mcm9udCB+ZiAmJiBMaXN0LmZvcl9hbGwgdC5iYWNrIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIHQuZnJvbnQgfmYgfHwgTGlzdC5leGlzdHMgdC5iYWNrIH5mXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCB0LmZyb250IHggfHwgTGlzdC5tZW0gfmVxdWFsIHQuYmFjayB4XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gICAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIExpc3QuZm9sZCB0LmZyb250IH5pbml0IH5mIHw+IGZ1biBpbml0IC0+IExpc3QuZm9sZCB0LmJhY2sgfmluaXQgfmZcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5lbmRcblxubW9kdWxlIEZyb250X3RvX2JhY2sgPSBzdHJ1Y3RcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmZyb250Omxpc3QgfmJhY2s6W11cbiAgbGV0IHRvX2xpc3QgdCA9IHQuZnJvbnQgQCBMaXN0LnJldiB0LmJhY2tcblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmJhY2spKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgYmFjayA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250OltdIH5iYWNrXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEJhY2tfdG9fZnJvbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgdCA9IHQuYmFjayBAIExpc3QucmV2IHQuZnJvbnRcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmJhY2s6bGlzdCB+ZnJvbnQ6W11cblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaykgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuZnJvbnQpKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgZnJvbnQgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjazpbXVxuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGUgRnJvbnRfdG9fYmFja1xuXG5sZXQgc2luZ2xldG9uIHggPSBvZl9saXN0IFsgeCBdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCBlbHQgLT4gZm9sZCAoZiBlbHQpIH5pbml0OnQgfmY6ZW5xdWV1ZV9iYWNrKVxuICAgIDs7XG5cbiAgICBsZXQgcmV0dXJuID0gc2luZ2xldG9uXG5cbiAgICBsZXQgbWFwID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIHsgZnJvbnQgPSBMaXN0Lm1hcCB0LmZyb250IH5mOyBiYWNrID0gTGlzdC5tYXAgdC5iYWNrIH5mOyBsZW5ndGggPSB0Lmxlbmd0aCB9KVxuICAgIDs7XG4gIGVuZClcblxubGV0IGNvbXBhcmUgY21wIHQxIHQyID0gTGlzdC5jb21wYXJlIGNtcCAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5sZXQgZXF1YWwgZXEgdDEgdDIgPSBMaXN0LmVxdWFsIGVxICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcblxubGV0IGhhc2hfZm9sZF90IGhhc2hfZm9sZF9hIHN0YXRlIHQgPVxuICBmb2xkIH5mOmhhc2hfZm9sZF9hIH5pbml0OihbJWhhc2hfZm9sZDogaW50XSBzdGF0ZSAobGVuZ3RoIHQpKSB0XG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBbJXNleHBfb2Y6IGVsdCBsaXN0XSAodG9fbGlzdCB0KVxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKFslb2Zfc2V4cDogZWx0IGxpc3RdIHNleHApXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gTGlzdC50X3NleHBfZ3JhbW1hclxuICAgIGxldCBtYXAgPSBtYXBcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4M2Y5Njk4Mi00OTkyLTExZTYtOTE5ZC1mYmRkY2ZkY2E1NzZcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkZkZXF1ZVwiXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciAodG9fbGlzdCB0KSB+ZlxuXG4gICAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBuZXh0IGFjYyBuID1cbiAgICAgICAgICAgIGlmIGxlbiA9IG5cbiAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgYXNzZXJ0IChuID0gbGVuZ3RoIGFjYyk7XG4gICAgICAgICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICAgICAgICBsb29wIG5leHQgKGVucXVldWVfYmFjayBhY2MgeCkgKG4gKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgbmV4dCBlbXB0eSAwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFN0YWJsZS5WMSA6IG1vZHVsZSB0eXBlIG9mIFN0YWJsZS5WMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYnVpbGQgfmZyb250IH5iYWNrID1cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggZnJvbnQgKyBMaXN0Lmxlbmd0aCBiYWNrIGluXG4gICAgbGV0IHQgPSB7IGxlbmd0aDsgZnJvbnQ7IGJhY2sgfSBpblxuICAgIGludmFyaWFudCBpZ25vcmUgdDtcbiAgICB0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHZhbHVlIDogJ2Egb3B0aW9uXG4gICAgICA7IG11dGFibGUgc2V0X2F0IDogU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgb2ZfZm9ybWF0ICh2MSA6ICdhIEZvcm1hdC50KSA6ICdhIHQgPSB7IHZhbHVlID0gIXYxOyBzZXRfYXQgPSBbJWhlcmVdIH1cbiAgICAgIGxldCB0b19mb3JtYXQgKHQgOiAnYSB0KSA6ICdhIEZvcm1hdC50ID0gcmVmIHQudmFsdWVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlXG4gICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVW5zdGFibGUgPSBTdGFibGUuVjFcbm9wZW4gU3RhYmxlLlRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlQudFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBTaGFwZSA9IENvbW1hbmRfc2hhcGUuU3RhYmxlXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgQ29tbWFuZF9pbnRmXG5tb2R1bGUgU2hhcGUgPSBDb21tYW5kX3NoYXBlXG5cbigqIGluIG9yZGVyIHRvIGRlZmluZSBleHBlY3QgdGVzdHMsIHdlIHdhbnQgdG8gcmFpc2UgcmF0aGVyIHRoYW4gZXhpdCBpZiB0aGUgY29kZSBpc1xuICAgcnVubmluZyBpbiB0aGUgdGVzdCBydW5uZXIgcHJvY2VzcyAqKVxubGV0IHJhaXNlX2luc3RlYWRfb2ZfZXhpdCA9XG4gIG1hdGNoIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIGV4aXQgc3RhdHVzXG4gIDs7XG5cbiAgbW9kdWxlIEV4biA9IHN0cnVjdFxuICAgIGxldCB0b19zdHJpbmcgPSBFeG4udG9fc3RyaW5nXG5cbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnICgpIC0+IHJhaXNlIChGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZykpIGZtdFxubGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBTaGFwZS5Qcml2YXRlLmhlbHBfc2NyZWVuX2NvbXBhcmVcblxuKCogdW5pdmVyc2FsIG1hcHMgYXJlIHVzZWQgdG8gcGFzcyBhcm91bmQgdmFsdWVzIGJldHdlZW4gZGlmZmVyZW50IGJpdHNcbiAgIG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBodWdlIGltcGFjdCBvbiB0aGVcbiAgIHR5cGVzIGludm9sdmVkXG5cbiAgIDEuIHBhc3NpbmcgdmFsdWVzIGZyb20gcGFyc2VkIGFyZ3MgdG8gY29tbWFuZC1saW5lIGF1dG9jb21wbGV0ZSBmdW5jdGlvbnNcbiAgIDIuIHBhc3Npbmcgc3BlY2lhbCB2YWx1ZXMgdG8gYSBiYXNlIGNvbW1hbmRzIHRoYXQgcmVxdWVzdCB0aGVtIGluIHRoZWlyIHNwZWNcbiAqIGV4cGFuZGVkIHN1YmNvbW1hbmQgcGF0aFxuICogYXJncyBwYXNzZWQgdG8gdGhlIGJhc2UgY29tbWFuZFxuICogaGVscCB0ZXh0IGZvciB0aGUgYmFzZSBjb21tYW5kXG4qKVxubW9kdWxlIEVudiA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaXZfbWFwXG5cbiAgbGV0IGtleV9jcmVhdGUgbmFtZSA9IFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWUgc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuZW5kXG5cbm1vZHVsZSBDb21wbGV0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXV0b19jb21wbGV0ZS50IG9wdGlvblxuXG4gIGxldCBydW5fYW5kX2V4aXQgdCBlbnYgfnBhcnQgOiBuZXZlcl9yZXR1cm5zID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICgnYSwgZXhuKSByZXN1bHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIFN0cmluZy5NYXAudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBkYXRlIDogRGF0ZS50IHRcbiAgICB2YWwgcGVyY2VudCA6IFBlcmNlbnQudCB0XG4gICAgdmFsIGhvc3RfYW5kX3BvcnQgOiBIb3N0X2FuZF9wb3J0LnQgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBjb21wbGV0ZSA6IF8gdCAtPiBBdXRvX2NvbXBsZXRlLnRcbiAgICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAnYSBPcl9lcnJvci50XG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0LnBhcnNlIHMpXG4gIGxldCBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IHBhcnNlIH5leHRyYV9kb2MgPSB7IHBhcnNlOyBrZXk7IGNvbXBsZXRlOyBleHRyYV9kb2MgfVxuXG4gIGxldCBjcmVhdGUgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nID1cbiAgICBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyB+ZXh0cmFfZG9jOihMYXp5LmZyb21fdmFsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IG1hcCA/a2V5IHQgfmYgPSB7IHQgd2l0aCBrZXk7IHBhcnNlID0gKGZ1biBzIC0+IGYgKHQucGFyc2UgcykpIH1cblxuICBsZXQgb2ZfbGF6eSA/a2V5IHQgPVxuICAgIGxldCBwYXJzZSBzdHIgPSAoZm9yY2UgdCkucGFyc2Ugc3RyIGluXG4gICAgbGV0IGNvbXBsZXRlIGVudiB+cGFydCA9XG4gICAgICBtYXRjaCAoZm9yY2UgdCkuY29tcGxldGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFNlZSBbcnVuX2FuZF9leGl0XSAtIG5vIGNvbXBsZXRpb25zIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBhXG4gICAgICAgICAgIFtDb21wbGV0ZV0uICopXG4gICAgICAgIFtdXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgZW52IH5wYXJ0XG4gICAgaW5cbiAgICBsZXQgZXh0cmFfZG9jID0gTGF6eS5iaW5kIHQgfmY6ZXh0cmFfZG9jIGluXG4gICAgeyBwYXJzZTsgY29tcGxldGUgPSBTb21lIGNvbXBsZXRlOyBrZXk7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHN0cmluZyA9IGNyZWF0ZSBGbi5pZFxuICBsZXQgaW50ID0gY3JlYXRlIEludC5vZl9zdHJpbmdcbiAgbGV0IGNoYXIgPSBjcmVhdGUgQ2hhci5vZl9zdHJpbmdcbiAgbGV0IGZsb2F0ID0gY3JlYXRlIEZsb2F0Lm9mX3N0cmluZ1xuICBsZXQgZGF0ZSA9IGNyZWF0ZSBEYXRlLm9mX3N0cmluZ1xuICBsZXQgcGVyY2VudCA9IGNyZWF0ZSBQZXJjZW50Lm9mX3N0cmluZ1xuICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBsZXQgc2V4cCA9IGNyZWF0ZSBTZXhwLm9mX3N0cmluZ1xuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID0gY3JlYXRlID9jb21wbGV0ZSAoZnVuIHMgLT4gb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgcykpXG5cbiAgbGV0IGFzc29jaWF0aXZlXG4gICAgICAgID8oYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyA9IHRydWUpXG4gICAgICAgID8obGlzdF92YWx1ZXNfaW5faGVscCA9IHRydWUpXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGxldCBvcGVuIHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIHZhbCBpc19wcmVmaXggOiBzdHJpbmcgLT4gcHJlZml4OnN0cmluZyAtPiBib29sXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBUIDpcbiAgICAgICAgICAgIHsgY21wIDogKG1vZHVsZSBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgICAgICAgICAgOyBtYXAgOiAoc3RyaW5nLCAnYSwgJ2NtcCkgTWFwLnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC0+ICdhIHRcbiAgICBlbmQgaW5cbiAgICBsZXQgKFQgeyBjbXAgPSAobW9kdWxlIFMpOyBtYXAgfSkgPVxuICAgICAgbGV0IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXlcbiAgICAgICAgICAgICh0eXBlIGNtcClcbiAgICAgICAgICAgIChtb2R1bGUgUyA6IFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgICAgIGFsaXN0XG4gICAgICAgID1cbiAgICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgUykgYWxpc3Qgd2l0aFxuICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgKF8gOiBTLnQpIC0+XG4gICAgICAgICAgbGV0IGR1cGxpY2F0ZV9rZXlzID1cbiAgICAgICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGssIChfIDogJ2EpKSAtPiBrLCBrKVxuICAgICAgICAgICAgfD4gTWFwLm9mX2FsaXN0X211bHRpIChtb2R1bGUgUylcbiAgICAgICAgICAgIHw+IE1hcC5maWx0ZXIgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IHRydWUpXG4gICAgICAgICAgICB8PiBNYXAuZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLm9mX2FsaXN0X2V4blwiIChkdXBsaWNhdGVfa2V5cyA6IHN0cmluZyBsaXN0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlIGNtcCA9IFQgeyBjbXA7IG1hcCA9IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXkgY21wIGFsaXN0IH0gaW5cbiAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gbWFrZSAobW9kdWxlIFN0cmluZykgZWxzZSBtYWtlIChtb2R1bGUgU3RyaW5nLkNhc2VsZXNzKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeCA9XG4gICAgICBtYXRjaCBhdXRvX2NvbXBsZXRlIHdpdGhcbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBtYXApIH5mOihmdW4gKG5hbWUsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggUy5pc19wcmVmaXggbmFtZSB+cHJlZml4IHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICgqIEJhc2ggY29tcGxldGlvbiB3aWxsIG5vdCBhY2NlcHQgW0Zvb10gYXMgYSBjb21wbGV0aW9uIGZvciBbZl0uIFNvIHdlIG5lZWRcbiAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSBjYXBpdGFsaXphdGlvbiBnaXZlbi4gKilcbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3VibyBuYW1lIH5wb3M6KFN0cmluZy5sZW5ndGggcHJlZml4KSBpblxuICAgICAgICAgICAgbGV0IG5hbWUgPSBwcmVmaXggXiBzdWZmaXggaW5cbiAgICAgICAgICAgIFNvbWUgbmFtZSlcbiAgICBpblxuICAgIGxldCBmaW5kIGFyZyA9XG4gICAgICBtYXRjaCBNYXAuZmluZCBtYXAgYXJnIHdpdGhcbiAgICAgIHwgU29tZSBfIGFzIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBhY2NlcHRfdW5pcXVlX3ByZWZpeGVzIHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKG5hbWUsIF8pIC0+IFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeDphcmcpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgKF9zaW5nbGV0b25fa2V5LCB2KSBdIC0+IFNvbWUgdlxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+XG4gICAgICAgICAgICAgICgqIEluIHRoZSB0d28tb3ItbW9yZSBjYXNlIHdlIGNvdWxkIHByb3ZpZGUgZmlsdGVyZWQgaGVscCB0ZXh0LCBidXQgaXQnc1xuICAgICAgICAgICAgICAgICBtb3JlIGdlbmVyYWxseSB1c2VmdWwgdG8gbGlzdCBhbGwgdGhlIG9wdGlvbnMsIHdoaWNoIHdlIGRvIGJlbG93LiAqKVxuICAgICAgICAgICAgICBOb25lKSlcbiAgICBpblxuICAgIGNyZWF0ZSdcbiAgICAgIH5leHRyYV9kb2M6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKGlmIGxpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKE1hcC5rZXlzIG1hcCkgaW5cbiAgICAgICAgICAgICBTb21lIFslc3RyaW5nIFwiKGNhbiBiZTogJXt2YWx1ZXN9KVwiXSlcbiAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgID9rZXlcbiAgICAgIH5jb21wbGV0ZVxuICAgICAgKGZ1biBhcmcgLT5cbiAgICAgICAgIG1hdGNoIGZpbmQgYXJnIHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgdmFsaWRfYXJndW1lbnRzX2V4dHJhID1cbiAgICAgICAgICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIFwiXCIgZWxzZSBcIiAoY2FzZSBpbnNlbnNpdGl2ZSlcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgICBcInZhbGlkIGFyZ3VtZW50cyVzOiB7JXN9XCJcbiAgICAgICAgICAgICB2YWxpZF9hcmd1bWVudHNfZXh0cmFcbiAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChNYXAua2V5cyBtYXApKVxuICAgICAgICAgICAgICgpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG5cbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgYXNzb2NpYXRpdmVcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgYWxpc3RcbiAgOztcblxuICBsZXQgb2ZfbWFwXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIG1hcFxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKE1hcC50b19hbGlzdCBtYXApXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChsZXQlbWFwLkxpc3QgdCA9IEUuYWxsIGluXG4gICAgICAgRS50b19zdHJpbmcgdCwgdClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZF9zZXhwYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgZW51bWVyYXRlZFxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEVcblxuICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyBbJXNleHAgKHQgOiBFLnQpXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGxldCBib29sID0gZW51bWVyYXRlZCB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZSAobW9kdWxlIEJvb2wpXG5cbiAgbGV0IGNvbW1hX3NlcGFyYXRlZFxuICAgICAgICA/KGFsbG93X2VtcHR5ID0gZmFsc2UpXG4gICAgICAgID9rZXlcbiAgICAgICAgPyhzdHJpcF93aGl0ZXNwYWNlID0gZmFsc2UpXG4gICAgICAgID8odW5pcXVlX3ZhbHVlcyA9IGZhbHNlKVxuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBzdHJpcCA9IGlmIHN0cmlwX3doaXRlc3BhY2UgdGhlbiBmdW4gc3RyIC0+IFN0cmluZy5zdHJpcCBzdHIgZWxzZSBGbi5pZCBpblxuICAgIGxldCBjb21wbGV0ZSA9XG4gICAgICBPcHRpb24ubWFwIHQuY29tcGxldGUgfmY6KGZ1biBjb21wbGV0ZV9lbHQgZW52IH5wYXJ0IC0+XG4gICAgICAgIGxldCBwcmVmaXhlcywgc3VmZml4ID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcGFydCB+b246JywnIHw+IExpc3QucmV2IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFtdLCBwYXJ0XG4gICAgICAgICAgfCBoZCA6OiB0bCAtPiBMaXN0LnJldiB0bCwgaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX2FsbG93ZWQgPVxuICAgICAgICAgIGlmIG5vdCB1bmlxdWVfdmFsdWVzXG4gICAgICAgICAgdGhlbiBmdW4gKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBzZWVuX2FscmVhZHkgPSBwcmVmaXhlcyB8PiBMaXN0Lm1hcCB+ZjpzdHJpcCB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICAgICAgIGZ1biBjaG9pY2UgLT4gbm90IChTZXQubWVtIHNlZW5fYWxyZWFkeSAoc3RyaXAgY2hvaWNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQ6c3VmZml4KSB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgICAgICAobm90IChTdHJpbmcubWVtIGNob2ljZSAnLCcpKSAmJiBpc19hbGxvd2VkIGNob2ljZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgY2hvaWNlIHRvIGF1dG8tY29tcGxldGUsIGFkZCBhIHNlY29uZCBjaG9pY2Ugd2l0aFxuICAgICAgICAgICAgIGEgdHJhaWxpbmcgY29tbWEgc28gdGhhdCBhdXRvLWNvbXBsZXRpb24gd2lsbCBnbyB0byB0aGUgZW5kIGJ1dCBiYXNoXG4gICAgICAgICAgICAgd29uJ3QgYWRkIGEgc3BhY2UuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcywgb3IgYSBzaW5nbGUgY2hvaWNlXG4gICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGZpbmFsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIGR1bW15IG9wdGlvbi4gKilcbiAgICAgICAgICB8IFsgY2hvaWNlIF0gLT4gWyBjaG9pY2U7IGNob2ljZSBeIFwiLFwiIF1cbiAgICAgICAgICB8IGNob2ljZXMgLT4gY2hvaWNlc1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCBjaG9pY2VzIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgZGF0ZSA9IGRhdGVcbiAgICBsZXQgcGVyY2VudCA9IHBlcmNlbnRcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGhvc3RfYW5kX3BvcnRcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBjb21wbGV0ZSB0ID1cbiAgICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZlxuICAgICAgfCBOb25lIC0+IGZ1biBfIH5wYXJ0Ol8gLT4gW11cbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlIHQgc3RyID0gcGFyc2UgdCBzdHIgfD4gT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRmxhZyA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnQgPVxuICAgICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmcgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdcblxuICAgIGxldCB0b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gXyB9IGZsYWdfbmFtZSA9XG4gICAgICB0b19oZWxwX3N0cmluZyB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfSB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIGxldCBhbnkgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9sZWFzdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9tb3N0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gICAgbGV0IGV4YWN0bHlfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICBlbmRcblxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBOb19hcmcgb2YgKEVudi50IC0+IEVudi50KVxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBvZiAoRW52LnQgLT4gc3RyaW5nKVxuICAgIHwgQXJnIG9mIChFbnYudCAtPiBzdHJpbmcgLT4gRW52LnQpICogQ29tcGxldGVyLnRcbiAgICB8IFJlc3Qgb2YgKEVudi50IC0+IHN0cmluZyBsaXN0IC0+IEVudi50KVxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoIFN0cmluZy5NYXAub2ZfYWxpc3QgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKSB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGZsYWcgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUgOjogZmxhZy5hbGlhc2VzKVxuICAgICAgICB8PiBMaXN0LmZpbmRfYV9kdXAgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddXG4gICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4geCAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBvciBhbGlhc2VzIG5hbWVkICVzXCIgeCAoKSk7XG4gICAgICAgIG1hcFxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHsgYWN0aW9uIDogYWN0aW9uXG4gICAgOyByZWFkIDogRW52LnQgLT4gJ2FcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cblxuICB0eXBlICdhIHQgPSBzdHJpbmcgLT4gJ2Egc3RhdGVcblxuICBsZXQgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgeyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICA7IGFjdGlvbiA9XG4gICAgICAgIChsZXQgdXBkYXRlIGVudiBhcmcgPVxuICAgICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhcmcgd2l0aFxuICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgIGRpZSBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlUy5cXG4lc1wiIG5hbWUgYXJnIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgICAgICAgfCBPayBhcmcgLT5cbiAgICAgICAgICAgICBsZXQgZW52ID0gd3JpdGUgZW52IGFyZyBpblxuICAgICAgICAgICAgIChtYXRjaCBBcmdfdHlwZS5rZXkgYXJnX3R5cGUgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZW52XG4gICAgICAgICAgICAgIHwgU29tZSBrZXkgLT4gRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTphcmcpXG4gICAgICAgICBpblxuICAgICAgICAgQXJnICh1cGRhdGUsIEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlKSlcbiAgICA7IGV4dHJhX2RvYyA9IEFyZ190eXBlLmV4dHJhX2RvYyBhcmdfdHlwZVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFwX2ZsYWcgdCB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uOyByZWFkID0gKGZ1biBlbnYgLT4gZiAocmVhZCBlbnYpKTsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfVxuICA7O1xuXG4gIGxldCB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyA9XG4gICAgRW52LnVwZGF0ZSBlbnYga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFyZ1xuICAgICAgfCBTb21lIF8gLT4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpKVxuICA7O1xuXG4gIGxldCByZXF1aXJlZF92YWx1ZSA/ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGRlZmF1bHQgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+IGRpZSBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lICgpKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXNcbiAgOztcblxuICBsZXQgcmVxdWlyZWQgYXJnX3R5cGUgbmFtZSA9IHJlcXVpcmVkX3ZhbHVlIGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuXG4gIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSBuYW1lID1cbiAgICByZXF1aXJlZF92YWx1ZSB+ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgb3B0aW9uYWwgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBFbnYuZmluZCBlbnYga2V5IGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19nZW5lcmFsIH5rZXlfdmFsdWUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiB1bml0XSBpblxuICAgIGxldCByZWFkIGVudiA9IEVudi5tZW0gZW52IGtleSBpblxuICAgIGxldCB3cml0ZSBlbnYgPVxuICAgICAgaWYgRW52Lm1lbSBlbnYga2V5XG4gICAgICB0aGVuIGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKVxuICAgICAgZWxzZSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOigpXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uIGVudiA9XG4gICAgICBsZXQgZW52ID1cbiAgICAgICAgT3B0aW9uLmZvbGQga2V5X3ZhbHVlIH5pbml0OmVudiB+ZjooZnVuIGVudiAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgICBFbnYuc2V0X3dpdGhfZGVmYXVsdCBlbnYgfmtleSB+ZGF0YTp2YWx1ZSlcbiAgICAgIGluXG4gICAgICB3cml0ZSBlbnZcbiAgICBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgLT5cbiAgICAgICAgICBsZXQgZW52ID0gYWN0aW9uIGVudiBpblxuICAgICAgICAgIGYgKCk7XG4gICAgICAgICAgZW52XG4gICAgaW5cbiAgICB7IHJlYWRcbiAgICA7IGFjdGlvbiA9IE5vX2FyZyBhY3Rpb25cbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnIG5hbWUgPSBub19hcmdfZ2VuZXJhbCBuYW1lIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcblxuICBsZXQgbm9fYXJnX3JlZ2lzdGVyIH5rZXkgfnZhbHVlIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsIG5hbWUgfmtleV92YWx1ZTooU29tZSAoa2V5LCB2YWx1ZSkpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID0gTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID1cbiAgICAgIEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpGcXVldWUuZW1wdHkgfm5hbWUgWyVzZXhwX29mOiBfIEZxdWV1ZS50XVxuICAgIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEZxdWV1ZS50b19saXN0IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBmaXJzdCA6OiByZXN0IC0+IGZpcnN0LCByZXN0XG4gICAgICB8IFtdIC0+IGRpZSBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lICgpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9XG4gICAgICBFbnYuV2l0aF9kZWZhdWx0LmNoYW5nZSBlbnYga2V5IH5mOihmdW4gcSAtPiBGcXVldWUuZW5xdWV1ZSBxIGFyZylcbiAgICBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZVxuICA7O1xuXG4gIGxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA3XSBVc2UgW29uZV9vcl9tb3JlX2FzX3BhaXJdIG9yIFtvbmVfb3JfbW9yZV9hc19saXN0XVwiXSBvbmVfb3JfbW9yZVxuICAgID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgY21kX2xpbmUgPSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOmNtZF9saW5lIGluXG4gICAgbGV0IHJlYWQgZW52ID0gRW52LmZpbmQgZW52IGtleSBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgeCAtPlxuICAgICAgICAgIGYgeDtcbiAgICAgICAgICBhY3Rpb24gZW52IHhcbiAgICBpblxuICAgIHsgYWN0aW9uID0gUmVzdCBhY3Rpb25cbiAgICA7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnX2Fib3J0IH5leGl0IF9uYW1lID1cbiAgICB7IGFjdGlvbiA9IE5vX2FyZyAoZnVuIF8gLT4gbmV2ZXJfcmV0dXJucyAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID0gKGZ1biBfIC0+ICgpKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgbmFtZSA9IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKSB+a2V5X3ZhbHVlOk5vbmUgbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgZXNjYXBlIH5ob29rID0gZXNjYXBlX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGF0aCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBjcmVhdGUgOiBwYXRoX3RvX2V4ZTpzdHJpbmcgLT4gdFxuICB2YWwgb2ZfcGFydHMgOiBzdHJpbmcgbGlzdCAtPiB0XG4gIHZhbCBhcHBlbmQgOiB0IC0+IHN1YmNvbW1hbmQ6c3RyaW5nIC0+IHRcbiAgdmFsIHJlcGxhY2VfZmlyc3QgOiB0IC0+IGZyb206c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdFxuICB2YWwgcGFydHMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCBwYXJ0c19leGVfYmFzZW5hbWUgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2RvdHMgOiB0IC0+IHN0cmluZ1xuICB2YWwgcG9wX2hlbHAgOiB0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGNyZWF0ZSB+cGF0aF90b19leGUgPSBbIHBhdGhfdG9fZXhlIF1cbiAgbGV0IG9mX3BhcnRzIHBhcnRzID0gTGlzdC5yZXYgcGFydHNcbiAgbGV0IGFwcGVuZCB0IH5zdWJjb21tYW5kID0gc3ViY29tbWFuZCA6OiB0XG4gIGxldCBwYXJ0cyA9IExpc3QucmV2XG5cbiAgbGV0IHBhcnRzX2V4ZV9iYXNlbmFtZSB0ID1cbiAgICBtYXRjaCBMaXN0LnJldiB0IHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZCA6OiB0bCAtPiBGaWxlbmFtZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuICAgIHZhbCBhZF9ob2MgOiB1c2FnZTpzdHJpbmcgLT4gdFxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbmFtZXMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcblxuICAgIGxldCBpbnZhcmlhbnQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFNoYXBlLkFub25zLkdyYW1tYXIudXNhZ2VcblxuICAgIGxldCByZWMgaXNfZml4ZWRfYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IHRydWVcbiAgICAgIHwgT25lIF8gLT4gdHJ1ZVxuICAgICAgfCBNYW55IF8gLT4gZmFsc2VcbiAgICAgIHwgTWF5YmUgXyAtPiBmYWxzZVxuICAgICAgfCBBZF9ob2MgXyAtPiBmYWxzZVxuICAgICAgfCBDb25jYXQgdHMgLT5cbiAgICAgICAgKG1hdGNoIExpc3QucmV2IHRzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICB8IGxhc3QgOjogb3RoZXJzIC0+XG4gICAgICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIG90aGVycyB+Zjppc19maXhlZF9hcml0eSk7XG4gICAgICAgICAgIGlzX2ZpeGVkX2FyaXR5IGxhc3QpXG4gICAgOztcblxuICAgIGxldCByZWMgbmFtZXMgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFtdXG4gICAgICB8IE9uZSBzIC0+IFsgcyBdXG4gICAgICB8IE1hbnkgdCAtPiBuYW1lcyB0XG4gICAgICB8IE1heWJlIHQgLT4gbmFtZXMgdFxuICAgICAgfCBBZF9ob2MgcyAtPiBbIHMgXVxuICAgICAgfCBDb25jYXQgdHMgLT4gTGlzdC5jb25jYXRfbWFwIHRzIH5mOm5hbWVzXG4gICAgOztcblxuICAgIGxldCB6ZXJvID0gWmVyb1xuICAgIGxldCBvbmUgbmFtZSA9IE9uZSBuYW1lXG5cbiAgICBsZXQgbWFueSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+XG4gICAgICAgIGlmIG5vdCAoaXNfZml4ZWRfYXJpdHkgdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJpdGVyYXRpb24gb2YgdmFyaWFibGUtbGVuZ3RoIGdyYW1tYXJzIHN1Y2ggYXMgJXMgaXMgZGlzYWxsb3dlZFwiXG4gICAgICAgICAgICAodXNhZ2UgdClcbiAgICAgICAgICAgICgpO1xuICAgICAgICBNYW55IHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSBcXFxuICAgICAgICAgICAgICAgICAgIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgXFxcbiAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgXFxcbiAgICAgICAgICAgICAgICAgICBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICB2YWwgZnJvbV9lbnYgOiAoRW52LnQgLT4gJ2EpIC0+ICdhIHRcbiAgICB2YWwgb25lIDogbmFtZTpzdHJpbmcgLT4gJ2EgQXJnX3R5cGUudCAtPiAnYSB0XG4gICAgdmFsIG1heWJlIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHZhbCBzZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHN0b3BfcGFyc2luZyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaW5hbF92YWx1ZSA6ICdhIHQgLT4gRW52LnQgLT4gJ2FcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgKCogSWYgZW1hY3MgaGlnaGxpZ2h0cyBbcGFyc2VyXSBhcyBpZiBpdCB3ZXJlIGEga2V5d29yZCwgdGhhdCdzIG9ubHkgYmVjYXVzZVxuICAgICAgICAgICAgIFtwYXJzZXJdIHdhcyBhIGtleXdvcmQgaW4gY2FtbHA0LiBbcGFyc2VyXSBpcyBhIHJlZ3VsYXIgbmFtZSBpbiBPQ2FtbC4gKilcbiAgICAgICAgICBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHZhbCBjb25zdW1lIDogJ2EgdCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBDb25zdW1lX3Jlc3VsdC50XG4gICAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBuZXZlcl9yZXR1cm5zXG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRG9uZSBvZiAoRW52LnQgLT4gJ2EpXG4gICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgKCogQSBbVGVzdF0gd2lsbCAoZ2VuZXJhbGx5KSByZXR1cm4gYSBbRG9uZSBfXSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBtb3JlIGlucHV0IGFuZFxuICAgICAgICAgYSBbTW9yZV0gcGFyc2VyIHRvIHVzZSBpZiB0aGVyZSBpcyBhbnkgbW9yZSBpbnB1dC4gKilcbiAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAoKiBJZiB3ZSdyZSBvbmx5IGNvbXBsZXRpbmcsIHdlIGNhbid0IHB1bGwgdmFsdWVzIG91dCwgYnV0IHdlIGNhbiBzdGlsbCBzdGVwIHRocm91Z2hcbiAgICAgICAgIFt0XXMgKHdoaWNoIG1heSBoYXZlIGNvbXBsZXRpb24gc2V0IHVwKS4gKilcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgfCBTdG9wX3BhcnNpbmcgb2YgJ2EgdFxuXG4gICAgYW5kICdhIG1vcmUgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHBhcnNlIDogc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgcGFyc2VfcmVzdWx0XG4gICAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICAgIH1cblxuICAgIGFuZCBwYWNrZWQgPSBQYWNrZWQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gICAgYW5kICdhIHBhcnNlX3Jlc3VsdCA9XG4gICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICB9XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEb25lIChmdW4gXyAtPiBhKVxuICAgIGxldCBmcm9tX2VudiBmID0gRG9uZSBmXG4gICAgbGV0IHN0b3BfcGFyc2luZyB0ID0gU3RvcF9wYXJzaW5nIHRcblxuICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgRG9uZSBfIC0+IFtdICgqIHdvbid0IGNvbXBsZXRlIG9yIGNvbnN1bWUgYW55dGhpbmcgKilcbiAgICAgIHwgKE1vcmUgXyB8IFRlc3QgXyB8IFN0b3BfcGFyc2luZyBfKSBhcyB4IC0+IFsgUGFja2VkIHggXVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9tb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH0gfmYgPVxuICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXIgPSBmIHBhcnNlcjsgdXBkYXRlX2VudiB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9XG4gICAgOztcblxuICAgIGxldCByZWMgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9XG4gICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgKCogW0RvbmVdICopXG4gICAgICB8IERvbmUgZiwgRG9uZSB4IC0+IERvbmUgKGZ1biBlbnYgLT4gZiBlbnYgKHggZW52KSlcbiAgICAgICgqIG5leHQgc3RlcCBbTW9yZV0gKilcbiAgICAgIHwgTW9yZSBtb3JlLCBfIC0+IHBhcnNlX21vcmUgbW9yZSB+ZjooZnVuIHRsIC0+IHRsIDwqPiB0X3JpZ2h0KVxuICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgKCogbmV4dCBzdGVwIFtPbmx5X2Zvcl9jb21wbGV0aW9uXSAqKVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8sIF8gfCBEb25lIF8sIE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICgqIG5leHQgc3RlcCBbU3RvcF9wYXJzaW5nXSAqKVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdGwsIHRyIHwgKERvbmUgXyBhcyB0bCksIFN0b3BfcGFyc2luZyB0ciAtPiBTdG9wX3BhcnNpbmcgKHRsIDwqPiB0cilcbiAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgIHwgVGVzdCB0ZXN0LCBfIC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0ZXN0IH5tb3JlIDwqPiB0X3JpZ2h0KVxuICAgICAgfCBEb25lIF8sIFRlc3QgdGVzdCAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdF9sZWZ0IDwqPiB0ZXN0IH5tb3JlKVxuICAgIDs7XG5cbiAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gICAgbGV0IG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIGxldCBwYXJzZSBhbm9uIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFub24gd2l0aFxuICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgIGlmIGZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogd2UgZG9uJ3QgKnJlYWxseSogY2FyZSBhYm91dCB0aGlzIHZhbHVlLCBzbyBqdXN0IHB1dCBpbiBhIGR1bW15IHZhbHVlIHNvXG4gICAgICAgICAgICAgICBjb21wbGV0aW9uIGNhbiBjb250aW51ZSAqKVxuICAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgIGVsc2UgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTXFxuJXNcIiBuYW1lIGFub24gKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgICB8IE9rIHYgLT5cbiAgICAgICAgICB7IHBhcnNlciA9IHJldHVybiB2XG4gICAgICAgICAgOyB1cGRhdGVfZW52ID1cbiAgICAgICAgICAgICAgKGZ1biBlbnYgLT5cbiAgICAgICAgICAgICAgICAgT3B0aW9uLmZvbGQgKEFyZ190eXBlLmtleSBhcmdfdHlwZSkgfmluaXQ6ZW52IH5mOihmdW4gZW52IGtleSAtPlxuICAgICAgICAgICAgICAgICAgIEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6dikpXG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgPSBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSB9XG4gICAgOztcblxuICAgIGxldCBvbmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgVGVzdFxuICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgIGlmIG1vcmVcbiAgICAgICAgICAgdGhlbiBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZVxuICAgICAgICAgICBlbHNlIGRpZSBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUgKCkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID0gVGVzdCAoZnVuIH5tb3JlIC0+IGlmIG1vcmUgdGhlbiB0ID4+fCBmdW4gYSAtPiBTb21lIGEgZWxzZSByZXR1cm4gTm9uZSlcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIHsgbmFtZTsgXyB9IC0+IGRpZSBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUgKClcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQlVHOiBhc2tlZCBmb3IgZmluYWwgdmFsdWUgd2hlbiBkb2luZyBjb21wbGV0aW9uXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIGxldCByZWMgY29uc3VtZSA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudCA9XG4gICAgICBmdW4gdCBhcmcgfmZvcl9jb21wbGV0aW9uIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRG9uZSBfIC0+IGRpZSBcInRvbyBtYW55IGFub255bW91cyBhcmd1bWVudHNcIiAoKVxuICAgICAgfCBUZXN0IGYgLT4gY29uc3VtZSAoZiB+bW9yZTp0cnVlKSBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICB8IE1vcmUgeyBwYXJzZTsgXyB9IC0+XG4gICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICB7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52IH1cbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4geyAoY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb24pIHdpdGggcGFyc2VfZmxhZ3MgPSBmYWxzZSB9XG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gcGFja2VkIC0+XG4gICAgICAgIChtYXRjaCBwYWNrZWQgd2l0aFxuICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgIHwgUGFja2VkIHQgOjogcmVzdCAtPlxuICAgICAgICAgICBsZXQgKHsgdXBkYXRlX2VudjsgcGFyc2VfZmxhZ3M7IHBhcnNlciB9IDogXyBDb25zdW1lX3Jlc3VsdC50KSA9XG4gICAgICAgICAgICAgY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB1cGRhdGVfZW52XG4gICAgICAgICAgIDsgcGFyc2VfZmxhZ3NcbiAgICAgICAgICAgOyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHBhcnNlciBAIHJlc3QpXG4gICAgICAgICAgIH0pXG4gICAgOztcblxuICAgIGxldCByZWMgY29tcGxldGUgOiB0eXBlIGEuIGEgdCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBuZXZlcl9yZXR1cm5zID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPSBDaGFyLlNldC5vZl9saXN0IFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXSBpblxuICAgICAgU3RyaW5nLmV4aXN0cyBzdHIgfmY6KFNldC5tZW0gc3BlY2lhbF9jaGFycylcbiAgICBpblxuICAgIGlmIGhhc19zcGVjaWFsX2NoYXJzIHRoZW4gc3RyIGVsc2UgU3RyaW5nLnVwcGVyY2FzZSBzdHJcbiAgOztcblxuICBsZXQgKCAlOiApIG5hbWUgYXJnX3R5cGUgPVxuICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICB7IHAgPSBQYXJzZXIub25lIH5uYW1lIGFyZ190eXBlOyBncmFtbWFyID0gR3JhbW1hci5vbmUgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9hbm9ucyB0IH5mID0geyBwID0gdC5wID4+fCBmOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cbiAgbGV0IG1heWJlIHQgPSB7IHAgPSBQYXJzZXIubWF5YmUgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYXliZSB0LmdyYW1tYXIgfVxuXG4gIGxldCBtYXliZV93aXRoX2RlZmF1bHQgZGVmYXVsdCB0ID1cbiAgICBsZXQgdCA9IG1heWJlIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuIHYgLT4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IHYpIH1cbiAgOztcblxuICBsZXQgc2VxdWVuY2UgdCA9IHsgcCA9IFBhcnNlci5zZXF1ZW5jZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1hbnkgdC5ncmFtbWFyIH1cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgPSB0MiB0IChzZXF1ZW5jZSB0KVxuXG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCB0ID1cbiAgICBsZXQgdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuICh4LCB4cykgLT4geCA6OiB4cykgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgdCA9IHsgcCA9IFBhcnNlci5zdG9wX3BhcnNpbmcgdC5wOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBhZF9ob2MgfnVzYWdlX2FyZyA9XG4gICAgICB7IHAgPVxuICAgICAgICAgIFBhcnNlci5zZXF1ZW5jZVxuICAgICAgICAgICAgKFBhcnNlci5vbmUgfm5hbWU6XCJXSUxMIE5FVkVSIEJFIFBSSU5URURcIiBBcmdfdHlwZS5FeHBvcnQuc3RyaW5nKVxuICAgICAgOyBncmFtbWFyID0gR3JhbW1hci5hZF9ob2MgfnVzYWdlOnVzYWdlX2FyZ1xuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDbWRsaW5lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2Ygc3RyaW5nICogdFxuICAgIHwgQ29tcGxldGUgb2Ygc3RyaW5nXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IG9mX2xpc3QgYXJncyA9IExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0Ok5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+IENvbnMgKGFyZywgYXJncykpXG5cbiAgbGV0IHJlYyB0b19saXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+IHggOjogdG9fbGlzdCB4c1xuICAgIHwgQ29tcGxldGUgeCAtPiBbIHggXVxuICA7O1xuXG4gIGxldCByZWMgZW5kc19pbl9jb21wbGV0ZSA9IGZ1bmN0aW9uXG4gICAgfCBDb21wbGV0ZSBfIC0+IHRydWVcbiAgICB8IE5pbCAtPiBmYWxzZVxuICAgIHwgQ29ucyAoXywgYXJncykgLT4gZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gIDs7XG5cbiAgbGV0IGV4dGVuZCB0IH5leHRlbmQgfnBhdGggPVxuICAgIGlmIGVuZHNfaW5fY29tcGxldGUgdFxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBhdGhfbGlzdCA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXSAoTGlzdC50bCAoUGF0aC5wYXJ0cyBwYXRoKSkgaW5cbiAgICAgIG9mX2xpc3QgKHRvX2xpc3QgdCBAIGV4dGVuZCBwYXRoX2xpc3QpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IFNoYXBlLlByaXZhdGUuS2V5X3R5cGVcblxubGV0IGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBmbGFnX29yX3N1YmNvbW1hbmQgPVxuICBpZiBTdHJpbmcuZXhpc3RzIGZsYWdfb3Jfc3ViY29tbWFuZCB+ZjooZnVuIGMgLT4gQ2hhci4oID0gKSBjICdfJylcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCIlcyAlcyBjb250YWlucyBhbiB1bmRlcnNjb3JlLiBVc2UgYSBkYXNoIGluc3RlYWQuXCJcbiAgICAgIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpXG4gICAgICBmbGFnX29yX3N1YmNvbW1hbmRcbiAgICAgICgpXG47O1xuXG5sZXQgbm9ybWFsaXplIGtleV90eXBlIGtleSA9XG4gIGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBrZXk7XG4gIG1hdGNoIGtleV90eXBlIHdpdGhcbiAgfCBLZXlfdHlwZS5GbGFnIC0+XG4gICAgaWYgU3RyaW5nLmVxdWFsIGtleSBcIi1cIiB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWU6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5leGlzdHMga2V5IH5mOkNoYXIuaXNfd2hpdGVzcGFjZVxuICAgIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZSAoY29udGFpbnMgd2hpdGVzcGFjZSk6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcIi1cIiBrZXkgdGhlbiBrZXkgZWxzZSBcIi1cIiBeIGtleVxuICB8IEtleV90eXBlLlN1YmNvbW1hbmQgLT4gU3RyaW5nLmxvd2VyY2FzZSBrZXlcbjs7XG5cbmxldCBsb29rdXBfZXhwYW5kID0gU2hhcGUuUHJpdmF0ZS5sb29rdXBfZXhwYW5kXG5cbmxldCBsb29rdXBfZXhwYW5kX3dpdGhfYWxpYXNlcyBtYXAgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGFsaXN0ID1cbiAgICBMaXN0LmNvbmNhdF9tYXAgKFN0cmluZy5NYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgZmxhZ3MgOiBGbGFnLkludGVybmFsLnQgU3RyaW5nLk1hcC50XG4gICAgO1xuICAgICAgYW5vbnMgOiB1bml0IC0+IChbIGBQYXJzZV9hcmdzIF0gLT4gWyBgUnVuX21haW4gXSAtPiB1bml0KSBBbm9ucy5QYXJzZXIudFxuICAgIDsgdXNhZ2UgOiBBbm9ucy5HcmFtbWFyLnRcbiAgICB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgc3ViY29tbWFuZF9jbXBfZnN0IChhLCBfKSAoYywgXykgPSBoZWxwX3NjcmVlbl9jb21wYXJlIGEgY1xuXG4gICAgbGV0IGZsYWdzX2hlbHAgPyhkaXNwbGF5X2hlbHBfZmxhZ3MgPSB0cnVlKSB0ID1cbiAgICAgIGxldCBmbGFncyA9IFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzIGluXG4gICAgICBsZXQgZmxhZ3MgPVxuICAgICAgICBpZiBkaXNwbGF5X2hlbHBfZmxhZ3NcbiAgICAgICAgdGhlbiBmbGFnc1xuICAgICAgICBlbHNlIExpc3QuZmlsdGVyIGZsYWdzIH5mOihmdW4gZiAtPiBTdHJpbmcuKCA8PiApIGYubmFtZSBcIi1oZWxwXCIpXG4gICAgICBpblxuICAgICAgTGlzdC5jb25jYXRfbWFwIH5mOkZsYWcuSW50ZXJuYWwuRGVwcmVjYXRlZC5oZWxwIGZsYWdzXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZvcm1hdHRlZF9mbGFncyB0ID1cbiAgICBTdHJpbmcuTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gbmV2ZXJfcmV0dXJucyAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydCkpXG4gICAgfCBSZXN0IGYgLT5cbiAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIHRoZW4gZXhpdCAwO1xuICAgICAgZiBlbnYgKENtZGxpbmUudG9fbGlzdCBhcmdzKSwgTmlsXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgKGNtZGxpbmUgOiBDbWRsaW5lLnQpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3MgPVxuICAgIG1hdGNoIGNtZGxpbmUgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBMaXN0Lml0ZXIgKFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzKSB+ZjooZnVuIGZsYWcgLT4gZmxhZy5jaGVja19hdmFpbGFibGUgZW52KTtcbiAgICAgIEFub25zLlBhcnNlci5maW5hbF92YWx1ZSBwYXJzZXIgZW52XG4gICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICBpZiBwYXJzZV9mbGFncyAmJiBTdHJpbmcuaXNfcHJlZml4IHBhcnQgfnByZWZpeDpcIi1cIlxuICAgICAgdGhlbiAoXG4gICAgICAgIExpc3QuaXRlciAoU3RyaW5nLk1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIG5ldmVyX3JldHVybnMgKEFub25zLlBhcnNlci5jb21wbGV0ZSBwYXJzZXIgZW52IH5wYXJ0KVxuICAgIHwgQ29ucyAoYXJnLCBhcmdzKSAtPlxuICAgICAgbGV0IGFyZywgYXJncywgYXJnX2lzX2ZsYWcgPVxuICAgICAgICBtYXRjaCBwYXJzZV9mbGFncyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAobWF0Y2ggYXJnLCBhcmdzIHdpdGhcbiAgICAgICAgICAgKCogdGhlICctYW5vbicgZmxhZyBpcyBoZXJlIGFzIGFuIGVzY2FwZSBoYXRjaCBpbiBjYXNlIHlvdSBoYXZlIGFuXG4gICAgICAgICAgICAgIGFub255bW91cyBhcmd1bWVudCB0aGF0IHN0YXJ0cyB3aXRoIGEgaHlwaGVuLiAqKVxuICAgICAgICAgICB8IFwiLWFub25cIiwgQ29ucyAoYXJnLCBhcmdzKSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgICgqIHN1cHBvcnQgdGhlIGNvbW1vbiBVbml4IGNvbnZlbnRpb24gd2hlcmUgXCItXCIgbWVhbnMgc3RkaW4gKilcbiAgICAgICAgICAgfCBcIi1cIiwgXyAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgIHwgXywgXyAtPiBhcmcsIGFyZ3MsIFN0cmluZy5pc19wcmVmaXggYXJnIH5wcmVmaXg6XCItXCIpXG4gICAgICBpblxuICAgICAgKG1hdGNoIGFyZ19pc19mbGFnIHdpdGhcbiAgICAgICB8IHRydWUgLT5cbiAgICAgICAgIGxldCBlbnYsIGFyZ3MgPSBydW5fZmxhZyB0IGVudiBhcmcgYXJncyBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIGFyZ3MgfnBhcnNlX2ZsYWdzIH5mb3JfY29tcGxldGlvblxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFnczEgPSBwYXJzZV9mbGFncyBpblxuICAgICAgICAgbGV0ICh7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICAgICAgICA6IF8gQW5vbnMuUGFyc2VyLkNvbnN1bWVfcmVzdWx0LnQpXG4gICAgICAgICAgID1cbiAgICAgICAgICAgQW5vbnMuUGFyc2VyLmNvbnN1bWUgcGFyc2VyIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZW52ID0gdXBkYXRlX2VudiBlbnYgaW5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMSAmJiBwYXJzZV9mbGFnczIgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciB+cGFyc2VfZmxhZ3MgYXJncyB+Zm9yX2NvbXBsZXRpb24pXG4gIDs7XG5cbiAgbGV0IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyB3aGVuIGZvcl9jb21wbGV0aW9uIC0+IGV4aXQgMFxuICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSAtPiBleGl0IHN0YXR1c1xuICAgIHwgXyAtPlxuICAgICAgbGV0IGV4bl9zdHIgPVxuICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+IG1zZ1xuICAgICAgICB8IF8gLT4gU2V4cC50b19zdHJpbmdfaHVtIFslc2V4cCAoZXhuIDogZXhuKV1cbiAgICAgIGluXG4gICAgICBsZXQgdmVyYm9zZSA9IE9wdGlvbi52YWx1ZSB2ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5kZWZhdWx0OnRydWUgaW5cbiAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICBpZiB2ZXJib3NlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICB+c2VwOlwiXFxuXFxuXCJcbiAgICAgICAgICAgIFsgXCJFcnJvciBwYXJzaW5nIGNvbW1hbmQgbGluZTpcIlxuICAgICAgICAgICAgOyBpbmRlbnRfYnlfMiBleG5fc3RyXG4gICAgICAgICAgICA7IFwiRm9yIHVzYWdlIGluZm9ybWF0aW9uLCBydW5cIlxuICAgICAgICAgICAgOyBcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgLWhlbHBcXG5cIlxuICAgICAgICAgICAgXVxuICAgICAgICBlbHNlIGV4bl9zdHJcbiAgICAgIGluXG4gICAgICBwcmVycl9lbmRsaW5lIGVycm9yX21zZztcbiAgICAgIGV4aXQgMVxuICA7O1xuXG4gIGxldCBydW4gdCBlbnYgfndoZW5fcGFyc2luZ19zdWNjZWVkcyB+cGF0aCB+YXJncyB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciB+aGVscF90ZXh0ID1cbiAgICBsZXQgZm9yX2NvbXBsZXRpb24gPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgIGxldCBlbnYgPVxuICAgICAgZW52XG4gICAgICB8PiBFbnYuc2V0IH5rZXk6cGF0aF9rZXkgfmRhdGE6cGF0aFxuICAgICAgfD4gRW52LnNldCB+a2V5OmFyZ3Nfa2V5IH5kYXRhOihDbWRsaW5lLnRvX2xpc3QgYXJncylcbiAgICAgIHw+IEVudi5zZXQgfmtleTpoZWxwX2tleSB+ZGF0YTpoZWxwX3RleHRcbiAgICBpblxuICAgIG1hdGNoXG4gICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICBydW5fY21kbGluZVxuICAgICAgICAgIHRcbiAgICAgICAgICBlbnZcbiAgICAgICAgICAodC5hbm9ucyAoKSlcbiAgICAgICAgICB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB+cGFyc2VfZmxhZ3M6dHJ1ZVxuICAgICAgICAgIGFyZ3NcbiAgICAgICAgICBgUGFyc2VfYXJncylcbiAgICB3aXRoXG4gICAgfCBPayB0aHVuayAtPlxuICAgICAgd2hlbl9wYXJzaW5nX3N1Y2NlZWRzICgpO1xuICAgICAgdGh1bmsgYFJ1bl9tYWluXG4gICAgfCBFcnJvciBleG4gLT4gcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gIDs7XG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBmIDogdW5pdCAtPiAoJ2EgLT4gJ2IpIEFub25zLlBhcnNlci50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICAoKiB0aGUgKGhpc3RvcmljYWwpIHJlYXNvbiB0aGF0IFtwYXJhbV0gaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbdF0gcmF0aGVyIHRoYW4gdGhlXG4gICAgICAgb3RoZXIgd2F5IHJvdW5kIGlzIHRoYXQgdGhlIGRlbGF5ZWQgZXZhbHVhdGlvbiBtYXR0ZXJlZCBmb3Igc2VxdWVuY2luZyBvZlxuICAgICAgIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiByZWYgY2VsbHMgaW4gdGhlIG9sZCByZXByZXNlbnRhdGlvbiBvZiBmbGFncyAqKVxuICAgIHR5cGUgJ2EgcGFyYW0gPSB7IHBhcmFtIDogJ20uICgnYSAtPiAnbSwgJ20pIHQgfVxuXG4gICAgb3BlbiBBbm9ucy5QYXJzZXIuRm9yX29wZW5pbmdcblxuICAgIGxldCBhcHAgdDEgdDIgfmYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gZiA8Kj4gdDEuZiAoKSA8Kj4gdDIuZiAoKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHQyLmZsYWdzICgpIEAgdDEuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIHQxLnVzYWdlICgpOyB0Mi51c2FnZSAoKSBdKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICAoKiBTbyBzYWQuICBXZSBjYW4ndCBkZWZpbmUgW2FwcGx5XSBpbiB0ZXJtcyBvZiBbYXBwXSBiZWNhdXNlIG9mIHRoZSB2YWx1ZVxuICAgICAgIHJlc3RyaWN0aW9uLiAqKVxuICAgIGxldCBhcHBseSBwZiBweCA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPVxuICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJldHVybiAoZnVuIG1mIG14IGsgLT4gbWYgKGZ1biBmIC0+IG14IChmdW4geCAtPiBrIChmIHgpKSkpXG4gICAgICAgICAgICAgICAgIDwqPiBwZi5wYXJhbS5mICgpXG4gICAgICAgICAgICAgICAgIDwqPiBweC5wYXJhbS5mICgpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHB4LnBhcmFtLmZsYWdzICgpIEAgcGYucGFyYW0uZmxhZ3MgKCkpXG4gICAgICAgICAgOyB1c2FnZSA9XG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyBwZi5wYXJhbS51c2FnZSAoKTsgcHgucGFyYW0udXNhZ2UgKCkgXSlcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCAoICsrICkgdDEgdDIgPSBhcHAgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gYXBwIHQxIHAyLnBhcmFtIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKzwgKSB0MSBwMiA9IGFwcCBwMi5wYXJhbSB0MSB+ZjooZnVuIGYyIGYxIHggLT4gZjEgKGYyIHgpKVxuXG4gICAgbGV0IHN0ZXAgZiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiBmKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBlbXB0eSA6ICdtLiAoJ20sICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIEZuLmlkKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBjb25zdCB2ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gayAtPiBrIHYpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXAgcCB+ZiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHAucGFyYW0uZiAoKSA+PnwgZnVuIGMgayAtPiBjIChmdW4gdiAtPiBrIChmIHYpKSlcbiAgICAgICAgICA7IGZsYWdzID0gcC5wYXJhbS5mbGFnc1xuICAgICAgICAgIDsgdXNhZ2UgPSBwLnBhcmFtLnVzYWdlXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgd3JhcCBmIHQgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiB0LmYgKCkgPj58IGZ1biBydW4gbWFpbiAtPiBmIH5ydW4gfm1haW4pXG4gICAgICA7IGZsYWdzID0gdC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHQudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG9mX3BhcmFtcyBwYXJhbXMgPVxuICAgICAgbGV0IHQgPSBwYXJhbXMucGFyYW0gaW5cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gdC5mICgpID4+fCBmdW4gcnVuIG1haW4gLT4gcnVuIEZuLmlkIG1haW4pXG4gICAgICA7IGZsYWdzID0gdC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHQudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcmFtcyAodCA6ICgnYSwgJ2IpIHQpIDogKCdhIC0+ICdiKSBwYXJhbSA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHQuZiAoKSA+PnwgZnVuIGYgayAtPiBrIGYpOyBmbGFncyA9IHQuZmxhZ3M7IHVzYWdlID0gdC51c2FnZSB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvZl9wYXJhbSBwID0gcC5wYXJhbVxuICAgIGxldCB0b19wYXJhbSB0IG1haW4gPSBtYXAgKHRvX3BhcmFtcyB0KSB+ZjooZnVuIGsgLT4gayBtYWluKVxuXG4gICAgbGV0IGxvb2t1cCBrZXkgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIChFbnYuZmluZF9leG4gZW52IGtleSkpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBwYXRoIDogUGF0aC50IHBhcmFtID0gbG9va3VwIHBhdGhfa2V5XG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCBwYXJhbSA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IGxvb2t1cCBoZWxwX2tleVxuXG4gICAgKCogVGhpcyBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgZm9yIHRoZSBoZWxwIGNvbW1hbmQuICopXG4gICAgbGV0IGVudiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gZW52KSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICB0eXBlICdhIGFub25zID0gJ2EgdFxuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuXG4gICAgICBsZXQgYW5vbiBzcGVjID1cbiAgICAgICAgQW5vbnMuR3JhbW1hci5pbnZhcmlhbnQgc3BlYy5ncmFtbWFyO1xuICAgICAgICB7IHBhcmFtID1cbiAgICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gc3BlYy5wID4+fCBmdW4gdiBrIC0+IGsgdilcbiAgICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gc3BlYy5ncmFtbWFyKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uIH5maW5hbF9hbm9uID1cbiAgICAgIEFub25zLmVzY2FwZSAodDIgZmluYWxfYW5vbiAoc2VxdWVuY2UgKFwiQVJHXCIgJTogc3RyaW5nKSkpIHw+IGFub25cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICB0eXBlICdhIGZsYWcgPSAnYSB0XG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmUgPSBvbmVfb3JfbW9yZVxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcblxuICAgICAgbGV0IGZsYWdfaW50ZXJuYWxcbiAgICAgICAgICAgID8oYWxpYXNlcyA9IFtdKVxuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfmRvY1xuICAgICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgID1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZSBmbGFnID0gbm9ybWFsaXplIEtleV90eXBlLkZsYWcgZmxhZyBpblxuICAgICAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgICAgIGxldCBhbGlhc2VzID0gTGlzdC5tYXAgfmY6bm9ybWFsaXplIGFsaWFzZXMgaW5cbiAgICAgICAgbGV0IHsgcmVhZDsgYWN0aW9uOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gbW9kZSBuYW1lIGluXG4gICAgICAgIGxldCBjaGVja19hdmFpbGFibGUgPVxuICAgICAgICAgIG1hdGNoIG51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IChpZ25vcmUgOiBVbml2X21hcC50IC0+IHVuaXQpXG4gICAgICAgICAgfCB0cnVlIC0+IGZ1biBlbnYgLT4gaWdub3JlIChyZWFkIGVudiA6IF8pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuYW1lX21hdGNoaW5nID1cbiAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSBmdWxsX2ZsYWdfcmVxdWlyZWQgdGhlbiBgRnVsbF9tYXRjaF9yZXF1aXJlZCBlbHNlIGBQcmVmaXhcbiAgICAgICAgaW5cbiAgICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gKHJlYWQgZW52KSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgWyB7IG5hbWVcbiAgICAgICAgICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICAgICAgOyBkb2MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBmb3JjZSBleHRyYV9kb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZG9jKVxuICAgICAgICAgICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IGZsYWcgPSBmbGFnX2ludGVybmFsIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbXVxuXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgYXJnX3R5cGVcbiAgICAgICAgICAgIHNleHBfb2ZfZGVmYXVsdFxuICAgICAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgPVxuICAgICAgICBsZXQgZG9jID1cbiAgICAgICAgICBtYXRjaCBzZXhwX29mX2RlZmF1bHQgZGVmYXVsdCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20gXCJfXCIgLT4gZG9jXG4gICAgICAgICAgfCBkZWZhdWx0X3NleHAgLT4gc3ByaW50ZiAhXCIlcyAoZGVmYXVsdDogJXtTZXhwfSlcIiBkb2MgZGVmYXVsdF9zZXhwXG4gICAgICAgIGluXG4gICAgICAgIGZsYWdcbiAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgKG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlKVxuICAgICAgICAgIH5kb2NcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHBhcmFtXG5cbiAgICAgICAgICBsZXQgcmV0dXJuID0gY29uc3RcbiAgICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBwYWlyID0gYm90aFxuICAgIGVuZFxuXG4gICAgbGV0IGZsYWdzX29mX2FyZ3NfZXhuIGFyZ3MgPVxuICAgICAgTGlzdC5mb2xkIGFyZ3MgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIHNwZWMsIGRvYykgLT5cbiAgICAgICAgbGV0IGdlbiBmIGZsYWdfdHlwZSA9XG4gICAgICAgICAgc3RlcCAoZnVuIG0geCAtPlxuICAgICAgICAgICAgZiB4O1xuICAgICAgICAgICAgbSlcbiAgICAgICAgICArPiBmbGFnIG5hbWUgZmxhZ190eXBlIH5kb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhbGwgZiBhcmdfdHlwZSA9IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZikgKG9wdGlvbmFsIGFyZ190eXBlKSBpblxuICAgICAgICBsZXQgc2V0IHIgYXJnX3R5cGUgPSBjYWxsIChmdW4geCAtPiByIDo9IHgpIGFyZ190eXBlIGluXG4gICAgICAgIGxldCBzZXRfYm9vbCByIGIgPSBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gciA6PSBiKSBub19hcmcgaW5cbiAgICAgICAgYWNjXG4gICAgICAgICsrXG4gICAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgICB8IEFyZy5Vbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIG5vX2FyZ1xuICAgICAgICB8IEFyZy5TZXQgciAtPiBzZXRfYm9vbCByIHRydWVcbiAgICAgICAgfCBBcmcuQ2xlYXIgciAtPiBzZXRfYm9vbCByIGZhbHNlXG4gICAgICAgIHwgQXJnLlN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBBcmcuU2V0X3N0cmluZyByIC0+IHNldCByIHN0cmluZ1xuICAgICAgICB8IEFyZy5JbnQgZiAtPiBjYWxsIGYgaW50XG4gICAgICAgIHwgQXJnLlNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBBcmcuRmxvYXQgZiAtPiBjYWxsIGYgZmxvYXRcbiAgICAgICAgfCBBcmcuU2V0X2Zsb2F0IHIgLT4gc2V0IHIgZmxvYXRcbiAgICAgICAgfCBBcmcuQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgQXJnLlN5bWJvbCAoc3ltcywgZikgLT5cbiAgICAgICAgICBsZXQgYXJnX3R5cGUgPVxuICAgICAgICAgICAgQXJnX3R5cGUub2ZfYWxpc3RfZXhuXG4gICAgICAgICAgICAgIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBzeW1zIH5mOihmdW4gc3ltIC0+IHN5bSwgc3ltKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNhbGwgZiBhcmdfdHlwZVxuICAgICAgICB8IEFyZy5SZXN0IGYgLT4gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mOihMaXN0Lml0ZXIgfmYpKSBlc2NhcGVcbiAgICAgICAgfCBBcmcuVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEFyZy5FeHBhbmQgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAwNSwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLkV4cGFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChBcmcuUmVzdF9hbGwgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMiwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlJlc3RfYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCIpXG4gICAgOztcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEZsYWcuRGVwcmVjYXRlZFxuICAgICAgaW5jbHVkZSBBbm9ucy5EZXByZWNhdGVkXG4gICAgZW5kXG5cbiAgICBsZXQgYXJnX25hbWVzIHBhcmFtID1cbiAgICAgIGxldCB0ID0gcGFyYW0ucGFyYW0gaW5cbiAgICAgIGxldCBmbGFnX25hbWVzID0gTWFwLmtleXMgKEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSkgaW5cbiAgICAgIGxldCBhbm9uX25hbWVzID0gQW5vbnMuR3JhbW1hci5uYW1lcyAodC51c2FnZSAoKSkgaW5cbiAgICAgIExpc3QuY29uY2F0IFsgZmxhZ19uYW1lczsgYW5vbl9uYW1lcyBdXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgbmFtZXMgPSBhcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXNfd2l0aF9jb21tYXMgPSBMaXN0LmZpbHRlciBuYW1lcyB+ZjooZnVuIHMgLT4gU3RyaW5nLmNvbnRhaW5zIHMgJywnKSBpblxuICAgICAgICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBuYW1lc193aXRoX2NvbW1hcylcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkZvciBzaW1wbGljaXR5LCBbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGRvZXMgbm90IHN1cHBvcnQgbmFtZXMgd2l0aCBcXFxuICAgICAgICAgICAgICAgY29tbWFzLlwiXG4gICAgICAgICAgICAgIG5hbWVzX3dpdGhfY29tbWFzXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IG5hbWVzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIlxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQsIHQpXG4gICAgICAgICAgfD4gTWFwLm9mX2FsaXN0IChtb2R1bGUgQ2hvaWNlX25hbWUpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIltDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gY2FsbGVkIHdpdGggZHVwbGljYXRlIG5hbWVcIlxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgWyVzZXhwX29mOiBDaG9pY2VfbmFtZS50XVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgaW5pdCAtPlxuICAgICAgICAgICAgbWFwMiBpbml0IHQgfmY6KGZ1biBpbml0IHZhbHVlIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5mb2xkIHZhbHVlIH5pbml0IH5mOihmdW4gaW5pdCB2YWx1ZSAtPiAobmFtZSwgdmFsdWUpIDo6IGluaXQpKSlcbiAgICAgICAgICB8PiBtYXAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPlxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICB8IFsgKF8sIHZhbHVlKSBdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gKF8gOiBhKSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiAoU29tZSB2YWx1ZSA6IGIpKVxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIHZhbHVlIC0+IHZhbHVlXG4gICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgIHwgUmFpc2UgLT5cbiAgICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICAgIVwiTXVzdCBwYXNzIG9uZSBvZiB0aGVzZTpcXG4gICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAoTWFwLmtleXMgdHMpXG4gICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IENob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gQ2hvb3NlX29uZS5jaG9vc2Vfb25lXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgdCA9IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIGFyZ19uYW1lcyB0KVxuXG4gICAgbGV0IGFuZF9hcmdfbmFtZSB0ID1cbiAgICAgIG1hdGNoIGFyZ19uYW1lcyB0IHdpdGhcbiAgICAgIHwgWyBuYW1lIF0gLT4gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgbmFtZSlcbiAgICAgIHwgbmFtZXMgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbYW5kX2FyZ19uYW1lXSBleHBlY3RzIGV4YWN0bHkgb25lIG5hbWUsIGdvdFwiIH5fOihuYW1lcyA6IHN0cmluZyBsaXN0KV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICA7IGJvZHkgOiAocGF0aDpzdHJpbmcgbGlzdCAtPiB1bml0KSBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlIHQgOiBfIFNoYXBlLkdyb3VwX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c3ViY29tbWFuZF90b19zaGFwZSlcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGFic19wYXRoID0gU2hhcGUuUHJpdmF0ZS5hYnNfcGF0aFxubGV0IGNvbXBfY3dvcmQgPSBDb21tYW5kX2Vudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBCYXNlLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwLnRcbiAgfCBFeGVjIG9mIEV4ZWMudFxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBzZXhwYWJsZV9zaGFwZSA6IHQgLT4gU2hhcGUuU2V4cGFibGUudCA9IGZ1bmN0aW9uXG4gIHwgQmFzZSBiYXNlIC0+IEJhc2UgKEJhc2Uuc2hhcGUgYmFzZSlcbiAgfCBFeGVjIGV4ZWMgLT4gRXhlYyAoRXhlYy5zaGFwZSBleGVjKVxuICB8IEdyb3VwIGdyb3VwIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzZXhwYWJsZV9zaGFwZSBncm91cClcbiAgfCBMYXp5IHRodW5rIC0+IExhenkgKExhenkubWFwIH5mOnNleHBhYmxlX3NoYXBlIHRodW5rKVxuOztcblxudHlwZSAoJ21haW4sICdyZXN1bHQpIGJhc2ljX3NwZWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nXG4gIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKVxuICAtPiAoJ21haW4sIHVuaXQgLT4gJ3Jlc3VsdCkgQmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkJhc2UuZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPVxuICAgICAgZXh0ZW5kX21hcF9leG5cbiAgICAgICAgZmxhZ3NcbiAgICAgICAgS2V5X3R5cGUuRmxhZ1xuICAgICAgICB+a2V5Om5hbWVcbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gRmxhZy5OdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gaWdub3JlXG4gICAgICAgIDsgYWN0aW9uID0gUHJpbnRfaW5mb19hbmRfcXVpdCAoZnVuIGVudiAtPiB0ZXh0IGVudilcbiAgICAgICAgOyBkb2MgPSBzcHJpbnRmIFwiIHByaW50ICVzIGFuZCBleGl0XCIgdGV4dF9zdW1tYXJ5XG4gICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IGBQcmVmaXhcbiAgICAgICAgfVxuICAgIGluXG4gICAgeyBiYXNlIHdpdGggQmFzZS5mbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSB7IEJhc2UuU3BlYy51c2FnZTsgZmxhZ3M7IGYgfSBtYWluID1cbiAgbGV0IGZsYWdzID0gZmxhZ3MgKCkgaW5cbiAgbGV0IHVzYWdlID0gdXNhZ2UgKCkgaW5cbiAgbGV0IGFub25zICgpID1cbiAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuRm9yX29wZW5pbmcgaW5cbiAgICBmICgpXG4gICAgPj58IGZ1biBrIGBQYXJzZV9hcmdzIC0+XG4gICAgbGV0IHRodW5rID0gayBtYWluIGluXG4gICAgZnVuIGBSdW5fbWFpbiAtPiB0aHVuayAoKVxuICBpblxuICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSBmbGFncyBpblxuICBsZXQgYmFzZSA9IHsgQmFzZS5zdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFnczsgYW5vbnMgfSBpblxuICBsZXQgYmFzZSA9XG4gICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICBiYXNlXG4gICAgICB+bmFtZTpcIi1oZWxwXCJcbiAgICAgIH5hbGlhc2VzOlsgXCItP1wiIF1cbiAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1oZWxwXCIgXVxuICAgICAgfnRleHRfc3VtbWFyeTpcInRoaXMgaGVscCB0ZXh0XCJcbiAgICAgIH50ZXh0OihmdW4gZW52IC0+IExhenkuZm9yY2UgKEVudi5maW5kX2V4biBlbnYgQmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljID0gYmFzaWNfc3BlY1xubGV0IHN1YnNfa2V5IDogKHN0cmluZyAqIHQpIGxpc3QgRW52LktleS50ID0gRW52LmtleV9jcmVhdGUgXCJzdWJjb21tYW5kc1wiXG5cbmxldCBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgc3ViY29tbWFuZHMgPVxuICAgIExhenkubWFwIGFsaXN0IH5mOihmdW4gYWxpc3QgLT5cbiAgICAgIGxldCBhbGlzdCA9XG4gICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKG5hbWUsIHQpIC0+IG5vcm1hbGl6ZSBLZXlfdHlwZS5TdWJjb21tYW5kIG5hbWUsIHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggU3RyaW5nLk1hcC5vZl9hbGlzdCBhbGlzdCB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgc3ViY29tbWFuZHMgbmFtZWQgJXNcIiBuYW1lICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgKG1hdGNoIHByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgd2l0aFxuICAgICAgICAgfCBTb21lICgpIC0+IGFsaXN0XG4gICAgICAgICB8IE5vbmUgLT4gTWFwLnRvX2FsaXN0IG1hcCkpXG4gIGluXG4gIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG47O1xuXG5sZXQgZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IChMYXp5LmZyb21fdmFsIGFsaXN0KVxuOztcblxubGV0IGV4ZWMgfnN1bW1hcnkgP3JlYWRtZSA/KGNoaWxkX3N1YmNvbW1hbmQgPSBbXSkgP2VudiB+cGF0aF90b19leGUgKCkgPVxuICBsZXQgd29ya2luZ19kaXIgPVxuICAgIEZpbGVuYW1lLmRpcm5hbWVcbiAgICBAQFxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBfIHwgYFJlbGF0aXZlX3RvX21lIF8gLT4gQ2FtbC5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBDYW1sLlN5cy5hcmd2LigwKVxuICBpblxuICBsZXQgcGF0aF90b19leGUgPVxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lLmlzX2Fic29sdXRlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYEFic29sdXRlIG11c3QgYmUgYWJzb2x1dGVcIlxuICAgICAgZWxzZSBwXG4gICAgfCBgUmVsYXRpdmVfdG9fbWUgcCB8IGBSZWxhdGl2ZV90b19hcmd2MCBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSB0eXBlIEZvcl92ZXJzaW9uX2luZm8gPSBzaWdcbiAgbW9kdWxlIFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgdHlwZSB0ID0gVGltZV9mbG9hdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKE0gOiBGb3JfdmVyc2lvbl9pbmZvKSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbiA9IHByaW50X2VuZGxpbmUgKGZvcmNlIHZlcnNpb24pXG4gIGxldCBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgYnVpbGRfaW5mbylcblxuICBsZXQgY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwicHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvblwiXG4gICAgICBCYXNlLlNwZWMuKFxuICAgICAgICBlbXB0eVxuICAgICAgICArPiBmbGFnIFwiLXZlcnNpb25cIiBub19hcmcgfmRvYzpcIiBwcmludCB0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgKz4gZmxhZyBcIi1idWlsZC1pbmZvXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgYnVpbGQgaW5mbyBmb3IgdGhpcyBidWlsZFwiKVxuICAgICAgKGZ1biB2ZXJzaW9uX2ZsYWcgYnVpbGRfaW5mb19mbGFnIC0+XG4gICAgICAgICBpZiBidWlsZF9pbmZvX2ZsYWdcbiAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgZWxzZSBpZiB2ZXJzaW9uX2ZsYWdcbiAgICAgICAgIHRoZW4gcHJpbnRfdmVyc2lvbiB+dmVyc2lvblxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgIHByaW50X3ZlcnNpb24gfnZlcnNpb24pO1xuICAgICAgICAgZXhpdCAwKVxuICA7O1xuXG4gIGxldCByZWMgYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIHVudmVyc2lvbmVkID1cbiAgICBtYXRjaCB1bnZlcnNpb25lZCB3aXRoXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLXZlcnNpb25cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLXZlcnNpb25cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcInRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSB2ZXJzaW9uKVxuICAgICAgaW5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLWJ1aWxkLWluZm9cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWJ1aWxkLWluZm9cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcImluZm8gYWJvdXQgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIGJ1aWxkX2luZm8pXG4gICAgICBpblxuICAgICAgQmFzZSBiYXNlXG4gICAgfCBHcm91cCBncm91cCAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgZ3JvdXAuR3JvdXAuc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwidmVyc2lvblwiXG4gICAgICAgICAgICAoY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbykpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBncm91cCB3aXRoIEdyb3VwLnN1YmNvbW1hbmRzIH1cbiAgICB8IEV4ZWMgZXhlYyAtPiBFeGVjIGV4ZWNcbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIGxpbmVzID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIiAoTGlzdC5zb3J0IGxpbmVzIH5jb21wYXJlOlN0cmluZy5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3ZlcnNpb24gPSBsYXp5IChub3JtYWxpemVfdmVyc2lvbl9saW5lcyBWZXJzaW9uX3V0aWwudmVyc2lvbl9saXN0KVxuXG4gIGxldCBkZWZhdWx0X2J1aWxkX2luZm8gPVxuICAgIGxhenlcbiAgICAgICgqIGxhenkgdG8gYXZvaWQgbG9hZGluZyBhbGwgdGhlIHRpbWUgem9uZSBzdHVmZiBhdCB0b3BsZXZlbCAqKVxuICAgICAgKFZlcnNpb25fdXRpbC5yZXByaW50X2J1aWxkX2luZm8gVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBtb2R1bGUgVmVyc2lvbl91dGlsID0gc3RydWN0XG4gICAgICAgICAgbGV0IHZlcnNpb25fbGlzdCA9IFsgXCJoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXCI7IFwic3NoOi8vYS9wYXRoXzhiYWRmMDBkXCIgXVxuICAgICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIFRpbWVfZmxvYXQuZXBvY2gpXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gVGltZV9mbG9hdC50XG5cbiAgICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBUaW1lX2Zsb2F0LnRvX3N0cmluZ191dGMgdCB8PiBTZXhwLm9mX3N0cmluZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3BlY1xuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BlYyA9IFNwZWMuRGVwcmVjYXRlZFxuXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyeVxuXG4gIGxldCByZWMgZ2V0X2ZsYWdfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBiYXNlIC0+IGJhc2UuQmFzZS5mbGFncyB8PiBTdHJpbmcuTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkJhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgICAgICAgIChCYXNlLkRlcHJlY2F0ZWQuZmxhZ3NfaGVscCB+ZGlzcGxheV9oZWxwX2ZsYWdzOmZhbHNlIGJhc2UpKVxuICAgICAgICBlbHNlIFsgYmFzZV9oZWxwIF1cbiAgICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyBzdWJjb21tYW5kczsgcmVhZG1lID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgICAocyBeIGNtZCwgc3VtbWFyeSlcbiAgICAgICAgOjogKExhenkuZm9yY2Ugc3ViY29tbWFuZHNcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpCYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKSlcbiAgICAgIHwgRXhlYyBfIC0+XG4gICAgICAgICgqIENvbW1hbmQuZXhlYyBkb2VzIG5vdCBzdXBwb3J0IGRlcHJlY2F0ZWQgY29tbWFuZHMgKilcbiAgICAgICAgW11cbiAgICBpblxuICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfdW5peCAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IHN0cmluZykgPVxuc3RydWN0XG4gIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIpXG5cbiAgbW9kdWxlIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gQ29tbWFuZF9lbnZfdmFyLnQgPVxuICBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KSB+ZGF0YVxuICAgICAgbGV0IHVuc2V0ZW52IGtleSA9IHVuc2V0ZW52IChDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSlcbiAgICAgIGxldCB1bnNhZmVfZ2V0ZW52IGtleSA9IHVuc2FmZV9nZXRlbnYgKENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICB0eXBlIGVudiA9XG4gICAgICAgIFsgYFJlcGxhY2Ugb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nKSBsaXN0XG4gICAgICAgIHwgYEV4dGVuZCBvZiAoQ29tbWFuZF9lbnZfdmFyLnQgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgfCBgT3ZlcnJpZGUgb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nIG9wdGlvbikgbGlzdFxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBvZiBzdHJpbmcgbGlzdFxuICAgICAgICBdXG5cbiAgICAgIGxldCBjb252ZXJ0X2VudiBlbnYgPVxuICAgICAgICBsZXQgY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QgPVxuICAgICAgICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAoZW52X3Zhciwgc3RyKSAtPiBDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGVudl92YXIsIHN0cilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZW52IHdpdGhcbiAgICAgICAgfCBgUmVwbGFjZSBsaXN0IC0+IGBSZXBsYWNlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgRXh0ZW5kIGxpc3QgLT4gYEV4dGVuZCAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYE92ZXJyaWRlIGxpc3QgLT4gYE92ZXJyaWRlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgXyBhcyByZXBsYWNlIC0+IHJlcGxhY2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52ICgpID1cbiAgICAgICAgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudjooT3B0aW9uLm1hcCBlbnYgfmY6Y29udmVydF9lbnYpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX3Byb2Nlc3NfZW52ID93b3JraW5nX2RpciA/cHJvZ19zZWFyY2hfcGF0aCA/YXJndjAgfnByb2cgfmFyZ3MgfmVudiAoKSA9XG4gICAgICAgIGNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgID93b3JraW5nX2RpclxuICAgICAgICAgID9wcm9nX3NlYXJjaF9wYXRoXG4gICAgICAgICAgP2FyZ3YwXG4gICAgICAgICAgfnByb2dcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5lbnY6KGNvbnZlcnRfZW52IGVudilcbiAgICAgICAgICAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhclxuXG4gICgqIENsZWFyIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kLWxpbmVcbiAgICAgY29tcGxldGlvbiBhbmQgcmVjdXJzaXZlIGhlbHAgc28gdGhhdCBzdWJwcm9jZXNzZXMgZG9uJ3Qgc2VlIHRoZW0uXG5cbiAgICAgVXNlIFt1bnNhZmVfZ2V0ZW52XSBzbyBzZXR1aWQtcm9vdCBwcm9ncmFtcyBjYW4gc3RpbGwgcmVhZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHJpc2sgaGVyZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBhcyB0cmlnZ2VycyB0byBkdW1wXG4gICAgIG91dCBjb21tYW5kIGluZm9ybWF0aW9uLiAqKVxuICBsZXQgZ2V0ZW52X2FuZF9jbGVhciB2YXIgPVxuICAgIGxldCB2YWx1ZSA9IFVuaXgudW5zYWZlX2dldGVudiB2YXIgaW5cbiAgICBpZiBPcHRpb24uaXNfc29tZSB2YWx1ZSB0aGVuIFVuaXgudW5zZXRlbnYgdmFyO1xuICAgIHZhbHVlXG4gIDs7XG5cbiAgbGV0IG1heWJlX2NvbXBfY3dvcmQgKCkgPSBnZXRlbnZfYW5kX2NsZWFyIGNvbXBfY3dvcmQgfD4gT3B0aW9uLm1hcCB+ZjpJbnQub2Zfc3RyaW5nXG5cbiAgbGV0IHNldF9jb21wX2N3b3JkIG5ld192YWx1ZSA9XG4gICAgbGV0IG5ld192YWx1ZSA9IEludC50b19zdHJpbmcgbmV3X3ZhbHVlIGluXG4gICAgVW5peC5wdXRlbnYgfmtleTpjb21wX2N3b3JkIH5kYXRhOm5ld192YWx1ZVxuICA7O1xuXG4gIG1vZHVsZSBFeGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeGVjXG5cbiAgICBsZXQgZXhlY193aXRoX2FyZ3MgdCB+YXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgbGV0IHByb2cgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZSBpblxuICAgICAgbGV0IGFyZ3MgPSB0LmNoaWxkX3N1YmNvbW1hbmQgQCBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gdC5lbnYgaW5cbiAgICAgIE9wdGlvbi5pdGVyIG1heWJlX25ld19jb21wX2N3b3JkIH5mOihmdW4gbiAtPlxuICAgICAgICAoKiBUaGUgbG9naWMgZm9yIHRyYWNraW5nIFttYXliZV9uZXdfY29tcF9jd29yZF0gZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyXG4gICAgICAgICAgIHRoaXMgZXhlYyBzcGVjaWZpZXMgYSBjaGlsZCBzdWJjb21tYW5kLiBJZiBpdCBkb2VzLCBDT01QX0NXT1JEIG5lZWRzIHRvIGJlIHNldFxuICAgICAgICAgICBoaWdoZXIgdG8gYWNjb3VudCBmb3IgdGhlIGFyZ3VtZW50cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoaWxkIHN1YmNvbW1hbmQuICopXG4gICAgICAgIHNldF9jb21wX2N3b3JkIChuICsgTGlzdC5sZW5ndGggdC5jaGlsZF9zdWJjb21tYW5kKSk7XG4gICAgICBuZXZlcl9yZXR1cm5zXG4gICAgICAgIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlVuaXguZXhlYyA/ZW52IH5wcm9nIH5hcmd2Oihwcm9nIDo6IGFyZ3MpICgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhcGUuU2V4cGFibGVcblxuICAgIGxldCByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIChwcm9jZXNzX2luZm8gOiBVbml4LlByb2Nlc3NfaW5mby50KSA9XG4gICAgICAoKiBXZSBuZWVkIHRvIHJlYWQgZWFjaCBvZiBzdGRvdXQgYW5kIHN0ZGVyciBpbiBhIHNlcGFyYXRlIHRocmVhZCB0byBhdm9pZCBkZWFkbG9ja3NcbiAgICAgICAgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGRlY2lkZXMgdG8gd2FpdCBmb3IgYSByZWFkIG9uIG9uZSBiZWZvcmUgY2xvc2luZyB0aGUgb3RoZXIuXG4gICAgICAgICBCdWZmZXJpbmcgbWF5IGhpZGUgdGhpcyBwcm9ibGVtIHVudGlsIG91dHB1dCBpcyBcInN1ZmZpY2llbnRseSBsYXJnZVwiLiAqKVxuICAgICAgbGV0IHN0YXJ0X3JlYWRpbmcgZGVzY3IgaW5mbyA9XG4gICAgICAgIGxldCBvdXRwdXQgPSBTZXRfb25jZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICB8PiBTZXRfb25jZS5zZXRfZXhuIG91dHB1dCBbJWhlcmVdKVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgc3RhZ2UgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocmVhZC5qb2luIHRocmVhZDtcbiAgICAgICAgICBVbml4LmNsb3NlIGRlc2NyO1xuICAgICAgICAgIG1hdGNoIFNldF9vbmNlLmdldCBvdXRwdXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkJVRyBmYWlsZWQgdG8gcmVhZFwiIChpbmZvIDogSW5mby50KV1cbiAgICAgICAgICB8IFNvbWUgKE9rIG91dHB1dCkgLT4gb3V0cHV0XG4gICAgICAgICAgfCBTb21lIChFcnJvciBleG4pIC0+IHJhaXNlIGV4bilcbiAgICAgIGluXG4gICAgICAoKiBXZSBtaWdodCBoYW5nIGZvcmV2ZXIgdHJ5aW5nIHRvIGpvaW4gdGhlIHJlYWRpbmcgdGhyZWFkcyBpZiB0aGUgY2hpbGQgcHJvY2VzcyBrZWVwc1xuICAgICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciBvcGVuLiBOb3QgaGFuZGxpbmcgdGhpcyBiZWNhdXNlIEkgdGhpbmsgd2UndmUgbmV2ZXIgc2VlbiBpdFxuICAgICAgICAgaW4gdGhlIHdpbGQgZGVzcGl0ZSBydW5uaW5nIHZ1bG5lcmFibGUgY29kZSBmb3IgeWVhcnMuICopXG4gICAgICAoKiBXZSBoYXZlIHRvIHN0YXJ0IGJvdGggdGhyZWFkcyBiZWZvcmUgam9pbmluZyBhbnkgb2YgdGhlbS4gKilcbiAgICAgIGxldCBmaW5pc2hfc3Rkb3V0ID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3Rkb3V0IChJbmZvLm9mX3N0cmluZyBcInN0ZG91dFwiKSBpblxuICAgICAgbGV0IGZpbmlzaF9zdGRlcnIgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRlcnIgKEluZm8ub2Zfc3RyaW5nIFwic3RkZXJyXCIpIGluXG4gICAgICB1bnN0YWdlIGZpbmlzaF9zdGRvdXQgKCksIHVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPSBzdXBwb3J0ZWRfdmVyc2lvbnMgfD4gSW50LlNldC5zZXhwX29mX3QgfD4gU2V4cC50b19zdHJpbmcgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBpZ25vcmUgKFVuaXgud2FpdCAoYFBpZCBwcm9jZXNzX2luZm8ucGlkKSA6IFBpZC50ICogVW5peC5FeGl0X29yX3NpZ25hbC50KTtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwLm9mX3N0cmluZyB8PiBWZXJzaW9uZWQudF9vZl9zZXhwIHw+IG9mX3ZlcnNpb25lZCB3aXRoXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJjYW5ub3QgcGFyc2UgY29tbWFuZCBzaGFwZVwiXG4gICAgICAgICAgICAgIH5fOihleG4gOiBleG4pXG4gICAgICAgICAgICAgIChzdGRvdXQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIChzdGRlcnIgOiBzdHJpbmcpXVxuICAgICAgfCB0IC0+IHRcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5kICh0IDogdCkgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgICBtYXRjaCBwYXRoX3RvX3N1YmNvbW1hbmQgd2l0aFxuICAgICAgfCBbXSAtPiB0XG4gICAgICB8IHN1YiA6OiBzdWJzIC0+XG4gICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgIHwgQmFzZSBfIC0+IGZhaWx3aXRoZiBcInVuZXhwZWN0ZWQgc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgfCBMYXp5IHRodW5rIC0+IGZpbmQgKExhenkuZm9yY2UgdGh1bmspIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgIHwgRXhlYyB7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgY2hpbGRfc3ViY29tbWFuZDsgXyB9IC0+XG4gICAgICAgICAgIGZpbmRcbiAgICAgICAgICAgICAob2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZClcbiAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOihzdWIgOjogKHN1YnMgQCBjaGlsZF9zdWJjb21tYW5kKSlcbiAgICAgICAgIHwgR3JvdXAgZyAtPlxuICAgICAgICAgICAobWF0Y2ggTGlzdC5Bc3NvYy5maW5kIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpIH5lcXVhbDpTdHJpbmcuZXF1YWwgc3ViIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJ1bmtub3duIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IGZpbmQgdCB+cGF0aF90b19zdWJjb21tYW5kOnN1YnMpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQgPVxuICAgIFNleHBhYmxlLm9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICB8PiBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOltdXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZV9vZl9wcm94eSBwcm94eSA6IFNoYXBlLnQgPSBzaGFwZV9vZl9wcm94eV9raW5kIHByb3h5LlByb3h5LmtpbmRcblxuICBhbmQgc2hhcGVfb2ZfZXhlICgpIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIgPVxuICAgIHNoYXBlX29mX3Byb3h5IChwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQpXG5cbiAgYW5kIHNoYXBlX29mX3Byb3h5X2tpbmQga2luZCA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgYlxuICAgIHwgTGF6eSBsIC0+IExhenkgKExhenkubWFwIH5mOnNoYXBlX29mX3Byb3h5X2tpbmQgbClcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIEdyb3VwXG4gICAgICAgIHsgZyB3aXRoXG4gICAgICAgICAgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCBnLnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzaGFwZV9vZl9wcm94eSlcbiAgICAgICAgfVxuICAgIHwgRXhlYyAoeyBjaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZSB0IDogU2hhcGUudCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgKEJhc2Uuc2hhcGUgYilcbiAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNoYXBlIGcpXG4gICAgfCBFeGVjICh7IEV4ZWMuY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKEV4ZWMuc2hhcGUgZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gICAgfCBMYXp5IHRodW5rIC0+IHNoYXBlIChMYXp5LmZvcmNlIHRodW5rKVxuICA7O1xuXG4gIGxldCBnYXRoZXJfaGVscCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMgc2hhcGUgPVxuICAgIGxldCByZWMgbG9vcCBwYXRoIGFjYyBzaGFwZSA9XG4gICAgICBsZXQgc3RyaW5nX29mX3BhdGggPSBpZiBleHBhbmRfZG90cyB0aGVuIFBhdGgudG9fc3RyaW5nIGVsc2UgUGF0aC50b19zdHJpbmdfZG90cyBpblxuICAgICAgbGV0IGdhdGhlcl9ncm91cCBwYXRoIGFjYyBzdWJjb21tYW5kcyA9XG4gICAgICAgIGxldCBmaWx0ZXJlZF9zdWJjb21tYW5kcyA9XG4gICAgICAgICAgKCogT25seSBzaG93IHRoZSBbaGVscF0gc3ViY29tbWFuZCBhdCB0b3AtbGV2ZWwuICopXG4gICAgICAgICAgaWYgUGF0aC5pc19lbXB0eSBwYXRoXG4gICAgICAgICAgdGhlbiBzdWJjb21tYW5kc1xuICAgICAgICAgIGVsc2UgTGlzdC5Bc3NvYy5yZW1vdmUgfmVxdWFsOlN0cmluZy4oID0gKSBzdWJjb21tYW5kcyBcImhlbHBcIlxuICAgICAgICBpblxuICAgICAgICBmaWx0ZXJlZF9zdWJjb21tYW5kc1xuICAgICAgICB8PiBMaXN0LnN0YWJsZV9zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IGhlbHBfc2NyZWVuX2NvbXBhcmUgKGZzdCBhKSAoZnN0IGIpKVxuICAgICAgICB8PiBMaXN0LmZvbGRcbiAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICB+ZjooZnVuIChhY2MgOiBTaGFwZS5GbGFnX2luZm8udCBGcXVldWUudCkgKHN1YmNvbW1hbmQsIHNoYXBlKSAtPlxuICAgICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgICAgICBsZXQgbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggaW5cbiAgICAgICAgICAgICAgIGxldCBkb2MgPSBTaGFwZS5nZXRfc3VtbWFyeSBzaGFwZSBpblxuICAgICAgICAgICAgICAgbGV0IGFjYyA9IEZxdWV1ZS5lbnF1ZXVlIGFjYyB7IG5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICAgIGlmIHJlY3Vyc2l2ZSB0aGVuIGxvb3AgcGF0aCBhY2Mgc2hhcGUgZWxzZSBhY2MpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgICAgfCBFeGVjIChfLCBzaGFwZSkgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4ZWN1dGFibGUgYmVpbmcgY2FsbGVkIGRvZXNuJ3QgdXNlIFtDb3JlLkNvbW1hbmRdLCB0aGVuIHNleHAgZXh0cmFjdGlvblxuICAgICAgICAgICB3aWxsIGZhaWwuICopXG4gICAgICAgICh0cnkgbG9vcCBwYXRoIGFjYyAoc2hhcGUgKCkpIHdpdGhcbiAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICB8IEdyb3VwIGcgLT4gZ2F0aGVyX2dyb3VwIHBhdGggYWNjIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpXG4gICAgICB8IEJhc2ljIGIgLT5cbiAgICAgICAgaWYgZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGIuZmxhZ3NcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGZtdCAtPiBTdHJpbmcuKCA8PiApIGZtdC5uYW1lIFwiWy1oZWxwXVwiKVxuICAgICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgZm10IC0+XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6Zm10Lm5hbWUgaW5cbiAgICAgICAgICAgIGxldCBmbXQgPSB7IGZtdCB3aXRoIG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIH0gaW5cbiAgICAgICAgICAgIEZxdWV1ZS5lbnF1ZXVlIGFjYyBmbXQpXG4gICAgICAgIGVsc2UgYWNjXG4gICAgICB8IExhenkgdGh1bmsgLT4gbG9vcCBwYXRoIGFjYyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICBpblxuICAgIGxvb3AgUGF0aC5lbXB0eSBGcXVldWUuZW1wdHkgc2hhcGUgfD4gRnF1ZXVlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHQgfmZsYWdzIH5wYXRoIH5zdW1tYXJ5IH5yZWFkbWUgfmZvcm1hdF9saXN0ID1cbiAgICB1bnBhcmFncmFwaHNcbiAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgIFsgU29tZSBzdW1tYXJ5XG4gICAgICAgICA7IFNvbWUgKFN0cmluZy5jb25jYXQgWyBcIiAgXCI7IFBhdGgudG9fc3RyaW5nIHBhdGg7IFwiIFNVQkNPTU1BTkRcIiBdKVxuICAgICAgICAgOyByZWFkbWVcbiAgICAgICAgIDsgU29tZSAoaWYgZmxhZ3MgdGhlbiBcIj09PSBzdWJjb21tYW5kcyBhbmQgZmxhZ3MgPT09XCIgZWxzZSBcIj09PSBzdWJjb21tYW5kcyA9PT1cIilcbiAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGZvcm1hdF9saXN0KVxuICAgICAgICAgXSlcbiAgOztcblxuICBsZXQgcmVjIGhlbHBfZm9yX3NoYXBlIHNoYXBlIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlID1cbiAgICBsZXQgZm9ybWF0X2xpc3QgPSBnYXRoZXJfaGVscCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgc2hhcGUgaW5cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBCYXNpYyBiIC0+XG4gICAgICBsZXQgdXNhZ2UgPSBTaGFwZS5CYXNlX2luZm8uZ2V0X3VzYWdlIGIgaW5cbiAgICAgIHVucGFyYWdyYXBoc1xuICAgICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICAgIFsgU29tZSBiLnN1bW1hcnlcbiAgICAgICAgICAgOyBTb21lIChcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgXCIgXiB1c2FnZSlcbiAgICAgICAgICAgOyBiLnJlYWRtZVxuICAgICAgICAgICA7IFNvbWUgXCI9PT0gZmxhZ3MgPT09XCJcbiAgICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgYi5mbGFncylcbiAgICAgICAgICAgXSlcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmcucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5Omcuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IEV4ZWMgKGUsIF8pIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTplLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTplLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBMYXp5IHRodW5rIC0+IGhlbHBfZm9yX3NoYXBlIChMYXp5LmZvcmNlIHRodW5rKSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZVxuICA7O1xuXG4gIGxldCBoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwiZXhwbGFpbiBhIGdpdmVuIHN1YmNvbW1hbmQgKHBlcmhhcHMgcmVjdXJzaXZlbHkpXCJcbiAgICAgIEJhc2UuU3BlYy4oXG4gICAgICAgIGVtcHR5XG4gICAgICAgICs+IGZsYWcgXCItcmVjdXJzaXZlXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBzdWJjb21tYW5kcyBvZiBzdWJjb21tYW5kcywgZXRjLlwiXG4gICAgICAgICs+IGZsYWcgXCItZmxhZ3NcIiBub19hcmcgfmRvYzpcIiBzaG93IGZsYWdzIGFzIHdlbGwgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICArPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgKz4gcGF0aFxuICAgICAgICArPiBlbnZcbiAgICAgICAgKz4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICAgICAgKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IHN1YnNfa2V5IHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICgqIG1haW50YWluZWQgYnkgW2Rpc3BhdGNoXSAqKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnBvcF9oZWxwIHBhdGggaW5cbiAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZClcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICBtYXRjaCBjbWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgaW5cbiAgICAgICAgICAgICBwYXRoLCBTaGFwZS5Hcm91cCB7IHJlYWRtZTsgc3VtbWFyeTsgc3ViY29tbWFuZHMgfVxuICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgbG9va3VwX2V4cGFuZCAoTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkpIGNtZCBTdWJjb21tYW5kXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgY21kXG4gICAgICAgICAgICAgICAgICAoUGF0aC50b19zdHJpbmcgcGF0aClcbiAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgIHwgT2sgKHBvc3NpYmx5X2V4cGFuZGVkX25hbWUsIHQpIC0+XG4gICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoIGluXG4gICAgICAgICAgICAgICAgcGF0aCwgc2hhcGUgdClcbiAgICAgICAgIGluXG4gICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gIDs7XG5cbiAgKCogVGhpcyBzY3JpcHQgd29ya3MgaW4gYm90aCBiYXNoICh2aWEgcmVhZGFycmF5KSBhbmQgenNoICh2aWEgcmVhZCAtQSkuICBJZiB5b3UgY2hhbmdlXG4gICAgIGl0LCBwbGVhc2UgdGVzdCBpbiBib3RoIGJhc2ggYW5kIHpzaC4gIEl0IGRvZXMgbm90IHdvcmsgdGNzaCAoZGlmZmVyZW50IGZ1bmN0aW9uXG4gICAgIHN5bnRheCkuICopXG4gIGxldCBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKSA9XG4gICAgbGV0IGZuYW1lID0gc3ByaW50ZiBcIl9qc2F1dG9jb21fJXNcIiAoUGlkLnRvX3N0cmluZyAoVW5peC5nZXRwaWQgKCkpKSBpblxuICAgIGxldCBhcmd2XzAgPSBDYW1sLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBJbnQuU2V0LmludGVyIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9ucyBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICB8PiBJbnQuU2V0Lm1heF9lbHRcbiAgICB8PiBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJDb3VsZG4ndCBjaG9vc2UgYSBzdXBwb3J0ZWQgaGVscCBvdXRwdXQgdmVyc2lvbiBmb3IgQ29tbWFuZC5leGVjIGZyb20gdGhlIGdpdmVuIFxcXG4gICAgICAgICBzdXBwb3J0ZWQgdmVyc2lvbnMuXCJcbiAgICAgICAgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgICAgIEludC5TZXQuc2V4cF9vZl90XG4gICAgfCBTb21lIHZlcnNpb25fdG9fdXNlIC0+XG4gICAgICBzZXhwYWJsZV9zaGFwZSB0XG4gICAgICB8PiBTZXhwYWJsZS5maW5kIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgIHw+IFNleHBhYmxlLnRvX3ZlcnNpb25lZCB+dmVyc2lvbl90b191c2VcbiAgICAgIHw+IFNleHBhYmxlLlZlcnNpb25lZC5zZXhwX29mX3RcbiAgICAgIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICB8PiBwcmludF9zdHJpbmdcbiAgOztcblxuICBsZXQgaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgPVxuICAgIG1hdGNoIGFyZ3Ygd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJtaXNzaW5nIGV4ZWN1dGFibGUgbmFtZVwiXG4gICAgfCBjbWQgOjogYXJncyAtPlxuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQKSB+ZjooZnVuIHZlcnNpb24gLT5cbiAgICAgICAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9IFNleHAub2Zfc3RyaW5nIHZlcnNpb24gfD4gSW50LlNldC50X29mX3NleHAgaW5cbiAgICAgICAgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6YXJncztcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIKSB+ZjooZnVuIF8gLT5cbiAgICAgICAgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCk7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBjbWQsIGFyZ3NcbiAgOztcblxuICBsZXQgcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgPVxuICAgIGxldCBtYXliZV9jb21wX2N3b3JkID0gbWF5YmVfY29tcF9jd29yZCAoKSBpblxuICAgIGxldCBhcmdzID1cbiAgICAgIG1hdGNoIG1heWJlX2NvbXBfY3dvcmQgd2l0aFxuICAgICAgfCBOb25lIC0+IENtZGxpbmUub2ZfbGlzdCBhcmdzXG4gICAgICB8IFNvbWUgY29tcF9jd29yZCAtPlxuICAgICAgICBsZXQgYXJncyA9IExpc3QudGFrZSAoYXJncyBAIFsgXCJcIiBdKSBjb21wX2N3b3JkIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0OkNtZGxpbmUuTmlsIH5mOihmdW4gYXJnIGFyZ3MgLT5cbiAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICB8IENtZGxpbmUuTmlsIC0+IENtZGxpbmUuQ29tcGxldGUgYXJnXG4gICAgICAgICAgfCBfIC0+IENtZGxpbmUuQ29ucyAoYXJnLCBhcmdzKSlcbiAgICBpblxuICAgIFBhdGguY3JlYXRlIH5wYXRoX3RvX2V4ZTpjbWQsIGFyZ3MsIG1heWJlX2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcmVjIGFkZF9oZWxwX3N1YmNvbW1hbmRzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgXyBhcyB0IC0+IHRcbiAgICB8IEV4ZWMgXyBhcyB0IC0+IHRcbiAgICB8IEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9IC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBzdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YmNvbW1hbmRzIH5mOmFkZF9oZWxwX3N1YmNvbW1hbmRzKVxuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcImhlbHBcIlxuICAgICAgICAgICAgKGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGRfaGVscF9zdWJjb21tYW5kcyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoID1cbiAgICBPcHRpb24udmFsdWVfbWFwIGV4dGVuZCB+ZGVmYXVsdDphcmdzIH5mOihmdW4gZiAtPlxuICAgICAgQ21kbGluZS5leHRlbmQgYXJncyB+ZXh0ZW5kOmYgfnBhdGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBkaXNwYXRjaFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICB+cGF0aFxuICAgICAgICAgICAgfmFyZ3NcbiAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICBkaXNwYXRjaFxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+ZXh0ZW5kXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYXJncyA9IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggaW5cbiAgICAgIGxldCBoZWxwX3RleHQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGhlbHBfZm9yX3NoYXBlIChzaGFwZSB0KSBwYXRoIH5yZWN1cnNpdmU6ZmFsc2UgfmZsYWdzOnRydWUgfmV4cGFuZF9kb3RzOmZhbHNlKVxuICAgICAgaW5cbiAgICAgIEJhc2UucnVuXG4gICAgICAgIGJhc2VcbiAgICAgICAgZW52XG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgIHwgRXhlYyBleGVjIC0+XG4gICAgICBsZXQgYXJncyA9IENtZGxpbmUudG9fbGlzdCAobWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCkgaW5cbiAgICAgIEV4ZWMuZXhlY193aXRoX2FyZ3MgfmFyZ3MgZXhlYyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICB8IEdyb3VwICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0gYXMgZ3JvdXApIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gRW52LnNldCBlbnYgfmtleTpzdWJzX2tleSB+ZGF0YTooTGF6eS5mb3JjZSBzdWJzKSBpblxuICAgICAgbGV0IGRpZV9zaG93aW5nX2hlbHAgbXNnID1cbiAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIiVzXFxuJSFcIlxuICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0pKVxuICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgZGllIFwiJXNcIiBtc2cgKCkpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICAgIGxldCBtYXliZV9uZXdfY29tcF9jd29yZCA9IE9wdGlvbi5tYXAgfmY6SW50LnByZWQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHNraXAgcmVzdCA9IHBhcnNlX2dyb3VwIHJlc3Qgfm1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCByZXNvbHZlIHN1YiByZXN0ID1cbiAgICAgICAgICBsZXQgc3VicyA9IExpc3QuQXNzb2MubWFwIChMYXp5LmZvcmNlIHN1YnMpIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSBpblxuICAgICAgICAgIG1hdGNoIGxvb2t1cF9leHBhbmQgc3VicyBzdWIgU3ViY29tbWFuZCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBtc2cgLT4gZGllX3Nob3dpbmdfaGVscCBtc2dcbiAgICAgICAgICB8IE9rIChzdWIsIHQpIC0+XG4gICAgICAgICAgICBkaXNwYXRjaFxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgICAgfnBhdGg6KFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6c3ViKVxuICAgICAgICAgICAgICB+YXJnczpyZXN0XG4gICAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGFyZ3MgOiBDbWRsaW5lLnQpIHdpdGhcbiAgICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGRpZV9zaG93aW5nX2hlbHBcbiAgICAgICAgICAgICAgIChzcHJpbnRmIFwibWlzc2luZyBzdWJjb21tYW5kIGZvciBjb21tYW5kICVzXCIgKFBhdGgudG9fc3RyaW5nIHBhdGgpKVxuICAgICAgICAgICB8IFNvbWUgYm9keSAtPiBib2R5IH5wYXRoOihQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoKSlcbiAgICAgICAgfCBDb25zIChzdWIsIHJlc3QpIC0+XG4gICAgICAgICAgKCogTWF0Y2ggZm9yIGZsYWdzIHJlY29nbml6ZWQgd2hlbiBzdWJjb21tYW5kcyBhcmUgZXhwZWN0ZWQgbmV4dCAqKVxuICAgICAgICAgIChtYXRjaCBzdWIgd2l0aFxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGF0IHRoZSB0b3AgbGV2ZWwgY29tbWFuZCBvbmx5ICopXG4gICAgICAgICAgIHwgKFwiLXZlcnNpb25cIiB8IFwiLS12ZXJzaW9uXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF92ZXJzaW9uIH52ZXJzaW9uO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IChcIi1idWlsZC1pbmZvXCIgfCBcIi0tYnVpbGQtaW5mb1wiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBldmVyeXdoZXJlICopXG4gICAgICAgICAgIHwgXCItaGVscFwiIHwgXCItLWhlbHBcIiAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5pbCB8IENvbXBsZXRlIChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBncm91cCB3aXRoIHN1YmNvbW1hbmRzID0gc3VicyB9KSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICAgICAgICAgZXhpdCAwXG4gICAgICAgICAgICAgICB8IENtZGxpbmUuQ29ucyAoZmlyc3Rfb2ZfcmVzdCwgcmVzdF9vZl9yZXN0KSAtPlxuICAgICAgICAgICAgICAgICByZXNvbHZlIGZpcnN0X29mX3Jlc3QgKENvbnMgKHN1YiwgcmVzdF9vZl9yZXN0KSkpXG4gICAgICAgICAgIHwgKF8gOiBzdHJpbmcpIC0+IHJlc29sdmUgc3ViIHJlc3QpXG4gICAgICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgIExhenkuZm9yY2Ugc3Vic1xuICAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6ZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIG5hbWUgLT4gU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6cGFydClcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGNvbXBsZXRlX3N1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICAgICAgICAgc2hhcGUgdCB8PiBTaGFwZS5mdWxseV9mb3JjZWQgfD4gU2hhcGUuRnVsbHlfZm9yY2VkLmV4cGFuZGVkX3N1YmNvbW1hbmRzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAobWF0Y2ggZiB+cGF0aDooUGF0aC5wYXJ0cyBwYXRoKSB+cGFydCBzdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBleGl0IDFcbiAgICAgICAgICAgICAgfCBTb21lIHRvX291dHB1dCAtPlxuICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmUgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB0b19vdXRwdXQpO1xuICAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgTGlzdC5pdGVyIHN1YnMgfmY6cHJpbnRfZW5kbGluZTtcbiAgICAgICAgICAgICBleGl0IDApXG4gICAgICBpblxuICAgICAgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcnVuXG4gICAgICAgID92ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgID92ZXJzaW9uXG4gICAgICAgID9idWlsZF9pbmZvXG4gICAgICAgID8oYXJndiA9IEFycmF5LnRvX2xpc3QgQ2FtbC5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG4oKiBOT1RFOiBhbGwgdGhhdCBmb2xsb3dzIGlzIHNpbXBseSBuYW1lc3BhY2UgbWFuYWdlbWVudCBib2lsZXJwbGF0ZS4gIFRoaXMgd2lsbCBnbyBhd2F5XG4gICBvbmNlIHdlIHJlLXdvcmsgdGhlIGludGVybmFscyBvZiBDb21tYW5kIHRvIHVzZSBBcHBsaWNhdGl2ZSBmcm9tIHRoZSBncm91bmQgdXAuICopXG5cbm1vZHVsZSBQYXJhbSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSArJ2EgdFxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBoZWxwIDogc3RyaW5nIExhenkudCB0XG4gICAgdmFsIHBhdGggOiBzdHJpbmcgbGlzdCB0XG4gICAgdmFsIGFyZ3MgOiBzdHJpbmcgbGlzdCB0XG5cbiAgICB2YWwgZmxhZ1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBGbGFnLnRcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgQXJnX3R5cGUudFxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+IGRlZmF1bHQ6J2FcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBhbm9uIDogJ2EgQW5vbnMudCAtPiAnYSB0XG4gICAgdmFsIGVzY2FwZV9hbm9uIDogZmluYWxfYW5vbjonYSBBbm9ucy50IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gOiBzaWdcbiAgICAgIHR5cGUgKF8sIF8pIHQgPVxuICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmV0dXJuX25vbmUgOiAoJ2EsICdhIG9wdGlvbikgdFxuICAgIGVuZFxuXG4gICAgdmFsIGNob29zZV9vbmVcbiAgICAgIDogICdhIG9wdGlvbiB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBhbmRfYXJnX25hbWVzIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuICAgIHZhbCBhbmRfYXJnX25hbWUgOiAnYSB0IC0+ICgnYSAqIHN0cmluZykgdFxuICAgIHZhbCBhcmdfbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBBID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU3BlYy5wYXJhbVxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgcmV0dXJuID0gU3BlYy5jb25zdFxuICAgICAgICBsZXQgYXBwbHkgPSBTcGVjLmFwcGx5XG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIFNwZWMubWFwXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQVxuXG4gIGxldCBoZWxwID0gU3BlYy5oZWxwXG4gIGxldCBwYXRoID0gU3BlYy5wYXRoXG4gIGxldCBhcmdzID0gU3BlYy5hcmdzXG4gIGxldCBmbGFnID0gU3BlYy5mbGFnXG4gIGxldCBhbm9uID0gU3BlYy5hbm9uXG4gIGxldCBjaG9vc2Vfb25lID0gU3BlYy5jaG9vc2Vfb25lXG4gIGxldCBhcmdfbmFtZXMgPSBTcGVjLmFyZ19uYW1lc1xuICBsZXQgYW5kX2FyZ19uYW1lcyA9IFNwZWMuYW5kX2FyZ19uYW1lc1xuICBsZXQgYW5kX2FyZ19uYW1lID0gU3BlYy5hbmRfYXJnX25hbWVcbiAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvYyA9IFNwZWMuZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gU3BlYy5JZl9ub3RoaW5nX2Nob3NlblxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgb3BlbiBGbGFnXG5cbiAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICBsZXQgb25lX29yX21vcmUgPSBvbmVfb3JfbW9yZVxuICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gIGVuZFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgb3BlbiBBbm9uc1xuXG4gICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICBsZXQgdDIgPSB0MlxuICAgIGxldCB0MyA9IHQzXG4gICAgbGV0IHQ0ID0gdDRcbiAgZW5kXG5cbiAgbGV0IGVzY2FwZV9hbm9uID0gU3BlYy5lc2NhcGVfYW5vblxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyYW1cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyYW1cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuXG50eXBlICdyZXN1bHQgYmFzaWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKSAtPiAodW5pdCAtPiAncmVzdWx0KSBQYXJhbS50IC0+IHRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBsZXQgc3BlYyA9IFNwZWMub2ZfcGFyYW1zIEBAIFBhcmFtLm1hcCBwYXJhbSB+ZjooZnVuIHJ1biAoKSAoKSAtPiBydW4gKCkpIGluXG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjICgpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYWJzX3BhdGggPSBhYnNfcGF0aFxuICBsZXQgd29yZF93cmFwID0gU2hhcGUuUHJpdmF0ZS53b3JkX3dyYXBcblxuICBtb2R1bGUgQW5vbnMgPSBBbm9uc1xuICBtb2R1bGUgQ21kbGluZSA9IENtZGxpbmVcbiAgbW9kdWxlIEZvcl91bml4ID0gRm9yX3VuaXhcbiAgbW9kdWxlIFBhdGggPSBQYXRoXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNwZWNcblxuICAgIGxldCB0b19zdHJpbmdfZm9yX2Nob29zZV9vbmUgcGFyYW0gPVxuICAgICAgQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdHJpbmdfaWRfaW50ZlxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICAgICAgIGxldCBjaGVja19mb3Jfd2hpdGVzcGFjZSA9XG4gICAgICAgICAgbGV0IGludmFsaWQgcyByZWFzb24gPVxuICAgICAgICAgICAgRXJyb3IgKHNwcmludGYgXCInJXMnIGlzIG5vdCBhIHZhbGlkICVzIGJlY2F1c2UgJXNcIiBzIE0ubW9kdWxlX25hbWUgcmVhc29uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIHMgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgIGlmIEludC4oID0gKSBsZW4gMFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBpcyBlbXB0eVwiXG4gICAgICAgICAgICBlbHNlIGlmIENoYXIuaXNfd2hpdGVzcGFjZSBzLlswXSB8fCBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bbGVuIC0gMV1cbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaGFzIHdoaXRlc3BhY2Ugb24gdGhlIGVkZ2VcIlxuICAgICAgICAgICAgZWxzZSBPayAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB2YWxpZGF0ZSBzID0gUmVzdWx0Lm1hcF9lcnJvciAoTS52YWxpZGF0ZSBzKSB+ZjpFcnJvci50b19zdHJpbmdfbWFjaFxuXG4gICAgICAgIGxldCBjaGVjayBzID1cbiAgICAgICAgICBpZiBNLmluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBjaGVja19mb3Jfd2hpdGVzcGFjZSBzIHdpdGhcbiAgICAgICAgICAgIHwgT2sgKCkgLT4gdmFsaWRhdGUgc1xuICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciBlcnJvcilcbiAgICAgICAgICBlbHNlIHZhbGlkYXRlIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICAgICAgbGV0IHBwID0gU3RyaW5nLnBwXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBpbnZhbGlkX2FyZyBlcnJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBzID0gU3RyaW5nLlN0YWJsZS5WMS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKFN0cmluZylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RyaW5nXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRfd2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUX3dpdGhfY29tcGFyYXRvclxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGVcbiAgTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5TdHJpbmdfaWRcIlxuICAgIGVuZClcbiAgICAoKVxuXG5tb2R1bGUgU3RyaW5nX3dpdGhvdXRfdmFsaWRhdGlvbl93aXRob3V0X3ByZXR0eV9wcmludGVyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgRm4uaWRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdGFibGVfdW5pdF90ZXN0X2ludGZcblxubW9kdWxlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIGRlc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBzZXhwX2FzX3N0cmluZyB8PiBTZXhwLm9mX3N0cmluZyB8PiBbJW9mX3NleHA6IFQudF0pXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICAgT3JfZXJyb3IudGFnX2FyZ1xuICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgXCJjb3VsZCBub3QgZGVzZXJpYWxpemUgc2V4cFwiXG4gICAgICAgICAgICAgKHNleHBfYXNfc3RyaW5nLCBgRXhwZWN0ZWQgdClcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIFsgYEV4cGVjdGVkIG9mIFQudCBdXVxuICAgICAgICAgfCBPayB0JyAtPlxuICAgICAgICAgICBpZiBULmVxdWFsIHQgdCdcbiAgICAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHNleHBfYXNfc3RyaW5nIGluXG4gICAgICAgICAgIGxldCBzZXJpYWxpemVkX3NleHAgPSBULnNleHBfb2ZfdCB0IGluXG4gICAgICAgICAgIGlmIFNleHAuKCA8PiApIHNlcmlhbGl6ZWRfc2V4cCBzZXhwXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cCwgYEJ1dF9nb3Qgc2VyaWFsaXplZF9zZXhwKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IF1dKSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIF8sIGV4cGVjdGVkX2Jpbl9pbykgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgdG9fYmluX3N0cmluZyB0ID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2Jpbl9pbyA9IHRvX2Jpbl9zdHJpbmcgdCBpblxuICAgICAgaWYgU3RyaW5nLiggPD4gKSBzZXJpYWxpemVkX2Jpbl9pbyBleHBlY3RlZF9iaW5faW9cbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICh0LCBgRXhwZWN0ZWQgZXhwZWN0ZWRfYmluX2lvLCBgQnV0X2dvdCBzZXJpYWxpemVkX2Jpbl9pbylcbiAgICAgICAgICBbJXNleHBfb2Y6IFQudCAqIFsgYEV4cGVjdGVkIG9mIHN0cmluZyBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gc2VyaWFsaXplZF9iaW5faW8gaW5cbiAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9iaW5faW9fdGVzdCAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91bm9yZGVyZWRfY29udGFpbmVyIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfYXJnKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRlc3QgPSBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0XG5cbiAgbGV0JXRlc3RfdW5pdCBcInNleHBcIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LnNleHBzOyBfIH0pIC0+XG4gICAgICBsZXQgc2V4cHMgPSBMaXN0Lm1hcCBzZXhwcyB+ZjpTZXhwLm9mX3N0cmluZyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfZWxlbWVudHMgPVxuICAgICAgICBtYXRjaCBULnNleHBfb2ZfdCB0IHdpdGhcbiAgICAgICAgfCBTZXhwLkxpc3Qgc2V4cHMgLT4gc2V4cHNcbiAgICAgICAgfCBTZXhwLkF0b20gXyAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJleHBlY3RlZCBsaXN0IHdoZW4gc2VyaWFsaXppbmcgdW5vcmRlcmVkIGNvbnRhaW5lclwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBULnNleHBfb2ZfdFxuICAgICAgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2V4cHMgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNleHBzIGluXG4gICAgICBsZXQgc29ydGVkX3NlcmlhbGl6ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNlcmlhbGl6ZWRfZWxlbWVudHMgaW5cbiAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTZXhwLiggPSApIHNvcnRlZF9zZXhwcyBzb3J0ZWRfc2VyaWFsaXplZClcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHNleHBzLCBgQnV0X2dvdCBzZXJpYWxpemVkX2VsZW1lbnRzKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IGxpc3QgXV07XG4gICAgICBsZXQgc2V4cF9wZXJtdXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBzZXhwcykgaW5cbiAgICAgIExpc3QuaXRlciBzZXhwX3Blcm11dGF0aW9ucyB+ZjooZnVuIHNleHBzIC0+XG4gICAgICAgIGxldCB0JyA9IFQudF9vZl9zZXhwIChTZXhwLkxpc3Qgc2V4cHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1zaW1hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuXG4gIGxldCByZWMgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgc3RyaW5ncyA9XG4gICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgIHRoZW4gTGlzdC5mb3JfYWxsIHN0cmluZ3MgfmY6U3RyaW5nLmlzX2VtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcmV2X3NraXBwZWQgc3RyaW5ncyA9XG4gICAgICAgIG1hdGNoIHN0cmluZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICAgIHwgcHJlZml4IDo6IHN0cmluZ3MgLT5cbiAgICAgICAgICBsZXQgY29udGludWUgKCkgPSBsb29wIChwcmVmaXggOjogcmV2X3NraXBwZWQpIHN0cmluZ3MgaW5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXggc3RyaW5nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvbnRpbnVlICgpXG4gICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgICBpc19jb25jYXRlbmF0aW9uIHN0cmluZyAoTGlzdC5yZXZfYXBwZW5kIHJldl9za2lwcGVkIHN0cmluZ3MpIHx8IGNvbnRpbnVlICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gc3RyaW5ncylcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5iaW5faW9faGVhZGVyOyBiaW5faW9fZWxlbWVudHM7IF8gfSkgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgZWxlbWVudHMgPSBiaW5faW9fZWxlbWVudHMgaW5cbiAgICAgIGxldCBiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMgPSBiaW5faW9faGVhZGVyIF4gU3RyaW5nLmNvbmNhdCBlbGVtZW50cyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6YXRpb25fbWF0Y2hlcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4OmJpbl9pb19oZWFkZXIgc2VyaWFsaXplZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgZWxlbWVudHNfc3RyaW5nIC0+IGlzX2NvbmNhdGVuYXRpb24gZWxlbWVudHNfc3RyaW5nIGVsZW1lbnRzXG4gICAgICBpblxuICAgICAgaWYgbm90IHNlcmlhbGl6YXRpb25fbWF0Y2hlc1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIChiaW5faW9faGVhZGVyLCBlbGVtZW50cyksIGBCdXRfZ290IHNlcmlhbGl6ZWQpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgKiBzdHJpbmcgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgcGVybXV0YXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBlbGVtZW50cykgaW5cbiAgICAgIExpc3QuaXRlciBwZXJtdXRhdGF0aW9ucyB+ZjooZnVuIGVsZW1lbnRzIC0+XG4gICAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSAoYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJiaW4taW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuKCogVGhlIG1vZHVsZSBbVF0gc2VydmVzIHRvIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IGFsbCBCbGFuZy50IHZhbHVlcyBhcmUgaW4gYVxuICAgbm9ybWFsIGZvcm0gd2hlcmVieSBib29sZWFuIGNvbnN0YW50cyBUcnVlIGFuZCBGYWxzZSBvbmx5IGFwcGVhciBhcyB0aGUgdG9wbW9zdFxuICAgY29uc3RydWN0b3IgLS0gaW4gYW55IG90aGVyIHBvc2l0aW9uIHRoZXkgYXJlIHNpbXBsaWZpZWQgYXdheSB1c2luZyBsYXdzIG9mXG4gICBib29sZWFuIGFsZ2VicmEuXG5cbiAgIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5lc3RlZCBbQW5kXXMgYW5kIFtPcl1zIGVhY2ggbGVhbiB0byB0aGUgcmlnaHQgc28gdGhhdCBbZXZhbF1cbiAgIGRvZXNuJ3QgbmVlZCBzbyBtdWNoIHN0YWNrIHNwYWNlIGFzIGl0IHdvdWxkIGlmIHRoZXkgbGVhbmVkIHRvIHRoZSBsZWZ0LiAgVGhvdWdodFxuICAgZXhwZXJpbWVudDogY29tcGFyZSBob3cgW2V2YWxdIHdvcmtzIG9uIHJpZ2h0LWxlYW5pbmcgW0FuZCAoYSwgQW5kIChiLCBBbmQgKGMsIGQpKSldXG4gICB2ZXJzdXMgbGVmdC1sZWFuaW5nIFtBbmQgKEFuZCAoQW5kIChhLCBiKSwgYyksIGQpXS4gIFRoZSBmb3JtZXIgaXMgdGhlIGJlc3QgY2FzZSBhbmQgaXNcbiAgIGVuZm9yY2VkLlxuXG4gICBOb3RlOiB0aGlzIGZpbGUgZGV2aWF0ZXMgZnJvbSB0aGUgdXN1YWwgcGF0dGVybiBvZiBtb2R1bGVzIHdpdGggU3RhYmxlIGludGVyZmFjZXMgaW5cbiAgIHRoYXQgdGhlIFN0YWJsZSBzdWItbW9kdWxlIGlzIG5vdCB0aGUgZmlyc3QgdGhpbmcgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLiAgVGhlXG4gICByZWFzb24gZm9yIHRoaXMgZGV2aWF0aW9uIGlzIHNvIHRoYXQgb25lIGNhbiBjb252aW5jZSBvbmVzZWxmIG9mIHRoZSBhZm9yZW1lbnRpb25lZFxuICAgaW52YXJpYW50IGFmdGVyIHJlYWRpbmcgb25seSB0aGlzIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgQWZ0ZXIgZGVmaW5pbmcgVCB3ZSB0aGVuXG4gICBpbW1lZGlhdGVseSBkZWZpbmUgaXRzIFN0YWJsZSBpbnRlcmZhY2UuXG4qKVxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgdmFsIGludmFyaWFudCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgdHJ1ZV8gOiAnYSB0XG4gIHZhbCBmYWxzZV8gOiAnYSB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRhbHNvIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9yZWxzZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICBsZXQgaW52YXJpYW50ID1cbiAgICBsZXQgc3VidGVybXMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgfCBCYXNlIF8gLT4gW11cbiAgICAgIHwgTm90IHQxIC0+IFsgdDEgXVxuICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBbIHQxOyB0MiBdXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBbIHQxOyB0MjsgdDMgXVxuICAgIGluXG4gICAgbGV0IHJlYyBjb250YWluc19ub19jb25zdGFudHMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgICBpblxuICAgIGZ1biB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gIDs7XG5cbiAgbGV0IHRydWVfID0gVHJ1ZVxuICBsZXQgZmFsc2VfID0gRmFsc2VcbiAgbGV0IGJhc2UgdiA9IEJhc2UgdlxuXG4gIGxldCBub3RfID0gZnVuY3Rpb25cbiAgICB8IFRydWUgLT4gRmFsc2VcbiAgICB8IEZhbHNlIC0+IFRydWVcbiAgICB8IE5vdCB0IC0+IHRcbiAgICB8IHQgLT4gTm90IHRcbiAgOztcblxuICBsZXQgcmVjIGFuZGFsc28gdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBGYWxzZSB8IEZhbHNlLCBfIC0+IEZhbHNlXG4gICAgfCBvdGhlciwgVHJ1ZSB8IFRydWUsIG90aGVyIC0+IG90aGVyXG4gICAgfCBBbmQgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtBbmRdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBBbmQgKHQxYSwgYW5kYWxzbyB0MWIgdDIpXG4gICAgfCBfIC0+IEFuZCAodDEsIHQyKVxuICA7O1xuXG4gIGxldCByZWMgb3JlbHNlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgVHJ1ZSB8IFRydWUsIF8gLT4gVHJ1ZVxuICAgIHwgb3RoZXIsIEZhbHNlIHwgRmFsc2UsIG90aGVyIC0+IG90aGVyXG4gICAgfCBPciAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW09yXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgT3IgKHQxYSwgb3JlbHNlIHQxYiB0MilcbiAgICB8IF8gLT4gT3IgKHQxLCB0MilcbiAgOztcblxuICBsZXQgaWZfIGEgYiBjID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFRydWUgLT4gYlxuICAgIHwgRmFsc2UgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIGIsIGMgd2l0aFxuICAgICAgIHwgVHJ1ZSwgXyAtPiBvcmVsc2UgYSBjXG4gICAgICAgfCBfLCBGYWxzZSAtPiBhbmRhbHNvIGEgYlxuICAgICAgIHwgXywgVHJ1ZSAtPiBvcmVsc2UgKG5vdF8gYSkgYlxuICAgICAgIHwgRmFsc2UsIF8gLT4gYW5kYWxzbyAobm90XyBhKSBjXG4gICAgICAgfCBfIC0+IElmIChhLCBiLCBjKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgKCogVEhJUyBUWVBFIEFORCBJVFMgU0VSSUFMSVpBVElPTlMgU0hPVUxEIE5FVkVSIEJFIENIQU5HRUQgLSBQTEVBU0UgU1BFQUsgV0lUSFxuICAgICAgIEFOT1RIRVIgREVWRUxPUEVSIElGIFlPVSBORUVEIE1PUkUgREVUQUlMICopXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBUIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuICAgIHR5cGUgc2V4cCA9IFNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2Ygc2V4cCBsaXN0XG5cbiAgICAoKiBjaGVhcCBpbXBvcnQgKilcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBhbmQncyAqKVxuICAgIGxldCBnYXRoZXJfY29uanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBvcidzICopXG4gICAgbGV0IGdhdGhlcl9kaXNqdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogW2FuZF9dIGFuZCBbb3JfXSB1c2UgW2ZvbGRfcmlnaHRdIGluc3RlYWQgb2YgW2ZvbGRfbGVmdF0gdG8gYXZvaWQgcXVhZHJhdGljXG4gICAgICAgYmVoYXZpb3Igd2l0aCBbYW5kYWxzb10gb3IgW29yZWxzZV0sIHJlc3BlY3RpdmVseS4gKilcbiAgICBsZXQgYW5kXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDp0cnVlXyB+ZjphbmRhbHNvXG4gICAgbGV0IG9yXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDpmYWxzZV8gfmY6b3JlbHNlXG5cbiAgICBsZXQgdW5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeCBdIC0+IHhcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgb25lIGFyZ3VtZW50LCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdGVybmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4OyB5OyB6IF0gLT4geCwgeSwgelxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyB0aHJlZSBhcmd1bWVudHMsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIHggLT4gc2V4cF9vZl92YWx1ZSB4XG4gICAgICAgIHwgVHJ1ZSAtPiBBdG9tIFwidHJ1ZVwiXG4gICAgICAgIHwgRmFsc2UgLT4gQXRvbSBcImZhbHNlXCJcbiAgICAgICAgfCBOb3QgdCAtPiBMaXN0IFsgQXRvbSBcIm5vdFwiOyBhdXggdCBdXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IExpc3QgWyBBdG9tIFwiaWZcIjsgYXV4IHQxOyBhdXggdDI7IGF1eCB0MyBdXG4gICAgICAgIHwgQW5kIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9jb25qdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJhbmRcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICAgIHwgT3IgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Rpc2p1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcIm9yXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgaW5cbiAgICAgIGF1eCB0XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgYmFzZV9vZl9zZXhwIHNleHAgPVxuICAgICAgbGV0IGJhc2Ugc2V4cCA9IGJhc2UgKGJhc2Vfb2Zfc2V4cCBzZXhwKSBpblxuICAgICAgbGV0IHJlYyBhdXggc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEF0b20ga3cgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZV9cbiAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gZmFsc2VfXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgTGlzdCAoQXRvbSBrdyA6OiBhcmdzKSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcImFuZFwiIC0+IGFuZF8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwib3JcIiAtPiBvcl8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwibm90XCIgLT4gbm90XyAoYXV4ICh1bmFyeSBcIm5vdFwiIGFyZ3Mgc2V4cCkpXG4gICAgICAgICAgIHwgXCJpZlwiIC0+XG4gICAgICAgICAgICAgbGV0IHgsIHksIHogPSB0ZXJuYXJ5IFwiaWZcIiBhcmdzIHNleHAgaW5cbiAgICAgICAgICAgICBpZl8gKGF1eCB4KSAoYXV4IHkpIChhdXggeilcbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cFxuICAgICAgaW5cbiAgICAgIGF1eCBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICBsZXQgZGVmbnMgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5kZWZuIGxpc3QgPVxuICAgICAgICBsZXQgYmxhbmcgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5ncmFtbWFyID0gVHljb24gKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+XG4gICAgICAgIHsgdW50eXBlZCA9IFJlY3Vyc2l2ZSAoVHljb24gKFwiYmxhbmdcIiwgWyBiYXNlX2dyYW1tYXIudW50eXBlZCBdKSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW11cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgbGVuZ3RoID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBpc19lbXB0eSA9IEMuaXNfZW1wdHlcbmxldCBpdGVyID0gQy5pdGVyXG5sZXQgbGVuZ3RoID0gQy5sZW5ndGhcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCByZXR1cm4gPSBiYXNlXG5cbiAgICBsZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBCYXNlIHYgLT4gayB2XG4gICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgICB8IE5vdCB0MSAtPiBub3RfIChiaW5kIHQxIH5mOmspXG4gICAgICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgICAgICBmcmllbmRzIGhlcmUuIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaW52b2x2aW5nIFtMYXp5LnRdIGJ1dCB0aGVcbiAgICAgICAgIG92ZXJoZWFkIHByb2JhYmx5IHdvdWxkbid0IGJlIHdvcnRoIGl0LiAqKVxuICAgICAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IEZhbHNlIC0+IGZhbHNlX1xuICAgICAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICAgICAgfCBPciAodDEsIHQyKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICAgICAgfCBvdGhlciAtPiBvcmVsc2Ugb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgVHJ1ZSAtPiBiaW5kIHQyIH5mOmtcbiAgICAgICAgIHwgRmFsc2UgLT4gYmluZCB0MyB+ZjprXG4gICAgICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBEZWZpbmVfdXNpbmdfYmluZFxuICBlbmQpXG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KVxuOztcblxubGV0IGV2YWxfc2V0IH51bml2ZXJzZTphbGwgc2V0X29mX2Jhc2UgPVxuICBsZXQgcmVjIGF1eCAoYiA6IF8gdCkgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgIHwgVHJ1ZSAtPiBmb3JjZSBhbGxcbiAgICB8IEZhbHNlIC0+IFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihTZXQuY29tcGFyYXRvciAoZm9yY2UgYWxsKSlcbiAgICB8IEFuZCAoYSwgYikgLT4gU2V0LmludGVyIChhdXggYSkgKGF1eCBiKVxuICAgIHwgT3IgKGEsIGIpIC0+IFNldC51bmlvbiAoYXV4IGEpIChhdXggYilcbiAgICB8IE5vdCBhIC0+IFNldC5kaWZmIChmb3JjZSBhbGwpIChhdXggYSlcbiAgICB8IEJhc2UgYSAtPiBzZXRfb2ZfYmFzZSBhXG4gICAgfCBJZiAoY29uZCwgYSwgYikgLT5cbiAgICAgIGxldCBjb25kID0gYXV4IGNvbmQgaW5cbiAgICAgIFNldC51bmlvbiAoU2V0LmludGVyIGNvbmQgKGF1eCBhKSkgKFNldC5pbnRlciAoU2V0LmRpZmYgKGZvcmNlIGFsbCkgY29uZCkgKGF1eCBiKSlcbiAgaW5cbiAgYXV4XG47O1xuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IHplcm8gPSBvZl9yZXByIFJlcHIuemVyb1xubGV0IG1pbl92YWx1ZSA9IG9mX3JlcHIgUmVwci5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWUgPSBvZl9yZXByIFJlcHIubWF4X3ZhbHVlXG5sZXQgc2NhbGUgPSBJbmZpeC4oICogKVxubGV0IGlzY2FsZSB0IHMgPSBvZl9yZXByIChSZXByLiggKiApICh0b19yZXByIHQpIChSZXByLm9mX2ludCBzKSlcbmxldCBieXRlc19pbnRfZXhuID0gVC5ieXRlc19pbnRfZXhuXG5sZXQgYnl0ZXNfaW50NjMgPSB0b19yZXByXG5sZXQgYnl0ZXNfaW50NjQgdCA9IFJlcHIudG9faW50NjQgKHRvX3JlcHIgdClcbmxldCBieXRlc19mbG9hdCB0ID0gUmVwci50b19mbG9hdCAodG9fcmVwciB0KVxubGV0IG9mX2J5dGVzX2ludCBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQgYilcbmxldCBvZl9ieXRlc19pbnQ2MyA9IG9mX3JlcHJcbmxldCBvZl9ieXRlc19pbnQ2NF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50NjRfZXhuIGIpXG5sZXQgb2ZfYnl0ZXNfZmxvYXRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IGIpXG5cbmxldFtAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW2J5dGVzX2ludF9leG5dLCBbYnl0ZXNfaW50NjNdLCBbYnl0ZXNfaW50NjRdIG9yIFtieXRlc19mbG9hdF0gXFxcbiAgIGFzIGFwcHJvcHJpYXRlLlwiXSBieXRlc1xuICA9XG4gIGJ5dGVzX2Zsb2F0XG47O1xuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBcXFxuICAgW29mX2J5dGVzX2Zsb2F0X2V4bl0gYXMgYXBwcm9wcmlhdGUuXCJdIG9mX2J5dGVzXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFt3b3Jkc19pbnRfZXhuXSBvciBbd29yZHNfZmxvYXRdXCJdIHdvcmRzID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX3dvcmRzX2ludF0gb3IgW29mX3dvcmRzX2Zsb2F0X2V4bl1cIl0gb2Zfd29yZHMgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHMgYmFzZVxuICB8IGV4dCAtPlxuICAgIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gaWxsZWdhbCBleHRlbnNpb24gJWNcIiBzIGV4dCAoKVxuOztcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5cbmxldCBsYXJnZXN0X21lYXN1cmUgdCA9XG4gIGxldCB0X2FicyA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKSBpblxuICBpZiB0X2FicyA+PSBleGFieXRlXG4gIHRoZW4gYEV4YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gcGV0YWJ5dGVcbiAgdGhlbiBgUGV0YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gdGVyYWJ5dGVcbiAgdGhlbiBgVGVyYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gZ2lnYWJ5dGVcbiAgdGhlbiBgR2lnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gbWVnYWJ5dGVcbiAgdGhlbiBgTWVnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0ga2lsb2J5dGVcbiAgdGhlbiBgS2lsb2J5dGVzXG4gIGVsc2UgYEJ5dGVzXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICgqIFNoYXJlIHRoZSBjb21tb24gW29mX3NleHBdIGNvZGUgZm9yIFtWMV0gYW5kIFtWMl0uICopXG4gIG1vZHVsZSBPZl9zZXhwX3YxX3YyIDogc2lnXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBub19tYXRjaCAoKSA9IGZhaWx3aXRoIFwiTm90IGEgcmVjb2duaXplZCBbQnl0ZV91bml0cy50XSByZXByZXNlbnRhdGlvblwiXG5cbiAgICBsZXQgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbF9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgXCJCeXRlc1wiIC0+XG4gICAgICAgICh0cnkgb2ZfYnl0ZXNfaW50NjMgKEludDYzLnRfb2Zfc2V4cCB2YWxfc2V4cCkgd2l0aFxuICAgICAgICAgfCBfIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biAoRmxvYXQudF9vZl9zZXhwIHZhbF9zZXhwKSlcbiAgICAgIHwgXCJLaWxvYnl0ZXNcIiAtPiBvZl9raWxvYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiTWVnYWJ5dGVzXCIgLT4gb2ZfbWVnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkdpZ2FieXRlc1wiIC0+IG9mX2dpZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJUZXJhYnl0ZXNcIiAtPiBvZl90ZXJhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiUGV0YWJ5dGVzXCIgLT4gb2ZfcGV0YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkV4YWJ5dGVzXCIgLT4gb2ZfZXhhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiV29yZHNcIiAtPiBvZl93b3Jkc19mbG9hdF9leG4gKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICAgICAgfCBTZXhwLkxpc3QgWyBTZXhwLkF0b20gdW5pdF9uYW1lOyB2YWx1ZSBdIC0+XG4gICAgICAgIG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWx1ZSB1bml0X25hbWVcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgdHJ5IHRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZXhuIC0+IHJhaXNlIChTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc2V4cCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjMpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19pbnQ2M1xuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfaW50NjNcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgYEJ5dGVzIChieXRlc19pbnQ2MyB0IDogSW50NjMudCldXG4gIGVuZFxuZW5kXG5cbmxldCB0b19zdHJpbmdfaHVtID0gVC50b19zdHJpbmdcblxubW9kdWxlIFNob3J0ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBsZXQgdG9fdW5pdHNfc3RyIHRvX3VuaXQgZXh0ID1cbiAgICAgIGxldCBmID0gdG9fdW5pdCB0IGluXG4gICAgICBsZXQgZl9hYnMgPSBGbG9hdC5hYnMgZiBpblxuICAgICAgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMGYlY1wiIGYgZXh0XG4gICAgICBlbHNlIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMWYlY1wiIGYgZXh0XG4gICAgICBlbHNlIHNwcmludGYgXCIlLjJmJWNcIiBmIGV4dFxuICAgIGluXG4gICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgIHwgYEJ5dGVzIC0+IHNwcmludGYgXCIlZEJcIiAoYnl0ZXNfaW50X2V4biB0KVxuICAgIHwgYEtpbG9ieXRlcyAtPiB0b191bml0c19zdHIga2lsb2J5dGVzICdLJ1xuICAgIHwgYE1lZ2FieXRlcyAtPiB0b191bml0c19zdHIgbWVnYWJ5dGVzICdNJ1xuICAgIHwgYEdpZ2FieXRlcyAtPiB0b191bml0c19zdHIgZ2lnYWJ5dGVzICdHJ1xuICAgIHwgYFRlcmFieXRlcyAtPiB0b191bml0c19zdHIgdGVyYWJ5dGVzICdUJ1xuICAgIHwgYFBldGFieXRlcyAtPiB0b191bml0c19zdHIgcGV0YWJ5dGVzICdQJ1xuICAgIHwgYEV4YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBleGFieXRlcyAnRSdcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwKTtcbiAgICBbJWV4cGVjdCB7fCAxMDAwQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgWyVleHBlY3Qge3wgMTAyM0IgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI1KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3LjdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5NzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS41NE0gfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5LjMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5MC45VCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA4OC44UCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc10sIFtvZl9raWxvYnl0ZXNdLCBbb2ZfbWVnYWJ5dGVzXSwgZXRjIGFzIGFwcHJvcHJpYXRlLlwiXSBjcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gID1cbiAgbWF0Y2ggdW5pdHMgd2l0aFxuICB8IGBCeXRlcyAtPiBvZl9ieXRlc19mbG9hdF9leG4gdmFsdWVcbiAgfCBgS2lsb2J5dGVzIC0+IG9mX2tpbG9ieXRlcyB2YWx1ZVxuICB8IGBNZWdhYnl0ZXMgLT4gb2ZfbWVnYWJ5dGVzIHZhbHVlXG4gIHwgYEdpZ2FieXRlcyAtPiBvZl9naWdhYnl0ZXMgdmFsdWVcbiAgfCBgV29yZHMgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIHZhbHVlXG47O1xuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFJlcHIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlID0gb2ZfcmVwclxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9fcmVwclxuICAgIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogQ2FtbC5PYmoudCAtPiBib29sID0gXCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1wiIFtAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoQ2FtbC5PYmoucmVwciB2KVxubGV0IGNyZWF0ZSB2ID0gaWYgaXNfb2sgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcblxubGV0IGNyZWF0ZV9leG4gdiA9XG4gIGlmIGlzX29rIHYgdGhlbiB2IGVsc2UgZmFpbHdpdGggXCJIZWFwX2Jsb2NrLmNyZWF0ZV9leG4gY2FsbGVkIHdpdGggbm9uIGhlYXAgYmxvY2tcIlxuOztcblxubGV0IHZhbHVlIHQgPSB0XG5sZXQgYnl0ZXNfcGVyX3dvcmQgPSBXb3JkX3NpemUuKG51bV9iaXRzIHdvcmRfc2l6ZSkgLyA4XG5cbmxldCBieXRlcyAodHlwZSBhKSAodCA6IGEgdCkgPVxuICAoQ2FtbC5PYmouc2l6ZSAoQ2FtbC5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBOZXh0X2ZpdFxuICAgICAgICB8IEZpcnN0X2ZpdFxuICAgICAgICB8IEJlc3RfZml0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBtb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSUgZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBDYW1sLkdjXG5cbm1vZHVsZSBTdGF0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBiaW5faW8sIHNleHAsIGZpZWxkc11cblxuICAgIFslJWVsc2VdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgZGlmZiBhZnRlciBiZWZvcmUgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBhZnRlci5taW5vcl93b3JkcyAtLiBiZWZvcmUubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gYWZ0ZXIucHJvbW90ZWRfd29yZHMgLS4gYmVmb3JlLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGFmdGVyLm1ham9yX3dvcmRzIC0uIGJlZm9yZS5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBhZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBhZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGFmdGVyLmhlYXBfd29yZHMgLSBiZWZvcmUuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBhZnRlci5oZWFwX2NodW5rcyAtIGJlZm9yZS5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGFmdGVyLmxpdmVfd29yZHMgLSBiZWZvcmUubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBhZnRlci5saXZlX2Jsb2NrcyAtIGJlZm9yZS5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGFmdGVyLmZyZWVfd29yZHMgLSBiZWZvcmUuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBhZnRlci5mcmVlX2Jsb2NrcyAtIGJlZm9yZS5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gYWZ0ZXIubGFyZ2VzdF9mcmVlIC0gYmVmb3JlLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gYWZ0ZXIuZnJhZ21lbnRzIC0gYmVmb3JlLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBhZnRlci5jb21wYWN0aW9ucyAtIGJlZm9yZS5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBhZnRlci50b3BfaGVhcF93b3JkcyAtIGJlZm9yZS50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGFmdGVyLnN0YWNrX3NpemUgLSBiZWZvcmUuc3RhY2tfc2l6ZVxuICAgIH1cbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBkaWZmIGFmdGVyIGJlZm9yZSA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGFmdGVyLm1pbm9yX3dvcmRzIC0uIGJlZm9yZS5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBhZnRlci5wcm9tb3RlZF93b3JkcyAtLiBiZWZvcmUucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gYWZ0ZXIubWFqb3Jfd29yZHMgLS4gYmVmb3JlLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1pbm9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gYWZ0ZXIuaGVhcF93b3JkcyAtIGJlZm9yZS5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGFmdGVyLmhlYXBfY2h1bmtzIC0gYmVmb3JlLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gYWZ0ZXIubGl2ZV93b3JkcyAtIGJlZm9yZS5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGFmdGVyLmxpdmVfYmxvY2tzIC0gYmVmb3JlLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gYWZ0ZXIuZnJlZV93b3JkcyAtIGJlZm9yZS5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGFmdGVyLmZyZWVfYmxvY2tzIC0gYmVmb3JlLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBhZnRlci5sYXJnZXN0X2ZyZWUgLSBiZWZvcmUubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBhZnRlci5mcmFnbWVudHMgLSBiZWZvcmUuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGFmdGVyLmNvbXBhY3Rpb25zIC0gYmVmb3JlLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGFmdGVyLnRvcF9oZWFwX3dvcmRzIC0gYmVmb3JlLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gYWZ0ZXIuc3RhY2tfc2l6ZSAtIGJlZm9yZS5zdGFja19zaXplXG4gICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgPVxuICAgICAgICBhZnRlci5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgLSBiZWZvcmUuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXG4gICAgfVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlIGVsc2VdXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJSBlbmRpZl1cblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5lbmRcblxubW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5BbGxvY2F0aW9uX3BvbGljeS5WMS50ID1cbiAgICB8IE5leHRfZml0XG4gICAgfCBGaXJzdF9maXRcbiAgICB8IEJlc3RfZml0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgIHwgTmV4dF9maXQgLT4gMFxuICAgIHwgRmlyc3RfZml0IC0+IDFcbiAgICB8IEJlc3RfZml0IC0+IDJcbiAgOztcbmVuZFxuXG5sZXQgdHVuZVxuICAgICAgP2xvZ2dlclxuICAgICAgP21pbm9yX2hlYXBfc2l6ZVxuICAgICAgP21ham9yX2hlYXBfaW5jcmVtZW50XG4gICAgICA/c3BhY2Vfb3ZlcmhlYWRcbiAgICAgID92ZXJib3NlXG4gICAgICA/bWF4X292ZXJoZWFkXG4gICAgICA/c3RhY2tfbGltaXRcbiAgICAgID9hbGxvY2F0aW9uX3BvbGljeVxuICAgICAgP3dpbmRvd19zaXplXG4gICAgICA/Y3VzdG9tX21ham9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX21heF9zaXplXG4gICAgICAoKVxuICA9XG4gIGxldCBvbGRfY29udHJvbF9wYXJhbXMgPSBnZXQgKCkgaW5cbiAgbGV0IGYgb3B0IHRvX3N0cmluZyBmaWVsZCA9XG4gICAgbGV0IG9sZF92YWx1ZSA9IEZpZWxkLmdldCBmaWVsZCBvbGRfY29udHJvbF9wYXJhbXMgaW5cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICB8IFNvbWUgbmV3X3ZhbHVlIC0+XG4gICAgICBPcHRpb24uaXRlciBsb2dnZXIgfmY6KGZ1biBmIC0+XG4gICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgIGZcbiAgICAgICAgICBcIkdjLkNvbnRyb2wuJXM6ICVzIC0+ICVzXCJcbiAgICAgICAgICAoRmllbGQubmFtZSBmaWVsZClcbiAgICAgICAgICAodG9fc3RyaW5nIG9sZF92YWx1ZSlcbiAgICAgICAgICAodG9fc3RyaW5nIG5ld192YWx1ZSkpO1xuICAgICAgbmV3X3ZhbHVlXG4gIGluXG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9IE9wdGlvbi5tYXAgYWxsb2NhdGlvbl9wb2xpY3kgfmY6QWxsb2NhdGlvbl9wb2xpY3kudG9faW50IGluXG4gIGxldCBuZXdfY29udHJvbF9wYXJhbXMgPVxuICAgIENvbnRyb2wuRmllbGRzLm1hcFxuICAgICAgfm1pbm9yX2hlYXBfc2l6ZTooZiBtaW5vcl9oZWFwX3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5tYWpvcl9oZWFwX2luY3JlbWVudDooZiBtYWpvcl9oZWFwX2luY3JlbWVudCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnNwYWNlX292ZXJoZWFkOihmIHNwYWNlX292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+dmVyYm9zZTooZiB2ZXJib3NlIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWF4X292ZXJoZWFkOihmIG1heF9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnN0YWNrX2xpbWl0OihmIHN0YWNrX2xpbWl0IHN0cmluZ19vZl9pbnQpXG4gICAgICB+YWxsb2NhdGlvbl9wb2xpY3k6KGYgYWxsb2NhdGlvbl9wb2xpY3kgc3RyaW5nX29mX2ludClcbiAgICAgIH53aW5kb3dfc2l6ZTooZiB3aW5kb3dfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9tYWpvcl9yYXRpbzooZiBjdXN0b21fbWFqb3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfcmF0aW86KGYgY3VzdG9tX21pbm9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX21heF9zaXplOihmIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICBpblxuICBzZXQgbmV3X2NvbnRyb2xfcGFyYW1zXG47O1xuXG5sZXQgZGlzYWJsZV9jb21wYWN0aW9uID9sb2dnZXIgfmFsbG9jYXRpb25fcG9saWN5ICgpID1cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID1cbiAgICBtYXRjaCBhbGxvY2F0aW9uX3BvbGljeSB3aXRoXG4gICAgfCBgRG9uJ3RfY2hhbmdlIC0+IE5vbmVcbiAgICB8IGBTZXRfdG8gcG9saWN5IC0+IFNvbWUgcG9saWN5XG4gIGluXG4gICgqIFRoZSB2YWx1ZSAxXzAwMF8wMDAsIGFjY29yZGluZyB0b1xuICAgICBodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZG9jcy9tYW51YWwtb2NhbWwtNC4wMi9saWJyZWYvR2MuaHRtbFxuICAgICB3aWxsIGRpc2FibGUgY29tcGFjdGlvbnMuXG4gICopXG4gIHR1bmUgP2xvZ2dlciA/YWxsb2NhdGlvbl9wb2xpY3kgfm1heF9vdmVyaGVhZDoxXzAwMF8wMDAgKClcbjs7XG5cbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgbWFqb3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwcm9tb3RlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3Byb21vdGVkX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1pbm9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb21wYWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2NvbXBhY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX3BsdXNfbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIGFsbG9jYXRlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2FsbG9jYXRlZF93b3Jkc1wiXG5cbmxldCB6ZXJvID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoaW50X29mX3N0cmluZyBcIjBcIilcblxuKCogVGhlIGNvbXBpbGVyIHdvbid0IG9wdGltaXplIGludF9vZl9zdHJpbmcgYXdheSBzbyBpdCB3b24ndFxuICAgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGJlbG93LiAqKVxubGV0IHJlYyBrZWVwX2FsaXZlIG8gPSBpZiB6ZXJvIDw+IDAgdGhlbiBrZWVwX2FsaXZlIChTeXMub3BhcXVlX2lkZW50aXR5IG8pXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBsZXQgcHJlcGFyZV9oZWFwX3RvX2NvdW50X21pbm9yX2FsbG9jYXRpb24gKCkgPVxuICAgICgqIFdlIGNhbGwgW21pbm9yXSB0byBlbXB0eSB0aGUgbWlub3IgaGVhcCwgc28gdGhhdCBvdXIgYWxsb2NhdGlvbiBpcyB1bmxpa2VseSB0b1xuICAgICAgIHRyaWdnZXIgYSBtaW5vciBnYy4gKilcbiAgICBtaW5vciAoKTtcbiAgICAoKiBXZSBhbGxvY2F0ZSB0d28gd29yZHMgaW4gY2FzZSB0aGUgW0djLm1pbm9yXSBmaW5pc2hlcyBhIG1ham9yIGdjIGN5Y2xlLCBpbiB3aGljaFxuICAgICAgIGNhc2UgaXQgcmVxdWVzdHMgYSBtaW5vciBnYyB0byBvY2N1ciBhdCB0aGUgbmV4dCBtaW5vciBhbGxvY2F0aW9uLiAgV2UgZG9uJ3Qgd2FudFxuICAgICAgIHRoZSBzdWJzZXF1ZW50IG1pbm9yIGFsbG9jYXRpb24gdG8gdHJpZ2dlciBhIG1pbm9yIEdDLCBiZWNhdXNlIHRoZXJlIGlzIGEgYnVnXG4gICAgICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvNzc5OCkgaW4gdGhlIE9DYW1sIHJ1bnRpbWUgdGhhdCBkb3VibGVcbiAgICAgICBjb3VudHMgW0djLm1pbm9yX3dvcmRzXSBpbiB0aGF0IGNhc2UuICopXG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZWYgKFN5cy5vcGFxdWVfaWRlbnRpdHkgMSkpIDogaW50IHJlZilcbiAgOztcblxuICAoKiBXZSBkaXNhYmxlIGlubGluaW5nIGZvciB0aGlzIGZ1bmN0aW9uIHNvIHRoZSBHQyBzdGF0cyBhbmQgdGhlIGNhbGwgdG8gW2ZdIGFyZSBuZXZlclxuICAgICByZWFycmFuZ2VkLiAqKVxuICBsZXRbQGNvbGRdIG1lYXN1cmVfaW50ZXJuYWwgfm9uX3Jlc3VsdCBmID1cbiAgICBsZXQgbWlub3Jfd29yZHNfYmVmb3JlID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYmVmb3JlID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICAoKiBXZSB3cmFwIFtmICgpXSB3aXRoIFtTeXMub3BhcXVlX2lkZW50aXR5XSB0byBwcmV2ZW50IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiZWluZ1xuICAgICAgIG9wdGltaXplZCBhd2F5LiAqKVxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoZiAoKSkgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWZ0ZXIgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hZnRlciA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9IG1ham9yX3dvcmRzX2FmdGVyIC0gbWFqb3Jfd29yZHNfYmVmb3JlIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9IG1pbm9yX3dvcmRzX2FmdGVyIC0gbWlub3Jfd29yZHNfYmVmb3JlIGluXG4gICAgb25fcmVzdWx0IH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4XG4gIDs7XG5cbiAgbGV0IGlzX3plcm9fYWxsb2MgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgICAoKiBJbnN0ZWFkIG9mIHVzaW5nIFtBbGxvY2F0aW9uX3JlcG9ydC5tZWFzdXJlXSwgYW5kIG1hdGNoaW5nIG9uIHRoZSByZXN1bHQsIHdlIHVzZVxuICAgICAgIHRoaXMgY29uc3RydWN0aW9uLCBpbiBvcmRlciB0byBoYXZlIFtpc196ZXJvX2FsbG9jXSBub3QgYWxsb2NhdGUgaXRzZWxmLiBUaGlzXG4gICAgICAgZW5hYmxlcyBbaXNfemVyb19hbGxvY10gdG8gYmUgdXNlZCBpbiBhIG5lc3RlZCB3YXkuXG5cbiAgICAgICBUaGlzIGFsc28gbWVhbnMgd2UgY2Fubm90IGNhbGwgW3ByZXBhcmVfaGVhcF90b19jb3VudF9taW5vcl9hbGxvY2F0aW9uXS4gVGhpcyBpc1xuICAgICAgIG9rYXksIHNpbmNlIHdlIGRvIG5vdCBuZWVkIGEgcHJlY2lzZSBjb3VudCwgd2Ugb25seSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjb3VudCBpc1xuICAgICAgIHplcm8gb3Igbm90LiAqKVxuICAgIG1lYXN1cmVfaW50ZXJuYWxcbiAgICAgIGZcbiAgICAgIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgdmFsdWUgLT5cbiAgICAgICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHZhbHVlIDogYSk7XG4gICAgICAgIG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwICYmIG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX3JlcG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQ7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCB9XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1lYXN1cmVfYWxsb2NhdGlvbiBmID1cbiAgICBwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWxsb2NhdGlvbiAoKTtcbiAgICBtZWFzdXJlX2ludGVybmFsIGYgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4IC0+XG4gICAgICB4LCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX2xvZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNpemVfaW5fd29yZHMgOiBpbnRcbiAgICAgIDsgaXNfbWFqb3IgOiBib29sXG4gICAgICA7IGJhY2t0cmFjZSA6IHN0cmluZ1xuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDExLCAwKV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IGxvZyA6IEFsbG9jYXRpb25fbG9nLnQgbGlzdCByZWYgPSByZWYgW11cbiAgICBhbmQgbWFqb3JfYWxsb2NzID0gcmVmIDBcbiAgICBhbmQgbWlub3JfYWxsb2NzID0gcmVmIDAgaW5cbiAgICBsZXQgb25fYWxsb2MgfmlzX21ham9yIChpbmZvIDogQ2FtbC5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGluZm8uY2FsbHN0YWNrIGluXG4gICAgICAoKiBNYWtlIGJhY2t0cmFjZXMgZWFzaWVyIHRvIHJlYWQgYnkgZGVsZXRpbmcgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGZ1bmN0aW9uICopXG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YnN0cl9pbmRleCBiYWNrdHJhY2UgfnBhdHRlcm46XCJtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvblwiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhpcyBjYXNlIGlzIHBvc3NpYmxlOiB3ZSBtYXkgaGF2ZSBsb2dnZWQgYWxsb2NhdGlvbnMgaW4gYW5vdGhlciB0aHJlYWQgKilcbiAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICBTdHJpbmcuc3ViIH5wb3M6MCB+bGVuOnAgYmFja3RyYWNlXG4gICAgICAgICAgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgJ1xcbicgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCBpbmZvIDogQWxsb2NhdGlvbl9sb2cudCA9XG4gICAgICAgIHsgc2l6ZV9pbl93b3JkcyA9IGluZm8ubl9zYW1wbGVzOyBpc19tYWpvcjsgYmFja3RyYWNlIH1cbiAgICAgIGluXG4gICAgICBsb2cgOj0gaW5mbyA6OiAhbG9nO1xuICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHRyYWNrZXIgPVxuICAgICAgeyBDYW1sLkdjLk1lbXByb2YubnVsbF90cmFja2VyIHdpdGhcbiAgICAgICAgYWxsb2NfbWlub3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6ZmFsc2VcbiAgICAgIDsgYWxsb2NfbWFqb3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6dHJ1ZVxuICAgICAgfVxuICAgIGluXG4gICAgQ2FtbC5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIENhbWwuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICB4XG4gICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIENhbWwuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoIHJlc3VsdFxuICAgICwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlXG4gICAgICAgIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQ6IW1ham9yX2FsbG9jc1xuICAgICAgICB+bWlub3Jfd29yZHNfYWxsb2NhdGVkOiFtaW5vcl9hbGxvY3NcbiAgICAsIExpc3QucmV2ICFsb2cgKVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCB4LCByZXBvcnQgPSBtZWFzdXJlX2FsbG9jYXRpb24gZiBpblxuICAgIHgsIHJlcG9ydCwgW11cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBhZGRfZmluYWxpemVyIHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplciBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICAoKiBbYWRkX2ZpbmFsaXplcl9leG5dIGlzIHRoZSBzYW1lIGFzIFthZGRfZmluYWxpemVyXS4gIEhvd2V2ZXIsIHRoZWlyIHR5cGVzIGluXG4gICAgIGNvcmVfZ2MubWxpIGFyZSBkaWZmZXJlbnQsIGFuZCB0aGUgdHlwZSBvZiBbYWRkX2ZpbmFsaXplcl0gZ3VhcmFudGVlcyB0aGF0IGl0IGFsd2F5c1xuICAgICByZWNlaXZlcyBhIGhlYXAgYmxvY2ssIHdoaWNoIGVuc3VyZXMgdGhhdCBpdCB3aWxsIG5vdCByYWlzZSwgd2hpbGVcbiAgICAgW2FkZF9maW5hbGl6ZXJfZXhuXSBhY2NlcHRzIGFueSB0eXBlLCBhbmQgc28gbWF5IHJhaXNlLiAqKVxuICBsZXQgYWRkX2ZpbmFsaXplcl9leG4geCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXJfbGFzdCBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgZmluYWxpemVfcmVsZWFzZSA9IENhbWwuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUxLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQyID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMi5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUyLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlF1ZXVlXG5cbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSBhID1cbiAgICAgICAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgKCogV2UgZW5xdWV1ZSBldmVyeXRoaW5nIHR3aWNlLCBhbmQgZGVxdWV1ZSBpdCBvbmNlIHRvIGVuc3VyZTpcbiAgICAgICAgICAgLSB0aGF0IHRoZSBxdWV1ZSBoYXMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgYXJyYXkuXG4gICAgICAgICAgIC0gdGhhdCBpdCBoYXMsIGluIG1vc3QgY2FzZXMsIGFuIGludGVyZXN0aW5nIGludGVybmFsIHN0cnVjdHVyZSopXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV9leG4gciA6IGJvb2wpO1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICByXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBTZXJpYWxpemF0aW9uX3YxID0gc3RydWN0XG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjRjODQyNTQtNDk5Mi0xMWU2LTliYTctNzM0ZTE1NDAyN2JkXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlF1ZXVlXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9IGluaXQgbGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKVxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcblxubW9kdWxlIE1ha2Vfc3RhYmxlID0gTWFrZV9zdGFibGVcbmluY2x1ZGUgU3RhYmxlX2ludGVybmFsXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZS5TdGFibGVcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmcuU3RhYmxlXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZy5TdGFibGVcbm1vZHVsZSBCb29sID0gQm9vbC5TdGFibGVcbm1vZHVsZSBCeXRlX3VuaXRzID0gQnl0ZV91bml0cy5TdGFibGVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzLlN0YWJsZVxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlLlN0YWJsZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWsuU3RhYmxlXG5tb2R1bGUgTWQ1ID0gTWQ1LlN0YWJsZVxubW9kdWxlIEVpdGhlciA9IEVpdGhlci5TdGFibGVcbm1vZHVsZSBFcnJvciA9IEVycm9yLlN0YWJsZVxubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZS5TdGFibGVcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lLlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdC5TdGFibGVcbm1vZHVsZSBVbml0ID0gVW5pdC5TdGFibGVcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ29yZV91bml4LlN0YWJsZV1cIl1cbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5cbmluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgSW1wb3J0Lk5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBJbnQgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxubGV0IG9mX2NhbWxfaW50IHQgPSB0XG5sZXQgdG9fY2FtbF9pbnQgdCA9IHRcblxudHlwZSBzeXNfYmVoYXZpb3IgPVxuICBbIGBDb250aW51ZSAoKiogQ29udGludWUgdGhlIHByb2Nlc3MgaWYgaXQgaXMgY3VycmVudGx5IHN0b3BwZWQgKilcbiAgfCBgRHVtcF9jb3JlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgYW5kIGR1bXAgY29yZSAqKVxuICB8IGBJZ25vcmUgKCoqIElnbm9yZSB0aGUgc2lnbmFsICopXG4gIHwgYFN0b3AgKCoqIFN0b3AgdGhlIHByb2Nlc3MgKilcbiAgfCBgVGVybWluYXRlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKilcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGVxdWFsICh0IDogdCkgdCcgPSB0ID0gdCdcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogUGxlYXNlIGtlZXAgaW4gc3luYyB3aXRoIHRoZSBsaXN0IGZvciB0b19zdHJpbmcvc3lzX2JlaGF2aW9yICopXG4gIG9wZW4gQ2FtbC5TeXNcblxuICBsZXQgYWJydCA9IHNpZ2FicnRcbiAgbGV0IGFscm0gPSBzaWdhbHJtXG4gIGxldCBidXMgPSBzaWdidXNcbiAgbGV0IGNobGQgPSBzaWdjaGxkXG4gIGxldCBjb250ID0gc2lnY29udFxuICBsZXQgZnBlID0gc2lnZnBlXG4gIGxldCBodXAgPSBzaWdodXBcbiAgbGV0IGlsbCA9IHNpZ2lsbFxuICBsZXQgaW50ID0gc2lnaW50XG4gIGxldCBraWxsID0gc2lna2lsbFxuICBsZXQgcGlwZSA9IHNpZ3BpcGVcbiAgbGV0IHBvbGwgPSBzaWdwb2xsXG4gIGxldCBwcm9mID0gc2lncHJvZlxuICBsZXQgcXVpdCA9IHNpZ3F1aXRcbiAgbGV0IHNlZ3YgPSBzaWdzZWd2XG4gIGxldCBzdG9wID0gc2lnc3RvcFxuICBsZXQgc3lzID0gc2lnc3lzXG4gIGxldCB0ZXJtID0gc2lndGVybVxuICBsZXQgdHJhcCA9IHNpZ3RyYXBcbiAgbGV0IHRzdHAgPSBzaWd0c3RwXG4gIGxldCB0dGluID0gc2lndHRpblxuICBsZXQgdHRvdSA9IHNpZ3R0b3VcbiAgbGV0IHVyZyA9IHNpZ3VyZ1xuICBsZXQgdXNyMSA9IHNpZ3VzcjFcbiAgbGV0IHVzcjIgPSBzaWd1c3IyXG4gIGxldCB2dGFscm0gPSBzaWd2dGFscm1cbiAgbGV0IHhjcHUgPSBzaWd4Y3B1XG4gIGxldCB4ZnN6ID0gc2lneGZzelxuICBsZXQgemVybyA9IDBcbmVuZFxuXG5leGNlcHRpb24gSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvciA9XG4gIGxldCBrbm93biA9XG4gICAgW1xuICAgICAgXCJzaWdhYnJ0XCIsIGFicnQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnYWxybVwiLCBhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2J1c1wiLCBidXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnY2hsZFwiLCBjaGxkLCBgSWdub3JlLCAxXG4gICAgOyBcInNpZ2NvbnRcIiwgY29udCwgYENvbnRpbnVlLCAxXG4gICAgOyBcInNpZ2ZwZVwiLCBmcGUsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaHVwXCIsIGh1cCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdpbGxcIiwgaWxsLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2ludFwiLCBpbnQsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lna2lsbFwiLCBraWxsLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BpcGVcIiwgcGlwZSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwb2xsXCIsIHBvbGwsIGBUZXJtaW5hdGUsIDJcbiAgICA7IFwic2lncHJvZlwiLCBwcm9mLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3F1aXRcIiwgcXVpdCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzZWd2XCIsIHNlZ3YsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc3RvcFwiLCBzdG9wLCBgU3RvcCwgMVxuICAgIDsgXCJzaWdzeXNcIiwgc3lzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3Rlcm1cIiwgdGVybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd0cmFwXCIsIHRyYXAsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndHN0cFwiLCB0c3RwLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dGluXCIsIHR0aW4sIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0b3VcIiwgdHRvdSwgYFN0b3AsIDFcbiAgICA7IFwic2lndXJnXCIsIHVyZywgYElnbm9yZSwgMlxuICAgIDsgXCJzaWd1c3IxXCIsIHVzcjEsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndXNyMlwiLCB1c3IyLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3Z0YWxybVwiLCB2dGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lneGNwdVwiLCB4Y3B1LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3hmc3pcIiwgeGZzeiwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd6ZXJvXCIsIHplcm8sIGBJZ25vcmUsIDFcbiAgICBdXG4gIGluXG4gIGxldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IHRfYnlfbmFtZSA9IFN0cmluZy5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgYmVoYXZpb3JfYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBMaXN0Lml0ZXIga25vd24gfmY6KGZ1biAobmFtZSwgdCwgYmVoYXZpb3IsIHN0YWJsZV92ZXJzaW9uKSAtPlxuICAgIEhhc2h0Ymwuc2V0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB+a2V5OnQgfmRhdGE6KG5hbWUsIHN0YWJsZV92ZXJzaW9uKTtcbiAgICBIYXNodGJsLnNldCB0X2J5X25hbWUgfmtleTpuYW1lIH5kYXRhOnQ7XG4gICAgSGFzaHRibC5zZXQgYmVoYXZpb3JfYnlfdCB+a2V5OnQgfmRhdGE6YmVoYXZpb3IpO1xuICAoKiBGb3IgdW5rbm93biBzaWduYWwgbnVtYmVycywgW3RvX3N0cmluZ10gcmV0dXJucyBhIG1lYW5pbmdmdWxcbiAgICAgc3RyaW5nLCB3aGlsZSBbZGVmYXVsdF9zeXNfYmVoYXZpb3JdIGhhcyB0byByYWlzZSBhbiBleGNlcHRpb25cbiAgICAgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHJpZ2h0IGFuc3dlciBpcy4gKilcbiAgbGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjpyZXF1ZXN0ZWRfdmVyc2lvbiA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB0IHdpdGhcbiAgICB8IFNvbWUgKHN0cmluZywgbmVlZGVkX3ZlcnNpb24pIHdoZW4gcmVxdWVzdGVkX3ZlcnNpb24gPj0gbmVlZGVkX3ZlcnNpb24gLT4gc3RyaW5nXG4gICAgfCBfIC0+IFwiPHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0IF4gXCI+XCJcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgcyA9IFN0cmluZy5sb3dlcmNhc2UgKFN0cmluZy5zdHJpcCBzKSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0X2J5X25hbWUgcyB3aXRoXG4gICAgfCBTb21lIHNuIC0+IHNuXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIjx1bmtub3duIHNpZ25hbCBcIlxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuc2xpY2UgcyAxNiB+LTEpIHdpdGhcbiAgICAgICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcykpXG4gICAgICBlbHNlIHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcylcbiAgaW5cbiAgbGV0IGRlZmF1bHRfc3lzX2JlaGF2aW9yIHQgPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBiZWhhdmlvcl9ieV90IHQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEludmFsaWRfYXJndW1lbnRcbiAgICAgICAgICAgKFwiU2lnbmFsLmRlZmF1bHRfc3lzX2JlaGF2aW9yOiB1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCkpXG4gICAgfCBTb21lIGJlaGF2aW9yIC0+IGJlaGF2aW9yXG4gIGluXG4gIHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3Jcbjs7XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZF9hdG9tIG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uID0gU2V4cC5BdG9tICh0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24pXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHMgfnZlcnNpb246MlxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjFcblxubGV0IHRfb2Zfc2V4cCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgfCBfIC0+IHJhaXNlIChFeHBlY3RlZF9hdG9tIHMpXG47O1xuXG50eXBlIHBpZF9zcGVjID0gWyBgVXNlX1NpZ25hbF91bml4IF1cbnR5cGUgc2lncHJvY21hc2tfY29tbWFuZCA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG5cbmxldCBjYW5fc2VuZF90byA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBvZl9zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9leG4gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9pID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNleHBfb2ZfcGlkX3NwZWMgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncGVuZGluZyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwcm9jbWFzayA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdzdXNwZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHRvX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgdHlwZSBiZWhhdmlvciA9XG4gICAgWyBgRGVmYXVsdFxuICAgIHwgYElnbm9yZVxuICAgIHwgYEhhbmRsZSBvZiB0IC0+IHVuaXRcbiAgICBdXG5cbiAgbW9kdWxlIEJlaGF2aW9yID0gc3RydWN0XG4gICAgbGV0IG9mX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBDYW1sLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IENhbWwuU3lzLlNpZ25hbF9kZWZhdWx0XG4gICAgICB8IGBJZ25vcmUgLT4gU2lnbmFsX2lnbm9yZVxuICAgICAgfCBgSGFuZGxlIGYgLT4gU2lnbmFsX2hhbmRsZSAoZnVuIHQgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpZ25hbCB0IGJlaGF2aW9yID0gQmVoYXZpb3Iub2ZfY2FtbCAoQ2FtbC5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICBsZXQgc2V0IHQgYmVoYXZpb3IgPSBpZ25vcmUgKHNpZ25hbCB0IGJlaGF2aW9yIDogYmVoYXZpb3IpXG4gIGxldCBoYW5kbGUgdCBmID0gc2V0IHQgKGBIYW5kbGUgZilcbmVuZFxuXG5vcGVuIEV4cGVydFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgdCA9IHNldCB0IGBEZWZhdWx0XG5sZXQgaWdub3JlIHQgPSBzZXQgdCBgSWdub3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBCYXNlLlNpZ25fb3JfbmFuXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbl9vcl9uYW4udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgICAgfCBOYW5cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnbl9vcl9uYW5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbl9vcl9uYW4pIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMucHJpbnRfYmFja3RyYWNlXG5sZXQgZ2V0X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZVxubGV0IHJlY29yZF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25fYXJyYXlcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkxhenl9W0Jhc2UuTGF6eV19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgQmFzZS5MYXp5LnRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0ICgqKiBAaW5saW5lICopXG5cbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgY29tcGFyZSA9XG4gIFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG5cbmxldCBjb21wYXJlIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPj0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgZXF1YWwgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtaW4gXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtYXggXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAoJ2EsICdiKSBmbiA9ICdhIC0+ICdiXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJ2YWwgb2YgJ2FcbiAgICB8IEV4cHQgb2YgZXhuXG5cbiAgbGV0IHJldHVybiA9IGZ1bmN0aW9uXG4gICAgfCBSdmFsIHYgLT4gdlxuICAgIHwgRXhwdCBlIC0+IHJhaXNlIGVcbiAgOztcblxuICBsZXQgY2FwdHVyZSBmIHggPVxuICAgIHRyeSBSdmFsIChmIHgpIHdpdGhcbiAgICB8IENhbWwuU3lzLkJyZWFrIGFzIGUgLT4gcmFpc2UgZVxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KVxubGV0IGl0ZXJpJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIGkgKCkgdiAtPiBmIGkgdilcbmxldCBpdGVyJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIF8gKCkgdiAtPiBmIHYpXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZCcgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBmb2xkaScgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBpdGVyaScgdCBgZnJvbnRfdG9fYmFjayB+ZlxuXG5sZXQgaXRlcmlfaW50ZXJuYWwgdCB+ZiA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiAoXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCB+cmVhbF9pIH5zdG9wX3BvcyA9XG4gICAgICBpZiByZWFsX2kgPCBzdG9wX3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGYgdC5hcnIgcmVhbF9pO1xuICAgICAgICBsb29wIH5yZWFsX2k6KHJlYWxfaSArIDEpIH5zdG9wX3BvcylcbiAgICBpblxuICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgIHRoZW4gbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aDtcbiAgICAgIGxvb3AgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID0gaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZilcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBDYW1sLlN5cy5vc190eXBlIHdpdGhcbiAgfCBcIlVuaXhcIiAtPiB1bml4X3F1b3RlXG4gIHwgXyAtPiBGaWxlbmFtZS5xdW90ZVxuOztcblxubGV0IGNvbmNhdF9xdW90ZWQgc3BsaXRfY29tbWFuZCA9XG4gIExpc3QubWFwIH5mOnF1b3RlIHNwbGl0X2NvbW1hbmQgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG47O1xuXG5sZXQgY19pbnRfc2l6ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBjYXRjaF9icmVhayA9IGBVc2VfU3lzX3VuaXhcbmxldCBjaGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmRfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRpb25fbW9kZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0cyA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0c19leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZm9sZF9kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgZ2V0Y3dkID0gYFVzZV9TeXNfdW5peFxubGV0IGhvbWVfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnlfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGUgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgbHNfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IG92ZXJyaWRlX2FyZ3YgPSBgVXNlX1N5c191bml4XG5sZXQgcmVhZGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW1vdmUgPSBgVXNlX1N5c191bml4XG5sZXQgcmVuYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnYgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudl9leG4gPSBgVXNlX1N5c191bml4XG5cbmV4Y2VwdGlvbiBCcmVhayA9IENhbWwuU3lzLkJyZWFrXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB1bml4X3F1b3RlID0gdW5peF9xdW90ZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCaWdzdHJpbmcuY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2M6Tm9uZVxuICAgIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJpZ3N0cmluZy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RhYmxlX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICAgICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5kZXggOiBpbnRcbiAgICAgICAgOyBtaW5faW5kZXggOiBpbnRcbiAgICAgICAgOyBtYXhfaW5kZXggOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgU29tZSAoY3JlYXRlIGluZGV4IH5taW4gfm1heCwgaW5kZXggKyAxKSlcbiAgICB8PiBTZXF1ZW5jZS50b19saXN0XG4gIDs7XG5cbiAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gIGxldCBtYXhfaW5kZXggdCA9IHQubWF4X2luZGV4XG4gIGxldCBtaW5faW5kZXggdCA9IHQubWluX2luZGV4XG5cbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgZW5kKVxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5cbm1vZHVsZSBDYW1sID0gc3RydWN0XG4gIGluY2x1ZGUgQ2FtbFxuXG4gICgqIFdoZW4gd2UgcmVtb3ZlZCBbQ29yZS5DYW1sXSdzIGV4dGVuc2lvbnMgb2YgW0NvcmUuQ2FtbF0sIHdlIGFkZGVkXG4gICAgIHRoZSBkZWNsYXJhdGlvbnMgYmVsb3cgdG8gZm9yY2UgY29kZSB0byBzd2l0Y2ggdG8gdGhlIG5ldyBuYW1lcywgYW5kIGF2b2lkXG4gICAgIHNpbGVudGx5IGluY29ycmVjdGx5IHVzaW5nIHNvbWV0aGluZyBlbHNlIGluIHNjb3BlLiAqKVxuICBtb2R1bGUgQ29uZGl0aW9uID0gc3RydWN0IGVuZFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLkNvbmRpdGlvbl1cIl1cblxuICBtb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG4gIG1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuICBtb2R1bGUgVW5peCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdW5peF1cIl1cbiAgbW9kdWxlIFVuaXhMYWJlbHMgPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtVbml4TGFiZWxzXVwiXVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbW1hbmQgPSBDb21tYW5kXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBDb250YWluZXJfaW50ZiA9IENvbnRhaW5lcl9pbnRmXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxubW9kdWxlIENvcmVfa2VybmVsX3N0YWJsZSA9IFN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfc3RhYmxlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuXG5tb2R1bGUgQ29yZV9zdGFibGUgPSBTdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWtcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgRGVxdWUgPSBEZXF1ZVxubW9kdWxlIERlcml2aW5nX2hhc2ggPSBEZXJpdmluZ19oYXNoXG5tb2R1bGUgRGlnZXN0ID0gTWQ1IFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNy0wNV0gVXNlIE1kNSBpbnN0ZWFkLlwiXVxubW9kdWxlIERvdWJseV9saW5rZWQgPSBEb3VibHlfbGlua2VkXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uID0gRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gUG9seSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTFdIHVzZSBbUG9seV0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGV4YyA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFF1aWNrY2hlY2sgPSBRdWlja2NoZWNrXG5tb2R1bGUgUXVpY2tjaGVja19pbnRmID0gUXVpY2tjaGVja19pbnRmXG5tb2R1bGUgUXVpY2tjaGVja2FibGUgPSBRdWlja2NoZWNrYWJsZVxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgUm9idXN0bHlfY29tcGFyYWJsZSA9IFJvYnVzdGx5X2NvbXBhcmFibGVcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V0X2ludGYgPSBTZXRfaW50ZlxubW9kdWxlIFNldF9vbmNlID0gU2V0X29uY2Vcbm1vZHVsZSBTZXhwX21heWJlID0gU2V4cC5TZXhwX21heWJlXG5cbm1vZHVsZSBTZXhwID0gU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25hbCA9IFNpZ25hbFxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3BsaXR0YWJsZV9yYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbVxubW9kdWxlIFN0YWJsZV9jb21wYXJhYmxlID0gU3RhYmxlX2NvbXBhcmFibGVcbm1vZHVsZSBTdGFibGVfdW5pdF90ZXN0ID0gU3RhYmxlX3VuaXRfdGVzdFxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZFxubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3Vic3RyaW5nID0gU3Vic3RyaW5nXG5tb2R1bGUgU3Vic3RyaW5nX2ludGYgPSBTdWJzdHJpbmdfaW50ZlxubW9kdWxlIFN5cyA9IENvcmVfc3lzXG5cbm1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbQ29yZV90aHJlYWRdIG9yIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbnR5cGUgJ2EgX21heWJlX2JvdW5kID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPSBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgVWlfZWZmZWN0X2ludGZcblxudHlwZSAnYSB0ID0gLi5cbnR5cGUgJ2EgdCArPSBJZ25vcmUgOiB1bml0IHQgfCBNYW55IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5cbigqIFdlIHVzZSB0aGlzIHRhYmxlIGZvciBkaXNwYXRjaGluZyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBpbiBhbiBlZmZpY2llbnQgd2F5LiAgKilcbnR5cGUgaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRkZW5cblxubGV0IGhhbmRsZXJzIDogKGhpZGRlbiAtPiB1bml0KSBIYXNodGJsLk0oSW50KS50ID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpIH5zaXplOjhcblxubW9kdWxlIERlZmluZSAoSGFuZGxlciA6IEhhbmRsZXIpIDpcbiAgUyB3aXRoIHR5cGUgYWN0aW9uIDo9IEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiBIYW5kbGVyLkFjdGlvbi50IC0+IHVuaXQgdFxuXG4gIGxldCBrZXkgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlO1xuICAgICAgICBjYWxsYmFjayAoKVxuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubW9kdWxlIERlZmluZTEgKEhhbmRsZXIgOiBIYW5kbGVyMSkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgYWN0aW9uIDo9ICdhIEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiAnYSBIYW5kbGVyLkFjdGlvbi50IC0+ICdhIHRcblxuICBsZXQga2V5ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KVxuXG5sZXQgaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNiKSkgPVxuICBIYXNodGJsLmZpbmRfZXhuIGhhbmRsZXJzIChnZXRfa2V5IHQpIChUICh0LCBjYikpXG47O1xuXG5tb2R1bGUgUHJpbnRfcyA9IERlZmluZSAoc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IFNleHBcblxuICAgIGxldCBoYW5kbGUgcyA9IHByaW50X3Mgc1xuICBlbmQpXG5cbmxldCBwcmludF9zID0gUHJpbnRfcy5pbmplY3RcblxuKCogRWZmZWN0ZnVsIHRoaW5ncyAqKVxudHlwZSAnYSB0ICs9XG4gIHwgUmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB8IExhenkgOiAnYSB0IExhenkudCAtPiAnYSB0XG4gIHwgQmluZCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYiB0XG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTWFwIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiXG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTmV2ZXIgOiAnYiB0XG4gIHwgRnVuIDogKGNhbGxiYWNrOignYSAtPiB1bml0KSAtPiB1bml0KSAtPiAnYSB0XG5cbmxldCByZXR1cm4gYSA9IFJldHVybiBhXG5sZXQgYmluZCAodHlwZSBhKSAodCA6IGEgdCkgfmYgPSBCaW5kIHsgdDsgZiB9XG5sZXQgbWFwICh0eXBlIGEgYikgKHQgOiBhIHQpIH5mIDogYiB0ID0gTWFwIHsgdDsgZiB9XG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IG9mX2Z1biB+ZiA9IEZ1biBmXG5sZXQgbGF6eV8gYSA9IExhenkgYVxuXG5pbmNsdWRlIENvcmUuTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgcmVjIGV2YWwgOiB0eXBlIGEuIGEgdCAtPiBjYWxsYmFjazooYSAtPiB1bml0KSAtPiB1bml0ID1cbiAgZnVuIHQgfmNhbGxiYWNrIC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZ1biBmIC0+IGYgfmNhbGxiYWNrXG4gIHwgSWdub3JlIC0+IGNhbGxiYWNrICgpXG4gIHwgUmV0dXJuIGEgLT4gY2FsbGJhY2sgYVxuICB8IExhenkgKGxhenkgdCkgLT4gZXZhbCB0IH5jYWxsYmFja1xuICB8IE1hbnkgbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihldmFsIH5jYWxsYmFjazppZ25vcmUpO1xuICAgIGNhbGxiYWNrICgpXG4gIHwgQmluZCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBldmFsIChmIGEpIH5jYWxsYmFjaylcbiAgfCBNYXAgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gY2FsbGJhY2sgKGYgYSkpXG4gIHwgTmV2ZXIgLT4gKClcbiAgfCB0IC0+IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYWxsYmFjaykpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGUgPSBldmFsIH5jYWxsYmFjazppZ25vcmVcblxuICB0eXBlIGhpZGUgPSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGVcblxuICBsZXQgaGFuZGxlcnMgPSBoYW5kbGVyc1xuICBsZXQgb2ZfZnVuID0gb2ZfZnVuXG5lbmRcblxubW9kdWxlIEFkdmFuY2VkID0gc3RydWN0XG4gIG1vZHVsZSBTeW5jX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IpIC0+ICdyIHRcbiAgICBlbmRcblxuICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gb25fcmVzcG9uc2UgKGYgYSlcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bmNfZnVuID0gRGVmaW5lMSAoU3luY19mdW5fYXJnKVxuXG4gIGxldCBvZl9zeW5jX2Z1biBmIGEgPSBTeW5jX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIENhbGxiYWNrID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID1cbiAgICAgICAgeyByZXF1ZXN0IDogJ2FcbiAgICAgICAgOyBvbl9yZXNwb25zZSA6ICdiIC0+IHVuaXQgdFxuICAgICAgICB9XG5cbiAgICAgIGxldCBtYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZSA9IHsgcmVxdWVzdDsgb25fcmVzcG9uc2UgfVxuICAgICAgbGV0IHJlcXVlc3QgeyByZXF1ZXN0OyBfIH0gPSByZXF1ZXN0XG4gICAgICBsZXQgcmVzcG9uZF90byB7IG9uX3Jlc3BvbnNlOyBfIH0gcmVzcG9uc2UgPSBvbl9yZXNwb25zZSByZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbGV0IG1ha2UgOiByZXF1ZXN0OidhIC0+IGV2YWx1YXRvcjooKCdhLCAnYikgQ2FsbGJhY2sudCAtPiB1bml0IHQpIC0+ICdiIHQgPVxuICAgICAgZnVuIH5yZXF1ZXN0IH5ldmFsdWF0b3IgLT5cbiAgICAgIEV4cGVydC5vZl9mdW4gfmY6KGZ1biB+Y2FsbGJhY2sgLT5cbiAgICAgICAgbGV0IGNhbGxiYWNrID1cbiAgICAgICAgICBDYWxsYmFjay5tYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZTooZnVuIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICBjYWxsYmFjayByZXNwb25zZTtcbiAgICAgICAgICAgIElnbm9yZSlcbiAgICAgICAgaW5cbiAgICAgICAgRXhwZXJ0LmhhbmRsZSAoZXZhbHVhdG9yIGNhbGxiYWNrKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3ZhciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgICAgIHwgRW1wdHkgb2YgeyBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBCYWcudCB9XG4gICAgICAgIHwgRnVsbCBvZiAnYVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBzdGF0ZSByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiAoRW1wdHkgeyBoYW5kbGVycyA9IEJhZy5jcmVhdGUgKCkgfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPiBpZ25vcmUgKEJhZy5hZGQgaGFuZGxlcnMgaGFuZGxlciA6IF8gQmFnLkVsdC50KVxuICAgICAgICB8IEZ1bGwgeCAtPiBoYW5kbGVyIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBmaWxsX2lmX2VtcHR5IHQgeCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBGdWxsIF8gLT4gKClcbiAgICAgICAgfCBFbXB0eSB7IGhhbmRsZXJzIH0gLT5cbiAgICAgICAgICBCYWcuaXRlciBoYW5kbGVycyB+ZjooZnVuIGhhbmRsZXIgLT4gaGFuZGxlciB4KTtcbiAgICAgICAgICB0IDo9IEZ1bGwgeFxuICAgICAgOztcblxuICAgICAgbGV0IHBlZWsgdCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSBfIC0+IE5vbmVcbiAgICAgICAgfCBGdWxsIHggLT4gU29tZSB4XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuX2FyZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IgU3Zhci50KSAtPiAnciB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBTdmFyLnVwb24gKGYgYSkgb25fcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1biA9IERlZmluZTEgKFN2YXJfZnVuX2FyZylcblxuICAgIGxldCBvZl9zdmFyX2Z1biBmIGEgPSBTdmFyX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gICAgbW9kdWxlIFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxLCAncikgcnBjID1cbiAgICAgICAgeyBxdWVyeSA6ICdxXG4gICAgICAgIDsgcmVzcG9uc2UgOiAnciBTdmFyLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncSwgJ3IpIHQgPSAoJ3EsICdyKSBycGMgQmFnLnRcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IEJhZy5jcmVhdGUgKClcblxuICAgICAgbGV0IGFkZF9xdWVyeSB0IHF1ZXJ5ID1cbiAgICAgICAgbGV0IHJlc3BvbnNlID0gU3Zhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgaWdub3JlIChCYWcuYWRkIHQgeyBxdWVyeTsgcmVzcG9uc2UgfSA6IF8gQmFnLkVsdC50KTtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIEJhZy50b19saXN0IHQgfD4gTGlzdC5tYXAgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSA9IF8gfSAtPiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgJ3IgbWF5YmVfcmVzcG9uZCA9XG4gICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0XG4gICAgICAgIHwgUmVzcG9uZCBvZiAnclxuXG4gICAgICBsZXQgbWF5YmVfcmVzcG9uZCB0IH5mID1cbiAgICAgICAgQmFnLmZpbHRlcl9pbnBsYWNlIHQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IElkZW50XG4gICAgfCBGdW5jdGlvblxuICAgIHwgQXRrZXl3b3JkXG4gICAgfCBIYXNoXG4gICAgfCBTdHJpbmdcbiAgICB8IFVyaVxuICAgIHwgRGVsaW1cbiAgICB8IE51bWJlclxuICAgIHwgUGVyY2VudGFnZVxuICAgIHwgRGltZW5zaW9uXG4gICAgfCBXaGl0ZV9zcGFjZVxuICAgIHwgQ29sb25cbiAgICB8IFNlbWlfY29sb25cbiAgICB8IENvbW1hXG4gICAgfCBMYnJhY2tldFxuICAgIHwgUmJyYWNrZXRcbiAgICB8IExwYXJlblxuICAgIHwgUnBhcmVuXG4gICAgfCBMY3VybHlcbiAgICB8IFJjdXJseVxuICAgIHwgQ29tbWVudFxuICAgIHwgRW9mXG4gICAgfCBFcnJvclxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7ICgqIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyAoKiBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGN1cnJlbnQgOiBUb2tlbi50XG4gIH1cblxudHlwZSBtYXJrID0gTWFyayBvZiBpbnQgW0BAdW5ib3hlZF1cblxubGV0IG1hcmsgdCA9IE1hcmsgdC5sZW5cbmxldCBzb3VyY2UgdCA9IHQuc1xubGV0IG5leHRfcG9zIHQgPSB0Lm9mZiArIHQubGVuXG5sZXQgaXNfbmV4dF9lb2YgdCA9IG5leHRfcG9zIHQgPj0gU3RyaW5nLmxlbmd0aCB0LnNcbmxldCBuZXh0X2NoYXIgdCA9IHQucy5bbmV4dF9wb3MgdF1cbmxldCByZXNldCB0IChNYXJrIHYpID0gdC5sZW4gPC0gdlxubGV0IGNvbnN1bWVfMSB0ID0gdC5sZW4gPC0gdC5sZW4gKyAxXG5sZXQgY29uc3VtZV9uIHQgbiA9IHQubGVuIDwtIHQubGVuICsgblxuXG5sZXQgb25lX2NoYXJfdG9rZW4gdCB0b2sgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGNvbnN1bWVfMSB0O1xuICB0LmN1cnJlbnQgPC0gdG9rXG47O1xuXG5leGNlcHRpb24gRXJyb3JfaGFwcGVuZWRcblxubGV0IGVycm9yIHQgPVxuICB0LmN1cnJlbnQgPC0gRXJyb3I7XG4gIHJhaXNlIEVycm9yX2hhcHBlbmVkXG47O1xuXG5sZXQgYWNjZXB0IHQgZiA9XG4gIGlmIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdClcbiAgdGhlbiAoXG4gICAgY29uc3VtZV8xIHQ7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGFjY2VwdF9jaGFyIHQgY2ggPSBhY2NlcHQgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IGFjY2VwdF9zdHJpbmcgdCBzdHIgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA9IDBcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBwb3MgPSBuZXh0X3BvcyB0IGluXG4gICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGlmIHBvcyArIHN0cl9sZW4gPiBTdHJpbmcubGVuZ3RoIHQuc1xuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgdC5zIH5wb3MgfnN1YnN0cmluZzpzdHJcbiAgICB0aGVuIChcbiAgICAgIGNvbnN1bWVfbiB0IHN0cl9sZW47XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpXG47O1xuXG5sZXQgZXhwZWN0IHQgZiA9IGlmIGFjY2VwdCB0IGYgdGhlbiAoKSBlbHNlIGVycm9yIHRcbmxldCBleHBlY3RfY2hhciB0IGNoID0gZXhwZWN0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBtYW55IHQgZiA9XG4gIHdoaWxlIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdCkgZG9cbiAgICBjb25zdW1lXzEgdFxuICBkb25lXG47O1xuXG5sZXQgbWFueTEgdCBmID1cbiAgZXhwZWN0IHQgZjtcbiAgbWFueSB0IGZcbjs7XG5cbmxldCBwbHVzX29yX21pbnVzID0gZnVuY3Rpb25cbiAgfCAnLScgfCAnKycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubXN0YXJ0ID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaWRlbnQgdCA9XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gIHRoZW5cbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICAgIHRoZW4gbWFueSB0IG5tY2hhclxuICAgIGVsc2UgKFxuICAgICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICAgIG1hbnkgdCBubWNoYXIpXG4gIGVsc2UgKFxuICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgbWFueSB0IG5tY2hhcilcbjs7XG5cbmxldCBpZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgaWRlbnQgdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnKCcgdGhlbiB0LmN1cnJlbnQgPC0gRnVuY3Rpb24gZWxzZSB0LmN1cnJlbnQgPC0gSWRlbnRcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFx0JyB8ICdcXHInIHwgJ1xcbicgfCAnXFx4MGMnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZycgdCB+cXVvdGUgPVxuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSBxdW90ZSk7XG4gIGNvbnN1bWVfMSB0O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHgwYycgfCAnXFxcXCcgLT4gZmFsc2VcbiAgICAgIHwgYyB3aGVuIENoYXIuZXF1YWwgYyBxdW90ZSAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpO1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJ1xcXFwnXG4gICAgdGhlblxuICAgICAgaWYgYWNjZXB0X2NoYXIgdCBxdW90ZVxuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgICAgICB8ICdcXG4nIHwgJ1xceDBjJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnXFxuJyA6IGJvb2wpO1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCBfYyAtPlxuICAgICAgICAgICgqIEhhbmRsZSB0aGUgXCJlc2NhcGVcIiBydWxlOlxuICAgICAgICAgICAgIHt2XG4gICAgICAgICAgICAgICAgdW5pY29kZTogXFxcXFswLTlhLWZdezEsNn0oXFxyXFxufFsgXFxuXFxyXFx0XFxmXSk/XG4gICAgICAgICAgICAgICAgZXNjYXBlIDoge3VuaWNvZGV9fFxcXFxbXlxcblxcclxcZjAtOWEtZl1cbiAgICAgICAgICAgICAgdn1cbiAgICAgICAgICAqKVxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCk7XG4gIGV4cGVjdF9jaGFyIHQgcXVvdGVcbjs7XG5cbmxldCBzdGFydF9udW0gdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnLicgOiBib29sKTtcbiAgICBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgc3RhcnRfaWRlbnQgfnByZWZpeCB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgYWNjZXB0X3N0cmluZyB0IHByZWZpeFxuICAgICYmXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLScgdGhlbiBhY2NlcHRfY2hhciB0ICctJyB8fCBhY2NlcHQgdCBubXN0YXJ0IGVsc2UgYWNjZXB0IHQgbm1zdGFydFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGUgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlO1xuICB0LmN1cnJlbnQgPC0gU3RyaW5nXG47O1xuXG5sZXQgZXhwb25lbnRpYWxfcGFydCB0ID1cbiAgbGV0IG1hcmsgPSBtYXJrIHQgaW5cbiAgaWYgYWNjZXB0IHQgKGZ1bmN0aW9uXG4gICAgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZSlcbiAgdGhlblxuICAgIGlmIGFjY2VwdCB0IHBsdXNfb3JfbWludXNcbiAgICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2UgaWYgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICAgIHRoZW4gbWFueSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlXG4gICAgICAoKiBCYWNrdHJhY2sgaWYgdGhlcmUgYXJlIG5vIGRpZ2l0cyBvciBzaWducyBhZnRlciB0aGUgJ2UnIGJlY2F1c2VcbiAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlICdlJyB3YXMgYWN0dWFsbHkgYSBwYXJ0IG9mIHNvbWV0aGluZyBlbHNlLiBGb3JcbiAgICAgICAgIGV4YW1wbGUsIHRoZSAnZScgY291bGQgYmUgcGFydCBvZiBhbiAnZW0nIG9yICdlbicgZGltZW5zaW9uIGluc3RlYWRcbiAgICAgICAgIG9mIGJlZ2lubmluZyB0aGUgZXhwb25lbnRpYWwgcGFydCBvZiBhIHNjaWVudGlmaWMgbm90YXRpb24gbnVtYmVyLlxuXG4gICAgICAgICBFeGFtcGxlOiAxLjJlMyBpcyBzY2llbnRpZmljIG5vdGF0aW9uLCBidXQgMS4yZW0gaXMgYSBudW1iZXIgd2l0aCBhXG4gICAgICAgICBkaW1lbnNpb24uICopXG4gICAgICByZXNldCB0IG1hcmtcbjs7XG5cbmxldCBudW0gdCA9XG4gIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICBpZiBhY2NlcHRfY2hhciB0ICcuJ1xuICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICBlbHNlIChcbiAgICBtYW55MSB0IENoYXIuaXNfZGlnaXQ7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLicgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXQpO1xuICBleHBvbmVudGlhbF9wYXJ0IHRcbjs7XG5cbmxldCBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgbnVtIHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJyUnXG4gIHRoZW4gdC5jdXJyZW50IDwtIFBlcmNlbnRhZ2VcbiAgZWxzZSBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICB0aGVuIChcbiAgICBpZGVudCB0O1xuICAgIHQuY3VycmVudCA8LSBEaW1lbnNpb24pXG4gIGVsc2UgdC5jdXJyZW50IDwtIE51bWJlclxuOztcblxubGV0IGhhc2hfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJyMnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlmIGFjY2VwdCB0IG5tY2hhclxuICB0aGVuIChcbiAgICBtYW55MSB0IG5tY2hhcjtcbiAgICB0LmN1cnJlbnQgPC0gSGFzaClcbiAgZWxzZSB0LmN1cnJlbnQgPC0gRGVsaW1cbjs7XG5cbmxldCBhdGtleXdvcmQgdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ0AnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlkZW50IHQ7XG4gIHQuY3VycmVudCA8LSBBdGtleXdvcmRcbjs7XG5cbmxldCB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ3UnKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwidXJsKFwiXG4gIHRoZW4gKFxuICAgIGxldCBtID0gbWFyayB0IGluXG4gICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgaWYgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcIicgfHwgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcXCcnXG4gICAgdGhlbiAoXG4gICAgICByZXNldCB0IG07XG4gICAgICB0LmN1cnJlbnQgPC0gRnVuY3Rpb24pXG4gICAgZWxzZSAoXG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyknIHwgJyAnIC0+IGZhbHNlXG4gICAgICAgIHwgJ1xcJycgfCAnXCInIHwgJygnIC0+IGVycm9yIHRcbiAgICAgICAgfCBjIHdoZW4gQ2hhci5pc19wcmludCBjIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGVycm9yIHQpO1xuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICBleHBlY3RfY2hhciB0ICcpJztcbiAgICAgIHQuY3VycmVudCA8LSBVcmkpKVxuICBlbHNlIGlkZW50X29yX2Z1bmN0aW9uIHRcbjs7XG5cbmxldCBjb21tZW50X29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcIi8qXCJcbiAgdGhlbiAoXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKicgLT4gZmFsc2VcbiAgICAgICAgfCBfIC0+IHRydWUpO1xuICAgICAgaWYgYWNjZXB0X3N0cmluZyB0IFwiKi9cIlxuICAgICAgdGhlbiB0LmN1cnJlbnQgPC0gQ29tbWVudFxuICAgICAgZWxzZSBpZiBhY2NlcHRfY2hhciB0ICcqJ1xuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIGVycm9yIHRcbiAgICBpblxuICAgIGxvb3AgKCkpXG4gIGVsc2UgKFxuICAgIGV4cGVjdF9jaGFyIHQgJy8nO1xuICAgIHQuY3VycmVudCA8LSBEZWxpbSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICBsZXQgbmV3X29mZiA9IG5leHRfcG9zIHQgaW5cbiAgdC5vZmYgPC0gbmV3X29mZjtcbiAgdC5sZW4gPC0gMDtcbiAgaWYgaXNfbmV4dF9lb2YgdFxuICB0aGVuIHQuY3VycmVudCA8LSBFb2ZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgIHwgYyB3aGVuIGlzX3doaXRlc3BhY2UgYyAtPlxuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICB0LmN1cnJlbnQgPC0gV2hpdGVfc3BhY2VcbiAgICB8ICc6JyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbG9uXG4gICAgfCAnOycgLT4gb25lX2NoYXJfdG9rZW4gdCBTZW1pX2NvbG9uXG4gICAgfCAneycgLT4gb25lX2NoYXJfdG9rZW4gdCBMY3VybHlcbiAgICB8ICd9JyAtPiBvbmVfY2hhcl90b2tlbiB0IFJjdXJseVxuICAgIHwgJ1snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGJyYWNrZXRcbiAgICB8ICddJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJicmFja2V0XG4gICAgfCAnKCcgLT4gb25lX2NoYXJfdG9rZW4gdCBMcGFyZW5cbiAgICB8ICcpJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJwYXJlblxuICAgIHwgJywnIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29tbWFcbiAgICB8ICgnXFwnJyB8ICdcIicpIGFzIHF1b3RlIC0+IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGVcbiAgICB8ICgnMCcgLi4gJzknIHwgJy4nIHwgJysnIHwgJy0nKSB3aGVuIHN0YXJ0X251bSB0IC0+XG4gICAgICBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdFxuICAgIHwgJy8nIC0+IGNvbW1lbnRfb3JfZGVsaW0gdFxuICAgIHwgJyMnIC0+IGhhc2hfb3JfZGVsaW0gdFxuICAgIHwgJ0AnIHdoZW4gc3RhcnRfaWRlbnQgfnByZWZpeDpcIkBcIiB0IC0+IGF0a2V5d29yZCB0XG4gICAgfCAndScgLT4gdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHRcbiAgICB8IF8gLT5cbiAgICAgIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gICAgICB0aGVuIGlkZW50X29yX2Z1bmN0aW9uIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgKCogdGhpcyBpcyB3ZWlyZCBidXQgdGhlIHNwZWMgaXMgd2VpcmQgKilcbiAgICAgICAgdC5jdXJyZW50IDwtIERlbGltKSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICAoKiBNYWtlIHN1cmUgd2UgYXJlIGlkZW1wb3RlbnQgd2hlbiB3ZSBnZXQgaW50byB0aGUgZXJyb3Igc3RhdGUgKilcbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVycm9yXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgdHJ5IG5leHQgdCB3aXRoXG4gICAgfCBFcnJvcl9oYXBwZW5lZCAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgcyA9XG4gICgqIGN1cnJlbnQgaXMgZHVtbXkgYW5kIHdpbGwgYmUgc2V0IGJ5IGNhbGwgdG8gbmV4dCAqKVxuICBsZXQgdCA9IHsgczsgb2ZmID0gMDsgbGVuID0gMDsgY3VycmVudCA9IFdoaXRlX3NwYWNlIH0gaW5cbiAgbmV4dCB0O1xuICB0XG47O1xuXG5sZXQgc2xpY2UgdCA9IHQub2ZmLCB0LmxlblxubGV0IGN1cnJlbnQgdCA9IHQuY3VycmVudFxuXG5sZXQgY3VycmVudF90ZXh0IHQgPVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRW9mXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgcG9zLCBsZW4gPSBzbGljZSB0IGluXG4gICAgU3RyaW5nLnN1YiB0LnMgfnBvcyB+bGVuKVxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCB0ID0gY3JlYXRlIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbGV0IHN0YXJ0LCBsZW4gPSBzbGljZSB0IGluXG4gICAgbGV0IGFjYyA9IChjdXJyZW50IHQsIHN0YXJ0LCBsZW4pIDo6IGFjYyBpblxuICAgIGlmIFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVvZiB8fCBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFcnJvclxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSAoXG4gICAgICBuZXh0IHQ7XG4gICAgICBsb29wIGFjYylcbiAgaW5cbiAgbG9vcCBbXVxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IHRlc3QgcyA9XG4gICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgIChTZXhwLnRvX3N0cmluZ19tYWNoIChbJXNleHBfb2Y6IChUb2tlbi50ICogaW50ICogaW50KSBsaXN0XSAodG9fbGlzdCBzKSkpXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVvZlwiID1cbiAgICAgIHRlc3QgXCJcIjtcbiAgICAgIFslZXhwZWN0IHt8KChFb2YgMCAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2ltcGxlX3Rva2Vuc1wiID1cbiAgICAgIHRlc3QgXCIpKHt9W107OlwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChScGFyZW4gMCAxKShMcGFyZW4gMSAxKShMY3VybHkgMiAxKShSY3VybHkgMyAxKShMYnJhY2tldCA0IDEpKFJicmFja2V0IDUgMSkoU2VtaV9jb2xvbiA2IDEpKENvbG9uIDcgMSkoRW9mIDggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpZGVudFwiID1cbiAgICAgIHRlc3QgXCItZm9vLWJhcjogYmF6XCI7XG4gICAgICB0ZXN0IFwiLWZvby1iYXIoXCI7XG4gICAgICB0ZXN0IFwiQGZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALS1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiLS12YXJcIjtcbiAgICAgIHRlc3QgXCJSR0JBXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA4KShDb2xvbiA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoRnVuY3Rpb24gMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDgpKEVvZiA4IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCAxMCkoRW9mIDEwIDApKVxuICAgICgoSWRlbnQgMCA1KShFb2YgNSAwKSlcbiAgICAoKElkZW50IDAgNCkoRW9mIDQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ3aGl0ZXNwYWNlXCIgPVxuICAgICAgdGVzdCBcIiAgXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoV2hpdGVfc3BhY2UgMCAyKShFb2YgMiAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwibnVtYmVyc1wiID1cbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVuXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlbVwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41aW5cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogM2NtXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDEyMCVcIjtcbiAgICAgIHRlc3QgXCJncmlkOiAwIDEgZm9vXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjUtaW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZTIwXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoRGltZW5zaW9uIDEzIDMpKEVvZiAxNiAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKFBlcmNlbnRhZ2UgMTMgNCkoRW9mIDE3IDApKVxuICAgICgoSWRlbnQgMCA0KShDb2xvbiA0IDEpKFdoaXRlX3NwYWNlIDUgMSkoTnVtYmVyIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImJhZGx5X3F1b3RlZFwiID1cbiAgICAgIHRlc3QgXCInZm9vIGJhclwiO1xuICAgICAgdGVzdCBcIidcIjtcbiAgICAgIHRlc3QgXCInXFxcXCdcIjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKChFcnJvciAwIDgpKVxuICAgICgoRXJyb3IgMCAxKSlcbiAgICAoKEVycm9yIDAgMykpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJxdW90ZWRcIiA9XG4gICAgICB0ZXN0IHt8J0ZvbyAnXCJCYXJcIic7JyAnXFwnJyBcIlxcXCJcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChTdHJpbmcgMCA2KShTdHJpbmcgNiA1KShTdHJpbmcgMTEgMykoV2hpdGVfc3BhY2UgMTQgMSkoU3RyaW5nIDE1IDQpKFdoaXRlX3NwYWNlIDE5IDEpKFN0cmluZyAyMCA0KShFb2YgMjQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJjb2xvcnNcIiA9XG4gICAgICB0ZXN0IHt8Y29sb3I6ICNmMDB8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEhhc2ggNyA0KShFb2YgMTEgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpbXBvcnRcIiA9XG4gICAgICB0ZXN0IHt8QGltcG9ydCBcImZvby5iYXJcIjt8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoQXRrZXl3b3JkIDAgNykoV2hpdGVfc3BhY2UgNyAxKShTdHJpbmcgOCA5KShTZW1pX2NvbG9uIDE3IDEpKEVvZiAxOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInJlZCBleGFtcGxlXCIgPVxuICAgICAgdGVzdCBcInJlZC0tPlwiO1xuICAgICAgWyVleHBlY3Qge3wgKChJZGVudCAwIDUpKERlbGltIDUgMSkoRW9mIDYgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1cmxcIiA9XG4gICAgICB0ZXN0IHt8dXJsKCBcImh0dHA6Ly93d3d3Lmdvb2dsZS5jb21cIil8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScgKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5jb20gKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5cImNvbSApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoRnVuY3Rpb24gMCA0KShXaGl0ZV9zcGFjZSA0IDEpKFN0cmluZyA1IDI0KShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoUnBhcmVuIDI4IDEpKEVvZiAyOSAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFdoaXRlX3NwYWNlIDI4IDEpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChVcmkgMCAzMCkoRW9mIDMwIDApKVxuICAgICgoRXJyb3IgMCAyNSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlc2NhcGVcIiA9XG4gICAgICB0ZXN0IHt8XCJ0ZXN0XFwxOWFiZjJcXDJcInx9O1xuICAgICAgdGVzdCB7fFwiXFwwMTBcXHhGRmFcXG8xMjNcXG5cXFxcXFx1ezEyMzQ1fWFh8J+QqvCfkKrwn5Cq8J+QqvCfkKpcInx9O1xuICAgICAgdGVzdCB7fFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKFN0cmluZyAwIDE1KShFb2YgMTUgMCkpXG4gICAgKChTdHJpbmcgMCA1MSkoRW9mIDUxIDApKVxuICAgICgoU3RyaW5nIDAgNDkpKEVvZiA0OSAwKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlcnMuICBBIHBhcnNlciByZXR1cm5zIGZhbHNlIGlmIGJhc2VkIG9uIGFcbiAgIHNpbmdsZSB0b2tlbiBsb29rYWhlYWQgaXQgZGVjaWRlcyB0aGF0IHRoZSBnaXZlbiB0ZXh0IGNhbiBub3QgYmVcbiAgIHBhcnNlZC4gIEFueSBvdGhlciBwYXJzZSBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgcmFpc2luZyBleGNlcHRpb25zLlxuXG4gICBTb21lIHBhcnNlcnMgcmV0dXJuIHVuaXQgYmVjYXVzZSB3ZSBvbmx5IGNhbGwgdGhlbSB3aGVuIGEgZmFpbHVyZVxuICAgdG8gcGFyc2UgaW1wbGllcyBhIHBhcnNlIGVycm9yIChhbmQgbm90IHRoYXQgc29tZSBwYXJzZXIgaGlnaGVyIHVwXG4gICBpbiB0aGUgY2FsbCBjaGFpbiBzaG91bGQgdHJ5IHRvIHBhcnNlIHNvbWV0aGluZyBlbHNlKS5cblxuICAgRm9yIHNpbXBsaWNpdHkgdGhlIHBhcnNlcnMgdGhlbXNlbHZlcyBqdXN0IHZhbGlkYXRlIGFuZCBkb24ndFxuICAgcHJvZHVjZSBhbnkgdmFsdWVzLiAgVGhhdCBsZWFkcyB0byBhIGZldyB1bmVsZWdhbnQgY29uc3RydWN0c1xuICAgKHByaW1hcmlseSBpbiBkZWNsYXJhdGlvbiksIGJ1dCBtZWFucyB3ZSBvdGhlcndpc2UgaGF2ZSByYXRoZXJcbiAgIHNpbXBsZSBjb2RlIHRoYXQgYWxzbyBhbGxvY2F0ZXMgdmVyeSBsaXR0bGUuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHJlYyBuZXh0IGN0ID1cbiAgQ3NzX3Rva2VuaXplci5uZXh0IGN0O1xuICBpZiBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgdGhlbiBuZXh0IGN0IGVsc2UgKClcbjs7XG5cbmxldCBza2lwX3doaXRlX3NwYWNlIGN0ID1cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIFdoaXRlX3NwYWNlKSBkb1xuICAgIG5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IGFjY2VwdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiAoXG4gICAgbmV4dCBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgZXhwZWN0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIG5leHQgY3RcbiAgZWxzZVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlVuZXhwZWN0ZWQgdG9rZW5cIlxuICAgICAgICAgIChleHBlY3RlZCA6IENzc190b2tlbml6ZXIuVG9rZW4udClcbiAgICAgICAgICAoZ290IDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KV1cbjs7XG5cbmxldCByZWMgbWFueSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPSBpZiBmIGN0IHRoZW4gbWFueSBjdCBmIGVsc2UgKClcblxubGV0IG1hbnkxIChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9XG4gIGlmIGYgY3RcbiAgdGhlbiAoXG4gICAgbWFueSBjdCBmO1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCByZWMgYW55IGN0IDogYm9vbCA9XG4gIGxldCByZXMgPVxuICAgIG1hdGNoIENzc190b2tlbml6ZXIuY3VycmVudCBjdCB3aXRoXG4gICAgfCBJZGVudCB8IE51bWJlciB8IFBlcmNlbnRhZ2UgfCBEaW1lbnNpb24gfCBTdHJpbmcgfCBVcmkgfCBEZWxpbSB8IEhhc2ggfCBDb21tYSAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHRydWVcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIG1hbnkgY3QgYW55O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExwYXJlbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExicmFja2V0IC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUmJyYWNrZXQ7XG4gICAgICB0cnVlXG4gICAgfCBSY3VybHkgfCBScGFyZW4gfCBSYnJhY2tldCAtPiBmYWxzZVxuICAgIHwgTGN1cmx5IC0+IGZhbHNlXG4gICAgfCBBdGtleXdvcmQgfCBDb2xvbiB8IFNlbWlfY29sb24gLT4gZmFsc2VcbiAgICB8IENvbW1lbnQgfCBXaGl0ZV9zcGFjZSB8IEVvZiB8IEVycm9yIC0+IGZhbHNlXG4gIGluXG4gIGlmIHJlcyB0aGVuIHNraXBfd2hpdGVfc3BhY2UgY3QgZWxzZSAoKTtcbiAgcmVzXG5cbmFuZCBleHBlY3RfYW55IGN0ID0gaWYgYW55IGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxhbnk+XCJdXG5cbmFuZCB2YWx1ZTAgY3QgPVxuICBhbnkgY3RcbiAgfHwgYmxvY2sgY3RcbiAgfHxcbiAgaWYgYWNjZXB0IGN0IEF0a2V5d29yZFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIHZhbHVlIGN0ID0gbWFueTEgY3QgdmFsdWUwXG5cbmFuZCBibG9jayBjdCA6IGJvb2wgPVxuICBpZiBhY2NlcHQgY3QgTGN1cmx5XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgICB2YWx1ZTAgY3RcbiAgICAgIHx8XG4gICAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgICAgdGhlbiAoXG4gICAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICAgIHRydWUpXG4gICAgICBlbHNlIGZhbHNlKTtcbiAgICBleHBlY3QgY3QgUmN1cmx5O1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgZXhwZWN0X3ZhbHVlIGN0ID0gaWYgdmFsdWUgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPHZhbHVlPlwiXVxuXG5sZXQgZGVjbGFyYXRpb24gY3QgPVxuICBsZXQgaWRlbnRfc3RhcnQsIGlkZW50X2xlbiA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgaW5cbiAgaWYgYWNjZXB0IGN0IElkZW50XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgZXhwZWN0IGN0IENvbG9uO1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbGV0IHZhbHVlX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBleHBlY3RfdmFsdWUgY3Q7XG4gICAgbGV0IG5leHRfdG9rZW5fc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGxldCBzb3VyY2UgPSBDc3NfdG9rZW5pemVyLnNvdXJjZSBjdCBpblxuICAgIFNvbWVcbiAgICAgICggU3RyaW5nLnN1YiBzb3VyY2UgfnBvczppZGVudF9zdGFydCB+bGVuOmlkZW50X2xlblxuICAgICAgLCBTdHJpbmcucnN0cmlwXG4gICAgICAgICAgKFN0cmluZy5zdWIgc291cmNlIH5wb3M6dmFsdWVfc3RhcnQgfmxlbjoobmV4dF90b2tlbl9zdGFydCAtIHZhbHVlX3N0YXJ0KSkgKSlcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uIGN0ID1cbiAgbWF0Y2ggZGVjbGFyYXRpb24gY3Qgd2l0aFxuICB8IFNvbWUgKGZpZWxkLCB2YWx1ZSkgLT4gZmllbGQsIHZhbHVlXG4gIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxkZWNsYXJhdGlvbj5cIl1cbjs7XG5cbigqIEFzIHBlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zdHlsZS1hdHRyL1xuICAgZGVjbGFyYXRpb24tbGlzdFxuICAgOiBTKiBkZWNsYXJhdGlvbj8gWyAnOycgUyogZGVjbGFyYXRpb24/IF0qXG4gICA7XG4qKVxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IGN0ID1cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBsZXQgYWRkIGt2ID1cbiAgICBtYXRjaCBrdiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChrLCB2KSAtPiByZXMgOj0gKGssIHYpIDo6ICFyZXNcbiAgaW5cbiAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgdGhlbiAoXG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpO1xuICBMaXN0LnJldiAhcmVzXG47O1xuXG5sZXQgcGFyc2UgcGFyc2VyX2YgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIGRvXG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmU7XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICBsZXQgcmVzID0gcGFyc2VyX2YgY3QgaW5cbiAgICBleHBlY3QgY3QgRW9mO1xuICAgIHJlcylcbjs7XG5cbmxldCBwcmludF90b2tlbnMgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4obm90IChUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgRW9mKSkgZG9cbiAgICBwcmludF9zIChDc3NfdG9rZW5pemVyLlRva2VuLnNleHBfb2ZfdCAoQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0KSk7XG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCB2YWxpZGF0ZV92YWx1ZSA9IHBhcnNlIGV4cGVjdF92YWx1ZVxubGV0IHBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyA9IHBhcnNlIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IHNcblxubGV0IHRlc3RfcGFyc2VyIHAgc2V4cF9vZl9hcmcgcyA9XG4gIGxldCByID0gcGFyc2UgcCBzIGluXG4gIHByaW50ZiAhXCIlcyAtLT4gJXtzZXhwOmFyZyBPcl9lcnJvci50fVxcblwiIHMgclxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiXCIgPVxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgXCIwIDRweCA4cHggMCBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4xMiksIDAgMnB4IDRweCAwIFxcXG4gICAgICAgICBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4wOClcIlxuICAgICAgaW5cbiAgICAgIHByaW50X3Rva2VucyB2YWx1ZTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlbiB8fV07XG4gICAgICBwcmludF9zIFslbWVzc2FnZSAodmFsaWRhdGVfdmFsdWUgdmFsdWUgOiB1bml0IE9yX2Vycm9yLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKFwidmFsaWRhdGVfdmFsdWUgdmFsdWVcIiAoT2sgKCkpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidmFsdWVzXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfdmFsdWUgVW5pdC5zZXhwX29mX3QgaW5cbiAgICAgIHRlc3QgXCJ4XCI7XG4gICAgICB0ZXN0IFwiM1wiO1xuICAgICAgdGVzdCBcIjNpblwiO1xuICAgICAgdGVzdCBcIjMlXCI7XG4gICAgICB0ZXN0IFwiI2ZmZlwiO1xuICAgICAgdGVzdCBcIjEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcInJnYigwLDAsMClcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICB4IC0tPiAoT2sgKCkpXG4gICAgICAzIC0tPiAoT2sgKCkpXG4gICAgICAzaW4gLS0+IChPayAoKSlcbiAgICAgIDMlIC0tPiAoT2sgKCkpXG4gICAgICAjZmZmIC0tPiAoT2sgKCkpXG4gICAgICAxIDAgYXV0byAtLT4gKE9rICgpKVxuICAgICAgJ0hlbGxvIFdvcmxkJyAtLT4gKE9rICgpKVxuICAgICAgcmdiKDAsMCwwKSAtLT4gKE9rICgpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb25cIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6ICdIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiBmb287XCI7XG4gICAgICAoKiBTZW1pJ3MgYXJlIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gbGlzdCAqKVxuICAgICAgdGVzdCBcImNvbnRlbnQ6IGJhciBcIjtcbiAgICAgICgqIGJ1dCB3aGl0ZXNwYWNlIGlzIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gKGFueSByZWFsbHkpICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoZmxleCBcIjEgMCBhdXRvXCIpKVxuICAgICAgY29udGVudDogJ0hlbGxvIFdvcmxkJyAtLT4gKE9rIChjb250ZW50IFwiJ0hlbGxvIFdvcmxkJ1wiKSlcbiAgICAgIGNvbnRlbnQ6IGZvbzsgLS0+IChFcnJvciAoXCJVbmV4cGVjdGVkIHRva2VuXCIgKGV4cGVjdGVkIEVvZikgKGdvdCBTZW1pX2NvbG9uKSkpXG4gICAgICBjb250ZW50OiBiYXIgIC0tPiAoT2sgKGNvbnRlbnQgYmFyKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVuaWNvZGVcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnXCI7XG4gICAgICBwcmludF9lbmRsaW5lIChTZXhwLnRvX3N0cmluZyAoU2V4cC5BdG9tIFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcIikpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnIC0tPiAoT2tcbiAgICAgKGNvbnRlbnRcbiAgICAgIFwiJ1xcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyJ1wiKSlcbiAgICBcIlxcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyXCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uIGxpc3RcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IFslc2V4cF9vZjogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvO1wiO1xuICAgICAgdGVzdFxuICAgICAgICBcImJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4XCI7XG4gICAgICB0ZXN0IFwiOzs7OztcIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhIFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBmbGV4OiAxIDAgYXV0bzsgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXCJpbWdfdHJlZS5wbmdcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweCAtLT4gKE9rXG4gICAgICgoYmFja2dyb3VuZCBcIiM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnRcIilcbiAgICAgIChtYXJnaW4tbGVmdCAyMDBweCkpKVxuICAgIDs7Ozs7IC0tPiAoT2sgKCkpXG4gICAgZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSAgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSAob3RoZXIgc2EpKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgKCoqIChmaWVsZCAqIHZhbHVlKSBsaXN0LiAgV2hlcmUgdmFsdWUgc2hvdWxkIGJlIGVzY2FwZWQgLyBxdW90ZWRcbiAgICAgICAgYXMgbmVjZXNzYXJ5IGFzIHBlciBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3J1bGUtc2V0cy4gKilcbiAgICB0eXBlIHQgPSAoc3RyaW5nICogc3RyaW5nKSBsaXN0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pb11cbiAgZW5kXG5lbmRcblxub3BlbiBDb3JlXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG50eXBlIGNzc19nbG9iYWxfdmFsdWVzID1cbiAgWyBgSW5oZXJpdFxuICB8IGBJbml0aWFsXG4gIF1cbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkID0gcmVmIChmdW4gZGlnaXRzIGYgLT4gc3ByaW50ZiBcIiUuKmZcIiBkaWdpdHMgZilcbmVuZFxuXG5sZXQgZjJzIGRpZ2l0cyBmID0gIVByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgZGlnaXRzIGZcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFJHQkEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgciA6IGludFxuICAgICAgICA7IGcgOiBpbnRcbiAgICAgICAgOyBiIDogaW50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfnIgfmcgfmIgP2EgKCkgPSB7IHI7IGc7IGI7IGEgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEhTTEEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaCA6IGludFxuICAgICAgICA7IHMgOiBQZXJjZW50LnRcbiAgICAgICAgOyBsIDogUGVyY2VudC50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfmggfnMgfmwgP2EgKCkgPSB7IGg7IHM7IGw7IGEgfVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID1cbiAgICAgIFsgYFJHQkEgb2YgUkdCQS50XG4gICAgICB8IGBIU0xBIG9mIEhTTEEudFxuICAgICAgfCBgTmFtZSBvZiBzdHJpbmdcbiAgICAgIHwgYEhleCBvZiBzdHJpbmdcbiAgICAgIHwgYFZhciBvZiBzdHJpbmdcbiAgICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgOiBbPCB0IF0gLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFJHQkEgeyBSR0JBLnI7IGc7IGI7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBbJXN0cmluZyBcInJnYigle3IjSW50fSwle2cjSW50fSwle2IjSW50fSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmcgXCJyZ2JhKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9LCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYEhTTEEgeyBIU0xBLmg7IHM7IGw7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2woJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lKVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbGEoJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lLCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYE5hbWUgbmFtZSAtPiBuYW1lXG4gICAgfCBgSGV4IGhleCAtPiBoZXhcbiAgICB8IGBWYXIgdmFyIC0+IFslc3RyaW5nIFwidmFyKCV7dmFyfSlcIl1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxpZ25tZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGVmdFxuICAgIHwgYFJpZ2h0XG4gICAgfCBgQ2VudGVyICgqIGhvcml6b250YWwgKilcbiAgICB8IGBUb3BcbiAgICB8IGBCb3R0b21cbiAgICB8IGBNaWRkbGUgKCogdmVydGljYWwgKilcbiAgICB8IGBKdXN0aWZ5ICgqIHRleHQtYWxpZ24gKGluIGFkZGl0aW9uIHRvIFtob3Jpem9udGFsXSkgKilcbiAgICB8IGBTdXBlciAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYFN1YiAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYFRvcCAtPiBcInRvcFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQm90dG9tIC0+IFwiYm90dG9tXCJcbiAgICB8IGBTdXBlciAtPiBcInN1cGVyXCJcbiAgICB8IGBTdWIgLT4gXCJzdWJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgUmF3IG9mIHN0cmluZ1xuICAgIHwgYENoIG9mIGZsb2F0XG4gICAgfCBgUmVtIG9mIGZsb2F0XG4gICAgfCBgRW0gb2YgaW50XG4gICAgfCBgRW1fZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBQZXJjZW50IG9mIFBlcmNlbnQudFxuICAgIHwgYFB0IG9mIGZsb2F0XG4gICAgfCBgUHggb2YgaW50XG4gICAgfCBgUHhfZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBWaCBvZiBQZXJjZW50LnRcbiAgICB8IGBWdyBvZiBQZXJjZW50LnRcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYFJhdyBzIC0+IHNcbiAgICB8IGBDaCBjIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBjfWNoXCJdXG4gICAgfCBgUmVtIGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cmVtXCJdXG4gICAgfCBgRW0gaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9ZW1cIl1cbiAgICB8IGBFbV9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfWVtXCJdXG4gICAgfCBgUGVyY2VudCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfSVcIl1cbiAgICB8IGBQdCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBwfXB0XCJdXG4gICAgfCBgUHggaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9cHhcIl1cbiAgICB8IGBQeF9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXB4XCJdXG4gICAgfCBgVmggcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12aFwiXVxuICAgIHwgYFZ3IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dndcIl1cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuXG4gIGxldCBwZXJjZW50MTAwID0gYFBlcmNlbnQgKFBlcmNlbnQub2ZfcGVyY2VudGFnZSAxMDAuKVxuZW5kXG5cbm1vZHVsZSBBdXRvX29yX2xlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYEF1dG9cbiAgICB8IExlbmd0aC50XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8ICNMZW5ndGgudCBhcyBsIC0+IExlbmd0aC50b19zdHJpbmdfY3NzIGxcbiAgOztcbmVuZFxuXG5sZXQgdmFsdWVfbWFwIG8gfmYgPSBPcHRpb24udmFsdWVfbWFwIG8gfmRlZmF1bHQ6XCJcIiB+ZlxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgKCBAPiApID0gY29tYmluZVxubGV0IGNvbmNhdCBsID0gTGlzdC5jb25jYXQgbFxubGV0IHRvX3N0cmluZ19saXN0ID0gRm4uaWRcblxubGV0IHRvX3N0cmluZ19jc3MgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biAoZmllbGQsIHZhbHVlKSAtPiBbJXN0cmluZyBcIiV7ZmllbGR9OiAle3ZhbHVlfVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiO1wiXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2Nzc19leG4gcyA9IENzc19wYXJzZXIucGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzIHw+IE9yX2Vycm9yLm9rX2V4blxuXG4oKiogY3JlYXRlX3JhdyBjcmVhdGVzIGEgc2luZ2xlIGZpZWxkLCB2YWx1ZSBwYWlyLiAgSXQgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSBpcyBhIHZhbGlkXG4gICAgY3NzIHZhbHVlLiAgQXMgc3VjaCBpdCBpcyB1bnNhZmUgdG8gdXNlIHdpdGggYXJiaXRyYXJ5IHZhbHVlIHN0cmluZ3MuICBCdXQgZm9yIHRoZVxuICAgIHZhc3QgbWFqb3JpdHkgb2YgY29tYmluYXRvcnMgaW4gdGhpcyBtb2R1bGUgaXQgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIHVzZSwgYXMgd2Uga25vd1xuICAgIGJ5IGNvbnN0cnVjdGlvbiB0aGF0IHRoZSB2YWx1ZXMgZG8gbm90IG5lZWQgcXVvdGluZyAvIGVzY2FwaW5nLiAqKVxubGV0IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZSA9IFsgZmllbGQsIHZhbHVlIF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgc2hvdWxkX3ZhbGlkYXRlID0gcmVmIGZhbHNlXG5lbmRcblxubGV0IGNyZWF0ZSB+ZmllbGQgfnZhbHVlID1cbiAgaWYgIUV4cGVydC5zaG91bGRfdmFsaWRhdGUgdGhlbiBDc3NfcGFyc2VyLnZhbGlkYXRlX3ZhbHVlIHZhbHVlIHw+IE9yX2Vycm9yLm9rX2V4bjtcbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgZW1wdHkgPSBbXVxubGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxubGV0IGNyZWF0ZV9wbGFjZW1lbnQgbmFtZSBsZW5ndGggPSBjcmVhdGUgfmZpZWxkOm5hbWUgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsZW5ndGgpXG5sZXQgbGVmdCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJsZWZ0XCJcbmxldCB0b3AgPSBjcmVhdGVfcGxhY2VtZW50IFwidG9wXCJcbmxldCBib3R0b20gPSBjcmVhdGVfcGxhY2VtZW50IFwiYm90dG9tXCJcbmxldCByaWdodCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJyaWdodFwiXG5cbmxldCBwb3NpdGlvbiA/dG9wOnRwID9ib3R0b206YnQgP2xlZnQ6bHQgP3JpZ2h0OnJ0IHBvcyA9XG4gIGxldCBwb3MgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBtYXRjaCBwb3Mgd2l0aFxuICAgICAgfCBgU3RhdGljIC0+IFwic3RhdGljXCJcbiAgICAgIHwgYEFic29sdXRlIC0+IFwiYWJzb2x1dGVcIlxuICAgICAgfCBgU3RpY2t5IC0+IFwic3RpY2t5XCJcbiAgICAgIHwgYFJlbGF0aXZlIC0+IFwicmVsYXRpdmVcIlxuICAgICAgfCBgRml4ZWQgLT4gXCJmaXhlZFwiXG4gICAgaW5cbiAgICBjcmVhdGUgfmZpZWxkOlwicG9zaXRpb25cIiB+dmFsdWVcbiAgaW5cbiAgbGV0IGNvbnZlcnQgb3B0X2wgZiA9IE9wdGlvbi52YWx1ZV9tYXAgb3B0X2wgfmRlZmF1bHQ6ZW1wdHkgfmYgaW5cbiAgY29uY2F0IFsgcG9zOyBjb252ZXJ0IHRwIHRvcDsgY29udmVydCBsdCBsZWZ0OyBjb252ZXJ0IHJ0IHJpZ2h0OyBjb252ZXJ0IGJ0IGJvdHRvbSBdXG47O1xuXG5sZXQgYm94X3NpemluZyB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBDb250ZW50X2JveCAtPiBcImNvbnRlbnQtYm94XCJcbiAgICB8IGBCb3JkZXJfYm94IC0+IFwiYm9yZGVyLWJveFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3gtc2l6aW5nXCIgfnZhbHVlXG47O1xuXG5sZXQgZGlzcGxheSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBJbmxpbmUgLT4gXCJpbmxpbmVcIlxuICAgIHwgYEJsb2NrIC0+IFwiYmxvY2tcIlxuICAgIHwgYElubGluZV9ibG9jayAtPiBcImlubGluZS1ibG9ja1wiXG4gICAgfCBgTGlzdF9pdGVtIC0+IFwibGlzdC1pdGVtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBJbmxpbmVfdGFibGUgLT4gXCJpbmxpbmUtdGFibGVcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBGbGV4IC0+IFwiZmxleFwiXG4gICAgfCBgSW5saW5lX2ZsZXggLT4gXCJpbmxpbmUtZmxleFwiXG4gICAgfCBgSW5saW5lX2dyaWQgLT4gXCJpbmxpbmUtZ3JpZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJkaXNwbGF5XCIgfnZhbHVlXG47O1xuXG5sZXQgdmlzaWJpbGl0eSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBDb2xsYXBzZSAtPiBcImNvbGxhcHNlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInZpc2liaWxpdHlcIiB+dmFsdWVcbjs7XG5cbnR5cGUgb3ZlcmZsb3cgPVxuICBbIGBWaXNpYmxlXG4gIHwgYEhpZGRlblxuICB8IGBTY3JvbGxcbiAgfCBgQXV0b1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IG1ha2Vfb3ZlcmZsb3cgZmllbGQgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgU2Nyb2xsIC0+IFwic2Nyb2xsXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgb3ZlcmZsb3cgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3dcIlxubGV0IG92ZXJmbG93X3ggPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteFwiXG5sZXQgb3ZlcmZsb3dfeSA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy15XCJcbmxldCB6X2luZGV4IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcInotaW5kZXhcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSlcbmxldCBvcGFjaXR5IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcIm9wYWNpdHlcIiB+dmFsdWU6KGYycyA2IGkpXG5cbmxldCBjcmVhdGVfbGVuZ3RoX2ZpZWxkIGZpZWxkIGwgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgbClcbjs7XG5cbmxldCB3aGl0ZV9zcGFjZSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vd3JhcCAtPiBcIm5vd3JhcFwiXG4gICAgfCBgUHJlIC0+IFwicHJlXCJcbiAgICB8IGBQcmVfbGluZSAtPiBcInByZS1saW5lXCJcbiAgICB8IGBQcmVfd3JhcCAtPiBcInByZS13cmFwXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGUgfmZpZWxkOlwid2hpdGUtc3BhY2VcIiB+dmFsdWVcbjs7XG5cbnR5cGUgZm9udF9zdHlsZSA9XG4gIFsgYE5vcm1hbFxuICB8IGBJdGFsaWNcbiAgfCBgT2JsaXF1ZVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3dlaWdodCA9XG4gIFsgYE5vcm1hbFxuICB8IGBCb2xkXG4gIHwgYEJvbGRlclxuICB8IGBMaWdodGVyXG4gIHwgYE51bWJlciBvZiBpbnRcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF92YXJpYW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYFNtYWxsX2NhcHNcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBmb250X3NpemUgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiZm9udC1zaXplXCJcbmxldCBmb250X2ZhbWlseSBsID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LWZhbWlseVwiIH52YWx1ZTooU3RyaW5nLmNvbmNhdCBsIH5zZXA6XCIsXCIpXG5cbmxldCBmb250X3N0eWxlIHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgSXRhbGljIC0+IFwiaXRhbGljXCJcbiAgICB8IGBPYmxpcXVlIC0+IFwib2JsaXF1ZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXN0eWxlXCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udF93ZWlnaHQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTnVtYmVyIGkgLT4gSW50LnRvX3N0cmluZyBpXG4gICAgfCBgQm9sZCAtPiBcImJvbGRcIlxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTGlnaHRlciAtPiBcImxpZ2h0ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBCb2xkZXIgLT4gXCJib2xkZXJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXdlaWdodFwiIH52YWx1ZVxuOztcblxubGV0IGJvbGQgPSBmb250X3dlaWdodCBgQm9sZFxuXG5sZXQgZm9udF92YXJpYW50IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgU21hbGxfY2FwcyAtPiBcInNtYWxsLWNhcHNcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC12YXJpYW50XCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udCB+c2l6ZSB+ZmFtaWx5ID9zdHlsZSA/d2VpZ2h0ID92YXJpYW50ICgpID1cbiAgWyBTb21lIChmb250X3NpemUgc2l6ZSlcbiAgOyBTb21lIChmb250X2ZhbWlseSBmYW1pbHkpXG4gIDsgT3B0aW9uLm1hcCBzdHlsZSB+Zjpmb250X3N0eWxlXG4gIDsgT3B0aW9uLm1hcCB3ZWlnaHQgfmY6Zm9udF93ZWlnaHRcbiAgOyBPcHRpb24ubWFwIHZhcmlhbnQgfmY6Zm9udF92YXJpYW50XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZCB+Y29sb3IgPSBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KENvbG9yLnRvX3N0cmluZ19jc3MgY29sb3IpXG5sZXQgY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJjb2xvclwiIH5jb2xvclxubGV0IGJhY2tncm91bmRfY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWNvbG9yXCIgfmNvbG9yXG5sZXQgZmlsbCBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImZpbGxcIiB+Y29sb3JcblxudHlwZSBzdG9wcyA9IChQZXJjZW50LnQgKiBDb2xvci50KSBsaXN0XG5cbnR5cGUgbGluZWFyX2dyYWRpZW50ID1cbiAgeyBkaXJlY3Rpb24gOiBbIGBEZWcgb2YgaW50IF1cbiAgOyBzdG9wcyA6IHN0b3BzXG4gIH1cblxudHlwZSByYWRpYWxfZ3JhZGllbnQgPSB7IHN0b3BzIDogc3RvcHMgfVxuXG50eXBlIGJhY2tncm91bmRfaW1hZ2UgPVxuICBbIGBVcmwgb2Ygc3RyaW5nXG4gIHwgYExpbmVhcl9ncmFkaWVudCBvZiBsaW5lYXJfZ3JhZGllbnRcbiAgfCBgUmFkaWFsX2dyYWRpZW50IG9mIHJhZGlhbF9ncmFkaWVudFxuICBdXG5cbmxldCBzdG9wc190b19zdHJpbmcgc3RvcHMgPVxuICBMaXN0Lm1hcCBzdG9wcyB+ZjooZnVuIChwY3QsIGNvbG9yKSAtPlxuICAgICgqIE5vdGU6IFBlcmNlbnQudG9fc3RyaW5nIHByb2R1Y2VkIGUuZy4gXCIweFwiLCBcIjF4XCIsIHdvbid0IHdvcmsgaGVyZS4gKilcbiAgICBbJXN0cmluZyBcIiV7Q29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcn0gJXtmMnMgNiAoUGVyY2VudC50b19wZXJjZW50YWdlIHBjdCl9JVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuOztcblxubGV0IGJhY2tncm91bmRfaW1hZ2Ugc3BlYyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBgVXJsIHVybCAtPiBbJXN0cmluZyBcInVybCgle3VybH0pXCJdXG4gICAgfCBgTGluZWFyX2dyYWRpZW50IHsgZGlyZWN0aW9uID0gYERlZyBkaXJlY3Rpb247IHN0b3BzIH0gLT5cbiAgICAgIFslc3RyaW5nIFwibGluZWFyLWdyYWRpZW50KCV7ZGlyZWN0aW9uI0ludH1kZWcsICV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgICB8IGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyB9IC0+IFslc3RyaW5nIFwicmFkaWFsLWdyYWRpZW50KCV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWltYWdlXCIgfnZhbHVlXG47O1xuXG5sZXQgY3JlYXRlX2FsaWdubWVudCBmaWVsZCBhID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBbGlnbm1lbnQudG9fc3RyaW5nX2NzcyAoYSA6PiBBbGlnbm1lbnQudCkpXG47O1xuXG5sZXQgdGV4dF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ0ZXh0LWFsaWduXCJcbmxldCBob3Jpem9udGFsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcImhvcml6b250YWwtYWxpZ25cIlxubGV0IHZlcnRpY2FsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInZlcnRpY2FsLWFsaWduXCJcblxubGV0IGZsb2F0IGYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIGYgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbG9hdFwiIH52YWx1ZVxuOztcblxubGV0IHdpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIndpZHRoXCJcbmxldCBtaW5fd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLXdpZHRoXCJcbmxldCBtYXhfd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LXdpZHRoXCJcbmxldCBoZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiaGVpZ2h0XCJcbmxldCBtaW5faGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi1oZWlnaHRcIlxubGV0IG1heF9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LWhlaWdodFwiXG5sZXQgcGFkZGluZ190b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy10b3BcIlxubGV0IHBhZGRpbmdfYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctYm90dG9tXCJcbmxldCBwYWRkaW5nX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1sZWZ0XCJcbmxldCBwYWRkaW5nX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctcmlnaHRcIlxuXG5sZXQgcGFkZGluZyA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6cGFkZGluZ190b3BcbiAgOyBtIGJvdHRvbSB+ZjpwYWRkaW5nX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjpwYWRkaW5nX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOnBhZGRpbmdfcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9wYWRkaW5nIGwgPSBwYWRkaW5nIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IG1hcmdpbl90b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXRvcFwiXG5sZXQgbWFyZ2luX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tYm90dG9tXCJcbmxldCBtYXJnaW5fbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tbGVmdFwiXG5sZXQgbWFyZ2luX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1yaWdodFwiXG5cbmxldCBtYXJnaW4gP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOm1hcmdpbl90b3BcbiAgOyBtIGJvdHRvbSB+ZjptYXJnaW5fYm90dG9tXG4gIDsgbSBsZWZ0IH5mOm1hcmdpbl9sZWZ0XG4gIDsgbSByaWdodCB+ZjptYXJnaW5fcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9tYXJnaW4gbCA9IG1hcmdpbiB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGl0ZW1fYWxpZ25tZW50ID1cbiAgWyBgQXV0b1xuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBCYXNlbGluZVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGp1c3RpZnlfY29udGVudCA9XG4gIFsgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICBdXG5cbmxldCBqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbjs7XG5cbmxldCBmbGV4X2NvbnRhaW5lclxuICAgICAgPyhpbmxpbmUgPSBmYWxzZSlcbiAgICAgID8oZGlyZWN0aW9uID0gYFJvdylcbiAgICAgID8od3JhcCA9IGBOb3dyYXApXG4gICAgICA/YWxpZ25faXRlbXNcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgICgpXG4gID1cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBSb3cgLT4gXCJyb3dcIlxuICAgIHwgYFJvd19yZXZlcnNlIC0+IFwicm93LXJldmVyc2VcIlxuICAgIHwgYENvbHVtbiAtPiBcImNvbHVtblwiXG4gICAgfCBgQ29sdW1uX3JldmVyc2UgLT4gXCJjb2x1bW4tcmV2ZXJzZVwiXG4gIGluXG4gIGxldCB3cmFwID1cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFdyYXAgLT4gXCJ3cmFwXCJcbiAgICB8IGBXcmFwX3JldmVyc2UgLT4gXCJ3cmFwLXJldmVyc2VcIlxuICBpblxuICBsZXQgYWxpZ25faXRlbXMgPVxuICAgIG1hdGNoIGFsaWduX2l0ZW1zIHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWl0ZW1zXCIgfnZhbHVlOihpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCBqdXN0aWZ5X2NvbnRlbnQgPVxuICAgIG1hdGNoIGp1c3RpZnlfY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwianVzdGlmeS1jb250ZW50XCIgfnZhbHVlOihqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBjb25jYXRcbiAgICBbIGRpc3BsYXkgKGlmIGlubGluZSB0aGVuIGBJbmxpbmVfZmxleCBlbHNlIGBGbGV4KVxuICAgIDsgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4LWRpcmVjdGlvblwiIH52YWx1ZTpkaXJlY3Rpb25cbiAgICA7IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOndyYXBcbiAgICA7IGFsaWduX2l0ZW1zXG4gICAgOyBqdXN0aWZ5X2NvbnRlbnRcbiAgICBdXG47O1xuXG5sZXQgZmxleF9pdGVtID9vcmRlciA/KGJhc2lzID0gYEF1dG8pID8oc2hyaW5rID0gMS4pIH5ncm93ICgpID1cbiAgbGV0IG9yZGVyID1cbiAgICBPcHRpb24ubWFwIG9yZGVyIH5mOihmdW4gaSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcIm9yZGVyXCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgfD4gTGlzdC5qb2luXG4gIGluXG4gIGxldCBmbGV4ID1cbiAgICBsZXQgYmFzaXMgPSBBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGJhc2lzIGluXG4gICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4XCIgfnZhbHVlOlslc3RyaW5nIFwiJXtmMnMgNiBncm93fSAle2YycyA2IHNocmlua30gJXtiYXNpc31cIl1cbiAgaW5cbiAgY29uY2F0IFsgZmxleDsgb3JkZXIgXVxuOztcblxubGV0IGFsaWduX3NlbGYgYSA9XG4gIGxldCB2YWx1ZSA9IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLXNlbGZcIiB+dmFsdWVcbjs7XG5cbmxldCByZXNpemUgKHZhbHVlIDogWyBgTm9uZSB8IGBCb3RoIHwgYEhvcml6b250YWwgfCBgVmVydGljYWwgfCBjc3NfZ2xvYmFsX3ZhbHVlcyBdKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBcImhvcml6b250YWxcIlxuICAgIHwgYFZlcnRpY2FsIC0+IFwidmVydGljYWxcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwicmVzaXplXCIgfnZhbHVlXG47O1xuXG5sZXQgYW5pbWF0aW9uIH5uYW1lIH5kdXJhdGlvbiA/ZGVsYXkgP2RpcmVjdGlvbiA/ZmlsbF9tb2RlID9pdGVyX2NvdW50ID90aW1pbmdfZnVuY3Rpb24gKClcbiAgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgbGV0IHNwYW5fdG9fc3RyaW5nIHMgPSBbJXN0cmluZyBcIiV7ZjJzIDIgKFRpbWVfbnMuU3Bhbi50b19zZWMgcyl9c1wiXSBpblxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtIGRpcmVjdGlvbiB+ZjooZnVuIGQgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgICAgICB8IGBSZXZlcnNlIC0+IFwicmV2ZXJzZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZV9yZXZlcnNlIC0+IFwiYWx0ZXJuYXRlLXJldmVyc2VcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiB+dmFsdWUpXG4gIGluXG4gIGxldCBmaWxsX21vZGUgPVxuICAgIG0gZmlsbF9tb2RlIH5mOihmdW4gZiAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgRm9yd2FyZHMgLT4gXCJmb3J3YXJkc1wiXG4gICAgICAgIHwgYEJhY2t3YXJkcyAtPiBcImJhY2t3YXJkc1wiXG4gICAgICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZmlsbC1tb2RlXCIgfnZhbHVlKVxuICBpblxuICBbIFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLW5hbWVcIiB+dmFsdWU6bmFtZSlcbiAgOyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kdXJhdGlvblwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgZHVyYXRpb24pKVxuICA7IG0gZGVsYXkgfmY6KGZ1biBzIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRlbGF5XCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBzKSlcbiAgOyBtIGl0ZXJfY291bnQgfmY6KGZ1biBpIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gIDsgbSB0aW1pbmdfZnVuY3Rpb24gfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgfnZhbHVlKVxuICA7IGRpcmVjdGlvblxuICA7IGZpbGxfbW9kZVxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbnR5cGUgdXNlcl9zZWxlY3QgPVxuICBbIGBBbGxcbiAgfCBgQXV0b1xuICB8IGBOb25lXG4gIHwgYFRleHRcbiAgXVxuXG5sZXQgdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEFsbCAtPiBcImFsbFwiXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBUZXh0IC0+IFwidGV4dFwiXG47O1xuXG5sZXQgdXNlcl9zZWxlY3QgcyA9XG4gIGxldCB2YWx1ZSA9IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgcyBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInVzZXItc2VsZWN0XCIgfnZhbHVlXG47O1xuXG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcInRvX3N0cmluZ19jc3MgLT4gb2Zfc3RyaW5nX2Nzc19leG4gLT4gdG9fc3RyaW5nX2Nzc1wiID1cbiAgICAgIGxldCB0IGNzcyA9XG4gICAgICAgIGxldCBzID0gdG9fc3RyaW5nX2NzcyBjc3MgaW5cbiAgICAgICAgbGV0IHMyID0gdG9fc3RyaW5nX2NzcyAob2Zfc3RyaW5nX2Nzc19leG4gcykgaW5cbiAgICAgICAgcHJpbnRfZW5kbGluZSBzO1xuICAgICAgICBwcmludF9lbmRsaW5lIHMyXG4gICAgICBpblxuICAgICAgdCAoZmxleF9pdGVtIH5ncm93OjEuMCAoKSBAPiBvdmVyZmxvdyBgU2Nyb2xsKTtcbiAgICAgIHQgKGZsZXhfY29udGFpbmVyIH5pbmxpbmU6dHJ1ZSB+ZGlyZWN0aW9uOmBDb2x1bW4gKCkgQD4gYm9yZGVyIH5zdHlsZTpgRGFzaGVkICgpKTtcbiAgICAgIHQgKGNvbG9yIChgUkdCQSAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjEwMCB+YjoxMDAgKCkpKSk7XG4gICAgICB0XG4gICAgICAgIChjb2xvclxuICAgICAgICAgICAoYEhTTEFcbiAgICAgICAgICAgICAgKENvbG9yLkhTTEEuY3JlYXRlXG4gICAgICAgICAgICAgICAgIH5oOjEwMFxuICAgICAgICAgICAgICAgICB+czooUGVyY2VudC5vZl9tdWx0IDAuNzUpXG4gICAgICAgICAgICAgICAgIH5sOihQZXJjZW50Lm9mX211bHQgMC42MClcbiAgICAgICAgICAgICAgICAgKCkpKSk7XG4gICAgICB0IChjcmVhdGUgfmZpZWxkOlwiY29udGVudFwiIH52YWx1ZTp7fFwiO1wifH0pO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29udGVudDogXCI7XCJcbiAgICBjb250ZW50OiBcIjtcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZ3JhZGllbnRzXCIgPVxuICAgICAgbGV0IHAgeCA9IFBlcmNlbnQub2ZfbXVsdCB4IGluXG4gICAgICBsZXQgYyBzID0gYE5hbWUgcyBpblxuICAgICAgbGV0IHQgY3NzID0gcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nX2NzcyBjc3MpIGluXG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgTGluZWFyX2dyYWRpZW50XG4gICAgICAgICAgICAgIHsgZGlyZWN0aW9uID0gYERlZyA5MFxuICAgICAgICAgICAgICA7IHN0b3BzID1cbiAgICAgICAgICAgICAgICAgIFsgcCAwLiwgYyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjIsIGMgXCIjZmYwMDAwXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjQsIGMgXCJyZWRcIlxuICAgICAgICAgICAgICAgICAgOyAoIHAgMS5cbiAgICAgICAgICAgICAgICAgICAgLCBgUkdCQVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+Zzo1MCB+YjozMCB+YTooUGVyY2VudC5vZl9tdWx0IDAuNzUpICgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgYmxhY2sgMC4wMDAwMDAlLCAjZmYwMDAwIDIwLjAwMDAwMCUsIHJlZCA0MC4wMDAwMDAlLCByZ2JhKDEwMCw1MCwzMCwwLjc1KSAxMDAuMDAwMDAwJSkgfH1dO1xuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzID0gWyBwIDAuLCBjIFwiYmxhY2tcIjsgcCAxLiwgYyBcInJlZFwiIF0gfSkpO1xuICAgICAgWyVleHBlY3Qge3wgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGJsYWNrIDAuMDAwMDAwJSwgcmVkIDEwMC4wMDAwMDAlKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogVGhlIGdlbl9qc19hcGkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1saWtlIGxpY2Vuc2UuICAgICAqKVxuKCogU2VlIHRoZSBhdHRhY2hlZCBMSUNFTlNFIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogQ29weXJpZ2h0IDIwMTUgYnkgTGV4aUZpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuXG4oKiBUaGlzIG1vZHVsZSAobW9zdGx5KSBhYnN0cmFjdHMgYXdheSBmcm9tIGpzX29mX29jYW1sIGVuY29kaW5nIG9mXG4gICBPQ2FtbCB2YWx1ZXMuICBJdCBzZXJ2ZXMgYXMgYSBzdXBwb3J0IGxpYnJhcnkgZm9yIHRoZSBjb2RlIGdlbmVyYXRlZFxuICAgYnkgZ2VuX2pzX2FwaS5cblxuICAgVGhlIG1vZHVsZSBjb3VsZCBtb3N0bHkgYmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIGpzX29mX29jYW1sJ3MgSnMgbW9kdWxlXG4gICAoYW5kIGluIHBhcnRpY3VsYXIgSnMuVW5zYWZlKSwgYnV0IHdlIHByZWZlciB0byBkcm9wIHRoZSBkZXBlbmRlbmN5XG4gICB0byBqc19vZl9vY2FtbCdzIGxpYnJhcnkgYW5kIHRvIHJlbHkgb25seSBvbiBpdHMgY29tcGlsZXIgYW5kIEpTXG4gICBydW50aW1lIGNvZGUuXG4qKVxuXG5cbnR5cGUgdFxuXG5leHRlcm5hbCB0X29mX2pzOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X3RvX2pzOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIHN0cmluZ19vZl9qczogdCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHN0cmluZ190b19qczogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnRfb2ZfanM6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaW50X3RvX2pzOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuZXh0ZXJuYWwgYm9vbF9vZl9qczogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgYm9vbF90b19qczogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX2pzOiB0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZmxvYXRfdG9fanM6IGZsb2F0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIG9iajogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuZXh0ZXJuYWwgdmFyaWFibGU6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX3ZhclwiXG5cbmV4dGVybmFsIGdldDogdCAtPiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0OiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZTogdCAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG5leHRlcm5hbCBnZXRfcHJvcDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldF9wcm9wOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGVfcHJvcDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuZXh0ZXJuYWwgZ2V0X3Byb3BfYXNjaWk6IHQgLT4gc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldF9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZV9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbmV4dGVybmFsIGludGVybmFsX3R5cGVfb2Y6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxubGV0IHR5cGVfb2YgeCA9IHN0cmluZ19vZl9qcyAoaW50ZXJuYWxfdHlwZV9vZiB4KVxuXG5leHRlcm5hbCBpbnRlcm5hbF9pbnN0YW5jZV9vZjogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5sZXQgaW5zdGFuY2Vfb2YgeCB+Y29uc3RyID0gYm9vbF9vZl9qcyAoaW50ZXJuYWxfaW5zdGFuY2Vfb2YgeCBjb25zdHIpXG5cbmV4dGVybmFsIHB1cmVfanNfZXhwcjogc3RyaW5nIC0+IHQgPSBcImNhbWxfcHVyZV9qc19leHByXCJcbmxldCBudWxsID0gcHVyZV9qc19leHByIFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuZXh0ZXJuYWwgZXF1YWxzOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG5sZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiam9vX2dsb2JhbF9vYmplY3RcIlxuXG5leHRlcm5hbCBuZXdfb2JqOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG5leHRlcm5hbCBjYWxsOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcbmV4dGVybmFsIGFwcGx5OiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbmxldCBhcnJheV9tYWtlIG4gPSBuZXdfb2JqIChnZXRfcHJvcF9hc2NpaSBnbG9iYWwgXCJBcnJheVwiKSBbfGludF90b19qcyBufF1cbmxldCBhcnJheV9nZXQgdCBpID0gZ2V0X3Byb3AgdCAoaW50X3RvX2pzIGkpXG5sZXQgYXJyYXlfc2V0IHQgaSB4ID0gc2V0X3Byb3AgdCAoaW50X3RvX2pzIGkpIHhcblxubGV0IGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0ID1cbiAgbGV0IG4gPSBpbnRfb2ZfanMgKGdldF9wcm9wX2FzY2lpIG9ianMgXCJsZW5ndGhcIikgaW5cbiAgQXJyYXkuaW5pdCAobiAtIHN0YXJ0KSAoZnVuIGkgLT4gZiAoYXJyYXlfZ2V0IG9ianMgKHN0YXJ0ICsgaSkpKVxuXG5sZXQgYXJyYXlfb2ZfanMgZiBvYmpzID0gYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgMFxuXG5sZXQgYXJyYXlfdG9fanMgZiBhcnIgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgbGV0IGEgPSBhcnJheV9tYWtlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgYXJyYXlfc2V0IGEgaSAoZiBhcnIuKGkpKVxuICBkb25lO1xuICBhXG5cbmxldCBsaXN0X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0ID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgc3RhcnQpXG5cbmxldCBsaXN0X29mX2pzIGYgb2JqcyA9IGxpc3Rfb2ZfanNfZnJvbSBmIG9ianMgMFxuXG5sZXQgbGlzdF90b19qcyBmIGwgPVxuICBhcnJheV90b19qcyBmIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBvcHRpb25fb2ZfanMgZiB4ID1cbiAgaWYgZXF1YWxzIHggbnVsbCB8fCB4ID09IHVuZGVmaW5lZCB0aGVuIE5vbmVcbiAgZWxzZSBTb21lIChmIHgpXG5cbmxldCBvcHRpb25fdG9fanMgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gbnVsbFxuXG5sZXQgdW5pdF90b19qcyAoKSA9IHVuZGVmaW5lZFxubGV0IHVuaXRfb2ZfanMgXyA9ICgpXG5cbmNsYXNzIG9iaiAoeDp0KSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0b19qcyA9IHhcbiAgZW5kXG5cbmV4dGVybmFsIGZ1bl90b19qczogaW50IC0+ICh0IC0+ICdhKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcbmV4dGVybmFsIGZ1bl90b19qc19hcmdzOiAodCAtPiAnYSkgLT4gdCA9IFwiY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzXCJcblxubGV0IGhhc19wcm9wZXJ0eSBvIHggPVxuICB0eXBlX29mIG8gPSBcIm9iamVjdFwiICYmIG8gIT0gbnVsbFxuICAmJiBnZXRfcHJvcCBvIChzdHJpbmdfdG9fanMgeCkgIT0gdW5kZWZpbmVkXG5cbmV4dGVybmFsIG5ld19vYmpfYXJyOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbmxldCBlbXB0eV9vYmogKCkgPSBuZXdfb2JqIChnZXRfcHJvcF9hc2NpaSBnbG9iYWwgXCJPYmplY3RcIikgW3x8XVxuXG5leHRlcm5hbCBpdGVyX3Byb3BlcnRpZXNfdW50eXBlZCA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXNcIlxubGV0IGl0ZXJfcHJvcGVydGllcyB4IGYgPVxuICBpdGVyX3Byb3BlcnRpZXNfdW50eXBlZCB4IChmdW5fdG9fanMgMSAoZnVuIHggLT4gZiAoc3RyaW5nX29mX2pzIHgpKSlcblxubGV0IGFwcGx5X2FyciBvIGFyciA9IGNhbGwgbyBcImFwcGx5XCIgW3wgbnVsbDsgYXJyIHxdXG5sZXQgY2FsbF9hcnIgbyBzIGFyciA9IGNhbGwgKGdldF9wcm9wIG8gKHN0cmluZ190b19qcyBzKSkgXCJhcHBseVwiIFt8IG87IGFyciB8XVxuXG5sZXQgaXNfbnVsbCB4ID1cbiAgZXF1YWxzIHggbnVsbFxuXG5sZXQgb2JqX3R5cGUgeCA9XG4gIHN0cmluZ19vZl9qcyAoY2FsbCAocHVyZV9qc19leHByIFwiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1wiKSBcImNhbGxcIiBbfHh8XSlcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIGpzIDo9IHRcbiAgdHlwZSB0XG4gIHZhbCB0X3RvX2pzIDogdCAtPiBqc1xuICB2YWwgdF9vZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG4oKiBPanMuVCBpbnN0YW5jZXMgZm9yIGJ1aWx0LWluIHR5cGVzICopXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgdF90b19qcyA9IGludF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGludF9vZl9qc1xuIGVuZFxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRfdG9fanMgPSBzdHJpbmdfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBzdHJpbmdfb2ZfanNcbmVuZFxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbFxuICBsZXQgdF90b19qcyA9IGJvb2xfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBib29sX29mX2pzXG5lbmRcbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdF90b19qcyA9IGZsb2F0X3RvX2pzXG4gIGxldCB0X29mX2pzID0gZmxvYXRfb2ZfanNcbmVuZFxubW9kdWxlIEFycmF5IChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgYXJyYXlcbiAgbGV0IHRfdG9fanMgPSBhcnJheV90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBhcnJheV9vZl9qcyBBLnRfb2ZfanNcbmVuZFxubW9kdWxlIExpc3QgKEE6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IEEudCBsaXN0XG4gIGxldCB0X3RvX2pzID0gbGlzdF90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBsaXN0X29mX2pzIEEudF9vZl9qc1xuZW5kXG5tb2R1bGUgT3B0aW9uIChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgb3B0aW9uXG4gIGxldCB0X3RvX2pzID0gb3B0aW9uX3RvX2pzIEEudF90b19qc1xuICBsZXQgdF9vZl9qcyA9IG9wdGlvbl9vZl9qcyBBLnRfb2ZfanNcbmVuZFxuIiwiKCogVGhlIGdlbl9qc19hcGkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1saWtlIGxpY2Vuc2UuICAgICAqKVxuKCogU2VlIHRoZSBhdHRhY2hlZCBMSUNFTlNFIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogQ29weXJpZ2h0IDIwMTUgYnkgTGV4aUZpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuXG50eXBlIHQgPSBKc29vX3J1bnRpbWUuRXJyb3IudFxuXG5leHRlcm5hbCBjb2VyY2UgOiB0IC0+IE9qcy50ID0gXCIlaWRlbnRpdHlcIlxubGV0IG5hbWUgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwibmFtZVwiKVxubGV0IG1lc3NhZ2UgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwibWVzc2FnZVwiKVxubGV0IHN0YWNrIHggPSBPanMub3B0aW9uX29mX2pzIE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwic3RhY2tcIilcbmxldCB0b19zdHJpbmcgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5jYWxsIChjb2VyY2UgeCkgXCJ0b1N0cmluZ1wiIFt8fF0pXG5cbmV4Y2VwdGlvbiBFcnJvciA9IEpzb29fcnVudGltZS5FcnJvci5FeG5cblxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgeCAtPiBTb21lICh0b19zdHJpbmcgeClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgdG9fanNfc3RyaW5nIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvU3RyaW5nXG5sZXQgdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0ZpeGVkIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvUHJlY2lzaW9uIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0V4cG9uZW50aWFsXG5sZXQgdG9fc3RyaW5nIHZhbHVlID0gdG9fanNfc3RyaW5nIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBvcGVuIENvcmUgaW5cbiAgbGV0IHByaW50IGYgPSBwcmludGYgXCIlc1wiICh0b19zdHJpbmcgZikgaW5cbiAgcHJpbnQgMS47XG4gIFslZXhwZWN0IHt8IDEgfH1dO1xuICBwcmludCBGbG9hdC5uYW47XG4gIFslZXhwZWN0IHt8IE5hTiB8fV07XG4gIHByaW50IEZsb2F0LmluZmluaXR5O1xuICBbJWV4cGVjdCB7fCBJbmZpbml0eSB8fV07XG4gIHByaW50IEZsb2F0Lm5lZ19pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgLUluZmluaXR5IHx9XTtcbiAgcHJpbnQgMC4wMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMWUtOCB8fV07XG4gIHByaW50ICgtMS4pO1xuICBbJWV4cGVjdCB7fCAtMSB8fV07XG4gIHByaW50IDEuMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMS4wMDAwMDAxIHx9XVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuaW5jbHVkZSBVaV9lZmZlY3RcblxuKCogQWxsIHZpc2liaWxpdHkgaGFuZGxlcnMgc2VlIGFsbCBldmVudHMsIHNvIGEgc2ltcGxlIGxpc3QgaXMgZW5vdWdoLiAgKilcbmxldCB2aXNpYmlsaXR5X2hhbmRsZXJzIDogKHVuaXQgLT4gdW5pdCkgbGlzdCByZWYgPSByZWYgW11cblxubW9kdWxlIHR5cGUgVmlzaWJpbGl0eV9oYW5kbGVyID0gc2lnXG4gIHZhbCBoYW5kbGUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgRGVmaW5lX3Zpc2liaWxpdHkgKFZIIDogVmlzaWJpbGl0eV9oYW5kbGVyKSA9IHN0cnVjdFxuICBsZXQgKCkgPSB2aXNpYmlsaXR5X2hhbmRsZXJzIDo9IFZILmhhbmRsZSA6OiAhdmlzaWJpbGl0eV9oYW5kbGVyc1xuZW5kXG5cbnR5cGUgXyB0ICs9XG4gIHwgVmlld3BvcnRfY2hhbmdlZFxuICB8IFN0b3BfcHJvcGFnYXRpb25cbiAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvblxuICB8IFByZXZlbnRfZGVmYXVsdFxuXG5sZXQgc2VxdWVuY2VfYXNfc2libGluZyBsZWZ0IH51bmxlc3Nfc3RvcHBlZCA9XG4gIGxldCByZWMgY29udGFpbnNfc3RvcCA9IGZ1bmN0aW9uXG4gICAgfCBNYW55IGVzIC0+IExpc3QuZXhpc3RzIGVzIH5mOmNvbnRhaW5zX3N0b3BcbiAgICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgY29udGFpbnNfc3RvcCBsZWZ0IHRoZW4gbGVmdCBlbHNlIFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgdW5sZXNzX3N0b3BwZWQgKCkgXVxuOztcblxuKCogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRvbSBldmVudCBoZXJlIHNvIHRoYXRcbiAgIG1vdmVtZW50IGJldHdlZW4gW1Zkb20uRWZmZWN0LkV4cGVydC5oYW5kbGVdIGFuZFxuICAgW1VpX2NvbmNyZXRlLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBrZWVwcyB0aGUgb3JpZ2luYWxcbiAgIGRvbSBldmVudCBhcm91bmQuICopXG5sZXQgY3VycmVudF9kb21fZXZlbnQgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OkNhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBWaWV3cG9ydF9jaGFuZ2VkKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gTGlzdC5pdGVyICF2aXNpYmlsaXR5X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmICgpKSlcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6Q2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgUHJldmVudF9kZWZhdWx0KSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbS5wcmV2ZW50RGVmYXVsdClcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biA9IEV4cGVydC5oYW5kbGVcblxuICBsZXQgaGFuZGxlIGRvbV9ldmVudCBldmVudCA9XG4gICAgbGV0IG9sZCA9ICFjdXJyZW50X2RvbV9ldmVudCBpblxuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IFNvbWUgKGRvbV9ldmVudCA6PiBEb21faHRtbC5lbGVtZW50IERvbS5ldmVudCBKcy50KTtcbiAgICBFeHBlcnQuaGFuZGxlIGV2ZW50O1xuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IG9sZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG5tb2R1bGUgdHlwZSBTID0gSG9va3NfaW50Zi5TXG5cbmxldCBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGlkID0gRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBpZFxuXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgZiA9XG4gIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIChKcy53cmFwX2NhbGxiYWNrIGYpXG47O1xuXG5tb2R1bGUgRXh0cmEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgeyB0eXBlX2lkOyB2YWx1ZSB9KSA9IFR5cGVfZXF1YWwuSWQudG9fc2V4cCB0eXBlX2lkIHZhbHVlXG5lbmRcblxudHlwZSB0ID1cbiAgfCBUIDpcbiAgICAgIHsgaW5wdXQgOiAnaW5wdXRcbiAgICAgIDsgaW5wdXRfaWQgOiAnaW5wdXQgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGNvbWJpbmVfaW5wdXRzIDogJ2lucHV0IC0+ICdpbnB1dCAtPiAnaW5wdXRcbiAgICAgIDsgaW5pdCA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgdXBkYXRlIDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IGRlc3Ryb3kgOlxuICAgICAgICAgICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gdW5pdFxuICAgICAgOyBpZCA6ICgnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZSkgQ29yZS5UeXBlX2VxdWFsLklkLnRcbiAgICAgIH1cbiAgICAgIC0+IHRcblxubGV0IGdlbmVyaWNfaG9vayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJHZW5lcmljSG9va1wiKSlcblxubGV0IG1ha2VfaG9vayB+Y29tYmluZV9pbnB1dHMgfmluaXQgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpIH51cGRhdGUgfmRlc3Ryb3kgfmlkID1cbiAgVCB7IGluaXQ7IGNvbWJpbmVfaW5wdXRzOyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfVxuOztcblxubGV0IHBhY2sgKFQgeyBpbml0OyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQ7IF8gfSkgPVxuICBsZXQgd3JhcCBhID0gYSB8PiBKcy53cmFwX2NhbGxiYWNrIHw+IEpzLlVuc2FmZS5pbmplY3QgaW5cbiAgbGV0IGluaXQgPSB3cmFwIChpbml0IGlucHV0KSBpblxuICBsZXQgdXBkYXRlID0gd3JhcCAodXBkYXRlIGlucHV0KSBpblxuICBsZXQgZGVzdHJveSA9IHdyYXAgZGVzdHJveSBpblxuICBsZXQgZ2VuZXJpY19ob29rID0gTGF6eS5mb3JjZSBnZW5lcmljX2hvb2sgaW5cbiAgbGV0IGV4dHJhID0gRXh0cmEuVCB7IHR5cGVfaWQgPSBpbnB1dF9pZDsgdmFsdWUgPSBpbnB1dCB9IGluXG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIGdlbmVyaWNfaG9va1xuICAgIFt8IGluaXQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfD4gSnMuVW5zYWZlLmluamVjdDsgZXh0cmEgfD4gSnMuVW5zYWZlLmluamVjdCB8XVxuOztcblxubGV0IGNvbWJpbmUgKFQgbGVmdCkgKFQgcmlnaHQpID1cbiAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbGVmdC5pbnB1dF9pZCByaWdodC5pbnB1dF9pZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGVwcmludF9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJob29rcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLCBzbyB0aGV5IGNhbm5vdCBiZSBjb21iaW5lZDsgdGFraW5nIHRoZSBzZWNvbmQgXFxcbiAgICAgICAgIG9mIHRoZSB0d29cIl07XG4gICAgVCByaWdodFxuICB8IFNvbWUgVCAtPiBUIHsgcmlnaHQgd2l0aCBpbnB1dCA9IHJpZ2h0LmNvbWJpbmVfaW5wdXRzIGxlZnQuaW5wdXQgcmlnaHQuaW5wdXQgfVxuOztcblxubW9kdWxlIE1ha2UgKFMgOiBTKSA9IHN0cnVjdFxuICBsZXQgaW5wdXRfYW5kX3N0YXRlX2lkID1cbiAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIChmdW4gKGlucHV0LCBfYW5pbWF0aW9uX2lkLCBzdGF0ZSkgLT5cbiAgICAgIFslc2V4cF9vZjogUy5JbnB1dC50ICogb3BhcXVlXSAoaW5wdXQsIHN0YXRlKSlcbiAgOztcblxuICBsZXQgaW5wdXRfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIFMuSW5wdXQuc2V4cF9vZl90XG5cbiAgbGV0IGluaXQgaW5wdXQgZWxlbWVudCA9XG4gICAgbGV0IHN0YXRlID0gUy5pbml0IGlucHV0IGVsZW1lbnQgaW5cbiAgICBsZXQgYW5pbWF0aW9uX2lkID1cbiAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIChmdW4gXyAtPiBTLm9uX21vdW50IGlucHV0IHN0YXRlIGVsZW1lbnQpXG4gICAgaW5cbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgaW5wdXQgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgUy51cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmlucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgZGVzdHJveSAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGFuaW1hdGlvbl9pZDtcbiAgICBTLmRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnRcbiAgOztcblxuICBsZXQgY3JlYXRlIGlucHV0ID1cbiAgICBtYWtlX2hvb2tcbiAgICAgIH5leHRyYTooaW5wdXQsIGlucHV0X2lkKVxuICAgICAgfmNvbWJpbmVfaW5wdXRzOlMuSW5wdXQuY29tYmluZVxuICAgICAgfmlkOmlucHV0X2FuZF9zdGF0ZV9pZFxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGVcbiAgICAgIH5kZXN0cm95XG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHR5cGVfaWQgPSBpbnB1dF9pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4dHJhID0gRXh0cmFcbmVuZFxuIiwiW0BAQGpzLmR1bW15IFwiISEgVGhpcyBjb2RlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5fanNfYXBpICEhXCJdXG5bQEBAb2NhbWwud2FybmluZyBcIi03LTMyLTM5XCJdXG5vcGVuISBKc19vZl9vY2FtbFxub3BlbiEgR2VuX2pzX2FwaVxudHlwZSAoJ2EsICdiKSB0ID0gT2pzLnRcbmxldCByZWMgdF9vZl9qcyA6XG4gICdhICdiIC4gKE9qcy50IC0+ICdhKSAtPiAoT2pzLnQgLT4gJ2IpIC0+IE9qcy50IC0+ICgnYSwgJ2IpIHQgPSBmdW4gKHR5cGVcbiAgX19hKSAtPiBmdW4gKHR5cGUgX19iKSAtPlxuICBmdW4gKF9fYV9vZl9qcyA6IE9qcy50IC0+IF9fYSkgLT5cbiAgICBmdW4gKF9fYl9vZl9qcyA6IE9qcy50IC0+IF9fYikgLT4gZnVuICh4MiA6IE9qcy50KSAtPiB4MlxuYW5kIHRfdG9fanMgOiAnYSAnYiAuICgnYSAtPiBPanMudCkgLT4gKCdiIC0+IE9qcy50KSAtPiAoJ2EsICdiKSB0IC0+IE9qcy50ID1cbiAgZnVuICh0eXBlIF9fYSkgLT4gZnVuICh0eXBlIF9fYikgLT5cbiAgZnVuIChfX2FfdG9fanMgOiBfX2EgLT4gT2pzLnQpIC0+XG4gICAgZnVuIChfX2JfdG9fanMgOiBfX2IgLT4gT2pzLnQpIC0+IGZ1biAoeDEgOiBPanMudCkgLT4geDFcbmxldCAoY3JlYXRlIDogdW5pdCAtPiAoJ2EsICdiKSB0KSA9XG4gIGZ1biAoKSAtPlxuICAgIHRfb2ZfanMgT2JqLm1hZ2ljIE9iai5tYWdpY1xuICAgICAgKE9qcy5uZXdfb2JqIChPanMuZ2V0X3Byb3BfYXNjaWkgT2pzLmdsb2JhbCBcIk1hcFwiKSBbfHxdKVxubGV0IChzZXQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIC0+IHVuaXQpID1cbiAgZnVuICh4NyA6ICgnYSwgJ2IpIHQpIC0+XG4gICAgZnVuICh4NSA6ICdhKSAtPlxuICAgICAgZnVuICh4NiA6ICdiKSAtPlxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4NykgXCJzZXRcIlxuICAgICAgICAgICAgIFt8KE9iai5tYWdpYyB4NSk7KE9iai5tYWdpYyB4Nil8XSlcbmxldCAoZ2V0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiBvcHRpb24pID1cbiAgZnVuICh4MTEgOiAoJ2EsICdiKSB0KSAtPlxuICAgIGZ1biAoeDEwIDogJ2EpIC0+XG4gICAgICBPanMub3B0aW9uX29mX2pzIE9iai5tYWdpY1xuICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4MTEpIFwiZ2V0XCIgW3woT2JqLm1hZ2ljIHgxMCl8XSlcbmxldCAoZGVsZXRlIDogKCdhLCAnYikgdCAtPiAnYSAtPiB1bml0KSA9XG4gIGZ1biAoeDE2IDogKCdhLCAnYikgdCkgLT5cbiAgICBmdW4gKHgxNSA6ICdhKSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChPanMuY2FsbCAodF90b19qcyBPYmoubWFnaWMgT2JqLm1hZ2ljIHgxNikgXCJkZWxldGVcIlxuICAgICAgICAgICBbfChPYmoubWFnaWMgeDE1KXxdKVxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEdlbl9qc19hcGlcblxubW9kdWxlIE5hdGl2ZV9ub2RlIDogc2lnXG4gIHR5cGUgdCA9IERvbV9odG1sLmVsZW1lbnQgSnMudFxuXG4gIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBEb21faHRtbC5lbGVtZW50IEpzLnRcblxuICBsZXQgdF9vZl9qcyB4ID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCB0X3RvX2pzIHggPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmVuZFxuXG5tb2R1bGUgQXR0cnMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICB2YWwgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaGFzX2F0dHJpYnV0ZSA6IHQgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IE9qcy50IC0+IHVuaXRcbiAgdmFsIHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiBPanMudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gT2pzLnRcblxuICBsZXQgdF9vZl9qcyB4ID0geFxuICBsZXQgdF90b19qcyB4ID0geFxuICBsZXQgY3JlYXRlICgpIDogdCA9IE9qcy5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IE9qcy5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IE9qcy5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIE9qcy5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIE9qcy5oYXNfcHJvcGVydHkgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSAoT2pzLnZhcmlhYmxlIFwidW5kZWZpbmVkXCIpXG4gICAgICB0aGVuIE9qcy5zZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiIChPanMuZW1wdHlfb2JqICgpKTtcbiAgICAgIE9qcy5zZXRfcHJvcF9hc2NpaSAoT2pzLmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIG5hbWUgdmFsdWVcbiAgOztcbmVuZFxuXG5tb2R1bGUgRWxlbWVudF9hcnJheSA9IHN0cnVjdFxuICAoKiBUaGlzIHR5cGUgbXVzdCBvbmx5IGJlIGluc3RhbnRpYXRlZCB3aXRoIE5vZGUudCBhcyB0aGVcbiAgICAgdHlwZSBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBpZ25vcmVzIHRoZSBpbm5lci1tb3N0IGNvbnZlcnNpb25cbiAgICAgZnVuY3Rpb24uICBUaGlzIGlzIHNhZmUgYmVjYXVzZSBOb2RlLnQgaXMgZGVmaW5lZCBhcyBPanMudCxcbiAgICAgYnV0IHdlIGNhbid0IHRha2UgYWR2YW50YWdlIG9mIHRoYXQgZmFjdCBiZWNhdXNlIHRoZSBOb2RlXG4gICAgIG1vZHVsZSBpcyBnZW5lcmF0ZWQgdmlhIHBweC4gKilcblxuICB0eXBlICdhIHQgPSAnYSBKc19vZl9vY2FtbC5Kcy5qc19hcnJheSBKcy50XG5cbiAgbGV0IHRfb2ZfanMgOiBfIC0+IE9qcy50IC0+ICdhIHQgPSBmdW4gXyAtPiBDYW1sLk9iai5tYWdpY1xuICBsZXQgdF90b19qcyA6IF8gLT4gJ2EgdCAtPiBPanMudCA9IGZ1biBfIC0+IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubW9kdWxlIE5vZGUgPVxuICBbJWpzOlxuICAgIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICAgIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICAgIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuXG4gICAgdmFsIG5vZGUgOiBzdHJpbmcgLT4gQXR0cnMudCAtPiB0IEVsZW1lbnRfYXJyYXkudCAtPiBzdHJpbmcgb3B0aW9uIC0+IHRcbiAgICBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLlZOb2RlXCJdXG5cbiAgICB2YWwgdGV4dCA6IHN0cmluZyAtPiB0IFtAQGpzLm5ldyBcIlZpcnR1YWxEb20uVlRleHRcIl1cblxuICAgIHZhbCBzdmcgOiBzdHJpbmcgLT4gQXR0cnMudCAtPiB0IEVsZW1lbnRfYXJyYXkudCAtPiBzdHJpbmcgb3B0aW9uIC0+IHRcbiAgICBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLnN2Z1wiXVxuXG4gICAgdmFsIHRvX2RvbSA6IHQgLT4gTmF0aXZlX25vZGUudCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLmNyZWF0ZUVsZW1lbnRcIl1dXG5cbm1vZHVsZSBQYXRjaCA9XG4gIFslanM6XG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gICAgdmFsIHRfb2ZfanMgOiBPanMudCAtPiB0XG4gICAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG4gICAgdmFsIGNyZWF0ZSA6IHByZXZpb3VzOk5vZGUudCAtPiBjdXJyZW50Ok5vZGUudCAtPiB0IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20uZGlmZlwiXVxuICAgIHZhbCBhcHBseSA6IE5hdGl2ZV9ub2RlLnQgLT4gdCAtPiBOYXRpdmVfbm9kZS50IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20ucGF0Y2hcIl1cblxuICAgIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICAgIFtAQGpzLmN1c3RvbVxuICAgICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICAgICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICAgICAgaW5cbiAgICAgICAgZnVuICh0IDogdCkgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIGYgW3wgSnMuVW5zYWZlLmluamVjdCB0IHxdIHw+IEpzLnRvX2Jvb2xcbiAgICAgIDs7XV1cblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9XG4gICAgb2JqZWN0XG4gICAgICBjb25zdHJhaW50ICdlbGVtZW50ID0gI0RvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgKCogdmlydHVhbC1kb20gY29uc2lkZXJzIHR3byB3aWRnZXRzIG9mIGJlaW5nIG9mIHRoZSBzYW1lIFwia2luZFwiIGlmIGVpdGhlclxuICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBob2xkczpcblxuICAgICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgICAgKEkgdGhpbmsgdGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB2aXJ0dWFsLWRvbSBhbmQgaGF2ZSBmaWVsZCBhbiBpc3N1ZVxuICAgICAgICAgb24gZ2l0aHViOiBbaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9pc3N1ZXMvMzgwXSlcblxuICAgICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgICB3aWRnZXRzIGluIHRoZSB1c3VhbCBzdHlsZSBpbiBKYXZhc2NyaXB0LCBzaW5jZSB0aGUgW2luaXRdIG1ldGhvZCB3aWxsIGJlIGRlZmluZWRcbiAgICAgICAgIG9uIGEgcHJvdG90eXBlLCBidXQgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nIGFzIGl0IGlzIHJlZGVmaW5lZCBmb3IgZWFjaFxuICAgICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgICAgU28sIHdlIGdvIHdpdGggb3B0aW9uIDEgYW5kIG11c3QgaGF2ZSBhIHRyaXZpYWwgZmllbGQgY2FsbGVkIFtuYW1lXS5cbiAgICAgICopXG4gICAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICAgIG1ldGhvZCBpZCA6ICgncyAqICdlbGVtZW50KSBUeXBlX2VxdWFsLklkLnQgSnMucHJvcFxuICAgICAgbWV0aG9kIHN0YXRlIDogJ3MgSnMucHJvcFxuICAgICAgbWV0aG9kIGluZm8gOiBTZXhwLnQgTGF6eS50IG9wdGlvbiBKcy5wcm9wXG4gICAgICBtZXRob2QgZGVzdHJveSA6ICgnZWxlbWVudCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICAgKCgnb3RoZXJfc3RhdGUsICdvdGhlcl9lbGVtZW50KSB3aWRnZXQgSnMudCAtPiAnZWxlbWVudCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2tcbiAgICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICAgIGVuZFxuXG4gICgqIFdlIG1vZGVsIEpTIGxldmVsIG9iamVjdHMgaGVyZSBzbyB0aGVyZSBpcyBhIGxvdCBvZiB0aHJvd2luZyBhd2F5IG9mIHR5cGVcbiAgICAgaW5mb3JtYXRpb24uICBXZSBjb3VsZCBwb3NzaWJseSB0cnkgdG8gcmVkaXNjb3ZlciBtb3JlIG9mIGl0LiAgT3IgbWF5YmUgd2VcbiAgICAgc2hvdWxkIHNlZSBpZiB3ZSBjYW4gZ2V0IHJpZCBXaWRnZXQgY29tcGxldGVseS5cbiAgICAgdGhlIHVuaXQgdHlwZSBwYXJhbWV0ZXJzIGhlcmUgYXJlIG5vdCBhY3R1YWxseSB1bml0LCBidXQgcGFydCBvZlxuICAgICB0aGUgdHlwZSBpbmZvIHdlIGhhdmUgdGhyb3duIGF3YXkgaW50byBvdXIgZGFuY2VcbiAgICAgd2l0aCBKUyAqKVxuICB0eXBlIHQgPSBOb2RlLnRcblxuICAoKiBoZXJlIGlzIGhvdyB3ZSB0aHJvdyBhd2F5IHR5cGUgaW5mb3JtYXRpb24uICBPdXIgZ29vZCBvbGQgZnJpZW5kIE9iai5tYWdpYyxcbiAgICAgYnV0IGNvbnN0cmFpbmVkIGEgbGl0dGxlIGJpdCAqKVxuICBleHRlcm5hbCBvanNfb2ZfanMgOiAoXywgXykgd2lkZ2V0IEpzLnQgLT4gT2pzLnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIFN0YXRlX2tlZXBlciA9IHN0cnVjdFxuICAgIHR5cGUgYm94ID0gVCA6ICgnYSAqIF8pIFR5cGVfZXF1YWwuSWQudCAqICdhIC0+IGJveFxuXG4gICAgbGV0IHQgOiAoSnMuVW5zYWZlLmFueSwgYm94KSBKc19tYXAudCA9IEpzX21hcC5jcmVhdGUgKClcbiAgICBsZXQgc2V0IH5pZCBlbGVtZW50IHN0YXRlID0gSnNfbWFwLnNldCB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpIChUIChpZCwgc3RhdGUpKVxuXG4gICAgbGV0IGdldCA6IHR5cGUgYSBiLiBpZDooYSAqIGIpIFR5cGVfZXF1YWwuSWQudCAtPiBfIC0+IGEgPVxuICAgICAgZnVuIH5pZCBlbGVtZW50IC0+XG4gICAgICBsZXQgZWxlbWVudCA9IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCBpblxuICAgICAgbWF0Y2ggSnNfbWFwLmdldCB0IGVsZW1lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZF9zZXhwID0gVHlwZV9lcXVhbC5JZC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIpIGlkIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBlbGVtZW50IHN0YXRlIG5vdCBmb3VuZFwiIChpZF9zZXhwIDogU2V4cC50KV1cbiAgICAgIHwgU29tZSAoVCAoZl9pZCwgc3RhdGUpKSAtPlxuICAgICAgICBsZXQgVCA9IFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBpZCBmX2lkIGluXG4gICAgICAgIHN0YXRlXG4gICAgOztcblxuICAgIGxldCBkZWxldGUgZWxlbWVudCA9IEpzX21hcC5kZWxldGUgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KVxuICBlbmRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgICh0eXBlIHMpXG4gICAgICAgID9pbmZvXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMuaW5mbyA6PSBpbmZvO1xuICAgIG9iaiMjLmluaXRcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBzMCwgZG9tX25vZGUgPSBpbml0ICgpIGluXG4gICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZSBzMDtcbiAgICAgIGRvbV9ub2RlKTtcbiAgICBvYmojIy51cGRhdGVcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJldiBkb21fbm9kZSAtPlxuICAgICAgKCogVGhlIFt1cGRhdGVdIG1ldGhvZCBvZiBbb2JqXSBpcyBvbmx5IGNhbGxlZCBieSB2aXJ0dWFsLWRvbSBhZnRlciBpdCBoYXMgY2hlY2tlZFxuICAgICAgICAgdGhhdCB0aGUgW2lkXXMgb2YgW3ByZXZdIGFuZCBbb2JqXSBhcmUgXCI9PT1cIiBlcXVhbC4gVGh1cyBbc2FtZV93aXRuZXNzX2V4bl0gd2lsbFxuICAgICAgICAgbmV2ZXIgcmFpc2UuICopXG4gICAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gcHJldiMjLmlkIGlkIHdpdGhcbiAgICAgIHwgVHlwZV9lcXVhbC5UIC0+XG4gICAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgICAgbGV0IHN0YXRlJywgZG9tX25vZGUnID0gdXBkYXRlIHByZXZfc3RhdGUgZG9tX25vZGUgaW5cbiAgICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZTtcbiAgICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUnIHN0YXRlJztcbiAgICAgICAgZG9tX25vZGUnKTtcbiAgICBvYmojIy5kZXN0cm95XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGRvbV9ub2RlIC0+XG4gICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICBkZXN0cm95IHByZXZfc3RhdGUgZG9tX25vZGU7XG4gICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlKTtcbiAgICBOb2RlLnRfb2ZfanMgKG9qc19vZl9qcyBvYmopXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiAoc3RyaW5nLCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKFN0cmluZy5TZXQudCAtPiBTdHJpbmcuU2V0LnQpXG4gIHwgTWFueV93aXRob3V0X21lcmdlIG9mIHQgbGlzdFxuXG5sZXQgY3JlYXRlIG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0IG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2VcbiAgICA7IG5hbWVcbiAgICA7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoRG9tX2Zsb2F0LnRvX2pzX3N0cmluZyB2YWx1ZSlcbiAgICB9XG47O1xuXG5sZXQgcHJvcGVydHkgbmFtZSB2YWx1ZSA9IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgfVxuXG5sZXQgc3RyaW5nX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBib29sX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5ib29sIHZhbHVlKSB9XG47O1xuXG5sZXQgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmdW5jdGlvblxuICB8IEF0dHJpYnV0ZSBhdHRyaWJ1dGUgLT4gQXR0cmlidXRlIHsgYXR0cmlidXRlIHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCBQcm9wZXJ0eSBwcm9wZXJ0eSAtPiBQcm9wZXJ0eSB7IHByb3BlcnR5IHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjcmVhdGVfaG9vayBuYW1lIGhvb2sgPSBIb29rIHsgbmFtZTsgaG9vayB9XG5sZXQgbWFueSBhdHRycyA9IE1hbnkgYXR0cnNcbmxldCBtYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgPSBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnNcbmxldCBlbXB0eSA9IE1hbnkgW11cbmxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBNYW55IFsgbGVmdDsgcmlnaHQgXVxubGV0ICggQCApID0gY29tYmluZVxuXG5leHRlcm5hbCBvanNfb2ZfYW55IDogSnMuVW5zYWZlLmFueSAtPiBHZW5fanNfYXBpLk9qcy50ID0gXCIlaWRlbnRpdHlcIlxuXG5tb2R1bGUgVW5tZXJnZWRfd2FybmluZ19tb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb193YXJuaW5nc1xuICAgIHwgQWxsX3dhcm5pbmdzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIG9mIGludFxuXG4gIGxldCB3YXJuaW5nX2NvdW50ID0gcmVmIDBcbiAgbGV0IGN1cnJlbnQgPSByZWYgKFN0b3BfYWZ0ZXJfcXVvdGEgMTAwKVxuXG4gIGxldCB3YXJuX3MgcyA9XG4gICAgaW5jciB3YXJuaW5nX2NvdW50O1xuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vX3dhcm5pbmdzIC0+ICgpXG4gICAgfCBBbGxfd2FybmluZ3MgLT4gZXByaW50X3Mgc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBxdW90YSAtPlxuICAgICAgbGV0IHdhcm5pbmdfY291bnQgPSAhd2FybmluZ19jb3VudCBpblxuICAgICAgaWYgd2FybmluZ19jb3VudCA8PSBxdW90YVxuICAgICAgdGhlbiAoXG4gICAgICAgIGVwcmludF9zIHM7XG4gICAgICAgIGlmIHdhcm5pbmdfY291bnQgPSBxdW90YVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZXByaW50X3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIldBUk5JTkc6IHJlYWNoZWQgd2FybmluZyBtZXNzYWdlIHF1b3RhOyBubyBtb3JlIG1lc3NhZ2VzIHdpbGwgYmUgcHJpbnRlZFwiXG4gICAgICAgICAgICAgICAgKHF1b3RhIDogaW50KV0pXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHJlc2V0X3dhcm5pbmdfY291bnQgKCkgPSB3YXJuaW5nX2NvdW50IDo9IDBcbiAgZW5kXG5lbmRcblxudHlwZSBtZXJnZSA9XG4gIHsgc3R5bGVzIDogQ3NzX2dlbi50XG4gIDsgY2xhc3NlcyA6IFNldC5NKFN0cmluZykudFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFNldC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBoYW5kbGVycyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBob29rcyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgfVxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbGV0IGF0dHJzID0gWyBhdHRyIF0gaW5cbiAgKCogV2hlbiBpbnB1dCBlbGVtZW50cyBoYXZlIHRoZWlyIHZhbHVlIHNldCB0byB3aGF0IGl0IGFscmVhZHkgaXNcbiAgICAgdGhlIGN1cnNvciBnZXRzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGV2ZW4gd2hlbiB0aGUgdXNlclxuICAgICBpcyBlZGl0aW5nIGluIHRoZSBtaWRkbGUuIFNvZnRTZXRIb29rIChmcm9tIC4vc29mdC1zZXQtaG9vay5qcylcbiAgICAgY29tcGFyZXMgYmVmb3JlIHNldHRpbmcsIGF2b2lkaW5nIHRoZSBwcm9ibGVtIGp1c3QgbGlrZSBpblxuICAgICBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvOTQ3ZWNmOTJiNjdkMjViYjY5M2EwZjYyNWZhOGU5MGMwOTk4ODdkNS92aXJ0dWFsLWh5cGVyc2NyaXB0L2luZGV4LmpzI0w0My1MNTFcblxuICAgICBub3RlIHRoYXQgRWxtJ3MgdmlydHVhbC1kb20gaW5jbHVkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGlzIHNvXG4gICAgIGlmIHdlIHN3aXRjaCB0byB0aGF0IHRoZSB3b3JrYXJvdW5kIGhlcmUgd2lsbCBiZSB1bm5lY2Vzc2FyeS5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL2VsbS1sYW5nL3ZpcnR1YWwtZG9tL2Jsb2IvMTdiMzBmYjdkZTQ4NjcyNTY1ZDYyMjdkMzNjMDE3NmYwNzU3ODZkYi9zcmMvTmF0aXZlL1ZpcnR1YWxEb20uanMjTDQzNC1MNDM5XG4gICopXG4gIGxldCBhdHRyc19vYmogOiBWZG9tX3Jhdy5BdHRycy50ID0gVmRvbV9yYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICgqIFt0YWtlX3NlY29uZF8qXSBpcyB0aGUgdHJpdmlhbCBtZXJnZSBmdW5jdGlvbiAoaS5lLiBubyBtZXJnZSBhdCBhbGwpOyBpdFxuICAgICB0YWtlcyB0d28gYXR0cmlidXRlcyBvZiB0aGUgc2FtZSBraW5kLCBpZ25vcmVzIGEgZmlyc3QsIGFuZCBlbWl0c1xuICAgICBhIHdhcm5pbmcgaWYgW3dhcm5fYWJvdXRfdW5tZXJnZWRfYXR0cmlidXRlc10gaXMgZW5hYmxlZC4gKilcbiAgbGV0IHRha2Vfc2Vjb25kX3N0eWxlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBzdHlsZXNcIiAoZmlyc3QgOiBDc3NfZ2VuLnQpIChzZWNvbmQgOiBDc3NfZ2VuLnQpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2NsYXNzZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKFNldC5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogU3RyaW5nLlNldC50KSAoc2Vjb25kIDogU3RyaW5nLlNldC50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9oYW5kbGVyIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhhbmRsZXJzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hvb2sgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3MgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBob29rc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gICgqIFdlIG1lcmdlIGF0dHJpYnV0ZXMgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSByYXcgYXR0cmlidXRlIG9iamVjdCxcbiAgICAgcmF0aGVyIHRoYW4gd2hlbiB0aGUgdXNlci1mYWNpbmcgbWVyZ2UgZnVuY3Rpb25zIChbbWFueV0sIFtjb21iaW5lXSwgYW5kXG4gICAgIFtAXSkgYXJlIGNhbGxlZC4gVGhpcyBzdHJhdGVneSBpcyBiZXR0ZXIgaW4gYm90aCBzcGVlZCBhbmQgbWVtb3J5IHVzYWdlLFxuICAgICBzaW5jZSBpdCBtZWFucyB3ZSBkbyBub3QgbmVlZCB0byBjb25jYXRlbmF0ZSB0aGUgbGlzdCBvZiBcInVubWVyZ2VhYmxlXCJcbiAgICAgYXR0cmlidXRlcyAoUHJvcGVydHkgYW5kIEF0dHJpYnV0ZSk7IGluc3RlYWQsIHdlIGNhbiBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgIHRyZWUgb2YgYXR0cmlidXRlcyBhbmQgZWFnZXJseSB3cml0ZSB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIHRvIHRoZVxuICAgICBhdHRyaWJ1dGUgb2JqZWN0IGFzIHdlIGZpbmQgdGhlbS4gSWYgdHdvIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgaGF2ZSB0aGVcbiAgICAgc2FtZSBuYW1lLCB0aGUgc2Vjb25kIHdpbGwgc2ltcGx5IG92ZXJ3cml0ZSB0aGUgZmlyc3QsIGFzIGRlc2lyZWQuXG5cbiAgICAgSW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIHRoZSBbTXVsdGldIG1vZHVsZSAodGhhdCBpcyxcbiAgICAgaXQgbXVzdCBiZSBwb3NzaWJsZSB0byBtZXJnZSBjbGFzc2VzIGFuZCBzdHlsZXMsIGJ1dCBub3QgaG9va3MgYW5kXG4gICAgIGhhbmRsZXJzKSwgd2UgaW50cm9kdWNlIHRoZSB3b3JrYXJvdW5kIGNvbnN0cnVjdG9yXG4gICAgIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXS5cblxuICAgICBUaGVyZSBhcmUgdGh1cyB0aHJlZSBjYXNlcyB0aGF0IGVhY2ggaGF2ZSBkaWZmZXJlbnQgbWVyZ2UgYmVoYXZpb3JzOlxuICAgICAtIFNpbXBsZSBsaXN0cyAtIG5vIG1lcmdpbmdcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnldIC0gbWVyZ2VzIGNsYXNzZXMsIHN0eWxlcywgaG9va3MsIGFuZCBoYW5kbGVyc1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10gLSBtZXJnZXMgY2xhc3NlcyBhbmQgc3R5bGVzXG5cbiAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG1hdGNoIGV4cHJlc3Npb24gbG9naWMsIHdlIHBhcmVtZXRlcml6ZSBpdCBieSB0aGVcbiAgICAgbWVyZ2luZyBiZWhhdmlvciwgc2luY2UgXCJubyBtZXJnZVwiIHJlYWxseSBtZWFucyBcIm1lcmdlIGJ5IHRha2luZyB0aGVcbiAgICAgc2Vjb25kIG9uZVwiLiAqKVxuICBsZXQgcmVjIG1lcmdlIH5jb21iaW5lX2hvb2sgfmNvbWJpbmVfaGFuZGxlciB+Y29tYmluZV9zdHlsZXMgfmNvbWJpbmVfY2xhc3NlcyBhY2MgPVxuICAgIExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgYXR0ciAtPlxuICAgICAgbWF0Y2ggYXR0ciB3aXRoXG4gICAgICB8IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgcHJvcGVydGllc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgIHwgXCJ2YWx1ZVwiIC0+XG4gICAgICAgICAgIGxldCBzb2Z0U2V0SG9vayB4IDogR2VuX2pzX2FwaS5PanMudCA9IEpzLlVuc2FmZS5nbG9iYWwgIyMgU29mdFNldEhvb2sgeCBpblxuICAgICAgICAgICBsZXQgdmFsdWUgPSBzb2Z0U2V0SG9vayB2YWx1ZSBpblxuICAgICAgICAgICBWZG9tX3Jhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwidmFsdWVcIiB2YWx1ZVxuICAgICAgICAgfCBuYW1lIC0+IFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgdmFsdWUpKTtcbiAgICAgICAgYWNjXG4gICAgICB8IEF0dHJpYnV0ZSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBhdHRyaWJ1dGVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgdmFsdWUpO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPVxuICAgICAgICAgICAgY29tYmluaW5nX21hcF9hZGQgYWNjLmhhbmRsZXJzIG5hbWUgaGFuZGxlciB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfCBNYW55IGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOihmdW4gfmtleTpfIC0+IEhvb2tzLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOihmdW4gfmtleTpfIC0+IEV2ZW50X2hhbmRsZXIuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6U2V0LnVuaW9uXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOlNldC51bmlvblxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gbWFwX3N0eWxlcyAoY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzKVxuICAgICAgICA7IGNsYXNzZXMgPSBtYXBfY2xhc3NlcyAoY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzKVxuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlc1xuICAgICAgICA7IGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXNcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH0pXG4gIGluXG4gIGxldCBtZXJnZSA9XG4gICAgbWVyZ2VcbiAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgIGVtcHR5X21lcmdlXG4gICAgICBhdHRyc1xuICBpblxuICBNYXAuaXRlcmkgbWVyZ2UuaG9va3MgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6aG9vayAtPlxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgKEhvb2tzLnBhY2sgaG9vaykpKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHlcbiAgICAgIGF0dHJzX29ialxuICAgICAgKFwib25cIiBeIG5hbWUpXG4gICAgICAob2pzX29mX2FueSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKSk7XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IG1lcmdlLnN0eWxlcylcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcm9wcyA9IENzc19nZW4udG9fc3RyaW5nX2xpc3QgbWVyZ2Uuc3R5bGVzIGluXG4gICAgICBsZXQgb2JqID0gR2VuX2pzX2FwaS5PanMuZW1wdHlfb2JqICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgR2VuX2pzX2FwaS5PanMuc2V0X3Byb3BfYXNjaWkgb2JqIGsgKEdlbl9qc19hcGkuT2pzLnN0cmluZ190b19qcyB2KSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgb2JqKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIFNldC5pc19lbXB0eSBtZXJnZS5jbGFzc2VzXG4gICAgdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlXG4gICAgICAgIGF0dHJzX29ialxuICAgICAgICBcImNsYXNzXCJcbiAgICAgICAgKEdlbl9qc19hcGkuT2pzLnN0cmluZ190b19qcyAoU3RyaW5nLmNvbmNhdCAoU2V0LnRvX2xpc3QgbWVyZ2UuY2xhc3NlcykgfnNlcDpcIiBcIikpXG4gIGluXG4gIGF0dHJzX29ialxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbWF0Y2ggYXR0ciB3aXRoXG4gIHwgTWFueSBbXSB8IE1hbnlfd2l0aG91dF9tZXJnZSBbXSAtPiBSYXcuQXR0cnMuY3JlYXRlICgpXG4gIHwgYXR0ciAtPiB0b19yYXcgYXR0clxuOztcblxubGV0IHN0eWxlIGNzcyA9IFN0eWxlIGNzc1xuXG5sZXQgdmFsaWRfY2xhc3NfbmFtZSBzID1cbiAgbGV0IGludmFsaWQgPSBTdHJpbmcuaXNfZW1wdHkgcyB8fCBTdHJpbmcuZXhpc3RzIHMgfmY6Q2hhci5pc193aGl0ZXNwYWNlIGluXG4gIG5vdCBpbnZhbGlkXG47O1xuXG5sZXQldGVzdCBcInZhbGlkXCIgPSB2YWxpZF9jbGFzc19uYW1lIFwiZm9vLWJhclwiXG5sZXQldGVzdCBcImludmFsaWQtZW1wdHlcIiA9IG5vdCAodmFsaWRfY2xhc3NfbmFtZSBcIlwiKVxubGV0JXRlc3QgXCJpbnZhbGlkLXNwYWNlXCIgPSBub3QgKHZhbGlkX2NsYXNzX25hbWUgXCJmb28gYmFyXCIpXG5cbmxldCBjbGFzc18gY2xhc3NuYW1lID1cbiAgaWYgbm90ICh2YWxpZF9jbGFzc19uYW1lIGNsYXNzbmFtZSlcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgY2xhc3NuYW1lXCIgKGNsYXNzbmFtZSA6IHN0cmluZyldO1xuICBDbGFzcyAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZykgY2xhc3NuYW1lKVxuOztcblxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyBjbGFzc2VzXG5cbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPVxuICBpZiBub3QgKExpc3QuZm9yX2FsbCB+Zjp2YWxpZF9jbGFzc19uYW1lIGNsYXNzbmFtZXMpXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIGNsYXNzbmFtZXNcIiAoY2xhc3NuYW1lcyA6IHN0cmluZyBsaXN0KV07XG4gIGNsYXNzZXMnIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgY2xhc3NuYW1lcylcbjs7XG5cbmxldCBpZCBzID0gY3JlYXRlIFwiaWRcIiBzXG5sZXQgbmFtZSBzID0gY3JlYXRlIFwibmFtZVwiIHNcbmxldCBocmVmIHIgPSBjcmVhdGUgXCJocmVmXCIgclxubGV0IHRhcmdldCBzID0gY3JlYXRlIFwidGFyZ2V0XCIgc1xubGV0IGNoZWNrZWQgPSBjcmVhdGUgXCJjaGVja2VkXCIgXCJcIlxubGV0IHNlbGVjdGVkID0gY3JlYXRlIFwic2VsZWN0ZWRcIiBcIlwiXG5sZXQgaGlkZGVuID0gY3JlYXRlIFwiaGlkZGVuXCIgXCJcIlxubGV0IHJlYWRvbmx5ID0gY3JlYXRlIFwicmVhZG9ubHlcIiBcIlwiXG5sZXQgZGlzYWJsZWQgPSBjcmVhdGUgXCJkaXNhYmxlZFwiIFwiXCJcbmxldCBwbGFjZWhvbGRlciB4ID0gY3JlYXRlIFwicGxhY2Vob2xkZXJcIiB4XG5cbmxldCBhdXRvZm9jdXMgPSBmdW5jdGlvblxuICB8IHRydWUgLT4gY3JlYXRlIFwiYXV0b2ZvY3VzXCIgXCJcIlxuICB8IGZhbHNlIC0+IGVtcHR5XG47O1xuXG5sZXQgZm9yXyB4ID0gY3JlYXRlIFwiZm9yXCIgeFxubGV0IHR5cGVfIHggPSBjcmVhdGUgXCJ0eXBlXCIgeFxubGV0IHZhbHVlIHggPSBjcmVhdGUgXCJ2YWx1ZVwiIHhcbmxldCB2YWx1ZV9wcm9wIHggPSBzdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHhcbmxldCB0YWJpbmRleCB4ID0gY3JlYXRlIFwidGFiaW5kZXhcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHRpdGxlIHggPSBjcmVhdGUgXCJ0aXRsZVwiIHhcbmxldCBzcmMgeCA9IGNyZWF0ZSBcInNyY1wiIHhcbmxldCBtaW4geCA9IGNyZWF0ZV9mbG9hdCBcIm1pblwiIHhcbmxldCBtYXggeCA9IGNyZWF0ZV9mbG9hdCBcIm1heFwiIHhcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9zdWJtaXQgPSBvbiBUeXBlX2lkLnN1Ym1pdCBcInN1Ym1pdFwiXG5sZXQgb25fcG9pbnRlcmRvd24gPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVyZG93blwiXG5sZXQgb25fcG9pbnRlcnVwID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcnVwXCJcbmxldCBvbl9tb3VzZXdoZWVsID0gb24gVHlwZV9pZC5tb3VzZXdoZWVsIFwibW91c2V3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBEb21faHRtbC5lbGVtZW50XG4gICAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgYXR0ciA9IHRcbiAgdHlwZSB0ID0gYXR0ciBsaXN0XG5cbiAgbGV0IG1hcF9zdHlsZSB0IH5mID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBmLCBGbi5pZCkgXVxuXG4gIGxldCBhZGRfY2xhc3MgdCBjID1cbiAgICBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIEZuLmlkLCBmdW4gY3MgLT4gU2V0LmFkZCBjcyBjKSBdXG4gIDs7XG5cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByZWMgZmlsdGVyX2J5X2tpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBQcm9wZXJ0eSBfIC0+IGlmIGYgYFByb3BlcnR5IHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBBdHRyaWJ1dGUgXyAtPiBpZiBmIGBBdHRyaWJ1dGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhvb2sgXyAtPiBpZiBmIGBIb29rIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIYW5kbGVyIF8gLT4gaWYgZiBgSGFuZGxlciB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgU3R5bGUgXyAtPiBpZiBmIGBTdHlsZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQ2xhc3MgXyAtPiBpZiBmIGBDbGFzcyB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgTWFueSBhdHRycyAtPiBNYW55IChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIGEsIGIpIC0+XG4gICAgICBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpLCBhLCBiKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICBNYW55X3dpdGhvdXRfbWVyZ2UgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb250YWluc19uYW1lIGxvb2tpbmdfZm9yID0gZnVuY3Rpb25cbiAgICB8IFByb3BlcnR5IHsgbmFtZTsgXyB9IHwgQXR0cmlidXRlIHsgbmFtZTsgXyB9IHwgSG9vayB7IG5hbWU7IF8gfSAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIG5hbWVcbiAgICB8IEhhbmRsZXIgeyBuYW1lOyBfIH0gLT4gU3RyaW5nLmVxdWFsIChcIm9uXCIgXiBuYW1lKSBsb29raW5nX2ZvclxuICAgIHwgU3R5bGUgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJzdHlsZVwiXG4gICAgfCBDbGFzcyBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcImNsYXNzXCJcbiAgICB8IE1hbnkgYXR0cnNcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBfLCBfKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+IExpc3QuZXhpc3RzIH5mOihjb250YWluc19uYW1lIGxvb2tpbmdfZm9yKSBhdHRyc1xuICA7O1xuZW5kXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBNYWtlIChYIDogc2lnXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgRG9tLkV2ZW50LnR5cFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IGNvbWJpbmUgZiBnIGV2ZW50ID0gVWlfZWZmZWN0Lk1hbnkgWyBmIGV2ZW50OyBnIGV2ZW50IF1cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGxpc3RlbmVyIDogKERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkW0BzZXhwLm9wYXF1ZV0pIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBsZXQgc2V0IGYgPVxuICAgICAgICBsZXQgaGFuZGxlciA9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBldiAtPlxuICAgICAgICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gKGYgZXYpO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICAgIGluXG4gICAgICAgIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgRG9tX2h0bWwud2luZG93IFguZXZlbnRfa2luZCBoYW5kbGVyIEpzLl90cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW5pdCBmIF9lbGVtZW50ID0geyBTdGF0ZS5saXN0ZW5lciA9IHNldCBmIH1cbiAgICAgIGxldCBkZXN0cm95IF9pbnB1dCBzdGF0ZSBfZWxlbWVudCA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgc3RhdGUuU3RhdGUubGlzdGVuZXJcblxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6ZiBzdGF0ZSBlbGVtZW50ID1cbiAgICAgICAgKCogaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNoYW5nZXMsIGNhbmNlbCB0aGUgb2xkIG9uZSBhbmQgcmUtaW5zdGFsbCAqKVxuICAgICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgICBsZXQgbmV3X3N0YXRlID0gaW5pdCBmIGVsZW1lbnQgaW5cbiAgICAgICAgc3RhdGUuU3RhdGUubGlzdGVuZXIgPC0gbmV3X3N0YXRlLmxpc3RlbmVyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNb3VzZV91cCA9IE1ha2UgKHN0cnVjdFxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2V1cFxuICBlbmQpXG5cbm1vZHVsZSBNb3VzZV9tb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZW1vdmVcbiAgZW5kKVxuXG5sZXQgbW91c2V1cCBmID0gTW91c2VfdXAuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZXVwLWxpc3RlbmVyXCJcbmxldCBtb3VzZW1vdmUgZiA9IE1vdXNlX21vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNlX3VwX3R5cGVfaWQgPSBNb3VzZV91cC5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBtb3VzZV9tb3ZlX3R5cGVfaWQgPSBNb3VzZV9tb3ZlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBpbmNsdWRlIFJhdy5XaWRnZXRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBkb20gPSBwcml2YXRlICNEb21faHRtbC5lbGVtZW50XG5cbiAgICBtb2R1bGUgSW5wdXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIGNyZWF0ZSA6IElucHV0LnQgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgdXBkYXRlXG4gICAgICA6ICBwcmV2X2lucHV0OklucHV0LnRcbiAgICAgIC0+IGlucHV0OklucHV0LnRcbiAgICAgIC0+IHN0YXRlOlN0YXRlLnRcbiAgICAgIC0+IGVsZW1lbnQ6ZG9tIEpzLnRcbiAgICAgIC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIGRlc3Ryb3kgOiBwcmV2X2lucHV0OklucHV0LnQgLT4gc3RhdGU6U3RhdGUudCAtPiBlbGVtZW50OmRvbSBKcy50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbGV0IG9mX21vZHVsZSAodHlwZSBpbnB1dCkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgSW5wdXQudCA9IGlucHV0KSA9XG4gICAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbnB1dCA6IE0uSW5wdXQudFxuICAgICAgICA7IHN0YXRlIDogTS5TdGF0ZS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgc2V4cF9vZl9kb20gOiBNLmRvbSBKcy50IC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIgaW5cbiAgICBsZXQgaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpNLm5hbWUgWyVzZXhwX29mOiBTdGF0ZS50ICogZG9tXSBpblxuICAgIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaW5wdXQgLT5cbiAgICAgIGxldCBpbmZvID0gbGF6eSAoTS5JbnB1dC5zZXhwX29mX3QgaW5wdXQpIGluXG4gICAgICBjcmVhdGVcbiAgICAgICAgfmlkXG4gICAgICAgIH5pbmZvXG4gICAgICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLmNyZWF0ZSBpbnB1dCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH51cGRhdGU6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS51cGRhdGUgfnByZXZfaW5wdXQgfmlucHV0IH5zdGF0ZSB+ZWxlbWVudCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH5kZXN0cm95OihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIE0uZGVzdHJveSB+cHJldl9pbnB1dCB+c3RhdGUgfmVsZW1lbnQpXG4gICAgICAgICgpKVxuICA7O1xuZW5kXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgdCA9XG4gIHwgTm9uZVxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRWxlbWVudCBvZiBlbGVtZW50XG4gIHwgV2lkZ2V0IG9mIFdpZGdldC50XG5cbm1vZHVsZSBBbGlhc2VzID0gc3RydWN0XG4gIHR5cGUgbm9kZV9jcmVhdG9yID0gP2tleTpzdHJpbmcgLT4gP2F0dHI6QXR0ci50IC0+IHQgbGlzdCAtPiB0XG4gIHR5cGUgbm9kZV9jcmVhdG9yX2NoaWxkbGVzcyA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyOkF0dHIudCAtPiB1bml0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRWxlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBlbGVtZW50XG5cbiAgbGV0IHRhZyB0ID0gdC50YWdcbiAgbGV0IGF0dHJzIHQgPSB0LmF0dHJzXG4gIGxldCBrZXkgdCA9IHQua2V5XG4gIGxldCB3aXRoX2tleSB0IGtleSA9IHsgdCB3aXRoIGtleSA9IFNvbWUga2V5IH1cblxuICBsZXQgbWFwX2F0dHJzIHQgfmYgPVxuICAgIGxldCBhdHRycyA9IGYgdC5hdHRycyBpblxuICAgIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgICB7IHQgd2l0aCBhdHRyczsgcmF3X2F0dHJzIH1cbiAgOztcblxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NfIGMpKVxuICBsZXQgYWRkX2NsYXNzZXMgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc2VzIGMpKVxuICBsZXQgYWRkX3N0eWxlIHQgcyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgc3R5bGUgcykpXG5lbmRcblxubGV0IHRfdG9fanMgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAoKiBXZSBub3JtYWxseSBmaWx0ZXIgdGhlc2Ugb3V0LCBidXQgaWYgW3RvX2pzXSBpcyBjYWxsZWQgZGlyZWN0bHkgb24gYSBbTm9uZV0gbm9kZSxcbiAgICAgICB3ZSB1c2UgdGhpcyBoYWNrLiBBc2lkZSBmcm9tIGhhdmluZyBhIFtUZXh0XSBub2RlIHdpdGhvdXQgYW55IHRleHQgcHJlc2VudCBpbiB0aGVcbiAgICAgICBEb20sIHRoZXJlIHNob3VsZCBiZSBubyB1bndhbnRlZCBzaWRlLWVmZmVjdHMuICBJbiBhbiBJbmNyX2RvbSBhcHBsaWNhdGlvbiwgdGhpc1xuICAgICAgIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSByb290IHZpZXcgSW5jcmVtZW50YWwgaXMgaW5oYWJpdGVkIGJ5IGEgW05vbmVdLiAqKVxuICAgIFJhdy5Ob2RlLnRleHQgXCJcIlxuICB8IFRleHQgcyAtPiBSYXcuTm9kZS50ZXh0IHNcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgVm5vZGUgfVxuICAgIC0+IFJhdy5Ob2RlLm5vZGUgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgU3ZnIH1cbiAgICAtPiBSYXcuTm9kZS5zdmcgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBXaWRnZXQgdyAtPiB3XG47O1xuXG5sZXQgZWxlbWVudCBraW5kIH50YWcgfmtleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBjaGlsZHJlbl9yYXcgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgTGlzdC5pdGVyIGNoaWxkcmVuIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgKFRleHQgXyB8IEVsZW1lbnQgXyB8IFdpZGdldCBfKSBhcyBvdGhlciAtPlxuICAgICAgbGV0IChfIDogaW50KSA9IGNoaWxkcmVuX3JhdyMjcHVzaCAodF90b19qcyBvdGhlcikgaW5cbiAgICAgICgpKTtcbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiA9IGNoaWxkcmVuX3JhdyB9XG47O1xuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB0ZXh0IHMgPSBUZXh0IHNcblxubGV0IHdpZGdldCA/aW5mbyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSA9XG4gIFdpZGdldCAoV2lkZ2V0LmNyZWF0ZSA/aW5mbyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSlcbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRyID0gQXR0ci5lbXB0eSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBWbm9kZSB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfY2hpbGRsZXNzIHRhZyA/a2V5ID9hdHRyICgpID0gY3JlYXRlIHRhZyA/a2V5ID9hdHRyIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5sZXQgaW5uZXJfaHRtbFxuICAgICAgY3JlYXRlXG4gICAgICB+dGFnXG4gICAgICB+YXR0clxuICAgICAgfnRoaXNfaHRtbF9pc19zYW5pdGl6ZWRfYW5kX2lzX3RvdGFsbHlfc2FmZV90cnVzdF9tZTpjb250ZW50XG4gID1cbiAgbGV0IGVsZW1lbnQgPSBjcmVhdGUgdGFnIH5hdHRyIFtdIGluXG4gIGxldCBidWlsZF9zZXhwIH5leHRyYSB+Y29udGVudCA9XG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiaW5uZXItaHRtbFwiOyBleHRyYTsgU2V4cC5BdG9tIGNvbnRlbnQgXVxuICBpblxuICBsZXQgaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiaW5uZXItaHRtbC1ub2RlXCIgKGZ1biAoKGVsZW1lbnQsIGNvbnRlbnQpLCBfKSAtPlxuICAgICAgYnVpbGRfc2V4cCB+ZXh0cmE6ZWxlbWVudCB+Y29udGVudClcbiAgaW5cbiAgbGV0IGRlYnVnID1cbiAgICBtYXRjaCBlbGVtZW50IHdpdGhcbiAgICB8IEVsZW1lbnQgZWxlbWVudCAtPiBTZXhwLkF0b20gKEVsZW1lbnQudGFnIGVsZW1lbnQpXG4gICAgfCBXaWRnZXQgXyAtPiBmYWlsd2l0aCBcIlZkb20uTm9kZS5pbm5lcl9odG1sIHdhcyBnaXZlbiBhICd3aWRnZXQnXCJcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJWZG9tLk5vZGUuaW5uZXJfaHRtbCB3YXMgZ2l2ZW4gYSAnbm9uZSdcIlxuICAgIHwgVGV4dCBfIC0+IGZhaWx3aXRoIFwiVmRvbS5Ob2RlLmlubmVyX2h0bWwgd2FzIGdpdmVuIGEgJ3RleHQnXCJcbiAgaW5cbiAgd2lkZ2V0XG4gICAgfmlkXG4gICAgfmluZm86KGxhenkgKGJ1aWxkX3NleHAgfmV4dHJhOmRlYnVnIH5jb250ZW50KSlcbiAgICB+aW5pdDooZnVuICgpIC0+XG4gICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgKGRlYnVnLCBjb250ZW50KSwgZWxlbWVudClcbiAgICAoKVxuOztcblxubGV0IGlubmVyX2h0bWxfc3ZnID0gaW5uZXJfaHRtbCAoZnVuIHRhZyB+YXR0ciAtPiBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleTpOb25lIH5hdHRyKVxubGV0IGlubmVyX2h0bWwgPSBpbm5lcl9odG1sIChmdW4gdGFnIH5hdHRyIC0+IGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRyKVxubGV0IGEgPSBjcmVhdGUgXCJhXCJcbmxldCBib2R5ID0gY3JlYXRlIFwiYm9keVwiXG5sZXQgYnV0dG9uID0gY3JlYXRlIFwiYnV0dG9uXCJcbmxldCBjb2RlID0gY3JlYXRlIFwiY29kZVwiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgZm9vdGVyID0gY3JlYXRlIFwiZm9vdGVyXCJcbmxldCBoMSA9IGNyZWF0ZSBcImgxXCJcbmxldCBoMiA9IGNyZWF0ZSBcImgyXCJcbmxldCBoMyA9IGNyZWF0ZSBcImgzXCJcbmxldCBoNCA9IGNyZWF0ZSBcImg0XCJcbmxldCBoNSA9IGNyZWF0ZSBcImg1XCJcbmxldCBoNiA9IGNyZWF0ZSBcImg2XCJcbmxldCBoZWFkZXIgPSBjcmVhdGUgXCJoZWFkZXJcIlxubGV0IGh0bWwgPSBjcmVhdGUgXCJodG1sXCJcbmxldCBpbnB1dCA9IGNyZWF0ZSBcImlucHV0XCJcbmxldCB0ZXh0YXJlYSA9IGNyZWF0ZSBcInRleHRhcmVhXCJcbmxldCBzZWxlY3QgPSBjcmVhdGUgXCJzZWxlY3RcIlxubGV0IG9wdGlvbiA9IGNyZWF0ZSBcIm9wdGlvblwiXG5sZXQgbGFiZWwgPSBjcmVhdGUgXCJsYWJlbFwiXG5sZXQgbGkgPSBjcmVhdGUgXCJsaVwiXG5sZXQgcCA9IGNyZWF0ZSBcInBcIlxubGV0IHByZSA9IGNyZWF0ZSBcInByZVwiXG5sZXQgc2VjdGlvbiA9IGNyZWF0ZSBcInNlY3Rpb25cIlxubGV0IHNwYW4gPSBjcmVhdGUgXCJzcGFuXCJcbmxldCBzdHJvbmcgPSBjcmVhdGUgXCJzdHJvbmdcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cjpBdHRyLmVtcHR5XG47O1xuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LlBhdGNoLnRcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9XG4gICAgUmF3LlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6KHRfdG9fanMgcHJldmlvdXMpIH5jdXJyZW50Oih0X3RvX2pzIGN1cnJlbnQpXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHQgZWx0ID0gUmF3LlBhdGNoLmFwcGx5IGVsdCB0XG4gIGxldCBpc19lbXB0eSB0ID0gUmF3LlBhdGNoLmlzX2VtcHR5IHRcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBWbm9kZSA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9zdmcgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBTdmcgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuZW5kXG4iLCJtb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBpbmNsdWRlIEF0dHJcbiAgbW9kdWxlIEhvb2tzID0gSG9va3NcbiAgbW9kdWxlIEdsb2JhbF9saXN0ZW5lcnMgPSBHbG9iYWxfbGlzdGVuZXJzXG5lbmRcblxubW9kdWxlIEF0dHJzID0gQXR0ci5NdWx0aVxubW9kdWxlIEVmZmVjdCA9IEVmZmVjdFxubW9kdWxlIE5vZGUgPSBOb2RlXG4iLCJtb2R1bGUgVmRvbSA9IFZkb21cbm1vZHVsZSBEb21fZmxvYXQgPSBEb21fZmxvYXRcblxubW9kdWxlIFRvcF9sZXZlbF9lZmZlY3RzID0gc3RydWN0XG4gIGxldCAoKSA9XG4gICAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gICAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDcHVzZXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQuU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG5cbiAgICAgIGxldCB2YWxpZGF0ZSB0ID1cbiAgICAgICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZVxuICAgICAgICAgIChJbnQudmFsaWRhdGVfbGJvdW5kIH5taW46KEluY2wgMSkgKEludC5TZXQubGVuZ3RoIHQpKVxuICAgICAgICAgIChJbnQuU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBudW1fYml0cyA9IEludC5udW1fYml0c1xuICBsZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxubGV0IGNvbmNhdCBsID0gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBsXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5cbm1vZHVsZSBQb29sID0gc3RydWN0XG4gIGxldCBncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IGlmIG9sZF9jYXBhY2l0eSA9IDAgdGhlbiAxIGVsc2Ugb2xkX2NhcGFjaXR5ICogMlxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPD0gb2xkX2NhcGFjaXR5XG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvb2wuZ3JvdyBnb3QgdG9vIHNtYWxsIGNhcGFjaXR5XCJcbiAgICAgICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5LCBgb2xkX2NhcGFjaXR5IG9sZF9jYXBhY2l0eSlcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBdICogWyBgb2xkX2NhcGFjaXR5IG9mIGludCBdXTtcbiAgICAgIGNhcGFjaXR5XG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gVHVwbGVfdHlwZS5TbG90c1xuXG4gIGxldCBtYXhfc2xvdCA9IDE0XG5cbiAgKCogVGhlIHBvb2wgaXMgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGUgW1VuaWZvcm1fYXJyYXkudF0sIHdoZXJlIGluZGV4IHplcm8gaGFzIHRoZVxuICAgICBtZXRhZGF0YSBhYm91dCB0aGUgcG9vbCBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGFyZSB0aGUgdHVwbGVzIGxheWVkIG91dCBvbmUgYWZ0ZXJcbiAgICAgdGhlIG90aGVyLiAgRWFjaCB0dXBsZSB0YWtlcyBbMSArIHNsb3RzX3Blcl90dXBsZV0gaW5kaWNlcyBpbiB0aGUgcG9vbCwgd2hlcmUgdGhlXG4gICAgIGZpcnN0IGluZGV4IGhvbGRzIGEgaGVhZGVyIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgaG9sZCB0aGUgdHVwbGUncyBzbG90czpcblxuICAgICB7dlxuICAgICB8IGhlYWRlciB8IHMwIHwgczEgfCAuLi4gfCBzPE4tMT4gfFxuICAgICB2fVxuXG4gICAgIEEgW1BvaW50ZXIudF0gdG8gYSB0dXBsZSBjb250YWlucyB0aGUgaW50ZWdlciBpbmRleCB3aGVyZSBpdHMgaGVhZGVyIGlzLCBhcyB3ZWxsIGFzXG4gICAgIChhIG1hc2sgb2YpIHRoZSB0dXBsZSdzIHVuaXF1ZSBpZC5cblxuICAgICBUaGUgZnJlZSB0dXBsZXMgYXJlIHNpbmdseSBsaW5rZWQgdmlhIHRoZSBoZWFkZXJzLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgbWFya2VkIHRvIGluZGljYXRlIHNvLCBhbmQgYWxzbyB0byBpbmNsdWRlIHRoZVxuICAgICB0dXBsZSdzIHVuaXF1ZSBpZC4gIFRoaXMgYWxsb3dzIHVzIHRvIGNoZWNrIGluIGNvbnN0YW50IHRpbWUgd2hldGhlciBhIHBvaW50ZXIgaXNcbiAgICAgdmFsaWQsIGJ5IGNvbXBhcmluZyB0aGUgaWQgaW4gdGhlIHBvaW50ZXIgd2l0aCB0aGUgaWQgaW4gdGhlIGhlYWRlci5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgbm90IGluIHVzZSwgaXRzIGhlYWRlciBpcyBwYXJ0IG9mIHRoZSBmcmVlIGxpc3QsIGFuZCBpdHMgdHVwbGUgc2xvdHNcbiAgICAgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGVzLCBmcm9tIHRoZSBbZHVtbXldIHR1cGxlIHN1cHBsaWVkIHRvXG4gICAgIFtjcmVhdGVdLiAgV2UgbXVzdCBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgY29ycmVjdCB0eXBlIHRvIHByZXZlbnQgYSBzZWdmYXVsdCBpblxuICAgICBjb2RlIHRoYXQgKG1pc3Rha2VubHkpIHVzZXMgYSBwb2ludGVyIHRvIGEgZnJlZSB0dXBsZS5cblxuICAgICBGb3IgW1Bvb2wuVW5zYWZlXSwgYSBzbG90IGluIGEgZnJlZSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSBhbiBpbnQ7IGl0IG11c3Qgbm90IGJlXG4gICAgIHBvaW50ZXIgdG8gcHJldmVudCBhIHNwYWNlIGxlYWsuICBIb3dldmVyLCB0aGUgaW50IGluIHRoZSBzbG90IG1heSBub3QgcmVwcmVzZW50IGFcbiAgICAgdmFsaWQgdmFsdWUgb2YgdGhlIHR5cGUuXG4gICopXG5cbiAgbW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgICB0eXBlICgnc2xvdHMsICdhKSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCB0MCA9IDFcbiAgICBsZXQgdDEgPSAyXG4gICAgbGV0IHQyID0gM1xuICAgIGxldCB0MyA9IDRcbiAgICBsZXQgdDQgPSA1XG4gICAgbGV0IHQ1ID0gNlxuICAgIGxldCB0NiA9IDdcbiAgICBsZXQgdDcgPSA4XG4gICAgbGV0IHQ4ID0gOVxuICAgIGxldCB0OSA9IDEwXG4gICAgbGV0IHQxMCA9IDExXG4gICAgbGV0IHQxMSA9IDEyXG4gICAgbGV0IHQxMiA9IDEzXG4gICAgbGV0IHQxMyA9IDE0XG5cbiAgICBsZXQldGVzdCBfID0gdDEzID0gbWF4X3Nsb3RcbiAgZW5kXG5cbiAgKCogV2Ugb25seSBoYXZlIFtJbnQubnVtX2JpdHNdIGJpdHMgYXZhaWxhYmxlIGZvciBwb29sIHBvaW50ZXJzLiAgVGhlIGJpdHMgb2YgYSBwb29sXG4gICAgIHBvaW50ZXIgZW5jb2RlIHR3byB0aGluZ3M6XG5cbiAgICAgLSB0aGUgdHVwbGUncyBhcnJheSBpbmRleCBpbiB0aGUgcG9vbFxuICAgICAtIHRoZSB0dXBsZSdzIGlkZW50aWZpZXIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpXG5cbiAgICAgV2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gYXMgbGFyZ2UgYXMgbmVlZGVkIGZvciB0aGUgbWF4aW11bSBwb29sIGNhcGFjaXR5XG4gICAgIHRoYXQgd2Ugd2FudCB0byBzdXBwb3J0LCBhbmQgdXNlIHRoZSByZW1haW5pbmcgW21hc2tlZF90dXBsZV9pZF9udW1fYml0c10gYml0cyBmb3JcbiAgICAgdGhlIGlkZW50aWZpZXIuICA2NC1iaXQgYW5kIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHR5cGljYWxseSBoYXZlIHZlcnkgZGlmZmVyZW50XG4gICAgIGFkZHJlc3Mtc3BhY2Ugc2l6ZXMsIHNvIHdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGRpZmZlcmVudGx5LiAqKVxuXG4gIGxldCBhcnJheV9pbmRleF9udW1fYml0cyA9XG4gICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gNjMpO1xuICAgICAgMzApXG4gICAgZWxzZSAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDMxIHx8IEludC5udW1fYml0cyA9IDMyKTtcbiAgICAgIDIyKVxuICA7O1xuXG4gIGxldCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPSBJbnQubnVtX2JpdHMgLSBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuXG4gIGxldCBtYXhfYXJyYXlfbGVuZ3RoID0gMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHNcblxuICBtb2R1bGUgVHVwbGVfaWQgOiBzaWdcbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpbml0IDogdFxuICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIGV4YW1wbGVzIDogdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgKCogV2UgZ3VhcmFudGVlIHRoYXQgdHVwbGUgaWRzIGFyZSBub25uZWdhdGl2ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGVuY29kZWQgaW5cbiAgICAgICBoZWFkZXJzLiAqKVxuICAgIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAwKVxuICAgIGxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG4gICAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCBpbml0ID0gMFxuICAgIGxldCBuZXh0IHQgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIHQgKyAxIGVsc2UgaWYgdCA9IEludC5tYXhfdmFsdWUgdGhlbiAwIGVsc2UgdCArIDFcbiAgICBsZXQgdG9faW50IHQgPSB0XG5cbiAgICBsZXQgb2ZfaW50IGkgPVxuICAgICAgaWYgaSA8IDBcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUdXBsZV9pZC5vZl9pbnQgZ290IG5lZ2F0aXZlIGludFwiIGkgWyVzZXhwX29mOiBpbnRdO1xuICAgICAgaVxuICAgIDs7XG5cbiAgICBsZXQgZXhhbXBsZXMgPSBbIDA7IDE7IDB4MUZGRl9GRkZGOyBJbnQubWF4X3ZhbHVlIF1cbiAgZW5kXG5cbiAgbGV0IHR1cGxlX2lkX21hc2sgPSAoMSBsc2wgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzKSAtIDFcblxuICBtb2R1bGUgUG9pbnRlciA6IHNpZ1xuICAgICgqIFtQb2ludGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgc3VtIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IE5vcm1hbCBvZiB7IGhlYWRlcl9pbmRleCA6IGludDsgbWFza2VkX3R1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgVGhlIGVuY29kaW5nIGlzIGNob3NlbiB0byBvcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gb3BlcmF0aW9uLCBuYW1lbHkgdHVwbGUtc2xvdFxuICAgICAgIGFjY2VzcywgdGhlIFtzbG90X2luZGV4XSBmdW5jdGlvbi4gIFRoZSBlbmNvZGluZyBpcyBkZXNpZ25lZCBzbyB0aGF0IFtzbG90X2luZGV4XVxuICAgICAgIHByb2R1Y2VzIGEgbmVnYXRpdmUgbnVtYmVyIGZvciBbTnVsbF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHN1YnNlcXVlbnQgYXJyYXkgYm91bmRzXG4gICAgICAgY2hlY2sgdG8gZmFpbC4gKilcblxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHBoeXNfY29tcGFyZSA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgcGh5c19lcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiBUaGUgbnVsbCBwb2ludGVyLiAgW251bGxdIGlzIGEgZnVuY3Rpb24gZHVlIHRvIGlzc3VlcyB3aXRoIHRoZSB2YWx1ZSByZXN0cmljdGlvbi4gKilcblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG5cbiAgICAoKiBOb3JtYWwgcG9pbnRlcnMuICopXG5cbiAgICB2YWwgY3JlYXRlIDogaGVhZGVyX2luZGV4OmludCAtPiBUdXBsZV9pZC50IC0+IF8gdFxuICAgIHZhbCBoZWFkZXJfaW5kZXggOiBfIHQgLT4gaW50XG4gICAgdmFsIG1hc2tlZF90dXBsZV9pZCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgc2xvdF9pbmRleCA6IF8gdCAtPiAoXywgXykgU2xvdC50IC0+IGludFxuICAgIHZhbCBmaXJzdF9zbG90X2luZGV4IDogXyB0IC0+IGludFxuXG4gICAgbW9kdWxlIElkIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICAgIHZhbCBvZl9pbnQ2MyA6IEludDYzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIHRvX2lkIDogXyB0IC0+IElkLnRcbiAgICB2YWwgb2ZfaWRfZXhuIDogSWQudCAtPiBfIHRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogQSBwb2ludGVyIGlzIGVpdGhlciBbbnVsbF0gb3IgdGhlIChwb3NpdGl2ZSkgaW5kZXggaW4gdGhlIHBvb2wgb2YgdGhlIG5leHQtZnJlZVxuICAgICAgIGZpZWxkIHByZWNlZWRpbmcgdGhlIHR1cGxlJ3Mgc2xvdHMuICopXG4gICAgdHlwZSAnc2xvdHMgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfIHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8UG9vbC5Qb2ludGVyLnQ6IDB4JTA4eD5cIiB0KVxuICAgIGxldCBwaHlzX2VxdWFsICh0MSA6IF8gdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG4gICAgbGV0IHBoeXNfY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgbnVsbCAoKSA9IC1tYXhfc2xvdCAtIDFcbiAgICBsZXQgaXNfbnVsbCB0ID0gcGh5c19lcXVhbCB0IChudWxsICgpKVxuXG4gICAgKCogW251bGxdIG11c3QgYmUgc3VjaCB0aGF0IFtudWxsICsgc2xvdF0gaXMgYW4gaW52YWxpZCBhcnJheSBpbmRleCBmb3IgYWxsIHNsb3RzLlxuICAgICAgIE90aGVyd2lzZSBnZXQvc2V0IG9uIHRoZSBudWxsIHBvaW50ZXIgbWF5IGxlYWQgdG8gYSBzZWdmYXVsdC4gKilcbiAgICBsZXQldGVzdCBfID0gbnVsbCAoKSArIG1heF9zbG90IDwgMFxuXG4gICAgbGV0IGNyZWF0ZSB+aGVhZGVyX2luZGV4ICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID1cbiAgICAgIGhlYWRlcl9pbmRleFxuICAgICAgbG9yICgoVHVwbGVfaWQudG9faW50IHR1cGxlX2lkIGxhbmQgdHVwbGVfaWRfbWFzaykgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKVxuICAgIDs7XG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X21hc2sgPSAoMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpIC0gMVxuICAgIGxldCBtYXNrZWRfdHVwbGVfaWQgdCA9IHQgbHNyIGFycmF5X2luZGV4X251bV9iaXRzXG4gICAgbGV0IGhlYWRlcl9pbmRleCB0ID0gdCBsYW5kIGhlYWRlcl9pbmRleF9tYXNrXG4gICAgbGV0IGludmFyaWFudCBfIHQgPSBpZiBub3QgKGlzX251bGwgdCkgdGhlbiBhc3NlcnQgKGhlYWRlcl9pbmRleCB0ID4gMClcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9IGludmFyaWFudCBpZ25vcmUgKG51bGwgKCkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gdHVwbGVfaWQgLT5cbiAgICAgICAgaW52YXJpYW50IGlnbm9yZSAoY3JlYXRlIH5oZWFkZXJfaW5kZXg6MSB0dXBsZV9pZCkpXG4gICAgOztcblxuICAgIGxldCBzbG90X2luZGV4IHQgc2xvdCA9IGhlYWRlcl9pbmRleCB0ICsgc2xvdFxuICAgIGxldCBmaXJzdF9zbG90X2luZGV4IHQgPSBzbG90X2luZGV4IHQgU2xvdC50MFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgZW5kXG5cbiAgICBsZXQgdG9faWQgdCA9IElkLm9mX2ludCB0XG5cbiAgICBsZXQgb2ZfaWRfZXhuIGlkID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdCA9IElkLnRvX2ludF9leG4gaWQgaW5cbiAgICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2hvdWxkX2VxdWFsID1cbiAgICAgICAgICAgIGNyZWF0ZSB+aGVhZGVyX2luZGV4OihoZWFkZXJfaW5kZXggdCkgKFR1cGxlX2lkLm9mX2ludCAobWFza2VkX3R1cGxlX2lkIHQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCB0IHNob3VsZF9lcXVhbFxuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJzaG91bGQgZXF1YWxcIiBzaG91bGRfZXF1YWwgWyVzZXhwX29mOiBfIHRdKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9pbnRlci5vZl9pZF9leG4gZ290IHN0cmFuZ2UgaWRcIlxuICAgICAgICAgIChpZCwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogSWQudCAqIGV4bl1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGVhZGVyIDogc2lnXG4gICAgKCogQSBbSGVhZGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgRnJlZSBvZiB7IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiBpbnQgfVxuICAgICAgICAgfCBVc2VkIG9mIHsgdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGZyZWUsIGl0cyBoZWFkZXIgaXMgc2V0IHRvIGVpdGhlciBbTnVsbF0gb3IgW0ZyZWVdIHdpdGhcbiAgICAgICBbbmV4dF9mcmVlX2hlYWRlcl9pbmRleF0gaW5kaWNhdGluZyB0aGUgaGVhZGVyIG9mIHRoZSBuZXh0IHR1cGxlIG9uIHRoZSBmcmVlIGxpc3QuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBpbiB1c2UsIGl0IGhlYWRlciBpcyBzZXQgdG8gW1VzZWRdLiAqKVxuXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdFxuICAgIHZhbCBpc19udWxsIDogdCAtPiBib29sXG4gICAgdmFsIGZyZWUgOiBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmludCAtPiB0XG4gICAgdmFsIGlzX2ZyZWUgOiB0IC0+IGJvb2xcbiAgICB2YWwgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IHQgLT4gaW50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc19mcmVlIHRdICopXG5cbiAgICB2YWwgdXNlZCA6IFR1cGxlX2lkLnQgLT4gdFxuICAgIHZhbCBpc191c2VkIDogdCAtPiBib29sXG4gICAgdmFsIHR1cGxlX2lkIDogdCAtPiBUdXBsZV9pZC50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc191c2VkIHRdICopXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludFxuXG4gICAgbGV0IG51bGwgPSAwXG4gICAgbGV0IGlzX251bGwgdCA9IHQgPSAwXG5cbiAgICAoKiBXZSBrbm93IHRoYXQgaGVhZGVyIGluZGljZXMgYXJlIFs+IDBdLCBiZWNhdXNlIGluZGV4IFswXSBob2xkcyB0aGUgbWV0YWRhdGEuICopXG4gICAgbGV0IGZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXggPSBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XG4gICAgbGV0IGlzX2ZyZWUgdCA9IHQgPiAwXG4gICAgbGV0IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCA9IHRcbiAgICBsZXQgdXNlZCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9IC0xIC0gKHR1cGxlX2lkIDo+IGludClcbiAgICBsZXQgaXNfdXNlZCB0ID0gdCA8IDBcbiAgICBsZXQgdHVwbGVfaWQgdCA9IFR1cGxlX2lkLm9mX2ludCAoLSh0ICsgMSkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gaWQgLT5cbiAgICAgICAgbGV0IHQgPSB1c2VkIGlkIGluXG4gICAgICAgIGFzc2VydCAoaXNfdXNlZCB0KTtcbiAgICAgICAgYXNzZXJ0IChUdXBsZV9pZC5lcXVhbCAodHVwbGVfaWQgdCkgaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICB0aGVuIFNleHAuQXRvbSBcIm51bGxcIlxuICAgICAgZWxzZSBpZiBpc19mcmVlIHRcbiAgICAgIHRoZW4gU2V4cC4oTGlzdCBbIEF0b20gXCJGcmVlXCI7IEF0b20gKEludC50b19zdHJpbmcgKG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCkpIF0pXG4gICAgICBlbHNlIFNleHAuKExpc3QgWyBBdG9tIFwiVXNlZFwiOyBBdG9tIChUdXBsZV9pZC50b19zdHJpbmcgKHR1cGxlX2lkIHQpKSBdKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZXRhZGF0YV9pbmRleCA9IDBcbiAgbGV0IHN0YXJ0X29mX3R1cGxlc19pbmRleCA9IDFcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIChtYXhfYXJyYXlfbGVuZ3RoIC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvICgxICsgc2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgZm9yIHNsb3RzX3Blcl90dXBsZSA9IDEgdG8gbWF4X3Nsb3QgZG9cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICgoMSArIHNsb3RzX3Blcl90dXBsZSkgKiBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgPD0gbWF4X2FycmF5X2xlbmd0aClcbiAgICBkb25lXG4gIDs7XG5cbiAgbW9kdWxlIE1ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7ICgqIFtzbG90c19wZXJfdHVwbGVdIGlzIG51bWJlciBvZiBzbG90cyBpbiBhIHR1cGxlIGFzIHNlZW4gYnkgdGhlIHVzZXI7IGkuZS4gbm90XG4gICAgICAgICAgIGNvdW50aW5nIHRoZSBuZXh0LWZyZWUgcG9pbnRlci4gKilcbiAgICAgICAgc2xvdHNfcGVyX3R1cGxlIDogaW50XG4gICAgICA7IGNhcGFjaXR5IDogaW50XG4gICAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7IG11dGFibGUgbmV4dF9pZCA6IFR1cGxlX2lkLnRcbiAgICAgIDsgbXV0YWJsZSBmaXJzdF9mcmVlIDogSGVhZGVyLnRcbiAgICAgICgqIFtkdW1teV0gaXMgW05vbmVdIGluIGFuIHVuc2FmZSBwb29sLiAgSW4gYSBzYWZlIHBvb2wsIFtkdW1teV0gaXMgW1NvbWUgYV0sIHdpdGhcbiAgICAgICAgIFtVbmlmb3JtX2FycmF5Lmxlbmd0aCBhID0gc2xvdHNfcGVyX3R1cGxlXS4gIFtkdW1teV0gaXMgYWN0dWFsbHkgYSB0dXBsZSB2YWx1ZVxuICAgICAgICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlIChjb3JyZXNwb25kaW5nIHRvIFsnc2xvdHNdKSwgYnV0IHdlIG1ha2UgdGhlIHR5cGUgb2ZcbiAgICAgICAgIFtkdW1teV0gYmUgW09iai50IFVuaWZvcm1fYXJyYXkudF0gYmVjYXVzZSB3ZSBjYW4ndCB3cml0ZSB0aGF0IHR5cGUgaGVyZS4gIEFsc28sXG4gICAgICAgICB0aGUgcHVycG9zZSBvZiBbZHVtbXldIGlzIHRvIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQsIG1ha2luZyBbZHVtbXldIGFuIFtPYmoudFxuICAgICAgICAgVW5pZm9ybV9hcnJheS50XSBsZXRzIHVzIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQgdXNpbmcgW1VuaWZvcm1fYXJyYXkuYmxpdF1cbiAgICAgICAgIGZyb20gW2R1bW15XSB0byB0aGUgcG9vbCwgd2hpY2ggaXMgYW4gW09iai50IFVuaWZvcm1fYXJyYXkudF0uICopXG4gICAgICA7IGR1bW15IDogKE9iai50IFVuaWZvcm1fYXJyYXkudFtAc2V4cC5vcGFxdWVdKSBvcHRpb25cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdCA9IDEgKyB0LnNsb3RzX3Blcl90dXBsZVxuICAgIGxldCBhcnJheV9sZW5ndGggdCA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0LmNhcGFjaXR5ICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgICAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHRcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHR1cGxlX251bSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtICsgMVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gdC5sZW5ndGggPSB0LmNhcGFjaXR5XG4gIGVuZFxuXG4gIG9wZW4gTWV0YWRhdGFcblxuICAoKiBXZSB1c2UgdHlwZSBbT2JqLnRdIGJlY2F1c2UgdGhlIGFycmF5IGhvbGRzIGEgbWl4IG9mIGludGVnZXJzIGFzIHdlbGwgYXMgT0NhbWwgdmFsdWVzXG4gICAgIG9mIGFyYml0cmFyeSB0eXBlLiAqKVxuICB0eXBlICdzbG90cyB0ID0gT2JqLnQgVW5pZm9ybV9hcnJheS50XG5cbiAgbGV0IG1ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBtZXRhZGF0YV9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gc2xvdHMgTWV0YWRhdGEudClcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPSAobWV0YWRhdGEgdCkubGVuZ3RoXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl90eSB0ID0gTWV0YWRhdGEuc2V4cF9vZl90IHNleHBfb2ZfdHkgKG1ldGFkYXRhIHQpXG5cbiAgKCogQmVjYXVzZSBbdW5zYWZlX2hlYWRlcl0gYW5kIFt1bnNhZmVfc2V0X2hlYWRlcl0gZG8gbm90IGRvIGEgYm91bmRzIGNoZWNrLCBvbmUgbXVzdCBiZVxuICAgICBzdXJlIHRoYXQgb25lIGhhcyBhIHZhbGlkIFtoZWFkZXJfaW5kZXhdIGJlZm9yZSBjYWxsaW5nIHRoZW0uICopXG4gIGxldCB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaGVhZGVyX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBIZWFkZXIudClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChoZWFkZXIgOiBIZWFkZXIudCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGhlYWRlcl9pbmRleCAoaGVhZGVyIDo+IGludClcbiAgOztcblxuICBsZXQgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGhlYWRlcl9pbmRleCA+PSBzdGFydF9vZl90dXBsZXNfaW5kZXggJiYgaGVhZGVyX2luZGV4IDwgVW5pZm9ybV9hcnJheS5sZW5ndGggdFxuICA7O1xuXG4gIGxldCB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlciA9XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICBIZWFkZXIuaXNfdXNlZCBoZWFkZXJcbiAgICAmJiBUdXBsZV9pZC50b19pbnQgKEhlYWRlci50dXBsZV9pZCBoZWFkZXIpIGxhbmQgdHVwbGVfaWRfbWFza1xuICAgICAgID0gUG9pbnRlci5tYXNrZWRfdHVwbGVfaWQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpXG4gICAgKCogQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgcG9pbnRlciBpc24ndCBbbnVsbF0gYW5kIGlzIGluIGJvdW5kcywgc28gd2Uga25vdyBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiBhIGhlYWRlciwgc2luY2Ugd2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFsbCBwb2ludGVycyBvdGhlciB0aGFuXG4gICAgICAgW251bGxdIGFyZS4gKilcbiAgICAmJiB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBpZF9vZl9wb2ludGVyIF90IHBvaW50ZXIgPSBQb2ludGVyLnRvX2lkIHBvaW50ZXJcblxuICBsZXQgaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4XG4gICAgJiYgMFxuICAgICAgID0gKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleClcbiAgICAgICAgIG1vZCBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICB0cnlcbiAgICAgIGxldCBwb2ludGVyID0gUG9pbnRlci5vZl9pZF9leG4gaWQgaW5cbiAgICAgIGlmIG5vdCAoUG9pbnRlci5pc19udWxsIHBvaW50ZXIpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICAgICAgaWYgbm90IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KVxuICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiaW52YWxpZCBoZWFkZXIgaW5kZXhcIiBoZWFkZXJfaW5kZXggWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICBpZiBub3QgKHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyKSB0aGVuIGZhaWx3aXRoIFwicG9pbnRlciBub3QgbGl2ZVwiKTtcbiAgICAgIHBvaW50ZXJcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5wb2ludGVyX29mX2lkX2V4biBnb3QgaW52YWxpZCBpZFwiXG4gICAgICAgIChpZCwgdCwgZXhuKVxuICAgICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudCAqIF8gdCAqIGV4bl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCBtZXRhZGF0YSkgaW5cbiAgICAgIE1ldGFkYXRhLkZpZWxkcy5pdGVyXG4gICAgICAgIH5zbG90c19wZXJfdHVwbGU6KGNoZWNrIChmdW4gc2xvdHNfcGVyX3R1cGxlIC0+IGFzc2VydCAoc2xvdHNfcGVyX3R1cGxlID4gMCkpKVxuICAgICAgICB+Y2FwYWNpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY2FwYWNpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggdCA9IE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkpKVxuICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IG1ldGFkYXRhLmNhcGFjaXR5KSkpXG4gICAgICAgIH5uZXh0X2lkOihjaGVjayBUdXBsZV9pZC5pbnZhcmlhbnQpXG4gICAgICAgIH5maXJzdF9mcmVlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcnN0X2ZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgZnJlZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm1ldGFkYXRhLmNhcGFjaXR5IGZhbHNlIGluXG4gICAgICAgICAgICAgbGV0IHIgPSByZWYgZmlyc3RfZnJlZSBpblxuICAgICAgICAgICAgIHdoaWxlIG5vdCAoSGVhZGVyLmlzX251bGwgIXIpIGRvXG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gIXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoSGVhZGVyLmlzX2ZyZWUgaGVhZGVyKTtcbiAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBoZWFkZXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCk7XG4gICAgICAgICAgICAgICBsZXQgdHVwbGVfbnVtID0gaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSBtZXRhZGF0YSB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICBpZiBmcmVlLih0dXBsZV9udW0pXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiY3ljbGUgaW4gZnJlZSBsaXN0XCIgdHVwbGVfbnVtIFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgICAgICAgIGZyZWUuKHR1cGxlX251bSkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgIHIgOj0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXhcbiAgICAgICAgICAgICBkb25lKSlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHVtbXkgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBpZiBIZWFkZXIuaXNfZnJlZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0X3Nsb3QgPSB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgICBmb3Igc2xvdCA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChPYmouaXNfaW50IChVbmlmb3JtX2FycmF5LmdldCB0IChmaXJzdF9zbG90ICsgc2xvdCkpKVxuICAgICAgICAgICAgICAgICAgIGRvbmUpXG4gICAgICAgICAgICAgICBkb25lKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biwgdCkgWyVzZXhwX29mOiBleG4gKiBfIHRdXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPSAobWV0YWRhdGEgdCkuY2FwYWNpdHlcbiAgbGV0IGlzX2Z1bGwgdCA9IE1ldGFkYXRhLmlzX2Z1bGwgKG1ldGFkYXRhIHQpXG5cbiAgbGV0IHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleCA9XG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IG1ldGFkYXRhLmZpcnN0X2ZyZWU7XG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSBIZWFkZXIuZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleDpoZWFkZXJfaW5kZXhcbiAgOztcblxuICBsZXQgc2V0X21ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIG1ldGFkYXRhID1cbiAgICBVbmlmb3JtX2FycmF5LnNldCB0IG1ldGFkYXRhX2luZGV4IChPYmoucmVwciAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlX2FycmF5ICh0eXBlIHNsb3RzKSAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSA6IHNsb3RzIHQgPVxuICAgIGxldCB0ID0gVW5pZm9ybV9hcnJheS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YTtcbiAgICB0XG4gIDs7XG5cbiAgKCogSW5pdGlhbGl6ZSB0dXBsZXMgbnVtYmVyZWQgZnJvbSBbbG9dIChpbmNsdXNpdmUpIHVwIHRvIFtoaV0gKGV4Y2x1c2l2ZSkuICBGb3IgZWFjaFxuICAgICB0dXBsZSwgdGhpcyBwdXRzIGR1bW15IHZhbHVlcyBpbiB0aGUgdHVwbGUncyBzbG90cyBhbmQgYWRkcyB0aGUgdHVwbGUgdG8gdGhlIGZyZWVcbiAgICAgbGlzdC4gKilcbiAgbGV0IHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvIH5oaSA9XG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSBsbyB0byBoaSAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOih0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgZm9yIHR1cGxlX251bSA9IGhpIC0gMSBkb3dudG8gbG8gZG9cbiAgICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0XG4gICAgICAgIHRcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgfmhlYWRlcl9pbmRleDoodHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuY3JlYXRlIGdvdCBpbnZhbGlkIGNhcGFjaXR5XCIgY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBzbG90c19wZXJfdHVwbGUgPSBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgaW5cbiAgICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBjYXBhY2l0eSA+IG1heF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5jcmVhdGUgZ290IHRvbyBsYXJnZSBjYXBhY2l0eVwiXG4gICAgICAgIChjYXBhY2l0eSwgYG1heCBtYXhfY2FwYWNpdHkpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4IG9mIGludCBdXTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gVHVwbGVfaWQuaW5pdFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG86MCB+aGk6Y2FwYWNpdHk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUgKHR5cGUgdHVwbGUpIChzbG90cyA6ICh0dXBsZSwgXykgU2xvdHMudCkgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgbGV0IGR1bW15ID1cbiAgICAgIGlmIFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyA9IDFcbiAgICAgIHRoZW4gVW5pZm9ybV9hcnJheS5zaW5nbGV0b24gKE9iai5yZXByIChkdW1teSA6IHR1cGxlKSlcbiAgICAgIGVsc2UgKE9iai5tYWdpYyAoZHVtbXkgOiB0dXBsZSkgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15OihTb21lIGR1bW15KVxuICA7O1xuXG4gICgqIFB1cmdlIGEgcG9vbCBhbmQgbWFrZSBpdCB1bnVzYWJsZS4gKilcbiAgbGV0IGRlc3Ryb3kgdCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICgqIFdlIGNsZWFyIG91dCBhbGwgdGhlIHBvb2wncyBlbnRyaWVzLCB3aGljaCBjYXVzZXMgYWxsIHBvaW50ZXJzIHRvIGJlIGludmFsaWQuICBUaGlzXG4gICAgICAgYWxzbyBwcmV2ZW50cyB0aGUgZGVzdHJveWVkIHBvb2wgZnJvbSB1bm5lY2Vzc2FyaWx5IGtlZXBpbmcgaGVhcCBibG9ja3MgYWxpdmUuXG4gICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIFtmcmVlXWluZyBhbGwgdGhlIGVudHJpZXMgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHdlIG1ha2UgdGhlXG4gICAgICAgZnJlZSBsaXN0IGVtcHR5IGFzIHdlbGwuICopXG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZm9yIGkgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdCAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKE9iai5yZXByIDApXG4gICAgICAgZG9uZVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IEhlYWRlci5udWxsO1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KGhlYWRlcl9pbmRleCArIDEpXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5ID0gMFxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBtZXRhZGF0YS5uZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teSA9IG1ldGFkYXRhLmR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldFtAY29sZF0gZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgbGV0IHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIDsgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICAgICAgOyBsZW5ndGhcbiAgICAgICAgOyBuZXh0X2lkXG4gICAgICAgIDsgZmlyc3RfZnJlZSA9IF9cbiAgICAgICAgOyBkdW1teVxuICAgICAgICB9XG4gICAgICA9XG4gICAgICBtZXRhZGF0YSB0XG4gICAgaW5cbiAgICBsZXQgY2FwYWNpdHkgPVxuICAgICAgbWluIChtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSkgKGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkpXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5ncm93IGNhbm5vdCBncm93IHBvb2w7IGNhcGFjaXR5IGFscmVhZHkgYXQgbWF4aW11bVwiXG4gICAgICAgIGNhcGFjaXR5XG4gICAgICAgIFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoXG4gICAgICA7IG5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCcgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6dFxuICAgICAgfnNyY19wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+ZHN0OnQnXG4gICAgICB+ZHN0X3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5sZW46KG9sZF9jYXBhY2l0eSAqIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhKTtcbiAgICBkZXN0cm95IHQ7XG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCcgbWV0YWRhdGEgfmxvOm9sZF9jYXBhY2l0eSB+aGk6Y2FwYWNpdHk7XG4gICAgZm9yIHR1cGxlX251bSA9IG9sZF9jYXBhY2l0eSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCcgfmhlYWRlcl9pbmRleCBpblxuICAgICAgaWYgbm90IChIZWFkZXIuaXNfdXNlZCBoZWFkZXIpXG4gICAgICB0aGVuIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQnIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXhcbiAgICBkb25lO1xuICAgIHQnXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9tYWxsb2NfZnVsbCB0ID1cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wubWFsbG9jIG9mIGZ1bGwgcG9vbFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIDs7XG5cbiAgbGV0IG1hbGxvYyAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA6IHNsb3RzIFBvaW50ZXIudCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBmaXJzdF9mcmVlID0gbWV0YWRhdGEuZmlyc3RfZnJlZSBpblxuICAgIGlmIEhlYWRlci5pc19udWxsIGZpcnN0X2ZyZWUgdGhlbiByYWlzZV9tYWxsb2NfZnVsbCB0O1xuICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBmaXJzdF9mcmVlIGluXG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleDtcbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoICsgMTtcbiAgICBsZXQgdHVwbGVfaWQgPSBtZXRhZGF0YS5uZXh0X2lkIGluXG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChIZWFkZXIudXNlZCB0dXBsZV9pZCk7XG4gICAgbWV0YWRhdGEubmV4dF9pZCA8LSBUdXBsZV9pZC5uZXh0IHR1cGxlX2lkO1xuICAgIFBvaW50ZXIuY3JlYXRlIH5oZWFkZXJfaW5kZXggdHVwbGVfaWRcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCAtIDE7XG4gICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKTtcbiAgICBtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcG9zID0gUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIgaW5cbiAgICAgIGZvciBpID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCAocG9zICsgaSlcbiAgICAgIGRvbmVcbiAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIH5kc3Q6dFxuICAgICAgICB+ZHN0X3BvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICAoKiBDaGVjayBbcG9pbnRlcl9pc192YWxpZF0gdG86XG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgbnVsbCBwb2ludGVyXG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgZnJlZSBwb2ludGVyICh0aGlzIHdvdWxkIGxlYWQgdG8gYSBwb29sIGluY29uc2lzdGVuY3kpXG4gICAgICAgLSBiZSBhYmxlIHRvIHVzZSB1bnNhZmUgZnVuY3Rpb25zIGFmdGVyLiAqKVxuICAgIGlmIG5vdCAocG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmZyZWUgb2YgaW52YWxpZCBwb2ludGVyXCJcbiAgICAgICAgKHBvaW50ZXIsIHQpXG4gICAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnQgKiBfIHRdO1xuICAgIHVuc2FmZV9mcmVlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MiB0IGEwIGExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxNCkgKE9iai5yZXByIGExMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBnZXQgdCBwIHNsb3QgPSBPYmoub2JqIChVbmlmb3JtX2FycmF5LmdldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcblxuICBsZXQgdW5zYWZlX2dldCB0IHAgc2xvdCA9XG4gICAgT2JqLm9iaiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwIHNsb3QgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuXG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlICh0eXBlIHR1cGxlKSAodCA6ICh0dXBsZSwgXykgU2xvdHMudCB0KSBwb2ludGVyID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGxlbiA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGxlbiA9IDFcbiAgICB0aGVuIGdldCB0IHBvaW50ZXIgU2xvdC50MFxuICAgIGVsc2VcbiAgICAgIChPYmoubWFnaWNcbiAgICAgICAgIChVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKSB+bGVuXG4gICAgICAgICAgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgICAgOiB0dXBsZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvb2xcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvb2xcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSA9IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6Tm9uZVxuZW5kXG5cbm1vZHVsZSBEZWJ1ZyAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgdHJ1ZVxuICBsZXQgc2hvd19tZXNzYWdlcyA9IHJlZiB0cnVlXG5cbiAgbGV0IGRlYnVnIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGxldCBwcmVmaXggPSBcIlBvb2wuXCIgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIHRzIH5mOihpbnZhcmlhbnQgaWdub3JlKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlcyB0aGVuIERlYnVnLmVwcmludHMgKGNvbmNhdCBbIHByZWZpeDsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlblxuICAgICAgRGVidWcuZXByaW50c1xuICAgICAgICAoY29uY2F0IFsgcHJlZml4OyBuYW1lOyBcIiByZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICBvcGVuIFBvaW50ZXJcblxuICAgIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfY29tcGFyZVwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2NvbXBhcmUgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2VxdWFsXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2VxdWFsIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbnVsbCB0ID1cbiAgICAgIGRlYnVnIFwiUG9pbnRlci5pc19udWxsXCIgW10gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX251bGwgdClcbiAgICA7O1xuXG4gICAgbGV0IG51bGwgPSBudWxsXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSWRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICBsZXQgb2ZfaW50NjMgaSA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC5vZl9pbnQ2M1wiIFtdIGkgWyVzZXhwX29mOiBJbnQ2My50XSBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICBvZl9pbnQ2MyBpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQudG9faW50NjNcIiBbXSB0IFslc2V4cF9vZjogdF0gWyVzZXhwX29mOiBJbnQ2My50XSAoZnVuICgpIC0+XG4gICAgICAgICAgdG9faW50NjMgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcImlkX29mX3BvaW50ZXJcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIChmdW4gKCkgLT4gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfb2ZfaWRfZXhuXCJcbiAgICAgIFsgdCBdXG4gICAgICBpZFxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX29mX2lkX2V4biB0IGlkKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9pc192YWxpZFwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBkZWJ1ZyBcImNyZWF0ZVwiIFtdIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkpXG4gIDs7XG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICBkZWJ1ZyBcIm1heF9jYXBhY2l0eVwiIFtdIHNsb3RzX3Blcl90dXBsZSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT5cbiAgICAgIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID1cbiAgICBkZWJ1ZyBcImNhcGFjaXR5XCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT4gY2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgZGVidWdcbiAgICAgIFwiZ3Jvd1wiXG4gICAgICBbIHQgXVxuICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSlcbiAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IG9wdGlvbiBdXVxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gICAgICAoZnVuICgpIC0+IGdyb3cgP2NhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGlzX2Z1bGwgdCA9XG4gICAgZGVidWcgXCJpc19mdWxsXCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX2Z1bGwgdClcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcInVuc2FmZV9mcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIHVuc2FmZV9mcmVlIHQgcClcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwiZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+IGZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19uZXcgdCBmID0gZGVidWcgXCJuZXdcIiBbIHQgXSAoKSBbJXNleHBfb2Y6IHVuaXRdIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIGZcbiAgbGV0IG5ldzEgdCBhMCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBcImdldF90dXBsZVwiIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+XG4gICAgICBnZXRfdHVwbGUgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19nZXQgbmFtZSBmIHQgcG9pbnRlciA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPiBmIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwiZ2V0XCIgZ2V0IHQgcG9pbnRlciBzbG90XG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwidW5zYWZlX2dldFwiIHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3RcblxuICBsZXQgZGVidWdfc2V0IG5hbWUgZiB0IHBvaW50ZXIgc2xvdCBhID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICBmIHQgcG9pbnRlciBzbG90IGEpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwic2V0XCIgc2V0IHQgcG9pbnRlciBzbG90IGFcbiAgbGV0IHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInVuc2FmZV9zZXRcIiB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGFcbmVuZFxuXG5tb2R1bGUgRXJyb3JfY2hlY2sgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgbXV0YWJsZSBpc192YWxpZCA6IGJvb2xcbiAgICAgIDsgcG9pbnRlciA6ICdzbG90cyBQb2ludGVyLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IGNyZWF0ZSBwb2ludGVyID0geyBpc192YWxpZCA9IHRydWU7IHBvaW50ZXIgfVxuICAgIGxldCBudWxsICgpID0geyBpc192YWxpZCA9IGZhbHNlOyBwb2ludGVyID0gUG9pbnRlci5udWxsICgpIH1cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID0gUG9pbnRlci5waHlzX2NvbXBhcmUgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IGlzX251bGwgdCA9IFBvaW50ZXIuaXNfbnVsbCB0LnBvaW50ZXJcblxuICAgIGxldCBmb2xsb3cgdCA9XG4gICAgICBpZiBub3QgdC5pc192YWxpZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gdXNlIGludmFsaWQgcG9pbnRlclwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgICAgdC5wb2ludGVyXG4gICAgOztcblxuICAgIGxldCBpbnZhbGlkYXRlIHQgPSB0LmlzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgICBtb2R1bGUgSWQgPSBQb2ludGVyLklkXG4gIGVuZFxuXG4gIHR5cGUgJ3Nsb3RzIHQgPSAnc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfSA9XG4gICAgaXNfdmFsaWQgJiYgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXJcbiAgOztcblxuICAoKiBXZSBkb24ndCBkbyBbUG9pbnRlci5mb2xsb3cgcG9pbnRlcl0sIGJlY2F1c2UgdGhhdCB3b3VsZCBkaXNhbGxvdyBbaWRfb2ZfcG9pbnRlciB0XG4gICAgIChQb2ludGVyLm51bGwgKCkpXS4gKilcbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID0gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIuUG9pbnRlci5wb2ludGVyXG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGxldCBwb2ludGVyID0gcG9pbnRlcl9vZl9pZF9leG4gdCBpZCBpblxuICAgIGxldCBpc192YWxpZCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgaW5cbiAgICB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHlcbiAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eVxuICBsZXQgZ3JvdyA9IGdyb3dcbiAgbGV0IGlzX2Z1bGwgPSBpc19mdWxsXG4gIGxldCBnZXRfdHVwbGUgdCBwID0gZ2V0X3R1cGxlIHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBnZXQgdCBwID0gZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCA9IHVuc2FmZV9nZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHNldCB0IHAgc2xvdCB2ID0gc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB2ID0gdW5zYWZlX3NldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICB1bnNhZmVfZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuZW5kXG4iLCIoKiBCZSBzdXJlIGFuZCBmaXJzdCByZWFkIHRoZSBpbXBsZW1lbnRhdGlvbiBvdmVydmlldyBpbiB0aW1pbmdfd2hlZWxfaW50Zi5tbC5cblxuICAgQSB0aW1pbmcgd2hlZWwgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgb2YgXCJsZXZlbHNcIiwgd2hlcmUgZWFjaCBsZXZlbCBpcyBhbiBhcnJheSBvZlxuICAgXCJzbG90c1wiLiAgRWFjaCBzbG90IHJlcHJlc2VudHMgYSByYW5nZSBvZiBrZXlzLCBhbmQgaG9sZHMgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoXG4gICB0aG9zZSBrZXlzLiAgRWFjaCBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IHR3byBwYXJhbWV0ZXJzOiBbYml0c10sIHRoZSBudW1iZXIgb2Yga2V5IGJpdHNcbiAgIHRoYXQgdGhhdCBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IgZGlzdGluZ3Vpc2hpbmcsIGFuZCBbYml0c19wZXJfc2xvdF0sIHRoZSBzaXplIG9mIHRoZVxuICAgcmFuZ2Ugb2Yga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgc2xvdCBpbiB0aGUgYXJyYXkuICBDb25jZXB0dWFsbHksIGVhY2ggbGV2ZWxcbiAgIGJyZWFrcyB1cCBhbGwgcG9zc2libGUga2V5cyBpbnRvIHJhbmdlcyBvZiBzaXplIFsyXmJpdHNfcGVyX3Nsb3RdLiAgVGhlIGxlbmd0aCBvZiBhXG4gICBsZXZlbCBhcnJheSBpcyBbMl5iaXRzXSwgYW5kIHRoZSBhcnJheSBpcyB1c2VkIGxpa2UgYSBjaXJjdWxhciBidWZmZXIgdG8gdHJhdmVyc2UgdGhlXG4gICByYW5nZXMgYXMgdGhlIHRpbWluZyB3aGVlbCdzIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcy4gIEEga2V5IFtrXSwgaWYgc3RvcmVkIGluIHRoZVxuICAgbGV2ZWwsIGlzIHN0b3JlZCBhdCBpbmRleCBbKGsgLyAyXmJpdHNfcGVyX3Nsb3QpIG1vZCAyXmJpdHNdLlxuXG4gICBUaGUgc2V0dGluZ3Mgb2YgdGhlIFtiaXRzXSB2YWx1ZXMgYXJlIGNvbmZpZ3VyYWJsZSBieSB1c2VyIGNvZGUgdXNpbmcgW0xldmVsX2JpdHNdLFxuICAgYWx0aG91Z2ggdGhlcmUgaXMgYSByZWFzb25hYmxlIGRlZmF1bHQgc2V0dGluZy4gIEdpdmVuIHRoZSBbYml0c10gdmFsdWVzLCB0aGVcbiAgIFtiaXRzX3Blcl9zbG90XSBhcmUgY2hvc2VuIHNvIHRoYXQgW2JpdHNfcGVyX3Nsb3RdIGF0IGxldmVsIFtpXSBpcyB0aGUgc3VtIG9mIHRoZVxuICAgW2JpdHNdIGF0IGFsbCBsb3dlciBsZXZlbHMuICBUaHVzLCBhIHNsb3QncyByYW5nZSBhdCBsZXZlbCBbaV0gaXMgYXMgbGFyZ2UgYXMgdGhlXG4gICBlbnRpcmUgcmFuZ2Ugb2YgdGhlIGFycmF5IGF0IGxldmVsIFtpIC0gMV0uXG5cbiAgIEVhY2ggbGV2ZWwgaGFzIGEgW21pbl9hbGxvd2VkX2tleV0gYW5kIGEgW21heF9hbGxvd2VkX2tleV0gdGhhdCBkZXRlcm1pbmUgdGhlIHJhbmdlIG9mXG4gICBrZXlzIHRoYXQgaXQgY3VycmVudGx5IHJlcHJlc2VudHMuICBUaGUgY3J1Y2lhbCBpbnZhcmlhbnQgb2YgdGhlIHRpbWluZyB3aGVlbCBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGhhdCB0aGUgW21pbl9hbGxvd2VkX2tleV0gYXQgbGV2ZWwgW2ldIGlzIG5vIG1vcmUgdGhhbiB0aGVcbiAgIFttYXhfYWxsb3dlZF9rZXkgKyAxXSBvZiBsZXZlbCBbaSAtIDFdLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGxldmVscyBjYW4gcmVwcmVzZW50IGFsbFxuICAga2V5cyBmcm9tIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgbG93ZXN0IGxldmVsIHRvIHRoZSBbbWF4X2FsbG93ZWRfa2V5XSBvZiB0aGVcbiAgIGhpZ2hlc3QgbGV2ZWwuICBUaGUgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJlc3RvcmluZ1xuICAgdGhpcyBpbnZhcmlhbnQuXG5cbiAgIEF0IGxldmVsIDAsIFtiaXRzX3Blcl9zbG90ID0gMF0sIGFuZCBzbyB0aGUgc2l6ZSBvZiBlYWNoIHNsb3QgaXMgWzFdLiAgVGhhdCBpcywgbGV2ZWwgMFxuICAgcHJlY2lzZWx5IGRpc3Rpbmd1aXNoZXMgYWxsIHRoZSBrZXlzIGJldHdlZW4gaXRzIFttaW5fYWxsb3dlZF9rZXldICh3aGljaCBpcyB0aGUgc2FtZVxuICAgYXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsKSBhbmQgW21heF9hbGxvd2VkX2tleV0uICBBcyB0aGVcbiAgIGxldmVscyBpbmNyZWFzZSwgdGhlIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgdGhlIFtiaXRzX3Blcl9zbG90XSBpbmNyZWFzZXMsIGFuZFxuICAgdGhlIHJhbmdlIG9mIGtleXMgc3RvcmVkIGluIHRoZSBsZXZlbCBpbmNyZWFzZXMgKGRyYW1hdGljYWxseSkuXG5cbiAgIFRoZSBpZGVhIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBoaWVyYXJjaGljYWwgYXBwcm9hY2ggZGVzY3JpYmVkIGluOlxuXG4gICB7dlxuICAgICBIYXNoZWQgYW5kIEhpZXJhcmNoaWNhbCBUaW1pbmcgV2hlZWxzOlxuICAgICBFZmZpY2llbnQgRGF0YSBTdHJ1Y3R1cmVzIGZvciBJbXBsZW1lbnRpbmcgYSBUaW1lciBGYWNpbGl0eVxuXG4gICAgIFZhcmdoZXNlICYgTGF1Y2ssIDE5OTZcbiAgIHZ9XG5cbiAgIEhvd2V2ZXIsIHRoZSBjb2RlIGlzIGNvbXBsZXRlbHkgbmV3LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIFRpbWluZ193aGVlbF9pbnRmXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxubGV0IHNleHBfb2ZfdF9zdHlsZSA6IFsgYFByZXR0eSB8IGBJbnRlcm5hbCBdIHJlZiA9IHJlZiBgUHJldHR5XG5cbigqIFt7bWF4LG1pbn1fdGltZV0gYXJlIGJvdW5kcyBvbiB0aGUgdGltZXMgc3VwcG9ydGVkIGJ5IGEgdGltaW5nIHdoZWVsLiAqKVxuXG5sZXQgbWF4X3RpbWUgPSBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWluX3RpbWUgPSBUaW1lX25zLmVwb2NoXG5cbm1vZHVsZSBOdW1fa2V5X2JpdHMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBpbmNsdWRlIENvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgemVybyA6IHRcblxuICAoKiB2YWwgbWluX3ZhbHVlIDogdCAqKVxuXG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdzIgOiB0IC0+IEludDYzLnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBtaW5fdmFsdWUgPSAwXG5cbiAgKCoqIFdlIHN1cHBvcnQgYWxsIG5vbi1uZWdhdGl2ZSBbVGltZV9ucy50XSB2YWx1ZXMuICopXG4gIGxldCBtYXhfdmFsdWUgPSBJbnQ2My5udW1fYml0cyAtIDFcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAodCA+PSBtaW5fdmFsdWUpO1xuICAgIGFzc2VydCAodCA8PSBtYXhfdmFsdWUpXG4gIDs7XG5cbiAgbGV0IG9mX2ludCBpID1cbiAgICBpbnZhcmlhbnQgaTtcbiAgICBpXG4gIDs7XG5cbiAgbGV0ICggKyApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxICsgdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0ICggLSApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxIC0gdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHBvdzIgdCA9IEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIHRcbmVuZFxuXG5tb2R1bGUgTGV2ZWxfYml0cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBOdW1fa2V5X2JpdHMudCBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1heF9udW1fYml0cyA9IChOdW1fa2V5X2JpdHMubWF4X3ZhbHVlIDo+IGludClcbiAgbGV0IG51bV9iaXRzX2ludGVybmFsIHQgPSBMaXN0LmZvbGQgdCB+aW5pdDpOdW1fa2V5X2JpdHMuemVybyB+ZjpOdW1fa2V5X2JpdHMuKCArIClcbiAgbGV0IG51bV9iaXRzIHQgPSAobnVtX2JpdHNfaW50ZXJuYWwgdCA6PiBpbnQpXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKG5vdCAoTGlzdC5pc19lbXB0eSB0KSk7XG4gICAgTGlzdC5pdGVyIHQgfmY6KGZ1biBudW1fa2V5X2JpdHMgLT5cbiAgICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgbnVtX2tleV9iaXRzO1xuICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgbnVtX2tleV9iaXRzIE51bV9rZXlfYml0cy56ZXJvKSk7XG4gICAgTnVtX2tleV9iaXRzLmludmFyaWFudCAobnVtX2JpdHNfaW50ZXJuYWwgdClcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCB0ID0gc2V4cCB8PiBbJW9mX3NleHA6IHRdIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuID8oZXh0ZW5kX3RvX21heF9udW1fYml0cyA9IGZhbHNlKSBpbnRzID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludHMgdGhlbiBmYWlsd2l0aCBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biByZXF1aXJlcyBhIG5vbmVtcHR5IGxpc3RcIjtcbiAgICBpZiBMaXN0LmV4aXN0cyBpbnRzIH5mOihmdW4gYml0cyAtPiBiaXRzIDw9IDApXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IG5vbnBvc2l0aXZlIG51bSBiaXRzXCIgfl86KGludHMgOiBpbnQgbGlzdCldO1xuICAgIGxldCBudW1fYml0cyA9IExpc3QuZm9sZCBpbnRzIH5pbml0OjAgfmY6KCArICkgaW5cbiAgICBpZiBudW1fYml0cyA+IG1heF9udW1fYml0c1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IHRvbyBtYW55IGJpdHNcIlxuICAgICAgICAgICAgfl86KGludHMgOiBpbnQgbGlzdClcbiAgICAgICAgICAgIH5nb3Q6KG51bV9iaXRzIDogaW50KVxuICAgICAgICAgICAgKG1heF9udW1fYml0cyA6IGludCldO1xuICAgIGxldCBpbnRzID1cbiAgICAgIGlmIGV4dGVuZF90b19tYXhfbnVtX2JpdHNcbiAgICAgIHRoZW4gaW50cyBAIExpc3QuaW5pdCAobWF4X251bV9iaXRzIC0gbnVtX2JpdHMpIH5mOihjb25zdCAxKVxuICAgICAgZWxzZSBpbnRzXG4gICAgaW5cbiAgICBMaXN0Lm1hcCBpbnRzIH5mOk51bV9rZXlfYml0cy5vZl9pbnRcbiAgOztcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gWyAxMTsgMTA7IDEwOyAxMDsgMTA7IDEwOyAxIF1cblxuICBsZXQgdHJpbSB0IH5tYXhfbnVtX2JpdHMgPVxuICAgIGlmIE51bV9rZXlfYml0cy4oIDw9ICkgKG51bV9iaXRzX2ludGVybmFsIHQpIG1heF9udW1fYml0c1xuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHQgfnJlbWFpbmluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgYiA6OiB0IC0+XG4gICAgICAgICAgaWYgTnVtX2tleV9iaXRzLiggPj0gKSBiIHJlbWFpbmluZ1xuICAgICAgICAgIHRoZW4gWyByZW1haW5pbmcgXVxuICAgICAgICAgIGVsc2UgYiA6OiBsb29wIHQgfnJlbWFpbmluZzooTnVtX2tleV9iaXRzLiggLSApIHJlbWFpbmluZyBiKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCB+cmVtYWluaW5nOm1heF9udW1fYml0cylcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uIDogc2lnXG4gIGluY2x1ZGUgQWxhcm1fcHJlY2lzaW9uXG5cbiAgdmFsIG51bV9rZXlfYml0cyA6IHQgLT4gTnVtX2tleV9iaXRzLnRcbiAgdmFsIGludGVydmFsX251bSA6IHQgLT4gVGltZV9ucy50IC0+IEludDYzLnRcbiAgdmFsIGludGVydmFsX251bV9zdGFydCA6IHQgLT4gSW50NjMudCAtPiBUaW1lX25zLnRcbmVuZCA9IHN0cnVjdFxuICAoKiogW3RdIGlzIHJlcHJlc2VudGVkIGFzIHRoZSBsb2cyIG9mIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqKVxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGxldCBudW1fa2V5X2JpdHMgdCA9IHQgfD4gTnVtX2tleV9iaXRzLm9mX2ludFxuXG4gIGxldCB0b19zcGFuIHQgPVxuICAgIGlmIHQgPCAwXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24udG9fc3Bhbl0gb2YgbmVnYXRpdmUgcG93ZXIgb2YgdHdvIG5hbm9zZWNvbmRzXCIgfl86KHQgOiBpbnQpXTtcbiAgICBJbnQ2My4oc2hpZnRfbGVmdCBvbmUpIHQgfD4gVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IHw+IHRvX3NwYW4gOiBUaW1lX25zLlNwYW4udCldXG4gIGxldCBvbmVfbmFub3NlY29uZCA9IDBcbiAgbGV0IGFib3V0X29uZV9taWNyb3NlY29uZCA9IDEwXG4gIGxldCBhYm91dF9vbmVfbWlsbGlzZWNvbmQgPSAyMFxuICBsZXQgYWJvdXRfb25lX3NlY29uZCA9IDMwXG4gIGxldCBhYm91dF9vbmVfZGF5ID0gNDZcbiAgbGV0IG11bCB0IH5wb3cyID0gdCArIHBvdzJcbiAgbGV0IGRpdiB0IH5wb3cyID0gdCAtIHBvdzJcbiAgbGV0IGludGVydmFsX251bSB0IHRpbWUgPSBJbnQ2My5zaGlmdF9yaWdodCAodGltZSB8PiBUaW1lX25zLnRvX2ludDYzX25zX3NpbmNlX2Vwb2NoKSB0XG5cbiAgbGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gICAgSW50NjMuc2hpZnRfbGVmdCBpbnRlcnZhbF9udW0gdCB8PiBUaW1lX25zLm9mX2ludDYzX25zX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW5fZmxvb3JfcG93Ml9ucyBzcGFuID1cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8PSApIHNwYW4gVGltZV9ucy5TcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi5vZl9zcGFuX2Zsb29yX3BvdzJfbnNdIGdvdCBub24tcG9zaXRpdmUgc3BhblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gICAgc3BhbiB8PiBUaW1lX25zLlNwYW4udG9faW50NjNfbnMgfD4gSW50NjMuZmxvb3JfbG9nMlxuICA7O1xuXG4gIGxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG5cbiAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3NwYW5cbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3BhblxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChUaW1lX25zLlNwYW4pIChUKVxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUgKFRpbWVfbnMuU3BhbikgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGxldmVsX2JpdHNfZGVmYXVsdCA9IExldmVsX2JpdHMuZGVmYXVsdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhbGFybV9wcmVjaXNpb24gOiBBbGFybV9wcmVjaXNpb24uVW5zdGFibGUudFxuICAgIDsgbGV2ZWxfYml0cyA6IExldmVsX2JpdHMudCBbQGRlZmF1bHQgbGV2ZWxfYml0c19kZWZhdWx0XVxuICAgIDsgY2FwYWNpdHkgOiBpbnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW4gdC5hbGFybV9wcmVjaXNpb25cblxuICAoKiBbbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGxldmVsIGJpdHMgbmVlZGVkIGZvciBhXG4gICAgIHRpbWluZyB3aGVlbCB3aXRoIHRoZSBzcGVjaWZpZWQgW2FsYXJtX3ByZWNpc2lvbl0gdG8gYmUgYWJsZSB0byByZXByZXNlbnQgYWxsXG4gICAgIHBvc3NpYmxlIHRpbWVzIGZyb20gW1RpbWVfbnMuZXBvY2hdIG9ud2FyZC4gIFNpbmNlIG5vbi1uZWdhdGl2ZSB0aW1lcyBoYXZlIDYyIGJpdHMsXG4gICAgIHdlIHJlcXVpcmUgW0wgPD0gNjIgLSBBXSwgd2hlcmUgW0FdIGlzIHRoZSBudW1iZXIgb2YgYWxhcm0gYml0cyBhbmQgW0xdIGlzIHRoZVxuICAgICBudW1iZXIgb2YgbGV2ZWwgYml0cy4gKilcbiAgbGV0IG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24gPVxuICAgIE51bV9rZXlfYml0cy4oIC0gKVxuICAgICAgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgICAgKEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBOdW1fa2V5X2JpdHMuKCA8PSApXG4gICAgICAgICAgKExldmVsX2JpdHMubnVtX2JpdHNfaW50ZXJuYWwgdC5sZXZlbF9iaXRzKVxuICAgICAgICAgIChtYXhfbnVtX2xldmVsX2JpdHMgdC5hbGFybV9wcmVjaXNpb24pKTtcbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvbjppZ25vcmVcbiAgICAgICAgfmNhcGFjaXR5Omlnbm9yZVxuICAgICAgICB+bGV2ZWxfYml0czooY2hlY2sgTGV2ZWxfYml0cy5pbnZhcmlhbnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID8obGV2ZWxfYml0cyA9IGxldmVsX2JpdHNfZGVmYXVsdCkgfmFsYXJtX3ByZWNpc2lvbiAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgTGV2ZWxfYml0cy50cmltIGxldmVsX2JpdHMgfm1heF9udW1fYml0czoobWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgICBpblxuICAgIHsgYWxhcm1fcHJlY2lzaW9uOyBsZXZlbF9iaXRzOyBjYXBhY2l0eSB9XG4gIDs7XG5cbiAgbGV0IG1pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoKSA9XG4gICAgY3JlYXRlXG4gICAgICAoKVxuICAgICAgfmFsYXJtX3ByZWNpc2lvbjpBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pY3Jvc2Vjb25kXG4gICAgICB+bGV2ZWxfYml0czooTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTA7IDEwOyA2OyA2OyA1IF0pXG4gIDs7XG5cbiAgbGV0IGR1cmF0aW9ucyB0ID1cbiAgICBMaXN0LmZvbGRpbmdfbWFwXG4gICAgICB0LmxldmVsX2JpdHNcbiAgICAgIH5pbml0OihBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uIHw+IE51bV9rZXlfYml0cy50b19pbnQpXG4gICAgICB+ZjooZnVuIG51bV9iaXRzX2FjY3VtIGxldmVsX251bV9iaXRzIC0+XG4gICAgICAgIGxldCBudW1fYml0c19hY2N1bSA9IG51bV9iaXRzX2FjY3VtICsgKGxldmVsX251bV9iaXRzIHw+IE51bV9rZXlfYml0cy50b19pbnQpIGluXG4gICAgICAgIGxldCBkdXJhdGlvbiA9XG4gICAgICAgICAgVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gICAgICAgICAgICAoaWYgbnVtX2JpdHNfYWNjdW0gPSBJbnQ2My5udW1fYml0cyAtIDFcbiAgICAgICAgICAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgICAgICAgICAgIGVsc2UgSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHNfYWNjdW0pXG4gICAgICAgIGluXG4gICAgICAgIG51bV9iaXRzX2FjY3VtLCBkdXJhdGlvbilcbiAgOztcbmVuZFxuXG5cbigqKiBUaW1pbmcgd2hlZWwgaXMgaW1wbGVtZW50ZWQgYXMgYSBwcmlvcml0eSBxdWV1ZSBpbiB3aGljaCB0aGUga2V5cyBhcmVcbiAgICBub24tbmVnYXRpdmUgaW50ZWdlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJ2YWxzIG9mIHRpbWUuICBUaGUgcHJpb3JpdHkgcXVldWUgaXNcbiAgICB1bmxpa2UgYSB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlIGluIHRoYXQgcmF0aGVyIHRoYW4gaGF2aW5nIGEgXCJkZWxldGUgbWluXCIgb3BlcmF0aW9uLFxuICAgIGl0IGhhcyBhIG5vbmRlY3JlYXNpbmcgbWluaW11bSBhbGxvd2VkIGtleSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQgdGltZSxcbiAgICBhbmQgYW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gb3BlcmF0aW9uLCB3aGljaCBpbXBsZW1lbnRzIFthZHZhbmNlX2Nsb2NrXS5cbiAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBhcyBhIHNpZGUgZWZmZWN0IHJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIHRpbWluZ1xuICAgIHdoZWVsIHdob3NlIGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG5ldyBtaW5pbXVtLCB3aGljaCBpbXBsZW1lbnRzIGZpcmluZyB0aGUgYWxhcm1zXG4gICAgd2hvc2UgdGltZSBoYXMgZXhwaXJlZC5cblxuICAgIEFkZGluZyBlbGVtZW50cyB0byBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgZnJvbSBhIHRpbWluZyB3aGVlbCB0YWtlcyBjb25zdGFudCB0aW1lLFxuICAgIHVubGlrZSBhIGhlYXAtYmFzZWQgcHJpb3JpdHkgcXVldWUgd2hpY2ggdGFrZXMgbG9nKE4pLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2ZcbiAgICBlbGVtZW50cyBpbiB0aGUgaGVhcC4gIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIHRoZVxuICAgIGFtb3VudCBvZiBpbmNyZWFzZSBpbiB0aGUgbWluLWFsbG93ZWQga2V5LCBhcyBjb21wYXJlZCB0byBsb2coTikgZm9yIGEgaGVhcC4gIEl0IGlzXG4gICAgdGhlc2UgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZXMgdGhhdCBtb3RpdmF0ZSB0aGUgZXhpc3RlbmNlIG9mIHRpbWluZyB3aGVlbHMgYW5kIG1ha2VcbiAgICB0aGVtIGEgZ29vZCBjaG9pY2UgZm9yIG1haW50YWluZyBhIHNldCBvZiBhbGFybXMuICBXaXRoIGEgdGltaW5nIHdoZWVsLCBvbmUgY2FuXG4gICAgc3VwcG9ydCBhbnkgbnVtYmVyIG9mIGFsYXJtcyBwYXlpbmcgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIGFsYXJtLCB3aGlsZSBwYXlpbmcgYVxuICAgIHNtYWxsIGNvbnN0YW50IG92ZXJoZWFkIHBlciB1bml0IG9mIHRpbWUgcGFzc2VkLlxuXG4gICAgQXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aGUgdGltaW5nIHdoZWVsIGRvZXMgYSBsYXp5IHJhZGl4IHNvcnQgb2YgdGhlXG4gICAgZWxlbWVudCBrZXlzLCB3aXRoIGxldmVsIDAgaGFuZGxpbmcgdGhlIGxlYXN0IHNpZ25pZmljYW50IFtiXzBdIGJpdHMgaW4gYSBrZXksIGFuZFxuICAgIGVhY2ggc3Vic2VxdWVudCBsZXZlbCBbaV0gaGFuZGxpbmcgdGhlIG5leHQgbW9zdCBzaWduaWZpY2FudCBbYl9pXSBiaXRzLiAgVGhlIGxldmVsc1xuICAgIGhvbGQgaW5jcmVhc2luZ2x5IGxhcmdlciByYW5nZXMgb2Yga2V5cywgd2hlcmUgdGhlIHVuaW9uIG9mIGFsbCB0aGUgbGV2ZWxzIGNhbiBob2xkXG4gICAgYW55IGtleSBmcm9tIFttaW5fYWxsb3dlZF9rZXkgdF0gdG8gW21heF9hbGxvd2VkX2tleSB0XS4gIFdoZW4gYSBrZXkgaXMgYWRkZWQgdG8gdGhlXG4gICAgdGltaW5nIHdoZWVsLCBpdCBpcyBhZGRlZCBhdCB0aGUgbG93ZXN0IHBvc3NpYmxlIGxldmVsIHRoYXQgY2FuIHN0b3JlIHRoZSBrZXkuICBBc1xuICAgIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGltaW5nLXdoZWVsIGVsZW1lbnRzIG1vdmUgZG93biBsZXZlbHMgdW50aWwgdGhleVxuICAgIHJlYWNoIGxldmVsIDAsIGFuZCB0aGVuIGFyZSBldmVudHVhbGx5IHJlbW92ZWQuICAqKVxubW9kdWxlIFByaW9yaXR5X3F1ZXVlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBLZXkgOiBJbnRlcnZhbF9udW1cblxuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgKCoqIEFuIFtFbHQudF0gcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgd2FzIGFkZGVkIHRvIGEgdGltaW5nIHdoZWVsLiAqKVxuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIGF0IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwga2V5IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCB2YWx1ZSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFbHQudFxuICBlbmRcblxuICB2YWwgcG9vbCA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAoKiogW2NyZWF0ZSA/bGV2ZWxfYml0cyAoKV0gY3JlYXRlcyBhIG5ldyBlbXB0eSB0aW1pbmcgd2hlZWwsIFt0XSwgd2l0aCBbbGVuZ3RoIHQgPSAwXVxuICAgICAgYW5kIFttaW5fYWxsb3dlZF9rZXkgdCA9IDBdLiAqKVxuICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiA/bGV2ZWxfYml0czpMZXZlbF9iaXRzLnQgLT4gdW5pdCAtPiAnYSB0XG5cbiAgKCoqIFtsZW5ndGggdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5cbiAgKCoqIFttaW5fYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1pbmltdW0ga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBUaGlzIG9ubHlcbiAgICAgIGluZGljYXRlcyB0aGUgcG9zc2liaWxpdHk7IHRoZXJlIG5lZWQgbm90IGJlIGFuIGVsZW1lbnQgW2VsdF0gaW4gW3RdIHdpdGggW0VsdC5rZXlcbiAgICAgIGVsdCA9IG1pbl9hbGxvd2VkX2tleSB0XS4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBcIm1pbl9rZXlcIiBvcGVyYXRpb24gaW4gYVxuICAgICAgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZS5cblxuICAgICAgW21pbl9hbGxvd2VkX2tleSB0XSBjYW4gaW5jcmVhc2Ugb3ZlciB0aW1lLCB2aWEgY2FsbHMgdG9cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldLiAqKVxuICB2YWwgbWluX2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgKCoqIFttYXhfYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1heGltdW0gYWxsb3dlZCBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIEFzXG4gICAgICBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHNvIGRvZXMgW21heF9hbGxvd2VkX2tleV07IGhvd2V2ZXIgaXQgaXMgbm90IHRoZSBjYXNlXG4gICAgICB0aGF0IFttYXhfYWxsb3dlZF9rZXkgdCAtIG1pbl9hbGxvd2VkX2tleSB0XSBpcyBhIGNvbnN0YW50LiAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0XG4gICAgICBbbWF4X2FsbG93ZWRfa2V5IHQgPj0gbWluX2FsbG93ZWRfa2V5IHQgKyAyXkIgLSAxXSxcbiAgICAgIHdoZXJlIFtCXSBpcyB0aGUgc3VtIG9mIHRoZSBiX2kgaW4gW2xldmVsX2JpdHNdLiAqKVxuICB2YWwgbWF4X2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgdmFsIG1pbl9lbHRfIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQudFxuICB2YWwgaW50ZXJuYWxfYWRkIDogJ2EgdCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+ICdhIC0+ICdhIEludGVybmFsX2VsdC50XG5cbiAgKCoqIFtyZW1vdmUgdCBlbHRdIHJlbW92ZXMgW2VsdF0gZnJvbSBbdF0uICBJdCBpcyBhbiBlcnJvciBpZiBbZWx0XSBpcyBub3QgY3VycmVudGx5XG4gICAgICBpbiBbdF0sIGFuZCB0aGlzIGVycm9yIG1heSBvciBtYXkgbm90IGJlIGRldGVjdGVkLiAqKVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiB1bml0XG5cbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiB1bml0XG5cbiAgKCoqIFtjbGVhciB0XSByZW1vdmVzIGFsbCBlbHRzIGZyb20gW3RdLiAqKVxuICB2YWwgY2xlYXIgOiBfIHQgLT4gdW5pdFxuXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIEVsdC50IC0+IGJvb2xcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICAoKiogW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkXSBpbmNyZWFzZXMgdGhlIG1pbmltdW0gYWxsb3dlZFxuICAgICAga2V5IGluIFt0XSB0byBba2V5XSwgYW5kIHJlbW92ZXMgYWxsIGVsZW1lbnRzIHdpdGgga2V5cyBsZXNzIHRoYW4gW2tleV0sIGFwcGx5aW5nXG4gICAgICBbaGFuZGxlX3JlbW92ZWRdIHRvIGVhY2ggZWxlbWVudCB0aGF0IGlzIHJlbW92ZWQuICBJZiBba2V5IDw9IG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIHRoZW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZG9lcyBub3RoaW5nLiAgT3RoZXJ3aXNlLCBpZlxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gcmV0dXJucyBzdWNjZXNzZnVsbHksIFttaW5fYWxsb3dlZF9rZXkgdCA9IGtleV0uXG5cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIFtrZXkgLSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICBhbHRob3VnaCBwb3NzaWJseSBsZXNzIHRpbWUuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtoYW5kbGVfcmVtb3ZlZF0gYWNjZXNzZXMgW3RdIGluIGFueSB3YXkgb3RoZXIgdGhhblxuICAgICAgW0VsdF0gZnVuY3Rpb25zLiAqKVxuICB2YWwgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IGhhbmRsZV9yZW1vdmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudFxuXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBFbHQudCAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGZpcmVfcGFzdF9hbGFybXNcbiAgICA6ICAnYSB0XG4gICAgLT4gaGFuZGxlX2ZpcmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IG5vdzpUaW1lX25zLnRcbiAgICAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIEVhY2ggc2xvdCBpbiBhIGxldmVsIGlzIGEgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXIgdG8gYSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIG9mIGVsZW1lbnRzLiAgV2UgcG9vbCB0aGUgZWxlbWVudHMgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlbSBhZnRlciB0aGV5IGFyZSByZW1vdmVkXG4gICAgICBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgKGVpdGhlciB2aWEgW3JlbW92ZV0gb3IgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0pLiAgSW5cbiAgICAgIGFkZGl0aW9uIHRvIHN0b3JpbmcgdGhlIFtrZXldLCBbYXRdLCBhbmQgW3ZhbHVlXSBpbiB0aGUgZWxlbWVudCwgd2Ugc3RvcmUgdGhlXG4gICAgICBbbGV2ZWxfaW5kZXhdIHNvIHRoYXQgd2UgY2FuIHF1aWNrbHkgZ2V0IHRvIHRoZSBsZXZlbCBob2xkaW5nIGFuIGVsZW1lbnQgd2hlbiB3ZVxuICAgICAgW3JlbW92ZV0gaXQuXG5cbiAgICAgIFdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gW0V4dGVybmFsX2VsdF0gYW5kIFtJbnRlcm5hbF9lbHRdLCB3aGljaCBhcmUgdGhlIHNhbWVcbiAgICAgIHVuZGVybmVhdGguICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYW4gW0ludGVybmFsX2VsdF0gaXMgZWl0aGVyIFtudWxsXSBvciBhXG4gICAgICB2YWxpZCBwb2ludGVyLiAgT24gdGhlIG90aGVyIGhhbmQsIFtFeHRlcm5hbF9lbHRdcyBhcmUgcmV0dXJuZWQgdG8gdXNlciBjb2RlLCBzb1xuICAgICAgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIG9mIHZhbGlkaXR5IC0tIHdlIGFsd2F5cyB2YWxpZGF0ZSBhbiBbRXh0ZXJuYWxfZWx0XSBiZWZvcmVcbiAgICAgIGRvaW5nIGFueXRoaW5nIHdpdGggaXQuXG5cbiAgICAgIEl0IGlzIHRoZXJlZm9yZSBPSyB0byB1c2UgW1Bvb2wuVW5zYWZlXSwgYmVjYXVzZSB3ZSB3aWxsIG5ldmVyIGF0dGVtcHQgdG8gYWNjZXNzIGFcbiAgICAgIHNsb3Qgb2YgYW4gaW52YWxpZCBwb2ludGVyLiAqKVxuICBtb2R1bGUgUG9vbCA9IFBvb2wuVW5zYWZlXG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgKCoqIFtJbnRlcnZhbF9udW1dIGlzIHRoZSBwdWJsaWMgQVBJLiAgRXZlcnl0aGluZyBmb2xsb3dpbmcgaW4gdGhlIHNpZ25hdHVyZSBpc1xuICAgICAgICBmb3IgaW50ZXJuYWwgdXNlLiAqKVxuICAgIGluY2x1ZGUgVGltaW5nX3doZWVsX2ludGYuSW50ZXJ2YWxfbnVtXG5cbiAgICAoKiogW2FkZF9jbGFtcF90b19tYXhdIGRvZXNuJ3Qgd29yayBhdCBhbGwgd2l0aCBuZWdhdGl2ZSBzcGFucyAqKVxuICAgIHZhbCBhZGRfY2xhbXBfdG9fbWF4IDogdCAtPiBTcGFuLnQgLT4gdFxuXG4gICAgdmFsIHN1Y2NfY2xhbXBfdG9fbWF4IDogdCAtPiB0XG5cbiAgICAoKiogW1Nsb3RzX21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgYSBrZXkncyBzbG90IGluIGEgZ2l2ZW4gbGV2ZWwuICopXG4gICAgbW9kdWxlIFNsb3RzX21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICB2YWwgY3JlYXRlIDogbGV2ZWxfYml0czpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgICB2YWwgbmV4dF9zbG90IDogdCAtPiBpbnQgLT4gaW50XG4gICAgZW5kXG5cbiAgICAoKiogW01pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG1pbmltdW0ga2V5IGluIHRoZVxuICAgICAgICBzYW1lIHNsb3QgYXMgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgY3JlYXRlIDogYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgbnVtX2tleXMgOiBOdW1fa2V5X2JpdHMudCAtPiBTcGFuLnRcbiAgICB2YWwgbWluX2tleV9pbl9zYW1lX3Nsb3QgOiB0IC0+IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudCAtPiB0XG4gICAgdmFsIHNsb3QgOiB0IC0+IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gc2xvdHNfbWFzazpTbG90c19tYXNrLnQgLT4gaW50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTbG90c19tYXNrID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxldmVsX2JpdHMgPSBJbnQ2My4oIC0gKSAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykgSW50NjMub25lXG4gICAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IChzbG90ICsgMSkgbGFuZCBJbnQ2My50b19pbnRfZXhuIHRcbiAgICBlbmRcblxuICAgIGxldCBudW1fa2V5cyBudW1fYml0cyA9IE51bV9rZXlfYml0cy5wb3cyIG51bV9iaXRzXG5cbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgY3JlYXRlIH5iaXRzX3Blcl9zbG90ID0gYml0X25vdCAoTnVtX2tleV9iaXRzLnBvdzIgYml0c19wZXJfc2xvdCAtIG9uZSlcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgICBsZXQgc2NhbGVfaW50IHQgaSA9IHQgKiBvZl9pbnQgaVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgbGV0IGFkZCB0IGkgPSB0ICsgaVxuICAgIGxldCBhZGRfY2xhbXBfdG9fbWF4IHQgaSA9IGlmIHQgPiBtYXhfdmFsdWUgLSBpIHRoZW4gbWF4X3ZhbHVlIGVsc2UgdCArIGlcbiAgICBsZXQgc3VjY19jbGFtcF90b19tYXggdCA9IGlmIHQgPSBtYXhfdmFsdWUgdGhlbiBtYXhfdmFsdWUgZWxzZSBzdWNjIHRcbiAgICBsZXQgc3ViIHQgaSA9IHQgLSBpXG4gICAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5cbiAgICBsZXQgc2xvdCB0IH4oYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50KSB+c2xvdHNfbWFzayA9XG4gICAgICB0b19pbnRfZXhuIChiaXRfYW5kIChzaGlmdF9yaWdodCB0IChiaXRzX3Blcl9zbG90IDo+IGludCkpIHNsb3RzX21hc2spXG4gICAgOztcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPVxuICAgICAgYml0X2FuZCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IEtleS5NaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gIG1vZHVsZSBTbG90c19tYXNrID0gS2V5LlNsb3RzX21hc2tcblxuICBtb2R1bGUgRXh0ZXJuYWxfZWx0ID0gc3RydWN0XG5cbiAgICAoKiogVGhlIFtwb29sX3Nsb3RzXSBoZXJlIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIHNsb3RzIGluIGEgbGV2ZWwgYXJyYXkuICBUaGlzIGlzXG4gICAgICAgIGZvciB0aGUgc2xvdHMgaW4gdGhlIHBvb2wgdHVwbGUgcmVwcmVzZW50aW5nIGEgbGV2ZWwgZWxlbWVudC4gKilcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPVxuICAgICAgKCBLZXkudFxuICAgICAgLCBUaW1lX25zLnRcbiAgICAgICwgJ2FcbiAgICAgICwgaW50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IClcbiAgICAgICAgUG9vbC5TbG90cy50NlxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiB1bml0IC0+IF8gdFxuICAgICAgdmFsIGlzX2Z1bGwgOiBfIHQgLT4gYm9vbFxuICAgICAgdmFsIGdyb3cgOiA/Y2FwYWNpdHk6aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gcHJpdmF0ZSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiogRGVhbGluZyB3aXRoIFtFeHRlcm5hbF9lbHRdcy4gKilcblxuICAgIHZhbCBleHRlcm5hbF9pc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFeHRlcm5hbF9lbHQudFxuICAgIHZhbCBvZl9leHRlcm5hbF9leG4gOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gJ2EgdFxuICAgIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGludmFyaWFudCA6ICdhIFBvb2wudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2NyZWF0ZV0gcmV0dXJucyBhbiBlbGVtZW50IHdob3NlIFtuZXh0XSBhbmQgW3ByZXZdIGFyZSBbbnVsbF0uICopXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgJ2EgUG9vbC50XG4gICAgICAtPiBrZXk6S2V5LnRcbiAgICAgICgqKiBbYXRdIGlzIHVzZWQgd2hlbiB0aGUgcHJpb3JpdHkgcXVldWUgaXMgdXNlZCB0byBpbXBsZW1lbnQgYSB0aW1pbmcgd2hlZWwuICBJZlxuICAgICAgICAgIHVudXNlZCwgaXQgd2lsbCBiZSBbVGltZV9ucy5lcG9jaF0uICopXG4gICAgICAtPiBhdDpUaW1lX25zLnRcbiAgICAgIC0+IHZhbHVlOidhXG4gICAgICAtPiBsZXZlbF9pbmRleDppbnRcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmcmVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIGFjY2Vzc29ycyAqKVxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIGF0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGxldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIG5leHQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHZhbHVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2FcblxuICAgICgqKiBtdXRhdG9ycyAqKVxuXG4gICAgdmFsIHNldF9rZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudCAtPiB1bml0XG4gICAgdmFsIHNldF9hdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudCAtPiB1bml0XG4gICAgdmFsIHNldF9sZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludCAtPiB1bml0XG5cbiAgICAoKiogW2luc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGRdIHRyZWF0cyBbdF0gYXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYW5kIGFkZHMgW3RvX2FkZF1cbiAgICAgICAgdG8gdGhlIGVuZCBvZiBpdC4gKilcbiAgICB2YWwgaW5zZXJ0X2F0X2VuZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHRvX2FkZDonYSB0IC0+IHVuaXRcblxuICAgICgqKiBbbGlua190b19zZWxmIHBvb2wgdF0gbWFrZXMgW3RdIGJlIGEgc2luZ2xldG9uIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdC4gKilcbiAgICB2YWwgbGlua190b19zZWxmIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFt1bmxpbmsgcCB0XSB1bmxpbmtzIFt0XSBmcm9tIHRoZSBjaXJjdWxhcmx5IGRvdWJseS1saW5rZWQgbGlzdCB0aGF0IGl0IGlzIGluLiAgSXRcbiAgICAgICAgY2hhbmdlcyB0aGUgcG9pbnRlcnMgb2YgW3RdJ3MgW3ByZXZdIGFuZCBbbmV4dF0gZWx0cywgYnV0IG5vdCBbdF0ncyBbcHJldl0gYW5kXG4gICAgICAgIFtuZXh0XSBwb2ludGVycy4gIFt1bmxpbmtdIGlzIG1lYW5pbmdsZXNzIGlmIFt0XSBpcyBhIHNpbmdsZXRvbi4gKilcbiAgICB2YWwgdW5saW5rIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIEl0ZXJhdG9ycy4gIFtpdGVyIHAgdCB+aW5pdCB+Zl0gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICAgIGNvbnRhaW5pbmcgW3RdLCBzdGFydGluZyBhdCBbdF0sIGFuZCBmb2xsb3dpbmcgW25leHRdIHBvaW50ZXJzLiAgW2xlbmd0aF0gY291bnRzXG4gICAgICAgIGJ5IHZpc2l0aW5nIGVhY2ggZWxlbWVudCBpbiB0aGUgbGlzdC4gKilcbiAgICB2YWwgaXRlciA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGY6KCdhIHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGxlbmd0aCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuXG4gICAgKCoqIFttYXhfYWxhcm1fdGltZSB0IGVsdCB+d2l0aF9rZXldIGZpbmRzIHRoZSBtYXggW2F0XSBpbiBbZWx0XSdzIGxpc3QgYW1vbmcgdGhlIGVsdHNcbiAgICAgICAgd2hvc2Uga2V5IGlzIFt3aXRoX2tleV0sIHJldHVybmluZyBbVGltZV9ucy5lcG9jaF0gaWYgdGhlIGxpc3QgaXMgZW1wdHkuICopXG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG5cbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID0gJ2EgRXh0ZXJuYWxfZWx0LnBvb2xfc2xvdHMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgICBsZXQgaXNfbnVsbCA9IFBvaW50ZXIuaXNfbnVsbFxuICAgIGxldCBlcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MSB0MlxuXG4gICAgbGV0IGNyZWF0ZSBwb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXggPVxuICAgICAgUG9vbC5uZXc2IHBvb2wga2V5IGF0IHZhbHVlIGxldmVsX2luZGV4IChudWxsICgpKSAobnVsbCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGZyZWUgPSBQb29sLmZyZWVcbiAgICBsZXQga2V5IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDBcbiAgICBsZXQgc2V0X2tleSBwIHQgayA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDAga1xuICAgIGxldCBhdCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQxXG4gICAgbGV0IHNldF9hdCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDEgeFxuICAgIGxldCB2YWx1ZSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQyXG4gICAgbGV0IGxldmVsX2luZGV4IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDNcbiAgICBsZXQgc2V0X2xldmVsX2luZGV4IHAgdCBpID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MyBpXG4gICAgbGV0IHByZXYgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NFxuICAgIGxldCBzZXRfcHJldiBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDQgeFxuICAgIGxldCBuZXh0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDVcbiAgICBsZXQgc2V0X25leHQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ1IHhcbiAgICBsZXQgaXNfdmFsaWQgcCB0ID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHAgdFxuICAgIGxldCBleHRlcm5hbF9pc192YWxpZCA9IGlzX3ZhbGlkXG5cbiAgICBsZXQgaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkIHBvb2wgdCk7XG4gICAgICAgIGludmFyaWFudF9hICh2YWx1ZSBwb29sIHQpO1xuICAgICAgICBsZXQgbiA9IG5leHQgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBuIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChwcmV2IHBvb2wgbikpO1xuICAgICAgICBsZXQgcCA9IHByZXYgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBwIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChuZXh0IHBvb2wgcCkpKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG4gICAgICBsZXQgY3JlYXRlID8oY2FwYWNpdHkgPSAxKSAoKSA9IFBvb2wuY3JlYXRlIFBvb2wuU2xvdHMudDYgfmNhcGFjaXR5XG4gICAgICBsZXQgZ3JvdyA9IFBvb2wuZ3Jvd1xuICAgICAgbGV0IGlzX2Z1bGwgPSBQb29sLmlzX2Z1bGxcbiAgICBlbmRcblxuICAgIGxldCB0b19leHRlcm5hbCB0ID0gdFxuXG4gICAgbGV0IG9mX2V4dGVybmFsX2V4biBwb29sIHQgPVxuICAgICAgaWYgaXNfdmFsaWQgcG9vbCB0IHRoZW4gdCBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsIGdvdCBpbnZhbGlkIGFsYXJtXCJdXG4gICAgOztcblxuICAgIGxldCB1bmxpbmsgcG9vbCB0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgKHByZXYgcG9vbCB0KSAobmV4dCBwb29sIHQpO1xuICAgICAgc2V0X3ByZXYgcG9vbCAobmV4dCBwb29sIHQpIChwcmV2IHBvb2wgdClcbiAgICA7O1xuXG4gICAgbGV0IGxpbmsgcG9vbCBwcmV2IG5leHQgPVxuICAgICAgc2V0X25leHQgcG9vbCBwcmV2IG5leHQ7XG4gICAgICBzZXRfcHJldiBwb29sIG5leHQgcHJldlxuICAgIDs7XG5cbiAgICBsZXQgbGlua190b19zZWxmIHBvb2wgdCA9IGxpbmsgcG9vbCB0IHRcblxuICAgIGxldCBpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkID1cbiAgICAgIGxldCBwcmV2ID0gcHJldiBwb29sIHQgaW5cbiAgICAgIGxpbmsgcG9vbCBwcmV2IHRvX2FkZDtcbiAgICAgIGxpbmsgcG9vbCB0b19hZGQgdFxuICAgIDs7XG5cbiAgICBsZXQgaXRlciBwb29sIGZpcnN0IH5mID1cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICgqIFdlIGdldCBbbmV4dF0gYmVmb3JlIGNhbGxpbmcgW2ZdIHNvIHRoYXQgW2ZdIGNhbiBtb2RpZnkgb3IgW2ZyZWVdIFshY3VycmVudF0uICopXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGYgIWN1cnJlbnQ7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggcG9vbCBmaXJzdCA9XG4gICAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBpbmNyIHI7XG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICA7O1xuXG4gICAgbGV0IG1heF9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtYXhfYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLmVwb2NoIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1heF9hbGFybV90aW1lIDo9IFRpbWVfbnMubWF4IChhdCBwb29sICFjdXJyZW50KSAhbWF4X2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1heF9hbGFybV90aW1lXG4gICAgOztcblxuICAgIGxldCBtaW5fYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgKCogVGhlIFtrZXldIGNvbXBhcmlzb24gaXMgbmVjZXNzYXJ5IGZvciBbbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSBiZWNhdXNlXG4gICAgICAgICAgIG1heCB0aW1lIHBlciBpbnRlcnZhbCBpcyBub3QgdGhlIHNhbWUgYXMgbWF4IHRpbWUgZ2xvYmFsbHkuXG5cbiAgICAgICAgICAgVGhpcyBpcyBub3Qgc28gZm9yIFttaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdLCBzbyB0aGlzIGNhbiBwb3RlbnRpYWxseVxuICAgICAgICAgICBiZSBzaW1wbGlmaWVkLlxuXG4gICAgICAgICAgIFByb2JhYmx5IGEgYmV0dGVyIGNoYW5nZSB3b3VsZCBiZSB0byBzaW1wbHkgdHJhbnNmZXIgdGhlIGV2ZW50cyB0byB0aGVcbiAgICAgICAgICAgXCJmaXJlZFwiIGNvbGxlY3Rpb24gKGFuZCByZW5hbWUgaXQgdG8gXCJhYm91dCB0byBmaXJlXCIpLCB3aGljaCBpcyBzb3J0ZWQgYnkgdGltZSxcbiAgICAgICAgICAgc28gZ2V0dGluZyB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIHRoYXQgY29sbGVjdGlvbiBpcyBlZmZpY2llbnQuXG4gICAgICAgICopXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWluX2FsYXJtX3RpbWUgOj0gVGltZV9ucy5taW4gKGF0IHBvb2wgIWN1cnJlbnQpICFtaW5fYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWluX2FsYXJtX3RpbWVcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTGV2ZWwgPSBzdHJ1Y3RcbiAgICAoKiogRm9yIGdpdmVuIGxldmVsLCBvbmUgY2FuIGJyZWFrIHRoZSBiaXRzIGludG8gYSBrZXkgaW50byB0aHJlZSByZWdpb25zOlxuXG4gICAgICAgIHt2XG4gICAgICAgICB8IGhpZ2hlciBsZXZlbHMgfCB0aGlzIGxldmVsIHwgbG93ZXIgbGV2ZWxzIHxcbiAgICAgICAgdn1cblxuICAgICAgICBcIkxvd2VyIGxldmVsc1wiIGlzIFtiaXRzX3Blcl9zbG90XSBiaXRzIHdpZGUuICBcIlRoaXMgbGV2ZWxcIiBpcyBbYml0c10gd2lkZS4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBUaGUgW2luZGV4XSBpbiB0aGUgdGltaW5nIHdoZWVsJ3MgYXJyYXkgb2YgbGV2ZWxzIHdoZXJlIHRoaXMgbGV2ZWwgaXMuICopXG4gICAgICAgIGluZGV4IDogaW50XG4gICAgICA7ICgqIEhvdyBtYW55IFtiaXRzXSB0aGlzIGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvci4gKilcbiAgICAgICAgYml0cyA6IE51bV9rZXlfYml0cy50XG4gICAgICA7ICgqIFtzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6dC5iaXRzXS4gKilcbiAgICAgICAgc2xvdHNfbWFzayA6IFNsb3RzX21hc2sudFxuICAgICAgOyAoKiBbYml0c19wZXJfc2xvdF0gaXMgaG93IG1hbnkgYml0cyBlYWNoIHNsb3QgZGlzdGluZ3Vpc2hlcywgYW5kIGlzIHRoZSBzdW0gb2Ygb2ZcbiAgICAgICAgICAgdGhlIFtiaXRzXSBvZiBhbGwgdGhlIGxvd2VyIGxldmVscy4gKilcbiAgICAgICAgYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50XG4gICAgICA7IGtleXNfcGVyX3Nsb3QgOiBLZXkuU3Bhbi50XG4gICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnRcbiAgICAgIDsgKCogW2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9IGtleXNfcGVyX3Nsb3QgKiBBcnJheS5sZW5ndGggc2xvdHMgLSAxXSAqKVxuICAgICAgICBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgOiBLZXkuU3Bhbi50XG4gICAgICA7ICgqIFtsZW5ndGhdIGlzIHRoZSBudW1iZXIgb2YgZWx0cyBjdXJyZW50bHkgaW4gdGhpcyBsZXZlbC4gKilcbiAgICAgICAgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgKCogQWxsIGVsZW1lbnRzIGF0IHRoaXMgbGV2ZWwgaGF2ZSB0aGVpciBba2V5XSBzYXRpc2Z5IFttaW5fYWxsb3dlZF9rZXkgPD0ga2V5IDw9XG4gICAgICAgICAgIG1heF9hbGxvd2VkX2tleV0uICBBbHNvLCBbbWluX2FsbG93ZWRfa2V5XSBpcyBhIG11bHRpcGxlIG9mIFtrZXlzX3Blcl9zbG90XS4gKilcbiAgICAgICAgbXV0YWJsZSBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7ICgqIFtzbG90c10gaG9sZHMgdGhlIChwb3NzaWJseSBudWxsKSBwb2ludGVycyB0byB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0c1xuICAgICAgICAgICBvZiBlbHRzLiAgW0FycmF5Lmxlbmd0aCBzbG90cyA9IDEgbHNsIGJpdHNdLiAqKVxuICAgICAgICBzbG90cyA6ICgnYSBJbnRlcm5hbF9lbHQudCBhcnJheVtAc2V4cC5vcGFxdWVdKVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzbG90IHQgfmtleSA9IEtleS5zbG90IGtleSB+Yml0c19wZXJfc2xvdDp0LmJpdHNfcGVyX3Nsb3QgfnNsb3RzX21hc2s6dC5zbG90c19tYXNrXG4gICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSBTbG90c19tYXNrLm5leHRfc2xvdCB0LnNsb3RzX21hc2sgc2xvdFxuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleSA9XG4gICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3Qga2V5IHQubWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG5cbiAgICBsZXQgY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgdCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgKCogVGhpcyBjb21wdXRhdGlvbiBlbnN1cmVzIHRoYXQgW3RdJ3MgW21pbl9hbGxvd2VkX2tleV0gaXMgYXMgbGFyZ2UgYXMgcG9zc2libGVcbiAgICAgICAgIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGVyZSBpcyBubyBpbnRlci1sZXZlbCBnYXAuICopXG4gICAgICBpZiBLZXkuZXF1YWwgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgdGhlbiBLZXkubWF4X3ZhbHVlXG4gICAgICBlbHNlIG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleTooS2V5LnN1Y2MgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIHBvb2wgOiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG4gICAgOyAoKiBbbWluX2VsdF0gaXMgZWl0aGVyIG51bGwgb3IgYW4gZWxlbWVudCB3aG9zZSBrZXkgaXMgW2VsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBtaW5fZWx0IDogJ2EgSW50ZXJuYWxfZWx0LnRcbiAgICA7ICgqIEFsbCBlbGVtZW50cyBpbiB0aGUgcHJpb3JpdHkgcXVldWUgaGF2ZSB0aGVpciBrZXkgWz49IGVsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBlbHRfa2V5X2xvd2VyX2JvdW5kIDogS2V5LnRcbiAgICA7IGxldmVscyA6ICdhIExldmVsLnQgYXJyYXlcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBFeHRlcm5hbF9lbHQubnVsbFxuICAgIGxldCBhdCBwIHQgPSBJbnRlcm5hbF9lbHQuYXQgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCBrZXkgcCB0ID0gSW50ZXJuYWxfZWx0LmtleSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IHZhbHVlIHAgdCA9IEludGVybmFsX2VsdC52YWx1ZSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbiAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbiAgbGV0IG51bV9sZXZlbHMgdCA9IEFycmF5Lmxlbmd0aCB0LmxldmVsc1xuICBsZXQgbWluX2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5sZXZlbHMuKDApXG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgdCA9IExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4obnVtX2xldmVscyB0IC0gMSlcblxuICBsZXQgaW50ZXJuYWxfaXRlciB0IH5mID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdCkgdGhlbiBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZlxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBpbnRlcm5hbF9pdGVyIHQgfmY6KGYgOiBfIEVsdC50IC0+IHVuaXQgOj4gXyBJbnRlcm5hbF9lbHQudCAtPiB1bml0KVxuXG4gIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IGtleSA6IEtleS50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgZWx0cyA6ICdhIEVsdC50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgcHJldHR5IHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgeyBQcmV0dHkubWluX2FsbG93ZWRfa2V5ID0gbWluX2FsbG93ZWRfa2V5IHRcbiAgICA7IG1heF9hbGxvd2VkX2tleSA9IG1heF9hbGxvd2VkX2tleSB0XG4gICAgOyBlbHRzID1cbiAgICAgICAgKGxldCByID0gcmVmIFtdIGluXG4gICAgICAgICBpbnRlcm5hbF9pdGVyIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgclxuICAgICAgICAgICA6PSB7IFByZXR0eS5FbHQua2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdFxuICAgICAgICAgICAgICA7IHZhbHVlID0gSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogIXIpO1xuICAgICAgICAgTGlzdC5yZXYgIXIpXG4gICAgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICAgIHwgYEludGVybmFsIC0+IFslc2V4cCAodCA6IGEgdF9pbnRlcm5hbCldXG4gICAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbiAgOztcblxuICBsZXQgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3QgPVxuICAgIGxldCBiaXRzID0gTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdCBpblxuICAgIGlmIE51bV9rZXlfYml0cy5lcXVhbCBiaXRzIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICB0aGVuIEtleS5TcGFuLm1heF92YWx1ZVxuICAgIGVsc2UgS2V5LlNwYW4ucHJlZCAoS2V5Lm51bV9rZXlzIGJpdHMpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgbGV2ZWxfaW52YXJpYW50IGxldmVsID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSBsZXZlbCBbJXNleHBfb2Y6IF8gTGV2ZWwudF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCBsZXZlbCBmIGluXG4gICAgICAgIExldmVsLkZpZWxkcy5pdGVyXG4gICAgICAgICAgfmluZGV4OihjaGVjayAoZnVuIGluZGV4IC0+IGFzc2VydCAoaW5kZXggPj0gMCkpKVxuICAgICAgICAgIH5iaXRzOihjaGVjayAoZnVuIGJpdHMgLT4gYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgYml0cyBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5zbG90c19tYXNrOlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogU2xvdHNfbWFzay50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDooU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6bGV2ZWwuYml0cykpKVxuICAgICAgICAgIH5iaXRzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYml0c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+PSApIGJpdHNfcGVyX3Nsb3QgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+a2V5c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGtleXNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgIGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5Lm51bV9rZXlzIGxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzazpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suZXF1YWxcbiAgICAgICAgICAgICAgICAgICBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgICAgKE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKSlcbiAgICAgICAgICB+ZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgIChjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICB+bGV2ZWxfYml0czpsZXZlbC5iaXRzXG4gICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgICAgICAgICAgPSBBcnJheS5mb2xkIGxldmVsLnNsb3RzIH5pbml0OjAgfmY6KGZ1biBuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICAgICAgICAgICAgICAgICAgIHRoZW4gblxuICAgICAgICAgICAgICAgICAgIGVsc2UgbiArIEludGVybmFsX2VsdC5sZW5ndGggcG9vbCBlbHQpKSkpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIG1pbl9hbGxvd2VkX2tleSBLZXkuemVybyk7XG4gICAgICAgICAgICAgICBpZiBLZXkuKCA8ICkgbWluX2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoS2V5LnJlbSBtaW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OktleS5TcGFuLnplcm8pKVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAoS2V5LmFkZF9jbGFtcF90b19tYXhcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpKSlcbiAgICAgICAgICB+c2xvdHM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBzbG90cyAtPlxuICAgICAgICAgICAgICAgQXJyYXkuaXRlciBzbG90cyB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmludmFyaWFudCBwb29sIGludmFyaWFudF9hIGVsdDtcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgICAgICAgS2V5LiggPj0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICAgICAgICBLZXkuKCA8PSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgICAgICAgIEtleS4oID49IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQgPSBsZXZlbC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnRfYSAoSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0KSkpKSkpKVxuICAgIGluXG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRfaW50ZXJuYWxdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtaW5fYWxsb3dlZF9rZXkgdCkgS2V5Lnplcm8pO1xuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtYXhfYWxsb3dlZF9rZXkgdCkgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICAgIH5wb29sOihjaGVjayAoSW50ZXJuYWxfZWx0LlBvb2wuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICAgIH5taW5fZWx0OlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF8gLT5cbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdF8pXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5pc192YWxpZCB0LnBvb2wgZWx0Xyk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCB0LmVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdF8pKSkpKVxuICAgICAgICB+ZWx0X2tleV9sb3dlcl9ib3VuZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfa2V5X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1heF9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgS2V5LmVxdWFsIGVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIHQubWluX2VsdCkpKSlcbiAgICAgICAgfmxldmVsczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZXZlbHMgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKG51bV9sZXZlbHMgdCA+IDApO1xuICAgICAgICAgICAgIEFycmF5Lml0ZXJpIGxldmVscyB+ZjooZnVuIGxldmVsX2luZGV4IGxldmVsIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKGxldmVsX2luZGV4ID0gTGV2ZWwuaW5kZXggbGV2ZWwpO1xuICAgICAgICAgICAgICAgbGV2ZWxfaW52YXJpYW50IGxldmVsO1xuICAgICAgICAgICAgICAgaWYgbGV2ZWxfaW5kZXggPiAwXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHByZXZfbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4IC0gMSkgaW5cbiAgICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBMID0gTGV2ZWwgaW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoTC5rZXlzX3Blcl9zbG90IGxldmVsKVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5TcGFuLnN1Y2MgcHJldl9sZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAgKExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OnByZXZfbGV2ZWwubWF4X2FsbG93ZWRfa2V5KSkpKSkpXG4gIDs7XG5cbiAgKCoqIFttaW5fZWx0X10gcmV0dXJucyBbbnVsbF0gaWYgaXQgY2FuJ3QgZmluZCB0aGUgZGVzaXJlZCBlbGVtZW50LiAgV2Ugd3JhcCBpdCB1cFxuICAgICAgYWZ0ZXJ3YXJkcyB0byByZXR1cm4gYW4gW29wdGlvbl0uICopXG4gIGxldCBtaW5fZWx0XyB0ID1cbiAgICBpZiBpc19lbXB0eSB0XG4gICAgdGhlbiBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgdGhlbiB0Lm1pbl9lbHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbWluX2VsdF9hbHJlYWR5X2ZvdW5kID0gcmVmIChJbnRlcm5hbF9lbHQubnVsbCAoKSkgaW5cbiAgICAgIGxldCBtaW5fa2V5X2FscmVhZHlfZm91bmQgPSByZWYgS2V5Lm1heF92YWx1ZSBpblxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIEtleS4oID4gKSAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIGFueSBtb3JlIGxldmVscy4gIFF1aXQgdGhlIGxvb3AuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVsc1xuICAgICAgICBlbHNlIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgICAgdGhlbiBpbmNyIGxldmVsX2luZGV4XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExvb2sgaW4gW2xldmVsXS4gKilcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGxldCBzbG90X21pbl9rZXkgPVxuICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICAgIChMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICB+a2V5OihLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohc2xvdF9taW5fa2V5KSBpblxuICAgICAgICAgICgqIEZpbmQgdGhlIGZpcnN0IG5vbmVtcHR5IHNsb3Qgd2l0aCBhIHNtYWxsIGVub3VnaCBbc2xvdF9taW5fa2V5XS4gKilcbiAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmlzX251bGwgc2xvdHMuKCFzbG90KVxuICAgICAgICAgICAgJiYgS2V5LiggPCApICFzbG90X21pbl9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgIGRvXG4gICAgICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgICAgIHNsb3RfbWluX2tleSA6PSBLZXkuYWRkICFzbG90X21pbl9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdFxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBWaXNpdCBhbGwgb2YgdGhlIGVsdHMgaW4gdGhpcyBzbG90IGFuZCBmaW5kIG9uZSB3aXRoIG1pbmltdW0ga2V5LiAqKVxuICAgICAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfa2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgIGlmIEtleS4oIDw9ICkgY3VycmVudF9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBtaW5fZWx0X2FscmVhZHlfZm91bmQgOj0gIWN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgbWluX2tleV9hbHJlYWR5X2ZvdW5kIDo9IGN1cnJlbnRfa2V5KTtcbiAgICAgICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgICgqIElmIFshbGV2ZWxfaW5kZXggPSAwXSB0aGVuIGFsbCBlbHRzIGluIHRoaXMgc2xvdCBoYXZlIHRoZSBzYW1lIFtrZXldLFxuICAgICAgICAgICAgICAgICBpLmUuIFshc2xvdF9taW5fa2V5XS4gIFNvLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueSBlbGVtZW50cyBhZnRlclxuICAgICAgICAgICAgICAgICBbZmlyc3RdLiAgVGhpcyBpcyBhIHVzZWZ1bCBzaG9ydCBjdXQgaW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgdGhlcmUgYXJlXG4gICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG1pbiBzbG90IGluIGxldmVsIDAuICopXG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB8fCAhbGV2ZWxfaW5kZXggPSAwXG4gICAgICAgICAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgICAgICAgICAgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICgqIEZpbmlzaGVkIGxvb2tpbmcgaW4gW2xldmVsXS4gIE1vdmUgdXAgdG8gdGhlIG5leHQgbGV2ZWwuICopXG4gICAgICAgICAgaW5jciBsZXZlbF9pbmRleClcbiAgICAgIGRvbmU7XG4gICAgICB0Lm1pbl9lbHQgPC0gIW1pbl9lbHRfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5taW5fZWx0KVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICAgKGtleSA6IEtleS50KVxuICAgICAgICAgIChtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIChtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5wcmlvcml0eV9xdWV1ZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbCA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGxldmVsIGJvdW5kc1wiIChrZXkgOiBLZXkudCkgKGxldmVsIDogXyBMZXZlbC50KV1cbiAgOztcblxuICBsZXQgYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSAmJiBLZXkuKCA8PSApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpKVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleTtcbiAgICAoKiBGaW5kIHRoZSBsb3dlc3QgbGV2ZWwgdGhhdCB3aWxsIGhvbGQgW2VsdF0uICopXG4gICAgbGV0IGxldmVsX2luZGV4ID1cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICB3aGlsZSBLZXkuKCA+ICkga2V5IChMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkpIGRvXG4gICAgICAgIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgIGRvbmU7XG4gICAgICAhbGV2ZWxfaW5kZXhcbiAgICBpblxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IGxldmVsLm1pbl9hbGxvd2VkX2tleSAmJiBLZXkuKCA8PSApIGtleSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbDtcbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoICsgMTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2xldmVsX2luZGV4IHBvb2wgZWx0IGxldmVsX2luZGV4O1xuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lmluc2VydF9hdF9lbmQgcG9vbCBmaXJzdCB+dG9fYWRkOmVsdFxuICAgIGVsc2UgKFxuICAgICAgc2xvdHMuKHNsb3QpIDwtIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC5saW5rX3RvX3NlbGYgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHQgaW5cbiAgICBpZiBLZXkuKCA8ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gKFxuICAgICAgdC5taW5fZWx0IDwtIGVsdDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBrZXkpO1xuICAgIGFkZF9lbHQgdCBlbHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5hZGRfYXRfaW50ZXJ2YWxfbnVtIGdvdCBpbnZhbGlkIGludGVydmFsIG51bVwiXG4gICAgICAgICAgfmludGVydmFsX251bTooa2V5IDogS2V5LnQpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KV1cbiAgOztcblxuICBsZXQgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXkgPVxuICAgIGlmIEtleS4oIDwgKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSB8fCBLZXkuKCA+ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGQgdCB+a2V5IH5hdCB2YWx1ZSA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgaWYgSW50ZXJuYWxfZWx0LlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gSW50ZXJuYWxfZWx0LlBvb2wuZ3JvdyB0LnBvb2w7XG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5jcmVhdGUgdC5wb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXg6KC0xKSBpblxuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHQ7XG4gICAgZWx0XG4gIDs7XG5cbiAgKCoqIFtyZW1vdmVfb3JfcmVfYWRkX2VsdHNdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgW2ZpcnN0XS4gIElmIHRoZSBlbGVtZW50J3Mga2V5IGlzIFs+PSB0X21pbl9hbGxvd2VkX2tleV0sIHRoZW4gaXQgYWRkcyB0aGUgZWxlbWVudFxuICAgICAgYmFjayBhdCBhIGxvd2VyIGxldmVsLiAgSWYgbm90LCB0aGVuIGl0IGNhbGxzIFtoYW5kbGVfcmVtb3ZlZF0gYW5kIFtmcmVlXXMgdGhlXG4gICAgICBlbGVtZW50LiAqKVxuICBsZXQgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgKGxldmVsIDogXyBMZXZlbC50KSBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgKCogV2UgZXh0cmFjdCBbbmV4dF0gZnJvbSBbY3VycmVudF0gZmlyc3QsIGJlY2F1c2Ugd2Ugd2lsbCBtb2RpZnkgb3IgW2ZyZWVdXG4gICAgICAgICBbY3VycmVudF0gYmVmb3JlIGNvbnRpbnVpbmcgdGhlIGxvb3AuICopXG4gICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgICAgaWYgS2V5LiggPj0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50KSB0X21pbl9hbGxvd2VkX2tleVxuICAgICAgdGhlbiBhZGRfZWx0IHQgIWN1cnJlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGhhbmRsZV9yZW1vdmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgIWN1cnJlbnQpO1xuICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sICFjdXJyZW50KTtcbiAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgZG9uZVxuICA7O1xuXG4gICgqKiBbaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIFtsZXZlbF0gdG8gYXNcbiAgICAgIGxhcmdlIGEgdmFsdWUgYXMgcG9zc2libGUsIGJ1dCBubyBtb3JlIHRoYW4gW21heF9sZXZlbF9taW5fYWxsb3dlZF9rZXldLlxuICAgICAgW3RfbWluX2FsbG93ZWRfa2V5XSBpcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBmb3IgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwuICBBc1xuICAgICAgZWxlbWVudHMgYXJlIGVuY291bnRlcmVkLCB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIHRpbWluZyB3aGVlbCBpZiB0aGVpciBrZXkgaXNcbiAgICAgIHNtYWxsZXIgdGhhbiBbdF9taW5fYWxsb3dlZF9rZXldLCBvciBhZGRlZCBhdCBhIGxvd2VyIGxldmVsIGlmIG5vdC4gKilcbiAgbGV0IGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0XG4gICAgICAgIChsZXZlbCA6IF8gTGV2ZWwudClcbiAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgIH50X21pbl9hbGxvd2VkX2tleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IGxldmVsIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgIGluXG4gICAgKCogV2UgcmVxdWlyZSB0aGF0IFttb2QgbGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QgPSAwXS4gIFNvLFxuICAgICAgIHdlIHN0YXJ0IFtsZXZlbF9taW5fYWxsb3dlZF9rZXldIHdoZXJlIHRoYXQgaXMgdHJ1ZSwgYW5kIHRoZW4gaW5jcmVhc2UgaXQgYnlcbiAgICAgICBba2V5c19wZXJfc2xvdF0gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuICopXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICBsZXZlbFxuICAgICAgICB+a2V5OlxuICAgICAgICAgIChLZXkubWluXG4gICAgICAgICAgICAgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAoS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICBpblxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPSByZWYgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGluXG4gICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohbGV2ZWxfbWluX2FsbG93ZWRfa2V5KSBpblxuICAgIGxldCBrZXlzX3Blcl9zbG90ID0gbGV2ZWwua2V5c19wZXJfc2xvdCBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgd2hpbGUgS2V5LiggPCApICFsZXZlbF9taW5fYWxsb3dlZF9rZXkgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgZG9cbiAgICAgIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgKCogSWYgbm8gZWxlbWVudHMgcmVtYWluIGF0IHRoaXMgbGV2ZWwsIHdlIGNhbiBqdXN0IHNldCBbbWluX2FsbG93ZWRfa2V5XSB0byB0aGVcbiAgICAgICAgICAgZGVzaXJlZCB2YWx1ZS4gKilcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzbG90cy4oIXNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICAgIHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IGxldmVsIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWQpO1xuICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IEtleS5hZGRfY2xhbXBfdG9fbWF4ICFsZXZlbF9taW5fYWxsb3dlZF9rZXkga2V5c19wZXJfc2xvdClcbiAgICBkb25lO1xuICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSA8LSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleTtcbiAgICBsZXZlbC5tYXhfYWxsb3dlZF9rZXlcbiAgICA8LSBLZXkuYWRkX2NsYW1wX3RvX21heCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgOztcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICBsZXQgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWQgOiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnQgPVxuICAgIGlmIEtleS4oIDw9ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgIGVsc2UgKFxuICAgICAgKCogV2UgaW5jcmVhc2UgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIGxldmVscyBpbiBvcmRlciB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnRcbiAgICAgICAgIHRoYXQgdGhleSBoYXZlIGFzIGxhcmdlIGFzIHBvc3NpYmxlIGEgW21pbl9hbGxvd2VkX2tleV0sIHdoaWxlIGxlYXZpbmcgbm8gZ2Fwc1xuICAgICAgICAgaW4ga2V5cy4gKilcbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQuTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgaW5cbiAgICAgIGxldCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9IHJlZiAoS2V5LnByZWQga2V5KSBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleV9iZWZvcmUgPSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgaW5cbiAgICAgICAgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgdFxuICAgICAgICAgIGxldmVsXG4gICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OiFwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICAgIH50X21pbl9hbGxvd2VkX2tleTprZXlcbiAgICAgICAgICB+aGFuZGxlX3JlbW92ZWQ7XG4gICAgICAgIGlmIEtleS5lcXVhbCAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIFRoaXMgbGV2ZWwgZGlkIG5vdCBzaGlmdC4gIERvbid0IHNoaWZ0IGFueSBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHM7XG4gICAgICAgICAgcmVzdWx0IDo9IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTGV2ZWwgW2xldmVsX2luZGV4XSBzaGlmdGVkLiAgQ29uc2lkZXIgc2hpZnRpbmcgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSAhbGV2ZWxfaW5kZXggKyAxO1xuICAgICAgICAgIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IDo9IExldmVsLm1heF9hbGxvd2VkX2tleSBsZXZlbClcbiAgICAgIGRvbmU7XG4gICAgICBpZiBLZXkuKCA+ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFdlIGhhdmUgcmVtb3ZlZCBbdC5taW5fZWx0XSBvciBpdCB3YXMgYWxyZWFkeSBudWxsLCBzbyBqdXN0IHNldCBpdCB0b1xuICAgICAgICAgICBudWxsLiAqKVxuICAgICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBtaW5fYWxsb3dlZF9rZXkgdCk7XG4gICAgICAhcmVzdWx0KVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID9sZXZlbF9iaXRzICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBtYXRjaCBsZXZlbF9iaXRzIHdpdGhcbiAgICAgIHwgU29tZSBsIC0+IGxcbiAgICAgIHwgTm9uZSAtPiBMZXZlbF9iaXRzLmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBfLCBfLCBsZXZlbHMgPVxuICAgICAgTGlzdC5mb2xkaVxuICAgICAgICBsZXZlbF9iaXRzXG4gICAgICAgIH5pbml0OihOdW1fa2V5X2JpdHMuemVybywgS2V5Lnplcm8sIFtdKVxuICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAoYml0c19wZXJfc2xvdCwgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSwgbGV2ZWxzKVxuICAgICAgICAgICAgIChsZXZlbF9iaXRzIDogTnVtX2tleV9iaXRzLnQpXG4gICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgIGxldCBrZXlzX3Blcl9zbG90ID0gS2V5Lm51bV9rZXlzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgIGxldCBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXkgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBLZXkuYWRkX2NsYW1wX3RvX21heCBtaW5fYWxsb3dlZF9rZXkgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGxldmVsID1cbiAgICAgICAgICAgICAgICAgeyBMZXZlbC5pbmRleFxuICAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgIDsgc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgIDsgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgIDsgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgICA7IG1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgIEFycmF5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihJbnQ2My50b19pbnRfZXhuIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAsIEtleS5zdWNjX2NsYW1wX3RvX21heCBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICwgbGV2ZWwgOjogbGV2ZWxzICkpXG4gICAgaW5cbiAgICB7IGxlbmd0aCA9IDBcbiAgICA7IHBvb2wgPSBJbnRlcm5hbF9lbHQuUG9vbC5jcmVhdGUgP2NhcGFjaXR5ICgpXG4gICAgOyBtaW5fZWx0ID0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICA7IGVsdF9rZXlfbG93ZXJfYm91bmQgPSBLZXkuemVyb1xuICAgIDsgbGV2ZWxzID0gQXJyYXkub2ZfbGlzdF9yZXYgbGV2ZWxzXG4gICAgfVxuICA7O1xuXG4gIGxldCBtZW0gdCBlbHQgPSBJbnRlcm5hbF9lbHQuZXh0ZXJuYWxfaXNfdmFsaWQgdC5wb29sIGVsdFxuXG4gIGxldCBpbnRlcm5hbF9yZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgaWYgSW50ZXJuYWxfZWx0LmVxdWFsIGVsdCB0Lm1pbl9lbHRcbiAgICB0aGVuXG4gICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICAoKiBXZSBrZWVwIFt0LmVsdF9sb3dlcl9ib3VuZF0gc2luY2UgaXQgaXMgdmFsaWQgZXZlbiB0aG91Z2ggW3QubWluX2VsdF0gaXMgYmVpbmdcbiAgICAgICByZW1vdmVkLiAqKTtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCkgaW5cbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIHBoeXNfZXF1YWwgZWx0IChJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdClcbiAgICB0aGVuICgqIFtlbHRdIGlzIHRoZSBvbmx5IGVsZW1lbnQgaW4gdGhlIHNsb3QgKilcbiAgICAgIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBlbHQgZmlyc3QgdGhlbiBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQudW5saW5rIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHRcbiAgOztcblxuICBsZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgfmtleSB+bm93ID1cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oMCkgaW5cbiAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZmlyc3QgPSByZWYgc2xvdHMuKHNsb3QpIGluXG4gICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsICFmaXJzdClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY3VycmVudCA9IHJlZiAhZmlyc3QgaW5cbiAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgbGV0IGVsdCA9ICFjdXJyZW50IGluXG4gICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdCBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCAhZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dDtcbiAgICAgICAgICBpZiBUaW1lX25zLiggPD0gKSAoSW50ZXJuYWxfZWx0LmF0IHBvb2wgZWx0KSBub3dcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGhhbmRsZV9maXJlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsIGVsdCk7XG4gICAgICAgICAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdDtcbiAgICAgICAgICAgICgqIFdlIHJlY29tcHV0ZSBbZmlyc3RdIGJlY2F1c2UgW2ludGVybmFsX3JlbW92ZV0gbWF5IGhhdmUgY2hhbmdlZCBpdC4gKilcbiAgICAgICAgICAgIGZpcnN0IDo9IHNsb3RzLihzbG90KSlcbiAgICAgICAgZG9uZSkpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGVsdCB+a2V5IH5hdCA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2tleSBwb29sIGVsdCBrZXk7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9hdCBwb29sIGVsdCBhdDtcbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0XG4gIDs7XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZyZWVfZWx0IGVsdCA9IEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0IGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXZlbC5sZW5ndGggPC0gMDtcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjpmcmVlX2VsdDtcbiAgICAgICAgICAgICAgc2xvdHMuKHNsb3RfaW5kZXgpIDwtIEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbF9lbHQgPSBQcmlvcml0eV9xdWV1ZS5JbnRlcm5hbF9lbHRcbm1vZHVsZSBLZXkgPSBQcmlvcml0eV9xdWV1ZS5LZXlcbm1vZHVsZSBJbnRlcnZhbF9udW0gPSBLZXlcblxubGV0IG1pbl9pbnRlcnZhbF9udW0gPSBJbnRlcnZhbF9udW0uemVyb1xuXG4oKiBBbGwgdGltZSBmcm9tIHRoZSBlcG9jaCBvbndhcmRzIGlzIGJyb2tlbiBpbnRvIGhhbGYtb3BlbiBpbnRlcnZhbHMgb2Ygc2l6ZVxuICAgW0NvbmZpZy5hbGFybV9wcmVjaXNpb24gY29uZmlnXS4gIFRoZSBpbnRlcnZhbHMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGF0IHplcm8sIGFuZCBhXG4gICB0aW1lJ3MgaW50ZXJ2YWwgbnVtYmVyIHNlcnZlcyBhcyBpdHMga2V5IGluIFtwcmlvcml0eV9xdWV1ZV0uICopXG50eXBlICdhIHQgPVxuICB7IGNvbmZpZyA6IENvbmZpZy50XG4gIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgOyAoKiBbbWF4X2ludGVydmFsX251bV0gaXMgdGhlIGludGVydmFsIG51bWJlciBvZiBbbWF4X3RpbWVdLiAqKVxuICAgIG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICA7IG11dGFibGUgbm93IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50XG4gIDsgcHJpb3JpdHlfcXVldWUgOiAnYSBQcmlvcml0eV9xdWV1ZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSB0aW1pbmdfd2hlZWwgPSAnYSB0XG50eXBlICdhIHRfbm93ID0gJ2EgdFxuXG5sZXQgc2V4cF9vZl90X25vdyBfIHQgPSBbJXNleHAgKHQubm93IDogVGltZV9ucy50KV1cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IENvbmZpZy5hbGFybV9wcmVjaXNpb24gdC5jb25maWdcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByaW9yaXR5X3F1ZXVlLkVsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IG51bGwgPSBQcmlvcml0eV9xdWV1ZS5FbHQubnVsbFxuICBsZXQgYXQgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5hdCB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCB2YWx1ZSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LnZhbHVlIHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IGludGVydmFsX251bSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmtleSB0dy5wcmlvcml0eV9xdWV1ZSB0XG5lbmRcblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IGl0ZXIgdCB+ZiA9IFByaW9yaXR5X3F1ZXVlLml0ZXIgdC5wcmlvcml0eV9xdWV1ZSB+ZlxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGF0IDogVGltZV9ucy50XG4gICAgICA7IHZhbHVlIDogJ2FcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHQgYWxhcm0gPSB7IGF0ID0gQWxhcm0uYXQgdCBhbGFybTsgdmFsdWUgPSBBbGFybS52YWx1ZSB0IGFsYXJtIH1cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9IFRpbWVfbnMuY29tcGFyZSAoYXQgdDEpIChhdCB0MilcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbmZpZyA6IENvbmZpZy50XG4gICAgOyBzdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gICAgOyBub3cgOiBUaW1lX25zLnRcbiAgICA7IGFsYXJtcyA6ICdhIEFsYXJtLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgcHJldHR5XG4gICAgICAoeyBjb25maWdcbiAgICAgICA7IHN0YXJ0XG4gICAgICAgOyBtYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgOyBub3dcbiAgICAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPSBfXG4gICAgICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gX1xuICAgICAgIDsgcHJpb3JpdHlfcXVldWUgPSBfXG4gICAgICAgfSBhcyB0KVxuICA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gciA6PSBQcmV0dHkuQWxhcm0uY3JlYXRlIHQgYSA6OiAhcik7XG4gIGxldCBhbGFybXMgPSBMaXN0LnNvcnQgIXIgfmNvbXBhcmU6UHJldHR5LkFsYXJtLmNvbXBhcmUgaW5cbiAgeyBQcmV0dHkuY29uZmlnOyBzdGFydDsgbWF4X2ludGVydmFsX251bTsgbm93OyBhbGFybXMgfVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICB8IGBJbnRlcm5hbCAtPiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9hIHRcbiAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbjs7XG5cbmxldCBsZW5ndGggdCA9IFByaW9yaXR5X3F1ZXVlLmxlbmd0aCB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCIgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2l0aCBhbGwgYWxhcm1zIGluIG1heCBpbnRlcnZhbFwiXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0IHBvb2wgdCA9IFByaW9yaXR5X3F1ZXVlLnBvb2wgdC5wcmlvcml0eV9xdWV1ZVxuXG5sZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb24gPVxuICBJbnRlcnZhbF9udW0ub2ZfaW50NjMgKEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW0gYWxhcm1fcHJlY2lzaW9uIHRpbWUpXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWUgPVxuICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbjp0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbjs7XG5cbmxldCBpbnRlcnZhbF9udW0gdCB0aW1lID1cbiAgaWYgVGltZV9ucy4oIDwgKSB0aW1lIG1pbl90aW1lXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtIGdvdCB0aW1lIHRvbyBmYXIgaW4gdGhlIHBhc3RcIiAodGltZSA6IFRpbWVfbnMudCldO1xuICBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW0gPVxuICBBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgdC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgKGludGVydmFsX251bSB8PiBJbnRlcnZhbF9udW0udG9faW50NjMpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIHNtYWxsIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKG1pbl9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gbGFyZ2UgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAodC5tYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gIGlmIEludGVydmFsX251bS4oIDwgKSBpbnRlcnZhbF9udW0gbWluX2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bTtcbiAgaWYgSW50ZXJ2YWxfbnVtLiggPiApIGludGVydmFsX251bSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bTtcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkgPVxuICAoKiBbaW50ZXJ2YWxfbnVtX3N0YXJ0IHQga2V5XSBpcyB0aGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0aW1lIGludGVydmFsXG4gICAgIGhvbGRpbmcgdGhlIGZpcnN0IGFsYXJtIGluIFt0XS4gIEFkdmFuY2luZyB0byB0aGF0IHdvdWxkIG5vdCBiZSBlbm91Z2gsIHNpbmNlIHRoZVxuICAgICBhbGFybXMgaW4gdGhhdCBpbnRlcnZhbCBkb24ndCBmaXJlIHVudGlsIHRoZSBjbG9jayBpcyBhZHZhbmNlZCB0byB0aGUgc3RhcnQgb2YgdGhlXG4gICAgIG5leHQgaW50ZXJ2YWwuICBTbywgd2UgdXNlIFtzdWNjIGtleV0gdG8gYWR2YW5jZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgaW50ZXJ2YWwuICopXG4gIGludGVydmFsX251bV9zdGFydCB0IChLZXkuc3VjYyBrZXkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAobmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0O1xuICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdDtcbiAgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleVxuOztcblxubGV0IGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID1cbiAgbGV0IG1heF9hbGxvd2VkX2tleSA9IFByaW9yaXR5X3F1ZXVlLm1heF9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVydmFsX251bS4oID49ICkgbWF4X2FsbG93ZWRfa2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIG1heF90aW1lXG4gIGVsc2VcbiAgICBUaW1lX25zLmFkZFxuICAgICAgKGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBtYXhfYWxsb3dlZF9rZXkpXG4gICAgICAoVGltZV9ucy5TcGFuLiggLSApIChhbGFybV9wcmVjaXNpb24gdCkgVGltZV9ucy5TcGFuLm5hbm9zZWNvbmQpXG47O1xuXG5sZXQgbm93X2ludGVydmFsX251bSB0ID0gUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWVcbmxldCBtaW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gPSBub3dfaW50ZXJ2YWxfbnVtXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIHQgPSBpbnRlcnZhbF9udW0gdCAobWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxubGV0IGludGVydmFsX3N0YXJ0IHQgdGltZSA9IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCAoaW50ZXJ2YWxfbnVtIHQgdGltZSlcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNvbmZpZzooY2hlY2sgQ29uZmlnLmludmFyaWFudClcbiAgICAgIH5zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gc3RhcnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBzdGFydCBtaW5fdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgc3RhcnQgbWF4X3RpbWUpKSlcbiAgICAgIH5tYXhfaW50ZXJ2YWxfbnVtOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaW50ZXJ2YWxfbnVtIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCBtYXhfdGltZSk7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgbWF4X2ludGVydmFsX251bSkpKSlcbiAgICAgIH5ub3c6XG4gICAgICAgIChjaGVjayAoZnVuIG5vdyAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIG5vdyB0LnN0YXJ0KTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBub3cgbWF4X3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgICAgICAgKGludGVydmFsX251bSB0IHQubm93KVxuICAgICAgICAgICAgICAgKFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlKSkpKVxuICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgICAgICAgICAgICB+ZXhwZWN0OihpbnRlcnZhbF9udW1fc3RhcnQgdCAobm93X2ludGVydmFsX251bSB0KSkpKVxuICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG1heF9hbGxvd2VkX2FsYXJtX3RpbWVcbiAgICAgICAgICAgICB+ZXhwZWN0Oihjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpKVxuICAgICAgfnByaW9yaXR5X3F1ZXVlOihjaGVjayAoUHJpb3JpdHlfcXVldWUuaW52YXJpYW50IGludmFyaWFudF9hKSk7XG4gICAgaXRlciB0IH5mOihmdW4gYWxhcm0gLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgIChBbGFybS5pbnRlcnZhbF9udW0gdCBhbGFybSlcbiAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKEFsYXJtLmF0IHQgYWxhcm0pKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPj0gKVxuICAgICAgICAgIChpbnRlcnZhbF9zdGFydCB0IChBbGFybS5hdCB0IGFsYXJtKSlcbiAgICAgICAgICAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPiApIChBbGFybS5hdCB0IGFsYXJtKSAoVGltZV9ucy5zdWIgKG5vdyB0KSAoYWxhcm1fcHJlY2lzaW9uIHQpKSkpKVxuOztcblxubGV0IGRlYnVnID0gZmFsc2VcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5oYW5kbGVfZmlyZWQgPVxuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IHQpXG4gIHRoZW4gKFxuICAgIHQubm93IDwtIHRvXztcbiAgICBsZXQga2V5ID0gaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRvXyBpblxuICAgIHQubm93X2ludGVydmFsX251bV9zdGFydCA8LSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQga2V5O1xuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eV9xdWV1ZS5pbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgICB+a2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZDpoYW5kbGVfZmlyZWRcbiAgICB3aXRoXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UgLT5cbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGFzc2VydCAoVGltZV9ucy4oID0gKSB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgKGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSlcbiAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIC0+XG4gICAgICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG47O1xuXG5sZXQgY3JlYXRlIH5jb25maWcgfnN0YXJ0ID1cbiAgaWYgVGltZV9ucy4oIDwgKSBzdGFydCBUaW1lX25zLmVwb2NoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwuY3JlYXRlIGdvdCBzdGFydCBiZWZvcmUgdGhlIGVwb2NoXCIgKHN0YXJ0IDogVGltZV9ucy50KV07XG4gIGxldCB0ID1cbiAgICB7IGNvbmZpZ1xuICAgIDsgc3RhcnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gPVxuICAgICAgICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWU6bWF4X3RpbWUgfmFsYXJtX3ByZWNpc2lvbjpjb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgOyBub3cgPSBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBtYXhfdGltZSAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBwcmlvcml0eV9xdWV1ZSA9XG4gICAgICAgIFByaW9yaXR5X3F1ZXVlLmNyZWF0ZSA/Y2FwYWNpdHk6Y29uZmlnLmNhcGFjaXR5IH5sZXZlbF9iaXRzOmNvbmZpZy5sZXZlbF9iaXRzICgpXG4gICAgfVxuICBpblxuICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQ7XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fOnN0YXJ0IH5oYW5kbGVfZmlyZWQ6KGZ1biBfIC0+IGFzc2VydCBmYWxzZSk7XG4gIHRcbjs7XG5cbmxldCBhZGRfYXRfaW50ZXJ2YWxfbnVtIHQgfmF0IHZhbHVlID1cbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OmF0XG4gICAgICAgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIHRoYXQgZmFyIGluIHRoZSBmdXR1cmVcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOih0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIGJlZm9yZSBzdGFydCBvZiBjdXJyZW50IGludGVydmFsXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDoodC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50KV1cbjs7XG5cbmxldCBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0ID1cbiAgaWYgVGltZV9ucy4oID4gKSBhdCB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdGhlbiByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQ7XG4gIGlmIFRpbWVfbnMuKCA8ICkgYXQgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gIHRoZW4gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdFxuOztcblxubGV0IGFkZCB0IH5hdCB2YWx1ZSA9XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KVxuICAgICAgIH5hdFxuICAgICAgIHZhbHVlKVxuOztcblxubGV0IHJlbW92ZSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUucmVtb3ZlIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cbmxldCBjbGVhciB0ID0gUHJpb3JpdHlfcXVldWUuY2xlYXIgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1lbSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUubWVtIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cblxubGV0IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleSB+YXQgPVxuICBpZiBub3QgKG1lbSB0IGFsYXJtKVxuICB0aGVuIGZhaWx3aXRoIFwiVGltaW5nX3doZWVsIGNhbm5vdCByZXNjaGVkdWxlIGFsYXJtIG5vdCBpbiB0aW1pbmcgd2hlZWxcIjtcbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgUHJpb3JpdHlfcXVldWUuY2hhbmdlIHQucHJpb3JpdHlfcXVldWUgYWxhcm0gfmtleSB+YXRcbjs7XG5cbmxldCByZXNjaGVkdWxlIHQgYWxhcm0gfmF0ID0gcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpIH5hdFxuXG5sZXQgcmVzY2hlZHVsZV9hdF9pbnRlcnZhbF9udW0gdCBhbGFybSB+YXQgPVxuICByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6YXQgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bV9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIG9mIGVtcHR5IHRpbWluZ193aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG4gIGVsc2UgSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHRcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1heF9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1pbl9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCA9XG4gIFByaW9yaXR5X3F1ZXVlLmZpcmVfcGFzdF9hbGFybXNcbiAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgfmhhbmRsZV9maXJlZFxuICAgIH5rZXk6KG5vd19pbnRlcnZhbF9udW0gdClcbiAgICB+bm93OnQubm93XG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX2tleV9iaXRzID0gTnVtX2tleV9iaXRzXG5cbiAgbGV0IGludGVydmFsX251bV9pbnRlcm5hbCA9IGludGVydmFsX251bV9pbnRlcm5hbFxuICBsZXQgbWF4X3RpbWUgPSBtYXhfdGltZVxuZW5kXG4iLCJtb2R1bGUgSW5yaWFfc3lzID0gU3lzXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm9wZW4gUG9seVxuXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcblxubW9kdWxlIEVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIEludFxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICAgIGVuZClcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gKDEgbHNsIDE2KVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG5lbmRcblxubW9kdWxlIE1heF9udW1fdGhyZWFkcyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgRHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IHN0cnVjdFxuICBtb2R1bGUgSG93X3RvX2R1bXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBEZWZhdWx0XG4gICAgICB8IENhbGxfYWJvcnRcbiAgICAgIHwgQ2FsbF9nY29yZVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIHR5cGUgd2F0Y2ggPVxuICAgIHsgZHVtcF9pZl9kZWxheWVkX2J5IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IGhvd190b19kdW1wIDogSG93X3RvX2R1bXAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICB0eXBlIHQgPVxuICAgIHwgV2F0Y2ggb2Ygd2F0Y2hcbiAgICB8IERvX25vdF93YXRjaFxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z190YWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBbGxcbiAgICAgIHwgQ2xvY2tcbiAgICAgIHwgRmRcbiAgICAgIHwgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICB8IEZpbmFsaXplcnNcbiAgICAgIHwgSW50ZXJydXB0b3JcbiAgICAgIHwgTW9uaXRvclxuICAgICAgfCBNb25pdG9yX3NlbmRfZXhuXG4gICAgICB8IFBhcmFsbGVsXG4gICAgICB8IFJlYWRlclxuICAgICAgfCBTY2hlZHVsZXJcbiAgICAgIHwgU2h1dGRvd25cbiAgICAgIHwgVGhyZWFkX3Bvb2xcbiAgICAgIHwgVGhyZWFkX3NhZmVcbiAgICAgIHwgV3JpdGVyXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9XG4gICAgWyBBbGxcbiAgICA7IENsb2NrXG4gICAgOyBGZFxuICAgIDsgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgOyBGaW5hbGl6ZXJzXG4gICAgOyBJbnRlcnJ1cHRvclxuICAgIDsgTW9uaXRvclxuICAgIDsgTW9uaXRvcl9zZW5kX2V4blxuICAgIDsgUGFyYWxsZWxcbiAgICA7IFJlYWRlclxuICAgIDsgU2NoZWR1bGVyXG4gICAgOyBTaHV0ZG93blxuICAgIDsgVGhyZWFkX3Bvb2xcbiAgICA7IFRocmVhZF9zYWZlXG4gICAgOyBXcml0ZXJcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfZGVzY3Jfd2F0Y2hlciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVwb2xsX2lmX3RpbWVyZmRcbiAgICAgIHwgRXBvbGxcbiAgICAgIHwgU2VsZWN0XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9IFsgRXBvbGxfaWZfdGltZXJmZDsgRXBvbGw7IFNlbGVjdCBdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBjaGVja19pbnZhcmlhbnRzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgOiBGaWxlX2Rlc2NyX3dhdGNoZXIudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzIDogTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV90aHJlYWRzIDogTWF4X251bV90aHJlYWRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl1cbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIDogRGVidWdfdGFnLnQgbGlzdCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxubGV0IGVtcHR5ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IE5vbmVcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBOb25lXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IE5vbmVcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gTm9uZVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IE5vbmVcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBOb25lXG4gIDsgbWF4X251bV90aHJlYWRzID0gTm9uZVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gTm9uZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IE5vbmVcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IE5vbmVcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IE5vbmVcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gTm9uZVxuICB9XG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/Y2hlY2tfaW52YXJpYW50c1xuICAgICAgP2RldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICAgICAgP2R1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgICAgID9lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gICAgICA/ZmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICA/bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgICAgID9tYXhfbnVtX3RocmVhZHNcbiAgICAgID9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgICAgP21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gICAgICA/cmVjb3JkX2JhY2t0cmFjZXNcbiAgICAgID9yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gICAgICA/dGltaW5nX3doZWVsX2NvbmZpZ1xuICAgICAgKClcbiAgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplICh3b3JkX3NpemUgOiBXb3JkX3NpemUudCkgPVxuICBsZXQgbW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb24gaW5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiwgbGV2ZWxfYml0cyA9XG4gICAgbWF0Y2ggd29yZF9zaXplIHdpdGhcbiAgICB8IFczMiAtPiBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kLCBbIDEwOyAxMDsgOSBdXG4gICAgfCBXNjQgLT4gQWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpLCBbIDE0OyAxNTsgOTsgNiBdXG4gIGluXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvblxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMpXG4gICAgKClcbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSBXb3JkX3NpemUud29yZF9zaXplXG47O1xuXG5sZXQgZGVmYXVsdCA9XG4gICgqIEZvciBbZmlsZV9kZXNjcl93YXRjaGVyXSBhbmQgW21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc10gd2UgY2hvb3NlIHRoZSBkZWZhdWx0IGZvciB0aGVcbiAgICAgY29tbW9uIGNhc2UgdGhhdCBbZXBvbGxdIGlzIGF2YWlsYWJsZS4gIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCBjb2RlIGluXG4gICAgIFtBc3luY191bml4LkNvbmZpZ10gdGhhdCBjaGVja3Mgd2hldGhlciBbZXBvbGxdIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSwgYW5kIGlmIG5vdCxcbiAgICAgdXNlcyBbc2VsZWN0XSBhbmQgYSBzbWFsbGVyIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzLiAqKVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyA2MC4pXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgZmFsc2VcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGZhbHNlXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgRG9fbm90X3dhdGNoXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgKEVwb2xsX21heF9yZWFkeV9ldmVudHMuY3JlYXRlX2V4biAyNTYpXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBFcG9sbF9pZl90aW1lcmZkXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNYXhfaW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4wNSkpXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMuZGVmYXVsdFxuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgKE1heF9udW1fdGhyZWFkcy5jcmVhdGVfZXhuIDUwKVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgIFNvbWUgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gNTAwKVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuKSlcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIFtdXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIGZhbHNlXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyAxLilcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIEluaGVyaXRcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGV4YW1wbGUgPVxuICB7IGRlZmF1bHQgd2l0aFxuICAgIHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgRGVidWdfdGFnLlsgRmQ7IFNjaGVkdWxlciBdXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID1cbiAgICAgIFNvbWVcbiAgICAgICAgKENwdXNldFxuICAgICAgICAgICAoWyAwOyAxOyAyIF0gfD4gSW50LlNldC5vZl9saXN0IHw+IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS5DcHVzZXQuY3JlYXRlX2V4bikpXG4gIH1cbjs7XG5cbmxldCBlbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiQVNZTkNfQ09ORklHXCJcblxubGV0IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKSA6IHN0cmluZyA9XG4gIGxldCBmaWVsZCB0b19zZXhwIGRlc2NyaXB0aW9uIGFjIGZpZWxkID1cbiAgICAoRmllbGQubmFtZSBmaWVsZCwgdG9fc2V4cCAoT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKSwgZGVzY3JpcHRpb24pXG4gICAgOjogYWNcbiAgaW5cbiAgbGV0IGZpZWxkcyA9XG4gICAgRmllbGRzLmZvbGRcbiAgICAgIH5pbml0OltdXG4gICAgICB+YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHNlbmQgYW4gZXhjZXB0aW9uIHRvIHRoZSB0b3BsZXZlbCBtb25pdG9yXG4gIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHRvIHJlZ3VsYXJseSBjaGVjayBpbnZhcmlhbnRzIG9mIGl0cyBpbnRlcm5hbFxuICBkYXRhIHN0cnVjdHVyZXMuICBUaGlzIGNhbiBzdWJzdGFudGlhbGx5IHNsb3cgZG93biB5b3VyIHByb2dyYW0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgcm91dGluZXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgYWNjZXNzZWRcbiAgZnJvbSBzb21lIHRocmVhZCBvdGhlciB0aGFuIHRoZSB0aHJlYWQgY3VycmVudGx5IGhvbGRpbmcgdGhlIEFzeW5jXG4gIGxvY2ssIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGFuZCBjYW4gbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZyBiZWhhdmlvci5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZHVtcF9jb3JlX29uX2pvYl9kZWxheTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50XVxuICAgICAgICAgICBbIHt8XG4gIENhbiBiZSBzZXQgdG8gW0RvX25vdF93YXRjaF0gb3I6XG5cbiAgICAoV2F0Y2ggKChkdW1wX2lmX2RlbGF5ZWRfYnkgU1BBTikgKGhvd190b19kdW1wIEhPVykpKVxuXG4gIElmIHNldCB0byBbV2F0Y2hdLCB0aGVuIG9uIHByb2dyYW0gc3RhcnQgdGhpcyB3aWxsIHN0YXJ0IGEgcmVndWxhclxuICBBc3luYyBqb2IgdGhhdCBpbmNyZW1lbnRzIGEgY291bnRlciwgYW5kIGEgQyB0aHJlYWQgdGhhdCB3aWxsXG4gIGRldGVjdCBpZiB0aGF0IGpvYiBpcyBkZWxheWVkIGJ5IFtkdW1wX2lmX2RlbGF5ZWRfYnldLCBhbmQgaWYgc28sXG4gIHdpbGwgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgSWYgYXZhaWxhYmxlLCBbL3Vzci9iaW4vZ2NvcmVdIGlzXG4gIHVzZWQgYnkgZGVmYXVsdCB0byBkdW1wIHRoZSBjb3JlLCB3aGljaCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW1cbiAgdG8gY29udGludWUgcnVubmluZy4gIE90aGVyd2lzZSwgW2Fib3J0XSB3aWxsIGJlIGNhbGxlZCBmcm9tIEMsXG4gIHdoaWNoIHdpbGwga2lsbCB0aGUgcHJvZ3JhbSB3aGlsZSBjYXVzaW5nIGEgY29yZSBkdW1wLiAgT25lIGNhblxuICBmb3JjZSBbYWJvcnRdIG9yIFtnY29yZV0gdmlhIFtob3dfdG9fZHVtcF0sIHdoaWNoIHNob3VsZCBiZSBvbmUgb2Y6XG4gIFtDYWxsX2Fib3J0XSwgW0NhbGxfZ2NvcmVdLCBvciBbRGVmYXVsdF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmVwb2xsX21heF9yZWFkeV9ldmVudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZHkgZXZlbnRzIHRoYXQgQXN5bmMncyBjYWxsIHRvIFtFcG9sbC53YWl0XVxuICB3aWxsIGhhbmRsZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZmlsZV9kZXNjcl93YXRjaGVyOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBGaWxlX2Rlc2NyX3dhdGNoZXIudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGRldGVybWluZXMgd2hhdCBPUyBzdWJzeXN0ZW0gQXN5bmMgdXNlcyB0byB3YXRjaCBmaWxlIGRlc2NyaXB0b3JzIGZvciBiZWluZyByZWFkeS5cbiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIFtlcG9sbF0gaWYgdGltZXJmZCdzIGFyZSBzdXBwb3J0ZWQgYW5kIGlmIG5vdCwgdXNlIFtzZWxlY3RdLlxuXG4gIEFsbG93ZWQgdmFsdWVzIGFyZTp8fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBGaWxlX2Rlc2NyX3dhdGNoZXIubGlzdCB+ZjpGaWxlX2Rlc2NyX3dhdGNoZXIudG9fc3RyaW5nKVxuICAgICAgICAgICA7IHt8LlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICAoZnVuIGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgfl86XG4gICAgICAgICAgICAgICAgICAgIChjb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgWyBcIm1pbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICA7IGRlZmF1bHQgfD4gTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnJhdyB8PiBJbnQudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgICAgICAgICAgICA7IFwiIFt1bGltaXQgLW4gLUhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmcpXSlcbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgYW55IG9uZSB0aW1lLnx9IF0pXG4gICAgICB+bWF4X251bV90aHJlYWRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX3RocmVhZHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IEFzeW5jIHdpbGwgY3JlYXRlIHRvIGRvIGJsb2NraW5nXG4gIHN5c3RlbSBjYWxscyBhbmQgaGFuZGxlIGNhbGxzIHRvIFtJbl90aHJlYWQucnVuXS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHNjaGVkdWxlciB3aWxsIHBhdXNlIGJldHdlZW4gY3ljbGVzXG4gIHdoZW4gaXQgaGFzIG5vIGpvYnMgYW5kIGlzIGdvaW5nIHRvIHdhaXQgZm9yIEkvTy4gIEluIHByaW5jaXBsZSBvbmVcbiAgZG9lc24ndCBuZWVkIHRoaXMsIGFuZCB3ZSBjb3VsZCB1c2UgYW4gaW5maW5pdGUgdGltZW91dC4gIFdlIGluc3RlYWRcbiAgdXNlIGEgc21hbGwgdGltZW91dCAoYnkgZGVmYXVsdCksIHRvIGJlIG1vcmUgcm9idXN0IHRvIGJ1Z3MgdGhhdFxuICBjb3VsZCBwcmV2ZW50IEFzeW5jIGZyb20gd2FraW5nIHVwIGFuZCBzZXJ2aWNpbmcgZXZlbnRzLiAgRm9yXG4gIGV4YW1wbGUsIGFzIG9mIDIwMTMtMDEsIHRoZSBPQ2FtbCBydW50aW1lIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyBpdFxuICB0byBub3QgbmVjZXNzYXJpbHkgcnVuIGFuIE9DYW1sIHNpZ25hbCBoYW5kbGVyIGluIGEgdGltZWx5IG1hbm5lci5cbiAgVGhpcyBpbiB0dXJuIGNhbiBjYXVzZSBhIHNpbXBsZSBBc3luYyBwcm9ncmFtIHRoYXQgaXMgd2FpdGluZyBvbiBhXG4gIHNpZ25hbCB0byBoYW5nLCB3aGVuIGluIGZhY3QgaXQgc2hvdWxkIGhhbmRsZSB0aGUgc2lnbmFsLlxuXG4gIFdlIHVzZSA1MG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGJlY2F1c2UgaXQgaXMgaW5mcmVxdWVudCBlbm91Z2hcbiAgdG8gaGF2ZSBhIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBhbmQgZnJlcXVlbnQgZW5vdWdoIHRoYXRcbiAgdGhlIGxhdGVuY3kgd291bGQgdHlwaWNhbGx5IGJlIG5vdCBub3RpY2VhYmxlLiAgQWxzbywgNTBtcyBpcyB3aGF0XG4gIHRoZSBPQ2FtbCB0aWNrZXIgdGhyZWFkIHVzZXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgd2lsbCBiZSBkb25lIGF0IGVhY2ggcHJpb3JpdHkgd2l0aGluXG4gIGVhY2ggQXN5bmMgY3ljbGUuICBUaGlzIGxpbWl0cyBob3cgbWFueSBqb2JzIHRoZSBzY2hlZHVsZXIgd2lsbCBydW5cbiAgYmVmb3JlIHBhdXNpbmcgdG8gY2hlY2sgZm9yIEkvTy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWluX2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1pbmltdW0gdGltZW91dCB0aGUgc2NoZWR1bGVyIHdpbGwgcGFzcyB0byB0aGUgT1Mgd2hlbiBpdCBjaGVja3NcbiAgZm9yIEkvTyBiZXR3ZWVuIGN5Y2xlcy4gIFRoaXMgaXMgemVybyBieSBkZWZhdWx0LiAgU2V0dGluZyBpdCB0byBhXG4gIG5vbnplcm8gdmFsdWUgaXMgdXNlZCB0byBpbmNyZWFzZSB0aHJlYWQgZmFpcm5lc3MgYmV0d2VlbiB0aGUgc2NoZWR1bGVyXG4gIGFuZCBvdGhlciB0aHJlYWRzLiAgQSBwbGF1c2libGUgc2V0dGluZyBpcyAxdXMuICBUaGlzIGlzIGFsc29cbiAgY29uZmlndXJhYmxlIGluIE9DYW1sIHZpYSBbU2NoZWR1bGVyLnNldF9taW5faW50ZXJfY3ljbGVfdGltZW91dF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRGVidWdfdGFnLnQgbGlzdF1cbiAgICAgICAgICAgWyB7fFxuICBBIGxpc3Qgb2YgdGFncyBzcGVjaWZ5aW5nIHdoaWNoIEFzeW5jIGZ1bmN0aW9ucyBzaG91bGQgcHJpbnQgZGVidWdcbiAgbWVzc2FnZXMgdG8gc3RkZXJyLiAgRWFjaCB0YWcgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJlbGF0ZWQgQXN5bmNcbiAgZnVuY3Rpb25zLiAgVGhlIHRhZyBbYWxsXSBtZWFucyB0byBwcmludCBkZWJ1ZyBtZXNzYWdlcyBmb3IgYWxsXG4gIGZ1bmN0aW9ucy4gIEFsbG93ZWQgdmFsdWVzIGFyZTpcblxufH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBEZWJ1Z190YWcubGlzdCB+ZjooZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGNvbmNhdCBbIFwiICAgIFwiOyBEZWJ1Z190YWcudG9fc3RyaW5nIGQ7IFwiXFxuXCIgXSkpXG4gICAgICAgICAgIDsge3xcbiAgVHVybmluZyBvbiBkZWJ1ZyBtZXNzYWdlcyB3aWxsIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIG1vc3QgcHJvZ3JhbXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIHRoaXMgd2lsbCBjYXVzZSBBc3luYyB0byBrZWVwIGluIHRoZSBleGVjdXRpb24gY29udGV4dCB0aGVcbiAgaGlzdG9yeSBvZiBzdGFjayBiYWNrdHJhY2VzIChvYnRhaW5lZCB2aWEgW0JhY2t0cmFjZS5nZXRdKSB0aGF0IGxlZFxuICB0byB0aGUgY3VycmVudCBqb2IuICBJZiBhbiBBc3luYyBqb2IgaGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sXG4gIHRoaXMgYmFja3RyYWNlIGhpc3Rvcnkgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgZXhjZXB0aW9uLiAgSW5cbiAgcGFydGljdWxhciB0aGUgaGlzdG9yeSB3aWxsIGFwcGVhciBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIHRoYXRcbiAgcmVhY2hlcyB0aGUgbWFpbiBtb25pdG9yLiAgVGhpcyBjYW4gaGF2ZSBhIHN1YnN0YW50aWFsIHBlcmZvcm1hbmNlXG4gIGltcGFjdCwgYm90aCBpbiBydW5uaW5nIHRpbWUgYW5kIHNwYWNlIHVzYWdlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgZXZlcnkgc2Vjb25kIGlmXG4gIHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudF1cbiAgICAgICAgICAgWyB7fFxuICAgV2hldGhlciBhbmQgaG93IHRocmVhZHMgaW4gdGhlIHRocmVhZCBwb29sIHNob3VsZCBiZSBhZmZpbml0aXplZCB0byBDUFVzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aW1pbmdfd2hlZWxfY29uZmlnOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBpcyB1c2VkIHRvIGFkanVzdCB0aGUgdGltZS9zcGFjZSB0cmFkZW9mZiBpbiB0aGUgdGltaW5nIHdoZWVsXG4gIHVzZWQgdG8gaW1wbGVtZW50IEFzeW5jJ3MgY2xvY2suICBUaW1lIGlzIHNwbGl0IGludG8gaW50ZXJ2YWxzIG9mXG4gIHNpemUgW2FsYXJtX3ByZWNpc2lvbl0sIGFuZCBhbGFybXMgd2l0aCB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbFxuICBmaXJlIGluIHRoZSBzYW1lIGN5Y2xlLiAgTGV2ZWwgW2ldIGluIHRoZSB0aW1pbmcgd2hlZWwgaGFzIGFuXG4gIGFycmF5IG9mIHNpemUgWzJeYl0sIHdoZXJlIFtiXSBpcyB0aGUgW2ldJ3RoIGVudHJ5IGluIFtsZXZlbF9iaXRzXS5cbnx9XG4gICAgICAgICAgIF0pXG4gIGluXG4gIGNvbmNhdFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChMaXN0LnNvcnQgZmllbGRzIH5jb21wYXJlOihmdW4gKG5hbWUxLCBfLCBfKSAobmFtZTIsIF8sIF8pIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbmFtZTEgbmFtZTIpKVxuICAgICAgIH5mOihmdW4gKG5hbWUsIGRlZmF1bHQsIGRlc2NyaXB0aW9uKSAtPlxuICAgICAgICAgY29uY2F0XG4gICAgICAgICAgIChcIlxcblwiIDo6IG5hbWUgOjogXCIgKGRlZmF1bHQgXCIgOjogU2V4cC50b19zdHJpbmcgZGVmYXVsdCA6OiBcIilcIiA6OiBkZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGhlbHBfbWVzc2FnZSAoKSA9XG4gIGNvbmNhdFxuICAgIFsgXCJUaGUgXCJcbiAgICA7IGVudmlyb25tZW50X3ZhcmlhYmxlXG4gICAgOyB7fCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZmZlY3RzIEFzeW5jXG5pbiB2YXJpb3VzIHdheXMuICBJdHMgdmFsdWUgc2hvdWxkIGJlIGEgc2V4cCBvZiB0aGUgZm9sbG93aW5nIGZvcm0sXG53aGVyZSBhbGwgZmllbGRzIGFyZSBvcHRpb25hbDpcblxufH1cbiAgICA7IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IGV4YW1wbGUpXG4gICAgOyB7fFxuXG5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggZmllbGQuXG58fVxuICAgIDsgZmllbGRfZGVzY3JpcHRpb25zICgpXG4gICAgXVxuOztcblxubGV0IHVzYWdlICgpID1cbiAgZXByaW50ZiBcIiVzJSFcIiAoaGVscF9tZXNzYWdlICgpKTtcbiAgZXhpdCAxXG47O1xuXG5sZXQgdCA9XG4gIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IElucmlhX3N5cy5nZXRlbnYgZW52aXJvbm1lbnRfdmFyaWFibGUpIHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5XG4gIHwgU29tZSBcIlwiIC0+IHVzYWdlICgpXG4gIHwgU29tZSBzdHJpbmcgLT5cbiAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzdHJpbmcpKSB3aXRoXG4gICAgIHwgT2sgdCAtPiB0XG4gICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgZXByaW50ZlxuICAgICAgICAgXCIlc1xcblxcblwiXG4gICAgICAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAoRXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAoRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgXCJpbnZhbGlkIHZhbHVlIGZvciAlcyBlbnZpcm9ubWVudCB2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF92YXJpYWJsZSlcbiAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgWyVzZXhwX29mOiBleG5dKSkpO1xuICAgICAgIHVzYWdlICgpKVxuOztcblxubW9kdWxlIFByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHN0cnVjdFxuICBsZXQgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZyA9XG4gICAgbWF0Y2ggdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGwgdGFnIH5lcXVhbDpEZWJ1Z190YWcuZXF1YWxcbiAgOztcblxuICBsZXQgYWxsID0gcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIEFsbFxuICBsZXQgZGVidWcgdGFnID0gYWxsIHx8IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWdcbiAgbGV0IGNsb2NrID0gZGVidWcgQ2xvY2tcbiAgbGV0IGZkID0gZGVidWcgRmRcbiAgbGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IGRlYnVnIEZpbGVfZGVzY3Jfd2F0Y2hlclxuICBsZXQgZmluYWxpemVycyA9IGRlYnVnIEZpbmFsaXplcnNcbiAgbGV0IGludGVycnVwdG9yID0gZGVidWcgSW50ZXJydXB0b3JcbiAgbGV0IG1vbml0b3IgPSBkZWJ1ZyBNb25pdG9yXG4gIGxldCBtb25pdG9yX3NlbmRfZXhuID0gZGVidWcgTW9uaXRvcl9zZW5kX2V4blxuICBsZXQgcGFyYWxsZWwgPSBkZWJ1ZyBQYXJhbGxlbFxuICBsZXQgcmVhZGVyID0gZGVidWcgUmVhZGVyXG4gIGxldCBzY2hlZHVsZXIgPSBkZWJ1ZyBTY2hlZHVsZXJcbiAgbGV0IHNodXRkb3duID0gZGVidWcgU2h1dGRvd25cbiAgbGV0IHRocmVhZF9wb29sID0gZGVidWcgVGhyZWFkX3Bvb2xcbiAgbGV0IHRocmVhZF9zYWZlID0gZGVidWcgVGhyZWFkX3NhZmVcbiAgbGV0IHdyaXRlciA9IGRlYnVnIFdyaXRlclxuZW5kXG5cbmxldCAoICEhICkgZmllbGQgPVxuICBPcHRpb24udmFsdWUgKEZpZWxkLmdldCBmaWVsZCB0KSB+ZGVmYXVsdDooT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKVxuOztcblxubGV0IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IGNoZWNrX2ludmFyaWFudHMgPSAhIUZpZWxkcy5jaGVja19pbnZhcmlhbnRzXG5sZXQgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gISFGaWVsZHMuZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG5sZXQgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9ICEhRmllbGRzLmVwb2xsX21heF9yZWFkeV9ldmVudHNcbmxldCB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSAhIUZpZWxkcy50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbmxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSAhIUZpZWxkcy5maWxlX2Rlc2NyX3dhdGNoZXJcbmxldCBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gISFGaWVsZHMubWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG5sZXQgbWF4X251bV90aHJlYWRzID0gISFGaWVsZHMubWF4X251bV90aHJlYWRzXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSAhIUZpZWxkcy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxubGV0IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCByZWNvcmRfYmFja3RyYWNlcyA9ICEhRmllbGRzLnJlY29yZF9iYWNrdHJhY2VzXG5sZXQgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCB0aW1pbmdfd2hlZWxfY29uZmlnID0gISFGaWVsZHMudGltaW5nX3doZWVsX2NvbmZpZ1xubGV0IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSAhIUZpZWxkcy5kdW1wX2NvcmVfb25fam9iX2RlbGF5XG5cbmxldCB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFNvbWUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCB0YXNrX2lkID0gcmVmIChmdW4gKCkgLT4gU2V4cC5BdG9tIFwiPG5vIHRhc2sgaWQ+XCIpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgcmVmXG5cbigqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBPcHRpb25fYXJyYXkuQ2hlYXBfb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlclxuICAgcGxhY2Ugd2hlcmUgd2Ugd2FudCBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxubGV0IG5vbmUgPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIE9iai5hYnN0cmFjdF90YWcgMSlcbmxldCBjcmVhdGUgKCkgPSByZWYgbm9uZVxubGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgIXggbm9uZVxubGV0IGlzX3NvbWUgeCA9IG5vdCAoaXNfbm9uZSB4KVxubGV0IGdldF9zb21lX2V4biB4ID0gaWYgaXNfbm9uZSB4IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb3B0aW9uLmdldF9zb21lX2V4blwiXSBlbHNlICF4XG5sZXQgZ2V0IHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAhdFxubGV0IHVuc2FmZV9nZXQgdCA9ICF0XG5sZXQgc2V0X3NvbWUgdCB2ID0gdCA6PSB2XG5sZXQgc2V0X25vbmUgdCA9IHQgOj0gbm9uZVxuXG5sZXQgc2V0IHQgdiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE5vbmUgLT4gc2V0X25vbmUgdFxuICB8IFNvbWUgdiAtPiBzZXRfc29tZSB0IHZcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBvcHRpb24pXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIE9wdGlvbi5pdGVyIChnZXQgdCkgfmY6aW52YXJpYW50X2EpXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX2dldFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4oKiBUaGlzIHBvb2wgaG9sZHMgbm9kZXMgdGhhdCB3b3VsZCBiZSByZXByZXNlbnRlZCBtb3JlIHRyYWRpdGlvbmFsbHkgYXM6XG5cbiAgIHtbXG4gICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgfCBFbXB0eVxuICAgICAgIHwgSGVhcCBvZiAnYSAqICdhIHQgbGlzdCBdfVxuXG4gICBXZSB3aWxsIHJlcHJlc2VudCB0aGVtIGFzIGEgbGVmdC1jaGlsZCwgcmlnaHQtc2libGluZyB0cmVlIGluIGEgdHJpcGxldFxuICAgKHZhbHVlICogbGVmdF9jaGlsZCAqIHJpZ2h0X3NpYmxpbmcpLiAgVGhlIGxlZnQgY2hpbGQgYW5kIGFsbCByaWdodCBzaWJsaW5nc1xuICAgb2YgdGhlIGxlZnQgY2hpbGQgZm9ybSBhIGxpbmtlZCBsaXN0IHJlcHJlc2VudGluZyB0aGUgc3ViaGVhcHMgb2YgYSBnaXZlbiBoZWFwOlxuXG4gICB7dlxuICAgICAgICAgQVxuICAgICAgICAvXG4gICAgICAgQiAtPiBDIC0+IEQgLT4gRSAtPiBGXG4gICAgICAvICAgICAgICAgLyAgICAgICAgIC9cbiAgICAgRyAgICAgICAgIEgtPkktPkogICBLLT5MXG4gICB2fSAqKVxuXG5tb2R1bGUgTm9kZSA6IHNpZ1xuICAoKiBFeHBvc2luZyBbcHJpdmF0ZSBpbnRdIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJlY2F1c2UgaXQgYWxsb3dzXG4gICAgIHRoZSBjb21waWxlciB0byBza2lwIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGUgaW50XG5cbiAgbW9kdWxlIElkIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjcmVhdGUgOiBtaW5fc2l6ZTppbnQgLT4gJ2EgdFxuICAgIHZhbCBpc19mdWxsIDogJ2EgdCAtPiBib29sXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIGdyb3cgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2Egbm9kZSAtPiAnYSBub2RlICogJ2EgdFxuICBlbmRcblxuICAoKiogW2FsbG9jYXRlIHYgfnBvb2xdIGFsbG9jYXRlcyBhIG5ldyBub2RlIGZyb20gdGhlIHBvb2wgd2l0aCBubyBjaGlsZCBvciBzaWJsaW5nICopXG4gIHZhbCBhbGxvY2F0ZSA6ICdhIC0+IHBvb2w6J2EgUG9vbC50IC0+IGlkOklkLnQgLT4gJ2EgdFxuXG4gICgqKiBbZnJlZSB0IH5wb29sXSBmcmVlcyBbdF0gZm9yIHJldXNlLiAgSXQgaXMgYW4gZXJyb3IgdG8gYWNjZXNzIFt0XSBhZnRlciB0aGlzLiAqKVxuICB2YWwgZnJlZSA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBhIHNwZWNpYWwgW3RdIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgbm9kZSAqKVxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAoKiogW3ZhbHVlX2V4biB0IH5wb29sXSByZXR1cm4gdGhlIHZhbHVlIG9mIFt0XSwgcmFpc2UgaWYgW2lzX2VtcHR5IHRdICopXG4gIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhXG5cbiAgdmFsIGlkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiBJZC50XG4gIHZhbCBjaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuICB2YWwgc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbcHJldiB0XSBpcyBlaXRoZXIgdGhlIHBhcmVudCBvZiBbdF0gb3IgdGhlIHNpYmxpbmcgaW1tZWRpYXRlbHkgbGVmdCBvZiBbdF0gKilcbiAgdmFsIHByZXYgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2FkZF9jaGlsZCB0IH5jaGlsZCB+cG9vbF0gQWRkIGEgY2hpbGQgdG8gW3RdLCBwcmVzZXJ2aW5nIGV4aXN0aW5nIGNoaWxkcmVuIGFzXG4gICAgICBzaWJsaW5ncyBvZiBbY2hpbGRdLiBbdF0gYW5kIFtjaGlsZF0gc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgW2NoaWxkXSBzaG91bGQgaGF2ZSBub1xuICAgICAgc2libGluZyBhbmQgaGF2ZSBubyBwcmV2IG5vZGUuICopXG4gIHZhbCBhZGRfY2hpbGQgOiAnYSB0IC0+IGNoaWxkOidhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIHNpYmxpbmcgKilcbiAgdmFsIGRpc2Nvbm5lY3Rfc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIGNoaWxkICopXG4gIHZhbCBkaXNjb25uZWN0X2NoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtkZXRhY2ggdCB+cG9vbF0gcmVtb3ZlcyBbdF0gZnJvbSB0aGUgdHJlZSwgYWRqdXN0aW5nIHBvaW50ZXJzIGFyb3VuZCBpdC4gQWZ0ZXJcbiAgICAgIFtkZXRhY2hdLCBbdF0gaXMgdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIGhlYXAsIHdoaWNoIGlzIGRldGFjaGVkIGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICBoZWFwLiAqKVxuICB2YWwgZGV0YWNoIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIElkID0gSW50XG5cbiAgbGV0IGR1bW15X2lkIDogSWQudCA9IC0xXG5cbiAgdHlwZSAnYSBub2RlID1cbiAgICAoJ2EsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsIElkLnQpIFBvb2wuU2xvdHMudDVcblxuICB0eXBlICdhIHQgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gIGxldCBlbXB0eSA9IFBvaW50ZXIubnVsbFxuICBsZXQgaXNfZW1wdHkgPSBQb2ludGVyLmlzX251bGxcbiAgbGV0IGVxdWFsID0gUG9pbnRlci5waHlzX2VxdWFsXG4gIGxldCB2YWx1ZSB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MFxuICBsZXQgY2hpbGQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDFcbiAgbGV0IHNpYmxpbmcgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDJcbiAgbGV0IHByZXYgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDNcbiAgbGV0IGlkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQ0XG5cbiAgKCogbGV0IHNldF92YWx1ZSAgIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDAgdiAqKVxuICBsZXQgc2V0X2NoaWxkIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDEgdlxuICBsZXQgc2V0X3NpYmxpbmcgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MiB2XG4gIGxldCBzZXRfcHJldiB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQzIHZcblxuICBsZXQgdmFsdWVfZXhuIHQgfnBvb2wgPVxuICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgdmFsdWUgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBhbGxvY2F0ZSB2YWx1ZSB+cG9vbCB+aWQgPSBQb29sLm5ldzUgcG9vbCB2YWx1ZSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgKGVtcHR5ICgpKSBpZFxuICBsZXQgZnJlZSB0IH5wb29sID0gUG9vbC51bnNhZmVfZnJlZSBwb29sIHRcblxuICBsZXQgZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgPVxuICAgIGxldCBzaWJsaW5nID0gc2libGluZyB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X3NpYmxpbmcgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgc2libGluZyAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBzaWJsaW5nXG4gIDs7XG5cbiAgbGV0IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCA9XG4gICAgbGV0IGNoaWxkID0gY2hpbGQgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfY2hpbGQgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgY2hpbGQgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgY2hpbGRcbiAgOztcblxuICBsZXQgYWRkX2NoaWxkIHQgfmNoaWxkOm5ld19jaGlsZCB+cG9vbCA9XG4gICAgKCogYXNzZXJ0aW9ucyB3ZSB3b3VsZCBtYWtlLCBidXQgZm9yIHNwZWVkOlxuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IG5ld19jaGlsZCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHNpYmxpbmcgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAocHJldiBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAqKVxuICAgIGxldCBjdXJyZW50X2NoaWxkID0gZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sIGluXG4gICAgKCogYWRkIFtuZXdfY2hpbGRdIHRvIHRoZSBsaXN0IG9mIFt0XSdzIGNoaWxkcmVuICh3aGljaCBtYXkgYmUgZW1wdHkpICopXG4gICAgc2V0X3NpYmxpbmcgbmV3X2NoaWxkIGN1cnJlbnRfY2hpbGQgfnBvb2w7XG4gICAgaWYgbm90IChpc19lbXB0eSBjdXJyZW50X2NoaWxkKSB0aGVuIHNldF9wcmV2IGN1cnJlbnRfY2hpbGQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9jaGlsZCB0IG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfcHJldiBuZXdfY2hpbGQgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBkZXRhY2ggdCB+cG9vbCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByZXYgPSBwcmV2IHQgfnBvb2wgaW5cbiAgICAgIGlmIG5vdCAoaXNfZW1wdHkgcHJldilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcmVsYXRpb25fdG9fcHJldiA9IGlmIGVxdWFsIHQgKGNoaWxkIHByZXYgfnBvb2wpIHRoZW4gYGNoaWxkIGVsc2UgYHNpYmxpbmcgaW5cbiAgICAgICAgc2V0X3ByZXYgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgICBsZXQgc2libGluZyA9IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sIGluXG4gICAgICAgIChtYXRjaCByZWxhdGlvbl90b19wcmV2IHdpdGhcbiAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBwcmV2IHNpYmxpbmcgfnBvb2xcbiAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgcHJldiBzaWJsaW5nIH5wb29sKTtcbiAgICAgICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKSB0aGVuIHNldF9wcmV2IHNpYmxpbmcgcHJldiB+cG9vbCkpXG4gIDs7XG5cbiAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBub2RlIFBvb2wudFxuICAgIHR5cGUgbm9ucmVjICdhIG5vZGUgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+bWluX3NpemU6Y2FwYWNpdHkgOiBhIHQgPVxuICAgICAgUG9vbC5jcmVhdGVcbiAgICAgICAgUG9vbC5TbG90cy50NVxuICAgICAgICB+Y2FwYWNpdHlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgICggKE9iai5tYWdpYyBOb25lIDogYSlcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIGR1bW15X2lkIClcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IFBvb2wuaXNfZnVsbCB0XG4gICAgbGV0IGxlbmd0aCB0ID0gUG9vbC5sZW5ndGggdFxuICAgIGxldCBncm93IHQgPSBQb29sLmdyb3cgdFxuXG4gICAgbGV0IGNvcHkgdCBzdGFydCA9XG4gICAgICBsZXQgdCcgPSBjcmVhdGUgfm1pbl9zaXplOihQb29sLmNhcGFjaXR5IHQpIGluXG4gICAgICBsZXQgY29weV9ub2RlIG5vZGUgdG9fdmlzaXQgPVxuICAgICAgICBpZiBpc19lbXB0eSBub2RlXG4gICAgICAgIHRoZW4gZW1wdHkgKCksIHRvX3Zpc2l0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHdlIHVzZSB0aGUgc2FtZSBpZCwgYnV0IHRoYXQncyBvayBzaW5jZSBpZHMgc2hvdWxkIGJlIHVuaXF1ZSBwZXIgaGVhcCAqKVxuICAgICAgICAgIGxldCBuZXdfbm9kZSA9XG4gICAgICAgICAgICBhbGxvY2F0ZSAodmFsdWVfZXhuIG5vZGUgfnBvb2w6dCkgfnBvb2w6dCcgfmlkOihpZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdG9fdmlzaXQgPVxuICAgICAgICAgICAgKG5ld19ub2RlLCBgY2hpbGQsIGNoaWxkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IChuZXdfbm9kZSwgYHNpYmxpbmcsIHNpYmxpbmcgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogdG9fdmlzaXRcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19ub2RlLCB0b192aXNpdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCAobm9kZV90b191cGRhdGUsIHNsb3QsIG5vZGVfdG9fY29weSkgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBuZXdfbm9kZSwgdG9fdmlzaXQgPSBjb3B5X25vZGUgbm9kZV90b19jb3B5IHJlc3QgaW5cbiAgICAgICAgICAobWF0Y2ggc2xvdCB3aXRoXG4gICAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0J1xuICAgICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnKTtcbiAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IG5ld19ub2RlKSB0aGVuIHNldF9wcmV2IG5ld19ub2RlIG5vZGVfdG9fdXBkYXRlIH5wb29sOnQnO1xuICAgICAgICAgIGxvb3AgdG9fdmlzaXRcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N0YXJ0LCB0b192aXNpdCA9IGNvcHlfbm9kZSBzdGFydCBbXSBpblxuICAgICAgbG9vcCB0b192aXNpdDtcbiAgICAgIG5ld19zdGFydCwgdCdcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7ICgqIGNtcCBpcyBwbGFjZWQgZmlyc3QgdG8gc2hvcnQtY2lyY3VpdCBwb2x5bW9ycGhpYyBjb21wYXJlICopXG4gICAgY21wIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgbXV0YWJsZSBwb29sIDogJ2EgTm9kZS5Qb29sLnRcbiAgOyAoKiBpbnZhcmlhbnQ6ICBbcm9vdF0gbmV2ZXIgaGFzIGEgc2libGluZyAqKVxuICAgIG11dGFibGUgcm9vdCA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA6IGludFxuICB9XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgKG5vZGUsIGV4cGVjdGVkX3ByZXYsIG1heWJlX3BhcmVudF92YWx1ZSkgOjogcmVzdCAtPlxuICAgICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IG5vZGUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRoaXNfdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbCBpblxuICAgICAgICBhc3NlcnQgKE5vZGUuZXF1YWwgKE5vZGUucHJldiBub2RlIH5wb29sOnQucG9vbCkgZXhwZWN0ZWRfcHJldik7XG4gICAgICAgIE9wdGlvbi5pdGVyIG1heWJlX3BhcmVudF92YWx1ZSB+ZjooZnVuIHBhcmVudF92YWx1ZSAtPlxuICAgICAgICAgIGFzc2VydCAodC5jbXAgcGFyZW50X3ZhbHVlIHRoaXNfdmFsdWUgPD0gMCkpO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKChOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBTb21lIHRoaXNfdmFsdWUpXG4gICAgICAgICAgIDo6IChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIG1heWJlX3BhcmVudF92YWx1ZSlcbiAgICAgICAgICAgOjogcmVzdCkpXG4gICAgICBlbHNlIGxvb3AgcmVzdFxuICBpblxuICBhc3NlcnQgKE5vZGUuaXNfZW1wdHkgdC5yb290IHx8IE5vZGUuaXNfZW1wdHkgKE5vZGUuc2libGluZyB0LnJvb3QgfnBvb2w6dC5wb29sKSk7XG4gIGxvb3AgWyB0LnJvb3QsIE5vZGUuZW1wdHkgKCksIE5vbmUgXVxuOztcblxubGV0IGNyZWF0ZSA/KG1pbl9zaXplID0gMSkgfmNtcCAoKSA9XG4gIHsgY21wXG4gIDsgcG9vbCA9IE5vZGUuUG9vbC5jcmVhdGUgfm1pbl9zaXplXG4gIDsgcm9vdCA9IE5vZGUuZW1wdHkgKClcbiAgOyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzID0gMFxuICB9XG47O1xuXG5sZXQgY29weSB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9ID1cbiAgbGV0IHJvb3QsIHBvb2wgPSBOb2RlLlBvb2wuY29weSBwb29sIHJvb3QgaW5cbiAgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfVxuOztcblxubGV0IGFsbG9jYXRlIHQgdiA9XG4gIGlmIE5vZGUuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBOb2RlLlBvb2wuZ3JvdyB0LnBvb2w7XG4gIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyA8LSB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgKyAxO1xuICBOb2RlLmFsbG9jYXRlIHYgfnBvb2w6dC5wb29sIH5pZDooTm9kZS5JZC5vZl9pbnQgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCByb290MSwgcm9vdDIgd2l0aFxuICAgICB8IE5vbmUsIGggfCBoLCBOb25lIC0+IGhcbiAgICAgfCBTb21lIChOb2RlICh2MSwgY2hpbGRyZW4xKSksIFNvbWUgKE5vZGUgKHYyLCBjaGlsZHJlbjIpKSAtPlxuICAgICAgIGlmIHYxIDwgdjJcbiAgICAgICB0aGVuIFNvbWUgKE5vZGUgKHYxLCByb290MiA6OiBjaGlsZHJlbjEpKVxuICAgICAgIGVsc2UgU29tZSAoTm9kZSAodjIsIHJvb3QxIDo6IGNoaWxkcmVuMikpXG4gICBdfVxuXG4gICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgbmVpdGhlciByb290IGhhcyBhIHByZXYgbm9kZSAodXN1YWxseSBiZWNhdXNlIHRoZSBpbnB1dHMgY29tZVxuICAgZnJvbSBbZGlzY29ubmVjdF8qXSBvciBhcmUgdGhlIHRvcCBvZiB0aGUgaGVhcCBvciBhcmUgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKS4gKilcbmxldCBtZXJnZSB0IHJvb3QxIHJvb3QyID1cbiAgaWYgTm9kZS5pc19lbXB0eSByb290MVxuICB0aGVuIHJvb3QyXG4gIGVsc2UgaWYgTm9kZS5pc19lbXB0eSByb290MlxuICB0aGVuIHJvb3QxXG4gIGVsc2UgKFxuICAgIGxldCBhZGRfY2hpbGQgdCBub2RlIH5jaGlsZCA9XG4gICAgICBOb2RlLmFkZF9jaGlsZCBub2RlIH5wb29sOnQucG9vbCB+Y2hpbGQ7XG4gICAgICBub2RlXG4gICAgaW5cbiAgICBsZXQgdjEgPSBOb2RlLnZhbHVlX2V4biByb290MSB+cG9vbDp0LnBvb2wgaW5cbiAgICBsZXQgdjIgPSBOb2RlLnZhbHVlX2V4biByb290MiB+cG9vbDp0LnBvb2wgaW5cbiAgICBpZiB0LmNtcCB2MSB2MiA8IDBcbiAgICB0aGVuIGFkZF9jaGlsZCB0IHJvb3QxIH5jaGlsZDpyb290MlxuICAgIGVsc2UgYWRkX2NoaWxkIHQgcm9vdDIgfmNoaWxkOnJvb3QxKVxuOztcblxubGV0IHRvcF9leG4gdCA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgdC5yb290XG4gIHRoZW4gZmFpbHdpdGggXCJIZWFwLnRvcF9leG4gY2FsbGVkIG9uIGFuIGVtcHR5IGhlYXBcIlxuICBlbHNlIE5vZGUudmFsdWVfZXhuIHQucm9vdCB+cG9vbDp0LnBvb2xcbjs7XG5cbmxldCB0b3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9leG4gdClcblxubGV0IGFkZF9ub2RlIHQgdiA9XG4gIGxldCBub2RlID0gYWxsb2NhdGUgdCB2IGluXG4gIHQucm9vdCA8LSBtZXJnZSB0IHQucm9vdCBub2RlO1xuICBub2RlXG47O1xuXG5sZXQgYWRkIHQgdiA9IGlnbm9yZSAoYWRkX25vZGUgdCB2IDogXyBOb2RlLnQpXG5cbigqIFttZXJnZV9wYWlyc10gdGFrZXMgYSBsaXN0IG9mIGhlYXAgcm9vdHMgYW5kIG1lcmdlcyBjb25zZWN1dGl2ZSBwYWlycywgcmVkdWNpbmcgdGhlXG4gICBsaXN0IG9mIGxlbmd0aCBuIHRvIG4vMi4gIFRoZW4gaXQgbWVyZ2VzIHRoZSBtZXJnZWQgcGFpcnMgaW50byBhIHNpbmdsZSBoZWFwLiAgT25lXG4gICBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGxpa2UgYnVpbGRpbmcgYSBzaW5nbGUgbGV2ZWwgb2YgYSBiaW5hcnkgdHJlZS5cblxuICAgVGhlIG91dHB1dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIHZhbHVlIHRoYXQgd2FzIGF0IHRoZSByb290IG9mIHRoZSBpbnB1dCBoZWFwLlxuXG4gICBXZSBicmVhayB0aGUgZnVuY3Rpb24gaW50byB0d28gcGFydHMuICBBIGZpcnN0IHN0YWdlIHRoYXQgaXMgd2lsbGluZyB0byB1c2UgbGltaXRlZFxuICAgc3RhY2sgaW5zdGVhZCBvZiBoZWFwIGFsbG9jYXRpb24gZm9yIGJvb2trZWVwaW5nLCBhbmQgYSBzZWNvbmQgc3RhZ2UgdGhhdCBzaGlmdHMgdG9cbiAgIHVzaW5nIGEgbGlzdCBhcyBhbiBhY2N1bXVsYXRvciBpZiB3ZSBnbyB0b28gZGVlcC5cblxuICAgVGhpcyBjYW4gYmUgbWFkZSB0YWlsIHJlY3Vyc2l2ZSBhbmQgbm9uLWFsbG9jYXRpbmcgYnkgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSBoZWFwIGFuZFxuICAgbWVyZ2luZyBtZXJnZWQgcGFpcnMgaW50byBpdC4gVW5mb3J0dW5hdGVseSB0aGlzIFwibGVmdCBmb2xkXCIgdmVyc2lvbiBpcyBub3Qgd2hhdCBpc1xuICAgZGVzY3JpYmVkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBGcmVkbWFuIGV0IGFsLjsgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRoYXRcbiAgIGNoaWxkcmVuIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRoZXIgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICBsaXN0LiAoW21lcmdlXSBpcyBub3QgYXNzb2NpYXRpdmUsIHNvIG9yZGVyIG1hdHRlcnMuKVxuKilcbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICB8IFtoZWFkXSAtPiBoZWFkIDo6IGFjY1xuICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPiBsb29wIChtZXJnZSBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDJcbiAgICAgaW5cbiAgICAgbWF0Y2ggbG9vcCBbXSBjaGlsZHJlbiB3aXRoXG4gICAgIHwgW10gLT4gTm9uZVxuICAgICB8IFtoXSAtPiBTb21lIGhcbiAgICAgfCB4IDo6IHhzIC0+IFNvbWUgKExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOm1lcmdlKVxuICAgXX1cbiopXG5sZXQgYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWQgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGhlYWQgPVxuICAgIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkIDo6IGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICBsb29wIChtZXJnZSB0IGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MikpXG4gIGluXG4gIG1hdGNoIGxvb3AgW10gaGVhZCB3aXRoXG4gIHwgW10gLT4gTm9kZS5lbXB0eSAoKVxuICB8IFsgaCBdIC0+IGhcbiAgfCB4IDo6IHhzIC0+IExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4gYWNjIGhlYXAgLT4gbWVyZ2UgdCBhY2MgaGVhcClcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggdC5yb290IHdpdGhcbiAgICAgfCBOb2RlIChfLCBjaGlsZHJlbikgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZGVwdGggY2hpbGRyZW4gPVxuICAgICAgICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgICAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBjaGlsZGVuXG4gICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgIHwgW2hlYWRdIC0+IFNvbWUgaGVhZFxuICAgICAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT5cbiAgICAgICAgICAgICBtZXJnZSAobWVyZ2UgaGVhZCBuZXh0MSkgKGxvb3AgKGRlcHRoICsgMSkgbmV4dDIpXG4gICAgICAgICBlbmRcbiAgICAgICBpblxuICAgICAgIGxvb3AgMCBjaGlsZHJlblxuICAgXX1cbiopXG5sZXQgbWVyZ2VfcGFpcnMgPVxuICBsZXQgbWF4X3N0YWNrX2RlcHRoID0gMV8wMDAgaW5cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggaGVhZCA9XG4gICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZFxuICAgIGVsc2UgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBoZWFkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgICgqIG1lcmdlIHRoZSBmaXJzdCB0d28gbm9kZXMgaW4gb3VyIGxpc3QsIGFuZCB0aGVuIG1lcmdlIHRoZSByZXN1bHQgd2l0aCB0aGVcbiAgICAgICAgICAgcmVzdWx0IG9mIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgbWVyZ2VfcGFpcnMgb24gdGhlIHRhaWwgKilcbiAgICAgICAgbWVyZ2UgdCAobWVyZ2UgdCBoZWFkIG5leHQxKSAobG9vcCB0IChkZXB0aCArIDEpIG5leHQyKSkpXG4gIGluXG4gIGZ1biB0IGhlYWQgLT4gbG9vcCB0IDAgaGVhZFxuOztcblxubGV0IHJlbW92ZV9ub25fZW1wdHkgdCBub2RlID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgbGV0IG1lcmdlZF9jaGlsZHJlbiA9IG1lcmdlX3BhaXJzIHQgKE5vZGUuZGlzY29ubmVjdF9jaGlsZCBub2RlIH5wb29sKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIGlmIE5vZGUuZXF1YWwgdC5yb290IG5vZGUgdGhlbiBtZXJnZWRfY2hpbGRyZW4gZWxzZSBtZXJnZSB0IHQucm9vdCBtZXJnZWRfY2hpbGRyZW5cbiAgaW5cbiAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gIHQucm9vdCA8LSBuZXdfcm9vdFxuOztcblxubGV0IHJlbW92ZV90b3AgdCA9IGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHQucm9vdFxuXG4oKiBOb3RlIHRoYXQgdGhpcyBpcyB0YWlsLXJlY3Vyc2l2ZSBhbmQgdGhhdCBlYWNoIG5vZGUgaXMgdmlzaXRlZCBhdCBtb3N0IDMgdGltZXMgKG9uY2VcbiAgIGZvciBlYWNoIGJyYW5jaCBvZiB0aGUgXCJpZlwiKSwgc28gaXQgdGFrZXMgbGluZWFyIHRpbWUgYW5kIGNvbnN0YW50IHNwYWNlLiAqKVxubGV0IHJlYyByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBub2RlIH5wb29sID1cbiAgbGV0IGNoaWxkID0gTm9kZS5jaGlsZCBub2RlIH5wb29sIGluXG4gIGxldCBzaWJsaW5nID0gTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2wgaW5cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IGNoaWxkKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IGNoaWxkIH5wb29sXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHNpYmxpbmcpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgc2libGluZyB+cG9vbFxuICBlbHNlIChcbiAgICBsZXQgcHJldiA9IE5vZGUucHJldiBub2RlIH5wb29sIGluXG4gICAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgcHJldikgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBwcmV2IH5wb29sKVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KVxuICB0aGVuIChcbiAgICByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSB0LnJvb3QgfnBvb2w6dC5wb29sO1xuICAgIHQucm9vdCA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IHBvcF9leG4gdCA9XG4gIGxldCByID0gdG9wX2V4biB0IGluXG4gIHJlbW92ZV90b3AgdDtcbiAgclxuOztcblxubGV0IHBvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX2V4biB0KVxuXG5sZXQgcG9wX2lmIHQgZiA9XG4gIG1hdGNoIHRvcCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHYgLT5cbiAgICBpZiBmIHZcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV90b3AgdDtcbiAgICAgIFNvbWUgdilcbiAgICBlbHNlIE5vbmVcbjs7XG5cbigqIHBhaXJpbmcgaGVhcHMgYXJlIG5vdCBiYWxhbmNlZCB0cmVlcywgYW5kIHRoZXJlZm9yZSB3ZSBjYW4ndCByZWx5IG9uIGEgYmFsYW5jZVxuICAgcHJvcGVydHkgdG8gc3RvcCBvdXJzZWx2ZXMgZnJvbSBvdmVyZmxvd2luZyB0aGUgc3RhY2suICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCAoZiBhY2MgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpKSB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBpbml0IFsgdC5yb290IF1cbjs7XG5cbigqIGFsbW9zdCBpZGVudGljYWwgdG8gZm9sZCwgY29waWVkIGZvciBzcGVlZCBwdXJwb3NlcyAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGYgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpO1xuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIFsgdC5yb290IF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIGEgPVxuICAgIGlmIE0uYW1fcnVubmluZ190ZXN0IHRoZW4gU2V4cC5BdG9tIFwiPGhpZGRlbl9pbl90ZXN0PlwiIGVsc2Ugc2V4cF9vZl9hIGFcbiAgOztcblxuICBtb2R1bGUgV2l0aF9ub25fcm91bmR0cmlwcGluZ19pbl90ZXN0X29mX3NleHAgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHVybmVkX29mZiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBmYWxzZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUdXJuZWRfb24gPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSB0cnVlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb25cIiA9XG4gICAgICBwcmludF9zIFslc2V4cCAoMTAyNCA6IFR1cm5lZF9vbi50KV07XG4gICAgICBbJWV4cGVjdCB7fCA8aGlkZGVuX2luX3Rlc3Q+IHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb2ZmXCIgPVxuICAgICAgcHJpbnRfcyAoWyVzZXhwX29mOiBUdXJuZWRfb2ZmLnRdIDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyNCB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5pbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5cbnR5cGUgKydhIHRcblxuKCogVGhpcyBbT2JqLm1hZ2ljXSBpcyBPSyBiZWNhdXNlIHdlIG5ldmVyIGFsbG93IHVzZXIgY29kZSBhY2Nlc3MgdG8gW25vbmVdIChleGNlcHQgdmlhXG4gICBbdW5zYWZlX3ZhbHVlXSkuICBXZSBkaXNhbGxvdyBbXyBVb3B0LnQgVW9wdC50XSwgc28gdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGNvbmZ1c2luZ1xuICAgW25vbmVdIHdpdGggW3NvbWUgbm9uZV0uICBBbmQgW2Zsb2F0IFVvcHQudCBhcnJheV0gaXMgc2ltaWxhcmx5IGRpc2FsbG93ZWQuICopXG5sZXQgbm9uZSA6ICdhIHQgPSBPYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxubGV0IHNvbWUgKHggOiAnYSkgOiAnYSB0ID0gT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWUgKHggOiAnYSB0KSA6ICdhID0gT2JqLm1hZ2ljIHhcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBub3JtYWwgPSBOb3JtYWxcbmxldCBsb3cgPSBMb3dcbiIsIigqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgYXQgdGhlIGhlYXJ0IG9mIEFzeW5jLiAgVGhlIGZ1bmN0aW9uc1xuICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlKHMpIGZvciBlYWNoIG1vZHVsZS5cbiAgIFRoaXMgZmlsZSBzaG91bGQgZGVmaW5lIG9ubHkgdHlwZXMsIG5vdCBmdW5jdGlvbnMsIHNpbmNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGVcbiAgIHJlY3Vyc2l2ZSBtb2R1bGVzIGFyZSBub3QgaW5saW5lZC5cblxuICAgSWYgeW91IG5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYSBtb2R1bGUgYnV0IGRvaW5nIHNvIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3lcbiAgIGN5Y2xlLCBzcGxpdCB0aGUgZmlsZSBpbnRvIHBpZWNlcyBhcyBuZWVkZWQgdG8gYnJlYWsgdGhlIGN5Y2xlLCBlLmcuIHNjaGVkdWxlcjAubWwsXG4gICBzY2hlZHVsZXIxLm1sLCBzY2hlZHVsZXIubWwuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgcmVjIENlbGwgOiBzaWdcbiAgdHlwZSBhbnkgPVxuICAgIFsgYEVtcHR5XG4gICAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgIHwgYEZ1bGxcbiAgICB8IGBJbmRpclxuICAgIF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgICB7IG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICA7IG11dGFibGUgcHJldiA6ICdhIEhhbmRsZXIudFxuICAgICAgICA7IG11dGFibGUgbmV4dCA6ICdhIEhhbmRsZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIHRcbiAgICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSB0XG4gICAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIHRcbiAgICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIHRcbiAgICB8IEluZGlyIDogJ2EgSXZhci50IC0+ICgnYSwgWz4gYEluZGlyIF0pIHRcbmVuZCA9XG4gIENlbGxcblxuYW5kIEhhbmRsZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBDZWxsLnRcbmVuZCA9XG4gIEhhbmRsZXJcblxuYW5kIEl2YXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuXG4gIG1vZHVsZSBJbW11dGFibGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPSB7IGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuICBlbmRcbmVuZCA9XG4gIEl2YXJcblxuYW5kIERlZmVycmVkIDogc2lnXG4gIHR5cGUgKydhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nXG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGxpc3RcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogQ3ljbGVfaG9vay50IGxpc3RcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFRpbWVfc291cmNlLnQxXG4gICAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHlpZWxkIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gICAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIFNjaGVkdWxlclxuXG5hbmQgQ3ljbGVfaG9vayA6IHNpZ1xuICB0eXBlIHQgPSB1bml0IC0+IHVuaXRcbmVuZCA9XG4gIEN5Y2xlX2hvb2tcblxuYW5kIEN5Y2xlX2hvb2tfaGFuZGxlIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5hbmQgVGltZV9zb3VyY2VfaWQgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxuYW5kIFRpbWVfc291cmNlIDogc2lnXG4gIHR5cGUgLSdydyB0MSA9XG4gICAgeyBpZCA6IFRpbWVfc291cmNlX2lkLnRcbiAgICA7IG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7IG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICB9XG5lbmQgPVxuICBUaW1lX3NvdXJjZVxuXG5hbmQgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyIDogc2lnXG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuZW5kID1cbiAgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbmxldCBkZWJ1ZyA9IERlYnVnLm1vbml0b3JcblxubW9kdWxlIEZvcndhcmRpbmcgPSBUeXBlcy5Gb3J3YXJkaW5nXG5cbnR5cGUgdCA9IFR5cGVzLk1vbml0b3IudCA9XG4gIHsgbmFtZSA6IEluZm8udFxuICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICA7IGlkIDogaW50XG4gIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIFR5cGVzLkl2YXIudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBzY2hlZHVsZXMgYSBqb2IgZm9yIGVhY2ggZWxlbWVudCBvZiBbaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIGV4dGVuZHMgZWFjaCB0YWlsIGluIFt0YWlsc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUeXBlcy5UYWlsLnQgbGlzdFxuICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGRlc2NyaXB0aW9uIHQgPVxuICBtYXRjaCB0LmhlcmUgd2l0aFxuICB8IE5vbmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpXVxuICB8IFNvbWUgaGVyZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCksIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgZGVzY3JpcHRpb25zID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIGxldCBhYyA9IGRlc2NyaXB0aW9uIHQgOjogYWMgaW5cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IExpc3QucmV2IGFjXG4gICAgfCBQYXJlbnQgdCAtPiBsb29wIHQgYWNcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKGRlc2NyaXB0aW9ucyB0IDogU2V4cC50IGxpc3QpXVxuXG5sZXQgbmV4dF9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIHBhcmVudCA9XG4gIGxldCBpZCA9IG5leHRfaWQgKCkgaW5cbiAgbGV0IG5hbWUgPVxuICAgIG1hdGNoIGluZm8sIG5hbWUgd2l0aFxuICAgIHwgU29tZSBpLCBOb25lIC0+IGlcbiAgICB8IFNvbWUgaSwgU29tZSBzIC0+IEluZm8udGFnIGkgfnRhZzpzXG4gICAgfCBOb25lLCBTb21lIHMgLT4gSW5mby5vZl9zdHJpbmcgc1xuICAgIHwgTm9uZSwgTm9uZSAtPiBJbmZvLmNyZWF0ZSBcImlkXCIgaWQgWyVzZXhwX29mOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XVxuICBpblxuICBsZXQgdCA9XG4gICAgeyBuYW1lXG4gICAgOyBoZXJlXG4gICAgOyBmb3J3YXJkaW5nID1cbiAgICAgICAgKG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gUmVwb3J0X3VuY2F1Z2h0X2V4blxuICAgICAgICAgfCBTb21lIHBhcmVudCAtPiBQYXJlbnQgcGFyZW50KVxuICAgIDsgaWRcbiAgICA7IG5leHRfZXJyb3IgPSB7IGNlbGwgPSBFbXB0eSB9XG4gICAgOyBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA9IEJhZy5jcmVhdGUgKClcbiAgICA7IHRhaWxzX2Zvcl9hbGxfZXJyb3JzID0gW11cbiAgICA7IGhhc19zZWVuX2Vycm9yID0gZmFsc2VcbiAgICB9XG4gIGluXG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiY3JlYXRlZCBtb25pdG9yXCIgdCBbJXNleHBfb2Y6IHRdO1xuICB0XG47O1xuXG5sZXQgbWFpbiA9IGNyZWF0ZV93aXRoX3BhcmVudCB+bmFtZTpcIm1haW5cIiBOb25lXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcblxudHlwZSB0ID0gVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IG1haW4gPVxuICB7IG1vbml0b3IgPSBNb25pdG9yLm1haW5cbiAgOyBwcmlvcml0eSA9IFByaW9yaXR5Lm5vcm1hbFxuICA7IGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5lbXB0eVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gW11cbiAgfVxuOztcblxubGV0IGNyZWF0ZV9saWtlID9tb25pdG9yID9wcmlvcml0eSA/bG9jYWxfc3RvcmFnZSB0ID1cbiAgbGV0IG1vbml0b3IgPSBPcHRpb24udmFsdWUgbW9uaXRvciB+ZGVmYXVsdDp0Lm1vbml0b3IgaW5cbiAgeyBtb25pdG9yXG4gIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICA7IGxvY2FsX3N0b3JhZ2UgPSBPcHRpb24udmFsdWUgbG9jYWxfc3RvcmFnZSB+ZGVmYXVsdDp0LmxvY2FsX3N0b3JhZ2VcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IHQuYmFja3RyYWNlX2hpc3RvcnlcbiAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldICopXG4gICAgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgKCogW2Zyb250XSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGpvYiBpbiB0aGUgcXVldWUuICBUaGUgYXJyYXkgaW5kZXggb2YgdGhhdCBqb2Inc1xuICAgICAgIGV4ZWN1dGlvbiBjb250ZXh0IGlzIFtmcm9udCAqIHNsb3RzX3Blcl9lbHRdLiAqKVxuICAgIG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBvZmZzZXQgdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayAqIHNsb3RzX3Blcl9lbHRcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5udW1fam9ic19ydW46KGNoZWNrIChmdW4gbnVtX2pvYnNfcnVuIC0+IGFzc2VydCAobnVtX2pvYnNfcnVuID49IDApKSlcbiAgICAgIH5qb2JzX2xlZnRfdGhpc19jeWNsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9ic19sZWZ0X3RoaXNfY3ljbGUgLT4gYXNzZXJ0IChqb2JzX2xlZnRfdGhpc19jeWNsZSA+PSAwKSkpXG4gICAgICB+am9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gam9icyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50XG4gICAgICAgICAgICAgICAoT2JqLm9iaiAoQS5nZXQgam9icyAob2Zmc2V0IHQgaSkpIDogRXhlY3V0aW9uX2NvbnRleHQudClcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWFzazpcbiAgICAgICAgKGNoZWNrIChmdW4gbWFzayAtPlxuICAgICAgICAgICBsZXQgY2FwYWNpdHkgPSBtYXNrICsgMSBpblxuICAgICAgICAgICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBjYXBhY2l0eSA9IDEgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICB9XG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5sZW5ndGggPC0gMDtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSAwXG47O1xuXG5sZXQgZ3JvdyB0ID1cbiAgbGV0IG9sZF9jYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG9sZF9jYXBhY2l0eSAqIDIgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZyAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKilcbiAgICAgICAgfCBTY2hlZHVsZWQgKCogaW4gdGhlIHRpbWluZyB3aGVlbCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkICgqIG5vdCBpbiB0aW1pbmcgd2hlZWwgb3IgW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgICBsZXQgdHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18gPVxuICAgICAgICBtYXRjaCBmcm9tLCB0b18gd2l0aFxuICAgICAgICB8IEZpcmVkLCBIYXBwZW5pbmcgKCogc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrICopXG4gICAgICAgIHwgRmlyZWQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgKCogW3Jlc2NoZWR1bGVfKl0gZ29lcyB0aHJvdWdoIGFuIGludGVybWVkaWF0ZSBbRmlyZWQsIFVuc2NoZWR1bGVkXSBzdGF0ZSxcbiAgICAgICAgICAgc28gd2UgbmV2ZXIgdHJhbnNpdGlvbiBmcm9tIFtGaXJlZF0gZGlyZWN0bHkgdG8gW1NjaGVkdWxlZF0uICopXG4gICAgICAgIHwgSGFwcGVuaW5nLCBTY2hlZHVsZWQgKCogZm9yIHJlcGVhdGluZyBldmVudHMgKilcbiAgICAgICAgfCBIYXBwZW5pbmcsIFVuc2NoZWR1bGVkICgqIGV2ZW50IGNhbGxiYWNrIGZpbmlzaGVkICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBGaXJlZCAoKiBtb3ZlZCBmcm9tIHRpbWluZyB3aGVlbCB0byBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBGaXJlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIHBhc3QgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgU2NoZWR1bGVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgZnV0dXJlICopIC0+IHRydWVcbiAgICAgICAgfCAoRmlyZWQgfCBIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCksIF8gLT4gZmFsc2VcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIGV2ZW50ID0gVHlwZXMuRXZlbnQudFxuXG4gICAgbGV0IHNleHBfb2ZfZXZlbnRcbiAgICAgICAgICAoeyBhbGFybSA9IF9cbiAgICAgICAgICAgOyBhdFxuICAgICAgICAgICA7IGNhbGxiYWNrID0gX1xuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gX1xuICAgICAgICAgICA7IGludGVydmFsXG4gICAgICAgICAgIDsgbmV4dF9maXJlZCA9IF9cbiAgICAgICAgICAgOyBwcmV2X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHN0YXR1c1xuICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICBldmVudClcbiAgICAgID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgOyBpbnRlcnZhbCA6IChUaW1lX25zLlNwYW4udCBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgICAgKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dFxuICAgICAgICAgdG8gW09iai5tYWdpY11zLiAqKVxuICAgICAgbW9kdWxlIEV2ZW50X2lzX2Jsb2NrIDogc2lnIGVuZCA9IHN0cnVjdFxuICAgICAgICBvcGVuIFR5cGVzXG4gICAgICAgIG9wZW4gRXZlbnRcblxuICAgICAgICB0eXBlIF90ID0gdCA9XG4gICAgICAgICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICAgICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuT3B0aW9uLnRcblxuICAgICAgKCogVXNpbmcgYW4gaW1tZWRpYXRlIHJhdGhlciB0aGFuIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgcmVjb3JkIGhlcmUgc2VlbXMgdG9cbiAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2Ugbm90aWNlYWJseSAoWy4uL2JlbmNoL2Jpbi9iZW5jaF90aW1lX3NvdXJjZS5leGVdIGJlbmNobWFya1xuICAgICAgICAgaXMgZmFzdGVyIGJ5IH4xMG5zIHBlciBhbGFybSksIHByZXN1bWFibHkgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIGV4cGVuc2l2ZVxuICAgICAgICAgcGFydHMgb2YgY2FtbF9tb2RpZnkuICopXG4gICAgICBsZXQgbm9uZSA9IChPYmoubWFnaWMgTm9uZSA6IHQpICgqIGFuIGFyYml0cmFyeSBpbW1lZGlhdGUgKilcblxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG5cbiAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSAoT2JqLm1hZ2ljIDogdCAtPiBUeXBlcy5FdmVudC50KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJXNleHAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuT3B0aW9uLnZhbHVlX2V4biBOb25lXVwiXVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gU29tZSBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBzb21lIGV2ZW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQudCA9XG4gICAgICB7ICgqIFthbGFybV0gaXMgbm9uLW51bGwgaWZmIHRoZSBldmVudCBpcyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbaW50ZXJ2YWxdIGlzIHRoZSBwZXJpb2QgZm9yIHRoZSBwZXJpb2RpYyBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgIDsgKCogW25leHRfZmlyZWRdIGFuZCBbcHJldl9maXJlZF0gY3JlYXRlIGEgZG91Ymx5LWxpbmtlZCAobm9uLWNpcmN1bGFyKSBsaXN0IG9mXG4gICAgICAgICAgIGZpcmVkIGV2ZW50cywgbGlua2VkIHZpYSB0aGVzZSBmaWVsZHMuIEFuIGV2ZW50IGlzIGFkZGVkIHRvIHRoZSBsaXN0IHdoZW5cbiAgICAgICAgICAgaXQgZmlyZXMsIGVpdGhlciBiZWNhdXNlIGl0IGlzIGFkZGVkIHdpdGggYSB0aW1lIGluIHRoZSBwYXN0LCBvclxuICAgICAgICAgICBiZWNhdXNlIHRpbWUgYWR2YW5jZXMuIFthZHZhbmNlX2J5X2FsYXJtc10gaXRlcmF0ZXMgb3ZlciB0aGUgZXZlbnRzXG4gICAgICAgICAgIGluIFtuZXh0X2ZpcmVkXSBhbmQgcnVucyB0aGVtLCBlbXB0eWluZyB0aGUgbGlzdC4gW25vbmVdIGlzIHVzZWQgdG9cbiAgICAgICAgICAgaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IFslc2V4cF9vZjogZXZlbnRdXG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgICBGaWVsZHMuaXRlclxuICAgICAgICAgIH5hbGFybTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgICAgICAoQWxhcm0uaXNfbnVsbCBhbGFybSlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZpcmVkIHwgSGFwcGVuaW5nIHwgVW5zY2hlZHVsZWQgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB8IFNjaGVkdWxlZCAtPiBmYWxzZSkpKVxuICAgICAgICAgIH5hdDppZ25vcmVcbiAgICAgICAgICB+Y2FsbGJhY2s6aWdub3JlXG4gICAgICAgICAgfmV4ZWN1dGlvbl9jb250ZXh0Omlnbm9yZVxuICAgICAgICAgIH5pbnRlcnZhbDppZ25vcmVcbiAgICAgICAgICB+bmV4dF9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChuZXh0X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbbmV4dF9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGVuZCBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIG5leHRfZmlyZWQucHJldl9maXJlZCkpKVxuICAgICAgICAgIH5wcmV2X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKHByZXZfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtwcmV2X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgcHJldl9maXJlZC5uZXh0X2ZpcmVkKSkpXG4gICAgICAgICAgfnN0YXR1czppZ25vcmUpXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzIHQgdG9fID1cbiAgICAgIGxldCBmcm9tID0gdC5zdGF0dXMgaW5cbiAgICAgIGlmIG5vdCAoU3RhdHVzLnRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBbJWhlcmVdXG4gICAgICAgICAgICAgIFwiYnVnIC0tIHNldF9zdGF0dXMgdHJhbnNpdGlvbiBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICAgIChmcm9tIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgICh0b18gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgfmV2ZW50Oih0IDogdCldO1xuICAgICAgdC5zdGF0dXMgPC0gdG9fXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzX2lmIH5pcyB0IHRvXyA9IGlmIFN0YXR1cy5lcXVhbCBpcyB0LnN0YXR1cyB0aGVuIHNldF9zdGF0dXMgdCB0b19cbiAgICBsZXQgc2NoZWR1bGVkX2F0ID0gYXRcbiAgZW5kXG5cbiAgbW9kdWxlIEpvYl9vcl9ldmVudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSm9iX29yX2V2ZW50XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICBsZXQgKEsgaykgPSBraW5kIHQgaW5cbiAgICAgIG1hdGNoIGssIHByb2plY3QgayB0IHdpdGhcbiAgICAgIHwgRXZlbnQsIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBFdmVudC50KV1cbiAgICAgIHwgSm9iLCBfIC0+XG4gICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICBbJW1lc3NhZ2UgXCI8Sm9iLnQ+XCJdXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAtJ3J3IHQgPSAncncgVHlwZXMuVGltZV9zb3VyY2UudDEgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyAoKiBbYWR2YW5jZV9lcnJvcnNdIGFjY3VtdWxhdGVzIGVycm9ycyByYWlzZWQgYnkgYWxhcm1zIHJ1biBieVxuICAgICAgICAgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7ICgqIFthbV9hZHZhbmNpbmddIGlzIHRydWUgb25seSBkdXJpbmcgW2FkdmFuY2VfYnlfYWxhcm1zXSwgYW5kIGlzIHVzZWQgdG8gY2F1c2VcbiAgICAgICAgIGNhbGxiYWNrcyB0byByYWlzZSBpZiB0aGV5IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7ICgqIFtmaXJlZF9ldmVudHNdIGlzIHRoZSBmcm9udCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cyxcbiAgICAgICAgIHdoaWNoIGlzIHN0b3JlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtFdmVudC5hdF0uICopXG4gICAgICBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBbbW9zdF9yZWNlbnRseV9maXJlZF0gaXMgdGhlIGV2ZW50IHRoYXQgd2FzIG1vc3QgcmVjZW50bHkgaW5zZXJ0ZWQgaW50b1xuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uIEl0IGlzIHVzZWQgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGFsbG93IGluc2VydGlvbiBvZlxuICAgICAgICAgc3Vic2VxdWVudCBldmVudHMgdG8gc3RhcnQgbGF0ZXIgaW4gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy5cbiAgICAgICAgIEl0IHNwZWNpZmljYWxseSBhdm9pZHMgcXVhZHJhdGljIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGV2ZW50c1xuICAgICAgICAgdGhhdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGltZSAtLSB0aGUgdGltZSBzb3VyY2UgZmlyZXMgc3VjaCBldmVudHMgaW5cbiAgICAgICAgIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgaW4gdGhhdCBzYW1lIG9yZGVyIGluXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gKilcbiAgICAgIG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBXZSBzdG9yZSBbaGFuZGxlX2ZpcmVkXSBpbiBbdF0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBldmVyeSB0aW1lIHdlIGNhbGxcbiAgICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlcjAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGxldCBub3cgPSBUaW1pbmdfd2hlZWwubm93IGV2ZW50cyBpblxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIndhbGxfY2xvY2tcIiAobm93IDogVGltZV9ucy50KV1cbiAgICBlbHNlIChcbiAgICAgIGxldCBhbGxfZXZlbnRzID0gcmVmIFtdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICBhbGxfZXZlbnRzIDo9IChBbGFybS5hdCBldmVudHMgYWxhcm0sIEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkgOjogIWFsbF9ldmVudHMpO1xuICAgICAgbGV0IGV2ZW50cyA9XG4gICAgICAgIExpc3Quc29ydCAhYWxsX2V2ZW50cyB+Y29tcGFyZTooZnVuIChhdDEsIF8pIChhdDIsIF8pIC0+IFRpbWVfbnMuY29tcGFyZSBhdDEgYXQyKVxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgIGluXG4gICAgICBbJW1lc3NhZ2UgXCJcIiAobm93IDogVGltZV9ucy50KSAoZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgbGlzdCldKVxuICA7O1xuXG4gIGxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5cbiAgbGV0IGlzX2luX2ZpcmVkX2V2ZW50cyA9XG4gICAgbGV0IHJlYyBzZWFyY2ggY3VycmVudCB+dGFyZ2V0X2V2ZW50ID1cbiAgICAgIG1hdGNoJW9wdGlvbmFsIChjdXJyZW50IDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50IHRhcmdldF9ldmVudCB8fCBzZWFyY2ggY3VycmVudC5uZXh0X2ZpcmVkIH50YXJnZXRfZXZlbnRcbiAgICBpblxuICAgIGZ1biB0IHRhcmdldF9ldmVudCAtPiBzZWFyY2ggdC5maXJlZF9ldmVudHMgfnRhcmdldF9ldmVudFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzICh0eXBlIHJ3KSB+am9iOihqb2JfaW52YXJpYW50IDogSm9iLnQgLT4gdW5pdCkgKHQgOiBydyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmlkOmlnbm9yZVxuICAgICAgICB+YWR2YW5jZV9lcnJvcnM6aWdub3JlXG4gICAgICAgIH5hbV9hZHZhbmNpbmc6aWdub3JlXG4gICAgICAgIH5ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZXZlbnRzIC0+XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLmludmFyaWFudCBpZ25vcmUgZXZlbnRzO1xuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtIGluXG4gICAgICAgICAgICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgICAgICAgICAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICAgICAgICAgICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgSm9iLCBqb2IgLT4gam9iX2ludmFyaWFudCBqb2JcbiAgICAgICAgICAgICAgIHwgRXZlbnQsIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBhbGFybSBldmVudC5hbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gZXZlbnQuYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIGFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogRXZlbnQuU3RhdHVzLnRdIGV2ZW50LnN0YXR1cyB+ZXhwZWN0OlNjaGVkdWxlZDtcbiAgICAgICAgICAgICAgICAgRXZlbnQuaW52YXJpYW50IGV2ZW50KSkpXG4gICAgICAgIH5maXJlZF9ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSAtPlxuICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfZXZlbnQgKGN1cnJlbnQgOiBFdmVudC50KSA9XG4gICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdCkpO1xuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGN1cnJlbnQubmV4dF9maXJlZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCBuZXh0LmF0KTtcbiAgICAgICAgICAgICAgICAgY2hlY2tfZXZlbnQgbmV4dFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGZpcmVkX2V2ZW50cyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGNoZWNrX2V2ZW50IGV2ZW50KSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmlzX3dhbGxfY2xvY2s6aWdub3JlXG4gICAgICAgIH5tb3N0X3JlY2VudGx5X2ZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGFzc2VydCAoaXNfaW5fZmlyZWRfZXZlbnRzIHQgZXZlbnQpKSlcbiAgICAgICAgfnNjaGVkdWxlcjppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID0gaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gXyAtPiAoKSkgdFxuZW5kXG5cbm9wZW4gVDFcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbmxldCBpZCB0ID0gdC5pZFxubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IGxlbmd0aCB0ID0gVGltaW5nX3doZWVsLmxlbmd0aCB0LmV2ZW50c1xubGV0IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9IFRpbWluZ193aGVlbC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQuZXZlbnRzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcblxuKCogW2ZpcmUgdCBldmVudF0gc2V0cyBbZXZlbnQuc3RhdHVzID0gRmlyZWRdIGFuZCBpbnNlcnRzIFtldmVudF0gaW50b1xuICAgW3QuZmlyZWRfZXZlbnRzXSBpbiBzb3J0ZWQgdGltZSBvcmRlci4gKilcbmxldCBmaXJlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IEZpcmVkO1xuICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICBsZXQgKCkgPVxuICAgICgqIElmIFtldmVudF0gYmVsb25ncyBhZnRlciBbdC5tb3N0X3JlY2VudGx5X2ZpcmVkXSwgdGhlbiB3ZSBzdGFydCB0aGVcbiAgICAgICBpbnNlcnRpb24gdGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIGZyb250IG9mIFt0LmZpcmVkX2V2ZW50c10uIFRoaXMgd29ya3NcbiAgICAgICBuaWNlbHkgaWYgd2UncmUgZ2V0dGluZyB0aGUgYWxhcm1zIGluIG5vbi1kZWNyZWFzaW5nIHRpbWUgb3JkZXIsIHdoaWNoIGlzXG4gICAgICAgY2xvc2UgdG8gd2hhdCBbVGltaW5nX3doZWVsXSBwcm92aWRlcyAoYWx0aG91Z2ggW1RpbWluZ193aGVlbF0gZG9lc24ndFxuICAgICAgIGd1YXJhbnRlZSB0aW1lIG9yZGVyaW5nIGZvciB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbCkuICopXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgd2hlbiBUaW1lX25zLiggPD0gKSBtb3N0X3JlY2VudGx5X2ZpcmVkLmF0IGV2ZW50LmF0IC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIG1vc3RfcmVjZW50bHlfZmlyZWQ7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG1vc3RfcmVjZW50bHlfZmlyZWQubmV4dF9maXJlZFxuICAgIHwgXyAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gdC5maXJlZF9ldmVudHNcbiAgaW5cbiAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50O1xuICAoKiBXZSB1c2UgW1RpbWVfbnMuKCA8PSApXSByYXRoZXIgdGhhbiBbPF0gc28gdGhhdCBbZXZlbnRdIGlzIGFkZGVkIGFmdGVyIG90aGVyXG4gICAgIGV2ZW50cyBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSBbVGltaW5nX3doZWVsXSBmaXJlcyBhbGFybXMgaW4gYSBidWNrZXQgaW5cbiAgICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCwgdXNpbmcgWzw9XSBrZWVwcyBldmVudHMgYXQgdGhlIHNhbWVcbiAgICAgdGltZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLiAqKVxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID0gVGltZV9ucy4oIDw9ICkgbmV4dC5hdCBldmVudC5hdCBpblxuICAgICAgaWYgY29udGludWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWQ7XG4gICAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbmV4dC5uZXh0X2ZpcmVkKTtcbiAgICAgIGNvbnRpbnVlXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIGluXG4gIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuOztcblxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5cbmxldCBuZXh0X2FsYXJtX3J1bnNfYXQgdCA9XG4gIGlmIEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4gIHRoZW4gU29tZSAodGltaW5nX3doZWVsX25vdyB0KVxuICBlbHNlIFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG47O1xuXG5sZXQgbm93IHQgPSBpZiB0LmlzX3dhbGxfY2xvY2sgdGhlbiBUaW1lX25zLm5vdyAoKSBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxubGV0IHRpbWluZ193aGVlbF9ub3cgPSB0aW1pbmdfd2hlZWxfbm93XG5cbmxldCBzY2hlZHVsZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBTY2hlZHVsZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIFRpbWluZ193aGVlbC5hZGQgdC5ldmVudHMgfmF0OmV2ZW50LmF0IChldmVudCB8PiBKb2Jfb3JfZXZlbnQub2ZfZXZlbnQpXG47O1xuXG5sZXQgcmVtb3ZlX2Zyb21fZmlyZWQgdCAoZXZlbnQgOiBFdmVudC50KSB+bmV3X3N0YXR1cyA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgZXZlbnQgbW9zdF9yZWNlbnRseV9maXJlZFxuICAgICAgdGhlblxuICAgICAgICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLmZpcnN0X3NvbWUgZXZlbnQubmV4dF9maXJlZCBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBldmVudC5uZXh0X2ZpcmVkXG4gICAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgZXZlbnQubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBuZXdfc3RhdHVzXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFdmVudFxuXG4gIGxldCBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICA7IGF0XG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gICAgOyBpbnRlcnZhbFxuICAgIDsgbmV4dF9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBwcmV2X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHN0YXR1cyA9IFVuc2NoZWR1bGVkXG4gICAgfVxuICA7O1xuXG4gIGxldCBhZGQgdCBldmVudCA9XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgZXZlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICB0aGVuIGZpcmUgdCBldmVudFxuICAgIGVsc2Ugc2NoZWR1bGUgdCBldmVudFxuICA7O1xuXG4gIGxldCBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICBsZXQgZXZlbnQgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayBpblxuICAgIGFkZCB0IGV2ZW50O1xuICAgIGV2ZW50XG4gIDs7XG5cbiAgbGV0IGF0IHQgYXQgY2FsbGJhY2sgPSBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID1cbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDooVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuICA7O1xuXG4gIGxldCByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbiA9XG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IGFsYXJtX3ByZWNpc2lvbiB0IGluXG4gICAgaWYgVGltZV9ucy5TcGFuLiggPCApIHNwYW4gYWxhcm1fcHJlY2lzaW9uXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludGVydmFsIHNwYW4gc21hbGxlciB0aGFuIGFsYXJtIHByZWNpc2lvblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KVxuICAgICAgICAgICAgKGFsYXJtX3ByZWNpc2lvbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgOztcblxuICBsZXQgYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbikgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IEN1cnJlbnRseV9oYXBwZW5pbmdcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmcgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IEN1cnJlbnRseV9oYXBwZW5pbmdcbiAgICAgICB8IFNvbWUgKF8gOiBUaW1lX25zLlNwYW4udCkgLT5cbiAgICAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICAgICBPaylcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgT2tcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBVbnNjaGVkdWxlZDtcbiAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICAgICAgT2tcbiAgICB8IFVuc2NoZWR1bGVkIC0+IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBldmVudCA9IGlnbm9yZSAoYWJvcnQgdCBldmVudCA6IEFib3J0X3Jlc3VsdC50KVxuXG4gIGxldCBhYm9ydF9leG4gdCBldmVudCA9XG4gICAgbWF0Y2ggYWJvcnQgdCBldmVudCB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgcmVhc29uIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLmFib3J0X2V4bl0gY2Fubm90IGFib3J0IGV2ZW50XCJcbiAgICAgICAgICAgIChyZWFzb24gOiBBYm9ydF9yZXN1bHQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0IGNhbGxiYWNrID0gY3JlYXRlX2ludGVybmFsIHQgfmF0OlRpbWVfbnMuZXBvY2ggfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgKGV2ZW50IDogdCkgYXQgfmludGVydmFsID1cbiAgICAoKiBbRmlyZWRdIGlzIGRpc2FsbG93ZWQgdG8gcHJldmVudCB0aGUgdXNlciBmcm9tIGVudGVyaW5nIGludG8gYW4gaW5maW5pdGUgbG9vcC4gIFRoZVxuICAgICAgIHVzZXIgY291bGQgc3BlY2lmeSBbYXRdIGluIHRoZSBwYXN0IHdoaWNoIHdvdWxkIGNvbnN0YW50bHkgYWRkIFtjYWxsYmFja10gdG8gdGhlXG4gICAgICAgYmFjayBvZiBbdC5uZXh0X2ZpcmVkXSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIFtjYWxsYmFja10uICopXG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IChIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBGaXJlZCkgYXMgc3RhdHVzIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslc2V4cCBcImNhbm5vdCBzY2hlZHVsZSBhbiBldmVudCB3aXRoIHN0YXR1c1wiLCAoc3RhdHVzIDogRXZlbnQuU3RhdHVzLnQpXVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gaW50ZXJ2YWw7XG4gICAgICBhZGQgdCBldmVudDtcbiAgICAgIE9rICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgPSBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IGF0IH5pbnRlcnZhbDpOb25lXG4gIGxldCBzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSBzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJ2YWxzIHQgZXZlbnQgc3BhbiA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCAobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKVxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgOiB1bml0ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBIYXBwZW5pbmcgLT5cbiAgICAgICgqIEhhcHBlbmluZyBldmVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIFtmaXJlZF0uICopXG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgaWYgVGltZV9ucy4oID4gKSBhdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgdGhlbiBUaW1pbmdfd2hlZWwucmVzY2hlZHVsZSB0LmV2ZW50cyBldmVudC5hbGFybSB+YXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgICBmaXJlIHQgZXZlbnQpXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgYWRkIHQgZXZlbnRcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSByZXNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG5lbmRcblxubGV0IHJ1bl9hZnRlciB0IHNwYW4gY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmFmdGVyIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG5sZXQgcnVuX2F0IHQgYXQgY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmF0IHQgYXQgY2FsbGJhY2sgOiBFdmVudC50KVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICBpZ25vcmUgKEV2ZW50LmF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxuOztcblxudHlwZSBzZW5kX2V4biA9IE1vbml0b3IwLnQgLT4gP2JhY2t0cmFjZTpbIGBHZXQgfCBgVGhpcyBvZiBCYWNrdHJhY2UudCBdIC0+IGV4biAtPiB1bml0XG5cbmxldCBydW5fZmlyZWRfZXZlbnRzIHQgfihzZW5kX2V4biA6IHNlbmRfZXhuIG9wdGlvbikgPVxuICBsZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAodC5maXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgKG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgICAgfCBIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IEZpcmVkIC0+XG4gICAgICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOkhhcHBlbmluZztcbiAgICAgICAgICgqIFdlIHNldCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBbZXZlbnQuY2FsbGJhY2tdIHJ1bnMgaW4gdGhlIHNhbWUgY29udGV4dFxuICAgICAgICAgICAgdGhhdCB3YXMgaW4gcGxhY2Ugd2hlbiBbZXZlbnRdIHdhcyBjcmVhdGVkLiAqKVxuICAgICAgICAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICAgICAoKiBBbnkgbW9kaWZpY2F0aW9uIG9mIFtzdGF0dXNdIGJlbG93IG5lZWRzIHRvIGZpcnN0IGNoZWNrIHRoYXQgdGhlIGV2ZW50IGlzXG4gICAgICAgICAgICBzdGlsbCBbSGFwcGVuaW5nXS4gSWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBub3QgW0hhcHBlbmluZ10gdGhlbiB0aGUgZXZlbnQnc1xuICAgICAgICAgICAgY2FsbGJhY2sgbXVzdCBoYXZlIHJlc2NoZWR1bGVkIHRoZSBldmVudC4gSW4gdGhhdCBjYXNlLCBkbyBub3Qgc2V0IHRoZSBzdGF0dXNcbiAgICAgICAgICAgIG9yIGF0dGVtcHQgdG8gcmVzY2hlZHVsZSBhIHJlcGVhdGluZyBldmVudC5cblxuICAgICAgICAgICAgVGhpcyBjb2RlIGNvdWxkIGJlIG11Y2ggc2ltcGxlciBpZiB3ZSBpbW1lZGlhdGVseSByZXNjaGVkdWxlZCB0aGUgZXZlbnQgYmVmb3JlXG4gICAgICAgICAgICBydW5uaW5nIHRoZSBjYWxsYmFjayAobm8gbmVlZCBmb3IgdGhlIEhhcHBlbmluZyBzdGF0ZSB0aGVuKS4gT25lIHJlYXNvbiB3ZVxuICAgICAgICAgICAgZG9uJ3QgZG8gdGhhdCBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYXV0b21hdGljYWxseSByZXNjaGVkdWxlIGEgcGVyaW9kaWNcbiAgICAgICAgICAgIGV2ZW50IGlmIGl0cyBjYWxsYmFjayByYWlzZXMuICopXG4gICAgICAgICAobWF0Y2ggZXZlbnQuY2FsbGJhY2sgKCkgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgKG1hdGNoIHNlbmRfZXhuIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBFcnJvci5vZl9leG4gZXhuIDo6IHQuYWR2YW5jZV9lcnJvcnNcbiAgICAgICAgICAgICB8IFNvbWUgc2VuZF9leG4gLT5cbiAgICAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICAgICBzZW5kX2V4biBldmVudC5leGVjdXRpb25fY29udGV4dC5tb25pdG9yIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpKTtcbiAgICAgICAgICAgIEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZyBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgIHwgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZyBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgIHwgU29tZSBpbnRlcnZhbCAtPlxuICAgICAgICAgICAgICAgaWYgRXZlbnQuU3RhdHVzLmVxdWFsIEhhcHBlbmluZyBldmVudC5zdGF0dXNcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAoKiBUaGUgZXZlbnQncyBjYWxsYmFjayBkaWQgbm90IHJlc2NoZWR1bGUgdGhlIGV2ZW50LiBTbyByZXNjaGVkdWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICByZXBlYXRpbmcgdGltZXIgYmFzZWQgb24gdGhlIGxhc3QgW2F0XSB0aW1lLiAqKVxuICAgICAgICAgICAgICAgICBldmVudC5hdFxuICAgICAgICAgICAgICAgICA8LSBUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIH5iYXNlOmV2ZW50LmF0XG4gICAgICAgICAgICAgICAgICAgICAgfmFmdGVyOih0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICAgICAgICAgICAgICAgICAgfmludGVydmFsO1xuICAgICAgICAgICAgICAgICBzY2hlZHVsZSB0IGV2ZW50KSkpO1xuICAgICAgICAgdHJ1ZSlcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgdC5ldmVudHMgfnRvXyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIHQuZXZlbnRzIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG4gPVxuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG4gPVxuICBpZiB0LmFtX2FkdmFuY2luZ1xuICB0aGVuXG4gICAgcmFpc2VfcyBbJXNleHAgXCJjYW5ub3QgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdIG9yIFthZHZhbmNlX2RpcmVjdGx5XSBmcm9tIGNhbGxiYWNrXCJdO1xuICB0LmFtX2FkdmFuY2luZyA8LSB0cnVlO1xuICAobWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gICB8IFtdIC0+ICgpXG4gICB8IF8gLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBbXSk7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaW5pc2hfYWR2YW5jaW5nIHQgPVxuICB0LmFtX2FkdmFuY2luZyA8LSBmYWxzZTtcbiAgbWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gT2sgKClcbiAgfCBlcnJvcnMgLT5cbiAgICB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdO1xuICAgIEVycm9yIChFcnJvci5vZl9saXN0IGVycm9ycylcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lIHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b186bWluX2FsYXJtX3RpbWUgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKVxuICAgICAgICAgIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgbGlzdFxuICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSBsaXN0XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudFxuICAoKiBbZXh0ZXJuYWxfam9ic10gaXMgYSBxdWV1ZSBvZiBhY3Rpb25zIHNlbnQgZnJvbSBvdXRzaWRlIG9mIGFzeW5jLiAgVGhpcyBpcyBmb3IgdGhlXG4gICAgIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzY2hlZHVsZSBhIGpvYiBvciBmaWxsIGFuIGl2YXIgZnJvbSBhIGNvbnRleHQgd2hlcmUgaXQgaXMgbm90XG4gICAgIHNhZmUgdG8gcnVuIGFzeW5jIGNvZGUsIGJlY2F1c2UgdGhlIGFzeW5jIGxvY2sgaXNuJ3QgaGVsZC4gIEZvciBpbnN0YW5jZTogLSBpbiBhblxuICAgICBPQ2FtbCBmaW5hbGl6ZXIsIGFzIHRoZXkgY2FuIHJ1biBhdCBhbnkgdGltZSBpbiBhbnkgdGhyZWFkLlxuXG4gICAgIFRoZSB3YXkgdG8gZG8gaXQgaXMgdG8gcXVldWUgYSB0aHVuayBpbiBbZXh0ZXJuYWxfam9ic10gYW5kIGNhbGxcbiAgICAgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyB0aGUgc2NoZWR1bGVyXG4gICAgIHRoYXQgbmV3IGFjdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuICAgICBXaGVuIHVzaW5nIEFzeW5jIG9uIHVuaXgsIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gaXMgc2V0IGluIFtBc3luY191bml4XVxuICAgICB0byBjYWxsIFtJbnRlcnJ1cHRvci50aHJlYWRfc2FmZV9pbnRlcnJ1cHRdLCB3aGljaCB3aWxsIHdha2UgdXAgdGhlXG4gICAgIFtBc3luY191bml4XSBzY2hlZHVsZXIgYW5kIHJ1biBhIGN5Y2xlLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgbWlnaHQgYmUgdXNlZCBpbiBvdGhlciBjb250ZXh0IChqc19vZl9vY2FtbCwgbWlyYWdlKS5cblxuICAgICBXaGVuIHJ1bm5pbmcgYSBjeWNsZSwgd2UgcHVsbCBleHRlcm5hbCBhY3Rpb25zIGF0IGV2ZXJ5IGpvYiBhbmQgcGVyZm9ybSB0aGVtXG4gICAgIGltbWVkaWF0ZWx5LiAqKVxuICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAoKiBbam9iX3F1ZXVlZF9ob29rXSBhbmQgW2V2ZW50X2FkZGVkX2hvb2tdIGFpbSB0byBiZSB1c2VkIGJ5IGpzX29mX29jYW1sLiAqKVxuICAoKiBXZSB1c2UgW18gb3B0aW9uXSBoZXJlIGJlY2F1c2UgdGhvc2UgaG9va3Mgd2lsbCBub3QgYmUgc2V0IGluIHRoZSBjb21tb24gY2FzZVxuICAgICBhbmQgd2Ugd2FudCB0byBhdm9pZCBleHRyYSBmdW5jdGlvbiBjYWxscy4gKilcbiAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSB5aWVsZCA6ICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6XG4gICAgICAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdICgqIGNvbmZpZ3VyYXRpb24qKSlcbiAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG5fdW53cmFwcGVkID0gdW5jYXVnaHRfZXhuXG5cbmxldCB1bmNhdWdodF9leG4gdCA9XG4gIG1hdGNoIHQudW5jYXVnaHRfZXhuIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChleG4sIHNleHApIC0+XG4gICAgU29tZSAoRXJyb3IuY3JlYXRlIFwidW5oYW5kbGVkIGV4Y2VwdGlvblwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdKVxuOztcblxubGV0IG51bV9wZW5kaW5nX2pvYnMgdCA9XG4gIEpvYl9xdWV1ZS5sZW5ndGggdC5ub3JtYWxfcHJpb3JpdHlfam9icyArIEpvYl9xdWV1ZS5sZW5ndGggdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IG51bV9qb2JzX3J1biB0ID1cbiAgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICsgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbGFzdF9jeWNsZV9udW1fam9icyB0ID0gdC5sYXN0X2N5Y2xlX251bV9qb2JzXG5cbmxldCB1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWwgfnN1Ymxpc3Q6c21hbGwgbGFyZ2UgPVxuICBsZXQgcmVtb3ZlIGwgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBsIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgbGlzdCA9XG4gICgqIFlvdSBjYW4gaW4gZmFjdCBoYXZlIGhvb2tzIGluIHRoZSBsaXN0IGZvciB3aGljaCB0aGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGVudHJ5IGluXG4gICAgIHRoZSB0YWJsZS4gU3VjaCBob29rcyBjYW4gbmV2ZXIgYmUgcmVtb3ZlZC4gKilcbiAgYXNzZXJ0ICh1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWw6cGh5c19lcXVhbCB+c3VibGlzdDooSGFzaHRibC5kYXRhIHRhYmxlKSBsaXN0KVxuOztcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jaGVja19hY2Nlc3M6aWdub3JlXG4gICAgICB+am9iX3Bvb2w6KGNoZWNrIEpvYl9wb29sLmludmFyaWFudClcbiAgICAgIH5ub3JtYWxfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH5sb3dfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBxIC0+IERlcXVlLml0ZXIgcSB+ZjpWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuaW52YXJpYW50KSlcbiAgICAgIH5tYWluX2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+Y3VycmVudF9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfnVuY2F1Z2h0X2V4bjpcbiAgICAgICAgKGNoZWNrIChmdW4gdW5jYXVnaHRfZXhuIC0+XG4gICAgICAgICAgIGlmIGlzX3NvbWUgdW5jYXVnaHRfZXhuIHRoZW4gYXNzZXJ0IChudW1fcGVuZGluZ19qb2JzIHQgPSAwKSkpXG4gICAgICB+Y3ljbGVfY291bnQ6KGNoZWNrIChmdW4gY3ljbGVfY291bnQgLT4gYXNzZXJ0IChjeWNsZV9jb3VudCA+PSAwKSkpXG4gICAgICB+Y3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+aW5fY3ljbGU6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50XG4gICAgICAgICAgICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXG4gICAgICAgICAgICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQpKVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCkpXG4gICAgICB+bGFzdF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfnRvdGFsX2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+bGFzdF9jeWNsZV9udW1fam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbGFzdF9jeWNsZV9udW1fam9icyAtPiBhc3NlcnQgKGxhc3RfY3ljbGVfbnVtX2pvYnMgPj0gMCkpKVxuICAgICAgfnRpbWVfc291cmNlOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlJlYWRfd3JpdGUuaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gam9iIC0+XG4gICAgICAgICAgICAgIGFzc2VydCAoUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQuam9iX3Bvb2wgam9iKSkpKVxuICAgICAgfmV4dGVybmFsX2pvYnM6aWdub3JlXG4gICAgICB+dGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2s6aWdub3JlXG4gICAgICB+am9iX3F1ZXVlZF9ob29rOmlnbm9yZVxuICAgICAgfmV2ZW50X2FkZGVkX2hvb2s6aWdub3JlXG4gICAgICB+eWllbGQ6aWdub3JlXG4gICAgICB+eWllbGRfdW50aWxfbm9fam9ic19yZW1haW46aWdub3JlXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czppZ25vcmVcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTppZ25vcmVcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczppZ25vcmVcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiB0KV1cbjs7XG5cbmxldCBmcmVlX2pvYiB0IGpvYiA9IFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuXG5sZXQgZW5xdWV1ZSB0IChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpIGYgYSA9XG4gICgqIElmIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4sIHdlIGRvbid0IGFkZCB0aGUgam9iLCBzaW5jZSB3ZSBkb24ndCB3YW50IGFueSBqb2JzXG4gICAgIHRvIHJ1biBvbmNlIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4uICopXG4gIGlmIGlzX25vbmUgdC51bmNhdWdodF9leG5cbiAgdGhlbiAoXG4gICAgbGV0IHByaW9yaXR5ID0gZXhlY3V0aW9uX2NvbnRleHQucHJpb3JpdHkgaW5cbiAgICBsZXQgam9iX3F1ZXVlID1cbiAgICAgIG1hdGNoIHByaW9yaXR5IHdpdGhcbiAgICAgIHwgTm9ybWFsIC0+IHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgIHwgTG93IC0+IHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICBpblxuICAgIEpvYl9xdWV1ZS5lbnF1ZXVlIGpvYl9xdWV1ZSBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgbWF0Y2ggdC5qb2JfcXVldWVkX2hvb2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+IGYgcHJpb3JpdHkpXG47O1xuXG5sZXQgZW5xdWV1ZV9qb2IgdCBqb2IgfmZyZWVfam9iID1cbiAgbGV0IGpvYl9wb29sID0gdC5qb2JfcG9vbCBpblxuICBlbnF1ZXVlXG4gICAgdFxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQwKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQxKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQyKTtcbiAgaWYgZnJlZV9qb2IgdGhlbiBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZmlyZWQgKHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50KSBqb2Jfb3JfZXZlbnQgPVxuICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gIHwgSm9iLCBqb2IgLT4gZW5xdWV1ZV9qb2IgdGltZV9zb3VyY2Uuc2NoZWR1bGVyIGpvYiB+ZnJlZV9qb2I6dHJ1ZVxuICB8IEV2ZW50LCBldmVudCAtPiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5maXJlIHRpbWVfc291cmNlIGV2ZW50XG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIGxldCByZWMgdCA9XG4gICAgeyBjaGVja19hY2Nlc3MgPSBOb25lXG4gICAgOyBqb2JfcG9vbCA9IEpvYl9wb29sLmNyZWF0ZSAoKVxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgPSBEZXF1ZS5jcmVhdGUgKClcbiAgICA7IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgdW5jYXVnaHRfZXhuID0gTm9uZVxuICAgIDsgY3ljbGVfc3RhcnQgPSBub3dcbiAgICA7IGN5Y2xlX2NvdW50ID0gMFxuICAgIDsgaW5fY3ljbGUgPSBmYWxzZVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ID0gW11cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW11cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgbGFzdF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyBsYXN0X2N5Y2xlX251bV9qb2JzID0gMFxuICAgIDsgdG90YWxfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGV4dGVybmFsX2pvYnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rID0gaWdub3JlXG4gICAgOyBqb2JfcXVldWVkX2hvb2sgPSBOb25lXG4gICAgOyBldmVudF9hZGRlZF9ob29rID0gTm9uZVxuICAgIDsgeWllbGQgPSBCdmFyLmNyZWF0ZSAoKVxuICAgIDsgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPSBCdmFyLmNyZWF0ZSAoKSAoKiBjb25maWd1cmF0aW9uICopXG4gICAgOyBjaGVja19pbnZhcmlhbnRzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5jaGVja19pbnZhcmlhbnRzXG4gICAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9jb25maWcubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICA7IHJlY29yZF9iYWNrdHJhY2VzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5yZWNvcmRfYmFja3RyYWNlc1xuICAgIH1cbiAgYW5kIGV2ZW50cyA9XG4gICAgVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOkFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93XG4gIGFuZCB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IHRydWVcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IGlzX2RlYWQgdCA9IGlzX3NvbWUgdC51bmNhdWdodF9leG5cbmxldCBzZXRfY2hlY2tfYWNjZXNzIHQgZiA9IHQuY2hlY2tfYWNjZXNzIDwtIGZcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiA/aG93OmhvdyAtPiBpbnQgLT4gZjooaW50IC0+ICdhIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBpdGVyIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBpdGVyaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIG1hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG5lbmRcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbmluY2x1ZGUgRGVmZXJyZWQwXG5cbigqIFRvIGF2b2lkIGEgc3BhY2UgbGVhaywgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgW25ldmVyXSBhbGxvY2F0ZXMgYSBuZXcgaXZhciB3aGVuZXZlciBpdCBpc1xuICAgY2FsbGVkLiAgQ29kZSBjYW4gYmluZCBvbiBbbmV2ZXIgKCldLCBzbyBpZiB3ZSByZS11c2VkIHRoZSBpdmFyLCB3ZSBjb3VsZCBlbmRsZXNzbHlcbiAgIGFjY3VtdWxhdGUgaGFuZGxlcnMuICopXG5sZXQgbmV2ZXIgKCkgPSBJdmFyLnJlYWQgKEl2YXIuY3JlYXRlICgpKVxuXG5tb2R1bGUgTSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmZXJyZWQwXG5cbiAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgKCogV2UgbWFudWFsbHkgaW5saW5lIFtEZWZlcnJlZC5jcmVhdGVdIGhlcmUsIGJlY2F1c2UgdGhlIG5vbi1mbGFtYmRhIGNvbXBpbGVyIGlzbid0XG4gICAgICAgICBhYmxlIHRvIG9wdGltaXplIGF3YXkgdGhlIGNsb3N1cmUgdGhhdCB3b3VsZCBiZSBiZSBjcmVhdGVkLiAqKVxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuZmlsbCByZXN1bHQgKGYgYSkpO1xuICAgICAgb2ZfaXZhciByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxuaW5jbHVkZSBNXG5cbigqIFdlIHJlYmluZCBhbGwgdGhlIHZhcmlvdXMgW3JldHVybl1zIGJlY2F1c2UgdGhlIHVzZSBvZiB0aGUgW01vbmFkLk1ha2VdIGZ1bmN0b3JcbiAgIGNhdXNlcyB0aGUgY29tcGlsZXIgdG8gbm90IGlubGluZSBbcmV0dXJuXSwgYW5kIGhlbmNlIG1ha2VzIGl0IGltcG9zc2libGUgdG9cbiAgIHN0YXRpY2FsbHkgYWxsb2NhdGUgY29uc3RhbnRzIGxpa2UgW3JldHVybiAoKV0uICBCeSByZWJpbmRpbmcgW3JldHVybl0gYXNcbiAgIFtEZWZlcnJlZDAucmV0dXJuXSwgdGhlIGNvbXBpbGVyIGNhbiBzZWUgdGhhdDpcblxuICAge1tcbiAgICAgcmV0dXJuIGEgPSB7IEl2YXIuSW1tdXRhYmxlLiBjZWxsID0gRnVsbCBhIH0gXX1cblxuICAgQW5kIGhlbmNlLCBpZiBbYV0gaXMgY29uc3RhbnQsIHRoZW4gdGhlIHJldHVybiBpcyBjb25zdGFudCBhbmQgY2FuIGJlIHN0YXRpY2FsbHlcbiAgIGFsbG9jYXRlZC4gIFdoZW4gY29tcGlsaW5nIHdpdGggZmxhbWJkYSwgdGhlIGNvbXBpbGVyIGlubGluZXMgW3JldHVybl0gYW5kIHRoaXMgbWFudWFsXG4gICByZWJpbmRpbmcgd291bGQgbm90IGhlbHA7IHdlJ3ZlIGRlY2lkZWQgdG8gZG8gaXQgYW55d2F5IHNvIHRoYXQgbm9uLWZsYW1iZGEgYnVpbGRzXG4gICBnZXQgdGhlIG9wdGltaXphdGlvbi4gKilcbmxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgTS5MZXRfc3ludGF4XG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTS5MZXRfc3ludGF4LkxldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG4oKiBXZSBzaGFkb3cgW2FsbF0gb24tcHVycG9zZSBoZXJlLCBzaW5jZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uIGludHJvZHVjZXMgYSBjaGFpbiBvZlxuICAgYmluZHMgYXMgbG9uZyBhcyB0aGUgbGlzdC4gKilcbmxldCBhbGwgPSBgTWFrZV9zdXJlX3RvX2RlZmluZV9hbGxfZWxzZXdoZXJlXG5sZXQgXyA9IGFsbFxubGV0IHVuaXQgPSByZXR1cm4gKClcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuICBsZXQgcHB4X2JvdGggPSBib3RoXG5lbmRcblxub3BlbiBJbmZpeFxuXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgKF8gOiB1bml0IHQpID0gKClcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID0gVCA6ICdiIERlZmVycmVkMC50ICogKCdiIC0+ICdhKSAtPiAnYSB0XG5cbiAgbGV0IG1hcCAoVCAodCwgZjEpKSB+ZjpmMiA9IFQgKHQsIGZ1biB4IC0+IGYyIChmMSB4KSlcbmVuZFxuXG5tb2R1bGUgVW5yZWdpc3RlciA9IHN0cnVjdFxuICAoKiBUaGlzIHJlcHJlc2VudGF0aW9uIHNhdmVzIDJuIHdvcmRzIGZvciBhIGxpc3Qgb2YgbiBjaG9pY2VzLiAqKVxuICB0eXBlIHQgPVxuICAgIHwgTmlsIDogdFxuICAgIHwgQ29ucyA6ICdhIERlZmVycmVkMC50ICogJ2EgRGVmZXJyZWQwLkhhbmRsZXIudCAqIHQgLT4gdFxuXG4gIGxldCByZWMgcHJvY2VzcyA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHQsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIF8pKSAtPlxuICAgIENvbnMgKHQsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDaG9pY2UuVCAodCwgZikgOjogY2hvaWNlcyAtPlxuICAgIChtYXRjaCBwZWVrIHQgd2l0aFxuICAgICB8IE5vbmUgLT4gY2hvb3NlX3Jlc3VsdCBjaG9pY2VzXG4gICAgIHwgU29tZSB2IC0+IGYgdilcbjs7XG5cbmxldCBjaG9vc2UgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoY2hvb3NlX3Jlc3VsdCBjaG9pY2VzKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBfKSkgLT5cbiAgICBDb25zICh0LCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCBhbnlfZiB0cyBmID0gY2hvb3NlIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gY2hvaWNlIHQgZikpXG5sZXQgYW55IHRzID0gYW55X2YgdHMgRm4uaWRcbmxldCBhbnlfdW5pdCB0cyA9IGFueV9mIHRzIChGbi5pZ25vcmUgOiB1bml0IC0+IHVuaXQpXG5cbmxldCBmb3JfIHN0YXJ0IH50b18gfmRvXyA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID4gdG9fXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gZG9fIGkgaW5cbiAgICAgIGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBzdGFydFxuOztcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5sZXQgZm9yZXZlciBzdGF0ZSBmID1cbiAgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIChmdW4gc3RhdGUgLT5cbiAgICBsZXQlbWFwIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgIGBSZXBlYXQgc3RhdGUpXG4gID4+PiBuZXZlcl9yZXR1cm5zXG47O1xuXG50eXBlIGhvdyA9IE1vbmFkX3NlcXVlbmNlLmhvdyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlLlMgd2l0aCB0eXBlICdhIG1vbmFkIDo9ICdhIHRcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgYlxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgc2VxbWFwIHQgfmYgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBicyBhIC0+IGYgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgPj58IExpc3QucmV2XG5sZXQgYWxsIGRzID0gc2VxbWFwIGRzIH5mOkZuLmlkXG5sZXQgYWxsX3VuaXQgZHMgPSBmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKVxubGV0IG9rIHggPSB4ID4+fCBmdW4geCAtPiBPayB4XG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxuXG50eXBlICdhIHdpdGhfb3B0aW9uYWxfbW9uaXRvcl9uYW1lID1cbiAgP2hlcmU6U291cmNlX2NvZGVfcG9zaXRpb24udCAtPiA/aW5mbzpJbmZvLnQgLT4gP25hbWU6c3RyaW5nIC0+ICdhXG5cbmxldCBkZXRhY2ggdCA9IHQuZm9yd2FyZGluZyA8LSBEZXRhY2hlZFxuXG50eXBlIGhhbmRsZXJfc3RhdGUgPVxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBSdW5uaW5nIG9mIChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLkVsdC50XG4gIHwgVGVybWluYXRlZFxuXG5sZXQgZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyB0IH5mID1cbiAgZGV0YWNoIHQ7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IGhhbmRsZXJfc3RhdGVfcmVmID0gcmVmIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHJ1bl9mIGV4biA9XG4gICAgbWF0Y2ggIWhhbmRsZXJfc3RhdGVfcmVmIHdpdGhcbiAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBUZXJtaW5hdGVkIC0+ICgpXG4gICAgfCBSdW5uaW5nIGJhZ19lbHQgLT5cbiAgICAgICh0cnkgZiBleG4gd2l0aFxuICAgICAgIHwgaW5uZXJfZXhuIC0+XG4gICAgICAgICBoYW5kbGVyX3N0YXRlX3JlZiA6PSBUZXJtaW5hdGVkO1xuICAgICAgICAgQmFnLnJlbW92ZSB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIGJhZ19lbHQ7XG4gICAgICAgICAoKiBbcnVuX2ZdIGFsd2F5cyBydW5zIGluIFtleGVjdXRpb25fY29udGV4dF0uICBIZW5jZSwgW3JhaXNlIGlubmVyX2V4bl0gc2VuZHNcbiAgICAgICAgICAgIFtpbm5lcl9leG5dIHRvIFtleGVjdXRpb25fY29udGV4dF0ncyBtb25pdG9yLCBpLmUuIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICAgICAgICBbZGV0YWNoX2FuZF9pdGVyX2Vycm9yc10gd2FzIGNhbGxlZC4gKilcbiAgICAgICAgIHJhaXNlIGlubmVyX2V4bilcbiAgaW5cbiAgaGFuZGxlcl9zdGF0ZV9yZWZcbiAgOj0gUnVubmluZyAoQmFnLmFkZCB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIChleGVjdXRpb25fY29udGV4dCwgcnVuX2YpKVxuOztcblxubGV0IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSB0ID1cbiAgZGV0YWNoIHQ7XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgdC50YWlsc19mb3JfYWxsX2Vycm9ycyA8LSB0YWlsIDo6IHQudGFpbHNfZm9yX2FsbF9lcnJvcnM7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgZ2V0X25leHRfZXJyb3IgdCA9IEl2YXIucmVhZCB0Lm5leHRfZXJyb3JcblxubGV0IGRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IgdCA9XG4gIGRldGFjaCB0O1xuICBnZXRfbmV4dF9lcnJvciB0XG47O1xuXG5sZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lICgpID1cbiAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIChTb21lIHBhcmVudClcbjs7XG5cbm1vZHVsZSBNb25pdG9yX2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhuIDogZXhuXG4gICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cblxuICBsZXQgYmFja3RyYWNlIHQgPSB0LmJhY2t0cmFjZVxuICBsZXQgZXh0cmFjdF9leG4gdCA9IHQuZXhuXG5cbiAgbGV0IGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgPVxuICAgIGxldCBqb2JfcXVldWUgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImpvYl9xdWV1ZS5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDAgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMC5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDEgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMS5tbFxcXCJcIiBpblxuICAgIGxldCBtb25pdG9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJtb25pdG9yLm1sXFxcIlwiIGluXG4gICAgbGV0IGltcG9ydDAgPSBcIlJhaXNlZCBhdCBmaWxlIFxcXCJpbXBvcnQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGVycm9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJlcnJvci5tbFxcXCJcIiBpblxuICAgIGZ1biB0cmFjZXMgLT5cbiAgICAgICgqIC4uL3Rlc3QvdGVzdF90cnlfd2l0aF9lcnJvcl9kaXNwbGF5Lm1sIG1ha2VzIHN1cmUgdGhpcyBzdGF5cyB1cC10by1kYXRlLiAqKVxuICAgICAgbGV0IHRyYWNlcyA9XG4gICAgICAgIG1hdGNoIHRyYWNlcyB3aXRoXG4gICAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDppbXBvcnQwIC0+XG4gICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZXJyb3IgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgIHwgdDMgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDMgfnByZWZpeDplcnJvciAtPiByZXN0XG4gICAgICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgfCBfIC0+IHRyYWNlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIExpc3QucmV2IHRyYWNlcyB3aXRoXG4gICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCB0MiA6OiByZXN0XG4gICAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMFxuICAgICAgICAgICAgICAgICgqIGJpbmQgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQxXG4gICAgICAgICAgICAgICAgKCogbWFwICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4Om1vbml0b3JcbiAgICAgICAgICAgICAgKCogdHJ5X3dpdGggKikgLT4gTGlzdC5yZXYgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgIHwgXyAtPiB0cmFjZXNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHsgZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yIH0gPVxuICAgIGxldCBtb25pdG9yID1cbiAgICAgIGxldCBuYW1lID1cbiAgICAgICAgbWF0Y2ggSW5mby50b19zdHJpbmdfaHVtIG1vbml0b3IubmFtZSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICAgIHwgcyAtPiBTb21lIHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggbW9uaXRvci5oZXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGhlcmUgLT5cbiAgICAgICAgICAoKiBXZSBkaXNwbGF5IHRoZSBmdWxsIGZpbGVuYW1lLCB3aGVyZWFzIGJhY2t0cmFjZXMgb25seSBoYXZlIGJhc2VuYW1lcywgYnV0XG4gICAgICAgICAgICAgcGVyaGFwcyB0aGF0J3Mgd2hhdCBzaG91bGQgY2hhbmdlLiAqKVxuICAgICAgICAgIGxldCBjb2x1bW4gPSBoZXJlLnBvc19jbnVtIC0gaGVyZS5wb3NfYm9sIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKCogV2UgaGlkZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyB3aGVuIFthbV9ydW5uaW5nX3Rlc3RdIHRvIG1ha2UgdGVzdCBvdXRwdXRcbiAgICAgICAgICAgICAgIG1vcmUgcm9idXN0LiAgVGhpcyBzYXZlcyBwZW9wbGUgbWFudWFsbHkgaGlkaW5nIHRoZSBudW1iZXJzIG9yIGV2ZW4gd29yc2UsXG4gICAgICAgICAgICAgICBsZWF2aW5nIHRoZW0gaW4gdGVzdCBvdXRwdXQuICBIaWRpbmcgaW4gdGVzdCBpcyBkaWZmZXJlbnQgY2hvaWNlIGZvclxuICAgICAgICAgICAgICAgYmVoYXZpb3IgdGhhbiBvdXIgY29kZWJhc2UgbWFrZXMgZm9yIFtCYWNrdHJhY2UuZWxpZGVdLCB3aGljaCBoYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgW2ZhbHNlXSwgYW5kIHRodXMgc2hvd3MgYmFja3RyYWNlcyBpbiB0ZXN0LiAgVGhlcmUgYXJlIGEgY291cGxlIHJlYXNvbnMgZm9yXG4gICAgICAgICAgICAgICB0aGlzIGRpZmZlcmVudCBjaG9pY2UuICBGaXJzdCwgZXhwZWN0LXRlc3QgbWFjaGluZXJ5IGhhcyBjaGVjayB0byBwcmV2ZW50XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGZyb20gYXBwZWFyaW5nIGluIHRlc3Qgb3V0cHV0LiAgSXQgaGFzIG5vIHN1Y2ggY2hlY2tzIGZvciBsaW5lXG4gICAgICAgICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMuICBTZWNvbmQsIHdoZW4gdGhlcmUgaXMgYSByZWFsIGVycm9yIGFuZCB5b3Ugd2FudCB0byBzZWVcbiAgICAgICAgICAgICAgIHRoZSBiYWNrdHJhY2UsIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIGJhY2t0cmFjZSBsb3NlcyBhIGxvdCBvZiBwb3RlbnRpYWxseVxuICAgICAgICAgICAgICAgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGhhcmQgdG8gcmVjb3Zlci4gIFdoZXJlYXMgd2UncmUganVzdFxuICAgICAgICAgICAgICAgdGhyb3dpbmcgYSB3YXkgYSBsaW5lIG51bWJlciBhbmQgY29sdW1uLCB3aGljaCBhcmUgYSBtaW5vciBjb252ZW5pZW5jZVxuICAgICAgICAgICAgICAgZ2l2ZW4gdGhhdCB0aGUgZmlsZW5hbWUgaGFzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uLiAqKVxuICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgICAgICAgIHRoZW4gc3ByaW50ZiBcImZpbGUgJVMsIGxpbmUgTElORSwgY2hhcmFjdGVycyBDMS1DMlwiIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcImZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19sbnVtXG4gICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgICBjb2x1bW4pXG4gICAgICBpblxuICAgICAgbWF0Y2ggcG9zLCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHBvcywgTm9uZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciBhdCAlc1wiIHBvcyBdXG4gICAgICB8IE5vbmUsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlc1wiIG5hbWUgXVxuICAgICAgfCBTb21lIHBvcywgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzIGF0ICVzXCIgbmFtZSBwb3MgXVxuICAgIGluXG4gICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBiYWNrdHJhY2UgLT4gQmFja3RyYWNlLnRvX3N0cmluZ19saXN0IGJhY2t0cmFjZVxuICAgICAgaW5cbiAgICAgIGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgYmFja3RyYWNlIEAgbW9uaXRvclxuICAgIGluXG4gICAgbGV0IGxpc3RfaWZfbm90X2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIGxcbiAgICBpblxuICAgIFslc2V4cFxuICAgICAgKGV4biA6IGV4bilcbiAgICAsIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2UgOiAoc3RyaW5nIGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICwgYGJhY2t0cmFjZV9oaXN0b3J5XG4gICAgICAgIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2VfaGlzdG9yeSA6IChCYWNrdHJhY2UudCBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1vbml0b3JfZXhuIG9mIE1vbml0b3JfZXhuLnRcblxubGV0ICgpID1cbiAgU2V4cGxpYi5Db252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1vbml0b3JfZXhuXSAoZnVuY3Rpb25cbiAgICB8IE1vbml0b3JfZXhuIHQgLT4gWyVzZXhwIFwibW9uaXRvci5tbC5FcnJvclwiIDo6ICh0IDogTW9uaXRvcl9leG4udCldXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBleHRyYWN0X2V4biBleG4gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IE1vbml0b3JfZXhuIGVycm9yIC0+IGVycm9yLmV4blxuICB8IGV4biAtPiBleG5cbjs7XG5cbmxldCBzZW5kX2V4biB0ID8oYmFja3RyYWNlID0gYEdldCkgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IE1vbml0b3JfZXhuIF8gLT4gZXhuXG4gICAgfCBfIC0+XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBgR2V0IC0+IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnRfZm9yX2V4biBleG5cbiAgICAgICAgfCBgVGhpcyBiIC0+IFNvbWUgYlxuICAgICAgaW5cbiAgICAgIGxldCBiYWNrdHJhY2VfaGlzdG9yeSA9IChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKS5iYWNrdHJhY2VfaGlzdG9yeSBpblxuICAgICAgTW9uaXRvcl9leG4geyBNb25pdG9yX2V4bi5leG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgPSB0IH1cbiAgaW5cbiAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4biB0aGVuIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG5cIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICB0Lmhhc19zZWVuX2Vycm9yIDwtIHRydWU7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgSXZhci5maWxsIHQubmV4dF9lcnJvciBleG47XG4gICAgdC5uZXh0X2Vycm9yIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCAtPlxuICAgICAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4blxuICAgICAgdGhlblxuICAgICAgICBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuIGZvdW5kIGxpc3RlbmluZyBtb25pdG9yXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgICAgIEJhZy5pdGVyIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biAoZXhlY3V0aW9uX2NvbnRleHQsIGYpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGV4bik7XG4gICAgICBMaXN0Lml0ZXIgdC50YWlsc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIHRhaWwgLT4gVGFpbC5leHRlbmQgdGFpbCBleG4pXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IGxvb3AgcGFyZW50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+XG4gICAgICAoKiBEbyBub3QgY2hhbmdlIHRoaXMgYnJhbmNoIHRvIHByaW50IHRoZSBleGNlcHRpb24gb3IgdG8gZXhpdC4gIEhhdmluZyB0aGVcbiAgICAgICAgIHNjaGVkdWxlciByYWlzZSBhbiB1bmNhdWdodCBleGNlcHRpb24gaXMgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvciBmb3IgcHJvZ3JhbXNcbiAgICAgICAgIHRoYXQgY2FsbCBbU2NoZWR1bGVyLmdvXSBhbmQgd2FudCB0byBoYW5kbGUgaXQuICopXG4gICAgICBTY2hlZHVsZXIuKGdvdF91bmNhdWdodF9leG4gKHQgKCkpKSBleG4gKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCkpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhpbl9jb250ZXh0IGNvbnRleHQgZiA9XG4gICAgU2NoZWR1bGVyLih3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgY29udGV4dCB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggZiB3aXRoXG4gICAgICB8IE9rIHggLT4gT2sgeFxuICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgc2VuZF9leG4gKEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgY29udGV4dCkgZXhuIH5iYWNrdHJhY2U6YEdldDtcbiAgICAgICAgRXJyb3IgKCkpXG4gIDs7XG5cbiAgdHlwZSAnYSB3aXRoX29wdGlvbnMgPSA/bW9uaXRvcjp0IC0+ID9wcmlvcml0eTpQcmlvcml0eS50IC0+ICdhXG5cbiAgbGV0IHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIGxldCB0bXBfY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkgP21vbml0b3IgP3ByaW9yaXR5XG4gICAgaW5cbiAgICB3aXRoaW5fY29udGV4dCB0bXBfY29udGV4dCBmXG4gIDs7XG5cbiAgbGV0IHdpdGhpbicgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IE9rIGQgLT4gZFxuICA7O1xuXG4gIGxldCB3aXRoaW5fdiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBOb25lXG4gICAgfCBPayB4IC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCB3aXRoaW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gKClcbiAgICB8IE9rICgpIC0+ICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayB4ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBTY2hlZHVsZXIuZW5xdWV1ZVxuICAgICAgc2NoZWR1bGVyXG4gICAgICAoRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIpXG4gICAgICAgICA/bW9uaXRvclxuICAgICAgICAgP3ByaW9yaXR5KVxuICAgICAgd29ya1xuICAgICAgeFxuICA7O1xuXG4gIGxldCBzY2hlZHVsZSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayA9IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAoKVxuXG4gIGxldCBzY2hlZHVsZScgPVxuICAgICgqIEZvciBwZXJmb3JtYW5jZSwgd2UgdXNlIFtzY2hlZHVsZV93aXRoX2RhdGFdIHdpdGggYSBjbG9zZWQgZnVuY3Rpb24sIGFuZCBpbmxpbmVcbiAgICAgICBbRGVmZXJyZWQuY3JlYXRlXS4gKilcbiAgICBsZXQgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSkgPSB1cG9uICh3b3JrICgpKSAoZnVuIGEgLT4gSXZhci5maWxsIGkgYSkgaW5cbiAgICBmdW4gP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgLT5cbiAgICAgIGxldCBpID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSk7XG4gICAgICBJdmFyLnJlYWQgaVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIGxldCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSA9IHVwb24gKGYgYSkgKGZ1biByIC0+IEl2YXIuZmlsbCBpIHIpIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSkpXG4gIDs7XG5lbmRcblxub3BlbiBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBzdHJlYW1faXRlciBzdHJlYW0gfmYgPVxuICBsZXQgcmVjIGxvb3Agc3RyZWFtID1cbiAgICBTdHJlYW0ubmV4dCBzdHJlYW1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodiwgc3RyZWFtKSAtPlxuICAgICAgbG9vcCBzdHJlYW07XG4gICAgICBmIHZcbiAgaW5cbiAgbG9vcCBzdHJlYW1cbjs7XG5cbigqIEFuIFsnYSBPa19hbmRfZXhucy50XSByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgYSBjb21wdXRhdGlvbiBydW5uaW5nIGluIGEgZGV0YWNoZWRcbiAgIG1vbml0b3IuICopXG5tb2R1bGUgT2tfYW5kX2V4bnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG9rIDogJ2EgRGVmZXJyZWQudFxuICAgIDsgZXhucyA6IGV4biBTdHJlYW0udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1biBmID1cbiAgICAoKiBXZSBjYWxsIFtjcmVhdGVfd2l0aF9wYXJlbnQgTm9uZV0gYmVjYXVzZSBbbW9uaXRvcl0gZG9lcyBub3QgbmVlZCBhIHBhcmVudC4gIEl0XG4gICAgICAgZG9lcyBub3QgYmVjYXVzZSB3ZSBjYWxsIFtkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcl0gYW5kIGRlYWwgd2l0aCB0aGVcbiAgICAgICBlcnJvcnMgZXhwbGljaXRseSwgdGh1cyBbc2VuZF9leG5dIHdvdWxkIG5ldmVyIHByb3BhZ2F0ZSBhbiBleG4gcGFzdCBbbW9uaXRvcl0uICopXG4gICAgbGV0IG1vbml0b3IgPSBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgTm9uZSBpblxuICAgIGxldCBleG5zID0gZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IgaW5cbiAgICBsZXQgb2sgPVxuICAgICAgbWF0Y2ggcnVuIHdpdGhcbiAgICAgIHwgYE5vdyAtPiB3aXRoaW4nIH5tb25pdG9yIGZcbiAgICAgIHwgYFNjaGVkdWxlIC0+IHNjaGVkdWxlJyB+bW9uaXRvciBmXG4gICAgaW5cbiAgICB7IG9rOyBleG5zIH1cbiAgOztcbmVuZFxuXG5sZXQgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgcmVzdWx0XG4gICAgICBleG5zXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHRcbiAgPVxuICBpZiBJdmFyX2ZpbGxlci5pc19lbXB0eSByZXN1bHRfZmlsbGVyXG4gIHRoZW4gKFxuICAgIEl2YXJfZmlsbGVyLmZpbGwgcmVzdWx0X2ZpbGxlciByZXN1bHQ7XG4gICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aF9sb2dfZXhuIDogKGV4biAtPiB1bml0KSByZWYgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJmYWlsZWQgdG8gc2V0IFtNb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXVwiIChleG4gOiBFeG4udCldKVxuICA7O1xuZW5kXG5cbmxldCBtYWtlX2hhbmRsZV9leG4gcmVzdCA9XG4gIG1hdGNoIHJlc3Qgd2l0aFxuICB8IGBMb2cgLT5cbiAgICAoKiBXZSBhcmUgY2FyZWZ1bCB0byBub3QgY2xvc2Ugb3ZlciBjdXJyZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCBuZWVkZWQuICopXG4gICAgIUV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gIHwgYFJhaXNlIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHNlbmRfZXhuIHBhcmVudCBleG4gP2JhY2t0cmFjZTpOb25lXG4gIHwgYENhbGwgZiAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiB3aXRoaW4gfm1vbml0b3I6cGFyZW50IChmdW4gKCkgLT4gZiBleG4pXG47O1xuXG5sZXQgdHJ5X3dpdGhcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJcIilcbiAgICAgID9leHRyYWN0X2V4bjooZG9fZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID8ocnVuID0gYE5vdylcbiAgICAgID8ocmVzdCA9IGBSYWlzZSlcbiAgICAgIGZcbiAgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvIH5uYW1lIH5ydW4gZiBpblxuICBsZXQgaGFuZGxlX2V4biA9IG1ha2VfaGFuZGxlX2V4biByZXN0IGluXG4gIGxldCBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucyA9IHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlX2V4biBpblxuICAoKiBXZSBydW4gW3dpdGhpbicgfm1vbml0b3I6bWFpbl0gdG8gYXZvaWQgaG9sZGluZyBvbiB0byByZWZlcmVuY2VzIHRvIHRoZSBldmFsdWF0aW9uXG4gICAgIGNvbnRleHQgaW4gd2hpY2ggW3RyeV93aXRoXSB3YXMgY2FsbGVkLiAgVGhpcyBhdm9pZHMgYSBzcGFjZSBsZWFrIHdoZW4gYSBjaGFpbiBvZlxuICAgICBbdHJ5X3dpdGhdJ3MgYXJlIHJ1biBlYWNoIG5lc3RlZCB3aXRoaW4gdGhlIHByZXZpb3VzIG9uZS4gIFdpdGhvdXQgdGhlIFt3aXRoaW4nXSwgdGhlXG4gICAgIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgaW5uZXJtb3N0IFt0cnlfd2l0aF0gd291bGQga2VlcCBhbGl2ZSB0aGUgZW50aXJlIGNoYWluLiAqKVxuICB3aXRoaW4nIH5tb25pdG9yOm1haW4gKGZ1biAoKSAtPlxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgb2tcbiAgICB0aGVuIChcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zO1xuICAgICAgcmV0dXJuIChPayAoRGVmZXJyZWQudmFsdWVfZXhuIG9rKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0X2ZpbGxlciwgcmVzdWx0ID0gSXZhcl9maWxsZXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIG9rIChmdW4gcmVzIC0+XG4gICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgKE9rIHJlcylcbiAgICAgICAgICBleG5zXG4gICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHVwb24gKFN0cmVhbS5uZXh0IGV4bnMpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBDb25zIChleG4sIGV4bnMpIC0+XG4gICAgICAgICAgbGV0IGV4biA9IGlmIGRvX2V4dHJhY3RfZXhuIHRoZW4gZXh0cmFjdF9leG4gZXhuIGVsc2UgZXhuIGluXG4gICAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgICAgKEVycm9yIGV4bilcbiAgICAgICAgICAgIGV4bnNcbiAgICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICByZXN1bHQpKVxuOztcblxubGV0IHRyeV93aXRoX29yX2Vycm9yID9oZXJlID9pbmZvID8obmFtZSA9IFwidHJ5X3dpdGhfb3JfZXJyb3JcIikgP2V4dHJhY3RfZXhuID9yZXN0IGYgPVxuICB0cnlfd2l0aCBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biB+cnVuOmBOb3cgP3Jlc3QgPj58IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwidHJ5X3dpdGhfam9pbl9vcl9lcnJvclwiKVxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICA/cmVzdFxuICAgICAgZlxuICA9XG4gIHRyeV93aXRoX29yX2Vycm9yIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuID9yZXN0ID4+fCBPcl9lcnJvci5qb2luXG47O1xuXG5sZXQgcHJvdGVjdCA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcIk1vbml0b3IucHJvdGVjdFwiKSA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCBmIH5maW5hbGx5ID1cbiAgbGV0JWJpbmQgciA9IHRyeV93aXRoID9leHRyYWN0X2V4biA/aGVyZSA/aW5mbyA/cnVuID9yZXN0IH5uYW1lIGYgaW5cbiAgbGV0JW1hcCBmciA9XG4gICAgdHJ5X3dpdGhcbiAgICAgIH5leHRyYWN0X2V4bjpmYWxzZVxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICB+cnVuOmBTY2hlZHVsZSAoKiBjb25zaWRlciBbfnJ1bjpgTm93XSAqKVxuICAgICAgP3Jlc3RcbiAgICAgIH5uYW1lOlwiZmluYWxseVwiXG4gICAgICBmaW5hbGx5XG4gIGluXG4gIG1hdGNoIHIsIGZyIHdpdGhcbiAgfCBFcnJvciBleG4sIEVycm9yIGZpbmFsbHlfZXhuIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJBc3luYyBmaW5hbGx5XCIgKGV4biA6IGV4bikgKGZpbmFsbHlfZXhuIDogZXhuKV1cbiAgfCBFcnJvciBlLCBPayAoKSB8IE9rIF8sIEVycm9yIGUgLT4gcmFpc2UgZVxuICB8IE9rIHIsIE9rICgpIC0+IHJcbjs7XG5cbmxldCBoYW5kbGVfZXJyb3JzID9oZXJlID9pbmZvID9uYW1lIGYgaGFuZGxlciA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IGYgaW5cbiAgc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVyO1xuICBva1xuOztcblxubGV0IGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMuZXhuczsgXyB9ID1cbiAgICBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgIGYgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIGV4bnNcbjs7XG5cbmxldCBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbWF0Y2glbWFwIFN0cmVhbS5uZXh0IChjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZikgd2l0aFxuICB8IENvbnMgKHgsIF8pIC0+IHhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb25pdG9yLmNhdGNoIGdvdCB1bmV4cGVjdGVkIGVtcHR5IHN0cmVhbVwiXVxuOztcblxubGV0IGNhdGNoX2Vycm9yID9oZXJlID9pbmZvID9uYW1lIGYgPSBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID4+fCBFcnJvci5vZl9leG5cblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgcGFyZW50IHQgPVxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IE5vbmVcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gU29tZSBwYXJlbnRcbiAgICB8IERldGFjaGVkIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZGVwdGggdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgbiA9XG4gICAgICBtYXRjaCBwYXJlbnQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gblxuICAgICAgfCBTb21lIHQgLT4gbG9vcCB0IChuICsgMSlcbiAgICBpblxuICAgIGxvb3AgdCAwXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuaW5jbHVkZSBUYWlsLlN0cmVhbVxuXG5sZXQgZmlyc3RfZXhuIHQgPVxuICBtYXRjaCVtYXAgbmV4dCB0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTdHJlYW0uZmlyc3Qgb2YgZW1wdHkgc3RyZWFtXCJdXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuOztcblxubGV0IGZvbGQnIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIHVwb24gKG5leHQgdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IENvbnMgKHYsIHQpIC0+IHVwb24gKGYgYiB2KSAobG9vcCB0KSlcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxuKCogW2ZvbGRdIGlzIGltcGxlbWVudGVkIHRvIGF2b2lkIHBlci1zdHJlYW0tZWxlbWVudCBkZWZlcnJlZCBvdmVyaGVhZCBpbiB0aGUgY2FzZSB3aGVuXG4gICBtdWx0aXBsZSBzdHJlYW0gZWxlbWVudHMgYXJlIGF2YWlsYWJsZSBzaW11bHRhbmVvdXNseS4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IHVwb24gKG5leHQgdCkgKGZ1biBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGIpXG4gICAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dCBiXG4gICAgYW5kIGxvb3BfbmV4dCBuZXh0IGIgPVxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgQ29ucyAodiwgdCkgLT4gbG9vcCB0IChmIGIgdilcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG5sZXQgaXRlcicgdCB+ZiA9IGZvbGQnIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IGYgdilcblxubGV0IGNsb3NlZCB0ID1cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gIHwgU29tZSBOaWwgLT4gcmV0dXJuICgpXG4gIHwgXyAtPiBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoaXRlcicgdCB+ZjooZnVuIGEgLT5cbiAgICAgICBmIGE7XG4gICAgICAgcmV0dXJuICgpKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgKCogY29sbGVjdCBiZWZvcmUgY2FsbGluZyBbZl0sIGluIGNhc2UgW2ZdIGltbWVkaWF0ZWx5IGV4dGVuZHMuICopXG4gIGxldCB0ID0gVGFpbC5jb2xsZWN0IHRhaWwgaW5cbiAgZiB0YWlsO1xuICB0XG47O1xuXG5sZXQgdW5mb2xkIGIgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgdXBvbiAoZiBiKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgfCBTb21lIChhLCBiKSAtPlxuICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgYTtcbiAgICAgICAgICBsb29wIGIpXG4gICAgaW5cbiAgICBsb29wIGIpXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgIFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG5sZXQgdG9fbGlzdCBzID0gZm9sZCcgcyB+aW5pdDpbXSB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGEgOjogYikpID4+fCBMaXN0LnJldlxubGV0IGNvcHlfdG9fdGFpbCB0IHRhaWwgPSBpdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKFRhaWwuZXh0ZW5kIHRhaWwgYSkpXG5cbmxldCBhcHBlbmQgdDEgdDIgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoY29weV90b190YWlsIHQxIHRhaWwpIChmdW4gKCkgLT5cbiAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MiB0YWlsKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKSlcbjs7XG5cbmxldCBjb25jYXQgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdCAtPiBjb3B5X3RvX3RhaWwgdCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXInIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gKClcbiAgICAgICAgIHwgdHJ1ZSAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaWx0ZXJfbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSB2IC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9tYXBfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyX21hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPiBmIHYgPj58IFRhaWwuZXh0ZW5kIHRhaWwpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOlxuICAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICAgfnJlc3Q6YFJhaXNlXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgICAgID4+PiBmdW4geiAtPlxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIChtYXRjaCB6IHdpdGhcbiAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgIHwgRXJyb3IgZSAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGUpXG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICgqIFdlIGltbWVkaWF0ZWx5IGNhbGwgW2xvb3BdLCB0aHVzIG1ha2luZyB0aGUgaXRlciBkdXJhYmxlLiAgQW55IGV4Y2VwdGlvbnNcbiAgICAgICAgICAgcmFpc2VkIGJ5IFtmXSB3aWxsIG5vdCBwcmV2ZW50IHRoZSBsb29wIGZyb20gY29udGludWluZywgYW5kIHdpbGwgZ28gdG8gdGhlXG4gICAgICAgICAgIG1vbml0b3Igb2Ygd2hvbWV2ZXIgY2FsbGVkIFtpdGVyX2R1cmFibHlfcmVwb3J0X2VuZF0uICopXG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgZiB4XG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5IHQgfmYgPSBkb24ndF93YWl0X2ZvciAoaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZilcblxubGV0IG9mX2Z1biBmID1cbiAgdW5mb2xkICgpIH5mOihmdW4gKCkgLT5cbiAgICBsZXQlbWFwIGEgPSBmICgpIGluXG4gICAgU29tZSAoYSwgKCkpKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3Blcm1pc3Npb24pIHQgPSAoJ2EsICdwZXJtaXNzaW9uKSBUeXBlcy5CdmFyLnRcblxudHlwZSAnYSByZXByID0gJ2EgVHlwZXMuQnZhci5yZXByID1cbiAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHJlcHIgWyVzZXhwX29mOiBfIHJlcHJdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCByZXByIGYgaW5cbiAgICBGaWVsZHNfb2ZfcmVwci5pdGVyXG4gICAgICB+aGFzX2FueV93YWl0ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBoYXNfYW55X3dhaXRlcnMgLT5cbiAgICAgICAgICAgaWYgSXZhci5oYXNfaGFuZGxlcnMgcmVwci5pdmFyIHRoZW4gYXNzZXJ0IGhhc19hbnlfd2FpdGVycykpXG4gICAgICB+aXZhcjpcbiAgICAgICAgKGNoZWNrIChmdW4gaXZhciAtPlxuICAgICAgICAgICBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSBpdmFyO1xuICAgICAgICAgICBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKSlcbjs7XG5cbmxldCBzZXhwX29mX3QgXyBfIHQgPVxuICBsZXQgeyBoYXNfYW55X3dhaXRlcnM7IGl2YXIgPSBfIH0gPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICAoKiBXZSBkb24ndCBzaG93IFtpdmFyXSBiZWNhdXNlIGl0J3MgYWx3YXlzIGVtcHR5LiAqKVxuICBbJW1lc3NhZ2UgKGhhc19hbnlfd2FpdGVycyA6IGJvb2wpXVxuOztcblxuaW5jbHVkZSBTY2hlZHVsZXIxLkJ2YXJcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIGlmIHJlcHIuaGFzX2FueV93YWl0ZXJzXG4gIHRoZW4gKFxuICAgIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIGZhbHNlO1xuICAgIEl2YXIuZmlsbCByZXByLml2YXIgYTtcbiAgICByZXByLml2YXIgPC0gSXZhci5jcmVhdGUgKCkpXG47O1xuXG5sZXQgd2FpdCB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVycyA8LSB0cnVlO1xuICBJdmFyLnJlYWQgcmVwci5pdmFyXG47O1xuXG5sZXQgaGFzX2FueV93YWl0ZXJzIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxubGV0IGRlYnVnID0gRGVidWcuY2xvY2tcblxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IGNob29zZSA9IERlZmVycmVkLmNob29zZVxubGV0IGNob2ljZSA9IERlZmVycmVkLmNob2ljZVxubGV0ICggPj4+ICkgPSB1cG9uXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBpbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5UMVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIjx3YWxsX2Nsb2NrPlwiXVxuICAgIGVsc2VcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICAoaXNfd2FsbF9jbG9jayA6IGJvb2wpXG4gICAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgICAoZXZlbnRzIDogXyBUaW1pbmdfd2hlZWwudCldXG4gIDs7XG5lbmRcblxub3BlbiBUMVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlci5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyLndhbGxfY2xvY2tcbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xubGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcbmxldCBpZCB0ID0gdC5pZFxuXG5tb2R1bGUgSWQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuSWRcblxubGV0IG5vdyB0ID1cbiAgaWYgdC5pc193YWxsX2Nsb2NrXG4gIHRoZW5cbiAgICAoKiBGb3IgdGhlIHdhbGwtY2xvY2sgdGltZS1zb3VyY2UsIHdlIHVzZSBbVGltZV9ucy5ub3cgKCldIHJhdGhlciB0aGFuXG4gICAgICAgW1RpbWluZ193aGVlbC5ub3cgdC5ldmVudHNdLiAgVGhlIGxhdHRlciBpcyBvbmx5IHVwZGF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2hcbiAgICAgICBjeWNsZS4gIFRoZXJlIGNhbiBiZSBzdWJzdGFudGlhbCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byB3aGVuIHBlb3BsZSBkbyBsb25nXG4gICAgICAgcnVubmluZyBjb21wdXRhdGlvbnMgb3IgbWl4IGJsb2NraW5nIGNvZGUgd2l0aCBhc3luYy4gIEFuZCBodW1hbnMgZXhwZWN0IHRoYXRcbiAgICAgICB3YWxsLWNsb2NrIHRpbWUgaXMgYmFzZWQgb24gW1RpbWUubm93XSwgbm90IHNvbWUgYXJ0aWZhY3Qgb2YgYXN5bmNcbiAgICAgICBpbXBsZW1lbnRhdGlvbi4gKilcbiAgICBUaW1lX25zLm5vdyAoKVxuICBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2J5IHQgYnkgPSBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxubGV0IGFkdmFuY2UgPSBhZHZhbmNlX2RpcmVjdGx5XG5sZXQgYWR2YW5jZV9ieSA9IGFkdmFuY2VfZGlyZWN0bHlfYnlcbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgKFNjaGVkdWxlci55aWVsZCB0LnNjaGVkdWxlcilcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBmaW5pc2ggKClcbiAgICB8IFNvbWUgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbDtcbiAgICAgICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICAgICBsZXQgcXVldWVkX2FsYXJtc19yYW4gPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHF1ZXVlZF9hbGFybXNfcmFuXG4gICAgICAgIHRoZW4gd2Fsa19hbGFybXMgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBxdWV1ZWRfYWxhcm1zX3JhbiBpblxuICAgICAgICAgIHdhbGtfYWxhcm1zICgpKSlcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBxdWV1ZWRfYWxhcm1zX3JhblxuICAgICAgICB0aGVuIHdhbGtfYWxhcm1zICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCViaW5kICgpID0gcXVldWVkX2FsYXJtc19yYW4gaW5cbiAgICAgICAgICB3YWxrX2FsYXJtcyAoKSkpXG4gIGluXG4gIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgP3dhaXRfZm9yIHQgYnkgPVxuICBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG47O1xuXG5sZXQgc3Bhbl90b190aW1lIHQgc3BhbiA9IFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuXG5cbmxldCBzY2hlZHVsZV9qb2IgdCB+YXQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IGFsYXJtID1cbiAgICBUaW1pbmdfd2hlZWwuYWRkXG4gICAgICB0LmV2ZW50c1xuICAgICAgfmF0XG4gICAgICAoSm9iX29yX2V2ZW50Lm9mX2pvYiAoU2NoZWR1bGVyLmNyZWF0ZV9qb2IgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKSlcbiAgaW5cbiAgKG1hdGNoIHQuc2NoZWR1bGVyLmV2ZW50X2FkZGVkX2hvb2sgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZiAtPiBmIGF0KTtcbiAgYWxhcm1cbjs7XG5cbmxldCBydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGluXG4gIGlmIFRpbWVfbnMuKCA+ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgdGhlbiBzY2hlZHVsZV9qb2IgdCB+YXQ6dGltZSBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZWxzZSAoXG4gICAgU2NoZWR1bGVyLmVucXVldWUgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIEFsYXJtLm51bGwgKCkpXG47O1xuXG5sZXQgcnVuX2F0IHQgdGltZSBmIGEgPSBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhIDogXyBBbGFybS50KVxubGV0IHJ1bl9hZnRlciB0IHNwYW4gZiBhID0gcnVuX2F0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pIGYgYVxuXG5sZXQgYXQgPVxuICBsZXQgZmlsbCByZXN1bHQgPSBJdmFyLmZpbGwgcmVzdWx0ICgpIGluXG4gIGZ1biB0IHRpbWUgLT5cbiAgICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICAgIHRoZW4gcmV0dXJuICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmaWxsIHJlc3VsdCA6IF8gQWxhcm0udCk7XG4gICAgICBJdmFyLnJlYWQgcmVzdWx0KVxuOztcblxubGV0IGFmdGVyIHQgc3BhbiA9IGF0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pXG5cbmxldCByZW1vdmVfYWxhcm0gdCBhbGFybSA6IHVuaXQgPVxuICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgdC5ldmVudHMgYWxhcm0gaW5cbiAgKGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgfCBKb2IsIGpvYiAtPiBTY2hlZHVsZXIuZnJlZV9qb2IgdC5zY2hlZHVsZXIgam9iXG4gICB8IEV2ZW50LCBfIC0+XG4gICAgICgqIFRoaXMgaXMgdW5yZWFjaGFibGUgYmVjYXVzZSBbYWxhcm1dIG9ubHkgZXZlciBjb21lcyBmcm9tIFtFdmVudC5hbGFybV0gd2hpY2ggb25seVxuICAgICAgICBldmVyIGdldHMgcG9wdWxhdGVkIGJ5IGEgY2FsbCB0byBbc2NoZWR1bGVfam9iXS4gKilcbiAgICAgYXNzZXJ0IGZhbHNlKTtcbiAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBhbGFybVxuOztcblxubGV0IHJlbW92ZV9hbGFybV9pZl9zY2hlZHVsZWQgdCBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgYWxhcm0gdGhlbiByZW1vdmVfYWxhcm0gdCBhbGFybVxuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIG1vZHVsZSBGaXJlZCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICA7IG11dGFibGUgZmlyZSA6IHVuaXQgLT4gdW5pdFxuICAgIDsgKCogQXMgbG9uZyBhcyBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHdlIGhhdmUgbm90IHlldCBjb21taXR0ZWQgdG8gd2hldGhlciB0aGUgZXZlbnRcbiAgICAgICAgIHdpbGwgaGFwcGVuIG9yIGJlIGFib3J0ZWQuICBXaGVuIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgdGhlIGFsYXJtIG1heSBvciBtYXkgbm90XG4gICAgICAgICBiZSBpbiB0aGUgdGltaW5nIHdoZWVsIC0tIGlmIGl0IGlzbid0LCB0aGVuIHRoZXJlJ3MgYSBqb2IgaW4gQXN5bmMncyBqb2IgcXVldWVcbiAgICAgICAgIHRoYXQgd2lsbCBmaXJlIHRoZSBldmVudCwgdW5sZXNzIGl0IGlzIGFib3J0ZWQgYmVmb3JlIHRoYXQgam9iIGNhbiBydW4uICopXG4gICAgICBmaXJlZCA6ICgnYSwgJ2gpIEZpcmVkLnQgSXZhci50XG4gICAgOyAoKiBbbnVtX2ZpcmVzX3RvX3NraXBdIGlzIHVzZWQgdG8gcmVzY2hlZHVsZSBldmVudHMgdGhhdCBoYXZlIGZpcmVkIGFuZCBlbnRlcmVkIHRoZVxuICAgICAgICAgQXN5bmMgam9iIHF1ZXVlLCBidXQgaGF2ZSBub3QgeWV0IHJ1bi4gIFRob3NlIGpvYnMgb25seSBydW4gaWYgW251bV9maXJlc190b19za2lwXG4gICAgICAgICA9IDBdLCBhbmQgb3RoZXJ3aXNlIGp1c3QgZGVjcmVtZW50IGl0LiAgU28sIHRvIHJlc2NoZWR1bGUgYW4gZXZlbnQgaW4gc3VjaCBhXG4gICAgICAgICBzdGF0ZSwgd2UgaW5jcmVtZW50IFtudW1fZmlyZXNfdG9fc2tpcF0gYW5kIGFkZCBhIG5ldyBhbGFybSB0byB0aGUgdGltaW5nXG4gICAgICAgICB3aGVlbC4gKilcbiAgICAgIG11dGFibGUgbnVtX2ZpcmVzX3RvX3NraXAgOiBpbnRcbiAgICA7ICgqIFtzY2hlZHVsZWRfYXRdIGlzIHRoZSB0aW1lIGF0IHdoaWNoIFt0XSBoYXMgbW9zdCByZWNlbnRseSBiZWVuIHNjaGVkdWxlZCB0byBmaXJlLlxuICAgICAgICAgV2hpbGUgW3QuYWxhcm1dIGlzIHN0aWxsIGluIHRoZSB0aW1pbmcgd2hlZWwsIHRoaXMgaXMgdGhlIHNhbWUgYXMgW0FsYXJtLmF0XG4gICAgICAgICB0LmFsYXJtXS4gKilcbiAgICAgIG11dGFibGUgc2NoZWR1bGVkX2F0IDogVGltZV9ucy50XG4gICAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBmaXJlZCB0ID0gSXZhci5yZWFkIHQuZmlyZWRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9oIHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm06XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5maXJlZFxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChub3QgKFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtKSlcbiAgICAgICAgICAgICBlbHNlIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKEpvYl9vcl9ldmVudC5pc19qb2IgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpKSlcbiAgICAgICAgfmZpcmU6aWdub3JlXG4gICAgICAgIH5maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWQgOiBfIEZpcmVkLnQgSXZhci50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCBmaXJlZCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBpbnZhcmlhbnRfYSBhXG4gICAgICAgICAgICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBpbnZhcmlhbnRfaCBoKSlcbiAgICAgICAgfm51bV9maXJlc190b19za2lwOlxuICAgICAgICAgIChjaGVjayAoZnVuIG51bV9maXJlc190b19za2lwIC0+IGFzc2VydCAobnVtX2ZpcmVzX3RvX3NraXAgPj0gMCkpKVxuICAgICAgICB+c2NoZWR1bGVkX2F0OlxuICAgICAgICAgIChjaGVjayAoZnVuIHNjaGVkdWxlZF9hdCAtPlxuICAgICAgICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm1cbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlZF9hdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBib3RoIGNvbXBsZXRlZCBhbmQgdGltZWQgb3V0XCJdKVxuICAgIF1cbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQlbWFwIHJlc3VsdCA9IGYgKCkgaW5cbiAgbGV0IGR1cmF0aW9uID0gVGltZV9ucy5kaWZmIChub3cgdCkgc3RhcnQgaW5cbiAgcmVzdWx0LCBkdXJhdGlvblxuOztcblxubGV0IG9mX3N5bmNocm9ub3VzIHQgPSB0XG5sZXQgdG9fc3luY2hyb25vdXMgdCA9IHRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSBfIHQgPVxuICB8IFN0YWNrIDogJ2EgU3RhY2sudCAtPiAnYSB0XG4gIHwgQ291bnRlciA6IHsgbXV0YWJsZSBsZW5ndGggOiBpbnQgfSAtPiB1bml0IHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBvZl9saXN0IGxpc3QgPSBTdGFjayAoU3RhY2sub2ZfbGlzdCBsaXN0KVxuXG5sZXQgY3JlYXRlX2NvdW50ZXIgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyXSBnb3QgbmVnYXRpdmUgbGVuZ3RoXCIgKGxlbmd0aCA6IGludCldO1xuICBDb3VudGVyIHsgbGVuZ3RoIH1cbjs7XG5cbmxldCBsZW5ndGggKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5sZW5ndGggc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aFxuOztcblxubGV0IGNsZWFyICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suY2xlYXIgc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgcHVzaCAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucHVzaCBzIGFcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gci5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX2V4biAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnBvcF9leG4gc1xuICB8IENvdW50ZXIgciAtPlxuICAgIGlmIHIubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIucG9wX2V4bl0gb2YgZW1wdHkgc3RhY2tcIl07XG4gICAgci5sZW5ndGggPC0gci5sZW5ndGggLSAxXG47O1xuXG5sZXQgaXRlciAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogYSAtPiB1bml0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suaXRlciBzIH5mXG4gIHwgQ291bnRlciByIC0+XG4gICAgZm9yIF8gPSAxIHRvIHIubGVuZ3RoIGRvXG4gICAgICBmICgpXG4gICAgZG9uZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxudHlwZSAnYSBvdXRjb21lID1cbiAgWyBgT2sgb2YgJ2FcbiAgfCBgQWJvcnRlZFxuICB8IGBSYWlzZWQgb2YgZXhuXG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBJbnRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYiBEZWZlcnJlZC50KSAtPiAnYSB0ICogJ2Igb3V0Y29tZSBEZWZlcnJlZC50XG5cbiAgKCogRXZlcnkgaW50ZXJuYWwgam9iIHdpbGwgZXZlbnR1YWxseSBiZSBlaXRoZXIgW3J1bl0gb3IgW2Fib3J0XWVkLCBidXQgbm90IGJvdGguICopXG5cbiAgdmFsIHJ1biA6ICdhIHQgLT4gJ2EgLT4gWyBgT2sgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICB2YWwgYWJvcnQgOiBfIHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IFsgYEFib3J0IHwgYFN0YXJ0IG9mICdhIF0gSXZhci50XG4gICAgOyBvdXRjb21lIDogWyBgT2sgfCBgQWJvcnRlZCB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgd29yayA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoJWJpbmQgSXZhci5yZWFkIHN0YXJ0IHdpdGhcbiAgICAgIHwgYEFib3J0IC0+IHJldHVybiBgQWJvcnRlZFxuICAgICAgfCBgU3RhcnQgYSAtPlxuICAgICAgICAobWF0Y2glbWFwXG4gICAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICAgICB+cnVuOlxuICAgICAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuaW5jbHVkZSAoU2NoZWR1bGVyIDogbW9kdWxlIHR5cGUgb2YgU2NoZWR1bGVyIHdpdGggbW9kdWxlIEJ2YXIgOj0gU2NoZWR1bGVyLkJ2YXIpXG5cbmxldCB0ID0gU2NoZWR1bGVyLnRcblxuaW5jbHVkZSBNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IGZpbmRfbG9jYWwga2V5ID0gRXhlY3V0aW9uX2NvbnRleHQuZmluZF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGtleVxuXG5sZXQgd2l0aF9sb2NhbCBrZXkgdmFsdWUgfmYgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC53aXRoX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIGtleSB2YWx1ZVxuICBpblxuICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgfmZcbjs7XG5cbmxldCBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gKHQgKCkpLm1haW5fZXhlY3V0aW9uX2NvbnRleHRcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBudW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcbmxldCBoYXNfdXBjb21pbmdfZXZlbnQgdCA9IG5vdCAoVGltaW5nX3doZWVsLmlzX2VtcHR5IChldmVudHMgdCkpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgKGV2ZW50cyB0KVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnRfZXhuIHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gKGV2ZW50cyB0KVxubGV0IGV2ZW50X3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiAoZXZlbnRzIHQpXG5sZXQgY3ljbGVfc3RhcnQgdCA9IHQuY3ljbGVfc3RhcnRcbmxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZiA9IHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIGYgOjogdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gZiA6OiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbigqIFVuYmVsaWV2YWJsZSB0aGF0IFtMaXN0LnJlbW92ZV0gaXMgbm90IGEgdGhpbmcgKilcbmxldCBsaXN0X3JlbW92ZV9maXJzdCBsc3QgfmYgPVxuICBtYXRjaCBMaXN0LnNwbGl0X3doaWxlIH5mOihmdW4geCAtPiBub3QgKGYgeCkpIGxzdCB3aXRoXG4gIHwgXywgW10gLT4gTm9uZVxuICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbjs7XG5cbmxldCByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgbHN0IGYgPVxuICAoKiBSZW1vdmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgW2ZdIGZyb20gW2xzdF0uIE1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgbWF5IGJlIHByZXNlbnQsXG4gICAgIGJ1dCByZW1vdmFsIGlzIHJlZmVyZW5jZS1jb3VudGVkIGJ5IFtydW5fZXZlcnlfY3ljbGVfKHN0YXJ0fGVuZClfc3RhdGVdIHRhYmxlcy4gKilcbiAgbWF0Y2ggbGlzdF9yZW1vdmVfZmlyc3QgfmY6KHBoeXNfZXF1YWwgZikgbHN0IHdpdGhcbiAgfCBTb21lIGxzdCAtPiBsc3RcbiAgfCBOb25lIC0+XG4gICAgKCogVGhpcyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHNlZSB0aGUgW2ludmFyaWFudF0gaW4gW3NjaGVkdWxlcjEubWxdLiAqKVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlNjaGVkdWxlci5yZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgY2FsbGVkIHdpdGggYSBob29rIHRoYXQgaXNuJ3QgcmVnaXN0ZXJlZFwiXVxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIHN0YXJ0IGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+XG4gICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGZcbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIGVuZCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmXG47O1xuXG5sZXQgbWFwX2N5Y2xlX3RpbWVzIHQgfmYgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCAoZiB0Lmxhc3RfY3ljbGVfdGltZSkpKVxuOztcblxubGV0IGxvbmdfY3ljbGVzIHQgfmF0X2xlYXN0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+XG4gICAgICBpZiBUaW1lX25zLlNwYW4uKCA+PSApIHQubGFzdF9jeWNsZV90aW1lIGF0X2xlYXN0XG4gICAgICB0aGVuIFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX3RpbWUpKVxuOztcblxubGV0IGN5Y2xlX251bV9qb2JzIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMpKVxuOztcblxubGV0IGN5Y2xlX2NvdW50IHQgPSB0LmN5Y2xlX2NvdW50XG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCBpbnQgPVxuICB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDwtIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gaW50XG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCA9XG4gIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG47O1xuXG5sZXQgc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgZiA9IHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPC0gZlxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZXh0ZXJuYWxfam9icyAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSk7XG4gIHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgKClcbjs7XG5cbmxldCBzZXRfZXZlbnRfYWRkZWRfaG9vayB0IGYgPSB0LmV2ZW50X2FkZGVkX2hvb2sgPC0gU29tZSBmXG5sZXQgc2V0X2pvYl9xdWV1ZWRfaG9vayB0IGYgPSB0LmpvYl9xdWV1ZWRfaG9vayA8LSBTb21lIGZcblxubGV0IGNyZWF0ZV9hbGFybSB0IGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgR2MuRXhwZXJ0LkFsYXJtLmNyZWF0ZSAoZnVuICgpIC0+XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXIgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciBoZWFwX2Jsb2NrID1cbiAgICAoKiBIZXJlIHdlIGNhbiBiZSBpbiBhbnkgdGhyZWFkLCBhbmQgbWF5IG5vdCBiZSBob2xkaW5nIHRoZSBhc3luYyBsb2NrLiAgU28sIHdlIGNhblxuICAgICAgIG9ubHkgZG8gdGhyZWFkLXNhZmUgdGhpbmdzLlxuXG4gICAgICAgQnkgcHV0dGluZyBbaGVhcF9ibG9ja10gaW4gW2V4dGVybmFsX2pvYnNdLCB3ZSBhcmUga2VlcGluZyBpdCBhbGl2ZSB1bnRpbCB0aGUgbmV4dFxuICAgICAgIHRpbWUgdGhlIGFzeW5jIHNjaGVkdWxlciBnZXRzIGFyb3VuZCB0byBkZXF1ZXVlaW5nIGl0LiAgQ2FsbGluZ1xuICAgICAgIFt0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBlbnN1cmVzIHRoYXQgd2lsbCBoYXBwZW4gaW4gc2hvcnQgb3JkZXIuICBUaHVzLFxuICAgICAgIHdlIGFyZSBub3QgZHJhbWF0aWNhbGx5IGluY3JlYXNpbmcgdGhlIGxpZmV0aW1lIG9mIFtoZWFwX2Jsb2NrXSwgc2luY2UgdGhlIE9DYW1sXG4gICAgICAgcnVudGltZSBhbHJlYWR5IHJlc3VycmVjdGVkIFtoZWFwX2Jsb2NrXSBzbyB0aGF0IHdlIGNvdWxkIHJlZmVyIHRvIGl0IGhlcmUuICBUaGVcbiAgICAgICBPQ2FtbCBydW50aW1lIGFscmVhZHkgcmVtb3ZlZCB0aGUgZmluYWxpemVyIGZ1bmN0aW9uIHdoZW4gaXQgbm90aWNlZCBbaGVhcF9ibG9ja11cbiAgICAgICBjb3VsZCBiZSBmaW5hbGl6ZWQsIHNvIHRoZXJlIGlzIG5vIGluZmluaXRlIGxvb3AgaW4gd2hpY2ggd2UgYXJlIGNhdXNpbmcgdGhlXG4gICAgICAgZmluYWxpemVyIHRvIHJ1biBhZ2Fpbi4gIEFsc28sIE9DYW1sIGRvZXMgbm90IGltcG9zZSBhbnkgcmVxdWlyZW1lbnQgb24gZmluYWxpemVyXG4gICAgICAgZnVuY3Rpb25zIHRoYXQgdGhleSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIGJsb2NrLCBzbyBpdCdzIGZpbmUgdGhhdCB3ZSBrZWVwXG4gICAgICAgW2hlYXBfYmxvY2tdIGFyb3VuZCB1bnRpbCBsYXRlci4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGhlYXBfYmxvY2tcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyXSBiZWNhdXNlIHRoZSBsYXR0ZXJcbiAgICAgaGFzIGl0cyBvd24gd3JhcHBlciBhcm91bmQgW0NhbWwuR2MuZmluYWxpc2VdIHRvIHJ1biBmaW5hbGl6ZXJzIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBDYW1sLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB0IHggZiA9IGFkZF9maW5hbGl6ZXJfbGFzdCB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgZlxuXG4oKiogW2ZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kXSBzZXRzIHRoZSBudW1iZXIgb2Ygbm9ybWFsIGpvYnMgYWxsb3dlZCB0byBydW4gaW4gdGhpc1xuICAgIGN5Y2xlIHRvIHplcm8uICBUaHVzLCBhZnRlciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgam9iIGNvbXBsZXRlcywgdGhlIHNjaGVkdWxlciB3aWxsXG4gICAgc3dpdGNoIHRvIGxvdyBwcmlvcml0eSBqb2JzIGFuZCB0aGVuIGVuZCB0aGUgY3VycmVudCBjeWNsZS4gKilcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCB0ID1cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIDBcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfm5vdyA9XG4gIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2ludGVybmFsIHQudGltZV9zb3VyY2UgfnRvXzpub3cgfnNlbmRfZXhuXG47O1xuXG5sZXQgcnVuX2N5Y2xlIHQgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcInJ1bl9jeWNsZSBzdGFydGluZ1wiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIHQuY3ljbGVfY291bnQgPC0gdC5jeWNsZV9jb3VudCArIDE7XG4gIHQuY3ljbGVfc3RhcnQgPC0gbm93O1xuICB0LmluX2N5Y2xlIDwtIHRydWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQueWllbGQgKCk7XG4gIGxldCBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGUgPSBudW1fam9ic19ydW4gdCBpblxuICBMaXN0Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIExpc3QuaXRlciB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICB0LmluX2N5Y2xlIDwtIGZhbHNlO1xuICBpZiBkZWJ1Z1xuICB0aGVuXG4gICAgRGVidWcubG9nXG4gICAgICBcInJ1bl9jeWNsZSBmaW5pc2hlZFwiXG4gICAgICAodW5jYXVnaHRfZXhuIHQsIGlzX3NvbWUgKG5leHRfdXBjb21pbmdfZXZlbnQgdCkpXG4gICAgICBbJXNleHBfb2Y6IEVycm9yLnQgb3B0aW9uICogYm9vbF1cbjs7XG5cbmxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBzdGFydGluZ1wiO1xuICBsZXQgdCA9IHQgKCkgaW5cbiAgaWYgaXNfZGVhZCB0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGNhbm5vdCBwcm9jZWVkIC0tIHNjaGVkdWxlciBpcyBkZWFkXCJcbiAgICAgICAgICB+c2NoZWR1bGVyOih0IDogdCldO1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIHJ1bl9jeWNsZSB0O1xuICAgIGFkdmFuY2VfY2xvY2sgdCB+bm93OihUaW1lX25zLm5vdyAoKSk7XG4gICAgaWYgY2FuX3J1bl9hX2pvYiB0IHRoZW4gbG9vcCAoKVxuICBpblxuICBsb29wICgpO1xuICAoKiBSZXNldCB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dCB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgd2hlbiB3ZSdyZSBub3QgaW5cbiAgICAgYSBqb2IsIFtjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gbWFpbl9leGVjdXRpb25fY29udGV4dF0uICopXG4gIHNldF9leGVjdXRpb25fY29udGV4dCB0IHQubWFpbl9leGVjdXRpb25fY29udGV4dDtcbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBmaW5pc2hlZFwiO1xuICBPcHRpb24uaXRlciAodW5jYXVnaHRfZXhuIHQpIH5mOkVycm9yLnJhaXNlXG47O1xuXG5sZXQgbWFrZV9hc3luY191bnVzYWJsZSAoKSA9XG4gIGxldCB0ID0gIXRfcmVmIGluXG4gIHQuY2hlY2tfYWNjZXNzXG4gIDwtIFNvbWVcbiAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJXNleHAgXCJBc3luYyBzY2hlZHVsZXIgaXMgdW51c2FibGUgZHVlIHRvIFttYWtlX2FzeW5jX3VudXNhYmxlXVwiXSlcbjs7XG5cbmxldCByZXNldF9pbl9mb3JrZWRfcHJvY2VzcyAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzXCI7XG4gICgqIFRoZXJlIGlzIG5vIG5lZWQgdG8gZW1wdHkgW21haW5fbW9uaXRvcl9ob2xlXS4gKilcbiAgU2NoZWR1bGVyLih0X3JlZiA6PSBjcmVhdGUgKCkpXG47O1xuXG5sZXQgY2hlY2tfaW52YXJpYW50cyB0ID0gdC5jaGVja19pbnZhcmlhbnRzXG5sZXQgc2V0X2NoZWNrX2ludmFyaWFudHMgdCBiID0gdC5jaGVja19pbnZhcmlhbnRzIDwtIGJcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgdCBiID0gdC5yZWNvcmRfYmFja3RyYWNlcyA8LSBiXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCB0LnlpZWxkXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/KG1heV9yZXR1cm5faW1tZWRpYXRlbHkgPSBmYWxzZSkgdCA9XG4gIGlmIG1heV9yZXR1cm5faW1tZWRpYXRlbHkgJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIEJ2YXIud2FpdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci55aWVsZF9ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgY291bnRcIiAobiA6IGludCldXG4gIGVsc2UgaWYgbiA9IDFcbiAgdGhlbiBzdGFnZSAoZnVuIHQgLT4geWllbGQgdClcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X3VudGlsX3lpZWxkID0gcmVmIG4gaW5cbiAgICBzdGFnZSAoZnVuIHQgLT5cbiAgICAgIGRlY3IgY291bnRfdW50aWxfeWllbGQ7XG4gICAgICBpZiAhY291bnRfdW50aWxfeWllbGQgPiAwXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvdW50X3VudGlsX3lpZWxkIDo9IG47XG4gICAgICAgIHlpZWxkIHQpKSlcbjs7XG5cbmxldCB0b3RhbF9jeWNsZV90aW1lIHQgPVxuICAoKiBBZGp1c3QgZm9yIHRoZSBmYWN0IHRoZSBjYWxsZXIncyBwcm9iYWJseSBhbiBBc3luYyBqb2IuICopXG4gIGlmIHQuaW5fY3ljbGVcbiAgdGhlbiAoXG4gICAgbGV0IHRoaXNfY3ljbGVfdGltZSA9IFRpbWVfbnMuKGRpZmYgKG5vdyAoKSkgdC5jeWNsZV9zdGFydCkgaW5cbiAgICBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIHRoaXNfY3ljbGVfdGltZSkpXG4gIGVsc2UgdC50b3RhbF9jeWNsZV90aW1lXG47O1xuXG5tb2R1bGUgVmVyeV9sb3dfcHJpb3JpdHlfd29yayA9IHN0cnVjdFxuICBtb2R1bGUgV29ya2VyX3Jlc3VsdCA9IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5FeGVjX3Jlc3VsdFxuXG5cbiAgbGV0IHJlYyBydW4gdCA9IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmc6MV8wMDBcblxuICBhbmQgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIHlpZWxkX3RoZW5fcnVuIHRcbiAgICBlbHNlIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHdvcmtlciA9IERlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgICAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcblxuICBhbmQgeWllbGRfdGhlbl9ydW4gdCA9XG4gICAgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiBEZWZlcnJlZC51cG9uICh5aWVsZCB0KSAoZnVuICgpIC0+IHJ1biB0KVxuXG4gIGFuZCBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHdvcmtlci5leGVjdXRpb25fY29udGV4dCk7XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIChcbiAgICAgIERlcXVlLmVucXVldWVfZnJvbnQgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIHdvcmtlcjtcbiAgICAgIHlpZWxkX3RoZW5fcnVuIHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgLSAxIGluXG4gICAgICBtYXRjaCB3b3JrZXIuZXhlYyAoKSB3aXRoXG4gICAgICB8IEZpbmlzaGVkIC0+IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgTm90X2ZpbmlzaGVkIC0+IHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgIE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJ0KTtcbiAgICAgICAgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcbiAgOztcblxuICBsZXQgZW5xdWV1ZSB+ZiA9XG4gICAgbGV0IHQgPSB0ICgpIGluXG4gICAgbGV0IHF1ZXVlID0gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgbGV0IHJ1bm5pbmcgPSBub3QgKERlcXVlLmlzX2VtcHR5IHF1ZXVlKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSB+cHJpb3JpdHk6TG93XG4gICAgaW5cbiAgICBEZXF1ZS5lbnF1ZXVlX2JhY2sgcXVldWUgeyBleGVjdXRpb25fY29udGV4dDsgZXhlYyA9IGYgfTtcbiAgICBpZiBub3QgcnVubmluZyB0aGVuIGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBydW4gdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfYmVuY2ggPSBzdHJ1Y3RcbiAgbGV0IGFkdmFuY2VfY2xvY2sgPSBhZHZhbmNlX2Nsb2NrXG5lbmRcblxubGV0IGluX2N5Y2xlIHQgPSB0LmluX2N5Y2xlXG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXJcblxubGV0IGVucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9IGVucXVldWUgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKVxubGV0IGN5Y2xlX2NvdW50ICgpID0gY3ljbGVfY291bnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnRfbnMgKCkgPSBjeWNsZV9zdGFydCAodCAoKSlcbmxldCBjeWNsZV9zdGFydCAoKSA9IFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IChjeWNsZV9zdGFydF9ucyAoKSlcbmxldCBjeWNsZV90aW1lc19ucyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6Rm4uaWRcbmxldCBjeWNsZV90aW1lcyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6VGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdFxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgKCkgPSB0b3RhbF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxhc3RfY3ljbGVfdGltZSAoKSA9IGxhc3RfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsb25nX2N5Y2xlcyB+YXRfbGVhc3QgPSBsb25nX2N5Y2xlcyAodCAoKSkgfmF0X2xlYXN0XG5sZXQgZXZlbnRfcHJlY2lzaW9uX25zICgpID0gZXZlbnRfcHJlY2lzaW9uICh0ICgpKVxubGV0IGV2ZW50X3ByZWNpc2lvbiAoKSA9IFRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGV2ZW50X3ByZWNpc2lvbl9ucyAoKSlcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSBpID1cbiAgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKSBpXG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKCkgPSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSlcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgYm9vbCA9IHNldF9yZWNvcmRfYmFja3RyYWNlcyAodCAoKSkgYm9vbFxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICgpID0gZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKHQgKCkpXG5sZXQgeWllbGQgKCkgPSB5aWVsZCAodCAoKSlcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICgpID1cbiAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKHQgKCkpXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBsZXQgeWllbGRfZXZlcnkgPSBTdGFnZWQudW5zdGFnZSAoeWllbGRfZXZlcnkgfm4pIGluXG4gIGxldCB0ID0gdCAoKSBpblxuICBzdGFnZSAoZnVuICgpIC0+IHlpZWxkX2V2ZXJ5IHQpXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuICgpID0gbnVtX2pvYnNfcnVuICh0ICgpKVxubGV0IG51bV9wZW5kaW5nX2pvYnMgKCkgPSBudW1fcGVuZGluZ19qb2JzICh0ICgpKVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluID0gcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpblxuICBsZXQgbGFzdF9jeWNsZV9udW1fam9icyAoKSA9IGxhc3RfY3ljbGVfbnVtX2pvYnMgKHQgKCkpXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCAodCAoKSkgfmZcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9lbmQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9lbmQgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rICh0ICgpKSB+ZlxuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmZcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dDEgZXhlY3V0aW9uX2NvbnRleHQgfmYgeCA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dDEgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHhcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IFNjaGVkdWxlclxuIiwiKCoqIFNjaGVkdWxlIGpvYnMgdG8gcnVuIGF0IGEgdGltZSBpbiB0aGUgZnV0dXJlLlxuXG4gICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gdXNlcyBhIGhlYXAgb2YgZXZlbnRzLCBvbmUgZm9yIGVhY2ggam9iIHRoYXQgbmVlZHMgdG9cbiAgICBydW4gaW4gdGhlIGZ1dHVyZS4gIFRoZSBBc3luYyBzY2hlZHVsZXIgaXMgcmVzcG9uc2libGUgZm9yIHdha2luZyB1cCBhdCB0aGUgcmlnaHQgdGltZVxuICAgIHRvIHJ1biB0aGUgam9icy4gKilcblxub3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBUaW1lb3V0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENsb2NrID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gICgqKiBbcnVuX2F0IHRpbWUgZiBhXSBydW5zIFtmIGFdIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgW3RpbWVdLiAgSWYgW3RpbWVdIGlzIGluIHRoZVxuICAgICAgcGFzdCwgdGhlbiBbcnVuX2F0XSB3aWxsIGltbWVkaWF0ZWx5IHNjaGVkdWxlIGEgam9iIFt0XSB0aGF0IHdpbGwgcnVuIFtmIGFdLiAgSW4gbm9cbiAgICAgIHNpdHVhdGlvbiB3aWxsIFtydW5fYXRdIGFjdHVhbGx5IGNhbGwgW2ZdIGl0c2VsZi4gIFRoZSBjYWxsIHRvIFtmXSB3aWxsIGFsd2F5cyBiZSBpblxuICAgICAgYW5vdGhlciBqb2IuICopXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW3J1bl9hZnRlcl0gaXMgbGlrZSBbcnVuX2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhblxuICAgICAgYWJzb2x1dGUgdGltZS4gKilcbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFthdCB0aW1lXSByZXR1cm5zIGEgZGVmZXJyZWQgW2RdIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhcyBzb29uIGFzIHBvc3NpYmxlXG4gICAgICBhZnRlciBbdGltZV0uICopXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2FmdGVyXSBpcyBsaWtlIFthdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW4gYWJzb2x1dGVcbiAgICAgIHRpbWUuICopXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbd2l0aF90aW1lb3V0IHNwYW4gZF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhZnRlciBlaXRoZXJcbiAgICAgIFtzcGFuXSBlbGFwc2VzIG9yIFtkXSBpcyBkZXRlcm1pbmVkLCByZXR1cm5pbmcgZWl0aGVyIFtgVGltZW91dF0gb3IgW2BSZXN1bHRdXG4gICAgICBkZXBlbmRpbmcgb24gd2hpY2ggb25lIHN1Y2NlZWRlZCBmaXJzdC4gIEF0IHRoZSB0aW1lIHRoZSByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLCBib3RoIHRoaW5ncyBtYXkgaGF2ZSBoYXBwZW5lZCwgaW4gd2hpY2ggY2FzZSBbYFJlc3VsdF0gaXMgZ2l2ZW5cbiAgICAgIHByZWZlcmVuY2UuICopXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG5cbiAgKCoqIEV2ZW50cyBwcm92aWRlIHZhcmlhbnRzIG9mIFtydW5fYXRdIGFuZCBbcnVuX2FmdGVyXSB3aXRoIHRoZSBhYmlsaXR5IHRvIGFib3J0IG9yXG4gICAgICByZXNjaGVkdWxlIGFuIGV2ZW50IHRoYXQgaGFzbid0IHlldCBoYXBwZW5lZC4gIE9uY2UgYW4gZXZlbnQgaGFwcGVucyBvciBpcyBhYm9ydGVkLFxuICAgICAgQXN5bmMgZG9lc24ndCB1c2UgYW55IHNwYWNlIGZvciB0cmFja2luZyBpdC4gKilcbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgKCoqIElmIFtzdGF0dXNdIHJldHVybnMgW1NjaGVkdWxlZF9hdCB0aW1lXSwgaXQgaXMgcG9zc2libGUgdGhhdCBbdGltZSA8IFRpbWUubm93ICgpXVxuICAgICAgICBpZiBBc3luYydzIHNjaGVkdWxlciBoYXNuJ3QgeWV0IGdvdHRlbiB0aGUgY2hhbmNlIHRvIHVwZGF0ZSBpdHMgY2xvY2ssIGUuZy4sIGR1ZVxuICAgICAgICB0byB1c2VyIGpvYnMgcnVubmluZy4gKilcbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuXG4gICAgKCoqIExldCBbdCA9IHJ1bl9hdCB0aW1lIGYgel0uICBBdCBbdGltZV0sIHRoaXMgcnVucyBbZiB6XSBhbmQgdHJhbnNpdGlvbnMgW3N0YXR1cyB0XVxuICAgICAgICB0byBbSGFwcGVuZWQgaF0sIHdoZXJlIFtoXSBpcyByZXN1bHQgb2YgW2Ygel0uXG5cbiAgICAgICAgTW9yZSBwcmVjaXNlbHksIGF0IFt0aW1lXSwgcHJvdmlkZWQgW2Fib3J0IHQgYV0gaGFzIG5vdCBwcmV2aW91c2x5IGJlZW4gY2FsbGVkLFxuICAgICAgICB0aGlzIHdpbGwgY2FsbCBbZiB6XSwgd2l0aCB0aGUgZ3VhcmFudGVlIHRoYXQgW3N0YXR1cyB0ID0gU2NoZWR1bGVkX2F0IHRpbWVdLiAgSWZcbiAgICAgICAgW2Ygel0gcmV0dXJucyBbaF0gYW5kIGRpZCBub3QgY2FsbCBbYWJvcnQgdCBhXSwgdGhlbiBbc3RhdHVzIHRdIGJlY29tZXMgW0hhcHBlbmVkXG4gICAgICAgIGhdLiAgSWYgW2Ygel0gY2FsbHMgW2Fib3J0IHQgYV0sIHRoZW4gdGhlIHJlc3VsdCBvZiBbZl0gaXMgaWdub3JlZCwgYW5kIFtzdGF0dXMgdF1cbiAgICAgICAgaXMgW0Fib3J0ZWQgYV0uXG5cbiAgICAgICAgSWYgW2Ygel0gcmFpc2VzLCB0aGVuIFtzdGF0dXMgdF0gZG9lcyBub3QgdHJhbnNpdGlvbiBhbmQgcmVtYWlucyBbU2NoZWR1bGVkX2F0XG4gICAgICAgIHRpbWVdLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtydW5fYXRdIHdhc1xuICAgICAgICBjYWxsZWQuICopXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICAoKiogW2Fib3J0IHRdIGNoYW5nZXMgW3N0YXR1cyB0XSB0byBbQWJvcnRlZF0gYW5kIHJldHVybnMgW09rXSwgdW5sZXNzIFt0XVxuICAgICAgICBwcmV2aW91c2x5IGhhcHBlbmVkIG9yIHdhcyBwcmV2aW91c2x5IGFib3J0ZWQuICopXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuXG4gICAgKCoqIFthYm9ydF9leG4gdCBhXSByZXR1cm5zIFt1bml0XSBpZiBbYWJvcnQgdCBhID0gYE9rXSwgYW5kIG90aGVyd2lzZSByYWlzZXMuICopXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgKCoqIFthYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSldLiAqKVxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICAoKiogW3Jlc2NoZWR1bGVfYXQgdF0gYW5kIFtyZXNjaGVkdWxlX2FmdGVyIHRdIGNoYW5nZSB0aGUgdGltZSB0aGF0IFt0XSB3aWxsIGZpcmUsIGlmXG4gICAgICAgIHBvc3NpYmxlLCBhbmQgaWYgbm90LCBnaXZlIGEgcmVhc29uIHdoeS4gIExpa2UgW3J1bl9hdF0sIGlmIHRoZSByZXF1ZXN0ZWQgdGltZSBpc1xuICAgICAgICBpbiB0aGUgcGFzdCwgdGhlIGV2ZW50IHdpbGwgYmUgc2NoZWR1bGVkIHRvIHJ1biBpbW1lZGlhdGVseS4gIElmIFtyZXNjaGVkdWxlX2F0IHRcbiAgICAgICAgdGltZSA9IE9rXSwgdGhlbiBzdWJzZXF1ZW50bHkgW3NjaGVkdWxlZF9hdCB0ID0gdGltZV0uICAqKVxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgICgqKiBbYXQgdGltZV0gICAgaXMgW3J1bl9hdCAgICB0aW1lIGlnbm9yZSAoKV0uXG4gICAgICAgIFthZnRlciB0aW1lXSBpcyBbcnVuX2FmdGVyIHRpbWUgaWdub3JlICgpXS5cblxuICAgICAgICBZb3Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIHRoZSBbcnVuXypdIGZ1bmN0aW9ucywgd2hpY2ggYWxsb3cgeW91IHRvXG4gICAgICAgIHN5bmNocm9ub3VzbHkgdXBkYXRlIHN0YXRlIHZpYSBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gd2hlbiB0aGUgZXZlbnRcbiAgICAgICAgdHJhbnNpdGlvbnMgdG8gW0hhcHBlbmVkXS4gIFRoYXQgaXMsIHRoZXJlIGlzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW46XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IHJ1bl9hdCB0aW1lIGYgKCkgXX1cblxuICAgICAgICBhbmQ6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IGF0IHRpbWUgaW5cbiAgICAgICAgICBmaXJlZCB0XG4gICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBmICgpXG4gICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpIF19XG5cbiAgICAgICAgV2l0aCBbcnVuX2F0XSwgaWYgW3N0YXR1cyB0ID0gSGFwcGVuZWRdLCBvbmUga25vd3MgdGhhdCBbZl0gaGFzIHJ1bi4gIFdpdGggW2F0XVxuICAgICAgICBhbmQgW2ZpcmVkXSwgb25lIGRvZXMgbm90IGtub3cgd2hldGhlciBbZl0gaGFzIHlldCBydW47IGl0IG1heSBzdGlsbCBiZSBzY2hlZHVsZWRcbiAgICAgICAgdG8gcnVuLiAgVGh1cywgd2l0aCBbYXRdIGFuZCBbZmlyZWRdLCBpdCBpcyBlYXN5IHRvIGludHJvZHVjZSBhIHJhY2UuICBGb3JcbiAgICAgICAgZXhhbXBsZSwgY29uc2lkZXIgdGhlc2UgdHdvIGNvZGUgc25pcHBldHM6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LmFmdGVyIChzZWMgMi4pIGluXG4gICAgICAgICAgdXBvbiAoRXZlbnQuZmlyZWQgdCkgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKClcbiAgICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiVGltZXIgZmlyZWRcIik7XG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LnJ1bl9hZnRlciAoc2VjIDIuKSBwcmludGYgXCJUaW1lciBmaXJlZFwiIGluXG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAgSW4gYm90aCBzbmlwcGV0cywgaWYgW0V2ZW50LmFib3J0XSByZXR1cm5zIFtPa10sIFwiVGltZXIgZmlyZWRcIiBpcyBuZXZlciBwcmludGVkLlxuICAgICAgICBIb3dldmVyLCB0aGUgZmlyc3Qgc25pcHBldCBtaWdodCBwcmludCBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIgYW5kIHRoZW5cbiAgICAgICAgXCJUaW1lciBmaXJlZFwiLiAgVGhpcyBjb25mdXNlZCBvcmRlcmluZyBjYW5ub3QgaGFwcGVuIHdpdGggW0V2ZW50LnJ1bl9hZnRlcl0uICopXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0XG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICBlbmRcblxuICAoKiogW2F0X3ZhcnlpbmdfaW50ZXJ2YWxzIGYgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgbmV4dCBlbGVtZW50IGJlY29tZXNcbiAgICAgIGRldGVybWluZWQgYnkgY2FsbGluZyBbZiAoKV0gYW5kIHdhaXRpbmcgZm9yIHRoYXQgYW1vdW50IG9mIHRpbWUsIGFuZCB0aGVuIGxvb3BpbmdcbiAgICAgIHRvIGRldGVybWluZSBzdWJzZXF1ZW50IGVsZW1lbnRzLiAgVGhlIHN0cmVhbSB3aWxsIGVuZCBhZnRlciBbc3RvcF0gYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbYXRfaW50ZXJ2YWxzIGludGVydmFsID9zdGFydCA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBlbGVtZW50cyB3aWxsIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZCBhdCBub25uZWdhdGl2ZSBpbnRlZ2VyIG11bHRpcGxlcyBvZiBbaW50ZXJ2YWxdIGFmdGVyIHRoZSBbc3RhcnRdIHRpbWUsXG4gICAgICB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkOlxuXG4gICAgICB7dlxuICAgICAgICBzdGFydCArIDAgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDEgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDIgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDMgKiBpbnRlcnZhbFxuICAgICAgICAuLi5cbiAgICAgIHZ9XG5cbiAgICAgIE5vdGUgdGhhdCBvbmx5IGVsZW1lbnRzIHRoYXQgYXJlIHN0cmljdGx5IGluIHRoZSBmdXR1cmUgZXZlciBiZWNvbWUgZGV0ZXJtaW5lZC5cbiAgICAgIEluIHBhcnRpY3VsYXIsIGlmIFtzdGFydF0gaXMgbm90IGluIHRoZSBmdXR1cmUsIG9yIFtzdGFydF0gaXMgbm90IHByb3ZpZGVkLFxuICAgICAgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGVsZW1lbnQgYmVmb3JlIHRoZSBbaW50ZXJ2YWxdIGhhcyBwYXNzZWQuXG5cbiAgICAgIElmIHRoZSBpbnRlcnZhbCBpcyB0b28gc21hbGwgb3IgdGhlIENQVSBpcyB0b28gbG9hZGVkLCBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNraXBcbiAgICAgIHVudGlsIHRoZSBuZXh0IHVwY29taW5nIG11bHRpcGxlIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgW3N0YXJ0XS4gKilcbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmICgpXSBldmVyeSBbc3Bhbl0gYW1vdW50IG9mIHRpbWUgc3RhcnRpbmcgd2hlblxuICAgICAgW3N0YXJ0XSBiZWNvbWVzIGRldGVybWluZWQgYW5kIHN0b3BwaW5nIHdoZW4gW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFtldmVyeSddXG4gICAgICB3YWl0cyB1bnRpbCB0aGUgb3V0Y29tZSBvZiBbZiAoKV0gYmVjb21lcyBkZXRlcm1pbmVkIGJlZm9yZSB3YWl0aW5nIGZvciB0aGUgbmV4dFxuICAgICAgW3NwYW5dLlxuXG4gICAgICBJdCBpcyBndWFyYW50ZWVkIHRoYXQgaWYgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZCwgZXZlbiBkdXJpbmcgZXZhbHVhdGlvbiBvZiBbZl0sXG4gICAgICB0aGVuIFtmXSB3aWxsIG5vdCBiZSBjYWxsZWQgYWdhaW4gYnkgYSBzdWJzZXF1ZW50IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC5cblxuICAgICAgSXQgaXMgYW4gZXJyb3IgZm9yIFtzcGFuXSB0byBiZSBub25wb3NpdGl2ZS5cblxuICAgICAgW2NvbnRpbnVlX29uX2Vycm9yXSBjb250cm9scyB3aGF0IHNob3VsZCBoYXBwZW4gaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6ZmFsc2VdLCBpdGVyYXRpb24gb25seSBjb250aW51ZXMgaWYgW2ZdIHN1Y2Nlc3NmdWxseVxuICAgICAgcmV0dXJucyBhIGRlZmVycmVkIGFuZCB0aGF0IGRlZmVycmVkIGlzIGRldGVybWluZWQuXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0sIGl0ZXJhdGlvbiBhbHNvIGNvbnRpbnVlcyBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIElmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uIGFzeW5jaHJvbm91c2x5LCB0aGlzIG1heSBjYXVzZSB1cyB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAgICBuZXh0IGl0ZXJhdGlvbiB3aGlsZSB0aGUgcHJldmlvdXMgY2FsbCB0byBbZl0gaXMgc3RpbGwgcnVubmluZy5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbZXZlcnknXSB3YXNcbiAgICAgIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uXG5cbiAgICAgIElmIFtmaW5pc2hlZF0gaXMgc3VwcGxpZWQsIFtldmVyeSddIHdpbGwgZmlsbCBpdCBvbmNlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZDogW3N0YXJ0XSwgW3N0b3BdLCBhbmQgdGhlIG91dGNvbWUgb2YgdGhlIGZpbmFsIGNhbGwgdG8gW2ZdLiAqKVxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXZlcnkgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gaXNcbiAgICAgIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpXS4gKilcbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YoKV0gYXQgaW5jcmVtZW50cyBvZiBbc3RhcnQgKyBpICpcbiAgICAgIHNwYW5dIGZvciBub25uZWdhdGl2ZSBpbnRlZ2VycyBbaV0sIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuXG4gICAgICBJZiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBub3QgZGV0ZXJtaW5lZCBmYXN0IGVub3VnaCB0aGVuIHRoZSBuZXh0IGludGVydmFsKHMpXG4gICAgICBhcmUgc2tpcHBlZCBzbyB0aGF0IHRoZXJlIGFyZSBuZXZlciBtdWx0aXBsZSBjb25jdXJyZW50IGludm9jYXRpb25zIG9mIFtmXSBpblxuICAgICAgZmxpZ2h0LlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgIFtydW5fYXRfaW50ZXJ2YWxzJ10gd2FzIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZl0gaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAge1tcbiAgICAgICAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpIF19ICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZHVyYXRpb25fb2YgZl0gaW52b2tlcyBbZiAoKV0gYW5kIG1lYXN1cmVzIGhvdyBsb25nIGl0IHRha2VzIGZyb20gdGhlIGludm9jYXRpb25cbiAgICAgIHRvIGFmdGVyIHRoZSBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIG1lYXN1cmVtZW50IGlzIG5vdCBleGFjdDsgYmVjYXVzZSBpdCBpbnZvbHZlcyBhbiBhZGRpdGlvbmFsIG1hcCBvbiB0aGVcbiAgICAgIGRlZmVycmVkLCB0aGUgdGltaW5nIGFsc28gaW5jbHVkZXMgdGhlIGR1cmF0aW9uIG9mIGpvYnMgaW4gdGhlIGpvYiBxdWV1ZSB3aGVuIFtmICgpXVxuICAgICAgaXMgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbmVuZFxuXG4oKiogW0Nsb2NrX2RlcHJlY2F0ZWRdIGlzIHVzZWQgaW4gW1JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VdIHRvIGNyZWF0ZSBhIGNsb2NrXG4gICAgbW9kdWxlIGluIHdoaWNoIGFsbCBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuICopXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuICBlbmRcblxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuZW5kXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9jaykgOiBDbG9ja19kZXByZWNhdGVkID0gQ1xuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2tfZGVwcmVjYXRlZCkgOiBDbG9jayA9IENcbmVuZCA6XG5zaWcgZW5kKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENsb2NrID0gQ2xvY2tfaW50Zi5DbG9ja1xubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IENsb2NrX2ludGYuQ2xvY2tfZGVwcmVjYXRlZFxuXG5tb2R1bGUgT3JfdGltZW91dCA9IENsb2NrX2ludGYuT3JfdGltZW91dFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHRpbWVfc291cmNlICgpID0gKFNjaGVkdWxlci50ICgpKS50aW1lX3NvdXJjZSB8PiBUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91c1xubGV0IGFmdGVyIHNwYW4gPSBUaW1lX3NvdXJjZS5hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbmxldCBhdCB0aW1lID0gVGltZV9zb3VyY2UuYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCBjb21wdXRlX3NwYW4gPVxuICBUaW1lX3NvdXJjZS5hdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGNvbXB1dGVfc3BhblxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgaW50ZXJ2YWwgPVxuICBUaW1lX3NvdXJjZS5hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWxcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gVGltZV9zb3VyY2UucnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbmxldCBydW5fYXQgdGltZSBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgYVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbCBmXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscydcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgICh0aW1lX3NvdXJjZSAoKSlcbiAgICBpbnRlcnZhbFxuICAgIGZcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgc3BhbiBkID0gVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0ICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBkXG5sZXQgZHVyYXRpb25fb2YgZiA9IFRpbWVfc291cmNlLmR1cmF0aW9uX29mICh0aW1lX3NvdXJjZSAoKSkgZlxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX3NvdXJjZS5FdmVudFxuXG4gIGxldCBhZnRlciBzcGFuID0gYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG4gIGxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxuICBsZXQgYXQgdGltZSA9IGF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuICBsZXQgcnVuX2F0IHRpbWUgZiB6ID0gcnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIHpcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIGkgYiA9XG4gICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICAgIHRoZW4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICBlbHNlIGYgaSBiIHQuKGkpID4+PiBmdW4gYiAtPiBsb29wIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgbGV0JW1hcCBicyA9IGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT4gZiBpIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpIGluXG4gIEFycmF5Lm9mX2xpc3QgKENvcmUuTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCA/aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG50eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbmxldCBjaGFuZ2UgdCBrIH5mID1cbiAgbGV0JW1hcCBvcHQgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5jaGFuZ2UgdCBrIH5mOihmdW4gXyAtPiBvcHQpXG47O1xuXG5sZXQgdXBkYXRlIHQgayB+ZiA9XG4gIGxldCVtYXAgZGF0YSA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLnNldCB0IH5rZXk6ayB+ZGF0YVxuOztcblxubGV0IGl0ZXJfa2V5cyA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLmtleXMgdCkgfmZcbmxldCBpdGVyID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAuZGF0YSB0KSB+ZlxubGV0IGl0ZXJpID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAudG9fYWxpc3QgdCkgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB7IGtleSA6ICdhXG4gICAgOyBkYXRhIDogJ2JcbiAgICA7IG11dGFibGUgcmVzdWx0IDogJ2Mgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5lbmRcblxubGV0IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZiA9XG4gIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgdCBpblxuICBsZXQgc2VxdWVuY2UgPSBNYXAudG9fc2VxdWVuY2Ugfm9yZGVyOmBJbmNyZWFzaW5nX2tleSB0IGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDpCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuICAgICAgfmY6KGZ1biBzIChrZXksIGRhdGEpIH5rIC0+XG4gICAgICAgIHVwb24gKGYgfmtleSB+ZGF0YSkgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGsgc1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmFkZF9leG5cbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBrIHMpKVxuICAgICAgfmZpbmlzaDooZnVuIHggLT5cbiAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAoQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZSB4KSkpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8gLT5cbiAgICBsZXQgam9icyA9IHJlZiBbXSBpblxuICAgIGxldCBqb2JfbWFwID1cbiAgICAgIE1hcC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIGxldCBqb2IgPSB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IE5vbmUgfSBpblxuICAgICAgICBqb2JzIDo9IGpvYiA6OiAham9icztcbiAgICAgICAgam9iKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9XG4gICAgICBMaXN0Lml0ZXIgfmhvdyAoQmFzZS5MaXN0LnJldiAham9icykgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgeyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBfIH0gYXMgam9iIC0+XG4gICAgICAgICAgbGV0JW1hcCB4ID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgam9iLnJlc3VsdCA8LSB4KVxuICAgIGluXG4gICAgTWFwLmZpbHRlcl9tYXAgam9iX21hcCB+ZjpKb2IucmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyX2tleXMgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYga2V5IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IG1hcGkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIFNvbWUgeilcbjs7XG5cbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgP2hvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICA/aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biBcImNhdWdodCBleGNlcHRpb24gaW4gbWVtb2l6ZWQgZnVuY3Rpb25cIlxuOztcblxubGV0IGdlbmVyYWwgKHR5cGUgYSkgKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGYgPVxuICBsZXQgbW9kdWxlIEhhc2hhYmxlID0gKHZhbCBoYXNoYWJsZSkgaW5cbiAgbGV0IGYgPVxuICAgIE1lbW8uZ2VuZXJhbCB+aGFzaGFibGU6SGFzaGFibGUuaGFzaGFibGUgKGZ1biBhIC0+XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIChmdW4gKCkgLT4gZiBhKSlcbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG47O1xuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGYgPVxuICAgIE1lbW8udW5pdCAoZnVuICgpIC0+XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIGYpXG4gIGluXG4gIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+IGYgKCkgPj58IHJlcmFpc2UpXG47O1xuIiwib3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgT3B0aW9uLnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChTb21lIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBTb21lIGEgLT4gZiBhXG4gICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5yZXR1cm4gTm9uZSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IE9wdGlvbi5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnZXJyb3IpIHQgPSAoJ2EsICdlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIGxldCVtYXAgdDEgPSB0MVxuICBhbmQgdDIgPSB0MiBpblxuICBSZXN1bHQuY29tYmluZSB0MSB0MiB+b2sgfmVyclxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKE9rIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBPayBhIC0+IGYgYVxuICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gRGVmZXJyZWQucmV0dXJuIGVycm9yKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBmYWlsIHggPSBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIHgpXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgbWFwX2Vycm9yIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcF9lcnJvciByIH5mKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID0gTW9uaXRvci50cnlfd2l0aFxuZW5kXG5cbigqIENvcGllZCB0byBbZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSA/aG93IHQgfmYgPSBMaXN0Lml0ZXJpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgP2hvdyB0IH5mID0gTGlzdC5tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgP2hvdyB0IH5mID0gTGlzdC5tYXBpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0ID9ob3cgbiB+ZiA9IExpc3QuaW5pdCA/aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXIgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSA/aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCA/aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuIGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbGV0JWJpbmQgYiA9IG1hcGlfZiBpIGEgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIHQgKGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0XG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGxldCB0aHJvdHRsZSA9IFRocm90dGxlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyB+Y29udGludWVfb25fZXJyb3I6ZmFsc2UgaW5cbiAgICAoKiBbbG9vcF0gZm9yY2VzIHRoZSBpbnB1dCBzZXF1ZW5jZSBhbmQgZW5xdWV1ZXMgYSB0aHJvdHRsZSBqb2Igb25seSBpZiB0aGVyZSBpc1xuICAgICAgIGNhcGFjaXR5IGF2YWlsYWJsZS4gKilcbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBsZXQlYmluZCAoKSA9IFRocm90dGxlLmNhcGFjaXR5X2F2YWlsYWJsZSB0aHJvdHRsZSBpblxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gVGhyb3R0bGUuZW5xdWV1ZSB0aHJvdHRsZSAoZnVuICgpIC0+IG1hcGlfZiBpIGEpIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgdFxuICAgIH5pbml0OigwLCBpbml0KVxuICAgIH5mOihmdW4gKGksIGIpIGEgfmsgLT5cbiAgICAgIGxldCViaW5kIGIgPSBmIGkgYiBhIGluXG4gICAgICBrIChpICsgMSwgYikpXG4gICAgfmZpbmlzaDooZnVuIChfLCBiKSAtPiByZXR1cm4gYilcbjs7XG5cbigqIFtmb2xkXSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgW2ZvbGRpXSB0byBzYXZlIHRoZSBpbnRlcm1lZGlhdGUgY2xvc3VyZVxuICAgYWxsb2NhdGlvbi4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGQgdCB+aW5pdCB+ZjooZnVuIGIgYSB+ayAtPiBmIGIgYSA+Pj0gaykgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBhbGwgdCA9XG4gIGxldCVtYXAgcmVzID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhY2N1bSBkIC0+XG4gICAgICBsZXQlbWFwIGEgPSBkIGluXG4gICAgICBhIDo6IGFjY3VtKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiByZXMpXG47O1xuXG5sZXQgYWxsX3VuaXQgdCA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gdilcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZXR1cm4gTm9uZVxuICAgIHwgU29tZSAodiwgcmVzdCkgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSB2IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHJlc3QgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcmkgP2hvdyB0IH5mIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgZm9sZF9tYXBpID9ob3cgdCB+bWFwaV9mOmYgfmluaXQ6KCkgfmZvbGRfZjooZnVuICgpICgpIC0+ICgpKVxuOztcblxubGV0IG1hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpID9ob3cgdCB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKSB+aW5pdDpbXSB+Zm9sZF9mOihmdW4gYnMgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbigqIFtmaWx0ZXJfbWFwaV0gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW2ZvbGRfbWFwaV0gcmF0aGVyIHRoYW4gW21hcF0gc28gdGhhdCB3ZSBuZXZlciBuZWVkXG4gICB0byBrZWVwIGEgbG9uZyBzdHJlYW0gb2YgaW50ZXJtZWRpYXRlIFtOb25lXSByZXN1bHRzIGluIHRoZSBhY2N1bXVsYXRvciwgb25seSB0byBsYXRlclxuICAgZmlsdGVyIHRoZW0gYWxsIG91dC4gKilcbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGlcbiAgICAgIHRcbiAgICAgID9ob3dcbiAgICAgIH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmZvbGRfZjooZnVuIGJzIG1heWJlX3YgLT5cbiAgICAgICAgbWF0Y2ggbWF5YmVfdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBic1xuICAgICAgICB8IFNvbWUgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZiA+PnwgU2VxdWVuY2UuY29uY2F0XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoJW1hcCBmIGkgYSB3aXRoXG4gICAgfCB0cnVlIC0+IFNvbWUgYVxuICAgIHwgZmFsc2UgLT4gTm9uZSlcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoU2VxdWVuY2UuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVGltZSA9IFRpbWVcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIERhdGUgPSBEYXRlXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5cbmxldCBzaG93X2RlYnVnX21lc3NhZ2VzID0gcmVmIGZhbHNlXG5sZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIGZhbHNlXG5cbm1vZHVsZSBGbHVzaGVkX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYE9rXG4gICAgfCBgUmVhZGVyX2Nsb3NlZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IGNvbWJpbmUgKGwgOiB0IERlZmVycmVkLnQgbGlzdCkgPVxuICAgIGxldCVtYXAgbCA9IERlZmVycmVkLmFsbCBsIGluXG4gICAgbWF0Y2ggTGlzdC5tZW0gbCBgUmVhZGVyX2Nsb3NlZCB+ZXF1YWwgd2l0aFxuICAgIHwgdHJ1ZSAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgIHwgZmFsc2UgLT4gYE9rXG4gIDs7XG5lbmRcblxuKCogQSBbQ29uc3VtZXIudF0gYWN0cyBhcyB0aGUgbW9uaXRvciBvZiBzb21lIHByb2Nlc3MgdGhhdCByZWFkcyB2YWx1ZXMgZnJvbSBhIHBpcGUgYW5kXG4gICBwcm9jZXNzZXMgdGhlbSwgYWxsb3dpbmcgdGhhdCBwcm9jZXNzOlxuICAgLSB0byBjb21tdW5pY2F0ZSB0aGF0IGl0IGhhcyB0YWtlbiByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHZhbHVlc1xuICAgLSB0byBzaWduYWwgd2hlbiBpdCBoYXMgZmluaXNoZWQgd2l0aCB0aGUgdmFsdWVzIHRvIGludGVyZXN0ZWQgcGFydGllcyAodmlhXG4gICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdKVxuXG4gICBJdCBpcyB1c2VkIGluIHR3byBzdGVwczpcblxuICAgMS4gY2FsbGluZyBbQ29uc3VtZXIuc3RhcnRdIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29uc3VtZXIgdGFrZXMgdmFsdWVzIG91dCBvZiB0aGVcbiAgIFBpcGUgdmlhIFtyZWFkXSBvciBbcmVhZCddLlxuXG4gICAyLiBjYWxsaW5nIFtDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtXS5cblxuICAgQnkgY2FsbGluZyBbdmFsdWVzX3NlbnRfZG93bnN0cmVhbV0gb25lIGFzc2VydHMgdGhhdCB0aGUgW2Rvd25zdHJlYW1fZmx1c2hlZF0gZnVuY3Rpb25cbiAgIHN1cHBsaWVkIHRvIFtjcmVhdGVdIHdpbGwgbm93IHdhaXQgZm9yIHRoaXMgdmFsdWUuXG5cbiAgIElmIG5vIFtDb25zdW1lci50XSBpcyBzdXBwbGllZCB3aGVuIGEgdmFsdWUgaXMgcmVhZCB0aGVuIHRoZSB2YWx1ZSBpcyBkZWZpbmVkIHRvIGJlXG4gICBmbHVzaGVkIGF0IHRoYXQgdGltZS4gKilcbm1vZHVsZSBDb25zdW1lciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgcGlwZV9pZDppbnRcbiAgICAtPiBkb3duc3RyZWFtX2ZsdXNoZWQ6KHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIC0+IHRcblxuICB2YWwgcGlwZV9pZCA6IHQgLT4gaW50XG4gIHZhbCBzdGFydCA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCA6IHQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBpcGVfaWQgOiBpbnRcbiAgICA7ICgqIFt2YWx1ZXNfcmVhZF0gcmVmbGVjdHMgd2hldGhlciB2YWx1ZXMgdGhlIGNvbnN1bWVyIGhhcyByZWFkIGZyb20gdGhlIHBpcGUgaGF2ZSBiZWVuXG4gICAgICAgICBzZW50IGRvd25zdHJlYW0gb3IgaWYgbm90LCBob2xkcyBhbiBpdmFyIHRoYXQgaXMgdG8gYmUgZmlsbGVkIHdoZW4gdGhleSBhcmUuICopXG4gICAgICBtdXRhYmxlIHZhbHVlc19yZWFkIDpcbiAgICAgICAgWyBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBvZiB1bml0IEl2YXIudCBdXG4gICAgOyAoKiBbZG93bnN0cmVhbV9mbHVzaGVkICgpXSByZXR1cm5zIHdoZW4gYWxsIHByaW9yIHZhbHVlcyB0aGF0IHRoZSBjb25zdW1lciBoYXNcbiAgICAgICAgIHBhc3NlZCBkb3duc3RyZWFtIGhhdmUgYmVlbiBmbHVzaGVkIGFsbCB0aGUgd2F5IGRvd24gdGhlIGNoYWluIG9mIHBpcGVzLiAqKVxuICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIDogdW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+cGlwZV9pZDppZ25vcmVcbiAgICAgICAgfnZhbHVlc19yZWFkOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgICAgICAgICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgICB+ZG93bnN0cmVhbV9mbHVzaGVkOmlnbm9yZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQ29uc3VtZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cGlwZV9pZCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgICB7IHBpcGVfaWQ7IHZhbHVlc19yZWFkID0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW07IGRvd25zdHJlYW1fZmx1c2hlZCB9XG4gIDs7XG5cbiAgbGV0IHN0YXJ0IHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIF8gLT4gKClcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSAoSXZhci5jcmVhdGUgKCkpXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW0gdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSB3aGVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgd2hlbl9zZW50X2Rvd25zdHJlYW0gaW5cbiAgICAgIHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfcmVhZCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX3JlYWQudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgcmVhZCBhdHRlbXB0LiAgSWYgc29tZW9uZSByZWFkcyBmcm9tIGFuIGVtcHR5XG4gICAgIHBpcGUsIHRoZXkgZW5xdWV1ZSBhIFtCbG9ja2VkX3JlYWQudF0gaW4gdGhlIHF1ZXVlIG9mIFtibG9ja2VkX3JlYWRzXS4gIExhdGVyLCB3aGVuXG4gICAgIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIHBpcGUsIHRoYXQgd2lsbCBjYXVzZSBzb21lIG51bWJlciBvZiBibG9ja2VkIHJlYWRzIHRvIGJlXG4gICAgIGZpbGxlZCwgZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZS4gIFRoZSBibG9ja2VkLXJlYWQgY29uc3RydWN0b3Igc3BlY2lmaWVzIGhvdyBtYW55XG4gICAgIHZhbHVlcyBhIHJlYWQgc2hvdWxkIGNvbnN1bWUgZnJvbSB0aGUgcGlwZSB3aGVuIGl0IGdldHMgaXRzIHR1cm4uXG5cbiAgICAgSWYgYSBwaXBlIGlzIGNsb3NlZCwgdGhlbiBhbGwgYmxvY2tlZCByZWFkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIFtgRW9mXS4gKilcbiAgdHlwZSAnYSB3YW50cyA9XG4gICAgfCBaZXJvIG9mIFsgYEVvZiB8IGBPayBdIEl2YXIudFxuICAgIHwgT25lIG9mIFsgYEVvZiB8IGBPayBvZiAnYSBdIEl2YXIudFxuICAgIHwgQXRfbW9zdCBvZiBpbnQgKiBbIGBFb2YgfCBgT2sgb2YgJ2EgUXVldWUudCBdIEl2YXIudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3YW50cyA6ICdhIHdhbnRzXG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfndhbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFplcm8gXyB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICAgfCBBdF9tb3N0IChpLCBfKSAtPiBhc3NlcnQgKGkgPiAwKSkpXG4gICAgICAgIH5jb25zdW1lcjpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+IENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcikpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQmxvY2tlZF9yZWFkLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB3YW50cyBjb25zdW1lciA9IHsgd2FudHM7IGNvbnN1bWVyIH1cblxuICBsZXQgaXNfZW1wdHkgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBPbmUgaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICA7O1xuXG4gIGxldCBmaWxsX3dpdGhfZW9mIHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IE9uZSBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9mbHVzaCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX2ZsdXNoLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIGZsdXNoIG9wZXJhdGlvbiwgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgYVxuICAgICBmdXR1cmUgcmVhZC4gIElmIHNvbWVvbmUgZG9lcyBbZmx1c2hlZCBwXSBvbiBhIHBpcGUsIHRoYXQgYmxvY2tzIHVudGlsIGV2ZXJ5dGhpbmdcbiAgICAgdGhhdCdzIGN1cnJlbnRseSBpbiB0aGUgcGlwZSBhdCB0aGF0IHBvaW50IGhhcyBkcmFpbmVkIG91dCBvZiB0aGUgcGlwZS4gIFdoZW4gd2UgY2FsbFxuICAgICBbZmx1c2hlZF0sIGl0IHJlY29yZHMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRoYXQgaGFzIGJlZW4gd3JpdHRlbiBzbyBmYXIgaW5cbiAgICAgW2ZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRdLiAgV2UgZmlsbCB0aGUgW0ZsdXNoLnRdIHdpdGggW2BPa10gd2hlbiB0aGlzIGFtb3VudCBvZlxuICAgICBkYXRhIGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgcGlwZS5cblxuICAgICBBIFtCbG9ja2VkX2ZsdXNoLnRdIGNhbiBhbHNvIGJlIGZpbGxlZCB3aXRoIFtgUmVhZGVyX2Nsb3NlZF0sIHdoaWNoIGhhcHBlbnMgd2hlbiB0aGVcbiAgICAgcmVhZGVyIGVuZCBvZiB0aGUgcGlwZSBpcyBjbG9zZWQsIGFuZCB3ZSBhcmUgdGh1cyBzdXJlIHRoYXQgdGhlIHVucmVhZCBlbGVtZW50c1xuICAgICBwcmVjZWRpbmcgdGhlIGZsdXNoIHdpbGwgbmV2ZXIgYmUgcmVhZC4gKilcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgICA7IHJlYWR5IDogWyBgT2sgfCBgUmVhZGVyX2Nsb3NlZCBdIEl2YXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBmaWxsIHQgdiA9IEl2YXIuZmlsbCB0LnJlYWR5IHZcbmVuZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7ICgqIFtpZF0gaXMgYW4gaW50ZWdlciB1c2VkIHRvIGRpc3Rpbmd1aXNoIHBpcGVzIHdoZW4gZGVidWdnaW5nLiAqKVxuICAgIGlkIDogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudFxuICA7ICgqIFtpbmZvXSBpcyB1c2VyLXByb3ZpZGVkIGFyYml0cmFyeSBzZXhwLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqKVxuICAgIG11dGFibGUgaW5mbyA6IFNleHAudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyAoKiBbYnVmZmVyXSBob2xkcyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUgcGlwZSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlYWQuICopXG4gICAgbXV0YWJsZSBidWZmZXIgOiAnYSBRdWV1ZS50XG4gIDsgKCogW3NpemVfYnVkZ2V0XSBnb3Zlcm5zIHB1c2hiYWNrIG9uIHdyaXRlcnMgdG8gdGhlIHBpcGUuXG5cbiAgICAgICBUaGVyZSBpcyAqbm8qIGludmFyaWFudCB0aGF0IFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHNpemVfYnVkZ2V0XS4gIFRoZXJlIGlzIG5vXG4gICAgICAgaGFyZCB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHN0dWZmZWQgaW50byB0aGUgW2J1ZmZlcl0uXG4gICAgICAgVGhpcyBpcyBkdWUgdG8gdGhlIHdheSB3ZSBoYW5kbGUgd3JpdGVzLiAgV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlIHZhbHVlc1xuICAgICAgIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uICBBZnRlciB0aGUgd3JpdGUsIGlmIFtRdWV1ZS5sZW5ndGhcbiAgICAgICBidWZmZXIgPD0gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlciB3aWxsIGJlIG5vdGlmaWVkIHRvIGNvbnRpbnVlIHdyaXRpbmcuXG4gICAgICAgQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbbGVuZ3RoIHQgPiB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGUgd2lsbCBibG9jayB1bnRpbCB0aGVcbiAgICAgICBwaXBlIGlzIHVuZGVyIGJ1ZGdldC4gKilcbiAgICBtdXRhYmxlIHNpemVfYnVkZ2V0IDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuICBbcHVzaGJhY2tdIGlzIGZ1bGwgaWZmIFtsZW5ndGggdCA8PSB0LnNpemVfYnVkZ2V0IHx8IGlzX2Nsb3NlZCB0XS4gKilcbiAgICBtdXRhYmxlIHB1c2hiYWNrIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbbnVtX3ZhbHVlc19yZWFkXSBrZWVwcyB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiByZWFkXG4gICAgICAgZnJvbSB0aGUgcGlwZS4gIFdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IG92ZXJmbG93IGluIFtudW1fdmFsdWVzX3JlYWRdLiAgWW91J2RcbiAgICAgICBuZWVkIHRvIHdyaXRlIDJeNjIgZWxlbWVudHMgdG8gdGhlIHBpcGUsIHdoaWNoIHdvdWxkIHRha2UgYWJvdXQgMTQ2IHllYXJzLCBhdCBhXG4gICAgICAgZmxvdyByYXRlIG9mIDEgc2l6ZS11bml0L25hbm9zZWNvbmQuICopXG4gICAgbXV0YWJsZSBudW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgOyAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgICByZWFkLiAgRm9yIGVhY2ggYmxvY2tlZCBmbHVzaCwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUgaW4gb3JkZXIgdG8gZmlsbCB0aGUgZmx1c2ggaXMgICAgICAgICAgICAgICAgICAgICAgICA6XG5cbiAgICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgICBLZWVwaW5nIHRoZSBkYXRhIGluIHRoaXMgZm9ybSBhbGxvd3MgdXMgdG8gY2hhbmdlIGEgc2luZ2xlIGZpZWxkKG51bV92YWx1ZXNfcmVhZClcbiAgICAgICB3aGVuIHdlIGNvbnN1bWUgdmFsdWVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgcXVldWUgb2ZcbiAgICAgICBmbHVzaGVzLiAqKVxuICAgIGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmluZm86aWdub3JlXG4gICAgICB+YnVmZmVyOmlnbm9yZVxuICAgICAgfnNpemVfYnVkZ2V0OihjaGVjayAoZnVuIHNpemVfYnVkZ2V0IC0+IGFzc2VydCAoc2l6ZV9idWRnZXQgPj0gMCkpKVxuICAgICAgfnB1c2hiYWNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBwdXNoYmFjayAtPlxuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEJvb2wuZXF1YWxcbiAgICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgcHVzaGJhY2spXG4gICAgICAgICAgICAgICAobGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHB1c2hiYWNrID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGJ1ZmZlciA9IGluaXRpYWxfYnVmZmVyXG4gICAgOyBudW1fdmFsdWVzX3JlYWQgPSAwXG4gICAgOyBibG9ja2VkX2ZsdXNoZXMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGJsb2NrZWRfcmVhZHMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGNvbnN1bWVycyA9IFtdXG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkcyA9IEJhZy5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCA9XG4gIGlmIHNpemVfYnVkZ2V0IDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibmVnYXRpdmUgc2l6ZV9idWRnZXRcIiAoc2l6ZV9idWRnZXQgOiBpbnQpXVxuICBlbHNlIHNpemVfYnVkZ2V0XG47O1xuXG5sZXQgY3JlYXRlID9zaXplX2J1ZGdldCA/aW5mbyAoKSA9XG4gIGxldCBzaXplX2J1ZGdldCA9XG4gICAgbWF0Y2ggc2l6ZV9idWRnZXQgd2l0aFxuICAgIHwgU29tZSB2IC0+IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHZcbiAgICB8IE5vbmUgLT4gMFxuICBpblxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5jcmVhdGUgKCkpIGluXG4gICgqIGluaXRpYWxseSwgdGhlIHBpcGUgZG9lcyBub3QgcHVzaGJhY2sgKilcbiAgSXZhci5maWxsIHQucHVzaGJhY2sgKCk7XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgdCwgdFxuOztcblxubGV0IHVwZGF0ZV9wdXNoYmFjayB0ID1cbiAgaWYgbGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgKCogd2UganVzdCBjbGVhcmVkIHRoZSBidWZmZXIsIHNvIG1heSBuZWVkIHRvIGZpbGwgW3QucHVzaGJhY2tdICopXG4gICAgY2xvc2UgdClcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgdXBvbiAoZiB3KSAoZnVuICgpIC0+IGNsb3NlIHcpO1xuICByXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlciA/c2l6ZV9idWRnZXQgfmNsb3NlX29uX2V4Y2VwdGlvbiBmID1cbiAgaWYgbm90IGNsb3NlX29uX2V4Y2VwdGlvblxuICB0aGVuIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZlxuICBlbHNlIChcbiAgICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAoZnVuICgpIC0+IGYgdylcbiAgICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgICAgY2xvc2UgdztcbiAgICAgICAgICAgcmV0dXJuICgpKSk7XG4gICAgcilcbjs7XG5cbmxldCBjcmVhdGVfd3JpdGVyID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgIH5ydW46XG4gICAgICAgICBgU2NoZWR1bGVcbiAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvbiAoQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCBjb25zdW1lcikgKGZ1biBmbHVzaF9yZXN1bHQgLT5cbiAgICAgICAgICAgICBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggZmx1c2hfcmVzdWx0KSk7XG4gICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbigqIFtjb25zdW1lX2FsbCB0XSByZWFkcyBhbGwgdGhlIGVsZW1lbnRzIGluIFt0XS4gKilcbmxldCBjb25zdW1lX2FsbCB0IGNvbnN1bWVyID1cbiAgbGV0IHJlc3VsdCA9IHQuYnVmZmVyIGluXG4gIHQuYnVmZmVyIDwtIFF1ZXVlLmNyZWF0ZSAoKTtcbiAgdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBRdWV1ZS5sZW5ndGggcmVzdWx0O1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lX29uZSB0IGNvbnN1bWVyID1cbiAgYXNzZXJ0IChsZW5ndGggdCA+PSAxKTtcbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYnVmZmVyIGluXG4gIHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgMTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyID1cbiAgYXNzZXJ0IChtYXhfcXVldWVfbGVuZ3RoID49IDApO1xuICBpZiBtYXhfcXVldWVfbGVuZ3RoID49IGxlbmd0aCB0XG4gIHRoZW4gY29uc3VtZV9hbGwgdCBjb25zdW1lclxuICBlbHNlIChcbiAgICB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIG1heF9xdWV1ZV9sZW5ndGg7XG4gICAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICAgIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgfmNhcGFjaXR5Om1heF9xdWV1ZV9sZW5ndGggKCkgaW5cbiAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6dC5idWZmZXIgfmRzdDpyZXN1bHQgfmxlbjptYXhfcXVldWVfbGVuZ3RoICgpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXRfc2l6ZV9idWRnZXQgdCBzaXplX2J1ZGdldCA9XG4gIGxldCBzaXplX2J1ZGdldCA9IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0IGluXG4gIHQuc2l6ZV9idWRnZXQgPC0gc2l6ZV9idWRnZXQ7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgZmlsbF9ibG9ja2VkX3JlYWRzIHQgPVxuICB3aGlsZSAobm90IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpKSAmJiBub3QgKGlzX2VtcHR5IHQpIGRvXG4gICAgbGV0IGJsb2NrZWRfcmVhZCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9yZWFkcyBpblxuICAgIGxldCBjb25zdW1lciA9IGJsb2NrZWRfcmVhZC5jb25zdW1lciBpblxuICAgIG1hdGNoIGJsb2NrZWRfcmVhZC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYE9rXG4gICAgfCBPbmUgaXZhciAtPiBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSlcbiAgICB8IEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpKVxuICBkb25lXG47O1xuXG4oKiBjaGVja3MgYWxsIGludmFyaWFudHMsIGNhbGxzIGEgcGFzc2VkIGluIGYgdG8gaGFuZGxlIGEgd3JpdGUsIHRoZW4gdXBkYXRlcyByZWFkcyBhbmRcbiAgIHB1c2hiYWNrICopXG5sZXQgc3RhcnRfd3JpdGUgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcIndyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwid3JpdGUgdG8gY2xvc2VkIHBpcGVcIiB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpmcm9tIH5kc3Q6dC5idWZmZXIgKCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW4gdCB+ZnJvbSA9XG4gIHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuaXRlciBmcm9tIH5mOihmdW4geCAtPiBRdWV1ZS5lbnF1ZXVlIHQuYnVmZmVyIHgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxuKCogW3dyaXRlJ10gaXMgdXNlZCBpbnRlcm5hbGx5ICopXG5sZXQgd3JpdGUnIHQgcSA9IHRyYW5zZmVyX2luIHQgfmZyb206cVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IHJlYyBzdGFydCAoKSA9IGxvb3AgfnJlbWFpbmluZzptYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gICAgYW5kIGxvb3AgfnJlbWFpbmluZyA9XG4gICAgICBpZiByZW1haW5pbmcgPSAwXG4gICAgICB0aGVuIHJldHVybiAoKSA+Pj4gZnVuICgpIC0+IHN0YXJ0ICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaGVkICgpXG4gICAgICAgIHwgYE9rIGEgLT5cbiAgICAgICAgICBmIGE7XG4gICAgICAgICAgbG9vcCB+cmVtYWluaW5nOihyZW1haW5pbmcgLSAxKVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IHN0YXJ0ICgpKVxuICAgIGluXG4gICAgc3RhcnQgKCkpXG47O1xuXG5sZXQgZHJhaW4gdCA9IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbmxldCBkcmFpbl9hbmRfY291bnQgdCA9IGZvbGQnIHQgfmluaXQ6MCB+ZjooZnVuIHN1bSBxIC0+IHJldHVybiAoc3VtICsgUXVldWUubGVuZ3RoIHEpKVxuXG5sZXQgcmVhZF9hbGwgaW5wdXQgPVxuICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCVtYXAgKCkgPVxuICAgIGl0ZXInIGlucHV0IH5mOihmdW4gcSAtPlxuICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIHJlc3VsdFxuOztcblxubGV0IHRvX2xpc3QgciA9IHJlYWRfYWxsIHIgPj58IFF1ZXVlLnRvX2xpc3RcblxubGV0IHRvX3N0cmVhbV9kZXByZWNhdGVkIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayB0IH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpXG4gICAgPj4+IGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIG9mIFtvZl9zdHJlYW1fZGVwcmVjYXRlZF0gZG9lcyBhcyBtdWNoIGJhdGNoaW5nIGFzIHBvc3NpYmxlLiAgSXRcbiAgIGdyYWJzIGFzIG1hbnkgaXRlbXMgYXMgYXJlIGF2YWlsYWJsZSBpbnRvIGFuIGludGVybmFsIHF1ZXVlLiAgT25jZSBpdCBoYXMgZ3JhYmJlZFxuICAgZXZlcnl0aGluZywgaXQgd3JpdGVzIGl0IHRvIHRoZSBwaXBlIGFuZCB0aGVuIGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgbmV4dCBlbGVtZW50IGZyb21cbiAgIHRoZSBzdHJlYW0uXG5cbiAgIFRoZXJlJ3Mgbm8gcG9zc2liaWxpdHkgdGhhdCB3ZSdsbCBzdGFydmUgdGhlIHBpcGUgcmVhZGluZyBhbiBlbmRsZXNzIHN0cmVhbSwganVzdFxuICAgYWNjdW11bGF0aW5nIHRoZSBlbGVtZW50cyBpbnRvIG91ciBwcml2YXRlIHF1ZXVlIGZvcmV2ZXIgd2l0aG91dCBldmVyIHdyaXRpbmcgdGhlbVxuICAgZG93bnN0cmVhbSB0byB0aGUgcGlwZS4gIFdoeT8gYmVjYXVzZSB3aGlsZSB3ZSdyZSBydW5uaW5nLCB0aGUgc3RyZWFtLXByb2R1Y2VyICppc24ndCpcbiAgIHJ1bm5pbmcgLS0gdGhlcmUgYXJlIG5vIEFzeW5jIGJsb2NrIHBvaW50cyBpbiB0aGUgcXVldWUtYWNjdW11bGF0b3IgbG9vcC4gIFNvIHRoZVxuICAgcXVldWUtYWNjdW11bGF0b3IgbG9vcCB3aWxsIGV2ZW50dWFsbHkgY2F0Y2ggdXAgdG8gdGhlIGN1cnJlbnQgc3RyZWFtIHRhaWwsIGF0IHdoaWNoXG4gICBwb2ludCB3ZSdsbCBkbyB0aGUgcGlwZS13cml0ZSBhbmQgdGhlbiBibG9jayBvbiB0aGUgc3RyZWFtLi4uIHRodXMgZ2l2aW5nIHRoZVxuICAgc3RyZWFtLXByb2R1Y2VyIGEgY2hhbmNlIHRvIG1ha2UgbW9yZSBlbGVtZW50cy5cblxuICAgT25lIGNhbid0IGltcGxlbWVudCBbb2Zfc3RyZWFtXSB1c2luZyBbU3RyZWFtLml0ZXJdIG9yIFtTdHJlYW0uaXRlciddIGJlY2F1c2UgeW91XG4gICBuZWVkIHRvIGJlIGFibGUgdG8gc3RvcCBlYXJseSB3aGVuIHRoZSBjb25zdW1lciBjbG9zZXMgdGhlIHBpcGUuICBBbHNvLCB1c2luZyBlaXRoZXJcbiAgIG9mIHRob3NlIHdvdWxkIGVudGFpbCBzaWduaWZpY2FudGx5IG1vcmUgZGVmZXJyZWQgb3ZlcmhlYWQsIHdoZXJlYXMgdGhlIGJlbG93XG4gICBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgZGVmZXJyZWQgb25seSB3aGVuIGl0IG5lZWRzIHRvIHdhaXQgZm9yIGRhdGEgZnJvbSB0aGUgc3RyZWFtLiAqKVxubGV0IG9mX3N0cmVhbV9kZXByZWNhdGVkIHMgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgdHJhbnNmZXIgKCkgPVxuICAgIGlmIG5vdCAoUXVldWUuaXNfZW1wdHkgcSlcbiAgICB0aGVuXG4gICAgICAoKiBDYW4gbm90IHB1c2hiYWNrIG9uIHRoZSBzdHJlYW0sIHNvIGlnbm9yZSB0aGUgcHVzaGJhY2sgb24gdGhlIHBpcGUuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAod3JpdGUnIHcgcSlcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIGFzc2VydCAobm90IChpc19jbG9zZWQgdykpO1xuICAgIGxldCBuZXh0X2RlZmVycmVkID0gU3RyZWFtLm5leHQgcyBpblxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgbmV4dF9kZWZlcnJlZCB3aXRoXG4gICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgdXBvbiBuZXh0X2RlZmVycmVkIGNoZWNrX2Nsb3NlZF9sb29wX25leHRcbiAgYW5kIGNoZWNrX2Nsb3NlZF9sb29wX25leHQgbmV4dCA9IGlmIG5vdCAoaXNfY2xvc2VkIHcpIHRoZW4gbG9vcF9uZXh0IG5leHRcbiAgYW5kIGxvb3BfbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgY2xvc2Ugd1xuICAgIHwgQ29ucyAoeCwgcykgLT5cbiAgICAgIFF1ZXVlLmVucXVldWUgcSB4O1xuICAgICAgbG9vcCBzXG4gIGluXG4gIGxvb3AgcztcbiAgclxuOztcblxubGV0IHRyYW5zZmVyX2dlblxuICAgICAgKHJlYWRfbm93IDogP2NvbnN1bWVyOkNvbnN1bWVyLnQgLT4gXyBSZWFkZXIudCAtPiBfKVxuICAgICAgd3JpdGVcbiAgICAgIGlucHV0XG4gICAgICBvdXRwdXRcbiAgICAgIH5mXG4gID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudFxuICB0aGVuIChcbiAgICBpbnZhcmlhbnQgaW5wdXQ7XG4gICAgaW52YXJpYW50IG91dHB1dCk7XG4gIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0IH5kb3duc3RyZWFtOm91dHB1dCBpblxuICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgKCogV2hlbiB3ZSdyZSBkb25lIHdpdGggW2lucHV0XSwgd2UgdW5saW5rIHRvIHJlbW92ZSBwb2ludGVycyBmcm9tXG4gICAgIFtvdXRwdXRdIHRvIFtpbnB1dF0sIHdoaWNoIHdvdWxkIGNhdXNlIGEgc3BhY2UgbGVhayBpZiB3ZSBoYWQgc2luZ2xlIGxvbmctbGl2ZWRcbiAgICAgb3V0cHV0IGludG8gd2hpY2ggd2UgdHJhbnNmZXIgbG90cyBvZiBzaG9ydC1saXZlZCBpbnB1dHMuICopXG4gIGxldCB1bmxpbmsgKCkgPSBMaW5rLnVubGlua191cHN0cmVhbSBsaW5rIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCBvdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNsb3NlX3JlYWQgaW5wdXQ7XG4gICAgICB1bmxpbmsgKCk7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgfmNvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+XG4gICAgICAgICAgdW5saW5rICgpO1xuICAgICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgICAgfCBgT2sgeCAtPiBmIHggY29udGludWVcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICBjaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICAgICAgICA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+IERlZmVycmVkLlF1ZXVlLmZpbHRlcl9tYXAgcSB+Zilcbjs7XG5cbmxldCBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT5cbiAgICBrIChRdWV1ZS5maWx0ZXJfbWFwIHEgfmY6KGZ1biB4IC0+IGlmIGlzX3JlYWRfY2xvc2VkIGlucHV0IHRoZW4gTm9uZSBlbHNlIGYgeCkpKVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQlbWFwIGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mOihmdW4gYWNjdW0gYSAtPlxuICAgIGxldCBhY2N1bSwgYiA9IGYgYWNjdW0gYSBpblxuICAgIGFjY3VtLCBTb21lIGIpXG47O1xuXG5sZXQgZmlsdGVyIGlucHV0IH5mID0gZmlsdGVyX21hcCBpbnB1dCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5vZl9saXN0IGwpIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBlbXB0eSAoKSA9IG9mX2xpc3QgW11cblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHJlYWRlciwgd3JpdGVyID0gY3JlYXRlICgpIGluXG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIHg7XG4gIGNsb3NlIHdyaXRlcjtcbiAgcmVhZGVyXG47O1xuXG5sZXQgdW5mb2xkIH5pbml0OnMgfmYgPVxuICAoKiBUbyBnZXQgc29tZSBiYXRjaGluZywgd2UgcnVuIHRoZSBjb250aW51YXRpb24gaW1tZWRpYXRlbHkgaWYgdGhlIGRlZmVycmVkIGlzXG4gICAgIGRldGVybWluZWQuICBIb3dldmVyLCB3ZSBhbHdheXMgY2hlY2sgZm9yIHB1c2hiYWNrLiAgQmVjYXVzZSBzaXplIGJ1ZGdldCBjYW4ndCBiZVxuICAgICBpbmZpbml0ZSwgdGhlIGJlbG93IGxvb3AgaXMgZ3VhcmFudGVlZCB0byBldmVudHVhbGx5IHlpZWxkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gIGxldCAoID4+PX4gKSBkIGYgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgfCBOb25lIC0+IGQgPj49IGZcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgZiBzXG4gICAgICA+Pj1+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuICgpXG4gICAgICB8IFNvbWUgKGEsIHMpIC0+XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgdGhlbiByZXR1cm4gKCkgZWxzZSB3cml0ZSB3cml0ZXIgYSA+Pj1+IGZ1biAoKSAtPiBsb29wIHNcbiAgICBpblxuICAgIGxvb3Agcylcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgZW5xdWV1ZV9uIHNlcXVlbmNlIGkgPVxuICAgICAgaWYgaSA8PSAwXG4gICAgICB0aGVuIHNlcXVlbmNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzZXF1ZW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZXF1ZW5jZVxuICAgICAgICB8IFNvbWUgKGEsIHNlcXVlbmNlKSAtPlxuICAgICAgICAgIFF1ZXVlLmVucXVldWUgd3JpdGVyLmJ1ZmZlciBhO1xuICAgICAgICAgIGVucXVldWVfbiBzZXF1ZW5jZSAoaSAtIDEpKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHNlcXVlbmNlID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgfHwgU2VxdWVuY2UuaXNfZW1wdHkgc2VxdWVuY2VcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgc3RhcnRfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgIGxldCVtYXAgeCA9IHJlYWQgaW5wdXQgaW5cbiAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeClcbiAgICBpblxuICAgIHVwb24gaW5pdGlhbF9wdXNoIHBvcF9oZWFwX2FuZF9sb29wO1xuICAgIHJcbjs7XG5cbmxldCBjb25jYXRfcGlwZSBpbnB1dHMgPVxuICBsZXQgciA9XG4gICAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgICAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXRzIH5kb3duc3RyZWFtOncgaW5cbiAgICAgIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAgICAgaXRlciB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuICBpblxuICB1cG9uIChjbG9zZWQgcikgKGZ1biAoKSAtPiBjbG9zZSBpbnB1dHMpO1xuICByXG47O1xuXG5sZXQgY29uY2F0IGlucHV0cyA9XG4gIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG47O1xuXG5sZXQgZm9yayB0IH5wdXNoYmFja191c2VzID1cbiAgbGV0IHJlYWRlcjAsIHdyaXRlcjAgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHJlYWRlcjEsIHdyaXRlcjEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gIXNvbWVfcmVhZGVyX3dhc19jbG9zZWQgaW5cbiAgICAgIG1hdGNoJW1hcFxuICAgICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgICAgWyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMDsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjEgXVxuICAgICAgd2l0aFxuICAgICAgfCBgUmVhZGVyX2Nsb3NlZCAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGVyZSBjb3VsZCBoYXZlIGJlZW4gbm8gcGVuZGluZyBpdGVtcyBpbiBbd3JpdGVyMF0gbm9yIGluXG4gICAgICAgICAgIFt3cml0ZXIxXSwgaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBoYXZlIGhhZCBhIGNsb3NlZCBwaXBlIHRoYXQgbWlzc2VkIHNvbWVcbiAgICAgICAgICAgd3JpdGVzLCBidXQgW0ZsdXNoZWRfcmVzdWx0LmNvbWJpbmVdIHdvdWxkIHN0aWxsIGhhdmUgcmV0dXJuZWQgW2BPa10gKilcbiAgICAgICAgaWYgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCB0aGVuIGBSZWFkZXJfY2xvc2VkIGVsc2UgYE9rKVxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQgc3RpbGxfb3BlbiA9IFsgd3JpdGVyMDsgd3JpdGVyMSBdIGluXG4gICAgIGxldCBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuID1cbiAgICAgICAoKiBPbmx5IGNhbGwgW2ZpbHRlcl0gYW5kIHJlYWxsb2NhdGUgbGlzdCBpZiBzb21ldGhpbmcgd2lsbCBnZXQgZmlsdGVyZWQgKilcbiAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIHN0aWxsX29wZW4gfmY6aXNfY2xvc2VkKVxuICAgICAgIHRoZW4gc3RpbGxfb3BlblxuICAgICAgIGVsc2UgKFxuICAgICAgICAgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA6PSB0cnVlO1xuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBMaXN0LmZpbHRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBub3QgKGlzX2Nsb3NlZCB3KSkgaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlbiB0aGVuIGNsb3NlIHQ7XG4gICAgICAgICBzdGlsbF9vcGVuKVxuICAgICBpblxuICAgICBsZXQlYmluZCBzdGlsbF9vcGVuID1cbiAgICAgICBmb2xkJyB0IH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgfmluaXQ6c3RpbGxfb3BlbiB+ZjooZnVuIHN0aWxsX29wZW4gcXVldWUgLT5cbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuXG4gICAgICAgICB0aGVuIHJldHVybiBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHB1c2hiYWNrX3VzZXMgd2l0aFxuICAgICAgICAgICAgIHwgYEZhc3RfY29uc3VtZXJfb25seSAtPiBEZWZlcnJlZC5hbnkgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgICAgfCBgQm90aF9jb25zdW1lcnMgLT4gRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHcgfmZyb206cXVldWUpO1xuICAgICAgICAgICBzdGlsbF9vcGVuKSlcbiAgICAgaW5cbiAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6Y2xvc2U7XG4gICAgIHJldHVybiAoKSk7XG4gIHJlYWRlcjAsIHJlYWRlcjFcbjs7XG5cbmxldCBzZXRfaW5mbyB0IGluZm8gPSBzZXRfaW5mbyB0IChTb21lIGluZm8pXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7IGN1cnJlbnRfdmFsdWUgOiAnYSBNb3B0aW9uLnRcbiAgOyB0YWtlbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgOyBtdXRhYmxlIHZhbHVlX2F2YWlsYWJsZSA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHZhbHVlX2F2YWlsYWJsZSB0ID0gSXZhci5yZWFkIHQudmFsdWVfYXZhaWxhYmxlXG5sZXQgaXNfZW1wdHkgdCA9IE1vcHRpb24uaXNfbm9uZSB0LmN1cnJlbnRfdmFsdWVcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfICh0IDogXyB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmN1cnJlbnRfdmFsdWU6KGNoZWNrIChNb3B0aW9uLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dGFrZW46KGNoZWNrIChCdmFyLmludmFyaWFudCBVbml0LmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgfnZhbHVlX2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCB2YWx1ZV9hdmFpbGFibGUpXG4gICAgICAgICAgICAgfmV4cGVjdDooTW9wdGlvbi5pc19zb21lIHQuY3VycmVudF92YWx1ZSkpKSlcbjs7XG5cbmxldCBwZWVrIHQgPSBNb3B0aW9uLmdldCB0LmN1cnJlbnRfdmFsdWVcblxubGV0IHBlZWtfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnBlZWtfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWVcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFslc2V4cCAocGVlayB0IDogYSBvcHRpb24pXVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkX3dyaXRlKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0IHJlYWRfb25seSAodCA6ICgnYSwgWz4gcmVhZCBdKSB0KSA9ICh0IDo+ICgnYSwgcmVhZCkgdClcbmxldCB3cml0ZV9vbmx5ICh0IDogKCdhLCBbPiB3cml0ZSBdKSB0KSA9ICh0IDo+ICgnYSwgd3JpdGUpIHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IGN1cnJlbnRfdmFsdWUgPSBNb3B0aW9uLmNyZWF0ZSAoKVxuICA7IHRha2VuID0gQnZhci5jcmVhdGUgKClcbiAgOyB2YWx1ZV9hdmFpbGFibGUgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgdGFrZV9ub25lbXB0eSB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IHIgPSBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWUgaW5cbiAgTW9wdGlvbi5zZXRfbm9uZSB0LmN1cnJlbnRfdmFsdWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQudGFrZW4gKCk7XG4gIHQudmFsdWVfYXZhaWxhYmxlIDwtIEl2YXIuY3JlYXRlICgpO1xuICByXG47O1xuXG5sZXQgdGFrZV9ub3dfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnRha2VfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICB0YWtlX25vbmVtcHR5IHRcbjs7XG5cbmxldCB0YWtlX25vdyB0ID0gaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIFNvbWUgKHRha2Vfbm9uZW1wdHkgdCkgZWxzZSBOb25lXG5cbmxldCByZWMgdGFrZSB0ID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiAodGFrZV9ub25lbXB0eSB0KVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgdGFrZSB0KVxuOztcblxubGV0IHNldCB0IHYgPVxuICBNb3B0aW9uLnNldF9zb21lIHQuY3VycmVudF92YWx1ZSB2O1xuICBJdmFyLmZpbGxfaWZfZW1wdHkgdC52YWx1ZV9hdmFpbGFibGUgKClcbjs7XG5cbmxldCB1cGRhdGUgdCB+ZiA9IHNldCB0IChmIChwZWVrIHQpKVxubGV0IHVwZGF0ZV9leG4gdCB+ZiA9IHNldCB0IChmIChwZWVrX2V4biB0KSlcbmxldCB0YWtlbiB0ID0gQnZhci53YWl0IHQudGFrZW5cblxubGV0IHJlYyBwdXQgdCB2ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIChcbiAgICBzZXQgdCB2O1xuICAgIHJldHVybiAoKSlcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB0YWtlbiB0IGluXG4gICAgcHV0IHQgdilcbjs7XG5cbmxldCBwaXBlX3doZW5fcmVhZHkgdCA9XG4gIGxldCByLCB3ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB3KVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGFrZV9ub3cgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoKVxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBQaXBlLndyaXRlIHcgeCBpblxuICAgICAgICBsb29wICgpKVxuICAgIGVsc2UgcmV0dXJuICgpXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yIChsb29wICgpKTtcbiAgclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogdW5pdCBJdmFyLnRcbiAgICA7IHJlc3VsdCA6ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9vcl9lcnJvciBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOlxuICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgY2xvc2Vfc3RhcnRlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgZG9uJ3RfcmVjb25uZWN0IDogdW5pdCBJdmFyLnRcbiAgICAgIDsgYWRkcmVzc19lcXVhbCA6ICdhZGRyZXNzIC0+ICdhZGRyZXNzIC0+IGJvb2xcbiAgICAgIDsgc2V4cF9vZl9hZGRyZXNzIDogJ2FkZHJlc3MgLT4gU2V4cC50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNlcnZlcl9uYW1lIHQgPSB0LmV2ZW50X2hhbmRsZXIuc2VydmVyX25hbWVcbiAgICBsZXQgaGFuZGxlX2V2ZW50IHQgZXZlbnQgPSBFdmVudC5oYW5kbGUgZXZlbnQgdC5ldmVudF9oYW5kbGVyXG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICB0aGVuIHJldHVybiBgQ2xvc2Vfc3RhcnRlZFxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT4gcmV0dXJuIChgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpKVxuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19lcnJvciA9XG4gICAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19lcnJvciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgcHJldmlvdXNfZXJyIC0+IHNhbWVfZXJyb3IgZXJyIHByZXZpb3VzX2VyclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByZXZpb3VzX2Vycm9yIDo9IFNvbWUgZXJyO1xuICAgICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfZXJyb3JcbiAgICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICBlbHNlIGhhbmRsZV9ldmVudCB0IChGYWlsZWRfdG9fY29ubmVjdCBlcnIpKVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPiBsb29wICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQgPVxuICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgKHR5cGUgYWRkcmVzcylcbiAgICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgICA/KG9uX2V2ZW50ID0gZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgICA/KHJhbmRvbV9zdGF0ZSA9IGBTdGF0ZSBSYW5kb20uU3RhdGUuZGVmYXVsdClcbiAgICAgICAgICA/KHRpbWVfc291cmNlID0gVGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgIH5hZGRyZXNzOihtb2R1bGUgQWRkcmVzcyA6IEFkZHJlc3Mgd2l0aCB0eXBlIHQgPSBhZGRyZXNzKVxuICAgICAgICAgIGdldF9hZGRyZXNzXG4gICAgICA9XG4gICAgICBsZXQgZXZlbnRfaGFuZGxlciA9IHsgRXZlbnQuSGFuZGxlci5zZXJ2ZXJfbmFtZTsgb25fZXZlbnQgfSBpblxuICAgICAgbGV0IGRlZmF1bHRfcmV0cnlfZGVsYXkgPVxuICAgICAgICBGbi5jb25zdCAoVGltZV9ucy5TcGFuLm9mX3NlYyAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gMC4xIGVsc2UgMTAuKSlcbiAgICAgIGluXG4gICAgICBsZXQgbm9uX3JhbmRvbWl6ZWRfZGVsYXkgPSBPcHRpb24udmFsdWUgcmV0cnlfZGVsYXkgfmRlZmF1bHQ6ZGVmYXVsdF9yZXRyeV9kZWxheSBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5X3NwYW4gPVxuICAgICAgICBtYXRjaCByYW5kb21fc3RhdGUgd2l0aFxuICAgICAgICB8IGBOb25fcmFuZG9tIC0+IG5vbl9yYW5kb21pemVkX2RlbGF5XG4gICAgICAgIHwgYFN0YXRlIHJhbmRvbV9zdGF0ZSAtPlxuICAgICAgICAgIGZ1biAoKSAtPlxuICAgICAgICAgICAgbGV0IHNwYW4gPSBub25fcmFuZG9taXplZF9kZWxheSAoKSBpblxuICAgICAgICAgICAgbGV0IHNwYW4gPSBUaW1lX25zLlNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IFJhbmRvbS5TdGF0ZS5mbG9hdCByYW5kb21fc3RhdGUgKHNwYW4gKi4gMC4zKSBpblxuICAgICAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgICAgICBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgdGhlbiBzcGFuICsuIGRpc3RhbmNlXG4gICAgICAgICAgICAgIGVsc2Ugc3BhbiAtLiBkaXN0YW5jZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9zZWMgd2FpdFxuICAgICAgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheSAoKSA9IFRpbWVfc291cmNlLmFmdGVyIHRpbWVfc291cmNlIChyZXRyeV9kZWxheV9zcGFuICgpKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICB7IGV2ZW50X2hhbmRsZXJcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBoYW5kbGVfZXZlbnQgdCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHRcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBEb24ndF9yZWNvbm5lY3QgLT5cbiAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykgLT5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIChgT2sgY29ubik7XG4gICAgICAgICAgaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKVxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm5cbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGhhbmRsZV9ldmVudCB0IERpc2Nvbm5lY3RlZFxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAoKiB3YWl0cyB1bnRpbCBbcmV0cnlfZGVsYXkgKCldIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgdGltZSBqdXN0IGJlZm9yZSB3ZSBsYXN0XG4gICAgICAgICAgICAgdHJpZWQgdG8gY29ubmVjdCByYXRoZXIgdGhhbiB0aGUgdGltZSB3ZSBub3RpY2VkIGJlaW5nIGRpc2Nvbm5lY3RlZCwgc28gdGhhdCBpZlxuICAgICAgICAgICAgIGEgbG9uZy1saXZlZCBjb25uZWN0aW9uIGRpZXMsIHdlIHdpbGwgYXR0ZW1wdCB0byByZWNvbm5lY3QgaW1tZWRpYXRlbHkuICopXG4gICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgaWYgSXZhci5pc19mdWxsIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgYFJlcGVhdCAoKSk7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWQgdCA9XG4gICAgICAoKiBUYWtlIGNhcmUgbm90IHRvIHJldHVybiBhIGNvbm5lY3Rpb24gdGhhdCBpcyBrbm93biB0byBiZSBjbG9zZWQgYXQgdGhlIHRpbWVcbiAgICAgICAgIFtjb25uZWN0ZWRdIHdhcyBjYWxsZWQuICBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjbGllbnQgY29kZSB0aGF0IGJlaGF2ZXMgbGlrZVxuICAgICAgICAge1tcbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICA+Pj0gZnVuIGMxIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgICAgIFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIGMxXG4gICAgICAgICAgICgqIGF0IHRoaXMgcG9pbnQgd2UgYXJlIGluIGEgcmFjZSB3aXRoIHRoZSBzYW1lIGNhbGwgaW5zaWRlXG4gICAgICAgICAgICAgIHBlcnNpc3RlbnRfY2xpZW50Lm1sICopXG4gICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICAoKiBkZXBlbmRpbmcgb24gaG93IHRoZSByYWNlIHR1cm5zIG91dCwgd2UgZG9uJ3Qgd2FudCB0byBnZXQgYSBjbG9zZWQgY29ubmVjdGlvblxuICAgICAgICAgICAgICBoZXJlICopXG4gICAgICAgICAgID4+PSBmdW4gYzIgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICBdfVxuICAgICAgICAgVGhpcyBkb2Vzbid0IHJlbW92ZSB0aGUgcmFjZSBjb25kaXRpb24sIGJ1dCBpdCBtYWtlcyBpdCBsZXNzIGxpa2VseSB0byBoYXBwZW4uXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbGV0IGQgPSBJdmFyLnJlYWQgdC5jb25uIGluXG4gICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGRcbiAgICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgICAgICB8IGBPayBjb25uIC0+IHJldHVybiBjb25uKVxuICAgICAgICB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgfCBTb21lIChgT2sgY29ubikgLT5cbiAgICAgICAgICBpZiBDb25uLmlzX2Nsb3NlZCBjb25uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogZ2l2ZSB0aGUgcmVjb25uZWN0aW9uIGxvb3AgYSBjaGFuY2UgdG8gb3ZlcndyaXRlIHRoZSBpdmFyICopXG4gICAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm4gPj49IGxvb3BcbiAgICAgICAgICBlbHNlIHJldHVybiBjb25uXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3VycmVudF9jb25uZWN0aW9uIHQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuY29ubikgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBOb25lXG4gICAgICB8IFNvbWUgKGBPayBjb25uKSAtPiBTb21lIGNvbm5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcblxuICAgIGxldCBjbG9zZSB0ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgIHRoZW5cbiAgICAgICAgKCogQW5vdGhlciBjYWxsIHRvIGNsb3NlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuICBXYWl0IGZvciBpdCB0byBmaW5pc2guICopXG4gICAgICAgIGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgICBJdmFyLnJlYWQgdC5jb25uXG4gICAgICAgID4+PSBmdW4gY29ubl9vcHQgLT5cbiAgICAgICAgKG1hdGNoIGNvbm5fb3B0IHdpdGhcbiAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgfCBgT2sgY29ubiAtPiBDb25uLmNsb3NlIGNvbm4pXG4gICAgICAgID4+fCBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQgPVxuICAgICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJQZXJzaXN0ZW50IGNvbm5lY3Rpb24gY2xvc2VkXCJdXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdCA9XG4gICAgICBpZiBpc19jbG9zZWQgdFxuICAgICAgdGhlbiByZXR1cm4gY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggY3VycmVudF9jb25uZWN0aW9uIHQgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIG5vdCAoQ29ubi5pc19jbG9zZWQgeCkgLT4gcmV0dXJuIChPayB4KVxuICAgICAgICB8IFNvbWUgKF8gOiBDb25uLnQpIHwgTm9uZSAtPlxuICAgICAgICAgIERlZmVycmVkLmNob29zZVxuICAgICAgICAgICAgWyBjaG9pY2UgKEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQpXG4gICAgICAgICAgICA7IGNob2ljZSAoSXZhci5yZWFkIHQubmV4dF9jb25uZWN0X3Jlc3VsdCkgRm4uaWRcbiAgICAgICAgICAgIF0pXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdCA9XG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgdC5kb24ndF9yZWNvbm5lY3QgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2FkZHJlc3MgUG9seS50IC0+IHQgW0BAdW5ib3hlZF1cblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gUG9seS5zZXhwX29mX3QgdC5zZXhwX29mX2FkZHJlc3MgdFxuXG4gIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgKFQgdCkgPVxuICAgIFBvbHkuY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHRcbiAgOztcblxuICBsZXQgY2xvc2VfZmluaXNoZWQgKFQgdCkgPSBQb2x5LmNsb3NlX2ZpbmlzaGVkIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB0KSA9IFBvbHkuaXNfY2xvc2VkIHRcbiAgbGV0IGNsb3NlIChUIHQpID0gUG9seS5jbG9zZSB0XG4gIGxldCBzZXJ2ZXJfbmFtZSAoVCB0KSA9IFBvbHkuc2VydmVyX25hbWUgdFxuICBsZXQgY3VycmVudF9jb25uZWN0aW9uIChUIHQpID0gUG9seS5jdXJyZW50X2Nvbm5lY3Rpb24gdFxuICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IChUIHQpID0gUG9seS5jb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdFxuICBsZXQgY29ubmVjdGVkIChUIHQpID0gUG9seS5jb25uZWN0ZWQgdFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgID9vbl9ldmVudFxuICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICA9XG4gICAgVFxuICAgICAgKFBvbHkuY3JlYXRlXG4gICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgID9vbl9ldmVudFxuICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICB+YWRkcmVzc1xuICAgICAgICAgZ2V0X2FkZHJlc3MpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxudHlwZSB0ID1cbiAgfCBLcmJcbiAgfCBLcmJfdGVzdF9tb2RlXG4gIHwgUnBjXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIGJpbl9pb11cblxubGV0IG1hZ2ljX3dvcmQgPSBmdW5jdGlvblxuICB8IEtyYiAtPiBcIktSQjJcIlxuICB8IEtyYl90ZXN0X21vZGUgLT4gXCJLQlRcIlxuICB8IFJwYyAtPiBcIlJQQ1wiXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5sZXQgZ2VuX21hZ2ljX251bWJlciB3b3JkID1cbiAgU3RyaW5nLnRvX2xpc3RfcmV2IHdvcmRcbiAgfD4gTGlzdC5mb2xkIH5pbml0OjAgfmY6KGZ1biBhY2MgYyAtPiAoYWNjICogMjU2KSArIENoYXIudG9faW50IGMpXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyIHQgPSBnZW5fbWFnaWNfbnVtYmVyIChtYWdpY193b3JkIHQpXG5sZXQgYnlfbWFnaWNfbnVtYmVyID0gSW50Lk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIGFsbCB+ZjooZnVuIHAgLT4gbWFnaWNfbnVtYmVyIHAsIHApKVxuXG4oKiBXZSBvbmNlIG1pbnRlZCBhIG5ldyBtYWdpYyBudW1iZXIgZm9yIEtyYiBpbiBvcmRlciB0byBjaGFuZ2UgdGhlIHByb3RvY29sXG4gICBuZWdvdGlhdGlvbi4gIExldCdzIGJlIGNhcmVmdWwgdGhhdCB3ZSBkb24ndCByZXVzZSB0aGUgb2xkIG1hZ2ljIG51bWJlciAqKVxubGV0IHJldGlyZWRfa3JiX3dvcmQgPSBcIktSQlwiXG5cbmxldCV0ZXN0X3VuaXQgXCJ2YWxpZGF0ZSBtYWdpYyB3b3Jkc1wiID1cbiAgbGV0IG1hZ2ljX3dvcmRzID0gcmV0aXJlZF9rcmJfd29yZCA6OiBMaXN0Lm1hcCBhbGwgfmY6bWFnaWNfd29yZCBpblxuICBsZXQgbWFnaWNfbnVtYmVycyA9IExpc3QubWFwIG1hZ2ljX3dvcmRzIH5mOmdlbl9tYWdpY19udW1iZXIgaW5cbiAgKCogTWFnaWMgbnVtYmVycyBtdXN0IGZpdCBpbnRvIE9jYW1sIGludGVnZXJzICgzMSBiaXRzIG9uIDMyIGJpdCBidWlsZHMpLiAqKVxuICBhc3NlcnQgKExpc3QuZm9yX2FsbCBtYWdpY19udW1iZXJzIH5mOihmdW4gbiAtPiBuIDw9IEludC5vZl9mbG9hdCAoKDIuICoqIDMwLikgLS4gMS4pKSk7XG4gICgqIE5vIGR1cGxpY2F0ZSBtYWdpYyBudW1iZXJzICopXG4gIGFzc2VydCAobm90IChMaXN0LmNvbnRhaW5zX2R1cCBtYWdpY19udW1iZXJzIH5jb21wYXJlOkludC5jb21wYXJlKSlcbjs7XG5cbigqIEVuc3VyZSB0ZXN0cyBicmVhayBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmUgY2hhbmdlZCAqKVxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljIG51bWJlcnNcIiA9XG4gIGFzc2VydCAoZ2VuX21hZ2ljX251bWJlciByZXRpcmVkX2tyYl93b3JkID0gNF8zNDZfNDQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiID0gODQzXzIwN18yNDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmJfdGVzdF9tb2RlID0gNV81MjFfOTk1KTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgUnBjID0gNF80MTFfNDc0KVxuOztcblxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSBpcyBjb3JyZWN0XCIgPVxuICBMaXN0Lml0ZXIgYWxsIH5mOihmdW4gdCAtPlxuICAgIGxldCBtYWdpY19udW1iZXIgPSBtYWdpY19udW1iZXIgdCBpblxuICAgIGxldCBzaXplID0gSW50LmJpbl9zaXplX3QgbWFnaWNfbnVtYmVyIGluXG4gICAgWyV0ZXN0X2VxOiBpbnRdIHNpemUgbWFnaWNfbnVtYmVyX2Jpbl9zaXplKVxuOztcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgTGlzdF93aXRoX21heF9sZW5faW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29uZmlnIDogQ29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gTGlzdC5fX2Jpbl9yZWFkX3RfX1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgdHJ5IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIHdpdGhcbiAgICB8IGV4biAtPiBFeG4ucmVyYWlzZSBleG4gKEluZm8udG9fc3RyaW5nX2h1bSBjb250ZXh0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgKGJpbl9yZWFkZXJfYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90IGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgOyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyX2EucmVhZFxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgKGJpbl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3QgYmluX2Euc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCBiaW5fYS53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCBiaW5fYS5yZWFkZXJcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3RfZXhuIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgaWYgbGVuID4gbWF4X2xlblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGlzdCBpcyB0b28gbGFyZ2VcIiAoY29udGV4dCA6IEluZm8udCkgKGxlbiA6IGludCkgKG1heF9sZW4gOiBpbnQpXTtcbiAgICBsXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IExpc3Quc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCB0X29mX2Egc2V4cCA9XG4gICAgbGV0IHQgPSBMaXN0LnRfb2Zfc2V4cCB0X29mX2Egc2V4cCBpblxuICAgIG9mX2xpc3RfZXhuIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEtub3duX3Byb3RvY29sID0gS25vd25fcHJvdG9jb2xcblxubW9kdWxlIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZSA9XG4gIExpc3Rfd2l0aF9tYXhfbGVuLk1ha2UgKHN0cnVjdFxuICAgIGxldCBtYXhfbGVuID0gMTAwXG4gICAgbGV0IGNvbnRleHQgPSBJbmZvLm9mX3N0cmluZyBcIlByb3RvY29sX3ZlcnNpb25faGVhZGVyXCJcbiAgZW5kKVxuXG50eXBlIHQgPSBpbnQgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLnRcbltAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfnByb3RvY29sIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgOjogc3VwcG9ydGVkX3ZlcnNpb25zXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IGdldF9wcm90b2NvbCAodCA6IHQpID1cbiAgbGV0IHByb3RvY29scywgdmVyc2lvbnMgPVxuICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBGaXJzdCBwXG4gICAgICAgIHwgTm9uZSAtPiBTZWNvbmQgdilcbiAgaW5cbiAgbWF0Y2ggcHJvdG9jb2xzIHdpdGhcbiAgfCBbXSAtPiBPayAoTm9uZSwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IFsgcCBdIC0+IE9rIChTb21lIHAsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBfIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG11bHRpcGxlIG1hZ2ljIG51bWJlcnMgc2Vlbi5cIlxuICAgICAgICAgIChwcm90b2NvbHMgOiBLbm93bl9wcm90b2NvbC50IGxpc3QpXG4gICAgICAgICAgKHZlcnNpb25zIDogaW50IGxpc3QpXVxuOztcblxubGV0IG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXIgfih1cyA6IHQpIH4ocGVlciA6IHQpID1cbiAgbGV0IG9wZW4gT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCwgdXNfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgdXMgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCwgcGVlcl92ZXJzaW9ucyA9IGdldF9wcm90b2NvbCBwZWVyIGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sID1cbiAgICBtYXRjaCB1c19wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJObyBtYWdpYyBudW1iZXJzIHNlZW5cIiAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXVxuICBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sID1cbiAgICBtYXRjaCBwZWVyX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCogd2UgYXNzdW1lIHBlZXIgaXMgc3BlYWtpbmcgb3VyIHByb3RvY29sIGlmIFthbGxvd19sZWdhY3lfcGVlcl0gKilcbiAgICAgIGlmIGFsbG93X2xlZ2FjeV9wZWVyXG4gICAgICB0aGVuIHJldHVybiB1c19wcm90b2NvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwZWVyX3Byb3RvY29sID0gYFVua25vd24gaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogWyBgVW5rbm93biBdKV0pXG4gIGluXG4gIGlmIG5vdCAoWyVjb21wYXJlLmVxdWFsOiBLbm93bl9wcm90b2NvbC50XSB1c19wcm90b2NvbCBwZWVyX3Byb3RvY29sKVxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV1cbiAgZWxzZSAoXG4gICAgbGV0IHByb3RvY29sID0gdXNfcHJvdG9jb2wgaW5cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIHVzX3ZlcnNpb25zIHBlZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG5vIHNoYXJlZCB2ZXJzaW9uIG51bWJlcnNcIlxuICAgICAgICAgICAgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHBlZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV0pXG47O1xuXG5sZXQgbWF0Y2hlc19tYWdpY19wcmVmaXggKHQgOiB0KSB+cHJvdG9jb2wgPVxuICBsZXQgbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIExpc3QubWVtIH5lcXVhbDpJbnQuZXF1YWwgKHQgOj4gaW50IGxpc3QpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZV9saXN0X3dpdGhfbWF4X2xlbiA9IExpc3Rfd2l0aF9tYXhfbGVuLk1ha2VcbmVuZFxuXG5sZXQldGVzdF91bml0IFwiYmluIHNpemVzIGFyZSBub3QgY2hhbmdlZCBieSBhY2NpZGVudFwiID1cbiAgKCogRW5zdXJlIHRoZSBiaW5fc2l6ZSBvZiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICBpcyBhbHdheXMgMS4gVGhpcyBtZWFucyB0aGF0IHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGxpc3Qgb2YgdmVyc2lvbnMgaW4gdGhlXG4gICAgIHByb3RvY29sIGhlYWRlciBpcywgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJ5dGVzLiBUaGVcbiAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50IGp1bXBzIHRvIDMgYnl0ZXMgYXQgdGhlIHZhbHVlIDEyOC4gKilcbiAgbGV0IGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9XG4gICAgSW50LmJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgaW5cbiAgYXNzZXJ0IChib3VuZGVkX2xpc3RfYmluX3NpemUgPSAxKTtcbiAgYXNzZXJ0ICg2ID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKTtcbiAgYXNzZXJ0IChcbiAgICBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplXG4gICAgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpXG47O1xuIiwidHlwZSB0ID0gQmluX3Byb3QuTmF0MC50XG5bQEBkZXJpdmluZyBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZTJmNGEtNDkwYS0xMWU2LWI2OGYtYmJkNjI0NzI1MTZjXCJdXG5cbmxldCBiaW5fdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX25hdDBcbmxldCBiaW5fc2l6ZV90ID0gQmluX3Byb3QuU2l6ZS5iaW5fc2l6ZV9uYXQwXG5sZXQgYmluX3dyaXRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdDBcbmxldCBiaW5fd3JpdGVfdCA9IEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9uYXQwXG5sZXQgYmluX3JlYWRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdDBcbmxldCBiaW5fcmVhZF90ID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwXG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92bmF0MCA9XG4gIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBvZl9pbnRfZXhuID0gQmluX3Byb3QuTmF0MC5vZl9pbnRcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5cbmxldCBvZl93cml0ZXIgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPVxuICBsZXQgd3JpdGUgYnVmIH5wb3MgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIGxlbiBpblxuICAgIHdyaXRlIGJ1ZiB+cG9zIGFcbiAgaW5cbiAgbGV0IHNpemUgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIE5hdDAuYmluX3NpemVfdCBsZW4gKyAoKGxlbiA6IEJpbl9wcm90Lk5hdDAudCkgOj4gaW50KVxuICBpblxuICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfVxuOztcblxubGV0IG9mX3R5cGVfY2xhc3MgKGJpbl9hIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID0gb2Zfd3JpdGVyIGJpbl9hLndyaXRlclxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGJpZ3N0cmluZ19iaW5fcHJvdCBzID1cbiAgICAgIGxldCBiaWdzdHJpbmcgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCeXRlcy5iaW5fd3JpdGVyX3QgcyBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQmlnc3RyaW5nLlN0YWJsZS5WMS5iaW5fd3JpdGVyX3QgYmlnc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBiaW5fcHJvdF93aXRoX2xlbmd0aCBzID1cbiAgICAgIGxldCB3cml0ZXJfd2l0aF9sZW5ndGggPSBvZl93cml0ZXIgQnl0ZXMuYmluX3dyaXRlcl90IGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB3cml0ZXJfd2l0aF9sZW5ndGggc1xuICAgIDs7XG5cbiAgICBsZXQgdGVzdCBsZW4gPVxuICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBsZXQgYmlnc3RyaW5nX3ZlcnNpb24gPSBiaWdzdHJpbmdfYmluX3Byb3QgcyBpblxuICAgICAgbGV0IHdpdGhfbGVuZ3RoX3ZlcnNpb24gPSBiaW5fcHJvdF93aXRoX2xlbmd0aCBzIGluXG4gICAgICBpZiBCaWdzdHJpbmcudG9fc3RyaW5nIGJpZ3N0cmluZ192ZXJzaW9uIDw+IEJpZ3N0cmluZy50b19zdHJpbmcgd2l0aF9sZW5ndGhfdmVyc2lvblxuICAgICAgdGhlbiBmYWlsd2l0aGYgXCJtaXNtYXRjaCBmb3IgbGVuZ3RoICVkXCIgbGVuICgpXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBmb3IgbGVuID0gMCB0byBJbnQucG93IDIgMTAgZG9cbiAgICAgICAgdGVzdCBsZW5cbiAgICAgIGRvbmU7XG4gICAgICBmb3IgcG93ID0gMTAgdG8gMjAgZG9cbiAgICAgICAgbGV0IHggPSBJbnQucG93IDIgcG93IGluXG4gICAgICAgIHRlc3QgKHggLSAxKTtcbiAgICAgICAgdGVzdCB4O1xuICAgICAgICB0ZXN0ICh4ICsgMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2ZXJzaW9uIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgc3VtbWFyaXplIHRzID1cbiAgTGlzdC5tYXAgdHMgfmY6KGZ1biB7IG5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICB8PiBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGQgfmluaXQ6SW50LlNldC5lbXB0eSB+ZjpJbnQuU2V0LmFkZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgZGVzY3JpcHRpb25zID1cbiAgICBbIHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAxIH1cbiAgICA7IHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAyIH1cbiAgICA7IHsgbmFtZSA9IFwiYmFyXCI7IHZlcnNpb24gPSA1IH1cbiAgICBdXG4gIGluXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyaXplIGRlc2NyaXB0aW9ucyBpblxuICBwcmludF9zIFslc2V4cCAoc3VtbWFyeSA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTtcbiAgWyVleHBlY3Qge3wgKChiYXIgKDUpKSAoZm9vICgxIDIpKSkgfH1dXG47O1xuIiwiKCoqIEFzeW5jX3JwYyBwcm90b2NvbCB0eXBlcywgZm9yIGludGVybmFsIHVzZSBvbmx5ICopXG5cbigqIFdBUk5JTkc6IGRvIG5vdCBjaGFuZ2UgYW55IG9mIHRoZXNlIHR5cGVzIHdpdGhvdXQgZ29vZCByZWFzb24gKilcblxub3BlbiBCaW5fcHJvdC5TdGRcbm9wZW4gU2V4cGxpYi5TdGRcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIFVudXNlZF9xdWVyeV9pZCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB0IDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFF1ZXJ5X2lkLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBIZWFkZXIgPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlclxuXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeSBvZiAnYSBRdWVyeS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBzZXhwX29mXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIG1lc3NhZ2VfaGFuZGxlciA9IEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYVxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBzdHJ1Y3RcbiAgKCoqIFJlc3VsdCBvZiBhbiBbb25fbWVzc2FnZV0gY2FsbGJhY2suICBXZSBzcGxpdCB0aGUgW0NvbnRpbnVlXSBhbmQgW1dhaXQgX10gY2FzZXMgdG9cbiAgICAgIG1ha2UgaXQgY2xlYXIgdGhhdCBbQ29udGludWVdIGlzIHRoZSBleHBlY3RlZCBjYXNlLiAgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZVxuICAgICAgb3B0aW1pemVkIGZvciB0aGlzIGNhc2UuICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdG9wIG9mICdhXG4gICAgfCBDb250aW51ZVxuICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5cbm1vZHVsZSB0eXBlIFJlYWRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG5cbiAgKCoqIFN0YXJ0IHJlYWRpbmcgaW5jb21pbmcgbWVzc2FnZXMgYW5kIHBhc3MgdGhlbSB0byBbb25fbWVzc2FnZV0sIHVudGlsIGl0IHJldHVybnNcbiAgICAgIFtTdG9wIF9dLlxuXG4gICAgICBbb25fZW5kX29mX2JhdGNoXSBpcyBjYWxsZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCBiZWZvcmUgd2FpdGluZyBmb3JcbiAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gYmVjb21lIHJlYWRhYmxlIGFnYWluLiAqKVxuICB2YWwgcmVhZF9mb3JldmVyXG4gICAgOiAgdFxuICAgIC0+IG9uX21lc3NhZ2U6KEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSBIYW5kbGVyX3Jlc3VsdC50KVxuICAgIC0+IG9uX2VuZF9vZl9iYXRjaDoodW5pdCAtPiB1bml0KVxuICAgIC0+ICgnYSwgWyBgRW9mIHwgYENsb3NlZCBdKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIFNlbmRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgbWVzc2FnZV90b29fYmlnID1cbiAgICB7IHNpemUgOiBpbnRcbiAgICA7IG1heF9tZXNzYWdlX3NpemUgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IFNlbnQgb2YgJ2FcbiAgICB8IENsb3NlZFxuICAgIHwgTWVzc2FnZV90b29fYmlnIG9mIG1lc3NhZ2VfdG9vX2JpZ1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFdyaXRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG4gIHZhbCBtb25pdG9yIDogdCAtPiBNb25pdG9yLnRcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcblxuICAoKiogQmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNlbmQgbWVzc2FnZSB1c2luZyB0aGlzIHdyaXRlcixcbiAgICAgIGZvciBpbnN0YW5jZSB3aGVuIHRoZSB3cml0ZXIgaXMgY2xvc2VkIG9yIHRoZSBjb25zdW1lciBsZWF2ZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgYnkgW1JwYy5UcmFuc3BvcnRdICopXG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2ZsdXNoZWQgdF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgbXVzdCBiZWNvbWUgZGV0ZXJtaW5lZCB3aGVuIGFsbCBwcmlvciBzZW50XG4gICAgICBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkLlxuXG4gICAgICBJdCBtdXN0IGJlIE9LIHRvIGNhbGwgW2ZsdXNoZWQgdF0gYWZ0ZXIgW3RdIGhhcyBiZWVuIGNsb3NlZC4gKilcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbcmVhZHlfdG9fd3JpdGUgdF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgYSBnb29kIHRpbWUgdG8gc2VuZCBtZXNzYWdlc1xuICAgICAgYWdhaW4uIEFzeW5jIFJQQyBjYWxscyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHNlbmRpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgdG8gYXZvaWRcbiAgICAgIGZsb29kaW5nIHRoZSB0cmFuc3BvcnQuXG5cbiAgICAgIFVzaW5nIFtsZXQgcmVhZHlfdG9fd3JpdGUgPSBmbHVzaGVkXSBpcyBhbiBhY2NlcHRhYmxlIGltcGxlbWVudGF0aW9uLiAqKVxuICB2YWwgcmVhZHlfdG9fd3JpdGUgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBBbGwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc2VuZCBleGFjdGx5IG9uZSBtZXNzYWdlLiAqKVxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90IDogdCAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciAtPiAnYSAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gICgqKiBTYW1lIGFzIFtzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmddIGJ1dCB0aGUgYmlnc3RyaW5nIGNhbid0IGJlIG1vZGlmaWVkIHVudGlsIHRoZVxuICAgICAgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lcyBkZXRlcm1pbmVkLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBjb3B5aW5nIHRoZVxuICAgICAgYmlnc3RyaW5nLiAqKVxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgRGVmZXJyZWQudCBTZW5kX3Jlc3VsdC50XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxubW9kdWxlIEhlYWRlciA9IHN0cnVjdFxuICBsZXQgbGVuZ3RoID0gOFxuICBsZXQgdW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyA9IEJpZ3N0cmluZy51bnNhZmVfZ2V0X2ludDY0X2xlX2V4biBidWYgfnBvc1xuXG4gIGxldCB1bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zIHBheWxvYWRfbGVuID1cbiAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQ2NF9sZSBidWYgfnBvcyBwYXlsb2FkX2xlblxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLkhhbmRsZXJfcmVzdWx0XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLlJlYWRlclxuXG4gIHR5cGUgdCA9IFQgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSkgKiAnYSAtPiB0XG5cbiAgbGV0IHBhY2sgbSB0ID0gVCAobSwgdClcblxuICAoKiBXZSBwdXQgdHlwZSBhbm5vdGF0aW9ucyB0byBiZSBzdXJlIHRoZSB0eXBlIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUsIGkuZS4gdG8gYXZvaWRcbiAgICAgY3JlYXRpbmcgY2xvc3VyZXMgKilcbiAgbGV0IHNleHBfb2ZfdCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgKChtb2R1bGUgTSksIHQpKSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUICgobW9kdWxlIE0pLCB0KSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGZsdXNoZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uZmx1c2hlZCB0XG5cbiAgbGV0IHJlYWR5X3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPVxuICAgIE0ucmVhZHlfdG9fd3JpdGUgdFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgYmluX3dyaXRlciB4IDogXyBTZW5kX3Jlc3VsdC50ID1cbiAgICBNLnNlbmRfYmluX3Byb3QgdCBiaW5fd3JpdGVyIHhcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc3RvcHBlZCAoVCB7IHN0b3BwZWQ7IF8gfSkgPSBzdG9wcGVkXG5cbiAgbGV0IGNhbl9zZW5kIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgfSkgPVxuICAgIG5vdCAoTS5pc19jbG9zZWQgdCB8fCBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BwZWQpXG4gIDs7XG5cbiAgbGV0IHRyYW5zZmVyIHQgPyhtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCA9IDFfMDAwKSBwaXBlIGYgPVxuICAgIGxldCBjb25zdW1lciA9XG4gICAgICBQaXBlLmFkZF9jb25zdW1lciBwaXBlIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICBsZXQlbWFwICgpID0gZmx1c2hlZCB0IGluXG4gICAgICAgIGBPaylcbiAgICBpblxuICAgIGxldCBlbmRfb2ZfcGlwZSA9XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICAgaWYgY2FuX3NlbmQgdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgUGlwZS5yZWFkX25vdycgcGlwZSB+Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGg6bWF4X251bV92YWx1ZXNfcGVyX3JlYWRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICAgICAgUXVldWUuaXRlciBxIH5mO1xuICAgICAgICAgICAgICBQaXBlLkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgICAgICAgIHJlYWR5X3RvX3dyaXRlIHQgPj4+IGl0ZXJcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIFBpcGUudmFsdWVzX2F2YWlsYWJsZSBwaXBlID4+PiBmdW4gKGBPayB8IGBFb2YpIC0+IGl0ZXIgKClcbiAgICAgICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgaXZhciAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoKSlcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPSBEZWZlcnJlZC5hbnkgWyBlbmRfb2ZfcGlwZTsgc3RvcHBlZCB0IF0gaW5cbiAgICBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2UgdCA9XG4gIGxldCViaW5kICgpID0gV3JpdGVyLmNsb3NlIHQud3JpdGVyIGluXG4gIFJlYWRlci5jbG9zZSB0LnJlYWRlclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcblxuKCoqIFRoZSB0eXBlcyBvZiB0aGUgW0ltcGxlbWVudGF0aW9uXSBhbmQgW0ltcGxlbWVudGF0aW9uc10gbW9kdWxlcywgd2hpY2ggaGF2ZVxuICAgIGEgZGVwZW5kZW5jeSBjeWxlOiBbSW1wbGVtZW50YXRpb25dIC0+IFtEaXJlY3Rfc3RyZWFtX3dyaXRlcl0gLT5cbiAgICBbSW1wbGVtZW50YXRpb25zXSAtPiBbSW1wbGVtZW50YXRpb25dLiAqKVxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXJfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gICAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHJlYyBJbXBsZW1lbnRhdGlvbiA6IHNpZ1xuICBtb2R1bGUgRXhwZXJ0IDogc2lnXG4gICAgbW9kdWxlIFJlc3BvbmRlciA6IHNpZ1xuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBGIDogc2lnXG4gICAgdHlwZSAoXywgXykgcmVzdWx0X21vZGUgPVxuICAgICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EpIHJlc3VsdF9tb2RlXG4gICAgICB8IERlZmVycmVkIDogKCdhLCAnYSBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgICAtPiAndXBkYXRlIERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgICB8IE9uZV93YXkgOlxuICAgICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSAtPiBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdW5pdClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICBlbmRcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gICAgOyBzaGFwZXMgOiBTZXhwLnQgTGF6eS50XG4gICAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICAgIH1cbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uXG5cbmFuZCBJbXBsZW1lbnRhdGlvbnMgOiBzaWdcbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwYyA9XG4gICAgWyBgUmFpc2VcbiAgICB8IGBDb250aW51ZVxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb25cbiAgICB8IGBDYWxsIG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICAgIHwgYEV4cGVydCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuICAgIF1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gICAgOyBvbl91bmtub3duX3JwYyA6ICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gICAgfVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIG1vZHVsZSByZWMgSW5zdGFuY2UgOiBzaWdcbiAgICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgICB8IERpcmVjdCA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcblxuICAgIHR5cGUgJ2EgdW5wYWNrZWQgPVxuICAgICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnYSBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA6IChRdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICAgICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgICA7IGNvbm5lY3Rpb25fc3RhdGUgOiAnYVxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgICAoRGVzY3JpcHRpb24udCAqICdhIEltcGxlbWVudGF0aW9uLnQpIG9wdGlvblxuICAgICAgOyBwYWNrZWRfc2VsZiA6IHRcbiAgICAgIH1cblxuICAgIGFuZCB0ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuICBlbmRcbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uc1xuXG5hbmQgRGlyZWN0X3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgbW9kdWxlIFBlbmRpbmdfcmVzcG9uc2UgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3JtYWwgb2YgJ2FcbiAgICAgIHwgRXhwZXJ0IG9mIHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3Rfc3RhcnRlZCBvZiAnYSBQZW5kaW5nX3Jlc3BvbnNlLnQgUXVldWUudFxuICAgICAgfCBTdGFydGVkXG4gIGVuZFxuXG4gIG1vZHVsZSBJZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICA7IGNsb3NlZCA6IHVuaXQgSXZhci50XG4gICAgOyBpbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50XG4gICAgOyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfc3RyZWFtX3dyaXRlci50XG4gICAgOyBncm91cHMgOiAnYSBncm91cF9lbnRyeSBCYWcudFxuICAgIH1cblxuICBhbmQgJ2EgZ3JvdXBfZW50cnkgPVxuICAgIHsgZ3JvdXAgOiAnYSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC50XG4gICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICB9XG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA9ICdhIHRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFtjb21wb25lbnRzXSBpcyBvbmx5IHRyYWNrZWQgc2VwYXJhdGVseSBmcm9tIFtjb21wb25lbnRzX2J5X2lkXSBzbyB3ZSBjYW4gaXRlcmF0ZVxuICAgICAgICAgICBvdmVyIGl0cyBlbGVtZW50cyBtb3JlIHF1aWNrbHkgdGhhbiB3ZSBjb3VsZCBpdGVyYXRlIG92ZXIgdGhlIHZhbHVlcyBvZlxuICAgICAgICAgICBbY29tcG9uZW50c19ieV9pZF0uICopXG4gICAgICAgIG11dGFibGUgY29tcG9uZW50cyA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy50XG4gICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgIH1cblxuICAgIGFuZCAnYSBjb21wb25lbnQgPVxuICAgICAgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy5FbHQudFxuICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIGdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgfVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIDo9ICdhIHRcbmVuZCA9XG4gIERpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmFuZCBDYWNoZWRfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICA7IG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICA7IGJpbl93cml0ZXIgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIH1cbmVuZCA9XG4gIENhY2hlZF9zdHJlYW1fd3JpdGVyXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLk9uX2V4Y2VwdGlvbi50ID1cbiAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlX2Nvbm5lY3Rpb24gPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSB0cnVlIH1cbmxldCBjb250aW51ZSA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IGZhbHNlIH1cblxubGV0IGhhbmRsZV9leG5cbiAgICAgIHsgY2FsbGJhY2s7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIH1cbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIGV4blxuICA9XG4gIE9wdGlvbi5pdGVyIGNhbGxiYWNrIH5mOihmdW4gY2FsbGJhY2sgLT4gY2FsbGJhY2sgZXhuKTtcbiAgaWYgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgdGhlbiBNb25pdG9yLnNlbmRfZXhuIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG5cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEV4cGVydC5SZXNwb25kZXIudCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgcXVlcnlfaWQgd3JpdGVyID0geyBxdWVyeV9pZDsgd3JpdGVyOyByZXNwb25kZWQgPSBmYWxzZSB9XG4gIGVuZFxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgfCBSZXBsaWVkXG4gICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBGID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0X21vZGUgPSAoJ2EsICdiKSBGLnJlc3VsdF9tb2RlID1cbiAgICB8IEJsb2NraW5nIDogKCdhLCAnYSkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19pbXBsID1cbiAgICB8IFBpcGUgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICd1cGRhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSAtPiBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdW5pdClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgICAgICAqICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+IE9uZV93YXkgKGJpbl9tc2csIGZ1biBzdGF0ZSBzdHIgLT4gaW1wbCAoZiBzdGF0ZSkgc3RyKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnQgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+IGltcGwgKGYgc3RhdGUpIGJ1ZiB+cG9zIH5sZW4pXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIChmdW4gc3RhdGUgcSAtPiBpbXBsIChmIHN0YXRlKSBxKSwgcmVzdWx0X21vZGUpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKChmdW4gc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuIC0+IGltcGwgKGYgc3RhdGUpIHJlc3AgYnVmIH5wb3MgfmxlbiksIHJlc3VsdF9tb2RlKVxuICAgIHwgU3RyZWFtaW5nX3JwYyAoYmluX3EsIGJpbl9pLCBiaW5fdSwgaW1wbCkgLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+IFBpcGUgKGZ1biBzdGF0ZSBxIC0+IGltcGwgKGYgc3RhdGUpIHEpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT4gRGlyZWN0IChmdW4gc3RhdGUgcSB3IC0+IGltcGwgKGYgc3RhdGUpIHEgdylcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIChiaW5fcSwgYmluX2ksIGJpbl91LCBpbXBsKVxuICA7O1xuZW5kXG5cbnR5cGUgbm9ucmVjICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgeyB0YWcgOiBScGNfdGFnLnRcbiAgOyB2ZXJzaW9uIDogaW50XG4gIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICA7IHNoYXBlcyA6IFNleHAudCBMYXp5LnRcbiAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IFJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbmxldCBsaWZ0IHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IH5mIHQuZiB9XG5sZXQgdXBkYXRlX29uX2V4Y2VwdGlvbiB0IH5mID0geyB0IHdpdGggb25fZXhjZXB0aW9uID0gZiB0Lm9uX2V4Y2VwdGlvbiB9XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5pbmNsdWRlIFByb3RvY29sLlJwY19lcnJvclxuaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChQcm90b2NvbC5ScGNfZXJyb3IpXG5cbmV4Y2VwdGlvbiBScGMgb2YgdCAqIEluZm8udCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgcmFpc2UgdCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uID0gcmFpc2UgKFJwYyAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbikpXG5cbmxldCBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQ29ubmVjdGlvbl9jbG9zZWQgLT5cbiAgICBbJXNleHAgYENvbm5lY3Rpb25fY2xvc2VkIChnZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gKCkgOiBTZXhwLnQpXVxuICB8IEJpbl9pb19leG4gX1xuICB8IFdyaXRlX2Vycm9yIF9cbiAgfCBVbmNhdWdodF9leG4gX1xuICB8IFVuaW1wbGVtZW50ZWRfcnBjIF9cbiAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gc2V4cF9vZl90IHRcbjs7XG5cbigqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8ganVzdCB0YWtlIGEgW0Nvbm5lY3Rpb24udF0sIGJ1dCB3ZSB0YWtlIGl0cyBwaWVjZXMgaW5zdGVhZCB0b1xuICAgYXZvaWQgYSBkZXBlbmRlbmN5IGN5Y2xlICopXG5sZXQgdG9fZXJyb3JcbiAgICAgIHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBEZXNjcmlwdGlvbi5uYW1lID0gcnBjX25hbWU7IHZlcnNpb24gPSBycGNfdmVyc2lvbiB9XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICA9XG4gIGxldCBycGNfZXJyb3IgPVxuICAgIHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgbGV0IGNsb3NlX3JlYXNvbiA9XG4gICAgICAgICgqIFVzdWFsbHkgKGFsd2F5cz8pIGhlcmUgd2Ugd2lsbCBoYXZlIHRoZSBkZWZlcnJlZCBhbHJlYWR5IGZ1bGxcbiAgICAgICAgICAgYmVjYXVzZSBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvciBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5XG4gICAgICAgICAgIGNsb3NlZCAqKVxuICAgICAgICBEZWZlcnJlZC5wZWVrIGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgaW5cbiAgICAgIFslc2V4cCAoY2xvc2VfcmVhc29uIDogSW5mby50IG9wdGlvbildKVxuICBpblxuICBFcnJvci5jcmVhdGVfc1xuICAgIFslc2V4cFxuICAgICAgeyBycGNfZXJyb3IgOiBTZXhwLnRcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBycGNfbmFtZSA6IHN0cmluZ1xuICAgICAgOyBycGNfdmVyc2lvbiA6IGludFxuICAgICAgfV1cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxudHlwZSBsb2NhdGVkX2Vycm9yID1cbiAgeyBsb2NhdGlvbiA6IHN0cmluZ1xuICA7IGV4biA6IEV4bi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IGJpbl9pb19leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuQmluX2lvX2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCB0cnlfd2l0aCA/b25fYmFja2dyb3VuZF9leGNlcHRpb24gP3J1biB+bG9jYXRpb24gZiA9XG4gIGxldCB4ID1cbiAgICBsZXQgcmVzdCA9XG4gICAgICBtYXRjaCBvbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYExvZ1xuICAgICAgfCBTb21lIGNhbGxiYWNrIC0+IGBDYWxsIGNhbGxiYWNrXG4gICAgaW5cbiAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICB+cmVzdFxuICAgICAgfnJ1bjooT3B0aW9uLnZhbHVlIHJ1biB+ZGVmYXVsdDpgU2NoZWR1bGUpXG4gICAgICBmXG4gIGluXG4gIGxldCBqb2luID0gZnVuY3Rpb25cbiAgICB8IE9rIHggLT4geFxuICAgIHwgRXJyb3IgZXhuIC0+IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuXG4gIGluXG4gIG1hdGNoIERlZmVycmVkLnBlZWsgeCB3aXRoXG4gIHwgTm9uZSAtPiB4ID4+fCBqb2luXG4gIHwgU29tZSB4IC0+IHJldHVybiAoam9pbiB4KVxuOztcblxubGV0IG9yX2Vycm9yIH5ycGNfZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA9XG4gIFJlc3VsdC5tYXBfZXJyb3JcbiAgICB+ZjpcbiAgICAgIChScGNfZXJyb3IudG9fZXJyb3JcbiAgICAgICAgIH5ycGNfZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkKVxuOztcbiIsIm9wZW4gQ29yZVxuXG4oKiB1dGlsaXR5IGZ1bmN0aW9uIGZvciBiaW4taW8naW5nIG91dCBvZiBhIEJpZ3N0cmluZy50ICopXG5sZXQgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgIChiaW5fcmVhZGVyX3QgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKVxuICAgICAgP2FkZF9sZW5cbiAgICAgIGJ1ZlxuICAgICAgfnBvc19yZWZcbiAgICAgIH4obGVuIDogTmF0MC50KVxuICAgICAgfmxvY2F0aW9uXG4gID1cbiAgdHJ5XG4gICAgbGV0IGluaXRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgZGF0YSA9IGJpbl9yZWFkZXJfdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBhZGRfbGVuID1cbiAgICAgIG1hdGNoIGFkZF9sZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBhZGRfbGVuIC0+IGFkZF9sZW4gZGF0YVxuICAgIGluXG4gICAgaWYgIXBvc19yZWYgLSBpbml0X3BvcyArIGFkZF9sZW4gPD4gKGxlbiA6PiBpbnQpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgKCFwb3NfcmVmIC0gaW5pdF9wb3MpXG4gICAgICAgIChsZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgICAoKTtcbiAgICBPayBkYXRhXG4gIHdpdGhcbiAgfCBlIC0+IFJwY19yZXN1bHQuYmluX2lvX2V4biB+bG9jYXRpb24gZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uc1xubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFdyaXRlciA9IFRyYW5zcG9ydC5Xcml0ZXJcblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG4oKiBDb21tdXRlIFJlc3VsdCBhbmQgRGVmZXJyZWQuICopXG5sZXQgZGVmZXJfcmVzdWx0IDogJ2EgJ2IuICgnYSBEZWZlcnJlZC50LCAnYikgUmVzdWx0LnQgLT4gKCdhLCAnYikgUmVzdWx0LnQgRGVmZXJyZWQudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiByZXR1cm4gZXJyXG4gICAgfCBPayBkIC0+XG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCVtYXAgeCA9IGQgaW5cbiAgICAgICAgIE9rIHhcbiAgICAgICB8IFNvbWUgZCAtPiByZXR1cm4gKE9rIGQpKVxuOztcblxubW9kdWxlIERlZmVycmVkX2ltbWVkaWF0ZSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBiaW5kIGQgfmYgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBkIH5mID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZCA+PnwgZlxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgIChEZXNjcmlwdGlvbi50ICogKCdhIEltcGxlbWVudGF0aW9uLnRbQHNleHAub3BhcXVlXSkpIG9wdGlvblxuICAgICgqIFtwYWNrZWRfc2VsZl0gaXMgaGVyZSBzbyB3ZSBjYW4gZXNzZW50aWFsbHkgcGFjayBhbiB1bnBhY2tlZCBpbnN0YW5jZSB3aXRob3V0IGRvaW5nXG4gICAgICAgYW55IGFkZGl0aW9uYWwgYWxsb2NhdGlvbi4gKilcbiAgICA7IHBhY2tlZF9zZWxmIDogKHRbQHNleHAub3BhcXVlXSlcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgYW5kIHQgPSBJbnN0YW5jZS50ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBbJXNleHBfb2Y6IF8gdW5wYWNrZWRdIHRcblxuICBsZXQgc2VuZF93cml0ZV9lcnJvciB0IGlkIHNleHAgPVxuICAgIGxldCBkYXRhIDogXyBQLk1lc3NhZ2UudCA9IFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBFcnJvciAoV3JpdGVfZXJyb3Igc2V4cCkgfSBpblxuICAgIG1hdGNoIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBkYXRhIHdpdGhcbiAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgXCJGYWlsZWQgdG8gc2VuZCB3cml0ZSBlcnJvciB0byBjbGllbnRcIlxuICAgICAgICAsIHsgZXJyb3IgPSAoc2V4cCA6IFNleHAudCk7IHJlYXNvbiA9IChyIDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgfV1cbiAgOztcblxuICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWQgKHJlc3VsdCA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgU2VudCAoKSAtPiAoKVxuICAgIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgKFslc2V4cF9vZjogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudF0gcilcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIHggPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIGJpbl93cml0ZXIgeCB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5pZCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX2RhdGEgZGF0YSA9XG4gICAgbGV0IGJpbl93cml0ZXIgPVxuICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfZGF0YSlcbiAgICBpblxuICAgIHdyaXRlX21lc3NhZ2UgdCB+aWQgYmluX3dyaXRlciAoUmVzcG9uc2UgeyBpZDsgZGF0YSB9KVxuICA7O1xuXG4gIG1vZHVsZSBDYWNoZWRfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICAgIHR5cGUgaW5zdGFuY2VcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfc3RyZWFtX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCB3cml0ZSA6ICdhIHQgLT4gaW5zdGFuY2UgLT4gUC5RdWVyeV9pZC50IC0+ICdhIC0+IHVuaXRcblxuICAgIHZhbCB3cml0ZV9leHBlcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGluc3RhbmNlXG4gICAgICAtPiBQLlF1ZXJ5X2lkLnRcbiAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuXG4gICAgdmFsIHdyaXRlX3N0cmluZyA6ICdhIHQgLT4gaW5zdGFuY2UgLT4gUC5RdWVyeV9pZC50IC0+IHN0cmluZyAtPiB1bml0XG4gIGVuZFxuICB3aXRoIHR5cGUgaW5zdGFuY2UgOj0gdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICAoKiBbd3JpdGVdIGFuZCBbd3JpdGVfc3RyaW5nXSBib3RoIGFsbG9jYXRlIDMgd29yZHMgZm9yIHRoZSB0dXBsZXMuIFt3cml0ZV9leHBlcnRdXG4gICAgICAgZG9lcyBub3QgYWxsb2NhdGUuICopXG4gICAgbGV0IHdyaXRlIHQgKFQgaW5zdGFuY2UpIGlkIGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlICh0LCBkYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfc3RyaW5nIHQgKFQgaW5zdGFuY2UpIGlkIHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyAodCwgc3RyKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfZXhwZXJ0IHQgKFQgaW5zdGFuY2UpIGlkIH5idWYgfnBvcyB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIHdyaXRlX21lc3NhZ2VfZXhwZXJ0IGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX25hdDBfaGVhZGVyIHQgfmJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2UgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB4ID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlIHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgeFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9zdHJpbmcgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB4ID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlX3N0cmluZyBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIHhcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0gfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIud3JpdGVfZXhwZXJ0IHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgfmJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0ID1cbiAgICAgIGlmIG5vdCAoSXZhci5pc19mdWxsIHQuY2xvc2VkKVxuICAgICAgdGhlbiAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgICAgICAgbGV0IGdyb3VwcyA9IHQuZ3JvdXBzIGluXG4gICAgICAgIGlmIG5vdCAoQmFnLmlzX2VtcHR5IGdyb3VwcylcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuUHJpdmF0ZS5WZXJ5X2xvd19wcmlvcml0eV93b3JrLmVucXVldWUgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQmFnLnJlbW92ZV9vbmUgZ3JvdXBzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBGaW5pc2hlZFxuICAgICAgICAgICAgfCBTb21lIHsgZ3JvdXA7IGVsZW1lbnRfaW5fZ3JvdXAgfSAtPlxuICAgICAgICAgICAgICBCYWcucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHMgZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgZ3JvdXAuY29tcG9uZW50c19ieV9pZCB0LmlkO1xuICAgICAgICAgICAgICBOb3RfZmluaXNoZWQpO1xuICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgfCBOb3Rfc3RhcnRlZCBfIC0+ICgpXG4gICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9lb2YgdClcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgcXVlcnlfaWQ7IF8gfSBhcyB0KSA9XG4gICAgICBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdDtcbiAgICAgIEhhc2h0YmwucmVtb3ZlIGluc3RhbmNlLm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeV9pZFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICB0aGVuIGBDbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT4gUXVldWUuZW5xdWV1ZSBxIChOb3JtYWwgeClcbiAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlIHQgeCk7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIHggPVxuICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggd2l0aFxuICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgOztcblxuICAgIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgICAgICAgUXVldWUuZW5xdWV1ZSBxIChFeHBlcnQgKEJpZ3N0cmluZy5Ub19zdHJpbmcuc3ViIGJ1ZiB+cG9zIH5sZW4pKVxuICAgICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3Mgfmxlbik7XG4gICAgICAgICAgYE9rKVxuICAgICAgOztcblxuICAgICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgc3RhcnQgdCA9XG4gICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgIHwgU3RhcnRlZCAtPiBmYWlsd2l0aCBcImF0dGVtcHRlZCB0byBzdGFydCB3cml0ZXIgd2hpY2ggd2FzIGFscmVhZHkgc3RhcnRlZFwiXG4gICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgdC5zdGF0ZSA8LSBTdGFydGVkO1xuICAgICAgICBRdWV1ZS5pdGVyIHEgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb3JtYWwgeCAtPiB3cml0ZV9tZXNzYWdlIHQgeFxuICAgICAgICAgIHwgRXhwZXJ0IHggLT4gd3JpdGVfbWVzc2FnZV9zdHJpbmcgdCB4KTtcbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkIHRoZW4gd3JpdGVfZW9mIHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uXG4gICAgICAgIChyZXN1bHQgOiAoXywgUnBjX2Vycm9yLnQpIFJlc3VsdC50KVxuICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwKSAtPlxuICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgIHwgRXJyb3IgXyB8IE9rIF8gLT4gKClcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBsZXQgaWQgPSBxdWVyeS5pZCBpblxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheSAoYmluX3F1ZXJ5X3JlYWRlciwgZikgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIG1lc3NhZ2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZXJyIC0+IFN0b3AgZXJyXG4gICAgICAgfCBPayBxIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxO1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgY29tcHV0YXRpb25cIilcbiAgICAgICAgICAgIGVsc2UgQ29udGludWUpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5X2V4cGVydCBmIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuO1xuICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgIENvbnRpbnVlXG4gICAgICAgd2l0aFxuICAgICAgIHwgZXhuIC0+XG4gICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiKVxuICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5fcmVzcG9uc2Vfd3JpdGVyLCBmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcmVzdWx0X21vZGUgd2l0aFxuICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgcXVlcnlfY29udGVudHNcbiAgICAgICAgICAgID4+fH4gZiB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKHF1ZXJ5X2NvbnRlbnRzID4+fH4gZiB0LmNvbm5lY3Rpb25fc3RhdGUpKVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGhhbmRsZV9leG4gfmlzX3VuY2F1Z2h0X2V4biBleG4gPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4biBleG4gfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgICB0aGVuIHJlc3VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX3VuaXQgcmVzdWx0O1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIGlzX3VuY2F1Z2h0X2V4blxuICAgICAgICB0aGVuIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgbGV0IGNoZWNrX3Jlc3BvbmRlZCAoKSA9XG4gICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaGFuZGxlX2V4blxuICAgICAgICAgICAgfmlzX3VuY2F1Z2h0X2V4bjpmYWxzZVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWRfaW1tZWRpYXRlLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICB8IFJlcGxpZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIGQgLT4gZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkXG4gICAgICAgICAgdGhlbiBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHVwb24gZCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgICAgICB8PiBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICB8PiBva19leG4pO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+IGhhbmRsZV9leG4gfmlzX3VuY2F1Z2h0X2V4bjp0cnVlIGV4blxuICAgICAgaW5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgV2FpdFxuICAgICAgICAgICAobGV0JW1hcCByID0gZCBpblxuICAgICAgICAgICAgb2tfZXhuXG4gICAgICAgICAgICAgIChScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgICAgcikpXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPlxuICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICAgIHwgRXJyb3IgXyAtPiBTdG9wIHJlc3VsdCkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlN0cmVhbWluZ19ycGNcbiAgICAgICAgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9pbml0X3dyaXRlciwgYmluX3VwZGF0ZV93cml0ZXIsIGltcGwpIC0+XG4gICAgICBsZXQgc3RyZWFtX3F1ZXJ5ID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIHN0cmVhbV9xdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEFib3J0IC0+IDBcbiAgICAgICAgICAgIHwgYFF1ZXJ5IChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc3RyZWFtX3F1ZXJ5IHdpdGhcbiAgICAgICB8IEVycm9yIF9lcnIgLT4gKClcbiAgICAgICB8IE9rIGBBYm9ydCAtPlxuICAgICAgICAgKCogTm90ZSB0aGF0IHRoZXJlJ3Mgc29tZSBkZWxheSBiZXR3ZWVuIHdoZW4gd2UgcmVjZWl2ZSBhIHBpcGUgUlBDIHF1ZXJ5IGFuZFxuICAgICAgICAgICAgd2hlbiB3ZSBwdXQgc29tZXRoaW5nIGluIFtvcGVuX3N0cmVhbWluZ19yZXNwb25zZXNdICh3ZSB3YWl0IGZvclxuICAgICAgICAgICAgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRvIHJldHVybikuIER1cmluZyB0aGlzIHRpbWUsIGFuIGFib3J0IG1lc3NhZ2Ugd291bGRcbiAgICAgICAgICAgIGp1c3QgYmUgaWdub3JlZC4gVGhlIGRpc3BhdGNoZXIgY2FuJ3QgYWJvcnQgdGhlIHF1ZXJ5IHdoaWxlIHRoaXMgaXNcbiAgICAgICAgICAgIGhhcHBlbmluZywgdGhvdWdoLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIHRoZSBJRCByZXF1aXJlZCB0b1xuICAgICAgICAgICAgYWJvcnQgdGhlIHF1ZXJ5IHVudGlsIGFmdGVyIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmV0dXJuZWQuICopXG4gICAgICAgICBPcHRpb24uaXRlciAoSGFzaHRibC5maW5kIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5LmlkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBQaXBlIHBpcGUgLT4gUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgICAgICAgICAgfCBEaXJlY3QgdyAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3KVxuICAgICAgIHwgT2sgKGBRdWVyeSBsZW4pIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzdHJlYW1pbmdfcnBjIHNlcnZlci1zaWRlIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBzdHJlYW1fd3JpdGVyID1cbiAgICAgICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlclxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgICAgfCBQaXBlIGYgLT4gYFBpcGUgZlxuICAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICAgbGV0IHdyaXRlciA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCA9XG4gICAgICAgICAgICAgICB7IGlkID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuSWQuY3JlYXRlICgpXG4gICAgICAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICAgICAgIDsgY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgICAgICAgIDsgaW5zdGFuY2UgPSB0LnBhY2tlZF9zZWxmXG4gICAgICAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICAgICAgIDsgZ3JvdXBzID0gQmFnLmNyZWF0ZSAoKVxuICAgICAgICAgICAgICAgOyBzdHJlYW1fd3JpdGVyXG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOihEaXJlY3Qgd3JpdGVyKTtcbiAgICAgICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHJ1bl9pbXBsIGltcGwgc3BsaXRfb2sgaGFuZGxlX29rID1cbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGRlZmVyX3Jlc3VsdCAoZGF0YSA+Pnx+IGltcGwpKVxuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwIGFzIGVycikgLT5cbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4blxuICAgICAgICAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgICAgICAgICAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycilcbiAgICAgICAgICAgfCBPayAoRXJyb3IgZXJyKSAtPlxuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBlcnIpXG4gICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPlxuICAgICAgICAgICAgIGxldCBpbml0aWFsLCByZXN0ID0gc3BsaXRfb2sgb2sgaW5cbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgaW5pdGlhbCk7XG4gICAgICAgICAgICAgaGFuZGxlX29rIHJlc3RcbiAgICAgICAgIGluXG4gICAgICAgICAobWF0Y2ggaW1wbF93aXRoX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IGBQaXBlIGYgLT5cbiAgICAgICAgICAgIHJ1bl9pbXBsXG4gICAgICAgICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhKVxuICAgICAgICAgICAgICBGbi5pZFxuICAgICAgICAgICAgICAoZnVuIHBpcGVfciAtPlxuICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihQaXBlIHBpcGVfcik7XG4gICAgICAgICAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgICAgICAgICAgKFdyaXRlci50cmFuc2ZlclxuICAgICAgICAgICAgICAgICAgICAgIHQud3JpdGVyXG4gICAgICAgICAgICAgICAgICAgICAgcGlwZV9yXG4gICAgICAgICAgICAgICAgICAgICAgKENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlIHN0cmVhbV93cml0ZXIgdC5wYWNrZWRfc2VsZiBpZCkpO1xuICAgICAgICAgICAgICAgICBQaXBlLmNsb3NlZCBwaXBlX3JcbiAgICAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZV9yXG4gICAgICAgICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+XG4gICAgICAgICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl93cml0ZXJfbmF0MF90IChPayBgRW9mKTtcbiAgICAgICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZClcbiAgICAgICAgICB8IGBEaXJlY3QgKGYsIHdyaXRlcikgLT5cbiAgICAgICAgICAgIHJ1bl9pbXBsXG4gICAgICAgICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhIHdyaXRlcilcbiAgICAgICAgICAgICAgKGZ1biB4IC0+IHgsICgpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLnN0YXJ0IHdyaXRlcikpKTtcbiAgICAgIENvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IGZsdXNoIChUIHQpID1cbiAgICBhc3NlcnQgKG5vdCB0LnN0b3BwZWQpO1xuICAgIGxldCBwcm9kdWNlcnNfZmx1c2hlZCA9XG4gICAgICBIYXNodGJsLmZvbGQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmluaXQ6W10gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+XG4gICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICB8IERpcmVjdCBfIC0+IGFjY1xuICAgICAgICB8IFBpcGUgcGlwZSAtPiBEZWZlcnJlZC5pZ25vcmVfbSAoUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGUpIDo6IGFjYylcbiAgICBpblxuICAgIERlZmVycmVkLmFsbF91bml0IHByb2R1Y2Vyc19mbHVzaGVkXG4gIDs7XG5cbiAgbGV0IHN0b3AgKFQgdCkgPVxuICAgIHQuc3RvcHBlZCA8LSB0cnVlO1xuICAgIEhhc2h0YmwuaXRlciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRGlyZWN0IHdyaXRlciAtPlxuICAgICAgICAoKiBEb24ndCByZW1vdmUgdGhlIHdyaXRlciBmcm9tIHRoZSBpbnN0YW5jZSwgYXMgdGhhdCB3b3VsZCBtb2RpZnkgdGhlIGhhc2h0YWJsZVxuICAgICAgICAgICB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaXRlcmF0aW5nIG92ZXIuICopXG4gICAgICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB3cml0ZXJcbiAgICAgIHwgUGlwZSBfIC0+ICgpKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5IDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBgUmFpc2UgLT4gUnBjX2Vycm9yLnJhaXNlIGVycm9yIHQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgfCBgQ2FsbCBmIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGZcbiAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LlAuUXVlcnkudGFnKVxuICAgICAgICAgICB+dmVyc2lvbjpxdWVyeS52ZXJzaW9uXG4gICAgICAgd2l0aFxuICAgICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgICAgfCBgQ29udGludWUgLT4gQ29udGludWUpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gPSB0LmltcGxlbWVudGF0aW9ucyBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA6IERlc2NyaXB0aW9uLnQgPVxuICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IFNvbWUgKGxhc3RfZGVzYywgaW1wbGVtZW50YXRpb24pIHdoZW4gRGVzY3JpcHRpb24uZXF1YWwgbGFzdF9kZXNjIGRlc2NyaXB0aW9uIC0+XG4gICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgfCBOb25lIHwgU29tZSBfIC0+XG4gICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGltcGxlbWVudGF0aW9ucyBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgfCBTb21lIGltcGxlbWVudGF0aW9uIC0+XG4gICAgICAgICB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA8LSBTb21lIChkZXNjcmlwdGlvbiwgaW1wbGVtZW50YXRpb24pO1xuICAgICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICAgICAgICB8IGBFeHBlcnQgaW1wbCAtPlxuICAgICAgICAgICAgbGV0IHsgUC5RdWVyeS50YWc7IHZlcnNpb247IGlkOyBkYXRhID0gbGVuIH0gPSBxdWVyeSBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBsZXQgcmVzcG9uZGVyID0gUmVzcG9uZGVyLmNyZWF0ZSBpZCB0LndyaXRlciBpblxuICAgICAgICAgICAgICBpbXBsXG4gICAgICAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgdGFnKVxuICAgICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgICAgcmVzcG9uZGVyXG4gICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgfmxlbjoobGVuIDo+IGludClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBDb250aW51ZSBlbHNlIFdhaXQgZFxuICAgICAgICAgIHwgKGBDb250aW51ZSB8IGBSYWlzZSB8IGBDbG9zZV9jb25uZWN0aW9uIHwgYENhbGwgXykgYXMgb25fdW5rbm93bl9ycGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IFJwY19lcnJvci5VbmltcGxlbWVudGVkX3JwYyAocXVlcnkudGFnLCBgVmVyc2lvbiBxdWVyeS52ZXJzaW9uKSBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBxdWVyeS5pZCBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgKEVycm9yIGVycm9yKTtcbiAgICAgICAgICAgIGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5XG4gICAgICAgIChUIHQpXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBpZiB0LnN0b3BwZWQgfHwgV3JpdGVyLmlzX2Nsb3NlZCB0LndyaXRlclxuICAgIHRoZW4gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LlN0b3AgKE9rICgpKVxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IEluc3RhbmNlLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmxldCBjcmVhdGUgfmltcGxlbWVudGF0aW9uczppJ3Mgfm9uX3Vua25vd25fcnBjID1cbiAgKCogTWFrZSBzdXJlIHRoZSB0YWdzIGFyZSB1bmlxdWUuICopXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBEZXNjcmlwdGlvbi5UYWJsZS5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgbGV0IGR1cHMgPSBEZXNjcmlwdGlvbi5IYXNoX3NldC5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgTGlzdC5pdGVyIGkncyB+ZjooZnVuIChpIDogXyBJbXBsZW1lbnRhdGlvbi50KSAtPlxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICB7IERlc2NyaXB0aW9uLm5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGkudGFnOyB2ZXJzaW9uID0gaS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2NyaXB0aW9uIH5kYXRhOmkgd2l0aFxuICAgIHwgYE9rIC0+ICgpXG4gICAgfCBgRHVwbGljYXRlIC0+IEhhc2hfc2V0LmFkZCBkdXBzIGRlc2NyaXB0aW9uKTtcbiAgaWYgbm90IChIYXNoX3NldC5pc19lbXB0eSBkdXBzKVxuICB0aGVuIEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyAoSGFzaF9zZXQudG9fbGlzdCBkdXBzKSlcbiAgZWxzZVxuICAgIE9rXG4gICAgICB7IGltcGxlbWVudGF0aW9uc1xuICAgICAgOyBvbl91bmtub3duX3JwYyA9IChvbl91bmtub3duX3JwYyA6PiBfIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0KVxuICAgICAgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl90eXBlX2NsYXNzXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIG5lZ290aWF0ZSA6IHVzOnQgLT4gcGVlcjp0IC0+IGludCBPcl9lcnJvci50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQLkhlYWRlclxuXG4gIGxldCBuZWdvdGlhdGUgPSBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyOnRydWVcbiAgbGV0IHYxID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY3JlYXRlX2V4biB+cHJvdG9jb2w6UnBjIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cbmVuZFxuXG5tb2R1bGUgSGFuZHNoYWtlX2Vycm9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRW9mXG4gICAgICB8IFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgIHwgVGltZW91dFxuICAgICAgfCBSZWFkaW5nX2hlYWRlcl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGlvbl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBvZiBpbnRcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGV4Y2VwdGlvbiBIYW5kc2hha2VfZXJyb3Igb2YgKHQgKiBJbmZvLnQpIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IHRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB0ID0gSGFuZHNoYWtlX2Vycm9yICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKVxuZW5kXG5cbm1vZHVsZSBIZWFydGJlYXRfY29uZmlnID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KHRpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLilcbiAgICAgICAgPyhzZW5kX2V2ZXJ5ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAxMC4pXG4gICAgICAgICgpXG4gICAgPVxuICAgIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9XG4gIDs7XG5cbiAgbW9kdWxlIFJ1bnRpbWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgdG9fcnVudGltZSB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfSA9IHsgUnVudGltZS50aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbmVuZFxuXG50eXBlIHJlc3BvbnNlX2hhbmRsZXIgPVxuICBOYXQwLnQgUC5SZXNwb25zZS50XG4gIC0+IHJlYWRfYnVmZmVyOkJpZ3N0cmluZy50XG4gIC0+IHJlYWRfYnVmZmVyX3Bvc19yZWY6aW50IHJlZlxuICAtPiBbIGBrZWVwXG4gICAgIHwgYHdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIHwgYHJlbW92ZSBvZiB1bml0IFJwY19yZXN1bHQudFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIF1cblxudHlwZSB0ID1cbiAgeyBkZXNjcmlwdGlvbiA6IEluZm8udFxuICA7IGhlYXJ0YmVhdF9jb25maWcgOiBIZWFydGJlYXRfY29uZmlnLlJ1bnRpbWUudFxuICA7IG11dGFibGUgaGVhcnRiZWF0X2NhbGxiYWNrcyA6ICh1bml0IC0+IHVuaXQpIGFycmF5XG4gIDsgbXV0YWJsZSBsYXN0X3NlZW5fYWxpdmUgOiBUaW1lX25zLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90X2h1bV93cml0ZXIgdCA9XG4gIFslc2V4cCB7IGRlc2NyaXB0aW9uIDogSW5mby50ID0gdC5kZXNjcmlwdGlvbjsgd3JpdGVyIDogV3JpdGVyLnQgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoV3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKSB0aGVuIEVycm9yIGBDbG9zZWQgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBXcml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBmbHVzaGVkIHQgPSBXcml0ZXIuZmx1c2hlZCB0LndyaXRlclxuXG5sZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdCAtPiAnYSBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiAnYSA9XG4gIGZ1biB0IHIgLT5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgU2VudCB4IC0+IHhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbGwgb2YgdGhlIHBsYWNlcyB3ZSBjYWxsIFtoYW5kbGVfc2VuZF9yZXN1bHRdIGNoZWNrIHdoZXRoZXIgW3RdIGlzIGNsb3NlZFxuICAgICAgICh1c3VhbGx5IHZpYSB0aGUgW3dyaXRlcl0gZnVuY3Rpb24gYWJvdmUpLiBUaGlzIGNoZWNrcyB3aGV0aGVyIFt0LndyaXRlcl0gaXNcbiAgICAgICBjbG9zZWQsIHdoaWNoIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyBbdF0gaXMgY2xvc2VkLiAqKVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUlBDIGNvbm5lY3Rpb24gZ290IGNsb3NlZCB3cml0ZXJcIiB0IHNleHBfb2ZfdF9odW1fd3JpdGVyXG4gIHwgTWVzc2FnZV90b29fYmlnIF8gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJXNleHBcbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICwgeyByZWFzb24gPSAociA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpOyBjb25uZWN0aW9uID0gKHQgOiB0X2h1bV93cml0ZXIpIH1dXG47O1xuXG5sZXQgZGlzcGF0Y2ggdCB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCBhcyByIC0+IHJcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTpxdWVyeS5QLlF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICB3cml0ZXJcbiAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9xdWVyeSkpXG4gICAgICAoUXVlcnkgcXVlcnkpXG4gICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgT2sgKClcbjs7XG5cbmxldCBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBkb19zZW5kIHQgfnRhZyB+dmVyc2lvbiBidWYgfnBvcyB+bGVuIH5yZXNwb25zZV9oYW5kbGVyID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICBRdWVyeSB7IHRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH1cbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgZG9fc2VuZCB3cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHRcbiAgICBpblxuICAgIE9rIHJlc3VsdFxuOztcblxubGV0IGRpc3BhdGNoX2JpZ3N0cmluZyA9IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcblxubGV0IHNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZyA9XG4gIG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbjs7XG5cbmxldCBoYW5kbGVfcmVzcG9uc2UgdCAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudCkgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZCB3aXRoXG4gIHwgTm9uZSAtPiBTdG9wIChFcnJvciAoUnBjX2Vycm9yLlVua25vd25fcXVlcnlfaWQgcmVzcG9uc2UuaWQpKVxuICB8IFNvbWUgcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgIChtYXRjaCByZXNwb25zZV9oYW5kbGVyIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiB3aXRoXG4gICAgIHwgYGtlZXAgLT4gQ29udGludWVcbiAgICAgfCBgd2FpdCB3YWl0IC0+IFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgd2FpdCAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmUgcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgKG1hdGNoIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIF8gLT4gQ29udGludWVcbiAgICAgICAgICAgfCBCaW5faW9fZXhuIF9cbiAgICAgICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgICAgICB8IFdyaXRlX2Vycm9yIF9cbiAgICAgICAgICAgfCBVbmNhdWdodF9leG4gX1xuICAgICAgICAgICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBTdG9wIChFcnJvciBlKSkpKVxuOztcblxubGV0IGhhbmRsZV9tc2dcbiAgICAgIHRcbiAgICAgIChtc2cgOiBfIFAuTWVzc2FnZS50KVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBtc2cgd2l0aFxuICB8IEhlYXJ0YmVhdCAtPlxuICAgIEFycmF5Lml0ZXIgdC5oZWFydGJlYXRfY2FsbGJhY2tzIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgICBDb250aW51ZVxuICB8IFJlc3BvbnNlIHJlc3BvbnNlIC0+IGhhbmRsZV9yZXNwb25zZSB0IHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICB8IFF1ZXJ5IHF1ZXJ5IC0+XG4gICAgbGV0IGluc3RhbmNlID0gU2V0X29uY2UuZ2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuOztcblxubGV0IGNsb3NlX3JlYXNvbiB0IH5vbl9jbG9zZSA9XG4gIGxldCByZWFzb24gPSBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkIGluXG4gIG1hdGNoIG9uX2Nsb3NlIHdpdGhcbiAgfCBgc3RhcnRlZCAtPiByZWFzb25cbiAgfCBgZmluaXNoZWQgLT5cbiAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkIGluXG4gICAgcmVhc29uXG47O1xuXG5sZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG5cbmxldCBhZGRfaGVhcnRiZWF0X2NhbGxiYWNrIHQgZiA9XG4gICgqIEFkZGluZyBoZWFydGJlYXQgY2FsbGJhY2tzIGlzIHJlbGF0aXZlbHkgcmFyZSwgYnV0IHRoZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZCBhIGxvdC5cbiAgICAgVGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG1ha2VzIHRoZSBhZGRpdGlvbiBxdWFkcmF0aWMgZm9yIHRoZSBzYWtlIG9mIGtlZXBpbmcgdGhlXG4gICAgIHRyaWdnZXJpbmcgY2hlYXAuICopXG4gIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LmhlYXJ0YmVhdF9jYWxsYmFja3Ncbjs7XG5cbmxldCByZXNldF9oZWFydGJlYXRfdGltZW91dCB0IHRpbWVvdXQgPVxuICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dCA8LSB0aW1lb3V0O1xuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZVxuOztcblxubGV0IGxhc3Rfc2Vlbl9hbGl2ZSB0ID0gdC5sYXN0X3NlZW5fYWxpdmVcblxubGV0IGFib3J0X2hlYXJ0YmVhdGluZyB0ID1cbiAgT3B0aW9uLml0ZXIgKFNldF9vbmNlLmdldCB0LmhlYXJ0YmVhdF9ldmVudCkgfmY6KGZ1biBldmVudCAtPlxuICAgIG1hdGNoIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0IHQudGltZV9zb3VyY2UgZXZlbnQgd2l0aFxuICAgIHwgT2sgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkIC0+ICgpXG4gICAgfCBDdXJyZW50bHlfaGFwcGVuaW5nIC0+XG4gICAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ydW5fYWZ0ZXIgdC50aW1lX3NvdXJjZSBUaW1lX25zLlNwYW4uemVybyAoZnVuICgpIC0+XG4gICAgICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0X2V4biB0LnRpbWVfc291cmNlIGV2ZW50KSlcbjs7XG5cbmxldCBjbG9zZSA/KHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9pbnRfc2VjIDUpIH5yZWFzb24gdCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIGFib3J0X2hlYXJ0YmVhdGluZyB0O1xuICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgcmVhc29uO1xuICAgIChtYXRjaCBTZXRfb25jZS5nZXQgdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICB8IFNvbWUgaW5zdGFuY2UgLT5cbiAgICAgICBsZXQgZmx1c2hlZCA9IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5mbHVzaCBpbnN0YW5jZSBpblxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZmx1c2hlZFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2U7XG4gICAgICAgICBmbHVzaGVkKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIERlZmVycmVkLmFueV91bml0XG4gICAgICAgICAgICAgWyBmbHVzaGVkXG4gICAgICAgICAgICAgOyBXcml0ZXIuc3RvcHBlZCB0LndyaXRlclxuICAgICAgICAgICAgIDsgVGltZV9zb3VyY2UuYWZ0ZXJcbiAgICAgICAgICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICAgICAgICAgIHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgICAgICAgIF1cbiAgICAgICAgIGluXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZSkpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIFdyaXRlci5jbG9zZSB0LndyaXRlclxuICAgID4+PiBmdW4gKCkgLT4gUmVhZGVyLmNsb3NlIHQucmVhZGVyID4+PiBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpO1xuICBjbG9zZV9maW5pc2hlZCB0XG47O1xuXG5sZXQgb25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPVxuICBsZXQgZiBidWYgfnBvcyB+bGVuOl8gOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICBsZXQgbmF0MF9tc2cgPSBQLk1lc3NhZ2UuYmluX3JlYWRfbmF0MF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgIG1hdGNoXG4gICAgICBoYW5kbGVfbXNnXG4gICAgICAgIHRcbiAgICAgICAgbmF0MF9tc2dcbiAgICAgICAgfnJlYWRfYnVmZmVyOmJ1ZlxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpwb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICB3aXRoXG4gICAgfCBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgV2FpdCBfIGFzIHJlcyAtPiByZXNcbiAgICB8IFN0b3AgcmVzdWx0IC0+XG4gICAgICBsZXQgcmVhc29uID1cbiAgICAgICAgbGV0IG1zZyA9IFwiUnBjIG1lc3NhZ2UgaGFuZGxpbmcgbG9vcCBzdG9wcGVkXCIgaW5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBJbmZvLm9mX3N0cmluZyBtc2dcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgSW5mby5jcmVhdGVcbiAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgZVxuICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgXCJDb25uZWN0aW9uLm9uX21lc3NhZ2UgcmVzdWx0ZWQgaW4gQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IuIFRoaXMgaXMgXFxcbiAgICAgICAgICAgICAgICAgIHdlaXJkLlwiXSkpXG4gICAgICBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBTdG9wIHJlYXNvblxuICBpblxuICBTdGFnZWQuc3RhZ2UgZlxuOztcblxubGV0IGhlYXJ0YmVhdF9ub3cgdCA9XG4gIGxldCBzaW5jZV9sYXN0X2hlYXJ0YmVhdCA9XG4gICAgVGltZV9ucy5kaWZmIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSkgdC5sYXN0X3NlZW5fYWxpdmVcbiAgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPiApIHNpbmNlX2xhc3RfaGVhcnRiZWF0IHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gIHRoZW4gKFxuICAgIGxldCByZWFzb24gKCkgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICAhXCJObyBoZWFydGJlYXRzIHJlY2VpdmVkIGZvciAle3NleHA6VGltZV9ucy5TcGFuLnR9LlwiXG4gICAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3RodW5rIHJlYXNvbikpKVxuICBlbHNlIChcbiAgICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+ICgpXG4gICAgfCBPayB3cml0ZXIgLT5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdClcbjs7XG5cbmxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC5cblxubGV0IGNsZWFudXAgdCB+cmVhc29uIGV4biA9XG4gIGRvbid0X3dhaXRfZm9yIChjbG9zZSB+cmVhc29uIHQpO1xuICBpZiBub3QgKEhhc2h0YmwuaXNfZW1wdHkgdC5vcGVuX3F1ZXJpZXMpXG4gIHRoZW4gKFxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgfCBScGNfZXJyb3IuUnBjIChlcnJvciwgKF8gOiBJbmZvLnQpKSAtPiBlcnJvclxuICAgICAgfCBleG4gLT4gVW5jYXVnaHRfZXhuIChFeG4uc2V4cF9vZl90IGV4bilcbiAgICBpblxuICAgICgqIGNsZWFuIHVwIG9wZW4gc3RyZWFtaW5nIHJlc3BvbnNlcyAqKVxuICAgICgqIGFuIHVuZm9ydHVuYXRlIGhhY2s7IG9rIGJlY2F1c2UgdGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBoYXZlIG5vdGhpbmdcbiAgICAgICB0byByZWFkIGZvbGxvd2luZyBhIHJlc3BvbnNlIHdoZXJlIFtkYXRhXSBpcyBhbiBlcnJvciAqKVxuICAgIGxldCBkdW1teV9idWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDEgaW5cbiAgICBsZXQgZHVtbXlfcmVmID0gcmVmIDAgaW5cbiAgICBIYXNodGJsLml0ZXJpIHQub3Blbl9xdWVyaWVzIH5mOihmdW4gfmtleTpxdWVyeV9pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyOmR1bW15X2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpkdW1teV9yZWZcbiAgICAgICAgICAgeyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gRXJyb3IgZXJyb3IgfSkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3F1ZXJpZXM7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGR1bW15X2J1ZmZlcilcbjs7XG5cbmxldCBzY2hlZHVsZV9oZWFydGJlYXRzIHQgPVxuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZTtcbiAgbGV0IGhlYXJ0YmVhdF9mcm9tX25vd19vbiA9XG4gICAgKCogW2F0X2ludGVydmFsc10gd2lsbCBzY2hlZHVsZSB0aGUgZmlyc3QgaGVhcnRiZWF0IHRoZSBmaXJzdCB0aW1lIHRoZSB0aW1lX3NvdXJjZSBpc1xuICAgICAgIGFkdmFuY2VkICopXG4gICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYXRfaW50ZXJ2YWxzXG4gICAgICB0LnRpbWVfc291cmNlXG4gICAgICB0LmhlYXJ0YmVhdF9jb25maWcuc2VuZF9ldmVyeVxuICAgICAgKGZ1biAoKSAtPiBoZWFydGJlYXRfbm93IHQpXG4gIGluXG4gIFNldF9vbmNlLnNldF9leG4gdC5oZWFydGJlYXRfZXZlbnQgWyVoZXJlXSBoZWFydGJlYXRfZnJvbV9ub3dfb25cbjs7XG5cbmxldCBydW5fYWZ0ZXJfaGFuZHNoYWtlIHQgfmltcGxlbWVudGF0aW9ucyB+Y29ubmVjdGlvbl9zdGF0ZSB+d3JpdGVyX21vbml0b3JfZXhucyA9XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXI6dC53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB+aGFuZHNoYWtlX3RpbWVvdXQgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCAtPiByZXR1cm4gKEVycm9yIEhhbmRzaGFrZV9lcnJvci5UcmFuc3BvcnRfY2xvc2VkKVxuICB8IE9rIHdyaXRlciAtPlxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBIZWFkZXIuYmluX3Qud3JpdGVyIEhlYWRlci52MSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICAoKiBJZiB3ZSB1c2UgW21heF9jb25uZWN0aW9uc10gaW4gdGhlIHNlcnZlciwgdGhlbiB0aGlzIHJlYWQgbWF5IGp1c3QgaGFuZyB1bnRpbCB0aGVcbiAgICAgICBzZXJ2ZXIgc3RhcnRzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgKHdoaWNoIGNvdWxkIGJlIG5ldmVyKS4gIFRoYXQgaXMgd2h5IGFcbiAgICAgICB0aW1lb3V0IGlzIHVzZWQgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0LnJlYWRlciBIZWFkZXIuYmluX3QucmVhZGVyKVxuICAgIGluXG4gICAgKG1hdGNoJW1hcFxuICAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICBoYW5kc2hha2VfdGltZW91dFxuICAgICAgICAgcmVzdWx0XG4gICAgIHdpdGhcbiAgICAgfCBgVGltZW91dCAtPlxuICAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgIHVwLiAqKVxuICAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiSGFuZHNoYWtlIHRpbWVvdXRcIikpO1xuICAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgIHwgYFJlc3VsdCAoRXJyb3IgZXhuKSAtPlxuICAgICAgIGxldCByZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIltSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdF0gcmFpc2VkXCIgaW5cbiAgICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgICBFcnJvciAoUmVhZGluZ19oZWFkZXJfZmFpbGVkIChFcnJvci5vZl9leG4gZXhuKSlcbiAgICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYEVvZikpIC0+IEVycm9yIEVvZlxuICAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICB8IGBSZXN1bHQgKE9rIChPayBwZWVyKSkgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm5lZ290aWF0ZSB+dXM6SGVhZGVyLnYxIH5wZWVyIHdpdGhcbiAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChOZWdvdGlhdGlvbl9mYWlsZWQgZSlcbiAgICAgICAgfCBPayAxIC0+IE9rICgpXG4gICAgICAgIHwgT2sgaSAtPiBFcnJvciAoTmVnb3RpYXRlZF91bmV4cGVjdGVkX3ZlcnNpb24gaSkpKVxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2w6UnBjXG5cbmxldCBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICA/KGhhbmRzaGFrZV90aW1lb3V0ID0gZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dClcbiAgICAgID8oaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcuY3JlYXRlICgpKVxuICAgICAgPyhkZXNjcmlwdGlvbiA9IEluZm8ub2Zfc3RyaW5nIFwiPGNyZWF0ZWQtZGlyZWN0bHk+XCIpXG4gICAgICA/KHRpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICh7IHJlYWRlcjsgd3JpdGVyIH0gOiBUcmFuc3BvcnQudClcbiAgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID1cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKVxuICAgIHwgU29tZSBzIC0+IHNcbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgZGVzY3JpcHRpb25cbiAgICA7IGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLnRvX3J1bnRpbWUgaGVhcnRiZWF0X2NvbmZpZ1xuICAgIDsgaGVhcnRiZWF0X2NhbGxiYWNrcyA9IFt8fF1cbiAgICA7IGxhc3Rfc2Vlbl9hbGl2ZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0aW1lX3NvdXJjZVxuICAgIDsgcmVhZGVyXG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fcXVlcmllcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgaGVhcnRiZWF0X2V2ZW50ID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICBsZXQgd3JpdGVyX21vbml0b3JfZXhucyA9IE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIChXcml0ZXIubW9uaXRvciB3cml0ZXIpIGluXG4gIHVwb24gKFdyaXRlci5zdG9wcGVkIHdyaXRlcikgKGZ1biAoKSAtPlxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUlBDIHRyYW5zcG9ydCBzdG9wcGVkXCIpKSk7XG4gIG1hdGNoJW1hcCBkb19oYW5kc2hha2UgdCB+aGFuZHNoYWtlX3RpbWVvdXQgd2l0aFxuICB8IE9rICgpIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZSB0IH5pbXBsZW1lbnRhdGlvbnMgfmNvbm5lY3Rpb25fc3RhdGUgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOlxuICAgICAgICBgU2NoZWR1bGVcbiAgICAgIH5yZXN0OmBMb2dcbiAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLndpdGhfY2xvc2UgZmluaXNoZWRcIikpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQlYmluZCByZXN1bHQgPSBkaXNwYXRjaF9xdWVyaWVzIHQgaW5cbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBjbG9zZV9maW5pc2hlZCB0XG4gICAgICAgICBpblxuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IHNlcnZlcl93aXRoX2Nsb3NlXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBvbl9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGBDYWxsIGZcbiAgICB8IGBSYWlzZSAtPiBgUmFpc2VcbiAgICB8IGBJZ25vcmUgLT4gYENhbGwgKGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gIGluXG4gIHdpdGhfY2xvc2VcbiAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgID9kZXNjcmlwdGlvblxuICAgID90aW1lX3NvdXJjZVxuICAgIHRyYW5zcG9ydFxuICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgICB+ZGlzcGF0Y2hfcXVlcmllczooZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbjs7XG5cbmxldCBjbG9zZVxuICAgICAgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgPyhyZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLmNsb3NlXCIpXG4gICAgICB0XG4gID1cbiAgY2xvc2UgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCB+cmVhc29uIHRcbjs7XG5cbm1vZHVsZSBDbGllbnRfaW1wbGVtZW50YXRpb25zID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdzIHQgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA6IHQgLT4gJ3NcbiAgICA7IGltcGxlbWVudGF0aW9ucyA6ICdzIEltcGxlbWVudGF0aW9ucy50XG4gICAgfVxuXG4gIGxldCBudWxsICgpID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgPSAoZnVuIF8gLT4gKCkpOyBpbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKSB9XG4gIDs7XG5lbmRcbiIsIlxub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9uID0gSW1wbGVtZW50YXRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcbm1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+PX4gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG5tb2R1bGUgUnBjX2NvbW1vbiA9IHN0cnVjdFxuICBsZXQgZGlzcGF0Y2hfcmF3J1xuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gcXVlcnkgfSBpblxuICAgIG1hdGNoIENvbm5lY3Rpb24uZGlzcGF0Y2ggY29ubiB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgUnBjX2Vycm9yLkNvbm5lY3Rpb25fY2xvc2VkXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX3JhdyBjb25uIH50YWcgfnZlcnNpb24gfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IH5xdWVyeV9pZCB+ZiA9XG4gICAgbGV0IHJlc3BvbnNlX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIChtYXRjaFxuICAgICAgIGRpc3BhdGNoX3JhdydcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH50YWdcbiAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIChmIHJlc3BvbnNlX2l2YXIpKVxuICAgICB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gSXZhci5maWxsIHJlc3BvbnNlX2l2YXIgZSk7XG4gICAgSXZhci5yZWFkIHJlc3BvbnNlX2l2YXJcbiAgOztcbmVuZFxuXG5sZXQgc2hhcGVzIGxzdCA9XG4gIFNleHAuTGlzdFxuICAgIChMaXN0Lm1hcCBsc3QgfmY6KGZ1biAobmFtZSwgc2hhcGUpIC0+XG4gICAgICAgWyVtZXNzYWdlXG4gICAgICAgICBcIlwiIH5fOihuYW1lIDogc3RyaW5nKSB+XzooQmluX3Byb3QuU2hhcGUuZXZhbF90b19kaWdlc3Rfc3RyaW5nIHNoYXBlIDogc3RyaW5nKV0pKVxuOztcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcbiAgbGV0IHNoYXBlcyB0ID0gc2hhcGVzIFsgXCJxdWVyeVwiLCB0LmJpbl9xdWVyeS5zaGFwZTsgXCJyZXNwb25zZVwiLCB0LmJpbl9yZXNwb25zZS5zaGFwZSBdXG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gUnBjICh0LmJpbl9xdWVyeS5yZWFkZXIsIHQuYmluX3Jlc3BvbnNlLndyaXRlciwgZiwgRGVmZXJyZWQpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gUnBjICh0LmJpbl9xdWVyeS5yZWFkZXIsIHQuYmluX3Jlc3BvbnNlLndyaXRlciwgZiwgQmxvY2tpbmcpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpXG4gICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZSA9XG4gICAgICAgIHJlc3BvbnNlLmRhdGFcbiAgICAgICAgPj49fiBmdW4gbGVuIC0+XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgdC5iaW5fcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHJwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGwgaXZhciByZXNwb25zZTtcbiAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSBpblxuICAgIHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID0gZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgIGNvbm5cbiAgICAgICAgfnRhZzooUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnKVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICBidWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIHJlc3BvbnNlX2hhbmRsZXIpXG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaCBjb25uIH5ycGNfdGFnIH52ZXJzaW9uIGJ1ZiB+cG9zIH5sZW4gfmhhbmRsZV9yZXNwb25zZSB+aGFuZGxlX2Vycm9yID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBCbG9ja2luZylcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb25cbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKFNleHAuQXRvbSBcIlVua25vd25cIilcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbidcbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKFNleHAuQXRvbSBcIlVua25vd25cIilcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgdHlwZSAnbXNnIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9tc2cgOiAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgbXNnX3R5cGVfaWQgOiAnbXNnIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG5cbiAgbGV0IGNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZyA9XG4gICAgbGV0IG1zZ190eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9Om1zZ1wiXSBzZXhwX29mX29wYXF1ZSBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lOyB2ZXJzaW9uOyBiaW5fbXNnOyBtc2dfdHlwZV9pZCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID0gc2hhcGVzIFsgXCJtc2dcIiwgdC5iaW5fbXNnLnNoYXBlIF1cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgbXNnX3R5cGVfaWQgdCA9IHQubXNnX3R5cGVfaWRcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIGYpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fbXNnLndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSB8PiBmdW4gcmVzdWx0IC0+IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID0gT3JfZXJyb3Iub2tfZXhuIChkaXNwYXRjaCB0IGNvbm4gcXVlcnkpXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gT25lX3dheV9leHBlcnQgZlxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaCB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9IGNvbm4gYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayBmbHVzaGVkIC0+IGBGbHVzaGVkIGZsdXNoZWRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICB8IEVycm9yIG9mIEVycm9yLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgICAgfCBDbG9zZWRfbG9jYWxseVxuICAgICAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgICAgICB8IEVycm9yIG9mIEVycm9yLlN0YWJsZS5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbigqIHRoZSBiYXNpcyBvZiB0aGUgaW1wbGVtZW50YXRpb25zIG9mIFBpcGVfcnBjIGFuZCBTdGF0ZV9ycGMgKilcbm1vZHVsZSBTdHJlYW1pbmdfcnBjID0gc3RydWN0XG4gIG1vZHVsZSBJbml0aWFsX21lc3NhZ2UgPSBQLlN0cmVhbV9pbml0aWFsX21lc3NhZ2VcblxuICB0eXBlICgncXVlcnksICdpbml0aWFsX3Jlc3BvbnNlLCAndXBkYXRlX3Jlc3BvbnNlLCAnZXJyb3JfcmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlIDogJ2luaXRpYWxfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlIDogJ3VwZGF0ZV9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA6ICdlcnJvcl9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgOiAnaW5pdGlhbF9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkIDogJ3VwZGF0ZV9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgOiAnZXJyb3JfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgY2xpZW50X3B1c2hlc19iYWNrID1cbiAgICAgIG1hdGNoIGNsaWVudF9wdXNoZXNfYmFjayB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBlcnJvcl9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTplcnJvclwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA9IGJpbl9lcnJvclxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX2luaXRpYWxfbWVzc2FnZSB4ID1cbiAgICB7IEluaXRpYWxfbWVzc2FnZS51bnVzZWRfcXVlcnlfaWQgPSBQLlVudXNlZF9xdWVyeV9pZC50OyBpbml0aWFsID0geCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBzaGFwZXNcbiAgICAgIFsgXCJxdWVyeVwiLCB0LmJpbl9xdWVyeS5zaGFwZVxuICAgICAgOyBcImluaXRpYWwtcmVzcG9uc2VcIiwgdC5iaW5faW5pdGlhbF9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBcInVwZGF0ZS1yZXNwb25zZVwiLCB0LmJpbl91cGRhdGVfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgXCJlcnJvclwiLCB0LmJpbl9lcnJvcl9yZXNwb25zZS5zaGFwZVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZ2VuIHQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIGltcGwgPVxuICAgIGxldCBiaW5faW5pdF93cml0ZXIgPVxuICAgICAgSW5pdGlhbF9tZXNzYWdlLmJpbl93cml0ZXJfdFxuICAgICAgICB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICB0LmJpbl9lcnJvcl9yZXNwb25zZS53cml0ZXJcbiAgICBpblxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPVxuICAgICAgICBTdHJlYW1pbmdfcnBjXG4gICAgICAgICAgKHQuYmluX3F1ZXJ5LnJlYWRlciwgYmluX2luaXRfd3JpdGVyLCB0LmJpbl91cGRhdGVfcmVzcG9uc2Uud3JpdGVyLCBpbXBsKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoRXJyb3IgZXJyKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpXG4gICAgaW5cbiAgICBpbXBsZW1lbnRfZ2VuIHQgP29uX2V4Y2VwdGlvbiAoUGlwZSBmKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5IHdyaXRlciA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdyaXRlciB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiBFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgeClcbiAgICAgIHwgT2sgXyBhcyB4IC0+IE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9IHsgUC5RdWVyeS50YWcgPSB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbjsgaWQ7IGRhdGEgPSBgQWJvcnQgfSBpblxuICAgIGlnbm9yZVxuICAgICAgKENvbm5lY3Rpb24uZGlzcGF0Y2hcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OlAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgICA6ICh1bml0LCBbIGBDbG9zZWQgXSkgUmVzdWx0LnQpXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFVwZGF0ZSBvZiAnYVxuICAgICAgfCBDbG9zZWQgb2YgWyBgQnlfcmVtb3RlX3NpZGUgfCBgRXJyb3Igb2YgRXJyb3IudCBdXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ29udGludWVcbiAgICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfbWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IERlZmVycmVkLnRcbiAgICAgIH1cblxuICAgIGxldCBpZCB0ID0gdC5xdWVyeV9pZFxuICAgIGxldCBjbG9zZV9yZWFzb24gdCA9IHQuY2xvc2VfcmVhc29uXG4gIGVuZFxuXG4gIG1vZHVsZSBSZXNwb25zZV9zdGF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcGRhdGVfaGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9yZXNwb25zZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5pdGlhbCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIHQgPVxuICAgICAgICB7IHJwYyA6ICgncSwgJ2ksICd1LCAnZSkgdFxuICAgICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICAgIDsgbWFrZV91cGRhdGVfaGFuZGxlciA6IHVuaXQgLT4gJ2V4dHJhICogJ3UgVXBkYXRlX2hhbmRsZXIudFxuICAgICAgICA7IGl2YXIgOiAoUC5RdWVyeV9pZC50ICogJ2kgKiAnZXh0cmEsICdlKSBSZXN1bHQudCBScGNfcmVzdWx0LnQgSXZhci50XG4gICAgICAgIDsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSA6ICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSBJbml0aWFsLnQgLT4gJ3UgdFxuICAgICAgICB8IFdyaXRpbmdfdXBkYXRlcyBvZiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICdhIFVwZGF0ZV9oYW5kbGVyLnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnQgfVxuICBlbmRcblxuICBsZXQgcmVhZF9lcnJvclxuICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uXG4gICAgICAgIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KVxuICAgICAgICBlcnJcbiAgICA9XG4gICAgbGV0IGNvcmVfZXJyID1cbiAgICAgIEVycm9yLnRfb2Zfc2V4cCAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGVycilcbiAgICBpblxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIChgRXJyb3IgY29yZV9lcnIpKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoRXJyb3IgZXJyKVxuICA7O1xuXG4gIGxldCBlb2YgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpID1cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCBgQnlfcmVtb3RlX3NpZGUpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChPayAoKSlcbiAgOztcblxuICBsZXQgcmVzcG9uc2VfaGFuZGxlciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGluaXRpYWxfc3RhdGVcbiAgICA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgb3BlbiBSZXNwb25zZV9zdGF0ZSBpblxuICAgIGxldCBzdGF0ZSA9IHsgc3RhdGUgPSBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfc3RhdGUgfSBpblxuICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgIG1hdGNoIHN0YXRlLnN0YXRlIHdpdGhcbiAgICAgIHwgV3JpdGluZ191cGRhdGVzIChiaW5fcmVhZGVyX3VwZGF0ZSwgaGFuZGxlcikgLT5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYEVvZiAtPiAwXG4gICAgICAgICAgICAgICAgIHwgYE9rIChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICB8IE9rIGBFb2YgLT4gZW9mIGhhbmRsZXJcbiAgICAgICAgICAgIHwgT2sgKGBPayBsZW4pIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgICAgYmluX3JlYWRlcl91cGRhdGVcbiAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgICAgIHwgT2sgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaGFuZGxlciAoVXBkYXRlIGRhdGEpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ29udGludWUgLT4gYGtlZXBcbiAgICAgICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGB3YWl0IGQpKSkpXG4gICAgICB8IFN0YXRlLldhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9oYW5kbGVyIC0+XG4gICAgICAgICgqIFdlIG5ldmVyIHVzZSBbYHJlbW92ZSAoRXJyb3IgXyldIGhlcmUsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCwgYW5kIHRoZXNlIGFyZSBcIm5vcm1hbFwiIGVycm9ycy4gKEluIGNvbnRyYXN0LCB0aGVcbiAgICAgICAgICAgZXJyb3JzIHdlIGdldCBpbiB0aGUgW1dyaXRpbmdfdXBkYXRlc190b19waXBlXSBjYXNlIGluZGljYXRlIG1vcmUgc2VyaW91c1xuICAgICAgICAgICBwcm9ibGVtcy4pIEluc3RlYWQsIHdlIGp1c3QgcHV0IGVycm9ycyBpbiBbaXZhcl0uICopXG4gICAgICAgIGxldCBlcnJvciBlcnIgPVxuICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgaW5pdGlhbCA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIChJbml0aWFsX21lc3NhZ2UuYmluX3JlYWRlcl90XG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fZXJyb3JfcmVzcG9uc2UucmVhZGVyKVxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgaW5pdGlhbF9yZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGluaXRpYWwgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICAgICB8IE9rIGluaXRpYWxfbXNnIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpbml0aWFsX21zZy5pbml0aWFsIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoT2sgKEVycm9yIGVycikpO1xuICAgICAgICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICAgICAgIHwgT2sgaW5pdGlhbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZXh0cmEsIGhhbmRsZXIgPSBpbml0aWFsX2hhbmRsZXIubWFrZV91cGRhdGVfaGFuZGxlciAoKSBpblxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIuaXZhclxuICAgICAgICAgICAgICAgICAgIChPayAoT2sgKGluaXRpYWxfaGFuZGxlci5xdWVyeV9pZCwgaW5pdGlhbCwgZXh0cmEpKSk7XG4gICAgICAgICAgICAgICAgIHN0YXRlLnN0YXRlXG4gICAgICAgICAgICAgICAgIDwtIFdyaXRpbmdfdXBkYXRlc1xuICAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsX2hhbmRsZXIucnBjLmJpbl91cGRhdGVfcmVzcG9uc2UucmVhZGVyLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgYGtlZXApKSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZ2VuIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICBjb25uXG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgIH5xdWVyeVxuICAgICAgfmY6KGZ1biBpdmFyIC0+XG4gICAgICAgIHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICB7IHJwYyA9IHQ7IHF1ZXJ5X2lkOyBjb25uZWN0aW9uID0gY29ubjsgaXZhcjsgbWFrZV91cGRhdGVfaGFuZGxlciB9KVxuICAgID4+fCBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbiAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9pdGVyIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPiAoKSwgZikgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKCkpKSAtPiBPayAoT2sgKGlkLCBpbml0KSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgdCBmID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0IHQgZlxuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsICgpLCBwaXBlX3IpIC0+IHBpcGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBleGNlcHRpb24gUGlwZV9ycGNfZmFpbGVkXG5cbiAgbGV0IGRpc3BhdGNoX2V4biB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIHJwY19lcnJvciAtPiByYWlzZSAoRXJyb3IudG9fZXhuIHJwY19lcnJvcilcbiAgICB8IE9rIChFcnJvciBfKSAtPiByYWlzZSBQaXBlX3JwY19mYWlsZWRcbiAgICB8IE9rIChPayBwaXBlX2FuZF9pZCkgLT4gcGlwZV9hbmRfaWRcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gU3RyZWFtaW5nX3JwYy5QaXBlX21lc3NhZ2VcbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfcmVzcG9uc2VcblxuICBsZXQgZGlzcGF0Y2hfaXRlciB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoX2l0ZXIgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2VcbiAgICA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCBzdGF0ZSwgdXBkYXRlX3IpIC0+IHN0YXRlLCB1cGRhdGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHN0YXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5pbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHVwZGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIEFueSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUnBjIDogKCdxLCAncikgUnBjLnQgLT4gdFxuICAgIHwgUGlwZSA6ICgncSwgJ3IsICdlKSBQaXBlX3JwYy50IC0+IHRcbiAgICB8IFN0YXRlIDogKCdxLCAncywgJ3UsICdlKSBTdGF0ZV9ycGMudCAtPiB0XG4gICAgfCBPbmVfd2F5IDogJ20gT25lX3dheS50IC0+IHRcblxuICBsZXQgZGVzY3JpcHRpb24gPSBmdW5jdGlvblxuICAgIHwgUnBjIHJwYyAtPiBScGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBQaXBlIHJwYyAtPiBQaXBlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFN0YXRlIHJwYyAtPiBTdGF0ZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBPbmVfd2F5IHJwYyAtPiBPbmVfd2F5LmRlc2NyaXB0aW9uIHJwY1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb24uU3RhYmxlXG4gIG1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IFBpcGVfY2xvc2VfcmVhc29uLlN0YWJsZVxuICBtb2R1bGUgUnBjID0gUnBjXG4gIG1vZHVsZSBQaXBlX3JwYyA9IFBpcGVfcnBjXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBTdGF0ZV9ycGNcbiAgbW9kdWxlIE9uZV93YXkgPSBPbmVfd2F5XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUnBjXG5cbm1vZHVsZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICB0eXBlICdpbnB1dCB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IGNvbnZlcnQgOiAnaW5wdXQgLT4gJ291dHB1dFxuICAgICAgICA7IHdyaXRlciA6ICdvdXRwdXQgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICdpbnB1dCB0XG5cbiAgbGV0IGNyZWF0ZSB+Y29udmVydCB+d3JpdGVyID0gVCB7IGNvbnZlcnQ7IHdyaXRlciB9XG5cbiAgbGV0IHdyaXRlIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZSB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCBjbG9zZSAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3cml0ZXJcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5pc19jbG9zZWQgd3JpdGVyXG4gIGxldCBjbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2VkIHdyaXRlclxuZW5kXG5cbmxldCBmYWlsZWRfY29udmVyc2lvbiB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJ0eXBlIGNvbnZlcnNpb24gZmFpbHVyZVwiXG4gICAgeFxuICAgIFslc2V4cF9vZjpcbiAgICAgIFsgYE1zZyB8IGBRdWVyeSB8IGBSZXNwb25zZSB8IGBFcnJvciB8IGBTdGF0ZSB8IGBVcGRhdGUgXVxuICAgICAgKiBbIGBScGMgb2Ygc3RyaW5nIF1cbiAgICAgICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgICAgKiBleG5dXG47O1xuXG5sZXQgbXVsdGlwbGVfcmVnaXN0cmF0aW9ucyB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJtdWx0aXBsZSBycGMgcmVnaXN0cmF0aW9uc1wiXG4gICAgeFxuICAgIFslc2V4cF9vZjogWyBgUnBjIG9mIHN0cmluZyBdICogWyBgVmVyc2lvbiBvZiBpbnQgXV1cbjs7XG5cbmxldCB1bmtub3duX3ZlcnNpb24geCA9IEVycm9yLmNyZWF0ZSBcInVua25vd24gcnBjIHZlcnNpb25cIiB4IFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuXG5tb2R1bGUgQ2FsbGVlX2NvbnZlcnRzID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2ltcGxlID0gc3RydWN0XG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciA9XG4gICAgICAgIHsgYWRhcHQgOlxuICAgICAgICAgICAgJ3N0YXRlLiAoJ3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzcG9uc2UgRGVmZXJyZWQudCkgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGFkYXB0ZXJzIDogKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyIEludC5NYXAudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfm5hbWUgPSB7IG5hbWU7IGFkYXB0ZXJzID0gSW50Lk1hcC5lbXB0eSB9XG5cbiAgICAgIGxldCB3cmFwX2Vycm9yIGZuIHN0YXRlIHF1ZXJ5ID1cbiAgICAgICAgbWF0Y2glbWFwIGZuIHN0YXRlIHF1ZXJ5IHdpdGhcbiAgICAgICAgfCBPayB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZCB7IG5hbWU7IGFkYXB0ZXJzIH0gcnBjIGFkYXB0ZXIgPVxuICAgICAgICBpZiBTdHJpbmcuKCA8PiApIG5hbWUgKFJwYy5uYW1lIHJwYylcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICBcIlJwYyBuYW1lcyBkb24ndCBhZ3JlZVwiXG4gICAgICAgICAgICAobmFtZSwgUnBjLm5hbWUgcnBjKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2ZXJzaW9uID0gUnBjLnZlcnNpb24gcnBjIGluXG4gICAgICAgICAgbWF0Y2ggTWFwLmZpbmQgYWRhcHRlcnMgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgIFwiVmVyc2lvbiBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgIChuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBhZGFwdGVycyA9IE1hcC5zZXQgYWRhcHRlcnMgfmtleTp2ZXJzaW9uIH5kYXRhOmFkYXB0ZXIgaW5cbiAgICAgICAgICAgIE9rIHsgbmFtZTsgYWRhcHRlcnMgfSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb24gdCBvbGRfcnBjIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBmbiBzdGF0ZSAodXBncmFkZSBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBkb3duZ3JhZGUgcmVzdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgYWRhcHRlZFxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBvbGRfcnBjIHVwZ3JhZGVfb3JfZXJyb3IgZG93bmdyYWRlX29yX2Vycm9yID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWQuUmVzdWx0LkxldF9zeW50YXggaW5cbiAgICAgICAgICAgIGxldCViaW5kIHF1ZXJ5ID0gRGVmZXJyZWQucmV0dXJuICh1cGdyYWRlX29yX2Vycm9yIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGxldCViaW5kIHJlc3BvbnNlID0gZm4gc3RhdGUgcXVlcnkgaW5cbiAgICAgICAgICAgIERlZmVycmVkLnJldHVybiAoZG93bmdyYWRlX29yX2Vycm9yIHJlc3BvbnNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjICh3cmFwX2Vycm9yIGFkYXB0ZWQpXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb24gdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbiB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudCB0IGZuID0gTWFwLmRhdGEgdC5hZGFwdGVycyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgYWRhcHQgfSAtPiBhZGFwdCBmbilcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gcXVlcnkgLT4gcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLnF1ZXJ5IC0+IE1vZGVsLnJlc3BvbnNlIERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFJwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgciA9IGYgcyB+dmVyc2lvbiBxIGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbCByKSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgciAtPiByXG4gICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChyZXNwb25zZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgIC0+ICh1bml0LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgfCBQaXBlIG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gKE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAgLT4gKHVuaXQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoUGlwZSBmKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9kaXJlY3RfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKERpcmVjdCBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoTW9kZWwucmVzcG9uc2UgLT4gVmVyc2lvbl9pLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgfCBxIC0+IHFcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwgPVxuICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgIHwgUGlwZSBmIC0+XG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBPayBwaXBlIC0+XG4gICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IHJldHVybiAoT2sgKGNvbnZlcnRfcGlwZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gcmV0dXJuICh3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKSlcbiAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudF9kaXJlY3QgcnBjIChmdW4gcyBxIGRzdyAtPlxuICAgICAgICAgICAgICBsZXQgd3JpdGVyID1cbiAgICAgICAgICAgICAgICBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIuY3JlYXRlIH5jb252ZXJ0OmNvbnZlcnRfZWx0IH53cml0ZXI6ZHN3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoJW1hcCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd3JpdGVyIHdpdGhcbiAgICAgICAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9XG4gICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImNhbm5vdCB1c2UgZGlyZWN0IGludGVyZmFjZSB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHBpcGUgPSBQaXBlLm1hcCBwaXBlIH5mOlZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHN0YXRlICogdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgICdzXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIC0+IChNb2RlbC5zdGF0ZSAqIE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5IHEgPSBxXG5cbiAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9XG4gICAgICAgIExpc3QubWFwIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICBlbmRcblxuICBtb2R1bGUgQ3VycmVudF92ZXJzaW9uID0gVjFcblxuICBsZXQgYWRkIGltcGxzID1cbiAgICBsZXQgbWVudSA9IExpc3QubWFwIGltcGxzIH5mOkltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGluXG4gICAgbGV0IG1lbnVfaW1wbHMgPSBpbXBsZW1lbnRfbXVsdGkgKGZ1biBfIH52ZXJzaW9uOl8gKCkgLT4gcmV0dXJuIG1lbnUpIGluXG4gICAgaW1wbHMgQCBtZW51X2ltcGxzXG4gIDs7XG5cbiAgdHlwZSB0ID0gSW50LlNldC50IFN0cmluZy5UYWJsZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHN1cHBvcnRlZF9ycGNzIHQgPVxuICAgIGxldCBvcGVuIExpc3QuTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIG5hbWUsIHZlcnNpb25zID0gU3RyaW5nLlRhYmxlLnRvX2FsaXN0IHQgaW5cbiAgICBsZXQlbWFwIHZlcnNpb24gPSBJbnQuU2V0LnRvX2xpc3QgdmVyc2lvbnMgaW5cbiAgICB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfVxuICA7O1xuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cnBjX25hbWUgPVxuICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbnQuU2V0LmVtcHR5IChIYXNodGJsLmZpbmQgdCBycGNfbmFtZSlcbiAgOztcblxuICBsZXQgb2ZfZW50cmllcyBlbnRyaWVzID1cbiAgICBIYXNodGJsLm1hcCB+ZjpJbnQuU2V0Lm9mX2xpc3QgKFN0cmluZy5UYWJsZS5vZl9hbGlzdF9tdWx0aSBlbnRyaWVzKVxuICA7O1xuXG4gIGxldCByZXF1ZXN0IGNvbm4gPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKSBpblxuICAgIFJlc3VsdC5tYXAgcmVzdWx0IH5mOm9mX2VudHJpZXNcbiAgOztcblxuICBsZXQgY3JlYXRlIGRlc2NyaXB0aW9ucyA9XG4gICAgTGlzdC5tYXAgZGVzY3JpcHRpb25zIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICB8PiBvZl9lbnRyaWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIENvbm5lY3Rpb25fd2l0aF9tZW51ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgOyBtZW51IDogTWVudS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZSBjb25uZWN0aW9uID1cbiAgICBsZXQgb3BlbiBEZWZlcnJlZC5Pcl9lcnJvci5MZXRfc3ludGF4IGluXG4gICAgbGV0JW1hcCBtZW51ID0gTWVudS5yZXF1ZXN0IGNvbm5lY3Rpb24gaW5cbiAgICB7IGNvbm5lY3Rpb247IG1lbnUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZGlyZWN0bHkgY29ubmVjdGlvbiBtZW51ID0geyBjb25uZWN0aW9uOyBtZW51IH1cbmVuZFxuXG5tb2R1bGUgQ2FsbGVyX2NvbnZlcnRzID0gc3RydWN0XG4gIGxldCBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiB+cnBjX25hbWUgfmNhbGxlcl92ZXJzaW9ucyB+Y2FsbGVlX3ZlcnNpb25zIH5jYWxsZWVfbWVudSA9XG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciBjYWxsZWVfdmVyc2lvbnMgY2FsbGVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCJcbiAgICAgICAgICAgIChycGNfbmFtZSA6IHN0cmluZylcbiAgICAgICAgICAgIChjYWxsZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV9tZW51IDogTWVudS50KV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJoaWdoZXN0IHZlcnNpb24gbnVtYmVyIGlzIHRha2VuIGluIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXCIgPVxuICAgIGxldCBycGNfbmFtZSA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBycGNfbmFtZSwgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWVcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAyIF0pXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdCB7fCAoT2sgMikgfH1dXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiZXJyb3IgZnJvbSBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiBsb29rcyByZWFzb25hYmxlXCIgPVxuICAgIGxldCB0aGVfcnBjID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbm90X3RoZV9ycGMgPSBcIm90aGVyLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBub3RfdGhlX3JwYywgMTsgbm90X3RoZV9ycGMsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lOnRoZV9ycGNcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTp0aGVfcnBjKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAoRXJyb3JcbiAgICAgICAoXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiIChycGNfbmFtZSB0aGUtcnBjKVxuICAgICAgICAoY2FsbGVyX3ZlcnNpb25zICgxIDIgMykpIChjYWxsZWVfdmVyc2lvbnMgKCkpXG4gICAgICAgIChjYWxsZWVfbWVudSAoKG90aGVyLXJwYyAoMSAyKSkpKSkpfH1dXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BhdGNoID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBNb25hZCkgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gTVxuXG4gICAgICBsZXQgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+ZGlzcGF0Y2hlciB+cmVnaXN0cnkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKEVycm9yICh1bmtub3duX3ZlcnNpb24gKG5hbWUsIHZlcnNpb24pKSlcbiAgICAgICAgfCBTb21lIChkaXNwYXRjaCwgX3JwYykgLT4gZGlzcGF0Y2hlciBkaXNwYXRjaCBjb25uZWN0aW9uIHF1ZXJ5XG4gICAgICA7O1xuXG4gICAgICBsZXQgd2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICAgIHsgQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvbjsgbWVudSB9XG4gICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgICB+ZGlzcGF0Y2hlclxuICAgICAgICA9XG4gICAgICAgIGxldCBjYWxsZWVfdmVyc2lvbnMgPSBNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTpuYW1lIGluXG4gICAgICAgIGxldCBjYWxsZXJfdmVyc2lvbnMgPSB2ZXJzaW9ucyAoKSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgICAgICB+cnBjX25hbWU6bmFtZVxuICAgICAgICAgICAgfmNhbGxlcl92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIHZlcnNpb24gLT5cbiAgICAgICAgICB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5yZWdpc3RyeSB+ZGlzcGF0Y2hlclxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBBc3luYyA9IE1ha2UgKERlZmVycmVkKVxuICAgIG1vZHVsZSBEaXJlY3QgPSBNYWtlIChNb25hZC5JZGVudClcbiAgZW5kXG5cbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX2l0ZXJfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgfmYgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaF9pdGVyOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaF9pdGVyIGNvbm4gcXVlcnkgfmYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaDsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2ggY29ubiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhYm9ydF9tdWx0aSBjb25uX3dpdGhfbWVudSBpZCA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgaWRcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBhYm9ydDsgXyB9IGNvbm4gaWQgLT5cbiAgICAgICAgICAgIGFib3J0IGNvbm4gaWQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoVmVyc2lvbl9pLnJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgcmV0dXJuIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IHEgLT4gcmV0dXJuIChPayBxKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2sgPVxuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBPayAoT2sgb2spIC0+IE9rIChPayAoY29udmVydF9vayBvaykpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gUGlwZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazooZnVuIChwaXBlLCBpZCkgLT4gY29udmVydF9waXBlIHBpcGUsIGlkKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaF9pdGVyIGNvbm4gcSB+ZiA9XG4gICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCBjb252ZXJ0X21lc3NhZ2UgKG0gOiBfIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50KSA9XG4gICAgICAgICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgICAgIHwgQ2xvc2VkIF8gYXMgY2xvc2VkIC0+IGNsb3NlZFxuICAgICAgICAgICAgfCBVcGRhdGUgdSAtPiBVcGRhdGUgKGNvbnZlcnRfZWx0IHUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9XG4gICAgICAgICAgICBQaXBlX3JwYy5kaXNwYXRjaF9pdGVyIHJwYyBjb25uIHEgfmY6KGZ1biBtZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGYgKGNvbnZlcnRfbWVzc2FnZSBtZXNzYWdlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazpGbi5pZFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBhYm9ydCBjb25uIGlkID0gUGlwZV9ycGMuYWJvcnQgcnBjIGNvbm4gaWRcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEhhc2h0Ymwuc2V0XG4gICAgICAgICAgICAgIHJlZ2lzdHJ5XG4gICAgICAgICAgICAgIH5rZXk6dmVyc2lvblxuICAgICAgICAgICAgICB+ZGF0YTooeyBhYm9ydDsgZGlzcGF0Y2g7IGRpc3BhdGNoX2l0ZXIgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiQ2Fubm90IHVzZSBEaXJlY3Qgd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiBWZXJzaW9uX2kudmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+ICggc3RhdGUgKiB1cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBlcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5zdGF0ZVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFN0YXRlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT4gRXJyb3IgZXhuXG4gICAgICAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICB8IE9rIChPayAoc3RhdGUsIHBpcGUsIGlkKSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9zdGF0ZSBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gT2sgKE9rIChzdGF0ZSwgVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSBwaXBlLCBpZCkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBidWZmZXIgPSBCaWdidWZmZXIuY3JlYXRlIEhlYWRlci5sZW5ndGggfVxuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcblxuICBsZXQgcmVhZF9mb3JldmVyICh0IDogdCkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IChfLCBfKSBEZWZlcnJlZC5SZXN1bHQudCA9XG4gICAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gICAgKCogRGVxdWV1ZSB1bnRpbCBlbm91Z2ggZGF0YSAoW25lZWRdKSBpcyBhdmFpbGFibGUgYW5kIHRyeSByZWFkIG1lc3NhZ2VzICopXG4gICAgbGV0IHJlYyBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID1cbiAgICAgIG1hdGNoIFF1ZXVlLmRlcXVldWUgcXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFF1ZXVlIGlzIGVtcHR5IC0gd2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgKilcbiAgICAgICAgcmV0dXJuIChTZWNvbmQgbmVlZClcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgIGxldCBidWZmX2xlbiA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgIGxldCBkYXRhX2xlbiA9IERhdGEubGVuZ3RoIGRhdGEgaW5cbiAgICAgICAgaWYgYnVmZl9sZW4gPSAwICYmIGRhdGFfbGVuID49IG5lZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGhhdmUgZW5vdWdoIGRhdGEgYW5kIGJ1ZmZlciBpcyBlbXB0eS5cbiAgICAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBldmVyeSBiaW5fcHJvdCBtZXNzYWdlIGlzIHNlbnQgaW4gaXRzIG93blxuICAgICAgICAgICAgIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGE6KERhdGEudG9fYmlnc3RyaW5nIGRhdGEpIH5sZW5ndGg6ZGF0YV9sZW4gcXVldWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogU2xvdyBwYXRoLiBXZSBoYXZlIHRvIGFjY3VtdWxhdGUgW0JpZ3N0cmluZy50XXMgKilcbiAgICAgICAgICBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGE7XG4gICAgICAgICAgaWYgQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgPj0gbmVlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhlcmUgaXMgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciAqKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCBxdWV1ZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBXZSBuZWVkIG1vcmUgZGF0YSAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUpXG4gICAgKCogUmVhZCBhcyBtYW55IG1lc3NhZ2VzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGN1cnJlbnQgZGF0YSAqKVxuICAgIGFuZCBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlID1cbiAgICAgIGlmIGxlbmd0aCA+PSBIZWFkZXIubGVuZ3RoXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHBheWxvYWRfbGVuID0gSGVhZGVyLnVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zIGluXG4gICAgICAgIGxldCB0b3RhbF9sZW4gPSBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9sZW4gaW5cbiAgICAgICAgaWYgbGVuZ3RoID49IHRvdGFsX2xlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCkgfVxuZW5kXG5cbigqIFdlIGRvbid0IHBlcmZvcm0gYW55IGJ1ZmZlcmluZyBoZXJlLlxuICAgQSBtZXNzYWdlIGlzIGNvbnNpZGVyIHRvIGJlIGZsdXNoZWQgYXMgc29vbiBhcyBpdCBlbnRlcnMgdGhlIHBpcGUuICopXG5tb2R1bGUgUGlwZV93cml0ZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfbW9uaXRvci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNsb3NlICh0IDogdCkgPVxuICAgIFBpcGUuY2xvc2UgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IG1vbml0b3IgKHQgOiB0KSA9IHQubW9uaXRvclxuXG4gICgqIEJlY2F1c2Ugd2UgZG9uJ3QgbWFpbnRhaW4gYW55IGJ1ZmZlciwgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd3JpdGVzICopXG4gIGxldCBieXRlc190b193cml0ZSAoXyA6IHQpID0gMFxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgdCB3cml0ZXIgeCA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgbGV0IGJ1ZiA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIH5oZWFkZXI6dHJ1ZSB3cml0ZXIgeCBpblxuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSAoRGF0YS5vZl9iaWdzdHJpbmcgYnVmKTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdFxuICAgICAgICAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcilcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlbjpwYXlsb2FkX3NpemVcbiAgICA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgKCogV3JpdGUgdGhlIHNpemUgaGVhZGVyIG1hbnVhbGx5IGFuZCBjb25jYXRlbmF0ZSB0aGUgdHdvICopXG4gICAgICBsZXQgZGF0YV9zaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuY3JlYXRlIChkYXRhX3NpemUgKyBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9zaXplKSBpblxuICAgICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zOjAgKGRhdGFfc2l6ZSArIHBheWxvYWRfc2l6ZSk7XG4gICAgICBsZXQgZHN0X3BvcyA9IHdyaXRlci53cml0ZSBkYXRhIH5wb3M6SGVhZGVyLmxlbmd0aCB4IGluXG4gICAgICBCaWdzdHJpbmcuYmxpdCB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpkYXRhIH5kc3RfcG9zIH5sZW46cGF5bG9hZF9zaXplO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSAoRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSk7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIG1hdGNoIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gc2VudF9yZXN1bHQgRGVmZXJyZWQudW5pdFxuICAgIHwgKENsb3NlZCB8IE1lc3NhZ2VfdG9vX2JpZyBfKSBhcyByIC0+IHJcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfYmlnc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0geFxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9zdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLm9mX3N0cmluZyB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy50b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChTdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoU3RyaW5nX2RhdGEpXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQmlnc3RyaW5nIDogYmlnc3RyaW5nIHRcblxuICBsZXQgc3RyaW5nID0gU3RyaW5nXG4gIGxldCBiaWdzdHJpbmcgPSBCaWdzdHJpbmdcbmVuZFxuXG5sZXQgbWFrZV9yZWFkZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHJlYWRlciA6IGEgUGlwZS5SZWFkZXIudCkgPVxuICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbjs7XG5cbmxldCBtYWtlX3dyaXRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAod3JpdGVyIDogYSBQaXBlLldyaXRlci50KSA9XG4gIGxldCB3cml0ZXIgPSBQaXBlX2FuZF9tb25pdG9yLmNyZWF0ZSB3cml0ZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbjs7XG5cbmxldCBjcmVhdGUga2luZCByZWFkZXIgd3JpdGVyID1cbiAgeyBUcmFuc3BvcnQucmVhZGVyID0gbWFrZV9yZWFkZXIga2luZCByZWFkZXI7IHdyaXRlciA9IG1ha2Vfd3JpdGVyIGtpbmQgd3JpdGVyIH1cbjs7XG5cbigqIFRlc3RpbmcgKilcblxubW9kdWxlIHR5cGUgVHJhbnNwb3J0X3JlYWRlciA9IHNpZ1xuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVHJhbnNwb3J0LlJlYWRlci5TIHdpdGggdHlwZSB0ID0gRm9yX3Rlc3RpbmcudCBQaXBlX2FuZF9idWZmZXIudFxuZW5kXG5cbm1vZHVsZSBUZXN0X3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG5cbiAgbGV0IG9uX21lc3NhZ2UgPyhtZXNzYWdlID0gZGVmYXVsdF9tZXNzYWdlKSBvbl9tZXNzYWdlX2NvdW50IGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgIG9uX21lc3NhZ2VfY291bnQgOj0gIW9uX21lc3NhZ2VfY291bnQgKyAxO1xuICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0Om1lc3NhZ2U7XG4gICAgSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgOztcblxuICBsZXQgb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCAoKSA9IGluY3Igb25fZW5kX29mX2JhdGNoX2NvdW50XG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gdmVyaWZ5ID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2Ugb25fbWVzc2FnZV9jb3VudCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50IGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSk7XG4gICAgd2FpdCAoKTtcbiAgICB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudCBtZXNzYWdlX2NvdW50IGJhdGNoX2NvdW50ID1cbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9tZXNzYWdlX2NvdW50IH5leHBlY3Q6bWVzc2FnZV9jb3VudDtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9lbmRfb2ZfYmF0Y2hfY291bnQgfmV4cGVjdDpiYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpIGluXG4gICAgbGV0IG1lc3NhZ2VfcmF3ID0gZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3Jhdyk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdhaXQgKCk7XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3IGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICB3cml0ZSBwYXJ0MTtcbiAgICB3YWl0ICgpO1xuICAgIHdyaXRlIHBhcnQyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIHdyaXRlIHR3b19tc2dcbiAgOztcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbXNnIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21zZyB+cG9zOmkgfmxlbjoxKTtcbiAgICAgIHdhaXQgKClcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVuayAodmVyaWZ5IDEgMSlcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgMiAxKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmsgKHZlcmlmeSAxIDMpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmsgKHZlcmlmeSAyIDEpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayAodmVyaWZ5IDIgMzQpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDcgNDApXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImNhbiBjYWxsIHJlYWRfZm9yZXZlciBtdWx0aXBsZSB0aW1lc1wiID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKSBpblxuICAgIGxldCB3cml0ZSB4ID0gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpIGluXG4gICAgbGV0IG51bSA9IHJlZiAwIGluXG4gICAgbGV0IHN0b3BfYWZ0ZXJfb25fbWVzc2FnZSBidWZmZXIgfnBvcyB+bGVuID1cbiAgICAgIGluY3IgbnVtO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6ZGVmYXVsdF9tZXNzYWdlO1xuICAgICAgSGFuZGxlcl9yZXN1bHQuU3RvcCAoKVxuICAgIGluXG4gICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICBQaXBlLmNsb3NlIHdyaXRlcjtcbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgRGVmZXJyZWQudW5pdCk7XG4gICAgd2FpdCAoKTtcbiAgICBbJXRlc3RfcmVzdWx0OiBJbnQudF0gfmV4cGVjdDoyICFudW1cbiAgOztcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG5cbm1vZHVsZSBCZW5jaF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuICBsZXQgb25lX21lc3NhZ2UgPSBjcmVhdGVfbWVzc2FnZSAoKVxuICBsZXQgdHdvX21lc3NhZ2VzID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tZXNzYWdlOyBvbmVfbWVzc2FnZSBdXG5cbiAgbGV0IG9uZV9tZXNzYWdlX3AxLCBvbmVfbWVzc2FnZV9wMiA9XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlIGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICBwYXJ0MSwgcGFydDJcbiAgOztcblxuICBsZXQgb25fbWVzc2FnZSBfYnVmZmVyIH5wb3M6XyB+bGVuOl8gPSBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKClcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2UgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBmb3IgXyA9IDAgdG8gMTAwIGRvXG4gICAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSlcbiAgICBkb25lO1xuICAgIHdhaXQgKClcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIG9uZV9tZXNzYWdlXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKVxuXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlKTtcbiAgICB3cml0ZSBidWY7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDE7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIHR3b19tZXNzYWdlc1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tZXNzYWdlcyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tZXNzYWdlcyB+cG9zOmkgfmxlbjoxKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rXG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzNfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ19vbmVfYnl0ZVwiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rXG5cbiAgbGV0JWJlbmNoIFwibXVsdGlcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuZW5kXG5cbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUudFxuXG4gICAgbGV0IHJwY19jb25uZWN0aW9uID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgZW5kKVxuXG5tb2R1bGUgUnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gUnBjLkNvbm5lY3Rpb24udFxuXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSB0XG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIHRcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIHRcbiAgZW5kKVxuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBWZXJzaW9uZWRfcnBjXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5tb2R1bGUgUGlwZV90cmFuc3BvcnQgPSBQaXBlX3RyYW5zcG9ydFxubW9kdWxlIFJwY19lcnJvciA9IFJwY19lcnJvclxubW9kdWxlIFJwY19yZXN1bHQgPSBScGNfcmVzdWx0XG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gUnBjLlN0YWJsZVxuZW5kXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG4gIG1vZHVsZSBQcm90b2NvbCA9IFByb3RvY29sXG4gIG1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcblxuICBsZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IENvbm5lY3Rpb24uZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dFxuZW5kXG4iLCJvcGVuIFN0cmluZ1xuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cblxuKCogTm90IHRhaWwgcmVjdXJzaXZlIGZvciBcInBlcmZvcm1hbmNlXCIsIHBsZWFzZSBjaG9vc2UgbG93IHZhbHVlcyBmb3JcbiAgIFttYXhdLiBUaGUgaWRlYSBpcyB0aGF0IG1heCBpcyBhbHdheXMgc21hbGwgYmVjYXVzZSBpdCdzIGhhcmRcbiAgIGNvZGUgKilcbmxldCBzcGxpdF9jaGFyX2JvdW5kZWQgc3RyIH5vbiB+bWF4ID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdHJdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3Agb2Zmc2V0IHRva2VucyA9XG4gICAgICBpZiB0b2tlbnMgPSBtYXggLSAxXG4gICAgICB0aGVuIFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgICBlbHNlXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICAgIFwiXCI6Oihsb29wIChvZmZzZXQgKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHRva2VuID0gU3RyaW5nLnN1YiBzdHIgb2Zmc2V0IChpbmRleCAtIG9mZnNldCkgaW5cbiAgICAgICAgICAgIHRva2VuOjoobG9vcCAoaW5kZXggKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgaW4gbG9vcCAwIDBcblxubGV0IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5sZXQgb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxubGV0IGZ1bGxfc3BsaXQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHNlcCA9IG9mX2NoYXIgb24gaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoc2VwOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wIChzZXA6OnRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICAgIHRoZW4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICAgICAgZWxzZSBhY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuKCogY29weWluZyBjb3JlJ3MgY29udmVudGlvbiBmb3IgU3RyaW5nLnNwbGl0IGJ1dCB3aXRoIGFuIG9wdGlvbmFsIG1heFxuICAgYXJndW1lbnQgKilcbmxldCBzcGxpdCA/bWF4IHMgfm9uID1cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHMgfm9uXG4gIHwgU29tZSBtYXggLT4gICAgICAgICAgICAgICAgICgqIGFzc2VydCAobWF4IDwgMTAwKTsgKilcbiAgICBzcGxpdF9jaGFyX2JvdW5kZWQgcyB+b24gfm1heFxuXG5sZXQgcmluZGV4X2Zyb21fb24gcyB+b2Zmc2V0IH5vbiA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIG9uIHMuW2ldIHRoZW4gaVxuICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gIGluIGxvb3Agb2Zmc2V0XG5cbmxldCB0cmltX2xlZnRfc3ViIHMgfnBvcyB+bGVuIH5jaGFycyA9XG4gIGxldCBzdGFydF9wb3MgPVxuICAgIGxldCBmaW5hbCA9IHBvcyArIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsYXN0X2NoYXIgaSA9XG4gICAgICBpZiBpID0gZmluYWwgdGhlbiBsYXN0X2NoYXJcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGNoYXJzIHMuW2ldIHRoZW4gbG9vcCAoaSArIDEpIChpICsgMSlcbiAgICAgIGVsc2UgbGFzdF9jaGFyXG4gICAgaW4gbG9vcCBwb3MgcG9zXG4gIGluXG4gIGxldCBuZXdfbGVuID0gbGVuIC0gKHN0YXJ0X3BvcyAtIHBvcykgaW5cbiAgU3RyaW5nLnN1YiBzIHN0YXJ0X3BvcyBuZXdfbGVuXG5cbmxldCBzcGxpdF90cmltX2xlZnQgc3RyIH5vbiB+dHJpbSA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tX29uIHN0ciB+b2Zmc2V0IH5vbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gdHJpbV9sZWZ0X3N1YiBzdHIgfnBvczooaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmxlbjoob2Zmc2V0IC0gaW5kZXgpIH5jaGFyczp0cmltIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6MCB+bGVuOihvZmZzZXQgKyAxKSB+Y2hhcnM6dHJpbSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5leGNlcHRpb24gRm91bmRfaW50IG9mIGludFxuXG5sZXQgZmlyc3RfY2hhcl9uZSBzIGMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIHMuWzBdIDw+IGNcblxubGV0IHRyaW1fbGVmdCBzID1cbiAgaWYgZmlyc3RfY2hhcl9uZSBzICcgJyB0aGVuIHNcbiAgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICB0cnlcbiAgICAgIGZvciBpPTAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiAnICcgdGhlbiByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgICBkb25lO1xuICAgICAgXCJcIlxuICAgIHdpdGggRm91bmRfaW50IG5vbl9zcGFjZSAtPlxuICAgICAgc3ViIHMgbm9uX3NwYWNlIChsZW4gLSBub25fc3BhY2UpXG5cbmxldCBzdWJzdHJfZXEgPyhzdGFydD0wKSBzIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcGF0dGVybiAtIDEgZG9cbiAgICAgIGlmIHMuW2kgKyBzdGFydF0gPD4gcGF0dGVybi5baV0gdGhlbiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggXyAtPiBmYWxzZVxuXG5sZXQgZmluZF9mcm9tID8oc3RhcnQ9MCkgc3RyIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSBzdGFydCB0byAoU3RyaW5nLmxlbmd0aCBzdHIpIC0gKFN0cmluZy5sZW5ndGggcGF0dGVybikgZG9cbiAgICAgIGlmIHN1YnN0cl9lcSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gdGhlblxuICAgICAgICByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgZG9uZTtcbiAgICBOb25lXG4gIHdpdGhcbiAgfCBGb3VuZF9pbnQgaSAtPiBTb21lIGlcbiAgfCAgXyAtPiBOb25lXG5cbmxldCBmaW5kX21pbiBsIH5mID1cbiAgbGV0IHJlYyBsb29wIHggZnggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gU29tZSAoeCwgZngpXG4gICAgfCB4Jzo6eHMgLT5cbiAgICAgIGxldCBmeCcgPSBmIHgnIGluXG4gICAgICBpZiBmeCcgPCBmeCB0aGVuIGxvb3AgeCcgZngnIHhzXG4gICAgICBlbHNlIGxvb3AgeCBmeCB4c1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeDo6eHMgLT4gbG9vcCB4IChmIHgpIHhzXG5cbmxldCByZXBsYWNlX2FsbCBzdHIgfnBhdHRlcm4gfndpdGhfID1cbiAgbGV0IChzbGVuLCBwbGVuKSA9IFN0cmluZy4obGVuZ3RoIHN0ciwgbGVuZ3RoIHBhdHRlcm4pIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgfCBTb21lIGogLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgbG9vcCAoaiArIHBsZW4pXG4gIGluIGxvb3AgMFxuXG5leGNlcHRpb24gRm91bmRfcmVwbGFjZSBvZiBpbnQgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHJlcGxhY2VfYWxsX2Fzc29jIHN0ciB0YmwgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gc2xlbiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICBlbHNlXG4gICAgICBsZXQgciA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBlID1cbiAgICAgICAgICAgIGZpbmRfbWluIHRibCB+ZjooZnVuIChwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAgIC0+IG1heF9pbnRcbiAgICAgICAgICAgICAgfCBTb21lIGogd2hlbiBqID0gaSAtPiByYWlzZSAoRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pKVxuICAgICAgICAgICAgICB8IFNvbWUgaiAtPiBmb3VuZCA6PSB0cnVlOyBqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKChwYXR0ZXJuLCB3aXRoXyksIGopIHdoZW4gIWZvdW5kIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgd2l0aCBGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICBpblxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICAgIHwgU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICAgIGxvb3AgKGogKyBTdHJpbmcubGVuZ3RoIHBhdHRlcm4pXG4gIGluIGxvb3AgMFxuXG5sZXQgaXRlcmkgZiBsID1cbiAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHg6OnhzIC0+IChmIGkgeCk7IGxvb3AgKHN1Y2MgaSkgeHNcbiAgaW4gbG9vcCAwIGxcblxubGV0IG9mX2xpc3QgeHMgPVxuICBsZXQgbCA9IExpc3QubGVuZ3RoIHhzIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgaXRlcmkgKGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHMgaSBjKSB4cztcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPSAtMSB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIGxvb3AgKHMuW2ldIDo6IGFjYykgKHByZWQgaSlcbiAgaW4gbG9vcCBbXSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBieXRlcyBpIGEuKGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnl0ZXNcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChTdHJpbmcuZ2V0IHMpXG5cbigqIHJpcHBlZCBvZmYgZnJvbSBvbmUgb2YgZGJ1ZW56bGkncyBsaWJzICopXG5sZXQgY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQuY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIGVuZCB3aXRoIFtpXSB0cnlpbmcgdG8gbWF0Y2ggdGhlXG4gICAgICAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2UgdmVyaWZ5IHRoYXRcbiAgICAgICAgIHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdLiBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlXG4gICAgICAgICBjb250aW51ZSB0byBsb29rIGZvciBbb25dIHdpdGggW2ldLiBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlXG4gICAgICAgICBsb29wIGFuZCBleHRyYWN0IGEgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGVcbiAgICAgICAgIHBvc2l0aW9uIGJlZm9yZSB0aGUgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvblxuICAgICAgICAgYWZ0ZXIgdGhlIFtvbl0gd2UgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gSWYgW2ldIGlzIHN1Y2ggdGhhdCBub1xuICAgICAgICAgc2VwYXJhdG9yIGNhbiBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoXG4gICAgICAgICBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSArIHNlcF9tYXggPD0gc19tYXgpIGRvXG4gICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmUgcyAoIWkgKyAhaykgaXNcbiAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIDAgdGhlbiBpbmNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgayA6PSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrIDw9IHNlcF9tYXggJiYgdW5zYWZlX2dldCBzICghaSArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBpbmNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrIDw9IHNlcF9tYXggdGhlbiAoKiBubyBtYXRjaCAqKSBpbmNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyBzZXBfbWF4ICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgcmN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LnJjdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIHNfbWF4IGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgZW5kIG9mIFtzXSB0byB0aGUgYmVnaW5uaW5nIHdpdGggW2ldIHRyeWluZyB0b1xuICAgICAgICAgbWF0Y2ggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlXG4gICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXSAod2UgZG8gdGhhdFxuICAgICAgICAgYmFja3dhcmRzKS4gIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2UgY29udGludWUgdG8gbG9vayBmb3IgW29uXVxuICAgICAgICAgd2l0aCBbaV0uICBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlIGxvb3AgYW5kIGV4dHJhY3QgYVxuICAgICAgICAgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZVxuICAgICAgICAgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgW29uXSB3ZVxuICAgICAgICAgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gIElmIFtpXSBpcyBzdWNoIHRoYXQgbm8gc2VwYXJhdG9yIGNhblxuICAgICAgICAgYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaCBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSA+PSBzZXBfbWF4KSBkb1xuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIHNlcF9tYXggdGhlbiBkZWNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICBzIChzZXBfc3RhcnQgKyAhaykgaXMgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICAgIGxldCBzZXBfc3RhcnQgPSAhaSAtIHNlcF9tYXggaW5cbiAgICAgICAgICAgIGsgOj0gc2VwX21heCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPj0gMCAmJiB1bnNhZmVfZ2V0IHMgKHNlcF9zdGFydCArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBkZWNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrID49IDAgdGhlbiAoKiBubyBtYXRjaCAqKSBkZWNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIHNlcF9tYXggLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgbGV0IHByZWZpeF9sID0gU3RyaW5nLmxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHN0cmluZ19sID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHByZWZpeF9sID4gc3RyaW5nX2wgdGhlbiBOb25lXG4gIGVsc2VcbiAgICB0cnlcbiAgICAgIGZvciBpID0gMCB0byBwcmVmaXhfbCAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gcHJlZml4LltpXSB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBkb25lO1xuICAgICAgU29tZSAoU3RyaW5nLnN1YiBzIHByZWZpeF9sIChzdHJpbmdfbCAtIHByZWZpeF9sKSlcbiAgICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgZHJvcCBzIG4gPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBuID49IGxcbiAgdGhlbiBcIlwiXG4gIGVsc2UgU3RyaW5nLnN1YiBzIG4gKGwgLSBuKVxuXG5sZXQgdGFrZSBzIG4gPVxuICBpZiBuID49IFN0cmluZy5sZW5ndGggc1xuICB0aGVuIHNcbiAgZWxzZSBTdHJpbmcuc3ViIHMgMCBuXG4iLCJ0eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IGJpZ3N0cmluZ1xuXG5sZXQgY3JlYXRlIHNpemUgPSBCaWdhcnJheS4oQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IHNpemUpXG5sZXQgZW1wdHkgICAgICAgPSBjcmVhdGUgMFxuXG5tb2R1bGUgQkExID0gQmlnYXJyYXkuQXJyYXkxXG5cbmxldCBsZW5ndGggdCA9IEJBMS5kaW0gdFxuXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgICAgICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0ICAgICAgICAgICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3RvX2J5dGVzICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IEJ5dGVzLnQgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXCIgICAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgOiBCeXRlcy50IC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXAgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9zdHJpbmcgOiB0IC0+IGludCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY2hyIDogdCAtPiBpbnQgLT4gY2hhciAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jaHJcIiBbQEBub2FsbG9jXVxuXG5sZXQgc3ViIHQgfm9mZiB+bGVuID1cbiAgQkExLnN1YiB0IG9mZiBsZW5cblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmZmVyX2xlbjogJWQsIG9mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmZmVyX2xlbiBvZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfYmxpdCBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgc3JjX2xlbjogJWQsIHNyY19vZmY6ICVkLCBkc3RfbGVuOiAlZCwgZHN0X29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19tZW1jbXAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWYxX2xlbjogJWQsIGJ1ZjFfb2ZmOiAlZCwgYnVmMl9sZW46ICVkLCBidWYyX29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG4oKiBBIG5vdGUgb24gYm91bmRzIGNoZWNraW5nLlxuICpcbiAqIFRoZSBjb2RlIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGJsaXQgZG9lc24ndFxuICogcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXI6XG4gKlxuICogICB7W29mZiArIGxlbiA8PSBidWZmZXJfbGVuXX1cbiAqXG4gKiBIb3dldmVyLCB0aGlzIG1heSBsZWFkIHRvIGFuIGludGVnZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIHZhbHVlcyBvZiBbb2ZmXSxcbiAqIGUuZy4sIFttYXhfaW50XSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29tcGFyaXNvbiB0byByZXR1cm4gW3RydWVdIHdoZW4gaXRcbiAqIHNob3VsZCByZWFsbHkgcmV0dXJuIFtmYWxzZV0uXG4gKlxuICogQW4gZXF1aXZhbGVudCBjb21wYXJpc29uIHRoYXQgZG9lcyBub3QgcnVuIGludG8gdGhpcyBpbnRlZ2VyIG92ZXJmbG93XG4gKiBwcm9ibGVtIGlzOlxuICpcbiAqICAge1tidWZmZXJfbGVuIC0gb2ZmID0+IGxlbl19XG4gKlxuICogVGhpcyBpcyBjaGVja2luZyB0aGF0IHRoZSBpbnB1dCBidWZmZXIsIGxlc3MgdGhlIG9mZnNldCwgaXMgc3VmZmljaWVudGx5XG4gKiBsb25nIHRvIHBlcmZvcm0gdGhlIGJsaXQuIFNpbmNlIHRoZSBleHByZXNzaW9uIGlzIHN1YnRyYWN0aW5nIFtvZmZdIHJhdGhlclxuICogdGhhbiBhZGRpbmcgaXQsIGl0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIG92ZXJmbG93IHRoYXQgdGhlIHByZXZpb3VzXG4gKiBpbmVxdWFsaXR5IGRpZC4gQXMgbG9uZyBhcyB0aGVyZSBpcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFtvZmZdIGlzIG5vdFxuICogbmVnYXRpdmUsIGl0IHdvbid0IHVuZGVyZmxvdyBlaXRoZXIuICopXG5cbmxldCBjb3B5IHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwiY29weVwiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgdCB+c3JjX29mZjpvZmYgZHN0IH5kc3Rfb2ZmOjAgfmxlbjtcbiAgZHN0XG47O1xuXG5sZXQgc3Vic3RyaW5nIHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwic3Vic3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOjAgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IG9mX3N0cmluZyB+b2ZmIH5sZW4gcyA9XG4gIGxldCBidWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJvZl9zdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgYlxuOztcblxubGV0IGJsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBCeXRlcy5sZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBsZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IFN0cmluZy5sZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlbiA9XG4gIGxldCBidWZfbGVuID0gbGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICBpZiBidWZfb2ZmIDwgMCB8fCBidWZfbGVuIC0gYnVmX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNociBidWYgYnVmX29mZiBjaHIgbGVuXG5cbigqIFNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NFwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0XCJcblxubW9kdWxlIFN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYpXG5cbiAgbGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkIHggb2ZmID1cbiAgICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5lbmRcblxubGV0IHNldF9pbnQxNl9sZSwgc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG5cbmxldCBzZXRfaW50MzJfbGUsIHNldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMlxuXG5sZXQgc2V0X2ludDY0X2xlLCBzZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjRcblxubGV0IGdldF9pbnQxNl9sZSwgZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAgeCBvZmYgPVxuICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgICwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwXG4gIGVsc2UgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwLCBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkXG5cbmxldCBnZXRfaW50MzJfbGUsIGdldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMlxuXG5sZXQgZ2V0X2ludDY0X2xlLCBnZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjRcblxuKCogVW5zYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5cbm1vZHVsZSBVU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZilcbmVuZFxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSwgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUsIHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlLCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSwgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9sZSB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfYmUgeCBvZmYgKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUsIHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlLCB1bnNhZmVfZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuIiwidHlwZSAnYSBzdGF0ZSA9XG4gIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuYW5kICdhIHBhcnRpYWwgPVxuICB7IGNvbW1pdHRlZCA6IGludFxuICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSBzdGF0ZSB9XG5cblxubGV0IHN0YXRlX3RvX29wdGlvbiB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgfCBGYWlsIF8gICAgIC0+IE5vbmVcbiAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcblxubGV0IGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVyciA9XG4gIFN0cmluZy5jb25jYXQgXCIgPiBcIiBtYXJrcyBeIFwiOiBcIiBeIGVyclxuXG5sZXQgc3RhdGVfdG9fcmVzdWx0IHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gIHwgRmFpbChfLCBtYXJrcywgZXJyKSAtPiBFcnJvciAoZmFpbF90b19zdHJpbmcgbWFya3MgZXJyKVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA6IGludFxuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICAgICAgICA6IGludFxuICA7IG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGxlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpZ3N0cmluZ2FmLnRcbiAgfVxuXG5sZXQgY3JlYXRlIGJ1ZmZlciB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlcyA9XG4gIHsgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBvZmZcbiAgOyBsZW5cbiAgOyBidWZmZXIgfVxuXG5sZXQgbGVuZ3RoICAgICAgICAgICAgICAgICB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzICsgdC5sZW5cbmxldCBjbGllbnRfY29tbWl0dGVkX2J5dGVzIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgIHQgPSBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdFxuXG5sZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSB0LmxlbiAtIGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgKyBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IGxlbmd0aCB0KTtcbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgLSBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgdCA9IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHQpO1xuOztcblxubGV0IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgPVxuICB0Lm9mZiArIHBvcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgYXBwbHkgdCBwb3MgbGVuIH5mID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgZiB0LmJ1ZmZlciB+b2ZmIH5sZW5cblxubGV0IHVuc2FmZV9nZXRfY2hhciB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCBjb3VudF93aGlsZSB0IHBvcyB+ZiA9XG4gIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICBsZXQgb2ZmICAgID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBsZXQgaSAgICAgID0gcmVmIG9mZiBpblxuICBsZXQgbGltaXQgID0gdC5vZmYgKyB0LmxlbiBpblxuICB3aGlsZSAhaSA8IGxpbWl0ICYmIGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICAhaSAtIG9mZlxuOztcblxubGV0IGNvbW1pdCB0IHBvcyA9XG4gIHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8LSBwb3Ncbjs7XG4iLCJtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICAgIHwgTGF6eSAgICBvZiAnYSB0IExhenkudFxuICAgIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGFuZCAnYSBwYXJ0aWFsID1cbiAgICB7IGNvbW1pdHRlZCA6IGludFxuICAgIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHQgfVxuXG5lbmRcbnR5cGUgJ2Egd2l0aF9zdGF0ZSA9IElucHV0LnQgLT4gIGludCAtPiBNb3JlLnQgLT4gJ2FcblxudHlwZSAnYSBmYWlsdXJlID0gKHN0cmluZyBsaXN0IC0+IHN0cmluZyAtPiAnYSBTdGF0ZS50KSB3aXRoX3N0YXRlXG50eXBlICgnYSwgJ3IpIHN1Y2Nlc3MgPSAoJ2EgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZVxuXG50eXBlICdhIHQgPVxuICB7IHJ1biA6ICdyLiAoJ3IgZmFpbHVyZSAtPiAoJ2EsICdyKSBzdWNjZXNzIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGUgfVxuXG5sZXQgZmFpbF9rICAgIGlucHV0IHBvcyBfIG1hcmtzIG1zZyA9XG4gIFN0YXRlLkZhaWwocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgbWFya3MsIG1zZylcbmxldCBzdWNjZWVkX2sgaW5wdXQgcG9zIF8gICAgICAgdiAgID1cbiAgU3RhdGUuRG9uZShwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCB2KVxuXG5sZXQgcmVjIHRvX2V4cG9ydGVkX3N0YXRlID0gZnVuY3Rpb25cbiAgfCBTdGF0ZS5QYXJ0aWFsIHtjb21taXR0ZWQ7Y29udGludWV9IC0+XG4gICAgIEV4cG9ydGVkX3N0YXRlLlBhcnRpYWxcbiAgICAgICB7IGNvbW1pdHRlZFxuICAgICAgIDsgY29udGludWUgPVxuICAgICAgICAgICBmdW4gYnMgfm9mZiB+bGVuIG1vcmUgLT5cbiAgICAgICAgICAgdG9fZXhwb3J0ZWRfc3RhdGUgKGNvbnRpbnVlIGJzIH5vZmYgfmxlbiBtb3JlKX1cbiAgfCBTdGF0ZS5Eb25lIChpLHgpIC0+IEV4cG9ydGVkX3N0YXRlLkRvbmUgKGkseClcbiAgfCBTdGF0ZS5GYWlsIChpLCBzbCwgcykgLT4gRXhwb3J0ZWRfc3RhdGUuRmFpbCAoaSwgc2wsIHMpXG4gIHwgU3RhdGUuTGF6eSB4IC0+IHRvX2V4cG9ydGVkX3N0YXRlIChMYXp5LmZvcmNlIHgpXG5cbmxldCBwYXJzZSBwID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIEJpZ3N0cmluZ2FmLmVtcHR5IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjowIGluXG4gIHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIEluY29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaylcblxubGV0IHBhcnNlX2JpZ3N0cmluZyBwIGlucHV0ID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGlucHV0KSBpblxuICBFeHBvcnRlZF9zdGF0ZS5zdGF0ZV90b19yZXN1bHQgKHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIENvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spKVxuXG5tb2R1bGUgTW9uYWQgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIHZcbiAgICB9XG5cbiAgbGV0IGZhaWwgbXNnID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIF9zdWNjIC0+XG4gICAgICBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIG1zZ1xuICAgIH1cblxuICBsZXQgKD4+PSkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gKGYgdikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKD4+fCkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoZiB2KSBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwkPikgZiBtID1cbiAgICBtID4+fCBmXG5cbiAgbGV0ICg8Kj4pIGYgbSA9XG4gICAgKCogZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIGYgPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbSA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgKGYgbSkgaW5cbiAgICAgICAgbS5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGYucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuXG4gIGxldCBsaWZ0IGYgbSA9XG4gICAgZiA8JD4gbVxuXG4gIGxldCBsaWZ0MiBmIG0xIG0yID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9IHN1Y2MgaW5wdXQyIHBvczIgbW9yZTIgKGYgbTEgbTIpIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIHN1Y2MgaW5wdXQzIHBvczMgbW9yZTMgKGYgbTEgbTIgbTMpIGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgbGV0IHN1Y2M0IGlucHV0NCBwb3M0IG1vcmU0IG00ID1cbiAgICAgICAgICAgICAgc3VjYyBpbnB1dDQgcG9zNCBtb3JlNCAoZiBtMSBtMiBtMyBtNCkgaW5cbiAgICAgICAgICAgIG00LnJ1biBpbnB1dDMgcG9zMyBtb3JlMyBmYWlsIHN1Y2M0IGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0ICggKj4pIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIF8gLT4gYiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPSBiLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8KiApIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geCAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIHggPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgXyA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgeCBpblxuICAgICAgICBiLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5lbmRcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICBsZXQgKDw/PikgcCBtYXJrID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIChtYXJrOjptYXJrcykgbXNnIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuXG4gIGxldCAoPHw+KSBwIHEgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgICgqIFRoZSBvbmx5IHR3byBjb25zdHJ1Y3RvcnMgdGhhdCBpbnRyb2R1Y2UgbmV3IGZhaWx1cmUgY29udGludWF0aW9ucyBhcmVcbiAgICAgICAgICogWzw/Pl0gYW5kIFs8fD5dLiBJZiB0aGUgaW5pdGlhbCBpbnB1dCBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aFxuICAgICAgICAgKiBvZiB0aGUgY29tbWl0dGVkIGlucHV0LCB0aGVuIGNhbGxpbmcgdGhlIGZhaWx1cmUgY29udGludWF0aW9uIHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgZWZmZWN0IG9mIHVud2luZGluZyBhbGwgY2hvaWNlcyBhbmQgY29sbGVjdGluZyBtYXJrcyBhbG9uZ1xuICAgICAgICAgKiB0aGUgd2F5LiAqKVxuICAgICAgICBpZiBwb3MgPCBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0JyB0aGVuXG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlIG1hcmtzIG1zZ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcS5ydW4gaW5wdXQnIHBvcyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5lbmRcblxubW9kdWxlIE1vbmFkX3VzZV9mb3JfZGVidWdnaW5nID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSBNb25hZC5yZXR1cm5cbiAgbGV0IGZhaWwgICA9IE1vbmFkLmZhaWxcbiAgbGV0ICg+Pj0pICA9IE1vbmFkLig+Pj0pXG5cbiAgbGV0ICg+PnwpIG0gZiA9IG0gPj49IGZ1biB4IC0+IHJldHVybiAoZiB4KVxuXG4gIGxldCAoPCQ+KSBmIG0gPSBtID4+fCBmXG4gIGxldCAoPCo+KSBmIG0gPSBmID4+PSBmdW4gZiAtPiBtID4+fCBmXG5cbiAgbGV0IGxpZnQgID0gKD4+fClcbiAgbGV0IGxpZnQyIGYgbTEgbTIgICAgICAgPSBmIDwkPiBtMSA8Kj4gbTJcbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgICAgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtMyA8Kj4gbTRcblxuICBsZXQgKCAqPikgYSBiID0gYSA+Pj0gZnVuIF8gLT4gYlxuICBsZXQgKDwqICkgYSBiID0gYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geFxuZW5kXG4iLCJ0eXBlIHQgPVxuICB7IG11dGFibGUgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnQgfVxuXG5sZXQgb2ZfYmlnc3RyaW5nIH5vZmYgfmxlbiBidWYgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYnVmID49IGxlbiAtIG9mZik7XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbmxldCBjcmVhdGUgbGVuID1cbiAgb2ZfYmlnc3RyaW5nIH5vZmY6MCB+bGVuOjAgKEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4pXG5cbmxldCB3cml0YWJsZV9zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gdC5sZW5cblxubGV0IHRyYWlsaW5nX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSAodC5vZmYgKyB0LmxlbilcblxubGV0IGNvbXByZXNzIHQgPVxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiB0LmJ1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQub2ZmIDwtIDBcblxubGV0IGdyb3cgdCB0b19jb3B5ID1cbiAgbGV0IG9sZF9sZW4gPSBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICBsZXQgc3BhY2UgPSB3cml0YWJsZV9zcGFjZSB0IGluXG4gIHdoaWxlIHNwYWNlICsgIW5ld19sZW4gLSBvbGRfbGVuIDwgdG9fY29weSBkb1xuICAgIG5ld19sZW4gOj0gKDMgKiAhbmV3X2xlbikgLyAyXG4gIGRvbmU7XG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nYWYuY3JlYXRlICFuZXdfbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIG5ld19idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0LmJ1ZiA8LSBuZXdfYnVmO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBlbnN1cmUgdCB0b19jb3B5ID1cbiAgaWYgdHJhaWxpbmdfc3BhY2UgdCA8IHRvX2NvcHkgdGhlblxuICAgIGlmIHdyaXRhYmxlX3NwYWNlIHQgPj0gdG9fY29weVxuICAgIHRoZW4gY29tcHJlc3MgdFxuICAgIGVsc2UgZ3JvdyB0IHRvX2NvcHlcblxubGV0IHdyaXRlX3BvcyB0ID1cbiAgdC5vZmYgKyB0LmxlblxuXG5sZXQgZmVlZF9zdHJpbmcgdCB+b2ZmIH5sZW4gc3RyID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzdHIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfYmlnc3RyaW5nIHQgfm9mZiB+bGVuIGIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYiA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IGIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfaW5wdXQgdCA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAgICBzIC0+IGZlZWRfc3RyaW5nICAgIHQgfm9mZjowIH5sZW46KFN0cmluZyAgICAgLmxlbmd0aCBzKSBzXG4gIHwgYEJpZ3N0cmluZyBiIC0+IGZlZWRfYmlnc3RyaW5nIHQgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBiKSBiXG5cbmxldCBzaGlmdCB0IG4gPVxuICBhc3NlcnQgKHQubGVuID49IG4pO1xuICB0Lm9mZiA8LSB0Lm9mZiArIG47XG4gIHQubGVuIDwtIHQubGVuIC0gblxuXG5sZXQgZm9yX3JlYWRpbmcgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBCaWdzdHJpbmdhZi5zdWIgfm9mZiB+bGVuIGJ1ZlxuXG5tb2R1bGUgVW5jb25zdW1lZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuZW5kXG5cbmxldCB1bmNvbnN1bWVkID8oc2hpZnQ9MCkgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBhc3NlcnQgKGxlbiA+PSBzaGlmdCk7XG4gIHsgVW5jb25zdW1lZC5idWY7IG9mZiA9IG9mZiArIHNoaWZ0OyBsZW4gPSBsZW4gLSBzaGlmdCB9XG5cbmxldCBvZl91bmNvbnN1bWVkIHsgVW5jb25zdW1lZC5idWY7IG9mZjsgbGVuIH0gPVxuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG50eXBlIHVuY29uc3VtZWQgPSBVbmNvbnN1bWVkLnQgPVxuICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBvZmYgOiBpbnRcbiAgOyBsZW4gOiBpbnQgfVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE2IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5tb2R1bGUgQmlnYXJyYXkgPSBzdHJ1Y3RcbiAgKCogRG8gbm90IGFjY2VzcyBCaWdhcnJheSBvcGVyYXRpb25zIGRpcmVjdGx5LiBJZiBhbnl0aGluZydzIG5lZWRlZCwgcmVmZXIgdG9cbiAgICogdGhlIGludGVybmFsIEJpZ3N0cmluZyBtb2R1bGUuICopXG5lbmRcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmdhZi50XG5cblxubW9kdWxlIFVuYnVmZmVyZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJzZXJcblxuICBpbmNsdWRlIEV4cG9ydGVkX3N0YXRlXG5cbiAgdHlwZSBtb3JlID0gTW9yZS50ID1cbiAgICB8IENvbXBsZXRlXG4gICAgfCBJbmNvbXBsZXRlXG5lbmRcblxuaW5jbHVkZSBVbmJ1ZmZlcmVkXG5pbmNsdWRlIFBhcnNlci5Nb25hZFxuaW5jbHVkZSBQYXJzZXIuQ2hvaWNlXG5cbm1vZHVsZSBCdWZmZXJlZCA9IHN0cnVjdFxuICB0eXBlIHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCA9XG4gICAgeyBidWYgOiBiaWdzdHJpbmdcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cblxuICB0eXBlIGlucHV0ID1cbiAgICBbIGBCaWdzdHJpbmcgb2YgYmlnc3RyaW5nXG4gICAgfCBgU3RyaW5nICAgIG9mIHN0cmluZyBdXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBQYXJ0aWFsIG9mIChbIGlucHV0IHwgYEVvZiBdIC0+ICdhIHN0YXRlKVxuICAgIHwgRG9uZSAgICBvZiB1bmNvbnN1bWVkICogJ2FcbiAgICB8IEZhaWwgICAgb2YgdW5jb25zdW1lZCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgbGV0IGZyb21fdW5idWZmZXJlZF9zdGF0ZSB+ZiBidWZmZXJpbmcgPSBmdW5jdGlvblxuICAgIHwgVW5idWZmZXJlZC5QYXJ0aWFsIHAgICAgICAgICAtPiBQYXJ0aWFsIChmIHApXG4gICAgfCBVbmJ1ZmZlcmVkLkRvbmUoY29uc3VtZWQsIHYpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIERvbmUodW5jb25zdW1lZCwgdilcbiAgICB8IFVuYnVmZmVyZWQuRmFpbChjb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKVxuXG4gIGxldCBwYXJzZSA/KGluaXRpYWxfYnVmZmVyX3NpemU9MHgxMDAwKSBwID1cbiAgICBpZiBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMSB0aGVuXG4gICAgICBmYWlsd2l0aCBcInBhcnNlOiBpbnZhbGlkIGFyZ3VtZW50LCBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMVwiO1xuICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgcmVjIGYgcCBpbnB1dCA9XG4gICAgICBCdWZmZXJpbmcuc2hpZnQgYnVmZmVyaW5nIHAuY29tbWl0dGVkO1xuICAgICAgbGV0IG1vcmUgOiBNb3JlLnQgPVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgYEVvZiAgICAgICAgICAgIC0+IENvbXBsZXRlXG4gICAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICAgIEluY29tcGxldGVcbiAgICAgIGluXG4gICAgICBsZXQgZm9yX3JlYWRpbmcgPSBCdWZmZXJpbmcuZm9yX3JlYWRpbmcgYnVmZmVyaW5nIGluXG4gICAgICBwLmNvbnRpbnVlIGZvcl9yZWFkaW5nIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggZm9yX3JlYWRpbmcpIG1vcmVcbiAgICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcbiAgICBpblxuICAgIFVuYnVmZmVyZWQucGFyc2UgcFxuICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcblxuICBsZXQgZmVlZCBzdGF0ZSBpbnB1dCA9XG4gICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgIHwgUGFydGlhbCBrIC0+IGsgaW5wdXRcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIEZhaWwoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCBtYXJrcywgbXNnKVxuICAgICAgZW5kXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIHYpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBEb25lKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgdilcbiAgICAgIGVuZFxuXG4gIGxldCBzdGF0ZV90b19vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuICAgIHwgRmFpbCBfICAgICAtPiBOb25lXG5cbiAgbGV0IHN0YXRlX3RvX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gICAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgICB8IEZhaWwoXywgbWFya3MsIG1zZykgLT4gRXJyb3IgKFVuYnVmZmVyZWQuZmFpbF90b19zdHJpbmcgbWFya3MgbXNnKVxuXG4gIGxldCBzdGF0ZV90b191bmNvbnN1bWVkID0gZnVuY3Rpb25cbiAgICB8IERvbmUodW5jb25zdW1lZCwgXylcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgXywgXykgLT4gU29tZSB1bmNvbnN1bWVkXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgICAgIC0+IE5vbmVcblxuZW5kXG5cbigqKiBCRUdJTjogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgcmVjIHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjID1cbiAgKCogW3Byb21wdF0gc2hvdWxkIG9ubHkgY2FsbCBbc3VjY10gaWYgaXQgaGFzIHJlY2VpdmVkIG1vcmUgaW5wdXQuIElmIHRoZXJlXG4gICAqIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBpbnB1dCB3aWxsIGdyb3csIGkuZS4sIFttb3JlID0gQ29tcGxldGVdLCB0aGVuXG4gICAqIFtwcm9tcHRdIHNob3VsZCBjYWxsIFtmYWlsXS4gT3RoZXJ3aXNlIChpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5wdXRcbiAgICogaGFzbid0IGdyb3duIGJ1dCBbbW9yZSA9IEluY29tcGxldGVdIGp1c3QgcHJvbXB0IGFnYWluLiAqKVxuICBsZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIGlucHV0IGluXG4gIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgaW5wdXQgaW5cbiAgKCogVGhlIGNvbnRpbnVhdGlvbiBzaG91bGQgbm90IGhvbGQgYW55IHJlZmVyZW5jZXMgdG8gaW5wdXQgYWJvdmUuICopXG4gIGxldCBjb250aW51ZSBpbnB1dCB+b2ZmIH5sZW4gbW9yZSA9XG4gICAgaWYgbGVuIDwgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicHJvbXB0OiBpbnB1dCBzaHJ1bmshXCI7XG4gICAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzOnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5cbiAgICBpZiBsZW4gPSBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBNb3JlLkNvbXBsZXRlXG4gICAgICB8IEluY29tcGxldGUgLT4gcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlXG4gIGluXG4gIFN0YXRlLlBhcnRpYWwgeyBjb21taXR0ZWQgPSBJbnB1dC5ieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCBpbnB1dDsgY29udGludWUgfVxuXG5sZXQgZGVtYW5kX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIlxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIiBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjID1cbiAgbGV0IHJlYyBnbyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYycgLT5cbiAgICAgIGlmIHBvcycgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dCcgdGhlblxuICAgICAgICBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgZWxzZVxuICAgICAgICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYydcbiAgICB9XG4gIGluXG4gIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcblxubGV0IHVuc2FmZV9hcHBseSBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mKVxuICB9XG5cbmxldCB1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIGVcbiAgICB8IE9rICAgIHggLT4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIHhcbiAgfVxuXG5sZXQgZW5zdXJlIG4gcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPSBwLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxuKCoqIEVORDogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgYXRfZW5kX29mX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgXyBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgZmFsc2VcbiAgICBlbHNlIG1hdGNoIG1vcmUgd2l0aFxuICAgIHwgQ29tcGxldGUgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSB0cnVlXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGZhbHNlXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIHRydWUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5kX29mX2lucHV0ID1cbiAgYXRfZW5kX29mX2lucHV0XG4gID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAgLT4gcmV0dXJuICgpXG4gICAgfCBmYWxzZSAtPiBmYWlsIFwiZW5kX29mX2lucHV0XCJcblxubGV0IGFkdmFuY2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImFkdmFuY2VcIlxuICBlbHNlXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IChwb3MgKyBuKSBtb3JlICgpIH1cbiAgICBpblxuICAgIGVuc3VyZSBuIHBcblxubGV0IHBvcyA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSBwb3MgfVxuXG5sZXQgYXZhaWxhYmxlID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0Lmxlbmd0aCBpbnB1dCAtIHBvcylcbiAgfVxuXG5sZXQgY29tbWl0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIElucHV0LmNvbW1pdCBpbnB1dCBwb3M7XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoKSB9XG5cbigqIERvIG5vdCB1c2UgdGhpcyBpZiBbcF0gY29udGFpbnMgYSBbY29tbWl0XS4gKilcbmxldCB1bnNhZmVfbG9va2FoZWFkIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3VjYycgaW5wdXQnIF8gbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcyBtb3JlJyB2IGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBwZWVrX2NoYXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpKVxuICAgIGVsc2UgaWYgbW9yZSA9IENvbXBsZXRlIHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJykpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIE5vbmUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG4oKiBUaGlzIHBhcnNlciBpcyB0b28gaW1wb3J0YW50IHRvIG5vdCBiZSBvcHRpbWl6ZWQuIERvIGEgY3VzdG9tIGpvYi4gKilcbmxldCByZWMgcGVla19jaGFyX2ZhaWwgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgcGVla19jaGFyX2ZhaWwucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgc2F0aXNmeSBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQgcG9zIG1vcmUgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycgaW5cbiAgICAgICAgaWYgZiBjXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCcgKHBvcycgKyAxKSBtb3JlJyBjXG4gICAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgICAgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IGNoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgPSBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IG5vdF9jaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYycgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBjIDw+IGMnXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgYydcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJub3QgY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2NoYXIgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgaW50OCBpID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpIGluXG4gICAgICBpZiBjID0gaSBsYW5kIDB4ZmZcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiaW50OCAlZFwiIGkpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X3VpbnQ4ID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoQ2hhci5jb2RlIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2ludDggPVxuICAoKiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI1ZhcmlhYmxlU2lnbkV4dGVuZFJpc2t5ICopXG4gIGxldCBzID0gU3lzLmludF9zaXplIC0gOCBpblxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgoQ2hhci5jb2RlIGMgbHNsIHMpIGFzciBzKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHNraXAgZiA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIGYgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKClcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcInNraXBcIiB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHJlYyBjb3VudF93aGlsZSB+aW5pdCB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCAocG9zICsgaW5pdCkgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICBsZXQgaW5pdCcgICAgICAgPSBpbml0ICsgbGVuIGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgcG9zICsgaW5pdCcgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBpbml0JykgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDppbml0JyB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgaW5pdCcpIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHJlYyBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgcG9zIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgbGVuIDwgMVxuICAgIHRoZW5cbiAgICAgIGlmIHBvcyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgKGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgICAgaW5cbiAgICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICAgIGVsc2UgaWYgcG9zICsgbGVuIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDpsZW4gfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGxlbikgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHN0cmluZ18gZiBzID1cbiAgKCogWFhYKHNlbGlvcG91KTogSW5lZmZpY2llbnQuIENvdWxkIGNoZWNrIHByZWZpeCBlcXVhbGl0eSB0byBzaG9ydC1jaXJjdWl0XG4gICAqIHRoZSBpby4gKilcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBlbnN1cmUgIGxlbiAodW5zYWZlX2FwcGx5X29wdCBsZW4gfmY6KGZ1biBidWZmZXIgfm9mZiB+bGVuIC0+XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIHdoaWxlICFpIDwgbGVuICYmIENoYXIuZXF1YWwgKGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyIChvZmYgKyAhaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYgKFN0cmluZy51bnNhZmVfZ2V0IHMgIWkpKVxuICAgIGRvXG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmIGxlbiA9ICFpXG4gICAgdGhlbiBPayAoQmlnc3RyaW5nYWYuc3Vic3RyaW5nIGJ1ZmZlciB+b2ZmIH5sZW4pXG4gICAgZWxzZSBFcnJvciBcInN0cmluZ1wiKSlcblxubGV0IHN0cmluZyBzICAgID0gc3RyaW5nXyAoZnVuIHggLT4geCkgc1xubGV0IHN0cmluZ19jaSBzID0gc3RyaW5nXyBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBza2lwX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcblxubGV0IHRha2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2U6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5zdWJzdHJpbmcpXG5cbmxldCB0YWtlX2JpZ3N0cmluZyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZV9iaWdzdHJpbmc6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5jb3B5KVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ190aWxsIGYgPVxuICB0YWtlX2JpZ3N0cmluZ193aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgcGVla19zdHJpbmcgbiA9XG4gIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbilcblxubGV0IHRha2Vfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV93aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3RpbGwgZiA9XG4gIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IGNob2ljZSA/KGZhaWx1cmVfbXNnPVwibm8gbW9yZSBjaG9pY2VzXCIpIHBzID1cbiAgTGlzdC5mb2xkX3JpZ2h0ICg8fD4pIHBzIChmYWlsIGZhaWx1cmVfbXNnKVxuXG5sZXQgZml4X2RpcmVjdCBmID1cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyB9XG4gIGluXG4gIHJcblxubGV0IGZpeF9sYXp5IH5tYXhfc3RlcHMgZiA9XG4gIGxldCBzdGVwcyA9IHJlZiBtYXhfc3RlcHMgaW5cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBkZWNyIHN0ZXBzO1xuICAgIGlmICFzdGVwcyA8IDBcbiAgICB0aGVuIChcbiAgICAgIHN0ZXBzIDo9IG1heF9zdGVwcztcbiAgICAgIFN0YXRlLkxhenkgKGxhenkgKChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjKSkpXG4gICAgZWxzZVxuICAgICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICAgICAgICB9XG4gIGluXG4gIHJcblxubGV0IGZpeCA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE5hdGl2ZSAtPiBmaXhfZGlyZWN0XG4gIHwgQnl0ZWNvZGUgLT4gZml4X2RpcmVjdFxuICB8IE90aGVyIF8gLT4gZnVuIGYgLT4gZml4X2xhenkgfm1heF9zdGVwczoyMCBmXG5cbmxldCBvcHRpb24geCBwID1cbiAgcCA8fD4gcmV0dXJuIHhcblxubGV0IGNvbnMgeCB4cyA9IHggOjogeHNcblxubGV0IHJlYyBsaXN0IHBzID1cbiAgbWF0Y2ggcHMgd2l0aFxuICB8IFtdICAgIC0+IHJldHVybiBbXVxuICB8IHA6OnBzIC0+IGxpZnQyIGNvbnMgcCAobGlzdCBwcylcblxubGV0IGNvdW50IG4gcCA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImNvdW50OiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCAwIC0+IHJldHVybiBbXVxuICAgICAgfCBuIC0+IGxpZnQyIGNvbnMgcCAobG9vcCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBuXG5cbmxldCBtYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKGxpZnQyIGNvbnMgcCBtKSA8fD4gcmV0dXJuIFtdKVxuXG5sZXQgbWFueTEgcCA9XG4gIGxpZnQyIGNvbnMgcCAobWFueSBwKVxuXG5sZXQgbWFueV90aWxsIHAgdCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAodCAqPiByZXR1cm4gW10pIDx8PiAobGlmdDIgY29ucyBwIG0pKVxuXG5sZXQgc2VwX2J5MSBzIHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgbGlmdDIgY29ucyBwICgocyAqPiBtKSA8fD4gcmV0dXJuIFtdKSlcblxubGV0IHNlcF9ieSBzIHAgPVxuICAobGlmdDIgY29ucyBwICgocyAqPiBzZXBfYnkxIHMgcCkgPHw+IHJldHVybiBbXSkpIDx8PiByZXR1cm4gW11cblxubGV0IHNraXBfbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgICAgKChwID4+fCBmdW4gXyAtPiB0cnVlKSA8fD4gcmV0dXJuIGZhbHNlKSA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBtXG4gICAgICB8IGZhbHNlIC0+IHJldHVybiAoKVxuICAgIClcblxubGV0IHNraXBfbWFueTEgcCA9XG4gIHAgKj4gc2tpcF9tYW55IHBcblxubGV0IGVuZF9vZl9saW5lID1cbiAgKGNoYXIgJ1xcbicgKj4gcmV0dXJuICgpKSA8fD4gKHN0cmluZyBcIlxcclxcblwiICo+IHJldHVybiAoKSkgPD8+IFwiZW5kX29mX2xpbmVcIlxuXG5sZXQgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhdGUgPSByZWYgc3RhdGUgaW5cbiAgICBsZXQgcGFyc2VyID1cbiAgICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6KGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGYgIXN0YXRlIGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHN0YXRlJyAtPiBzdGF0ZSA6PSBzdGF0ZSc7IHRydWUpXG4gICAgICB+d2l0aF9idWZmZXJcbiAgICAgID4+fCBmdW4geCAtPiB4LCAhc3RhdGVcbiAgICBpblxuICAgIHBhcnNlci5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIH1cblxubGV0IHNjYW4gc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgc2Nhbl9zdGF0ZSBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG4gID4+fCBmdW4gKCgpLCBzdGF0ZSkgLT4gc3RhdGVcblxubGV0IHNjYW5fc3RyaW5nIHN0YXRlIGYgPVxuICBzY2FuIHN0YXRlIGYgPj58IGZzdFxuXG5sZXQgY29uc3VtZV93aXRoIHAgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGFydCA9IHBvcyBpblxuICAgIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCAgaW5cbiAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9XG4gICAgICBpZiBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDw+IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnXG4gICAgICB0aGVuIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb25zdW1lZDogcGFyc2VyIGNvbW1pdHRlZFwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9IHBvcycgLSBzdGFydCBpblxuICAgICAgICBsZXQgY29uc3VtZWQgPSBJbnB1dC5hcHBseSBpbnB1dCcgc3RhcnQgbGVuIH5mIGluXG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgY29uc3VtZWQpXG4gICAgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gIH1cblxubGV0IGNvbnN1bWVkICAgICAgICAgICBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5sZXQgY29uc3VtZWRfYmlnc3RyaW5nIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCBib3RoIGEgYiA9IGxpZnQyIChmdW4gYSBiIC0+IGEsIGIpIGEgYlxubGV0IG1hcCB0IH5mID0gdCA+PnwgZlxubGV0IGJpbmQgdCB+ZiA9IHQgPj49IGZcbmxldCBtYXAyIGEgYiB+ZiA9IGxpZnQyIGYgYSBiXG5sZXQgbWFwMyBhIGIgYyB+ZiA9IGxpZnQzIGYgYSBiIGNcbmxldCBtYXA0IGEgYiBjIGQgfmYgPSBsaWZ0NCBmIGEgYiBjIGRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuICAgIGxldCBtYXAyID0gbWFwMlxuICAgIGxldCBtYXAzID0gbWFwM1xuICAgIGxldCBtYXA0ID0gbWFwNFxuICBlbmRcbmVuZFxuXG5sZXQgKCBsZXQrICkgPSAoID4+fCApXG5sZXQgKCBsZXQqICkgPSAoID4+PSApXG5sZXQgKCBhbmQrICkgPSBib3RoXG5cbm1vZHVsZSBCRSA9IHN0cnVjdFxuICAoKiBYWFgoc2VsaW9wb3UpOiBUaGUgcGF0dGVybiBpbiBib3RoIHRoaXMgbW9kdWxlIGFuZCBbTEVdIGFyZSBhIGNvbXByb21pc2VcbiAgICogYmV0d2VlbiBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBCeSBpbmxpbmluZyBbZW5zdXJlXSB5b3UgY2FuIHJlY292ZXJcbiAgICogYWJvdXQgMiBuYW5vc2Vjb25kcyBvbiBhdmVyYWdlLiBUaGF0IG1heSBhZGQgdXAgaW4gY2VydGFpbiBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBhbGxvY2F0ZSBpbiB0aGUgZmFzdCAoc3VjY2VzcykgcGF0aC5cbiAgICogKilcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9iZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgTEUgPSBzdHJ1Y3RcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9sZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHRha2UgbiBmID1cbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmYpXG5cbiAgbGV0IHBlZWsgbiBmID1cbiAgICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4gZilcblxuICBsZXQgdGFrZV93aGlsZSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2Vfd2hpbGUxIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlMSB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3RpbGwgY2hlY2sgZiA9XG4gICAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChjaGVjayBjKSkgZlxuZW5kXG5cbm1vZHVsZSBDb25zdW1lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBQcmVmaXhcbiAgICB8IEFsbFxuZW5kXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBicyA9XG4gIGxldCBwID1cbiAgICBtYXRjaCAoY29uc3VtZSA6IENvbnN1bWUudCkgd2l0aFxuICAgIHwgUHJlZml4IC0+IHBcbiAgICB8IEFsbCAtPiBwIDwqIGVuZF9vZl9pbnB1dFxuICBpblxuICBVbmJ1ZmZlcmVkLnBhcnNlX2JpZ3N0cmluZyBwIGJzXG5cbmxldCBwYXJzZV9zdHJpbmcgfmNvbnN1bWUgcCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnMgID0gQmlnc3RyaW5nYWYuY3JlYXRlIGxlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOjAgYnMgfmRzdF9vZmY6MCB+bGVuO1xuICBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBic1xuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFuaWwgTWFkaGF2YXBlZGR5IDxhbmlsQHJlY29pbC5vcmc+XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEYXZpZCBTaGVldHMgPHNoZWV0c0BhbHVtLm1pdC5lZHU+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxudHlwZSBjb21wb25lbnQgPSBbXG4gIHwgYFNjaGVtZVxuICB8IGBBdXRob3JpdHlcbiAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBQYXRoXG4gIHwgYFF1ZXJ5XG4gIHwgYFF1ZXJ5X2tleVxuICB8IGBRdWVyeV92YWx1ZVxuICB8IGBGcmFnbWVudFxuICB8IGBHZW5lcmljXG4gIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKSAoKiAoY29tcG9uZW50ICogc2FmZSBjaGFycyAqIHVuc2FmZSBjaGFycykgKilcbl1cblxudHlwZSBwY3RfZW5jb2RlciA9IHtcbiAgICBzY2hlbWU6IGNvbXBvbmVudDtcbiAgICB1c2VyaW5mbzogY29tcG9uZW50O1xuICAgIGhvc3Q6IGNvbXBvbmVudDtcbiAgICBwYXRoOiBjb21wb25lbnQ7XG4gICAgcXVlcnlfa2V5OiBjb21wb25lbnQ7XG4gICAgcXVlcnlfdmFsdWU6IGNvbXBvbmVudDtcbiAgICBmcmFnbWVudDogY29tcG9uZW50O1xuICB9XG5cbmxldCByZWMgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiA9IGZ1bmN0aW9uXG4gIHwgbGFzdDo6W10gLT4gZm4gYnVmIGxhc3RcbiAgfCBlbDo6cmVzdCAtPlxuICAgIGZuIGJ1ZiBlbDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCByZXZfaW50ZXJqZWN0IGUgbHN0ID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAtPiBhY2NcbiAgICB8IHg6OnhzIC0+IGF1eCAoeDo6ZTo6YWNjKSB4c1xuICBpbiBtYXRjaCBsc3Qgd2l0aFxuICB8IFtdICAtPiBbXVxuICB8IGg6OnQgLT4gYXV4IFtoXSB0XG5cbmxldCBjb21wYXJlX29wdCBjIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgICBOb25lICAgLT4gMFxuICB8IFNvbWUgXywgTm9uZSAgIC0+IDFcbiAgfCBOb25lLCAgIFNvbWUgXyAtPiAtMVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGMgYSBiXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGYgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBbXSwgICAgW10gICAgLT4gIDBcbiAgfCBfOjpfLCAgW10gICAgLT4gIDFcbiAgfCBbXSwgICAgXzo6XyAgLT4gLTFcbiAgfCB4Ojp4cywgeTo6eXMgLT5cbiAgICBtYXRjaCBmIHggeSB3aXRoIDAgLT4gY29tcGFyZV9saXN0IGYgeHMgeXMgfCBjIC0+IGNcblxuKCoqIFNhZmUgY2hhcmFjdGVycyB0aGF0IGFyZSBhbHdheXMgYWxsb3dlZCBpbiBhIFVSSVxuICAqIFVuZm9ydHVuYXRlbHksIHRoaXMgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGljaCBiaXQgb2YgdGhlIFVSSVxuICAqIGlzIGJlaW5nIHBhcnNlZCwgc28gdGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIChhbmQgdGhpc1xuICAqIHNldCBpcyBwcm9iYWJseSBub3QgZXhoYXVzdGl2ZS4gVE9ETzogY2hlY2suXG4qKVxudHlwZSBzYWZlX2NoYXJzID0gYm9vbCBhcnJheVxuXG5tb2R1bGUgdHlwZSBTY2hlbWUgPSBzaWdcbiAgdmFsIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA6IGNvbXBvbmVudCAtPiBzYWZlX2NoYXJzXG4gIHZhbCBub3JtYWxpemVfaG9zdCA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGNhbm9uaWNhbGl6ZV9wb3J0IDogaW50IG9wdGlvbiAtPiBpbnQgb3B0aW9uXG4gIHZhbCBjYW5vbmljYWxpemVfcGF0aCA6IHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgbGV0IHN1Yl9kZWxpbXMgYSA9XG4gICAgbGV0IHN1YmQgPSBcIiEkJicoKSorLDs9XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdWJkIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc3ViZC5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFycyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkubWFrZSAyNTYgZmFsc2UgaW5cbiAgICBsZXQgYWx3YXlzX3NhZmUgPVxuICAgICAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8uLX5cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIGFsd2F5c19zYWZlIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYWx3YXlzX3NhZmUuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHBjaGFyIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHNhZmVfY2hhcnMpIGluXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJ0AnKSA8LSB0cnVlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3Jfc2NoZW1lIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSB0cnVlO1xuICAgIGFcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgcGF0aCBjb21wb25lbnQgb2YgYSBVUkkgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3BhdGggOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgcGNoYXIpIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeSA6IHNhZmVfY2hhcnMgPVxuICAgICgqIFRPRE86IFdoYXQgYWJvdXQge1wiIVwiLFwiJFwiLFwiLFwifT8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYXZzbS9vY2FtbC11cmkvY29tbWl0LzFlZjNmMWRmYjQxYmRiNGYzM2YyMjNmZmUxNmU2MmEzMzk3NTY2MWEjZGlmZi03NDBmMmRlNTNjOWViMzZlOTY3MGRkZmJkYjliYTkxNFIxNzE+ICopXG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHBjaGFyIGluXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJz8nKSA8LSB0cnVlO1xuICAgICgqICcmJyBpcyBzYWZlIGJ1dCB3ZSBzaG91bGQgZW5jb2RlIGxpdGVyYWxzIHRvIGF2b2lkIGFtYmlndWl0eVxuICAgICAgIHdpdGggdGhlIGFscmVhZHkgcGFyc2VkIHFzIHBhcmFtcyAqKVxuICAgIGEuKENoYXIuY29kZSAnJicpIDwtIGZhbHNlO1xuICAgICgqICc7JyBpcyBzYWZlIGJ1dCBzb21lIHN5c3RlbXMgdHJlYXQgaXQgbGlrZSAnJicuICopXG4gICAgYS4oQ2hhci5jb2RlICc7JykgPC0gZmFsc2U7XG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXkgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJz0nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICcsJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudCA6IHNhZmVfY2hhcnMgPSBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSB1c2VyaW5mbyBzdWJjb21wb25lbnQgb2YgYSBVUkkuXG4gICAgICBUT0RPOiB0aGlzIG5lZWRzIG1vcmUgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhZGRlZCAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfdXNlcmluZm8gOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgcmVjIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA9IGZ1bmN0aW9uXG4gICAgfCBgUGF0aCAtPiBzYWZlX2NoYXJzX2Zvcl9wYXRoXG4gICAgfCBgVXNlcmluZm8gLT4gc2FmZV9jaGFyc19mb3JfdXNlcmluZm9cbiAgICB8IGBRdWVyeSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuICAgIHwgYFF1ZXJ5X2tleSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXlcbiAgICB8IGBRdWVyeV92YWx1ZSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZVxuICAgIHwgYEZyYWdtZW50IC0+IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50XG4gICAgfCBgU2NoZW1lIC0+IHNhZmVfY2hhcnNfZm9yX3NjaGVtZVxuICAgIHwgYEN1c3RvbSAoKGNvbXBvbmVudCA6IGNvbXBvbmVudCksIHNhZmUsIHVuc2FmZSkgLT5cbiAgICAgICBsZXQgc2FmZV9jaGFycyA9IEFycmF5LmNvcHkgKHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQpIGluXG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSB0cnVlXG4gICAgICAgZG9uZTtcbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB1bnNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSB1bnNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSBmYWxzZVxuICAgICAgIGRvbmU7XG4gICAgICAgc2FmZV9jaGFyc1xuICAgIHwgYEdlbmVyaWNcbiAgICB8IF8gLT4gc2FmZV9jaGFyc1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBoc28gPSBoc29cblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgcG9ydCA9IHBvcnRcbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoIHBhdGggPSBwYXRoXG5lbmRcblxubW9kdWxlIEh0dHAgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBoc1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgODAgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuXG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXCIvXCJdXG4gICAgfCB4ICAtPiB4XG5lbmRcblxubW9kdWxlIEh0dHBzIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgSHR0cFxuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgNDQzIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcbmVuZFxuXG5tb2R1bGUgRmlsZSA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPVxuICAgIGxldCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHMgaW5cbiAgICBpZiBocz1cImxvY2FsaG9zdFwiIHRoZW4gXCJcIiBlbHNlIGhzXG5lbmRcblxubW9kdWxlIFVybiA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuZW5kXG5cbmxldCBtb2R1bGVfb2Zfc2NoZW1lID0gZnVuY3Rpb25cbiAgfCBTb21lIHMgLT4gYmVnaW4gbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzIHdpdGhcbiAgICAgIHwgXCJodHRwXCIgLT4gKG1vZHVsZSBIdHRwIDogU2NoZW1lKVxuICAgICAgfCBcImh0dHBzXCIgIC0+IChtb2R1bGUgSHR0cHMgOiBTY2hlbWUpXG4gICAgICB8IFwiZmlsZVwiIC0+IChtb2R1bGUgRmlsZSA6IFNjaGVtZSlcbiAgICAgIHwgXCJ1cm5cIiAgLT4gKG1vZHVsZSBVcm4gOiBTY2hlbWUpXG4gICAgICB8IF8gLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuICAgIGVuZFxuICB8IE5vbmUgLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuXG4oKiogUG9ydGlvbnMgb2YgdGhlIFVSTCBtdXN0IGJlIGNvbnZlcnRlZCB0by1hbmQtZnJvbSBwZXJjZW50LWVuY29kaW5nXG4gICogYW5kIHRoaXMgcmVhbGx5LCByZWFsbHkgc2hvdWxkbid0IGJlIG1peGVkIHVwLiBTbyB0aGlzIFBjdCBtb2R1bGVcbiAgKiBkZWZpbmVzIGFic3RyYWN0IFBjdC5lbmNvZGVkIGFuZCBQY3QuZGVjb2RlZCB0eXBlcyB3aGljaCBzZXRzIHRoZVxuICAqIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmluZy4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gXCJjYXN0XCIgdG9cbiAgKiBhbmQgZnJvbSB0aGVzZSBhbmQgbm9ybWFsIHN0cmluZ3MsIGFuZCB0aGlzIHByb21vdGVzIGEgYml0IG9mXG4gICogaW50ZXJuYWwgc2FmZXR5LiAgVGhlc2UgdHlwZXMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBleHRlcm5hbFxuICAqIGludGVyZmFjZSwgYXMgY2FzdGluZyB0by1hbmQtZnJvbSBpcyBxdWl0ZSBhIGJpdCBvZiBoYXNzbGUgYW5kXG4gICogcHJvYmFibHkgbm90IGEgbG90IG9mIHVzZSB0byB0aGUgYXZlcmFnZSBjb25zdW1lciBvZiB0aGlzIGxpYnJhcnlcbiopXG5tb2R1bGUgUGN0IDogc2lnXG4gIHR5cGUgZW5jb2RlZFxuICB0eXBlIGRlY29kZWRcblxuICB2YWwgZW5jb2RlIDogP3NjaGVtZTpzdHJpbmcgLT4gP2NvbXBvbmVudDpjb21wb25lbnQgLT4gZGVjb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCBkZWNvZGUgOiBlbmNvZGVkIC0+IGRlY29kZWRcblxuICAoKiBUaGUgZW1wdHkgZGVjb2RlZCBzdHJpbmcgKilcbiAgdmFsIGVtcHR5X2RlY29kZWQgOiBkZWNvZGVkXG4gICgqIElkZW50aXR5IGZ1bmN0aW9ucyBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2FzdCB3aGVuIHVzaW5nIHRoZW0gYmVsb3cgKilcbiAgdmFsIGNhc3RfZW5jb2RlZCA6IHN0cmluZyAtPiBlbmNvZGVkXG4gIHZhbCBjYXN0X2RlY29kZWQgOiBzdHJpbmcgLT4gZGVjb2RlZFxuICB2YWwgdW5jYXN0X2VuY29kZWQgOiBlbmNvZGVkIC0+IHN0cmluZ1xuICB2YWwgdW5jYXN0X2RlY29kZWQgOiBkZWNvZGVkIC0+IHN0cmluZ1xuICAoKiBMaWZ0IEhPRnMgZm9yIG1hcHMgb3ZlciBlbmNvZGluZ3MsIGRlY29kaW5ncywgYW5kIHN0cmluZ3MgKilcbiAgdmFsIGxpZnRfZW5jb2RlZCA6IChlbmNvZGVkIC0+IGVuY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGxpZnRfZGVjb2RlZCA6IChkZWNvZGVkIC0+IGRlY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHVubGlmdF9lbmNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGVuY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZGVjb2RlZCAtPiBkZWNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZDIgOiAoc3RyaW5nIC0+IHN0cmluZyAtPiAnYSkgLT4gZGVjb2RlZCAtPiBkZWNvZGVkIC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlbmNvZGVkID0gc3RyaW5nXG4gIHR5cGUgZGVjb2RlZCA9IHN0cmluZ1xuICBsZXQgY2FzdF9lbmNvZGVkIHggPSB4XG4gIGxldCBjYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IGVtcHR5X2RlY29kZWQgPSBcIlwiXG4gIGxldCB1bmNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgdW5jYXN0X2VuY29kZWQgeCA9IHhcblxuICBsZXQgbGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCBsaWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQyIGYgPSBmXG5cbiAgKCoqIFNjYW4gZm9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoXG4gICAgICBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHMuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIGIgPVxuICAgIGxldCBtb2R1bGUgU2NoZW1lID0gKHZhbCAobW9kdWxlX29mX3NjaGVtZSBzY2hlbWUpIDogU2NoZW1lKSBpblxuICAgIGxldCBzYWZlX2NoYXJzID0gU2NoZW1lLnNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBiLltjdXJdIGluXG4gICAgICAgIGlmIHNhZmVfY2hhcnMuKGMpIHRoZW5cbiAgICAgICAgICBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIGlmIGN1ciA+IHN0YXJ0IHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQcmludGYuc3ByaW50ZiBcIiUlJTAyWFwiIGMpO1xuICAgICAgICAgIHNjYW4gKGN1cisxKSAoY3VyKzEpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IGludF9vZl9oZXhfY2hhciBjID1cbiAgICBsZXQgYyA9IGludF9vZl9jaGFyIChDaGFyLnVwcGVyY2FzZV9hc2NpaSBjKSAtIDQ4IGluXG4gICAgaWYgYyA+IDlcbiAgICB0aGVuIGlmIGMgPiAxNiAmJiBjIDwgMjNcbiAgICAgIHRoZW4gYyAtIDdcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuICAgIGVsc2UgaWYgYyA+PSAwXG4gICAgdGhlbiBjXG4gICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG5cbiAgKCoqIFNjYW4gZm9yIHBlcmNlbnQtZW5jb2RpbmcgYW5kIGNvbnZlcnQgdGhlbSBpbnRvIEFTQ0lJLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZGVjb2RlZCBzdHJpbmcgKilcbiAgbGV0IGRlY29kZSBiID1cbiAgICAoKiBUT0RPOiBTaG91bGQgYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgdmVyc2lvbnMgYmUgZXhwb3NlZD8gKilcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydClcbiAgICAgIGVsc2UgaWYgYi5bY3VyXSA9ICclJyB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSdcbiAgICAgICAgZWxzZSBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICBzY2FuIGN1ciBjdXJcbiAgICAgICAgfCBoaWdoYml0cyAtPiBiZWdpblxuICAgICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdXG4gICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGxldCBzdGFydF9hdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgICAgICAgfCBsb3diaXRzIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgKGhpZ2hiaXRzIGxzbCA0ICsgbG93Yml0cykpO1xuICAgICAgICAgICAgICAgIGN1cisxXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXTtcbiAgICAgICAgICAgICAgICBjdXJcbiAgICAgICAgICAgIGluIHNjYW4gc3RhcnRfYXQgc3RhcnRfYXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbmVuZFxuXG4oKiBQZXJjZW50IGVuY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9lbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgcyA9XG4gIFBjdC4odW5jYXN0X2VuY29kZWQgKGVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgKGNhc3RfZGVjb2RlZCBzKSkpXG5cbmxldCBwY3RfZW5jb2RlclxuICAgICAgPyhzY2hlbWU9YFNjaGVtZSlcbiAgICAgID8odXNlcmluZm89YFVzZXJpbmZvKVxuICAgICAgPyhob3N0PWBIb3N0KVxuICAgICAgPyhwYXRoPWBQYXRoKVxuICAgICAgPyhxdWVyeV9rZXk9YFF1ZXJ5X2tleSlcbiAgICAgID8ocXVlcnlfdmFsdWU9YFF1ZXJ5X3ZhbHVlKVxuICAgICAgPyhmcmFnbWVudD1gRnJhZ21lbnQpXG4gICAgICAoKSA9XG4gIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcGF0aDsgcXVlcnlfa2V5OyBxdWVyeV92YWx1ZTsgZnJhZ21lbnQgfVxuXG4oKiBQZXJjZW50IGRlY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9kZWNvZGUgcyA9IFBjdC4odW5jYXN0X2RlY29kZWQgKGRlY29kZSAoY2FzdF9lbmNvZGVkIHMpKSlcblxuKCogVXNlcmluZm8gc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBpZCAqIGNyZWRlbnRpYWwgcGFpciAqKVxubW9kdWxlIFVzZXJpbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxuICBsZXQgY29tcGFyZSAodSxwKSAodScscCcpID1cbiAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSB1IHUnIHdpdGhcbiAgICB8IDAgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcCBwJ1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IHVzZXJpbmZvX29mX2VuY29kZWQgdXMgPVxuICAgIG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+bWF4OjIgfm9uOic6JyB1cyB3aXRoXG4gICAgfCBbXSAtPiAoXCJcIixOb25lKVxuICAgIHwgW3VdIC0+IChwY3RfZGVjb2RlIHUsTm9uZSlcbiAgICB8IHU6OnA6Ol8gLT4gKHBjdF9kZWNvZGUgdSxTb21lIChwY3RfZGVjb2RlIHApKVxuXG4gIGxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCAodSxwbykgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcuKFxuICAgICAgMSArIChsZW5ndGggdSkgKyAobWF0Y2ggcG8gd2l0aCBOb25lIC0+IDAgfCBTb21lIHAgLT4gbGVuZ3RoIHApKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB1KTtcbiAgICBiZWdpbiBtYXRjaCBwbyB3aXRoIE5vbmUgLT4gKCk7XG4gICAgfCBTb21lIHAgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBwKVxuICAgIGVuZDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuZW5kXG5cbmxldCB1c2VyaW5mb19vZl9lbmNvZGVkID0gVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ID0gVXNlcmluZm8uZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUGF0aCBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGEgbGlzdCBvZiBwYXRoIHRva2VucyAqKVxubW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgKCogSW52YXJpYW50OiBldmVyeSBlbGVtZW50IGlzIG5vbi16ZXJvLCBzbGFzaGVzICgvKSBvbmx5IG9jY3VyIGFsb25lLiAqKVxuICAoKiBZZXMsIGl0J3MgYmV0dGVyIHRoaXMgd2F5LiBUaGlzIG1lYW5zIHlvdSBjYW4gcmV0YWluIHNlcGFyYXRvclxuICAgICBjb250ZXh0IGluIHJlY3Vyc2lvbiAoZS5nLiByZW1vdmVfZG90X3NlZ21lbnRzIGZvciByZWxhdGl2ZSByZXNvbHV0aW9uKS4gKilcblxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlXG5cbiAgKCogTWFrZSBhIHBhdGggdG9rZW4gbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcGF0aF9vZl9lbmNvZGVkIHBzID1cbiAgICBsZXQgdG9rbCA9IFN0cmluZ2V4dC5mdWxsX3NwbGl0IHBzIH5vbjonLycgaW5cbiAgICBMaXN0Lm1hcCBwY3RfZGVjb2RlIHRva2xcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQ+ICopXG4gIGxldCByZW1vdmVfZG90X3NlZ21lbnRzIHAgPVxuICAgIGxldCByZXZwID0gTGlzdC5yZXYgcCBpblxuICAgIGxldCByZWMgbG9vcCBhc2NlbnNpb24gb3V0cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiL1wiOjpcIi4uXCI6OnIgfCBcIi4uXCI6OnIgLT4gbG9vcCAoYXNjZW5zaW9uICsgMSkgb3V0cCByXG4gICAgICB8IFwiL1wiOjpcIi5cIjo6ciAgfCBcIi5cIjo6ciAgLT4gbG9vcCBhc2NlbnNpb24gb3V0cCByXG4gICAgICB8IFwiL1wiOjpbXSB8IFtdIHdoZW4gTGlzdC4obGVuZ3RoIHAgPiAwICYmIGhkIHAgPSBcIi9cIikgLT4gXCIvXCI6Om91dHBcbiAgICAgIHwgW10gd2hlbiBhc2NlbnNpb24gPiAwIC0+IExpc3QucmV2X2FwcGVuZFxuICAgICAgICAoXCIvXCI6OihyZXZfaW50ZXJqZWN0IFwiL1wiIEFycmF5Lih0b19saXN0IChtYWtlIGFzY2Vuc2lvbiBcIi4uXCIpKSkpIG91dHBcbiAgICAgIHwgW10gLT4gTGlzdC4oaWYgbGVuZ3RoIG91dHAgPiAwICYmIGhkIG91dHAgPSBcIi9cIiB0aGVuIHRsIG91dHAgZWxzZSBvdXRwKVxuICAgICAgfCBcIi9cIjo6XCIvXCI6OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgKFwiL1wiOjpyKVxuICAgICAgfCBcIi9cIjo6Xzo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCByXG4gICAgICB8IHM6OnIgLT4gbG9vcCAwIChzOjpvdXRwKSByXG4gICAgaW4gbG9vcCAwIFtdIHJldnBcblxuICBsZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCBwID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBjIHRvayAtPiBTdHJpbmcubGVuZ3RoIHRvayArIGMpIDAgcCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIC0+IGZ1bmN0aW9uXG4gICAgfCBcIi9cIiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgIHwgc2VnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgc2VnKVxuICAgICkgXCJcIiBidWYgcDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMz4gKilcbiAgbGV0IG1lcmdlIGJob3N0IGJwYXRoIHJlbHBhdGggPVxuICAgIG1hdGNoIGJob3N0LCBMaXN0LnJldiBicGF0aCB3aXRoXG4gICAgfCBTb21lIF8sIFtdIC0+IFwiL1wiOjpyZWxwYXRoXG4gICAgfCBfLCAoXCIvXCI6OnJicGF0aCB8IF86OlwiL1wiOjpyYnBhdGgpIC0+IExpc3QucmV2X2FwcGVuZCAoXCIvXCI6OnJicGF0aCkgcmVscGF0aFxuICAgIHwgXywgXyAtPiByZWxwYXRoXG5lbmRcblxubGV0IHBhdGhfb2ZfZW5jb2RlZCA9IFBhdGgucGF0aF9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCA9IFBhdGguZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBRdWVyeSBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGFzc29jIGxpc3Qgb2Yga2V5L3ZhbHVlcyAqKVxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG5cbiAgdHlwZSBrdiA9IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBLViBvZiBrdlxuICAgIHwgUmF3IG9mIHN0cmluZyBvcHRpb24gKiBrdiBMYXp5LnRcblxuICBsZXQgY29tcGFyZSB4IHkgPSBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IEtWIGt2bCwgS1Yga3ZsJ1xuICAgIHwgUmF3IChfLCBsYXp5IGt2bCksIEtWIGt2bCdcbiAgICB8IEtWIGt2bCwgUmF3IChfLCBsYXp5IGt2bCcpIC0+XG4gICAgICBjb21wYXJlX2xpc3QgKGZ1biAoayx2bCkgKGsnLHZsJykgLT5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgayBrJyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmUgdmwgdmwnXG4gICAgICAgIHwgYyAtPiBjXG4gICAgICApIGt2bCBrdmwnXG4gICAgfCBSYXcgKHJhdyxfKSwgUmF3IChyYXcnLF8pIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHJhdyByYXcnXG5cbiAgbGV0IGZpbmQgcSBrID0gdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHNwbGl0X3F1ZXJ5IHFzID1cbiAgICBsZXQgZWxzID0gU3RyaW5nZXh0LnNwbGl0IH5vbjonJicgcXMgaW5cbiAgICAoKiBSZXBsYWNlIGEgKyBpbiBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc3BhY2UgaW4tcGxhY2UgKilcbiAgICBsZXQgcGx1c190b19zcGFjZSBzID1cbiAgICAgIGxldCBzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQnl0ZXMubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGlmIEJ5dGVzLmdldCBzIGkgPSAnKycgdGhlbiBCeXRlcy5zZXQgcyBpICcgJ1xuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IChrOjp2OjpfKTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssXG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+b246JywnIChwbHVzX3RvX3NwYWNlIHYpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXCJcIl0gfCBsIC0+IGwpIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW2tdOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgaywgW10gaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBbXTo6dGwgLT4gbG9vcCAoKFwiXCIsIFtdKTo6YWNjKSB0bFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICBpblxuICAgIG1hdGNoIGVscyB3aXRoXG4gICAgfCBbXSAgLT4gW1wiXCIsW11dXG4gICAgfCBlbHMgLT4gbG9vcCBbXVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIGVsIC0+IFN0cmluZ2V4dC5zcGxpdCB+b246Jz0nIGVsIH5tYXg6MikgZWxzKVxuXG4gICgqIE1ha2UgYSBxdWVyeSB0dXBsZSBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBxdWVyeV9vZl9lbmNvZGVkIHFzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoaywgdikgLT4gKHBjdF9kZWNvZGUgaywgTGlzdC5tYXAgcGN0X2RlY29kZSB2KSlcbiAgICAgIChzcGxpdF9xdWVyeSBxcylcblxuICAoKiBBc3NlbWJsZSBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgcHV0dGluZyBpbnRvIGEgVVJJLlxuICAgKiBUdXBsZSBpbnB1dHMgYXJlIHBlcmNlbnQgZGVjb2RlZCBhbmQgd2lsbCBiZSBlbmNvZGVkIGJ5XG4gICAqIHRoaXMgZnVuY3Rpb24uXG4gICopXG4gIGxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAoayx2KSAtPlxuICAgICAgICBhICsgKFN0cmluZy5sZW5ndGggaylcbiAgICAgICAgKyAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhIHMgLT4gYSsoU3RyaW5nLmxlbmd0aCBzKSsxKSAwIHYpICsgMikgKC0xKSBsIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgKGssdikgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV9rZXkgayk7XG4gICAgICAgIGlmIHYgPD4gW10gdGhlbiAoXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPSc7XG4gICAgICAgICAgaXRlcl9jb25jYXQgKGZ1biBidWYgcyAtPlxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgICAgICAgICAgICAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfdmFsdWUgcylcbiAgICAgICAgICAgICkgXCIsXCIgYnVmIHYpXG4gICAgICApIFwiJlwiIGJ1ZiBsO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgb2ZfcmF3IHFzID1cbiAgICBsZXQgbGF6eV9xdWVyeSA9IExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiBxdWVyeV9vZl9lbmNvZGVkIHFzKSBpblxuICAgIFJhdyAoU29tZSBxcywgbGF6eV9xdWVyeSlcblxuICBsZXQga3YgPSBmdW5jdGlvbiBSYXcgKF8sIGxhenkga3YpIHwgS1Yga3YgLT4ga3ZcbmVuZFxuXG5sZXQgcXVlcnlfb2ZfZW5jb2RlZCA9IFF1ZXJ5LnF1ZXJ5X29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPSBRdWVyeS5lbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWVcblxuKCogVHlwZSBvZiB0aGUgVVJJLCB3aXRoIG1vc3QgYml0cyBiZWluZyBvcHRpb25hbCAqKVxudHlwZSB0ID0ge1xuICBzY2hlbWU6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbiAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF0gb3B0aW9uIDtcbiAgcG9ydDogaW50IG9wdGlvbjtcbiAgcGF0aDogUGF0aC50O1xuICBxdWVyeTogUXVlcnkudDtcbiAgZnJhZ21lbnQ6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID0ge1xuICBzY2hlbWUgPSBOb25lO1xuICB1c2VyaW5mbyA9IE5vbmU7XG4gIGhvc3QgPSBOb25lO1xuICBwb3J0ID0gTm9uZTtcbiAgcGF0aCA9IFtdO1xuICBxdWVyeSA9IFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSk7XG4gIGZyYWdtZW50ID0gTm9uZTtcbn1cblxubGV0IGNvbXBhcmVfZGVjb2RlZCA9IFBjdC51bmxpZnRfZGVjb2RlZDIgU3RyaW5nLmNvbXBhcmVcbmxldCBjb21wYXJlX2RlY29kZWRfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9kZWNvZGVkXG5sZXQgY29tcGFyZV9ob3N0IGgxIGgyID1cbiAgbWF0Y2ggaDEsIGgyIHdpdGhcbiAgfCBgSXB2NF9saXRlcmFsIGlwMSwgYElwdjRfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBJcHY2X2xpdGVyYWwgaXAxLCBgSXB2Nl9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYEhvc3QgaDEsIGBIb3N0IGgyIC0+IGNvbXBhcmVfZGVjb2RlZCBoMSBoMlxuICB8IF8gLT4gLTFcbmxldCBjb21wYXJlX2hvc3Rfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9ob3N0XG5cbmxldCBjb21wYXJlIHQgdCcgPVxuICAobWF0Y2ggY29tcGFyZV9ob3N0X29wdCB0Lmhvc3QgdCcuaG9zdCB3aXRoXG4gIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9kZWNvZGVkX29wdCB0LnNjaGVtZSB0Jy5zY2hlbWUgd2l0aFxuICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgKGZ1biBwIHAnIC0+XG4gICAgICBpZiBwIDwgcCcgdGhlbiAtMSBlbHNlIGlmIHAgPiBwJyB0aGVuIDEgZWxzZSAwXG4gICAgKSB0LnBvcnQgdCcucG9ydCB3aXRoXG4gICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IFVzZXJpbmZvLmNvbXBhcmUgdC51c2VyaW5mbyB0Jy51c2VyaW5mbyB3aXRoXG4gICAgICAgIHwgMCAtPiAobWF0Y2ggUGF0aC5jb21wYXJlIHQucGF0aCB0Jy5wYXRoIHdpdGhcbiAgICAgICAgICB8IDAgLT4gKG1hdGNoIFF1ZXJ5LmNvbXBhcmUgdC5xdWVyeSB0Jy5xdWVyeSB3aXRoXG4gICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9kZWNvZGVkX29wdCB0LmZyYWdtZW50IHQnLmZyYWdtZW50XG4gICAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgfCBjIC0+IGMpXG4gICAgICB8IGMgLT4gYylcbiAgICB8IGMgLT4gYylcbiAgfCBjIC0+IGMpXG5cbmxldCBlcXVhbCB0IHQnID0gY29tcGFyZSB0IHQnID0gMFxuXG5sZXQgdW5jYXN0X29wdCA9IGZ1bmN0aW9uXG4gIHwgU29tZSBoIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgbm9ybWFsaXplIHNjaGVtIHVyaSA9XG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHNjaGVtKSkgOiBTY2hlbWUpIGluXG4gIGxldCBkb2IgZiA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gU29tZSAoUGN0LnVubGlmdF9kZWNvZGVkIGYgeClcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpbiB7dXJpIHdpdGhcbiAgICAgIHNjaGVtZT1kb2IgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSB1cmkuc2NoZW1lO1xuICAgICAgaG9zdD0gbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICAgIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjRfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjZfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTY2hlbWUubm9ybWFsaXplX2hvc3QgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIH1cblxuKCoqIENvbnZlcnQgYSBVUkkgc3RydWN0dXJlIGludG8gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nXG4gICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjM+XG4qKVxubGV0IHRvX3N0cmluZyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPVxuICBsZXQgc2NoZW1lID0gbWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHMpXG4gICAgfCBOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gICgqIFBlcmNlbnQgZW5jb2RlIGEgZGVjb2RlZCBzdHJpbmcgYW5kIGFkZCBpdCB0byB0aGUgYnVmZmVyICopXG4gIGxldCBhZGRfcGN0X3N0cmluZyA/KGNvbXBvbmVudD1gUGF0aCkgeCA9XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWQgKFBjdC5lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHgpKVxuICBpblxuICAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgeCAtPlxuICAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnNjaGVtZSB4O1xuICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6J1xuICApO1xuICAoKiBVUkkgaGFzIGEgaG9zdCBpZiBhbnkgaG9zdC1yZWxhdGVkIGNvbXBvbmVudCBpcyBzZXQuIERlZmF1bHRzIHRvIFwiXCIuICopXG4gIGlmIChtYXRjaCB1cmkudXNlcmluZm8sIHVyaS5ob3N0LCB1cmkucG9ydCB3aXRoXG4gIHwgU29tZSBfLCBfLCBfIHwgXywgU29tZSBfLCBfIHwgXywgXywgU29tZSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi8vXCI7XG4gIChtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSB1c2VyaW5mbyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdAJ1xuICApO1xuICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmhvc3QgaG9zdDtcbiAgfFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3RcbiAgfFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1snO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3Q7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICddJ1xuICApO1xuICAobWF0Y2ggdXJpLnBvcnQgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSBwb3J0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChzdHJpbmdfb2ZfaW50IHBvcnQpXG4gICk7XG4gIChtYXRjaCB1cmkucGF0aCB3aXRoICgqIEhhbmRsZSByZWxhdGl2ZSBwYXRocyBjb3JyZWN0bHkgKilcbiAgfCBbXSAtPiAoKVxuICB8IFwiL1wiOjpfIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICB8IGZpcnN0X3NlZ21lbnQ6Ol8gLT5cbiAgICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICB8IFNvbWUgXyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgICB8IE5vbmUgLT5cbiAgICAgICAoKiBlbnN1cmUgcm91bmR0cmlwIGJ5IGZvcmNpbmcgcmVsYXRpdmUgcGF0aCBpbnRlcnByZXRhdGlvbiBub3Qgc2NoZW1lICopXG4gICAgICAgbWF0Y2ggU3RyaW5nZXh0LmZpbmRfZnJvbSBmaXJzdF9zZWdtZW50IH5wYXR0ZXJuOlwiOlwiIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgXyAtPiBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIuL1wiXG4gICAgKTtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gICk7XG4gIFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgIHwgUmF3IChOb25lLF8pIHwgS1YgW10gLT4gKClcbiAgICB8IFJhdyAoXyxsYXp5IHEpIHwgS1YgcSAtPiAoKiBub3JtYWxpemUgZS5nLiBwZXJjZW50IGNhcGl0YWxpemF0aW9uICopXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIH5wY3RfZW5jb2RlciBxKVxuICApO1xuICAobWF0Y2ggdXJpLmZyYWdtZW50IHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSBmIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyMnOyBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmZyYWdtZW50IGZcbiAgKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4oKiBWYXJpb3VzIGFjY2Vzc29yIGZ1bmN0aW9ucywgYXMgdGhlIGV4dGVybmFsIHVyaSB0eXBlIGlzIGFic3RyYWN0ICAqKVxubGV0IGdldF9kZWNvZGVkX29wdCA9IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8U29tZSB4IC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCB4KVxubGV0IHNjaGVtZSB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLnNjaGVtZVxubGV0IHdpdGhfc2NoZW1lIHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxTb21lIHNjaGVtZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIHNjaGVtZSkgfVxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Ob25lIH1cblxubGV0IGhvc3QgdXJpID1cbiAgbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gU29tZSBoXG4gIHwgU29tZSAoYEhvc3QgaCkgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbmxldCBob3N0X3dpdGhfZGVmYXVsdCA/KGRlZmF1bHQ9XCJsb2NhbGhvc3RcIikgdXJpID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8Tm9uZSAtPiBkZWZhdWx0XG4gIHxTb21lIGggLT4gaFxuXG5sZXQgdXNlcmluZm8gPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVzZXJpbmZvIC0+IFNvbWUgKFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBOb25lIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mb1xuICAgIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKVxubGV0IHdpdGhfdXNlcmluZm8gdXJpIHVzZXJpbmZvID1cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSlcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpblxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuXG5sZXQgdXNlciB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKHVzZXIsIF8pIC0+IFNvbWUgdXNlclxuXG5sZXQgcGFzc3dvcmQgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoXywgTm9uZSkgLT4gTm9uZVxuICB8IFNvbWUgKF8sIFNvbWUgcGFzcykgLT4gU29tZSBwYXNzXG5sZXQgd2l0aF9wYXNzd29yZCB1cmkgcGFzc3dvcmQgPVxuICBsZXQgcmVzdWx0IHVzZXJpbmZvID0gbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIGluXG4gIG1hdGNoIHVyaS51c2VyaW5mbywgcGFzc3dvcmQgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdXJpXG4gIHwgTm9uZSwgU29tZSBfIC0+IHJlc3VsdCAoU29tZSAoXCJcIixwYXNzd29yZCkpXG4gIHwgU29tZSAodXNlcixfKSwgXyAtPiByZXN1bHQgKFNvbWUgKHVzZXIsIHBhc3N3b3JkKSlcblxubGV0IHBvcnQgdXJpID0gdXJpLnBvcnRcbmxldCB3aXRoX3BvcnQgdXJpIHBvcnQgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggcG9ydD1wb3J0IH1cbiAgfCBOb25lIC0+IGJlZ2luXG4gICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PU5vbmU7IHBvcnQ9Tm9uZSB9XG4gICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHBvcnQ9cG9ydCB9XG4gIGVuZFxuXG4oKiBSZXR1cm4gdGhlIHBhdGggY29tcG9uZW50ICopXG5sZXQgcGF0aCA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICB8IE5vbmUgLT4gZW5jb2RlZF9vZl9wYXRoIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aFxuICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3BhdGggfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aClcbmxldCB3aXRoX3BhdGggdXJpIHBhdGggPVxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwYXRoIGluXG4gIG1hdGNoIGhvc3QgdXJpLCBwYXRoIHdpdGhcbiAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4geyB1cmkgd2l0aCBwYXRoPXBhdGggfVxuICB8IFNvbWUgXywgXyAgLT4geyB1cmkgd2l0aCBwYXRoPVwiL1wiOjpwYXRoIH1cblxubGV0IGZyYWdtZW50IHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuZnJhZ21lbnRcbmxldCB3aXRoX2ZyYWdtZW50IHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxOb25lIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9Tm9uZSB9XG4gIHxTb21lIGZyYWcgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIGZyYWcpIH1cblxubGV0IHF1ZXJ5IHVyaSA9IFF1ZXJ5Lmt2IHVyaS5xdWVyeVxubGV0IHZlcmJhdGltX3F1ZXJ5ID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICB8IFJhdyAocXMsXykgLT4gcXNcbiAgfCBLViBbXSAtPiBOb25lXG4gIHwgS1Yga3YgLT4gU29tZSAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lOihzY2hlbWUgdXJpKSB+cGN0X2VuY29kZXIga3YpXG4pXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayA9IFF1ZXJ5LihmaW5kIChrdiB1cmkucXVlcnkpIGspXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtIHVyaSBrID1cbiAgbWF0Y2ggZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayB3aXRoXG4gIHxOb25lIC0+IE5vbmVcbiAgfFNvbWUgdiAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLFwiIHYpXG5cbmxldCB3aXRoX3F1ZXJ5IHVyaSBxdWVyeSA9IHsgdXJpIHdpdGggcXVlcnk9UXVlcnkuS1YgcXVlcnkgfVxubGV0IHFfcyBxID0gTGlzdC5tYXAgKGZ1biAoayx2KSAtPiBrLFt2XSkgcVxubGV0IHdpdGhfcXVlcnknIHVyaSBxdWVyeSA9IHdpdGhfcXVlcnkgdXJpIChxX3MgcXVlcnkpXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtIHVyaSBwID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHA6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbScgdXJpIChrLHYpID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChrLFt2XSk6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMgdXJpIHBzID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHBzQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMnIHVyaSBwcyA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgocV9zIHBzKUAoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCByZW1vdmVfcXVlcnlfcGFyYW0gdXJpIGsgPSBRdWVyeS4oXG4gIHsgdXJpIHdpdGggcXVlcnk9S1YgKExpc3QuZmlsdGVyIChmdW4gKGsnLF8pIC0+IGs8PmsnKSAoa3YgdXJpLnF1ZXJ5KSkgfVxuKVxuXG4oKiBDb25zdHJ1Y3QgZW5jb2RlZCBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnRzICopXG5sZXQgcGF0aF9hbmRfcXVlcnkgdXJpID1cbiAgbWF0Y2ggKHBhdGggdXJpKSwgKHF1ZXJ5IHVyaSkgd2l0aFxuICB8XCJcIiwgW10gLT4gXCIvXCIgKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgfFwiXCIsIHEgLT4gKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIvPyVzXCIgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuICB8cCwgW10gLT4gcFxuICB8cCwgcSAtPlxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPyVzXCIgcCAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG5cbigqIFRPRE86IGZ1bmN0aW9ucyB0byBhZGQgYW5kIHJlbW92ZSBmcm9tIGEgVVJJICopXG5cbigqIFJlc29sdmUgYSBVUkkgd3J0IGEgYmFzZSBVUkkgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjI+ICopXG5sZXQgcmVzb2x2ZSBzY2hlbSBiYXNlIHVyaSA9XG4gIGxldCBzY2hlbSA9IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgKG1hdGNoIHNjaGVtZSBiYXNlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAgc2NoZW1cbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgKSkgaW5cbiAgbm9ybWFsaXplIHNjaGVtXG4gICAgUGF0aC4obWF0Y2ggc2NoZW1lIHVyaSwgdXNlcmluZm8gdXJpLCBob3N0IHVyaSB3aXRoXG4gICAgfCBTb21lIF8sIF8sIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBTb21lIF8sIF9cbiAgICB8IE5vbmUsIF8sIFNvbWUgXyAtPlxuICAgICAge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICAgbGV0IHVyaSA9IHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHVzZXJpbmZvPWJhc2UudXNlcmluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9YmFzZS5ob3N0OyBwb3J0PWJhc2UucG9ydH0gaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9IHBhdGggdXJpIGluXG4gICAgICBpZiBwYXRoX3N0cj1cIlwiXG4gICAgICB0aGVuIHsgdXJpIHdpdGhcbiAgICAgICAgICAgICBwYXRoPWJhc2UucGF0aDtcbiAgICAgICAgICAgICBxdWVyeT1tYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgICAgICAgICAgICAgfCBRdWVyeS5SYXcgKE5vbmUsXykgfCBRdWVyeS5LViBbXSAtPiBiYXNlLnF1ZXJ5XG4gICAgICAgICAgICAgICB8IF8gLT4gdXJpLnF1ZXJ5XG4gICAgICAgICAgIH1cbiAgICAgIGVsc2UgaWYgcGF0aF9zdHIuWzBdPScvJ1xuICAgICAgdGhlbiB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgICAgZWxzZSB7dXJpIHdpdGhcbiAgICAgICAgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIChtZXJnZSBiYXNlLmhvc3QgYmFzZS5wYXRoIHVyaS5wYXRoKTtcbiAgICAgIH1cbiAgICApXG5cbmxldCBjYW5vbmljYWxpemUgdXJpID1cbiAgbGV0IHVyaSA9IHJlc29sdmUgXCJcIiBlbXB0eSB1cmkgaW5cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgdXJpLnNjaGVtZSkpIDogU2NoZW1lKSBpblxuICB7IHVyaSB3aXRoXG4gICAgcG9ydD1TY2hlbWUuY2Fub25pY2FsaXplX3BvcnQgdXJpLnBvcnQ7XG4gICAgcGF0aD1TY2hlbWUuY2Fub25pY2FsaXplX3BhdGggdXJpLnBhdGg7XG4gIH1cblxubGV0IHBwIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcbmxldCBwcF9odW0gcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxuXG5tb2R1bGUgUGFyc2VyID0gc3RydWN0XG4gIG9wZW4gQW5nc3Ryb21cblxuICBsZXQgc3RyaW5nX29mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyX2xpc3QgY2hhcnMgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2NoYXIgY2hhcnMpXG5cbiAgbGV0IHNjaGVtZSA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKHRha2Vfd2hpbGUgKGZ1biBjIC0+IGMgPD4gJzonICYmIGMgPD4gJy8nICYmIGMgPD4gJz8nICYmIGMgPD4gJyMnKVxuICAgICAgPCogY2hhciAnOicpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBoZXhfZGlnaXQgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgaGV4YWRlY2ltYWwgPSBsaWZ0IHN0cmluZ19vZl9jaGFyX2xpc3QgKG1hbnkgaGV4X2RpZ2l0KVxuXG4gIGxldCBjX2RvdCA9IGNoYXIgJy4nXG5cbiAgbGV0IGNfYXQgPSBjaGFyICdAJ1xuXG4gIGxldCBjX2NvbG9uID0gY2hhciAnOidcblxuICBsZXQgZGVjX29jdGV0ID1cbiAgICB0YWtlX3doaWxlMSAoZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgPj49IGZ1biBudW0gLT5cbiAgICBpZiBpbnRfb2Zfc3RyaW5nIG51bSA8IDI1NiB0aGVuXG4gICAgICByZXR1cm4gbnVtXG4gICAgZWxzZVxuICAgICAgZmFpbCBcImludmFsaWQgb2N0ZWN0XCJcblxuICBsZXQgaXB2NF9hZGRyZXNzID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB0aHJlZSBvbmUgLT4gU3RyaW5nLmNvbmNhdCBcIi5cIiB0aHJlZSBeIFwiLlwiIF4gb25lKVxuICAgICAgKGNvdW50IDMgKGRlY19vY3RldCA8KiBjX2RvdCkpXG4gICAgICBkZWNfb2N0ZXRcblxuICAoKiAtLSBhZnRlciBkb3VibGUgY29sb24sIElQdjQgZG90dGVkIG5vdGF0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSAqKVxuICBsZXQgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICBmaXggKGZ1biBmIC0+XG4gICAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXVxuICAgICAgICA8fD4gbGlmdDIgKGZ1biB4IHkgLT4geCA6OiB5KSBoZXhhZGVjaW1hbCAoY19jb2xvbiAqPiBmIDx8PiByZXR1cm4gW10pKVxuXG4gIGxldCBkb3VibGVfY29sb24gY291bnQgPVxuICAgIGFmdGVyX2RvdWJsZV9jb2xvbiA+Pj0gKGZ1biByZXN0IC0+XG4gICAgbGV0IGZpbGxlcl9sZW5ndGggPSA4IC0gY291bnQgLSBMaXN0Lmxlbmd0aCByZXN0IGluXG4gICAgaWYgZmlsbGVyX2xlbmd0aCA8PSAwIHRoZW5cbiAgICAgIGZhaWwgXCJ0b28gbWFueSBwYXJ0cyBpbiBJUHY2IGFkZHJlc3NcIlxuICAgIGVsc2VcbiAgICAgIHJldHVybiAoXCJcIiA6OiByZXN0KSlcbiAgICA8fD4gcmV0dXJuIFtcIlwiXVxuXG4gIGxldCByZWMgcGFydCA9IGZ1bmN0aW9uXG4gICAgfCA3IC0+XG4gICAgICAoKiBtYXggOCBwYXJ0cyBpbiBhbiBJUHY2IGFkZHJlc3MgKilcbiAgICAgIGxpZnQgKGZ1biB4IC0+IFsgeCBdKSBoZXhhZGVjaW1hbFxuICAgIHwgNiAtPlxuICAgICAgKCogYWZ0ZXIgNiBwYXJ0cyBpdCBjb3VsZCBlbmQgaW4gSVB2NCBkb3R0ZWQgbm90YXRpb24gKilcbiAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXSA8fD4gaGV4X3BhcnQgNlxuICAgIHwgbiAtPlxuICAgICAgaGV4X3BhcnQgblxuXG4gIGFuZCBoZXhfcGFydCBuID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB4IHkgLT4geCA6OiB5KVxuICAgICAgaGV4YWRlY2ltYWxcbiAgICAgIChjX2NvbG9uICo+IChjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAobiArIDEpIDx8PiBwYXJ0IChuICsgMSkpKVxuXG4gIGxldCByZWMgc3BsaXRfd2l0aCBmIHhzID1cbiAgICBtYXRjaCB4cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgW10sIFtdXG4gICAgfCB5IDo6IHlzIC0+XG4gICAgICBpZiBmIHkgdGhlblxuICAgICAgICBsZXQgenMsIHRzID0gc3BsaXRfd2l0aCBmIHlzIGluXG4gICAgICAgIHkgOjogenMsIHRzXG4gICAgICBlbHNlXG4gICAgICAgIFtdLCB4c1xuXG4gIGxldCBpcHY2ID1cbiAgICBsZXQgZm9ybWF0X2FkZHIgc2VnbWVudHMgPVxuICAgICAgbGV0IGJlZm9yZV9kb3VibGVfY29sb24sIGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgICAgIHNwbGl0X3dpdGggKGZ1biBzZWdtZW50IC0+IHNlZ21lbnQgPD4gXCJcIikgc2VnbWVudHNcbiAgICAgIGluXG4gICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLmNvbmNhdCBcIjpcIiBiZWZvcmVfZG91YmxlX2NvbG9uIGluXG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgbWF0Y2ggYWZ0ZXJfZG91YmxlX2NvbG9uIHdpdGhcbiAgICAgICAgfCBcIlwiIDo6IHhzIC0+XG4gICAgICAgICAgYmVmb3JlIF4gXCI6OlwiIF4gU3RyaW5nLmNvbmNhdCBcIjpcIiB4c1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBiZWZvcmVcbiAgICAgIGluXG4gICAgICByZXNcbiAgICBpblxuICAgIGxpZnQgZm9ybWF0X2FkZHIgKGNfY29sb24gKj4gY19jb2xvbiAqPiBkb3VibGVfY29sb24gMCA8fD4gcGFydCAwKVxuXG4gIGxldCBpcHY2X2FkZHJlc3MgPVxuICAgIChjaGFyICdbJykgKj4gaXB2NiA8KiAoY2hhciAnXScpXG5cbiAgbGV0IHBjdF9lbmNvZGVkID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biBwY3QgZGlnaXRzIC0+IHN0cmluZ19vZl9jaGFyX2xpc3QgKHBjdCA6OiBkaWdpdHMpKVxuICAgICAgKGNoYXIgJyUnKVxuICAgICAgKGNvdW50IDIgaGV4X2RpZ2l0KVxuXG4gIGxldCBzdWJfZGVsaW1zID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICchJyB8ICckJyB8ICcmJyB8ICdcXCcnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJywnIHwgJzsnIHwgJz0nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgdW5yZXNlcnZlZCA9XG4gICAgKCogXCJbQS1aYS16MC05LS5ffl1cIiAqKVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJy0nIHwgJy4nIHwgJ18nIHwgJ34nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgcmVnX25hbWUgPVxuICAgIGxpZnRcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgXSkpXG5cbiAgbGV0IGhvc3QgPVxuICAgIGNob2ljZVxuICAgICAgWyBpcHY0X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2NF9saXRlcmFsIGgpXG4gICAgICA7IGlwdjZfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY2X2xpdGVyYWwgaClcbiAgICAgIDsgcmVnX25hbWUgPj58IChmdW4gcyAtPiBgSG9zdCAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoKiBUT0RPKGRpbm9zYXVyZSk6IEFjY29yZGluZyB0byBSRkMzOTg2OlxuXG4gICAgICAgICBob3N0ICAgICAgICA9IElQLWxpdGVyYWwgLyBJUHY0YWRkcmVzcyAvIHJlZy1uYW1lXG4gICAgICAgICBJUC1saXRlcmFsICA9IFwiW1wiICggSVB2NmFkZHJlc3MgLyBJUHZGdXR1cmUgICkgXCJdXCJcbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuXG4gICAgICAgICBJUHZGdXR1cmUgaXMgbm90IGltcGxlbWVudGVkLiBXZSBzaG91bGQgaGFuZGxlIGl0OlxuXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcbiAgICAgICAqKVxuICAgICAgXVxuXG4gIGxldCB1c2VyaW5mbyA9XG4gICAgbGlmdFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCBzID0gU3RyaW5nLmNvbmNhdCBcIlwiIHggaW5cbiAgICAgICAgU29tZSAoVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZCBzKSlcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBjX2NvbG9uXG4gICAgICAgICAgICBdKVxuICAgICAgPCogY19hdClcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgcG9ydCA9XG4gICAgcGVla19jaGFyID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSAnOicgLT5cbiAgICAgIGNfY29sb24gKj4gdGFrZV93aGlsZSBpc19kaWdpdCA+PnwgZnVuIHBvcnQgLT5cbiAgICAgIGxldCBkZWNvZGVkID0gUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBwb3J0KSBpblxuICAgICAgKHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChQY3QudW5jYXN0X2RlY29kZWQgZGVjb2RlZCkpIHdpdGggXyAtPiBOb25lKVxuICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgcmV0dXJuIE5vbmVcblxuICBsZXQgYXV0aG9yaXR5ID1cbiAgICBzdHJpbmcgXCIvL1wiXG4gICAgKj4gbGlmdDNcbiAgICAgICAgIChmdW4gdXNlcmluZm8gaG9zdCBwb3J0IC0+XG4gICAgICAgICAgIHVzZXJpbmZvLCBTb21lIGhvc3QsIHBvcnQpXG4gICAgICAgICB1c2VyaW5mb1xuICAgICAgICAgaG9zdFxuICAgICAgICAgcG9ydFxuICAgIDx8PiByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpXG5cbiAgbGV0IHBhdGggPVxuICAgIGxpZnRcbiAgICAgIFBhdGgucGF0aF9vZl9lbmNvZGVkXG4gICAgICAodGFrZV93aGlsZSAoZnVuY3Rpb24gJz8nIHwgJyMnIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSlcblxuICBsZXQgcXVlcnkgPVxuICAgIGxpZnRcbiAgICAgIFF1ZXJ5Lm9mX3Jhd1xuICAgICAgKGNoYXIgJz8nICo+IHRha2VfdGlsbCAoZnVuY3Rpb24gJyMnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSlcbiAgICA8fD4gcmV0dXJuIChRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pKVxuXG4gIGxldCBmcmFnbWVudCA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKGNoYXIgJyMnICo+IHRha2Vfd2hpbGUgKGZ1biBfIC0+IHRydWUpKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBfdXJpX3JlZmVyZW5jZSA9XG4gICAgbGlmdDRcbiAgICAgIChmdW4gc2NoZW1lICh1c2VyaW5mbywgaG9zdCwgcG9ydCkgcGF0aCBxdWVyeSBmcmFnbWVudCAtPlxuICAgICAgICBub3JtYWxpemUgc2NoZW1lIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0pXG4gICAgICBzY2hlbWVcbiAgICAgIGF1dGhvcml0eVxuICAgICAgcGF0aFxuICAgICAgcXVlcnlcbiAgICA8Kj4gZnJhZ21lbnRcblxuICAoKiBYWFgoYW5tb250ZWlybyk6IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgb2xkIHJlZ2V4IHBhcnNlciwgd2VcbiAgICogb25seSBwYXJzZSB1bnRpbCB0aGUgZmlyc3QgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGRyb3AgZXZlcnl0aGluZyBlbHNlXG4gICAqIGFmdGVyIHRoYXQgKilcbiAgbGV0IHVyaV9yZWZlcmVuY2UgPVxuICAgIHRha2Vfd2hpbGUgKGZ1bmN0aW9uIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpID4+fCBmdW4gcyAtPlxuICAgICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBfdXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgICAgIHwgT2sgdCAtPiB0XG4gICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgICAgIGVtcHR5XG5lbmRcblxubGV0IGRlY29kZV9ob3N0IGhvc3QgPVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5ob3N0IGhvc3Qgd2l0aFxuICB8IE9rIHBhcnNlZCAtPiBwYXJzZWRcbiAgfCBFcnJvciBfIC0+XG4gICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaXB2NiBob3N0IHdpdGhcbiAgICB8IE9rIHBhcnNlZCAtPiAoYElwdjZfbGl0ZXJhbCBwYXJzZWQpXG4gICAgfCBFcnJvciBfIC0+IChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBob3N0KSlcblxuKCogTWFrZSBhIFVSSSByZWNvcmQuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbmVmZmljaWVudCB0aGFuIGl0IG5lZWRzIHRvIGJlIGR1ZSB0byB0aGVcbiAqIGNhc3RpbmcvdW5jYXN0aW5nICh3aGljaCBpc24ndCBmdWxseSBpZGVudGl0eSBkdWUgdG8gdGhlIG9wdGlvbiBib3gpLCBidXQgaXQgaXNcbiAqIG5vIGJpZyBkZWFsIGZvciBub3cuXG4qKVxubGV0IG1ha2UgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gIGxldCBob3N0ID0gbWF0Y2ggdXNlcmluZm8sIGhvc3QsIHBvcnQgd2l0aFxuICAgIHwgXywgU29tZSBfLCBfIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBob3N0XG4gICAgfCBTb21lIF8sIE5vbmUsIF8gfCBfLCBOb25lLCBTb21lIF8gLT4gU29tZSBcIlwiXG4gIGluXG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgIG1hdGNoIGhvc3QsIHBhdGggd2l0aFxuICAgICAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4gcGF0aFxuICAgICAgfCBTb21lIF8sIF8gIC0+IFwiL1wiOjpwYXRoXG4gIGluXG4gIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gIGluXG4gIGxldCBzY2hlbWUgPSBkZWNvZGUgc2NoZW1lIGluXG4gIG5vcm1hbGl6ZSBzY2hlbWVcbiAgICB7IHNjaGVtZTsgdXNlcmluZm87XG4gICAgICBob3N0ID1cbiAgICAgICAgKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICB8IE5vbmUgLT4gTm9uZSk7XG4gICAgICBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxubGV0IHdpdGhfaG9zdCB1cmkgaG9zdCA9XG4gIHsgdXJpIHdpdGhcbiAgICBob3N0ID0gKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICB9XG5cbmxldCB3aXRoX3VyaSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50IHVyaSA9XG4gIGxldCB3aXRoX3BhdGhfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcGF0aCB1IFwiXCJcbiAgICB8IFNvbWUgcCAtPiB3aXRoX3BhdGggdSBwXG4gIGluXG4gIGxldCB3aXRoX3F1ZXJ5X29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3F1ZXJ5IHUgW11cbiAgICB8IFNvbWUgcSAtPiB3aXRoX3F1ZXJ5IHUgcVxuICBpblxuICBsZXQgd2l0aF8gZiBvIHUgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB1XG4gICAgfCBTb21lIHggLT4gZiB1IHhcbiAgaW5cbiAgd2l0aF8gd2l0aF9zY2hlbWUgc2NoZW1lIHVyaVxuICB8PiB3aXRoXyB3aXRoX3VzZXJpbmZvIHVzZXJpbmZvXG4gIHw+IHdpdGhfIHdpdGhfaG9zdCBob3N0XG4gIHw+IHdpdGhfIHdpdGhfcG9ydCBwb3J0XG4gIHw+IHdpdGhfIHdpdGhfcGF0aF9vcHQgcGF0aFxuICB8PiB3aXRoXyB3aXRoX3F1ZXJ5X29wdCBxdWVyeVxuICB8PiB3aXRoXyB3aXRoX2ZyYWdtZW50IGZyYWdtZW50XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gICgqIFRvIHByZXNlcnZlIHRoZSBvbGQgcmVnZXggcGFyc2VyJ3MgYmVoYXZpb3IsIHdlIG9ubHkgcGFyc2UgYSBwcmVmaXgsIGFuZFxuICAgKiBzdG9wIHdoZW5ldmVyIHdlIGNhbid0IHBhcnNlIG1vcmUuICopXG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpQcmVmaXggUGFyc2VyLnVyaV9yZWZlcmVuY2UgcyB3aXRoXG4gIHwgT2sgdCAtPiB0XG4gIHwgRXJyb3IgXyAtPlxuICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgIGVtcHR5XG5cbm1vZHVsZSBBYnNvbHV0ZV9odHRwID0gc3RydWN0XG4gIHR5cGUgdXJpID0gdFxuICB0eXBlIHQgPVxuICAgIHsgc2NoZW1lIDogWyBgSHR0cCB8IGBIdHRwcyBdO1xuICAgICAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICAgICAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF07XG4gICAgICBwb3J0IDogaW50IG9wdGlvbjtcbiAgICAgIHBhdGggOiBQYXRoLnQ7XG4gICAgICBxdWVyeSA6IFF1ZXJ5LnQ7XG4gICAgICBmcmFnbWVudCA6IFBjdC5kZWNvZGVkIG9wdGlvblxuICAgIH1cblxuICBsZXQgKCBsZXQqICkgPSBSZXN1bHQuYmluZFxuXG4gIGxldCB0b191cmkgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSA9XG4gICAgbGV0IHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBgSHR0cCAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cFwiXG4gICAgICB8IGBIdHRwcyAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cHNcIlxuICAgIGluXG4gICAgKHsgc2NoZW1lID0gU29tZSBzY2hlbWU7XG4gICAgICAgdXNlcmluZm87XG4gICAgICAgaG9zdCA9IFNvbWUgaG9zdDtcbiAgICAgICBwb3J0O1xuICAgICAgIHBhdGg7XG4gICAgICAgcXVlcnk7XG4gICAgICAgZnJhZ21lbnQgfSA6IHVyaSlcbiAgOztcblxuICBsZXQgb2ZfdXJpICh7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9OiB1cmkpID1cbiAgICBsZXQqIHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEVycm9yIChgTXNnIFwiTm8gc2NoZW1lIHByZXNlbnQgaW4gVVJJXCIpXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+XG4gICAgICAgIChtYXRjaCBQY3QudW5jYXN0X2RlY29kZWQgc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgXCJodHRwXCIgLT4gT2sgYEh0dHBcbiAgICAgICAgIHwgXCJodHRwc1wiIC0+IE9rIGBIdHRwc1xuICAgICAgICAgfCB1bnN1cHBvcnRlZF9zY2hlbWUgLT5cbiAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAoYE1zZ1xuICAgICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiT25seSBodHRwIGFuZCBodHRwcyBVUklzIGFyZSBzdXBwb3J0ZWQuICVzIGlzIGludmFsaWQuXCJcbiAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZF9zY2hlbWUpKSlcbiAgICBpblxuICAgIGxldCogaG9zdCA9IE9wdGlvbi50b19yZXN1bHQgfm5vbmU6KGBNc2cgXCJob3N0IGlzIHJlcXVpcmVkIGZvciBIVFRQKFMpIHVyaXNcIikgaG9zdCBpblxuICAgIE9rIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH1cbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPSBtYXRjaCBvZl9zdHJpbmcgcyB8PiBvZl91cmkgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciAoYE1zZyBlcnJvcikgLT4gZmFpbHdpdGggZXJyb3JcblxuICBsZXQgdG9fc3RyaW5nID9wY3RfZW5jb2RlciB0ID0gdG9fdXJpIHQgfD4gdG9fc3RyaW5nID9wY3RfZW5jb2RlclxuXG4gIGxldCBub3JtYWxpemUgdCA9XG4gICAgeyB0IHdpdGhcbiAgICAgIGhvc3QgPSBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgICAgIHwgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2NF9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2Nl9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c2NoZW1lIH5ob3N0ID91c2VyaW5mbyA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gICAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICAgIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICB8ICBcIi9cIjo6XyB8ICBbXSAtPiBwYXRoXG4gICAgICAgIHwgXyAgLT4gXCIvXCI6OnBhdGhcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICAgIGluXG4gICAgbm9ybWFsaXplXG4gICAgICB7IHNjaGVtZTtcbiAgICAgICAgdXNlcmluZm87XG4gICAgICAgIGhvc3Q9IGRlY29kZV9ob3N0IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG4gIGxldCBob3N0IHQgPVxuICAgIG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgfCAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBoXG4gICAgfCAoYEhvc3QgaCkgLT4gKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG4gIGxldCBzY2hlbWUgdCA9IHQuc2NoZW1lXG5lbmRcbiIsIm9wZW4gVXJpXG5cbm1vZHVsZSBEZXJpdmVkID1cbnN0cnVjdFxuXG5cdG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cblx0dHlwZSBjb21wb25lbnQgPSBbXG5cdCAgfCBgU2NoZW1lXG5cdCAgfCBgQXV0aG9yaXR5XG5cdCAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgUGF0aFxuXHQgIHwgYFF1ZXJ5XG5cdCAgfCBgUXVlcnlfa2V5XG5cdCAgfCBgUXVlcnlfdmFsdWVcblx0ICB8IGBGcmFnbWVudFxuICAgICAgICAgIHwgYEdlbmVyaWNcbiAgICAgICAgICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZylcblx0XSBbQEBkZXJpdmluZyBzZXhwXVxuXG5cdHR5cGUgdCA9IHtcbiAgICAgICAgICBzY2hlbWU6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgdXNlcmluZm86IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgaG9zdDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwb3J0OiBpbnQgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBhdGg6IHN0cmluZyBbQGRlZmF1bHQgXCJcIl0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBxdWVyeTogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0IFtAc2V4cC5saXN0XTtcbiAgICAgICAgICBmcmFnbWVudDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXVxuXHR9IFtAQGRlcml2aW5nIHNleHBdXG5cbmVuZFxuXG5vcGVuIERlcml2ZWRcblxubGV0IGNvbXBvbmVudF9vZl9zZXhwID0gY29tcG9uZW50X29mX3NleHBcbmxldCBzZXhwX29mX2NvbXBvbmVudCA9IHNleHBfb2ZfY29tcG9uZW50XG5cbmxldCB0X29mX3NleHAgc2V4cCA9XG5cdGxldCB0ID0gdF9vZl9zZXhwIHNleHAgaW5cblx0VXJpLm1ha2Vcblx0XHQ/c2NoZW1lOnQuc2NoZW1lXG5cdFx0P3VzZXJpbmZvOnQudXNlcmluZm9cblx0XHQ/aG9zdDp0Lmhvc3Rcblx0XHQ/cG9ydDp0LnBvcnRcblx0XHR+cGF0aDp0LnBhdGhcblx0XHR+cXVlcnk6dC5xdWVyeVxuXHRcdD9mcmFnbWVudDp0LmZyYWdtZW50XG5cdFx0KClcblxubGV0IHNleHBfb2ZfdCB0ID1cblx0c2V4cF9vZl90IHtcblx0XHRzY2hlbWUgPSBzY2hlbWUgdDtcblx0XHR1c2VyaW5mbyA9IHVzZXJpbmZvIHQ7XG5cdFx0aG9zdCA9IGhvc3QgdDtcblx0XHRwb3J0ID0gcG9ydCB0O1xuXHRcdHBhdGggPSBwYXRoIHQ7XG5cdFx0cXVlcnkgPSBxdWVyeSB0O1xuXHRcdGZyYWdtZW50ID0gZnJhZ21lbnQgdFxuXHR9XG5cbnR5cGUgY29tcG9uZW50ID0gVXJpLmNvbXBvbmVudFxubGV0IGNvbXBhcmUgYSBiID0gVXJpLmNvbXBhcmUgYSBiXG5sZXQgZXF1YWwgYSBiID0gVXJpLmVxdWFsIGEgYlxudHlwZSB0ID0gVXJpLnRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQ29yZVxuXG5sZXQgaXNfdmFsaWRfaWQgcyA9XG4gIGlmIFN0cmluZy5lcXVhbCBzIFwiXCJcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IGZhbHNlXG4gICAgfCBfIC0+XG4gICAgICBTdHJpbmcuZm9yX2FsbCBzIH5mOihmdW5jdGlvblxuICAgICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkpXG47O1xuXG5sZXQgaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lID0gaXNfdmFsaWRfaWQgbmFtZSAmJiBub3QgKFNldC5tZW0gc2VlbiBuYW1lKVxuXG5sZXQgcmVjIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyBsaXN0ID1cbiAgbWF0Y2ggKGxpc3QgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+IFNvbWUgKExpc3QucmV2IHJldl9hY2MpXG4gIHwgQXRvbSBuYW1lIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBOb25lKSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgTGlzdCBbIEF0b20gbmFtZTsgdiBdIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBTb21lIHYpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgYW55X29mX3NleHAgPSBmdW5jdGlvblxuICB8IFNleHAuQXRvbSBzIC0+IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzKVxuICB8IFNleHAuTGlzdCBbIEF0b20gbmFtZTsgdiBdIC0+IEpzLlVuc2FmZS5vYmogW3wgbmFtZSwgYW55X29mX3NleHAgdiB8XVxuICB8IFNleHAuTGlzdCBsIC0+XG4gICAgKG1hdGNoIGtleV92YWx1ZV9zaGFwZSB+c2VlbjpTdHJpbmcuU2V0LmVtcHR5IH5yZXZfYWNjOltdIGwgd2l0aFxuICAgICB8IE5vbmUgLT4gTGlzdC5tYXAgbCB+Zjphbnlfb2Zfc2V4cCB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIFtdIC0+IEpzLmFycmF5IFt8fF0gfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgbCAtPlxuICAgICAgIEpzLlVuc2FmZS5vYmpcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBuYW1lLCBTb21lIHYgLT4gbmFtZSwgYW55X29mX3NleHAgdlxuICAgICAgICAgICAgfCBuYW1lLCBOb25lIC0+IG5hbWUsIEpzLlVuc2FmZS5pbmplY3QgSnMubnVsbClcbiAgICAgICAgICB8PiBBcnJheS5vZl9saXN0KSlcbjs7XG5cbmxldCBsb2dfcyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKGFueV9vZl9zZXhwIHNleHApXG5sZXQgbG9nX3NfYXNfc3RyaW5nIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChTZXhwLnRvX3N0cmluZ19odW0gc2V4cCkpXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB1ID0geyBzb21lX25hbWUgOiBzdHJpbmcgfSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRm9vXG4gICAgICB8IEJhciBvZlxuICAgICAgICAgIHsgZmllbGQxIDogdVxuICAgICAgICAgIDsgZmllbGQyIDogc3RyaW5nIG9wdGlvblxuICAgICAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcbiAgaW5cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IG9wZW4gTSBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIChzZXhwX29mX3QgRm9vKSkpO1xuICBbJWV4cGVjdCB7fCBcIkZvb1wiIHx9XTtcbiAgcHJpbnRfZW5kbGluZVxuICAgICh0b19zdHJpbmdcbiAgICAgICAoYW55X29mX3NleHBcbiAgICAgICAgICAoc2V4cF9vZl90XG4gICAgICAgICAgICAgKEJhciB7IGZpZWxkMSA9IHsgc29tZV9uYW1lID0gXCJkZWJ1Z1wiIH07IGZpZWxkMiA9IFNvbWUgXCJvdGhlciBzdHJpbmdcIiB9KSkpKTtcbiAgWyVleHBlY3Qge3wge1wiQmFyXCI6bnVsbCxcImZpZWxkMVwiOntcInNvbWVfbmFtZVwiOlwiZGVidWdcIn0sXCJmaWVsZDJcIjpbXCJvdGhlciBzdHJpbmdcIl19IHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwiZHVwbGljYXRlIGtleXMgYXJlIGRpc3BsYXllZCBjb3JyZWN0bHlcIiA9XG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMgPSB7fCAoKEEgQikgKEEgQykpIHx9IHw+IFNleHAub2Zfc3RyaW5nIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzKSk7XG4gIFslZXhwZWN0IHt8IFt7XCJBXCI6XCJCXCJ9LHtcIkFcIjpcIkNcIn1dIHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwibm8gc3RhY2sgb3ZlcmZsb3dcIiA9XG4gIGxldCBhID0gQXJyYXkuaW5pdCAxMDAwMCB+ZjooZnVuIGkgLT4gc3ByaW50ZiBcImYlZFwiIGksIGkpIGluXG4gIGxldCBzZXhwID0gWyVzZXhwX29mOiAoc3RyaW5nICogaW50KSBhcnJheV0gYSBpblxuICBsZXQgeCA9IGFueV9vZl9zZXhwIHNleHAgaW5cbiAgcHJpbnRmIFwiJWRcIiAoSnMuVW5zYWZlLmNvZXJjZSB4KSMjLmY5OTk7XG4gIFslZXhwZWN0IHt8IDk5OSB8fV1cbjs7XG4iLCJtb2R1bGUgQXN5bmNfanNfZGVidWcgPSBEZWJ1Z1xub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIGluY2x1ZGUgVXJpXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFVyaV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBXZWJzb2NrZXRfY29ubmVjdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLkNvbm5lY3Rpb25cblxuICB0eXBlICgncmVzdCwgJ2ltcGxlbWVudGF0aW9ucykgY2xpZW50X3QgPVxuICAgID91cmk6VXJpLnRcbiAgICAtPiA/aGVhcnRiZWF0X2NvbmZpZzpULkhlYXJ0YmVhdF9jb25maWcudFxuICAgIC0+ID9kZXNjcmlwdGlvbjpJbmZvLnRcbiAgICAtPiA/aW1wbGVtZW50YXRpb25zOidpbXBsZW1lbnRhdGlvbnMgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLnRcbiAgICAtPiAncmVzdFxuXG4gIG1vZHVsZSBDbG9zZV9jb2RlIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50IC0+IHRcbiAgICB2YWwgbm9ybWFsX2Nsb3N1cmUgOiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgY2xvc2VfZXZlbnRfY29kZSA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGFsbF9vZl9jbG9zZV9ldmVudF9jb2RlID0gW11cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEdvaW5nX2F3YXlcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCBJbnRlcm5hbF9lcnJvclxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IEJhZF9nYXRld2F5XG4gICAgICB8IFRMU19oYW5kc2hha2VcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBdXG5cbiAgICBsZXQgbm9ybWFsX2Nsb3N1cmUgPSBOb3JtYWxfY2xvc3VyZVxuXG4gICAgbGV0IG9mX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IDEwMDAgLT4gTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwMSAtPiBHb2luZ19hd2F5XG4gICAgICB8IDEwMDIgLT4gUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgMTAwMyAtPiBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IDEwMDUgLT4gTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IDEwMDYgLT4gQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDA3IC0+IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IDEwMDggLT4gUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCAxMDA5IC0+IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCAxMDEwIC0+IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IDEwMTEgLT4gSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgMTAxMiAtPiBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgMTAxMyAtPiBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgMTAxNCAtPiBCYWRfZ2F0ZXdheVxuICAgICAgfCAxMDE1IC0+IFRMU19oYW5kc2hha2VcbiAgICAgIHwgY29kZSAtPlxuICAgICAgICBpZiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG4gICAgICAgIHRoZW4gVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICAgICAgZWxzZSBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXZlbnQgY2xvc2VfZXZlbnQgPSBvZl9pbnQgY2xvc2VfZXZlbnQjIy5jb2RlXG5cbiAgICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmUgLT4gMTAwMFxuICAgICAgfCBHb2luZ19hd2F5IC0+IDEwMDFcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3IgLT4gMTAwMlxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhIC0+IDEwMDNcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkIC0+IDEwMDVcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZSAtPiAxMDA2XG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhIC0+IDEwMDdcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvbiAtPiAxMDA4XG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyAtPiAxMDA5XG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uIC0+IDEwMTBcbiAgICAgIHwgSW50ZXJuYWxfZXJyb3IgLT4gMTAxMVxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnQgLT4gMTAxMlxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXIgLT4gMTAxM1xuICAgICAgfCBCYWRfZ2F0ZXdheSAtPiAxMDE0XG4gICAgICB8IFRMU19oYW5kc2hha2UgLT4gMTAxNVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRvX2ludCAtPiBvZl9pbnQgcm91bmQtdHJpcFwiID1cbiAgICAgIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+IGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSAob2ZfaW50ICh0b19pbnQgdCkpIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjbG9zZV93ZWJzb2NrZXQgKHdlYnNvY2tldCA6IFdlYlNvY2tldHMud2ViU29ja2V0IEpzLnQpIHJlYXNvbiA9XG4gICAgKCogW2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXSBkb2VzIG5vdGhpbmcgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBDbG9zZWQuICopXG4gICAgbGV0IGNsb3NlIHJlYXNvbiA9XG4gICAgICAoKiBUaGUgY29kZSBtdXN0IGJlIGVpdGhlciAxMDAwIChOb3JtYWxfY2xvc3VyZSksIG9yIGJldHdlZW4gMzAwMCBhbmQgNDk5OVxuICAgICAgICAgKFVua25vd25fY2xvc2VfZXZlbnRfY29kZSkuICopXG4gICAgICB3ZWJzb2NrZXQjI2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXG4gICAgICAgIENsb3NlX2NvZGUuKHRvX2ludCBub3JtYWxfY2xvc3VyZSlcbiAgICAgICAgKEpzLnN0cmluZyByZWFzb24pXG4gICAgaW5cbiAgICBtYXRjaCBjbG9zZSByZWFzb24gd2l0aFxuICAgIHwgKCkgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiAoXyA6IEV4bi50KSAtPlxuICAgICAgKCogdGhpcyBjYW4gZmFpbCBpZiBbcmVhc29uXSBpcyB0b28gbG9uZyBvciBjb250YWlucyBpbnZhbGlkIFVURjggKilcbiAgICAgIGNsb3NlIFwiY2xvc2UtcmVhc29uLXdhcy10b28tbG9uZy1vci1jb250YWlucy1pbnZhbGlkLXV0ZjhcIlxuICA7O1xuXG4gIGxldCBjb25uZWN0X3dlYnNvY2tldCB1cmwgfmZyb21fc2VydmVyIH50b19zZXJ2ZXIgPVxuICAgIG1hdGNoIG5ldyVqcyBXZWJTb2NrZXRzLndlYlNvY2tldCAoSnMuc3RyaW5nIChVcmkudG9fc3RyaW5nIHVybCkpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKcy5FcnJvciBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzLnRvX3N0cmluZyBleG4jIy5tZXNzYWdlKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPlxuICAgICAgICAgICAgICBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IGV4dHJhY3RfanNfZXJyb3IgKGV4biA6IGV4bikgOiBKcy5lcnJvciBKcy50IG9wdGlvbiA9XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLmpzX2Vycm9yX29mX2V4biBleG4pXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzLkVycm9yIGVyciAtPiBKcy5yYWlzZV9qc19lcnJvciBlcnJcbiAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICAgICAgIHwgU29tZSBlcnIgLT5cbiAgICAgICAgICAgICAoKiBIYWNrIHRvIGdldCBhIGJldHRlciBiYWNrdHJhY2UgKilcbiAgICAgICAgICAgICAoKiBXZSBmaXJzdCBvdXRwdXQgdGhlIHN0cmluZ2lmaWVkIG9jYW1sIGV4Y2VwdGlvbiAqKVxuICAgICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKTtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKcy5yYWlzZV9qc19lcnJvciBlcnIpKTtcbiAgICAgIChtYXRjaCBuZXh0X3dha2V1cCB3aXRoXG4gICAgICAgfCBOb193YWtldXAgLT4gc3RhdGUgOj0gSWRsZVxuICAgICAgIHwgU29vbiAtPlxuICAgICAgICAgc3RhdGUgOj0gV2lsbF9ydW5fc29vbjtcbiAgICAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLlxuICAgICAgIHwgQXQgKGF0LCBkX21zKSAtPlxuICAgICAgICAgc3RhdGUgOj0gSWRsZTtcbiAgICAgICAgIGlmIFN0YWNrLmlzX2VtcHR5IHRpbWVvdXRzIHx8IFRpbWVfbnMuKCA8ICkgYXQgKFN0YWNrLnRvcF9leG4gdGltZW91dHMpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgU3RhY2sucHVzaCB0aW1lb3V0cyBhdDtcbiAgICAgICAgICAgcnVuX2FmdGVyIH5mOnJ1bl90aW1lb3V0IH5tczpkX21zKSlcbiAgYW5kIHJ1bl90aW1lb3V0ICgpID1cbiAgICAoKiBFYWNoIGNhbGwgdG8gW3J1bl90aW1lb3V0XSByZW1vdmVzIGV4YWN0bHkgb25lIGVsZW1lbnQgZnJvbSBbdGltZW91dHNdLiAgVGhpc1xuICAgICAgIG1haW50YWlucyB0aGUgaW52YXJpYW50IHRoYXQgW1N0YWNrLmxlbmd0aCB0aW1lb3V0c10gaXMgZXhhY3RseSB0aGUgbnVtYmVyIG9mXG4gICAgICAgb3V0c3RhbmRpbmcgdGltZW91dHMgd2UgaGF2ZSByZWdpc3RlcmVkLiAqKVxuICAgIGlnbm9yZSAoU3RhY2sucG9wX2V4biB0aW1lb3V0cyA6IFRpbWVfbnMudCk7XG4gICAgbG9vcCAoKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgU3RhdGUuSWRsZSAtPlxuICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuO1xuICAgICAgc3RhdGUgOj0gU3RhdGUuV2lsbF9ydW5fc29vblxuICAgIHwgU3RhdGUuUnVubmluZyB8IFN0YXRlLldpbGxfcnVuX3Nvb24gLT4gKClcbjs7XG5cbmxldCBsb2cgbmFtZSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgIHwgSnMuRXJyb3IgZXJyIC0+IGBKcyBlcnJcbiAgICB8IGV4biAtPlxuICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYEV4biBleG5cbiAgICAgICB8IFNvbWUgZXJyIC0+IGBKc19hbmRfZXhuIChleG4sIGVycikpXG4gIGluXG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgYEpzIGVyciAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSBlcnJcbiAgfCBgRXhuIGV4biAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpXG4gIHwgYEpzX2FuZF9leG4gKGV4biwgZXJyKSAtPlxuICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSkgZXJyXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuIDo9IGxvZyBcIkFzeW5jX2tlcm5lbDogTW9uaXRvci50cnlfd2l0aFwiO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXG4gICAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IubWFpblxuICAgICAgIH5mOihsb2cgXCJBc3luY19rZXJuZWw6IFVuaGFuZGxlZCBleGNlcHRpb25cIik7XG4gICAgIHJ1biAoKSlcbjs7XG5cbmxldCBpbml0ICgpID0gZm9yY2UgaW5pdGlhbGl6YXRpb25cbmxldCBpbml0aWFsaXplZCAoKSA9ICFpbml0aWFsaXplZF9yZWZcblxubGV0IGRvY3VtZW50X2xvYWRlZCA9XG4gIGxldCBqc19zdHJpbmdfY29tcGFyZSBzID1cbiAgICBsZXQgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyA9IHBoeXNfZXF1YWwgaW5cbiAgICBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzIChKcy5zdHJpbmcgcylcbiAgaW5cbiAgbGV0IHJlYWR5X3N0YXRlX2NoYW5nZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiIGluXG4gIGxldCBjb21wbGV0ZSA9IFwiY29tcGxldGVcIiBpblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZV9ldiA9IERvbS5FdmVudC5tYWtlIHJlYWR5X3N0YXRlX2NoYW5nZSBpblxuICBsZXQgYWRkX2V2ZW50IHRhcmdldCBldnQgaGFuZGxlciA9XG4gICAgaWdub3JlXG4gICAgICAoRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciB0YXJnZXQgZXZ0IGhhbmRsZXIgSnMuX2ZhbHNlIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICB0aGVuIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC51bml0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9hZGVkID0gQXN5bmNfa2VybmVsLkl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgaGFuZGxlciBldnQgPVxuICAgICAgICBpZiAobm90IChqc19zdHJpbmdfY29tcGFyZSByZWFkeV9zdGF0ZV9jaGFuZ2UgZXZ0IyMuX3R5cGUpKVxuICAgICAgICB8fCBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICAgICAgdGhlbiBBc3luY19rZXJuZWwuSXZhci5maWxsX2lmX2VtcHR5IGxvYWRlZCAoKTtcbiAgICAgICAgSnMuX3RydWVcbiAgICAgIGluXG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgcmVhZHlzdGF0ZWNoYW5nZV9ldiAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwud2luZG93IERvbV9odG1sLkV2ZW50LmxvYWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgQXN5bmNfa2VybmVsLkl2YXIucmVhZCBsb2FkZWQpXG47O1xuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxuaW5jbHVkZSBBc3luY19qczBcblxubGV0IGxvZ19zID0gRGVidWcubG9nX3NcbmxldCBsb2dfc19hc19zdHJpbmcgPSBEZWJ1Zy5sb2dfc19hc19zdHJpbmdcbiIsIm9wZW4hIEJhc2VcblxuKCogVGhlIFtkYXRhXSBhcnJheSBpcyBhbiBpbXBsaWNpdCBiaW5hcnkgdHJlZSB3aXRoIFtjaGlsZHJlbl9sZW5ndGggKiAyIC0gMV0gbm9kZXMsXG4gICB3aXRoIGVhY2ggbm9kZSBiZWluZyB0aGUgc3VtIG9mIHRoZSB0d28gY2hpbGQgbm9kZXMgYW5kIHRoZSByb290IG5vZGUgYmVpbmcgdGhlIDB0aFxuICAgbm9kZS4gIFRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgYXJlIHRoZSBsYXN0IFtudW1fbGVhdmVzXSBub2Rlcy5cblxuICAgVGhlIGNoaWxkcmVuIGFyZSBub3QgbmVjZXNzYXJpbHkgYWxsIGF0IHRoZSBzYW1lIGxldmVsIG9mIHRoZSB0cmVlLiBGb3IgaW5zdGFuY2UgaWZcbiAgIHlvdSBoYXZlIDMgY2hpbGRyZW4gW3wgYTsgYjsgYyB8XTpcblxuICAge3ZcbiAgICAgICAgICBvXG4gICAgICAgICAvIFxcXG4gICAgICAgIG8gICBjXG4gICAgICAgLyBcXFxuICAgICAgYSAgIGJcbiAgIHZ9XG5cbiAgIFdlIHdhbnQgdGhpcyB0cmVlIHRvIGJlIHJlcHJlc2VudGF0ZWQgYXMgW3wgbzsgbzsgYzsgYTsgYiB8XSwgaS5lLiB3ZSBuZWVkIHRvIGFwcGx5XG4gICBmaXJzdCBhIHJvdGF0aW9uIHRoZW4gYSB0cmFuc2xhdGlvbiB0byBjb252ZXJ0IGFuIGluZGV4IGluIFt8IGE7IGI7IGMgfF0gdG8gYSAobGVhZilcbiAgIGluZGV4IGluIFt8IG87IG87IGM7IGE7IGIgfF0uICopXG50eXBlICdhIHQgPVxuICB7IGRhdGEgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7IG51bV9sZWF2ZXMgOiBpbnRcbiAgOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgOiBpbnRcbiAgOyByZWR1Y2UgOiAnYSAtPiAnYSAtPiAnYVxuICA7IHNleHBfb2ZfYSA6ICdhIC0+IFNleHAudFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubnVtX2xlYXZlc1xuXG4oKiB7dlxuICAgICBwYXJlbnQ6ICAgICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAuLi5cbiAgICAgbGVmdCBjaGlsZDogIDEgIDMgIDUgIDcgIDkgMTEgMTMgMTUgMTcgMTkgMjEgMjMgMjUgMjcgMjkgMzEgMzMgMzUgMzcgMzkgLi4uXG4gICAgIHJpZ2h0IGNoaWxkOiAyICA0ICA2ICA4IDEwIDEyIDE0IDE2IDE4IDIwIDIyIDI0IDI2IDI4IDMwIDMyIDM0IDM2IDM4IDQwIC4uLiB2fSAqKVxubGV0IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXggPSAoY2hpbGRfaW5kZXggLSAxKSAvIDJcbmxldCBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXggPSAocGFyZW50X2luZGV4ICogMikgKyAxXG5sZXQgcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXggPSBsZWZ0X2NoaWxkX2luZGV4ICsgMVxuXG4oKiBUaGUgZmlyc3QgW251bV9sZWF2ZXMtMV0gZWxlbWVudHMgYXJlIGludGVybmFsIG5vZGVzIG9mIHRoZSB0cmVlLiAgVGhlIG5leHRcbiAgIFtudW1fbGVhdmVzXSBlbGVtZW50cyBhcmUgdGhlIGxlYXZlcy4gKilcbmxldCBudW1fYnJhbmNoZXMgdCA9IHQubnVtX2xlYXZlcyAtIDFcbmxldCBpbmRleF9pc19sZWFmIHQgaSA9IGkgPj0gbnVtX2JyYW5jaGVzIHRcblxuKCogVGhlIHRyZWUgaXMgY29tcGxldGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgcGVyZmVjdCwgc28gd2UgcGVyZm9ybSBzb21lIHJvdGF0aW9uIG9mIHRoZVxuICAgbGVhdmVzIHRvIGVuc3VyZSB0aGF0IG91ciByZWR1Y3Rpb25zIHByZXNlcnZlIG9yZGVyaW5nLiAqKVxubGV0IGxlYWZfaW5kZXggdCBpID1cbiAgKCogVGhlIHRyZWUgbGF5b3V0IGlzIGxldmVsIG9yZGVyLiAgQW55IGxlYXZlcyBpbiB0aGUgc2Vjb25kIHRvIGxhc3QgbGV2ZWwgbmVlZCB0byBvY2N1clxuICAgICBpbiB0aGUgYXJyYXkgYmVmb3JlIHRoZSBsZWF2ZXMgaW4gdGhlIGJvdHRvbSBsZXZlbC4gKilcbiAgbGV0IHJvdGF0ZWRfaW5kZXggPVxuICAgIGxldCBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPSBpICsgdC5udW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgaW5cbiAgICBpZiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPCB0Lm51bV9sZWF2ZXNcbiAgICB0aGVuIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheVxuICAgIGVsc2Ugb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IC0gdC5udW1fbGVhdmVzXG4gIGluXG4gICgqIFRoZSBsZWF2ZXMgb2NjdXIgYWZ0ZXIgdGhlIGJyYW5jaGVzIGluIHRoZSBhcnJheS4gKilcbiAgcm90YXRlZF9pbmRleCArIG51bV9icmFuY2hlcyB0XG47O1xuXG5sZXQgZ2V0X2xlYWYgdCBpID0gT3B0aW9uX2FycmF5LmdldCB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXRfbGVhZiB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0b19saXN0IHQgOiBhIG9wdGlvbiBsaXN0KV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZGF0YSAtIDEgZG9cbiAgICBtYXRjaCBPcHRpb25fYXJyYXkuZ2V0IGRhdGEgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnVtX2JyYW5jaGVzIHQgLSAxIGRvXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBsZXQgbGVmdF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBsZWZ0IGluXG4gICAgbGV0IHJpZ2h0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHJpZ2h0IGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgZGF0YSBpXG4gICAgdGhlbiBhc3NlcnQgKG5vdCAobGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpKVxuICAgIGVsc2VcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIGluZGV4X2lzX2xlYWYgdCBsZWZ0IHx8IGluZGV4X2lzX2xlYWYgdCByaWdodCB8fCBsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZV9leG4gPyhzZXhwX29mX2EgPSBbJXNleHBfb2Y6IF9dKSAoKSB+bGVuOm51bV9sZWF2ZXMgfnJlZHVjZSA9XG4gIGlmIG51bV9sZWF2ZXMgPCAxXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJub24tcG9zaXRpdmUgbnVtYmVyIG9mIGxlYXZlcyBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgKG51bV9sZWF2ZXMgOiBpbnQpXTtcbiAgbGV0IG51bV9icmFuY2hlcyA9IG51bV9sZWF2ZXMgLSAxIGluXG4gIGxldCBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgPSBJbnQuY2VpbF9wb3cyIG51bV9sZWF2ZXMgLSBudW1fbGVhdmVzIGluXG4gIGxldCBkYXRhID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOihudW1fYnJhbmNoZXMgKyBudW1fbGVhdmVzKSBpblxuICB7IGRhdGE7IG51bV9sZWF2ZXM7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbDsgcmVkdWNlOyBzZXhwX29mX2EgfVxuOztcblxubGV0IHZhbGlkYXRlX2luZGV4IHQgaSA9XG4gIGlmIGkgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGFjY2VzcyBuZWdhdGl2ZSBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgfmluZGV4OihpIDogaW50KV07XG4gIGxldCBsZW5ndGggPSB0Lm51bV9sZWF2ZXMgaW5cbiAgaWYgaSA+PSBsZW5ndGhcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiXG4gICAgICAgICAgfmluZGV4OihpIDogaW50KVxuICAgICAgICAgIChsZW5ndGggOiBpbnQpXVxuOztcblxubGV0IHNldF9leG4gdCBpIGEgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGxldCBpID0gcmVmIChsZWFmX2luZGV4IHQgaSkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIGRhdGEgIWkgYTtcbiAgd2hpbGUgIWkgPD4gMCBkb1xuICAgIGxldCBwYXJlbnQgPSBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4OiFpIGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBwYXJlbnRcbiAgICB0aGVuIGkgOj0gMFxuICAgIGVsc2UgKFxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBkYXRhIHBhcmVudDtcbiAgICAgIGkgOj0gcGFyZW50KVxuICBkb25lXG47O1xuXG5sZXQgZ2V0X2V4biB0IGkgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbjs7XG5cbmxldCByZWMgY29tcHV0ZV9leG4gdCBpID1cbiAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgdC5kYXRhIGlcbiAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmRhdGEgaVxuICBlbHNlIChcbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGlmIGxlZnQgPj0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmRhdGFcbiAgICB0aGVuIChcbiAgICAgICgqIElmIHdlIGdldCBoZXJlLCB0aGUgcGFyZW50IHdhcyBhbiB1bnNldCBsZWFmLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfYSA9IHQuc2V4cF9vZl9hIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiYXR0ZW1wdCB0byBjb21wdXRlIGJhbGFuY2VkIHJlZHVjZXIgd2l0aCB1bnNldCBlbGVtZW50c1wiXG4gICAgICAgICAgICB+YmFsYW5jZWRfcmVkdWNlcjoodCA6IGEgdCldKTtcbiAgICBsZXQgYSA9IHQucmVkdWNlIChjb21wdXRlX2V4biB0IGxlZnQpIChjb21wdXRlX2V4biB0IHJpZ2h0KSBpblxuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5kYXRhIGkgYTtcbiAgICBhKVxuOztcblxubGV0IGNvbXB1dGVfZXhuIHQgPSBjb21wdXRlX2V4biB0IDBcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBpbml0IDogJ2FcbiAgOyBzdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgeyBpbml0OyBzdGVwcyA9IF8gfSA9IGludmFyaWFudF9hIGluaXRcblxubGV0IHJlYyB2YWx1ZV9pbnRlcm5hbCBpbml0IHN0ZXBzIH5hdCA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgKCh0LCBhKSwgc3RlcHMpIC0+XG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCB0IHRoZW4gaW5pdCBlbHNlIHZhbHVlX2ludGVybmFsIGEgc3RlcHMgfmF0XG47O1xuXG5sZXQgdmFsdWUgdCB+YXQgPSB2YWx1ZV9pbnRlcm5hbCB0LmluaXQgdC5zdGVwcyB+YXRcbmxldCBjb25zdGFudCBpbml0ID0geyBpbml0OyBzdGVwcyA9IFNlcXVlbmNlLmVtcHR5IH1cblxubGV0IGNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzID1cbiAgaWYgbm90XG4gICAgICAgKExpc3QuaXNfc29ydGVkIHN0ZXBzIH5jb21wYXJlOihmdW4gKHRpbWUxLCBfKSAodGltZTIsIF8pIC0+XG4gICAgICAgICAgVGltZV9ucy5jb21wYXJlIHRpbWUxIHRpbWUyKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG5dIGdvdCB1bnNvcnRlZCB0aW1lc1wiXG4gICAgICAgICAgfnN0ZXBzOihzdGVwcyB8PiBMaXN0Lm1hcCB+Zjpmc3QgOiBUaW1lX25zLnQgbGlzdCldO1xuICB7IGluaXQ7IHN0ZXBzID0gc3RlcHMgfD4gU2VxdWVuY2Uub2ZfbGlzdCB9XG47O1xuXG5sZXQgY3JlYXRlX2Zyb21fc2VxdWVuY2UgfmluaXQgfnN0ZXBzID0geyBpbml0OyBzdGVwcyB9XG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBXZWFrID0gQ2FtbC5XZWFrXG5cbnR5cGUgJ2EgdCA9ICdhIEhlYXBfYmxvY2sudCBXZWFrLnRcblxubGV0IGNyZWF0ZSB+bGVuID0gV2Vhay5jcmVhdGUgbGVuXG5sZXQgbGVuZ3RoIHQgPSBXZWFrLmxlbmd0aCB0XG5sZXQgc2V0ID0gV2Vhay5zZXRcblxubGV0IHNldF9leG4gdCBpIHggPSBzZXQgdCBpIChPcHRpb24ubWFwIHggfmY6SGVhcF9ibG9jay5jcmVhdGVfZXhuKVxuXG5sZXQgZ2V0ID0gV2Vhay5nZXRcbmxldCBpc19zb21lIHQgaSA9IFdlYWsuY2hlY2sgdCBpXG5sZXQgaXNfbm9uZSB0IGkgPSBub3QgKGlzX3NvbWUgdCBpKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldCB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwX29mOiBhIEhlYXBfYmxvY2sudCBvcHRpb24gYXJyYXldICh0b19hcnJheSB0KVxuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIGkgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIFdlYWsuYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiIsIigqIFdlIGltcGxlbWVudCBhIHdlYWsgcG9pbnRlciB1c2luZyBhIFtXZWFrX2FycmF5LnRdLiAqKVxuXG5vcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9ICdhIFdlYWtfYXJyYXkudFxuXG5sZXQgY3JlYXRlICgpID0gV2Vha19hcnJheS5jcmVhdGUgfmxlbjoxXG5cbigqIFdlIHVzZSBhIHdlYWsgYXJyYXkgb2YgbGVuZ3RoIDEsIHNvIHRoZSB3ZWFrIHBvaW50ZXIgaXMgYXQgaW5kZXggMC4gKilcbmxldCBpbmRleCA9IDBcblxubGV0IGdldCB0ID0gV2Vha19hcnJheS5nZXQgdCBpbmRleFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgSGVhcF9ibG9jay50IG9wdGlvbildXG5cbmxldCBpc19ub25lIHQgPSBXZWFrX2FycmF5LmlzX25vbmUgdCBpbmRleFxubGV0IGlzX3NvbWUgdCA9IFdlYWtfYXJyYXkuaXNfc29tZSB0IGluZGV4XG5cbmxldCBzZXQgdCBibG9jayA9IFdlYWtfYXJyYXkuc2V0IHQgaW5kZXggKFNvbWUgYmxvY2spXG4iLCJvcGVuISBJbXBvcnRcblxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2EsICdiIFdlYWtfcG9pbnRlci50KSBIYXNodGJsLnRcbiAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICAgICAgICAgIDogJ2EgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgOiB1bml0IC0+IHVuaXRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlID1cbiAgICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfmhhc2hhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG4gICAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPSBpZ25vcmVcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIFVzaW5nX2hhc2hhYmxlLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YSA9XG4gIFdlYWtfcG9pbnRlci5zZXQgZW50cnkgZGF0YTtcbiAgR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfbGFzdCBkYXRhIChmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGtleTtcbiAgICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhICgpKTtcbjs7XG5cbmxldCByZXBsYWNlIHQgfmtleSB+ZGF0YSA9IHNldF9kYXRhIHQga2V5IChnZXRfZW50cnkgdCBrZXkpIGRhdGFcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIGlmIFdlYWtfcG9pbnRlci5pc19zb21lIGVudHJ5XG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJXZWFrX2hhc2h0YmwuYWRkX2V4biBvZiBrZXkgaW4gdXNlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbjs7XG5cbmxldCBmaW5kIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5XG47O1xuXG5sZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgbWF0Y2ggV2Vha19wb2ludGVyLmdldCBlbnRyeSB3aXRoXG4gIHwgU29tZSB2IC0+IHZcbiAgfCBOb25lIC0+XG4gICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbiAgICBkYXRhXG47O1xuIiwidHlwZSB0ID1cbiAgfCBCZWZvcmVcbiAgfCBBZnRlclxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIlslJWltcG9ydCBcImRlYnVnLm1saFwiXVxuXG5vcGVuIENvcmVcbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuIiwiKCogVGhpcyBtb2R1bGUgaGFzIGEgZ2lhbnQgW21vZHVsZSByZWNdIGRlZmluaW5nIGFsbCB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIHVzZWRcbiAgIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4gIFRoZSBkZWZpbml0aW9uIG9mIGVhY2ggdHlwZSBpcyB0aGVuIHJlcGVhdGVkIGluIGl0cyBmaWxlO1xuICAgY29tbWVudHMgYmVsb25nIHRoZXJlLCBub3QgaGVyZS5cblxuICAgV2UgcHV0IGp1c3QgZW5vdWdoIHNleHAgY29udmVydGVycyBoZXJlIHRvIGRpc3BsYXkgbm9kZSBpZHMuICBUaGUgZGV0YWlsZWQgc2V4cFxuICAgY29udmVydGVycyBhcmUgZ2VuZXJhdGVkIHZpYSBbd2l0aCBzZXhwXSBpbiB0aGUgaW5kaXZpZHVhbCBmaWxlcy4gIERlZmluaW5nIHRoZSBzZXhwXG4gICBjb252ZXJ0ZXJzIG91dHNpZGUgb2YgdGhlIFttb2R1bGUgcmVjXSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGFjY2lkZW50YWxseSBpbnRyb2R1Y2UgYVxuICAgc2V4cCBjb252ZXJ0ZXIgdGhhdCB3b3VsZCB0cnkgdG8gcHJvZHVjZSBhbiBpbmZpbml0ZSBzZXhwLlxuKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgcmVjIEFkanVzdF9oZWlnaHRzX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgQWRqdXN0X2hlaWdodHNfaGVhcFxuXG5hbmQgQWxhcm0gOiBzaWdcbiAgdHlwZSB0ID0gQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuZW5kID1cbiAgQWxhcm1cblxuYW5kIEFsYXJtX3ZhbHVlIDogc2lnXG4gIG1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdCBvZiBBdC50XG4gICAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiB0IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEFsYXJtX3ZhbHVlXG5cbmFuZCBBcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIH1cbmVuZCA9XG4gIEFycmF5X2ZvbGRcblxuYW5kIEF0IDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0XG5cbmFuZCBBdF9pbnRlcnZhbHMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiB1bml0IE5vZGUudFxuICAgIDsgYmFzZSA6IFRpbWVfbnMudFxuICAgIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0X2ludGVydmFsc1xuXG5hbmQgQmluZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgbWFpbiA6ICdiIE5vZGUudFxuICAgIDsgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBCaW5kXG5cbmFuZCBDbG9jayA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBDbG9ja1xuXG5hbmQgRXhwZXJ0IDogc2lnXG4gIHR5cGUgJ2EgZWRnZSA9XG4gICAgeyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBpbmRleCA6IGludCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSBwYWNrZWRfZWRnZSA9IEUgOiAnYSBlZGdlIC0+IHBhY2tlZF9lZGdlIFtAQHVuYm94ZWRdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGYgOiB1bml0IC0+ICdhXG4gICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA6IGlzX25vd19vYnNlcnZhYmxlOmJvb2wgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1faW52YWxpZF9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBFeHBlcnRcblxuYW5kIEZyZWV6ZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gICAgfVxuZW5kID1cbiAgRnJlZXplXG5cbmFuZCBJZl90aGVuX2Vsc2UgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IHRlc3QgOiBib29sIE5vZGUudFxuICAgIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gICAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICAgIH1cbmVuZCA9XG4gIElmX3RoZW5fZWxzZVxuXG5hbmQgSW50ZXJuYWxfb2JzZXJ2ZXIgOiBzaWdcbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ3JlYXRlZFxuICAgICAgfCBJbl91c2VcbiAgICAgIHwgRGlzYWxsb3dlZFxuICAgICAgfCBVbmxpbmtlZFxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgcHJldl9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIGludGVybmFsX29ic2VydmVyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBJbnRlcm5hbF9vYnNlcnZlclxuXG5hbmQgSm9pbiA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBKb2luXG5cbmFuZCBLaW5kIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgICB8IENvbnN0IG9mICdhXG4gICAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICAgIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICAgIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gICAgfCBJbnZhbGlkXG4gICAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gICAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gICAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gICAgfCBVbmluaXRpYWxpemVkXG4gICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXA0IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDUgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA2IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA3IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDggOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA5IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDExIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTIgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEzIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE0IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTUgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2ExNVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAqICdhMTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbmVuZCA9XG4gIEtpbmRcblxuYW5kIE5vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogTm9kZV9pZC50XG4gICAgOyBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgICA7IG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIHBhcmVudDAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9ic2VydmVycyA6ICdhIEludGVybmFsX29ic2VydmVyLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gICAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXSBbQEB1bmJveGVkXVxuICBlbmRcblxuICB2YWwgaXNfdmFsaWQgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfbmVjZXNzYXJ5IDogXyB0IC0+IGJvb2xcbiAgdmFsIHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBOb2RlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgUGFja2VkIDo9IE5vZGUuUGFja2VkKVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gY29uY2F0IFsgXCJuXCI7IE5vZGVfaWQudG9fc3RyaW5nIHQuaWQgXSB8PiBbJXNleHBfb2Y6IHN0cmluZ11cblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEB1bmJveGVkXVxuXG4gICAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIG5vZGVdXG4gIGVuZFxuXG4gIGxldCBpc192YWxpZCB0ID1cbiAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgIHwgSW52YWxpZCAtPiBmYWxzZVxuICAgIHwgXyAtPiB0cnVlXG4gIDs7XG5cbiAgKCogW2lzX25lY2Vzc2FyeV0gaXMgZGVmaW5lZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCBpdCBiZWZvcmUgbm9kZS5tbCBpcyBhdmFpbGFibGUuICBJdCBpc1xuICAgICB1c2VkIGR1cmluZyBncmFwaCBtYW5pcHVsYXRpb24sIGFuZCBzbyBpcyB3cml0dGVuIHdpdGggc29tZSBjYXJlIHRvIGJlIGZhc3QuICopXG4gIGxldCBpc19uZWNlc3NhcnkgdCA9XG4gICAgdC5udW1fcGFyZW50cyA+IDBcbiAgICB8fCBVb3B0LmlzX3NvbWUgdC5vYnNlcnZlcnNcbiAgICB8fCAobWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgIHwgRnJlZXplIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHx8IHQuZm9yY2VfbmVjZXNzYXJ5XG4gIDs7XG5cbiAgbGV0IHRfaXNfaW5qZWN0aXZlICh0eXBlIGEgYikgKFQgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkgOiAoYSwgYikgVHlwZV9lcXVhbC50ID0gVFxuXG4gIGxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSAodHlwZSBhIGIpICh0MSA6IGEgdCkgKHQyIDogYiB0KSA9XG4gICAgKCogVGhpcyBpcyB0eXBlLXNhZmUgYXNzdW1pbmcgbm8gb25lIGNhbiBnaXZlIHRoZSBzYW1lIGluY3JlbWVudGFsIG5vZGUgdHdvIGRpZmZlcmVudFxuICAgICAgIHR5cGVzLiAgVGhpcyBpcyB0cnVlIGJlY2F1c2UgdGhlIGZpZWxkIFttdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBvcHRpb25dIHByZXZlbnRzXG4gICAgICAgYm90aCBzdWJ0eXBpbmcgYW5kIHBhcmFtZXRlcmljIHBvbHltb3JwaGlzbS4gIEJ1dCB0aGlzIGFsbG93cyB0byBicmVha1xuICAgICAgIGFic3RyYWN0aW9ucywgYXMgaW4gc29tZW9uZSBjb3VsZCB3cml0ZTpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHRcbiAgICAgICAgIHR5cGUgdSAoKiA9IHQgdW5kZXJuZWF0aCAqKVxuICAgICAgICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdCBJbmNyLnQgKiB1IEluY3IudCAoKiB0aGUgdHdvIGluY3JlbWVudGFscyBhcmUgcGh5c19lcXVhbCAqKVxuICAgICAgIF19XG5cbiAgICAgICBhbmQgd2Ugd291bGQgZmlndXJlIG91dCB0aGF0IHR5cGUgdCA9IHUuICBIb3dldmVyLCB3ZSBjb3VsZCBhZGQgYSBUeXBlX2VxdWFsLklkIHRvXG4gICAgICAgbm9kZXMgYW5kIGRvIHRoZSBzYW1lLCBzbyBpdCBzZWVtcyB0byBiZSBhIG1vcmUgZ2VuZXJhbCBpc3N1ZS4gKilcbiAgICBpZiBwaHlzX3NhbWUgdDEgdDJcbiAgICB0aGVuIFNvbWUgKHRfaXNfaW5qZWN0aXZlIChPYmoubWFnaWMgKFQgOiBfIFR5cGVfZXF1YWwudCkgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5lbmRcblxuYW5kIE9ic2VydmVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmXG5lbmQgPVxuICBPYnNlcnZlclxuXG5hbmQgT25seV9pbl9kZWJ1ZyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgT25seV9pbl9kZWJ1Z1xuXG5hbmQgUGFja2VkX3dlYWtfaGFzaHRibCA6IHNpZ1xuICB0eXBlIHQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbmVuZCA9XG4gIFBhY2tlZF93ZWFrX2hhc2h0YmxcblxuYW5kIFJlY29tcHV0ZV9oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgUmVjb21wdXRlX2hlYXBcblxuYW5kIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBzaWdcbiAgdHlwZSB0ID0gVCA6ICdhIE5vZGUudCAqICdhIE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlLnQgLT4gdFxuZW5kID1cbiAgUnVuX29uX3VwZGF0ZV9oYW5kbGVyc1xuXG5hbmQgU2NvcGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcblxuICBsZXQgc2V4cF9vZl90ID0gZnVuY3Rpb25cbiAgICB8IFRvcCAtPiBcIlRvcFwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIHwgQmluZCBiaW5kIC0+IGJpbmQubWFpbiB8PiBbJXNleHBfb2Y6IF8gTm9kZS50XVxuICA7O1xuZW5kXG5cbmFuZCBTbmFwc2hvdCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IGJlZm9yZSA6ICdhXG4gICAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU25hcHNob3RcblxuYW5kIFN0YXRlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICAgIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIFN0YXR1cyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgU3RhYmlsaXppbmdcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbmVuZCA9XG4gIFN0YXR1c1xuXG5hbmQgU3RlcF9mdW5jdGlvbl9ub2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU3RlcF9mdW5jdGlvbl9ub2RlXG5cbmFuZCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgICA7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICAgIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gICAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gICAgfVxuZW5kID1cbiAgVW5vcmRlcmVkX2FycmF5X2ZvbGRcblxuYW5kIFZhciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICAgIH1cblxuICB0eXBlICdhIHZhciA6PSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgVmFyXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlZhci50ID1cbiAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgOyAoKiBbdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSBpcyBvbmx5IHNldCB0byBbVW9wdC5zb21lXSBpZiB0aGUgdXNlciBjYWxsc1xuICAgICAgIFtWYXIuc2V0XSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyB0aGUgKGxhc3QpIHZhbHVlIHNldC4gIEF0XG4gICAgICAgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCBhbGwgc3VjaCB2YXJpYWJsZXMgYXJlIHByb2Nlc3NlZCB0byBkbyBbdC52YWx1ZSA8LVxuICAgICAgIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICA7ICgqIFtzZXRfYXRdIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3QgcmVjZW50IHRpbWUgW3QudmFsdWVdIGNoYW5nZWQuXG4gICAgICAgVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdFxuICAgICAgIHJlY2VudCB0aW1lIFtWYXIuc2V0IHRdIHdhcyBjYWxsZWQsIGR1ZSB0byB0aGUgZWZmZWN0IG9mIFtWYXIuc2V0XSBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uIGJlaW5nIGRlbGF5ZWQgdW50aWwgYWZ0ZXIgdGhlIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+dmFsdWU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbjooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5zZXRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH53YXRjaDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHdhdGNoIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHdhdGNoLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogcG9zc2libGUgd2l0aCBbfnVzZV9jdXJyZW50X3Njb3BlOnRydWVdICopXG4gICAgICAgICAgIHwgVmFyIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSkpXG47O1xuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC53YXRjaC5zdGF0ZVxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgJ2EgdmFyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHQgPSBUeXBlcy5WYXIuUGFja2VkLnQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBsYXRlc3RfdmFsdWUgdCA9XG4gIGlmIFVvcHQuaXNfc29tZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICB0aGVuIFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIGVsc2UgdC52YWx1ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbm1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZfaW52ZXJzZSBvZiAoJ2IgLT4gJ2EgLT4gJ2IpXG4gICAgfCBVcGRhdGUgb2YgKCdiIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2IpXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHVwZGF0ZSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVwZGF0ZSB1cGRhdGUgLT4gdXBkYXRlXG4gICAgfCBGX2ludmVyc2UgZl9pbnZlcnNlIC0+XG4gICAgICBmdW4gZm9sZF92YWx1ZSB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT4gZiAoZl9pbnZlcnNlIGZvbGRfdmFsdWUgb2xkX3ZhbHVlKSBuZXdfdmFsdWVcbiAgOztcbmVuZFxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuVW5vcmRlcmVkX2FycmF5X2ZvbGQudCA9XG4gIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gIDsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH51cGRhdGU6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQ7XG4gICAgICAgICAgICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZVxuICAgICAgICAgICAgICAgIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSBjaGlsZC52YWx1ZV9vcHQpKSkpXG4gICAgICB+Zm9sZF92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gZm9sZF92YWx1ZSAtPlxuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYWNjIGZvbGRfdmFsdWU7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKFVvcHQuaXNfc29tZSBmb2xkX3ZhbHVlKVxuICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAodC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDw9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID4gMCkpKSlcbjs7XG5cbmxldCBjcmVhdGUgfmluaXQgfmYgfnVwZGF0ZSB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB+Y2hpbGRyZW4gfm1haW4gPVxuICB7IGluaXRcbiAgOyBmXG4gIDsgdXBkYXRlID0gVXBkYXRlLnVwZGF0ZSB1cGRhdGUgfmZcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDsgY2hpbGRyZW5cbiAgOyBtYWluXG4gIDsgZm9sZF92YWx1ZSA9XG4gICAgICBVb3B0Lm5vbmVcbiAgKCogV2UgbWFrZSBbbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXVxuICAgICBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBmdWxsIGNvbXB1dGF0aW9uIHRoZSBuZXh0IHRpbWUgdGhlIG5vZGUgaXMgY29tcHV0ZWQuICopXG4gIDsgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIH1cbjs7XG5cbmxldCBmdWxsX2NvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbjsgXyB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgY29tcHV0ZSB0ID1cbiAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB0aGVuIChcbiAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIDA7XG4gICAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQuc29tZSAoZnVsbF9jb21wdXRlIHQpKTtcbiAgVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlXG47O1xuXG5sZXQgZm9yY2VfZnVsbF9jb21wdXRlIHQgPVxuICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5ub25lO1xuICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IGNoaWxkX2NoYW5nZWRcbiAgICAgICh0eXBlIGEgYilcbiAgICAgICh0IDogKGEsIF8pIHQpXG4gICAgICB+KGNoaWxkIDogYiBOb2RlLnQpXG4gICAgICB+Y2hpbGRfaW5kZXhcbiAgICAgIH4ob2xkX3ZhbHVlX29wdCA6IGIgVW9wdC50KVxuICAgICAgfihuZXdfdmFsdWUgOiBiKVxuICA9XG4gIGxldCBjaGlsZF9hdF9pbmRleCA9IHQuY2hpbGRyZW4uKGNoaWxkX2luZGV4KSBpblxuICBtYXRjaCBOb2RlLnR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIGNoaWxkIGNoaWxkX2F0X2luZGV4IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Vub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRdIG1pc21hdGNoXCJcbiAgICAgICAgICB+dW5vcmRlcmVkX2FycmF5X2ZvbGQ6KHQgOiAoXywgXykgdClcbiAgICAgICAgICAoY2hpbGRfaW5kZXggOiBpbnQpXG4gICAgICAgICAgKGNoaWxkIDogXyBOb2RlLnQpXVxuICB8IFNvbWUgVCAtPlxuICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLSAxXG4gICAgdGhlbiAoXG4gICAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgKyAxO1xuICAgICAgKCogV2Ugb25seSByZWFjaCB0aGlzIGNhc2UgaWYgd2UgaGF2ZSBhbHJlYWR5IGRvbmUgYSBmdWxsIGNvbXB1dGUsIGluIHdoaWNoIGNhc2VcbiAgICAgICAgIFtVb3B0LmlzX3NvbWUgdC5mb2xkX3ZhbHVlXSBhbmQgW1VvcHQuaXNfc29tZSBvbGRfdmFsdWVfb3B0XS4gKilcbiAgICAgIHQuZm9sZF92YWx1ZVxuICAgICAgPC0gVW9wdC5zb21lXG4gICAgICAgICAgICh0LnVwZGF0ZVxuICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlKVxuICAgICAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnZhbHVlX2V4biBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgICAgICB+bmV3X3ZhbHVlKSlcbiAgICBlbHNlIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICB0aGVuIGZvcmNlX2Z1bGxfY29tcHV0ZSB0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cblxudHlwZSB0ID0gKFR5cGVzLkFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSkgQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bGwgPSBBbGFybS5udWxsICgpXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQWxhcm1fdmFsdWUgPSBUeXBlcy5BbGFybV92YWx1ZVxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlN0ZXBfZnVuY3Rpb25fbm9kZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogKEFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSlcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHBoeXNfc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyB3aGVuIFt1cGNvbWluZ19zdGVwc10gYmVjb21lcyBlbXB0eS4gKilcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0Omlnbm9yZVxuICAgICAgfnZhbHVlOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnVwY29taW5nX3N0ZXBzOmlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+YWxhcm1fdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIChhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0MiAtPiBhc3NlcnQgKHBoeXNfc2FtZSB0IHQyKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuXG5sZXQgcmVjIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGExIHN0ZXBzID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgU29tZSAoKHN0ZXBfYXQsIGEyKSwgc3RlcHMyKSB3aGVuIFRpbWVfbnMuKCA+PSApIHRvXyBzdGVwX2F0IC0+XG4gICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTIgc3RlcHMyXG4gIHwgXyAtPlxuICAgIHQudmFsdWUgPC0gVW9wdC5zb21lIGExO1xuICAgIHQudXBjb21pbmdfc3RlcHMgPC0gc3RlcHNcbjs7XG5cbmxldCBhZHZhbmNlIHQgfnRvXyA9IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIChVb3B0LnZhbHVlX2V4biB0LnZhbHVlKSB0LnVwY29taW5nX3N0ZXBzXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5BcnJheV9mb2xkLnQgPVxuICB7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQpKSkpXG47O1xuXG5sZXQgY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXQudCA9XG4gIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgQWZ0ZXIgLT4gKCkgKCogaGFwcGVucyBvbmNlIHRoZSBjdXJyZW50IHRpbWUgcGFzc2VzIFt0LmF0XS4gKilcbiAgICAgICAgICAgfCBBdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0X2ludGVydmFscy50ID1cbiAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgOyBiYXNlIDogVGltZV9ucy50XG4gIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5iYXNlOmlnbm9yZVxuICAgICAgfmludGVydmFsOihjaGVjayAoZnVuIGludGVydmFsIC0+IGFzc2VydCAoVGltZV9ucy5TcGFuLmlzX3Bvc2l0aXZlIGludGVydmFsKSkpXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEJpbmQgPSBUeXBlcy5CaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm1vZHVsZSBTY29wZSA9IFR5cGVzLlNjb3BlXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJpbmQudCA9XG4gIHsgbWFpbiA6ICdiIE5vZGUudFxuICA7ICgqIFtmXSBpcyB0aGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdlIHJ1biBlYWNoIHRpbWUgW3QubGhzXSBjaGFuZ2VzLiAgSXQgaXNcbiAgICAgICBtdXRhYmxlIG9ubHkgc28gd2UgY2FuIGNsZWFyIGl0IHdoZW4gW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7ICgqIFtyaHNdIGlzIGluaXRpYWxseSBbbm9uZV0sIGFuZCBhZnRlciB0aGF0IGlzIFtzb21lXSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBtb3N0IHJlY2VudFxuICAgICAgIGNhbGwgdG8gW2ZdLiAqKVxuICAgIG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICA7ICgqIFtyaHNfc2NvcGVdIGlzIHRoZSBzY29wZSBpbiB3aGljaCBbdC5mXSBpcyBydW4sIGkuZS4gaXQgaXMgW1Njb3BlLkJpbmQgdF0uICBJdCBpc1xuICAgICAgIFttdXRhYmxlXSBvbmx5IHRvIGF2b2lkIGEgW2xldCByZWNdIGR1cmluZyBjcmVhdGlvbi4gKilcbiAgICBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgOyAoKiBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBpcyB0aGUgaGVhZCBvZiB0aGUgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIG5vZGVzIGNyZWF0ZWQgb25cbiAgICAgICB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIFt0XSwgaS5lLiBpbiBbdC5yaHNfc2NvcGVdLiAqKVxuICAgIG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpc192YWxpZCB0ID1cbiAgbWF0Y2ggdC5tYWluLmtpbmQgd2l0aFxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfihmIDogTm9kZS5QYWNrZWQudCAtPiB1bml0KSA9XG4gIGxldCByID0gcmVmIHQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgZiAoVCBub2RlX29uX3JocylcbiAgZG9uZVxuOztcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgX2ludmFyaWFudF9iIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBsaHNfY2hhbmdlLmNyZWF0ZWRfaW4gdC5tYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmVcbiAgICAgIH5yaHNfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBTY29wZS5Ub3AgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgIHwgQmluZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JykpKVxuICAgICAgfmFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdC5yaHNfc2NvcGUpO1xuICAgICAgICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9XG4gICAgICB+aXNfbmVjZXNzYXJ5XG4gID1cbiAgaWYgbm90IGlzX25lY2Vzc2FyeVxuICB0aGVuIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDowXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF9pbnZhbGlkX2NoaWxkcmVuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgci5jaGlsZCkgdGhlbiBpbmNyIGNvdW50X2ludmFsaWRfY2hpbGRyZW5cbiAgICBkb25lO1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDohY291bnRfaW52YWxpZF9jaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlID1cbiAgeyBmXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2VcbiAgOyBjaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgOyBudW1fY2hpbGRyZW4gPSAwXG4gIDsgZm9yY2Vfc3RhbGUgPSBmYWxzZVxuICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuID0gMFxuICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdHJ1ZVxuICB9XG47O1xuXG5sZXQgbWFrZV9zdGFsZSB0ID1cbiAgaWYgdC5mb3JjZV9zdGFsZVxuICB0aGVuIGBBbHJlYWR5X3N0YWxlXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgICBgT2spXG47O1xuXG5sZXQgaW5jcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gKyAxXG5sZXQgZGVjcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gLSAxXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX2NoaWxkcmVuID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX2NoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXggPSBJbnQubWF4IDIgKDIgKiBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKSBpblxuICAgIHQuY2hpbGRyZW4gPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQuY2hpbGRyZW4gfmxlbjpuZXdfbWF4KVxuOztcblxubGV0IGFkZF9jaGlsZF9lZGdlIHQgcGFja2VkX2VkZ2UgPVxuICBsZXQgKEUgZWRnZSkgPSBwYWNrZWRfZWRnZSBpblxuICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlZGdlLmluZGV4KTtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQ7XG4gIGxldCBuZXdfY2hpbGRfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQuc29tZSBuZXdfY2hpbGRfaW5kZXg7XG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbmV3X2NoaWxkX2luZGV4IChVb3B0LnNvbWUgcGFja2VkX2VkZ2UpO1xuICB0Lm51bV9jaGlsZHJlbiA8LSB0Lm51bV9jaGlsZHJlbiArIDE7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgKCogV2Ugd2lsbCBidW1wIHRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiBpZiBuZWNlc3Nhcnkgd2hlbiBjb25uZWN0aW5nIGNoaWxkIGFuZFxuICAgICBwYXJlbnQuICBTYW1lIHRoaW5nIGZvciBydW5uaW5nIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MuICopXG4gIG5ld19jaGlsZF9pbmRleFxuOztcblxubGV0IHN3YXBfY2hpbGRyZW4gdCB+Y2hpbGRfaW5kZXgxIH5jaGlsZF9pbmRleDIgPVxuICBsZXQgKEUgZWRnZTEpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxKSBpblxuICBsZXQgKEUgZWRnZTIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgyKSBpblxuICBlZGdlMS5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgyO1xuICBlZGdlMi5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgxO1xuICBVbmlmb3JtX2FycmF5LnN3YXAgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEgY2hpbGRfaW5kZXgyXG47O1xuXG5sZXQgbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleClcbjs7XG5cbmxldCByZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgbGV0IHBhY2tlZF9lZGdlX29wdCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggVW9wdC5ub25lO1xuICB0Lm51bV9jaGlsZHJlbiA8LSBsYXN0X2luZGV4O1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gIGFzc2VydCAoVW9wdC5pc19zb21lIHBhY2tlZF9lZGdlX29wdCk7XG4gIGxldCAoRSBlZGdlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIHBhY2tlZF9lZGdlX29wdCBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQubm9uZVxuOztcblxubGV0IGJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIHQgPVxuICBpZiB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuID4gMFxuICB0aGVuIGBJbnZhbGlkXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gZmFsc2U7XG4gICAgbGV0IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyBpblxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gZmFsc2U7XG4gICAgaWYgd2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgICB0aGVuXG4gICAgICBmb3IgaSA9IDAgdG8gdC5udW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGkpIGluXG4gICAgICAgIHIub25fY2hhbmdlIChVb3B0LnZhbHVlX2V4biByLmNoaWxkLnZhbHVlX29wdClcbiAgICAgIGRvbmU7XG4gICAgYE9rKVxuOztcblxubGV0IG9ic2VydmFiaWxpdHlfY2hhbmdlIHQgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgdC5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSB+aXNfbm93X29ic2VydmFibGU7XG4gIGlmIG5vdCBpc19ub3dfb2JzZXJ2YWJsZVxuICB0aGVuIChcbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIHRydWU7XG4gICAgKCogSWYgd2UgZG9uJ3QgcmVzZXQgbnVtX2ludmFsaWRfY2hpbGRyZW4sIHdlIHdvdWxkIGRvdWJsZSBjb3VudCB0aGVtOiBqdXN0IGltYWdpbmVcbiAgICAgICB3aGF0IGhhcHBlbnMgd2UgaWYgcmVjb25uZWN0L2Rpc2Nvbm5lY3QvcmVjb25uZWN0L2Rpc2Nvbm5lY3Qgd2l0aCBhbiBpbnZhbGlkXG4gICAgICAgY2hpbGQuICopXG4gICAgdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSAwKVxuOztcblxubGV0IHJ1bl9lZGdlX2NhbGxiYWNrIHQgfmNoaWxkX2luZGV4ID1cbiAgaWYgbm90IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgdGhlbiAoXG4gICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgpIGluXG4gICAgKCogVGhpcyB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgc2V0LCBiZWNhdXNlIHdlIHRyeSB0byBydW4gdGhpcyB3aGVuIGNvbm5lY3RpbmcgdGhlXG4gICAgICAgbm9kZSB0byBpdHMgY2hpbGRyZW4sIHdoaWNoIGNvdWxkIGJlIGJlZm9yZSB0aGV5IGhhdmUgcnVuIGV2ZW4gb25jZS4gIEFsc28gdGhlIG5vZGVcbiAgICAgICBjb3VsZCBiZSBpbnZhbGlkLiAqKVxuICAgIGlmIFVvcHQuaXNfc29tZSByLmNoaWxkLnZhbHVlX29wdFxuICAgIHRoZW4gci5vbl9jaGFuZ2UgKFVvcHQudW5zYWZlX3ZhbHVlIHIuY2hpbGQudmFsdWVfb3B0KSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5pbmNsdWRlIFR5cGVzLlNjb3BlXG5cbmxldCB0b3AgPSBUb3BcblxubGV0IGlzX3RvcCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbjs7XG5cbigqIFVubGlrZSBmb3Igbm9kZXMsIHRoZXJlIGlzIG5vIGludmFyaWFudCBbaXNfbmVjZXNzYXJ5IHQgPD0+IGhlaWdodCA+IC0xXSAoZG9lc24ndCB3b3JrXG4gICBiZWNhdXNlIG9mIFtUb3BdKS4gIFRoaXMgaXMgZmluZSBzaW5jZSB0aGUgaGVpZ2h0IG9mIGEgc2NvcGUgaXMgb25seSB1c2VkIHRvIGNvbnN0cmFpblxuICAgb3RoZXIgaGVpZ2h0cywgbm90IHRvIHNjaGVkdWxlIGl0LiAqKVxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IC0xXG4gIHwgQmluZCBiaW5kIC0+IGJpbmQubGhzX2NoYW5nZS5oZWlnaHRcbjs7XG5cbmxldCBpc192YWxpZCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pc192YWxpZCBiaW5kXG47O1xuXG5sZXQgaXNfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBOb2RlLmlzX25lY2Vzc2FyeSBiaW5kLm1haW5cbjs7XG5cbmxldCBhZGRfbm9kZSB0IChub2RlIDogXyBOb2RlLnQpID1cbiAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0KTtcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+XG4gICAgbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocztcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0LnNvbWUgKFR5cGVzLk5vZGUuUGFja2VkLlQgbm9kZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRnJlZXplLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIGZyZWV6aW5nIGFuIGludmFsaWQgdmFsdWUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgb24gYmVjb21pbmcgZnJvemVuICopXG4gICAgICAgICAgIHwgRnJlZXplIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5vbmx5X2ZyZWV6ZV93aGVuOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSWZfdGhlbl9lbHNlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfnRlc3Q6aWdub3JlXG4gICAgICB+dGVzdF9jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuICh0ZXN0X2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB0ZXN0X2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmN1cnJlbnRfYnJhbmNoOlxuICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X2JyYW5jaCAtPlxuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2hcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IGN1cnJlbnRfYnJhbmNoID0gVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2ggaW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LnRoZW5fIHx8IHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC5lbHNlXykpKSlcbiAgICAgIH50aGVuXzppZ25vcmVcbiAgICAgIH5lbHNlXzppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkpvaW4udCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlNuYXBzaG90LnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IGJlZm9yZSA6ICdhXG4gIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gc25hcHNob3R0aW5nIGFuIGludmFsaWQgbm9kZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBhZnRlciB0aGUgc25hcHNob3QgKilcbiAgICAgICAgICAgfCBTbmFwc2hvdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YmVmb3JlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9hdDppZ25vcmVcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLktpbmQudCA9XG4gIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICB8IENvbnN0IG9mICdhXG4gIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICB8IEludmFsaWRcbiAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgVmFyIG9mICdhIFZhci50XG4gIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwNCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAqICdhNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA1IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA2IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA3IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA4IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA5IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYTExIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEyIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMyA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE0IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE1IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhMTVcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuYW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBcnJheV9mb2xkIF8gLT4gXCJBcnJheV9mb2xkXCJcbiAgfCBBdCBfIC0+IFwiQXRcIlxuICB8IEF0X2ludGVydmFscyBfIC0+IFwiQXRfaW50ZXJ2YWxzXCJcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBcIkJpbmRfbGhzX2NoYW5nZVwiXG4gIHwgQmluZF9tYWluIF8gLT4gXCJCaW5kX21haW5cIlxuICB8IENvbnN0IF8gLT4gXCJDb25zdFwiXG4gIHwgRXhwZXJ0IF8gLT4gXCJFeHBlcnRcIlxuICB8IEZyZWV6ZSBfIC0+IFwiRnJlZXplXCJcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IFwiSWZfdGVzdF9jaGFuZ2VcIlxuICB8IElmX3RoZW5fZWxzZSBfIC0+IFwiSWZfdGhlbl9lbHNlXCJcbiAgfCBJbnZhbGlkIC0+IFwiSW52YWxpZFwiXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gXCJKb2luX2xoc19jaGFuZ2VcIlxuICB8IEpvaW5fbWFpbiBfIC0+IFwiSm9pbl9tYWluXCJcbiAgfCBNYXAgXyAtPiBcIk1hcFwiXG4gIHwgTWFwMiBfIC0+IFwiTWFwMlwiXG4gIHwgTWFwMyBfIC0+IFwiTWFwM1wiXG4gIHwgTWFwNCBfIC0+IFwiTWFwNFwiXG4gIHwgTWFwNSBfIC0+IFwiTWFwNVwiXG4gIHwgTWFwNiBfIC0+IFwiTWFwNlwiXG4gIHwgTWFwNyBfIC0+IFwiTWFwN1wiXG4gIHwgTWFwOCBfIC0+IFwiTWFwOFwiXG4gIHwgTWFwOSBfIC0+IFwiTWFwOVwiXG4gIHwgTWFwMTAgXyAtPiBcIk1hcDEwXCJcbiAgfCBNYXAxMSBfIC0+IFwiTWFwMTFcIlxuICB8IE1hcDEyIF8gLT4gXCJNYXAxMlwiXG4gIHwgTWFwMTMgXyAtPiBcIk1hcDEzXCJcbiAgfCBNYXAxNCBfIC0+IFwiTWFwMTRcIlxuICB8IE1hcDE1IF8gLT4gXCJNYXAxNVwiXG4gIHwgU25hcHNob3QgXyAtPiBcIlNuYXBzaG90XCJcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gXCJTdGVwX2Z1bmN0aW9uXCJcbiAgfCBVbmluaXRpYWxpemVkIC0+IFwiVW5pbml0aWFsaXplZFwiXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBcIlVub3JkZXJlZF9hcnJheV9mb2xkXCJcbiAgfCBWYXIgXyAtPiBcIlZhclwiXG47O1xuXG5sZXQgaW52YXJpYW50IDogdHlwZSBhLiBhIEludmFyaWFudC50IC0+IGEgdCBJbnZhcmlhbnQudCA9XG4gIGZ1biBpbnZhcmlhbnRfYSB0IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBBcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYXJyYXlfZm9sZFxuICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbiAgfCBCaW5kX21haW4gYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYmluZFxuICB8IENvbnN0IGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5pbnZhcmlhbnQgaW52YXJpYW50X2EgZVxuICB8IEZyZWV6ZSBmcmVlemUgLT4gRnJlZXplLmludmFyaWFudCBpbnZhcmlhbnRfYSBmcmVlemVcbiAgfCBJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpZ25vcmUgaWZfdGhlbl9lbHNlXG4gIHwgSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGludmFyaWFudF9hIGlmX3RoZW5fZWxzZVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2Ugam9pbiAtPiBKb2luLmludmFyaWFudCBpZ25vcmUgam9pblxuICB8IEpvaW5fbWFpbiBqb2luIC0+IEpvaW4uaW52YXJpYW50IGludmFyaWFudF9hIGpvaW5cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgXyAtPiAoKVxuICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpbnZhcmlhbnRfYSBzbmFwc2hvdFxuICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgLT5cbiAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gIHwgVmFyIHZhciAtPiBWYXIuaW52YXJpYW50IGlnbm9yZSB2YXJcbjs7XG5cbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdCBfIC0+IDBcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAwXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEJpbmRfbWFpbiBfIC0+IDJcbiAgfCBDb25zdCBfIC0+IDBcbiAgfCBFeHBlcnQgXyAtPiAwXG4gIHwgRnJlZXplIF8gLT4gMVxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gMVxuICB8IElmX3RoZW5fZWxzZSBfIC0+IDJcbiAgfCBJbnZhbGlkIC0+IDBcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgSm9pbl9tYWluIF8gLT4gMlxuICB8IE1hcCBfIC0+IDFcbiAgfCBNYXAyIF8gLT4gMlxuICB8IE1hcDMgXyAtPiAzXG4gIHwgTWFwNCBfIC0+IDRcbiAgfCBNYXA1IF8gLT4gNVxuICB8IE1hcDYgXyAtPiA2XG4gIHwgTWFwNyBfIC0+IDdcbiAgfCBNYXA4IF8gLT4gOFxuICB8IE1hcDkgXyAtPiA5XG4gIHwgTWFwMTAgXyAtPiAxMFxuICB8IE1hcDExIF8gLT4gMTFcbiAgfCBNYXAxMiBfIC0+IDEyXG4gIHwgTWFwMTMgXyAtPiAxM1xuICB8IE1hcDE0IF8gLT4gMTRcbiAgfCBNYXAxNSBfIC0+IDE1XG4gIHwgU25hcHNob3QgXyAtPiAwXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IDFcbiAgfCBVbmluaXRpYWxpemVkIC0+IDBcbiAgfCBWYXIgXyAtPiAwXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuOztcblxubGV0IGJpbmRfcmhzX2NoaWxkX2luZGV4ID0gMVxubGV0IGZyZWV6ZV9jaGlsZF9pbmRleCA9IDBcbmxldCBpZl9icmFuY2hfY2hpbGRfaW5kZXggPSAxXG5sZXQgam9pbl9yaHNfY2hpbGRfaW5kZXggPSAxXG5cbigqIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHRpbWUtYmFzZWQgbm9kZXMgKFtBdF0sIFtBdF9pbnRlcnZhbHNdLCBbU25hcHNob3RdLFxuICAgW1N0ZXBfZnVuY3Rpb25dKSBhcyBwYXJlbnRzIG9mIHRoZSBjdXJyZW50LXRpbWUgbm9kZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFdlIGRvbid0XG4gICB3YW50IGFsbCBzdWNoIG5vZGVzIHRvIGJlIHJlY29tcHV0ZWQgd2hlbmV2ZXIgdGhlIHRpbWUgY2hhbmdlcywgd2hpY2ggd291bGQgYmUgaG9ycmlibHlcbiAgIGlubmVmaWNpZW50LiAgSW5zdGVhZCwgd2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBhdCB0aGUgXCJyaWdodFwiIHRpbWUsXG4gICBpLmUuIHdoZW4gdGltZSBwYXNzZXMgc29tZSB0aHJlc2hvbGQgcmVsZXZhbnQgdG8gdGhlbS4gIFdlIGRvIHRoaXMgdmlhIHNjaGVkdWxpbmdcbiAgIGFsYXJtcyBhdCB0aG9zZSB0aHJlc2hvbGRzLiAqKVxubGV0IGl0ZXJpX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBpbnQgLT4gTm9kZS5QYWNrZWQudCAtPiB1bml0KSA6IHVuaXQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IEF0IF8gLT4gKClcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IGYgMCAoVCBiaW5kLmxocylcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgICgqIFZhcmlvdXMgY29kZSwgZS5nLiBbc3RhdGUuYmVjYW1lX25lY2Vzc2FyeV0sIHJlbGllcyBvbiBwcm9jZXNzaW5nIFtsaHNfY2hhbmdlXVxuICAgICAgIGJlZm9yZSBbcmhzXS4gKilcbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBDb25zdCBfIC0+ICgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRXhwZXJ0LkUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBmIGkgKFQgci5jaGlsZClcbiAgICBkb25lXG4gIHwgRnJlZXplIHsgY2hpbGQ7IF8gfSAtPiBmIDAgKFQgY2hpbGQpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gZiAwIChUIHRlc3QpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBmIDAgKFQgdGVzdF9jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaCB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY3VycmVudF9icmFuY2gpKVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBmIDAgKFQgbGhzKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgU25hcHNob3QgXyAtPiAoKVxuICB8IFN0ZXBfZnVuY3Rpb24geyBjaGlsZDsgXyB9IC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkIHRoZW4gZiAwIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjaGlsZCkpXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IFZhciBfIC0+ICgpXG4gIHwgTWFwIChfLCBub2RlMCkgLT4gZiAwIChUIG5vZGUwKVxuICB8IE1hcDIgKF8sIG5vZGUwLCBub2RlMSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSlcbiAgfCBNYXAzIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpXG4gIHwgTWFwNCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKVxuICB8IE1hcDUgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNClcbiAgfCBNYXA2IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpXG4gIHwgTWFwNyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KVxuICB8IE1hcDggKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNylcbiAgfCBNYXA5IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpXG4gIHwgTWFwMTAgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSlcbiAgfCBNYXAxMSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTksIG5vZGUxMClcbiAgICAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApXG4gIHwgTWFwMTJcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSlcbiAgfCBNYXAxM1xuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpXG4gIHwgTWFwMTRcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTMgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpXG4gIHwgTWFwMTVcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTNcbiAgICAgICwgbm9kZTE0ICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKTtcbiAgICBmIDE0IChUIG5vZGUxNClcbjs7XG5cbigqIFtzbG93X2dldF9jaGlsZF0gaXMgb25seSB1c2VkIGJ5IFtOb2RlLmludmFyaWFudF0sIHNvIHdlIGRvbid0IG1pbmQgdXNpbmcgW3dpdGhfcmV0dXJuXVxuICAgYW5kIFtpdGVyaV9jaGlsZHJlbl0uICBJZiB3ZSBldmVyIG5lZWQgYSBmYXN0IFtnZXRfY2hpbGRdLCB3ZSBjb2RlZCBpdCBpbiByZXZcbiAgIDQ4ZGJmZDAzYzljNS4gKilcbmxldCBzbG93X2dldF9jaGlsZCA6IHR5cGUgYS4gYSB0IC0+IGluZGV4Ol8gLT4gTm9kZS5QYWNrZWQudCA9XG4gIGZ1biB0IH5pbmRleCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGxldCAoRSBlZGdlKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpbmRleCkgaW5cbiAgICBUIGVkZ2UuY2hpbGRcbiAgfCBfIC0+XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gaSBjaGlsZCAtPiBpZiBpID0gaW5kZXggdGhlbiByLnJldHVybiBjaGlsZCk7XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIktpbmQuc2xvd19nZXRfY2hpbGQgZ290IGludmFsaWQgaW5kZXhcIlxuICAgICAgICAoaW5kZXgsIHQpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogXyB0XSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIEtpbmRcbm1vZHVsZSBJbnRlcm5hbF9vYnNlcnZlciA9IFR5cGVzLkludGVybmFsX29ic2VydmVyXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm9wZW4gTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Ob2RlLnQgPVxuICB7ICgqIFtpZF0gaXMgYSB1bmlxdWUgaWQgZm9yIHRoZSBub2RlLiAqKVxuICAgIGlkIDogTm9kZV9pZC50XG4gIDsgc3RhdGUgOiAoVHlwZXMuU3RhdGUudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFRoZSBmaWVsZHMgZnJvbSBbcmVjb21wdXRlZF9hdF0gdG8gW2NyZWF0ZWRfaW5dIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgaW4gdGhlXG4gICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSB1c2VkIGJ5IFtTdGF0ZS5yZWNvbXB1dGVdIFRoaXMgaGFzIGEgcG9zaXRpdmUgcGVyZm9ybWFuY2VcbiAgICAgICBpbXBhY3QgZHVlIHRvIGNhY2hlIGVmZmVjdHMuICBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZXNlIG5vZGVzIHdpdGhvdXRcbiAgICAgICBwZXJmb3JtYW5jZSB0ZXN0aW5nLiAqKVxuICAgICgqIFtyZWNvbXB1dGVkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gW3RdJ3MgdmFsdWUgd2FzIHJlY29tcHV0ZWQsIGV2ZW4gaWZcbiAgICAgICBpdCB3YXMgY3V0IG9mZi4gKilcbiAgICBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW3ZhbHVlX29wdF0gc3RhcnRzIGFzIFtub25lXSwgYW5kIHRoZSBmaXJzdCB0aW1lIFt0XSBpcyBjb21wdXRlZCBpdCBpcyBzZXQgdG9cbiAgICAgICBbc29tZV0sIGFuZCByZW1haW5zIFtzb21lXSB0aGVyZWFmdGVyLCB1bnRpbCBbdF0gaXMgaW52YWxpZGF0ZWQsIGlmIGV2ZXIuICopXG4gICAgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBba2luZF0gaXMgdGhlIGtpbmQgb2YgREFHIG5vZGUgW3RdIGlzLiAgW2tpbmRdIGlzIG11dGFibGUgYm90aCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgICBhbmQgYmVjYXVzZSBpdCBjYW4gY2hhbmdlLCBlLmcuIGlmIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gIDsgKCogW2NoYW5nZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiB0aGlzIG5vZGUgd2FzIGNvbXB1dGVkIGFuZCBub3QgY3V0IG9mZi5cbiAgICAgICBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIFt0XSdzIHBhcmVudHMgYXJlIHN0YWxlIGFuZCAoYmVjYXVzZSBhbGwgcGFyZW50cyBhcmVcbiAgICAgICBuZWNlc3NhcnkpIG5lZWQgdG8gYmUgcmVjb21wdXRlZC4gKilcbiAgICBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIGlzIFtMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc10gcGx1cyB0aGUgbnVtYmVyIG9mXG4gICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHN1bW1lZCBvdmVyIGFsbCBvYnNlcnZlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIEl0IGlzIHVzZWQgdG9cbiAgICAgICBxdWlja2x5IGRlY2lkZSB3aGV0aGVyIFt0XSBuZWVkcyB0byBiZSBhZGRlZCB0byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dXG4gICAgICAgd2hlbiBbdF0gY2hhbmdlcy4gIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aWxsIGRlY3JlYXNlIHdoZW4gYW4gb2JzZXJ2ZXIgaXNcbiAgICAgICByZW1vdmVkIGZyb20gW3Qub2JzZXJ2ZXJzXSwgaWYgdGhlIG9ic2VydmVyIGhhcyBvbi11cGRhdGUgaGFuZGxlcnMuICopXG4gICAgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gIDsgKCogVGhlIHBhcmVudHMgb2YgW3RdIGFyZSB0aGUgbm9kZXMgdGhhdCBkZXBlbmQgb24gaXQsIGFuZCBzaG91bGQgYmUgY29tcHV0ZWQgd2hlbiBbdF1cbiAgICAgICBjaGFuZ2VzLCBvbmNlIGFsbCBvZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgdXAgdG8gZGF0ZS4gIFtudW1fcGFyZW50c10gaXMgdGhlXG4gICAgICAgbnVtYmVyIG9mIHBhcmVudHMuICBJZiBbbnVtX3BhcmVudHMgPj0gMV0sIHRoZW4gW3BhcmVudDBdIGlzIHRoZSBmaXJzdCBwYXJlbnQuXG4gICAgICAgW3BhcmVudDFfYW5kX2JleW9uZF0gaG9sZHMgdGhlIHJlbWFpbmluZyBwYXJlbnRzLiAgVGhlIG9yZGVyIG9mIHRoZSBwYXJlbnRzIGRvZXNuJ3RcbiAgICAgICBtYXR0ZXIuICBPbmUgbm9kZSBtYXkgb2NjdXIgbXVsdGlwbGUgdGltZXMgYXMgYSBwYXJlbnQgb2YgYW5vdGhlciAoZS5nLiBjb25zaWRlclxuICAgICAgIFttYXAyIG4xIG4xIH5mXSkuXG5cbiAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIHRoYXQgYSBub2RlIGhhc1xuICAgICAgIG9ubHkgb25lIHBhcmVudC4gKilcbiAgICBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gIDsgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBQYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBwYXJlbnQwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2NyZWF0ZWRfaW5dIGlzIGluaXRpYWxseSB0aGUgc2NvcGUgdGhhdCB0aGUgbm9kZSBpcyBjcmVhdGVkIGluLiAgSWYgYSBub2RlIGlzXG4gICAgICAgbGF0ZXIgXCJyZXNjb3BlZFwiLCB0aGVuIGNyZWF0ZWRfaW4gd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV3IHNjb3BlIHRoYXQgdGhlIG5vZGVcbiAgICAgICBpcyBwYXJ0IG9mLiAqKVxuICAgIG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgOyAoKiBbbmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgY3JlYXRlZCBpbiBbdC5jcmVhdGVkX2luXS4gKilcbiAgICBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF0gaXMgdXNlZCB0byB2aXNpdCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci4gIElmIFtpc19uZWNlc3NhcnkgdF0sIHRoZW5cbiAgICAgICBbaGVpZ2h0ID4gYy5oZWlnaHRdIGZvciBhbGwgY2hpbGRyZW4gW2NdIG9mIFt0XSwgYW5kIFtoZWlnaHQgPiBTY29wZS5oZWlnaHRcbiAgICAgICB0LmNyZWF0ZWRfaW5dLiAgSWYgW25vdCAoaXNfbmVjZXNzYXJ5IHQpXSwgdGhlbiBbaGVpZ2h0ID0gLTFdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0IDogaW50XG4gIDsgKCogW2hlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gaXMgdGhlIGhlaWdodCBhdCB3aGljaCBbdF0gaXMgc3RvcmVkIGluIHRoZSByZWNvbXB1dGVcbiAgICAgICBoZWFwLCBhbmQgaXMgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgSWYgW3RdIGlzIHRoZVxuICAgICAgIHJlY29tcHV0ZSBoZWFwLCB0aGVuIHR5cGljYWxseSBbdC5oZWlnaHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF07IGhvd2V2ZXIsXG4gICAgICAgd2hpbGUgaGVpZ2h0IGlzIGJlaW5nIGFkanVzdGVkLCBvbmUgY2FuIHRlbXBvcmFyaWx5IGhhdmUgW3QuaGVpZ2h0ID5cbiAgICAgICB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0uICBXaGVuIGhlaWdodCBhZGp1c3RtZW50IGZpbmlzaGVzLCBlcXVhbGl0eSBpcyByZXN0b3JlZFxuICAgICAgIGJ5IGluY3JlYXNpbmcgW3QuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSB0byBbdC5oZWlnaHRdIGFuZCBzaGlmdGluZyBbdF0nc1xuICAgICAgIHBvc2l0aW9uIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICA7ICgqIFtwcmV2X2luX3JlY29tcHV0ZV9oZWFwXSBhbmQgW25leHRfaW5fcmVjb21wdXRlX2hlYXBdIGRvdWJseSBsaW5rIGFsbCBub2RlcyBvZiB0aGVcbiAgICAgICBzYW1lIGhlaWdodCBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBpcyB1c2VkIG9ubHkgZHVyaW5nIGhlaWdodCBhZGp1c3RtZW50LCBhbmQgaXNcbiAgICAgICBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgYWRqdXN0LWhlaWdodHMgaGVhcC4gIEl0IGhvbGRzIHRoZSBwcmUtYWRqdXN0ZWRcbiAgICAgICBoZWlnaHQgb2YgW3RdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgOyAoKiBbbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIG9mIHRoZSBzYW1lIGhlaWdodCBpbiB0aGVcbiAgICAgICBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAqKVxuICAgIG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW29sZF92YWx1ZV9vcHRdIGlzIHVzZWQgb25seSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgYW5kIG9ubHkgaWZcbiAgICAgICBbdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMF0uICBJdCBob2xkcyB0aGUgcHJlLXN0YWJpbGl6YXRpb24gdmFsdWUgb2YgW3RdLiAgSXRcbiAgICAgICBpcyBjbGVhcmVkIHdoZW4gcnVubmluZyBbdF0ncyBvbi11cGRhdGUgaGFuZGxlcnMsIGFuZCBzbyBpcyBhbHdheXMgW1VvcHQubm9uZV1cbiAgICAgICBiZXR3ZWVuIHN0YWJpbGl6YXRpb25zLiAqKVxuICAgIG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtvYnNlcnZlcnNdIGlzIHRoZSBoZWFkIG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2Ygb2JzZXJ2ZXJzIG9mIFt0XSwgb3JcbiAgICAgICBbVW9wdC5ub25lXSBpZiB0aGVyZSBhcmUgbm8gb2JzZXJ2ZXJzLiAqKVxuICAgIG11dGFibGUgb2JzZXJ2ZXJzIDogKCdhIEludGVybmFsX29ic2VydmVyLnRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgKCogW2lzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBpcyB1c2VkIHRvIGF2b2lkIHB1c2hpbmcgdGhlIHNhbWUgbm9kZSBtdWx0aXBsZVxuICAgICAgIHRpbWVzIG9udG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICA7ICgqIFtvbl91cGRhdGVfaGFuZGxlcnNdIGlzIHRoZSBmdW5jdGlvbnMgc3VwcGxpZWQgdG8gW0luY3JlbWVudGFsLm9uX3VwZGF0ZV0gdG8gYmUgcnVuXG4gICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBtb2R1bGUgW09uX3VwZGF0ZV9oYW5kbGVyXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIGRvZXMgbm90XG4gICAgICAgY29udGFpbiB0aGUgb24tdXBkYXRlIGhhbmRsZXJzIGluIFt0Lm9ic2VydmVyc10uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBvbmx5IGV2ZXJcbiAgICAgICBnZXRzIGxvbmdlcjsgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBwYWNrZWRfc2FtZSAoUGFja2VkLlQgdDEpIChQYWNrZWQuVCB0MikgPSBzYW1lIHQxIHQyXG5sZXQgaXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnlcbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiB0ID0gS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiB0LmtpbmRcbmxldCBpdGVyaV9jaGlsZHJlbiB0IH5mID0gS2luZC5pdGVyaV9jaGlsZHJlbiB0LmtpbmQgfmZcbmxldCBpc192YWxpZCA9IE5vZGUuaXNfdmFsaWRcbmxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA9IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lXG5cbmxldCB1c2VyX2luZm8gdCA9XG4gIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChJbmZvIGkpIC0+IFNvbWUgaVxuICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoSW5mby5jcmVhdGVfcyAoRG90X3VzZXJfaW5mby5zZXhwX29mX3Qgb3RoZXIpKVxuOztcblxubGV0IHNldF91c2VyX2luZm8gdCBpbmZvID1cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIGluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT4gU29tZSAoSW5mbyBpKSlcbjs7XG5cbmxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHQgfmxhYmVsIH5hdHRycyA9XG4gIGxldCBuZXdfID0gRG90X3VzZXJfaW5mby5kb3QgfmxhYmVsIH5hdHRyaWJ1dGVzOmF0dHJzIGluXG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgbmV3X1xuICAgIHwgU29tZSBvdGhlciAtPiBTb21lIChEb3RfdXNlcl9pbmZvLmFwcGVuZCBvdGhlciBuZXdfKSlcbjs7XG5cbmxldCBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50ID1cbiAgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGlsZC5jaGFuZ2VkX2F0IHBhcmVudC5yZWNvbXB1dGVkX2F0ID4gMFxuOztcblxubGV0IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHQgPVxuICBsZXQgaXNfc3RhbGUgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgaWYgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudDp0IHRoZW4gaXNfc3RhbGUgOj0gdHJ1ZSk7XG4gICFpc19zdGFsZVxuOztcblxubGV0IGlzX3N0YWxlIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biAodCA6IGEgdCkgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAoKiBBIGNvbnN0IG5vZGUgaXMgc3RhbGUgb25seSBhdCBpbml0aWFsaXphdGlvbi4gKilcbiAgfCBDb25zdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFRpbWUtYmFzZWQgbm9kZXMgYXJlIGNvbnNpZGVyZWQgc3RhbGUgd2hlbiBbdC5yZWNvbXB1dGVkX2F0XSBpcyBub25lLCB3aGljaCBoYXBwZW5zXG4gICAgIGF0IGluaXRpYWxpemF0aW9uIGFuZCB3aGVuIHRoZSBhbGFybSBtZWNoYW5pc20gbWFrZXMgYSBub2RlIHN0YWxlIChpdCBzZXRzIHRoZVxuICAgICBbdC5yZWNvbXB1dGVkX2F0XSB0byBbU3RhYmlsaXphdGlvbl9udW0ubm9uZV0pLiAqKVxuICB8IEF0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IFNuYXBzaG90IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogV2UgbmV2ZXIgY29uc2lkZXIgYW4gaW52YWxpZGF0ZWQgbm9kZSB0byBiZSBzdGFsZSAtLSB3aGVuIHdlIGludmFsaWRhdGUgYSBub2RlLCB3ZVxuICAgICBpbW1lZGlhdGVseSBwcm9wYWdhdGUgaW52YWxpZGl0eSB0byBpdHMgYW5jZXN0b3JzLiAqKVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogQSBbVmFyXSBub2RlIGlzIHN0YWxlIGlmIGl0IHdhcyBzZXQgc2luY2UgaXQgd2FzIHJlY29tcHV0ZWQuICopXG4gIHwgVmFyIHsgc2V0X2F0OyBfIH0gLT4gU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBzZXRfYXQgdC5yZWNvbXB1dGVkX2F0ID4gMFxuICAoKiBOb2RlcyB0aGF0IGhhdmUgY2hpbGRyZW4uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBCaW5kX21haW4gX1xuICB8IEZyZWV6ZSBfXG4gIHwgSWZfdGhlbl9lbHNlIF9cbiAgfCBKb2luX21haW4gX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBFeHBlcnQgeyBmb3JjZV9zdGFsZTsgXyB9IC0+XG4gICAgZm9yY2Vfc3RhbGVcbiAgICB8fCBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAgIHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbjs7XG5cbmxldCBuZWVkc190b19iZV9jb21wdXRlZCB0ID0gaXNfbmVjZXNzYXJ5IHQgJiYgaXNfc3RhbGUgdFxubGV0IGlzX2luX3JlY29tcHV0ZV9oZWFwIHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAwXG5sZXQgaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0ID0gdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG5cbmxldCBnZXRfcGFyZW50IHQgfmluZGV4ID1cbiAgVW9wdC52YWx1ZV9leG5cbiAgICAoaWYgaW5kZXggPSAwIHRoZW4gdC5wYXJlbnQwIGVsc2UgVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpXG47O1xuXG5sZXQgaXRlcmlfcGFyZW50cyB0IH5mID1cbiAgaWYgdC5udW1fcGFyZW50cyA+IDBcbiAgdGhlbiAoXG4gICAgZiAwIChVb3B0LnZhbHVlX2V4biB0LnBhcmVudDApO1xuICAgIGZvciBpbmRleCA9IDEgdG8gdC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIGYgaW5kZXggKFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSkpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBoYXNfY2hpbGQgdCB+Y2hpbGQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkJykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBjaGlsZCBjaGlsZCcpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX2ludmFsaWRfY2hpbGQgdCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+IGhhcyA6PSAhaGFzIHx8IG5vdCAoaXNfdmFsaWQgY2hpbGQpKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19wYXJlbnQgKHQgOiBfIHQpIH5wYXJlbnQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50JykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBwYXJlbnQgcGFyZW50Jyk7XG4gICFoYXNcbjs7XG5cbmxldCBzaG91bGRfYmVfaW52YWxpZGF0ZWQgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiAqKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQXQgXyAtPiBmYWxzZVxuICB8IEF0X2ludGVydmFscyBfIC0+IGZhbHNlXG4gIHwgQ29uc3QgXyB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBmYWxzZVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogTm9kZXMgd2l0aCBhIGZpeGVkIHNldCBvZiBjaGlsZHJlbiBhcmUgaW52YWxpZCBpZiBhbnkgY2hpbGQgaXMgaW52YWxpZC4gKilcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBGcmVlemUgX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBoYXNfaW52YWxpZF9jaGlsZCB0XG4gICgqIEEgKl9jaGFuZ2Ugbm9kZSBpcyBpbnZhbGlkIGlmIHRoZSBub2RlIGl0IGlzIHdhdGNoaW5nIGZvciBjaGFuZ2VzIGlzIGludmFsaWQgKHNhbWVcbiAgICAgcmVhc29uIGFzIGFib3ZlKS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBbaGFzX2ludmFsaWRfY2hpbGQgdF0uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0KVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICAoKiBbQmluZF9tYWluXSwgW0lmX3RoZW5fZWxzZV0sIGFuZCBbSm9pbl9tYWluXSBhcmUgaW52YWxpZCBpZiB0aGVpciAqX2NoYW5nZSBjaGlsZCBpcyxcbiAgICAgYnV0IG5vdCBuZWNlc3NhcmlseSBpZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgLS0gdGhlIGdyYXBoIG1heSBiZSByZXN0cnVjdHVyZWQgdG9cbiAgICAgYXZvaWQgdGhlIGludmFsaWRpdHkgb2YgdGhvc2UuICopXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdF9jaGFuZ2UpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBFeHBlcnQgXyAtPlxuICAgICgqIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHdlIGRvIGZvciBiaW5kIGFib3ZlLCBleGNlcHQgdGhhdCBhbnkgaW52YWxpZCBjaGlsZCBjYW4gYmVcbiAgICAgICByZW1vdmVkLCBzbyB3ZSBjYW4gb25seSB0ZWxsIGlmIGFuIGV4cGVydCBub2RlIGJlY29tZXMgaW52YWxpZCB3aGVuIGFsbCBpdHNcbiAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBmaXJlZCAod2hpY2ggaW4gcHJhY3RpY2UgbWVhbnMgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gcnVuIGl0KS4gKilcbiAgICBmYWxzZVxuOztcblxubGV0IGZvbGRfb2JzZXJ2ZXJzICh0IDogXyB0KSB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIGxldCBhYyA9IHJlZiBpbml0IGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBhYyA6PSBmICFhYyBvYnNlcnZlclxuICBkb25lO1xuICAhYWNcbjs7XG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID0gZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDooKSB+ZjooZnVuICgpIG9ic2VydmVyIC0+IGYgb2JzZXJ2ZXIpXG5cbmxldCBpbnZhcmlhbnQgKHR5cGUgYSkgKGludmFyaWFudF9hIDogYSAtPiB1bml0KSAodCA6IGEgdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIFsldGVzdF9lcTogYm9vbF0gKG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQpIChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KTtcbiAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IFNjb3BlLmhlaWdodCB0LmNyZWF0ZWRfaW4pO1xuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBjaGlsZC5oZWlnaHQpO1xuICAgICAgICBhc3NlcnQgKGhhc19wYXJlbnQgY2hpbGQgfnBhcmVudDp0KSk7XG4gICAgICBhc3NlcnQgKG5vdCAoc2hvdWxkX2JlX2ludmFsaWRhdGVkIHQpKSk7XG4gICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQpIC0+XG4gICAgICBhc3NlcnQgKGhhc19jaGlsZCBwYXJlbnQgfmNoaWxkOnQpO1xuICAgICAgYXNzZXJ0IChpc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPCBwYXJlbnQuaGVpZ2h0KSk7XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDooY2hlY2sgTm9kZV9pZC5pbnZhcmlhbnQpXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+cmVjb21wdXRlZF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfnZhbHVlX29wdDpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfb3B0IC0+XG4gICAgICAgICAgIGlmIGlzX3ZhbGlkIHQgJiYgbm90IChpc19zdGFsZSB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIHZhbHVlX29wdCk7XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIHZhbHVlX29wdCkpXG4gICAgICB+a2luZDpcbiAgICAgICAgKGNoZWNrIChmdW4ga2luZCAtPlxuICAgICAgICAgICBLaW5kLmludmFyaWFudCBpbnZhcmlhbnRfYSBraW5kO1xuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgfCBFeHBlcnQgZSAtPlxuICAgICAgICAgICAgIEV4cGVydC5pbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZVxuICAgICAgICAgICAgICAgICAgKFVuaWZvcm1fYXJyYXkuZ2V0IHBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5wYXJlbnQwOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQwIC0+XG4gICAgICAgICAgIFsldGVzdF9lcTogYm9vbF0gKHQubnVtX3BhcmVudHMgPiAwKSAoVW9wdC5pc19zb21lIHBhcmVudDApKSlcbiAgICAgIH5jcmVhdGVkX2luOihjaGVjayBTY29wZS5pbnZhcmlhbnQpXG4gICAgICB+bmV4dF9ub2RlX2luX3NhbWVfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIC0+XG4gICAgICAgICAgIGlmIFNjb3BlLmlzX3RvcCB0LmNyZWF0ZWRfaW4gfHwgbm90IChpc192YWxpZCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlKSkpXG4gICAgICB+aGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHQgLT5cbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHQgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSAwKSBlbHNlIGFzc2VydCAoaGVpZ2h0ID0gLTEpKSlcbiAgICAgIH5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAtMSk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDw9IHQuaGVpZ2h0KSkpXG4gICAgICB+cHJldl9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIHByZXYpID0gVW9wdC52YWx1ZV9leG4gcHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBwcmV2LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5uZXh0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5leHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICBpZiBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8IHQuaGVpZ2h0KSkpXG4gICAgICB+bmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApXG4gICAgICAgICAgIGVsc2UgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgbmV4dCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgQXJyYXkuaXRlciBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIEFycmF5Lml0ZXIgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gICAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID1cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyIHQgfmY6KGZ1biBub2RlIC0+IHIgOj0gIXIgKyBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAhclxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFkanVzdF9oZWlnaHRzX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2Rlc19ieV9oZWlnaHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA9IE5vZGVzX2J5X2hlaWdodC5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpKSlcbiAgICAgIH5oZWlnaHRfbG93ZXJfYm91bmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpO1xuICAgICAgICAgICBmb3IgaGVpZ2h0ID0gMCB0byBoZWlnaHRfbG93ZXJfYm91bmQgLSAxIGRvXG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1heF9oZWlnaHRfc2VlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2hlaWdodF9zZWVuIC0+XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpKVxuICAgICAgfm5vZGVzX2J5X2hlaWdodDooY2hlY2sgTm9kZXNfYnlfaGVpZ2h0LmludmFyaWFudCkpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbWF4X2hlaWdodF9zZWVuID0gMFxuICA7IG5vZGVzX2J5X2hlaWdodCA9IE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuICB9XG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIG1heF9oZWlnaHRfYWxsb3dlZCA8IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgbGVzcyB0aGFuIHRoZSBtYXggaGVpZ2h0IGFscmVhZHkgc2VlblwiXG4gICAgICAobWF4X2hlaWdodF9hbGxvd2VkLCBgbWF4X2hlaWdodF9zZWVuIHQubWF4X2hlaWdodF9zZWVuKVxuICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXhfaGVpZ2h0X3NlZW4gb2YgaW50IF1dO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuOztcblxubGV0IGFkZF91bmxlc3NfbWVtICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgdGhlbiAoXG4gICAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gICAgKCogV2UgcHJvY2VzcyBub2RlcyBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHByZS1hZGp1c3RlZCBoZWlnaHQsIHNvIGl0IGlzIGEgYnVnIGlmIHdlXG4gICAgICAgZXZlciB0cnkgdG8gYWRkIGEgbm9kZSB0aGF0IHdvdWxkIHZpb2xhdGUgdGhhdC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKTtcbiAgICAoKiBXaGVuZXZlciB3ZSBzZXQgYSBub2RlJ3MgaGVpZ2h0LCB3ZSB1c2UgW3NldF9oZWlnaHRdLCB3aGljaCBlbmZvcmNlcyB0aGlzLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gaGVpZ2h0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQ7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKSlcbjs7XG5cbmxldCByZW1vdmVfbWluX2V4biB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnICYmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWRqdXN0X2hlaWdodHNfaGVhcC5yZW1vdmVfbWluIG9mIGVtcHR5IGhlYXBcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCByID0gcmVmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgIXIpIGRvXG4gICAgaW5jciByXG4gIGRvbmU7XG4gIGxldCBoZWlnaHQgPSAhciBpblxuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSBpblxuICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA7XG4gIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVvcHQubm9uZTtcbiAgVCBub2RlXG47O1xuXG5sZXQgc2V0X2hlaWdodCB0IChub2RlIDogXyBOb2RlLnQpIGhlaWdodCA9XG4gIGlmIGhlaWdodCA+IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW4gKFxuICAgIHQubWF4X2hlaWdodF9zZWVuIDwtIGhlaWdodDtcbiAgICBpZiBoZWlnaHQgPiBtYXhfaGVpZ2h0X2FsbG93ZWQgdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwibm9kZSB3aXRoIHRvbyBsYXJnZSBoZWlnaHRcIlxuICAgICAgICAoYEhlaWdodCBoZWlnaHQsIGBNYXggKG1heF9oZWlnaHRfYWxsb3dlZCB0KSlcbiAgICAgICAgWyVzZXhwX29mOiBbIGBIZWlnaHQgb2YgaW50IF0gKiBbIGBNYXggb2YgaW50IF1dKTtcbiAgbm9kZS5oZWlnaHQgPC0gaGVpZ2h0XG47O1xuXG5sZXQgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGlmIE5vZGUuc2FtZSBwYXJlbnQgb3JpZ2luYWxfY2hpbGRcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhZGRpbmcgZWRnZSBtYWRlIGdyYXBoIGN5Y2xpY1wiXG4gICAgICAoYGNoaWxkIG9yaWdpbmFsX2NoaWxkLCBgcGFyZW50IG9yaWdpbmFsX3BhcmVudClcbiAgICAgIFslc2V4cF9vZjogWyBgY2hpbGQgb2YgXyBOb2RlLnQgXSAqIFsgYHBhcmVudCBvZiBfIE5vZGUudCBdXTtcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlbiAoXG4gICAgYWRkX3VubGVzc19tZW0gdCBwYXJlbnQ7XG4gICAgKCogV2Ugc2V0IFtwYXJlbnQuaGVpZ2h0XSBhZnRlciBhZGRpbmcgW3BhcmVudF0gdG8gdGhlIGhlYXAsIHNvIHRoYXQgW3BhcmVudF0gZ29lc1xuICAgICAgIGluIHRoZSBoZWFwIHdpdGggaXRzIHByZS1hZGp1c3RlZCBoZWlnaHQuICopXG4gICAgc2V0X2hlaWdodCB0IHBhcmVudCAoY2hpbGQuaGVpZ2h0ICsgMSkpXG47O1xuXG5sZXQgYWRqdXN0X2hlaWdodHNcbiAgICAgICh0eXBlIGEgYilcbiAgICAgIHRcbiAgICAgIHJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGQ6KG9yaWdpbmFsX2NoaWxkIDogYSBOb2RlLnQpXG4gICAgICB+cGFyZW50OihvcmlnaW5hbF9wYXJlbnQgOiBiIE5vZGUudClcbiAgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPj0gb3JpZ2luYWxfcGFyZW50LmhlaWdodCk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIG9yaWdpbmFsX3BhcmVudC5oZWlnaHQ7XG4gIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICB0XG4gICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgfm9yaWdpbmFsX3BhcmVudFxuICAgIH5jaGlsZDpvcmlnaW5hbF9jaGlsZFxuICAgIH5wYXJlbnQ6b3JpZ2luYWxfcGFyZW50O1xuICB3aGlsZSBsZW5ndGggdCA+IDAgZG9cbiAgICBsZXQgKFQgY2hpbGQpID0gcmVtb3ZlX21pbl9leG4gdCBpblxuICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgY2hpbGRcbiAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmluY3JlYXNlX2hlaWdodCByZWNvbXB1dGVfaGVhcCBjaGlsZDtcbiAgICBpZiBjaGlsZC5udW1fcGFyZW50cyA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gY2hpbGQucGFyZW50MCBpblxuICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50O1xuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gY2hpbGQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50XG4gICAgICBkb25lKTtcbiAgICBtYXRjaCBjaGlsZC5raW5kIHdpdGhcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSB7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczsgXyB9IC0+XG4gICAgICBsZXQgciA9IHJlZiBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZV9vbl9yaHNcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgICAgICAgICAgfm9yaWdpbmFsX3BhcmVudFxuICAgICAgICAgICAgfmNoaWxkXG4gICAgICAgICAgICB+cGFyZW50Om5vZGVfb25fcmhzXG4gICAgICBkb25lXG4gICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA8IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS5BY3Rpb24udCA9XG4gICAgfCBBdCBvZiBBdC50XG4gICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICAgIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGlnbm9yZSBzbmFwc2hvdFxuICAgIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaWdub3JlIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLnQgPVxuICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gIDsgKCogW25leHRfZmlyZWRdIHNpbmdseSBsaW5rcyBhbGwgYWxhcm0gdmFsdWVzIHRoYXQgZmlyZSBkdXJpbmcgYSBzaW5nbGUgY2FsbCB0b1xuICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiAodCBVb3B0LnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlciB+YWN0aW9uOihjaGVjayBBY3Rpb24uaW52YXJpYW50KSB+bmV4dF9maXJlZDppZ25vcmUpXG47O1xuXG5sZXQgY3JlYXRlIGFjdGlvbiA9IHsgYWN0aW9uOyBuZXh0X2ZpcmVkID0gVW9wdC5ub25lIH1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb25maWdfaW50ZlxuXG5tb2R1bGUgRGVmYXVsdCAoKSA9IHN0cnVjdFxuICBsZXQgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IHRydWVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcblxubW9kdWxlIFBhY2tlZF8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5QYWNrZWRcblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIHw+IFslc2V4cF9vZjogXyBUeXBlcy5Ob2RlLnRdXG4gIDs7XG5cbiAgbGV0IHByZXZfaW5fYWxsIChUIHQpID0gdC5wcmV2X2luX2FsbFxuICBsZXQgbmV4dF9pbl9hbGwgKFQgdCkgPSB0Lm5leHRfaW5fYWxsXG4gIGxldCBzZXRfcHJldl9pbl9hbGwgKFQgdDEpIHQyID0gdDEucHJldl9pbl9hbGwgPC0gdDJcbiAgbGV0IHNldF9uZXh0X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5uZXh0X2luX2FsbCA8LSB0MlxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5TdGF0ZS50ID1cbiAgICB8IENyZWF0ZWRcbiAgICB8IEluX3VzZVxuICAgIHwgRGlzYWxsb3dlZFxuICAgIHwgVW5saW5rZWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgeyAoKiBTdGF0ZSB0cmFuc2l0aW9uczpcblxuICAgICAgIHt2XG4gICAgICAgICBDcmVhdGVkIC0tPiBJbl91c2UgLS0+IERpc2FsbG93ZWQgLS0+IFVubGlua2VkXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICBcXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vXG4gICAgICAgdn0gKilcbiAgICBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgKCogW3twcmV2LG5leHR9X2luX2FsbF0gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBpbiBbc3RhdGUuYWxsX29ic2VydmVyc10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9vYnNlcnZpbmddIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgb2YgW29ic2VydmluZ10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC5vYnNlcnZpbmcuc3RhdGVcblxubGV0IHVzZV9pc19hbGxvd2VkIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+IHRydWVcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gZmFsc2Vcbjs7XG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHNhbWVfYXNfcGFja2VkICh0MSA6IF8gdCkgKFBhY2tlZF8uVCB0MikgPSBzYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5vYnNlcnZpbmc6KGNoZWNrIChOb2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBvbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgQ3JlYXRlZCB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKExpc3QuaXNfZW1wdHkgb25fdXBkYXRlX2hhbmRsZXJzKSkpXG4gICAgICB+cHJldl9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ubmV4dF9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fYWxsKSkpKSkpXG4gICAgICB+bmV4dF9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ucHJldl9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWxsKSkpKSkpXG4gICAgICB+cHJldl9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAobmV4dF9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fb2JzZXJ2aW5nKSkpKSkpXG4gICAgICB+bmV4dF9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAocHJldl9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fb2JzZXJ2aW5nKSkpKSkpKVxuOztcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgZGlzYWxsb3dfZnV0dXJlX3VzZVwiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBJbl91c2UgLT5cbiAgICBsZXQgdW9wdCA9IHQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIGdldCB2YWx1ZSBvZiBhbiBpbnZhbGlkIG5vZGVcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICBVb3B0LnVuc2FmZV92YWx1ZSB1b3B0XG47O1xuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJvbl91cGRhdGUgZGlzYWxsb3dlZFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPlxuICAgIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgICgqIFdlJ2xsIGJ1bXAgW29ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aGVuIFt0XSBpcyBhY3R1YWxseSBhZGRlZCB0b1xuICAgICAgICAgIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAoKVxuICAgICB8IEluX3VzZSAtPlxuICAgICAgIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMSlcbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX29ic2VydmluZyBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9vYnNlcnZpbmcgaW5cbiAgdC5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KS5wcmV2X2luX29ic2VydmluZyA8LSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KS5uZXh0X2luX29ic2VydmluZyA8LSBuZXh0O1xuICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgaWYgcGh5c19lcXVhbCB0IChVb3B0LnZhbHVlX2V4biBvYnNlcnZpbmcub2JzZXJ2ZXJzKSB0aGVuIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gbmV4dDtcbiAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgLSBMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9hbGwgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX2FsbCBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9hbGwgaW5cbiAgdC5wcmV2X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIFBhY2tlZF8uc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIFBhY2tlZF8uc2V0X25leHRfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KSBuZXh0XG47O1xuXG5sZXQgdW5saW5rIHQgPVxuICB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdDtcbiAgdW5saW5rX2Zyb21fYWxsIHRcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYWNrZWRfXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyIHw+IFslc2V4cF9vZjogXyBpbnRlcm5hbF9vYnNlcnZlcl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSAhdFxubGV0IG9ic2VydmluZyB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nICF0XG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9IEludGVybmFsX29ic2VydmVyLnVzZV9pc19hbGxvd2VkICF0XG5sZXQgdmFsdWVfZXhuIHQgPSBJbnRlcm5hbF9vYnNlcnZlci52YWx1ZV9leG4gIXRcbmxldCBpbmNyX3N0YXRlIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlICF0XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBJbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfZXhuICF0IG9uX3VwZGF0ZV9oYW5kbGVyXG47O1xuIiwiKCogW1N0YXRlXSBkZWZpbmVzIHRoZSBnbG9iYWwgc3RhdGUgb2Ygd2hpY2ggdGhlcmUgaXMgb25lIGluc3RhbmNlIGZvciBlYWNoIGNhbGwgdG9cbiAgIFtJbmNyZW1lbnRhbC5NYWtlXS5cblxuICAgVGhpcyBtb2R1bGUgZG9lcyBub3QgaGF2ZSBhbiBtbGkgYmVjYXVzZSBpdCB3b3VsZCBlc3NlbnRpYWxseSBkdXBsaWNhdGVcbiAgIFtJbmNyZW1lbnRhbC5TXSwgZXhjZXB0IGFkZGluZyBhbiBleHRyYSBbU3RhdGUudF0gYXJndW1lbnQgdG8gZnVuY3Rpb25zLiAqKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxudHlwZSBzdGF0dXMgPSBUeXBlcy5TdGF0dXMudCA9XG4gIHwgU3RhYmlsaXppbmdcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICB8IE5vdF9zdGFiaWxpemluZ1xuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbm1vZHVsZSBSdW5fb25fdXBkYXRlX2hhbmRsZXJzID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBOb2RlX3VwZGF0ZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IChUIChub2RlLCBfbm9kZV91cGRhdGUpIGFzIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9ubHlfaW5fZGVidWcgPSBzdHJ1Y3RcbiAgKCogRXh0cmEgc3RhdGUga2VwdCBvbmx5IHdoZW4gW2RlYnVnXSBmb3IgdGhlIHB1cnBvc2Ugb2Ygd3JpdGluZyBhc3NlcnRpb25zLiAqKVxuICB0eXBlIHQgPSBUeXBlcy5Pbmx5X2luX2RlYnVnLnQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5jdXJyZW50bHlfcnVubmluZ19ub2RlOmlnbm9yZVxuICAgICAgICB+ZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX25vZGUgPSBOb25lOyBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPSBbXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFBhY2tlZF93ZWFrX2hhc2h0YmwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUGFja2VkX3dlYWtfaGFzaHRibC50ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSB0ID0gVHlwZXMuU3RhdGUudCA9XG4gIHsgbXV0YWJsZSBzdGF0dXMgOiBzdGF0dXNcbiAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICA7ICgqIFtzdGFiaWxpemF0aW9uX251bV0gc3RhcnRzIGF0IHplcm8sIGFuZCBpcyBpbmNyZW1lbnRlZCBhdCB0aGUgZW5kIG9mIGVhY2hcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgOyAoKiBbcHJvcGFnYXRlX2ludmFsaWRpdHldIGhvbGRzIG5vZGVzIHRoYXQgaGF2ZSBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgY29uc2lkZXJlZCBmb3IgaW52YWxpZGF0aW9uLiAgSXQgaXMgb25seSB1c2VkIGR1cmluZyBncmFwaCByZXN0cnVjdHVyaW5nOlxuICAgICAgIFtpbnZhbGlkYXRlX25vZGVdIGFuZCBbYWRkX3BhcmVudF0uICBPbmNlIGFuIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0YWNrLCB3ZSB0aGVuXG4gICAgICAgaXRlcmF0ZSB1bnRpbCBpbnZhbGlkaXR5IGhhcyBwcm9wYWdhdGVkIHRvIGFsbCBhbmNlc3RvcnMgYXMgbmVjZXNzYXJ5LCBhY2NvcmRpbmcgdG9cbiAgICAgICBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdLiAqKVxuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW251bV9hY3RpdmVfb2JzZXJ2ZXJzXSBpcyB0aGUgbnVtYmVyIG9mIG9ic2VydmVycyB3aG9zZSBzdGF0ZSBpcyBbQ3JlYXRlZF0gb3JcbiAgICAgICBbSW5fdXNlXS4gKilcbiAgICBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gIDsgKCogW2FsbF9vYnNlcnZlcnNdIGlzIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgYWxsIG9ic2VydmVycyBpbiBlZmZlY3QsIG9yIHRoYXQgaGF2ZVxuICAgICAgIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmVcbiAgICAgICBbc3RhdGVdIGFzIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBXZSBlbnF1ZXVlIGZpbmFsaXplZCBvYnNlcnZlcnMgaW4gYSB0aHJlYWQtc2FmZSBxdWV1ZSwgZm9yIGhhbmRsaW5nIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24uICBXZSB1c2UgYSB0aHJlYWQtc2FmZSBxdWV1ZSBiZWNhdXNlIE9DYW1sIGZpbmFsaXplcnMgY2FuIHJ1biBpbiBhbnlcbiAgICAgICB0aHJlYWQuICopXG4gICAgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyAoKiBbbmV3X29ic2VydmVyc10gaG9sZHMgb2JzZXJ2ZXJzIGNyZWF0ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGFcbiAgICAgICBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlXSBhcyBbQ3JlYXRlZF0gb3IgW1VubGlua2VkXS4gIEF0IHRoZSBzdGFydCBvZlxuICAgICAgIHN0YWJpbGl6YXRpb24sIHdlIGxpbmsgaW50byBbYWxsX29ic2VydmVyc10gYWxsIG9ic2VydmVycyBpbiBbbmV3X29ic2VydmVyc10gd2hvc2VcbiAgICAgICBzdGF0ZSBpcyBbQ3JlYXRlZF0gYW5kIGFkZCB0aGVtIHRvIHRoZSBbb2JzZXJ2ZXJzXSBvZiB0aGUgbm9kZSB0aGV5IGFyZSBvYnNlcnZpbmcuXG4gICAgICAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyBvYnNlcnZlcnMgdG8gYmUgY3JlYXRlZCBkdXJpbmcgc3RhYmlsaXphdGlvblxuICAgICAgIHdoaWxlIHJ1bm5pbmcgdXNlciBjb2RlIChbbWFwXSwgW2JpbmRdLCBldGMpLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoIG5vZGVzXG4gICAgICAgYmVjb21pbmcgbmVjZXNzYXJ5IGFuZCB0aGUgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbZGlzYWxsb3dlZF9vYnNlcnZlcnNdIGhvbGRzIGFsbCBvYnNlcnZlcnMgdGhhdCBoYXZlIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdFxuICAgICAgIHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGUgPSBEaXNhbGxvd2VkXS4gIEF0IHRoZSBzdGFydFxuICAgICAgIG9mIHN0YWJpbGl6YXRpb24sIHRoZXNlIGFyZSB1bmxpbmtlZCBmcm9tIFthbGxfb2JzZXJ2ZXJzXSBhbmQgdGhlaXIgc3RhdGUgaXNcbiAgICAgICBjaGFuZ2VkIHRvIFtVbmxpbmtlZF0uICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IHVzZXIgY29kZSBydW5uaW5nXG4gICAgICAgZHVyaW5nIHN0YWJpbGl6YXRpb24gdG8gY2FsbCBbZGlzYWxsb3dfZnV0dXJlX3VzZV0sIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGhcbiAgICAgICBub2RlcyBiZWNvbWluZyB1bm5lY2Vzc2FyeSBhbmQgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogV2UgZGVsYXkgYWxsIFtWYXIuc2V0XSBjYWxscyB0aGF0IGhhcHBlbiBkdXJpbmcgc3RhYmlsaXphdGlvbiBzbyB0aGF0IHRoZXkgdGFrZVxuICAgICAgIGVmZmVjdCBhZnRlciBzdGFiaWxpemF0aW9uLiAgQWxsIHZhcmlhYmxlcyBzZXQgZHVyaW5nIHN0YWJpbGl6YXRpb24gYXJlIHB1c2hlZCBvblxuICAgICAgIFtzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHJhdGhlciB0aGFuIHNldHRpbmcgdGhlbS4gIFRoZW4sIGFmdGVyIHRoZSBncmFwaCBoYXNcbiAgICAgICBzdGFiaWxpemVkLCB3ZSBkbyBhbGwgdGhlIHNldHMsIHNvIHRoYXQgdGhleSB0YWtlIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBoYXMgYWxsIG5vZGVzIHdpdGggaGFuZGxlcnMgdG8gY29uc2lkZXIgcnVubmluZyBhdCB0aGVcbiAgICAgICBlbmQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gIEF0IHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgd2UgY29uc2lkZXIgZWFjaCBub2RlXG4gICAgICAgaW4gW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgYW5kIGlmIHdlIGRlY2lkZSB0byBydW4gaXRzIG9uLXVwZGF0ZSBoYW5kbGVycyxcbiAgICAgICBwdXNoIGl0IG9uIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gIFRoZW4sIG9uY2Ugd2UndmUgY29uc2lkZXJlZCBhbGwgbm9kZXMgaW5cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCB3ZSBpdGVyYXRlIHRocm91Z2ggW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdIGFuZFxuICAgICAgIGFjdHVhbGx5IHJ1biB0aGUgaGFuZGxlcnMuXG5cbiAgICAgICBUaGVzZSB0d28gcGFzc2VzIGFyZSBlc3NlbnRpYWwgZm9yIGNvcnJlY3RuZXNzLiAgRHVyaW5nIHRoZSBmaXJzdCBwYXNzLCB3ZSBoYXZlbid0XG4gICAgICAgcnVuIGFueSB1c2VyIGhhbmRsZXJzLCBzbyB3ZSBrbm93IHRoYXQgdGhlIHN0YXRlIGlzIGV4YWN0bHkgYXMgaXQgd2FzIHdoZW5cbiAgICAgICBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgSW4gcGFydGljdWxhciwgd2Uga25vdyB0aGF0IGlmIGEgbm9kZSBpcyBuZWNlc3NhcnksIHRoZW5cbiAgICAgICBpdCBoYXMgYSBzdGFibGUgdmFsdWU7IG9uY2UgdXNlciBoYW5kbGVycyBydW4sIHdlIGRvbid0IGtub3cgdGhpcy4gIER1cmluZyB0aGVcbiAgICAgICBzZWNvbmQgcGFzcywgdXNlciBoYW5kbGVycyBjYW4gbWFrZSBjYWxscyB0byBhbnkgaW5jcmVtZW50YWwgZnVuY3Rpb24gZXhjZXB0IGZvclxuICAgICAgIFtzdGFiaWxpemVdLiAgSW4gcGFydGljdWxhciwgc29tZSBmdW5jdGlvbnMgcHVzaCBub2RlcyBvblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICBCdXQgbm8gZnVuY3Rpb25zIChleGNlcHQgZm9yIFtzdGFiaWxpemVdKSBtb2RpZnlcbiAgICAgICBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICopXG4gICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gIDsgKCogU3RhdHMuICBUaGVzZSBhcmUgYWxsIGluY3JlbWVudGVkIGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSwgYW5kIG5ldmVyIGRlY3JlbWVudGVkLiAqKVxuICAgIG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkNsb2NrLnQgPVxuICAgIHsgKCogV2UgdXNlIFt0aW1pbmdfd2hlZWxdIGZvciB0aW1lLWJhc2VkIGluY3JlbWVudGFscy4gIFtub3ddIGlzIGEgdmFyaWFibGUgaG9sZGluZ1xuICAgICAgICAgdGhlIGN1cnJlbnQgdGltZS4gIFtoYW5kbGVfZmlyZWRdIGlzIHRoZSBjbG9zdXJlIHBhc3NlZCB0b1xuICAgICAgICAgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gIEl0IGxpbmtzIGFsbCB0aGUgZmlyZWQgYWxhcm0gdmFsdWVzIGludG9cbiAgICAgICAgIFtmaXJlZF9hbGFybV92YWx1ZXNdLiAgQWZ0ZXIgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXSByZXR1cm5zLCBpdCB0aGVuXG4gICAgICAgICB3YWxrcyB0aHJvdWdoIHRoZSBsaW5rZWQgbGlzdCBhbmQgYWN0dWFsbHkgZmlyZXMgdGhlbS4gIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXNcbiAgICAgICAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uZSBpcyBub3QgYWxsb3dlZCB0byBjYWxsIFtUaW1pbmdfd2hlZWxdIGZ1bmN0aW9ucyBmcm9tIHRoZVxuICAgICAgICAgW2hhbmRsZV9maXJlZF0gdGhhdCBvbmUgcGFzc2VzIHRvIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICopXG4gICAgICB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5ub3c6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKG5vdyA6IF8gVmFyLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLmVxdWFsIG5vdy52YWx1ZSAoVGltaW5nX3doZWVsLm5vdyB0LnRpbWluZ193aGVlbCkpKSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmZpcmVkX2FsYXJtX3ZhbHVlczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJlZF9hbGFybV92YWx1ZXMgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgZmlyZWRfYWxhcm1fdmFsdWVzKSkpXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KGNoZWNrIChUaW1pbmdfd2hlZWwuaW52YXJpYW50IEFsYXJtX3ZhbHVlLmludmFyaWFudCkpKVxuICA7O1xuXG4gIGxldCBpbmNyX3N0YXRlIHQgPSBWYXIuaW5jcl9zdGF0ZSB0Lm5vd1xuZW5kXG5cbmxldCBub3cgKGNsb2NrIDogQ2xvY2sudCkgPSBjbG9jay5ub3cudmFsdWVcbmxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoIChjbG9jayA6IENsb2NrLnQpID0gVGltaW5nX3doZWVsLmxlbmd0aCBjbG9jay50aW1pbmdfd2hlZWxcbmxldCBudW1fc3RhYmlsaXplcyB0ID0gU3RhYmlsaXphdGlvbl9udW0udG9faW50IHQuc3RhYmlsaXphdGlvbl9udW1cbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxubGV0IG1heF9oZWlnaHRfc2VlbiB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X3NlZW4gdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfb2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQubmV4dF9pbl9hbGwgb2JzZXJ2ZXI7XG4gICAgZiBvYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgZGlyZWN0bHlfb2JzZXJ2ZWQgdCA9XG4gIGxldCByIDogTm9kZS5QYWNrZWQudCBsaXN0IHJlZiA9IHJlZiBbXSBpblxuICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgciA6PSBUIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyA6OiAhcik7XG4gICFyXG47O1xuXG5sZXQgc2F2ZV9kb3QgdCBvdXQgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdCBvdXQgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgc2F2ZV9kb3RfdG9fZmlsZSB0IGZpbGUgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdF90b19maWxlIGZpbGUgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mID0gTm9kZS5QYWNrZWQuaXRlcl9kZXNjZW5kYW50cyAoZGlyZWN0bHlfb2JzZXJ2ZWQgdCkgfmZcblxubW9kdWxlIFN0YXRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXhfbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgOiAoaW50ICogUGVyY2VudC50KSBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbmxldCBzdGF0cyB0ID1cbiAgbGV0IG1heF9udW1fcGFyZW50cyA9IHJlZiAoLTEpIGluXG4gIGxldCBudW1fbmVjZXNzYXJ5X25vZGVzID0gcmVmIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBpbmNyIG51bV9uZWNlc3Nhcnlfbm9kZXM7XG4gICAgbWF4X251bV9wYXJlbnRzIDo9IEludC5tYXggIW1heF9udW1fcGFyZW50cyBub2RlLm51bV9wYXJlbnRzKTtcbiAgbGV0IG1heF9udW1fcGFyZW50cyA9ICFtYXhfbnVtX3BhcmVudHMgaW5cbiAgbGV0IG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyA9IEFycmF5LmNyZWF0ZSB+bGVuOihtYXhfbnVtX3BhcmVudHMgKyAxKSAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgbGV0IG51bV9wYXJlbnRzID0gbm9kZS5udW1fcGFyZW50cyBpblxuICAgIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpIDwtIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpICsgMSk7XG4gIGxldCBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzID1cbiAgICBBcnJheS5mb2xkaSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgfmluaXQ6W10gfmY6KGZ1biBpIGFjIG51bV9ub2RlcyAtPlxuICAgICAgaWYgbnVtX25vZGVzID0gMFxuICAgICAgdGhlbiBhY1xuICAgICAgZWxzZSAoaSwgUGVyY2VudC5vZl9tdWx0IChmbG9hdCBudW1fbm9kZXMgLy4gZmxvYXQgIW51bV9uZWNlc3Nhcnlfbm9kZXMpKSA6OiBhYylcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICB7IFN0YXRzLm1heF9udW1fcGFyZW50czsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyB9XG47O1xuXG5sZXQgYW1fc3RhYmlsaXppbmcgdCA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIC0+IHRydWVcbiAgfCBOb3Rfc3RhYmlsaXppbmcgLT4gZmFsc2VcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3QgY2FsbCBhbV9zdGFiaWxpemluZyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgICAoY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiIG5hbWUpXG4gICAgICAocmFpc2VkX2V4biwgYmFja3RyYWNlKVxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnQgKiBCYWNrdHJhY2UudF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBhcmUgbmV2ZXIgcHVzaGVkIG9uIHRoZSBzdGFjayAqKSkpO1xuICAgICAgICAoKiBXZSBkbyBub3QgY2hlY2sgW05vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZV0gaGVyZSwgYmVjYXVzZSBpdCBzaG91bGQgYmVcbiAgICAgICAgICAgdHJ1ZSwgYW5kIGJlY2F1c2UgY29tcHV0aW5nIGl0IHRha2VzIE8obnVtYmVyIG9mIGNoaWxkcmVuKSwgbm9kZSBjYW4gYmUgcHVzaGVkXG4gICAgICAgICAgIG9uIHRoZSBzdGFjayBvbmNlIHBlciBjaGlsZCwgYW5kIGV4cGVydCBub2RlcyBjYW4gaGF2ZSBsb3RzIG9mIGNoaWxkcmVuLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICBkb25lXG47O1xuXG4oKiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIHQgfmNoaWxkIH5wYXJlbnRdIGFkZHMgW3BhcmVudF0gYXMgYSBwYXJlbnQgb2ZcbiAgIFtjaGlsZF0sIGFuZCBtYWtlcyBbY2hpbGRdIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIG5lY2Vzc2FyeSwgZW5zdXJpbmcgdGhlaXIgaGVpZ2h0c1xuICAgYXJlIGFjY3VyYXRlLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIGFib3V0IHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIFtjaGlsZF0gYW5kIFtwYXJlbnRdXG4gICB0aG91Z2guICopXG5sZXQgcmVjIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIE5vZGUudCAtPiBwYXJlbnQ6YiBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQgaW5cbiAgTm9kZS5hZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIGNoaWxkKSB0aGVuIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoVCBwYXJlbnQpO1xuICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgZSB+Y2hpbGRfaW5kZXhcbiAgfCBfIC0+ICgpXG5cbmFuZCBiZWNhbWVfbmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgKCogW1Njb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW5dIGlzIHRydWUgKGFzc3VtaW5nIHRoZSBzY29wZSBpdHNlbGYgaXMgdmFsaWQpXG4gICAgIGJlY2F1c2UgW05vZGUuaXRlcl9jaGlsZHJlbl0gYmVsb3cgZmlyc3QgdmlzaXRzIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmQgbm9kZXMgYW5kXG4gICAgIHRoZW4gdGhlIHJocy4gKilcbiAgaWYgTm9kZS5pc192YWxpZCBub2RlICYmIG5vdCAoU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbilcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUcnlpbmcgdG8gbWFrZSBhIG5vZGUgbmVjZXNzYXJ5IHdob3NlIGRlZmluaW5nIGJpbmQgaXMgbm90IG5lY2Vzc2FyeVwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSArIDE7XG4gIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAoKiBTaW5jZSBbbm9kZV0gYmVjYW1lIG5lY2Vzc2FyeSwgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50LCB3ZSBuZWVkIHRvOlxuXG4gICAgIC0gYWRkIHBhcmVudCBwb2ludGVycyB0byBbbm9kZV0gZnJvbSBpdHMgY2hpbGRyZW4uXG4gICAgIC0gc2V0IFtub2RlXSdzIGhlaWdodC5cbiAgICAgLSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcCwgaWYgbmVjZXNzYXJ5LiAqKVxuICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgTm9kZS5pdGVyaV9jaGlsZHJlbiBub2RlIH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4O1xuICAgICgqIE5vdyB0aGF0IGNoaWxkIGlzIG5lY2Vzc2FyeSwgaXQgc2hvdWxkIGhhdmUgYSB2YWxpZCBoZWlnaHQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLmhlaWdodCA+PSAwKTtcbiAgICBpZiBjaGlsZC5oZWlnaHQgPj0gbm9kZS5oZWlnaHQgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgKGNoaWxkLmhlaWdodCArIDEpKTtcbiAgKCogTm93IHRoYXQgdGhlIGhlaWdodCBpcyBjb3JyZWN0LCBtYXliZSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcC4gIFtub2RlXVxuICAgICBqdXN0IGJlY2FtZSBuZWNlc3NhcnksIHNvIGl0IGNhbid0IGhhdmUgYmVlbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBTaW5jZSBbbm9kZV1cbiAgICAgaXMgbmVjZXNzYXJ5LCB3ZSBzaG91bGQgYWRkIGl0IHRvIHRoZSByZWNvbXB1dGUgaGVhcCBpZmYgaXQgaXMgc3RhbGUuICopXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSk7XG4gIGlmIE5vZGUuaXNfc3RhbGUgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOnRydWVcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmVjYW1lX25lY2Vzc2FyeSBub2RlID1cbiAgYmVjYW1lX25lY2Vzc2FyeSBub2RlO1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSBub2RlLnN0YXRlXG47O1xuXG5sZXQgYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBwYXJlbnQuc3RhdGUgaW5cbiAgKCogSW4gdGhlIGNhc2Ugd2hlbiB0aGUgZWRnZSBiZWluZyBhZGRlZCBjcmVhdGVzIGEgY3ljbGUsIGl0IGlzIHBvc3NpYmxlIGZvciB0aGVcbiAgICAgcmVjdXJzaW9uIGluIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNdIHRvIHJlYWNoIFtwYXJlbnRdIGFzIGEgZGVzY2VuZGFudFxuICAgICBvZiBbY2hpbGRdLiAgSW4gdGhhdCBjYXNlLCB0aGUgcmVjdXJzaW9uIHRlcm1pbmF0ZXMsIGJlY2F1c2UgW05vZGUuaXNfbmVjZXNzYXJ5XG4gICAgIHBhcmVudF0uICBXZSB0aGVuIHJldHVybiBoZXJlIGFuZCBzdWJzZXF1ZW50bHkgZGV0ZWN0IHRoZSBjeWNsZSBpblxuICAgICBbYWRqdXN0X2hlaWdodHNdLiAqKVxuICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAoKiBXZSBhZGp1c3QgaGVpZ2h0cyBzbyB0aGF0IHdlIGVuc3VyZSB0aGVyZSBhcmUgbm8gY3ljbGVzIGJlZm9yZSBjYWxsaW5nXG4gICAgIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0uICopXG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW5cbiAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmFkanVzdF9oZWlnaHRzXG4gICAgICB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgIHQucmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZFxuICAgICAgfnBhcmVudDtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdDtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICgqIHdlIG9ubHkgYWRkIG5lY2Vzc2FyeSBwYXJlbnRzICopXG4gIGlmIChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSlcbiAgJiYgKFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgcGFyZW50LnJlY29tcHV0ZWRfYXRcbiAgICAgIHx8IE5vZGUuZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudClcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbjs7XG5cbmxldCBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mID1cbiAgbGV0IHNhdmVkID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIHQuY3VycmVudF9zY29wZSA8LSBzY29wZTtcbiAgdHJ5XG4gICAgbGV0IHYgPSBmICgpIGluXG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHZcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGlmIG5vdCAoU2NvcGUuaXNfdmFsaWQgc2NvcGUpXG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHJ1biB3aXRoaW4gYW4gaW52YWxpZCBzY29wZVwiIHQgWyVzZXhwX29mOiB0XTtcbiAgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZlxuOztcblxubGV0IGNoYW5nZV9jaGlsZFxuICA6IHR5cGUgYSBiLlxuICAgIHBhcmVudDphIE5vZGUudFxuICAgIC0+IG9sZF9jaGlsZDpiIE5vZGUudCBVb3B0LnRcbiAgICAtPiBuZXdfY2hpbGQ6YiBOb2RlLnRcbiAgICAtPiBjaGlsZF9pbmRleDppbnRcbiAgICAtPiB1bml0XG4gID1cbiAgZnVuIH5wYXJlbnQgfm9sZF9jaGlsZCB+bmV3X2NoaWxkIH5jaGlsZF9pbmRleCAtPlxuICBpZiBVb3B0LmlzX25vbmUgb2xkX2NoaWxkXG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4XG4gIGVsc2UgKFxuICAgIGxldCBvbGRfY2hpbGQgPSBVb3B0LnVuc2FmZV92YWx1ZSBvbGRfY2hpbGQgaW5cbiAgICBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX2NoaWxkIG5ld19jaGlsZClcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIHJlbW92ZSBbb2xkX2NoaWxkXSBiZWZvcmUgYWRkaW5nIFtuZXdfY2hpbGRdLCBiZWNhdXNlIHRoZXkgc2hhcmUgdGhlIHNhbWVcbiAgICAgICAgIGNoaWxkIGluZGV4LiAqKVxuICAgICAgTm9kZS5yZW1vdmVfcGFyZW50IH5jaGlsZDpvbGRfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICAoKiBXZSBmb3JjZSBbb2xkX2NoaWxkXSB0byB0ZW1wb3JhcmlseSBiZSBuZWNlc3Nhcnkgc28gdGhhdCBbYWRkX3BhcmVudF0gY2FuJ3RcbiAgICAgICAgIG1pc3Rha2VubHkgdGhpbmsgaXQgaXMgdW5uZWNlc3NhcnkgYW5kIHRyYW5zaXRpb24gaXQgdG8gbmVjZXNzYXJ5ICh3aGljaCB3b3VsZFxuICAgICAgICAgYWRkIGR1cGxpY2F0ZSBlZGdlcyBhbmQgYnJlYWsgdGhpbmdzIGhvcnJpYmx5KS4gKilcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gdHJ1ZTtcbiAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gZmFsc2U7XG4gICAgICAoKiBXZSBbY2hlY2tfaWZfdW5uZWNlc3NhcnldIGFmdGVyIFthZGRfcGFyZW50XSwgc28gdGhhdCB3ZSBkb24ndCB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICB0cmFuc2l0aW9uIG5vZGVzIGZyb20gbmVjZXNzYXJ5IHRvIHVubmVjZXNzYXJ5IGFuZCB0aGVuIGJhY2sgYWdhaW4uICopXG4gICAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBvbGRfY2hpbGQpKVxuOztcblxubGV0IGFkZF9hbGFybSBjbG9jayB+YXQgYWxhcm1fdmFsdWUgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gIFRpbWluZ193aGVlbC5hZGQgY2xvY2sudGltaW5nX3doZWVsIH5hdCBhbGFybV92YWx1ZVxuOztcblxubGV0IHJlYyByZWNvbXB1dGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gU29tZSAoVCBub2RlKTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgdC5udW1fbm9kZXNfcmVjb21wdXRlZCA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkICsgMTtcbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChBcnJheV9mb2xkLmNvbXB1dGUgYXJyYXlfZm9sZClcbiAgfCBBdCB7IGF0OyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYW4gW0F0XSBub2RlIGFmdGVyIFthdF0uICBbYWR2YW5jZV9jbG9ja10gd2FzXG4gICAgICAgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtDb25zdF0gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIEJlZm9yZVxuICB8IEF0X2ludGVydmFscyBfIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9saHNfY2hhbmdlXG4gICAgICAoeyBtYWluXG4gICAgICAgOyBmXG4gICAgICAgOyBsaHNcbiAgICAgICA7IHJoc19zY29wZVxuICAgICAgIDsgcmhzID0gb2xkX3Joc1xuICAgICAgIDsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzID0gb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgIDsgX1xuICAgICAgIH0gYXMgYmluZCkgLT5cbiAgICAoKiBXZSBjbGVhciBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBzbyBpdCB3aWxsIGhvbGQganVzdCB0aGUgbm9kZXMgY3JlYXRlZCBieVxuICAgICAgIHRoaXMgY2FsbCB0byBbZl0uICopXG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5ub25lO1xuICAgIGxldCByaHMgPSBydW5fd2l0aF9zY29wZSB0IHJoc19zY29wZSB+ZjooZnVuICgpIC0+IGYgKE5vZGUudmFsdWVfZXhuIGxocykpIGluXG4gICAgYmluZC5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBBbnRpY2lwYXRlIHdoYXQgW21heWJlX2NoYW5nZV92YWx1ZV0gd2lsbCBkbywgdG8gbWFrZSBzdXJlIEJpbmRfbWFpbiBpcyBzdGFsZVxuICAgICAgIHJpZ2h0IGF3YXkuIFRoaXMgd2F5LCBpZiB0aGUgbmV3IGNoaWxkIGlzIGludmFsaWQsIHdlJ2xsIHNhdGlzZnkgdGhlIGludmFyaWFudFxuICAgICAgIHNheWluZyB0aGF0IFtuZWVkc190b19iZV9jb21wdXRlZCBiaW5kX21haW5dIGluIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuYmluZF9yaHNfY2hpbGRfaW5kZXg7XG4gICAgaWYgVW9wdC5pc19zb21lIG9sZF9yaHNcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGludmFsaWRhdGUgYWZ0ZXIgW2NoYW5nZV9jaGlsZF0sIGJlY2F1c2UgaW52YWxpZGF0aW9uIGNoYW5nZXMgdGhlIFtraW5kXSBvZlxuICAgICAgICAgbm9kZXMgdG8gW0ludmFsaWRdLCB3aGljaCBtZWFucyB0aGF0IHdlIGNhbiBubyBsb25nZXIgdmlzaXQgdGhlaXIgY2hpbGRyZW4uXG4gICAgICAgICBBbHNvLCB0aGUgW29sZF9yaHNdIG5vZGVzIGFyZSB0eXBpY2FsbHkgbWFkZSB1bm5lY2Vzc2FyeSBieSBbY2hhbmdlX2NoaWxkXSwgYW5kXG4gICAgICAgICBzbyBieSBpbnZhbGlkYXRpbmcgYWZ0ZXJ3YXJkcywgd2Ugd2lsbCBub3Qgd2FzdGUgdGltZSBhZGRpbmcgdGhlbSB0byB0aGVcbiAgICAgICAgIHJlY29tcHV0ZSBoZWFwIGFuZCB0aGVuIHJlbW92aW5nIHRoZW0uICopXG4gICAgICBpZiB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICBlbHNlXG4gICAgICAgIHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB0XG4gICAgICAgICAgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIH5uZXdfc2NvcGU6bWFpbi5jcmVhdGVkX2luO1xuICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdCk7XG4gICAgKCogW25vZGVdIHdhcyB2YWxpZCBhdCB0aGUgc3RhcnQgb2YgdGhlIFtCaW5kX2xoc19jaGFuZ2VdIGJyYW5jaCwgYW5kIGludmFsaWRhdGlvblxuICAgICAgIG9ubHkgdmlzaXRzIGhpZ2hlciBub2Rlcywgc28gW25vZGVdIGlzIHN0aWxsIHZhbGlkLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3ZhbGlkIG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgQ29uc3QgYSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBhXG4gIHwgRnJlZXplIHsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW47IF8gfSAtPlxuICAgIGxldCB2YWx1ZSA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgaWYgb25seV9mcmVlemVfd2hlbiB2YWx1ZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHZhbHVlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgMCBlbHNlIGJlY2FtZV91bm5lY2Vzc2FyeSBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YWx1ZVxuICB8IElmX3Rlc3RfY2hhbmdlICh7IG1haW47IGN1cnJlbnRfYnJhbmNoOyB0ZXN0OyB0aGVuXzsgZWxzZV87IF8gfSBhcyBpZl90aGVuX2Vsc2UpIC0+XG4gICAgbGV0IGRlc2lyZWRfYnJhbmNoID0gaWYgTm9kZS52YWx1ZV9leG4gdGVzdCB0aGVuIHRoZW5fIGVsc2UgZWxzZV8gaW5cbiAgICBpZl90aGVuX2Vsc2UuY3VycmVudF9icmFuY2ggPC0gVW9wdC5zb21lIGRlc2lyZWRfYnJhbmNoO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpjdXJyZW50X2JyYW5jaFxuICAgICAgfm5ld19jaGlsZDpkZXNpcmVkX2JyYW5jaFxuICAgICAgfmNoaWxkX2luZGV4OktpbmQuaWZfYnJhbmNoX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSWZfdGhlbl9lbHNlIHsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2gpXG4gIHwgSW52YWxpZCAtPlxuICAgICgqIFdlIG5ldmVyIGhhdmUgaW52YWxpZCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXA7IHRoZXkgYXJlIG5ldmVyIHN0YWxlLiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEpvaW5fbGhzX2NoYW5nZSAoeyBsaHM7IG1haW47IHJocyA9IG9sZF9yaHM7IF8gfSBhcyBqb2luKSAtPlxuICAgIGxldCByaHMgPSBOb2RlLnZhbHVlX2V4biBsaHMgaW5cbiAgICBqb2luLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuam9pbl9yaHNfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBKb2luX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBNYXAgKGYsIG4xKSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpKVxuICB8IFNuYXBzaG90IHsgYXQ7IGJlZm9yZTsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGEgW1NuYXBzaG90XSBhbmQgdGhlIGFsYXJtIHNob3VsZCBoYXZlIGZpcmVkLlxuICAgICAgIFthZHZhbmNlX2Nsb2NrXSB3YXMgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtGcmVlemVdIGF0IHRoZSBhcHByb3ByaWF0ZVxuICAgICAgIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGJlZm9yZVxuICB8IFN0ZXBfZnVuY3Rpb24gKHsgY2hpbGQ7IGNsb2NrOyBfIH0gYXMgc3RlcF9mdW5jdGlvbl9ub2RlKSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoaWxkID0gVW9wdC52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmVcbiAgICAgICAgICAgY2hpbGQuY2hhbmdlZF9hdFxuICAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdFxuICAgICAgICAgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPC0gY2hpbGQuY2hhbmdlZF9hdDtcbiAgICAgICAgcmVtb3ZlX2FsYXJtIGNsb2NrIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybTtcbiAgICAgICAgbGV0IHN0ZXBfZnVuY3Rpb24gPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgPC0gVW9wdC5zb21lIChTdGVwX2Z1bmN0aW9uLmluaXQgc3RlcF9mdW5jdGlvbik7XG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyA8LSBTdGVwX2Z1bmN0aW9uLnN0ZXBzIHN0ZXBfZnVuY3Rpb247XG4gICAgICAgICgqIElmIHRoZSBjaGlsZCBpcyBhIGNvbnN0YW50LCB3ZSBkcm9wIG91ciByZWZlcmVuY2UgdG8gaXQsIHRvIGF2b2lkIGhvbGRpbmcgb24gdG9cbiAgICAgICAgICAgdGhlIGVudGlyZSBzdGVwIGZ1bmN0aW9uLiAqKVxuICAgICAgICBpZiBOb2RlLmlzX2NvbnN0IGNoaWxkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5jaGlsZCA8LSBVb3B0Lm5vbmU7XG4gICAgICAgICAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSkpKSk7XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmFkdmFuY2Ugc3RlcF9mdW5jdGlvbl9ub2RlIH50b186KG5vdyBjbG9jayk7XG4gICAgbGV0IHN0ZXBfZnVuY3Rpb25fdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgaW5cbiAgICAobWF0Y2ggU2VxdWVuY2UuaGQgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIHdpdGhcbiAgICAgfCBOb25lIC0+IGlmIFVvcHQuaXNfbm9uZSBjaGlsZCB0aGVuIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3Qgc3RlcF9mdW5jdGlvbl92YWx1ZSlcbiAgICAgfCBTb21lIChhdCwgXykgLT5cbiAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdCBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm1fdmFsdWUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHN0ZXBfZnVuY3Rpb25fdmFsdWVcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChVbm9yZGVyZWRfYXJyYXlfZm9sZC5jb21wdXRlIHUpXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBWYXIgdmFyIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhci52YWx1ZVxuICB8IE1hcDIgKGYsIG4xLCBuMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikpXG4gIHwgTWFwMyAoZiwgbjEsIG4yLCBuMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpKVxuICB8IE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykgKE5vZGUudmFsdWVfZXhuIG40KSlcbiAgfCBNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KSlcbiAgfCBNYXA2IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNikpXG4gIHwgTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KSlcbiAgfCBNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KSlcbiAgfCBNYXA5IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSkpXG4gIHwgTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKSlcbiAgfCBNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpKVxuICB8IE1hcDEyIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMikpXG4gIHwgTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKSlcbiAgfCBNYXAxNCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpKVxuICB8IE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNSkpXG4gIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgIChtYXRjaCBFeHBlcnQuYmVmb3JlX21haW5fY29tcHV0YXRpb24gZXhwZXJ0IHdpdGhcbiAgICAgfCBgSW52YWxpZCAtPlxuICAgICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHRcbiAgICAgfCBgT2sgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGV4cGVydC5mICgpKSlcblxuYW5kIGNvcHlfY2hpbGQgOiB0eXBlIGEuIHBhcmVudDphIE5vZGUudCAtPiBjaGlsZDphIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIH5wYXJlbnQgfmNoaWxkIC0+XG4gIGlmIE5vZGUuaXNfdmFsaWQgY2hpbGRcbiAgdGhlbiBtYXliZV9jaGFuZ2VfdmFsdWUgcGFyZW50IChOb2RlLnZhbHVlX2V4biBjaGlsZClcbiAgZWxzZSAoXG4gICAgaW52YWxpZGF0ZV9ub2RlIHBhcmVudDtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBwYXJlbnQuc3RhdGUpXG5cbmFuZCBtYXliZV9jaGFuZ2VfdmFsdWUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IGEgLT4gdW5pdCA9XG4gIGZ1biBub2RlIG5ld192YWx1ZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbGV0IG9sZF92YWx1ZV9vcHQgPSBub2RlLnZhbHVlX29wdCBpblxuICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlX29wdFxuICB8fCBub3RcbiAgICAgICAoQ3V0b2ZmLnNob3VsZF9jdXRvZmZcbiAgICAgICAgICBub2RlLmN1dG9mZlxuICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgfm5ld192YWx1ZSlcbiAgdGhlbiAoXG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5zb21lIG5ld192YWx1ZTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19jaGFuZ2VkIDwtIHQubnVtX25vZGVzX2NoYW5nZWQgKyAxO1xuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBvbGRfdmFsdWVfb3B0O1xuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZSk7XG4gICAgaWYgbm9kZS5udW1fcGFyZW50cyA+PSAxXG4gICAgdGhlbiAoXG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGUucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSBpblxuICAgICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IGV4cGVydFxuICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgICB1XG4gICAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleClcbiAgICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICgqIFdlIGRvbid0IGRvIHRoZSBbY2FuX3JlY29tcHV0ZV9ub3ddIG9wdGltaXphdGlvbi4gIFNpbmNlIG1vc3Qgbm9kZXMgb25seSBoYXZlXG4gICAgICAgICAgIG9uZSBwYXJlbnQsIGl0IGlzIG5vdCBwcm9iYWJseSBub3QgYSBiaWcgbG9zcy4gIElmIHdlIGRpZCBpdCBhbnl3YXksIHdlJ2RcbiAgICAgICAgICAgaGF2ZSB0byBiZSBjYXJlZnVsLCBiZWNhdXNlIHdoaWxlIHdlIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBwYXJlbnRzLCB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZW0sIGFuZCBpbiBwYXJ0aWN1bGFyIHdlIGNhbiBleGVjdXRlIGxocy1jaGFuZ2Ugbm9kZXMgd2hvIGNhblxuICAgICAgICAgICBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgbGlzdCBvZiBwYXJlbnRzIHdlIGl0ZXJhdGUgb24uICBUaGluayBhYm91dDpcblxuICAgICAgICAgICB7W1xuICAgICAgICAgICAgIGxocyA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIGxocyA+PnwgRm4uaWQgZWxzZSBjb25zdCBiXG4gICAgICAgICAgIF19XG5cbiAgICAgICAgICAgSWYgdGhlIG9wdGltaXphdGlvbiBraWNrcyBpbiB3aGVuIHdlIHByb3BhZ2F0ZSBjaGFuZ2UgdG8gdGhlIHBhcmVudHMgb2YgW2xoc11cbiAgICAgICAgICAgKHdoaWNoIGNoYW5nZXMgZnJvbSBbdHJ1ZV0gdG8gW2ZhbHNlXSksIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIFtsaHMtY2hhbmdlXVxuICAgICAgICAgICBmaXJzdCwgd2hpY2ggd291bGQgbWFrZSBkaXNjb25uZWN0IHRoZSBbbWFwXSBub2RlIGZyb20gW2xoc10uICBBbmQgdGhlbiB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZSBzZWNvbmQgY2hpbGQgb2YgdGhlIFtsaHNdLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueW1vcmUgYW5kXG4gICAgICAgICAgIGluY3JlbWVudGFsIHdvdWxkIHNlZ2ZhdWx0ICh0aGVyZSBtYXkgYmUgYSBsZXNzIG5haXZlIHdheSBvZiBtYWtpbmcgdGhpcyB3b3JrXG4gICAgICAgICAgIHRob3VnaCkuICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG4gICAgICBkb25lO1xuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBub2RlLnBhcmVudDAgaW5cbiAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgfCBFeHBlcnQgcCAtPlxuICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApIGluXG4gICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IHBcbiAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgdVxuICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApXG4gICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNhbl9yZWNvbXB1dGVfbm93ID1cbiAgICAgICAgICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZW4ndCBwYXJlbnRzLiAqKVxuICAgICAgICAgIHwgQXQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEF0X2ludGVydmFscyBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQ29uc3QgXyB8IEludmFsaWQgfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgaGF2ZSBtb3JlIHRoYW4gb25lIGNoaWxkLiAqKVxuICAgICAgICAgIHwgQXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBNYXAyIF9cbiAgICAgICAgICB8IE1hcDMgX1xuICAgICAgICAgIHwgTWFwNCBfXG4gICAgICAgICAgfCBNYXA1IF9cbiAgICAgICAgICB8IE1hcDYgX1xuICAgICAgICAgIHwgTWFwNyBfXG4gICAgICAgICAgfCBNYXA4IF9cbiAgICAgICAgICB8IE1hcDkgX1xuICAgICAgICAgIHwgTWFwMTAgX1xuICAgICAgICAgIHwgTWFwMTEgX1xuICAgICAgICAgIHwgTWFwMTIgX1xuICAgICAgICAgIHwgTWFwMTMgX1xuICAgICAgICAgIHwgTWFwMTQgX1xuICAgICAgICAgIHwgTWFwMTUgX1xuICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgRXhwZXJ0IF8gLT4gZmFsc2VcbiAgICAgICAgICAoKiBXZSBjYW4gaW1tZWRpYXRlbHkgcmVjb21wdXRlIFtwYXJlbnRdIGlmIG5vIG90aGVyIG5vZGUgbmVlZHMgdG8gYmUgc3RhYmxlXG4gICAgICAgICAgICAgYmVmb3JlIGNvbXB1dGluZyBpdC4gIElmIFtwYXJlbnRdIGhhcyBhIHNpbmdsZSBjaGlsZCAoaS5lLiBbbm9kZV0pLCB0aGVuXG4gICAgICAgICAgICAgdGhpcyBhbW91bnRzIHRvIGNoZWNraW5nIHRoYXQgW3BhcmVudF0gd29uJ3QgYmUgaW52YWxpZGF0ZWQsIGkuZS4gdGhhdFxuICAgICAgICAgICAgIFtwYXJlbnRdJ3Mgc2NvcGUgaGFzIGFscmVhZHkgc3RhYmlsaXplZC4gKilcbiAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBGcmVlemUgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IE1hcCBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAoKiBGb3IgdGhlc2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgXCJfY2hhbmdlXCIgY2hpbGQgaGFzIGFscmVhZHkgYmVlblxuICAgICAgICAgICAgIGV2YWx1YXRlZCAoaWYgbmVlZGVkKS4gIElmIHNvLCB0aGlzIGFsc28gaW1wbGllczpcblxuICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICAgIF19ICopXG4gICAgICAgICAgfCBCaW5kX21haW4gYiAtPiBub2RlLmhlaWdodCA+IGIubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IElmX3RoZW5fZWxzZSBpIC0+IG5vZGUuaGVpZ2h0ID4gaS50ZXN0X2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IEpvaW5fbWFpbiBqIC0+IG5vZGUuaGVpZ2h0ID4gai5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICBpblxuICAgICAgICBpZiBjYW5fcmVjb21wdXRlX25vd1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkXG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSBpZiBwYXJlbnQuaGVpZ2h0IDw9IFJlY29tcHV0ZV9oZWFwLm1pbl9oZWlnaHQgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiBbcGFyZW50LmhlaWdodF0gaXMgWzw9XSB0aGUgaGVpZ2h0IG9mIGFsbCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXBcbiAgICAgICAgICAgICAocG9zc2libHkgYmVjYXVzZSB0aGUgcmVjb21wdXRlIGhlYXAgaXMgZW1wdHkpLCB0aGVuIHdlIGNhbiByZWNvbXB1dGVcbiAgICAgICAgICAgICBbcGFyZW50XSBpbW1lZGlhdGVseSBhbmQgc2F2ZSBhZGRpbmcgaXQgdG8gYW5kIHRoZW4gcmVtb3ZpbmcgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgICByZWNvbXB1dGUgaGVhcC4gKilcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSk7XG4gICAgICAgICAgUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50KSkpKTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByID1cbiAgbGV0IChUIG5vZGUpID0gUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiByIGluXG4gIGlmIGRlYnVnICYmIG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIm5vZGUgdW5leHBlY3RlZGx5IGRvZXMgbm90IG5lZWQgdG8gYmUgY29tcHV0ZWRcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIHJlY29tcHV0ZSBub2RlXG47O1xuXG5sZXQgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5kaXNhbGxvd2VkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICB8IERpc2FsbG93ZWQgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGxldCAoVCBhbGxfb2JzZXJ2ZXJzKSA9IFVvcHQudmFsdWVfZXhuIHQuYWxsX29ic2VydmVycyBpblxuICAgIGlmIEludGVybmFsX29ic2VydmVyLnNhbWUgaW50ZXJuYWxfb2JzZXJ2ZXIgYWxsX29ic2VydmVyc1xuICAgIHRoZW4gdC5hbGxfb2JzZXJ2ZXJzIDwtIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsO1xuICAgIEludGVybmFsX29ic2VydmVyLnVubGluayBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiAoKVxuICB8IENyZWF0ZWQgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuICB8IEluX3VzZSAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gRGlzYWxsb3dlZDtcbiAgICBTdGFjay5wdXNoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpXG47O1xuXG5sZXQgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQuZmluYWxpemVkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB0aGVuIGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX2ZpbmFsaXplciB0ID1cbiAgc3RhZ2UgKGZ1biBvYnNlcnZlciAtPlxuICAgIGxldCBpbnRlcm5hbF9vYnNlcnZlciA9ICFvYnNlcnZlciBpblxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKSlcbjs7XG5cbmxldCBjcmVhdGVfb2JzZXJ2ZXIgPyhzaG91bGRfZmluYWxpemUgPSB0cnVlKSAob2JzZXJ2aW5nIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBvYnNlcnZpbmcuc3RhdGUgaW5cbiAgbGV0IGludGVybmFsX29ic2VydmVyIDogXyBJbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgICB7IHN0YXRlID0gQ3JlYXRlZFxuICAgIDsgb2JzZXJ2aW5nXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgcHJldl9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBwcmV2X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gIFN0YWNrLnB1c2ggdC5uZXdfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKTtcbiAgbGV0IG9ic2VydmVyID0gcmVmIGludGVybmFsX29ic2VydmVyIGluXG4gIGlmIHNob3VsZF9maW5hbGl6ZVxuICB0aGVuIEdjLkV4cGVydC5hZGRfZmluYWxpemVyX2V4biBvYnNlcnZlciAodW5zdGFnZSAob2JzZXJ2ZXJfZmluYWxpemVyIHQpKTtcbiAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzICsgMTtcbiAgb2JzZXJ2ZXJcbjs7XG5cbmxldCBhZGRfbmV3X29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQubmV3X29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0Lm5ld19vYnNlcnZlcnMgaW5cbiAgICBsZXQgbW9kdWxlIFBhY2tlZCA9IEludGVybmFsX29ic2VydmVyLlBhY2tlZCBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVW5saW5rZWQgLT4gKClcbiAgICB8IENyZWF0ZWQgLT5cbiAgICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIEluX3VzZTtcbiAgICAgIGxldCBvbGRfYWxsX29ic2VydmVycyA9IHQuYWxsX29ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9hbGxfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGwgPC0gb2xkX2FsbF9vYnNlcnZlcnM7XG4gICAgICAgIFBhY2tlZC5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9hbGxfb2JzZXJ2ZXJzKSAoVW9wdC5zb21lIHBhY2tlZCkpO1xuICAgICAgdC5hbGxfb2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBwYWNrZWQ7XG4gICAgICBsZXQgb2JzZXJ2aW5nID0gaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIGluXG4gICAgICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyBpblxuICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICArIExpc3QubGVuZ3RoIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAgIGxldCBvbGRfb2JzZXJ2ZXJzID0gb2JzZXJ2aW5nLm9ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX29ic2VydmluZyA8LSBvbGRfb2JzZXJ2ZXJzO1xuICAgICAgICAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX29ic2VydmVycykucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyO1xuICAgICAgKCogQnkgYWRkaW5nIFtpbnRlcm5hbF9vYnNlcnZlcl0gdG8gW29ic2VydmluZy5vYnNlcnZlcnNdLCB3ZSBtYXkgaGF2ZSBhZGRlZFxuICAgICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHRvIFtvYnNlcnZpbmddLiAgV2UgbmVlZCB0byBoYW5kbGUgW29ic2VydmluZ10gYWZ0ZXIgdGhpc1xuICAgICAgICAgc3RhYmlsaXphdGlvbiB0byBnaXZlIHRob3NlIGhhbmRsZXJzIGEgY2hhbmNlIHRvIHJ1bi4gKilcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG9ic2VydmluZztcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcpO1xuICAgICAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IG9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBOb3Rfc3RhYmlsaXppbmcgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyAtPiBPYnNlcnZlci52YWx1ZV9leG4gb2JzZXJ2ZXJcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBbJXNleHBfb2Y6IFJhaXNlZF9leG4udF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXQgdmFyIC0tIHN0YWJpbGl6YXRpb24gcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBpZiBVb3B0LmlzX25vbmUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICAgIHRoZW4gU3RhY2sucHVzaCB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAoVCB2YXIpO1xuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5zb21lIHZhbHVlXG47O1xuXG5sZXQgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC53ZWFrX2hhc2h0YmxzID4gMCBkb1xuICAgIGxldCAoVCB3ZWFrX2hhc2h0YmwpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC53ZWFrX2hhc2h0YmxzIGluXG4gICAgV2Vha19oYXNodGJsLnJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB3ZWFrX2hhc2h0YmxcbiAgZG9uZVxuOztcblxubGV0IHN0YWJpbGl6ZV9zdGFydCB0ID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXppbmc7XG4gIGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdDtcbiAgKCogSnVzdCBsaWtlIGZvciBiaW5kcywgd2UgYWRkIG5ldyBvYnNlcnZlcnMgYmVmb3JlIHJlbW92aW5nIGRpc2FsbG93ZWQgb2JzZXJ2ZXJzIHRvXG4gICAgIHBvdGVudGlhbGx5IGF2b2lkIHN3aXRjaGluZyB0aGUgb2JzZXJ2YWJpbGl0eSBvZiBzb21lIG5vZGVzIGJhY2sgYW5kIGZvcnRoLiAqKVxuICBhZGRfbmV3X29ic2VydmVycyB0O1xuICB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdDtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0IHN0YWJpbGl6ZV9lbmQgdCA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIE5vbmU7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gICgqIFdlIGluY3JlbWVudCBbdC5zdGFiaWxpemF0aW9uX251bV0gYmVmb3JlIGhhbmRsaW5nIHZhcmlhYmxlcyBzZXQgZHVyaW5nXG4gICAgIHN0YWJpbGl6YXRpb24sIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyBzZXQgZHVyaW5nIHRoZSBuZXcgc3RhYmlsaXphdGlvbiBjeWNsZS5cbiAgICAgQWxzbywgd2UgaW5jcmVtZW50IGJlZm9yZSBydW5uaW5nIG9uLXVwZGF0ZSBoYW5kbGVycywgdG8gYXZvaWQgcnVubmluZyBvbiB1cGRhdGVcbiAgICAgaGFuZGxlcnMgY3JlYXRlZCBkdXJpbmcgb24gdXBkYXRlIGhhbmRsZXJzLiAqKVxuICB0LnN0YWJpbGl6YXRpb25fbnVtIDwtIFN0YWJpbGl6YXRpb25fbnVtLmFkZDEgdC5zdGFiaWxpemF0aW9uX251bTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgdmFyKSA9IFN0YWNrLnBvcF9leG4gdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICBsZXQgdmFsdWUgPSBVb3B0LnZhbHVlX2V4biB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0Lm5vbmU7XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIGRvbmU7XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIGZhbHNlO1xuICAgIGxldCBvbGRfdmFsdWUgPSBub2RlLm9sZF92YWx1ZV9vcHQgaW5cbiAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGxldCBub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCA9XG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgbm9kZSlcbiAgICAgIHRoZW4gSW52YWxpZGF0ZWRcbiAgICAgIGVsc2UgaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKVxuICAgICAgdGhlbiBVbm5lY2Vzc2FyeVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBub2RlLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlXG4gICAgICAgIHRoZW4gTmVjZXNzYXJ5IG5ld192YWx1ZVxuICAgICAgICBlbHNlIENoYW5nZWQgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSlcbiAgICBpblxuICAgIFN0YWNrLnB1c2ggdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIChUIChub2RlLCBub2RlX3VwZGF0ZSkpXG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzO1xuICBsZXQgbm93ID0gdC5zdGFiaWxpemF0aW9uX251bSBpblxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycykgZG9cbiAgICBsZXQgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSkgPSBTdGFjay5wb3BfZXhuIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIE5vZGUucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBub2RlIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gTm90X3N0YWJpbGl6aW5nO1xuICByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdFxuOztcblxubGV0IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIChSYWlzZWRfZXhuLmNyZWF0ZSBleG4pO1xuICByYWlzZSBleG5cbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFxcXG4gICAgICAgICAgICAgVW5uZWNlc3NhcnlcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgWyVzZXhwX29mOiBfIHRdKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSB0ID0gU3RhdGUuZGlzYWxsb3dfZnV0dXJlX3VzZSAhdFxuICAgIGxldCB2YWx1ZSA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlXG4gICAgbGV0IHZhbHVlX2V4biA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlX2V4blxuXG4gICAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8ganVzdCBzaG93IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgICAgcmVwcmVzZW50YXRpb24uICopXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKHQgOiBfIHQpID1cbiAgICAgIG1hdGNoICF0LnN0YXRlIHdpdGhcbiAgICAgIHwgQ3JlYXRlZCAtPiBbJW1lc3NhZ2UgXCI8dW5zdGFiaWxpemVkPlwiXVxuICAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gWyVtZXNzYWdlIFwiPGRpc2FsbG93ZWQ+XCJdXG4gICAgICB8IEluX3VzZSAtPlxuICAgICAgICBsZXQgdW9wdCA9ICF0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICAgICAgdGhlbiBbJW1lc3NhZ2UgXCI8aW52YWxpZD5cIl1cbiAgICAgICAgZWxzZSBbJXNleHAgKFVvcHQudW5zYWZlX3ZhbHVlIHVvcHQgOiBhKV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgQmVmb3JlX29yX2FmdGVyID0gQmVmb3JlX29yX2FmdGVyXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZS5DbG9ja1xuXG4gICAgbGV0IHN0YXRlID0gaW5jcl9zdGF0ZVxuXG4gICAgbGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCBpblxuICAgICAgbGV0IGxldmVsX2JpdHMgPSBbIDE0OyAxMzsgNSBdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgICAgIH5sZXZlbF9iaXRzOlxuICAgICAgICAgIChUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMgfmV4dGVuZF90b19tYXhfbnVtX2JpdHM6dHJ1ZSlcbiAgICAgICAgKClcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBzdGF0ZSA/KHRpbWluZ193aGVlbF9jb25maWcgPSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcpIH5zdGFydCAoKSA9XG4gICAgICAoKiBNYWtlIHN1cmUgW3N0YXJ0XSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAgT3RoZXJ3aXNlLCBpZiB5b3VcbiAgICAgICAgIGZlZWQgW0Nsb2NrLm5vdyAoKV0gdG8gYSB0aW1lIGZ1bmN0aW9uLCBpdCBjYW4gYmUgcm91bmRlZCBkb3duIHRvIGEgdGltZSBpblxuICAgICAgICAgdGhlIHBhc3QsIGNhdXNpbmcgZXJyb3JzLiAqKVxuICAgICAgbGV0IHN0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5vZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbiAgICAgICAgICAoVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgc3RhcnQpXG4gICAgICBpblxuICAgICAgU3RhdGUuY3JlYXRlX2Nsb2NrIHN0YXRlIH50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydFxuICAgIDs7XG5cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQudGltaW5nX3doZWVsXG4gICAgbGV0IHRpbWluZ193aGVlbF9sZW5ndGggPSBTdGF0ZS50aW1pbmdfd2hlZWxfbGVuZ3RoXG4gICAgbGV0IG5vdyA9IFN0YXRlLm5vd1xuICAgIGxldCB3YXRjaF9ub3cgdCA9IHQubm93LndhdGNoXG4gICAgbGV0IGF0ID0gU3RhdGUuYXRcbiAgICBsZXQgYWZ0ZXIgPSBTdGF0ZS5hZnRlclxuICAgIGxldCBhdF9pbnRlcnZhbHMgPSBTdGF0ZS5hdF9pbnRlcnZhbHNcbiAgICBsZXQgYWR2YW5jZV9jbG9jayA9IFN0YXRlLmFkdmFuY2VfY2xvY2tcbiAgICBsZXQgYWR2YW5jZV9jbG9ja19ieSB0IHNwYW4gPSBhZHZhbmNlX2Nsb2NrIHQgfnRvXzooVGltZV9ucy5hZGQgKG5vdyB0KSBzcGFuKVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uID0gU3RhdGUuaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG4gICAgbGV0IHN0ZXBfZnVuY3Rpb24gdCB+aW5pdCBzdGVwcyA9XG4gICAgICBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG4gICAgICAgIHRcbiAgICAgICAgKGNvbnN0IChpbmNyX3N0YXRlIHQpIChTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzKSlcbiAgICA7O1xuXG4gICAgbGV0IHNuYXBzaG90ID0gU3RhdGUuc25hcHNob3RcbiAgZW5kXG5cbiAgbGV0IGZyZWV6ZSA/KHdoZW5fID0gZnVuIF8gLT4gdHJ1ZSkgdCA9IFN0YXRlLmZyZWV6ZSB0IH5vbmx5X2ZyZWV6ZV93aGVuOndoZW5fXG4gIGxldCBkZXBlbmRfb24gdCB+ZGVwZW5kX29uID0gU3RhdGUuZGVwZW5kX29uIHQgfmRlcGVuZF9vblxuICBsZXQgbmVjZXNzYXJ5X2lmX2FsaXZlID0gU3RhdGUubmVjZXNzYXJ5X2lmX2FsaXZlXG5cbiAgbW9kdWxlIFVwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbiAgbGV0IG9uX3VwZGF0ZSA9IFN0YXRlLm5vZGVfb25fdXBkYXRlXG4gIGxldCBzdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5zdGFiaWxpemUgc3RhdGVcbiAgbGV0IGFtX3N0YWJpbGl6aW5nIHN0YXRlID0gU3RhdGUuYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgbGV0IHNhdmVfZG90ID0gU3RhdGUuc2F2ZV9kb3RcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgPSBTdGF0ZS5zYXZlX2RvdF90b19maWxlXG5cbiAgbW9kdWxlIE5vZGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBJbnZhbGlkXG4gICAgICB8IE5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICAgIHwgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IG5vZGVfdmFsdWUgdCA6IF8gTm9kZV92YWx1ZS50ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBJbnZhbGlkXG4gICAgZWxzZSBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gTmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgICBlbHNlIFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgOztcblxuICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBzaG93IGp1c3QgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgcmVwcmVzZW50YXRpb24uICBXZSBvbmx5IHNob3cgdGhlIHZhbHVlIGlmIGl0IGlzIG5lY2Vzc2FyeSBhbmQgdmFsaWQuICopXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIFwiPGludmFsaWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgIHRoZW4gXCI8dW5uZWNlc3Nhcnk+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBVb3B0LmlzX25vbmUgdC52YWx1ZV9vcHRcbiAgICB0aGVuIFwiPHVuY29tcHV0ZWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSB1bnNhZmVfdmFsdWUgdCB8PiBbJXNleHBfb2Y6IGFdXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IEV4cGVydDFcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIHQxIHQyID0gbWFwMiB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MilcblxuICAgICAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgICAgIGxldCB3YXRjaCA9IFZhci53YXRjaFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NvbmZpZyAoSW5jcmVtZW50YWxfY29uZmlnIDogSW5jcmVtZW50YWxfY29uZmlnKSAoKSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlXG5cbiAgICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCAobW9kdWxlIEluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZDoxMjhcbiAgZW5kXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBDbG9ja1xuXG4gICAgbGV0IGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgKCkgPVxuICAgICAgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIFN0YXRlLnQgfnN0YXJ0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwZXJ0XG5cbiAgICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgIGxldCBjcmVhdGUgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPSBjcmVhdGUgU3RhdGUudCA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICAgIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgKCkgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgU3RhdGUudFxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50ICgpID0gY3VycmVudCBTdGF0ZS50ICgpXG4gICAgbGV0IHdpdGhpbiB0IH5mID0gd2l0aGluIFN0YXRlLnQgdCB+ZlxuICBlbmRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIHZhbHVlID0gY3JlYXRlID91c2VfY3VycmVudF9zY29wZSBTdGF0ZS50IHZhbHVlXG4gIGVuZFxuXG4gIGxldCBjb25zdCBhID0gY29uc3QgU3RhdGUudCBhXG4gIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcbiAgbGV0IGFsbCB0cyA9IGFsbCBTdGF0ZS50IHRzXG4gIGxldCBleGlzdHMgdHMgPSBleGlzdHMgU3RhdGUudCB0c1xuICBsZXQgZm9yX2FsbCB0cyA9IGZvcl9hbGwgU3RhdGUudCB0c1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID0gbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgbGV0IGFycmF5X2ZvbGQgdHMgfmluaXQgfmYgPSBhcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCB0cyB+ZiB+cmVkdWNlID0gcmVkdWNlX2JhbGFuY2VkIFN0YXRlLnQgdHMgfmYgfnJlZHVjZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+dXBkYXRlID1cbiAgICB1bm9yZGVyZWRfYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mIH51cGRhdGUgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOztcblxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH5mX2ludmVyc2UgPVxuICAgIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH5pbml0IH5mIH5mX2ludmVyc2VcbiAgOztcblxuICBsZXQgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IHN1bV9pbnQgdHMgPSBzdW1faW50IFN0YXRlLnQgdHNcbiAgbGV0IHN1bV9mbG9hdCB0cyA9IHN1bV9mbG9hdCBTdGF0ZS50IHRzXG4gIGxldCBzdGFiaWxpemUgKCkgPSBzdGFiaWxpemUgU3RhdGUudFxuICBsZXQgYW1fc3RhYmlsaXppbmcgKCkgPSBhbV9zdGFiaWxpemluZyBTdGF0ZS50XG4gIGxldCBzYXZlX2RvdCBvdXQgPSBzYXZlX2RvdCBTdGF0ZS50IG91dFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlID0gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZpbGUgfmY6c2F2ZV9kb3RcbiAgbGV0IGxhenlfZnJvbV9mdW4gZiA9IGxhenlfZnJvbV9mdW4gU3RhdGUudCBmXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoKSA9IE1ha2Vfd2l0aF9jb25maWcgKENvbmZpZy5EZWZhdWx0ICgpKSAoKVxuaW5jbHVkZSBHZW5lcmljXG5cbm1vZHVsZSBBZGRfd2l0bmVzczAgKE0gOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgJ3cgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICd3IHQgPSBNLnRcblxuICBsZXQgaW52YXJpYW50IF8gdCA9IE0uaW52YXJpYW50IHRcbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBNLnNleHBfb2ZfdCB0XG5lbmRcblxubW9kdWxlIEFkZF93aXRuZXNzMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IE0uaW52YXJpYW50IGludmFyaWFudF9hIHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gTS5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbmVuZFxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDbG9ja1xuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoQ2xvY2spXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVydFxuXG4gIG1vZHVsZSBEZXBlbmRlbmN5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE5vZGVcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGVcbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICBpbmNsdWRlIE5vZGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE5vZGUpXG5lbmRcblxudHlwZSAoJ2EsICd3KSB0ID0gKCdhLCAndykgTm9kZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG50eXBlICgnYSwgJ3cpIGluY3JlbWVudGFsID0gKCdhLCAndykgdFxuXG5sZXQgaW52YXJpYW50ID0gTm9kZS5pbnZhcmlhbnRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE9ic2VydmVyKVxuZW5kXG5cbm1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICBpbmNsdWRlIFNjb3BlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTY29wZSlcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGF0ZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU3RhdGUpXG5lbmRcblxubW9kdWxlIFZhciA9IHN0cnVjdFxuICBpbmNsdWRlIFZhclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoVmFyKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIGluY3JlbWVudGFsXG4gICAgd2l0aCB0eXBlIEJlZm9yZV9vcl9hZnRlci50ID0gQmVmb3JlX29yX2FmdGVyLnRcbiAgICB3aXRoIHR5cGUgQ2xvY2sudCA9IHN0YXRlX3dpdG5lc3MgQ2xvY2sudFxuICAgIHdpdGggdHlwZSAnYSBDdXRvZmYudCA9ICdhIEN1dG9mZi50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5EZXBlbmRlbmN5LnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5EZXBlbmRlbmN5LnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0Lk5vZGUudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0Lk5vZGUudFxuICAgIHdpdGggdHlwZSBFeHBlcnQuU3RlcF9yZXN1bHQudCA9IEV4cGVydC5TdGVwX3Jlc3VsdC50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIE9ic2VydmVyLnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIuVXBkYXRlLnQgPSAnYSBPYnNlcnZlci5VcGRhdGUudFxuICAgIHdpdGggdHlwZSBQYWNrZWQudCA9IFBhY2tlZC50XG4gICAgd2l0aCB0eXBlIFNjb3BlLnQgPSBzdGF0ZV93aXRuZXNzIFNjb3BlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUudCA9IHN0YXRlX3dpdG5lc3MgU3RhdGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS5TdGF0cy50ID0gU3RhdGUuU3RhdHMudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudCA9XG4gICAgICAgICAgICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFVwZGF0ZS50ID0gJ2EgVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVmFyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIFZhci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGRlYnVnID0gZGVidWdcbmVuZFxuIiwiXG5vcGVuIEJhc2VcblxubW9kdWxlIENvbW11dGF0aXZlX2dyb3VwID0gc3RydWN0XG4gICgqKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgICAgICsgYXNzb2NpYXRpdml0eTogWyhhICsgYikgKyBjID0gYSArIChiICsgYyldXG4gICAgICArIGlkZW50aXR5OiBbemVybyArIGEgPSBhICsgemVybyA9IGFdXG4gICAgICArIGludmVyc2VzOiBnaXZlbiBhbnkgW2FdIHRoZXJlIGV4aXN0cyBhICh1bmlxdWUpIGVsdCBbYl0gc3VjaCB0aGF0IFthICsgYiA9IGIgKyBhID1cbiAgICAgIHplcm9dXG4gICAgICArIGNvbW11dGF0aXZpdHk6IFthICsgYiA9IGIgKyBhXVxuICAqKVxuXG4gIG1vZHVsZSB0eXBlIFdpdGhvdXRfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICgrKSAgOiB0IC0+IHQgLT4gdFxuICAgIHZhbCAoLSkgIDogdCAtPiB0IC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGluY2x1ZGUgV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFZlY3Rvcl9zcGFjZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG4gICAgaW5jbHVkZSBDb21tdXRhdGl2ZV9ncm91cC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBJbmNyX21hcF9pbnRmXG5cbigqKiBUaGlzIHR5cGUgbGV0cyB1cyBjYXB0dXJlIHRoZSBraW5kIG9mIG1hcCBmdW5jdGlvbiBiZWluZyBwZXJmb3JtZWQsIHNvIHdlIGNhbiB3aXRoXG4gICAgb25lIGltcGxlbWVudGF0aW9uIHBlcmZvcm0gbWFwIGFuZCBmaWx0ZXItbWFwIG9wZXJhdGlvbnMuXG5cbiAgICBIZXJlLCBbJ2lucHV0X2RhdGFdIGlzIHRoZSB0eXBlIG9mIGRhdGEgaW4gdGhlIGlucHV0IG1hcCwgWydvdXRwdXRfZGF0YV0gaXMgdGhlIHR5cGVcbiAgICBvZiBkYXRhIGluIHRoZSBvdXRwdXQgbWFwLCBhbmQgWydmX291dHB1dF0gaXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBbfmZdIGZ1bmN0aW9uXG4gICAgcGFzc2VkIHRvIHRoZSBtYXBwaW5nIGZ1bmN0aW9uLiAqKVxubW9kdWxlIE1hcF90eXBlID0gc3RydWN0XG4gIHR5cGUgKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdmX291dHB1dCkgdCA9XG4gICAgfCBNYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhKSB0XG4gICAgfCBGaWx0ZXJfbWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSBvcHRpb24pIHRcblxuICAoKiBUaGUgZXh0cmEgdHlwZSB2YXJpYWJsZSAnYSBpcyB0byBhbGxvdyBpbiBmdXR1cmU6XG4gICAgIHwgRmlsdGVyIDogKCdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhLCBib29sKSB0ICopXG5lbmRcblxubW9kdWxlIEdlbmVyaWMgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfb2xkIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhIGluXG4gICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgIGJcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KHJldmVydF90b19pbml0X3doZW5fZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIGxldCBkZWZhdWx0IH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgPVxuICAgICAgICBhZGQgfmtleSB+ZGF0YTpuZXdfZGF0YSAocmVtb3ZlIH5rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi52YWx1ZSB1cGRhdGUgfmRlZmF1bHRcbiAgICBpblxuICAgIHdpdGhfb2xkIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAuZm9sZCB+aW5pdCB+ZjphZGQgbmV3X2luXG4gICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfb3V0KSAtPlxuICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgIG5ld19pblxuICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjXG4gICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT4gdXBkYXRlIH5rZXkgfm9sZF9kYXRhOm9sZCB+bmV3X2RhdGE6bmV3XyBhY2MpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gIDs7XG5cbiAgbGV0IHdpdGhfY29tcGFyYXRvcicgZ2V0X2NvbXBhcmF0b3IgeCBmID1cbiAgICBJbmNyZW1lbnRhbC5iaW5kIChJbmNyZW1lbnRhbC5mcmVlemUgKEluY3JlbWVudGFsLm1hcCB4IH5mOmdldF9jb21wYXJhdG9yKSkgfmZcbiAgOztcblxuICAoKiogQ2FwdHVyZXMgdGhlIGNvbXBhcmF0b3IgKHdoaWNoIGNhbid0IGNoYW5nZSBhbnl3YXksIHNpbmNlIHRoZSB0eXBlIGRldGVybWluZXMgdGhlXG4gICAgICBjb21wYXJhdG9yKSBieSBmcmVlemluZyB0aGUgY29ycmVzcG9uZGluZyBtYXAuICBOb3RlIHRoYXQgYnkgZmlyc3QgdXNpbmcgSW5jcmVtZW50YWwubWFwIHRvXG4gICAgICBnZXQgdGhlIGNvbXBhcmF0b3Igb3V0IG9mIHRoZSBtYXAsIHdlIGFsbG93IHRoZSBpbml0aWFsIG1hcCBpdHNlbGYgdG8gYmUgZ2FyYmFnZVxuICAgICAgY29sbGVjdGVkICopXG4gIGxldCB3aXRoX2NvbXBhcmF0b3IgbWFwIGYgPSB3aXRoX2NvbXBhcmF0b3InIE1hcC5jb21wYXJhdG9yIG1hcCBmXG5cbiAgbGV0IG9mX3NldCBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGxldCBuZXdfb3V0cHV0ID1cbiAgICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgfmluaXQ6IW9sZF9vdXRwdXRcbiAgICAgICAgICAgIH5mOihmdW4gb3V0cHV0IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgIHwgU2Vjb25kIGsgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6ayB+ZGF0YTooKSlcbiAgICAgICAgaW5cbiAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgb2xkX291dHB1dCA6PSBuZXdfb3V0cHV0O1xuICAgICAgICBuZXdfb3V0cHV0KSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTppbnB1dF9kYXRhIC0+IGZfb3V0cHV0KVxuICAgID1cbiAgICB3aXRoX29sZCBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPSBnZW5lcmljX21hcGkgTWFwID9kYXRhX2VxdWFsIG1hcCB+ZlxuICBsZXQgZmlsdGVyX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID0gZ2VuZXJpY19tYXBpIEZpbHRlcl9tYXAgP2RhdGFfZXF1YWwgbWFwIH5mXG4gIGxldCBtYXAgP2RhdGFfZXF1YWwgbWFwIH5mID0gbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG4gIGxldCBmaWx0ZXJfbWFwID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIGkxIGkyIH5mID1cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAyIGkxIGkyIH5mOihmdW4gYTEgYTIgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYTEgYTIgaW5cbiAgICAgIG9sZCA6PSBTb21lIChhMSwgYTIsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgbWFwaV9jb3VudFxuICAgICAgICAodHlwZSBhIGNtcClcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfihjb21wYXJhdG9yIDpcbiAgICAgICAgICAgIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApKVxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGNvbXBhcmF0b3IpIGluXG4gICAgbGV0IGFkZCBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAudXBkYXRlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgbiAtPiBuICsgMSlcbiAgICBpblxuICAgIGxldCByZW1vdmUgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLmNoYW5nZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIDEgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbiAtPiBTb21lIChuIC0gMSkpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIE0uY29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gYWNjXG4gICAgICAgIGVsc2UgYWNjIHw+IHJlbW92ZSBwcmV2X2tleSB8PiBhZGQgbmV3X2tleSlcbiAgOztcblxuICBsZXQgbWFwX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6bWluX2hlbHBlciAobWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCB+ZjptYXhfaGVscGVyIChtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmJvdW5kc19oZWxwZXIgKG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWluID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWFwX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtaW5fdmFsdWUgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcGlfbW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWF4X3ZhbHVlID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdmFsdWVfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMiBsZWZ0X21hcCByaWdodF9tYXAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICBpblxuICAgICAgbGV0IGxlZnRfZGlmZiA9XG4gICAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfbGVmdF9tYXAgbmV3X2xlZnRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfbGVmdFxuICAgICAgaW5cbiAgICAgIGxldCByaWdodF9kaWZmID1cbiAgICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9yaWdodF9tYXAgbmV3X3JpZ2h0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBpblxuICAgICAgKCogV2UgbWVyZ2UgdGhlIHR3byBzaWRlcyBvZiB0aGUgZGlmZnMgdG9nZXRoZXIgc28gd2UgY2FuIG1ha2Ugc3VyZSB0byBoYW5kbGUgZWFjaFxuICAgICAgICAga2V5IGV4YWN0bHkgb25jZS4gVGhpcyByZWxpZXMgb24gc3ltbWV0cmljIGRpZmYgZ2l2aW5nIHNvcnRlZCBvdXRwdXQuICopXG4gICAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgICAgbGVmdF9kaWZmXG4gICAgICAgIHJpZ2h0X2RpZmZcbiAgICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+XG4gICAgICAgICAgY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSlcbiAgICAgIHw+IFNlcXVlbmNlLmZvbGQgfmluaXQ6b2xkX291dHB1dCB+ZjooZnVuIG91dHB1dCBkaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgbGV0IGtleSA9XG4gICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICB8IExlZnQgKGtleSwgXykgfCBSaWdodCAoa2V5LCBfKSAtPiBrZXlcbiAgICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChyaWdodF9rZXksIF8pKSAtPlxuICAgICAgICAgICAgYXNzZXJ0IChjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5ID0gMCk7XG4gICAgICAgICAgICBsZWZ0X2tleVxuICAgICAgICBpblxuICAgICAgICAoKiBUaGVzZSB2YWx1ZXMgcmVwcmVzZW50IHdoZXRoZXIgdGhlcmUgaXMgZGF0YSBmb3IgdGhlIGdpdmVuIGtleSBpbiB0aGUgbmV3XG4gICAgICAgICAgIGlucHV0IGluIHRoZSBsZWZ0IGFuZCByaWdodCBtYXAuICopXG4gICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgbGV0IG5ld19kYXRhID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICBuZXdfZGF0YSBsZWZ0X2RpZmYsIG5ld19kYXRhIHJpZ2h0X2RpZmZcbiAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT4gbmV3X2RhdGEgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+IE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhIHJpZ2h0X2RpZmZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9kYXRhX29wdCA9XG4gICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHgsIE5vbmUgLT4gZiB+a2V5IChgTGVmdCB4KVxuICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBmIH5rZXkgKGBCb3RoICh4LCB5KSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGxocyA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KGlucHV0X2RhdGEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoZl9vdXRwdXQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBsaHMgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGFjYyA6ICgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWFjYykgaW5cbiAgICBsZXQgKG9uX2lubmVyX2NoYW5nZSA6IGtleTona2V5IC0+IGZfb3V0cHV0IC0+IHVuaXQpID1cbiAgICAgIG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gZnVuIH5rZXkgZGF0YSAtPiBhY2MgOj0gTWFwLnNldCAhYWNjIH5rZXkgfmRhdGFcbiAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPlxuICAgICAgICBmdW4gfmtleSBvcHQgLT5cbiAgICAgICAgICBsZXQgb2xkID0gIWFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgICAgIDo9IChtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb2xkIGtleVxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvbGQgfmtleSB+ZGF0YSlcbiAgICBpblxuICAgIGxldCByZWMgbGhzX2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgbGhzIH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBkZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gTWFwLnJlbW92ZSAhYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAoZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCB1c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5GaWx0ZXJfbWFwXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InIE1hcF90eXBlLk1hcCA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9jdXRvZmYgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmYgPVxuICAgIG1lcmdlID9kYXRhX2VxdWFsX2xlZnQgP2RhdGFfZXF1YWxfcmlnaHQgbWFwMSBtYXAyIH5mOihmdW4gfmtleTpfIGRpZmYgLT4gU29tZSBkaWZmKVxuICAgIHw+IGZpbHRlcl9tYXBpJyA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oZGF0YV9lcXVhbCA6IHYgLT4gdiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhsZWZ0X3Jlc3VsdF9lcXVhbCA6IHYxIC0+IHYxIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KHJpZ2h0X3Jlc3VsdF9lcXVhbCA6IHYyIC0+IHYyIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOnYgLT4gdjEgKiB2MilcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgaW5wdXRfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSB8IGZhbHNlLCB0cnVlIC0+IGVtcHR5X21hcCwgZW1wdHlfbWFwXG4gICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBtYXBzIHVwIHBpZWNlIGJ5IHBpZWNlLCBzbyB3ZSBkbyB0aGlzIHdoZW5ldmVyIHdlXG4gICAgICAgICAgICAgICB0cmFuc2l0aW9uIGZyb20gXCJlbXB0eVwiIHRvIFwic29tZXRoaW5nXCIsIHdoaWNoIHdpbGwgYWxtb3N0IGFsd2F5c1xuICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgXywgciA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB+aW5pdDooIWxlZnRfYWNjLCAhcmlnaHRfYWNjKVxuICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChwcmV2LCBuZXdfKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuZXdfYSwgbmV3X2IgPSBmIH5rZXkgfmRhdGE6bmV3XyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBsZWZ0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6bmV3X2FcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiByaWdodF9yZXN1bHRfZXF1YWwgcHJldl9iIG5ld19iXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6bmV3X2JcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIGxlZnQga2V5LCBNYXAucmVtb3ZlIHJpZ2h0IGtleVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGVsZW1lbnQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOmEsIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpiKVxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhcmlnaHRfYWNjIHJpZ2h0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIHJpZ2h0X3Jlc3VsdDtcbiAgICAgICAgbGVmdF9hY2MgOj0gbGVmdDtcbiAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICBwcmV2X21hcCA6PSBtYXApXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGkgP2RhdGFfZXF1YWwgP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCB1bnppcCA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YToodiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICh2MSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudCAqICh2Miwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgbGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gbGVmdF9hY2MgOj0gTWFwLnNldCAhbGVmdF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gcmlnaHRfYWNjIDo9IE1hcC5zZXQgIXJpZ2h0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJlYyBpbnB1dF9jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2xlZnRfZGVwLCBfcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF9kZXA7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgbGVmdF9hY2MgOj0gTWFwLnJlbW92ZSAhbGVmdF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIHJpZ2h0X2FjYyA6PSBNYXAucmVtb3ZlICFyaWdodF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfaW5jciwgcmlnaHRfaW5jciA9IGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICBsZWZ0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIGxldCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToocmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBtYXBcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InID9jdXRvZmYgP2RhdGFfZXF1YWwgfmNvbXBhcmF0b3IgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IGtleXMgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LmFkZCBhY2Mga2V5IGluXG4gICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQucmVtb3ZlIGFjYyBrZXkgaW5cbiAgICAgIGxldCBkYXRhX2VxdWFsIF8gXyA9IHRydWUgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdDooU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0OihlbXB0eSwgZW1wdHkpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhOmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLnNldCBmaXJzdCB+a2V5IH5kYXRhLCBNYXAucmVtb3ZlIHNlY29uZCBrZXlcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAuc2V0IHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuYWRkX2V4biBmaXJzdCB+a2V5IH5kYXRhLCBzZWNvbmRcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IGZpcnN0LCBNYXAuYWRkX2V4biBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGE6XyAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5KSlcbiAgOztcblxuICBsZXQgZmxhdHRlbiBzdGF0ZSBtYXAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCByZXN1bHQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApKSBpblxuICAgIGxldCBub2RlID0gRS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHQpIGluXG4gICAgTWFwLml0ZXJpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGE6aW5jciAtPlxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5jciB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICByZXN1bHQgOj0gTWFwLnNldCAhcmVzdWx0IH5rZXkgfmRhdGE6YSkpKTtcbiAgICBFLk5vZGUud2F0Y2ggbm9kZVxuICA7O1xuXG4gIGxldCBqb2luX3dpdGhfY29tcGFyYXRvciBtYXBfaW5jciB+Y29tcGFyYXRvciA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbWFwX2luY3IgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcmVzdWx0X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgb2xkX21hcF9vZl9pbmNycyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0X21hcCkgaW5cbiAgICBsZXQgYWRkX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YV9ub2RlID1cbiAgICAgIGxldCBuZXdfZGVwID1cbiAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBkYXRhX25vZGUgfm9uX2NoYW5nZTooZnVuIGRhdGEgLT5cbiAgICAgICAgICByZXN1bHRfbWFwIDo9IE1hcC5zZXQgIXJlc3VsdF9tYXAgfmtleSB+ZGF0YSlcbiAgICAgIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IG5ld19kZXA7XG4gICAgICBNYXAuc2V0IGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6bmV3X2RlcFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgPVxuICAgICAgbGV0IGRlcCA9IE1hcC5maW5kX2V4biBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXkgaW5cbiAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByZXN1bHQgZGVwO1xuICAgICAgcmVzdWx0X21hcCA6PSBNYXAucmVtb3ZlICFyZXN1bHRfbWFwIGtleTtcbiAgICAgIE1hcC5yZW1vdmUgY3VycmVudF9kZXBlbmRlbmNpZXMga2V5XG4gICAgaW5cbiAgICBsZXQgbGhzX2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgbWFwX2luY3IgfmY6KGZ1biBtYXBfb2ZfaW5jcnMgLT5cbiAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICBtYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgIH5pbml0OiFjdXJyZW50X2RlcGVuZGVuY2llc1xuICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXlcbiAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfLCBkYXRhX25vZGUpIC0+XG4gICAgICAgICAgICAgICAgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB8PiBhZGRfc3Vibm9kZSB+a2V5IH5kYXRhX25vZGUpXG4gICAgICAgIGluXG4gICAgICAgIGN1cnJlbnRfZGVwZW5kZW5jaWVzIDo9IG5ld19kZXBlbmRlbmN5X21hcDtcbiAgICAgICAgb2xkX21hcF9vZl9pbmNycyA6PSBtYXBfb2ZfaW5jcnMpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGxoc19jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgam9pbiBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+IGpvaW5fd2l0aF9jb21wYXJhdG9yIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSBpbnB1dF9tYXAgfmRhdGFfZXF1YWwgPVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCBpblxuICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dF9tYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgc3RhdGUgPSBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGUgY29tcGFyYXRvciBpblxuICAgICAgbGV0IG91dHB1dF9tYXBfbm9kZSA9XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+IHN0YXRlLm91dHB1dF9tYXApXG4gICAgICBpblxuICAgICAgbGV0IG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsZXQgZGVwZW5kZW5jeSA9XG4gICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIChMYXp5LmZvcmNlX3ZhbCBpbnB1dF9tYXBfY2hhbmdlZClcbiAgICAgICAgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSBkZXBlbmRlbmN5XG4gICAgICBpblxuICAgICAgKCogV2Ugd2FudCB0byBtYWtlIG5vZGVzIGRlcGVuZCBvbiBbaW5wdXRfbWFwX2NoYW5nZWRdIHNvIHRoYXQgW2lucHV0X21hcF9jaGFuZ2VkXVxuICAgICAgICAgaXMgYWxsb3dlZCB0byBtYWtlIHRoZW0gc3RhbGUsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgZm9yIGFueVxuICAgICAgICAgb3RoZXIgcmVhc29uLiBTbyB3ZSBtYWtlIFtpbnB1dF9tYXBfY2hhbmdlZF0gYSB1bml0IGluY3JlbWVudGFsICh0aGF0IHRoZXJlZm9yZVxuICAgICAgICAgbmV2ZXIgY2hhbmdlcykgYW5kIHRoaXMgd2F5IFtvdXRwdXRfbWFwX25vZGVdIGFuZCB0aGUgbG9va3VwIG5vZGVzIHdpbGwgb25seSBiZVxuICAgICAgICAgcmVjb21wdXRlZCB3aGVuIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFkZSBzdGFsZS5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgbGV0IHByZXZfaW5wdXRfbWFwID0gc3RhdGUuaW5wdXRfbWFwIGluXG4gICAgICAgICAgICAgbGV0IGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICBwcmV2X2lucHV0X21hcFxuICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgfmluaXQ6KHN0YXRlLmV4cGVydF9ub2Rlcywgc3RhdGUub3V0cHV0X21hcClcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biAoZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF9vbGRfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBvbGRfbm9kZSA9IE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICBNYXAucmVtb3ZlIGV4cGVydF9ub2RlcyBrZXksIE1hcC5yZW1vdmUgb3V0cHV0X21hcCBrZXlcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlX3N0YXRlLmNyZWF0ZV9sb29rdXBfbm9kZSBpbmNyZW1lbnRhbF9zdGF0ZSBzdGF0ZSBrZXlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICwgTWFwLmFkZF9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlKSApXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoX29sZF92YWx1ZSwgX25ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgc3RhdGUuZXhwZXJ0X25vZGVzIDwtIGV4cGVydF9ub2RlcztcbiAgICAgICAgICAgICBzdGF0ZS5vdXRwdXRfbWFwIDwtIG91dHB1dF9tYXApKVxuICAgICAgaW5cbiAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgb3V0cHV0X21hcF9ub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG91dHB1dF9tYXBfbm9kZSlcbiAgOztcblxuICAoKiBKdXN0IGZvciBkZXJpdmluZyBzdHJ1Y3R1cmFsIGVxdWFsaXR5LiAqKVxuICB0eXBlICdhIG1heWJlX2JvdW5kX3N0cnVjdHVyYWxseSA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICAgIHwgSW5jbCBvZiAnYVxuICAgIHwgRXhjbCBvZiAnYVxuICAgIHwgVW5ib3VuZGVkXG4gIFtAQGRlcml2aW5nIGVxdWFsXVxuXG4gIGxldCBzdWJyYW5nZVxuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIG1hcF9pbmNyIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgcmFuZ2UgLT5cbiAgICAgIGxldCBjb21wYXJlID0gKE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgbGV0IGVxdWFsIGwgciA9IGNvbXBhcmUgbCByID0gMCBpblxuICAgICAgbGV0ICggPiApIGEgYiA9IGNvbXBhcmUgYSBiID4gMFxuICAgICAgYW5kICggPj0gKSBhIGIgPSBjb21wYXJlIGEgYiA+PSAwIGluXG4gICAgICBsZXQgbWF5YmVfYm91bmRfZXF1YWwgYSBiIDogYm9vbCA9IGVxdWFsX21heWJlX2JvdW5kX3N0cnVjdHVyYWxseSBlcXVhbCBhIGIgaW5cbiAgICAgIGxldCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXggOiBib29sID1cbiAgICAgICAgbWF0Y2ggbWluLCBtYXggd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCwgKFVuYm91bmRlZCB8IEV4Y2wgXyB8IEluY2wgXykgfCAoRXhjbCBfIHwgSW5jbCBfKSwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsXG4gICAgICAgICAgICAgICAgICB+ZXExOm1heWJlX2JvdW5kX2VxdWFsXG4gICAgICAgICAgICAgICAgICB+ZXEyOm1heWJlX2JvdW5kX2VxdWFsXG4gICAgICAgICAgICAgICAgICBvbGRfcmFuZ2VcbiAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogVGhlcmUgYXJlIG5vIGtleXMgdG8gcmVtb3ZlIGFuZCBldmVyeXRoaW5nIGluIHJhbmdlIGlzIHVwZGF0ZWQuICopXG4gICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgKCogUmVtb3ZlIGFueSBrZXlzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlXG4gICAgICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICB+bG93ZXJfYm91bmQ6bWluXG4gICAgICAgICAgICAgICAgICAgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICgqIEFkZCBpbiBhbnkga2V5cyB3aGljaCBhcmUgaW4gdGhlIG5ldyByYW5nZSBidXQgbm90IHRoZSBvbGQgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBsZXQgbWFwX2FwcGVuZF9leG4gbG93ZXJfcGFydCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgICAgICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbXBvc3NpYmxlIGNhc2U6IEJVRyBpbiBpbmNyX21hcC5tbCBzdWJyYW5nZVwiXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBsb3dlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooSW5jbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihFeGNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgIGFuZCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEluY2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooRXhjbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG1hcF9hcHBlbmRfZXhuXG4gICAgICAgICAgICAgICAgICAgbG93ZXJfcGFydFxuICAgICAgICAgICAgICAgICAgIChtYXBfYXBwZW5kX2V4biB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIHVwcGVyX3BhcnQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UpKSkpXG4gIDs7XG5cbiAgbGV0IHJla2V5ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBtYXBfaW5jclxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIG91dHB1dCAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTooZiB+a2V5IH5kYXRhKSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIG91dHB1dCAtPiBNYXAucmVtb3ZlIG91dHB1dCAoZiB+a2V5IH5kYXRhKSlcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgb3V0cHV0IC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiAoTWFwLmNvbXBhcmF0b3Igb3V0cHV0KS5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gTWFwLnNldCBvdXRwdXQgfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhXG4gICAgICAgIGVsc2UgTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgfD4gTWFwLmFkZF9leG4gfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieWkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+aW5kZXggPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIGlubmVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvblxuICAgICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgaW5kZXhfYnlpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKG1hcCA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKGtleSA6IChrLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgc2FtZV9rZXkgYSBiID0gY29tcGFyZV9rZXkgYSBiID0gMCBpblxuICAgICAgbGV0IHdoZW5fa2V5X2NoYW5nZWQgfm1hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmsgPVxuICAgICAgICBpZiBjb21wYXJlX2tleSBuZXdfa2V5IG9sZF9rZXkgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIHRoZSBuZXcga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgb2xkIGtleSwgZmluZCB0aGUgc2l6ZSBvZiB0aGUgbWFwIHN1YnJhbmdlXG4gICAgICAgICAgICAgYmV0d2VlbiB0aGVtIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgbmV3X2tleSwgRXhjbCBvbGRfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgLSBNYXAubGVuZ3RoIHN1YnJhbmdlIC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogT3RoZXJ3aXNlLCB0aGUgbmV3IGtleSBpcyBsYXJnZXIgdGhhbiB0aGUgb2xkIGtleSwgc28gZmluZCB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgICAgICBtYXAgc3VicmFuZ2UgYmV0d2VlbiB0aGVtIGFuZCBhZGQgaXQgdG8gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBvbGRfa2V5LCBFeGNsIG5ld19rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayArIE1hcC5sZW5ndGggc3VicmFuZ2UgKyAxKVxuICAgICAgaW5cbiAgICAgIGxldCB3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAoKiBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBkYXRhLCBzbyBvcHRpbWl6ZSB0aGVzZSBjaGVja3MgKilcbiAgICAgICAgICB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKVxuICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICBuZXdfbWFwXG4gICAgICAgICAgfmluaXQ6b2xkX3JhbmtcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoZGlmZl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjIC0gMVxuICAgICAgICAgICAgfCBgUmlnaHQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjICsgMVxuICAgICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHByb2Nlc3MgfihvbGQgOiAoKGssIHYsIF8pIE1hcC50ICogXyAqIF8pIG9wdGlvbikgbmV3X21hcCAobmV3X2tleSA6IGspID1cbiAgICAgICAgaWYgbm90IChNYXAubWVtIG5ld19tYXAgbmV3X2tleSlcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBhbmQga2V5IGFyZSB0aGUgc2FtZSwganVzdCByZXVzZSB0aGUgb2xkIHJhbmsgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIG9sZF9yYW5rKVxuICAgICAgICAgICAgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAmJiBzYW1lX2tleSBvbGRfa2V5IG5ld19rZXkgLT4gb2xkX3JhbmtcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGlzIHRoZSBzYW1lIGJ1dCB0aGUga2V5IGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fa2V5X2NoYW5nZWQgfm1hcDpuZXdfbWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiB0aGUga2V5IGlzIHRoZSBzYW1lIGJ1dCB0aGUgbWFwIGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gc2FtZV9rZXkgbmV3X2tleSBvbGRfa2V5IC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXk6bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgYm90aCB0aGUgbWFwIGFuZCB0aGUga2V5IGNoYW5nZWQsIHRoaXMgY2FuIGJlIHNpbXVsYXRlZCBhcyB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdpbmcgZm9sbG93ZWQgYnkgdGhlIGtleSBjaGFuZ2luZyAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgLT5cbiAgICAgICAgICAgICgqIFdlIGNhbGwgW3Byb2Nlc3NdIHJlY3Vyc2l2ZWx5IGluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZ1xuICAgICAgICAgICAgICAgW3doZW5fbWFwX2NoYW5nZWRdIGZvbGxvd2VkIGJ5IFt3aGVuX2tleV9jaGFuZ2VkXSBzaW5jZSBpdCBtaWdodCBiZSB0aGVcbiAgICAgICAgICAgICAgIGNhc2UgdGhhdCBbb2xkX2tleV0gaXMgaW4gW29sZF9tYXBdIGFuZCBbbmV3X2tleV0gaXMgaW4gW25ld19tYXBdLCBidXRcbiAgICAgICAgICAgICAgIFtvbGRfa2V5XSBpcyBub3QgaW4gW25ld19tYXBdLiAqKVxuICAgICAgICAgICAgbGV0IG9sZF9yYW5rID1cbiAgICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSkgbmV3X21hcCBvbGRfa2V5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChuZXdfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaykpIG5ld19tYXAgbmV3X2tleVxuICAgICAgICAgICgqIElmIHRoZSBwcmV2aW91cyBrZXkgd2FzIG5vdCBpbiB0aGUgbWFwIG9yIHRoaXMgaXMgdGhlIGZpcnN0IHN0YWJpbGl6YXRpb24sXG4gICAgICAgICAgICAgY29tcHV0ZSB0aGUgcmFuayBmcm9tIHNjcmF0Y2ggKilcbiAgICAgICAgICB8IFNvbWUgKF8sIF8sIE5vbmUpIHwgTm9uZSAtPiBNYXAucmFuayBuZXdfbWFwIG5ld19rZXkpXG4gICAgICBpblxuICAgICAgd2l0aF9vbGQyIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwIDogKChrLCBfLCBfKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKHJhbmdlIDogKGludCBNYXliZV9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIGxldCBmaW5kX2tleV9yYW5nZSAocmFuZ2UgOiAoaW50ICogaW50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgOiAoKGsgKiBrIG9wdGlvbikgb3B0aW9uLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICA9XG4gICAgICB3aXRoX29sZDIgbWFwIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBNYXAuY29tcGFyYXRvclxuICAgICAgLT4gKChrMSwgKGsyLCB2LCBrMl9jbXApIE1hcC50LCBrMV9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiAoKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgZnVuID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgazJfY29tcGFyYXRvcilcbiAgICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgICAgfnVwZGF0ZVxuICAgICAgICAgIH5hZGRcbiAgICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZV9ieVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXAgY29tYmluZWRfa2V5IGNvbWJpbmVkX2NtcClcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4obWVyZ2Vfa2V5cyA6IG91dGVyX2tleSAtPiBpbm5lcl9rZXkgLT4gY29tYmluZWRfa2V5KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoY29tYmluZWRfa2V5LCBjb21iaW5lZF9jbXApIE1hcC5jb21wYXJhdG9yKVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IGNvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnNldCBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YTpuZXdfZGF0YSlcbiAgICAgIH5hZGQ6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5hZGRfZXhuIGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhKVxuICAgICAgfnJlbW92ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAucmVtb3ZlIGFjYyAobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIE1hcC5jb21wYXJhdG9yKVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBvdXRlcl9jb21wYXJhdG9yIC0+XG4gICAgICBsZXQgbW9kdWxlIENtcCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBvdXRlcl9rZXkgKiBpbm5lcl9rZXlcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAob3V0ZXJfY21wLCBpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9XG4gICAgICAgICAgbGV0IGlubmVyX2NvbXBhcmF0b3IgPVxuICAgICAgICAgICAgbGV0IG1vZHVsZSBNID0gKHZhbCBpbm5lcl9jb21wYXJhdG9yKSBpblxuICAgICAgICAgICAgTS5jb21wYXJhdG9yXG4gICAgICAgICAgaW5cbiAgICAgICAgICBUdXBsZTIuY29tcGFyYXRvciBvdXRlcl9jb21wYXJhdG9yIGlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGNvbGxhcHNlX2J5XG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5tZXJnZV9rZXlzOlR1cGxlMi5jcmVhdGVcbiAgICAgICAgfmNvbXBhcmF0b3I6KG1vZHVsZSBDbXApKVxuICA7O1xuXG4gIGxldCBleHBhbmQgP2RhdGFfZXF1YWwgbWFwX2luY3Igfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgbmV3X2RhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5zZXQgbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhOm5ld19kYXRhKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBkYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuYWRkX2V4biBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGEpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAuY2hhbmdlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAgICAgICBsZXQgbWFwID0gTWFwLnJlbW92ZSBtYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICBPcHRpb24uc29tZV9pZiAobm90IChNYXAuaXNfZW1wdHkgbWFwKSkgbWFwKSlcbiAgOztcblxuICBsZXQgY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDowXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50IC0gMSBlbHNlIGNvdW50KVxuICA7O1xuXG4gIGxldCBjb3VudCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIChjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYpIH5mOihmdW4gY291bnQgLT4gY291bnQgPD4gMClcbiAgOztcblxuICBsZXQgZXhpc3RzID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBleGlzdHNpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6ICgoXywgXywgXykgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChtb2R1bGUgR3JvdXAgOiBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9IHUpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0Okdyb3VwLnplcm9cbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCArICkgYWNjIChmIHYpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oIC0gKSBhY2MgKGYgdikpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZm9yX2FsbGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgPSBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgZW5kXG5cbiAgbW9kdWxlIExvb2t1cCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2LCAndykgZW50cnkgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX3ZhbHVlIDogJ3Ygb3B0aW9uXG4gICAgICA7IG5vZGUgOiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgICgqIFdlIG1heSBoYXZlIG11bHRpcGxlIGVudHJpZXMgcGVyIGtleSBpZiBub2RlcyBiZWNvbWUgbmVjZXNzYXJ5IGFnYWluIGFmdGVyIGJlaW5nXG4gICAgICAgICByZW1vdmVkLiAqKVxuICAgICAgOyBtdXRhYmxlIGxvb2t1cF9lbnRyaWVzIDogKCdrLCAoJ3YsICd3KSBlbnRyeSBsaXN0LCAnY21wKSBNYXAudFxuICAgICAgOyB1cGRhdGVyX25vZGUgOiAodW5pdCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIDsgc2NvcGUgOiAndyBJbmNyZW1lbnRhbC5TY29wZS50XG4gICAgICB9XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGUgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbCkgaW5wdXRfbWFwIH5jb21wYXJhdG9yID1cbiAgICAgIGxldCByZWMgc2VsZiA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAobGV0IHVwZGF0ZXJfbm9kZSA9XG4gICAgICAgICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgICAgbGV0IChsYXp5IHNlbGYpID0gc2VsZiBpblxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gKCkgKGtleSwgY2hhbmdlZF92YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZW50cmllcyA9IE1hcC5maW5kX211bHRpIHNlbGYubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgIDwtIChtYXRjaCBjaGFuZ2VkX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3X3ZhbHVlIHwgYFVuZXF1YWwgKF8sIG5ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIGVudHJ5Lm5vZGUpKTtcbiAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwIDwtIGlucHV0X21hcClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgIHsgc2F2ZWRfbWFwID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgbG9va3VwX2VudHJpZXMgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyB1cGRhdGVyX25vZGVcbiAgICAgICAgICAgOyBzY29wZSA9IEluY3JlbWVudGFsLlNjb3BlLmN1cnJlbnQgKEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCkgKClcbiAgICAgICAgICAgfSlcbiAgICAgIGluXG4gICAgICBMYXp5LmZvcmNlIHNlbGZcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgbGV0IGN1cnJlbnRfZW50cmllcyA9IE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICBsZXQgaXNfbGlua2VkID0gTGlzdC5leGlzdHMgY3VycmVudF9lbnRyaWVzIH5mOihwaHlzX2VxdWFsIGVudHJ5KSBpblxuICAgICAgaWYgQm9vbC5lcXVhbCBpc19saW5rZWQgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaWYgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSBNYXAudXBkYXRlIHQubG9va3VwX2VudHJpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSAob3RoZXJfZW50cnkgOjogXyBhcyBvdGhlcl9lbnRyaWVzKSAtPlxuICAgICAgICAgICAgKCogVXBkYXRlIHRoaXMgZW50cnkncyB2YWx1ZSB0byBiZSBjdXJyZW50LiAqKVxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gb3RoZXJfZW50cnkuc2F2ZWRfdmFsdWU7XG4gICAgICAgICAgICBlbnRyeSA6OiBvdGhlcl9lbnRyaWVzXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBbXSAtPlxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5O1xuICAgICAgICAgICAgWyBlbnRyeSBdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfZW50cmllcyA9XG4gICAgICAgICAgTGlzdC5maWx0ZXIgY3VycmVudF9lbnRyaWVzIH5mOihmdW4geCAtPiBub3QgKHBoeXNfZXF1YWwgZW50cnkgeCkpXG4gICAgICAgIGluXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gKGlmIExpc3QuaXNfZW1wdHkgbmV3X2VudHJpZXNcbiAgICAgICAgICAgIHRoZW4gTWFwLnJlbW92ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleVxuICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHQubG9va3VwX2VudHJpZXMgfmtleSB+ZGF0YTpuZXdfZW50cmllcykpXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5ID1cbiAgICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIHQudXBkYXRlcl9ub2RlIGluXG4gICAgICBJbmNyZW1lbnRhbC5TY29wZS53aXRoaW4gaW5jcmVtZW50YWxfc3RhdGUgdC5zY29wZSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxldCByZWMgZW50cnkgPVxuICAgICAgICAgIGxhenlcbiAgICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgPSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXlcbiAgICAgICAgICAgIDsgbm9kZSA9XG4gICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlXG4gICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiAoZm9yY2UgZW50cnkpLnNhdmVkX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkpXG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICAgIGVudHJ5Lm5vZGVcbiAgICAgICAgICAoSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIHQudXBkYXRlcl9ub2RlKTtcbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCBrZXkgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgd2l0aFxuICAgICAgfCBlbnRyeSA6OiBfIC0+IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGVcbiAgICAgIHwgW10gLT4gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5XG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgPSBzdHJ1Y3RcbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl9lbnRyeSBzZXhwX29mX3ZhbHVlIGVudHJ5ID1cbiAgICAgICAgbGV0IHsgc2F2ZWRfdmFsdWU7IG5vZGUgfSA9IGVudHJ5IGluXG4gICAgICAgIGxldCBub2RlID0gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSBpblxuICAgICAgICBbJXNleHBcbiAgICAgICAgICB7IHNhdmVkX3ZhbHVlIDogdmFsdWUgb3B0aW9uXG4gICAgICAgICAgOyBub2RlX2luZm8gPSAoSW5jcmVtZW50YWwudXNlcl9pbmZvIG5vZGUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfY29uc3QgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKEluY3JlbWVudGFsLmlzX2NvbnN0IG5vZGUpICgpIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKSA6ICh1bml0IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfdW5uZWNlc3NhcnkgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKG5vdCAoSW5jcmVtZW50YWwuaXNfbmVjZXNzYXJ5IG5vZGUpKSAoKSA6ICh1bml0IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfV1cbiAgICAgIDs7XG5cbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICAgIGxldCBpbmZvX3Blcl9rZXkgPVxuICAgICAgICAgIE1hcC5tZXJnZSB0LnNhdmVkX21hcCB0Lmxvb2t1cF9lbnRyaWVzIH5mOihmdW4gfmtleSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgYWN0dWFsX3ZhbHVlLCBlbnRyaWVzID1cbiAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgeCAtPiBTb21lIHgsIFtdXG4gICAgICAgICAgICAgIHwgYFJpZ2h0IHkgLT4gTm9uZSwgeVxuICAgICAgICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBTb21lIHgsIHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsga2V5IDoga2V5XG4gICAgICAgICAgICAgICAgOyBhY3R1YWxfdmFsdWUgOiAodmFsdWUgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgICAgICAgICAgOyBlbnRyaWVzIDogdmFsdWUgZW50cnkgbGlzdFxuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICBpblxuICAgICAgICBTZXhwLkxpc3QgKE1hcC5kYXRhIGluZm9fcGVyX2tleSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICBhbmQgdHlwZSAnYSBJbmNyLkN1dG9mZi50ID0gJ2EgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBHZW5lcmljLkxvb2t1cC50XG5lbmRcblxubW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbiAgdGhlblxuICAgIHByaW50X3NcbiAgICAgIFslbWVzc2FnZSBcIkRvd25sb2FkIHRyaWdnZXJlZFwiIChmaWxlbmFtZSA6IHN0cmluZykgKG1pbWV0eXBlIDogc3RyaW5nKSBjb250ZW50c11cbiAgZWxzZSAoXG4gICAgKCogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzI4ODkxLzU1ODU5MiAqKVxuICAgIGxldCBhID0gRG9tX2h0bWwuY3JlYXRlQSBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIGxldCBjb250ZW50c19iaWdzdHIgPVxuICAgICAgVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIChCaWdzdHJpbmcub2Zfc3RyaW5nIGNvbnRlbnRzKVxuICAgIGluXG4gICAgbGV0IGJsb2IgPVxuICAgICAgKCogRG9uJ3QgdXNlIFtibG9iX2Zyb21fc3RyaW5nXS4gVGhhdCBoYXMgYW4gYXR0cmFjdGl2ZSB0eXBlIGJ1dCB3b3JrcyBieSBmaXJzdFxuICAgICAgICAgY29udmVydGluZyBvdXIgT0NhbWwgc3RyaW5nIHRvIGEgSmF2YXNjcmlwdCBzdHJpbmcsIHdoaWNoIGNvbnZlcnRzIHRvXG4gICAgICAgICBVVEYtMTYuIElmIHRoZSBzdHJpbmcgY29udGFpbnMgcmFuZG9tIGJpbmFyeSBkYXRhIHRoYXQgd2lsbCBkaXN0b3J0IGl0LiAqKVxuICAgICAgRmlsZS5ibG9iX2Zyb21fYW55IFsgYGFycmF5QnVmZmVyIGNvbnRlbnRzX2JpZ3N0ciBdIH5jb250ZW50VHlwZTptaW1ldHlwZVxuICAgIGluXG4gICAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTCBibG9iIGluXG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJocmVmXCIpIHVybDtcbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImRvd25sb2FkXCIpIChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIGEjI2NsaWNrO1xuICAgIERvbV9odG1sLndpbmRvdyMjLl9VUkwjI3Jldm9rZU9iamVjdFVSTCB1cmwpXG47O1xuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyhlbmFibGVkID0gdHJ1ZSlcbiAgICAgICAgPyhvbl9jbGljayA9IGZ1biBfIC0+IFZkb20uRWZmZWN0Lklnbm9yZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICB+Z2V0X2Rvd25sb2FkXG4gICAgICAgIH5idXR0b25fdGV4dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb3BlbiBWZG9tIGluXG4gICAgbGV0IHRyaWdnZXJfY3N2X2Rvd25sb2FkIGV2ID1cbiAgICAgIHRyaWdnZXIgKGdldF9kb3dubG9hZCAoKSk7XG4gICAgICBvbl9jbGljayBldlxuICAgIGluXG4gICAgbGV0IGVuYWJsZWRfZGlzYWJsZWQgPVxuICAgICAgaWYgZW5hYmxlZCB0aGVuIFtdIGVsc2UgWyBBdHRyLmRpc2FibGVkOyBBdHRyLnN0eWxlIChDc3NfZ2VuLmNvbG9yIChgTmFtZSBcImdyZXlcIikpIF1cbiAgICBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIGV4dHJhX2F0dHJzOyBlbmFibGVkX2Rpc2FibGVkOyBbIEF0dHIub25fY2xpY2sgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgXSBdXG4gICAgICB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgTm9kZS5idXR0b24gfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGF0dHJzKSBbIE5vZGUudGV4dCBidXR0b25fdGV4dCBdXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBJbmNyID0gSW5jcmVtZW50YWwuTWFrZSAoKVxuXG4oKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNsb2NrIGZvciBydW5uaW5nIGNsaWVudHMsIGJ1dCBib25zYWkgdGVzdHMgaGF2ZSB0aGVpclxuICAgb3duIHNlcGFyYXRlIGNsb2NrcyAqKVxubGV0IGNsb2NrID0gSW5jci5DbG9jay5jcmVhdGUgfnN0YXJ0OihUaW1lX25zLm5vdyAoKSkgKClcblxuaW5jbHVkZSBJbmNyXG5tb2R1bGUgTWFwID0gSW5jcl9tYXAuTWFrZSAoSW5jcilcbm1vZHVsZSBTZWxlY3QgPSBJbmNyX3NlbGVjdC5NYWtlIChJbmNyKVxuIiwib3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBDb3JlXG5cbnR5cGUgKCdhY3Rpb24sICdtb2RlbCwgJ3N0YXRlLCAnZXh0cmEpIHdpdGhfZXh0cmEgPVxuICB7IGFwcGx5X2FjdGlvbiA6ICdhY3Rpb24gLT4gJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiB1bml0XG4gIDsgZXh0cmEgOiAnZXh0cmFcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG50eXBlICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCkgdCA9ICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCwgdW5pdCkgd2l0aF9leHRyYVxuXG5sZXQgY3JlYXRlX3dpdGhfZXh0cmEgP2FwcGx5X2FjdGlvbiA/dXBkYXRlX3Zpc2liaWxpdHkgP29uX2Rpc3BsYXkgfmV4dHJhIG1vZGVsIHZpZXcgPVxuICBsZXQgYXBwbHlfYWN0aW9uID1cbiAgICBPcHRpb24udmFsdWUgYXBwbHlfYWN0aW9uIH5kZWZhdWx0OihmdW4gXyBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ID1cbiAgICBPcHRpb24udmFsdWUgdXBkYXRlX3Zpc2liaWxpdHkgfmRlZmF1bHQ6KGZ1biB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCBvbl9kaXNwbGF5ID0gT3B0aW9uLnZhbHVlIG9uX2Rpc3BsYXkgfmRlZmF1bHQ6KGZ1biBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiAoKSkgaW5cbiAgeyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5OyBleHRyYTsgdmlldyB9XG47O1xuXG5sZXQgY3JlYXRlID0gY3JlYXRlX3dpdGhfZXh0cmEgfmV4dHJhOigpXG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG4oKiogQ29tbW9uIG1vZHVsZSB0eXBlcyAqKVxubW9kdWxlIHR5cGUgTW9kZWwgPSBzaWdcbiAgdHlwZSB0XG5cblxuICAoKiogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBlbm91Z2ggdG8gcmVxdWlyZSByZWZpcmluZ1xuICAgICAgdGhlIGluY3JlbWVudGFsIGdyYXBoLlxuXG4gICAgICBJdCdzIGJlc3QgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbW9kZWwgc3VwcG9ydCBhIHNlbWFudGljYWxseSByZWFzb25hYmxlIGN1dG9mZlxuICAgICAgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgYXZvaWQgaW5maW5pdGUgcmVjb21wdXRhdGlvbiBsb29wcyB0aGF0IGNhbiBvdGhlcndpc2UgYmVcbiAgICAgIHRyaWdnZXJlZCBieSB0aGUgdmlzaWJpbGl0eSBjaGVja3MuIEZvciB0aGlzIHJlYXNvbiwgaXQncyB0eXBpY2FsbHkgYSBnb29kIGlkZWEgdG9cbiAgICAgIGF2b2lkIGhhdmluZyBzaW1wbGUgY2xvc3VyZXMgc3RvcmVkIGluIHRoZSBtb2RlbC5cblxuICAgICAgVGhhdCBzYWlkLCBpdCBkb2VzIHdvcmsgaWYgeW91IHB1dCBwaHlzX2VxdWFsIGluIGZvciB0aGUgY3V0b2ZmLiAqKVxuICB2YWwgY3V0b2ZmIDogdCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY3Rpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgU3RhdGUgPSBzaWdcbiAgKCoqIFJlcHJlc2VudHMgdGhlIGltcGVyYXRpdmUgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLCB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICAgIGhvdXNpbmcgdGhpbmdzIGxpa2UgY29tbXVuaWNhdGlvbiBBc3luYy1SUEMgY29ubmVjdGlvbnMuICopXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICgqKiBbb25fc3RhcnR1cF0gaXMgY2FsbGVkIG9uY2UsIHJpZ2h0IGFmdGVyIHRoZSBpbml0aWFsIERPTSBpcyBzZXQgdG8gdGhlIHZpZXcgdGhhdFxuICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkb2luZyB0aGluZ3MgbGlrZSBzdGFydGluZyB1cFxuICAgICAgYXN5bmMgcHJvY2Vzc2VzLiAgTm90ZSB0aGF0IHRoaXMgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBhbnlcbiAgICAgIGluY3JlbWVudGFsaXR5LCBzaW5jZSBpdCdzIG9ubHkgcnVuIG9uY2UuICopXG4gIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICgqKiBbY3JlYXRlXSBpcyBhIGZ1bmN0aW9uIHRoYXQgaW5jcmVtZW50YWxseSBjb25zdHJ1Y3RzIGEgeyFDb21wb25lbnR9LiBOb3RlIHRoYXQgYVxuICAgICAgW0NvbXBvbmVudF0gc3VwcG9ydHMgZnVuY3Rpb25zIGxpa2UgW2FwcGx5X2FjdGlvbl0sIHdoaWNoIHJldHVybiBhIG5ldyBbTW9kZWwudF0sXG4gICAgICB3aXRob3V0IHRha2luZyBhIG1vZGVsIGFzIGFuIGV4cGxpY2l0IGlucHV0LiAgVGhlIGludGVudCBpcyBmb3IgW2FwcGx5X2FjdGlvbl0gdG9cbiAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IG1vZGVsIHZpYSBpdHMgY29uc3RydWN0aW9uXG5cbiAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIG1pZ2h0IGxvb2sgaW4gcHJhY3RpY2UuXG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHsgY291bnRlciA6IGludCB9IFtAQGRlcml2aW5nIGZpZWxkcywgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBjdXRvZmYgdDEgdDIgPSBjb21wYXJlIHQxIHQyID0gMFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0XG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBJbmNyZW1lbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGxldCBzaG91bGRfbG9nIF8gPSBmYWxzZVxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgaW5pdGlhbF9tb2RlbCA9IHsgTW9kZWwuY291bnRlciA9IDAgfVxuXG4gICAgICAgIGxldCBvbl9zdGFydHVwIH5zY2hlZHVsZV9hY3Rpb25zIF9tb2RlbCA9XG4gICAgICAgICAgZXZlcnkgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbnMgWyBBY3Rpb24uSW5jcmVtZW50IF0pO1xuICAgICAgICAgIERlZmVycmVkLnVuaXRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6XyB+aW5qZWN0Ol8gPVxuICAgICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICAgIGxldCVtYXAgYXBwbHlfYWN0aW9uID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICBmdW4gKEluY3JlbWVudCA6IEFjdGlvbi50KSBfIH5zY2hlZHVsZV9hY3Rpb25zOl8gLT5cbiAgICAgICAgICAgICAgeyBNb2RlbC5jb3VudGVyID0gY291bnRlciArIDEgfVxuICAgICAgICAgIGFuZCB2aWV3ID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9XG4gICAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICAgIFZkb20uTm9kZS5kaXYgW10gWyBWZG9tLk5vZGUudGV4dCAoSW50LnRvX3N0cmluZyBjb3VudGVyKSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVmRvbS5Ob2RlLmJvZHkgW10gWyBjb3VudGVyIF1cbiAgICAgICAgICBhbmQgbW9kZWwgPSBtb2RlbCBpblxuICAgICAgICAgICgqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIFtvbl9kaXNwbGF5XSBvciBbdXBkYXRlX3Zpc2liaWxpdHldLCBzaW5jZVxuICAgICAgICAgICAgIHRoZXNlIGFyZSBvcHRpb25hbCBhcmd1bWVudHMgKilcbiAgICAgICAgICBDb21wb25lbnQuY3JlYXRlIH5hcHBseV9hY3Rpb24gbW9kZWwgdmlld1xuICAgICAgICA7OyBdfVxuXG4gICAgICBUaGUgZnVsbCBjb2RlIGZvciB0aGlzIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluIGV4YW1wbGVzL2NvdW50ZXIuXG4gICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBNb2RlbC50IEluY3IudFxuICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICgqKiBbb2xkX21vZGVsXSBjb250YWlucyB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbW9kZWwgKilcbiAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAoKiogW2luamVjdF0gZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBldmVudCBoYW5kbGVycyBpbiB0aGUgdmlydHVhbCBET00uIEluXG4gICAgICAgIHlvdXIgZXZlbnQgaGFuZGxlciwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBhY3Rpb24geW91IHdvdWxkIGxpa2UgdG9cbiAgICAgICAgc2NoZWR1bGUuIFZpcnR1YWwgRE9NIHdpbGwgYXV0b21hdGljYWxseSBkZWxlZ2F0ZSB0aGF0IGFjdGlvbiBiYWNrIHRvIHRoZVxuICAgICAgICBbU3RhcnRfYXBwXSBtYWluIGxvb3AuICopXG4gICAgLT4gKEFjdGlvbi50LCBNb2RlbC50LCBTdGF0ZS50KSBDb21wb25lbnQudCBJbmNyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICB0eXBlICgnc3RhdGUsICdtb2RlbCwgJ2FjdGlvbikgc25hcHNob3QgPVxuICAgIHsgdmlldyA6IFZkb20uTm9kZS50XG4gICAgOyBhcHBseV9hY3Rpb24gOlxuICAgICAgICAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsIC0+ICdhY3Rpb24gLT4gJ21vZGVsXG4gICAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6ICdtb2RlbCAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWxcbiAgICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cblxuICBtb2R1bGUgdHlwZSBTX2Zvcl9ib25zYWkgPSBzaWdcbiAgICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICAgIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICAgdmFsIGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIDogQWN0aW9uLnQgLT4gYm9vbFxuICAgIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgICAtPiAoU3RhdGUudCwgTW9kZWwudCwgQWN0aW9uLnQpIHNuYXBzaG90IEluY3IudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgUmVjdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdG9wIDogJ2FcbiAgICA7IGxlZnQgOiAnYVxuICAgIDsgYm90dG9tIDogJ2FcbiAgICA7IHJpZ2h0IDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgeyB0b3AgPSBmIHQudG9wOyBsZWZ0ID0gZiB0LmxlZnQ7IGJvdHRvbSA9IGYgdC5ib3R0b207IHJpZ2h0ID0gZiB0LnJpZ2h0IH1cbiAgOztcblxuICBsZXQgaW50X2hlaWdodCB0ID0gdC5ib3R0b20gLSB0LnRvcFxuICBsZXQgaW50X3dpZHRoIHQgPSB0LnJpZ2h0IC0gdC5sZWZ0XG4gIGxldCBmbG9hdF9oZWlnaHQgdCA9IHQuYm90dG9tIC0uIHQudG9wXG4gIGxldCBmbG9hdF93aWR0aCB0ID0gdC5yaWdodCAtLiB0LmxlZnRcbmVuZFxuXG5sZXQgcm91bmRfZmxvYXRfcmVjdCA/KHJvdW5kID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuKSA9IFJlY3QubWFwIH5mOnJvdW5kXG5cbnR5cGUgcm93c19vcl9jb2x1bW5zID1cbiAgfCBSb3dzXG4gIHwgQ29sdW1uc1xuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCB2YXJpYW50cywgY29tcGFyZV1cblxubGV0IGlubmVySGVpZ2h0ICgpID1cbiAgRG9tX2h0bWwud2luZG93IyMuaW5uZXJIZWlnaHRcbjs7XG5cbmxldCBpbm5lcldpZHRoICgpID1cbiAgRG9tX2h0bWwud2luZG93IyMuaW5uZXJXaWR0aFxuOztcblxubGV0IGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIEZsb2F0LiggPj0gKSByZWN0IyMudG9wIDAuXG4gICYmIEZsb2F0LiggPj0gKSByZWN0IyMubGVmdCAwLlxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLmJvdHRvbSAoRmxvYXQub2ZfaW50IChpbm5lckhlaWdodCAoKSkpXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMucmlnaHQgKEZsb2F0Lm9mX2ludCAoaW5uZXJXaWR0aCAoKSkpXG47O1xuXG4oKiogU2Nyb2xscyB0byB0aGUgaXRlbSBtYXJrZWQgYXMgXCJrZWVwLWluLXZpZXdcIiAqKVxubGV0IHNjcm9sbCA/KGlkID0gXCJrZWVwLWluLXZpZXdcIikgKCkgPVxuICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGVsdCAtPiBpZiBub3QgKGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgZWx0KSB0aGVuIGVsdCMjc2Nyb2xsSW50b1ZpZXcgSnMuX3RydWVcbjs7XG5cbigqIE5vdCB5ZXQgc3VwcG9ydGVkIG9uIENocm9tZS4gIE1heWJlIHdlIHNob3VsZCB1c2UgalF1ZXJ5P1xuICAge1tcbiAgICAgbGV0IHNjcm9sbF9pbnRvX3ZpZXcgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiB1bml0ID1cbiAgICAgICBlbHQjI3Njcm9sbEludG9WaWV3IChvYmplY3QlanNcbiAgICAgICAgIHZhbCBibG9jayA9IEpzLnN0cmluZyBcInN0YXJ0XCJcbiAgICAgICAgIHZhbCBiZWhhdmlvciA9IEpzLnN0cmluZyBcInNtb290aFwiXG4gICAgICAgZW5kKVxuICAgXX1cbiopXG4oKiBbdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsXSBnZXRzIGJvdW5kaW5nIHJlY3Qgb2YgW2VsdF0uIFRoZSBib3VuZGluZyByZWN0IGlzXG4gICByZWxhdGl2ZSB0byB0aGUgdmlldyBwb3J0ICopXG5sZXQgdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICB7IFJlY3QudG9wID0gcmVjdCMjLnRvcFxuICA7IGxlZnQgPSByZWN0IyMubGVmdFxuICA7IGJvdHRvbSA9IHJlY3QjIy5ib3R0b21cbiAgOyByaWdodCA9IHJlY3QjIy5yaWdodFxuICB9XG47O1xuXG5sZXQgdmlld3BvcnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwOyBsZWZ0ID0gMDsgYm90dG9tID0gaW5uZXJIZWlnaHQgKCk7IHJpZ2h0ID0gaW5uZXJXaWR0aCAoKSB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCBib3VuZGluZ19yZWN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsdCBpblxuICB7IGJvdW5kaW5nX3JlY3Qgd2l0aFxuICAgIGJvdHRvbSA9IGJvdW5kaW5nX3JlY3QudG9wICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IGJvdW5kaW5nX3JlY3QubGVmdCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxubGV0IGNsaWVudF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDBcbiAgOyBsZWZ0ID0gMFxuICA7IGJvdHRvbSA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cblxuKCoqIFNpbXBsZSB3cmFwcGVyIGZvciB0aGUgYmluYXJ5LXNlYXJjaCBmdW5jdG9yICAgKilcbmxldCBiaW5hcnlfc2VhcmNoICh0eXBlIGVsdCkgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIG1vZGUgeCA9XG4gIGxldCBtb2R1bGUgQnMgPVxuICAgIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgZWx0ID0gZWx0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdW5pdFxuXG4gICAgICBsZXQgZ2V0ICgpIG4gPSBnZXQgblxuICAgICAgbGV0IGxlbmd0aCAoKSA9IGxlbmd0aFxuICAgIGVuZClcbiAgaW5cbiAgQnMuYmluYXJ5X3NlYXJjaCAoKSB+Y29tcGFyZSBtb2RlIHhcbjs7XG5cbigqKiBTZWFyY2hlcyB0aHJvdWdoIGVsZW1lbnRzIGluZGV4ZWQgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdLiAqKVxubGV0IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIH5zZWFyY2hfYnkgbW9kZSBsYXlvdXQgeCA9XG4gIGxldCBnZXQgPVxuICAgIGxldCBudGhfZWxlbWVudCBuID1cbiAgICAgIGxldCBpZCA9IG50aF9lbGVtZW50X2lkIG4gaW5cbiAgICAgIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiRWxlbWVudCAlcyBub3QgZm91bmRcIiBpZCAoKVxuICAgICAgfCBTb21lIGVsdCAtPiBlbHRcbiAgICBpblxuICAgIGxldCBmaXJzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgMCkgaW5cbiAgICBsZXQgbGFzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgKGxlbmd0aCAtIDEpKSBpblxuICAgICgqIENvbXB1dGUgdGhlIG4ndGggZWxlbWVudCBpbiBhIG5vcm1hbGl6ZWQgd2F5LCBhcyBpZiB0aGUgaW5kZXhpbmcgYWx3YXlzIGdvZXMgaW5cbiAgICAgICBpbmNyZWFzaW5nIG9yZGVyIGZyb20gdG9wIHRvcCBib3R0b20gKilcbiAgICBsZXQgbnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuID1cbiAgICAgIGxldCBpc19hc2NlbmRpbmcgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gRmxvYXQuKCA8PSApIGZpcnN0LnRvcCBsYXN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gRmxvYXQuKCA8PSApIGZpcnN0LmxlZnQgbGFzdC5sZWZ0XG4gICAgICBpblxuICAgICAgbnRoX2VsZW1lbnQgKGlmIGlzX2FzY2VuZGluZyB0aGVuIG4gZWxzZSBsZW5ndGggLSBuIC0gMSlcbiAgICBpblxuICAgIGZ1biBuIC0+IHNlYXJjaF9ieSAodmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudF9ub3JtYWxpemVkIG4pKVxuICBpblxuICBiaW5hcnlfc2VhcmNoIH5sZW5ndGggfmdldCB+Y29tcGFyZTpGbG9hdC5jb21wYXJlIG1vZGUgeFxuOztcblxubGV0IGZpbmRfdmlzaWJsZV9yYW5nZSB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBsYXlvdXQgPVxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgZWxlbWVudF9zZWFyY2ggPSBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBpblxuICAgIGxldCB2aWV3cG9ydF9yZWN0ID0gdmlld3BvcnRfcmVjdCAoKSBpblxuICAgIGxldCBmaXJzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC5ib3R0b20sIHZpZXdwb3J0X3JlY3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LnJpZ2h0LCB2aWV3cG9ydF9yZWN0LmxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgbGV0IGxhc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QudG9wLCB2aWV3cG9ydF9yZWN0LmJvdHRvbVxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5sZWZ0LCB2aWV3cG9ydF9yZWN0LnJpZ2h0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgKCogQm90aCBbZmlyc3RdIGFuZCBbbGFzdF0gbmVlZCB0byBiZSBbU29tZV0uIE90aGVyd2lzZSwgZm9yIGV4YW1wbGUgaWYgdGhlIHdob2xlXG4gICAgICAgdGFibGUgaXMgYmVsb3cgdmlldyBwb3J0LCB0aGVuIFtmaXJzdF0gd2lsbCBiZSBbU29tZV0sIFtsYXN0XSB3aWxsIGJlIFtOb25lXSAqKVxuICAgIE9wdGlvbi5ib3RoIGZpcnN0IGxhc3QpXG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICB7anN8XG4gICAgICAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICAgICAgdmFyIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgICAgIHZhciByZSA9IC8oYXV0b3xzY3JvbGwpLztcblxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZG9jKSB7XG4gICAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXIgPSBlbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKGN1ci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdmFyIHN0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUoY3VyKTtcblxuICAgICAgICAgIGlmIChyZS50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgICB9KVxuICAgIHxqc31cbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lciAoZWwgOiAjRG9tLm5vZGUgSnMudCkgOiBEb20ubm9kZSBKcy50ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgW3wgSnMuVW5zYWZlLmluamVjdCBlbCB8XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgUGVyZm9ybWFuY2UgPSBKYXZhc2NyaXB0X3Byb2ZpbGluZ1xuXG5sZXQgdGltZXJfc3RhcnQgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlIHRoZW4gUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgKHMgXiBcImJlZm9yZVwiKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWUgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHRpbWVyX3N0b3AgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlXG4gIHRoZW4gKFxuICAgIGxldCBiZWZvcmUgPSBzIF4gXCJiZWZvcmVcIiBpblxuICAgIGxldCBhZnRlciA9IHMgXiBcImFmdGVyXCIgaW5cbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWFyayBhZnRlcjtcbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWVhc3VyZSB+bmFtZTpzIH5zdGFydDpiZWZvcmUgfmVuZF86YWZ0ZXIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZUVuZCAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgcHJpbnRfZXJyb3JmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcykpIGZtdFxuXG5tb2R1bGUgUmVxdWVzdF9pZHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuXG4gIHZhbCBzZXRfb25jZV9leG5cbiAgICA6ICB0XG4gICAgLT4gYW5pbWF0aW9uX2ZyYW1lX2lkOkRvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgLT4gc2V0X3RpbWVvdXRfaWQ6RG9tX2h0bWwudGltZW91dF9pZFxuICAgIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsbGVkIDogdCAtPiBib29sXG4gIHZhbCBjYW5jZWwgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGlkcyA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ2FuY2VsbGVkXG4gICAgfCBJZHMgb2ZcbiAgICAgICAgeyBhbmltYXRpb25fZnJhbWVfaWQgOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgICAgICA7IHNldF90aW1lb3V0X2lkIDogRG9tX2h0bWwudGltZW91dF9pZFxuICAgICAgICB9XG5cbiAgdHlwZSB0ID0gaWRzIHJlZlxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID0gcmVmIEVtcHR5XG5cbiAgbGV0IHNldF9vbmNlX2V4biAodCA6IHQpIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT5cbiAgICAgICgqIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBsZXQncyBiZSBkZWZlbnNpdmUuICopXG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkXG4gICAgfCBFbXB0eSAtPiB0IDo9IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfVxuICAgIHwgSWRzIF8gLT4gaW52YWxpZF9hcmcgXCJyZXF1ZXN0X2lkcyBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IGNhbmNlbGxlZCB4ID1cbiAgICBtYXRjaCAheCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gdHJ1ZVxuICAgIHwgRW1wdHkgfCBJZHMgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBjYW5jZWwgKHQgOiB0KSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+ICgpXG4gICAgfCBFbXB0eSAtPiB0IDo9IENhbmNlbGxlZFxuICAgIHwgSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9IC0+XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkO1xuICAgICAgdCA6PSBDYW5jZWxsZWRcbiAgOztcbmVuZFxuXG4oKiogW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBub3RpZmllcyB0aGUgYnJvd3NlciB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGRvIHNvbWVcbiAgICBjb21wdXRhdGlvbiBiZWZvcmUgdGhlIG5leHQgcmVwYWludC4gQmVjYXVzZSB0aGlzIG5lZWRzIHRvIG9jY3VyIGluIHRoZSBzYW1lXG4gICAgc3luY2hyb25vdXMgY2FsbCAoY2FsbGVkIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50KSwgcmV0dXJuaW5nIGEgRGVmZXJyZWQudCB3aWxsIG5vdFxuICAgIHdvcmsuIEluc3RlYWQsIHlvdSBwYXNzIGluIGEgam9iIHRvIGJlIHJ1biBiZWZvcmUgdGhlIHJlcGFpbnQuXG5cbiAgICBOb3RlIHRoYXQgaWYgW2NhbGxiYWNrXSBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHdvcmsgYmVmb3JlIGRvaW5nIERPTSBjaGFuZ2VzLCB0aG9zZVxuICAgIGNoYW5nZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcGFpbnQgYW5kIHdpbGwgYmUgc2F2ZWQgdW50aWwgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgICBXaGVuIHRoZSB0YWIgaXMgaW4gdGhlIGJhY2tncm91bmQsIHRoZSBicm93c2VycyBuYXRpdmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZ1bmN0aW9uXG4gICAgd2lsbCBuZXZlciBjYWxsIHRoZSBjYWxsYmFjaywgc28gaW4gb3JkZXIgdG8gY29udGludWUgcHJvY2Vzc2luZyBldmVudHMsIHdlIHNldCBhblxuICAgIGFsdGVybmF0ZSBzZXRUaW1lb3V0IGF0IDEgc2Vjb25kLlxuKilcbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjayA9XG4gICgqIFdlIGNhcHR1cmUgdGhlIGN1cnJlbnQgY29udGV4dCB0byB1c2UgaXQgbGF0ZXIgd2hlbiBoYW5kbGluZyBjYWxsYmFja3MgZnJvbVxuICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHNpbmNlIGV4Y2VwdGlvbnMgcmFpc2VkIHRvIHRoYXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnbyB0aHJvdWdoXG4gICAgIG91ciBvcmRpbmFyeSBBc3luYyBtb25pdG9yLiAqKVxuICBsZXQgY3VycmVudF9jb250ZXh0ID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpIGluXG4gIGxldCByZXF1ZXN0X2lkcyA9IFJlcXVlc3RfaWRzLmNyZWF0ZSAoKSBpblxuICBsZXQgY2FsbGJhY2sgKCkgPVxuICAgIGlmIFJlcXVlc3RfaWRzLmNhbmNlbGxlZCByZXF1ZXN0X2lkc1xuICAgIHRoZW4gKClcbiAgICBlbHNlIChcbiAgICAgIFJlcXVlc3RfaWRzLmNhbmNlbCByZXF1ZXN0X2lkcztcbiAgICAgIGxldCBjYWxsYmFja19yZXN1bHQgPVxuICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhpbl9jb250ZXh0IGN1cnJlbnRfY29udGV4dCBjYWxsYmFja1xuICAgICAgaW5cbiAgICAgIGlnbm9yZSAoY2FsbGJhY2tfcmVzdWx0IDogKHVuaXQsIHVuaXQpIFJlc3VsdC50KSlcbiAgaW5cbiAgbGV0IGFuaW1hdGlvbl9mcmFtZV9pZCA9XG4gICAgbGV0IGFuaW1hdGlvbl9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9jYWxsYmFja1xuICBpblxuICBsZXQgc2V0X3RpbWVvdXRfaWQgPVxuICAgIGxldCB0aW1lb3V0X2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgKCogMTAwMCBtcyA9IDFzOyAgQ2hvc2VuIGJlY2F1c2UgYmFja2dyb3VuZGVkIHRhbmdsZSBzZW5kcyByZXF1ZXN0c1xuICAgICAgIGF0IGFwcHJveGltYXRlbHkgdGhpcyByYXRlLiAqKVxuICAgIGxldCB0aW1lb3V0ID0gMTAwMC4wIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0IHRpbWVvdXRfY2FsbGJhY2sgdGltZW91dFxuICBpblxuICBSZXF1ZXN0X2lkcy5zZXRfb25jZV9leG4gcmVxdWVzdF9pZHMgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWRcbjs7XG5cbigqKiBUaGUgSnNfb2Zfb2NhbWwgdHlwZSBEb21faHRtbC5lbGVtZW50IGRvZXNuJ3QgaGF2ZSB0aGUgY29ycmVjdCBvcHRpb25zIGZvclxuICAgIHRoZWlyIGBmb2N1c2AgbWV0aG9kLiBDYXN0IHRvIHRoaXMgaW4gb3JkZXIgdG8gd29yayBhcm91bmQgdGhpcyBidWcuICAqKVxudHlwZSBmb2N1c2FibGUgPVxuICA8IGZvY3VzIDogPCBwcmV2ZW50U2Nyb2xsIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50IC0+IHVuaXQgSnMubWV0aCA+XG5cbmxldCBhc19mb2N1c2FibGUgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gZm9jdXNhYmxlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbigqKiBbVmlzaWJpbGl0eV0gZW5jYXBzdWxhdGVzIHRoZSBkaXJ0eWluZyBhbmQgY2xlYW5pbmcgb2YgdGhlIHZpc2liaWxpdHkgZmxhZ1xuXG4gICAgVGhlIHZpZXdwb3J0IHN0YXJ0cyBvdXQgZGlydHkuIFdoZW4gd2UgbG9vayBhdCB0aGUgRE9NIHRvIGNvbXB1dGUgd2hhdCBpcyB2aXNpYmxlIGJ5XG4gICAgY2FsbGluZyBbdXBkYXRlX3Zpc2liaWxpdHldLCB0aGUgdmlld3BvcnQgdGhlbiBiZWNvbWVzIGNsZWFuLiBBbnkgdGltZSB0aGUgdXNlclxuICAgIHNjcm9sbHMgb3VyIHBhZ2Ugb3IgcmVzaXplcyB0aGUgd2luZG93LCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2Fpbi4gSWYgd2UgdXBkYXRlXG4gICAgdGhlIERPTSwgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4gYmVjYXVzZSBhIERPTSB1cGRhdGUgY291bGQgY2F1c2UgYSByZWZsb3csXG4gICAgbW92aW5nIHRoZSBlbGVtZW50cyB0aGF0IGFyZSB2aXNpYmxlLlxuXG4gICAgV2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGlzIGFzIGEgZmxhZyBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgdXNlcnMgdG8gc2VuZCBhbiBhY3Rpb24gb25cbiAgICBzY3JvbGwgYmVjYXVzZSBpdCB3b3VsZCBtYWtlIG5vIHNlbnNlIHRvIGNvbXB1dGUgdGhlIHZpc2liaWxpdHkgb24gdGhlIHZpcnR1YWwtZG9tXG4gICAgd2hlbiB0aGUgdmlydHVhbC1kb20gZG9lcyBub3QgbWF0Y2ggdGhlIGFjdHVhbCBkb20gKGFzIGl0IGlzIGluIHRoZSBtaWRkbGUgb2ZcbiAgICBbYXBwbHlfYWN0aW9uc10pLiAqKVxubW9kdWxlIFZpc2liaWxpdHkgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZV9hc19kaXJ0eSA6IHVuaXQgLT4gdFxuICB2YWwgbWFya19jbGVhbiA6IHQgLT4gdW5pdFxuICB2YWwgbWFya19kaXJ0eSA6IHQgLT4gdW5pdFxuICB2YWwgaXNfZGlydHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG11dGFibGUgd2hlbl9kaXJ0eSA6IHVuaXQgSXZhci50IH1cblxuICBsZXQgY3JlYXRlX2FzX2RpcnR5ICgpID0geyB3aGVuX2RpcnR5ID0gSXZhci5jcmVhdGVfZnVsbCAoKSB9XG4gIGxldCBtYXJrX2RpcnR5IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC53aGVuX2RpcnR5ICgpXG4gIGxldCBpc19kaXJ0eSB0ID0gSXZhci5pc19mdWxsIHQud2hlbl9kaXJ0eVxuICBsZXQgbWFya19jbGVhbiB0ID0gaWYgaXNfZGlydHkgdCB0aGVuIHQud2hlbl9kaXJ0eSA8LSBJdmFyLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBMb2dnaW5nX2ZpbHRlciA9IHN0cnVjdFxuICBtb2R1bGUgU3RyaW5nX2JsYW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBCbGFuZy50IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbFxuICAgIHwgTm9uZVxuICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIG9mIFN0cmluZ19ibGFuZy50XG4gICAgfCBDdXN0b21fZmlsdGVyIG9mIChTZXhwLnQgLT4gYm9vbClcbmVuZFxuXG5tb2R1bGUgRGVidWdfZmxhZ3MgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIHZhbCBpbml0X2FwcFxuICAgIDogIGFwcF9pZDpzdHJpbmdcbiAgICAtPiBmaWx0ZXJfbmFtZXM6U3RyaW5nLlNldC50XG4gICAgLT4gZGVidWc6Ym9vbFxuICAgIC0+IHN0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICBtb2R1bGUgQXBwX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZmlsdGVyX25hbWVzIDogU3RyaW5nLlNldC50XG4gICAgICA7IGxvZ2dpbmdfZmlsdGVyIDogTG9nZ2luZ19maWx0ZXIudCByZWZcbiAgICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiBib29sIHJlZlxuICAgICAgOyBzaG91bGRfZGVidWcgOiBib29sIHJlZlxuICAgICAgfVxuXG4gICAgbGV0IHNldF9sb2dnaW5nX2ZpbHRlciB0IH5sb2dnaW5nX2ZpbHRlciA9IHQubG9nZ2luZ19maWx0ZXIgOj0gbG9nZ2luZ19maWx0ZXJcbiAgICBsZXQgc2V0X3Nob3VsZF9wcm9maWxlIHQgfnNob3VsZF9wcm9maWxlID0gdC5zaG91bGRfcHJvZmlsZSA6PSBzaG91bGRfcHJvZmlsZVxuICAgIGxldCBzZXRfc2hvdWxkX2RlYnVnIHQgfnNob3VsZF9kZWJ1ZyA9IHQuc2hvdWxkX2RlYnVnIDo9IHNob3VsZF9kZWJ1Z1xuICBlbmRcblxuICBjbGFzcyB0eXBlIGdsb2JhbCA9XG4gICAgb2JqZWN0XG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdGFydExvZ2dpbmdDdXN0b20gOlxuICAgICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0b3BMb2dnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wUHJvZmlsaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnREZWJ1Z2dpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc2F2ZUluY3JlbWVudGFsR3JhcGggOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICAgIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgKCkgPVxuICAgIGxldCB3aXRoX2FwcF9pZF9vcHQgdXBkYXRlX3N0YXRlIGFwcF9pZF9vcHQgPVxuICAgICAgbGV0IGFwcF9pZF9vcHQgPSBKcy5PcHQudG9fb3B0aW9uIGFwcF9pZF9vcHQgfD4gT3B0aW9uLm1hcCB+ZjpKcy50b19zdHJpbmcgaW5cbiAgICAgIG1hdGNoIGFwcF9pZF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEhhc2h0YmwuaXRlciBhcHBfc3RhdGVzIH5mOnVwZGF0ZV9zdGF0ZVxuICAgICAgfCBTb21lIGFwcF9pZCAtPlxuICAgICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGFwcF9zdGF0ZXMgYXBwX2lkIHdpdGhcbiAgICAgICAgIHwgU29tZSBzdGF0ZSAtPiB1cGRhdGVfc3RhdGUgc3RhdGVcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIGFwcCB3aXRoIGlkIFxcXCIlc1xcXCIuIFZhbGlkIGFwcCBpZHMgYXJlOiAlc1wiXG4gICAgICAgICAgICAgYXBwX2lkXG4gICAgICAgICAgICAgKEhhc2h0Ymwua2V5cyBhcHBfc3RhdGVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgbG9nZ2luZ19maWx0ZXIgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyIH5sb2dnaW5nX2ZpbHRlcilcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgc2hvdWxkX3Byb2ZpbGUgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9wcm9maWxlIH5zaG91bGRfcHJvZmlsZSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX2RlYnVnIHNob3VsZF9kZWJ1ZyA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX2RlYnVnIH5zaG91bGRfZGVidWcpXG4gICAgaW5cbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdBbGwgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIEFsbCk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGJsYW5nX3N0ciAtPlxuICAgICAgbGV0IGJsYW5nX3N0ciA9IEpzLnRvX3N0cmluZyBibGFuZ19zdHIgaW5cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoZnVuIGFwcF9zdGF0ZSAtPlxuICAgICAgICBsZXQgYmxhbmcgPVxuICAgICAgICAgIEJsYW5nLnRfb2Zfc2V4cCBTdHJpbmcudF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBibGFuZ19zdHIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnZhbGlkX25hbWVzID1cbiAgICAgICAgICBCbGFuZy5mb2xkIGJsYW5nIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBpbnZhbGlkX25hbWVzIG5hbWUgLT5cbiAgICAgICAgICAgIGlmIFNldC5tZW0gYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyBuYW1lXG4gICAgICAgICAgICB0aGVuIGludmFsaWRfbmFtZXNcbiAgICAgICAgICAgIGVsc2UgU2V0LmFkZCBpbnZhbGlkX25hbWVzIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFNldC5pc19lbXB0eSBpbnZhbGlkX25hbWVzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyXG4gICAgICAgICAgICBhcHBfc3RhdGVcbiAgICAgICAgICAgIH5sb2dnaW5nX2ZpbHRlcjooTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIG5hbWVkIGZpbHRlcihzKTogJXMuIFZhbGlkIG5hbWVzIGFyZTpcXG4lc1wiXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgaW52YWxpZF9uYW1lcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdClcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpKSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQ3VzdG9tXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGZpbHRlciAtPlxuICAgICAgbGV0IGZpbHRlciBhY3Rpb25fc2V4cCA9XG4gICAgICAgIGFjdGlvbl9zZXhwIHw+IFNleHAudG9fc3RyaW5nIHw+IEpzLnN0cmluZyB8PiBmaWx0ZXIgfD4gSnMudG9fYm9vbFxuICAgICAgaW5cbiAgICAgIHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciAoQ3VzdG9tX2ZpbHRlciBmaWx0ZXIpKTtcbiAgICBnbG9iYWwjIy5zdG9wTG9nZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgTm9uZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zdGFydERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BEZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc2F2ZUluY3JlbWVudGFsR3JhcGhcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBmaWxlbmFtZSA9IFwiY3VycmVudF9pbmNyX2RvbV9kb3RfZ3JhcGguZG90XCIgaW5cbiAgICAgIFVpX2luY3Iuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlbmFtZTtcbiAgICAgIGxldCBjb250ZW50cyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZmlsZW5hbWUgaW5cbiAgICAgIFZkb21fZmlsZV9kb3dubG9hZC5jcmVhdGUgfmZpbGVuYW1lIH5taW1ldHlwZTpcInBsYWluL3RleHRcIiB+Y29udGVudHNcbiAgICAgIHw+IFZkb21fZmlsZV9kb3dubG9hZC50cmlnZ2VyKTtcbiAgICBsZXQgaW5pdF9tZXNzYWdlID1cbiAgICAgIFwiIEluY3JfZG9tIEFjdGlvbiBMb2dnaW5nXFxuXFxcbiAgICAgIFxcID09PT09PT09PT09PT09PT09PT09PT09XFxuXFxcbiAgICAgIFxcIExvZ2dpbmcgcHJpbnRzIGFjdGlvbiBpbmZvIHRvIHRoZSBjb25zb2xlLlxcblxcXG4gICAgICBcXCBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBsb2dnaW5nLCB0eXBlIG9uZSBvZiB0aGUgZm9sbG93aW5nOlxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmdBbGwoW2FwcF9pZF0pIC0gbG9nIGFsbCBhY3Rpb25zXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgXFxcbiAgICAgICBuYW1lZCBmaWx0ZXIgW2ZpbHRlcl9uYW1lXVxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmcoZmlsdGVyX25hbWVfYmxhbmcgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGJsYW5nIG9mIFxcXG4gICAgICAgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZ0N1c3RvbShmaWx0ZXIgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGN1c3RvbSBmdW5jdGlvbiBcXFxuICAgICAgIFtmaWx0ZXJdIGZyb20gYSBzdHJpbmcgKHRoZSBhY3Rpb24gc2V4cCkgdG8gYSBib29sXFxuXFxcbiAgICAgIFxcIFRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIEluY3JfZG9tIEFjdGlvbiBQcm9maWxpbmdcXG5cXFxuICAgICAgXFwgPT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcXG4gICAgICBcXCBQcm9maWxpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcXG5cXFxuICAgICAgXFwgVG8gc3RvcCBwcm9maWxpbmcsIHR5cGU6IHN0b3BQcm9maWxpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIEluY3JfZG9tIERlYnVnZ2luZ1xcblxcXG4gICAgICBcXCA9PT09PT09PT09PT09PT09PT1cXG5cXFxuICAgICAgXFwgRGVidWdnaW5nIHByaW50cyB0aW1pbmcgaW5mbyB0byB0aGUgY29uc29sZS5cXG5cXFxuICAgICAgXFwgSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBieSB0aGUgYXBwLlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBkZWJ1Z2dpbmcsIHR5cGU6IHN0YXJ0RGVidWdnaW5nKFthcHBfaWRdKVxcblxcXG4gICAgICBcXCBUbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcXG5cXG5cXFxuICAgICAgXFwgW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgXFxcbiAgICAgICB0aGUgcGFnZSBvbmx5IGhhcyBvbmUgYXBwIG9yIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIGFwcHMsIHlvdSBjYW4gXFxcbiAgICAgICBwYXNzIGluIFtudWxsXSAob3IgZm9yIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMsIG9taXQgaXQgYWx0b2dldGhlcikuXCJcbiAgICBpblxuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgaW5pdF9tZXNzYWdlKVxuICA7O1xuXG4gIGxldCBpbml0X2FwcCB+YXBwX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wID1cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSk7XG4gICAgbGV0IGFwcF9pbml0X21lc3NhZ2UgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIkF2YWlsYWJsZSBsb2dnaW5nIGZpbHRlcnMgZm9yIFxcXCIlc1xcXCI6XFxuJXNcIlxuICAgICAgICBhcHBfaWRcbiAgICAgICAgKFNldC50b19saXN0IGZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KVxuICAgIGluXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBhcHBfaW5pdF9tZXNzYWdlKTtcbiAgICBsZXQgbG9nZ2luZ19maWx0ZXIgPSByZWYgTG9nZ2luZ19maWx0ZXIuTm9uZSBpblxuICAgIGxldCBzaG91bGRfcHJvZmlsZSA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzaG91bGRfZGVidWcgPSByZWYgZGVidWcgaW5cbiAgICBIYXNodGJsLnNldFxuICAgICAgYXBwX3N0YXRlc1xuICAgICAgfmtleTphcHBfaWRcbiAgICAgIH5kYXRhOnsgZmlsdGVyX25hbWVzOyBsb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9O1xuICAgIHVwb24gc3RvcCAoZnVuICgpIC0+IEhhc2h0YmwucmVtb3ZlIGFwcF9zdGF0ZXMgYXBwX2lkKTtcbiAgICB7IGxvZ2dpbmdfZmlsdGVyID0gKGZ1biAoKSAtPiAhbG9nZ2luZ19maWx0ZXIpXG4gICAgOyBzaG91bGRfcHJvZmlsZSA9IChmdW4gKCkgLT4gIXNob3VsZF9wcm9maWxlKVxuICAgIDsgc2hvdWxkX2RlYnVnID0gKGZ1biAoKSAtPiAhc2hvdWxkX2RlYnVnKVxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlIHRvIHRoZSByb290IG5vZGUgc28gdGhhdCBpdCBjYW4gaW50ZXJjZXB0XG4gICBrZXlib2FyZCBldmVudHMuXG4gICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4ICopXG5sZXQgb3ZlcnJpZGVfcm9vdF9lbGVtZW50IHJvb3QgPVxuICBsZXQgb3BlbiBWZG9tIGluXG4gIGxldCBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50ID1cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5hdHRycyB8PiBBdHRyLkV4cGVydC5jb250YWluc19uYW1lIFwiZGlzYWJsZV90YWJfaW5kZXhcIiB8PiBub3RcbiAgaW5cbiAgbWF0Y2ggKHJvb3QgOiBOb2RlLnQpIHdpdGhcbiAgfCBFbGVtZW50IGVsZW1lbnQgd2hlbiBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50IC0+XG4gICAgbGV0IGFkZF9uZXdfYXR0cnMgYXR0cnMgPVxuICAgICAgVmRvbS5BdHRyLihzdHlsZSAoQ3NzX2dlbi5vdXRsaW5lIH5zdHlsZTpgTm9uZSAoKSkgQCB0YWJpbmRleCAwIEAgYXR0cnMpXG4gICAgaW5cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5tYXBfYXR0cnMgfmY6YWRkX25ld19hdHRycyB8PiBOb2RlLkVsZW1lbnRcbiAgfCBfIC0+IHJvb3Rcbjs7XG5cbmxldCBnZXRfdGFnX25hbWUgKG5vZGUgOiBWZG9tLk5vZGUudCkgPVxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBFbGVtZW50IGUgLT4gU29tZSAoVmRvbS5Ob2RlLkVsZW1lbnQudGFnIGUpXG4gIHwgTm9uZSB8IFRleHQgXyB8IFdpZGdldCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzdGFydF9ib25zYWlcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUHJpdmF0ZS5TX2Zvcl9ib25zYWlcbiAgICAgICAgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbFxuICAgICAgICAgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgKCogVGhpcyBpcyBpZGVtcG90ZW50IGFuZCBzbyBmaW5lIHRvIGRvLiAqKVxuICBBc3luY19qcy5pbml0ICgpO1xuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlYmluZCAoKSA9IEFzeW5jX2pzLmRvY3VtZW50X2xvYWRlZCAoKSBpblxuICAgICBsZXQgbW9kZWxfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbCA9IEluY3IuVmFyLndhdGNoIG1vZGVsX3YgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgPSBJbmNyLlZhci53YXRjaCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IGluXG4gICAgIGxldCBjdXRvZmYgPVxuICAgICAgIEluY3IuQ3V0b2ZmLmNyZWF0ZSAoZnVuIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPlxuICAgICAgICAgQXBwLk1vZGVsLmN1dG9mZiBvbGRfdmFsdWUgbmV3X3ZhbHVlKVxuICAgICBpblxuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWwgY3V0b2ZmO1xuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgY3V0b2ZmO1xuICAgICBsZXQgYWN0aW9uX3F1ZXVlID0gRGVxdWUuY3JlYXRlICgpIGluXG4gICAgIGxldCBtb2R1bGUgRXZlbnQgPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZSAoc3RydWN0XG4gICAgICAgICBtb2R1bGUgQWN0aW9uID0gQXBwLkFjdGlvblxuXG4gICAgICAgICBsZXQgaGFuZGxlIGFjdGlvbiA9IERlcXVlLmVucXVldWVfYmFjayBhY3Rpb25fcXVldWUgYWN0aW9uXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHkuY3JlYXRlX2FzX2RpcnR5ICgpIGluXG4gICAgIGxldCB2aWV3cG9ydF9jaGFuZ2VkICgpID0gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHkgaW5cbiAgICAgKCogVGhpcyByZWdpc3RlcnMgdGhlIFt2aWV3cG9ydF9jaGFuZ2VkXSBoYW5kbGVyIHdpdGggVmlydHVhbF9kb20uIElmIGV2ZW50IGhhbmRsZXJzXG4gICAgICAgIHVzZSB0aGUgW1Zkb20uRWZmZWN0LlZpZXdwb3J0X2NoYW5nZWRdIGV2ZW50LCB3ZSBhcmUgbm90aWZpZWQuICopXG4gICAgIGxldCBtb2R1bGUgXyA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lX3Zpc2liaWxpdHkgKHN0cnVjdFxuICAgICAgICAgbGV0IGhhbmRsZSA9IHZpZXdwb3J0X2NoYW5nZWRcbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCBnZXRfdmlldywgZ2V0X2FwcGx5X2FjdGlvbiwgZ2V0X3VwZGF0ZV92aXNpYmlsaXR5LCBnZXRfb25fZGlzcGxheSA9XG4gICAgICAgbGV0IG9icyA9XG4gICAgICAgICBJbmNyLm9ic2VydmVcbiAgICAgICAgICAgKEFwcC5jcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDptb2RlbF9mcm9tX2xhc3RfZGlzcGxheSB+aW5qZWN0OkV2ZW50LmluamVjdClcbiAgICAgICBpblxuICAgICAgIGxldCBmZXRjaCAoZiA6IF8gQXBwX2ludGYuUHJpdmF0ZS5zbmFwc2hvdCAtPiBfKSAoKSA9XG4gICAgICAgICBmIChJbmNyLk9ic2VydmVyLnZhbHVlX2V4biBvYnMpXG4gICAgICAgaW5cbiAgICAgICAoIGZldGNoIChmdW4geyB2aWV3OyBfIH0gLT4gdmlldylcbiAgICAgICAsIGZldGNoIChmdW4geyBhcHBseV9hY3Rpb247IF8gfSAtPiBhcHBseV9hY3Rpb24pXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgdXBkYXRlX3Zpc2liaWxpdHk7IF8gfSAtPiB1cGRhdGVfdmlzaWJpbGl0eSlcbiAgICAgICAsIGZldGNoIChmdW4geyBvbl9kaXNwbGF5OyBfIH0gLT4gb25fZGlzcGxheSkgKVxuICAgICBpblxuICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgbGV0IG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9XG4gICAgICAgKFwiYWxsXCIsIEZuLmNvbnN0IHRydWUpIDo6IChcIm5vbmVcIiwgRm4uY29uc3QgZmFsc2UpIDo6IG5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgICAgIHw+IFN0cmluZy5UYWJsZS5vZl9hbGlzdF9leG5cbiAgICAgaW5cbiAgICAgbGV0IHsgRGVidWdfZmxhZ3MubG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfSA9XG4gICAgICAgbGV0IGZpbHRlcl9uYW1lcyA9IEhhc2h0Ymwua2V5cyBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgfD4gU3RyaW5nLlNldC5vZl9saXN0IGluXG4gICAgICAgRGVidWdfZmxhZ3MuaW5pdF9hcHAgfmFwcF9pZDpiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcFxuICAgICBpblxuICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgIGxldCBodG1sX2RvbSA9IFZkb20uTm9kZS50b19kb20gaHRtbCBpblxuICAgICBsZXQgZWxlbSA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkX2V4biBiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCBpblxuICAgICBsZXQgcGFyZW50ID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdIChKcy5PcHQudG9fb3B0aW9uIGVsZW0jIy5wYXJlbnROb2RlKSBpblxuICAgICBEb20ucmVwbGFjZUNoaWxkIHBhcmVudCBodG1sX2RvbSBlbGVtO1xuICAgICAoKiB3ZSBtYWtlIHN1cmUgdG8gY2FsbCBbdmlld3BvcnRfY2hhbmdlZF0gd2hlbmV2ZXIgdGhlIHdpbmRvdyByZXNpemVzIG9yIHRoZSBzY3JvbGxcbiAgICAgICAgY29udGFpbmVyIGluIHdoaWNoIG91ciBIVE1MIGlzIGxvY2F0ZWQgaXMgc2Nyb2xsZWQuICopXG4gICAgIGxldCBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgZXZlbnRfbmFtZSB3aGVyZSA9XG4gICAgICAgaWdub3JlXG4gICAgICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAoRG9tLkV2ZW50Lm1ha2UgZXZlbnRfbmFtZSlcbiAgICAgICAgICAgIChEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIHZpZXdwb3J0X2NoYW5nZWQgKCk7XG4gICAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgICBKcy5fZmFsc2VcbiAgICAgICAgICA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgICAgaW5cbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwic2Nyb2xsXCIgKEpzX21pc2MuZ2V0X3Njcm9sbF9jb250YWluZXIgaHRtbF9kb20pO1xuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJyZXNpemVcIiBEb21faHRtbC53aW5kb3c7XG4gICAgIGxldCViaW5kIHN0YXRlID1cbiAgICAgICBBcHAub25fc3RhcnR1cFxuICAgICAgICAgfnNjaGVkdWxlX2FjdGlvbjooZnVuIGEgLT4gVWlfZWZmZWN0LkV4cGVydC5oYW5kbGUgKEV2ZW50LmluamVjdCBhKSlcbiAgICAgICAgIChJbmNyLlZhci52YWx1ZSBtb2RlbF92KVxuICAgICBpblxuICAgICBsZXQgcHJldl9odG1sID0gcmVmIGh0bWwgaW5cbiAgICAgbGV0IHByZXZfZWx0ID0gcmVmIGh0bWxfZG9tIGluXG4gICAgIGxldCByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSA9XG4gICAgICAgbGV0IGVsZW1lbnQgPSAhcHJldl9lbHQgaW5cbiAgICAgICAoKiBJZiB0aGUgZWxlbWVudCB0byBmb2N1cyBpcyBhbiBlbGVtZW50LCBjYXN0IGl0IGludG8gdGhlXG4gICAgICAgICAgbW9yZSBwZXJtaXNzaXZlIFwiZm9jdXNhYmxlXCIgdHlwZSBkZWZpbmVkIGF0IHRoZSB0b3Agb2ZcbiAgICAgICAgICB0aGlzIGZpbGUsIGFuZCB0aGVuIGZvY3VzIHRoYXQuICopXG4gICAgICAgRG9tX2h0bWwuQ29lcmNlVG8uZWxlbWVudCBlbGVtZW50XG4gICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgIHw+IE9wdGlvbi5tYXAgfmY6YXNfZm9jdXNhYmxlXG4gICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biBlbGVtZW50IC0+XG4gICAgICAgICBlbGVtZW50IyNmb2N1c1xuICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgdmFsIHByZXZlbnRTY3JvbGwgPSBKcy5fdHJ1ZVxuICAgICAgICAgICBlbmQpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RhcnQgcyA9XG4gICAgICAgdGltZXJfc3RhcnQgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RvcCBzID1cbiAgICAgICB0aW1lcl9zdG9wIHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgKCpcbiAgICAgICAgVGFrZSBhY3Rpb24gb24gYW55IGJsdXIgZXZlbnQsIHJlZm9jdXNpbmcgdG8gdGhlIHJvb3Qgbm9kZSBpZiB0aGUgcmVsYXRlZFRhcmdldCBpc1xuICAgICAgICBudWxsIG9yIHVuZGVmaW5lZCwgc2lnbmlmeWluZyB0aGF0IGZvY3VzIHdhcyBsb3N0IGFuZCB3b3VsZCBvdGhlcndpc2UgYmUgcmVzZXQgdG9cbiAgICAgICAgdGhlIGJvZHkgbm9kZS5cblxuICAgICAgICBUaGUgSnMuX3RydWUgcGFyYW1ldGVyIHByb3ZpZGVkIHRvIERvbS5hZGRFdmVudExpc3RlbmVyIGlzIHRoZSB1c2VDYXB0dXJlXG4gICAgICAgIHBhcmFtZXRlciBkZXNjcmliZWQgaGVyZTpcbiAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXJcbiAgICAgKilcbiAgICAgaWdub3JlXG4gICAgIEBAIERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgRG9tX2h0bWwud2luZG93XG4gICAgICAgICAgRG9tX2h0bWwuRXZlbnQuYmx1clxuICAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICAgICAgICgqIFtKcy5VbnNhZmUuKl0gaXMgbGlrZSBbT2JqLm1hZ2ljXS4gV2Ugc2hvdWxkIGJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2VcbiAgICAgICAgICAgICAgICBleHBlY3QuICopXG4gICAgICAgICAgICAgbGV0IGVcbiAgICAgICAgICAgICAgIDogPCByZWxhdGVkVGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wID5cbiAgICAgICAgICAgICAgICAgICBKcy50XG4gICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCByZWxhdGVkX3RhcmdldCA9IGUjIy5yZWxhdGVkVGFyZ2V0IGluXG4gICAgICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCByZWxhdGVkX3RhcmdldCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKTtcbiAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgSnMuX3RydWU7XG4gICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSAoKSA9XG4gICAgICAgVmlzaWJpbGl0eS5tYXJrX2NsZWFuIHZpc2liaWxpdHk7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X3VwZGF0ZV92aXNpYmlsaXR5ICgpKVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiXG4gICAgIGluXG4gICAgIGxldCBtYXliZV9sb2dfYWN0aW9uID1cbiAgICAgICBsZXQgc2FmZV9maWx0ZXIgfm5hbWUgZmlsdGVyIGFjdGlvbiA9XG4gICAgICAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGZpbHRlciBhY3Rpb24pIHdpdGhcbiAgICAgICAgIHwgT2sgc2hvdWxkX2xvZyAtPiBzaG91bGRfbG9nXG4gICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmYgIVwiRXhjZXB0aW9uIHJhaXNlZCBieSAlczogJXtFcnJvciNodW19XCIgbmFtZSBlcnI7XG4gICAgICAgICAgIGZhbHNlXG4gICAgICAgaW5cbiAgICAgICBsZXQgbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlID1cbiAgICAgICAgIENvcmUuTWVtby5vZl9jb21wYXJhYmxlXG4gICAgICAgICAgIChtb2R1bGUgTG9nZ2luZ19maWx0ZXIuU3RyaW5nX2JsYW5nKVxuICAgICAgICAgICAoZnVuIGJsYW5nIC0+XG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBIYXNodGJsLmZpbmRfZXhuIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyBpblxuICAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgIH5uYW1lOihzcHJpbnRmICFcIm5hbWVkIGZpbHRlciBibGFuZyBcXFwiJXtzZXhwOnN0cmluZyBCbGFuZy50fVxcXCJcIiBibGFuZylcbiAgICAgICAgICAgICAgICAobWF0Y2ggYmxhbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IEJhc2UgbmFtZSAtPiBmaWx0ZXIgbmFtZVxuICAgICAgICAgICAgICAgICB8IF8gLT4gZnVuIGFjdGlvbiAtPiBCbGFuZy5ldmFsIGJsYW5nIChmdW4gbmFtZSAtPiBmaWx0ZXIgbmFtZSBhY3Rpb24pKSlcbiAgICAgICBpblxuICAgICAgIGZ1biBhY3Rpb24gLT5cbiAgICAgICAgIGxldCBzaG91bGRfbG9nX2FjdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIGxvZ2dpbmdfZmlsdGVyICgpIHdpdGhcbiAgICAgICAgICAgfCBBbGwgLT4gdHJ1ZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcgLT4gbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIGJsYW5nIGFjdGlvblxuICAgICAgICAgICB8IEN1c3RvbV9maWx0ZXIgZmlsdGVyIC0+XG4gICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH5uYW1lOlwiY3VzdG9tIGZpbHRlclwiXG4gICAgICAgICAgICAgICAoZnVuIGFjdGlvbiAtPiBmaWx0ZXIgKEFwcC5BY3Rpb24uc2V4cF9vZl90IGFjdGlvbikpXG4gICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgIGluXG4gICAgICAgICBpZiBzaG91bGRfbG9nX2FjdGlvblxuICAgICAgICAgdGhlbiBBc3luY19qcy5sb2dfc19hc19zdHJpbmcgWyVtZXNzYWdlIFwiQWN0aW9uXCIgKGFjdGlvbiA6IEFwcC5BY3Rpb24udCldXG4gICAgIGluXG4gICAgIGxldCBhcHBseV9hY3Rpb24gYWN0aW9uID1cbiAgICAgICBtYXliZV9sb2dfYWN0aW9uIGFjdGlvbjtcbiAgICAgICBpZiBBcHAuYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gYWN0aW9uXG4gICAgICAgdGhlbiAoXG4gICAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCI7XG4gICAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiKVxuICAgICAgIGVsc2UgaWYgc2hvdWxkX2RlYnVnICgpXG4gICAgICAgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCJhY3Rpb24gYXBwbGllZCB3aXRob3V0IHN0YWJpbGl6aW5nXCIpO1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF9hcHBseV9hY3Rpb24gKCkpXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgICAgIGFjdGlvblxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsXG4gICAgIGluXG4gICAgIGxldCByZWMgYXBwbHlfYWN0aW9ucyAoKSA9XG4gICAgICAgbWF0Y2ggRGVxdWUuZGVxdWV1ZV9mcm9udCBhY3Rpb25fcXVldWUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBhY3Rpb24gLT5cbiAgICAgICAgIGFwcGx5X2FjdGlvbiBhY3Rpb247XG4gICAgICAgICBhcHBseV9hY3Rpb25zICgpXG4gICAgIGluXG4gICAgIGxldCBwZXJmb3JtX3VwZGF0ZSAoKSA9XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICAoKiBUaGUgY2xvY2sgaXMgc2V0IG9ubHkgb25jZSBwZXIgY2FsbCB0byBwZXJmb3JtX3VwZGF0ZSwgc28gdGhhdCBhbGwgYWN0aW9ucyB0aGF0XG4gICAgICAgICAgb2NjdXIgYmVmb3JlIGVhY2ggZGlzcGxheSB1cGRhdGUgb2NjdXIgXCJhdCB0aGUgc2FtZSB0aW1lLlwiICopXG4gICAgICAgbGV0IG5vdyA9XG4gICAgICAgICBsZXQgZGF0ZSA9IG5ldyVqcyBKcy5kYXRlX25vdyBpblxuICAgICAgICAgVGltZV9ucy5TcGFuLm9mX21zIGRhdGUjI2dldFRpbWUgfD4gVGltZV9ucy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICAgaW5cbiAgICAgICBJbmNyLkNsb2NrLmFkdmFuY2VfY2xvY2sgSW5jci5jbG9jayB+dG9fOm5vdztcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ0b3RhbFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICBpZiBWaXNpYmlsaXR5LmlzX2RpcnR5IHZpc2liaWxpdHkgdGhlbiB1cGRhdGVfdmlzaWJpbGl0eSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICBhcHBseV9hY3Rpb25zICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICAgIGxldCBodG1sID0gb3ZlcnJpZGVfcm9vdF9lbGVtZW50IGh0bWwgaW5cbiAgICAgICB0aW1lcl9zdGFydCBcImRpZmZcIjtcbiAgICAgICBsZXQgcGF0Y2ggPSBWZG9tLk5vZGUuUGF0Y2guY3JlYXRlIH5wcmV2aW91czohcHJldl9odG1sIH5jdXJyZW50Omh0bWwgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwiZGlmZlwiO1xuICAgICAgIGlmIG5vdCAoVmRvbS5Ob2RlLlBhdGNoLmlzX2VtcHR5IHBhdGNoKSB0aGVuIFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5O1xuICAgICAgIHRpbWVyX3N0YXJ0IFwicGF0Y2hcIjtcbiAgICAgICBsZXQgZWx0ID0gVmRvbS5Ob2RlLlBhdGNoLmFwcGx5IHBhdGNoICFwcmV2X2VsdCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJwYXRjaFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwib25fZGlzcGxheVwiO1xuICAgICAgIChnZXRfb25fZGlzcGxheSAoKSkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlO1xuICAgICAgIHRpbWVyX3N0b3AgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpO1xuICAgICAgIGxldCBvbGRfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgIXByZXZfaHRtbCBpblxuICAgICAgIGxldCBuZXdfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgaHRtbCBpblxuICAgICAgIGxldCB0YWdzX3RoZV9zYW1lID0gT3B0aW9uLmVxdWFsIFN0cmluZy5lcXVhbCBvbGRfdGFnX25hbWUgbmV3X3RhZ19uYW1lIGluXG4gICAgICAgcHJldl9odG1sIDo9IGh0bWw7XG4gICAgICAgcHJldl9lbHQgOj0gZWx0O1xuICAgICAgIHRpbWVyX3N0b3AgXCJ0b3RhbFwiO1xuICAgICAgIGlmIHNob3VsZF9kZWJ1ZyAoKSB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcIi0tLS0tLS1cIik7XG4gICAgICAgKCogQ2hhbmdpbmcgdGhlIHRhZyBuYW1lIGNhdXNlcyBmb2N1cyB0byBiZSBsb3N0LiAgUmVmb2N1cyBpbiB0aGF0IGNhc2UuICopXG4gICAgICAgaWYgbm90IHRhZ3NfdGhlX3NhbWUgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICBpblxuICAgICAoKiBXZSB1c2UgW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBzbyB0aGF0IGJyb3dzZXIgdGVsbHMgdXMgd2hlcmUgaXQncyB0aW1lIHRvXG4gICAgICAgIHJlZnJlc2ggdGhlIFVJLiBBbGwgdGhlIGFjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHRoZSBjaGFuZ2VzIHByb3BhZ2F0ZWRcbiAgICAgICAgdG8gdGhlIERPTSBpbiBvbmUgZnJhbWUuICopXG4gICAgIGxldCByZWMgY2FsbGJhY2sgKCkgPVxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgICAgIHRoZW4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2spXG4gICAgIGluXG4gICAgICgqIFdlIHdhbnQgdGhlIHJvb3QgZWxlbWVudCB0byBzdGFydCBvdXQgZm9jdXNlZCwgc28gcGVyZm9ybSBhbiBpbml0aWFsXG4gICAgICAgIHVwZGF0ZS9yZW5kZXIsIHRoZW4gaW1tZWRpYXRlbHkgZm9jdXMgdGhlIHJvb3QgKHVubGVzcyBhIG5vbi1ib2R5IGVsZW1lbnQgYWxyZWFkeVxuICAgICAgICBoYXMgZm9jdXMpLiAgVGhpcyBmb2N1c2luZyBjYW4ndCBoYXBwZW4gaW5zaWRlIG9mIHRoZSBgY2FsbGJhY2tgIGJlY2F1c2UgdGhlbiBpdFxuICAgICAgICB3b3VsZCByZWZvY3VzIHJvb3QgZXZlcnkgZnJhbWUuICAqKVxuICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgKG1hdGNoIEpzLk9wdC50b19vcHRpb24gRG9tX2h0bWwuZG9jdW1lbnQjIy5hY3RpdmVFbGVtZW50IHdpdGhcbiAgICAgIHwgU29tZSBlbCAtPiBpZiBKcy5PcHQudGVzdCAoRG9tX2h0bWwuQ29lcmNlVG8uYm9keSBlbCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICAgfCBOb25lIC0+IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpKTtcbiAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2s7XG4gICAgIERlZmVycmVkLm5ldmVyICgpKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN0YXJ0X2JvbnNhaSA9IHN0YXJ0X2JvbnNhaVxuZW5kXG5cbmxldCBzdGFydFxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5TIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWwgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgc3RhcnRfYm9uc2FpXG4gICAgfmRlYnVnXG4gICAgfnN0b3BcbiAgICB+bmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgfmluaXRpYWxfbW9kZWxcbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgaW5jbHVkZSBBcHBcblxuICAgICAgbGV0IGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIF8gPSB0cnVlXG5cbiAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0ID1cbiAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgIGxldCVtYXAgY29tcG9uZW50ID0gY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCBpblxuICAgICAgICBsZXQgdmlldyA9IENvbXBvbmVudC52aWV3IGNvbXBvbmVudCBpblxuICAgICAgICBsZXQgYXBwbHlfYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9ldmVudCBfbW9kZWwgYWN0aW9uID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LmFwcGx5X2FjdGlvbiBjb21wb25lbnQgYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5IF9tb2RlbCB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQudXBkYXRlX3Zpc2liaWxpdHkgY29tcG9uZW50IH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uX2Rpc3BsYXkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50Lm9uX2Rpc3BsYXkgY29tcG9uZW50IHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgeyBBcHBfaW50Zi5Qcml2YXRlLnZpZXc7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXkgfVxuICAgICAgOztcbiAgICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tLlZkb21cbmluY2x1ZGUgVmRvbV9pbnB1dF93aWRnZXRzX2ludGZcblxubW9kdWxlIERlY2ltYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHQpXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJDYW5ub3QgcmVwcmVzZW50IG5vbi1maW5pdGUgZmxvYXQgYXMgZGVjaW1hbDogJWZcIiB0ICgpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgdCA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgc3ByaW50ZiBcIiUuMTJnXCIgdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEluaXRpYWxcbiAgICAoKiBUaGlzIGlzIHVzZWQgdG8gYXZvaWQgbWFya2luZyBhcyBpbnZhbGlkIGEgZmllbGQgdGhhdCBoYXNuJ3QgZXZlciBiZWVuXG4gICAgICAgdG91Y2hlZCBieSB0aGUgdXNlciwgdG8gaW1wcm92ZSBVWC4gKilcbiAgICB8IFZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgfCBJbnZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmdcbiAgICAgICAgOyBsYXN0X3ZhbGlkIDogJ2Egb3B0aW9uXG4gICAgICAgIDsgZXJyb3IgOiBzdHJpbmdcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIHR5cGUgJ2EgdXBkYXRlID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCBsaWZ0ICh0eXBlIGEpIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IGEgdFxuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBJbml0aWFsIC0+IFwiXCJcbiAgICAgICAgfCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciA9IF8gfSAtPiBpbnB1dFxuICAgICAgICB8IFZhbGlkIHsgaW5wdXQ7IHZhbHVlIH0gLT5cbiAgICAgICAgICAobWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgaW5wdXQgLT4gaW5wdXRcbiAgICAgICAgICAgfCBOb25lIC0+IE0udG9fc3RyaW5nIHZhbHVlKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IFZhbGlkIHsgaW5wdXQgPSBTb21lIHM7IHZhbHVlID0gTS5vZl9zdHJpbmcgcyB9IHdpdGhcbiAgICAgICAgfCBleG4gLT4gSW52YWxpZCB7IGlucHV0ID0gczsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yID0gRXhuLnRvX3N0cmluZyBleG4gfVxuICAgICAgOztcbiAgICBlbmQgOiBTdHJpbmdhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0ID0gYSB0KVxuICA7O1xuXG4gIGxldCBpbml0aWFsX2VtcHR5ID0gSW5pdGlhbFxuICBsZXQgcmV0dXJuIHZhbHVlID0gVmFsaWQgeyBpbnB1dCA9IE5vbmU7IHZhbHVlIH1cblxuICBsZXQgZ2V0X2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCBfIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9sYXN0ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9IC0+IGxhc3RfdmFsaWRcbiAgICB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCB8IFZhbGlkIF8gLT4gTm9uZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT4gU29tZSBlcnJvclxuICA7O1xuXG4gIGxldCBpc19pbnZhbGlkID0gZnVuY3Rpb25cbiAgICB8IEludmFsaWQgXyAtPiB0cnVlXG4gICAgfCBWYWxpZCBfIHwgSW5pdGlhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19pbml0aWFsX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgb2xkIG5ld18gPVxuICAgIG1hdGNoIG9sZCwgbmV3XyB3aXRoXG4gICAgfCBJbml0aWFsLCBfIC0+IG5ld19cbiAgICB8IF8sIFZhbGlkIF8gLT4gbmV3X1xuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlID0gb2xkIH0sIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IFNvbWUgb2xkOyBlcnJvciB9XG4gICAgfCAoIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9XG4gICAgICAsIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yIH0gKSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkOyBlcnJvciB9XG4gICAgfCBJbnZhbGlkIF8sIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBTb21lIF87IGVycm9yID0gXyB9IC0+IG5ld19cbiAgICB8IF8sIEluaXRpYWwgLT4gb2xkXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2ludmFsaWQgdmFsaWRhdGVkIGF0dHJzID1cbiAgaWYgVmFsaWRhdGVkLmlzX2ludmFsaWQgdmFsaWRhdGVkXG4gIHRoZW4gQXR0ci5jcmVhdGUgXCJhcmlhLWludmFsaWRcIiBcInRydWVcIiA6OiBhdHRyc1xuICBlbHNlIGF0dHJzXG47O1xuXG5tb2R1bGUgVGltZV9jb21wYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVGltZV9ucy5PZmRheS50XG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gVGltZV9ucy5PZmRheS5vZl9zdHJpbmdcblxuICAgICgqIFRoZSBicm93c2VyIGV4cGVjdHMgYSBISDptbSBmb3JtYXQgd2l0aCBvcHRpb25hbCB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiO1xuICAgICAgIFtUaW1lX25zLk9mZGF5LnRvX3N0cmluZ10gcHJvdmlkZXMgcHJlY2lzaW9uIGluIG5hbm9zZWNvbmRzLCB3aGljaCBpcyB0b28gbXVjaC4gKilcbiAgICBsZXQgdG9fc3RyaW5nID0gVGltZV9ucy5PZmRheS50b19taWxsaXNlY29uZF9zdHJpbmdcbiAgZW5kXG5cbiAgbGV0IHpvbmVkIHpvbmUgOiAobW9kdWxlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IFRpbWVfbnMudCkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBUaW1lX25zLnRcblxuICAgICAgKCogRm9ybWF0IGZyb20gdGhlIGJyb3dzZXI6IHl5eXktTU0tZGRUaGg6bW0gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBwYXJ0cyA9IFN0cmluZy5zcGxpdF9vbl9jaGFycyBzIH5vbjpbICdUJzsgJzonIF0gaW5cbiAgICAgICAgbGV0IGRhdGUgPSBMaXN0Lm50aF9leG4gcGFydHMgMCB8PiBEYXRlLm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgaHIgPSBMaXN0Lm50aF9leG4gcGFydHMgMSB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBtaW4gPSBMaXN0Lm50aF9leG4gcGFydHMgMiB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBvZmRheSA9IFRpbWVfbnMuT2ZkYXkuY3JlYXRlIH5ociB+bWluICgpIGluXG4gICAgICAgIFRpbWVfbnMub2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgcyA9IFRpbWVfbnMudG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgfnpvbmUgdCBpblxuICAgICAgICAoKiBUaGUgYnJvd3NlciBleHBlY3QgYSB5eXl5LU1NLWRkVGhoOm1tIGZvcm1hdCBhbmQgaXQgYWxsb3dzXG4gICAgICAgICAgIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCIuXG5cbiAgICAgICAgICAgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgZm9ybWF0OiAyMDE5LTAxLTMwVDAxOjAwOjAwLjAwMDAwMDAwMCswMTowMFxuXG4gICAgICAgICAgIGRlc2lyZWQgZm9ybWF0IGFmdGVyIGN1dHRpbmc6ICAgMjAxOS0wMS0zMFQwMTowMDowMFxuICAgICAgICAqKVxuICAgICAgICBTdHJpbmcubHNwbGl0Ml9leG4gfm9uOicuJyBzIHw+IFR1cGxlMi5nZXQxXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkIGF0dHJzID0gaWYgZGlzYWJsZWQgdGhlbiBBdHRyLmRpc2FibGVkIDo6IGF0dHJzIGVsc2UgYXR0cnNcbmxldCBhZGRfYXR0cnMgYXR0cnMnIGF0dHJzID0gYXR0cnMgQCBhdHRycycgfD4gQXR0cnMubWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXG5cbmxldCBzdHJ1Y3R1cmFsX2xpc3QgPyhvcmllbnRhdGlvbiA9IGBWZXJ0aWNhbCkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgbGF5b3V0X3N0eWxlID1cbiAgICBtYXRjaCBvcmllbnRhdGlvbiB3aXRoXG4gICAgfCBgVmVydGljYWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgQmxvY2spXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBJbmxpbmVfYmxvY2spXG4gIGluXG4gIE5vZGUudWxcbiAgICB+YXR0cjpcbiAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwibGlzdC1zdHlsZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiBtYXJnaW5fbGVmdCAoYFB4IDApKVxuICAgICAgICAgIF1cbiAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpKVxuICAgIChMaXN0Lm1hcCBjaGlsZHJlbiB+ZjooZnVuIGNoaWxkIC0+IE5vZGUubGkgfmF0dHI6KEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlKSBbIGNoaWxkIF0pKVxuOztcblxubW9kdWxlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZSA9IEpzX29mX29jYW1sLkpzLlVuc2FmZVxuICBvcGVuIEpzX29mX29jYW1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcblxuICBsZXQgaXNfYWN0aXZlIGVsZW1lbnQgPVxuICAgIGxldCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudCA9IFVuc2FmZS5nZXQgZG9jdW1lbnQgKEpzLnN0cmluZyBcImFjdGl2ZUVsZW1lbnRcIikgaW5cbiAgICBwaHlzX2VxdWFsIGVsZW1lbnQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnRcbiAgOztcblxuICBsZXQgdmFsdWVfcHJvcGVydHkgPSBKcy5zdHJpbmcgXCJ2YWx1ZVwiXG4gIGxldCBnZXRfdmFsdWUgZWxlbWVudCA6ICdhIEpzLnQgPSBVbnNhZmUuZ2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHlcbiAgbGV0IHNldF92YWx1ZSBlbGVtZW50IHZhbHVlID0gVW5zYWZlLnNldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5IHZhbHVlXG5cbiAgbGV0IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mID1cbiAgICAoKiBUaGlzIGV2ZW50IGhhbmRsZXIgbm9ybWFsaXplcyB0aGUgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgb24gdGhlIFtjaGFuZ2VdIGV2ZW50LlxuICAgICAgIEZvciBhIHRleHQgZW50cnksIHRoaXMgbWVhbnMgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGVudGVyLCBhbmQgd2hlbiB0aGUgdXNlciBibHVyc1xuICAgICAgIHRoZSBlbGVtZW50LiBXaHkgZG9uJ3Qgd2Ugc2ltcGx5IFt0b19zdHJpbmddIHRoZSB2YWx1ZSBpbiB0aGUgbW9kZWw/IEJlY2F1c2UgZm9yXG4gICAgICAgc29tZSBpbnB1dCBlbGVtZW50cywgeW91IGNhbiBoYXZlIGEgY2hhbmdlIGV2ZW50IHRoYXQgZmlyZXMgYWZ0ZXIgdGhlIHZhbHVlIGNoYW5nZXNcbiAgICAgICBidXQgYmVmb3JlIFtJbmNyX2RvbV0gY2FuIHVwZGF0ZSB0aGUgbW9kZWwuIEZvciBleGFtcGxlLCB0aGlzIGhhcHBlbnMgd2hlbiB5b3VcbiAgICAgICBwcmVzcyB0aGUgdXAgYXJyb3cgb24gYSBudW1iZXIgaW5wdXQuIFRoaXMgbGVhZHMgdG8gYSBidWcgd2hlcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgICAgIG1vZGVsIHN3YXBzIGJhY2sgYW5kIGZvcnRoIHdpdGggdGhlIHZhbHVlIGluIHRoZSBlbGVtZW50LiAqKVxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciBfID1cbiAgICAgIGxldCB2YWx1ZSA9IEpzLnRvX3N0cmluZyAoZ2V0X3ZhbHVlIGVsZW1lbnQpIGluXG4gICAgICBPcHRpb24uaXRlciAoZiB2YWx1ZSkgfmY6KGZ1biBub3JtYWxpemVkIC0+XG4gICAgICAgIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgbm9ybWFsaXplZCkpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciA9IERvbS5oYW5kbGVyIGNoYW5nZV9oYW5kbGVyIGluXG4gICAgYWRkRXZlbnRMaXN0ZW5lciBlbGVtZW50IEV2ZW50LmNoYW5nZSBjaGFuZ2VfaGFuZGxlciBKcy5fZmFsc2VcbiAgOztcblxuICBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGV2ZW50X2lkIDogZXZlbnRfbGlzdGVuZXJfaWQgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHZhbHVlIDogc3RyaW5nXG4gICAgICAgIDsgZiA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIH1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB7IHZhbHVlOyBfIH0gPSBTZXhwLkF0b20gdmFsdWVcbiAgICAgIGxldCBjb21iaW5lIF9sZWZ0IHJpZ2h0ID0gcmlnaHRcbiAgICBlbmRcblxuICAgIGxldCBpbml0IHsgSW5wdXQudmFsdWU7IGYgfSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAoaXNfYWN0aXZlIGVsZW1lbnQpIHRoZW4gc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyB2YWx1ZSk7XG4gICAgICBsZXQgZXZlbnRfaWQgPSBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiBpblxuICAgICAgeyBTdGF0ZS5ldmVudF9pZCB9XG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgc3RhdGUgZWxlbWVudCA9XG4gICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgbGV0IHsgU3RhdGUuZXZlbnRfaWQgfSA9IGluaXQgbmV3X2lucHV0IGVsZW1lbnQgaW5cbiAgICAgIHN0YXRlLlN0YXRlLmV2ZW50X2lkIDwtIGV2ZW50X2lkXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBBdHRyLkhvb2tzLk1ha2UgKE0pXG5cbiAgKCogW2NyZWF0ZSB2YWx1ZSB+Zl0gd2lsbCBzZXQgdGhlIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBbdmFsdWVdIGlmIHRoZSBlbGVtZW50IGlzIG5vdFxuICAgICBmb2N1c2VkIGFuZCBvbiBlYWNoIGNoYW5nZSwgcnVuIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggW2ZdIHRvIHJlLXNldCBpdC4gQWdhaW4sXG4gICAgIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBmb2N1c2VkLiBJZiBbZl0gcmV0dXJucyBbTm9uZV0sIG5vIGNoYW5nZVxuICAgICB0YWtlcyBwbGFjZS4gKilcbiAgbGV0IGNyZWF0ZSB2YWx1ZSB+ZiA9IEF0dHIuY3JlYXRlX2hvb2sgXCJ2YWx1ZTpub3JtYWxpemVkXCIgKGNyZWF0ZSB7IHZhbHVlOyBmIH0pXG5lbmRcblxubW9kdWxlIERyb3Bkb3duID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgTm9kZS5zZWxlY3RcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIF8gdmFsdWUgLT5cbiAgICAgICAgICAgICAgICBvbl9jaGFuZ2UgKEludC5vZl9zdHJpbmcgdmFsdWUgfD4gTGlzdC5udGhfZXhuIHZhbHVlcykpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgICBbIEF0dHIudmFsdWUgKEludC50b19zdHJpbmcgaW5kZXgpXG4gICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICBbIE5vZGUudGV4dCAodG9fc3RyaW5nIHZhbHVlKSBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgdmFsdWVzIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6XCJcIiB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1fb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIE0uYWxsIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6XCJcIiB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrYm94ID0gc3RydWN0XG4gIGxldCBpbXBsID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSA9XG4gICAgTm9kZS5sYWJlbFxuICAgICAgfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGV4dHJhX2F0dHJzKVxuICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSAoKSlcbiAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCkpXG4gICAgICAgICAgW11cbiAgICAgIDsgTm9kZS50ZXh0IGxhYmVsXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIH5pc19jaGVja2VkIH5sYWJlbCB+b25fdG9nZ2xlICgpID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHI6KEF0dHIuY2xhc3NfIFwiY2hlY2tib3gtY29udGFpbmVyXCIpXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrbGlzdCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgID1cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LWNoZWNrbGlzdFwiOyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBDaGVja2JveC5pbXBsXG4gICAgICAgICAgIH5leHRyYV9hdHRyc1xuICAgICAgICAgICB+ZGlzYWJsZWRcbiAgICAgICAgICAgfmlzX2NoZWNrZWQ6KGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgfmxhYmVsOih0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgfm9uX3RvZ2dsZTooZnVuICgpIC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAoKSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IERpc3BsYXkgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgdmFsdWVzIH5pc19jaGVja2VkIH5vbl90b2dnbGUgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIE0uYWxsIH5pc19jaGVja2VkIH5vbl90b2dnbGUgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9fYWN0aW9uXG4gICAgICB8IENsZWFyX2FsbFxuICAgICAgfCBTZWxlY3RfYWxsXG4gIGVuZFxuXG4gIGxldCBpbXBsXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/KHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IuTm9fYWN0aW9uKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP3NpemVcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICAgIGxldCBzaXplID0gT3B0aW9uLnZhbHVlIHNpemUgfmRlZmF1bHQ6KExpc3QubGVuZ3RoIHZhbHVlcykgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgOyBBdHRyLmNyZWF0ZSBcInNpemVcIiAoSW50LnRvX3N0cmluZyBzaXplKVxuICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIGV2dCAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5iaW5kIGV2dCMjLnRhcmdldCBEb21faHRtbC5Db2VyY2VUby5zZWxlY3QpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgdGFyZ2V0IC0+IHRhcmdldFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgXCJNdWx0aV9zZWxlY3QgW29uX2NoYW5nZV0gZXZlbnQgZmlyZWQgd2l0aCBhIG1pc3NpbmcgdGFyZ2V0IG9yIHRhcmdldCBcXFxuICAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgYSBzZWxlY3QgZWxlbWVudC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvbGxlY3Rpb25fdG9fbGlzdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgIExpc3QuaW5pdCBjb2xsZWN0aW9uIyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuZ2V0IChjb2xsZWN0aW9uIyNpdGVtIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcHRpb25zID0gY29sbGVjdGlvbl90b19saXN0IHRhcmdldCMjLm9wdGlvbnMgaW5cbiAgICAgICAgICBsZXQgc2VsZWN0ZWRfdmFsdWVzID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC56aXBfZXhuIHZhbHVlcyBvcHRpb25zKSB+ZjooZnVuICh2YWx1ZSwgb3B0aW9uKSAtPlxuICAgICAgICAgICAgICBPcHRpb24uc29tZV9pZiAoSnMudG9fYm9vbCBvcHRpb24jIy5zZWxlY3RlZCkgdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgc2VsZWN0ZWRfdmFsdWVzKSlcbiAgICAgIF1cbiAgICAgIEAgZXh0cmFfYXR0cnNcbiAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPVxuICAgICAgTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0IGlzX3NlbGVjdGVkID0gU2V0Lm1lbSBzZWxlY3RlZCB2YWx1ZSBpblxuICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICgqIFtBdHRyLmJvb2xfcHJvcGVydHldIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGluIHN5bmMgYnkgc2V0dGluZyB0aGUgSlNcbiAgICAgICAgICAgICBwcm9wZXJ0eS4gW0F0dHIuc2VsZWN0ZWRdIG1vZGlmaWVzIHRoZSBET00gYXR0cmlidXRlIHNvIHRoYXQgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgICAgIGNhbiBiZSBzdHlsZWQgd2l0aCBDU1MuIFtBdHRyLnNlbGVjdGVkXSBhbG9uZSBkb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICAgICAgICAgcHJvcGVybHkgaWYgdGhlIG1vZGVsIGNoYW5nZXMsIHNvIGJvdGggYXJlIG5lZWRlZC4gKilcbiAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgKFsgU29tZSAoQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiBpc19zZWxlY3RlZClcbiAgICAgICAgICAgICAgICA7IFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKEF0dHIub25fY2xpY2sgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhc19yZXBlYXRlZF9jbGljayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoSnMudG9fYm9vbCBldnQjIy5jdHJsS2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTZXQuZXF1YWwgc2VsZWN0ZWQgKFNldC5zaW5nbGV0b24gKG1vZHVsZSBNKSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggd2FzX3JlcGVhdGVkX2NsaWNrLCByZXBlYXRlZF9jbGlja19iZWhhdmlvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgZmFsc2UsIF8gfCB0cnVlLCBOb19hY3Rpb24gLT4gRWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICB8IHRydWUsIENsZWFyX2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgICAgICAgICAgICAgICAgICB8IHRydWUsIFNlbGVjdF9hbGwgLT4gb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHZhbHVlcykpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlcl9vcHQpKVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycykgb3B0aW9uc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIHZhbHVlc1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW1fc2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICBNLmFsbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5lbmRcblxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIG1vZHVsZSBDYWxsX29uX2lucHV0X3doZW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBUZXh0X2NoYW5nZWRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdFxuXG4gICAgbGV0IGxpc3RlbmVyID0gZnVuY3Rpb25cbiAgICAgIHwgVGV4dF9jaGFuZ2VkIC0+IEF0dHIub25faW5wdXRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdCAtPiBBdHRyLm9uX2NoYW5nZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBub3JtYWxpemUgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TKSBzID1cbiAgICBtYXRjaCBNLnRvX3N0cmluZyAoTS5vZl9zdHJpbmcgcykgd2l0aFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gU29tZSBcIlwiXG4gICAgfCB2IC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuIGF0dHJzID1cbiAgICBtYXRjaCBvbl9yZXR1cm4gd2l0aFxuICAgIHwgTm9uZSAtPiBhdHRyc1xuICAgIHwgU29tZSBvbl9yZXR1cm4gLT5cbiAgICAgIEF0dHIub25fa2V5ZG93biAoZnVuIGV2IC0+XG4gICAgICAgIGlmIGV2IyMua2V5Q29kZSA9IDEzIHRoZW4gb25fcmV0dXJuICgpIGVsc2UgRWZmZWN0Lklnbm9yZSlcbiAgICAgIDo6IGF0dHJzXG4gIDs7XG5cbiAgbGV0IGlucHV0X25vZGUgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpID8ocGxhY2Vob2xkZXIgPSBcIlwiKSBhdHRycyA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoYXR0cnNcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuXG4gIGxldCByYXcgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgP29uX3JldHVybiB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBbIEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB2YWx1ZTsgQXR0ci5vbl9pbnB1dCAoZnVuIF9ldiAtPiBvbl9pbnB1dCkgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhzaG91bGRfbm9ybWFsaXplID0gdHJ1ZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnR5cGVfYXR0cnNcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbGV0IHZhbHVlID0gT3B0aW9uLnZhbHVlX21hcCB+ZjpNLnRvX3N0cmluZyB2YWx1ZSB+ZGVmYXVsdDpcIlwiIGluXG4gICAgICBpZiBzaG91bGRfbm9ybWFsaXplXG4gICAgICB0aGVuIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihub3JtYWxpemUgKG1vZHVsZSBNKSlcbiAgICAgIGVsc2UgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KGNvbnN0IE5vbmUpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IG9uX2lucHV0IE5vbmVcbiAgICAgICAgfCBzIC0+IG9uX2lucHV0IChPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBNLm9mX3N0cmluZyBzKSkpXG4gICAgOyB2YWx1ZVxuICAgIF1cbiAgICB8PiBhZGRfYXR0cnMgdHlwZV9hdHRyc1xuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRleHRcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IChtb2R1bGUgVikgPSBWYWxpZGF0ZWQubGlmdCAobW9kdWxlIE0pIGluXG4gICAgbGV0IHZhbHVlX2F0dHIgPVxuICAgICAgbWF0Y2ggKHZhbHVlIDogVi50KSB3aXRoXG4gICAgICB8IEluaXRpYWwgLT4gQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIFwiXCJcbiAgICAgIHwgXyAtPiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSAoVi50b19zdHJpbmcgdmFsdWUpIH5mOihub3JtYWxpemUgKG1vZHVsZSBWKSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+XG4gICAgICAgIG9uX2lucHV0IChWLm9mX3N0cmluZyBzKSlcbiAgICA7IHZhbHVlX2F0dHJcbiAgICA7IEF0dHIudHlwZV8gXCJ0ZXh0XCJcbiAgICBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IG1heWJlX2ludmFsaWQgdmFsdWVcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IHRleHQgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBvZl9zdHJpbmdhYmxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IG51bWJlclxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IHJhbmdlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5zdGVwXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwicmFuZ2VcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB0aW1lID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgVGltZV9jb21wYXQuT2ZkYXkpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGltZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IGRhdGUgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBEYXRlKVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGhvdXJzID1cbiAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgdXRjX29mZnNldFxuICAgICAgICAoKiBnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSB0aW1lIHpvbmUgZGlmZmVyZW5jZSwgaW4gbWludXRlcywgZnJvbSBjdXJyZW50XG4gICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgaXMgd2hlcmUgdGhlIG1pbnVzIGNvbWVzIGZyb20uXG5cbiAgICAgICAgICAgVGhlIG1pbnV0ZXMgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gaG91cnMgc2luY2UgdGhhdCBpcyB0aGUgZm9ybWF0XG4gICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICB+ZGVmYXVsdDooKG5ldyVqcyBKc19vZl9vY2FtbC5Kcy5kYXRlX25vdykjI2dldFRpbWV6b25lT2Zmc2V0IC8gLTYwKVxuICAgICAgICB+ZjooZnVuIHV0Y19vZmZzZXQgLT4gVGltZV9ucy5TcGFuLnRvX2hyIHV0Y19vZmZzZXQgfD4gRmxvYXQudG9faW50KVxuICAgIGluXG4gICAgbGV0IChtb2R1bGUgWm9uZWRfdGltZSkgPSBUaW1lX2NvbXBhdC56b25lZCAoVGltZS5ab25lLm9mX3V0Y19vZmZzZXQgfmhvdXJzKSBpblxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFpvbmVkX3RpbWUpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRldGltZS1sb2NhbFwiIF1cbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS50ZXh0YXJlYVxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgIDsgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6T3B0aW9uLnJldHVyblxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcblxuICAoKiBBY2NvcmRpbmcgdG9cbiAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2NvbG9yI1ZhbHVlIHRoZVxuICAgICB2YWx1ZSBtdXN0IGJlIHNldCBpbiBoZXggZm9ybWF0IGFuZCB3aWxsIGFsd2F5cyBjb21lcyBiYWNrIGluIGhleCBmb3JtYXQuICopXG4gIGxldCBjb2xvcl9waWNrZXJcbiAgICAgICAgPyhleHRyYV9hdHRyID0gQXR0ci5lbXB0eSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgKGBIZXggdmFsdWVfKSA9IHZhbHVlIGluXG4gICAgWyBBdHRyLih0eXBlXyBcImNvbG9yXCIgQCB2YWx1ZV9wcm9wIHZhbHVlXyBAIGV4dHJhX2F0dHIpXG4gICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT4gb25faW5wdXQgKGBIZXggcykpXG4gICAgXVxuICAgIHw+IGlucHV0X25vZGUgP2Rpc2FibGVkXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgd2l0aF92YWxpZGF0aW9uID8oZXh0cmFfYXR0cnMgPSBbXSkgdGV4dCB+dmFsaWRhdGlvbiB+b25fY2xpY2sgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cjpcbiAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAoWyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIHJlc3VsdCk7IEF0dHIudHlwZV8gXCJidXR0b25cIiBdXG4gICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cjpcbiAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAoWyBBdHRyLmRpc2FibGVkXG4gICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwXCIgcmVhc29uXG4gICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwLXBvc2l0aW9uXCIgXCJ0b3BcIlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuXG4gIGxldCBzaW1wbGUgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpIHRleHQgfm9uX2NsaWNrID1cbiAgICBOb2RlLmJ1dHRvblxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiYnV0dG9uXCI7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgKCkpIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYWRpb19idXR0b25zID0gc3RydWN0XG4gIG1vZHVsZSBTdHlsZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5hdGl2ZVxuICAgICAgfCBCdXR0b25fbGlrZSBvZiB7IGV4dHJhX2F0dHJzIDogY2hlY2tlZDpib29sIC0+IEF0dHIudCBsaXN0IH1cblxuICAgIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgICAgQnV0dG9uX2xpa2VcbiAgICAgICAgeyBleHRyYV9hdHRycyA9XG4gICAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgICBpZiBjaGVja2VkXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gY29sb3IgKGBIZXggXCIjRjdGN0Y3XCIpKVxuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiNFRkVGRUZcIikpXG4gICAgICAgICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuXG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHN0eWxlIDogU3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPiBbIEF0dHIuc3R5bGUgaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgKGxhYmVsX2F0dHJzIH5jaGVja2VkKSlcbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIubmFtZSBuYW1lXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIuY2xhc3NlcyBbIFwicmFkaW8tYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBjaGVja2VkXG4gICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpKVxuICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgOyBOb2RlLnRleHQgKHRvX3N0cmluZyBpdGVtKVxuICAgICAgICAgICBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgdmFsdWVzXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19ob3Jpem9udGFsXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBIb3Jpem9udGFsXG4gICAgICB+bmFtZVxuICAgICAgfm9uX2NsaWNrXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6RS50b19zdHJpbmdcbiAgICAgIH5lcXVhbDpFLmVxdWFsXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0ID8oZXh0cmFfYXR0cnMgPSBbXSkgP2FjY2VwdCB+b25faW5wdXQgKCkgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgOyBhY2NlcHRfYXR0cnMgYWNjZXB0XG4gICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5pbml0IGZpbGVfbGlzdCMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWVfZXhuXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGVzKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5cbiAgbGV0IHNpbmdsZSA/KGV4dHJhX2F0dHJzID0gW10pID9hY2NlcHQgfm9uX2lucHV0ICgpID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlX2xpc3QjI2l0ZW0gMCB8PiBKcy5PcHQudG9fb3B0aW9uIGluXG4gICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IChDKSBKZWFuLUNocmlzdG9waGUgRmlsbGlhdHJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICAgICopXG4oKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICopXG4oKiAgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyAgICAgICAgICAgICopXG4oKiAgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICopXG4oKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICopXG4oKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqcyBNYXBzIG9mIGludGVnZXJzIGltcGxlbWVudGVkIGFzIFBhdHJpY2lhIHRyZWVzLCBmb2xsb3dpbmcgQ2hyaXNcbiAgICBPa2FzYWtpIGFuZCBBbmRyZXcgR2lsbCdzIHBhcGVyIHtcXGVtIEZhc3QgTWVyZ2VhYmxlIEludGVnZXIgTWFwc31cbiAgICAoe1xcdHRcXHNtYWxsIGh0dHA6Ly93d3cuY3MuY29sdW1iaWEuZWR1L1xcfnt9Y2RvL3BhcGVycy5odG1sXFwjbWw5OG1hcHN9KS5cbiAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgbW9kdWxlIFtQdHNldF0gd2hpY2ggaXMgYWxzbyBiYXNlZCBvbiB0aGVcbiAgICBzYW1lIGRhdGEtc3RydWN0dXJlLiAqKVxuXG50eXBlIGtleSA9IGludFxuXG50eXBlICdhIHQgPVxuICB8IEVtcHR5XG4gIHwgTGVhZiBvZiBpbnQgKiAnYVxuICB8IEJyYW5jaCBvZiBpbnQgKiBpbnQgKiAnYSB0ICogJ2EgdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgdCA9IHQgPSBFbXB0eVxuXG5sZXQgemVyb19iaXQgayBtID0gKGsgbGFuZCBtKSA9PSAwXG5cbmxldCByZWMgbWVtIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaixfKSAtPiBrID09IGpcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IG1lbSBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IHJlYyBmaW5kIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgayA9PSBqIHRoZW4geCBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gZmluZCBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IGZpbmRfb3B0IGsgbSA9IHRyeSBTb21lIChmaW5kIGsgbSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4oKiBOb3RlOiBmaW5kX2ZpcnN0L2xhc3QgaGF2ZSB0byBsb29rIGluIGJvdGggc3VidHJlZXNcbiAgIGFzIHRoZXNlIGFyZSBsaXR0bGUtZW5kaWFuIFBhdHJpY2lhIHRyZWVzICopXG5sZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA8IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPCByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPiByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrID4gcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBsb3dlc3RfYml0IHggPSB4IGxhbmQgKC14KVxuXG5sZXQgYnJhbmNoaW5nX2JpdCBwMCBwMSA9IGxvd2VzdF9iaXQgKHAwIGx4b3IgcDEpXG5cbmxldCBtYXNrIHAgbSA9IHAgbGFuZCAobS0xKVxuXG5sZXQgam9pbiAocDAsdDAscDEsdDEpID1cbiAgbGV0IG0gPSBicmFuY2hpbmdfYml0IHAwIHAxIGluXG4gIGlmIHplcm9fYml0IHAwIG0gdGhlblxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MCwgdDEpXG4gIGVsc2VcbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDEsIHQwKVxuXG5sZXQgbWF0Y2hfcHJlZml4IGsgcCBtID0gKG1hc2sgayBtKSA9PSBwXG5cbmxldCBhZGQgayB4IHQgPVxuICBsZXQgcmVjIGlucyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrLHgpXG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT5cbiAgICAgIGlmIGogPT0gayB0aGVuIExlYWYgKGsseCkgZWxzZSBqb2luIChrLCBMZWFmIChrLHgpLCBqLCB0KVxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgQnJhbmNoIChwLCBtLCBpbnMgdDAsIHQxKVxuXHRlbHNlXG5cdCAgQnJhbmNoIChwLCBtLCB0MCwgaW5zIHQxKVxuICAgICAgZWxzZVxuXHRqb2luIChrLCBMZWFmIChrLHgpLCBwLCB0KVxuICBpblxuICBpbnMgdFxuXG5sZXQgc2luZ2xldG9uIGsgdiA9XG4gIGFkZCBrIHYgZW1wdHlcblxubGV0IGJyYW5jaCA9IGZ1bmN0aW9uXG4gIHwgKF8sXyxFbXB0eSx0KSAtPiB0XG4gIHwgKF8sXyx0LEVtcHR5KSAtPiB0XG4gIHwgKHAsbSx0MCx0MSkgICAtPiBCcmFuY2ggKHAsbSx0MCx0MSlcblxubGV0IHJlbW92ZSBrIHQgPVxuICBsZXQgcmVjIHJtdiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+IGlmIGsgPT0gaiB0aGVuIEVtcHR5IGVsc2UgdFxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCBybXYgdDAsIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCB0MCwgcm12IHQxKVxuICAgICAgZWxzZVxuXHR0XG4gIGluXG4gIHJtdiB0XG5cbmxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBjYXJkaW5hbCB0MCArIGNhcmRpbmFsIHQxXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHhcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gaXRlciBmIHQwOyBpdGVyIGYgdDFcblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXAgZiB0MCwgbWFwIGYgdDEpXG5cbmxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiBrIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwaSBmIHQwLCBtYXBpIGYgdDEpXG5cbmxldCByZWMgZm9sZCBmIHMgYWNjdSA9IG1hdGNoIHMgd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4IGFjY3VcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9sZCBmIHQwIChmb2xkIGYgdDEgYWNjdSlcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIChrLCB2KSAgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9yX2FsbCBwIHQwICYmIGZvcl9hbGwgcCB0MVxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGssIHYpIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGV4aXN0cyBwIHQwIHx8IGV4aXN0cyBwIHQxXG5cbmxldCByZWMgZmlsdGVyIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIGFzIHQgLT4gaWYgcHIgayB2IHRoZW4gdCBlbHNlIEVtcHR5XG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyIHByIHQwLCBmaWx0ZXIgcHIgdDEpXG5cbmxldCByZWMgZmlsdGVyX21hcCBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSAtPiAobWF0Y2ggcHIgayB2IHdpdGggU29tZSB2JyAtPiBMZWFmIChrLCB2JykgfCBOb25lIC0+IEVtcHR5KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlcl9tYXAgcHIgdDAsIGZpbHRlcl9tYXAgcHIgdDEpXG5cbmxldCBwYXJ0aXRpb24gcCBzID1cbiAgbGV0IHJlYyBwYXJ0ICh0LGYgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIHAgayB2IHRoZW4gKGFkZCBrIHYgdCwgZikgZWxzZSAodCwgYWRkIGsgdiBmKVxuICAgIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IHBhcnQgKHBhcnQgYWNjIHQwKSB0MVxuICBpblxuICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcblxubGV0IHJlYyBjaG9vc2UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZSB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgcmVjIGNob29zZV9vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZV9vcHQgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHNwbGl0IHggbSA9XG4gIGxldCBjb2xsIGsgdiAobCwgYiwgcikgPVxuICAgIGlmIGsgPCB4IHRoZW4gYWRkIGsgdiBsLCBiLCByXG4gICAgZWxzZSBpZiBrID4geCB0aGVuIGwsIGIsIGFkZCBrIHYgclxuICAgIGVsc2UgbCwgU29tZSB2LCByXG4gIGluXG4gIGZvbGQgY29sbCBtIChlbXB0eSwgTm9uZSwgZW1wdHkpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1pbl9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1pbl9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIChtaW5fYmluZGluZ19vcHQgcywgbWluX2JpbmRpbmdfb3B0IHQpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1heF9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1heF9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIG1heF9iaW5kaW5nX29wdCBzLCBtYXhfYmluZGluZ19vcHQgdCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgYmluZGluZ3MgbSA9XG4gIGZvbGQgKGZ1biBrIHYgYWNjIC0+IChrLCB2KSA6OiBhY2MpIG0gW11cblxuKCogd2Ugb3JkZXIgY29uc3RydWN0b3JzIGFzIEVtcHR5IDwgTGVhZiA8IEJyYW5jaCAqKVxubGV0IGNvbXBhcmUgY21wIHQxIHQyID1cbiAgbGV0IHJlYyBjb21wYXJlX2F1eCB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiAwXG4gICAgfCBFbXB0eSwgXyAtPiAtMVxuICAgIHwgXywgRW1wdHkgLT4gMVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrMSBrMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNtcCB4MSB4MlxuICAgIHwgTGVhZiBfLCBCcmFuY2ggXyAtPiAtMVxuICAgIHwgQnJhbmNoIF8sIExlYWYgXyAtPiAxXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBwMSBwMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG5cdGxldCBjID0gY29tcGFyZSBtMSBtMiBpblxuXHRpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYXV4IGwxIGwyIGluXG4gICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCByMSByMlxuICBpblxuICBjb21wYXJlX2F1eCB0MSB0MlxuXG5sZXQgZXF1YWwgZXEgdDEgdDIgPVxuICBsZXQgcmVjIGVxdWFsX2F1eCB0MSB0MiA9IG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT4gazEgPSBrMiAmJiBlcSB4MSB4MlxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBwMSA9IHAyICYmIG0xID0gbTIgJiYgZXF1YWxfYXV4IGwxIGwyICYmIGVxdWFsX2F1eCByMSByMlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBlcXVhbF9hdXggdDEgdDJcblxubGV0IG1lcmdlIGYgbTEgbTIgPVxuICBsZXQgYWRkIG0gayA9IGZ1bmN0aW9uIE5vbmUgLT4gbSB8IFNvbWUgdiAtPiBhZGQgayB2IG0gaW5cbiAgKCogZmlyc3QgY29uc2lkZXIgYWxsIGJpbmRpbmdzIGluIG0xICopXG4gIGxldCBtID0gZm9sZFxuICAgICAgKGZ1biBrMSB2MSBtIC0+IGFkZCBtIGsxIChmIGsxIChTb21lIHYxKSAoZmluZF9vcHQgazEgbTIpKSkgbTEgZW1wdHkgaW5cbiAgKCogdGhlbiBiaW5kaW5ncyBpbiBtMiB0aGF0IGFyZSBub3QgaW4gbTEgKilcbiAgZm9sZCAoZnVuIGsyIHYyIG0gLT4gaWYgbWVtIGsyIG0xIHRoZW4gbSBlbHNlIGFkZCBtIGsyIChmIGsyIE5vbmUgKFNvbWUgdjIpKSlcbiAgICBtMiBtXG5cbmxldCB1cGRhdGUgeCBmIG0gPVxuICBtYXRjaCBmIChmaW5kX29wdCB4IG0pIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB4IG1cbiAgfCBTb21lIHogLT4gYWRkIHggeiBtXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPSBuID49IDAgJiYgKG0gPCAwIHx8IG4gPCBtKVxuXG5sZXQgcmVjIHVuaW9uIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5LCB0ICAtPiB0XG4gIHwgdCwgRW1wdHkgIC0+IHRcbiAgfCBMZWFmIChrLHYxKSwgdCAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MSB8IFNvbWUgdjIgLT4gZiBrIHYxIHYyKSB0XG4gIHwgdCwgTGVhZiAoayx2MikgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjIgfCBTb21lIHYxIC0+IGYgayB2MSB2MikgdFxuICB8IChCcmFuY2ggKHAsbSxzMCxzMSkgYXMgcyksIChCcmFuY2ggKHEsbix0MCx0MSkgYXMgdCkgLT5cbiAgICAgIGlmIG0gPT0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBUaGUgdHJlZXMgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIE1lcmdlIHRoZSBzdWJ0cmVlcy4gKilcblx0YnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0MCksIHVuaW9uIGYgKHMxLHQxKSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFtxXSBjb250YWlucyBbcF0uIE1lcmdlIFt0XSB3aXRoIGEgc3VidHJlZSBvZiBbc10uICopXG5cdGlmIHplcm9fYml0IHEgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0KSwgczEpXG4gICAgICAgIGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHMwLCB1bmlvbiBmIChzMSx0KSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbiBtICYmIG1hdGNoX3ByZWZpeCBwIHEgbiB0aGVuXG5cdCgqIFtwXSBjb250YWlucyBbcV0uIE1lcmdlIFtzXSB3aXRoIGEgc3VidHJlZSBvZiBbdF0uICopXG5cdGlmIHplcm9fYml0IHAgbiB0aGVuXG5cdCAgYnJhbmNoIChxLCBuLCB1bmlvbiBmIChzLHQwKSwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHEsIG4sIHQwLCB1bmlvbiBmIChzLHQxKSlcbiAgICAgIGVsc2Vcblx0KCogVGhlIHByZWZpeGVzIGRpc2FncmVlLiAqKVxuXHRqb2luIChwLCBzLCBxLCB0KVxuXG5sZXQgdW5pb24gZiBzIHQgPSB1bmlvbiBmIChzLHQpXG5cbmxldCB0b19zZXEgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrLCB2KSAtPiBmdW4gKCkgLT4gU2VxLkNvbnMoKGssdiksIHMpXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IHRvX3NlcV9mcm9tIGsgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrZXksIHYpIC0+IGlmIGtleSA+PSBrIHRoZW4gZnVuICgpIC0+IFNlcS5Db25zKChrZXksdiksIHMpIGVsc2Ugc1xuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCBhZGRfc2VxIHMgbSA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIG0gc1xuXG5sZXQgb2Zfc2VxIHMgPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBzXG4iLCJsZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuIiwibGV0IHZlcnNpb24gPSBcIjIuMS4yXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgICAgKCAoKSApXG4jIDk4IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IDEgLT5cbiMgMyBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgKFxuICAgICBpZiBuIDw9IDAgdGhlbiAoKVxuICAgICBlbHNlIGJlZ2luXG4gICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoTGV4aW5nLmxleGVtZV9jaGFyIGxleGJ1ZiAwKTtcbiAgICAgICByZWFkX2p1bmsgYnVmIChuIC0gMSkgbGV4YnVmXG4gICAgIGVuZFxuICAgICApXG4jIDEwOSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTEgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiBcbmxldCByZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIG4gKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgbGV0IGp1bmtfc3RhcnRfcG9zID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZjtcbiAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0ganVua19zdGFydF9wb3MgKyAxXG5cbiMgMTIzIFwibGliL2xleGVyX3V0aWxzLm1sXCJcbiIsIm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4hIFlvanNvblxuXG50eXBlIHQgPSBZb2pzb24uU2FmZS50XG5cbmxldCB5b2pzb25fb2ZfdW5pdCAoKSA6IHQgPSBgTnVsbFxubGV0IHlvanNvbl9vZl9ib29sIGIgOiB0ID0gYEJvb2wgYlxubGV0IHlvanNvbl9vZl9zdHJpbmcgc3RyIDogdCA9IGBTdHJpbmcgc3RyXG5sZXQgeW9qc29uX29mX2J5dGVzIGJ5dGVzIDogdCA9IGBTdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCB5b2pzb25fb2ZfY2hhciBjIDogdCA9IGBTdHJpbmcgKFN0cmluZy5tYWtlIDEgYylcbmxldCB5b2pzb25fb2ZfaW50IG4gOiB0ID0gYEludCBuXG5sZXQgeW9qc29uX29mX2Zsb2F0IG4gOiB0ID0gYEZsb2F0IG5cbmxldCB5b2pzb25fb2ZfaW50MzIgKG4gOiBJbnQzMi50KSA6IHQgPSBgSW50bGl0IChJbnQzMi50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfaW50NjQgKG4gOiBJbnQ2NC50KSA6IHQgPSBgSW50bGl0IChJbnQ2NC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfbmF0aXZlaW50IG4gOiB0ID0gYEludGxpdCAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9yZWYgeW9qc29uX29mX19hIHJmID0geW9qc29uX29mX19hICFyZlxubGV0IHlvanNvbl9vZl9sYXp5X3QgeW9qc29uX29mX19hIGx2ID0geW9qc29uX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgeW9qc29uX29mX29wdGlvbiB5b2pzb25fb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiB5b2pzb25fb2ZfX2EgeFxuICB8IE5vbmUgLT4gYE51bGxcbjs7XG5cbmxldCB5b2pzb25fb2ZfcGFpciB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIChhLCBiKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiIF1cbjs7XG5cbmxldCB5b2pzb25fb2ZfdHJpcGxlIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgeW9qc29uX29mX19jIChhLCBiLCBjKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiOyB5b2pzb25fb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgeW9qc29uX29mX2xpc3QgeW9qc29uX29mX19hIGxzdCA9IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIH5mOnlvanNvbl9vZl9fYSBsc3QpKVxuXG5sZXQgeW9qc29uX29mX2FycmF5IHlvanNvbl9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0geW9qc29uX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHlvanNvbl9vZl9oYXNodGJsIHlvanNvbl9vZl9rZXkgeW9qc29uX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gYExpc3QgWyB5b2pzb25fb2Zfa2V5IGs7IHlvanNvbl9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCB5b2pzb25fb2Zfb3BhcXVlIF8gPSBgU3RyaW5nIFwiPG9wYXF1ZT5cIlxubGV0IHlvanNvbl9vZl9mdW4gXyA9IGBTdHJpbmcgXCI8ZnVuPlwiXG5cbmV4Y2VwdGlvbiBPZl95b2pzb25fZXJyb3Igb2YgZXhuICogdFxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2ZfeW9qc29uX2Vycm9yX2V4biBleGMgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoZXhjLCB5b2pzb24pKVxubGV0IG9mX3lvanNvbl9lcnJvciB3aGF0IHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKEZhaWx1cmUgd2hhdCwgeW9qc29uKSlcblxubGV0IHVuaXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gKClcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInVuaXRfb2ZfeW9qc29uOiBgTnVsbCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBib29sX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBCb29sIHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYm9vbF9vZl95b2pzb246IHRydWUvZmFsc2UgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgc3RyaW5nX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwic3RyaW5nX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJ5dGVzX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJ5dGVzX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGNoYXJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiB5b2pzb247XG4gICAgc3RyLlswXVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBvZiBzaXplIG9uZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgZmxvYXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEZsb2F0IHYgLT4gdlxuICB8IGBJbnQgaSAtPiBmbG9hdF9vZl9pbnQgaVxuICB8IGBJbnRsaXQgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImZsb2F0X29mX3lvanNvbjogZmxvYXQgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50MzJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50MzIub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQzMi5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50MzJfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDY0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDY0Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50NjQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDY0X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBuYXRpdmVpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gTmF0aXZlaW50Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gTmF0aXZlaW50Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJuYXRpdmVpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHJlZl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IHJlZiAoYV9fb2ZfeW9qc29uIHlvanNvbilcbmxldCBsYXp5X3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSBMYXp5LmZyb21fdmFsIChhX19vZl95b2pzb24geW9qc29uKVxuXG5sZXQgb3B0aW9uX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwgZWwgLT4gU29tZSAoYV9fb2ZfeW9qc29uIGVsKVxuOztcblxubGV0IHBhaXJfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGEsIGJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInBhaXJfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IHRyaXBsZV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiBjX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbjsgY195b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBsZXQgYyA9IGNfX29mX3lvanNvbiBjX3lvanNvbiBpblxuICAgIGEsIGIsIGNcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInRyaXBsZV9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgbGlzdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3lvanNvbiBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImxpc3Rfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGFycmF5X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbXSAtPiBbfHxdXG4gIHwgYExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3lvanNvbiBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3lvanNvbiBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImFycmF5X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBoYXNodGJsX29mX3lvanNvbiBrZXlfb2ZfeW9qc29uIHZhbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgWyBrX3lvanNvbjsgdl95b2pzb24gXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl95b2pzb24ga195b2pzb24pIH5kYXRhOih2YWxfb2ZfeW9qc29uIHZfeW9qc29uKVxuICAgICAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHlvanNvblxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgb3BhcXVlX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJvcGFxdWVfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgeW9qc29uXG47O1xuXG5sZXQgZnVuX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJmdW5fb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGxldCB5b2pzb25fb2ZfYXJyYXkgPSB5b2pzb25fb2ZfYXJyYXlcbiAgbGV0IGFycmF5X29mX3lvanNvbiA9IGFycmF5X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Jvb2wgPSB5b2pzb25fb2ZfYm9vbFxuICBsZXQgYm9vbF9vZl95b2pzb24gPSBib29sX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2NoYXIgPSB5b2pzb25fb2ZfY2hhclxuICBsZXQgY2hhcl9vZl95b2pzb24gPSBjaGFyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Zsb2F0ID0geW9qc29uX29mX2Zsb2F0XG4gIGxldCBmbG9hdF9vZl95b2pzb24gPSBmbG9hdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQgPSB5b2pzb25fb2ZfaW50XG4gIGxldCBpbnRfb2ZfeW9qc29uID0gaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDMyID0geW9qc29uX29mX2ludDMyXG4gIGxldCBpbnQzMl9vZl95b2pzb24gPSBpbnQzMl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQ2NCA9IHlvanNvbl9vZl9pbnQ2NFxuICBsZXQgaW50NjRfb2ZfeW9qc29uID0gaW50NjRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGlzdCA9IHlvanNvbl9vZl9saXN0XG4gIGxldCBsaXN0X29mX3lvanNvbiA9IGxpc3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbmF0aXZlaW50ID0geW9qc29uX29mX25hdGl2ZWludFxuICBsZXQgbmF0aXZlaW50X29mX3lvanNvbiA9IG5hdGl2ZWludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9vcHRpb24gPSB5b2pzb25fb2Zfb3B0aW9uXG4gIGxldCBvcHRpb25fb2ZfeW9qc29uID0gb3B0aW9uX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3JlZiA9IHlvanNvbl9vZl9yZWZcbiAgbGV0IHJlZl9vZl95b2pzb24gPSByZWZfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfc3RyaW5nID0geW9qc29uX29mX3N0cmluZ1xuICBsZXQgc3RyaW5nX29mX3lvanNvbiA9IHN0cmluZ19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ieXRlcyA9IHlvanNvbl9vZl9ieXRlc1xuICBsZXQgYnl0ZXNfb2ZfeW9qc29uID0gYnl0ZXNfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfdW5pdCA9IHlvanNvbl9vZl91bml0XG4gIGxldCB1bml0X29mX3lvanNvbiA9IHVuaXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGF6eV90ID0geW9qc29uX29mX2xhenlfdFxuICBsZXQgbGF6eV90X29mX3lvanNvbiA9IGxhenlfdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9oYXNodGJsID0geW9qc29uX29mX2hhc2h0YmxcbiAgbGV0IGhhc2h0Ymxfb2ZfeW9qc29uID0gaGFzaHRibF9vZl95b2pzb25cbmVuZFxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBZb2pzb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4hIFN0ZExhYmVsc1xub3BlbiBZb2pzb25fY29udlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWdcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3lvanNvbjogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHlvanNvbiBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3lvanNvbjogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIFxcXG4gICAgICAgZmllbGRzXCJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSB5b2pzb25cbjs7XG4iLCJtb2R1bGUgWW9qc29uX2NvbnZfZXJyb3IgPSBZb2pzb25fY29udl9lcnJvclxubW9kdWxlIFlvanNvbl9jb252ID0gWW9qc29uX2NvbnZcbm1vZHVsZSBZb2pzb25hYmxlID0gWW9qc29uYWJsZV9pbnRmXG5tb2R1bGUgWW9qc29uID0gWW9qc29uXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgICB8IE5vbmVcbiAgICB8IFNvbWUgb2YgJ2FcbmVuZFxuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgcG9seV9lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IGZ1biB4IC0+ICF4XG4iLCIjIDEgXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbnR5cGUgbm9ucmVjIGludCA9IGludFxudHlwZSBub25yZWMgY2hhciA9IGNoYXJcbnR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZ1xudHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdFxudHlwZSBub25yZWMgYm9vbCA9IGJvb2xcbnR5cGUgbm9ucmVjIHVuaXQgPSB1bml0XG50eXBlIG5vbnJlYyBleG4gPSBleG5cbnR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXlcbnR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0XG50eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb25cbnR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludFxudHlwZSBub25yZWMgaW50MzIgPSBpbnQzMlxudHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NFxudHlwZSBub25yZWMgJ2EgbGF6eV90ID0gJ2EgbGF6eV90XG50eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzXG5cbiMgMTggXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbigqIFdlIHJlcXVpcmUgNC4wOCB3aGlsZSA0LjA3IGFscmVhZHkgaGFzIGEgU3RkbGliIG1vZHVsZS5cbiAgIEluIDQuMDcsIHRoZSB0eXBlIGVxdWFsaXRpZXMgb24gU3RkbGliLlBlcnZhc2l2ZXNcbiAgIGFyZSBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhlICdpbmNsdWRlIFN0ZGxpYidcbiAgIGJlbG93IHRvIHNhdGlzZnkgdGhlIHNpZ25hdHVyZSBjb25zdHJhaW50cyBvblxuICAgUHB4X2Rlcml2aW5nX3J1bnRpbWUuUGVydmFzaXZlcy4gKilcbm1vZHVsZSBTdGRsaWIgPSBTdGRsaWJcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSByZXN1bHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5cbiAgdHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuZW5kXG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmxldCBjbHNzID0gQXR0ci5jbGFzc2VzO1xuXG5sZXQgZGl2X2MgPSBjbHMgPT4gZGl2KH5hdHRyPUF0dHIuY2xhc3NfKGNscykpO1xubGV0IHNwYW5fYyA9IGNscyA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKGNscykpO1xuXG5sZXQgZGl2X2VtcHR5ID0gZGl2KH5hdHRyPUF0dHIuY3JlYXRlKFwic3R5bGVcIiwgXCJkaXNwbGF5Om5vbmVcIiksIFtdKTtcblxubGV0IGRpdl9pZiA9IChwLCBhdHMsIG5zKSA9PiBwID8gZGl2KH5hdHRyPUF0dHIubWFueShhdHMpLCBucykgOiBkaXZfZW1wdHk7XG5sZXQgc3Bhbl9pZiA9IChwLCBhdHMsIG5zKSA9PlxuICBwID8gc3Bhbih+YXR0cj1BdHRyLm1hbnkoYXRzKSwgbnMpIDogc3BhbihbXSk7XG5cbmxldCB1bmxlc3MgPSAocCwgYSkgPT4gcCA/IEVmZmVjdC5NYW55KFtdKSA6IGE7XG4iLCJsZXQgc3dhcCA9ICgoYSwgYikpID0+IChiLCBhKTtcblxubGV0IG1hcDIgPSAoZiwgKGEsIGIpKSA9PiAoZihhKSwgZihiKSk7XG5cbmxldCBtYXAzID0gKGYsIChhLCBiLCBjKSkgPT4gKGYoYSksIGYoYiksIGYoYykpO1xuIiwibGV0IHByaW50X3RpbWVfcHJlZml4ID1cbiAgICAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgZW5kX3RpbWU6IGZsb2F0KTogdW5pdCA9PiB7XG4gIFByaW50Zi5wcmludGYoXG4gICAgXCIlLTMycyU0LjBmbXNcIixcbiAgICBuYW1lICsrIFwiOlwiLFxuICAgIDEwMDAuMCAqLiAoZW5kX3RpbWUgLS4gc3RhcnRfdGltZSksXG4gICk7XG59O1xuXG5sZXQgcHJpbnRfdGltZSA9IChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCBlbmRfdGltZTogZmxvYXQpOiB1bml0ID0+IHtcbiAgcHJpbnRfdGltZV9wcmVmaXgobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICBQcmludGYucHJpbnRmKFwiXFxuJSFcIik7XG59O1xuXG5sZXQgcHJpbnRfdGltZXMgPVxuICAgIChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCB0aW1lczogbGlzdCgoc3RyaW5nLCBmbG9hdCkpKTogdW5pdCA9PiB7XG4gIGFzc2VydCh0aW1lcyAhPSBbXSk7XG4gIGxldCBlbmRfdGltZSA9IExpc3QuZm9sZF9sZWZ0KChfLCBsYXN0KSA9PiBzbmQobGFzdCksIC0xLjAsIHRpbWVzKTtcbiAgcHJpbnRfdGltZV9wcmVmaXgobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICBQcmludGYucHJpbnRmKFwiIFtcIik7XG4gIGxldCByZWMgZ28gPSAocHJldmlvdXNfdGltZTogZmxvYXQsIHRpbWVzOiBsaXN0KChzdHJpbmcsIGZsb2F0KSkpOiB1bml0ID0+IHtcbiAgICBzd2l0Y2ggKHRpbWVzKSB7XG4gICAgfCBbXSA9PiAoKVxuICAgIHwgWyhuYW1lLCB0aW1lKSwgLi4udGltZXNdID0+XG4gICAgICBQcmludGYucHJpbnRmKFwiICVzOiAlLjBmbXNcIiwgbmFtZSwgMTAwMC4wICouICh0aW1lIC0uIHByZXZpb3VzX3RpbWUpKTtcbiAgICAgIGdvKHRpbWUsIHRpbWVzKTtcbiAgICB9O1xuICB9O1xuICBnbyhzdGFydF90aW1lLCB0aW1lcyk7XG4gIFByaW50Zi5wcmludGYoXCIgXVxcbiUhXCIpO1xufTtcblxubGV0IG1lYXN1cmVfdGltZSA9IChuYW1lOiBzdHJpbmcsIG1lYXN1cmU6IGJvb2wsIGY6IHVuaXQgPT4gJ2EpOiAnYSA9PlxuICBpZiAobWVhc3VyZSkge1xuICAgIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgICBsZXQgeCA9IGYoKTtcbiAgICBsZXQgZW5kX3RpbWUgPSBTeXMudGltZSgpO1xuICAgIHByaW50X3RpbWUobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICAgIHg7XG4gIH0gZWxzZSB7XG4gICAgZigpO1xuICB9O1xuIiwibGV0IGNhdCA9IFN0cmluZy5jb25jYXQoXCJcIik7XG5cbmxldCByZW1vdmVfbnRoID0gKG4sIHQpID0+IHtcbiAgYXNzZXJ0KG4gPCBTdHJpbmcubGVuZ3RoKHQpKTtcbiAgU3RyaW5nLnN1Yih0LCAwLCBuKSArKyBTdHJpbmcuc3ViKHQsIG4gKyAxLCBTdHJpbmcubGVuZ3RoKHQpIC0gbiAtIDEpO1xufTtcblxubGV0IHJlbW92ZV9maXJzdCA9IHJlbW92ZV9udGgoMCk7XG5sZXQgcmVtb3ZlX2xhc3QgPSB0ID0+IHJlbW92ZV9udGgoU3RyaW5nLmxlbmd0aCh0KSAtIDEsIHQpO1xuXG5sZXQgaW5zZXJ0X250aCA9IChuLCBzLCB0KSA9PiB7XG4gIGFzc2VydChuIDwgU3RyaW5nLmxlbmd0aCh0KSk7XG4gIFN0cmluZy5zdWIodCwgMCwgbikgKysgcyArKyBTdHJpbmcuc3ViKHQsIG4sIFN0cmluZy5sZW5ndGgodCkgLSBuKTtcbn07XG5cbmxldCBzcGxpdF9udGggPSAobiwgdCkgPT4ge1xuICBhc3NlcnQobiA8IFN0cmluZy5sZW5ndGgodCkpO1xuICAoU3RyaW5nLnN1Yih0LCAwLCBuKSwgU3RyaW5nLnN1Yih0LCBuLCBTdHJpbmcubGVuZ3RoKHQpIC0gbikpO1xufTtcblxubGV0IHRvX2xpc3QgPSBzID0+IExpc3QuaW5pdChTdHJpbmcubGVuZ3RoKHMpLCBpID0+IFN0cmluZy5tYWtlKDEsIHMuW2ldKSk7XG5cbmxldCByZXBlYXQgPSAobiwgcykgPT4gU3RyaW5nLmNvbmNhdChcIlwiLCBMaXN0LmluaXQobiwgXyA9PiBzKSk7XG5cbmxldCBhYmJyZXZpYXRlID0gKG1heF9sZW4sIHMpID0+XG4gIFN0cmluZy5sZW5ndGgocykgPiBtYXhfbGVuID8gU3RyaW5nLnN1YihzLCAwLCBtYXhfbGVuKSArKyBcIi4uLlwiIDogcztcbiIsIi8qIFRPRE86IHdlIG1pZ2h0IHdhbnQgdG8ganVzdCB1c2UgdGhpcyBBUEk/XG5cbiAgICBodHRwczovL2dpdGh1Yi5jb20vcmdyaW5iZXJnL29jYW1sLW10bC9ibG9iL21hc3Rlci9saWIvbXRsLm1sXG5cbiAgIFRob3VnaCBpdCdzIGEgYml0IGhlYXZ5LCBlc3BlY2lhbGx5IHdpdGggdGhlIGV4dHJhIHR5cGUgcGFyYW1ldGVyLi4uXG5cbiAgIEluIGFueSBjYXNlLCB0aGF0J3MgYSBnb29kIHJlZmVyZW5jZS4gKi9cblxubW9kdWxlIHR5cGUgTU9OQURfQkFTSUMgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0KCdhKTtcbiAgbGV0IHJldHVybjogJ2EgPT4gdCgnYSk7XG4gIGxldCBiaW5kOiAodCgnYSksICdhID0+IHQoJ2IpKSA9PiB0KCdiKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEX0ZVTkNUT1IgPSB7XG4gIGluY2x1ZGUgTU9OQURfQkFTSUM7XG4gIGxldCBtYXA6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xufTtcblxubW9kdWxlIE1ha2VfRnVuY3RvciA9IChNOiBNT05BRF9CQVNJQykgPT4ge1xuICBpbmNsdWRlIE07XG4gIGxldCBtYXAgPSAoeCwgZikgPT4gYmluZCh4LCBhID0+IE0ucmV0dXJuKGYoYSkpKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEX1pJUCA9IHtcbiAgaW5jbHVkZSBNT05BRF9GVU5DVE9SO1xuICBsZXQgemlwOiAodCgnYSksIHQoJ2IpKSA9PiB0KCgnYSwgJ2IpKTtcbn07XG5cbm1vZHVsZSBNYWtlX1ppcCA9IChNOiBNT05BRF9GVU5DVE9SKSA9PiB7XG4gIGluY2x1ZGUgTTtcblxuICBsZXQgemlwID0gKHgsIHkpID0+IGJpbmQoeCwgYSA9PiBiaW5kKHksIGIgPT4gTS5yZXR1cm4oKGEsIGIpKSkpO1xufTtcblxubW9kdWxlIHR5cGUgTU9OQUQgPSB7XG4gIGluY2x1ZGUgTU9OQURfWklQO1xuXG4gIGxldCBzZXF1ZW5jZTogbGlzdCh0KCdhKSkgPT4gdChsaXN0KCdhKSk7XG5cbiAgbW9kdWxlIFN5bnRheDoge1xuICAgIGxldCAoIGxldCogKTogKHQoJ2EpLCAnYSA9PiB0KCdiKSkgPT4gdCgnYik7XG4gICAgbGV0IChsZXQrKTogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG4gICAgbGV0IChhbmQrKTogKHQoJ2EpLCB0KCdiKSkgPT4gdCgoJ2EsICdiKSk7XG5cbiAgICBsZXQgKD4+PSk6ICh0KCdhKSwgJ2EgPT4gdCgnYikpID0+IHQoJ2IpO1xuICAgIGxldCAoPj58KTogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG4gIH07XG59O1xuXG5tb2R1bGUgTWFrZV9Nb25hZF9aID0gKE06IE1PTkFEX1pJUCkgPT4ge1xuICBpbmNsdWRlIE07XG5cbiAgbGV0IHNlcXVlbmNlID0gbXMgPT4ge1xuICAgIGxldCByZWMgc2VxdWVuY2UnID0gKG1zLCBhY2MpID0+IHtcbiAgICAgIHN3aXRjaCAobXMpIHtcbiAgICAgIHwgW10gPT4gYWNjXG4gICAgICB8IFttLCAuLi5tc10gPT5cbiAgICAgICAgYmluZChtLCB4ID0+IHNlcXVlbmNlJyhtcywgbWFwKGFjYywgYWNjID0+IFt4LCAuLi5hY2NdKSkpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBtYXAoc2VxdWVuY2UnKG1zLCBbXSB8PiByZXR1cm4pLCBMaXN0LnJldik7XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheCA9IHtcbiAgICBsZXQgKCBsZXQqICkgPSBiaW5kO1xuICAgIGxldCAobGV0KykgPSBtYXA7XG4gICAgbGV0IChhbmQrKSA9IHppcDtcblxuICAgIGxldCAoPj49KSA9IGJpbmQ7XG4gICAgbGV0ICg+PnwpID0gbWFwO1xuICB9O1xufTtcblxubW9kdWxlIE1ha2VfTW9uYWRfQiA9IChNOiBNT05BRF9CQVNJQykgPT5cbiAgTWFrZV9Nb25hZF9aKE1ha2VfWmlwKE1ha2VfRnVuY3RvcihNKSkpO1xuIiwibW9kdWxlIHR5cGUgU1RBVEUgPSB7XG4gIHR5cGUgdDtcbn07XG5cbm1vZHVsZSB0eXBlIFMgPSB7XG4gIHR5cGUgc3RhdGU7XG5cbiAgaW5jbHVkZSBNb25hZHMuTU9OQUQgd2l0aCB0eXBlIHQoJ2EpID0gc3RhdGUgPT4gKHN0YXRlLCAnYSk7XG5cbiAgbGV0IGdldDogdChzdGF0ZSk7XG4gIGxldCBwdXQ6IHN0YXRlID0+IHQodW5pdCk7XG4gIGxldCBtb2RpZnk6IChzdGF0ZSA9PiBzdGF0ZSkgPT4gdCh1bml0KTtcbiAgbGV0IG1vZGlmeSc6IChzdGF0ZSA9PiAoJ2EsIHN0YXRlKSkgPT4gdCgnYSk7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChTVDogU1RBVEUpID0+IHtcbiAgdHlwZSBzdGF0ZSA9IFNULnQ7XG5cbiAgbW9kdWxlIFQgPSB7XG4gICAgW0BkZXJpdmluZyBzZXhwXVxuICAgIHR5cGUgdCgnYSkgPSBzdGF0ZSA9PiAoc3RhdGUsICdhKTtcblxuICAgIGxldCByZXR1cm4gPSAoeCwgcykgPT4gKHMsIHgpO1xuXG4gICAgbGV0IGJpbmQgPSAoeGYsIGYsIHMpID0+IHtcbiAgICAgIGxldCAocycsIHgpID1cbiAgICAgICAgc3dpdGNoICh4ZihzKSkge1xuICAgICAgICB8IHIgPT4gclxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gPT5cbiAgICAgICAgICBwcmludF9lbmRsaW5lKFxuICAgICAgICAgICAgXCJiaW5kIGV4Y2VwdGlvbjogXCJcbiAgICAgICAgICAgICsrIFNleHBsaWIuU2V4cC50b19zdHJpbmdfaHVtKFNleHBsaWIuU3RkLnNleHBfb2ZfZXhuKGV4bikpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmFpc2UoZXhuKTtcbiAgICAgICAgfTtcbiAgICAgIGYoeCwgcycpO1xuICAgIH07XG5cbiAgICBsZXQgZ2V0ID0gcyA9PiAocywgcyk7XG5cbiAgICBsZXQgcHV0ID0gKHgsIF8pID0+ICh4LCAoKSk7XG5cbiAgICBsZXQgbW9kaWZ5ID0gZiA9PiBiaW5kKGdldCwgcyA9PiBwdXQoZihzKSkpO1xuXG4gICAgbGV0IG1vZGlmeScgPSBmID0+XG4gICAgICBiaW5kKFxuICAgICAgICBnZXQsXG4gICAgICAgIHMgPT4ge1xuICAgICAgICAgIGxldCAoeCwgcykgPSBmKHMpO1xuICAgICAgICAgIGJpbmQocHV0KHMpLCBfID0+IHJldHVybih4KSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9O1xuXG4gIGluY2x1ZGUgVDtcbiAgaW5jbHVkZSBNb25hZHMuTWFrZV9Nb25hZF9CKFQpO1xufTtcbiIsImluY2x1ZGUgQmFzZS5SZXN1bHQ7XG5cbm1vZHVsZSBTeW50YXggPSB7XG4gIGxldCAoIGxldCogKSA9IChyZXN1bHQsIGYpID0+IGJpbmQofmYsIHJlc3VsdCk7XG4gIGxldCAobGV0KykgPSAocmVzdWx0LCBmKSA9PiBtYXAofmYsIHJlc3VsdCk7XG59O1xuXG5tb2R1bGUgU2VyaWFsaXphdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50KCdhLCAnYikgPVxuICAgIHwgT2soJ2EpXG4gICAgfCBFcnJvcignYik7XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAocmVzdWx0OiB0KCdhLCAnYikpOiBwZXJzaXN0ZW50KCdhLCAnYikgPT5cbiAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgIHwgT2soYSkgPT4gT2soYSlcbiAgICB8IEVycm9yKGIpID0+IEVycm9yKGIpXG4gICAgfTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9IChyZXN1bHQ6IHBlcnNpc3RlbnQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PlxuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgfCBPayhhKSA9PiBPayhhKVxuICAgIHwgRXJyb3IoYikgPT4gRXJyb3IoYilcbiAgICB9O1xufTtcblxubGV0IHBwID0gKGEsIGIsIGMsIHgpID0+XG4gIHggfD4gU2VyaWFsaXphdGlvbi50b19wZXJzaXN0ZW50IHw+IFNlcmlhbGl6YXRpb24ucHBfcGVyc2lzdGVudChhLCBiLCBjKTtcblxubGV0IHRfb2ZfeW9qc29uID0gKGEsIGIsIHgpID0+XG4gIHggfD4gU2VyaWFsaXphdGlvbi5wZXJzaXN0ZW50X29mX3lvanNvbihhLCBiKSB8PiBTZXJpYWxpemF0aW9uLm9mX3BlcnNpc3RlbnQ7XG5cbmxldCB5b2pzb25fb2ZfdCA9IChhLCBiLCB4KSA9PlxuICB4IHw+IFNlcmlhbGl6YXRpb24udG9fcGVyc2lzdGVudCB8PiBTZXJpYWxpemF0aW9uLnlvanNvbl9vZl9wZXJzaXN0ZW50KGEsIGIpO1xuIiwibGV0IG1hcF9mc3QgPSAoZiwgKHgsIHkpKSA9PiAoZih4KSwgeSk7XG5sZXQgbWFwX3NuZCA9IChmLCAoeCwgeSkpID0+ICh4LCBmKHkpKTtcbiIsImxldCBnZXQgPSAoaWZfbm9uZSwgbykgPT5cbiAgc3dpdGNoIChvKSB7XG4gIHwgTm9uZSA9PiBpZl9ub25lKClcbiAgfCBTb21lKGEpID0+IGFcbiAgfTtcbmxldCBnZXRfb3JfZmFpbCA9IHMgPT4gZ2V0KCgpID0+IGZhaWx3aXRoKHMpKTtcbmxldCBnZXRfb3JfcmFpc2UgPSBlID0+IGdldCgoKSA9PiByYWlzZShlKSk7XG5cbmxldCBtYXAyID0gKGYsIG8xLCBvMikgPT5cbiAgc3dpdGNoIChvMSwgbzIpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gTm9uZVxuICB8IChTb21lKHYxKSwgU29tZSh2MikpID0+IFNvbWUoZih2MSwgdjIpKVxuICB9O1xuXG5sZXQgc29tZV9pZiA9IChjb25kLCBhKSA9PiBjb25kID8gU29tZShhKSA6IE5vbmU7XG5cbmxldCB6aXAgPSAobzEsIG8yKSA9PlxuICBzd2l0Y2ggKG8xLCBvMikge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PiBOb25lXG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+IFNvbWUoKGEsIGIpKVxuICB9O1xubGV0IHVuemlwID0gKG86IG9wdGlvbigoJ2EsICdiKSkpOiAob3B0aW9uKCdhKSwgb3B0aW9uKCdiKSkgPT5cbiAgc3dpdGNoIChvKSB7XG4gIHwgTm9uZSA9PiAoTm9uZSwgTm9uZSlcbiAgfCBTb21lKChhLCBiKSkgPT4gKFNvbWUoYSksIFNvbWUoYikpXG4gIH07XG5cbmxldCBzZXF1ZW5jZSA9IChsOiBsaXN0KG9wdGlvbignYSkpKTogb3B0aW9uKGxpc3QoJ2EpKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQobWFwMigoeCwgeHMpID0+IFt4LCAuLi54c10pLCBsLCBTb21lKFtdKSk7XG5cbmxldCBhbmRfdGhlbiA9IChmLCBvKSA9PiBPcHRpb24uYmluZChvLCBmKTtcblxubW9kdWxlIFN5bnRheCA9IHtcbiAgbGV0ICggbGV0KiApID0gT3B0aW9uLmJpbmQ7XG4gIGxldCAobGV0KykgPSAobywgZikgPT4gT3B0aW9uLm1hcChmLCBvKTtcbiAgbGV0IChhbmQrKSA9IHppcDtcbn07XG4iLCJtb2R1bGUgdHlwZSBPcmRlcmVkU2hvd1R5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkU2V4cFR5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCBzZXhwX29mX3Q6IHQgPT4gU2V4cGxpYi5TZXhwLnQ7XG4gIGxldCB0X29mX3NleHA6IFNleHBsaWIuU2V4cC50ID0+IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkWW9qc29uVHlwZSA9IHtcbiAgaW5jbHVkZSBNYXAuT3JkZXJlZFR5cGU7XG5cbiAgbGV0IHlvanNvbl9vZl90OiB0ID0+IFlvanNvbi5TYWZlLnQ7XG4gIGxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiB0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSB7XG4gIGluY2x1ZGUgT3JkZXJlZFNob3dUeXBlO1xuICBpbmNsdWRlIE9yZGVyZWRTZXhwVHlwZSB3aXRoIHR5cGUgdCA6PSB0O1xuICBpbmNsdWRlIE9yZGVyZWRZb2pzb25UeXBlIHdpdGggdHlwZSB0IDo9IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBTaG93UyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgcHA6ICgoRm9ybWF0LmZvcm1hdHRlciwgJ2EpID0+IHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHQoJ2EpKSA9PiB1bml0O1xufTtcblxubW9kdWxlIHR5cGUgU2V4cFMgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHNleHBfb2ZfdDogKCd2ID0+IFNleHBsaWIuU2V4cC50LCB0KCd2KSkgPT4gU2V4cGxpYi5TZXhwLnQ7XG4gIGxldCB0X29mX3NleHA6IChTZXhwbGliLlNleHAudCA9PiAndiwgU2V4cGxpYi5TZXhwLnQpID0+IHQoJ3YpO1xufTtcblxubW9kdWxlIHR5cGUgWW9qc29uUyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgeW9qc29uX29mX3Q6ICgndiA9PiBZb2pzb24uU2FmZS50LCB0KCd2KSkgPT4gWW9qc29uLlNhZmUudDtcbiAgbGV0IHRfb2ZfeW9qc29uOiAoWW9qc29uLlNhZmUudCA9PiAndiwgWW9qc29uLlNhZmUudCkgPT4gdCgndik7XG59O1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBpbmNsdWRlIFNob3dTO1xuICBpbmNsdWRlIFNleHBTIHdpdGggdHlwZSB0KCdhKSA6PSB0KCdhKSBhbmQgdHlwZSBrZXkgOj0ga2V5O1xuICBpbmNsdWRlIFlvanNvblMgd2l0aCB0eXBlIHQoJ2EpIDo9IHQoJ2EpIGFuZCB0eXBlIGtleSA6PSBrZXk7XG59O1xuXG5tb2R1bGUgTWFrZVNob3dGb3IgPSAoTzogT3JkZXJlZFNob3dUeXBlLCBTOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIGxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gICAgUy5pdGVyKFxuICAgICAgKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJWEgLT4gJWFAXFxuXCIsIE8ucHAsIGssIHBwX3YsIHYpLFxuICAgICAgbWFwLFxuICAgICk7XG59O1xuXG5tb2R1bGUgTWFrZVNob3cgPSAoTzogT3JkZXJlZFNob3dUeXBlKSA6IChTaG93UyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VTaG93Rm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2VTZXhwRm9yID0gKE86IE9yZGVyZWRTZXhwVHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBvcGVuIFNleHBsaWIuU3RkO1xuXG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChPLnQsICd2KTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBTLmJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwLCBzZXhwKSA9PlxuICAgIHNleHBcbiAgICB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBTLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBNYWtlU2V4cCA9IChPOiBPcmRlcmVkU2V4cFR5cGUpIDogKFNleHBTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVNleHBGb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZVlvanNvbkZvciA9IChPOiBPcmRlcmVkWW9qc29uVHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBbQGRlcml2aW5nIHlvanNvbl1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChPLnQsICd2KTtcblxuICBsZXQgeW9qc29uX29mX3QgPSAoeW9qc29uX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gUy5iaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPSAodl9vZl95b2pzb24sIHlvanNvbikgPT5cbiAgICB5b2pzb25cbiAgICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBTLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBNYWtlWW9qc29uID0gKE86IE9yZGVyZWRZb2pzb25UeXBlKSA6IChZb2pzb25TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVlvanNvbkZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlRm9yID0gKE86IE9yZGVyZWRUeXBlLCBNOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIGluY2x1ZGUgTWFrZVNob3dGb3IoTywgTSk7XG4gIGluY2x1ZGUgTWFrZVNleHBGb3IoTywgTSk7XG4gIGluY2x1ZGUgTWFrZVlvanNvbkZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE86IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZUZvcihPLCBNKTtcbn07XG4iLCJsZXQgcmV2X2lmID0gKGI6IGJvb2wpID0+IGIgPyBMaXN0LnJldiA6IEZ1bi5pZDtcblxubGV0IGRlZHVwID0geHMgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICh4LCBkZWR1cGVkKSA9PiBMaXN0Lm1lbSh4LCBkZWR1cGVkKSA/IGRlZHVwZWQgOiBbeCwgLi4uZGVkdXBlZF0sXG4gICAgeHMsXG4gICAgW10sXG4gICk7XG5cbmxldCBkZWR1cF9mID0gKGYsIHhzKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKHgsIGRlZHVwZWQpID0+IExpc3QuZXhpc3RzKGYoeCksIGRlZHVwZWQpID8gZGVkdXBlZCA6IFt4LCAuLi5kZWR1cGVkXSxcbiAgICB4cyxcbiAgICBbXSxcbiAgKTtcblxubGV0IGFyZV9kdXBsaWNhdGVzID0geHMgPT5cbiAgTGlzdC5sZW5ndGgoTGlzdC5zb3J0X3VuaXEoY29tcGFyZSwgeHMpKSA9PSBMaXN0Lmxlbmd0aCh4cyk7XG5cbmxldCBncm91cF9ieSA9IChrZXk6ICd4ID0+ICdrLCB4czogbGlzdCgneCkpOiBsaXN0KCgnaywgbGlzdCgneCkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoZ3JvdXBlZCwgeCkgPT4ge1xuICAgICAgbGV0IGsgPSBrZXkoeCk7XG4gICAgICBsZXQga19ncm91cCA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaywgZ3JvdXBlZCkpIHtcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIHwgU29tZSh4cykgPT4geHNcbiAgICAgICAgfTtcbiAgICAgIFsoaywgW3gsIC4uLmtfZ3JvdXBdKSwgLi4uTGlzdC5yZW1vdmVfYXNzb2MoaywgZ3JvdXBlZCldO1xuICAgIH0sXG4gICAgW10sXG4gICAgeHMsXG4gICk7XG5cbmxldCByZWMgcmFuZ2UgPSAofmxvPTAsIGhpKSA9PlxuICBpZiAobG8gPiBoaSkge1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5yYW5nZVwiKSk7XG4gIH0gZWxzZSBpZiAobG8gPT0gaGkpIHtcbiAgICBbXTtcbiAgfSBlbHNlIHtcbiAgICBbbG8sIC4uLnJhbmdlKH5sbz1sbyArIDEsIGhpKV07XG4gIH07XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG50eXBlIGZyYW1lKCd4KSA9IChsaXN0KCd4KSwgbGlzdCgneCkpO1xuXG5sZXQgcmVjIG1rX2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogZnJhbWUoJ3gpID0+IHtcbiAgbGV0IGludmFsaWRfYXJnID0gKCkgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1rX2ZyYW1lXCIpKTtcbiAgaWYgKG4gPCAwKSB7XG4gICAgaW52YWxpZF9hcmcoKTtcbiAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAoW10sIHhzKTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBpbnZhbGlkX2FyZygpXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBsZXQgKHByZWZpeCwgc3VmZml4KSA9IG1rX2ZyYW1lKG4gLSAxLCB4cyk7XG4gICAgICAocHJlZml4IEAgW3hdLCBzdWZmaXgpO1xuICAgIH07XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0ID1cbiAgICAgICAgKGw6IGxpc3QoJ3gpLCBjb25kOiAneCA9PiBib29sKTogKGxpc3QoJ3gpLCBvcHRpb24oJ3gpLCBsaXN0KCd4KSkgPT4ge1xuICBzd2l0Y2ggKGwpIHtcbiAgfCBbXSA9PiAoW10sIE5vbmUsIFtdKVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBpZiAoY29uZCh4KSkge1xuICAgICAgKFtdLCBTb21lKHgpLCB4cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCAocHJlLCB4JywgcG9zdCkgPSBzcGxpdCh4cywgY29uZCk7XG4gICAgICAoW3gsIC4uLnByZV0sIHgnLCBwb3N0KTtcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0X2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCBmcmFtZSgneCkpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwibGlzdCBpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFt4LCAuLi54c10pID0+ICh4LCAoW10sIHhzKSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQgKHN1YmosIChwcmVmaXgsIHN1ZmZpeCkpID0gc3BsaXRfZnJhbWUobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBvZl9mcmFtZSA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IGZyYW1lKCd4KSkgPT5cbiAgTGlzdC5jb25jYXQoW0xpc3QucmV2KHByZWZpeCksIHN1YmplY3QsIHN1ZmZpeF0pO1xuXG5sZXQgY29tYmluZV9vcHQgPSAoeHMsIHlzKSA9PlxuICBzd2l0Y2ggKExpc3QuY29tYmluZSh4cywgeXMpKSB7XG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIHwgeHlzID0+IFNvbWUoeHlzKVxuICB9O1xuXG5sZXQgaXNfZW1wdHkgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGZsYXRfbWFwID0gKGYsIGwpID0+IExpc3QuZmxhdHRlbihMaXN0Lm1hcChmLCBsKSk7XG5cbmxldCByZWMgam9pbiA9IChzZXA6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW3hdXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgc2VwLCAuLi5qb2luKHNlcCwgeHMpXVxuICB9O1xuXG5sZXQgaGRfb3B0ID1cbiAgZnVuXG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4uX10gPT4gU29tZShoZCk7XG5cbmxldCByZWMgbnRoX29wdCA9IChuLCB4cykgPT5cbiAgbiA8IDBcbiAgICA/IE5vbmVcbiAgICA6IChcbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgfCBbaGQsIC4uLnRsXSA9PiBuID09IDAgPyBTb21lKGhkKSA6IG50aF9vcHQobiAtIDEsIHRsKVxuICAgICAgfVxuICAgICk7XG5cbi8qKlxuICogYHNwbGl0X25fb3B0KG4sIHhzKWAgc3BsaXRzIHRoZSBmaXJzdCBgbmAgZWxlbWVudHMgZnJvbSBgeHNgXG4gKiBpZiBgeHNgIGhhcyBgbmAgb3IgbW9yZSBlbGVtZW50c1xuICovXG5sZXQgc3BsaXRfbl9vcHQgPSAobjogaW50LCB4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSkgPT5cbiAgICBpZiAobiA8IDApIHtcbiAgICAgIE5vbmU7XG4gICAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAgIFNvbWUoKFtdLCB4cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IE5vbmVcbiAgICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgICBnbyhuIC0gMSwgeHMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoKChwcmVmaXgsIHN1ZmZpeCkpID0+IChbeCwgLi4ucHJlZml4XSwgc3VmZml4KSlcbiAgICAgIH07XG4gICAgfTtcbiAgZ28obiwgeHMpO1xufTtcblxuLy8gVE9ETyB1bmlmeSB3aXRoIExpc3RGcmFtZVxubGV0IHNwbGl0X24gPSAobjogaW50LCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHNwbGl0X25fb3B0KG4sIHhzKSkge1xuICB8IE5vbmUgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfbjogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBzdWJsaXN0IGZyb20gaW5kZXggaSAoaW5jbHVzaXZlKVxuICogdG8gaW5kZXggaiAoZXhjbHVzaXZlKSwgY291cGxlZCB3aXRoIHRoZVxuICogc3Vycm91bmRpbmcgcHJlZml4L3N1ZmZpeCBzdWJsaXN0cy5cbiAqIFJldHVybnMgTm9uZSBpZiBpID4gai5cbiAqL1xubGV0IHNwbGl0X3N1Ymxpc3Rfb3B0ID1cbiAgICAoaTogaW50LCBqOiBpbnQsIHhzOiBsaXN0KCd4KSlcbiAgICA6IG9wdGlvbigobGlzdCgneCksIGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgc3dpdGNoIChzcGxpdF9uX29wdChqLCB4cykpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKChsZWZ0LCByaWdodCkpID0+XG4gICAgc3dpdGNoIChzcGxpdF9uX29wdChpLCBsZWZ0KSkge1xuICAgIHwgTm9uZSA9PiBOb25lXG4gICAgfCBTb21lKChsZWZ0LCBtaWQpKSA9PiBTb21lKChsZWZ0LCBtaWQsIHJpZ2h0KSlcbiAgICB9XG4gIH07XG59O1xubGV0IHNwbGl0X3N1Ymxpc3QgPVxuICAgIChpOiBpbnQsIGo6IGludCwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIHN3aXRjaCAoc3BsaXRfc3VibGlzdF9vcHQoaSwgaiwgeHMpKSB7XG4gIHwgTm9uZSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfc3VibGlzdFwiKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcbmxldCBzdWJsaXN0ID0gKChpLCBqKSwgeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT4ge1xuICBsZXQgKF8sIHN1Ymxpc3QsIF8pID0gc3BsaXRfc3VibGlzdChpLCBqLCB4cyk7XG4gIHN1Ymxpc3Q7XG59O1xuXG5sZXQgcmVjIHNwbGl0X250aF9vcHQgPSAobiwgeHMpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCBfIHdoZW4gbiA8IDAgPT4gTm9uZVxuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8ICgwLCBbeCwgLi4uc3VmZml4XSkgPT4gU29tZSgoW10sIHgsIHN1ZmZpeCkpXG4gIHwgKF8sIFt4LCAuLi54c10pID0+XG4gICAgc3BsaXRfbnRoX29wdChuIC0gMSwgeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHByZWZpeCwgc3ViamVjdCwgc3VmZml4KSkgPT5cbiAgICAgICAgIChbeCwgLi4ucHJlZml4XSwgc3ViamVjdCwgc3VmZml4KVxuICAgICAgIClcbiAgfTtcbmxldCBzcGxpdF9udGggPSAobiwgeHMpID0+XG4gIHN3aXRjaCAoc3BsaXRfbnRoX29wdChuLCB4cykpIHtcbiAgfCBOb25lID0+XG4gICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X250aDogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbmxldCByZWMgcHV0X250aCA9IChuOiBpbnQsIHg6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW18sIC4uLnRsXSkgPT4gW3gsIC4uLnRsXVxuICB8IChfLCBbaGQsIC4uLnRsXSkgPT5cbiAgICBsZXQgdGwgPSBwdXRfbnRoKG4gLSAxLCB4LCB0bCk7XG4gICAgW2hkLCAuLi50bF07XG4gIH07XG5cbmxldCByZWMgbWFwX250aCA9IChuOiBpbnQsIGY6ICdhID0+ICdhLCB4czogbGlzdCgnYSkpOiBsaXN0KCdhKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW2hkLCAuLi50bF0pID0+IFtmKGhkKSwgLi4udGxdXG4gIHwgKF8sIFtoZCwgLi4udGxdKSA9PiBbaGQsIC4uLm1hcF9udGgobiAtIDEsIGYsIHRsKV1cbiAgfTtcblxubGV0IHJlYyBzcGxpdF9sYXN0X29wdCA9ICh4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3hdID0+IFNvbWUoKFtdLCB4KSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3BsaXRfbGFzdF9vcHQoeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKGxlYWRpbmcsIGxhc3QpKSA9PiAoW3gsIC4uLmxlYWRpbmddLCBsYXN0KSlcbiAgfTtcbi8vIGxldCBsYXN0X29wdCA9IHhzID0+IHhzIHw+IHNwbGl0X2xhc3Rfb3B0IHw+IE9wdGlvbi5tYXAoc25kKTtcblxubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCAneCkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xubGV0IGxlYWRpbmcgPSB4cyA9PiBmc3Qoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3QgPSB4cyA9PiBzbmQoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3Rfb3B0ID0geHMgPT4ge1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgoeHMpO1xuICBpZiAobGVuZ3RoID09IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2Uge1xuICAgIFNvbWUoTGlzdC5udGgoeHMsIGxlbmd0aCAtIDEpKTtcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9maXJzdF9vcHQgPSAoeHM6IGxpc3QoJ3gpKTogb3B0aW9uKCgneCwgbGlzdCgneCkpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmaXJzdCwgLi4udHJhaWxpbmddID0+IFNvbWUoKGZpcnN0LCB0cmFpbGluZykpXG4gIH07XG5sZXQgc3BsaXRfZmlyc3QgPSB4cyA9PlxuICBzcGxpdF9maXJzdF9vcHQoeHMpXG4gIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9maXJzdFwiKSk7XG5cbmxldCByZWMgZm9sZF9sZWZ0X21hcCA9XG4gICAgICAgIChmOiAoJ2FjYywgJ3gpID0+ICgnYWNjLCAneSksIHN0YXJ0OiAnYWNjLCB4czogbGlzdCgneCkpXG4gICAgICAgIDogKCdhY2MsIGxpc3QoJ3kpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKHN0YXJ0LCBbXSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChuZXdfYWNjLCB5KSA9IGYoc3RhcnQsIHgpO1xuICAgIGxldCAoZmluYWwsIHlzKSA9IGZvbGRfbGVmdF9tYXAoZiwgbmV3X2FjYywgeHMpO1xuICAgIChmaW5hbCwgW3ksIC4uLnlzXSk7XG4gIH07XG5cbmxldCByZWMgdGFrZV93aGlsZSA9IChwOiAneCA9PiBib29sLCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKFtdLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIGlmIChwKGhkKSkge1xuICAgICAgbGV0ICh0YWtlbiwgcmVzdCkgPSB0YWtlX3doaWxlKHAsIHRsKTtcbiAgICAgIChbaGQsIC4uLnRha2VuXSwgcmVzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIChbXSwgeHMpO1xuICAgIH1cbiAgfTtcblxubGV0IHByb2R1Y3QgPSAoeHMsIHlzKSA9PlxuICB4cyB8PiBMaXN0Lm1hcCh4ID0+IHlzIHw+IExpc3QubWFwKHkgPT4gKHgsIHkpKSkgfD4gTGlzdC5mbGF0dGVuO1xuXG5sZXQgcmVjIG9yZGVyZWRfcGFpcnMgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ3gsICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT4gTGlzdC5tYXAoeCA9PiAoaGQsIHgpLCB0bCkgQCBvcmRlcmVkX3BhaXJzKHRsKVxuICB9O1xuXG5sZXQgcmVjIG5laWdoYm9ycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5uZWlnaGJvcnMoW3gyLCAuLi54c10pXVxuICB9O1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKGxldCspID0gKHhzLCBmKSA9PiBMaXN0Lm1hcChmLCB4cyk7XG4gIGxldCAoYW5kKykgPSBwcm9kdWN0O1xuICBsZXQgKCBsZXQqICkgPSAoeHMsIGYpID0+IExpc3QuY29uY2F0X21hcChmLCB4cyk7XG59O1xuXG5sZXQgbWFwX2FsdDogKCdhID0+ICdjLCAnYiA9PiAnYywgbGlzdCgnYSksIGxpc3QoJ2IpKSA9PiBsaXN0KCdjKSA9XG4gIChmeCwgZnksIHhzLCB5cykgPT4ge1xuICAgIGlmIChMaXN0Lmxlbmd0aCh4cykgIT0gTGlzdC5sZW5ndGgoeXMpICsgMSkge1xuICAgICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1hcF9hbHRcIikpO1xuICAgIH07XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgeCwgeSkgPT4gYWNjIEAgW2Z5KHkpLCBmeCh4KV0sXG4gICAgICBbZngoTGlzdC5oZCh4cykpXSxcbiAgICAgIExpc3QudGwoeHMpLFxuICAgICAgeXMsXG4gICAgKTtcbiAgfTtcblxubGV0IGludGVybGVhdmUgPSAoeHMsIHlzKSA9PiBtYXBfYWx0KHggPT4geCwgeSA9PiB5LCB4cywgeXMpO1xuXG5sZXQgcF9pbmRpY2VzID0gKHA6ICdhID0+IGJvb2wsIHhzOiBsaXN0KCdhKSk6IGxpc3QoaW50KSA9PiB7XG4gIGxldCAoXywgaWR4cykgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChuLCBpZHhzKSwgeCkgPT4gKG4gKyAxLCBpZHhzIEAgKHAoeCkgPyBbbl0gOiBbXSkpLFxuICAgICAgKDAsIFtdKSxcbiAgICAgIHhzLFxuICAgICk7XG4gIGlkeHM7XG59O1xuXG5sZXQgc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4cykpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChzcGxpdDogKCd4cywgJ3hzKSk6IGxpc3QoKCd4cywgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygobCBAIFtoZF0sIHRsKSldXG4gICAgfTtcbiAgZ28oKFtdLCB4cykpO1xufTtcblxubGV0IGVsZW1fc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4LCAneHMpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoc3BsaXQ6ICgneHMsICd4LCAneHMpKTogbGlzdCgoJ3hzLCAneCwgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCB4LCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygoW3gsIC4uLmxdLCBoZCwgdGwpKV1cbiAgICB9O1xuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeCwgLi4ueHNdID0+IGdvKChbXSwgeCwgeHMpKVxuICB9O1xufTtcblxubGV0IHJvdGF0ZSA9ICh4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PiB0bCBAIFtoZF1cbiAgfTtcblxubGV0IHNpbmdsZV9lbGVtID0gKHhzOiBsaXN0KCd4KSk6IG9wdGlvbigneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLnRsXSA9PiBMaXN0LmZvcl9hbGwoKD09KShoZCksIHRsKSA/IFNvbWUoaGQpIDogTm9uZVxuICB9O1xuXG5sZXQgY291bnRfcHJlZCA9IChmOiAnYSA9PiBib29sLCB4czogbGlzdCgnYSkpOiBpbnQgPT5cbiAgTGlzdC5mb2xkX2xlZnQoKG4sIHgpID0+IGYoeCkgPyBuICsgMSA6IG4sIDAsIHhzKTtcblxubGV0IGZvcl9hbGwyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+IGJvb2wsIHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2IpKTogb3B0aW9uKGJvb2wpID0+XG4gIHN3aXRjaCAoTGlzdC5mb3JfYWxsMihmLCB4cywgeXMpKSB7XG4gIHwgYiA9PiBTb21lKGIpXG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIH07XG5cbmxldCBtYXAyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+ICdjLCB4czogbGlzdCgnYSksIHlzOiBsaXN0KCdiKSk6IG9wdGlvbihsaXN0KCdjKSkgPT5cbiAgc3dpdGNoIChMaXN0Lm1hcDIoZiwgeHMsIHlzKSkge1xuICB8IGIgPT4gU29tZShiKVxuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gTm9uZVxuICB9O1xuXG4vKiByZXBlYXQgYW4gZWxlbWVudCBuIHRpbWVzICovXG5sZXQgcmVwbGljYXRlID0gKG46IGludCwgZTogJ2EpOiBsaXN0KCdhKSA9PiB7XG4gIC8qIGFkZCBjIGFkZGl0aW9uYWwgY29waWVzIG9mIGUgdG8geHMgKi9cbiAgbGV0IHJlYyBmID0gKGMsIHhzKSA9PlxuICAgIGlmIChjID4gMCkge1xuICAgICAgZihjIC0gMSwgW2UsIC4uLnhzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHhzO1xuICAgIH07XG4gIGYobiwgW10pO1xufTtcblxuLyoqXG4gKiBaaXBzIHRvZ2V0aGVyIHR3byBsaXN0cywgcmV0dXJuaW5nIE5vbmUgaWYgZGlmZmVyZW50IGxlbmd0aHNcbiAqL1xubGV0IHJlYyBvcHRfemlwID0gKHhzOiBsaXN0KCd4KSwgeXM6IGxpc3QoJ3kpKTogb3B0aW9uKGxpc3QoKCd4LCAneSkpKSA9PlxuICBzd2l0Y2ggKHhzLCB5cykge1xuICB8IChbXSwgW18sIC4uLl9dKVxuICB8IChbXywgLi4uX10sIFtdKSA9PiBOb25lXG4gIHwgKFtdLCBbXSkgPT4gU29tZShbXSlcbiAgfCAoW3gsIC4uLnhzXSwgW3ksIC4uLnlzXSkgPT5cbiAgICBvcHRfemlwKHhzLCB5cykgfD4gT3B0aW9uLm1hcCh4eXMgPT4gWyh4LCB5KSwgLi4ueHlzXSlcbiAgfTtcblxubGV0IHJlYyB6aXBfZGVmYXVsdHMgPVxuICAgICAgICAoeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYiksIGRlZmF1bHRfeDogJ2EsIGRlZmF1bHRfeTogJ2IpXG4gICAgICAgIDogbGlzdCgoJ2EsICdiKSkgPT5cbiAgc3dpdGNoICh4cywgeXMpIHtcbiAgfCAoW10sIFtdKSA9PiBbXVxuICB8IChbeCwgLi4ueHNdLCBbeSwgLi4ueXNdKSA9PiBbXG4gICAgICAoeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbXSwgW3ksIC4uLnlzXSkgPT4gW1xuICAgICAgKGRlZmF1bHRfeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbeCwgLi4ueHNdLCBbXSkgPT4gW1xuICAgICAgKHgsIGRlZmF1bHRfeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB9O1xuXG5sZXQgcmVjIHVwZGF0ZV9udGggPSAobiwgeHMsIGYpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IFtdXG4gIHwgKDAsIFt4LCAuLi54c10pID0+IFtmKHgpLCAuLi54c11cbiAgfCAobiwgW3gsIC4uLnhzXSkgPT4gW3gsIC4uLnVwZGF0ZV9udGgobiAtIDEsIHhzLCBmKV1cbiAgfTtcblxubGV0IHJlYyBkaXNqb2ludF9wYWlycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5kaXNqb2ludF9wYWlycyh4cyldXG4gIH07XG5cbmxldCBmaW5kaV9vcHQ6ICgneCA9PiBib29sLCBsaXN0KCd4KSkgPT4gb3B0aW9uKChpbnQsICd4KSkgPVxuICAoZiwgeHMpID0+IHtcbiAgICBMaXN0Lm1hcGkoKGksIHgpID0+IChpLCB4KSwgeHMpXG4gICAgfD4gTGlzdC5maW5kX21hcCgoKF8sIHgpIGFzIHBhaXIpID0+XG4gICAgICAgICBpZiAoZih4KSkge1xuICAgICAgICAgICBTb21lKHBhaXIpO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgTm9uZTtcbiAgICAgICAgIH1cbiAgICAgICApO1xuICB9O1xuXG5sZXQgaW5pdF9mb2xkOiAoaW50LCAnYiwgKGludCwgJ2IpID0+ICgnYiwgJ2EpKSA9PiAoJ2IsIGxpc3QoJ2EpKSA9XG4gIChuLCBiLCBmKSA9PiB7XG4gICAgbGV0IHJhbmdlID0gTGlzdC5pbml0KG4sIG4gPT4gbik7XG4gICAgbGV0IChhY2MsIHJldl94cykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoYWNjLCB4cyksIG4pID0+IHtcbiAgICAgICAgICBsZXQgKGFjYycsIGVsdCkgPSBmKG4sIGFjYyk7XG4gICAgICAgICAgKGFjYycsIFtlbHQsIC4uLnhzXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChiLCBbXSksXG4gICAgICAgIHJhbmdlLFxuICAgICAgKTtcbiAgICAoYWNjLCBMaXN0LnJldihyZXZfeHMpKTtcbiAgfTtcblxubGV0IGFzc29jX2VyciA9ICh4LCB4cywgZXJyOiBzdHJpbmcpID0+XG4gIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoeCwgeHMpKSB7XG4gIHwgTm9uZSA9PiBmYWlsd2l0aChlcnIpXG4gIHwgU29tZSh5KSA9PiB5XG4gIH07XG5cbmxldCB1cGRhdGVfYXNzb2MgPSAoKGssIHYpKSA9PlxuICBMaXN0Lm1hcCgoKGsnLCB2JykpID0+IGsgPT0gaycgPyAoaywgdikgOiAoaycsIHYnKSk7XG5cbi8qIEdpdmUgYSBsaXN0IG9mIG9wdGlvbmFsICdhLCBzcGxpdCB0aGVcbiAqIGxpc3QgdXAgdXNpbmcgdGhlIE5vbmVzIGFzIGRpdmlkZXJzICovXG5sZXQgc3BsaXRfYXRfbm9uZXMgPSAoeHM6IGxpc3Qob3B0aW9uKCdhKSkpOiBsaXN0KGxpc3QoJ2EpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoeHMsIGFjYykgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBhY2NcbiAgICB8IFtOb25lLCAuLi54c10gPT4gZ28oeHMsIFtbXSwgLi4uYWNjXSlcbiAgICB8IFtTb21lKHgpLCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoYWNjKSB7XG4gICAgICB8IFthY2MsIC4uLmFjY3NdID0+IGdvKHhzLCBbW3gsIC4uLmFjY10sIC4uLmFjY3NdKVxuICAgICAgfCBbXSA9PiBnbyh4cywgW1t4XV0pXG4gICAgICB9XG4gICAgfTtcbiAgZ28oeHMsIFtdKSB8PiBMaXN0Lm1hcChMaXN0LnJldikgfD4gTGlzdC5yZXY7XG59O1xuXG4vKiBHaXZlIGEgbGlzdCBvZiBsaXN0cywgcmV0dXJuIGEgbGlzdCBvZiBwYWlycyBvZlxuICogdGhlIGZpcnN0IGFuZCBsYXN0IGVsZW1lbnQgb2YgZWFjaCBsaXN0LiAqL1xubGV0IGZpcnN0X2FuZF9sYXN0ID0gKHhzczogbGlzdChsaXN0KCdhKSkpOiBsaXN0KCgnYSwgJ2EpKSA9PlxuICB4c3NcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgIHwgW3hdID0+IFNvbWUoKHgsIHgpKVxuICAgICAgIHwgW3gsIC4uLnhzXSA9PiBTb21lKCh4LCBsYXN0KHhzKSkpLFxuICAgICApO1xuXG5sZXQgcmVjIHJldl9jb25jYXQ6IChsaXN0KCdhKSwgbGlzdCgnYSkpID0+IGxpc3QoJ2EpID1cbiAgKGxzLCBycykgPT4ge1xuICAgIHN3aXRjaCAobHMpIHtcbiAgICB8IFtdID0+IHJzXG4gICAgfCBbaGQsIC4uLnRsXSA9PiByZXZfY29uY2F0KHRsLCBbaGQsIC4uLnJzXSlcbiAgICB9O1xuICB9O1xuXG5sZXQgcmVjIG1hcDMgPSAoZiwgeHMsIHlzLCB6cykgPT5cbiAgc3dpdGNoICh4cywgeXMsIHpzKSB7XG4gIHwgKFtdLCBbXSwgW10pID0+IFtdXG4gIHwgKFt4LCAuLi54c10sIFt5LCAuLi55c10sIFt6LCAuLi56c10pID0+IFtcbiAgICAgIGYoeCwgeSwgeiksXG4gICAgICAuLi5tYXAzKGYsIHhzLCB5cywgenMpLFxuICAgIF1cbiAgfCBfID0+IGZhaWx3aXRoKFwiTGlzdHMgYXJlIG9mIHVuZXF1YWwgbGVuZ3RoXCIpXG4gIH07XG5cbmxldCByZWMgdW56aXAgPSAobHN0OiBsaXN0KCgnYSwgJ2IpKSk6IChsaXN0KCdhKSwgbGlzdCgnYikpID0+IHtcbiAgc3dpdGNoIChsc3QpIHtcbiAgfCBbXSA9PiAoW10sIFtdKVxuICB8IFsoYSwgYiksIC4uLnRhaWxdID0+XG4gICAgbGV0IChfYXMsIGJzKSA9IHVuemlwKHRhaWwpO1xuICAgIChbYSwgLi4uX2FzXSwgW2IsIC4uLmJzXSk7XG4gIH07XG59O1xuXG5sZXQgY3Jvc3MgPSAoeHMsIHlzKSA9PlxuICBMaXN0LmNvbmNhdChMaXN0Lm1hcCh4ID0+IExpc3QubWFwKHkgPT4gKHgsIHkpLCB5cyksIHhzKSk7XG5cbmxldCByZWMgaW50ZXJzcGVyc2UgPSAoc2VwLCB4cykgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW3hdID0+IFt4XVxuICB8IFt4LCAuLi54c10gPT4gW3gsIHNlcCwgLi4uaW50ZXJzcGVyc2Uoc2VwLCB4cyldXG4gIH07XG5cbmxldCByZWMgZmxhdF9pbnRlcnNwZXJzZSA9IChzZXAsIHhzcykgPT5cbiAgc3dpdGNoICh4c3MpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFt4c10gPT4geHNcbiAgfCBbeHMsIC4uLnhzc10gPT4geHMgQCBbc2VwLCAuLi5mbGF0X2ludGVyc3BlcnNlKHNlcCwgeHNzKV1cbiAgfTtcblxubGV0IHJlYyBtYXBfbGFzdF9vbmx5ID0gKGYsIHhzKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW2YoeCldXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgLi4ubWFwX2xhc3Rfb25seShmLCB4cyldXG4gIH07XG5cbmxldCByZWMgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgneCkpOiAobGlzdCgneCksICd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpXG4gIHwgW3hdID0+IChbXSwgeClcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChwcmVmaXgsIGxhc3QpID0gc3BsaXRfbGFzdCh4cyk7XG4gICAgKFt4LCAuLi5wcmVmaXhdLCBsYXN0KTtcbiAgfTtcblxubGV0IG1pbmltdW0gPSAoZjogJ2EgPT4gaW50LCB4czogbGlzdCgnYSkpOiBvcHRpb24oJ2EpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIGxldCByZWMgbG9vcCA9IChiZXN0OiAnYSwgYmVzdF9mOiBpbnQsIHhzOiBsaXN0KCdhKSk6IG9wdGlvbignYSkgPT5cbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gU29tZShiZXN0KVxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIGxldCBmX3ggPSBmKHgpO1xuICAgICAgICBpZiAoZl94IDwgYmVzdF9mKSB7XG4gICAgICAgICAgbG9vcCh4LCBmX3gsIHhzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb29wKGJlc3QsIGJlc3RfZiwgeHMpO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICBsb29wKHgsIGYoeCksIHhzKTtcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTGVmdFxuICB8IFJpZ2h0O1xuXG5sZXQgdG9nZ2xlID1cbiAgZnVuXG4gIHwgTGVmdCA9PiBSaWdodFxuICB8IFJpZ2h0ID0+IExlZnQ7XG5cbmxldCBzaWduID1cbiAgZnVuXG4gIHwgTGVmdCA9PiAoLTEpXG4gIHwgUmlnaHQgPT4gMTtcblxubGV0IGNob29zZSA9IChkLCAobCwgcikpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbFxuICB8IFJpZ2h0ID0+IHJcbiAgfTtcbiIsIm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG4vLyBOT1RFOiBERVBSRUNBVEVEXG50eXBlIHQoJ3gpID0gKGxpc3QoJ3gpLCBsaXN0KCd4KSk7XG5cbmxldCByZWMgbWtfb3B0ID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogb3B0aW9uKHQoJ3gpKSA9PlxuICBpZiAobiA8IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2UgaWYgKG4gPT0gMCkge1xuICAgIFNvbWUoKFtdLCB4cykpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoeHMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIGxldCsgKHByZWZpeCwgc3VmZml4KSA9IG1rX29wdChuIC0gMSwgeHMpO1xuICAgICAgKHByZWZpeCBAIFt4XSwgc3VmZml4KTtcbiAgICB9O1xuICB9O1xubGV0IG1rID0gKG4sIHhzKSA9PlxuICBta19vcHQobiwgeHMpXG4gIHw+IE9wdFV0aWwuZ2V0KCgpID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0RnJhbWUubWtcIikpKTtcblxubGV0IHJlYyBmaW5kX21rID1cbiAgICAgICAgKHA6ICd4ID0+IG9wdGlvbigneSksIHhzOiBsaXN0KCd4KSk6IG9wdGlvbigoJ3ksIHQoJ3gpKSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3dpdGNoIChwKHgpKSB7XG4gICAgfCBTb21lKHkpID0+IFNvbWUoKHksIChbXSwgeHMpKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCsgKHksIChwcmVmaXgsIHN1ZmZpeCkpID0gZmluZF9tayhwLCB4cyk7XG4gICAgICAoeSwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gICAgfVxuICB9O1xuXG5sZXQgb3JpZW50ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSkgPT5cbiAgZCA9PSBMZWZ0ID8gKHByZWZpeCwgc3VmZml4KSA6IChzdWZmaXgsIHByZWZpeCk7XG5sZXQgdW5vcmllbnQgPSBvcmllbnQ7XG5cbmxldCByZWMgc3BsaXRfbnRoID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCB0KCd4KSkgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gZmFpbHdpdGgoXCJsaXN0IGluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW3gsIC4uLnhzXSkgPT4gKHgsIChbXSwgeHMpKVxuICB8IChfLCBbeCwgLi4ueHNdKSA9PlxuICAgIGxldCAoc3ViaiwgKHByZWZpeCwgc3VmZml4KSkgPSBzcGxpdF9udGgobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBzcGxpdF9zdWJsaXN0ID0gKChpOiBpbnQsIGo6IGludCksIHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgdCgneCkpID0+IHtcbiAgbGV0IChwcmVmaXgsIHN1ZmZpeCkgPSBtayhqLCB4cyk7XG4gIGxldCAocHJlZml4LCBzdWJsaXN0KSA9IG1rKGksIExpc3QucmV2KHByZWZpeCkpO1xuICAoc3VibGlzdCwgKHByZWZpeCwgc3VmZml4KSk7XG59O1xuXG5sZXQgdG9fbGlzdCA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpKSA9PlxuICBMaXN0LmNvbmNhdChbTGlzdC5yZXYocHJlZml4KSwgc3ViamVjdCwgc3VmZml4XSk7XG5cbmxldCBhcHBlbmQgPSAoKHByZWZpeCwgc3VmZml4KTogdCgneCksIChwcmVmaXgnLCBzdWZmaXgnKTogdCgneCkpID0+IChcbiAgcHJlZml4IEAgcHJlZml4JyxcbiAgc3VmZml4IEAgc3VmZml4Jyxcbik7XG4iLCJsZXQgbnVtX2RpZ2l0cyA9IG4gPT4gU3RyaW5nLmxlbmd0aChzdHJpbmdfb2ZfaW50KG4pKTtcblxubGV0IG1vZHVsbyA9ICh4LCB5KSA9PiB7XG4gIGxldCByZXN1bHQgPSB4IG1vZCB5O1xuICByZXN1bHQgPj0gMCA/IHJlc3VsdCA6IHJlc3VsdCArIHk7XG59O1xuXG5sZXQgaXBvdyA9IChiYXNlOiBpbnQsIGV4cG9uZW50OiBpbnQpOiBpbnQgPT4ge1xuICBsZXQgcmVjIGlwb3dfaXRlciA9IChiOiBpbnQsIGU6IGludCwgcjogaW50KTogaW50ID0+XG4gICAgaWYgKGUgPT09IDApIHtcbiAgICAgIHI7XG4gICAgfSBlbHNlIGlmIChlIGxhbmQgMSAhPT0gMCkge1xuICAgICAgaXBvd19pdGVyKGIgKiBiLCBlIGxzciAxLCByICogYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlwb3dfaXRlcihiICogYiwgZSBsc3IgMSwgcik7XG4gICAgfTtcbiAgaXBvd19pdGVyKGJhc2UsIGV4cG9uZW50LCAxKTtcbn07XG4iLCJpbmNsdWRlIFB0bWFwO1xub3BlbiBTZXhwbGliLlN0ZDtcbm1vZHVsZSBTZXhwID0gU2V4cGxpYi5TZXhwO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBiaW5kaW5nKCd2KSA9IChpbnQsICd2KTtcblxubGV0IHNpbmdsZXRvbiA9IChrLCB2KSA9PiBQdG1hcC5hZGQoaywgdiwgUHRtYXAuZW1wdHkpO1xuXG5sZXQgZGlzal91bmlvbiA9IChtOiB0KCdhKSwgbSc6IHQoJ2EpKTogdCgnYSkgPT5cbiAgdW5pb24oXG4gICAgKF8sIF8sIF8pID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkludE1hcC5kaXNqX3VuaW9uIGV4cGVjdHMgaW5wdXQgbWFwcyB0byBoYXZlIGRpc2pvaW50IGtleSBzZXRzXCIsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIG0sXG4gICAgbScsXG4gICk7XG5cbmxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gIGl0ZXIoKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJWQgLT4gJWFAXFxuXCIsIGssIHBwX3YsIHYpLCBtYXApO1xuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gIG1hcCB8PiBiaW5kaW5ncyB8PiBzZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xubGV0IHRfb2Zfc2V4cCA9ICh2X29mX3NleHA6IFNleHAudCA9PiAndiwgc2V4cDogU2V4cC50KTogdCgndikgPT5cbiAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxubGV0IHlvanNvbl9vZl90ID1cbiAgICAoeW9qc29uX29mX3Y6ICd2ID0+IFlvanNvbi5TYWZlLnQsIG1hcDogdCgndikpOiBZb2pzb24uU2FmZS50ID0+XG4gIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xubGV0IHRfb2ZfeW9qc29uID1cbiAgICAodl9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gJ3YsIHlvanNvbjogWW9qc29uLlNhZmUudCk6IHQoJ3YpID0+XG4gIHlvanNvblxuICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gIHw+IExpc3QudG9fc2VxXG4gIHw+IG9mX3NlcTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnbCwgJ3IpID1cbiAgfCBMKCdsKVxuICB8IFIoJ3IpO1xuXG5sZXQgbCA9IHggPT4gTCh4KTtcbmxldCByID0geCA9PiBSKHgpO1xuXG5sZXQgaXNfTCA9XG4gIGZ1blxuICB8IEwoXykgPT4gdHJ1ZVxuICB8IFIoXykgPT4gZmFsc2U7XG5sZXQgaXNfUiA9IGUgPT4gIWlzX0woZSk7XG5cbmxldCBnZXRfTCA9XG4gIGZ1blxuICB8IEwobCkgPT4gU29tZShsKVxuICB8IFIoXykgPT4gTm9uZTtcbmxldCBnZXRfUiA9XG4gIGZ1blxuICB8IFIocikgPT4gU29tZShyKVxuICB8IEwoXykgPT4gTm9uZTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIGludmFyaWFudDogTGlzdC5sZW5ndGgoYXMpID09IExpc3QubGVuZ3RoKGJzKSArIDFcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSwgJ2IpID0gKGxpc3QoJ2EpLCBsaXN0KCdiKSk7XG5cbmxldCBtayA9IChhc186IGxpc3QoJ2EpLCBiczogbGlzdCgnYikpOiB0KCdhLCAnYikgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA9PSBMaXN0Lmxlbmd0aChicykgKyAxKTtcbiAgKGFzXywgYnMpO1xufTtcblxubGV0IGZpcnN0X2EgPSAoKGFzXywgXyk6IHQoJ2EsIF8pKTogJ2EgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA+IDApO1xuICBMaXN0LmhkKGFzXyk7XG59O1xubGV0IGxhc3RfYSA9ICgoYXNfLCBfKTogdCgnYSwgXykpOiAnYSA9PiB7XG4gIGFzc2VydChMaXN0Lmxlbmd0aChhc18pID4gMCk7XG4gIExpc3RVdGlsLmxhc3QoYXNfKTtcbn07XG5cbmxldCByZXYgPSAocmV2X2EsIHJldl9iLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PiAoXG4gIExpc3QucmV2X21hcChyZXZfYSwgYXNfKSxcbiAgTGlzdC5yZXZfbWFwKHJldl9iLCBicyksXG4pO1xuXG5sZXQgY29ucyA9IChhOiAnYSwgYjogJ2IsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYSwgJ2IpID0+IChcbiAgW2EsIC4uLmFzX10sXG4gIFtiLCAuLi5ic10sXG4pO1xubGV0IHNub2MgPSAoKGFzXywgYnMpOiB0KCdhLCAnYiksIGI6ICdiLCBhOiAnYSk6IHQoJ2EsICdiKSA9PiAoXG4gIGFzXyBAIFthXSxcbiAgYnMgQCBbYl0sXG4pO1xuXG5sZXQgc2luZ2xldG9uID0gKGE6ICdhKTogdCgnYSwgXykgPT4gKFthXSwgW10pO1xuXG5sZXQgZ2V0X2FzOiB0KCdhLCBfKSA9PiBsaXN0KCdhKSA9IGZzdDtcbmxldCBnZXRfYnM6IHQoXywgJ2IpID0+IGxpc3QoJ2IpID0gc25kO1xuXG5sZXQgaGQgPSAoKGFzXywgXyk6IHQoJ2EsICdiKSk6ICdhID0+IExpc3QuaGQoYXNfKTtcblxubGV0IHJlYyBhYmFfdHJpcGxlcyA9IChhYmE6IHQoJ2EsICdiKSk6IGxpc3QoKCdhLCAnYiwgJ2EpKSA9PlxuICBzd2l0Y2ggKGFiYSkge1xuICB8IChbYTEsIGEyLCAuLi5hc19dLCBbYiwgLi4uYnNdKSA9PiBbXG4gICAgICAoYTEsIGIsIGEyKSxcbiAgICAgIC4uLmFiYV90cmlwbGVzKChbYTIsIC4uLmFzX10sIGJzKSksXG4gICAgXVxuICB8IF8gPT4gW11cbiAgfTtcbmxldCByZWMgYmFiX3RyaXBsZXMnID1cbiAgICAgICAgKGIxOiBvcHRpb24oJ2IpLCBhYmE6IHQoJ2EsICdiKSlcbiAgICAgICAgOiBsaXN0KChvcHRpb24oJ2IpLCAnYSwgb3B0aW9uKCdiKSkpID0+XG4gIHN3aXRjaCAoYWJhKSB7XG4gIHwgKFthLCAuLi5hc19dLCBbYjIsIC4uLmJzXSkgPT4gW1xuICAgICAgKGIxLCBhLCBTb21lKGIyKSksXG4gICAgICAuLi5iYWJfdHJpcGxlcycoU29tZShiMiksIChhc18sIGJzKSksXG4gICAgXVxuICB8IChbYV0sIFtdKSA9PiBbKGIxLCBhLCBOb25lKV1cbiAgfCBfID0+IFtdXG4gIH07XG5sZXQgYmFiX3RyaXBsZXM6IHQoJ2EsICdiKSA9PiBsaXN0KChvcHRpb24oJ2IpLCAnYSwgb3B0aW9uKCdiKSkpID1cbiAgYWJhID0+IGJhYl90cmlwbGVzJyhOb25lLCBhYmEpO1xuXG5sZXQgbWFwX2EgPSAoZl9hOiAnYSA9PiAnYywgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdjLCAnYikgPT4gKFxuICBMaXN0Lm1hcChmX2EsIGFzXyksXG4gIGJzLFxuKTtcbmxldCBtYXBfYiA9IChmX2I6ICdiID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9iLCBicyksXG4pO1xubGV0IG1hcF9hYmFzID1cbiAgICAoZl9hYmE6ICgoJ2EsICdiLCAnYSkpID0+ICdjLCAoYXNfLCBfKSBhcyBhYmE6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9hYmEsIGFiYV90cmlwbGVzKGFiYSkpLFxuKTtcbmxldCBtYXBfaGQgPSAoZl9hOiAnYSA9PiAnYSwgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYikgPT4gKFxuICBbYXNfIHw+IExpc3QuaGQgfD4gZl9hLCAuLi5hc18gfD4gTGlzdC50bF0sXG4gIGJzLFxuKTtcblxubGV0IHRyaW0gPSAoKGFzXywgYnMpOiB0KCdhLCAnYikpOiBvcHRpb24oKCdhLCB0KCdiLCAnYSksICdhKSkgPT5cbiAgc3dpdGNoIChicykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbXywgLi4uX10gPT5cbiAgICBsZXQgKGwsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICAgIGxldCAoYXNfLCByKSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoYXNfKTtcbiAgICBTb21lKChsLCBtayhicywgYXNfKSwgcikpO1xuICB9O1xuXG5sZXQgc3BsaXQgPSAoZjogJ2MgPT4gRWl0aGVyLnQoJ2EsICdiKSwgY3M6IGxpc3QoJ2MpKTogdChsaXN0KCdhKSwgJ2IpID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoYywgKGFzXywgYnMpKSA9PlxuICAgICAgc3dpdGNoIChmKGMpKSB7XG4gICAgICB8IEwoYSkgPT5cbiAgICAgICAgbGV0IChoZCwgdGwpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoYXNfKTtcbiAgICAgICAgKFtbYSwgLi4uaGRdLCAuLi50bF0sIGJzKTtcbiAgICAgIHwgUihiKSA9PiAoW1tdLCAuLi5hc19dLCBbYiwgLi4uYnNdKVxuICAgICAgfSxcbiAgICBjcyxcbiAgICBtayhbW11dLCBbXSksXG4gICk7XG5cbmxldCBqb2luID0gKGZfYTogJ2EgPT4gJ2MsIGZfYjogJ2IgPT4gJ2MsIGFiYTogdCgnYSwgJ2IpKTogbGlzdCgnYykgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGdldF9hcyhhYmEpKTtcbiAgbGV0IGJzID0gZ2V0X2JzKGFiYSk7XG4gIExpc3QuZm9sZF9yaWdodDIoXG4gICAgKGEsIGIsIGNzKSA9PiBbZl9hKGEpLCBmX2IoYiksIC4uLmNzXSxcbiAgICBhc18sXG4gICAgYnMsXG4gICAgW2ZfYShhKV0sXG4gICk7XG59O1xuXG5sZXQgZm9sZF9sZWZ0ID1cbiAgICAoZl9hOiAnYSA9PiAnYWNjLCBmX2JhOiAoJ2FjYywgJ2IsICdhKSA9PiAnYWNjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSlcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgKGEsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICBMaXN0LmZvbGRfbGVmdDIoZl9iYSwgZl9hKGEpLCBicywgYXNfKTtcbn07XG5sZXQgZm9sZF9sZWZ0X21hcCA9XG4gICAgKFxuICAgICAgZl9hOiAnYSA9PiAoJ2FjYywgJ2MpLFxuICAgICAgZl9iYTogKCdhY2MsICdiLCAnYSkgPT4gKCdhY2MsICdkLCAnYyksXG4gICAgICBhYmE6IHQoJ2EsICdiKSxcbiAgICApXG4gICAgOiAoJ2FjYywgdCgnYywgJ2QpKSA9PlxuICBhYmFcbiAgfD4gZm9sZF9sZWZ0KFxuICAgICAgIGEgPT4ge1xuICAgICAgICAgbGV0IChhY2MsIGMpID0gZl9hKGEpO1xuICAgICAgICAgKGFjYywgc2luZ2xldG9uKGMpKTtcbiAgICAgICB9LFxuICAgICAgICgoYWNjLCBtYXBwZWQpLCBiLCBhKSA9PiB7XG4gICAgICAgICBsZXQgKGFjYywgZCwgYykgPSBmX2JhKGFjYywgYiwgYSk7XG4gICAgICAgICAoYWNjLCBzbm9jKG1hcHBlZCwgZCwgYykpO1xuICAgICAgIH0sXG4gICAgICk7XG5cbmxldCBmb2xkX3JpZ2h0ID1cbiAgICAoZl9hYjogKCdhLCAnYiwgJ2MpID0+ICdjLCBmX2E6ICdhID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSkgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGFzXyk7XG4gIExpc3QuZm9sZF9yaWdodDIoZl9hYiwgYXNfLCBicywgZl9hKGEpKTtcbn07XG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbm9wZW4gU3RvcmVcblxubW9kdWxlIE1ha2UgKFMgOiBTVE9SRSkgPSBzdHJ1Y3RcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIEluIHRoaXMgdmVyc2lvbiB0aGUgY29kZSwgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11c3Qgbm90IG11dGFibGUuIEluZGVlZCxcbiAgIGV2ZXJ5IG11dGF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHZpYSBbUy5zZXRdLiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mICdhIHJyZWZcbnwgUm9vdCBvZiByYW5rICogJ2FcblxuKCogVGhlIHR5cGUgWydhIHJyZWZdIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBycmVmID1cbiAgJ2EgY29udGVudCBTLnJyZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHR5cGUgb2Ygc3RvcmVzLCBhbmQgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIG5ldyBzdG9yZSwgYXJlIHRob3NlXG4gICBvZiB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBbU10uICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICAnYSBjb250ZW50IFMuc3RvcmVcblxubGV0IG5ld19zdG9yZSA6IHVuaXQgLT4gJ2Egc3RvcmUgPVxuICBTLm5ld19zdG9yZVxuXG5sZXQgY29weSA6ICdhIHN0b3JlIC0+ICdhIHN0b3JlID1cbiAgUy5jb3B5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHMgdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgUy5tYWtlIHMgKFJvb3QgKDAsIHYpKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCBzIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIF8pIC0+XG4gICAgICB4XG4gIHwgTGluayB5IC0+XG4gICAgICBsZXQgeiA9IGZpbmQgcyB5IGluXG4gICAgICBpZiBTLmVxIHMgeSB6IHRoZW5cbiAgICAgICAgelxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbGlua190b196ID0gUy5nZXQgcyB5IGluXG4gICAgICAgIFMuc2V0IHMgeCBsaW5rX3RvX3o7XG4gICAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiBib29sID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSBzIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlIHNhbWVcbiAgIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhIHBoeXNpY2FsXG4gICBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XSBhbmQgW3ldIGFyZVxuICAgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBTLmVxIHMgeCB5IHx8IFMuZXEgcyAoZmluZCBzIHgpIChmaW5kIHMgeSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldF8gcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbZ2V0IHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICAgICAgdlxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBnZXRfIHMgeFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0XyBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtzZXQgcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAociwgXykgLT5cbiAgICAgICAgICBTLnNldCBzIHkgKFJvb3QgKHIsIHYpKVxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBzZXRfIHMgeCB2XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiBzIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCBfKSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7IHlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpOyB4XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocnggKyAxLCB2eCkpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgcyAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgdnkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIFMuc2V0IHMgeSAoUm9vdCAocnksIHYpKTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gUy5zZXQgcyB4IChSb290IChyeCwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCsxLCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIFdlIG1ha2UgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11dGFibGUsIGFuZCB3ZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdFxuICAgZXZlcnkgdmVydGV4IHVuaXF1ZWx5IG93bnMgaXRzIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHVzIHRvIHVwZGF0ZSBhIGNvbnRlbnRcbiAgIGluIHBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBjb250ZW50IGFuZCB1cGRhdGluZyB0aGUgdmVydGV4IHdpdGhcbiAgIHRoaXMgbmV3IGNvbnRlbnQuXG5cbiAgIFdlIG9idGFpbiB0aGUgcHJvcGVydHkgdGhhdDpcbiAgIC0gb25seSBbbWFrZV0gYWxsb2NhdGVzIGEgbmV3IHZlcnRleCAoYSByZWZlcmVuY2UgYW5kIGEgW1Jvb3RdIGNvbnRlbnQpO1xuICAgLSBvbmx5IFt1bmlvbl0gYW5kIFttZXJnZV0gYWxsb2NhdGUgYSBuZXcgZWRnZSAoYSBbTGlua10gY29udGVudCkuXG4gICBbZmluZF0sIFtnZXRdLCBbc2V0XSwgW2VxXSBhbGxvY2F0ZSBubyBtZW1vcnkuICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgeyBtdXRhYmxlIHBhcmVudCA6ICdhIGVsZW0gfVxufCBSb290IG9mIHsgbXV0YWJsZSByYW5rIDogcmFuazsgbXV0YWJsZSB2YWx1ZSA6ICdhIH1cblxuKCogVGhlIHR5cGUgWydhIGVsZW1dIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBlbGVtID1cbiAgJ2EgY29udGVudCByZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2Ugdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHYgOiAnYSkgOiAnYSBlbGVtID1cbiAgcmVmIChSb290IHsgcmFuayA9IDA7IHZhbHVlID0gdiB9KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIHNvIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kICh4IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgeFxuICB8IExpbmsgKHsgcGFyZW50ID0geSB9IGFzIGxpbmspIC0+XG4gICAgICBsZXQgeiA9IGZpbmQgeSBpblxuICAgICAgaWYgeiAhPSB5IHRoZW5cbiAgICAgICAgbGluay5wYXJlbnQgPC0gejtcbiAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlICh4IDogJ2EgZWxlbSkgOiBib29sID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlXG4gICBzYW1lIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhXG4gICBwaHlzaWNhbCBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XVxuICAgYW5kIFt5XSBhcmUgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6IGJvb2wgPVxuICB4ID09IHkgfHwgZmluZCB4ID09IGZpbmQgeVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0IHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXQgKHggOiAnYSBlbGVtKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgeyB2YWx1ZSA9IHY7IF8gfSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXQgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldCAoeCA6ICdhIGVsZW0pICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHJvb3QgLT5cbiAgICAgIHJvb3QudmFsdWUgPC0gdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyBfIH0gYXMgcm9vdHgpLCBSb290IHsgcmFuayA9IHJ5OyBfIH0gLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4fTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IHZhbHVlID0gdnggfSBhcyByb290eCksXG4gICAgICBSb290ICh7IHJhbmsgPSByeTsgdmFsdWUgPSB2eSB9IGFzIHJvb3R5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiByb290eS52YWx1ZSA8LSB2O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgSU5UTUFQID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgZW1wdHk6ICdhIHRcbiAgdmFsIGZpbmQ6IGludCAtPiAnYSB0IC0+ICdhXG4gIHZhbCBhZGQ6IGludCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW50TWFwIDogSU5UTUFQKSA9IHN0cnVjdFxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGEgcGFpciBvZiBhbiBpbnRlZ2VyIGFkZHJlc3MgYW5kIGEgbWFwIG9mXG4gICBpbnRlZ2VyIGFkZHJlc3NlcyB0byB2YWx1ZXMuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGVcbiAgIGRvbWFpbiBvZiB0aGUgbWFwIFtjb250ZW50XSBpcyB0aGUgc2VtaS1vcGVuIGludGVydmFsIG9mIHplcm9cbiAgIChpbmNsdWRlZCkgdXAgdG8gW2xpbWl0XSAoZXhjbHVkZWQpLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBjb250ZW50IG9mIHRoZSBzdG9yZS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBJbnRNYXAudFxufVxuXG5sZXQgbmV3X3N0b3JlICgpID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBJbnRNYXAuZW1wdHlcbn1cblxuKCogQmVjYXVzZSBhIHBlcnNpc3RlbnQgbWFwIGlzIHVzZWQsIGNvcHlpbmcgYSBzdG9yZSBhbW91bnRzIHRvIGNvcHlpbmdcbiAgIHRoZSBtdXRhYmxlIHJlY29yZCBhdCB0aGUgcm9vdC4gKilcblxubGV0IGNvcHkgcyA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMganVzdCBhbiBpbnRlZ2VyIGFkZHJlc3MuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG5sZXQgbWFrZSBzIHYgPVxuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudDtcbiAgeFxuXG4oKiBbY2hlY2sgcyB4XSBjaGVja3MgdGhhdCB0aGUgYWRkcmVzcyBbeF0gaXMgaW4gcmFuZ2UgZm9yIHRoZSBzdG9yZSBbc10uIElmXG4gICB0aGlzIGR5bmFtaWMgY2hlY2sgZmFpbHMsIHRoZW4gdGhlIHVzZXIgaXMgY29uZnVzZWQgYW5kIGhhcyBwYXNzZWQgdXMgYW5cbiAgIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKElmIHRoZSBjaGVjayBzdWNjZWVkcyxcbiAgIHRoZSB1c2VyIG1heSBiZSBjb25mdXNlZCB0b28hIGJ1dCB3ZSBjYW5ub3QgZGV0ZWN0IGl0LikgKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBnZXQgcyB4ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIEludE1hcC5maW5kIHggcy5jb250ZW50XG5cbmxldCBzZXQgcyB4IHYgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudFxuXG5sZXQgZXEgcyAoeCA6IGludCkgKHkgOiBpbnQpID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcblxuZW5kXG5cbigqIEluY2x1ZGUgdGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIG9mIHRoZSBhYm92ZSBmdW5jdG9yLiAqKVxuXG5pbmNsdWRlIE1ha2UoTWFwLk1ha2Uoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgY29tcGFyZSA9ICgtKSAoKiBvayBzaW5jZSB0aGUgYXJndW1lbnRzIGFyZSBub25uZWdhdGl2ZSBpbnRlZ2VycyAqKVxuZW5kKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXaGVuIE9DYW1sJ3MgYnVpbHQtaW4gc3RvcmUgaXMgdXNlZCwgbm8gZXhwbGljaXQgc3RvcmUgaXMgbmVlZGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgdW5pdFxuXG5sZXQgbmV3X3N0b3JlICgpID1cbiAgKClcblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhIHByaW1pdGl2ZSByZWZlcmVuY2UuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gICdhIHJlZlxuXG5sZXQgbWFrZSAoKSB2ID1cbiAgcmVmIHZcblxubGV0IGdldCAoKSB4ID1cbiAgIXhcblxubGV0IHNldCAoKSB4IHYgPVxuICB4IDo9IHZcblxubGV0IGVxICgpIHggeSA9XG4gIHggPT0geVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcmVmZXJlbmNlIGNlbGwgcmVjb3JkcyBib3RoIGl0cyBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUgYW5kXG4gICBpdHMgbGFzdCBjb21taXR0ZWQgdmFsdWUuIEEgY2VsbCBpcyBjb25zaWRlcmVkIHN0YWJsZSB3aGVuIHRoZXNlIHR3byB2YWx1ZXNcbiAgIGFyZSAocGh5c2ljYWxseSkgZXF1YWwsIGFuZCB1bnN0YWJsZSBvdGhlcndpc2UuICopXG5cbigqIE9uZSBjb3VsZCBwZXJoYXBzIGVucmljaCBlYWNoIGNlbGwgd2l0aCBhIHBvaW50ZXIgdG8gaXRzIHN0b3JlLCBzbyBhcyB0b1xuICAgZW5zdXJlIGF0IHJ1bnRpbWUgdGhhdCB0aGUgdXNlciBpcyBub3QgY29uZnVzZWQuICopXG5cbnR5cGUgJ2EgcnJlZiA9IHtcbiAgKCogVGhlIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjdXJyZW50OiAnYTtcbiAgKCogVGhlIGxhc3QgY29tbWl0dGVkIHZhbHVlLiAqKVxuICBtdXRhYmxlIGNvbW1pdHRlZDogJ2Fcbn1cblxuKCogQSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHN0YWNrIG9mIGFsbCB1bnN0YWJsZSBjZWxscyAoYW5kIHBvc3NpYmx5IHNvbWVcbiAgIHN0YWJsZSBjZWxscyB0b28sIGFsdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkpLiAqKVxuXG50eXBlICdhIHRyYW5zYWN0aW9uID1cbiAgJ2EgcnJlZiBTdGFjay50XG5cbigqIEEgc3RvcmUgY29udGFpbnMgYW4gb3B0aW9uYWwgdHJhbnNhY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHdoZXRoZXIgYVxuICAgdHJhbnNhY3Rpb24gaXMgY3VycmVudGx5IG9uZ29pbmcuIFRyYW5zYWN0aW9ucyBjYW5ub3QgYmUgbmVzdGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgeyBtdXRhYmxlIHRyYW5zYWN0aW9uOiAnYSB0cmFuc2FjdGlvbiBvcHRpb24gfVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPVxuICB7IHRyYW5zYWN0aW9uID0gTm9uZSB9XG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxubGV0IG1ha2UgKF9zIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIHsgY3VycmVudCA9IHY7IGNvbW1pdHRlZCA9IHYgfVxuXG5sZXQgZ2V0IChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICB4LmN1cnJlbnRcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gICgqIElmIHRoZSBuZXcgdmFsdWUgaGFwcGVucyB0byBiZSB0aGUgY3VycmVudCB2YWx1ZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby4gKilcbiAgbGV0IGN1cnJlbnQgPSB4LmN1cnJlbnQgaW5cbiAgaWYgdiA9PSBjdXJyZW50IHRoZW5cbiAgICAoKVxuICBlbHNlIGJlZ2luIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgqIE91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiwgdHdvIG5vcm1hbCB3cml0ZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQuXG4gICAgICAgICBUaGUgY2VsbCByZW1haW5zIHN0YWJsZS4gTm90aGluZyBpcyBsb2dnZWQuICopXG4gICAgICB4LmN1cnJlbnQgPC0gdjtcbiAgICAgIHguY29tbWl0dGVkIDwtIHZcbiAgfCBTb21lIHN0YWNrIC0+XG4gICAgICAoKiBXZSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24uICopXG4gICAgICAoKiBJZiB0aGlzIGNlbGwgd2FzIHN0YWJsZSBhbmQgbm93IGJlY29tZXMgdW5zdGFibGUsIHRoZW4gaXQgbXVzdCBiZVxuICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgc2V0IG9mIHVuc3RhYmxlIGNlbGxzLCB3aGljaCBpcyByZWNvcmRlZCBhcyBwYXJ0XG4gICAgICAgICBvZiB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICBpZiBjdXJyZW50ID09IHguY29tbWl0dGVkIHRoZW5cbiAgICAgICAgU3RhY2sucHVzaCB4IHN0YWNrO1xuICAgICAgKCogVGhlIGNlbGwgbXVzdCB0aGVuIGJlIHVwZGF0ZWQuIElmIFt2XSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvXG4gICAgICAgICBbY29tbWl0dGVkXSwgdGhpcyBjb3VsZCBtYWtlIHRoZSBjZWxsIHN0YWJsZSBhZ2Fpbi4gV2UgZG8gbm90XG4gICAgICAgICBjaGVjayBmb3IgdGhpcyB1bmxpa2VseSBzaXR1YXRpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2V0IG9mXG4gICAgICAgICB1bnN0YWJsZSBjZWxscyBjb3VsZCBhY3R1YWxseSBjb250YWluIHN0YWJsZSBjZWxscyB0b28uICopXG4gICAgICB4LmN1cnJlbnQgPC0gdlxuICAgIGVuZFxuXG5sZXQgZXEgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICB4ID09IHlcblxuZXhjZXB0aW9uIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuXG5sZXQgY29tbWl0IHggPVxuICB4LmNvbW1pdHRlZCA8LSB4LmN1cnJlbnRcblxubGV0IHJvbGxiYWNrIHggPVxuICB4LmN1cnJlbnQgPC0geC5jb21taXR0ZWRcblxubGV0IHRlbnRhdGl2ZWx5IChzIDogJ2Egc3RvcmUpIChmIDogdW5pdCAtPiAnYikgOiAnYiA9XG4gIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICAgcmFpc2UgTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHN0YWNrID0gU3RhY2suY3JlYXRlKCkgaW5cbiAgICAgIHMudHJhbnNhY3Rpb24gPC0gU29tZSBzdGFjaztcbiAgICAgIHRyeVxuICAgICAgICBsZXQgYiA9IGYoKSBpblxuICAgICAgICAoKiBDb21taXQgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciBjb21taXQgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIGJcbiAgICAgIHdpdGggZSAtPlxuICAgICAgICBsZXQgYiA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlKCkgaW5cbiAgICAgICAgKCogUm9sbCBiYWNrIGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgcm9sbGJhY2sgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZW5zaWJsZSBhcnJheSwgdGhhdCBpcywgYSBwYWlyIG9mIGFuXG4gICBpbnRlZ2VyIGFkZHJlc3MgYW5kIGFuIGFycmF5LiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGxlbmd0aCBvZlxuICAgdGhlIGFycmF5IGlzIGF0IGxlYXN0IFtsaW1pdF0uIFRoZSBhcmVhIG9mIHRoZSBhcnJheSBhdCBpbmRleCBbbGltaXRdIGFuZFxuICAgYmV5b25kIGlzIGNvbnNpZGVyZWQgdW5pbml0aWFsaXplZC4gKilcblxuKCogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoaXMgYXJlYSBpcyBmaWxsZWQgd2l0aCBhcmJpdHJhcnkgdmFsdWUocylcbiAgIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIGNhbGxzIHRvIFttYWtlXSBvciBbc2V0XS4gVGhpcyBpcyBub3QgaWRlYWwsIGFzIGl0XG4gICBjYW4gY2F1c2UgYSBtZW1vcnkgbGVhay4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIGxvZ2ljYWwgc2l6ZSBvZiB0aGUgYXJyYXk7IGFsc28sIHRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGFycmF5LCB3aG9zZSBsZW5ndGggaXMgYXQgbGVhc3QgW2xpbWl0XS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBhcnJheVxufVxuXG4oKiBUaGUgYXJyYXkgaXMgY3JlYXRlZCB3aXRoIGEgc2l6ZSBhbmQgbGVuZ3RoIG9mIHplcm8uIFdlIGhhdmUgbm8gb3RoZXJcbiAgIGNob2ljZSwgc2luY2Ugd2UgZG8gbm90IGhhdmUgYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYXQgaGFuZC4gKilcblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBbfHxdXG59XG5cbigqIENvcHlpbmcgaXMgc3VwcG9ydGVkLCBidXQgaXMgbm90IGNoZWFwLiBVc2UgYXQgeW91ciBvd24gcmlzay4gKilcblxubGV0IGNvcHkgKHMgOiAnYSBzdG9yZSkgOiAnYSBzdG9yZSA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gQXJyYXkuY29weSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbigqIFRoZSBhcnJheSBqdW1wcyBmcm9tIGxlbmd0aCB6ZXJvIHRvIGxlbmd0aCBbZGVmYXVsdF9pbml0aWFsX2xlbmd0aF0gYXMgc29vblxuICAgYXMgYSBjYWxsIHRvIFttYWtlXSBpcyBtYWRlLiAqKVxuXG5sZXQgZGVmYXVsdF9pbml0aWFsX2xlbmd0aCA9XG4gIDI1NlxuXG4oKiBbZW5sYXJnZSBzIHZdIGluY3JlYXNlcyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAoaWYgbmVjZXNzYXJ5KSBzbyBhcyB0b1xuICAgZW5zdXJlIHRoYXQgW3MubGltaXRdIGJlY29tZXMgYSB2YWxpZCBpbmRleC4gVGhlIGFyZ3VtZW50IFt2XSBpcyB1c2VkIGFzIGFcbiAgIGRlZmF1bHQgdmFsdWUgdG8gZmlsbCB0aGUgdW5pbml0aWFsaXplZCBhcmVhLiAqKVxuXG5sZXQgZW5sYXJnZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgY29udGVudCA9IHMuY29udGVudCBpblxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbnRlbnQgaW5cbiAgaWYgcy5saW1pdCA9IGxlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbmd0aCcgPVxuICAgICAgaWYgbGVuZ3RoID0gMCB0aGVuXG4gICAgICAgIGRlZmF1bHRfaW5pdGlhbF9sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgMiAqIGxlbmd0aFxuICAgIGluXG4gICAgYXNzZXJ0IChzLmxpbWl0IDwgbGVuZ3RoJyk7XG4gICAgbGV0IGNvbnRlbnQnID0gQXJyYXkubWFrZSBsZW5ndGgnIHYgaW5cbiAgICBBcnJheS5ibGl0IGNvbnRlbnQgMCBjb250ZW50JyAwIGxlbmd0aDtcbiAgICBzLmNvbnRlbnQgPC0gY29udGVudCdcbiAgZW5kXG5cbigqIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBhbmQgW0FycmF5LnVuc2FmZV9nZXRdIHdpdGhvdXRcbiAgIGFueSBwcmVjYXV0aW9ucywgc2luY2UgdGhlIE9DYW1sIHR5cGUtY2hlY2tlciBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlXG4gICBpbmRpY2VzIGFyZSBpbiByYW5nZS4gQSBjb25mdXNlZCB1c2VyIGNvdWxkIHBhc3MgcmVmZXJlbmNlcyBpbnRvIHNvbWVcbiAgIG90aGVyIHN0b3JlLiBXZSBjaG9vc2UgdG8gZXhwbGljaXRseSBjaGVjayB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gdGhlXG4gICBsb2dpY2FsIGJvdW5kcyBvZiB0aGUgYXJyYXkgLS0gdGhpcyBpcyBhIG1vcmUgcHJlY2lzZSBjaGVjay4gKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiB1bml0ID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgZW5sYXJnZSBzIHY7XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHY7XG4gIHhcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9nZXQgcy5jb250ZW50IHhcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2XG5cbmxldCBlcSAgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuIiwiLyogSUQgRkFRXG5cbiAgIFdIQVRTIEFOIElEP1xuXG4gICBJRHMgYXJlIHJhbmRvbS1nZW5lcmF0ZWQgMTI4Yml0IFVVSURzOyB1c2UgSWQubWsoKSB0byBnZW5lcmF0ZSBvbmUuXG5cbiAgIFdIQVQgQVJFIElEUyBVU0VEIEZPUj9cblxuICAgVW5pcXVlIGlkcyBhcmUgYXNzaWduZWQgdG8gdGlsZXMgKGFuZCBoZW5jZSwgaW5kaXJlY3RseSwgdG8gdGVybXMpXG4gICBhdCB0aGUgdGltZSBvZiBjcmVhdGlvbiBvZiBzdXJmYWNlIHN5bnRheC4gSWRzIGFyZSB1c2VkIGFzIGtleXMgaW5cbiAgIHZhcmlvdXMgbWFwcyAobW9zdGx5IG5vdGFibHkgdGhlIE1lYXN1cmVkIG1hcCwgd2hpY2ggdHJhY2tzIHNjcmVlblxuICAgY29vcmRpbmF0ZXMgZm9yIHRoZSB2aWV3LCBhbmQgdGhlIEluZm8gbWFwIHdoaWNoIGNvbGxlY3RzIHN0YXRpY1xuICAgZGF0YSBzdWNoIGFzIHR5cGUgaW5mb3JtYXRpb24pLiBJZHMgYXJlIHVzZWQgZm9yIG1hbnkgemlwcGVyIGFjdGlvbnMsXG4gICBpbmNsdWRpbmcganVtcCB0byBkZWZpbml0aW9uLCBhbmQgYXJlIGFsc28gdXNlZCB0byBjb29yZGluYXRlIHRlcm1cbiAgIGRlY29yYXRpb25zLiBBY2NpZGVudGFsbHkgY3JlYXRpbmcgbm9uLXVuaXF1ZSBJRHMgY2FuIGJlIHRoZSBjYXVzZVxuICAgb2YgbWFueSBvZGQgaXNzdWVzIGZvciB6aXBwZXIgYWN0aW9ucyBhbmQgZGlzcGxheS5cblxuICAgQlVUIFdIWSBJUyBUSEVSRSBBIF9MSVNUXyBPRiBJRFM/XG5cbiAgIFRlY2huaWNhbGx5LCBlYWNoIHRpbGUgaGFzIGEgbGlzdCBvZiBpZHMsIHRvIHN1cHBvcnQgbi1hcnkgZm9ybXMgbGlrZVxuICAgdHVwbGVzOyB0aGVyZSBhcmUgcmVwX2lkIGZ1bmN0aW9ucyBpbiBUZXJtIHRvIGNhbm9uaWNhbGx5IGV4dHJhY3RcbiAgIHNpbmdsZSByZXByZXNlbnRhdGl2ZSBpZHMgZnJvbSB0aGlzIGxpc3Qgd2hlcmUgYXBwcm9wcmlhdGUuXG5cbiAgIENBTiBJIFVTRSBJRFMgSU4gRFlOQU1JQ1M/XG5cbiAgIEN1cnJlbnRseSwgREhFeHBzIChhcyBwcm9kdWNlZCBieSB0aGUgZWxhYm9yYXRvciBhbmQgcHJvZHVjZWQvY29uc3VtZWRcbiAgIGJ5IHRoZSBldmFsdWF0b3IpIGRvIG5vdCBpbiBnZW5lcmFsIHBlcnNpc3QgaWRzOyB0aGUgZXhjZXB0aW9ucyBhcmVcbiAgIHRoaW5ncyBsaWtlIGhvbGVzIGFuZCB0ZXN0cyB3aGljaCBoYXZlIGFkZGl0aW9uYWwgbWV0YWRhdGEgd2hpY2ggaXNcbiAgIGFjY3VtdWxhdGVkIGR1dGluZyBldmFsdWF0aW9uLiBUaGVyZSBhcmUgbWFueSB1c2UgY2FzZXMgZm9yIHRyYWNraW5nXG4gICBpZHMgbW9yZSBnZW5lcmFsbHkgZHVyaW5nIGV2YWx1YXRpb24sIGJ1dCBkb2luZyBzbyBpbiBhIHByaW5jaXBsZWRcbiAgIHdheSBpcyBhIGxhcmdlLXNjYWxlIGNoYW5nZSB3aXRoIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG5sZXQgc2V4cF9vZl90OiBVdWlkbS50ID0+IFNleHBsaWIuU2V4cC50ID1cbiAgdCA9PiBTZXhwbGliLlNleHAuQXRvbShVdWlkbS50b19zdHJpbmcodCkpO1xuXG5sZXQgdF9vZl9zZXhwOiBTZXhwbGliLlNleHAudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgU2V4cGxpYi5TZXhwLkF0b20ocykgPT5cbiAgICBVdWlkbS5vZl9zdHJpbmcocylcbiAgICB8PiBVdGlsLk9wdFV0aWwuZ2V0KF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3NleHA6IG5vdCB2YWxpZCBVVUlEICgxKVwiKSlcbiAgfCBfID0+IGZhaWx3aXRoKFwiVXVpZG0udF9vZl9zZXhwOiBub3QgdmFsaWQgVVVJRCAoMilcIik7XG5cbmxldCB5b2pzb25fb2ZfdDogVXVpZG0udCA9PiBZb2pzb24uU2FmZS50ID0gdCA9PiBgU3RyaW5nKFV1aWRtLnRvX3N0cmluZyh0KSk7XG5cbmxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgYFN0cmluZyhzKSA9PlxuICAgIFV1aWRtLm9mX3N0cmluZyhzKVxuICAgIHw+IFV0aWwuT3B0VXRpbC5nZXQoXyA9PlxuICAgICAgICAgZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDEpXCIpXG4gICAgICAgKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDIpXCIpO1xuXG50eXBlIHQgPSBVdWlkbS50O1xuXG5sZXQgbWs6IHVuaXQgPT4gdCA9IFV1aWRtLnY0X2dlbihSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSk7XG5cbmxldCBjb21wYXJlOiAodCwgdCkgPT4gaW50ID0gVXVpZG0uY29tcGFyZTtcbmxldCB0b19zdHJpbmc6ICh+dXBwZXI6IGJvb2w9PywgdCkgPT4gc3RyaW5nID0gVXVpZG0udG9fc3RyaW5nO1xubGV0IG9mX3N0cmluZzogKH5wb3M6IGludD0/LCBzdHJpbmcpID0+IG9wdGlvbih0KSA9IFV1aWRtLm9mX3N0cmluZztcbmxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQgPVxuICAoZiwgaWQpID0+XG4gICAgRm9ybWF0LmZwcmludGYoXG4gICAgICBmLFxuICAgICAgXCJPcHRpb24uZ2V0KEhhejNsY29yZS5JZC5vZl9zdHJpbmcoXFxcIiVzXFxcIikpXCIsXG4gICAgICB0b19zdHJpbmcoaWQpLFxuICAgICk7XG5sZXQgc2hvdyA9IGlkID0+XG4gIEZvcm1hdC5zcHJpbnRmKFxuICAgIFwiT3B0aW9uLmdldChIYXozbGNvcmUuSWQub2Zfc3RyaW5nKFxcXCIlc1xcXCIpKVwiLFxuICAgIHRvX3N0cmluZyhpZCksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG50eXBlIGJpbmRpbmcoJ3YpID0gKHQsICd2KTtcblxubW9kdWxlIE1hcCA9IHtcbiAgaW5jbHVkZSBNYXAuTWFrZShVdWlkbSk7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4gU2V4cGxpYi5TdGQuc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcblxuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cCwgc2V4cCkgPT5cbiAgICBzZXhwXG4gICAgfD4gU2V4cGxpYi5TdGQubGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCB5b2pzb25fb2ZfdCA9ICh5b2pzb25fb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuXG4gIGxldCB0X29mX3lvanNvbiA9ICh2X29mX3lvanNvbiwganNvbikgPT5cbiAgICBqc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCBwcCA9IChwcF92LCBmbXQsIG1hcCkgPT5cbiAgICBiaW5kaW5ncyhtYXApXG4gICAgfD4gTGlzdC5pdGVyKCgoaywgdikpID0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZihmbXQsIFwiJWEgLT4gJWFcXG5cIiwgcHAsIGssIHBwX3YsIHYpXG4gICAgICAgKTtcbn07XG5sZXQgaW52YWxpZDogdCA9XG4gIFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIgfD4gVXVpZG0ub2Zfc3RyaW5nIHw+IE9wdGlvbi5nZXQ7XG5cbi8qIFNwZWNpYWwgaWQgdXNlZCB0byBkZW5vdGUgYSB0cml2aWFsIChlbXB0eSkgZnVuY3Rpb24gYXBwbGljYXRpb24gKi9cbmxldCBudWxsYXJ5X2FwX2ZsYWc6IHQgPVxuICBcIkRFQURCRUVGLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiIHw+IFV1aWRtLm9mX3N0cmluZyB8PiBPcHRpb24uZ2V0O1xuXG5sZXQgaXNfbnVsbGFyeV9hcF9mbGFnID0gKGlkczogbGlzdCh0KSkgPT5cbiAgc3dpdGNoIChpZHMpIHtcbiAgfCBbaWRdIHdoZW4gaWQgPT0gbnVsbGFyeV9hcF9mbGFnID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbm1vZHVsZSBVZjoge1xuICB0eXBlIHN0b3JlKCdhKTtcbiAgbGV0IGluaXQ6IHVuaXQgPT4gc3RvcmUoXyk7XG4gIGxldCBhZGQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgZ2V0OiAodCwgc3RvcmUoJ2EpKSA9PiAnYTtcbiAgbGV0IGdldF9vcHQ6ICh0LCBzdG9yZSgnYSkpID0+IG9wdGlvbignYSk7XG4gIGxldCBzZXQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgbWVyZ2U6ICgoJ2EsICdhKSA9PiAnYSwgdCwgdCwgc3RvcmUoJ2EpKSA9PiB1bml0O1xufSA9IHtcbiAgbW9kdWxlIE0gPSBVbmlvbkZpbmQuTWFrZShVbmlvbkZpbmQuU3RvcmVWZWN0b3IpO1xuICB0eXBlIHN0b3JlKCdhKSA9IHtcbiAgICByZWZzOiByZWYoTWFwLnQoTS5ycmVmKCdhKSkpLFxuICAgIHN0b3JlOiBNLnN0b3JlKCdhKSxcbiAgfTtcbiAgbGV0IGluaXQgPSAoKSA9PiB7cmVmczogcmVmKE1hcC5lbXB0eSksIHN0b3JlOiBNLm5ld19zdG9yZSgpfTtcbiAgbGV0IHJyZWYgPSAoaWQsIHMpID0+IE1hcC5maW5kKGlkLCBzLnJlZnNeKTtcbiAgbGV0IGFkZCA9IChpZCwgYSwgcykgPT5cbiAgICBzd2l0Y2ggKE1hcC5maW5kX29wdChpZCwgcy5yZWZzXikpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCByID0gTS5tYWtlKHMuc3RvcmUsIGEpO1xuICAgICAgcy5yZWZzIDo9IE1hcC5hZGQoaWQsIHIsIHMucmVmc14pO1xuICAgIHwgU29tZShfKSA9PiAoKVxuICAgIH07XG4gIGxldCBnZXQgPSAoaWQsIHMpID0+IE0uZ2V0KHMuc3RvcmUsIE0uZmluZChzLnN0b3JlLCBycmVmKGlkLCBzKSkpO1xuICBsZXQgZ2V0X29wdCA9IChpZCwgcykgPT5cbiAgICBNYXAuZmluZF9vcHQoaWQsIHMucmVmc14pIHw+IE9wdGlvbi5tYXAoXyA9PiBnZXQoaWQsIHMpKTtcbiAgbGV0IHNldCA9IChpZCwgYSwgcykgPT4gTS5zZXQocy5zdG9yZSwgTS5maW5kKHMuc3RvcmUsIHJyZWYoaWQsIHMpKSwgYSk7XG5cbiAgbGV0IG1lcmdlID0gKGYsIGlkLCBpZCcsIHMpID0+XG4gICAgaWdub3JlKE0ubWVyZ2Uocy5zdG9yZSwgZiwgcnJlZihpZCwgcyksIHJyZWYoaWQnLCBzKSkpO1xufTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW5fYm9vbCA9XG4gIHwgTm90O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX3VuX21ldGEgPVxuICB8IFVucXVvdGU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW5faW50ID1cbiAgfCBNaW51cztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF9iaW5fYm9vbCA9XG4gIHwgQW5kXG4gIHwgT3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2ludCA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuXG4gIHwgTGVzc1RoYW5PckVxdWFsXG4gIHwgR3JlYXRlclRoYW5cbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWxcbiAgfCBFcXVhbHNcbiAgfCBOb3RFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2Zsb2F0ID1cbiAgfCBQbHVzXG4gIHwgTWludXNcbiAgfCBUaW1lc1xuICB8IFBvd2VyXG4gIHwgRGl2aWRlXG4gIHwgTGVzc1RoYW5cbiAgfCBMZXNzVGhhbk9yRXF1YWxcbiAgfCBHcmVhdGVyVGhhblxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbFxuICB8IEVxdWFsc1xuICB8IE5vdEVxdWFscztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF9iaW5fc3RyaW5nID1cbiAgfCBDb25jYXRcbiAgfCBFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW4gPVxuICB8IE1ldGEob3BfdW5fbWV0YSlcbiAgfCBJbnQob3BfdW5faW50KVxuICB8IEJvb2wob3BfdW5fYm9vbCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluID1cbiAgfCBJbnQob3BfYmluX2ludClcbiAgfCBGbG9hdChvcF9iaW5fZmxvYXQpXG4gIHwgQm9vbChvcF9iaW5fYm9vbClcbiAgfCBTdHJpbmcob3BfYmluX3N0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBfZGlyZWN0aW9uID1cbiAgfCBGb3J3YXJkXG4gIHwgUmV2ZXJzZTtcblxuLy8gQXJlIHRoZXNlIHNob3cgZnVuY3Rpb24gbmVjZXNzYXJ5P1xubGV0IHNob3dfb3BfdW5fbWV0YTogb3BfdW5fbWV0YSA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBVbnF1b3RlID0+IFwiVW4tcXVvdGF0aW9uXCI7XG5cbmxldCBzaG93X29wX3VuX2Jvb2w6IG9wX3VuX2Jvb2wgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTm90ID0+IFwiQm9vbGVhbiBOZWdhdGlvblwiO1xuXG5sZXQgc2hvd19vcF91bl9pbnQ6IG9wX3VuX2ludCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBNaW51cyA9PiBcIkludGVnZXIgTmVnYXRpb25cIjtcblxubGV0IHNob3dfdW5vcDogb3BfdW4gPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTWV0YShvcCkgPT4gc2hvd19vcF91bl9tZXRhKG9wKVxuICB8IEJvb2wob3ApID0+IHNob3dfb3BfdW5fYm9vbChvcClcbiAgfCBJbnQob3ApID0+IHNob3dfb3BfdW5faW50KG9wKTtcblxubGV0IHNob3dfb3BfYmluX2Jvb2w6IG9wX2Jpbl9ib29sID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEFuZCA9PiBcIkJvb2xlYW4gQ29uanVuY3Rpb25cIlxuICB8IE9yID0+IFwiQm9vbGVhbiBEaXNqdW5jdGlvblwiO1xuXG5sZXQgc2hvd19vcF9iaW5faW50OiBvcF9iaW5faW50ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IFBsdXMgPT4gXCJJbnRlZ2VyIEFkZGl0aW9uXCJcbiAgfCBNaW51cyA9PiBcIkludGVnZXIgU3VidHJhY3Rpb25cIlxuICB8IFRpbWVzID0+IFwiSW50ZWdlciBNdWx0aXBsaWNhdGlvblwiXG4gIHwgUG93ZXIgPT4gXCJJbnRlZ2VyIEV4cG9uZW50aWF0aW9uXCJcbiAgfCBEaXZpZGUgPT4gXCJJbnRlZ2VyIERpdmlzaW9uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIkludGVnZXIgTGVzcyBUaGFuXCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCJJbnRlZ2VyIExlc3MgVGhhbiBvciBFcXVhbFwiXG4gIHwgR3JlYXRlclRoYW4gPT4gXCJJbnRlZ2VyIEdyZWF0ZXIgVGhhblwiXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiSW50ZWdlciBHcmVhdGVyIFRoYW4gb3IgRXF1YWxcIlxuICB8IEVxdWFscyA9PiBcIkludGVnZXIgRXF1YWxpdHlcIlxuICB8IE5vdEVxdWFscyA9PiBcIkludGVnZXIgSW5lcXVhbGl0eVwiO1xuXG5sZXQgc2hvd19vcF9iaW5fZmxvYXQ6IG9wX2Jpbl9mbG9hdCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBQbHVzID0+IFwiRmxvYXQgQWRkaXRpb25cIlxuICB8IE1pbnVzID0+IFwiRmxvYXQgU3VidHJhY3Rpb25cIlxuICB8IFRpbWVzID0+IFwiRmxvYXQgTXVsdGlwbGljYXRpb25cIlxuICB8IFBvd2VyID0+IFwiRmxvYXQgRXhwb25lbnRpYXRpb25cIlxuICB8IERpdmlkZSA9PiBcIkZsb2F0IERpdmlzaW9uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIkZsb2F0IExlc3MgVGhhblwiXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiRmxvYXQgTGVzcyBUaGFuIG9yIEVxdWFsXCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIkZsb2F0IEdyZWF0ZXIgVGhhblwiXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiRmxvYXQgR3JlYXRlciBUaGFuIG9yIEVxdWFsXCJcbiAgfCBFcXVhbHMgPT4gXCJGbG9hdCBFcXVhbGl0eVwiXG4gIHwgTm90RXF1YWxzID0+IFwiRmxvYXQgSW5lcXVhbGl0eVwiO1xuXG5sZXQgc2hvd19vcF9iaW5fc3RyaW5nOiBvcF9iaW5fc3RyaW5nID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBcIlN0cmluZyBDb25jYXRlbmF0aW9uXCJcbiAgfCBFcXVhbHMgPT4gXCJTdHJpbmcgRXF1YWxpdHlcIjtcblxubGV0IHNob3dfYmlub3A6IG9wX2JpbiA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+IHNob3dfb3BfYmluX2ludChvcClcbiAgfCBGbG9hdChvcCkgPT4gc2hvd19vcF9iaW5fZmxvYXQob3ApXG4gIHwgQm9vbChvcCkgPT4gc2hvd19vcF9iaW5fYm9vbChvcClcbiAgfCBTdHJpbmcob3ApID0+IHNob3dfb3BfYmluX3N0cmluZyhvcCk7XG5cbmxldCBib29sX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Jvb2wpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQW5kID0+IFwiJiZcIlxuICB8IE9yID0+IFwifHxcIlxuICB9O1xufTtcblxubGV0IGludF9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9pbnQpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgUGx1cyA9PiBcIitcIlxuICB8IE1pbnVzID0+IFwiLVwiXG4gIHwgVGltZXMgPT4gXCIqXCJcbiAgfCBQb3dlciA9PiBcIioqXCJcbiAgfCBEaXZpZGUgPT4gXCIvXCJcbiAgfCBMZXNzVGhhbiA9PiBcIjxcIlxuICB8IExlc3NUaGFuT3JFcXVhbCA9PiBcIjw9XCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIj5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIj49XCJcbiAgfCBFcXVhbHMgPT4gXCI9PVwiXG4gIHwgTm90RXF1YWxzID0+IFwiIT1cIlxuICB9O1xufTtcblxubGV0IGZsb2F0X29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Zsb2F0KTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IFBsdXMgPT4gXCIrLlwiXG4gIHwgTWludXMgPT4gXCItLlwiXG4gIHwgVGltZXMgPT4gXCIqLlwiXG4gIHwgUG93ZXIgPT4gXCIqKi5cIlxuICB8IERpdmlkZSA9PiBcIi8uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIjwuXCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCI8PS5cIlxuICB8IEdyZWF0ZXJUaGFuID0+IFwiPi5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIj49LlwiXG4gIHwgRXF1YWxzID0+IFwiPT0uXCJcbiAgfCBOb3RFcXVhbHMgPT4gXCIhPS5cIlxuICB9O1xufTtcblxubGV0IHN0cmluZ19vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9zdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQ29uY2F0ID0+IFwiKytcIlxuICB8IEVxdWFscyA9PiBcIiQ9PVwiXG4gIH07XG59O1xuXG5sZXQgYmluX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IEludChvcCkgPT4gaW50X29wX3RvX3N0cmluZyhvcClcbiAgfCBGbG9hdChvcCkgPT4gZmxvYXRfb3BfdG9fc3RyaW5nKG9wKVxuICB8IEJvb2wob3ApID0+IGJvb2xfb3BfdG9fc3RyaW5nKG9wKVxuICB8IFN0cmluZyhvcCkgPT4gc3RyaW5nX29wX3RvX3N0cmluZyhvcClcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG4vKipcbiAqIGhpZ2hlciBwcmVjZWRlbmNlIG1lYW5zIGxvd2VyIGludCByZXByZXNlbnRhdGlvblxuICpcbiAqIFRoZXNlIHByZWNlZGVuY2VzIGFyZSBpbnRlcnNwZXJzZWQgd2l0aCBleGFtcGxlcyB0byBoZWxwIHlvdVxuICogd29yayBvdXQgdGhlIHByZWNlZGVuY2UuIEZvciBlYWNoIGV4YW1wbGUsIGlmIGEgY29uc3RydWN0XG4gKiByZXF1aXJlcyBwYXJlbnRoZXNlcyB3aGVuIHBsYWNlZCBpbiB0aGUgJ19fX19fJyBzcGFjZSwgdGhlblxuICogeW91ciBuZXcgY29uc3RydWN0J3MgcHJlY2VkZW5jZSBpcyBiZWxvdyB0aGUgY29tbWVudCB3aXRoXG4gKiB0aGUgZXhhbXBsZS4gKGkuZS4gaGlnaGVyIGludClcbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gaW50O1xuXG5sZXQgbWF4OiB0ID0gMDtcblxubGV0IHVucXVvdGUgPSAxO1xubGV0IGNhc3QgPSAyO1xubGV0IGFwID0gMztcbi8vIF9fX19fKHgpXG4vLyAtIF9fX19fXG5sZXQgbmVnID0gNDtcbi8vIF9fX19fICoqIDJcbmxldCBwb3dlciA9IDU7XG4vLyAyICoqIF9fX19fXG4vLyA2IC8gX19fX19cbmxldCBtdWx0ID0gNjtcbmxldCBub3RfID0gNjtcbi8vIF9fX19fIC8gNlxuLy8gNCAtIF9fX19fXG5sZXQgcGx1cyA9IDc7XG4vLyBfX19fXyAtIDRcbi8vIF9fX19fIDo6IFtdXG5sZXQgY29ucyA9IDg7XG4vLyAxIDo6IF9fX19fXG4vLyBbMSwyXSBAIF9fX19fXG5sZXQgY29uY2F0ID0gOTtcbi8vIF9fX19fIEAgWzEsMl1cbi8vIHggPT0gX19fX19cbmxldCBlcXMgPSAxMDtcbi8vIF9fX19fID09IHhcbi8vIF9fX19fICYmIHRydWVcbmxldCBhbmRfID0gMTE7XG4vLyB0cnVlICYmIF9fX19fXG4vLyBfX19fXyB8fCBmYWxzZVxubGV0IG9yXyA9IDEyO1xuLy8gZmFsc2UgfHwgX19fX19cbmxldCBhbm4gPSAxMztcbi8vIF9fX19fIDogVFxubGV0IGlmXyA9IDE0O1xubGV0IGZ1bl8gPSAxNTtcbi8vIGZ1biB4IC0+IF9fX19fXG5sZXQgcHJvZCA9IDE2O1xuLy8gYSAsIF9fX19fICwgeFxuLy8gX19fX18gOyAoKVxubGV0IHNlbWkgPSAxNztcbi8vICgpIDsgX19fX19cbmxldCBsZXRfID0gMTg7XG5sZXQgcnVsZV9hcnIgPSAxOTtcbmxldCBydWxlX3ByZSA9IDIwO1xubGV0IHJ1bGVfc2VwID0gMjE7XG5sZXQgY2FzZV8gPSAyMjtcbmxldCBtaW4gPSAyNDtcblxubGV0IGNvbXBhcmUgPSAocDE6IHQsIHAyOiB0KTogaW50ID0+XG4gICgtMSkgKiBJbnQuY29tcGFyZSgocDEgOj4gaW50KSwgKHAyIDo+IGludCkpO1xuLy8gbGV0IG1pbiA9IChwMTogdCwgcDI6IHQpOiB0ID0+IG1heChwMSwgcDIpO1xuXG5sZXQgYXNzb2NpYXRpdml0eV9tYXA6IEludE1hcC50KERpcmVjdGlvbi50KSA9XG4gIFtcbiAgICAobXVsdCwgRGlyZWN0aW9uLkxlZnQpLFxuICAgIChwbHVzLCBMZWZ0KSxcbiAgICAocG93ZXIsIFJpZ2h0KSxcbiAgICAoY29ucywgUmlnaHQpLFxuICAgIChjb25jYXQsIFJpZ2h0KSxcbiAgICAoYW5uLCBMZWZ0KSxcbiAgICAoZXFzLCBMZWZ0KSxcbiAgXVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBJbnRNYXAub2Zfc2VxO1xuXG5sZXQgYXNzb2NpYXRpdml0eSA9IChwOiB0KTogb3B0aW9uKERpcmVjdGlvbi50KSA9PlxuICBJbnRNYXAuZmluZF9vcHQocCwgYXNzb2NpYXRpdml0eV9tYXApO1xuXG5sZXQgb2ZfYmluX29wOiBPcGVyYXRvcnMub3BfYmluID0+IHQgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+XG4gICAgc3dpdGNoIChvcCkge1xuICAgIHwgUGx1cyA9PiBwbHVzXG4gICAgfCBNaW51cyA9PiBwbHVzXG4gICAgfCBUaW1lcyA9PiBtdWx0XG4gICAgfCBQb3dlciA9PiBwb3dlclxuICAgIHwgRGl2aWRlID0+IG11bHRcbiAgICB8IExlc3NUaGFuID0+IGVxc1xuICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW4gPT4gZXFzXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gZXFzXG4gICAgfCBFcXVhbHMgPT4gZXFzXG4gICAgfCBOb3RFcXVhbHMgPT4gZXFzXG4gICAgfVxuICB8IEZsb2F0KG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IFBsdXMgPT4gcGx1c1xuICAgIHwgTWludXMgPT4gcGx1c1xuICAgIHwgVGltZXMgPT4gbXVsdFxuICAgIHwgUG93ZXIgPT4gcG93ZXJcbiAgICB8IERpdmlkZSA9PiBtdWx0XG4gICAgfCBMZXNzVGhhbiA9PiBlcXNcbiAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBlcXNcbiAgICB8IEdyZWF0ZXJUaGFuID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgRXF1YWxzID0+IGVxc1xuICAgIHwgTm90RXF1YWxzID0+IGVxc1xuICAgIH1cbiAgfCBCb29sKG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IEFuZCA9PiBhbmRfXG4gICAgfCBPciA9PiBvcl9cbiAgICB9XG4gIHwgU3RyaW5nKG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IENvbmNhdCA9PiBjb25jYXRcbiAgICB8IEVxdWFscyA9PiBlcXNcbiAgICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBBbnlcbiAgfCBOdWxcbiAgfCBQYXRcbiAgfCBUeXBcbiAgfCBUUGF0XG4gIHwgUnVsXG4gIHwgRXhwO1xuXG5sZXQgcm9vdCA9IEV4cDtcblxubGV0IGFsbCA9IFtBbnksIE51bCwgUGF0LCBUeXAsIFJ1bCwgRXhwLCBUUGF0XTtcblxubGV0IGNvbnNpc3RlbnQgPSAocywgcycpID0+XG4gIHN3aXRjaCAocywgcycpIHtcbiAgfCAoQW55LCBfKVxuICB8IChfLCBBbnkpID0+IHRydWVcbiAgfCAoTnVsLCBfKVxuICB8IChfLCBOdWwpID0+IGZhbHNlXG4gIHwgXyA9PiBzID09IHMnXG4gIH07XG5cbmxldCB0b19zdHJpbmcgPVxuICBmdW5cbiAgfCBBbnkgPT4gXCJBbnlcIlxuICB8IE51bCA9PiBcIk51bFwiXG4gIHwgUGF0ID0+IFwiUGF0XCJcbiAgfCBUUGF0ID0+IFwiVFBhdFwiXG4gIHwgVHlwID0+IFwiVHlwXCJcbiAgfCBSdWwgPT4gXCJSdWxcIlxuICB8IEV4cCA9PiBcIkV4cFwiO1xuXG5sZXQgdG9fc3RyaW5nX3ZlcmJvc2UgPVxuICBmdW5cbiAgfCBBbnkgPT4gXCJhbnlcIlxuICB8IE51bCA9PiBcIm51bGxcIlxuICB8IFBhdCA9PiBcInBhdHRlcm5cIlxuICB8IFRQYXQgPT4gXCJ0eXBlIHBhdHRlcm5cIlxuICB8IFR5cCA9PiBcInR5cGVcIlxuICB8IFJ1bCA9PiBcInJ1bGVcIlxuICB8IEV4cCA9PiBcImV4cHJlc3Npb25cIjtcbiIsIm1vZHVsZSBTaGFwZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ29udmV4XG4gICAgfCBDb25jYXZlKFByZWNlZGVuY2UudCk7XG5cbiAgbGV0IGNvbmNhdmUgPSAofnA9PywgKCkpID0+IHtcbiAgICBsZXQgcCA9XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgTm9uZSA9PiBQcmVjZWRlbmNlLm1pblxuICAgICAgfCBTb21lKHApID0+IHBcbiAgICAgIH07XG4gICAgQ29uY2F2ZShwKTtcbiAgfTtcblxuICBsZXQgZml0cyA9IChsOiB0LCByOiB0KSA9PlxuICAgIHN3aXRjaCAobCwgcikge1xuICAgIHwgKENvbnZleCwgQ29uY2F2ZShfKSlcbiAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IHRydWVcbiAgICB8IChDb252ZXgsIENvbnZleClcbiAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PiBmYWxzZVxuICAgIH07XG5cbiAgbGV0IGZpdHRpbmcgPVxuICAgIGZ1blxuICAgIHwgQ29udmV4ID0+IGNvbmNhdmUoKVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXg7XG5cbiAgbGV0IGZsaXAgPVxuICAgIGZ1blxuICAgIHwgQ29udmV4ID0+IGNvbmNhdmUoKVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXg7XG5cbiAgbGV0IGFic29sdXRlID0gKGQ6IFV0aWwuRGlyZWN0aW9uLnQsIHM6IHQpOiBVdGlsLkRpcmVjdGlvbi50ID0+XG4gICAgLyogVGhlIGRpcmVjdGlvbiBhbiBzLXNoYXBlZCBuaWIgb24gdGhlIGQtaGFuZCBzaWRlIGlzIGZhY2luZyAqL1xuICAgIHN3aXRjaCAocykge1xuICAgIHwgQ29udmV4ID0+IGRcbiAgICB8IENvbmNhdmUoXykgPT4gVXRpbC5EaXJlY3Rpb24udG9nZ2xlKGQpXG4gICAgfTtcblxuICBsZXQgcmVsYXRpdmUgPSAobmliOiBVdGlsLkRpcmVjdGlvbi50LCBzaWRlOiBVdGlsLkRpcmVjdGlvbi50KTogdCA9PlxuICAgIG5pYiA9PSBzaWRlID8gQ29udmV4IDogY29uY2F2ZSgpO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzaGFwZTogU2hhcGUudCxcbiAgc29ydDogU29ydC50LFxufTtcblxubGV0IHNoYXBlID0gbiA9PiBuLnNoYXBlO1xuXG5sZXQgZml0cyA9IChsOiB0LCByOiB0KTogYm9vbCA9PlxuICBsLnNvcnQgPT0gci5zb3J0ICYmIFNoYXBlLmZpdHMobC5zaGFwZSwgci5zaGFwZSk7XG5cbmxldCBmaXR0aW5nID0gKG5pYjogdCk6IHQgPT4gey4uLm5pYiwgc2hhcGU6IFNoYXBlLmZpdHRpbmcobmliLnNoYXBlKX07XG5cbmxldCBmbGlwID0gKG5pYjogdCkgPT4gey4uLm5pYiwgc2hhcGU6IFNoYXBlLmZsaXAobmliLnNoYXBlKX07XG5cbi8vIGxldCB0b2dnbGUgPSAobmliOiB0KSA9PiB7XG4vLyAgIC4uLm5pYixcbi8vICAgb3JpZW50YXRpb246IERpcmVjdGlvbi50b2dnbGUobmliLm9yaWVudGF0aW9uKSxcbi8vIH07XG5cbi8vIGxldCBzb3J0X2NvbnNpc3RlbnQgPSAobmliOiB0LCBuaWInOiB0KSA9PiBuaWIuc29ydCA9PSBuaWInLnNvcnQ7XG5cbi8vIGxldCBvZl9zb3J0ID0gc29ydCA9PiBbXG4vLyAgIHtzb3J0LCBvcmllbnRhdGlvbjogTGVmdH0sXG4vLyAgIHtzb3J0LCBvcmllbnRhdGlvbjogUmlnaHR9LFxuLy8gXTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzaGFwZSA9XG4gIHwgQ29udmV4XG4gIHwgQ29uY2F2ZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgc2hhcGUsXG59O1xuXG5sZXQgaWQgPSBnID0+IGcuaWQ7XG5cbmxldCBzaGFwZXMgPSBnID0+XG4gIHN3aXRjaCAoZy5zaGFwZSkge1xuICB8IENvbnZleCA9PiBOaWIuU2hhcGUuKENvbnZleCwgQ29udmV4KVxuICB8IENvbmNhdmUgPT4gTmliLlNoYXBlLihDb25jYXZlKFByZWNlZGVuY2UubWluKSwgQ29uY2F2ZShQcmVjZWRlbmNlLm1pbikpXG4gIH07XG5cbi8vIGFzc3VtZXMgc2FtZSBzaGFwZSBvbiBib3RoIHNpZGVzXG5sZXQgbWtfZml0c19zaGFwZSA9IChzOiBOaWIuU2hhcGUudCk6IHQgPT4ge1xuICBsZXQgaWQgPSBJZC5taygpO1xuICBsZXQgc2hhcGUgPVxuICAgIHN3aXRjaCAocykge1xuICAgIHwgQ29udmV4ID0+IENvbmNhdmVcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4XG4gICAgfTtcbiAge2lkLCBzaGFwZX07XG59O1xuLy9sZXQgbWtfZml0cyA9ICgobCwgcik6IE5pYnMuc2hhcGVzKTogb3B0aW9uKHQpID0+XG4vLyAgTmliLlNoYXBlLmZpdHMobCwgcikgPyBOb25lIDogU29tZShta19maXRzX3NoYXBlKGwpKTtcblxubGV0IGZpdHNfc2hhcGUgPSAoZzogdCwgczogTmliLlNoYXBlLnQpID0+XG4gIHN3aXRjaCAoZy5zaGFwZSwgcykge1xuICB8IChDb252ZXgsIENvbnZleClcbiAgfCAoQ29uY2F2ZSwgQ29uY2F2ZShfKSkgPT4gZmFsc2VcbiAgfCAoQ29udmV4LCBDb25jYXZlKF8pKVxuICB8IChDb25jYXZlLCBDb252ZXgpID0+IHRydWVcbiAgfTtcblxubGV0IGZpdHMgPSAoZzogdCwgZyc6IHQpID0+XG4gIHN3aXRjaCAoZy5zaGFwZSwgZycuc2hhcGUpIHtcbiAgfCAoQ29udmV4LCBDb252ZXgpXG4gIHwgKENvbmNhdmUsIENvbmNhdmUpID0+IGZhbHNlXG4gIHwgKENvbnZleCwgQ29uY2F2ZSlcbiAgfCAoQ29uY2F2ZSwgQ29udmV4KSA9PiB0cnVlXG4gIH07XG5cbmxldCBtZXJnZSA9IChnczogbGlzdCh0KSk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGdzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0bCkpIHtcbiAgICB8IE5vbmUgPT4gU29tZShoZClcbiAgICB8IFNvbWUoKF8sIGZ0KSkgPT4gaGQuc2hhcGUgPT0gZnQuc2hhcGUgPyBTb21lKGhkKSA6IE5vbmVcbiAgICB9XG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vLyBtYWtlIGFuIGVudW1cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubW9kdWxlIEluZGV4ID0ge1xuICB0eXBlIHQgPSBpbnQ7XG59O1xuXG5sZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aDtcbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmU7XG5sZXQgcm1fbnRoID0gVXRpbC5TdHJpbmdVdGlsLnJlbW92ZV9udGg7XG5sZXQgcm1fbGFzdCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfbGFzdDtcbmxldCBybV9maXJzdCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfZmlyc3Q7XG5sZXQgc3BsaXRfbnRoID0gVXRpbC5TdHJpbmdVdGlsLnNwbGl0X250aDtcbmxldCBpbnNlcnRfbnRoID0gVXRpbC5TdHJpbmdVdGlsLmluc2VydF9udGg7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBBIGxhYmVsIGlzIHRoZSB0ZXh0dWFsIGV4cHJlc3Npb24gb2YgYSBmb3JtJ3MgZGVsaW1pdGVycyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChUb2tlbi50KTtcbmV4Y2VwdGlvbiBFbXB0eV9sYWJlbDtcblxubGV0IGxlbmd0aDogdCA9PiBpbnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IHJldjogdCA9PiB0ID0gTGlzdC5yZXY7XG5cbmxldCBoZF90bCA9IChsYmw6IHQpOiAoVG9rZW4udCwgbGlzdChUb2tlbi50KSkgPT5cbiAgc3dpdGNoIChsYmwpIHtcbiAgfCBbXSA9PiByYWlzZShFbXB0eV9sYWJlbClcbiAgfCBbaGQsIC4uLnRsXSA9PiAoaGQsIHRsKVxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKE5pYi50LCBOaWIudCk7XG5cbltAZGVyaXZpbmcgc2hvd11cbnR5cGUgc2hhcGVzID0gKE5pYi5TaGFwZS50LCBOaWIuU2hhcGUudCk7XG5cbmxldCBmbGlwID0gKChsLCByKTogdCkgPT4gKHIsIGwpO1xuXG5sZXQgb2ZfaG9sZSA9IHNvcnQgPT4gTmliLih7c29ydCwgc2hhcGU6IENvbnZleH0sIHtzb3J0LCBzaGFwZTogQ29udmV4fSk7XG5cbmxldCBmaXR0aW5nID0gKChsLCByKTogdCkgPT4gKE5pYi5maXR0aW5nKGwpLCBOaWIuZml0dGluZyhyKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIG91dDogU29ydC50LFxuICBpbl86IGxpc3QoU29ydC50KSxcbiAgbmliczogTmlicy50LFxufTtcblxubGV0IGZsaXBfbmlicyA9IG0gPT4gey4uLm0sIG5pYnM6IE5pYnMuZmxpcChtLm5pYnMpfTtcblxubGV0IG1rX29wID0gKG91dCwgaW5fKSA9PiB7XG4gIGxldCBuID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChuLCBuKX07XG59O1xubGV0IG1rX3ByZSA9IChwLCBvdXQsIGluXykgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX3Bvc3QgPSAocCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBvdXR9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19iaW4gPSAofmw9PywgfnI9PywgcCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBPcHRpb24udmFsdWUobCwgfmRlZmF1bHQ9b3V0KTtcbiAgbGV0IHIgPSBPcHRpb24udmFsdWUociwgfmRlZmF1bHQ9b3V0KTtcbiAgbGV0IG5pYiA9IHNvcnQgPT4gTmliLntzb3J0LCBzaGFwZTogQ29uY2F2ZShwKX07XG4gIHtvdXQsIGluXywgbmliczogKG5pYihsKSwgbmliKHIpKX07XG59O1xuXG4vLyBmb3JtcyB3aGVyZSB0aXBzIGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBvdXQgc29ydFxubGV0IG1rX3ByZScgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfcG9zdCcgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfYmluJyA9IChwLCBvdXQsIHNvcnRfbCwgaW5fLCBzb3J0X3IpID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5cbmxldCBuaWJzID0gKH5pbmRleD0/LCBtb2xkOiB0KTogTmlicy50ID0+XG4gIHN3aXRjaCAoaW5kZXgpIHtcbiAgfCBOb25lID0+IG1vbGQubmlic1xuICB8IFNvbWUoaSkgPT5cbiAgICBsZXQgKGwsIHIpID0gbW9sZC5uaWJzO1xuICAgIGxldCBpbl8gPSBtb2xkLmluXztcbiAgICBsZXQgbCA9XG4gICAgICBpID09IDAgPyBsIDogTmliLntzaGFwZTogU2hhcGUuY29uY2F2ZSgpLCBzb3J0OiBMaXN0Lm50aChpbl8sIGkgLSAxKX07XG4gICAgbGV0IHIgPVxuICAgICAgaSA9PSBMaXN0Lmxlbmd0aChpbl8pXG4gICAgICAgID8gciA6IE5pYi57c2hhcGU6IFNoYXBlLmNvbmNhdmUoKSwgc29ydDogTGlzdC5udGgoaW5fLCBpKX07XG4gICAgKGwsIHIpO1xuICB9O1xuXG5sZXQgbmliX3NoYXBlcyA9ICh+aW5kZXg9PywgbW9sZDogdCk6IE5pYnMuc2hhcGVzID0+IHtcbiAgbGV0IChuaWJfbCwgbmliX3IpID0gbmlicyh+aW5kZXg/LCBtb2xkKTtcbiAgKG5pYl9sLnNoYXBlLCBuaWJfci5zaGFwZSk7XG59O1xuXG5tb2R1bGUgTWFwID0ge1xuICB0eXBlIG1vbGQgPSB0O1xuICBpbmNsdWRlIElkLk1hcDtcbiAgdHlwZSBub25yZWMgdCA9IElkLk1hcC50KGxpc3QobW9sZCkpO1xufTtcblxubGV0IG9mX2dyb3V0OiAoR3JvdXQudCwgU29ydC50KSA9PiB0ID1cbiAgKGcsIHNvcnQpID0+IHtcbiAgICBuaWJzOlxuICAgICAgLy8gVE9ETyhkKTogcmV2aXNpdCB0aGlzIHdoZW4gcmVmb3JtdWxhdGluZyBtb2xkc1xuICAgICAgc3dpdGNoIChnLnNoYXBlKSB7XG4gICAgICB8IENvbnZleCA9PlxuICAgICAgICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydH07XG4gICAgICAgIChuLCBuKTtcbiAgICAgIHwgQ29uY2F2ZSA9PlxuICAgICAgICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbmNhdmUoUHJlY2VkZW5jZS5taW4pLCBzb3J0fTtcbiAgICAgICAgKG4sIG4pO1xuICAgICAgfSxcbiAgICBvdXQ6IHNvcnQsXG4gICAgaW5fOiBbXSxcbiAgfTtcblxubGV0IG9mX3NlY29uZGFyeSA9IChsOiBOaWIudCkgPT4ge1xuICBuaWJzOiAoTmliLmZsaXAobCksIGwpLFxuICBvdXQ6IGwuc29ydCxcbiAgaW5fOiBbXSxcbn07XG5cbmxldCBmaXRzX3NoYXBlID0gKGQ6IERpcmVjdGlvbi50LCBzOiBOaWIuU2hhcGUudCwgbTogdCk6IGJvb2wgPT4ge1xuICBsZXQgcycgPSBEaXJlY3Rpb24uY2hvb3NlKGQsIG5pYl9zaGFwZXMobSkpO1xuICBOaWIuU2hhcGUuZml0cyhzLCBzJyk7XG59O1xuXG5sZXQgY29uc2lzdGVudF9zaGFwZXMgPSAobXM6IGxpc3QodCkpID0+XG4gIG1zXG4gIHw+IExpc3QubWFwKG5pYl9zaGFwZXMpXG4gIHw+IExpc3Quc3BsaXRcbiAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdFV0aWwuc2luZ2xlX2VsZW0pO1xuXG5sZXQgaXNfaW5maXhfb3AgPSAobW9sZDogdCk6IGJvb2wgPT5cbiAgc3dpdGNoIChtb2xkLm5pYnMsIG1vbGQuaW5fKSB7XG4gIHwgKCh7c2hhcGU6IENvbmNhdmUoXyksIF99LCB7c2hhcGU6IENvbmNhdmUoXyksIF99KSwgW10pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBjaGV2cm9uID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBkOiBVdGlsLkRpcmVjdGlvbi50KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBSaWdodCA9PiBta19wb3N0KHAsIHNvcnQsIFtdKVxuICB8IExlZnQgPT4gbWtfcHJlKHAsIHNvcnQsIFtdKVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gTW9sZDtcbm1vZHVsZSBQID0gUHJlY2VkZW5jZTtcblxuLyogRk9STVxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3ludGFjdGljIGV4dGVudCBvZiB0aGUgbGFuZ3VhZ2U7IHRoZVxuICAgZW50aXJlIFN5bnRheCBtb2R1bGUgaXMgZHJpdmVuIGJ5IHRoZSBiZWxvdyBkZWZpbml0aW9ucy4gQWRkaW5nXG4gICBhIG5ldyBzeW50YWN0aWMgZm9ybSBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YgYWRkaW5nIGEgbmV3IGxpbmUgdG8gZWl0aGVyXG4gICB0aGUgJ2NvbnZleF9tb25vcycgdGFibGUsIGZvciBzaW5nbGUtdG9rZW4gZm9ybXMsIG9yIHRoZSAnZm9ybXMnXG4gICB0YWJsZSwgZm9yIGNvbXBvdW5kIGZvcm1zLlxuICAgVGhlIHdyYXBwaW5nIGZ1bmN0aW9ucyBzZWVuIGluIGJvdGggb2YgdGhvc2UgdGFibGVzIGRldGVybWluZSB0aGVcbiAgIHNoYXBlLCBwcmVjZWRlbmNlLCBhbmQgZXhwYW5zaW9uIGJlaGF2aW9yIG9mIHRoZSBmb3JtLiAqL1xuXG5sZXQgcmVnZXhwID0gKHIsIHMpID0+XG4gIEpzX29mX29jYW1sLlJlZ2V4cC5zdHJpbmdfbWF0Y2goSnNfb2Zfb2NhbWwuUmVnZXhwLnJlZ2V4cChyKSwgcywgMClcbiAgfD4gT3B0aW9uLmlzX3NvbWU7XG5cbi8qIEEgbGFiZWwgaXMgdGhlIHRleHR1YWwgZXhwcmVzc2lvbiBvZiBhIGZvcm0ncyBkZWxpbWl0ZXJzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxhYmVsID0gbGlzdChUb2tlbi50KTtcblxuLyogVGhlIGNvbnN0cnVjdGlvbiBvZiBhIGNvbXBvdW5kIGZvcm1zIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5zZXJ0aW5nXG4gICBvbmUgb2YgaXRzIGRlbGltaXRlcnMgdGhyb3VnaCBhIHByb2Nlc3MgY2FsbGVkIGV4cGFuc2lvbi4gRXhwYW5zaW9uXG4gICBjYW4gZWl0aGVyIG9jY3VyIChJbnN0YW50KWx5IHVwb24gZGVsaW1pdGVyIGNyZWF0aW9uLCBvciBiZSAoRGVsYXllZClcbiAgIHVudGlsIGFmdGVyIGEgdG9rZW4gYm91bmRhcnkgZXZlbnQgaXMgdHJpZ2dlcmVkIChzYXkgYnkgcHJlc3NpbmdcbiAgIHNwYWNlIGFmdGVyIGVudGVyaW5nICdsZXQnKS4gVGhlIChTdGF0aWMpIGNhc2UgaXMgdXNlZCBmb3IgbW9ub3NcbiAgIGFrYSBzaW5nbGUtdG9rZW4gZm9ybXMuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9uX3RpbWUgPVxuICB8IFN0YXRpY1xuICB8IEluc3RhbnRcbiAgfCBEZWxheWVkO1xuXG4vKiBFeHBhbnNpb24gY2FuIGJlIHRyaWdnZXJlZCBieSBlaXRoZXIvYm90aCB0aGUgZmlyc3Qgb3IgbGFzdCB0b2tlblxuICAgb2YgYSBmb3JtLCByZXByZXNlbnRlZCBoZXJlIGJ5IHRoZSBmaXJzdC9sYXN0IGVsZW1lbnRzIG9mIHRoaXMgcGFpci4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9uID0gKGV4cGFuc2lvbl90aW1lLCBleHBhbnNpb25fdGltZSk7XG5cbi8qIEEgbGFiZWwsIGEgbW9sZCwgYW5kIGV4cGFuc2lvbiBiZWhhdmlvciB0b2dldGhlciBkZXRlcm1pbmUgYSBmb3JtLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBsYWJlbCxcbiAgZXhwYW5zaW9uLFxuICBtb2xkOiBNb2xkLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJhZF90b2tlbl9jbHMgPVxuICB8IE90aGVyXG4gIHwgQmFkSW50O1xuXG5sZXQgbWsgPSAoZXhwYW5zaW9uLCBsYWJlbCwgbW9sZCkgPT4ge2xhYmVsLCBtb2xkLCBleHBhbnNpb259O1xuXG4vKiBBYmJyZXZpYXRpb25zIGZvciBleHBhbnNpb24gYmVoYXZpb3JzICovXG5sZXQgc3M6IGV4cGFuc2lvbiA9IChTdGF0aWMsIFN0YXRpYyk7XG5sZXQgaWk6IGV4cGFuc2lvbiA9IChJbnN0YW50LCBJbnN0YW50KTtcbmxldCBpczogZXhwYW5zaW9uID0gKEluc3RhbnQsIFN0YXRpYyk7XG5sZXQgZHM6IGV4cGFuc2lvbiA9IChEZWxheWVkLCBTdGF0aWMpO1xuXG5sZXQgbWtfaW5maXggPSAodDogVG9rZW4udCwgc29ydDogU29ydC50LCBwcmVjKSA9PlxuICBtayhzcywgW3RdLCBta19iaW4ocHJlYywgc29ydCwgW10pKTtcblxubGV0IG1rX251bF9pbmZpeCA9ICh0OiBUb2tlbi50LCBwcmVjKSA9PlxuICBtayhzcywgW3RdLCBta19iaW4ofmw9QW55LCB+cj1BbnksIHByZWMsIEFueSwgW10pKTtcblxuLyogVG9rZW4gUmVjb2duaXRpb24gUHJlZGljYXRlcyAqL1xuXG4vKiBBLiBTZWNvbmRhcnkgTm90YXRpb24gKENvbW1lbnRzLCBXaGl0ZXNwYWNlLCBldGMuKSAgKi9cbmxldCBzcGFjZSA9IFwiIFwiO1xuLyogSEFDSyhhbmRyZXcpOiBVc2luZyDij44gY2hhciB0byByZXByZXNlbnQgbGluZWJyZWFrIHRvIGF2b2lkIHJlZ2V4cFxuICAgaXNzdWVzIHdpdGggdXNpbmcgXFxuLiBTb21lb25lIHdobyB1bmRlcnN0YW5kcyByZWdleHBzIGJldHRlclxuICAgc2hvdWxkIGZpeCB0aGlzLiAqL1xubGV0IGxpbmVicmVhayA9IFwi4o+OXCI7XG5sZXQgY29tbWVudF9yZWdleHAgPSBcIl4jW14j4o+OXSojJFwiOyAvKiBNdWx0aWxpbmUgY29tbWVudHMgbm90IHN1cHBvcnRlZCAqL1xubGV0IGlzX2NvbW1lbnQgPSB0ID0+IHJlZ2V4cChjb21tZW50X3JlZ2V4cCwgdCkgfHwgdCA9PSBcIiNcIjtcbmxldCBpc19jb21tZW50X2RlbGltID0gdCA9PiB0ID09IFwiI1wiO1xubGV0IGlzX3NlY29uZGFyeSA9IHQgPT5cbiAgTGlzdC5tZW0odCwgW3NwYWNlLCBsaW5lYnJlYWtdKSB8fCByZWdleHAoY29tbWVudF9yZWdleHAsIHQpO1xuXG4vKiBTVFJJTkdTOiBzcGVjaWFsLWNhc2Ugc3ludGF4ICovXG5cbi8qIGlzX3N0cmluZzogbGFzdCBjbGF1c2UgaXMgYSBzb21ld2hhdCBoYWNreSB3YXkgb2YgbWFraW5nIHN1cmVcbiAgIHRoZXJlIGFyZSBhdCBtb3N0IHR3byBxdW90ZXMsIGluIG9yZGVyIHRvIHByZXZlbnQgbWVyZ2VzICovXG5sZXQgaXNfc3RyaW5nID0gdCA9PlxuICByZWdleHAoXCJeXFxcIlte4o+OXSpcXFwiJFwiLCB0KVxuICAmJiBMaXN0Lmxlbmd0aChTdHJpbmcuc3BsaXRfb25fY2hhcignXCInLCB0KSkgPCA0O1xubGV0IHN0cmluZ19kZWxpbSA9IFwiXFxcIlwiO1xubGV0IGVtcHR5X3N0cmluZyA9IHN0cmluZ19kZWxpbSArKyBzdHJpbmdfZGVsaW07XG5sZXQgaXNfc3RyaW5nX2RlbGltID0gKD09KShzdHJpbmdfZGVsaW0pO1xubGV0IHN0cmlwX3F1b3RlcyA9IHMgPT5cbiAgaWYgKFN0cmluZy5sZW5ndGgocykgPCAyKSB7XG4gICAgcztcbiAgfSBlbHNlIGlmIChTdHJpbmcuc3ViKHMsIDAsIDEpICE9IFwiXFxcIlwiXG4gICAgICAgICAgICAgfHwgU3RyaW5nLnN1YihzLCBTdHJpbmcubGVuZ3RoKHMpIC0gMSwgMSkgIT0gXCJcXFwiXCIpIHtcbiAgICBzO1xuICB9IGVsc2Uge1xuICAgIFN0cmluZy5zdWIocywgMSwgU3RyaW5nLmxlbmd0aChzKSAtIDIpO1xuICB9O1xubGV0IHN0cmluZ19xdW90ZSA9IHMgPT4gXCJcXFwiXCIgKysgcyArKyBcIlxcXCJcIjtcblxubGV0IGtleXdvcmRzID0gW1xuICBcImZ1blwiLFxuICBcImxldFwiLFxuICBcImluXCIsXG4gIFwidHlwZVwiLFxuICBcImNhc2VcIixcbiAgXCJ0ZXN0XCIsXG4gIFwiaWZcIixcbiAgXCJ0aGVuXCIsXG4gIFwiZWxzZVwiLFxuXTtcbmxldCByZXNlcnZlZF9rZXl3b3JkcyA9IFtcIm9mXCIsIFwid2hlblwiLCBcIndpdGhcIiwgXCJzd2l0Y2hcIiwgXCJtYXRjaFwiXTtcbmxldCBpc19rZXl3b3JkID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBrZXl3b3JkcykgKysgXCIpJFwiKTtcbmxldCBpc19yZXNlcnZlZF9rZXl3b3JkID1cbiAgcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCByZXNlcnZlZF9rZXl3b3JkcykgKysgXCIpJFwiKTtcblxuLyogUG90ZW50aWFsIHRva2VuczogVGhlc2UgYXJlIGZhbGx0aHJvdWdoIGNsYXNzZXMgd2hpY2ggZGV0ZXJtaW5lXG4gKiB0aGUgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgYSBjaGFyYWN0ZXIgaW4gY29udGFjdCB3aXRoIGEgdG9rZW4gKi9cbmxldCBpc19wb3RlbnRpYWxfb3BlcmFuZCA9IHJlZ2V4cChcIl5bYS16QS1aMC05XydcXFxcLj9dKyRcIik7XG4vKiBBbnl0aGluZyBlbHNlIGlzIGNvbnNpZGVyZWQgYSBwb3RlbnRpYWwgb3BlcmF0b3IsIGFzIGxvbmdcbiAqICBhcyBpdCBkb2VzIG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNlLCBsaW5lYnJlYWtzLCBjb21tZW50XG4gKiAgZGVsaW1pdGVycywgc3RyaW5nIGRlbGltaXRlcnMsIG9yIHRoZSBpbnN0YW50IGV4cGFuZGluZyBwYWlyZWRcbiAqICBkZWxpbWl0ZXJzOiAoKVtdfCAqL1xubGV0IGlzX3BvdGVudGlhbF9vcGVyYXRvciA9IHJlZ2V4cChcIl5bXmEtekEtWjAtOV8nP1xcXCIj4o+OXFxcXHNcXFxcW1xcXFxdXFxcXChcXFxcKV0rJFwiKTtcbmxldCBpc19wb3RlbnRpYWxfdG9rZW4gPSB0ID0+XG4gIGlzX3BvdGVudGlhbF9vcGVyYW5kKHQpXG4gIHx8IGlzX3BvdGVudGlhbF9vcGVyYXRvcih0KVxuICB8fCBpc19zdHJpbmcodClcbiAgfHwgaXNfY29tbWVudCh0KTtcblxubGV0IGlzX2FyYml0YXJ5X2ludCA9IHJlZ2V4cChcIl4tP1xcXFxkK1swLTlfXSokXCIpO1xubGV0IGlzX2FyYml0YXJ5X2Zsb2F0ID0geCA9PlxuICB4ICE9IFwiLlwiICYmIHggIT0gXCItXCIgJiYgcmVnZXhwKFwiXi0/WzAtOV0qXFxcXC4/WzAtOV0qKChlfEUpLT9bMC05XSopPyRcIiwgeCk7XG5sZXQgaXNfaW50ID0gc3RyID0+IGlzX2FyYml0YXJ5X2ludChzdHIpICYmIGludF9vZl9zdHJpbmdfb3B0KHN0cikgIT0gTm9uZTtcbi8qIE5PVEU6IFRoZSBpc19hcmJpdGFyeV9pbnQgY2hlY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnRcbiAgIG1pbnVzZXMgZnJvbSBiZWluZyBwYXJzZWQgYXMgcGFydCBvZiB0aGUgaW50IHRva2VuLiAqL1xuXG5sZXQgaXNfYmFkX2ludCA9IHN0ciA9PiBpc19hcmJpdGFyeV9pbnQoc3RyKSAmJiAhaXNfaW50KHN0cik7XG5cbi8qIE5PVEU6IEFzIHdlbGwgYXMgbWFraW5nIGlzX2Zsb2F0ICBkaXNqb2ludCBmcm9tIGlzX2ludCxcbiAgIHRoZSBpc19hcmJpdGFyeV9pbnQgIGFsc28gcHJldmVudHMgaW50cyBvdmVyIGludF9tYXggZnJvbSBiZWluZ1xuICAgY2FzdCBhcyBmbG9hdHMuIFRoZSBpc19hcmJpdGFyeV9mbG9hdCBjaGVjayBpcyBuZWNlc3NhcnkgdG8gcHJldmVudFxuICAgbWludXNlcyBmcm9tIGJlaW5nIHBhcnNlZCBhcyBwYXJ0IG9mIHRoZSBmbG9hdCB0b2tlbi4gKi9cbmxldCBpc19mbG9hdCA9IHN0ciA9PlxuICAhaXNfYXJiaXRhcnlfaW50KHN0cilcbiAgJiYgaXNfYXJiaXRhcnlfZmxvYXQoc3RyKVxuICAmJiBmbG9hdF9vZl9zdHJpbmdfb3B0KHN0cikgIT0gTm9uZTtcbmxldCBpc19iYWRfZmxvYXQgPSBzdHIgPT4gaXNfYXJiaXRhcnlfZmxvYXQoc3RyKSAmJiAhaXNfZmxvYXQoc3RyKTtcbmxldCBib29scyA9IFtcInRydWVcIiwgXCJmYWxzZVwiXTtcbmxldCBpc19ib29sID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBib29scykgKysgXCIpJFwiKTtcblxubGV0IGlzX3ZhciA9IHN0ciA9PlxuICAhaXNfYm9vbChzdHIpXG4gICYmIHN0ciAhPSBcIl9cIlxuICAvLyYmICFpc19rZXl3b3JkKHN0cilcbiAgLy8mJiAhaXNfcmVzZXJ2ZWQoc3RyKVxuICAmJiByZWdleHAoXG4gICAgICAge3woXlthLXpfXVtBLVphLXowLTlfJ10qJCl8KF5bQS1aXVtBLVphLXowLTlfJ10qXFwuW2Etel1bQS1aYS16MC05XyddKiQpfH0sXG4gICAgICAgc3RyLFxuICAgICApO1xubGV0IGlzX2NhcGl0YWxpemVkX25hbWUgPSByZWdleHAoXCJeW0EtWl1bQS1aYS16MC05X10qJFwiKTtcbmxldCBpc19jdHIgPSBpc19jYXBpdGFsaXplZF9uYW1lO1xubGV0IGJhc2VfdHlwcyA9IFtcIlN0cmluZ1wiLCBcIkludFwiLCBcIkZsb2F0XCIsIFwiQm9vbFwiXTtcbmxldCBpc19iYXNlX3R5cCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgYmFzZV90eXBzKSArKyBcIikkXCIpO1xubGV0IGlzX3R5cF92YXIgPSBzdHIgPT4gaXNfdmFyKHN0cikgfHwgaXNfY2FwaXRhbGl6ZWRfbmFtZShzdHIpO1xubGV0IHdpbGQgPSBcIl9cIjtcbmxldCBpc193aWxkID0gcmVnZXhwKFwiXlwiICsrIHdpbGQgKysgXCIkXCIpO1xuXG4vKiBMaXN0IGxpdGVyYWxzICovXG5sZXQgbGlzdF9zdGFydCA9IFwiW1wiO1xubGV0IGxpc3RfZW5kID0gXCJdXCI7XG5sZXQgbGlzdGxpdF9sYmwgPSBbbGlzdF9zdGFydCwgbGlzdF9lbmRdO1xubGV0IGVtcHR5X2xpc3QgPSBsaXN0X3N0YXJ0ICsrIGxpc3RfZW5kO1xubGV0IGlzX2VtcHR5X2xpc3QgPSAoPT0pKGVtcHR5X2xpc3QpO1xuXG4vKiBUdXBsZXMgKi9cbmxldCB0dXBsZV9zdGFydCA9IFwiKFwiO1xubGV0IHR1cGxlX2VuZCA9IFwiKVwiO1xubGV0IHR1cGxlX2xibCA9IFt0dXBsZV9zdGFydCwgdHVwbGVfZW5kXTtcbmxldCBlbXB0eV90dXBsZSA9IHR1cGxlX3N0YXJ0ICsrIHR1cGxlX2VuZDtcbmxldCBpc19lbXB0eV90dXBsZSA9ICg9PSkoZW1wdHlfdHVwbGUpO1xuXG4vKiBUaGVzZSBmdW5jdGlvbnMgZGV0ZXJtaW5lIHdoaWNoIGZvcm1zIGNhbiBzd2l0Y2ggYmFjayBhbmQgZm9ydGggYmV0d2VlblxuICAgbW9ubyBhbmQgZHVvdGlsZSBmb3JtcywgbGlrZSBsaXN0IGxpdGVyYWxzIGFuZCB0dXBsZXMgc3dpdGNoaW5nIHRvL2Zyb21cbiAgIHRoZSBlbXB0eSBsaXN0IGFuZCBlbXB0eSB0dXBsZS4gVGVjaG5pY2FsbHkgdGhpcyBzaG91bGQgYmUgZGVyaXZhYmxlIGZyb21cbiAgIHRoZSBsYW5ndWFnZSBkYXRhOyBsZWF2aW5nIHRoYXQgZm9yIGEgZnV0dXJlIHJlZmFjdG9yLiAqL1xubGV0IGR1b3NwbGl0cyA9ICh0OiBUb2tlbi50KTogTGFiZWwudCA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBpc19lbXB0eV9saXN0KHQpID0+IGxpc3RsaXRfbGJsXG4gIHwgXyB3aGVuIGlzX2VtcHR5X3R1cGxlKHQpID0+IHR1cGxlX2xibFxuICB8IF8gPT4gW11cbiAgfTtcblxubGV0IGR1b21lcmdlcyA9IChsYmw6IExhYmVsLnQpOiBvcHRpb24oTGFiZWwudCkgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gbGJsID09IGxpc3RsaXRfbGJsID0+IFNvbWUoW2VtcHR5X2xpc3RdKVxuICB8IF8gd2hlbiBsYmwgPT0gdHVwbGVfbGJsID0+IFNvbWUoW2VtcHR5X3R1cGxlXSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxuLy9UT0RPKGFuZHJldyk6IHJlZmFjdG9yIGF0b21pY19mb3JtcyB0byBzZXBlcmF0ZSB0aGVzZSBvdXRcbmxldCBjb25zdF9tb25vX2RlbGltcyA9XG4gIGJhc2VfdHlwcyBAIGJvb2xzIEAgW3dpbGQsIGVtcHR5X2xpc3QsIGVtcHR5X3R1cGxlLCBlbXB0eV9zdHJpbmddO1xuXG5sZXQgZXhwbGljaXRfaG9sZSA9IFwiP1wiO1xubGV0IGlzX2V4cGxpY2l0X2hvbGUgPSB0ID0+IHQgPT0gZXhwbGljaXRfaG9sZTtcbmxldCBiYWRfdG9rZW5fY2xzOiBzdHJpbmcgPT4gYmFkX3Rva2VuX2NscyA9XG4gIHQgPT5cbiAgICBzd2l0Y2ggKCkge1xuICAgIHwgXyB3aGVuIGlzX2JhZF9pbnQodCkgPT4gQmFkSW50XG4gICAgfCBfID0+IE90aGVyXG4gICAgfTtcblxuLyogQi4gT3BlcmFuZHM6XG4gICBPcmRlciBpbiB0aGlzIGxpc3QgZGV0ZXJtaW5lcyByZWxhdGl2ZSByZW1vbGRpbmdcbiAgIHByaW9yaXR5IGZvciBmb3JtcyB3aXRoIG92ZXJsYXBwaW5nIHJlZ2V4cHMgKi9cbmxldCBhdG9taWNfZm9ybXM6IGxpc3QoKHN0cmluZywgKHN0cmluZyA9PiBib29sLCBsaXN0KE1vbGQudCkpKSkgPSBbXG4gIChcInZhclwiLCAoaXNfdmFyLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXG4gICAgXCJleHBsaWNpdF9ob2xlXCIsXG4gICAgKFxuICAgICAgaXNfZXhwbGljaXRfaG9sZSxcbiAgICAgIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSksIG1rX29wKFR5cCwgW10pLCBta19vcChUUGF0LCBbXSldLFxuICAgICksXG4gICksXG4gIChcIndpbGRcIiwgKGlzX3dpbGQsIFtta19vcChQYXQsIFtdKV0pKSxcbiAgKFwic3RyaW5nXCIsIChpc19zdHJpbmcsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImludF9saXRcIiwgKGlzX2ludCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiZmxvYXRfbGl0XCIsIChpc19mbG9hdCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiYm9vbF9saXRcIiwgKGlzX2Jvb2wsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImVtcHR5X2xpc3RcIiwgKGlzX2VtcHR5X2xpc3QsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcbiAgICBcImVtcHR5X3R1cGxlXCIsXG4gICAgKGlzX2VtcHR5X3R1cGxlLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pLCBta19vcChUeXAsIFtdKV0pLFxuICApLFxuICAoXCJkZWZlcnJhbFwiLCAoaXNfd2lsZCwgW21rX29wKEV4cCwgW10pXSkpLFxuICAoXCJ0eV92YXJcIiwgKGlzX3R5cF92YXIsIFtta19vcChUeXAsIFtdKV0pKSxcbiAgKFwidHlfdmFyX3BcIiwgKGlzX3R5cF92YXIsIFtta19vcChUUGF0LCBbXSldKSksXG4gIChcImN0clwiLCAoaXNfY3RyLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJ0eXBlXCIsIChpc19iYXNlX3R5cCwgW21rX29wKFR5cCwgW10pXSkpLFxuXTtcblxuLyogQy4gQ29tcG91bmQgRm9ybXM6XG4gICBPcmRlciBpbiB0aGlzIGxpc3QgZGV0ZXJtaW5lcyByZWxhdGl2ZSByZW1vbGRpbmdcbiAgIHByaW9yaXR5IGZvciBmb3JtcyB3aGljaCBzaGFyZSB0aGUgc2FtZSBsYWJlbHMgKi9cblxubGV0IGZvcm1zOiBsaXN0KChzdHJpbmcsIHQpKSA9IFtcbiAgLy8gSU5GSVggT1BFUkFUT1JTXG4gIChcInR5cF9wbHVzXCIsIG1rX2luZml4KFwiK1wiLCBUeXAsIFAub3JfKSksXG4gIChcInR5cGUtYXJyb3dcIiwgbWtfaW5maXgoXCItPlwiLCBUeXAsIFAucGx1cykpLFxuICAoXCJjZWxsLWpvaW5cIiwgbWtfaW5maXgoXCI7XCIsIEV4cCwgUC5zZW1pKSksXG4gIChcInBsdXNcIiwgbWtfaW5maXgoXCIrXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcIm1pbnVzXCIsIG1rX2luZml4KFwiLVwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJ0aW1lc1wiLCBta19pbmZpeChcIipcIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwicG93ZXJcIiwgbWtfaW5maXgoXCIqKlwiLCBFeHAsIFAucG93ZXIpKSxcbiAgKFwiZnBvd2VyXCIsIG1rX2luZml4KFwiKiouXCIsIEV4cCwgUC5wb3dlcikpLFxuICAoXCJkaXZpZGVcIiwgbWtfaW5maXgoXCIvXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcImVxdWFsc1wiLCBta19pbmZpeChcIj09XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwic3RyaW5nX2VxdWFsc1wiLCBta19pbmZpeChcIiQ9PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcInN0cmluZ19jb25jYXRcIiwgbWtfaW5maXgoXCIrK1wiLCBFeHAsIFAucGx1cykpLFxuICAoXCJsdFwiLCBta19pbmZpeChcIjxcIiwgRXhwLCBQLmVxcykpLFxuICAoXCJndFwiLCBta19pbmZpeChcIj5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJub3RfZXF1YWxzXCIsIG1rX2luZml4KFwiIT1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJndGVcIiwgbWtfaW5maXgoXCI+PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcImx0ZVwiLCBta19pbmZpeChcIjw9XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZnBsdXNcIiwgbWtfaW5maXgoXCIrLlwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJmbWludXNcIiwgbWtfaW5maXgoXCItLlwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJmdGltZXNcIiwgbWtfaW5maXgoXCIqLlwiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJmZGl2aWRlXCIsIG1rX2luZml4KFwiLy5cIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwiZmVxdWFsc1wiLCBta19pbmZpeChcIj09LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZsdFwiLCBta19pbmZpeChcIjwuXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmd0XCIsIG1rX2luZml4KFwiPi5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbm90X2VxdWFsc1wiLCBta19pbmZpeChcIiE9LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZndGVcIiwgbWtfaW5maXgoXCI+PS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbHRlXCIsIG1rX2luZml4KFwiPD0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwibG9naWNhbF9hbmRcIiwgbWtfaW5maXgoXCImJlwiLCBFeHAsIFAuYW5kXykpLFxuICAoXCJsb2dpY2FsX29yX2xlZ2FjeVwiLCBta19pbmZpeChcIlxcXFwvXCIsIEV4cCwgUC5vcl8pKSxcbiAgKFwibG9naWNhbF9vclwiLCBta19pbmZpeChcInx8XCIsIEV4cCwgUC5vcl8pKSxcbiAgKFwibGlzdF9jb25jYXRcIiwgbWtfaW5maXgoXCJAXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcImNvbnNfZXhwXCIsIG1rX2luZml4KFwiOjpcIiwgRXhwLCBQLmNvbnMpKSxcbiAgKFwiY29uc19wYXRcIiwgbWtfaW5maXgoXCI6OlwiLCBQYXQsIFAuY29ucykpLFxuICAoXCJ0eXBlYW5uXCIsIG1rKHNzLCBbXCI6XCJdLCBta19iaW4nKFAuYW5uLCBQYXQsIFBhdCwgW10sIFR5cCkpKSxcbiAgLy8gVU5BUlkgUFJFRklYIE9QRVJBVE9SU1xuICAoXCJub3RcIiwgbWsoaWksIFtcIiFcIl0sIG1rX3ByZShQLm5vdF8sIEV4cCwgW10pKSksIC8vVE9ETzogcHJlY2VkZW5jZVxuICAoXCJ0eXBfc3VtX3NpbmdsZVwiLCBtayhzcywgW1wiK1wiXSwgbWtfcHJlKFAub3JfLCBUeXAsIFtdKSkpLFxuICAoXCJ1bmFyeV9taW51c1wiLCBtayhzcywgW1wiLVwiXSwgbWtfcHJlKFAubmVnLCBFeHAsIFtdKSkpLFxuICAoXCJ1bnF1b3RlXCIsIG1rKHNzLCBbXCIkXCJdLCBta19wcmUoUC51bnF1b3RlLCBFeHAsIFtdKSkpLFxuICAvLyBOLUFSWSBPUFMgKG9uIHRoZSBzZW1hbnRpY3MgbGV2ZWwpXG4gIChcImNvbW1hX2V4cFwiLCBta19pbmZpeChcIixcIiwgRXhwLCBQLnByb2QpKSxcbiAgKFwiY29tbWFfcGF0XCIsIG1rX2luZml4KFwiLFwiLCBQYXQsIFAucHJvZCkpLFxuICAoXCJjb21tYV90eXBcIiwgbWtfaW5maXgoXCIsXCIsIFR5cCwgUC5wcm9kKSksXG4gIC8vIFBBSVJFRCBERUxJTUlURVJTOlxuICAoXCJsaXN0X2xpdF9leHBcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChFeHAsIFtFeHBdKSkpLFxuICAoXCJsaXN0X2xpdF9wYXRcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChQYXQsIFtQYXRdKSkpLFxuICAoXCJsaXN0X3R5cFwiLCBtayhpaSwgW1wiW1wiLCBcIl1cIl0sIG1rX29wKFR5cCwgW1R5cF0pKSksXG4gIC8vTk9URShhbmRyZXcpOiBwYXJlbnMgYmVpbmcgYmVsb3cgYXBzIGlzIGxvYWQtYmVhcmluZywgdW5mb3J0dW5hdGVseVxuICAoXCJwYXJlbnNfZXhwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwicGFyZW5zX3BhdFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX29wKFBhdCwgW1BhdF0pKSksXG4gIChcInBhcmVuc190eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19vcChUeXAsIFtUeXBdKSkpLFxuICAoXCJhcF9leHBfZW1wdHlcIiwgbWsoaWksIFtcIigpXCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW10pKSksXG4gIChcImFwX2V4cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX3Bvc3QoUC5hcCwgRXhwLCBbRXhwXSkpKSxcbiAgKFwiYXBfcGF0XCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfcG9zdChQLmFwLCBQYXQsIFtQYXRdKSkpLFxuICAoXCJhcF90eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19wb3N0KFAuYXAsIFR5cCwgW1R5cF0pKSksXG4gIChcbiAgICBcImFwX2V4cF90eXBcIixcbiAgICBtaygoSW5zdGFudCwgU3RhdGljKSwgW1wiQDxcIiwgXCI+XCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW1R5cF0pKSxcbiAgKSxcbiAgKFwiYXRfc2lnblwiLCBta19udWxfaW5maXgoXCJAXCIsIFAuZXFzKSksIC8vIEhBQ0s6IFNVQlNUUklORyBSRVFcbiAgKFwiY2FzZVwiLCBtayhkcywgW1wiY2FzZVwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbUnVsXSkpKSxcbiAgKFwidGVzdFwiLCBtayhkcywgW1widGVzdFwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwiZnVuX1wiLCBtayhkcywgW1wiZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcImZpeFwiLCBtayhkcywgW1wiZml4XCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcInR5cGZ1blwiLCBtayhkcywgW1widHlwZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1RQYXRdKSkpLFxuICAoXCJmb3JhbGxcIiwgbWsoZHMsIFtcImZvcmFsbFwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBUeXAsIFtUUGF0XSkpKSxcbiAgKFwicmVjXCIsIG1rKGRzLCBbXCJyZWNcIiwgXCItPlwiXSwgbWtfcHJlKFAuZnVuXywgVHlwLCBbVFBhdF0pKSksXG4gIChcbiAgICBcInJ1bGVcIixcbiAgICBtayhkcywgW1wifFwiLCBcIj0+XCJdLCBta19iaW4nKFAucnVsZV9zZXAsIFJ1bCwgRXhwLCBbUGF0XSwgRXhwKSksXG4gICksXG4gIChcInBpcGVsaW5lXCIsIG1rX2luZml4KFwifD5cIiwgRXhwLCBQLmVxcykpLCAvLyBpbiBPQ2FtbCwgcGlwZWxpbmUgcHJlY2VkZW5jZSBpcyBpbiBzYW1lIGNsYXNzIGFzICc9JywgJzwnLCBldGMuXG4gIC8vIERPVUJMRSBERUxJTUlURVJTXG4gIChcImZpbHRlcl9oaWRlXCIsIG1rKGRzLCBbXCJoaWRlXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9ldmFsXCIsIG1rKGRzLCBbXCJldmFsXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9wYXVzZVwiLCBtayhkcywgW1wicGF1c2VcIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbRXhwXSkpKSxcbiAgKFwiZmlsdGVyX2RlYnVnXCIsIG1rKGRzLCBbXCJkZWJ1Z1wiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAvLyBUUklQTEUgREVMSU1JVEVSU1xuICAoXCJsZXRfXCIsIG1rKGRzLCBbXCJsZXRcIiwgXCI9XCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW1BhdCwgRXhwXSkpKSxcbiAgKFxuICAgIFwidHlwZV9hbGlhc1wiLFxuICAgIG1rKGRzLCBbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtUUGF0LCBUeXBdKSksXG4gICksXG4gIChcImlmX1wiLCBtayhkcywgW1wiaWZcIiwgXCJ0aGVuXCIsIFwiZWxzZVwiXSwgbWtfcHJlKFAuaWZfLCBFeHAsIFtFeHAsIEV4cF0pKSksXG5dO1xuXG5sZXQgZ2V0OiBTdHJpbmcudCA9PiB0ID1cbiAgbmFtZSA9PiBVdGlsLkxpc3RVdGlsLmFzc29jX2VycihuYW1lLCBmb3JtcywgXCJGb3Jtcy5nZXQgOiBcIiArKyBuYW1lKTtcblxubGV0IGRlbGltczogbGlzdChUb2tlbi50KSA9XG4gIGZvcm1zXG4gIHw+IExpc3QuZm9sZF9sZWZ0KChhY2MsIChfLCB7bGFiZWwsIF99OiB0KSkgPT4ge2xhYmVsIEAgYWNjfSwgW10pXG4gIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG5sZXQgYXRvbWljX21vbGRzOiBUb2tlbi50ID0+IGxpc3QoTW9sZC50KSA9XG4gIHMgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIChfLCAodGVzdCwgbW9sZHMpKSkgPT4gdGVzdChzKSA/IG1vbGRzIEAgYWNjIDogYWNjLFxuICAgICAgW10sXG4gICAgICBhdG9taWNfZm9ybXMsXG4gICAgKTtcblxubGV0IGlzX2F0b21pYyA9IHQgPT4gYXRvbWljX21vbGRzKHQpICE9IFtdO1xuXG5sZXQgaXNfZGVsaW0gPSB0ID0+IExpc3QubWVtKHQsIGRlbGltcyk7XG5cbmxldCBpc192YWxpZF90b2tlbiA9IHQgPT4gaXNfYXRvbWljKHQpIHx8IGlzX3NlY29uZGFyeSh0KSB8fCBpc19kZWxpbSh0KTtcblxubGV0IG1rX2F0b21pYyA9IChzb3J0OiBTb3J0LnQsIHQ6IFRva2VuLnQpID0+IHtcbiAgYXNzZXJ0KGlzX2F0b21pYyh0KSk7XG4gIG1rKHNzLCBbdF0sIE1vbGQuKG1rX29wKHNvcnQsIFtdKSkpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2xzID1cbiAgfCBXaGl0ZXNwYWNlXG4gIHwgQ29tbWVudDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWNvbmRhcnlfY29udGVudCA9XG4gIHwgV2hpdGVzcGFjZShzdHJpbmcpXG4gIHwgQ29tbWVudChzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBjb250ZW50OiBzZWNvbmRhcnlfY29udGVudCxcbn07XG5cbmxldCBjbHNfb2YgPSAoczogdCk6IGNscyA9PlxuICBzd2l0Y2ggKHMuY29udGVudCkge1xuICB8IFdoaXRlc3BhY2UoXykgPT4gV2hpdGVzcGFjZVxuICB8IENvbW1lbnQoXykgPT4gQ29tbWVudFxuICB9O1xuXG5sZXQgbWtfc3BhY2UgPSBpZCA9PiB7Y29udGVudDogV2hpdGVzcGFjZShGb3JtLnNwYWNlKSwgaWR9O1xuXG5sZXQgbWtfbmV3bGluZSA9IGlkID0+IHtjb250ZW50OiBXaGl0ZXNwYWNlKFwiXFxuXCIpLCBpZH07XG5cbmxldCBjb25zdHJ1Y3RfY29tbWVudCA9IGNvbnRlbnQgPT5cbiAgaWYgKFN0cmluZy5lcXVhbChjb250ZW50LCBcIiNcIikpIHtcbiAgICBDb21tZW50KFwiIyNcIik7XG4gIH0gZWxzZSB7XG4gICAgQ29tbWVudChjb250ZW50KTtcbiAgfTtcblxubGV0IGlzX3NwYWNlOiB0ID0+IGJvb2wgPVxuICB3ID0+XG4gICAgc3dpdGNoICh3LmNvbnRlbnQpIHtcbiAgICB8IFdoaXRlc3BhY2UocykgPT4gcyA9PSBGb3JtLnNwYWNlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2xpbmVicmVhazogdCA9PiBib29sID1cbiAgdyA9PlxuICAgIHN3aXRjaCAody5jb250ZW50KSB7XG4gICAgfCBXaGl0ZXNwYWNlKHMpID0+IHMgPT0gRm9ybS5saW5lYnJlYWtcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG5sZXQgY29udGVudF9pc19jb21tZW50OiBzZWNvbmRhcnlfY29udGVudCA9PiBib29sID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2NvbW1lbnQ6IHQgPT4gYm9vbCA9XG4gIHcgPT5cbiAgICBzd2l0Y2ggKHcuY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxuLy8gUmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBXaGl0ZXNwYWNlXG5sZXQgZ2V0X3N0cmluZzogc2Vjb25kYXJ5X2NvbnRlbnQgPT4gc3RyaW5nID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChzKVxuICAgIHwgV2hpdGVzcGFjZShzKSA9PiBzXG4gICAgfTtcblxubGV0IGlkID0gdyA9PiB3LmlkO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWdtZW50ID0gbGlzdChwaWVjZSlcbmFuZCBwaWVjZSA9XG4gIHwgVGlsZSh0aWxlKVxuICB8IEdyb3V0KEdyb3V0LnQpXG4gIHwgU2Vjb25kYXJ5KFNlY29uZGFyeS50KVxuYW5kIHRpbGUgPSB7XG4gIC8vIGludmFyaWFudHM6XG4gIC8vIC0gbGVuZ3RoKG1vbGQuaW5fKSArIDEgPT0gbGVuZ3RoKGxhYmVsKVxuICAvLyAtIGxlbmd0aChzaGFyZHMpIDw9IGxlbmd0aChsYWJlbClcbiAgLy8gLSBsZW5ndGgoc2hhcmRzKSA9PSBsZW5ndGgoY2hpbGRyZW4pICsgMVxuICAvLyAtIHNvcnQoc2hhcmRzKSA9PSBzaGFyZHNcbiAgaWQ6IElkLnQsXG4gIGxhYmVsOiBMYWJlbC50LFxuICBtb2xkOiBNb2xkLnQsXG4gIHNoYXJkczogbGlzdChpbnQpLFxuICBjaGlsZHJlbjogbGlzdChzZWdtZW50KSxcbn07XG5cbi8vIFRoaXMgaXMgZm9yIGNvbW1lbnQgaW5zZXJ0aW9uXG5sZXQgbWtfc2Vjb25kYXJ5ID0gKGlkLCBjb250ZW50KSA9PiBbU2Vjb25kYXJ5KHtpZCwgY29udGVudH0pXTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgVG91Y2goSWQudClcbiAgfCBEZWxldGUoSWQudCk7XG5cbi8vIHVzZWQgdG8gcmVjb3JkIGVmZmVjdHMgb3ZlciB0aGUgY291cnNlIG9mIGEgc2luZ2xlIGFjdGlvblxubGV0IHM6IHJlZihsaXN0KHQpKSA9IHJlZihbXSk7XG5sZXQgc19jbGVhciA9ICgpID0+IHMgOj0gW107XG5sZXQgc190b3VjaCA9IChpZHM6IGxpc3QoSWQudCkpID0+XG4gIHMgOj0gTGlzdC5tYXAoaWQgPT4gVG91Y2goaWQpLCBpZHMpIEAgc147XG5cbmxldCBzX3RvdWNoZWQgPSAoaWQ6IElkLnQpOiBib29sID0+IExpc3QubWVtKFRvdWNoKGlkKSwgc14pO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHBhbnNpb25zID0gbGlzdCgoVG9rZW4udCwgKGxpc3QoVG9rZW4udCksIERpcmVjdGlvbi50KSkpO1xuXG5sZXQgZm9ybXNfYXNzb2M6IGxpc3QoKExhYmVsLnQsIGxpc3QoTW9sZC50KSkpID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGFjYywgKF8sIHtsYWJlbCwgbW9sZCwgX306IEZvcm0udCkpID0+IHtcbiAgICAgIGxldCBtb2xkcyA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQobGFiZWwsIGFjYykpIHtcbiAgICAgICAgfCBTb21lKG9sZF9tb2xkcykgPT4gb2xkX21vbGRzIEAgW21vbGRdXG4gICAgICAgIHwgTm9uZSA9PiBbbW9sZF1cbiAgICAgICAgfTtcbiAgICAgIExpc3QuY29ucygobGFiZWwsIG1vbGRzKSwgTGlzdC5yZW1vdmVfYXNzb2MobGFiZWwsIGFjYykpO1xuICAgIH0sXG4gICAgW10sXG4gICAgRm9ybS5mb3JtcyxcbiAgKTtcblxubGV0IGdldCA9IChsYWJlbDogTGFiZWwudCk6IGxpc3QoTW9sZC50KSA9PlxuICBzd2l0Y2ggKGxhYmVsLCBMaXN0LmFzc29jX29wdChsYWJlbCwgZm9ybXNfYXNzb2MpKSB7XG4gIHwgKFt0XSwgU29tZShtb2xkcykpIHdoZW4gRm9ybS5hdG9taWNfbW9sZHModCkgIT0gW10gPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IGRvZXMgdGhpcyBtYWtlIHNlbnNlP1xuICAgIEZvcm0uYXRvbWljX21vbGRzKHQpIEAgbW9sZHNcbiAgfCAoW3RdLCBOb25lKSB3aGVuIEZvcm0uYXRvbWljX21vbGRzKHQpICE9IFtdID0+IEZvcm0uYXRvbWljX21vbGRzKHQpXG4gIHwgKF8sIFNvbWUobW9sZHMpKSA9PiBtb2xkc1xuICB8IChbdF0sIE5vbmUpID0+XG4gICAgLyogRm9yIHRva2VucyB3aGljaCBhcmUgbm90IGFzc2lnbmVkIG1vbGRzIGJ5IHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uLFxuICAgICAgIGFzc2luZyBhIGRlZmF1bHQgJ0FueScgbW9sZCwgd2hpY2ggaXMgZWl0aGVyIGNvbnZleCBvciBjb25jYXZlXG4gICAgICAgZGVwZW5kaW5nIG9uIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIFRoaXMgaXMgYSBoZXVyaXN0aWMgYXQgdGhlXG4gICAgICAgbW9tZW50IGFzIHdlIGRvbid0IGN1cnJlbnRseSByaWdvcm91c2x5IGRpdmlkZSB0b2tlbiBjbGFzc2VzXG4gICAgICAgZm9yIG9wZXJhdG9ycyB2cyBvcGVyYW5kcywgYnV0IGlzIHNvbWV3aGF0IGxvYWQtYmVhcmluZyBpbiB0aGF0XG4gICAgICAgcmVtb2xkaW5nIGFzIG9uZSBpcyB0eXBpbmcgaW4gYSBtdWx0aS1jaGFyYWN0ZXIgb3BlcmF0b3IgY2FuIGNhdXNlXG4gICAgICAgamFuaywgd2hpY2ggaXMgYWxsZXZpYXRlZCBpZiB3ZSBjb3JyZWN0bHkgZ3Vlc3MgdGhhdCBpdCB3aWxsXG4gICAgICAgYmVjb21lIGFuIG9wZXJhdG9yLiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNvdWxkIGJlIGJhc2VkIG9uXG4gICAgICAgbG9naWMgd2hpY2ggY2hlY2tzIGlmIHRoZSB0b2tlbiBpcyB0aGUgcHJlZml4IG9mIHdoYXRldmVyLiAqL1xuICAgIHN3aXRjaCAoRm9ybS5pc19wb3RlbnRpYWxfb3BlcmFuZCh0KSwgRm9ybS5pc19wb3RlbnRpYWxfb3BlcmF0b3IodCkpIHtcbiAgICB8ICh0cnVlLCBmYWxzZSkgPT4gW01vbGQubWtfb3AoQW55LCBbXSldXG4gICAgfCAoZmFsc2UsIHRydWUpID0+IFtNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm1heCwgQW55LCBbXSldXG4gICAgfCAodHJ1ZSwgdHJ1ZSkgPT5cbiAgICAgIFByaW50Zi5wcmludGYoXG4gICAgICAgIFwiV2FybmluZzogTW9sZHMuZ2V0OiBjYW4ndCBkZWNpZGUgaWYgb3BlcmFuZCBvciBvcGVyYXRvcjogJyVzJ1xcblwiLFxuICAgICAgICB0LFxuICAgICAgKTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXTtcbiAgICB8IChmYWxzZSwgZmFsc2UpID0+XG4gICAgICAvL1RPRE8oYW5kcmV3KTogdGhpcyBpcyB0cmlnZ2VyZWQgaW4gYWxsIGluc3RhbnQgZXhwYW5kIGNhc2VzIChbXSgpfCwgZXRjKVxuICAgICAgLy9QcmludGYucHJpbnRmKFwiV2FybmluZzogTW9sZHMuZ2V0OiB1bmhhbmRsZWQgbW9ubzogJyVzJ1xcblwiLCB0KTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXVxuICAgIH1cbiAgfCAobGJsLCBOb25lKSA9PlxuICAgIFByaW50Zi5wcmludGYoXG4gICAgICBcIldhcm5pbmc6IE1vbGRzLmdldDogdW5oYW5kbGVkIGxhYmVsOiAnJXMnXFxuXCIsXG4gICAgICBTdHJpbmcuY29uY2F0KFwiIFwiLCBsYmwpLFxuICAgICk7XG4gICAgW01vbGQubWtfb3AoQW55LCBbXSldO1xuICB9O1xuXG5sZXQgZGVsYXllZF9leHBhbnNpb25zOiBleHBhbnNpb25zID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgoXywge2V4cGFuc2lvbiwgbGFiZWwsIF99OiBGb3JtLnQpKSA9PlxuICAgICAgc3dpdGNoIChleHBhbnNpb24sIGxhYmVsKSB7XG4gICAgICB8ICgoRGVsYXllZCwgRGVsYXllZCksIFtoZCwgLi4uX10pID0+XG4gICAgICAgIFNvbWUoW1xuICAgICAgICAgIChoZCwgKGxhYmVsLCBEaXJlY3Rpb24uTGVmdCkpLFxuICAgICAgICAgIChMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpLFxuICAgICAgICBdKVxuICAgICAgfCAoKERlbGF5ZWQsIF8pLCBbaGQsIC4uLl9dKSA9PiBTb21lKFsoaGQsIChsYWJlbCwgTGVmdCkpXSlcbiAgICAgIHwgKChfLCBEZWxheWVkKSwgW18sIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFsoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKV0pXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfSxcbiAgICBGb3JtLmZvcm1zLFxuICApXG4gIHw+IExpc3QuZmxhdHRlblxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uczogZXhwYW5zaW9ucyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICAoKF8sIHtleHBhbnNpb24sIGxhYmVsLCBffTogRm9ybS50KSkgPT5cbiAgICAgIHN3aXRjaCAoZXhwYW5zaW9uLCBsYWJlbCkge1xuICAgICAgfCAoKEluc3RhbnQsIEluc3RhbnQpLCBbaGQsIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFtcbiAgICAgICAgICAoaGQsIChsYWJlbCwgRGlyZWN0aW9uLkxlZnQpKSxcbiAgICAgICAgICAoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKSxcbiAgICAgICAgXSlcbiAgICAgIHwgKChJbnN0YW50LCBfKSwgW2hkLCAuLi5fXSkgPT4gU29tZShbKGhkLCAobGFiZWwsIExlZnQpKV0pXG4gICAgICB8ICgoXywgSW5zdGFudCksIFtfLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSldKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH0sXG4gICAgRm9ybS5mb3JtcyxcbiAgKVxuICB8PiBMaXN0LmZsYXR0ZW5cbiAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbmxldCBkZWxheWVkX2V4cGFuc2lvbjogVG9rZW4udCA9PiAobGlzdChUb2tlbi50KSwgRGlyZWN0aW9uLnQpID1cbiAgcyA9PlxuICAgIC8qIENvbXBsZXRpb25zIHdoaWNoIG11c3QgYmUgZGVmZXJlZCBhcyB0aGV5IGFyZSBhbWJpZ3VvdXMgcHJlZml4ZXMgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGRlbGF5ZWRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uOiBUb2tlbi50ID0+IChsaXN0KFRva2VuLnQpLCBEaXJlY3Rpb24udCkgPVxuICBzID0+XG4gICAgLyogQ29tcGxldGlvbnMgd2hpY2ggY2FuIG9yIG11c3QgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGluc3RhbnRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGlzX2RlbGF5ZWQgPSBrdyA9PiBMaXN0Lmxlbmd0aChkZWxheWVkX2V4cGFuc2lvbihrdykgfD4gZnN0KSA+IDE7XG5cbmxldCBhbGxvd19tZXJnZSA9IChsOiBUb2tlbi50LCByOiBUb2tlbi50KTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbihsICsrIHIpO1xuXG5sZXQgYWxsb3dfYXBwZW5kX3JpZ2h0ID0gKHQ6IFRva2VuLnQsIGNoYXI6IHN0cmluZyk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2FwcGVuZF9sZWZ0ID0gKGNoYXI6IHN0cmluZywgdDogVG9rZW4udCk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2luc2VydGlvbiA9IChfY2hhcjogc3RyaW5nLCBfdDogVG9rZW4udCwgbmV3X3Q6IFRva2VuLnQpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKG5ld190KTtcbiIsIm9wZW4gVXRpbDtcbmluY2x1ZGUgQmFzZTtcblxuZXhjZXB0aW9uIEFtYmlndW91c19tb2xkcztcbmV4Y2VwdGlvbiBJbnZhbGlkX21vbGQ7XG5leGNlcHRpb24gRW1wdHlfdGlsZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gdGlsZTtcblxubGV0IGlkID0gdCA9PiB0LmlkO1xuXG5sZXQgaXNfY29tcGxldGUgPSAodDogdCkgPT4gTGlzdC5sZW5ndGgodC5sYWJlbCkgPT0gTGlzdC5sZW5ndGgodC5zaGFyZHMpO1xuXG5sZXQgbF9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwuaGRfb3B0KHQuc2hhcmRzKSk7XG5sZXQgcl9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwubGFzdF9vcHQodC5zaGFyZHMpKTtcblxubGV0IGhhc19lbmQgPSAoZDogRGlyZWN0aW9uLnQsIHQpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbF9zaGFyZCh0KSA9PSAwXG4gIHwgUmlnaHQgPT4gcl9zaGFyZCh0KSA9PSBMaXN0Lmxlbmd0aCh0LmxhYmVsKSAtIDFcbiAgfTtcbmxldCBoYXNfZW5kcyA9IHQgPT4gaGFzX2VuZChMZWZ0LCB0KSAmJiBoYXNfZW5kKFJpZ2h0LCB0KTtcblxubGV0IG5pYnMgPSAodDogdCkgPT4ge1xuICBsZXQgKGwsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1sX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICBsZXQgKF8sIHIpID0gTW9sZC5uaWJzKH5pbmRleD1yX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICAobCwgcik7XG59O1xuXG5sZXQgc2hhcGVzID0gKHQ6IHQpID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnModCk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB0b19waWVjZSA9IHQgPT4gVGlsZSh0KTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9ICh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX306IHQpID0+XG4gIEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgKF8sIGwpID0gTW9sZC5uaWJzKH5pbmRleD1sLCBtb2xkKTtcbiAgICAgICBsZXQgKHIsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1yLCBtb2xkKTtcbiAgICAgICAobC5zb3J0ID09IHIuc29ydCA/IGwuc29ydCA6IEFueSwgY2hpbGQpO1xuICAgICB9KTtcblxubGV0IGNvbnRhaW5lZF9jaGlsZHJlbiA9ICh0OiB0KTogbGlzdCgodCwgQmFzZS5zZWdtZW50LCB0KSkgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgbCA9IHsuLi50LCBzaGFyZHM6IFtsXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICBsZXQgciA9IHsuLi50LCBzaGFyZHM6IFtyXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICAobCwgY2hpbGQsIHIpO1xuICAgICB9KTtcblxuLy8gbGV0IHJlbW9sZCA9ICh0OiB0KTogbGlzdCh0KSA9PlxuLy8gICBNb2xkcy5nZXQodC5sYWJlbCkgfD4gTGlzdC5tYXAobW9sZCA9PiB7Li4udCwgbW9sZH0pO1xuXG5sZXQgc3BsaXRfc2hhcmRzID0gKGlkLCBsYWJlbCwgbW9sZCwgc2hhcmRzKSA9PlxuICBzaGFyZHMgfD4gTGlzdC5tYXAoaSA9PiB7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHM6IFtpXSwgY2hpbGRyZW46IFtdfSk7XG5cbi8vIHBvc3Rjb25kOiBvdXRwdXQgc2VnbWVudCBpcyBub25lbXB0eVxubGV0IGRpc2Fzc2VtYmxlID0gKHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgY2hpbGRyZW59OiB0KTogc2VnbWVudCA9PiB7XG4gIGxldCBzaGFyZHMgPSBzcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMpO1xuICBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbilcbiAgfD4gQWJhLmpvaW4ocyA9PiBbdG9fcGllY2UocyldLCBGdW4uaWQpXG4gIHw+IExpc3QuY29uY2F0O1xufTtcblxubGV0IGRpc2ludGVncmF0ZSA9ICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIF99OiB0KTogbGlzdCh0aWxlKSA9PiB7XG4gIHNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcyk7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaDogQWJhLnQodCwgc2VnbWVudCkpOiB0ID0+IHtcbiAgbGV0IHQgPSBBYmEuaGQobWF0Y2gpO1xuICBsZXQgKHNoYXJkcywgY2hpbGRyZW4pID1cbiAgICBtYXRjaFxuICAgIHw+IEFiYS5mb2xkX3JpZ2h0KFxuICAgICAgICAgKHQsIGNoaWxkLCAoc2hhcmRzLCBjaGlsZHJlbikpID0+XG4gICAgICAgICAgICh0LnNoYXJkcyBAIHNoYXJkcywgdC5jaGlsZHJlbiBAIFtjaGlsZCwgLi4uY2hpbGRyZW5dKSxcbiAgICAgICAgIHQgPT4gKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSxcbiAgICAgICApO1xuICAvLyBjaGVjayBsZW5ndGhzXG4gIGxldCBfID0gQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pO1xuICBhc3NlcnQoTGlzdC5zb3J0KEludC5jb21wYXJlLCBzaGFyZHMpID09IHNoYXJkcyk7XG4gIHtcbiAgICBpZDogdC5pZCxcbiAgICBsYWJlbDogdC5sYWJlbCxcbiAgICAvLyBub3RlOiB0aGlzIHRocm93cyBhd2F5IG1vbGRzIG9uIHRpbGVzIG90aGVyIHRoYW4gaGQuXG4gICAgLy8gaW4gY2FzZXMgd2hlcmUgdGhvc2UgbW9sZHMgZGlmZmVyLCByZWFzc2VtYmxlZCB0aWxlXG4gICAgLy8gc2hvdWxkIHVuZGVyZ28gc3Vic2VxdWVudCByZW1vbGRpbmcuXG4gICAgbW9sZDogdC5tb2xkLFxuICAgIHNoYXJkcyxcbiAgICBjaGlsZHJlbixcbiAgfTtcbn07XG5cbmxldCBwb3BfbCA9ICh0aWxlOiB0KTogKHBpZWNlLCBzZWdtZW50KSA9PlxuICBkaXNhc3NlbWJsZSh0aWxlKVxuICB8PiBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5sZXQgcG9wX3IgPSAodGlsZTogdCk6IChzZWdtZW50LCBwaWVjZSkgPT5cbiAgZGlzYXNzZW1ibGUodGlsZSlcbiAgfD4gTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5cbi8vIGxldCB1bmlxdWVfbW9sZCA9IF8gPT4gZmFpbHdpdGgoXCJ0b2RvIHVuaXF1ZV9tb2xkXCIpO1xuXG4vLyBtb2R1bGUgTWF0Y2ggPSB7XG4vLyAgIHR5cGUgdGlsZSA9IHQ7XG5cbi8vICAgbW9kdWxlIE1ha2UgPSAoTzogT3JpZW50YXRpb24uUykgPT4ge1xuLy8gICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbi8vICAgICB0eXBlIHQgPSBBYmEudChTaGFyZC50LCBzZWdtZW50KTtcblxuLy8gICAgIGxldCBpZCA9IChtOiB0KSA9PiBBYmEuaGQobSkudGlsZV9pZDtcblxuLy8gICAgIGxldCBsYWJlbCA9IChtOiB0KSA9PiBzbmQoQWJhLmhkKG0pLmxhYmVsKTtcblxuLy8gICAgIGxldCBzaGFyZHM6IHQgPT4gbGlzdChTaGFyZC50KSA9IEFiYS5nZXRfYXM7XG4vLyAgICAgLy8gbGV0IGNoaWxkcmVuOiB0ID0+IGxpc3Qoc2VnbWVudCkgPSBBYmEuZ2V0X2JzO1xuXG4vLyAgICAgbGV0IGxlbmd0aCA9IChtOiB0KSA9PiBMaXN0Lmxlbmd0aChzaGFyZHMobSkpO1xuXG4vLyAgICAgbGV0IG1vbGQgPSAobTogdCkgPT4ge1xuLy8gICAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgICAgc3dpdGNoIChTaGFyZC5jb25zaXN0ZW50X21vbGRzKHNoYXJkcyhtKSkpIHtcbi8vICAgICAgICAgfCBbXSA9PlxuLy8gICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgZXZlcnl0aGluZyB3aWxsIGJlIHN1YnNlcXVlbnRseSByZW1vbGRlZFxuLy8gICAgICAgICAgIE1vbGRzLmdldChsYWJlbChtKSlcbi8vICAgICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgICAgfTtcbi8vICAgICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4vLyAgICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgICB9O1xuXG4vLyAgICAgbGV0IGNoaWxkcmVuID0gbSA9PlxuLy8gICAgICAgTGlzdC5tYXAoTGlzdFV0aWwucmV2X2lmKE8uZCA9PSBMZWZ0KSwgQWJhLmdldF9icyhtKSk7XG5cbi8vICAgICBsZXQgam9pbiA9IChtOiB0KTogc2VnbWVudCA9PlxuLy8gICAgICAgbSB8PiBBYmEuam9pbihzID0+IFtTaGFyZC50b19waWVjZShzKV0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuXG4vLyAgICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24odGlsZSkgPT4ge1xuLy8gICAgICAgbGV0IGlkID0gaWQobSk7XG4vLyAgICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICAgIGxldCBtb2xkID0gbW9sZChtKTtcbi8vICAgICAgIGxlbmd0aChtKSA9PSBMYWJlbC5sZW5ndGgobGFiZWwpXG4vLyAgICAgICAgID8ge1xuLy8gICAgICAgICAgIGxldCBjaGlsZHJlbiA9IExpc3RVdGlsLnJldl9pZihPLmQgPT0gTGVmdCwgY2hpbGRyZW4obSkpO1xuLy8gICAgICAgICAgIFNvbWUoQmFzZS5UaWxlLntpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVufSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgOiBOb25lO1xuLy8gICAgIH07XG4vLyAgIH07XG4vLyB9O1xuIiwiLy8gb3BlbiBVdGlsO1xuaW5jbHVkZSBCYXNlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBwaWVjZTtcblxubGV0IHNlY29uZGFyeSA9IHcgPT4gU2Vjb25kYXJ5KHcpO1xubGV0IGdyb3V0ID0gZyA9PiBHcm91dChnKTtcbmxldCB0aWxlID0gdCA9PiBUaWxlKHQpO1xuXG5sZXQgZ2V0ID0gKGZfdywgZl9nLCBmX3QsIHA6IHQpID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeSh3KSA9PiBmX3codylcbiAgfCBHcm91dChnKSA9PiBmX2coZylcbiAgfCBUaWxlKHQpID0+IGZfdCh0KVxuICB9O1xuXG5sZXQgaWQgPSBnZXQoU2Vjb25kYXJ5LmlkLCBHcm91dC5pZCwgVGlsZS5pZCk7XG5cbmxldCBzb3J0ID1cbiAgZ2V0KFxuICAgIF8gPT4gKFNvcnQuQW55LCBbXSksXG4gICAgXyA9PiAoU29ydC5BbnksIFtdKSxcbiAgICB0ID0+ICh0Lm1vbGQub3V0LCB0Lm1vbGQuaW5fKSxcbiAgKTtcblxubGV0IG5pYnMgPVxuICBnZXQoXG4gICAgXyA9PiBOb25lLFxuICAgIGcgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IEdyb3V0LnNoYXBlcyhnKTtcbiAgICAgIFNvbWUoTmliLih7c2hhcGU6IGwsIHNvcnQ6IEFueX0sIHtzaGFwZTogciwgc29ydDogQW55fSkpO1xuICAgIH0sXG4gICAgdCA9PiBTb21lKFRpbGUubmlicyh0KSksXG4gICk7XG5cbmxldCBuaWJfc29ydHMgPVxuICBnZXQoXG4gICAgXyA9PiAoU29ydC5BbnksIFNvcnQuQW55KSxcbiAgICBfID0+IChTb3J0LkFueSwgU29ydC5BbnkpLFxuICAgIHQgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgIChsLnNvcnQsIHIuc29ydCk7XG4gICAgfSxcbiAgKTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IGdldChfID0+IFtdLCBfID0+IFtdLCBUaWxlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBwID0+IHNvcnRlZF9jaGlsZHJlbihwKSB8PiBMaXN0LnNwbGl0IHw+IHNuZDtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID1cbi8vICAgZnVuXG4vLyAgIHwgU2hhcmQoXykgPT4gZmFsc2Vcbi8vICAgfCBTZWNvbmRhcnkoXylcbi8vICAgfCBHcm91dChfKVxuLy8gICB8IFRpbGUoXykgPT4gdHJ1ZTtcblxubGV0IHBvcF9sID0gKHA6IHQpOiAodCwgc2VnbWVudCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9sKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKHAsIFtdKVxuICB9O1xubGV0IHBvcF9yID0gKHA6IHQpOiAoc2VnbWVudCwgdCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9yKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKFtdLCBwKVxuICB9O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAocDogdCk6IHNlZ21lbnQgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4gIHwgVGlsZSh0KSA9PiBUaWxlLmRpc2Fzc2VtYmxlKHQpXG4gIH07XG5cbi8vIGxldCByZW1vbGQgPSAocDogdCkgPT5cbi8vICAgc3dpdGNoIChwKSB7XG4vLyAgIHwgR3JvdXQoXylcbi8vICAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4vLyAgIHwgVGlsZSh0KSA9PiBMaXN0Lm1hcCh0aWxlLCBUaWxlLnJlbW9sZCh0KSlcbi8vICAgfTtcblxubGV0IHNoYXBlcyA9XG4gIGdldChfID0+IE5vbmUsIGcgPT4gU29tZShHcm91dC5zaGFwZXMoZykpLCB0ID0+IFNvbWUoVGlsZS5zaGFwZXModCkpKTtcblxubGV0IGlzX2dyb3V0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBHcm91dChfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGlzX3NlY29uZGFyeTogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgU2Vjb25kYXJ5KF8pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgaXNfdGlsZTogdCA9PiBvcHRpb24oVGlsZS50KSA9XG4gIGZ1blxuICB8IFRpbGUodCkgPT4gU29tZSh0KVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGxhYmVsOiB0ID0+IG9wdGlvbihMYWJlbC50KSA9XG4gIGZ1blxuICB8IFRpbGUoe2xhYmVsLCBffSkgPT4gU29tZShsYWJlbClcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBtb25vdGlsZTogdCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBmdW5cbiAgfCBUaWxlKHtsYWJlbDogW3RdLCBffSkgPT4gU29tZSh0KVxuICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHcpID0+XG4gICAgU29tZShTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGhhc19lbmRzID0gZ2V0KF8gPT4gdHJ1ZSwgXyA9PiB0cnVlLCBUaWxlLmhhc19lbmRzKTtcblxubGV0IGlzX2NvbXBsZXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBUaWxlKHQpID0+IFRpbGUuaXNfY29tcGxldGUodClcbiAgfCBfID0+IHRydWU7XG5cbmxldCBnZXRfb3V0c2lkZV9zb3J0cyA9ICh+ZGVmYXVsdF9zb3J0PVNvcnQuQW55LCBwOiB0KTogbGlzdChTb3J0LnQpID0+XG4gIC8vVE9ETzogRGF2aWQgcGxlYXNlIHJldmlldyB0aGlzXG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeShfKSA9PiBbXVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gW11cbiAgfCBHcm91dCh7c2hhcGU6IENvbmNhdmUsIF99KSA9PiBbZGVmYXVsdF9zb3J0LCBkZWZhdWx0X3NvcnRdXG4gIHwgVGlsZSh7c2hhcmRzOiBfLCBffSBhcyB0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiBiZXR0ZXIgaW5jb21wbGV0ZSB0aWxlIGhhbmRsaW5nXG4gICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2hhcGUgb2YgaW5jb21wbGV0ZSB0aWxlIGlzXG4gICAgW11cbiAgfCBUaWxlKHQpID0+XG4gICAgbGV0IChzb3J0X2wsIHNvcnRfcikgPSBuaWJfc29ydHMocCk7XG4gICAgc3dpdGNoICgodC5tb2xkLm5pYnMgfD4gZnN0KS5zaGFwZSwgKHQubW9sZC5uaWJzIHw+IHNuZCkuc2hhcGUpIHtcbiAgICB8IChDb252ZXgsIENvbnZleCkgPT4gW11cbiAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFtzb3J0X3JdXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiBbc29ydF9sXVxuICAgIHwgKENvbmNhdmUoXyksIENvbmNhdmUoXykpID0+IFtzb3J0X2wsIHNvcnRfcl1cbiAgICB9O1xuICB9O1xuXG5sZXQgbW9sZF9vZiA9ICh+c2hhcGU9TmliLlNoYXBlLkNvbnZleCwgcDogdCkgPT5cbiAgLy8gVE9ETyhkKSBmaXggc29ydHNcbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiB0Lm1vbGRcbiAgfCBHcm91dChnKSA9PiBNb2xkLm9mX2dyb3V0KGcsIEFueSlcbiAgfCBTZWNvbmRhcnkoXykgPT4gTW9sZC5vZl9zZWNvbmRhcnkoe3NvcnQ6IEFueSwgc2hhcGV9KVxuICB9O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPcChyb290KVxuICB8IFByZShyb290LCB0KVxuICB8IFBvc3QodCwgcm9vdClcbiAgfCBCaW4odCwgcm9vdCwgdClcbmFuZCByb290ID0gQWJhLnQoaW50LCB0KTtcblxuLy8gbGV0IHJlYyBzaXplID1cbi8vICAgZnVuXG4vLyAgIHwgT3AoXykgPT4gMVxuLy8gICB8IFByZShfLCByKSA9PiAxICsgc2l6ZShyKVxuLy8gICB8IFBvc3QobCwgXykgPT4gc2l6ZShsKSArIDFcbi8vICAgfCBCaW4obCwgXywgcikgPT4gc2l6ZShsKSArIDEgKyBzaXplKHIpO1xuXG4vLyBUT0RPKGQpOiByZW5hbWUgdG8gcmVmbGVjdCBhYmFcbmxldCByb290ID1cbiAgZnVuXG4gIHwgT3AocilcbiAgfCBQcmUociwgXylcbiAgfCBQb3N0KF8sIHIpXG4gIHwgQmluKF8sIHIsIF8pID0+IHI7XG5cbi8vIGxldCBjaGlsZHJlbiA9XG4vLyAgIGZ1blxuLy8gICB8IE9wKF8pID0+IFtdXG4vLyAgIHwgUHJlKF8sIHNrZWwpID0+IFsoRGlyZWN0aW9uLlJpZ2h0LCBza2VsKV1cbi8vICAgfCBQb3N0KHNrZWwsIF8pID0+IFsoTGVmdCwgc2tlbCldXG4vLyAgIHwgQmluKGwsIF8sIHIpID0+IFsoTGVmdCwgbCksIChSaWdodCwgcildO1xuXG4vLyByZXR1cm5zIGluY2x1c2l2ZSBsb3dlciBib3VuZCwgZXhjbHVzaXZlIHVwcGVyIGJvdW5kXG4vLyBsZXQgcmVjIHJhbmdlID1cbi8vICAgZnVuXG4vLyAgIHwgT3AobikgPT4gKG4sIG4gKyAxKVxuLy8gICB8IFByZShuLCByKSA9PiAobiwgc25kKHJhbmdlKHIpKSlcbi8vICAgfCBQb3N0KGwsIG4pID0+IChmc3QocmFuZ2UobCkpLCBuICsgMSlcbi8vICAgfCBCaW4obCwgXywgcikgPT4gKGZzdChyYW5nZShsKSksIHNuZChyYW5nZShyKSkpO1xuXG4vLyBsZXQgcmVjIHNrZWxfYXQgPSAobiwgc2tlbCkgPT5cbi8vICAgc3dpdGNoIChza2VsKSB7XG4vLyAgIHwgT3AobSkgPT4gbiA9PSBtID8gc2tlbCA6IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJTa2VsLnNrZWxfYXRcIikpXG4vLyAgIHwgUHJlKG0sIHIpID0+IG4gPT0gbSA/IHNrZWwgOiBza2VsX2F0KG4sIHIpXG4vLyAgIHwgUG9zdChsLCBtKSA9PiBuID09IG0gPyBza2VsIDogc2tlbF9hdChuLCBsKVxuLy8gICB8IEJpbihsLCBtLCByKSA9PlxuLy8gICAgIGlmIChuIDwgbSkge1xuLy8gICAgICAgc2tlbF9hdChuLCBsKTtcbi8vICAgICB9IGVsc2UgaWYgKG4gPiBtKSB7XG4vLyAgICAgICBza2VsX2F0KG4sIHIpO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICBza2VsO1xuLy8gICAgIH1cbi8vICAgfTtcblxuZXhjZXB0aW9uIElucHV0X2NvbnRhaW5zX3NlY29uZGFyeTtcbmV4Y2VwdGlvbiBOb25jb252ZXhfc2VnbWVudDtcblxuW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG50eXBlIGlwID0gKGludCwgUGllY2UudCk7XG5cbnR5cGUgcmVsID1cbiAgfCBMdFxuICB8IEVxXG4gIHwgR3Q7XG5cbmxldCByZWwgPSAocDE6IFBpZWNlLnQsIHAyOiBQaWVjZS50KTogb3B0aW9uKHJlbCkgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoU2Vjb25kYXJ5KF8pLCBfKVxuICB8IChfLCBTZWNvbmRhcnkoXykpID0+IE5vbmVcbiAgfCAoR3JvdXQoe3NoYXBlLCBffSksIF8pID0+XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgQ29udmV4ID0+IFNvbWUoR3QpXG4gICAgfCBDb25jYXZlID0+IFNvbWUoTHQpXG4gICAgfVxuICB8IChfLCBHcm91dCh7c2hhcGUsIF99KSkgPT5cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBDb252ZXggPT4gU29tZShMdClcbiAgICB8IENvbmNhdmUgPT4gU29tZShHdClcbiAgICB9XG4gIHwgKFRpbGUodDEpLCBUaWxlKHQyKSkgPT5cbiAgICBvcGVuIExhYmVscztcbiAgICBsZXQgbGJsMSA9ICg9PSkodDEubGFiZWwpO1xuICAgIGxldCBsYmwyID0gKD09KSh0Mi5sYWJlbCk7XG4gICAgbGV0IGVxID1cbiAgICAgIFtcbiAgICAgICAgbGJsMShjYXNlKSAmJiBsYmwyKHJ1bGUpLFxuICAgICAgICBsYmwxKHJ1bGUpICYmIGxibDIocnVsZSksXG4gICAgICAgIGxibDEoY29tbWEpICYmIGxibDIoY29tbWEpICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgICAgbGJsMShbXCIrXCJdKSAmJiBsYmwyKFtcIitcIl0pICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgIF1cbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KCh8fCksIGZhbHNlKTtcbiAgICBpZiAoZXEpIHtcbiAgICAgIFNvbWUoRXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIHIxKSA9IFRpbGUuc2hhcGVzKHQxKTtcbiAgICAgIGxldCAobDIsIF8pID0gVGlsZS5zaGFwZXModDIpO1xuICAgICAgc3dpdGNoIChyMSwgbDIpIHtcbiAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PiBOb25lXG4gICAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IFNvbWUoTHQpXG4gICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFNvbWUoR3QpXG4gICAgICB8IChDb25jYXZlKHApLCBDb25jYXZlKHAnKSkgPT5cbiAgICAgICAgaWYgKHAgPCBwJykge1xuICAgICAgICAgIFNvbWUoTHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHAgPiBwJykge1xuICAgICAgICAgIFNvbWUoR3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHApKSB7XG4gICAgICAgICAgfCBTb21lKExlZnQpID0+IFNvbWUoR3QpXG4gICAgICAgICAgfCBTb21lKFJpZ2h0KSA9PiBTb21lKEx0KVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgLy8gbWF5IHdhbnQgdG8gbWFrZSB0aGlzIFNvbWUoRXEpXG4gICAgICAgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgY29tbWEgYnV0IGRvbid0XG4gICAgICAgICAgICAvLyB3YW50IHRvIGJvdGhlciB3aXRoIG1vbGQgY29uY2VybnMgaGVyZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxubW9kdWxlIFN0YWNrcyA9IHtcbiAgW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG4gIHR5cGUgc2tlbCA9IHQ7XG4gIFtAZGVyaXZpbmcgc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pXVxuICB0eXBlIHQgPSB7XG4gICAgb3V0cHV0OiBsaXN0KHNrZWwpLFxuICAgIHNodW50ZWQ6IGxpc3QoaXApLFxuICB9O1xuXG4gIGxldCBlbXB0eSA9IHtvdXRwdXQ6IFtdLCBzaHVudGVkOiBbXX07XG5cbiAgbGV0IHJlYyBwb3BfY2hhaW4gPVxuICAgICAgICAgICh+cG9wcGVkPVtdLCBzaHVudGVkOiBsaXN0KGlwKSk6IChsaXN0KGlwKSwgbGlzdChpcCkpID0+XG4gICAgc3dpdGNoIChzaHVudGVkKSB7XG4gICAgfCBbXSA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAocG9wcGVkKSB7XG4gICAgICB8IFtdID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZF0sIHRsKVxuICAgICAgfCBbcCwgLi4uX10gPT5cbiAgICAgICAgc3dpdGNoIChyZWwoc25kKGhkKSwgc25kKHApKSkge1xuICAgICAgICB8IFNvbWUoRXEpID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZCwgLi4ucG9wcGVkXSwgdGwpXG4gICAgICAgIHwgXyA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgc2hhcGVzID0gcCA9PlxuICAgIFBpZWNlLnNoYXBlcyhwKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnB1dF9jb250YWluc19zZWNvbmRhcnkpO1xuXG4gIGxldCBzaGFwZXNfb2ZfY2hhaW4gPVxuICAgICAgKGNoYWluOiBsaXN0KGlwKSk6IG9wdGlvbigoTmliLlNoYXBlLnQsIE5pYi5TaGFwZS50KSkgPT5cbiAgICBzd2l0Y2ggKGNoYWluLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChjaGFpbikpIHtcbiAgICB8IChbKF8sIGZpcnN0KSwgLi4uX10sIFNvbWUoKF8sIChfLCBsYXN0KSkpKSA9PlxuICAgICAgbGV0IChsLCBfKSA9IHNoYXBlcyhmaXJzdCk7XG4gICAgICBsZXQgKF8sIHIpID0gc2hhcGVzKGxhc3QpO1xuICAgICAgU29tZSgobCwgcikpO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgcmVjIHB1c2hfb3V0cHV0ID0gKH5wcmVjOiBvcHRpb24oUHJlY2VkZW5jZS50KT0/LCBzdGFja3M6IHQpOiB0ID0+IHtcbiAgICBsZXQgKGNoYWluLCBzaHVudGVkKSA9IHBvcF9jaGFpbihzdGFja3Muc2h1bnRlZCk7XG4gICAgc3dpdGNoIChwcmVjLCBzaGFwZXNfb2ZfY2hhaW4oY2hhaW4pKSB7XG4gICAgfCAoU29tZShwcmVjKSwgU29tZSgoXywgQ29uY2F2ZShwcmVjJykpKSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFByZWNlZGVuY2UuY29tcGFyZShwcmVjJywgcHJlYykgPCAwXG4gICAgICAgICAgfHwgUHJlY2VkZW5jZS5jb21wYXJlKHByZWMnLCBwcmVjKSA9PSAwXG4gICAgICAgICAgJiYgUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHByZWMnKSAhPSBTb21lKExlZnQpID0+IHN0YWNrc1xuICAgIHwgKF8sIE5vbmUpID0+IHN0YWNrc1xuICAgIHwgKF8sIFNvbWUoKGwsIHIpKSkgPT5cbiAgICAgIGxldCBpcyA9IExpc3QubWFwKGZzdCwgY2hhaW4pO1xuICAgICAgbGV0IHNwbGl0X2tpZHMgPSBuID0+XG4gICAgICAgIHRyeShMaXN0VXRpbC5zcGxpdF9uKG4sIHN0YWNrcy5vdXRwdXQpIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpKSB7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIHByaW50X2VuZGxpbmUoc2hvdyhzdGFja3MpKTtcbiAgICAgICAgICBmYWlsd2l0aChcIlNrZWwucHVzaF9vdXRwdXQ6IHNwbGl0X2tpZHM6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH07XG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgc3dpdGNoIChsLCByKSB7XG4gICAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pIC0gMSk7XG4gICAgICAgICAgW09wKEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtQcmUoQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIFtQb3N0KGwsIEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pICsgMSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtCaW4obCwgQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIH07XG4gICAgICBwdXNoX291dHB1dCh+cHJlYz8sIHtzaHVudGVkLCBvdXRwdXR9KTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBwdXNoX3NodW50ZWQgPSAoKF8sIHApIGFzIGlwOiBpcCwgc3RhY2tzOiB0KTogdCA9PiB7XG4gICAgbGV0IChsLCBfKSA9IHNoYXBlcyhwKTtcbiAgICBsZXQgc3RhY2tzID1cbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBDb252ZXggPT4gc3RhY2tzXG4gICAgICB8IENvbmNhdmUocHJlYykgPT4gcHVzaF9vdXRwdXQofnByZWMsIHN0YWNrcylcbiAgICAgIH07XG4gICAgey4uLnN0YWNrcywgc2h1bnRlZDogW2lwLCAuLi5zdGFja3Muc2h1bnRlZF19O1xuICB9O1xuXG4gIGxldCBmaW5pc2ggPSBzdGFja3MgPT4gcHVzaF9vdXRwdXQoc3RhY2tzKTtcbn07XG5cbmxldCBtayA9IChzZWc6IGxpc3QoaXApKTogdCA9PiB7XG4gIGxldCBzdGFja3MgPVxuICAgIHNlZ1xuICAgIHw+IExpc3QuZm9sZF9sZWZ0KEZ1bi5mbGlwKFN0YWNrcy5wdXNoX3NodW50ZWQpLCBTdGFja3MuZW1wdHkpXG4gICAgfD4gU3RhY2tzLmZpbmlzaDtcbiAgTGlzdFV0aWwuaGRfb3B0KHN0YWNrcy5vdXRwdXQpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKE5vbmNvbnZleF9zZWdtZW50KTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zZWdtZW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBCYXNlLnNlZ21lbnQ7XG5cbmxldCBlbXB0eSA9IFtdO1xubGV0IGNvbnMgPSBMaXN0LmNvbnM7XG5sZXQgY29uY2F0ID0gTGlzdC5jb25jYXQ7XG5sZXQgZm9sZF9yaWdodCA9IExpc3QuZm9sZF9yaWdodDtcbmxldCByZXYgPSBMaXN0LnJldjtcblxubGV0IG9mX3RpbGUgPSB0ID0+IFtUaWxlLnRvX3BpZWNlKHQpXTtcblxubGV0IG5pYnMgPSB0aWxlcyA9PlxuICBzd2l0Y2ggKHRpbGVzLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0aWxlcykpIHtcbiAgfCAoW10sIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoW19maXJzdCwgLi4uX10sIFNvbWUoKF8sIF9sYXN0KSkpID0+IGZhaWx3aXRoKFwidG9kbyBUaWxlcy5uaWJzXCIpXG4gIH07XG5cbmxldCBpbmNvbXBsZXRlX3RpbGVzID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgKTtcbmxldCB0aWxlcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lLFxuICApO1xuXG5sZXQgY29udmV4X2dyb3V0ID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuR3JvdXQoZykgd2hlbiBnLnNoYXBlID09IENvbnZleCA9PiBTb21lKGcpXG4gICAgfCBfID0+IE5vbmUsXG4gICk7XG5cbmxldCBjb250YWluc19tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0JykgPT4gdCcuaWQgPT0gdC5pZFxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IHJlbW92ZV9tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCcpIHdoZW4gdCcuaWQgPT0gdC5pZCA9PiBOb25lXG4gICAgfCBwID0+IFNvbWUocCksXG4gICk7XG5cbmxldCBzbm9jID0gKHRpbGVzLCB0aWxlKSA9PiB0aWxlcyBAIFt0aWxlXTtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID0gTGlzdC5mb3JfYWxsKFBpZWNlLmlzX2JhbGFuY2VkKTtcblxubGV0IHNoYXBlX2FmZml4ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIGFmZml4OiB0LCByOiBOaWIuU2hhcGUudClcbiAgICA6IChBYmEudChsaXN0KFNlY29uZGFyeS50KSwgR3JvdXQudCksIE5pYi5TaGFwZS50LCB0KSA9PiB7XG4gIGxldCBlbXB0eV93Z3cgPSBBYmEubWsoW1tdXSwgW10pO1xuICBsZXQgcmVjIGdvID0gKGFmZml4OiB0LCByOiBOaWIuU2hhcGUudCkgPT5cbiAgICBzd2l0Y2ggKGFmZml4KSB7XG4gICAgfCBbXSA9PiAoZW1wdHlfd2d3LCByLCBbXSlcbiAgICB8IFtwLCAuLi50bF0gPT5cbiAgICAgIGxldCAod2d3LCBzLCB0bCkgPSBnbyh0bCwgcik7XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgU2Vjb25kYXJ5KHcpID0+XG4gICAgICAgIGxldCAod3NzLCBncykgPSB3Z3c7XG4gICAgICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgICAgICAoKFtbdywgLi4ud3NdLCAuLi53c3NdLCBncyksIHMsIHRsKTtcbiAgICAgIHwgR3JvdXQoZykgPT4gKEFiYS5jb25zKFtdLCBnLCB3Z3cpLCBzLCB0bClcbiAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICBsZXQgKGwsIF8pID0gVGlsZS5zaGFwZXModCkgfD4gKGQgPT0gTGVmdCA/IFR1cGxlVXRpbC5zd2FwIDogRnVuLmlkKTtcbiAgICAgICAgKGVtcHR5X3dndywgbCwgdGwpO1xuICAgICAgfTtcbiAgICB9O1xuICBnbygoZCA9PSBMZWZ0ID8gTGlzdC5yZXYgOiBGdW4uaWQpKGFmZml4KSwgcik7XG59O1xubGV0IHNoYXBlID0gc2hhcGVfYWZmaXgoUmlnaHQpO1xuXG5sZXQgcmVjIGNvbnZleCA9IHNlZyA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCBsID1cbiAgICBmb2xkX3JpZ2h0KFxuICAgICAgKHA6IFBpZWNlLnQsIHNoYXBlKSA9PiB7XG4gICAgICAgIGxldCogcyA9IHNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHApIHtcbiAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gc2hhcGVcbiAgICAgICAgfCBHcm91dChnKSA9PlxuICAgICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgcykgPyBTb21lKGZzdChHcm91dC5zaGFwZXMoZykpKSA6IE5vbmVcbiAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgbGV0IChsLCByKSA9IFRpbGUuc2hhcGVzKHQpO1xuICAgICAgICAgIExpc3QuZm9yX2FsbChjb252ZXgsIHQuY2hpbGRyZW4pICYmIE5pYi5TaGFwZS5maXRzKHIsIHMpXG4gICAgICAgICAgICA/IFNvbWUobCkgOiBOb25lO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICAgIFNvbWUoTmliLlNoYXBlLmNvbmNhdmUoKSksXG4gICAgKTtcbiAgc3dpdGNoIChsKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUobCkgPT4gTmliLlNoYXBlLmZpdHMoTmliLlNoYXBlLmNvbmNhdmUoKSwgbClcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9ieV9ncm91dDogdCA9PiBBYmEudCh0LCBHcm91dC50KSA9XG4gIEFiYS5zcGxpdChcbiAgICBmdW5cbiAgICB8IFBpZWNlLkdyb3V0KGcpID0+IEVpdGhlci5SKGcpXG4gICAgfCBwID0+IEwocCksXG4gICk7XG5cbmxldCByZWMgcmVtb2xkID0gKH5zaGFwZT1OaWIuU2hhcGUuY29uY2F2ZSgpLCBzZWc6IHQsIHM6IFNvcnQudCkgPT5cbiAgc3dpdGNoIChzKSB7XG4gIHwgQW55ID0+IHNlZ1xuICB8IFR5cCA9PiByZW1vbGRfdHlwKHNoYXBlLCBzZWcpXG4gIHwgUGF0ID0+IHJlbW9sZF9wYXQoc2hhcGUsIHNlZylcbiAgfCBFeHAgPT4gcmVtb2xkX2V4cChzaGFwZSwgc2VnKVxuICB8IFJ1bCA9PiByZW1vbGRfcnVsKHNoYXBlLCBzZWcpXG4gIHwgVFBhdCA9PiByZW1vbGRfdHBhdChzaGFwZSwgc2VnKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJyZW1vbGQgdW5leHBlY3RlZFwiKVxuICB9XG5hbmQgcmVtb2xkX3RpbGUgPSAoczogU29ydC50LCBzaGFwZSwgdDogVGlsZS50KTogb3B0aW9uKFRpbGUudCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHJlbW9sZGVkID1cbiAgICBNb2xkcy5nZXQodC5sYWJlbClcbiAgICB8PiBMaXN0LmZpbHRlcigobTogTW9sZC50KSA9PiBtLm91dCA9PSBzKVxuICAgIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLnQsIG1vbGR9KVxuICAgIHw+IChcbiAgICAgIGZ1blxuICAgICAgfCBbX10gYXMgdHMgPT4gdHNcbiAgICAgIHwgdHMgPT5cbiAgICAgICAgdHMgfD4gTGlzdC5maWx0ZXIodCA9PiBOaWIuU2hhcGUuZml0cyhzaGFwZSwgZnN0KFRpbGUuc2hhcGVzKHQpKSkpXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLmhkX29wdDtcbiAgbGV0IGNoaWxkcmVuID1cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoKGwsIGNoaWxkLCByKSwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgbGV0IGNoaWxkID1cbiAgICAgICAgICBpZiAobFxuICAgICAgICAgICAgICArIDEgPT0gclxuICAgICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgTGlzdC5udGgocmVtb2xkZWQubW9sZC5pbl8sIGwpICE9IExpc3QubnRoKHQubW9sZC5pbl8sIGwpXG4gICAgICAgICAgICAgICAgfHwgRWZmZWN0LnNfdG91Y2hlZChyZW1vbGRlZC5pZClcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmVtb2xkKGNoaWxkLCBMaXN0Lm50aChyZW1vbGRlZC5tb2xkLmluXywgbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZDtcbiAgICAgICAgICB9O1xuICAgICAgICBbY2hpbGQsIC4uLmNoaWxkcmVuXTtcbiAgICAgIH0sXG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHJlbW9sZGVkLnNoYXJkcywgcmVtb2xkZWQuY2hpbGRyZW4pKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIHsuLi5yZW1vbGRlZCwgY2hpbGRyZW59O1xufVxuYW5kIHJlbW9sZF90eXAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF90eXAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVHlwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3R5cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT4gW1RpbGUodCksIC4uLnJlbW9sZF90eXAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90eXBfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFR5cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpIHdoZW4gdC5sYWJlbCA9PSBGb3JtLmdldChcImNvbW1hX3R5cFwiKS5sYWJlbCA9PiAoXG4gICAgICAgICAgW10sXG4gICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgc2VnLFxuICAgICAgICApXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICByZW1vbGRfdHlwX3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3BhdF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgICByZW1vbGRfcGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9wYXQgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9wYXQoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3BhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9wYXQoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT4gW1RpbGUodCksIC4uLnJlbW9sZF9wYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3RwYXRfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHBhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICAgIHJlbW9sZF90cGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90cGF0ID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfdHBhdChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfdHBhdChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX2V4cF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3RwYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90cGF0XSBAIHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9wYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3BhdF0gQCByZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUnVsfSkgPT5cbiAgICAgICAgICAvLyBUT0RPIHJldmlldyBzaG9ydCBjaXJjdWl0XG4gICAgICAgICAgKFtUaWxlKHQpXSwgc2hhcGUsIHRsKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgICAgcmVtb2xkX2V4cF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfcnVsID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFJ1bCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBFeHB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9ydWwoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICAvLyBUT0RPKGQpIGNvbnRpbnVpbmcgb250byBydWxlIG1pZ2h0IG5vdCBiZSByaWdodCByaWdodC4uLlxuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+IGZhaWx3aXRoKFwicmVtb2xkX3J1bCB1bmV4cGVjdGVkXCIpXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgW2hkLCAuLi50bF0pO1xuICAgICAgICBzd2l0Y2ggKHJlbW9sZGVkKSB7XG4gICAgICAgIHwgW10gPT4gW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZF9ydWwoc2hhcGUsIHRsKV1cbiAgICAgICAgfCBbXywgLi4uX10gPT4gcmVtb2xkZWQgQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9leHAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9leHAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFRQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfZXhwKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFJ1bH0pID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbmxldCBza2VsID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsIHNlZyA9PlxuICAgIHNlZ1xuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpXG4gICAgfD4gU2tlbC5ta1xuICApO1xuXG5sZXQgc29ydGVkX2NoaWxkcmVuID0gTGlzdC5jb25jYXRfbWFwKFBpZWNlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBzZWcgPT4gTGlzdC5tYXAoc25kLCBzb3J0ZWRfY2hpbGRyZW4oc2VnKSk7XG5cbm1vZHVsZSBUcmltID0ge1xuICB0eXBlIHNlZyA9IHQ7XG4gIHR5cGUgdCA9IEFiYS50KGxpc3QoU2Vjb25kYXJ5LnQpLCBHcm91dC50KTtcblxuICBsZXQgZW1wdHkgPSBBYmEubWsoW1tdXSwgW10pO1xuXG4gIGxldCByZXYgPSBBYmEucmV2KExpc3QucmV2LCBGdW4uaWQpO1xuXG4gIGxldCBjb25zX3cgPSAodzogU2Vjb25kYXJ5LnQsICh3c3MsIGdzKSkgPT4ge1xuICAgIC8vIHNhZmUgYmMgQWJhIGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIEEgZWxlbWVudFxuICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgIEFiYS5tayhbW3csIC4uLndzXSwgLi4ud3NzXSwgZ3MpO1xuICB9O1xuICBsZXQgY29uc19nID0gKGc6IEdyb3V0LnQsICh3c3MsIGdzKSkgPT5cbiAgICBBYmEubWsoW1tdLCAuLi53c3NdLCBbZywgLi4uZ3NdKTtcblxuICBsZXQgd3MgPSAoKHdzcywgXyk6IHQpOiBzZWcgPT4gTGlzdC4obWFwKFBpZWNlLnNlY29uZGFyeSwgY29uY2F0KHdzcykpKTtcblxuICAvLyBwb3N0Y29uZDogcmVzdWx0IGlzIGVpdGhlciA8d3M+IG9yIDx3cyxnLHdzJz5cbiAgbGV0IG1lcmdlID0gKCh3c3MsIGdzKTogdCk6IHQgPT4ge1xuICAgIHN3aXRjaCAoR3JvdXQubWVyZ2UoZ3MpKSB7XG4gICAgfCBOb25lID0+IEFiYS5tayhbTGlzdC5jb25jYXQod3NzKV0sIFtdKVxuICAgIHwgU29tZShnKSA9PlxuICAgICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gICAgICBBYmEubWsoW3dzLCBMaXN0LmNvbmNhdCh3c3MpXSwgW2ddKTtcbiAgICB9O1xuICB9O1xuICAvLyBzYW1lIGFzIG1lcmdlIGJ1dCB0eXBlIGVuY29kZXMgcG9zdGNvbmRcbiAgLy8gbGV0IG1lcmdlZCA9ICh0cmltOiB0KTogKGxpc3QoU2Vjb25kYXJ5LnQpLCBvcHRpb24oKEdyb3V0LnQsIGxpc3QoU2Vjb25kYXJ5LnQpKSkpID0+IHtcbiAgLy8gICBsZXQgKHdzcywgZ3MpID0gbWVyZ2UodHJpbSk7XG4gIC8vICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gIC8vICAgc3dpdGNoIChncykge1xuICAvLyAgIHwgW10gPT4gKHdzLCBOb25lKVxuICAvLyAgIHwgW2csIC4uLl9dID0+ICh3cywgU29tZSgoZywgTGlzdC5jb25jYXQod3NzKSkpKVxuICAvLyAgIH07XG4gIC8vIH07XG4gIGxldCByZWMgcm1fdXBfdG9fb25lX3NwYWNlID1cbiAgICAgICAgICAod3NzOiBsaXN0KGxpc3QoU2Vjb25kYXJ5LnQpKSk6IGxpc3QobGlzdChTZWNvbmRhcnkudCkpID0+XG4gICAgc3dpdGNoICh3c3MpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbW3csIC4uLndzXSwgLi4ud3NzXSB3aGVuIFNlY29uZGFyeS5pc19zcGFjZSh3KSA9PiBMaXN0LmNvbnMod3MsIHdzcylcbiAgICB8IFt3cywgLi4ud3NzXSA9PiBMaXN0LmNvbnMod3MsIHJtX3VwX3RvX29uZV9zcGFjZSh3c3MpKVxuICAgIH07XG5cbiAgbGV0IGFkZF9ncm91dCA9ICh+ZDogRGlyZWN0aW9uLnQsIHNoYXBlOiBOaWIuU2hhcGUudCwgKHdzcywgZ3MpOiB0KTogdCA9PiB7XG4gICAgbGV0IGcgPSBHcm91dC5ta19maXRzX3NoYXBlKHNoYXBlKTtcbiAgICAvKiBXaGVuIGFkZGluZyBhIGdyb3V0IHRvIHRoZSBsZWZ0LCBjb25zdW1lIGEgc3BhY2UuIE5vdGVcbiAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgYWNjb3VudCB0aGUgb3RoZXIgZGlyZWN0aW9uIGluICdyZWdyb3V0JyBiZWxvdyAqL1xuICAgIGxldCB3c3MnID1cbiAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgLyogUmlnaHQgQ29udmV4IGUuZy4gQmFja3NwYWNlIGAxfCArIDJgID0+IGB8PD4gKyAyYCAoRG9uJ3QgY29uc3VtZSkgKi9cbiAgICAgIC8qIFJpZ2h0IENvbmNhdmUgZS5nLiBCYWNrc3BhY2UgYDEgK3wgMWAgPT4gYDEgfD48IDFgIChEb24ndCBjb25zdW1lKSAqL1xuICAgICAgfCBSaWdodCA9PiB3c3NcbiAgICAgIC8qIExlZnQgQ29udmV4IGUuZy4gSW5zZXJ0IFNwYWNlIGBbfF1gID0+IGBbIHxdYCA9PiBgWzw+fF1gIChDb25zdW1lKSAqL1xuICAgICAgLyogTGVmdCBDb25jYXZlIGUuZy4gSW5zZXJ0IFwiaVwiIGBsZXQgYSA9IDEgaXxgID0+IGBsZXQgYSA9IDE+PGl8YCAoQ29uc3VtZSkgKi9cbiAgICAgIHwgTGVmdCA9PiBybV91cF90b19vbmVfc3BhY2Uod3NzKVxuICAgICAgfTtcbiAgICBjb25zX2coZywgKHdzcycsIGdzKSk7XG4gIH07XG5cbiAgLy8gYXNzdW1lcyBncm91dCBpbiB0cmltIGZpdCByIGJ1dCBtYXkgbm90IGZpdCBsXG4gIGxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCAobCwgcik6IE5pYnMuc2hhcGVzLCB0cmltOiB0KTogdCA9PlxuICAgIGlmIChOaWIuU2hhcGUuZml0cyhsLCByKSkge1xuICAgICAgbGV0ICh3c3MsIGdzKSA9IHRyaW07XG4gICAgICAvKiBXaGVuIHJlbW92aW5nIGEgZ3JvdXQgdG8gdGhlIExlZnQsIGFkZCBhIHNwYWNlLiBOb3RlXG4gICAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgICBhY2NvdW50IHRoZSBvdGhlciBkaXJlY3Rpb24gaW4gJ2FkZF9ncm91dCcgYWJvdmUgKi9cbiAgICAgIGxldCBuZXdfc3BhY2VzID1cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgIChnOiBHcm91dC50KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGcuc2hhcGUsIGQpIHtcbiAgICAgICAgICAgIC8qIExlZnQgQ29uY2F2ZSBlLmcuIGBsZXQgYSA9IDE+PGlufGAgPT4gYGxldCBhID0gMSBpbiB8YCAoQWRkKSAqL1xuICAgICAgICAgICAgLyogTk9URShhbmRyZXcpOiBOb3Qgc3VyZSB3aHkgZCBoZXJlIHNlZW1zIHJldmVyc2VkLiBBbHNvIG5vdCBzdXJlIHdoeVxuICAgICAgICAgICAgICogcmVzdHJpY3Rpb24gdG8gY29uY2F2ZSBpcyBuZWNlc3NhcnkgYnV0IHNlZW1zIHRvIHByZXZlbnQgYWRkaXRpb25cbiAgICAgICAgICAgICAqIG9mIG5lZWRsZXNzIHdoaXRlc3BhY2UgaW4gc29tZSBzaXR1YXRpb24gc3VjaCBhcyB3aGVuIGluc2VydGluZ1xuICAgICAgICAgICAgICogb24gYCh8KWAsIHdoaWNoIHNlZW1zIHRvIGFkZCB3aGl0ZXNwYWNlIGFmdGVyIHRoZSByaWdodCBwYXJlbnNcbiAgICAgICAgICAgICAqIHdpdGhvdXQgdGhpcyBzaGFwZSByZXN0aXJjdGlvbiAqL1xuICAgICAgICAgICAgfCAoQ29uY2F2ZSwgUmlnaHQpID0+IFNvbWUoU2Vjb25kYXJ5Lm1rX3NwYWNlKGcuaWQpKVxuICAgICAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdzLFxuICAgICAgICApO1xuICAgICAgLyogTm90ZSBiZWxvdyB0aGF0IGl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGFkZCB0aGUgbmV3IHNwYWNlc1xuICAgICAgICAgYmVmb3JlIHRoZSBleGlzdGluZyB3c3MsIGFzIGRvaW5nIG90aGVyd2lzZSBtYXkgcmVzdWx0XG4gICAgICAgICBpbiB0aGUgbmV3IHNwYWNlcyBlbmRpbmcgdXAgbGVhZGluZyBhIGxpbmUuIFRoaXMgYXBwcm9hY2ggaXNcbiAgICAgICAgIHNvbWV3aGF0IGhhY2t5OyB3ZSBtYXkganVzdCB3YW50IHRvIHJlbW92ZSBhbGwgdGhlIHNwYWNlc1xuICAgICAgICAgd2hlbmV2ZXIgdGhlcmUgaXMgYSBsaW5lYnJlYWs7IG5vdCBtYWtpbmcgdGhpcyBjaGFuY2Ugbm93XG4gICAgICAgICBhcyBJJ20gd29ycmllZCBhYm91dCBpdCBpbnRyb2R1Y2luZyBzdWJ0bGUgamFuayAqL1xuXG4gICAgICAvKiBEYXZpZCBQUiBjb21tZW50OlxuICAgICAgICAgQWxsIHRoZXNlIGNoYW5nZXMgYXNzdW1lIHRoZSB0cmltIGlzIG9yZGVyZWQgbGVmdC10by1yaWdodCxcbiAgICAgICAgIGJ1dCB0aGlzIG1heSBub3QgYmUgdHJ1ZSB3aGVuIFRyaW0ucmVncm91dCBpcyBjYWxsZWQgYnlcbiAgICAgICAgIHJlZ3JvdXRfYWZmaXgoTGVmdCwgLi4uKSBiZWxvdywgd2hpY2ggcmV2ZXJzZXMgdGhlIGFmZml4IGJlZm9yZVxuICAgICAgICAgcHJvY2Vzc2luZy4gKFRoaXMgZGlkbid0IHBvc2UgYW4gaXNzdWUgYmVmb3JlIHdpdGggdHJpbSBiZWNhdXNlXG4gICAgICAgICB0aGUgc2Vjb25kYXJ5IGFuZCBncm91dCBhcmUgc3ltbWV0cmljIGFuZCB0aGUgZXhpc3RpbmcgY29kZVxuICAgICAgICAgZGlkbid0IGFmZmVjdCBvcmRlci4pXG4gICAgICAgICBQcm9wZXIgZml4IHdvdWxkIHJlcXVpcmUgdGhyZWFkaW5nIHRocm91Z2ggZGlyZWN0aW9uYWwgcGFyYW1ldGVyXG4gICAgICAgICBmcm9tIHJlZ3JvdXRfYWZmaXggaW50byBUcmltLnJlZ3JvdXQgYW5kIGFwcGVuZGluZyB0byBjb3JyZWN0IHNpZGUuXG4gICAgICAgICBTaW1pbGFyIHRocmVhZGluZyBmb3IgYWRkX2dyb3V0LiBUaGF0IHNhaWQsIEkgY291bGRuJ3QgdHJpZ2dlciBhbnlcbiAgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yIHdpdGggdGhlc2UgY2hhbmdlcyBhbmQgYW0gZmluZSB3aXRoIGdvaW5nIGFoZWFkXG4gICAgICAgICB3aXRoIHRoaXMgZm9yIG5vdy4gKi9cbiAgICAgIGxldCB3c3MgPSBbbmV3X3NwYWNlcyBAIExpc3QuY29uY2F0KHdzcyldO1xuICAgICAgQWJhLm1rKHdzcywgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIGdzKSBhcyBtZXJnZWQgPSBtZXJnZSh0cmltKTtcbiAgICAgIHN3aXRjaCAoZ3MpIHtcbiAgICAgIHwgW10gPT4gYWRkX2dyb3V0KH5kLCBsLCBtZXJnZWQpXG4gICAgICB8IFtfLCAuLi5fXSA9PiBtZXJnZWRcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgdG9fc2VnID0gKHRyaW06IHQpID0+XG4gICAgdHJpbVxuICAgIHw+IEFiYS5qb2luKExpc3QubWFwKFBpZWNlLnNlY29uZGFyeSksIGcgPT4gW1BpZWNlLkdyb3V0KGcpXSlcbiAgICB8PiBMaXN0LmNvbmNhdDtcbn07XG5cbmxldCByZWMgcmVncm91dCA9ICgobCwgciksIHNlZykgPT4ge1xuICBsZXQgKHRyaW0sIHIsIHRsKSA9IHJlZ3JvdXRfYWZmaXgoRGlyZWN0aW9uLlJpZ2h0LCBzZWcsIHIpO1xuICBsZXQgdHJpbSA9IFRyaW0ucmVncm91dChEaXJlY3Rpb24uUmlnaHQsIChsLCByKSwgdHJpbSk7XG4gIFRyaW0udG9fc2VnKHRyaW0pIEAgdGw7XG59XG5hbmQgcmVncm91dF9hZmZpeCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCBhZmZpeDogdCwgcjogTmliLlNoYXBlLnQpOiAoVHJpbS50LCBOaWIuU2hhcGUudCwgdCkgPT4ge1xuICBsZXQgKHRyaW0sIHMsIGFmZml4KSA9XG4gICAgZm9sZF9yaWdodChcbiAgICAgIChwOiBQaWVjZS50LCAodHJpbSwgciwgdGwpKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICB8IFNlY29uZGFyeSh3KSA9PiAoVHJpbS5jb25zX3codywgdHJpbSksIHIsIHRsKVxuICAgICAgICB8IEdyb3V0KGcpID0+IChUcmltLihtZXJnZShjb25zX2coZywgdHJpbSkpKSwgciwgdGwpXG4gICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAgICAgICAgIChoZCwgdGwpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdGwgPSB0bDtcbiAgICAgICAgICAgICAgICBsZXQgaGQgPSByZWdyb3V0KE5pYi5TaGFwZS4oY29uY2F2ZSgpLCBjb25jYXZlKCkpLCBoZCk7XG4gICAgICAgICAgICAgICAgW2hkLCAuLi50bF07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHQuY2hpbGRyZW4sXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcCA9IFBpZWNlLlRpbGUoey4uLnQsIGNoaWxkcmVufSk7XG4gICAgICAgICAgbGV0IChsJywgcicpID1cbiAgICAgICAgICAgIFRpbGUuc2hhcGVzKHQpIHw+IChkID09IExlZnQgPyBUdXBsZVV0aWwuc3dhcCA6IEZ1bi5pZCk7XG4gICAgICAgICAgbGV0IHRyaW0gPSBUcmltLnJlZ3JvdXQoZCwgKHInLCByKSwgdHJpbSk7XG4gICAgICAgICAgKFRyaW0uZW1wdHksIGwnLCBbcCwgLi4uVHJpbS50b19zZWcodHJpbSldIEAgdGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGQgPT0gTGVmdCA/IExpc3QucmV2IDogRnVuLmlkKShhZmZpeCksXG4gICAgICAoQWJhLm1rKFtbXV0sIFtdKSwgciwgZW1wdHkpLFxuICAgICk7XG4gIGQgPT0gTGVmdCA/IChUcmltLnJldih0cmltKSwgcywgcmV2KGFmZml4KSkgOiAodHJpbSwgcywgYWZmaXgpO1xufTtcblxuLy8gZm9yIGludGVybmFsIHVzZSB3aGVuIGRlYWxpbmcgd2l0aCBzZWdtZW50cyBpbiByZXZlcnNlIG9yZGVyIChlZyBBZmZpeC5yZSlcbi8vIGxldCBmbGlwX25pYnMgPVxuLy8gICBMaXN0Lm1hcChcbi8vICAgICBmdW5cbi8vICAgICB8IChQaWVjZS5TZWNvbmRhcnkoXykgfCBHcm91dChfKSkgYXMgcCA9PiBwXG4vLyAgICAgfCBUaWxlKHQpID0+IFRpbGUoey4uLnQsIG1vbGQ6IE1vbGQuZmxpcF9uaWJzKHQubW9sZCl9KSxcbi8vICAgKTtcblxubGV0IHNwbGl0X2J5X21hdGNoaW5nID0gKGlkOiBJZC50KTogKHQgPT4gQWJhLnQodCwgVGlsZS50KSkgPT5cbiAgQWJhLnNwbGl0KFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuIHQuaWQgPT0gaWQgPT4gRWl0aGVyLlIodClcbiAgICB8IHAgPT4gTChwKSxcbiAgKTtcblxuLy8gbW9kdWxlIE1hdGNoID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xubGV0IHJlYyByZWFzc2VtYmxlID0gKHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChpbmNvbXBsZXRlX3RpbGVzKHNlZykpIHtcbiAgfCBbXSA9PiBzZWdcbiAgfCBbdCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKEFiYS50cmltKHNwbGl0X2J5X21hdGNoaW5nKHQuaWQsIHNlZykpKSB7XG4gICAgfCBOb25lID0+IHNlZ1xuICAgIHwgU29tZSgoc2VnX2wsIG1hdGNoLCBzZWdfcikpID0+XG4gICAgICBsZXQgdCA9IFRpbGUucmVhc3NlbWJsZShtYXRjaCk7XG4gICAgICBsZXQgY2hpbGRyZW4gPSBMaXN0Lm1hcChyZWFzc2VtYmxlLCB0LmNoaWxkcmVuKTtcbiAgICAgIGxldCBwID0gVGlsZS50b19waWVjZSh7Li4udCwgY2hpbGRyZW59KTtcbiAgICAgIHNlZ19sIEAgW3AsIC4uLnJlYXNzZW1ibGUoc2VnX3IpXTtcbiAgICB9XG4gIH07XG5cbmxldCB0cmltX2Y6IChsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSksIERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKHRyaW1fbCwgZCwgcHMpID0+IHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQgPT4gcHMgfD4gdHJpbV9sXG4gICAgfCBSaWdodCA9PiBwcyB8PiBMaXN0LnJldiB8PiB0cmltX2wgfD4gTGlzdC5yZXZcbiAgICB9O1xuICB9O1xuXG5sZXQgdHJpbV9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgc2Vjb25kYXJ5ICovXG4gICAgbGV0IHJlYyB0cmltX2wgPSB4cyA9PlxuICAgICAgc3dpdGNoICh4cykge1xuICAgICAgfCBbXSA9PiBbXVxuICAgICAgfCBbUGllY2UuU2Vjb25kYXJ5KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgdHJpbV9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBncm91dCAqL1xuICAgIGxldCByZWMgdHJpbV9sOiBsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSkgPVxuICAgICAgeHMgPT5cbiAgICAgICAgc3dpdGNoICh4cykge1xuICAgICAgICB8IFtdID0+IFtdXG4gICAgICAgIHwgW0dyb3V0KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBzZWNvbmRhcnksIGNvbnRpbnVpbmdcbiAgICAgICB0byB0cmltIGFyb3VuZCBncm91dCB1bnRpbCBmaXJzdCBUaWxlIGlzIHJlYWNoZWQgKi9cbiAgICBsZXQgcmVjIHRyaW1fbDogbGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpID1cbiAgICAgIHhzID0+XG4gICAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICB8IFtTZWNvbmRhcnkoXykgfCBHcm91dChfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCB0cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgZ3JvdXQsIHNraXBwaW5nIG92ZXIgc2Vjb25kYXJ5LFxuICAgICAgIGJ1dCBub3Qgc2tpcHBpbmcgb3ZlciBvdGhlciBwaWVjZXMuICovXG4gICAgbGV0IHJlYyB0cmltX2w6IGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSA9XG4gICAgICB4cyA9PlxuICAgICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgfCBbU2Vjb25kYXJ5KHcpLCAuLi54c10gPT4gW1NlY29uZGFyeSh3KSwgLi4udHJpbV9sKHhzKV1cbiAgICAgICAgfCBbR3JvdXQoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgZWRnZV9zaGFwZV9vZiA9IChkOiBEaXJlY3Rpb24udCwgcHM6IHQpOiBvcHRpb24oTmliLlNoYXBlLnQpID0+IHtcbiAgbGV0IHRyaW1tZWQgPSB0cmltX3NlY29uZGFyeShkLCBwcyk7XG4gIHN3aXRjaCAoZCwgTGlzdFV0aWwuaGRfb3B0KHRyaW1tZWQpLCBMaXN0VXRpbC5sYXN0X29wdCh0cmltbWVkKSkge1xuICB8IChSaWdodCwgXywgU29tZShwKSkgPT4gcCB8PiBQaWVjZS5zaGFwZXMgfD4gT3B0aW9uLm1hcChzbmQpXG4gIHwgKExlZnQsIFNvbWUocCksIF8pID0+IHAgfD4gUGllY2Uuc2hhcGVzIHw+IE9wdGlvbi5tYXAoZnN0KVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGVkZ2VfZGlyZWN0aW9uX29mID0gKGQ6IERpcmVjdGlvbi50LCBwczogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgT3B0aW9uLm1hcChOaWIuU2hhcGUuYWJzb2x1dGUoZCksIGVkZ2Vfc2hhcGVfb2YoZCwgcHMpKTtcblxubGV0IHJlYyBzZXJpYWxpemUgPSAoc2VnOiB0KSA9PlxuICBzZWdcbiAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgKFBpZWNlLlNlY29uZGFyeShfKSB8IEdyb3V0KF8pIHwgVGlsZSh7c2hhcmRzOiBbX10sIF99KSkgYXMgcCA9PiBbXG4gICAgICAgICAgIHAsXG4gICAgICAgICBdXG4gICAgICAgfCBUaWxlKHQpID0+IHtcbiAgICAgICAgICAgbGV0IHNoYXJkcyA9XG4gICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICBUaWxlLnRvX3BpZWNlLFxuICAgICAgICAgICAgICAgVGlsZS5zcGxpdF9zaGFyZHModC5pZCwgdC5sYWJlbCwgdC5tb2xkLCB0LnNoYXJkcyksXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gTGlzdC5tYXAoc2VyaWFsaXplLCB0LmNoaWxkcmVuKTtcbiAgICAgICAgICAgQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pXG4gICAgICAgICAgIHw+IEFiYS5qb2luKHMgPT4gW3NdLCBGdW4uaWQpXG4gICAgICAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgICAgICAgfSxcbiAgICAgKTtcblxubGV0IHNhbWVsaW5lX3NlY29uZGFyeSA9XG4gIExpc3QuZm9yX2FsbChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiAhU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KVxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IGV4cGVjdGVkX3NvcnRzID0gKHNvcnQ6IFNvcnQudCwgc2VnOiB0KTogbGlzdCgoaW50LCBTb3J0LnQpKSA9PiB7XG4gIGxldCBwID0gTGlzdC5udGgoc2VnKTtcbiAgbGV0IHJlYyBnbyA9IChzb3J0OiBTb3J0LnQsIHNrZWw6IFNrZWwudCk6IGxpc3QoKGxpc3QoaW50KSwgU29ydC50KSkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpO1xuICAgIGxldCBpbnNpZGVfc29ydHMgPVxuICAgICAgQWJhLmFiYV90cmlwbGVzKHJvb3QpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChuX2wsIGtpZCwgbl9yKSkgPT4ge1xuICAgICAgICAgICBsZXQgKF8sIHNfbCkgPSBQaWVjZS5uaWJfc29ydHMocChuX2wpKTtcbiAgICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHAobl9yKSk7XG4gICAgICAgICAgIGxldCBzID0gc19sID09IHNfciA/IHNfbCA6IFNvcnQuQW55O1xuICAgICAgICAgICBnbyhzLCBraWQpO1xuICAgICAgICAgfSk7XG4gICAgbGV0IG91dHNpZGVfc29ydHMgPSB7XG4gICAgICBsZXQgbnMgPSBBYmEuZ2V0X2FzKHJvb3QpO1xuICAgICAgbGV0IChsX3NvcnQsIF8pID0gUGllY2UubmliX3NvcnRzKHAoQWJhLmZpcnN0X2Eocm9vdCkpKTtcbiAgICAgIGxldCAoXywgcl9zb3J0KSA9IFBpZWNlLm5pYl9zb3J0cyhwKEFiYS5sYXN0X2Eocm9vdCkpKTtcbiAgICAgIHN3aXRjaCAoc2tlbCkge1xuICAgICAgfCBPcChfKSA9PiBbKG5zLCBzb3J0KV1cbiAgICAgIHwgUHJlKF8sIHIpID0+IFsobnMsIHNvcnQpXSBAIGdvKHJfc29ydCwgcilcbiAgICAgIHwgUG9zdChsLCBfKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldXG4gICAgICB8IEJpbihsLCBfLCByKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldIEAgZ28ocl9zb3J0LCByKVxuICAgICAgfTtcbiAgICB9O1xuICAgIG91dHNpZGVfc29ydHMgQCBpbnNpZGVfc29ydHM7XG4gIH07XG4gIGdvKHNvcnQsIHNrZWwoc2VnKSlcbiAgfD4gTGlzdC5jb25jYXRfbWFwKCgobnMsIHMpKSA9PiBMaXN0Lm1hcChuID0+IChuLCBzKSwgbnMpKTtcbn07XG5cbmxldCByZWMgaG9sZXMgPSAoc2VnbWVudDogdCk6IGxpc3QoR3JvdXQudCkgPT5cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuU2Vjb25kYXJ5KF8pID0+IFtdXG4gICAgfCBUaWxlKHQpID0+IExpc3QuY29uY2F0X21hcChob2xlcywgdC5jaGlsZHJlbilcbiAgICB8IEdyb3V0KGcpID0+IFtnXSxcbiAgICBzZWdtZW50LFxuICApO1xuXG5sZXQgZ2V0X2NoaWxkcmVuczogdCA9PiBsaXN0KHQpID1cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmNoaWxkcmVuXG4gICAgfCBfID0+IFtdLFxuICApO1xuXG5sZXQgcmVjIGdldF9pbmNvbXBsZXRlX2lkcyA9IChzZWc6IHQpOiBsaXN0KElkLnQpID0+XG4gIExpc3QuY29uY2F0X21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICBsZXQgaWRzID0gTGlzdC5jb25jYXRfbWFwKGdldF9pbmNvbXBsZXRlX2lkcywgdC5jaGlsZHJlbik7XG4gICAgICAgIFRpbGUuaXNfY29tcGxldGUodCkgPyBpZHMgOiBbdC5pZCwgLi4uaWRzXTtcbiAgICAgIH1cbiAgICB8IF8gPT4gW10sXG4gICAgc2VnLFxuICApO1xuXG5sZXQgaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkZWxpbWl0ZWRzID0gKHNlZzogdCk6IGxpc3QoSWQudCkgPT5cbiAgZ2V0X2NoaWxkcmVucyhzZWcpIHw+IExpc3QuY29uY2F0IHw+IGdldF9pbmNvbXBsZXRlX2lkcztcblxubGV0IGZpcnN0X3N0cmluZyA9XG4gIGZ1blxuICB8IFtdID0+IFwiRklSU1RcIlxuICB8IFtQaWVjZS5TZWNvbmRhcnkodyksIC4uLl9dID0+IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfCBbUGllY2UuR3JvdXQoXyksIC4uLl9dID0+IFwiP1wiXG4gIHwgW1BpZWNlLlRpbGUodCksIC4uLl9dID0+IHQubGFiZWwgfD4gTGlzdC5oZDtcblxubGV0IGxhc3Rfc3RyaW5nID1cbiAgZnVuXG4gIHwgW10gPT4gXCJMQVNUXCJcbiAgfCB4cyA9PlxuICAgIHN3aXRjaCAoTGlzdFV0aWwubGFzdCh4cykpIHtcbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpXG4gICAgfCBQaWVjZS5Hcm91dChfKSA9PiBcIj9cIlxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmxhYmVsIHw+IExpc3RVdGlsLmxhc3RcbiAgICB9O1xuIiwib3BlbiBVdGlsO1xuXG4vLyBtb2R1bGUgUHJlZml4ID0gQWZmaXguTWFrZShPcmllbnRhdGlvbi5MKTtcbi8vIG1vZHVsZSBTdWZmaXggPSBBZmZpeC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoU2VnbWVudC50LCBTZWdtZW50LnQpO1xuXG5sZXQgZW1wdHkgPSBTZWdtZW50LihlbXB0eSwgZW1wdHkpO1xuXG5sZXQgbm9fc2libGluZ3M6IHQgPT4gYm9vbCA9IHMgPT4gcyA9PSBlbXB0eTtcblxubGV0IHVuemlwOiAoaW50LCBTZWdtZW50LnQpID0+IHQgPSBMaXN0VXRpbC5zcGxpdF9uO1xubGV0IHppcCA9ICh+c2VsPVNlZ21lbnQuZW1wdHksIChwcmUsIHN1Zik6IHQpID0+XG4gIFNlZ21lbnQuY29uY2F0KFtwcmUsIHNlbCwgc3VmXSk7XG5cbmxldCBwcmVwZW5kID0gKGQ6IERpcmVjdGlvbi50LCBzZWc6IFNlZ21lbnQudCwgKGwsIHIpOiB0KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IChsIEAgc2VnLCByKVxuICB8IFJpZ2h0ID0+IChsLCBzZWcgQCByKVxuICB9O1xuXG5sZXQgY29uY2F0ID0gKHNpYnNzOiBsaXN0KHQpKTogdCA9PlxuICBzaWJzc1xuICB8PiBMaXN0LnNwbGl0XG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpXG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5jb25jYXQpXG4gIHw+IFBhaXJVdGlsLm1hcF9zbmQoTGlzdC5jb25jYXQpO1xuXG4vLyBsZXQgY29uc2lzdGVudF9zaGFyZHMgPSAoKHByZSwgc3VmKTogdCk6IGJvb2wgPT4ge1xuLy8gICBsZXQgc2hhcmRzX3ByZSA9IFByZWZpeC5zaGFyZHMocHJlKTtcbi8vICAgbGV0IHNoYXJkc19zdWYgPSBTdWZmaXguc2hhcmRzKHN1Zik7XG4vLyAgIExpc3RVdGlsLmdyb3VwX2J5KFNoYXJkLmlkLCBzaGFyZHNfcHJlIEAgc2hhcmRzX3N1Zilcbi8vICAgfD4gTGlzdC5mb3JfYWxsKCgoXywgc2hhcmRzKSkgPT4gU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMpICE9IFtdKTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoKHByZSwgXykgYXMgc2liczogdCwgczogU29ydC50KTogdCA9PlxuICBTZWdtZW50LnJlbW9sZCh6aXAoc2licyksIHMpIHw+IHVuemlwKExpc3QubGVuZ3RoKHByZSkpO1xuXG5sZXQgc2hhcGVzID0gKChwcmUsIHN1Zik6IHQpID0+IHtcbiAgbGV0IHMgPSBOaWIuU2hhcGUuY29uY2F2ZSgpO1xuICBsZXQgKF8sIGwsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICBsZXQgKF8sIHIsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgKGwsIHIpO1xufTtcblxubGV0IGlzX21pc21hdGNoID0gKChsLCByKTogdCk6IGJvb2wgPT4ge1xuICAvKiBwcmVkaWN0cyBpZiBncm91dCBpcyBuZWNjZXNzYXJ5IGJldHdlZW4gc2libGluZ3MgKi9cbiAgc3dpdGNoIChTZWdtZW50LmVkZ2Vfc2hhcGVfb2YoTGVmdCwgciksIFNlZ21lbnQuZWRnZV9zaGFwZV9vZihSaWdodCwgbCkpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFsc2VcbiAgfCAoczEsIHMyKSA9PiBzMSA9PSBzMlxuICB9O1xufTtcblxubGV0IGNvbnRhaW5zX21hdGNoaW5nID0gKHQ6IFRpbGUudCwgKHByZSwgc3VmKTogdCkgPT5cbiAgU2VnbWVudC4oY29udGFpbnNfbWF0Y2hpbmcodCwgcHJlKSB8fCBjb250YWluc19tYXRjaGluZyh0LCBzdWYpKTtcblxubGV0IHB1c2ggPSAob250bzogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIChwcmUsIHN1Zik6IHQpOiB0ID0+XG4gIHN3aXRjaCAob250bykge1xuICB8IExlZnQgPT4gKHByZSBAIFtwXSwgc3VmKVxuICB8IFJpZ2h0ID0+IChwcmUsIFtwLCAuLi5zdWZdKVxuICB9O1xuXG5sZXQgcG9wID0gKGZyb206IERpcmVjdGlvbi50LCAocHJlLCBzdWYpOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChmcm9tKSB7XG4gIHwgTGVmdCA9PlxuICAgIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHByZSlcbiAgICB8PiBPcHRpb24ubWFwKCgocHJlLCBwKSkgPT4ge1xuICAgICAgICAgbGV0IChwcmUnLCBwKSA9IFBpZWNlLnBvcF9yKHApO1xuICAgICAgICAgKHAsIChwcmUgQCBwcmUnLCBzdWYpKTtcbiAgICAgICB9KVxuICB8IFJpZ2h0ID0+XG4gICAgTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0KHN1ZilcbiAgICB8PiBPcHRpb24ubWFwKCgocCwgc3VmKSkgPT4ge1xuICAgICAgICAgbGV0IChwLCBzdWYnKSA9IFBpZWNlLnBvcF9sKHApO1xuICAgICAgICAgKHAsIChwcmUsIHN1ZicgQCBzdWYpKTtcbiAgICAgICB9KVxuICB9O1xuXG5sZXQgaW5jb21wbGV0ZV90aWxlcyA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyk7XG5cbmxldCBzcGxpdF9ieV9tYXRjaGluZyA9IGlkID0+IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc3BsaXRfYnlfbWF0Y2hpbmcoaWQpKTtcblxubGV0IHJlYXNzZW1ibGUgPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LnJlYXNzZW1ibGUpO1xuXG5sZXQgcmVncm91dCA9ICgocHJlLCBzdWYpOiB0KSA9PiB7XG4gIGxldCBzID0gTmliLlNoYXBlLmNvbmNhdmUoKTtcbiAgbGV0IHN1ZiA9IFNlZ21lbnQucmVncm91dF9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgbGV0ICh0cmltX2wsIHNfbCwgcHJlKSA9IFNlZ21lbnQucmVncm91dF9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICAoKHByZSwgc19sLCB0cmltX2wpLCBzdWYpO1xufTtcblxubGV0IGxlZnRfbmVpZ2hib3I6IHQgPT4gb3B0aW9uKFBpZWNlLnQpID0gKChsLCBfKSkgPT4gTGlzdFV0aWwubGFzdF9vcHQobCk7XG5cbmxldCByaWdodF9uZWlnaGJvcjogdCA9PiBvcHRpb24oUGllY2UudCkgPSAoKF8sIHIpKSA9PiBMaXN0VXRpbC5oZF9vcHQocik7XG5cbmxldCBuZWlnaGJvcnM6IHQgPT4gKG9wdGlvbihQaWVjZS50KSwgb3B0aW9uKFBpZWNlLnQpKSA9XG4gIG4gPT4gKGxlZnRfbmVpZ2hib3IobiksIHJpZ2h0X25laWdoYm9yKG4pKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5ID0gKChsX3NpYnMsIHJfc2licyk6IHQpID0+IChcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShSaWdodCwgbF9zaWJzKSxcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fZ3JvdXQgPSAoKGxfc2licywgcl9zaWJzKTogdCkgPT4gKFxuICBTZWdtZW50LnRyaW1fZ3JvdXQoUmlnaHQsIGxfc2licyksXG4gIFNlZ21lbnQudHJpbV9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCA9ICgobF9zaWJzLCByX3NpYnMpOiB0KSA9PiAoXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnlfYW5kX2dyb3V0KFJpZ2h0LCBsX3NpYnMpLFxuICBTZWdtZW50LnRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IGRpcmVjdGlvbl9iZXR3ZWVuID0gKChsLCByKTogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRmFjaW5nIGRpcmVjdGlvbiBvZiB0aGUgc2hhcmVkIG5pYiBiZXR3ZWVuIGwgJiByICovXG4gIHN3aXRjaCAoU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihMZWZ0LCByKSkge1xuICB8IE5vbmUgPT4gU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihSaWdodCwgbClcbiAgfCBkID0+IGRcbiAgfTtcblxubGV0IG1vbGRfZml0dGluZ19iZXR3ZWVuID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBzaWJzOiB0KTogTW9sZC50ID0+XG4gIHN3aXRjaCAoZGlyZWN0aW9uX2JldHdlZW4oc2licykpIHtcbiAgfCBTb21lKGQpID0+IE1vbGQuY2hldnJvbihzb3J0LCBwLCBkKVxuICB8IE5vbmUgPT4gTW9sZC5ta19vcChzb3J0LCBbXSlcbiAgfTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc29ydGVkX2NoaWxkcmVuKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zaGFyZF9hZmZpeDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBsYWJlbDogTGFiZWwudCxcbiAgbW9sZDogTW9sZC50LFxuICBzaGFyZHM6IChsaXN0KGludCksIGxpc3QoaW50KSksXG4gIGNoaWxkcmVuOiAobGlzdChTZWdtZW50LnQpLCBsaXN0KFNlZ21lbnQudCkpLFxufTtcblxuLy8gVE9ETyhkKSByZXZpc2l0IG5hbWluZyB3LnIudC4gb3V0ZXIgdnMgaW5uZXIgc2hhcmRzXG5sZXQgbF9zaGFyZCA9IGEgPT5cbiAgTGlzdFV0aWwuaGRfb3B0KGZzdChhLnNoYXJkcykpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbmxldCByX3NoYXJkID0gYSA9PlxuICBMaXN0VXRpbC5sYXN0X29wdChzbmQoYS5zaGFyZHMpKVxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG5cbmxldCBuaWJzID0gKGE6IHQpID0+IHtcbiAgbGV0IChsLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9bF9zaGFyZChhKSwgYS5tb2xkKTtcbiAgbGV0IChfLCByKSA9IE1vbGQubmlicyh+aW5kZXg9cl9zaGFyZChhKSwgYS5tb2xkKTtcbiAgKGwsIHIpO1xufTtcbmxldCBzaGFwZXMgPSBhID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnMoYSk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB6aXAgPSAoY2hpbGQ6IFNlZ21lbnQudCwge2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbn06IHQpOiBUaWxlLnQgPT4ge1xuICBpZCxcbiAgbGFiZWwsXG4gIG1vbGQsXG4gIHNoYXJkczogZnN0KHNoYXJkcykgQCBzbmQoc2hhcmRzKSxcbiAgY2hpbGRyZW46IGZzdChjaGlsZHJlbikgQCBbY2hpbGQsIC4uLnNuZChjaGlsZHJlbildLFxufTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IChhOiB0KSA9PiB7XG4gIGxldCBuID0gTGlzdC5sZW5ndGgoZnN0KGEuY2hpbGRyZW4pKTtcbiAgbGV0IHQgPSB6aXAoU2VnbWVudC5lbXB0eSwgYSk7XG4gIGxldCAobCwgXywgcikgPSBMaXN0VXRpbC5zcGxpdF9udGgobiwgVGlsZS5zb3J0ZWRfY2hpbGRyZW4odCkpO1xuICAobCwgcik7XG59O1xuXG4vLyBUT0RPIGZsYXR0ZW4gd2l0aCBzaGFyZCBpbmRpY2VzXG4vLyBsZXQgc3RlcCA9IChmcmFtZTogdCk6IHN0ZXAgPT4ge1xuLy8gICBsZXQgKHByZWZpeCwgXykgPSBmcmFtZS5jaGlsZHJlbjtcbi8vICAgTGlzdC5sZW5ndGgocHJlZml4KTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoYTogdCk6IGxpc3QodCkgPT5cbiAgTW9sZHMuZ2V0KGEubGFiZWwpIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLmEsIG1vbGR9KTtcblxuLy8gbGV0IHNvcnQgPSAoZnJhbWU6IHQpOiBTb3J0LnQgPT4ge1xuLy8gICBhc3NlcnQoc3RlcChmcmFtZSkgPj0gMCAmJiBzdGVwKGZyYW1lKSA8IExpc3QubGVuZ3RoKGZyYW1lLm1vbGQuaW5fKSk7XG4vLyAgIExpc3QubnRoKGZyYW1lLm1vbGQuaW5fLCBzdGVwKGZyYW1lKSk7XG4vLyB9O1xubGV0IHNvcnQgPSAoYTogdCk6IFNvcnQudCA9PiB7XG4gIGxldCAocHJlLCBzdWYpID0gYS5zaGFyZHM7XG4gIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQocHJlKSwgc3VmKSB7XG4gIHwgKFNvbWUoKF8sIGkpKSwgW2osIC4uLl9dKSA9PlxuICAgIGxldCAoXywgbCkgPSBNb2xkLm5pYnMofmluZGV4PWksIGEubW9sZCk7XG4gICAgbGV0IChyLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9aiwgYS5tb2xkKTtcbiAgICBsLnNvcnQgPT0gci5zb3J0ID8gbC5zb3J0IDogQW55O1xuICB8IF8gPT4gcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpXG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPVxuICAgICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIGNoaWxkcmVuOiAoa2lkc19sLCBraWRzX3IpfTogdCk6IFNpYmxpbmdzLnQgPT4ge1xuICBsZXQgKHNoYXJkc19sLCBzaGFyZHNfcikgPVxuICAgIHNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgZmxhdHRlbiA9IChzaGFyZHMsIGtpZHMpID0+XG4gICAgQWJhLm1rKHNoYXJkcywga2lkcykgfD4gQWJhLmpvaW4ocCA9PiBbcF0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuICAoZmxhdHRlbihzaGFyZHNfbCwga2lkc19sKSwgZmxhdHRlbihzaGFyZHNfciwga2lkc19yKSk7XG59O1xuXG5sZXQgY29udGFpbmVyX3NoYXJkcyA9IChhOiB0KTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IHtcbiAgbGV0IChzaGFyZHNfbCwgc2hhcmRzX3IpID1cbiAgICBhLnNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGEuaWQsIGEubGFiZWwsIGEubW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgbCA9XG4gICAgTGlzdFV0aWwubGFzdF9vcHQoc2hhcmRzX2wpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbiAgbGV0IHIgPVxuICAgIExpc3RVdGlsLmhkX29wdChzaGFyZHNfcikgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpO1xuICAobCwgcik7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaF9sOiBBYmEudChUaWxlLnQsIFNlZ21lbnQudCkgYXMgJ20sIG1hdGNoX3I6ICdtKTogdCA9PiB7XG4gIC8vIFRPRE8oZCkgYml0IGhhY2t5LCBuZWVkIHRvIGRvIGEgZmxpcC9vcmllbnRhdGlvbiBwYXNzXG4gIC8vIGxldCBtYXRjaF9sID0gQWJhLm1hcF9iKFNlZ21lbnQucmV2LCBtYXRjaF9sKTtcbiAgbGV0ICh0X2wsIHRfcikgPSBUaWxlLihyZWFzc2VtYmxlKG1hdGNoX2wpLCByZWFzc2VtYmxlKG1hdGNoX3IpKTtcbiAgYXNzZXJ0KHRfbC5pZCA9PSB0X3IuaWQpO1xuICB7XG4gICAgaWQ6IHRfbC5pZCxcbiAgICBsYWJlbDogdF9sLmxhYmVsLFxuICAgIG1vbGQ6IHRfbC5tb2xkLFxuICAgIHNoYXJkczogKHRfbC5zaGFyZHMsIHRfci5zaGFyZHMpLFxuICAgIGNoaWxkcmVuOiAodF9sLmNoaWxkcmVuLCB0X3IuY2hpbGRyZW4pLFxuICB9O1xufTtcblxuLy8gbW9kdWxlIE1hdGNoID0ge1xuLy8gICBtb2R1bGUgUHJlZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLkwpO1xuLy8gICBtb2R1bGUgU3VmZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG4vLyAgIHR5cGUgYW5jZXN0b3IgPSB0O1xuLy8gICB0eXBlIHQgPSAoUHJlZml4LnQsIFN1ZmZpeC50KTtcblxuLy8gICBsZXQgaWQgPSAoKHByZSwgXyk6IHQpID0+IFByZWZpeC5pZChwcmUpO1xuXG4vLyAgIGxldCBzaGFyZHMgPSAoKHByZSwgc3VmKTogdCkgPT5cbi8vICAgICBMaXN0LnJldihQcmVmaXguc2hhcmRzKHByZSkpIEAgU3VmZml4LnNoYXJkcyhzdWYpO1xuXG4vLyAgIGxldCBsYWJlbCA9ICgoXywgc3VmKSkgPT4gU3VmZml4LmxhYmVsKHN1Zik7XG5cbi8vICAgbGV0IGxlbmd0aCA9ICgocHJlLCBzdWYpKSA9PiBQcmVmaXgubGVuZ3RoKHByZSkgKyBTdWZmaXgubGVuZ3RoKHN1Zik7XG5cbi8vICAgbGV0IGNoaWxkcmVuID0gKChwcmUsIHN1ZikpID0+IChcbi8vICAgICBQcmVmaXguY2hpbGRyZW4ocHJlKSxcbi8vICAgICBTdWZmaXguY2hpbGRyZW4oc3VmKSxcbi8vICAgKTtcblxuLy8gICBsZXQgbW9sZCA9IChtOiB0KSA9PiB7XG4vLyAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgIHN3aXRjaCAoU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMobSkpKSB7XG4vLyAgICAgICB8IFtdID0+XG4vLyAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGV2ZXJ5dGhpbmcgd2lsbCBiZSBzdWJzZXF1ZW50bHkgcmVtb2xkZWRcbi8vICAgICAgICAgTW9sZHMuZ2V0KGxhYmVsKG0pKVxuLy8gICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgIH07XG4vLyAgICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbi8vICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgfTtcblxuLy8gICBsZXQgam9pbiA9ICgocHJlLCBzdWYpOiB0KSA9PiAoUHJlZml4LmpvaW4ocHJlKSwgU3VmZml4LmpvaW4oc3VmKSk7XG5cbi8vICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24oYW5jZXN0b3IpID0+IHtcbi8vICAgICBsZXQgaWQgPSBpZChtKTtcbi8vICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICBsZXQgbW9sZCA9IG1vbGQobSk7XG4vLyAgICAgbGVuZ3RoKG0pID09IFRpbGUuTGFiZWwubGVuZ3RoKGxhYmVsKVxuLy8gICAgICAgPyBTb21lKHtpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVuOiBjaGlsZHJlbihtKX0pIDogTm9uZTtcbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdlbmVyYXRpb24gPSAoQW5jZXN0b3IudCwgU2libGluZ3MudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZ2VuZXJhdGlvbik7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgcGFyZW50OiB0ID0+IG9wdGlvbihBbmNlc3Rvci50KSA9XG4gIGZ1blxuICB8IFtdID0+IE5vbmVcbiAgfCBbKHBhcmVudCwgXyksIC4uLl9dID0+IFNvbWUocGFyZW50KTtcblxubGV0IHNvcnQgPVxuICBmdW5cbiAgfCBbXSA9PiBTb3J0LnJvb3RcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBBbmNlc3Rvci5zb3J0KGEpO1xuXG5sZXQgemlwX2dlbiA9IChzZWc6IFNlZ21lbnQudCwgKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKTogU2VnbWVudC50ID0+XG4gIHByZSBAIFtQaWVjZS5UaWxlKEFuY2VzdG9yLnppcChzZWcsIGEpKSwgLi4uc3VmXTtcbmxldCB6aXAgPSAoc2VnOiBTZWdtZW50LnQsIGFuY3M6IHQpID0+IGFuY3MgfD4gTGlzdC5mb2xkX2xlZnQoemlwX2dlbiwgc2VnKTtcblxubGV0IGRpc2Fzc2VtYmxlID0gYW5jcyA9PlxuICBhbmNzXG4gIHw+IExpc3QubWFwKCgoYSwgc2licykpID0+XG4gICAgICAgU2libGluZ3MuY29uY2F0KFtBbmNlc3Rvci5kaXNhc3NlbWJsZShhKSwgc2lic10pXG4gICAgIClcbiAgfD4gU2libGluZ3MuY29uY2F0O1xuXG4vLyBsZXQgcmVtb2xkID0gKGFuY2VzdG9yczogdCk6IGxpc3QodCkgPT5cbi8vICAgTGlzdC5mb2xkX3JpZ2h0KFxuLy8gICAgICgoYSwgc2licyksIHJlbW9sZGVkKSA9PiB7XG4vLyAgICAgICBvcGVuIExpc3RVdGlsLlN5bnRheDtcbi8vICAgICAgIGxldCsgYW5jZXN0b3JzID0gcmVtb2xkZWRcbi8vICAgICAgIGFuZCsgc2licyA9IFNpYmxpbmdzLnJlbW9sZChzaWJzKVxuLy8gICAgICAgYW5kKyBhID0gQW5jZXN0b3IucmVtb2xkKGEpO1xuLy8gICAgICAgWyhhLCBzaWJzKSwgLi4uYW5jZXN0b3JzXTtcbi8vICAgICB9LFxuLy8gICAgIGFuY2VzdG9ycyxcbi8vICAgICBbZW1wdHldLFxuLy8gICApO1xuXG5sZXQgc2tlbCA9ICgoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pOiBTa2VsLnQgPT4ge1xuICBsZXQgbiA9IExpc3QubGVuZ3RoKHByZSk7XG4gIGxldCBhID0gKG4sIFBpZWNlLlRpbGUoQW5jZXN0b3IuemlwKFNlZ21lbnQuZW1wdHksIGEpKSk7XG4gIGxldCBwcmUgPVxuICAgIHByZVxuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBsZXQgc3VmID1cbiAgICBzdWZcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChuICsgMSArIGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBTa2VsLm1rKHByZSBAIFthLCAuLi5zdWZdKTtcbn07XG5cbi8vIGxldCBzb3J0cyA9IChpLCAoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pID0+IHtcbi8vICAgbGV0IG4gPSBMaXN0Lmxlbmd0aChwcmUpO1xuLy8gICBpZiAoaSA8IExpc3QubGVuZ3RoKHByZSkpIHtcbi8vICAgICBMaXN0Lm50aF9vcHQocHJlLCBpKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2UgaWYgKGkgPiBuKSB7XG4vLyAgICAgTGlzdC5udGhfb3B0KHN1ZiwgaSAtIDEgLSBuKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2Uge1xuLy8gICAgIGEubW9sZC5vdXQ7XG4vLyAgIH07XG4vLyB9O1xuXG5sZXQgcmVncm91dCA9IChhbmNzOiB0KSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKChhLCBzaWJzKTogZ2VuZXJhdGlvbiwgcmVncm91dGVkKSA9PiB7XG4gICAgICBsZXQgcmVncm91dGVkID0gcmVncm91dGVkO1xuICAgICAgbGV0ICgocHJlLCBsLCB0cmltX2wpLCAodHJpbV9yLCByLCBzdWYpKSA9IFNpYmxpbmdzLnJlZ3JvdXQoc2licyk7XG4gICAgICBsZXQgKGwnLCByJykgPSBUdXBsZVV0aWwubWFwMihOaWIuc2hhcGUsIE1vbGQubmlicyhhLm1vbGQpKTtcbiAgICAgIGxldCB0cmltX2wgPSBTZWdtZW50LlRyaW0ucmVncm91dChMZWZ0LCAobCwgbCcpLCB0cmltX2wpO1xuICAgICAgbGV0IHRyaW1fciA9IFNlZ21lbnQuVHJpbS5yZWdyb3V0KFJpZ2h0LCAocicsIHIpLCB0cmltX3IpO1xuICAgICAgbGV0IHByZSA9IHByZSBAIFNlZ21lbnQuVHJpbS50b19zZWcodHJpbV9sKTtcbiAgICAgIGxldCBzdWYgPSBTZWdtZW50LlRyaW0udG9fc2VnKHRyaW1fcikgQCBzdWY7XG4gICAgICBbKGEsIChwcmUsIHN1ZikpLCAuLi5yZWdyb3V0ZWRdO1xuICAgIH0sXG4gICAgYW5jcyxcbiAgICBlbXB0eSxcbiAgKTtcblxubGV0IHBhcmVudF9tYXRjaGVzID0gKHQ6IFRpbGUudCwgYW5jczogdCkgPT5cbiAgc3dpdGNoIChhbmNzKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBhLmlkID09IHQuaWRcbiAgfTtcbiIsInR5cGUgdCA9IGludDtcbmxldCB0ID0gcmVmKDApO1xuXG5sZXQgdGljayA9ICgpOiB0ID0+IHtcbiAgbGV0IHRpbWUgPSB0XjtcbiAgdCA6PSB0aW1lICsgMTtcbiAgdGltZTtcbn07XG5cbmxldCBsdCA9ICg8KTtcblxubGV0IG1pbiA9IG1pbjtcbmxldCBtYXggPSBtYXg7XG5cbmxldCBtYXhfdGltZSA9IEludC5tYXhfaW50O1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChUaW1lLnQpO1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBsZXQgdG91Y2hlZDogdDtcbn07XG5cbmxldCB1cGRhdGUgPSAodDogVGltZS50LCBlczogbGlzdChFZmZlY3QudCksIHRkOiB0KSA9PlxuICBlc1xuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAodGQsIGU6IEVmZmVjdC50KSA9PlxuICAgICAgICAgc3dpdGNoIChlKSB7XG4gICAgICAgICB8IERlbGV0ZShpZCkgPT4gdGQgfD4gcmVtb3ZlKGlkKVxuICAgICAgICAgfCBUb3VjaChpZCkgPT5cbiAgICAgICAgICAgdGRcbiAgICAgICAgICAgfD4gdXBkYXRlKFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBTb21lKHQpXG4gICAgICAgICAgICAgICAgfCBTb21lKHQnKSA9PiBTb21lKFRpbWUubWF4KHQsIHQnKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgIH0sXG4gICAgICAgdGQsXG4gICAgICk7XG4iLCJsZXQgbGFtID0gXCLOu1wiO1xubGV0IHVwX2Fycm93ID0gXCLihpFcIjtcbmxldCBkb3duX2Fycm93ID0gXCLihpNcIjtcbmxldCBsZWZ0X2Fycm93ID0gXCLihpBcIjtcbmxldCByaWdodF9hcnJvdyA9IFwi4oaSXCI7XG5sZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiO1xubGV0IHp3c3AgPSBcIuKAi1wiO1xuXG5sZXQgdHlwZUFycm93U3ltID0gXCLihpJcIjsgLy8gVSsyMTkyIFwiUmlnaHR3YXJkcyBBcnJvd1wiXG5sZXQgY2FzdEFycm93U3ltID0gXCLih6hcIjtcbmxldCBjYXN0QmFja0Fycm93U3ltID0gXCLih6ZcIjtcblxubGV0IGVsbGlwc2lzID0gXCJcXHhFMlxceDgwXFx4QTZcIjtcblxuLy8gY29waWVkIGZyb20gaGF6ZWxcbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByb3cgPSBpbnQ7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNvbCA9IGludDtcblxubW9kdWxlIFBvaW50ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICByb3csXG4gICAgY29sLFxuICB9O1xuICBsZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG5cbiAgbGV0IGVxdWFsczogKHQsIHQpID0+IGJvb2wgPSAocCwgcSkgPT4gcC5yb3cgPT0gcS5yb3cgJiYgcC5jb2wgPT0gcS5jb2w7XG5cbiAgdHlwZSBjb21wYXJpc29uID1cbiAgICB8IEV4YWN0XG4gICAgfCBVbmRlclxuICAgIHwgT3ZlcjtcblxuICBsZXQgY29tcCA9IChjdXJyZW50LCB0YXJnZXQpOiBjb21wYXJpc29uID0+XG4gICAgc3dpdGNoICgpIHtcbiAgICB8IF8gd2hlbiBjdXJyZW50ID09IHRhcmdldCA9PiBFeGFjdFxuICAgIHwgXyB3aGVuIGN1cnJlbnQgPCB0YXJnZXQgPT4gVW5kZXJcbiAgICB8IF8gPT4gT3ZlclxuICAgIH07XG4gIGxldCBjb21wYXJlID0gKHAxLCBwMikgPT5cbiAgICBzd2l0Y2ggKGNvbXAocDEsIHAyKSkge1xuICAgIHwgRXhhY3QgPT4gMFxuICAgIHwgVW5kZXIgPT4gKC0xKVxuICAgIHwgT3ZlciA9PiAxXG4gICAgfTtcblxuICBsZXQgZGNvbXAgPSAoZGlyZWN0aW9uOiBEaXJlY3Rpb24udCwgYSwgYikgPT5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgIHwgUmlnaHQgPT4gY29tcChhLCBiKVxuICAgIHwgTGVmdCA9PiBjb21wKGIsIGEpXG4gICAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbWVhc3VyZW1lbnQgPSB7XG4gIG9yaWdpbjogUG9pbnQudCxcbiAgbGFzdDogUG9pbnQudCxcbn07XG5cbi8vIGluZGVudGF0aW9uIHJlbGF0aXZlIHRvIGNvbnRhaW5lclxudHlwZSByZWxfaW5kZW50ID0gaW50O1xuLy8gaW5kZW50YXRpb24gcmVsYXRpdmUgdG8gY29kZSBjb250YWluZXJcbnR5cGUgYWJzX2luZGVudCA9IGludDtcblxubW9kdWxlIFJvd3MgPSB7XG4gIGluY2x1ZGUgSW50TWFwO1xuICB0eXBlIHNoYXBlID0ge1xuICAgIGluZGVudDogY29sLFxuICAgIG1heF9jb2w6IGNvbCxcbiAgfTtcbiAgdHlwZSB0ID0gSW50TWFwLnQoc2hhcGUpO1xuXG4gIGxldCBtYXhfY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICBycyB8PiBMaXN0Lm1hcChyID0+IGZpbmQociwgbWFwKS5tYXhfY29sKSB8PiBMaXN0LmZvbGRfbGVmdChtYXgsIDApO1xuXG4gIGxldCBtaW5fY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICByc1xuICAgIHw+IExpc3QubWFwKHIgPT4gZmluZChyLCBtYXApLmluZGVudClcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChtaW4sIEludC5tYXhfaW50KTtcbn07XG5cbm1vZHVsZSBTaGFyZHMgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzaGFyZCA9IChpbnQsIG1lYXN1cmVtZW50KTtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KHNoYXJkKTtcblxuICAvLyBlbGVtZW50cyBvZiByZXR1cm5lZCBsaXN0IGFyZSBub25lbXB0eVxuICBsZXQgcmVjIHNwbGl0X2J5X3JvdzogdCA9PiBsaXN0KHQpID1cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgc3dpdGNoIChzcGxpdF9ieV9yb3codGwpKSB7XG4gICAgICB8IFtdID0+IFtbaGRdXVxuICAgICAgfCBbcm93LCAuLi5yb3dzXSA9PlxuICAgICAgICBzbmQoTGlzdC5oZChyb3cpKS5vcmlnaW4ucm93ID09IHNuZChoZCkub3JpZ2luLnJvd1xuICAgICAgICAgID8gW1toZCwgLi4ucm93XSwgLi4ucm93c10gOiBbW2hkXSwgcm93LCAuLi5yb3dzXVxuICAgICAgfTtcbiAgLy8gbGV0IGxhc3QgPSAoc2hhcmRzOiB0KSA9PlxuICAvLyAgIHNoYXJkc1xuICAvLyAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKVxuICAvLyAgIHw+IExpc3RVdGlsLmxhc3Rfb3B0XG4gIC8vICAgfD4gT3B0aW9uLm1hcChzbmQpO1xufTtcblxudHlwZSB0ID0ge1xuICB0aWxlczogSWQuTWFwLnQoU2hhcmRzLnQpLFxuICBncm91dDogSWQuTWFwLnQobWVhc3VyZW1lbnQpLFxuICBzZWNvbmRhcnk6IElkLk1hcC50KG1lYXN1cmVtZW50KSxcbiAgcm93czogUm93cy50LFxuICBsaW5lYnJlYWtzOiBJZC5NYXAudChyZWxfaW5kZW50KSxcbn07XG5cbmxldCBlbXB0eSA9IHtcbiAgdGlsZXM6IElkLk1hcC5lbXB0eSxcbiAgZ3JvdXQ6IElkLk1hcC5lbXB0eSxcbiAgc2Vjb25kYXJ5OiBJZC5NYXAuZW1wdHksXG4gIHJvd3M6IFJvd3MuZW1wdHksXG4gIGxpbmVicmVha3M6IElkLk1hcC5lbXB0eSxcbn07XG5cbmxldCBhZGRfcyA9IChpZDogSWQudCwgaTogaW50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICB0aWxlczpcbiAgICBtYXAudGlsZXNcbiAgICB8PiBJZC5NYXAudXBkYXRlKFxuICAgICAgICAgaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoaSwgbSldKVxuICAgICAgICAgfCBTb21lKG1zKSA9PlxuICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgIFsoaSwgbSksIC4uLm1zXVxuICAgICAgICAgICAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKSxcbiAgICAgICAgICAgKSxcbiAgICAgICApLFxufTtcblxuLy8gYXNzdW1lcyB0aWxlIGlzIHNpbmdsZSBzaGFyZFxubGV0IGFkZF90ID0gKHQ6IFRpbGUudCwgbSwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgdGlsZXM6XG4gICAgbWFwLnRpbGVzXG4gICAgfD4gSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgIHQuaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoVGlsZS5sX3NoYXJkKHQpLCBtKV0pXG4gICAgICAgICB8IFNvbWUobXMpID0+IFNvbWUoWyhUaWxlLmxfc2hhcmQodCksIG0pLCAuLi5tc10pLFxuICAgICAgICksXG59O1xubGV0IGFkZF9nID0gKGc6IEdyb3V0LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIGdyb3V0OiBtYXAuZ3JvdXQgfD4gSWQuTWFwLmFkZChnLmlkLCBtKSxcbn07XG5sZXQgYWRkX3cgPSAodzogU2Vjb25kYXJ5LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHNlY29uZGFyeTogbWFwLnNlY29uZGFyeSB8PiBJZC5NYXAuYWRkKHcuaWQsIG0pLFxufTtcbmxldCBhZGRfcCA9IChwOiBQaWVjZS50LCBtLCBtYXApID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gYWRkX3codywgbSwgbWFwKSxcbiAgICAgICBnID0+IGFkZF9nKGcsIG0sIG1hcCksXG4gICAgICAgdCA9PiBhZGRfdCh0LCBtLCBtYXApLFxuICAgICApO1xuXG5sZXQgYWRkX3JvdyA9IChyb3c6IGludCwgc2hhcGU6IFJvd3Muc2hhcGUsIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHJvd3M6IFJvd3MuYWRkKHJvdywgc2hhcGUsIG1hcC5yb3dzKSxcbn07XG5cbmxldCBhZGRfbGIgPSAoaWQsIGluZGVudCwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgbGluZWJyZWFrczogSWQuTWFwLmFkZChpZCwgaW5kZW50LCBtYXAubGluZWJyZWFrcyksXG59O1xuXG5sZXQgc2luZ2xldG9uX3cgPSAodywgbSkgPT4gZW1wdHkgfD4gYWRkX3codywgbSk7XG5sZXQgc2luZ2xldG9uX2cgPSAoZywgbSkgPT4gZW1wdHkgfD4gYWRkX2coZywgbSk7XG5sZXQgc2luZ2xldG9uX3MgPSAoaWQsIHNoYXJkLCBtKSA9PiBlbXB0eSB8PiBhZGRfcyhpZCwgc2hhcmQsIG0pO1xuXG4vLyBUT0RPKGQpIHJlbmFtZVxubGV0IGZpbmRfb3B0X3NoYXJkcyA9ICh0OiBUaWxlLnQsIG1hcCkgPT4gSWQuTWFwLmZpbmRfb3B0KHQuaWQsIG1hcC50aWxlcyk7XG5sZXQgZmluZF9zaGFyZHMgPSAodDogVGlsZS50LCBtYXApID0+IElkLk1hcC5maW5kKHQuaWQsIG1hcC50aWxlcyk7XG5cbmxldCBmaW5kX29wdF9sYiA9IChpZCwgbWFwKSA9PiBJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC5saW5lYnJlYWtzKTtcblxubGV0IGZpbmRfc2hhcmRzJyA9IChpZDogSWQudCwgbWFwKSA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHNzKSA9PiBzc1xuICB9O1xuXG5sZXQgZmluZF93ID0gKHc6IFNlY29uZGFyeS50LCBtYXApOiBtZWFzdXJlbWVudCA9PlxuICBJZC5NYXAuZmluZCh3LmlkLCBtYXAuc2Vjb25kYXJ5KTtcbmxldCBmaW5kX2cgPSAoZzogR3JvdXQudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4gSWQuTWFwLmZpbmQoZy5pZCwgbWFwLmdyb3V0KTtcbi8vIHJldHVybnMgdGhlIG1lYXN1cmVtZW50IHNwYW5uaW5nIHRoZSB3aG9sZSB0aWxlXG5sZXQgZmluZF90ID0gKHQ6IFRpbGUudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4ge1xuICBsZXQgc2hhcmRzID0gSWQuTWFwLmZpbmQodC5pZCwgbWFwLnRpbGVzKTtcbiAgbGV0IGZpcnN0ID0gTGlzdFV0aWwuYXNzb2NfZXJyKFRpbGUubF9zaGFyZCh0KSwgc2hhcmRzLCBcImZpbmRfdFwiKTtcbiAgbGV0IGxhc3QgPSBMaXN0VXRpbC5hc3NvY19lcnIoVGlsZS5yX3NoYXJkKHQpLCBzaGFyZHMsIFwiZmluZF90XCIpO1xuICB7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH07XG59O1xuLy8gbGV0IGZpbmRfYSA9ICh7c2hhcmRzOiAobCwgciksIF99IGFzIGE6IEFuY2VzdG9yLnQsIG1hcCkgPT5cbi8vICAgTGlzdC5hc3NvYyhsIEAgciwgSWQuTWFwLmZpbmQoYS5pZCwgbWFwLnRpbGVzKSk7XG5sZXQgZmluZF9wID0gKHA6IFBpZWNlLnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gZmluZF93KHcsIG1hcCksXG4gICAgICAgZyA9PiBmaW5kX2coZywgbWFwKSxcbiAgICAgICB0ID0+IGZpbmRfdCh0LCBtYXApLFxuICAgICApO1xuXG5sZXQgZmluZF9ieV9pZCA9IChpZDogSWQudCwgbWFwOiB0KTogb3B0aW9uKG1lYXN1cmVtZW50KSA9PiB7XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtYXAuc2Vjb25kYXJ5KSkge1xuICB8IFNvbWUobSkgPT4gU29tZShtKVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLmdyb3V0KSkge1xuICAgIHwgU29tZShtKSA9PiBTb21lKG0pXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICAgICAgfCBTb21lKHNoYXJkcykgPT5cbiAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoTGlzdC5oZChzaGFyZHMpIHw+IGZzdCwgc2hhcmRzLCBcImZpbmRfYnlfaWRcIik7XG4gICAgICAgIGxldCBsYXN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoXG4gICAgICAgICAgICBMaXN0VXRpbC5sYXN0KHNoYXJkcykgfD4gZnN0LFxuICAgICAgICAgICAgc2hhcmRzLFxuICAgICAgICAgICAgXCJmaW5kX2J5X2lkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgU29tZSh7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH0pO1xuICAgICAgfCBOb25lID0+XG4gICAgICAgIFByaW50Zi5wcmludGYoXCJNZWFzdXJlZC5XQVJOSU5HOiBpZCAlcyBub3QgZm91bmRcIiwgSWQudG9fc3RyaW5nKGlkKSk7XG4gICAgICAgIE5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxubGV0IHBvc3RfdGlsZV9pbmRlbnQgPSAodDogVGlsZS50KSA9PiB7XG4gIC8vIGhhY2sgZm9yIGluZGVudCBmb2xsb3dpbmcgZnVuL2lmIHRpbGVzLlxuICAvLyBwcm9wZXIgZml4IGludm9sdmVzIHVwZGF0aW5nIG1vbGQgZGF0YXR5cGVcbiAgLy8gdG8gc3BlY2lmeSB3aGV0aGVyIGEgcmlnaHQtZmFjaW5nIGNvbmNhdmVcbiAgLy8gdGlwIGltcG9zZXMgaW5kZW50YXRpb24gb24gYSBmb2xsb3dpbmcgbmV3bGluZS5cbiAgbGV0IGNvbXBsZXRlX2Z1biA9XG4gICAgVGlsZS5pc19jb21wbGV0ZSh0KVxuICAgICYmIChcbiAgICAgIHQubGFiZWwgPT0gRm9ybS5nZXQoXCJmdW5fXCIpLmxhYmVsXG4gICAgICB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwidHlwZnVuXCIpLmxhYmVsXG4gICAgICB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwiaWZfXCIpLmxhYmVsXG4gICAgKTtcbiAgbGV0IG1pc3NpbmdfcmlnaHRfZXh0cmVtZSA9IFRpbGUucl9zaGFyZCh0KSA8IExpc3QubGVuZ3RoKHQubGFiZWwpIC0gMTtcbiAgY29tcGxldGVfZnVuIHx8IG1pc3NpbmdfcmlnaHRfZXh0cmVtZTtcbn07XG5cbmxldCBtaXNzaW5nX2xlZnRfZXh0cmVtZSA9ICh0OiBUaWxlLnQpID0+IFRpbGUubF9zaGFyZCh0KSA+IDA7XG5cbmxldCBpc19pbmRlbnRlZF9tYXAgPSAoc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgbGV0IHJlYyBnbyA9ICh+aXNfaW5kZW50ZWQ9ZmFsc2UsIH5tYXA9SWQuTWFwLmVtcHR5LCBzZWc6IFNlZ21lbnQudCkgPT5cbiAgICBzZWdcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICgoaXNfaW5kZW50ZWQsIG1hcCksIHA6IFBpZWNlLnQpID0+XG4gICAgICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT4gKFxuICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICBJZC5NYXAuYWRkKHcuaWQsIGlzX2luZGVudGVkLCBtYXApLFxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgfCBTZWNvbmRhcnkoXylcbiAgICAgICAgICAgfCBHcm91dChfKSA9PiAoaXNfaW5kZW50ZWQsIG1hcClcbiAgICAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgICAgbGV0IGlzX2luZGVudGVkID0gaXNfaW5kZW50ZWQgfHwgcG9zdF90aWxlX2luZGVudCh0KTtcbiAgICAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgICAobWFwLCBjaGlsZCkgPT4gZ28ofmlzX2luZGVudGVkPXRydWUsIH5tYXAsIGNoaWxkKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCk7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCksXG4gICAgICAgKVxuICAgIHw+IHNuZDtcbiAgZ28oc2VnKTtcbn07XG5cbmxldCBvZl9zZWdtZW50ID0gKH5vbGQ6IHQ9ZW1wdHksIH50b3VjaGVkPVRvdWNoZWQuZW1wdHksIHNlZzogU2VnbWVudC50KTogdCA9PiB7XG4gIGxldCBpc19pbmRlbnRlZCA9IGlzX2luZGVudGVkX21hcChzZWcpO1xuXG4gIC8vIHJlY3Vyc2l2ZSBhY3Jvc3Mgc2VnJ3MgYmlkZWxpbWl0ZWQgY29udGFpbmVyc1xuICBsZXQgcmVjIGdvX25lc3RlZCA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50OiBhYnNfaW5kZW50PTAsXG4gICAgICAgICAgICB+b3JpZ2luPVBvaW50Lnplcm8sXG4gICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoUG9pbnQudCwgdCkgPT4ge1xuICAgIGxldCBmaXJzdF90b3VjaGVkX2luY29tcGxldGUgPVxuICAgICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VnKSkge1xuICAgICAgfCBbXSA9PiBOb25lXG4gICAgICB8IHRzID0+XG4gICAgICAgIHRzXG4gICAgICAgIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IFRvdWNoZWQuZmluZF9vcHQodC5pZCwgdG91Y2hlZCkpXG4gICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgIChhY2MsIHRvdWNoZWQpID0+XG4gICAgICAgICAgICAgICBzd2l0Y2ggKGFjYywgdG91Y2hlZCkge1xuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgU29tZSh0aW1lJykpID0+IFNvbWUoVGltZS5taW4odGltZSwgdGltZScpKVxuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgXylcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUodGltZSkpID0+IFNvbWUodGltZSlcbiAgICAgICAgICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgIClcbiAgICAgIH07XG5cbiAgICAvLyByZWN1cnNpdmUgYWNyb3NzIHNlZydzIGxpc3Qgc3RydWN0dXJlXG4gICAgbGV0IHJlYyBnb19zZXEgPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICB+Y29udGFpbmVkX2luZGVudDogcmVsX2luZGVudD0wLFxuICAgICAgICAgICAgICB+b3JpZ2luOiBQb2ludC50LFxuICAgICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogKFBvaW50LnQsIHQpID0+XG4gICAgICBzd2l0Y2ggKHNlZykge1xuICAgICAgfCBbXSA9PlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBtYXBcbiAgICAgICAgICB8PiBhZGRfcm93KFxuICAgICAgICAgICAgICAgb3JpZ2luLnJvdyxcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgaW5kZW50OiBjb250YWluZXJfaW5kZW50ICsgY29udGFpbmVkX2luZGVudCxcbiAgICAgICAgICAgICAgICAgbWF4X2NvbDogb3JpZ2luLmNvbCxcbiAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgKG9yaWdpbiwgbWFwKTtcbiAgICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgICAgbGV0IChjb250YWluZWRfaW5kZW50LCBvcmlnaW4sIG1hcCkgPVxuICAgICAgICAgIHN3aXRjaCAoaGQpIHtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT5cbiAgICAgICAgICAgIGxldCByb3dfaW5kZW50ID0gY29udGFpbmVyX2luZGVudCArIGNvbnRhaW5lZF9pbmRlbnQ7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID1cbiAgICAgICAgICAgICAgaWYgKFNlZ21lbnQuc2FtZWxpbmVfc2Vjb25kYXJ5KHRsKSkge1xuICAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgIFRvdWNoZWQuZmluZF9vcHQody5pZCwgdG91Y2hlZCksXG4gICAgICAgICAgICAgICAgICBmaXJzdF90b3VjaGVkX2luY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICBmaW5kX29wdF9sYih3LmlkLCBvbGQpLFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHwgKFNvbWUodG91Y2hlZCksIFNvbWUodG91Y2hlZCcpLCBTb21lKGluZGVudCkpXG4gICAgICAgICAgICAgICAgICAgIHdoZW4gVGltZS5sdCh0b3VjaGVkLCB0b3VjaGVkJykgPT4gaW5kZW50XG4gICAgICAgICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAgICAgICBjb250YWluZWRfaW5kZW50ICsgKElkLk1hcC5maW5kKHcuaWQsIGlzX2luZGVudGVkKSA/IDIgOiAwKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgIFBvaW50Lntyb3c6IG9yaWdpbi5yb3cgKyAxLCBjb2w6IGNvbnRhaW5lcl9pbmRlbnQgKyBpbmRlbnR9O1xuICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB8PiBhZGRfdyh3LCB7b3JpZ2luLCBsYXN0fSlcbiAgICAgICAgICAgICAgfD4gYWRkX3JvdyhcbiAgICAgICAgICAgICAgICAgICBvcmlnaW4ucm93LFxuICAgICAgICAgICAgICAgICAgIHtpbmRlbnQ6IHJvd19pbmRlbnQsIG1heF9jb2w6IG9yaWdpbi5jb2x9LFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IGFkZF9sYih3LmlkLCBpbmRlbnQpO1xuICAgICAgICAgICAgKGluZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSA9PlxuICAgICAgICAgICAgbGV0IHdzcGFjZV9sZW5ndGggPVxuICAgICAgICAgICAgICBVbmljb2RlLmxlbmd0aChTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKTtcbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgd3NwYWNlX2xlbmd0aH07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF93KHcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgR3JvdXQoZykgPT5cbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgMX07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF9nKGcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgICAgbGV0IHRva2VuID0gTGlzdC5udGgodC5sYWJlbCk7XG4gICAgICAgICAgICBsZXQgYWRkX3NoYXJkID0gKG9yaWdpbiwgc2hhcmQsIG1hcCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgICAgUG9pbnQue1xuICAgICAgICAgICAgICAgICAgLi4ub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgY29sOiBvcmlnaW4uY29sICsgU3RyaW5nLmxlbmd0aCh0b2tlbihzaGFyZCkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGxldCBtYXAgPSBtYXAgfD4gYWRkX3ModC5pZCwgc2hhcmQsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgICAgKGxhc3QsIG1hcCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IChsYXN0LCBtYXApID1cbiAgICAgICAgICAgICAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICAgICAgICAgICAgICB8PiBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgIHNoYXJkID0+IGFkZF9zaGFyZChvcmlnaW4sIHNoYXJkLCBtYXApLFxuICAgICAgICAgICAgICAgICAgICgob3JpZ2luLCBtYXApLCBjaGlsZCwgc2hhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hpbGRfbGFzdCwgY2hpbGRfbWFwKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIGdvX25lc3RlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50PWNvbnRhaW5lcl9pbmRlbnQgKyBjb250YWluZWRfaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICBhZGRfc2hhcmQoY2hpbGRfbGFzdCwgc2hhcmQsIGNoaWxkX21hcCk7XG4gICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIH07XG4gICAgICAgIGxldCAodGxfbGFzdCwgbWFwKSA9IGdvX3NlcSh+bWFwLCB+Y29udGFpbmVkX2luZGVudCwgfm9yaWdpbiwgdGwpO1xuICAgICAgICAodGxfbGFzdCwgbWFwKTtcbiAgICAgIH07XG4gICAgZ29fc2VxKH5tYXAsIH5vcmlnaW4sIHNlZyk7XG4gIH07XG4gIHNuZChnb19uZXN0ZWQofm1hcD1lbXB0eSwgc2VnKSk7XG59O1xuXG5sZXQgbGVuZ3RoID0gKHNlZzogU2VnbWVudC50LCBtYXA6IHQpOiBpbnQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAwXG4gIHwgW3BdID0+XG4gICAgbGV0IG0gPSBmaW5kX3AocCwgbWFwKTtcbiAgICBtLmxhc3QuY29sIC0gbS5vcmlnaW4uY29sO1xuICB8IFtoZCwgLi4udGxdID0+XG4gICAgbGV0IGZpcnN0ID0gZmluZF9wKGhkLCBtYXApO1xuICAgIGxldCBsYXN0ID0gZmluZF9wKExpc3RVdGlsLmxhc3QodGwpLCBtYXApO1xuICAgIGxhc3QubGFzdC5jb2wgLSBmaXJzdC5vcmlnaW4uY29sO1xuICB9O1xuXG5sZXQgc2VnbWVudF9vcmlnaW4gPSAoc2VnOiBTZWdtZW50LnQpOiBvcHRpb24oUG9pbnQudCkgPT5cbiAgT3B0aW9uLm1hcChcbiAgICBmaXJzdCA9PiBmaW5kX3AoZmlyc3QsIG9mX3NlZ21lbnQoc2VnKSkub3JpZ2luLFxuICAgIExpc3RVdGlsLmhkX29wdChzZWcpLFxuICApO1xuXG5sZXQgc2VnbWVudF9sYXN0ID0gKHNlZzogU2VnbWVudC50KTogb3B0aW9uKFBvaW50LnQpID0+XG4gIE9wdGlvbi5tYXAoXG4gICAgbGFzdCA9PiBmaW5kX3AobGFzdCwgb2Zfc2VnbWVudChzZWcpKS5sYXN0LFxuICAgIExpc3RVdGlsLmxhc3Rfb3B0KHNlZyksXG4gICk7XG5cbmxldCBzZWdtZW50X2hlaWdodCA9IChzZWc6IFNlZ21lbnQudCkgPT5cbiAgc3dpdGNoIChzZWdtZW50X2xhc3Qoc2VnKSwgc2VnbWVudF9vcmlnaW4oc2VnKSkge1xuICB8IChTb21lKGxhc3QpLCBTb21lKGZpcnN0KSkgPT4gMSArIGxhc3Qucm93IC0gZmlyc3Qucm93XG4gIHwgXyA9PiAwXG4gIH07XG5cbmxldCBzZWdtZW50X3dpZHRoID0gKHNlZzogU2VnbWVudC50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4gbWF4KG1heF9jb2wsIGFjYyksXG4gICAgb2Zfc2VnbWVudChzZWcpLnJvd3MsXG4gICAgMCxcbiAgKTtcblxubGV0IHdpZHRoX2Nvc3QgPSAoc2VnOiBTZWdtZW50LnQsIG1heF93aWR0aDogaW50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4ge1xuICAgICAgbGV0IG92ZXJmbG93ID0gbWF4KG1heF9jb2wgLSBtYXhfd2lkdGgsIDApO1xuICAgICAgYWNjICsgb3ZlcmZsb3cgKiBvdmVyZmxvdztcbiAgICB9LFxuICAgIG9mX3NlZ21lbnQoc2VnKS5yb3dzLFxuICAgIDAsXG4gICk7XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYnVmZmVyID1cbiAgfCBVbnBhcnNlZFxuICB8IFBhcnNlZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb2RlID1cbiAgfCBOb3JtYWxcbiAgfCBCdWZmZXIoYnVmZmVyKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBmb2N1czogRGlyZWN0aW9uLnQsXG4gIGNvbnRlbnQ6IFNlZ21lbnQudCxcbiAgbW9kZSxcbn07XG5cbi8qIE5PVEU6IGJhY2twYWNrIG5vIGxvbmdlciB1c2VzIHNlbGVjdGlvbiBmb2N1cyAqL1xubGV0IG1rID0gKH5tb2RlPU5vcm1hbCwgfmZvY3VzPURpcmVjdGlvbi5MZWZ0LCBjb250ZW50OiBTZWdtZW50LnQpID0+IHtcbiAgZm9jdXMsXG4gIGNvbnRlbnQsXG4gIG1vZGUsXG59O1xuXG5sZXQgbWtfYnVmZmVyID0gYnVmZmVyID0+IG1rKH5tb2RlPUJ1ZmZlcihidWZmZXIpLCB+Zm9jdXM9RGlyZWN0aW9uLkxlZnQpO1xuXG5sZXQgaXNfYnVmZmVyOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCB7bW9kZTogQnVmZmVyKF8pLCBffSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGJ1ZmZlcl9pZHMgPSAoc2VsOiB0KTogbGlzdChJZC50KSA9PiB7XG4gIC8qIENvbGxlY3QgaWRzIG9mIHRva2VucyBpbiBidWZmZXIgZm9yIHN0eWxpbmcgcHVycG9zZXMuIFRoaXMgaXNcbiAgICogY3VycmVudGx5IG5lY2Vzc2FyeSBhcyB0aGUgc2VsZWN0aW9uIGlzIG5vdCBwZXJzaXN0ZWQgdGhyb3VnaFxuICAgKiB1bnppcHBpbmcgZm9yIGRpc3BsYXkgKi9cbiAgbGV0IGJ1ZmZlciA9IGlzX2J1ZmZlcihzZWwpID8gc2VsLmNvbnRlbnQgOiBbXTtcbiAgSWQuTWFwLmJpbmRpbmdzKE1lYXN1cmVkLm9mX3NlZ21lbnQoYnVmZmVyKS50aWxlcykgfD4gTGlzdC5tYXAoZnN0KTtcbn07XG5cbmxldCBlbXB0eSA9IG1rKFNlZ21lbnQuZW1wdHkpO1xuXG5sZXQgbWFwID0gKGYsIHNlbCkgPT4gey4uLnNlbCwgY29udGVudDogZihzZWwuY29udGVudCl9O1xuXG5sZXQgdG9nZ2xlX2ZvY3VzID0gc2VsZWN0aW9uID0+IHtcbiAgLi4uc2VsZWN0aW9uLFxuICBmb2N1czogVXRpbC5EaXJlY3Rpb24udG9nZ2xlKHNlbGVjdGlvbi5mb2N1cyksXG59O1xuXG5sZXQgaXNfZW1wdHkgPSAoc2VsZWN0aW9uOiB0KSA9PiBzZWxlY3Rpb24uY29udGVudCA9PSBTZWdtZW50LmVtcHR5O1xuXG5sZXQgcHVzaCA9IChwOiBQaWVjZS50LCB7Zm9jdXMsIGNvbnRlbnQsIG1vZGV9OiB0KTogdCA9PiB7XG4gIGxldCBjb250ZW50ID1cbiAgICBTZWdtZW50LnJlYXNzZW1ibGUoXG4gICAgICBzd2l0Y2ggKGZvY3VzKSB7XG4gICAgICB8IExlZnQgPT4gU2VnbWVudC5jb25zKHAsIGNvbnRlbnQpXG4gICAgICB8IFJpZ2h0ID0+IFNlZ21lbnQuc25vYyhjb250ZW50LCBwKVxuICAgICAgfSxcbiAgICApO1xuICB7Zm9jdXMsIGNvbnRlbnQsIG1vZGV9O1xufTtcblxubGV0IHBvcCA9IChzZWw6IHQpOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PlxuICBzd2l0Y2ggKHNlbC5mb2N1cywgc2VsLmNvbnRlbnQsIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHNlbC5jb250ZW50KSkge1xuICB8IChfLCBbXSwgXylcbiAgfCAoXywgXywgTm9uZSkgPT4gTm9uZVxuICB8IChMZWZ0LCBbcCwgLi4uY29udGVudF0sIF8pID0+XG4gICAgbGV0IChwLCByZXN0KSA9IFBpZWNlLnBvcF9sKHApO1xuICAgIFNvbWUoKHAsIHsuLi5zZWwsIGNvbnRlbnQ6IHJlc3QgQCBjb250ZW50fSkpO1xuICB8IChSaWdodCwgXywgU29tZSgoY29udGVudCwgcCkpKSA9PlxuICAgIGxldCAocmVzdCwgcCkgPSBQaWVjZS5wb3BfcihwKTtcbiAgICBTb21lKChwLCB7Li4uc2VsLCBjb250ZW50OiBjb250ZW50IEAgcmVzdH0pKTtcbiAgfTtcblxubGV0IHNwbGl0X3BpZWNlID0gXzogb3B0aW9uKChQaWVjZS50LCB0KSkgPT4gZmFpbHdpdGgoXCJ0b2RvIHNwbGl0X3BpZWNlXCIpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxubW9kdWxlIFNoYXJkSW5mbyA9IHtcbiAgbW9kdWxlIE9yZGVyID0ge1xuICAgIHR5cGUga2V5ID0gKElkLnQsIGludCk7XG4gICAgLy8gbGV0IGtleSA9IChzOiBTaGFyZC50KSA9PiAocy50aWxlX2lkLCBTaGFyZC5pbmRleChzKSk7XG5cbiAgICBvcGVuIEhhc2h0Ymw7XG4gICAgdHlwZSB0ID0gSGFzaHRibC50KGtleSwgSGFzaHRibC50KGtleSwgdW5pdCkpO1xuXG4gICAgbGV0IG4gPSAyMDtcbiAgICBsZXQgaW5pdCA9ICgpID0+IGNyZWF0ZShuKTtcblxuICAgIGxldCBsdCA9IChsOiBUaWxlLnQsIHI6IFRpbGUudCwgb3JkOiB0KTogYm9vbCA9PiB7XG4gICAgICBsZXQgKGlfbCwgaV9yKSA9IFRpbGUuKHJfc2hhcmQobCksIGxfc2hhcmQocikpO1xuICAgICAgc3dpdGNoIChmaW5kX29wdChvcmQsIChsLmlkLCBpX2wpKSkge1xuICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICB8IFNvbWUocm93KSA9PiBPcHRpb24uaXNfc29tZShmaW5kX29wdChyb3csIChyLmlkLCBpX3IpKSlcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgZ3QgPSAobCwgciwgb3JkKSA9PiBsdChyLCBsLCBvcmQpO1xuICAgIGxldCB1biA9IChsLCByLCBvcmQpID0+ICFsdChsLCByLCBvcmQpICYmICFndChsLCByLCBvcmQpO1xuXG4gICAgbGV0IGRpc29yZGVyZWQgPSAodDogVGlsZS50LCB0JzogVGlsZS50KTogYm9vbCA9PlxuICAgICAgdC5pZCA9PSB0Jy5pZFxuICAgICAgJiYge1xuICAgICAgICBsZXQgKGwsIHIpID0gVGlsZS4obF9zaGFyZCh0KSwgcl9zaGFyZCh0KSk7XG4gICAgICAgIGxldCAobCcsIHInKSA9IFRpbGUuKGxfc2hhcmQodCcpLCByX3NoYXJkKHQnKSk7XG4gICAgICAgIGwgPCBsJyAmJiBsJyA8IHIgfHwgbCcgPCBsICYmIGwgPCByJztcbiAgICAgIH07XG5cbiAgICBsZXQgbHRfb3JfdW4gPSAobHMsIHJzLCBvcmQpID0+XG4gICAgICBsc1xuICAgICAgfD4gTGlzdC5mb3JfYWxsKGwgPT5cbiAgICAgICAgICAgcnNcbiAgICAgICAgICAgfD4gTGlzdC5mb3JfYWxsKHIgPT5cbiAgICAgICAgICAgICAgICAhZGlzb3JkZXJlZChsLCByKSAmJiAobHQobCwgciwgb3JkKSB8fCB1bihsLCByLCBvcmQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICApO1xuXG4gICAgbGV0IGdldCA9IChpLCBqLCBtKSA9PiB7XG4gICAgICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICAgICAgbGV0KiByID0gZmluZF9vcHQobSwgaSk7XG4gICAgICBmaW5kX29wdChyLCBqKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IChpLCBqLCBtKSA9PiB7XG4gICAgICBsZXQgciA9XG4gICAgICAgIHN3aXRjaCAoZmluZF9vcHQobSwgaSkpIHtcbiAgICAgICAgfCBOb25lID0+IGNyZWF0ZShuKVxuICAgICAgICB8IFNvbWUocikgPT4gclxuICAgICAgICB9O1xuICAgICAgcmVwbGFjZShyLCBqLCAoKSk7XG4gICAgICByZXBsYWNlKG0sIGksIHIpO1xuICAgIH07XG5cbiAgICBsZXQgYWRkX3RpbGUgPSAoaWQsIGxibCwgb3JkKSA9PlxuICAgICAgbGJsXG4gICAgICB8PiBMaXN0Lml0ZXJpKChpLCBfKSA9PiB7XG4gICAgICAgICAgIHN3aXRjaCAoZmluZF9vcHQob3JkLCAoaWQsIGkpKSkge1xuICAgICAgICAgICB8IFNvbWUoXykgPT4gKClcbiAgICAgICAgICAgfCBOb25lID0+IHJlcGxhY2Uob3JkLCAoaWQsIGkpLCBjcmVhdGUobikpXG4gICAgICAgICAgIH07XG4gICAgICAgICAgIGkgPT0gMCA/ICgpIDogc2V0KChpZCwgaSAtIDEpLCAoaWQsIGkpLCBvcmQpO1xuICAgICAgICAgfSk7XG5cbiAgICAvLyBXYXJzaGFsbCdzIGFsZ29yaXRobSBodHRwczovL2NzLndpbm9uYS5lZHUvbGluL2NzNDQwL2NoMDgtMi5wZGZcbiAgICBsZXQgdHJhbl9jbG9zZSA9IChvcmQ6IHQpOiB1bml0ID0+IHtcbiAgICAgIGxldCBrZXlzID0gTGlzdC5vZl9zZXEoSGFzaHRibC50b19zZXFfa2V5cyhvcmQpKTtcbiAgICAgIGtleXNcbiAgICAgIHw+IExpc3QuaXRlcmkoKG4sIGspID0+XG4gICAgICAgICAgIGlmIChuID09IDApIHtcbiAgICAgICAgICAgICAoKTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBrZXlzXG4gICAgICAgICAgICAgfD4gTGlzdC5pdGVyKGkgPT5cbiAgICAgICAgICAgICAgICAgIGtleXNcbiAgICAgICAgICAgICAgICAgIHw+IExpc3QuaXRlcihqID0+XG4gICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0KGksIGosIG9yZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKF8pID0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0KGksIGssIG9yZCksIGdldChrLCBqLCBvcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoTm9uZSwgXylcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChfLCBOb25lKSA9PiAoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKFNvbWUoXyksIFNvbWUoXykpID0+IHNldChpLCBqLCBvcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBDb3VudCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBsYWJlbHM6IElkLk1hcC50KExhYmVsLnQpLFxuICAgICAgY291bnRzOiBJZC5NYXAudChpbnQpLFxuICAgIH07XG5cbiAgICBsZXQgb2ZfdGlsZSA9ICh0OiBUaWxlLnQpID0+IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnNpbmdsZXRvbih0LmlkLCB0LmxhYmVsKSxcbiAgICAgIGNvdW50czogSWQuTWFwLnNpbmdsZXRvbih0LmlkLCBMaXN0Lmxlbmd0aCh0LnNoYXJkcykpLFxuICAgIH07XG5cbiAgICBsZXQgbWVyZ2UgPSAobTogdCwgbSc6IHQpID0+IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnVuaW9uKChfLCBsYmwsIF8pID0+IFNvbWUobGJsKSwgbS5sYWJlbHMsIG0nLmxhYmVscyksXG4gICAgICBjb3VudHM6IElkLk1hcC51bmlvbigoXywgbiwgbicpID0+IFNvbWUobiArIG4nKSwgbS5jb3VudHMsIG0nLmNvdW50cyksXG4gICAgfTtcblxuICAgIGxldCBtZW0gPSAoaWQsIG0pID0+IElkLk1hcC5tZW0oaWQsIG0ubGFiZWxzKTtcblxuICAgIGxldCBleGlzdHNfbWVtID0gKHRzOiBsaXN0KFRpbGUudCksIG0pID0+XG4gICAgICBMaXN0LmV4aXN0cygodDogVGlsZS50KSA9PiBtZW0odC5pZCwgbSksIHRzKTtcblxuICAgIGxldCBpc19jb21wbGV0ZSA9IChtOiB0KSA9PlxuICAgICAgbS5jb3VudHNcbiAgICAgIHw+IElkLk1hcC5mb3JfYWxsKChpZCwgbikgPT5cbiAgICAgICAgICAgbiA9PSBMaXN0Lmxlbmd0aChJZC5NYXAuZmluZChpZCwgbS5sYWJlbHMpKVxuICAgICAgICAgKTtcbiAgfTtcblxuICBtb2R1bGUgQ291bnRzID0ge1xuICAgIHR5cGUgdCA9IElkLlVmLnN0b3JlKENvdW50LnQpO1xuICAgIGluY2x1ZGUgSWQuVWY7XG4gICAgbGV0IG1lcmdlID0gbWVyZ2UoQ291bnQubWVyZ2UpO1xuICAgIGxldCBhZGRfdGlsZSA9ICh0OiBUaWxlLnQsIGNzOiB0KTogdW5pdCA9PlxuICAgICAgc3dpdGNoIChnZXRfb3B0KHQuaWQsIGNzKSkge1xuICAgICAgfCBOb25lID0+IGFkZCh0LmlkLCBDb3VudC5vZl90aWxlKHQpLCBjcylcbiAgICAgIHwgU29tZShjKSA9PlxuICAgICAgICBsZXQgYyA9IHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIGNvdW50czpcbiAgICAgICAgICAgIElkLk1hcC51cGRhdGUoXG4gICAgICAgICAgICAgIHQuaWQsXG4gICAgICAgICAgICAgIE9wdGlvbi5tYXAoKCspKExpc3QubGVuZ3RoKHQuc2hhcmRzKSkpLFxuICAgICAgICAgICAgICBjLmNvdW50cyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICAgIHNldCh0LmlkLCBjLCBjcyk7XG4gICAgICB9O1xuICB9O1xuXG4gIC8vIFNoYXJkcyBhcmUgY29uc2lkZXJlZCBzZWxlY3Rpb24tbWF0Y2hpbmcgaWYgdGhleSBhcmUgcmVsYXRlZCB0cmFuc2l0aXZlbHlcbiAgLy8gYnkgbm9ybWFsIHdpdGhpbi10aWxlIG1hdGNoaW5nIG9yIGJ5IHNhbWUtc2VsZWN0aW9uLWNvbnRhaW5tZW50LlxuICAvLyBTZWxlY3Rpb24tbWF0Y2hpbmcgc2hhcmRzIGFyZSBvcmRlcmVkIHRyYW5zaXRpdmVseSBieSB3aXRoaW4tdGlsZVxuICAvLyBvcmRlcmluZyBhbmQgc2FtZS1zZWxlY3Rpb24gb3JkZXJpbmcgY29tYmluZWQgd2l0aCB3ZWxsLW5lc3RlZG5lc3MuXG4gIC8vIFJlcHJlc2VudHMgdGhlIGV4cGVjdGVkIG9yZGVyIG9mIGFsbCBzZWxlY3Rpb24tbWF0Y2hpbmcgc2hhcmRzIGFzXG4gIC8vIGltcG9zZWQgYnkgc2VsZWN0aW9ucyBpbiB0aGUgYmFja3BhY2ssIGFsb25nIHdpdGggY291bnRzIG9mIHRob3NlXG4gIC8vIHNoYXJkcyBjb250YWluZWQgaW4gdGhlIGJhY2twYWNrLlxuICAvLyBDb3VudHMgYXJlIHBhcnRpdGlvbmVkIGJ5IHRoZSBzZWxlY3Rpb24tbWF0Y2hpbmcgcmVsYXRpb24uXG4gIHR5cGUgdCA9IHtcbiAgICBvcmRlcjogT3JkZXIudCxcbiAgICBjb3VudHM6IENvdW50cy50LFxuICB9O1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge29yZGVyOiBPcmRlci5pbml0KCksIGNvdW50czogQ291bnRzLmluaXQoKX07XG5cbiAgbGV0IGFkZF9zZWwgPSAoc2VsOiBTZWxlY3Rpb24udCwge2NvdW50cywgb3JkZXJ9OiB0KTogdW5pdCA9PiB7XG4gICAgbGV0IHRzID0gU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNlbC5jb250ZW50KTtcbiAgICAvLyBpbml0aWFsaXplXG4gICAgdHNcbiAgICB8PiBMaXN0Lml0ZXIoKHQ6IFRpbGUudCkgPT4ge1xuICAgICAgICAgQ291bnRzLmFkZF90aWxlKHQsIGNvdW50cyk7XG4gICAgICAgICBPcmRlci5hZGRfdGlsZSh0LmlkLCB0LmxhYmVsLCBvcmRlcik7XG4gICAgICAgfSk7XG4gICAgLy8gbWVyZ2UgY291bnRzXG4gICAgaWdub3JlKFxuICAgICAgdHNcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAocHJldjogb3B0aW9uKFRpbGUudCksIGN1cnI6IFRpbGUudCkgPT4ge1xuICAgICAgICAgICAgIHN3aXRjaCAocHJldikge1xuICAgICAgICAgICAgIHwgTm9uZSA9PiAoKVxuICAgICAgICAgICAgIHwgU29tZShwcmV2KSA9PiBDb3VudHMubWVyZ2UocHJldi5pZCwgY3Vyci5pZCwgY291bnRzKVxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgU29tZShjdXJyKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICksXG4gICAgKTtcbiAgICAvLyBwcm9wYWdhdGUgd2VsbC1uZXN0ZWQgb3JkZXJpbmcgY29uc3RyYWludHNcbiAgICBMaXN0VXRpbC5vcmRlcmVkX3BhaXJzKHRzKVxuICAgIHw+IExpc3QuaXRlcigoKGw6IFRpbGUudCwgcjogVGlsZS50KSkgPT4ge1xuICAgICAgICAgbGV0IChuX2wsIG5fcikgPSBMaXN0LihsZW5ndGgobC5sYWJlbCksIGxlbmd0aChyLmxhYmVsKSk7XG4gICAgICAgICBsZXQgKGlfbCwgaV9yKSA9IFRpbGUuKHJfc2hhcmQobCksIGxfc2hhcmQocikpO1xuICAgICAgICAgT3JkZXIuc2V0KChsLmlkLCBpX2wpLCAoci5pZCwgaV9yKSwgb3JkZXIpO1xuICAgICAgICAgaWYgKGlfbCA9PSBuX2wgLSAxICYmIGlfciAhPSAwKSB7XG4gICAgICAgICAgIC8vIGwgbXVzdCBiZSBuZXN0ZWQgd2l0aGluIHJcbiAgICAgICAgICAgT3JkZXIuc2V0KFxuICAgICAgICAgICAgIChyLmlkLCBpX3IgLSAxKSxcbiAgICAgICAgICAgICAobC5pZCwgMCksXG4gICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICk7XG4gICAgICAgICB9IGVsc2UgaWYgKGlfbCAhPSBuX2wgLSAxICYmIGlfciA9PSAwKSB7XG4gICAgICAgICAgIC8vIHIgbXVzdCBiZSBuZXN0ZWQgd2l0aGluIGxcbiAgICAgICAgICAgT3JkZXIuc2V0KFxuICAgICAgICAgICAgIChyLmlkLCBuX3IgLSAxKSxcbiAgICAgICAgICAgICAobC5pZCwgaV9sICsgMSksXG4gICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICk7XG4gICAgICAgICB9O1xuICAgICAgIH0pO1xuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChTZWxlY3Rpb24udCk7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgc2hhcmRfaW5mbyA9IChicDogdCkgPT4ge1xuICBvcGVuIFNoYXJkSW5mbztcbiAgbGV0IGluZm8gPSBpbml0KCk7XG4gIGJwIHw+IExpc3QuaXRlcihzZWwgPT4gYWRkX3NlbChzZWwsIGluZm8pKTtcbiAgT3JkZXIudHJhbl9jbG9zZShpbmZvLm9yZGVyKTtcbiAgaW5mbztcbn07XG5cbi8qIFBFUkY6IFRoaXMgYmVjb21lcyB2ZXJ5IGNvc3RseSB3aGVuIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGluZ3NcbiAgIGluIHRoZSBiYWNrcGFjazsgZS5nLiBpZiB5b3Ugb3BlbiAyMyBwYXJlbnMsIGl0J3MgYWxtb3N0IDEwMCVcbiAgIG9mIHRoZSBrZXlzdG9rZSBjb3N0LCBmb3IgYSA1NXggdG90YWwgc2xvd2Rvd24gICovXG5sZXQgc2hhcmRfaW5mbyA9IENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIHNoYXJkX2luZm8pO1xuXG5sZXQgcHVzaCA9IHNlbCA9PiBTZWxlY3Rpb24uaXNfZW1wdHkoc2VsKSA/IEZ1bi5pZCA6IExpc3QuY29ucyhzZWwpO1xuXG5sZXQgcHVzaF9zOiAobGlzdChTZWxlY3Rpb24udCksIHQpID0+IHQgPSBMaXN0LmZvbGRfcmlnaHQocHVzaCk7XG5cbmxldCBwb3AgPVxuICAgICgocHJlLCBzdWYpOiAobGlzdChUaWxlLnQpLCBsaXN0KFRpbGUudCkpLCBicDogdClcbiAgICA6IG9wdGlvbigoYm9vbCwgU2VsZWN0aW9uLnQsIHQpKSA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCogKGhkLCB0bCkgPSBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHQoYnApO1xuICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhoZC5jb250ZW50KSkge1xuICB8IFtdID0+IFNvbWUoKHRydWUsIGhkLCB0bCkpXG4gIHwgW3QsIC4uLl9dIGFzIHRzID0+XG4gICAgb3BlbiBTaGFyZEluZm87XG4gICAgbGV0IHtjb3VudHMsIG9yZGVyfSA9IHNoYXJkX2luZm8oYnApO1xuICAgIGxldCBjb3VudCA9IENvdW50cy5nZXQodC5pZCwgY291bnRzKTtcbiAgICBsZXQgZmlyc3QgPSBDb3VudC5pc19jb21wbGV0ZShjb3VudCk7XG4gICAgZmlyc3RcbiAgICB8fCAoQ291bnQuZXhpc3RzX21lbShwcmUsIGNvdW50KSB8fCBDb3VudC5leGlzdHNfbWVtKHN1ZiwgY291bnQpKVxuICAgICYmIE9yZGVyLmx0X29yX3VuKHByZSwgdHMsIG9yZGVyKVxuICAgICYmIE9yZGVyLmx0X29yX3VuKHRzLCBzdWYsIG9yZGVyKVxuICAgICAgPyBTb21lKChmaXJzdCwgaGQsIHRsKSkgOiBOb25lO1xuICB9O1xufTtcblxubGV0IHJlc3RyaWN0ZWQgPSAoYnA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoYnApIHtcbiAgfCBbXSA9PiBmYWxzZVxuICB8IFtoZCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhoZC5jb250ZW50KSkge1xuICAgIHwgW10gPT4gZmFsc2VcbiAgICB8IFt0LCAuLi5fXSA9PlxuICAgICAgb3BlbiBTaGFyZEluZm87XG4gICAgICBsZXQgaW5mbyA9IHNoYXJkX2luZm8oYnApO1xuICAgICAgIUNvdW50LmlzX2NvbXBsZXRlKENvdW50cy5nZXQodC5pZCwgaW5mby5jb3VudHMpKTtcbiAgICB9XG4gIH07XG5cbmxldCByZW1vdmVfbWF0Y2hpbmcgPSAodHM6IGxpc3QoVGlsZS50KSwgYnA6IHQpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgIChicCwgdDogVGlsZS50KSA9PlxuICAgICAgYnBcbiAgICAgIHw+IExpc3QubWFwKFNlbGVjdGlvbi5tYXAoU2VnbWVudC5yZW1vdmVfbWF0Y2hpbmcodCkpKVxuICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICBmdW5cbiAgICAgICAgICAgfCBzZWwgd2hlbiAhU2VsZWN0aW9uLmlzX2VtcHR5KHNlbCkgPT4gU29tZShzZWwpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKSxcbiAgICBicCxcbiAgICB0cyxcbiAgKTtcblxubGV0IHdpbGxfYmFyZiA9ICh0OiBUb2tlbi50LCBicDogdCk6IGJvb2wgPT5cbiAgLyogRG9lcyB0aGUgZmlyc3Qgc2VsZWN0aW9uIGluIHRoZSBiYWNrcGFjayBjb25zaXN0XG4gICAgIG9mIGEgc2luZ2xlIHRva2VuIHdoaWNoIG1hdGNoZXMgdGhlIG9uZSBwcm92aWRlZD8gKi9cbiAgc3dpdGNoIChicCkge1xuICB8IFtdID0+IGZhbHNlXG4gIHwgW3tjb250ZW50OiBbcF0sIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAocCkge1xuICAgIHwgVGlsZSh7c2hhcmRzOiBbaV0sIGxhYmVsLCBffSkgPT5cbiAgICAgIGFzc2VydChpIDwgTGlzdC5sZW5ndGgobGFiZWwpKTtcbiAgICAgIExpc3QubnRoKGxhYmVsLCBpKSA9PSB0O1xuICAgIHwgXyA9PiBmYWxzZVxuICAgIH1cbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCByZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXRjaGVzID0gKGJwOiB0LCBzZWw6IFNlbGVjdGlvbi50KTogdCA9PiB7XG4gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIHByZXZlbnQgaW5jb21wbGV0ZSB0aWxlcyBpbnNpZGUgc2VsZWN0aW9uIHRpbGVzXG4gICAqIGZyb20gYmVpbmcgb3JwaGFuZWQgb24gZGVsZXRpb24sIGUuZy4gaWYgeW91IGRlbGV0ZSBzZWdtZW50IFwiKFspXCJcbiAgICogd2l0aCBcIl1cIiBpbiB0aGUgYmFja3BhY2suICAqL1xuICBsZXQgaWRzID0gU2VnbWVudC5pZHNfb2ZfaW5jb21wbGV0ZV90aWxlc19pbl9iaWRlbGltaXRlZHMoc2VsLmNvbnRlbnQpO1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBTZWxlY3Rpb24ue2NvbnRlbnQ6IFtQaWVjZS5UaWxlKHtpZCwgX30pXSwgX30gd2hlbiBMaXN0Lm1lbShpZCwgaWRzKSA9PlxuICAgICAgTm9uZVxuICAgIHwgeCA9PiBTb21lKHgpLFxuICAgIGJwLFxuICApO1xufTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzaWJsaW5nczogU2libGluZ3MudCxcbiAgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCxcbn07XG5cbmxldCBlbXB0eSA9IHtzaWJsaW5nczogU2libGluZ3MuZW1wdHksIGFuY2VzdG9yczogQW5jZXN0b3JzLmVtcHR5fTtcblxubGV0IHB1c2ggPSAoZDogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIHJzOiB0KTogdCA9PiB7XG4gIC4uLnJzLFxuICBzaWJsaW5nczogU2libGluZ3MucHVzaChkLCBwLCBycy5zaWJsaW5ncyksXG59O1xuXG5sZXQgcHJlcGVuZCA9IChkOiBEaXJlY3Rpb24udCwgc2VnOiBTZWdtZW50LnQsIHJzOiB0KTogdCA9PiB7XG4gIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnByZXBlbmQoZCwgc2VnLCBycy5zaWJsaW5ncyk7XG4gIHsuLi5ycywgc2libGluZ3N9O1xufTtcblxubGV0IHBvcCA9IChkOiBEaXJlY3Rpb24udCwgcnM6IHQpOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PlxuICBzd2l0Y2ggKFNpYmxpbmdzLnBvcChkLCBycy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKChwLCBzaWJsaW5ncykpID0+IFNvbWUoKHAsIHsuLi5ycywgc2libGluZ3N9KSlcbiAgfCBOb25lID0+XG4gICAgc3dpdGNoIChycy5hbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFsoYW5jZXN0b3IsIHNpYmxpbmdzKSwgLi4uYW5jZXN0b3JzXSA9PlxuICAgICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgICAgIGxldCBzaWJsaW5ncycgPSBBbmNlc3Rvci5kaXNhc3NlbWJsZShhbmNlc3Rvcik7XG4gICAgICBsZXQrIChwLCBzaWJsaW5ncykgPVxuICAgICAgICBTaWJsaW5ncy4ocG9wKGQsIGNvbmNhdChbcnMuc2libGluZ3MsIHNpYmxpbmdzJywgc2libGluZ3NdKSkpO1xuICAgICAgKHAsIHtzaWJsaW5ncywgYW5jZXN0b3JzfSk7XG4gICAgfVxuICB9O1xuXG5sZXQgemlwID0gKH5zZWw9U2VnbWVudC5lbXB0eSwge3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KSA9PlxuICBBbmNlc3RvcnMuemlwKFNpYmxpbmdzLnppcCh+c2VsLCBzaWJsaW5ncyksIGFuY2VzdG9ycyk7XG5cbmxldCBsb2NhbF9pbmNvbXBsZXRlX3RpbGVzID0gKHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfTogdCkgPT4ge1xuICBsZXQgc2licyA9XG4gICAgc3dpdGNoIChhbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IChwcmUsIHN1ZilcbiAgICB8IFsoYSwgXyksIC4uLl9dID0+XG4gICAgICBsZXQgKGwsIHIpID0gQW5jZXN0b3IuY29udGFpbmVyX3NoYXJkcyhhKTtcbiAgICAgIChbbCwgLi4ucHJlXSwgc3VmIEAgW3JdKTtcbiAgICB9O1xuICBTaWJsaW5ncy5pbmNvbXBsZXRlX3RpbGVzKHNpYnMpO1xufTtcblxubGV0IHBhcmVudCA9XG4gICAgKH5zZWw9U2VnbWVudC5lbXB0eSwge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBhbmNlc3RvcnN9OiB0KVxuICAgIDogb3B0aW9uKFBpZWNlLnQpID0+XG4gIGFuY2VzdG9yc1xuICB8PiBBbmNlc3RvcnMucGFyZW50XG4gIHw+IE9wdGlvbi5tYXAocCA9PiBCYXNlLlRpbGUoQW5jZXN0b3IuemlwKGxfc2licyBAIHNlbCBAIHJfc2licywgcCkpKTtcblxubGV0IGRlbGV0ZV9wYXJlbnQgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogdCA9PiB7XG4gIHN3aXRjaCAoYW5jZXN0b3JzKSB7XG4gIHwgW10gPT4ge3NpYmxpbmdzLCBhbmNlc3RvcnN9XG4gIHwgWyhfLCBwX3NpYnMpLCAuLi5hbmNlc3RvcnNdID0+IHtcbiAgICAgIHNpYmxpbmdzOiBTaWJsaW5ncy5jb25jYXQoW3NpYmxpbmdzLCBwX3NpYnNdKSxcbiAgICAgIGFuY2VzdG9ycyxcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogU2libGluZ3MudCA9PlxuICBTaWJsaW5ncy5jb25jYXQoW3NpYmxpbmdzLCBBbmNlc3RvcnMuZGlzYXNzZW1ibGUoYW5jZXN0b3JzKV0pO1xuXG5sZXQgcmVtb2xkID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IHQgPT4ge1xuICBsZXQgcyA9IEFuY2VzdG9ycy5zb3J0KGFuY2VzdG9ycyk7XG4gIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnJlbW9sZChzaWJsaW5ncywgcyk7XG4gIHthbmNlc3RvcnMsIHNpYmxpbmdzfTtcbn07XG5cbmxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiB0ID0+IHtcbiAgLyogRGlyZWN0aW9uIGlzIHNpZGUgb2YgZ3JvdXQgY2FyZXQgd2lsbCBlbmQgdXAgb24gKi9cblxuICBsZXQgYW5jZXN0b3JzID0gQW5jZXN0b3JzLnJlZ3JvdXQoYW5jZXN0b3JzKTtcbiAgbGV0IHNpYmxpbmdzID0ge1xuICAgIGxldCAoKHByZSwgc19sLCB0cmltX2wpLCAodHJpbV9yLCBzX3IsIHN1ZikpID1cbiAgICAgIFNpYmxpbmdzLnJlZ3JvdXQoc2libGluZ3MpO1xuICAgIGxldCAodHJpbV9sLCB0cmltX3IpID0ge1xuICAgICAgb3BlbiBTZWdtZW50LlRyaW07XG4gICAgICBsZXQgKChfLCBnc19sKSwgKF8sIGdzX3IpKSA9ICh0cmltX2wsIHRyaW1fcik7XG4gICAgICBsZXQgKHNlZ19sLCBzZWdfcikgPSAodG9fc2VnKHRyaW1fbCksIHRvX3NlZyh0cmltX3IpKTtcbiAgICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoZ3NfbCksIGdzX3IpIHtcbiAgICAgIHwgKFNvbWUoKF8sIGdfbCkpLCBbZ19yLCAuLi5fXSkgPT5cbiAgICAgICAgR3JvdXQuZml0cyhnX2wsIGdfcilcbiAgICAgICAgICAvLyBub3RlOiBhc3N1bWVzIHNpbmdsZSBncm91dCBpbnZhcmlhbnQgaW4gdW4tY2FyZXQtaW50ZXJydXB0ZWQgdHJpbVxuICAgICAgICAgID8gKHdzKHRyaW1fbCksIHdzKHRyaW1fcikpICAvLyh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICAgICAgfCBMZWZ0ID0+ICh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgICAgICAgIHwgUmlnaHQgPT4gKHNlZ19sLCB3cyh0cmltX3IpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIHwgKFNvbWUoKF8sIGcpKSwgW10pID0+XG4gICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgc19yKSA/IChzZWdfbCwgc2VnX3IpIDogKHdzKHRyaW1fbCksIHNlZ19yKVxuICAgICAgfCAoTm9uZSwgW2csIC4uLl9dKSA9PlxuICAgICAgICBHcm91dC5maXRzX3NoYXBlKGcsIHNfbCkgPyAoc2VnX2wsIHNlZ19yKSA6IChzZWdfbCwgd3ModHJpbV9yKSlcbiAgICAgIHwgKE5vbmUsIFtdKSA9PlxuICAgICAgICBOaWIuU2hhcGUuZml0cyhzX2wsIHNfcilcbiAgICAgICAgICA/IChzZWdfbCwgc2VnX3IpXG4gICAgICAgICAgLy8gY2FuIG1vZHVsYXRlIHdpdGggZGlyZWN0aW9uYWwgYXJnXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgIHwgTGVmdCA9PlxuICAgICAgICAgICAgICBsZXQgdHJpbSA9IGFkZF9ncm91dCh+ZD1SaWdodCwgc19yLCB0cmltX3IpO1xuICAgICAgICAgICAgICAoc2VnX2wsIHRvX3NlZyh0cmltKSk7XG4gICAgICAgICAgICB8IFJpZ2h0ID0+XG4gICAgICAgICAgICAgIGxldCB0cmltID0gYWRkX2dyb3V0KH5kPUxlZnQsIHNfbCwgdHJpbV9sKTtcbiAgICAgICAgICAgICAgKHRvX3NlZyh0cmltKSwgc2VnX3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIH07XG4gICAgfTtcbiAgICAocHJlIEAgdHJpbV9sLCB0cmltX3IgQCBzdWYpO1xuICB9O1xuICB7c2libGluZ3MsIGFuY2VzdG9yc307XG59O1xuXG5sZXQgcHJlcGVuZF9nZW5lcmF0aW9uID0gKChhLCBzaWJzKTogQW5jZXN0b3JzLmdlbmVyYXRpb24sIHJzOiB0KTogdCA9PiB7XG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5lbXB0eSxcbiAgYW5jZXN0b3JzOiBbKGEsIFNpYmxpbmdzLmNvbmNhdChbc2licywgcnMuc2libGluZ3NdKSksIC4uLnJzLmFuY2VzdG9yc10sXG59O1xubGV0IHByZXBlbmRfc2libGluZ3MgPSAoc2liczogU2libGluZ3MudCwgcnM6IHQpOiB0ID0+IHtcbiAgLi4ucnMsXG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5jb25jYXQoW3NpYnMsIHJzLnNpYmxpbmdzXSksXG59O1xuXG5sZXQgY29uY2F0ID0gKHJzczogbGlzdCh0KSk6IHQgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgIChyczogdCwgY2F0OiB0KSA9PlxuICAgICAgTGlzdC5mb2xkX3JpZ2h0KHByZXBlbmRfZ2VuZXJhdGlvbiwgcnMuYW5jZXN0b3JzLCBjYXQpXG4gICAgICB8PiBwcmVwZW5kX3NpYmxpbmdzKHJzLnNpYmxpbmdzKSxcbiAgICByc3MsXG4gICAgZW1wdHksXG4gICk7XG5cbmxldCByZWFzc2VtYmxlX3BhcmVudCA9IChyczogdCk6IHQgPT5cbiAgc3dpdGNoIChycy5hbmNlc3RvcnMpIHtcbiAgfCBbXSA9PiByc1xuICB8IFsoYSwgc2licyksIC4uLmFuY3NdID0+XG4gICAgbGV0IChsLCByKSA9XG4gICAgICBycy5zaWJsaW5nc1xuICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcoYS5pZClcbiAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKTtcbiAgICBsZXQgZmxhdHRlbl9tYXRjaCA9XG4gICAgICBBYmEuZm9sZF9yaWdodChcbiAgICAgICAgKHQ6IFRpbGUudCwga2lkLCAoc2hhcmRzLCBraWRzKSkgPT5cbiAgICAgICAgICBBYmEubWsodC5zaGFyZHMgQCBzaGFyZHMsIHQuY2hpbGRyZW4gQCBba2lkLCAuLi5raWRzXSksXG4gICAgICAgICh0OiBUaWxlLnQpID0+IEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbiksXG4gICAgICApO1xuICAgIGxldCAoYSwgbCkgPVxuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IE5vbmUgPT4gKGEsIGZzdChycy5zaWJsaW5ncykpXG4gICAgICB8IFNvbWUoKG91dGVyX2wsIG1hdGNoX2wsIGlubmVyX2wpKSA9PlxuICAgICAgICBsZXQgKHNoYXJkc19sLCBraWRzX2wpID0gZmxhdHRlbl9tYXRjaChtYXRjaF9sKTtcbiAgICAgICAgbGV0IGEgPSB7XG4gICAgICAgICAgLi4uYSxcbiAgICAgICAgICBzaGFyZHM6IGEuc2hhcmRzIHw+IFBhaXJVdGlsLm1hcF9mc3Qoc3MgPT4gc3MgQCBzaGFyZHNfbCksXG4gICAgICAgICAgY2hpbGRyZW46XG4gICAgICAgICAgICBhLmNoaWxkcmVuXG4gICAgICAgICAgICB8PiBQYWlyVXRpbC5tYXBfZnN0KGtpZHMgPT4ga2lkcyBAIFtvdXRlcl9sLCAuLi5raWRzX2xdKSxcbiAgICAgICAgfTtcbiAgICAgICAgKGEsIGlubmVyX2wpO1xuICAgICAgfTtcbiAgICBsZXQgKGEsIHIpID1cbiAgICAgIHN3aXRjaCAocikge1xuICAgICAgfCBOb25lID0+IChhLCBzbmQocnMuc2libGluZ3MpKVxuICAgICAgfCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkgPT5cbiAgICAgICAgbGV0IChzaGFyZHNfciwga2lkc19yKSA9IGZsYXR0ZW5fbWF0Y2gobWF0Y2hfcik7XG4gICAgICAgIGxldCBhID0ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgc2hhcmRzOiBhLnNoYXJkcyB8PiBQYWlyVXRpbC5tYXBfc25kKHNzID0+IHNoYXJkc19yIEAgc3MpLFxuICAgICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgICAgYS5jaGlsZHJlblxuICAgICAgICAgICAgfD4gUGFpclV0aWwubWFwX3NuZChraWRzID0+IFtvdXRlcl9yLCAuLi5raWRzX3JdIEAga2lkcyksXG4gICAgICAgIH07XG4gICAgICAgIChhLCBpbm5lcl9yKTtcbiAgICAgIH07XG4gICAge3NpYmxpbmdzOiAobCwgciksIGFuY2VzdG9yczogWyhhLCBzaWJzKSwgLi4uYW5jc119O1xuICB9O1xuXG5sZXQgcmVhc3NlbWJsZV9zaWJsaW5ncyA9IChyczogdCkgPT4ge1xuICAuLi5ycyxcbiAgc2libGluZ3M6IFNpYmxpbmdzLnJlYXNzZW1ibGUocnMuc2libGluZ3MpLFxufTtcblxubGV0IHJlYXNzZW1ibGUgPSAocnM6IHQpOiB0ID0+IHtcbiAgbGV0IHJlYyBnbyA9IChyczogdCk6IHQgPT5cbiAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzbmQocnMuc2libGluZ3MpKSkge1xuICAgIHwgW10gPT4gcnNcbiAgICB8IFt0LCAuLi5fXSA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgcnMuc2libGluZ3NcbiAgICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcodC5pZClcbiAgICAgICAgfD4gVHVwbGVVdGlsLm1hcDIoQWJhLnRyaW0pXG4gICAgICApIHtcbiAgICAgIHwgKF8sIE5vbmUpID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZVwiKVxuICAgICAgfCAoTm9uZSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuICAgICAgICBsZXQge3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9ID1cbiAgICAgICAgICBnbyh7Li4ucnMsIHNpYmxpbmdzOiAoZnN0KHJzLnNpYmxpbmdzKSwgb3V0ZXJfcil9KTtcbiAgICAgICAgbGV0IHQgPSBUaWxlLnJlYXNzZW1ibGUobWF0Y2hfcik7XG4gICAgICAgIGxldCBzdWYgPSBTZWdtZW50LmNvbmNhdChbaW5uZXJfciwgW1RpbGUudG9fcGllY2UodCksIC4uLnN1Zl1dKTtcbiAgICAgICAge3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9O1xuICAgICAgfCAoXG4gICAgICAgICAgU29tZSgob3V0ZXJfbCwgbWF0Y2hfbCwgaW5uZXJfbCkpLFxuICAgICAgICAgIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSxcbiAgICAgICAgKSA9PlxuICAgICAgICBsZXQgcnMgPSBnbyh7Li4ucnMsIHNpYmxpbmdzOiAob3V0ZXJfbCwgb3V0ZXJfcil9KTtcbiAgICAgICAgbGV0IGFuY2VzdG9ycyA9IFtcbiAgICAgICAgICAoQW5jZXN0b3IucmVhc3NlbWJsZShtYXRjaF9sLCBtYXRjaF9yKSwgcnMuc2libGluZ3MpLFxuICAgICAgICAgIC4uLnJzLmFuY2VzdG9ycyxcbiAgICAgICAgXTtcbiAgICAgICAgbGV0IHNpYmxpbmdzID0gKGlubmVyX2wsIGlubmVyX3IpO1xuICAgICAgICB7YW5jZXN0b3JzLCBzaWJsaW5nc307XG4gICAgICB9XG4gICAgfTtcbiAgcnMgfD4gcmVhc3NlbWJsZV9zaWJsaW5ncyB8PiByZWFzc2VtYmxlX3BhcmVudCB8PiBnbztcbn07XG5cbi8vIGxldCByZWMgcmVhc3NlbWJsZSA9IChyczogdCk6IHQgPT4ge1xuLy8gICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5yZWFzc2VtYmxlKHJzLnNpYmxpbmdzKTtcbi8vICAgc3dpdGNoIChTaWJsaW5ncy5pbmNvbXBsZXRlX3RpbGVzKHNpYmxpbmdzKSkge1xuLy8gICB8IChbXSwgXylcbi8vICAgfCAoXywgW10pID0+IHsuLi5ycywgc2libGluZ3N9XG4vLyAgIHwgKFtfLCAuLi5fXSwgW3QsIC4uLl9dKSA9PlxuLy8gICAgIHN3aXRjaCAoXG4vLyAgICAgICBzaWJsaW5nc1xuLy8gICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcodC5pZClcbi8vICAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKVxuLy8gICAgICkge1xuLy8gICAgIHwgKE5vbmUsIE5vbmUpID0+IHsuLi5ycywgc2libGluZ3N9XG4vLyAgICAgfCAoTm9uZSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuLy8gICAgICAgbGV0IHtzaWJsaW5nczogKGwsIHIpLCBhbmNlc3RvcnN9ID1cbi8vICAgICAgICAgcmVhc3NlbWJsZSh7Li4ucnMsIHNpYmxpbmdzOiAoZnN0KHNpYmxpbmdzKSwgb3V0ZXJfcil9KTtcbi8vICAgICAgIHtcbi8vICAgICAgICAgc2libGluZ3M6IChcbi8vICAgICAgICAgICBsLFxuLy8gICAgICAgICAgIFNlZ21lbnQuY29uY2F0KFtpbm5lcl9yLCBBbmNlc3Rvci5NYXRjaC5TdWZmaXguam9pbihtYXRjaF9yKSwgcl0pLFxuLy8gICAgICAgICApLFxuLy8gICAgICAgICBhbmNlc3RvcnMsXG4vLyAgICAgICB9O1xuLy8gICAgIHwgKFNvbWUoKGlubmVyX2wsIG1hdGNoX2wsIG91dGVyX2wpKSwgTm9uZSkgPT5cbi8vICAgICAgIGxldCB7c2libGluZ3M6IChsLCByKSwgYW5jZXN0b3JzfSA9XG4vLyAgICAgICAgIHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIHNuZChycy5zaWJsaW5ncykpfSk7XG4vLyAgICAgICB7XG4vLyAgICAgICAgIHNpYmxpbmdzOiAoXG4vLyAgICAgICAgICAgU2VnbWVudC5jb25jYXQoW2lubmVyX2wsIEFuY2VzdG9yLk1hdGNoLlN1ZmZpeC5qb2luKG1hdGNoX2wpLCBsXSksXG4vLyAgICAgICAgICAgcixcbi8vICAgICAgICAgKSxcbi8vICAgICAgICAgYW5jZXN0b3JzLFxuLy8gICAgICAgfTtcbi8vICAgICB8IChTb21lKChpbm5lcl9sLCBtYXRjaF9sLCBvdXRlcl9sKSksIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbi8vICAgICAgIGxldCBtYXRjaCA9IChtYXRjaF9sLCBtYXRjaF9yKTtcbi8vICAgICAgIGxldCByc19pbm5lciA9XG4vLyAgICAgICAgIHN3aXRjaCAoQW5jZXN0b3IuTWF0Y2guY29tcGxldGUobWF0Y2gpKSB7XG4vLyAgICAgICAgIHwgTm9uZSA9PiB7XG4vLyAgICAgICAgICAgICBzaWJsaW5nczpcbi8vICAgICAgICAgICAgICAgU2libGluZ3MuY29uY2F0KFtcbi8vICAgICAgICAgICAgICAgICAoaW5uZXJfbCwgaW5uZXJfciksXG4vLyAgICAgICAgICAgICAgICAgQW5jZXN0b3IuTWF0Y2guam9pbihtYXRjaCksXG4vLyAgICAgICAgICAgICAgIF0pLFxuLy8gICAgICAgICAgICAgYW5jZXN0b3JzOiBBbmNlc3RvcnMuZW1wdHksXG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICB8IFNvbWUoYSkgPT4ge1xuLy8gICAgICAgICAgICAgc2libGluZ3M6IChpbm5lcl9sLCBpbm5lcl9yKSxcbi8vICAgICAgICAgICAgIGFuY2VzdG9yczogWyhhLCBTaWJsaW5ncy5lbXB0eSldLFxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfTtcbi8vICAgICAgIGxldCByc19vdXRlciA9IHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIG91dGVyX3IpfSk7XG4vLyAgICAgICBjb25jYXQoW3JzX2lubmVyLCByc19vdXRlcl0pO1xuLy8gICAgIH1cbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIENhcmV0ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBPdXRlclxuICAgIHwgSW5uZXIoaW50LCBpbnQpO1xuXG4gIGxldCBkZWNyZW1lbnQ6IHQgPT4gdCA9XG4gICAgZnVuXG4gICAgfCBPdXRlclxuICAgIHwgSW5uZXIoXywgMCkgPT4gT3V0ZXJcbiAgICB8IElubmVyKGQsIGMpID0+IElubmVyKGQsIGMgLSAxKTtcblxuICBsZXQgb2Zmc2V0OiB0ID0+IGludCA9XG4gICAgZnVuXG4gICAgfCBPdXRlciA9PiAwXG4gICAgfCBJbm5lcihfLCBjKSA9PiBjICsgMTtcbn07XG5cbi8vIGFzc3VtaW5nIHNpbmdsZSBiYWNrcGFjaywgc2hhcmRzIG1heSBhcHBlYXIgaW4gc2VsZWN0aW9uLCBiYWNrcGFjaywgb3Igc2libGluZ3NcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24udCxcbiAgYmFja3BhY2s6IEJhY2twYWNrLnQsXG4gIHJlbGF0aXZlczogUmVsYXRpdmVzLnQsXG4gIGNhcmV0OiBDYXJldC50LFxuICAvLyBjb2xfdGFyZ2V0OiBpbnQsXG59O1xuXG5sZXQgaW5pdDogdW5pdCA9PiB0ID1cbiAgKCkgPT4ge1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKFtdKSxcbiAgICBiYWNrcGFjazogW10sXG4gICAgcmVsYXRpdmVzOiB7XG4gICAgICBzaWJsaW5nczogKFtdLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSxcbiAgICAgIGFuY2VzdG9yczogW10sXG4gICAgfSxcbiAgICBjYXJldDogT3V0ZXIsXG4gICAgLy8gY29sX3RhcmdldDogMCxcbiAgfTtcblxubGV0IG5leHRfYmxhbmsgPSBfID0+IElkLm1rKCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2h1bmtpbmVzcyA9XG4gIHwgQnlDaGFyXG4gIHwgTW9ub0J5Q2hhclxuICB8IEJ5VG9rZW47XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGxhbmFyID1cbiAgfCBVcFxuICB8IERvd25cbiAgfCBMZWZ0KGNodW5raW5lc3MpXG4gIHwgUmlnaHQoY2h1bmtpbmVzcyk7XG5cbmxldCBmcm9tX3BsYW5lOiBwbGFuYXIgPT4gRGlyZWN0aW9uLnQgPVxuICBmdW5cbiAgfCBMZWZ0KF8pID0+IExlZnRcbiAgfCBSaWdodChfKSA9PiBSaWdodFxuICB8IFVwID0+IExlZnRcbiAgfCBEb3duID0+IFJpZ2h0O1xuXG5sZXQgdXBkYXRlX2NhcmV0ID0gKGY6IENhcmV0LnQgPT4gQ2FyZXQudCwgejogdCk6IHQgPT4ge1xuICAuLi56LFxuICBjYXJldDogZih6LmNhcmV0KSxcbn07XG5sZXQgc2V0X2NhcmV0ID0gKGNhcmV0OiBDYXJldC50KTogKHQgPT4gdCkgPT4gdXBkYXRlX2NhcmV0KF8gPT4gY2FyZXQpO1xuXG5sZXQgdXBkYXRlX3JlbGF0aXZlcyA9IChmOiBSZWxhdGl2ZXMudCA9PiBSZWxhdGl2ZXMudCwgejogdCk6IHQgPT4ge1xuICAuLi56LFxuICByZWxhdGl2ZXM6IGYoei5yZWxhdGl2ZXMpLFxufTtcblxubGV0IHVwZGF0ZV9zaWJsaW5nczogKFNpYmxpbmdzLnQgPT4gU2libGluZ3MudCwgdCkgPT4gdCA9XG4gIGYgPT4gdXBkYXRlX3JlbGF0aXZlcyhycyA9PiB7Li4ucnMsIHNpYmxpbmdzOiBmKHJzLnNpYmxpbmdzKX0pO1xuXG5sZXQgcGFyZW50ID0gKHo6IHQpOiBvcHRpb24oUGllY2UudCkgPT5cbiAgUmVsYXRpdmVzLnBhcmVudCh+c2VsPXouc2VsZWN0aW9uLmNvbnRlbnQsIHoucmVsYXRpdmVzKTtcblxubGV0IGRlbGV0ZV9wYXJlbnQgPSAoejogdCk6IHQgPT4ge1xuICAuLi56LFxuICByZWxhdGl2ZXM6IFJlbGF0aXZlcy5kZWxldGVfcGFyZW50KHoucmVsYXRpdmVzKSxcbn07XG5cbmxldCB6aXAgPSAoejogdCk6IFNlZ21lbnQudCA9PlxuICBSZWxhdGl2ZXMuemlwKH5zZWw9ei5zZWxlY3Rpb24uY29udGVudCwgei5yZWxhdGl2ZXMpO1xuXG5sZXQgdW56aXAgPSAoc2VnOiBTZWdtZW50LnQpOiB0ID0+IHtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24ubWsoW10pLFxuICBiYWNrcGFjazogW10sXG4gIHJlbGF0aXZlczoge1xuICAgIHNpYmxpbmdzOiAoc2VnLCBbXSksXG4gICAgYW5jZXN0b3JzOiBbXSxcbiAgfSxcbiAgY2FyZXQ6IE91dGVyLFxufTtcblxubGV0IHNpYnNfd2l0aF9zZWwgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uOiB7Y29udGVudCwgZm9jdXMsIF99LFxuICAgICAgICByZWxhdGl2ZXM6IHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgX30sXG4gICAgICAgIF8sXG4gICAgICB9OiB0LFxuICAgIClcbiAgICA6IFNpYmxpbmdzLnQgPT5cbiAgc3dpdGNoIChmb2N1cykge1xuICB8IExlZnQgPT4gKGxfc2licywgY29udGVudCBAIHJfc2licylcbiAgfCBSaWdodCA9PiAobF9zaWJzIEAgY29udGVudCwgcl9zaWJzKVxuICB9O1xuXG5sZXQgcG9wX2JhY2twYWNrID0gKHo6IHQpID0+XG4gIEJhY2twYWNrLnBvcChSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlcyh6LnJlbGF0aXZlcyksIHouYmFja3BhY2spO1xuXG5sZXQgbGVmdF9uZWlnaGJvcl9tb25vdGlsZTogU2libGluZ3MudCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBzID0+IHMgfD4gU2libGluZ3MubGVmdF9uZWlnaGJvciB8PiBPcHRVdGlsLmFuZF90aGVuKFBpZWNlLm1vbm90aWxlKTtcblxubGV0IHJpZ2h0X25laWdoYm9yX21vbm90aWxlOiBTaWJsaW5ncy50ID0+IG9wdGlvbihUb2tlbi50KSA9XG4gIHMgPT4gcyB8PiBTaWJsaW5ncy5yaWdodF9uZWlnaGJvciB8PiBPcHRVdGlsLmFuZF90aGVuKFBpZWNlLm1vbm90aWxlKTtcblxubGV0IG5laWdoYm9yX21vbm90aWxlczogU2libGluZ3MudCA9PiAob3B0aW9uKFRva2VuLnQpLCBvcHRpb24oVG9rZW4udCkpID1cbiAgcyA9PiAobGVmdF9uZWlnaGJvcl9tb25vdGlsZShzKSwgcmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUocykpO1xuXG5sZXQgcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4ge1xuICBhc3NlcnQoU2VsZWN0aW9uLmlzX2VtcHR5KHouc2VsZWN0aW9uKSk7XG4gIGxldCByZWxhdGl2ZXMgPSBSZWxhdGl2ZXMucmVncm91dChkLCB6LnJlbGF0aXZlcyk7XG4gIHsuLi56LCByZWxhdGl2ZXN9O1xufTtcblxubGV0IHJlbW9sZCA9ICh6OiB0KTogdCA9PiB7XG4gIGFzc2VydChTZWxlY3Rpb24uaXNfZW1wdHkoei5zZWxlY3Rpb24pKTtcbiAgey4uLnosIHJlbGF0aXZlczogUmVsYXRpdmVzLnJlbW9sZCh6LnJlbGF0aXZlcyl9O1xufTtcblxubGV0IHJlbW9sZF9yZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB6IHw+IHJlbW9sZCB8PiByZWdyb3V0KGQpO1xuXG5sZXQgY2xlYXJfdW5wYXJzZWRfYnVmZmVyID0gKHo6IHQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSkge1xuICB8IEJ1ZmZlcihVbnBhcnNlZCkgPT4gey4uLnosIHNlbGVjdGlvbjogU2VsZWN0aW9uLmVtcHR5fVxuICB8IF8gPT4gelxuICB9O1xuXG5sZXQgdW5zZWxlY3QgPSAofmVyYXNlX2J1ZmZlcj1mYWxzZSwgejogdCk6IHQgPT4ge1xuICAvKiBOT1RFKGFuZHJldyk6IEVyYXNlIGJ1ZmZlciBmbGFnIG9ubHkgYXBwbGllcyB0byB1bnBhcnNlZCBidWZmZXIsXG4gICAqIHRoYXQgaXMsIHRoZSBidWZmZXIgc3R5bGUgdGhhdCBqdXN0IGNvbnRhaW5zIGEgc2luZ2xlIGZsYXQgdG9rZW4uXG4gICAqIEVyYXNpbmcgYSBidWZmZXIgdGhlIGNvbnRhaW5zIGFyYml0cmFyeSB0aWxlcyB3b3VsZCBiZSBtb3JlIGNvbXBsZXhcbiAgICogYXMgd2UgY2FuJ3QganVzdCBlbXB0eSB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgcmVncm91dGluZyAqL1xuICBsZXQgeiA9IGVyYXNlX2J1ZmZlciA/IGNsZWFyX3VucGFyc2VkX2J1ZmZlcih6KSA6IHo7XG4gIGxldCByZWxhdGl2ZXMgPVxuICAgIHoucmVsYXRpdmVzXG4gICAgfD4gUmVsYXRpdmVzLnByZXBlbmQoei5zZWxlY3Rpb24uZm9jdXMsIHouc2VsZWN0aW9uLmNvbnRlbnQpXG4gICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gIGxldCBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZW1wdHk7XG4gIHsuLi56LCBzZWxlY3Rpb24sIHJlbGF0aXZlc307XG59O1xubGV0IHVuc2VsZWN0X2FuZF96aXAgPSAofmVyYXNlX2J1ZmZlcj1mYWxzZSwgejogdCk6IFNlZ21lbnQudCA9PlxuICB6IHw+IHVuc2VsZWN0KH5lcmFzZV9idWZmZXIpIHw+IHppcDtcblxubGV0IHVwZGF0ZV9zZWxlY3Rpb24gPSAoc2VsZWN0aW9uOiBTZWxlY3Rpb24udCwgejogdCk6IChTZWxlY3Rpb24udCwgdCkgPT4ge1xuICBsZXQgb2xkID0gei5zZWxlY3Rpb247XG4gIC8vIHVzZWQgdG8gYmUgbmVjZXNzYXJ5IHRvIHVuc2VsZWN0IHdoZW4gc2VsZWN0aW9uIHVwZGF0ZVxuICAvLyBpbmNsdWRlZCByZW1vbGQvcmVncm91dCwgbm93IG5vIGxvbmdlciBuZWNlc3NhcnkgaWYgbmVlZHNcbiAgLy8gdG8gYmUgY2hhbmdlZCBidXQga2VlcGluZyBmb3Igbm93IHRvIG1pbmltaXplIGNoYW5nZVxuICBsZXQgeiA9IHVuc2VsZWN0KHsuLi56LCBzZWxlY3Rpb259KTtcbiAgKG9sZCwgeik7XG59O1xuXG5sZXQgcHV0X3NlbGVjdGlvbiA9IChzZWw6IFNlbGVjdGlvbi50LCB6OiB0KTogdCA9PlxuICBzbmQodXBkYXRlX3NlbGVjdGlvbihzZWwsIHopKTtcblxubGV0IGdyb3dfc2VsZWN0aW9uID0gKHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQrIChwLCByZWxhdGl2ZXMpID0gUmVsYXRpdmVzLnBvcCh6LnNlbGVjdGlvbi5mb2N1cywgei5yZWxhdGl2ZXMpO1xuICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLnB1c2gocCwgei5zZWxlY3Rpb24pO1xuICB7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9O1xufTtcblxuLy8gdG9nZ2xlcyBmb2N1cyBhbmQgZ3Jvd3MgaWYgc2VsZWN0aW9uIGlzIGVtcHR5XG5sZXQgc2hyaW5rX3NlbGVjdGlvbiA9ICh6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgc3dpdGNoIChTZWxlY3Rpb24ucG9wKHouc2VsZWN0aW9uKSkge1xuICB8IE5vbmUgPT5cbiAgICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLnRvZ2dsZV9mb2N1cyh6LnNlbGVjdGlvbik7XG4gICAgZ3Jvd19zZWxlY3Rpb24oey4uLnosIHNlbGVjdGlvbn0pO1xuICB8IFNvbWUoKHAsIHNlbGVjdGlvbikpID0+XG4gICAgbGV0IHJlbGF0aXZlcyA9XG4gICAgICB6LnJlbGF0aXZlc1xuICAgICAgfD4gUmVsYXRpdmVzLnB1c2goc2VsZWN0aW9uLmZvY3VzLCBwKVxuICAgICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gICAgU29tZSh7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9KTtcbiAgfTtcbn07XG5cbmxldCB0b2dnbGVfZm9jdXMgPSAoejogdCk6IHQgPT4ge1xuICAuLi56LFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbi50b2dnbGVfZm9jdXMoei5zZWxlY3Rpb24pLFxufTtcblxubGV0IGRpcmVjdGlvbmFsX3Vuc2VsZWN0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB7XG4gIGxldCBzZWxlY3Rpb24gPSB7Li4uei5zZWxlY3Rpb24sIGZvY3VzOiBEaXJlY3Rpb24udG9nZ2xlKGQpfTtcbiAgdW5zZWxlY3Qoey4uLnosIHNlbGVjdGlvbn0pO1xufTtcblxubGV0IG1vdmUgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgaWYgKFNlbGVjdGlvbi5pc19lbXB0eSh6LnNlbGVjdGlvbikpIHtcbiAgICAvLyBsZXQgYmFsYW5jZWQgPSAhQmFja3BhY2suaXNfYmFsYW5jZWQoei5iYWNrcGFjayk7XG4gICAgbGV0KyAocCwgcmVsYXRpdmVzKSA9IFJlbGF0aXZlcy5wb3AoZCwgei5yZWxhdGl2ZXMpO1xuICAgIGxldCByZWxhdGl2ZXMgPVxuICAgICAgcmVsYXRpdmVzXG4gICAgICB8PiBSZWxhdGl2ZXMucHVzaChEaXJlY3Rpb24udG9nZ2xlKGQpLCBwKVxuICAgICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gICAgey4uLnosIHJlbGF0aXZlc307XG4gIH0gZWxzZSB7XG4gICAgU29tZShkaXJlY3Rpb25hbF91bnNlbGVjdChkLCB6KSk7XG4gIH07XG5cbmxldCBzZWxlY3QgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgZCA9PSB6LnNlbGVjdGlvbi5mb2N1cyA/IGdyb3dfc2VsZWN0aW9uKHopIDogc2hyaW5rX3NlbGVjdGlvbih6KTtcblxubGV0IHBpY2tfdXAgPSAoejogdCk6IHQgPT4ge1xuICBsZXQgKHNlbGVjdGVkLCB6KSA9IHVwZGF0ZV9zZWxlY3Rpb24oU2VsZWN0aW9uLmVtcHR5LCB6KTtcbiAgbGV0IHNlbGVjdGlvbiA9XG4gICAgc2VsZWN0ZWQuY29udGVudFxuICAgIHw+IFNlZ21lbnQudHJpbV9ncm91dF9hcm91bmRfc2Vjb25kYXJ5KExlZnQpXG4gICAgfD4gU2VnbWVudC50cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnkoUmlnaHQpXG4gICAgfD4gU2VsZWN0aW9uLm1rO1xuICBTZWdtZW50LnRpbGVzKHNlbGVjdGlvbi5jb250ZW50KVxuICB8PiBMaXN0Lm1hcCgodDogVGlsZS50KSA9PiB0LmlkKVxuICB8PiBFZmZlY3Quc190b3VjaDtcbiAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaChzZWxlY3Rpb24sIHouYmFja3BhY2spO1xuICB7Li4ueiwgYmFja3BhY2t9O1xufTtcblxubGV0IGRlc3RydWN0ID0gKH5kZXN0cm95X2tpZHM9dHJ1ZSwgejogdCk6IHQgPT4ge1xuICBsZXQgYmFja3BhY2sgPVxuICAgIEJhY2twYWNrLnJlbW92ZV91bmlfdGlsZXNfd2l0aF9kZWVwX21hdGNoZXMoei5iYWNrcGFjaywgei5zZWxlY3Rpb24pO1xuICBsZXQgKHNlbGVjdGVkLCB6KSA9IHVwZGF0ZV9zZWxlY3Rpb24oU2VsZWN0aW9uLmVtcHR5LCB6KTtcbiAgbGV0ICh0b19waWNrX3VwLCB0b19yZW1vdmUpID1cbiAgICBTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VsZWN0ZWQuY29udGVudClcbiAgICB8PiBMaXN0LnBhcnRpdGlvbih0ID0+XG4gICAgICAgICBTaWJsaW5ncy5jb250YWluc19tYXRjaGluZyh0LCB6LnJlbGF0aXZlcy5zaWJsaW5ncylcbiAgICAgICAgIHx8IEFuY2VzdG9ycy5wYXJlbnRfbWF0Y2hlcyh0LCB6LnJlbGF0aXZlcy5hbmNlc3RvcnMpXG4gICAgICAgKTtcbiAgLyogSWYgZmxhZyBpcyBzZXQsIGJyZWFrIHVwIHRpbGVzIGFuZCByZW1vdmUgY2hpbGRyZW4gKi9cbiAgbGV0IHRvX3BpY2tfdXAgPVxuICAgIGRlc3Ryb3lfa2lkc1xuICAgICAgPyBMaXN0Lm1hcChUaWxlLmRpc2ludGVncmF0ZSwgdG9fcGlja191cCkgfD4gTGlzdC5mbGF0dGVuIDogdG9fcGlja191cDtcbiAgRWZmZWN0LnNfdG91Y2goTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gdC5pZCwgdG9fcGlja191cCkpO1xuICBsZXQgYmFja3BhY2sgPVxuICAgIGJhY2twYWNrXG4gICAgfD4gQmFja3BhY2sucmVtb3ZlX21hdGNoaW5nKHRvX3JlbW92ZSlcbiAgICB8PiBCYWNrcGFjay5wdXNoX3MoXG4gICAgICAgICB0b19waWNrX3VwIHw+IExpc3QubWFwKFNlZ21lbnQub2ZfdGlsZSkgfD4gTGlzdC5tYXAoU2VsZWN0aW9uLm1rKSxcbiAgICAgICApO1xuICB7Li4ueiwgYmFja3BhY2t9O1xufTtcblxubGV0IGRlbGV0ZSA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6IHw+IHNlbGVjdChkKSB8PiBPcHRpb24ubWFwKGRlc3RydWN0KTtcblxubGV0IHB1dF9kb3duID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0IHogPSBkZXN0cnVjdCh6KTtcbiAgbGV0KiAoXywgcG9wcGVkLCBiYWNrcGFjaykgPSBwb3BfYmFja3BhY2soeik7XG4gIFNlZ21lbnQudGlsZXMocG9wcGVkLmNvbnRlbnQpXG4gIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IHQuaWQpXG4gIHw+IEVmZmVjdC5zX3RvdWNoO1xuICBsZXQgeiA9IHsuLi56LCBiYWNrcGFja30gfD4gcHV0X3NlbGVjdGlvbihwb3BwZWQpIHw+IHVuc2VsZWN0O1xuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IFNvbWUoeilcbiAgfCBSaWdodCA9PiBtb3ZlKExlZnQsIHopXG4gIH07XG59O1xuXG5sZXQgcmVjIGNvbnN0cnVjdCA9XG4gICAgICAgICh+Y2FyZXQ6IERpcmVjdGlvbi50LCB+YmFja3BhY2s6IERpcmVjdGlvbi50LCBsYWJlbDogTGFiZWwudCwgejogdCk6IHQgPT4ge1xuICBzd2l0Y2ggKGxhYmVsKSB7XG4gIHwgW3RdIHdoZW4gRm9ybS5pc19zdHJpbmdfZGVsaW0odCkgPT5cbiAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGNvbnN0cnVjdGluZyBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgU2VlIEluc2VydC5tb3ZlX2ludG9faWZfc3RyaW5nbGl0IGZvciBtb3JlIHNwZWNpYWwtY2FzaW5nLiAqL1xuICAgIGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgW0Zvcm0uc3RyaW5nX2RlbGltICsrIEZvcm0uc3RyaW5nX2RlbGltXSwgeilcbiAgfCBbY29udGVudF0gd2hlbiBGb3JtLmlzX2NvbW1lbnQoY29udGVudCkgPT5cbiAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGNvbW1lbnRzLCBjYW4ndCByZWx5IG9uIHRoZSBsYXN0IGJyYW5jaCB0byBjb25zdHJ1Y3QgKi9cbiAgICBsZXQgY29udGVudCA9IFNlY29uZGFyeS5jb25zdHJ1Y3RfY29tbWVudChjb250ZW50KTtcbiAgICBsZXQgaWQgPSBJZC5taygpO1xuICAgIEVmZmVjdC5zX3RvdWNoKFtpZF0pO1xuICAgIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gICAgbGV0IHNlbGVjdGlvbnMgPSBbU2VsZWN0aW9uLm1rKEJhc2UubWtfc2Vjb25kYXJ5KGlkLCBjb250ZW50KSldO1xuICAgIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2hfcyhzZWxlY3Rpb25zLCB6LmJhY2twYWNrKTtcbiAgICBPcHRpb24uZ2V0KHB1dF9kb3duKGNhcmV0LCB7Li4ueiwgYmFja3BhY2t9KSk7XG5cbiAgfCBbY29udGVudF0gd2hlbiBGb3JtLmlzX3NlY29uZGFyeShjb250ZW50KSA9PlxuICAgIGxldCBjb250ZW50ID0gU2Vjb25kYXJ5LldoaXRlc3BhY2UoY29udGVudCk7XG4gICAgbGV0IGlkID0gSWQubWsoKTtcbiAgICBFZmZlY3Quc190b3VjaChbaWRdKTtcbiAgICB6IHw+IHVwZGF0ZV9zaWJsaW5ncygoKGwsIHIpKSA9PiAobCBAIFtTZWNvbmRhcnkoe2lkLCBjb250ZW50fSldLCByKSk7XG4gIHwgXyA9PlxuICAgIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gICAgbGV0IG1vbGRzID0gTW9sZHMuZ2V0KGxhYmVsKTtcbiAgICBhc3NlcnQobW9sZHMgIT0gW10pO1xuICAgIC8vIGluaXRpYWwgbW9sZCB0byB0eXBlY2hlY2ssIHdpbGwgYmUgcmVtb2xkZWRcbiAgICBsZXQgbW9sZCA9IExpc3QuaGQobW9sZHMpO1xuICAgIGxldCBpZCA9IElkLm1rKCk7XG4gICAgRWZmZWN0LnNfdG91Y2goW2lkXSk7XG4gICAgbGV0IHNlbGVjdGlvbnMgPVxuICAgICAgVGlsZS5zcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGxhYmVsKSlcbiAgICAgIHw+IExpc3QubWFwKFNlZ21lbnQub2ZfdGlsZSlcbiAgICAgIHw+IExpc3QubWFwKFNlbGVjdGlvbi5taylcbiAgICAgIHw+IExpc3RVdGlsLnJldl9pZihiYWNrcGFjayA9PSBSaWdodCk7XG4gICAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaF9zKHNlbGVjdGlvbnMsIHouYmFja3BhY2spO1xuICAgIE9wdGlvbi5nZXQocHV0X2Rvd24oY2FyZXQsIHsuLi56LCBiYWNrcGFja30pKTtcbiAgfTtcbn07XG5cbmxldCBjb25zdHJ1Y3RfbW9ubyA9IChkOiBEaXJlY3Rpb24udCwgdDogVG9rZW4udCwgejogdCk6IHQgPT5cbiAgY29uc3RydWN0KH5jYXJldD1kLCB+YmFja3BhY2s9TGVmdCwgW3RdLCB6KTtcblxubGV0IHJlcGxhY2UgPVxuICAgICh+Y2FyZXQ6IERpcmVjdGlvbi50LCB+YmFja3BhY2s6IERpcmVjdGlvbi50LCBsOiBMYWJlbC50LCB6OiB0KVxuICAgIDogb3B0aW9uKHQpID0+XG4gIC8qIGkuZS4gc2VsZWN0IGFuZCBjb25zdHJ1Y3QsIG92ZXJ3cml0aW5nIHRoZSBzZWxlY3Rpb24gKi9cbiAgeiB8PiBkZWxldGUoY2FyZXQpIHw+IE9wdGlvbi5tYXAoY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsKSk7XG5cbmxldCByZXBsYWNlX21vbm8gPSAoZDogRGlyZWN0aW9uLnQsIHQ6IFRva2VuLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgcmVwbGFjZSh+Y2FyZXQ9ZCwgfmJhY2twYWNrPUxlZnQsIFt0XSwgeik7XG5cbmxldCByZXByZXNlbnRhdGl2ZV9waWVjZSA9ICh6OiB0KTogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCkpID0+IHtcbiAgLyogVGhlIHBpZWNlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgb3IgaWYgbm9uZSBleGlzdHMsIHRoZSBwaWVjZSB0byB0aGUgcmlnaHQgKi9cbiAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2lic193aXRoX3NlbCh6KSkpIHtcbiAgfCAoU29tZShsKSwgXykgPT4gU29tZSgobCwgTGVmdCkpXG4gIHwgKF8sIFNvbWUocikpID0+IFNvbWUoKHIsIFJpZ2h0KSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBjYXJldF9kaXJlY3Rpb24gPSAoejogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRGlyZWN0aW9uIHRoZSBjYXJldCBpcyBmYWNpbmcgaW4gKi9cbiAgc3dpdGNoICh6LmNhcmV0KSB7XG4gIHwgSW5uZXIoXykgPT4gTm9uZVxuICB8IE91dGVyID0+XG4gICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2lic193aXRoX3NlbCh6KSkpIHtcbiAgICB8IChTb21lKGwpLCBTb21lKHIpKSB3aGVuIFBpZWNlLmlzX3NlY29uZGFyeShsKSAmJiBQaWVjZS5pc19zZWNvbmRhcnkocikgPT5cbiAgICAgIE5vbmVcbiAgICB8IF8gPT4gU2libGluZ3MuZGlyZWN0aW9uX2JldHdlZW4oc2lic193aXRoX3NlbCh6KSlcbiAgICB9XG4gIH07XG5cbmxldCBiYXNlX3BvaW50ID0gKG1lYXN1cmVkOiBNZWFzdXJlZC50LCB6OiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIHN3aXRjaCAocmVwcmVzZW50YXRpdmVfcGllY2UoeikpIHtcbiAgfCBTb21lKChwLCBkKSkgPT5cbiAgICBsZXQgc2VnID0gUGllY2UuZGlzYXNzZW1ibGUocCk7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBMZWZ0ID0+XG4gICAgICBsZXQgcCA9IExpc3RVdGlsLmxhc3Qoc2VnKTtcbiAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1lYXN1cmVkKTtcbiAgICAgIG0ubGFzdDtcbiAgICB8IFJpZ2h0ID0+XG4gICAgICBsZXQgcCA9IExpc3QuaGQoc2VnKTtcbiAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1lYXN1cmVkKTtcbiAgICAgIG0ub3JpZ2luO1xuICAgIH07XG4gIHwgTm9uZSA9PiB7cm93OiAwLCBjb2w6IDB9XG4gIH07XG59O1xubGV0IGNhcmV0X3BvaW50ID0gKG1lYXN1cmVkLCB6OiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIGxldCBNZWFzdXJlZC5Qb2ludC57cm93LCBjb2x9ID0gYmFzZV9wb2ludChtZWFzdXJlZCwgeik7XG4gIHtyb3csIGNvbDogY29sICsgQ2FyZXQub2Zmc2V0KHouY2FyZXQpfTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoejogdCk6IHN0cmluZyA9PiB7XG4gIHNleHBfb2ZfdCh6KSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZyk6IHQgPT4ge1xuICBTZXhwbGliLlNleHAub2Zfc3RyaW5nKGRhdGEpIHw+IHRfb2Zfc2V4cDtcbn07XG5cbmxldCBjYW5fcHV0X2Rvd24gPSB6ID0+XG4gIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gIHwgU29tZShfKSA9PiB6LmNhcmV0ID09IE91dGVyXG4gIHwgTm9uZSA9PiBmYWxzZVxuICB9O1xuXG5sZXQgc2V0X2J1ZmZlciA9ICh6OiB0LCB+bW9kZTogU2VsZWN0aW9uLmJ1ZmZlciwgfmNvbnRlbnQ6IFNlZ21lbnQudCk6IHQgPT4ge1xuICAuLi56LFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbi5ta19idWZmZXIobW9kZSwgY29udGVudCksXG59O1xuXG5sZXQgaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0ID1cbiAgICAoe3JlbGF0aXZlczoge3NpYmxpbmdzOiAoXywgciksIF99LCBffTogdCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHIpIHtcbiAgfCBbU2Vjb25kYXJ5KHMpLCAuLi5fXSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsocykgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIFRyeSB0byBjb21wbGV0ZSB0aGUgc3ludGF4IHRvIGdpdmUgYmV0dGVyIHNlbWFudGljIGZlZWJhY2suXG4gKiBUaGlzIGlzIGEgYmVzdC1lZmZvcnQgYXBwcm9hY2ggZm9jdXNzZWQgb24gYWRkaW5nIG5ldyBkZWZpbml0aW9uc1xuICogYXMgb3Bwb3NlZCB0byByZXN0cnVjdHVyaW5nOyBpdCBkb2VzIG5vdCBjb21wbGV0ZSB0aGUgc3ludGF4IGluXG4gKiBhbGwgY2FzZXMuXG4gKlxuICogTk9URTogU2V0dGluZyB0aGUgY2FyZXQgdG8gb3V0ZXIgd2FzIG5lY2Vzc2FyeSB0byAnZ2V0IGl0IHBhc3QnXG4gKiBzdHJpbmcgbGl0ZXJhbHMsIGkuZS4gb2ZmZXIgbGl2ZSBmZWViYWNrIHdoZW4gdHlwaW5nIGluc2lkZSBhXG4gKiBzdHJpbmc7IG5vdCBzdXJlIGlmIHRoaXMgaXMgYSBoYWNrIG9yIG5vdCwgaXQgbWF5IGJlIGNvbXBlbnNhdGluZ1xuICogZm9yIHRoZSBwdXRfZG93biBsb2dpYyBub3Qgd29ya2luZyByaWdodCB3aXRoIHN0cmluZyBsaXRzLiBUbyB0ZXN0LFxuICogdHJ5IHRvIGxvb2sgYXQgbGl2ZSBldmFsdWF0aW9uIHdoaWxlIHR5cGluZyBpbnNpZGUgYSBzdHJpbmcgbGl0IHdpdGhcbiAqIHN0dWZmIGxlZnQgdG8gZHJvcCBpbiBiYWNrcGFjayB3aXRoIGJlbG93IHNldDogT3V0ZXIgZGlzYWJsZWQuICovXG5sZXQgdHJ5X3RvX2R1bXBfYmFja3BhY2sgPSAoemlwcGVyOiB0KSA9PiB7XG4gIHN3aXRjaCAoemlwcGVyLmJhY2twYWNrKSB7XG4gIHwgW10gPT4gemlwcGVyXG4gIHwgXyA9PlxuICAgIGxldCB6aXBwZXIgPSB7Li4uemlwcGVyLCBjYXJldDogT3V0ZXJ9O1xuICAgIGxldCByZWMgbW92ZV91bnRpbF9jYW50X3B1dF9kb3duID0gKHpfbGFzdCwgejogdCkgPT5cbiAgICAgIGlmIChjYW5fcHV0X2Rvd24oeikgJiYgIWlzX2xpbmVicmVha190b19yaWdodF9vZl9jYXJldCh6KSkge1xuICAgICAgICBzd2l0Y2ggKG1vdmUoUmlnaHQsIHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6XG4gICAgICAgIHwgU29tZSh6X25ldykgPT4gbW92ZV91bnRpbF9jYW50X3B1dF9kb3duKHosIHpfbmV3KVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgel9sYXN0O1xuICAgICAgfTtcbiAgICBsZXQgcmVjIG1vdmVfdW50aWxfY2FuX3B1dF9kb3duID0gKHo6IHQpID0+XG4gICAgICBpZiAoIWNhbl9wdXRfZG93bih6KSkge1xuICAgICAgICBzd2l0Y2ggKG1vdmUoUmlnaHQsIHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6XG4gICAgICAgIHwgU29tZSh6X25ldykgPT4gbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24oel9uZXcpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB6O1xuICAgICAgfTtcbiAgICBsZXQgcmVjIGdvID0gKHo6IHQpOiB0ID0+XG4gICAgICBpZiAoY2FuX3B1dF9kb3duKHopKSB7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6LCB6KTtcbiAgICAgICAgc3dpdGNoIChwdXRfZG93bihSaWdodCwgel9jYW4pKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6X2NhblxuICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICBsZXQgeiA9IHJlZ3JvdXQoUmlnaHQsIHopO1xuICAgICAgICAgIGdvKHopO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHpfY2FuID0gbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24oeik7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6X2Nhbiwgel9jYW4pO1xuICAgICAgICBzd2l0Y2ggKHB1dF9kb3duKFJpZ2h0LCB6X2NhbikpIHtcbiAgICAgICAgfCBOb25lID0+IHpfY2FuXG4gICAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICAgIGxldCB6ID0gcmVncm91dChSaWdodCwgeik7XG4gICAgICAgICAgZ28oeik7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIGdvKHppcHBlcik7XG4gIH07XG59O1xuXG5sZXQgc21hcnRfc2VnID0gKH5kdW1wX2JhY2twYWNrOiBib29sLCB+ZXJhc2VfYnVmZmVyOiBib29sLCB6OiB0KSA9PiB7XG4gIGxldCB6ID0gZXJhc2VfYnVmZmVyID8gY2xlYXJfdW5wYXJzZWRfYnVmZmVyKHopIDogejtcbiAgbGV0IHogPSBkdW1wX2JhY2twYWNrID8gdHJ5X3RvX2R1bXBfYmFja3BhY2soeikgOiB6O1xuICB1bnNlbGVjdF9hbmRfemlwKH5lcmFzZV9idWZmZXIsIHopO1xufTtcblxubGV0IHNlZ19mb3JfdmlldyA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPWZhbHNlLCB+ZHVtcF9iYWNrcGFjaz1mYWxzZSk7XG5sZXQgc2VnX2Zvcl9zZW0gPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj10cnVlLCB+ZHVtcF9iYWNrcGFjaz10cnVlKTtcblxubGV0IHNlZ193aXRob3V0X2J1ZmZlciA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPXRydWUsIH5kdW1wX2JhY2twYWNrPWZhbHNlKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdF8oJ2EpID0gbGlzdCgoVG9rZW4udCwgJ2EpKTtcblxubGV0IGVtcHR5ID0gW107XG5cbmxldCBpc19lbXB0eSA9XG4gIGZ1blxuICB8IFtdID0+IHRydWVcbiAgfCBbXywgLi4uX10gPT4gZmFsc2U7XG5cbmxldCBleHRlbmQgPSAoY3R4LCB4YSkgPT4ge1xuICBbeGEsIC4uLmN0eF07XG59O1xuXG4vLyBUaGUgbmV3IHRoaW5ncyBzaG91bGQgZ28gdG8gdGhlIHJpZ2h0IHdoZW4gY29uY2F0ZW5hdGluZ1xubGV0IGNvbmNhdCA9IChjdHgsIG5ld19jdHgpID0+IG5ld19jdHggQCBjdHg7XG5cbmxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBMaXN0LmFzc29jX29wdCh4LCBjdHgpO1xuXG5sZXQgY29udGFpbnMgPSAoY3R4LCB4KSA9PiBMaXN0Lm1lbV9hc3NvYyh4LCBjdHgpO1xuXG5sZXQgbWFwID0gKGYsIHhzKSA9PiBMaXN0Lm1hcCgoKHgsIF8pIGFzIHhhKSA9PiAoeCwgZih4YSkpLCB4cyk7XG5cbmxldCBmaWx0ZXIgPSBMaXN0LmZpbHRlcjtcblxubGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoO1xuXG5sZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHg7XG5cbmxldCBmaW5kX21hcCA9IExpc3QuZmluZF9tYXA7XG5cbmxldCByZWMgdXBkYXRlID0gKGN0eDogdF8oJ2EpLCBuYW1lOiBzdHJpbmcsIGY6ICdhID0+ICdhKTogdF8oJ2EpID0+XG4gIHN3aXRjaCAoY3R4KSB7XG4gIHwgW10gPT4gW11cbiAgfCBbKGssIHYpLCAuLi5jdHhdID0+XG4gICAgaWYgKG5hbWUgPT0gaykge1xuICAgICAgWyhrLCBmKHYpKSwgLi4uY3R4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgWyhrLCB2KSwgLi4udXBkYXRlKGN0eCwgbmFtZSwgZildO1xuICAgIH1cbiAgfTtcbiIsIm1vZHVsZSBIb2xlUmVhc29uID0ge1xuICAvKiBWYXJpYWJsZTogcmVhc29uICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEZyZWU7XG59O1xuXG4vKiBWYXJpYWJsZTogdmFyX2VyciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb3RJblZhckhvbGVcbiAgfCBJblZhckhvbGUoSG9sZVJlYXNvbi50LCBJZC50KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsO1xuIiwib3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB2YXJpYW50KCdhKSA9XG4gIHwgVmFyaWFudChDb25zdHJ1Y3Rvci50LCBsaXN0KElkLnQpLCBvcHRpb24oJ2EpKVxuICB8IEJhZEVudHJ5KCdhKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0KCdhKSA9IGxpc3QodmFyaWFudCgnYSkpO1xuXG5sZXQgZXF1YWxfY29uc3RydWN0b3IgPVxuICAgIChlcTogKCdhLCAnYSkgPT4gYm9vbCwgeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKHgsIHkpIHtcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBTb21lKHgxKSksIFZhcmlhbnQoY3RyMiwgXywgU29tZSh5MSkpKSA9PlxuICAgIENvbnN0cnVjdG9yLmVxdWFsKGN0cjEsIGN0cjIpICYmIGVxKHgxLCB5MSlcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBOb25lKSwgVmFyaWFudChjdHIyLCBfLCBOb25lKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gIHwgKFZhcmlhbnQoXyksIFZhcmlhbnQoXykpXG4gIHwgKEJhZEVudHJ5KF8pLCBWYXJpYW50KF8pKVxuICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSkgPT4gZmFsc2VcbiAgfTtcblxubGV0IHNhbWVfY29uc3RydWN0b3IgPVxuICAgIChlcTogKCdhLCAnYSkgPT4gYm9vbCwgeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKHgsIHkpIHtcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBfKSwgVmFyaWFudChjdHIyLCBfLCBfKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gIHwgKEJhZEVudHJ5KF8pLCBWYXJpYW50KF8pKVxuICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSkgPT4gZmFsc2VcbiAgfTtcblxubGV0IGhhc19iYWRfZW50cnkgPSAoeDogdCgnYSkpOiBib29sID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgQmFkRW50cnkoXykgPT4gdHJ1ZVxuICAgIHwgVmFyaWFudChfKSA9PiBmYWxzZSxcbiAgICB4LFxuICApO1xuXG5sZXQgaGFzX2dvb2RfZW50cnkgPSAoeDogdCgnYSkpOiBib29sID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgQmFkRW50cnkoXykgPT4gZmFsc2VcbiAgICB8IFZhcmlhbnQoXykgPT4gdHJ1ZSxcbiAgICB4LFxuICApO1xuXG5sZXQgZnJlZV92YXJpYWJsZXMgPSAoZiwgbSkgPT5cbiAgbVxuICB8PiBMaXN0Lm1hcChcbiAgICAgICBmdW5cbiAgICAgICB8IFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZSkpID0+IGYodmFsdWUpXG4gICAgICAgfCBfID0+IFtdLFxuICAgICApXG4gIHw+IExpc3QuZmxhdHRlbjtcblxubGV0IGlzX2dyb3VuZCA9IGlzX2hvbGUgPT5cbiAgZnVuXG4gIHwgW0JhZEVudHJ5KHgpXSB3aGVuIGlzX2hvbGUoeCkgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbi8qIGNvbXB1dGVzIGFsbCB0aHJlZSByZWdpb25zIG9mIGEgdmVubiBkaWFncmFtIG9mIHR3byBzZXRzIHJlcHJlc2VudGVkIGFzIGxpc3RzICovXG5sZXQgdmVubl9yZWdpb25zID1cbiAgICAoZjogKCdhLCAnYSkgPT4gYm9vbCwgeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYSkpXG4gICAgOiAobGlzdCgoJ2EsICdhKSksIGxpc3QoJ2EpLCBsaXN0KCdhKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHhzLCB5cywgYWNjLCBsZWZ0LCByaWdodCkgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiAoYWNjIHw+IExpc3QucmV2LCBsZWZ0IHw+IExpc3QucmV2LCBMaXN0LnJldl9hcHBlbmQocmlnaHQsIHlzKSlcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoTGlzdC5wYXJ0aXRpb24oZih4LCBfKSwgeXMpKSB7XG4gICAgICB8IChbXSwgXykgPT4gZ28oeHMsIHlzLCBhY2MsIFt4LCAuLi5sZWZ0XSwgcmlnaHQpXG4gICAgICB8IChbeV0sIHlzJykgPT4gZ28oeHMsIHlzJywgWyh4LCB5KSwgLi4uYWNjXSwgbGVmdCwgcmlnaHQpXG4gICAgICB8IF8gPT4gZmFpbHdpdGgoXCJTdW0gdHlwZSBoYXMgbm9uLXVuaXF1ZSBjb25zdHJ1Y3RvcnNcIilcbiAgICAgIH1cbiAgICB9O1xuICBnbyh4cywgeXMsIFtdLCBbXSwgW10pO1xufTtcblxubGV0IGpvaW5fZW50cnkgPVxuICAgIChqb2luOiAoJ2EsICdhKSA9PiBvcHRpb24oJ2EpLCAoeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKSlcbiAgICA6IG9wdGlvbih2YXJpYW50KCdhKSkgPT5cbiAgc3dpdGNoICh4LCB5KSB7XG4gIHwgKFZhcmlhbnQoY3RyMSwgaWRzMSwgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChjdHIyLCBfLCBTb21lKHZhbHVlMikpKVxuICAgICAgd2hlbiBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKSA9PlxuICAgIGxldCsgdmFsdWUgPSBqb2luKHZhbHVlMSwgdmFsdWUyKTtcbiAgICBWYXJpYW50KGN0cjEsIGlkczEsIFNvbWUodmFsdWUpKTtcbiAgfCAoVmFyaWFudChjdHIxLCBpZHMxLCBOb25lKSwgVmFyaWFudChjdHIyLCBfLCBOb25lKSlcbiAgICAgIHdoZW4gQ29uc3RydWN0b3IuZXF1YWwoY3RyMSwgY3RyMikgPT5cbiAgICBTb21lKFZhcmlhbnQoY3RyMSwgaWRzMSwgTm9uZSkpXG4gIHwgKEJhZEVudHJ5KHgpLCBCYWRFbnRyeSh5KSkgPT5cbiAgICBsZXQrIHZhbHVlID0gam9pbih4LCB5KTtcbiAgICBCYWRFbnRyeSh2YWx1ZSk7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCBqb2luID1cbiAgICAoXG4gICAgICBlcTogKCdhLCAnYSkgPT4gYm9vbCxcbiAgICAgIGpvaW46ICgnYSwgJ2EpID0+IG9wdGlvbignYSksXG4gICAgICBtMTogdCgnYSksXG4gICAgICBtMjogdCgnYSksXG4gICAgKVxuICAgIDogb3B0aW9uKHQoJ2EpKSA9PiB7XG4gIGxldCAoaW50ZXIsIGxlZnQsIHJpZ2h0KSA9IHZlbm5fcmVnaW9ucyhzYW1lX2NvbnN0cnVjdG9yKGVxKSwgbTEsIG0yKTtcbiAgbGV0IGpvaW5fZW50cmllcyA9IExpc3QuZmlsdGVyX21hcChqb2luX2VudHJ5KGpvaW4pLCBpbnRlcik7XG4gIGlmIChMaXN0Lmxlbmd0aChqb2luX2VudHJpZXMpID09IExpc3QubGVuZ3RoKGludGVyKSkge1xuICAgIHN3aXRjaCAoXG4gICAgICBoYXNfZ29vZF9lbnRyeShsZWZ0KSxcbiAgICAgIGhhc19iYWRfZW50cnkobTEpLFxuICAgICAgaGFzX2dvb2RfZW50cnkocmlnaHQpLFxuICAgICAgaGFzX2JhZF9lbnRyeShtMiksXG4gICAgKSB7XG4gICAgfCAoXywgdHJ1ZSwgXywgdHJ1ZSkgPT4gU29tZShqb2luX2VudHJpZXMgQCBsZWZ0IEAgcmlnaHQpXG4gICAgfCAoZmFsc2UsIHRydWUsIF8sIF8pID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgcmlnaHQpXG4gICAgfCAoXywgXywgZmFsc2UsIHRydWUpID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgbGVmdClcbiAgICB8IF8gd2hlbiBsZWZ0ID09IFtdICYmIHJpZ2h0ID09IFtdID0+IFNvbWUoam9pbl9lbnRyaWVzKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xufTtcblxubGV0IG1hdGNoX3N5bnN3aXRjaCA9XG4gICAgKG1hdGNoX3N5bnN3aXRjaDogKCdhLCAnYSkgPT4gJ2EsIG0xOiB0KCdhKSwgbTI6IHQoJ2EpKTogdCgnYSkgPT4ge1xuICBMaXN0Lm1hcChcbiAgICBmdW5cbiAgICB8IChWYXJpYW50KGN0ciwgaWRzLCBTb21lKHZhbHVlMSkpLCBWYXJpYW50KF8sIF8sIFNvbWUodmFsdWUyKSkpID0+XG4gICAgICBWYXJpYW50KGN0ciwgaWRzLCBTb21lKG1hdGNoX3N5bnN3aXRjaCh2YWx1ZTEsIHZhbHVlMikpKVxuICAgIHwgKHYsIF8pID0+IHYsXG4gICAgTGlzdC5jb21iaW5lKG0xLCBtMiksXG4gICk7XG59O1xuXG5sZXQgZXF1YWwgPSAoZXE6ICgnYSwgJ2EpID0+IGJvb2wsIG0xOiB0KCdhKSwgbTI6IHQoJ2EpKSA9PiB7XG4gIHN3aXRjaCAodmVubl9yZWdpb25zKHNhbWVfY29uc3RydWN0b3IoZXEpLCBtMSwgbTIpKSB7XG4gIHwgKGludGVyLCBbXSwgW10pID0+XG4gICAgTGlzdC5mb3JfYWxsKFxuICAgICAgKCh4LCB5KSkgPT5cbiAgICAgICAgc3dpdGNoICh4LCB5KSB7XG4gICAgICAgIHwgKFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChfLCBfLCBTb21lKHZhbHVlMikpKSA9PlxuICAgICAgICAgIGVxKHZhbHVlMSwgdmFsdWUyKVxuICAgICAgICB8IChWYXJpYW50KF8sIF8sIE5vbmUpLCBWYXJpYW50KF8sIF8sIE5vbmUpKSA9PiB0cnVlXG4gICAgICAgIHwgKEJhZEVudHJ5KHgpLCBCYWRFbnRyeSh5KSkgPT4gZXEoeCwgeSlcbiAgICAgICAgfCBfID0+IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICBpbnRlcixcbiAgICApXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxubGV0IG1hcCA9IChmOiBvcHRpb24oJ2EpID0+IG9wdGlvbignYiksIG06IHQoJ2EpKTogdCgnYikgPT4ge1xuICBMaXN0Lm1hcChcbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoY3RyLCBhcmdzLCB2YWx1ZSkgPT4gVmFyaWFudChjdHIsIGFyZ3MsIGYodmFsdWUpKVxuICAgIHwgQmFkRW50cnkodmFsdWUpID0+IEJhZEVudHJ5KHZhbHVlKSxcbiAgICBtLFxuICApO1xufTtcblxubGV0IGdldF9lbnRyeSA9IChjdHIsIG0pID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0cicsIF8sIHZhbHVlKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykgPT4gdmFsdWVcbiAgICB8IFZhcmlhbnQoXylcbiAgICB8IEJhZEVudHJ5KF8pID0+IE5vbmUsXG4gICAgbSxcbiAgKTtcblxubGV0IGhhc19jb25zdHJ1Y3Rvcl9ub19hcmdzID0gY3RyID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgVmFyaWFudChjdHInLCBfLCBOb25lKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykgPT4gdHJ1ZVxuICAgIHwgVmFyaWFudChfKSA9PiBmYWxzZVxuICAgIHwgQmFkRW50cnkoXykgPT4gZmFsc2UsXG4gICk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgU3RlcFxuICB8IEV2YWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY291bnQgPVxuICB8IE9uZVxuICB8IEFsbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKGFjdGlvbiwgY291bnQpO1xuXG5sZXQgc3RyaW5nX29mX3QgPSB2ID0+IHtcbiAgc3dpdGNoICh2KSB7XG4gIHwgKFN0ZXAsIE9uZSkgPT4gXCJwYXVzZVwiXG4gIHwgKFN0ZXAsIEFsbCkgPT4gXCJkZWJ1Z1wiXG4gIHwgKEV2YWwsIE9uZSkgPT4gXCJoaWRlXCJcbiAgfCAoRXZhbCwgQWxsKSA9PiBcImV2YWxcIlxuICB9O1xufTtcbiIsImluY2x1ZGUgU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSkgPSB7XG4gIFtAc2hvdy5vcGFxdWVdXG4gIGlkczogbGlzdChJZC50KSxcbiAgLyogVUV4cCBpbnZhcmlhbnQ6IGNvcGllZCBzaG91bGQgYWx3YXlzIGJlIGZhbHNlLCBhbmQgdGhlIGlkIHNob3VsZCBiZSB1bmlxdWVcbiAgICAgREhFeHAgaW52YXJpYW50OiBpZiBjb3BpZWQgaXMgdHJ1ZSwgdGhlbiB0aGlzIHRlcm0gYW5kIGl0cyBjaGlsZHJlbiBtYXkgbm90XG4gICAgIGhhdmUgdW5pcXVlIGlkcy4gKi9cbiAgW0BzaG93Lm9wYXF1ZV1cbiAgY29waWVkOiBib29sLFxuICB0ZXJtOiAnYSxcbn07XG5cbmxldCBmcmVzaCA9IHRlcm0gPT4ge1xuICB7aWRzOiBbSWQubWsoKV0sIGNvcGllZDogZmFsc2UsIHRlcm19O1xufTtcblxubGV0IHRlcm1fb2YgPSB4ID0+IHgudGVybTtcbmxldCB1bndyYXAgPSB4ID0+ICh4LnRlcm0sIHRlcm0nID0+IHsuLi54LCB0ZXJtOiB0ZXJtJ30pO1xubGV0IHJlcF9pZCA9ICh7aWRzLCBffSkgPT4gTGlzdC5oZChpZHMpO1xubGV0IGZhc3RfY29weSA9IChpZCwge3Rlcm0sIF99KSA9PiB7aWRzOiBbaWRdLCB0ZXJtLCBjb3BpZWQ6IHRydWV9O1xubGV0IG5ld19pZHMgPVxuICBmdW5cbiAgfCB7aWRzOiBfLCB0ZXJtLCBjb3BpZWR9ID0+IHtpZHM6IFtJZC5taygpXSwgdGVybSwgY29waWVkfTtcblxuLy8gbGV0IHNlcmlhbGl6YXRpb24gPSAoZjEsIGYyKSA9PlxuLy8gICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2hlcmUoXG4vLyAgICAgcmVwX2lkLFxuLy8gICAgIHNleHBfb2ZfdChmMSksXG4vLyAgICAgdF9vZl9zZXhwKGYyKSxcbi8vICAgKTtcblxuLy8gbGV0IHNleHBfb2ZfdCA9IGYxID0+IHNlcmlhbGl6YXRpb24oZjEsIE9iai5tYWdpYygpKSB8PiBmc3Q7XG4vLyBsZXQgdF9vZl9zZXhwID0gZjIgPT4gc2VyaWFsaXphdGlvbihPYmoubWFnaWMoKSwgZjIpIHw+IHNuZDtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSW52YWxpZE9mU3RyaW5nXG4gIHwgSW5kZXhPdXRPZkJvdW5kc1xuICB8IERpdmlkZUJ5WmVyb1xuICB8IE5lZ2F0aXZlRXhwb25lbnRcbiAgfCBPdXRPZkZ1ZWw7XG5cbmxldCBlcnJfbXNnID0gKGVycjogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGVycikge1xuICB8IEludmFsaWRPZlN0cmluZyA9PiBcIkVycm9yOiBJbnZhbGlkIFN0cmluZyBDb252ZXJzaW9uXCJcbiAgfCBJbmRleE91dE9mQm91bmRzID0+IFwiRXJyb3I6IEluZGV4IE91dCBvZiBCb3VuZHNcIlxuICB8IERpdmlkZUJ5WmVybyA9PiBcIkVycm9yOiBEaXZpZGUgYnkgWmVyb1wiXG4gIHwgTmVnYXRpdmVFeHBvbmVudCA9PiBcIkVycm9yOiBOZWdhdGl2ZSBFeHBvbmVudCBpbiBJbnRlZ2VyIEV4cG9uZW50aWF0aW9uIChDb25zaWRlciB1c2luZyAqKi4pXCJcbiAgfCBPdXRPZkZ1ZWwgPT4gXCJFcnJvcjogT3V0IG9mIEZ1ZWxcIlxuICB9O1xuIiwiLypcbiAgICAgVGhpcyBtb2R1bGUgYWRkcyBoZWxwZXJzIGZvciBjcmVhdGluZyBzLWV4cHJlc3Npb25zIHRoYXQgdXNlIHNvbWUgc3RydWN0dXJhbCBzaGFyaW5nXG4gICAgIChodHRwczovL3d3dy5vY2FtbHdpa2kuY29tL3dpa2kvU3RydWN0dXJhbF9zaGFyaW5nKSBpbnN0ZWFkIG9mIGNvcHlpbmcgYWxsIGluc3RhbmNlc1xuICAgICBvZiB0aGUgc2FtZSByZWNvcmQuXG4gKi9cblxubGV0IHN0cnVjdHVyZV9zaGFyZV9tYXA6IHJlZihvcHRpb24oSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKSkgPSByZWYoTm9uZSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgc3RydWN0dXJlX3NoYXJlZCA9IChTZXhwbGliLlNleHAudCwgSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKTtcblxuLy8gVG8gYmUgdXNlZCBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2hlcmUgdGhlIHN0cnVjdHVyZSBzaGFyaW5nIHRha2VzIHBsYWNlXG5sZXQgc3RydWN0dXJlX3NoYXJlX2hlcmUgPVxuICAgIChcbiAgICAgIGtleV9mOiAnYSA9PiBJZC50LFxuICAgICAgc2V4cF9vZl90OiAnYSA9PiBTZXhwbGliLlNleHAudCxcbiAgICAgIHRfb2Zfc2V4cDogU2V4cGxpYi5TZXhwLnQgPT4gJ2EsXG4gICAgKVxuICAgIDogKCdhID0+IFNleHBsaWIuU2V4cC50LCBTZXhwbGliLlNleHAudCA9PiAnYSkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IHNleHAgPSBzZXhwX29mX3QodGhpbmcpO1xuICAgICAgbGV0IGtleSA9IGtleV9mKHRoaW5nKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShJZC5NYXAudXBkYXRlKGtleSwgXyA9PiBTb21lKHNleHApLCBtKSk7XG4gICAgICBJZC5zZXhwX29mX3Qoa2V5KTtcbiAgICB8IE5vbmUgPT4gc2V4cF9vZl90KHRoaW5nKVxuICAgIH07XG4gIH07XG4gIGxldCB0X29mX3NleHAnID0gc2V4cCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IGlkID0gSWQudF9vZl9zZXhwKHNleHApO1xuICAgICAgbGV0IHRoaW5nX3MgPVxuICAgICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbSkpIHtcbiAgICAgICAgfCBTb21lKHQpID0+IHRcbiAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoKFwic3RydWN0dXJlLXNoYXJpbmcgZGVzZXJpYWxpemF0aW9uIGZhaWxlZFwiKVxuICAgICAgICB9O1xuICAgICAgdF9vZl9zZXhwKHRoaW5nX3MpO1xuICAgIHwgTm9uZSA9PiB0X29mX3NleHAoc2V4cClcbiAgICB9O1xuICB9O1xuICAoc2V4cF9vZl90JywgdF9vZl9zZXhwJyk7XG59O1xuXG4vLyBUbyBiZSB1c2VkIG9uIHRoZSByb290IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBjdXJyZW50bHkgYmVpbmcgc2VyaWFsaXplZFxubGV0IHN0cnVjdHVyZV9zaGFyZV9pbiA9IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgTm9uZSA9PlxuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBTb21lKElkLk1hcC5lbXB0eSk7XG4gICAgICBsZXQgc2V4cCA9IHNleHBfb2ZfdCh0aGluZyk7XG4gICAgICBsZXQgcmVzdWx0OiBzdHJ1Y3R1cmVfc2hhcmVkID0gKFxuICAgICAgICBzZXhwLFxuICAgICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwXiB8PiBPcHRpb24uZ2V0LFxuICAgICAgKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gTm9uZTtcbiAgICAgIHNleHBfb2Zfc3RydWN0dXJlX3NoYXJlZChyZXN1bHQpO1xuICAgIHwgU29tZShfKSA9PiBzZXhwX29mX3QodGhpbmcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUbyBiZSB1c2VkIG9ubHkgb24gdGhlIHJvb3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJlIGN1cnJlbnRseSBiZWluZyBzZXJpYWxpemVkXG4gIGxldCB0X29mX3NleHAnID0gKHNleHA6IFNleHBsaWIuU2V4cC50KTogJ2EgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCAoc2V4cCwgbWFwKSA9IHN0cnVjdHVyZV9zaGFyZWRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShtYXApO1xuICAgICAgbGV0IHRoaW5nID0gdF9vZl9zZXhwKHNleHApO1xuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBOb25lO1xuICAgICAgdGhpbmc7XG4gICAgfCBTb21lKF8pID0+IHRfb2Zfc2V4cChzZXhwKVxuICAgIH07XG4gIH07XG4gIChzZXhwX29mX3QnLCB0X29mX3NleHAnKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbmxldCBlcSA9IFN0cmluZy5lcXVhbDtcblxubGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGg7XG5cbmxldCB2YWxpZF9yZWdleCA9XG4gIFJlLlN0ci5yZWdleHAoXCJeXFxcXChbYS16QS1aXVxcXFx8X1tfYS16QS1aMC05XVxcXFwpW19hLXpBLVowLTknXSokXCIpO1xubGV0IGlzX3ZhbGlkID0gcyA9PiBSZS5TdHIuc3RyaW5nX21hdGNoKHZhbGlkX3JlZ2V4LCBzLCAwKTtcblxuLyogaGVscGVyIGZ1bmN0aW9uIGZvciBndWFyZGluZyBvcHRpb25zIHdpdGggaXNfdmFsaWQgKi9cbmxldCBjaGVja192YWxpZCA9IChzLCByZXN1bHQpID0+XG4gIGlmIChpc192YWxpZChzKSkge1xuICAgIHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xuXG5sZXQgaXNfdHJ1ZSA9IGVxKFwidHJ1ZVwiKTtcblxubGV0IGlzX2ZhbHNlID0gZXEoXCJmYWxzZVwiKTtcblxubGV0IGlzX2xldCA9IGVxKFwibGV0XCIpO1xuXG5sZXQgaXNfZnVuID0gZXEoXCJmdW5cIik7XG5cbmxldCBpc19jYXNlID0gZXEoXCJjYXNlXCIpO1xuXG5sZXQgaXNfd2lsZCA9IGVxKFwiX1wiKTtcblxubGV0IHNwbGl0ID0gKHBvcywgbmFtZSkgPT4ge1xuICBsZXQgbGVmdF92YXIgPSBTdHJpbmcuc3ViKG5hbWUsIDAsIHBvcyk7XG4gIGxldCByaWdodF92YXIgPSBTdHJpbmcuc3ViKG5hbWUsIHBvcywgU3RyaW5nLmxlbmd0aChuYW1lKSAtIHBvcyk7XG4gIChsZWZ0X3ZhciwgcmlnaHRfdmFyKTtcbn07XG5cbi8qIFVzZWQgZm9yIFZhckJzdE1hcCAqL1xubGV0IGNvbXBhcmUgPSAoeDogdCwgeTogdCkgPT4gY29tcGFyZSh4LCB5KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcblxubW9kdWxlIElubmVyID0ge1xuICBpbmNsdWRlIE1hcC5NYWtlKFZhcik7XG5cbiAgLyogU2VlIEludE1hcCAqL1xuICBbQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxuICB0eXBlIGJpbmRpbmcoJ3YpID0gKFZhci50LCAndik7XG5cbiAgbGV0IHBwID0gKHBwX3YsIGYsIG1hcCkgPT5cbiAgICBpdGVyKChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVzIC0+ICVhQFxcblwiLCBrLCBwcF92LCB2KSwgbWFwKTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwOiBTZXhwLnQgPT4gJ3YsIHNleHA6IFNleHAudCk6IHQoJ3YpID0+XG4gICAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxuICBsZXQgeW9qc29uX29mX3QgPVxuICAgICAgKHlvanNvbl9vZl92OiAndiA9PiBZb2pzb24uU2FmZS50LCBtYXA6IHQoJ3YpKTogWW9qc29uLlNhZmUudCA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPVxuICAgICAgKHZfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+ICd2LCB5b2pzb246IFlvanNvbi5TYWZlLnQpOiB0KCd2KSA9PlxuICAgIHlvanNvblxuICAgIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IG9mX3NlcTtcbn07XG5cbm1vZHVsZSBWYXJCc3RNYXAwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdF8oJ2EpID0gSW5uZXIudCgnYSk7XG5cbiAgbGV0IGVtcHR5ID0gSW5uZXIuZW1wdHk7XG5cbiAgbGV0IGlzX2VtcHR5ID0gSW5uZXIuaXNfZW1wdHk7XG5cbiAgbGV0IHNpbmdsZXRvbiA9ICgoeCwgYSkpID0+IElubmVyLnNpbmdsZXRvbih4LCBhKTtcblxuICBsZXQgZXh0ZW5kID0gKGN0eCwgKHgsIGEpKSA9PiBJbm5lci5hZGQoeCwgYSwgY3R4KTtcblxuICBsZXQgdXBkYXRlID0gKGN0eCwgZiwgeCkgPT4gSW5uZXIudXBkYXRlKHgsIGYsIGN0eCk7XG5cbiAgbGV0IHVuaW9uID0gKGN0eDEsIGN0eDIpID0+XG4gICAgSW5uZXIudW5pb24oKF94LCBhLCBfYScpID0+IFNvbWUoYSksIGN0eDEsIGN0eDIpO1xuXG4gIGxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBJbm5lci5maW5kX29wdCh4LCBjdHgpO1xuXG4gIGxldCBjb250YWlucyA9IChjdHgsIHgpID0+IElubmVyLm1lbSh4LCBjdHgpO1xuXG4gIGxldCBtYXAgPSBmID0+IElubmVyLm1hcGkoKHgsIGEpID0+IGYoKHgsIGEpKSk7XG5cbiAgbGV0IGZpbHRlciA9IGYgPT4gSW5uZXIuZmlsdGVyKCh4LCBhKSA9PiBmKCh4LCBhKSkpO1xuXG4gIGxldCBmb2xkID0gKGYsIGluaXQsIGN0eCkgPT5cbiAgICBJbm5lci5mb2xkKCh4LCBhLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBjdHgsIGluaXQpO1xuXG4gIGxldCBsZW5ndGggPSBJbm5lci5jYXJkaW5hbDtcblxuICBsZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHggfD4gSW5uZXIudG9fc2VxIHw+IExpc3Qub2Zfc2VxO1xuXG4gIGxldCBvZl9saXN0ID0gYmluZGluZ3MgPT4gYmluZGluZ3MgfD4gTGlzdC50b19zZXEgfD4gSW5uZXIub2Zfc2VxO1xufTtcblxubW9kdWxlIE9yZGVyZWQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0XygnYSkgPSB7XG4gICAgbWFwOiBWYXJCc3RNYXAwLnRfKCdhKSxcbiAgICAvKiogVGhlIHJldmVyc2UgaW5zZXJ0aW9uIG9yZGVyIG9mIGJpbmRpbmdzIChkZW5vdGVkIGJ5IGtleSkuICovXG4gICAgcmV2X29yZGVyOiBsaXN0KChWYXIudCwgdW5pdCkpLFxuICB9O1xuXG4gIGxldCBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50ID0gKCkgPT5cbiAgICBmYWlsd2l0aChcIlZhckJzdE1hcC5PcmRlcmVkOiBvcmRlciBrZXkgbm90IGluIG1hcFwiKTtcblxuICBsZXQgZW1wdHkgPSB7bWFwOiBWYXJCc3RNYXAwLmVtcHR5LCByZXZfb3JkZXI6IFtdfTtcblxuICBsZXQgaXNfZW1wdHkgPSAoe21hcCwgX30pID0+IFZhckJzdE1hcDAuaXNfZW1wdHkobWFwKTtcblxuICBsZXQgc2luZ2xldG9uID0gKCh4LCBhKSkgPT4ge1xuICAgIHttYXA6IFZhckJzdE1hcDAuc2luZ2xldG9uKCh4LCBhKSksIHJldl9vcmRlcjogWyh4LCAoKSldfTtcbiAgfTtcblxuICBsZXQgZXh0ZW5kID0gKHttYXAsIHJldl9vcmRlcn0sICh4LCBhKSkgPT4ge1xuICAgIG1hcDogVmFyQnN0TWFwMC5leHRlbmQobWFwLCAoeCwgYSkpLFxuICAgIHJldl9vcmRlcjogWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIHJldl9vcmRlcildLFxuICB9O1xuXG4gIGxldCB1bmlvbiA9XG4gICAgICAoXG4gICAgICAgIHttYXA6IG1hcDEsIHJldl9vcmRlcjogcmV2X29yZGVyMX0sXG4gICAgICAgIHttYXA6IG1hcDIsIHJldl9vcmRlcjogcmV2X29yZGVyMn0sXG4gICAgICApID0+IHtcbiAgICBsZXQgcmVjIHVuaW9uX29yZGVyID0gKG9yZGVyMSwgcmV2X29yZGVyMikgPT5cbiAgICAgIHN3aXRjaCAob3JkZXIxLCByZXZfb3JkZXIyKSB7XG4gICAgICB8IChbXSwgb3JkZXIyKSA9PiBvcmRlcjJcbiAgICAgIHwgKFsoeCwgKCkpLCAuLi5yZXZfb3JkZXIxJ10sIG9yZGVyMikgPT5cbiAgICAgICAgbGV0IHJldl9vcmRlcjInID0gWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIG9yZGVyMildO1xuICAgICAgICB1bmlvbl9vcmRlcihyZXZfb3JkZXIxJywgcmV2X29yZGVyMicpO1xuICAgICAgfTtcblxuICAgIGxldCBtYXAgPSBWYXJCc3RNYXAwLnVuaW9uKG1hcDEsIG1hcDIpO1xuICAgIGxldCByZXZfb3JkZXIgPSB1bmlvbl9vcmRlcihMaXN0LnJldihyZXZfb3JkZXIxKSwgcmV2X29yZGVyMik7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgbG9va3VwID0gKHttYXAsIF99LCB4KSA9PiBWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpO1xuXG4gIGxldCBjb250YWlucyA9ICh7bWFwLCBffSwgeCkgPT4gVmFyQnN0TWFwMC5jb250YWlucyhtYXAsIHgpO1xuXG4gIGxldCBtYXBrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gbWFwIHw+IFZhckJzdE1hcDAubWFwKGYpO1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IG1hcG8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCBtYXAgPVxuICAgICAgcmV2X29yZGVyXG4gICAgICB8PiBMaXN0LnJldlxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAnLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgICAgIHwgU29tZShhKSA9PlxuICAgICAgICAgICAgICAgbGV0IGEgPSBmKCh4LCBhKSk7XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLmV4dGVuZChtYXAnLCAoeCwgYSkpO1xuICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBWYXJCc3RNYXAwLmVtcHR5LFxuICAgICAgICAgKTtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBmaWx0ZXJrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gVmFyQnN0TWFwMC5maWx0ZXIoZiwgbWFwKTtcbiAgICBsZXQgcmV2X29yZGVyID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoeCwgXykpID0+IFZhckJzdE1hcDAuY29udGFpbnMobWFwLCB4KSlcbiAgICAgIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZpbHRlcm8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCAobWFwLCByZXZfb3JkZXIpID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoKG1hcCcsIHJldl9vcmRlcicpLCAoeCwgKCkpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHJldl9vcmRlcicgPSByZWYocmV2X29yZGVyJyk7XG4gICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLnVwZGF0ZShcbiAgICAgICAgICAgICAgICAgbWFwJyxcbiAgICAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgICAgIHwgU29tZShhKSB3aGVuICFmKCh4LCBhKSkgPT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFNvbWUoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgcmV2X29yZGVyJyA6PSBbKHgsICgpKSwgLi4ucmV2X29yZGVyJ15dO1xuICAgICAgICAgICAgICAgICAgICAgU29tZShhKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KCksXG4gICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIChtYXAsIHJldl9vcmRlcideKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgKG1hcCwgW10pLFxuICAgICAgICAgKTtcblxuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZvbGRrID0gKGYsIGluaXQsIHttYXAsIF99KSA9PlxuICAgIFZhckJzdE1hcDAuZm9sZCgoKHgsIGEpLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBpbml0LCBtYXApO1xuXG4gIGxldCBmb2xkbyA9IChmLCBpbml0LCB7bWFwLCByZXZfb3JkZXJ9KSA9PlxuICAgIHJldl9vcmRlclxuICAgIHw+IExpc3QucmV2XG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICBzd2l0Y2ggKFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCkpIHtcbiAgICAgICAgICAgfCBTb21lKGEpID0+IGYoKHgsIGEpLCBhY2MpXG4gICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgfSxcbiAgICAgICAgIGluaXQsXG4gICAgICAgKTtcblxuICBsZXQgbGVuZ3RoID0gKHtyZXZfb3JkZXIsIF99KSA9PiBMaXN0Lmxlbmd0aChyZXZfb3JkZXIpO1xuXG4gIGxldCB0b19saXN0ayA9ICh7bWFwLCBffSkgPT4gVmFyQnN0TWFwMC50b19saXN0KG1hcCk7XG5cbiAgbGV0IHRvX2xpc3RvID0gKHttYXAsIHJldl9vcmRlcn0pID0+XG4gICAgcmV2X29yZGVyXG4gICAgfD4gTGlzdC5yZXZcbiAgICB8PiBMaXN0Lm1hcCgoKHgsICgpKSkgPT5cbiAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgfCBTb21lKGEpID0+ICh4LCBhKVxuICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKVxuICAgICAgICAgfVxuICAgICAgICk7XG5cbiAgbGV0IG9mX2xpc3QgPSBiaW5kaW5ncyA9PiB7XG4gICAgbGV0IG1hcCA9IFZhckJzdE1hcDAub2ZfbGlzdChiaW5kaW5ncyk7XG4gICAgbGV0IHJldl9vcmRlciA9IGJpbmRpbmdzIHw+IExpc3QubWFwKCgoeCwgXykpID0+ICh4LCAoKSkpIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IChrZXlzLCBtKSA9PiB7XG4gICAgZmlsdGVyaygoKHMsIF8pKSA9PiAhTGlzdC5leGlzdHMoeCA9PiB4ID09IHMsIGtleXMpLCBtKTtcbiAgfTtcbn07XG5cbmluY2x1ZGUgVmFyQnN0TWFwMDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbmxldCBjb250aW51ZSA9IHggPT4geDtcbmxldCBzdG9wID0gKF8sIHgpID0+IHg7XG5cbi8qIFRPRE9bTWF0dF06IEV4cGxhaW4gbWFwX3Rlcm0gKi9cblxubW9kdWxlIHJlYyBBbnk6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKEV4cC50KVxuICAgIHwgUGF0KFBhdC50KVxuICAgIHwgVHlwKFR5cC50KVxuICAgIHwgVFBhdChUUGF0LnQpXG4gICAgfCBSdWwoUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgbWFwX3Rlcm06XG4gICAgKFxuICAgICAgfmZfZXhwOiAoRXhwLnQgPT4gRXhwLnQsIEV4cC50KSA9PiBFeHAudD0/LFxuICAgICAgfmZfcGF0OiAoUGF0LnQgPT4gUGF0LnQsIFBhdC50KSA9PiBQYXQudD0/LFxuICAgICAgfmZfdHlwOiAoVHlwLnQgPT4gVHlwLnQsIFR5cC50KSA9PiBUeXAudD0/LFxuICAgICAgfmZfdHBhdDogKFRQYXQudCA9PiBUUGF0LnQsIFRQYXQudCkgPT4gVFBhdC50PT8sXG4gICAgICB+Zl9ydWw6IChSdWwudCA9PiBSdWwudCwgUnVsLnQpID0+IFJ1bC50PT8sXG4gICAgICB+Zl9hbnk6IChBbnkudCA9PiBBbnkudCwgQW55LnQpID0+IEFueS50PT8sXG4gICAgICB0XG4gICAgKSA9PlxuICAgIHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKEV4cC50KVxuICAgIHwgUGF0KFBhdC50KVxuICAgIHwgVHlwKFR5cC50KVxuICAgIHwgVFBhdChUUGF0LnQpXG4gICAgfCBSdWwoUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgbWFwX3Rlcm0gPVxuICAgICAgKFxuICAgICAgICB+Zl9leHA9Y29udGludWUsXG4gICAgICAgIH5mX3BhdD1jb250aW51ZSxcbiAgICAgICAgfmZfdHlwPWNvbnRpbnVlLFxuICAgICAgICB+Zl90cGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl9ydWw9Y29udGludWUsXG4gICAgICAgIH5mX2FueT1jb250aW51ZSxcbiAgICAgICAgeCxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWNfY2FsbCA9IHkgPT5cbiAgICAgIHN3aXRjaCAoeSkge1xuICAgICAgfCBFeHAoeCkgPT5cbiAgICAgICAgRXhwKEV4cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCkpXG4gICAgICB8IFBhdCh4KSA9PlxuICAgICAgICBQYXQoUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55LCB4KSlcbiAgICAgIHwgVHlwKHgpID0+XG4gICAgICAgIFR5cChUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBUUGF0KHgpID0+XG4gICAgICAgIFRQYXQoXG4gICAgICAgICAgVFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCksXG4gICAgICAgIClcbiAgICAgIHwgUnVsKHgpID0+XG4gICAgICAgIFJ1bChSdWwubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBOdWwgKCkgPT4gTnVsKClcbiAgICAgIHwgQW55ICgpID0+IEFueSgpXG4gICAgICB9O1xuICAgIHggfD4gZl9hbnkocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCBmYXN0X2VxdWFsID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoRXhwKHgpLCBFeHAoeSkpID0+IEV4cC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoUGF0KHgpLCBQYXQoeSkpID0+IFBhdC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoVHlwKHgpLCBUeXAoeSkpID0+IFR5cC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoVFBhdCh4KSwgVFBhdCh5KSkgPT4gVFBhdC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoUnVsKHgpLCBSdWwoeSkpID0+IFJ1bC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoTnVsICgpLCBOdWwgKCkpID0+IHRydWVcbiAgICB8IChBbnkgKCksIEFueSAoKSkgPT4gdHJ1ZVxuICAgIHwgKEV4cChfKSwgXylcbiAgICB8IChQYXQoXyksIF8pXG4gICAgfCAoVHlwKF8pLCBfKVxuICAgIHwgKFRQYXQoXyksIF8pXG4gICAgfCAoUnVsKF8pLCBfKVxuICAgIHwgKE51bCAoKSwgXylcbiAgICB8IChBbnkgKCksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBFeHA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGRlZmVycmFsX3Bvc2l0aW9uID1cbiAgICB8IEluQXBcbiAgICB8IE91dHNpZGVBcDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgRHluYW1pY0Vycm9ySG9sZSh0LCBJbnZhbGlkT3BlcmF0aW9uRXJyb3IudClcbiAgICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgRGVmZXJyYWwoZGVmZXJyYWxfcG9zaXRpb24pXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgRnVuKFxuICAgICAgICBQYXQudCxcbiAgICAgICAgdCxcbiAgICAgICAgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSxcbiAgICAgICAgb3B0aW9uKFZhci50KSxcbiAgICAgIClcbiAgICB8IFR5cEZ1bihUUGF0LnQsIHQsIG9wdGlvbihWYXIudCkpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihQYXQudCwgdCwgb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgICB8IFR5QWxpYXMoVFBhdC50LCBUeXAudCwgdClcbiAgICB8IEFwKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIHQpXG4gICAgfCBUeXBBcCh0LCBUeXAudClcbiAgICB8IERlZmVycmVkQXAodCwgbGlzdCh0KSlcbiAgICB8IElmKHQsIHQsIHQpXG4gICAgfCBTZXEodCwgdClcbiAgICB8IFRlc3QodClcbiAgICB8IEZpbHRlcihTdGVwcGVyRmlsdGVyS2luZC50LCB0KVxuICAgIHwgQ2xvc3VyZShbQHNob3cub3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgICB8IFBhcmVucyh0KSAvLyAoXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBMaXN0Q29uY2F0KHQsIHQpXG4gICAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgICB8IEJpbk9wKE9wZXJhdG9ycy5vcF9iaW4sIHQsIHQpXG4gICAgfCBCdWlsdGluRnVuKHN0cmluZylcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFBhdC50LCB0KSkpXG4gICAgLyogSU5WQVJJQU5UOiBpbiBkeW5hbWljIGV4cHJlc3Npb25zLCBjYXN0cyBtdXN0IGJlIGJldHdlZW5cbiAgICAgICB0d28gY29uc2lzdGVudCB0eXBlcy4gQm90aCB0eXBlcyBzaG91bGQgYmUgbm9ybWFsaXplZCBpblxuICAgICAgIGR5bmFtaWNzIGZvciB0aGUgY2FzdCBjYWxjdWx1cyB0byB3b3JrIHJpZ2h0LiAqL1xuICAgIHwgQ2FzdCh0LCBUeXAudCwgVHlwLnQpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICBsZXQgbWFwX3Rlcm06XG4gICAgKFxuICAgICAgfmZfZXhwOiAoRXhwLnQgPT4gRXhwLnQsIEV4cC50KSA9PiBFeHAudD0/LFxuICAgICAgfmZfcGF0OiAoUGF0LnQgPT4gUGF0LnQsIFBhdC50KSA9PiBQYXQudD0/LFxuICAgICAgfmZfdHlwOiAoVHlwLnQgPT4gVHlwLnQsIFR5cC50KSA9PiBUeXAudD0/LFxuICAgICAgfmZfdHBhdDogKFRQYXQudCA9PiBUUGF0LnQsIFRQYXQudCkgPT4gVFBhdC50PT8sXG4gICAgICB+Zl9ydWw6IChSdWwudCA9PiBSdWwudCwgUnVsLnQpID0+IFJ1bC50PT8sXG4gICAgICB+Zl9hbnk6IChBbnkudCA9PiBBbnkudCwgQW55LnQpID0+IEFueS50PT8sXG4gICAgICB0XG4gICAgKSA9PlxuICAgIHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGRlZmVycmFsX3Bvc2l0aW9uID1cbiAgICB8IEluQXBcbiAgICB8IE91dHNpZGVBcDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZSAvLyBDb21iaW5lIHRoZSBwcm9ibGVtcyBpbnRvIG9uZSBjb25zdHJ1Y3RcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gICAgfCBGYWlsZWRDYXN0KHQsIFR5cC50LCBUeXAudCkgLy8gVE9ETzogZ2V0IHJpZCBvZiBmYWlsZWRjYXN0XG4gICAgfCBEZWZlcnJhbChkZWZlcnJhbF9wb3NpdGlvbilcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBGdW4oXG4gICAgICAgIFBhdC50LFxuICAgICAgICB0LFxuICAgICAgICBbQHNob3cub3BhcXVlXSBvcHRpb24oQ2xvc3VyZUVudmlyb25tZW50LnQpLFxuICAgICAgICBvcHRpb24oVmFyLnQpLFxuICAgICAgKVxuICAgIHwgVHlwRnVuKFRQYXQudCwgdCwgb3B0aW9uKHN0cmluZykpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihQYXQudCwgdCwgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgICB8IFR5QWxpYXMoVFBhdC50LCBUeXAudCwgdClcbiAgICB8IEFwKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIHQpIC8vIG5vdGU6IGZ1bmN0aW9uIGlzIGFsd2F5cyBmaXJzdCB0aGVuIGFyZ3VtZW50OyBldmVuIGluIHBpcGUgbW9kZVxuICAgIHwgVHlwQXAodCwgVHlwLnQpXG4gICAgfCBEZWZlcnJlZEFwKHQsIGxpc3QodCkpXG4gICAgfCBJZih0LCB0LCB0KVxuICAgIHwgU2VxKHQsIHQpXG4gICAgfCBUZXN0KHQpXG4gICAgfCBGaWx0ZXIoU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgICB8IENsb3N1cmUoW0BzaG93Lm9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gICAgfCBQYXJlbnModClcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFVuT3AoT3BlcmF0b3JzLm9wX3VuLCB0KVxuICAgIHwgQmluT3AoT3BlcmF0b3JzLm9wX2JpbiwgdCwgdClcbiAgICB8IEJ1aWx0aW5GdW4oc3RyaW5nKSAvLy8gRG9lc24ndCBjdXJyZW50bHkgaGF2ZSBhIGRpc3Rpbmd1aXNoYWJsZSBzeW50YXhcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFBhdC50LCB0KSkpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBwYXRfbWFwX3Rlcm0gPVxuICAgICAgUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgdHlwX21hcF90ZXJtID1cbiAgICAgIFR5cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHRwYXRfbWFwX3Rlcm0gPVxuICAgICAgVFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBmbHRfbWFwX3Rlcm0gPVxuICAgICAgU3RlcHBlckZpbHRlcktpbmQubWFwX3Rlcm0oXG4gICAgICAgIH5mX2V4cCxcbiAgICAgICAgfmZfcGF0LFxuICAgICAgICB+Zl90eXAsXG4gICAgICAgIH5mX3RwYXQsXG4gICAgICAgIH5mX3J1bCxcbiAgICAgICAgfmZfYW55LFxuICAgICAgKTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgIHwgU3RyaW5nKF8pXG4gICAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IE11bHRpSG9sZSh0aGluZ3MpID0+IE11bHRpSG9sZShMaXN0Lm1hcChhbnlfbWFwX3Rlcm0sIHRoaW5ncykpXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShlLCBlcnIpID0+IER5bmFtaWNFcnJvckhvbGUoZXhwX21hcF90ZXJtKGUpLCBlcnIpXG4gICAgICAgIHwgRmFpbGVkQ2FzdChlLCB0MSwgdDIpID0+IEZhaWxlZENhc3QoZXhwX21hcF90ZXJtKGUpLCB0MSwgdDIpXG4gICAgICAgIHwgTGlzdExpdCh0cykgPT4gTGlzdExpdChMaXN0Lm1hcChleHBfbWFwX3Rlcm0sIHRzKSlcbiAgICAgICAgfCBGdW4ocCwgZSwgZW52LCBmKSA9PlxuICAgICAgICAgIEZ1bihwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSwgZW52LCBmKVxuICAgICAgICB8IFR5cEZ1bih0cCwgZSwgZikgPT4gVHlwRnVuKHRwYXRfbWFwX3Rlcm0odHApLCBleHBfbWFwX3Rlcm0oZSksIGYpXG4gICAgICAgIHwgVHVwbGUoeHMpID0+IFR1cGxlKExpc3QubWFwKGV4cF9tYXBfdGVybSwgeHMpKVxuICAgICAgICB8IExldChwLCBlMSwgZTIpID0+XG4gICAgICAgICAgTGV0KHBhdF9tYXBfdGVybShwKSwgZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBGaXhGKHAsIGUsIGVudikgPT4gRml4RihwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSwgZW52KVxuICAgICAgICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgICAgICAgVHlBbGlhcyh0cGF0X21hcF90ZXJtKHRwKSwgdHlwX21hcF90ZXJtKHQpLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQXAob3AsIGUxLCBlMikgPT4gQXAob3AsIGV4cF9tYXBfdGVybShlMSksIGV4cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgVHlwQXAoZSwgdCkgPT4gVHlwQXAoZXhwX21hcF90ZXJtKGUpLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICAgICAgICBEZWZlcnJlZEFwKGV4cF9tYXBfdGVybShlKSwgTGlzdC5tYXAoZXhwX21hcF90ZXJtLCBlcykpXG4gICAgICAgIHwgSWYoZTEsIGUyLCBlMykgPT5cbiAgICAgICAgICBJZihleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpLCBleHBfbWFwX3Rlcm0oZTMpKVxuICAgICAgICB8IFNlcShlMSwgZTIpID0+IFNlcShleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFRlc3QoZSkgPT4gVGVzdChleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgRmlsdGVyKGYsIGUpID0+IEZpbHRlcihmbHRfbWFwX3Rlcm0oZiksIGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDbG9zdXJlKGVudiwgZSkgPT4gQ2xvc3VyZShlbnYsIGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDb25zKGUxLCBlMikgPT4gQ29ucyhleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IExpc3RDb25jYXQoZTEsIGUyKSA9PlxuICAgICAgICAgIExpc3RDb25jYXQoZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBVbk9wKG9wLCBlKSA9PiBVbk9wKG9wLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQmluT3Aob3AsIGUxLCBlMikgPT5cbiAgICAgICAgICBCaW5PcChvcCwgZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBCdWlsdGluRnVuKHN0cikgPT4gQnVpbHRpbkZ1bihzdHIpXG4gICAgICAgIHwgTWF0Y2goZSwgcmxzKSA9PlxuICAgICAgICAgIE1hdGNoKFxuICAgICAgICAgICAgZXhwX21hcF90ZXJtKGUpLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICgocCwgZSkpID0+IChwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSksXG4gICAgICAgICAgICAgIHJscyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IENhc3QoZSwgdDEsIHQyKSA9PiBDYXN0KGV4cF9tYXBfdGVybShlKSwgdDEsIHQyKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX2V4cChyZWNfY2FsbCk7XG4gIH07XG5cbiAgbGV0IHJlYyBmYXN0X2VxdWFsID0gKGUxLCBlMikgPT5cbiAgICBzd2l0Y2ggKGUxIHw+IElkVGFnZ2VkLnRlcm1fb2YsIGUyIHw+IElkVGFnZ2VkLnRlcm1fb2YpIHtcbiAgICB8IChEeW5hbWljRXJyb3JIb2xlKHgsIF8pLCBfKVxuICAgIHwgKFBhcmVucyh4KSwgXykgPT4gZmFzdF9lcXVhbCh4LCBlMilcbiAgICB8IChfLCBEeW5hbWljRXJyb3JIb2xlKHgsIF8pKVxuICAgIHwgKF8sIFBhcmVucyh4KSkgPT4gZmFzdF9lcXVhbChlMSwgeClcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKEludmFsaWQoczEpLCBJbnZhbGlkKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChNdWx0aUhvbGUoeHMpLCBNdWx0aUhvbGUoeXMpKSB3aGVuIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgPT5cbiAgICAgIExpc3QuZXF1YWwoQW55LmZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChGYWlsZWRDYXN0KGUxLCB0MSwgdDIpLCBGYWlsZWRDYXN0KGUyLCB0MywgdDQpKSA9PlxuICAgICAgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHQzKVxuICAgICAgJiYgVHlwLmZhc3RfZXF1YWwodDIsIHQ0KVxuICAgIHwgKERlZmVycmFsKGQxKSwgRGVmZXJyYWwoZDIpKSA9PiBkMSA9PSBkMlxuICAgIHwgKEJvb2woYjEpLCBCb29sKGIyKSkgPT4gYjEgPT0gYjJcbiAgICB8IChJbnQoaTEpLCBJbnQoaTIpKSA9PiBpMSA9PSBpMlxuICAgIHwgKEZsb2F0KGYxKSwgRmxvYXQoZjIpKSA9PiBmMSA9PSBmMlxuICAgIHwgKFN0cmluZyhzMSksIFN0cmluZyhzMikpID0+IHMxID09IHMyXG4gICAgfCAoTGlzdExpdCh4cyksIExpc3RMaXQoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChDb25zdHJ1Y3RvcihjMSksIENvbnN0cnVjdG9yKGMyKSkgPT4gYzEgPT0gYzJcbiAgICB8IChGdW4ocDEsIGUxLCBlbnYxLCBfKSwgRnVuKHAyLCBlMiwgZW52MiwgXykpID0+XG4gICAgICBQYXQuZmFzdF9lcXVhbChwMSwgcDIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIE9wdGlvbi5lcXVhbChDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwsIGVudjEsIGVudjIpXG4gICAgfCAoVHlwRnVuKHRwMSwgZTEsIF8pLCBUeXBGdW4odHAyLCBlMiwgXykpID0+XG4gICAgICBUUGF0LmZhc3RfZXF1YWwodHAxLCB0cDIpICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKFR1cGxlKHhzKSwgVHVwbGUoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChWYXIodjEpLCBWYXIodjIpKSA9PiB2MSA9PSB2MlxuICAgIHwgKExldChwMSwgZTEsIGUyKSwgTGV0KHAyLCBlMywgZTQpKSA9PlxuICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoRml4RihwMSwgZTEsIGMxKSwgRml4RihwMiwgZTIsIGMyKSkgPT5cbiAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMilcbiAgICAgICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgT3B0aW9uLmVxdWFsKENsb3N1cmVFbnZpcm9ubWVudC5pZF9lcXVhbCwgYzEsIGMyKVxuICAgIHwgKFR5QWxpYXModHAxLCB0MSwgZTEpLCBUeUFsaWFzKHRwMiwgdDIsIGUyKSkgPT5cbiAgICAgIFRQYXQuZmFzdF9lcXVhbCh0cDEsIHRwMilcbiAgICAgICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MilcbiAgICAgICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKEFwKGQxLCBlMSwgZTIpLCBBcChkMiwgZTMsIGU0KSkgPT5cbiAgICAgIGQxID09IGQyICYmIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChUeXBBcChlMSwgdDEpLCBUeXBBcChlMiwgdDIpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTIpICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MilcbiAgICB8IChEZWZlcnJlZEFwKGUxLCBlczEpLCBEZWZlcnJlZEFwKGUyLCBlczIpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoZXMxKSA9PSBMaXN0Lmxlbmd0aChlczIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QuZXF1YWwoZmFzdF9lcXVhbCwgZXMxLCBlczIpXG4gICAgfCAoSWYoZTEsIGUyLCBlMyksIElmKGU0LCBlNSwgZTYpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTQpICYmIGZhc3RfZXF1YWwoZTIsIGU1KSAmJiBmYXN0X2VxdWFsKGUzLCBlNilcbiAgICB8IChTZXEoZTEsIGUyKSwgU2VxKGUzLCBlNCkpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoVGVzdChlMSksIFRlc3QoZTIpKSA9PiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChGaWx0ZXIoZjEsIGUxKSwgRmlsdGVyKGYyLCBlMikpID0+XG4gICAgICBTdGVwcGVyRmlsdGVyS2luZC5mYXN0X2VxdWFsKGYxLCBmMikgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQ2xvc3VyZShjMSwgZTEpLCBDbG9zdXJlKGMyLCBlMikpID0+XG4gICAgICBDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwoYzEsIGMyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChDb25zKGUxLCBlMiksIENvbnMoZTMsIGU0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChMaXN0Q29uY2F0KGUxLCBlMiksIExpc3RDb25jYXQoZTMsIGU0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChVbk9wKG8xLCBlMSksIFVuT3AobzIsIGUyKSkgPT4gbzEgPT0gbzIgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQmluT3AobzEsIGUxLCBlMiksIEJpbk9wKG8yLCBlMywgZTQpKSA9PlxuICAgICAgbzEgPT0gbzIgJiYgZmFzdF9lcXVhbChlMSwgZTMpICYmIGZhc3RfZXF1YWwoZTIsIGU0KVxuICAgIHwgKEJ1aWx0aW5GdW4oZjEpLCBCdWlsdGluRnVuKGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChNYXRjaChlMSwgcmxzMSksIE1hdGNoKGUyLCBybHMyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgTGlzdC5sZW5ndGgocmxzMSkgPT0gTGlzdC5sZW5ndGgocmxzMilcbiAgICAgICYmIExpc3QuZm9yX2FsbDIoXG4gICAgICAgICAgICgocDEsIGUxKSwgKHAyLCBlMikpID0+XG4gICAgICAgICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMiksXG4gICAgICAgICAgIHJsczEsXG4gICAgICAgICAgIHJsczIsXG4gICAgICAgICApXG4gICAgfCAoQ2FzdChlMSwgdDEsIHQyKSwgQ2FzdChlMiwgdDMsIHQ0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKSAmJiBUeXAuZmFzdF9lcXVhbCh0MSwgdDMpICYmIFR5cC5mYXN0X2VxdWFsKHQyLCB0NClcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKEZhaWxlZENhc3QoXyksIF8pXG4gICAgfCAoRGVmZXJyYWwoXyksIF8pXG4gICAgfCAoQm9vbChfKSwgXylcbiAgICB8IChJbnQoXyksIF8pXG4gICAgfCAoRmxvYXQoXyksIF8pXG4gICAgfCAoU3RyaW5nKF8pLCBfKVxuICAgIHwgKExpc3RMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pXG4gICAgfCAoRnVuKF8pLCBfKVxuICAgIHwgKFR5cEZ1bihfKSwgXylcbiAgICB8IChUdXBsZShfKSwgXylcbiAgICB8IChWYXIoXyksIF8pXG4gICAgfCAoTGV0KF8pLCBfKVxuICAgIHwgKEZpeEYoXyksIF8pXG4gICAgfCAoVHlBbGlhcyhfKSwgXylcbiAgICB8IChBcChfKSwgXylcbiAgICB8IChUeXBBcChfKSwgXylcbiAgICB8IChEZWZlcnJlZEFwKF8pLCBfKVxuICAgIHwgKElmKF8pLCBfKVxuICAgIHwgKFNlcShfKSwgXylcbiAgICB8IChUZXN0KF8pLCBfKVxuICAgIHwgKEZpbHRlcihfKSwgXylcbiAgICB8IChDbG9zdXJlKF8pLCBfKVxuICAgIHwgKENvbnMoXyksIF8pXG4gICAgfCAoTGlzdENvbmNhdChfKSwgXylcbiAgICB8IChVbk9wKF8pLCBfKVxuICAgIHwgKEJpbk9wKF8pLCBfKVxuICAgIHwgKEJ1aWx0aW5GdW4oXyksIF8pXG4gICAgfCAoTWF0Y2goXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXylcbiAgICB8IChNdWx0aUhvbGUoXyksIF8pXG4gICAgfCAoRW1wdHlIb2xlLCBfKSA9PiBmYWxzZVxuICAgIH07XG59XG5hbmQgUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KSAvLyBUaGUgc2Vjb25kIG9uZSBpcyBoaWRkZW4gZnJvbSB0aGUgdXNlclxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KSAvLyBUaGUgc2Vjb25kIG9uZSBpcyBoaWRkZW4gZnJvbSB0aGUgdXNlclxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgcGF0X21hcF90ZXJtID1cbiAgICAgIFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHR5cF9tYXBfdGVybSA9XG4gICAgICBUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBhbnlfbWFwX3Rlcm0gPVxuICAgICAgQW55Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFdpbGRcbiAgICAgICAgfCBCb29sKF8pXG4gICAgICAgIHwgSW50KF8pXG4gICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IFZhcihfKSA9PiB0ZXJtXG4gICAgICAgIHwgTXVsdGlIb2xlKHRoaW5ncykgPT4gTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfCBMaXN0TGl0KHRzKSA9PiBMaXN0TGl0KExpc3QubWFwKHBhdF9tYXBfdGVybSwgdHMpKVxuICAgICAgICB8IEFwKGUxLCBlMikgPT4gQXAocGF0X21hcF90ZXJtKGUxKSwgcGF0X21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBDb25zKGUxLCBlMikgPT4gQ29ucyhwYXRfbWFwX3Rlcm0oZTEpLCBwYXRfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFR1cGxlKHhzKSA9PiBUdXBsZShMaXN0Lm1hcChwYXRfbWFwX3Rlcm0sIHhzKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKHBhdF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDYXN0KGUsIHQxLCB0MikgPT5cbiAgICAgICAgICBDYXN0KHBhdF9tYXBfdGVybShlKSwgdHlwX21hcF90ZXJtKHQxKSwgdHlwX21hcF90ZXJtKHQyKSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl9wYXQocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgZmFzdF9lcXVhbCA9IChwMSwgcDIpID0+XG4gICAgc3dpdGNoIChwMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCBwMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoUGFyZW5zKHgpLCBfKSA9PiBmYXN0X2VxdWFsKHgsIHAyKVxuICAgIHwgKF8sIFBhcmVucyh4KSkgPT4gZmFzdF9lcXVhbChwMSwgeClcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKE11bHRpSG9sZSh4cyksIE11bHRpSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKFdpbGQsIFdpbGQpID0+IHRydWVcbiAgICB8IChCb29sKGIxKSwgQm9vbChiMikpID0+IGIxID09IGIyXG4gICAgfCAoSW50KGkxKSwgSW50KGkyKSkgPT4gaTEgPT0gaTJcbiAgICB8IChGbG9hdChmMSksIEZsb2F0KGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChTdHJpbmcoczEpLCBTdHJpbmcoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKENvbnN0cnVjdG9yKGMxKSwgQ29uc3RydWN0b3IoYzIpKSA9PiBjMSA9PSBjMlxuICAgIHwgKFZhcih2MSksIFZhcih2MikpID0+IHYxID09IHYyXG4gICAgfCAoTGlzdExpdCh4cyksIExpc3RMaXQoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChDb25zKHgxLCB5MSksIENvbnMoeDIsIHkyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoeDEsIHgyKSAmJiBmYXN0X2VxdWFsKHkxLCB5MilcbiAgICB8IChUdXBsZSh4cyksIFR1cGxlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgJiYgTGlzdC5lcXVhbChmYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoQXAoeDEsIHkxKSwgQXAoeDIsIHkyKSkgPT4gZmFzdF9lcXVhbCh4MSwgeDIpICYmIGZhc3RfZXF1YWwoeTEsIHkyKVxuICAgIHwgKENhc3QoeDEsIHQxLCB0MiksIENhc3QoeDIsIHUxLCB1MikpID0+XG4gICAgICBmYXN0X2VxdWFsKHgxLCB4MikgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHUxKSAmJiBUeXAuZmFzdF9lcXVhbCh0MiwgdTIpXG4gICAgfCAoRW1wdHlIb2xlLCBfKVxuICAgIHwgKE11bHRpSG9sZShfKSwgXylcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKFdpbGQsIF8pXG4gICAgfCAoQm9vbChfKSwgXylcbiAgICB8IChJbnQoXyksIF8pXG4gICAgfCAoRmxvYXQoXyksIF8pXG4gICAgfCAoU3RyaW5nKF8pLCBfKVxuICAgIHwgKExpc3RMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pXG4gICAgfCAoQ29ucyhfKSwgXylcbiAgICB8IChWYXIoXyksIF8pXG4gICAgfCAoVHVwbGUoXyksIF8pXG4gICAgfCAoQXAoXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXykgPT4gZmFsc2VcbiAgICB9O1xufVxuYW5kIFR5cDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9ob2xlID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpO1xuXG4gIC8qIFRZUEVfUFJPVkVOQU5DRTogRnJvbSB3aGVuY2UgZG9lcyBhbiB1bmtub3duIHR5cGUgb3JpZ2luYXRlP1xuICAgICBJcyBpdCBnZW5lcmF0ZWQgZnJvbSBhbiB1bmFubm90YXRlZCBwYXR0ZXJuIHZhcmlhYmxlIChTeW5Td2l0Y2gpLFxuICAgICBhIHBhdHRlcm4gdmFyaWFibGUgYW5ub3RhdGVkIHdpdGggYSB0eXBlIGhvbGUgKFR5cGVIb2xlKSwgb3JcbiAgICAgZ2VuZXJhdGVkIGJ5IGFuIGludGVybmFsIGp1ZGdlbWVudCAoSW50ZXJuYWwpPyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgSG9sZSh0eXBlX2hvbGUpXG4gICAgfCBJbnRlcm5hbDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBVbmtub3duKFR5cC50eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKENvbnN0cnVjdG9yTWFwLnQodCkpXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBSZWMoVFBhdC50LCB0KVxuICAgIHwgRm9yYWxsKFRQYXQudCwgdClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIHR5cGUgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQodCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBzdWJzdDogKHQsIFRQYXQudCwgdCkgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9ob2xlID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpO1xuXG4gIC8qIFRZUEVfUFJPVkVOQU5DRTogRnJvbSB3aGVuY2UgZG9lcyBhbiB1bmtub3duIHR5cGUgb3JpZ2luYXRlP1xuICAgICBJcyBpdCBnZW5lcmF0ZWQgZnJvbSBhbiB1bmFubm90YXRlZCBwYXR0ZXJuIHZhcmlhYmxlIChTeW5Td2l0Y2gpLFxuICAgICBhIHBhdHRlcm4gdmFyaWFibGUgYW5ub3RhdGVkIHdpdGggYSB0eXBlIGhvbGUgKFR5cGVIb2xlKSwgb3JcbiAgICAgZ2VuZXJhdGVkIGJ5IGFuIGludGVybmFsIGp1ZGdlbWVudCAoSW50ZXJuYWwpPyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgSG9sZSh0eXBlX2hvbGUpXG4gICAgfCBJbnRlcm5hbDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBVbmtub3duKFR5cC50eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKENvbnN0cnVjdG9yTWFwLnQodCkpXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBSZWMoVFBhdC50LCB0KVxuICAgIHwgRm9yYWxsKFRQYXQudCwgdClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIHR5cGUgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQodCk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgdHlwX21hcF90ZXJtID1cbiAgICAgIFR5cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCB0cGF0X21hcF90ZXJtID1cbiAgICAgIFRQYXQubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgICAgICAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpXG4gICAgICAgIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgICAgIHwgVW5rbm93bihJbnRlcm5hbClcbiAgICAgICAgfCBCb29sXG4gICAgICAgIHwgSW50XG4gICAgICAgIHwgRmxvYXRcbiAgICAgICAgfCBTdHJpbmdcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IExpc3QodCkgPT4gTGlzdCh0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZSh0aGluZ3MpKSkgPT5cbiAgICAgICAgICBVbmtub3duKEhvbGUoTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSkpKVxuICAgICAgICB8IEFwKGUxLCBlMikgPT4gQXAodHlwX21hcF90ZXJtKGUxKSwgdHlwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBQcm9kKHhzKSA9PiBQcm9kKExpc3QubWFwKHR5cF9tYXBfdGVybSwgeHMpKVxuICAgICAgICB8IFBhcmVucyhlKSA9PiBQYXJlbnModHlwX21hcF90ZXJtKGUpKVxuICAgICAgICB8IEFycm93KHQxLCB0MikgPT4gQXJyb3codHlwX21hcF90ZXJtKHQxKSwgdHlwX21hcF90ZXJtKHQyKSlcbiAgICAgICAgfCBTdW0odmFyaWFudHMpID0+XG4gICAgICAgICAgU3VtKFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICB8IENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoYywgaWRzLCB0KSA9PlxuICAgICAgICAgICAgICAgIENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoYywgaWRzLCBPcHRpb24ubWFwKHR5cF9tYXBfdGVybSwgdCkpXG4gICAgICAgICAgICAgIHwgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkodCkgPT5cbiAgICAgICAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeSh0eXBfbWFwX3Rlcm0odCkpLFxuICAgICAgICAgICAgICB2YXJpYW50cyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IFJlYyh0cCwgdCkgPT4gUmVjKHRwYXRfbWFwX3Rlcm0odHApLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgRm9yYWxsKHRwLCB0KSA9PiBGb3JhbGwodHBhdF9tYXBfdGVybSh0cCksIHR5cF9tYXBfdGVybSh0KSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl90eXAocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgc3Vic3QgPSAoczogdCwgeDogVFBhdC50LCB0eTogdCkgPT4ge1xuICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh4KSkge1xuICAgIHwgU29tZShzdHIpID0+XG4gICAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBJZFRhZ2dlZC51bndyYXAodHkpO1xuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IEludCA9PiBJbnQgfD4gcmV3cmFwXG4gICAgICB8IEZsb2F0ID0+IEZsb2F0IHw+IHJld3JhcFxuICAgICAgfCBCb29sID0+IEJvb2wgfD4gcmV3cmFwXG4gICAgICB8IFN0cmluZyA9PiBTdHJpbmcgfD4gcmV3cmFwXG4gICAgICB8IFVua25vd24ocHJvdikgPT4gVW5rbm93bihwcm92KSB8PiByZXdyYXBcbiAgICAgIHwgQXJyb3codHkxLCB0eTIpID0+XG4gICAgICAgIEFycm93KHN1YnN0KHMsIHgsIHR5MSksIHN1YnN0KHMsIHgsIHR5MikpIHw+IHJld3JhcFxuICAgICAgfCBQcm9kKHR5cykgPT4gUHJvZChMaXN0Lm1hcChzdWJzdChzLCB4KSwgdHlzKSkgfD4gcmV3cmFwXG4gICAgICB8IFN1bShzbSkgPT5cbiAgICAgICAgU3VtKENvbnN0cnVjdG9yTWFwLm1hcChPcHRpb24ubWFwKHN1YnN0KHMsIHgpKSwgc20pKSB8PiByZXdyYXBcbiAgICAgIHwgRm9yYWxsKHRwMiwgdHkpXG4gICAgICAgICAgd2hlbiBUUGF0LnR5dmFyX29mX3V0cGF0KHgpID09IFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSA9PlxuICAgICAgICBGb3JhbGwodHAyLCB0eSkgfD4gcmV3cmFwXG4gICAgICB8IEZvcmFsbCh0cDIsIHR5KSA9PiBGb3JhbGwodHAyLCBzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBSZWModHAyLCB0eSkgd2hlbiBUUGF0LnR5dmFyX29mX3V0cGF0KHgpID09IFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSA9PlxuICAgICAgICBSZWModHAyLCB0eSkgfD4gcmV3cmFwXG4gICAgICB8IFJlYyh0cDIsIHR5KSA9PiBSZWModHAyLCBzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBMaXN0KHR5KSA9PiBMaXN0KHN1YnN0KHMsIHgsIHR5KSkgfD4gcmV3cmFwXG4gICAgICB8IFZhcih5KSA9PiBzdHIgPT0geSA/IHMgOiBWYXIoeSkgfD4gcmV3cmFwXG4gICAgICB8IFBhcmVucyh0eSkgPT4gUGFyZW5zKHN1YnN0KHMsIHgsIHR5KSkgfD4gcmV3cmFwXG4gICAgICB8IEFwKHQxLCB0MikgPT4gQXAoc3Vic3QocywgeCwgdDEpLCBzdWJzdChzLCB4LCB0MikpIHw+IHJld3JhcFxuICAgICAgfTtcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9O1xuICB9O1xuXG4gIC8qIFR5cGUgRXF1YWxpdHk6IFRoaXMgY29pbmNpZGVzIHdpdGggYWxwaGEgZXF1aXZhbGVuY2UgZm9yIG5vcm1hbGl6ZWQgdHlwZXMuXG4gICAgIE90aGVyIHR5cGVzIG1heSBiZSBlcXVpdmFsZW50IGJ1dCB0aGlzIHdpbGwgbm90IGRldGVjdCBzbyBpZiB0aGV5IGFyZSBub3Qgbm9ybWFsaXplZC4gKi9cblxuICBsZXQgcmVjIGVxX2ludGVybmFsID0gKG46IGludCwgdDE6IHQsIHQyOiB0KSA9PiB7XG4gICAgc3dpdGNoIChJZFRhZ2dlZC50ZXJtX29mKHQxKSwgSWRUYWdnZWQudGVybV9vZih0MikpIHtcbiAgICB8IChQYXJlbnModDEpLCBfKSA9PiBlcV9pbnRlcm5hbChuLCB0MSwgdDIpXG4gICAgfCAoXywgUGFyZW5zKHQyKSkgPT4gZXFfaW50ZXJuYWwobiwgdDEsIHQyKVxuICAgIHwgKFJlYyh4MSwgdDEpLCBSZWMoeDIsIHQyKSlcbiAgICB8IChGb3JhbGwoeDEsIHQxKSwgRm9yYWxsKHgyLCB0MikpID0+XG4gICAgICBsZXQgYWxwaGFfc3Vic3QgPVxuICAgICAgICBzdWJzdCh7XG4gICAgICAgICAgdGVybTogVmFyKFwiPVwiICsrIHN0cmluZ19vZl9pbnQobikpLFxuICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgaWRzOiBbSWQuaW52YWxpZF0sXG4gICAgICAgIH0pO1xuICAgICAgZXFfaW50ZXJuYWwobiArIDEsIGFscGhhX3N1YnN0KHgxLCB0MSksIGFscGhhX3N1YnN0KHgyLCB0MikpO1xuICAgIHwgKFJlYyhfKSwgXykgPT4gZmFsc2VcbiAgICB8IChGb3JhbGwoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoSW50LCBJbnQpID0+IHRydWVcbiAgICB8IChJbnQsIF8pID0+IGZhbHNlXG4gICAgfCAoRmxvYXQsIEZsb2F0KSA9PiB0cnVlXG4gICAgfCAoRmxvYXQsIF8pID0+IGZhbHNlXG4gICAgfCAoQm9vbCwgQm9vbCkgPT4gdHJ1ZVxuICAgIHwgKEJvb2wsIF8pID0+IGZhbHNlXG4gICAgfCAoU3RyaW5nLCBTdHJpbmcpID0+IHRydWVcbiAgICB8IChTdHJpbmcsIF8pID0+IGZhbHNlXG4gICAgfCAoQXAodDEsIHQyKSwgQXAodDEnLCB0MicpKSA9PlxuICAgICAgZXFfaW50ZXJuYWwobiwgdDEsIHQxJykgJiYgZXFfaW50ZXJuYWwobiwgdDIsIHQyJylcbiAgICB8IChBcChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChVbmtub3duKF8pLCBVbmtub3duKF8pKSA9PiB0cnVlXG4gICAgfCAoVW5rbm93bihfKSwgXykgPT4gZmFsc2VcbiAgICB8IChBcnJvdyh0MSwgdDIpLCBBcnJvdyh0MScsIHQyJykpID0+XG4gICAgICBlcV9pbnRlcm5hbChuLCB0MSwgdDEnKSAmJiBlcV9pbnRlcm5hbChuLCB0MiwgdDInKVxuICAgIHwgKEFycm93KF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFByb2QodHlzMSksIFByb2QodHlzMikpID0+IExpc3QuZXF1YWwoZXFfaW50ZXJuYWwobiksIHR5czEsIHR5czIpXG4gICAgfCAoUHJvZChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChMaXN0KHQxKSwgTGlzdCh0MikpID0+IGVxX2ludGVybmFsKG4sIHQxLCB0MilcbiAgICB8IChMaXN0KF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFN1bShzbTEpLCBTdW0oc20yKSkgPT5cbiAgICAgIC8qIERvZXMgbm90IG5vcm1hbGl6ZSB0aGUgdHlwZXMuICovXG4gICAgICBDb25zdHJ1Y3Rvck1hcC5lcXVhbChlcV9pbnRlcm5hbChuKSwgc20xLCBzbTIpXG4gICAgfCAoU3VtKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFZhcihuMSksIFZhcihuMikpID0+IG4xID09IG4yXG4gICAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSBlcV9pbnRlcm5hbCgwKTtcbn1cbmFuZCBUUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBWYXIoc3RyaW5nKVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCB0eXZhcl9vZl91dHBhdDogdCA9PiBvcHRpb24oc3RyaW5nKTtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVmFyKHN0cmluZylcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgIHwgVmFyKF8pID0+IHRlcm1cbiAgICAgICAgfCBNdWx0aUhvbGUodGhpbmdzKSA9PiBNdWx0aUhvbGUoTGlzdC5tYXAoYW55X21hcF90ZXJtLCB0aGluZ3MpKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX3RwYXQocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCB0eXZhcl9vZl91dHBhdCA9ICh7dGVybSwgX306IHQpID0+XG4gICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9ICh0cDE6IHQsIHRwMjogdCkgPT5cbiAgICBzd2l0Y2ggKHRwMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCB0cDIgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICAgIHwgKEVtcHR5SG9sZSwgRW1wdHlIb2xlKSA9PiB0cnVlXG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKE11bHRpSG9sZSh4cyksIE11bHRpSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoVmFyKHgpLCBWYXIoeSkpID0+IHggPT0geVxuICAgIHwgKEVtcHR5SG9sZSwgXylcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKE11bHRpSG9sZShfKSwgXylcbiAgICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBSdWw6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgUnVsZXMoRXhwLnQsIGxpc3QoKFBhdC50LCBFeHAudCkpKVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFJ1bGVzKEV4cC50LCBsaXN0KChQYXQudCwgRXhwLnQpKSlcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBwYXRfbWFwX3Rlcm0gPVxuICAgICAgUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgYW55X21hcF90ZXJtID1cbiAgICAgIEFueS5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHJlY19jYWxsID0gKHt0ZXJtLCBffSBhcyBleHA6IHQpID0+IHtcbiAgICAgIC4uLmV4cCxcbiAgICAgIHRlcm06XG4gICAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgICB8IEludmFsaWQoXykgPT4gdGVybVxuICAgICAgICB8IEhvbGUodGhpbmdzKSA9PiBIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfCBSdWxlcyhlLCBybHMpID0+XG4gICAgICAgICAgUnVsZXMoXG4gICAgICAgICAgICBleHBfbWFwX3Rlcm0oZSksXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgKChwLCBlKSkgPT4gKHBhdF9tYXBfdGVybShwKSwgZXhwX21hcF90ZXJtKGUpKSxcbiAgICAgICAgICAgICAgcmxzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB4IHw+IGZfcnVsKHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChyMTogdCwgcjI6IHQpID0+XG4gICAgc3dpdGNoIChyMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCByMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKEhvbGUoeHMpLCBIb2xlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cylcbiAgICAgICYmIExpc3QuZXF1YWwoQW55LmZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChSdWxlcyhlMSwgcmxzMSksIFJ1bGVzKGUyLCBybHMyKSkgPT5cbiAgICAgIEV4cC5mYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QubGVuZ3RoKHJsczEpID09IExpc3QubGVuZ3RoKHJsczIpXG4gICAgICAmJiBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICAoKHAxLCBlMSksIChwMiwgZTIpKSA9PlxuICAgICAgICAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMikgJiYgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKSxcbiAgICAgICAgICAgcmxzMSxcbiAgICAgICAgICAgcmxzMixcbiAgICAgICAgIClcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKEhvbGUoXyksIF8pXG4gICAgfCAoUnVsZXMoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cblxuYW5kIEVudmlyb25tZW50OiB7XG4gIGluY2x1ZGVcbiAgICAgKG1vZHVsZSB0eXBlIG9mIFZhckJzdE1hcC5PcmRlcmVkKSB3aXRoXG4gICAgICB0eXBlIHRfKCdhKSA9IFZhckJzdE1hcC5PcmRlcmVkLnRfKCdhKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHRfKEV4cC50KTtcbn0gPSB7XG4gIGluY2x1ZGUgVmFyQnN0TWFwLk9yZGVyZWQ7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB0XyhFeHAudCk7XG59XG5cbmFuZCBDbG9zdXJlRW52aXJvbm1lbnQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQ7XG5cbiAgbGV0IHdyYXA6IChJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gIGxldCBpZF9vZjogdCA9PiBJZC50O1xuICBsZXQgbWFwX29mOiB0ID0+IEVudmlyb25tZW50LnQ7XG5cbiAgbGV0IHRvX2xpc3Q6IHQgPT4gbGlzdCgoVmFyLnQsIEV4cC50KSk7XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50OiBFbnZpcm9ubWVudC50ID0+IHQ7XG5cbiAgbGV0IGlkX2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcblxuICBsZXQgZW1wdHk6IHQ7XG4gIGxldCBpc19lbXB0eTogdCA9PiBib29sO1xuICBsZXQgbGVuZ3RoOiB0ID0+IGludDtcblxuICBsZXQgbG9va3VwOiAodCwgVmFyLnQpID0+IG9wdGlvbihFeHAudCk7XG4gIGxldCBjb250YWluczogKHQsIFZhci50KSA9PiBib29sO1xuICBsZXQgdXBkYXRlOiAoRW52aXJvbm1lbnQudCA9PiBFbnZpcm9ubWVudC50LCB0KSA9PiB0O1xuICBsZXQgdXBkYXRlX2tlZXBfaWQ6IChFbnZpcm9ubWVudC50ID0+IEVudmlyb25tZW50LnQsIHQpID0+IHQ7XG4gIGxldCBleHRlbmQ6ICh0LCAoVmFyLnQsIEV4cC50KSkgPT4gdDtcbiAgbGV0IGV4dGVuZF9rZWVwX2lkOiAodCwgKFZhci50LCBFeHAudCkpID0+IHQ7XG4gIGxldCB1bmlvbjogKHQsIHQpID0+IHQ7XG4gIGxldCB1bmlvbl9rZWVwX2lkOiAodCwgdCkgPT4gdDtcbiAgbGV0IG1hcDogKCgoVmFyLnQsIEV4cC50KSkgPT4gRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBtYXBfa2VlcF9pZDogKCgoVmFyLnQsIEV4cC50KSkgPT4gRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXI6ICgoKFZhci50LCBFeHAudCkpID0+IGJvb2wsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXJfa2VlcF9pZDogKCgoVmFyLnQsIEV4cC50KSkgPT4gYm9vbCwgdCkgPT4gdDtcbiAgbGV0IGZvbGQ6ICgoKFZhci50LCBFeHAudCksICdiKSA9PiAnYiwgJ2IsIHQpID0+ICdiO1xuXG4gIGxldCB3aXRob3V0X2tleXM6IChsaXN0KFZhci50KSwgdCkgPT4gdDtcblxuICBsZXQgcGxhY2Vob2xkZXI6IHQ7XG59ID0ge1xuICBtb2R1bGUgSW5uZXI6IHtcbiAgICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gICAgdHlwZSB0O1xuXG4gICAgbGV0IHdyYXA6IChJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gICAgbGV0IGlkX29mOiB0ID0+IElkLnQ7XG4gICAgbGV0IG1hcF9vZjogdCA9PiBFbnZpcm9ubWVudC50O1xuICB9ID0ge1xuICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgICB0eXBlIHQgPSAoSWQudCwgRW52aXJvbm1lbnQudCk7XG5cbiAgICBsZXQgd3JhcCA9IChlaSwgbWFwKTogdCA9PiAoZWksIG1hcCk7XG5cbiAgICBsZXQgaWRfb2YgPSAoKGVpLCBfKSkgPT4gZWk7XG4gICAgbGV0IG1hcF9vZiA9ICgoXywgbWFwKSkgPT4gbWFwO1xuICAgIGxldCAoc2V4cF9vZl90LCB0X29mX3NleHApID1cbiAgICAgIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaGVyZShpZF9vZiwgc2V4cF9vZl90LCB0X29mX3NleHApO1xuICB9O1xuICBpbmNsdWRlIElubmVyO1xuXG4gIGxldCB0b19saXN0ID0gZW52ID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQudG9fbGlzdG87XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50ID0gbWFwID0+IHtcbiAgICBsZXQgZWkgPSBJZC5taygpO1xuICAgIHdyYXAoZWksIG1hcCk7XG4gIH07XG5cbiAgLyogRXF1YWxzIG9ubHkgbmVlZHMgdG8gY2hlY2sgZW52aXJvbm1lbnQgaWQncyAoZmFzdGVyIHRoYW4gc3RydWN0dXJhbCBlcXVhbGl0eVxuICAgKiBjaGVja2luZy4pICovXG4gIGxldCBpZF9lcXVhbCA9IChlbnYxLCBlbnYyKSA9PiBpZF9vZihlbnYxKSA9PSBpZF9vZihlbnYyKTtcblxuICBsZXQgZW1wdHkgPSBFbnZpcm9ubWVudC5lbXB0eSB8PiBvZl9lbnZpcm9ubWVudDtcblxuICBsZXQgaXNfZW1wdHkgPSBlbnYgPT4gZW52IHw+IG1hcF9vZiB8PiBFbnZpcm9ubWVudC5pc19lbXB0eTtcblxuICBsZXQgbGVuZ3RoID0gZW52ID0+IEVudmlyb25tZW50Lmxlbmd0aChtYXBfb2YoZW52KSk7XG5cbiAgbGV0IGxvb2t1cCA9IChlbnYsIHgpID0+XG4gICAgZW52IHw+IG1hcF9vZiB8PiAobWFwID0+IEVudmlyb25tZW50Lmxvb2t1cChtYXAsIHgpKTtcblxuICBsZXQgY29udGFpbnMgPSAoZW52LCB4KSA9PlxuICAgIGVudiB8PiBtYXBfb2YgfD4gKG1hcCA9PiBFbnZpcm9ubWVudC5jb250YWlucyhtYXAsIHgpKTtcblxuICBsZXQgdXBkYXRlID0gKGYsIGVudikgPT4gZW52IHw+IG1hcF9vZiB8PiBmIHw+IG9mX2Vudmlyb25tZW50O1xuXG4gIGxldCB1cGRhdGVfa2VlcF9pZCA9IChmLCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gZiB8PiB3cmFwKGVudiB8PiBpZF9vZik7XG5cbiAgbGV0IGV4dGVuZCA9IChlbnYsIHhyKSA9PlxuICAgIGVudiB8PiB1cGRhdGUobWFwID0+IEVudmlyb25tZW50LmV4dGVuZChtYXAsIHhyKSk7XG5cbiAgbGV0IGV4dGVuZF9rZWVwX2lkID0gKGVudiwgeHIpID0+XG4gICAgZW52IHw+IHVwZGF0ZV9rZWVwX2lkKG1hcCA9PiBFbnZpcm9ubWVudC5leHRlbmQobWFwLCB4cikpO1xuXG4gIGxldCB1bmlvbiA9IChlbnYxLCBlbnYyKSA9PlxuICAgIGVudjIgfD4gdXBkYXRlKG1hcDIgPT4gRW52aXJvbm1lbnQudW5pb24oZW52MSB8PiBtYXBfb2YsIG1hcDIpKTtcblxuICBsZXQgdW5pb25fa2VlcF9pZCA9IChlbnYxLCBlbnYyKSA9PlxuICAgIGVudjIgfD4gdXBkYXRlX2tlZXBfaWQobWFwMiA9PiBFbnZpcm9ubWVudC51bmlvbihlbnYxIHw+IG1hcF9vZiwgbWFwMikpO1xuXG4gIGxldCBtYXAgPSAoZiwgZW52KSA9PiBlbnYgfD4gdXBkYXRlKEVudmlyb25tZW50Lm1hcG8oZikpO1xuXG4gIGxldCBtYXBfa2VlcF9pZCA9IChmLCBlbnYpID0+IGVudiB8PiB1cGRhdGVfa2VlcF9pZChFbnZpcm9ubWVudC5tYXBvKGYpKTtcblxuICBsZXQgZmlsdGVyID0gKGYsIGVudikgPT4gZW52IHw+IHVwZGF0ZShFbnZpcm9ubWVudC5maWx0ZXJvKGYpKTtcblxuICBsZXQgZmlsdGVyX2tlZXBfaWQgPSAoZiwgZW52KSA9PlxuICAgIGVudiB8PiB1cGRhdGVfa2VlcF9pZChFbnZpcm9ubWVudC5maWx0ZXJvKGYpKTtcblxuICBsZXQgZm9sZCA9IChmLCBpbml0LCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQuZm9sZG8oZiwgaW5pdCk7XG5cbiAgbGV0IHBsYWNlaG9sZGVyID0gd3JhcChJZC5pbnZhbGlkLCBFbnZpcm9ubWVudC5lbXB0eSk7XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IGtleXMgPT4gdXBkYXRlKEVudmlyb25tZW50LndpdGhvdXRfa2V5cyhrZXlzKSk7XG59XG5hbmQgU3RlcHBlckZpbHRlcktpbmQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGZpbHRlciA9IHtcbiAgICBwYXQ6IEV4cC50LFxuICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRmlsdGVyKGZpbHRlcilcbiAgICB8IFJlc2lkdWUoaW50LCBGaWx0ZXJBY3Rpb24udCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBtYXA6IChFeHAudCA9PiBFeHAudCwgdCkgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZmlsdGVyID0ge1xuICAgIHBhdDogRXhwLnQsXG4gICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBGaWx0ZXIoZmlsdGVyKVxuICAgIHwgUmVzaWR1ZShpbnQsIEZpbHRlckFjdGlvbi50KTtcblxuICBsZXQgbWFwID0gKG1hcHBlciwgZmlsdGVyKSA9PiB7XG4gICAgc3dpdGNoIChmaWx0ZXIpIHtcbiAgICB8IEZpbHRlcih7YWN0LCBwYXR9KSA9PiBGaWx0ZXIoe2FjdCwgcGF0OiBtYXBwZXIocGF0KX0pXG4gICAgfCBSZXNpZHVlKGlkeCwgYWN0KSA9PiBSZXNpZHVlKGlkeCwgYWN0KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICApID0+IHtcbiAgICBsZXQgZXhwX21hcF90ZXJtID1cbiAgICAgIEV4cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgZnVuXG4gICAgfCBGaWx0ZXIoe3BhdDogZSwgYWN0fSkgPT4gRmlsdGVyKHtwYXQ6IGV4cF9tYXBfdGVybShlKSwgYWN0fSlcbiAgICB8IFJlc2lkdWUoaSwgYSkgPT4gUmVzaWR1ZShpLCBhKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChmMSwgZjIpID0+XG4gICAgc3dpdGNoIChmMSwgZjIpIHtcbiAgICB8IChGaWx0ZXIoe3BhdDogZTEsIGFjdDogYTF9KSwgRmlsdGVyKHtwYXQ6IGUyLCBhY3Q6IGEyfSkpID0+XG4gICAgICBFeHAuZmFzdF9lcXVhbChlMSwgZTIpICYmIGExID09IGEyXG4gICAgfCAoUmVzaWR1ZShpMSwgYTEpLCBSZXNpZHVlKGkyLCBhMikpID0+IGkxID09IGkyICYmIGExID09IGEyXG4gICAgfCAoRmlsdGVyKF8pLCBfKVxuICAgIHwgKFJlc2lkdWUoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgSW52YWxpZFxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFZhcjtcblxuaW5jbHVkZSBUZXJtQmFzZS5UUGF0O1xuXG5sZXQgcmVwX2lkOiB0ID0+IElkLnQgPSBJZFRhZ2dlZC5yZXBfaWQ7XG5sZXQgZnJlc2g6IHRlcm0gPT4gdCA9IElkVGFnZ2VkLmZyZXNoO1xuXG5sZXQgaG9sZSA9ICh0bXM6IGxpc3QoVGVybUJhc2UuQW55LnQpKSA9PlxuICBzd2l0Y2ggKHRtcykge1xuICB8IFtdID0+IEVtcHR5SG9sZVxuICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICB9O1xuXG5sZXQgY2xzX29mX3Rlcm06IHRlcm0gPT4gY2xzID1cbiAgZnVuXG4gIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgfCBWYXIoXykgPT4gVmFyO1xuXG5sZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBJbnZhbGlkID0+IFwiSW52YWxpZCB0eXBlIGFsaWFzXCJcbiAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gdHlwZSBhbGlhc1wiXG4gIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgdHlwZSBhbGlhcyBob2xlXCJcbiAgfCBWYXIgPT4gXCJUeXBlIGFsaWFzXCI7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGtpbmQgPVxuICB8IFNpbmdsZXRvbihUZXJtQmFzZS5UeXAudClcbiAgfCBBYnN0cmFjdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB2YXJfZW50cnkgPSB7XG4gIG5hbWU6IFZhci50LFxuICBpZDogSWQudCxcbiAgdHlwOiBUZXJtQmFzZS5UeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHZhcl9lbnRyeSA9IHtcbiAgbmFtZTogc3RyaW5nLFxuICBpZDogSWQudCxcbiAga2luZCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZW50cnkgPVxuICB8IFZhckVudHJ5KHZhcl9lbnRyeSlcbiAgfCBDb25zdHJ1Y3RvckVudHJ5KHZhcl9lbnRyeSlcbiAgfCBUVmFyRW50cnkodHZhcl9lbnRyeSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZW50cnkpO1xuXG5sZXQgZXh0ZW5kID0gKGN0eCwgZW50cnkpID0+IExpc3QuY29ucyhlbnRyeSwgY3R4KTtcblxubGV0IGV4dGVuZF90dmFyID0gKGN0eDogdCwgdHZhcl9lbnRyeTogdHZhcl9lbnRyeSk6IHQgPT5cbiAgZXh0ZW5kKGN0eCwgVFZhckVudHJ5KHR2YXJfZW50cnkpKTtcblxubGV0IGV4dGVuZF9hbGlhcyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZywgaWQ6IElkLnQsIHR5OiBUZXJtQmFzZS5UeXAudCk6IHQgPT5cbiAgZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQsIGtpbmQ6IFNpbmdsZXRvbih0eSl9KTtcblxubGV0IGV4dGVuZF9kdW1teV90dmFyID0gKGN0eDogdCwgdHZhcjogVFBhdC50KSA9PlxuICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQodHZhcikpIHtcbiAgfCBTb21lKG5hbWUpID0+IGV4dGVuZF90dmFyKGN0eCwge2tpbmQ6IEFic3RyYWN0LCBuYW1lLCBpZDogSWQuaW52YWxpZH0pXG4gIHwgTm9uZSA9PiBjdHhcbiAgfTtcblxubGV0IGxvb2t1cF90dmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHR2YXJfZW50cnkpID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBUVmFyRW50cnkodikgd2hlbiB2Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHYpXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgbG9va3VwX2FsaWFzID0gKGN0eDogdCwgdDogc3RyaW5nKTogb3B0aW9uKFRlcm1CYXNlLlR5cC50KSA9PlxuICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgdCkpIHtcbiAgfCBTb21lKHtraW5kOiBTaW5nbGV0b24odHkpLCBffSkgPT4gU29tZSh0eSlcbiAgfCBTb21lKHtraW5kOiBBYnN0cmFjdCwgX30pXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBnZXRfaWQ6IGVudHJ5ID0+IElkLnQgPVxuICBmdW5cbiAgfCBWYXJFbnRyeSh7aWQsIF99KVxuICB8IENvbnN0cnVjdG9yRW50cnkoe2lkLCBffSlcbiAgfCBUVmFyRW50cnkoe2lkLCBffSkgPT4gaWQ7XG5cbmxldCBsb29rdXBfdmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHZhcl9lbnRyeSkgPT5cbiAgTGlzdC5maW5kX21hcChcbiAgICBmdW5cbiAgICB8IFZhckVudHJ5KHYpIHdoZW4gdi5uYW1lID09IG5hbWUgPT4gU29tZSh2KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGxvb2t1cF9jdHIgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcpOiBvcHRpb24odmFyX2VudHJ5KSA9PlxuICBMaXN0LmZpbmRfbWFwKFxuICAgIGZ1blxuICAgIHwgQ29uc3RydWN0b3JFbnRyeSh0KSB3aGVuIHQubmFtZSA9PSBuYW1lID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBpc19hbGlhcyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IGJvb2wgPT5cbiAgc3dpdGNoIChsb29rdXBfYWxpYXMoY3R4LCBuYW1lKSkge1xuICB8IFNvbWUoXykgPT4gdHJ1ZVxuICB8IE5vbmUgPT4gZmFsc2VcbiAgfTtcblxubGV0IGlzX2Fic3RyYWN0ID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogYm9vbCA9PlxuICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBTb21lKHtraW5kOiBBYnN0cmFjdCwgX30pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBhZGRfY3RycyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZywgaWQ6IElkLnQsIGN0cnM6IFRlcm1CYXNlLlR5cC5zdW1fbWFwKTogdCA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgdHlwKSA9PlxuICAgICAgU29tZShcbiAgICAgICAgQ29uc3RydWN0b3JFbnRyeSh7XG4gICAgICAgICAgbmFtZTogY3RyLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHR5cDpcbiAgICAgICAgICAgIHN3aXRjaCAodHlwKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gVGVybUJhc2UuVHlwLlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaFxuICAgICAgICAgICAgfCBTb21lKHR5cCkgPT5cbiAgICAgICAgICAgICAgVGVybUJhc2UuVHlwLkFycm93KFxuICAgICAgICAgICAgICAgIHR5cCxcbiAgICAgICAgICAgICAgICBUZXJtQmFzZS5UeXAuVmFyKG5hbWUpIHw+IElkVGFnZ2VkLmZyZXNoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IElkVGFnZ2VkLmZyZXNoXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB8IENvbnN0cnVjdG9yTWFwLkJhZEVudHJ5KF8pID0+IE5vbmUsXG4gICAgY3RycyxcbiAgKVxuICBAIGN0eDtcblxubGV0IHN1YnRyYWN0X3ByZWZpeCA9IChjdHg6IHQsIHByZWZpeF9jdHg6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvLyBOT1RFOiBkb2VzIG5vdCBjaGVjayB0aGF0IHRoZSBwcmVmaXggaXMgYW4gYWN0dWFsIHByZWZpeFxuICBsZXQgcHJlZml4X2xlbmd0aCA9IExpc3QubGVuZ3RoKHByZWZpeF9jdHgpO1xuICBsZXQgY3R4X2xlbmd0aCA9IExpc3QubGVuZ3RoKGN0eCk7XG4gIGlmIChwcmVmaXhfbGVuZ3RoID4gY3R4X2xlbmd0aCkge1xuICAgIE5vbmU7XG4gIH0gZWxzZSB7XG4gICAgU29tZShcbiAgICAgIExpc3QucmV2KFxuICAgICAgICBMaXN0VXRpbC5zdWJsaXN0KChwcmVmaXhfbGVuZ3RoLCBjdHhfbGVuZ3RoKSwgTGlzdC5yZXYoY3R4KSksXG4gICAgICApLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgYWRkZWRfYmluZGluZ3MgPSAoY3R4X2FmdGVyOiB0LCBjdHhfYmVmb3JlOiB0KTogdCA9PiB7XG4gIC8qIFByZWNvbmRpdGlvbjogbmV3X2N0eCBpcyBvbGRfY3R4IHBsdXMgc29tZSBuZXcgYmluZGluZ3MgKi9cbiAgbGV0IG5ld19jb3VudCA9IExpc3QubGVuZ3RoKGN0eF9hZnRlcikgLSBMaXN0Lmxlbmd0aChjdHhfYmVmb3JlKTtcbiAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9uX29wdChuZXdfY291bnQsIGN0eF9hZnRlcikpIHtcbiAgfCBTb21lKChjdHgsIF8pKSA9PiBjdHhcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG5tb2R1bGUgVmFyU2V0ID0gU2V0Lk1ha2UoVmFyKTtcblxuLy8gTm90ZTogZmlsdGVyIG91dCBkdXBsaWNhdGVzIHdoZW4gcmVuZGVyaW5nXG5sZXQgZmlsdGVyX2R1cGxpY2F0ZXMgPSAoY3R4OiB0KTogdCA9PlxuICBjdHhcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KSwgZW50cnkpID0+IHtcbiAgICAgICAgIHN3aXRjaCAoZW50cnkpIHtcbiAgICAgICAgIHwgVmFyRW50cnkoe25hbWUsIF99KVxuICAgICAgICAgfCBDb25zdHJ1Y3RvckVudHJ5KHtuYW1lLCBffSkgPT5cbiAgICAgICAgICAgVmFyU2V0Lm1lbShuYW1lLCB0ZXJtX3NldClcbiAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgVmFyU2V0LmFkZChuYW1lLCB0ZXJtX3NldCksIHR5cF9zZXQpXG4gICAgICAgICB8IFRWYXJFbnRyeSh7bmFtZSwgX30pID0+XG4gICAgICAgICAgIFZhclNldC5tZW0obmFtZSwgdHlwX3NldClcbiAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgdGVybV9zZXQsIFZhclNldC5hZGQobmFtZSwgdHlwX3NldCkpXG4gICAgICAgICB9XG4gICAgICAgfSxcbiAgICAgICAoW10sIFZhclNldC5lbXB0eSwgVmFyU2V0LmVtcHR5KSxcbiAgICAgKVxuICB8PiAoKChjdHgsIF8sIF8pKSA9PiBMaXN0LnJldihjdHgpKTtcblxubGV0IHNoYWRvd3NfdHlwID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogYm9vbCA9PlxuICBGb3JtLmlzX2Jhc2VfdHlwKG5hbWUpIHx8IGxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpICE9IE5vbmU7XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgSW52YWxpZFxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFN5blN3aXRjaFxuICB8IEludGVybmFsXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nXG4gIHwgQXJyb3dcbiAgfCBQcm9kXG4gIHwgU3VtXG4gIHwgTGlzdFxuICB8IFZhclxuICB8IENvbnN0cnVjdG9yXG4gIHwgUGFyZW5zXG4gIHwgQXBcbiAgfCBSZWNcbiAgfCBGb3JhbGw7XG5cbmluY2x1ZGUgVGVybUJhc2UuVHlwO1xuXG5sZXQgdGVybV9vZjogdCA9PiB0ZXJtID0gSWRUYWdnZWQudGVybV9vZjtcbmxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5sZXQgZnJlc2g6IHRlcm0gPT4gdCA9IElkVGFnZ2VkLmZyZXNoO1xuLyogZnJlc2ggYXNzaWducyBhIHJhbmRvbSBpZCwgd2hlcmVhcyBta19mYXN0IGFzc2lnbnMgSWQuaW52YWxpZCwgd2hpY2hcbiAgIGlzIGEgbG90IGZhc3RlciwgYW5kIHNpbmNlIHdlIHNvIG9mdGVuIG1ha2UgdHlwZXMgYW5kIHRocm93IHRoZW0gYXdheVxuICAgc2hvcnRseSBhZnRlciwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIGl0LiAqL1xubGV0IG1rX2Zhc3Q6IHRlcm0gPT4gdCA9IHRlcm0gPT4ge3Rlcm0sIGlkczogW0lkLmludmFsaWRdLCBjb3BpZWQ6IGZhbHNlfTtcbmxldCByZXBfaWQ6IHQgPT4gSWQudCA9IElkVGFnZ2VkLnJlcF9pZDtcblxubGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSkgPT5cbiAgc3dpdGNoICh0bXMpIHtcbiAgfCBbXSA9PiBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgfCBbXywgLi4uX10gPT4gVW5rbm93bihIb2xlKE11bHRpSG9sZSh0bXMpKSlcbiAgfTtcblxubGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gIGZ1blxuICB8IFVua25vd24oSG9sZShJbnZhbGlkKF8pKSkgPT4gSW52YWxpZFxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PiBFbXB0eUhvbGVcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKF8pKSkgPT4gTXVsdGlIb2xlXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICB8IFVua25vd24oSW50ZXJuYWwpID0+IEludGVybmFsXG4gIHwgSW50ID0+IEludFxuICB8IEZsb2F0ID0+IEZsb2F0XG4gIHwgQm9vbCA9PiBCb29sXG4gIHwgU3RyaW5nID0+IFN0cmluZ1xuICB8IExpc3QoXykgPT4gTGlzdFxuICB8IEFycm93KF8pID0+IEFycm93XG4gIHwgVmFyKF8pID0+IFZhclxuICB8IFByb2QoXykgPT4gUHJvZFxuICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgfCBBcChfKSA9PiBBcFxuICB8IFN1bShfKSA9PiBTdW1cbiAgfCBSZWMoXykgPT4gUmVjXG4gIHwgRm9yYWxsKF8pID0+IEZvcmFsbDtcblxubGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgSW52YWxpZCA9PiBcIkludmFsaWQgdHlwZVwiXG4gIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHR5cGVcIlxuICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IHR5cGUgaG9sZVwiXG4gIHwgU3luU3dpdGNoID0+IFwiU3ludGhldGljIHR5cGVcIlxuICB8IEludGVybmFsID0+IFwiSW50ZXJuYWwgdHlwZVwiXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBTdHJpbmdcbiAgfCBCb29sID0+IFwiQmFzZSB0eXBlXCJcbiAgfCBWYXIgPT4gXCJUeXBlIHZhcmlhYmxlXCJcbiAgfCBDb25zdHJ1Y3RvciA9PiBcIlN1bSBjb25zdHJ1Y3RvclwiXG4gIHwgTGlzdCA9PiBcIkxpc3QgdHlwZVwiXG4gIHwgQXJyb3cgPT4gXCJGdW5jdGlvbiB0eXBlXCJcbiAgfCBQcm9kID0+IFwiUHJvZHVjdCB0eXBlXCJcbiAgfCBTdW0gPT4gXCJTdW0gdHlwZVwiXG4gIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCB0eXBlXCJcbiAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgfCBSZWMgPT4gXCJSZWN1cnNpdmUgdHlwZVwiXG4gIHwgRm9yYWxsID0+IFwiRm9yYWxsIHR5cGVcIjtcblxubGV0IHJlYyBpc19hcnJvdyA9ICh0eXA6IHQpID0+IHtcbiAgc3dpdGNoICh0eXAudGVybSkge1xuICB8IFBhcmVucyh0eXApID0+IGlzX2Fycm93KHR5cClcbiAgfCBBcnJvdyhfKSA9PiB0cnVlXG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IExpc3QoXylcbiAgfCBQcm9kKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBTdW0oXylcbiAgfCBGb3JhbGwoXylcbiAgfCBSZWMoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCByZWMgaXNfZm9yYWxsID0gKHR5cDogdCkgPT4ge1xuICBzd2l0Y2ggKHR5cC50ZXJtKSB7XG4gIHwgUGFyZW5zKHR5cCkgPT4gaXNfZm9yYWxsKHR5cClcbiAgfCBGb3JhbGwoXykgPT4gdHJ1ZVxuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmdcbiAgfCBBcnJvdyhfKVxuICB8IExpc3QoXylcbiAgfCBQcm9kKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBTdW0oXylcbiAgfCBSZWMoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIENvbnZlcnRzIGEgc3ludGFjdGljIHR5cGUgaW50byBhIHNlbWFudGljIHR5cGUsIHNwZWNpZmljYWxseVxuICAgaXQgYWRkcyBpbXBsaWNpdCByZWN1cnNpdmUgdHlwZXMsIGFuZCByZW1vdmVzIGR1cGxpY2F0ZVxuICAgY29uc3RydWN0b3JzLiAqL1xubGV0IHJlYyB0b190eXA6IChDdHgudCwgdCkgPT4gdCA9XG4gIChjdHgsIHV0eXApID0+IHtcbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBJZFRhZ2dlZC51bndyYXAodXR5cCk7XG4gICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgfCBVbmtub3duKF8pXG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmcgPT4gdXR5cFxuICAgIHwgVmFyKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpKSB7XG4gICAgICB8IFNvbWUoXykgPT4gVmFyKG5hbWUpIHw+IHJld3JhcFxuICAgICAgfCBOb25lID0+IFVua25vd24oSG9sZShJbnZhbGlkKG5hbWUpKSkgfD4gcmV3cmFwXG4gICAgICB9XG4gICAgfCBBcnJvdyh1MSwgdTIpID0+IEFycm93KHRvX3R5cChjdHgsIHUxKSwgdG9fdHlwKGN0eCwgdTIpKSB8PiByZXdyYXBcbiAgICB8IFByb2QodXMpID0+IFByb2QoTGlzdC5tYXAodG9fdHlwKGN0eCksIHVzKSkgfD4gcmV3cmFwXG4gICAgfCBTdW0odXRzKSA9PiBTdW0odG9fY3RyX21hcChjdHgsIHV0cykpIHw+IHJld3JhcFxuICAgIHwgTGlzdCh1KSA9PiBMaXN0KHRvX3R5cChjdHgsIHUpKSB8PiByZXdyYXBcbiAgICB8IFBhcmVucyh1KSA9PiB0b190eXAoY3R4LCB1KVxuICAgIHwgRm9yYWxsKHt0ZXJtOiBJbnZhbGlkKF8pLCBffSBhcyB0cGF0LCB0Ym9keSlcbiAgICB8IEZvcmFsbCh7dGVybTogRW1wdHlIb2xlLCBffSBhcyB0cGF0LCB0Ym9keSlcbiAgICB8IEZvcmFsbCh7dGVybTogTXVsdGlIb2xlKF8pLCBffSBhcyB0cGF0LCB0Ym9keSkgPT5cbiAgICAgIEZvcmFsbCh0cGF0LCB0b190eXAoY3R4LCB0Ym9keSkpIHw+IHJld3JhcFxuICAgIHwgRm9yYWxsKHt0ZXJtOiBWYXIobmFtZSksIF99IGFzIHV0cGF0LCB0Ym9keSkgPT5cbiAgICAgIGxldCBjdHggPVxuICAgICAgICBDdHguZXh0ZW5kX3R2YXIoXG4gICAgICAgICAgY3R4LFxuICAgICAgICAgIHtuYW1lLCBpZDogSWRUYWdnZWQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9LFxuICAgICAgICApO1xuICAgICAgRm9yYWxsKHV0cGF0LCB0b190eXAoY3R4LCB0Ym9keSkpIHw+IHJld3JhcDtcbiAgICB8IFJlYyh7dGVybTogSW52YWxpZChfKSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBSZWMoe3Rlcm06IEVtcHR5SG9sZSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBSZWMoe3Rlcm06IE11bHRpSG9sZShfKSwgX30gYXMgdHBhdCwgdGJvZHkpID0+XG4gICAgICBSZWModHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXBcbiAgICB8IFJlYyh7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgdGJvZHkpID0+XG4gICAgICBsZXQgY3R4ID1cbiAgICAgICAgQ3R4LmV4dGVuZF90dmFyKFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgICB7bmFtZSwgaWQ6IElkVGFnZ2VkLnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSxcbiAgICAgICAgKTtcbiAgICAgIFJlYyh1dHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXA7XG4gICAgLyogVGhlIGJlbG93IGNhc2VzIHNob3VsZCBvY2N1ciBvbmx5IGluc2lkZSBzdW1zICovXG4gICAgfCBBcChfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiByZXdyYXBcbiAgICB9O1xuICB9XG5hbmQgdG9fdmFyaWFudDpcbiAgKEN0eC50LCBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSA9PiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpID1cbiAgY3R4ID0+XG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0ciwgaWRzLCB1KSA9PlxuICAgICAgQ29uc3RydWN0b3JNYXAuVmFyaWFudChjdHIsIGlkcywgT3B0aW9uLm1hcCh0b190eXAoY3R4KSwgdSkpXG4gICAgfCBCYWRFbnRyeSh1KSA9PiBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeSh0b190eXAoY3R4LCB1KSlcbmFuZCB0b19jdHJfbWFwID0gKGN0eDogQ3R4LnQsIHV0czogbGlzdChDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSkgPT4ge1xuICB1dHNcbiAgfD4gTGlzdC5tYXAodG9fdmFyaWFudChjdHgpKVxuICB8PiBMaXN0VXRpbC5kZWR1cF9mKFxuICAgICAgICh4OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpLCB5OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSA9PlxuICAgICAgIHN3aXRjaCAoeCwgeSkge1xuICAgICAgIHwgKFZhcmlhbnQoYzEsIF8sIF8pLCBWYXJpYW50KGMyLCBfLCBfKSkgPT4gYzEgPT0gYzJcbiAgICAgICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSlcbiAgICAgICB8IChCYWRFbnRyeShfKSwgVmFyaWFudChfKSlcbiAgICAgICB8IChCYWRFbnRyeShfKSwgQmFkRW50cnkoXykpID0+IGZhbHNlXG4gICAgICAgfVxuICAgICApO1xufTtcblxuLyogRnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXNzdW1lIHRoYXQgdHlwZXMgaGF2ZSBiZWVuIHRocm91Z2ggdGhlIHRvX3R5cCBmdW5jdGlvbiBhYm92ZSAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNvdXJjZSA9IHtcbiAgaWQ6IElkLnQsXG4gIHR5OiB0LFxufTtcblxuLyogU3RyaXAgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSBhIGxpc3Qgb2Ygc291cmNlcyAqL1xubGV0IG9mX3NvdXJjZSA9IExpc3QubWFwKChzb3VyY2U6IHNvdXJjZSkgPT4gc291cmNlLnR5KTtcblxuLyogSG93IHR5cGUgcHJvdmVuYW5jZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgY29sbGF0ZWQgd2hlblxuICAgam9pbmluZyB1bmtub3duIHR5cGVzLiBUaGlzIHByb2JhYmx5IHJlcXVpcmVzIG1vcmUgdGhvdWdodCxcbiAgIGJ1dCByaWdodCBub3cgVHlwZUhvbGUgc3RyaWN0bHkgcHJlZG9taW5hdGVzIG92ZXIgSW50ZXJuYWxcbiAgIHdoaWNoIHN0cmljdGx5IHByZWRvbWluYXRlcyBvdmVyIFN5blN3aXRjaC4gKi9cbmxldCBqb2luX3R5cGVfcHJvdmVuYW5jZSA9XG4gICAgKHAxOiB0eXBlX3Byb3ZlbmFuY2UsIHAyOiB0eXBlX3Byb3ZlbmFuY2UpOiB0eXBlX3Byb3ZlbmFuY2UgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoSG9sZShoMSksIEhvbGUoaDIpKSB3aGVuIGgxID09IGgyID0+IEhvbGUoaDEpXG4gIHwgKEhvbGUoRW1wdHlIb2xlKSwgSG9sZShFbXB0eUhvbGUpIHwgU3luU3dpdGNoKVxuICB8IChTeW5Td2l0Y2gsIEhvbGUoRW1wdHlIb2xlKSkgPT4gSG9sZShFbXB0eUhvbGUpXG4gIHwgKFN5blN3aXRjaCwgSW50ZXJuYWwpXG4gIHwgKEludGVybmFsLCBTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICB8IChJbnRlcm5hbCB8IEhvbGUoXyksIF8pXG4gIHwgKF8sIEhvbGUoXykpID0+IEludGVybmFsXG4gIHwgKFN5blN3aXRjaCwgU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgfTtcblxubGV0IHJlYyBmcmVlX3ZhcnMgPSAofmJvdW5kPVtdLCB0eTogdCk6IGxpc3QoVmFyLnQpID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKF8pXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IFtdXG4gIHwgQXAodDEsIHQyKSA9PiBmcmVlX3ZhcnMofmJvdW5kLCB0MSkgQCBmcmVlX3ZhcnMofmJvdW5kLCB0MilcbiAgfCBWYXIodikgPT4gTGlzdC5tZW0odiwgYm91bmQpID8gW10gOiBbdl1cbiAgfCBQYXJlbnModHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICB8IExpc3QodHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICB8IEFycm93KHQxLCB0MikgPT4gZnJlZV92YXJzKH5ib3VuZCwgdDEpIEAgZnJlZV92YXJzKH5ib3VuZCwgdDIpXG4gIHwgU3VtKHNtKSA9PiBDb25zdHJ1Y3Rvck1hcC5mcmVlX3ZhcmlhYmxlcyhmcmVlX3ZhcnMofmJvdW5kKSwgc20pXG4gIHwgUHJvZCh0eXMpID0+IExpc3RVdGlsLmZsYXRfbWFwKGZyZWVfdmFycyh+Ym91bmQpLCB0eXMpXG4gIHwgUmVjKHgsIHR5KVxuICB8IEZvcmFsbCh4LCB0eSkgPT5cbiAgICBmcmVlX3ZhcnMofmJvdW5kPSh4IHw+IFRQYXQudHl2YXJfb2ZfdXRwYXQgfD4gT3B0aW9uLnRvX2xpc3QpIEAgYm91bmQsIHR5KVxuICB9O1xuXG5sZXQgdmFyX2NvdW50ID0gcmVmKDApO1xubGV0IGZyZXNoX3ZhciA9ICh2YXJfbmFtZTogc3RyaW5nKSA9PiB7XG4gIGxldCB4ID0gdmFyX2NvdW50XjtcbiAgdmFyX2NvdW50IDo9IHggKyAxO1xuICB2YXJfbmFtZSArKyBcIl/OsVwiICsrIHN0cmluZ19vZl9pbnQoeCk7XG59O1xuXG5sZXQgdW5yb2xsID0gKHR5OiB0KTogdCA9PlxuICBzd2l0Y2ggKHRlcm1fb2YodHkpKSB7XG4gIHwgUmVjKHRwLCB0eV9ib2R5KSA9PiBzdWJzdCh0eSwgdHAsIHR5X2JvZHkpXG4gIHwgXyA9PiB0eVxuICB9O1xuXG4vKiBUeXBlIEVxdWFsaXR5OiBUaGlzIGNvaW5jaWRlcyB3aXRoIGFscGhhIGVxdWl2YWxlbmNlIGZvciBub3JtYWxpemVkIHR5cGVzLlxuICAgT3RoZXIgdHlwZXMgbWF5IGJlIGVxdWl2YWxlbnQgYnV0IHRoaXMgd2lsbCBub3QgZGV0ZWN0IHNvIGlmIHRoZXkgYXJlIG5vdCBub3JtYWxpemVkLiAqL1xubGV0IGVxID0gKHQxOiB0LCB0MjogdCk6IGJvb2wgPT4gZmFzdF9lcXVhbCh0MSwgdDIpO1xuXG4vKiBMYXR0aWNlIGpvaW4gb24gdHlwZXMuIFRoaXMgaXMgYSBMVUIgam9pbiBpbiB0aGUgaGF6ZWwyXG4gICBzZW5zZSBpbiB0aGF0IGFueSB0eXBlIGRvbWluYXRlcyBVbmtub3duLiBUaGUgb3B0aW9uYWxcbiAgIHJlc29sdmUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyLCBpbiB0aGUgY2FzZSBvZiBhIHR5cGVcbiAgIHZhcmlhYmxlIGFuZCBhIHN1Y2Nlc2Z1bCBqb2luLCB0byByZXR1cm4gdGhlIHJlc29sdmVkIGpvaW4gdHlwZSxcbiAgIG9yIHRvIHJldHVybiB0aGUgKGZpcnN0KSB0eXBlIHZhcmlhYmxlIGZvciByZWFkYWJpbGl0eSAqL1xubGV0IHJlYyBqb2luID0gKH5yZXNvbHZlPWZhbHNlLCB+Zml4LCBjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCBqb2luJyA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCk7XG4gIHN3aXRjaCAodGVybV9vZih0eTEpLCB0ZXJtX29mKHR5MikpIHtcbiAgfCAoXywgUGFyZW5zKHR5MikpID0+IGpvaW4nKHR5MSwgdHkyKVxuICB8IChQYXJlbnModHkxKSwgXykgPT4gam9pbicodHkxLCB0eTIpXG4gIHwgKF8sIFVua25vd24oSG9sZShfKSkpIHdoZW4gZml4ID0+XG4gICAgLyogTk9URShhbmRyZXcpOiBUaGlzIGlzIGxvYWQgYmVhcmluZ1xuICAgICAgIGZvciBlbnN1cmluZyB0aGF0IGZ1bmN0aW9uIGxpdGVyYWxzIGdldCBhcHByb3ByaWF0ZVxuICAgICAgIGNhc3RzLiBEb2N1bWVudGF0aW9uL0R5bmFtaWNzIGhhcyByZWdyZXNzaW9uIHRlc3RzICovXG4gICAgU29tZSh0eTIpXG4gIHwgKFVua25vd24ocDEpLCBVbmtub3duKHAyKSkgPT5cbiAgICBTb21lKFVua25vd24oam9pbl90eXBlX3Byb3ZlbmFuY2UocDEsIHAyKSkgfD4gbWtfZmFzdClcbiAgfCAoVW5rbm93bihfKSwgXykgPT4gU29tZSh0eTIpXG4gIHwgKF8sIFVua25vd24oSW50ZXJuYWwgfCBTeW5Td2l0Y2gpKSA9PiBTb21lKHR5MSlcbiAgfCAoVmFyKG4xKSwgVmFyKG4yKSkgPT5cbiAgICBpZiAobjEgPT0gbjIpIHtcbiAgICAgIFNvbWUodHkxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0KiB0eTEgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjEpO1xuICAgICAgbGV0KiB0eTIgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjIpO1xuICAgICAgbGV0KyB0eV9qb2luID0gam9pbicodHkxLCB0eTIpO1xuICAgICAgIXJlc29sdmUgJiYgZXEodHkxLCB0eV9qb2luKSA/IHR5MSA6IHR5X2pvaW47XG4gICAgfVxuICB8IChWYXIobmFtZSksIF8pID0+XG4gICAgbGV0KiB0eV9uYW1lID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpO1xuICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5Mik7XG4gICAgIXJlc29sdmUgJiYgZXEodHlfbmFtZSwgdHlfam9pbikgPyB0eTEgOiB0eV9qb2luO1xuICB8IChfLCBWYXIobmFtZSkpID0+XG4gICAgbGV0KiB0eV9uYW1lID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpO1xuICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5MSk7XG4gICAgIXJlc29sdmUgJiYgZXEodHlfbmFtZSwgdHlfam9pbikgPyB0eTIgOiB0eV9qb2luO1xuICAvKiBOb3RlOiBPcmRlcmluZyBvZiBVbmtub3duLCBWYXIsIGFuZCBSZWMgYWJvdmUgaXMgbG9hZC1iZWFyaW5nISAqL1xuICB8IChSZWModHAxLCB0eTEpLCBSZWModHAyLCB0eTIpKSA9PlxuICAgIGxldCBjdHggPSBDdHguZXh0ZW5kX2R1bW15X3R2YXIoY3R4LCB0cDEpO1xuICAgIGxldCB0eTEnID1cbiAgICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh0cDIpKSB7XG4gICAgICB8IFNvbWUoeDIpID0+IHN1YnN0KFZhcih4MikgfD4gbWtfZmFzdCwgdHAxLCB0eTEpXG4gICAgICB8IE5vbmUgPT4gdHkxXG4gICAgICB9O1xuICAgIGxldCsgdHlfYm9keSA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCwgdHkxJywgdHkyKTtcbiAgICBSZWModHAxLCB0eV9ib2R5KSB8PiBta19mYXN0O1xuICB8IChSZWMoXyksIF8pID0+IE5vbmVcbiAgfCAoRm9yYWxsKHgxLCB0eTEpLCBGb3JhbGwoeDIsIHR5MikpID0+XG4gICAgbGV0IGN0eCA9IEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHgxKTtcbiAgICBsZXQgdHkxJyA9XG4gICAgICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQoeDIpKSB7XG4gICAgICB8IFNvbWUoeDIpID0+IHN1YnN0KFZhcih4MikgfD4gbWtfZmFzdCwgeDEsIHR5MSlcbiAgICAgIHwgTm9uZSA9PiB0eTFcbiAgICAgIH07XG4gICAgbGV0KyB0eV9ib2R5ID0gam9pbih+cmVzb2x2ZSwgfmZpeCwgY3R4LCB0eTEnLCB0eTIpO1xuICAgIEZvcmFsbCh4MSwgdHlfYm9keSkgfD4gbWtfZmFzdDtcbiAgLyogTm90ZSBmb3IgYWJvdmU6IHRoZXJlIGlzIG5vIGRhbmdlciBvZiBmcmVlIHZhcmlhYmxlIGNhcHR1cmUgYXNcbiAgICAgc3Vic3QgaXRzZWxmIHBlcmZvcm1zIGNhcHR1cmUgYXZvaWRpbmcgc3Vic3RpdHV0aW9uLiBIb3dldmVyIHRoaXNcbiAgICAgbWF5IGdlbmVyYXRlIGludGVybmFsIHR5cGUgdmFyaWFibGUgbmFtZXMgdGhhdCBpbiBjb3JuZXIgY2FzZXMgY2FuXG4gICAgIGJlIGV4cG9zZWQgdG8gdGhlIHVzZXIuIFdlIHByZXNlcnZlIHRoZSB2YXJpYWJsZSBuYW1lIG9mIHRoZVxuICAgICBzZWNvbmQgdHlwZSB0byBwcmVzZXJ2ZSBzeW50aGVzaXplZCB0eXBlIHZhcmlhYmxlIG5hbWVzLCB3aGljaFxuICAgICBjb21lIGZyb20gdXNlciBhbm5vdGF0aW9ucy4gKi9cbiAgfCAoRm9yYWxsKF8pLCBfKSA9PiBOb25lXG4gIHwgKEludCwgSW50KSA9PiBTb21lKHR5MSlcbiAgfCAoSW50LCBfKSA9PiBOb25lXG4gIHwgKEZsb2F0LCBGbG9hdCkgPT4gU29tZSh0eTEpXG4gIHwgKEZsb2F0LCBfKSA9PiBOb25lXG4gIHwgKEJvb2wsIEJvb2wpID0+IFNvbWUodHkxKVxuICB8IChCb29sLCBfKSA9PiBOb25lXG4gIHwgKFN0cmluZywgU3RyaW5nKSA9PiBTb21lKHR5MSlcbiAgfCAoU3RyaW5nLCBfKSA9PiBOb25lXG4gIHwgKEFycm93KHR5MSwgdHkyKSwgQXJyb3codHkxJywgdHkyJykpID0+XG4gICAgbGV0KiB0eTEgPSBqb2luJyh0eTEsIHR5MScpO1xuICAgIGxldCsgdHkyID0gam9pbicodHkyLCB0eTInKTtcbiAgICBBcnJvdyh0eTEsIHR5MikgfD4gbWtfZmFzdDtcbiAgfCAoQXJyb3coXyksIF8pID0+IE5vbmVcbiAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgPT5cbiAgICBsZXQqIHR5cyA9IExpc3RVdGlsLm1hcDJfb3B0KGpvaW4nLCB0eXMxLCB0eXMyKTtcbiAgICBsZXQrIHR5cyA9IE9wdFV0aWwuc2VxdWVuY2UodHlzKTtcbiAgICBQcm9kKHR5cykgfD4gbWtfZmFzdDtcbiAgfCAoUHJvZChfKSwgXykgPT4gTm9uZVxuICB8IChTdW0oc20xKSwgU3VtKHNtMikpID0+XG4gICAgbGV0KyBzbScgPSBDb25zdHJ1Y3Rvck1hcC5qb2luKGVxLCBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgpLCBzbTEsIHNtMik7XG4gICAgU3VtKHNtJykgfD4gbWtfZmFzdDtcbiAgfCAoU3VtKF8pLCBfKSA9PiBOb25lXG4gIHwgKExpc3QodHkxKSwgTGlzdCh0eTIpKSA9PlxuICAgIGxldCsgdHkgPSBqb2luJyh0eTEsIHR5Mik7XG4gICAgTGlzdCh0eSkgfD4gbWtfZmFzdDtcbiAgfCAoTGlzdChfKSwgXykgPT4gTm9uZVxuICB8IChBcChfKSwgXykgPT4gZmFpbHdpdGgoXCJUeXBlIGpvaW4gb2YgYXBcIilcbiAgfTtcbn07XG5cbi8qIFJFUVVJUkVTIE5PUk1BTElaRUQgVFlQRVNcbiAgIFJlbW92ZSBzeW5zd2l0Y2hlcyBmcm9tIHQxIGJ5IG1hY2hpbmcgYWdhaW5zdCB0MiAqL1xubGV0IHJlYyBtYXRjaF9zeW5zd2l0Y2ggPSAodDE6IHQsIHQyOiB0KSA9PiB7XG4gIGxldCAodGVybTEsIHJld3JhcDEpID0gdW53cmFwKHQxKTtcbiAgc3dpdGNoICh0ZXJtMSwgdGVybV9vZih0MikpIHtcbiAgfCAoUGFyZW5zKHQxKSwgXykgPT4gUGFyZW5zKG1hdGNoX3N5bnN3aXRjaCh0MSwgdDIpKSB8PiByZXdyYXAxXG4gIHwgKFVua25vd24oU3luU3dpdGNoKSwgXykgPT4gdDJcbiAgLy8gVGhlc2UgY2FzZXMgY2FuJ3QgaGF2ZSBhIHN5bnN3aXRjaCBpbnNpZGVcbiAgfCAoVW5rbm93bihfKSwgXylcbiAgfCAoSW50LCBfKVxuICB8IChGbG9hdCwgXylcbiAgfCAoQm9vbCwgXylcbiAgfCAoU3RyaW5nLCBfKVxuICB8IChWYXIoXyksIF8pXG4gIHwgKEFwKF8pLCBfKVxuICB8IChSZWMoXyksIF8pXG4gIHwgKEZvcmFsbChfKSwgXykgPT4gdDFcbiAgLy8gVGhlc2UgbWlnaHRcbiAgfCAoTGlzdCh0eTEpLCBMaXN0KHR5MikpID0+IExpc3QobWF0Y2hfc3luc3dpdGNoKHR5MSwgdHkyKSkgfD4gcmV3cmFwMVxuICB8IChMaXN0KF8pLCBfKSA9PiB0MVxuICB8IChBcnJvdyh0eTEsIHR5MiksIEFycm93KHR5MScsIHR5MicpKSA9PlxuICAgIEFycm93KG1hdGNoX3N5bnN3aXRjaCh0eTEsIHR5MScpLCBtYXRjaF9zeW5zd2l0Y2godHkyLCB0eTInKSkgfD4gcmV3cmFwMVxuICB8IChBcnJvdyhfKSwgXykgPT4gdDFcbiAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgd2hlbiBMaXN0Lmxlbmd0aCh0eXMxKSA9PSBMaXN0Lmxlbmd0aCh0eXMyKSA9PlxuICAgIGxldCB0eXMgPSBMaXN0Lm1hcDIobWF0Y2hfc3luc3dpdGNoLCB0eXMxLCB0eXMyKTtcbiAgICBQcm9kKHR5cykgfD4gcmV3cmFwMTtcbiAgfCAoUHJvZChfKSwgXykgPT4gdDFcbiAgfCAoU3VtKHNtMSksIFN1bShzbTIpKSA9PlxuICAgIGxldCBzbScgPSBDb25zdHJ1Y3Rvck1hcC5tYXRjaF9zeW5zd2l0Y2gobWF0Y2hfc3luc3dpdGNoLCBzbTEsIHNtMik7XG4gICAgU3VtKHNtJykgfD4gcmV3cmFwMTtcbiAgfCAoU3VtKF8pLCBfKSA9PiB0MVxuICB9O1xufTtcblxubGV0IGpvaW5fZml4ID0gam9pbih+Zml4PXRydWUpO1xuXG5sZXQgam9pbl9hbGwgPSAofmVtcHR5OiB0LCBjdHg6IEN0eC50LCB0czogbGlzdCh0KSk6IG9wdGlvbih0KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoYWNjLCB0eSkgPT4gT3B0VXRpbC5hbmRfdGhlbihqb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkpLCBhY2MpLFxuICAgIFNvbWUoZW1wdHkpLFxuICAgIHRzLFxuICApO1xuXG5sZXQgaXNfY29uc2lzdGVudCA9IChjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IGJvb2wgPT5cbiAgam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyKSAhPSBOb25lO1xuXG5sZXQgcmVjIHdlYWtfaGVhZF9ub3JtYWxpemUgPSAoY3R4OiBDdHgudCwgdHk6IHQpOiB0ID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBWYXIoeCkgPT5cbiAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgIHwgU29tZSh0eSkgPT4gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KVxuICAgIHwgTm9uZSA9PiB0eVxuICAgIH1cbiAgfCBfID0+IHR5XG4gIH07XG5cbmxldCByZWMgbm9ybWFsaXplID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogdCA9PiB7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IHVud3JhcCh0eSk7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgfCBTb21lKHR5KSA9PiBub3JtYWxpemUoY3R4LCB0eSlcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiB0eVxuICB8IFBhcmVucyh0KSA9PiB0XG4gIHwgTGlzdCh0KSA9PiBMaXN0KG5vcm1hbGl6ZShjdHgsIHQpKSB8PiByZXdyYXBcbiAgfCBBcCh0MSwgdDIpID0+IEFwKG5vcm1hbGl6ZShjdHgsIHQxKSwgbm9ybWFsaXplKGN0eCwgdDIpKSB8PiByZXdyYXBcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgQXJyb3cobm9ybWFsaXplKGN0eCwgdDEpLCBub3JtYWxpemUoY3R4LCB0MikpIHw+IHJld3JhcFxuICB8IFByb2QodHMpID0+IFByb2QoTGlzdC5tYXAobm9ybWFsaXplKGN0eCksIHRzKSkgfD4gcmV3cmFwXG4gIHwgU3VtKHRzKSA9PlxuICAgIFN1bShDb25zdHJ1Y3Rvck1hcC5tYXAoT3B0aW9uLm1hcChub3JtYWxpemUoY3R4KSksIHRzKSkgfD4gcmV3cmFwXG4gIHwgUmVjKHRwYXQsIHR5KSA9PlxuICAgIC8qIE5PVEU6IER1bW15IHR2YXIgYWRkZWQgaGFzIGZha2UgaWQgYnV0IHNob3VsZG4ndCBtYXR0ZXJcbiAgICAgICBhcyBpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uIFJlY3MgZG8gbm90IG9jY3VyIGluIHRoZVxuICAgICAgIHN1cmZhY2Ugc3ludGF4LCBzbyB3ZSB3b24ndCB0cnkgdG8ganVtcCB0byB0aGVtLiAqL1xuICAgIFJlYyh0cGF0LCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgdHBhdCksIHR5KSkgfD4gcmV3cmFwXG4gIHwgRm9yYWxsKG5hbWUsIHR5KSA9PlxuICAgIEZvcmFsbChuYW1lLCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgbmFtZSksIHR5KSkgfD4gcmV3cmFwXG4gIH07XG59O1xuXG5sZXQgbWF0Y2hlZF9hcnJvdyA9IChjdHgsIHR5KSA9PlxuICBzd2l0Y2ggKHRlcm1fb2Yod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpIHtcbiAgfCBBcnJvdyh0eV9pbiwgdHlfb3V0KSA9PiAodHlfaW4sIHR5X291dClcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gKFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QsXG4gICAgICBVbmtub3duKFN5blN3aXRjaCkgfD4gbWtfZmFzdCxcbiAgICApXG4gIHwgXyA9PiAoVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdCwgVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdClcbiAgfTtcblxubGV0IG1hdGNoZWRfZm9yYWxsID0gKGN0eCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IEZvcmFsbCh0LCB0eSkgPT4gKFNvbWUodCksIHR5KVxuICB8IFVua25vd24oU3luU3dpdGNoKSA9PiAoTm9uZSwgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QpXG4gIHwgXyA9PiAoTm9uZSwgVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdClcbiAgfTtcblxubGV0IG1hdGNoZWRfcHJvZCA9IChjdHgsIGxlbmd0aCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IFByb2QodHlzKSB3aGVuIExpc3QubGVuZ3RoKHR5cykgPT0gbGVuZ3RoID0+IHR5c1xuICB8IFVua25vd24oU3luU3dpdGNoKSA9PlxuICAgIExpc3QuaW5pdChsZW5ndGgsIF8gPT4gVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QpXG4gIHwgXyA9PiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3QpXG4gIH07XG5cbmxldCBtYXRjaGVkX2xpc3QgPSAoY3R4LCB0eSkgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSkpKSB7XG4gIHwgTGlzdCh0eSkgPT4gdHlcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3RcbiAgfCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3RcbiAgfTtcblxubGV0IG1hdGNoZWRfYXJncyA9IChjdHgsIGRlZmF1bHRfYXJpdHksIHR5KSA9PiB7XG4gIGxldCB0eScgPSB3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpO1xuICBzd2l0Y2ggKHRlcm1fb2YodHknKSkge1xuICB8IFByb2QoW18sIC4uLl9dIGFzIHR5cykgPT4gdHlzXG4gIHwgVW5rbm93bihfKSA9PiBMaXN0LmluaXQoZGVmYXVsdF9hcml0eSwgXyA9PiB0eScpXG4gIHwgXyA9PiBbdHknXVxuICB9O1xufTtcblxubGV0IGdldF9zdW1fY29uc3RydWN0b3JzID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogb3B0aW9uKHN1bV9tYXApID0+IHtcbiAgbGV0IHR5ID0gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KTtcbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgfCBSZWMoXykgPT5cbiAgICAvKiBOb3RlOiBXZSBtdXN0IHVucm9sbCBoZXJlIHRvIGdldCByaWdodCBjdHIgdHlwZXM7XG4gICAgICAgb3RoZXJ3aXNlIHRoZSByZWMgcGFyYW1ldGVyIHdpbGwgbGVhay4gSG93ZXZlciwgc2VlaW5nXG4gICAgICAgYXMgc3Vic3RpdHV0aW9uIGlzIHRvbyBleHBlbnNpdmUgdG8gYmUgdXNlZCBoZXJlLCB3ZVxuICAgICAgIGN1cnJlbnRseSBtYWtpbmcgdGhlIG9wdGltaXphdGlvbiB0aGF0LCBzaW5jZSBhbGxcbiAgICAgICByZWN1cnNpdmUgdHlwZXMgYXJlIHR5cGUgYWxpc2VzIHdoaWNoIHVzZSB0aGUgYWxpYXMgbmFtZVxuICAgICAgIGFzIHRoZSByZWN1cnNpdmUgcGFyYW1ldGVyLCBhbmQgdHlwZSBhbGlhc2VzIGNhbm5vdCBiZVxuICAgICAgIHNoYWRvd2VkLCBpdCBpcyBzYWZlIHRvIHNpbXBseSByZW1vdmUgdGhlIFJlYyBjb25zdHJ1Y3RvcixcbiAgICAgICBwcm92aWRlZCB3ZSBoYXZlbid0IGVzY2FwZWQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIGFsaWFzXG4gICAgICAgaXMgYm91bmQuIElmIGVpdGhlciBvZiB0aGUgYWJvdmUgYXNzdW1wdGlvbnMgYmVjb21lIGludmFsaWQsXG4gICAgICAgdGhlIGJlbG93IGNvZGUgd2lsbCBiZSBpbmNvcnJlY3QhICovXG4gICAgbGV0IHR5ID1cbiAgICAgIHN3aXRjaCAodHkgfD4gdGVybV9vZikge1xuICAgICAgfCBSZWMoe3Rlcm06IFZhcih4KSwgX30sIHR5X2JvZHkpID0+XG4gICAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgICAgIHwgTm9uZSA9PiB1bnJvbGwodHkpXG4gICAgICAgIHwgU29tZShfKSA9PiB0eV9ib2R5XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiB0eVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHR5IHw+IHRlcm1fb2YpIHtcbiAgICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgaXNfdW5rbm93biA9ICh0eTogdCk6IGJvb2wgPT5cbiAgc3dpdGNoICh0eSB8PiB0ZXJtX29mKSB7XG4gIHwgVW5rbm93bihfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG4vKiBEb2VzIHRoZSB0eXBlIHJlcXVpcmUgcGFyZW50aGVzZXMgd2hlbiBvbiB0aGUgbGVmdCBvZiBhbiBhcnJvdyBmb3IgcHJpbnRpbmc/ICovXG5sZXQgcmVjIG5lZWRzX3BhcmVucyA9ICh0eTogdCk6IGJvb2wgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFBhcmVucyh0eSkgPT4gbmVlZHNfcGFyZW5zKHR5KVxuICB8IEFwKF8pXG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgU3RyaW5nXG4gIHwgQm9vbFxuICB8IFZhcihfKSA9PiBmYWxzZVxuICB8IFJlYyhfLCBfKVxuICB8IEZvcmFsbChfLCBfKSA9PiB0cnVlXG4gIHwgTGlzdChfKSA9PiBmYWxzZSAvKiBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gW10gKi9cbiAgfCBBcnJvdyhfLCBfKSA9PiB0cnVlXG4gIHwgUHJvZChfKVxuICB8IFN1bShfKSA9PiB0cnVlIC8qIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIChBICsgQikgLT4gQyBhbmQgQSArIChCIC0+IEMpICovXG4gIH07XG5cbmxldCBwcmV0dHlfcHJpbnRfdHZhciA9ICh0djogVFBhdC50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAoSWRUYWdnZWQudGVybV9vZih0dikpIHtcbiAgfCBWYXIoeCkgPT4geFxuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXykgPT4gXCI/XCJcbiAgfTtcblxuLyogRXNzZW50aWFsbHkgcmVjcmVhdGVzIGhhejNsd2ViL3ZpZXcvVHlwZS5yZSdzIHZpZXdfdHkgYnV0IHdpdGggc3RyaW5nIG91dHB1dCAqL1xubGV0IHJlYyBwcmV0dHlfcHJpbnQgPSAodHk6IHQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFBhcmVucyh0eSkgPT4gcHJldHR5X3ByaW50KHR5KVxuICB8IEFwKF8pXG4gIHwgVW5rbm93bihfKSA9PiBcIj9cIlxuICB8IEludCA9PiBcIkludFwiXG4gIHwgRmxvYXQgPT4gXCJGbG9hdFwiXG4gIHwgQm9vbCA9PiBcIkJvb2xcIlxuICB8IFN0cmluZyA9PiBcIlN0cmluZ1wiXG4gIHwgVmFyKHR2YXIpID0+IHR2YXJcbiAgfCBMaXN0KHQpID0+IFwiW1wiICsrIHByZXR0eV9wcmludCh0KSArKyBcIl1cIlxuICB8IEFycm93KHQxLCB0MikgPT4gcGFyZW5fcHJldHR5X3ByaW50KHQxKSArKyBcIi0+XCIgKysgcHJldHR5X3ByaW50KHQyKVxuICB8IFN1bShzbSkgPT5cbiAgICBzd2l0Y2ggKHNtKSB7XG4gICAgfCBbXSA9PiBcIis/XCJcbiAgICB8IFt0MF0gPT4gXCIrXCIgKysgY3RyX3ByZXR0eV9wcmludCh0MClcbiAgICB8IFt0MCwgLi4udHNdID0+XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKGFjYywgdCkgPT4gYWNjICsrIFwiK1wiICsrIGN0cl9wcmV0dHlfcHJpbnQodCksXG4gICAgICAgIGN0cl9wcmV0dHlfcHJpbnQodDApLFxuICAgICAgICB0cyxcbiAgICAgIClcbiAgICB9XG4gIHwgUHJvZChbXSkgPT4gXCIoKVwiXG4gIHwgUHJvZChbdDAsIC4uLnRzXSkgPT5cbiAgICBcIihcIlxuICAgICsrIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgdCkgPT4gYWNjICsrIFwiLCBcIiArKyBwcmV0dHlfcHJpbnQodCksXG4gICAgICAgICBwcmV0dHlfcHJpbnQodDApLFxuICAgICAgICAgdHMsXG4gICAgICAgKVxuICAgICsrIFwiKVwiXG4gIHwgUmVjKHR2LCB0KSA9PiBcInJlYyBcIiArKyBwcmV0dHlfcHJpbnRfdHZhcih0dikgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0KVxuICB8IEZvcmFsbCh0diwgdCkgPT5cbiAgICBcImZvcmFsbCBcIiArKyBwcmV0dHlfcHJpbnRfdHZhcih0dikgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0KVxuICB9XG5hbmQgY3RyX3ByZXR0eV9wcmludCA9XG4gIGZ1blxuICB8IENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoY3RyLCBfLCBOb25lKSA9PiBjdHJcbiAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgU29tZSh0KSkgPT5cbiAgICBjdHIgKysgXCIoXCIgKysgcHJldHR5X3ByaW50KHQpICsrIFwiKVwiXG4gIHwgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkoXykgPT4gXCI/XCJcbmFuZCBwYXJlbl9wcmV0dHlfcHJpbnQgPSB0eXAgPT5cbiAgaWYgKG5lZWRzX3BhcmVucyh0eXApKSB7XG4gICAgXCIoXCIgKysgcHJldHR5X3ByaW50KHR5cCkgKysgXCIpXCI7XG4gIH0gZWxzZSB7XG4gICAgcHJldHR5X3ByaW50KHR5cCk7XG4gIH07XG4iLCJbQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBWYXJNYXAudF8oVHlwLnQpO1xuaW5jbHVkZSBWYXJNYXA7XG4iLCJtb2R1bGUgUGF0ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBXaWxkXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBDb25zXG4gICAgfCBWYXJcbiAgICB8IFR1cGxlXG4gICAgfCBQYXJlbnNcbiAgICB8IEFwXG4gICAgfCBDYXN0O1xuXG4gIGluY2x1ZGUgVGVybUJhc2UuUGF0O1xuXG4gIGxldCByZXBfaWQgPSAoe2lkcywgX306IHQpID0+IHtcbiAgICBhc3NlcnQoaWRzICE9IFtdKTtcbiAgICBMaXN0LmhkKGlkcyk7XG4gIH07XG5cbiAgbGV0IHRlcm1fb2Y6IHQgPT4gVGVybUJhc2UuUGF0LnRlcm0gPSBJZFRhZ2dlZC50ZXJtX29mO1xuXG4gIGxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5cbiAgbGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcblxuICBsZXQgaG9sZSA9ICh0bXM6IGxpc3QoVGVybUJhc2UuQW55LnQpKSA9PlxuICAgIHN3aXRjaCAodG1zKSB7XG4gICAgfCBbXSA9PiBFbXB0eUhvbGVcbiAgICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICAgIH07XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IFdpbGQgPT4gV2lsZFxuICAgIHwgSW50KF8pID0+IEludFxuICAgIHwgRmxvYXQoXykgPT4gRmxvYXRcbiAgICB8IEJvb2woXykgPT4gQm9vbFxuICAgIHwgU3RyaW5nKF8pID0+IFN0cmluZ1xuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgQ29ucyhfKSA9PiBDb25zXG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBUdXBsZShfKSA9PiBUdXBsZVxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQXAoXykgPT4gQXBcbiAgICB8IENhc3QoXykgPT4gQ2FzdDtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgcGF0dGVyblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gcGF0dGVyblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBwYXR0ZXJuIGhvbGVcIlxuICAgIHwgV2lsZCA9PiBcIldpbGRjYXJkXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgQm9vbCA9PiBcIkJvb2xlYW4gbGl0ZXJhbFwiXG4gICAgfCBTdHJpbmcgPT4gXCJTdHJpbmcgbGl0ZXJhbFwiXG4gICAgfCBMaXN0TGl0ID0+IFwiTGlzdCBsaXRlcmFsXCJcbiAgICB8IENvbnN0cnVjdG9yID0+IFwiQ29uc3RydWN0b3JcIlxuICAgIHwgQ29ucyA9PiBcIkNvbnNcIlxuICAgIHwgVmFyID0+IFwiVmFyaWFibGUgYmluZGluZ1wiXG4gICAgfCBUdXBsZSA9PiBcIlR1cGxlXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgcGF0dGVyblwiXG4gICAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgICB8IENhc3QgPT4gXCJBbm5vdGF0aW9uXCI7XG5cbiAgbGV0IHJlYyBpc192YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdClcbiAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBpc192YXIocGF0KVxuICAgIHwgVmFyKF8pID0+IHRydWVcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFR1cGxlKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgaXNfZnVuX3ZhciA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgfCBQYXJlbnMocGF0KSA9PiBpc19mdW5fdmFyKHBhdClcbiAgICB8IENhc3QocGF0LCB0eXAsIF8pID0+XG4gICAgICBpc192YXIocGF0KSAmJiAoVVR5cC5pc19hcnJvdyh0eXApIHx8IFR5cC5pc19mb3JhbGwodHlwKSlcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl9hcnJvd3MgPSAocGF0OiB0KSA9PlxuICAgIGlzX2Z1bl92YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfdHVwbGVfb2ZfYXJyb3dzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT4gcGF0cyB8PiBMaXN0LmZvcl9hbGwoaXNfZnVuX3ZhcilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgfCBBcChfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl92YXJzID0gKHBhdDogdCkgPT5cbiAgICBpc192YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdClcbiAgICAgIHwgQ2FzdChwYXQsIF8sIF8pID0+IGlzX3R1cGxlX29mX3ZhcnMocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PiBwYXRzIHw+IExpc3QuZm9yX2FsbChpc192YXIpXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBXaWxkXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IENvbnMoXywgXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgICB9XG4gICAgKTtcblxuICBsZXQgcmVjIGdldF92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X3ZhcihwYXQpXG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgQ2FzdCh4LCBfLCBfKSA9PiBnZXRfdmFyKHgpXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IE5vbmVcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgZ2V0X2Z1bl92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X2Z1bl92YXIocGF0KVxuICAgIHwgQ2FzdChwYXQsIHQxLCBfKSA9PlxuICAgICAgaWYgKFR5cC5pc19hcnJvdyh0MSkgfHwgVVR5cC5pc19mb3JhbGwodDEpKSB7XG4gICAgICAgIGdldF92YXIocGF0KSB8PiBPcHRpb24ubWFwKHZhciA9PiB2YXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9udW1fb2ZfdmFycyA9IChwYXQ6IHQpID0+XG4gICAgaWYgKGlzX3ZhcihwYXQpKSB7XG4gICAgICBTb21lKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhwYXQpXG4gICAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBnZXRfbnVtX29mX3ZhcnMocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PlxuICAgICAgICBpc190dXBsZV9vZl92YXJzKHBhdCkgPyBTb21lKExpc3QubGVuZ3RoKHBhdHMpKSA6IE5vbmVcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgIHwgQXAoXykgPT4gTm9uZVxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBjdHJfbmFtZSA9IChwOiB0KTogb3B0aW9uKENvbnN0cnVjdG9yLnQpID0+XG4gICAgc3dpdGNoIChwLnRlcm0pIHtcbiAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IFNvbWUobmFtZSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG59O1xuXG5tb2R1bGUgRXhwID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLkV4cDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBTdGF0aWNFcnJvckhvbGVcbiAgICB8IER5bmFtaWNFcnJvckhvbGVcbiAgICB8IEZhaWxlZENhc3RcbiAgICB8IERlZmVycmFsXG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBGdW5cbiAgICB8IFR5cEZ1blxuICAgIHwgVHVwbGVcbiAgICB8IFZhclxuICAgIHwgTWV0YVZhclxuICAgIHwgTGV0XG4gICAgfCBGaXhGXG4gICAgfCBUeUFsaWFzXG4gICAgfCBBcFxuICAgIHwgVHlwQXBcbiAgICB8IERlZmVycmVkQXBcbiAgICB8IFBpcGVsaW5lXG4gICAgfCBJZlxuICAgIHwgU2VxXG4gICAgfCBUZXN0XG4gICAgfCBGaWx0ZXJcbiAgICB8IENsb3N1cmVcbiAgICB8IFBhcmVuc1xuICAgIHwgQ29uc1xuICAgIHwgVW5PcChPcGVyYXRvcnMub3BfdW4pXG4gICAgfCBCaW5PcChPcGVyYXRvcnMub3BfYmluKVxuICAgIHwgQnVpbHRpbkZ1blxuICAgIHwgTWF0Y2hcbiAgICB8IENhc3RcbiAgICB8IExpc3RDb25jYXQ7XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSk6IHRlcm0gPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCByZXBfaWQ6IHQgPT4gSWQudCA9IElkVGFnZ2VkLnJlcF9pZDtcbiAgbGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcbiAgbGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG4gIGxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IER5bmFtaWNFcnJvckhvbGUoXykgPT4gRHluYW1pY0Vycm9ySG9sZVxuICAgIHwgRmFpbGVkQ2FzdChfKSA9PiBGYWlsZWRDYXN0XG4gICAgfCBEZWZlcnJhbChfKSA9PiBEZWZlcnJhbFxuICAgIHwgQm9vbChfKSA9PiBCb29sXG4gICAgfCBJbnQoXykgPT4gSW50XG4gICAgfCBGbG9hdChfKSA9PiBGbG9hdFxuICAgIHwgU3RyaW5nKF8pID0+IFN0cmluZ1xuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgRnVuKF8pID0+IEZ1blxuICAgIHwgVHlwRnVuKF8pID0+IFR5cEZ1blxuICAgIHwgVHVwbGUoXykgPT4gVHVwbGVcbiAgICB8IFZhcihfKSA9PiBWYXJcbiAgICB8IExldChfKSA9PiBMZXRcbiAgICB8IEZpeEYoXykgPT4gRml4RlxuICAgIHwgVHlBbGlhcyhfKSA9PiBUeUFsaWFzXG4gICAgfCBBcChfKSA9PiBBcFxuICAgIHwgVHlwQXAoXykgPT4gVHlwQXBcbiAgICB8IERlZmVycmVkQXAoXykgPT4gRGVmZXJyZWRBcFxuICAgIHwgSWYoXykgPT4gSWZcbiAgICB8IFNlcShfKSA9PiBTZXFcbiAgICB8IFRlc3QoXykgPT4gVGVzdFxuICAgIHwgRmlsdGVyKF8pID0+IEZpbHRlclxuICAgIHwgQ2xvc3VyZShfKSA9PiBDbG9zdXJlXG4gICAgfCBQYXJlbnMoXykgPT4gUGFyZW5zXG4gICAgfCBDb25zKF8pID0+IENvbnNcbiAgICB8IExpc3RDb25jYXQoXykgPT4gTGlzdENvbmNhdFxuICAgIHwgVW5PcChvcCwgXykgPT4gVW5PcChvcClcbiAgICB8IEJpbk9wKG9wLCBfLCBfKSA9PiBCaW5PcChvcClcbiAgICB8IEJ1aWx0aW5GdW4oXykgPT4gQnVpbHRpbkZ1blxuICAgIHwgTWF0Y2goXykgPT4gTWF0Y2hcbiAgICB8IENhc3QoXykgPT4gQ2FzdDtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgZXhwcmVzc2lvblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gZXhwcmVzc2lvblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBleHByZXNzaW9uIGhvbGVcIlxuICAgIHwgU3RhdGljRXJyb3JIb2xlID0+IFwiU3RhdGljIGVycm9yIGhvbGVcIlxuICAgIHwgRHluYW1pY0Vycm9ySG9sZSA9PiBcIkR5bmFtaWMgZXJyb3IgaG9sZVwiXG4gICAgfCBGYWlsZWRDYXN0ID0+IFwiRmFpbGVkIGNhc3RcIlxuICAgIHwgRGVmZXJyYWwgPT4gXCJEZWZlcnJhbFwiXG4gICAgfCBCb29sID0+IFwiQm9vbGVhbiBsaXRlcmFsXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgU3RyaW5nID0+IFwiU3RyaW5nIGxpdGVyYWxcIlxuICAgIHwgTGlzdExpdCA9PiBcIkxpc3QgbGl0ZXJhbFwiXG4gICAgfCBDb25zdHJ1Y3RvciA9PiBcIkNvbnN0cnVjdG9yXCJcbiAgICB8IEZ1biA9PiBcIkZ1bmN0aW9uIGxpdGVyYWxcIlxuICAgIHwgVHlwRnVuID0+IFwiVHlwZSBGdW5jdGlvbiBMaXRlcmFsXCJcbiAgICB8IFR1cGxlID0+IFwiVHVwbGUgbGl0ZXJhbFwiXG4gICAgfCBWYXIgPT4gXCJWYXJpYWJsZSByZWZlcmVuY2VcIlxuICAgIHwgTWV0YVZhciA9PiBcIk1ldGEgdmFyaWFibGUgcmVmZXJlbmNlXCJcbiAgICB8IExldCA9PiBcIkxldCBleHByZXNzaW9uXCJcbiAgICB8IEZpeEYgPT4gXCJGaXhwb2ludCBvcGVyYXRvclwiXG4gICAgfCBUeUFsaWFzID0+IFwiVHlwZSBBbGlhcyBkZWZpbml0aW9uXCJcbiAgICB8IEFwID0+IFwiQXBwbGljYXRpb25cIlxuICAgIHwgVHlwQXAgPT4gXCJUeXBlIGFwcGxpY2F0aW9uXCJcbiAgICB8IERlZmVycmVkQXAgPT4gXCJQYXJ0aWFsIEFwcGxpY2F0aW9uXCJcbiAgICB8IFBpcGVsaW5lID0+IFwiUGlwZWxpbmUgZXhwcmVzc2lvblwiXG4gICAgfCBJZiA9PiBcIklmIGV4cHJlc3Npb25cIlxuICAgIHwgU2VxID0+IFwiU2VxdWVuY2UgZXhwcmVzc2lvblwiXG4gICAgfCBUZXN0ID0+IFwiVGVzdFwiXG4gICAgfCBGaWx0ZXIgPT4gXCJGaWx0ZXJcIlxuICAgIHwgQ2xvc3VyZSA9PiBcIkNsb3N1cmVcIlxuICAgIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCBleHByZXNzaW9uXCJcbiAgICB8IENvbnMgPT4gXCJDb25zXCJcbiAgICB8IExpc3RDb25jYXQgPT4gXCJMaXN0IENvbmNhdGVuYXRpb25cIlxuICAgIHwgQmluT3Aob3ApID0+IE9wZXJhdG9ycy5zaG93X2Jpbm9wKG9wKVxuICAgIHwgVW5PcChvcCkgPT4gT3BlcmF0b3JzLnNob3dfdW5vcChvcClcbiAgICB8IEJ1aWx0aW5GdW4gPT4gXCJCdWlsdC1pbiBGdW5jdGlvblwiXG4gICAgfCBNYXRjaCA9PiBcIkNhc2UgZXhwcmVzc2lvblwiXG4gICAgfCBDYXN0ID0+IFwiQ2FzdCBleHByZXNzaW9uXCI7XG5cbiAgLy8gVHlwZnVuIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgZnVuY3Rpb24gaGVyZSBhcyB0aGlzIGlzIG9ubHkgdXNlZCB0b1xuICAvLyBkZXRlcm1pbmUgd2hlbiB0byBhbGxvdyBmb3IgcmVjdXJzaXZlIGRlZmluaXRpb25zIGluIGEgbGV0IGJpbmRpbmcuXG4gIGxldCByZWMgaXNfZnVuID0gKGU6IHQpID0+IHtcbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgUGFyZW5zKGUpID0+IGlzX2Z1bihlKVxuICAgIHwgQ2FzdChlLCBfLCBfKSA9PiBpc19mdW4oZSlcbiAgICB8IFR5cEZ1bihfKVxuICAgIHwgRnVuKF8pXG4gICAgfCBCdWlsdGluRnVuKF8pID0+IHRydWVcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgfCBEZWZlcnJhbChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBMZXQoXylcbiAgICB8IEZpeEYoXylcbiAgICB8IFR5QWxpYXMoXylcbiAgICB8IEFwKF8pXG4gICAgfCBUeXBBcChfKVxuICAgIHwgRGVmZXJyZWRBcChfKVxuICAgIHwgSWYoXylcbiAgICB8IFNlcShfKVxuICAgIHwgVGVzdChfKVxuICAgIHwgRmlsdGVyKF8pXG4gICAgfCBDb25zKF8pXG4gICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgfCBDbG9zdXJlKF8pXG4gICAgfCBVbk9wKF8pXG4gICAgfCBCaW5PcChfKVxuICAgIHwgTWF0Y2goXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX3R1cGxlX29mX2Z1bmN0aW9ucyA9IChlOiB0KSA9PlxuICAgIGlzX2Z1bihlKVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IENhc3QoZSwgXywgXylcbiAgICAgIHwgUGFyZW5zKGUpID0+IGlzX3R1cGxlX29mX2Z1bmN0aW9ucyhlKVxuICAgICAgfCBUdXBsZShlcykgPT4gZXMgfD4gTGlzdC5mb3JfYWxsKGlzX2Z1bilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgICAgIHwgRmFpbGVkQ2FzdChfKVxuICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVHlwRnVuKF8pXG4gICAgICB8IENsb3N1cmUoXylcbiAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgTGV0KF8pXG4gICAgICB8IEZpeEYoXylcbiAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgfCBBcChfKVxuICAgICAgfCBUeXBBcChfKVxuICAgICAgfCBEZWZlcnJlZEFwKF8pXG4gICAgICB8IElmKF8pXG4gICAgICB8IFNlcShfKVxuICAgICAgfCBUZXN0KF8pXG4gICAgICB8IEZpbHRlcihfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IGN0cl9uYW1lID0gKGU6IHQpOiBvcHRpb24oQ29uc3RydWN0b3IudCkgPT5cbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT4gU29tZShuYW1lKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgaXNfZGVmZXJyYWwgPSAoZTogdCkgPT4ge1xuICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgfCBEZWZlcnJhbChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9udW1fb2ZfZnVuY3Rpb25zID0gKGU6IHQpID0+XG4gICAgaWYgKGlzX2Z1bihlKSkge1xuICAgICAgU29tZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKGUpID0+IGdldF9udW1fb2ZfZnVuY3Rpb25zKGUpXG4gICAgICB8IFR1cGxlKGVzKSA9PiBpc190dXBsZV9vZl9mdW5jdGlvbnMoZSkgPyBTb21lKExpc3QubGVuZ3RoKGVzKSkgOiBOb25lXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgIHwgRml4RihfKVxuICAgICAgfCBDbG9zdXJlKF8pXG4gICAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVHlwRnVuKF8pXG4gICAgICB8IFZhcihfKVxuICAgICAgfCBMZXQoXylcbiAgICAgIHwgRmlsdGVyKF8pXG4gICAgICB8IFR5QWxpYXMoXylcbiAgICAgIHwgQXAoXylcbiAgICAgIHwgVHlwQXAoXylcbiAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgfCBJZihfKVxuICAgICAgfCBTZXEoXylcbiAgICAgIHwgVGVzdChfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBOb25lXG4gICAgICB9O1xuICAgIH07XG59O1xuXG5tb2R1bGUgUnVsID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLlJ1bDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IFJ1bGU7XG5cbiAgLy8gZXhhbXBsZSBvZiBhd2t3YXJkbmVzcyBpbmR1Y2VkIGJ5IGhhdmluZyBmb3JtcyBsaWtlIHJ1bGVzXG4gIC8vIHRoYXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQtc29ydGVkIGNoaWxkIHdpdGggbm8gZGVsaW1pdGVyc1xuICAvLyAoZWcgc2NydXQgd2l0aCBubyBydWxlcylcbiAgbGV0IGlkcyA9ICh+YW55X2lkcywge2lkcywgdGVybSwgX306IHQpID0+XG4gICAgc3dpdGNoIChpZHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiBpZHNcbiAgICB8IFtdID0+XG4gICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgIHwgSG9sZShbdG0sIC4uLl9dKSA9PiBhbnlfaWRzKHRtKVxuICAgICAgfCBSdWxlcyhzY3J1dCwgW10pID0+IHNjcnV0Lmlkc1xuICAgICAgfCBfID0+IFtdXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgcmVwX2lkID0gKH5hbnlfaWRzLCB0bSkgPT5cbiAgICBzd2l0Y2ggKGlkcyh+YW55X2lkcywgdG0pKSB7XG4gICAgfCBbXSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVUV4cC5yZXBfaWRcIikpXG4gICAgfCBbaWQsIC4uLl9dID0+IGlkXG4gICAgfTtcbn07XG5cbm1vZHVsZSBBbnkgPSB7XG4gIGluY2x1ZGUgVGVybUJhc2UuQW55O1xuXG4gIGxldCBpc19leHA6IHQgPT4gb3B0aW9uKFRlcm1CYXNlLkV4cC50KSA9XG4gICAgZnVuXG4gICAgfCBFeHAoZSkgPT4gU29tZShlKVxuICAgIHwgXyA9PiBOb25lO1xuICBsZXQgaXNfcGF0OiB0ID0+IG9wdGlvbihUZXJtQmFzZS5QYXQudCkgPVxuICAgIGZ1blxuICAgIHwgUGF0KHApID0+IFNvbWUocClcbiAgICB8IF8gPT4gTm9uZTtcbiAgbGV0IGlzX3R5cDogdCA9PiBvcHRpb24oVGVybUJhc2UuVHlwLnQpID1cbiAgICBmdW5cbiAgICB8IFR5cCh0KSA9PiBTb21lKHQpXG4gICAgfCBfID0+IE5vbmU7XG5cbiAgbGV0IHJlYyBpZHMgPVxuICAgIGZ1blxuICAgIHwgRXhwKHRtKSA9PiB0bS5pZHNcbiAgICB8IFBhdCh0bSkgPT4gdG0uaWRzXG4gICAgfCBUeXAodG0pID0+IHRtLmlkc1xuICAgIHwgVFBhdCh0bSkgPT4gdG0uaWRzXG4gICAgfCBSdWwodG0pID0+IFJ1bC5pZHMofmFueV9pZHM9aWRzLCB0bSlcbiAgICB8IE51bCAoKVxuICAgIHwgQW55ICgpID0+IFtdO1xuXG4gIC8vIFRlcm1zIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIHRpbGVzLCBlZyB0aGUgY29tbWFzIGluIGFuIG4tdHVwbGUsXG4gIC8vIHRoZSBydWxlcyBvZiBhIGNhc2UgZXhwcmVzc2lvbiArIHRoZSBzdXJyb3VuZGluZyBjYXNlLWVuZCB0aWxlLFxuICAvLyB0aGUgbGlzdCBicmFja2V0cyB0aWxlIGNvdXBsZWQgd2l0aCB0aGUgZWxlbS1zZXBhcmF0aW5nIGNvbW1hcy5cbiAgLy8gVGhlIF9yZXByZXNlbnRhdGl2ZSBpZF8gaXMgdGhlIGNhbm9uaWNhbCB0aWxlIGlkIHVzZWQgdG8gaWRlbnRpZnlcbiAgLy8gYW5kIGxvb2sgdXAgaW5mbyBhYm91dCBhIHRlcm0uXG4gIC8vXG4gIC8vIEluIGluc3RhbmNlcyBsaWtlIGNhc2UgZXhwcmVzc2lvbnMgYW5kIGxpc3QgbGl0ZXJhbHMsIHdoZXJlIGEgcGFyZW50XG4gIC8vIHRpbGUgc3Vycm91bmRzIHRoZSBvdGhlciB0aWxlcywgdGhlIHJlcHJlc2VudGF0aXZlIGlkIGlzIHRoZSBwYXJlbnQgdGlsZSdzLlxuICAvLyBJbiBvdGhlciBpbnN0YW5jZXMgbGlrZSBuLXR1cGxlcywgd2hlcmUgdGhlIGNvbW1hcyBhcmUgYWxsIHNpYmxpbmdzLFxuICAvLyB0aGUgcmVwcmVzZW50YXRpdmUgaWQgaXMgb25lIG9mIHRoZSBjb21tYSBpZHMsIHVuc3BlY2lmaWVkIHdoaWNoIG9uZS5cbiAgLy8gKFRoaXMgd291bGQgY2hhbmdlIGZvciBuLXR1cGxlcyBpZiB3ZSBkZWNpZGVkIHBhcmVudGhlc2VzIGFyZSBuZWNlc3NhcnkuKVxuICBsZXQgcmVwX2lkID1cbiAgICBmdW5cbiAgICB8IEV4cCh0bSkgPT4gRXhwLnJlcF9pZCh0bSlcbiAgICB8IFBhdCh0bSkgPT4gUGF0LnJlcF9pZCh0bSlcbiAgICB8IFR5cCh0bSkgPT4gVHlwLnJlcF9pZCh0bSlcbiAgICB8IFRQYXQodG0pID0+IFRQYXQucmVwX2lkKHRtKVxuICAgIHwgUnVsKHRtKSA9PiBSdWwucmVwX2lkKH5hbnlfaWRzPWlkcywgdG0pXG4gICAgfCBOdWwgKClcbiAgICB8IEFueSAoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVGVybS5yZXBfaWRcIikpO1xufTtcbiIsIi8qIERIRXhwLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGlzIHNwZWNpZmljYWxseSBmb3IgZHluYW1pYyBleHByZXNzaW9ucy4gVGhleSBhcmUgc3RvcmVkXG4gICB1c2luZyB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBhcyB1c2VyIGV4cHJlc3Npb25zLCBidXQgZHluYW1pY1xuICAgZXhwcmVzc2lvbnMgYXJlIHNwZWNpZmljYWxseSBwYWlyZWQgd2l0aCBhIGBTYXRpYy5NYXAudGAuXG4gICAqL1xuXG5pbmNsdWRlIEV4cDtcblxubGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG5sZXQgZmFzdF9jb3B5OiAoSWQudCwgdCkgPT4gdCA9IElkVGFnZ2VkLmZhc3RfY29weTtcblxubGV0IG1rID0gKGlkcywgdGVybSk6IHQgPT4ge1xuICB7aWRzLCBjb3BpZWQ6IHRydWUsIHRlcm19O1xufTtcblxuLy8gVE9ETzogbWFrZSB0aGlzIGZ1bmN0aW9uIGVtaXQgYSBtYXAgb2YgY2hhbmdlc1xubGV0IHJlcGxhY2VfYWxsX2lkcyA9XG4gIG1hcF90ZXJtKFxuICAgIH5mX2V4cD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3BhdD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3R5cD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3RwYXQ9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgICB+Zl9ydWw9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgKTtcblxuLy8gVE9ETzogbWFrZSB0aGlzIGZ1bmN0aW9uIGVtaXQgYSBtYXAgb2YgY2hhbmdlc1xubGV0IHJlcGFpcl9pZHMgPVxuICBtYXBfdGVybShcbiAgICB+Zl9leHA9XG4gICAgICAoY29udGludWUsIGV4cCkgPT5cbiAgICAgICAgaWYgKGV4cC5jb3BpZWQpIHtcbiAgICAgICAgICByZXBsYWNlX2FsbF9pZHMoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZShleHApO1xuICAgICAgICB9LFxuICAgIF8sXG4gICk7XG5cbi8vIEFsc28gc3RyaXBzIHN0YXRpYyBlcnJvciBob2xlcyAtIGtpbmRhIGxpa2UgdW5lbGFib3JhdGlvblxubGV0IHJlYyBzdHJpcF9jYXN0cyA9XG4gIG1hcF90ZXJtKFxuICAgIH5mX2V4cD1cbiAgICAgIChjb250aW51ZSwgZXhwKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihleHApKSB7XG4gICAgICAgIC8qIExlYXZlIG5vbi1jYXN0cyB1bmNoYW5nZWQgKi9cbiAgICAgICAgfCBUdXBsZShfKVxuICAgICAgICB8IENvbnMoXylcbiAgICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICAgIHwgTGlzdExpdChfKVxuICAgICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgICB8IFNlcShfKVxuICAgICAgICB8IEZpbHRlcihfKVxuICAgICAgICB8IExldChfKVxuICAgICAgICB8IEZpeEYoXylcbiAgICAgICAgfCBUeUFsaWFzKF8pXG4gICAgICAgIHwgRnVuKF8pXG4gICAgICAgIHwgQXAoXylcbiAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICB8IERlZmVycmVkQXAoXylcbiAgICAgICAgfCBUZXN0KF8pXG4gICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICB8IFVuT3AoXylcbiAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICB8IE1hdGNoKF8pXG4gICAgICAgIHwgUGFyZW5zKF8pXG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFZhcihfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgfCBUeXBGdW4oXylcbiAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICB8IElmKF8pID0+IGNvbnRpbnVlKGV4cClcbiAgICAgICAgLyogUmVtb3ZlIGNhc3RzKi9cbiAgICAgICAgfCBGYWlsZWRDYXN0KGQsIF8sIF8pXG4gICAgICAgIHwgQ2FzdChkLCBfLCBfKSA9PiBzdHJpcF9jYXN0cyhkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIF8sXG4gICk7XG5cbmxldCBhc3NpZ25fbmFtZV9pZl9ub25lID0gKHQsIG5hbWUpID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gdW53cmFwKHQpO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBGdW4oYXJnLCB0eSwgYm9keSwgTm9uZSkgPT4gRnVuKGFyZywgdHksIGJvZHksIG5hbWUpIHw+IHJld3JhcFxuICB8IFR5cEZ1bih1dHBhdCwgYm9keSwgTm9uZSkgPT4gVHlwRnVuKHV0cGF0LCBib2R5LCBuYW1lKSB8PiByZXdyYXBcbiAgfCBfID0+IHRcbiAgfTtcbn07XG5cbmxldCB0eV9zdWJzdCA9IChzOiBUeXAudCwgdHBhdDogVFBhdC50LCBleHA6IHQpOiB0ID0+IHtcbiAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHRwYXQpKSB7XG4gIHwgTm9uZSA9PiBleHBcbiAgfCBTb21lKHgpID0+XG4gICAgRXhwLm1hcF90ZXJtKFxuICAgICAgfmZfdHlwPShfLCB0eXApID0+IFR5cC5zdWJzdChzLCB0cGF0LCB0eXApLFxuICAgICAgfmZfZXhwPVxuICAgICAgICAoY29udGludWUsIGV4cCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZXhwKSkge1xuICAgICAgICAgIHwgVHlwRnVuKHV0cGF0LCBfLCBfKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHV0cGF0KSkge1xuICAgICAgICAgICAgfCBTb21lKHgnKSB3aGVuIHggPT0geCcgPT4gZXhwXG4gICAgICAgICAgICB8IFNvbWUoXylcbiAgICAgICAgICAgIHwgTm9uZSA9PiBjb250aW51ZShleHApXG4gICAgICAgICAgICAvKiBOb3RlIHRoYXQgd2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgY2FwdHVyZSBhdm9pZGFuY2UsIHNpbmNlIHMgd2lsbCBhbHdheXMgYmUgY2xvc2VkLiAqL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgQ2FzdChfKVxuICAgICAgICAgIHwgRml4RihfKVxuICAgICAgICAgIHwgRnVuKF8pXG4gICAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICAgIHwgTGlzdExpdChfKVxuICAgICAgICAgIHwgVGVzdChfKVxuICAgICAgICAgIHwgQ2xvc3VyZShfKVxuICAgICAgICAgIHwgU2VxKF8pXG4gICAgICAgICAgfCBMZXQoXylcbiAgICAgICAgICB8IEFwKF8pXG4gICAgICAgICAgfCBCdWlsdGluRnVuKF8pXG4gICAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICAgIHwgQ29ucyhfKVxuICAgICAgICAgIHwgTGlzdENvbmNhdChfKVxuICAgICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgICB8IE1hdGNoKF8pXG4gICAgICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICAgICAgfCBGaWx0ZXIoXylcbiAgICAgICAgICB8IElmKF8pXG4gICAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgICB8IEludmFsaWQoXylcbiAgICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgICAgfCBWYXIoXylcbiAgICAgICAgICB8IEJvb2woXylcbiAgICAgICAgICB8IEludChfKVxuICAgICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICAgIHwgRmFpbGVkQ2FzdChfLCBfLCBfKVxuICAgICAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgICAgIHwgUGFyZW5zKF8pXG4gICAgICAgICAgfCBVbk9wKF8pID0+IGNvbnRpbnVlKGV4cClcbiAgICAgICAgICB9LFxuICAgICAgZXhwLFxuICAgIClcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE91dE9mRnVlbFxuICB8IFN0ZXBEb2VzTm90TWF0Y2hcbiAgfCBCYWRQYXR0ZXJuTWF0Y2hcbiAgfCBDYXN0QlZIb2xlR3JvdW5kKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkVHlwRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkQm9vbExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEludExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEZsb2F0TGl0KERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkTGlzdExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN0cmluZ0xpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN1bUNvbnN0cnVjdG9yKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkVHVwbGUoREhFeHAudClcbiAgfCBJbnZhbGlkQnVpbHRpbihzdHJpbmcpXG4gIHwgQmFkQnVpbHRpbkFwKHN0cmluZywgbGlzdChESEV4cC50KSlcbiAgfCBJbnZhbGlkUHJvamVjdGlvbihpbnQpO1xuXG5leGNlcHRpb24gRXhjZXB0aW9uKHQpO1xuIiwib3BlbiBESEV4cDtcblxuLypcbiAgIEJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IgSGF6ZWwuXG5cbiAgIFRvIGFkZCBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIGNvbnN0YW50LCB3cml0ZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlXG4gICBgUGVydmFzaXZlcy5JbXBsc2AgbW9kdWxlIGJlbG93IGFuZCBhZGQgaXQgdG8gYGJ1aWx0aW5zYC5cblxuICAgU2VlIHRoZSBleGlzdGluZyBvbmVzIGZvciByZWZlcmVuY2UuXG4gKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBidWlsdGluID1cbiAgfCBDb25zdChUeXAudCwgREhFeHAudClcbiAgfCBGbihUeXAudCwgVHlwLnQsIERIRXhwLnQgPT4gREhFeHAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IFZhck1hcC50XyhidWlsdGluKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtcyA9IFZhck1hcC50XyhESEV4cC50ID0+IERIRXhwLnQpO1xuXG50eXBlIHJlc3VsdCA9IFJlc3VsdC50KERIRXhwLnQsIEV2YWx1YXRvckVycm9yLnQpO1xuXG5sZXQgY29uc3QgPSAobmFtZTogVmFyLnQsIHR5cDogVHlwLnRlcm0sIHY6IERIRXhwLnQsIGJ1aWx0aW5zOiB0KTogdCA9PlxuICBWYXJNYXAuZXh0ZW5kKGJ1aWx0aW5zLCAobmFtZSwgQ29uc3QodHlwIHw+IFR5cC5mcmVzaCwgdikpKTtcbmxldCBmbiA9XG4gICAgKFxuICAgICAgbmFtZTogVmFyLnQsXG4gICAgICB0MTogVHlwLnRlcm0sXG4gICAgICB0MjogVHlwLnRlcm0sXG4gICAgICBpbXBsOiBESEV4cC50ID0+IERIRXhwLnQsXG4gICAgICBidWlsdGluczogdCxcbiAgICApXG4gICAgOiB0ID0+XG4gIFZhck1hcC5leHRlbmQoXG4gICAgYnVpbHRpbnMsXG4gICAgKG5hbWUsIEZuKHQxIHw+IFR5cC5mcmVzaCwgdDIgfD4gVHlwLmZyZXNoLCBpbXBsKSksXG4gICk7XG5cbm1vZHVsZSBQZXJ2YXNpdmVzID0ge1xuICBtb2R1bGUgSW1wbHMgPSB7XG4gICAgLyogY29uc3RhbnRzICovXG4gICAgbGV0IGluZmluaXR5ID0gREhFeHAuRmxvYXQoRmxvYXQuaW5maW5pdHkpIHw+IGZyZXNoO1xuICAgIGxldCBuZWdfaW5maW5pdHkgPSBESEV4cC5GbG9hdChGbG9hdC5uZWdfaW5maW5pdHkpIHw+IGZyZXNoO1xuICAgIGxldCBuYW4gPSBESEV4cC5GbG9hdChGbG9hdC5uYW4pIHw+IGZyZXNoO1xuICAgIGxldCBlcHNpbG9uX2Zsb2F0ID0gREhFeHAuRmxvYXQoZXBzaWxvbl9mbG9hdCkgfD4gZnJlc2g7XG4gICAgbGV0IHBpID0gREhFeHAuRmxvYXQoRmxvYXQucGkpIHw+IGZyZXNoO1xuICAgIGxldCBtYXhfaW50ID0gREhFeHAuSW50KEludC5tYXhfaW50KSB8PiBmcmVzaDtcbiAgICBsZXQgbWluX2ludCA9IERIRXhwLkludChJbnQubWluX2ludCkgfD4gZnJlc2g7XG5cbiAgICBsZXQgdW5hcnkgPSAoZjogREhFeHAudCA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAoZihkKSkge1xuICAgICAgfCBPayhyJykgPT4gcidcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgYmluYXJ5ID0gKGY6IChESEV4cC50LCBESEV4cC50KSA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgfCBUdXBsZShbZDEsIGQyXSkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQxLCBkMikpIHtcbiAgICAgICAgfCBPayhyKSA9PiByXG4gICAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkVHVwbGUoZCkpKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlcm5hcnkgPSAoZjogKERIRXhwLnQsIERIRXhwLnQsIERIRXhwLnQpID0+IHJlc3VsdCwgZDogREhFeHAudCkgPT4ge1xuICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICB8IFR1cGxlKFtkMSwgZDIsIGQzXSkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQxLCBkMiwgZDMpKSB7XG4gICAgICAgIHwgT2socikgPT4gclxuICAgICAgICB8IEVycm9yKGUpID0+IEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihlKSB8PiByYWlzZVxuICAgICAgICB9XG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGQpKSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBpc19maW5pdGUgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX2Zpbml0ZShmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaXNfaW5maW5pdGUgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX2luZmluaXRlKGYpKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRGbG9hdExpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBpc19uYW4gPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX25hbihmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mX2ludCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2ludChuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9mbG9hdCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEZsb2F0KGYpID0+IE9rKGZyZXNoKFN0cmluZyhzdHJpbmdfb2ZfZmxvYXQoZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9ib29sID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgQm9vbChiKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2Jvb2woYikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEJvb2xMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX2Zsb2F0ID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goSW50KGludF9vZl9mbG9hdChmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb2ZfaW50ID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgSW50KG4pID0+IE9rKGZyZXNoKEZsb2F0KGZsb2F0X29mX2ludChuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGFicyA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChJbnQoYWJzKG4pKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRJbnRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb3AgPSBmbiA9PlxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChGbG9hdChmbihmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgYWJzX2Zsb2F0ID0gZmxvYXRfb3AoYWJzX2Zsb2F0KTtcbiAgICBsZXQgY2VpbCA9IGZsb2F0X29wKGNlaWwpO1xuICAgIGxldCBmbG9vciA9IGZsb2F0X29wKGZsb29yKTtcbiAgICBsZXQgc3FydCA9IGZsb2F0X29wKHNxcnQpO1xuICAgIGxldCBleHAgPSBmbG9hdF9vcChleHApO1xuICAgIGxldCBsb2cgPSBmbG9hdF9vcChsb2cpO1xuICAgIGxldCBsb2cxMCA9IGZsb2F0X29wKGxvZzEwKTtcbiAgICBsZXQgc2luID0gZmxvYXRfb3Aoc2luKTtcbiAgICBsZXQgY29zID0gZmxvYXRfb3AoY29zKTtcbiAgICBsZXQgdGFuID0gZmxvYXRfb3AodGFuKTtcbiAgICBsZXQgYXNpbiA9IGZsb2F0X29wKGFzaW4pO1xuICAgIGxldCBhY29zID0gZmxvYXRfb3AoYWNvcyk7XG4gICAgbGV0IGF0YW4gPSBmbG9hdF9vcChhdGFuKTtcblxuICAgIGxldCBvZl9zdHJpbmcgPVxuICAgICAgICAoY29udmVydDogc3RyaW5nID0+IG9wdGlvbignYSksIHdyYXA6ICdhID0+IERIRXhwLnQsIG5hbWU6IHN0cmluZykgPT5cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgc3dpdGNoIChjb252ZXJ0KHMpKSB7XG4gICAgICAgICAgfCBTb21lKG4pID0+IE9rKHdyYXAobikpXG4gICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICBsZXQgZCcgPSBESEV4cC5CdWlsdGluRnVuKG5hbWUpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICAgICAgbGV0IGQnID0gREhFeHAuQXAoRm9yd2FyZCwgZCcsIGQpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICAgICAgbGV0IGQnID0gRHluYW1pY0Vycm9ySG9sZShkJywgSW52YWxpZE9mU3RyaW5nKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgICAgICAgIE9rKGQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX3N0cmluZyA9XG4gICAgICBvZl9zdHJpbmcoaW50X29mX3N0cmluZ19vcHQsIG4gPT4gSW50KG4pIHw+IERIRXhwLmZyZXNoKTtcbiAgICBsZXQgZmxvYXRfb2Zfc3RyaW5nID1cbiAgICAgIG9mX3N0cmluZyhmbG9hdF9vZl9zdHJpbmdfb3B0LCBmID0+IEZsb2F0KGYpIHw+IERIRXhwLmZyZXNoKTtcbiAgICBsZXQgYm9vbF9vZl9zdHJpbmcgPVxuICAgICAgb2Zfc3RyaW5nKGJvb2xfb2Zfc3RyaW5nX29wdCwgYiA9PiBCb29sKGIpIHw+IERIRXhwLmZyZXNoKTtcblxuICAgIGxldCBpbnRfbW9kID0gKG5hbWUsIGQxKSA9PlxuICAgICAgYmluYXJ5KFxuICAgICAgICAoZDEsIGQyKSA9PlxuICAgICAgICAgIHN3aXRjaCAodGVybV9vZihkMSksIHRlcm1fb2YoZDIpKSB7XG4gICAgICAgICAgfCAoSW50KF8pLCBJbnQoMCkpID0+XG4gICAgICAgICAgICBPayhcbiAgICAgICAgICAgICAgZnJlc2goXG4gICAgICAgICAgICAgICAgRHluYW1pY0Vycm9ySG9sZShcbiAgICAgICAgICAgICAgICAgIERIRXhwLkFwKEZvcndhcmQsIERIRXhwLkJ1aWx0aW5GdW4obmFtZSkgfD4gZnJlc2gsIGQxKVxuICAgICAgICAgICAgICAgICAgfD4gZnJlc2gsXG4gICAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IChJbnQobiksIEludChtKSkgPT4gT2soSW50KG4gbW9kIG0pIHw+IGZyZXNoKVxuICAgICAgICAgIHwgKEludChfKSwgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRJbnRMaXQoZDIpKSlcbiAgICAgICAgICB8IChfLCBfKSA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChkMSkpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGQxLFxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgU3RyaW5nKHMpID0+IE9rKEludChTdHJpbmcubGVuZ3RoKHMpKSB8PiBmcmVzaClcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfY29tcGFyZSA9XG4gICAgICBiaW5hcnkoKGQxLCBkMikgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMikpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMxKSwgU3RyaW5nKHMyKSkgPT5cbiAgICAgICAgICBPayhJbnQoU3RyaW5nLmNvbXBhcmUoczEsIHMyKSkgfD4gZnJlc2gpXG4gICAgICAgIHwgKFN0cmluZyhfKSwgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQyKSlcbiAgICAgICAgfCAoXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfdHJpbSA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBPayhTdHJpbmcoU3RyaW5nLnRyaW0ocykpIHw+IGZyZXNoKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZjogREhFeHAudCA9PiBvcHRpb24oc3RyaW5nKSA9XG4gICAgICBkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBTb21lKHMpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG5cbiAgICBsZXQgc3RyaW5nX2NvbmNhdCA9XG4gICAgICBiaW5hcnkoKGQxLCBkMikgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMikpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMxKSwgTGlzdExpdCh4cykpID0+XG4gICAgICAgICAgc3dpdGNoICh4cyB8PiBMaXN0Lm1hcChzdHJpbmdfb2YpIHw+IFV0aWwuT3B0VXRpbC5zZXF1ZW5jZSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoTGlzdC5oZCh4cykpKVxuICAgICAgICAgIHwgU29tZSh4cykgPT4gT2soU3RyaW5nKFN0cmluZy5jb25jYXQoczEsIHhzKSkgfD4gZnJlc2gpXG4gICAgICAgICAgfVxuICAgICAgICB8IChTdHJpbmcoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZExpc3RMaXQoZDIpKVxuICAgICAgICB8IChfLCBfKSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZDEpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19zdWIgPSBfID0+XG4gICAgICB0ZXJuYXJ5KChkMSwgZDIsIGQzKSA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZDEpLCB0ZXJtX29mKGQyKSwgdGVybV9vZihkMykpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMpLCBJbnQoaWR4KSwgSW50KGxlbikpID0+XG4gICAgICAgICAgdHJ5KE9rKFN0cmluZyhTdHJpbmcuc3ViKHMsIGlkeCwgbGVuKSkgfD4gZnJlc2gpKSB7XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAvLyBUT0RPOiBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlIHByb2JsZW0gY291bGQgYmUgd2l0aCBkMyB0b29cbiAgICAgICAgICAgIE9rKER5bmFtaWNFcnJvckhvbGUoZDIsIEluZGV4T3V0T2ZCb3VuZHMpIHw+IGZyZXNoKVxuICAgICAgICAgIH1cbiAgICAgICAgfCAoU3RyaW5nKF8pLCBJbnQoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkMykpXG4gICAgICAgIHwgKFN0cmluZyhfKSwgXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQyKSlcbiAgICAgICAgfCAoXywgXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfTtcblxuICBvcGVuIEltcGxzO1xuICBsZXQgYnVpbHRpbnMgPVxuICAgIFZhck1hcC5lbXB0eVxuICAgIHw+IGNvbnN0KFwiaW5maW5pdHlcIiwgRmxvYXQsIGluZmluaXR5KVxuICAgIHw+IGNvbnN0KFwibmVnX2luZmluaXR5XCIsIEZsb2F0LCBuZWdfaW5maW5pdHkpXG4gICAgfD4gY29uc3QoXCJuYW5cIiwgRmxvYXQsIG5hbilcbiAgICB8PiBjb25zdChcImVwc2lsb25fZmxvYXRcIiwgRmxvYXQsIGVwc2lsb25fZmxvYXQpXG4gICAgfD4gY29uc3QoXCJwaVwiLCBGbG9hdCwgcGkpXG4gICAgfD4gY29uc3QoXCJtYXhfaW50XCIsIEludCwgbWF4X2ludClcbiAgICB8PiBjb25zdChcIm1pbl9pbnRcIiwgSW50LCBtaW5faW50KVxuICAgIHw+IGZuKFwiaXNfZmluaXRlXCIsIEZsb2F0LCBCb29sLCBpc19maW5pdGUpXG4gICAgfD4gZm4oXCJpc19pbmZpbml0ZVwiLCBGbG9hdCwgQm9vbCwgaXNfaW5maW5pdGUpXG4gICAgfD4gZm4oXCJpc19uYW5cIiwgRmxvYXQsIEJvb2wsIGlzX25hbilcbiAgICB8PiBmbihcImludF9vZl9mbG9hdFwiLCBGbG9hdCwgSW50LCBpbnRfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJmbG9hdF9vZl9pbnRcIiwgSW50LCBGbG9hdCwgZmxvYXRfb2ZfaW50KVxuICAgIHw+IGZuKFwic3RyaW5nX29mX2ludFwiLCBJbnQsIFN0cmluZywgc3RyaW5nX29mX2ludClcbiAgICB8PiBmbihcInN0cmluZ19vZl9mbG9hdFwiLCBGbG9hdCwgU3RyaW5nLCBzdHJpbmdfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJzdHJpbmdfb2ZfYm9vbFwiLCBCb29sLCBTdHJpbmcsIHN0cmluZ19vZl9ib29sKVxuICAgIHw+IGZuKFwiaW50X29mX3N0cmluZ1wiLCBTdHJpbmcsIEludCwgaW50X29mX3N0cmluZyhcImludF9vZl9zdHJpbmdcIikpXG4gICAgfD4gZm4oXG4gICAgICAgICBcImZsb2F0X29mX3N0cmluZ1wiLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgRmxvYXQsXG4gICAgICAgICBmbG9hdF9vZl9zdHJpbmcoXCJmbG9hdF9vZl9zdHJpbmdcIiksXG4gICAgICAgKVxuICAgIHw+IGZuKFwiYm9vbF9vZl9zdHJpbmdcIiwgU3RyaW5nLCBCb29sLCBib29sX29mX3N0cmluZyhcImJvb2xfb2Zfc3RyaW5nXCIpKVxuICAgIHw+IGZuKFwiYWJzXCIsIEludCwgSW50LCBhYnMpXG4gICAgfD4gZm4oXCJhYnNfZmxvYXRcIiwgRmxvYXQsIEZsb2F0LCBhYnNfZmxvYXQpXG4gICAgfD4gZm4oXCJjZWlsXCIsIEZsb2F0LCBGbG9hdCwgY2VpbClcbiAgICB8PiBmbihcImZsb29yXCIsIEZsb2F0LCBGbG9hdCwgZmxvb3IpXG4gICAgfD4gZm4oXCJleHBcIiwgRmxvYXQsIEZsb2F0LCBleHApXG4gICAgfD4gZm4oXCJsb2dcIiwgRmxvYXQsIEZsb2F0LCBsb2cpXG4gICAgfD4gZm4oXCJsb2cxMFwiLCBGbG9hdCwgRmxvYXQsIGxvZzEwKVxuICAgIHw+IGZuKFwic3FydFwiLCBGbG9hdCwgRmxvYXQsIHNxcnQpXG4gICAgfD4gZm4oXCJzaW5cIiwgRmxvYXQsIEZsb2F0LCBzaW4pXG4gICAgfD4gZm4oXCJjb3NcIiwgRmxvYXQsIEZsb2F0LCBjb3MpXG4gICAgfD4gZm4oXCJ0YW5cIiwgRmxvYXQsIEZsb2F0LCB0YW4pXG4gICAgfD4gZm4oXCJhc2luXCIsIEZsb2F0LCBGbG9hdCwgYXNpbilcbiAgICB8PiBmbihcImFjb3NcIiwgRmxvYXQsIEZsb2F0LCBhY29zKVxuICAgIHw+IGZuKFwiYXRhblwiLCBGbG9hdCwgRmxvYXQsIGF0YW4pXG4gICAgfD4gZm4oXG4gICAgICAgICBcIm1vZFwiLFxuICAgICAgICAgUHJvZChbSW50IHw+IFR5cC5mcmVzaCwgSW50IHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgSW50LFxuICAgICAgICAgaW50X21vZChcIm1vZFwiKSxcbiAgICAgICApXG4gICAgfD4gZm4oXCJzdHJpbmdfbGVuZ3RoXCIsIFN0cmluZywgSW50LCBzdHJpbmdfbGVuZ3RoKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29tcGFyZVwiLFxuICAgICAgICAgUHJvZChbU3RyaW5nIHw+IFR5cC5mcmVzaCwgU3RyaW5nIHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgSW50LFxuICAgICAgICAgc3RyaW5nX2NvbXBhcmUsXG4gICAgICAgKVxuICAgIHw+IGZuKFwic3RyaW5nX3RyaW1cIiwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZ190cmltKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29uY2F0XCIsXG4gICAgICAgICBQcm9kKFtTdHJpbmcgfD4gVHlwLmZyZXNoLCBMaXN0KFN0cmluZyB8PiBUeXAuZnJlc2gpIHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgc3RyaW5nX2NvbmNhdCxcbiAgICAgICApXG4gICAgfD4gZm4oXG4gICAgICAgICBcInN0cmluZ19zdWJcIixcbiAgICAgICAgIFByb2QoW1N0cmluZyB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2hdKSxcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIHN0cmluZ19zdWIoXCJzdHJpbmdfc3ViXCIpLFxuICAgICAgICk7XG59O1xuXG5sZXQgY3R4X2luaXQ6IEN0eC50ID0ge1xuICBsZXQgbWV0YV9jb25zX21hcDogQ29uc3RydWN0b3JNYXAudChUeXAudCkgPSBbXG4gICAgVmFyaWFudChcIiRlXCIsIFtJZC5taygpXSwgTm9uZSksXG4gICAgVmFyaWFudChcIiR2XCIsIFtJZC5taygpXSwgTm9uZSksXG4gIF07XG4gIGxldCBtZXRhID1cbiAgICBDdHguVFZhckVudHJ5KHtcbiAgICAgIG5hbWU6IFwiJE1ldGFcIixcbiAgICAgIGlkOiBJZC5pbnZhbGlkLFxuICAgICAga2luZDogQ3R4LlNpbmdsZXRvbihTdW0obWV0YV9jb25zX21hcCkgfD4gVHlwLmZyZXNoKSxcbiAgICB9KTtcbiAgTGlzdC5tYXAoXG4gICAgZnVuXG4gICAgfCAobmFtZSwgQ29uc3QodHlwLCBfKSkgPT4gQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXAsIGlkOiBJZC5pbnZhbGlkfSlcbiAgICB8IChuYW1lLCBGbih0MSwgdDIsIF8pKSA9PlxuICAgICAgQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXA6IEFycm93KHQxLCB0MikgfD4gVHlwLmZyZXNoLCBpZDogSWQuaW52YWxpZH0pLFxuICAgIFBlcnZhc2l2ZXMuYnVpbHRpbnMsXG4gIClcbiAgfD4gQ3R4LmV4dGVuZChfLCBtZXRhKVxuICB8PiBDdHguYWRkX2N0cnMoXywgXCIkTWV0YVwiLCBJZC5pbnZhbGlkLCBtZXRhX2NvbnNfbWFwKTtcbn07XG5cbmxldCBmb3Jtc19pbml0OiBmb3JtcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IChfLCBDb25zdChfKSkgPT4gTm9uZVxuICAgIHwgKG5hbWUsIEZuKF8sIF8sIGYpKSA9PiBTb21lKChuYW1lLCBmKSksXG4gICAgUGVydmFzaXZlcy5idWlsdGlucyxcbiAgKTtcblxubGV0IGVudl9pbml0OiBFbnZpcm9ubWVudC50ID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgZW52ID0+XG4gICAgICBmdW5cbiAgICAgIHwgKG5hbWUsIENvbnN0KF8sIGQpKSA9PiBFbnZpcm9ubWVudC5leHRlbmQoZW52LCAobmFtZSwgZCkpXG4gICAgICB8IChuYW1lLCBGbihfKSkgPT5cbiAgICAgICAgRW52aXJvbm1lbnQuZXh0ZW5kKGVudiwgKG5hbWUsIEJ1aWx0aW5GdW4obmFtZSkgfD4gZnJlc2gpKSxcbiAgICBFbnZpcm9ubWVudC5lbXB0eSxcbiAgICBQZXJ2YXNpdmVzLmJ1aWx0aW5zLFxuICApO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBFeHAoRXhwLmNscylcbiAgfCBQYXQoUGF0LmNscylcbiAgfCBUeXAoVHlwLmNscylcbiAgfCBUUGF0KFRQYXQuY2xzKVxuICB8IFJ1bChSdWwuY2xzKVxuICB8IFNlY29uZGFyeShTZWNvbmRhcnkuY2xzKTtcblxubGV0IHNob3cgPSAoY2xzOiB0KSA9PlxuICBzd2l0Y2ggKGNscykge1xuICB8IEV4cChjbHMpID0+IEV4cC5zaG93X2NscyhjbHMpXG4gIHwgUGF0KGNscykgPT4gUGF0LnNob3dfY2xzKGNscylcbiAgfCBUeXAoY2xzKSA9PiBUeXAuc2hvd19jbHMoY2xzKVxuICB8IFRQYXQoY2xzKSA9PiBUUGF0LnNob3dfY2xzKGNscylcbiAgfCBSdWwoY2xzKSA9PiBSdWwuc2hvd19jbHMoY2xzKVxuICB8IFNlY29uZGFyeShjbHMpID0+IFNlY29uZGFyeS5zaG93X2NscyhjbHMpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBDby1jb250ZXh0czpcblxuICAgQSB0eXBpbmcgY28tY29udGV4dCAoZHVhbCB0byBhIHR5cGluZyBjb250ZXh0KSwgaXMgYSBtYXAgYmV0d2VlblxuICAgdmFyaWFibGUgbmFtZXMgYW5kIGEgbGlzdCBvZiB0aGF0IHZhcmlhYmxlJ3MgdXNlcyB3aXRoaW4gc29tZSBzY29wZS5cbiAgIEZvciBlYWNoIHVzZSwgd2UgcmV0YWluIHRoZSB1bmlxdWUgaWQgYW5kIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHVzZSBzaXRlLlxuICAgVGhlIGNvLWN0eCwgYWxvbmcgd2l0aCB0aGUgY3R4LCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgZnJlZSBhbmQgdW51c2VkIHZhcmlhYmxlcy5cblxuICAgVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgdXNlZnVsOlxuXG4gICAxLiBBIGxvY2FsbHkgZnJlZSB2YXJpYWJsZSAoaW4gYW4gZXhwcmVzc2lvbikgaXMgb25lXG4gICAgICB0aGF0IG9jY3VycyBpbiB0aGUgY29fY3R4IG9mIHRoYXQgZXhwcmVzc2lvbi5cbiAgIDIuIEEgZ2xvYmFsIGZyZWUgdmFyaWFibGUgKGluIHRoZSBwcm9ncmFtKSBpcyBvbmUgdGhhdFxuICAgICAgb2NjdXJzIGluIHRoZSBjb19jdHggYnV0IG5vdCB0aGUgY3R4IG9mIHNvbWUgZXhwcmVzc2lvblxuICAgMy4gQSBsb2NhbGx5IHVudXNlZCB2YXJpYWJsZSAoaW4gYW4gZXhwcmVzc2lvbikgaXMgb25lIHRoYXRcbiAgICAgIG9jY3VycyBpbiB0aGUgY3R4IGJ1dCBub3QgdGhlIGNvLWN0eCBvZiB0aGF0IGV4cHJlc3Npb25cbiAgIDQuIEEgZ2xvYmFsIHVudXNlZCB2YXJpYWJsZSAoaW4gdGhlIHByb2dyYW0pIGlzIG9uZSB0aGF0XG4gICAgICBvY2N1cnMgaW4gdGhlIGN0eCBidXQgbm90IHRoZSBjb19jdHggb2Ygc29tZSBleHByZXNzaW9uXG5cbiAgIFRoZSBmb2xsb3dpbmcgdGhlb3JlbXMgc2hvdWxkIGhvbGQ6XG5cbiAgIEEuIFRvIGRldGVybWluZSBpZiBhIHZhcmlhYmxlIGlzIGdsb2JhbGx5IGZyZWUsIGl0IHN1ZmZpY2VzIHRvIGNvbnNpZGVyXG4gICAgICBleHByZXNzaW9ucyB3aGljaCBhcmUgdmFyaWFibGUgcmVmZXJlbmNlcyAobG9jdXMgb2YgY3R4IGxvb2t1cHMpXG4gICBCLiBUbyBkZXRlcm1pbmUgaWYgYSB2YXJpYWJsZSBpcyBnbG9iYWxseSB1bnVzZWQsIGl0IHN1ZmZpY2VzIHRvIGNvbnNpZGVyXG4gICAgICBleHByZXNzaW9ucyB3aGljaCBhcmUgdGhlIGJvZGllcyBvZiBiaW5kaW5nIGZvcm1zIChsb2N1cyBvZiBjdHggZXh0ZW5zaW9ucylcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlbnRyeSA9IHtcbiAgaWQ6IElkLnQsXG4gIGV4cGVjdGVkX3R5OiBUeXAudCxcbn07XG5cbi8qIEVhY2ggY28tY29udGV4dCBlbnRyeSBpcyBhIGxpc3Qgb2YgdGhlIHVzZXMgb2YgYSB2YXJpYWJsZVxuICAgd2l0aGluIHNvbWUgc2NvcGUsIGluY2x1ZGluZyB0aGVpciB0eXBlIGRlbWFuZHMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IFZhck1hcC50XyhsaXN0KGVudHJ5KSk7XG5cbmxldCBlbXB0eTogdCA9IFZhck1hcC5lbXB0eTtcblxubGV0IG1rID0gKGN0eF9iZWZvcmU6IEN0eC50LCBjdHhfYWZ0ZXIsIGNvX2N0eDogdCk6IHQgPT4ge1xuICBsZXQgYWRkZWRfYmluZGluZ3MgPSBDdHguYWRkZWRfYmluZGluZ3MoY3R4X2FmdGVyLCBjdHhfYmVmb3JlKTtcbiAgVmFyTWFwLmZpbHRlcihcbiAgICAoKG5hbWUsIF8pKSA9PlxuICAgICAgc3dpdGNoIChDdHgubG9va3VwX3ZhcihhZGRlZF9iaW5kaW5ncywgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiB0cnVlXG4gICAgICB8IFNvbWUoXykgPT4gZmFsc2VcbiAgICAgIH0sXG4gICAgY29fY3R4LFxuICApO1xufTtcblxuLyogTm90ZTogdGhpcyBjdXJyZW50bHkgc2hhZG93cyBpbiB0aGUgY2FzZSBvZiBkdXBsaWNhdGVzICovXG5sZXQgdW5pb246IGxpc3QodCkgPT4gdCA9XG4gIExpc3QuZm9sZF9sZWZ0KChjb19jdHgxLCBjb19jdHgyKSA9PiBjb19jdHgxIEAgY29fY3R4MiwgW10pO1xuXG5sZXQgc2luZ2xldG9uID0gKG5hbWUsIGlkLCBleHBlY3RlZF90eSk6IHQgPT4gW1xuICAobmFtZSwgW3tpZCwgZXhwZWN0ZWRfdHl9XSksXG5dO1xuXG5sZXQgam9pbjogKEN0eC50LCBsaXN0KGVudHJ5KSkgPT4gVHlwLnQgPVxuICAoY3R4LCBlbnRyaWVzKSA9PiB7XG4gICAgbGV0IGV4cGVjdGVkX3R5cyA9IExpc3QubWFwKGVudHJ5ID0+IGVudHJ5LmV4cGVjdGVkX3R5LCBlbnRyaWVzKTtcbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gsIGN0eCwgZXhwZWN0ZWRfdHlzKVxuICAgICkge1xuICAgIHwgTm9uZSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2hcbiAgICB8IFNvbWUodHkpID0+IHR5XG4gICAgfTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIE1PREUucmVcblxuICAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSAoYW5hbHl0aWMpIHR5cGUgZXhwZWN0YXRpb24gaW1wb3NlZCBieSBhIHRlcm0nc1xuICAgICAgc3ludGFjdGljIGNvbnRleHQsIGluIHBhcnRpY3VsYXIgaXRzIGltbWVkaWF0ZSBwYXJlbnQuIFRoZSBtb3N0IGNvbW1vblxuICAgICAgY2FzZXMgYXJlIGVpdGhlciBTeW4gKG5vIHR5cGUgZXhwZWN0YXRpb24pLCBvciBBbmEgKHNvbWUgdHlwZSBleHBlY3RhdGlvbikuXG5cbiAgICAgIEEgdGVybSdzIE1PREUgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoYXQgdGVybSdzIFNFTEYgKFNlbGYucmUpIGJ5XG4gICAgICB0byBkZXRlcm1pbmUgdGhhdCB0ZXJtJ3MgU1RBVFVTIChJbmZvLnJlKSwgd2hpY2ggZGljdGF0ZXMgd2hldGhlciBvciBub3RcbiAgICAgIGl0IGlzIHBsYWNlZCBpbiBhIGhvbGUsIGFuZCBoZW5jZSBpdHMgRklYRUQgVFlQRSAoSW5mby5yZSkuXG5cbiAgICAgIChJdCBpcyBjb25qZWN0dXJlZCBbY2l0YXRpb24gbmVlZGVkXSB0aGF0IHRoZSBTeW4gbW9kZSBpcyBmdW5jdGlvbmFsbHlcbiAgICAgIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gQW5hKFVua25vd24oU3luU3dpdGNoKSksIGFuZCB0aGF0IHRoaXMgdHlwZSBpc1xuICAgICAgdGh1cyB2ZXN0aWdpYWwuKVxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFN5bkZ1biAvKiBVc2VkIG9ubHkgaW4gZnVuY3Rpb24gcG9zaXRpb24gb2YgYXBwbGljYXRpb25zICovXG4gIHwgU3luVHlwRnVuXG4gIHwgU3luXG4gIHwgQW5hKFR5cC50KTtcblxubGV0IGFuYTogVHlwLnQgPT4gdCA9IHR5ID0+IEFuYSh0eSk7XG5cbi8qIFRoZSBleHBlY3RlZCB0eXBlIGltcG9zZWQgYnkgYSBtb2RlICovXG5sZXQgdHlfb2Y6IHQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBBbmEodHkpID0+IHR5XG4gIHwgU3luID0+IFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdFxuICB8IFN5bkZ1biA9PlxuICAgIEFycm93KFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdFxuICB8IFN5blR5cEZ1biA9PlxuICAgIEZvcmFsbChcbiAgICAgIFZhcihcInN5bnR5cGZ1blwiKSB8PiBUUGF0LmZyZXNoLFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdDsgLyogVE9ETzogbmFtaW5nIHRoZSB0eXBlIHZhcmlhYmxlPyAqL1xuXG5sZXQgb2ZfYXJyb3cgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6ICh0LCB0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gKFN5biwgU3luKVxuICB8IEFuYSh0eSkgPT4gdHkgfD4gVHlwLm1hdGNoZWRfYXJyb3coY3R4KSB8PiBUdXBsZVV0aWwubWFwMihhbmEpXG4gIH07XG5cbmxldCBvZl9mb3JhbGwgPSAoY3R4OiBDdHgudCwgbmFtZV9vcHQ6IG9wdGlvbihzdHJpbmcpLCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gU3luXG4gIHwgQW5hKHR5KSA9PlxuICAgIGxldCAobmFtZV9leHBlY3RlZF9vcHQsIGl0ZW0pID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgdHkpO1xuICAgIHN3aXRjaCAobmFtZV9vcHQsIG5hbWVfZXhwZWN0ZWRfb3B0KSB7XG4gICAgfCAoU29tZShuYW1lKSwgU29tZShuYW1lX2V4cGVjdGVkKSkgPT5cbiAgICAgIEFuYShUeXAuc3Vic3QoVmFyKG5hbWUpIHw+IFR5cC5ta19mYXN0LCBuYW1lX2V4cGVjdGVkLCBpdGVtKSlcbiAgICB8IF8gPT4gQW5hKGl0ZW0pXG4gICAgfTtcbiAgfTtcblxubGV0IG9mX3Byb2QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgbGVuZ3RoKTogbGlzdCh0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBTeW4pXG4gIHwgQW5hKHR5KSA9PiB0eSB8PiBUeXAubWF0Y2hlZF9wcm9kKGN0eCwgbGVuZ3RoKSB8PiBMaXN0Lm1hcChhbmEpXG4gIH07XG5cbmxldCBvZl9jb25zX2hkID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBTeW5cbiAgfCBBbmEodHkpID0+IEFuYShUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKVxuICB9O1xuXG5sZXQgb2ZfY29uc190bCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBoZF90eTogVHlwLnQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBBbmEoTGlzdChoZF90eSkgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgQW5hKHR5KSA9PiBBbmEoTGlzdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKSB8PiBUeXAubWtfZmFzdClcbiAgfTtcblxubGV0IG9mX2xpc3QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IFN5blxuICB8IEFuYSh0eSkgPT4gQW5hKFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpXG4gIH07XG5cbmxldCBvZl9saXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gQW5hKExpc3QoVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdClcbiAgfCBBbmEodHkpID0+IEFuYShMaXN0KFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpIHw+IFR5cC5ta19mYXN0KVxuICB9O1xuXG5sZXQgb2ZfbGlzdF9saXQgPSAoY3R4OiBDdHgudCwgbGVuZ3RoLCBtb2RlOiB0KTogbGlzdCh0KSA9PlxuICBMaXN0LmluaXQobGVuZ3RoLCBfID0+IG9mX2xpc3QoY3R4LCBtb2RlKSk7XG5cbmxldCBjdHJfYW5hX3R5cCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBjdHI6IENvbnN0cnVjdG9yLnQpOiBvcHRpb24oVHlwLnQpID0+IHtcbiAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgIGEgc3VtIHR5cGUgaGF2aW5nIHRoYXQgY3RyIGFzIGEgdmFyaWFudCwgd2UgY29uc2lkZXIgdGhlXG4gICAgIGN0cidzIHR5cGUgdG8gYmUgZGV0ZXJtaW5lZCBieSB0aGUgc3VtIHR5cGUgKi9cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgQW5hKHt0ZXJtOiBBcnJvdyhfLCB0eV9hbmEpLCBffSlcbiAgfCBBbmEodHlfYW5hKSA9PlxuICAgIGxldCsgY3RycyA9IFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2FuYSk7XG4gICAgbGV0IHR5X2VudHJ5ID0gQ29uc3RydWN0b3JNYXAuZ2V0X2VudHJ5KGN0ciwgY3Rycyk7XG4gICAgc3dpdGNoICh0eV9lbnRyeSkge1xuICAgIHwgTm9uZSA9PiB0eV9hbmFcbiAgICB8IFNvbWUodHlfaW4pID0+IEFycm93KHR5X2luLCB0eV9hbmEpIHw+IFR5cC5ta19mYXN0XG4gICAgfTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBvZl9jdHJfaW5fYXAgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgY3RyOiBDb25zdHJ1Y3Rvci50KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoY3RyX2FuYV90eXAoY3R4LCBtb2RlLCBjdHIpKSB7XG4gIHwgU29tZSh7dGVybTogQXJyb3coXyksIF99IGFzIHR5X2FuYSkgPT4gU29tZShBbmEodHlfYW5hKSlcbiAgfCBTb21lKHR5X2FuYSkgPT5cbiAgICAvKiBDb25zaWRlciBmb3IgZXhhbXBsZSBcImxldCBfIDogK1lvID0gWW8oXCJsb2xcIikgaW4uLi5cIlxuICAgICAgIEhlcmUsIHRoZSAnWW8nIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBpbiBhIGhvbGUsIGFzIGl0XG4gICAgICAgaXMgbnVsbGFyeSBidXQgdXNlZCBhcyB1bmFyeTsgd2UgcmVmbGVjdCB0aGlzIGJ5IGFuYWx5emluZ1xuICAgICAgIGFnYWluc3QgYW4gYXJyb3cgdHlwZS4gU2luY2Ugd2UgY2FuJ3QgZ3Vlc3MgYXQgd2hhdCB0aGVcbiAgICAgICBwYXJhbWV0ZXIgdHlwZSBtaWdodCBoYXZlIGJlLCB3ZSB1c2UgVW5rbm93bi4gKi9cbiAgICBTb21lKFxuICAgICAgQW5hKEFycm93KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCB0eV9hbmEpIHw+IFR5cC5ta19mYXN0KSxcbiAgICApXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBvZl9hcCA9IChjdHgsIG1vZGUsIGN0cjogb3B0aW9uKENvbnN0cnVjdG9yLnQpKTogdCA9PlxuICAvKiBJZiBhIGN0ciBhcHBsaWNhdGlvbiBpcyBiZWluZyBhbmFseXplZCBhZ2FpbnN0IGEgc3VtIHR5cGUgZm9yXG4gICAgIHdoaWNoIHRoYXQgY3RyIGlzIGEgdmFyaWFudCwgdGhlbiB3ZSBjb25zaWRlciB0aGUgY3RyIHRvIGJlIGluXG4gICAgIGFuYWx5dGljIG1vZGUgYWdhaW5zdCBhbiBhcnJvdyByZXR1cm5pbmcgdGhhdCBzdW0gdHlwZTsgb3RoZXJ3aXNlXG4gICAgIHdlIHVzZSB0aGUgdHlwaWNhbCBtb2RlIGZvciBmdW5jdGlvbiBhcHBsaWNhdGlvbnMgKi9cbiAgc3dpdGNoIChjdHIpIHtcbiAgfCBTb21lKG5hbWUpID0+XG4gICAgc3dpdGNoIChvZl9jdHJfaW5fYXAoY3R4LCBtb2RlLCBuYW1lKSkge1xuICAgIHwgU29tZShtb2RlKSA9PiBtb2RlXG4gICAgfCBfID0+IFN5bkZ1blxuICAgIH1cbiAgfCBOb25lID0+IFN5bkZ1blxuICB9O1xuXG5sZXQgdHlwYXBfbW9kZTogdCA9IFN5blR5cEZ1bjtcblxubGV0IG9mX2RlZmVycmVkX2FwX2FyZ3MgPSAobGVuZ3RoOiBpbnQsIHR5X2luczogbGlzdChUeXAudCkpOiBsaXN0KHQpID0+XG4gIChcbiAgICBMaXN0Lmxlbmd0aCh0eV9pbnMpID09IGxlbmd0aFxuICAgICAgPyB0eV9pbnMgOiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFR5cC5Vbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdClcbiAgKVxuICB8PiBMaXN0Lm1hcCh0eSA9PiBBbmEodHkpKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFNFTEYucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgU0VMRiBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggcmVwcmVzZW50c1xuICAgdGhlIHN5bnRoZXRpYyB0eXBlIGluZm9ybWF0aW9uIGRlcml2YWJsZSBmcm9tIGEgdGVybSBpbmRlcGVuZGVudFxuICAgb2YgdGhlIHR5cGUgZXhwZWN0YXRpb24gKGkuZS4gTU9ERSkgb2YgaXRzIHN5bnRhY3RpYyBjb250ZXh0LiBUaGlzXG4gICBzeW5ldGhldGljIGluZm9ybWF0aW9uIGlzIG5vdCBlbnRpcmVseSBpbmRlcGVuZGVudCwgaW4gdGhhdCBpdCBzdGlsbFxuICAgdXNlcyB0aGUgdHlwaW5nIGNvbnRleHQgcGFzc2VkIGRvd24gZnJvbSB0aGUgc3ludGFjdGljIGNvbnRleHQuXG5cbiAgIEEgdGVybSB3aGljaCBmcm9tIHdoaWNoIGEgdHlwZSBjYW4gYmUgZGVyaXZlZCBpbiBpc29sYXRpb24sIHRoYXQgaXMsXG4gICB0aGF0IGhhcyBhIHZhbGlkIHN5bnRoZXRpYyB0eXBpbmcganVkZ2VtZW50LCB3aWxsIGdlbmVyYWxseSBoYXZlIGEgU0VMRlxuICAgb2YgSnVzdChzb21lX3R5cGUpLiAoVGhlIG9uZSBjdXJyZW50IGV4Y2VwdGlvbiBhcmUgdGhlIGNvbnN0cnVjdG9ycyBvZiBsYWJlbGxlZFxuICAgc3VtIHR5cGVzLCB3aGljaCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYXMgdGhlaXIgc3ludGhldGljIHR5cGVcbiAgIG1heSBiZSAnb3ZlcndyaXR0ZW4nIGJ5IHRoZSBhbmFseXRpYyBleHBlY3RhdGlvbilcblxuICAgVGhlIG90aGVyIGNhc2VzIGFsbCByZXByZXNlbnQgc3RhdGVzIGZvciB3aGljaCBubyBzaW5nbGUgdHlwZSBjYW4gYmVcbiAgIGRlcml2ZWQsIHN1Y2ggYXMgc3ludGFjdGljIGVycm9ycywgb3IgYnJhbmNoaW5nIGNvbnN0cnVjdHMgd2hpY2ggbWF5XG4gICBoYXZlIGluY29uc2lzdGVudCB0eXBlcy5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqb2luX3R5cGUgPVxuICB8IElkXG4gIHwgTGlzdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBKdXN0KFR5cC50KSAvKiBKdXN0IGEgcmVndWxhciB0eXBlICovXG4gIHwgTm9Kb2luKGpvaW5fdHlwZSwgbGlzdChUeXAuc291cmNlKSkgLyogSW5jb25zaXN0ZW50IHR5cGVzIGZvciBlLmcgbWF0Y2gsIGxpc3RsaXRzICovXG4gIHwgQmFkVG9rZW4oVG9rZW4udCkgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUcml2QXAoVHlwLnQpIC8qIFRyaXZpYWwgKG51bGxhcnkpIGFwIG9uIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCB0YWtlIHRyaXYgKi9cbiAgfCBJc011bHRpIC8qIE11bHRpaG9sZSwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgSXNDb25zdHJ1Y3Rvcih7XG4gICAgICBuYW1lOiBDb25zdHJ1Y3Rvci50LFxuICAgICAgc3luX3R5OiBvcHRpb24oVHlwLnQpLFxuICAgIH0pOyAvKiBDb25zdHJ1Y3RvcnMgaGF2ZSBzcGVjaWFsIGFuYSBsb2dpYyAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhcnRpYWxfYXAgPVxuICB8IE5vRGVmZXJyZWRBcmdzXG4gIHwgQXJpdHlNaXNtYXRjaCh7XG4gICAgICBleHBlY3RlZDogaW50LFxuICAgICAgYWN0dWFsOiBpbnQsXG4gICAgfSk7XG5cbi8qIEV4cHJlc3Npb25zIGNhbiBhbHNvIGJlIGZyZWUgdmFyaWFibGVzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cCA9XG4gIHwgRnJlZShWYXIudClcbiAgfCBJc0RlZmVycmFsKEV4cC5kZWZlcnJhbF9wb3NpdGlvbilcbiAgfCBJc0JhZFBhcnRpYWxBcChlcnJvcl9wYXJ0aWFsX2FwKVxuICB8IENvbW1vbih0KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwYXQgPVxuICB8IENvbW1vbih0KTtcblxubGV0IGpvaW5fb2YgPSAoajogam9pbl90eXBlLCB0eTogVHlwLnQpOiBUeXAudCA9PlxuICBzd2l0Y2ggKGopIHtcbiAgfCBJZCA9PiB0eVxuICB8IExpc3QgPT4gTGlzdCh0eSkgfD4gVHlwLmZyZXNoXG4gIH07XG5cbi8qIFdoYXQgdGhlIHR5cGUgd291bGQgYmUgaWYgdGhlIHBvc2l0aW9uIGhhZCBiZWVuXG4gICBzeW50aGV0aWMsIHNvIG5vIGhvbGUgZml4aW5nLiBSZXR1cm5zIG5vbmUgaWZcbiAgIHRoZXJlJ3Mgbm8gYXBwbGljYWJsZSBzeW50aGV0aWMgcnVsZS4gKi9cbmxldCB0eXBfb2Y6IChDdHgudCwgdCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIF9jdHggPT5cbiAgICBmdW5cbiAgICB8IEp1c3QodHlwKSA9PiBTb21lKHR5cClcbiAgICB8IElzQ29uc3RydWN0b3Ioe3N5bl90eSwgX30pID0+IHN5bl90eVxuICAgIHwgQmFkVG9rZW4oXylcbiAgICB8IEJhZFRyaXZBcChfKVxuICAgIHwgSXNNdWx0aVxuICAgIHwgTm9Kb2luKF8pID0+IE5vbmU7XG5cbmxldCB0eXBfb2ZfZXhwOiAoQ3R4LnQsIGV4cCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIGN0eCA9PlxuICAgIGZ1blxuICAgIHwgRnJlZShfKVxuICAgIHwgSXNEZWZlcnJhbChfKVxuICAgIHwgSXNCYWRQYXJ0aWFsQXAoXykgPT4gTm9uZVxuICAgIHwgQ29tbW9uKHNlbGYpID0+IHR5cF9vZihjdHgsIHNlbGYpO1xuXG5sZXQgdHlwX29mX3BhdDogKEN0eC50LCBwYXQpID0+IG9wdGlvbihUeXAudCkgPVxuICBjdHggPT5cbiAgICBmdW5cbiAgICB8IENvbW1vbihzZWxmKSA9PiB0eXBfb2YoY3R4LCBzZWxmKTtcblxuLyogVGhlIHNlbGYgb2YgYSB2YXIgZGVwZW5kcyBvbiB0aGUgY3R4OyBpZiB0aGVcbiAgIGxvb2t1cCBmYWlscywgaXQgaXMgYSBmcmVlIHZhcmlhYmxlICovXG5sZXQgb2ZfZXhwX3ZhciA9IChjdHg6IEN0eC50LCBuYW1lOiBWYXIudCk6IGV4cCA9PlxuICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBOb25lID0+IEZyZWUobmFtZSlcbiAgfCBTb21lKHZhcikgPT4gQ29tbW9uKEp1c3QodmFyLnR5cCkpXG4gIH07XG5cbi8qIFRoZSBzZWxmIG9mIGEgY3RyIGRlcGVuZHMgb24gdGhlIGN0eCwgYnV0IGFcbiAgIGxvb2t1cCBmYWlsdXJlIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbnMgaXRzXG4gICBmcmVlOyBpdCBtYXkgYmUgZ2l2ZW4gYSB0eXBlIGFuYWx5dGljYWxseSAqL1xubGV0IG9mX2N0ciA9IChjdHg6IEN0eC50LCBuYW1lOiBDb25zdHJ1Y3Rvci50KTogdCA9PlxuICBJc0NvbnN0cnVjdG9yKHtcbiAgICBuYW1lLFxuICAgIHN5bl90eTpcbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9jdHIoY3R4LCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgIHwgU29tZSh7dHlwLCBffSkgPT4gU29tZSh0eXApXG4gICAgICB9LFxuICB9KTtcblxubGV0IG9mX2RlZmVycmVkX2FwID0gKGFyZ3MsIHR5X2luczogbGlzdChUeXAudCksIHR5X291dDogVHlwLnQpOiBleHAgPT4ge1xuICBsZXQgZXhwZWN0ZWQgPSBMaXN0Lmxlbmd0aCh0eV9pbnMpO1xuICBsZXQgYWN0dWFsID0gTGlzdC5sZW5ndGgoYXJncyk7XG4gIGlmIChleHBlY3RlZCAhPSBhY3R1YWwpIHtcbiAgICBJc0JhZFBhcnRpYWxBcChBcml0eU1pc21hdGNoKHtleHBlY3RlZCwgYWN0dWFsfSkpO1xuICB9IGVsc2UgaWYgKExpc3QuZm9yX2FsbChFeHAuaXNfZGVmZXJyYWwsIGFyZ3MpKSB7XG4gICAgSXNCYWRQYXJ0aWFsQXAoTm9EZWZlcnJlZEFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGxldCB0eV9pbnMgPVxuICAgICAgTGlzdC5jb21iaW5lKGFyZ3MsIHR5X2lucylcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoYXJnLCBfdHkpKSA9PiBFeHAuaXNfZGVmZXJyYWwoYXJnKSlcbiAgICAgIHw+IExpc3QubWFwKHNuZCk7XG4gICAgbGV0IHR5X2luID1cbiAgICAgIExpc3QubGVuZ3RoKHR5X2lucykgPT0gMVxuICAgICAgICA/IExpc3QuaGQodHlfaW5zKSA6IFByb2QodHlfaW5zKSB8PiBUeXAuZnJlc2g7XG4gICAgQ29tbW9uKEp1c3QoQXJyb3codHlfaW4sIHR5X291dCkgfD4gVHlwLmZyZXNoKSk7XG4gIH07XG59O1xuXG5sZXQgYWRkX3NvdXJjZSA9IExpc3QubWFwMigoaWQsIHR5KSA9PiBUeXAue2lkLCB0eX0pO1xuXG5sZXQgbWF0Y2ggPSAoY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoLCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihJZCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdCh0eSlcbiAgfTtcblxubGV0IGxpc3RsaXQgPSAofmVtcHR5LCBjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eSwgY3R4LCB0eXMpKSB7XG4gIHwgTm9uZSA9PiBOb0pvaW4oTGlzdCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdChMaXN0KHR5KSB8PiBUeXAuZnJlc2gpXG4gIH07XG5cbmxldCBsaXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gsIGN0eCwgdHlzKSkge1xuICB8IE5vbmUgPT4gTm9Kb2luKExpc3QsIGFkZF9zb3VyY2UoaWRzLCB0eXMpKVxuICB8IFNvbWUodHkpID0+IEp1c3QodHkpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxuLyogSU5GTy5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBjdXJzb3IgSU5GTyBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggaXMgdXNlZFxuICAgdG8gcmVwcmVzZW50IHRoZSBzdGF0aWMgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgdGVybSBpbiB0aGVcbiAgIEFTVC4gVGhpcyBpbmNsdWRlcyB0aGUgdGVybSBpdHNlbGYsIGFuZCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvXG4gICB0eXBpbmcgYW5kIHN5bnRheCwgaW5jbHVkZWQgZXJyb25lb3VzIHN0YXRlcy5cblxuICAgRWFjaCB0ZXJtIGlzIGFzc2lnbmVkIGEgU1RBVFVTLCB3aGljaCBpcyBkaXJlY3RseSB1c2VkIHRvIGRldGVybWluZVxuICAgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIEN1cnNvckluc3BlY3Rvci5yZS4gRWFjaCBzb3J0XG4gICBoYXMgaXRzIG93biBzdGF0dXMgZGF0YXR5cGUsIHdoaWNoIGlzIGRpdmlkZWQgaW50byBPSyBzdGF0ZXMgKG5vdFxuICAgaW4gZXJyb3IgaG9sZXMpIGFuZCBFUlJPUiBzdGF0ZXMgKGluIGVycm9yIGhvbGVzKS5cblxuICAgUmVnYXJkbGVzcyBvZiBlcnJvcnMsIGV2ZXJ5IGV4cHJlc3Npb24gJiBwYXR0ZXJuIHRlcm0gaXMgdWx0aW1hdGVseVxuICAgYXNzaWduZWQgYSBGSVhFRCBUWVBFLCB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgdGVybSBhZnRlciBob2xlXG4gICBmaXhpbmc7IHRoYXQgaXMsIGFsbCBvdGhlcndpc2UgaWxsLXR5cGVkIHRlcm1zIGFyZSBjb25zaWRlcmVkIHRvXG4gICBiZSAnd3JhcHBlZCBpbiBub24tZW1wdHkgaG9sZXMnLCBpLmUuIGFzc2lnbmVkIGFuIFVua25vd24gdHlwZS5cblxuICAgRml4ZWQgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgcmVjb25jaWxsaW5nIHR3byBzb3VyY2VzIG9mIHR5cGVcbiAgIGluZm9ybWF0aW9uOiB0aGUgU0VMRiAoU2VsZi5yZSksIHJlcHJlc2VudGluZyB0aGUgdHlwZSBpbmZvcm1hdGlvblxuICAgZGVyaXZhYmxlIGZyb20gYSB0ZXJtIGluIGlzb2xhdGlvbiwgYW5kIHRoZSBNT0RFIChNb2RlLnJlKSxcbiAgIHJlcHJlc2VudGluZyB0aGUgZXhwZWN0ZWQgdHlwZSBpbmZvcm1hdGlvbiBpbXBvc2VkIGJ5IHRoZSBzdXJyb3VuZGluZ1xuICAgc3ludGFjdGljIGNvbnRleHQuIEEgc3VjY2Vzc2Z1bCByZWNvbmNpbGxpYXRpb24gcmVzdWx0cyBpbiBhbiBPS1xuICAgc3RhdHVzOyBvdGhlcndpc2UsIGFuIEVSUk9SIHN0YXR1cywgYnV0IGluIGJvdGggY2FzZXMsIGEgZml4ZWQgdHlwZVxuICAgaXMgZGV0ZXJtaW5lZC5cblxuICAgKi9cblxuLyogVGhlIGlkcyBvZiBhIHRlcm0ncyBhbmNlc3RvcnMgaW4gdGhlIEFTVCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhbmNlc3RvcnMgPSBsaXN0KElkLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2luY29uc2lzdGVudCA9XG4gIC8qIFNlbGYgdHlwZSAoc3luKSBpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCB0eXBlIChhbmEpICovXG4gIHwgRXhwZWN0YXRpb24oe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgfSlcbiAgLyogSW5jb25zaXN0ZW50IG1hdGNoIG9yIGxpc3RsaXQgKi9cbiAgfCBJbnRlcm5hbChsaXN0KFR5cC50KSlcbiAgLyogQmFkIGZ1bmN0aW9uIHBvc2l0aW9uICovXG4gIHwgV2l0aEFycm93KFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9ub190eXBlID1cbiAgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUb2tlbihUb2tlbi50KVxuICAvKiBFbXB0eSBhcHBsaWNhdGlvbiBvZiBmdW5jdGlvbiB3aXRoIGluY29uc2lzdGVudCB0eXBlICovXG4gIHwgQmFkVHJpdkFwKFR5cC50KVxuICAvKiBTdW0gY29uc3RydWN0b3IgbmVpdGVyIGJvdW5kIG5vciBpbiBhbmEgdHlwZSAqL1xuICB8IEZyZWVDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rvci50KTtcblxuLyogRXJyb3JzIHdoaWNoIGNhbiBhcHBseSB0byBlaXRoZXIgZXhwcmVzc2lvbiBvciBwYXR0ZXJucyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9jb21tb24gPVxuICAvKiBVbmRlcmRldGVybWluZWQ6IE5vIHR5cGUgY2FuIGJlIGFzc2lnbmVkICovXG4gIHwgTm9UeXBlKGVycm9yX25vX3R5cGUpXG4gIC8qIE92ZXJkZXRlcm1pbmVkOiBDb25mbGljdGluZyB0eXBlIGV4cGVjdGF0aW9ucyAqL1xuICB8IEluY29uc2lzdGVudChlcnJvcl9pbmNvbnNpc3RlbnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2V4cCA9XG4gIHwgRnJlZVZhcmlhYmxlKFZhci50KSAvKiBVbmJvdW5kIHZhcmlhYmxlIChub3QgaW4gdHlwaW5nIGNvbnRleHQpICovXG4gIHwgVW51c2VkRGVmZXJyYWxcbiAgfCBCYWRQYXJ0aWFsQXAoU2VsZi5lcnJvcl9wYXJ0aWFsX2FwKVxuICB8IENvbW1vbihlcnJvcl9jb21tb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhdCA9XG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciAvKiBPbmx5IGNvbnN0cnV0b3JzIGNhbiBiZSBhcHBsaWVkICovXG4gIHwgQ29tbW9uKGVycm9yX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfYW5hID1cbiAgLyogVGhlIGV4cGVjdGVkIChhbmEpIHR5cGUgYW5kIHRoZSBzZWxmIChzeW4pIHR5cGUgYXJlXG4gICAgIGNvbnNpc3RlbnQsIGFzIHdpdG5lc3NlZCBieSB0aGVpciBqb2ludCB0eXBlIChqb2luKSAqL1xuICB8IENvbnNpc3RlbnQoe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgICBqb2luOiBUeXAudCxcbiAgICB9KVxuICAvKiBBIG1hdGNoIGV4cHJlc3Npb24gb3IgbGlzdCBsaXRlcmFsIHdoaWNoLCBpbiBzeW50aGV0aWMgcG9zaXRpb24sXG4gICAgIHdvdWxkIGJlIG1hcmtlZCBhcyBpbnRlcm5hbGx5IGluY29uc2lzdGVudCwgYnV0IGlzIGNvbnNpZGVyZWRcbiAgICAgZmluZSBhcyB0aGUgZXhwZWN0ZWQgdHlwZSBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbG93ZXIgYm91bmRcbiAgICAgKG9mdGVuIFVua25vd24pIGZvciB0aGUgdHlwZXMgb2YgdGhlIGJyYW5jaGVzL2VsZW1lbnRzICovXG4gIHwgSW50ZXJuYWxseUluY29uc2lzdGVudCh7XG4gICAgICBhbmE6IFR5cC50LFxuICAgICAgbm9qb2luOiBsaXN0KFR5cC50KSxcbiAgICB9KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19jb21tb24gPVxuICB8IFN5bihUeXAudClcbiAgfCBBbmEob2tfYW5hKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19leHAgPVxuICB8IEFuYURlZmVycmFsQ29uc2lzdGVudChUeXAudClcbiAgfCBDb21tb24ob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19wYXQgPSBva19jb21tb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX2NvbW1vbiA9XG4gIHwgSW5Ib2xlKGVycm9yX2NvbW1vbilcbiAgfCBOb3RJbkhvbGUob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfZXhwID1cbiAgfCBJbkhvbGUoZXJyb3JfZXhwKVxuICB8IE5vdEluSG9sZShva19leHApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c19wYXQgPVxuICB8IEluSG9sZShlcnJvcl9wYXQpXG4gIHwgTm90SW5Ib2xlKG9rX3BhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3ZhcmlhbnQgPVxuICB8IFVuaXF1ZVxuICB8IER1cGxpY2F0ZTtcblxuLyogRXhwZWN0YXRpb24gaW1wb3NlZCBvbiBhIHR5cGUgYnkgdGhlIHBhcmVudCBmb3JtLlxuICAgVE9ETzogVGhpcyBpcyBmdW5kYW1lbnRhbGx5IHN5bnRhY3RpYyBhbmQgc2hvdWxkXG4gICBldmVudHVhbGx5IGJlIHJlaW1wbGVtZXRlZCB2aWEgYSBzZXBlcmF0ZSBzb3J0ICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR5cF9leHBlY3RzID1cbiAgfCBUeXBlRXhwZWN0ZWRcbiAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKHN0YXR1c192YXJpYW50LCBUeXAudClcbiAgfCBWYXJpYW50RXhwZWN0ZWQoc3RhdHVzX3ZhcmlhbnQsIFR5cC50KTtcblxuLyogVHlwZSB0ZXJtIGVycm9yc1xuICAgVE9ETzogVGhlIHRocmVlIGFkZGl0aW9uYWwgZXJyb3JzIHN0YXR1c2VzXG4gICBhcmUgZnVuZGFtZW50YWxseSBzeW50YWN0aWMgYW5kIHNob3VsZCB3aGVuXG4gICBwb3NzaWJsZSBiZSByZWltcGxlbWV0ZWQgdmlhIGEgc2VwZXJhdGUgc29ydCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl90eXAgPVxuICB8IEJhZFRva2VuKFRva2VuLnQpIC8qIEludmFsaWQgdG9rZW4sIHRyZWF0ZWQgYXMgdHlwZSBob2xlICovXG4gIHwgRnJlZVR5cGVWYXJpYWJsZShzdHJpbmcpIC8qIEZyZWUgdHlwZSB2YXJpYWJsZSAqL1xuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKENvbnN0cnVjdG9yLnQpIC8qIER1cGxpY2F0ZSBjdHIgaW4gc2FtZSBzdW0gKi9cbiAgfCBXYW50VHlwZUZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoVHlwLnQpXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRBcDtcblxuLyogVHlwZSBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190eXAgPVxuICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgVHlwLnQpXG4gIHwgVmFyaWFudEluY29tcGxldGUoVHlwLnQpXG4gIHwgVHlwZUFsaWFzKHN0cmluZywgVHlwLnQpXG4gIHwgVHlwZShUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3R5cCA9XG4gIHwgSW5Ib2xlKGVycm9yX3R5cClcbiAgfCBOb3RJbkhvbGUob2tfdHlwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBlX3Zhcl9lcnIgPVxuICB8IE90aGVyXG4gIHwgTm90Q2FwaXRhbGl6ZWQ7XG5cbi8qIFdoYXQgYXJlIHdlIHNoYWRvd2luZz8gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2hhZG93X3NyYyA9XG4gIHwgQmFzZVR5cFxuICB8IFR5QWxpYXNcbiAgfCBUeVZhcjtcblxuLyogVHlwZSBwYXR0ZXJuIHRlcm0gZXJyb3JzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3RwYXQgPVxuICB8IFNoYWRvd3NUeXBlKHN0cmluZywgc2hhZG93X3NyYylcbiAgfCBOb3RBVmFyKHR5cGVfdmFyX2Vycik7XG5cbi8qIFR5cGUgcGF0dGVybiBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190cGF0ID1cbiAgfCBFbXB0eVxuICB8IFZhcihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c190cGF0ID1cbiAgfCBOb3RJbkhvbGUob2tfdHBhdClcbiAgfCBJbkhvbGUoZXJyb3JfdHBhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwID0ge1xuICB0ZXJtOiBVRXhwLnQsIC8qIFRoZSB0ZXJtIHVuZGVyIGNvbnNpZGVyYXRpb24gKi9cbiAgYW5jZXN0b3JzLCAvKiBBc2NlbmRpbmcgbGlzdCBvZiBjb250YWluaW5nIHRlcm0gaWRzICovXG4gIGN0eDogQ3R4LnQsIC8qIFR5cGluZyBjb250ZXh0IGZvciB0aGUgdGVybSAqL1xuICBtb2RlOiBNb2RlLnQsIC8qIFBhcmVudGFsIHR5cGUgZXhwZWN0YXRpb25zICAqL1xuICBzZWxmOiBTZWxmLmV4cCwgLyogRXhwZWN0YXRpb24taW5kZXBlbmRlbnQgdHlwZSBpbmZvICovXG4gIGNvX2N0eDogQ29DdHgudCwgLyogTG9jYWxseSBmcmVlIHZhcmlhYmxlcyAqL1xuICBjbHM6IENscy50LCAvKiBERVJJVkVEOiBTeW50YXggY2xhc3MgKGkuZS4gZm9ybSBuYW1lKSAqL1xuICBzdGF0dXM6IHN0YXR1c19leHAsIC8qIERFUklWRUQ6IE9rL0Vycm9yIHN0YXR1c2VzIGZvciBkaXNwbGF5ICovXG4gIHR5OiBUeXAudCAvKiBERVJJVkVEOiBUeXBlIGFmdGVyIG5vbmVtcHR5IGhvbGUgZml4aW5nICovXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdCA9IHtcbiAgdGVybTogVVBhdC50LFxuICBhbmNlc3RvcnMsXG4gIGN0eDogQ3R4LnQsXG4gIGNvX2N0eDogQ29DdHgudCxcbiAgcHJldl9zeW5zd2l0Y2g6IG9wdGlvbihUeXAudCksIC8vIElmIGEgcGF0dGVybiBpcyBmaXJzdCBzeW50aGVzaXplZCwgdGhlbiBhbmFseXNlZCwgdGhlIGluaXRpYWwgc3luIGlzIHN0b3JlZCBoZXJlLlxuICBtb2RlOiBNb2RlLnQsXG4gIHNlbGY6IFNlbGYucGF0LFxuICBjbHM6IENscy50LFxuICBzdGF0dXM6IHN0YXR1c19wYXQsXG4gIHR5OiBUeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwID0ge1xuICB0ZXJtOiBVVHlwLnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgZXhwZWN0czogdHlwX2V4cGVjdHMsXG4gIGNsczogQ2xzLnQsXG4gIHN0YXR1czogc3RhdHVzX3R5cCxcbiAgdHk6IFR5cC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0cGF0ID0ge1xuICB0ZXJtOiBUUGF0LnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgY2xzOiBDbHMudCxcbiAgc3RhdHVzOiBzdGF0dXNfdHBhdCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2Vjb25kYXJ5ID0ge1xuICBpZDogSWQudCwgLy8gSWQgb2YgdGVybSBzdGF0aWMgaW5mbyBpcyBzb3VyY2VkIGZyb21cbiAgY2xzOiBDbHMudCwgLy8gQ2xzIG9mIHNlY29uZGFyeSwgbm90IHNvdXJjZSB0ZXJtXG4gIHNvcnQ6IFNvcnQudCwgLy8gZnJvbSBzb3VyY2UgdGVybVxuICBjdHg6IEN0eC50IC8vIGZyb20gc291cmNlIHRlcm1cbn07XG5cbi8qIFRoZSBzdGF0aWMgaW5mb3JtYXRpb24gY29sbGF0ZWQgZm9yIGVhY2ggdGVybSAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBJbmZvRXhwKGV4cClcbiAgfCBJbmZvUGF0KHBhdClcbiAgfCBJbmZvVHlwKHR5cClcbiAgfCBJbmZvVFBhdCh0cGF0KVxuICB8IFNlY29uZGFyeShzZWNvbmRhcnkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yID1cbiAgfCBFeHAoZXJyb3JfZXhwKVxuICB8IFBhdChlcnJvcl9wYXQpXG4gIHwgVHlwKGVycm9yX3R5cClcbiAgfCBUUGF0KGVycm9yX3RwYXQpO1xuXG5sZXQgc29ydF9vZjogdCA9PiBTb3J0LnQgPVxuICBmdW5cbiAgfCBJbmZvRXhwKF8pID0+IEV4cFxuICB8IEluZm9QYXQoXykgPT4gUGF0XG4gIHwgSW5mb1R5cChfKSA9PiBUeXBcbiAgfCBJbmZvVFBhdChfKSA9PiBUUGF0XG4gIHwgU2Vjb25kYXJ5KHMpID0+IHMuc29ydDtcblxubGV0IGNsc19vZjogdCA9PiBDbHMudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2NscywgX30pXG4gIHwgSW5mb1BhdCh7Y2xzLCBffSlcbiAgfCBJbmZvVHlwKHtjbHMsIF99KVxuICB8IEluZm9UUGF0KHtjbHMsIF99KVxuICB8IFNlY29uZGFyeSh7Y2xzLCBffSkgPT4gY2xzO1xuXG5sZXQgY3R4X29mOiB0ID0+IEN0eC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7Y3R4LCBffSlcbiAgfCBJbmZvUGF0KHtjdHgsIF99KVxuICB8IEluZm9UeXAoe2N0eCwgX30pXG4gIHwgSW5mb1RQYXQoe2N0eCwgX30pXG4gIHwgU2Vjb25kYXJ5KHtjdHgsIF99KSA9PiBjdHg7XG5cbmxldCBhbmNlc3RvcnNfb2Y6IHQgPT4gYW5jZXN0b3JzID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7YW5jZXN0b3JzLCBffSlcbiAgfCBJbmZvUGF0KHthbmNlc3RvcnMsIF99KVxuICB8IEluZm9UeXAoe2FuY2VzdG9ycywgX30pXG4gIHwgSW5mb1RQYXQoe2FuY2VzdG9ycywgX30pID0+IGFuY2VzdG9yc1xuICB8IFNlY29uZGFyeShfKSA9PiBbXTsgLy9UT0RPXG5cbmxldCBpZF9vZjogdCA9PiBJZC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cChpKSA9PiBFeHAucmVwX2lkKGkudGVybSlcbiAgfCBJbmZvUGF0KGkpID0+IFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IEluZm9UeXAoaSkgPT4gVHlwLnJlcF9pZChpLnRlcm0pXG4gIHwgSW5mb1RQYXQoaSkgPT4gVFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IFNlY29uZGFyeShzKSA9PiBzLmlkO1xuXG5sZXQgZXJyb3Jfb2Y6IHQgPT4gb3B0aW9uKGVycm9yKSA9XG4gIGZ1blxuICB8IEluZm9FeHAoe3N0YXR1czogTm90SW5Ib2xlKF8pLCBffSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pXG4gIHwgSW5mb1R5cCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KVxuICB8IEluZm9UUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pID0+IE5vbmVcbiAgfCBJbmZvRXhwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShFeHAoZXJyKSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShQYXQoZXJyKSlcbiAgfCBJbmZvVHlwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShUeXAoZXJyKSlcbiAgfCBJbmZvVFBhdCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoVFBhdChlcnIpKVxuICB8IFNlY29uZGFyeShfKSA9PiBOb25lO1xuXG5sZXQgZXhwX2NvX2N0eDogZXhwID0+IENvQ3R4LnQgPSAoe2NvX2N0eCwgX30pID0+IGNvX2N0eDtcbmxldCBleHBfdHk6IGV4cCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcbmxldCBwYXRfY3R4OiBwYXQgPT4gQ3R4LnQgPSAoe2N0eCwgX30pID0+IGN0eDtcbmxldCBwYXRfdHk6IHBhdCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcblxubGV0IHJlYyBzdGF0dXNfY29tbW9uID1cbiAgICAgICAgKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi50KTogc3RhdHVzX2NvbW1vbiA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoSnVzdCh0eSksIFN5bikgPT4gTm90SW5Ib2xlKFN5bih0eSkpXG4gIHwgKEp1c3QodHkpLCBTeW5GdW4pID0+XG4gICAgc3dpdGNoIChcbiAgICAgIFR5cC5qb2luX2ZpeChcbiAgICAgICAgY3R4LFxuICAgICAgICBBcnJvdyhcbiAgICAgICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgKVxuICAgICAgICB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgdHksXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKF8pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eSkpKVxuICAgIH1cbiAgfCAoSnVzdCh0eSksIFN5blR5cEZ1bikgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KFxuICAgICAgICBjdHgsXG4gICAgICAgIEZvcmFsbChWYXIoXCI/XCIpIHw+IFRQYXQuZnJlc2gsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KVxuICAgICAgICB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgdHksXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKF8pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eSkpKVxuICAgIH1cbiAgfCAoSnVzdChzeW4pLCBBbmEoYW5hKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KFxuICAgICAgICBjdHgsXG4gICAgICAgIGFuYSxcbiAgICAgICAgc3luIC8qIE5vdGU6IHRoZSBvcmRlcmluZyBvZiBhbmEsIHN5biBtYXR0ZXJzICovXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe3N5biwgYW5hfSkpKVxuICAgIHwgU29tZShqb2luKSA9PiBOb3RJbkhvbGUoQW5hKENvbnNpc3RlbnQoe2FuYSwgc3luLCBqb2lufSkpKVxuICAgIH1cbiAgfCAoSXNDb25zdHJ1Y3Rvcih7bmFtZSwgc3luX3R5fSksIF8pID0+XG4gICAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgICAgYSBzdW0gdHlwZSBoYXZpbmcgdGhhdCBjdHIgYXMgYSB2YXJpYW50LCBpdHMgc2VsZiB0eXBlIGlzXG4gICAgICAgY29uc2lkZXJlZCB0byBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBzdW0gdHlwZTsgb3RoZXJ3aXNlLFxuICAgICAgIGNoZWNrIHRoZSBjb250ZXh0IGZvciB0aGUgY3RyJ3MgdHlwZSAqL1xuICAgIHN3aXRjaCAoTW9kZS5jdHJfYW5hX3R5cChjdHgsIG1vZGUsIG5hbWUpLCBzeW5fdHkpIHtcbiAgICB8IChTb21lKGFuYV90eSksIF8pID0+IHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBKdXN0KGFuYV90eSkpXG4gICAgfCAoXywgU29tZShzeW5fdHkpKSA9PiBzdGF0dXNfY29tbW9uKGN0eCwgbW9kZSwgSnVzdChzeW5fdHkpKVxuICAgIHwgXyA9PiBJbkhvbGUoTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkpXG4gICAgfVxuICB8IChCYWRUb2tlbihuYW1lKSwgXykgPT4gSW5Ib2xlKE5vVHlwZShCYWRUb2tlbihuYW1lKSkpXG4gIHwgKEJhZFRyaXZBcCh0eSksIF8pID0+IEluSG9sZShOb1R5cGUoQmFkVHJpdkFwKHR5KSkpXG4gIHwgKElzTXVsdGksIF8pID0+IE5vdEluSG9sZShTeW4oVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IChOb0pvaW4od3JhcCwgdHlzKSwgQW5hKGFuYSkpID0+XG4gICAgbGV0IHN5bjogVHlwLnQgPSBTZWxmLmpvaW5fb2Yod3JhcCwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHN3aXRjaCAoVHlwLmpvaW5fZml4KGN0eCwgYW5hLCBzeW4pKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpKVxuICAgIHwgU29tZShfKSA9PlxuICAgICAgTm90SW5Ib2xlKFxuICAgICAgICBBbmEoSW50ZXJuYWxseUluY29uc2lzdGVudCh7YW5hLCBub2pvaW46IFR5cC5vZl9zb3VyY2UodHlzKX0pKSxcbiAgICAgIClcbiAgICB9O1xuICB8IChOb0pvaW4oXywgdHlzKSwgU3luIHwgU3luRnVuIHwgU3luVHlwRnVuKSA9PlxuICAgIEluSG9sZShJbmNvbnNpc3RlbnQoSW50ZXJuYWwoVHlwLm9mX3NvdXJjZSh0eXMpKSkpXG4gIH07XG5cbmxldCBzdGF0dXNfcGF0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5wYXQpOiBzdGF0dXNfcGF0ID0+XG4gIHN3aXRjaCAobW9kZSwgc2VsZikge1xuICB8IChTeW4gfCBTeW5UeXBGdW4gfCBBbmEoXyksIENvbW1vbihzZWxmX3BhdCkpXG4gIHwgKFN5bkZ1biwgQ29tbW9uKElzQ29uc3RydWN0b3IoXykgYXMgc2VsZl9wYXQpKSA9PlxuICAgIC8qIExpdHRsZSBiaXQgb2YgYSBoYWNrLiBBbnl0aGluZyBvdGhlciB0aGFuIGEgYm91bmQgY3RyIHdpbGwsIGluXG4gICAgICAgZnVuY3Rpb24gcG9zaXRpb24sIGhhdmUgU3luRnVuIG1vZGUgKHNlZSBUeXAuYXBfbW9kZSkuIFNpbmNlIHdlXG4gICAgICAgYXJlIHByb2hpYml0aW5nIG5vbi1jdHJzIGluIGN0ciBhcHBsaWNhdGlvbnMgaW4gcGF0dGVybnMgZm9yIG5vdyxcbiAgICAgICB3ZSBjYXRjaCB0aGVtIGhlcmUsIGRpdmVydGluZyB0byBhbiBFeHBlY3RlZENvbnN0cnVjdG9yIGVycm9yLiBCdXQgd2VcbiAgICAgICBhdm9pZCBjYXB0dXJpbmcgdGhlIHNlY29uZCBjYXNlIGFib3ZlLCBhcyB0aGVzZSB3aWxsIHVsdGltYXRlbHlcbiAgICAgICBnZXQgYSAobW9yZSBwcmVjaXNlKSB1bmJvdW5kIGN0ciAgdmlhIHN0YXR1c19jb21tb24gKi9cbiAgICBzd2l0Y2ggKHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBzZWxmX3BhdCkpIHtcbiAgICB8IE5vdEluSG9sZShva19leHApID0+IE5vdEluSG9sZShva19leHApXG4gICAgfCBJbkhvbGUoZXJyX3BhdCkgPT4gSW5Ib2xlKENvbW1vbihlcnJfcGF0KSlcbiAgICB9XG4gIHwgKFN5bkZ1biwgXykgPT4gSW5Ib2xlKEV4cGVjdGVkQ29uc3RydWN0b3IpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbiBleHByZXNzaW9uIG9yIHBhdHRlcm4gaXMgaW4gYW4gZXJyb3IgaG9sZSxcbiAgIGRlcGVuZGluZyBvbiB0aGUgbW9kZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZVxuICAgc3Vycm91bmRpbmcgc3ludGFjdGljIGNvbnRleHQsIGFuZCB0aGUgc2VsZiB3aGljaCByZXByZXNlbnRzIHRoZVxuICAgbWFrZXVwIG9mIHRoZSBleHByZXNzaW9uIC8gcGF0dGVybiBpdHNlbGYuICovXG5sZXQgc3RhdHVzX2V4cCA9IChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYuZXhwKTogc3RhdHVzX2V4cCA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoRnJlZShuYW1lKSwgXykgPT4gSW5Ib2xlKEZyZWVWYXJpYWJsZShuYW1lKSlcbiAgfCAoSXNEZWZlcnJhbChJbkFwKSwgQW5hKGFuYSkpID0+IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSlcbiAgfCAoSXNEZWZlcnJhbChfKSwgXykgPT4gSW5Ib2xlKFVudXNlZERlZmVycmFsKVxuICB8IChJc0JhZFBhcnRpYWxBcChfIGFzIGluZm8pLCBfKSA9PiBJbkhvbGUoQmFkUGFydGlhbEFwKGluZm8pKVxuICB8IChDb21tb24oc2VsZl9wYXQpLCBfKSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIHNlbGZfcGF0KSkge1xuICAgIHwgTm90SW5Ib2xlKG9rX2V4cCkgPT4gTm90SW5Ib2xlKENvbW1vbihva19leHApKVxuICAgIHwgSW5Ib2xlKGVycl9wYXQpID0+IEluSG9sZShDb21tb24oZXJyX3BhdCkpXG4gICAgfVxuICB9O1xuXG4vKiBUaGlzIGxvZ2ljIGRldGVybWluZXMgd2hldGhlciBhIHR5cGUgc2hvdWxkIGJlIHB1dFxuICAgaW4gYSBob2xlIG9yIG5vdC4gSXQncyBtb3N0bHkgc3ludGFjdGljLCBkZXRlcm1pbmluZ1xuICAgdGhlIHByb3BlciBwbGFjZW1lbnQgb2Ygc3VtIHR5cGUgdmFyaWFudHMgYW5kIGN0cnM7XG4gICB0aGlzIHNob3VsZCBiZSByZWltcGxlbWVudGVkIGluIHRoZSBmdXR1cmUgYXMgYVxuICAgc2VwYXJhdGUgc29ydC4gSXQgYWxzbyBkZXRlcm1pbmVzIHNlbWFudGljIHByb3BlcnRpZXNcbiAgIHN1Y2ggYXMgd2hldGhlciBvciBub3QgYSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBpc1xuICAgZnJlZSwgYW5kIHdoZXRoZXIgYSBjdHIgbmFtZSBpcyBhIGR1cGUuICovXG5sZXQgc3RhdHVzX3R5cCA9XG4gICAgKGN0eDogQ3R4LnQsIGV4cGVjdHM6IHR5cF9leHBlY3RzLCB0ZXJtOiBUeXAudCwgdHk6IFR5cC50KTogc3RhdHVzX3R5cCA9PlxuICBzd2l0Y2ggKHRlcm0udGVybSkge1xuICB8IFVua25vd24oSG9sZShJbnZhbGlkKHRva2VuKSkpID0+IEluSG9sZShCYWRUb2tlbih0b2tlbikpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChVbmlxdWUsIHN1bV90eSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoVW5pcXVlLCBzdW1fdHkpID0+XG4gICAgICBOb3RJbkhvbGUoVmFyaWFudChuYW1lLCBzdW1fdHkpKVxuICAgIHwgVmFyaWFudEV4cGVjdGVkKER1cGxpY2F0ZSwgXylcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoRHVwbGljYXRlLCBfKSA9PlxuICAgICAgSW5Ib2xlKER1cGxpY2F0ZUNvbnN0cnVjdG9yKG5hbWUpKVxuICAgIHwgVHlwZUV4cGVjdGVkID0+XG4gICAgICBzd2l0Y2ggKEN0eC5pc19hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgICB8IGZhbHNlID0+XG4gICAgICAgIHN3aXRjaCAoQ3R4LmlzX2Fic3RyYWN0KGN0eCwgbmFtZSkpIHtcbiAgICAgICAgfCBmYWxzZSA9PiBJbkhvbGUoRnJlZVR5cGVWYXJpYWJsZShuYW1lKSlcbiAgICAgICAgfCB0cnVlID0+IE5vdEluSG9sZShUeXBlKFZhcihuYW1lKSB8PiBUeXAubWtfZmFzdCkpXG4gICAgICAgIH1cbiAgICAgIHwgdHJ1ZSA9PiBOb3RJbkhvbGUoVHlwZUFsaWFzKG5hbWUsIFR5cC53ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVmFyaWFudEV4cGVjdGVkKHN0YXR1c192YXJpYW50LCB0eV92YXJpYW50KSA9PlxuICAgICAgbGV0IHR5X2luID0gVVR5cC50b190eXAoY3R4LCB0Mik7XG4gICAgICBzd2l0Y2ggKHN0YXR1c192YXJpYW50LCB0MS50ZXJtKSB7XG4gICAgICB8IChVbmlxdWUsIFZhcihuYW1lKSkgPT5cbiAgICAgICAgTm90SW5Ib2xlKFZhcmlhbnQobmFtZSwgQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHwgXyA9PlxuICAgICAgICBOb3RJbkhvbGUoXG4gICAgICAgICAgVmFyaWFudEluY29tcGxldGUoQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgPT4gSW5Ib2xlKFdhbnRDb25zdHJ1Y3RvckZvdW5kQXApXG4gICAgfCBUeXBlRXhwZWN0ZWQgPT4gSW5Ib2xlKFdhbnRUeXBlRm91bmRBcClcbiAgICB9XG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVHlwZUV4cGVjdGVkID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXylcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChfKSA9PiBJbkhvbGUoV2FudENvbnN0cnVjdG9yRm91bmRUeXBlKHR5KSlcbiAgICB9XG4gIH07XG5cbmxldCBzdGF0dXNfdHBhdCA9IChjdHg6IEN0eC50LCB1dHBhdDogVFBhdC50KTogc3RhdHVzX3RwYXQgPT5cbiAgc3dpdGNoICh1dHBhdC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlID0+IE5vdEluSG9sZShFbXB0eSlcbiAgfCBWYXIobmFtZSkgd2hlbiBDdHguc2hhZG93c190eXAoY3R4LCBuYW1lKSA9PlxuICAgIGxldCBmID0gc3JjID0+IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBzcmMpKTtcbiAgICBpZiAoRm9ybS5pc19iYXNlX3R5cChuYW1lKSkge1xuICAgICAgZihCYXNlVHlwKTtcbiAgICB9IGVsc2UgaWYgKEN0eC5pc19hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgICBmKFR5QWxpYXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmKFR5VmFyKTtcbiAgICB9O1xuICB8IFZhcihuYW1lKSA9PiBOb3RJbkhvbGUoVmFyKG5hbWUpKVxuICB8IEludmFsaWQoXykgPT4gSW5Ib2xlKE5vdEFWYXIoTm90Q2FwaXRhbGl6ZWQpKVxuICB8IE11bHRpSG9sZShfKSA9PiBJbkhvbGUoTm90QVZhcihPdGhlcikpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbnkgdGVybSBpcyBpbiBhbiBlcnJvciBob2xlLiAqL1xubGV0IGlzX2Vycm9yID0gKGNpOiB0KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBJbmZvRXhwKHttb2RlLCBzZWxmLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9QYXQoe21vZGUsIHNlbGYsIGN0eCwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgSW5mb1R5cCh7ZXhwZWN0cywgY3R4LCB0ZXJtLCB0eSwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfdHlwKGN0eCwgZXhwZWN0cywgdGVybSwgdHkpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9UUGF0KHt0ZXJtLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX3RwYXQoY3R4LCB0ZXJtKSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBTZWNvbmRhcnkoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIERldGVybWluZWQgdGhlIHR5cGUgb2YgYW4gZXhwcmVzc2lvbiBvciBwYXR0ZXJuICdhZnRlciBob2xlIGZpeGluZyc7XG4gICB0aGF0IGlzLCBzb21lIGlsbC10eXBlZCB0ZXJtcyBhcmUgY29uc2lkZXJlZCB0byBiZSAnd3JhcHBlZCBpblxuICAgbm9uLWVtcHR5IGhvbGVzJywgaS5lLiBhc3NpZ25lZCBVbmtub3duIHR5cGUuICovXG5sZXQgZml4ZWRfdHlwX29rOiBva19wYXQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBTeW4oc3luKSA9PiBzeW5cbiAgfCBBbmEoQ29uc2lzdGVudCh7am9pbiwgX30pKSA9PiBqb2luXG4gIHwgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgX30pKSA9PiBhbmE7XG5cbmxldCBmaXhlZF90eXBfZXJyX2NvbW1vbjogZXJyb3JfY29tbW9uID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgTm9UeXBlKF8pID0+IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0XG4gIHwgSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHthbmEsIF99KSkgPT4gYW5hXG4gIHwgSW5jb25zaXN0ZW50KEludGVybmFsKF8pKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCAvLyBTaG91bGQgdGhpcyBiZSBzb21lIHNvcnQgb2YgbWVldD9cbiAgfCBJbmNvbnNpc3RlbnQoV2l0aEFycm93KF8pKSA9PlxuICAgIEFycm93KFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gICAgfD4gVHlwLm1rX2Zhc3Q7XG5cbmxldCBmaXhlZF90eXBfZXJyOiBlcnJvcl9leHAgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBGcmVlVmFyaWFibGUoXykgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBVbnVzZWREZWZlcnJhbCA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IEJhZFBhcnRpYWxBcChfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IENvbW1vbihlcnIpID0+IGZpeGVkX3R5cF9lcnJfY29tbW9uKGVycik7XG5cbmxldCBmaXhlZF90eXBfZXJyX3BhdDogZXJyb3JfcGF0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IENvbW1vbihlcnIpID0+IGZpeGVkX3R5cF9lcnJfY29tbW9uKGVycik7XG5cbmxldCBmaXhlZF90eXBfcGF0ID0gKGN0eCwgbW9kZTogTW9kZS50LCBzZWxmOiBTZWxmLnBhdCk6IFR5cC50ID0+XG4gIHN3aXRjaCAoc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gIHwgSW5Ib2xlKGVycikgPT4gZml4ZWRfdHlwX2Vycl9wYXQoZXJyKVxuICB8IE5vdEluSG9sZShvaykgPT4gZml4ZWRfdHlwX29rKG9rKVxuICB9O1xuXG5sZXQgZml4ZWRfdHlwX2V4cCA9IChjdHgsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5leHApOiBUeXAudCA9PlxuICBzd2l0Y2ggKHN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IEluSG9sZShlcnIpID0+IGZpeGVkX3R5cF9lcnIoZXJyKVxuICB8IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSkgPT4gYW5hXG4gIHwgTm90SW5Ib2xlKENvbW1vbihvaykpID0+IGZpeGVkX3R5cF9vayhvaylcbiAgfTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBleHByZXNzaW9uIHRlcm1zICovXG5sZXQgZGVyaXZlZF9leHAgPVxuICAgICh+dWV4cDogVUV4cC50LCB+Y3R4LCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYsIH5jb19jdHgpOiBleHAgPT4ge1xuICBsZXQgY2xzID0gQ2xzLkV4cChVRXhwLmNsc19vZl90ZXJtKHVleHAudGVybSkpO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpO1xuICBsZXQgdHkgPSBmaXhlZF90eXBfZXhwKGN0eCwgbW9kZSwgc2VsZik7XG4gIHtjbHMsIHNlbGYsIHR5LCBtb2RlLCBzdGF0dXMsIGN0eCwgY29fY3R4LCBhbmNlc3RvcnMsIHRlcm06IHVleHB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBwYXR0ZXJuIHRlcm1zICovXG5sZXQgZGVyaXZlZF9wYXQgPVxuICAgICh+dXBhdDogVVBhdC50LCB+Y3R4LCB+Y29fY3R4LCB+cHJldl9zeW5zd2l0Y2gsIH5tb2RlLCB+YW5jZXN0b3JzLCB+c2VsZilcbiAgICA6IHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuUGF0KFVQYXQuY2xzX29mX3Rlcm0odXBhdC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZik7XG4gIGxldCB0eSA9IGZpeGVkX3R5cF9wYXQoY3R4LCBtb2RlLCBzZWxmKTtcbiAge1xuICAgIGNscyxcbiAgICBzZWxmLFxuICAgIHByZXZfc3luc3dpdGNoLFxuICAgIG1vZGUsXG4gICAgdHksXG4gICAgc3RhdHVzLFxuICAgIGN0eCxcbiAgICBjb19jdHgsXG4gICAgYW5jZXN0b3JzLFxuICAgIHRlcm06IHVwYXQsXG4gIH07XG59O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIHR5cGVzICovXG5sZXQgZGVyaXZlZF90eXAgPSAofnV0eXA6IFVUeXAudCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpOiB0eXAgPT4ge1xuICBsZXQgY2xzOiBDbHMudCA9XG4gICAgLyogSGFjayB0byBpbXByb3ZlIENJIGRpc3BsYXkgKi9cbiAgICBzd2l0Y2ggKGV4cGVjdHMsIFVUeXAuY2xzX29mX3Rlcm0odXR5cC50ZXJtKSkge1xuICAgIHwgKFZhcmlhbnRFeHBlY3RlZChfKSB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXyksIFZhcikgPT5cbiAgICAgIENscy5UeXAoQ29uc3RydWN0b3IpXG4gICAgfCAoXywgY2xzKSA9PiBDbHMuVHlwKGNscylcbiAgICB9O1xuICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX3R5cChjdHgsIGV4cGVjdHMsIHV0eXAsIHR5KTtcbiAge2NscywgY3R4LCBhbmNlc3RvcnMsIHN0YXR1cywgZXhwZWN0cywgdHksIHRlcm06IHV0eXB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciB0eXBlIHBhdHRlcm5zICovXG5sZXQgZGVyaXZlZF90cGF0ID0gKH51dHBhdDogVFBhdC50LCB+Y3R4LCB+YW5jZXN0b3JzKTogdHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuVFBhdChUUGF0LmNsc19vZl90ZXJtKHV0cGF0LnRlcm0pKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c190cGF0KGN0eCwgdXRwYXQpO1xuICB7Y2xzLCBhbmNlc3RvcnMsIHN0YXR1cywgY3R4LCB0ZXJtOiB1dHBhdH07XG59O1xuXG4vKiBJZiB0aGUgaW5mbyByZXByZXNlbnRzIHNvbWUga2luZCBvZiBuYW1lIGJpbmRpbmcgd2hpY2hcbiAgIGV4aXN0cyBpbiB0aGUgY29udGV4dCwgcmV0dXJuIHRoZSBpZCB3aGVyZSB0aGUgYmluZGluZyBvY2N1cnMgKi9cbmxldCBnZXRfYmluZGluZ19zaXRlID0gKGluZm86IHQpOiBvcHRpb24oSWQudCkgPT4ge1xuICBzd2l0Y2ggKGluZm8pIHtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogVmFyKG5hbWUpLCBffSwgY3R4LCBffSkgPT5cbiAgICBsZXQrIGVudHJ5ID0gQ3R4Lmxvb2t1cF92YXIoY3R4LCBuYW1lKTtcbiAgICBlbnRyeS5pZDtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogQ29uc3RydWN0b3IobmFtZSksIF99LCBjdHgsIF99KVxuICB8IEluZm9QYXQoe3Rlcm06IHt0ZXJtOiBDb25zdHJ1Y3RvcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfY3RyKGN0eCwgbmFtZSk7XG4gICAgZW50cnkuaWQ7XG4gIHwgSW5mb1R5cCh7dGVybToge3Rlcm06IFZhcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpO1xuICAgIGVudHJ5LmlkO1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IHR5cF9pc19jb25zdHJ1Y3Rvcl9leHBlY3RlZCA9IHQgPT5cbiAgc3dpdGNoICh0KSB7XG4gIHwge2V4cGVjdHM6IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgfCBWYXJpYW50RXhwZWN0ZWQoXyksIF99ID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG4iLCJvcGVuIFV0aWw7XG5cbmluY2x1ZGUgSWQuTWFwO1xudHlwZSByYW5nZSA9IChQaWVjZS50LCBQaWVjZS50KTtcbnR5cGUgbm9ucmVjIHQgPSB0KHJhbmdlKTtcblxubGV0IHVuaW9uID0gdW5pb24oKF8sIHJhbmdlLCBfKSA9PiBTb21lKHJhbmdlKSk7XG5cbi8qIFBFUkY6IFVwIHRvIDUwJSByZWR1Y3Rpb24gaW4gc29tZSBjYXNlcyBieSBtZW1vaXppbmdcbiAqIHRoaXMgZnVuY3Rpb24uIE1pZ2h0IGJlIGJldHRlciB0aG91Z2ggdG8ganVzdCBkbyBhblxuICogdW5tZW1vaXplZCB0cmF2ZXJzYWwgYnVpbGRpbmcgYSBoYXNodGJsIGF2b2lkaW5nIHVuaW9uaW5nLlxuXG4gICBUT0RPKGFuZHJldyk6IENvbnNpZGVyIHNldHRpbmcgYSBsaW1pdCBmb3IgdGhlIGhhc2h0Ymwgc2l6ZSAqL1xubGV0IHJhbmdlX2hhc2g6IEhhc2h0YmwudChUaWxlLnNlZ21lbnQsIElkLk1hcC50KHJhbmdlKSkgPVxuICBIYXNodGJsLmNyZWF0ZSgxMDAwKTtcblxuLy8gTk9URTogdGhpcyBjYWxjdWxhdGlvbiBpcyBvdXQgb2Ygc3luYyB3aXRoXG4vLyBNYWtlVGVybSwgd2hpY2ggbWF0Y2hlcyB0aGluZ3MgbGlrZSBsaXN0IGJyYWNrZXRzXG4vLyBhbmQgY2FzZS4uLmVuZCB0byBzZXBhcmF0b3JzIGluc2lkZSBlZyBsaXN0IGNvbW1hc1xuLy8gYW5kIHJ1bGVzIGB8IHAgPT5gLiB0aGlzIGNhbGN1bGF0aW9uIGRvZXMgbm90XG4vLyBpbmNsdWRlIHRoZSBjb250YWluZXIgaW4gdGhlIHJhbmdlcyBmb3IgdGhvc2UgaW5uZXJcbi8vIHNlcGFyYXRvcnMuXG4vLyBUT0RPKGQpIGZpeCBvciBkZXJpdmUgZnJvbSBvdGhlciBpbmZvXG4vL1xuLy8gdGFpbC1yZWN1cnNpdmUgaW4gb3V0ZXIgcmVjdXJzaW9uXG5sZXQgcmVjIG1rJyA9IChzZWc6IFNlZ21lbnQudCkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHNrZWw6IFNrZWwudCk6IChyYW5nZSwgdCkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpIHw+IEFiYS5tYXBfYShMaXN0Lm50aChzZWcpKTtcbiAgICBsZXQgcm9vdF9sID0gQWJhLmZpcnN0X2Eocm9vdCk7XG4gICAgbGV0IHJvb3RfciA9IEFiYS5sYXN0X2Eocm9vdCk7XG4gICAgbGV0IChyYW5nZSwgdW5pY2hpbGRfbWFwKSA9XG4gICAgICBzd2l0Y2ggKHNrZWwpIHtcbiAgICAgIHwgT3AoXykgPT4gKChyb290X2wsIHJvb3RfciksIGVtcHR5KVxuICAgICAgfCBQcmUoXywgcikgPT5cbiAgICAgICAgbGV0ICgoXywgciksIG1hcCkgPSBnbyhyKTtcbiAgICAgICAgKChyb290X2wsIHIpLCBtYXApO1xuICAgICAgfCBQb3N0KGwsIF8pID0+XG4gICAgICAgIGxldCAoKGwsIF8pLCBtYXApID0gZ28obCk7XG4gICAgICAgICgobCwgcm9vdF9yKSwgbWFwKTtcbiAgICAgIHwgQmluKGwsIF8sIHIpID0+XG4gICAgICAgIGxldCAoKGwsIF8pLCBtYXBfbCkgPSBnbyhsKTtcbiAgICAgICAgbGV0ICgoXywgciksIG1hcF9yKSA9IGdvKHIpO1xuICAgICAgICAoKGwsIHIpLCB1bmlvbihtYXBfbCwgbWFwX3IpKTtcbiAgICAgIH07XG4gICAgbGV0IGJldHdlZW5fY2hpbGRfbWFwID1cbiAgICAgIEFiYS5nZXRfYnMocm9vdClcbiAgICAgIHw+IExpc3QubWFwKGdvKVxuICAgICAgfD4gTGlzdC5tYXAoc25kKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQodW5pb24sIGVtcHR5KTtcbiAgICBsZXQgbWFwID1cbiAgICAgIEFiYS5nZXRfYXMocm9vdClcbiAgICAgIHw+IExpc3QubWFwKFBpZWNlLmlkKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAsIGlkKSA9PiBJZC5NYXAuYWRkKGlkLCByYW5nZSwgbWFwKSxcbiAgICAgICAgICAgdW5pb24oYmV0d2Vlbl9jaGlsZF9tYXAsIHVuaWNoaWxkX21hcCksXG4gICAgICAgICApO1xuICAgIChyYW5nZSwgbWFwKTtcbiAgfTtcbiAgU2VnbWVudC5jaGlsZHJlbihzZWcpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgIChtYXAsIGtpZCkgPT4gdW5pb24obWFwLCBtayhraWQpKSxcbiAgICAgICB1bmlvbihlbXB0eSwgc25kKGdvKFNlZ21lbnQuc2tlbChzZWcpKSkpLFxuICAgICApO1xufVxuYW5kIG1rID0gc2VnID0+XG4gIHRyeShIYXNodGJsLmZpbmQocmFuZ2VfaGFzaCwgc2VnKSkge1xuICB8IF8gPT5cbiAgICBsZXQgcmVzID0gbWsnKHNlZyk7XG4gICAgSGFzaHRibC5hZGQocmFuZ2VfaGFzaCwgc2VnLCByZXMpO1xuICAgIHJlcztcbiAgfTtcbiIsIi8qIFNUQVRJQ1MucmVcblxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3RhdGljcyBzZW1hbnRpY3Mgb2YgYSBwcm9ncmFtLlxuICAgSXQgbWFrZXMgdXNlIG9mIHRoZSBmb2xsb3dpbmcgbW9kdWxlczpcblxuICAgSU5GTy5yZTogRGVmaW5lcyB0aGUgSW5mby50IHR5cGUgd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgdGhlXG4gICBzdGF0aWMgU1RBVFVTIG9mIGEgdGVybS4gVGhpcyBTVEFUVVMgY2FuIGJlIGVpdGhlciBPSyBvciBFUlJPUixcbiAgIGFuZCBpcyBkZXRlcm1pbmVkIGJ5IHJlY29uY2lsbGluZyB0d28gc291cmNlcyBvZiB0eXBpbmcgaW5mb3JtYXRpb24sXG4gICB0aGUgTU9ERSBhbmQgdGhlIFNFTEYuXG5cbiAgIE1PREUucmU6IERlZmluZXMgdGhlIE1vZGUudCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuICAgdHlwaW5nIGV4cGVjdGF0aW9ucyBpbXBvc2VkIGJ5IGEgdGVybSdzIGFuY2VzdG9ycy5cblxuICAgU0VMRi5yZTogRGVmaW5lIHRoZSBTZWxmLnQgdHlwZSB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGVcbiAgIHR5cGUgaW5mb3JtYXRpb24gZGVyaXZhYmxlIGZyb20gdGhlIHRlcm0gaXRzZWxmLlxuXG4gICBUaGUgcG9pbnQgb2YgU1RBVElDUy5yZSBpdHNlbGYgaXMgdG8gZGVyaXZlIGEgbWFwIGJldHdlZW4gZWFjaFxuICAgdGVybSdzIHVuaXF1ZSBpZCBhbmQgdGhhdCB0ZXJtJ3Mgc3RhdGljIElORk8uIFRoZSBiZWxvdyBmdW5jdGlvbnNcbiAgIGFyZSBpbnRlbmRlZCBtb3N0bHkgYXMgaW5mcmFzdHJ1Y3R1cmU6IFRoZSBwb2ludCBpcyB0byBkZWZpbmUgYVxuICAgdHJhdmVyc2FsIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlIHdoaWNoLCBmb3IgZWFjaCB0ZXJtLCBwYXNzZXNcbiAgIGRvd24gdGhlIE1PREUsIHBhc3NlcyB1cCB0aGUgU0VMRiwgY2FsY3VsYXRlcyB0aGUgSU5GTywgYW5kIGFkZHNcbiAgIGl0IHRvIHRoZSBtYXAuXG5cbiAgIFRoZSBhcmNoaXRlY3R1cmFsIGludGVudGlvbiBoZXJlIGlzIHRoYXQgbW9zdCB0eXBlLW1hbmlwdWxhdGlvblxuICAgbG9naWMgaXMgZGVmaW5lZCBpbiBJTkZPLCBNT0RFLCBhbmQgU0VMRiwgYW5kIHRoZSBTVEFUSUNTIG1vZHVsZVxuICAgaXRzZWxmIGlzIGRlZGljYXRlZCB0byB0aGUgcGlwaW5nIG5lY2Vzc2FyeSB0byAoQSkgaW50cm9kdWNlIGFuZFxuICAgKEIpIHByb3BhZ2F0ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlLlxuXG4gICAgKi9cblxubW9kdWxlIEluZm8gPSBJbmZvO1xuXG5tb2R1bGUgTWFwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IElkLk1hcC50KEluZm8udCk7XG5cbiAgLy8gbGV0IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPVxuICAvLyAgIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oc2V4cF9vZl90LCB0X29mX3NleHApO1xuXG4gIGxldCBlcnJvcl9pZHMgPSAodGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCwgaW5mb19tYXA6IHQpOiBsaXN0KElkLnQpID0+XG4gICAgSWQuTWFwLmZvbGQoXG4gICAgICAoaWQsIGluZm8sIGFjYykgPT5cbiAgICAgICAgLyogQmVjYXVzZSBvZiBhcnRlZmFjdHMgaW4gTWFrZXRlcm0gSUQgaGFuZGxpbmcsXG4gICAgICAgICAqIHRoZXJlIGFyZSBiZSBzaXR1YXRpb25zIHdoZXJlIGlkcyBhcHBlYXIgaW4gdGhlXG4gICAgICAgICAqIGluZm9fbWFwIHdoaWNoIGRvIG5vdCBvY2N1ciBpbiB0ZXJtX3Jhbmdlcy4gVGhlc2VcbiAgICAgICAgICogaWRzIHNob3VsZCBiZSBwdXJlbHkgZHVwbGljYXRpdmUsIHNvIHNraXBwaW5nIHRoZW1cbiAgICAgICAgICogd2hlbiBpdGVyYXRpbmcgb3ZlciB0aGUgaW5mb19tYXAgc2hvdWxkIGhhdmUgbm9cbiAgICAgICAgICogZWZmZWN0LCBiZXlvbmQgc3VwcmVzc2luZyB0aGUgcmVzdWx0aW5nIE5vdF9mb3VuZCBleHMgKi9cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IFNvbWUoXykgd2hlbiBJbmZvLmlzX2Vycm9yKGluZm8pID0+IFtpZCwgLi4uYWNjXVxuICAgICAgICB8IF8gPT4gYWNjXG4gICAgICAgIH0sXG4gICAgICBpbmZvX21hcCxcbiAgICAgIFtdLFxuICAgICk7XG59O1xuXG5sZXQgbWFwX20gPSAoZiwgeHMsIG06IE1hcC50KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoKHhzLCBtKSwgeCkgPT4gZih4LCBtKSB8PiAoKCh4LCBtKSkgPT4gKHhzIEAgW3hdLCBtKSksXG4gICAgKFtdLCBtKSxcbiAgICB4cyxcbiAgKTtcblxubGV0IGFkZF9pbmZvID0gKGlkczogbGlzdChJZC50KSwgaW5mbzogSW5mby50LCBtOiBNYXAudCk6IE1hcC50ID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobSwgaWQpID0+IElkLk1hcC5hZGQoaWQsIGluZm8sIG0pLCBtKTtcblxubGV0IHJlYyBpc19hcnJvd19saWtlID0gKHQ6IFR5cC50KSA9PiB7XG4gIHN3aXRjaCAodCB8PiBUeXAudGVybV9vZikge1xuICB8IFVua25vd24oXykgPT4gdHJ1ZVxuICB8IEFycm93KF8pID0+IHRydWVcbiAgfCBGb3JhbGwoXywgdCkgPT4gaXNfYXJyb3dfbGlrZSh0KVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCBpc19yZWN1cnNpdmUgPSAoY3R4LCBwLCBkZWYsIHN5bjogVHlwLnQpID0+IHtcbiAgc3dpdGNoIChQYXQuZ2V0X251bV9vZl92YXJzKHApLCBFeHAuZ2V0X251bV9vZl9mdW5jdGlvbnMoZGVmKSkge1xuICB8IChTb21lKG51bV92YXJzKSwgU29tZShudW1fZm5zKSlcbiAgICAgIHdoZW4gbnVtX3ZhcnMgIT0gMCAmJiBudW1fdmFycyA9PSBudW1fZm5zID0+XG4gICAgbGV0IG5vcm0gPSBUeXAubm9ybWFsaXplKGN0eCwgc3luKTtcbiAgICBzd2l0Y2ggKG5vcm0gfD4gVHlwLnRlcm1fb2YpIHtcbiAgICB8IFByb2Qoc3lucykgd2hlbiBMaXN0Lmxlbmd0aChzeW5zKSA9PSBudW1fdmFycyA9PlxuICAgICAgc3lucyB8PiBMaXN0LmZvcl9hbGwoaXNfYXJyb3dfbGlrZSlcbiAgICB8IF8gd2hlbiBpc19hcnJvd19saWtlKG5vcm0pID0+IG51bV92YXJzID09IDFcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQ6IE9wZXJhdG9ycy5vcF9iaW5faW50ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBJbnQgfD4gVHlwLm1rX2Zhc3RcbiAgfCAoXG4gICAgICBMZXNzVGhhbiB8IEdyZWF0ZXJUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW5PckVxdWFsIHwgRXF1YWxzIHxcbiAgICAgIE5vdEVxdWFsc1xuICAgICkgYXMgX29wID0+XG4gICAgQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX2Zsb2F0OiBPcGVyYXRvcnMub3BfYmluX2Zsb2F0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBGbG9hdCB8PiBUeXAubWtfZmFzdFxuICB8IChcbiAgICAgIExlc3NUaGFuIHwgR3JlYXRlclRoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbk9yRXF1YWwgfCBFcXVhbHMgfFxuICAgICAgTm90RXF1YWxzXG4gICAgKSBhcyBfb3AgPT5cbiAgICBCb29sIHw+IFR5cC5ta19mYXN0O1xuXG5sZXQgdHlwX2V4cF9iaW5vcF9iaW5fc3RyaW5nOiBPcGVyYXRvcnMub3BfYmluX3N0cmluZyA9PiBUeXAudCA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBTdHJpbmcgfD4gVHlwLm1rX2Zhc3RcbiAgfCBFcXVhbHMgPT4gQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3A6IE9wZXJhdG9ycy5vcF9iaW4gPT4gKFR5cC50LCBUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgQm9vbChBbmQgfCBPcikgPT4gKFxuICAgICAgQm9vbCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEJvb2wgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBCb29sIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgfCBJbnQob3ApID0+IChcbiAgICAgIEludCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEludCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX2ludChvcCksXG4gICAgKVxuICB8IEZsb2F0KG9wKSA9PiAoXG4gICAgICBGbG9hdCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEZsb2F0IHw+IFR5cC5ta19mYXN0LFxuICAgICAgdHlwX2V4cF9iaW5vcF9iaW5fZmxvYXQob3ApLFxuICAgIClcbiAgfCBTdHJpbmcob3ApID0+IChcbiAgICAgIFN0cmluZyB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFN0cmluZyB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX3N0cmluZyhvcCksXG4gICAgKTtcblxubGV0IHR5cF9leHBfdW5vcDogT3BlcmF0b3JzLm9wX3VuID0+IChUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgTWV0YShVbnF1b3RlKSA9PiAoXG4gICAgICBWYXIoXCIkTWV0YVwiKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgfCBCb29sKE5vdCkgPT4gKEJvb2wgfD4gVHlwLm1rX2Zhc3QsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgSW50KE1pbnVzKSA9PiAoSW50IHw+IFR5cC5ta19mYXN0LCBJbnQgfD4gVHlwLm1rX2Zhc3QpO1xuXG5sZXQgcmVjIGFueV90b19pbmZvX21hcCA9XG4gICAgICAgICh+Y3R4OiBDdHgudCwgfmFuY2VzdG9ycywgYW55OiBBbnkudCwgbTogTWFwLnQpOiAoQ29DdHgudCwgTWFwLnQpID0+XG4gIHN3aXRjaCAoYW55KSB7XG4gIHwgRXhwKGUpID0+XG4gICAgbGV0ICh7Y29fY3R4LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgZSwgbSk7XG4gICAgKGNvX2N0eCwgbSk7XG4gIHwgUGF0KHApID0+XG4gICAgbGV0IG0gPVxuICAgICAgdXBhdF90b19pbmZvX21hcChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmN0eCxcbiAgICAgICAgcCxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICAoQ29DdHguZW1wdHksIG0pO1xuICB8IFRQYXQodHApID0+IChcbiAgICAgIENvQ3R4LmVtcHR5LFxuICAgICAgdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHAsIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgVHlwKHR5KSA9PiAoXG4gICAgICBDb0N0eC5lbXB0eSxcbiAgICAgIHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHksIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgUnVsKF8pXG4gIHwgTnVsICgpXG4gIHwgQW55ICgpID0+IChDb0N0eC5lbXB0eSwgbSlcbiAgfVxuYW5kIG11bHRpID0gKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcykgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKChjb19jdHhzLCBtKSwgYW55KSA9PiB7XG4gICAgICBsZXQgKGNvX2N0eCwgbSkgPSBhbnlfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgYW55LCBtKTtcbiAgICAgIChjb19jdHhzIEAgW2NvX2N0eF0sIG0pO1xuICAgIH0sXG4gICAgKFtdLCBtKSxcbiAgICB0bXMsXG4gIClcbmFuZCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAoXG4gICAgICB+Y3R4OiBDdHgudCxcbiAgICAgIH5tb2RlPU1vZGUuU3luLFxuICAgICAgfmlzX2luX2ZpbHRlcj1mYWxzZSxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB7aWRzLCBjb3BpZWQ6IF8sIHRlcm19IGFzIHVleHA6IFVFeHAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLmV4cCwgTWFwLnQpID0+IHtcbiAgLyogTWF5YmUgc3dpdGNoIG1vZGUgdG8gc3luICovXG4gIGxldCBtb2RlID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IEFuYSh7dGVybTogVW5rbm93bihTeW5Td2l0Y2gpLCBffSkgPT4gTW9kZS5TeW5cbiAgICB8IF8gPT4gbW9kZVxuICAgIH07XG4gIGxldCBhZGQnID0gKH5zZWxmLCB+Y29fY3R4LCBtKSA9PiB7XG4gICAgbGV0IGluZm8gPVxuICAgICAgSW5mby5kZXJpdmVkX2V4cCh+dWV4cCwgfmN0eCwgfm1vZGUsIH5hbmNlc3RvcnMsIH5zZWxmLCB+Y29fY3R4KTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvRXhwKGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhZGQgPSAofnNlbGYsIH5jb19jdHgsIG0pID0+IGFkZCcofnNlbGY9Q29tbW9uKHNlbGYpLCB+Y29fY3R4LCBtKTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVRXhwLnJlcF9pZCh1ZXhwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAgIChcbiAgICAgICAgfmN0eCxcbiAgICAgICAgfm1vZGU9TW9kZS5TeW4sXG4gICAgICAgIH5pc19pbl9maWx0ZXI9aXNfaW5fZmlsdGVyLFxuICAgICAgICB+YW5jZXN0b3JzPWFuY2VzdG9ycyxcbiAgICAgICAgdWV4cDogVUV4cC50LFxuICAgICAgICBtOiBNYXAudCxcbiAgICAgICkgPT4ge1xuICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfm1vZGUsIH5pc19pbl9maWx0ZXIsIH5hbmNlc3RvcnMsIHVleHAsIG0pO1xuICB9O1xuICBsZXQgZ28nID0gdWV4cF90b19pbmZvX21hcCh+YW5jZXN0b3JzKTtcbiAgbGV0IGdvID0gZ28nKH5jdHgpO1xuICBsZXQgbWFwX21fZ28gPSBtID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChlcywgbSksIG1vZGUsIGUpID0+XG4gICAgICAgIGdvKH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAoW10sIG0pLFxuICAgICk7XG4gIGxldCBnb19wYXQgPSB1cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgYXRvbWljID0gc2VsZiA9PiBhZGQofnNlbGYsIH5jb19jdHg9Q29DdHguZW1wdHksIG0pO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBDbG9zdXJlKF8sIGUpID0+XG4gICAgLy8gVE9ETzogaW1wbGVtZW50IGNsb3N1cmUgdHlwZSBjaGVja2luZyBwcm9wZXJseSAtIHNlZSBob3cgZHluYW1pYyB0eXBlIGFzc2lnbm1lbnQgZG9lcyBpdFxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZS50eSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChjb19jdHhzLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKH5zZWxmPUlzTXVsdGksIH5jb19jdHg9Q29DdHgudW5pb24oY29fY3R4cyksIG0pO1xuICB8IENhc3QoZSwgdDEsIHQyKVxuICB8IEZhaWxlZENhc3QoZSwgdDEsIHQyKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodDEpLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0MiksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEludmFsaWQodG9rZW4pID0+IGF0b21pYyhCYWRUb2tlbih0b2tlbikpXG4gIHwgRW1wdHlIb2xlID0+IGF0b21pYyhKdXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBEZWZlcnJhbChwb3NpdGlvbikgPT5cbiAgICBhZGQnKH5zZWxmPUlzRGVmZXJyYWwocG9zaXRpb24pLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCBtKVxuICB8IEJvb2woXykgPT4gYXRvbWljKEp1c3QoQm9vbCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgSW50KF8pID0+IGF0b21pYyhKdXN0KEludCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgRmxvYXQoXykgPT4gYXRvbWljKEp1c3QoRmxvYXQgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IFN0cmluZyhfKSA9PiBhdG9taWMoSnVzdChTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IExpc3RMaXQoZXMpID0+XG4gICAgbGV0IGlkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBlcyk7XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9saXN0X2xpdChjdHgsIExpc3QubGVuZ3RoKGVzKSwgbW9kZSk7XG4gICAgbGV0IChlcywgbSkgPSBtYXBfbV9nbyhtLCBtb2RlcywgZXMpO1xuICAgIGxldCB0eXMgPSBMaXN0Lm1hcChJbmZvLmV4cF90eSwgZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVxuICAgICAgICBTZWxmLmxpc3RsaXQofmVtcHR5PVVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIHR5cywgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpLFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9IGdvKH5tb2RlPU1vZGUub2ZfY29uc190bChjdHgsIG1vZGUsIGhkLnR5KSwgdGwsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoTGlzdChoZC50eSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbaGQuY29fY3R4LCB0bC5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBsZXQgbW9kZSA9IE1vZGUub2ZfbGlzdF9jb25jYXQoY3R4LCBtb2RlKTtcbiAgICBsZXQgaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIFtlMSwgZTJdKTtcbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdF9jb25jYXQoY3R4LCBbZTEudHksIGUyLnR5XSwgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVmFyKG5hbWUpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihjdHgsIG5hbWUpLFxuICAgICAgfmNvX2N0eD1Db0N0eC5zaW5nbGV0b24obmFtZSwgVUV4cC5yZXBfaWQodWV4cCksIE1vZGUudHlfb2YobW9kZSkpLFxuICAgICAgbSxcbiAgICApXG4gIHwgRHluYW1pY0Vycm9ySG9sZShlLCBfKVxuICB8IFBhcmVucyhlKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZS50eSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgd2hlbiBpc19pbl9maWx0ZXIgPT5cbiAgICBsZXQgZTogVUV4cC50ID0ge1xuICAgICAgaWRzOiBlLmlkcyxcbiAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgICB8IFZhcihcImVcIikgPT4gVUV4cC5Db25zdHJ1Y3RvcihcIiRlXCIpXG4gICAgICAgIHwgVmFyKFwidlwiKSA9PiBVRXhwLkNvbnN0cnVjdG9yKFwiJHZcIilcbiAgICAgICAgfCBfID0+IGUudGVybVxuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHR5X2luID0gVHlwLlZhcihcIiRNZXRhXCIpIHw+IFR5cC5ta19mYXN0O1xuICAgIGxldCB0eV9vdXQgPSBUeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3Aob3AsIGUpID0+XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IHR5cF9leHBfdW5vcChvcCk7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEJpbk9wKG9wLCBlMSwgZTIpID0+XG4gICAgbGV0ICh0eTEsIHR5MiwgdHlfb3V0KSA9IHR5cF9leHBfYmlub3Aob3ApO1xuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGU9QW5hKHR5MSksIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlPUFuYSh0eTIpLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodHlfb3V0KSwgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSwgbSk7XG4gIHwgQnVpbHRpbkZ1bihzdHJpbmcpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihCdWlsdGlucy5jdHhfaW5pdCwgc3RyaW5nKSxcbiAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICBtLFxuICAgIClcbiAgfCBUdXBsZShlcykgPT5cbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX3Byb2QoY3R4LCBtb2RlLCBMaXN0Lmxlbmd0aChlcykpO1xuICAgIGxldCAoZXMsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGVzKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KFByb2QoTGlzdC5tYXAoSW5mby5leHBfdHksIGVzKSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVGVzdChlKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEoQm9vbCB8PiBUeXAubWtfZmFzdCksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KFByb2QoW10pIHw+IFR5cC5ta19mYXN0KSwgfmNvX2N0eD1lLmNvX2N0eCwgbSk7XG4gIHwgRmlsdGVyKEZpbHRlcih7cGF0OiBjb25kLCBffSksIGJvZHkpID0+XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlLCBjb25kLCBtLCB+aXNfaW5fZmlsdGVyPXRydWUpO1xuICAgIGxldCAoYm9keSwgbSkgPSBnbyh+bW9kZSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChib2R5LnR5KSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBib2R5LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IEZpbHRlcihSZXNpZHVlKF8pLCBib2R5KSA9PlxuICAgIGxldCAoYm9keSwgbSkgPSBnbyh+bW9kZSwgYm9keSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYm9keS50eSksIH5jb19jdHg9Q29DdHgudW5pb24oW2JvZHkuY29fY3R4XSksIG0pO1xuICB8IFNlcShlMSwgZTIpID0+XG4gICAgbGV0IChlMSwgbSkgPSBnbyh+bW9kZT1TeW4sIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZTIudHkpLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtlMS5jb19jdHgsIGUyLmNvX2N0eF0pLCBtKTtcbiAgfCBDb25zdHJ1Y3RvcihjdHIpID0+IGF0b21pYyhTZWxmLm9mX2N0cihjdHgsIGN0cikpXG4gIHwgQXAoXywgZm4sIGFyZykgPT5cbiAgICBsZXQgZm5fbW9kZSA9IE1vZGUub2ZfYXAoY3R4LCBtb2RlLCBVRXhwLmN0cl9uYW1lKGZuKSk7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT1mbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgZm4udHkpO1xuICAgIGxldCAoYXJnLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGFyZywgbSk7XG4gICAgbGV0IHNlbGY6IFNlbGYudCA9XG4gICAgICBJZC5pc19udWxsYXJ5X2FwX2ZsYWcoYXJnLnRlcm0uaWRzKVxuICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfaW4sIFByb2QoW10pIHw+IFR5cC5ta19mYXN0KVxuICAgICAgICA/IEJhZFRyaXZBcCh0eV9pbikgOiBKdXN0KHR5X291dCk7XG4gICAgYWRkKH5zZWxmLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtmbi5jb19jdHgsIGFyZy5jb19jdHhdKSwgbSk7XG4gIHwgVHlwQXAoZm4sIHV0eXApID0+XG4gICAgbGV0IHR5cGZuX21vZGUgPSBNb2RlLnR5cGFwX21vZGU7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT10eXBmbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0IChfLCBtKSA9IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXR5cCwgbSk7XG4gICAgbGV0IChvcHRpb25fbmFtZSwgdHlfYm9keSkgPSBUeXAubWF0Y2hlZF9mb3JhbGwoY3R4LCBmbi50eSk7XG4gICAgbGV0IHR5ID0gVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgIHN3aXRjaCAob3B0aW9uX25hbWUpIHtcbiAgICB8IFNvbWUobmFtZSkgPT5cbiAgICAgIGFkZCh+c2VsZj1KdXN0KFR5cC5zdWJzdCh0eSwgbmFtZSwgdHlfYm9keSkpLCB+Y29fY3R4PWZuLmNvX2N0eCwgbSlcbiAgICB8IE5vbmUgPT4gYWRkKH5zZWxmPUp1c3QodHlfYm9keSksIH5jb19jdHg9Zm4uY29fY3R4LCBtKSAvKiBpbnZhbGlkIG5hbWUgbWF0Y2hlcyB3aXRoIG5vIGZyZWUgdHlwZSB2YXJpYWJsZXMuICovXG4gICAgfTtcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIGxldCBmbl9tb2RlID0gTW9kZS5vZl9hcChjdHgsIG1vZGUsIFVFeHAuY3RyX25hbWUoZm4pKTtcbiAgICBsZXQgKGZuLCBtKSA9IGdvKH5tb2RlPWZuX21vZGUsIGZuLCBtKTtcbiAgICBsZXQgKHR5X2luLCB0eV9vdXQpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBmbi50eSk7XG4gICAgbGV0IG51bV9hcmdzID0gTGlzdC5sZW5ndGgoYXJncyk7XG4gICAgbGV0IHR5X2lucyA9IFR5cC5tYXRjaGVkX2FyZ3MoY3R4LCBudW1fYXJncywgdHlfaW4pO1xuICAgIGxldCBzZWxmOiBTZWxmLmV4cCA9IFNlbGYub2ZfZGVmZXJyZWRfYXAoYXJncywgdHlfaW5zLCB0eV9vdXQpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfZGVmZXJyZWRfYXBfYXJncyhudW1fYXJncywgdHlfaW5zKTtcbiAgICBsZXQgKGFyZ3MsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGFyZ3MpO1xuICAgIGxldCBhcmdfY29fY3R4ID0gQ29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBhcmdzKSk7XG4gICAgYWRkJyh+c2VsZiwgfmNvX2N0eD1Db0N0eC51bmlvbihbZm4uY29fY3R4LCBhcmdfY29fY3R4XSksIG0pO1xuICB8IEZ1bihwLCBlLCBfLCBfKSA9PlxuICAgIGxldCAobW9kZV9wYXQsIG1vZGVfYm9keSkgPSBNb2RlLm9mX2Fycm93KGN0eCwgbW9kZSk7XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBsZXQgKGUsIG0pID0gZ28nKH5jdHg9cCcuY3R4LCB+bW9kZT1tb2RlX2JvZHksIGUsIG0pO1xuICAgIC8qIGFkZCBjb19jdHggdG8gcGF0dGVybiAqL1xuICAgIGxldCAocCwgbSkgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9ZS5jb19jdHgsIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEFycm93KHAudHksIGUudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Q29DdHgubWsoY3R4LCBwLmN0eCwgZS5jb19jdHgpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5cEZ1bih7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgYm9keSwgXylcbiAgICAgIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgbGV0IG1vZGVfYm9keSA9IE1vZGUub2ZfZm9yYWxsKGN0eCwgU29tZShuYW1lKSwgbW9kZSk7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGxldCBjdHhfYm9keSA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlPW1vZGVfYm9keSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChGb3JhbGwodXRwYXQsIGJvZHkudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Ym9keS5jb19jdHgsXG4gICAgICBtLFxuICAgICk7XG4gIHwgVHlwRnVuKHV0cGF0LCBib2R5LCBfKSA9PlxuICAgIGxldCBtb2RlX2JvZHkgPSBNb2RlLm9mX2ZvcmFsbChjdHgsIE5vbmUsIG1vZGUpO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28ofm1vZGU9bW9kZV9ib2R5LCBib2R5LCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEZvcmFsbCh1dHBhdCwgYm9keS50eSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1ib2R5LmNvX2N0eCxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIGxldCAocF9zeW4sIF8pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPXRydWUsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPVN5biwgcCwgbSk7XG4gICAgbGV0IChkZWYsIHBfYW5hX2N0eCwgbSwgdHlfcF9hbmEpID1cbiAgICAgIGlmICghaXNfcmVjdXJzaXZlKGN0eCwgcCwgZGVmLCBwX3N5bi50eSkpIHtcbiAgICAgICAgbGV0IChkZWYsIG0pID0gZ28ofm1vZGU9QW5hKHBfc3luLnR5KSwgZGVmLCBtKTtcbiAgICAgICAgbGV0IHR5X3BfYW5hID0gZGVmLnR5O1xuICAgICAgICBsZXQgKHBfYW5hJywgXykgPVxuICAgICAgICAgIGdvX3BhdChcbiAgICAgICAgICAgIH5pc19zeW5zd2l0Y2g9ZmFsc2UsXG4gICAgICAgICAgICB+Y29fY3R4PUNvQ3R4LmVtcHR5LFxuICAgICAgICAgICAgfm1vZGU9QW5hKHR5X3BfYW5hKSxcbiAgICAgICAgICAgIHAsXG4gICAgICAgICAgICBtLFxuICAgICAgICAgICk7XG4gICAgICAgIChkZWYsIHBfYW5hJy5jdHgsIG0sIHR5X3BfYW5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCAoZGVmX2Jhc2UsIF8pID1cbiAgICAgICAgICBnbycofmN0eD1wX3N5bi5jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCB0eV9wX2FuYSA9IGRlZl9iYXNlLnR5O1xuICAgICAgICAvKiBBbmFseXplIHBhdHRlcm4gdG8gaW5jb3Jwb3JhdGUgZGVmIHR5cGUgaW50byBjdHggKi9cbiAgICAgICAgbGV0IChwX2FuYScsIF8pID1cbiAgICAgICAgICBnb19wYXQoXG4gICAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgICAgIH5tb2RlPUFuYSh0eV9wX2FuYSksXG4gICAgICAgICAgICBwLFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQgZGVmX2N0eCA9IHBfYW5hJy5jdHg7XG4gICAgICAgIGxldCAoZGVmX2Jhc2UyLCBfKSA9IGdvJyh+Y3R4PWRlZl9jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCBhbmFfdHlfZm4gPSAoKHR5X2ZuMSwgdHlfZm4yKSwgdHlfcCkgPT4ge1xuICAgICAgICAgIFR5cC50ZXJtX29mKHR5X3ApID09IFR5cC5Vbmtub3duKFN5blN3aXRjaClcbiAgICAgICAgICAmJiAhVHlwLmVxKHR5X2ZuMSwgdHlfZm4yKVxuICAgICAgICAgICAgPyB0eV9mbjEgOiB0eV9wO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgYW5hID1cbiAgICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgICAgKGRlZl9iYXNlLnR5IHw+IFR5cC50ZXJtX29mLCBkZWZfYmFzZTIudHkgfD4gVHlwLnRlcm1fb2YpLFxuICAgICAgICAgICAgcF9zeW4udHkgfD4gVHlwLnRlcm1fb2YsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgfCAoKFByb2QodHlfZm5zMSksIFByb2QodHlfZm5zMikpLCBQcm9kKHR5X3BzKSkgPT5cbiAgICAgICAgICAgIGxldCB0eXMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcDIoYW5hX3R5X2ZuLCBMaXN0LmNvbWJpbmUodHlfZm5zMSwgdHlfZm5zMiksIHR5X3BzKTtcbiAgICAgICAgICAgIFR5cC5Qcm9kKHR5cykgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgICAgICAgfCAoKF8sIF8pLCBfKSA9PiBhbmFfdHlfZm4oKGRlZl9iYXNlLnR5LCBkZWZfYmFzZTIudHkpLCBwX3N5bi50eSlcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgKGRlZiwgbSkgPSBnbycofmN0eD1kZWZfY3R4LCB+bW9kZT1BbmEoYW5hKSwgZGVmLCBtKTtcbiAgICAgICAgKGRlZiwgZGVmX2N0eCwgbSwgdHlfcF9hbmEpO1xuICAgICAgfTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9cF9hbmFfY3R4LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgLyogYWRkIGNvX2N0eCB0byBwYXR0ZXJuICovXG4gICAgbGV0IChwX2FuYSwgbSkgPVxuICAgICAgZ29fcGF0KFxuICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICB+Y29fY3R4PWJvZHkuY29fY3R4LFxuICAgICAgICB+bW9kZT1BbmEodHlfcF9hbmEpLFxuICAgICAgICBwLFxuICAgICAgICBtLFxuICAgICAgKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KGJvZHkudHkpLFxuICAgICAgfmNvX2N0eD1cbiAgICAgICAgQ29DdHgudW5pb24oW2RlZi5jb19jdHgsIENvQ3R4Lm1rKGN0eCwgcF9hbmEuY3R4LCBib2R5LmNvX2N0eCldKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBGaXhGKHAsIGUsIF8pID0+XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlLCBwLCBtKTtcbiAgICBsZXQgKGUnLCBtKSA9IGdvJyh+Y3R4PXAnLmN0eCwgfm1vZGU9QW5hKHAnLnR5KSwgZSwgbSk7XG4gICAgbGV0IChwJycsIG0pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4PWUnLmNvX2N0eCwgfm1vZGUsIHAsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QocCcudHkpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbQ29DdHgubWsoY3R4LCBwJycuY3R4LCBlJy5jb19jdHgpXSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgSWYoZTAsIGUxLCBlMikgPT5cbiAgICBsZXQgYnJhbmNoX2lkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBbZTEsIGUyXSk7XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlPUFuYShCb29sIHw+IFR5cC5ta19mYXN0KSwgZTAsIG0pO1xuICAgIGxldCAoY29ucywgbSkgPSBnbyh+bW9kZSwgZTEsIG0pO1xuICAgIGxldCAoYWx0LCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIFtjb25zLnR5LCBhbHQudHldLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBjb25zLmNvX2N0eCwgYWx0LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IE1hdGNoKHNjcnV0LCBydWxlcykgPT5cbiAgICBsZXQgKHNjcnV0LCBtKSA9IGdvKH5tb2RlPVN5biwgc2NydXQsIG0pO1xuICAgIGxldCAocHMsIGVzKSA9IExpc3Quc3BsaXQocnVsZXMpO1xuICAgIGxldCBicmFuY2hfaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIGVzKTtcbiAgICBsZXQgKHBzJywgXykgPVxuICAgICAgbWFwX20oXG4gICAgICAgIGdvX3BhdChcbiAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgICAgfm1vZGU9TW9kZS5BbmEoc2NydXQudHkpLFxuICAgICAgICApLFxuICAgICAgICBwcyxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgbGV0IHBfY3R4cyA9IExpc3QubWFwKEluZm8ucGF0X2N0eCwgcHMnKTtcbiAgICBsZXQgKGVzLCBtKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgICgoZXMsIG0pLCBlLCBjdHgpID0+XG4gICAgICAgICAgZ28nKH5jdHgsIH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAgIChbXSwgbSksXG4gICAgICAgIGVzLFxuICAgICAgICBwX2N0eHMsXG4gICAgICApO1xuICAgIGxldCBlX3R5cyA9IExpc3QubWFwKEluZm8uZXhwX3R5LCBlcyk7XG4gICAgbGV0IGVfY29fY3R4cyA9XG4gICAgICBMaXN0Lm1hcDIoQ29DdHgubWsoY3R4KSwgcF9jdHhzLCBMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSk7XG4gICAgLyogQWRkIGNvLWN0eHMgdG8gcGF0dGVybnMgKi9cbiAgICBsZXQgKF8sIG0pID1cbiAgICAgIG1hcF9tKFxuICAgICAgICAoKHAsIGNvX2N0eCkpID0+XG4gICAgICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHgsIH5tb2RlPU1vZGUuQW5hKHNjcnV0LnR5KSwgcCksXG4gICAgICAgIExpc3QuY29tYmluZShwcywgZV9jb19jdHhzKSxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIGVfdHlzLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW3NjcnV0LmNvX2N0eF0gQCBlX2NvX2N0eHMpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5QWxpYXModHlwYXQsIHV0eXAsIGJvZHkpID0+XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB0eXBhdCwgbSkgfD4gc25kO1xuICAgIHN3aXRjaCAodHlwYXQudGVybSkge1xuICAgIHwgVmFyKG5hbWUpIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgICAvKiBDdXJyZW50bHkgd2UgZGlzYWxsb3cgYWxsIHR5cGUgc2hhZG93aW5nICovXG4gICAgICAvKiBOT1RFKGFuZHJldyk6IEN1cnJlbnRseSwgVVR5cC50b190eXAgcmV0dXJucyBVbmtub3duKFR5cGVIb2xlKVxuICAgICAgICAgZm9yIGFueSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBub3QgaW4gaXRzIGN0eC4gU28gYW55IGZyZWUgdmFyaWFibGVzXG4gICAgICAgICBpbiB0aGUgZGVmaW5pdGlvbiB3b3VsZCBiZSBvYmxpdGVyYXRlZC4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgZm9yIGZyZWVcbiAgICAgICAgIHZhcmlhYmxlcyB0byBkZWNpZGUgd2hldGhlciB0byBtYWtlIGEgcmVjdXJzaXZlIHR5cGUgb3Igbm90LiBTbyB3ZVxuICAgICAgICAgdGVudGF0aXZlbHkgYWRkIGFuIGFidHJhY3QgdHlwZSB0byB0aGUgY3R4LCByZXByZXNlbnRpbmcgdGhlXG4gICAgICAgICBzcGVjdWxhdGl2ZSByZWMgcGFyYW1ldGVyLiAqL1xuICAgICAgbGV0ICh0eV9kZWYsIGN0eF9kZWYsIGN0eF9ib2R5KSA9IHtcbiAgICAgICAgbGV0IHR5X3ByZSA9IFVUeXAudG9fdHlwKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHR5cGF0KSwgdXR5cCk7XG4gICAgICAgIHN3aXRjaCAodXR5cC50ZXJtKSB7XG4gICAgICAgIHwgU3VtKF8pIHdoZW4gTGlzdC5tZW0obmFtZSwgVHlwLmZyZWVfdmFycyh0eV9wcmUpKSA9PlxuICAgICAgICAgIC8qIE5PVEU6IFdoZW4gZGVidWdnaW5nIHR5cGUgc3lzdGVtIGlzc3VlcyBpdCBtYXkgYmUgYmVuZWZpY2lhbCB0b1xuICAgICAgICAgICAgIHVzZSBhIGRpZmZlcmVudCBuYW1lIHRoYW4gdGhlIGFsaWFzIGZvciB0aGUgcmVjdXJzaXZlIHBhcmFtZXRlciAqL1xuICAgICAgICAgIC8vbGV0IHR5X3JlYyA9IFR5cC5SZWMoXCLOsVwiLCBUeXAuc3Vic3QoVmFyKFwizrFcIiksIG5hbWUsIHR5X3ByZSkpO1xuICAgICAgICAgIGxldCB0eV9yZWMgPVxuICAgICAgICAgICAgVHlwLlJlYyhUUGF0LlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaCwgdHlfcHJlKSB8PiBUeXAubWtfZmFzdDtcbiAgICAgICAgICBsZXQgY3R4X2RlZiA9XG4gICAgICAgICAgICBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVFBhdC5yZXBfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAgICh0eV9yZWMsIGN0eF9kZWYsIGN0eF9kZWYpO1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAgICh0eSwgY3R4LCBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVFBhdC5yZXBfaWQodHlwYXQpLCB0eSkpO1xuICAgICAgICB9O1xuICAgICAgICAvKiBOT1RFKHl1Y2hlbik6IEJlbG93IGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHRoYXQgYXR0ZW1wdHMgdG9cbiAgICAgICAgICAgYWRkIGEgcmVjIHdoZW5ldmVyIHR5cGUgYWxpYXMgaXMgcHJlc2VudC4gSXQgbWF5IGNhdXNlIHRyb3VibGUgdG8gdGhlXG4gICAgICAgICAgIHJ1bnRpbWUsIHNvIHByZWNlZGUgd2l0aCBjYXV0aW9uLiAqL1xuICAgICAgICAvLyBUeXAubG9va3VwX3N1cmZhY2UodHlfcHJlKVxuICAgICAgICAvLyAgID8ge1xuICAgICAgICAvLyAgICAgbGV0IHR5X3JlYyA9IFR5cC5SZWMoe2l0ZW06IHR5X3ByZSwgbmFtZX0pO1xuICAgICAgICAvLyAgICAgbGV0IGN0eF9kZWYgPSBDdHguYWRkX2FsaWFzKGN0eCwgbmFtZSwgdXRwYXRfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAvLyAgICAgKHR5X3JlYywgY3R4X2RlZiwgY3R4X2RlZik7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgIDoge1xuICAgICAgICAvLyAgICAgbGV0IHR5ID0gVGVybS5VVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAvLyAgICAgKHR5LCBjdHgsIEN0eC5hZGRfYWxpYXMoY3R4LCBuYW1lLCB1dHBhdF9pZCh0eXBhdCksIHR5KSk7XG4gICAgICAgIC8vICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgY3R4X2JvZHkgPVxuICAgICAgICBzd2l0Y2ggKFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2RlZikpIHtcbiAgICAgICAgfCBTb21lKHNtKSA9PiBDdHguYWRkX2N0cnMoY3R4X2JvZHksIG5hbWUsIFVUeXAucmVwX2lkKHV0eXApLCBzbSlcbiAgICAgICAgfCBOb25lID0+IGN0eF9ib2R5XG4gICAgICAgIH07XG4gICAgICBsZXQgKHtjb19jdHgsIHR5OiB0eV9ib2R5LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgICAgZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlLCBib2R5LCBtKTtcbiAgICAgIC8qIE1ha2Ugc3VyZSB0eXBlcyBkb24ndCBlc2NhcGUgdGhlaXIgc2NvcGUgKi9cbiAgICAgIGxldCB0eV9lc2NhcGUgPSBUeXAuc3Vic3QodHlfZGVmLCB0eXBhdCwgdHlfYm9keSk7XG4gICAgICBsZXQgbSA9IHV0eXBfdG9faW5mb19tYXAofmN0eD1jdHhfZGVmLCB+YW5jZXN0b3JzLCB1dHlwLCBtKSB8PiBzbmQ7XG4gICAgICBhZGQofnNlbGY9SnVzdCh0eV9lc2NhcGUpLCB+Y29fY3R4LCBtKTtcbiAgICB8IFZhcihfKVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgIGxldCAoe2NvX2N0eCwgdHk6IHR5X2JvZHksIF99OiBJbmZvLmV4cCwgbSkgPVxuICAgICAgICBnbycofmN0eCwgfm1vZGUsIGJvZHksIG0pO1xuICAgICAgbGV0IG0gPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0eXAsIG0pIHw+IHNuZDtcbiAgICAgIGFkZCh+c2VsZj1KdXN0KHR5X2JvZHkpLCB+Y29fY3R4LCBtKTtcbiAgICB9O1xuICB9O1xufVxuYW5kIHVwYXRfdG9faW5mb19tYXAgPVxuICAgIChcbiAgICAgIH5pc19zeW5zd2l0Y2gsXG4gICAgICB+Y3R4LFxuICAgICAgfmNvX2N0eCxcbiAgICAgIH5hbmNlc3RvcnM6IEluZm8uYW5jZXN0b3JzLFxuICAgICAgfm1vZGU6IE1vZGUudD1Nb2RlLlN5bixcbiAgICAgIHtpZHMsIHRlcm0sIF99IGFzIHVwYXQ6IFVQYXQudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9ICh+c2VsZiwgfmN0eCwgbSkgPT4ge1xuICAgIGxldCBwcmV2X3N5bnN3aXRjaCA9XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChQYXQucmVwX2lkKHVwYXQpLCBtKSkge1xuICAgICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZTogU3luIHwgU3luRnVuLCB0eSwgX30pKSA9PiBTb21lKHR5KVxuICAgICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZTogQW5hKF8pLCBwcmV2X3N5bnN3aXRjaCwgX30pKSA9PiBwcmV2X3N5bnN3aXRjaFxuICAgICAgfCBTb21lKF8pXG4gICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQgaW5mbyA9XG4gICAgICBJbmZvLmRlcml2ZWRfcGF0KFxuICAgICAgICB+cHJldl9zeW5zd2l0Y2gsXG4gICAgICAgIH51cGF0LFxuICAgICAgICB+Y3R4LFxuICAgICAgICB+Y29fY3R4LFxuICAgICAgICB+bW9kZSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfnNlbGY9Q29tbW9uKHNlbGYpLFxuICAgICAgKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvUGF0KGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhdG9taWMgPSBzZWxmID0+IGFkZCh+c2VsZiwgfmN0eCwgbSk7XG4gIGxldCBhbmNlc3RvcnMgPSBbVVBhdC5yZXBfaWQodXBhdCldIEAgYW5jZXN0b3JzO1xuICBsZXQgZ28gPSB1cGF0X3RvX2luZm9fbWFwKH5pc19zeW5zd2l0Y2gsIH5hbmNlc3RvcnMsIH5jb19jdHgpO1xuICBsZXQgdW5rbm93biA9IFR5cC5Vbmtub3duKGlzX3N5bnN3aXRjaCA/IFN5blN3aXRjaCA6IEludGVybmFsKTtcbiAgbGV0IGN0eF9mb2xkID0gKGN0eDogQ3R4LnQsIG0pID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChjdHgsIHR5cywgbSksIGUsIG1vZGUpID0+XG4gICAgICAgIGdvKH5jdHgsIH5tb2RlLCBlLCBtKVxuICAgICAgICB8PiAoKChpbmZvLCBtKSkgPT4gKGluZm8uY3R4LCB0eXMgQCBbaW5mby50eV0sIG0pKSxcbiAgICAgIChjdHgsIFtdLCBtKSxcbiAgICApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZCh+c2VsZj1Jc011bHRpLCB+Y3R4LCBtKTtcbiAgfCBJbnZhbGlkKHRva2VuKSA9PiBhdG9taWMoQmFkVG9rZW4odG9rZW4pKVxuICB8IEVtcHR5SG9sZSA9PiBhdG9taWMoSnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBJbnQoXykgPT4gYXRvbWljKEp1c3QoSW50IHw+IFR5cC5ta19mYXN0KSlcbiAgfCBGbG9hdChfKSA9PiBhdG9taWMoSnVzdChGbG9hdCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgQm9vbChfKSA9PiBhdG9taWMoSnVzdChCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBTdHJpbmcoXykgPT4gYXRvbWljKEp1c3QoU3RyaW5nIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIGxldCBpZHMgPSBMaXN0Lm1hcChVUGF0LnJlcF9pZCwgcHMpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfbGlzdF9saXQoY3R4LCBMaXN0Lmxlbmd0aChwcyksIG1vZGUpO1xuICAgIGxldCAoY3R4LCB0eXMsIG0pID0gY3R4X2ZvbGQoY3R4LCBtLCBwcywgbW9kZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdGxpdCh+ZW1wdHk9dW5rbm93biB8PiBUeXAubWtfZmFzdCwgY3R4LCB0eXMsIGlkcyksXG4gICAgICB+Y3R4LFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9XG4gICAgICBnbyh+Y3R4PWhkLmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX3RsKGN0eCwgbW9kZSwgaGQudHkpLCB0bCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoTGlzdChoZC50eSkgfD4gVHlwLm1rX2Zhc3QpLCB+Y3R4PXRsLmN0eCwgbSk7XG4gIHwgV2lsZCA9PiBhdG9taWMoSnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICAvKiBOT1RFOiBUaGUgc2VsZiB0eXBlIGFzc2lnbmVkIHRvIHBhdHRlcm4gdmFyaWFibGVzIChVbmtub3duKVxuICAgICAgIG1heSBiZSBTeW5Td2l0Y2gsIGJ1dCBTeW5Td2l0Y2ggaXMgbmV2ZXIgYWRkZWQgdG8gdGhlIGNvbnRleHQ7XG4gICAgICAgVW5rbm93bihJbnRlcm5hbCkgaXMgdXNlZCBpbiB0aGlzIGNhc2UgKi9cbiAgICBsZXQgY3R4X3R5cCA9XG4gICAgICBJbmZvLmZpeGVkX3R5cF9wYXQoXG4gICAgICAgIGN0eCxcbiAgICAgICAgbW9kZSxcbiAgICAgICAgQ29tbW9uKEp1c3QoVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpKSxcbiAgICAgICk7XG4gICAgbGV0IGVudHJ5ID0gQ3R4LlZhckVudHJ5KHtuYW1lLCBpZDogVVBhdC5yZXBfaWQodXBhdCksIHR5cDogY3R4X3R5cH0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHVua25vd24gfD4gVHlwLm1rX2Zhc3QpLCB+Y3R4PUN0eC5leHRlbmQoY3R4LCBlbnRyeSksIG0pO1xuICB8IFR1cGxlKHBzKSA9PlxuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfcHJvZChjdHgsIG1vZGUsIExpc3QubGVuZ3RoKHBzKSk7XG4gICAgbGV0IChjdHgsIHR5cywgbSkgPSBjdHhfZm9sZChjdHgsIG0sIHBzLCBtb2Rlcyk7XG4gICAgYWRkKH5zZWxmPUp1c3QoUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KSwgfmN0eCwgbSk7XG4gIHwgUGFyZW5zKHApID0+XG4gICAgbGV0IChwLCBtKSA9IGdvKH5jdHgsIH5tb2RlLCBwLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChwLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PiBhdG9taWMoU2VsZi5vZl9jdHIoY3R4LCBjdHIpKVxuICB8IEFwKGZuLCBhcmcpID0+XG4gICAgbGV0IGZuX21vZGUgPSBNb2RlLm9mX2FwKGN0eCwgbW9kZSwgVVBhdC5jdHJfbmFtZShmbikpO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofmN0eCwgfm1vZGU9Zm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGZuLnR5KTtcbiAgICBsZXQgKGFyZywgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEodHlfaW4pLCBhcmcsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jdHg9YXJnLmN0eCwgbSk7XG4gIHwgQ2FzdChwLCBhbm4sIF8pID0+XG4gICAgbGV0IChhbm4sIG0pID0gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCBhbm4sIG0pO1xuICAgIGxldCAocCwgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEoYW5uLnR5KSwgcCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYW5uLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIH07XG59XG5hbmQgdXR5cF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5leHBlY3RzPUluZm8uVHlwZUV4cGVjdGVkLFxuICAgICAgfmFuY2VzdG9ycyxcbiAgICAgIHtpZHMsIHRlcm0sIF99IGFzIHV0eXA6IFVUeXAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnR5cCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3R5cCh+dXR5cCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9UeXAoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVVHlwLnJlcF9pZCh1dHlwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCBnbycgPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgZ28gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkKTtcbiAgLy9UT0RPKGFuZHJldyk6IG1ha2UgdGhpcyByZXR1cm4gZnJlZSwgcmVwbGFjaW5nIFR5cC5mcmVlX3ZhcnNcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZSh0bXMpKSkgPT5cbiAgICBsZXQgKF8sIG0pID0gbXVsdGkofmN0eCwgfmFuY2VzdG9ycywgbSwgdG1zKTtcbiAgICBhZGQobSk7XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiBhZGQobSlcbiAgfCBWYXIoXykgPT5cbiAgICAvKiBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gSW5mby5zdGF0dXNfdHlwICovXG4gICAgYWRkKG0pXG4gIHwgTGlzdCh0KVxuICB8IFBhcmVucyh0KSA9PiBhZGQoZ28odCwgbSkgfD4gc25kKVxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBsZXQgbSA9IGdvKHQxLCBtKSB8PiBzbmQ7XG4gICAgbGV0IG0gPSBnbyh0MiwgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBQcm9kKHRzKSA9PlxuICAgIGxldCBtID0gbWFwX20oZ28sIHRzLCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pO1xuICB8IEFwKHQxLCB0MikgPT5cbiAgICBsZXQgdHlfaW4gPSBVVHlwLnRvX3R5cChjdHgsIHQyKTtcbiAgICBsZXQgdDFfbW9kZTogSW5mby50eXBfZXhwZWN0cyA9XG4gICAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICAgIHwgVmFyaWFudEV4cGVjdGVkKG0sIHN1bV90eSkgPT5cbiAgICAgICAgQ29uc3RydWN0b3JFeHBlY3RlZChtLCBBcnJvdyh0eV9pbiwgc3VtX3R5KSB8PiBUeXAubWtfZmFzdClcbiAgICAgIHwgXyA9PlxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIFVuaXF1ZSxcbiAgICAgICAgICBBcnJvdyh0eV9pbiwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgICApXG4gICAgICB9O1xuICAgIGxldCBtID0gZ28nKH5leHBlY3RzPXQxX21vZGUsIHQxLCBtKSB8PiBzbmQ7XG4gICAgbGV0IG0gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkLCB0MiwgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBTdW0odmFyaWFudHMpID0+XG4gICAgbGV0IHR5X3N1bSA9IFVUeXAudG9fdHlwKGN0eCwgdXR5cCk7XG4gICAgbGV0IChtLCBfKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgdmFyaWFudF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+dHlfc3VtKSxcbiAgICAgICAgKG0sIFtdKSxcbiAgICAgICAgdmFyaWFudHMsXG4gICAgICApO1xuICAgIGFkZChtKTtcbiAgfCBGb3JhbGwoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgIGxldCBib2R5X2N0eCA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKFxuICAgICAgICB0Ym9keSxcbiAgICAgICAgfmN0eD1ib2R5X2N0eCxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgRm9yYWxsKHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKHRib2R5LCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIG0pXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGFkZChtKTsgLy8gVE9ETzogY2hlY2sgd2l0aCBhbmRyZXdcbiAgfCBSZWMoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgIGxldCBib2R5X2N0eCA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKFxuICAgICAgICB0Ym9keSxcbiAgICAgICAgfmN0eD1ib2R5X2N0eCxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgUmVjKHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKHRib2R5LCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIG0pXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGFkZChtKTsgLy8gVE9ETzogY2hlY2sgd2l0aCBhbmRyZXdcbiAgfTtcbn1cbmFuZCB1dHBhdF90b19pbmZvX21hcCA9XG4gICAgKH5jdHgsIH5hbmNlc3RvcnMsIHtpZHMsIHRlcm0sIF99IGFzIHV0cGF0OiBUUGF0LnQsIG06IE1hcC50KVxuICAgIDogKEluZm8udHBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3RwYXQofnV0cGF0LCB+Y3R4LCB+YW5jZXN0b3JzKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvVFBhdChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYW5jZXN0b3JzID0gW1RQYXQucmVwX2lkKHV0cGF0KV0gQCBhbmNlc3RvcnM7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChfLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKG0pO1xuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBWYXIoXykgPT4gYWRkKG0pXG4gIH07XG59XG5hbmQgdmFyaWFudF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB+dHlfc3VtLFxuICAgICAgKG0sIGN0cnMpLFxuICAgICAgdXR5OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KFVUeXAudCksXG4gICAgKSA9PiB7XG4gIGxldCBnbyA9IGV4cGVjdHMgPT4gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cyk7XG4gIHN3aXRjaCAodXR5KSB7XG4gIHwgQmFkRW50cnkodXR5KSA9PlxuICAgIGxldCBtID0gZ28oVmFyaWFudEV4cGVjdGVkKFVuaXF1ZSwgdHlfc3VtKSwgdXR5LCBtKSB8PiBzbmQ7XG4gICAgKG0sIGN0cnMpO1xuICB8IFZhcmlhbnQoY3RyLCBpZHMsIHBhcmFtKSA9PlxuICAgIGxldCBtID1cbiAgICAgIGdvKFxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIExpc3QubWVtKGN0ciwgY3RycykgPyBEdXBsaWNhdGUgOiBVbmlxdWUsXG4gICAgICAgICAgdHlfc3VtLFxuICAgICAgICApLFxuICAgICAgICB7dGVybTogVmFyKGN0ciksIGlkcywgY29waWVkOiBmYWxzZX0sXG4gICAgICAgIG0sXG4gICAgICApXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPVxuICAgICAgc3dpdGNoIChwYXJhbSkge1xuICAgICAgfCBTb21lKHBhcmFtX3R5KSA9PiBnbyhUeXBlRXhwZWN0ZWQsIHBhcmFtX3R5LCBtKSB8PiBzbmRcbiAgICAgIHwgTm9uZSA9PiBtXG4gICAgICB9O1xuICAgIChtLCBbY3RyLCAuLi5jdHJzXSk7XG4gIH07XG59O1xuXG5sZXQgZ2V0X2Vycm9yX2F0ID0gKGluZm9fbWFwOiBNYXAudCwgaWQ6IElkLnQpID0+IHtcbiAgaWRcbiAgfD4gSWQuTWFwLmZpbmRfb3B0KF8sIGluZm9fbWFwKVxuICB8PiBPcHRpb24uYmluZChcbiAgICAgICBfLFxuICAgICAgIGZ1blxuICAgICAgIHwgSW5mb0V4cChlKSA9PiBTb21lKGUpXG4gICAgICAgfCBfID0+IE5vbmUsXG4gICAgIClcbiAgfD4gT3B0aW9uLmJpbmQoXywgZSA9PlxuICAgICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcbiAgICAgICB8IEluSG9sZShlcnJfaW5mbykgPT4gU29tZShlcnJfaW5mbylcbiAgICAgICB8IE5vdEluSG9sZShfKSA9PiBOb25lXG4gICAgICAgfVxuICAgICApO1xufTtcblxubGV0IGdldF9wYXRfZXJyb3JfYXQgPSAoaW5mb19tYXA6IE1hcC50LCBpZDogSWQudCkgPT4ge1xuICBpZFxuICB8PiBJZC5NYXAuZmluZF9vcHQoXywgaW5mb19tYXApXG4gIHw+IE9wdGlvbi5iaW5kKFxuICAgICAgIF8sXG4gICAgICAgZnVuXG4gICAgICAgfCBJbmZvUGF0KGUpID0+IFNvbWUoZSlcbiAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgKVxuICB8PiBPcHRpb24uYmluZChfLCBlID0+XG4gICAgICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgIHwgSW5Ib2xlKGVycl9pbmZvKSA9PiBTb21lKGVycl9pbmZvKVxuICAgICAgIHwgTm90SW5Ib2xlKF8pID0+IE5vbmVcbiAgICAgICB9XG4gICAgICk7XG59O1xuXG5sZXQgY29sbGVjdF9lcnJvcnMgPSAobWFwOiBNYXAudCk6IGxpc3QoKElkLnQsIEluZm8uZXJyb3IpKSA9PlxuICBJZC5NYXAuZm9sZChcbiAgICAoaWQsIGluZm86IEluZm8udCwgYWNjKSA9PlxuICAgICAgT3B0aW9uLnRvX2xpc3QoSW5mby5lcnJvcl9vZihpbmZvKSB8PiBPcHRpb24ubWFwKHggPT4gKGlkLCB4KSkpIEAgYWNjLFxuICAgIG1hcCxcbiAgICBbXSxcbiAgKTtcbiIsImluY2x1ZGUgUGF0O1xuXG4vKiBBIER5bmFtaWMgUGF0dGVybiAoREhQYXQpIGlzIGEgcGF0dGVybiB0aGF0IGlzIHBhcnQgb2YgYW4gZXhwcmVzc2lvblxuICAgdGhhdCBoYXMgYmVlbiB0eXBlLWNoZWNrZWQuIEhlbmNlIHdoeSB0aGVzZSBmdW5jdGlvbnMgdGFrZSBib3RoIGFcbiAgIHBhdHRlcm4sIGRwLCBhbmQgYW4gaW5mbyBtYXAsIG0sIHdpdGggdHlwZSBpbmZvcm1hdGlvbi4gKi9cblxuLyoqXG4gKiBXaGV0aGVyIGRwIGNvbnRhaW5zIHRoZSB2YXJpYWJsZSB4IG91dHNpZGUgb2YgYSBob2xlLlxuICovXG5sZXQgcmVjIGJpbmRzX3ZhciA9IChtOiBTdGF0aWNzLk1hcC50LCB4OiBWYXIudCwgZHA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoU3RhdGljcy5nZXRfcGF0X2Vycm9yX2F0KG0sIHJlcF9pZChkcCkpKSB7XG4gIHwgU29tZShfKSA9PiBmYWxzZVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKGRwIHw+IHRlcm1fb2YpIHtcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfCBDYXN0KHksIF8sIF8pXG4gICAgfCBQYXJlbnMoeSkgPT4gYmluZHNfdmFyKG0sIHgsIHkpXG4gICAgfCBWYXIoeSkgPT4gVmFyLmVxKHgsIHkpXG4gICAgfCBUdXBsZShkcHMpID0+IGRwcyB8PiBMaXN0LmV4aXN0cyhiaW5kc192YXIobSwgeCkpXG4gICAgfCBDb25zKGRwMSwgZHAyKSA9PiBiaW5kc192YXIobSwgeCwgZHAxKSB8fCBiaW5kc192YXIobSwgeCwgZHAyKVxuICAgIHwgTGlzdExpdChkX2xpc3QpID0+XG4gICAgICBsZXQgbmV3X2xpc3QgPSBMaXN0Lm1hcChiaW5kc192YXIobSwgeCksIGRfbGlzdCk7XG4gICAgICBMaXN0LmZvbGRfbGVmdCgofHwpLCBmYWxzZSwgbmV3X2xpc3QpO1xuICAgIHwgQXAoXywgXykgPT4gZmFsc2VcbiAgICB9XG4gIH07XG5cbmxldCByZWMgYm91bmRfdmFycyA9IChkcDogdCk6IGxpc3QoVmFyLnQpID0+XG4gIHN3aXRjaCAoZHAgfD4gdGVybV9vZikge1xuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gW11cbiAgfCBDYXN0KHksIF8sIF8pXG4gIHwgUGFyZW5zKHkpID0+IGJvdW5kX3ZhcnMoeSlcbiAgfCBWYXIoeSkgPT4gW3ldXG4gIHwgVHVwbGUoZHBzKSA9PiBMaXN0LmZsYXR0ZW4oTGlzdC5tYXAoYm91bmRfdmFycywgZHBzKSlcbiAgfCBDb25zKGRwMSwgZHAyKSA9PiBib3VuZF92YXJzKGRwMSkgQCBib3VuZF92YXJzKGRwMilcbiAgfCBMaXN0TGl0KGRwcykgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGJvdW5kX3ZhcnMsIGRwcykpXG4gIHwgQXAoXywgZHAxKSA9PiBib3VuZF92YXJzKGRwMSlcbiAgfTtcbiIsIm9wZW4gVXRpbDtcblxuLyogVGhlIGNhc3QgY2FsY3VsdXMgaXMgYmFzZWQgb2ZmIHRoZSBQT1BMIDIwMTkgcGFwZXI6XG4gICBodHRwczovL2FyeGl2Lm9yZy9wZGYvMTgwNS4wMDE1NS5wZGYgKi9cblxuLyogR1JPVU5EIFRZUEVTICovXG5cbi8qIFlvdSBjYW4gdGhpbmsgb2YgYSBncm91bmQgdHlwZSBhcyBhIHR5cGV0IHRoYXQgdGVsbHMgeW91IHdoYXQgdGhlIHJvb3Qgb2YgdGhlXG4gICAgICB0eXBlIGV4cHJlc3Npb24gaXMsIGJ1dCBub3RoaW5nIG1vcmUuIEZvciBleGFtcGxlOiBJbnQsIFs/XSwgPyAtPiA/LCAuLi4gYXJlXG4gICAgICBncm91bmQgdHlwZXMgYW5kIFtJbnRdLCA/IC0+IEZsb2F0IGFyZSBub3QuXG5cbiAgICAgIFRoZSBtb3N0IGltcG9ydGFudCBwcm9wZXJ0eSBvZiBncm91bmQgdHlwZXMgaXM6XG4gICAgICAgICAgSWYgdHdvIHR5cGVzIGFyZSBncm91bmQgdHlwZXMsXG4gICAgICAgICAgYW5kIHRoZSB0d28gdHlwZXMgYXJlIGNvbnNpc3RlbnQsXG4gICAgICAgICAgdGhlbiB0aGV5IGFyZSBlcXVhbC5cblxuICAgICAgIE1ha2Ugc3VyZSB0aGlzIGhvbGRzIGZvciB5b3VyIG5ldyBmZWF0dXJlISFcblxuICAgICAgIGUuZy4gWz9dIGFuZCBbP10gYXJlIGVxdWFsLCBidXQgWz9dIGFuZCBbSW50XSBhcmUgbm90IChiZWNhdXNlIFtJbnRdIGlzIG5vdFxuICAgICAgIGdyb3VuZCwgZXZlbiB0aG91Z2ggW0ludF0gYW5kIFs/XSBhcmUgY29uc2lzdGVudCkuXG5cbiAgICovXG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgZ3JvdW5kX2Nhc2VzID1cbiAgfCBIb2xlXG4gIHwgR3JvdW5kXG4gIHwgTm90R3JvdW5kT3JIb2xlKFR5cC50KSAvKiB0aGUgYXJndW1lbnQgaXMgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdW5kIHR5cGUgKi87XG5cbmxldCBncm91bmRlZF9BcnJvdyA9XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBBcnJvdyhcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgKVxuICAgIHw+IFR5cC5ta19mYXN0LFxuICApO1xubGV0IGdyb3VuZGVkX0ZvcmFsbCA9XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBGb3JhbGwoRW1wdHlIb2xlIHw+IFRQYXQuZnJlc2gsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KVxuICAgIHw+IFR5cC5ta19mYXN0LFxuICApO1xubGV0IGdyb3VuZGVkX1Byb2QgPSBsZW5ndGggPT5cbiAgTm90R3JvdW5kT3JIb2xlKFxuICAgIFByb2QoTGlzdFV0aWwucmVwbGljYXRlKGxlbmd0aCwgVHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgICB8PiBUeXAubWtfZmFzdCxcbiAgKTtcbmxldCBncm91bmRlZF9TdW06IHVuaXQgPT4gVHlwLnN1bV9tYXAgPVxuICAoKSA9PiBbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV07XG5sZXQgZ3JvdW5kZWRfTGlzdCA9XG4gIE5vdEdyb3VuZE9ySG9sZShMaXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdCk7XG5cbmxldCByZWMgZ3JvdW5kX2Nhc2VzX29mID0gKHR5OiBUeXAudCk6IGdyb3VuZF9jYXNlcyA9PiB7XG4gIGxldCBpc19ob2xlOiBUeXAudCA9PiBib29sID1cbiAgICBmdW5cbiAgICB8IHt0ZXJtOiBUeXAuVW5rbm93bihfKSwgX30gPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZTtcbiAgc3dpdGNoIChUeXAudGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKF8pID0+IEhvbGVcbiAgfCBCb29sXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBTdHJpbmdcbiAgfCBWYXIoXylcbiAgfCBSZWMoXylcbiAgfCBGb3JhbGwoXywge3Rlcm06IFVua25vd24oXyksIF99KVxuICB8IEFycm93KHt0ZXJtOiBVbmtub3duKF8pLCBffSwge3Rlcm06IFVua25vd24oXyksIF99KVxuICB8IExpc3Qoe3Rlcm06IFVua25vd24oXyksIF99KSA9PiBHcm91bmRcbiAgfCBQYXJlbnModHkpID0+IGdyb3VuZF9jYXNlc19vZih0eSlcbiAgfCBQcm9kKHR5cykgPT5cbiAgICBpZiAoTGlzdC5mb3JfYWxsKFxuICAgICAgICAgIGZ1blxuICAgICAgICAgIHwgKHt0ZXJtOiBUeXAuVW5rbm93bihfKSwgX306IFR5cC50KSA9PiB0cnVlXG4gICAgICAgICAgfCBfID0+IGZhbHNlLFxuICAgICAgICAgIHR5cyxcbiAgICAgICAgKSkge1xuICAgICAgR3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXMgfD4gTGlzdC5sZW5ndGggfD4gZ3JvdW5kZWRfUHJvZDtcbiAgICB9XG4gIHwgU3VtKHNtKSA9PlxuICAgIHNtIHw+IENvbnN0cnVjdG9yTWFwLmlzX2dyb3VuZChpc19ob2xlKVxuICAgICAgPyBHcm91bmQgOiBOb3RHcm91bmRPckhvbGUoU3VtKGdyb3VuZGVkX1N1bSgpKSB8PiBUeXAubWtfZmFzdClcbiAgfCBBcnJvdyhfLCBfKSA9PiBncm91bmRlZF9BcnJvd1xuICB8IEZvcmFsbChfKSA9PiBncm91bmRlZF9Gb3JhbGxcbiAgfCBMaXN0KF8pID0+IGdyb3VuZGVkX0xpc3RcbiAgfCBBcChfKSA9PiBmYWlsd2l0aChcInR5cGUgYXBwbGljYXRpb24gaW4gZHluYW1pY3NcIilcbiAgfTtcbn07XG5cbi8qIENBU1QgQ0FMQ1VMVVMgKi9cblxuLyogUnVsZXMgYXJlIHRha2VuIGZyb20gZmlndXJlIDEyIG9mIGh0dHBzOi8vYXJ4aXYub3JnL3BkZi8xODA1LjAwMTU1LnBkZiAgKi9cblxuLyogZ2l2ZXMgYSB0cmFuc2l0aW9uIHN0ZXAgdGhhdCBjYW4gYmUgdGFrZW4gYnkgdGhlIGNhc3QgY2FsY3VsdXMgaGVyZSBpZiBhcHBsaWNhYmxlLiAqL1xubGV0IHJlYyB0cmFuc2l0aW9uID0gKH5yZWN1cnNpdmU9ZmFsc2UsIGQ6IERIRXhwLnQpOiBvcHRpb24oREhFeHAudCkgPT4ge1xuICBzd2l0Y2ggKERIRXhwLnRlcm1fb2YoZCkpIHtcbiAgfCBDYXN0KGQxLCB0MSwgdDIpID0+XG4gICAgbGV0IGQxID1cbiAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgZDEgfD4gdHJhbnNpdGlvbih+cmVjdXJzaXZlKSB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9ZDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZDE7XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZ3JvdW5kX2Nhc2VzX29mKHQxKSwgZ3JvdW5kX2Nhc2VzX29mKHQyKSkge1xuICAgIHwgKEhvbGUsIEhvbGUpXG4gICAgfCAoR3JvdW5kLCBHcm91bmQpID0+XG4gICAgICAvKiBpZiB0d28gdHlwZXMgYXJlIGdyb3VuZCBhbmQgY29uc2lzdGVudCwgdGhlbiB0aGV5IGFyZSBlcSAqL1xuICAgICAgU29tZShkMSkgLy8gUnVsZSBJVENhc3RJZFxuXG4gICAgfCAoR3JvdW5kLCBIb2xlKSA9PlxuICAgICAgLyogY2FuJ3QgcmVtb3ZlIHRoZSBjYXN0IG9yIGRvIGFueXRoaW5nIGVsc2UgaGVyZSwgc28gd2UncmUgZG9uZSAqL1xuICAgICAgTm9uZVxuXG4gICAgfCAoSG9sZSwgR3JvdW5kKSA9PlxuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxKSkge1xuICAgICAgfCBDYXN0KGQyLCB0Mywge3Rlcm06IFVua25vd24oXyksIF99KSA9PlxuICAgICAgICAvKiBieSBjYW5vbmljYWwgZm9ybXMsIGQxJyBtdXN0IGJlIG9mIHRoZSBmb3JtIGQ8dHknJyAtPiA/PiAqL1xuICAgICAgICBpZiAoVHlwLmVxKHQzLCB0MikpIHtcbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoZDIpOyAvLyBSdWxlIElUQ2FzdFN1Y2NlZWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmFpbGVkQ2FzdChkMiwgdDMsIHQyKSB8PiBESEV4cC5mcmVzaCk7IC8vIFJ1bGUgSVRDYXN0RmFpbFxuICAgICAgICB9XG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfVxuXG4gICAgfCAoSG9sZSwgTm90R3JvdW5kT3JIb2xlKHQyX2dyb3VuZGVkKSkgPT5cbiAgICAgIC8qIElURXhwYW5kIHJ1bGUgKi9cbiAgICAgIGxldCBpbm5lcl9jYXN0ID0gQ2FzdChkMSwgdDEsIHQyX2dyb3VuZGVkKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgIC8vIEhBQ0s6IHdlIG5lZWQgdG8gY2hlY2sgdGhlIGlubmVyIGNhc3QgaGVyZVxuICAgICAgbGV0IGlubmVyX2Nhc3QgPVxuICAgICAgICBzd2l0Y2ggKHRyYW5zaXRpb24ofnJlY3Vyc2l2ZSwgaW5uZXJfY2FzdCkpIHtcbiAgICAgICAgfCBTb21lKGQxKSA9PiBkMVxuICAgICAgICB8IE5vbmUgPT4gaW5uZXJfY2FzdFxuICAgICAgICB9O1xuICAgICAgU29tZShESEV4cC5DYXN0KGlubmVyX2Nhc3QsIHQyX2dyb3VuZGVkLCB0MikgfD4gREhFeHAuZnJlc2gpO1xuXG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKHQxX2dyb3VuZGVkKSwgSG9sZSkgPT5cbiAgICAgIC8qIElUR3JvdW5kIHJ1bGUgKi9cbiAgICAgIFNvbWUoXG4gICAgICAgIERIRXhwLkNhc3QoQ2FzdChkMSwgdDEsIHQxX2dyb3VuZGVkKSB8PiBESEV4cC5mcmVzaCwgdDFfZ3JvdW5kZWQsIHQyKVxuICAgICAgICB8PiBESEV4cC5mcmVzaCxcbiAgICAgIClcblxuICAgIHwgKEdyb3VuZCwgTm90R3JvdW5kT3JIb2xlKF8pKSA9PlxuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxKSkge1xuICAgICAgfCBDYXN0KGQyLCB0MywgXykgPT5cbiAgICAgICAgaWYgKFR5cC5lcSh0MywgdDIpKSB7XG4gICAgICAgICAgU29tZShkMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH1cbiAgICB8IChOb3RHcm91bmRPckhvbGUoXyksIEdyb3VuZCkgPT5cbiAgICAgIC8qIGNhbid0IGRvIGFueXRoaW5nIHdoZW4gY2FzdGluZyBiZXR3ZWVuIGRpc2VxLCBub24taG9sZSB0eXBlcyAqL1xuICAgICAgTm9uZVxuXG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKF8pLCBOb3RHcm91bmRPckhvbGUoXykpID0+XG4gICAgICAvKiB0aGV5IG1pZ2h0IGJlIGVxIGluIHRoaXMgY2FzZSwgc28gcmVtb3ZlIGNhc3QgaWYgc28gKi9cbiAgICAgIGlmIChUeXAuZXEodDEsIHQyKSkge1xuICAgICAgICBTb21lXG4gICAgICAgICAgKGQxKTsgLy8gUnVsZSBJVENhc3RJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB9O1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IHJlYyB0cmFuc2l0aW9uX211bHRpcGxlID0gKGQ6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgc3dpdGNoICh0cmFuc2l0aW9uKH5yZWN1cnNpdmU9dHJ1ZSwgZCkpIHtcbiAgfCBTb21lKGQnJykgPT4gdHJhbnNpdGlvbl9tdWx0aXBsZShkJycpXG4gIHwgTm9uZSA9PiBkXG4gIH07XG59O1xuXG4vLyBTbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmVnZW5lcmF0ZSBpdHMgaWRcbmxldCBob2xlID0gRW1wdHlIb2xlIHw+IERIRXhwLmZyZXNoO1xuXG4vLyBIYWNreSB3YXkgdG8gZG8gdHJhbnNpdGlvbl9tdWx0aXBsZSBvbiBwYXR0ZXJucyBieSB0cmFuc2ZlcnJpbmdcbi8vIHRoZSBjYXN0IHRvIHRoZSBleHByZXNzaW9uIGFuZCB0aGVuIGJhY2sgdG8gdGhlIHBhdHRlcm4uXG5sZXQgcGF0dGVybl9maXh1cCA9IChwOiBESFBhdC50KTogREhQYXQudCA9PiB7XG4gIGxldCByZWMgdW53cmFwX2Nhc3RzID0gKHA6IERIUGF0LnQpOiAoREhQYXQudCwgREhFeHAudCkgPT4ge1xuICAgIHN3aXRjaCAoREhQYXQudGVybV9vZihwKSkge1xuICAgIHwgQ2FzdChwMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IChwMSwgZDEpID0gdW53cmFwX2Nhc3RzKHAxKTtcbiAgICAgIChcbiAgICAgICAgcDEsXG4gICAgICAgIHt0ZXJtOiBESEV4cC5DYXN0KGQxLCB0MSwgdDIpLCBjb3BpZWQ6IHAuY29waWVkLCBpZHM6IHAuaWRzfVxuICAgICAgICB8PiB0cmFuc2l0aW9uX211bHRpcGxlLFxuICAgICAgKTtcbiAgICB8IF8gPT4gKHAsIGhvbGUpXG4gICAgfTtcbiAgfTtcbiAgbGV0IHJlYyByZXdyYXBfY2FzdHMgPSAoKHA6IERIUGF0LnQsIGQ6IERIRXhwLnQpKTogREhQYXQudCA9PiB7XG4gICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpKSB7XG4gICAgfCBFbXB0eUhvbGUgPT4gcFxuICAgIHwgQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IHAxID0gcmV3cmFwX2Nhc3RzKChwLCBkMSkpO1xuICAgICAge3Rlcm06IERIUGF0LkNhc3QocDEsIHQxLCB0MiksIGNvcGllZDogZC5jb3BpZWQsIGlkczogZC5pZHN9O1xuICAgIHwgRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IHAxID0gcmV3cmFwX2Nhc3RzKChwLCBkMSkpO1xuICAgICAge1xuICAgICAgICB0ZXJtOlxuICAgICAgICAgIERIUGF0LkNhc3QoXG4gICAgICAgICAgICBESFBhdC5DYXN0KHAxLCB0MSwgVHlwLmZyZXNoKFVua25vd24oSW50ZXJuYWwpKSkgfD4gREhQYXQuZnJlc2gsXG4gICAgICAgICAgICBUeXAuZnJlc2goVW5rbm93bihJbnRlcm5hbCkpLFxuICAgICAgICAgICAgdDIsXG4gICAgICAgICAgKSxcbiAgICAgICAgY29waWVkOiBkLmNvcGllZCxcbiAgICAgICAgaWRzOiBkLmlkcyxcbiAgICAgIH07XG4gICAgfCBfID0+IGZhaWx3aXRoKFwidW5leHBlY3RlZCB0ZXJtIGluIHJld3JhcF9jYXN0c1wiKVxuICAgIH07XG4gIH07XG4gIHAgfD4gdW53cmFwX2Nhc3RzIHw+IHJld3JhcF9jYXN0cztcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRXZhbHVhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvd19jYXNlX2NsYXVzZXM6IGJvb2wsXG4gICAgc2hvd19mbl9ib2RpZXM6IGJvb2wsXG4gICAgc2hvd19maXhwb2ludHM6IGJvb2wsXG4gICAgc2hvd19jYXN0czogYm9vbCxcbiAgICBzaG93X2xvb2t1cF9zdGVwczogYm9vbCxcbiAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogYm9vbCxcbiAgICAvLyBUT0RPW01hdHRdOiBNb3ZlIHRoaXMgdG8gc29tZXdoZXJlIHdoZXJlIGl0IGlzIGEgcGVyLXNjcmF0Y2ggc2V0dGluZ1xuICAgIHN0ZXBwZXJfaGlzdG9yeTogYm9vbCxcbiAgICBzaG93X3NldHRpbmdzOiBib29sLFxuICAgIHNob3dfaGlkZGVuX3N0ZXBzOiBib29sLFxuICB9O1xuXG4gIGxldCBpbml0ID0ge1xuICAgIHNob3dfY2FzZV9jbGF1c2VzOiB0cnVlLFxuICAgIHNob3dfZm5fYm9kaWVzOiBmYWxzZSxcbiAgICBzaG93X2ZpeHBvaW50czogZmFsc2UsXG4gICAgc2hvd19jYXN0czogZmFsc2UsXG4gICAgc2hvd19sb29rdXBfc3RlcHM6IGZhbHNlLFxuICAgIHNob3dfc3RlcHBlcl9maWx0ZXJzOiBmYWxzZSxcbiAgICBzdGVwcGVyX2hpc3Rvcnk6IGZhbHNlLFxuICAgIHNob3dfc2V0dGluZ3M6IGZhbHNlLFxuICAgIHNob3dfaGlkZGVuX3N0ZXBzOiBmYWxzZSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdGljczogYm9vbCxcbiAgZWxhYm9yYXRlOiBib29sLFxuICBhc3Npc3Q6IGJvb2wsXG4gIGR5bmFtaWNzOiBib29sLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLnQsXG59O1xuXG5sZXQgb2ZmOiB0ID0ge1xuICBzdGF0aWNzOiBmYWxzZSxcbiAgZWxhYm9yYXRlOiBmYWxzZSxcbiAgYXNzaXN0OiBmYWxzZSxcbiAgZHluYW1pY3M6IGZhbHNlLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLmluaXQsXG59O1xuXG5sZXQgb246IHQgPSB7XG4gIHN0YXRpY3M6IHRydWUsXG4gIGVsYWJvcmF0ZTogdHJ1ZSxcbiAgYXNzaXN0OiB0cnVlLFxuICBkeW5hbWljczogdHJ1ZSxcbiAgZXZhbHVhdGlvbjogRXZhbHVhdGlvbi5pbml0LFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGVybSA9XG4gIHwgQ2xvc3VyZShbQHNob3cub3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgfCBGaWx0ZXIoVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgfCBTZXExKHQsIERIRXhwLnQpXG4gIHwgU2VxMihESEV4cC50LCB0KVxuICB8IExldDEoUGF0LnQsIHQsIERIRXhwLnQpXG4gIHwgTGV0MihQYXQudCwgREhFeHAudCwgdClcbiAgfCBGdW4oUGF0LnQsIHQsIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCksIG9wdGlvbihWYXIudCkpXG4gIHwgRml4RihQYXQudCwgdCwgb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgfCBUeXBBcCh0LCBUeXAudClcbiAgfCBBcDEoT3BlcmF0b3JzLmFwX2RpcmVjdGlvbiwgdCwgREhFeHAudClcbiAgfCBBcDIoT3BlcmF0b3JzLmFwX2RpcmVjdGlvbiwgREhFeHAudCwgdClcbiAgfCBEZWZlcnJlZEFwMSh0LCBsaXN0KERIRXhwLnQpKVxuICB8IERlZmVycmVkQXAyKERIRXhwLnQsIHQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSlcbiAgfCBJZjEodCwgREhFeHAudCwgREhFeHAudClcbiAgfCBJZjIoREhFeHAudCwgdCwgREhFeHAudClcbiAgfCBJZjMoREhFeHAudCwgREhFeHAudCwgdClcbiAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgfCBCaW5PcDEoT3BlcmF0b3JzLm9wX2JpbiwgdCwgREhFeHAudClcbiAgfCBCaW5PcDIoT3BlcmF0b3JzLm9wX2JpbiwgREhFeHAudCwgdClcbiAgfCBUdXBsZSh0LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpXG4gIHwgVGVzdCh0KVxuICB8IExpc3RMaXQodCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKVxuICB8IE11bHRpSG9sZSh0LCAobGlzdChBbnkudCksIGxpc3QoQW55LnQpKSlcbiAgfCBDb25zMSh0LCBESEV4cC50KVxuICB8IENvbnMyKERIRXhwLnQsIHQpXG4gIHwgTGlzdENvbmNhdDEodCwgREhFeHAudClcbiAgfCBMaXN0Q29uY2F0MihESEV4cC50LCB0KVxuICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gIHwgTWF0Y2hTY3J1dCh0LCBsaXN0KChVUGF0LnQsIERIRXhwLnQpKSlcbiAgfCBNYXRjaFJ1bGUoXG4gICAgICBESEV4cC50LFxuICAgICAgVVBhdC50LFxuICAgICAgdCxcbiAgICAgIChsaXN0KChVUGF0LnQsIERIRXhwLnQpKSwgbGlzdCgoVVBhdC50LCBESEV4cC50KSkpLFxuICAgIClcbmFuZCB0ID1cbiAgfCBNYXJrXG4gIHwgVGVybSh7XG4gICAgICB0ZXJtLFxuICAgICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIH0pO1xuXG5sZXQgcmVjIGNvbXBvc2UgPSAoY3R4OiB0LCBkOiBESEV4cC50KTogREhFeHAudCA9PiB7XG4gIHN3aXRjaCAoY3R4KSB7XG4gIHwgTWFyayA9PiBkXG4gIHwgVGVybSh7dGVybSwgaWRzfSkgPT5cbiAgICBsZXQgd3JhcCA9IERIRXhwLm1rKGlkcyk7XG4gICAgREhFeHAuKFxuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IENsb3N1cmUoZW52LCBjdHgpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBDbG9zdXJlKGVudiwgZCkgfD4gd3JhcDtcbiAgICAgIHwgRmlsdGVyKGZsdCwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRmlsdGVyKGZsdCwgZCkgfD4gd3JhcDtcbiAgICAgIHwgU2VxMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFNlcShkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IFNlcTIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBTZXEoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBBcDEoZGlyLCBjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEFwKGRpciwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBBcDIoZGlyLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEFwKGRpciwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMShjdHgsIGQycykgPT5cbiAgICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEZWZlcnJlZEFwKGQxLCBkMnMpIHw+IHdyYXA7XG4gICAgICB8IERlZmVycmVkQXAyKGQxLCBjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIERlZmVycmVkQXAoZDEsIExpc3RVdGlsLnJldl9jb25jYXQobGQsIFtkMiwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgSWYxKGN0eCwgZDIsIGQzKSA9PlxuICAgICAgICBsZXQgZCcgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIElmKGQnLCBkMiwgZDMpIHw+IHdyYXA7XG4gICAgICB8IElmMihkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBJZihkMSwgZCcsIGQzKSB8PiB3cmFwO1xuICAgICAgfCBJZjMoZDEsIGQyLCBjdHgpID0+XG4gICAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgSWYoZDEsIGQyLCBkJykgfD4gd3JhcDtcbiAgICAgIHwgVGVzdChjdHgpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgVGVzdChkMSkgfD4gd3JhcDtcbiAgICAgIHwgVW5PcChvcCwgY3R4KSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFVuT3Aob3AsIGQxKSB8PiB3cmFwO1xuICAgICAgfCBCaW5PcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQmluT3Aob3AsIGQxLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgQmluT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEJpbk9wKG9wLCBkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IENvbnMxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ29ucyhkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IENvbnMyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ29ucyhkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdENvbmNhdChkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IExpc3RDb25jYXQyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdENvbmNhdChkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IFR1cGxlKGN0eCwgKGxkLCByZCkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBUdXBsZShMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgTGlzdExpdChjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdExpdChMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgTXVsdGlIb2xlKGN0eCwgKGxkLCByZCkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBNdWx0aUhvbGUoTGlzdFV0aWwucmV2X2NvbmNhdChsZCwgW1Rlcm1CYXNlLkFueS5FeHAoZCksIC4uLnJkXSkpXG4gICAgICAgIHw+IHdyYXA7XG4gICAgICB8IExldDEoZHAsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBMZXQoZHAsIGQsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBMZXQyKGRwLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGV0KGRwLCBkMSwgZCkgfD4gd3JhcDtcbiAgICAgIHwgRnVuKGRwLCBjdHgsIGVudiwgdikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZ1bihkcCwgZCwgZW52LCB2KSB8PiB3cmFwO1xuICAgICAgfCBGaXhGKHYsIGN0eCwgZW52KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRml4Rih2LCBkLCBlbnYpIHw+IHdyYXA7XG4gICAgICB8IENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIENhc3QoZCwgdHkxLCB0eTIpIHw+IHdyYXA7XG4gICAgICB8IEZhaWxlZENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZhaWxlZENhc3QoZCwgdHkxLCB0eTIpIHw+IHdyYXA7XG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgfD4gd3JhcDtcbiAgICAgIHwgTWF0Y2hTY3J1dChjdHgsIHJ1bGVzKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTWF0Y2goZCwgcnVsZXMpIHw+IHdyYXA7XG4gICAgICB8IE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgKGxyLCBycikpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBNYXRjaChzY3IsIExpc3RVdGlsLnJldl9jb25jYXQobHIsIFsocCwgZCksIC4uLnJyXSkpIHw+IHdyYXA7XG4gICAgICB8IFR5cEFwKGN0eCwgdHkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBUeXBBcChkLCB0eSkgfD4gd3JhcDtcbiAgICAgIH1cbiAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcblxuLyogV2hhdCBpcyB1bmJveGluZz9cblxuICAgV2hlbiB5b3UgaGF2ZSBhbiBleHByZXNzaW9uIG9mIHR5cGUgbGlzdCwgYW5kIGl0J3MgZmluaXNoZWQgZXZhbHVhdGluZyxcbiAgIGlzIGl0IGEgbGlzdD8gU2FkbHkgbm90IG5lY2Vzc2FyaWx5LCBpdCBtaWdodCBiZTpcblxuICAgIC0gaW5kZXRlcm1pbmF0ZSwgZS5nLiBpdCBoYXMgYSBob2xlIGluIGl0XG4gICAgLSBhIGxpc3Qgd2l0aCBzb21lIGNhc3RzIHdyYXBwZWQgYXJvdW5kIGl0XG5cbiAgICBVbmJveGluZyBpcyB0aGUgcHJvY2VzcyBvZiB0dXJuaW5nIGEgbGlzdCBpbnRvIGEgbGlzdCBpZiBpdCBpcyBhIGxpc3QsXG4gICAgYnkgcHVzaGluZyBjYXN0cyBpbnNpZGUgZGF0YSBzdHJ1Y3R1cmVzLCBvciBnaXZpbmcgdXAgaWYgaXQgaXMgbm90IGEgbGlzdC5cblxuICAgIE5vdGUgdW5ib3hpbmcgb25seSB3b3JrcyBvbmUgbGF5ZXIgZGVlcCwgaWYgd2UgaGF2ZSBhIGxpc3Qgb2YgbGlzdHMgdGhlblxuICAgIHRoZSBpbm5lciBsaXN0cyBtYXkgc3RpbGwgaGF2ZSBjYXN0cyBhcm91bmQgdGhlbSBhZnRlciB1bmJveGluZy5cbiAgICAqL1xuXG50eXBlIHVuYm94X3JlcXVlc3QoJ2EpID1cbiAgfCBJbnQ6IHVuYm94X3JlcXVlc3QoaW50KVxuICB8IEZsb2F0OiB1bmJveF9yZXF1ZXN0KGZsb2F0KVxuICB8IEJvb2w6IHVuYm94X3JlcXVlc3QoYm9vbClcbiAgfCBTdHJpbmc6IHVuYm94X3JlcXVlc3Qoc3RyaW5nKVxuICB8IFR1cGxlKGludCk6IHVuYm94X3JlcXVlc3QobGlzdChESEV4cC50KSlcbiAgfCBMaXN0OiB1bmJveF9yZXF1ZXN0KGxpc3QoREhFeHAudCkpXG4gIHwgQ29uczogdW5ib3hfcmVxdWVzdCgoREhFeHAudCwgREhFeHAudCkpXG4gIHwgU3VtTm9Bcmcoc3RyaW5nKTogdW5ib3hfcmVxdWVzdCh1bml0KVxuICB8IFN1bVdpdGhBcmcoc3RyaW5nKTogdW5ib3hfcmVxdWVzdChESEV4cC50KTtcblxudHlwZSB1bmJveGVkKCdhKSA9XG4gIHwgRG9lc05vdE1hdGNoXG4gIHwgSW5kZXRNYXRjaFxuICB8IE1hdGNoZXMoJ2EpO1xuXG5sZXQgKCBsZXQqICkgPSAoeDogdW5ib3hlZCgnYSksIGY6ICdhID0+IHVuYm94ZWQoJ2IpKTogdW5ib3hlZCgnYikgPT5cbiAgc3dpdGNoICh4KSB7XG4gIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICB8IE1hdGNoZXMoeCkgPT4gZih4KVxuICB9O1xuXG5sZXQgZml4dXBfY2FzdCA9IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGU7XG5cbi8qIFRoaXMgZnVuY3Rpb24gaGFzIGEgZGlmZmVyZW50IHJldHVybiB0eXBlIGRlcGVuZGluZyBvbiB3aGF0IGtpbmQgb2YgcmVxdWVzdFxuICAgaXQgaXMgZ2l2ZW4uIFRoaXMgdW5mb3J0dW5hdGVseSB1c2VzIGEgY3JhenkgT0NhbWwgZmVhdHVyZSBjYWxsZWQgR0FEVFMsIGJ1dFxuICAgaXQgYXZvaWRzIGhhdmluZyB0byB3cml0ZSBhIHNlcGFyYXRlIHVuYm94IGZ1bmN0aW9uIGZvciBlYWNoIGtpbmQgb2YgcmVxdWVzdC5cbiAgICovXG5cbmxldCByZWMgdW5ib3g6IHR5cGUgYS4gKHVuYm94X3JlcXVlc3QoYSksIERIRXhwLnQpID0+IHVuYm94ZWQoYSkgPVxuICAocmVxdWVzdCwgZXhwcikgPT4ge1xuICAgIHN3aXRjaCAocmVxdWVzdCwgREhFeHAudGVybV9vZihleHByKSkge1xuICAgIC8qIFJlbW92ZSBwYXJlbnRoZXNlcyBmcm9tIGNhc3RzICovXG4gICAgfCAoXywgQ2FzdChkLCB7dGVybTogUGFyZW5zKHgpLCBffSwgeSkpXG4gICAgfCAoXywgQ2FzdChkLCB4LCB7dGVybTogUGFyZW5zKHkpLCBffSkpID0+XG4gICAgICB1bmJveChyZXF1ZXN0LCBDYXN0KGQsIHgsIHkpIHw+IERIRXhwLmZyZXNoKVxuXG4gICAgLyogQmFzZSB0eXBlcyBhcmUgYWx3YXlzIGFscmVhZHkgdW5ib3hlZCBiZWNhdXNlIG9mIHRoZSBJVENhc3RJRCBydWxlKi9cbiAgICB8IChCb29sLCBCb29sKGIpKSA9PiBNYXRjaGVzKGIpXG4gICAgfCAoSW50LCBJbnQoaSkpID0+IE1hdGNoZXMoaSlcbiAgICB8IChGbG9hdCwgRmxvYXQoZikpID0+IE1hdGNoZXMoZilcbiAgICB8IChTdHJpbmcsIFN0cmluZyhzKSkgPT4gTWF0Y2hlcyhzKVxuXG4gICAgLyogTGlzdHMgY2FuIGJlIGVpdGhlciBsaXN0cyBvciBsaXN0IGNhc3RzICovXG4gICAgfCAoTGlzdCwgTGlzdExpdChsKSkgPT4gTWF0Y2hlcyhsKVxuICAgIHwgKENvbnMsIExpc3RMaXQoW3gsIC4uLnhzXSkpID0+XG4gICAgICBNYXRjaGVzKCh4LCBMaXN0TGl0KHhzKSB8PiBESEV4cC5mcmVzaCkpXG4gICAgfCAoQ29ucywgTGlzdExpdChbXSkpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKExpc3QsIENhc3QobCwge3Rlcm06IExpc3QodDEpLCBffSwge3Rlcm06IExpc3QodDIpLCBffSkpID0+XG4gICAgICBsZXQqIGwgPSB1bmJveChMaXN0LCBsKTtcbiAgICAgIGxldCBsID0gTGlzdC5tYXAoZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gREhFeHAuZnJlc2gsIGwpO1xuICAgICAgbGV0IGwgPSBMaXN0Lm1hcChmaXh1cF9jYXN0LCBsKTtcbiAgICAgIE1hdGNoZXMobCk7XG4gICAgfCAoXG4gICAgICAgIENvbnMsXG4gICAgICAgIENhc3QobCwge3Rlcm06IExpc3QodDEpLCBffSBhcyBjdDEsIHt0ZXJtOiBMaXN0KHQyKSwgX30gYXMgY3QyKSxcbiAgICAgICkgPT5cbiAgICAgIGxldCogbCA9IHVuYm94KExpc3QsIGwpO1xuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IFtdID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIE1hdGNoZXMoKFxuICAgICAgICAgIENhc3QoeCwgdDEsIHQyKSB8PiBESEV4cC5mcmVzaCB8PiBmaXh1cF9jYXN0LFxuICAgICAgICAgIENhc3QoTGlzdExpdCh4cykgfD4gREhFeHAuZnJlc2gsIGN0MSwgY3QyKSB8PiBESEV4cC5mcmVzaCxcbiAgICAgICAgKSlcbiAgICAgIH07XG5cbiAgICAvKiBUdXBsZXMgY2FuIGJlIGVpdGhlciB0dXBsZXMgb3IgdHVwbGUgY2FzdHMgKi9cbiAgICB8IChUdXBsZShuKSwgVHVwbGUodCkpIHdoZW4gTGlzdC5sZW5ndGgodCkgPT0gbiA9PiBNYXRjaGVzKHQpXG4gICAgfCAoVHVwbGUoXyksIFR1cGxlKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChUdXBsZShuKSwgQ2FzdCh0LCB7dGVybTogUHJvZCh0MXMpLCBffSwge3Rlcm06IFByb2QodDJzKSwgX30pKVxuICAgICAgICB3aGVuIG4gPT0gTGlzdC5sZW5ndGgodDFzKSAmJiBuID09IExpc3QubGVuZ3RoKHQycykgPT5cbiAgICAgIGxldCogdCA9IHVuYm94KFR1cGxlKG4pLCB0KTtcbiAgICAgIGxldCB0ID1cbiAgICAgICAgTGlzdFV0aWwubWFwMyhcbiAgICAgICAgICAoZCwgdDEsIHQyKSA9PiBDYXN0KGQsIHQxLCB0MikgfD4gREhFeHAuZnJlc2gsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB0MXMsXG4gICAgICAgICAgdDJzLFxuICAgICAgICApO1xuICAgICAgbGV0IHQgPSBMaXN0Lm1hcChmaXh1cF9jYXN0LCB0KTtcbiAgICAgIE1hdGNoZXModCk7XG5cbiAgICAvKiBTdW0gY29uc3RydWN0b3JzIGNhbiBiZSBlaXRoZXIgc3VtIGNvbnN0cnVjdG9ycywgc3VtIGNvbnN0cnVjdG9yc1xuICAgICAgIGFwcGxpZWQgdG8gc29tZSB2YWx1ZSBvciBzdW0gY2FzdHMgKi9cbiAgICB8IChTdW1Ob0FyZyhuYW1lMSksIENvbnN0cnVjdG9yKG5hbWUyKSkgd2hlbiBuYW1lMSA9PSBuYW1lMiA9PiBNYXRjaGVzKClcbiAgICB8IChTdW1Ob0FyZyhfKSwgQ29uc3RydWN0b3IoXykpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKFN1bU5vQXJnKF8pLCBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtTm9BcmcobmFtZSksIENhc3QoZDEsIHt0ZXJtOiBTdW0oXyksIF99LCB7dGVybTogU3VtKHMyKSwgX30pKVxuICAgICAgICB3aGVuXG4gICAgICAgICAgQ29uc3RydWN0b3JNYXAuaGFzX2NvbnN0cnVjdG9yX25vX2FyZ3MobmFtZSwgczIpXG4gICAgICAgICAgfHwgQ29uc3RydWN0b3JNYXAuaGFzX2JhZF9lbnRyeShzMikgPT5cbiAgICAgIGxldCogZDEgPSB1bmJveChTdW1Ob0FyZyhuYW1lKSwgZDEpO1xuICAgICAgTWF0Y2hlcyhkMSk7XG4gICAgfCAoU3VtTm9BcmcoXyksIENhc3QoXywge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oXyksIF99KSkgPT5cbiAgICAgIEluZGV0TWF0Y2hcblxuICAgIHwgKFN1bVdpdGhBcmcoXyksIENvbnN0cnVjdG9yKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChTdW1XaXRoQXJnKG5hbWUxKSwgQXAoXywge3Rlcm06IENvbnN0cnVjdG9yKG5hbWUyKSwgX30sIGQzKSlcbiAgICAgICAgd2hlbiBuYW1lMSA9PSBuYW1lMiA9PlxuICAgICAgTWF0Y2hlcyhkMylcbiAgICB8IChTdW1XaXRoQXJnKF8pLCBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtV2l0aEFyZyhuYW1lKSwgQ2FzdChkMSwge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oczIpLCBffSkpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5nZXRfZW50cnkobmFtZSwgczIpICE9IE5vbmVcbiAgICAgICAgICB8fCBDb25zdHJ1Y3Rvck1hcC5oYXNfYmFkX2VudHJ5KHMyKSA9PlxuICAgICAgbGV0KiBkMSA9IHVuYm94KFN1bVdpdGhBcmcobmFtZSksIGQxKTtcbiAgICAgIE1hdGNoZXMoZDEgfD4gZml4dXBfY2FzdCk7XG4gICAgfCAoU3VtV2l0aEFyZyhfKSwgQ2FzdChfLCB7dGVybTogU3VtKF8pLCBffSwge3Rlcm06IFN1bShfKSwgX30pKSA9PlxuICAgICAgSW5kZXRNYXRjaFxuXG4gICAgLyogQW55IGNhc3QgZnJvbSB1bmtub3duIGlzIGluZGV0ICovXG4gICAgfCAoXywgQ2FzdChfLCB7dGVybTogVW5rbm93bihfKSwgX30sIF8pKSA9PiBJbmRldE1hdGNoXG5cbiAgICAvKiBGb3JtcyB0aGF0IGFyZSB0aGUgd3JvbmcgdHlwZSBvZiB2YWx1ZSAtIHRoZXNlIGNhc2VzIGluZGljYXRlIGFuIGVycm9yXG4gICAgICAgaW4gZWxhYm9yYXRpb24gb3IgaW4gdGhlIGNhc3QgY2FsY3VsdXMuICovXG4gICAgfCAoXG4gICAgICAgIF8sXG4gICAgICAgIEJvb2woXykgfCBJbnQoXykgfCBGbG9hdChfKSB8IFN0cmluZyhfKSB8IENvbnN0cnVjdG9yKF8pIHxcbiAgICAgICAgQnVpbHRpbkZ1bihfKSB8XG4gICAgICAgIERlZmVycmFsKF8pIHxcbiAgICAgICAgRGVmZXJyZWRBcChfKSB8XG4gICAgICAgIEZ1bihfLCBfLCBfLCBTb21lKF8pKSB8XG4gICAgICAgIExpc3RMaXQoXykgfFxuICAgICAgICBUdXBsZShfKSB8XG4gICAgICAgIENhc3QoXykgfFxuICAgICAgICBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSB8XG4gICAgICAgIFR5cEZ1bihfKSB8XG4gICAgICAgIFR5cEFwKF8pLFxuICAgICAgKSA9PlxuICAgICAgc3dpdGNoIChyZXF1ZXN0KSB7XG4gICAgICB8IEJvb2wgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEJvb2xMaXQoZXhwcikpKVxuICAgICAgfCBJbnQgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChleHByKSkpXG4gICAgICB8IEZsb2F0ID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGbG9hdExpdChleHByKSkpXG4gICAgICB8IFN0cmluZyA9PlxuICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkU3RyaW5nTGl0KGV4cHIpKSlcbiAgICAgIHwgVHVwbGUoXykgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGV4cHIpKSlcbiAgICAgIHwgTGlzdFxuICAgICAgfCBDb25zID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRMaXN0TGl0KGV4cHIpKSlcbiAgICAgIHwgU3VtTm9BcmcoXylcbiAgICAgIHwgU3VtV2l0aEFyZyhfKSA9PlxuICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkU3VtQ29uc3RydWN0b3IoZXhwcikpKVxuICAgICAgfVxuXG4gICAgLyogRm9ybXMgdGhhdCBhcmUgbm90IHlldCBvciB3aWxsIG5ldmVyIGJlIGEgdmFsdWUgKi9cbiAgICB8IChcbiAgICAgICAgXyxcbiAgICAgICAgSW52YWxpZChfKSB8IEVtcHR5SG9sZSB8IE11bHRpSG9sZShfKSB8IER5bmFtaWNFcnJvckhvbGUoXykgfFxuICAgICAgICBGYWlsZWRDYXN0KF8pIHxcbiAgICAgICAgVmFyKF8pIHxcbiAgICAgICAgTGV0KF8pIHxcbiAgICAgICAgRnVuKF8sIF8sIF8sIE5vbmUpIHxcbiAgICAgICAgRml4RihfKSB8XG4gICAgICAgIFR5QWxpYXMoXykgfFxuICAgICAgICBBcChfKSB8XG4gICAgICAgIElmKF8pIHxcbiAgICAgICAgU2VxKF8pIHxcbiAgICAgICAgVGVzdChfKSB8XG4gICAgICAgIEZpbHRlcihfKSB8XG4gICAgICAgIENsb3N1cmUoXykgfFxuICAgICAgICBQYXJlbnMoXykgfFxuICAgICAgICBDb25zKF8pIHxcbiAgICAgICAgTGlzdENvbmNhdChfKSB8XG4gICAgICAgIFVuT3AoXykgfFxuICAgICAgICBCaW5PcChfKSB8XG4gICAgICAgIE1hdGNoKF8pLFxuICAgICAgKSA9PlxuICAgICAgSW5kZXRNYXRjaFxuICAgIH07XG4gIH07XG4iLCJ0eXBlIG1hdGNoX3Jlc3VsdCA9IFVuYm94aW5nLnVuYm94ZWQoRW52aXJvbm1lbnQudCk7XG5sZXQgKCBsZXQqICkgPSBVbmJveGluZy4oIGxldCogKTtcblxubGV0IGNvbWJpbmVfcmVzdWx0ID0gKHIxOiBtYXRjaF9yZXN1bHQsIHIyOiBtYXRjaF9yZXN1bHQpOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChyMSwgcjIpIHtcbiAgfCAoRG9lc05vdE1hdGNoLCBfKVxuICB8IChfLCBEb2VzTm90TWF0Y2gpID0+IERvZXNOb3RNYXRjaFxuICB8IChJbmRldE1hdGNoLCBfKVxuICB8IChfLCBJbmRldE1hdGNoKSA9PiBJbmRldE1hdGNoXG4gIHwgKE1hdGNoZXMoZW52MSksIE1hdGNoZXMoZW52MikpID0+XG4gICAgTWF0Y2hlcyhFbnZpcm9ubWVudC51bmlvbihlbnYxLCBlbnYyKSlcbiAgfTtcblxubGV0IHJlYyBtYXRjaGVzID0gKGRwOiBQYXQudCwgZDogREhFeHAudCk6IG1hdGNoX3Jlc3VsdCA9PlxuICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YoZHApKSB7XG4gIHwgSW52YWxpZChfKVxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKVxuICB8IFdpbGQgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSlcbiAgfCBJbnQobikgPT5cbiAgICBsZXQqIG4nID0gVW5ib3hpbmcudW5ib3goSW50LCBkKTtcbiAgICBuID09IG4nID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgRmxvYXQobikgPT5cbiAgICBsZXQqIG4nID0gVW5ib3hpbmcudW5ib3goRmxvYXQsIGQpO1xuICAgIG4gPT0gbicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaDtcbiAgfCBCb29sKGIpID0+XG4gICAgbGV0KiBiJyA9IFVuYm94aW5nLnVuYm94KEJvb2wsIGQpO1xuICAgIGIgPT0gYicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaDtcbiAgfCBTdHJpbmcocykgPT5cbiAgICBsZXQqIHMnID0gVW5ib3hpbmcudW5ib3goU3RyaW5nLCBkKTtcbiAgICBzID09IHMnID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgTGlzdExpdCh4cykgPT5cbiAgICBsZXQqIHMnID0gVW5ib3hpbmcudW5ib3goTGlzdCwgZCk7XG4gICAgaWYgKExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aChzJykpIHtcbiAgICAgIExpc3QubWFwMihtYXRjaGVzLCB4cywgcycpXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChjb21iaW5lX3Jlc3VsdCwgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfTtcbiAgfCBDb25zKHgsIHhzKSA9PlxuICAgIGxldCogKHgnLCB4cycpID0gVW5ib3hpbmcudW5ib3goQ29ucywgZCk7XG4gICAgbGV0KiBtX3ggPSBtYXRjaGVzKHgsIHgnKTtcbiAgICBsZXQqIG1feHMgPSBtYXRjaGVzKHhzLCB4cycpO1xuICAgIE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24obV94LCBtX3hzKSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PlxuICAgIGxldCogKCkgPSBVbmJveGluZy51bmJveChTdW1Ob0FyZyhjdHIpLCBkKTtcbiAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KTtcbiAgfCBBcCh7dGVybTogQ29uc3RydWN0b3IoY3RyKSwgX30sIHAyKSA9PlxuICAgIGxldCogZDIgPSBVbmJveGluZy51bmJveChTdW1XaXRoQXJnKGN0ciksIGQpO1xuICAgIG1hdGNoZXMocDIsIGQyKTtcbiAgfCBBcChfLCBfKSA9PiBJbmRldE1hdGNoIC8vIFRPRE86IHNob3VsZCB0aGlzIGZhaWw/XG4gIHwgVmFyKHgpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQuc2luZ2xldG9uKCh4LCBkKSkpXG4gIHwgVHVwbGUocHMpID0+XG4gICAgbGV0KiBkcyA9IFVuYm94aW5nLnVuYm94KFR1cGxlKExpc3QubGVuZ3RoKHBzKSksIGQpO1xuICAgIExpc3QubWFwMihtYXRjaGVzLCBwcywgZHMpXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoY29tYmluZV9yZXN1bHQsIE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpKTtcbiAgfCBQYXJlbnMocCkgPT4gbWF0Y2hlcyhwLCBkKVxuICB8IENhc3QocCwgdDEsIHQyKSA9PlxuICAgIG1hdGNoZXMocCwgQ2FzdChkLCB0MiwgdDEpIHw+IERIRXhwLmZyZXNoIHw+IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGUpXG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFBhc3NcbiAgfCBGYWlsXG4gIHwgSW5kZXQ7XG5cbmxldCB0b19zdHJpbmc6IHQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgUGFzcyA9PiBcIlBhc3NcIlxuICB8IEZhaWwgPT4gXCJGYWlsXCJcbiAgfCBJbmRldCA9PiBcIkluZGV0XCI7XG5cbmxldCBqb2luOiAodCwgdCkgPT4gdCA9XG4gIChhLCBiKSA9PlxuICAgIHN3aXRjaCAoYSwgYikge1xuICAgIHwgKEZhaWwsIF8pID0+IEZhaWxcbiAgICB8IChJbmRldCwgRmFpbCkgPT4gRmFpbFxuICAgIHwgKEluZGV0LCBfKSA9PiBJbmRldFxuICAgIHwgKFBhc3MsIHgpID0+IHhcbiAgICB9O1xuXG5sZXQgam9pbl9hbGw6IGxpc3QodCkgPT4gdCA9IExpc3QuZm9sZF9sZWZ0KGpvaW4sIFBhc3MpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogRklYTUU6IE1ha2UgbW9yZSBvYnZpb3VzIG5hbWVzLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbnN0YW5jZV9yZXBvcnQgPSAoREhFeHAudCwgVGVzdFN0YXR1cy50KTtcblxubGV0IGpvaW50X3N0YXR1czogbGlzdChpbnN0YW5jZV9yZXBvcnQpID0+IFRlc3RTdGF0dXMudCA9XG4gIHJlcG9ydHMgPT4gVGVzdFN0YXR1cy5qb2luX2FsbChMaXN0Lm1hcCgoKF8sIHgpKSA9PiB4LCByZXBvcnRzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVwb3J0ID0gKElkLnQsIGxpc3QoaW5zdGFuY2VfcmVwb3J0KSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QocmVwb3J0KTtcbmxldCBlbXB0eTogdCA9IFtdO1xuXG5sZXQgbG9va3VwID0gTGlzdC5hc3NvY19vcHQ7XG5cbmxldCBsb29rdXBfYW5kX2pvaW4gPSAobiwgdGVzdF9tYXApID0+XG4gIHN3aXRjaCAobG9va3VwKG4sIHRlc3RfbWFwKSkge1xuICB8IE5vbmUgPT4gVGVzdFN0YXR1cy5JbmRldFxuICB8IFNvbWUocmVwb3J0cykgPT4gam9pbnRfc3RhdHVzKHJlcG9ydHMpXG4gIH07XG5cbmxldCBleHRlbmQgPSAoKGlkLCByZXBvcnQpLCB0ZXN0X21hcCkgPT4ge1xuICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGlkLCB0ZXN0X21hcCkpIHtcbiAgfCBTb21lKGEpID0+IExpc3QucmVtb3ZlX2Fzc29jKGlkLCB0ZXN0X21hcCkgQCBbKGlkLCBhIEAgW3JlcG9ydF0pXVxuICB8IE5vbmUgPT4gdGVzdF9tYXAgQCBbKGlkLCBbcmVwb3J0XSldXG4gIH07XG59O1xuXG5sZXQgY291bnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IGNvdW50X3N0YXR1cyA9IChzdGF0dXMsIHRlc3RfbWFwKSA9PlxuICBMaXN0LmZpbHRlcihcbiAgICAoKF8sIGluc3RhbmNlcykpID0+IHN0YXR1cyA9PSBqb2ludF9zdGF0dXMoaW5zdGFuY2VzKSxcbiAgICB0ZXN0X21hcCxcbiAgKVxuICB8PiBMaXN0Lmxlbmd0aDtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBhdHRlcm5NYXRjaDtcblxuLyogVHJhbnNpdGlvbi5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBldmFsdWF0aW9uIHNlbWFudGljcyBvZiBIYXplbCBpbiB0ZXJtcyBvZiBzbWFsbCBzdGVwXG4gICBldmFsdWF0aW9uLiBUaGVzZSBzbWFsbCBzdGVwcyBhcmUgd3JhcHBlZCB1cCBpbnRvIGEgYmlnIHN0ZXAgaW4gRXZhbHVhdG9yLnJlLlxuXG4gICBJJ2xsIHVzZSB0aGUgU2VxIGNhc2UgYXMgYW4gZXhhbXBsZTpcblxuICAgIHwgU2VxKGQxLCBkMikgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGQxID0+IFNlcShkMSwgZDIpKVxuICAgICAgICBhbmQuIF8gPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCAwLCBkMSk7XG4gICAgICAgIFN0ZXAoe2V4cHI6IGQyLCBzdGF0ZSwga2luZDogU2VxLCBmaW5hbDogZmFsc2V9KTtcblxuXG4gICAgRWFjaCBzdGVwIHNlbWFudGljcyBzdGFydHMgd2l0aCBhIGBsZXQuICgpID0gb3RoZXJ3aXNlKC4uLilgIHRoYXQgZGVmaW5lcyBob3dcbiAgICB0byB3cmFwIHRoZSBleHByZXNzaW9uIGJhY2sgdXAgaWYgdGhlIHN0ZXAgY291bGRuJ3QgYmUgZXZhbHVhdGVkLlxuXG4gICAgVGhpcyBpcyBmb2xsb3dlZCBieSBhIHNlcmllcyBvZiBgYW5kLiBkMScgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCA8aT4sIDxkMT4pYFxuICAgIHdoaWNoIGluZGljYXRlIHRoYXQgaW4gb3JkZXIgdG8gZXZhbHVhdGUgdGhlIHN0ZXAsIDxkMT4gbXVzdCBiZSBmaW5hbC4gKHJlcV92YWx1ZVxuICAgIGlzIGFsc28gYXZhaWxhYmxlIGlmIGl0IG5lZWRzIHRvIGJlIGEgdmFsdWUpLiBOb3RlIHRoYXQgaWYgc3VjY2Vzc2Z1bCwgZDEnIHdpbGxcbiAgICBiZSB0aGUgZnVsbHktZXZhbHVhdGVkIHZlcnNpb24gb2YgZDEuIFRoZSBzdWItZXhwcmVzc2lvbnMgYXJlIGFsbCBlbnVtZXJhdGVkIGJ5XG4gICAgdGhlIDxpPiBmaWVsZCwgc28gaT0wIGluZGljYXRlcyB0aGF0IGl0IGlzIHRoZSBmaXJzdCBzdWItZXhwcmVzc2lvbiwgaT0xIHRoZVxuICAgIHNlY29uZCBldGMuXG5cbiAgICBGaW5hbGx5LCB3ZSBoYXZlIHRoZSBTdGVwIGNvbnN0cnVjdCB0aGF0IGRlZmluZXMgdGhlIGFjdHVhbCBzdGVwLiBOb3RlIFwiU3RlcFwic1xuICAgIHNob3VsZCBiZSB1c2VkIGlmIGFuZCBvbmx5IGlmIHRoZXkgY2hhbmdlIHRoZSBleHByZXNzaW9uLiBJZiB0aGV5IGRvIG5vdCBjaGFuZ2VcbiAgICB0aGUgZXhwcmVzc2lvbiwgdXNlIGBDb25zdHJ1Y3RvcmAgb3IgYEluZGV0YC5cblxuICAgIFRoZSBzdGVwIGRlZmluZXMgZmlyc3RseSwgYSBgKCkgPT4gLi4uYCBmdW5jdGlvbiBnaXZpbmcgdGhlIHJlc3VsdCBvZiB0aGUgc3RlcCxcbiAgICBzZWNvbmRseSBhIGBraW5kYCwgdGhhdCBkZXNjcmliZXMgdGhlIHN0ZXAgKHdoaWNoIHdpbGwgYmUgdXNlZCBpbiB0aGUgc3RlcHBlcilcblxuICAgIExhc3RseSwgdGhlIGB2YWx1ZWAgZmllbGQgYWxsb3dzIGZvciBzb21lIHNwZWVkaW5nIHVwIG9mIHRoZSBldmFsdWF0b3IuIElmIHlvdVxuICAgIGFyZSB1bnN1cmUsIGl0IGlzIGFsd2F5cyBzYWZlIHRvIHB1dCBgaXNfdmFsdWU6IGZhbHNlYC5cblxuICAgIGBpc192YWx1ZTogdHJ1ZWAgZ3VhcmFudGVlczpcbiAgICAgIC0gaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgdmFsdWVzLCB0aGVuIHRoZSBvdXRwdXQgd2lsbCBiZSBhIHZhbHVlXG4gICAgICAtIGlmIHNvbWUgcmVxdWlyZW1lbnRzIGFyZSBpbmRldCwgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgaW5kZXRcblxuICAgIEEgdmFsdWUgaXMgZWl0aGVyIGEgbGl0ZXJhbCwgb3IgYSBmdW5jdGlvbiB3aXRoIGEgY2xvc3VyZSwgb3IgYSB0eXBlIGZ1bmN0aW9uLlxuICAgIChmdW5jdGlvbnMgd2l0aG91dCBjbG9zdXJlcyBpbW1lZGlhdGVseSBpbnNpZGUgdGhlbSBkbyBub3QgY291bnQgYXMgdmFsdWVzKS5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBJbnZhbGlkU3RlcFxuICB8IFZhckxvb2t1cFxuICB8IFNlcVxuICB8IExldEJpbmRcbiAgfCBGdW5DbG9zdXJlXG4gIHwgRml4VW53cmFwXG4gIHwgRml4Q2xvc3VyZVxuICB8IFVwZGF0ZVRlc3RcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgRGVmZXJyZWRBcFxuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgQnVpbHRpbkFwKHN0cmluZylcbiAgfCBVbk9wKE9wZXJhdG9ycy5vcF91bilcbiAgfCBCaW5Cb29sT3AoT3BlcmF0b3JzLm9wX2Jpbl9ib29sKVxuICB8IEJpbkludE9wKE9wZXJhdG9ycy5vcF9iaW5faW50KVxuICB8IEJpbkZsb2F0T3AoT3BlcmF0b3JzLm9wX2Jpbl9mbG9hdClcbiAgfCBCaW5TdHJpbmdPcChPcGVyYXRvcnMub3BfYmluX3N0cmluZylcbiAgfCBDb25kaXRpb25hbChib29sKVxuICB8IFByb2plY3Rpb25cbiAgfCBMaXN0Q29uc1xuICB8IExpc3RDb25jYXRcbiAgfCBDYXNlQXBwbHlcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IENhc3RcbiAgfCBSZW1vdmVUeXBlQWxpYXNcbiAgfCBSZW1vdmVQYXJlbnM7XG5sZXQgZXZhbHVhdGVfZXh0ZW5kX2VudiA9XG4gICAgKG5ld19iaW5kaW5nczogRW52aXJvbm1lbnQudCwgdG9fZXh0ZW5kOiBDbG9zdXJlRW52aXJvbm1lbnQudClcbiAgICA6IENsb3N1cmVFbnZpcm9ubWVudC50ID0+IHtcbiAgdG9fZXh0ZW5kXG4gIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgfD4gRW52aXJvbm1lbnQudW5pb24obmV3X2JpbmRpbmdzKVxuICB8PiBDbG9zdXJlRW52aXJvbm1lbnQub2ZfZW52aXJvbm1lbnQ7XG59O1xuXG50eXBlIHJ1bGUgPVxuICB8IFN0ZXAoe1xuICAgICAgZXhwcjogREhFeHAudCxcbiAgICAgIHN0YXRlX3VwZGF0ZTogdW5pdCA9PiB1bml0LFxuICAgICAga2luZDogc3RlcF9raW5kLFxuICAgICAgaXNfdmFsdWU6IGJvb2wsXG4gICAgfSlcbiAgfCBDb25zdHJ1Y3RvclxuICB8IEluZGV0O1xuXG5sZXQgKGxldC11bmJveCkgPSAoKHJlcXVlc3QsIHYpLCBmKSA9PlxuICBzd2l0Y2ggKFVuYm94aW5nLnVuYm94KHJlcXVlc3QsIHYpKSB7XG4gIHwgSW5kZXRNYXRjaFxuICB8IERvZXNOb3RNYXRjaCA9PiBJbmRldFxuICB8IE1hdGNoZXMobikgPT4gZihuKVxuICB9O1xuXG5tb2R1bGUgdHlwZSBFVl9NT0RFID0ge1xuICB0eXBlIHN0YXRlO1xuICB0eXBlIHJlc3VsdDtcbiAgdHlwZSByZXF1aXJlbWVudCgnYSk7XG4gIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYik7XG5cbiAgbGV0IHJlcV92YWx1ZTpcbiAgICAoREhFeHAudCA9PiByZXN1bHQsIEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQsIERIRXhwLnQpID0+XG4gICAgcmVxdWlyZW1lbnQoREhFeHAudCk7XG4gIGxldCByZXFfYWxsX3ZhbHVlOlxuICAgIChcbiAgICAgIERIRXhwLnQgPT4gcmVzdWx0LFxuICAgICAgKEV2YWxDdHgudCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKSA9PiBFdmFsQ3R4LnQsXG4gICAgICBsaXN0KERIRXhwLnQpXG4gICAgKSA9PlxuICAgIHJlcXVpcmVtZW50KGxpc3QoREhFeHAudCkpO1xuICBsZXQgcmVxX2ZpbmFsOlxuICAgIChESEV4cC50ID0+IHJlc3VsdCwgRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgREhFeHAudCkgPT5cbiAgICByZXF1aXJlbWVudChESEV4cC50KTtcbiAgbGV0IHJlcV9hbGxfZmluYWw6XG4gICAgKFxuICAgICAgREhFeHAudCA9PiByZXN1bHQsXG4gICAgICAoRXZhbEN0eC50LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpID0+IEV2YWxDdHgudCxcbiAgICAgIGxpc3QoREhFeHAudClcbiAgICApID0+XG4gICAgcmVxdWlyZW1lbnQobGlzdChESEV4cC50KSk7XG4gIGxldCByZXFfZmluYWxfb3JfdmFsdWU6XG4gICAgKERIRXhwLnQgPT4gcmVzdWx0LCBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBESEV4cC50KSA9PlxuICAgIHJlcXVpcmVtZW50KChESEV4cC50LCBib29sKSk7XG5cbiAgbGV0IChsZXQuKTogKHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksICdhID0+IHJ1bGUpID0+IHJlc3VsdDtcbiAgbGV0IChhbmQuKTpcbiAgICAocmVxdWlyZW1lbnRzKCdhLCAnYyA9PiAnYiksIHJlcXVpcmVtZW50KCdjKSkgPT5cbiAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKTtcbiAgbGV0IG90aGVyd2lzZTogKENsb3N1cmVFbnZpcm9ubWVudC50LCAnYSkgPT4gcmVxdWlyZW1lbnRzKHVuaXQsICdhKTtcblxuICBsZXQgdXBkYXRlX3Rlc3Q6IChzdGF0ZSwgSWQudCwgVGVzdE1hcC5pbnN0YW5jZV9yZXBvcnQpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgVHJhbnNpdGlvbiA9IChFVjogRVZfTU9ERSkgPT4ge1xuICBvcGVuIEVWO1xuICBvcGVuIERIRXhwO1xuXG4gIC8vIERlZmF1bHQgc3RhdGUgdXBkYXRlXG4gIGxldCBzdGF0ZV91cGRhdGUgPSAoKSA9PiAoKTtcblxuICBsZXQgKGxldC5tYXRjaCkgPSAoKGVudiwgbWF0Y2hfcmVzdWx0OiBQYXR0ZXJuTWF0Y2gubWF0Y2hfcmVzdWx0KSwgcikgPT5cbiAgICBzd2l0Y2ggKG1hdGNoX3Jlc3VsdCkge1xuICAgIHwgSW5kZXRNYXRjaFxuICAgIHwgRG9lc05vdE1hdGNoID0+IEluZGV0XG4gICAgfCBNYXRjaGVzKGVudicpID0+IHIoZXZhbHVhdGVfZXh0ZW5kX2VudihlbnYnLCBlbnYpKVxuICAgIH07XG5cbiAgLyogTm90ZVtNYXR0XTogRm9yIElEcywgSSdtIGN1cnJlbnRseSB1c2luZyBhIGZyZXNoIGlkXG4gICAgIGlmIGFueXRoaW5nIGFib3V0IHRoZSBjdXJyZW50IG5vZGUgY2hhbmdlcywgaWYgb25seSBpdHNcbiAgICAgY2hpbGRyZW4gY2hhbmdlLCB3ZSB1c2UgcmV3cmFwICovXG5cbiAgbGV0IHRyYW5zaXRpb24gPSAocmVxLCBzdGF0ZSwgZW52LCBkKTogJ2EgPT4ge1xuICAgIC8vIFNwbGl0IERIRXhwIGludG8gdGVybSBhbmQgaWQgaW5mb3JtYXRpb25cbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBESEV4cC51bndyYXAoZCk7XG4gICAgbGV0IHdyYXBfY3R4ID0gKHRlcm0pOiBFdmFsQ3R4LnQgPT4gVGVybSh7dGVybSwgaWRzOiBbcmVwX2lkKGQpXX0pO1xuXG4gICAgLy8gVHJhbnNpdGlvbiBydWxlc1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgVmFyKHgpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBWYXIoeCkgfD4gcmV3cmFwKTtcbiAgICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgICB8IFNvbWUoZCkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogZCB8PiBmYXN0X2NvcHkoSWQubWsoKSksXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IFZhckxvb2t1cCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IE5vbmUgPT4gSW5kZXRcbiAgICAgIH07XG4gICAgfCBTZXEoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gU2VxKGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gU2VxMShkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBTdGVwKHtleHByOiBkMiwgc3RhdGVfdXBkYXRlLCBraW5kOiBTZXEsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgTGV0KGRwLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBMZXQoZHAsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBMZXQxKGRwLCBkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBsZXQubWF0Y2ggZW52JyA9IChlbnYsIG1hdGNoZXMoZHAsIGQxJykpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IENsb3N1cmUoZW52JywgZDIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IExldEJpbmQsXG4gICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgVHlwRnVuKF8pXG4gICAgfCBGdW4oXywgXywgU29tZShfKSwgXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBGdW4ocCwgZDEsIE5vbmUsIHYpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBGdW4ocCwgZDEsIFNvbWUoZW52KSwgdikgfD4gcmV3cmFwLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEZ1bkNsb3N1cmUsXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBGaXhGKGRwLCBkMSwgTm9uZSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIEZpeEYoZHAsIGQxLCBOb25lKSB8PiByZXdyYXApO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IEZpeEYoZHAsIGQxLCBTb21lKGVudikpIHw+IHJld3JhcCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBGaXhDbG9zdXJlLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IEZpeEYoZHAsIGQxLCBTb21lKGVudikpID0+XG4gICAgICBzd2l0Y2ggKERIUGF0LmdldF92YXIoZHApKSB7XG4gICAgICAvLyBTaW1wbGUgUmVjdXJzaW9uIGNhc2VcbiAgICAgIHwgU29tZShmKSA9PlxuICAgICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgICAgbGV0IGVudicnID1cbiAgICAgICAgICBldmFsdWF0ZV9leHRlbmRfZW52KFxuICAgICAgICAgICAgRW52aXJvbm1lbnQuc2luZ2xldG9uKChmLCBGaXhGKGRwLCBkMSwgU29tZShlbnYpKSB8PiByZXdyYXApKSxcbiAgICAgICAgICAgIGVudixcbiAgICAgICAgICApO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMSkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgLy8gTXV0dWFsIFJlY3Vyc2lvbiBjYXNlXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAgIGxldCBiaW5kaW5ncyA9IERIUGF0LmJvdW5kX3ZhcnMoZHApO1xuICAgICAgICBsZXQgc3Vic3RpdHV0aW9ucyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICBiaW5kaW5nID0+XG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBiaW5kaW5nLFxuICAgICAgICAgICAgICAgIExldChcbiAgICAgICAgICAgICAgICAgIGRwLFxuICAgICAgICAgICAgICAgICAgRml4RihkcCwgZDEsIFNvbWUoZW52KSkgfD4gcmV3cmFwLFxuICAgICAgICAgICAgICAgICAgVmFyKGJpbmRpbmcpIHw+IGZyZXNoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJpbmRpbmdzLFxuICAgICAgICAgICk7XG4gICAgICAgIGxldCBlbnYnJyA9XG4gICAgICAgICAgZXZhbHVhdGVfZXh0ZW5kX2VudihFbnZpcm9ubWVudC5vZl9saXN0KHN1YnN0aXR1dGlvbnMpLCBlbnYpO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMSkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIHwgVGVzdChkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKChkLCBfKSkgPT4gVGVzdChkKSB8PiByZXdyYXApXG4gICAgICBhbmQuIChkJywgaXNfdmFsdWUpID1cbiAgICAgICAgcmVxX2ZpbmFsX29yX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBUZXN0KGQpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIGxldCByZXN1bHQ6IFRlc3RTdGF0dXMudCA9XG4gICAgICAgIGlmIChpc192YWx1ZSkge1xuICAgICAgICAgIHN3aXRjaCAoVW5ib3hpbmcudW5ib3goQm9vbCwgZCcpKSB7XG4gICAgICAgICAgfCBEb2VzTm90TWF0Y2hcbiAgICAgICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRcbiAgICAgICAgICB8IE1hdGNoZXMoYikgPT4gYiA/IFBhc3MgOiBGYWlsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBJbmRldDtcbiAgICAgICAgfTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBUdXBsZShbXSkgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZTogKCkgPT5cbiAgICAgICAgICB1cGRhdGVfdGVzdChzdGF0ZSwgREhFeHAucmVwX2lkKGQpLCAoZCcsIHJlc3VsdCkpLFxuICAgICAgICBraW5kOiBVcGRhdGVUZXN0LFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVHlwQXAoZCwgdGF1KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCA9PiBUeXBBcChkLCB0YXUpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZCcgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkID0+IFR5cEFwKGQsIHRhdSkgfD4gd3JhcF9jdHgsIGQpO1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQnKSkge1xuICAgICAgfCBUeXBGdW4odXRwYXQsIHRmYm9keSwgbmFtZSkgPT5cbiAgICAgICAgLyogUnVsZSBJVFRMYW0gKi9cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjpcbiAgICAgICAgICAgIERIRXhwLmFzc2lnbl9uYW1lX2lmX25vbmUoXG4gICAgICAgICAgICAgIC8qIEluaGVyaXQgbmFtZSBmb3IgdXNlciBjbGFyaXR5ICovXG4gICAgICAgICAgICAgIERIRXhwLnR5X3N1YnN0KHRhdSwgdXRwYXQsIHRmYm9keSksXG4gICAgICAgICAgICAgIE9wdGlvbi5tYXAoXG4gICAgICAgICAgICAgICAgeCA9PiB4ICsrIFwiQDxcIiArKyBUeXAucHJldHR5X3ByaW50KHRhdSkgKysgXCI+XCIsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IFR5cEZ1bkFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgQ2FzdChcbiAgICAgICAgICBkJycsXG4gICAgICAgICAge3Rlcm06IEZvcmFsbCh0cDEsIF8pLCBffSBhcyB0MSxcbiAgICAgICAgICB7dGVybTogRm9yYWxsKHRwMiwgXyksIF99IGFzIHQyLFxuICAgICAgICApID0+XG4gICAgICAgIC8qIFJ1bGUgSVRUQXBDYXN0ICovXG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6XG4gICAgICAgICAgICBDYXN0KFxuICAgICAgICAgICAgICBUeXBBcChkJycsIHRhdSkgfD4gRXhwLmZyZXNoLFxuICAgICAgICAgICAgICBUeXAuc3Vic3QodGF1LCB0cDEsIHQxKSxcbiAgICAgICAgICAgICAgVHlwLnN1YnN0KHRhdSwgdHAyLCB0MiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICB8PiBFeHAuZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IENhc3RUeXBBcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR5cEZ1bihkJykpKVxuICAgICAgfTtcbiAgICB8IERlZmVycmVkQXAoZDEsIGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkcykgPT4gRGVmZXJyZWRBcChkMSwgZHMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gRGVmZXJyZWRBcDEoZDEsIGRzKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2FsbF9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgKGQyLCBkcykgPT4gRGVmZXJyZWRBcDIoZDEsIGQyLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IEFwKGRpciwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCAoZDIsIF8pKSA9PiBBcChkaXIsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBBcDEoZGlyLCBkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSlcbiAgICAgIGFuZC4gKGQyJywgZDJfaXNfdmFsdWUpID1cbiAgICAgICAgcmVxX2ZpbmFsX29yX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMiA9PiBBcDIoZGlyLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxJykpIHtcbiAgICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICAgIHwgRnVuKGRwLCBkMywgU29tZShlbnYnKSwgXykgPT5cbiAgICAgICAgbGV0Lm1hdGNoIGVudicnID0gKGVudicsIG1hdGNoZXMoZHAsIGQyJykpO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMykgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZ1bkFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB8IENhc3QoXG4gICAgICAgICAgZDMnLFxuICAgICAgICAgIHt0ZXJtOiBBcnJvdyh0eTEsIHR5MiksIF99LFxuICAgICAgICAgIHt0ZXJtOiBBcnJvdyh0eTEnLCB0eTInKSwgX30sXG4gICAgICAgICkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjpcbiAgICAgICAgICAgIENhc3QoXG4gICAgICAgICAgICAgIEFwKGRpciwgZDMnLCBDYXN0KGQyJywgdHkxJywgdHkxKSB8PiBmcmVzaCkgfD4gZnJlc2gsXG4gICAgICAgICAgICAgIHR5MixcbiAgICAgICAgICAgICAgdHkyJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBDYXN0QXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCBCdWlsdGluRnVuKGlkZW50KSA9PlxuICAgICAgICBpZiAoZDJfaXNfdmFsdWUpIHtcbiAgICAgICAgICBTdGVwKHtcbiAgICAgICAgICAgIGV4cHI6IHtcbiAgICAgICAgICAgICAgbGV0IGJ1aWx0aW4gPVxuICAgICAgICAgICAgICAgIFZhck1hcC5sb29rdXAoQnVpbHRpbnMuZm9ybXNfaW5pdCwgaWRlbnQpXG4gICAgICAgICAgICAgICAgfD4gT3B0VXRpbC5nZXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBleGNlcHRpb24gc2hvdWxkIG5ldmVyIGJlIHJhaXNlZCBiZWNhdXNlIHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICBubyB3YXkgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBhIEJ1aWx0aW5GdW4uIFRoZXkgYXJlIGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY29udGV4dCBiZWZvcmUgZXZhbHVhdGlvbi4gKi9cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlKFxuICAgICAgICAgICAgICAgICAgICAgICBFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJ1aWx0aW4oaWRlbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnVpbHRpbihkMik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgICAga2luZDogQnVpbHRpbkFwKGlkZW50KSxcbiAgICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSAvLyBOb3QgbmVjZXNzYXJpbHkgYSB2YWx1ZSBiZWNhdXNlIG9mIEludmFsaWRPcGVyYXRpb25zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgSW5kZXQ7XG4gICAgICAgIH1cbiAgICAgIC8qIFRoaXMgY2FzZSBpc24ndCBjdXJyZW50bHkgdXNlZCBiZWNhdXNlIGRlZmVycmFscyBhcmUgZWxhYm9yYXRlZCBhd2F5ICovXG4gICAgICB8IERlZmVycmVkQXAoZDMsIGQ0cykgPT5cbiAgICAgICAgbGV0IG5fYXJncyA9XG4gICAgICAgICAgTGlzdC5sZW5ndGgoXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgIHwge3Rlcm06IERlZmVycmFsKF8pLCBffSA9PiB0cnVlXG4gICAgICAgICAgICAgIHwgXyA9PiBmYWxzZTogRXhwLnQgPT4gYm9vbCxcbiAgICAgICAgICAgICAgZDRzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQtdW5ib3ggYXJncyA9IChUdXBsZShuX2FyZ3MpLCBkMik7XG4gICAgICAgIGxldCBuZXdfYXJncyA9IHtcbiAgICAgICAgICBsZXQgcmVjIGdvID0gKGRlZmVycmVkLCBhcmdzKSA9PlxuICAgICAgICAgICAgc3dpdGNoICgoZGVmZXJyZWQ6IGxpc3QoRXhwLnQpKSkge1xuICAgICAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICAgICAgfCBbe3Rlcm06IERlZmVycmFsKF8pLCBffSwgLi4uZGVmZXJyZWRdID0+XG4gICAgICAgICAgICAgIC8qIEkgY2FuIHVzZSBMaXN0LmhkIGFuZCBMaXN0LnRsIGhlcmUgYmVjYXVzZSBsZXQtdW5ib3ggZW5zdXJlIHRoYXRcbiAgICAgICAgICAgICAgICAgdGhlcmUgYXJlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmdzICovXG4gICAgICAgICAgICAgIFtMaXN0LmhkKGFyZ3MpLCAuLi5nbyhkZWZlcnJlZCwgTGlzdC50bChhcmdzKSldXG4gICAgICAgICAgICB8IFt4LCAuLi5kZWZlcnJlZF0gPT4gW3gsIC4uLmdvKGRlZmVycmVkLCBhcmdzKV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgZ28oZDRzLCBhcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQXAoRm9yd2FyZCwgZDMsIFR1cGxlKG5ld19hcmdzKSB8PiBmcmVzaCkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IERlZmVycmVkQXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBGYWlsZWRDYXN0KF8pID0+IEluZGV0XG4gICAgICB8IEZpeEYoXykgPT5cbiAgICAgICAgcHJpbnRfZW5kbGluZShFeHAuc2hvdyhkMSkpO1xuICAgICAgICBwcmludF9lbmRsaW5lKEV4cC5zaG93KGQxJykpO1xuICAgICAgICBwcmludF9lbmRsaW5lKFwiRklYRlwiKTtcbiAgICAgICAgZmFpbHdpdGgoXCJGaXhGIGluIEFwXCIpO1xuICAgICAgfCBfID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6IHtcbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGdW4oZDEnKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEludmFsaWRTdGVwLFxuICAgICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB8IERlZmVycmFsKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQnVpbHRpbkZ1bihfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IElmKGMsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGMgPT4gSWYoYywgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGMnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgYyA9PiBJZjEoYywgZDEsIGQyKSB8PiB3cmFwX2N0eCwgYyk7XG4gICAgICBsZXQtdW5ib3ggYiA9IChCb29sLCBjJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjoge1xuICAgICAgICAgIGIgPyBkMSA6IGQyO1xuICAgICAgICB9LFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIC8vIEF0dGFjaCBjJyB0byBpbmRpY2F0ZSB3aGljaCBicmFuY2ggdGFrZW4uXG4gICAgICAgIGtpbmQ6IENvbmRpdGlvbmFsKGIpLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgSW5kZXQ7XG4gICAgfCBVbk9wKEludChNaW51cyksIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gVW5PcChJbnQoTWludXMpLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGMgPT4gVW5PcChJbnQoTWludXMpLCBjKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBuID0gKEludCwgZDEnKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBJbnQoLSBuKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBVbk9wKEludChNaW51cykpLFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVW5PcChCb29sKE5vdCksIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gVW5PcChCb29sKE5vdCksIGQxKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgYyA9PiBVbk9wKEJvb2woTm90KSwgYykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggYiA9IChCb29sLCBkMScpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IEJvb2woIWIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IFVuT3AoQm9vbChOb3QpKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKEJvb2woQW5kKSwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gQmluT3AoQm9vbChBbmQpLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoQm9vbChBbmQpLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIxID0gKEJvb2wsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogYjEgPyBkMiA6IEJvb2woZmFsc2UpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkJvb2xPcChBbmQpLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKEJvb2woT3IpLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBCaW5PcChCb29sKE9yKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEJvb2woT3IpLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIxID0gKEJvb2wsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogYjEgPyBCb29sKHRydWUpIHw+IGZyZXNoIDogZDIsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogQmluQm9vbE9wKE9yKSxcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChJbnQob3ApLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5PcChJbnQob3ApLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoSW50KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihJbnQob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IG4xID0gKEludCwgZDEnKTtcbiAgICAgIGxldC11bmJveCBuMiA9IChJbnQsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICAoXG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IFBsdXMgPT4gSW50KG4xICsgbjIpXG4gICAgICAgICAgICB8IE1pbnVzID0+IEludChuMSAtIG4yKVxuICAgICAgICAgICAgfCBQb3dlciB3aGVuIG4yIDwgMCA9PlxuICAgICAgICAgICAgICBEeW5hbWljRXJyb3JIb2xlKFxuICAgICAgICAgICAgICAgIEJpbk9wKEludChvcCksIGQxJywgZDInKSB8PiByZXdyYXAsXG4gICAgICAgICAgICAgICAgTmVnYXRpdmVFeHBvbmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBJbnQoSW50VXRpbC5pcG93KG4xLCBuMikpXG4gICAgICAgICAgICB8IFRpbWVzID0+IEludChuMSAqIG4yKVxuICAgICAgICAgICAgfCBEaXZpZGUgd2hlbiBuMiA9PSAwID0+XG4gICAgICAgICAgICAgIER5bmFtaWNFcnJvckhvbGUoXG4gICAgICAgICAgICAgICAgQmluT3AoSW50KG9wKSwgZDEnLCBkMScpIHw+IHJld3JhcCxcbiAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgRGl2aWRlID0+IEludChuMSAvIG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbiA9PiBCb29sKG4xIDwgbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBCb29sKG4xIDw9IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbiA9PiBCb29sKG4xID4gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBCb29sKG4xID49IG4yKVxuICAgICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbChuMSA9PSBuMilcbiAgICAgICAgICAgIHwgTm90RXF1YWxzID0+IEJvb2wobjEgIT0gbjIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkludE9wKG9wKSxcbiAgICAgICAgLy8gRmFsc2Ugc28gdGhhdCBJbnZhbGlkT3BlcmF0aW9ucyBhcmUgY2F1Z2h0IGFuZCBtYWRlIGluZGV0IGJ5IHRoZSBuZXh0IHN0ZXBcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChGbG9hdChvcCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9XG4gICAgICAgIG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbk9wKEZsb2F0KG9wKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEZsb2F0KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihGbG9hdChvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggbjEgPSAoRmxvYXQsIGQxJyk7XG4gICAgICBsZXQtdW5ib3ggbjIgPSAoRmxvYXQsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICAoXG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IFBsdXMgPT4gRmxvYXQobjEgKy4gbjIpXG4gICAgICAgICAgICB8IE1pbnVzID0+IEZsb2F0KG4xIC0uIG4yKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBGbG9hdChuMSAqKiBuMilcbiAgICAgICAgICAgIHwgVGltZXMgPT4gRmxvYXQobjEgKi4gbjIpXG4gICAgICAgICAgICB8IERpdmlkZSA9PiBGbG9hdChuMSAvLiBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW4gPT4gQm9vbChuMSA8IG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA8PSBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW4gPT4gQm9vbChuMSA+IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA+PSBuMilcbiAgICAgICAgICAgIHwgRXF1YWxzID0+IEJvb2wobjEgPT0gbjIpXG4gICAgICAgICAgICB8IE5vdEVxdWFscyA9PiBCb29sKG4xICE9IG4yKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBCaW5GbG9hdE9wKG9wKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKFN0cmluZyhvcCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9XG4gICAgICAgIG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbk9wKFN0cmluZyhvcCksIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IEJpbk9wMShTdHJpbmcob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gQmluT3AyKFN0cmluZyhvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggczEgPSAoU3RyaW5nLCBkMScpO1xuICAgICAgbGV0LXVuYm94IHMyID0gKFN0cmluZywgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOlxuICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICB8IENvbmNhdCA9PiBTdHJpbmcoczEgKysgczIpIHw+IGZyZXNoXG4gICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbChzMSA9PSBzMikgfD4gZnJlc2hcbiAgICAgICAgICB9LFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpblN0cmluZ09wKG9wKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IFR1cGxlKGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZHMgPT4gVHVwbGUoZHMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9hbGxfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIChkMSwgZHMpID0+IFR1cGxlKGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IENvbnMoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQ29ucyhkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQ29uczEoZDEsIGQyKSB8PiB3cmFwX2N0eCwgZDEpXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IENvbnMyKGQxLCBkMikgfD4gd3JhcF9jdHgsIGQyKTtcbiAgICAgIGxldC11bmJveCBkcyA9IChMaXN0LCBkMicpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IExpc3RMaXQoW2QxJywgLi4uZHNdKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBMaXN0Q29ucyxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gTGlzdENvbmNhdChkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBMaXN0Q29uY2F0MShkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gTGlzdENvbmNhdDIoZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMixcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBkczEgPSAoTGlzdCwgZDEnKTtcbiAgICAgIGxldC11bmJveCBkczIgPSAoTGlzdCwgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBMaXN0TGl0KGRzMSBAIGRzMikgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogTGlzdENvbmNhdCxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RMaXQoZHMpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkcyA9PiBMaXN0TGl0KGRzKSB8PiByZXdyYXApXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfYWxsX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICAoZDEsIGRzKSA9PiBMaXN0TGl0KGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IE1hdGNoKGQxLCBydWxlcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IE1hdGNoKGQxLCBydWxlcykgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMSA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gTWF0Y2hTY3J1dChkMSwgcnVsZXMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlYyBuZXh0X3J1bGUgPSAoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFtdID0+IE5vbmVcbiAgICAgICAgfCBbKGRwLCBkMiksIC4uLnJ1bGVzXSA9PlxuICAgICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcCwgZDEpKSB7XG4gICAgICAgICAgfCBNYXRjaGVzKGVudicpID0+IFNvbWUoKGVudicsIGQyKSlcbiAgICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBuZXh0X3J1bGUocnVsZXMpXG4gICAgICAgICAgfCBJbmRldE1hdGNoID0+IE5vbmVcbiAgICAgICAgICB9XG4gICAgICApO1xuICAgICAgc3dpdGNoIChuZXh0X3J1bGUocnVsZXMpKSB7XG4gICAgICB8IFNvbWUoKGVudicsIGQyKSkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQ2xvc3VyZShldmFsdWF0ZV9leHRlbmRfZW52KGVudicsIGVudiksIGQyKSB8PiBmcmVzaCxcbiAgICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgICAga2luZDogQ2FzZUFwcGx5LFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgTm9uZSA9PiBJbmRldFxuICAgICAgfTtcbiAgICB8IENsb3N1cmUoZW52JywgZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQgPT4gQ2xvc3VyZShlbnYnLCBkKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52JyksIGQxID0+IENsb3N1cmUoZW52JywgZDEpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIFN0ZXAoe2V4cHI6IGQnLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IENvbXBsZXRlQ2xvc3VyZSwgaXNfdmFsdWU6IHRydWV9KTtcbiAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAvLyBhbmQuIF8gPVxuICAgICAgLy8gICByZXFfYWxsX2ZpbmFsKFxuICAgICAgLy8gICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgIC8vICAgICAoZDEsIGRzKSA9PiBNdWx0aUhvbGUoZDEsIGRzKSB8PiB3cmFwX2N0eCxcbiAgICAgIC8vICAgICBkcyxcbiAgICAgIC8vICAgKTtcbiAgICAgIEluZGV0O1xuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQ2FzdChkLCB0MSwgdDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IENhc3QoZCwgdDEsIHQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gd3JhcF9jdHgsIGQpO1xuICAgICAgc3dpdGNoIChDYXN0cy50cmFuc2l0aW9uKENhc3QoZCcsIHQxLCB0MikgfD4gcmV3cmFwKSkge1xuICAgICAgfCBTb21lKGQpID0+IFN0ZXAoe2V4cHI6IGQsIHN0YXRlX3VwZGF0ZSwga2luZDogQ2FzdCwgaXNfdmFsdWU6IGZhbHNlfSlcbiAgICAgIHwgTm9uZSA9PiBDb25zdHJ1Y3RvclxuICAgICAgfTtcbiAgICB8IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgSW5kZXQ7XG4gICAgfCBQYXJlbnMoZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgU3RlcCh7ZXhwcjogZCwgc3RhdGVfdXBkYXRlLCBraW5kOiBSZW1vdmVQYXJlbnMsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgVHlBbGlhcyhfLCBfLCBkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBTdGVwKHtleHByOiBkLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IFJlbW92ZVR5cGVBbGlhcywgaXNfdmFsdWU6IGZhbHNlfSk7XG4gICAgfCBGaWx0ZXIoZjEsIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gRmlsdGVyKGYxLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMSA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IEZpbHRlcihmMSwgZDEpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBTdGVwKHtleHByOiBkMSwgc3RhdGVfdXBkYXRlLCBraW5kOiBDb21wbGV0ZUZpbHRlciwgaXNfdmFsdWU6IHRydWV9KTtcbiAgICB9O1xuICB9O1xufTtcblxubGV0IHNob3VsZF9oaWRlX3N0ZXAgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50KSA9PlxuICBmdW5cbiAgfCBMZXRCaW5kXG4gIHwgU2VxXG4gIHwgVXBkYXRlVGVzdFxuICB8IFR5cEZ1bkFwXG4gIHwgRnVuQXBcbiAgfCBEZWZlcnJlZEFwXG4gIHwgQnVpbHRpbkFwKF8pXG4gIHwgQmluQm9vbE9wKF8pXG4gIHwgQmluSW50T3AoXylcbiAgfCBCaW5GbG9hdE9wKF8pXG4gIHwgQmluU3RyaW5nT3AoXylcbiAgfCBVbk9wKF8pXG4gIHwgTGlzdENvbnNcbiAgfCBMaXN0Q29uY2F0XG4gIHwgQ2FzZUFwcGx5XG4gIHwgUHJvamVjdGlvbiAvLyBUT0RPKE1hdHQpOiBXZSBkb24ndCB3YW50IHRvIHNob3cgcHJvamVjdGlvbiB0byB0aGUgdXNlclxuICB8IENvbmRpdGlvbmFsKF8pXG4gIHwgUmVtb3ZlVHlwZUFsaWFzXG4gIHwgSW52YWxpZFN0ZXAgPT4gZmFsc2VcbiAgfCBWYXJMb29rdXAgPT4gIXNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzXG4gIHwgQ2FzdFR5cEFwXG4gIHwgQ2FzdEFwXG4gIHwgQ2FzdCA9PiAhc2V0dGluZ3Muc2hvd19jYXN0c1xuICB8IEZpeFVud3JhcCA9PiAhc2V0dGluZ3Muc2hvd19maXhwb2ludHNcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgRnVuQ2xvc3VyZVxuICB8IEZpeENsb3N1cmVcbiAgfCBSZW1vdmVQYXJlbnMgPT4gdHJ1ZTtcbiIsIm9wZW4gREhFeHA7XG5vcGVuIFRyYW5zaXRpb247XG5cbnR5cGUgdCA9XG4gIHwgVmFsdWVcbiAgfCBJbmRldFxuICB8IEV4cHI7XG5cbm1vZHVsZSBWYWx1ZUNoZWNrZXJFVk1vZGU6IHtcbiAgaW5jbHVkZSBFVl9NT0RFIHdpdGggdHlwZSByZXN1bHQgPSB0IGFuZCB0eXBlIHN0YXRlID0gdW5pdDtcbn0gPSB7XG4gIHR5cGUgc3RhdGUgPSB1bml0O1xuICB0eXBlIHJlc3VsdCA9IHQ7XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoJ2EsIChyZXN1bHQsIGJvb2wpKTtcbiAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9ICgnYSwgKHJlc3VsdCwgYm9vbCkpO1xuXG4gIGxldCBjb21iaW5lID0gKChyMSwgYjEpLCAocjIsIGIyKSkgPT4gKFxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoRXhwciwgXykgPT4gRXhwclxuICAgIHwgKF8sIEV4cHIpID0+IEV4cHJcbiAgICB8IChJbmRldCwgXykgPT4gSW5kZXRcbiAgICB8IChfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8IChWYWx1ZSwgVmFsdWUpID0+IFZhbHVlXG4gICAgfSxcbiAgICBiMSAmJiBiMixcbiAgKTtcblxuICBsZXQgcmVxX3ZhbHVlID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIGZhbHNlKVxuICAgIHwgRXhwciA9PiAoRXhwciwgZmFsc2UpXG4gICAgfSxcbiAgKTtcbiAgbGV0IHJlcV9hbGxfdmFsdWUgPSAodmMsIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgodjEsIHIxKSwgKHYyLCByMikpID0+IChbdjEsIC4uLnYyXSwgY29tYmluZShyMSwgcjIpKSxcbiAgICAgIExpc3QubWFwKHJlcV92YWx1ZSh2YywgeCA9PiB4KSwgZHMpLFxuICAgICAgKFtdLCAoVmFsdWUsIHRydWUpKSxcbiAgICApO1xuICBsZXQgcmVxX2ZpbmFsID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIHRydWUpXG4gICAgfCBFeHByID0+IChFeHByLCBmYWxzZSlcbiAgICB9LFxuICApO1xuICBsZXQgcmVxX2FsbF9maW5hbCA9ICh2YywgXywgZHMpID0+XG4gICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgKCh2MSwgcjEpLCAodjIsIHIyKSkgPT4gKFt2MSwgLi4udjJdLCBjb21iaW5lKHIxLCByMikpLFxuICAgICAgTGlzdC5tYXAocmVxX2ZpbmFsKHZjLCB4ID0+IHgpLCBkcyksXG4gICAgICAoW10sIChWYWx1ZSwgdHJ1ZSkpLFxuICAgICk7XG5cbiAgbGV0IHJlcV9maW5hbF9vcl92YWx1ZSA9ICh2YywgXywgZCkgPT5cbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoKGQsIHRydWUpLCAoVmFsdWUsIHRydWUpKVxuICAgIHwgSW5kZXQgPT4gKChkLCBmYWxzZSksIChWYWx1ZSwgdHJ1ZSkpXG4gICAgfCBFeHByID0+ICgoZCwgZmFsc2UpLCAoVmFsdWUsIGZhbHNlKSlcbiAgICB9O1xuXG4gIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCgpLCAoVmFsdWUsIHRydWUpKTtcblxuICBsZXQgKGxldC4pID0gKCh2LCAociwgYikpLCBydWxlKSA9PlxuICAgIHN3aXRjaCAoYiwgciwgcnVsZSh2KSkge1xuICAgIHwgKF8sIF8sIENvbnN0cnVjdG9yKSA9PiByXG4gICAgfCAoXywgRXhwciwgSW5kZXQpID0+IEV4cHJcbiAgICB8IChfLCBfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8ICh0cnVlLCBfLCBTdGVwKF8pKSA9PiBFeHByXG4gICAgfCAoZmFsc2UsIF8sIFN0ZXAoXykpID0+IHJcbiAgICB9O1xuXG4gIGxldCAoYW5kLikgPSAoKHYxLCByMSksICh2MiwgcjIpKSA9PiB7XG4gICAgKCh2MSwgdjIpLCBjb21iaW5lKHIxLCByMikpO1xuICB9O1xuXG4gIGxldCB1cGRhdGVfdGVzdCA9IChfLCBfLCBfKSA9PiAoKTtcbn07XG5cbm1vZHVsZSBDViA9IFRyYW5zaXRpb24oVmFsdWVDaGVja2VyRVZNb2RlKTtcblxubGV0IHJlYyBjaGVja192YWx1ZSA9IChzdGF0ZSwgZW52LCBkKSA9PlxuICBDVi50cmFuc2l0aW9uKGNoZWNrX3ZhbHVlLCBzdGF0ZSwgZW52LCBkKTtcblxubGV0IHJlYyBjaGVja192YWx1ZV9tb2RfY3R4ID0gKCgpLCBlbnYsIGQpID0+XG4gIHN3aXRjaCAoREhFeHAudGVybV9vZihkKSkge1xuICB8IFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgfCBTb21lKHYpID0+IGNoZWNrX3ZhbHVlX21vZF9jdHgoKCksIGVudiwgdilcbiAgICB8IE5vbmUgPT4gQ1YudHJhbnNpdGlvbihjaGVja192YWx1ZV9tb2RfY3R4LCAoKSwgZW52LCBkKVxuICAgIH1cbiAgfCBfID0+IENWLnRyYW5zaXRpb24oY2hlY2tfdmFsdWVfbW9kX2N0eCwgKCksIGVudiwgZClcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFppcHBlcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwaWVjZV9nb2FsID1cbiAgfCBHcm91dDtcblxubGV0IG9mX3BpZWNlX2dvYWwgPVxuICBmdW5cbiAgfCBHcm91dCA9PiAoXG4gICAgICBmdW5cbiAgICAgIHwgUGllY2UuR3JvdXQoXykgPT4gdHJ1ZVxuICAgICAgfCBfID0+IGZhbHNlXG4gICAgKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBnb2FsID1cbiAgfCBQb2ludChNZWFzdXJlZC5Qb2ludC50KVxuICB8IFBpZWNlKHBpZWNlX2dvYWwsIERpcmVjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZlID1cbiAgfCBFeHRyZW1lKHBsYW5hcilcbiAgfCBMb2NhbChwbGFuYXIpXG4gIHwgR29hbChnb2FsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqdW1wX3RhcmdldCA9XG4gIHwgVGlsZUlkKElkLnQpXG4gIHwgQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWwgPVxuICB8IEN1cnJlbnRcbiAgfCBJZChJZC50LCBEaXJlY3Rpb24udCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0ID1cbiAgfCBBbGxcbiAgfCBSZXNpemUobW92ZSlcbiAgfCBTbWFydFxuICB8IFRpbGUocmVsKVxuICB8IFRlcm0ocmVsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBNb3ZlKG1vdmUpXG4gIHwgTW92ZVRvTmV4dEhvbGUoRGlyZWN0aW9uLnQpXG4gIHwgSnVtcChqdW1wX3RhcmdldClcbiAgfCBTZWxlY3Qoc2VsZWN0KVxuICB8IFVuc2VsZWN0KG9wdGlvbihEaXJlY3Rpb24udCkpXG4gIHwgRGVzdHJ1Y3QoRGlyZWN0aW9uLnQpXG4gIHwgSW5zZXJ0KHN0cmluZylcbiAgfCBSb3RhdGVCYWNrcGFja1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KHBsYW5hcilcbiAgfCBQaWNrX3VwXG4gIHwgUHV0X2Rvd25cbiAgfCBQYXN0ZShzdHJpbmcpXG4gIHwgU3VnZ2VzdChTZWdtZW50LnQpXG4gIHwgUmVzZXRTdWdnZXN0aW9uO1xuXG5tb2R1bGUgRmFpbHVyZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ2FudF9tb3ZlXG4gICAgfCBDYW50X2luc2VydFxuICAgIHwgQ2FudF9kZXN0cnVjdFxuICAgIHwgQ2FudF9zZWxlY3RcbiAgICB8IENhbnRfcHV0X2Rvd25cbiAgICB8IENhbnRfcGFzdGVcbiAgICB8IENhbnRfdW5kb1xuICAgIHwgQ2FudF9yZWRvO1xuXG4gIGV4Y2VwdGlvbiBFeGNlcHRpb24odCk7XG59O1xuXG5tb2R1bGUgUmVzdWx0ID0ge1xuICBpbmNsdWRlIFJlc3VsdDtcbiAgdHlwZSB0KCdzdWNjZXNzKSA9IFJlc3VsdC50KCdzdWNjZXNzLCBGYWlsdXJlLnQpO1xufTtcblxubGV0IGlzX2VkaXQ6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IEluc2VydChfKVxuICB8IERlc3RydWN0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUGFzdGUoXykgPT4gdHJ1ZVxuICB8IE1vdmUoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IEp1bXAoXylcbiAgfCBTZWxlY3QoXylcbiAgfCBVbnNlbGVjdChfKVxuICB8IFJvdGF0ZUJhY2twYWNrXG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoXylcbiAgfCBTdWdnZXN0KF8pXG4gIHwgUmVzZXRTdWdnZXN0aW9uID0+IGZhbHNlO1xuIiwiLyogQml0IG9mIGEgaGFjay4gV2Ugd2FudCB0byBkZWNvcmF0ZSBzdWdnZXN0aW9ucyB3aGljaCB3aWxsIHRyaWdnZXJcbiAgIGFuIGV4cGFuc2lvbiB0byB0ZWxlZ3JhcGggdGhhdCBleHBhbnNpb24uIEVhc2llc3Qgd2F5IG1ldHJpY3Mgd2lzZVxuICAgaXMgdG8ga2VlcCB0aGF0IGRlY28gaW4gdGhlIHN5bnRheC4gV2FudCB0byBkZWNvcmF0ZSB3aXRoIGVsbGlwc2VzXG4gICBjaGFyYWN0ZXIsIGJ1dCBPQ2FtbCBzdHJpbmcgZnVuY3Rpb25zIGRvbid0IHN1cHBvcnQgdW5pY29kZSwgc29cbiAgIHdlIHVzZSAkLCB0aGVuIHN3YXAgaXQgb3V0IGZvciB0aGUgdW5pY29kZSBjaGFyYWN0ZXIgaW4gQ29kZS5cbiAgIEV2ZW50dWFsbHkgcmVwbGFjZSB0aGlzIGJ5IGV4dGVuZGluZyB0aGUgc3VnZ2VzdGlvbiBkYXRhIHN0cnVjdHVyZSAqL1xubGV0IGMgPSBcIiRcIjtcblxubGV0IGlzX2V4cGFuZGVyX3RvayA9ICh0OiBUb2tlbi50KSA9PlxuICBTdHJpbmcuc3ViKHQsIFN0cmluZy5sZW5ndGgodCkgLSAxLCAxKSA9PSBjO1xuXG5sZXQgdHJpbV9sYXN0ID0gKHQ6IFRva2VuLnQpID0+IFN0cmluZy5zdWIodCwgMCwgU3RyaW5nLmxlbmd0aCh0KSAtIDEpO1xuXG5sZXQgaXNfZXhwYW5kZXIgPSAobGFiZWw6IExhYmVsLnQpID0+XG4gIHN3aXRjaCAobGFiZWwpIHtcbiAgfCBbdF0gPT4gaXNfZXhwYW5kZXJfdG9rKHQpXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgbWFyayA9IChsYWJlbDogTGFiZWwudCk6IExhYmVsLnQgPT5cbiAgaXNfZXhwYW5kZXIobGFiZWwpID8gTGlzdC5tYXAodCA9PiB0cmltX2xhc3QodCkgKysgXCLigKZcIiwgbGFiZWwpIDogbGFiZWw7XG5cbmxldCB0cmltID0gKGNvbXBsZXRpb246IFRva2VuLnQpOiBUb2tlbi50ID0+XG4gIGlzX2V4cGFuZGVyX3Rvayhjb21wbGV0aW9uKSA/IHRyaW1fbGFzdChjb21wbGV0aW9uKSA6IGNvbXBsZXRpb247XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBUeURpOiBUeXBlLURpcmVjdGVkIE5leHQtVG9rZW4gU3VnZ2VzdGlvbnNcblxuICAgIElERUE6IEV4cGFuZGVkIGNyaXRlcmlhIGZvciB3aGVuIHRvIGF1dG9zaG93OiBDdXJyZW50bHksIHdlIHNob3cgb25seVxuICAgIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb24gd2hpY2ggcHJlZml4LW1hdGNoZXMgYnV0IGlzIG5vdFxuICAgIGlkZW50aWNhbCB0byB0aGUgY3VycmVudCBub256ZXJvIHByZWZpeC4gV2UgbWlnaHQgY29uc2lkZXIgcmVsYXhpbmdcbiAgICB0aGUgbm9uemVybyBwcmVmaXggcGFydC4gV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBhdXRvc2hvdyBvbiBjb3JyZWN0XG4gICAgdG9rZW5zLCBidXQgd2UgY291bGQgYXV0b3Nob3cgb24gZXJyb3JzIGlmIHRoZXJlIGFyZSBmaXhlcywgb3Igb25cbiAgICBlbXB0aWVzIGlmIHRoZXJlJ3Mgb25seSBvbmUgb3B0aW9uLlxuXG4gICAgIElERUE6IEFkZCBhIGtleWJpbmRpbmcgdG8gZm9yY2UgcmV2ZWFsIHN1Z2dlc3Rpb24gaWYgbm90IGN1cnJlbnQgc2hvd24uXG4gICAgIEkndmUgc3R1YmJlZCB0aGlzIG91dCAoQ21kKz8pIGJ1dCBuZWVkcyBhbiBvcHRpb24gdG8gc2hvdyBzdWdnZXN0aW9uc1xuICAgICBldmVuIGlmIG9uIGhvbGUgKGllIHByZWZpeCBmb3IgY29tcGxldGlvbiBpcyBcIlwiKVxuXG4gICAgIElERUE6IElmIHRoZXJlIGFyZSB+IG5vIGN1cnJlbnQgc3VnZ2VzdGlvbnMsIGFuZCB0aGUgaW5kaWNhdGVkIHRlcm1cbiAgICAgaGFzIGEgdHlwZSBlcnJvciBzdWdnZXN0IGZvbGxvd2luZyBpbmZpeGVzIHdoaWNoIGZpeCB0aGF0IHR5cGUgZXJyb3IsXG4gICAgIGUuZy4gZ2l2ZW4gXCJsZXQgYTpGbG9hdCA9IGZzdCgxLjB8XCIgc3VnZ2VzdCBjb21tYVxuICAgICBlLmcuIGdpdmVuIFwibGV0IGI6Qm9vbCA9IDF8XCIgc3VnZ2VzdCA8LCA+LCA8PSwgPj0sID09LCAhPSwgZXRjLlxuXG4gICAgIElERUE6IFVOQklESVJFQ1RJT05BTCBQT1NJVElPTlM6XG4gICAgMS4gSW4gYXAgZnVucG9zOiBmYXZvciBpbnB1dCB0eSBjb25zaXN0ZW50IHdpdGggYXJnXG4gICAgMi4gSW4gY2FzZSBzY3J1dCwgZmF2b3IgdGhlIHR5cyBvZiBleHRhbnQgcGF0dGVybnNcbiAgICAzLiBJbiBsaXN0IGVsZW1lbnQsIGZhdm9yIHRoZSB0eXMgb2YgZXh0YW50IGVsZW1lbnRzXG4gICAgMy4gSW4gcGF0dGVybiBhbm5vdGF0aW9uIHR5cGU6IGZhdm9yIHBhdGFubiBleHBlY3RlZCB0eXBlXG5cbiAgICBJREVBOiBJZiBvbiBpbmZpeCBvcCwgc3VnZ2VzdCBiYXNlZCBvbiBlaXRoZXIgb3BlcmFuZCB0eXBlLFxuICAgIGVzcGVjaWFsbHkgdGhlIGNhc2Ugd2hlcmUgaXQgd291bGQgZml4IGFuIG9wZXJhbmQgdHlwZSBlcnJvclxuXG4gICAgSURFQTogSWYgb24gMi1tdWx0aWhvbGUsIHN1Z2dlc3QgaW5maXggb3BzIGFzIGFib3ZlIG9yIEFwIGlmIGFwcGxpY2FibGVcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9hbGwgPVxuICB8IEZyb21CYWNrcGFjaztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9jb21tb24gPVxuICB8IE5ld0Zvcm0oVHlwLnQpXG4gIHwgRnJvbUN0eChUeXAudClcbiAgfCBGcm9tQ3R4QXAoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X2V4cCA9XG4gIHwgQ29tbW9uKHN0cmF0ZWd5X2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfcGF0ID1cbiAgfCBDb21tb24oc3RyYXRlZ3lfY29tbW9uKVxuICB8IEZyb21Db0N0eChUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfdHlwID1cbiAgfCBOZXdGb3JtXG4gIHwgRnJvbUN0eDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneSA9XG4gIHwgQW55KHN0cmF0ZWd5X2FsbClcbiAgfCBFeHAoc3RyYXRlZ3lfZXhwKVxuICB8IFBhdChzdHJhdGVneV9wYXQpXG4gIHwgVHlwKHN0cmF0ZWd5X3R5cCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY29udGVudDogc3RyaW5nLFxuICBzdHJhdGVneSxcbn07XG5cbmxldCBjb21wYXJlID0gKHMxOiB0LCBzMjogdCk6IGludCA9PiB7XG4gIFN0cmluZy5jb21wYXJlKHMxLmNvbnRlbnQsIHMyLmNvbnRlbnQpO1xufTtcbiIsIm9wZW4gU3VnZ2VzdGlvbjtcblxubGV0IGV4cGFuZGVyID0gQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogRm9yIHN1Z2dlc3Rpb25zIGluIHBhdHRlcm5zLCBzdWdnZXN0IHZhcmlhYmxlcyB3aGljaFxuICogb2NjdXIgZnJlZSBpbiB0aGF0IHBhdHRlcm4ncyBzY29wZS4gKi9cbmxldCBmcmVlX3ZhcmlhYmxlcyA9XG4gICAgKGV4cGVjdGVkX3R5OiBUeXAudCwgY3R4OiBDdHgudCwgY29fY3R4OiBDb0N0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgobmFtZSwgZW50cmllcykpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgam9pbnRfdXNlX3R5cCA9IENvQ3R4LmpvaW4oY3R4LCBlbnRyaWVzKTtcbiAgICAgICAgaWYgKFR5cC5pc19jb25zaXN0ZW50KGN0eCwgZXhwZWN0ZWRfdHksIGpvaW50X3VzZV90eXApKSB7XG4gICAgICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IFBhdChGcm9tQ29DdHgoam9pbnRfdXNlX3R5cCkpfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfTtcbiAgICAgIHwgU29tZShfKSA9PiBOb25lXG4gICAgICB9LFxuICAgIGNvX2N0eCxcbiAgKTtcbn07XG5cbi8qIEZvciBzdWdnZXN0c2lvbnMgaW4gZXhwcmVzc2lvbnMsIHN1Z2dlc3QgdmFyaWFibGVzIGZyb20gdGhlIGN0eCAqL1xubGV0IGJvdW5kX3ZhcmlhYmxlcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwLCBuYW1lLCBffSlcbiAgICAgICAgd2hlbiBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IEV4cChDb21tb24oRnJvbUN0eCh0eXApKSl9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGJvdW5kX2NvbnN0cnVjdG9ycyA9XG4gICAgKHdyYXA6IHN0cmF0ZWd5X2NvbW1vbiA9PiBzdHJhdGVneSwgdHk6IFR5cC50LCBjdHg6IEN0eC50KVxuICAgIDogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIC8qIGdldCBuYW1lcyBvZiBhbGwgY29uc3RydWN0b3IgZW50cmllcyBjb25zaXN0ZW50IHdpdGggdHkgKi9cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ3R4LkNvbnN0cnVjdG9yRW50cnkoe3R5cCwgbmFtZSwgX30pXG4gICAgICAgIHdoZW4gVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IHdyYXAoRnJvbUN0eCh0eXApKX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGFwcGx5aW5nIGEgZnVuY3Rpb24gZnJvbSB0aGUgY3R4IHdoaWNoIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdHlwZSAqL1xubGV0IGJvdW5kX2FwcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwOiB7dGVybTogQXJyb3coXywgdHlfb3V0KSwgX30gYXMgdHlfYXJyLCBuYW1lLCBffSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9vdXQpXG4gICAgICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9hcnIpID0+IHtcbiAgICAgICAgU29tZSh7XG4gICAgICAgICAgY29udGVudDogbmFtZSArKyBcIihcIiArKyBleHBhbmRlcixcbiAgICAgICAgICBzdHJhdGVneTogRXhwKENvbW1vbihGcm9tQ3R4QXAodHlfb3V0KSkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMgPSAod3JhcCwgdHk6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5Db25zdHJ1Y3RvckVudHJ5KHtcbiAgICAgICAgdHlwOiB7dGVybTogQXJyb3coXywgdHlfb3V0KSwgX30gYXMgdHlfYXJyLFxuICAgICAgICBuYW1lLFxuICAgICAgICBfLFxuICAgICAgfSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5X291dClcbiAgICAgICAgICAmJiAhVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlfYXJyKSA9PlxuICAgICAgU29tZSh7XG4gICAgICAgIGNvbnRlbnQ6IG5hbWUgKysgXCIoXCIgKysgZXhwYW5kZXIsXG4gICAgICAgIHN0cmF0ZWd5OiB3cmFwKEZyb21DdHhBcCh0eV9vdXQpKSxcbiAgICAgIH0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGJvdW5kIHR5cGUgYWxpYXNlcyBpbiB0eXBlIGFubm90YXRpb25zIG9yIGRlZmluaXRpb25zICovXG5sZXQgdHlwX2NvbnRleHRfZW50cmllcyA9IChjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5UVmFyRW50cnkoe2tpbmQ6IFNpbmdsZXRvbihfKSwgbmFtZSwgX30pID0+XG4gICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogVHlwKEZyb21DdHgpfSlcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBzdWdnZXN0X3ZhcmlhYmxlID0gKGNpOiBJbmZvLnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICBsZXQgY3R4ID0gSW5mby5jdHhfb2YoY2kpO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgSW5mb0V4cCh7bW9kZSwgX30pID0+XG4gICAgYm91bmRfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2FwcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9jb25zdHJ1Y3RvcnMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gRXhwKENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgfCBJbmZvUGF0KHttb2RlLCBjb19jdHgsIF99KSA9PlxuICAgIGZyZWVfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eCwgY29fY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IFBhdChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gIHwgSW5mb1R5cChfKSA9PiB0eXBfY29udGV4dF9lbnRyaWVzKGN0eClcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG4vKiBTdWdnZXN0IGxvb2thaGVhZCB0b2tlbnM6XG4gKlxuICogU29tZXRpbWVzIHRoZSBleHBlY3RlZCB0eXBlIGlzIFR5LCBidXQgd2Ugd2FudCB0byBlbnRlciBzb21ldGhpbmcgb2YgVHknXG4gKiBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBpdCB1cCB3aXRoIGFuIGluZml4IG9wIG9mIHR5cGUgKFR5JywgXykgLT4gVHkuXG4gKlxuICogRm9yIG5vdyB3ZSBzcGVjaWFsLWNhc2Ugc3VjaCBzaXR1YXRpb25zIGluc3RlYWQgb2YgZGVyaXZpbmcgdGhlbSBmcm9tIHRoZVxuICogZ3JhbW1hci4gSW4gdGhlIGN1cnJlbnQgZ3JhbW1hciB0aGVyZSBhcmUgYmFzaWNhbGx5IDMgY2xhc3NlczpcbiAqXG4gKiAxLiBJZiBib29sIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSBpbnQsIGZsb2F0IG9yIHN0cmluZyAoY29tcGFyaXNvbnMpXG4gKiAyLiBJZiBsaXN0KHR5KSBpcyBleHBlY3RlZCwgY291bGQgYmUgdHkgKGNvbnMpXG4gKiAzLiBJZiB0dXBsZShbdHksIC4uLl0pIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSB0eSAoY29tbWEpXG5cbiAqIDIgYW5kIDMgYXJlIHRoZSBlYXNpZXN0IHRvIG1ha2UgZXJnb25vbWljIGFzIHRoZXJlIGlzIG9ubHkgb25lIHN1Y2hcbiAqIGluZml4IG9wLCBzbyB3ZSBjYW4ganVzdCBjb21iaW5lIHRoZSB0d28gdG9rZW5zIGludG8gYSBzaW5nbGUgY29tcGxldGlvbi5cbiAqIDEgaXMgc2xpZ2h0bHkgbW9yZSBmcmF1Z2h0IGJlY2F1c2UgYXMgd2UgZWl0aGVyIG5lZWQgdG8gbm90IHNob3cgdGhlXG4gKiBzZWNvbmQgdG9rZW4sIG9yIHBpY2sgYW4gYXJiaXRyYXJ5IHJlcHJlc2VudGF0aXZlIG9wIHRvIHNob3csIGFuZCB3ZVxuICogcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBjb21wbGV0ZSB0aGF0IG9wLCBmb3JjaW5nIHRoZSB1c2VyIHRvIGJhY2tzcGFjZVxuICogaWYgdGhleSBtZWFudCBhbm90aGVyLCBzbyB3ZSdkIG5lZWQgdG8gaW1wbGVtZW50IHN0YWdlZCBjb21wbGV0aW9uLlxuICogRm9yIG5vdyB3ZSBqdXN0IGRvbid0IHNob3cgYSBzZWNvbmQgdG9rZW4sIHdoaWNoIGNhbiBiZSBzbGlnaHRseSBjb25mdXNpbmcuXG4gKlxuICovXG5cbmxldCBzdWdnZXN0X2xvb2thaGVhZF92YXJpYWJsZSA9IChjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHJlc3RyYXRlZ2l6ZSA9IChzdWZmaXgsIHtjb250ZW50LCBzdHJhdGVneX0pID0+IHtcbiAgICBjb250ZW50OiBjb250ZW50ICsrIHN1ZmZpeCxcbiAgICBzdHJhdGVneSxcbiAgfTtcbiAgbGV0IGN0eCA9IEluZm8uY3R4X29mKGNpKTtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIF99KSA9PlxuICAgIGxldCBleHBfcmVmcyA9IHR5ID0+XG4gICAgICBib3VuZF92YXJpYWJsZXModHksIGN0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gRXhwKENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBleHBfYXBzID0gdHkgPT5cbiAgICAgIGJvdW5kX2Fwcyh0eSwgY3R4KVxuICAgICAgQCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgdHksIGN0eCk7XG4gICAgc3dpdGNoIChNb2RlLnR5X29mKG1vZGUpIHw+IFR5cC50ZXJtX29mKSB7XG4gICAgfCBMaXN0KHR5KSA9PlxuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiICk6OlwiKSwgZXhwX2Fwcyh0eSkpXG4gICAgICBAIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIjo6XCIpLCBleHBfcmVmcyh0eSkpXG4gICAgfCBQcm9kKFt0eSwgLi4udHlzXSkgPT5cbiAgICAgIGxldCBjb21tYXMgPVxuICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzKSwgXyA9PiBcIixcIikgfD4gU3RyaW5nLmNvbmNhdChcIiBcIik7XG4gICAgICBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCIgKVwiICsrIGNvbW1hcyksIGV4cF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoY29tbWFzKSwgZXhwX3JlZnModHkpKTtcbiAgICB8IEJvb2wgPT5cbiAgICAgIC8qIFRPRE86IEZpbmQgYSBVSSB0byBtYWtlIHRoZXNlIGxlc3MgY29uZnVzaW5nICovXG4gICAgICBleHBfcmVmcyhJbnQgfD4gVHlwLmZyZXNoKVxuICAgICAgQCBleHBfcmVmcyhGbG9hdCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9yZWZzKFN0cmluZyB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoSW50IHw+IFR5cC5mcmVzaClcbiAgICAgIEAgZXhwX2FwcyhGbG9hdCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoU3RyaW5nIHw+IFR5cC5mcmVzaClcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuICB8IEluZm9QYXQoe21vZGUsIGNvX2N0eCwgX30pID0+XG4gICAgbGV0IHBhdF9yZWZzID0gdHkgPT5cbiAgICAgIGZyZWVfdmFyaWFibGVzKHR5LCBjdHgsIGNvX2N0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBwYXRfYXBzID0gdHkgPT4gYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIHN3aXRjaCAoTW9kZS50eV9vZihtb2RlKSB8PiBUeXAudGVybV9vZikge1xuICAgIHwgTGlzdCh0eSkgPT5cbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApOjpcIiksIHBhdF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCI6OlwiKSwgcGF0X3JlZnModHkpKVxuICAgIHwgUHJvZChbdHksIC4uLnR5c10pID0+XG4gICAgICBsZXQgY29tbWFzID1cbiAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIF8gPT4gXCIsXCIpIHw+IFN0cmluZy5jb25jYXQoXCIgXCIpO1xuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiIClcIiArKyBjb21tYXMpLCBwYXRfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKGNvbW1hcyksIHBhdF9yZWZzKHR5KSk7XG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgfCBJbmZvVHlwKF8pID0+IFtdXG4gIHwgXyA9PiBbXVxuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIFRoaXMgbW9kdWxlIGdlbmVyYXRlcyBUeURpIHN1Z2dlc3Rpb25zIHdoaWNoIGRlcGVuZFxuICogbmVpdGhlciBvbiB0aGUgdHlwaW5nIGNvbnRleHQgb3IgdGhlIGJhY2twYWNrICovXG5cbmxldCBsZWFkaW5nX2V4cGFuZGVyID0gXCIgXCIgKysgQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogU3BlY2lmaWVzIHR5cGUgaW5mb3JtYXRpb24gZm9yIHN5bnRhY3RpYyBmb3Jtcy4gQ291bGQgaW4gcHJpbmNpcGxlIGJlXG4gKiBkZXJpdmVkIGJ5IGdlbmVyYXRpbmcgc2VnbWVudHMgZnJvbSBGb3JtcywgcGFyc2luZyB0aGVtIHRvIHRlcm1zLCBhbmRcbiAqIHJ1bm5pbmcgU3RhdGljcywgYnV0IGZvciBub3csIG5ldyBmb3JtcyBlLmcuIG9wZXJhdG9ycyBtdXN0IGJlIGFkZGVkXG4gKiBiZWxvdyBtYW51YWxseS4gICovXG5tb2R1bGUgVHlwID0ge1xuICBsZXQgdW5rOiBUeXAudCA9IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5mcmVzaDtcblxuICBsZXQgb2ZfY29uc3RfbW9ub19kZWxpbTogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9IFtcbiAgICAoXCJ0cnVlXCIsIEJvb2wgfD4gVHlwLmZyZXNoKSxcbiAgICAoXCJmYWxzZVwiLCBCb29sIHw+IFR5cC5mcmVzaCksXG4gICAgLy8oXCJbXVwiLCBMaXN0KHVuaykpLCAvICpOT1RFOiB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yIGJ1ZmZlciBmb3IgdGhpcyB0byBzaG93IHVwICovXG4gICAgLy8oXCIoKVwiLCBQcm9kKFtdKSksIC8qIE5PVEU6IHdvdWxkIG5lZWQgdG8gcmVmYWN0b3IgYnVmZmVyIGZvciB0aGlzIHRvIHNob3cgdXAgKi9cbiAgICAoXCJcXFwiXFxcIlwiLCBTdHJpbmcgfD4gVHlwLmZyZXNoKSwgLyogTk9URTogSXJyZWxldmVudCBhcyBzZWNvbmQgcXVvdGUgYXBwZWFycyBhdXRvbWF0aWNhbGx5ICovXG4gICAgKFwiX1wiLCB1bmspLFxuICBdO1xuXG4gIGxldCBvZl9sZWFkaW5nX2RlbGltOiBsaXN0KChUb2tlbi50LCBUeXAudCkpID0gW1xuICAgIChcImNhc2VcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICAgIChcImZ1blwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIEFycm93KHVuaywgdW5rKSB8PiBUeXAuZnJlc2gpLFxuICAgIChcbiAgICAgIFwidHlwZnVuXCIgKysgbGVhZGluZ19leHBhbmRlcixcbiAgICAgIEZvcmFsbChWYXIoXCJcIikgfD4gVFBhdC5mcmVzaCwgdW5rKSB8PiBUeXAuZnJlc2gsXG4gICAgKSxcbiAgICAoXCJpZlwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwibGV0XCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgICAoXCJ0ZXN0XCIgKysgbGVhZGluZ19leHBhbmRlciwgUHJvZChbXSkgfD4gVHlwLmZyZXNoKSxcbiAgICAoXCJ0eXBlXCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgXTtcblxuICBsZXQgb2ZfaW5maXhfZGVsaW06IGxpc3QoKFRva2VuLnQsIFR5cC50ZXJtKSkgPSBbXG4gICAgKFwifD5cIiwgVW5rbm93bihJbnRlcm5hbCkpLCAvKiAqL1xuICAgIChcIixcIiwgUHJvZChbdW5rLCB1bmtdKSksIC8qIE5PVEU6IEN1cnJlbnQgYXBwcm9hY2ggZG9lc24ndCB3b3JrIGZvciB0aGlzLCBidXQgaXJyZWxldmFudCBhcyAxLWNoYXIgKi9cbiAgICAoXCI6OlwiLCBMaXN0KHVuaykpLFxuICAgIChcIkBcIiwgTGlzdCh1bmspKSxcbiAgICAoXCI7XCIsIFVua25vd24oSW50ZXJuYWwpKSxcbiAgICAoXCImJlwiLCBCb29sKSxcbiAgICAoXCJcXFxcL1wiLCBCb29sKSxcbiAgICAoXCJ8fFwiLCBCb29sKSxcbiAgICAoXCIkPT1cIiwgQm9vbCksXG4gICAgKFwiPT0uXCIsIEJvb2wpLFxuICAgIChcIj09XCIsIEJvb2wpLFxuICAgIChcIiFcIiwgQm9vbCksIC8vIG1heWJlIGRvZXNudCBiZWxvbmcgaGVyZT8gYnV0IGJsb2NrcyBhdXRvY29tcGxldGUgb2YgISB0byAhPVxuICAgIChcIiE9XCIsIEJvb2wpLFxuICAgIChcIiE9LlwiLCBCb29sKSxcbiAgICAoXCI8XCIsIEJvb2wpLFxuICAgIChcIj5cIiwgQm9vbCksXG4gICAgKFwiPD1cIiwgQm9vbCksXG4gICAgKFwiPj1cIiwgQm9vbCksXG4gICAgKFwiPC5cIiwgQm9vbCksXG4gICAgKFwiPi5cIiwgQm9vbCksXG4gICAgKFwiPD0uXCIsIEJvb2wpLFxuICAgIChcIj49LlwiLCBCb29sKSxcbiAgICAoXCIrXCIsIEludCksXG4gICAgKFwiLVwiLCBJbnQpLFxuICAgIChcIipcIiwgSW50KSxcbiAgICAoXCIvXCIsIEludCksXG4gICAgKFwiKipcIiwgSW50KSxcbiAgICAoXCIrLlwiLCBGbG9hdCksXG4gICAgKFwiLS5cIiwgRmxvYXQpLFxuICAgIChcIiouXCIsIEZsb2F0KSxcbiAgICAoXCIvLlwiLCBGbG9hdCksXG4gICAgKFwiKiouXCIsIEZsb2F0KSxcbiAgICAoXCIrK1wiLCBTdHJpbmcpLFxuICBdO1xuXG4gIGxldCBleHBlY3RlZDogSW5mby50ID0+IFR5cC50ID1cbiAgICBmdW5cbiAgICB8IEluZm9FeHAoe21vZGUsIF99KVxuICAgIHwgSW5mb1BhdCh7bW9kZSwgX30pID0+IE1vZGUudHlfb2YobW9kZSlcbiAgICB8IF8gPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoO1xuXG4gIGxldCBmaWx0ZXJfYnkgPVxuICAgICAgKFxuICAgICAgICBjdHg6IEN0eC50LFxuICAgICAgICBleHBlY3RlZF90eTogVHlwLnQsXG4gICAgICAgIHNlbGZfdHlzOiBsaXN0KChUb2tlbi50LCBUeXAudCkpLFxuICAgICAgICBkZWxpbXM6IGxpc3Qoc3RyaW5nKSxcbiAgICAgIClcbiAgICAgIDogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9PlxuICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgIGRlbGltID0+IHtcbiAgICAgICAgbGV0KiBzZWxmX3R5ID0gTGlzdC5hc3NvY19vcHQoZGVsaW0sIHNlbGZfdHlzKTtcbiAgICAgICAgVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCBleHBlY3RlZF90eSwgc2VsZl90eSlcbiAgICAgICAgICA/IFNvbWUoKGRlbGltLCBzZWxmX3R5KSkgOiBOb25lO1xuICAgICAgfSxcbiAgICAgIGRlbGltcyxcbiAgICApO1xufTtcblxuLyogQXV0b21hdGljYWxseSBjb2xsYXRlcyBtb3N0IGRlbGltaXRlcnMgZnJvbSBGb3Jtcywgbm90YWJseSBhbGxcbiAqIG1vbm8gZGVsaW1pdGVycywgYWxsIGluZml4IG9wZXJhdG9ycywgYW5kIGFsbCBsZWFkaW5nIGRlbGltaXRlcnMgKi9cbm1vZHVsZSBEZWxpbXMgPSB7XG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgbGV0IChsYmwsIF8pID0gTW9sZHMuZGVsYXllZF9leHBhbnNpb24odG9rZW4pO1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIExpc3QubGVuZ3RoKGxibCkgPiAxICYmIHRva2VuID09IExpc3QuaGQobGJsKSAmJiBtLm91dCA9PSBzb3J0XG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4gKysgbGVhZGluZ19leHBhbmRlcikgOiBOb25lLFxuICAgICAgICAgICBNb2xkcy5nZXQobGJsKSxcbiAgICAgICAgICk7XG4gICAgICAgfSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxuICBsZXQgZGVsYXRlZF9sZWFkaW5nX2V4cCA9IGRlbGF5ZWRfbGVhZGluZyhFeHApO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3BhdCA9IGRlbGF5ZWRfbGVhZGluZyhQYXQpO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3R5cCA9IGRlbGF5ZWRfbGVhZGluZyhUeXApO1xuXG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gZGVsYXRlZF9sZWFkaW5nX2V4cFxuICAgIHwgUGF0ID0+IGRlbGF0ZWRfbGVhZGluZ19wYXRcbiAgICB8IFR5cCA9PiBkZWxhdGVkX2xlYWRpbmdfdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcblxuICBsZXQgaW5maXggPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTW9sZC5pc19pbmZpeF9vcChtKSA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG4gIGxldCBpbmZpeF9leHAgPSBpbmZpeChFeHApO1xuICBsZXQgaW5maXhfcGF0ID0gaW5maXgoUGF0KTtcbiAgbGV0IGluZml4X3R5cCA9IGluZml4KFR5cCk7XG4gIGxldCBpbmZpeCA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBpbmZpeF9leHBcbiAgICB8IFBhdCA9PiBpbmZpeF9wYXRcbiAgICB8IFR5cCA9PiBpbmZpeF90eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuXG4gIGxldCBjb25zdF9tb25vID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmNvbnN0X21vbm9fZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTGlzdC5tZW0odG9rZW4sIEZvcm0uY29uc3RfbW9ub19kZWxpbXMpXG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbiAgbGV0IGNvbnN0X21vbm9fZXhwID0gY29uc3RfbW9ubyhFeHApO1xuICBsZXQgY29uc3RfbW9ub19wYXQgPSBjb25zdF9tb25vKFBhdCk7XG4gIGxldCBjb25zdF9tb25vX3R5cCA9IGNvbnN0X21vbm8oVHlwKTtcblxuICBsZXQgY29uc3RfbW9ubyA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBjb25zdF9tb25vX2V4cFxuICAgIHwgUGF0ID0+IGNvbnN0X21vbm9fcGF0XG4gICAgfCBUeXAgPT4gY29uc3RfbW9ub190eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xufTtcblxubGV0IHN1Z2dlc3RfZm9ybSA9ICh0eV9tYXAsIGRlbGltc19vZl9zb3J0LCBjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHNvcnQgPSBJbmZvLnNvcnRfb2YoY2kpO1xuICBsZXQgZGVsaW1zID0gZGVsaW1zX29mX3NvcnQoc29ydCk7XG4gIGxldCBmaWx0ZXJlZCA9XG4gICAgVHlwLmZpbHRlcl9ieShJbmZvLmN0eF9vZihjaSksIFR5cC5leHBlY3RlZChjaSksIHR5X21hcCwgZGVsaW1zKTtcbiAgc3dpdGNoIChzb3J0KSB7XG4gIHwgRXhwID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IEV4cChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgUGF0ID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFBhdChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgXyA9PlxuICAgIGRlbGltc1xuICAgIHw+IExpc3QubWFwKGNvbnRlbnQgPT4gU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFR5cChOZXdGb3JtKX0pXG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdF9vcGVyYXRvcjogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShcbiAgICBMaXN0Lm1hcCgoKGEsIGIpKSA9PiAoYSwgSWRUYWdnZWQuZnJlc2goYikpLCBUeXAub2ZfaW5maXhfZGVsaW0pLFxuICAgIERlbGltcy5pbmZpeCxcbiAgKTtcblxubGV0IHN1Z2dlc3Rfb3BlcmFuZDogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShUeXAub2ZfY29uc3RfbW9ub19kZWxpbSwgRGVsaW1zLmNvbnN0X21vbm8pO1xuXG5sZXQgc3VnZ2VzdF9sZWFkaW5nOiBJbmZvLnQgPT4gbGlzdChTdWdnZXN0aW9uLnQpID1cbiAgc3VnZ2VzdF9mb3JtKFR5cC5vZl9sZWFkaW5nX2RlbGltLCBEZWxpbXMuZGVsYXllZF9sZWFkaW5nKTtcbiIsIltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgaG9sZV9zb3J0ID1cbiAgfCBFeHByZXNzaW9uSG9sZVxuICB8IFBhdHRlcm5Ib2xlO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBJZC5NYXAudCgoaG9sZV9zb3J0LCBUeXAudCwgVmFyQ3R4LnQpKTtcbmxldCBlbXB0eTogdCA9IChJZC5NYXAuZW1wdHk6IHQpO1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChBbnkudCk7XG5cbmxldCBhZGRfYWxsID0gKGlkczogbGlzdChJZC50KSwgdG06IEFueS50LCBtYXA6IHQpID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobWFwLCBpZCkgPT4gYWRkKGlkLCB0bSwgbWFwKSwgbWFwKTtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGlsZS50KTtcblxuLy8gdGFpbC1yZWN1cnNpdmVcbmxldCByZWMgbWsgPSAofm1hcD1lbXB0eSwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIFNlZ21lbnQudGlsZXMoc2VnKVxuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAobWFwLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KChtYXAsIGtpZCkgPT4gbWsofm1hcCwga2lkKSwgYWRkKHQuaWQsIHQsIG1hcCkpXG4gICAgICAgfSxcbiAgICAgICBtYXAsXG4gICAgICk7XG4iLCIvKiBNQUtFVEVSTVxuXG4gICAgIFRoaXMgcGFyc2VzIHRpbGUgc3RydWN0dXJlIGludG8gdGVybSBzdHJ1Y3R1cmUuXG4gICAgIFRoZSBsYW5ndWFnZSBzeW50YXgsIGFzIGRldGVybWluZWQgYnkgRm9ybS5yZSwgaXMgYW5cbiAgICAgb3BlbiwgZGF0YS1kcml2ZW4gc3lzdGVtLCBzbyBhZGRpbmcgYSBzeW50YWN0aWMgZm9ybVxuICAgICB0aGVyZSB3aWxsIG5vdCB0cmlnZ2VyIGEgc3RhdGljIGVycm9yIGhlcmU7IHlvdSBtdXN0XG4gICAgIHJlbWVtYmVyIHRvIGFkZCBhIGNhc2UgYmVsb3cgZm9yIGVhY2ggbmV3IGZvcm0gYWRkZWRcbiAgICAgdG8gdGhlIHN5bnRheC5cblxuICAgICBXQVJOSU5HOiBUaGlzIG1vZHVsZSBpcyBzdGlsbCBzdHJ1Y3R1cmFsbHkgaW4gZmx1eC5cbiAgICovXG5cbm9wZW4gVXRpbDtcbm9wZW4gQW55O1xuXG4vLyBUT0RPIG1ha2UgbGVzcyBoYWNreVxubGV0IHRva2VucyA9XG4gIFBpZWNlLmdldChcbiAgICBfID0+IFtdLFxuICAgIF8gPT4gW1wiIFwiXSxcbiAgICAodDogVGlsZS50KSA9PiB0LnNoYXJkcyB8PiBMaXN0Lm1hcChMaXN0Lm50aCh0LmxhYmVsKSksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGlsZSA9IChJZC50LCBBYmEudChUb2tlbi50LCB0KSk7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpbGVzID0gQWJhLnQodGlsZSwgdCk7XG5sZXQgc2luZ2xlID0gKGlkLCBzdWJzdCkgPT4gKFsoaWQsIHN1YnN0KV0sIFtdKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB1bnNvcnRlZCA9XG4gIHwgT3AodGlsZXMpXG4gIHwgUHJlKHRpbGVzLCB0KVxuICB8IFBvc3QodCwgdGlsZXMpXG4gIHwgQmluKHQsIHRpbGVzLCB0KTtcblxubGV0IGlzX25hcnkgPVxuICAgIChpc19zb3J0OiBBbnkudCA9PiBvcHRpb24oJ3NvcnQpLCBkZWxpbTogVG9rZW4udCwgKGRlbGltcywga2lkcyk6IHRpbGVzKVxuICAgIDogb3B0aW9uKGxpc3QoJ3NvcnQpKSA9PlxuICBpZiAoZGVsaW1zIHw+IExpc3QubWFwKHNuZCkgfD4gTGlzdC5mb3JfYWxsKCg9PSkoKFtkZWxpbV0sIFtdKSkpKSB7XG4gICAga2lkcyB8PiBMaXN0Lm1hcChpc19zb3J0KSB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBpc190dXBsZV9leHAgPSBpc19uYXJ5KEFueS5pc19leHAsIFwiLFwiKTtcbmxldCBpc190dXBsZV9wYXQgPSBpc19uYXJ5KEFueS5pc19wYXQsIFwiLFwiKTtcbmxldCBpc190dXBsZV90eXAgPSBpc19uYXJ5KEFueS5pc190eXAsIFwiLFwiKTtcbmxldCBpc190eXBfYnN1bSA9IGlzX25hcnkoQW55LmlzX3R5cCwgXCIrXCIpO1xuXG5sZXQgaXNfZ3JvdXQgPSB0aWxlcyA9PlxuICBBYmEuZ2V0X2FzKHRpbGVzKSB8PiBMaXN0Lm1hcChzbmQpIHw+IExpc3QuZm9yX2FsbCgoPT0pKChbXCIgXCJdLCBbXSkpKTtcblxubGV0IGlzX3J1bGVzID0gKCh0cywga2lkcyk6IHRpbGVzKTogb3B0aW9uKEFiYS50KFVQYXQudCwgVUV4cC50KSkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHBzID1cbiAgICB0c1xuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChfLCAoW1wifFwiLCBcIj0+XCJdLCBbQW55LlBhdChwKV0pKSA9PiBTb21lKHApXG4gICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gT3B0VXRpbC5zZXF1ZW5jZVxuICBhbmQrIGNsYXVzZXMgPVxuICAgIGtpZHNcbiAgICB8PiBMaXN0Lm1hcChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBFeHAoY2xhdXNlKSA9PiBTb21lKGNsYXVzZSlcbiAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgIClcbiAgICB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICBBYmEubWsocHMsIGNsYXVzZXMpO1xufTtcblxubGV0IGlkc19vZl90aWxlcyA9ICh0aWxlczogdGlsZXMpID0+IExpc3QubWFwKGZzdCwgQWJhLmdldF9hcyh0aWxlcykpO1xubGV0IGlkcyA9XG4gIGZ1blxuICB8IE9wKHRpbGVzKVxuICB8IFByZSh0aWxlcywgXylcbiAgfCBQb3N0KF8sIHRpbGVzKVxuICB8IEJpbihfLCB0aWxlcywgXykgPT4gaWRzX29mX3RpbGVzKHRpbGVzKTtcblxubGV0IGtpZHNfb2ZfdGlsZSA9ICgoX2lkLCAoX3Rva2Vucywga2lkcykpOiB0aWxlKSA9PiBraWRzO1xubGV0IGtpZHNfb2ZfdGlsZXMgPSAodGlsZXM6IHRpbGVzKSA9PlxuICB0aWxlc1xuICB8PiBBYmEubWFwX2Eoa2lkc19vZl90aWxlKVxuICB8PiBBYmEuam9pbihGdW4uaWQsIGtpZCA9PiBba2lkXSlcbiAgfD4gTGlzdC5jb25jYXQ7XG5sZXQga2lkc19vZl91bnNvcnRlZCA9XG4gIGZ1blxuICB8IE9wKHRpbGVzKSA9PiBraWRzX29mX3RpbGVzKHRpbGVzKVxuICB8IFByZSh0aWxlcywgcikgPT4ga2lkc19vZl90aWxlcyh0aWxlcykgQCBbcl1cbiAgfCBQb3N0KGwsIHRpbGVzKSA9PiBbbF0gQCBraWRzX29mX3RpbGVzKHRpbGVzKVxuICB8IEJpbihsLCB0aWxlcywgcikgPT4gW2xdIEAga2lkc19vZl90aWxlcyh0aWxlcykgQCBbcl07XG5cbi8vIE5lZWQgdGhpcyBtYXAgdG8gY29sbGVjdCBhbGwgc3RydWN0dXJhbCB0ZXJtcyxcbi8vIG5vdCBqdXN0IHRoZSBvbmVzIHJlY29nbml6ZWQgaW4gU3RhdGljcy5cbi8vIFRPRE8gdW5oYWNrXG5sZXQgbWFwOiByZWYoVGVybU1hcC50KSA9IHJlZihJZC5NYXAuZW1wdHkpO1xubGV0IHJldHVybiA9ICh3cmFwLCBpZHMsIHRtKSA9PiB7XG4gIG1hcCA6PSBUZXJtTWFwLmFkZF9hbGwoaWRzLCB3cmFwKHRtKSwgbWFwXik7XG4gIHRtO1xufTtcblxubGV0IHBhcnNlX3N1bV90ZXJtOiBVVHlwLnQgPT4gQ29uc3RydWN0b3JNYXAudmFyaWFudChVVHlwLnQpID1cbiAgZnVuXG4gIHwge3Rlcm06IFZhcihjdHIpLCBpZHMsIF99ID0+IFZhcmlhbnQoY3RyLCBpZHMsIE5vbmUpXG4gIHwge3Rlcm06IEFwKHt0ZXJtOiBWYXIoY3RyKSwgaWRzOiBpZHNfY3RyLCBffSwgdSksIGlkczogaWRzX2FwLCBffSA9PlxuICAgIFZhcmlhbnQoY3RyLCBpZHNfY3RyIEAgaWRzX2FwLCBTb21lKHUpKVxuICB8IHQgPT4gQmFkRW50cnkodCk7XG5cbmxldCByZWMgZ29fcyA9IChzOiBTb3J0LnQsIHNrZWw6IFNrZWwudCwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIHN3aXRjaCAocykge1xuICB8IFBhdCA9PiBQYXQocGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFRQYXQgPT4gVFBhdCh0cGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFR5cCA9PiBUeXAodHlwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IEV4cCA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFJ1bCA9PiBSdWwocnVsKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IE51bCA9PiBOdWwoKSAvL1RPRE9cbiAgfCBBbnkgPT5cbiAgICBsZXQgdG0gPSB1bnNvcnRlZChza2VsLCBzZWcpO1xuICAgIGxldCBpZHMgPSBpZHModG0pO1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuaGRfb3B0KGlkcykpIHtcbiAgICB8IE5vbmUgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFRpbGVNYXAuZmluZF9vcHQoaWQsIFRpbGVNYXAubWsoc2VnKSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIGlmICh0Lm1vbGQub3V0ID09IEFueSkge1xuICAgICAgICAgIEV4cChleHAodW5zb3J0ZWQoc2tlbCwgc2VnKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdvX3ModC5tb2xkLm91dCwgc2tlbCwgc2VnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuYW5kIGV4cCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gZXhwX3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKGUgPT4gRXhwKGUpLCBpZHMsIHtpZHMsIGNvcGllZDogZmFsc2UsIHRlcm19KTtcbn1cbmFuZCBleHBfdGVybTogdW5zb3J0ZWQgPT4gKFVFeHAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodG06IFVFeHAudGVybSkgPT4gKHRtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVUV4cC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIC8vIHNpbmdsZS10aWxlIGNhc2VcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IHJldChUdXBsZShbXSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfd2lsZCh0KSA9PiByZXQoRGVmZXJyYWwoT3V0c2lkZUFwKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV9saXN0KHQpID0+IHJldChMaXN0TGl0KFtdKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19ib29sKHQpID0+IHJldChCb29sKGJvb2xfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19pbnQodCkgPT4gcmV0KEludChpbnRfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgPT5cbiAgICAgICAgcmV0KFN0cmluZyhGb3JtLnN0cmlwX3F1b3Rlcyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZmxvYXQodCkgPT4gcmV0KEZsb2F0KGZsb2F0X29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdmFyKHQpID0+IHJldChWYXIodCkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfY3RyKHQpID0+IHJldChDb25zdHJ1Y3Rvcih0KSlcbiAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbRXhwKGJvZHkpXSkgPT4gcmV0KFBhcmVucyhib2R5KSlcbiAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbRXhwKGJvZHkpXSkgPT5cbiAgICAgICAgc3dpdGNoIChib2R5KSB7XG4gICAgICAgIHwge2lkcywgY29waWVkOiBmYWxzZSwgdGVybTogVHVwbGUoZXMpfSA9PiAoTGlzdExpdChlcyksIGlkcylcbiAgICAgICAgfCB0ZXJtID0+IHJldChMaXN0TGl0KFt0ZXJtXSkpXG4gICAgICAgIH1cbiAgICAgIHwgKFtcInRlc3RcIiwgXCJlbmRcIl0sIFtFeHAodGVzdCldKSA9PiByZXQoVGVzdCh0ZXN0KSlcbiAgICAgIHwgKFtcImNhc2VcIiwgXCJlbmRcIl0sIFtSdWwoe2lkcywgdGVybTogUnVsZXMoc2NydXQsIHJ1bGVzKSwgX30pXSkgPT4gKFxuICAgICAgICAgIE1hdGNoKHNjcnV0LCBydWxlcyksXG4gICAgICAgICAgaWRzLFxuICAgICAgICApXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICByZXQoSW52YWxpZCh0KSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKHRpbGVzLCBFeHAocikpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgfCAoW1wiJFwiXSwgW10pID0+IFVuT3AoTWV0YShVbnF1b3RlKSwgcilcbiAgICAgICAgfCAoW1wiLVwiXSwgW10pID0+IFVuT3AoSW50KE1pbnVzKSwgcilcbiAgICAgICAgfCAoW1wiIVwiXSwgW10pID0+IFVuT3AoQm9vbChOb3QpLCByKVxuICAgICAgICB8IChbXCJmdW5cIiwgXCItPlwiXSwgW1BhdChwYXQpXSkgPT4gRnVuKHBhdCwgciwgTm9uZSwgTm9uZSlcbiAgICAgICAgfCAoW1wiZml4XCIsIFwiLT5cIl0sIFtQYXQocGF0KV0pID0+IEZpeEYocGF0LCByLCBOb25lKVxuICAgICAgICB8IChbXCJ0eXBmdW5cIiwgXCItPlwiXSwgW1RQYXQodHBhdCldKSA9PiBUeXBGdW4odHBhdCwgciwgTm9uZSlcbiAgICAgICAgfCAoW1wibGV0XCIsIFwiPVwiLCBcImluXCJdLCBbUGF0KHBhdCksIEV4cChkZWYpXSkgPT4gTGV0KHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJoaWRlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoRXZhbCwgT25lKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1wiZXZhbFwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcihGaWx0ZXIoe2FjdDogKEV2YWwsIEFsbCksIHBhdDogZmlsdGVyfSksIHIpXG4gICAgICAgIHwgKFtcInBhdXNlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgT25lKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1wiZGVidWdcIiwgXCJpblwiXSwgW0V4cChmaWx0ZXIpXSkgPT5cbiAgICAgICAgICBGaWx0ZXIoRmlsdGVyKHthY3Q6IChTdGVwLCBBbGwpLCBwYXQ6IGZpbHRlcn0pLCByKVxuICAgICAgICB8IChbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBbVFBhdCh0cGF0KSwgVHlwKGRlZildKSA9PlxuICAgICAgICAgIFR5QWxpYXModHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJpZlwiLCBcInRoZW5cIiwgXCJlbHNlXCJdLCBbRXhwKGNvbmQpLCBFeHAoY29uc2VxKV0pID0+XG4gICAgICAgICAgSWYoY29uZCwgY29uc2VxLCByKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KEV4cChsKSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICB8IChbXCIoKVwiXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBBcChcbiAgICAgICAgICAgIEZvcndhcmQsXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAge2lkczogW0lkLm51bGxhcnlfYXBfZmxhZ10sIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKFtdKX0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtFeHAoYXJnKV0pID0+XG4gICAgICAgIGxldCB1c2VfZGVmZXJyYWwgPSAoYXJnOiBVRXhwLnQpOiBVRXhwLnQgPT4ge1xuICAgICAgICAgIGlkczogYXJnLmlkcyxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICAgIHRlcm06IERlZmVycmFsKEluQXApLFxuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKGFyZy50ZXJtKSB7XG4gICAgICAgIHwgXyB3aGVuIFVFeHAuaXNfZGVmZXJyYWwoYXJnKSA9PlxuICAgICAgICAgIHJldChEZWZlcnJlZEFwKGwsIFt1c2VfZGVmZXJyYWwoYXJnKV0pKVxuICAgICAgICB8IFR1cGxlKGVzKSB3aGVuIExpc3QuZXhpc3RzKFVFeHAuaXNfZGVmZXJyYWwsIGVzKSA9PiAoXG4gICAgICAgICAgICBEZWZlcnJlZEFwKFxuICAgICAgICAgICAgICBsLFxuICAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgICBhcmcgPT4gVUV4cC5pc19kZWZlcnJhbChhcmcpID8gdXNlX2RlZmVycmFsKGFyZykgOiBhcmcsXG4gICAgICAgICAgICAgICAgZXMsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYXJnLmlkcyxcbiAgICAgICAgICApXG4gICAgICAgIHwgXyA9PiByZXQoQXAoRm9yd2FyZCwgbCwgYXJnKSlcbiAgICAgICAgfTtcbiAgICAgIHwgKFtcIkA8XCIsIFwiPlwiXSwgW1R5cCh0eSldKSA9PiByZXQoVHlwQXAobCwgdHkpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oRXhwKGwpLCB0aWxlcywgRXhwKHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAoaXNfdHVwbGVfZXhwKHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+IHJldChUdXBsZShbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICB8IChbXCIrXCJdLCBbXSkgPT4gQmluT3AoSW50KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIipcIl0sIFtdKSA9PiBCaW5PcChJbnQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIioqXCJdLCBbXSkgPT4gQmluT3AoSW50KFBvd2VyKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIvXCJdLCBbXSkgPT4gQmluT3AoSW50KERpdmlkZSksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPFwiXSwgW10pID0+IEJpbk9wKEludChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPlwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PVwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09XCJdLCBbXSkgPT4gQmluT3AoSW50KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIrLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiouXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi8uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoRGl2aWRlKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqKi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChQb3dlciksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPC5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCImJlwiXSwgW10pID0+IEJpbk9wKEJvb2woQW5kKSwgbCwgcilcbiAgICAgICAgICB8IChbXCJ8fFwiXSwgW10pID0+IEJpbk9wKEJvb2woT3IpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjo6XCJdLCBbXSkgPT4gQ29ucyhsLCByKVxuICAgICAgICAgIHwgKFtcIjtcIl0sIFtdKSA9PiBTZXEobCwgcilcbiAgICAgICAgICB8IChbXCIrK1wiXSwgW10pID0+IEJpbk9wKFN0cmluZyhDb25jYXQpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiQ9PVwiXSwgW10pID0+IEJpbk9wKFN0cmluZyhFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcInw+XCJdLCBbXSkgPT4gQXAoUmV2ZXJzZSwgbCwgcilcbiAgICAgICAgICB8IChbXCJAXCJdLCBbXSkgPT4gTGlzdENvbmNhdChsLCByKVxuICAgICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5hbmQgcGF0ID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgKHRlcm0sIGlubmVyX2lkcykgPSBwYXRfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpIEAgaW5uZXJfaWRzO1xuICByZXR1cm4ocCA9PiBQYXQocCksIGlkcywge2lkcywgdGVybSwgY29waWVkOiBmYWxzZX0pO1xufVxuYW5kIHBhdF90ZXJtOiB1bnNvcnRlZCA9PiAoVVBhdC50ZXJtLCBsaXN0KElkLnQpKSA9IHtcbiAgbGV0IHJldCA9ICh0ZXJtOiBVUGF0LnRlcm0pID0+ICh0ZXJtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVVBhdC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0aWxlKV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHRpbGUpIHtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IFR1cGxlKFtdKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfbGlzdCh0KSA9PiBMaXN0TGl0KFtdKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfYm9vbCh0KSA9PiBCb29sKGJvb2xfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZmxvYXQodCkgPT4gRmxvYXQoZmxvYXRfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfaW50KHQpID0+IEludChpbnRfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpID0+XG4gICAgICAgICAgbGV0IHMgPSBSZS5TdHIuc3RyaW5nX2FmdGVyKHQsIDEpO1xuICAgICAgICAgIGxldCBzID0gUmUuU3RyLnN0cmluZ19iZWZvcmUocywgU3RyaW5nLmxlbmd0aChzKSAtIDEpO1xuICAgICAgICAgIFN0cmluZyhzKTtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3Zhcih0KSA9PiBWYXIodClcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3dpbGQodCkgPT4gV2lsZFxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfY3RyKHQpID0+IENvbnN0cnVjdG9yKHQpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gdCAhPSBcIiBcIiAmJiAhRm9ybS5pc19leHBsaWNpdF9ob2xlKHQpID0+XG4gICAgICAgICAgSW52YWxpZCh0KVxuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1BhdChib2R5KV0pID0+IFBhcmVucyhib2R5KVxuICAgICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW1BhdChib2R5KV0pID0+XG4gICAgICAgICAgc3dpdGNoIChib2R5KSB7XG4gICAgICAgICAgfCB7dGVybTogVHVwbGUocHMpLCBffSA9PiBMaXN0TGl0KHBzKVxuICAgICAgICAgIHwgdGVybSA9PiBMaXN0TGl0KFt0ZXJtXSlcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFBvc3QoUGF0KGwpLCB0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1BhdChhcmcpXSkgPT4gQXAobCwgYXJnKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUoXykgYXMgdG0gPT4gcmV0KGhvbGUodG0pKVxuICB8IEJpbihQYXQocCksIHRpbGVzLCBUeXAodHkpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgKFtcIjpcIl0sIFtdKSldLCBbXSkgPT5cbiAgICAgIHJldChDYXN0KHAsIHR5LCBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gpKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihQYXQobCksIHRpbGVzLCBQYXQocikpIGFzIHRtID0+XG4gICAgc3dpdGNoIChpc190dXBsZV9wYXQodGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT4gcmV0KFR1cGxlKFtsXSBAIGJldHdlZW5fa2lkcyBAIFtyXSkpXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgICB8IChbKF9pZCwgKFtcIjo6XCJdLCBbXSkpXSwgW10pID0+IHJldChDb25zKGwsIHIpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cbmFuZCB0eXAgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCAodGVybSwgaW5uZXJfaWRzKSA9IHR5cF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCkgQCBpbm5lcl9pZHM7XG4gIHJldHVybih0eSA9PiBUeXAodHkpLCBpZHMsIHtpZHMsIHRlcm0sIGNvcGllZDogZmFsc2V9KTtcbn1cbmFuZCB0eXBfdGVybTogdW5zb3J0ZWQgPT4gKFVUeXAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodGVybTogVVR5cC50ZXJtKSA9PiAodGVybSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFVUeXAuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiBQcm9kKFtdKVxuICAgICAgICB8IChbXCJCb29sXCJdLCBbXSkgPT4gQm9vbFxuICAgICAgICB8IChbXCJJbnRcIl0sIFtdKSA9PiBJbnRcbiAgICAgICAgfCAoW1wiRmxvYXRcIl0sIFtdKSA9PiBGbG9hdFxuICAgICAgICB8IChbXCJTdHJpbmdcIl0sIFtdKSA9PiBTdHJpbmdcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3R5cF92YXIodCkgPT4gVmFyKHQpXG4gICAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbVHlwKGJvZHkpXSkgPT4gUGFyZW5zKGJvZHkpXG4gICAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbVHlwKGJvZHkpXSkgPT4gTGlzdChib2R5KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIFVua25vd24oSG9sZShJbnZhbGlkKHQpKSlcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUG9zdChUeXAodCksIHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF8sIChbXCIoXCIsIFwiKVwiXSwgW1R5cCh0eXApXSkpXSwgW10pID0+IHJldChBcCh0LCB0eXApKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICAvKiBmb3JhbGwgYW5kIHJlYyBoYXZlIHRvIGJlIGJlZm9yZSBzdW0gc28gdGhhdCB0aGV5IGJpbmQgdGlnaHRlci5cbiAgICogVGh1cyBgcmVjIEEgLT4gTGVmdChBKSArIFJpZ2h0KEIpYCBnZXQgcGFyc2VkIGFzIGByZWMgQSAtPiAoTGVmdChBKSArIFJpZ2h0KEIpKWBcbiAgICogSWYgdGhpcyBpcyBiZWxvdyB0aGUgY2FzZSBmb3Igc3VtLCB0aGVuIGl0IGdldHMgcGFyc2VkIGFzIGFuIGludmFsaWQgZm9ybS4gKi9cbiAgfCBQcmUoKFsoX2lkLCAoW1wiZm9yYWxsXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkpXSwgW10pLCBUeXAodCkpID0+XG4gICAgcmV0KEZvcmFsbCh0cGF0LCB0KSlcbiAgfCBQcmUoKFsoX2lkLCAoW1wicmVjXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkpXSwgW10pLCBUeXAodCkpID0+XG4gICAgcmV0KFJlYyh0cGF0LCB0KSlcbiAgfCBQcmUodGlsZXMsIFR5cCh7dGVybTogU3VtKHQwKSwgaWRzLCBffSkpIGFzIHRtID0+XG4gICAgLyogQ2FzZSBmb3IgbGVhZGluZyBwcmVmaXggKyBwcmVjZWVkaW5nIGEgc3VtICovXG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIitcIl0sIFtdKSldLCBbXSkgPT4gKFN1bSh0MCksIGlkcylcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUodGlsZXMsIFR5cCh0KSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfLCAoW1wiK1wiXSwgW10pKV0sIFtdKSA9PiByZXQoU3VtKFtwYXJzZV9zdW1fdGVybSh0KV0pKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihUeXAodDEpLCB0aWxlcywgVHlwKHQyKSkgYXMgdG0gd2hlbiBpc190eXBfYnN1bSh0aWxlcykgIT0gTm9uZSA9PlxuICAgIHN3aXRjaCAoaXNfdHlwX2JzdW0odGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT5cbiAgICAgIHJldChTdW0oTGlzdC5tYXAocGFyc2Vfc3VtX3Rlcm0sIFt0MV0gQCBiZXR3ZWVuX2tpZHMgQCBbdDJdKSkpXG4gICAgfCBOb25lID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgQmluKFR5cChsKSwgdGlsZXMsIFR5cChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKGlzX3R1cGxlX3R5cCh0aWxlcykpIHtcbiAgICB8IFNvbWUoYmV0d2Vlbl9raWRzKSA9PiByZXQoUHJvZChbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIChbXCItPlwiXSwgW10pKV0sIFtdKSA9PiByZXQoQXJyb3cobCwgcikpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIH1cbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuYW5kIHRwYXQgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCB0ZXJtID0gdHBhdF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4gIHJldHVybih0eSA9PiBUUGF0KHR5KSwgaWRzLCB7aWRzLCB0ZXJtLCBjb3BpZWQ6IGZhbHNlfSk7XG59XG5hbmQgdHBhdF90ZXJtOiB1bnNvcnRlZCA9PiBUUGF0LnRlcm0gPSB7XG4gIGxldCByZXQgPSAodGVybTogVFBhdC50ZXJtKSA9PiB0ZXJtO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFRQYXQuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc190eXBfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIEludmFsaWQodClcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgKFByZShfKSB8IFBvc3QoXykpIGFzIHRtID0+IHJldChob2xlKHRtKSlcbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuXG4vLyBhbmQgcnVsID0gdW5zb3J0ZWQgPT4ge1xuLy8gICBsZXQgdGVybSA9IHJ1bF90ZXJtKHVuc29ydGVkKTtcbi8vICAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4vLyAgIHJldHVybihyID0+IFJ1bChyKSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG4vLyB9XG5hbmQgcnVsID0gKHVuc29ydGVkOiB1bnNvcnRlZCk6IFJ1bC50ID0+IHtcbiAgbGV0IGhvbGUgPSBSdWwuSG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIHN3aXRjaCAoZXhwKHVuc29ydGVkKSkge1xuICB8IHt0ZXJtOiBNdWx0aUhvbGUoXyksIF99ID0+XG4gICAgc3dpdGNoICh1bnNvcnRlZCkge1xuICAgIHwgQmluKEV4cChzY3J1dCksIHRpbGVzLCBFeHAobGFzdF9jbGF1c2UpKSA9PlxuICAgICAgc3dpdGNoIChpc19ydWxlcyh0aWxlcykpIHtcbiAgICAgIHwgU29tZSgocHMsIGxlYWRpbmdfY2xhdXNlcykpID0+IHtcbiAgICAgICAgICBpZHM6IGlkcyh1bnNvcnRlZCksXG4gICAgICAgICAgdGVybTpcbiAgICAgICAgICAgIFJ1bGVzKHNjcnV0LCBMaXN0LmNvbWJpbmUocHMsIGxlYWRpbmdfY2xhdXNlcyBAIFtsYXN0X2NsYXVzZV0pKSxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZSwgY29waWVkOiBmYWxzZX1cbiAgICAgIH1cbiAgICB8IF8gPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZSwgY29waWVkOiBmYWxzZX1cbiAgICB9XG4gIHwgZSA9PiB7aWRzOiBbXSwgdGVybTogUnVsZXMoZSwgW10pLCBjb3BpZWQ6IGZhbHNlfVxuICB9O1xufVxuXG5hbmQgdW5zb3J0ZWQgPSAoc2tlbDogU2tlbC50LCBzZWc6IFNlZ21lbnQudCk6IHVuc29ydGVkID0+IHtcbiAgbGV0IHRpbGVfa2lkcyA9IChwOiBQaWVjZS50KTogbGlzdCh0KSA9PlxuICAgIHN3aXRjaCAocCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbXVxuICAgIHwgVGlsZSh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX30pID0+XG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pKVxuICAgICAgfD4gTGlzdC5tYXAoKChsLCBraWQsIHIpKSA9PiB7XG4gICAgICAgICAgIGxldCBzID0gbCArIDEgPT0gciA/IExpc3QubnRoKG1vbGQuaW5fLCBsKSA6IFNvcnQuQW55O1xuICAgICAgICAgICBnb19zKHMsIFNlZ21lbnQuc2tlbChraWQpLCBraWQpO1xuICAgICAgICAgfSlcbiAgICB9O1xuXG4gIGxldCByb290OiBBYmEudChQaWVjZS50LCBTa2VsLnQpID1cbiAgICBTa2VsLnJvb3Qoc2tlbCkgfD4gQWJhLm1hcF9hKExpc3QubnRoKHNlZykpO1xuXG4gIC8vIG1haW50YWluaW5nIHRoaXMgYWx0ZXJuYXRpbmcgb3JkZXJlZCBzdHJ1Y3R1cmVcbiAgLy8gZm9yIGhhbmRsaW5nIGluY29tcGxldGUgZm9ybXMgbGF0ZXJcbiAgbGV0IHRpbGVzID1cbiAgICByb290XG4gICAgfD4gQWJhLm1hcF9hYmFzKCgocF9sLCBraWQsIHBfcikpID0+IHtcbiAgICAgICAgIGxldCAoXywgc19sKSA9IFBpZWNlLm5pYl9zb3J0cyhwX2wpO1xuICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHBfcik7XG4gICAgICAgICBsZXQgcyA9IHNfbCA9PSBzX3IgPyBzX2wgOiBTb3J0LkFueTtcbiAgICAgICAgIGdvX3Mocywga2lkLCBzZWcpO1xuICAgICAgIH0pXG4gICAgfD4gQWJhLm1hcF9hKHBcbiAgICAgICAgIC8vIFRPRE8gdGhyb3cgcHJvcGVyIGV4Y2VwdGlvblxuICAgICAgICAgPT4gKFBpZWNlLmlkKHApLCBBYmEubWsodG9rZW5zKHApLCB0aWxlX2tpZHMocCkpKSk7XG5cbiAgbGV0IChsX3NvcnQsIHJfc29ydCkgPSB7XG4gICAgbGV0IHBfbCA9IEFiYS5maXJzdF9hKHJvb3QpO1xuICAgIGxldCBwX3IgPSBBYmEubGFzdF9hKHJvb3QpO1xuICAgIC8vIFRPRE8gdGhyb3cgcHJvcGVyIGV4Y2VwdGlvbnNcbiAgICBsZXQgKGwsIF8pID0gT3B0aW9uLmdldChQaWVjZS5uaWJzKHBfbCkpO1xuICAgIGxldCAoXywgcikgPSBPcHRpb24uZ2V0KFBpZWNlLm5pYnMocF9yKSk7XG4gICAgKGwuc29ydCwgci5zb3J0KTtcbiAgfTtcblxuICBzd2l0Y2ggKHNrZWwpIHtcbiAgfCBPcChfKSA9PiBPcCh0aWxlcylcbiAgfCBQcmUoXywgcikgPT4gUHJlKHRpbGVzLCBnb19zKHJfc29ydCwgciwgc2VnKSlcbiAgfCBQb3N0KGwsIF8pID0+IFBvc3QoZ29fcyhsX3NvcnQsIGwsIHNlZyksIHRpbGVzKVxuICB8IEJpbihsLCBfLCByKSA9PiBCaW4oZ29fcyhsX3NvcnQsIGwsIHNlZyksIHRpbGVzLCBnb19zKHJfc29ydCwgciwgc2VnKSlcbiAgfTtcbn07XG5cbmxldCBnbyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsXG4gICAgc2VnID0+IHtcbiAgICAgIG1hcCA6PSBUZXJtTWFwLmVtcHR5O1xuICAgICAgbGV0IGUgPSBleHAodW5zb3J0ZWQoU2VnbWVudC5za2VsKHNlZyksIHNlZykpO1xuICAgICAgKGUsIG1hcF4pO1xuICAgIH0sXG4gICk7XG5cbmxldCBmcm9tX3ppcCA9ICh+ZHVtcF9iYWNrcGFjazogYm9vbCwgfmVyYXNlX2J1ZmZlcjogYm9vbCwgejogWmlwcGVyLnQpID0+IHtcbiAgbGV0IHNlZyA9IFppcHBlci5zbWFydF9zZWcofmR1bXBfYmFja3BhY2ssIH5lcmFzZV9idWZmZXIsIHopO1xuICBnbyhzZWcpO1xufTtcblxubGV0IGZyb21femlwX2Zvcl92aWV3ID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMCxcbiAgICBmcm9tX3ppcCh+ZHVtcF9iYWNrcGFjaz1mYWxzZSwgfmVyYXNlX2J1ZmZlcj10cnVlKSxcbiAgKTtcblxubGV0IGZyb21femlwX2Zvcl9zZW0gPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLFxuICAgIGZyb21femlwKH5kdW1wX2JhY2twYWNrPXRydWUsIH5lcmFzZV9idWZmZXI9dHJ1ZSksXG4gICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgTWV0YSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIGNvbF90YXJnZXQ6IGludCxcbiAgICB0b3VjaGVkOiBUb3VjaGVkLnQsXG4gICAgbWVhc3VyZWQ6IE1lYXN1cmVkLnQsXG4gICAgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCxcbiAgICB1bnNlbGVjdGVkOiBTZWdtZW50LnQsXG4gICAgc2VnbWVudDogU2VnbWVudC50LFxuICAgIHZpZXdfdGVybTogVUV4cC50LFxuICAgIHRlcm1zOiBUZXJtTWFwLnQsXG4gICAgdGlsZXM6IFRpbGVNYXAudCxcbiAgICBob2xlczogbGlzdChHcm91dC50KSxcbiAgICBidWZmZXJfaWRzOiBsaXN0KElkLnQpLFxuICB9O1xuXG4gIGxldCBpbml0ID0gKHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IHVuc2VsZWN0ZWQgPSBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCh6KTtcbiAgICBsZXQgKHZpZXdfdGVybSwgdGVybXMpID0gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCk7XG4gICAge1xuICAgICAgY29sX3RhcmdldDogMCxcbiAgICAgIHRvdWNoZWQ6IFRvdWNoZWQuZW1wdHksXG4gICAgICBtZWFzdXJlZDogTWVhc3VyZWQub2Zfc2VnbWVudCh1bnNlbGVjdGVkKSxcbiAgICAgIHVuc2VsZWN0ZWQsXG4gICAgICB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy5tayh1bnNlbGVjdGVkKSxcbiAgICAgIHNlZ21lbnQ6IFppcHBlci56aXAoeiksXG4gICAgICB0aWxlczogVGlsZU1hcC5tayh1bnNlbGVjdGVkKSxcbiAgICAgIHZpZXdfdGVybSxcbiAgICAgIHRlcm1zLFxuICAgICAgaG9sZXM6IFNlZ21lbnQuaG9sZXModW5zZWxlY3RlZCksXG4gICAgICBidWZmZXJfaWRzOiBTZWxlY3Rpb24uYnVmZmVyX2lkcyh6LnNlbGVjdGlvbiksXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgdHlwZSBTID0ge1xuICAgIGxldCB0b3VjaGVkOiBUb3VjaGVkLnQ7XG4gICAgbGV0IG1lYXN1cmVkOiBNZWFzdXJlZC50O1xuICAgIGxldCB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50O1xuICAgIGxldCBjb2xfdGFyZ2V0OiBpbnQ7XG4gIH07XG4gIGxldCBtb2R1bGVfb2ZfdCA9IChtOiB0KTogKG1vZHVsZSBTKSA9PlxuICAgIChtb2R1bGVcbiAgICAge1xuICAgICAgIGxldCB0b3VjaGVkID0gbS50b3VjaGVkO1xuICAgICAgIGxldCBtZWFzdXJlZCA9IG0ubWVhc3VyZWQ7XG4gICAgICAgbGV0IHRlcm1fcmFuZ2VzID0gbS50ZXJtX3JhbmdlcztcbiAgICAgICBsZXQgY29sX3RhcmdldCA9IG0uY29sX3RhcmdldDtcbiAgICAgfSk7XG5cbiAgLy8gc2hvdWxkIG5vdCBiZSBzZXJpYWxpemluZ1xuICBsZXQgc2V4cF9vZl90ID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnNleHBfb2ZfdFwiKTtcbiAgbGV0IHRfb2Zfc2V4cCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS50X29mX3NleHBcIik7XG4gIGxldCB5b2pzb25fb2ZfdCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS55b2pzb25fb2ZfdFwiKTtcbiAgbGV0IHRfb2ZfeW9qc29uID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnRfb2ZfeW9qc29uXCIpO1xuXG4gIGxldCBuZXh0ID1cbiAgICAgICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgbWV0YTogdCk6IHQgPT4ge1xuICAgIGxldCB7dG91Y2hlZCwgbWVhc3VyZWQsIGNvbF90YXJnZXQsIF99ID0gbWV0YTtcbiAgICBsZXQgdG91Y2hlZCA9IFRvdWNoZWQudXBkYXRlKFRpbWUudGljaygpLCBlZmZlY3RzLCB0b3VjaGVkKTtcbiAgICBsZXQgaXNfZWRpdCA9IEFjdGlvbi5pc19lZGl0KGEpO1xuICAgIGxldCB1bnNlbGVjdGVkID0gaXNfZWRpdCA/IFppcHBlci51bnNlbGVjdF9hbmRfemlwKHopIDogbWV0YS51bnNlbGVjdGVkO1xuICAgIGxldCBtZWFzdXJlZCA9XG4gICAgICBpc19lZGl0XG4gICAgICAgID8gTWVhc3VyZWQub2Zfc2VnbWVudCh+dG91Y2hlZCwgfm9sZD1tZWFzdXJlZCwgdW5zZWxlY3RlZCkgOiBtZWFzdXJlZDtcbiAgICBsZXQgY29sX3RhcmdldCA9XG4gICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgIHwgTW92ZShMb2NhbChVcCB8IERvd24pKVxuICAgICAgfCBTZWxlY3QoUmVzaXplKExvY2FsKFVwIHwgRG93bikpKSA9PiBjb2xfdGFyZ2V0XG4gICAgICB8IF8gPT4gWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KS5jb2xcbiAgICAgIH07XG4gICAgbGV0ICh2aWV3X3Rlcm0sIHRlcm1zKSA9XG4gICAgICBpc19lZGl0ID8gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCkgOiAobWV0YS52aWV3X3Rlcm0sIG1ldGEudGVybXMpO1xuICAgIHtcbiAgICAgIGNvbF90YXJnZXQsXG4gICAgICB0b3VjaGVkLFxuICAgICAgbWVhc3VyZWQsXG4gICAgICB1bnNlbGVjdGVkLFxuICAgICAgdGVybV9yYW5nZXM6IGlzX2VkaXQgPyBUZXJtUmFuZ2VzLm1rKHVuc2VsZWN0ZWQpIDogbWV0YS50ZXJtX3JhbmdlcyxcbiAgICAgIHNlZ21lbnQ6IFppcHBlci56aXAoeiksXG4gICAgICB0aWxlczogaXNfZWRpdCA/IFRpbGVNYXAubWsodW5zZWxlY3RlZCkgOiBtZXRhLnRpbGVzLFxuICAgICAgdmlld190ZXJtLFxuICAgICAgdGVybXMsXG4gICAgICBob2xlczogaXNfZWRpdCA/IFNlZ21lbnQuaG9sZXModW5zZWxlY3RlZCkgOiBtZXRhLmhvbGVzLFxuICAgICAgYnVmZmVyX2lkczogU2VsZWN0aW9uLmJ1ZmZlcl9pZHMoei5zZWxlY3Rpb24pLFxuICAgIH07XG4gIH07XG59O1xuXG5tb2R1bGUgU3RhdGUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHppcHBlcjogWmlwcGVyLnQsXG4gICAgW0BvcGFxdWVdXG4gICAgbWV0YTogTWV0YS50LFxuICB9O1xuXG4gIGxldCBpbml0ID0gemlwcGVyID0+IHt6aXBwZXIsIG1ldGE6IE1ldGEuaW5pdCh6aXBwZXIpfTtcblxuICBsZXQgbmV4dCA9ICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgc3RhdGUpID0+IHtcbiAgICB6aXBwZXI6IHosXG4gICAgbWV0YTogTWV0YS5uZXh0KH5lZmZlY3RzLCBhLCB6LCBzdGF0ZS5tZXRhKSxcbiAgfTtcbn07XG5cbm1vZHVsZSBIaXN0b3J5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgYWZmaXggPSBsaXN0KChBY3Rpb24udCwgU3RhdGUudCkpO1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IChhZmZpeCwgYWZmaXgpO1xuXG4gIGxldCBlbXB0eSA9IChbXSwgW10pO1xuXG4gIGxldCBhZGQgPSAoYTogQWN0aW9uLnQsIHN0YXRlOiBTdGF0ZS50LCAocHJlLCBfKTogdCk6IHQgPT4gKFxuICAgIFsoYSwgc3RhdGUpLCAuLi5wcmVdLFxuICAgIFtdLFxuICApO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzdGF0ZTogU3RhdGUudCxcbiAgaGlzdG9yeTogSGlzdG9yeS50LFxuICByZWFkX29ubHk6IGJvb2wsXG59O1xuXG5sZXQgaW5pdCA9ICh+cmVhZF9vbmx5PWZhbHNlLCB6KSA9PiB7XG4gIHN0YXRlOiBTdGF0ZS5pbml0KHopLFxuICBoaXN0b3J5OiBIaXN0b3J5LmVtcHR5LFxuICByZWFkX29ubHksXG59O1xubGV0IGVtcHR5ID0gaWQgPT4gaW5pdCh+cmVhZF9vbmx5PWZhbHNlLCBaaXBwZXIuaW5pdChpZCkpO1xuXG5sZXQgdXBkYXRlX3ogPSAoZjogWmlwcGVyLnQgPT4gWmlwcGVyLnQsIGVkOiB0KSA9PiB7XG4gIC4uLmVkLFxuICBzdGF0ZToge1xuICAgIC4uLmVkLnN0YXRlLFxuICAgIHppcHBlcjogZihlZC5zdGF0ZS56aXBwZXIpLFxuICB9LFxufTtcbmxldCBwdXRfeiA9ICh6OiBaaXBwZXIudCkgPT4gdXBkYXRlX3ooXyA9PiB6KTtcblxubGV0IHVwZGF0ZV96X29wdCA9IChmOiBaaXBwZXIudCA9PiBvcHRpb24oWmlwcGVyLnQpLCBlZDogdCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHogPSBmKGVkLnN0YXRlLnppcHBlcik7XG4gIHB1dF96KHosIGVkKTtcbn07XG5cbmxldCBuZXdfc3RhdGUgPVxuICAgICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgZWQ6IHQpOiB0ID0+IHtcbiAgbGV0IHN0YXRlID0gU3RhdGUubmV4dCh+ZWZmZWN0cywgYSwgeiwgZWQuc3RhdGUpO1xuICBsZXQgaGlzdG9yeSA9IEhpc3RvcnkuYWRkKGEsIGVkLnN0YXRlLCBlZC5oaXN0b3J5KTtcbiAge3N0YXRlLCBoaXN0b3J5LCByZWFkX29ubHk6IGVkLnJlYWRfb25seX07XG59O1xuXG5sZXQgY2FyZXRfcG9pbnQgPSAoZWQ6IHQpOiBNZWFzdXJlZC5Qb2ludC50ID0+IHtcbiAgbGV0IFN0YXRlLnt6aXBwZXIsIG1ldGF9ID0gZWQuc3RhdGU7XG4gIFppcHBlci5jYXJldF9wb2ludChtZXRhLm1lYXN1cmVkLCB6aXBwZXIpO1xufTtcblxubGV0IHVuZG8gPSAoZWQ6IHQpID0+XG4gIHN3aXRjaCAoZWQuaGlzdG9yeSkge1xuICB8IChbXSwgXykgPT4gTm9uZVxuICB8IChbKGEsIHByZXYpLCAuLi5iZWZvcmVdLCBhZnRlcikgPT5cbiAgICBTb21lKHtcbiAgICAgIHN0YXRlOiBwcmV2LFxuICAgICAgaGlzdG9yeTogKGJlZm9yZSwgWyhhLCBlZC5zdGF0ZSksIC4uLmFmdGVyXSksXG4gICAgICByZWFkX29ubHk6IGVkLnJlYWRfb25seSxcbiAgICB9KVxuICB9O1xubGV0IHJlZG8gPSAoZWQ6IHQpID0+XG4gIHN3aXRjaCAoZWQuaGlzdG9yeSkge1xuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8IChiZWZvcmUsIFsoYSwgbmV4dCksIC4uLmFmdGVyXSkgPT5cbiAgICBTb21lKHtcbiAgICAgIHN0YXRlOiBuZXh0LFxuICAgICAgaGlzdG9yeTogKFsoYSwgZWQuc3RhdGUpLCAuLi5iZWZvcmVdLCBhZnRlciksXG4gICAgICByZWFkX29ubHk6IGVkLnJlYWRfb25seSxcbiAgICB9KVxuICB9O1xuXG5sZXQgY2FuX3VuZG8gPSBlZCA9PiBPcHRpb24uaXNfc29tZSh1bmRvKGVkKSk7XG5sZXQgY2FuX3JlZG8gPSBlZCA9PiBPcHRpb24uaXNfc29tZShyZWRvKGVkKSk7XG5cbmxldCBzZXRfcmVhZF9vbmx5ID0gKGVkLCByZWFkX29ubHkpID0+IHsuLi5lZCwgcmVhZF9vbmx5fTtcblxubGV0IHRyYWlsaW5nX2hvbGVfY3R4ID0gKGVkOiB0LCBpbmZvX21hcDogU3RhdGljcy5NYXAudCkgPT4ge1xuICBsZXQgc2VnbWVudCA9IFppcHBlci51bnNlbGVjdF9hbmRfemlwKGVkLnN0YXRlLnppcHBlcik7XG4gIGxldCBjb252ZXhfZ3JvdXQgPSBTZWdtZW50LmNvbnZleF9ncm91dChzZWdtZW50KTtcbiAgLy8gcHJpbnRfZW5kbGluZShTdHJpbmcuY29uY2F0KFwiOyBcIiwgTGlzdC5tYXAoR3JvdXQuc2hvdywgY29udmV4X2dyb3V0KSkpO1xuICBsZXQgbGFzdCA9IFV0aWwuTGlzdFV0aWwubGFzdF9vcHQoY29udmV4X2dyb3V0KTtcbiAgc3dpdGNoIChsYXN0KSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZShncm91dCkgPT5cbiAgICBsZXQgaWQgPSBncm91dC5pZDtcbiAgICBsZXQgaW5mbyA9IElkLk1hcC5maW5kX29wdChpZCwgaW5mb19tYXApO1xuICAgIHN3aXRjaCAoaW5mbykge1xuICAgIHwgU29tZShpbmZvKSA9PiBTb21lKEluZm8uY3R4X29mKGluZm8pKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfTtcbn07XG4iLCIvKlxuIEEgbmljZSBwcm9wZXJ0eSB3b3VsZCBiZSB0aGF0IGVsYWJvcmF0aW9uIGlzIGlkZW1wb3RlbnQuLi5cbiAqL1xuXG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBNaXNzaW5nVHlwZUluZm87XG5cbm1vZHVsZSBFbGFib3JhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7ZDogREhFeHAudH07XG59O1xuXG5tb2R1bGUgRWxhYm9yYXRpb25SZXN1bHQgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID1cbiAgICB8IEVsYWJvcmF0ZXMoREhFeHAudCwgVHlwLnQsIERlbHRhLnQpXG4gICAgfCBEb2VzTm90RWxhYm9yYXRlO1xufTtcblxubGV0IGZyZXNoX2Nhc3QgPSAoZDogREhFeHAudCwgdDE6IFR5cC50LCB0MjogVHlwLnQpOiBESEV4cC50ID0+IHtcbiAgVHlwLmVxKHQxLCB0MilcbiAgICA/IGRcbiAgICA6IHtcbiAgICAgIGxldCBkJyA9XG4gICAgICAgIERIRXhwLkNhc3QoZCwgdDEsIFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSlcbiAgICAgICAgfD4gREhFeHAuZnJlc2hcbiAgICAgICAgfD4gQ2FzdHMudHJhbnNpdGlvbl9tdWx0aXBsZTtcbiAgICAgIERIRXhwLkNhc3QoZCcsIFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSwgdDIpXG4gICAgICB8PiBESEV4cC5mcmVzaFxuICAgICAgfD4gQ2FzdHMudHJhbnNpdGlvbl9tdWx0aXBsZTtcbiAgICB9O1xufTtcblxubGV0IGZyZXNoX3BhdF9jYXN0ID0gKHA6IERIUGF0LnQsIHQxOiBUeXAudCwgdDI6IFR5cC50KTogREhQYXQudCA9PiB7XG4gIFR5cC5lcSh0MSwgdDIpXG4gICAgPyBwXG4gICAgOiB7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoXCI9PT09PXZ2dnZ2PT09XCIpO1xuICAgICAgbGV0IF8gPSBwcmludF9lbmRsaW5lKFR5cC5zaG93KHQxKSk7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoVHlwLnNob3codDIpKTtcbiAgICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShcIj09PT09Xl5eXl49PT1cIik7XG4gICAgICBDYXN0KFxuICAgICAgICBESFBhdC5mcmVzaChDYXN0KHAsIHQxLCBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpKVxuICAgICAgICB8PiBDYXN0cy5wYXR0ZXJuX2ZpeHVwLFxuICAgICAgICBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSksXG4gICAgICAgIHQyLFxuICAgICAgKVxuICAgICAgfD4gREhQYXQuZnJlc2hcbiAgICAgIHw+IENhc3RzLnBhdHRlcm5fZml4dXA7XG4gICAgfTtcbn07XG5cbmxldCBlbGFib3JhdGVkX3R5cGUgPSAobTogU3RhdGljcy5NYXAudCwgdWV4cDogVUV4cC50KTogKFR5cC50LCBDdHgudCkgPT4ge1xuICBsZXQgKG1vZGUsIHNlbGZfdHksIGN0eCkgPVxuICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KEV4cC5yZXBfaWQodWV4cCksIG0pKSB7XG4gICAgfCBTb21lKEluZm8uSW5mb0V4cCh7bW9kZSwgdHksIGN0eCwgX30pKSA9PiAobW9kZSwgdHksIGN0eClcbiAgICB8IF8gPT4gcmFpc2UoTWlzc2luZ1R5cGVJbmZvKVxuICAgIH07XG4gIGxldCBlbGFiX3R5ID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IFN5biA9PiBzZWxmX3R5XG4gICAgfCBTeW5GdW4gPT5cbiAgICAgIGxldCAodHkxLCB0eTIpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBzZWxmX3R5KTtcbiAgICAgIFR5cC5BcnJvdyh0eTEsIHR5MikgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgfCBTeW5UeXBGdW4gPT5cbiAgICAgIGxldCAodHBhdCwgdHkpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgc2VsZl90eSk7XG4gICAgICBsZXQgdHBhdCA9IE9wdGlvbi52YWx1ZSh0cGF0LCB+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpO1xuICAgICAgVHlwLkZvcmFsbCh0cGF0LCB0eSkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgLy8gV2UgbmVlZCB0byByZW1vdmUgdGhlIHN5bnN3aXRjaGVzIGZyb20gdGhpcyB0eXBlLlxuICAgIHwgQW5hKGFuYV90eSkgPT4gVHlwLm1hdGNoX3N5bnN3aXRjaChhbmFfdHksIHNlbGZfdHkpXG4gICAgfTtcbiAgKGVsYWJfdHkgfD4gVHlwLm5vcm1hbGl6ZShjdHgpLCBjdHgpO1xufTtcblxubGV0IGVsYWJvcmF0ZWRfcGF0X3R5cGUgPSAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVVBhdC50KTogKFR5cC50LCBDdHgudCkgPT4ge1xuICBsZXQgKG1vZGUsIHNlbGZfdHksIGN0eCwgcHJldl9zeW5zd2l0Y2gpID1cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChVUGF0LnJlcF9pZCh1cGF0KSwgbSkpIHtcbiAgICB8IFNvbWUoSW5mby5JbmZvUGF0KHttb2RlLCB0eSwgY3R4LCBwcmV2X3N5bnN3aXRjaCwgX30pKSA9PiAoXG4gICAgICAgIG1vZGUsXG4gICAgICAgIHR5LFxuICAgICAgICBjdHgsXG4gICAgICAgIHByZXZfc3luc3dpdGNoLFxuICAgICAgKVxuICAgIHwgXyA9PiByYWlzZShNaXNzaW5nVHlwZUluZm8pXG4gICAgfTtcbiAgbGV0IGVsYWJfdHkgPVxuICAgIHN3aXRjaCAobW9kZSkge1xuICAgIHwgU3luID0+IHNlbGZfdHlcbiAgICB8IFN5bkZ1biA9PlxuICAgICAgbGV0ICh0eTEsIHR5MikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHNlbGZfdHkpO1xuICAgICAgVHlwLkFycm93KHR5MSwgdHkyKSB8PiBUeXAubWtfZmFzdDtcbiAgICB8IFN5blR5cEZ1biA9PlxuICAgICAgbGV0ICh0cGF0LCB0eSkgPSBUeXAubWF0Y2hlZF9mb3JhbGwoY3R4LCBzZWxmX3R5KTtcbiAgICAgIGxldCB0cGF0ID0gT3B0aW9uLnZhbHVlKHRwYXQsIH5kZWZhdWx0PVRQYXQuZnJlc2goRW1wdHlIb2xlKSk7XG4gICAgICBUeXAuRm9yYWxsKHRwYXQsIHR5KSB8PiBUeXAubWtfZmFzdDtcbiAgICB8IEFuYShhbmFfdHkpID0+XG4gICAgICBzd2l0Y2ggKHByZXZfc3luc3dpdGNoKSB7XG4gICAgICB8IE5vbmUgPT4gYW5hX3R5XG4gICAgICB8IFNvbWUoc3luX3R5KSA9PiBUeXAubWF0Y2hfc3luc3dpdGNoKHN5bl90eSwgYW5hX3R5KVxuICAgICAgfVxuICAgIH07XG4gIChlbGFiX3R5IHw+IFR5cC5ub3JtYWxpemUoY3R4KSwgY3R4KTtcbn07XG5cbmxldCByZWMgZWxhYm9yYXRlX3BhdHRlcm4gPVxuICAgICAgICAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVVBhdC50KTogKERIUGF0LnQsIFR5cC50KSA9PiB7XG4gIGxldCAoZWxhYm9yYXRlZF90eXBlLCBjdHgpID0gZWxhYm9yYXRlZF9wYXRfdHlwZShtLCB1cGF0KTtcbiAgbGV0IGNhc3RfZnJvbSA9ICh0eSwgZXhwKSA9PiBmcmVzaF9wYXRfY2FzdChleHAsIHR5LCBlbGFib3JhdGVkX3R5cGUpO1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBVUGF0LnVud3JhcCh1cGF0KTtcbiAgbGV0IGRwYXQgPVxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgSW50KF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEJvb2woXykgPT4gdXBhdCB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEZsb2F0KF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgU3RyaW5nKF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKFN0cmluZyB8PiBUeXAubWtfZmFzdClcbiAgICB8IExpc3RMaXQocHMpID0+XG4gICAgICBsZXQgKHBzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBpbm5lcl90eXBlID1cbiAgICAgICAgdHlzXG4gICAgICAgIHw+IFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eClcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAyKChwLCB0KSA9PiBmcmVzaF9wYXRfY2FzdChwLCB0LCBpbm5lcl90eXBlKSwgXywgdHlzKVxuICAgICAgfD4gKFxuICAgICAgICBwcycgPT5cbiAgICAgICAgICBESFBhdC5MaXN0TGl0KHBzJylcbiAgICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgICB8PiBjYXN0X2Zyb20oTGlzdChpbm5lcl90eXBlKSB8PiBUeXAubWtfZmFzdClcbiAgICAgICk7XG4gICAgfCBDb25zKHAxLCBwMikgPT5cbiAgICAgIGxldCAocDEnLCB0eTEpID0gZWxhYm9yYXRlX3BhdHRlcm4obSwgcDEpO1xuICAgICAgbGV0IChwMicsIHR5MikgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMik7XG4gICAgICBsZXQgdHkyX2lubmVyID0gVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5Mik7XG4gICAgICBsZXQgdHlfaW5uZXIgPVxuICAgICAgICBUeXAuam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyX2lubmVyKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBwMScnID0gZnJlc2hfcGF0X2Nhc3QocDEnLCB0eTEsIHR5X2lubmVyKTtcbiAgICAgIGxldCBwMicnID0gZnJlc2hfcGF0X2Nhc3QocDInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIERIUGF0LkNvbnMocDEnJywgcDInJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR1cGxlKHBzKSA9PlxuICAgICAgbGV0IChwcycsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGVfcGF0dGVybihtKSwgcHMpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgREhQYXQuVHVwbGUocHMnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKFR5cC5Qcm9kKHR5cykgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQXAocDEsIHAyKSA9PlxuICAgICAgbGV0IChwMScsIHR5MSkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMSk7XG4gICAgICBsZXQgKHAyJywgdHkyKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHAyKTtcbiAgICAgIGxldCAodHkxbCwgdHkxcikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5MSk7XG4gICAgICBsZXQgcDEnJyA9IGZyZXNoX3BhdF9jYXN0KHAxJywgdHkxLCBBcnJvdyh0eTFsLCB0eTFyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgcDInJyA9IGZyZXNoX3BhdF9jYXN0KHAyJywgdHkyLCB0eTFsKTtcbiAgICAgIERIUGF0LkFwKHAxJycsIHAyJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkxcik7XG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZCA9PiB1cGF0IHw+IGNhc3RfZnJvbShUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXG4gICAgfCBWYXIodikgPT5cbiAgICAgIHVwYXRcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF92YXIoY3R4LCB2KVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIC8vIFR5cGUgYW5ub3RhdGlvbnMgc2hvdWxkIGFscmVhZHkgYXBwZWFyXG4gICAgfCBQYXJlbnMocClcbiAgICB8IENhc3QocCwgXywgXykgPT5cbiAgICAgIGxldCAocCcsIHR5KSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgcCcgfD4gY2FzdF9mcm9tKHR5KTtcbiAgICB8IENvbnN0cnVjdG9yKGMpID0+XG4gICAgICB1cGF0XG4gICAgICB8PiBjYXN0X2Zyb20oXG4gICAgICAgICAgIEN0eC5sb29rdXBfY3RyKGN0eCwgYylcbiAgICAgICAgICAgfD4gT3B0aW9uLm1hcCgoeDogQ3R4LnZhcl9lbnRyeSkgPT4geC50eXAgfD4gVHlwLm5vcm1hbGl6ZShjdHgpKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgICAgICAgICBUeXAubWtfZmFzdChcbiAgICAgICAgICAgICAgICAgICAgVHlwLlN1bShbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV0pLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgIClcbiAgICB9O1xuICAoZHBhdCwgZWxhYm9yYXRlZF90eXBlKTtcbn07XG5cbi8qIFRoZSBwcmltYXJ5IGdvYWwgb2YgZWxhYm9yYXRpb24gaXMgdG8gY29udmVydCBmcm9tIGEgdHlwZSBzeXN0ZW1cbiAgIHdoZXJlIHdlIGhhdmUgY29uc2lzdGVuY3ksIHRvIGEgdHlwZSBzeXN0ZW0gd2hlcmUgdHlwZXMgYXJlIGVpdGhlclxuICAgZXF1YWwgb3IgdGhleSdyZSBub3QuIEFueXRoaW5nIHRoYXQgd2FzIGp1c3QgY29uc2lzdGVudCBuZWVkcyB0b1xuICAgYmVjb21lIGEgY2FzdC4gW1RoZSBvbmUgb3RoZXIgdGhpbmcgZWxhYm9yYXRpb24gZG9lcyBpcyBtYWtlXG4gICByZWN1cnNpdmUgbGV0IGJpbmRpbmdzIGV4cGxpY2l0Ll1cblxuICAgQXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uIHdlIHdvcmsgb3V0IHRoZSBcImVsYWJvcmF0ZWQgdHlwZVwiIG9mXG4gICBvZiB0aGUgZXhwcmVzc2lvbi4gV2UgYWxzbyByZXR1cm4gdGhpcyBlbGFib3JhdGVkIHR5cGUgc28gd2UgY2FuXG4gICB1c2UgaXQgaW4gdGhlIHJlY3Vyc2l2ZSBjYWxsLiBXaGVuIGVsYWJvcmF0ZSByZXR1cm5zLCB5b3UgY2FuIHRydXN0XG4gICB0aGF0IHRoZSByZXR1cm5lZCBleHByZXNzaW9uIHdpbGwgaGF2ZSB0aGUgcmV0dXJuZWQgdHlwZS4gVGhlcmUgaXNcbiAgIGhvd2V2ZXIsIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXR1cm5lZCB0eXBlIGlzIGV2ZW4gY29uc2lzdGVudCB3aXRoXG4gICB0aGUgXCJlbGFib3JhdGVkIHR5cGVcIiBhdCB0aGUgdG9wLCBzbyB5b3Ugc2hvdWxkIGZyZXNoX2Nhc3QgRVZFUllXSEVSRVxuICAganVzdCBpbiBjYXNlLlxuXG4gICBbTWF0dF0gQSBsb3Qgb2YgdGhlc2UgZnJlc2hfY2FzdCBjYWxscyBhcmUgcmVkdW5kYW50LCBob3dldmVyIGlmIHlvdVxuICAgd2FudCB0byByZW1vdmUgb25lLCBJJ2QgYXNrIHlvdSBpbnN0ZWFkIGNvbW1lbnQgaXQgb3V0IGFuZCBsZWF2ZVxuICAgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0J3MgcmVkdW5kYW50LiAgKi9cbmxldCByZWMgZWxhYm9yYXRlID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IChESEV4cC50LCBUeXAudCkgPT4ge1xuICBsZXQgKGVsYWJvcmF0ZWRfdHlwZSwgY3R4KSA9IGVsYWJvcmF0ZWRfdHlwZShtLCB1ZXhwKTtcbiAgbGV0IGNhc3RfZnJvbSA9ICh0eSwgZXhwKSA9PiBmcmVzaF9jYXN0KGV4cCwgdHksIGVsYWJvcmF0ZWRfdHlwZSk7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IFVFeHAudW53cmFwKHVleHApO1xuICBsZXQgZGhleHAgPVxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlID0+IHVleHAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgfCBNdWx0aUhvbGUoc3R1ZmYpID0+XG4gICAgICBBbnkubWFwX3Rlcm0oXG4gICAgICAgIH5mX2V4cD0oXywgZXhwKSA9PiB7ZWxhYm9yYXRlKG0sIGV4cCkgfD4gZnN0fSxcbiAgICAgICAgfmZfcGF0PShfLCBwYXQpID0+IHtlbGFib3JhdGVfcGF0dGVybihtLCBwYXQpIHw+IGZzdH0sXG4gICAgICAgIF8sXG4gICAgICApXG4gICAgICB8PiBMaXN0Lm1hcChfLCBzdHVmZilcbiAgICAgIHw+IChcbiAgICAgICAgc3R1ZmYgPT5cbiAgICAgICAgICBESEV4cC5NdWx0aUhvbGUoc3R1ZmYpXG4gICAgICAgICAgfD4gcmV3cmFwXG4gICAgICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgICApXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKGUsIGVycikgPT5cbiAgICAgIGxldCAoZScsIF8pID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgRHluYW1pY0Vycm9ySG9sZShlJywgZXJyKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICB8IENhc3QoZSwgXywgXykgLy8gV2UgcmVtb3ZlIHRoZXNlIGNhc3RzIGJlY2F1c2UgdGhleSBzaG91bGQgYmUgcmUtaW5zZXJ0ZWQgaW4gdGhlIHJlY3Vyc2l2ZSBjYWxsXG4gICAgfCBGYWlsZWRDYXN0KGUsIF8sIF8pXG4gICAgfCBQYXJlbnMoZSkgPT5cbiAgICAgIGxldCAoZScsIHR5KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIGUnIHw+IGNhc3RfZnJvbSh0eSk7XG4gICAgfCBEZWZlcnJhbChfKSA9PiB1ZXhwXG4gICAgfCBJbnQoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oSW50IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgQm9vbChfKSA9PiB1ZXhwIHw+IGNhc3RfZnJvbShCb29sIHw+IFR5cC5ta19mYXN0KVxuICAgIHwgRmxvYXQoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oRmxvYXQgfD4gVHlwLm1rX2Zhc3QpXG4gICAgfCBTdHJpbmcoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oU3RyaW5nIHw+IFR5cC5ta19mYXN0KVxuICAgIHwgTGlzdExpdChlcykgPT5cbiAgICAgIGxldCAoZHMsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGUobSksIGVzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBpbm5lcl90eXBlID1cbiAgICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1UeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eCwgdHlzKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBsZXQgZHMnID0gTGlzdC5tYXAyKChkLCB0KSA9PiBmcmVzaF9jYXN0KGQsIHQsIGlubmVyX3R5cGUpLCBkcywgdHlzKTtcbiAgICAgIEV4cC5MaXN0TGl0KGRzJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QoaW5uZXJfdHlwZSkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQ29uc3RydWN0b3IoYykgPT5cbiAgICAgIHVleHBcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF9jdHIoY3R4LCBjKVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZShcbiAgICAgICAgICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgICAgICAgIFR5cC5ta19mYXN0KFxuICAgICAgICAgICAgICAgICAgICBUeXAuU3VtKFtCYWRFbnRyeShUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgKVxuICAgIHwgRnVuKHAsIGUsIGVudiwgbikgPT5cbiAgICAgIGxldCAocCcsIHR5cCkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwKTtcbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBFeHAuRnVuKHAnLCBlJywgZW52LCBuKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQXJyb3codHlwLCB0eWUpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR5cEZ1bih0cGF0LCBlLCBuYW1lKSA9PlxuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIEV4cC5UeXBGdW4odHBhdCwgZScsIG5hbWUpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShUeXAuRm9yYWxsKHRwYXQsIHR5ZSkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgVHVwbGUoZXMpID0+XG4gICAgICBsZXQgKGRzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBFeHAuVHVwbGUoZHMpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20oUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFZhcih2KSA9PlxuICAgICAgdWV4cFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX3ZhcihjdHgsIHYpXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwIHw+IFR5cC5ub3JtYWxpemUoY3R4KSlcbiAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICAgIGxldCBhZGRfbmFtZTogKG9wdGlvbihzdHJpbmcpLCBESEV4cC50KSA9PiBESEV4cC50ID0gKFxuICAgICAgICAobmFtZSwgZXhwKSA9PiB7XG4gICAgICAgICAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGV4cCk7XG4gICAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgICAgfCBGdW4ocCwgZSwgY3R4LCBfKSA9PiBGdW4ocCwgZSwgY3R4LCBuYW1lKSB8PiByZXdyYXBcbiAgICAgICAgICB8IF8gPT4gZXhwXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGxldCAocCwgdHkxKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgaWYgKCFTdGF0aWNzLmlzX3JlY3Vyc2l2ZShjdHgsIHAsIGRlZiwgdHkxKSkge1xuICAgICAgICBsZXQgZGVmID0gYWRkX25hbWUoUGF0LmdldF92YXIocCksIGRlZik7XG4gICAgICAgIGxldCAoZGVmLCB0eTIpID0gZWxhYm9yYXRlKG0sIGRlZik7XG4gICAgICAgIGxldCAoYm9keSwgdHkpID0gZWxhYm9yYXRlKG0sIGJvZHkpO1xuICAgICAgICBFeHAuTGV0KHAsIGZyZXNoX2Nhc3QoZGVmLCB0eTIsIHR5MSksIGJvZHkpXG4gICAgICAgIHw+IHJld3JhcFxuICAgICAgICB8PiBjYXN0X2Zyb20odHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVE9ETzogQWRkIG5hbWVzIHRvIG11dHVhbGx5IHJlY3Vyc2l2ZSBmdW5jdGlvbnNcbiAgICAgICAgLy8gVE9ETzogRG9uJ3QgYWRkIGZpeHBvaW50IGlmIHRoZXJlIGFscmVhZHkgaXMgb25lXG4gICAgICAgIGxldCBkZWYgPSBhZGRfbmFtZShPcHRpb24ubWFwKHMgPT4gcyArKyBcIitcIiwgUGF0LmdldF92YXIocCkpLCBkZWYpO1xuICAgICAgICBsZXQgKGRlZiwgdHkyKSA9IGVsYWJvcmF0ZShtLCBkZWYpO1xuICAgICAgICBsZXQgKGJvZHksIHR5KSA9IGVsYWJvcmF0ZShtLCBib2R5KTtcbiAgICAgICAgbGV0IGZpeGYgPSBGaXhGKHAsIGZyZXNoX2Nhc3QoZGVmLCB0eTIsIHR5MSksIE5vbmUpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICBFeHAuTGV0KHAsIGZpeGYsIGJvZHkpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkpO1xuICAgICAgfTtcbiAgICB8IEZpeEYocCwgZSwgZW52KSA9PlxuICAgICAgbGV0IChwJywgdHlwKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIEV4cC5GaXhGKHAnLCBmcmVzaF9jYXN0KGUnLCB0eWUsIHR5cCksIGVudilcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKHR5cCk7XG4gICAgfCBUeUFsaWFzKF8sIF8sIGUpID0+XG4gICAgICBsZXQgKGUnLCB0eWUpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgZScgfD4gY2FzdF9mcm9tKHR5ZSk7XG4gICAgfCBBcChkaXIsIGYsIGEpID0+XG4gICAgICBsZXQgKGYnLCB0eWYpID0gZWxhYm9yYXRlKG0sIGYpO1xuICAgICAgbGV0IChhJywgdHlhKSA9IGVsYWJvcmF0ZShtLCBhKTtcbiAgICAgIGxldCAodHlmMSwgdHlmMikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5Zik7XG4gICAgICBsZXQgZicnID0gZnJlc2hfY2FzdChmJywgdHlmLCBBcnJvdyh0eWYxLCB0eWYyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgYScnID0gZnJlc2hfY2FzdChhJywgdHlhLCB0eWYxKTtcbiAgICAgIEV4cC5BcChkaXIsIGYnJywgYScnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5ZjIpO1xuICAgIHwgRGVmZXJyZWRBcChmLCBhcmdzKSA9PlxuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCAoYXJncycsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGUobSksIGFyZ3MpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgbGV0ICh0eWYxLCB0eWYyKSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgdHlmKTtcbiAgICAgIGxldCB0eV9mYXJncyA9IFR5cC5tYXRjaGVkX3Byb2QoY3R4LCBMaXN0Lmxlbmd0aChhcmdzKSwgdHlmMSk7XG4gICAgICBsZXQgZicnID1cbiAgICAgICAgZnJlc2hfY2FzdChcbiAgICAgICAgICBmJyxcbiAgICAgICAgICB0eWYsXG4gICAgICAgICAgQXJyb3coUHJvZCh0eV9mYXJncykgfD4gVHlwLm1rX2Zhc3QsIHR5ZjIpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgICApO1xuICAgICAgbGV0IGFyZ3MnJyA9IExpc3RVdGlsLm1hcDMoZnJlc2hfY2FzdCwgYXJncycsIHR5cywgdHlfZmFyZ3MpO1xuICAgICAgbGV0IHJlbWFpbmluZ19hcmdzID1cbiAgICAgICAgTGlzdC5maWx0ZXIoXG4gICAgICAgICAgKChhcmcsIF8pKSA9PiBFeHAuaXNfZGVmZXJyYWwoYXJnKSxcbiAgICAgICAgICBMaXN0LmNvbWJpbmUoYXJncywgdHlfZmFyZ3MpLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlbWFpbmluZ19hcmdfdHkgPVxuICAgICAgICBQcm9kKExpc3QubWFwKHNuZCwgcmVtYWluaW5nX2FyZ3MpKSB8PiBUeXAubWtfZmFzdDtcbiAgICAgIERlZmVycmVkQXAoZicnLCBhcmdzJycpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShBcnJvdyhyZW1haW5pbmdfYXJnX3R5LCB0eWYyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBUeXBBcChlLCB1dCkgPT5cbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBsZXQgKHRwYXQsIHR5ZScpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgdHllKTtcbiAgICAgIGxldCB1dCcgPSBUeXAubm9ybWFsaXplKGN0eCwgdXQpO1xuICAgICAgbGV0IHR5ZScnID1cbiAgICAgICAgVHlwLnN1YnN0KFxuICAgICAgICAgIHV0JyxcbiAgICAgICAgICB0cGF0IHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpLFxuICAgICAgICAgIHR5ZScsXG4gICAgICAgICk7XG4gICAgICBUeXBBcChlJywgdXQpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHllJycpO1xuICAgIHwgSWYoYywgdCwgZikgPT5cbiAgICAgIGxldCAoYycsIHR5YykgPSBlbGFib3JhdGUobSwgYyk7XG4gICAgICBsZXQgKHQnLCB0eXQpID0gZWxhYm9yYXRlKG0sIHQpO1xuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCB0eSA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHl0LCB0eWYpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBjJycgPSBmcmVzaF9jYXN0KGMnLCB0eWMsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgICAgbGV0IHQnJyA9IGZyZXNoX2Nhc3QodCcsIHR5dCwgdHkpO1xuICAgICAgbGV0IGYnJyA9IGZyZXNoX2Nhc3QoZicsIHR5ZiwgdHkpO1xuICAgICAgRXhwLklmKGMnJywgdCcnLCBmJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkpO1xuICAgIHwgU2VxKGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCBfKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdHkyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBTZXEoZTEnLCBlMicpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkyKTtcbiAgICB8IFRlc3QoZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgVGVzdChmcmVzaF9jYXN0KGUnLCB0LCBCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKFByb2QoW10pIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEZpbHRlcihraW5kLCBlKSA9PlxuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBsZXQga2luZCcgPVxuICAgICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgfCBSZXNpZHVlKF8pID0+IGtpbmRcbiAgICAgICAgfCBGaWx0ZXIoe2FjdCwgcGF0fSkgPT4gRmlsdGVyKHthY3QsIHBhdDogZWxhYm9yYXRlKG0sIHBhdCkgfD4gZnN0fSlcbiAgICAgICAgfTtcbiAgICAgIEZpbHRlcihraW5kJywgZScpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odCk7XG4gICAgfCBDbG9zdXJlKGVudiwgZSkgPT5cbiAgICAgIC8vIFNob3VsZCB3ZSBiZSBlbGFib3JhdGluZyB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50P1xuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBDbG9zdXJlKGVudiwgZScpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odCk7XG4gICAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0eTEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0eTIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIGxldCB0eTJfaW5uZXIgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkyKTtcbiAgICAgIGxldCB0eV9pbm5lciA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkxLCB0eTJfaW5uZXIpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGUxJycgPSBmcmVzaF9jYXN0KGUxJywgdHkxLCB0eV9pbm5lcik7XG4gICAgICBsZXQgZTInJyA9IGZyZXNoX2Nhc3QoZTInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIENvbnMoZTEnJywgZTInJykgfD4gcmV3cmFwIHw+IGNhc3RfZnJvbShMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0eTEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0eTIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIGxldCB0eV9pbm5lcjEgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkxKTtcbiAgICAgIGxldCB0eV9pbm5lcjIgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkyKTtcbiAgICAgIGxldCB0eV9pbm5lciA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHlfaW5uZXIxLCB0eV9pbm5lcjIpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGUxJycgPSBmcmVzaF9jYXN0KGUxJywgdHkxLCBMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgZTInJyA9IGZyZXNoX2Nhc3QoZTInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIExpc3RDb25jYXQoZTEnJywgZTInJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgPT5cbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IFZhcihcImVcIikgPT4gQ29uc3RydWN0b3IoXCIkZVwiKSB8PiByZXdyYXBcbiAgICAgIHwgVmFyKFwidlwiKSA9PiBDb25zdHJ1Y3RvcihcIiR2XCIpIHw+IHJld3JhcFxuICAgICAgfCBfID0+XG4gICAgICAgIERIRXhwLkVtcHR5SG9sZVxuICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgICB9XG4gICAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgICBsZXQgKGUnLCB0KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIFVuT3AoSW50KE1pbnVzKSwgZnJlc2hfY2FzdChlJywgdCwgSW50IHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBVbk9wKEJvb2woTm90KSwgZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgVW5PcChCb29sKE5vdCksIGZyZXNoX2Nhc3QoZScsIHQsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChJbnQoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSkgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBJbnQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oSW50IHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFxuICAgICAgICBJbnQoXG4gICAgICAgICAgTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8XG4gICAgICAgICAgRXF1YWxzIHxcbiAgICAgICAgICBOb3RFcXVhbHMsXG4gICAgICAgICkgYXMgb3AsXG4gICAgICAgIGUxLFxuICAgICAgICBlMixcbiAgICAgICkgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBJbnQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChCb29sKEFuZCB8IE9yKSBhcyBvcCwgZTEsIGUyKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBCb29sIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBCb29sIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoRmxvYXQoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBEaXZpZGUgfCBQb3dlcikgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIEZsb2F0IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFxuICAgICAgICBGbG9hdChcbiAgICAgICAgICBMZXNzVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuIHwgR3JlYXRlclRoYW5PckVxdWFsIHxcbiAgICAgICAgICBFcXVhbHMgfFxuICAgICAgICAgIE5vdEVxdWFscyxcbiAgICAgICAgKSBhcyBvcCxcbiAgICAgICAgZTEsXG4gICAgICAgIGUyLFxuICAgICAgKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBGbG9hdCB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChTdHJpbmcoQ29uY2F0KSBhcyBvcCwgZTEsIGUyKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIFN0cmluZyB8PiBUeXAubWtfZmFzdCksXG4gICAgICApXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoU3RyaW5nKEVxdWFscykgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgU3RyaW5nIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCdWlsdGluRnVuKGZuKSA9PlxuICAgICAgdWV4cFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX3ZhcihCdWlsdGlucy5jdHhfaW5pdCwgZm4pXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSksXG4gICAgICAgICApXG4gICAgfCBNYXRjaChlLCBjYXNlcykgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgbGV0IChwcywgZXMpID0gTGlzdFV0aWwudW56aXAoY2FzZXMpO1xuICAgICAgbGV0IChwcycsIHB0eXMpID1cbiAgICAgICAgTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBqb2luZWRfcHR5ID1cbiAgICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1UeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eCwgcHR5cylcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IHBzJycgPVxuICAgICAgICBMaXN0Lm1hcDIoKHAsIHQpID0+IGZyZXNoX3BhdF9jYXN0KHAsIHQsIGpvaW5lZF9wdHkpLCBwcycsIHB0eXMpO1xuICAgICAgbGV0IGUnJyA9IGZyZXNoX2Nhc3QoZScsIHQsIGpvaW5lZF9wdHkpO1xuICAgICAgbGV0IChlcycsIGV0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBsZXQgam9pbmVkX2V0eSA9XG4gICAgICAgIFR5cC5qb2luX2FsbCh+ZW1wdHk9VHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIGV0eXMpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBlcycnID1cbiAgICAgICAgTGlzdC5tYXAyKChlLCB0KSA9PiBmcmVzaF9jYXN0KGUsIHQsIGpvaW5lZF9ldHkpLCBlcycsIGV0eXMpO1xuICAgICAgTWF0Y2goZScnLCBMaXN0LmNvbWJpbmUocHMnJywgZXMnJykpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShqb2luZWRfZXR5KTtcbiAgICB9O1xuICAoZGhleHAsIGVsYWJvcmF0ZWRfdHlwZSk7XG59O1xuXG4vL2xldCBkaGV4cF9vZl91ZXhwID0gQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgZGhleHBfb2ZfdWV4cCk7XG5cbi8qIFRoaXMgZnVuY3Rpb24gZ2l2ZXMgYSBuZXcgaWQgdG8gYWxsIHRoZSB0eXBlc1xuICAgaW4gdGhlIGV4cHJlc3Npb24uIEl0IGRvZXMgdGhpcyB0byBnZXQgcmlkIG9mXG4gICBhbGwgdGhlIGludmFsaWQgaWRzIHdlIGFkZGVkIHRvIHByZXZlbnQgZ2VuZXJhdGluZ1xuICAgdG9vIG1hbnkgbmV3IGlkcyAqL1xubGV0IGZpeF90eXBfaWRzID1cbiAgRXhwLm1hcF90ZXJtKH5mX3R5cD0oY29udCwgZSkgPT4gZSB8PiBJZFRhZ2dlZC5uZXdfaWRzIHw+IGNvbnQpO1xuXG5sZXQgdWV4cF9lbGFiID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IEVsYWJvcmF0aW9uUmVzdWx0LnQgPT5cbiAgc3dpdGNoIChlbGFib3JhdGUobSwgdWV4cCkpIHtcbiAgfCBleGNlcHRpb24gTWlzc2luZ1R5cGVJbmZvID0+IERvZXNOb3RFbGFib3JhdGVcbiAgfCAoZCwgdHkpID0+IEVsYWJvcmF0ZXMoZCwgdHksIERlbHRhLmVtcHR5KVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge3N0ZXA6IGludH07XG5cbmxldCBpbml0aWFsOiB0ID0ge3N0ZXA6IDB9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGVwfSkgPT4ge3N0ZXA6IHN0ZXAgKyAxfTtcbmxldCBnZXRfc3RlcCA9ICh7c3RlcH0pID0+IHN0ZXA7XG5sZXQgcHV0X3N0ZXAgPSBzdGVwID0+IHtzdGVwOiBzdGVwfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdHM6IEV2YWx1YXRvclN0YXRzLnQsXG4gIHRlc3RzOiBUZXN0TWFwLnQsXG59O1xuXG5sZXQgaW5pdCA9IHtzdGF0czogRXZhbHVhdG9yU3RhdHMuaW5pdGlhbCwgdGVzdHM6IFRlc3RNYXAuZW1wdHl9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGF0cywgX30gYXMgZXMpID0+IHtcbiAgLi4uZXMsXG4gIHN0YXRzOiBzdGF0cyB8PiBFdmFsdWF0b3JTdGF0cy50YWtlX3N0ZXAsXG59O1xuXG5sZXQgZ2V0X3N0ZXAgPSAoe3N0YXRzLCBffSkgPT4gc3RhdHMgfD4gRXZhbHVhdG9yU3RhdHMuZ2V0X3N0ZXA7XG5cbmxldCBwdXRfc3RlcCA9IChzdGVwLCBlcykgPT4gey4uLmVzLCBzdGF0czogRXZhbHVhdG9yU3RhdHMucHV0X3N0ZXAoc3RlcCl9O1xuXG5sZXQgYWRkX3Rlc3QgPSAoe3Rlc3RzLCBffSBhcyBlcywgaWQsIHJlcG9ydCkgPT4ge1xuICBsZXQgdGVzdHMgPSB0ZXN0cyB8PiBUZXN0TWFwLmV4dGVuZCgoaWQsIHJlcG9ydCkpO1xuICB7Li4uZXMsIHRlc3RzfTtcbn07XG5cbmxldCBnZXRfdGVzdHMgPSAoe3Rlc3RzLCBffSkgPT4gdGVzdHM7XG5cbmxldCBwdXRfdGVzdHMgPSAodGVzdHMsIGVzKSA9PiB7Li4uZXMsIHRlc3RzfTtcbiIsIm9wZW4gVHJhbnNpdGlvbjtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQm94ZWRWYWx1ZShESEV4cC50KVxuICAgIHwgSW5kZXQoREhFeHAudCk7XG5cbiAgbGV0IHVuYm94ID1cbiAgICBmdW5cbiAgICB8IEJveGVkVmFsdWUoZClcbiAgICB8IEluZGV0KGQpID0+IGQ7XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSAocjEsIHIyKSA9PlxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoQm94ZWRWYWx1ZShkMSksIEJveGVkVmFsdWUoZDIpKVxuICAgIHwgKEluZGV0KGQxKSwgSW5kZXQoZDIpKSA9PiBESEV4cC5mYXN0X2VxdWFsKGQxLCBkMilcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xufTtcblxub3BlbiBSZXN1bHQ7XG5cbm1vZHVsZSBFdmFsdWF0b3JFVk1vZGU6IHtcbiAgdHlwZSBzdGF0dXMgPVxuICAgIHwgQm94ZWRWYWx1ZVxuICAgIHwgSW5kZXRcbiAgICB8IFVuZXZhbDtcblxuICBpbmNsdWRlXG4gICAgRVZfTU9ERSB3aXRoXG4gICAgICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpIGFuZCB0eXBlIHJlc3VsdCA9IChzdGF0dXMsIERIRXhwLnQpO1xufSA9IHtcbiAgdHlwZSBzdGF0dXMgPVxuICAgIHwgQm94ZWRWYWx1ZVxuICAgIHwgSW5kZXRcbiAgICB8IFVuZXZhbDtcblxuICB0eXBlIHJlc3VsdCA9IChzdGF0dXMsIERIRXhwLnQpO1xuXG4gIHR5cGUgcmVxc3RhdGUgPVxuICAgIHwgQm94ZWRSZWFkeVxuICAgIHwgSW5kZXRSZWFkeVxuICAgIHwgSW5kZXRCbG9ja2VkO1xuXG4gIGxldCAoJiYpID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoSW5kZXRCbG9ja2VkLCBfKSA9PiBJbmRldEJsb2NrZWRcbiAgICB8IChfLCBJbmRldEJsb2NrZWQpID0+IEluZGV0QmxvY2tlZFxuICAgIHwgKEluZGV0UmVhZHksIF8pID0+IEluZGV0UmVhZHlcbiAgICB8IChfLCBJbmRldFJlYWR5KSA9PiBJbmRldFJlYWR5XG4gICAgfCAoQm94ZWRSZWFkeSwgQm94ZWRSZWFkeSkgPT4gQm94ZWRSZWFkeVxuICAgIH07XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAocmVxc3RhdGUsICdhKTtcblxuICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKHJlcXN0YXRlLCAnYSwgJ2IpOyAvLyBjdW11bGF0aXZlIHN0YXRlLCBjdW11bGF0aXZlIGFyZ3VtZW50cywgY3VtdWxhdGl2ZSAndW5kbydcblxuICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuXG4gIGxldCByZXFfdmFsdWUgPSAoZiwgXywgeCkgPT5cbiAgICBzd2l0Y2ggKGYoeCkpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRSZWFkeSwgeClcbiAgICB8IChJbmRldCwgeCkgPT4gKEluZGV0QmxvY2tlZCwgeClcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF92YWx1ZSA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV92YWx1ZShmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF92YWx1ZShmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbCA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgKEJveGVkVmFsdWUsIHgpID0+IChCb3hlZFJlYWR5LCB4KVxuICAgIHwgKEluZGV0LCB4KSA9PiAoSW5kZXRSZWFkeSwgeClcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF9maW5hbCA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV9maW5hbChmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF9maW5hbChmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbF9vcl92YWx1ZSA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgKEJveGVkVmFsdWUsIHgpID0+IChCb3hlZFJlYWR5LCAoeCwgdHJ1ZSkpXG4gICAgfCAoSW5kZXQsIHgpID0+IChJbmRldFJlYWR5LCAoeCwgZmFsc2UpKVxuICAgIHwgKFVuZXZhbCwgXykgPT4gZmFpbHdpdGgoXCJVbmV4cGVjdGVkIFVuZXZhbFwiKVxuICAgIH07XG5cbiAgbGV0IG90aGVyd2lzZSA9IChfLCBjKSA9PiAoQm94ZWRSZWFkeSwgKCksIGMpO1xuXG4gIGxldCAoYW5kLikgPSAoKHIxLCB4MSwgYzEpLCAocjIsIHgyKSkgPT4gKHIxICYmIHIyLCAoeDEsIHgyKSwgYzEoeDIpKTtcblxuICBsZXQgKGxldC4pID0gKChyLCB4LCBjKSwgcykgPT5cbiAgICBzd2l0Y2ggKHIsIHMoeCkpIHtcbiAgICB8IChCb3hlZFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiB0cnVlLCBffSkpID0+XG4gICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgIChCb3hlZFZhbHVlLCBleHByKTtcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiB0cnVlLCBffSkpID0+XG4gICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgIChJbmRldCwgZXhwcik7XG4gICAgfCAoQm94ZWRSZWFkeSwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBpc192YWx1ZTogZmFsc2UsIF99KSlcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiBmYWxzZSwgX30pKSA9PlxuICAgICAgc3RhdGVfdXBkYXRlKCk7XG4gICAgICAoVW5ldmFsLCBleHByKTtcbiAgICB8IChCb3hlZFJlYWR5LCBDb25zdHJ1Y3RvcikgPT4gKEJveGVkVmFsdWUsIGMpXG4gICAgfCAoSW5kZXRSZWFkeSwgQ29uc3RydWN0b3IpID0+IChJbmRldCwgYylcbiAgICB8IChJbmRldEJsb2NrZWQsIF8pID0+IChJbmRldCwgYylcbiAgICB8IChfLCBJbmRldCkgPT4gKEluZGV0LCBjKVxuICAgIH07XG59O1xubW9kdWxlIEV2YWwgPSBUcmFuc2l0aW9uKEV2YWx1YXRvckVWTW9kZSk7XG5cbmxldCByZWMgZXZhbHVhdGUgPSAoc3RhdGUsIGVudiwgZCkgPT4ge1xuICBsZXQgdSA9IEV2YWwudHJhbnNpdGlvbihldmFsdWF0ZSwgc3RhdGUsIGVudiwgZCk7XG4gIHN3aXRjaCAodSkge1xuICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRWYWx1ZSwgeClcbiAgfCAoSW5kZXQsIHgpID0+IChJbmRldCwgeClcbiAgfCAoVW5ldmFsLCB4KSA9PiBldmFsdWF0ZShzdGF0ZSwgZW52LCB4KVxuICB9O1xufTtcblxubGV0IGV2YWx1YXRlID0gKGVudiwge2QsIF99OiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpID0+IHtcbiAgbGV0IHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLmluaXQpO1xuICBsZXQgZW52ID0gQ2xvc3VyZUVudmlyb25tZW50Lm9mX2Vudmlyb25tZW50KGVudik7XG4gIGxldCByZXN1bHQgPSBldmFsdWF0ZShzdGF0ZSwgZW52LCBkKTtcbiAgbGV0IHJlc3VsdCA9XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiBCb3hlZFZhbHVlKHggfD4gREhFeHAucmVwYWlyX2lkcylcbiAgICB8IChJbmRldCwgeCkgPT4gSW5kZXQoeCB8PiBESEV4cC5yZXBhaXJfaWRzKVxuICAgIHwgKFVuZXZhbCwgeCkgPT4gSW5kZXQoeCB8PiBESEV4cC5yZXBhaXJfaWRzKVxuICAgIH07XG4gIChzdGF0ZV4sIHJlc3VsdCk7XG59O1xuIiwib3BlbiBVdGlsO1xuXG4vLyBpbnZhcmlhbnQ6IGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIG9wdGlvblxudHlwZSBwcmV0dHkgPSBsaXN0KFNlZ21lbnQudCk7XG5cbmxldCBwX2NvbmNhdCA9IChwcmV0dHkyLCBwcmV0dHkxKSA9PlxuICBMaXN0Lm1hcChwaWVjZTEgPT4gTGlzdC5tYXAocGllY2UyID0+IHBpZWNlMSBAIHBpZWNlMiwgcHJldHR5MiksIHByZXR0eTEpXG4gIHw+IExpc3QuZmxhdHRlbjtcbmxldCBwX29yID0gKHByZXR0eTIsIHByZXR0eTEpID0+IHByZXR0eTEgQCBwcmV0dHkyO1xubGV0IHBfb3JpZiA9IChjb25kLCBwcmV0dHkyLCBwcmV0dHkxKSA9PlxuICBpZiAoY29uZCkge1xuICAgIHByZXR0eTEgQCBwcmV0dHkyO1xuICB9IGVsc2Uge1xuICAgIHByZXR0eTI7XG4gIH07XG5sZXQgcF9qdXN0ID0gc2VnbWVudCA9PiBbc2VnbWVudF07XG5cbmxldCBwX2NvbmNhdCA9IChwcmV0dGllczogbGlzdChwcmV0dHkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChwX2NvbmNhdCwgW1tdXSwgcHJldHRpZXMpO1xuXG5sZXQgKGxldCspID0gKHByZXR0eSwgZikgPT4gTGlzdC5tYXAoZiwgcHJldHR5KTtcbmxldCAoYW5kKykgPSAocHJldHR5MSwgcHJldHR5MikgPT4gTGlzdFV0aWwuY3Jvc3MocHJldHR5MSwgcHJldHR5Mik7XG5cbmxldCAoIGxldCogKSA9IChwcmV0dHksIGYpID0+IExpc3QubWFwKGYsIHByZXR0eSkgfD4gTGlzdC5mbGF0dGVuO1xubGV0ICggYW5kKiApID0gKHByZXR0eTEsIHByZXR0eTIpID0+IExpc3RVdGlsLmNyb3NzKHByZXR0eTEsIHByZXR0eTIpO1xuXG5sZXQgcmVjIGFsbCA9XG4gIGZ1blxuICB8IFtdID0+IFtbXV1cbiAgfCBbeCwgLi4ueHNdID0+IHtcbiAgICAgIGxldCByZXN0ID0gYWxsKHhzKTtcbiAgICAgIExpc3QuZmxhdHRlbihMaXN0Lm1hcCh4ID0+IExpc3QubWFwKHJlc3QgPT4gW3gsIC4uLnJlc3RdLCByZXN0KSwgeCkpO1xuICAgIH07XG5cbmxldCBzZWxlY3Q6IHByZXR0eSA9PiBTZWdtZW50LnQgPVxuICBzZWcgPT5cbiAgICBMaXN0VXRpbC5taW5pbXVtKFxuICAgICAgcyA9PiB7XG4gICAgICAgIGxldCB1ID1cbiAgICAgICAgICBNZWFzdXJlZC53aWR0aF9jb3N0KHMsIDgwKSAqIDEwMCArIE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KHMpO1xuICAgICAgICB1O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICApXG4gICAgfD4gT3B0aW9uLmdldDtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gUHJldHR5U2VnbWVudDtcbm9wZW4gQmFzZTtcblxubGV0IHNob3VsZF9hZGRfc3BhY2UgPSAoczEsIHMyKSA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiKFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiW1wiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCIpXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIl1cIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiLFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCI7XCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIjpcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLmVuZHNfd2l0aChzMSwgfnN1ZmZpeD1cIiBcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiIFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiXFxuXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIlxcblwiKSA9PiBmYWxzZVxuICB8IF8gPT4gdHJ1ZVxuICB9O1xuXG5sZXQgdGV4dF90b19wcmV0dHkgPSAoaWQsIHNvcnQsIHN0cik6IHByZXR0eSA9PiB7XG4gIHBfanVzdChbXG4gICAgVGlsZSh7XG4gICAgICBpZCxcbiAgICAgIGxhYmVsOiBbc3RyXSxcbiAgICAgIG1vbGQ6IE1vbGQubWtfb3Aoc29ydCwgW10pLFxuICAgICAgc2hhcmRzOiBbMF0sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfSksXG4gIF0pO1xufTtcblxubGV0IG1rX2Zvcm0gPSAoZm9ybV9uYW1lOiBzdHJpbmcsIGlkLCBjaGlsZHJlbik6IFBpZWNlLnQgPT4ge1xuICBsZXQgZm9ybTogRm9ybS50ID0gRm9ybS5nZXQoZm9ybV9uYW1lKTtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGNoaWxkcmVuKSA9PSBMaXN0Lmxlbmd0aChmb3JtLm1vbGQuaW5fKSk7XG4gIC8vIEFkZCB3aGl0ZXNwYWNlc1xuICBsZXQgY2hpbGRyZW4gPVxuICAgIEFiYS5tYXBfYWJhcyhcbiAgICAgICgobCwgY2hpbGQsIHIpKSA9PiB7XG4gICAgICAgIGxldCBsc3BhY2UgPSBzaG91bGRfYWRkX3NwYWNlKGwsIGNoaWxkIHw+IFNlZ21lbnQuZmlyc3Rfc3RyaW5nKTtcbiAgICAgICAgbGV0IHJzcGFjZSA9IHNob3VsZF9hZGRfc3BhY2UoY2hpbGQgfD4gU2VnbWVudC5sYXN0X3N0cmluZywgcik7XG4gICAgICAgIChsc3BhY2UgPyBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19zcGFjZShJZC5taygpKSldIDogW10pXG4gICAgICAgIEAgKFxuICAgICAgICAgIHJzcGFjZSA/IGNoaWxkIEAgW1NlY29uZGFyeShTZWNvbmRhcnkubWtfc3BhY2UoSWQubWsoKSkpXSA6IGNoaWxkXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgQWJhLm1rKGZvcm0ubGFiZWwsIGNoaWxkcmVuKSxcbiAgICApXG4gICAgfD4gQWJhLmdldF9icztcbiAgVGlsZSh7XG4gICAgaWQsXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczogTGlzdC5pbml0KExpc3QubGVuZ3RoKGNoaWxkcmVuKSArIDEsIG4gPT4gbiksXG4gICAgY2hpbGRyZW4sXG4gIH0pO1xufTtcblxuLyogSEFDS1tNYXR0XTogU29tZXRpbWVzIHRlcm1zIHRoYXQgc2hvdWxkIGhhdmUgbXVsdGlwbGUgaWRzIHdvbid0IGJlY2F1c2VcbiAgIGV2YWx1YXRpb24gb25seSBldmVyIGdpdmVzIHRoZW0gb25lICovXG5sZXQgcGFkX2lkcyA9IChuOiBpbnQsIGlkczogbGlzdChJZC50KSk6IGxpc3QoSWQudCkgPT4ge1xuICBsZXQgbGVuID0gTGlzdC5sZW5ndGgoaWRzKTtcbiAgaWYgKGxlbiA8IG4pIHtcbiAgICBpZHMgQCBMaXN0LmluaXQobiAtIGxlbiwgXyA9PiBJZC5taygpKTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0VXRpbC5zcGxpdF9uKG4sIGlkcykgfD4gZnN0O1xuICB9O1xufTtcblxubGV0IChAKSA9IChzZWcxOiBTZWdtZW50LnQsIHNlZzI6IFNlZ21lbnQudCk6IFNlZ21lbnQudCA9PlxuICBzd2l0Y2ggKHNlZzEsIHNlZzIpIHtcbiAgfCAoW10sIF8pID0+IHNlZzJcbiAgfCAoXywgW10pID0+IHNlZzFcbiAgfCBfID0+XG4gICAgaWYgKHNob3VsZF9hZGRfc3BhY2UoXG4gICAgICAgICAgU2VnbWVudC5sYXN0X3N0cmluZyhzZWcxKSxcbiAgICAgICAgICBTZWdtZW50LmZpcnN0X3N0cmluZyhzZWcyKSxcbiAgICAgICAgKSkge1xuICAgICAgc2VnMSBAIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX3NwYWNlKElkLm1rKCkpKV0gQCBzZWcyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWcxIEAgc2VnMjtcbiAgICB9XG4gIH07XG5cbi8qIFdlIGFzc3VtZSB0aGF0IHBhcmVudGhlc2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIGFzIG5lY2Vzc2FyeSwgYW5kXG4gICAgICB0aGF0IHRoZSBleHByZXNzaW9uIGhhcyBubyBEeW5hbWljRXJyb3JIb2xlcywgQ2FzdHMsIG9yIEZhaWxlZENhc3RzXG4gICAqL1xubGV0IHJlYyBleHBfdG9fcHJldHR5ID0gKH5pbmxpbmUsIGV4cDogRXhwLnQpOiBwcmV0dHkgPT4ge1xuICBsZXQgZ28gPSAofmlubGluZT1pbmxpbmUpID0+IGV4cF90b19wcmV0dHkofmlubGluZSk7XG4gIHN3aXRjaCAoZXhwIHw+IEV4cC50ZXJtX29mKSB7XG4gIC8vIEFzc3VtZSB0aGVzZSBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgcGFyZW50aGVzaXplclxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBDYXN0KF8pXG4gIHwgRmFpbGVkQ2FzdChfKVxuICB8IENsb3N1cmUoXylcbiAgfCBGaWx0ZXIoXykgPT4gZmFpbHdpdGgoXCJwcmludGluZyB0aGVzZSBub3QgaW1wbGVtZW50ZWQgeWV0XCIpXG4gIC8vIE90aGVyIGNhc2VzXG4gIHwgSW52YWxpZCh4KSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIHgpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgcF9qdXN0KFtHcm91dCh7aWQsIHNoYXBlOiBDb252ZXh9KV0pO1xuICB8IEJvb2woYikgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBCb29sLnRvX3N0cmluZyhiKSlcbiAgfCBJbnQobikgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBJbnQudG9fc3RyaW5nKG4pKVxuICAvLyBUT0RPOiBkbyBmbG9hdHMgcHJpbnQgcmlnaHQ/XG4gIHwgRmxvYXQoZikgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIEZsb2F0LnRvX3N0cmluZyhmKSlcbiAgfCBTdHJpbmcocykgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCIpXG4gIHwgQ29uc3RydWN0b3IoYykgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBjKVxuICB8IExpc3RMaXQoW10pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCJbXVwiKVxuICB8IERlZmVycmFsKF8pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCJkZWZlcnJhbFwiKVxuICB8IExpc3RMaXQoW3gsIC4uLnhzXSkgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQqIHggPSBnbyh4KVxuICAgIGFuZCogeHMgPSB4cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpLFxuICAgICk7XG4gICAgbGV0IGZvcm0gPSAoeCwgeHMpID0+XG4gICAgICBta19mb3JtKFxuICAgICAgICBcImxpc3RfbGl0X2V4cFwiLFxuICAgICAgICBpZCxcbiAgICAgICAgW1xuICAgICAgICAgIHhcbiAgICAgICAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgICAgICAgIChpZCwgeCkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCB4LFxuICAgICAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICAgICAgICB4cyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApO1xuICAgIHBfanVzdChbZm9ybSh4LCB4cyldKVxuICAgIHw+IHBfb3JpZihcbiAgICAgICAgICFpbmxpbmUsXG4gICAgICAgICBwX2p1c3QoXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBsZXQgeCA9IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIHg7XG4gICAgICAgICAgICAgbGV0IHhzID1cbiAgICAgICAgICAgICAgIHhzXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcCh4ID0+XG4gICAgICAgICAgICAgICAgICAgIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIHhcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIHw+IExpc3RVdGlsLm1hcF9sYXN0X29ubHkoeCA9PlxuICAgICAgICAgICAgICAgICAgICB4IEAgW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIFtmb3JtKHgsIHhzKV07XG4gICAgICAgICAgIH0sXG4gICAgICAgICApLFxuICAgICAgICk7XG4gIHwgVmFyKHYpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgdilcbiAgfCBCaW5PcChvcCwgbCwgcikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGwgPSBnbyhsKVxuICAgIGFuZCsgciA9IGdvKHIpO1xuICAgIGxcbiAgICBAIFtcbiAgICAgIFRpbGUoe1xuICAgICAgICBpZCxcbiAgICAgICAgbGFiZWw6IFtPcGVyYXRvcnMuYmluX29wX3RvX3N0cmluZyhvcCldLFxuICAgICAgICBtb2xkOiBNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcCksIFNvcnQuRXhwLCBbXSksXG4gICAgICAgIHNoYXJkczogWzBdLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICB9KSxcbiAgICBdXG4gICAgQCByO1xuICB8IE11bHRpSG9sZShlcykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGVzID0gZXMgfD4gTGlzdC5tYXAoYW55X3RvX3ByZXR0eSh+aW5saW5lKSkgfD4gYWxsO1xuICAgIExpc3RVdGlsLmZsYXRfaW50ZXJzcGVyc2UoR3JvdXQoe2lkLCBzaGFwZTogQ29uY2F2ZX0pLCBlcyk7XG4gIHwgRnVuKHAsIGUsIF8sIF8pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gcGF0X3RvX3ByZXR0eSh+aW5saW5lLCBwKVxuICAgIGFuZCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwiZnVuX1wiLCBpZCwgW3BdKV0gQCBlO1xuICB8IFR5cEZ1bih0cCwgZSwgXykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIHRwID0gdHBhdF90b19wcmV0dHkofmlubGluZSwgdHApXG4gICAgYW5kKyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJ0eXBmdW5cIiwgaWQsIFt0cF0pXSBAIGU7XG4gIHwgVHVwbGUoW10pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCIoKVwiKVxuICB8IFR1cGxlKFtfXSkgPT4gZmFpbHdpdGgoXCJTaW5nbGV0b24gVHVwbGVzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFR1cGxlKFt4LCAuLi54c10pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0KyB4ID0gZ28oeClcbiAgICBhbmQrIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgaWRzID0gZXhwLmlkcyB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHhzKSk7XG4gICAgeFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX2V4cFwiLCBpZCwgW10pXSBAIHgsIGlkcywgeHMpLFxuICAgICAgKTtcbiAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBsZXQgZTIgPSBpbmxpbmUgPyBlMiA6IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIGUyO1xuICAgIFtta19mb3JtKFwibGV0X1wiLCBpZCwgW3AsIGUxXSldIEAgZTI7XG4gIHwgRml4RihwLCBlLCBfKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcImZpeFwiLCBpZCwgW3BdKV0gQCBlO1xuICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IHR5cF90b19wcmV0dHkofmlubGluZSwgdClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBsZXQgZSA9IGlubGluZSA/IGUgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlO1xuICAgIFtta19mb3JtKFwidHlhbGlhc1wiLCBpZCwgW3RwLCB0XSldIEAgZTtcbiAgfCBBcChGb3J3YXJkLCBlMSwgZTIpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgZTEgQCBbbWtfZm9ybShcImFwX2V4cFwiLCBpZCwgW2UyXSldO1xuICB8IEFwKFJldmVyc2UsIGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKVxuICAgIGFuZCsgb3AgPSB0ZXh0X3RvX3ByZXR0eShpZCwgU29ydC5FeHAsIFwifD5cIik7XG4gICAgZTEgQCBvcCBAIGUyO1xuICB8IFR5cEFwKGUsIHQpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSlcbiAgICBhbmQrIHRwID0gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KTtcbiAgICBlIEAgW21rX2Zvcm0oXCJhcF9leHBfdHlwXCIsIGlkLCBbdHBdKV07XG4gIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQrIGUgPSBnbyhlKVxuICAgIGFuZCsgZXMgPSBlcyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aChlcykpLFxuICAgICk7XG4gICAgZVxuICAgIEAgW1xuICAgICAgbWtfZm9ybShcbiAgICAgICAgXCJhcF9leHBcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICBMaXN0LmZsYXR0ZW4oXG4gICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgIChpZCwgZSkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCBlLFxuICAgICAgICAgICAgICBpZHMsXG4gICAgICAgICAgICAgIGVzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBdO1xuICB8IElmKGUxLCBlMiwgZTMpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMilcbiAgICBhbmQrIGUzID0gZ28oZTMpO1xuICAgIGxldCBlMiA9IGlubGluZSA/IGUyIDogW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldIEAgZTI7XG4gICAgbGV0IGUzID0gaW5saW5lID8gZTMgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMztcbiAgICBbbWtfZm9ybShcImlmX1wiLCBpZCwgW2UxLCBlMl0pXSBAIGUzO1xuICB8IFNlcShlMSwgZTIpID0+XG4gICAgLy8gVE9ETzogTWFrZSBuZXdsaW5lIG9wdGlvbmFsXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgbGV0IGUyID0gaW5saW5lID8gZTIgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMjtcbiAgICBlMSBAIFtta19mb3JtKFwiY2VsbC1qb2luXCIsIGlkLCBbXSldIEAgZTI7XG4gIHwgVGVzdChlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidGVzdFwiLCBpZCwgW2VdKV07XG4gIHwgUGFyZW5zKGUpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJwYXJlbnNfZXhwXCIsIGlkLCBbZV0pXTtcbiAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBlMSBAIFtta19mb3JtKFwiY29uc19leHBcIiwgaWQsIFtdKV0gQCBlMjtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBlMSBAIFtta19mb3JtKFwibGlzdF9jb25jYXRcIiwgaWQsIFtdKV0gQCBlMjtcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIGUpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJ1bnF1b3RlXCIsIGlkLCBbXSldIEAgZTtcbiAgfCBVbk9wKEJvb2woTm90KSwgZSkgPT5cbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcIm5vdFwiLCBpZCwgW10pXSBAIGU7XG4gIHwgVW5PcChJbnQoTWludXMpLCBlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidW5hcnlfbWludXNcIiwgaWQsIFtdKV0gQCBlO1xuICAvKiBUT0RPOiB0aGlzIGlzbid0IGFjdHVhbGx5IGNvcnJlY3QgYmVjYXVzZSB3ZSBjb3VsZCB0aGUgYnVpbHRpblxuICAgICBjb3VsZCBoYXZlIGJlZW4gb3ZlcnJpZGVuIGluIHRoaXMgc2NvcGU7IHdvcnRoIGZpeGluZyB3aGVuIHdlIGZpeFxuICAgICBjbG9zdXJlcy4gKi9cbiAgfCBCdWlsdGluRnVuKGYpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgZilcbiAgfCBNYXRjaChlLCBycykgPT5cbiAgICAvLyBUT0RPOiBBZGQgbmV3bGluZXNcbiAgICBsZXQrIGUgPSBnbyhlKVxuICAgIGFuZCsgcnM6IGxpc3QobGlzdCgoU2VnbWVudC50LCBTZWdtZW50LnQpKSkgPSB7XG4gICAgICByc1xuICAgICAgfD4gTGlzdC5tYXAoKChwLCBlKSkgPT4gKHBhdF90b19wcmV0dHkofmlubGluZSwgcCksIGdvKGUpKSlcbiAgICAgIHw+IExpc3QubWFwKCgoeCwgeSkpID0+IExpc3RVdGlsLmNyb3NzKHgsIHkpKVxuICAgICAgfD4gYWxsO1xuICAgIH07XG4gICAgbGV0IChpZCwgaWRzKSA9IChcbiAgICAgIGV4cC5pZHMgfD4gTGlzdC5oZCxcbiAgICAgIGV4cC5pZHMgfD4gTGlzdC50bCB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHJzKSksXG4gICAgKTtcbiAgICBbXG4gICAgICBta19mb3JtKFxuICAgICAgICBcImNhc2VcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICBlXG4gICAgICAgICAgQCAoXG4gICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgIChpZCwgKHAsIGUpKSA9PiBbbWtfZm9ybShcInJ1bGVcIiwgaWQsIFtwXSldIEAgZSxcbiAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICBycyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIF07XG4gIH07XG59XG5hbmQgcGF0X3RvX3ByZXR0eSA9ICh+aW5saW5lLCBwYXQ6IFBhdC50KTogcHJldHR5ID0+IHtcbiAgbGV0IGdvID0gcGF0X3RvX3ByZXR0eSh+aW5saW5lKTtcbiAgc3dpdGNoIChwYXQgfD4gUGF0LnRlcm1fb2YpIHtcbiAgfCBJbnZhbGlkKHQpID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgdClcbiAgfCBFbXB0eUhvbGUgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgV2lsZCA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiX1wiKVxuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIHYpXG4gIHwgSW50KG4pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgSW50LnRvX3N0cmluZyhuKSlcbiAgfCBGbG9hdChmKSA9PlxuICAgIHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgRmxvYXQudG9fc3RyaW5nKGYpKVxuICB8IEJvb2woYikgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBCb29sLnRvX3N0cmluZyhiKSlcbiAgfCBTdHJpbmcocykgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCIpXG4gIHwgQ29uc3RydWN0b3IoYykgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBjKVxuICB8IExpc3RMaXQoW10pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgXCJbXVwiKVxuICB8IExpc3RMaXQoW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQqIHggPSBnbyh4KVxuICAgIGFuZCogeHMgPSB4cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBwYXQuaWRzIHw+IExpc3QuaGQsXG4gICAgICBwYXQuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpLFxuICAgICk7XG4gICAgcF9qdXN0KFtcbiAgICAgIG1rX2Zvcm0oXG4gICAgICAgIFwibGlzdF9saXRfcGF0XCIsXG4gICAgICAgIGlkLFxuICAgICAgICBbXG4gICAgICAgICAgeFxuICAgICAgICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgICAgKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX3BhdFwiLCBpZCwgW10pXSBAIHgsXG4gICAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICAgIHhzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgXSk7XG4gIHwgQ29ucyhwMSwgcDIpID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwMSA9IGdvKHAxKVxuICAgIGFuZCsgcDIgPSBnbyhwMik7XG4gICAgcDEgQCBbbWtfZm9ybShcImNvbnNfcGF0XCIsIGlkLCBbXSldIEAgcDI7XG4gIHwgVHVwbGUoW10pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgXCIoKVwiKVxuICB8IFR1cGxlKFtfXSkgPT4gZmFpbHdpdGgoXCJTaW5nbGV0b24gVHVwbGVzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFR1cGxlKFt4LCAuLi54c10pID0+XG4gICAgbGV0KyB4ID0gZ28oeClcbiAgICBhbmQrIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgaWRzID0gcGF0LmlkcyB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHhzKSk7XG4gICAgeFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX3BhdFwiLCBpZCwgW10pXSBAIHgsIGlkcywgeHMpLFxuICAgICAgKTtcbiAgfCBQYXJlbnMocCkgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIHAgPSBnbyhwKTtcbiAgICBbbWtfZm9ybShcInBhcmVuc19wYXRcIiwgaWQsIFtwXSldO1xuICB8IE11bHRpSG9sZShlcykgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIGVzID0gZXMgfD4gTGlzdC5tYXAoYW55X3RvX3ByZXR0eSh+aW5saW5lKSkgfD4gYWxsO1xuICAgIExpc3RVdGlsLmZsYXRfaW50ZXJzcGVyc2UoR3JvdXQoe2lkLCBzaGFwZTogQ29uY2F2ZX0pLCBlcyk7XG4gIHwgQXAocDEsIHAyKSA9PlxuICAgIGxldCBpZCA9IHBhdCB8PiBQYXQucmVwX2lkO1xuICAgIGxldCsgcDEgPSBnbyhwMSlcbiAgICBhbmQrIHAyID0gZ28ocDIpO1xuICAgIHAxIEAgW21rX2Zvcm0oXCJhcF9wYXRcIiwgaWQsIFtwMl0pXTtcbiAgfCBDYXN0KHAsIHQsIF8pID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gZ28ocClcbiAgICBhbmQrIHQgPSB0eXBfdG9fcHJldHR5KH5pbmxpbmUsIHQpO1xuICAgIHAgQCBbbWtfZm9ybShcInR5cGVhbm5cIiwgaWQsIFtdKV0gQCB0O1xuICB9O1xufVxuYW5kIHR5cF90b19wcmV0dHkgPSAofmlubGluZSwgdHlwOiBUeXAudCk6IHByZXR0eSA9PiB7XG4gIGxldCBnbyA9IHR5cF90b19wcmV0dHkofmlubGluZSk7XG4gIGxldCBnb19jb25zdHJ1Y3RvcjogQ29uc3RydWN0b3JNYXAudmFyaWFudChUeXAudCkgPT4gcHJldHR5ID1cbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoYywgaWRzLCBOb25lKSA9PiB0ZXh0X3RvX3ByZXR0eShMaXN0LmhkKGlkcyksIFNvcnQuVHlwLCBjKVxuICAgIHwgVmFyaWFudChjLCBpZHMsIFNvbWUoeCkpID0+IHtcbiAgICAgICAgbGV0KyBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgdGV4dF90b19wcmV0dHkoTGlzdC5oZChMaXN0LnRsKGlkcykpLCBTb3J0LlR5cCwgYyk7XG4gICAgICAgIGNvbnN0cnVjdG9yIEAgW21rX2Zvcm0oXCJhcF90eXBcIiwgTGlzdC5oZChpZHMpLCBnbyh4KSldO1xuICAgICAgfVxuICAgIHwgQmFkRW50cnkoeCkgPT4gZ28oeCk7XG4gIHN3aXRjaCAodHlwIHw+IFR5cC50ZXJtX29mKSB7XG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQocykpKSA9PlxuICAgIHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgcylcbiAgfCBVbmtub3duKEludGVybmFsKVxuICB8IFVua25vd24oU3luU3dpdGNoKVxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIHBfanVzdChbR3JvdXQoe2lkLCBzaGFwZTogQ29udmV4fSldKTtcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKGVzKSkpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyBlcyA9IGVzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgZXMpO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIHYpXG4gIHwgSW50ID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJJbnRcIilcbiAgfCBGbG9hdCA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIFwiRmxvYXRcIilcbiAgfCBCb29sID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJCb29sXCIpXG4gIHwgU3RyaW5nID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJTdHJpbmdcIilcbiAgfCBMaXN0KHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0ID0gZ28odCk7XG4gICAgW21rX2Zvcm0oXCJsaXN0X3R5cFwiLCBpZCwgW3RdKV07XG4gIHwgUHJvZChbXSkgPT4gdGV4dF90b19wcmV0dHkodHlwIHw+IFR5cC5yZXBfaWQsIFNvcnQuVHlwLCBcIigpXCIpXG4gIHwgUHJvZChbX10pID0+IGZhaWx3aXRoKFwiU2luZ2xldG9uIFByb2RzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFByb2QoW3QsIC4uLnRzXSkgPT5cbiAgICBsZXQrIHQgPSBnbyh0KVxuICAgIGFuZCsgdHMgPSB0cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIHRcbiAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgIChpZCwgdCkgPT4gW21rX2Zvcm0oXCJjb21tYV90eXBcIiwgaWQsIFtdKV0gQCB0LFxuICAgICAgICAgIHR5cC5pZHMgfD4gcGFkX2lkcyh0cyB8PiBMaXN0Lmxlbmd0aCksXG4gICAgICAgICAgdHMsXG4gICAgICAgICksXG4gICAgICApO1xuICB8IFBhcmVucyh0KSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwicGFyZW5zX3R5cFwiLCBpZCwgW3RdKV07XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdDEgPSBnbyh0MSlcbiAgICBhbmQrIHQyID0gZ28odDIpO1xuICAgIHQxIEAgW21rX2Zvcm0oXCJhcF90eXBcIiwgaWQsIFt0Ml0pXTtcbiAgfCBSZWModHAsIHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwicmVjXCIsIGlkLCBbdHBdKV0gQCB0O1xuICB8IEZvcmFsbCh0cCwgdCkgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBsZXQrIHRwID0gdHBhdF90b19wcmV0dHkofmlubGluZSwgdHApXG4gICAgYW5kKyB0ID0gZ28odCk7XG4gICAgW21rX2Zvcm0oXCJmb3JhbGxcIiwgaWQsIFt0cF0pXSBAIHQ7XG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdDEgPSBnbyh0MSlcbiAgICBhbmQrIHQyID0gZ28odDIpO1xuICAgIHQxIEAgW21rX2Zvcm0oXCJhcnJvd1wiLCBpZCwgW10pXSBAIHQyO1xuICB8IFN1bShbXSkgPT4gZmFpbHdpdGgoXCJFbXB0eSBTdW1zIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFN1bShbdF0pID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0ID0gZ29fY29uc3RydWN0b3IodCk7XG4gICAgW21rX2Zvcm0oXCJ0eXBfc3VtX3NpbmdsZVwiLCBpZCwgW10pXSBAIHQ7XG4gIHwgU3VtKFt0LCAuLi50c10pID0+XG4gICAgbGV0KyB0ID0gZ29fY29uc3RydWN0b3IodClcbiAgICBhbmQrIHRzID0gdHMgfD4gTGlzdC5tYXAoZ29fY29uc3RydWN0b3IpIHw+IGFsbDtcbiAgICB0XG4gICAgQCBMaXN0LmZsYXR0ZW4oXG4gICAgICAgIExpc3QubWFwMihcbiAgICAgICAgICAoaWQsIHQpID0+IFtta19mb3JtKFwidHlwX3BsdXNcIiwgaWQsIFtdKV0gQCB0LFxuICAgICAgICAgIHR5cC5pZHMgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh0cykpLFxuICAgICAgICAgIHRzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfTtcbn1cbmFuZCB0cGF0X3RvX3ByZXR0eSA9ICh+aW5saW5lLCB0cGF0OiBUUGF0LnQpOiBwcmV0dHkgPT4ge1xuICBzd2l0Y2ggKHRwYXQgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICB8IEludmFsaWQodCkgPT4gdGV4dF90b19wcmV0dHkodHBhdCB8PiBUUGF0LnJlcF9pZCwgU29ydC5UeXAsIHQpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gdHBhdCB8PiBUUGF0LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgTXVsdGlIb2xlKHhzKSA9PlxuICAgIGxldCBpZCA9IHRwYXQgfD4gVFBhdC5yZXBfaWQ7XG4gICAgbGV0KyB4cyA9IHhzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgeHMpO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eSh0cGF0IHw+IFRQYXQucmVwX2lkLCBTb3J0LlR5cCwgdilcbiAgfTtcbn1cbmFuZCBhbnlfdG9fcHJldHR5ID0gKH5pbmxpbmUsIGFueTogQW55LnQpOiBwcmV0dHkgPT4ge1xuICBzd2l0Y2ggKGFueSkge1xuICB8IEV4cChlKSA9PiBleHBfdG9fcHJldHR5KH5pbmxpbmUsIGUpXG4gIHwgUGF0KHApID0+IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgfCBUeXAodCkgPT4gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KVxuICB8IFRQYXQodHApID0+IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICB8IEFueShfKVxuICB8IE51bChfKVxuICB8IFJ1bChfKSA9PlxuICAgIC8vVE9ETzogcHJpbnQgb3V0IGludmFsaWQgcnVsZXMgcHJvcGVybHlcbiAgICBsZXQgaWQgPSBhbnkgfD4gQW55LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIH07XG59O1xuXG4vLyBVc2UgUHJlY2VkZW5jZS5yZSB0byB3b3JrIG91dCB3aGVyZSB5b3VyIGNvbnN0cnVjdCBnb2VzIGhlcmUuXG5sZXQgcmVjIGV4dGVybmFsX3ByZWNlZGVuY2UgPSAoZXhwOiBFeHAudCk6IFByZWNlZGVuY2UudCA9PiB7XG4gIHN3aXRjaCAoRXhwLnRlcm1fb2YoZXhwKSkge1xuICAvLyBGb3JtcyB3aGljaCB3ZSBhcmUgYWJvdXQgdG8gc3RyaXAsIHNvIHdlIGp1c3QgbG9vayBpbnNpZGVcbiAgfCBDbG9zdXJlKF8sIHgpXG4gIHwgRHluYW1pY0Vycm9ySG9sZSh4LCBfKSA9PiBleHRlcm5hbF9wcmVjZWRlbmNlKHgpXG5cbiAgLy8gQmluYXJ5IG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgaW4gUHJlY2VkZW5jZS5yZVxuICB8IEJpbk9wKG9wLCBfLCBfKSA9PiBQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcClcblxuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBuZXZlciBuZWVkIHBhcmVudGhlc2VzIGFyb3VuZCB0aGVtXG4gIHwgVmFyKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IEVtcHR5SG9sZVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBCdWlsdGluRnVuKF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgUGFyZW5zKF8pXG4gIHwgTGlzdExpdChfKVxuICB8IFRlc3QoXylcbiAgfCBNYXRjaChfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBfKSA9PiBQcmVjZWRlbmNlLnVucXVvdGVcbiAgfCBDYXN0KF8pXG4gIHwgRmFpbGVkQ2FzdChfKSA9PiBQcmVjZWRlbmNlLmNhc3RcbiAgfCBBcChGb3J3YXJkLCBfLCBfKVxuICB8IERlZmVycmVkQXAoXylcbiAgfCBUeXBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgVW5PcChCb29sKE5vdCksIF8pID0+IFByZWNlZGVuY2Uubm90X1xuICB8IFVuT3AoSW50KE1pbnVzKSwgXykgPT4gUHJlY2VkZW5jZS5uZWdcbiAgfCBDb25zKF8pID0+IFByZWNlZGVuY2UuY29uc1xuICB8IEFwKFJldmVyc2UsIF8sIF8pID0+IFByZWNlZGVuY2UuZXFzXG4gIHwgTGlzdENvbmNhdChfKSA9PiBQcmVjZWRlbmNlLmNvbmNhdFxuICB8IElmKF8pID0+IFByZWNlZGVuY2UuaWZfXG4gIHwgVHlwRnVuKF8pXG4gIHwgRnVuKF8pXG4gIHwgRml4RihfKSA9PiBQcmVjZWRlbmNlLmZ1bl9cbiAgfCBUdXBsZShfKSA9PiBQcmVjZWRlbmNlLnByb2RcbiAgfCBTZXEoXykgPT4gUHJlY2VkZW5jZS5zZW1pXG5cbiAgLy8gVG9wLWxldmVsIHRoaW5nc1xuICB8IEZpbHRlcihfKVxuICB8IFR5QWxpYXMoXylcbiAgfCBMZXQoXykgPT4gUHJlY2VkZW5jZS5sZXRfXG5cbiAgLy8gTWF0dDogSSB0aGluayBtdWx0aWhvbGVzIGFyZSBtaW4gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBg4p+pP+KfqGBzXG4gIHwgTXVsdGlIb2xlKF8pID0+IFByZWNlZGVuY2UubWluXG4gIH07XG59O1xuXG5sZXQgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQgPSAoZHA6IFBhdC50KSA9PlxuICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YoZHApKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIG5ldmVyIG5lZWQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZW1cbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgSW52YWxpZChfKVxuICB8IFZhcihfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgTGlzdExpdChfKVxuICB8IFBhcmVucyhfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgQ29ucyhfKSA9PiBQcmVjZWRlbmNlLmNvbnNcbiAgfCBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgQ2FzdChfKSA9PiBQcmVjZWRlbmNlLmFublxuICB8IFR1cGxlKF8pID0+IFByZWNlZGVuY2UucHJvZFxuXG4gIC8vIE1hdHQ6IEkgdGhpbmsgbXVsdGlob2xlcyBhcmUgbWluIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgYOKfqT/in6hgc1xuICB8IE11bHRpSG9sZShfKSA9PiBQcmVjZWRlbmNlLm1pblxuICB9O1xuXG5sZXQgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCA9ICh0cDogVHlwLnQpID0+XG4gIHN3aXRjaCAoVHlwLnRlcm1fb2YodHApKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIG5ldmVyIG5lZWQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZW1cbiAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpXG4gIHwgVW5rbm93bihJbnRlcm5hbClcbiAgfCBVbmtub3duKFN5blN3aXRjaClcbiAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgfCBWYXIoXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmcgPT4gUHJlY2VkZW5jZS5tYXhcblxuICAvLyBTYW1lIGdvZXMgZm9yIGZvcm1zIHdoaWNoIGFyZSBhbHJlYWR5IHN1cnJvdW5kZWRcbiAgfCBQYXJlbnMoXylcbiAgfCBMaXN0KF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBQcm9kKF8pID0+IFByZWNlZGVuY2UucHJvZFxuICB8IEFwKF8pID0+IFByZWNlZGVuY2UuYXBcbiAgfCBBcnJvdyhfLCBfKSA9PiBQcmVjZWRlbmNlLnBvd2VyXG4gIHwgU3VtKF8pID0+IFByZWNlZGVuY2UucGx1c1xuICB8IFJlYyhfLCBfKSA9PiBQcmVjZWRlbmNlLmxldF9cbiAgfCBGb3JhbGwoXywgXykgPT4gUHJlY2VkZW5jZS5sZXRfXG5cbiAgLy8gTWF0dDogSSB0aGluayBtdWx0aWhvbGVzIGFyZSBtaW4gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBg4p+pP+KfqGBzXG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShfKSkpID0+IFByZWNlZGVuY2UubWluXG4gIH07XG5cbmxldCBwYXJlbl9hdCA9IChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIGV4cDogRXhwLnQpOiBFeHAudCA9PlxuICBleHRlcm5hbF9wcmVjZWRlbmNlKGV4cCkgPj0gaW50ZXJuYWxfcHJlY2VkZW5jZVxuICAgID8gRXhwLmZyZXNoKFBhcmVucyhleHApKSA6IGV4cDtcblxubGV0IHBhcmVuX2Fzc29jX2F0ID0gKGludGVybmFsX3ByZWNlZGVuY2U6IFByZWNlZGVuY2UudCwgZXhwOiBFeHAudCk6IEV4cC50ID0+XG4gIGV4dGVybmFsX3ByZWNlZGVuY2UoZXhwKSA+IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IEV4cC5mcmVzaChQYXJlbnMoZXhwKSkgOiBleHA7XG5cbmxldCBwYXJlbl9wYXRfYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBwYXQ6IFBhdC50KTogUGF0LnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQocGF0KSA+PSBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBQYXQuZnJlc2goUGFyZW5zKHBhdCkpIDogcGF0O1xuXG5sZXQgcGFyZW5fcGF0X2Fzc29jX2F0ID1cbiAgICAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBwYXQ6IFBhdC50KTogUGF0LnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQocGF0KSA+IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IFBhdC5mcmVzaChQYXJlbnMocGF0KSkgOiBwYXQ7XG5cbmxldCBwYXJlbl90eXBfYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCB0eXA6IFR5cC50KTogVHlwLnQgPT5cbiAgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCh0eXApID49IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IFR5cC5mcmVzaChQYXJlbnModHlwKSkgOiB0eXA7XG5cbmxldCBwYXJlbl90eXBfYXNzb2NfYXQgPVxuICAgIChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIHR5cDogVHlwLnQpOiBUeXAudCA9PlxuICBleHRlcmFsX3ByZWNlZGVuY2VfdHlwKHR5cCkgPiBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBUeXAuZnJlc2goUGFyZW5zKHR5cCkpIDogdHlwO1xuXG5sZXQgcmVjIHBhcmVudGhlc2l6ZSA9IChleHA6IEV4cC50KTogRXhwLnQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBFeHAudW53cmFwKGV4cCk7XG4gIHN3aXRjaCAodGVybSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBkb250JyBjaGFuZ2VcbiAgfCBWYXIoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gZXhwXG5cbiAgLy8gRm9ybXMgdGhhdCBjdXJyZW50bHkgbmVlZCB0byBzdHJpcHBlZCBiZWZvcmUgb3V0dXR0aW5nXG4gIHwgQ2xvc3VyZShfLCB4KVxuICB8IER5bmFtaWNFcnJvckhvbGUoeCwgXylcbiAgfCBUdXBsZShbeF0pXG4gIHwgRmlsdGVyKF8sIHgpXG4gIHwgQ2FzdCh4LCBfLCBfKVxuICB8IEZhaWxlZENhc3QoeCwgXywgXykgPT4geCB8PiBwYXJlbnRoZXNpemVcblxuICAvLyBPdGhlciBmb3Jtc1xuICB8IEZ1bihwLCBlLCBjLCBuKSA9PlxuICAgIEZ1bihcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLFxuICAgICAgYywgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggY2xvc3VyZVxuICAgICAgbixcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHlwRnVuKHRwLCBlLCBuKSA9PlxuICAgIFR5cEZ1bih0cCwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuZnVuXyksIG4pXG4gICAgfD4gcmV3cmFwXG4gIHwgVHVwbGUoZXMpID0+XG4gICAgVHVwbGUoXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0TGl0KGVzKSA9PlxuICAgIExpc3RMaXQoXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgIExldChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBGaXhGKHAsIGUsIGMpID0+XG4gICAgRml4RihcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLFxuICAgICAgYyAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBjbG9zdXJlXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgVHlBbGlhcyhcbiAgICAgIHRwLFxuICAgICAgdCwgLy8gVE9ETzogVHlwZXNcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBBcChGb3J3YXJkLCBlMSwgZTIpID0+XG4gICAgQXAoXG4gICAgICBGb3J3YXJkLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmFwKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBBcChSZXZlcnNlLCBlMSwgZTIpID0+XG4gICAgQXAoXG4gICAgICBSZXZlcnNlLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmVxcyksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UuZXFzKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHlwQXAoZSwgdHApID0+XG4gICAgVHlwQXAoXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHRwKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBEZWZlcnJlZEFwKGUsIGVzKSA9PlxuICAgIERlZmVycmVkQXAoXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBJZihlMSwgZTIsIGUzKSA9PlxuICAgIElmKFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMykgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5pZl8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBTZXEoZTEsIGUyKSA9PlxuICAgIFNlcShcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5zZW1pKSwgLy8gdGVtcHRpbmcgdG8gbWFrZSB0aGlzIG9uZSBhc3NvYyB0b29cbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5zZW1pKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVGVzdChlKSA9PiBUZXN0KHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICAvLyB8IEZpbHRlcihmLCBlKSA9PlxuICAvLyAgIEZpbHRlcihcbiAgLy8gICAgIGYsIC8vIFRPRE86IEZpbHRlcnNcbiAgLy8gICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gIC8vICAgKVxuICAvLyAgIHw+IHJld3JhcFxuICB8IFBhcmVucyhlKSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBDb25zKGUxLCBlMikgPT5cbiAgICBDb25zKFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBMaXN0Q29uY2F0KFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmNvbmNhdCksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuY29uY2F0KSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBlKSA9PlxuICAgIFVuT3AoTWV0YShVbnF1b3RlKSwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UudW5xdW90ZSkpXG4gICAgfD4gcmV3cmFwXG4gIHwgVW5PcChCb29sKE5vdCksIGUpID0+XG4gICAgVW5PcChCb29sKE5vdCksIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm5vdF8pKSB8PiByZXdyYXBcbiAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgVW5PcChJbnQoTWludXMpLCBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5uZWcpKSB8PiByZXdyYXBcbiAgfCBCaW5PcChvcCwgZTEsIGUyKSA9PlxuICAgIEJpbk9wKFxuICAgICAgb3AsXG4gICAgICBwYXJlbnRoZXNpemUoZTEpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2Uub2ZfYmluX29wKG9wKSksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2Uub2ZfYmluX29wKG9wKSksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IE1hdGNoKGUsIHJzKSA9PlxuICAgIE1hdGNoKFxuICAgICAgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHJzXG4gICAgICB8PiBMaXN0Lm1hcCgoKHAsIGUpKSA9PlxuICAgICAgICAgICAoXG4gICAgICAgICAgICAgcGFyZW50aGVzaXplX3BhdChwKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgICAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNhc2VfKSxcbiAgICAgICAgICAgKVxuICAgICAgICAgKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTXVsdGlIb2xlKF8pID0+IGV4cCAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBtdWx0aWhvbGVzXG4gIH07XG59XG5hbmQgcGFyZW50aGVzaXplX3BhdCA9IChwYXQ6IFBhdC50KTogUGF0LnQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBQYXQudW53cmFwKHBhdCk7XG4gIHN3aXRjaCAodGVybSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBkb250JyBjaGFuZ2VcbiAgfCBWYXIoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gcGF0XG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBXaWxkID0+IHBhdFxuICB8IFBhcmVucyhwKSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICB8IENvbnMocDEsIHAyKSA9PlxuICAgIENvbnMoXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHAxKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5jb25zKSxcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocDIpIHw+IHBhcmVuX3BhdF9hc3NvY19hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBUdXBsZShwcykgPT5cbiAgICBUdXBsZShcbiAgICAgIHBzXG4gICAgICB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemVfcGF0KVxuICAgICAgfD4gTGlzdC5tYXAocGFyZW5fcGF0X2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIExpc3RMaXQoXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3BhdClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAocDEsIHAyKSA9PlxuICAgIEFwKFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMSkgfD4gcGFyZW5fcGF0X2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMikgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTXVsdGlIb2xlKF8pID0+IHBhdCAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBtdWx0aWhvbGVzXG4gIHwgQ2FzdChwLCB0MSwgdDIpID0+XG4gICAgQ2FzdChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2Fzc29jX2F0KFByZWNlZGVuY2UuYW5uKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1heCksIC8vIEhhY2tbTWF0dF06IGFsd2F5cyBhZGQgcGFyZW5zIHRvIGdldCB0aGUgYXJyb3dzIHJpZ2h0XG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHQyKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5tYXgpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfTtcbn1cblxuYW5kIHBhcmVudGhlc2l6ZV90eXAgPSAodHlwOiBUeXAudCk6IFR5cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gVHlwLnVud3JhcCh0eXApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgLy8gSW5kaXZpc2libGUgZm9ybXMgZG9udCcgY2hhbmdlXG4gIHwgVmFyKF8pXG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKVxuICB8IFVua25vd24oSW50ZXJuYWwpXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IHR5cFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgUGFyZW5zKHQpID0+XG4gICAgUGFyZW5zKHBhcmVudGhlc2l6ZV90eXAodCkgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSkgfD4gcmV3cmFwXG4gIHwgTGlzdCh0KSA9PlxuICAgIExpc3QocGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBQcm9kKHRzKSA9PlxuICAgIFByb2QoXG4gICAgICB0c1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3R5cClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIEFwKFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MSkgfD4gcGFyZW5fdHlwX2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MikgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgUmVjKHRwLCB0KSA9PlxuICAgIFJlYyh0cCwgcGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXNzb2NfYXQoUHJlY2VkZW5jZS5sZXRfKSlcbiAgICB8PiByZXdyYXBcbiAgfCBGb3JhbGwodHAsIHQpID0+XG4gICAgRm9yYWxsKHRwLCBwYXJlbnRoZXNpemVfdHlwKHQpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pKVxuICAgIHw+IHJld3JhcFxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBBcnJvdyhcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLnBvd2VyKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDIpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLnBvd2VyKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgU3VtKHRzKSA9PlxuICAgIFN1bShcbiAgICAgIENvbnN0cnVjdG9yTWFwLm1hcChcbiAgICAgICAgdHMgPT5cbiAgICAgICAgICB0c1xuICAgICAgICAgIHw+IE9wdGlvbi5tYXAocGFyZW50aGVzaXplX3R5cClcbiAgICAgICAgICB8PiBPcHRpb24ubWFwKHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1pbikpLFxuICAgICAgICB0cyxcbiAgICAgICksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUoXykpKSA9PiB0eXAgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggbXVsdGlob2xlc1xuICB9O1xufTtcblxubGV0IGV4cF90b19lZGl0b3IgPSAofmlubGluZSwgZXhwOiBFeHAudCk6IEVkaXRvci50ID0+IHtcbiAgbGV0IGV4cCA9IHBhcmVudGhlc2l6ZShleHApO1xuICBsZXQgcCA9IGV4cF90b19wcmV0dHkofmlubGluZSwgZXhwKTtcbiAgbGV0IHNlZyA9IHAgfD4gUHJldHR5U2VnbWVudC5zZWxlY3Q7XG4gIEVkaXRvci5pbml0KH5yZWFkX29ubHk9dHJ1ZSwgWmlwcGVyLnVuemlwKHNlZykpO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gWmlwcGVyO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxudHlwZSByZWxhdGlvbiA9XG4gIHwgUGFyZW50XG4gIHwgU2libGluZztcblxubGV0IHBpZWNlJyA9XG4gICAgKH5ub193czogYm9vbCwgfmlnbjogUGllY2UudCA9PiBib29sLCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHo6IFppcHBlci50KVxuICAgIDogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCwgcmVsYXRpb24pKSA9PiB7XG4gIGxldCBzaWJzID1cbiAgICB0cmltX3NlY29uZGFyeVxuICAgICAgPyBzaWJzX3dpdGhfc2VsKHopIHw+IFNpYmxpbmdzLnRyaW1fc2Vjb25kYXJ5IDogc2lic193aXRoX3NlbCh6KTtcbiAgLyogUmV0dXJucyB0aGUgcGllY2UgY3VycmVudGx5IGluZGljYXRlZCAoaWYgYW55KSBhbmQgd2hpY2ggc2lkZSBvZlxuICAgICB0aGF0IHBpZWNlIHRoZSBjYXJldCBpcyBvbi4gV2UgZmF2b3IgaW5kaWNhdGluZyB0aGUgcGllY2UgdG8gdGhlXG4gICAgIChSKWlnaHQsIGJ1dCBtYXkgZW5kIHVwIGluZGljYXRpbmcgdGhlIChQKWFyZW50IG9yIHRoZSAoTCllZnQuXG4gICAgIFdlIGRvbid0IGluZGljYXRlIHNlY29uZGFyeSB0aWxlcy4gVGhpcyBmdW5jdGlvbiBpZ25vcmVzIHdoZXRoZXJcbiAgICAgb3Igbm90IHRoZXJlIGlzIGEgc2VsZWN0aW9uIHNvIHRoaXMgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBjYXJldFxuICAgICBkaXJlY3Rpb24sIGJ1dCB0aGUgY2FsbGVyIHNob3VsZG4ndCBpbmRpY2F0ZSBpZiB0aGVyZSdzIGEgc2VsZWN0aW9uICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnMpLCBwYXJlbnQoeikpIHtcbiAgLyogTm9uLWVtcHR5IHNlbGVjdGlvbiA9PiBubyBpbmRpY2F0aW9uICovXG4gIC8vfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBOb25lXG4gIC8qIEVtcHR5IHN5bnRheCA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBOb25lKSwgTm9uZSkgPT4gTm9uZVxuICAvKiBMIG5vdCBzZWNvbmRhcnksIFIgaXMgc2Vjb25kYXJ5ID0+IGluZGljYXRlIEwgKi9cbiAgfCAoKFNvbWUobCksIFNvbWUocikpLCBfKSB3aGVuICFpZ24obCkgJiYgaWduKHIpID0+XG4gICAgU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIEwgYW5kIFIgYXJlIHNlY29uZGFyeXMgPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoU29tZShsKSwgU29tZShyKSksIF8pIHdoZW4gaWduKGwpICYmIGlnbihyKSA9PlxuICAgIG5vX3dzID8gTm9uZSA6IFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBBdCByaWdodCBlbmQgb2Ygc3ludGF4IGFuZCBMIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChTb21lKGwpLCBOb25lKSwgTm9uZSkgd2hlbiBpZ24obCkgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogQXQgbGVmdCBlbmQgb2Ygc3ludGF4IGFuZCBSIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgTm9uZSkgd2hlbiBpZ24ocikgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIEwgYW5kIFIgaXMgYSBzZWNvbmRhcnkgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgU29tZShwYXJlbnQpKSB3aGVuIGlnbihyKSA9PlxuICAgIFNvbWUoKHBhcmVudCwgTGVmdCwgUGFyZW50KSlcbiAgLyogTCBpcyBub3Qgc2Vjb25kYXJ5IGFuZCBjYXJldCBpcyBvdXRlciA9PiBpbmRpY2F0ZSBMICovXG4gIHwgKChTb21lKGwpLCBfKSwgXykgd2hlbiAhaWduKGwpICYmIHouY2FyZXQgPT0gT3V0ZXIgPT5cbiAgICBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogTm8gTCwgc29tZSBQLCBhbmQgY2FyZXQgaXMgb3V0ZXIgPT4gaW5kaWNhdGUgUiAqL1xuICB8ICgoTm9uZSwgXyksIFNvbWUocGFyZW50KSkgd2hlbiB6LmNhcmV0ID09IE91dGVyID0+XG4gICAgU29tZSgocGFyZW50LCBMZWZ0LCBQYXJlbnQpKVxuICAvKiBSIGlzIG5vdCBzZWNvbmRhcnksIGVpdGhlciBubyBMIG9yIEwgaXMgc2Vjb25kYXJ5IG9yIGNhcmV0IGlzIGlubmVyID0+IGluZGljYXRlIFIgKi9cbiAgfCAoKF8sIFNvbWUocikpLCBfKSA9PiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIFIgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChfLCBOb25lKSwgU29tZShwYXJlbnQpKSA9PiBTb21lKChwYXJlbnQsIFJpZ2h0LCBQYXJlbnQpKVxuICAvKiBUaGVyZSBpcyBhbiBMIGJ1dCBubyBSIGFuZCBubyBQID0+IGluZGljYXRlIEwgKi9cbiAgLy9UT0RPKGFuZHJldyk6IFJpZ2h0IGJlbG93IHNlZW1zIHdyb25nIGJ1dCBpdCBnZXRzIGZ1Y2t5IG90aGVyd2lzZVxuICB8ICgoU29tZShsKSwgTm9uZSksIE5vbmUpID0+IFNvbWUoKGwsIFJpZ2h0LCBTaWJsaW5nKSlcbiAgfTtcbn07XG5cbmxldCBwaWVjZSA9XG4gIHBpZWNlJyh+bm9fd3M9dHJ1ZSwgfmlnbj1wID0+IFBpZWNlLihpc19zZWNvbmRhcnkocCkgfHwgaXNfZ3JvdXQocCkpKTtcblxubGV0IHNoYXJkX2luZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKGludCkgPT5cbiAgc3dpdGNoIChwaWVjZSh6KSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoKHAsIHNpZGUsIHJlbGF0aW9uKSkgPT5cbiAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7XG4gICAgfCBQYXJlbnQgPT5cbiAgICAgIHN3aXRjaCAoQW5jZXN0b3JzLnBhcmVudCh6LnJlbGF0aXZlcy5hbmNlc3RvcnMpKSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJpbmRpY2F0ZWRfc2hhcmRfaW5kZXggaW1wb3NzaWJsZVwiKVxuICAgICAgfCBTb21lKHtjaGlsZHJlbjogKGJlZm9yZSwgXyksIF99KSA9PlxuICAgICAgICBsZXQgYmVmb3JlID0gTGlzdC5sZW5ndGgoYmVmb3JlKTtcbiAgICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICAgIHwgKF8sIE5vbmUpID0+IFNvbWUoYmVmb3JlICsgMSlcbiAgICAgICAgfCBfID0+IFNvbWUoYmVmb3JlKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgU2libGluZyA9PlxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFNlY29uZGFyeShfKVxuICAgICAgfCBHcm91dChfKSA9PiBTb21lKDApXG4gICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgIHwgTGVmdCA9PiBTb21lKExpc3QubGVuZ3RoKHQuY2hpbGRyZW4pKVxuICAgICAgICB8IFJpZ2h0ID0+IFNvbWUoMClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxubGV0IGluZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKElkLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgcGllY2UnKH5ub193cz1mYWxzZSwgfmlnbj1QaWVjZS5pc19zZWNvbmRhcnksIH50cmltX3NlY29uZGFyeT1mYWxzZSwgeilcbiAgKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSgocCwgXywgXykpID0+IFNvbWUoUGllY2UuaWQocCkpXG4gIH07XG5cbmxldCBjaV9vZiA9ICh6OiBaaXBwZXIudCwgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQpOiBvcHRpb24oU3RhdGljcy5JbmZvLnQpID0+XG4gIC8qIFRoaXMgdmVyc2lvbiB0YWtlcyBpbnRvIGFjY291bnRzIFNlY29uZGFyeSwgd2hpbGUgYWNjb3VudGluZyBmb3IgdGhlXG4gICAqIGZhY3QgdGhhdCBTZWNvbmRhcnkgaXMgbm90IGN1cnJlbnRseSBhZGRlZCB0byB0aGUgaW5mb19tYXAuIEZpcnN0IHdlXG4gICAqIHRyeSB0aGUgYmFzaWMgaW5kaWNhdGlvbiBmdW5jdGlvbiwgc3BlY2lmeWluZyB0aGF0IHdlIGRvIG5vdCB3YW50XG4gICAqIFNlY29uZGFyeS4gQnV0IGlmIHRoaXMgZG9lc24ndCBzdWNjZWVkLCB0aGVuIHdlIGNyZWF0ZSBhICd2aXJ0dWFsJ1xuICAgKiBpbmZvIG1hcCBlbnRyeSByZXByZXNlbnRpbmcgdGhlIFNlY29uZGFyeSBub3RhdGlvbiwgd2hpY2ggdGFrZXMgb25cbiAgICogc29tZSBvZiB0aGUgc2VtYW50aWMgY29udGV4dCBvZiBhIG5lYXJieSAncHJveHknIHRlcm0gKi9cbiAgc3dpdGNoIChcbiAgICBwaWVjZScofm5vX3dzPXRydWUsIH5pZ249UGllY2UuaXNfc2Vjb25kYXJ5LCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHopXG4gICkge1xuICB8IFNvbWUoKHAsIF8sIF8pKSA9PiBJZC5NYXAuZmluZF9vcHQoUGllY2UuaWQocCksIGluZm9fbWFwKVxuICB8IE5vbmUgPT5cbiAgICBsZXQgc2licyA9IHNpYnNfd2l0aF9zZWwoeik7XG4gICAgbGV0KiBjbHMgPVxuICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2licykpIHtcbiAgICAgIC8qIElmIG9uIHNpZGUgb2YgY29tbWVudCwgc2F5IHdlJ3JlIG9uIGNvbW1lbnQgKi9cbiAgICAgIHwgKFNvbWUoU2Vjb25kYXJ5KHNsKSksIFNvbWUoU2Vjb25kYXJ5KF8pKSlcbiAgICAgICAgICB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHNsKSA9PlxuICAgICAgICBTb21lKFNlY29uZGFyeS5jbHNfb2Yoc2wpKVxuICAgICAgfCAoU29tZShTZWNvbmRhcnkoXykpLCBTb21lKFNlY29uZGFyeShzcikpKVxuICAgICAgICAgIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQoc3IpID0+XG4gICAgICAgIFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzcikpXG4gICAgICB8IChfLCBTb21lKFNlY29uZGFyeShzKSkpXG4gICAgICB8IChTb21lKFNlY29uZGFyeShzKSksIF8pID0+IFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzKSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIGxldCogcHJveHlfaWQgPVxuICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoU2libGluZ3MudHJpbV9zZWNvbmRhcnkoc2licykpKSB7XG4gICAgICB8IChfLCBTb21lKHApKVxuICAgICAgfCAoU29tZShwKSwgXykgPT4gU29tZShQaWVjZS5pZChwKSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIGxldCsgY2kgPSBJZC5NYXAuZmluZF9vcHQocHJveHlfaWQsIGluZm9fbWFwKTtcbiAgICBJbmZvLlNlY29uZGFyeSh7XG4gICAgICBpZDogcHJveHlfaWQsXG4gICAgICBjbHM6IFNlY29uZGFyeShjbHMpLFxuICAgICAgc29ydDogSW5mby5zb3J0X29mKGNpKSxcbiAgICAgIGN0eDogSW5mby5jdHhfb2YoY2kpLFxuICAgIH0pO1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyoqXG4gIFRoZSByZXN1bHQgb2YgYSBwcm9ncmFtIGV2YWx1YXRpb24uIEluY2x1ZGVzIHRoZSB7IXR5cGU6RXZhbHVhdG9yUmVzdWx0LnR9LFxuICB0aGUgeyF0eXBlOkV2YWx1YXRvclN0YXRlfSwgYW5kIHRoZSB0cmFja2VkIGhvbGUgaW5zdGFuY2UgaW5mb3JtYXRpb25cbiAgKHshdHlwZTpIb2xlSW5zdGFuY2VJbmZvLnR9KS4gQ29uc3RydWN0ZWQgYnkgeyF2YWw6UHJvZ3JhbS5nZXRfcmVzdWx0fS5cbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbm5lciA9IHtcbiAgcmVzdWx0OiBFdmFsdWF0b3IuUmVzdWx0LnQsXG4gIGVkaXRvcjogRWRpdG9yLnQsXG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvciA9XG4gIHwgVGltZW91dFxuICB8IEV2YXVsYXRvckVycm9yKEV2YWx1YXRvckVycm9yLnQpXG4gIHwgVW5rbm93bkV4Y2VwdGlvbihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE9mZihFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpXG4gIHwgUmVzdWx0T2soaW5uZXIpXG4gIHwgUmVzdWx0RmFpbChlcnJvcilcbiAgfCBSZXN1bHRQZW5kaW5nO1xuXG5sZXQgZ2V0X2RoZXhwID0gKHI6IGlubmVyKSA9PiBFdmFsdWF0b3IuUmVzdWx0LnVuYm94KHIucmVzdWx0KTtcbmxldCBnZXRfc3RhdGUgPSAocjogaW5uZXIpID0+IHIuc3RhdGU7XG4iLCJtb2R1bGUgQ29yZVN0YXRpY3MgPSBTdGF0aWNzO1xuXG5tb2R1bGUgU3RhdGljcyA9IHtcbiAgbGV0IG1rX21hcCcgPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIGUgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKFxuICAgICAgICB+Y3R4PUJ1aWx0aW5zLmN0eF9pbml0LFxuICAgICAgICB+YW5jZXN0b3JzPVtdLFxuICAgICAgICBlLFxuICAgICAgICBJZC5NYXAuZW1wdHksXG4gICAgICApXG4gICAgICB8PiBzbmRcbiAgICB9KTtcbiAgbGV0IG1rX21hcCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljcyA/IG1rX21hcCcoZXhwKSA6IElkLk1hcC5lbXB0eTtcblxuICBsZXQgbWtfbWFwX2FuZF9pbmZvX2N0eCA9XG4gICAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgKGN0eCwgZSkgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnM9W10sIGUsIElkLk1hcC5lbXB0eSlcbiAgICB9KTtcbiAgbGV0IG1rX21hcF9hbmRfaW5mb19jdHggPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGN0eCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljc1xuICAgICAgPyB7XG4gICAgICAgIGxldCAoaW5mbywgbWFwKSA9IG1rX21hcF9hbmRfaW5mb19jdHgoY3R4LCBleHApO1xuICAgICAgICAoU29tZShpbmZvKSwgbWFwKTtcbiAgICAgIH1cbiAgICAgIDogKE5vbmUsIElkLk1hcC5lbXB0eSk7XG5cbiAgbGV0IG1rX21hcF9jdHggPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIChjdHgsIGUpID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzPVtdLCBlLCBJZC5NYXAuZW1wdHkpIHw+IHNuZFxuICAgIH0pO1xuICBsZXQgbWtfbWFwX2N0eCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgY3R4LCBleHApID0+XG4gICAgY29yZS5zdGF0aWNzID8gbWtfbWFwX2N0eChjdHgsIGV4cCkgOiBJZC5NYXAuZW1wdHk7XG59O1xuXG5sZXQgZGhfZXJyID0gKGVycm9yOiBzdHJpbmcpOiBESEV4cC50ID0+IFZhcihlcnJvcikgfD4gREhFeHAuZnJlc2g7XG5cbmxldCBlbGFib3JhdGUgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBFbGFib3JhdG9yLnVleHBfZWxhYik7XG5cbmV4Y2VwdGlvbiBEb2VzTm90RWxhYm9yYXRlO1xubGV0IGVsYWJvcmF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBtYXAsIHRlcm0pOiBESEV4cC50ID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5zdGF0aWNzID0+IGRoX2VycihcIlN0YXRpY3MgZGlzYWJsZWRcIilcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzICYmICFzZXR0aW5ncy5lbGFib3JhdGUgPT5cbiAgICBkaF9lcnIoXCJEeW5hbWljcyAmIEVsYWJvcmF0aW9uIGRpc2FibGVkXCIpXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZWxhYm9yYXRlKG1hcCwgdGVybSkpIHtcbiAgICB8IERvZXNOb3RFbGFib3JhdGUgPT4gZGhfZXJyKFwiRWxhYm9yYXRpb24gcmV0dXJucyBOb25lXCIpXG4gICAgfCBFbGFib3JhdGVzKGQsIF8sIF8pID0+IGRcbiAgICB9XG4gIH07XG5cbmxldCBldmFsdWF0ZSA9XG4gICAgKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5lbnY9QnVpbHRpbnMuZW52X2luaXQsIGVsYWI6IERIRXhwLnQpXG4gICAgOiBQcm9ncmFtUmVzdWx0LnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzID0+IE9mZih7ZDogZWxhYn0pXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoRXZhbHVhdG9yLmV2YWx1YXRlKGVudiwge2Q6IGVsYWJ9KSkge1xuICAgIHwgZXhjZXB0aW9uIChFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24ocmVhc29uKSkgPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJFdmFsdWF0b3JFcnJvcjpcIiArKyBFdmFsdWF0b3JFcnJvci5zaG93KHJlYXNvbikpO1xuICAgICAgUmVzdWx0RmFpbChFdmF1bGF0b3JFcnJvcihyZWFzb24pKTtcbiAgICB8IGV4Y2VwdGlvbiBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJFWE46XCIgKysgUHJpbnRleGMudG9fc3RyaW5nKGV4bikpO1xuICAgICAgUmVzdWx0RmFpbChVbmtub3duRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleG4pKSk7XG4gICAgfCAoc3RhdGUsIHJlc3VsdCkgPT5cbiAgICAgIFJlc3VsdE9rKHtcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICBlZGl0b3I6XG4gICAgICAgICAgRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoXG4gICAgICAgICAgICB+aW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgRXZhbHVhdG9yLlJlc3VsdC51bmJveChyZXN1bHQpLFxuICAgICAgICAgICksXG4gICAgICAgIHN0YXRlLFxuICAgICAgfSlcbiAgICB9XG4gIH07XG5cbmxldCBldmFsX3ogPVxuICAgIChcbiAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICB+Y3R4X2luaXQ6IEN0eC50LFxuICAgICAgfmVudl9pbml0OiBFbnZpcm9ubWVudC50LFxuICAgICAgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogUHJvZ3JhbVJlc3VsdC50ID0+IHtcbiAgbGV0ICh0ZXJtLCBfKSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeik7XG4gIGxldCBpbmZvX21hcCA9IFN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncywgY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZCA9IGVsYWJvcmF0ZSh+c2V0dGluZ3MsIGluZm9fbWFwLCB0ZXJtKTtcbiAgZXZhbHVhdGUofnNldHRpbmdzLCB+ZW52PWVudl9pbml0LCBkKTtcbn07XG4iLCJvcGVuIFV0aWwuT3B0VXRpbC5TeW50YXg7XG5vcGVuIFN1Z2dlc3Rpb247XG5cbi8qIFN1Z2dlc3QgdGhlIHRva2VuIGF0IHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLCBpZiB3ZSBjYW4gcHV0IGl0IGRvd24gKi9cbmxldCBzdWdnZXN0X2JhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgLyogTm90ZTogU29ydCBjaGVjayB1bm5lY2Vzc2FyeSBoZXJlIGFzIHdvdWxkbid0IGJlIGFibGUgdG8gcHV0IGRvd24gKi9cbiAgc3dpdGNoICh6LmJhY2twYWNrKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbe2NvbnRlbnQsIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgW1RpbGUoe2xhYmVsLCBzaGFyZHM6IFtpZHhdLCBffSldIHdoZW4gWmlwcGVyLmNhbl9wdXRfZG93bih6KSA9PiBbXG4gICAgICAgIHtjb250ZW50OiBMaXN0Lm50aChsYWJlbCwgaWR4KSwgc3RyYXRlZ3k6IEFueShGcm9tQmFja3BhY2spfSxcbiAgICAgIF1cbiAgICB8IF8gPT4gW11cbiAgICB9XG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdCA9IChjaTogSW5mby50LCB6OiBaaXBwZXIudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIC8qIE5PVEU6IFNvcnRpbmcgZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUgYW4gZXhhY3QgbWF0Y2ggYWxyZWFkeSxcbiAgICogd2Ugd29uJ3Qgc3VnZ2VzdCBleHRlbmRpbmcgaXQsIGJ1dCBzdHJhaWdodC11cCBsZXhpY2FsIHNvcnRpbmdcbiAgICogbWF5IG5vdCBiZSBkZXNpcmFibGUgaW4gb3RoZXIgd2F5cywgZm9yIGV4YW1wbGUgbWF5YmUgd2Ugd2FudFxuICAgKiByZWNlbmN5IGJpYXMgaW4gY3R4LiBSZXZpc2l0IHRoaXMgbGF0ZXIuIEknbSBzb3J0aW5nIGJlZm9yZVxuICAgKiBjb21iaW5hdGlvbiBiZWNhdXNlIHdlIHdhbnQgYmFja3BhY2sgY2FuZGlkYXRlcyB0byBzaG93IHVwIGZpcnN0ICovXG4gIHN1Z2dlc3RfYmFja3BhY2soeilcbiAgQCAoXG4gICAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9vcGVyYW5kKGNpKVxuICAgIEAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9sZWFkaW5nKGNpKVxuICAgIEAgQXNzaXN0YW50Q3R4LnN1Z2dlc3RfdmFyaWFibGUoY2kpXG4gICAgQCBBc3Npc3RhbnRDdHguc3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUoY2kpXG4gICAgfD4gTGlzdC5zb3J0KFN1Z2dlc3Rpb24uY29tcGFyZSlcbiAgKVxuICBAIChBc3Npc3RhbnRGb3Jtcy5zdWdnZXN0X29wZXJhdG9yKGNpKSB8PiBMaXN0LnNvcnQoU3VnZ2VzdGlvbi5jb21wYXJlKSk7XG59O1xuXG4vKiBJZiB0aGVyZSBpcyBhIG1vbm90aWxlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgcmV0dXJuIGl0LiBXZVxuICogY3VycmVudGx5IG9ubHkgbWFrZSBzdWdnZXN0aW9ucyBpbiBzdWNoIHNpdHVhdGlvbnMgKi9cbmxldCB0b2tlbl90b19sZWZ0ID0gKHo6IFppcHBlci50KTogb3B0aW9uKHN0cmluZykgPT5cbiAgc3dpdGNoIChcbiAgICB6LmNhcmV0LFxuICAgIHoucmVsYXRpdmVzLnNpYmxpbmdzIHw+IGZzdCB8PiBMaXN0LnJldixcbiAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyB8PiBzbmQsXG4gICkge1xuICB8IChPdXRlciwgW1RpbGUoe2xhYmVsOiBbdG9rX3RvX2xlZnRdLCBffSksIC4uLl9dLCBfKSA9PlxuICAgIFNvbWUodG9rX3RvX2xlZnQpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIFRoZSBzZWxlY3Rpb24gYnVmZmVyIHVzZWQgYnkgVHlEaSBpcyBjdXJyZW50bHkgdW5zdHJ1Y3R1cmVkOyBpdCBzaW1wbHlcbiAqIGhvbGRzIGFuIHVucGFyc2VkIHN0cmluZywgd2hpY2ggaXMgcGFyc2VkIHZpYSB0aGUgc2FtZSBtZWNoYW5pc20gYXNcbiAqIFBhc3RlIG9ubHkgd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYWNjZXB0ZWQuICovXG5sZXQgbWtfdW5wYXJzZWRfYnVmZmVyID1cbiAgICAofnNvcnQ6IFNvcnQudCwgc2liczogU2libGluZ3MudCwgdDogVG9rZW4udCk6IFNlZ21lbnQudCA9PiB7XG4gIGxldCBtb2xkID0gU2libGluZ3MubW9sZF9maXR0aW5nX2JldHdlZW4oc29ydCwgUHJlY2VkZW5jZS5tYXgsIHNpYnMpO1xuICBbVGlsZSh7aWQ6IElkLm1rKCksIGxhYmVsOiBbdF0sIHNoYXJkczogWzBdLCBjaGlsZHJlbjogW10sIG1vbGR9KV07XG59O1xuXG4vKiBJZiAnY3VycmVudCcgaXMgYSBwcm9wZXIgcHJlZml4IG9mICdjYW5kaWRhdGUnLCByZXR1cm4gdGhlXG4gKiBzdWZmaXggc3VjaCB0aGF0IGN1cnJlbnQgKysgc3VmZml4ID09IGNhbmRpZGF0ZSAqL1xubGV0IHN1ZmZpeF9vZiA9IChjYW5kaWRhdGU6IFRva2VuLnQsIGN1cnJlbnQ6IFRva2VuLnQpOiBvcHRpb24oVG9rZW4udCkgPT4ge1xuICBsZXQgY2FuZGlkYXRlX3N1ZmZpeCA9XG4gICAgU3RyaW5nLnN1YihcbiAgICAgIGNhbmRpZGF0ZSxcbiAgICAgIFN0cmluZy5sZW5ndGgoY3VycmVudCksXG4gICAgICBTdHJpbmcubGVuZ3RoKGNhbmRpZGF0ZSkgLSBTdHJpbmcubGVuZ3RoKGN1cnJlbnQpLFxuICAgICk7XG4gIGNhbmRpZGF0ZV9zdWZmaXggPT0gXCJcIiA/IE5vbmUgOiBTb21lKGNhbmRpZGF0ZV9zdWZmaXgpO1xufTtcblxuLyogUEVSRjogVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUgKi9cbmxldCB6X3RvX2NpID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCkgPT4ge1xuICBsZXQgbWFwID1cbiAgICB6XG4gICAgfD4gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbVxuICAgIHw+IGZzdFxuICAgIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MsIGN0eCk7XG4gIGxldCogaW5kZXggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gIElkLk1hcC5maW5kX29wdChpbmRleCwgbWFwKTtcbn07XG5cbi8qIFJldHVybnMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgc3VnZ2VzdGlvbiBidWZmZXIgKi9cbmxldCBnZXRfYnVmZmVyID0gKHo6IFppcHBlci50KTogb3B0aW9uKFRva2VuLnQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSwgei5zZWxlY3Rpb24uY29udGVudCkge1xuICB8IChCdWZmZXIoVW5wYXJzZWQpLCBbVGlsZSh7bGFiZWw6IFtjb21wbGV0aW9uXSwgX30pXSkgPT5cbiAgICBTb21lKGNvbXBsZXRpb24pXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIEdpdmVzIGEgdHlwZS1kaXJlY3RlZCBzdWdnZXN0aW9uICovXG5sZXQgc3VnZ2VzdCA9ICh+c2V0dGluZ3MsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihTZWdtZW50LnQpID0+IHtcbiAgbGV0KiB0b2tfdG9fbGVmdCA9IHRva2VuX3RvX2xlZnQoeik7XG4gIGxldCogY2kgPSB6X3RvX2NpKH5zZXR0aW5ncywgfmN0eCwgeik7XG4gIGxldCBzdWdnZXN0aW9ucyA9IHN1Z2dlc3QoY2ksIHopO1xuICBsZXQgc3VnZ2VzdGlvbnMgPVxuICAgIHN1Z2dlc3Rpb25zXG4gICAgfD4gTGlzdC5maWx0ZXIoKHtjb250ZW50LCBffTogU3VnZ2VzdGlvbi50KSA9PlxuICAgICAgICAgU3RyaW5nLnN0YXJ0c193aXRoKH5wcmVmaXg9dG9rX3RvX2xlZnQsIGNvbnRlbnQpXG4gICAgICAgKTtcbiAgbGV0KiB0b3Bfc3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zIHw+IFV0aWwuTGlzdFV0aWwuaGRfb3B0O1xuICBsZXQqIHN1Z2dlc3Rpb25fc3VmZml4ID0gc3VmZml4X29mKHRvcF9zdWdnZXN0aW9uLmNvbnRlbnQsIHRva190b19sZWZ0KTtcbiAgbGV0IGNvbnRlbnQgPVxuICAgIG1rX3VucGFyc2VkX2J1ZmZlcihcbiAgICAgIH5zb3J0PUluZm8uc29ydF9vZihjaSksXG4gICAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyxcbiAgICAgIHN1Z2dlc3Rpb25fc3VmZml4LFxuICAgICk7XG4gIFNvbWUoY29udGVudCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICB0ZXN0X21hcDogVGVzdE1hcC50LFxuICBzdGF0dXNlczogbGlzdChUZXN0U3RhdHVzLnQpLFxuICBkZXNjcmlwdGlvbnM6IGxpc3Qoc3RyaW5nKSxcbiAgdG90YWw6IGludCxcbiAgcGFzc2luZzogaW50LFxuICBmYWlsaW5nOiBpbnQsXG4gIHVuZmluaXNoZWQ6IGludCxcbn07XG5cbmxldCBta19yZXN1bHRzID0gKH5kZXNjcmlwdGlvbnM9W10sIHRlc3RfbWFwOiBUZXN0TWFwLnQpOiB0ID0+IHtcbiAgdGVzdF9tYXAsXG4gIHN0YXR1c2VzOiB0ZXN0X21hcCB8PiBMaXN0Lm1hcChyID0+IHIgfD4gc25kIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzKSxcbiAgZGVzY3JpcHRpb25zLFxuICB0b3RhbDogVGVzdE1hcC5jb3VudCh0ZXN0X21hcCksXG4gIHBhc3Npbmc6IFRlc3RNYXAuY291bnRfc3RhdHVzKFBhc3MsIHRlc3RfbWFwKSxcbiAgZmFpbGluZzogVGVzdE1hcC5jb3VudF9zdGF0dXMoRmFpbCwgdGVzdF9tYXApLFxuICB1bmZpbmlzaGVkOiBUZXN0TWFwLmNvdW50X3N0YXR1cyhJbmRldCwgdGVzdF9tYXApLFxufTtcblxubGV0IHJlc3VsdF9zdW1tYXJ5X3N0ciA9XG4gICAgKH5uLCB+cCwgfnEsIH5uX3N0ciwgfm5zX3N0ciwgfnBfc3RyLCB+cV9zdHIsIH5yX3N0cik6IHN0cmluZyA9PiB7XG4gIGxldCBvbmVfcCA9IFwib25lIGlzIFwiICsrIHBfc3RyICsrIFwiIFwiO1xuICBsZXQgb25lX3EgPSBcIm9uZSBpcyBcIiArKyBxX3N0ciArKyBcIiBcIjtcbiAgbGV0IG1ueV9wID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHAsIHBfc3RyKTtcbiAgbGV0IG1ueV9xID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHEsIHFfc3RyKTtcbiAgbGV0IG9mX24gPSBQcmludGYuc3ByaW50ZihcIk91dCBvZiAlZCAlcywgXCIsIG4sIG5zX3N0cik7XG4gIHN3aXRjaCAobiwgcCwgcSkge1xuICB8ICgwLCBfLCBfKSA9PiBcIk5vIFwiICsrIG5zX3N0ciArKyBcIiBhdmFpbGFibGUuXCJcbiAgfCAoXywgMCwgMCkgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHJfc3RyICsrIFwiISBcIlxuICB8IChuLCBfLCBjKSB3aGVuIG4gPT0gYyA9PiBcIkFsbCBcIiArKyBuc19zdHIgKysgXCIgXCIgKysgcV9zdHIgKysgXCIgXCJcbiAgfCAobiwgZiwgXykgd2hlbiBuID09IGYgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDAsIDEpID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHFfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDEsIDApID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDIsIDEsIDEpID0+XG4gICAgXCJPbmUgXCIgKysgbl9zdHIgKysgXCIgXCIgKysgcF9zdHIgKysgXCIgYW5kIG9uZSBcIiArKyBxX3N0ciArKyBcIiBcIlxuICB8IChfLCAwLCAxKSA9PiBvZl9uICsrIG9uZV9xXG4gIHwgKF8sIDEsIDApID0+IG9mX24gKysgb25lX3BcbiAgfCAoXywgMSwgMSkgPT4gb2ZfbiArKyBvbmVfcCArKyBcImFuZCBcIiArKyBvbmVfcVxuICB8IChfLCAxLCBfKSA9PiBvZl9uICsrIG9uZV9wICsrIFwiYW5kIFwiICsrIG1ueV9xXG4gIHwgKF8sIF8sIDEpID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgb25lX3FcbiAgfCAoXywgMCwgXykgPT4gb2ZfbiArKyBtbnlfcVxuICB8IChfLCBfLCAwKSA9PiBvZl9uICsrIG1ueV9wXG4gIHwgKF8sIF8sIF8pID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgbW55X3FcbiAgfTtcbn07XG5cbmxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogdCk6IHN0cmluZyA9PlxuICByZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgIH5yX3N0cj1cInBhc3NpbmdcIixcbiAgKTtcbiIsIi8qIGNsb3NlZCBzdWJzdGl0dXRpb24gW2QxL3hdZDIgKi9cbmxldCByZWMgc3Vic3RfdmFyID0gKG0sIGQxOiBESEV4cC50LCB4OiBWYXIudCwgZDI6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGQyKTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgVmFyKHkpID0+XG4gICAgaWYgKFZhci5lcSh4LCB5KSkge1xuICAgICAgZDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGQyO1xuICAgIH1cbiAgfCBJbnZhbGlkKF8pID0+IGQyXG4gIHwgU2VxKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBTZXEoZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgRmlsdGVyKGZpbHRlciwgZGJvZHkpID0+XG4gICAgbGV0IGRib2R5ID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkYm9keSk7XG4gICAgbGV0IGZpbHRlciA9IHN1YnN0X3Zhcl9maWx0ZXIobSwgZDEsIHgsIGZpbHRlcik7XG4gICAgRmlsdGVyKGZpbHRlciwgZGJvZHkpIHw+IHJld3JhcDtcbiAgfCBMZXQoZHAsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPVxuICAgICAgaWYgKERIUGF0LmJpbmRzX3ZhcihtLCB4LCBkcCkpIHtcbiAgICAgICAgZDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICAgIH07XG4gICAgTGV0KGRwLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBGaXhGKHksIGQzLCBlbnYpID0+XG4gICAgbGV0IGVudicgPSBPcHRpb24ubWFwKHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgpLCBlbnYpO1xuICAgIGxldCBkMyA9XG4gICAgICBpZiAoREhQYXQuYmluZHNfdmFyKG0sIHgsIHkpKSB7XG4gICAgICAgIGQzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgICB9O1xuICAgIEZpeEYoeSwgZDMsIGVudicpIHw+IHJld3JhcDtcbiAgfCBGdW4oZHAsIGQzLCBlbnYsIHMpID0+XG4gICAgLyogRnVuY3Rpb24gY2xvc3VyZSBzaG91bGRuJ3QgYXBwZWFyIGR1cmluZyBzdWJzdGl0dXRpb25cbiAgICAgICAod2hpY2ggb25seSBpcyBjYWxsZWQgZnJvbSBlbGFib3JhdGlvbiBjdXJyZW50bHkpICovXG4gICAgbGV0IGVudicgPSBPcHRpb24ubWFwKHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgpLCBlbnYpO1xuICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgZHApKSB7XG4gICAgICBGdW4oZHAsIGQzLCBlbnYnLCBzKSB8PiByZXdyYXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgICAgRnVuKGRwLCBkMywgZW52JywgcykgfD4gcmV3cmFwO1xuICAgIH07XG4gIHwgVHlwRnVuKHRwYXQsIGQzLCBzKSA9PlxuICAgIFR5cEZ1bih0cGF0LCBzdWJzdF92YXIobSwgZDEsIHgsIGQzKSwgcykgfD4gcmV3cmFwXG4gIHwgQ2xvc3VyZShlbnYsIGQzKSA9PlxuICAgIC8qIENsb3N1cmUgc2hvdWxkbid0IGFwcGVhciBkdXJpbmcgc3Vic3RpdHV0aW9uICh3aGljaFxuICAgICAgIG9ubHkgaXMgY2FsbGVkIGZyb20gZWxhYm9yYXRpb24gY3VycmVudGx5KSAqL1xuICAgIGxldCBlbnYnID0gc3Vic3RfdmFyX2VudihtLCBkMSwgeCwgZW52KTtcbiAgICBsZXQgZDMnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgQ2xvc3VyZShlbnYnLCBkMycpIHw+IHJld3JhcDtcbiAgfCBBcChkaXIsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBBcChkaXIsIGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IEJ1aWx0aW5GdW4oXykgPT4gZDJcbiAgfCBUZXN0KGQzKSA9PiBUZXN0KHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpKSB8PiByZXdyYXBcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBkMlxuICB8IExpc3RMaXQoZHMpID0+IExpc3RMaXQoTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZHMpKSB8PiByZXdyYXBcbiAgfCBDb25zKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBDb25zKGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IExpc3RDb25jYXQoZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIExpc3RDb25jYXQoZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgVHVwbGUoZHMpID0+IFR1cGxlKExpc3QubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCksIGRzKSkgfD4gcmV3cmFwXG4gIHwgVW5PcChvcCwgZDMpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgVW5PcChvcCwgZDMpIHw+IHJld3JhcDtcbiAgfCBCaW5PcChvcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIEJpbk9wKG9wLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBNYXRjaChkcywgcnVsZXMpID0+XG4gICAgbGV0IGRzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkcyk7XG4gICAgbGV0IHJ1bGVzID1cbiAgICAgIExpc3QubWFwKFxuICAgICAgICAoKHAsIHYpKSA9PlxuICAgICAgICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgcCkpIHtcbiAgICAgICAgICAgIChwLCB2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKHAsIHN1YnN0X3ZhcihtLCBkMSwgeCwgdikpO1xuICAgICAgICAgIH0sXG4gICAgICAgIHJ1bGVzLFxuICAgICAgKTtcbiAgICBNYXRjaChkcywgcnVsZXMpIHw+IHJld3JhcDtcbiAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlIHw+IHJld3JhcFxuICAvLyBUT0RPOiBoYW5kbGUgbXVsdGlob2xlXG4gIHwgTXVsdGlIb2xlKF9kMikgPT4gZDIgLy9NdWx0aUhvbGUoTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZHMpKSB8PiByZXdyYXBcbiAgfCBDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCk7XG4gICAgQ2FzdChkJywgdHkxLCB0eTIpIHw+IHJld3JhcDtcbiAgfCBGYWlsZWRDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCk7XG4gICAgRmFpbGVkQ2FzdChkJywgdHkxLCB0eTIpIHw+IHJld3JhcDtcbiAgfCBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQpO1xuICAgIER5bmFtaWNFcnJvckhvbGUoZCcsIGVycikgfD4gcmV3cmFwO1xuICB8IElmKGQ0LCBkNSwgZDYpID0+XG4gICAgbGV0IGQ0JyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIGxldCBkNScgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ1KTtcbiAgICBsZXQgZDYnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNik7XG4gICAgSWYoZDQnLCBkNScsIGQ2JykgfD4gcmV3cmFwO1xuICB8IFR5QWxpYXModHAsIHV0LCBkNCkgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgVHlBbGlhcyh0cCwgdXQsIGQ0JykgfD4gcmV3cmFwO1xuICB8IFBhcmVucyhkNCkgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgUGFyZW5zKGQ0JykgfD4gcmV3cmFwO1xuICB8IERlZmVycmFsKF8pID0+IGQyXG4gIHwgRGVmZXJyZWRBcChkMywgZDRzKSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNHMgPSBMaXN0Lm1hcChzdWJzdF92YXIobSwgZDEsIHgpLCBkNHMpO1xuICAgIERlZmVycmVkQXAoZDMsIGQ0cykgfD4gcmV3cmFwO1xuICB8IFR5cEFwKGQzLCB1dCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBUeXBBcChkMywgdXQpIHw+IHJld3JhcDtcbiAgfTtcbn1cblxuYW5kIHN1YnN0X3Zhcl9lbnYgPVxuICAgIChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQpXG4gICAgOiBDbG9zdXJlRW52aXJvbm1lbnQudCA9PiB7XG4gIGxldCBpZCA9IGVudiB8PiBDbG9zdXJlRW52aXJvbm1lbnQuaWRfb2Y7XG4gIGxldCBtYXAgPVxuICAgIGVudlxuICAgIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgICB8PiBFbnZpcm9ubWVudC5mb2xkbyhcbiAgICAgICAgICgoeCcsIGQnOiBESEV4cC50KSwgbWFwKSA9PiB7XG4gICAgICAgICAgIGxldCBkJyA9XG4gICAgICAgICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQnKSkge1xuICAgICAgICAgICAgIC8qIFN1YnN0aXR1dGUgZWFjaCBwcmV2aW91c2x5IHN1YnN0aXR1dGVkIGJpbmRpbmcgaW50byB0aGVcbiAgICAgICAgICAgICAgKiBmaXhwb2ludC4gKi9cbiAgICAgICAgICAgICB8IEZpeEYoXykgPT5cbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgICAgICAgICAgICAgICgoeCcnLCBkJycpLCBkKSA9PiBzdWJzdF92YXIobSwgZCcnLCB4JycsIGQpLFxuICAgICAgICAgICAgICAgICAgICBkJyxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IF8gPT4gZCdcbiAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgIC8qIFN1YnN0aXR1dGUuICovXG4gICAgICAgICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCcpO1xuICAgICAgICAgICBFbnZpcm9ubWVudC5leHRlbmQobWFwLCAoeCcsIGQnKSk7XG4gICAgICAgICB9LFxuICAgICAgICAgRW52aXJvbm1lbnQuZW1wdHksXG4gICAgICAgKTtcblxuICBDbG9zdXJlRW52aXJvbm1lbnQud3JhcChpZCwgbWFwKTtcbn1cblxuYW5kIHN1YnN0X3Zhcl9maWx0ZXIgPVxuICAgIChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGZsdDogVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQudClcbiAgICA6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLnQgPT4ge1xuICBmbHQgfD4gVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCkpO1xufTtcblxubGV0IHN1YnN0ID0gKG0sIGVudjogRW52aXJvbm1lbnQudCwgZDogREhFeHAudCk6IERIRXhwLnQgPT5cbiAgZW52XG4gIHw+IEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICh4ZDogKFZhci50LCBESEV4cC50KSwgZDIpID0+IHtcbiAgICAgICAgIGxldCAoeCwgZDEpID0geGQ7XG4gICAgICAgICBzdWJzdF92YXIobSwgZDEsIHgsIGQyKTtcbiAgICAgICB9LFxuICAgICAgIGQsXG4gICAgICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXRpY3MgPSB7XG4gIHRlcm06IFVFeHAudCxcbiAgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQsXG4gIGVycm9yX2lkczogbGlzdChJZC50KSxcbn07XG5cbmxldCBzdGF0aWNzX29mX3Rlcm0gPSAofnNldHRpbmdzLCB0ZXJtOiBVRXhwLnQsIGVkaXRvcjogRWRpdG9yLnQpOiBzdGF0aWNzID0+IHtcbiAgbGV0IGluZm9fbWFwID1cbiAgICBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gIGxldCBlcnJvcl9pZHMgPVxuICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcywgaW5mb19tYXApO1xuICB7dGVybSwgaW5mb19tYXAsIGVycm9yX2lkc307XG59O1xuXG5sZXQgZW1wdHlfc3RhdGljczogc3RhdGljcyA9IHtcbiAgdGVybTogVUV4cC57aWRzOiBbSWQuaW52YWxpZF0sIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKFtdKX0sXG4gIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gIGVycm9yX2lkczogW10sXG59O1xuXG5tb2R1bGUgS2V5ID0ge1xuICBpbmNsdWRlIFN0cmluZztcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBzdHJpbmc7XG59O1xuXG5tb2R1bGUgTSA9IFV0aWwuTWFwVXRpbC5NYWtlKEtleSk7XG5pbmNsdWRlIE07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE0udChzdGF0aWNzKTtcblxubGV0IG1rID0gKGRzOiBsaXN0KChLZXkudCwgc3RhdGljcykpKTogdCA9PlxuICBkcyB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXEgfD4gbWFwKEZ1bi5pZCk7XG5cbmxldCBsb29rdXAgPSAocmVzdWx0czogdCwga2V5OiBLZXkudCkgPT5cbiAgc3dpdGNoIChmaW5kX29wdChrZXksIHJlc3VsdHMpKSB7XG4gIHwgTm9uZSA9PiBlbXB0eV9zdGF0aWNzXG4gIHwgU29tZShzdGF0aWNzKSA9PiBzdGF0aWNzXG4gIH07XG4iLCJvcGVuIFRyYW5zaXRpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcCA9IHtcbiAgZDogREhFeHAudCwgLy8gdGVjaG5pY2FsbHkgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBkX2xvYyBhbmQgY3R4XG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxuICBkX2xvYzogREhFeHAudCwgLy8gdGhlIGV4cHJlc3Npb24gYXQgdGhlIGxvY2F0aW9uIGdpdmVuIGJ5IGN0eFxuICBkX2xvYyc6IERIRXhwLnQsXG4gIGN0eDogRXZhbEN0eC50LFxuICBrbmQ6IHN0ZXBfa2luZCxcbn07XG5cbm1vZHVsZSBFdmFsT2JqID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCAvLyB0ZWNobmljYWxseSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIGN0eFxuICAgIGRfbG9jOiBESEV4cC50LFxuICAgIGN0eDogRXZhbEN0eC50LFxuICAgIGtuZDogc3RlcF9raW5kLFxuICB9O1xuXG4gIGxldCBtayA9IChjdHgsIGVudiwgZF9sb2MsIGtuZCkgPT4ge2N0eCwgZW52LCBkX2xvYywga25kfTtcblxuICBsZXQgZ2V0X2N0eCA9IChvYmo6IHQpOiBFdmFsQ3R4LnQgPT4ge1xuICAgIG9iai5jdHg7XG4gIH07XG4gIGxldCBnZXRfa2luZCA9IChvYmo6IHQpOiBzdGVwX2tpbmQgPT4gb2JqLmtuZDtcblxuICBsZXQgd3JhcCA9IChmOiBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBvYmo6IHQpID0+IHtcbiAgICAuLi5vYmosXG4gICAgY3R4OiBvYmouY3R4IHw+IGYsXG4gIH07XG59O1xuXG5tb2R1bGUgRGVjb21wb3NlID0ge1xuICBtb2R1bGUgUmVzdWx0ID0ge1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWVcbiAgICAgIHwgU3RlcChsaXN0KEV2YWxPYmoudCkpO1xuXG4gICAgbGV0IHVuYm94ID0gKHI6IHQpOiBsaXN0KEV2YWxPYmoudCkgPT4ge1xuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWUgPT4gW11cbiAgICAgIHwgU3RlcChvYmpzKSA9PiBvYmpzXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIERlY29tcG9zZUVWTW9kZToge1xuICAgIGluY2x1ZGVcbiAgICAgIEVWX01PREUgd2l0aFxuICAgICAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50IGFuZCB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICB9ID0ge1xuICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gICAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoUmVzdWx0LnQsICdhKTtcbiAgICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKCdiLCBSZXN1bHQudCwgQ2xvc3VyZUVudmlyb25tZW50LnQsICdhKTtcbiAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50O1xuXG4gICAgbGV0IHJlcV92YWx1ZSA9IChjb250LCB3ciwgZCkgPT4ge1xuICAgICAgc3dpdGNoIChjb250KGQpKSB7XG4gICAgICB8IFJlc3VsdC5JbmRldCA9PiAoUmVzdWx0LkluZGV0LCBkKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIGQpXG4gICAgICB8IFJlc3VsdC5TdGVwKG9ianMpID0+IChcbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSksXG4gICAgICAgICAgZCxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0ICgmJik6IChSZXN1bHQudCwgUmVzdWx0LnQpID0+IFJlc3VsdC50ID1cbiAgICAgICh1LCB2KSA9PlxuICAgICAgICBzd2l0Y2ggKHUsIHYpIHtcbiAgICAgICAgfCAoU3RlcChzczEpLCBTdGVwKHNzMikpID0+IFN0ZXAoc3MxIEAgc3MyKVxuICAgICAgICB8IChTdGVwKHNzKSwgXylcbiAgICAgICAgfCAoXywgU3RlcChzcykpID0+IFN0ZXAoc3MpXG4gICAgICAgIHwgKEluZGV0LCBCb3hlZFZhbHVlKVxuICAgICAgICB8IChCb3hlZFZhbHVlLCBJbmRldClcbiAgICAgICAgfCAoSW5kZXQsIEluZGV0KSA9PiBJbmRldFxuICAgICAgICB8IChCb3hlZFZhbHVlLCBCb3hlZFZhbHVlKSA9PiBCb3hlZFZhbHVlXG4gICAgICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfdmFsdWUnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfdmFsdWUoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF92YWx1ZScoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChjb250LCB3ciwgZHMpID0+IHtcbiAgICAgIHJlcV9hbGxfdmFsdWUnKGNvbnQsIHdyLCBbXSwgZHMpO1xuICAgIH07XG5cbiAgICBsZXQgcmVxX2ZpbmFsID0gKGNvbnQsIHdyLCBkKSA9PiB7XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgICB8IFJlc3VsdC5JbmRldCA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICB8IFJlc3VsdC5Cb3hlZFZhbHVlID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT5cbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSlcbiAgICAgICAgfSxcbiAgICAgICAgZCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoY29udCwgd3IsIGQpID0+IHtcbiAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgfCBSZXN1bHQuSW5kZXQgPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCAoZCwgZmFsc2UpKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIChkLCB0cnVlKSlcbiAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT4gKFxuICAgICAgICAgIFJlc3VsdC5TdGVwKExpc3QubWFwKEV2YWxPYmoud3JhcCh3ciksIG9ianMpKSxcbiAgICAgICAgICAoZCwgZmFsc2UpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfZmluYWwnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfZmluYWwoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF9maW5hbCcoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcblxuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKGNvbnQsIHdyLCBkcykgPT4ge1xuICAgICAgcmVxX2FsbF9maW5hbCcoY29udCwgd3IsIFtdLCBkcyk7XG4gICAgfTtcblxuICAgIGxldCAobGV0Lik6IChyZXF1aXJlbWVudHMoJ2EsIERIRXhwLnQpLCAnYSA9PiBydWxlKSA9PiByZXN1bHQgPVxuICAgICAgKHJxLCBybCkgPT5cbiAgICAgICAgc3dpdGNoIChycSkge1xuICAgICAgICB8IChfLCBSZXN1bHQuSW5kZXQsIF8sIF8pID0+IFJlc3VsdC5JbmRldFxuICAgICAgICB8ICh1bmRvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCB2KSA9PlxuICAgICAgICAgIHN3aXRjaCAocmwodikpIHtcbiAgICAgICAgICB8IENvbnN0cnVjdG9yID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgICAgfCBJbmRldCA9PiBSZXN1bHQuSW5kZXRcbiAgICAgICAgICB8IFN0ZXAocykgPT4gUmVzdWx0LlN0ZXAoW0V2YWxPYmoubWsoTWFyaywgZW52LCB1bmRvLCBzLmtpbmQpXSlcbiAgICAgICAgICAvLyBUT0RPOiBBY3R1YWxseSBzaG93IHRoZXNlIGV4Y2VwdGlvbnMgdG8gdGhlIHVzZXIhXG4gICAgICAgICAgfCBleGNlcHRpb24gKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihfKSkgPT4gUmVzdWx0LkluZGV0XG4gICAgICAgICAgfVxuICAgICAgICB8IChfLCBSZXN1bHQuU3RlcChfKSBhcyByLCBfLCBfKSA9PiByXG4gICAgICAgIH07XG5cbiAgICBsZXQgKGFuZC4pOlxuICAgICAgKHJlcXVpcmVtZW50cygnYSwgJ2MgPT4gJ2IpLCByZXF1aXJlbWVudCgnYykpID0+XG4gICAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKSA9XG4gICAgICAoKHUsIHIxLCBlbnYsIHYxKSwgKHIyLCB2MikpID0+ICh1KHYyKSwgcjEgJiYgcjIsIGVudiwgKHYxLCB2MikpO1xuXG4gICAgbGV0IG90aGVyd2lzZSA9IChlbnYsIG8pID0+IChvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCAoKSk7XG4gICAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuICB9O1xuXG4gIG1vZHVsZSBEZWNvbXAgPSBUcmFuc2l0aW9uKERlY29tcG9zZUVWTW9kZSk7XG4gIGxldCByZWMgZGVjb21wb3NlID0gKHN0YXRlLCBlbnYsIGV4cCkgPT4ge1xuICAgIGxldCAodGVybSwgcmV3cmFwKSA9IERIRXhwLnVud3JhcChleHApO1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgREhFeHAuRmlsdGVyKGZsdCwgZDEpID0+XG4gICAgICBEZWNvbXBvc2VFVk1vZGUuKFxuICAgICAgICB7XG4gICAgICAgICAgbGV0LiBfID1cbiAgICAgICAgICAgIG90aGVyd2lzZShlbnYsIChkMSkgPT4gKEZpbHRlcihmbHQsIGQxKSB8PiByZXdyYXA6IERIRXhwLnQpKVxuICAgICAgICAgIGFuZC4gZDEgPVxuICAgICAgICAgICAgcmVxX2ZpbmFsKFxuICAgICAgICAgICAgICBkZWNvbXBvc2Uoc3RhdGUsIGVudiksXG4gICAgICAgICAgICAgIGQxID0+XG4gICAgICAgICAgICAgICAgVGVybSh7dGVybTogRmlsdGVyKGZsdCwgZDEpLCBpZHM6IFtESEV4cC5yZXBfaWQoZXhwKV19KSxcbiAgICAgICAgICAgICAgZDEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFN0ZXAoe1xuICAgICAgICAgICAgZXhwcjogZDEsXG4gICAgICAgICAgICBzdGF0ZV91cGRhdGU6ICgpID0+ICgpLFxuICAgICAgICAgICAga2luZDogQ29tcGxldGVGaWx0ZXIsXG4gICAgICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIHwgXyA9PlxuICAgICAgc3dpdGNoIChEZWNvbXAudHJhbnNpdGlvbihkZWNvbXBvc2UsIHN0YXRlLCBlbnYsIGV4cCkpIHtcbiAgICAgIHwgciA9PiByXG4gICAgICB8IGV4Y2VwdGlvbiAoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKF8pKSA9PiBSZXN1bHQuSW5kZXRcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufTtcblxubW9kdWxlIFRha2VTdGVwID0ge1xuICBtb2R1bGUgVGFrZVN0ZXBFVk1vZGU6IHtcbiAgICBpbmNsdWRlXG4gICAgICBFVl9NT0RFIHdpdGhcbiAgICAgICAgdHlwZSByZXN1bHQgPSBvcHRpb24oREhFeHAudCkgYW5kIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gIH0gPSB7XG4gICAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgICB0eXBlIHJlcXVpcmVtZW50KCdhKSA9ICdhO1xuICAgIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAnYTtcbiAgICB0eXBlIHJlc3VsdCA9IG9wdGlvbihESEV4cC50KTtcblxuICAgIC8vIEFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIHZhbHVlIG9yIGZpbmFsIGFzIHJlcXVpcmVkLlxuICAgIGxldCByZXFfdmFsdWUgPSAoXywgXywgZCkgPT4gZDtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChfLCBfLCBkcykgPT4gZHM7XG4gICAgbGV0IHJlcV9maW5hbCA9IChfLCBfLCBkKSA9PiBkO1xuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKF8sIF8sIGRzKSA9PiBkcztcblxuICAgIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoXywgXywgZCkgPT4gKGQsIHRydWUpO1xuXG4gICAgbGV0IChsZXQuKSA9IChycTogcmVxdWlyZW1lbnRzKCdhLCBESEV4cC50KSwgcmw6ICdhID0+IHJ1bGUpID0+XG4gICAgICBzd2l0Y2ggKHJsKHJxKSkge1xuICAgICAgfCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIF99KSA9PlxuICAgICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgICAgU29tZShleHByKTtcbiAgICAgIHwgQ29uc3RydWN0b3JcbiAgICAgIHwgSW5kZXQgPT4gTm9uZVxuICAgICAgfTtcblxuICAgIGxldCAoYW5kLikgPSAoeDEsIHgyKSA9PiAoeDEsIHgyKTtcblxuICAgIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCk7XG5cbiAgICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgICAgc3RhdGUgOj0gRXZhbHVhdG9yU3RhdGUuYWRkX3Rlc3Qoc3RhdGVeLCBpZCwgdik7XG4gIH07XG5cbiAgbW9kdWxlIFRha2VTdGVwRVYgPSBUcmFuc2l0aW9uKFRha2VTdGVwRVZNb2RlKTtcblxuICBsZXQgdGFrZV9zdGVwID0gKHN0YXRlLCBlbnYsIGQpID0+XG4gICAgVGFrZVN0ZXBFVi50cmFuc2l0aW9uKChfLCBfLCBfKSA9PiBOb25lLCBzdGF0ZSwgZW52LCBkKTtcbn07XG5cbmxldCB0YWtlX3N0ZXAgPSBUYWtlU3RlcC50YWtlX3N0ZXA7XG5cbmxldCBkZWNvbXBvc2UgPSAoZDogREhFeHAudCwgZXM6IEV2YWx1YXRvclN0YXRlLnQpID0+IHtcbiAgbGV0IGVudiA9IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudChCdWlsdGlucy5lbnZfaW5pdCk7XG4gIGxldCBycyA9IERlY29tcG9zZS5kZWNvbXBvc2UocmVmKGVzKSwgZW52LCBkKTtcbiAgRGVjb21wb3NlLlJlc3VsdC51bmJveChycyk7XG59O1xuXG5sZXQgZXZhbHVhdGVfd2l0aF9oaXN0b3J5ID0gZCA9PiB7XG4gIGxldCBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS5pbml0KTtcbiAgbGV0IHJlYyBnbyA9IGQgPT5cbiAgICBzd2l0Y2ggKGRlY29tcG9zZShkLCBzdGF0ZV4pKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW3gsIC4uLl9dID0+XG4gICAgICBzd2l0Y2ggKHRha2Vfc3RlcChzdGF0ZSwgeC5lbnYsIHguZF9sb2MpKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShkKSA9PlxuICAgICAgICBsZXQgbmV4dCA9IEV2YWxDdHguY29tcG9zZSh4LmN0eCwgZCk7XG4gICAgICAgIFtuZXh0LCAuLi5nbyhuZXh0KV07XG4gICAgICB9XG4gICAgfTtcbiAgZ28oZCk7XG59O1xuIiwidHlwZSB0ID0gbGlzdChUZXJtQmFzZS5TdGVwcGVyRmlsdGVyS2luZC5maWx0ZXIpO1xubGV0IGV4dGVuZHMgPSAoZmx0LCBlbnYpID0+IFtmbHQsIC4uLmVudl07XG4iLCJsZXQgcmVjIG1hdGNoZXNfZXhwID1cbiAgICAgICAgKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQsIGY6IERIRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpLCBESEV4cC50ZXJtX29mKGYpKSB7XG4gIHwgKFBhcmVucyh4KSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCB4LCBmKVxuICB8IChfLCBQYXJlbnMoeCkpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgeClcbiAgfCAoQ29uc3RydWN0b3IoXCIkZVwiKSwgXykgPT4gZmFpbHdpdGgoXCIkZSBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoQ29uc3RydWN0b3IoXCIkdlwiKSwgXykgPT4gZmFpbHdpdGgoXCIkdiBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoXywgQ29uc3RydWN0b3IoXCIkdlwiKSkgPT5cbiAgICBzd2l0Y2ggKFZhbHVlQ2hlY2tlci5jaGVja192YWx1ZSgoKSwgZW52LCBkKSkge1xuICAgIHwgSW5kZXRcbiAgICB8IFZhbHVlID0+IHRydWVcbiAgICB8IEV4cHIgPT4gZmFsc2VcbiAgICB9XG5cbiAgfCAoXywgRW1wdHlIb2xlKVxuICB8IChfLCBDb25zdHJ1Y3RvcihcIiRlXCIpKSA9PiB0cnVlXG5cbiAgfCAoXywgQ2xvc3VyZShlbnYsIGYpKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKF8sIENhc3QoZiwgXywgXykpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoXywgRmFpbGVkQ2FzdChmLCBfLCBfKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuXG4gIHwgKENsb3N1cmUoZW52LCBkKSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChDYXN0KGQsIF8sIF8pLCBfKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKEZhaWxlZENhc3QoZCwgXywgXyksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcblxuICB8IChWYXIoZHgpLCBWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChWYXIoZHgpLCBfKSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGR4KSkge1xuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIHwgU29tZShkKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gICAgfVxuICB8IChfLCBWYXIoZngpKSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGZ4KSkge1xuICAgIHwgU29tZShmKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gICAgfCBOb25lID0+IGZhbHNlXG4gICAgfVxuXG4gIHwgKEVtcHR5SG9sZSwgXykgPT4gZmFsc2VcblxuICB8IChEZWZlcnJhbCh4KSwgRGVmZXJyYWwoeSkpID0+IHggPT0geVxuICB8IChEZWZlcnJhbChfKSwgXykgPT4gZmFsc2VcblxuICB8IChGaWx0ZXIoZGYsIGRkKSwgRmlsdGVyKGZmLCBmZCkpID0+XG4gICAgVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQuZmFzdF9lcXVhbChkZiwgZmYpICYmIG1hdGNoZXNfZXhwKGVudiwgZGQsIGZkKVxuICB8IChGaWx0ZXIoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQm9vbChkdiksIEJvb2woZnYpKSA9PiBkdiA9PSBmdlxuICB8IChCb29sKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEludChkdiksIEludChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEludChfKSwgXykgPT4gZmFsc2VcblxuICB8IChGbG9hdChkdiksIEZsb2F0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoRmxvYXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoU3RyaW5nKGR2KSwgU3RyaW5nKGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoU3RyaW5nKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKENvbnN0cnVjdG9yKF8pLCBBcChfLCBkMSwgZDIpKSA9PlxuICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMSksIERIRXhwLnRlcm1fb2YoZDIpKSB7XG4gICAgfCAoQ29uc3RydWN0b3IoXCJ+TVZhbFwiKSwgVHVwbGUoW10pKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfVxuICB8IChDb25zdHJ1Y3RvcihkdCksIENvbnN0cnVjdG9yKGZ0KSkgPT4gZHQgPT0gZnRcbiAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQnVpbHRpbkZ1bihkbiksIEJ1aWx0aW5GdW4oZm4pKSA9PiBkbiA9PSBmblxuICB8IChCdWlsdGluRnVuKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5cEZ1bihwYXQxLCBkMSwgczEpLCBUeXBGdW4ocGF0MiwgZDIsIHMyKSkgPT5cbiAgICBzMSA9PSBzMiAmJiBtYXRjaGVzX3V0cGF0KHBhdDEsIHBhdDIpICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGQyKVxuICB8IChUeXBGdW4oXyksIF8pID0+IGZhbHNlXG5cbiAgLy8gTm90IHN1cmUgaWYgd2Ugc2hvdWxkIGJlIGNoZWNraW5nIGZ1bmN0aW9ucyBmb3IgY2xvc3VyZXMgaGVyZVxuICB8IChGdW4oZHAxLCBkMSwgXywgZG5hbWUxKSwgRnVuKGZwMSwgZjEsIF8sIGZuYW1lMSkpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAxLCBmcDEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBkbmFtZTEgPT0gZm5hbWUxXG4gIHwgKEZ1bihfKSwgXykgPT4gZmFsc2VcblxuICB8IChGaXhGKGRwLCBkMSwgXyksIEZpeEYoZnAsIGYxLCBfKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkcCwgZnApICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICB8IChGaXhGKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExldChkcCwgZDEsIGQyKSwgTGV0KGZwLCBmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfcGF0KGRwLCBmcClcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGV0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5cEFwKGQxLCB0MSksIFR5cEFwKGQyLCB0MikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZDIpICYmIG1hdGNoZXNfdHlwKHQxLCB0MilcbiAgfCAoVHlwQXAoXyksIF8pID0+IGZhbHNlXG5cbiAgLy8gVE9ETzogZG8gd2Ugd2FudCBmKHgpIHRvIG1hdGNoIHggfD4gZiA/Pz9cbiAgfCAoQXAoXywgZDEsIGQyKSwgQXAoXywgZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKERlZmVycmVkQXAoZDEsIGQyKSwgRGVmZXJyZWRBcChmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgIChhY2MsIGQsIGYpID0+IGFjYyAmJiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpLFxuICAgICAgICAgdHJ1ZSxcbiAgICAgICAgIGQyLFxuICAgICAgICAgZjIsXG4gICAgICAgKVxuICB8IChEZWZlcnJlZEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKElmKGQxLCBkMiwgZDMpLCBJZihmMSwgZjIsIGYzKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQzLCBmMylcbiAgfCAoSWYoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoU2VxKGQxLCBkMiksIFNlcShmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoU2VxKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFRlc3QoZDIpLCBUZXN0KGYyKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKFRlc3QoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQ29ucyhkMSwgZDIpLCBDb25zKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChDb25zKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RMaXQoZHYpLCBMaXN0TGl0KGZ2KSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgIHRydWUsXG4gICAgICBkdixcbiAgICAgIGZ2LFxuICAgIClcbiAgfCAoTGlzdExpdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChUdXBsZShkdiksIFR1cGxlKGZ2KSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgIHRydWUsXG4gICAgICBkdixcbiAgICAgIGZ2LFxuICAgIClcbiAgfCAoVHVwbGUoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoVW5PcChkX29wLCBkMSksIFVuT3AoZl9vcCwgZjEpKSA9PlxuICAgIGRfb3AgPT0gZl9vcCAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgfCAoVW5PcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChCaW5PcChkX29wLCBkMSwgZDIpLCBCaW5PcChmX29wLCBmMSwgZjIpKSA9PlxuICAgIGRfb3AgPT0gZl9vcCAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEJpbk9wKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RDb25jYXQoZDEsIGQyKSwgTGlzdENvbmNhdChmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGlzdENvbmNhdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChNYXRjaChkc2NydXQsIGRydWxlKSwgTWF0Y2goZnNjcnV0LCBmcnVsZSkpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkc2NydXQsIGZzY3J1dClcbiAgICAmJiAoXG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICgoZGssIGR2KSwgKGZrLCBmdikpID0+XG4gICAgICAgICAgICBtYXRjaGVzX3BhdChkaywgZmspICYmIG1hdGNoZXNfZXhwKGVudiwgZHYsIGZ2KSxcbiAgICAgICAgICBkcnVsZSxcbiAgICAgICAgICBmcnVsZSxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICAgIHwgcmVzID0+IHJlc1xuICAgICAgfVxuICAgIClcbiAgfCAoTWF0Y2goXyksIF8pID0+IGZhbHNlXG4gIC8vIFRPRE86IHNob3VsZCB0aGVzZSBub3QgZGVmYXVsdCB0byBmYWxzZT9cbiAgfCAoTXVsdGlIb2xlKF8pLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkKF8pLCBfKSA9PiBmYWxzZVxuICB8IChEeW5hbWljRXJyb3JIb2xlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5QWxpYXMoZHRwLCBkdXQsIGRkKSwgVHlBbGlhcyhmdHAsIGZ1dCwgZmQpKSA9PlxuICAgIGR0cCA9PSBmdHAgJiYgZHV0ID09IGZ1dCAmJiBtYXRjaGVzX2V4cChlbnYsIGRkLCBmZClcbiAgfCAoVHlBbGlhcyhfKSwgXykgPT4gZmFsc2VcbiAgfTtcbn1cbmFuZCBtYXRjaGVzX3BhdCA9IChkOiBQYXQudCwgZjogUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChkIHw+IERIUGF0LnRlcm1fb2YsIGYgfD4gREhQYXQudGVybV9vZikge1xuICAvLyBNYXR0OiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZXhhY3Qgc2VtYW50aWNzIG9mIG1hdGNoaW5nIHNob3VsZCBiZSBoZXJlLlxuICB8IChQYXJlbnMoeCksIF8pID0+IG1hdGNoZXNfcGF0KHgsIGYpXG4gIHwgKF8sIFBhcmVucyh4KSkgPT4gbWF0Y2hlc19wYXQoZCwgeClcbiAgfCAoQ2FzdCh4LCBfLCBfKSwgXykgPT4gbWF0Y2hlc19wYXQoeCwgZilcbiAgfCAoXywgQ2FzdCh4LCBfLCBfKSkgPT4gbWF0Y2hlc19wYXQoZCwgeClcbiAgfCAoXywgRW1wdHlIb2xlKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShfKSwgTXVsdGlIb2xlKF8pKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoV2lsZCwgV2lsZCkgPT4gdHJ1ZVxuICB8IChXaWxkLCBfKSA9PiBmYWxzZVxuICB8IChJbnQoZHYpLCBJbnQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChJbnQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEZsb2F0KGR2KSwgRmxvYXQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChGbG9hdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQm9vbChkdiksIEJvb2woZnYpKSA9PiBkdiA9PSBmdlxuICB8IChCb29sKF8pLCBfKSA9PiBmYWxzZVxuICB8IChTdHJpbmcoZHYpLCBTdHJpbmcoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChTdHJpbmcoXyksIF8pID0+IGZhbHNlXG4gIHwgKExpc3RMaXQoZGwpLCBMaXN0TGl0KGZsKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5mb2xkX2xlZnQyKChyZXMsIGQsIGYpID0+IHJlcyAmJiBtYXRjaGVzX3BhdChkLCBmKSwgdHJ1ZSwgZGwsIGZsKVxuICAgICkge1xuICAgIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBmYWxzZVxuICAgIHwgcmVzID0+IHJlc1xuICAgIH1cbiAgfCAoTGlzdExpdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQ29uc3RydWN0b3IoZHQpLCBDb25zdHJ1Y3RvcihmdCkpID0+IGR0ID09IGZ0XG4gIHwgKENvbnN0cnVjdG9yKF8pLCBfKSA9PiBmYWxzZVxuICB8IChWYXIoZHgpLCBWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gIHwgKFR1cGxlKGRsKSwgVHVwbGUoZmwpKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBMaXN0LmZvbGRfbGVmdDIoKHJlcywgZCwgZikgPT4gcmVzICYmIG1hdGNoZXNfcGF0KGQsIGYpLCB0cnVlLCBkbCwgZmwpXG4gICAgKSB7XG4gICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IGZhbHNlXG4gICAgfCByZXMgPT4gcmVzXG4gICAgfVxuICB8IChUdXBsZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoQXAoZDEsIGQyKSwgQXAoZjEsIGYyKSkgPT4gbWF0Y2hlc19wYXQoZDEsIGYxKSAmJiBtYXRjaGVzX3BhdChkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuICB8IChDb25zKGQxLCBkMiksIENvbnMoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkMSwgZjEpICYmIG1hdGNoZXNfcGF0KGQyLCBmMilcbiAgfCAoQ29ucyhfKSwgXykgPT4gZmFsc2VcbiAgfCAoRW1wdHlIb2xlLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkKF8pLCBfKSA9PiBmYWxzZVxuICB9O1xufVxuYW5kIG1hdGNoZXNfdHlwID0gKGQ6IFR5cC50LCBmOiBUeXAudCkgPT4ge1xuICBUeXAuZXEoZCwgZik7XG59XG5hbmQgbWF0Y2hlc19ydWwgPSAoZW52LCAoZHAsIGQpLCAoZnAsIGYpKSA9PiB7XG4gIG1hdGNoZXNfcGF0KGRwLCBmcCkgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKTtcbn1cbmFuZCBtYXRjaGVzX3V0cGF0ID0gKGQ6IFRQYXQudCwgZjogVFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoZC50ZXJtLCBmLnRlcm0pIHtcbiAgfCAoSW52YWxpZChfKSwgXykgPT4gZmFsc2VcbiAgfCAoXywgSW52YWxpZChfKSkgPT4gZmFsc2VcbiAgfCAoXywgRW1wdHlIb2xlKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShsMSksIE11bHRpSG9sZShsMikpID0+IExpc3QubGVuZ3RoKGwxKSA9PSBMaXN0Lmxlbmd0aChsMikgLyogVE9ETzogcHJvYmFibHkgc2hvdWxkIGRlZmluZSBhIG1hdGNoZXNfYW55IGFuZCByZWN1cnNlIGluIGhlcmUuLi4/ICovXG4gIHwgKFZhcih0MSksIFZhcih0MikpID0+IHQxID09IHQyXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxubGV0IG1hdGNoZXMgPVxuICAgIChcbiAgICAgIH5lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgfmV4cDogREhFeHAudCxcbiAgICAgIH5mbHQ6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLmZpbHRlcixcbiAgICApXG4gICAgOiBvcHRpb24oRmlsdGVyQWN0aW9uLnQpID0+XG4gIGlmIChtYXRjaGVzX2V4cChlbnYsIGV4cCwgZmx0LnBhdCkpIHtcbiAgICBTb21lKGZsdC5hY3QpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBtYXRjaGVzID1cbiAgICAofmVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIH5leHA6IERIRXhwLnQsIH5hY3Q6IEZpbHRlckFjdGlvbi50LCBmbHRfZW52KVxuICAgIDogKEZpbHRlckFjdGlvbi50LCBpbnQpID0+IHtcbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoKGZsdF9lbnYpO1xuICBsZXQgcmVjIG1hdGNoZXMnID0gKH5lbnYsIH5leHAsIH5hY3QsIGZsdF9lbnYsIGlkeCkgPT4ge1xuICAgIHN3aXRjaCAoZmx0X2Vudikge1xuICAgIHwgW10gPT4gKGFjdCwgaWR4KVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyh+ZW52LCB+ZXhwLCB+Zmx0PWhkKSkge1xuICAgICAgfCBTb21lKGFjdCkgPT4gKGFjdCwgaWR4KVxuICAgICAgfCBOb25lID0+IG1hdGNoZXMnKH5lbnYsIH5leHAsIH5hY3QsIHRsLCBpZHggKyAxKVxuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGxldCAoYWN0LCBpZHgpID0gbWF0Y2hlcycofmVudiwgfmV4cCwgfmFjdCwgZmx0X2VudiwgMCk7XG4gIChhY3QsIGxlbiAtIGlkeCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gRXZhbHVhdG9yU3RlcDtcbm9wZW4gVHJhbnNpdGlvbjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmV4Y2VwdGlvbiBFeGNlcHRpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcHBlcl9zdGF0ZSA9XG4gIHwgU3RlcFBlbmRpbmcoaW50KVxuICB8IFN0ZXBwZXJSZWFkeVxuICB8IFN0ZXBwZXJEb25lXG4gIHwgU3RlcFRpbWVvdXQoRXZhbE9iai50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhID0gKENhY2hlZFN0YXRpY3Muc3RhdGljcywgRWRpdG9yLnQsIEV2YWx1YXRvclN0YXRlLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGhpc3RvcnkgPSBBYmEudChhLCBzdGVwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBoaXN0b3J5LFxuICBuZXh0X29wdGlvbnM6IGxpc3QoRXZhbE9iai50KSxcbiAgc3RlcHBlcl9zdGF0ZSxcbn07XG5cbmxldCByZWMgbWF0Y2hlcyA9XG4gICAgICAgIChcbiAgICAgICAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgICAgIGZsdDogRmlsdGVyRW52aXJvbm1lbnQudCxcbiAgICAgICAgICBjdHg6IEV2YWxDdHgudCxcbiAgICAgICAgICBleHA6IERIRXhwLnQsXG4gICAgICAgICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgICAgICAgICBpZHg6IGludCxcbiAgICAgICAgKVxuICAgICAgICA6IChGaWx0ZXJBY3Rpb24udCwgaW50LCBFdmFsQ3R4LnQpID0+IHtcbiAgbGV0IGNvbXBvc2VkID0gRXZhbEN0eC5jb21wb3NlKGN0eCwgZXhwKTtcbiAgbGV0IChwYWN0LCBwaWR4KSA9IChhY3QsIGlkeCk7XG4gIGxldCAobWFjdCwgbWlkeCkgPSBGaWx0ZXJNYXRjaGVyLm1hdGNoZXMofmVudiwgfmV4cD1jb21wb3NlZCwgfmFjdCwgZmx0KTtcbiAgbGV0IChhY3QsIGlkeCkgPVxuICAgIHN3aXRjaCAoY3R4KSB7XG4gICAgfCBUZXJtKHt0ZXJtOiBGaWx0ZXIoXywgXyksIF99KSA9PiAocGFjdCwgcGlkeClcbiAgICB8IF8gPT4gbWlkeCA+IGlkeCA/IChtYWN0LCBtaWR4KSA6IChwYWN0LCBwaWR4KVxuICAgIH07XG4gIGxldCBtYXAgPSAoKGEsIGksIGMpLCBmKSA9PiB7XG4gICAgKGEsIGksIGYoYykpO1xuICB9O1xuICBsZXQgKGxldCspID0gbWFwO1xuICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID1cbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgTWFyayA9PiAoYWN0LCBpZHgsIEV2YWxDdHguTWFyaylcbiAgICB8IFRlcm0oe3Rlcm0sIGlkc30pID0+XG4gICAgICBsZXQgcmV3cmFwID0gdGVybSA9PiBFdmFsQ3R4LlRlcm0oe3Rlcm0sIGlkc30pO1xuICAgICAgc3dpdGNoICgodGVybTogRXZhbEN0eC50ZXJtKSkge1xuICAgICAgfCBDbG9zdXJlKGVudiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENsb3N1cmUoZW52LCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSA9PlxuICAgICAgICBsZXQgZmx0ID0gZmx0IHw+IEZpbHRlckVudmlyb25tZW50LmV4dGVuZHMoZmx0Jyk7XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEZpbHRlcihSZXNpZHVlKGlkeCwgYWN0KSwgY3R4KSA9PlxuICAgICAgICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgaWYgKHJpZHggPT0gaWR4ICYmIHJhY3QgfD4gc25kID09IEFsbCkge1xuICAgICAgICAgIChyYWN0LCByaWR4LCBGaWx0ZXIoUmVzaWR1ZShpZHgsIGFjdCksIHJjdHgpIHw+IHJld3JhcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHJhY3QsIHJpZHgsIHJjdHgpO1xuICAgICAgICB9O1xuICAgICAgfCBTZXExKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgU2VxMShjdHgsIGQyKSB8PiByZXdyYXA7XG4gICAgICB8IFNlcTIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBTZXEyKGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTGV0MShkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBMZXQxKGQxLCBjdHgsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IExldDIoZDEsIGQyLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGV0MihkMSwgZDIsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBGdW4oZHAsIGN0eCwgZW52JywgbmFtZSkgPT5cbiAgICAgICAgbGV0KyBjdHggPVxuICAgICAgICAgIG1hdGNoZXMoT3B0aW9uLnZhbHVlKH5kZWZhdWx0PWVudiwgZW52JyksIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRnVuKGRwLCBjdHgsIGVudicsIG5hbWUpIHw+IHJld3JhcDtcbiAgICAgIHwgRml4RihuYW1lLCBjdHgsIGVudicpID0+XG4gICAgICAgIGxldCsgY3R4ID1cbiAgICAgICAgICBtYXRjaGVzKE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1lbnYsIGVudicpLCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEZpeEYobmFtZSwgY3R4LCBlbnYnKSB8PiByZXdyYXA7XG4gICAgICB8IEFwMShkaXIsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQXAxKGRpciwgY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBBcDIoZGlyLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEFwMihkaXIsIGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgVHlwQXAoY3R4LCB0eSkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBUeXBBcChjdHgsIHR5KSB8PiByZXdyYXA7XG4gICAgICB8IERlZmVycmVkQXAxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRGVmZXJyZWRBcDEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMihkMSwgY3R4LCBkcykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBEZWZlcnJlZEFwMihkMSwgY3R4LCBkcykgfD4gcmV3cmFwO1xuICAgICAgfCBJZjEoY3R4LCBkMiwgZDMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgSWYxKGN0eCwgZDIsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IElmMihkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBJZjIoZDEsIGN0eCwgZDMpIHw+IHJld3JhcDtcbiAgICAgIHwgSWYzKGQxLCBkMiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIElmMyhkMSwgZDIsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBVbk9wKG9wLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVW5PcChvcCwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEJpbk9wMShvcCwgY3R4LCBkMSkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBCaW5PcDEob3AsIGN0eCwgZDEpIHw+IHJld3JhcDtcbiAgICAgIHwgQmluT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEJpbk9wMihvcCwgZDEsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBUdXBsZShjdHgsIGRzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIFR1cGxlKGN0eCwgZHMpIHw+IHJld3JhcDtcbiAgICAgIHwgVGVzdChjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVGVzdChjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTGlzdExpdChjdHgsIGRzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RMaXQoY3R4LCBkcykgfD4gcmV3cmFwO1xuICAgICAgfCBDb25zMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENvbnMxKGN0eCwgZDIpIHw+IHJld3JhcDtcbiAgICAgIHwgQ29uczIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBDb25zMihkMSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGlzdENvbmNhdDEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBMaXN0Q29uY2F0MihkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RDb25jYXQyKGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTXVsdGlIb2xlKGN0eCwgKGRsLCBkcikpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTXVsdGlIb2xlKGN0eCwgKGRsLCBkcikpIHw+IHJld3JhcDtcbiAgICAgIHwgQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQ2FzdChjdHgsIHR5LCB0eScpIHw+IHJld3JhcDtcbiAgICAgIHwgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpIHw+IHJld3JhcDtcbiAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShjdHgsIGVycm9yKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnJvcikgfD4gcmV3cmFwO1xuICAgICAgfCBNYXRjaFNjcnV0KGN0eCwgcnMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTWF0Y2hTY3J1dChjdHgsIHJzKSB8PiByZXdyYXA7XG4gICAgICB8IE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgcnMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTWF0Y2hSdWxlKHNjciwgcCwgY3R4LCBycykgfD4gcmV3cmFwO1xuICAgICAgfTtcbiAgICB9O1xuICBzd2l0Y2ggKGN0eCkge1xuICB8IFRlcm0oe3Rlcm06IEZpbHRlcihfKSwgX30pID0+IChyYWN0LCByaWR4LCByY3R4KVxuICB8IF8gd2hlbiBtaWR4ID09IHJpZHggJiYgbWlkeCA+IHBpZHggJiYgbWFjdCB8PiBzbmQgPT0gQWxsID0+IChcbiAgICAgIHJhY3QsXG4gICAgICByaWR4LFxuICAgICAgVGVybSh7dGVybTogRmlsdGVyKFJlc2lkdWUobWlkeCwgbWFjdCksIHJjdHgpLCBpZHM6IFtJZC5taygpXX0pLFxuICAgIClcbiAgfCBfID0+IChyYWN0LCByaWR4LCByY3R4KVxuICB9O1xufTtcblxubGV0IHNob3VsZF9oaWRlX2V2YWxfb2JqID1cbiAgICAofnNldHRpbmdzLCB4OiBFdmFsT2JqLnQpOiAoRmlsdGVyQWN0aW9uLmFjdGlvbiwgRXZhbE9iai50KSA9PlxuICBpZiAoc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSkge1xuICAgIChFdmFsLCB4KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgKGFjdCwgXywgY3R4KSA9XG4gICAgICBtYXRjaGVzKENsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgW10sIHguY3R4LCB4LmRfbG9jLCAoU3RlcCwgT25lKSwgMCk7XG4gICAgc3dpdGNoIChhY3QpIHtcbiAgICB8IChFdmFsLCBfKSA9PiAoRXZhbCwgey4uLngsIGN0eH0pXG4gICAgfCAoU3RlcCwgXykgPT4gKFN0ZXAsIHsuLi54LCBjdHh9KVxuICAgIH07XG4gIH07XG5cbmxldCBzaG91bGRfaGlkZV9zdGVwID0gKH5zZXR0aW5ncywgeDogc3RlcCk6IChGaWx0ZXJBY3Rpb24uYWN0aW9uLCBzdGVwKSA9PlxuICBpZiAoc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSkge1xuICAgIChFdmFsLCB4KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgKGFjdCwgXywgY3R4KSA9XG4gICAgICBtYXRjaGVzKENsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgW10sIHguY3R4LCB4LmRfbG9jLCAoU3RlcCwgT25lKSwgMCk7XG4gICAgc3dpdGNoIChhY3QpIHtcbiAgICB8IChFdmFsLCBfKSA9PiAoRXZhbCwgey4uLngsIGN0eH0pXG4gICAgfCAoU3RlcCwgXykgPT4gKFN0ZXAsIHsuLi54LCBjdHh9KVxuICAgIH07XG4gIH07XG5cbmxldCBnZXRfZWxhYiA9ICh7aGlzdG9yeSwgX306IHQpOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQgPT4ge1xuICBsZXQgKGNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsIF8sIF8pID0gQWJhLmxhc3RfYShoaXN0b3J5KTtcbiAge2Q6IGNzLnRlcm19O1xufTtcblxubGV0IGdldF9uZXh0X3N0ZXBzID0gcyA9PiBzLm5leHRfb3B0aW9ucztcblxubGV0IGN1cnJlbnRfZXhwciA9ICh7aGlzdG9yeSwgX306IHQpID0+XG4gIEFiYS5oZChoaXN0b3J5KSB8PiAoKCh4LCBfLCBfKSkgPT4geCk7XG5cbmxldCBjdXJyZW50X3N0YXRlID0gKHtoaXN0b3J5LCBffTogdCkgPT5cbiAgQWJhLmhkKGhpc3RvcnkpIHw+ICgoKF8sIF8sIHgpKSA9PiB4KTtcblxubGV0IHN0ZXBfcGVuZGluZyA9IChpZHg6IGludCwgc3RlcHBlcjogdCkgPT4ge1xuICB7Li4uc3RlcHBlciwgc3RlcHBlcl9zdGF0ZTogU3RlcFBlbmRpbmcoaWR4KX07XG59O1xuXG5sZXQgcmVjIGV2YWx1YXRlX3BlbmRpbmcgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgczogdCkgPT4ge1xuICBzd2l0Y2ggKHMuc3RlcHBlcl9zdGF0ZSkge1xuICB8IFN0ZXBwZXJEb25lXG4gIHwgU3RlcFRpbWVvdXQoXykgPT4gc1xuICB8IFN0ZXBwZXJSZWFkeSA9PlxuICAgIGxldCBuZXh0JyA9XG4gICAgICBzLm5leHRfb3B0aW9uc1xuICAgICAgfD4gTGlzdC5tYXAoc2hvdWxkX2hpZGVfZXZhbF9vYmoofnNldHRpbmdzPXNldHRpbmdzLmV2YWx1YXRpb24pKTtcbiAgICBsZXQgbmV4dCcnID0gTGlzdC5tYXBpKChpLCB4KSA9PiAoaSwgeCksIG5leHQnKTtcbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5maW5kX29wdCgoKF8sIChhY3QsIF8pKSkgPT4gYWN0ID09IEZpbHRlckFjdGlvbi5FdmFsLCBuZXh0JycpXG4gICAgKSB7XG4gICAgfCBTb21lKChpLCAoXywgXykpKSA9PlxuICAgICAgey4uLnMsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBQZW5kaW5nKGkpfSB8PiBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncylcbiAgICB8IE5vbmUgPT4gey4uLnMsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJEb25lfVxuICAgIH07XG4gIHwgU3RlcFBlbmRpbmcoaSkgPT5cbiAgICBsZXQgZW8gPSBMaXN0Lm50aChzLm5leHRfb3B0aW9ucywgaSk7XG4gICAgbGV0ICh7dGVybTogZCwgX306IENhY2hlZFN0YXRpY3Muc3RhdGljcywgXywgc3RhdGUpID0gQWJhLmhkKHMuaGlzdG9yeSk7XG4gICAgbGV0IHN0YXRlX3JlZiA9IHJlZihzdGF0ZSk7XG4gICAgbGV0IGRfbG9jJyA9XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAodGFrZV9zdGVwKHN0YXRlX3JlZiwgZW8uZW52LCBlby5kX2xvYykpIHtcbiAgICAgICAgfCBTb21lKGQpID0+IGQgfD4gREhFeHAucmVwYWlyX2lkc1xuICAgICAgICB8IE5vbmUgPT4gcmFpc2UoRXhjZXB0aW9uKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICB8PiBESEV4cC5yZXBhaXJfaWRzO1xuICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShkX2xvYycgfD4gREhFeHAuc2hvdyk7XG4gICAgbGV0IGQnID0gRXZhbEN0eC5jb21wb3NlKGVvLmN0eCwgZF9sb2MnKTtcbiAgICBsZXQgbmV3X3N0ZXAgPSB7XG4gICAgICBkLFxuICAgICAgZF9sb2M6IGVvLmRfbG9jLFxuICAgICAgZF9sb2MnLFxuICAgICAgY3R4OiBlby5jdHgsXG4gICAgICBrbmQ6IGVvLmtuZCxcbiAgICAgIHN0YXRlLFxuICAgIH07XG4gICAgbGV0IG5ld19zdGF0ZSA9IHN0YXRlX3JlZl47XG4gICAgbGV0IGVkaXRvciA9IEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKH5pbmxpbmU9ZmFsc2UsIGQnKTtcbiAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKH5zZXR0aW5ncywgZCcsIGVkaXRvcik7XG4gICAge1xuICAgICAgaGlzdG9yeTogcy5oaXN0b3J5IHw+IEFiYS5jb25zKChzdGF0aWNzLCBlZGl0b3IsIG5ld19zdGF0ZSksIG5ld19zdGVwKSxcbiAgICAgIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJSZWFkeSxcbiAgICAgIG5leHRfb3B0aW9uczogZGVjb21wb3NlKGQnLCBuZXdfc3RhdGUpLFxuICAgIH1cbiAgICB8PiBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncyk7XG4gIH07XG59O1xuXG5sZXQgcmVjIGV2YWx1YXRlX2Z1bGwgPSAofnNldHRpbmdzLCBzOiB0KSA9PiB7XG4gIHN3aXRjaCAocy5zdGVwcGVyX3N0YXRlKSB7XG4gIHwgU3RlcFRpbWVvdXQoXykgPT4gc1xuICB8IFN0ZXBwZXJEb25lIHdoZW4gcy5uZXh0X29wdGlvbnMgPT0gW10gPT4gc1xuICB8IFN0ZXBwZXJEb25lID0+IHMgfD4gc3RlcF9wZW5kaW5nKDApIHw+IGV2YWx1YXRlX2Z1bGwofnNldHRpbmdzKVxuICB8IFN0ZXBwZXJSZWFkeVxuICB8IFN0ZXBQZW5kaW5nKF8pID0+XG4gICAgZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MsIHMpIHw+IGV2YWx1YXRlX2Z1bGwofnNldHRpbmdzKVxuICB9O1xufTtcblxubGV0IGluaXQgPSAoe2R9OiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQsIH5zZXR0aW5ncykgPT4ge1xuICBsZXQgc3RhdGUgPSBFdmFsdWF0b3JTdGF0ZS5pbml0O1xuICBsZXQgZWRpdG9yID0gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSwgZCk7XG4gIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0ofnNldHRpbmdzLCBkLCBlZGl0b3IpO1xuICB7XG4gICAgaGlzdG9yeTogQWJhLnNpbmdsZXRvbigoc3RhdGljcywgZWRpdG9yLCBzdGF0ZSkpLFxuICAgIG5leHRfb3B0aW9uczogZGVjb21wb3NlKGQsIHN0YXRlKSxcbiAgICBzdGVwcGVyX3N0YXRlOiBTdGVwcGVyUmVhZHksXG4gIH1cbiAgfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpO1xufTtcblxubGV0IHRpbWVvdXQgPVxuICBmdW5cbiAgfCB7c3RlcHBlcl9zdGF0ZTogU3RlcFBlbmRpbmcoaWR4KSwgX30gYXMgcyA9PiB7XG4gICAgICAuLi5zLFxuICAgICAgc3RlcHBlcl9zdGF0ZTogU3RlcFRpbWVvdXQoTGlzdC5udGgocy5uZXh0X29wdGlvbnMsIGlkeCkpLFxuICAgIH1cbiAgfCB7c3RlcHBlcl9zdGF0ZTogU3RlcFRpbWVvdXQoXykgfCBTdGVwcGVyUmVhZHkgfCBTdGVwcGVyRG9uZSwgX30gYXMgcyA9PiBzO1xuXG5sZXQgcmVjIHRydW5jYXRlX2hpc3RvcnkgPSAofnNldHRpbmdzKSA9PlxuICBmdW5cbiAgfCAoW18sIC4uLmFzX10sIFtiLCAuLi5ic10pXG4gICAgICB3aGVuIHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCBiKSB8PiBmc3QgPT0gRXZhbCA9PlxuICAgIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCAoYXNfLCBicykpXG4gIHwgKFtfLCAuLi5hc19dLCBbXywgLi4uYnNdKSA9PiBTb21lKChhc18sIGJzKSlcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBzdGVwX2JhY2t3YXJkID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICBsZXQgaCcgPVxuICAgIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCBzLmhpc3RvcnkpXG4gICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PXMuaGlzdG9yeSk7XG4gIHtcbiAgICBoaXN0b3J5OiBoJyxcbiAgICBuZXh0X29wdGlvbnM6IHtcbiAgICAgIGxldCAoY3MsIF8sIHN0KSA9IEFiYS5oZChoJyk7XG4gICAgICBkZWNvbXBvc2UoY3MudGVybSwgc3QpO1xuICAgIH0sXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlckRvbmUsXG4gIH07XG59O1xuXG5sZXQgY2FuX3VuZG8gPSAofnNldHRpbmdzLCBzOiB0KSA9PiB7XG4gIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCBzLmhpc3RvcnkpIHw+IE9wdGlvbi5pc19zb21lO1xufTtcblxubGV0IGdldF9qdXN0aWZpY2F0aW9uOiBzdGVwX2tpbmQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTGV0QmluZCA9PiBcInN1YnN0aXR1dGlvblwiXG4gIHwgU2VxID0+IFwic2VxdWVuY2VcIlxuICB8IEZpeFVud3JhcCA9PiBcInVucm9sbCBmaXhwb2ludFwiXG4gIHwgVXBkYXRlVGVzdCA9PiBcInVwZGF0ZSB0ZXN0XCJcbiAgfCBUeXBGdW5BcCA9PiBcImFwcGx5IHR5cGUgZnVuY3Rpb25cIlxuICB8IEZ1bkFwID0+IFwiYXBwbHkgZnVuY3Rpb25cIlxuICB8IERlZmVycmVkQXAgPT4gXCJkZWZlcnJlZCBhcHBsaWNhdGlvblwiXG4gIHwgQnVpbHRpbldyYXAgPT4gXCJ3cmFwIGJ1aWx0aW5cIlxuICB8IEJ1aWx0aW5BcChzKSA9PiBcImV2YWx1YXRlIFwiICsrIHNcbiAgfCBVbk9wKEludChNaW51cykpXG4gIHwgQmluSW50T3AoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSlcbiAgfCBCaW5GbG9hdE9wKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpID0+IFwiYXJpdGhtZXRpY1wiXG4gIHwgQmluSW50T3AoTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbClcbiAgfCBCaW5GbG9hdE9wKExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwpID0+IFwiY29tcGFyaXNvblwiXG4gIHwgQmluSW50T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpbkZsb2F0T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpblN0cmluZ09wKEVxdWFscykgPT4gXCJjaGVjayBlcXVhbGl0eVwiXG4gIHwgQmluU3RyaW5nT3AoQ29uY2F0KSA9PiBcInN0cmluZyBtYW5pcHVsYXRpb25cIlxuICB8IFVuT3AoQm9vbChOb3QpKVxuICB8IEJpbkJvb2xPcChfKSA9PiBcImJvb2xlYW4gbG9naWNcIlxuICB8IENvbmRpdGlvbmFsKF8pID0+IFwiY29uZGl0aW9uYWxcIlxuICB8IExpc3RDb25zID0+IFwibGlzdCBtYW5pcHVsYXRpb25cIlxuICB8IExpc3RDb25jYXQgPT4gXCJsaXN0IG1hbmlwdWxhdGlvblwiXG4gIHwgQ2FzZUFwcGx5ID0+IFwiY2FzZSBzZWxlY3Rpb25cIlxuICB8IFByb2plY3Rpb24gPT4gXCJwcm9qZWN0aW9uXCIgLy8gVE9ETyhNYXR0KTogV2UgZG9uJ3Qgd2FudCB0byBzaG93IHByb2plY3Rpb24gdG8gdGhlIHVzZXJcbiAgfCBJbnZhbGlkU3RlcCA9PiBcImVycm9yXCJcbiAgfCBWYXJMb29rdXAgPT4gXCJ2YXJpYWJsZSBsb29rdXBcIlxuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IENhc3QgPT4gXCJjYXN0IGNhbGN1bHVzXCJcbiAgfCBGaXhDbG9zdXJlID0+IFwiZml4cG9pbnQgY2xvc3VyZVwiXG4gIHwgQ29tcGxldGVGaWx0ZXIgPT4gXCJjb21wbGV0ZSBmaWx0ZXJcIlxuICB8IENvbXBsZXRlQ2xvc3VyZSA9PiBcImNvbXBsZXRlIGNsb3N1cmVcIlxuICB8IEZ1bkNsb3N1cmUgPT4gXCJmdW5jdGlvbiBjbG9zdXJlXCJcbiAgfCBSZW1vdmVUeXBlQWxpYXMgPT4gXCJkZWZpbmUgdHlwZVwiXG4gIHwgUmVtb3ZlUGFyZW5zID0+IFwicmVtb3ZlIHBhcmVudGhlc2VzXCJcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSkpID0+IGZhaWx3aXRoKFwiSU5WQUxJRCBTVEVQXCIpO1xuXG50eXBlIHN0ZXBfaW5mbyA9IHtcbiAgaGlkZGVuX2hpc3Rvcnk6IEFiYS50KGEsIChzdGVwLCBJZC50KSksXG4gIGNob3Nlbl9zdGVwOiBvcHRpb24oc3RlcCksIC8vIFRoZSBzdGVwIHRoYXQgd2FzIHRha2VuIG5leHRcbiAgcHJldmlvdXNfc3RlcDogb3B0aW9uKChzdGVwLCBJZC50KSkgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhYm92ZSB0aGlzIG9uZSAoYW4gSWQgaW4gaW5jbHVkZWQgYmVjYXVzZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBzdGVwIHdhcyB0YWtlbilcbn07XG5cbmxldCBnZXRfaGlzdG9yeSA9ICh+c2V0dGluZ3MsIHN0ZXBwZXIpID0+IHtcbiAgbGV0IHNob3VsZF9za2lwX3N0ZXAgPSBzdGVwID0+XG4gICAgc3RlcCB8PiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncykgfD4gZnN0ID09IEV2YWw7XG4gIGxldCBncm91cGVkX3N0ZXBzID1cbiAgICBBYmEuZm9sZF9yaWdodChcbiAgICAgICgoZCwgZWRpdG9yLCBzdGF0ZSksIHN0ZXAsIHJlc3VsdCkgPT5cbiAgICAgICAgaWYgKHNob3VsZF9za2lwX3N0ZXAoc3RlcCkpIHtcbiAgICAgICAgICBBYmEubWFwX2hkKEFiYS5jb25zKChkLCBlZGl0b3IsIHN0YXRlKSwgc3RlcCksIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQWJhLmNvbnMoQWJhLnNpbmdsZXRvbigoZCwgZWRpdG9yLCBzdGF0ZSkpLCBzdGVwLCByZXN1bHQpO1xuICAgICAgICB9LFxuICAgICAgKChkLCBlZGl0b3IsIHN0YXRlKSkgPT5cbiAgICAgICAgQWJhLnNpbmdsZXRvbihBYmEuc2luZ2xldG9uKChkLCBlZGl0b3IsIHN0YXRlKSkpLFxuICAgICAgc3RlcHBlci5oaXN0b3J5LFxuICAgIClcbiAgICB8PiBBYmEubWFwX2EoQWJhLnJldih4ID0+IHgsIHggPT4geCkpO1xuICBsZXQgcmVwbGFjZV9pZCA9ICh4LCB5LCAocywgeikpID0+IChzLCB4ID09IHogPyB5IDogeik7XG4gIGxldCB0cmFja19pZHMgPVxuICAgICAgKFxuICAgICAgICAoXG4gICAgICAgICAgY2hvc2VuX3N0ZXA6IG9wdGlvbihzdGVwKSxcbiAgICAgICAgICBoaWRkZW5faGlzdG9yeTogaGlzdG9yeSxcbiAgICAgICAgICBwcmV2aW91c19zdGVwOiBvcHRpb24oc3RlcCksXG4gICAgICAgICksXG4gICAgICApID0+IHtcbiAgICBsZXQgKHByZXZpb3VzX3N0ZXAsIGhpZGRlbl9oaXN0b3J5KSA9XG4gICAgICBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICB4ID0+XG4gICAgICAgICAgKFxuICAgICAgICAgICAgT3B0aW9uLm1hcCh4ID0+ICh4LCB4LmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpLCBwcmV2aW91c19zdGVwKSxcbiAgICAgICAgICAgIEFiYS5zaW5nbGV0b24oeCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKChwcywgaGgpLCBoOiBzdGVwLCBocykgPT4ge1xuICAgICAgICAgIGxldCByZXBsYWNlbWVudCA9XG4gICAgICAgICAgICByZXBsYWNlX2lkKGguZF9sb2MgfD4gREhFeHAucmVwX2lkLCBoLmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpO1xuICAgICAgICAgIChcbiAgICAgICAgICAgIE9wdGlvbi5tYXAocmVwbGFjZW1lbnQsIHBzKSxcbiAgICAgICAgICAgIEFiYS5jb25zKFxuICAgICAgICAgICAgICBocyxcbiAgICAgICAgICAgICAgKGgsIGguZF9sb2MnIHw+IERIRXhwLnJlcF9pZCksXG4gICAgICAgICAgICAgIEFiYS5tYXBfYihyZXBsYWNlbWVudCwgaGgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBoaWRkZW5faGlzdG9yeSxcbiAgICAgICk7XG4gICAge2hpZGRlbl9oaXN0b3J5LCBwcmV2aW91c19zdGVwLCBjaG9zZW5fc3RlcH07XG4gIH07XG4gIGxldCBwYWRkZWQgPSBncm91cGVkX3N0ZXBzIHw+IEFiYS5iYWJfdHJpcGxlcztcbiAgbGV0IHJlc3VsdCA9IHBhZGRlZCB8PiBMaXN0Lm1hcCh0cmFja19pZHMpO1xuICByZXN1bHQ7XG4gIC8vZ3JvdXBlZF9zdGVwcyB8PiBBYmEuYmFiX3RyaXBsZXMgfD4gTGlzdC5tYXAodHJhY2tfaWRzKTtcbn07XG5cbmxldCBoaWRkZW5fc3RlcHNfb2ZfaW5mbyA9IChpbmZvOiBzdGVwX2luZm8pOiBsaXN0KHN0ZXBfaW5mbykgPT4ge1xuICAvLyBub3RlIHRoZSBwcmV2aW91c19zdGVwIGZpZWxkIGlzIGZ1ZGdlZCBiZWNhdXNlIGl0IGlzIGN1cnJlbnRseSB1c3VzZWQuXG4gIExpc3QubWFwKFxuICAgICgocHJlLCAoaHMsIF8pLCBfKSkgPT5cbiAgICAgIHtcbiAgICAgICAgY2hvc2VuX3N0ZXA6IFNvbWUoaHMpLFxuICAgICAgICBoaWRkZW5faGlzdG9yeTogQWJhLnNpbmdsZXRvbihwcmUpLFxuICAgICAgICBwcmV2aW91c19zdGVwOiBOb25lLFxuICAgICAgfSxcbiAgICBpbmZvLmhpZGRlbl9oaXN0b3J5IHw+IEFiYS5hYmFfdHJpcGxlcyxcbiAgKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudF9oaXN0b3J5ID0gQWJhLnQoKERIRXhwLnQsIEV2YWx1YXRvclN0YXRlLnQpLCBzdGVwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID0ge3BlcnNpc3RlbnRfaGlzdG9yeX07XG5cbmxldCAoc2V4cF9vZl9wZXJzaXN0ZW50LCBwZXJzaXN0ZW50X29mX3NleHApID1cbiAgU3RydWN0dXJlU2hhcmVTZXhwLnN0cnVjdHVyZV9zaGFyZV9pbihcbiAgICBzZXhwX29mX3BlcnNpc3RlbnQsXG4gICAgcGVyc2lzdGVudF9vZl9zZXhwLFxuICApO1xuXG5sZXQgKHNleHBfb2ZfcGVyc2lzdGVudCwgcGVyc2lzdGVudF9vZl9zZXhwKSA9XG4gIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oXG4gICAgc2V4cF9vZl9wZXJzaXN0ZW50LFxuICAgIHBlcnNpc3RlbnRfb2Zfc2V4cCxcbiAgKTtcblxubGV0IHRvX3BlcnNpc3RlbnRfaGlzdG9yeSA9IGhpc3RvcnkgPT5cbiAgQWJhLm1hcF9hKCgoe3Rlcm06IGQsIF99LCBfLCBzKTogYSkgPT4gKGQsIHMpLCBoaXN0b3J5KTtcblxuLy8gUmVtb3ZlIEV2YWxPYmoudCBvYmplY3RzIGZyb20gc3RlcHBlciB0byBwcmV2ZW50IHByb2JsZW1zIHdoZW4gbG9hZGluZ1xubGV0IHRvX3BlcnNpc3RlbnQ6IHQgPT4gcGVyc2lzdGVudCA9XG4gICh7aGlzdG9yeSwgX30pID0+IHtwZXJzaXN0ZW50X2hpc3Rvcnk6IGhpc3RvcnkgfD4gdG9fcGVyc2lzdGVudF9oaXN0b3J5fTtcblxubGV0IGZyb21fcGVyc2lzdGVudF9oaXN0b3J5ID0gKH5zZXR0aW5ncywgaGlzdG9yeSkgPT5cbiAgQWJhLm1hcF9hKFxuICAgICgoZCwgcykpID0+IHtcbiAgICAgIGxldCBlZGl0b3IgPSBFeHBUb1NlZ21lbnQuZXhwX3RvX2VkaXRvcihkLCB+aW5saW5lPWZhbHNlKTtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0ofnNldHRpbmdzLCBkLCBlZGl0b3IpO1xuICAgICAgKHN0YXRpY3MsIGVkaXRvciwgcyk7XG4gICAgfSxcbiAgICBoaXN0b3J5LFxuICApO1xuXG5sZXQgZnJvbV9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncywge3BlcnNpc3RlbnRfaGlzdG9yeX0pID0+IHtcbiAgbGV0IGhpc3RvcnkgPSBwZXJzaXN0ZW50X2hpc3RvcnkgfD4gZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkofnNldHRpbmdzKTtcbiAge1xuICAgIGhpc3RvcnksXG4gICAgbmV4dF9vcHRpb25zOiB7XG4gICAgICBsZXQgKHt0ZXJtOiBkLCBffTogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLCBfLCBzdGF0ZSkgPSBBYmEuaGQoaGlzdG9yeSk7XG4gICAgICBkZWNvbXBvc2UoZCwgc3RhdGUpO1xuICAgIH0sXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlckRvbmUsXG4gIH07XG59O1xuXG50eXBlIHNlbGVjdGlvbiA9IGludDtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBzdGVwcGVyOiB0KSA9PiB7XG4gIGxldCsgKF8sIGVkaXRvciwgXykgPVxuICAgIExpc3QubnRoX29wdChzdGVwcGVyLmhpc3RvcnkgfD4gQWJhLmdldF9hcywgc2VsZWN0aW9uKTtcbiAgZWRpdG9yO1xufTtcblxubGV0IHB1dF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBzdGVwcGVyOiB0LCBlZGl0b3IpID0+IHtcbiAgbGV0IGFzXyA9XG4gICAgc3RlcHBlci5oaXN0b3J5XG4gICAgfD4gQWJhLmdldF9hc1xuICAgIHw+IExpc3RVdGlsLm1hcF9udGgoc2VsZWN0aW9uLCAoKGQsIF8sIHMpKSA9PiAoZCwgZWRpdG9yLCBzKSk7XG4gIGxldCBoaXN0b3J5ID0gQWJhLm1rKGFzXywgc3RlcHBlci5oaXN0b3J5IHw+IEFiYS5nZXRfYnMpO1xuICB7Li4uc3RlcHBlciwgaGlzdG9yeX07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZhYmlsaXR5ID1cbiAgfCBDYW5FbnRlcihpbnQsIGludClcbiAgfCBDYW5QYXNzXG4gIHwgQ2FudEV2ZW47XG5cbmxldCBtb3ZhYmlsaXR5ID0gKGNodW5raW5lc3M6IGNodW5raW5lc3MsIGxhYmVsLCBkZWxpbV9pZHgpOiBtb3ZhYmlsaXR5ID0+IHtcbiAgYXNzZXJ0KGRlbGltX2lkeCA8IExpc3QubGVuZ3RoKGxhYmVsKSk7XG4gIHN3aXRjaCAoY2h1bmtpbmVzcywgbGFiZWwsIGRlbGltX2lkeCkge1xuICB8IChCeUNoYXIsIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIFtfXSwgMCkgPT5cbiAgICBsZXQgY2hhcl9tYXggPSBUb2tlbi5sZW5ndGgoTGlzdC5udGgobGFiZWwsIGRlbGltX2lkeCkpIC0gMjtcbiAgICBjaGFyX21heCA8IDAgPyBDYW5QYXNzIDogQ2FuRW50ZXIoZGVsaW1faWR4LCBjaGFyX21heCk7XG4gIHwgKEJ5VG9rZW4sIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIF8sIF8pID0+IENhblBhc3NcbiAgfTtcbn07XG5cbmxldCBuZWlnaGJvcl9tb3ZhYmlsaXR5ID1cbiAgICAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywge3JlbGF0aXZlczoge3NpYmxpbmdzLCBhbmNlc3RvcnN9LCBffTogdClcbiAgICA6IChtb3ZhYmlsaXR5LCBtb3ZhYmlsaXR5KSA9PiB7XG4gIGxldCBtb3ZhYmlsaXR5ID0gbW92YWJpbGl0eShjaHVua2luZXNzKTtcbiAgbGV0IChzdXBlcm5oYnJfbCwgc3VwZXJuaGJyX3IpID1cbiAgICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICAgIHwgW10gPT4gKENhbnRFdmVuLCBDYW50RXZlbilcbiAgICB8IFsoe2NoaWxkcmVuOiAobF9raWRzLCBfKSwgbGFiZWwsIF99LCBfKSwgLi4uX10gPT4gKFxuICAgICAgICBtb3ZhYmlsaXR5KGxhYmVsLCBMaXN0Lmxlbmd0aChsX2tpZHMpKSxcbiAgICAgICAgbW92YWJpbGl0eShsYWJlbCwgTGlzdC5sZW5ndGgobF9raWRzKSArIDEpLFxuICAgICAgKVxuICAgIH07XG4gIGxldCAobF9uaGJyLCByX25oYnIpID0gU2libGluZ3MubmVpZ2hib3JzKHNpYmxpbmdzKTtcbiAgbGV0IGwgPVxuICAgIHN3aXRjaCAobF9uaGJyKSB7XG4gICAgfCBTb21lKFRpbGUoe2xhYmVsLCBffSkpID0+IG1vdmFiaWxpdHkobGFiZWwsIExpc3QubGVuZ3RoKGxhYmVsKSAtIDEpXG4gICAgfCBTb21lKFNlY29uZGFyeSh3KSkgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudCh3KSA9PlxuICAgICAgLy8gQ29tbWVudHMgYXJlIGFsd2F5cyBsZW5ndGggPj0gMlxuICAgICAgbGV0IGNvbnRlbnRfc3RyaW5nID0gU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KTtcbiAgICAgIENhbkVudGVyKFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAxLFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyLFxuICAgICAgKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfbFxuICAgIH07XG4gIGxldCByID1cbiAgICBzd2l0Y2ggKHJfbmhicikge1xuICAgIHwgU29tZShUaWxlKHtsYWJlbCwgX30pKSA9PiBtb3ZhYmlsaXR5KGxhYmVsLCAwKVxuICAgIHwgU29tZShTZWNvbmRhcnkodykpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICAgIC8vIENvbW1lbnRzIGFyZSBhbHdheXMgbGVuZ3RoID49IDJcbiAgICAgIGxldCBjb250ZW50X3N0cmluZyA9IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCk7XG4gICAgICBDYW5FbnRlcigwLCBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfclxuICAgIH07XG4gIChsLCByKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE06IEVkaXRvci5NZXRhLlMpID0+IHtcbiAgbGV0IGNhcmV0X3BvaW50ID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQpO1xuXG4gIGxldCBwb3Bfb3V0ID0geiA9PiBTb21lKHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikpO1xuICBsZXQgcG9wX21vdmUgPSAoZCwgeikgPT4geiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShkKTtcbiAgbGV0IGlubmVyX2luY3IgPSAoZGVsaW0sIGMsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRlbGltLCBjICsgMSksIHopKTtcbiAgbGV0IGlubmVyX2RlY3IgPSB6ID0+IFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSk7XG4gIGxldCBpbm5lcl9zdGFydCA9IChkX2luaXQsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRfaW5pdCwgMCksIHopKTtcbiAgbGV0IGlubmVyX2VuZCA9IChkLCBkX2luaXQsIGNfbWF4LCB6KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2luaXQsIGNfbWF4KSkgfD4gWmlwcGVyLm1vdmUoZCk7XG5cbiAgbGV0IHByaW1hcnkgPSAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIHN3aXRjaCAoZCwgei5jYXJldCwgbmVpZ2hib3JfbW92YWJpbGl0eShjaHVua2luZXNzLCB6KSkge1xuICAgIC8qIHRoaXMgY2FzZSBtYXliZSBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBjdXJyZW50bHkgY292ZXJzIGFuIGVkZ2VcbiAgICAgICAoc2VsZWN0IGFuIG9wZW4gcGFyZW5zIHRvIGxlZnQgb2YgYSBtdWx0aWNoYXIgdG9rZW4gYW5kIHByZXNzIGxlZnQpICovXG4gICAgfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKExlZnQsIE91dGVyLCAoQ2FuRW50ZXIoZGxtLCBjX21heCksIF8pKSA9PlxuICAgICAgaW5uZXJfZW5kKGQsIGRsbSwgY19tYXgsIHopXG4gICAgfCAoTGVmdCwgT3V0ZXIsIF8pID0+IFppcHBlci5tb3ZlKGQsIHopXG4gICAgfCAoTGVmdCwgSW5uZXIoXyksIF8pIHdoZW4gY2h1bmtpbmVzcyA9PSBCeVRva2VuID0+IHBvcF9vdXQoeilcbiAgICB8IChMZWZ0LCBJbm5lcihfKSwgXykgPT5cbiAgICAgIFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSlcbiAgICB8IChSaWdodCwgT3V0ZXIsIChfLCBDYW5FbnRlcihkX2luaXQsIF8pKSkgPT4gaW5uZXJfc3RhcnQoZF9pbml0LCB6KVxuICAgIHwgKFJpZ2h0LCBPdXRlciwgXykgPT4gWmlwcGVyLm1vdmUoZCwgeilcbiAgICB8IChSaWdodCwgSW5uZXIoXywgYyksIChfLCBDYW5FbnRlcihfLCBjX21heCkpKSB3aGVuIGMgPT0gY19tYXggPT5cbiAgICAgIHBvcF9tb3ZlKGQsIHopXG4gICAgfCAoUmlnaHQsIElubmVyKF8pLCBfKSB3aGVuIGNodW5raW5lc3MgPT0gQnlUb2tlbiA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKFJpZ2h0LCBJbm5lcihkZWxpbSwgYyksIF8pID0+IGlubmVyX2luY3IoZGVsaW0sIGMsIHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgaXNfYXRfc2lkZV9vZl9yb3cgPSAoZDogRGlyZWN0aW9uLnQsIHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IE1lYXN1cmVkLlBvaW50Lntyb3csIGNvbH0gPSBjYXJldF9wb2ludCh6KTtcbiAgICBzd2l0Y2ggKFppcHBlci5tb3ZlKGQsIHopKSB7XG4gICAgfCBOb25lID0+IHRydWVcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCBNZWFzdXJlZC5Qb2ludC57cm93OiByb3dwLCBjb2w6IGNvbHB9ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgICByb3cgIT0gcm93cCB8fCBjb2wgPT0gY29scDtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBkb190b3dhcmRzID1cbiAgICAgIChcbiAgICAgICAgfmFuY2hvcjogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpPT8sXG4gICAgICAgIGY6IChEaXJlY3Rpb24udCwgdCkgPT4gb3B0aW9uKHQpLFxuICAgICAgICBnb2FsOiBNZWFzdXJlZC5Qb2ludC50LFxuICAgICAgICB6OiB0LFxuICAgICAgKVxuICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGQgPVxuICAgICAgZ29hbC5yb3cgPCBpbml0LnJvdyB8fCBnb2FsLnJvdyA9PSBpbml0LnJvdyAmJiBnb2FsLmNvbCA8IGluaXQuY29sXG4gICAgICAgID8gRGlyZWN0aW9uLkxlZnQgOiBSaWdodDtcbiAgICBsZXQgcmVjIGdvID0gKHByZXY6IHQsIGN1cnI6IHQpID0+IHtcbiAgICAgIGxldCBjdXJyX3AgPSBjYXJldF9wb2ludChjdXJyKTtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1lYXN1cmVkLlBvaW50LmRjb21wKGQsIGN1cnJfcC5jb2wsIGdvYWwuY29sKSxcbiAgICAgICAgTWVhc3VyZWQuUG9pbnQuZGNvbXAoZCwgY3Vycl9wLnJvdywgZ29hbC5yb3cpLFxuICAgICAgKSB7XG4gICAgICB8IChFeGFjdCwgRXhhY3QpID0+IGN1cnJcbiAgICAgIHwgKF8sIE92ZXIpID0+IHByZXZcbiAgICAgIHwgKF8sIFVuZGVyKVxuICAgICAgfCAoVW5kZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGYoZCwgY3VycikpIHtcbiAgICAgICAgfCBOb25lID0+IGN1cnJcbiAgICAgICAgfCBTb21lKG5leHQpID0+IGdvKGN1cnIsIG5leHQpXG4gICAgICAgIH1cbiAgICAgIHwgKE92ZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGFuY2hvcikge1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIHdoZW4geW91J3JlIChlZykgeW91J3JlIHRyeWluZ1xuICAgICAgICAgICAgIHRvIG1vdmUgZG93biwgYnV0IHlvdSdyZSBhdCB0aGUgcmlnaHQgZW5kIG9mIGEgcm93XG4gICAgICAgICAgICAgYW5kIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgbmV4dCByb3cgaXMgZnVydGhlclxuICAgICAgICAgICAgIHJpZ2h0IHRoYW4gdGhlIGN1cnJlbnQgcm93J3MgZW5kLiBJbiB0aGlzIGNhc2Ugd2VcbiAgICAgICAgICAgICB3YW50IHRvIHByb2dyZXNzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbmV3XG4gICAgICAgICAgICAgcG9zaXRpb24gd291bGQgYmUgY2xvc2VyIG9yIGZ1dGhlciBmcm9tIHRoZVxuICAgICAgICAgICAgIGdvYWwgY29sICovXG4gICAgICAgICAgaXNfYXRfc2lkZV9vZl9yb3coRGlyZWN0aW9uLnRvZ2dsZShkKSwgY3VycilcbiAgICAgICAgICAgID8gY3VyclxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGxldCBkX2N1cnIgPSBhYnMoY3Vycl9wLmNvbCAtIGdvYWwuY29sKTtcbiAgICAgICAgICAgICAgbGV0IGRfcHJldiA9IGFicyhjYXJldF9wb2ludChwcmV2KS5jb2wgLSBnb2FsLmNvbCk7XG4gICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gZ29pbmcgb3ZlciB3aGVuIGVxdWFsXG4gICAgICAgICAgICAgIGRfcHJldiA8IGRfY3VyciA/IHByZXYgOiBjdXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUoYW5jaG9yKSA9PlxuICAgICAgICAgIGxldCBhbmNob3JfZCA9XG4gICAgICAgICAgICBnb2FsLnJvdyA8IGFuY2hvci5yb3dcbiAgICAgICAgICAgIHx8IGdvYWwucm93ID09IGFuY2hvci5yb3dcbiAgICAgICAgICAgICYmIGdvYWwuY29sIDwgYW5jaG9yLmNvbFxuICAgICAgICAgICAgICA/IERpcmVjdGlvbi5MZWZ0IDogUmlnaHQ7XG4gICAgICAgICAgYW5jaG9yX2QgPT0gZCA/IGN1cnIgOiBwcmV2O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IHJlcyA9IGdvKHosIHopO1xuICAgIE1lYXN1cmVkLlBvaW50LmVxdWFscyhjYXJldF9wb2ludChyZXMpLCBjYXJldF9wb2ludCh6KSlcbiAgICAgID8gTm9uZSA6IFNvbWUocmVzKTtcbiAgfTtcbiAgbGV0IGRvX3ZlcnRpY2FsID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIC8qIEhlcmUgZiBzaG91bGQgYmUgYSBmdW5jdGlvbiB3aGljaCByZXN1bHRzIGluIHN0cmljdCBkLXdhcmRzXG4gICAgICAgbW92ZW1lbnQgb2YgdGhlIGNhcmV0LiBJdGVyYXRlIGYgdW50aWwgd2UgZ2V0IHRvIHRoZSBjbG9zZXRcbiAgICAgICBjYXJldCBwb3NpdGlvbiB0byBhIHRhcmdldCBkZXJpdmVkIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24gKi9cbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbCA9XG4gICAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICAgIGNvbDogTS5jb2xfdGFyZ2V0LFxuICAgICAgICByb3c6IGN1cl9wLnJvdyArIChkID09IFJpZ2h0ID8gMSA6ICgtMSkpLFxuICAgICAgfTtcbiAgICBkb190b3dhcmRzKGYsIGdvYWwsIHopO1xuICB9O1xuXG4gIGxldCBkb19leHRyZW1lID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogcGxhbmFyLCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbDogTWVhc3VyZWQuUG9pbnQudCA9XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgUmlnaHQoXykgPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBMZWZ0KF8pID0+IHtjb2w6IDAsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBVcCA9PiB7Y29sOiAwLCByb3c6IDB9XG4gICAgICB8IERvd24gPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogSW50Lm1heF9pbnR9XG4gICAgICB9O1xuICAgIGRvX3Rvd2FyZHMoZiwgZ29hbCwgeik7XG4gIH07XG5cbiAgbGV0IHRvX3N0YXJ0ID0gZG9fZXh0cmVtZShwcmltYXJ5KEJ5VG9rZW4pLCBVcCk7XG4gIGxldCB0b19lbmQgPSBkb19leHRyZW1lKHByaW1hcnkoQnlUb2tlbiksIERvd24pO1xuXG4gIGxldCB0b19lZGdlOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSA9XG4gICAgZnVuXG4gICAgfCBMZWZ0ID0+IHRvX3N0YXJ0XG4gICAgfCBSaWdodCA9PiB0b19lbmQ7XG5cbiAgLyogRG8gbW92ZV9hY3Rpb24gdW50aWwgdGhlIGluZGljYXRlZCBwaWVjZSBpcyBzdWNoIHRoYXQgcGllY2VfcCBpcyB0cnVlLlxuICAgICBJZiBubyBzdWNoIHBpZWNlIGlzIGZvdW5kLCBkb24ndCBtb3ZlLiAqL1xuICBsZXQgcmVjIGRvX3VudGlsID1cbiAgICAgICAgICAoXG4gICAgICAgICAgICB+bW92ZV9maXJzdD10cnVlLFxuICAgICAgICAgICAgbW92ZV9hY3Rpb246IHQgPT4gb3B0aW9uKHQpLFxuICAgICAgICAgICAgcGllY2VfcDogUGllY2UudCA9PiBib29sLFxuICAgICAgICAgICAgejogdCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCogeiA9IG1vdmVfZmlyc3QgPyBtb3ZlX2FjdGlvbih6KSA6IFNvbWUoeik7XG4gICAgbGV0KiAocGllY2UsIF8sIF8pID0gSW5kaWNhdGVkLnBpZWNlJyh+bm9fd3M9ZmFsc2UsIH5pZ249XyA9PiBmYWxzZSwgeik7XG4gICAgaWYgKHBpZWNlX3AocGllY2UpKSB7XG4gICAgICBTb21lKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQqIHogPSBtb3ZlX2ZpcnN0ID8gU29tZSh6KSA6IG1vdmVfYWN0aW9uKHopO1xuICAgICAgZG9fdW50aWwofm1vdmVfZmlyc3QsIG1vdmVfYWN0aW9uLCBwaWVjZV9wLCB6KTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIERvIG1vdmVfYWN0aW9uIHVudGlsIHRoZSBpbmRpY2F0ZWQgcGllY2UgaXMgc3VjaCB0aGF0IHBpZWNlX3AgaXMgdHJ1ZSxcbiAgICAgcmVzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcvZW5kIGlmIG5vdCBmb3VuZCBpbiBmb3J3YXJkIGRpcmVjdGlvbi5cbiAgICAgSWYgbm8gc3VjaCBwaWVjZSBpcyBmb3VuZCwgZG9uJ3QgbW92ZS4gKi9cbiAgbGV0IGRvX3VudGlsX3dyYXAgPSAocCwgZCwgeikgPT5cbiAgICBzd2l0Y2ggKGRvX3VudGlsKHByaW1hcnkoQnlUb2tlbiwgZCksIHAsIHopKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQqIHogPSB0b19lZGdlKERpcmVjdGlvbi50b2dnbGUoZCksIHopO1xuICAgICAgZG9fdW50aWwocHJpbWFyeShCeVRva2VuLCBkKSwgcCwgeik7XG4gICAgfCBTb21lKHopID0+IFNvbWUoeilcbiAgICB9O1xuXG4gIGxldCBqdW1wX3RvX2lkID0gKHo6IHQsIGlkOiBJZC50KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQqIHtvcmlnaW4sIF99ID0gTWVhc3VyZWQuZmluZF9ieV9pZChpZCwgTS5tZWFzdXJlZCk7XG4gICAgbGV0IHogPVxuICAgICAgc3dpdGNoICh0b19zdGFydCh6KSkge1xuICAgICAgfCBOb25lID0+IHpcbiAgICAgIHwgU29tZSh6KSA9PiB6XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZG9fdG93YXJkcyhwcmltYXJ5KEJ5Q2hhciksIG9yaWdpbiwgeikpIHtcbiAgICB8IE5vbmUgPT4gU29tZSh6KVxuICAgIHwgU29tZSh6KSA9PiBTb21lKHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmVydGljYWwgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgICB6LnNlbGVjdGlvbi5jb250ZW50ID09IFtdXG4gICAgICA/IGRvX3ZlcnRpY2FsKHByaW1hcnkoQnlDaGFyKSwgZCwgeilcbiAgICAgIDogU29tZShaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpO1xuXG4gIGxldCB0YXJnZXRzX3dpdGhpbl9yb3cgPSAoejogdCk6IGxpc3QodCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IHJlYyBnbyA9IChkOiBEaXJlY3Rpb24udCwgejogdCkgPT4ge1xuICAgICAgc3dpdGNoIChwcmltYXJ5KEJ5Q2hhciwgZCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKHopID0+XG4gICAgICAgIGlmIChjYXJldF9wb2ludCh6KS5yb3cgIT0gaW5pdC5yb3cpIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBnbyhkLCB6KVxuICAgICAgICAgIHwgU29tZShfKSA9PiBbeiwgLi4uZ28oZCwgeildXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBjdXJyID1cbiAgICAgIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShfKSA9PiBbel1cbiAgICAgIH07XG4gICAgTGlzdC5yZXYoZ28oTGVmdCwgeikpIEAgY3VyciBAIGdvKFJpZ2h0LCB6KTtcbiAgfTtcblxuICAvLyBUT0RPKGQpOiB1bmlmeSB0aGlzIGxvZ2ljIHdpdGggcmVzdCBvZiBtb3ZlbWVudCBsb2dpY1xuICBsZXQgcmVjIHRvX2JhY2twYWNrX3RhcmdldCA9IChkOiBwbGFuYXIsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBkb25lX29yX3RyeV9hZ2FpbiA9IChkLCB6KSA9PlxuICAgICAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgICAgIHwgTm9uZSA9PiB0b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHwgU29tZShfKSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIExlZnQsIHopO1xuICAgICAgZG9uZV9vcl90cnlfYWdhaW4oZCwgeik7XG4gICAgfCBSaWdodChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIFJpZ2h0LCB6KTtcbiAgICAgIGRvbmVfb3JfdHJ5X2FnYWluKGQsIHopO1xuICAgIHwgVXAgPT5cbiAgICAgIGxldCogeiA9IHZlcnRpY2FsKExlZnQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgbGVmdFxuICAgICAgICAgICAgIGMgIT0gMCA/IGMgOiBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHwgRG93biA9PlxuICAgICAgbGV0KiB6ID0gdmVydGljYWwoUmlnaHQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgcmlnaHRcbiAgICAgICAgICAgICBjICE9IDAgPyBjIDogLSBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbGV0IGdvID0gKGQ6IEFjdGlvbi5tb3ZlLCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT5cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IEdvYWwoUGllY2UocCwgZCkpID0+IGRvX3VudGlsX3dyYXAoQWN0aW9uLm9mX3BpZWNlX2dvYWwocCksIGQsIHopXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IHogPSBaaXBwZXIudW5zZWxlY3Qoeik7XG4gICAgICBkb190b3dhcmRzKHByaW1hcnkoQnlDaGFyKSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IGRvX2V4dHJlbWUocHJpbWFyeShCeVRva2VuKSwgZCwgeilcbiAgICB8IExvY2FsKGQpID0+XG4gICAgICB6XG4gICAgICB8PiAoXG4gICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICB8IExlZnQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIExlZnQpXG4gICAgICAgIHwgUmlnaHQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIFJpZ2h0KVxuICAgICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQpXG4gICAgICAgIHwgRG93biA9PiB2ZXJ0aWNhbChSaWdodClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIE1ha2UgPSAoTTogRWRpdG9yLk1ldGEuUykgPT4ge1xuICBtb2R1bGUgTW92ZSA9IE1vdmUuTWFrZShNKTtcblxuICBsZXQgcHJpbWFyeSA9IChkOiBEaXJlY3Rpb24udCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+XG4gICAgaWYgKHouY2FyZXQgPT0gT3V0ZXIpIHtcbiAgICAgIFppcHBlci5zZWxlY3QoZCwgeik7XG4gICAgfSBlbHNlIGlmIChkID09IExlZnQpIHtcbiAgICAgIHpcbiAgICAgIHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpXG4gICAgICB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLnNlbGVjdChkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLnNlbGVjdChkKTtcbiAgICB9O1xuXG4gIGxldCB2ZXJ0aWNhbCA9IChkOiBEaXJlY3Rpb24udCwgZWQ6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PlxuICAgIE1vdmUuZG9fdmVydGljYWwocHJpbWFyeSwgZCwgZWQpO1xuXG4gIGxldCByYW5nZSA9IChsOiBJZC50LCByOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IE1vdmUuanVtcF90b19pZCh6LCBsKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQociwgTS5tZWFzdXJlZCk7XG4gICAgTW92ZS5kb190b3dhcmRzKHByaW1hcnksIGxhc3QsIHopO1xuICB9O1xuXG4gIGxldCB0ZXJtID0gKGlkOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIC8vVE9ETzogY2hlY2sgaWYgc2VsZWN0aW9uIGlzIGFscmVhZHkgYSB0ZXJtOiBuby1vcCBpbiB0aGlzIGNhc2VcbiAgICBsZXQqIChsLCByKSA9IFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIE0udGVybV9yYW5nZXMpO1xuICAgIHJhbmdlKFBpZWNlLmlkKGwpLCBQaWVjZS5pZChyKSwgeik7XG4gIH07XG5cbiAgbGV0IHRpbGUgPSAoaWQ6IElkLnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gTW92ZS5qdW1wX3RvX2lkKHosIGlkKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIE0ubWVhc3VyZWQpO1xuICAgIE1vdmUuZG9fdG93YXJkcyhwcmltYXJ5LCBsYXN0LCB6KTtcbiAgfTtcblxuICBsZXQgZ28gPSAoZDogQWN0aW9uLm1vdmUsIHo6IFppcHBlci50KSA9PlxuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgR29hbChQaWVjZShfKSkgPT4gZmFpbHdpdGgoXCJTZWxlY3QuZ28gbm90IGltcGxlbWVudGVkIGZvciBQaWVjZSBHb2FsXCIpXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IGFuY2hvciA9IHogfD4gWmlwcGVyLnRvZ2dsZV9mb2N1cyB8PiBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCk7XG4gICAgICBNb3ZlLmRvX3Rvd2FyZHMofmFuY2hvciwgcHJpbWFyeSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IE1vdmUuZG9fZXh0cmVtZShwcmltYXJ5LCBkLCB6KVxuICAgIHwgTG9jYWwoZCkgPT5cbiAgICAgIC8qIE5vdGU6IERvbid0IHVwZGF0ZSB0YXJnZXQgb24gdmVydGljYWwgc2VsZWN0aW9uICovXG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgTGVmdChfKSA9PiBwcmltYXJ5KExlZnQsIHopXG4gICAgICB8IFJpZ2h0KF8pID0+IHByaW1hcnkoUmlnaHQsIHopXG4gICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQsIHopXG4gICAgICB8IERvd24gPT4gdmVydGljYWwoUmlnaHQsIHopXG4gICAgICB9XG4gICAgfTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBiYXJmID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogUmVtb3ZlcyB0aGUgZC1uZWlnaGJvcmluZyB0aWxlIGFuZCBkcm9wcyBmcm9tIGJhY2twYWNrO1xuICAgICBwcmVjb25kaXRpb246IHRoZSBkLW5laWdoYm9yIHNob3VsZCBiZSBhIG1vbm90aWxlXG4gICAgIHN0cmluZy1tYXRjaGluZyB0aGUgZHJvcHBpbmcgc2hhcmQgKi9cbiAgbGV0KiB6ID0gZGVsZXRlKGQsIHopO1xuICBsZXQrIHogPSBwdXRfZG93bihkLCB6KTtcbiAgejtcbn07XG5cbmxldCBkZWxheWVkX2V4cGFuZCA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBSZW1vdmVzIHRoZSBkLW5laWdoYm9yaW5nIHRpbGUgYW5kIHJlY29uc3RydWN0cyBpdCwgdHJpZ2dlcmluZ1xuICAgICBrZXl3b3JkLWV4cGFuc2lvbjsgcHJlY29uZGl0aW9uOiB0aGUgZC1uZWlnaGJvciBzaG91bGQgYmUgYSBtb25vdGlsZVxuICAgICBzdHJpbmctbWF0Y2hpbmcgYSBrZXl3b3JkIG9mIGFuIGV4cGFuZGluZyBmb3JtICovXG4gIGxldCAobmV3X2xhYmVsLCBiYWNrcGFjaykgPSBNb2xkcy5kZWxheWVkX2V4cGFuc2lvbih0KTtcbiAgbGV0KyB6ID0gZGVsZXRlKGNhcmV0LCB6KTtcbiAgY29uc3RydWN0KH5iYWNrcGFjaywgfmNhcmV0LCBuZXdfbGFiZWwsIHopO1xufTtcblxubGV0IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIGxlZnQgbmVpZ2hib3IgaXMgYSBtb25vdGlsZSAoYSkgc3RyaW5nLW1hdGNoaW5nIHRoZSBzaGFyZCBhdCB0aGVcbiAgICAgdG9wIG9mIHRoZSBiYWNrcGFjaywgYmFyZiBpdCwgb3IgKGIpIGFuIGV4cGFuc2luZyBrZXl3b3JkLCBleHBhbmQgaXQuICovXG4gIHN3aXRjaCAobGVmdF9uZWlnaGJvcl9tb25vdGlsZSh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKHQpIHdoZW4gQmFja3BhY2sud2lsbF9iYXJmKHQsIHouYmFja3BhY2spID0+IGJhcmYoTGVmdCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBMZWZ0LCBzKVxuICB8IF8gPT4gU29tZShzKVxuICB9O1xuXG5sZXQgZXhwYW5kX29yX2JhcmZfcmlnaHRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIHJpZ2h0IG5laWdoYm9yIGlzIGEgbW9ub3RpbGUgKGEpIHN0cmluZy1tYXRjaGluZyB0aGUgc2hhcmQgYXQgdGhlXG4gICAgIHRvcCBvZiB0aGUgYmFja3BhY2ssIGJhcmYgaXQsIG9yIChiKSBhbiBleHBhbnNpbmcga2V5d29yZCwgZXhwYW5kIGl0LiAqL1xuICBzd2l0Y2ggKHJpZ2h0X25laWdoYm9yX21vbm90aWxlKHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICB8IFNvbWUodCkgd2hlbiBCYWNrcGFjay53aWxsX2JhcmYodCwgei5iYWNrcGFjaykgPT4gYmFyZihSaWdodCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBSaWdodCwgcylcbiAgfCBfID0+IFNvbWUocylcbiAgfTtcblxubGV0IGdldF9kdW9fc2hhcmQgPSAoe2xhYmVsLCBzaGFyZHMsIF99OiBUaWxlLnQpID0+XG4gIGlmIChMaXN0Lmxlbmd0aChsYWJlbCkgPT0gMiAmJiBMaXN0Lmxlbmd0aChzaGFyZHMpID09IDEpIHtcbiAgICBMaXN0Lm50aF9vcHQobGFiZWwsIExpc3QuaGQoc2hhcmRzKSk7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IG5laWdoYm9yX2Nhbl9kdW9tZXJnZSA9XG4gICAgKHQ6IFRva2VuLnQsIHM6IFNpYmxpbmdzLnQpOiBvcHRpb24oKExhYmVsLnQsIERpcmVjdGlvbi50KSkgPT5cbiAgLyogQ2hlY2tzIGlmIGEgbmVpZ2hib3IsIHByZWZlcmVudGlhbGx5IHRoZSBsZWZ0IG5laWdoYm9yLCBpc1xuICAgICBhIHNoYXJkIG9mIGEgZHVvdGlsZSB3aGljaCBjYW4gYmUgbWVyZ2VkIHRvIGZvcm0gYSBtb25vdGlsZS5cbiAgICAgSXQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIChtb25vKWxhYmVsLCBhbmQgdGhlIGRpcmVjdGlvbiBvZlxuICAgICB0aGUgcmVsZXZhbnQgbmVpZ2hib3IuICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHMpKSB7XG4gIHwgKFNvbWUoVGlsZSh0aWxlKSksIF8pID0+XG4gICAgbGV0KiBzdGFydCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFtzdGFydCwgdF0pO1xuICAgIChtb25vX2xibCwgRGlyZWN0aW9uLkxlZnQpO1xuICB8IChfLCBTb21lKFRpbGUodGlsZSkpKSA9PlxuICAgIGxldCogbGFzdCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFt0LCBsYXN0XSk7XG4gICAgKG1vbm9fbGJsLCBEaXJlY3Rpb24uUmlnaHQpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgbWFrZV9uZXdfdGlsZSA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+XG4gIC8qIEFkZHMgYSBuZXcgdGlsZSBhdCB0aGUgY2FyZXQuIElmIHRoZSBuZXcgdG9rZW4gbWF0Y2hlcyB0aGUgdG9wXG4gICAgIG9mIHRoZSBiYWNrcGFjaywgdGhlIGJhY2twYWNrIHNoYXJkIGlzIGRyb3BwZWQuIE90aGVyd2lzZSwgd2VcbiAgICAgY29uc3RydWN0IGEgbmV3IHRpbGUsIHdoaWNoIG1heSBpbW1lZGlhdGVseSBleHBhbmQuICovXG4gIEJhY2twYWNrLndpbGxfYmFyZih0LCB6LmJhY2twYWNrKVxuICAgID8gc3dpdGNoIChuZWlnaGJvcl9jYW5fZHVvbWVyZ2UodCwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICB8IFNvbWUoKGxibCwgZCkpID0+XG4gICAgICAgIFppcHBlci5yZXBsYWNlKH5jYXJldD1kLCB+YmFja3BhY2s9ZCwgbGJsLCB6KSB8PiBPcHRpb24uZ2V0XG4gICAgICB8IE5vbmUgPT4gcHV0X2Rvd24oY2FyZXQsIHopIHw+IE9wdGlvbi5nZXRcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgIGxldCAobGJsLCBiYWNrcGFjaykgPSBNb2xkcy5pbnN0YW50X2V4cGFuc2lvbih0KTtcbiAgICAgIGxldCB6ID0gY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsYmwsIHopO1xuICAgICAgejtcbiAgICB9O1xuXG5sZXQgZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfdGlsZSA9IChjaGFyOiBUb2tlbi50LCBzdGF0ZTogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIFRyaWdnZXIgYSB0b2tlbiBib3VuZGFyeSBldmVudCBhbmQgY3JlYXRlIGEgbmV3IHRpbGUuXG4gICAgIFRoaXMgcHJvY2VzcyBwb3RlbnRpYWxseSBpbnZvbHZlcyBib3RoIG5laWdoYm9yaW5nIHRpbGVzLFxuICAgICBwb3RlbnRpYWxseSB0cmlnZ2VyaW5nIHVwIHRvIDMgZXhwYW5zaW9ucyBvciBiYWNrcGFjayBiYXJmcy5cbiAgICAgSW4gcGFydGljdWxhciwgYm90aCBsZWZ0IGFuZCByaWdodCBuZWlnaGJvcmluZyBtb25vdGlsZXMgbWF5XG4gICAgIHVuZGVyZ28gZGVsYXllZCAoYWthIGtleXdvcmQpIGV4cGFuc2lvbiwgYW5kIHRoZSBuZXdseS1jcmVhdGVkXG4gICAgIHNpbmdsZS1jaGFyYWN0ZXIgdG9rZW4gbWF5IHVuZGVyZ28gaW5zdGFudCBleHBhbnNpb24uIEN1cnJlbnRseVxuICAgICBtYWRlIHRoZSBkZWNpc2lvbiB0byBleHBhbmQgb3IgYmFyZiB0aGUgbmVpZ2hib3JzIGJlZm9yZSBtYWtpbmdcbiAgICAgdGhlIG5ldyB0aWxlIGJlY2F1c2UgYmFyZmluZyBpcyBsaW1pdGVkIHRvIHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLFxuICAgICBhbmQgSSB3YW50ZWQgdGhpbmdzIGxpa2UgXCJpZnx0aGVuXCIsIHdoZW4geW91IGVudGVyIGEgXCIoXCIsIHRvXG4gICAgIGJhcmYgdGhlIFwidGhlblwiLCBiZWZvcmUgaXQgaXMgYnVyaWVkIGJ5IHRoZSBcIilcIiBhZGRlZCB0byB0aGUgQlAuXG4gICAgIFRoZSBvcmRlciBoZXJlIGNvdWxkIGJlIHJldmlzaXRlZCBpZiBiYXJmaW5nIHdhcyBtb3JlIHNvcGhpc3RpY2F0ZWQuXG4gICAgICovXG4gIGxldCogeiA9IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3Ioc3RhdGUpO1xuICAvL2xldCAoeikgPSByZWdyb3V0KExlZnQsIHopO1xuICAvKiBOb3RlIHRvIGRhdmlkOiBJJ20gbm90IHN1cmUgd2h5IHRoZSBhYm92ZSByZWdyb3V0IGlzIG5lY2Vzc2FyeS5cbiAgICAgV2l0aG91dCBpdCwgdGhlcmUgaXMgYSBOb25jb252ZXggc2VnbWVudCBlcnJvciB0aHJvd24gaW4gZXhhY3RseVxuICAgICBvbmUgY2FzZSwgdGhlIGRvdWJsZSBiYXJmIGNhc2U6IGluc2VydCBzcGFjZSBvbiBcImlmIHRoZW58ZWxzZVwiICovXG4gIGxldCsgeiA9IGV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yKHopO1xuICBtYWtlX25ld190aWxlKGNoYXIsIExlZnQsIHopO1xufTtcblxubGV0IHJlcGxhY2VfdGlsZSA9ICh0OiBUb2tlbi50LCBkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCsgeiA9IGRlbGV0ZShkLCB6KTtcbiAgbWFrZV9uZXdfdGlsZSh0LCBkLCB6KTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBwZW5kYWJpbGl0eSA9XG4gIHwgQXBwZW5kTGVmdChUb2tlbi50KVxuICB8IEFwcGVuZFJpZ2h0KFRva2VuLnQpXG4gIHwgTWFrZU5ldztcblxubGV0IHNpYmxpbmdfYXBwZW5kYWJpbGl0eTogKHN0cmluZywgU2libGluZ3MudCkgPT4gYXBwZW5kYWJpbGl0eSA9XG4gIChjaGFyLCBzaWJsaW5ncykgPT5cbiAgICBzd2l0Y2ggKG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgICB8IChTb21lKHQpLCBfKSB3aGVuIE1vbGRzLmFsbG93X2FwcGVuZF9yaWdodCh0LCBjaGFyKSA9PlxuICAgICAgQXBwZW5kTGVmdCh0ICsrIGNoYXIpXG4gICAgfCAoXywgU29tZSh0KSkgd2hlbiBNb2xkcy5hbGxvd19hcHBlbmRfbGVmdChjaGFyLCB0KSA9PlxuICAgICAgQXBwZW5kUmlnaHQoY2hhciArKyB0KVxuICAgIHwgXyA9PiBNYWtlTmV3XG4gICAgfTtcblxubGV0IGluc2VydF9vdXRlciA9IChjaGFyOiBzdHJpbmcsIHogYXMgc3RhdGU6IHQpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChzaWJsaW5nX2FwcGVuZGFiaWxpdHkoY2hhciwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gIHwgTWFrZU5ldyA9PiBleHBhbmRfbmVpZ2hib3JzX2FuZF9tYWtlX25ld190aWxlKGNoYXIsIHN0YXRlKVxuICB8IEFwcGVuZExlZnQodCkgPT4gcmVwbGFjZV90aWxlKHQsIExlZnQsIHN0YXRlKVxuICB8IEFwcGVuZFJpZ2h0KHQpID0+IHJlcGxhY2VfdGlsZSh0LCBSaWdodCwgc3RhdGUpXG4gIH07XG5cbmxldCBpbnNlcnRfZHVvID0gKGxibDogTGFiZWwudCwgejogb3B0aW9uKHQpKTogb3B0aW9uKHQpID0+XG4gIHpcbiAgfD4gT3B0aW9uLm1hcCh6ID0+IFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsYmwsIHopKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKHogPT4ge1xuICAgICAgIC8vTk9URTogcmVncm91dCB0byBwdXQgZS5nLiBhcCgxfCkgYmFjayB0b2dldGhlclxuICAgICAgIHpcbiAgICAgICB8PiByZW1vbGRfcmVncm91dChMZWZ0KVxuICAgICAgIHw+IFppcHBlci5wdXRfZG93bihMZWZ0KVxuICAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLm1vdmUoTGVmdCkpXG4gICAgIH0pO1xuXG5sZXQgaW5zZXJ0X21vbm9zID0gKGw6IFRva2VuLnQsIHI6IFRva2VuLnQsIHo6IG9wdGlvbih0KSk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdF9tb25vKFJpZ2h0LCByKSlcbiAgfD4gT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0X21vbm8oTGVmdCwgbCkpO1xuXG5sZXQgc3BsaXQgPSAoejogdCwgY2hhcjogc3RyaW5nLCBpZHg6IGludCwgdDogVG9rZW4udCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIEN1cnJlbnQgdGhpcyBuZWNlc3NhcmlseSBjcmVhdGVzIHRocmVlIHRva2VuczsgdHdvIGZyb20gc3BsaXR0aW5nXG4gICAqIHRoZSBleGlzdGluZyBvbmUsIGFuZCBhIG5ldyBvbmUuIFRoZSB0d28gc3BsaXR0aW5nIHRva2VucyBtYXkgYmVjb21lXG4gICAqIGRlbGltaXRlcnMgb2YgdGhlIHNhbWUgdGltZSAoZS5nLiBgW3xdYD0+YFs8PnxdYCkuIEluIHRoZSBmdXR1cmUgaXRcbiAgICogbWF5IGJlIHBydWRlbnQgdG8gcmVsYXggdGhpcyBieSwgYWZ0ZXIgc3BsaXR0aW5nLCBmaXJzdCBhdHRlbXB0aW5nXG4gICAqIHRvIGFwcGVuZCB0aGUgbmV3IGNoYXIgdG8gdGhlIGxlZnQgaGFsZiwgYW5kIHRoZW4gdGhlIHJpZ2h0IGhhbGYsXG4gICAqIGFuZCBvbmx5IGlmIHRob3NlIGZhaWwgY3JlYXRpbmcgYSBuZXcgY2VudGVyIHRva2VuLiAqL1xuICBsZXQgKGwsIHIpID0gVG9rZW4uc3BsaXRfbnRoKGlkeCwgdCk7XG4gIHpcbiAgfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcilcbiAgfD4gWmlwcGVyLnNlbGVjdChSaWdodClcbiAgfD4gKFxuICAgIC8qIG92ZXJ3cml0ZSBzZWxlY3Rpb24gKi9cbiAgICBzd2l0Y2ggKEZvcm0uZHVvbWVyZ2VzKFtsLCByXSkpIHtcbiAgICB8IFNvbWUoXykgPT4gaW5zZXJ0X2R1byhbbCwgcl0pXG4gICAgfCBOb25lID0+IGluc2VydF9tb25vcyhsLCByKVxuICAgIH1cbiAgKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKGV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3X3RpbGUoY2hhcikpO1xufTtcblxubGV0IG9wdF9yZWdyb2xkID0gZCA9PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KGQpKTtcblxubGV0IG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB6KSA9PlxuICAvKiBUaGlzIGlzIHNwZWNpYWwtY2FzZSBsb2dpYyBmb3IgYWR2YW5jaW5nIHRoZSBjYXJldCB0byBwb3NpdGlvbiBiZXR3ZWVuIHRoZSBxdW90ZXNcbiAgICAgaW4gbmV3bHktY3JlYXRlZCBzdHJpbmdsaXRzLiBUaGUgbWFpbiBzdHJpbmdsaXQgc3BlY2lhbC1jYXNlIGlzIGluIFppcHBlci5jb25zdHVjdFxuICAgICBhbmQgaWRlYWxseSB0aGlzIGxvZ2ljIHdvdWxkIGJlIGxvY2F0ZWQgdGhlcmUgYXMgd2VsbCwgYnV0IGJvdGggcmVncm91dGluZyBhbmRcbiAgICAgc3Vic2VxdWVudCBjYXJldCBwb3NpdGlvbiBsb2dpYyBhdCB0aGlzIGZ1bmN0aW9uJ3MgY2FsbHNpdGVzIGRpY2F0ZSB0aGF0IHRoaXNcbiAgICAgYmUgZG9uZSBhZnRlci4gTm90IHRvbyBoYXBweSBhYm91dCB0aGlzIHRiaC4gKi9cbiAgRm9ybS5pc19zdHJpbmdfZGVsaW0oY2hhcikgfHwgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpXG4gICAgPyBzd2l0Y2ggKG1vdmUoTGVmdCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiB6XG4gICAgICB8IFNvbWUoeikgPT4geiB8PiBzZXRfY2FyZXQoSW5uZXIoMCwgMCkpXG4gICAgICB9XG4gICAgOiB6O1xuXG5sZXQgY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB0KSA9PlxuICBGb3JtLmlzX3N0cmluZyh0KVxuICAmJiBGb3JtLmlzX3N0cmluZ19kZWxpbShjaGFyKVxuICB8fCBGb3JtLmlzX2NvbW1lbnQodClcbiAgJiYgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpO1xuXG5sZXQgZ28gPVxuICAgIChjaGFyOiBzdHJpbmcsIHtjYXJldCwgcmVsYXRpdmVzOiB7c2libGluZ3MsIF99LCBffSBhcyB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogSWYgdGhlcmUncyBhIHNlbGVjdGlvbiwgZGVsZXRlIGl0IGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIGxldCB6ID0gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA/IFppcHBlci5kZXN0cnVjdCh6KSA6IHo7XG4gIHN3aXRjaCAoY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgLyogSWYgd2UgdHJ5IHRvIGluc2VydCBhIHF1b3RlIGluc2lkZSBhbiBleGlzdGluZyBzdHJpbmcsIG9yIGEgI1xuICAgKiBpbiBhIGNvbW1lbnQsIHdlIGFyZSBpbnN0ZWFkIG1vdmVkIHRvIHRoZSByaWdodGhhbmQgc2lkZSBvZlxuICAgKiB0aGUgb3BlcmFuZC4gTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgbG9hZC1iZWFyaW5nIGZvciB0aGVcbiAgICogY3VycmVudCBwYXJzaW5nIGFwcHJvYWNoIGluY2x1ZGluZyBQYXN0ZSAqL1xuICB8IChfLCAoXywgU29tZSh0KSkpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gIHwgKE91dGVyLCAoU29tZSh0KSwgXykpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIFNvbWUoeilcbiAgfCAoSW5uZXIoZF9pZHgsIG4pLCAoXywgU29tZSh0KSkpID0+XG4gICAgbGV0IGlkeCA9IG4gKyAxO1xuICAgIGxldCBuZXdfdCA9IFRva2VuLmluc2VydF9udGgoaWR4LCBjaGFyLCB0KTtcbiAgICAvKiBJZiBpbnNlcnRpbmcgd291bGRuJ3QgcHJvZHVjZSBhIHZhbGlkIHRva2VuLCBzcGxpdC4gVGhpcyBpc1xuICAgICAqIG1vc3RseSB0YXJnZXR0aW5nIHRoZSBjYXNlIG9mIGluc2VydGluZyBhbiBpbmZpeCBvcGVyYXRvclxuICAgICAqIGluc2lkZSBhbiBvcGVyYW5kIChvciBtb3JlIHJhcmVseSB2aWNlLXZlcnNhKS4gSW4gc3VjaCBjYXNlcyxcbiAgICAgKiBkdWUgdG8gdGhlIGN1cnJlbnQgTU9TVExZIGRpc2pvaW50ZWRuZXNzIG9mIHRoZXNlIGNoYXJhY3RlclxuICAgICAqIGNsYXNzZXMsIEFMTCAoaXNoPykgY3VycmVudCBzcGxpdHMgc2hvdWxkIGJlIDMtd2F5XG4gICAgICogc3BsaXRzIChhcyBvcHBvc2VkIHRvIDItd2F5KS4gVGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHlcbiAgICAgKiBraW5kIG9mIHNwbGl0dGluZyBzdXBwb3J0ZWQ7IHRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCBpZlxuICAgICAqIHdlIG1vdmUgdG8gbW9yZSBzdWJ0bGUgdG9rZW4gZGl2aXNpb24gbG9naWMgKi9cbiAgICBNb2xkcy5hbGxvd19pbnNlcnRpb24oY2hhciwgdCwgbmV3X3QpXG4gICAgICA/IHpcbiAgICAgICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2lkeCwgaWR4KSlcbiAgICAgICAgfD4gWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgbmV3X3QpXG4gICAgICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgICA6IHNwbGl0KHosIGNoYXIsIGlkeCwgdCkgfD4gb3B0X3JlZ3JvbGQoUmlnaHQpO1xuICAvKiBDYW4ndCBpbnNlcnQgaW5zaWRlIGRlbGltaXRlciAqL1xuICB8IChJbm5lcihfLCBfKSwgKF8sIE5vbmUpKSA9PiBOb25lXG4gIHwgKE91dGVyLCAoXywgU29tZShfKSkpID0+XG4gICAgbGV0IGNhcmV0OiBaaXBwZXIuQ2FyZXQudCA9XG4gICAgICBzd2l0Y2ggKHNpYmxpbmdfYXBwZW5kYWJpbGl0eShjaGFyLCBzaWJsaW5ncykpIHtcbiAgICAgIHwgQXBwZW5kUmlnaHQoXykgPT5cbiAgICAgICAgLyogSWYgd2UncmUgYWRkaW5nIHRvIHRoZSByaWdodCwgbW92ZSBjYXJldCBpbnNpZGUgcmlnaHQgbmhici5cbiAgICAgICAgICogTm90ZSB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgaXMgYSBtb25vdGlsZSAqL1xuICAgICAgICBJbm5lcigwLCAwKVxuICAgICAgfCBNYWtlTmV3XG4gICAgICB8IEFwcGVuZExlZnQoXykgPT4gT3V0ZXJcbiAgICAgIH07XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IE9wdGlvbi5tYXAoWmlwcGVyLnNldF9jYXJldChjYXJldCkpXG4gICAgfD4gb3B0X3JlZ3JvbGQoTGVmdClcbiAgICB8PiBPcHRpb24ubWFwKG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyKSk7XG4gIHwgKE91dGVyLCAoXywgTm9uZSkpID0+XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgfD4gT3B0aW9uLm1hcChtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhcikpXG4gIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGNvZGU6IGxpc3Qoc3RyaW5nKSxcbiAgc2VsZWN0aW9uOiBsaXN0KHN0cmluZyksXG4gIGJhY2twYWNrOiBsaXN0KGxpc3Qoc3RyaW5nKSksXG59O1xuXG5sZXQgc2VnX29mX3ppcCA9IFppcHBlci5zZWdfd2l0aG91dF9idWZmZXI7XG5cbmxldCByZWMgb2Zfc2VnbWVudCA9ICh+aG9sZXMsIHNlZzogU2VnbWVudC50KTogc3RyaW5nID0+XG4gIHNlZyB8PiBMaXN0Lm1hcChvZl9waWVjZSh+aG9sZXMpKSB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfcGllY2UgPSAofmhvbGVzLCBwOiBQaWVjZS50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gb2ZfdGlsZSh+aG9sZXMsIHQpXG4gIHwgR3JvdXQoe3NoYXBlOiBDb25jYXZlLCBffSkgPT4gXCIgXCJcbiAgfCBHcm91dCh7c2hhcGU6IENvbnZleCwgX30pIHdoZW4gaG9sZXMgIT0gTm9uZSA9PiBPcHRpb24uZ2V0KGhvbGVzKVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gXCIgXCJcbiAgfCBTZWNvbmRhcnkodykgPT5cbiAgICBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID8gXCJcXG5cIiA6IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfVxuYW5kIG9mX3RpbGUgPSAofmhvbGVzLCB0OiBUaWxlLnQpOiBzdHJpbmcgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuam9pbihvZl9kZWxpbSh0KSwgb2Zfc2VnbWVudCh+aG9sZXMpKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfZGVsaW0gPSAodDogUGllY2UudGlsZSwgaTogaW50KTogc3RyaW5nID0+IExpc3QubnRoKHQubGFiZWwsIGkpO1xuXG5sZXQgdG9fc3RyaW5nX2Jhc2ljID0gKHo6IFppcHBlci50KTogc3RyaW5nID0+IHtcbiAgeiB8PiBzZWdfb2ZfemlwIHw+IG9mX3NlZ21lbnQofmhvbGVzPU5vbmUpO1xufTtcblxubGV0IGxpbmVzX3RvX2xpc3QgPSBTdHJpbmcuc3BsaXRfb25fY2hhcignXFxuJyk7XG5cbmxldCBjYXJldF9zdHIgPSBcIuKWkVwiO1xuXG5sZXQgdG9fcm93cyA9XG4gICAgKFxuICAgICAgfmhvbGVzOiBvcHRpb24oc3RyaW5nKSxcbiAgICAgIH5tZWFzdXJlZDogTWVhc3VyZWQudCxcbiAgICAgIH5jYXJldDogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpLFxuICAgICAgfmluZGVudDogc3RyaW5nLFxuICAgICAgfnNlZ21lbnQ6IFNlZ21lbnQudCxcbiAgICApXG4gICAgOiBsaXN0KHN0cmluZykgPT4ge1xuICBsZXQgaW5kZW50X29mID0gaSA9PiBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWVhc3VyZWQucm93cykuaW5kZW50O1xuICBsZXQgbWtfaW5kZW50ID0gKGksIHIpID0+IFN0cmluZ1V0aWwucmVwZWF0KGluZGVudF9vZihpKSwgaW5kZW50KSArKyByO1xuICBsZXQgcm93cyA9XG4gICAgc2VnbWVudCB8PiBvZl9zZWdtZW50KH5ob2xlcykgfD4gbGluZXNfdG9fbGlzdCB8PiBMaXN0Lm1hcGkobWtfaW5kZW50KTtcbiAgc3dpdGNoIChjYXJldCkge1xuICB8IFNvbWUoe3JvdywgY29sfSkgPT5cbiAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X250aF9vcHQocm93LCByb3dzKSkge1xuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpIHdoZW4gY29sIDwgU3RyaW5nLmxlbmd0aChjYXJldF9yb3cpID0+XG4gICAgICBwcmUgQCBbU3RyaW5nVXRpbC5pbnNlcnRfbnRoKGNvbCwgY2FyZXRfc3RyLCBjYXJldF9yb3cpXSBAIHN1ZlxuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpID0+IHByZSBAIFtjYXJldF9yb3cgKysgY2FyZXRfc3RyXSBAIHN1ZlxuICAgIHwgXyA9PiByb3dzXG4gICAgfVxuICB8IE5vbmUgPT4gcm93c1xuICB9O1xufTtcblxubGV0IHByZXR0eV9wcmludCA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogc3RyaW5nID0+XG4gIHRvX3Jvd3MoXG4gICAgfmhvbGVzPU5vbmUsXG4gICAgfm1lYXN1cmVkLFxuICAgIH5jYXJldD1Ob25lLFxuICAgIH5pbmRlbnQ9XCIgXCIsXG4gICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpO1xuXG5sZXQgdG9fc3RyaW5nX2VkaXRvciA9XG4gICAgKH5ob2xlczogb3B0aW9uKHN0cmluZyk9U29tZShcIlwiKSwgZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5ob2xlcyxcbiAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgfmNhcmV0PU5vbmUsXG4gICAgfmluZGVudD1cIlwiLFxuICAgIH5zZWdtZW50PXNlZ19vZl96aXAoZWRpdG9yLnN0YXRlLnppcHBlciksXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX3N0cmluZ19zZWxlY3Rpb24gPSAoZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICB+Y2FyZXQ9Tm9uZSxcbiAgICB+aW5kZW50PVwiIFwiLFxuICAgIH5ob2xlcz1Ob25lLFxuICAgIH5zZWdtZW50PWVkaXRvci5zdGF0ZS56aXBwZXIuc2VsZWN0aW9uLmNvbnRlbnQsXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX2xvZyA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogdCA9PiB7XG4gIGNvZGU6XG4gICAgdG9fcm93cyhcbiAgICAgIH5ob2xlcz1Ob25lLFxuICAgICAgfm1lYXN1cmVkLFxuICAgICAgfmNhcmV0PVNvbWUoWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KSksXG4gICAgICB+aW5kZW50PVwiIFwiLFxuICAgICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgICApLFxuICBzZWxlY3Rpb246IHouc2VsZWN0aW9uLmNvbnRlbnQgfD4gb2Zfc2VnbWVudCh+aG9sZXM9Tm9uZSkgfD4gbGluZXNfdG9fbGlzdCxcbiAgYmFja3BhY2s6XG4gICAgTGlzdC5tYXAoXG4gICAgICAoczogU2VsZWN0aW9uLnQpID0+XG4gICAgICAgIHMuY29udGVudCB8PiBvZl9zZWdtZW50KH5ob2xlcz1Ob25lKSB8PiBsaW5lc190b19saXN0LFxuICAgICAgei5iYWNrcGFjayxcbiAgICApLFxufTtcblxubGV0IHRvX2xvZ19mbGF0ID0gKH5tZWFzdXJlZCwgejogWmlwcGVyLnQpOiBzdHJpbmcgPT4ge1xuICBsZXQge2NvZGUsIHNlbGVjdGlvbiwgYmFja3BhY2t9ID0gdG9fbG9nKH5tZWFzdXJlZCwgeik7XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiQ09ERTpcXG4lc1xcblNFTEVDVElPTjpcXG4lc1xcbiVzXFxuXCIsXG4gICAgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBjb2RlKSxcbiAgICBTdHJpbmcuY29uY2F0KFwiXFxuXCIsIHNlbGVjdGlvbiksXG4gICAgYmFja3BhY2tcbiAgICB8PiBMaXN0Lm1hcGkoKGksIGIpID0+XG4gICAgICAgICBQcmludGYuc3ByaW50ZihcIkJQKCVkKTpcXG4gJXNcXG5cIiwgaSwgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBiKSlcbiAgICAgICApXG4gICAgfD4gU3RyaW5nLmNvbmNhdChcIlwiKSxcbiAgKTtcbn07XG5cbmxldCB6aXBwZXJfb2Zfc3RyaW5nID1cbiAgICAofnppcHBlcl9pbml0PVppcHBlci5pbml0KCksIHN0cjogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gIGxldCBpbnNlcnQgPSAoejogb3B0aW9uKFppcHBlci50KSwgYzogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gejtcbiAgICB0cnkoYyA9PSBcIlxcclwiID8gU29tZSh6KSA6IEluc2VydC5nbyhjID09IFwiXFxuXCIgPyBGb3JtLmxpbmVicmVhayA6IGMsIHopKSB7XG4gICAgfCBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJXQVJOOiB6aXBwZXJfb2Zfc3RyaW5nOiBcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgICBOb25lO1xuICAgIH07XG4gIH07XG4gIHN0ciB8PiBVdGlsLlN0cmluZ1V0aWwudG9fbGlzdCB8PiBMaXN0LmZvbGRfbGVmdChpbnNlcnQsIFNvbWUoemlwcGVyX2luaXQpKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHppcHBlcjogc3RyaW5nLFxuICBiYWNrdXBfdGV4dDogc3RyaW5nLFxufTtcblxubGV0IHBlcnNpc3QgPSAoemlwcGVyOiBaaXBwZXIudCkgPT4ge1xuICB7XG4gICAgemlwcGVyOiBaaXBwZXIuc2V4cF9vZl90KHppcHBlcikgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZyxcbiAgICBiYWNrdXBfdGV4dDogUHJpbnRlci50b19zdHJpbmdfYmFzaWMoemlwcGVyKSxcbiAgfTtcbn07XG5cbmxldCB1bnBlcnNpc3QgPSAocGVyc2lzdGVkOiB0KSA9PlxuICB0cnkoU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhwZXJzaXN0ZWQuemlwcGVyKSB8PiBaaXBwZXIudF9vZl9zZXhwKSB7XG4gIHwgXyA9PlxuICAgIHByaW50X2VuZGxpbmUoXG4gICAgICBcIldhcm5pbmc6IHVzaW5nIGJhY2t1cCB0ZXh0ISBTZXJpYWxpemF0aW9uIG1heSBiZSBmb3IgYW4gb2xkZXIgdmVyc2lvbiBvZiBIYXplbC5cIixcbiAgICApO1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHBlcnNpc3RlZC5iYWNrdXBfdGV4dCkpIHtcbiAgICB8IE5vbmUgPT4gWmlwcGVyLmluaXQoKVxuICAgIHwgU29tZSh6KSA9PiB6XG4gICAgfTtcbiAgfTtcblxubGV0IHNlcmlhbGl6ZSA9ICh6aXBwZXI6IFppcHBlci50KSA9PiB7XG4gIHBlcnNpc3QoemlwcGVyKSB8PiB5b2pzb25fb2ZfdCB8PiBZb2pzb24uU2FmZS50b19zdHJpbmc7XG59O1xuXG5sZXQgZGVzZXJpYWxpemUgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGxldCBwZXJzaXN0ZWQgPSBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IHRfb2ZfeW9qc29uO1xuICB1bnBlcnNpc3QocGVyc2lzdGVkKTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBkZXN0cnVjdCA9XG4gICAgKFxuICAgICAgZDogRGlyZWN0aW9uLnQsXG4gICAgICB7Y2FyZXQsIHJlbGF0aXZlczoge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBffSwgX30gYXMgejogdCxcbiAgICApXG4gICAgOiBvcHRpb24odCkgPT4ge1xuICAvKiBDb3VsZCBhZGQgY2hlY2tzIG9uIHZhbGlkIHRva2VucyAoYWxsIG9mIHRoZXNlIGhvbGQgYXNzdW1pbmcgc3Vic3RyaW5nKSAqL1xuICBsZXQgbGFzdF9pbm5lcl9wb3MgPSB0ID0+IFRva2VuLmxlbmd0aCh0KSAtIDI7XG4gIGxldCBkZWxldGVfcmlnaHQgPSB6ID0+XG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KTtcbiAgbGV0IGRlbGV0ZV9sZWZ0ID0gWmlwcGVyLmRlbGV0ZShMZWZ0KTtcbiAgbGV0IGNvbnN0cnVjdF9yaWdodCA9IChsLCBzKSA9PlxuICAgIE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdCh+Y2FyZXQ9UmlnaHQsIH5iYWNrcGFjaz1SaWdodCwgbCksIHMpO1xuICBsZXQgY29uc3RydWN0X2xlZnQgPSAobCwgcykgPT5cbiAgICBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsKSwgcyk7XG4gIHN3aXRjaCAoZCwgY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcygobF9zaWJzLCByX3NpYnMpKSkge1xuICAvKiBXaGVuIHRoZXJlJ3MgYSBzZWxlY3Rpb24sIGRlZmVyIHRvIE91dGVyICovXG4gIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4geiB8PiBaaXBwZXIuZGVzdHJ1Y3QgfD4gT3B0aW9uLnNvbWVcbiAgLyogU3BlY2lhbCBjYXNlcyBmb3IgbW9ubyBmb3JtcyB3aGljaCBjYW4gc3BsaXQgaW50byBkdW8gZm9ybXMsXG4gICAgIGUuZy4gbGlzdCBsaXRlcmFscy4gV2hlbiBkZWxldGlvbiB3b3VsZCBhbHRlciB0aGUgbW9ubyBmb3JtLFxuICAgICB3ZSByZXBsYWNlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGR1byBmb3JtLiAgKi9cbiAgfCAoTGVmdCwgT3V0ZXIsIChTb21lKHQpLCBfKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX2xlZnQgfD4gY29uc3RydWN0X2xlZnQoRm9ybS5kdW9zcGxpdHModCkpXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChSaWdodCwgSW5uZXIoXywgbiksIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5kdW9zcGxpdHModCkgIT0gW10gJiYgbiA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9sZWZ0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICAvKiBTcGVjaWFsIGNhc2VzIGZvciBzdHJpbmcgbGl0ZXJhbHMuIFdoZW4gZGVsZXRpb24gd291bGRcbiAgICAgcmVtb3ZlIGFuIG91dGVyIHF1b3RlLCB3ZSBpbnN0ZWFkIHJlbW92ZSB0aGUgd2hvbGUgc3RyaW5nICovXG4gIHwgKExlZnQsIE91dGVyLCAoU29tZSh0KSwgXykpXG4gICAgICB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpIHx8IEZvcm0uaXNfY29tbWVudCh0KSA9PlxuICAgIGRlbGV0ZV9sZWZ0KHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgIGRlbGV0ZV9yaWdodCh6KVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoUmlnaHQsIElubmVyKF8sIG4pLCAoXywgU29tZSh0KSkpXG4gICAgICB3aGVuXG4gICAgICAgIChGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkpICYmIG4gPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeikgLyogUmVtb3ZlIGlubmVyIGNoYXJhY3RlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeik7XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fbnRoKGNfaWR4LCB0KSwgeik7XG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgd2hlbiBjX2lkeCA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIFRva2VuLnJtX250aChjX2lkeCArIDEsIHQpLCB6KVxuICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oeiA9PlxuICAgICAgICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgICApIC8qIElmIG5vdCBvbiBsYXN0IGlubmVyIHBvc2l0aW9uICovXG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9udGgoY19pZHggKyAxLCB0KSwgeilcbiAgLyogQ2FuJ3Qgc3ViZGVzdHJ1Y3QgaW4gZGVsaW1pdGVyLCBzbyBqdXN0IGRlc3RydWN0IG9uIHdob2xlIGRlbGltaXRlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfKSwgKF8sIE5vbmUpKVxuICB8IChSaWdodCwgSW5uZXIoXyksIChfLCBOb25lKSkgPT5cbiAgICAvKiBOb3RlOiBDb3VudGVyaW50dWl0dmUsIGJ1dCB5ZXMsIHRoZXNlIGNhc2VzIGFyZSBpZGVudGljYWxseSBoYW5kbGVkICovXG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KVxuXG4gIC8vfCAoXywgSW5uZXIoXyksIChfLCBOb25lKSkgPT4gTm9uZVxuICB8IChMZWZ0LCBPdXRlciwgKFNvbWUodCksIF8pKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKExlZnQsIFRva2VuLnJtX2xhc3QodCksIHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9maXJzdCh0KSwgeilcbiAgfCAoXywgT3V0ZXIsIChTb21lKF8pLCBfKSkgLyogdC5sZW5ndGggPT0gMSAqL1xuICB8IChfLCBPdXRlciwgKE5vbmUsIF8pKSA9PiB6IHw+IFppcHBlci5kZWxldGUoZClcbiAgfTtcbn07XG5cbmxldCBtZXJnZSA9ICgobCwgcik6IChUb2tlbi50LCBUb2tlbi50KSwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoMCwgVG9rZW4ubGVuZ3RoKGwpIC0gMSkpICAvLyBub3RlIG1vbm90aWxlIGFzc3VtcHRpb25cbiAgfD4gWmlwcGVyLmRlbGV0ZShMZWZ0KVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5kZWxldGUoUmlnaHQpKVxuICB8PiBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3RfbW9ubyhSaWdodCwgbCArKyByKSk7XG5cbi8qIENoZWNrIGlmIGNvbnRhaW5pbmcgZHVvIGZvcm0gaGFzIGEgbW9ubyBlcXVpdmFsZW50IGUuZy4gbGlzdCBsaXRlcmFscyAqL1xubGV0IHBhcmVudF9kdW9tZXJnZXMgPSAoejogWmlwcGVyLnQpID0+IHtcbiAgbGV0KiBwYXJlbnQgPSBSZWxhdGl2ZXMucGFyZW50KHoucmVsYXRpdmVzKTtcbiAgbGV0KiBsYmwgPSBQaWVjZS5sYWJlbChwYXJlbnQpO1xuICBGb3JtLmR1b21lcmdlcyhsYmwpO1xufTtcblxubGV0IGdvID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0KiB6ID0gZGVzdHJ1Y3QoZCwgeik7XG4gIHN3aXRjaCAoXG4gICAgcGFyZW50X2R1b21lcmdlcyh6KSxcbiAgICB6LmNhcmV0LFxuICAgIG5laWdoYm9yX21vbm90aWxlcyh6LnJlbGF0aXZlcy5zaWJsaW5ncyksXG4gICkge1xuICB8IChTb21lKGxibCksIE91dGVyLCAoTm9uZSwgTm9uZSkpXG4gICAgICB3aGVuIFNpYmxpbmdzLm5vX3NpYmxpbmdzKHoucmVsYXRpdmVzLnNpYmxpbmdzKSA9PlxuICAgIC8qIE5vdGU6IHdlIG11c3QgZG8gdGhlIG5vX3NpYmxpbmdzIGNoZWNrLCBpdCBkb2VzIG5vdCBzdWZmaWNlXG4gICAgICAgdG8gY2hlY2sgbm8gbW9ub3RpbGUgbmVpZ2hib3JzIGFzIHRoZXJlIGNvdWxkIGJlIG90aGVyIG5laWdoYm9yc1xuICAgICAgIGZvciBleGFtcGxlIGVkZ2UgY2FzZTogXCIoKHwpKVwiICovXG4gICAgelxuICAgIHw+IFppcHBlci5kZWxldGVfcGFyZW50XG4gICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcigwLCAwKSlcbiAgICB8PiBaaXBwZXIuY29uc3RydWN0KH5jYXJldD1SaWdodCwgfmJhY2twYWNrPUxlZnQsIGxibClcbiAgICAvKiBCZWxvdyByZWdyb3V0aW5nIGltcG9ydGFudCBmb3IgcGFyZW5zL2FwIHBvc2l0aW9uaW5nICovXG4gICAgfD4gWmlwcGVyLnJlZ3JvdXQoUmlnaHQpXG4gICAgfD4gT3B0aW9uLnNvbWVcbiAgfCAoXywgT3V0ZXIsIChTb21lKGwpLCBTb21lKHIpKSkgd2hlbiBNb2xkcy5hbGxvd19tZXJnZShsLCByKSA9PlxuICAgIG1lcmdlKChsLCByKSwgeilcbiAgfCBfID0+IFNvbWUoeilcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFppcHBlcjtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBpc193cml0ZV9hY3Rpb24gPSAoYTogQWN0aW9uLnQpID0+IHtcbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVW5zZWxlY3QoXylcbiAgfCBKdW1wKF8pXG4gIHwgU2VsZWN0KF8pXG4gIHwgU3VnZ2VzdChfKVxuICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZVxuICB8IERlc3RydWN0KF8pXG4gIHwgSW5zZXJ0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUm90YXRlQmFja3BhY2tcbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldChfKVxuICB8IFBhc3RlKF8pID0+IHRydWVcbiAgfTtcbn07XG5cbmxldCByZWMgZ29feiA9XG4gICAgICAgIChcbiAgICAgICAgICB+bWV0YTogb3B0aW9uKEVkaXRvci5NZXRhLnQpPT8sXG4gICAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgICBhOiBBY3Rpb24udCxcbiAgICAgICAgICB6OiBaaXBwZXIudCxcbiAgICAgICAgKVxuICAgICAgICA6IEFjdGlvbi5SZXN1bHQudChaaXBwZXIudCkgPT4ge1xuICBsZXQgbWV0YSA9XG4gICAgc3dpdGNoIChtZXRhKSB7XG4gICAgfCBTb21lKG0pID0+IG1cbiAgICB8IE5vbmUgPT4gRWRpdG9yLk1ldGEuaW5pdCh6KVxuICAgIH07XG4gIG1vZHVsZSBNID0gKHZhbCBFZGl0b3IuTWV0YS5tb2R1bGVfb2ZfdChtZXRhKSk7XG4gIG1vZHVsZSBNb3ZlID0gTW92ZS5NYWtlKE0pO1xuICBtb2R1bGUgU2VsZWN0ID0gU2VsZWN0Lk1ha2UoTSk7XG5cbiAgbGV0IHNlbGVjdF90ZXJtX2N1cnJlbnQgPSB6ID0+XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIH07XG5cbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShkKSA9PlxuICAgIE1vdmUuZ28oZCwgeikgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IE1vdmVUb05leHRIb2xlKGQpID0+XG4gICAgTW92ZS5nbyhHb2FsKFBpZWNlKEdyb3V0LCBkKSksIHopXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IEp1bXAoanVtcF90YXJnZXQpID0+XG4gICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcblxuICAgIGxldCBpZHggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gICAgbGV0ICh0ZXJtLCBfKSA9XG4gICAgICBVdGlsLlRpbWVVdGlsLm1lYXN1cmVfdGltZShcIlBlcmZvcm0uZ29feiA9PiBNYWtlVGVybS5mcm9tX3ppcFwiLCB0cnVlLCAoKSA9PlxuICAgICAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfdmlldyh6KVxuICAgICAgKTtcbiAgICBsZXQgc3RhdGljcyA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG5cbiAgICAoXG4gICAgICBzd2l0Y2ggKGp1bXBfdGFyZ2V0KSB7XG4gICAgICB8IEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXIgPT5cbiAgICAgICAgbGV0KiBpZHggPSBpZHg7XG4gICAgICAgIGxldCogY2kgPSBJZC5NYXAuZmluZF9vcHQoaWR4LCBzdGF0aWNzKTtcbiAgICAgICAgbGV0KiBiaW5kaW5nX2lkID0gSW5mby5nZXRfYmluZGluZ19zaXRlKGNpKTtcbiAgICAgICAgTW92ZS5qdW1wX3RvX2lkKHosIGJpbmRpbmdfaWQpO1xuICAgICAgfCBUaWxlSWQoaWQpID0+IE1vdmUuanVtcF90b19pZCh6LCBpZClcbiAgICAgIH1cbiAgICApXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKTtcbiAgfCBVbnNlbGVjdChTb21lKGQpKSA9PiBPayhaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpXG4gIHwgVW5zZWxlY3QoTm9uZSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci5kaXJlY3Rpb25hbF91bnNlbGVjdCh6LnNlbGVjdGlvbi5mb2N1cywgeik7XG4gICAgT2soeik7XG4gIHwgU2VsZWN0KEFsbCkgPT5cbiAgICBzd2l0Y2ggKE1vdmUuZG9fZXh0cmVtZShNb3ZlLnByaW1hcnkoQnlUb2tlbiksIFVwLCB6KSkge1xuICAgIHwgU29tZSh6KSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QuZ28oRXh0cmVtZShEb3duKSwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFRlcm0oQ3VycmVudCkpID0+IHNlbGVjdF90ZXJtX2N1cnJlbnQoeilcbiAgfCBTZWxlY3QoU21hcnQpID0+XG4gICAgLyogSWYgdGhlIGN1cnJlbnQgdGlsZSBpcyBub3QgY29pbmNpZGVudCB3aXRoIHRoZSB0ZXJtLFxuICAgICAgIHNlbGVjdCB0aGUgdGVybS4gT3RoZXJ3aXNlLCBzZWxlY3QgdGhlIHBhcmVudCB0ZXJtLiAqL1xuICAgIGxldCB0aWxlX2lzX3Rlcm0gPVxuICAgICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgfCBTb21lKGlkKSA9PiBTZWxlY3QudGlsZShpZCwgeikgPT0gU2VsZWN0LnRlcm0oaWQsIHopXG4gICAgICB9O1xuICAgIGlmICghdGlsZV9pc190ZXJtKSB7XG4gICAgICBzZWxlY3RfdGVybV9jdXJyZW50KHopO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL1BFUkY6IHRoaXMgaXMgZXhwZW5zaXZlXG4gICAgICBsZXQgKHRlcm0sIF8pID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcoeik7XG4gICAgICBsZXQgc3RhdGljcyA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG4gICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICBJbmRpY2F0ZWQuaW5kZXgoeilcbiAgICAgICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKGlkeCA9PiBJZC5NYXAuZmluZF9vcHQoaWR4LCBzdGF0aWNzKSlcbiAgICAgICAgKSB7XG4gICAgICAgIHwgU29tZShjaSkgPT5cbiAgICAgICAgICBzd2l0Y2ggKEluZm8uYW5jZXN0b3JzX29mKGNpKSkge1xuICAgICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgICAgIHwgW3BhcmVudCwgLi4uX10gPT4gU29tZShwYXJlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoICh0YXJnZXQpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIHwgU29tZShpZCkgPT5cbiAgICAgICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB8IFNlbGVjdChUZXJtKElkKGlkLCBkKSkpID0+XG4gICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCB6ID0gZCA9PSBSaWdodCA/IHogOiBaaXBwZXIudG9nZ2xlX2ZvY3VzKHopO1xuICAgICAgT2soeik7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoVGlsZShDdXJyZW50KSkgPT5cbiAgICBzd2l0Y2ggKEluZGljYXRlZC5pbmRleCh6KSkge1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFNlbGVjdC50aWxlKGlkLCB6KSkge1xuICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB9XG4gICAgfVxuICB8IFNlbGVjdChUaWxlKElkKGlkLCBkKSkpID0+XG4gICAgc3dpdGNoIChTZWxlY3QudGlsZShpZCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCB6ID0gZCA9PSBSaWdodCA/IHogOiBaaXBwZXIudG9nZ2xlX2ZvY3VzKHopO1xuICAgICAgT2soeik7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoUmVzaXplKGQpKSA9PlxuICAgIFNlbGVjdC5nbyhkLCB6KSB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgfCBEZXN0cnVjdChkKSA9PlxuICAgIHpcbiAgICB8PiBEZXN0cnVjdC5nbyhkKVxuICAgIHw+IE9wdGlvbi5tYXAocmVtb2xkX3JlZ3JvdXQoZCkpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9kZXN0cnVjdClcbiAgfCBJbnNlcnQoY2hhcikgPT5cbiAgICB6XG4gICAgfD4gSW5zZXJ0LmdvKGNoYXIpXG4gICAgLyogbm90ZTogcmVtb2xkaW5nIGhlcmUgaXMgZG9uZSBjYXNlLWJ5LWNhc2UgKi9cbiAgICAvL3w+IE9wdGlvbi5tYXAoKHopID0+IHJlbW9sZF9yZWdyb3V0KFJpZ2h0LCB6KSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X2luc2VydClcbiAgfCBQaWNrX3VwID0+IE9rKHJlbW9sZF9yZWdyb3V0KExlZnQsIFppcHBlci5waWNrX3VwKHopKSlcbiAgfCBQdXRfZG93biA9PlxuICAgIGxldCB6ID1cbiAgICAgIC8qIEFsdGVybmF0aXZlbHksIHB1dHRpbmcgZG93biBpbnNpZGUgdG9rZW4gY291bGQgZWl0ZXIgbWVyZ2UtaW4gb3Igc3BsaXQgKi9cbiAgICAgIHN3aXRjaCAoei5jYXJldCkge1xuICAgICAgfCBJbm5lcihfKSA9PiBOb25lXG4gICAgICB8IE91dGVyID0+IFppcHBlci5wdXRfZG93bihMZWZ0LCB6KVxuICAgICAgfTtcbiAgICB6XG4gICAgfD4gT3B0aW9uLm1hcChyZW1vbGRfcmVncm91dChMZWZ0KSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3B1dF9kb3duKTtcbiAgfCBSb3RhdGVCYWNrcGFjayA9PlxuICAgIGxldCB6ID0gey4uLnosIGJhY2twYWNrOiBVdGlsLkxpc3RVdGlsLnJvdGF0ZSh6LmJhY2twYWNrKX07XG4gICAgT2soeik7XG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoKExlZnQoXykgfCBSaWdodChfKSkgYXMgZCkgPT5cbiAgICBpZiAoQmFja3BhY2sucmVzdHJpY3RlZCh6LmJhY2twYWNrKSkge1xuICAgICAgTW92ZS50b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE1vdmUuZ28oTG9jYWwoZCksIHopXG4gICAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpO1xuICAgIH1cbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldCgoVXAgfCBEb3duKSBhcyBkKSA9PlxuICAgIE1vdmUudG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IFBhc3RlKGNsaXBib2FyZCkgPT5cbiAgICB7XG4gICAgICBsZXQqIHogPSBQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0PXosIGNsaXBib2FyZCk7XG4gICAgICBsZXQqIHogPSBnb196KH5zZXR0aW5ncywgSW5zZXJ0KFwiIFwiKSwgeikgfD4gUmVzdWx0Lm9rO1xuICAgICAgbGV0KyB6ID0gZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KSB8PiBSZXN1bHQub2s7XG4gICAgICB6O1xuICAgIH1cbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3Bhc3RlKVxuICB8IFN1Z2dlc3QoY29udGVudCkgPT5cbiAgICBsZXQgeiA9IFppcHBlci5zZXRfYnVmZmVyKHosIH5jb250ZW50LCB+bW9kZT1VbnBhcnNlZCk7XG4gICAgT2soeik7XG4gIHwgUmVzZXRTdWdnZXN0aW9uID0+XG4gICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgfCBCdWZmZXIoXykgPT5cbiAgICAgIHN3aXRjaCAoZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KSkge1xuICAgICAgfCBFcnJvcihfKSA9PiBPayh6KVxuICAgICAgfCBPayh6KSA9PiBnb196KH5zZXR0aW5ncywgRGVzdHJ1Y3QoTGVmdCksIHopXG4gICAgICB9XG4gICAgfCBfID0+IE9rKHopXG4gICAgfVxuICB9O1xufTtcblxubGV0IGdvID1cbiAgICAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgYTogQWN0aW9uLnQsIGVkOiBFZGl0b3IudClcbiAgICA6IEFjdGlvbi5SZXN1bHQudChFZGl0b3IudCkgPT5cbiAgaWYgKGVkLnJlYWRfb25seSAmJiBpc193cml0ZV9hY3Rpb24oYSkpIHtcbiAgICBSZXN1bHQuT2soZWQpO1xuICB9IGVsc2Uge1xuICAgIG9wZW4gUmVzdWx0LlN5bnRheDtcbiAgICBsZXQgRWRpdG9yLlN0YXRlLnt6aXBwZXIsIG1ldGF9ID0gZWQuc3RhdGU7XG4gICAgRWZmZWN0LnNfY2xlYXIoKTtcbiAgICBsZXQrIHogPSBnb196KH5zZXR0aW5ncywgfm1ldGEsIGEsIHppcHBlcik7XG4gICAgRWRpdG9yLm5ld19zdGF0ZSh+ZWZmZWN0cz1FZmZlY3Quc14sIGEsIHosIGVkKTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgbGV0IGQ6IERpcmVjdGlvbi50O1xuICBsZXQgb3JpZW50OiAoKCdhLCAnYSkpID0+ICgnYSwgJ2EpO1xufTtcblxubW9kdWxlIEw6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLkxlZnQ7XG4gIGxldCBvcmllbnQgPSAoKGwsIHIpKSA9PiAobCwgcik7XG59O1xubW9kdWxlIFI6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLlJpZ2h0O1xuICBsZXQgb3JpZW50ID0gKChsLCByKSkgPT4gKHIsIGwpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXZhbF9yZXN1bHQgPSB7XG4gIGVsYWI6IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCxcbiAgZXZhbHVhdGlvbjogUHJvZ3JhbVJlc3VsdC50LFxuICBwcmV2aW91czogUHJvZ3JhbVJlc3VsdC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKGV2YWxfcmVzdWx0KVxuICB8IFN0ZXBwZXIoU3RlcHBlci50KTtcblxubGV0IGluaXRfZXZhbCA9IChlbGFiOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpID0+XG4gIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSk7XG5cbmxldCB1cGRhdGVfZWxhYiA9IChlbGFiLCB+c2V0dGluZ3MpID0+XG4gIGZ1blxuICB8IE5vRWxhYiA9PlxuICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSlcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uLCBffSkgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogZXZhbHVhdGlvbn0pXG4gIHwgU3RlcHBlcihzKSBhcyBzJyB3aGVuIERIRXhwLmZhc3RfZXF1YWwoZWxhYi5kLCBTdGVwcGVyLmdldF9lbGFiKHMpLmQpID0+IHMnXG4gIHwgU3RlcHBlcihfKSA9PiB7XG4gICAgICBTdGVwcGVyKFN0ZXBwZXIuaW5pdChlbGFiLCB+c2V0dGluZ3MpKTtcbiAgICB9O1xuXG5sZXQgdXBkYXRlX3N0ZXBwZXIgPSBmID0+XG4gIGZ1blxuICB8IE5vRWxhYiBhcyBlXG4gIHwgRXZhbHVhdGlvbihfKSBhcyBlID0+IGVcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoZihzKSk7XG5cbmxldCBzdGVwX2ZvcndhcmQgPSAoaWR4OiBpbnQsIG1yOiB0KSA9PlxuICBtciB8PiB1cGRhdGVfc3RlcHBlcihTdGVwcGVyLnN0ZXBfcGVuZGluZyhpZHgpKTtcblxubGV0IHN0ZXBfYmFja3dhcmQgPSAofnNldHRpbmdzLCBtcjogdCkgPT5cbiAgbXIgfD4gdXBkYXRlX3N0ZXBwZXIoU3RlcHBlci5zdGVwX2JhY2t3YXJkKH5zZXR0aW5ncykpO1xuXG5sZXQgcnVuX3BlbmRpbmcgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCkgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzfSkgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGV2YWx1YXRpb246IEludGVyZmFjZS5ldmFsdWF0ZSh+c2V0dGluZ3MsIGVsYWIuZCksXG4gICAgfSlcbiAgfCBFdmFsdWF0aW9uKF8pIGFzIGUgPT4gZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihTdGVwcGVyLmV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzLCBzKSk7XG5cbmxldCB1cGRhdGVfZXZhbHVhdGlvbiA9XG4gICAgKFxuICAgICAgZXZhbDpcbiAgICAgICAgUmVzdWx0LnQoXG4gICAgICAgICAgKEV2YWx1YXRvci5SZXN1bHQudCwgRXZhbHVhdG9yU3RhdGUudCksXG4gICAgICAgICAgUHJvZ3JhbVJlc3VsdC5lcnJvcixcbiAgICAgICAgKSxcbiAgICAgIHJlc3VsdDogdCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgc3dpdGNoIChyZXN1bHQpIHtcbiAgfCBTdGVwcGVyKF8pXG4gIHwgTm9FbGFiID0+IHJlc3VsdFxuICB8IEV2YWx1YXRpb24oe2VsYWIsIHByZXZpb3VzLCBffSkgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGV2YWx1YXRpb246XG4gICAgICAgIHN3aXRjaCAoZXZhbCkge1xuICAgICAgICB8IE9rKChleHAsIHN0YXRlKSkgPT5cbiAgICAgICAgICBSZXN1bHRPayh7XG4gICAgICAgICAgICByZXN1bHQ6IGV4cCxcbiAgICAgICAgICAgIGVkaXRvcjpcbiAgICAgICAgICAgICAgRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoXG4gICAgICAgICAgICAgICAgfmlubGluZT1mYWxzZSxcbiAgICAgICAgICAgICAgICBleHAgfD4gRXZhbHVhdG9yLlJlc3VsdC51bmJveCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIH0pXG4gICAgICAgIHwgRXJyb3IocmVhc29uKSA9PiBSZXN1bHRGYWlsKHJlYXNvbilcbiAgICAgICAgfSxcbiAgICB9KVxuICB9O1xufTtcblxubGV0IHRpbWVvdXQ6IHQgPT4gdCA9XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uLCBffSBhcyBlKSA9PlxuICAgIEV2YWx1YXRpb24oey4uLmUsIGV2YWx1YXRpb246IFJlc3VsdEZhaWwoVGltZW91dCksIHByZXZpb3VzOiBldmFsdWF0aW9ufSlcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci50aW1lb3V0KHMpKTtcblxubGV0IHRvZ2dsZV9zdGVwcGVyID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2VsYWIsIF99KSA9PiBTdGVwcGVyKFN0ZXBwZXIuaW5pdCh+c2V0dGluZ3MsIGVsYWIpKVxuICB8IFN0ZXBwZXIocykgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWI6IFN0ZXBwZXIuZ2V0X2VsYWIocyksXG4gICAgICBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLFxuICAgICAgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmcsXG4gICAgfSk7XG5cbmxldCB0ZXN0X3Jlc3VsdHMgPSAocmVzdWx0OiB0KSA9PlxuICBzd2l0Y2ggKHJlc3VsdCkge1xuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IFJlc3VsdE9rKHByKSwgX30pXG4gIHwgRXZhbHVhdGlvbih7XG4gICAgICBldmFsdWF0aW9uOiBPZmYoXykgfCBSZXN1bHRGYWlsKF8pIHwgUmVzdWx0UGVuZGluZyxcbiAgICAgIHByZXZpb3VzOiBSZXN1bHRPayhwciksXG4gICAgICBfLFxuICAgIH0pID0+XG4gICAgcHJcbiAgICB8PiBQcm9ncmFtUmVzdWx0LmdldF9zdGF0ZVxuICAgIHw+IEV2YWx1YXRvclN0YXRlLmdldF90ZXN0c1xuICAgIHw+IFRlc3RSZXN1bHRzLm1rX3Jlc3VsdHNcbiAgICB8PiBPcHRpb24uc29tZVxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IE9mZihfKSB8IFJlc3VsdEZhaWwoXykgfCBSZXN1bHRQZW5kaW5nLCBffSlcbiAgfCBOb0VsYWJcbiAgfCBTdGVwcGVyKF8pID0+IE5vbmVcbiAgfTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID1cbiAgfCBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihTdGVwcGVyLnBlcnNpc3RlbnQpO1xuXG5sZXQgdG9fcGVyc2lzdGVudDogdCA9PiBwZXJzaXN0ZW50ID1cbiAgZnVuXG4gIHwgTm9FbGFiXG4gIHwgRXZhbHVhdGlvbihfKSA9PiBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIudG9fcGVyc2lzdGVudChzKSk7XG5cbmxldCBvZl9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgRXZhbHVhdGlvbiA9PiBOb0VsYWJcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5mcm9tX3BlcnNpc3RlbnQofnNldHRpbmdzLCBzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0aW9uID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9IHtcbiAgc2VsZWN0aW9uLFxuICBhY3Rpb246IEFjdGlvbi50LFxufTtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBtcjogdCkgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb25lXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogUmVzdWx0T2soe2VkaXRvciwgX30pLCBffSkgPT4gU29tZShlZGl0b3IpXG4gIHwgRXZhbHVhdGlvbih7cHJldmlvdXM6IFJlc3VsdE9rKHtlZGl0b3IsIF99KSwgX30pID0+IFNvbWUoZWRpdG9yKVxuICB8IEV2YWx1YXRpb24oXykgPT4gTm9uZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlci5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHMpXG4gIH07XG5cbmxldCBwdXRfc2VsZWN0ZWRfZWRpdG9yID0gKH5zZWxlY3Rpb246IHNlbGVjdGlvbiwgbXI6IHQsIGVkaXRvcikgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBSZXN1bHRPayhwciksIGVsYWIsIHByZXZpb3VzfSkgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRPayh7Li4ucHIsIGVkaXRvcn0pLCBwcmV2aW91c30pXG4gIHwgRXZhbHVhdGlvbih7cHJldmlvdXM6IFJlc3VsdE9rKHByKSwgZWxhYiwgZXZhbHVhdGlvbn0pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbiwgcHJldmlvdXM6IFJlc3VsdE9rKHsuLi5wciwgZWRpdG9yfSl9KVxuICB8IEV2YWx1YXRpb24oXykgPT4gbXJcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHMsIGVkaXRvcikpXG4gIH07XG5cbmxldCBnZXRfZWxhYm9yYXRpb24gPSBtciA9PlxuICBzd2l0Y2ggKG1yKSB7XG4gIHwgTm9FbGFiID0+IE5vbmVcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBffSkgPT4gU29tZShlbGFiKVxuICB8IFN0ZXBwZXIocykgPT4gU29tZShTdGVwcGVyLmdldF9lbGFiKHMpKVxuICB9O1xuXG5sZXQgcGVyZm9ybSA9ICh+c2V0dGluZ3MsIGlkeCwgYWN0aW9uLCBtcikgPT4ge1xuICBnZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb249aWR4LCBtcilcbiAgfD4gT3B0aW9uLm1hcChlZGl0b3IgPT5cbiAgICAgICBlZGl0b3JcbiAgICAgICB8PiBQZXJmb3JtLmdvKH5zZXR0aW5ncywgYWN0aW9uKVxuICAgICAgIHw+IChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBPayhlZGl0b3IpID0+IGVkaXRvclxuICAgICAgICAgfCBFcnJvcihlKSA9PiByYWlzZShBY3Rpb24uRmFpbHVyZS5FeGNlcHRpb24oZSkpXG4gICAgICAgKVxuICAgICAgIHw+IHB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbj1pZHgsIG1yKVxuICAgICApXG4gIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1tcik7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLypcbiBNb2RlbFJlc3VsdHMgaXMgdXNlZCB0byBzdG9yZSB0aGUgcmVzdWx0cyBvZlxuIGV2YWx1YXRpb25zIHJlcXVlc3RlZCBieSB0aGUgY3VycmVudCBlZGl0b3IgbW9kZSxcbiB3aXRoIHRoZSBrZXkgZGlzdGluZ3Vpc2hpbmcgdGhlc2UgcmVxdWVzdHMuXG5cbiBTZWUgdGhlIFNjaG9vbEV4ZXJjaXNlIG1vZHVsZSBmb3IgYW4gZXhhbXBsZS5cbiAqL1xubW9kdWxlIEtleSA9IHtcbiAgaW5jbHVkZSBTdHJpbmc7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gc3RyaW5nO1xufTtcblxubW9kdWxlIE0gPSBVdGlsLk1hcFV0aWwuTWFrZShLZXkpO1xuaW5jbHVkZSBNO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBNLnQoTW9kZWxSZXN1bHQudCk7XG5cbmxldCBpbml0X2V2YWwgPSAoZHM6IGxpc3QoKEtleS50LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSk6IHQgPT5cbiAgZHMgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxIHw+IG1hcChNb2RlbFJlc3VsdC5pbml0X2V2YWwpO1xuXG5sZXQgdXBkYXRlX2VsYWJzID0gKH5zZXR0aW5ncykgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KCgoaywgZWxhYiksIGFjYykgPT5cbiAgICB1cGRhdGUoXG4gICAgICBrLFxuICAgICAgdiA9PlxuICAgICAgICBTb21lKFxuICAgICAgICAgIHZcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9TW9kZWxSZXN1bHQuTm9FbGFiKVxuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnVwZGF0ZV9lbGFiKH5zZXR0aW5ncywgZWxhYiksXG4gICAgICAgICksXG4gICAgICBhY2MsXG4gICAgKVxuICApO1xuXG5sZXQgbG9va3VwID0gKHJlc3VsdHM6IHQsIGtleTogS2V5LnQpID0+IGZpbmRfb3B0KGtleSwgcmVzdWx0cyk7XG5cbmxldCBydW5fcGVuZGluZyA9ICh+c2V0dGluZ3MpID0+IE0ubWFwKE1vZGVsUmVzdWx0LnJ1bl9wZW5kaW5nKH5zZXR0aW5ncykpO1xuXG5sZXQgdGltZW91dF9hbGwgPSBtYXAoTW9kZWxSZXN1bHQudGltZW91dCk7XG5cbmxldCBhZHZhbmNlX2V2YWx1YXRvcl9yZXN1bHQgPVxuICAgIChyZXN1bHRzOiB0LCAoa2V5OiBLZXkudCwgZWxhYjogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSlcbiAgICA6IG9wdGlvbigoS2V5LnQsIE1vZGVsUmVzdWx0LnQpKSA9PlxuICBzd2l0Y2ggKGxvb2t1cChyZXN1bHRzLCBrZXkpKSB7XG4gIHwgU29tZShTdGVwcGVyKF8pKSA9PiBOb25lXG4gIHwgU29tZShFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBwcmV2aW91cywgX30pKSA9PlxuICAgIFNvbWUoKGtleSwgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXN9KSkpXG4gIHwgU29tZShOb0VsYWIpXG4gIHwgTm9uZSA9PlxuICAgIFNvbWUoKFxuICAgICAga2V5LFxuICAgICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmd9KSxcbiAgICApKVxuICB9O1xuXG5sZXQgc3RlcHBlcl9yZXN1bHRfb3B0ID1cbiAgICAoKGtleTogS2V5LnQsIHI6IE1vZGVsUmVzdWx0LnQpKTogb3B0aW9uKChLZXkudCwgTW9kZWxSZXN1bHQudCkpID0+XG4gIHN3aXRjaCAocikge1xuICB8IFN0ZXBwZXIoXykgPT4gU29tZSgoa2V5LCByKSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IHRvX2V2YWx1YXRlID1cbiAgICAocmVzdWx0czogdCwgZWxhYnM6IGxpc3QoKEtleS50LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSk6IHQgPT5cbiAgZWxhYnNcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKGFkdmFuY2VfZXZhbHVhdG9yX3Jlc3VsdChyZXN1bHRzKSlcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuXG5sZXQgdG9fc3RlcCA9IChyZXN1bHRzOiB0KTogdCA9PlxuICBiaW5kaW5ncyhyZXN1bHRzKVxuICB8PiBMaXN0LmZpbHRlcl9tYXAoc3RlcHBlcl9yZXN1bHRfb3B0KVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBvZl9zZXE7XG5cbmxldCBwdXRfcmVzdWx0ID0gKGtleTogS2V5LnQsIHJlc3VsdDogTW9kZWxSZXN1bHQudCwgcmVzdWx0czogdCk6IHQgPT5cbiAgcmVzdWx0cyB8PiByZW1vdmUoa2V5KSB8PiBhZGQoa2V5LCByZXN1bHQpO1xuIiwidHlwZSB0ID0gSWQuTWFwLnQobGlzdChpbnQpKTtcblxubGV0IHQgPSByZWYoSWQuTWFwLmVtcHR5KTtcblxubGV0IGNvbnRhaW5zID0gKGlkLCBpKTogYm9vbCA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgdF4pKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUoaXMpID0+IExpc3QubWVtKGksIGlzKVxuICB9O1xuXG5sZXQgY2xlYXIgPSAoKSA9PiB7XG4gIHQgOj0gSWQuTWFwLmVtcHR5O1xufTtcblxuLy8gYXNzdW1lcyBzZWcgaXMgZnVsbHkgYXNzZW1ibGVkXG5sZXQgc2V0ID0gKHNlZzogQmFzZS5zZWdtZW50KTogdW5pdCA9PlxuICB0IDo9XG4gICAgc2VnXG4gICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICAgICAgIGxldCAobF9zaGFyZCwgcl9zaGFyZCkgPSBUaWxlLihsX3NoYXJkKHQpLCByX3NoYXJkKHQpKTtcbiAgICAgICAgICAgICBsZXQgbCA9IGxfc2hhcmQgPT0gMCA/IFtdIDogW2xfc2hhcmQgLSAxXTtcbiAgICAgICAgICAgICBsZXQgciA9IHJfc2hhcmQgPT0gTGlzdC5sZW5ndGgodC5sYWJlbCkgLSAxID8gW10gOiBbcl9zaGFyZF07XG4gICAgICAgICAgICAgbGV0IGxyID0gbCBAIHI7XG4gICAgICAgICAgICAgbHIgPT0gW10gPyBOb25lIDogU29tZSgodC5pZCwgbCBAIHIpKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfCBHcm91dChfKVxuICAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBJZC5NYXAub2Zfc2VxO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuIiwibGV0IGVkaXRvcl9vZl9jb2RlID0gKH5yZWFkX29ubHk9ZmFsc2UsIGNvZGU6IENvZGVTdHJpbmcudCkgPT4ge1xuICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoeikgPT4gU29tZShFZGl0b3IuaW5pdCh+cmVhZF9vbmx5LCB6KSlcbiAgfTtcbn07XG5cbmxldCBlZGl0b3JzX2ZvciA9XG4gICAgKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KCdhKSwgZjogJ2EgPT4gb3B0aW9uKHN0cmluZykpXG4gICAgOiAoaW50LCBsaXN0KCgnYSwgb3B0aW9uKEVkaXRvci50KSkpKSA9PiB7XG4gIGxldCB6cyA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjX3pzLCBhKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZihhKSkge1xuICAgICAgICB8IFNvbWUoc3RyKSA9PlxuICAgICAgICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHN0cikpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gYWNjX3pzIEAgWyhhLCBTb21lKFppcHBlci5pbml0KCkpKV1cbiAgICAgICAgICB8IFNvbWUoeikgPT4gYWNjX3pzIEAgWyhhLCBTb21lKHopKV1cbiAgICAgICAgICB9XG4gICAgICAgIHwgTm9uZSA9PiBhY2NfenMgQCBbKGEsIE5vbmUpXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW10sXG4gICAgICB4cyxcbiAgICApO1xuICAoXG4gICAgMCxcbiAgICBMaXN0Lm1hcChcbiAgICAgICgoYSwgc3opKSA9PlxuICAgICAgICBzd2l0Y2ggKHN6KSB7XG4gICAgICAgIHwgU29tZSh6KSA9PiAoYSwgU29tZShFZGl0b3IuaW5pdCh6LCB+cmVhZF9vbmx5KSkpXG4gICAgICAgIHwgTm9uZSA9PiAoYSwgTm9uZSlcbiAgICAgICAgfSxcbiAgICAgIHpzLFxuICAgICksXG4gICk7XG59O1xuXG5sZXQgZWRpdG9yc19vZl9zdHJpbmdzID0gKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KHN0cmluZykpID0+IHtcbiAgbGV0IChpLCBhZXMpID0gZWRpdG9yc19mb3IoeHMsIHggPT4gU29tZSh4KSwgfnJlYWRfb25seSk7XG4gIChpLCBMaXN0Lm1hcCgoKF8sIG9lKSkgPT4gT3B0aW9uLmdldChvZSksIGFlcykpO1xufTtcblxubGV0IHJlYyBhcHBlbmRfZXhwID0ge1xuICBFeHAuKFxuICAgIChlMTogRXhwLnQsIGUyOiBFeHAudCkgPT4gKFxuICAgICAge1xuICAgICAgICBzd2l0Y2ggKGUxLnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IExpc3RMaXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgfCBGdW4oXylcbiAgICAgICAgfCBUeXBGdW4oXylcbiAgICAgICAgfCBGaXhGKF8pXG4gICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgfCBWYXIoXylcbiAgICAgICAgfCBBcChfKVxuICAgICAgICB8IFR5cEFwKF8pXG4gICAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgICB8IElmKF8pXG4gICAgICAgIHwgVGVzdChfKVxuICAgICAgICB8IFBhcmVucyhfKVxuICAgICAgICB8IENvbnMoXylcbiAgICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICAgIHwgVW5PcChfKVxuICAgICAgICB8IEJpbk9wKF8pXG4gICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICB8IENhc3QoXylcbiAgICAgICAgfCBNYXRjaChfKSA9PiBFeHAue2lkczogW0lkLm1rKCldLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBTZXEoZTEsIGUyKX1cbiAgICAgICAgfCBTZXEoZTExLCBlMTIpID0+XG4gICAgICAgICAgbGV0IGUxMicgPSBhcHBlbmRfZXhwKGUxMiwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogU2VxKGUxMSwgZTEyJyl9O1xuICAgICAgICB8IEZpbHRlcihraW5kLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogRmlsdGVyKGtpbmQsIGVib2R5Jyl9O1xuICAgICAgICB8IExldChwLCBlZGVmLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogTGV0KHAsIGVkZWYsIGVib2R5Jyl9O1xuICAgICAgICB8IFR5QWxpYXModHAsIHRkZWYsIGVib2R5KSA9PlxuICAgICAgICAgIGxldCBlYm9keScgPSBhcHBlbmRfZXhwKGVib2R5LCBlMik7XG4gICAgICAgICAge2lkczogZTEuaWRzLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBUeUFsaWFzKHRwLCB0ZGVmLCBlYm9keScpfTtcbiAgICAgICAgfTtcbiAgICAgIH06IEV4cC50XG4gICAgKVxuICApO1xufTtcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0ge1xuICByb3c6IGludCxcbiAgY29sOiBpbnQsXG59O1xuXG5sZXQgY29tcGFyZSA9IChwb3MxLCBwb3MyKSA9PlxuICBpZiAocG9zMS5yb3cgPCBwb3MyLnJvdykge1xuICAgICgtMSk7XG4gIH0gZWxzZSBpZiAocG9zMS5yb3cgPiBwb3MyLnJvdykge1xuICAgIDE7XG4gIH0gZWxzZSB7XG4gICAgSW50LmNvbXBhcmUocG9zMS5jb2wsIHBvczIuY29sKTtcbiAgfTtcblxubGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gVE9ETzogcmVuYW1lIEFubm90IHRvIEFubj9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gSW52YXJpYW50OiBjb250YWlucyBubyBuZXdsaW5lcy4gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIEFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTsgLy8gQW5ub3RhdGlvbnNcblxubGV0IGFsaWduID0gKGw6IHQoJ2Fubm90KSkgPT4gQWxpZ24obCk7XG5sZXQgYW5ub3QgPSAoYW5ub3Q6ICdhbm5vdCwgbDogdCgnYW5ub3QpKSA9PiBBbm5vdChhbm5vdCwgbCk7XG5cbmxldCByZWMgcmVtb3ZlX2Fubm90cyA9IChsYXlvdXQ6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gIHN3aXRjaCAobGF5b3V0KSB7XG4gIHwgQW5ub3QoXywgbCkgPT4gcmVtb3ZlX2Fubm90cyhsKVxuICB8IFRleHQoc3RyaW5nKSA9PiBUZXh0KHN0cmluZylcbiAgfCBDYXQobDEsIGwyKSA9PiBDYXQocmVtb3ZlX2Fubm90cyhsMSksIHJlbW92ZV9hbm5vdHMobDIpKVxuICB8IExpbmVicmVhayA9PiBMaW5lYnJlYWtcbiAgfCBBbGlnbihsKSA9PiBBbGlnbihyZW1vdmVfYW5ub3RzKGwpKVxuICB9O1xufTtcblxuLy8gVE9ETz9cbi8vbGV0IHRleHQgPSAoc3RyaW5nKSA9PiB0X29mX2xheW91dChUZXh0KHN0cmluZykpO1xuLy9sZXQgY2F0ID0gKHQxLCB0MikgPT4gdF9vZl9sYXlvdXQoQ2F0KHQxLCB0MikpO1xuLy9sZXQgbGluZWJyZWFrID0gdF9vZl9sYXlvdXQobGluZWJyZWFrKTtcblxuLy8gVE9ETzogbW92ZSB0byBvd24gbW9kdWxlXG50eXBlIHRleHQoJ2Fubm90LCAnaW1wLCAndCkgPSB7XG4gIC8vIFRPRE86IHJlbmFtZSBgaW1wYFxuICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gJ2ltcCxcbiAgaW1wX2FwcGVuZDogKCdpbXAsICdpbXApID0+ICdpbXAsXG4gIGltcF9uZXdsaW5lOiBpbnQgPT4gJ2ltcCxcbiAgaW1wX29mX2Fubm90OiAoJ2Fubm90LCAnaW1wKSA9PiAnaW1wLFxuICB0X29mX2ltcDogJ2ltcCA9PiAndCxcbn07XG5cbmxldCBta19vZl9sYXlvdXQ6ICh0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpLCB0KCdhbm5vdCkpID0+ICd0ID1cbiAgKHRleHQsIGxheW91dCkgPT4ge1xuICAgIGxldCBjb2x1bW46IHJlZihpbnQpID0gcmVmKDApO1xuICAgIGxldCByZWMgZ286IChpbnQsIHQoJ2Fubm90KSkgPT4gJ2ltcCA9XG4gICAgICAoaW5kZW50LCBsYXlvdXQpID0+IHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgICAgICBjb2x1bW4gOj0gY29sdW1uXiArIFVuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICAgICAgdGV4dC5pbXBfb2Zfc3RyaW5nKHN0cmluZyk7XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgaW1wMSA9IGdvKGluZGVudCwgbDEpO1xuICAgICAgICAgIGxldCBpbXAyID0gZ28oaW5kZW50LCBsMik7XG4gICAgICAgICAgdGV4dC5pbXBfYXBwZW5kKGltcDEsIGltcDIpO1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIC8vIFRPRE86IG5vIGluZGVudCBpZiBvbiBmaW5hbCBsaW5lIGJyZWFrXG4gICAgICAgICAgY29sdW1uIDo9IGluZGVudDtcbiAgICAgICAgICB0ZXh0LmltcF9uZXdsaW5lKGluZGVudCk7XG4gICAgICAgIHwgQWxpZ24obCkgPT4gZ28oY29sdW1uXiwgbClcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT4gdGV4dC5pbXBfb2ZfYW5ub3QoYW5ub3QsIGdvKGluZGVudCwgbCkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIHRleHQudF9vZl9pbXAoZ28oMCwgbGF5b3V0KSk7XG4gIH07XG5cbmxldCBzdHJpbmdfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBzdHJpbmcgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6ICdhbm5vdC4gdGV4dCgnYW5ub3QsIHN0cmluZywgc3RyaW5nKSA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBzdHJpbmcsXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiBzMSArKyBzMixcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gXCJcXG5cIiArKyBTdHJpbmcubWFrZShpbmRlbnQsICcgJyksXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBpbXAgPT4gaW1wLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcblxubGV0IHN0cmluZ3Nfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBsaXN0KChpbnQsIHN0cmluZykpID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOlxuICAgICAgJ2Fubm90LlxuICAgICAgdGV4dCgnYW5ub3QsIGxpc3QoKGludCwgc3RyaW5nKSksIGxpc3QoKGludCwgc3RyaW5nKSkpXG4gICAgID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IFsoMCwgc3RyaW5nKV0sXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5yZXYoczEpLCBzMikge1xuICAgICAgICB8IChbXSwgXykgPT4gczJcbiAgICAgICAgfCAoXywgW10pID0+IHMxXG4gICAgICAgIHwgKFxuICAgICAgICAgICAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xKSwgLi4ucmVzdDFdLFxuICAgICAgICAgICAgWyhmaXJzdF9pbmRlbnRfMiwgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml0sXG4gICAgICAgICAgKSA9PlxuICAgICAgICAgIGFzc2VydChmaXJzdF9pbmRlbnRfMiA9PSAwKTtcbiAgICAgICAgICBMaXN0LnJldihyZXN0MSlcbiAgICAgICAgICBAIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSArKyBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFsoaW5kZW50LCBcIlwiKV0sXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBzID0+IHMsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuIiwibGV0IHNwbGl0X2ZpcnN0ID0gKHhzOiBsaXN0KCdhKSk6ICgnYSwgbGlzdCgnYSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiAoZmlyc3QsIHRyYWlsaW5nKVxuICB9O1xuXG5sZXQgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ2EpKTogb3B0aW9uKChsaXN0KCdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKExpc3QucmV2KHhzKSkge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeSwgLi4ueXNdID0+IFNvbWUoKExpc3QucmV2KHlzKSwgeSkpXG4gIH07XG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgnYSkpOiAobGlzdCgnYSksICdhKSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIFdpZHRoUG9zS2V5ID0ge1xuICB0eXBlIHQgPSAoaW50LCBpbnQpO1xuICBsZXQgaGFzaCA9ICgod2lkdGgsIHBvcykpID0+IDI1NiAqIDI1NiAqIHdpZHRoICsgcG9zO1xuICBsZXQgZXF1YWwgPSAoKHcxLCBwMSksICh3MiwgcDIpKSA9PiB3MSA9PSB3MiAmJiBwMSA9PSBwMjtcbn07XG5cbm1vZHVsZSBNID0gSGFzaHRibC5NYWtlKFdpZHRoUG9zS2V5KTtcblxuLy8gTk9URTogcG9zIGlzIHJlbGF0aXZlIHRvIG1vc3QgcmVjZW50IGBBbGlnbmBcbnR5cGUgbScoJ2EpID0gUG9zTWFwLnQoKENvc3QudCwgJ2EpKTtcbnR5cGUgbSgnYSkgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCkgPT4gbScoJ2EpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbWVtOiBbQHNleHAub3BhcXVlXSBNLnQobScoTGF5b3V0LnQoJ2Fubm90KSkpLFxuICBkb2M6IHQnKCdhbm5vdCksXG59XG5bQGRlcml2aW5nIHNleHBdXG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBhc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSkgLy8gQW5ub3RhdGlvbnNcbiAgfCBGYWlsIC8vIGlkZW50aXR5IGZvciBgQ2hvaWNlYFxuICB8IENob2ljZSh0KCdhbm5vdCksIHQoJ2Fubm90KSk7XG5cbmxldCB0X29mX3QnID0gKHQnOiB0JygnYW5ub3QpKTogdCgnYW5ub3QpID0+IHttZW06IE0uY3JlYXRlKDApLCBkb2M6IHQnfTtcblxubGV0IHRleHQgPSAoczogc3RyaW5nKSA9PiB0X29mX3QnKFRleHQocykpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IHRfb2ZfdCcoTGluZWJyZWFrKTtcbmxldCBhbGlnbiA9IGRvYyA9PiB0X29mX3QnKEFsaWduKGRvYykpO1xubGV0IGFubm90ID0gKGFubm90LCBkb2MpID0+IHRfb2ZfdCcoQW5ub3QoYW5ub3QsIGRvYykpO1xubGV0IGZhaWwgPSAoKSA9PiB0X29mX3QnKEZhaWwpO1xuXG5sZXQgZW1wdHkgPSAoKSA9PiB0ZXh0KFwiXCIpO1xubGV0IHNwYWNlID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3ApOyAvLyBUT0RPOiBwYXJhbSB0byBoc2VwXG5cbmxldCBpbmRlbnQgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCArKyBVbmljb2RlLm5ic3ApO1xubGV0IGluZGVudF9hbmRfYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhDYXQoaW5kZW50KCksIGFsaWduKGRvYykpKTtcblxubGV0IGhjYXQgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgeSkpO1xubGV0IGhjYXRzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhjYXQsIGRvYywgZG9jcyk7XG5cbmxldCBoc2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KHNwYWNlKCksIHkpKSkpO1xubGV0IGhzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhzZXAsIGRvYywgZG9jcyk7XG5cbmxldCB2c2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KGxpbmVicmVhaygpLCB5KSkpKTtcbmxldCB2c2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWx3aXRoKF9fTE9DX18gKysgXCI6IHZzZXBzIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGxpc3RcIilcbiAgfCBbZG9jXSA9PiBkb2NcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdCh2c2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgY2hvaWNlID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2hvaWNlKHgsIHkpKTtcbmxldCBjaG9pY2VzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbCgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoY2hvaWNlLCBkb2MsIGRvY3MpO1xuXG5sZXQgbWFwX3QnOiAnYSAnYi4gKHQnKCdhKSA9PiB0JygnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PiB0X29mX3QnKGYoZC5kb2MpKTtcblxubGV0IHJlYyBtYXBfYW5ub3Q6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PlxuICAgIGRcbiAgICB8PiBtYXBfdCcoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKFRleHQoXykgfCBMaW5lYnJlYWsgfCBGYWlsKSBhcyBkJyA9PiBkJ1xuICAgICAgICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gQW5ub3QoZihhbm5vdCksIG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQWxpZ24oZCkgPT4gQWxpZ24obWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBDYXQoZDEsIGQyKSA9PiBDYXQobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSlcbiAgICAgICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gQ2hvaWNlKG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpLFxuICAgICAgICk7XG4iLCIvLyBUT0RPOiBjb21wdXRlIGFjdHVhbCBsYXlvdXQgc2l6ZSBhbmQgdXNlIGluc3RlYWQgb2YgdF9vZl9sYXlvdXRcbmxldCByZWMgYWxsOiAnYW5ub3QuIERvYy50KCdhbm5vdCkgPT4gbGlzdChMYXlvdXQudCgnYW5ub3QpKSA9IHtcbiAgZG9jID0+IHtcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PiBbTGF5b3V0LlRleHQoc3RyaW5nKV1cbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbHMxID0gYWxsKGQxKTtcbiAgICAgIGxldCBsczIgPSBhbGwoZDIpO1xuICAgICAgTGlzdC5jb25jYXQoXG4gICAgICAgIExpc3QubWFwKGwxID0+IExpc3QubWFwKGwyID0+IExheW91dC5DYXQobDEsIGwyKSwgbHMyKSwgbHMxKSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT4gW0xheW91dC5MaW5lYnJlYWtdXG4gICAgfCBBbGlnbihkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5BbGlnbihsKSwgYWxsKGQpKVxuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFubm90KGFubm90LCBsKSwgYWxsKGQpKVxuICAgIHwgRmFpbCA9PiBbXVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gYWxsKGQxKSBAIGFsbChkMilcbiAgICB9O1xuICB9O1xufTtcblxuLy8gTm90ZTogVGhpcyB1bmlvbiBpcyBsZWZ0IGJpYXNlZFxubGV0IG0nX3VuaW9uOiAnYS4gKERvYy5tJygnYSksIERvYy5tJygnYSkpID0+IERvYy5tJygnYSkgPVxuICAocDEsIHAyKSA9PiB7XG4gICAgbGV0IGNvc3RfdW5pb24gPSAoKGNvc3QxOiBDb3N0LnQsIF8pIGFzIHQxLCAoY29zdDI6IENvc3QudCwgXykgYXMgdDIpID0+XG4gICAgICBpZiAoQ29zdC5sZXEoY29zdDEsIGNvc3QyKSkge1xuICAgICAgICB0MTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHQyO1xuICAgICAgfTtcbiAgICBQb3NNYXAudW5pb24oY29zdF91bmlvbiwgcDEsIHAyKTtcbiAgfTtcblxubGV0IHJlYyBsYXlvdXRfb2ZfZG9jJyA9IChkb2M6IERvYy50KHVuaXQpKTogRG9jLm0oTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgbGV0IGcgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIC8vIFRPRE86IGxpZnQgdGhlIHN3aXRjaChkb2MuZG9jKSBvdXRzaWRlIHRoZSBsYW1iZGFcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgLy8gVE9ETzogY2FjaGUgdGV4dCBsZW5ndGggaW4gVGV4dD9cbiAgICAgIGxldCBwb3MnID0gcG9zICsgU3RyaW5nLmxlbmd0aChzdHJpbmcpOyAvL1VuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICBsZXQgY29zdCA9XG4gICAgICAgIGlmIChwb3MnIDw9IHdpZHRoKSB7XG4gICAgICAgICAgQ29zdC56ZXJvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBvdmVyZmxvdyA9IHBvcycgLSB3aWR0aDtcbiAgICAgICAgICAvLyBvdmVyZmxvd19jb3N0ID0gc3VtIGkgZnJvbSAxIHRvIG92ZXJmbG93XG4gICAgICAgICAgbGV0IG92ZXJmbG93X2Nvc3QgPSBvdmVyZmxvdyAqIChvdmVyZmxvdyArIDEpIC8gMjtcbiAgICAgICAgICBDb3N0Lm1rX292ZXJmbG93KG92ZXJmbG93X2Nvc3QpO1xuICAgICAgICB9O1xuICAgICAgUG9zTWFwLnNpbmdsZXRvbihwb3MnLCAoY29zdCwgTGF5b3V0LlRleHQoc3RyaW5nKSkpO1xuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLmZvbGRfbGVmdChcbiAgICAgICAgKHBvcywgeiwgKGNvc3QxLCBsYXlvdXQxKSkgPT4ge1xuICAgICAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgICAgIGxldCBsYXlvdXRzID1cbiAgICAgICAgICAgIFBvc01hcC5tYXAoXG4gICAgICAgICAgICAgICgoY29zdDIsIGxheW91dDIpKSA9PlxuICAgICAgICAgICAgICAgIChDb3N0LmFkZChjb3N0MSwgY29zdDIpLCBMYXlvdXQuQ2F0KGxheW91dDEsIGxheW91dDIpKSxcbiAgICAgICAgICAgICAgbDIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG0nX3VuaW9uKHosIGxheW91dHMpO1xuICAgICAgICB9LFxuICAgICAgICBQb3NNYXAuZW1wdHksXG4gICAgICAgIGwxLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PlxuICAgICAgUG9zTWFwLnNpbmdsZXRvbigwLCAoQ29zdC5ta19oZWlnaHQoMSksIExheW91dC5MaW5lYnJlYWspKVxuICAgIHwgQWxpZ24oZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGg9d2lkdGggLSBwb3MsIH5wb3M9MCk7XG4gICAgICBQb3NNYXAubWFwayhcbiAgICAgICAgKHAsIChjLCBsKSkgPT4gKHAgKyBwb3MsIChjLCBMYXlvdXQuQWxpZ24obCkpKSxcbiAgICAgICAgbGF5b3V0LFxuICAgICAgKTtcbiAgICB8IEFubm90KGFubm90LCBkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAubWFwKCgoYywgbCkpID0+IChjLCBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpKSwgbGF5b3V0KTtcbiAgICB8IEZhaWwgPT4gUG9zTWFwLmVtcHR5XG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgIG0nX3VuaW9uKGwxLCBsMik7XG4gICAgfTtcbiAgfTtcbiAgbGV0IGggPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIGxldCBrZXkgPSAod2lkdGgsIHBvcyk7XG4gICAgc3dpdGNoIChEb2MuTS5maW5kX29wdChkb2MubWVtLCBrZXkpKSB7XG4gICAgfCBTb21lKHZhbHVlKSA9PiB2YWx1ZVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHZhbHVlID0gZyh+d2lkdGgsIH5wb3MpO1xuICAgICAgRG9jLk0uYWRkKGRvYy5tZW0sIGtleSwgdmFsdWUpO1xuICAgICAgdmFsdWU7XG4gICAgfTtcbiAgfTtcbiAgaDtcbn07XG5cbmxldCBsYXlvdXRfb2ZfZG9jID1cbiAgICAoZG9jOiBEb2MudCgnYW5ub3QpLCB+d2lkdGg6IGludCwgfnBvczogaW50KTogb3B0aW9uKExheW91dC50KCdhbm5vdCkpID0+IHtcbiAgbGV0IHJlYyBtaW5pbXVtID1cbiAgICAgICAgICAoKHBvcywgKGNvc3QsIHQpKTogKGludCwgKENvc3QudCwgb3B0aW9uKCdhKSkpKVxuICAgICAgICAgIDogKGxpc3QoKGludCwgKENvc3QudCwgJ2EpKSkgPT4gb3B0aW9uKCdhKSkgPT4ge1xuICAgIGZ1blxuICAgIHwgW10gPT4gdFxuICAgIHwgWyh4X3BvcywgKHhfY29zdCwgeCkpLCAuLi5yZXN0XSA9PlxuICAgICAgLy8gUHJlZmVyIGxvd2VzdCBjb3N0LCBvciBpZiBzYW1lIGNvc3QsIHByZWZlciBlbmRpbmcgYXQgYW4gZWFybGllciBjb2x1bW5cbiAgICAgIC8vIChDb2x1bW5zIGFyZSB1bmlxdWUgYnkgY29uc3RydWN0aW9uIG9mIFBvc01hcC4pXG4gICAgICBpZiAoQ29zdC5sdCh4X2Nvc3QsIGNvc3QpIHx8IENvc3QuZXEoeF9jb3N0LCBjb3N0KSAmJiB4X3BvcyA8IHBvcykge1xuICAgICAgICBtaW5pbXVtKCh4X3BvcywgKHhfY29zdCwgU29tZSh4KSkpLCByZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltdW0oKHBvcywgKGNvc3QsIHQpKSwgcmVzdCk7XG4gICAgICB9O1xuICB9O1xuICAvLyBUT0RPOiB1c2Ugb3B0aW9ucyBpbnN0ZWFkIG9mIG1heF9pbnRcbiAgLy8gbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICBsZXQgbCA9XG4gICAgbWluaW11bShcbiAgICAgIChtYXhfaW50LCAoQ29zdC5pbmYsIE5vbmUpKSxcbiAgICAgIE9iai5tYWdpYyhsYXlvdXRfb2ZfZG9jJyhPYmoubWFnaWMoZG9jKSwgfndpZHRoLCB+cG9zKSksXG4gICAgKTtcbiAgLy8gbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgLypcbiAgIFByaW50Zi5wcmludGYoXG4gICAgIFwibGF5b3V0X29mX2RvYzogJWQgXFx0JWZcXG5cIixcbiAgICAgLTEsIC8vZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpIyMuc2l6ZSxcbiAgICAgLy9NZW1vaXplLldlYWtQb2x5LlRhYmxlLmxlbmd0aChmc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkpLFxuICAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICAgKTtcbiAgICovXG4gIGw7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKVxuICB8IEhCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IFZCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCBoZWlnaHRfdGJsOiBNZW1vVGJsLnQodCh1bml0KSwgaW50KSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBoZWlnaHQgPSAoYm94OiB0KCdhbm5vdCkpID0+XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSkpIHtcbiAgICB8IFNvbWUoaCkgPT4gaFxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGggPVxuICAgICAgICBzd2l0Y2ggKGJveCkge1xuICAgICAgICB8IFRleHQoXykgPT4gMVxuICAgICAgICB8IEFubm90KF8sIGIpID0+IGhlaWdodChiKVxuICAgICAgICB8IEhCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAxKSAvLyBOb3RlOiAxIGlzIEhCb3goW10pIGhlaWdodFxuICAgICAgICB8IFZCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKVxuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCksIGgpO1xuICAgICAgaDtcbiAgICB9O1xuXG4gIC8vIE5vdGU6IGFubm90cyBhcmUgaW5zaWRlLW91dCAoaS5lLiBMaXN0LmhkKGFubm90cykgaXMgdGhlIGlubmVyLW1vc3QgYW5ub3QpXG4gIGxldCByZWMgYW5ub3QgPSAoYW5ub3RzOiBsaXN0KCdhbm5vdCksIGJveDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKGFubm90cykge1xuICAgIHwgW10gPT4gYm94XG4gICAgfCBbYW5uLCAuLi5hbm5zXSA9PiBhbm5vdChhbm5zLCBBbm5vdChhbm4sIGJveCkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGFwcGVuZF9ib3ggPVxuICAgICAgICAgICh+YW5ub3RzOiBsaXN0KCdhbm5vdCk9W10sIGJveDE6IHQoJ2Fubm90KSwgYm94MjogdCgnYW5ub3QpKVxuICAgICAgICAgIDogdCgnYW5ub3QpID0+XG4gICAgaWYgKGhlaWdodChib3gxKSA8PSAxKSB7XG4gICAgICBIQm94KFthbm5vdChhbm5vdHMsIGJveDEpLCBib3gyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWMgYXBwZW5kX2xhc3QgPSAoYnMxOiBsaXN0KHQoJ2Fubm90KSkpOiBsaXN0KHQoJ2Fubm90KSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGJzMSkge1xuICAgICAgICB8IFtdID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICAgIHwgW2IxXSA9PiBbYXBwZW5kX2JveCh+YW5ub3RzLCBiMSwgYm94MildXG4gICAgICAgIHwgW2IxLCAuLi5iczFdID0+IFthbm5vdChhbm5vdHMsIGIxKSwgLi4uYXBwZW5kX2xhc3QoYnMxKV1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKGJveDEpIHtcbiAgICAgIHwgVGV4dChfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgfCBIQm94KGJzMSkgPT4gSEJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBWQm94KGJzMSkgPT4gVkJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBBbm5vdChhbm5vdCwgYikgPT4gYXBwZW5kX2JveCh+YW5ub3RzPVthbm5vdCwgLi4uYW5ub3RzXSwgYiwgYm94MilcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgYXBwZW5kX2hib3ggPSAoYm94ZXMxOiBsaXN0KHQoJ2Fubm90KSksIGJveGVzMjogbGlzdCh0KCdhbm5vdCkpKSA9PiB7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChib3hlczEpKSB7XG4gICAgfCBOb25lID0+IGJveGVzMlxuICAgIHwgU29tZSgobGVhZGluZywgbGFzdCkpID0+IGxlYWRpbmcgQCBbYXBwZW5kX2JveChsYXN0LCBIQm94KGJveGVzMikpXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgbGV0IG1rID0gKGJveGVzOiBsaXN0KGxpc3QodChfKSkpKSA9PlxuICAgICAgVkJveChMaXN0Lm1hcChyb3cgPT4gSEJveChyb3cpLCBib3hlcykpO1xuICAgIGxldCByZWMgZ28gPSAobDogTGF5b3V0LnQoXykpID0+IHtcbiAgICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICAgIHwgU29tZShib3gpID0+IE9iai5tYWdpYyhib3gpXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGJveCA9XG4gICAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgICAgfCBMaW5lYnJlYWsgPT4gW1tdLCBbXV1cbiAgICAgICAgICB8IFRleHQocykgPT4gW1tUZXh0KHMpXV1cbiAgICAgICAgICB8IEFsaWduKGwpID0+IFtbbWsoZ28obCkpXV1cbiAgICAgICAgICB8IEFubm90KGFubiwgbCkgPT5cbiAgICAgICAgICAgIGdvKGwpIHw+IExpc3QubWFwKHJvdyA9PiBbQW5ub3QoYW5uLCBIQm94KHJvdykpXSlcbiAgICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnbyhsMSkpO1xuICAgICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoZ28obDIpKTtcbiAgICAgICAgICAgIGxlYWRpbmcgQCBbYXBwZW5kX2hib3gobGFzdCwgZmlyc3QpLCAuLi50cmFpbGluZ107XG4gICAgICAgICAgfTtcbiAgICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKGJveCkpO1xuICAgICAgICBib3g7XG4gICAgICB9O1xuICAgIH07XG4gICAgbWsoZ28obCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1cCkgPT4ge2FjYyB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKX0sIGZhbHNlLCBsKVxuICB8IFBhcmVucyh1cCkgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IENhc3QodXAsIF8sIF8pID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuICBIZWxwZXIgZnVuY3Rpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZmluZF9mbiB3aGljaCB0YWtlcyB0aGVcbiAgcGF0dGVybiAodXBhdCkgYW5kIHRoZSBkZWZpbml0aW9uIChkZWYpIG9mIGEgbGV0IGV4cHJlc3Npb24gYW5kXG4gIGNvbGxlY3RzIGZ1bmN0aW9ucyBpbiBkZWYgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBpblxuICB1cGF0LiBFeGFtcGxlOiBmb3IgdGhlIGV4cHJlc3Npb24gXCJsZXQgKGEsYikgPSAoZnVuIHggLT4geCsxLCA0MSkgaW5cIlxuICBpZiBuYW1lPVwiYVwiLCB0aGVuIGw9W2Z1biB4IC0+IHgrMV1cbiAqL1xubGV0IHJlYyBmaW5kX2luX2xldCA9XG4gICAgICAgIChuYW1lOiBzdHJpbmcsIHVwYXQ6IFVQYXQudCwgZGVmOiBVRXhwLnQsIGw6IGxpc3QoVUV4cC50KSlcbiAgICAgICAgOiBsaXN0KFVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSwgZGVmLnRlcm0pIHtcbiAgfCAoUGFyZW5zKHVwKSwgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBsKVxuICB8IChQYXJlbnModXApLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChfLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cGF0LCB1ZSwgbClcbiAgfCAoQ2FzdCh1cCwgXywgXyksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKFZhcih4KSwgRnVuKF8pKSA9PiB4ID09IG5hbWUgPyBbZGVmLCAuLi5sXSA6IGxcbiAgfCAoVHVwbGUocGwpLCBUdXBsZSh1bCkpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKHBsKSAhPSBMaXN0Lmxlbmd0aCh1bCkpIHtcbiAgICAgIGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgKGFjYywgdXAsIHVlKSA9PiB7ZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBhY2MpfSxcbiAgICAgICAgbCxcbiAgICAgICAgcGwsXG4gICAgICAgIHVsLFxuICAgICAgKTtcbiAgICB9XG4gIHwgKFZhcihfKSwgXylcbiAgfCAoVHVwbGUoXyksIF8pXG4gIHwgKFxuICAgICAgRW1wdHlIb2xlIHwgV2lsZCB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8IEJvb2woXykgfFxuICAgICAgU3RyaW5nKF8pIHxcbiAgICAgIExpc3RMaXQoXykgfFxuICAgICAgQ29uc3RydWN0b3IoXykgfFxuICAgICAgQ29ucyhfLCBfKSB8XG4gICAgICBBcChfLCBfKSxcbiAgICAgIF8sXG4gICAgKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmQgYW55IGZ1bmN0aW9uIGV4cHJlc3Npb25zIGluIHVleHAgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZVxuICovXG5sZXQgcmVjIGZpbmRfZm4gPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1ZXhwOiBVRXhwLnQsIGw6IGxpc3QoVUV4cC50KSk6IGxpc3QoVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgTGV0KHVwLCBkZWYsIGJvZHkpID0+XG4gICAgbCB8PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmKSB8PiBmaW5kX2ZuKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdCh1bClcbiAgfCBUdXBsZSh1bCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1MSkgPT4ge2ZpbmRfZm4obmFtZSwgdTEsIGFjYyl9LCBsLCB1bClcbiAgfCBUeXBGdW4oXywgYm9keSwgXylcbiAgfCBGaXhGKF8sIGJvZHksIF8pXG4gIHwgRnVuKF8sIGJvZHksIF8sIF8pID0+IGwgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IFR5cEFwKHUxLCBfKVxuICB8IFBhcmVucyh1MSlcbiAgfCBDYXN0KHUxLCBfLCBfKVxuICB8IFVuT3AoXywgdTEpXG4gIHwgVHlBbGlhcyhfLCBfLCB1MSlcbiAgfCBUZXN0KHUxKVxuICB8IENsb3N1cmUoXywgdTEpXG4gIHwgRmlsdGVyKF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAoXywgdTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpIHw+IGZpbmRfZm4obmFtZSwgdTMpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICBsXG4gICAgfD4gZmluZF9mbihuYW1lLCBmbilcbiAgICB8PiBMaXN0LmZvbGRfbGVmdCgobCwgdSkgPT4gZmluZF9mbihuYW1lLCB1LCBsKSwgXywgYXJncylcbiAgfCBNYXRjaCh1MSwgdWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgdWUpKSA9PiB7ZmluZF9mbihuYW1lLCB1ZSwgYWNjKX0sXG4gICAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpLFxuICAgICAgdWwsXG4gICAgKVxuICB8IEVtcHR5SG9sZVxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBGYWlsZWRDYXN0KF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBCdWlsdGluRnVuKF8pXG4gIHwgVmFyKF8pID0+IGxcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGV2ZXIgbWVudGlvbmVkIGluIHVwYXQuXG4gKi9cbmxldCByZWMgdmFyX21lbnRpb25fdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBDYXN0KHVwLCBfLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHksIF8sIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBkZWYpIHx8IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVHlwQXAodSwgXylcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBEeW5hbWljRXJyb3JIb2xlKHUsIF8pID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgRmFpbGVkQ2FzdCh1LCBfLCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEZpeEYoYXJncywgYm9keSwgXykgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IENsb3N1cmUoXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBCdWlsdGluRnVuKF8pID0+IGZhbHNlXG4gIHwgQ2FzdChkLCBfLCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCBkKVxuICB8IEFwKF8sIHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSwgXywgXylcbiAgfCBGaXhGKGFyZ3MsIGJvZHksIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+IGZhbHNlXG4gIHwgRmFpbGVkQ2FzdChfKSA9PiBmYWxzZVxuICAvLyBUaGlzIGNhc2Ugc2hvdWxkbid0IGNvbWUgdXAhXG4gIHwgQ2xvc3VyZShfKSA9PiBmYWxzZVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gZmFsc2VcbiAgfCBDYXN0KGQsIF8sIF8pID0+IHZhcl9hcHBsaWVkKG5hbWUsIGQpXG4gIHwgQXAoXywgdTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBEZWZlcnJlZEFwKHUxLCB1cykgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIHwgXyA9PiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfVxuICB8IENvbnModTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSByZWN1cnNpdmUuXG4gKi9cbmxldCBpc19yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgaWYgdmFyaWFibGUgbmFtZSBpcyBub3QgbWVudGlvbmVkIGFueXdoZXJlIG91dHNpZGUgb2ZcbiBhIHRhaWwgcG9zaXRpb24gaW4gdWV4cC4gTm90ZSB0aGF0IGlmIHRoZSB2YXJpYWJsZSBpcyBub3RcbiBtZW50aW9uZWQgYW55d2hlcmUgaW4gdGhlIGV4cHJlc3Npb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuXG4gKi9cbmxldCByZWMgdGFpbF9jaGVjayA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICB8IEZhaWxlZENhc3QoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gdHJ1ZVxuICB8IEZpeEYoYXJncywgYm9keSwgXylcbiAgfCBGdW4oYXJncywgYm9keSwgXywgXykgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApIHx8IHZhcl9tZW50aW9uKG5hbWUsIGRlZilcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgLy9JZiBsIGhhcyBubyByZWN1cnNpdmUgY2FsbHMgdGhlbiB0cnVlXG4gICAgIUxpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IFRlc3QoXykgPT4gZmFsc2VcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgQ2FzdCh1LCBfLCBfKVxuICB8IEZpbHRlcihfLCB1KVxuICB8IENsb3N1cmUoXywgdSlcbiAgfCBUeXBGdW4oXywgdSwgXylcbiAgfCBUeXBBcCh1LCBfKVxuICB8IFBhcmVucyh1KSA9PiB0YWlsX2NoZWNrKG5hbWUsIHUpXG4gIHwgVW5PcChfLCB1KSA9PiAhdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcChfLCB1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUyKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MSlcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIHRhaWxfY2hlY2sobmFtZSwgQXAoRm9yd2FyZCwgZm4sIFR1cGxlKGFyZ3MpIHw+IEV4cC5mcmVzaCkgfD4gRXhwLmZyZXNoKVxuICB8IFNlcSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+ICEodmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSlcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKVxuICAgICAgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpICYmIHRhaWxfY2hlY2sobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCAocCwgZSkpID0+IHtcbiAgICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyAmJiB0YWlsX2NoZWNrKG5hbWUsIGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIGwsXG4gICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgd2hldGhlciBhbGwgZnVuY3Rpb25zIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgYXJlIHRhaWwgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfdGFpbF9yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBVRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgY2hlY2sgPSAodWV4cDogVUV4cC50LCBwcmVkaWNhdGVzOiBsaXN0KFVFeHAudCA9PiBib29sKSk6IHN5bnRheF9yZXN1bHQgPT4ge1xuICBsZXQgcmVzdWx0cyA9IExpc3QubWFwKHByZWQgPT4ge3VleHAgfD4gcHJlZH0sIHByZWRpY2F0ZXMpO1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgocHJlZGljYXRlcyk7XG4gIGxldCBwYXNzaW5nID0gVXRpbC5MaXN0VXRpbC5jb3VudF9wcmVkKHJlcyA9PiByZXMsIHJlc3VsdHMpO1xuXG4gIHtcbiAgICByZXN1bHRzLFxuICAgIHBlcmNlbnRhZ2U6XG4gICAgICAvL3ZhY3VvdXNseSBwYXNzZXMgaWYgdGhlcmUgYXJlIG5vIHRlc3RzXG4gICAgICBsZW5ndGggPT0gMCA/IDEuIDogZmxvYXRfb2ZfaW50KHBhc3NpbmcpIC8uIGZsb2F0X29mX2ludChsZW5ndGgpLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwcmVkaWNhdGUgPVxuICB8IFZhckFwcGxpZWQoc3RyaW5nKVxuICB8IElzUmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc05vdFJlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKHN0cmluZyk7XG5cbmxldCBwcmVkaWNhdGVfZm4gPSBwcmVkaWNhdGUgPT4ge1xuICBzd2l0Y2ggKHByZWRpY2F0ZSkge1xuICB8IFZhckFwcGxpZWQobmFtZSkgPT4gdmFyX2FwcGxpZWQobmFtZSlcbiAgfCBJc1JlY3Vyc2l2ZShuYW1lKSA9PiBpc19yZWN1cnNpdmUobmFtZSlcbiAgfCBJc05vdFJlY3Vyc2l2ZShuYW1lKSA9PiAodWV4cCA9PiAhaXNfcmVjdXJzaXZlKG5hbWUsIHVleHApKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShuYW1lKSA9PiBpc190YWlsX3JlY3Vyc2l2ZShuYW1lKVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7ZWRzfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSk7XG5cbiAgbGV0IG1haW5fZWRpdG9yX29mX3N0YXRlID0gKH5zZWxlY3Rpb246IHBvcywge2Vkc30pID0+XG4gICAgc3dpdGNoIChzZWxlY3Rpb24pIHtcbiAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGVkcy5jb3JyZWN0X2ltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICB8IFlvdXJJbXBsID0+IGVkcy55b3VyX2ltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaSkgPT4gTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBpKS5pbXBsXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgfTtcblxuICBsZXQgcHV0X21haW5fZWRpdG9yID0gKH5zZWxlY3Rpb246IHBvcywge2Vkc306IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHByZWx1ZGU6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IENvcnJlY3RJbXBsID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuQnVncyhuKSA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICAgIFV0aWwuTGlzdFV0aWwucHV0X250aChcbiAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgey4uLkxpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgbiksIGltcGw6IGVkaXRvcn0sXG4gICAgICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCB6aXBwZXJfb2ZfY29kZSA9IGNvZGUgPT4ge1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gICAgfCBOb25lID0+IGZhaWx3aXRoKFwiVHJhbnNpdGlvbiBmYWlsZWQuXCIpXG4gICAgfCBTb21lKHppcHBlcikgPT4gemlwcGVyXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbjogdHJhbnNpdGlvbmFyeV9zcGVjID0+IHNwZWMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IHppcHBlcl9vZl9jb2RlKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IHppcHBlcl9vZl9jb2RlKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUoeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gemlwcGVyX29mX2NvZGUoeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltcGwgPSB6aXBwZXJfb2ZfY29kZShpbXBsKTtcbiAgICAgICAgICAgIGFjYyBAIFt7aW1wbCwgaGludH1dO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiA9IHppcHBlciA9PiBFZGl0b3IuaW5pdCh6aXBwZXIpO1xuICBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBoaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoe2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAgICB7aW1wbCwgaGludH07XG4gICAgICAgICAgIH0pO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICAvL1xuICAvLyBPbGQgdmVyc2lvbiBvZiBhYm92ZSB0aGF0IGRpZCBzdHJpbmctYmFzZWQgcGFyc2luZywgbWF5IGJlIHVzZWZ1bFxuICAvLyBmb3IgdHJhbnNpdGlvbnMgYmV0d2VlbiB6aXBwZXIgZGF0YSBzdHJ1Y3R1cmUgdmVyc2lvbnMgKFRPRE8pXG4gIC8vXG4gIC8vIGxldCBlZGl0b3Jfb2ZfY29kZSA9IChpbml0X2lkLCBjb2RlKSA9PlxuICAvLyAgIHN3aXRjaCAoRWRpdG9yVXRpbC5lZGl0b3Jfb2ZfY29kZShpbml0X2lkLCBjb2RlKSkge1xuICAvLyAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIkV4ZXJjaXNlIGVycm9yOiBpbnZhbGlkIGNvZGVcIilcbiAgLy8gICB8IFNvbWUoeCkgPT4geFxuICAvLyAgIH07XG4gIC8vIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAvLyAgIChcbiAgLy8gICAgIHtcbiAgLy9cbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH0sXG4gIC8vICAgKSA9PiB7XG4gIC8vICAgICBsZXQgaWQgPSBuZXh0X2lkO1xuICAvLyAgICAgbGV0IChpZCwgcHJlbHVkZSkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgcHJlbHVkZSk7XG4gIC8vICAgICBsZXQgKGlkLCBjb3JyZWN0X2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGNvcnJlY3RfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfdGVzdHMudGVzdHMpO1xuICAvLyAgICAgICAoXG4gIC8vICAgICAgICAgaWQsXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgdGVzdHMsXG4gIC8vICAgICAgICAgICBudW1fcmVxdWlyZWQ6IHlvdXJfdGVzdHMubnVtX3JlcXVpcmVkLFxuICAvLyAgICAgICAgICAgbWluaW11bTogeW91cl90ZXN0cy5taW5pbXVtLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9O1xuICAvLyAgICAgbGV0IChpZCwgeW91cl9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX2J1Z3MpID1cbiAgLy8gICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gIC8vICAgICAgICAgKChpZCwgYWNjKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gIC8vICAgICAgICAgICBsZXQgKGlkLCBpbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBpbXBsKTtcbiAgLy8gICAgICAgICAgIChpZCwgYWNjIEAgW3tpbXBsLCBoaW50fV0pO1xuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAgKGlkLCBbXSksXG4gIC8vICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgICk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB0ZXN0cyk7XG4gIC8vICAgICAgIChpZCwge3Rlc3RzLCBoaW50c30pO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbmV4dF9pZDogaWQsXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9O1xuICAvLyAgIH07XG5cbiAgbGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoe2Vkc306IHN0YXRlLCBuZXdfbW9kZTogYm9vbCkgPT4ge1xuICAgIGVkczoge1xuICAgICAgLi4uZWRzLFxuICAgICAgcHJlbHVkZTogRWRpdG9yLnNldF9yZWFkX29ubHkoZWRzLnByZWx1ZGUsICFuZXdfbW9kZSksXG4gICAgfSxcbiAgfTtcblxuICBsZXQgdmlzaWJsZV9pbiA9IChwb3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0cnVlXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGZhbHNlXG4gICAgfCBZb3VySW1wbCA9PiB0cnVlXG4gICAgfCBIaWRkZW5CdWdzKF8pID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGVfb2Zfc3BlYyA9IChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogc3RhdGUgPT4ge1xuICAgIGxldCBlZHMgPSBlZHNfb2Zfc3BlYyhzcGVjKTtcbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKHtlZHM6IGVkc30sIGluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUgPSAoc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICB6aXBwZXJzO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3Rfc3RhdGUgPVxuICAgICAgKFxuICAgICAgICBwb3NpdGlvbmVkX3ppcHBlcnM6IHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgIH5zcGVjOiBzcGVjLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgICAgKVxuICAgICAgOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGxvb2t1cCA9IChwb3MsIGRlZmF1bHQpID0+XG4gICAgICBpZiAodmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIGxldCBwZXJzaXN0ZWRfemlwcGVyID0gTGlzdC5hc3NvYyhwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk7XG4gICAgICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdChwZXJzaXN0ZWRfemlwcGVyKTtcbiAgICAgICAgRWRpdG9yLmluaXQoemlwcGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGRlZmF1bHQpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBlZHM6IHtcbiAgICAgICAgICB0aXRsZTogc3BlYy50aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uOiBzcGVjLnZlcnNpb24sXG4gICAgICAgICAgbW9kdWxlX25hbWU6IHNwZWMubW9kdWxlX25hbWUsXG4gICAgICAgICAgcHJvbXB0OiBzcGVjLnByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb246IHNwZWMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHNwZWMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHByb3ZpZGVkOiBzcGVjLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgaGludHM6IHNwZWMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ludGF4X3Rlc3RzOiBzcGVjLnN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAgfTtcblxuICAvLyAjIFN0aXRjaGluZ1xuXG4gIG1vZHVsZSBUZXJtSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBFeHAudCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQsXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3RhdGljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzO1xuICB9O1xuXG4gIHR5cGUgc3RpdGNoZWQoJ2EpID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgdXNlcl9pbXBsOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbFxuICAgIHVzZXJfdGVzdHM6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsICsgeW91cl90ZXN0c1xuICAgIHByZWx1ZGU6ICdhLCAvLyBwcmVsdWRlXG4gICAgaW5zdHJ1Y3RvcjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyBoaWRkZW5fdGVzdHMudGVzdHMgLy8gVE9ETyBvbmx5IG5lZWRzIHRvIHJ1biBpbiBpbnN0cnVjdG9yIG1vZGVcbiAgICBoaWRkZW5fYnVnczogbGlzdCgnYSksIC8vIHByZWx1ZGUgKyBoaWRkZW5fYnVnc1tpXS5pbXBsICsgeW91cl90ZXN0cyxcbiAgICBoaWRkZW5fdGVzdHM6ICdhLFxuICB9O1xuXG4gIGxldCB3cmFwX2ZpbHRlciA9IChhY3Q6IEZpbHRlckFjdGlvbi5hY3Rpb24sIHRlcm06IFVFeHAudCk6IFVFeHAudCA9PlxuICAgIEV4cC57XG4gICAgICB0ZXJtOlxuICAgICAgICBFeHAuRmlsdGVyKFxuICAgICAgICAgIEZpbHRlcih7XG4gICAgICAgICAgICBhY3Q6IEZpbHRlckFjdGlvbi4oYWN0LCBPbmUpLFxuICAgICAgICAgICAgcGF0OiB7XG4gICAgICAgICAgICAgIHRlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksXG4gICAgICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgICAgIGlkczogW0lkLm1rKCldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgIGlkczogW0lkLm1rKCldLFxuICAgIH07XG5cbiAgbGV0IHdyYXAgPSAodGVybSwgZWRpdG9yOiBFZGl0b3IudCk6IFRlcm1JdGVtLnQgPT4ge1xuICAgIHRlcm0sXG4gICAgdGVybV9yYW5nZXM6IGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLFxuICB9O1xuXG4gIGxldCB0ZXJtX29mID0gKGVkaXRvcjogRWRpdG9yLnQpOiBVRXhwLnQgPT4gZWRpdG9yLnN0YXRlLm1ldGEudmlld190ZXJtO1xuXG4gIGxldCBzdGl0Y2gzID0gKGVkMTogRWRpdG9yLnQsIGVkMjogRWRpdG9yLnQsIGVkMzogRWRpdG9yLnQpID0+XG4gICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKFxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHRlcm1fb2YoZWQxKSwgdGVybV9vZihlZDIpKSxcbiAgICAgIHRlcm1fb2YoZWQzKSxcbiAgICApO1xuXG4gIGxldCBzdGl0Y2hfdGVybSA9ICh7ZWRzLCBffTogc3RhdGUpOiBzdGl0Y2hlZChUZXJtSXRlbS50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHdyYXAodGVzdF92YWxpZGF0aW9uX3Rlcm0sIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgIHVzZXJfaW1wbDogd3JhcCh1c2VyX2ltcGxfdGVybSwgZWRzLnlvdXJfaW1wbCksXG4gICAgICB1c2VyX3Rlc3RzOiB3cmFwKHVzZXJfdGVzdHNfdGVybSwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgLy8gaW5zdHJ1Y3RvciB3b3JrcyBoZXJlIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgcHJlbHVkZTogd3JhcChpbnN0cnVjdG9yLCBlZHMucHJlbHVkZSksXG4gICAgICBpbnN0cnVjdG9yOiB3cmFwKGluc3RydWN0b3IsIGVkcy5jb3JyZWN0X2ltcGwpLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUl0ZW0udCA9PlxuICAgICAgICAgICAgd3JhcChzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSwgdC5pbXBsKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IHdyYXAoaGlkZGVuX3Rlc3RzX3Rlcm0sIGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChTdGF0aWNzSXRlbS50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtSXRlbS50KSk6IHN0aXRjaGVkX3N0YXRpY3MgPT4ge1xuICAgIGxldCBtayA9ICh7dGVybSwgdGVybV9yYW5nZXMsIF99OiBUZXJtSXRlbS50KTogU3RhdGljc0l0ZW0udCA9PiB7XG4gICAgICBsZXQgaW5mb19tYXAgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuICAgICAge1xuICAgICAgICB0ZXJtLFxuICAgICAgICBlcnJvcl9pZHM6IFN0YXRpY3MuTWFwLmVycm9yX2lkcyh0ZXJtX3JhbmdlcywgaW5mb19tYXApLFxuICAgICAgICBpbmZvX21hcCxcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHBvczogcG9zKTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcHJlbHVkZV9rZXlcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3Jfa2V5XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRlc3RfdmFsaWRhdGlvbl9rZXlcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gdXNlcl90ZXN0c19rZXlcbiAgICB8IFlvdXJJbXBsID0+IHVzZXJfaW1wbF9rZXlcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBoaWRkZW5fYnVnc19rZXkoaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaGlkZGVuX3Rlc3RzX2tleVxuICAgIH07XG5cbiAgbGV0IHNwbGljZWRfZWxhYnMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlOiBfLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgZWxhYiA9IChzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MpOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQgPT4ge1xuICAgICAgZDogSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3MsIHMuaW5mb19tYXAsIHMudGVybSksXG4gICAgfTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBTdGF0aWNzSXRlbS50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbGV0IG1rX3N0YXRpY3MgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBTdGF0aWNzSXRlbS50KSkgPT4ge1xuICAgIGxldCBzdGl0Y2hlZCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgW1xuICAgICAgKHByZWx1ZGVfa2V5LCBzdGl0Y2hlZC5wcmVsdWRlKSxcbiAgICAgICh0ZXN0X3ZhbGlkYXRpb25fa2V5LCBzdGl0Y2hlZC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgKHVzZXJfaW1wbF9rZXksIHN0aXRjaGVkLnVzZXJfaW1wbCksXG4gICAgICAodXNlcl90ZXN0c19rZXksIHN0aXRjaGVkLnVzZXJfdGVzdHMpLFxuICAgICAgKGluc3RydWN0b3Jfa2V5LCBzdGl0Y2hlZC5pbnN0cnVjdG9yKSxcbiAgICAgIChoaWRkZW5fdGVzdHNfa2V5LCBzdGl0Y2hlZC5oaWRkZW5fdGVzdHMpLFxuICAgIF1cbiAgICBAIExpc3QubWFwaShcbiAgICAgICAgKG4sIGhpZGRlbl9idWc6IFN0YXRpY3NJdGVtLnQpID0+IChoaWRkZW5fYnVnc19rZXkobiksIGhpZGRlbl9idWcpLFxuICAgICAgICBzdGl0Y2hlZC5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBFeHAudCxcbiAgICAgIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge1xuICAgICAgdGVybToge1xuICAgICAgICB0ZXJtOiBUdXBsZShbXSksXG4gICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgIGlkczogW0lkLm1rKCldLFxuICAgICAgfSxcbiAgICAgIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICB9O1xuICAgIGxldCBzdGF0aWNzX29ubHkgPSAoe3Rlcm0sIGluZm9fbWFwLCBffTogU3RhdGljc0l0ZW0udCk6IHQgPT4ge1xuICAgICAge3Rlcm0sIGluZm9fbWFwLCByZXN1bHQ6IE5vRWxhYn07XG4gICAgfTtcbiAgfTtcblxuICAvKiBHaXZlbiB0aGUgZXZhbHVhdGlvbiByZXN1bHRzLCBjb2xsZWN0cyB0aGVcbiAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHByb2R1Y2luZyBkeW5hbWljXG4gICAgIGZlZWRiYWNrKi9cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgcmVzdWx0X29mID0ga2V5ID0+XG4gICAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBNb2RlbFJlc3VsdC5Ob0VsYWJcbiAgICAgIHwgU29tZShyZXN1bHRzKSA9PlxuICAgICAgICBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIGtleSlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU1vZGVsUmVzdWx0Lk5vRWxhYilcbiAgICAgIH07XG5cbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHRlc3RfdmFsaWRhdGlvbi50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdGVzdF92YWxpZGF0aW9uLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih0ZXN0X3ZhbGlkYXRpb25fa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl9pbXBsID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHVzZXJfaW1wbC50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdXNlcl9pbXBsLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX2ltcGxfa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB1c2VyX3Rlc3RzLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiB1c2VyX3Rlc3RzLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX3Rlc3RzX2tleSksXG4gICAgICB9O1xuICAgIGxldCBwcmVsdWRlID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHByZWx1ZGUudGVybSxcbiAgICAgICAgaW5mb19tYXA6IHByZWx1ZGUuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogTm9FbGFiLFxuICAgICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiBpbnN0cnVjdG9yLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBpbnN0cnVjdG9yLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihpbnN0cnVjdG9yX2tleSksXG4gICAgICB9O1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBzdGF0aWNzX2l0ZW06IFN0YXRpY3NJdGVtLnQpID0+XG4gICAgICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgICAgIHRlcm06IHN0YXRpY3NfaXRlbS50ZXJtLFxuICAgICAgICAgICAgaW5mb19tYXA6IHN0YXRpY3NfaXRlbS5pbmZvX21hcCxcbiAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogaGlkZGVuX3Rlc3RzLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBoaWRkZW5fdGVzdHMuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2UuRXhlcmNpc2VFbnYpID0+IHtcbiAgb3BlbiBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyY2VudGFnZSA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRzID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzY29yZSA9IChwb2ludHMsIHBvaW50cyk7XG5cbiAgbGV0IHNjb3JlX29mX3BlcmNlbnQgPSAocGVyY2VudCwgbWF4X3BvaW50cykgPT4ge1xuICAgIGxldCBtYXhfcG9pbnRzID0gZmxvYXRfb2ZfaW50KG1heF9wb2ludHMpO1xuICAgIChwZXJjZW50ICouIG1heF9wb2ludHMsIG1heF9wb2ludHMpO1xuICB9O1xuXG4gIG1vZHVsZSBUZXN0VmFsaWRhdGlvblJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgICBwcm92aWRlZDogaW50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfcmVzdWx0cyxcbiAgICAgICAgcmVxdWlyZWQ6IGVkcy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogZWRzLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IDAuMFxuICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgbGV0IG51bV90ZXN0cyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpO1xuICAgICAgICBsZXQgcmVxdWlyZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnJlcXVpcmVkKTtcbiAgICAgICAgbGV0IHByb3ZpZGVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5wcm92aWRlZCk7XG4gICAgICAgIGxldCBudW1fcGFzc2luZyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMucGFzc2luZyk7XG5cbiAgICAgICAgcmVxdWlyZWQgLS4gcHJvdmlkZWQgPD0gMC4wIHx8IG51bV90ZXN0cyA8PSAwLjBcbiAgICAgICAgICA/IDAuMFxuICAgICAgICAgIDogbnVtX3Bhc3NpbmdcbiAgICAgICAgICAgIC8uIG51bV90ZXN0c1xuICAgICAgICAgICAgKi4gKFxuICAgICAgICAgICAgICBGbG9hdC5tYXgoXG4gICAgICAgICAgICAgICAgMC4sXG4gICAgICAgICAgICAgICAgRmxvYXQubWluKG51bV90ZXN0cyAtLiBwcm92aWRlZCwgcmVxdWlyZWQgLS4gcHJvdmlkZWQpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8uIChyZXF1aXJlZCAtLiBwcm92aWRlZClcbiAgICAgICAgICAgICk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgICAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICAgICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICAgICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICAgICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgICAgICB+cl9zdHI9XCJ2YWxpZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge3Jlc3VsdHM6IGxpc3QoKFRlc3RTdGF0dXMudCwgc3RyaW5nKSl9O1xuXG4gICAgbGV0IGhpZGRlbl9idWdfc3RhdHVzID1cbiAgICAgICAgKFxuICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICBoaWRkZW5fYnVnX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICApXG4gICAgICAgIDogVGVzdFN0YXR1cy50ID0+IHtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyh0ZXN0X3ZhbGlkYXRpb25fZGF0YS5yZXN1bHQpLFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoaGlkZGVuX2J1Z19kYXRhLnJlc3VsdCksXG4gICAgICApIHtcbiAgICAgIHwgKE5vbmUsIF8pXG4gICAgICB8IChfLCBOb25lKSA9PiBJbmRldFxuICAgICAgfCAoU29tZSh0ZXN0X3ZhbGlkYXRpb25fZGF0YSksIFNvbWUoaGlkZGVuX2J1Z19kYXRhKSkgPT5cbiAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9tYXAgPSB0ZXN0X3ZhbGlkYXRpb25fZGF0YS50ZXN0X21hcDtcbiAgICAgICAgbGV0IGhpZGRlbl9idWdfdGVzdF9tYXAgPSBoaWRkZW5fYnVnX2RhdGEudGVzdF9tYXA7XG5cbiAgICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgICBoaWRkZW5fYnVnX3Rlc3RfbWFwXG4gICAgICAgICAgfD4gTGlzdC5maW5kX29wdCgoKGlkLCBpbnN0YW5jZV9yZXBvcnRzKSkgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKGluc3RhbmNlX3JlcG9ydHMpO1xuICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsID0+XG4gICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cyA9XG4gICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl90ZXN0X21hcCB8PiBUZXN0TWFwLmxvb2t1cChpZCk7XG4gICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMpIHtcbiAgICAgICAgICAgICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgU29tZShyZXBvcnRzKSA9PlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhyZXBvcnRzKTtcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzID0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbFxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICBzd2l0Y2ggKGZvdW5kKSB7XG4gICAgICAgIHwgTm9uZSA9PiBGYWlsXG4gICAgICAgIHwgU29tZShfKSA9PiBQYXNzXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07IC8vIGZvciBlYWNoIGhpZGRlbiBidWdcbiAgICAvLyAgIGluIHRoZSB0ZXN0IHJlc3VsdHMgZGF0YSwgZmluZCBhIHRlc3QgSUQgdGhhdCBwYXNzZXMgdGVzdCB2YWxpZGF0aW9uIGJ1dCBmYWlscyBhZ2FpbnN0XG5cbiAgICBsZXQgbWsgPVxuICAgICAgICAoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlOiBsaXN0KHdyb25nX2ltcGwoRWRpdG9yLnQpKSxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M6IGxpc3QoRHluYW1pY3NJdGVtLnQpLFxuICAgICAgICApXG4gICAgICAgIDogdCA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9XG4gICAgICAgIExpc3QubWFwKGhpZGRlbl9idWdfc3RhdHVzKHRlc3RfdmFsaWRhdGlvbiksIGhpZGRlbl9idWdzKTtcbiAgICAgIGxldCBoaW50cyA9XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh3cm9uZ19pbXBsOiB3cm9uZ19pbXBsKEVkaXRvci50KSkgPT4gd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgIGhpZGRlbl9idWdzX3N0YXRlLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlc3VsdHMgPSBMaXN0LmNvbWJpbmUocmVzdWx0cywgaGludHMpO1xuICAgICAge3Jlc3VsdHM6IHJlc3VsdHN9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIGxldCByZXN1bHRzID0gcmVwb3J0LnJlc3VsdHM7XG4gICAgICBsZXQgbnVtX3dyb25nX2ltcGxzID0gTGlzdC5sZW5ndGgocmVzdWx0cyk7XG4gICAgICBsZXQgbnVtX3Bhc3NlZCA9XG4gICAgICAgIHJlc3VsdHNcbiAgICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICAgIHw+IExpc3QubGVuZ3RoO1xuICAgICAgc3dpdGNoIChudW1fd3JvbmdfaW1wbHMpIHtcbiAgICAgIHwgMCA9PiAxLjBcbiAgICAgIHwgXyA9PiBmbG9hdF9vZl9pbnQobnVtX3Bhc3NlZCkgLy4gZmxvYXRfb2ZfaW50KG51bV93cm9uZ19pbXBscylcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIFRPRE8gbW92ZSB0byBzZXBhcmF0ZSBtb2R1bGVcblxuICAgIGxldCBzdW1tYXJ5X3N0ciA9ICh+dG90YWwsIH5mb3VuZCk6IHN0cmluZyA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRvdGFsLFxuICAgICAgICB+cD1mb3VuZCxcbiAgICAgICAgfnE9MCxcbiAgICAgICAgfm5fc3RyPVwiYnVnXCIsXG4gICAgICAgIH5uc19zdHI9XCJidWdzXCIsXG4gICAgICAgIH5wX3N0cj1cImV4cG9zZWRcIixcbiAgICAgICAgfnFfc3RyPVwiXCIsXG4gICAgICAgIH5yX3N0cj1cInVucmV2ZWFsZWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3ludGF4UmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChib29sLCBoaW50KSksXG4gICAgICBwZXJjZW50YWdlLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofnlvdXJfaW1wbDogRWRpdG9yLnQsIH50ZXN0czogc3ludGF4X3Rlc3RzKTogdCA9PiB7XG4gICAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPSB5b3VyX2ltcGwuc3RhdGUubWV0YS52aWV3X3Rlcm07XG5cbiAgICAgIGxldCBwcmVkaWNhdGVzID1cbiAgICAgICAgTGlzdC5tYXAoKChfLCBwKSkgPT4gU3ludGF4VGVzdC5wcmVkaWNhdGVfZm4ocCksIHRlc3RzKTtcbiAgICAgIGxldCBoaW50cyA9IExpc3QubWFwKCgoaCwgXykpID0+IGgsIHRlc3RzKTtcbiAgICAgIGxldCBzeW50YXhfcmVzdWx0cyA9IFN5bnRheFRlc3QuY2hlY2sodXNlcl9pbXBsX3Rlcm0sIHByZWRpY2F0ZXMpO1xuXG4gICAgICB7XG4gICAgICAgIGhpbnRlZF9yZXN1bHRzOlxuICAgICAgICAgIExpc3QubWFwMigociwgaCkgPT4gKHIsIGgpLCBzeW50YXhfcmVzdWx0cy5yZXN1bHRzLCBoaW50cyksXG4gICAgICAgIHBlcmNlbnRhZ2U6IHN5bnRheF9yZXN1bHRzLnBlcmNlbnRhZ2UsXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofmhpbnRzOiBsaXN0KHN0cmluZyksIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSk6IHQgPT4ge1xuICAgICAgbGV0IGhpbnRlZF9yZXN1bHRzID1cbiAgICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgICBsZXQgc3RhdHVzZXMgPSB0ZXN0X3Jlc3VsdHMuc3RhdHVzZXM7XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBzdGF0dXNlcyxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIk5vIGhpbnQgYXZhaWxhYmxlLlwiLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIkV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3I6IEhpbnQgd2l0aG91dCBhIHRlc3QuXCIsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAge2hpbnRzLCB0ZXN0X3Jlc3VsdHMsIGhpbnRlZF9yZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsID0gKHJlcG9ydDogdCkgPT4gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKTtcbiAgICBsZXQgbnVtX3Bhc3NlZCA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICAgIHJlcG9ydC5oaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0LCBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlXG4gICAgICAqLiAoZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQocmVwb3J0KSkgLy4gZmxvYXRfb2ZfaW50KHRvdGFsKHJlcG9ydCkpKTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OiBUZXN0VmFsaWRhdGlvblJlcG9ydC50LFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6IE11dGF0aW9uVGVzdGluZ1JlcG9ydC50LFxuICAgICAgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OiBJbXBsR3JhZGluZ1JlcG9ydC50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIH5zdGl0Y2hlZF9keW5hbWljczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKSA9PiB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IGVkcy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OlxuICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5tayhcbiAgICAgICAgICBlZHMsXG4gICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbi5yZXN1bHQpLFxuICAgICAgICApLFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6XG4gICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uPXN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU9ZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgIH5oaWRkZW5fYnVncz1zdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIHN5bnRheF9yZXBvcnQ6XG4gICAgICAgIFN5bnRheFJlcG9ydC5tayh+eW91cl9pbXBsPWVkcy55b3VyX2ltcGwsIH50ZXN0cz1lZHMuc3ludGF4X3Rlc3RzKSxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6XG4gICAgICAgIEltcGxHcmFkaW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH5oaW50cz1lZHMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH50ZXN0X3Jlc3VsdHM9XG4gICAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX3Rlc3RzLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgfTtcblxuICAgIGxldCBvdmVyYWxsX3Njb3JlID1cbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQsXG4gICAgICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgICAgIHN5bnRheF9yZXBvcnQsXG4gICAgICAgICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0LFxuICAgICAgICAgICAgXyxcbiAgICAgICAgICB9OiB0LFxuICAgICAgICApXG4gICAgICAgIDogc2NvcmUgPT4ge1xuICAgICAgbGV0ICh0dl9wb2ludHMsIHR2X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0LnBlcmNlbnRhZ2UodGVzdF92YWxpZGF0aW9uX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgKTtcbiAgICAgIGxldCAobXRfcG9pbnRzLCBtdF9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQucGVyY2VudGFnZShtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgKGlnX3BvaW50cywgaWdfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQucGVyY2VudGFnZShpbXBsX2dyYWRpbmdfcmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24uaW1wbF9ncmFkaW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IHRvdGFsX3BvaW50cyA9IHR2X3BvaW50cyArLiBtdF9wb2ludHMgKy4gaWdfcG9pbnRzO1xuICAgICAgbGV0IG1heF9wb2ludHMgPSB0dl9tYXggKy4gbXRfbWF4ICsuIGlnX21heDtcbiAgICAgICh0b3RhbF9wb2ludHMsIG1heF9wb2ludHMpO1xuICAgIH07XG4gIH07XG59O1xuIiwibW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSB1bml0O1xuICBsZXQgZGVmYXVsdCA9ICgpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IEV4ZXJjaXNlLm91dHB1dF9oZWFkZXJfZ3JhZGluZztcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG5tb2R1bGUgR3JhZGluZyA9IEdyYWRpbmcuRihFeGVyY2lzZUVudik7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy8yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBkZWJ1ZyA9XG4gIGxldCBfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBhbmQgX09NRF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJPTURfREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBfREVCVUcsIF9PTURfREVCVUcgd2l0aFxuICB8IF8sIFNvbWUgXCJmYWxzZVwiIC0+XG4gICAgIGZhbHNlXG4gIHwgU29tZSBfLCBOb25lIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgREVCVUcgaXMgc2V0LCBcXFxuICAgICAgICAgICAgICB5b3UgY2FuIGRlYWN0aXZhdGUgdGhlIG1vZGUgYnkgdW5zZXR0aW5nIERFQlVHIFxcXG4gICAgICAgICAgICAgIG9yIGJ5IHNldHRpbmcgT01EX0RFQlVHIHRvIHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICBmYWxzZVxuICB8IF8sIFNvbWUgXyAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIE9NRF9ERUJVRyBpcyBzZXRcbiAgICAgICAgICAgICAgdG8gYSB2YWx1ZSB0aGF0IGlzbid0IHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IHdhcm4gPyh3ZT1mYWxzZSkgbXNnID1cbiAgaWYgd2UgdGhlblxuICAgIHJhaXNlIChFcnJvciBtc2cpXG4gIGVsc2VcbiAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogJXNcXG4lIVwiIG1zZ1xuXG5cbmxldCB0cmFja2ZpeCA9XG4gIHRyeVxuICAgIGlnbm9yZShTeXMuZ2V0ZW52IFwiT01EX0ZJWFwiKTtcbiAgICBlcHJpbnRmIFwib21kOiB0cmFja2luZyBtb2RlIGFjdGl2YXRlZDogdG9rZW4gbGlzdCBhcmUgdmVyeSBvZnRlbiBjaGVja2VkLCBcXFxuICAgICAgICAgICAgIGl0IG1pZ2h0IHRha2UgYSAqdmVyeSogbG9uZyB0aW1lIGlmIHlvdXIgaW5wdXQgaXMgbGFyZ2UuXFxuJSFcIjtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgZmFsc2VcblxubGV0IF8gPSBpZiBkZWJ1ZyB0aGVuIFByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2UgdHJ1ZVxuXG5sZXQgcmFpc2UgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgKGZ1biBlIC0+XG4gICAgICAgZXByaW50ZiBcIihPTUQpIEV4Y2VwdGlvbiByYWlzZWQ6ICVzXFxuJSFcIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpO1xuICAgICAgIHJhaXNlIGUpXG4gIGVsc2VcbiAgICByYWlzZVxuXG5tb2R1bGUgU3RyaW5nU2V0IDogc2lnXG4gIGluY2x1ZGUgU2V0LlMgd2l0aCB0eXBlIGVsdCA9IHN0cmluZ1xuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFNldC5NYWtlKFN0cmluZylcbiAgbGV0IG9mX2xpc3QgbCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gciBlIC0+IGFkZCBlIHIpIGVtcHR5IGxcbmVuZFxuXG5cbnR5cGUgJ2Egc3BsaXQgPSAnYSBsaXN0IC0+ICdhIHNwbGl0X2FjdGlvblxuYW5kICdhIHNwbGl0X2FjdGlvbiA9XG4gIHwgQ29udGludWVcbiAgfCBDb250aW51ZV93aXRoIG9mICdhIGxpc3QgKiAnYSBsaXN0XG4gIHwgU3BsaXQgb2YgJ2EgbGlzdCAqICdhIGxpc3RcblxuXG5sZXQgZnNwbGl0X3JldiA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfihmOidhIHNwbGl0KSBsXG4gICAgOiAoJ2EgbGlzdCAqICdhIGxpc3QpIG9wdGlvbiA9XG4gIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZiBbXSB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBleGNsIGwgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBtYXRjaCBmIGwgd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgaW4gbG9vcCBbXSBsXG5cbmxldCBmc3BsaXQgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH5mIGwgPVxuICBtYXRjaCBmc3BsaXRfcmV2IH5leGNsOmV4Y2wgfmY6ZiBsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShyZXYsIGwpIC0+IFNvbWUoTGlzdC5yZXYgcmV2LCBsKVxuXG5sZXQgaWRfb2Zfc3RyaW5nIGlkcyBzID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG91dCA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICAoKiBQdXQgW3NdIGludG8gW2JdLCByZXBsYWNpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggZGFzaGVzLiAqKVxuICBsZXQgcmVjIGxvb3Agc3RhcnRlZCBpID1cbiAgICBpZiBpID0gbiB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0IGMgO1xuICAgICAgICBsb29wIHRydWUgKGkgKyAxKVxuICAgICAgKCogRG9uJ3Qgd2FudCB0byBzdGFydCB3aXRoIGRhc2hlcy4gKilcbiAgICAgIHwgXyB3aGVuIG5vdCBzdGFydGVkIC0+XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgJy0nIDtcbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gIGluXG4gIGxvb3AgZmFsc2UgMCA7XG4gIGxldCBzJyA9IEJ1ZmZlci5jb250ZW50cyBvdXQgaW5cbiAgaWYgcycgPSBcIlwiIHRoZW4gXCJcIlxuICBlbHNlXG4gICAgKCogRmluZCBvdXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBbcyddIHRoYXQgaXNuJ3QgYSBkYXNoLiAqKVxuICAgIGxldCBsYXN0X3RyYWlsaW5nID0gXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPCAwIHx8IHMnLltpXSA8PiAnLScgdGhlbiBpXG4gICAgICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgICBpblxuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzJyAtIDEpXG4gICAgaW5cbiAgICAoKiBUcmltIHRyYWlsaW5nIGRhc2hlcy4gKilcbiAgICBpZHMjbWFuZ2xlIEBAIFN0cmluZy5zdWIgcycgMCAobGFzdF90cmFpbGluZyArIDEpXG5cbigqIG9ubHkgY29udmVydCB3aGVuIFwibmVjZXNzYXJ5XCIgKilcbmxldCBodG1sZW50aXRpZXMgPyhtZD1mYWxzZSkgcyA9XG4gIGxldCBtb2R1bGUgQnJlYWsgPSBzdHJ1Y3QgZXhjZXB0aW9uIEJyZWFrIGVuZCBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgKClcbiAgICBlbHNlXG4gICAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICggJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onICkgYXMgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgICAgICAgfCAnXFwnJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiMzOTtcIlxuICAgICAgICB8ICcmJyAtPlxuICAgICAgICAgICAgaWYgbWQgdGhlblxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggcy5baSsxXSB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImXCJcbiAgICAgICAgICAgICAgICB3aXRoIF8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgICAgICAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICAgICAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgaW4gbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDA7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IG1pbmltYWxpemVfYmxhbmtzIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgbCBpblxuICBsZXQgcmVjIGxvb3AgZiBpID1cbiAgICBpZiBpID0gbCB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyAtPlxuICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIGYgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICBpbiBsb29wIGZhbHNlIDBcblxubGV0IHJlYyBlYXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBlOjp0bCBhcyBsIC0+IGlmIGYgZSB0aGVuIGVhdCBmIHRsIGVsc2UgbFxuXG5cbmxldCByZWMgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZW1vdmVfcHJlZml4X3NwYWNlcyBzID0gXG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuWzBdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcgJyAtPiBsb29wIChpKzEpXG4gICAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgaW4gbG9vcCAxXG4gIGluXG4gIGxldCByZW1vdmVfc3VmZml4X3NwYWNlcyBzID1cbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bU3RyaW5nLmxlbmd0aCBzIC0gMV0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgLT4gbG9vcCAoaS0xKVxuICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzIHJlcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgIHJlc1xuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeVxuICAgICAgICAgIFNvbWUgKHRha2VfYXR0cmlidXRlIHMgaSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBTb21lICgoKF8sXykgYXMgYSksIG5ld19zKSAtPlxuICAgICAgICBsb29wIG5ld19zIChhOjpyZXMpIDBcbiAgICAgIHwgTm9uZSAtPiByZXNcbiAgYW5kIHRha2VfYXR0cmlidXRlIHMgaSA9XG4gICAgICBsZXQgbmFtZSwgYWZ0ZXJfZXEgPSBjdXRfb25fY2hhcl9mcm9tIHMgaSAnPScgaW5cbiAgICAgIGxldCBuYW1lID0gcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgbmFtZSBpblxuICAgICAgbGV0IGFmdGVyX2VxID0gcmVtb3ZlX3ByZWZpeF9zcGFjZXMgYWZ0ZXJfZXEgaW5cbiAgICAgIGxldCB2YWx1ZSwgcmVzdCA9IGN1dF9vbl9jaGFyX2Zyb20gYWZ0ZXJfZXEgMSBhZnRlcl9lcS5bMF0gaW5cbiAgICAgIChuYW1lLHZhbHVlKSwgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcmVzdFxuICBpblxuICBpZiAoKiBIYXMgaXQgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZT8gKilcbiAgICB0cnkgU3RyaW5nLmluZGV4IGh0bWwgJz4nIDwgU3RyaW5nLmluZGV4IGh0bWwgJyAnXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuICB0aGVuXG4gICAgW11cbiAgZWxzZVxuICBtYXRjaCBodG1sLlsxXSB3aXRoXG4gIHwgJzwnIHwgJyAnIC0+XG4gICAgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXNcbiAgICAgIChyZW1vdmVfcHJlZml4X3NwYWNlcyAoU3RyaW5nLnN1YiBodG1sIDEgKFN0cmluZy5sZW5ndGggaHRtbCAtIDEpKSlcbiAgfCBfIC0+XG4gICAgdHJ5XG4gICAgICBsZXQgaHRtbCA9IHNuZCAoY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJyAnKSBpblxuICAgICAgbG9vcCAoU3RyaW5nLnN1YiBodG1sIDAgKFN0cmluZy5pbmRleCBodG1sICc+JykpIFtdIDBcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuXG5sZXQgcmVjIGV4dHJhY3RfaW5uZXJfaHRtbCAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlYyByY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJpbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyAwIGosIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCBfLCBwID0gY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJz4nIGluXG4gIGxldCByLCBfID0gcmN1dF9vbl9jaGFyX2Zyb20gcCAoU3RyaW5nLmxlbmd0aCBwIC0gMSkgJzwnIGluXG4gIHJcblxuXG5sZXQgaHRtbF92b2lkX2VsZW1lbnRzID0gU3RyaW5nU2V0Lm9mX2xpc3QgW1xuICBcImltZ1wiO1xuICBcImlucHV0XCI7XG4gIFwibGlua1wiO1xuICBcIm1ldGFcIjtcbiAgXCJiclwiO1xuICBcImhyXCI7XG4gIFwic291cmNlXCI7XG4gIFwid2JyXCI7XG4gIFwicGFyYW1cIjtcbiAgXCJlbWJlZFwiO1xuICBcImJhc2VcIjtcbiAgXCJhcmVhXCI7XG4gIFwiY29sXCI7XG4gIFwidHJhY2tcIjtcbiAgXCJrZXlnZW5cIjtcbl1cblxubGV0ICggQCApIGwxIGwyID1cbiAgTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBsMSkgbDJcbiIsIm9wZW4gT21kX3V0aWxzXG5vcGVuIFByaW50ZlxuXG4oKiogcmVmZXJlbmNlcywgaW5zdGFuY2VzIGNyZWF0ZWQgaW4gW09tZF9wYXJzZXIubWFpbl9wYXJzZV0gYW5kXG4gICAgYWNjZXNzZWQgaW4gdGhlIFtPbWRfYmFja2VuZF0gbW9kdWxlLiAqKVxubW9kdWxlIFIgPSBNYXAuTWFrZShTdHJpbmcpXG5jbGFzcyByZWZfY29udGFpbmVyIDogb2JqZWN0XG4gICAgdmFsIG11dGFibGUgYyA6IChzdHJpbmcgKiBzdHJpbmcpIFIudFxuICAgIG1ldGhvZCBhZGRfcmVmIDogUi5rZXkgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIGdldF9yZWYgOiBSLmtleSAtPiAoc3RyaW5nICogc3RyaW5nKSBvcHRpb25cbiAgICBtZXRob2QgZ2V0X2FsbCA6IChzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdFxuICBlbmQgPSBvYmplY3RcbiAgdmFsIG11dGFibGUgYyA9IFIuZW1wdHlcbiAgdmFsIG11dGFibGUgYzIgPSBSLmVtcHR5XG5cbiAgbWV0aG9kIGdldF9hbGwgPSBSLmJpbmRpbmdzIGNcblxuICBtZXRob2QgYWRkX3JlZiBuYW1lIHRpdGxlIHVybCA9XG4gICAgYyA8LSBSLmFkZCBuYW1lICh1cmwsIHRpdGxlKSBjO1xuICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgIGlmIGxuIDw+IG5hbWUgdGhlbiBjMiA8LSBSLmFkZCBsbiAodXJsLCB0aXRsZSkgYzJcblxuICBtZXRob2QgZ2V0X3JlZiBuYW1lID1cbiAgICB0cnlcbiAgICAgIGxldCAodXJsLCB0aXRsZSkgYXMgciA9XG4gICAgICAgIHRyeSBSLmZpbmQgbmFtZSBjXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgICAgICAgdHJ5IFIuZmluZCBsbiBjXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFIuZmluZCBsbiBjMlxuICAgICAgaW4gU29tZSByXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIE5vbmVcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB8IEgxIG9mIHRcbiAgfCBIMiBvZiB0XG4gIHwgSDMgb2YgdFxuICB8IEg0IG9mIHRcbiAgfCBINSBvZiB0XG4gIHwgSDYgb2YgdFxuICB8IFBhcmFncmFwaCBvZiB0XG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbXBoIG9mIHRcbiAgfCBCb2xkIG9mIHRcbiAgfCBVbCBvZiB0IGxpc3RcbiAgfCBPbCBvZiB0IGxpc3RcbiAgfCBVbHAgb2YgdCBsaXN0XG4gIHwgT2xwIG9mIHQgbGlzdFxuICB8IENvZGUgb2YgbmFtZSAqIHN0cmluZ1xuICB8IENvZGVfYmxvY2sgb2YgbmFtZSAqIHN0cmluZ1xuICB8IEJyXG4gIHwgSHJcbiAgfCBOTFxuICB8IFVybCBvZiBocmVmICogdCAqIHRpdGxlXG4gIHwgUmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogc3RyaW5nICogZmFsbGJhY2tcbiAgfCBJbWdfcmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogYWx0ICogZmFsbGJhY2tcbiAgfCBIdG1sIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2Jsb2NrIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2NvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgUmF3IG9mIHN0cmluZ1xuICB8IFJhd19ibG9jayBvZiBzdHJpbmdcbiAgfCBCbG9ja3F1b3RlIG9mIHRcbiAgfCBJbWcgb2YgYWx0ICogc3JjICogdGl0bGVcbiAgfCBYIG9mXG4gICAgICA8IG5hbWUgOiBzdHJpbmc7XG4gICAgICAgIHRvX2h0bWwgOiA/aW5kZW50OmludCAtPiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fc2V4cHIgOiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fdCA6IHQgLT4gdCBvcHRpb24gPlxuYW5kIGZhbGxiYWNrID0gPCB0b19zdHJpbmcgOiBzdHJpbmcgOyB0b190IDogdCA+XG5hbmQgbmFtZSA9IHN0cmluZ1xuYW5kIGFsdCA9IHN0cmluZ1xuYW5kIHNyYyA9IHN0cmluZ1xuYW5kIGhyZWYgPSBzdHJpbmdcbmFuZCB0aXRsZSA9IHN0cmluZ1xuYW5kIHQgPSBlbGVtZW50IGxpc3RcblxuXG5sZXQgcmVjIGxvb3NlX2NvbXBhcmUgdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gIHwgSDEgZTE6OnRsMSwgSDEgZTI6OnRsMlxuICB8IEgyIGUxOjp0bDEsIEgyIGUyOjp0bDJcbiAgfCBIMyBlMTo6dGwxLCBIMyBlMjo6dGwyXG4gIHwgSDQgZTE6OnRsMSwgSDQgZTI6OnRsMlxuICB8IEg1IGUxOjp0bDEsIEg1IGUyOjp0bDJcbiAgfCBINiBlMTo6dGwxLCBINiBlMjo6dGwyXG4gIHwgRW1waCBlMTo6dGwxLCBFbXBoIGUyOjp0bDJcbiAgfCBCb2xkIGUxOjp0bDEsIEJvbGQgZTI6OnRsMlxuICB8IEJsb2NrcXVvdGUgZTE6OnRsMSwgQmxvY2txdW90ZSBlMjo6dGwyXG4gIHwgUGFyYWdyYXBoIGUxOjp0bDEsIFBhcmFncmFwaCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBVbCBlMTo6dGwxLCBVbCBlMjo6dGwyXG4gIHwgT2wgZTE6OnRsMSwgT2wgZTI6OnRsMlxuICB8IFVscCBlMTo6dGwxLCBVbHAgZTI6OnRsMlxuICB8IE9scCBlMTo6dGwxLCBPbHAgZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlX2xpc3RzIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgKENvZGUgXyBhcyBlMSk6OnRsMSwgKENvZGUgXyBhcyBlMik6OnRsMlxuICB8IChCciBhcyBlMSk6OnRsMSwgKEJyIGFzIGUyKTo6dGwyXG4gIHwgKEhyIGFzIGUxKTo6dGwxLCAoSHIgYXMgZTIpOjp0bDJcbiAgfCAoTkwgYXMgZTEpOjp0bDEsIChOTCBhcyBlMik6OnRsMlxuICB8IChIdG1sIF8gYXMgZTEpOjp0bDEsIChIdG1sIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9ibG9jayBfIGFzIGUxKTo6dGwxLCAoSHRtbF9ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhdyBfIGFzIGUxKTo6dGwxLCAoUmF3IF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3X2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChSYXdfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2NvbW1lbnQgXyBhcyBlMSk6OnRsMSwgKEh0bWxfY29tbWVudCBfIGFzIGUyKTo6dGwyXG4gIHwgKEltZyBfIGFzIGUxKTo6dGwxLCAoSW1nIF8gYXMgZTIpOjp0bDJcbiAgfCAoVGV4dCBfIGFzIGUxKTo6dGwxLCAoVGV4dCBfIGFzIGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBDb2RlX2Jsb2NrKGwxLGMxKTo6dGwxLCBDb2RlX2Jsb2NrKGwyLGMyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgbDEgbDIsIFN0cmluZy5sZW5ndGggYzEgLSBTdHJpbmcubGVuZ3RoIGMyIHdpdGhcbiAgICAgICAgIHwgMCwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIGMyIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAxIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgKGMyXlwiXFxuXCIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIC0xIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgKGMxXlwiXFxuXCIpIGMyIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGksIF8gLT4gaVxuICAgICAgKVxuXG4gIHwgVXJsIChocmVmMSwgdDEsIHRpdGxlMSk6OnRsMSwgVXJsIChocmVmMiwgdDIsIHRpdGxlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGhyZWYxIGhyZWYyIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggbG9vc2VfY29tcGFyZSB0MSB0MiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIHRpdGxlMSB0aXRsZTIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBSZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgUmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgfCBJbWdfcmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIEltZ19yZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICAgICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKG5hbWUxLCB4MSkgKG5hbWUyLCB4Mikgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgbGV0IGNmZiA9XG4gICAgICAgICAgICAgICBpZiBmYWxsYmFjazEjdG9fc3RyaW5nID0gZmFsbGJhY2syI3RvX3N0cmluZyB0aGVuXG4gICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9vc2VfY29tcGFyZSAoZmFsbGJhY2sxI3RvX3QpIChmYWxsYmFjazIjdG9fdClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgY2ZmID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgY29tcGFyZSAocmVmX2NvbnRhaW5lcjEjZ2V0X2FsbCkgKHJlZl9jb250YWluZXIyI2dldF9hbGwpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgY2ZmXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFggZTE6OnRsMSwgWCBlMjo6dGwyIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAoZTEjbmFtZSkgKGUyI25hbWUpIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSAoZTEjdG9fdCkgKGUyI3RvX3QpIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcbiAgfCBYIF86Ol8sIF8gLT4gMVxuICB8IF8sIFggXzo6XyAtPiAtMVxuICB8IF8gLT4gY29tcGFyZSB0MSB0MlxuXG5hbmQgbG9vc2VfY29tcGFyZV9saXN0cyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPlxuICAgICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlX2xpc3RzIHRsMSB0bDJcbiAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCBfIC0+IC0xXG5cblxudHlwZSB0b2sgPSAoKiBDcyhuKSBtZWFucyAobisyKSB0aW1lcyBDICopXG58IEFtcGVyc2FuZFxufCBBbXBlcnNhbmRzIG9mIGludFxufCBBdFxufCBBdHMgb2YgaW50XG58IEJhY2txdW90ZVxufCBCYWNrcXVvdGVzIG9mIGludFxufCBCYWNrc2xhc2hcbnwgQmFja3NsYXNocyBvZiBpbnRcbnwgQmFyXG58IEJhcnMgb2YgaW50XG58IENhcmV0XG58IENhcmV0cyBvZiBpbnRcbnwgQ2JyYWNlXG58IENicmFjZXMgb2YgaW50XG58IENvbG9uXG58IENvbG9ucyBvZiBpbnRcbnwgQ29tbWFcbnwgQ29tbWFzIG9mIGludFxufCBDcGFyZW50aGVzaXNcbnwgQ3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgQ2JyYWNrZXRcbnwgQ2JyYWNrZXRzIG9mIGludFxufCBEb2xsYXJcbnwgRG9sbGFycyBvZiBpbnRcbnwgRG90XG58IERvdHMgb2YgaW50XG58IERvdWJsZXF1b3RlXG58IERvdWJsZXF1b3RlcyBvZiBpbnRcbnwgRXhjbGFtYXRpb25cbnwgRXhjbGFtYXRpb25zIG9mIGludFxufCBFcXVhbFxufCBFcXVhbHMgb2YgaW50XG58IEdyZWF0ZXJ0aGFuXG58IEdyZWF0ZXJ0aGFucyBvZiBpbnRcbnwgSGFzaFxufCBIYXNocyBvZiBpbnRcbnwgTGVzc3RoYW5cbnwgTGVzc3RoYW5zIG9mIGludFxufCBNaW51c1xufCBNaW51c3Mgb2YgaW50XG58IE5ld2xpbmVcbnwgTmV3bGluZXMgb2YgaW50XG58IE51bWJlciBvZiBzdHJpbmdcbnwgT2JyYWNlXG58IE9icmFjZXMgb2YgaW50XG58IE9wYXJlbnRoZXNpc1xufCBPcGFyZW50aGVzaXNzIG9mIGludFxufCBPYnJhY2tldFxufCBPYnJhY2tldHMgb2YgaW50XG58IFBlcmNlbnRcbnwgUGVyY2VudHMgb2YgaW50XG58IFBsdXNcbnwgUGx1c3Mgb2YgaW50XG58IFF1ZXN0aW9uXG58IFF1ZXN0aW9ucyBvZiBpbnRcbnwgUXVvdGVcbnwgUXVvdGVzIG9mIGludFxufCBTZW1pY29sb25cbnwgU2VtaWNvbG9ucyBvZiBpbnRcbnwgU2xhc2hcbnwgU2xhc2hzIG9mIGludFxufCBTcGFjZVxufCBTcGFjZXMgb2YgaW50XG58IFN0YXJcbnwgU3RhcnMgb2YgaW50XG58IFRhYlxufCBUYWJzIG9mIGludFxufCBUaWxkZVxufCBUaWxkZXMgb2YgaW50XG58IFVuZGVyc2NvcmVcbnwgVW5kZXJzY29yZXMgb2YgaW50XG58IFdvcmQgb2Ygc3RyaW5nXG58IFRhZyBvZiBuYW1lICogZXh0ZW5zaW9uXG5cbmFuZCBleHRlbnNpb24gPSA8XG4gIHBhcnNlcl9leHRlbnNpb24gOlxuICAgIHQgLT4gdG9rIGxpc3QgLT4gdG9rIGxpc3QgLT4gKCh0ICogdG9rIGxpc3QgKiB0b2sgbGlzdCkgb3B0aW9uKTtcbiAgdG9fc3RyaW5nIDogc3RyaW5nXG4+XG5cbnR5cGUgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbiBsaXN0XG5cbmxldCBlbXB0eV9leHRlbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBOb25lXG4gIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG5lbmRcblxubGV0IHJlYyBub3JtYWxpc2VfbWQgbCA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICBlcHJpbnRmIFwiKE9NRCkgbm9ybWFsaXNlX21kXFxuJSFcIjtcbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MXVxuICAgIHwgW05MXSAtPiBbXVxuICAgIHwgW10gLT4gW11cbiAgICB8IE5MOjpOTDo6Tkw6OnRsIC0+IGxvb3AgKE5MOjpOTDo6dGwpXG4gICAgfCBUZXh0IHQxOjpUZXh0IHQyOjp0bCAtPiBsb29wIChUZXh0KHQxXnQyKTo6dGwpXG4gICAgfCBOTDo6KCgoUGFyYWdyYXBoIF98SDEgX3xIMiBffEgzIF98SDQgX3xINSBffEg2IF9cbiAgICAgICAgICAgIHxDb2RlX2Jsb2NrIF98T2wgX3xVbCBffE9scCBffFVscCBfKTo6XykgYXMgdGwpIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtUZXh0IFwiIFwiXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaChwKTo6dGwgLT4gUGFyYWdyYXBoKGxvb3AgcCk6Omxvb3AgdGxcbiAgICB8IEgxIHY6OnRsIC0+IEgxKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgyIHY6OnRsIC0+IEgyKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgzIHY6OnRsIC0+IEgzKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg0IHY6OnRsIC0+IEg0KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg1IHY6OnRsIC0+IEg1KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg2IHY6OnRsIC0+IEg2KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEVtcGggdjo6dGwgLT4gRW1waChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCb2xkIHY6OnRsIC0+IEJvbGQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWwgdjo6dGwgLT4gVWwoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2wgdjo6dGwgLT4gT2woTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWxwIHY6OnRsIC0+IFVscChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbHAgdjo6dGwgLT4gT2xwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgdjo6dGwgLT4gQmxvY2txdW90ZShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVcmwoaHJlZix2LHRpdGxlKTo6dGwgLT4gVXJsKGhyZWYsKGxvb3AgdiksdGl0bGUpOjpsb29wIHRsXG4gICAgfCBUZXh0IF9cbiAgICB8IENvZGUgX1xuICAgIHwgQ29kZV9ibG9jayBfXG4gICAgfCBCclxuICAgIHwgSHJcbiAgICB8IE5MXG4gICAgfCBSZWYgX1xuICAgIHwgSW1nX3JlZiBfXG4gICAgfCBIdG1sIF9cbiAgICB8IEh0bWxfYmxvY2sgX1xuICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICB8IFJhdyBfXG4gICAgfCBSYXdfYmxvY2sgX1xuICAgIHwgSW1nIF9cbiAgICB8IFggXyBhcyB2Ojp0bCAtPiB2Ojpsb29wIHRsXG4gIGluXG4gIGxldCBhID0gbG9vcCBsIGluXG4gIGxldCBiID0gbG9vcCBhIGluXG4gIGlmIGEgPSBiIHRoZW5cbiAgICBhXG4gIGVsc2VcbiAgICBub3JtYWxpc2VfbWQgYlxuXG5cblxubGV0IGR1bW15X1ggPVxuICBYIChvYmplY3RcbiAgICBtZXRob2QgbmFtZSA9IFwiZHVtbXlcIlxuICAgIG1ldGhvZCB0b19odG1sID8oaW5kZW50PTApIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fc2V4cHIgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b190IF8gPSBOb25lXG4gIGVuZClcblxuXG5sZXQgcmVjIHZpc2l0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgUGFyYWdyYXBoIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFBhcmFncmFwaCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDEgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgxKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDIodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgzIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgzKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg1IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDYgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg2KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBFbXBoIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBFbXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCb2xkIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCb2xkKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWxwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9scCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQmxvY2txdW90ZSB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCbG9ja3F1b3RlKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVcmwoaHJlZix2LHRpdGxlKSBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVXJsKGhyZWYsdmlzaXQgZiB2LHRpdGxlKTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFRleHQgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGUgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGVfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nX3JlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9jb21tZW50IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXcgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhd19ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgWCAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEhyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE5MIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBOTDo6dmlzaXQgZiB0bFxuICAgIGVuZFxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb2RlX3N0eWxpc3QgPSBsYW5nOnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcblxubGV0IGRlZmF1bHRfbGFuZ3VhZ2UgPSByZWYgXCJcIlxuXG5cblxubGV0IHRleHRfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIF8gOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVsIGwgfCBPbCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBpdGVtIC0+IGxvb3AgaXRlbTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbicpIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbHAgbCB8IE9scCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgbG9vcCBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBsb29wIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsXG4gICAgfCBIMiBtZCA6OiB0bFxuICAgIHwgSDMgbWQgOjogdGxcbiAgICB8IEg0IG1kIDo6IHRsXG4gICAgfCBINSBtZCA6OiB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGRlZmF1bHRfY29kZV9zdHlsaXN0IH5sYW5nIGNvZGUgPSBjb2RlXG5cbmxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICBsb29wIHRydWUgciB0bFxuICAgIHwgZTo6dGwgLT5cbiAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgaW5cbiAgbG9vcCBmYWxzZSBbXSBsXG5cbmxldCByZW1vdmVfbGlua3MgOiB0IC0+IHQgPVxuICBPbWRfcmVwcmVzZW50YXRpb24udmlzaXRcbiAgICAoZnVuIGUgLT5cbiAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IFVybChfLCB0LCBfKSAtPiBTb21lIHRcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuXG5sZXQgcmVjIGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWRcbiAgICA/KHJlbW92ZV9oZWFkZXJfbGlua3M9ZmFsc2UpXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3M6KGNvZGVfc3R5bGU9ZGVmYXVsdF9jb2RlX3N0eWxpc3QpXG4gICAgbWRcbiAgPVxuICBsZXQgaWRzID0gb2JqZWN0KHRoaXMpXG4gICAgdmFsIG11dGFibGUgaWRzID0gU3RyaW5nU2V0LmFkZCBcIlwiIFN0cmluZ1NldC5lbXB0eVxuICAgIG1ldGhvZCBtYW5nbGUgaWQgPVxuICAgICAgbGV0IHJlYyBtIGkgPVxuICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkIGlkcyB0aGVuXG4gICAgICAgICAgbGV0IGlkeCA9IGlmIGkgPiAwIHRoZW4gaWReXCJfXCJec3RyaW5nX29mX2ludCBpIGVsc2UgaWQgaW5cbiAgICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkeCBpZHMgdGhlblxuICAgICAgICAgICAgbSAoaSsxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZHggaWRzO1xuICAgICAgICAgICAgIGlkeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZCBpZHM7XG4gICAgICAgICAgIGlkKVxuICAgICAgaW4gbSAwXG4gIGVuZCBpblxuICBsZXQgZW1wdHkgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFxuJyAtPiBsb29wIChpKzEpXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIDBcbiAgaW5cbiAgbGV0IHJlbW92ZV90cmFpbGluZ19ibGFua3MgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IDAgdGhlbiBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICd8J1xcdCd8J1xcbicgLT5cbiAgICAgICAgICBsb29wIChwcmVkIGkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIHRoZW5cbiAgICAgICAgICAgIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgaGVhZGVycyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIGxvb3AgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFggeCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6aW5kZW50XG4gICAgICAgICAgICAgICAoaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlKSBtZFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJsb2NrcXVvdGUgcSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHE7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShocmVmLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoVXJsKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmLFxuICAgICAgICAgICAgICAgICAgICAgW1RleHQodGV4dCldLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKVxuICAgICAgICAgICAgICAgICA6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoc3JjLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoSW1nKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBpbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgIGlmIGVtcHR5IHMgdGhlblxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwPlwiO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzKTtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3A+XFxuXCI7XG4gICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxpbWcgc3JjPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBhbHQ9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCIpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFRleHQgdCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogQnVmZmVyLmFkZF9zdHJpbmcgYiB0OyAqKVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBFbXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGVtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2VtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJvbGQgbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8c3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3N0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoVWwgbHxPbCBsfFVscCBsfE9scCBsIGFzIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjxvbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8dWw+XCIpO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGxpPlwiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGluZGVudCsyKSBsaTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9saT5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgbDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPC9vbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8L3VsPlwiKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwcmU+PGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiXG4gICAgICAgICAgICAgICFkZWZhdWx0X2xhbmd1YWdlICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZyBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+PC9wcmU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZShsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoci8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXdfYmxvY2sgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSBhcyBlIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IEh0bWxfY29tbWVudCBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBzIGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxhIGhyZWY9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDEgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDEgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDEgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDIgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDIgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDIgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDMgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDMgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDMgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDQgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDQgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDQgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oND5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDUgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDUgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDUgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDYgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDYgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDYgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBOTCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbmwyYnIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICBpblxuICBsb29wIDAgbWQ7XG4gIEJ1ZmZlci5jb250ZW50cyBiLCBMaXN0LnJldiAhaGVhZGVyc1xuXG5hbmQgc3RyaW5nX29mX2F0dHJzIGF0dHJzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICBlbHNlIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAoKiBpZiBodG1sNCB0aGVuICopXG4gICAgICAgICgqICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSBhICopXG4gICAgICAgICgqIGVsc2UgKilcbiAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmFuZCBodG1sX29mX21kXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3NcbiAgICBtZFxuICA9XG4gIGZzdCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyID9jcyBtZClcbmFuZCBoZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kID1cbiAgc25kIChodG1sX2FuZF9oZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kKVxuXG5cbmxldCByZWMgc2V4cHJfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT5cbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICBsb29wIHQ7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHgjdG9fc2V4cHIgc2V4cHJfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCbG9ja3F1b3RlXCI7XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmVmICVTICVTKVwiIG5hbWUgdGV4dDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nX3JlZiAlUyAlUylcIiBuYW1lIGFsdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoUGFyYWdyYXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWcgJVMgJVMgJVMpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihUZXh0ICVTXCIgdDtcbiAgICAgICAgbGV0IHJlYyBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICAgICAgYnByaW50ZiBiIFwiICVTXCIgdDtcbiAgICAgICAgICAgIGYgdGxcbiAgICAgICAgICB8IHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgdGwgPSBmIHRsIGluXG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEVtcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJvbGRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9scFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGUgJVMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZV9ibG9jayAlcylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEhyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXdfYmxvY2sgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWwgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2Jsb2NrICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9jb21tZW50ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVXJsICVTICVTICVTKVwiIGhyZWYgKGh0bWxfb2ZfbWQgcykgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDFcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgzXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg2XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoTkwpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKiAyKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcuJyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPiAwICYmXG4gICAgICAgICAgIG1hdGNoIHMuW2ktMV0gd2l0aFxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICdcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJy0nIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgKHMuW2krMV0gPSAnICd8fHMuW2krMV0gPSAnLScpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcrJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyEnIGFzIGMgLT5cbiAgICAgICAgaWYgaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnWycgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPCcgYXMgYyAtPlxuICAgICAgICBpZiBpIDw+IFN0cmluZy5sZW5ndGggcyAtIDEgJiZcbiAgICAgICAgICAgICAobWF0Y2ggcy5baSsxXSB3aXRoICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc+JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPSAwIHx8XG4gICAgICAgICAgICAgKG1hdGNoIHMuW2ktMV0gd2l0aCAnICcgfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIycgYXMgYyAtPlxuICAgICAgICAgaWYgaSA9IDAgfHwgcy5baS0xXSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnXFxcXCcgfCAnWycgfCAnXScgfCAnKCcgfCAnKScgfCAnYCcgfCAnKicgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgZG9uZTtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmVjIG1hcmtkb3duX29mX21kIG1kID1cbiAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpXFxuJSFcIiAoc2V4cHJfb2ZfbWQgbWQpO1xuICBsZXQgcXVvdGUgPyhpbmRlbnQ9MCkgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmVjIGxvb3AgbmwgaSA9XG4gICAgICBpZiBpIDwgbCB0aGVuXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgbmwgJiYgaSA8IGwgLSAxIHRoZW5cbiAgICAgICAgICAgIChmb3IgaSA9IDEgdG8gaW5kZW50IGRvXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICdcbiAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+IFwiKTtcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGluIGxvb3AgdHJ1ZSAwXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgYWRkX3NwYWNlcyBuID0gZm9yIGkgPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJyAnIGRvbmUgaW5cbiAgbGV0IHJlZmVyZW5jZXMgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgPyhmc3RfcF9pbl9saT10cnVlKSA/KGlzX2luX2xpc3Q9ZmFsc2UpIGxpc3RfaW5kZW50IGwgPVxuICAgICgqIFtsaXN0X2luZGVudDogaW50XSBpcyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgaW4gbnVtYmVyIG9mIHNwYWNlcy4gKilcbiAgICAoKiBbaXNfaW5fbGlzdDogYm9vbF0gaXMgbmVjZXNzYXJ5IHRvIGtub3cgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmFncmFwaFxuICAgICAgIHdoaWNoIGlzIGluc2lkZSBhIGxpc3QgaXRlbSBiZWNhdXNlIHRob3NlIG5lZWQgdG8gYmUgaW5kZW50ZWQhICopXG4gICAgbGV0IGxvb3AgPyhmc3RfcF9pbl9saT1mc3RfcF9pbl9saSkgPyhpc19pbl9saXN0PWlzX2luX2xpc3QpIGxpc3RfaW5kZW50IGwgPVxuICAgICAgICBsb29wIH5mc3RfcF9pbl9saTpmc3RfcF9pbl9saSB+aXNfaW5fbGlzdDppc19pbl9saXN0IGxpc3RfaW5kZW50IGxcbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGxpc3RfaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHF1b3RlIH5pbmRlbnQ6bGlzdF9pbmRlbnQgKG1hcmtkb3duX29mX21kIHEpKTtcbiAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgIGlmIGlzX2luX2xpc3QgdGhlblxuICAgICAgICBpZiBmc3RfcF9pbl9saSB0aGVuXG4gICAgICAgICAgYWRkX3NwYWNlcyAobGlzdF9pbmRlbnQtMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCBtZDtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCJcXG5cXG5cIjtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiFbJXNdKCVzIFxcXCIlc1xcXCIpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHQpO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgYztcbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiLSBcIjtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgaW5jciBjO1xuICAgICAgICBicHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICkgbDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBicHJpbnRmIGIgXCIrIFwiO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfXG4gICAgICB8IE5MOjooSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6XyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJ1xuICAgICAgfCBfIC0+ICgpXG4gICAgICBlbmQ7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlKF9sYW5nLCBjKSA6OiB0bCAtPiAoKiBGSVhNRSAqKVxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciAobjppbnQpIChzOmludCBsaXN0KSA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHggYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgIHwgW10gLT4geCsxXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIHggKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAobWF4IGIgeCkgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzE7MjszOzQ7NTs2Ozc7ODs5OzEwXSAwIDAgMFxuICAgICAgaW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGlmIGMuWzBdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIGM7XG4gICAgICAgICAgaWYgYy5bU3RyaW5nLmxlbmd0aCBjIC0gMV0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIG4gcyA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgICAgfCBbXSAtPiAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgbiBzID1cbiAgICAgICAgbGV0IHJlYyBsb29wIHAgaSA9XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICcgJyk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICBpbiBsb29wICdcXG4nIDBcbiAgICAgIGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gICgqIEZJWE1FICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICgqIGNhc2Ugd2hlcmUgd2UgY2FuJ3QgdXNlIGJhY2txdW90ZXMgKilcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrICg0K2xpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCJcbiAgICAgICAgICBlbmRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXMlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJylcbiAgICAgICAgICAgICAgKGlmIGxhbmcgPSBcIlwiIHRoZW4gIWRlZmF1bHRfbGFuZ3VhZ2UgZWxzZSBsYW5nKTtcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAobGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKiAqICpcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgKEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpKTo6dGwgLT5cbiAgICAgIGxldCBuZWVkc19uZXdsaW5lcyA9XG4gICAgICAgIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgfCBOTCA6OiBQYXJhZ3JhcGggcCA6OiBfXG4gICAgICAgIHwgUGFyYWdyYXBoIHAgOjogXyAtPiBwIDw+IFtdXG4gICAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICAgIHwgVWwgXyB8IE9sIF8gfCBVbHAgXyB8IE9scCBfIHwgQ29kZSAoXywgXykgfCBDb2RlX2Jsb2NrIChfLCBfKVxuICAgICAgICAgIHwgVGV4dCBfIHwgRW1waCBfIHwgQm9sZCBfIHwgQnIgfEhyIHwgVXJsIChfLCBfLCBfKVxuICAgICAgICAgIHwgUmVmIChfLCBfLCBfLCBfKSB8IEltZ19yZWYgKF8sIF8sIF8sIF8pXG4gICAgICAgICAgfCBIdG1sIChfLCBfLCBfKVxuICAgICAgICAgIHwgQmxvY2txdW90ZSBfIHwgSW1nIChfLCBfLCBfKSkgOjogXyAtPiB0cnVlXG4gICAgICAgIHwgKCBIdG1sX2Jsb2NrIChfLCBfLCBfKSB8IEh0bWxfY29tbWVudCBfXG4gICAgICAgICAgfCBSYXcgX3xSYXdfYmxvY2sgXykgOjogXy0+IGZhbHNlXG4gICAgICAgIHwgWCBfIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBOTCA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgIChcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICAgIGVsc2VcbiAgICAgICAgKFxuICAgICAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcylcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZlxuICAgICAgZWxzZVxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzIFxcXCIlc1xcXCIpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWYgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID0gMVxuICAgICAgfHwgKEJ1ZmZlci5sZW5ndGggYiA+IDEgJiZcbiAgICAgICAgICBub3QoQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA9ICdcXG4nXG4gICAgICAgICAgICAgICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMikgPSAnXFxuJykpXG4gICAgICB0aGVuXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgMCBtZDtcbiAgICBiZWdpbiBtYXRjaCAhcmVmZXJlbmNlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChuYW1lLCAodXJsLCB0aXRsZSkpIC0+XG4gICAgICAgICAgICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXG5cIiBuYW1lIHVybFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXFwiJXNcXFwiXFxuXCIgbmFtZSB1cmwgdGl0bGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHIjZ2V0X2FsbFxuICAgIGVuZDtcbiAgICBsZXQgcmVzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpID0+ICVTXFxuJSFcIlxuICAgICAgICAoc2V4cHJfb2ZfbWQgbWQpIHJlcztcbiAgICByZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW1wbGVtZW50YXRpb24gbm90ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICogLSBUaGlzIG1vZHVsZSBzaG91bGQgZGVwZW5kIG9uIE9DYW1sJ3Mgc3RhbmRhcmQgbGlicmFyeSBvbmx5IGFuZFxuICAgKiBzaG91bGQgYmUgYXMgJ3B1cmUgT0NhbWwnIChpLmUuIGRlcGVuZCBhcyBsZWFzdCBhcyBwb3NzaWJsZSBvblxuICAgKiBleHRlcm5hbCB0b29scykgYXMgcG9zc2libGUuXG5cbiAgICogLSBgd2hpbGUnIGxvb3BzIGFyZSBzb21ldGltZXMgcHJlZmVycmVkIHRvIHJlY3Vyc2lvbiBiZWNhdXNlIHRoaXNcbiAgICogbWF5IGJlIHVzZWQgb24gc3lzdGVtcyB3aGVyZSB0YWlsIHJlY3Vyc2lvbiBpcyBub3Qgd2VsbFxuICAgKiBzdXBwb3J0ZWQuIChJIHRyaWVkIHRvIHdyaXRlIFwid2hpbGVcIiBhcyBvZnRlbiBhcyBwb3NzaWJsZSwgYnV0IGl0XG4gICAqIHR1cm5lZCBvdXQgdGhhdCBpdCB3YXMgcHJldHR5IGluY29udmVuaWVudCwgc28gSSBkbyB1c2VcbiAgICogcmVjdXJzaW9uLiAgV2hlbiBJIGhhdmUgdGltZSwgSSdsbCBkbyBzb21lIHRlc3RzIGFuZCBzZWUgaWYgSVxuICAgKiBuZWVkIHRvIGNvbnZlcnQgcmVjdXJzaXZlIGxvb3BzIGludG8gaXRlcmF0aXZlIGxvb3BzLiBTb3JyeSBpZiBpdFxuICAgKiBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4pXG5cbiopXG5cbigqIGNsYXNzIHR5cGUgdGFnID0gb2JqZWN0IG1ldGhvZCBpc19tZSA6ICdhLiAnYSAtPiBib29sIGVuZCAqKVxuXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxuXG50eXBlIHRva2VuID0gT21kX3JlcHJlc2VudGF0aW9uLnRva1xudHlwZSB0ID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG5cbmxldCBzdHJpbmdfb2ZfdG9rZW4gPSBmdW5jdGlvblxuICB8IFRhZyAobmFtZSwgbykgLT5cbiAgICBpZiBPbWRfdXRpbHMuZGVidWcgdGhlbiBcIlRBRyhcIl5uYW1lXlwiKVwiIF4gbyN0b19zdHJpbmcgZWxzZSBvI3RvX3N0cmluZ1xuICB8IEFtcGVyc2FuZCAtPiBcIiZcIlxuICB8IEFtcGVyc2FuZHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcmJ1xuICB8IEF0IC0+IFwiQFwiXG4gIHwgQXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnQCdcbiAgfCBCYWNrcXVvdGUgLT4gXCJgXCJcbiAgfCBCYWNrcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnYCdcbiAgfCBCYWNrc2xhc2ggLT4gXCJcXFxcXCJcbiAgfCBCYWNrc2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxcXCdcbiAgfCBCYXIgLT4gXCJ8XCJcbiAgfCBCYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfCdcbiAgfCBDYXJldCAtPiBcIl5cIlxuICB8IENhcmV0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ14nXG4gIHwgQ2JyYWNlIC0+IFwifVwiXG4gIHwgQ2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ30nXG4gIHwgQ29sb24gLT4gXCI6XCJcbiAgfCBDb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc6J1xuICB8IENvbW1hIC0+IFwiLFwiXG4gIHwgQ29tbWFzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLCdcbiAgfCBDcGFyZW50aGVzaXMgLT4gXCIpXCJcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKSdcbiAgfCBDYnJhY2tldCAtPiBcIl1cIlxuICB8IENicmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ10nXG4gIHwgRG9sbGFyIC0+IFwiJFwiXG4gIHwgRG9sbGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyQnXG4gIHwgRG90IC0+IFwiLlwiXG4gIHwgRG90cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy4nXG4gIHwgRG91YmxlcXVvdGUgLT4gXCJcXFwiXCJcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcIidcbiAgfCBFeGNsYW1hdGlvbiAtPiBcIiFcIlxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyEnXG4gIHwgRXF1YWwgLT4gXCI9XCJcbiAgfCBFcXVhbHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc9J1xuICB8IEdyZWF0ZXJ0aGFuIC0+IFwiPlwiXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPidcbiAgfCBIYXNoIC0+IFwiI1wiXG4gIHwgSGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcjJ1xuICB8IExlc3N0aGFuIC0+IFwiPFwiXG4gIHwgTGVzc3RoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPCdcbiAgfCBNaW51cyAtPiBcIi1cIlxuICB8IE1pbnVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy0nXG4gIHwgTmV3bGluZSAtPiBcIlxcblwiXG4gIHwgTmV3bGluZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXG4nXG4gIHwgTnVtYmVyIHMgLT4gc1xuICB8IE9icmFjZSAtPiBcIntcIlxuICB8IE9icmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd7J1xuICB8IE9wYXJlbnRoZXNpcyAtPiBcIihcIlxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcoJ1xuICB8IE9icmFja2V0IC0+IFwiW1wiXG4gIHwgT2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnWydcbiAgfCBQZXJjZW50IC0+IFwiJVwiXG4gIHwgUGVyY2VudHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICclJ1xuICB8IFBsdXMgLT4gXCIrXCJcbiAgfCBQbHVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJysnXG4gIHwgUXVlc3Rpb24gLT4gXCI/XCJcbiAgfCBRdWVzdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc/J1xuICB8IFF1b3RlIC0+IFwiJ1wiXG4gIHwgUXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFwnJ1xuICB8IFNlbWljb2xvbiAtPiBcIjtcIlxuICB8IFNlbWljb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc7J1xuICB8IFNsYXNoIC0+IFwiL1wiXG4gIHwgU2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLydcbiAgfCBTcGFjZSAtPiBcIiBcIlxuICB8IFNwYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyAnXG4gIHwgU3RhciAtPiBcIipcIlxuICB8IFN0YXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKidcbiAgfCBUYWIgLT4gXCIgICAgXCJcbiAgfCBUYWJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoKDIrbikqNCkgJyAnXG4gIHwgVGlsZGUgLT4gXCJ+XCJcbiAgfCBUaWxkZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd+J1xuICB8IFVuZGVyc2NvcmUgLT4gXCJfXCJcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ18nXG4gIHwgV29yZCBzIC0+IHNcblxuXG5sZXQgc2l6ZV9hbmRfbmV3bGluZXMgPSBmdW5jdGlvblxuICB8IFRhZyBfIC0+ICgwLCAwKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2VcbiAgfCBDb2xvbiB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3RcbiAgfCBEb3VibGVxdW90ZSB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhblxuICB8IE1pbnVzIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50IHwgUGx1c1xuICB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSAtPiAoMSwgMClcbiAgfCBBbXBlcnNhbmRzIHggfCBBdHMgeCB8IEJhY2txdW90ZXMgeCB8IEJhY2tzbGFzaHMgeCB8IEJhcnMgeCB8IENhcmV0cyB4XG4gIHwgQ2JyYWNlcyB4IHwgQ29sb25zIHggfCBDb21tYXMgeCB8IENwYXJlbnRoZXNpc3MgeCB8IENicmFja2V0cyB4XG4gIHwgRG9sbGFycyB4IHwgRG90cyB4XG4gIHwgRG91YmxlcXVvdGVzIHggfCBFeGNsYW1hdGlvbnMgeCB8IEVxdWFscyB4IHwgR3JlYXRlcnRoYW5zIHggfCBIYXNocyB4XG4gIHwgTGVzc3RoYW5zIHhcbiAgfCBNaW51c3MgeCB8IE9icmFjZXMgeCB8IE9wYXJlbnRoZXNpc3MgeCB8IE9icmFja2V0cyB4IHwgUGVyY2VudHMgeCB8IFBsdXNzIHhcbiAgfCBRdWVzdGlvbnMgeCB8IFF1b3RlcyB4IHwgU2VtaWNvbG9ucyB4IHwgU2xhc2hzIHggfCBTcGFjZXMgeCB8IFN0YXJzIHhcbiAgfCBUYWJzIHhcbiAgfCBUaWxkZXMgeCB8IFVuZGVyc2NvcmVzIHggLT4gKDIreCwgMClcbiAgfCBOZXdsaW5lIC0+ICgwLCAxKVxuICB8IE5ld2xpbmVzIHggLT4gKDAsIDIreClcbiAgfCBOdW1iZXIgcyB8IFdvcmQgcyAtPiAoU3RyaW5nLmxlbmd0aCBzLCAwKVxuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgYywgbmwgPSBzaXplX2FuZF9uZXdsaW5lcyB0IGluXG4gIGMgKyBubFxuXG5sZXQgc3BsaXRfZmlyc3QgPSBmdW5jdGlvblxuICB8IEFtcGVyc2FuZHMgbiAtPiBBbXBlcnNhbmQsIChpZiBuID4gMCB0aGVuIEFtcGVyc2FuZHMobi0xKSBlbHNlIEFtcGVyc2FuZClcbiAgfCBBdHMgbiAtPiBBdCwgKGlmIG4gPiAwIHRoZW4gQXRzKG4tMSkgZWxzZSBBdClcbiAgfCBCYWNrcXVvdGVzIG4gLT4gQmFja3F1b3RlLCAoaWYgbiA+IDAgdGhlbiBCYWNrcXVvdGVzKG4tMSkgZWxzZSBCYWNrcXVvdGUpXG4gIHwgQmFja3NsYXNocyBuIC0+IEJhY2tzbGFzaCwgKGlmIG4gPiAwIHRoZW4gQmFja3NsYXNocyhuLTEpIGVsc2UgQmFja3NsYXNoKVxuICB8IEJhcnMgbiAtPiBCYXIsIChpZiBuID4gMCB0aGVuIEJhcnMobi0xKSBlbHNlIEJhcilcbiAgfCBDYXJldHMgbiAtPiBDYXJldCwgKGlmIG4gPiAwIHRoZW4gQ2FyZXRzKG4tMSkgZWxzZSBDYXJldClcbiAgfCBDYnJhY2VzIG4gLT4gQ2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBDYnJhY2VzKG4tMSkgZWxzZSBDYnJhY2UpXG4gIHwgQ29sb25zIG4gLT4gQ29sb24sIChpZiBuID4gMCB0aGVuIENvbG9ucyhuLTEpIGVsc2UgQ29sb24pXG4gIHwgQ29tbWFzIG4gLT4gQ29tbWEsIChpZiBuID4gMCB0aGVuIENvbW1hcyhuLTEpIGVsc2UgQ29tbWEpXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IENwYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gQ3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXMpXG4gIHwgQ2JyYWNrZXRzIG4gLT4gQ2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIENicmFja2V0cyhuLTEpIGVsc2UgQ2JyYWNrZXQpXG4gIHwgRG9sbGFycyBuIC0+IERvbGxhciwgKGlmIG4gPiAwIHRoZW4gRG9sbGFycyhuLTEpIGVsc2UgRG9sbGFyKVxuICB8IERvdHMgbiAtPiBEb3QsIChpZiBuID4gMCB0aGVuIERvdHMobi0xKSBlbHNlIERvdClcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBEb3VibGVxdW90ZSwgKGlmIG4gPiAwIHRoZW4gRG91YmxlcXVvdGVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZSlcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBFeGNsYW1hdGlvbiwgKGlmIG4gPiAwIHRoZW4gRXhjbGFtYXRpb25zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbilcbiAgfCBFcXVhbHMgbiAtPiBFcXVhbCwgKGlmIG4gPiAwIHRoZW4gRXF1YWxzKG4tMSkgZWxzZSBFcXVhbClcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbiwgKGlmIG4gPiAwIHRoZW4gR3JlYXRlcnRoYW5zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbilcbiAgfCBIYXNocyBuIC0+IEhhc2gsIChpZiBuID4gMCB0aGVuIEhhc2hzKG4tMSkgZWxzZSBIYXNoKVxuICB8IExlc3N0aGFucyBuIC0+IExlc3N0aGFuLCAoaWYgbiA+IDAgdGhlbiBMZXNzdGhhbnMobi0xKSBlbHNlIExlc3N0aGFuKVxuICB8IE1pbnVzcyBuIC0+IE1pbnVzLCAoaWYgbiA+IDAgdGhlbiBNaW51c3Mobi0xKSBlbHNlIE1pbnVzKVxuICB8IE5ld2xpbmVzIG4gLT4gTmV3bGluZSwgKGlmIG4gPiAwIHRoZW4gTmV3bGluZXMobi0xKSBlbHNlIE5ld2xpbmUpXG4gIHwgT2JyYWNlcyBuIC0+IE9icmFjZSwgKGlmIG4gPiAwIHRoZW4gT2JyYWNlcyhuLTEpIGVsc2UgT2JyYWNlKVxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBPcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIE9wYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzKVxuICB8IE9icmFja2V0cyBuIC0+IE9icmFja2V0LCAoaWYgbiA+IDAgdGhlbiBPYnJhY2tldHMobi0xKSBlbHNlIE9icmFja2V0KVxuICB8IFBlcmNlbnRzIG4gLT4gUGVyY2VudCwgKGlmIG4gPiAwIHRoZW4gUGVyY2VudHMobi0xKSBlbHNlIFBlcmNlbnQpXG4gIHwgUGx1c3MgbiAtPiBQbHVzLCAoaWYgbiA+IDAgdGhlbiBQbHVzcyhuLTEpIGVsc2UgUGx1cylcbiAgfCBRdWVzdGlvbnMgbiAtPiBRdWVzdGlvbiwgKGlmIG4gPiAwIHRoZW4gUXVlc3Rpb25zKG4tMSkgZWxzZSBRdWVzdGlvbilcbiAgfCBRdW90ZXMgbiAtPiBRdW90ZSwgKGlmIG4gPiAwIHRoZW4gUXVvdGVzKG4tMSkgZWxzZSBRdW90ZSlcbiAgfCBTZW1pY29sb25zIG4gLT4gU2VtaWNvbG9uLCAoaWYgbiA+IDAgdGhlbiBTZW1pY29sb25zKG4tMSkgZWxzZSBTZW1pY29sb24pXG4gIHwgU2xhc2hzIG4gLT4gU2xhc2gsIChpZiBuID4gMCB0aGVuIFNsYXNocyhuLTEpIGVsc2UgU2xhc2gpXG4gIHwgU3BhY2VzIG4gLT4gU3BhY2UsIChpZiBuID4gMCB0aGVuIFNwYWNlcyhuLTEpIGVsc2UgU3BhY2UpXG4gIHwgU3RhcnMgbiAtPiBTdGFyLCAoaWYgbiA+IDAgdGhlbiBTdGFycyhuLTEpIGVsc2UgU3RhcilcbiAgfCBUYWJzIG4gLT4gVGFiLCAoaWYgbiA+IDAgdGhlbiBUYWJzKG4tMSkgZWxzZSBUYWIpXG4gIHwgVGlsZGVzIG4gLT4gVGlsZGUsIChpZiBuID4gMCB0aGVuIFRpbGRlcyhuLTEpIGVsc2UgVGlsZGUpXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBVbmRlcnNjb3JlLCAoaWYgbiA+IDAgdGhlbiBVbmRlcnNjb3JlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmUpXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZSB8IENvbG9uXG4gIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdCB8IERvdWJsZXF1b3RlXG4gIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuIHwgTWludXNcbiAgfCBOZXdsaW5lIHwgTnVtYmVyIF8gfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnRcbiAgfCBQbHVzIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIHwgVGFnIF8gfCBXb3JkIF8gLT5cbiAgICAgaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIuc3BsaXRfZmlyc3RcIlxuXG5tb2R1bGUgdHlwZSBJbnB1dCA9XG5zaWdcbiAgdHlwZSB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuICB2YWwgc3ViIDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIExleChJIDogSW5wdXQpIDpcbnNpZ1xuICB2YWwgbGV4IDogSS50IC0+IHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IGxleCAocyA6IEkudCkgPVxuICAgIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGwgPSBJLmxlbmd0aCBzIGluXG4gICAgbGV0IHJjb3VudCBjID1cbiAgICAgICgqIFtyY291bnQgY10gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGltbWVkaWF0ZSBjb25zZWN1dGl2ZVxuICAgICAgICAgb2NjdXJyZW5jZXMgb2YgW2NdLiAgQnkgc2lkZS1lZmZlY3QsIGl0IGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlXG4gICAgICAgICBjb3VudGVyIFtpXS4gKilcbiAgICAgIGxldCByZWMgbG9vcCByID1cbiAgICAgICAgaWYgIWkgPSBsIHRoZW4gclxuICAgICAgICBlbHNlIGlmIEkuZ2V0IHMgIWkgPSBjIHRoZW4gKGluY3IgaTsgbG9vcCAocisxKSlcbiAgICAgICAgZWxzZSByXG4gICAgICBpblxuICAgICAgbG9vcCAxXG4gICAgaW5cbiAgICBsZXQgd29yZCAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJ1xuICAgICAgICAgICAgfCAnXCInIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonXG4gICAgICAgICAgICB8ICc7JyB8ICc+JyB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJ1xuICAgICAgICAgICAgfCAnJCcgfCAnJScgfCAnIScgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgICB8IGMgLT4gaW5jciBpOyBsb29wKClcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgbG9vcCgpXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfbnVtYmVyICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICB3aGlsZVxuICAgICAgICAhaSA8IGwgJiZcbiAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZG9cbiAgICAgICAgaW5jciBpXG4gICAgICBkb25lO1xuICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJycgfCAnXCInXG4gICAgICAgICAgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOicgfCAnOycgfCAnPidcbiAgICAgICAgICB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJyB8ICckJyB8ICclJyB8ICchJ1xuICAgICAgICAgIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpIDo9IHN0YXJ0O1xuICAgICAgICAgICAgICB3b3JkKClcbiAgICAgICAgZW5kXG4gICAgaW5cblxuICAgIGxldCBuX29jYyBjID0gaW5jciBpOyByY291bnQgYyBpblxuXG4gICAgd2hpbGUgIWkgPCBsIGRvXG4gICAgICBsZXQgYyA9IEkuZ2V0IHMgIWkgaW5cbiAgICAgIGxldCB3ID0gbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZSBlbHNlIFNwYWNlcyAobi0yKVxuICAgICAgICB8ICdcXHQnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlcygyKSBlbHNlIFNwYWNlcyg0Km4tMilcbiAgICAgICAgfCAnXFxuJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMgKG4tMilcbiAgICAgICAgfCAnXFxyJyAtPiAoKiBlbGltaW5hdGluZyBcXHIgYnkgY29udmVydGluZyBhbGwgc3R5bGVzIHRvIHVuaXggc3R5bGUgKilcbiAgICAgICAgICBpbmNyIGk7XG4gICAgICAgICAgbGV0IHJlYyBjb3VudF9ybiB4ID1cbiAgICAgICAgICAgIGlmICFpIDwgbCAmJiBJLmdldCBzICghaSkgPSAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIGlmICFpICsgMSA8IGwgJiYgSS5nZXQgcyAoIWkrMSkgPSAnXFxyJyB0aGVuXG4gICAgICAgICAgICAgICAgKGkgOj0gIWkgKyAyOyBjb3VudF9ybiAoeCsxKSlcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJuID0gMSArIGNvdW50X3JuIDAgaW5cbiAgICAgICAgICBpZiBybiA9IDEgdGhlblxuICAgICAgICAgICAgbWF0Y2ggbl9vY2MgYyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gTmV3bGluZVxuICAgICAgICAgICAgfCB4IC0+IGFzc2VydCh4Pj0yKTsgTmV3bGluZXMoeC0yKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChhc3NlcnQocm4+PTIpO05ld2xpbmVzKHJuLTIpKVxuICAgICAgICB8ICcjJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gSGFzaCBlbHNlIEhhc2hzIChuLTIpXG4gICAgICAgIHwgJyonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTdGFyIGVsc2UgU3RhcnMgKG4tMilcbiAgICAgICAgfCAnLScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE1pbnVzIGVsc2UgTWludXNzIChuLTIpXG4gICAgICAgIHwgJysnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQbHVzIGVsc2UgUGx1c3MgKG4tMilcbiAgICAgICAgfCAnYCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2txdW90ZSBlbHNlIEJhY2txdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFwnJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdW90ZSBlbHNlIFF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcIicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdWJsZXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXFxcJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrc2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQmFja3NsYXNocyAobi0yKVxuICAgICAgICB8ICdfJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVW5kZXJzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlcyAobi0yKVxuICAgICAgICB8ICdbJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ10nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2tldCBlbHNlIENicmFja2V0cyAobi0yKVxuICAgICAgICB8ICd7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNlIGVsc2UgT2JyYWNlcyAobi0yKVxuICAgICAgICB8ICd9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNlIGVsc2UgQ2JyYWNlcyAobi0yKVxuICAgICAgICB8ICcoJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnKScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENwYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJzonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb2xvbiBlbHNlIENvbG9ucyAobi0yKVxuICAgICAgICB8ICc7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2VtaWNvbG9uIGVsc2UgU2VtaWNvbG9ucyAobi0yKVxuICAgICAgICB8ICc+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW5zIChuLTIpXG4gICAgICAgIHwgJ34nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBUaWxkZSBlbHNlIFRpbGRlcyAobi0yKVxuICAgICAgICB8ICc8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMgKG4tMilcbiAgICAgICAgfCAnQCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEF0IGVsc2UgQXRzIChuLTIpXG4gICAgICAgIHwgJyYnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBbXBlcnNhbmQgZWxzZSBBbXBlcnNhbmRzIChuLTIpXG4gICAgICAgIHwgJ3wnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYXIgZWxzZSBCYXJzIChuLTIpXG4gICAgICAgIHwgJ14nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYXJldCBlbHNlIENhcmV0cyAobi0yKVxuICAgICAgICB8ICcsJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29tbWEgZWxzZSBDb21tYXMgKG4tMilcbiAgICAgICAgfCAnLicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdCBlbHNlIERvdHMgKG4tMilcbiAgICAgICAgfCAnLycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNsYXNoIGVsc2UgU2xhc2hzIChuLTIpXG4gICAgICAgIHwgJyQnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb2xsYXIgZWxzZSBEb2xsYXJzIChuLTIpXG4gICAgICAgIHwgJyUnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQZXJjZW50IGVsc2UgUGVyY2VudHMgKG4tMilcbiAgICAgICAgfCAnPScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEVxdWFsIGVsc2UgRXF1YWxzIChuLTIpXG4gICAgICAgIHwgJyEnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFeGNsYW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbnMgKG4tMilcbiAgICAgICAgfCAnPycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1ZXN0aW9uIGVsc2UgUXVlc3Rpb25zIChuLTIpXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiBtYXliZV9udW1iZXIoKVxuICAgICAgICB8IGMgLT4gd29yZCgpIGluXG4gICAgICByZXN1bHQgOj0gdyA6OiAhcmVzdWx0XG4gICAgZG9uZTtcbiAgICBMaXN0LnJldiAhcmVzdWx0XG5lbmRcblxubW9kdWxlIExleF9zdHJpbmcgPSBMZXgoU3RyaW5nTGFiZWxzKVxubGV0IGxleCA9IExleF9zdHJpbmcubGV4XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCxcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG5tb2R1bGUgQmlnYXJyYXlfaW5wdXQgOiBJbnB1dCB3aXRoIHR5cGUgdCA9IGJpZ3N0cmluZyA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEJBID0gQmlnYXJyYXlcblxuICB0eXBlIHQgPSBiaWdzdHJpbmdcbiAgbGV0IGdldCA9IEJBLkFycmF5MS5nZXRcbiAgbGV0IGxlbmd0aCA9IEJBLkFycmF5MS5kaW1cbiAgbGV0IHN1YiBhcnIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IHBvcyA8IDAgfHwgcG9zICsgbGVuID4gQkEuQXJyYXkxLmRpbSBhcnJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYXJyYXlfaW5wdXQuc3ViXCI7XG4gICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcyBpIChCQS5BcnJheTEudW5zYWZlX2dldCBhcnIgKGkgKyBwb3MpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5lbmRcbm1vZHVsZSBMZXhfYmlnYXJyYXkgPSBMZXgoQmlnYXJyYXlfaW5wdXQpXG5sZXQgbGV4X2JpZ2FycmF5ID0gTGV4X2JpZ2FycmF5LmxleFxuXG5sZXQgbWFrZV9zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgMCAtPiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCJcbiAgfCAxIC0+IFNwYWNlXG4gIHwgbiAtPiBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIiBlbHNlIFNwYWNlcyAobi0yKVxuXG5cbigqXG4oKiogW3N0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbC5cbiAgICBbZXN0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsXG4gICAgKHNhbWUgc2VtYW50aWNzIGFzIFtTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3RsIGwpXSkuICopXG5sZXQgc3RyaW5nX29mX3RsLCBlc3RyaW5nX29mX3RsID1cbiAgbGV0IGcgZXNjYXBlZCB0bCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDQyIGluXG4gICAgbGV0IHJlYyBsb29wIDogJ2EgdCBsaXN0IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGlmIGVzY2FwZWQgdGhlbiBTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3QgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN0cmluZ19vZl90IGUpO1xuICAgICAgICAgIGxvb3AgdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG4gICAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgdGw7IGIpXG4gIGluIGcgZmFsc2UsIGcgdHJ1ZVxuKilcblxubGV0IHN0cmluZ19vZl90b2tlbnMgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIExpc3QuaXRlciAoZnVuIGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX3Rva2VuIGUpKSB0bDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZGVzdHJpbmdfb2ZfdG9rZW5zID8obGltaXQ9bWF4X2ludCkgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgKGk6aW50KSAodGxpc3Q6dG9rIGxpc3QpIDogdW5pdCA9IG1hdGNoIHRsaXN0IHdpdGhcbiAgICB8IGU6OnRsIC0+XG4gICAgICAgIGlmIGxpbWl0ID0gaSB0aGVuXG4gICAgICAgICAgbG9vcCBpIFtdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90b2tlbiBlKSk7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiOjpcIjtcbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSkgdGxcbiAgICAgICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJbXVwiXG4gIGluXG4gICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIDAgdGw7IGIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy0yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBzZGVidWcgPSB0cnVlXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcbm1vZHVsZSBMID0gT21kX2xleGVyXG5cbnR5cGUgciA9IE9tZF9yZXByZXNlbnRhdGlvbi50XG4oKiogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuXG5hbmQgcCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIGNvbnRleHQgaW5mb3JtYXRpb246IHByZXZpb3VzIGVsZW1lbnRzICopXG5cbmFuZCBsID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogdG9rZW5zIHRvIHBhcnNlICopXG5cbmFuZCBtYWluX2xvb3AgPVxuICA/aHRtbDpib29sIC0+XG4gIHIgLT4gKCogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuICBwIC0+ICgqIGluZm86IHByZXZpb3VzIGVsZW1lbnRzICopXG4gIGwgLT4gKCogdG9rZW5zIHRvIHBhcnNlICopXG4gIE9tZF9yZXByZXNlbnRhdGlvbi50ICgqIGZpbmFsIHJlc3VsdCAqKVxuKCoqIG1vc3QgaW1wb3J0YW50IGxvb3AgKilcblxuXG4oKiogTi5CLiBQbGVhc2UgZG8gbm90IHVzZSB0YWJ1bGF0aW9ucyBpbiB5b3VyIE1hcmtkb3duIGZpbGUhICopXG5cbm1vZHVsZSB0eXBlIEVudiA9IHNpZ1xuICB2YWwgcmM6IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIHZhbCBleHRlbnNpb25zIDogT21kX3JlcHJlc2VudGF0aW9uLmV4dGVuc2lvbnNcbiAgdmFsIGRlZmF1bHRfbGFuZyA6IHN0cmluZ1xuICB2YWwgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA6IGJvb2xcbiAgdmFsIGJsaW5kX2h0bWwgOiBib29sXG4gIHZhbCBzdHJpY3RfaHRtbCA6IGJvb2xcbiAgdmFsIHdhcm5pbmcgOiBib29sXG4gIHZhbCB3YXJuX2Vycm9yIDogYm9vbFxuZW5kXG5cbm1vZHVsZSBVbml0ID0gc3RydWN0IGVuZFxuXG5tb2R1bGUgRGVmYXVsdF9lbnYgKFVuaXQ6c2lnIGVuZCkgOiBFbnYgPSBzdHJ1Y3RcbiAgbGV0IHJjID0gbmV3IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIGxldCBleHRlbnNpb25zID0gW11cbiAgbGV0IGRlZmF1bHRfbGFuZyA9IFwiXCJcbiAgbGV0IGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgPSB0cnVlXG4gIGxldCBibGluZF9odG1sID0gZmFsc2VcbiAgbGV0IHN0cmljdF9odG1sID0gZmFsc2VcbiAgbGV0IHdhcm5pbmcgPSBmYWxzZVxuICBsZXQgd2Fybl9lcnJvciA9IGZhbHNlXG5lbmRcblxubW9kdWxlIE1ha2UgKEVudjpFbnYpID1cbnN0cnVjdFxuICBpbmNsdWRlIEVudlxuXG4gIGxldCB3YXJuID0gT21kX3V0aWxzLndhcm4gfndlOndhcm5fZXJyb3JcblxuICAoKiogc2V0IG9mIGtub3duIEhUTUwgY29kZXMgKilcbiAgbGV0IGh0bWxjb2Rlc19zZXQgPSBTdHJpbmdTZXQub2ZfbGlzdCAoKiBUaGlzIGxpc3Qgc2hvdWxkIGJlIGNoZWNrZWQuLi4gKilcbiAgICAgICgqIGxpc3QgZXh0cmFjdGVkIGZyb206IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2NoYXJzZXQuaHRtbCAqKVxuICAgICAgWyBcIkFFbGlnXCI7ICBcIkFhY3V0ZVwiOyAgXCJBY2lyY1wiOyAgXCJBZ3JhdmVcIjsgXCJBbHBoYVwiOyAgXCJBcmluZ1wiOyAgXCJBdGlsZGVcIjtcbiAgICAgICAgXCJBdW1sXCI7IFwiQmV0YVwiOyAgXCJDY2VkaWxcIjsgXCJDaGlcIjsgXCJEYWdnZXJcIjsgIFwiRGVsdGFcIjsgXCJFVEhcIjsgXCJFYWN1dGVcIjtcbiAgICAgICAgXCJFY2lyY1wiOyAgXCJFZ3JhdmVcIjsgIFwiRXBzaWxvblwiOyAgIFwiRXRhXCI7ICBcIkV1bWxcIjsgIFwiR2FtbWFcIjsgIFwiSWFjdXRlXCI7XG4gICAgICAgIFwiSWNpcmNcIjsgXCJJZ3JhdmVcIjsgXCJJb3RhXCI7ICBcIkl1bWxcIjsgXCJLYXBwYVwiOyBcIkxhbWJkYVwiOyBcIk11XCI7IFwiTnRpbGRlXCI7XG4gICAgICAgIFwiTnVcIjsgIFwiT0VsaWdcIjsgIFwiT2FjdXRlXCI7ICAgXCJPY2lyY1wiOyAgXCJPZ3JhdmVcIjsgIFwiT21lZ2FcIjsgIFwiT21pY3JvblwiO1xuICAgICAgICBcIk9zbGFzaFwiOyAgXCJPdGlsZGVcIjsgIFwiT3VtbFwiOyAgXCJQaGlcIjsgIFwiUGlcIjsgIFwiUHJpbWVcIjsgIFwiUHNpXCI7ICBcIlJob1wiO1xuICAgICAgICBcIlNjYXJvblwiOyAgXCJTaWdtYVwiOyAgIFwiVEhPUk5cIjsgIFwiVGF1XCI7ICBcIlRoZXRhXCI7ICAgXCJVYWN1dGVcIjsgIFwiVWNpcmNcIjtcbiAgICAgICAgXCJVZ3JhdmVcIjsgXCJVcHNpbG9uXCI7IFwiVXVtbFwiOyBcIlhpXCI7IFwiWWFjdXRlXCI7IFwiWXVtbFwiOyBcIlpldGFcIjsgXCJhYWN1dGVcIjtcbiAgICAgICAgXCJhY2lyY1wiOyBcImFjdXRlXCI7IFwiYWVsaWdcIjsgXCJhZ3JhdmVcIjsgXCJhbGVmc3ltXCI7IFwiYWxwaGFcIjsgXCJhbXBcIjsgXCJhbmRcIjtcbiAgICAgICAgXCJhbmdcIjsgXCJhcmluZ1wiOyBcImFzeW1wXCI7ICBcImF0aWxkZVwiOyBcImF1bWxcIjsgXCJiZHF1b1wiOyBcImJldGFcIjsgXCJicnZiYXJcIjtcbiAgICAgICAgXCJidWxsXCI7ICBcImNhcFwiOyAgXCJjY2VkaWxcIjsgXCJjZWRpbFwiOyAgXCJjZW50XCI7ICBcImNoaVwiOyBcImNpcmNcIjsgIFwiY2x1YnNcIjtcbiAgICAgICAgXCJjb25nXCI7ICBcImNvcHlcIjsgXCJjcmFyclwiOyBcImN1cFwiOyAgXCJjdXJyZW5cIjsgXCJkQXJyXCI7ICBcImRhZ2dlclwiOyBcImRhcnJcIjtcbiAgICAgICAgXCJkZWdcIjsgIFwiZGVsdGFcIjsgIFwiZGlhbXNcIjsgICBcImRpdmlkZVwiOyAgXCJlYWN1dGVcIjsgIFwiZWNpcmNcIjsgIFwiZWdyYXZlXCI7XG4gICAgICAgIFwiZW1wdHlcIjsgIFwiZW1zcFwiOyBcImVuc3BcIjsgIFwiZXBzaWxvblwiOyBcImVxdWl2XCI7ICBcImV0YVwiOyAgXCJldGhcIjsgXCJldW1sXCI7XG4gICAgICAgIFwiZXVyb1wiOyAgXCJleGlzdFwiOyAgXCJmbm9mXCI7ICBcImZvcmFsbFwiOyAgXCJmcmFjMTJcIjsgIFwiZnJhYzE0XCI7ICBcImZyYWMzNFwiO1xuICAgICAgICBcImZyYXNsXCI7ICBcImdhbW1hXCI7ICBcImdlXCI7IFwiZ3RcIjsgIFwiaEFyclwiOyAgXCJoYXJyXCI7IFwiaGVhcnRzXCI7ICBcImhlbGxpcFwiO1xuICAgICAgICBcImlhY3V0ZVwiOyBcImljaXJjXCI7IFwiaWV4Y2xcIjsgXCJpZ3JhdmVcIjsgXCJpbWFnZVwiOyBcImluZmluXCI7IFwiaW50XCI7IFwiaW90YVwiO1xuICAgICAgICBcImlxdWVzdFwiOyBcImlzaW5cIjsgXCJpdW1sXCI7ICBcImthcHBhXCI7IFwibEFyclwiOyBcImxhbWJkYVwiOyBcImxhbmdcIjsgXCJsYXF1b1wiO1xuICAgICAgICBcImxhcnJcIjsgIFwibGNlaWxcIjsgIFwibGRxdW9cIjsgXCJsZVwiOyAgXCJsZmxvb3JcIjsgIFwibG93YXN0XCI7IFwibG96XCI7ICBcImxybVwiO1xuICAgICAgICBcImxzYXF1b1wiOyBcImxzcXVvXCI7IFwibHRcIjsgIFwibWFjclwiOyBcIm1kYXNoXCI7IFwibWljcm9cIjsgXCJtaWRkb3RcIjsgXCJtaW51c1wiO1xuICAgICAgICBcIm11XCI7IFwibmFibGFcIjsgIFwibmJzcFwiOyBcIm5kYXNoXCI7ICBcIm5lXCI7IFwibmlcIjsgXCJub3RcIjsgIFwibm90aW5cIjsgXCJuc3ViXCI7XG4gICAgICAgIFwibnRpbGRlXCI7ICBcIm51XCI7ICAgXCJvYWN1dGVcIjsgIFwib2NpcmNcIjsgIFwib2VsaWdcIjsgICBcIm9ncmF2ZVwiOyAgXCJvbGluZVwiO1xuICAgICAgICBcIm9tZWdhXCI7IFwib21pY3JvblwiOyBcIm9wbHVzXCI7IFwib3JcIjsgXCJvcmRmXCI7IFwib3JkbVwiOyBcIm9zbGFzaFwiOyBcIm90aWxkZVwiO1xuICAgICAgICBcIm90aW1lc1wiOyAgXCJvdW1sXCI7ICBcInBhcmFcIjsgIFwicGFydFwiOyAgXCJwZXJtaWxcIjsgXCJwZXJwXCI7ICBcInBoaVwiOyAgXCJwaVwiO1xuICAgICAgICBcInBpdlwiOyAgXCJwbHVzbW5cIjsgIFwicG91bmRcIjsgXCJwcmltZVwiOyAgXCJwcm9kXCI7ICBcInByb3BcIjsgXCJwc2lcIjsgIFwicXVvdFwiO1xuICAgICAgICBcInJBcnJcIjsgIFwicmFkaWNcIjsgXCJyYW5nXCI7IFwicmFxdW9cIjsgIFwicmFyclwiOyBcInJjZWlsXCI7ICBcInJkcXVvXCI7IFwicmVhbFwiO1xuICAgICAgICBcInJlZ1wiOyBcInJmbG9vclwiOyAgXCJyaG9cIjsgXCJybG1cIjsgXCJyc2FxdW9cIjsgIFwicnNxdW9cIjsgXCJzYnF1b1wiOyBcInNjYXJvblwiO1xuICAgICAgICBcInNkb3RcIjsgIFwic2VjdFwiOyAgXCJzaHlcIjsgXCJzaWdtYVwiOyAgXCJzaWdtYWZcIjsgIFwic2ltXCI7IFwic3BhZGVzXCI7ICBcInN1YlwiO1xuICAgICAgICBcInN1YmVcIjsgXCJzdW1cIjsgXCJzdXBcIjsgXCJzdXAxXCI7ICBcInN1cDJcIjsgXCJzdXAzXCI7IFwic3VwZVwiOyBcInN6bGlnXCI7IFwidGF1XCI7XG4gICAgICAgIFwidGhlcmU0XCI7ICBcInRoZXRhXCI7IFwidGhldGFzeW1cIjsgIFwidGhpbnNwXCI7IFwidGhvcm5cIjsgIFwidGlsZGVcIjsgXCJ0aW1lc1wiO1xuICAgICAgICBcInRyYWRlXCI7IFwidUFyclwiOyBcInVhY3V0ZVwiOyAgXCJ1YXJyXCI7IFwidWNpcmNcIjsgXCJ1Z3JhdmVcIjsgXCJ1bWxcIjsgXCJ1cHNpaFwiO1xuICAgICAgICBcInVwc2lsb25cIjsgIFwidXVtbFwiOyBcIndlaWVycFwiOyBcInhpXCI7ICBcInlhY3V0ZVwiOyBcInllblwiOyAgXCJ5dW1sXCI7IFwiemV0YVwiO1xuICAgICAgICBcInp3alwiOyBcInp3bmpcIjsgXVxuXG5cbiAgKCoqIHNldCBvZiBrbm93biBpbmxpbmUgSFRNTCB0YWdzICopXG4gIGxldCBpbmxpbmVfaHRtbHRhZ3Nfc2V0ID1cbiAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgKCogZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvSW5saW5lX2VsZW1lbnRzICopXG4gICAgICAgICBbIFwiYlwiO1wiYmlnXCI7XCJpXCI7XCJzbWFsbFwiO1widHRcIjtcbiAgICAgICAgICAgXCJhYmJyXCI7XCJhY3JvbnltXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJkZm5cIjtcImVtXCI7XCJrYmRcIjtcInN0cm9uZ1wiO1wic2FtcFwiO1widmFyXCI7XG4gICAgICAgICAgIFwiYVwiO1wiYmRvXCI7XCJiclwiO1wiaW1nXCI7XCJtYXBcIjtcIm9iamVjdFwiO1wicVwiO1wic3BhblwiO1wic3ViXCI7XCJzdXBcIjtcbiAgICAgICAgICAgXCJidXR0b25cIjtcImlucHV0XCI7XCJsYWJlbFwiO1wic2VsZWN0XCI7XCJ0ZXh0YXJlYVwiO10pXG5cbiAgKCoqIE4uQi4gaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuIGlubGluZVxuICAgICAgdGFncyBhbmQgYmxvY2stbGV2ZWwgdGFnczogaW4gSFRNTDQgaXQgd2FzIG5vdCBjbGVhciwgaW4gSFRNTDVcbiAgICAgIGl0J3MgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLiBTbywgdGhlIGNob2ljZSAqaGVyZSogaXMgdG8gc3BlY2lmeVxuICAgICAgYSBzZXQgb2YgdGFncyBjb25zaWRlcmVkIGFzIFwiaW5saW5lXCIsIGNmLiBbaW5saW5lX2h0bWx0YWdzX3NldF0uXG4gICAgICBTbyB0aGVyZSB3aWxsIGJlIGlubGluZSB0YWdzLCBub24taW5saW5lIHRhZ3MsIGFuZCB1bmtub3duXG4gICAgICB0YWdzLiopXG5cbiAgKCoqIHNldCBvZiBIVE1MIHRhZ3MgdGhhdCBtYXkgYXBwZWFyIG91dCBvZiBhIGJvZHkgKilcbiAgbGV0IG5vdGluYm9keXRhZ3MgPSBTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgW1xuICAgICAgICBcInRpdGxlXCI7XG4gICAgICAgIFwibGlua1wiO1xuICAgICAgICBcIm1ldGFcIjtcbiAgICAgICAgXCJzdHlsZVwiO1xuICAgICAgICBcImh0bWxcIjtcbiAgICAgICAgXCJoZWFkXCI7XG4gICAgICAgIFwiYm9keVwiO1xuICAgICAgXVxuXG4gICgqKiBBbGwga25vd24gSFRNTCB0YWdzICopXG4gIGxldCBodG1sdGFnc19zZXQgPVxuICAgIFN0cmluZ1NldC51bmlvbiBub3RpbmJvZHl0YWdzXG4gICAgICAoU3RyaW5nU2V0LnVuaW9uIGlubGluZV9odG1sdGFnc19zZXRcbiAgICAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImFcIjtcImFiYnJcIjtcImFjcm9ueW1cIjtcImFkZHJlc3NcIjtcImFwcGxldFwiO1wiYXJlYVwiO1wiYXJ0aWNsZVwiO1wiYXNpZGVcIlxuICAgICAgICAgICAgICA7XCJhdWRpb1wiO1wiYlwiO1wiYmFzZVwiO1wiYmFzZWZvbnRcIjtcImJkaVwiO1wiYmRvXCI7XCJiaWdcIjtcImJsb2NrcXVvdGVcIlxuICAgICAgICAgICAgICA7XCJiclwiO1wiYnV0dG9uXCI7XCJjYW52YXNcIjtcImNhcHRpb25cIjtcImNlbnRlclwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiY29sXCJcbiAgICAgICAgICAgICAgO1wiY29sZ3JvdXBcIjtcImNvbW1hbmRcIjtcImRhdGFsaXN0XCI7XCJkZFwiO1wiZGVsXCI7XCJkZXRhaWxzXCI7XCJkZm5cIlxuICAgICAgICAgICAgICA7XCJkaWFsb2dcIjtcImRpclwiO1wiZGl2XCI7XCJkbFwiO1wiZHRcIjtcImVtXCI7XCJlbWJlZFwiO1wiZmllbGRzZXRcIlxuICAgICAgICAgICAgICA7XCJmaWdjYXB0aW9uXCI7XCJmaWd1cmVcIjtcImZvbnRcIjtcImZvb3RlclwiO1wiZm9ybVwiO1wiZnJhbWVcIjtcImZyYW1lc2V0XCJcbiAgICAgICAgICAgICAgO1wiaDJcIjtcImgzXCI7XCJoNFwiO1wiaDVcIjtcImg2XCJcbiAgICAgICAgICAgICAgO1wiaDFcIjtcImhlYWRlclwiO1wiaHJcIjtcImlcIjtcImlmcmFtZVwiO1wiaW1nXCI7XCJpbnB1dFwiO1wiaW5zXCI7XCJrYmRcIlxuICAgICAgICAgICAgICA7XCJrZXlnZW5cIjtcImxhYmVsXCI7XCJsZWdlbmRcIjtcImxpXCI7XCJtYXBcIjtcIm1hcmtcIjtcIm1lbnVcIjtcIm1ldGVyXCI7XCJuYXZcIlxuICAgICAgICAgICAgICA7XCJub2ZyYW1lc1wiO1wibm9zY3JpcHRcIjtcIm9iamVjdFwiO1wib2xcIjtcIm9wdGdyb3VwXCI7XCJvcHRpb25cIjtcIm91dHB1dFwiXG4gICAgICAgICAgICAgIDtcInBcIjtcInBhcmFtXCI7XCJwcmVcIjtcInByb2dyZXNzXCI7XCJxXCI7XCJycFwiO1wicnRcIjtcInJ1YnlcIjtcInNcIjtcInNhbXBcIlxuICAgICAgICAgICAgICA7XCJzY3JpcHRcIjtcInNlY3Rpb25cIjtcInNlbGVjdFwiO1wic21hbGxcIjtcInNvdXJjZVwiO1wic3BhblwiO1wic3RyaWtlXCJcbiAgICAgICAgICAgICAgO1wic3Ryb25nXCI7XCJzdHlsZVwiO1wic3ViXCI7XCJzdW1tYXJ5XCI7XCJzdXBcIjtcInRhYmxlXCI7XCJ0Ym9keVwiO1widGRcIlxuICAgICAgICAgICAgICA7XCJ0ZXh0YXJlYVwiO1widGZvb3RcIjtcInRoXCI7XCJ0aGVhZFwiO1widGltZVwiO1widHJcIjtcInRyYWNrXCI7XCJ0dFwiO1widVwiXG4gICAgICAgICAgICAgIDtcInVsXCI7XCJ2YXJcIjtcInZpZGVvXCI7XCJ3YnJcIlxuICAgICAgICAgICAgXSkpXG5cblxuICAoKiogVGhpcyBmdW5jdGlvbnMgZml4ZXMgYmFkIGxleGluZyB0cmVlcywgd2hpY2ggbWF5IGJlIGJ1aWx0IHdoZW5cbiAgICAgIGV4dHJhY3Rpb24gYSBwb3J0aW9uIG9mIGFub3RoZXIgbGV4aW5nIHRyZWUuICopXG4gIGxldCBmaXggbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgKCogY29kZSB0byBnZW5lcmF0ZSB3aGF0IGZvbGxvd3MuLi5cbiAgICAgICAgIExpc3QuaXRlciAoZnVuIGUgLT5cbiAgICAgICAgIFByaW50Zi5wcmludGYgXCJcbiAgICAgICAgIHwgJXM6OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAxXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyAwOjp0bClcbiAgICAgICAgIHwgJXNzIG46OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAyXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXM6OiVzcyBuOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAzXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXNzIGE6OiVzcyBiOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyA0XFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhhK2IrMik6OnRsKVwiXG4gICAgICAgICBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlKVxuICAgICAgICAgW1wiQW1wZXJzYW5kXCI7IFwiQXRcIjsgXCJCYWNrcXVvdGVcIjsgXCJCYWNrc2xhc2hcIjsgXCJCYXJcIjsgXCJDYXJldFwiOyBcIkNicmFjZVwiOyBcIkNvbG9uXCI7IFwiQ29tbWFcIjsgXCJDcGFyZW50aGVzaXNcIjsgXCJDYnJhY2tldFwiOyBcIkRvbGxhclwiOyBcIkRvdFwiOyBcIkRvdWJsZXF1b3RlXCI7IFwiRXhjbGFtYXRpb25cIjsgXCJFcXVhbFwiOyBcIkdyZWF0ZXJ0aGFuXCI7IFwiSGFzaFwiOyBcIkxlc3N0aGFuXCI7IFwiTWludXNcIjsgXCJOZXdsaW5lXCI7IFwiT2JyYWNlXCI7IFwiT3BhcmVudGhlc2lzXCI7IFwiT2JyYWNrZXRcIjsgXCJQZXJjZW50XCI7IFwiUGx1c1wiOyBcIlF1ZXN0aW9uXCI7IFwiUXVvdGVcIjsgXCJTZW1pY29sb25cIjsgXCJTbGFzaFwiOyBcIlNwYWNlXCI7IFwiU3RhclwiOyBcIlRhYlwiOyBcIlRpbGRlXCI7IFwiVW5kZXJzY29yZVwiXTtcbiAgICAgICAgIHByaW50X3N0cmluZyBcInwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcXG58IFtdIC0+IExpc3QucmV2IGFjY3VcXG5cIjsgKilcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyAwOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBuOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBhOjpBbXBlcnNhbmRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhhK2IrMik6OnRsKVxuICAgICAgfCBBdDo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMgMDo6dGwpXG4gICAgICB8IEF0cyBuOjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXQ6OkF0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdHMgYTo6QXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyAwOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBuOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBhOjpCYWNrcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzIDA6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIG46OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIGE6OkJhY2tzbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IEJhcjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMgMDo6dGwpXG4gICAgICB8IEJhcnMgbjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcjo6QmFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcnMgYTo6QmFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzIDA6OnRsKVxuICAgICAgfCBDYXJldHMgbjo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXRzIGE6OkNhcmV0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMgMDo6dGwpXG4gICAgICB8IENicmFjZXMgbjo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZXMgYTo6Q2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zIDA6OnRsKVxuICAgICAgfCBDb2xvbnMgbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb25zIGE6OkNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyAwOjp0bClcbiAgICAgIHwgQ29tbWFzIG46OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWFzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hcyBhOjpDb21tYXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhhK2IrMik6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIG46OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIGE6OkNwYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyAwOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIG46OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0cyBhOjpDYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzIDA6OnRsKVxuICAgICAgfCBEb2xsYXJzIG46OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXJzIGE6OkRvbGxhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKGErYisyKTo6dGwpXG4gICAgICB8IERvdDo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMgMDo6dGwpXG4gICAgICB8IERvdHMgbjo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdDo6RG90cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdHMgYTo6RG90cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzIDA6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgbjo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIGE6OkRvdWJsZXF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyAwOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIG46OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBhOjpFeGNsYW1hdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMgMDo6dGwpXG4gICAgICB8IEVxdWFscyBuOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFscyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbHMgYTo6RXF1YWxzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMoYStiKzIpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zIDA6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIGE6OkdyZWF0ZXJ0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzIDA6OnRsKVxuICAgICAgfCBIYXNocyBuOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2hzIGE6Okhhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyAwOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIG46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFucyBhOjpMZXNzdGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBNaW51czo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MgMDo6dGwpXG4gICAgICB8IE1pbnVzcyBuOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51c3MgYTo6TWludXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MoYStiKzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMgMDo6dGwpXG4gICAgICB8IE5ld2xpbmVzIG46Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgYTo6TmV3bGluZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyAwOjp0bClcbiAgICAgIHwgT2JyYWNlcyBuOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlcyBhOjpPYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIG46Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIGE6Ok9wYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyAwOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIG46Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0cyBhOjpPYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyAwOjp0bClcbiAgICAgIHwgUGVyY2VudHMgbjo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50cyBhOjpQZXJjZW50cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhhK2IrMik6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyAwOjp0bClcbiAgICAgIHwgUGx1c3Mgbjo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzcyBhOjpQbHVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMgMDo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBuOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgYTo6UXVlc3Rpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzIDA6OnRsKVxuICAgICAgfCBRdW90ZXMgbjo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGVzIGE6OlF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMgMDo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgYTo6U2VtaWNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzIDA6OnRsKVxuICAgICAgfCBTbGFzaHMgbjo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2hzIGE6OlNsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyAwOjp0bClcbiAgICAgIHwgU3BhY2VzIG46OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlcyBhOjpTcGFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyAwOjp0bClcbiAgICAgIHwgU3RhcnMgbjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFycyBhOjpTdGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBUYWI6OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzIDA6OnRsKVxuICAgICAgfCBUYWJzIG46OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWI6OlRhYnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWJzIGE6OlRhYnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKGErYisyKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyAwOjp0bClcbiAgICAgIHwgVGlsZGVzIG46OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlcyBhOjpUaWxkZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhhK2IrMik6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyAwOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgbjo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBhOjpVbmRlcnNjb3JlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhhK2IrMik6OnRsKXwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cblxuICAoKiBSZW1vdmUgYWxsIFtOTF0gYW5kIFtCcl0gYXQgdGhlIGJlZ2lubmluZy4gKilcbiAgbGV0IHJlYyByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKE5MIHwgQnIpIDo6IHRsIC0+IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsXG4gICAgfCBsIC0+IGxcblxuXG4gICgqKiAtIHJlY29nbml6ZXMgcGFyYWdyYXBoc1xuICAgICAgLSBnbHVlcyBmb2xsb3dpbmcgYmxvY2txdW90ZXMgICopXG4gIGxldCBtYWtlX3BhcmFncmFwaHMgbWQgPVxuICAgIGxldCByZWMgbG9vcCBjcCBhY2N1ID0gZnVuY3Rpb24gKCogY3AgbWVhbnMgY3VycmVudCBwYXJhZ3JhcGggKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gYWNjdVxuICAgICAgICAgIHwgKE5MfEJyKTo6Y3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICAgIHwgY3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICBpblxuICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICB8IEJsb2NrcXVvdGUgYjEgOjogQmxvY2txdW90ZSBiMiA6OiB0bCAtPlxuICAgICAgICBsb29wIGNwIGFjY3UgKEJsb2NrcXVvdGUoYjFAYjIpOjogdGwpXG4gICAgICB8IEJsb2NrcXVvdGUgYiA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IEJsb2NrcXVvdGUobG9vcCBbXSBbXSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChVbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBVbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChPbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBPbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IEh0bWxfY29tbWVudCBfIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gLT4gbG9vcCBbXSAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoZTo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGwpXG4gICAgICB8IChSYXdfYmxvY2sgXyB8IEh0bWxfYmxvY2sgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmNwQGFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChDb2RlX2Jsb2NrIF8gfCBIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgfCBPbCBfIHwgVWwgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IFRleHQgXCJcXG5cIiA6OiBfIHwgUGFyYWdyYXBoIF8gOjogXyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcIk9tZF9wYXJzZXIubWFrZV9wYXJhZ3JhcGhzXCJcbiAgICAgIHwgKE5MfEJyKSA6OiAoTkx8QnIpIDo6IHRsIC0+XG4gICAgICAgIGxldCB0bCA9IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoTkw6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgIHwgXyAtPiBsb29wIFtdIChQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgWCh4KSBhcyBlIDo6IHRsIC0+XG4gICAgICAgICgqIElmIHRoZSBleHRlbnNpb24gcmV0dXJucyBhIGJsb2NrIGFzIGZpcnN0IGVsZW1lbnQsXG4gICAgICAgICAgIHRoZW4gY29uc2lkZXIgdGhlIGV4dGVuc2lvbiBhcyBhIGJsb2NrLiBIb3dldmVyXG4gICAgICAgICAgIGRvbid0IHRha2UgaXRzIGNvbnRlbnRzIGFzIGl0IGlzIHlldCwgdGhlIGNvbnRlbnRzXG4gICAgICAgICAgIG9mIHRoZSBleHRlbnNpb24gc2hhbGwgYmUgY29uc2lkZXJlZCBmaW5hbCBhcyBsYXRlXG4gICAgICAgICAgIGFzIHBvc3NpYmxlLiAqKVxuICAgICAgICBiZWdpbiBtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICAgIHwgU29tZSh0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8ICggSDEgX1xuICAgICAgICAgICAgICB8IEgyIF9cbiAgICAgICAgICAgICAgfCBIMyBfXG4gICAgICAgICAgICAgIHwgSDQgX1xuICAgICAgICAgICAgICB8IEg1ICBfXG4gICAgICAgICAgICAgIHwgSDYgIF9cbiAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggIF9cbiAgICAgICAgICAgICAgfCBVbCBfXG4gICAgICAgICAgICAgIHwgT2wgX1xuICAgICAgICAgICAgICB8IFVscCBfXG4gICAgICAgICAgICAgIHwgT2xwIF9cbiAgICAgICAgICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBIclxuICAgICAgICAgICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgICAgICAgICB8IFJhd19ibG9jayBfXG4gICAgICAgICAgICAgIHwgQmxvY2txdW90ZSBfXG4gICAgICAgICAgICAgICkgOjogX1xuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3doaXRlX2NydW1icyBsID1cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBUZXh0IFwiIFwiIDo6IHRsXG4gICAgICAgIHwgTkw6OnRsXG4gICAgICAgIHwgQnI6OnRsXG4gICAgICAgICAgLT5cbiAgICAgICAgICBsb29wIHRsXG4gICAgICAgIHwgbCAtPiBsXG4gICAgICBpblxuICAgICAgTGlzdC5yZXYgKGxvb3AgKExpc3QucmV2IGwpKVxuICAgIGluXG4gICAgbGV0IHJlYyBjbGVhbl9wYXJhZ3JhcGhzID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHNcXG5cIjtcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFtdXG4gICAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiB0bFxuICAgICAgfCBQYXJhZ3JhcGgocCkgOjogdGwgLT5cbiAgICAgICAgUGFyYWdyYXBoKGNsZWFuX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV9pbml0aWFsX25ld2xpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVfd2hpdGVfY3J1bWJzKG5vcm1hbGlzZV9tZCBwKSkpKVxuICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgxIHYgOjogdGwgLT4gSDEoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDIgdiA6OiB0bCAtPiBIMihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMyB2IDo6IHRsIC0+IEgzKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg0IHYgOjogdGwgLT4gSDQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDUgdiA6OiB0bCAtPiBINShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINiB2IDo6IHRsIC0+IEg2KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEVtcGggdiA6OiB0bCAtPiBFbXBoKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQm9sZCB2IDo6IHRsIC0+IEJvbGQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbCB2IDo6IHRsIC0+IFVsKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9sIHYgOjogdGwgLT4gT2woTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWxwIHYgOjogdGwgLT4gVWxwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbHAgdiA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJsb2NrcXVvdGUgdiA6OiB0bCAtPiBCbG9ja3F1b3RlKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVXJsKGhyZWYsdix0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsKGNsZWFuX3BhcmFncmFwaHMgdiksdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVGV4dCBfXG4gICAgICB8IENvZGUgX1xuICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgIHwgQnJcbiAgICAgIHwgSHJcbiAgICAgIHwgTkxcbiAgICAgIHwgUmVmIF9cbiAgICAgIHwgSW1nX3JlZiBfXG4gICAgICB8IFJhdyBfXG4gICAgICB8IFJhd19ibG9jayBfXG4gICAgICB8IEh0bWwgX1xuICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICAgIHwgSW1nIF9cbiAgICAgIHwgWCBfIGFzIHYgOjogdGwgLT4gdiA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgaW5cbiAgICBsZXQgciA9IGNsZWFuX3BhcmFncmFwaHMobG9vcCBbXSBbXSBtZClcbiAgICBpblxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHMgJVMgLS0+ICVTXFxuJSFcIlxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgbWQpXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCByKTtcbiAgICByXG5cblxuICAoKiogW2Fzc2VydF93ZWxsX2Zvcm1lZF0gaXMgYSBkZXZlbG9wZXIncyBmdW5jdGlvbiB0aGF0IGhlbHBzIHRvXG4gICAgICB0cmFjayBiYWRseSBjb25zdHJ1Y3RlZCB0b2tlbiBsaXN0cy4gIFRoaXMgZnVuY3Rpb24gaGFzIGFuXG4gICAgICBlZmZlY3Qgb25seSBpZiBbdHJhY2tmaXhdIGlzIFt0cnVlXS4gICopXG4gIGxldCBhc3NlcnRfd2VsbF9mb3JtZWQgKGw6dG9rIGxpc3QpIDogdW5pdCA9XG4gICAgaWYgdHJhY2tmaXggdGhlblxuICAgICAgbGV0IHJlYyBlcXVpdiBsMSBsMiA9IG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICAgICAgfCBUYWcgXzo6dGwxLCBUYWcgXzo6dGwyLT4gZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT4gZTEgPSBlMiAmJiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGFzc2VydChlcXVpdiAoZml4IGwpIGwpO1xuICAgICAgKClcblxuICAoKiogR2VuZXJhdGUgZmFsbGJhY2sgZm9yIHJlZmVyZW5jZXMuICopXG4gIGxldCBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZXh0cmFjdF9mYWxsYmFja1xcbiUhXCI7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgICB8IGU6OnRsIGFzIHIgLT5cbiAgICAgICAgaWYgciA9PSByZW1haW5zIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBlLCByZW1haW5zIHdpdGhcbiAgICAgICAgICB8IENicmFja2V0cyAwLCBDYnJhY2tldDo6ciB3aGVuIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IENicmFja2V0cyBuLCBDYnJhY2tldHMgbTo6ciB3aGVuIG0gKyAxID0gbiAmJiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbGV0IGEgPSBsb29wIFtdIGwgaW5cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBMLnN0cmluZ19vZl90b2tlbnMgYVxuICAgICAgbWV0aG9kIHRvX3QgPSBbVGV4dChMLnN0cmluZ19vZl90b2tlbnMgYSldXG4gICAgZW5kXG5cblxuICBsZXQgdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ0FMTDogT21kX3BhcnNlci51bmluZGVudF9yZXZcXG4lIVwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IGNsID0gZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcyh4K3krMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDApOjp0bClcblxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjooXG4gICAgICAgICAgKE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgIHwgKChTdGFyfFBsdXN8TWludXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICAgIGFzIHRsKSBhcyBsIC0+XG4gICAgICAgIGlmIG4gPSBMLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBsb29wIChubDo6Y2xAYWNjdSkgW10gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICBsZXQgeCA9IEwubGVuZ3RoIHMgLSBuIGluXG4gICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KVxuICAgICAgICAgIChpZiB4ID4gMCB0aGVuIFtMLm1ha2Vfc3BhY2UgeF0gZWxzZSBbXSlcbiAgICAgICAgICB0bFxuICAgICAgfCBOZXdsaW5lcyhfKTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBOZXdsaW5lOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSAoZTo6Y2wpIHRsXG4gICAgICB8IFtdIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgW10sIHJpZ2h0IC0+IFtdLCByaWdodFxuICAgIHwgbCwgcmlnaHQgLT5cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgbCwgcmlnaHRcblxuICBsZXQgdW5pbmRlbnQgbiBsZXhlbWVzID1cbiAgICBsZXQgZnN0LCBzbmQgPSB1bmluZGVudF9yZXYgbiBsZXhlbWVzIGluXG4gICAgTGlzdC5yZXYgZnN0LCBzbmRcblxuICBsZXQgcmVjIGlzX2JsYW5rID0gZnVuY3Rpb25cbiAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+XG4gICAgICBpc19ibGFuayB0bFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBzZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cbiAgbGV0IHNtX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjooV29yZCBffE51bWJlciBfIGFzIHcpOjogdGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbdztzXSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IHVlbXBoX29yX2JvbGQgbiBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgaWYgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSB0aGVuXG4gICAgICBnaF91ZW1waF9vcl9ib2xkIG4gbFxuICAgIGVsc2VcbiAgICAgIHNtX3VlbXBoX29yX2JvbGQgbiBsXG5cbiAgbGV0IGVhdF9ibGFuayA9XG4gICAgZWF0IChmdW5jdGlvbiB8U3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfIC0+IHRydWV8IF8gLT4gZmFsc2UpXG5cblxuICAoKiB1c2VkIGJ5IHRhZ19fbWF5YmVfaDEgYW5kIHRhZ19fbWF5YmVfaDIgKilcbiAgbGV0IHNldGV4dF90aXRsZSBtYWluX2xvb3AgKGw6bCkgOiAoT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0ICogbCkgb3B0aW9uID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGRldGVjdF9iYWxhbmNlZF9icXMgbiByIGwgPVxuICAgICAgKCogSWYgdGhlcmUncyBhIGJhbGFuY2VkIChjb21wbGV0ZSkgYmFja3F1b3RlLXN0YXJ0ZWQgY29kZSBibG9ja1xuICAgICAgICAgdGhlbiBpdCBzaG91bGQgYmUgXCJpZ25vcmVkXCIsIGVsc2UgaXQgbWVhbnMgdGhlIGxpbmUgdGhhdFxuICAgICAgICAgZm9sbG93cyBpcyBwYXJ0IG9mIGEgY29kZSBibG9jaywgc28gaXQncyBub3QgZGVmaW5pbmcgYVxuICAgICAgICAgc2V0ZXh0LXN0eWxlIHRpdGxlLiAqKVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuPSVkIHI9JVMgbD0lU1xcbiUhXCJcbiAgICAgICAgICBuIChMLnN0cmluZ19vZl90b2tlbnMgcikgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChCYWNrcXVvdGUgYXMgYik6OnRsIHdoZW4gbiA9IDEgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCAoQmFja3F1b3RlcyB4IGFzIGIpOjp0bCB3aGVuIG4gPSB4KzIgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCBbXSlcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAxIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IEJhY2txdW90ZXMoeCk6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgKHgrMikgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgTmV3bGluZTo6KEVxdWFsfEVxdWFscyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIHRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuc2V0ZXh0X3RpdGxlIGlzIHdyb25nbHkgdXNlZCFcXG4lIVwiO1xuICAgICAgICBOb25lXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBpZiBtYXRjaCBsIHdpdGhcbiAgICAgIHwgTGVzc3RoYW46OldvcmQgXzo6XyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYWluX2xvb3AgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCAoSHRtbF9ibG9jayBfIHwgQ29kZV9ibG9jayBfIHwgUmF3X2Jsb2NrIF8pOjpfIC0+XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzdWx0ID0gbG9vcCBbXSBsIGluXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBzZXRleHRfdGl0bGUgbD0lUyByZXN1bHQ9JVMsJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB4KVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB0bCk7XG4gICAgICByZXN1bHRcblxuICBsZXQgdGFnX19tYXliZV9oMSAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDFcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDEobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMSBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tYXliZV9oMiAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDJcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDIobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMiBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tZCBtZCA9ICgqIFttZF0gc2hvdWxkIGJlIGluIHJldmVyc2UgKilcbiAgICBUYWcoXCJ0YWdfX21kXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gU29tZShtZEByLCBbXSwgbClcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgICApXG5cbiAgKCogTGV0J3MgdGFnIHRoZSBsaW5lcyB0aGF0ICptaWdodCogYmUgdGl0bGVzIHVzaW5nIHNldGV4dC1zdHlsZS5cbiAgICAgXCJtaWdodFwiIGJlY2F1c2UgaWYgdGhleSBhcmUsIGZvciBpbnN0YW5jZSwgaW4gYSBjb2RlIHNlY3Rpb24sXG4gICAgIHRoZW4gdGhleSBhcmUgbm90IHRpdGxlcyBhdCBhbGwuICopXG4gIGxldCB0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgcGwgcmVzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gfCBbTmV3bGluZXxOZXdsaW5lcyBfXSAtPlxuICAgICAgICBwbEByZXNcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooRXF1YWx8RXF1YWxzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgxLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98RXF1YWx8RXF1YWxzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gxIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooTWludXN8TWludXNzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgyLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TWludXN8TWludXNzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gyIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgfCBOZXdsaW5lcyBfIGFzIGUxKTo6dGwgLT5cbiAgICAgICAgbG9vcCBbXSAoZTE6OnBsQHJlcykgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cGwpIHJlcyB0bFxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgW10gW10gbGV4ZW1lcylcblxuXG4gIGxldCBocl9tIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lcyBffE5ld2xpbmUpOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBNaW51czo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBNaW51c3MgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyX3MgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IFN0YXI6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgU3RhcnMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyIGwgPVxuICAgIG1hdGNoIGhyX20gbCB3aXRoXG4gICAgfCBOb25lIC0+IGhyX3MgbFxuICAgIHwgU29tZSBfIGFzIHRsIC0+IHRsXG5cbiAgKCoqIFtiY29kZV0gcGFyc2VzIGNvZGUgdGhhdCdzIGRlbGltaXRlZCBieSBiYWNrcXVvdGUocykgKilcbiAgbGV0IGJjb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCBlLCB0bCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIC0+IGUsIHRsXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLmJjb2RlIGlzIHdyb25nbHkgY2FsbGVkXCJcbiAgICBpblxuICAgIGxldCByZWMgY29kZV9ibG9jayBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBCYWNrcXVvdGUgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChCYWNrcXVvdGU6OmFjY3UpIHRsXG4gICAgICB8IChCYWNrcXVvdGVzIG4gYXMgYik6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBiIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoYjo6YWNjdSkgdGxcbiAgICAgIHwgVGFnKF8sIF8pOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIGFjY3UgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIG1hdGNoIGNvZGVfYmxvY2sgW10gdGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKGNiLCBsKSAtPlxuICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBjYlxuICAgICAgJiYgKG1hdGNoIHAgd2l0aCBbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIChtYXRjaCBlIHdpdGggQmFja3F1b3RlcyBuIHdoZW4gbiA+IDAgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICB0aGVuXG4gICAgICAgIG1hdGNoIGNiIHdpdGhcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyAwIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyhOZXdsaW5lOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgbiA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgKE5ld2xpbmVzKG4tMSk6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNsZWFuX2Jjb2RlIHMgPVxuICAgICAgICAgIGxldCByZWMgbG9vcDEgaSA9XG4gICAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AxKGkrMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcDIgaSA9XG4gICAgICAgICAgICBpZiBpID0gLTEgdGhlbiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMihpLTEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpKzFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGxvb3AxIDAsIGxvb3AyIChTdHJpbmcubGVuZ3RoIHMgLSAxKSB3aXRoXG4gICAgICAgICAgfCAwLCBuIHdoZW4gbiA9IFN0cmluZy5sZW5ndGggcyAtIDEgLT4gc1xuICAgICAgICAgIHwgaSwgbiAtPiBTdHJpbmcuc3ViIHMgaSAobi1pKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIGNsZWFuX2Jjb2RlICVTID0+ICVTXFxuJSFcIiBjb2RlIChjbGVhbl9iY29kZSBjb2RlKTtcbiAgICAgICAgU29tZShDb2RlKGRlZmF1bHRfbGFuZywgY2xlYW5fYmNvZGUgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG5cblxuICBleGNlcHRpb24gTkxfZXhjZXB0aW9uXG4gIGV4Y2VwdGlvbiBQcmVtYXR1cmVfZW5kaW5nXG5cbiAgKCogISFETyBOT1QgREVMRVRFIFRISVMhIVxuICAgICBUaGUgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUgZ2VuZXJhdGVkIHBhcnQgdGhhdCBmb2xsb3dzIHJpZ2h0IGFmdGVyLlxuICAgICBMaXN0Lml0ZXIgKGZ1biAoYSxiLGMpIC0+XG4gICAgIHByaW50X2VuZGxpbmUgKFwibGV0IHJlYWRfdW50aWxfXCJeYV5cIiA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIG4gKFwiXmJeXCI6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFwiXG4gICAgICBeKGlmIGM8PlwiXCIgdGhlbiBcIlxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmNeXCI6OmFjY3UpIG4gKFwiXmNeXCI6OnRsKVxuICAgICAgfCBcIl5jXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgXCJeY15cInMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgXCIgZWxzZSBcIlwiKV5cbiAgICAgXCIgICAgfCBcIl5iXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBcIl5iXlwicyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwiOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgKG4tMSkgKFwiXmJeXCI6OnRsKVxuICAgICAgfCBcIl5iXlwicyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwicyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgXCJeYl5cIjo6YWNjdSAtPiBcIl5iXlwicygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgXCJeYl5cInMgeDo6YWNjdSAtPiBcIl5iXlwicyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFwiXmJeXCI6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFwiXmJeXCJzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWJcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXCIpKVxuXG4gICAgIFsgXCJndFwiLCBcIkdyZWF0ZXJ0aGFuXCIsIFwiTGVzc3RoYW5cIjtcbiAgICAgXCJsdFwiLCBcIkxlc3N0aGFuXCIsIFwiXCI7XG4gICAgIFwiY3BhcmVudGhcIiwgXCJDcGFyZW50aGVzaXNcIiwgXCJPcGFyZW50aGVzaXNcIjtcbiAgICAgXCJvcGFyZW50aFwiLCBcIk9wYXJlbnRoZXNpc1wiLCBcIlwiO1xuICAgICBcImRxXCIsIFwiRG91YmxlcXVvdGVcIiwgXCJcIjtcbiAgICAgXCJxXCIsIFwiUXVvdGVcIiwgXCJcIjtcbiAgICAgXCJvYnJhY2tldFwiLCBcIk9icmFja2V0XCIsIFwiXCI7XG4gICAgIFwiY2JyYWNrZXRcIiwgXCJDYnJhY2tldFwiLCBcIk9icmFja2V0XCI7XG4gICAgIFwic3BhY2VcIiwgXCJTcGFjZVwiLCBcIlwiO1xuICAgICBdXG4gICopXG5cbiAgKCogYmVnaW4gZ2VuZXJhdGVkIHBhcnQgKilcblxubGV0IHJlYWRfdW50aWxfZ3QgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSBuIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IExlc3N0aGFucyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBHcmVhdGVydGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgR3JlYXRlcnRoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIChuLTEpIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjphY2N1IC0+IEdyZWF0ZXJ0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIHg6OmFjY3UgLT4gR3JlYXRlcnRoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gR3JlYXRlcnRoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9sdCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIChuLTEpIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IExlc3N0aGFuOjphY2N1IC0+IExlc3N0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgTGVzc3RoYW5zIHg6OmFjY3UgLT4gTGVzc3RoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gTGVzc3RoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKExlc3N0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIG4gKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXM6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IENwYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENwYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gT3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9wYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9kcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIG4gKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBEb3VibGVxdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIChuLTEpIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjphY2N1IC0+IERvdWJsZXF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIHg6OmFjY3UgLT4gRG91YmxlcXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gRG91YmxlcXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKERvdWJsZXF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9xID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgbiAoUXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBRdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgKG4tMSkgKFF1b3RlOjp0bClcbiAgICAgIHwgUXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgUXVvdGU6OmFjY3UgLT4gUXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBRdW90ZXMgeDo6YWNjdSAtPiBRdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBRdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoUXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIChuLTEpIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9icmFja2V0OjphY2N1IC0+IE9icmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT2JyYWNrZXRzIHg6OmFjY3UgLT4gT2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9icmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIG4gKENicmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENicmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgKG4tMSkgKENicmFja2V0Ojp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ2JyYWNrZXQ6OmFjY3UgLT4gQ2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDYnJhY2tldHMgeDo6YWNjdSAtPiBDYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3NwYWNlID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2UgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgbiAoU3BhY2U6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFNwYWNlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBTcGFjZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2U6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgKG4tMSkgKFNwYWNlOjp0bClcbiAgICAgIHwgU3BhY2VzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgU3BhY2U6OmFjY3UgLT4gU3BhY2VzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBTcGFjZXMgeDo6YWNjdSAtPiBTcGFjZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBTcGFjZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoU3BhY2VzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG4gICgqIC9lbmQgZ2VuZXJhdGVkIHBhcnQgKilcblxuICBsZXQgcmVhZF91bnRpbF9uZXdsaW5lIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgKChCYWNrc2xhc2ggYXMgYSkpIDo6ICgoTmV3bGluZSBhcyBiKSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYiA6OiBhIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZSA6OiBCYWNrc2xhc2ggOjogYWNjdSkgbiAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgKChCYWNrc2xhc2hzIDAgYXMgZSkpIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCAoKEJhY2tzbGFzaHMgeCBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgKHggbW9kIDIpID0gMFxuICAgICAgICB0aGVuIGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgICBlbHNlIGxvb3AgKChCYWNrc2xhc2hzICh4IC0gMSkpIDo6IGFjY3UpIG4gKEJhY2tzbGFzaCA6OiB0bClcbiAgICAgIHwgKChOZXdsaW5lIGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuICgoTGlzdC5yZXYgYWNjdSksIHRsKSBlbHNlIGxvb3AgKGUgOjogYWNjdSkgKG4gLSAxKSB0bFxuICAgICAgfCBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgKE5ld2xpbmUgOjogdGwpKVxuICAgICAgICBlbHNlIGxvb3AgKE5ld2xpbmUgOjogYWNjdSkgKG4gLSAxKSAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgTmV3bGluZXMgbiA6OiB0bCAtPiAoKExpc3QucmV2IGFjY3UpLCAoKE5ld2xpbmVzIChuIC0gMSkpIDo6IHRsKSlcbiAgICAgIHwgZSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluIGxvb3AgW10gMCBsXG5cbiAgKCogSDEsIEgyLCBIMywgLi4uICopXG4gIGxldCByZWFkX3RpdGxlIChtYWluX2xvb3A6bWFpbl9sb29wKSBuIHIgX3ByZXZpb3VzIGxleGVtZXMgPVxuICAgIGxldCB0aXRsZSwgcmVzdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNoOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuLTEpOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaHMoaCk6OnRsIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNocyhoKTo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuKTo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNocyhuKTo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoW10gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKFtdIGFzIGwpIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgbFxuICAgICAgICB8IFtIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IEhhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgKEhhc2h8SGFzaHMgXyk7IChTcGFjZXxTcGFjZXMgXyldIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgW11cbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBsZXhlbWVzXG4gICAgaW5cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDEgLT4gU29tZShIMSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAyIC0+IFNvbWUoSDIgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMyAtPiBTb21lKEgzIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDQgLT4gU29tZShINCB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA1IC0+IFNvbWUoSDUgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNiAtPiBTb21lKEg2IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHAgbCA9XG4gICAgbWF0Y2ggZXh0ZW5zaW9ucyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBfIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBmI3BhcnNlcl9leHRlbnNpb24gciBwIGwpXG4gICAgICAgICAgfCBTb21lKG5yLCBucCwgbmwpIGFzIGUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBtYXRjaCBmI3BhcnNlcl9leHRlbnNpb24gbnIgbnAgbmwgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGVcbiAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIGsgLT4gaylcbiAgICAgICAgKVxuICAgICAgICBOb25lXG4gICAgICAgIGV4dGVuc2lvbnNcblxuICAoKiBibG9ja3F1b3RlcyAqKVxuICBsZXQgZW1haWxzdHlsZV9xdW90aW5nIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBibG9jayBjbCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6KE5ld2xpbmU6Ol8gYXMgdGwpIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgICgqIG11bHRpIHBhcmFncmFwaCBibG9ja3F1b3RlcyB3aXRoIGVtcHR5IGxpbmVzICopXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgfCAoTmV3bGluZXMgXzo6XyBhcyBsKSB8IChbXSBhcyBsKSAtPiBmaXgoTGlzdC5yZXYoY2xAYmxvY2spKSwgbFxuICAgICAgfCBlOjp0bCAtPiBsb29wIGJsb2NrIChlOjpjbCkgdGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6YmxvY2ssIHRsIC0+XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyAlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGJsb2NrKTtcbiAgICAgIFNvbWUoKEJsb2NrcXVvdGUobWFpbl9sb29wIFtdIFtdIGJsb2NrKTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgfCBfIC0+XG4gICAgICBOb25lXG5cblxuICAoKiBtYXliZSBhIHJlZmVyZW5jZSAqKVxuICBsZXQgbWF5YmVfcmVmZXJlbmNlIChtYWluX2xvb3A6bWFpbl9sb29wKSByYyByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2Uga25vdyBpdCdzIG5vdCBhIGxpbmsgYWx0aG91Z2hcbiAgICAgICBpdCBzdGFydGVkIHdpdGggYSAnWycgKilcbiAgICAoKiBTbyBpdCBjb3VsZCBiZSBhIHJlZmVyZW5jZSBvciBhIGxpbmsgZGVmaW5pdGlvbi4gKilcbiAgICBsZXQgcmVjIG1heWJlX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGJsYW5rLCByZW1haW5zID0gcmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGFyZSBubyB1bndhbnRlZCBjaGFyYWN0ZXJzIGJldHdlZW4gQ0IgYW5kIE9CLiAqKVxuICAgICAgaWYgZWF0IChsZXQgZmxhZyA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICAgIGZ1bmN0aW9uICgqIGFsbG93IG9ubHkgYSBzcGFjZSwgbXVsdGlwbGUgc3BhY2VzLCBvciBhIG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgfCBOZXdsaW5lIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgYmxhbmsgPD4gW10gdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nICgqIDwtLSBub3QgYSByZWd1bGFyIHJlZmVyZW5jZSAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHJlbWFpbnMgd2l0aFxuICAgICAgICB8IFtdLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICAgICAgfCBpZCwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIEwuc3RyaW5nX29mX3Rva2VucyBpZCxcbiAgICAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0LCBmYWxsYmFjaykpOjpyKSxcbiAgICAgICAgICAgICAgIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX25vbnJlZ3VsYXJfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfZGVmIGwgPVxuICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgIHwgXywgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgfCBpZCwgKENvbG9uOjooU3BhY2V8U3BhY2VzIF8pOjpyZW1haW5zKVxuICAgICAgfCBpZCwgKENvbG9uOjpyZW1haW5zKSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pOjogXyBhcyBsIC0+IFNwbGl0KFtdLCBsKVxuICAgICAgICAgICAgICAgICAgfCBlOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSkpXG4gICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZShbXSwgXykgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgIHwgU29tZSh1cmwsIHJlbWFpbnMpIC0+XG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGVhdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiByZWFkX3VudGlsX3EgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OnRsLT4gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IGwgLT4gW10sIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCB1cmwgPiAyICYmIHVybC5bMF0gPSAnPCdcbiAgICAgICAgICAgICAgICAgJiYgdXJsLltTdHJpbmcubGVuZ3RoIHVybCAtIDFdID0gJz4nIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHVybCAxIChTdHJpbmcubGVuZ3RoIHVybCAtIDIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYyNhZGRfcmVmIChMLnN0cmluZ19vZl90b2tlbnMgaWQpIChMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUpIHVybDtcbiAgICAgICAgICAgIFNvbWUociwgW05ld2xpbmVdLCByZW1haW5zKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIG1heWJlX3JlZiBsXG4gICAgd2l0aCB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgIHRyeVxuICAgICAgICBtYXliZV9kZWYgbFxuICAgICAgd2l0aFxuICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1heWJlX25vbnJlZ3VsYXJfcmVmIGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICBOb25lXG5cblxuICAoKiogbWF5YmUgYSBsaW5rICopXG4gIGxldCBtYXliZV9saW5rIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGlua1xcblwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWFkX3VybCBuYW1lIGwgPVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPnJlYWRfdXJsICVTXFxuXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIHRyeVxuICAgICAgICBsZXQgbF9jcCwgcl9jcCA9XG4gICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfY3A9JVMgcl9jcD0lU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfY3ApXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2NwKTtcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGxfZHEsIHJfZHEgPVxuICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2RxPSVTIHJfZHE9JVNcXG4lIVwiXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHEpXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfZHEpO1xuICAgICAgICAgICgqIG1heWJlIHRpdGxlICopXG4gICAgICAgICAgaWYgTGlzdC5sZW5ndGggbF9jcCA+IExpc3QubGVuZ3RoIGxfZHEgdGhlbiAoKiB0aXRsZSAqKVxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICAgIG1hdGNoIExpc3QucmV2IGxfZHEgd2l0aFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IHRsKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gcmVhZF91bnRpbF9kcSB+bm9fbmw6ZmFsc2UgfmJxOmZhbHNlIHJfZHEgaW5cbiAgICAgICAgICAgICAgbGV0IHJlc3QgPSBzbmQocmVhZF91bnRpbF9jcGFyZW50aCByZXN0KSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPiAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IG5vIHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgIGxldCB1cmwgPSBtYXRjaCBMaXN0LnJldiBsX2NwIHdpdGhcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IExpc3QucmV2IHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBsX2NwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gW10sIHJfY3AgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgIGVuZFxuICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCByZWFkX25hbWUgbCA9XG4gICAgICAoKiBpdCdzIG5vdCByZWFsbHkgdGhlIFwibmFtZVwiIG9mIGEgVVJMIGJ1dCB3aGF0XG4gICAgICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5uZXIgSFRNTCBvZiBhbiBIVE1MICdBJyB0YWcgKilcbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz4gcmVhZF9uYW1lXFxuXCI7XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKGVhdF9ibGFuayB0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyAwOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3Mgbjo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXNzKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBOb25lXG4gICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT4gTm9uZVxuICAgIGluXG4gICAgcmVhZF9uYW1lIGxcblxuXG4gIGxldCBoYXNfcGFyYWdyYXBocyBsID1cbiAgICAoKiBIYXMgYXQgbGVhc3QgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcy4gKilcbiAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gTmV3bGluZXMgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbFxuXG4gIGxldCBwYXJzZV9saXN0IChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0IHI9KCVzKSBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBcIlwiICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpICopXG4gICAgICAgIFwiXCIgKCogKGRlc3RyaW5nX29mX3RsIHApICopXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB+bGltaXQ6NDAgbCk7XG4gICAgZW5kO1xuICAgIGxldCBtb2R1bGUgVU8gPSBzdHJ1Y3QgdHlwZSBvcmRlcmVkID0gTyB8IFUgZW5kIGluXG4gICAgbGV0IG9wZW4gVU8gaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdDogbD0oJXMpXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgbGV0IGVuZF9vZl9pdGVtIChpbmRlbnQ6aW50KSBsIDogdG9rIHNwbGl0X2FjdGlvbiAgPSBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgU3BsaXQoW10sW10pXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKChTcGFjZXMgbikgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRsXG4gICAgICAgICAgICAgICAgICAgICAgIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID0gaW5kZW50KzQgdGhlbiAoKiBibG9ja3F1b3RlICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKG4rMikgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKFNwYWNlcyBuIDo6IHRsIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDApOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzQgdGhlbiAoKiBuZXcgcGFyYWdyYXBoIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IChOZXdsaW5lcyBfKSA6OiBfIC0+ICgqIG4gPiAwICopXG4gICAgICAgICgqIEVuZCBvZiBpdGVtLCBzdG9wICopXG4gICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6XG4gICAgICAgIChcbiAgICAgICAgICAoKFNwYWNlfFNwYWNlcyBfKSA6OiAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoKFNwYWNlfFNwYWNlcyBfKSA6OiBOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICB8ICgoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgICBhcyB0bCkgLT5cbiAgICAgICAgU3BsaXQoW05ld2xpbmVdLCB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBleGFjdGx5IDIgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHJld3JpdGUgdGhlIGhlYWQgb2YgdGhlIGxleGluZyBzdHJlYW0uICopXG4gICAgICAgIENvbnRpbnVlX3dpdGgoW10sIE5ld2xpbmVzIDAgOjogdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IChOZXdsaW5lcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGF0IGxlYXN0IDMgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHN0b3AuICopXG4gICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2VzIF8gYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VzXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBTcGFjZXMgXzo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBDb250aW51ZVxuICAgIGluXG4gICAgbGV0IHJldl90b190IGwgPVxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICAoKiBOZXdsaW5lcyBhdCB0aGUgZW5kIG9mIGl0ZW1zIGhhdmUgbm8gbWVhbmluZyAoZXhjZXB0IHRvIGVuZCB0aGVcbiAgICAgICAgIGl0ZW0gd2hpY2ggaXMgZXhwcmVzc2VkIGJ5IHRoZSBjb25zdHJ1Y3RvciBhbHJlYWR5KS4gKilcbiAgICAgIGxldCBsID0gbWF0Y2ggbCB3aXRoIChOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT4gdGwgfCBfIC0+IGwgaW5cbiAgICAgIG1haW5fbG9vcCBbXSBbTmV3bGluZV0gKExpc3QucmV2IGwpXG4gICAgaW5cbiAgICBsZXQgYWRkIChzdWJsaXN0OmVsZW1lbnQpIGl0ZW1zID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGFkZFxcbiUhXCI7XG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoTyxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoTyxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgICAgfCAoVSxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoVSxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgIGluXG4gICAgbGV0IG1ha2VfdXAgfnAgaXRlbXMgOiBPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWtlX3VwIHA9JWJcXG4lIVwiIHA7XG4gICAgICBsZXQgaXRlbXMgPSBMaXN0LnJldiBpdGVtcyBpblxuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCAoVSxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIFVscChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBVbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IChPLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgT2xwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9sKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgW10gLT5cbiAgICAgICAgZmFpbHdpdGggXCJtYWtlX3VwIGNhbGxlZCB3aXRoIFtdXCIgKCogYXNzZXJ0IGZhbHNlICopXG4gICAgaW5cbiAgICBsZXQgcmVjIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGxpc3RfaXRlbXM6IHA9JWIgbD0oJXMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAoKiBubyBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAoKiBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgICgqIG5ldyB1bm9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMjM0NikgbmV3X2l0ZW09JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIG5ld19pdGVtKTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoVSxbMF0sIHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKFUsWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChVLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSkgOjogaXRlbXMgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiBuZXcgb3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCBOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIG5ld19pdGVtO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChPLFswXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKE8sWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKE8sW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnBcbiAgICAgICAgICAgICAgICAgICAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6OlN0YXI6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgLT5cbiAgICAgICAgbGlzdF9pdGVtcyB+cDp0cnVlIGluZGVudHMgaXRlbXMgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgbGV0IHJlYyBzdHJpbmdfb2ZfaXRlbXMgaXRlbXMgPVxuICAgICAgICAgICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICAgICAgICB8IChPLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihPLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCAoVSxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoVSxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBcIih3ZWlyZClcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOQUxJIHBhcnNlX2xpc3Q6IGw9KCVTKSBpdGVtcz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKSAoc3RyaW5nX29mX2l0ZW1zIGl0ZW1zKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgKCogbm90IGEgbGlzdCBpdGVtICopXG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgIGluXG4gICAgbWF0Y2ggbGlzdF9pdGVtcyB+cDpmYWxzZSBbXSBbXSBsIHdpdGhcbiAgICB8IHJwLCBsIC0+XG4gICAgICBycDo6ciwgW05ld2xpbmVdLCBsXG5cblxuXG4gIGxldCBpY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogaW5kZW50ZWQgY29kZTogcmV0dXJucyAocixwLGwpIHdoZXJlIHIgaXMgdGhlIHJlc3VsdCwgcCBpcyB0aGVcbiAgICAgICBsYXN0IHRoaW5nIHJlYWQsIGwgaXMgdGhlIHJlbWFpbnMgKilcbiAgICBsZXQgZHVtbXlfdGFnID0gVGFnKFwiZHVtbXlfdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gPSBmdW4gciBwIGwgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSBpblxuICAgIGxldCBhY2N1ID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIGxldCByZWMgbG9vcCBzIHRsID0gbWF0Y2ggcywgdGwgd2l0aFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAoU3BhY2V8U3BhY2VzKDB8MSkpOjpfIC0+XG4gICAgICAgICgqIDEsIDIgb3IgMyBzcGFjZXMuICopXG4gICAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2Ugd2hhdCBmb2xsb3dzIGlzbid0LiAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgU3BhY2VzKG4pOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgKCogQXQgbGVhc3QgNCBzcGFjZXMsIGl0J3Mgc3RpbGwgY29kZS4gKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaWYgbiA+PSA0IHRoZW4gU3BhY2VzKG4tNCkgZWxzZSBpZiBuID0gMyB0aGVuIFNwYWNlIGVsc2UgZHVtbXlfdGFnKVxuICAgICAgICAgIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChub3Rfc3BhY2VzOjpfIGFzIHRsKSAtPiAoKiBzdG9wICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSBpdCdzIG5vIG1vcmUgY29kZS4gKilcbiAgICAgIHwgcCwgZTo6dGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgICgqIGh0bWwgZW50aXRpZXMgYXJlIHRvIGJlIGNvbnZlcnRlZCBsYXRlciEgKilcbiAgICAgICAgbG9vcCBlIHRsXG4gICAgICB8IHAsIFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpOjpyLCBbcF0sIFtdXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFNwYWNlcyBuOjp0bCAtPlxuICAgICAgaWYgbiA+PSA0IHRoZW5cbiAgICAgICAgU29tZShsb29wIChTcGFjZXMobi00KSkgdGwpXG4gICAgICBlbHNlIGlmIG4gPSAzIHRoZW5cbiAgICAgICAgU29tZShsb29wIFNwYWNlIHRsKVxuICAgICAgZWxzZSBTb21lKGxvb3AgZHVtbXlfdGFnIHRsKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4gICgqIFJldHVybnMgWyhyLHAsbCldIHdoZXJlIFtyXSBpcyB0aGUgcmVzdWx0LCBbcF0gaXMgdGhlIGxhc3QgdGhpbmdcbiAgICAgcmVhZCwgYW5kIFtsXSBpcyB3aGF0IHJlbWFpbnMuICopXG4gIGxldCBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA8PSAzIHRoZW4gKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgICAoKiB1bm9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgKE51bWJlciBfKTo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAoKiBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IFtdXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+ICgqIGJsYW5rIGxpbmUsIHNraXAgc3BhY2VzICopXG4gICAgICAgIHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8ICBfOjpfIC0+XG4gICAgICAgIFRleHQgKFwiIFwiKTo6ciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICApXG4gICAgZWxzZSAoICgqIG4+PTQsIGJsYW5rIGxpbmUgb3IgaW5kZW50ZWQgY29kZSAqKVxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IFtdIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgXyAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGljb2RlIH5kZWZhdWx0X2xhbmcgciBbTmV3bGluZV0gKEwubWFrZV9zcGFjZSBuIDo6IGxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiByLHAsbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5pY29kZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICApXG5cbiAgbGV0IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgPyhodG1sPWZhbHNlKSBuIHIgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA9IDEgdGhlblxuICAgICAgKFRleHQgXCIgXCI6OnIpLCBbU3BhY2VdLCBsZXhlbWVzXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgTmV3bGluZSA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IHRoZSBuZXdsaW5lXFxuJSFcIjtcbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIHRsXG4gICAgICB8IE5ld2xpbmVzIGsgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCAxIG5ld2xpbmVcIjtcbiAgICAgICAgbGV0IG5ld2xpbmVzID0gaWYgayA9IDAgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMoay0xKSBpblxuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgbmV3bGluZXMgOjogdGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKG4+MSk7XG4gICAgICAgIChUZXh0IChTdHJpbmcubWFrZSBuICcgJyk6OnIpLCBbU3BhY2VzKG4tMildLCBsZXhlbWVzXG4gICAgKVxuXG5cbiAgbGV0IG1heWJlX2F1dG9lbWFpbCByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBMZXNzdGhhbjo6dGwgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZnNwbGl0IH5leGNsOihmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIH5mOihmdW5jdGlvbiBBdDo6dGwgLT4gU3BsaXQoW10sdGwpIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgIHRsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lKGxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEdyZWF0ZXJ0aGFuOjp0bCAtPiBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbjo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgcmlnaHRcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUoZG9tYWluLCB0bCkgLT5cbiAgICAgICAgICAgIGxldCBlbWFpbCA9IEwuc3RyaW5nX29mX3Rva2VucyBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICBeIFwiQFwiIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIGRvbWFpbiBpblxuICAgICAgICAgICAgU29tZShVcmwoXCJtYWlsdG86XCJeZW1haWwsW1RleHQgZW1haWxdLFwiXCIpOjpyLFtHcmVhdGVydGhhbl0sdGwpXG4gICAgICBlbmRcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLm1heWJlX2F1dG9lbWFpbDogd3JvbmcgdXNlIG9mIHRoZSBmdW5jdGlvbi5cIlxuXG4gIGxldCBpc19oZXggcyA9XG4gICAgU3RyaW5nLmxlbmd0aCBzID4gMVxuICAgICYmIChzLlswXSA9ICdYJyB8fCBzLlswXSA9ICd4JylcbiAgICAmJiAobGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgaSA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgfHxcbiAgICAgICAgIChtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSlcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIGluIGxvb3AgMSlcblxuICBsZXQgbWVkaWF0eXBldGV4dG9tZCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICAgIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxvb3AgZmFsc2UgW10gbFxuXG4gIGV4Y2VwdGlvbiBPcnBoYW5fY2xvc2luZyBvZiBzdHJpbmcgKiBsICogbFxuXG4gIGxldCByZWMgbWFpbl9pbXBsX3JldiB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViIHI9JXMgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgaHRtbFxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgcHJldmlvdXMpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBsZXhlbWVzKTtcbiAgICBtYXRjaCBwcmV2aW91cywgbGV4ZW1lcyB3aXRoXG4gICAgKCogbm8gbW9yZSB0byBwcm9jZXNzICopXG4gICAgfCBfLCBbXSAtPlxuICAgICAgKCogcmV0dXJuIHRoZSByZXN1bHQgKC8hXFwgaXQgaGFzIHRvIGJlIHJldmVyc2VkIGFzIHNvbWUgcG9pbnQpICopXG4gICAgICByXG5cbiAgICAoKiBUYWc6IHRhZyBzeXN0ZW0gJFxcY3VwJCBoaWdoLXByaW9yaXR5IGV4dGVuc2lvbiBtZWNoYW5pc20gKilcbiAgICB8IF8sIFRhZyhfbmFtZSwgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGUjcGFyc2VyX2V4dGVuc2lvbiByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgdGxcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCBjb21tZW50cyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjooRXhjbGFtYXRpb246Ok1pbnVzcyAwOjpjIGFzIHRsKSAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgKE1pbnVzcyBfIGFzIG0pOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsIC0+XG4gICAgICAgICAgICBTcGxpdChbZzttXSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmc3BsaXQgfmY6ZiBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSAoY29tbWVudHMsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IEh0bWxfY29tbWVudChMLnN0cmluZ19vZl90b2tlbnMgY29tbWVudHMpIDo6IHIgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW05ld2xpbmVdIG5ld190bFxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nIC8gYmxvY2txdW90ZSAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgR3JlYXRlcnRoYW46OihTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCByIHByZXZpb3VzIChOZXdsaW5lOjpsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcsIHdpdGggbGluZXMgc3RhcnRpbmcgd2l0aCBzcGFjZXMhICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoU3BhY2V8U3BhY2VzKDB8MSkgYXMgcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgICgqIEl0J3MgMSwgMiBvciAzIHNwYWNlcywgbm90IG1vcmUgYmVjYXVzZSBpdCB3b3VsZG4ndCBtZWFuXG4gICAgICAgICBxdW90aW5nIGFueW1vcmUgYnV0IGNvZGUuICopXG4gICAgICBiZWdpblxuICAgICAgICBsZXQgbmV3X3IsIHAsIHJlc3QgPVxuICAgICAgICAgIGxldCBmb28sIHJlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKEwubGVuZ3RoIHMpIChOZXdsaW5lOjpsZXhlbWVzKSB3aXRoXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpmb28sIHJlc3QgLT4gZm9vLCByZXN0XG4gICAgICAgICAgICB8IHJlcyAtPiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIFtdIHByZXZpb3VzIChOZXdsaW5lOjpmb28pXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShuZXdfciwgcCwgW10pIC0+IG5ld19yLCBwLCByZXN0XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKG5ld19yQHIpIFtOZXdsaW5lXSByZXN0XG4gICAgICBlbmRcblxuICAgICgqIG1pbnVzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLFxuICAgICAgKE1pbnVzfE1pbnVzcyBfIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pOjpfIGFzIHRsKSAtPlxuICAgICAgKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgc28gaXQgY291bGQgYmUgYSBsaXN0ICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IE1pbnVzIC0+ICgqIGl0J3MgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgICAgICAgfCBfIC0+ICgqIG5vdCBhIGxpc3QgKilcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE1pbnVzfE1pbnVzcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBhbmQgaXQncyBub3QgYSBsaXN0IGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBmb2xsb3dlZCBieSBzcGFjZXMgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuXG4gICAgKCogaGFzaGVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKSA6OiB0dGwgYXMgdGwpXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAodHRsIGFzIHRsKSAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgaWYgbiA8PSA0IHRoZW5cbiAgICAgICAgbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgKG4rMikgciBwcmV2aW91cyB0dGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogdGwgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIDEgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICB8IF8sIChIYXNofEhhc2hzIF8gYXMgdCkgOjogdGwgLT4gKCogaGFzaCAtLSBubyB0aXRsZSAqKVxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYWZ0ZXIgYSBuZXdsaW5lOiBjb3VsZCBsZWFkIHRvIGhyICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyBzcCkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyIHRsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogTm8gW0hyXSwgYnV0IG1heWJlIFtVbF0sIFtPbF0sIGNvZGUsLi4uICopXG4gICAgICAgICAgbGV0IG4gPSBMLmxlbmd0aCBzcCBpblxuICAgICAgICAgIGxldCByLCBwLCBsID1cbiAgICAgICAgICAgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIHRsIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IFNvbWUgdGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIHRsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhbnl3aGVyZSAqKVxuICAgIHwgXywgKChTcGFjZXxTcGFjZXMgXykgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIHRvbyBtYW55IGNhc2VzIHRvIGJlIGhhbmRsZWQgaGVyZSAqKVxuICAgICAgbGV0IG4gPSBMLmxlbmd0aCB0IGluXG4gICAgICBsZXQgciwgcCwgbCA9IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgfmh0bWwgbiByIHRsIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG5cbiAgICAoKiB1bmRlcnNjb3JlcyAqKVxuICAgIHwgXywgKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgdW5kZXJzY29yZSwgb3IgZW1waCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcbiAgICB8IF8sIChVbmRlcnNjb3JlcygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgdW5kZXJzY29yZXMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW4gKCogMSB1bmRlcnNjb3JlICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlICgqIDIgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuXG4gICAgKCogZW51bWVyYXRlZCBsaXN0cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE51bWJlciBfKSA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bCAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBwbHVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFBsdXMgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHN0YXJzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXIgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAoKiBtYXliZSBociBvciBuZXcgbGlzdCAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhcnMgXyA6OiBfIHdoZW4gaHJfcyBsZXhlbWVzIDw+IE5vbmUgLT5cbiAgICAgICgqIGhyICopXG4gICAgICAobWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICB8IFNvbWUgbCAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IF8sIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHN0YXIsIG9yIGVtcGggLy8gY2FuJ3QgYmUgaHIgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG4gICAgfCBfLCAoU3RhcnMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHN0YXJzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGJhY2tzbGFzaGVzICopXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE5ld2xpbmUgYXMgdCkgOjogdGwgLT4gKCogXFxcXG4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT4gKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdIChOZXdsaW5lIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV1cbiAgICAgICAgKE5ld2xpbmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChCYWNrcXVvdGUgYXMgdCkgOjogdGwgLT4gKCogXFxgICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyAwIDo6IHRsIC0+ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV0gKEJhY2txdW90ZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdXG4gICAgICAgIChCYWNrcXVvdGVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIFxcKiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIDAgOjogdGwgLT4gKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXIgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFycyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBcXF8gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyAwIDo6IHRsIC0+ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV0gKFVuZGVyc2NvcmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV1cbiAgICAgICAgKFVuZGVyc2NvcmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx7ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcWyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCggKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdIChPcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdXG4gICAgICAgIChPcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwpICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoUGx1cyBhcyB0KSA6OiB0bCAtPiAoKiBcXCsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyAwIDo6IHRsIC0+ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChNaW51cyBhcyB0KSA6OiB0bCAtPiAoKiBcXC0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgMCA6OiB0bCAtPiAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChEb3QgYXMgdCkgOjogdGwgLT4gKCogXFwuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyAwIDo6IHRsIC0+ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3RzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChFeGNsYW1hdGlvbiBhcyB0KSA6OiB0bCAtPiAoKiBcXCEgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgMCA6OiB0bCAtPiAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXSAoRXhjbGFtYXRpb24gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXVxuICAgICAgICAoRXhjbGFtYXRpb25zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChIYXNoIGFzIHQpIDo6IHRsIC0+ICgqIFxcIyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIDAgOjogdGwgLT4gKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dXG4gICAgICAgIChHcmVhdGVydGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyAwIDo6IHRsIC0+ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dIChMZXNzdGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dXG4gICAgICAgIChMZXNzdGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCAoQmFja3NsYXNocyAwIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIlxcXFxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCAoQmFja3NsYXNocyBuIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBpZiBuIG1vZCAyID0gMCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIHRsXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIChCYWNrc2xhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2g6OltdIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtdIFtdXG4gICAgfCBfLCBCYWNrc2xhc2g6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtCYWNrc2xhc2hdIHRsXG5cbiAgICAoKiA8ICopXG4gICAgfCBfLCAoTGVzc3RoYW58TGVzc3RoYW5zIF8gYXMgdClcbiAgICAgICAgIDo6IChXb3JkKFwiaHR0cFwifFwiaHR0cHNcInxcImZ0cFwifFwiZnRwc1wifFwic3NoXCJ8XCJhZnBcInxcImltYXBcIikgYXMgdylcbiAgICAgICAgIDo6IENvbG9uOjpTbGFzaHMobik6OnRsIC0+XG4gICAgICAoKiBcInNlbWktYXV0b21hdGljXCIgVVJMcyAqKVxuICAgICAgbGV0IHJlYyByZWFkX3VybCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwgLT5cbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgR3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW4gdykgXiBcIjovL1wiXG4gICAgICAgICAgICBeIChpZiBuID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcubWFrZSAobi0xKSAnLycpXG4gICAgICAgICAgICBeIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgICBpbiBTb21lKHVybCwgdGwpXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICByZWFkX3VybCAoeDo6YWNjdSkgdGxcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3VybCBbXSB0bCB3aXRoXG4gICAgICAgIHwgU29tZSh1cmwsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IFxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IExlc3N0aGFucyAwIC0+IFRleHQgXCI8XCIgOjogclxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICc8JykgOjogclxuICAgICAgICAgICAgfCBfIC0+IHJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFVybCh1cmwsW1RleHQgdXJsXSxcIlwiKTo6cikgW10gbmV3X3RsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cblxuICAgICgqIFdvcmQodykgKilcbiAgICB8IF8sIFdvcmQgdzo6dGwgLT5cbiAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHcgOjogcikgW1dvcmQgd10gdGxcblxuICAgICgqIG5ld2xpbmUgYXQgdGhlIGVuZCAqKVxuICAgIHwgXywgW05ld2xpbmVdIC0+XG4gICAgICBOTDo6clxuXG4gICAgKCogbmFtZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKSBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHcgaHRtbGNvZGVzX3NldCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpOdW1iZXIgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogbWF5YmUgaGV4IGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6V29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgd2hlbiBpc19oZXggdyAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuXG4gICAgKCogQW1wZXJzYW5kICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW0FtcGVyc2FuZF0gdGxcblxuICAgICgqIDIgQW1wZXJzYW5kcyAqKVxuICAgIHwgXywgQW1wZXJzYW5kcygwKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kOjp0bClcblxuICAgICgqIFNldmVyYWwgQW1wZXJzYW5kcyAobW9yZSB0aGFuIDIpICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKG4pOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmRzKG4tMSk6OnRsKVxuXG4gICAgKCogYmFja3F1b3RlcyAqKVxuICAgIHwgXywgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBiY29kZSB+ZGVmYXVsdF9sYW5nIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MICopXG4gICAgKCogPGJyLz4gYW5kIDxoci8+IHdpdGggb3Igd2l0aG91dCBzcGFjZShzKSAqKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OihTcGFjZXxTcGFjZXMgXyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZyB3aXRoXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl1cbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIHRsXG4gICAgICBlbmRcblxuICAgICgqIGF3YWl0ZWQgb3JwaGFuIGh0bWwgY2xvc2luZyB0YWcgKilcbiAgICB8IF8sIExlc3N0aGFuOjpTbGFzaDo6V29yZCh3KTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bFxuICAgICAgd2hlbiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSAtPlxuICAgICAgcmFpc2UgKE9ycGhhbl9jbG9zaW5nKHcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW46OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSk6OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0bCkpKVxuXG4gICAgKCogYmxvY2sgaHRtbCAqKVxuICAgIHwgKFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX3xUYWcoXCJIVE1MQkxPQ0tcIiwgXyldKSxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbV29yZCBcIlwiXSBsZXhlbWVzXG4gICAgICBlbHNlIGlmIG5vdCAoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KSB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsID1cbiAgICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0ID8oaHRtbD1odG1sKSBsID1cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGxldCBmX2EgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGEgaW5cbiAgICAgICAgICAgICAgICAgIGlmIGZfYSAhPSBhIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICBmX2EsXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAgICAgIChtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDpmYWxzZSAoTGlzdC5yZXYgYykpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsIGZfYSwgbWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6dHJ1ZSAoTGlzdC5yZXYgYykpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kQG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpSVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0XG4gICAgICAgICAgICAgICAgICAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgKExpc3QucmV2IHQyKSk6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBpZiBodG1sIHRoZW5cbiAgICAgICAgICAgICAgICAgIFJhdyhMLnN0cmluZ19vZl90b2tlbnMgdCkgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYWluX2xvb3Agfmh0bWwgW10gW1dvcmQgXCJcIl0gdFxuICAgICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2IHQpIDo6IHRsKVxuICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0IGwgPSBtZF9vZl9pbnRlcm1fbGlzdCB0cnVlIGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7Qi9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7Qi9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgIHwgVC5SVE9LRU5TIHIgOjogYm9keSAtPiBULlJUT0tFTlMoeDo6cik6OmJvZHlcbiAgICAgICAgICAgIHwgXyAtPiBULlJUT0tFTlNbeF0gOjogYm9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzMzMyBCSFRNTCBsb29wIGJvZHk9JVMgdGFnc3RhdHVzPSVTICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDAxIEJIVE1MIE5vdCBlbm91Z2ggdG8gcmVhZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpIDo6IHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQxOSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgU2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyBvcGVuZXIgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzUgQkhUTUwgcHJvcGVybHkgY2xvc2luZyAlU1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlJUT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzODMgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBpZiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKE9ycGhhbl9jbG9zaW5nKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW46OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbnMobi0xKTo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSkpXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgM1xcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCA8V29yZCglcykuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgYXR0cnMgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk2IEJIVE1MIHRhZyAlUyBidXQgYXR0cnMgPD4gW11cXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQyMSBCSFRNTCB0YWcgJVMsIHRhZ3N0YXR1cz0lUywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzPVtdLCB0b2tlbnM9JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWUgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQzMyBCSFRNTCB0YWdzdGF0dXM9JVMgdG9rZW5zPSVTXFxuJSFcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKSBhdHRycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IHQgOjogIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUobWFpbl9pbXBsX3JldiB+aHRtbCBbXSBbXSB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUyNCBCSFRNTCBjbG9zaW5nIHRhZyBub3QgZm91bmQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gJVNcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNsb3NpbmcgdGFnIGAlcycgbm90IGZvdW5kIGZvciB0ZXh0L29tZCB6b25lLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSBMaXN0LnRsICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGggT3JwaGFuX2Nsb3NpbmcodGFnbmFtZSwgZGVsaW1pdGVyLCBhZnRlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGYgciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFuOjpfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGVzc3RoYW46OnRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuOjpyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFucyhuLTEpOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCA9PSBkZWxpbWl0ZXIgfHwgbCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgKGU6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGYgW10gdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU1MiBCSFRNTCB0b2tlbnM9JXMgZGVsaW1pdGVyPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyPSVzIGJlZm9yZT0lcyAodGFnbmFtZT10KT0lYlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgZGVsaW1pdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGFmdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWduYW1lID0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggIW1lZGlhdHlwZXRleHRvbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiB0bCAtPiBtZWRpYXR5cGV0ZXh0b21kIDo9IHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGFnbmFtZSA9IHQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuTURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5faW1wbCB+aHRtbCBbXSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnX3NldGV4dCBtYWluX2xvb3AgYmVmb3JlKSldKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM1NzEgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUxOSBCSFRNTCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShib2R5LCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5OCBCSFRNTCBGb3VuZCBhIGNsb3NpbmcgdGFnICVzXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0LCBhdHRycywgYm9keSldIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoW1QuSFRNTCh0LCBhdHRycywgYm9keSldLCBsKVxuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSAzNTkxIEJIVE1MIFNvbWUgYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSBHcmVhdGVydGhhbiBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU0MiBCSFRNTCB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjI4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjEgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjU0IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5MCBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjk4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjIgQkhUTUwgJXM9JVMgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IHg6OnRva2VucyBhcyBkZ3RzXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjAgQkhUTUwgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBkZ3RzKTtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzczNyBCSFRNTCBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZXMgXyBhcyB4KSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzODI3IEJIVE1MIG5ld2xpbmVzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICB3YXJuIFwidGhlcmUgYXJlIGVtcHR5IGxpbmVzIGluIHdoYXQgbWF5IGJlIGFuIEhUTUwgYmxvY2tcIjtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzQyIEJIVE1MIGZhbGxiYWNrIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFwiTm9uZVwiXG4gICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBcIkF3YWl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT4gXCJPcGVuIChjYW4ndCBiZSlcIik7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtUYWcoXCJIVE1MQkxPQ0tcIiwgZW1wdHlfZXh0ZW5zaW9uKV0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgYmxvY2sgSFRNTC4gKilcblxuXG4gICAgKCogaW5saW5lIEhUTUwgKilcbiAgICB8IF8sXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgKHN0cmljdF9odG1sICYmIG5vdChTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCkpXG4gICAgICB8fCBub3QoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KVxuICAgICAgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgSHRtbCh0LCBhLCBtZF9vZl9pbnRlcm1fbGlzdChMaXN0LnJldiBjKSk6Om1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+IG1kIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdDE6OlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGwgfmh0bWwgW10gW1dvcmQgXCJcIl0gKHQpXG4gICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntJL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntJL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIFQuVE9LRU5TW3hdOjpib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKCogZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSBib2R5PSglcykgJXNcXG4lIVwiICopXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpICopXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KTo6XyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTm90IGVub3VnaCB0byByZWFkIGZvciBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSk6OnRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW47U2xhc2hdOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogbXVsdGlwbGUgbmV3bGluZXMgYXJlIG5vdCB0byBiZSBzZWVuIGluIGlubGluZSBIVE1MICopXG4gICAgICAgICAgICB8IE5ld2xpbmVzIF8gOjogXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBNdWx0aXBsZSBsaW5lcyBpbiBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgXyAtPiB3YXJuIFwibXVsdGlwbGUgbmV3bGluZXMgaW4gaW5saW5lIEhUTUxcIjsgTm9uZSlcbiAgICAgICAgICAgICgqIG1heWJlIGNvZGUgKilcbiAgICAgICAgICAgIHwgKEJhY2txdW90ZSB8IEJhY2txdW90ZXMgXyBhcyBiKTo6dGwgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBubyBjb2RlXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBub25lXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGxldCdzIHRyeVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBiY29kZSBbXSBbU3BhY2VdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChDb2RlIF86Ol8pIGFzIGMpLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULk1EIGM6OmJvZHkpIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBmYWlsZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2JdOjpib2R5KSBbXSB0YWdzdGF0dXMgdGxcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDEzNiBwcm9wZXJseSBjbG9zaW5nICVTIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNTQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nIG5vdGhpbmcgd2l0aCAlUyAzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgKHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBpbmxpbmVfaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAgIHx8IChub3Qgc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgPCVzLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc5NiB0YWcgJXMsIGF0dHJzPVtdXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t3b3JkO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NSBlbmQgb2Ygb3BlbmluZyB0YWcgdG9rZW5zPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIGFzIHRzIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg2IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDQxOTIgRm91bmQgYSBjbG9zaW5nIHRhZyAlcyB0cz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vdGU6IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnNdIGhlcmUgYmVjYXVzZSBpbiB3ZSBoYXZlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWdzdGF0dXNdIG1hdGNoZXMgW1QuT3BlbiBfIDo6IF9dIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZmlsdGVyIHRoYXQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBjYXJlIG9mIGF0dHJzIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIFR1cm5zIG91dCBhbiBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuXTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQyMDIgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDM5NTcpICVzPSVTICVzXFxuJSFcIiBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaDt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAmJiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2hzKG4pO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0MTYxKSBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zICh4Ojp0b2tlbnMpKTtcbiAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAoNDI4OSkgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0Mjk0KSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrIHdpdGggdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGh0bWwsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtHcmVhdGVydGhhbl0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgaW5saW5lIEhUTUwuICopXG5cbiAgICAoKiA8IDogZW1haWxzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9hdXRvZW1haWwgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBsaW5lIGJyZWFrcyAqKVxuICAgIHwgXywgTmV3bGluZTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpyKSBbTmV3bGluZV0gdGxcbiAgICB8IF8sIE5ld2xpbmVzIF86OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6Tkw6OnIpIFtOZXdsaW5lXSB0bFxuXG4gICAgKCogWyAqKVxuICAgIHwgXywgKE9icmFja2V0IGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfbGluayBtYWluX2xvb3AgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1hdGNoIG1heWJlX3JlZmVyZW5jZSBtYWluX2xvb3AgcmMgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXSgvcGF0aC90by9pbWcuanBnKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgbGV0IGIsIHRsID0gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgdGwgaW5cbiAgICAgICAgICAgKCogbmV3IGxpbmVzIHRoZXJlIGFyZSBhbGxvd2VkICopXG4gICAgICAgICAgIGxldCByICgqIHVwZGF0ZWQgcmVzdWx0ICopID0gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICB0cnkgU29tZShyZWFkX3VudGlsX3NwYWNlIH5icTpmYWxzZSB+bm9fbmw6dHJ1ZSBiKVxuICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBOb25lXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHVybCwgdGxzKSAtPlxuICAgICAgICAgICAgIGxldCB0aXRsZSwgc2hvdWxkX2JlX2VtcHR5X2xpc3QgPVxuICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kIChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRscykpIGluXG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyBiIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgXCJcIikgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBpbWcgcmVmICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb24gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIHJlZiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW11bcmVmXSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGlkLCB0bCA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOnRydWUgdGwgaW5cbiAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHRsIGxleGVtZXMgaW5cbiAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIFwiXCIsIGZhbGxiYWNrKSA6OiByKSBbQ2JyYWNrZXRdIHRsXG4gICAgICAgd2l0aCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KTo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBcImFsdFwiICopXG4gICAgICAoKiAhW0FsdCB0ZXh0XSgvcGF0aC90by9pbWcuanBnIFwiT3B0aW9uYWwgdGl0bGVcIikgKilcbiAgICAgICh0cnlcbiAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgdGwgd2l0aFxuICAgICAgICAgfCBhbHQsIE9wYXJlbnRoZXNpczo6bnRsIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGhfdGl0bGUsIHJlc3QgPVxuICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCwgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9zcGFjZSB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSBwYXRoX3RpdGxlXG4gICAgICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IHBhdGhfdGl0bGUsIFtdIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgbm90aGluZyA9XG4gICAgICAgICAgICAgICAgaWYgdGl0bGUgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGl0bGUpKVxuICAgICAgICAgICAgICAgIGVsc2UgW10sIFtdIGluXG4gICAgICAgICAgICAgIGlmIG5vdGhpbmcgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvbjsgKCogY2F1Z2h0IHJpZ2h0IGJlbG93ICopXG4gICAgICAgICAgICAgIGxldCByID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCA9IEwuc3RyaW5nX29mX3Rva2VucyBwYXRoIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoYWx0LCBwYXRoLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOTF9leGNlcHRpb25cbiAgICAgICAgICAgICgqIGlmIE5MX2V4Y2VwdGlvbiB3YXMgcmFpc2VkLCB0aGVuIGZhbGwgYmFjayB0byBcInRleHRcIiAqKVxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgICA6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXyk6OkNicmFja2V0OjpudGwgLT5cbiAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgbnRsIGxleGVtZXMgaW5cbiAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKSBbQ2JyYWNrZXRdIG50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF98V29yZCBffE51bWJlciBfKTo6X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbnRsKSAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCB3aXRoXG4gICAgICAgICAgICAgIHwgW10sIHJlc3QgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgICB8IGlkLCByZXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVzdCBsZXhlbWVzIGluXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpXG4gICAgICAgICAgICAgICAgICBbQ2JyYWNrZXRdXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgfCBfLFxuICAgICAgKEF0fEJhcnxDYXJldHxDYnJhY2V8Q29sb258Q29tbWF8Q3BhcmVudGhlc2lzfENicmFja2V0fERvbGxhclxuICAgICAgfERvdHxEb3VibGVxdW90ZXxFeGNsYW1hdGlvbnxFcXVhbHxNaW51c3xPYnJhY2V8T3BhcmVudGhlc2lzXG4gICAgICB8UGVyY2VudHxQbHVzfFF1ZXN0aW9ufFF1b3RlfFNlbWljb2xvbnxTbGFzaHxUYWJ8VGlsZGVcbiAgICAgIHxHcmVhdGVydGhhbiBhcyB0KTo6dGxcbiAgICAgIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcbiAgICB8IF8sIChOdW1iZXIgXyAgYXMgdCk6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICB8IF8sIChBdHMgXyB8IEJhcnMgXyB8IENhcmV0cyBfIHwgQ2JyYWNlcyBfIHwgQ2JyYWNrZXRzIF8gfCBDb2xvbnMgX1xuICAgICAgICAgfCBDb21tYXMgXyB8IENwYXJlbnRoZXNpc3MgXyB8IERvbGxhcnMgXyB8IERvdHMgXyB8IERvdWJsZXF1b3RlcyBfXG4gICAgICAgICB8IEVxdWFscyBfIHwgRXhjbGFtYXRpb25zIF8gfCBHcmVhdGVydGhhbnMgXyB8IExlc3N0aGFucyBfXG4gICAgICAgICB8IE1pbnVzcyBfIHwgT2JyYWNlcyBfIHwgT2JyYWNrZXRzIF8gfCBPcGFyZW50aGVzaXNzIF9cbiAgICAgICAgIHwgUGVyY2VudHMgXyB8IFBsdXNzIF8gfCBRdWVzdGlvbnMgXyB8IFF1b3RlcyBfIHwgU2VtaWNvbG9ucyBfXG4gICAgICAgICB8IFNsYXNocyBfIHwgU3RhcnMgXyB8IFRhYnMgXyB8IFRpbGRlcyBfIHwgVW5kZXJzY29yZXMgXyBhcyB0aylcbiAgICAgICAgIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgdGswLCB0a3MgPSBMLnNwbGl0X2ZpcnN0IHRrIGluXG4gICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0azAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHRleHQgOjogcikgW3RrMF0gKHRrcyA6OiB0bClcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cblxuICBhbmQgbWFpbl9pbXBsIH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsIGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgTGlzdC5yZXYgKG1haW5fbG9vcF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzKVxuXG4gIGFuZCBtYWluX2xvb3AgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsIH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG4gIGFuZCBtYWluX2xvb3BfcmV2ID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cblxuICBsZXQgbWFpbl9wYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX2xvb3AgW10gW10gKHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMpXG5cbiAgbGV0IHBhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fcGFyc2UgbGV4ZW1lc1xuXG5lbmRcblxubGV0IGRlZmF1bHRfcGFyc2UgPyhleHRlbnNpb25zPVtdKSA/KGRlZmF1bHRfbGFuZz1cIlwiKSBsZXhlbWVzID1cbiAgbGV0IGUgPSBleHRlbnNpb25zIGFuZCBkID0gZGVmYXVsdF9sYW5nIGluXG4gIGxldCBtb2R1bGUgRSA9IERlZmF1bHRfZW52KFVuaXQpIGluXG4gIGxldCBtb2R1bGUgTSA9XG4gICAgTWFrZShzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBlXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gZFxuICAgIGVuZClcbiAgaW5cbiAgTS5tYWluX3BhcnNlIGxleGVtZXNcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogWW91IHNob3VsZCBlaXRoZXIgdXNlIHRoaXMgbW9kdWxlIG9yIE9tZF9sZXhlciwgbm90IGJvdGguXG4gICAgVGhpcyBtb2R1bGUgaW5jbHVkZXMgT21kX2xleGVyLlxuKilcblxuaW5jbHVkZSBPbWRfbGV4ZXJcblxubGV0IGxleF9mcm9tX2luY2hhbm5lbCBpYyA9XG4gICgqIE1haW50ZW5hbmNlLWVhc2luZXNzLWRyaXZlbiBpbXBsZW1lbnRhdGlvbi4gKilcbiAgbGV0IGljX2NvbnRlbnQgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgKGlucHV0X2NoYXIgaWMpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgbGV4IGljX2NvbnRlbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIE9NRDogTWFya2Rvd24gdG9vbCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2U6ICBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBodG1sID0gaHRtbF9ub2RlIGxpc3RcblxuYW5kIGh0bWxfbm9kZSA9XG4gIHwgTm9kZSBvZiBub2RlbmFtZSAqIGF0dHJpYnV0ZXMgKiBodG1sXG4gIHwgRGF0YSBvZiBzdHJpbmdcbiAgfCBSYXdkYXRhIG9mIHN0cmluZ1xuICB8IENvbW1lbnQgb2Ygc3RyaW5nXG5cbmFuZCBub2RlbmFtZSA9IHN0cmluZ1xuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBhdHRyaWJ1dGUgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbmxldCB0b19zdHJpbmcgaHRtbCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBwcCBmID0gUHJpbnRmLmJwcmludGYgYiBmIGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBOb2RlKG5vZGVuYW1lLCBhdHRyaWJ1dGVzLCBodG1sKSAtPlxuICAgICAgcHAgXCI8JXNcIiBub2RlbmFtZTtcbiAgICAgIHBwYSBhdHRyaWJ1dGVzO1xuICAgICAgcHAgXCI+XCI7XG4gICAgICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICAgICAgcHAgXCI8LyVzPlwiIG5vZGVuYW1lXG4gICAgfCBEYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IFJhd2RhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgQ29tbWVudCBjIC0+IHBwIFwiPCEtLSAlcyAtLT5cIiBjXG4gIGFuZCBwcGEgYXR0cnMgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgICAgZWxzZSBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHBwIFwiICVzPVxcXCJcIiBhO1xuICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB2IC0gMSBkb1xuICAgICAgICAgICAgICAgIG1hdGNoIHYuW2ldIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdcIicgLT4gcHAgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgIHwgYyAgICAtPiBwcCBcIiVjXCIgY1xuICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICBwcCBcIlxcXCJcIlxuICAgICAgICAgICAgKVxuICAgICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRyc1xuICBpblxuICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuaW5jbHVkZSBPbWRfcmVwcmVzZW50YXRpb25cbmluY2x1ZGUgT21kX2JhY2tlbmRcblxubGV0IG9mX2lucHV0IGxleCA/ZXh0ZW5zaW9uczplID9kZWZhdWx0X2xhbmc6ZCBzID1cbiAgbGV0IG1vZHVsZSBFID0gT21kX3BhcnNlci5EZWZhdWx0X2VudihzdHJ1Y3QgZW5kKSBpblxuICBsZXQgbW9kdWxlIFBhcnNlciA9IE9tZF9wYXJzZXIuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBtYXRjaCBlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZXh0ZW5zaW9uc1xuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IG1hdGNoIGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5kZWZhdWx0X2xhbmdcbiAgICBlbmRcbiAgKSBpblxuICBsZXQgbWQgPVxuICAgIFBhcnNlci5wYXJzZSAobGV4IHMpXG4gIGluXG4gIFBhcnNlci5tYWtlX3BhcmFncmFwaHMgbWRcblxubGV0IG9mX3N0cmluZyA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhcbmxldCBvZl9iaWdhcnJheSA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhfYmlnYXJyYXlcblxubGV0IHRvX2h0bWwgOlxuICA/b3ZlcnJpZGU6KE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50IC0+IHN0cmluZyBvcHRpb24pIC0+XG4gID9waW5kZW50OmJvb2wgLT5cbiAgP25sMmJyOmJvb2wgLT5cbiAgP2NzOmNvZGVfc3R5bGlzdCAtPlxuICB0IC0+XG4gIHN0cmluZ1xuICA9XG4gIGh0bWxfb2ZfbWRcblxubGV0IHRvX3RleHQgOiB0IC0+IHN0cmluZyA9IHRleHRfb2ZfbWRcblxubGV0IHRvX21hcmtkb3duIDogdCAtPiBzdHJpbmcgPSBtYXJrZG93bl9vZl9tZFxuXG5sZXQgaHRtbF9vZl9zdHJpbmcgKGh0bWw6c3RyaW5nKSA6IHN0cmluZyA9XG4gIGh0bWxfb2ZfbWQgKE9tZF9wYXJzZXIuZGVmYXVsdF9wYXJzZSAoT21kX2xleGVyLmxleCBodG1sKSlcblxuXG5sZXQgcmVjIHNldF9kZWZhdWx0X2xhbmcgbGFuZyA9IGZ1bmN0aW9uXG4gIHwgQ29kZShcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlKGxhbmcsIGNvZGUpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IENvZGVfYmxvY2soXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZV9ibG9jayhsYW5nLCBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIFJlY3Vyc2Ugb24gYWxsIGVsZW1lbnRzIGV2ZW4gdGhvdWdoIGNvZGUgKGJsb2NrcykgYXJlIG5vdCBhbGxvd2VkXG4gICAgIGV2ZXJ5d2hlcmUuICopXG4gIHwgSDEgdCA6OiB0bCAtPiBIMShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDIgdCA6OiB0bCAtPiBIMihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDMgdCA6OiB0bCAtPiBIMyhzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDQgdCA6OiB0bCAtPiBINChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDUgdCA6OiB0bCAtPiBINShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDYgdCA6OiB0bCAtPiBINihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgUGFyYWdyYXBoIHQgOjogdGwgLT4gUGFyYWdyYXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgRW1waCB0IDo6IHRsIC0+IEVtcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJvbGQgdCA6OiB0bCAtPiBCb2xkKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbCB0IDo6IHRsIC0+IFVsKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9sIHQgOjogdGwgLT4gT2woTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWxwIHQgOjogdGwgLT4gVWxwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbHAgdCA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVybChocmVmLCB0LCB0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsIHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0LCB0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQmxvY2txdW90ZSB0IDo6IHRsIC0+IEJsb2NrcXVvdGUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIEVsZW1lbnRzIHRoYXQgZG8gbm90IGNvbnRhaW4gTWFya2Rvd24uICopXG4gIHwgKFRleHQgX3xDb2RlIF98Q29kZV9ibG9jayBffEJyfEhyfE5MfFJlZiBffEltZ19yZWYgX3xSYXcgX3xSYXdfYmxvY2sgX1xuICAgIHxIdG1sIF98SHRtbF9ibG9jayBffEh0bWxfY29tbWVudCBffEltZyBffFggXykgYXMgZSA6OiB0bCAtPlxuICAgICBlIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFtdIC0+IFtdXG5cblxuKCogVGFibGUgb2YgY29udGVudHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogR2l2ZW4gYSBsaXN0IG9mIGhlYWRlcnMg4oCUIGluIHRoZSBvcmRlciBvZiB0aGUgZG9jdW1lbnQg4oCUIGdvIHRvIHRoZVxuICAgcmVxdWVzdGVkIHN1YnNlY3Rpb24uICBXZSBmaXJzdCBzZWVrIGZvciB0aGUgW251bWJlcl10aCBoZWFkZXIgYXRcbiAgIFtsZXZlbF0uICAqKVxubGV0IHJlYyBmaW5kX3N0YXJ0IGhlYWRlcnMgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoSDEgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAxIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgyIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMyBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDMgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDQgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA0IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg1IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDYgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmFuZCBkZWFsX3dpdGhfaGVhZGVyIGhfbGV2ZWwgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBpZiBoX2xldmVsID4gbGV2ZWwgdGhlbiAoKiBTa2lwLCByaWdodCBbbGV2ZWxdLWhlYWRlciBub3QgeWV0IHJlYWNoZWQuICopXG4gICAgaWYgbnVtYmVyID0gMCB0aGVuXG4gICAgICAoKiBBc3N1bWUgZW1wdHkgc2VjdGlvbiBhdCBbbGV2ZWxdLCBkbyBub3QgY29uc3VtZSB0b2tlbi4gKilcbiAgICAgIChtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICAgfCBbXSAtPiBoZWFkZXJzICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IGhlYWRlcnMgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9ucylcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIGVsc2UgaWYgaF9sZXZlbCA9IGxldmVsIHRoZW4gKFxuICAgICgqIEF0IHByb3BlciBbbGV2ZWxdLiAgSGF2ZSB3ZSByZWFjaGVkIHRoZSBbbnVtYmVyXSBvbmU/ICopXG4gICAgaWYgbnVtYmVyIDw9IDEgdGhlbiAoXG4gICAgICBtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICB8IFtdIC0+IHRsICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgdGwgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9uc1xuICAgIClcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgKG51bWJlciAtIDEpIHN1YnNlY3Rpb25zXG4gIClcbiAgZWxzZSAoKiBoX2xldmVsIDwgbGV2ZWwgKilcbiAgICBbXSAoKiBTb3VnaHQgW2xldmVsXSBoYXMgbm90IGJlZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbiAqKVxuXG4oKiBBc3N1bWUgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgaGVhZGVycyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cbiAgIFJldHVybiB0aGUgbGlzdCBvZiBUT0MgZW50cmllcyBmb3IgW21pbl9sZXZlbF0gYW5kIHRoZSBbaGVhZGVyc11cbiAgIG5vdCB1c2VkIGZvciB0aGUgVE9DIGVudHJpZXMuICopXG5sZXQgcmVjIG1ha2VfdG9jIChoZWFkZXJzOihlbGVtZW50KnN0cmluZypzdHJpbmcpbGlzdCkgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgbWluX2xldmVsID4gbWF4X2xldmVsIHRoZW4gW10sIGhlYWRlcnNcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IChIMSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgyIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAyIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDMgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDMgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINCB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg1IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA1IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDYgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDYgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgKVxuYW5kIHRvY19lbnRyeSBoZWFkZXJzIGhfbGV2ZWwgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBoX2xldmVsID4gbWF4X2xldmVsIHRoZW4gKCogdG9vIGRlZXAsIHNraXAgKilcbiAgICBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgZWxzZSBpZiBoX2xldmVsIDwgbWluX2xldmVsIHRoZW5cbiAgICAoKiBzZWN0aW9uIHdlIHdhbnRlZCB0aGUgVE9DIGZvciBpcyBmaW5pc2hlZCwgZG8gbm90IGNvbXN1bWUgdGhlIHRva2VuICopXG4gICAgW10sIGhlYWRlcnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbWluX2xldmVsIHRoZW4gKFxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jX2VudHJ5ID0gbWF0Y2ggc3ViX3RvYyB3aXRoXG4gICAgICB8IFtdIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MXVxuICAgICAgfCBfIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MOyBVbCBzdWJfdG9jOyBOTF0gaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIHRvY19lbnRyeSA6OiB0b2MsIHRsXG4gICkgZWxzZSAoKiBoX2xldmVsID4gbWluX2xldmVsICopXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgaGVhZGVycyB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICBbVWwgc3ViX3RvY10gOjogdG9jLCB0bFxuXG5sZXQgdG9jID8oc3RhcnQ9W10pID8oZGVwdGg9MikgbWQgPVxuICBpZiBkZXB0aCA8IDEgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZC50b2M6IH5kZXB0aCBtdXN0IGJlID49IDFcIjtcbiAgbGV0IGhlYWRlcnMgPSBPbWRfYmFja2VuZC5oZWFkZXJzX29mX21kIH5yZW1vdmVfaGVhZGVyX2xpbmtzOnRydWUgbWQgaW5cbiAgbGV0IGhlYWRlcnMgPSBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBbXSAtPiBoZWFkZXJzXG4gICAgfCBudW1iZXIgOjogc3Vic2VjdGlvbnMgLT5cbiAgICAgICBpZiBudW1iZXIgPCAwIHRoZW4gaW52YWxpZF9hcmcoXCJPbWQudG9jOiBsZXZlbCAxIHN0YXJ0IG11c3QgYmUgPj0gMFwiKTtcbiAgICAgICBmaW5kX3N0YXJ0IGhlYWRlcnMgMSBudW1iZXIgc3Vic2VjdGlvbnMgaW5cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHN0YXJ0IGluXG4gIGxldCB0b2MsIF8gPSBtYWtlX3RvYyBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB+bWluX2xldmVsOihsZW4gKyAxKSB+bWF4X2xldmVsOihsZW4gKyBkZXB0aCkgaW5cbiAgbWF0Y2ggdG9jIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IF8gLT4gW1VsKHRvYyldXG5cbmxldCBhZGRfdG9jID9zdGFydCA/ZGVwdGggP3RpdGxlIG1kID1cbiAgbGV0IHRvYyA9IHRvYyA/c3RhcnQgP2RlcHRoIG1kIGluXG4gICgqIFJlcGxhY2UgXCIqVGFibGUgb2YgY29udGVudHMqXCIgd2l0aCB0aGUgYWN0dWFsIFRPQy4gKilcbiAgdG9jXG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBrZXkgPSBzdHJpbmc7XG5cbm1vZHVsZSBSZXF1ZXN0ID0ge1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID0gSGF6M2xjb3JlLkV4cC50O1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KChzdHJpbmcsIHZhbHVlKSk7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHByb2dyYW0gPT4gcHJvZ3JhbSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubW9kdWxlIFJlc3BvbnNlID0ge1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID1cbiAgICBSZXN1bHQudChcbiAgICAgIChIYXozbGNvcmUuRXZhbHVhdG9yLlJlc3VsdC50LCBIYXozbGNvcmUuRXZhbHVhdG9yU3RhdGUudCksXG4gICAgICBIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5lcnJvcixcbiAgICApO1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KChzdHJpbmcsIHZhbHVlKSk7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHIgPT4gciB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubGV0IHdvcmsgPSAocmVzOiBSZXF1ZXN0LnZhbHVlKTogUmVzcG9uc2UudmFsdWUgPT5cbiAgc3dpdGNoIChcbiAgICBIYXozbGNvcmUuRXZhbHVhdG9yLmV2YWx1YXRlKEhhejNsY29yZS5CdWlsdGlucy5lbnZfaW5pdCwge2Q6IHJlc30pXG4gICkge1xuICB8IGV4Y2VwdGlvbiAoSGF6M2xjb3JlLkV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihyZWFzb24pKSA9PlxuICAgIHByaW50X2VuZGxpbmUoXG4gICAgICBcIkV2YWx1YXRvckVycm9yOlwiICsrIEhhejNsY29yZS5FdmFsdWF0b3JFcnJvci5zaG93KHJlYXNvbiksXG4gICAgKTtcbiAgICBFcnJvcihIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5FdmF1bGF0b3JFcnJvcihyZWFzb24pKTtcbiAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgcHJpbnRfZW5kbGluZShcIkVYTjpcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgRXJyb3IoXG4gICAgICBIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5Vbmtub3duRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleG4pKSxcbiAgICApO1xuICB8IChzdGF0ZSwgcmVzdWx0KSA9PiBPaygocmVzdWx0LCBzdGF0ZSkpXG4gIH07XG5cbmxldCBvbl9yZXF1ZXN0ID0gKHJlcTogc3RyaW5nKTogdW5pdCA9PlxuICByZXFcbiAgfD4gUmVxdWVzdC5kZXNlcmlhbGl6ZVxuICB8PiBMaXN0Lm1hcCgoKGssIHYpKSA9PiAoaywgd29yayh2KSkpXG4gIHw+IFJlc3BvbnNlLnNlcmlhbGl6ZVxuICB8PiBKc19vZl9vY2FtbC5Xb3JrZXIucG9zdF9tZXNzYWdlO1xuXG5sZXQgc3RhcnQgPSAoKSA9PiBKc19vZl9vY2FtbC5Xb3JrZXIuc2V0X29ubWVzc2FnZShvbl9yZXF1ZXN0KTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFdvcmtlclNlcnZlcjtcblxubGV0IG5hbWUgPSBcIndvcmtlci5qc1wiOyAvLyBXb3JrZXIgZmlsZSBuYW1lXG5sZXQgdGltZW91dER1cmF0aW9uID0gMjAwMDA7IC8vIFdvcmtlciB0aW1lb3V0IGluIG1zXG5cbmxldCBpbml0V29ya2VyID0gKCkgPT4gV29ya2VyLmNyZWF0ZShuYW1lKTtcblxubGV0IHdvcmtlclJlZjogcmVmKEpzLnQoV29ya2VyLndvcmtlcihzdHJpbmcsIHN0cmluZykpKSA9XG4gIHJlZihpbml0V29ya2VyKCkpO1xuXG5sZXQgdGltZW91dElkID0gcmVmKE5vbmUpO1xuXG5sZXQgcmVzdGFydF93b3JrZXIgPSAoKTogdW5pdCA9PiB7XG4gIHdvcmtlclJlZi5jb250ZW50cyMjdGVybWluYXRlO1xuICB3b3JrZXJSZWYuY29udGVudHMgPSBpbml0V29ya2VyKCk7XG59O1xuXG5sZXQgcmVxdWVzdCA9XG4gICAgKFxuICAgICAgcmVxOiBSZXF1ZXN0LnQsXG4gICAgICB+aGFuZGxlcjogUmVzcG9uc2UudCA9PiB1bml0LFxuICAgICAgfnRpbWVvdXQ6IFJlcXVlc3QudCA9PiB1bml0LFxuICAgIClcbiAgICA6IHVuaXQgPT4ge1xuICBsZXQgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlciA9IHdvcmtlciA9PiB7XG4gICAgd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICBEb20uaGFuZGxlcihldnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRpbWVvdXRJZC5jb250ZW50cykge1xuICAgICAgICB8IFNvbWUoaWQpID0+IERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKVxuICAgICAgICB8IE5vbmUgPT4gKClcbiAgICAgICAgfTtcbiAgICAgICAgdGltZW91dElkLmNvbnRlbnRzID0gTm9uZTsgLyogQ2xlYXIgdGltZW91dCBhZnRlciByZXNwb25zZSAqL1xuICAgICAgICBldnQjIy5kYXRhIHw+IFJlc3BvbnNlLmRlc2VyaWFsaXplIHw+IGhhbmRsZXI7XG4gICAgICAgIEpzLl90cnVlO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLyogSWYgdGhlcmUncyBhbiBvbmdvaW5nIHJlcXVlc3QsIHRlcm1pbmF0ZSB0aGUgd29ya2VyIGFuZCByZWluaXRpYWxpemUgKi9cbiAgc3dpdGNoICh0aW1lb3V0SWQuY29udGVudHMpIHtcbiAgfCBTb21lKGlkKSA9PlxuICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKTtcbiAgICByZXN0YXJ0X3dvcmtlcigpO1xuICB8IE5vbmUgPT4gKClcbiAgfTtcblxuICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG5cbiAgLy8gcHJpbnRfZW5kbGluZShSZXF1ZXN0LnNlcmlhbGl6ZShyZXEpKTtcblxuICB3b3JrZXJSZWYuY29udGVudHMjI3Bvc3RNZXNzYWdlKFJlcXVlc3Quc2VyaWFsaXplKHJlcSkpO1xuXG4gIGxldCBvblRpbWVvdXQgPSAoKTogdW5pdCA9PiB7XG4gICAgcmVzdGFydF93b3JrZXIoKTtcbiAgICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG4gICAgdGltZW91dChyZXEpO1xuICB9O1xuXG4gIHRpbWVvdXRJZC5jb250ZW50cyA9XG4gICAgU29tZShcbiAgICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dChcbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayhvblRpbWVvdXQpLFxuICAgICAgICBmbG9hdF9vZl9pbnQodGltZW91dER1cmF0aW9uKSxcbiAgICAgICksXG4gICAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oYWN0aW9uKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgIF0pLFxuICAgIFtpY29uXSxcbiAgKTtcblxubGV0IGJ1dHRvbl9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24pID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wibmFtZWQtbWVudS1pdGVtXCJdKSwgQXR0ci5vbl9jbGljayhhY3Rpb24pXSksXG4gICAgW2J1dHRvbihpY29uLCBfID0+IEVmZmVjdC5JZ25vcmUpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG5cbmxldCBidXR0b25fZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24sIH5kaXNhYmxlZDogYm9vbCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdIEAgKGRpc2FibGVkID8gW1wiZGlzYWJsZWRcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgICBBdHRyLm9uX21vdXNlZG93bihfID0+IHVubGVzcyhkaXNhYmxlZCwgYWN0aW9uKSksXG4gICAgICBdKSxcbiAgICBbaWNvbl0sXG4gICk7XG5cbmxldCBsaW5rID0gKH50b29sdGlwPVwiXCIsIGljb24sIHVybCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiaWNvblwiXSksXG4gICAgW1xuICAgICAgYShcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgQXR0ci5baHJlZih1cmwpLCB0aXRsZSh0b29sdGlwKSwgY3JlYXRlKFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpXSxcbiAgICAgICAgICApLFxuICAgICAgICBbaWNvbl0sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG5cbmxldCB0b2dnbGUgPSAofnRvb2x0aXA9XCJcIiwgbGFiZWwsIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcInRvZ2dsZS1zd2l0Y2hcIl0gQCAoYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhhY3Rpb24pLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInRvZ2dsZS1rbm9iXCJdKSwgW3RleHQobGFiZWwpXSldLFxuICApO1xuXG5sZXQgdG9nZ2xlX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcIm5hbWVkLW1lbnUtaXRlbVwiXSBAIChhY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGFjdGlvbiksXG4gICAgICBdKSxcbiAgICBbdG9nZ2xlKGljb24sIGFjdGl2ZSwgXyA9PiBFZmZlY3QuSWdub3JlKSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT4ge1xuICAvKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NzI3Njgvc3R5bGluZy1hbi1pbnB1dC10eXBlLWZpbGUtYnV0dG9uICovXG4gIGxhYmVsKFxuICAgIH5hdHRyPUF0dHIuZm9yXyhpZCksXG4gICAgW1xuICAgICAgVmRvbV9pbnB1dF93aWRnZXRzLkZpbGVfc2VsZWN0LnNpbmdsZShcbiAgICAgICAgfmV4dHJhX2F0dHJzPVtBdHRyLmNsYXNzXyhcImZpbGUtc2VsZWN0LWJ1dHRvblwiKSwgQXR0ci5pZChpZCldLFxuICAgICAgICB+YWNjZXB0PVtgRXh0ZW5zaW9uKFwianNvblwiKV0sXG4gICAgICAgIH5vbl9pbnB1dCxcbiAgICAgICAgKCksXG4gICAgICApLFxuICAgICAgZGl2KH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJpY29uXCJdKSwgQXR0ci50aXRsZSh0b29sdGlwKV0pLCBbaWNvbl0pLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJuYW1lZC1tZW51LWl0ZW1cIl0pXSksXG4gICAgW2ZpbGVfc2VsZWN0X2J1dHRvbihpZCwgaWNvbiwgb25faW5wdXQpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG4iLCIvLyBjb3BpZWQgZnJvbSBoYXplbFxuXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbC5KcztcblxubW9kdWxlIEpTX01BUCA9IHtcbiAgY2xhc3MgdHlwZSB0ICgnaywgJ3YpID0ge1xuICAgIHB1YiBnZXQ6ICdrID0+IEpzLm1ldGgoSnMub3B0ZGVmKCd2KSk7XG4gICAgcHViIGhhczogJ2sgPT4gSnMubWV0aChib29sKTtcbiAgICBwdWIgc2V0OiAoJ2ssICd2KSA9PiBKcy5tZXRoKHQoJ2ssICd2KSk7XG4gIH07XG59O1xuXG5tb2R1bGUgSnNNYXAgPSB7XG4gIHR5cGUgdCgnaywgJ3YpID0gSnMudChKU19NQVAudCgnaywgJ3YpKTtcblxuICBsZXQgbWs6ICdrICd2LiB1bml0ID0+IHQoJ2ssICd2KSA9XG4gICAgKCkgPT4ge1xuICAgICAgbGV0IGMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX01hcDtcbiAgICAgIFslanMgbmV3IGNdO1xuICAgIH07XG59O1xuXG5tb2R1bGUgSnNXZWFrTWFwID0ge1xuICB0eXBlIHQoJ2ssICd2KSA9IEpzLnQoSlNfTUFQLnQoJ2ssICd2KSk7XG5cbiAgbGV0IG1rOiAnayAndi4gdW5pdCA9PiB0KCdrLCAndikgPVxuICAgICgpID0+IHtcbiAgICAgIGxldCBjID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwO1xuICAgICAgWyVqcyBuZXcgY107XG4gICAgfTtcbn07XG5cbmxldCBpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbDogSnMuVW5zYWZlLnRvcCA9PiBKcy50KGJvb2wpID1cbiAgLy8gQmFzZWQgb24gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODUxMTI4MS9jaGVjay1pZi1hLXZhbHVlLWlzLWFuLW9iamVjdC1pbi1qYXZhc2NyaXB0XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIoXG4gICAgXCJcbiAgZnVuY3Rpb24gKHZhbCkge1xuICAgIHJldHVybiAodmFsID09PSBudWxsKSB8fCAodHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykgJiYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnKTtcbiAgfVwiLFxuICApO1xuXG5sZXQgaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uOiAnYS4gJ2EgPT4gYm9vbCA9XG4gIHggPT4gSnMudG9fYm9vbChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbChPYmoubWFnaWMoeCkpKTtcblxudHlwZSB0KCdrLCAndikgPSB7XG4gIHByaW1pdGl2ZV9rZXlzOiBKc01hcC50KCdrLCAndiksXG4gIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLnQoJ2ssICd2KSxcbn07XG5cbmxldCBtayA9ICgpOiB0KCdrLCAndikgPT4ge1xuICB7cHJpbWl0aXZlX2tleXM6IEpzTWFwLm1rKCksIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLm1rKCl9O1xufTtcblxubGV0IGdldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrKTogb3B0aW9uKCd2KSA9PiB7XG4gIGxldCBtYXAgPVxuICAgIGlmIChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24oaykpIHtcbiAgICAgIHQucHJpbWl0aXZlX2tleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQubm9uX3ByaW1pdGl2ZV9rZXlzO1xuICAgIH07XG4gIEpzLk9wdGRlZi50b19vcHRpb24obWFwIyNnZXQoaykpO1xufTtcblxubGV0IHNldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrLCB2OiAndik6IHVuaXQgPT4ge1xuICBsZXQgbWFwID1cbiAgICBpZiAoaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uKGspKSB7XG4gICAgICB0LnByaW1pdGl2ZV9rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0Lm5vbl9wcmltaXRpdmVfa2V5cztcbiAgICB9O1xuICBpZ25vcmUobWFwIyNzZXQoaywgdikpO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgbWtfc2Vjb25kYXJ5OiBzdHJpbmcgPT4gUGllY2UudCA9XG4gIGNvbnRlbnQgPT4gU2Vjb25kYXJ5KHtpZDogSWQubWsoKSwgY29udGVudDogV2hpdGVzcGFjZShjb250ZW50KX0pO1xuXG5sZXQgbWtfdGlsZTogKEZvcm0udCwgbGlzdChsaXN0KFBpZWNlLnQpKSkgPT4gUGllY2UudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgY2hpbGRyZW4pID0+XG4gICAgVGlsZSh7XG4gICAgICBpZDogSWQubWsoKSxcbiAgICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgICAgbW9sZDogZm9ybS5tb2xkLFxuICAgICAgc2hhcmRzOiBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGZvcm0ubGFiZWwpLFxuICAgICAgY2hpbGRyZW4sXG4gICAgfSk7XG5cbmxldCBta19hbmNlc3RvcjogKEZvcm0udCwgKGxpc3QoU2VnbWVudC50KSwgbGlzdChTZWdtZW50LnQpKSkgPT4gQW5jZXN0b3IudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgKGwsIF8pIGFzIGNoaWxkcmVuKSA9PiB7XG4gICAgaWQ6IElkLm1rKCksXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczpcbiAgICAgIExpc3QubWFwaSgoaSwgXykgPT4gaSwgZm9ybS5sYWJlbClcbiAgICAgIHw+IFV0aWwuTGlzdFV0aWwuc3BsaXRfbihMaXN0Lmxlbmd0aChsKSArIDEpLFxuICAgIGNoaWxkcmVuLFxuICB9O1xuXG5sZXQgbWtfbW9ub3RpbGUgPSBmb3JtID0+IG1rX3RpbGUoZm9ybSwgW10pOyAvL1RPRE86IGFzc2VydHNcbmxldCBpbnQgPSBuID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKEV4cCwgbikpO1xubGV0IGV4cCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoRXhwLCB2KSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rX2F0b21pYyhQYXQsIHYpKTtcbmxldCBta19wYXJlbnNfZXhwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX2Z1biA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19mdW5fYW5jZXN0b3IgPSBta19hbmNlc3RvcihGb3JtLmdldChcImZ1bl9cIikpO1xubGV0IG1rX3BhcmVuc19hbmNlc3RvciA9IG1rX2FuY2VzdG9yKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfbGV0X2FuY2VzdG9yID0gbWtfYW5jZXN0b3IoRm9ybS5nZXQoXCJsZXRfXCIpKTtcbmxldCBwbHVzID0gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJwbHVzXCIpKTtcblxubGV0IGxfc2libGluZzogU2VnbWVudC50ID0gW3BsdXMsIEdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXTtcbmxldCByX3NpYmxpbmc6IFNlZ21lbnQudCA9IFtta19wYXJlbnNfZXhwKFtbaW50KFwiMVwiKSwgcGx1cywgaW50KFwiMlwiKV1dKV07XG5cbmxldCBjb250ZW50OiBTZWdtZW50LnQgPSBbZXhwKFwiZm9vXCIpLCBHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb25jYXZlfSldO1xuXG5sZXQgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCA9IFtcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwiYmFyXCIpXV0pXSwgW10pKSxcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwidGF6XCIpXV0pXSwgW10pKSxcbiAgKG1rX2xldF9hbmNlc3RvcigoW1twYXQoXCJmb29cIildXSwgW10pKSwgKFtdLCBbaW50KFwiMlwiKV0pKSxcbl07XG5cbmxldCBiYWNrcGFjazogQmFja3BhY2sudCA9IFtTZWxlY3Rpb24ubWsoW2V4cChcImZvb1wiKV0pXTtcblxubGV0IHppcHBlcjogWmlwcGVyLnQgPSB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKGNvbnRlbnQpLFxuICBiYWNrcGFjayxcbiAgcmVsYXRpdmVzOiB7XG4gICAgc2libGluZ3M6IChsX3NpYmxpbmcsIHJfc2libGluZyksXG4gICAgYW5jZXN0b3JzLFxuICB9LFxuICBjYXJldDogT3V0ZXIsXG59O1xuXG4vLyBUT0RPIE1ha2Ugc3VyZSB1c2luZyB0aGlzIGZvciBhbGwgdGhlIGZvcm1zIHRoYXQgc2hvdWxkLCBsaWtlIHdpbGQgYW5kIG5pbFxuLy8gVE9ETyBTaG91bGQgdGhpcyBoYXZlIGl0cyBvd24gSUQgZ2VuZXJhdG9yIG9yIGlzIHVzaW5nIHRoZSBFeGFtcGxlIG9uZSBmaW5lP1xubGV0IGNvbnNfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb25zX2V4cFwiKSk7XG5sZXQgbGlzdF9jb25jYXRfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsaXN0X2NvbmNhdFwiKSk7XG5sZXQgY29uc19wYXQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbnNfcGF0XCIpKTtcbmxldCBzZXEgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNlbGwtam9pblwiKSk7XG5sZXQgZXhwID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoRXhwLCBbXSkpKSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoUGF0LCBbXSkpKSk7XG5sZXQgdHlwID0gdCA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt0XSwgTW9sZC4obWtfb3AoVHlwLCBbXSkpKSk7XG5sZXQgdHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKFRQYXQsIFtdKSkpKTtcbmxldCB0eXBfcGF0X3ZhciA9IHQgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoVFBhdCwgdCkpO1xubGV0IG1rX3BhcmVuc19leHAgPSBta190aWxlKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfcGFyZW5zX3BhdCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfcGF0XCIpKTtcbmxldCBta19wYXJlbnNfdHlwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc190eXBcIikpO1xubGV0IG1rX2xpc3RfZXhwID0gbWtfdGlsZShGb3JtLmdldChcImxpc3RfbGl0X2V4cFwiKSk7XG5sZXQgbWtfbGlzdF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGlzdF9saXRfcGF0XCIpKTtcbmxldCBta19saXN0X3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJsaXN0X3R5cFwiKSk7XG5sZXQgbWtfZm9yYWxsID0gbWtfdGlsZShGb3JtLmdldChcImZvcmFsbFwiKSk7XG5sZXQgbWtfcmVjID0gbWtfdGlsZShGb3JtLmdldChcInJlY1wiKSk7XG5sZXQgYXJyb3cgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInR5cGUtYXJyb3dcIikpO1xubGV0IHVuYXJ5X21pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ1bmFyeV9taW51c1wiKSk7XG5sZXQgdW5hcnlfbm90ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJub3RcIikpO1xubGV0IHBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBsdXNcIikpO1xubGV0IG1pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJtaW51c1wiKSk7XG5sZXQgdGltZXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInRpbWVzXCIpKTtcbmxldCBwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicG93ZXJcIikpO1xubGV0IGRpdmlkZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZGl2aWRlXCIpKTtcbmxldCBlcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImVxdWFsc1wiKSk7XG5sZXQgbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibm90X2VxdWFsc1wiKSk7XG5sZXQgbHQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0XCIpKTtcbmxldCBsdGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0ZVwiKSk7XG5sZXQgZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0XCIpKTtcbmxldCBndGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0ZVwiKSk7XG5sZXQgZnBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZwbHVzXCIpKTtcbmxldCBmbWludXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZtaW51c1wiKSk7XG5sZXQgZnRpbWVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmdGltZXNcIikpO1xubGV0IGZwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZnBvd2VyXCIpKTtcbmxldCBmZGl2aWRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZGl2aWRlXCIpKTtcbmxldCBmZXF1YWxzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZXF1YWxzXCIpKTtcbmxldCBmbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZm5vdF9lcXVhbHNcIikpO1xubGV0IGZsdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmx0XCIpKTtcbmxldCBmbHRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmbHRlXCIpKTtcbmxldCBmZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZndFwiKSk7XG5sZXQgZmd0ZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmd0ZVwiKSk7XG5sZXQgc2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2VxdWFsc1wiKSk7XG5sZXQgc2NvbmNhdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2NvbmNhdFwiKSk7XG5sZXQgbG9naWNhbF9hbmQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImxvZ2ljYWxfYW5kXCIpKTtcbmxldCBsb2dpY2FsX29yID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsb2dpY2FsX29yXCIpKTtcbmxldCBjb21tYV9leHAgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbW1hX2V4cFwiKSk7XG5sZXQgY29tbWFfcGF0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb21tYV9wYXRcIikpO1xubGV0IGNvbW1hX3R5cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29tbWFfdHlwXCIpKTtcbmxldCBwaXBlbGluZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicGlwZWxpbmVcIikpO1xubGV0IG5pbCA9ICgpID0+IGV4cChcIltdXCIpO1xubGV0IGRlZmVycmFsID0gKCkgPT4gZXhwKFwiX1wiKTtcbmxldCB0eXBlYW5uID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBlYW5uXCIpKTtcbmxldCBta190eXBmdW4gPSBta190aWxlKEZvcm0uZ2V0KFwidHlwZnVuXCIpKTtcbmxldCBta19mdW4gPSBta190aWxlKEZvcm0uZ2V0KFwiZnVuX1wiKSk7XG5sZXQgbWtfYXBfZXhwX3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJhcF9leHBfdHlwXCIpKTtcbmxldCBta19maXggPSBta190aWxlKEZvcm0uZ2V0KFwiZml4XCIpKTtcbmxldCBta19hcF9leHAgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfZXhwXCIpKTtcbmxldCBta19hcF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfcGF0XCIpKTtcbmxldCBta19sZXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGV0X1wiKSk7XG5sZXQgbWtfdHlhbGlhcyA9IG1rX3RpbGUoRm9ybS5nZXQoXCJ0eXBlX2FsaWFzXCIpKTtcbmxldCBta19pZiA9IG1rX3RpbGUoRm9ybS5nZXQoXCJpZl9cIikpO1xubGV0IG1rX3Rlc3QgPSBta190aWxlKEZvcm0uZ2V0KFwidGVzdFwiKSk7XG5sZXQgbWtfY2FzZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJjYXNlXCIpKTtcbmxldCBta19ydWxlID0gbWtfdGlsZShGb3JtLmdldChcInJ1bGVcIikpO1xubGV0IG1rX2hpZGUgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2hpZGVcIikpO1xubGV0IG1rX2V2YWwgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2V2YWxcIikpO1xubGV0IG1rX3BhdXNlID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9wYXVzZVwiKSk7XG5sZXQgbWtfZGVidWcgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2RlYnVnXCIpKTtcbmxldCBta191bnF1b3RlID0gbWtfdGlsZShGb3JtLmdldChcInVucXVvdGVcIikpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IG1rX3NlY29uZGFyeShGb3JtLmxpbmVicmVhayk7XG5sZXQgc3BhY2UgPSAoKSA9PiBta19zZWNvbmRhcnkoRm9ybS5zcGFjZSk7XG5cbmxldCBta19leGFtcGxlID0gc3RyID0+IHtcbiAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoc3RyKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHopID0+IFppcHBlci56aXAoeilcbiAgfTtcbn07XG5cbi8qIEludCBwYXJhbSBiZWxvdyBzaG91bGQgYmUgfiB3aWR0aCBvZiBzaWRlYmFyICovXG5sZXQgYWJicmV2aWF0ZSA9IFV0aWwuU3RyaW5nVXRpbC5hYmJyZXZpYXRlKDIwKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuLy8gVE9ETyBNYWtlIHVuaWZpZWQgd2F5IG9mIHVzaW5nIGNvbnNpc3RlbnQgbWV0YXZhcmlhYmxlcyBmb3Igc3ludGFjdGljIGZvcm1zXG4vLyBUT0RPIFVzZSAvdGF1IGluc3RlYWQgb2YgdHkgd2hlbiBjYW4gZG8gdGhhdCBhbmQgc3RpbGwgaGF2ZSBoaWdobGlnaHRpbmcgd29ya1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxpc3RfZXhhbXBsZXMgPVxuICB8IEludFxuICB8IFR1cGxlXG4gIHwgQ29uczFcbiAgfCBDb25zMjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBmdW5fZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlIC8qIFRPRE86IE1heWJlIG5vIGdvb2QgZXhhbXBsZXMgd2l0aCBNdWx0aWhvbGU/ICovXG4gIHwgVmFyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZ1bl9leGFtcGxlcyA9XG4gIHwgQmFzaWNcbiAgfCBXaWxkXG4gIHwgSW50TGl0XG4gIHwgRmxvYXRMaXRcbiAgfCBCb29sTGl0XG4gIHwgU3RyTGl0XG4gIHwgVHJpdlxuICB8IExpc3ROaWxcbiAgfCBMaXN0TGl0XG4gIHwgQ29uc0hkXG4gIHwgQ29uc1NuZFxuICB8IFZhckluY3JcbiAgfCBWYXJBbmRcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsZXRfZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgV2lsZFxuICB8IEludExpdFxuICB8IEZsb2F0TGl0XG4gIHwgQm9vbExpdFxuICB8IFN0ckxpdFxuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IENvbnNIZFxuICB8IENvbnNTbmRcbiAgfCBWYXJcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBudW1lcmljX2Jpbl9vcF9leGFtcGxlcyA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuVHJ1ZVxuICB8IExlc3NUaGFuRmFsc2VcbiAgfCBMZXNzVGhhbkVxdWFsTGVzc1xuICB8IExlc3NUaGFuRXF1YWxFcXVhbFxuICB8IExlc3NUaGFuRXF1YWxGYWxzZVxuICB8IEdyZWF0ZXJUaGFuVHJ1ZVxuICB8IEdyZWF0ZXJUaGFuRmFsc2VcbiAgfCBHcmVhdGVyVGhhbkVxdWFsR3JlYXRlclxuICB8IEdyZWF0ZXJUaGFuRXF1YWxFcXVhbFxuICB8IEdyZWF0ZXJUaGFuRXF1YWxGYWxzZVxuICB8IEVxdWFsRmFsc2VcbiAgfCBFcXVhbFRydWU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9pZCA9XG4gIHwgUmVjVHlwXG4gIHwgRGVmZXJyYWxcbiAgfCBMaXN0KGxpc3RfZXhhbXBsZXMpXG4gIHwgVHlwRnVuKHR5cGZ1bl9leGFtcGxlcylcbiAgfCBGdW4oZnVuX2V4YW1wbGVzKVxuICB8IEZpeDFcbiAgfCBGaXgyXG4gIHwgVHVwbGUxXG4gIHwgVHVwbGUyXG4gIHwgTGV0KGxldF9leGFtcGxlcylcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgQ29uQXBcbiAgfCBEZWZlcnJlZEFwXG4gIHwgSWZUcnVlXG4gIHwgSWZGYWxzZVxuICB8IFNlcUJhc2ljXG4gIHwgU2VxVGVzdFxuICB8IFRlc3RUcnVlXG4gIHwgVGVzdEZhbHNlXG4gIHwgSW50VW5hcnlNaW51c1xuICB8IEludChudW1lcmljX2Jpbl9vcF9leGFtcGxlcylcbiAgfCBGbG9hdChudW1lcmljX2Jpbl9vcF9leGFtcGxlcylcbiAgfCBBbmRGYWxzZVxuICB8IEFuZFRydWVcbiAgfCBPckZhbHNlXG4gIHwgT3JUcnVlXG4gIHwgU3RyaW5nRXF1YWxGYWxzZVxuICB8IFN0cmluZ0VxdWFsVHJ1ZVxuICB8IENhc2VXaWxkU2ltcGxlXG4gIHwgQ2FzZVdpbGRUdXBsZVxuICB8IENhc2VJbnRcbiAgfCBDYXNlQm9vbFxuICB8IFBpcGVsaW5lMVxuICB8IEZpbHRlclN0ZXBcbiAgfCBGaWx0ZXJFdmFsXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVyU2VsZWN0b3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZSA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICB0ZXJtOiBTZWdtZW50LnQsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGF0X3N1Yl9mb3JtX2lkID1cbiAgfCBCYXNlXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlXG4gIHwgV2lsZFxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IExpc3RDb25zXG4gIHwgVmFyXG4gIHwgVHVwbGVcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX2lkID1cbiAgfCBFbXB0eUhvbGVFeHBcbiAgfCBNdWx0aUhvbGVFeHBcbiAgfCBUcml2RXhwXG4gIHwgRGVmZXJyYWxFeHBcbiAgfCBCb29sRXhwXG4gIHwgSW50RXhwXG4gIHwgRmxvYXRFeHBcbiAgfCBTdHJpbmdFeHBcbiAgfCBWYXJFeHBcbiAgfCBDdHJFeHBcbiAgfCBMaXN0RXhwXG4gIHwgQ29uc0V4cFxuICB8IExpc3RDb25jYXRFeHBcbiAgfCBUeXBGdW5jdGlvbkV4cFxuICB8IEZ1bmN0aW9uRXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUdXBsZUV4cFxuICB8IFR1cGxlMkV4cFxuICB8IFR1cGxlM0V4cFxuICB8IExldEV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgRml4RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUeXBGdW5BcEV4cFxuICB8IEZ1bkFwRXhwXG4gIHwgQ29uQXBFeHBcbiAgfCBEZWZlcnJlZEFwRXhwXG4gIHwgSWZFeHBcbiAgfCBTZXFFeHBcbiAgfCBUZXN0RXhwXG4gIHwgVW5PcEV4cChPcGVyYXRvcnMub3BfdW4pXG4gIHwgQmluT3BFeHAoT3BlcmF0b3JzLm9wX2JpbilcbiAgfCBDYXNlRXhwXG4gIHwgVHlBbGlhc0V4cFxuICB8IEVtcHR5SG9sZVBhdFxuICB8IE11bHRpSG9sZVBhdFxuICB8IFdpbGRQYXRcbiAgfCBJbnRQYXRcbiAgfCBGbG9hdFBhdFxuICB8IEJvb2xQYXRcbiAgfCBTdHJQYXRcbiAgfCBUcml2UGF0XG4gIHwgVmFyUGF0XG4gIHwgQ3RyUGF0XG4gIHwgTGlzdExpdFBhdFxuICB8IExpc3ROaWxQYXRcbiAgfCBDb25zUGF0XG4gIHwgQ29uczJQYXRcbiAgfCBUdXBsZVBhdFxuICB8IFR1cGxlMlBhdFxuICB8IFR1cGxlM1BhdFxuICB8IEFwUGF0XG4gIHwgVHlwQW5uUGF0XG4gIHwgRW1wdHlIb2xlVHlwXG4gIHwgTXVsdGlIb2xlVHlwXG4gIHwgSW50VHlwXG4gIHwgRmxvYXRUeXBcbiAgfCBCb29sVHlwXG4gIHwgU3RyVHlwXG4gIHwgVmFyVHlwXG4gIHwgTGlzdFR5cFxuICB8IEZvcmFsbFR5cFxuICB8IFJlY1R5cFxuICB8IEFycm93VHlwXG4gIHwgQXJyb3czVHlwXG4gIHwgVHVwbGVUeXBcbiAgfCBUdXBsZTBUeXBcbiAgfCBUdXBsZTJUeXBcbiAgfCBUdXBsZTNUeXBcbiAgfCBMYWJlbGxlZFN1bVR5cFxuICB8IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBFbXB0eUhvbGVUUGF0XG4gIHwgTXVsdGlIb2xlVFBhdFxuICB8IFZhclRQYXRcbiAgfCBQaXBlbGluZUV4cFxuICB8IEZpbHRlclBhdXNlXG4gIHwgRmlsdGVyRXZhbFxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlclNlbGVjdG9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZvcm0gPSB7XG4gIGlkOiBmb3JtX2lkLFxuICBzeW50YWN0aWNfZm9ybTogU2VnbWVudC50LFxuICBleHBhbmRhYmxlX2lkOiBvcHRpb24oKElkLnQsIFNlZ21lbnQudCkpLFxuICBleHBsYW5hdGlvbjogc3RyaW5nLFxuICBleGFtcGxlczogbGlzdChleGFtcGxlKSxcbn07XG5cbi8vIEhBTk5BSCAtIFRPRE86IE5vdCBzdXJlIHRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIGZvcm1faWQgLSBtYXliZSBqdXN0IG9uZSBpZFxuLy8gTUFZQkUgZG9uJ3QgZXZlbiBuZWVkIGFuIGlkIGF0IGFsbCBmb3IgdGhlIGdyb3VwIC0ganVzdCB1c2UgdGhlIG1vc3Qgc3BlY2lmaWMgKDFzdCkgZm9ybSBpZCBpbiBmb3Jtc1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cF9pZCA9XG4gIHwgRW1wdHlIb2xlRXhwXG4gIHwgTXVsdGlIb2xlRXhwXG4gIHwgVHJpdkV4cFxuICB8IERlZmVycmFsRXhwXG4gIHwgQm9vbEV4cFxuICB8IEludEV4cFxuICB8IEZsb2F0RXhwXG4gIHwgU3RyaW5nRXhwXG4gIHwgVmFyRXhwXG4gIHwgQ3RyRXhwXG4gIHwgTGlzdEV4cFxuICB8IENvbnNFeHBcbiAgfCBMaXN0Q29uY2F0RXhwXG4gIHwgVHlwRnVuY3Rpb25FeHBcbiAgfCBGdW5jdGlvbkV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHVwbGVFeHBcbiAgfCBUdXBsZTJFeHBcbiAgfCBUdXBsZTNFeHBcbiAgfCBMZXRFeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IFR5cEZ1bkFwRXhwXG4gIHwgRml4RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBGdW5BcEV4cFxuICB8IENvbkFwRXhwXG4gIHwgRGVmZXJyZWRBcEV4cFxuICB8IElmRXhwXG4gIHwgU2VxRXhwXG4gIHwgVGVzdEV4cFxuICB8IFVuT3BFeHAoT3BlcmF0b3JzLm9wX3VuKVxuICB8IEJpbk9wRXhwKE9wZXJhdG9ycy5vcF9iaW4pXG4gIHwgQ2FzZUV4cFxuICB8IFR5QWxpYXNFeHBcbiAgfCBQaXBlbGluZUV4cFxuICB8IEVtcHR5SG9sZVBhdFxuICB8IE11bHRpSG9sZVBhdFxuICB8IFdpbGRQYXRcbiAgfCBJbnRQYXRcbiAgfCBGbG9hdFBhdFxuICB8IEJvb2xQYXRcbiAgfCBTdHJQYXRcbiAgfCBUcml2UGF0XG4gIHwgVmFyUGF0XG4gIHwgQ3RyUGF0XG4gIHwgTGlzdExpdFBhdFxuICB8IExpc3ROaWxQYXRcbiAgfCBDb25zUGF0XG4gIHwgQ29uczJQYXRcbiAgfCBUdXBsZVBhdFxuICB8IFR1cGxlMlBhdFxuICB8IFR1cGxlM1BhdFxuICB8IEFwUGF0XG4gIHwgVHlwQW5uUGF0XG4gIHwgRW1wdHlIb2xlVHlwXG4gIHwgTXVsdGlIb2xlVHlwXG4gIHwgSW50VHlwXG4gIHwgRmxvYXRUeXBcbiAgfCBCb29sVHlwXG4gIHwgU3RyVHlwXG4gIHwgVmFyVHlwXG4gIHwgTGlzdFR5cFxuICB8IEZvcmFsbFR5cFxuICB8IFJlY1R5cFxuICB8IEFycm93VHlwXG4gIHwgQXJyb3czVHlwXG4gIHwgVHVwbGVUeXBcbiAgfCBUdXBsZTBUeXBcbiAgfCBUdXBsZTJUeXBcbiAgfCBUdXBsZTNUeXBcbiAgfCBMYWJlbGxlZFN1bVR5cFxuICB8IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBFbXB0eUhvbGVUUGF0XG4gIHwgTXVsdGlIb2xlVFBhdFxuICB8IFZhclRQYXRcbiAgfCBGaWx0ZXJQYXVzZVxuICB8IEZpbHRlckV2YWxcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJTZWxlY3RvcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cCA9IHtcbiAgaWQ6IGdyb3VwX2lkLFxuICBmb3JtczogbGlzdChmb3JtKSAvLyBPcmRlcmVkIC0gbW9yZSBzcGVjaWZpYyB0byBsZXNzIHNwZWNpZmljXG59O1xuXG5tb2R1bGUgU2ltcGxlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBncm91cF9pZCxcbiAgICBmb3JtX2lkLFxuICAgIGFic3RyYWN0OiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpLFxuICAgIGV4cGxhbmF0aW9uOiBzdHJpbmcsXG4gICAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZSksXG4gIH07XG5cbiAgbGV0IHRvX2dyb3VwID1cbiAgICAgIChcbiAgICAgICAge1xuICAgICAgICAgIGV4cGxhbmF0aW9uLFxuICAgICAgICAgIGFic3RyYWN0OiAoc3ludGFjdGljX2Zvcm0sIGNvbG9yaW5ncyksXG4gICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgfTogdCxcbiAgICAgICkgPT4gKFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGNvbG9yaW5ncyxcbiAgICB7XG4gICAgICBpZDogZ3JvdXBfaWQsXG4gICAgICBmb3JtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGZvcm1faWQsXG4gICAgICAgICAgc3ludGFjdGljX2Zvcm0sXG4gICAgICAgICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICAgICAgICBleHBsYW5hdGlvbjogXCJcIixcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgKTtcblxuICBsZXQgbWtfMSA9XG4gICAgICAoKG46IHN0cmluZywgaWQ6IElkLnQpLCBta19mb3JtOiBQaWVjZS50ID0+IFNlZ21lbnQudClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IHAgPSBFeGFtcGxlLmV4cChuKTtcbiAgICAobWtfZm9ybShwKSwgWyhQaWVjZS5pZChwKSwgaWQpXSk7XG4gIH07XG5cbiAgbGV0IG1rXzIgPVxuICAgICAgKFxuICAgICAgICAobjE6IHN0cmluZywgaWRfMTogSWQudCksXG4gICAgICAgIChuMjogc3RyaW5nLCBpZF8yOiBJZC50KSxcbiAgICAgICAgbWtfZm9ybTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IFNlZ21lbnQudCxcbiAgICAgIClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IChwMSwgcDIpID0gKEV4YW1wbGUuZXhwKG4xKSwgRXhhbXBsZS5leHAobjIpKTtcbiAgICAobWtfZm9ybShwMSwgcDIpLCBbKFBpZWNlLmlkKHAxKSwgaWRfMSksIChQaWVjZS5pZChwMiksIGlkXzIpXSk7XG4gIH07XG5cbiAgbGV0IG1rXzMgPVxuICAgICAgKFxuICAgICAgICAobjE6IHN0cmluZywgaWRfMTogSWQudCksXG4gICAgICAgIChuMjogc3RyaW5nLCBpZF8yOiBJZC50KSxcbiAgICAgICAgKG4zOiBzdHJpbmcsIGlkXzM6IElkLnQpLFxuICAgICAgICBta19mb3JtOiAoUGllY2UudCwgUGllY2UudCwgUGllY2UudCkgPT4gU2VnbWVudC50LFxuICAgICAgKVxuICAgICAgOiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpID0+IHtcbiAgICBsZXQgKHAxLCBwMiwgcDMpID0gKFxuICAgICAgRXhhbXBsZS5leHAobjEpLFxuICAgICAgRXhhbXBsZS5leHAobjIpLFxuICAgICAgRXhhbXBsZS5leHAobjMpLFxuICAgICk7XG4gICAgKFxuICAgICAgbWtfZm9ybShwMSwgcDIsIHAzKSxcbiAgICAgIFtcbiAgICAgICAgKFBpZWNlLmlkKHAxKSwgaWRfMSksXG4gICAgICAgIChQaWVjZS5pZChwMiksIGlkXzIpLFxuICAgICAgICAoUGllY2UuaWQocDMpLCBpZF8zKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHZhcl90eXBfcGF0ID0gKG46IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcImAlc2AgYmluZHMgYSB0eXBlIHZhcmlhYmxlLlwiO1xuICB7XG4gICAgaWQ6IFZhclRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuIHw+IGFiYnJldmlhdGUgfD4gdHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdmFyX3R5cF9wYXRzID0gKG46IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFZhclRQYXQsXG4gIGZvcm1zOiBbdmFyX3R5cF9wYXQobildLFxufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IGNvZGUgPSAoY29kZTogc3RyaW5nKSA9PiB7XG4gIE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImV4ZXJjaXNlLWNvZGVcIiksIFtOb2RlLnRleHQoY29kZSldKTtcbn07XG5cbmxldCBlcXVpdiA9IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwiIOKJoSBcIildKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRXhlcmNpc2VVdGlsO1xuXG5sZXQgcHJvbXB0ID1cbiAgZGl2KFtcbiAgICBwKFtcbiAgICAgIHRleHQoXG4gICAgICAgIFwiV3JpdGUgYSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGludGVnZXIgaXMgb2RkLiBcIixcbiAgICAgICksXG4gICAgXSksXG4gICAgcChbXG4gICAgICBjb2RlKFwib2RkKG4pXCIpLFxuICAgICAgZXF1aXYsXG4gICAgICBjb2RlKFwidHJ1ZVwiKSxcbiAgICAgIHRleHQoXCIgaWZmIFwiKSxcbiAgICAgIGNvZGUoXCJuXCIpLFxuICAgICAgdGV4dChcIiBpcyBvZGQuXCIpLFxuICAgIF0pLFxuICBdKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSBOb2RlLnQ7XG4gIGxldCBkZWZhdWx0ID0gTm9kZS50ZXh0KFwiVE9ETzogcHJvbXB0XCIpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IG1vZHVsZV9uYW1lID0+XG4gICAgXCJsZXQgcHJvbXB0ID0gXCIgKysgbW9kdWxlX25hbWUgKysgXCJfcHJvbXB0LnByb21wdFxcblwiO1xufTtcblxuaW5jbHVkZSBIYXozbHNjaG9vbC5FeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcbiIsIm9wZW4gSGF6M2xjb3JlXG5cbmxldCBwcm9tcHQgPSBFeF9PZGRseVJlY3Vyc2l2ZV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIk9kZGx5IFJlY3Vyc2l2ZVwiO1xuICAgIHZlcnNpb24gPSAxO1xuICAgIG1vZHVsZV9uYW1lID0gXCJFeF9PZGRseVJlY3Vyc2l2ZVwiO1xuICAgIHByb21wdDtcbiAgICBwb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxOyBtdXRhdGlvbl90ZXN0aW5nID0gMTsgaW1wbF9ncmFkaW5nID0gMiB9O1xuICAgIHByZWx1ZGUgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgKCBbXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICBdICkgKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSAoWyAwOyAxIF0sIFsgMiBdKTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gUmlnaHQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA2O1xuICAgICAgICBwcm92aWRlZCA9IDI7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiYWx3YXlzIHJldHVybnMgZmFsc2VcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJhbHdheXMgcmV0dXJucyB0cnVlXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGhpbnQgPSBcImluY29ycmVjdCBiYXNlIGNhc2VcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgaGlkZGVuX3Rlc3RzID1cbiAgICAgIHtcbiAgICAgICAgdGVzdHMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjQyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyN1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgaGludHMgPSBbIFwiemVyb1wiIF07XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcIm9kZCBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcIm9kZFwiKSBdO1xuICB9XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEV4ZXJjaXNlVXRpbDtcblxubGV0IHByb21wdCA9XG4gIGRpdihbXG4gICAgcChbXG4gICAgICBkaXYoW1xuICAgICAgICB0ZXh0KFxuICAgICAgICAgIFwiV3JpdGUgdGVzdHMgY2FzZXMgZm9yLCBhbmQgdGhlbiBpbXBsZW1lbnQsIGEgZnVuY3Rpb24sIHRoYXQgcmVjdXJzaXZlbHkgZGV0ZXJtaW5lcyB0aGUgbnRoIGZpYm9uYWNjaSBudW1iZXIuXCIsXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICBwKFtcbiAgICAgIGNvZGUoXCJmaWIobilcIiksXG4gICAgICBlcXVpdixcbiAgICAgIHRleHQoXCJ0aGUgXCIpLFxuICAgICAgY29kZShcIm5cIiksXG4gICAgICB0ZXh0KFwidGggZmlib25hY2NpIG51bWJlciwgYXNzdW1pbmcgXCIpLFxuICAgICAgY29kZShcIm4gPj0gMC5cIiksXG4gICAgXSksXG4gIF0pO1xuIiwib3BlbiBIYXozbGNvcmVcblxubGV0IHByb21wdCA9IEV4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIlJlY3Vyc2l2ZSBGaWJvbmFjY2lcIjtcbiAgICB2ZXJzaW9uID0gMTtcbiAgICBtb2R1bGVfbmFtZSA9IFwiRXhfUmVjdXJzaXZlRmlib25hY2NpXCI7XG4gICAgcHJvbXB0O1xuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICB7IHRlc3RfdmFsaWRhdGlvbiA9IDE7IG11dGF0aW9uX3Rlc3RpbmcgPSAxOyBpbXBsX2dyYWRpbmcgPSAyIH07XG4gICAgcHJlbHVkZSA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9IChbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdLCBbXSk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDU7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiK1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID0gKFtdLCBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA1O1xuICAgICAgICBwcm92aWRlZCA9IDA7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJuXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgYmFzZSBjYXNlc1wiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgaW1wbCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgcmVjdXJzaW9uXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIGhpZGRlbl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiM1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjZcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMTNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjdcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMzRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIGhpbnRzID0gW107XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcImZpYiBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcImZpYlwiKSBdO1xuICB9XG4iLCJsZXQgZmlsZW5hbWUgPSBcImhhejNsLWRlbW9cIjtcbmxldCBsb2dfa2V5ID0gZmlsZW5hbWU7XG5sZXQgZXhlcmNpc2VzOiBsaXN0KEV4ZXJjaXNlLnNwZWMpID0gW1xuICBFeF9PZGRseVJlY3Vyc2l2ZS5leGVyY2lzZSxcbiAgRXhfUmVjdXJzaXZlRmlib25hY2NpLmV4ZXJjaXNlLFxuXTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZmVlZGJhY2tfb3B0aW9uID1cbiAgfCBUaHVtYnNVcFxuICB8IFRodW1ic0Rvd247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9tb2RlbCA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9uLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIGZvcm06IGZvcm1faWQsXG4gIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBvcHRpb24oZmVlZGJhY2tfb3B0aW9uKSxcbiAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZV9tb2RlbCksXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdyb3VwX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIHNlbGVjdGVkOiBmb3JtX2lkLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzcGVjaWZpY2l0eV9vcGVuOiBib29sLFxuICBmb3JtczogbGlzdChmb3JtX21vZGVsKSxcbiAgZ3JvdXBzOiBsaXN0KGdyb3VwX21vZGVsKSxcbn07XG5cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZ2hsaWdodCA9XG4gICAgfCBOb0hpZ2hsaWdodFxuICAgIHwgT25lKElkLnQpXG4gICAgfCBBbGw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvdzogYm9vbCxcbiAgICBzaG93X2ZlZWRiYWNrOiBib29sLFxuICAgIGhpZ2hsaWdodCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlnaGxpZ2h0X2FjdGlvbiA9XG4gICAgfCBUb2dnbGVcbiAgICB8IEhvdmVyKElkLnQpXG4gICAgfCBVbnNldEhvdmVyO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgVG9nZ2xlU2hvd1xuICAgIHwgVG9nZ2xlU2hvd0ZlZWRiYWNrXG4gICAgfCBTZXRIaWdobGlnaHQoaGlnaGxpZ2h0X2FjdGlvbik7XG5cbiAgbGV0IGluaXQgPSB7c2hvdzogdHJ1ZSwgc2hvd19mZWVkYmFjazogZmFsc2UsIGhpZ2hsaWdodDogTm9IaWdobGlnaHR9O1xufTtcblxubGV0IGluaXQ6IHQgPSB7c3BlY2lmaWNpdHlfb3BlbjogZmFsc2UsIGZvcm1zOiBbXSwgZ3JvdXBzOiBbXX07XG5cbmxldCBnZXRfZXhwbGFuYXRpb25fZmVlZGJhY2sgPVxuICAgIChncm91cF9pZDogZ3JvdXBfaWQsIGZvcm1faWQ6IGZvcm1faWQsIG1vZGVsOiB0KTogb3B0aW9uKGZlZWRiYWNrX29wdGlvbikgPT4ge1xuICBsZXQgZm9ybXMgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGZvcm06IGZvcm1fbW9kZWwpID0+IGZvcm0uZ3JvdXAgPT0gZ3JvdXBfaWQgJiYgZm9ybS5mb3JtID09IGZvcm1faWQsXG4gICAgICBtb2RlbC5mb3JtcyxcbiAgICApO1xuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PiBmb3JtLmV4cGxhbmF0aW9uX2ZlZWRiYWNrXG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGZvcm0sIGdyb3VwIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICsrIFwiLCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9leGFtcGxlX2ZlZWRiYWNrID1cbiAgICAoZ3JvdXBfaWQ6IGdyb3VwX2lkLCBmb3JtX2lkOiBmb3JtX2lkLCBleGFtcGxlX2lkOiBleGFtcGxlX2lkLCBtb2RlbDogdClcbiAgICA6IG9wdGlvbihmZWVkYmFja19vcHRpb24pID0+IHtcbiAgbGV0IGZvcm1zID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChmb3JtOiBmb3JtX21vZGVsKSA9PiBmb3JtLmdyb3VwID09IGdyb3VwX2lkICYmIGZvcm0uZm9ybSA9PSBmb3JtX2lkLFxuICAgICAgbW9kZWwuZm9ybXMsXG4gICAgKTtcblxuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PlxuICAgIGxldCBleGFtcGxlcyA9XG4gICAgICBMaXN0LmZpbHRlcihcbiAgICAgICAgKGV4YW1wbGU6IGV4YW1wbGVfbW9kZWwpID0+IGV4YW1wbGUuc3ViX2lkID09IGV4YW1wbGVfaWQsXG4gICAgICAgIGZvcm0uZXhhbXBsZXMsXG4gICAgICApO1xuICAgIHN3aXRjaCAoZXhhbXBsZXMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFtleGFtcGxlXSA9PiBTb21lKGV4YW1wbGUuZmVlZGJhY2spXG4gICAgfCBfID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkVhY2ggZ3JvdXAsIGZvcm0sIGV4YW1wbGUgdHJpcGxlIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgICArKyBcIiwgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9leGFtcGxlX2lkKGV4YW1wbGVfaWQpKVxuICAgICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGV4YW1wbGVzKSlcbiAgICAgICAgICArKyBcIiB0aW1lc1wiLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH07XG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGdyb3VwLCBmb3JtIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZm9ybV9pZChmb3JtX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9mb3JtX2luX2dyb3VwID0gKGZvcm1faWQ6IGZvcm1faWQsIGdyb3VwOiBncm91cCk6IGZvcm0gPT4ge1xuICBPcHRVdGlsLmdldF9vcl9yYWlzZShcbiAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJGb3JtIFwiXG4gICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICArKyBcIiBpcyBub3QgaW4gZ3JvdXAgXCJcbiAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZ3JvdXBfaWQoZ3JvdXAuaWQpKSxcbiAgICApLFxuICAgIExpc3QuZmluZF9vcHQoKGZvcm06IGZvcm0pID0+IGZvcm0uaWQgPT0gZm9ybV9pZCwgZ3JvdXAuZm9ybXMpLFxuICApO1xufTtcblxubGV0IGdldF9zZWxlY3RlZF9vcHRpb24gPSAoZ3JvdXA6IGdyb3VwLCBtb2RlbDogdCk6IGZvcm0gPT4ge1xuICBsZXQgc2VsZWN0ZWQgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGdyb3VwJzogZ3JvdXBfbW9kZWwpID0+IGdyb3VwJy5ncm91cCA9PSBncm91cC5pZCxcbiAgICAgIG1vZGVsLmdyb3VwcyxcbiAgICApO1xuICBzd2l0Y2ggKHNlbGVjdGVkLCBncm91cC5mb3Jtcykge1xuICB8IChbXSwgW2Zvcm0sIC4uLl9mc10pID0+IGZvcm1cbiAgfCAoW3NlbGVjdGVkXSwgXykgPT4gZ2V0X2Zvcm1faW5fZ3JvdXAoc2VsZWN0ZWQuc2VsZWN0ZWQsIGdyb3VwKVxuICB8IChbX2YxLCBfZjIsIC4uLl9mc10sIF8pID0+XG4gICAgcmFpc2UoXG4gICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICBcIkVhY2ggZ3JvdXAgc2hvdWxkIGhhdmUgb25seSBvbmUgc2VsZWN0aW9uLCBidXQgZ3JvdXAgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cC5pZCkpXG4gICAgICAgICsrIFwiIGhhcyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHNlbGVjdGVkKSlcbiAgICAgICAgKysgXCJmb3JtcyBzZWxlY3RlZFwiLFxuICAgICAgKSxcbiAgICApXG4gIHwgKF8sIFtdKSA9PlxuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJFYWNoIGdyb3VwIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZm9ybVwiKSlcbiAgfTtcbn07XG5cbmxldCBnZXRfb3B0aW9ucyA9IChncm91cDogZ3JvdXApOiBsaXN0KChmb3JtX2lkLCBTZWdtZW50LnQpKSA9PlxuICBpZiAoTGlzdC5sZW5ndGgoZ3JvdXAuZm9ybXMpIDwgMikge1xuICAgIFtdO1xuICB9IGVsc2Uge1xuICAgIExpc3QucmV2KFxuICAgICAgTGlzdC5tYXAoXG4gICAgICAgIChmb3JtOiBmb3JtKSA9PlxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZvcm0uaWQsXG4gICAgICAgICAgICBzbmQoXG4gICAgICAgICAgICAgIE9wdFV0aWwuZ2V0X29yX3JhaXNlKFxuICAgICAgICAgICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgICAgICAgICBcIkZvcm1zIHVzZWQgZm9yIGdyb3VwIG9wdGlvbnMgbXVzdCBzcGVjaWZ5IGV4cGFuZGFibGVcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGZvcm0uZXhwYW5kYWJsZV9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZ3JvdXAuZm9ybXMsXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbmxldCBnZXRfZm9ybV9hbmRfb3B0aW9ucyA9XG4gICAgKGdyb3VwOiBncm91cCwgbW9kZWw6IHQpOiAoZm9ybSwgbGlzdCgoZm9ybV9pZCwgU2VnbWVudC50KSkpID0+IHtcbiAgKGdldF9zZWxlY3RlZF9vcHRpb24oZ3JvdXAsIG1vZGVsKSwgZ2V0X29wdGlvbnMoZ3JvdXApKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1vZGUgPVxuICB8IFNjcmF0Y2hcbiAgfCBEb2N1bWVudGF0aW9uXG4gIHwgRXhlcmNpc2VzO1xuXG5sZXQgbW9kZV9vZl9zdHJpbmcgPSAoczogc3RyaW5nKTogbW9kZSA9PlxuICBzd2l0Y2ggKHMpIHtcbiAgfCBcIlNjcmF0Y2hcIiA9PiBTY3JhdGNoXG4gIHwgXCJEb2N1bWVudGF0aW9uXCIgPT4gRG9jdW1lbnRhdGlvblxuICB8IFwiRXhlcmNpc2VzXCIgPT4gRXhlcmNpc2VzXG4gIHwgXyA9PiBmYWlsd2l0aChcIm1vZGVfb2Zfc3RyaW5nOiB1bmtub3duIG1vZGU6XCIgKysgcylcbiAgfTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBjYXB0aW9uczogYm9vbCxcbiAgc2Vjb25kYXJ5X2ljb25zOiBib29sLFxuICBjb3JlOiBIYXozbGNvcmUuQ29yZVNldHRpbmdzLnQsXG4gIGFzeW5jX2V2YWx1YXRpb246IGJvb2wsXG4gIGNvbnRleHRfaW5zcGVjdG9yOiBib29sLFxuICBpbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gIGJlbmNobWFyazogYm9vbCxcbiAgZXhwbGFpblRoaXM6IEV4cGxhaW5UaGlzTW9kZWwuU2V0dGluZ3MudCxcbiAgbW9kZSxcbn07XG5cbmxldCBmaXhfaW5zdHJ1Y3Rvcl9tb2RlID0gc2V0dGluZ3MgPT5cbiAgaWYgKHNldHRpbmdzLmluc3RydWN0b3JfbW9kZSAmJiAhRXhlcmNpc2VTZXR0aW5ncy5zaG93X2luc3RydWN0b3IpIHtcbiAgICB7Li4uc2V0dGluZ3MsIGluc3RydWN0b3JfbW9kZTogZmFsc2V9O1xuICB9IGVsc2Uge1xuICAgIHNldHRpbmdzO1xuICB9O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdGUgPSBFZGl0b3IudDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50X3N0YXRlID0gUGVyc2lzdGVudFppcHBlci50O1xuXG5sZXQgc2NyYXRjaF9rZXkgPSBuID0+IFwic2NyYXRjaF9cIiArKyBuO1xuXG5sZXQgcGVyc2lzdCA9IChlZGl0b3I6IHN0YXRlKSA9PiB7XG4gIFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChlZGl0b3Iuc3RhdGUuemlwcGVyKTtcbn07XG5cbmxldCB1bnBlcnNpc3QgPSAoemlwcGVyOiBwZXJzaXN0ZW50X3N0YXRlKSA9PiB7XG4gIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdCh6aXBwZXIpO1xuICBFZGl0b3IuaW5pdCh6aXBwZXIsIH5yZWFkX29ubHk9ZmFsc2UpO1xufTtcblxubGV0IHNlcmlhbGl6ZSA9IChzdGF0ZTogc3RhdGUpID0+IHtcbiAgcGVyc2lzdChzdGF0ZSkgfD4gc2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG59O1xuXG5sZXQgZGVzZXJpYWxpemUgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIFNleHBsaWIuU2V4cC5vZl9zdHJpbmcoZGF0YSkgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIHw+IHVucGVyc2lzdDtcbn07XG5cbmxldCBkZXNlcmlhbGl6ZV9vcHQgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGxldCBzZXhwID1cbiAgICB0cnkoU29tZShTZXhwbGliLlNleHAub2Zfc3RyaW5nKGRhdGEpIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCkpIHtcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIHNleHAgfD4gT3B0aW9uLm1hcChzZXhwID0+IHNleHAgfD4gdW5wZXJzaXN0KTtcbn07XG5cbmxldCBleHBvcnQgPSAoc3RhdGU6IHN0YXRlKSA9PiB7XG4gIHN0YXRlIHw+IHBlcnNpc3QgfD4geW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGU7XG59O1xuXG5sZXQgaW1wb3J0ID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIHw+IHVucGVyc2lzdDtcbn07XG5cbmxldCBleHBvcnRfaW5pdCA9IChzdGF0ZTogc3RhdGUpID0+IHtcbiAgc3RhdGUgfD4gcGVyc2lzdCB8PiBzaG93X3BlcnNpc3RlbnRfc3RhdGU7XG59O1xuXG5sZXQgbWtfc3RhdGljcyA9XG4gICAgKH5zZXR0aW5nczogU2V0dGluZ3MudCwgZWRpdG9yOiBFZGl0b3IudCwgY3R4X2luaXQ6IEN0eC50KVxuICAgIDogQ2FjaGVkU3RhdGljcy5zdGF0aWNzID0+IHtcbiAgbGV0IHRlcm0gPSBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcbiAgbGV0IGluZm9fbWFwID0gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncy5jb3JlLCBjdHhfaW5pdCwgdGVybSk7XG4gIGxldCBlcnJvcl9pZHMgPVxuICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcywgaW5mb19tYXApO1xuICB7dGVybSwgaW5mb19tYXAsIGVycm9yX2lkc307XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNjcmF0Y2ggPSAoXG4gIGludCxcbiAgbGlzdChTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSksXG4gIGxpc3QoKHN0cmluZywgTW9kZWxSZXN1bHQucGVyc2lzdGVudCkpLFxuKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBkb2N1bWVudGF0aW9uID0gKFxuICBzdHJpbmcsXG4gIGxpc3QoKHN0cmluZywgU2NyYXRjaFNsaWRlLnBlcnNpc3RlbnRfc3RhdGUpKSxcbiAgW0BkZWZhdWx0IFtdXSBsaXN0KChzdHJpbmcsIE1vZGVsUmVzdWx0LnBlcnNpc3RlbnQpKSxcbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gIHNjcmF0Y2gsXG4gIGRvY3VtZW50YXRpb24sXG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIFNlbGVjdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNlbGwgPVxuICAgIHwgTWFpbkVkaXRvclxuICAgIHwgUmVzdWx0KE1vZGVsUmVzdWx0LnNlbGVjdGlvbik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgU2NyYXRjaChjZWxsKVxuICAgIHwgRG9jdW1lbnRhdGlvbihjZWxsKVxuICAgIHwgRXhlcmNpc2VzKEV4ZXJjaXNlLnBvcywgY2VsbCk7XG59O1xuXG5tb2R1bGUgQWN0aW9uID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2VsbCA9XG4gICAgfCBNYWluRWRpdG9yKEFjdGlvbi50KVxuICAgIHwgUmVzdWx0KE1vZGVsUmVzdWx0LmFjdGlvbik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgU2NyYXRjaChjZWxsKVxuICAgIHwgRG9jdW1lbnRhdGlvbihjZWxsKVxuICAgIHwgRXhlcmNpc2VzKEV4ZXJjaXNlLnBvcywgY2VsbCk7XG5cbiAgbW9kdWxlIEZhaWx1cmUgPSBBY3Rpb24uRmFpbHVyZTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgU2NyYXRjaChpbnQsIGxpc3QoU2NyYXRjaFNsaWRlLnN0YXRlKSlcbiAgfCBEb2N1bWVudGF0aW9uKHN0cmluZywgbGlzdCgoc3RyaW5nLCBTY3JhdGNoU2xpZGUuc3RhdGUpKSlcbiAgfCBFeGVyY2lzZXMoaW50LCBsaXN0KEV4ZXJjaXNlLnNwZWMpLCBFeGVyY2lzZS5zdGF0ZSk7XG5cbmxldCB1cGRhdGVfc2NyYXRjaF9zdGF0ZSA9XG4gICAgKGY6IFNjcmF0Y2hTbGlkZS5zdGF0ZSA9PiBTY3JhdGNoU2xpZGUuc3RhdGUsIGVkaXRvcnM6IHQpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTY3JhdGNoKG4sIExpc3RVdGlsLm1hcF9udGgobiwgZiwgc2xpZGVzKSlcbiAgfCBEb2N1bWVudGF0aW9uKHN0ciwgc2xpZGVzKSA9PlxuICAgIERvY3VtZW50YXRpb24oXG4gICAgICBzdHIsXG4gICAgICBMaXN0VXRpbC51cGRhdGVfYXNzb2MoKHN0ciwgZihMaXN0LmFzc29jKHN0ciwgc2xpZGVzKSkpLCBzbGlkZXMpLFxuICAgIClcbiAgLy8gVE9ET1tNYXR0XTogdXBkYXRlIGV4ZXJjaXNlc1xuICB8IEV4ZXJjaXNlcyhfKSA9PiBlZGl0b3JzXG4gIH07XG5cbmxldCBnZXRfY3R4X2luaXQgPSAofnNldHRpbmdzIGFzIF86IFNldHRpbmdzLnQsIGVkaXRvcnM6IHQpOiBDdHgudCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBCdWlsdGlucy5jdHhfaW5pdFxuICB9O1xuXG5sZXQgZ2V0X2Vudl9pbml0ID0gKH5zZXR0aW5ncyBhcyBfOiBTZXR0aW5ncy50LCBlZGl0b3JzOiB0KTogRW52aXJvbm1lbnQudCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBCdWlsdGlucy5lbnZfaW5pdFxuICB9O1xuXG5sZXQgbWtfc3RhdGljcyA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGVkaXRvcnM6IHQpOiBDYWNoZWRTdGF0aWNzLnQgPT4ge1xuICBsZXQgY3R4X2luaXQgPSBnZXRfY3R4X2luaXQofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT4gQ2FjaGVkU3RhdGljcy5tayhbXSlcbiAgfCBTY3JhdGNoKGlkeCwgc2xpZGVzKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICBsZXQgZWRpdG9yID0gTGlzdC5udGgoc2xpZGVzLCBpZHgpO1xuICAgIFsoa2V5LCBTY3JhdGNoU2xpZGUubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvciwgY3R4X2luaXQpKV1cbiAgICB8PiBDYWNoZWRTdGF0aWNzLm1rO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobmFtZSk7XG4gICAgbGV0IGVkaXRvciA9IExpc3QuYXNzb2MobmFtZSwgc2xpZGVzKTtcbiAgICBbKGtleSwgU2NyYXRjaFNsaWRlLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3IsIGN0eF9pbml0KSldXG4gICAgfD4gQ2FjaGVkU3RhdGljcy5taztcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgRXhlcmNpc2UubWtfc3RhdGljcyhzZXR0aW5ncy5jb3JlLCBleGVyY2lzZSkgfD4gQ2FjaGVkU3RhdGljcy5ta1xuICB9O1xufTtcblxubGV0IGxvb2t1cF9zdGF0aWNzID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCB+c2VsZWN0aW9uOiBTZWxlY3Rpb24udCwgfnN0YXRpY3MsIGVkaXRvcnM6IHQpXG4gICAgOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MgPT5cbiAgc3dpdGNoIChlZGl0b3JzLCBzZWxlY3Rpb24pIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3NcbiAgfCAoU2NyYXRjaChpZHgsIF8pLCBTY3JhdGNoKF8pKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IChEb2N1bWVudGF0aW9uKG5hbWUsIF8pLCBEb2N1bWVudGF0aW9uKF8pKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobmFtZSk7XG4gICAgQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywga2V5KTtcbiAgfCAoRXhlcmNpc2VzKF8pLCBFeGVyY2lzZXMocG9zLCBfKSkgPT5cbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKHBvcyk7XG4gICAgQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywga2V5KTtcbiAgfCAoRXhlcmNpc2VzKF8pLCBfKVxuICB8IChEb2N1bWVudGF0aW9uKF8pLCBfKVxuICB8IChTY3JhdGNoKF8pLCBfKSA9PiBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3NcbiAgfTtcblxuLyogRWFjaCBtb2RlIChlLmcuIFNjcmF0Y2gsIFNjaG9vbCkgcmVxdWlyZXNcbiAgIGVsYWJvcmF0aW5nIG9uIHNvbWUgbnVtYmVyIG9mIGV4cHJlc3Npb25zXG4gICB0aGF0IGFyZSBzcGxpY2VkIHRvZ2V0aGVyIGZyb20gdGhlIGVkaXRvcnNcbiAgIGluIHRoZSBtb2RlLiBFYWNoIGVsYWJvcmF0ZWQgZXhwcmVzc2lvblxuICAgaXMgZ2l2ZW4gYSBrZXkgZm9yIGxhdGVyIGxvb2t1cCBieSB0aGUgbW9kZS5cblxuICAgVXNlZCBpbiB0aGUgVXBkYXRlIG1vZHVsZSAqL1xubGV0IGdldF9zcGxpY2VkX2VsYWJzID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBzdGF0aWNzLCBlZGl0b3JzOiB0KVxuICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChpZHgsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShpZHggfD4gc3RyaW5nX29mX2ludCk7XG4gICAgbGV0IENhY2hlZFN0YXRpY3Mue3Rlcm0sIGluZm9fbWFwLCBffSA9XG4gICAgICBsb29rdXBfc3RhdGljcyhcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+c2VsZWN0aW9uPVNjcmF0Y2goTWFpbkVkaXRvciksXG4gICAgICAgIH5zdGF0aWNzLFxuICAgICAgICBlZGl0b3JzLFxuICAgICAgKTtcbiAgICBsZXQgZCA9IEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGluZm9fbWFwLCB0ZXJtKTtcbiAgICBbKGtleSwge2Q6IGR9KV07XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBfKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobmFtZSk7XG4gICAgbGV0IENhY2hlZFN0YXRpY3Mue3Rlcm0sIGluZm9fbWFwLCBffSA9XG4gICAgICBsb29rdXBfc3RhdGljcyhcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+c2VsZWN0aW9uPURvY3VtZW50YXRpb24oTWFpbkVkaXRvciksXG4gICAgICAgIH5zdGF0aWNzLFxuICAgICAgICBlZGl0b3JzLFxuICAgICAgKTtcbiAgICBsZXQgZCA9IEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGluZm9fbWFwLCB0ZXJtKTtcbiAgICBbKGtleSwge2Q6IGR9KV07XG4gIHwgRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSA9PlxuICAgIEV4ZXJjaXNlLnNwbGljZWRfZWxhYnMoc2V0dGluZ3MuY29yZSwgZXhlcmNpc2UpXG4gIH07XG5cbmxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKGVkaXRvcnM6IHQsIGluc3RydWN0b3JfbW9kZTogYm9vbCk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gZWRpdG9yc1xuICB8IEV4ZXJjaXNlcyhuLCBzcGVjcywgZXhlcmNpc2UpID0+XG4gICAgRXhlcmNpc2VzKFxuICAgICAgbixcbiAgICAgIHNwZWNzLFxuICAgICAgRXhlcmNpc2Uuc2V0X2luc3RydWN0b3JfbW9kZShleGVyY2lzZSwgaW5zdHJ1Y3Rvcl9tb2RlKSxcbiAgICApXG4gIH07XG5cbmxldCByZXNldF9udGhfc2xpZGUgPSAobiwgc2xpZGVzKSA9PiB7XG4gIGxldCAoXywgaW5pdF9lZGl0b3JzLCBfKSA9IEluaXQuc3RhcnR1cC5zY3JhdGNoO1xuICBsZXQgZGF0YSA9IExpc3QubnRoKGluaXRfZWRpdG9ycywgbik7XG4gIGxldCBpbml0X250aCA9IFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG4gIFV0aWwuTGlzdFV0aWwucHV0X250aChuLCBpbml0X250aCwgc2xpZGVzKTtcbn07XG5cbmxldCByZXNldF9uYW1lZF9zbGlkZSA9IChuYW1lLCBzbGlkZXMpID0+IHtcbiAgbGV0IChfLCBpbml0X2VkaXRvcnMsIF8pID0gSW5pdC5zdGFydHVwLmRvY3VtZW50YXRpb247XG4gIGxldCBkYXRhID0gTGlzdC5hc3NvYyhuYW1lLCBpbml0X2VkaXRvcnMpO1xuICBsZXQgaW5pdF9uYW1lID0gU2NyYXRjaFNsaWRlLnVucGVyc2lzdChkYXRhKTtcbiAgc2xpZGVzIHw+IExpc3QucmVtb3ZlX2Fzc29jKG5hbWUpIHw+IExpc3QuY29ucygobmFtZSwgaW5pdF9uYW1lKSk7XG59O1xuXG5sZXQgcmVzZXRfY3VycmVudCA9IChlZGl0b3JzOiB0LCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKG4sIHNsaWRlcykgPT4gU2NyYXRjaChuLCByZXNldF9udGhfc2xpZGUobiwgc2xpZGVzKSlcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBEb2N1bWVudGF0aW9uKG5hbWUsIHJlc2V0X25hbWVkX3NsaWRlKG5hbWUsIHNsaWRlcykpXG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBfKSA9PlxuICAgIEV4ZXJjaXNlcyhcbiAgICAgIG4sXG4gICAgICBzcGVjcyxcbiAgICAgIExpc3QubnRoKHNwZWNzLCBuKSB8PiBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKH5pbnN0cnVjdG9yX21vZGUpLFxuICAgIClcbiAgfTtcblxubGV0IGltcG9ydF9jdXJyZW50ID0gKGVkaXRvcnM6IHQsIGRhdGE6IG9wdGlvbihzdHJpbmcpKTogdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBEb2N1bWVudGF0aW9uKF8pXG4gIHwgRXhlcmNpc2VzKF8pID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZVwiKVxuICB8IFNjcmF0Y2goaWR4LCBzbGlkZXMpID0+XG4gICAgc3dpdGNoIChkYXRhKSB7XG4gICAgfCBOb25lID0+IGVkaXRvcnNcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIGxldCBzdGF0ZSA9IFNjcmF0Y2hTbGlkZS5pbXBvcnQoZGF0YSk7XG4gICAgICBsZXQgc2xpZGVzID0gVXRpbC5MaXN0VXRpbC5wdXRfbnRoKGlkeCwgc3RhdGUsIHNsaWRlcyk7XG4gICAgICBTY3JhdGNoKGlkeCwgc2xpZGVzKTtcbiAgICB9XG4gIH07XG5cbmxldCBzd2l0Y2hfZXhhbXBsZV9zbGlkZSA9IChlZGl0b3JzOiB0LCBuYW1lOiBzdHJpbmcpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBOb25lXG4gIHwgRG9jdW1lbnRhdGlvbihjdXIsIHNsaWRlcylcbiAgICAgIHdoZW4gIUxpc3QubWVtX2Fzc29jKG5hbWUsIHNsaWRlcykgfHwgY3VyID09IG5hbWUgPT5cbiAgICBOb25lXG4gIHwgRG9jdW1lbnRhdGlvbihfLCBzbGlkZXMpID0+IFNvbWUoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpKVxuICB9O1xuXG5sZXQgZ2V0X3NlbGVjdGVkX2VkaXRvciA9XG4gICAgKH5zZWxlY3Rpb246IFNlbGVjdGlvbi50LCBlZGl0b3JzOiB0LCBtb2RlbF9yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzLCBzZWxlY3Rpb24pIHtcbiAgfCAoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpLCBEb2N1bWVudGF0aW9uKE1haW5FZGl0b3IpKSA9PlxuICAgIExpc3QuYXNzb2Nfb3B0KG5hbWUsIHNsaWRlcylcbiAgfCAoRG9jdW1lbnRhdGlvbihuLCBfKSwgRG9jdW1lbnRhdGlvbihSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuKTtcbiAgICBsZXQqIHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywga2V5KTtcbiAgICBNb2RlbFJlc3VsdC5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCk7XG4gIHwgKERvY3VtZW50YXRpb24oXyksIF8pID0+IE5vbmVcbiAgfCAoU2NyYXRjaChpZHgsIHNsaWRlcyksIFNjcmF0Y2goTWFpbkVkaXRvcikpID0+XG4gICAgTGlzdC5udGhfb3B0KHNsaWRlcywgaWR4KVxuICB8IChTY3JhdGNoKG4sIF8pLCBTY3JhdGNoKFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KHN0cmluZ19vZl9pbnQobikpO1xuICAgIGxldCogcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgIE1vZGVsUmVzdWx0LmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0KTtcbiAgfCAoU2NyYXRjaChfKSwgXykgPT4gTm9uZVxuICB8IChFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpLCBFeGVyY2lzZXMoc2VsZWN0aW9uLCBNYWluRWRpdG9yKSkgPT5cbiAgICBTb21lKEV4ZXJjaXNlLm1haW5fZWRpdG9yX29mX3N0YXRlKH5zZWxlY3Rpb24sIGV4ZXJjaXNlKSlcbiAgfCAoRXhlcmNpc2VzKF8pLCBFeGVyY2lzZXMocG9zLCBSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0KiByZXN1bHQgPVxuICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3MocG9zKSk7XG4gICAgTW9kZWxSZXN1bHQuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQpO1xuICB8IChFeGVyY2lzZXMoXyksIF8pID0+IE5vbmVcbiAgfTtcblxubGV0IHB1dF9zZWxlY3RlZF9lZGl0b3IgPVxuICAgIChcbiAgICAgIH5zZWxlY3Rpb246IFNlbGVjdGlvbi50LFxuICAgICAgZWRpdG9yczogdCxcbiAgICAgIG1vZGVsX3Jlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICAgICAgZWRpdG9yOiBFZGl0b3IudCxcbiAgICApXG4gICAgOiAodCwgTW9kZWxSZXN1bHRzLnQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycywgc2VsZWN0aW9uKSB7XG4gIHwgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgRG9jdW1lbnRhdGlvbihNYWluRWRpdG9yKSkgPT5cbiAgICBsZXQgc2xpZGVzID0gTGlzdFV0aWwudXBkYXRlX2Fzc29jKChuYW1lLCBlZGl0b3IpLCBzbGlkZXMpO1xuICAgIChEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcyksIG1vZGVsX3Jlc3VsdHMpO1xuICB8IChEb2N1bWVudGF0aW9uKG4sIF8pLCBEb2N1bWVudGF0aW9uKFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG4pO1xuICAgIGxldCByZXN1bHRzID0ge1xuICAgICAgbGV0KyByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIGtleSk7XG4gICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgTW9kZWxSZXN1bHQucHV0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQsIGVkaXRvcik7XG4gICAgICBNb2RlbFJlc3VsdHMucHV0X3Jlc3VsdChrZXksIHJlc3VsdCwgbW9kZWxfcmVzdWx0cyk7XG4gICAgfTtcbiAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICB8IFNvbWUocmVzdWx0cykgPT4gKGVkaXRvcnMsIHJlc3VsdHMpXG4gICAgfCBOb25lID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICAgIH07XG4gIHwgKERvY3VtZW50YXRpb24oXyksIF8pID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICB8IChTY3JhdGNoKGlkeCwgc2xpZGVzKSwgU2NyYXRjaChNYWluRWRpdG9yKSkgPT5cbiAgICBsZXQgc2xpZGVzID0gTGlzdFV0aWwubWFwX250aChpZHgsIF8gPT4gZWRpdG9yLCBzbGlkZXMpO1xuICAgIChTY3JhdGNoKGlkeCwgc2xpZGVzKSwgbW9kZWxfcmVzdWx0cyk7XG4gIHwgKFNjcmF0Y2gobiwgXyksIFNjcmF0Y2goUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChuKSk7XG4gICAgbGV0IHJlc3VsdHMgPSB7XG4gICAgICBsZXQrIHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywga2V5KTtcbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBNb2RlbFJlc3VsdC5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCwgZWRpdG9yKTtcbiAgICAgIE1vZGVsUmVzdWx0cy5wdXRfcmVzdWx0KGtleSwgcmVzdWx0LCBtb2RlbF9yZXN1bHRzKTtcbiAgICB9O1xuICAgIHN3aXRjaCAocmVzdWx0cykge1xuICAgIHwgU29tZShyZXN1bHRzKSA9PiAoZWRpdG9ycywgcmVzdWx0cylcbiAgICB8IE5vbmUgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gICAgfTtcbiAgfCAoU2NyYXRjaChfKSwgXykgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gIHwgKEV4ZXJjaXNlcyhuLCBzcGVjLCBleGVyY2lzZSksIEV4ZXJjaXNlcyhwb3MsIE1haW5FZGl0b3IpKSA9PlxuICAgIGxldCBleGVyY2lzZSA9IEV4ZXJjaXNlLnB1dF9tYWluX2VkaXRvcih+c2VsZWN0aW9uPXBvcywgZXhlcmNpc2UsIGVkaXRvcik7XG4gICAgKEV4ZXJjaXNlcyhuLCBzcGVjLCBleGVyY2lzZSksIG1vZGVsX3Jlc3VsdHMpO1xuICB8IChFeGVyY2lzZXMoXyksIEV4ZXJjaXNlcyhwb3MsIFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKHBvcyk7XG4gICAgbGV0IHJlc3VsdHMgPSB7XG4gICAgICBsZXQrIHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywga2V5KTtcbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBNb2RlbFJlc3VsdC5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCwgZWRpdG9yKTtcbiAgICAgIE1vZGVsUmVzdWx0cy5wdXRfcmVzdWx0KGtleSwgcmVzdWx0LCBtb2RlbF9yZXN1bHRzKTtcbiAgICB9O1xuICAgIHN3aXRjaCAocmVzdWx0cykge1xuICAgIHwgU29tZShyZXN1bHRzKSA9PiAoZWRpdG9ycywgcmVzdWx0cylcbiAgICB8IE5vbmUgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gICAgfTtcbiAgfCAoRXhlcmNpc2VzKF8pLCBfKSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgfTtcblxubGV0IHVwZGF0ZV9zZWxlY3RlZF9lZGl0b3IgPVxuICAgIChcbiAgICAgIH5zZWxlY3Rpb246IG9wdGlvbihTZWxlY3Rpb24udCksXG4gICAgICBmOiBFZGl0b3IudCA9PiBSZXN1bHQudChFZGl0b3IudCwgQWN0aW9uLkZhaWx1cmUudCksXG4gICAgICBlZGl0b3JzOiB0LFxuICAgICAgcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gICAgKVxuICAgIDogUmVzdWx0LnQoKHQsIE1vZGVsUmVzdWx0cy50KSwgQWN0aW9uLkZhaWx1cmUudCkgPT4ge1xuICBzd2l0Y2ggKHNlbGVjdGlvbikge1xuICB8IE5vbmUgPT4gT2soKGVkaXRvcnMsIHJlc3VsdHMpKVxuICB8IFNvbWUoc2VsZWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBlZGl0b3JzLCByZXN1bHRzKSkge1xuICAgIHwgTm9uZSA9PiBPaygoZWRpdG9ycywgcmVzdWx0cykpXG4gICAgfCBTb21lKGVkaXRvcikgPT5cbiAgICAgIHN3aXRjaCAoZihlZGl0b3IpKSB7XG4gICAgICB8IE9rKGVkaXRvcikgPT5cbiAgICAgICAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9XG4gICAgICAgICAgcHV0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBlZGl0b3JzLCByZXN1bHRzLCBlZGl0b3IpO1xuICAgICAgICBPaygoZWRpdG9ycywgcmVzdWx0cykpO1xuICAgICAgfCBFcnJvcihlKSA9PiBFcnJvcihlKVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmxldCBnZXRfY3Vyc29yX2luZm8gPVxuICAgIChcbiAgICAgIH5zZWxlY3Rpb246IG9wdGlvbihTZWxlY3Rpb24udCksXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICBlZGl0b3JzOiB0LFxuICAgICAgbW9kZWxfcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gICAgICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnQsXG4gICAgKSA9PiB7XG4gIGxldCogc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICBsZXQgc3RhdGljcyA9IGxvb2t1cF9zdGF0aWNzKH5zZXR0aW5ncywgfnNlbGVjdGlvbiwgfnN0YXRpY3MsIGVkaXRvcnMpO1xuICBsZXQqIGVkaXRvciA9IGdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgZWRpdG9ycywgbW9kZWxfcmVzdWx0cyk7XG4gIEluZGljYXRlZC5jaV9vZihlZGl0b3Iuc3RhdGUuemlwcGVyLCBzdGF0aWNzLmluZm9fbWFwKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4cGxhaW5UaGlzTW9kZWw7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdXBkYXRlID1cbiAgfCBTcGVjaWZpY2l0eU9wZW4oYm9vbClcbiAgfCBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBmZWVkYmFja19vcHRpb24pXG4gIHwgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBmZWVkYmFja19vcHRpb24pXG4gIHwgVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXBfaWQsIGZvcm1faWQpO1xuXG5sZXQgc2V0X3VwZGF0ZSA9XG4gICAgKGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCwgdTogdXBkYXRlKTogRXhwbGFpblRoaXNNb2RlbC50ID0+IHtcbiAgc3dpdGNoICh1KSB7XG4gIHwgU3BlY2lmaWNpdHlPcGVuKGIpID0+IHsuLi5leHBsYWluVGhpc01vZGVsLCBzcGVjaWZpY2l0eV9vcGVuOiBifVxuICB8IFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGZlZWRiYWNrX29wdGlvbikgPT5cbiAgICBsZXQgKHByZSwgZm9ybSwgcG9zdCkgPVxuICAgICAgTGlzdFV0aWwuc3BsaXQoZXhwbGFpblRoaXNNb2RlbC5mb3JtcywgZiA9PlxuICAgICAgICBmLmZvcm0gPT0gZm9ybV9pZCAmJiBmLmdyb3VwID09IGdyb3VwX2lkXG4gICAgICApO1xuICAgIGxldCBmb3JtID1cbiAgICAgIHN3aXRjaCAoZm9ybSkge1xuICAgICAgfCBTb21lKGZvcm0pID0+XG4gICAgICAgIGxldCBmZWVkYmFjayA9XG4gICAgICAgICAgc3dpdGNoIChmb3JtLmV4cGxhbmF0aW9uX2ZlZWRiYWNrLCBmZWVkYmFja19vcHRpb24pIHtcbiAgICAgICAgICB8IChTb21lKFRodW1ic1VwKSwgVGh1bWJzRG93bilcbiAgICAgICAgICB8IChTb21lKFRodW1ic0Rvd24pLCBUaHVtYnNVcClcbiAgICAgICAgICB8IChOb25lLCBfKSA9PiBTb21lKGZlZWRiYWNrX29wdGlvbilcbiAgICAgICAgICB8IChTb21lKFRodW1ic1VwKSwgVGh1bWJzVXApXG4gICAgICAgICAgfCAoU29tZShUaHVtYnNEb3duKSwgVGh1bWJzRG93bikgPT4gTm9uZVxuICAgICAgICAgIH07XG4gICAgICAgIHsuLi5mb3JtLCBleHBsYW5hdGlvbl9mZWVkYmFjazogZmVlZGJhY2t9O1xuICAgICAgfCBOb25lID0+IHtcbiAgICAgICAgICBncm91cDogZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybTogZm9ybV9pZCxcbiAgICAgICAgICBleHBsYW5hdGlvbl9mZWVkYmFjazogU29tZShmZWVkYmFja19vcHRpb24pLFxuICAgICAgICAgIGV4YW1wbGVzOiBbXSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB7Li4uZXhwbGFpblRoaXNNb2RlbCwgZm9ybXM6IHByZSBAIFtmb3JtXSBAIHBvc3R9O1xuICB8IFRvZ2dsZUV4YW1wbGVGZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZXhhbXBsZV9pZCwgZmVlZGJhY2tfb3B0aW9uKSA9PlxuICAgIGxldCAocHJlX2Zvcm0sIGZvcm0sIHBvc3RfZm9ybSkgPVxuICAgICAgTGlzdFV0aWwuc3BsaXQoZXhwbGFpblRoaXNNb2RlbC5mb3JtcywgZiA9PlxuICAgICAgICBmLmZvcm0gPT0gZm9ybV9pZCAmJiBmLmdyb3VwID09IGdyb3VwX2lkXG4gICAgICApO1xuICAgIGxldCBmb3JtOiBmb3JtX21vZGVsID1cbiAgICAgIHN3aXRjaCAoZm9ybSkge1xuICAgICAgfCBTb21lKGZvcm0pID0+XG4gICAgICAgIGxldCAocHJlX2V4YW1wbGUsIGV4YW1wbGUsIHBvc3RfZXhhbXBsZSkgPVxuICAgICAgICAgIExpc3RVdGlsLnNwbGl0KGZvcm0uZXhhbXBsZXMsIGUgPT4gZS5zdWJfaWQgPT0gZXhhbXBsZV9pZCk7XG4gICAgICAgIGxldCBleGFtcGxlczogbGlzdChleGFtcGxlX21vZGVsKSA9XG4gICAgICAgICAgc3dpdGNoIChleGFtcGxlKSB7XG4gICAgICAgICAgfCBTb21lKGV4YW1wbGUpID0+XG4gICAgICAgICAgICBzd2l0Y2ggKGV4YW1wbGUuZmVlZGJhY2ssIGZlZWRiYWNrX29wdGlvbikge1xuICAgICAgICAgICAgfCAoVGh1bWJzVXAsIFRodW1ic0Rvd24pXG4gICAgICAgICAgICB8IChUaHVtYnNEb3duLCBUaHVtYnNVcCkgPT5cbiAgICAgICAgICAgICAgcHJlX2V4YW1wbGVcbiAgICAgICAgICAgICAgQCBbey4uLmV4YW1wbGUsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XVxuICAgICAgICAgICAgICBAIHBvc3RfZXhhbXBsZVxuICAgICAgICAgICAgfCAoVGh1bWJzVXAsIFRodW1ic1VwKVxuICAgICAgICAgICAgfCAoVGh1bWJzRG93biwgVGh1bWJzRG93bikgPT4gcHJlX2V4YW1wbGUgQCBwb3N0X2V4YW1wbGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgIHByZV9leGFtcGxlXG4gICAgICAgICAgICBAIFt7c3ViX2lkOiBleGFtcGxlX2lkLCBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9ufV1cbiAgICAgICAgICAgIEAgcG9zdF9leGFtcGxlXG4gICAgICAgICAgfTtcbiAgICAgICAgey4uLmZvcm0sIGV4YW1wbGVzfTtcbiAgICAgIHwgTm9uZSA9PiB7XG4gICAgICAgICAgZ3JvdXA6IGdyb3VwX2lkLFxuICAgICAgICAgIGZvcm06IGZvcm1faWQsXG4gICAgICAgICAgZXhwbGFuYXRpb25fZmVlZGJhY2s6IE5vbmUsXG4gICAgICAgICAgZXhhbXBsZXM6IFt7c3ViX2lkOiBleGFtcGxlX2lkLCBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9ufV0sXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgey4uLmV4cGxhaW5UaGlzTW9kZWwsIGZvcm1zOiBwcmVfZm9ybSBAIFtmb3JtXSBAIHBvc3RfZm9ybX07XG4gIHwgVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXBfaWQsIGZvcm1faWQpID0+XG4gICAgbGV0IChwcmVfZ3JvdXAsIF9ncm91cCwgcG9zdF9ncm91cCkgPVxuICAgICAgTGlzdFV0aWwuc3BsaXQoZXhwbGFpblRoaXNNb2RlbC5ncm91cHMsIGcgPT4gZy5ncm91cCA9PSBncm91cF9pZCk7XG4gICAge1xuICAgICAgLi4uZXhwbGFpblRoaXNNb2RlbCxcbiAgICAgIGdyb3VwczpcbiAgICAgICAgcHJlX2dyb3VwIEAgW3tncm91cDogZ3JvdXBfaWQsIHNlbGVjdGVkOiBmb3JtX2lkfV0gQCBwb3N0X2dyb3VwLFxuICAgIH07XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0B3YXJuaW5nIFwiLTMzXCJdXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHJvd19oZWlnaHQ6IGZsb2F0LFxuICBjb2xfd2lkdGg6IGZsb2F0LFxufTtcblxubGV0IGluaXQgPSB7cm93X2hlaWdodDogMTAuLCBjb2xfd2lkdGg6IDEwLn07XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgZ2V0X2VsZW1fYnlfaWQgPSBpZCA9PiB7XG4gIGxldCBkb2MgPSBEb21faHRtbC5kb2N1bWVudDtcbiAgSnMuT3B0LmdldChcbiAgICBkb2MjI2dldEVsZW1lbnRCeUlkKEpzLnN0cmluZyhpZCkpLFxuICAgICgpID0+IHtcbiAgICAgIHByaW50X2VuZGxpbmUoaWQpO1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICB9LFxuICApO1xufTtcblxubGV0IGdldF9jaGlsZF93aXRoX2NsYXNzID0gKGVsZW1lbnQ6IEpzLnQoRG9tX2h0bWwuZWxlbWVudCksIGNsYXNzTmFtZSkgPT4ge1xuICBsZXQgcmVjIGxvb3AgPSAoc2libGluZzogSnMudChEb21faHRtbC5lbGVtZW50KSkgPT5cbiAgICBpZiAoSnMudG9fYm9vbChzaWJsaW5nIyMuY2xhc3NMaXN0IyNjb250YWlucyhKcy5zdHJpbmcoY2xhc3NOYW1lKSkpKSB7XG4gICAgICBTb21lKHNpYmxpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb29wKFxuICAgICAgICBKcy5PcHQuZ2V0KHNpYmxpbmcjIy5uZXh0U2libGluZywgKCkgPT4gZmFpbHdpdGgoXCJubyBzaWJsaW5nXCIpKVxuICAgICAgICB8PiBKcy5VbnNhZmUuY29lcmNlLFxuICAgICAgKTtcbiAgICB9O1xuICBsb29wKFxuICAgIEpzLk9wdC5nZXQoZWxlbWVudCMjLmZpcnN0Q2hpbGQsICgpID0+IGZhaWx3aXRoKFwibm8gY2hpbGRcIikpXG4gICAgfD4gSnMuVW5zYWZlLmNvZXJjZSxcbiAgKTtcbn07XG5cbmxldCBkYXRlX25vdyA9ICgpID0+IHtcbiAgWyVqcyBuZXcgSnMuZGF0ZV9ub3ddO1xufTtcblxubGV0IHRpbWVzdGFtcCA9ICgpID0+IGRhdGVfbm93KCkjI3ZhbHVlT2Y7XG5cbmxldCBnZXRfa2V5ID0gZXZ0ID0+XG4gIEpzLnRvX3N0cmluZyhKcy5PcHRkZWYuZ2V0KGV2dCMjLmtleSwgKCkgPT4gZmFpbHdpdGgoXCJKc1V0aWwuZ2V0X2tleVwiKSkpO1xuXG5sZXQgY3RybF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuY3RybEtleSk7XG5sZXQgc2hpZnRfaGVsZCA9IGV2dCA9PiBKcy50b19ib29sKGV2dCMjLnNoaWZ0S2V5KTtcbmxldCBhbHRfaGVsZCA9IGV2dCA9PiBKcy50b19ib29sKGV2dCMjLmFsdEtleSk7XG5sZXQgbWV0YV9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMubWV0YUtleSk7XG5cbmxldCBudW1fY2xpY2tzID0gKGV2dDogSnMudChKc19vZl9vY2FtbC5Eb21faHRtbC5tb3VzZUV2ZW50KSk6IGludCA9PlxuICBKcy5VbnNhZmUuY29lcmNlKGV2dCkjIy5kZXRhaWw7XG5cbmxldCBpc19kb3VibGVfY2xpY2sgPSAoZXZ0OiBKcy50KEpzX29mX29jYW1sLkRvbV9odG1sLm1vdXNlRXZlbnQpKTogYm9vbCA9PlxuICBudW1fY2xpY2tzKGV2dCkgPT0gMjtcblxubGV0IGRvd25sb2FkX3N0cmluZ19maWxlID1cbiAgICAofmZpbGVuYW1lOiBzdHJpbmcsIH5jb250ZW50X3R5cGU6IHN0cmluZywgfmNvbnRlbnRzOiBzdHJpbmcpID0+IHtcbiAgbGV0IGJsb2IgPSBGaWxlLmJsb2JfZnJvbV9zdHJpbmcofmNvbnRlbnRUeXBlPWNvbnRlbnRfdHlwZSwgY29udGVudHMpO1xuICBsZXQgdXJsID0gRG9tX2h0bWwud2luZG93IyMuX1VSTCMjY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gIGxldCBsaW5rID0gRG9tX2h0bWwuY3JlYXRlQShEb21faHRtbC5kb2N1bWVudCk7XG4gIGxpbmsjIy5ocmVmIDo9IHVybDtcbiAgbGluayMjc2V0QXR0cmlidXRlKEpzLnN0cmluZyhcImRvd25sb2FkXCIpLCBKcy5zdHJpbmcoZmlsZW5hbWUpKTtcbiAgbGluayMjLm9uY2xpY2sgOj0gRG9tX2h0bWwuaGFuZGxlcihfID0+IHtKcy5fdHJ1ZX0pO1xuICBsaW5rIyNjbGljaztcbn07XG5cbmxldCBkb3dubG9hZF9qc29uID0gKGZpbGVuYW1lLCBjb250ZW50cyk6IHVuaXQgPT5cbiAgZG93bmxvYWRfc3RyaW5nX2ZpbGUoXG4gICAgfmZpbGVuYW1lPWZpbGVuYW1lICsrIFwiLmpzb25cIixcbiAgICB+Y29udGVudF90eXBlPVwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH5jb250ZW50cz1jb250ZW50cyB8PiBZb2pzb24uU2FmZS50b19zdHJpbmcsXG4gICk7XG5cbmxldCByZWFkX2ZpbGUgPSAoZmlsZSwgaykgPT4ge1xuICBsZXQgcmVhZGVyID0gWyVqcyBuZXcgRmlsZS5maWxlUmVhZGVyXTtcbiAgcmVhZGVyIyNyZWFkQXNUZXh0KGZpbGUpO1xuICByZWFkZXIjIy5vbmxvYWQgOj1cbiAgICBEb20uaGFuZGxlcihfID0+IHtcbiAgICAgIGxldCByZXN1bHQgPSByZWFkZXIjIy5yZXN1bHQ7XG4gICAgICBsZXQgb3B0aW9uID0gSnMuT3B0LnRvX29wdGlvbihGaWxlLkNvZXJjZVRvLnN0cmluZyhyZXN1bHQpKTtcbiAgICAgIGxldCBkYXRhID0gT3B0aW9uLm1hcChKcy50b19zdHJpbmcsIG9wdGlvbik7XG4gICAgICBrKGRhdGEpO1xuICAgICAgSnMuX3RydWU7XG4gICAgfSk7XG59O1xuXG5sZXQgc2V0X2xvY2Fsc3RvcmUgPSAoazogc3RyaW5nLCB2OiBzdHJpbmcpOiB1bml0ID0+IHtcbiAgbGV0IGxvY2FsX3N0b3JlID1cbiAgICBKcy5PcHRkZWYuZ2V0KERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSwgKCkgPT4gYXNzZXJ0KGZhbHNlKSk7XG4gIGxvY2FsX3N0b3JlIyNzZXRJdGVtKEpzLnN0cmluZyhrKSwgSnMuc3RyaW5nKHYpKTtcbn07XG5cbmxldCBnZXRfbG9jYWxzdG9yZSA9IChrOiBzdHJpbmcpOiBvcHRpb24oc3RyaW5nKSA9PlxuICB0cnkoe1xuICAgIGxldCBsb2NhbF9zdG9yZSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0KERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSwgKCkgPT4gYXNzZXJ0KGZhbHNlKSk7XG4gICAgbG9jYWxfc3RvcmUjI2dldEl0ZW0oSnMuc3RyaW5nKGspKVxuICAgIHw+IChcbiAgICAgIHggPT4gSnMuT3B0LmdldCh4LCAoKSA9PiBhc3NlcnQoZmFsc2UpKSB8PiBKcy50b19zdHJpbmcgfD4gT3B0aW9uLnNvbWVcbiAgICApO1xuICB9KSB7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCBjbGVhcl9sb2NhbHN0b3JlID0gKCkgPT4ge1xuICBsZXQgbG9jYWxfc3RvcmUgPVxuICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgbG9jYWxfc3RvcmUjI2NsZWFyO1xufTtcblxubGV0IGNvbmZpcm0gPSBtZXNzYWdlID0+IHtcbiAgSnMudG9fYm9vbChEb21faHRtbC53aW5kb3cjI2NvbmZpcm0oSnMuc3RyaW5nKG1lc3NhZ2UpKSk7XG59O1xuXG5sZXQgbG9nID0gZGF0YSA9PiB7XG4gIEZpcmVidWcuY29uc29sZSMjbG9nKGRhdGEpO1xufTtcblxubGV0IGNsaXBib2FyZF9zaGltX2lkID0gXCJjbGlwYm9hcmQtc2hpbVwiO1xuXG5sZXQgZm9jdXNfY2xpcGJvYXJkX3NoaW0gPSAoKSA9PiBnZXRfZWxlbV9ieV9pZChjbGlwYm9hcmRfc2hpbV9pZCkjI2ZvY3VzO1xuXG5sZXQgY2xpcGJvYXJkX3NoaW0gPSB7XG4gIE5vZGUudGV4dGFyZWEofmF0dHI9QXR0ci5tYW55KFtBdHRyLmlkKGNsaXBib2FyZF9zaGltX2lkKV0pLCBbXSk7XG59O1xuXG5sZXQgY29weSA9IChzdHI6IHN0cmluZykgPT4ge1xuICBmb2N1c19jbGlwYm9hcmRfc2hpbSgpO1xuICBEb21faHRtbC5kb2N1bWVudCMjZXhlY0NvbW1hbmQoXG4gICAgSnMuc3RyaW5nKFwic2VsZWN0QWxsXCIpLFxuICAgIEpzLmJvb2woZmFsc2UpLFxuICAgIEpzLk9wdC5lbXB0eSxcbiAgKTtcbiAgRG9tX2h0bWwuZG9jdW1lbnQjI2V4ZWNDb21tYW5kKFxuICAgIEpzLnN0cmluZyhcImluc2VydFRleHRcIiksXG4gICAgSnMuYm9vbChmYWxzZSksXG4gICAgSnMuT3B0Lm9wdGlvbihTb21lKEpzLnN0cmluZyhzdHIpKSksXG4gICk7XG4gIERvbV9odG1sLmRvY3VtZW50IyNleGVjQ29tbWFuZChcbiAgICBKcy5zdHJpbmcoXCJzZWxlY3RBbGxcIiksXG4gICAgSnMuYm9vbChmYWxzZSksXG4gICAgSnMuT3B0LmVtcHR5LFxuICApO1xufTtcblxubGV0IHNjcm9sbF9jdXJzb3JfaW50b192aWV3X2lmX25lZWRlZCA9ICgpID0+XG4gIHRyeSh7XG4gICAgbGV0IGNhcmV0X2VsZW0gPSBnZXRfZWxlbV9ieV9pZChcImNhcmV0XCIpO1xuICAgIGxldCBtYWluID0gZ2V0X2VsZW1fYnlfaWQoXCJtYWluXCIpO1xuICAgIGxldCBtYWluX3JlY3QgPSBtYWluIyNnZXRCb3VuZGluZ0NsaWVudFJlY3Q7XG4gICAgbGV0IGNhcmV0X3JlY3QgPSBjYXJldF9lbGVtIyNnZXRCb3VuZGluZ0NsaWVudFJlY3Q7XG5cbiAgICBpZiAoY2FyZXRfcmVjdCMjLnRvcCA8IG1haW5fcmVjdCMjLnRvcCkge1xuICAgICAgY2FyZXRfZWxlbSMjc2Nyb2xsSW50b1ZpZXcoSnMuX3RydWUpO1xuICAgIH0gZWxzZSBpZiAoY2FyZXRfcmVjdCMjLmJvdHRvbSA+IG1haW5fcmVjdCMjLmJvdHRvbSkge1xuICAgICAgY2FyZXRfZWxlbSMjc2Nyb2xsSW50b1ZpZXcoSnMuX2ZhbHNlKTtcbiAgICB9O1xuICB9KSB7XG4gIHwgQXNzZXJ0X2ZhaWx1cmUoXykgPT4gKClcbiAgfTtcblxubW9kdWxlIEZyYWdtZW50ID0ge1xuICBsZXQgc2V0X2N1cnJlbnQgPSBmcmFnID0+IHtcbiAgICBsZXQgZnJhZyA9XG4gICAgICBzd2l0Y2ggKGZyYWcpIHtcbiAgICAgIHwgXCJcIiA9PiBcIlwiXG4gICAgICB8IGZyYWcgPT4gXCIjXCIgKysgZnJhZ1xuICAgICAgfTtcbiAgICBsZXQgaGlzdG9yeSA9IEpzX29mX29jYW1sLkRvbV9odG1sLndpbmRvdyMjLmhpc3Rvcnk7XG4gICAgaGlzdG9yeSMjcHVzaFN0YXRlKEpzLm51bGwsIEpzLnN0cmluZyhcIlwiKSwgSnMuc29tZShKcy5zdHJpbmcoZnJhZykpKTtcbiAgfTtcblxuICBsZXQgZ2V0X2N1cnJlbnQgPSAoKSA9PiB7XG4gICAgbGV0IGZyYWdtZW50X29mX3VybCA9ICh1cmw6IFVybC51cmwpOiBzdHJpbmcgPT5cbiAgICAgIHN3aXRjaCAodXJsKSB7XG4gICAgICB8IEh0dHAoe2h1X2ZyYWdtZW50OiBzdHIsIF99KVxuICAgICAgfCBIdHRwcyh7aHVfZnJhZ21lbnQ6IHN0ciwgX30pXG4gICAgICB8IEZpbGUoe2Z1X2ZyYWdtZW50OiBzdHIsIF99KSA9PiBzdHJcbiAgICAgIH07XG4gICAgVXJsLkN1cnJlbnQuZ2V0KCkgfD4gT3B0aW9uLm1hcChmcmFnbWVudF9vZl91cmwpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG4vLyBBIGdlbmVyaWMga2V5LXZhbHVlIHN0b3JlIGZvciBzYXZpbmcvbG9hZGluZyBkYXRhIHRvL2Zyb20gbG9jYWwgc3RvcmFnZVxubW9kdWxlIEdlbmVyaWMgPSB7XG4gIGxldCBwcmVmaXg6IHN0cmluZyA9IFwiS0VZX1NUT1JFX1wiO1xuXG4gIGxldCBmdWxsX2tleSA9IChrZXk6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcHJlZml4ICsrIGtleTtcbiAgfTtcblxuICBsZXQgc2F2ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHVuaXQgPT5cbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoZnVsbF9rZXkoa2V5KSwgdmFsdWUpO1xuXG4gIGxldCBsb2FkID0gKGtleTogc3RyaW5nKTogb3B0aW9uKHN0cmluZykgPT5cbiAgICBKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoZnVsbF9rZXkoa2V5KSk7XG59O1xuXG4vLyBTZXR0aW5ncyBzZXJpYWxpemF0aW9uXG5tb2R1bGUgU2V0dGluZ3MgPSB7XG4gIGxldCBzYXZlX3NldHRpbmdzX2tleTogc3RyaW5nID0gXCJTRVRUSU5HU1wiO1xuXG4gIGxldCBkZWZhdWx0ID0gSW5pdC5zdGFydHVwLnNldHRpbmdzO1xuXG4gIGxldCBzZXJpYWxpemUgPSBzZXR0aW5ncyA9PlxuICAgIHNldHRpbmdzIHw+IFNldHRpbmdzLnNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuXG4gIGxldCBkZXNlcmlhbGl6ZSA9IGRhdGEgPT5cbiAgICB0cnkoXG4gICAgICBkYXRhXG4gICAgICB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nXG4gICAgICB8PiBTZXR0aW5ncy50X29mX3NleHBcbiAgICAgIHw+IFNldHRpbmdzLmZpeF9pbnN0cnVjdG9yX21vZGVcbiAgICApIHtcbiAgICB8IF8gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJDb3VsZCBub3QgZGVzZXJpYWxpemUgc2V0dGluZ3MuXCIpO1xuICAgICAgZGVmYXVsdDtcbiAgICB9O1xuXG4gIGxldCBzYXZlID0gKHNldHRpbmdzOiBTZXR0aW5ncy50KTogdW5pdCA9PlxuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX3NldHRpbmdzX2tleSwgc2VyaWFsaXplKHNldHRpbmdzKSk7XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5LCBzZXJpYWxpemUoZGVmYXVsdCkpO1xuICAgIGRlZmF1bHQ7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAoKTogU2V0dGluZ3MudCA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5KSkge1xuICAgIHwgTm9uZSA9PiBpbml0KClcbiAgICB8IFNvbWUoZGF0YSkgPT4gZGVzZXJpYWxpemUoZGF0YSlcbiAgICB9O1xuXG4gIGxldCBleHBvcnQgPSAoKSA9PiBPcHRpb24uZ2V0KEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX3NldHRpbmdzX2tleSkpO1xuICBsZXQgaW1wb3J0ID0gZGF0YSA9PiB7XG4gICAgbGV0IHNldHRpbmdzID0gZGVzZXJpYWxpemUoZGF0YSk7XG4gICAgc2F2ZShzZXR0aW5ncyk7XG4gICAgc2V0dGluZ3M7XG4gIH07XG59O1xuXG4vLyBFeHBsYWluVGhpc01vZGVsIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBFeHBsYWluVGhpc01vZGVsID0ge1xuICBsZXQgc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleTogc3RyaW5nID0gXCJFeHBsYWluVGhpc01vZGVsXCI7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IGV4cGxhaW5UaGlzTW9kZWwgPT5cbiAgICBleHBsYWluVGhpc01vZGVsIHw+IEV4cGxhaW5UaGlzTW9kZWwuc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PlxuICAgIHRyeShkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gRXhwbGFpblRoaXNNb2RlbC50X29mX3NleHApIHtcbiAgICB8IF8gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJDb3VsZCBub3QgZGVzZXJpYWxpemUgRXhwbGFpblRoaXNNb2RlbC5cIik7XG4gICAgICBFeHBsYWluVGhpc01vZGVsLmluaXQ7XG4gICAgfTtcblxuICBsZXQgc2F2ZSA9IChleHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQpOiB1bml0ID0+XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKFxuICAgICAgc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSxcbiAgICAgIHNlcmlhbGl6ZShleHBsYWluVGhpc01vZGVsKSxcbiAgICApO1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShcbiAgICAgIHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXksXG4gICAgICBzZXJpYWxpemUoRXhwbGFpblRoaXNNb2RlbC5pbml0KSxcbiAgICApO1xuICAgIEV4cGxhaW5UaGlzTW9kZWwuaW5pdDtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICgpOiBFeHBsYWluVGhpc01vZGVsLnQgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5KSkge1xuICAgIHwgTm9uZSA9PiBpbml0KClcbiAgICB8IFNvbWUoZGF0YSkgPT4gZGVzZXJpYWxpemUoZGF0YSlcbiAgICB9O1xuXG4gIGxldCByZWMgZXhwb3J0ID0gKCkgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5KSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IF8gPSBpbml0KCk7XG4gICAgICBleHBvcnQoKTtcbiAgICB8IFNvbWUoZGF0YSkgPT4gZGF0YVxuICAgIH07XG5cbiAgbGV0IGltcG9ydCA9IGRhdGEgPT4ge1xuICAgIGxldCBleHBsYWluVGhpc01vZGVsID0gZGVzZXJpYWxpemUoZGF0YSk7XG4gICAgc2F2ZShleHBsYWluVGhpc01vZGVsKTtcbiAgfTtcbn07XG5cbi8vIFNjcmF0Y2ggbW9kZSBzZXJpYWxpemF0aW9uXG5tb2R1bGUgU2NyYXRjaCA9IHtcbiAgbGV0IHNhdmVfc2NyYXRjaF9rZXk6IHN0cmluZyA9IFwiU0FWRV9TQ1JBVENIXCI7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcnNpc3RlbnQgPSBQZXJzaXN0ZW50RGF0YS5zY3JhdGNoO1xuXG4gIGxldCB0b19wZXJzaXN0ZW50ID0gKChpZHgsIHNsaWRlcywgcmVzdWx0cykpOiBwZXJzaXN0ZW50ID0+IChcbiAgICBpZHgsXG4gICAgTGlzdC5tYXAoU2NyYXRjaFNsaWRlLnBlcnNpc3QsIHNsaWRlcyksXG4gICAgcmVzdWx0c1xuICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQudG9fcGVyc2lzdGVudClcbiAgICB8PiBNb2RlbFJlc3VsdHMuYmluZGluZ3MsXG4gICk7XG5cbiAgbGV0IG9mX3BlcnNpc3RlbnQgPSAofnNldHRpbmdzLCAoaWR4LCBzbGlkZXMsIHJlc3VsdHMpOiBwZXJzaXN0ZW50KSA9PiB7XG4gICAgKFxuICAgICAgaWR4LFxuICAgICAgTGlzdC5tYXAoU2NyYXRjaFNsaWRlLnVucGVyc2lzdCwgc2xpZGVzKSxcbiAgICAgIHJlc3VsdHNcbiAgICAgIHw+IExpc3QudG9fc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMub2Zfc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0Lm9mX3BlcnNpc3RlbnQofnNldHRpbmdzKSksXG4gICAgKTtcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplID0gc2NyYXRjaCA9PiB7XG4gICAgc2NyYXRjaCB8PiB0b19wZXJzaXN0ZW50IHw+IHNleHBfb2ZfcGVyc2lzdGVudCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZSA9IGRhdGEgPT4ge1xuICAgIGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBwZXJzaXN0ZW50X29mX3NleHAgfD4gb2ZfcGVyc2lzdGVudDtcbiAgfTtcblxuICBsZXQgc2F2ZSA9IChzY3JhdGNoKTogdW5pdCA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfc2NyYXRjaF9rZXksIHNlcmlhbGl6ZShzY3JhdGNoKSk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAofnNldHRpbmdzKSA9PiB7XG4gICAgbGV0IHNjcmF0Y2ggPSBvZl9wZXJzaXN0ZW50KH5zZXR0aW5ncywgSW5pdC5zdGFydHVwLnNjcmF0Y2gpO1xuICAgIHNhdmUoc2NyYXRjaCk7XG4gICAgc2NyYXRjaDtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICh+c2V0dGluZ3MpID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9zY3JhdGNoX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCh+c2V0dGluZ3MpXG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICB0cnkoZGVzZXJpYWxpemUofnNldHRpbmdzLCBkYXRhKSkge1xuICAgICAgfCBfID0+IGluaXQofnNldHRpbmdzKVxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICh+c2V0dGluZ3MpID0+IHNlcmlhbGl6ZShsb2FkKH5zZXR0aW5ncykpO1xuICBsZXQgaW1wb3J0ID0gKH5zZXR0aW5ncywgZGF0YSkgPT4gc2F2ZShkZXNlcmlhbGl6ZSh+c2V0dGluZ3MsIGRhdGEpKTtcbn07XG5cbm1vZHVsZSBEb2N1bWVudGF0aW9uID0ge1xuICBsZXQgc2F2ZV9kb2N1bWVudGF0aW9uX2tleTogc3RyaW5nID0gXCJTQVZFX0RPQ1VNRU5UQVRJT05cIjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudCA9IFBlcnNpc3RlbnREYXRhLmRvY3VtZW50YXRpb247XG5cbiAgbGV0IHBlcnNpc3QgPSAoKG5hbWUsIGVkaXRvcjogRWRpdG9yLnQpKSA9PiB7XG4gICAgKG5hbWUsIFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChlZGl0b3Iuc3RhdGUuemlwcGVyKSk7XG4gIH07XG5cbiAgbGV0IHVucGVyc2lzdCA9ICgobmFtZSwgemlwcGVyKSkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdCh6aXBwZXIpO1xuICAgIChuYW1lLCBFZGl0b3IuaW5pdCh6aXBwZXIsIH5yZWFkX29ubHk9ZmFsc2UpKTtcbiAgfTtcblxuICBsZXQgdG9fcGVyc2lzdGVudCA9ICgoc3RyaW5nLCBzbGlkZXMsIHJlc3VsdHMpKTogcGVyc2lzdGVudCA9PiAoXG4gICAgc3RyaW5nLFxuICAgIExpc3QubWFwKHBlcnNpc3QsIHNsaWRlcyksXG4gICAgcmVzdWx0c1xuICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQudG9fcGVyc2lzdGVudClcbiAgICB8PiBNb2RlbFJlc3VsdHMuYmluZGluZ3MsXG4gICk7XG5cbiAgbGV0IG9mX3BlcnNpc3RlbnQgPSAofnNldHRpbmdzLCAoc3RyaW5nLCBzbGlkZXMsIHJlc3VsdHMpOiBwZXJzaXN0ZW50KSA9PiB7XG4gICAgKFxuICAgICAgc3RyaW5nLFxuICAgICAgTGlzdC5tYXAodW5wZXJzaXN0LCBzbGlkZXMpLFxuICAgICAgcmVzdWx0c1xuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5vZl9zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQub2ZfcGVyc2lzdGVudCh+c2V0dGluZ3MpKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBzZXJpYWxpemUgPSBzbGlkZXMgPT4ge1xuICAgIHNsaWRlcyB8PiB0b19wZXJzaXN0ZW50IHw+IHNleHBfb2ZfcGVyc2lzdGVudCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZSA9IGRhdGEgPT4ge1xuICAgIGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBwZXJzaXN0ZW50X29mX3NleHAgfD4gb2ZfcGVyc2lzdGVudDtcbiAgfTtcblxuICBsZXQgc2F2ZSA9IChzbGlkZXMpOiB1bml0ID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9kb2N1bWVudGF0aW9uX2tleSwgc2VyaWFsaXplKHNsaWRlcykpO1xuICB9O1xuXG4gIGxldCBpbml0ID0gKH5zZXR0aW5ncykgPT4ge1xuICAgIGxldCBkb2N1bWVudGF0aW9uID0gb2ZfcGVyc2lzdGVudCh+c2V0dGluZ3MsIEluaXQuc3RhcnR1cC5kb2N1bWVudGF0aW9uKTtcbiAgICBzYXZlKGRvY3VtZW50YXRpb24pO1xuICAgIGRvY3VtZW50YXRpb247XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAofnNldHRpbmdzKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfZG9jdW1lbnRhdGlvbl9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQofnNldHRpbmdzKVxuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgdHJ5KGRlc2VyaWFsaXplKH5zZXR0aW5ncywgZGF0YSkpIHtcbiAgICAgIHwgXyA9PiBpbml0KH5zZXR0aW5ncylcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBleHBvcnQgPSAofnNldHRpbmdzKSA9PiBzZXJpYWxpemUobG9hZCh+c2V0dGluZ3MpKTtcbiAgbGV0IGltcG9ydCA9ICh+c2V0dGluZ3MsIGRhdGEpID0+IHNhdmUoZGVzZXJpYWxpemUofnNldHRpbmdzLCBkYXRhKSk7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSB7XG4gIG9wZW4gRXhlcmNpc2U7XG5cbiAgbGV0IGN1cl9leGVyY2lzZV9rZXkgPSBcIkNVUl9FWEVSQ0lTRVwiO1xuXG4gIGxldCBrZXlzdHJpbmdfb2Zfa2V5ID0ga2V5ID0+IHtcbiAgICBrZXkgfD4gc2V4cF9vZl9rZXkgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQga2V5c3RyaW5nX29mID0gcCA9PiB7XG4gICAga2V5X29mKHApIHw+IGtleXN0cmluZ19vZl9rZXk7XG4gIH07XG5cbiAgbGV0IGtleV9vZl9rZXlzdHJpbmcgPSBrZXlzdHJpbmcgPT4ge1xuICAgIGtleXN0cmluZyB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IGtleV9vZl9zZXhwO1xuICB9O1xuXG4gIGxldCBzYXZlX2V4ZXJjaXNlX2tleSA9IGtleSA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZ19vZl9rZXkoa2V5KSk7XG4gIH07XG5cbiAgbGV0IHNhdmVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mX3N0YXRlKGV4ZXJjaXNlKTtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIGxldCB2YWx1ZSA9IEV4ZXJjaXNlLnNlcmlhbGl6ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGtleXN0cmluZywgdmFsdWUpO1xuICB9O1xuXG4gIGxldCBpbml0X2V4ZXJjaXNlID0gKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mKHNwZWMpO1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyhzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBzYXZlX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nKTtcbiAgICBleGVyY2lzZTtcbiAgfTtcblxuICBsZXQgbG9hZF9leGVyY2lzZSA9IChrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpOiBFeGVyY2lzZS5zdGF0ZSA9PiB7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShrZXlzdHJpbmcpKSB7XG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICBsZXQgZXhlcmNpc2UgPVxuICAgICAgICB0cnkoRXhlcmNpc2UuZGVzZXJpYWxpemVfZXhlcmNpc2UoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIHwgXyA9PiBpbml0X2V4ZXJjaXNlKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgICAgIH07XG4gICAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nKTtcbiAgICAgIGV4ZXJjaXNlO1xuICAgIHwgTm9uZSA9PiBpbml0X2V4ZXJjaXNlKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc2F2ZSA9ICgobiwgc3BlY3MsIGV4ZXJjaXNlKSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBrZXkgPSBrZXlfb2YoTGlzdC5udGgoc3BlY3MsIG4pKTtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIHNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmcpO1xuICB9O1xuXG4gIGxldCBpbml0ID0gKH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQgZXhlcmNpc2VzID0ge1xuICAgICAgKFxuICAgICAgICAwLFxuICAgICAgICBFeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgICAgTGlzdC5udGgoRXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMsIDApXG4gICAgICAgIHw+IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMofmluc3RydWN0b3JfbW9kZSksXG4gICAgICApO1xuICAgIH07XG4gICAgc2F2ZShleGVyY2lzZXMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIGV4ZXJjaXNlcztcbiAgfTtcblxuICBsZXQgbG9hZCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5KSkge1xuICAgIHwgU29tZShrZXlzdHJpbmcpID0+XG4gICAgICBsZXQga2V5ID0ga2V5X29mX2tleXN0cmluZyhrZXlzdHJpbmcpO1xuICAgICAgc3dpdGNoIChFeGVyY2lzZS5maW5kX2tleV9vcHQoa2V5LCBzcGVjcykpIHtcbiAgICAgIHwgU29tZSgobiwgc3BlYykpID0+XG4gICAgICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGtleXN0cmluZykpIHtcbiAgICAgICAgfCBTb21lKGRhdGEpID0+XG4gICAgICAgICAgbGV0IGV4ZXJjaXNlID1cbiAgICAgICAgICAgIHRyeShkZXNlcmlhbGl6ZV9leGVyY2lzZShkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgICAgIHwgXyA9PiBpbml0X2V4ZXJjaXNlKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIChuLCBzcGVjcywgZXhlcmNpc2UpO1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvLyBpbml0aWFsaXplIGV4ZXJjaXNlIGZyb20gc3BlY1xuICAgICAgICAgIGxldCBleGVyY2lzZSA9IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMoc3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgICAgICAgc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgICAgICAgKG4sIHNwZWNzLCBleGVyY2lzZSk7XG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICAvLyBpbnZhbGlkIGN1cnJlbnQgZXhlcmNpc2Uga2V5IHNhdmVkLCBsb2FkIHRoZSBmaXJzdCBleGVyY2lzZVxuICAgICAgICBsZXQgZmlyc3Rfc3BlYyA9IExpc3QubnRoKHNwZWNzLCAwKTtcbiAgICAgICAgbGV0IGZpcnN0X2tleSA9IEV4ZXJjaXNlLmtleV9vZihmaXJzdF9zcGVjKTtcbiAgICAgICAgKDAsIHNwZWNzLCBsb2FkX2V4ZXJjaXNlKGZpcnN0X2tleSwgZmlyc3Rfc3BlYywgfmluc3RydWN0b3JfbW9kZSkpO1xuICAgICAgfTtcbiAgICB8IE5vbmUgPT4gaW5pdCh+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHByZXBfZXhlcmNpc2VfZXhwb3J0ID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHtcbiAgICAgIGN1cl9leGVyY2lzZTpcbiAgICAgICAga2V5X29mX2tleXN0cmluZyhcbiAgICAgICAgICBPcHRpb24uZ2V0KEpzVXRpbC5nZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5KSksXG4gICAgICAgICksXG4gICAgICBleGVyY2lzZV9kYXRhOlxuICAgICAgICBzcGVjc1xuICAgICAgICB8PiBMaXN0Lm1hcChzcGVjID0+IHtcbiAgICAgICAgICAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mKHNwZWMpO1xuICAgICAgICAgICAgIGxldCBleGVyY2lzZSA9XG4gICAgICAgICAgICAgICBsb2FkX2V4ZXJjaXNlKGtleSwgc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICAgICAgICAgICAgIHw+IEV4ZXJjaXNlLnBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUofmluc3RydWN0b3JfbW9kZSk7XG4gICAgICAgICAgICAgKGtleSwgZXhlcmNpc2UpO1xuICAgICAgICAgICB9KSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0ID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHByZXBfZXhlcmNpc2VfZXhwb3J0KH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSlcbiAgICB8PiBzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydFxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGV4cG9ydCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0KH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IGltcG9ydCA9IChkYXRhLCB+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQgZXhlcmNpc2VfZXhwb3J0ID0gZGF0YSB8PiBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQ7XG4gICAgc2F2ZV9leGVyY2lzZV9rZXkoZXhlcmNpc2VfZXhwb3J0LmN1cl9leGVyY2lzZSk7XG4gICAgZXhlcmNpc2VfZXhwb3J0LmV4ZXJjaXNlX2RhdGFcbiAgICB8PiBMaXN0Lml0ZXIoKChrZXksIHBlcnNpc3RlbnRfc3RhdGUpKSA9PiB7XG4gICAgICAgICBsZXQgc3BlYyA9IEV4ZXJjaXNlLmZpbmRfa2V5X29wdChrZXksIHNwZWNzKTtcbiAgICAgICAgIHN3aXRjaCAoc3BlYykge1xuICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgIHByaW50X2VuZGxpbmUoXCJXYXJuaW5nOiBzYXZlZCBrZXkgZG9lcyBub3QgY29ycmVzcG9uZCB0byBleGVyY2lzZVwiKVxuICAgICAgICAgfCBTb21lKChfLCBzcGVjKSkgPT5cbiAgICAgICAgICAgc2F2ZV9leGVyY2lzZShcbiAgICAgICAgICAgICBFeGVyY2lzZS51bnBlcnNpc3Rfc3RhdGUoXG4gICAgICAgICAgICAgICBwZXJzaXN0ZW50X3N0YXRlLFxuICAgICAgICAgICAgICAgfnNwZWMsXG4gICAgICAgICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgfmluc3RydWN0b3JfbW9kZSxcbiAgICAgICAgICAgKVxuICAgICAgICAgfTtcbiAgICAgICB9KTtcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbi8qIE1PREVMOlxuXG4gICAgICBUaGUgbW9kZWwgY29uc2lzdHMgb2YgdGhyZWUgYnJvYWQgY2F0ZWdvcmllcy4gRWRpdG9ycyBpcyB0aGUgbWVhdCxcbiAgICAgIGNvbnRhaW5pbmcgdGhlIGNvZGUgY29udGVudCBhbmQgY3Vyc29yL3NlbGVjdGlvbi9idWZmZXIgc3RhdGUgZm9yIGFsbFxuICAgICAgYWN0aXZlIGVkaXRvcnMuIFNldHRpbmdzIGFyZSB1c2VyLXNlbGVjdGFibGUgcHJlZmVyZW5jZXMuIFRvZ2V0aGVyLFxuICAgICAgdGhlc2UgdHdvIGNvbXByaXNlIHRoZSBwZXJzaXN0ZW50IHN0YXRlIG9mIHRoZSBhcHBsaWNhdGlvbiB3aGljaCBpc1xuICAgICAgc2F2ZWQgdG8gbG9jYWxzdG9yZS5cblxuICAgICAgTWV0YSBvbiB0aGUgb3RoZXIgaGFuZCBjb25zaXN0cyBvZiBldmVyeXRoaW5nIHdoaWNoIGlzIG5vdFxuICAgICAgcGVyaXN0YW50LCBpbmNsdWRpbmcgdHJhbnNpdG9yeSB1aV9zdGF0ZSBzdWNoIGFzIHdoZXRoZXIgdGhlIG1vdXNlXG4gICAgICBpcyBoZWxkIGRvd24uXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uLCBzZXhwKV1cbnR5cGUgdGltZXN0YW1wID0gZmxvYXQ7XG5cbi8qIE5vbi1wZXJzaXN0ZW50IGFwcGxpY2F0aW9uIHN0YXRlICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHVpX3N0YXRlID0ge1xuICBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gIHNob3dfYmFja3BhY2tfdGFyZ2V0czogYm9vbCxcbiAgbW91c2Vkb3duOiBib29sLFxuICBhY3RpdmVfZWRpdG9yOiBvcHRpb24oRWRpdG9ycy5TZWxlY3Rpb24udCksXG59O1xuXG5sZXQgdWlfc3RhdGVfaW5pdCA9IHtcbiAgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy5pbml0LFxuICBzaG93X2JhY2twYWNrX3RhcmdldHM6IGZhbHNlLFxuICBtb3VzZWRvd246IGZhbHNlLFxuICBhY3RpdmVfZWRpdG9yOiBOb25lLFxufTtcblxudHlwZSB0ID0ge1xuICBlZGl0b3JzOiBFZGl0b3JzLnQsXG4gIHNldHRpbmdzOiBTZXR0aW5ncy50LFxuICByZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgc3RhdGljczogQ2FjaGVkU3RhdGljcy50LFxuICBleHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gIHVpX3N0YXRlLFxufTtcblxubGV0IGN1dG9mZiA9ICg9PT0pO1xuXG5sZXQgbWsgPSAoZWRpdG9ycywgcmVzdWx0cywgc3RhdGljcykgPT4ge1xuICBlZGl0b3JzLFxuICBzZXR0aW5nczogSW5pdC5zdGFydHVwLnNldHRpbmdzLFxuICByZXN1bHRzLFxuICBzdGF0aWNzLFxuICBleHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLmluaXQsXG4gIHVpX3N0YXRlOiB1aV9zdGF0ZV9pbml0LFxufTtcblxubGV0IGJsYW5rID1cbiAgbWsoRWRpdG9ycy5TY3JhdGNoKDAsIFtdKSwgTW9kZWxSZXN1bHRzLmVtcHR5LCBDYWNoZWRTdGF0aWNzLmVtcHR5KTtcblxubGV0IGxvYWRfZWRpdG9ycyA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQpOiAoRWRpdG9ycy50LCBNb2RlbFJlc3VsdHMudCkgPT5cbiAgc3dpdGNoIChzZXR0aW5ncy5tb2RlKSB7XG4gIHwgU2NyYXRjaCA9PlxuICAgIGxldCAoaWR4LCBzbGlkZXMsIHJlc3VsdHMpID0gU3RvcmUuU2NyYXRjaC5sb2FkKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlKTtcbiAgICAoU2NyYXRjaChpZHgsIHNsaWRlcyksIHJlc3VsdHMpO1xuICB8IERvY3VtZW50YXRpb24gPT5cbiAgICBsZXQgKG5hbWUsIHNsaWRlcywgcmVzdWx0cykgPVxuICAgICAgU3RvcmUuRG9jdW1lbnRhdGlvbi5sb2FkKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlKTtcbiAgICAoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpLCByZXN1bHRzKTtcbiAgfCBFeGVyY2lzZXMgPT5cbiAgICBsZXQgKG4sIHNwZWNzLCBleGVyY2lzZSkgPVxuICAgICAgU3RvcmUuRXhlcmNpc2UubG9hZChcbiAgICAgICAgfnNwZWNzPUV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlPXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSxcbiAgICAgICk7XG4gICAgKEV4ZXJjaXNlcyhuLCBzcGVjcywgZXhlcmNpc2UpLCBNb2RlbFJlc3VsdHMuZW1wdHkpO1xuICB9O1xuXG5sZXQgc2F2ZV9lZGl0b3JzID1cbiAgICAoZWRpdG9yczogRWRpdG9ycy50LCByZXN1bHRzOiBNb2RlbFJlc3VsdHMudCwgfmluc3RydWN0b3JfbW9kZTogYm9vbClcbiAgICA6IHVuaXQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+IFN0b3JlLlNjcmF0Y2guc2F2ZSgobiwgc2xpZGVzLCByZXN1bHRzKSlcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLnNhdmUoKG5hbWUsIHNsaWRlcywgcmVzdWx0cykpXG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBTdG9yZS5FeGVyY2lzZS5zYXZlKChuLCBzcGVjcywgZXhlcmNpc2UpLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICB9O1xuXG5sZXQgbG9hZCA9IChpbml0X21vZGVsOiB0KTogdCA9PiB7XG4gIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmxvYWQoKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmxvYWQoKTtcbiAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9IGxvYWRfZWRpdG9ycyh+c2V0dGluZ3MpO1xuICBsZXQgdWlfc3RhdGUgPSBpbml0X21vZGVsLnVpX3N0YXRlO1xuICBsZXQgc3RhdGljcyA9IEVkaXRvcnMubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICB7ZWRpdG9ycywgc2V0dGluZ3MsIHJlc3VsdHMsIHN0YXRpY3MsIGV4cGxhaW5UaGlzTW9kZWwsIHVpX3N0YXRlfTtcbn07XG5cbmxldCBzYXZlID0gKHtlZGl0b3JzLCBzZXR0aW5ncywgZXhwbGFpblRoaXNNb2RlbCwgcmVzdWx0cywgX306IHQpID0+IHtcbiAgc2F2ZV9lZGl0b3JzKGVkaXRvcnMsIHJlc3VsdHMsIH5pbnN0cnVjdG9yX21vZGU9c2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgU3RvcmUuRXhwbGFpblRoaXNNb2RlbC5zYXZlKGV4cGxhaW5UaGlzTW9kZWwpO1xuICBTdG9yZS5TZXR0aW5ncy5zYXZlKHNldHRpbmdzKTtcbn07XG5cbmxldCBzYXZlX2FuZF9yZXR1cm4gPSAobW9kZWw6IHQpID0+IHtcbiAgc2F2ZShtb2RlbCk7XG4gIE9rKG1vZGVsKTtcbn07XG5sZXQgcmVzZXQgPSAobW9kZWw6IHQpOiB0ID0+IHtcbiAgLyogUmVzZXQgbW9kZWwgdG8gZGVmYXVsdCwgaW5jbHVkaW5nIGluIGxvY2Fsc3RvcmFnZSxcbiAgICAgYnV0IGRvbid0IG90aGVyd2lzZSBlcmFzZSBsb2NhbHN0b3JhZ2UsIGFsbG93aW5nXG4gICAgIGUuZy4gYXBpIGtleXMgdG8gcGVyc2lzdCAqL1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5pbml0KCkuY29yZTtcbiAgaWdub3JlKFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwuaW5pdCgpKTtcbiAgaWdub3JlKFN0b3JlLlNjcmF0Y2guaW5pdCh+c2V0dGluZ3MpKTtcbiAgaWdub3JlKFN0b3JlLkRvY3VtZW50YXRpb24uaW5pdCh+c2V0dGluZ3MpKTtcbiAgaWdub3JlKFN0b3JlLkV4ZXJjaXNlLmluaXQofmluc3RydWN0b3JfbW9kZT10cnVlKSk7XG4gIGxldCBuZXdfbW9kZWwgPSBsb2FkKGJsYW5rKTtcbiAge1xuICAgIC4uLm5ld19tb2RlbCxcbiAgICB1aV9zdGF0ZToge1xuICAgICAgLi4ubW9kZWwudWlfc3RhdGUsXG4gICAgICBmb250X21ldHJpY3M6IG1vZGVsLnVpX3N0YXRlLmZvbnRfbWV0cmljcyxcbiAgICB9LFxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBldmFsdWF0aW9uX3NldHRpbmdzX2FjdGlvbiA9XG4gIHwgU2hvd1JlY29yZFxuICB8IFNob3dDYXNlQ2xhdXNlc1xuICB8IFNob3dGbkJvZGllc1xuICB8IFNob3dDYXN0c1xuICB8IFNob3dGaXhwb2ludHNcbiAgfCBTaG93TG9va3Vwc1xuICB8IFNob3dGaWx0ZXJzXG4gIHwgU2hvd1NldHRpbmdzXG4gIHwgU2hvd0hpZGRlblN0ZXBzO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNldHRpbmdzX2FjdGlvbiA9XG4gIHwgQ2FwdGlvbnNcbiAgfCBTZWNvbmRhcnlJY29uc1xuICB8IFN0YXRpY3NcbiAgfCBEeW5hbWljc1xuICB8IEFzc2lzdFxuICB8IEVsYWJvcmF0ZVxuICB8IEJlbmNobWFya1xuICB8IENvbnRleHRJbnNwZWN0b3JcbiAgfCBJbnN0cnVjdG9yTW9kZVxuICB8IEV2YWx1YXRpb24oZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb24pXG4gIHwgRXhwbGFpblRoaXMoRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy5hY3Rpb24pXG4gIHwgTW9kZShTZXR0aW5ncy5tb2RlKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwcGVyX2FjdGlvbiA9XG4gIHwgU3RlcEZvcndhcmQoaW50KVxuICB8IFN0ZXBCYWNrd2FyZFxuICB8IEhpZGVTdGVwcGVyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFnZW50ID1cbiAgfCBUeURpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFnZW50X2FjdGlvbiA9XG4gIHwgUHJvbXB0KGFnZW50KVxuICB8IEFjY2VwdFN1Z2dlc3Rpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2V0X21ldGEgPVxuICB8IE1vdXNlZG93blxuICB8IE1vdXNldXBcbiAgfCBTaG93QmFja3BhY2tUYXJnZXRzKGJvb2wpXG4gIHwgRm9udE1ldHJpY3MoRm9udE1ldHJpY3MudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYmVuY2htYXJrX2FjdGlvbiA9XG4gIHwgU3RhcnRcbiAgfCBGaW5pc2g7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZWRpdG9yX2FjdGlvbiA9XG4gIHwgUGVyZm9ybShBY3Rpb24udCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2VsbF9hY3Rpb24gPVxuICB8IFRvZ2dsZVN0ZXBwZXJcbiAgfCBTdGVwcGVyKHN0ZXBwZXJfYWN0aW9uKVxuICB8IEVkaXRvcihlZGl0b3JfYWN0aW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgLyogbWV0YSAqL1xuICB8IFJlc2V0XG4gIHwgU2V0KHNldHRpbmdzX2FjdGlvbilcbiAgfCBTZXRNZXRhKHNldF9tZXRhKVxuICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoRXhwbGFpblRoaXNVcGRhdGUudXBkYXRlKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgRGVidWdDb25zb2xlKHN0cmluZylcbiAgLyogZWRpdG9ycyAqL1xuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IEluaXRJbXBvcnRBbGwoW0BvcGFxdWVdIEpzX29mX29jYW1sLkpzLnQoSnNfb2Zfb2NhbWwuRmlsZS5maWxlKSlcbiAgfCBGaW5pc2hJbXBvcnRBbGwob3B0aW9uKHN0cmluZykpXG4gIHwgTWFrZUFjdGl2ZShFZGl0b3JzLlNlbGVjdGlvbi50KVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShzdHJpbmcpIC8vZXhhbXBsZW1vZGUgb25seVxuICAvLyBlZGl0b3JzOiBzY3JhdGNobW9kZSBvbmx5XG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoW0BvcGFxdWVdIEpzX29mX29jYW1sLkpzLnQoSnNfb2Zfb2NhbWwuRmlsZS5maWxlKSlcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKG9wdGlvbihzdHJpbmcpKVxuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShpbnQpXG4gIC8qIGVkaXRvciAqL1xuICB8IFRBQlxuICB8IFNhdmVcbiAgfCBQZXJmb3JtQWN0aW9uKEFjdGlvbi50KVxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgQ3V0XG4gIHwgQ29weVxuICB8IFVuZG9cbiAgfCBSZWRvXG4gIHwgTW92ZVRvTmV4dEhvbGUoRGlyZWN0aW9uLnQpXG4gIHwgQmVuY2htYXJrKGJlbmNobWFya19hY3Rpb24pXG4gIHwgQXNzaXN0YW50KGFnZW50X2FjdGlvbilcbiAgfCBUb2dnbGVTdGVwcGVyKE1vZGVsUmVzdWx0cy5LZXkudClcbiAgfCBTdGVwcGVyQWN0aW9uKE1vZGVsUmVzdWx0cy5LZXkudCwgc3RlcHBlcl9hY3Rpb24pXG4gIHwgVXBkYXRlRXZhbHMoV29ya2VyU2VydmVyLlJlc3BvbnNlLnQpXG4gIHwgVXBkYXRlUmVzdWx0KE1vZGVsUmVzdWx0cy50KTtcblxubW9kdWxlIEZhaWx1cmUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IENhbnRSZXNldFxuICAgIHwgQ2FudFN1Z2dlc3RcbiAgICB8IEZhaWxlZFRvTG9hZFxuICAgIHwgRmFpbGVkVG9Td2l0Y2hcbiAgICB8IEZhaWxlZFRvUGVyZm9ybShBY3Rpb24uRmFpbHVyZS50KVxuICAgIHwgRXhjZXB0aW9uKHN0cmluZyk7XG59O1xuXG5tb2R1bGUgUmVzdWx0ID0ge1xuICBpbmNsdWRlIFJlc3VsdDtcbiAgdHlwZSB0KCdzdWNjZXNzKSA9IFJlc3VsdC50KCdzdWNjZXNzLCBGYWlsdXJlLnQpO1xufTtcblxubGV0IGlzX2VkaXQ6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gQWN0aW9uLmlzX2VkaXQoYSlcbiAgfCBTZXQoc19hY3Rpb24pID0+XG4gICAgc3dpdGNoIChzX2FjdGlvbikge1xuICAgIHwgTW9kZShfKSA9PiB0cnVlXG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IEFzc2lzdFxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBFeHBsYWluVGhpcyhfKVxuICAgIHwgRHluYW1pY3NcbiAgICB8IEJlbmNobWFya1xuICAgIHwgQ29udGV4dEluc3BlY3RvclxuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IEV2YWx1YXRpb24oXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgU2V0TWV0YShtZXRhX2FjdGlvbikgPT5cbiAgICBzd2l0Y2ggKG1ldGFfYWN0aW9uKSB7XG4gICAgfCBNb3VzZWRvd25cbiAgICB8IE1vdXNldXBcbiAgICB8IFNob3dCYWNrcGFja1RhcmdldHMoXylcbiAgICB8IEZvbnRNZXRyaWNzKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEN1dFxuICB8IFVuZG9cbiAgfCBSZWRvXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXylcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbilcbiAgfCBSZXNldCA9PiB0cnVlXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgVXBkYXRlRXZhbHMoXylcbiAgfCBNYWtlQWN0aXZlKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBTYXZlXG4gIHwgQ29weVxuICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IEJlbmNobWFyayhfKVxuICB8IFRBQlxuICB8IEFzc2lzdGFudChQcm9tcHQoXykpID0+IGZhbHNlO1xuXG5sZXQgcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZTogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgUGVyZm9ybUFjdGlvbihhKSA9PiBBY3Rpb24uaXNfZWRpdChhKVxuICB8IFNldChzX2FjdGlvbikgPT5cbiAgICBzd2l0Y2ggKHNfYWN0aW9uKSB7XG4gICAgfCBBc3Npc3RcbiAgICB8IENhcHRpb25zXG4gICAgfCBTZWNvbmRhcnlJY29uc1xuICAgIHwgU3RhdGljc1xuICAgIHwgQ29udGV4dEluc3BlY3RvclxuICAgIHwgQmVuY2htYXJrXG4gICAgfCBFeHBsYWluVGhpcyhfKVxuICAgIHwgRXZhbHVhdGlvbihcbiAgICAgICAgU2hvd0Nhc2VDbGF1c2VzIHwgU2hvd0ZuQm9kaWVzIHwgU2hvd0Nhc3RzIHwgU2hvd1JlY29yZCB8IFNob3dGaXhwb2ludHMgfFxuICAgICAgICBTaG93TG9va3VwcyB8XG4gICAgICAgIFNob3dGaWx0ZXJzIHxcbiAgICAgICAgU2hvd1NldHRpbmdzIHxcbiAgICAgICAgU2hvd0hpZGRlblN0ZXBzLFxuICAgICAgKSA9PlxuICAgICAgZmFsc2VcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgRHluYW1pY3NcbiAgICB8IEluc3RydWN0b3JNb2RlXG4gICAgfCBNb2RlKF8pID0+IHRydWVcbiAgICB9XG4gIHwgU2V0TWV0YShtZXRhX2FjdGlvbikgPT5cbiAgICBzd2l0Y2ggKG1ldGFfYWN0aW9uKSB7XG4gICAgfCBNb3VzZWRvd25cbiAgICB8IE1vdXNldXBcbiAgICB8IFNob3dCYWNrcGFja1RhcmdldHMoXylcbiAgICB8IEZvbnRNZXRyaWNzKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEFzc2lzdGFudChBY2NlcHRTdWdnZXN0aW9uKSA9PiB0cnVlXG4gIHwgQXNzaXN0YW50KFByb21wdChfKSkgPT4gZmFsc2VcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IFNhdmVcbiAgfCBDb3B5XG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgVXBkYXRlRXZhbHMoXylcbiAgfCBNYWtlQWN0aXZlKF8pXG4gIHwgRGVidWdDb25zb2xlKF8pXG4gIHwgVEFCXG4gIHwgQmVuY2htYXJrKF8pID0+IGZhbHNlXG4gIHwgU3RlcHBlckFjdGlvbihfLCBTdGVwRm9yd2FyZChfKSB8IFN0ZXBCYWNrd2FyZCB8IEhpZGVTdGVwcGVyKVxuICB8IFRvZ2dsZVN0ZXBwZXIoXylcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoXylcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXylcbiAgfCBSZXNldFxuICB8IEN1dFxuICB8IFVuZG9cbiAgfCBSZWRvID0+IHRydWU7XG5cbmxldCBzaG91bGRfc2Nyb2xsX3RvX2NhcmV0ID1cbiAgZnVuXG4gIHwgU2V0KHNfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IE1vZGUoXykgPT4gdHJ1ZVxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBBc3Npc3RcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgRXhwbGFpblRoaXMoXylcbiAgICB8IER5bmFtaWNzXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IENvbnRleHRJbnNwZWN0b3JcbiAgICB8IEluc3RydWN0b3JNb2RlXG4gICAgfCBFdmFsdWF0aW9uKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IFNldE1ldGEobWV0YV9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChtZXRhX2FjdGlvbikge1xuICAgIHwgRm9udE1ldHJpY3MoXykgPT4gdHJ1ZVxuICAgIHwgTW91c2Vkb3duXG4gICAgfCBNb3VzZXVwXG4gICAgfCBTaG93QmFja3BhY2tUYXJnZXRzKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEFzc2lzdGFudChQcm9tcHQoXykpXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgVXBkYXRlRXZhbHMoXylcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgU3RlcHBlckFjdGlvbihfLCBTdGVwQmFja3dhcmQgfCBTdGVwRm9yd2FyZChfKSB8IEhpZGVTdGVwcGVyKSA9PiBmYWxzZVxuICB8IEFzc2lzdGFudChBY2NlcHRTdWdnZXN0aW9uKSA9PiB0cnVlXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IE1ha2VBY3RpdmUoXylcbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoXylcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXylcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IFJlc2V0XG4gIHwgQ29weVxuICB8IEN1dFxuICB8IFVuZG9cbiAgfCBSZWRvXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBUQUIgPT4gdHJ1ZVxuICB8IFBlcmZvcm1BY3Rpb24oYSkgPT5cbiAgICBzd2l0Y2ggKGEpIHtcbiAgICB8IE1vdmUoXylcbiAgICB8IE1vdmVUb05leHRIb2xlKF8pXG4gICAgfCBKdW1wKF8pXG4gICAgfCBTZWxlY3QoUmVzaXplKF8pIHwgVGVybShfKSB8IFNtYXJ0IHwgVGlsZShfKSlcbiAgICB8IERlc3RydWN0KF8pXG4gICAgfCBJbnNlcnQoXylcbiAgICB8IFBpY2tfdXBcbiAgICB8IFB1dF9kb3duXG4gICAgfCBSb3RhdGVCYWNrcGFja1xuICAgIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoXylcbiAgICB8IFBhc3RlKF8pID0+IHRydWVcbiAgICB8IFVuc2VsZWN0KF8pXG4gICAgfCBTZWxlY3QoQWxsKVxuICAgIHwgU3VnZ2VzdChfKVxuICAgIHwgUmVzZXRTdWdnZXN0aW9uID0+IGZhbHNlXG4gICAgfVxuICB8IFNhdmVcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBCZW5jaG1hcmsoXykgPT4gZmFsc2U7XG4iLCJvcGVuIEhhejNsY29yZTtcbmluY2x1ZGUgVXBkYXRlQWN0aW9uO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubGV0IGFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMgPVxuICAgIChcbiAgICAgIHtzZXR0aW5ncywgdWlfc3RhdGU6IHthY3RpdmVfZWRpdG9yOiBzZWxlY3Rpb24sIF99LCBffSBhcyBtb2RlbDogTW9kZWwudCxcbiAgICAgIGFnZW50X2FjdGlvbixcbiAgICApXG4gICAgOiBsaXN0KEFjdGlvbi50KSA9PlxuICB7XG4gICAgbGV0KiBzZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgbGV0KyBlZGl0b3IgPVxuICAgICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIG1vZGVsLmVkaXRvcnMsIG1vZGVsLnJlc3VsdHMpO1xuICAgIGxldCB6ID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBzd2l0Y2ggKGFnZW50X2FjdGlvbikge1xuICAgIHwgUHJvbXB0KFR5RGkpID0+XG4gICAgICBsZXQgY3R4X2luaXQgPSBFZGl0b3JzLmdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIG1vZGVsLmVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChUeURpLnN1Z2dlc3QofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIH5jdHg9Y3R4X2luaXQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShzdWdnZXN0aW9uKSA9PiBbQWN0aW9uLlN1Z2dlc3Qoc3VnZ2VzdGlvbildXG4gICAgICB9O1xuICAgIHwgQWNjZXB0U3VnZ2VzdGlvbiA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcImFjY2VwdGluZyBzdWdnZXN0aW9uXCIpO1xuICAgICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgICB8IE5vcm1hbCA9PiBbXVxuICAgICAgfCBCdWZmZXIoUGFyc2VkKSA9PiBbVW5zZWxlY3QoU29tZShSaWdodCkpXVxuICAgICAgfCBCdWZmZXIoVW5wYXJzZWQpID0+XG4gICAgICAgIHN3aXRjaCAoVHlEaS5nZXRfYnVmZmVyKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICAvKiBUaGlzIGNhc2Ugc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBhc3N1bWUgdGhhdCB3ZSBwcmV2YWxpZGF0ZVxuICAgICAgICAgKiBldmVyeXRoaW5nIHdlIHB1dCBpbiB0aGUgdW5wYXJzZWQgYnVmZmVyKi9cbiAgICAgICAgfCBTb21lKGNvbXBsZXRpb24pIHdoZW4gU3RyaW5nLmNvbnRhaW5zKGNvbXBsZXRpb24sICcgJykgPT5cbiAgICAgICAgICAvKiBTbGlnaHRseSBoYWNreS4gV2UgYXNzdW1lIHRoYXQgaWYgYSBjb21wbGV0aW9uIHN0cmluZyBoYXNcbiAgICAgICAgICAgKiBzcGFjZXMgaW4gaXQsIHRoYXQgbWVhbnMgaXQgd2lsbCBoYXZlIGEgaG9sZSBpbiBpdC4gVGhpc1xuICAgICAgICAgICAqIGlzIGEgbm9uLWVzc2VudGlhbCBpbnZhcmlhbnQgY3VycmVudGx5IG1haW50YWluZWQgaW4gVHlEaS5cbiAgICAgICAgICAgKiBJbiBzdWNoIGEgY2FzZSwgd2UgaW5zZXJ0IHRoZSBjb21wbGV0aW9uIGFzIG5vcm1hbCBieVxuICAgICAgICAgICAqIHBhc3RpbmcsIHRoZW4gcmV0dXJuIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGFkdmFuY2UgdG8gdGhlXG4gICAgICAgICAgICogZmlyc3QgaG9sZS4gVGhpcyBzaG91bGQgYmUgcmV2aXNpdGVkIGlmIGNvbXBsZXRpb25zIGFyZVxuICAgICAgICAgICAqIHJlZmFjdG9yZWQgdG8gdXNlIGEgbW9yZSBzdHJ1Y3R1cmVkIGJ1ZmZlciBmb3JtYXQgKi9cbiAgICAgICAgICBtb2R1bGUgTSA9ICh2YWwgRWRpdG9yLk1ldGEubW9kdWxlX29mX3QoZWRpdG9yLnN0YXRlLm1ldGEpKTtcbiAgICAgICAgICBsZXQgc3RhcnQgPSBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCwgeik7XG4gICAgICAgICAgW1xuICAgICAgICAgICAgUGFzdGUoQXNzaXN0YW50RXhwYW5kZXIudHJpbShjb21wbGV0aW9uKSksXG4gICAgICAgICAgICBNb3ZlKEdvYWwoUG9pbnQoc3RhcnQpKSksXG4gICAgICAgICAgICBNb3ZlVG9OZXh0SG9sZShSaWdodCksXG4gICAgICAgICAgICBNb3ZlKExvY2FsKExlZnQoQnlUb2tlbikpKSxcbiAgICAgICAgICBdO1xuICAgICAgICB8IFNvbWUoY29tcGxldGlvbikgPT4gW1Bhc3RlKEFzc2lzdGFudEV4cGFuZGVyLnRyaW0oY29tcGxldGlvbikpXVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIH1cbiAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgfD4gTGlzdC5mbGF0dGVuO1xuIiwibGV0IHNhbXBsZV8xID0ge3wjIEhhemVsIExhbmd1YWdlIFF1aWNrIFJlZmVyZW5jZSAjXG5cbiMgUmVjdXJzaXZlIEZ1bmN0aW9ucyAoYXJyb3cgdHlwZSBhbm5vdGF0aW9uIHJlcXVpcmVkKSAjXG5sZXQgZG91YmxlX3JlY3Vyc2l2ZWx5IDogSW50IC0+IEludCA9XG4gIGZ1biBuIC0+XG4gICAgaWYgbiA9PSAwIHRoZW4gMFxuICAgIGVsc2UgZG91YmxlX3JlY3Vyc2l2ZWx5KG4gLSAxKSArIDJcbmluXG5cbiMgTGlzdHMgI1xubGV0IGVtcHR5X2xpc3QgOiBbSW50XSA9IFtdIGluXG5sZXQgbm9uX2VtcHR5X2xpc3QgOiBbSW50XSA9IDE6OjI6OjM6OltdIGluXG5sZXQgbGlzdF9saXRlcmFscyA6IFtJbnRdID0gWzEsIDIsIDNdIGluXG5sZXQgbGVuZ3RoIDogW0ludF0gLT4gSW50ID1cbiAgZnVuIHhzIC0+XG4gICAgY2FzZSB4c1xuICAgICAgfCBbXSA9PiAwXG4gICAgICB8IGhkOjp0bCA9PiAxICsgbGVuZ3RoKHRsKVxuICAgIGVuZFxuaW5cbmxldCBoYXNfYXRfbGVhc3RfdHdvX2VsZW1lbnRzIDogW0ludF0gLT4gQm9vbCA9XG4gIGZ1biB4cyAtPlxuICAgIGNhc2UgeHNcbiAgICAgIHwgW10gPT4gZmFsc2VcbiAgICAgIHwgaGQ6OltdID0+IGZhbHNlXG4gICAgICB8IGE6OmI6OltdID0+IHRydWVcbiAgICBlbmRcbmluXG5cbiMgU3RyaW5ncyAjXG5sZXQgc3RyaW5nX2xpdHMgPSBcIkhlbGxvLCB3b3JsZCFcIiBpblxubGV0IHN0cmluZ19lcXVhbGl0eSA9IHN0cmluZ19saXRzICQ9PSBcIkhlbGxvLCB3b3JsZCFcIiBpblxuXG4jIE5vbi1lbXB0eSBob2xlcyBhcmUgdGhlIHJlZCBkb3R0ZWQgYm94ZXMgYXJvdW5kIGVycm9ycyAjXG4jICh5b3UgY2FuIHN0aWxsIHJ1biBwcm9ncmFtcyB3aXRoIG5vbi1lbXB0eSBob2xlcykgI1xubGV0IG5vbl9lbXB0eV9ob2xlIDogSW50ID0gdHJ1ZSBpblxuXG4yICsgMlxufH07XG5cbmxldCBzdHJfdG9faW5zZXJ0cyA9IChzdHI6IHN0cmluZyk6IGxpc3QoVXBkYXRlQWN0aW9uLnQpID0+XG4gIExpc3QuaW5pdChcbiAgICBTdHJpbmcubGVuZ3RoKHN0ciksXG4gICAgaSA9PiB7XG4gICAgICBsZXQgYyA9IFN0cmluZy5zdWIoc3RyLCBpLCAxKTtcbiAgICAgIGxldCBjID0gYyA9PSBcIlxcblwiID8gSGF6M2xjb3JlLkZvcm0ubGluZWJyZWFrIDogYztcbiAgICAgIFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKEluc2VydChjKSk7XG4gICAgfSxcbiAgKTtcblxubGV0IGFjdGlvbnNfMSA9IHN0cl90b19pbnNlcnRzKHNhbXBsZV8xKSBAIFtCZW5jaG1hcmsoRmluaXNoKV07XG5cbmxldCB0aW1lID0gcmVmKC0xLjApO1xuXG5sZXQgc3RhcnQgPSAoKTogdW5pdCA9PiB7XG4gIHRpbWUgOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICBwcmludF9lbmRsaW5lKFwiQmVuY2htYXJrOiBTdGFydGluZ1wiKTtcbn07XG5cbmxldCBmaW5pc2ggPSAoKTogdW5pdCA9PiB7XG4gIHN3aXRjaCAodGltZV4pIHtcbiAgfCAoLTEuMCkgPT5cbiAgICBQcmludGYuc3ByaW50ZihcIkJlbmNobWFyazogRXJyb3I6IE5vIGJlbmNobWFyayBydW5uaW5nXCIpIHw+IHByaW50X2VuZGxpbmVcblxuICB8IF8gPT5cbiAgICBsZXQgZWxhcHNlZCA9IChKc1V0aWwudGltZXN0YW1wKCkgLS4gdGltZV4pIC8uIDEwMDAuO1xuICAgIHRpbWUgOj0gKC0xLjApO1xuICAgIFByaW50Zi5zcHJpbnRmKFwiQmVuY2htYXJrOiBGaW5pc2hlZDogdGltZTogJWYgc2Vjb25kc1wiLCBlbGFwc2VkKVxuICAgIHw+IHByaW50X2VuZGxpbmU7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbi8qIFRoaXMgaXMgYSBwbGFjZSB0byBhZGQgYWQtaG9jIGRlYnVnZ2luZyBwcmludCBhY3Rpb25zLlxuICAgSXQgd2FzIG9yaWdpbmFsbHkgZGlyZWN0bHkgaW4gS2V5Ym9hcmQsIGJ1dCB0aGF0IGFkZGVkIGEgaGFuZGxlclxuICAgZGVwZW5kZW5jeSBvbiB0aGUgbW9kZWwsIHdoaWNoIGlzIHRlY2huaWNhbGx5IGFnYWluc3QgYXJjaGl0ZWN0dXJlICovXG5cbmxldCBwcmludCA9XG4gICAgKFxuICAgICAge3NldHRpbmdzLCBlZGl0b3JzLCB1aV9zdGF0ZToge2FjdGl2ZV9lZGl0b3IsIF99LCByZXN1bHRzLCBffTogTW9kZWwudCxcbiAgICAgIGtleTogc3RyaW5nLFxuICAgIClcbiAgICA6IHVuaXQgPT4ge1xuICBzd2l0Y2ggKGFjdGl2ZV9lZGl0b3IpIHtcbiAgfCBTb21lKGFjdGl2ZV9lZGl0b3IpID0+XG4gICAgbGV0IGVkaXRvciA9XG4gICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbj1hY3RpdmVfZWRpdG9yLCBlZGl0b3JzLCByZXN1bHRzKTtcbiAgICBzd2l0Y2ggKGVkaXRvcikge1xuICAgIHwgU29tZShlZGl0b3IpID0+XG4gICAgICBsZXQgeiA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgICBsZXQgcHJpbnQgPSBzdHIgPT4gc3RyIHw+IHByaW50X2VuZGxpbmU7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgIGxldCB0ZXJtID0geiA9PiB6IHw+IE1ha2VUZXJtLmZyb21femlwX2Zvcl92aWV3IHw+IGZzdDtcbiAgICAgIGxldCBjdHhfaW5pdCA9IEVkaXRvcnMuZ2V0X2N0eF9pbml0KH5zZXR0aW5ncywgZWRpdG9ycyk7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgfCBcIkYxXCIgPT4geiB8PiBaaXBwZXIuc2hvdyB8PiBwcmludFxuICAgICAgfCBcIkYyXCIgPT4geiB8PiBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCB8PiBTZWdtZW50LnNob3cgfD4gcHJpbnRcbiAgICAgIHwgXCJGM1wiID0+IHogfD4gdGVybSB8PiBFeHAuc2hvdyB8PiBwcmludFxuICAgICAgfCBcIkY0XCIgPT5cbiAgICAgICAgelxuICAgICAgICB8PiB0ZXJtXG4gICAgICAgIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQpXG4gICAgICAgIHw+IFN0YXRpY3MuTWFwLnNob3dcbiAgICAgICAgfD4gcHJpbnRcbiAgICAgIHwgXCJGNVwiID0+XG4gICAgICAgIGxldCBlbnZfaW5pdCA9IEVkaXRvcnMuZ2V0X2Vudl9pbml0KH5zZXR0aW5ncywgZWRpdG9ycyk7XG4gICAgICAgIEludGVyZmFjZS5ldmFsX3oofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIH5lbnZfaW5pdCwgfmN0eF9pbml0LCB6KVxuICAgICAgICB8PiBQcm9ncmFtUmVzdWx0LnNob3dcbiAgICAgICAgfD4gcHJpbnQ7XG4gICAgICB8IFwiRjZcIiA9PlxuICAgICAgICBsZXQgaW5kZXggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIHogfD4gdGVybSB8PiBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0KTtcbiAgICAgICAgc3dpdGNoIChpbmRleCkge1xuICAgICAgICB8IFNvbWUoaW5kZXgpID0+XG4gICAgICAgICAgc3dpdGNoIChIYXozbGNvcmUuSWQuTWFwLmZpbmRfb3B0KGluZGV4LCBtYXApKSB7XG4gICAgICAgICAgfCBTb21lKGNpKSA9PiBwcmludChJbmZvLnNob3coY2kpKVxuICAgICAgICAgIHwgTm9uZSA9PiBwcmludChcIkRFQlVHOiBObyBDSSBmb3VuZCBmb3IgaW5kZXhcIilcbiAgICAgICAgICB9XG4gICAgICAgIHwgTm9uZSA9PiBwcmludChcIkRFQlVHOiBObyBpbmRpY2F0ZWQgaW5kZXhcIilcbiAgICAgICAgfTtcblxuICAgICAgfCBfID0+IHByaW50KFwiREVCVUc6IE5vIGFjdGlvbiBmb3Iga2V5OiBcIiArKyBrZXkpXG4gICAgICB9O1xuICAgIHwgTm9uZSA9PiBwcmludF9lbmRsaW5lKFwiREVCVUc6IE5vIGFjdGl2ZSBlZGl0b3JcIilcbiAgICB9O1xuICB8IE5vbmUgPT4gcHJpbnRfZW5kbGluZShcIkRFQlVHOiBObyBhY3RpdmUgZWRpdG9yXCIpXG4gIH07XG59O1xuIiwiLyogTG9nZ2luZyBzeXN0ZW0gZm9yIGFjdGlvbnMuIFBlcnNpc3RzIGxvZyB2aWEgSW5kZXhlZERCICovXG5cbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbmxldCBpc19hY3Rpb25fbG9nZ2VkOiBVcGRhdGVBY3Rpb24udCA9PiBib29sID1cbiAgZnVuXG4gIHwgU2V0TWV0YShfKVxuICB8IFNhdmVcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IERlYnVnQ29uc29sZShfKSA9PiBmYWxzZVxuICB8IFJlc2V0XG4gIHwgVEFCXG4gIHwgQXNzaXN0YW50KF8pXG4gIHwgU2V0KF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgTWFrZUFjdGl2ZShfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgUGVyZm9ybUFjdGlvbihfKVxuICB8IEN1dFxuICB8IENvcHlcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEZvcndhcmQoXykgfCBTdGVwQmFja3dhcmQgfCBIaWRlU3RlcHBlcilcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pID0+IHRydWU7XG5cbm1vZHVsZSBEQiA9IHtcbiAgb3BlbiBFempzX2lkYjtcblxuICBtb2R1bGUgU3RvcmUgPSBFempzX2lkYi5TdG9yZShTdHJpbmdUciwgU3RyaW5nVHIpO1xuXG4gIHR5cGUgZGIgPSBFempzX21pbi50KFR5cGVzLmlEQkRhdGFiYXNlKTtcblxuICBsZXQgZGJfbmFtZSA9IFwiaGF6ZWxfZGJcIjtcbiAgbGV0IHRhYmxlX25hbWUgPSBcImxvZ1wiO1xuXG4gIGxldCBrdl9zdG9yZSA9IChkYjogZGIpOiBTdG9yZS5zdG9yZSA9PlxuICAgIFN0b3JlLnN0b3JlKH5tb2RlPVJFQURXUklURSwgZGIsIHRhYmxlX25hbWUpO1xuXG4gIGxldCB3aXRoX2RiID0gKGYpOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfOiB1bml0ID0+IHByaW50X2VuZGxpbmUoXCJFUlJPUjogTG9nLklEQktWLm9wZW5cIik7XG4gICAgbGV0IHVwZ3JhZGUgPSAoZGI6IGRiLCBlOiBkYl91cGdyYWRlKTogdW5pdCA9PlxuICAgICAgZS5uZXdfdmVyc2lvbiA+PSAxICYmIGUub2xkX3ZlcnNpb24gPT0gMFxuICAgICAgICA/IGlnbm9yZShTdG9yZS5jcmVhdGUoZGIsIHRhYmxlX25hbWUpKSA6ICgpO1xuICAgIG9wZW5EQih+dXBncmFkZSwgfmVycm9yLCB+dmVyc2lvbj0xLCBkYl9uYW1lLCBkYiA9PiBmKGRiKSk7XG4gIH07XG5cbiAgbGV0IGFkZCA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHVuaXQgPT5cbiAgICB3aXRoX2RiKGRiID0+XG4gICAgICBTdG9yZS5hZGQofmtleSwgfmNhbGxiYWNrPV9rZXkgPT4gKCksIGt2X3N0b3JlKGRiKSwgdmFsdWUpXG4gICAgKTtcblxuICBsZXQgZ2V0ID0gKGtleTogc3RyaW5nLCBmOiBvcHRpb24oc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRcIik7XG4gICAgd2l0aF9kYihkYiA9PiBTdG9yZS5nZXQofmVycm9yLCBrdl9zdG9yZShkYiksIGYsIEsoa2V5KSkpO1xuICB9O1xuXG4gIGxldCBnZXRfYWxsID0gKGY6IGxpc3Qoc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRfYWxsXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuZ2V0X2FsbCh+ZXJyb3IsIGt2X3N0b3JlKGRiKSwgZikpO1xuICB9O1xuXG4gIGxldCBjbGVhcl9hbmQgPSAoY2FsbGJhY2spOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfID0+IFByaW50Zi5wcmludGYoXCJFUlJPUjogTG9nLklEQktWLmNsZWFyXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuY2xlYXIofmVycm9yLCB+Y2FsbGJhY2ssIGt2X3N0b3JlKGRiKSkpO1xuICB9O1xufTtcblxubW9kdWxlIEVudHJ5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgdCA9IChNb2RlbC50aW1lc3RhbXAsIFVwZGF0ZUFjdGlvbi50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgcyA9IGxpc3QodCk7XG5cbiAgbGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAgIChKc1V0aWwudGltZXN0YW1wKCksIHVwZGF0ZSk7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoKHRzLCBhY3Rpb24pOiB0KSA9PlxuICAgIERCLmFkZChcbiAgICAgIFByaW50Zi5zcHJpbnRmKFwiJS4wZlwiLCB0cyksXG4gICAgICAodHMsIGFjdGlvbikgfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmcsXG4gICAgKTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKTogdW5pdCA9PlxuICAvKiBTaG91bGQgYmUgZmluZSB0byBmaXJlIHNhdmVzIGNvbmN1cnJlbnRseT8gKi9cbiAgREIuY2xlYXJfYW5kKCgpID0+XG4gICAgdHJ5KFxuICAgICAgZGF0YVxuICAgICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgICAgfD4gRW50cnkuc19vZl9zZXhwXG4gICAgICB8PiBMaXN0Lml0ZXIoRW50cnkuc2F2ZSlcbiAgICApIHtcbiAgICB8IF8gPT4gUHJpbnRmLnByaW50ZihcIkxvZy5FbnRyeS5pbXBvcnQ6IERlc2VyaWFsaXphdGlvbiBlcnJvclwiKVxuICAgIH1cbiAgKTtcblxubGV0IHVwZGF0ZSA9IChhY3Rpb246IFVwZGF0ZUFjdGlvbi50KTogdW5pdCA9PlxuICBpZiAoaXNfYWN0aW9uX2xvZ2dlZChhY3Rpb24pKSB7XG4gICAgRW50cnkuc2F2ZShFbnRyeS5tayhhY3Rpb24pKTtcbiAgfTtcblxubGV0IGdldF9hbmQgPSAoZjogc3RyaW5nID0+IHVuaXQpOiB1bml0ID0+XG4gIERCLmdldF9hbGwoZW50cmllcyA9PiBmKFwiKFwiICsrIFN0cmluZy5jb25jYXQoXCIgXCIsIGVudHJpZXMpICsrIFwiKVwiKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFsbCA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgZXhwbGFpblRoaXNNb2RlbDogc3RyaW5nLFxuICBzY3JhdGNoOiBzdHJpbmcsXG4gIGV4ZXJjaXNlOiBzdHJpbmcsXG4gIGRvY3VtZW50YXRpb246IHN0cmluZyxcbiAgbG9nOiBzdHJpbmcsXG59O1xuXG4vLyBmYWxsYmFjayBmb3Igc2F2ZWQgc3RhdGUgcHJpb3IgdG8gcmVsZWFzZSBvZiBsYW5nIGRvYyBpbiA0OTBGMjJcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWxsX2YyMiA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgc2NyYXRjaDogc3RyaW5nLFxuICBleGVyY2lzZTogc3RyaW5nLFxuICBsb2c6IHN0cmluZyxcbn07XG5cbmxldCBta19hbGwgPSAofmluc3RydWN0b3JfbW9kZSwgfmxvZykgPT4ge1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5leHBvcnQoKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmV4cG9ydCgpO1xuICBsZXQgc2NyYXRjaCA9IFN0b3JlLlNjcmF0Y2guZXhwb3J0KH5zZXR0aW5ncz1IYXozbGNvcmUuQ29yZVNldHRpbmdzLm9mZik7XG4gIGxldCBkb2N1bWVudGF0aW9uID1cbiAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLmV4cG9ydCh+c2V0dGluZ3M9SGF6M2xjb3JlLkNvcmVTZXR0aW5ncy5vZmYpO1xuICBsZXQgZXhlcmNpc2UgPVxuICAgIFN0b3JlLkV4ZXJjaXNlLmV4cG9ydChcbiAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAge3NldHRpbmdzLCBleHBsYWluVGhpc01vZGVsLCBzY3JhdGNoLCBkb2N1bWVudGF0aW9uLCBleGVyY2lzZSwgbG9nfTtcbn07XG5cbmxldCBleHBvcnRfYWxsID0gKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpID0+IHtcbiAgbWtfYWxsKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpIHw+IHlvanNvbl9vZl9hbGw7XG59O1xuXG5sZXQgaW1wb3J0X2FsbCA9IChkYXRhLCB+c3BlY3MpID0+IHtcbiAgbGV0IGFsbCA9XG4gICAgdHJ5KGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gYWxsX29mX3lvanNvbikge1xuICAgIHwgXyA9PlxuICAgICAgbGV0IGFsbF9mMjIgPSBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IGFsbF9mMjJfb2ZfeW9qc29uO1xuICAgICAge1xuICAgICAgICBzZXR0aW5nczogYWxsX2YyMi5zZXR0aW5ncyxcbiAgICAgICAgc2NyYXRjaDogYWxsX2YyMi5zY3JhdGNoLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiBcIlwiLFxuICAgICAgICBleGVyY2lzZTogYWxsX2YyMi5leGVyY2lzZSxcbiAgICAgICAgbG9nOiBhbGxfZjIyLmxvZyxcbiAgICAgICAgZXhwbGFpblRoaXNNb2RlbDogXCJcIixcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuaW1wb3J0KGFsbC5zZXR0aW5ncyk7XG4gIFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwuaW1wb3J0KGFsbC5leHBsYWluVGhpc01vZGVsKTtcbiAgbGV0IGluc3RydWN0b3JfbW9kZSA9IHNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgU3RvcmUuU2NyYXRjaC5pbXBvcnQofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGFsbC5zY3JhdGNoKTtcbiAgU3RvcmUuRXhlcmNpc2UuaW1wb3J0KGFsbC5leGVyY2lzZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgTG9nLmltcG9ydChhbGwubG9nKTtcbn07XG4iLCJ0eXBlIHQgPSB1bml0O1xubGV0IGluaXQgPSAoKSA9PiAoKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjsgLy8gdG8gcHJldmVudCBjaXJjdWxhcml0eVxuXG5sZXQgdXBkYXRlX3NldHRpbmdzID1cbiAgICAoYTogc2V0dGluZ3NfYWN0aW9uLCB7c2V0dGluZ3MsIF99IGFzIG1vZGVsOiBNb2RlbC50KTogTW9kZWwudCA9PlxuICBzd2l0Y2ggKGEpIHtcbiAgfCBTdGF0aWNzID0+XG4gICAgLyogTk9URTogZHluYW1pY3MgZGVwZW5kcyBvbiBzdGF0aWNzLCBzbyBpZiBkeW5hbWljcyBpcyBvbiBhbmRcbiAgICAgICB3ZSdyZSB0dXJuaW5nIHN0YXRpY3Mgb2ZmLCB0dXJuIGR5bmFtaWNzIG9mZiBhcyB3ZWxsICovXG4gICAge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgYXNzaXN0OiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGVsYWJvcmF0ZTogc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgICAgZHluYW1pY3M6ICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MgJiYgc2V0dGluZ3MuY29yZS5keW5hbWljcyxcbiAgICAgICAgICBldmFsdWF0aW9uOiBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfCBFbGFib3JhdGUgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgYXNzaXN0OiBzZXR0aW5ncy5jb3JlLmFzc2lzdCxcbiAgICAgICAgICBlbGFib3JhdGU6ICFzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSxcbiAgICAgICAgICBkeW5hbWljczogc2V0dGluZ3MuY29yZS5keW5hbWljcyxcbiAgICAgICAgICBldmFsdWF0aW9uOiBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfCBEeW5hbWljcyA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgc3RhdGljczogIXNldHRpbmdzLmNvcmUuZHluYW1pY3MgfHwgc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogc2V0dGluZ3MuY29yZS5hc3Npc3QsXG4gICAgICAgICAgZWxhYm9yYXRlOiBzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSxcbiAgICAgICAgICBkeW5hbWljczogIXNldHRpbmdzLmNvcmUuZHluYW1pY3MsXG4gICAgICAgICAgZXZhbHVhdGlvbjogc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIHwgQXNzaXN0ID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5hc3Npc3QgfHwgc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogIXNldHRpbmdzLmNvcmUuYXNzaXN0LFxuICAgICAgICAgIGVsYWJvcmF0ZTogc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgICAgZHluYW1pY3M6IHNldHRpbmdzLmNvcmUuZHluYW1pY3MsXG4gICAgICAgICAgZXZhbHVhdGlvbjogc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIHwgRXZhbHVhdGlvbih1KSA9PlxuICAgIGxldCBldmFsdWF0aW9uID0gc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uO1xuICAgIGxldCBldmFsdWF0aW9uJyA9IHtcbiAgICAgIHN3aXRjaCAodSkge1xuICAgICAgfCBTaG93UmVjb3JkID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHN0ZXBwZXJfaGlzdG9yeTogIWV2YWx1YXRpb24uc3RlcHBlcl9oaXN0b3J5LFxuICAgICAgICB9XG4gICAgICB8IFNob3dDYXNlQ2xhdXNlcyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2Nhc2VfY2xhdXNlczogIWV2YWx1YXRpb24uc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0ZuQm9kaWVzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfZm5fYm9kaWVzOiAhZXZhbHVhdGlvbi5zaG93X2ZuX2JvZGllcyxcbiAgICAgICAgfVxuICAgICAgfCBTaG93Q2FzdHMgPT4gey4uLmV2YWx1YXRpb24sIHNob3dfY2FzdHM6ICFldmFsdWF0aW9uLnNob3dfY2FzdHN9XG4gICAgICB8IFNob3dGaXhwb2ludHMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19maXhwb2ludHM6ICFldmFsdWF0aW9uLnNob3dfZml4cG9pbnRzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dMb29rdXBzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfbG9va3VwX3N0ZXBzOiAhZXZhbHVhdGlvbi5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgICAgfVxuICAgICAgfCBTaG93RmlsdGVycyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogIWV2YWx1YXRpb24uc2hvd19zdGVwcGVyX2ZpbHRlcnMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd1NldHRpbmdzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfc2V0dGluZ3M6ICFldmFsdWF0aW9uLnNob3dfc2V0dGluZ3MsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0hpZGRlblN0ZXBzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfaGlkZGVuX3N0ZXBzOiAhZXZhbHVhdGlvbi5zaG93X2hpZGRlbl9zdGVwcyxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIGV2YWx1YXRpb246IGV2YWx1YXRpb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB8IEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpID0+XG4gICAgbGV0IGV4cGxhaW5UaGlzID0ge1xuICAgICAgLi4uc2V0dGluZ3MuZXhwbGFpblRoaXMsXG4gICAgICBzaG93OiAhc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyxcbiAgICB9O1xuICAgIGxldCBzZXR0aW5ncyA9IHsuLi5zZXR0aW5ncywgZXhwbGFpblRoaXN9O1xuICAgIHsuLi5tb2RlbCwgc2V0dGluZ3N9O1xuICB8IEV4cGxhaW5UaGlzKFRvZ2dsZVNob3dGZWVkYmFjaykgPT5cbiAgICBsZXQgZXhwbGFpblRoaXMgPSB7XG4gICAgICAuLi5zZXR0aW5ncy5leHBsYWluVGhpcyxcbiAgICAgIHNob3dfZmVlZGJhY2s6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgIH07XG4gICAgbGV0IHNldHRpbmdzID0gey4uLnNldHRpbmdzLCBleHBsYWluVGhpc307XG4gICAgey4uLm1vZGVsLCBzZXR0aW5nc307XG4gIHwgRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KGEpKSA9PlxuICAgIGxldCBoaWdobGlnaHQ6IEV4cGxhaW5UaGlzTW9kZWwuU2V0dGluZ3MuaGlnaGxpZ2h0ID1cbiAgICAgIHN3aXRjaCAoYSwgc2V0dGluZ3MuZXhwbGFpblRoaXMuaGlnaGxpZ2h0KSB7XG4gICAgICB8IChUb2dnbGUsIEFsbCkgPT4gTm9IaWdobGlnaHRcbiAgICAgIHwgKFRvZ2dsZSwgXykgPT4gQWxsXG4gICAgICB8IChIb3ZlcihfKSwgQWxsKSA9PiBBbGxcbiAgICAgIHwgKEhvdmVyKGlkKSwgXykgPT4gT25lKGlkKVxuICAgICAgfCAoVW5zZXRIb3ZlciwgQWxsKSA9PiBBbGxcbiAgICAgIHwgKFVuc2V0SG92ZXIsIF8pID0+IE5vSGlnaGxpZ2h0XG4gICAgICB9O1xuICAgIGxldCBleHBsYWluVGhpcyA9IHsuLi5zZXR0aW5ncy5leHBsYWluVGhpcywgaGlnaGxpZ2h0fTtcbiAgICBsZXQgc2V0dGluZ3MgPSB7Li4uc2V0dGluZ3MsIGV4cGxhaW5UaGlzfTtcbiAgICB7Li4ubW9kZWwsIHNldHRpbmdzfTtcbiAgfCBCZW5jaG1hcmsgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgYmVuY2htYXJrOiAhc2V0dGluZ3MuYmVuY2htYXJrLFxuICAgICAgfSxcbiAgICB9XG4gIHwgQ2FwdGlvbnMgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY2FwdGlvbnM6ICFzZXR0aW5ncy5jYXB0aW9ucyxcbiAgICAgIH0sXG4gICAgfVxuICB8IFNlY29uZGFyeUljb25zID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIHNlY29uZGFyeV9pY29uczogIXNldHRpbmdzLnNlY29uZGFyeV9pY29ucyxcbiAgICAgIH0sXG4gICAgfVxuICB8IENvbnRleHRJbnNwZWN0b3IgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29udGV4dF9pbnNwZWN0b3I6ICFzZXR0aW5ncy5jb250ZXh0X2luc3BlY3RvcixcbiAgICAgIH0sXG4gICAgfVxuICB8IEluc3RydWN0b3JNb2RlID0+XG4gICAgbGV0IG5ld19tb2RlID0gIXNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGVkaXRvcnM6IEVkaXRvcnMuc2V0X2luc3RydWN0b3JfbW9kZShtb2RlbC5lZGl0b3JzLCBuZXdfbW9kZSksXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgaW5zdHJ1Y3Rvcl9tb2RlOiAhc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgfSxcbiAgICB9O1xuICB8IE1vZGUobW9kZSkgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgbW9kZSxcbiAgICAgIH0sXG4gICAgfVxuICB9O1xuXG5sZXQgc2NoZWR1bGVfZXZhbHVhdGlvbiA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtb2RlbDogTW9kZWwudCk6IHVuaXQgPT5cbiAgaWYgKG1vZGVsLnNldHRpbmdzLmNvcmUuZHluYW1pY3MpIHtcbiAgICBsZXQgZWxhYnMgPVxuICAgICAgRWRpdG9ycy5nZXRfc3BsaWNlZF9lbGFicyhcbiAgICAgICAgfnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLFxuICAgICAgICBtb2RlbC5zdGF0aWNzLFxuICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgKTtcbiAgICBsZXQgZXZhbF9ycyA9XG4gICAgICBMaXN0Lm1hcCgoKG4sIHtkfTogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSkgPT4gKG4sIGQpLCBlbGFicyk7XG4gICAgaWYgKExpc3QubGVuZ3RoKGV2YWxfcnMpICE9IDApIHtcbiAgICAgIFdvcmtlckNsaWVudC5yZXF1ZXN0KFxuICAgICAgICBldmFsX3JzLFxuICAgICAgICB+aGFuZGxlcj1ycyA9PiBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlRXZhbHMocnMpKSxcbiAgICAgICAgfnRpbWVvdXQ9XG4gICAgICAgICAgcnFzID0+XG4gICAgICAgICAgICBzY2hlZHVsZV9hY3Rpb24oXG4gICAgICAgICAgICAgIFVwZGF0ZUV2YWxzKFxuICAgICAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAgICAgKChuLCBfKSkgPT4gKG4sIEVycm9yKFByb2dyYW1SZXN1bHQuVGltZW91dCkpLFxuICAgICAgICAgICAgICAgICAgcnFzLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgKTtcbiAgICB9O1xuICAgIC8qIE5vdCBzZW5kaW5nIHN0ZXBwZXIgdG8gd29ya2VyIGZvciBub3cgYmMgY2xvc3VyZSBwZXJmICovXG4gICAgbGV0IG5ld19ycyA9XG4gICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICB8PiBNb2RlbFJlc3VsdHMudXBkYXRlX2VsYWJzKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlLCBlbGFicyk7XG4gICAgbGV0IHN0ZXBfcnMgPSBNb2RlbFJlc3VsdHMudG9fc3RlcChuZXdfcnMpO1xuICAgIGlmICghTW9kZWxSZXN1bHRzLmlzX2VtcHR5KHN0ZXBfcnMpKSB7XG4gICAgICBsZXQgbmV3X3JzID1cbiAgICAgICAgc3RlcF9ycyB8PiBNb2RlbFJlc3VsdHMucnVuX3BlbmRpbmcofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUpO1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9O1xuICB9O1xuXG5sZXQgdXBkYXRlX2NhY2hlZF9kYXRhID0gKH5zY2hlZHVsZV9hY3Rpb24sIHVwZGF0ZSwgbTogTW9kZWwudCk6IE1vZGVsLnQgPT4ge1xuICBsZXQgdXBkYXRlX3N0YXRpY3MgPSBpc19lZGl0KHVwZGF0ZSkgfHwgcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgdXBkYXRlX2R5bmFtaWNzID0gcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgbSA9XG4gICAgdXBkYXRlX3N0YXRpY3MgfHwgdXBkYXRlX2R5bmFtaWNzICYmIG0uc2V0dGluZ3MuY29yZS5zdGF0aWNzXG4gICAgICA/IHsuLi5tLCBzdGF0aWNzOiBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzPW0uc2V0dGluZ3MsIG0uZWRpdG9ycyl9XG4gICAgICA6IG07XG4gIGlmICh1cGRhdGVfZHluYW1pY3MgJiYgbS5zZXR0aW5ncy5jb3JlLmR5bmFtaWNzKSB7XG4gICAgc2NoZWR1bGVfZXZhbHVhdGlvbih+c2NoZWR1bGVfYWN0aW9uLCBtKTtcbiAgICBtO1xuICB9IGVsc2Uge1xuICAgIG07XG4gIH07XG59O1xuXG5sZXQgcGVyZm9ybV9hY3Rpb24gPSAobW9kZWw6IE1vZGVsLnQsIGE6IEFjdGlvbi50KTogUmVzdWx0LnQoTW9kZWwudCkgPT5cbiAgc3dpdGNoIChcbiAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICB+c2VsZWN0aW9uPW1vZGVsLnVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IgfD4gT3B0aW9uLmdldCxcbiAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICBtb2RlbC5yZXN1bHRzLFxuICAgIClcbiAgICB8PiBPcHRpb24uZ2V0XG4gICAgfD4gSGF6M2xjb3JlLlBlcmZvcm0uZ28ofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUsIGEpXG4gICkge1xuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gT2sobW9kZWwpXG4gIHwgRXJyb3IoZXJyKSA9PiBFcnJvcihGYWlsZWRUb1BlcmZvcm0oZXJyKSlcbiAgfCBPayhlZCkgPT5cbiAgICBsZXQgKGVkaXRvcnMsIHJlc3VsdHMpID1cbiAgICAgIEVkaXRvcnMucHV0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgfnNlbGVjdGlvbj1tb2RlbC51aV9zdGF0ZS5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgIGVkLFxuICAgICAgKTtcbiAgICBsZXQgbW9kZWwgPSB7Li4ubW9kZWwsIGVkaXRvcnMsIHJlc3VsdHN9O1xuICAgIC8qIE5vdGU6IE5vdCBzYXZpbmcgaGVyZSBhcyBzYXZpbmcgaXMgY29zdGx5IHRvIGRvIGVhY2gga2V5c3Ryb2tlLFxuICAgICAgIHdlIHdhaXQgYSBzZWNvbmQgYWZ0ZXIgdGhlIGxhc3QgZWRpdCBhY3Rpb24gKHNlZSBNYWluLnJlKSAqL1xuICAgIE9rKG1vZGVsKTtcbiAgfTtcblxubGV0IHJlYyBwZXJmb3JtX2FjdGlvbnMgPSAobW9kZWw6IE1vZGVsLnQpID0+XG4gIGZ1blxuICB8IFtdID0+IE9rKG1vZGVsKVxuICB8IFthLCAuLi5fYXNdID0+XG4gICAgc3dpdGNoIChwZXJmb3JtX2FjdGlvbihtb2RlbCwgYSkpIHtcbiAgICB8IE9rKG1vZGVsKSA9PiBwZXJmb3JtX2FjdGlvbnMobW9kZWwsIF9hcylcbiAgICB8IEVycm9yKF8pIGFzIGVyciA9PiBlcnJcbiAgICB9O1xuXG5sZXQgc3dpdGNoX3NjcmF0Y2hfc2xpZGUgPVxuICAgIChlZGl0b3JzOiBFZGl0b3JzLnQsIH5pbnN0cnVjdG9yX21vZGUsIGlkeDogaW50KTogb3B0aW9uKEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBOb25lXG4gIHwgU2NyYXRjaChuLCBfKSB3aGVuIG4gPT0gaWR4ID0+IE5vbmVcbiAgfCBTY3JhdGNoKF8sIHNsaWRlcykgd2hlbiBpZHggPj0gTGlzdC5sZW5ndGgoc2xpZGVzKSA9PiBOb25lXG4gIHwgU2NyYXRjaChfLCBzbGlkZXMpID0+IFNvbWUoU2NyYXRjaChpZHgsIHNsaWRlcykpXG4gIHwgRXhlcmNpc2VzKF8sIHNwZWNzLCBfKSB3aGVuIGlkeCA+PSBMaXN0Lmxlbmd0aChzcGVjcykgPT4gTm9uZVxuICB8IEV4ZXJjaXNlcyhfLCBzcGVjcywgXykgPT5cbiAgICBsZXQgc3BlYyA9IExpc3QubnRoKHNwZWNzLCBpZHgpO1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgbGV0IGV4ZXJjaXNlID0gU3RvcmUuRXhlcmNpc2UubG9hZF9leGVyY2lzZShrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIFNvbWUoRXhlcmNpc2VzKGlkeCwgc3BlY3MsIGV4ZXJjaXNlKSk7XG4gIH07XG5cbi8qIFRoaXMgYWN0aW9uIHNhdmVzIGEgZmlsZSB3aGljaCBzZXJpYWxpemVzIGFsbCBjdXJyZW50IGVkaXRvclxuICAgc2V0dGluZ3MsIGluY2x1ZGluZyB0aGUgc3RhdGVzIG9mIGFsbCBTY3JhdGNoIGFuZCBFeGFtcGxlIHNsaWRlcy5cbiAgIFRoaXMgc2F2ZWQgZmlsZSBjYW4gZGlyZWN0bHkgcmVwbGFjZSBIYXozbHdlYi9Jbml0Lm1sLCBhbGxvd2luZ1xuICAgeW91IHRvIG1ha2UgeW91ciBjdXJyZW50IHN0YXRlIHRoZSBkZWZhdWx0IHN0YXJ0dXAgc3RhdGUuXG5cbiAgIFRoaXMgZG9lcyBOT1Qgc2F2ZSBhbnkgRXhlcmNpc2VzIG1vZGUgc3RhdGUgb3IgYW55IGxhbmdkb2NzXG4gICBzdGF0ZS4gVGhlIGxhdHRlciBpcyBpbnRlbnRpb25hbCBhcyB3ZSBkb24ndCB3YW50IHRvIHBlcnNpc3RcbiAgIHRoaXMgYmV0d2VlbiB1c2Vycy4gVGhlIGZvcm1lciBpcyBhIFRPRE8sIGN1cnJlbnRseSBkaWZmaWN1bHRcbiAgIGR1ZSB0byB0aGUgbW9yZSBjb21wbGV4IGFyY2hpdGVjdHVyZSBvZiBFeGVyY2lzZXMuICovXG5sZXQgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSA9ICgpID0+IHtcbiAgbGV0IGRhdGE6IFBlcnNpc3RlbnREYXRhLnQgPSB7XG4gICAgZG9jdW1lbnRhdGlvbjpcbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCh+c2V0dGluZ3M9Q29yZVNldHRpbmdzLm9mZilcbiAgICAgIHw+IFN0b3JlLkRvY3VtZW50YXRpb24udG9fcGVyc2lzdGVudCxcbiAgICBzY3JhdGNoOlxuICAgICAgU3RvcmUuU2NyYXRjaC5sb2FkKH5zZXR0aW5ncz1Db3JlU2V0dGluZ3Mub2ZmKVxuICAgICAgfD4gU3RvcmUuU2NyYXRjaC50b19wZXJzaXN0ZW50LFxuICAgIHNldHRpbmdzOiBTdG9yZS5TZXR0aW5ncy5sb2FkKCksXG4gIH07XG4gIGxldCBjb250ZW50cyA9XG4gICAgXCJsZXQgc3RhcnR1cCA6IFBlcnNpc3RlbnREYXRhLnQgPSBcIiArKyBQZXJzaXN0ZW50RGF0YS5zaG93KGRhdGEpO1xuICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUoXG4gICAgfmZpbGVuYW1lPVwiSW5pdC5tbFwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJ0ZXh0L3BsYWluXCIsXG4gICAgfmNvbnRlbnRzLFxuICApO1xuICBwcmludF9lbmRsaW5lKFwiSU5GTzogUGVyc2lzdGVudCBkYXRhIGV4cG9ydGVkIHRvIEluaXQubWxcIik7XG59O1xuXG5sZXQgdWlfc3RhdGVfdXBkYXRlID1cbiAgICAodWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLCB1cGRhdGU6IHNldF9tZXRhLCB+c2NoZWR1bGVfYWN0aW9uIGFzIF8pXG4gICAgOiBNb2RlbC51aV9zdGF0ZSA9PiB7XG4gIHN3aXRjaCAodXBkYXRlKSB7XG4gIHwgTW91c2Vkb3duID0+IHsuLi51aV9zdGF0ZSwgbW91c2Vkb3duOiB0cnVlfVxuICB8IE1vdXNldXAgPT4gey4uLnVpX3N0YXRlLCBtb3VzZWRvd246IGZhbHNlfVxuICB8IFNob3dCYWNrcGFja1RhcmdldHMoYikgPT4gey4uLnVpX3N0YXRlLCBzaG93X2JhY2twYWNrX3RhcmdldHM6IGJ9XG4gIHwgRm9udE1ldHJpY3MoZm9udF9tZXRyaWNzKSA9PiB7Li4udWlfc3RhdGUsIGZvbnRfbWV0cmljc31cbiAgfTtcbn07XG5cbmxldCByZWMgYXBwbHkgPVxuICAgICAgICAobW9kZWw6IE1vZGVsLnQsIHVwZGF0ZTogdCwgc3RhdGU6IFN0YXRlLnQsIH5zY2hlZHVsZV9hY3Rpb24pXG4gICAgICAgIDogUmVzdWx0LnQoTW9kZWwudCkgPT4ge1xuICBsZXQgbTogUmVzdWx0LnQoTW9kZWwudCkgPVxuICAgIHN3aXRjaCAodXBkYXRlKSB7XG4gICAgfCBSZXNldCA9PiBPayhNb2RlbC5yZXNldChtb2RlbCkpXG4gICAgfCBTZXQoRXZhbHVhdGlvbihfKSBhcyBzX2FjdGlvbikgPT4gT2sodXBkYXRlX3NldHRpbmdzKHNfYWN0aW9uLCBtb2RlbCkpXG4gICAgfCBTZXQoc19hY3Rpb24pID0+XG4gICAgICBsZXQgbW9kZWwgPSB1cGRhdGVfc2V0dGluZ3Moc19hY3Rpb24sIG1vZGVsKTtcbiAgICAgIE1vZGVsLnNhdmUobW9kZWwpO1xuICAgICAgc3dpdGNoICh1cGRhdGUpIHtcbiAgICAgIC8vIE5PVEU6IExvYWQgaGVyZSBuZWNlc3NhcnkgdG8gbG9hZCBlZGl0b3JzIG9uIHN3aXRjaGluZyBtb2RlXG4gICAgICB8IFNldChNb2RlKF8pKSA9PiBPayhNb2RlbC5sb2FkKG1vZGVsKSlcbiAgICAgIHwgXyA9PiBPayhtb2RlbClcbiAgICAgIH07XG4gICAgfCBTZXRNZXRhKGFjdGlvbikgPT5cbiAgICAgIGxldCB1aV9zdGF0ZSA9XG4gICAgICAgIHVpX3N0YXRlX3VwZGF0ZShtb2RlbC51aV9zdGF0ZSwgYWN0aW9uLCB+c2NoZWR1bGVfYWN0aW9uKTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgdWlfc3RhdGV9KTtcbiAgICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwodSkgPT5cbiAgICAgIGxldCBleHBsYWluVGhpc01vZGVsID1cbiAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuc2V0X3VwZGF0ZShtb2RlbC5leHBsYWluVGhpc01vZGVsLCB1KTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGV4cGxhaW5UaGlzTW9kZWx9KTtcbiAgICB8IERlYnVnQ29uc29sZShrZXkpID0+XG4gICAgICBEZWJ1Z0NvbnNvbGUucHJpbnQobW9kZWwsIGtleSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBTYXZlID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybihtb2RlbClcbiAgICB8IEluaXRJbXBvcnRBbGwoZmlsZSkgPT5cbiAgICAgIEpzVXRpbC5yZWFkX2ZpbGUoZmlsZSwgZGF0YSA9PiBzY2hlZHVsZV9hY3Rpb24oRmluaXNoSW1wb3J0QWxsKGRhdGEpKSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBGaW5pc2hJbXBvcnRBbGwoZGF0YSkgPT5cbiAgICAgIHN3aXRjaCAoZGF0YSkge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKGRhdGEpID0+XG4gICAgICAgIEV4cG9ydC5pbXBvcnRfYWxsKGRhdGEsIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyk7XG4gICAgICAgIE9rKE1vZGVsLmxvYWQobW9kZWwpKTtcbiAgICAgIH1cbiAgICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKGZpbGUpID0+XG4gICAgICBKc1V0aWwucmVhZF9maWxlKGZpbGUsIGRhdGEgPT5cbiAgICAgICAgc2NoZWR1bGVfYWN0aW9uKEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoZGF0YSkpXG4gICAgICApO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChkYXRhKSA9PlxuICAgICAgbGV0IGVkaXRvcnMgPSBFZGl0b3JzLmltcG9ydF9jdXJyZW50KG1vZGVsLmVkaXRvcnMsIGRhdGEpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIHwgRXhwb3J0UGVyc2lzdGVudERhdGEgPT5cbiAgICAgIGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEoKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFJlc2V0Q3VycmVudEVkaXRvciA9PlxuICAgICAgbGV0IGluc3RydWN0b3JfbW9kZSA9IG1vZGVsLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5yZXNldF9jdXJyZW50KG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIHwgU3dpdGNoU2NyYXRjaFNsaWRlKG4pID0+XG4gICAgICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gbW9kZWwuc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlO1xuICAgICAgc3dpdGNoIChzd2l0Y2hfc2NyYXRjaF9zbGlkZShtb2RlbC5lZGl0b3JzLCB+aW5zdHJ1Y3Rvcl9tb2RlLCBuKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKEZhaWxlZFRvU3dpdGNoKVxuICAgICAgfCBTb21lKGVkaXRvcnMpID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KVxuICAgICAgfTtcbiAgICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShuYW1lKSA9PlxuICAgICAgc3dpdGNoIChFZGl0b3JzLnN3aXRjaF9leGFtcGxlX3NsaWRlKG1vZGVsLmVkaXRvcnMsIG5hbWUpKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoRmFpbGVkVG9Td2l0Y2gpXG4gICAgICB8IFNvbWUoZWRpdG9ycykgPT4gTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pXG4gICAgICB9XG4gICAgfCBNYWtlQWN0aXZlKHBvcykgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIHVpX3N0YXRlOiB7XG4gICAgICAgICAgLi4ubW9kZWwudWlfc3RhdGUsXG4gICAgICAgICAgYWN0aXZlX2VkaXRvcjogU29tZShwb3MpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB8IFRBQiA9PlxuICAgICAgLyogQXR0ZW1wdCB0byBhY3QgaW50ZWxsaWdlbnRseSB3aGVuIFRBQiBpcyBwcmVzc2VkLlxuICAgICAgICogVE9ETyhhbmRyZXcpOiBDb25zaWRlciBtb3JlIGFkdmFuY2VkIFRBQiBsb2dpYy4gSW5zdGVhZFxuICAgICAgICogb2Ygc2ltcGx5IG1vdmluZyB0byBuZXh0IGhvbGUsIGlmIHRoZSBiYWNrcGFjayBpcyBub24tZW1wdHlcbiAgICAgICAqIGJ1dCBjYW4ndCBpbW1lZGlhdGVseSBwdXQgZG93biwgbW92ZSB0byBuZXh0IHBvc2l0aW9uIG9mXG4gICAgICAgKiBpbnRlcmVzdCwgd2hpY2ggaXMgY2xvc2V0IG9mOiBuZWFyZXN0IHBvc2l0aW9uIHdoZXJlIGNhblxuICAgICAgICogcHV0IGRvd24sIGZhcnRoZXN0IHBvc2l0aW9uIHdoZXJlIGNhbiBwdXQgZG93biwgbmV4dCBob2xlICovXG4gICAgICBsZXQgeiA9XG4gICAgICAgIEVkaXRvcnMuZ2V0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgICB+c2VsZWN0aW9uPW1vZGVsLnVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IgfD4gT3B0aW9uLmdldCxcbiAgICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgIClcbiAgICAgICAgfD4gT3B0aW9uLmdldFxuICAgICAgICB8PiAoKGVkOiBFZGl0b3IudCkgPT4gZWQuc3RhdGUuemlwcGVyKTtcbiAgICAgIGxldCBhID1cbiAgICAgICAgU2VsZWN0aW9uLmlzX2J1ZmZlcih6LnNlbGVjdGlvbilcbiAgICAgICAgICA/IEFzc2lzdGFudChBY2NlcHRTdWdnZXN0aW9uKVxuICAgICAgICAgIDogWmlwcGVyLmNhbl9wdXRfZG93bih6KVxuICAgICAgICAgICAgICA/IFBlcmZvcm1BY3Rpb24oUHV0X2Rvd24pIDogTW92ZVRvTmV4dEhvbGUoUmlnaHQpO1xuICAgICAgYXBwbHkobW9kZWwsIGEsIHN0YXRlLCB+c2NoZWR1bGVfYWN0aW9uKTtcbiAgICB8IFBlcmZvcm1BY3Rpb24oYSlcbiAgICAgICAgd2hlbiBtb2RlbC5zZXR0aW5ncy5jb3JlLmFzc2lzdCAmJiBtb2RlbC5zZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT5cbiAgICAgIG9wZW4gUmVzdWx0LlN5bnRheDtcbiAgICAgIGxldCogbW9kZWwgPSBwZXJmb3JtX2FjdGlvbnMobW9kZWwsIFtSZXNldFN1Z2dlc3Rpb24sIGFdKTtcbiAgICAgIC8vIGxldCBhY3Rpb25zID1cbiAgICAgIC8vICAgVXBkYXRlQXNzaXN0YW50LmFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMoXG4gICAgICAvLyAgICAgbW9kZWwsXG4gICAgICAvLyAgICAgUHJvbXB0KFR5RGkpLFxuICAgICAgLy8gICApO1xuICAgICAgLy8gcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBhY3Rpb25zKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gcGVyZm9ybV9hY3Rpb24obW9kZWwsIGEpXG4gICAgfCBSZXBhcnNlQ3VycmVudEVkaXRvciA9PlxuICAgICAgLyogVGhpcyBzZXJpYWxpemVzIHRoZSBjdXJyZW50IGVkaXRvciB0byB0ZXh0LCByZXNldHMgdGhlIGN1cnJlbnRcbiAgICAgICAgIGVkaXRvciwgYW5kIHRoZW4gZGVzZXJpYWxpemVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhICh0YWN0aWNhbClcbiAgICAgICAgIG51Y2xlYXIgb3B0aW9uIGZvciB3ZWlyZCBiYWNrcGFjayBzdGF0ZXMgKi9cbiAgICAgIHN3aXRjaCAobW9kZWwudWlfc3RhdGUuYWN0aXZlX2VkaXRvcikge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKHNlbGVjdGlvbikgPT5cbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgfCBTb21lKGVkKSA9PlxuICAgICAgICAgIGxldCB6aXBwZXJfaW5pdCA9IFppcHBlci5pbml0KCk7XG4gICAgICAgICAgbGV0IGVkX3N0ciA9IFByaW50ZXIudG9fc3RyaW5nX2VkaXRvcihlZCk7XG4gICAgICAgICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0LCBlZF9zdHIpKSB7XG4gICAgICAgICAgfCBOb25lID0+IEVycm9yKENhbnRSZXNldClcbiAgICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICAgIC8vVE9ETzogYWRkIGNvcnJlY3QgYWN0aW9uIHRvIGhpc3RvcnkgKFBpY2tfdXAgaXMgd3JvbmcpXG4gICAgICAgICAgICBsZXQgZWRpdG9yID0gSGF6M2xjb3JlLkVkaXRvci5uZXdfc3RhdGUoUGlja191cCwgeiwgZWQpO1xuICAgICAgICAgICAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9XG4gICAgICAgICAgICAgIEVkaXRvcnMucHV0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBPayh7Li4ubW9kZWwsIGVkaXRvcnMsIHJlc3VsdHN9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB8IE5vbmUgPT4gT2sobW9kZWwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB8IEN1dCA9PlxuICAgICAgLy8gc3lzdGVtIGNsaXBib2FyZCBoYW5kbGluZyBpdHNlbGYgaXMgZG9uZSBpbiBQYWdlLnZpZXcgaGFuZGxlcnNcbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBEZXN0cnVjdChMZWZ0KSlcbiAgICB8IENvcHkgPT5cbiAgICAgIC8vIHN5c3RlbSBjbGlwYm9hcmQgaGFuZGxpbmcgaXRzZWxmIGlzIGRvbmUgaW4gUGFnZS52aWV3IGhhbmRsZXJzXG4gICAgICAvLyBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdGUgYnV0IGluY2x1ZGluZyBhcyBhbiBhY3Rpb24gZm9yIGxvZ2dpbmcgcHVycG9zZXNcbiAgICAgIE9rKG1vZGVsKVxuICAgIHwgVW5kbyA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgRWRpdG9ycy51cGRhdGVfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgIH5zZWxlY3Rpb249bW9kZWwudWlfc3RhdGUuYWN0aXZlX2VkaXRvcixcbiAgICAgICAgICBlZGl0b3IgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci51bmRvKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50X3VuZG8pXG4gICAgICAgICAgICB8IFNvbWUoZWRpdG9yKSA9PiBPayhlZGl0b3IpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IE9rKChlZGl0b3JzLCByZXN1bHRzKSkgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSlcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGUpKVxuICAgICAgfVxuICAgIHwgUmVkbyA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgRWRpdG9ycy51cGRhdGVfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgIH5zZWxlY3Rpb249bW9kZWwudWlfc3RhdGUuYWN0aXZlX2VkaXRvcixcbiAgICAgICAgICBlZGl0b3IgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci5yZWRvKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50X3JlZG8pXG4gICAgICAgICAgICB8IFNvbWUoZWRpdG9yKSA9PiBPayhlZGl0b3IpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IE9rKChlZGl0b3JzLCByZXN1bHRzKSkgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSlcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGUpKVxuICAgICAgfVxuICAgIHwgTW92ZVRvTmV4dEhvbGUoZCkgPT5cbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBNb3ZlKEdvYWwoUGllY2UoR3JvdXQsIGQpKSkpXG4gICAgfCBBc3Npc3RhbnQoYWN0aW9uKSA9PlxuICAgICAgcGVyZm9ybV9hY3Rpb25zKFxuICAgICAgICBtb2RlbCxcbiAgICAgICAgVXBkYXRlQXNzaXN0YW50LmFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMobW9kZWwsIGFjdGlvbiksXG4gICAgICApXG4gICAgfCBCZW5jaG1hcmsoU3RhcnQpID0+XG4gICAgICBMaXN0Lml0ZXIoc2NoZWR1bGVfYWN0aW9uLCBCZW5jaG1hcmsuYWN0aW9uc18xKTtcbiAgICAgIEJlbmNobWFyay5zdGFydCgpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgQmVuY2htYXJrKEZpbmlzaCkgPT5cbiAgICAgIEJlbmNobWFyay5maW5pc2goKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFN0ZXBwZXJBY3Rpb24oa2V5LCBTdGVwRm9yd2FyZChpZHgpKSA9PlxuICAgICAgbGV0IHIgPVxuICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0cy5maW5kKGtleSlcbiAgICAgICAgfD4gTW9kZWxSZXN1bHQuc3RlcF9mb3J3YXJkKGlkeCk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgU3RlcEJhY2t3YXJkKSA9PlxuICAgICAgbGV0IHIgPVxuICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0cy5maW5kKGtleSlcbiAgICAgICAgfD4gTW9kZWxSZXN1bHQuc3RlcF9iYWNrd2FyZCh+c2V0dGluZ3M9bW9kZWwuc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uKTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgcmVzdWx0czogbW9kZWwucmVzdWx0cyB8PiBNb2RlbFJlc3VsdHMuYWRkKGtleSwgcil9KTtcbiAgICB8IFN0ZXBwZXJBY3Rpb24oa2V5LCBIaWRlU3RlcHBlcilcbiAgICB8IFRvZ2dsZVN0ZXBwZXIoa2V5KSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgcmVzdWx0czpcbiAgICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgICAgfD4gTW9kZWxSZXN1bHRzLnVwZGF0ZShrZXksIHYgPT5cbiAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgIHZcbiAgICAgICAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU5vRWxhYjogTW9kZWxSZXN1bHQudClcbiAgICAgICAgICAgICAgICAgfD4gTW9kZWxSZXN1bHQudG9nZ2xlX3N0ZXBwZXIofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUpLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICksXG4gICAgICB9KVxuICAgIHwgVXBkYXRlUmVzdWx0KHJlc3VsdHMpID0+XG4gICAgICBsZXQgcmVzdWx0cyA9XG4gICAgICAgIE1vZGVsUmVzdWx0cy51bmlvbigoXywgX2EsIGIpID0+IFNvbWUoYiksIG1vZGVsLnJlc3VsdHMsIHJlc3VsdHMpO1xuICAgICAgT2soey4uLm1vZGVsLCByZXN1bHRzfSk7XG4gICAgfCBVcGRhdGVFdmFscyhldmFscykgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIHJlc3VsdHM6XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAocmVzdWx0cywgKGtleSwgZXZhbCkpID0+XG4gICAgICAgICAgICAgIE1vZGVsUmVzdWx0cy51cGRhdGUoXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIE9wdGlvbi5tYXAoTW9kZWxSZXN1bHQudXBkYXRlX2V2YWx1YXRpb24oZXZhbCkpLFxuICAgICAgICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBtb2RlbC5yZXN1bHRzLFxuICAgICAgICAgICAgZXZhbHMsXG4gICAgICAgICAgKSxcbiAgICAgIH0pXG4gICAgfTtcbiAgbSB8PiBSZXN1bHQubWFwKH5mPXVwZGF0ZV9jYWNoZWRfZGF0YSh+c2NoZWR1bGVfYWN0aW9uLCB1cGRhdGUpKTtcbn07XG4iLCJsZXQgbGFtID0gXCLOu1wiO1xubGV0IHVwX2Fycm93ID0gXCLihpFcIjtcbmxldCBkb3duX2Fycm93ID0gXCLihpNcIjtcbmxldCBsZWZ0X2Fycm93ID0gXCLihpBcIjtcbmxldCByaWdodF9hcnJvdyA9IFwi4oaSXCI7XG5sZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiO1xubGV0IHp3c3AgPSBcIuKAi1wiO1xuXG5sZXQgdHlwZUFycm93U3ltID0gXCLihpJcIjsgLy8gVSsyMTkyIFwiUmlnaHR3YXJkcyBBcnJvd1wiXG5sZXQgY2FzdEFycm93U3ltID0gXCLih6hcIjtcblxubGV0IGVsbGlwc2lzID0gXCJcXHhFMlxceDgwXFx4QTZcIjtcblxuLy8gY29waWVkIGZyb20gaGF6ZWxcbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgdHBhdF92aWV3ID0gKHRwYXQ6IEhhejNsY29yZS5UUGF0LnQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoICh0cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geFxuICB8IF8gPT4gXCI/XCJcbiAgfTtcblxubGV0IHR5X3ZpZXcgPSAoY2xzOiBzdHJpbmcsIHM6IHN0cmluZyk6IE5vZGUudCA9PlxuICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBjbHNdKSwgW3RleHQocyldKTtcblxubGV0IGFsaWFzX3ZpZXcgPSAoczogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcInR5cC1hbGlhcy12aWV3XCJdKSwgW3RleHQocyldKTtcblxubGV0IHJlYyB2aWV3X3R5ID0gKH5zdHJpcF9vdXRlcl9wYXJlbnM9ZmFsc2UsIHR5OiBIYXozbGNvcmUuVHlwLnQpOiBOb2RlLnQgPT5cbiAgc3dpdGNoIChUeXAudGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKHByb3YpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgY2xzcyhbXCJ0eXAtdmlld1wiLCBcImF0b21cIiwgXCJ1bmtub3duXCJdKSxcbiAgICAgICAgICBBdHRyLnRpdGxlKFR5cC5zaG93X3R5cGVfcHJvdmVuYW5jZShwcm92KSksXG4gICAgICAgIF0pLFxuICAgICAgW3RleHQoXCI/XCIpIC8qLCBwcm92X3ZpZXcocHJvdikqL10sXG4gICAgKVxuICB8IFBhcmVucyh0eSkgPT4gdmlld190eSh0eSlcbiAgfCBJbnQgPT4gdHlfdmlldyhcIkludFwiLCBcIkludFwiKVxuICB8IEZsb2F0ID0+IHR5X3ZpZXcoXCJGbG9hdFwiLCBcIkZsb2F0XCIpXG4gIHwgU3RyaW5nID0+IHR5X3ZpZXcoXCJTdHJpbmdcIiwgXCJTdHJpbmdcIilcbiAgfCBCb29sID0+IHR5X3ZpZXcoXCJCb29sXCIsIFwiQm9vbFwiKVxuICB8IFZhcihuYW1lKSA9PiB0eV92aWV3KFwiVmFyXCIsIG5hbWUpXG4gIHwgUmVjKG5hbWUsIHQpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlJlY1wiXSksXG4gICAgICBbdGV4dChcIlJlYyBcIiArKyB0cGF0X3ZpZXcobmFtZSkgKysgXCIuIFwiKSwgdmlld190eSh0KV0sXG4gICAgKVxuICB8IEZvcmFsbChuYW1lLCB0KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJGb3JhbGxcIl0pLFxuICAgICAgW3RleHQoXCJmb3JhbGwgXCIgKysgdHBhdF92aWV3KG5hbWUpICsrIFwiIC0+IFwiKSwgdmlld190eSh0KV0sXG4gICAgKVxuICB8IExpc3QodCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiYXRvbVwiLCBcIkxpc3RcIl0pLFxuICAgICAgW3RleHQoXCJbXCIpLCB2aWV3X3R5KHQpLCB0ZXh0KFwiXVwiKV0sXG4gICAgKVxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiQXJyb3dcIl0pLFxuICAgICAgcGFyZW5fdmlldyh0MSkgQCBbdGV4dChcIiAtPiBcIiksIHZpZXdfdHkodDIpXSxcbiAgICApXG4gIHwgUHJvZChbXSkgPT4gZGl2KH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJQcm9kXCJdKSwgW3RleHQoXCIoKVwiKV0pXG4gIHwgUHJvZChbX10pID0+XG4gICAgZGl2KH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJQcm9kXCJdKSwgW3RleHQoXCJTaW5nbGV0b24gUHJvZHVjdFwiKV0pXG4gIHwgUHJvZChbdDAsIC4uLnRzXSkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiYXRvbVwiLCBcIlByb2RcIl0pLFxuICAgICAgKFxuICAgICAgICBpZiAoIXN0cmlwX291dGVyX3BhcmVucykge1xuICAgICAgICAgIFt0ZXh0KFwiKFwiKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgW107XG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLFxuICAgICAgICAgIHBhcmVuX3ZpZXcodDApXG4gICAgICAgICAgQCAoXG4gICAgICAgICAgICBMaXN0Lm1hcCh0ID0+IFt0ZXh0KFwiLCBcIiksIC4uLnBhcmVuX3ZpZXcodCldLCB0cylcbiAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICBdXG4gICAgICBAIChcbiAgICAgICAgaWYgKCFzdHJpcF9vdXRlcl9wYXJlbnMpIHtcbiAgICAgICAgICBbdGV4dChcIilcIildO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFtdO1xuICAgICAgICB9XG4gICAgICApLFxuICAgIClcbiAgfCBTdW0odHMpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlN1bVwiXSksXG4gICAgICBzd2l0Y2ggKHRzKSB7XG4gICAgICB8IFtdID0+IFt0ZXh0KFwiTnVsbGFyeSBTdW1cIildXG4gICAgICB8IFt0MF0gPT4gW3RleHQoXCIrXCIpXSBAIGN0cl92aWV3KHQwKVxuICAgICAgfCBbdDAsIC4uLnRzXSA9PlxuICAgICAgICBsZXQgdHNfdmlld3MgPVxuICAgICAgICAgIExpc3QubWFwKHQgPT4gW3RleHQoXCIgKyBcIildIEAgY3RyX3ZpZXcodCksIHRzKSB8PiBMaXN0LmZsYXR0ZW47XG4gICAgICAgIGN0cl92aWV3KHQwKSBAIHRzX3ZpZXdzO1xuICAgICAgfSxcbiAgICApXG4gIHwgQXAoXykgPT4gZmFpbHdpdGgoXCJ0eXBlIGFwcGxpY2F0aW9uIGluIHZpZXdcIilcbiAgfVxuYW5kIGN0cl92aWV3ID1cbiAgZnVuXG4gIHwgVmFyaWFudChjdHIsIF8sIE5vbmUpID0+IFt0ZXh0KGN0cildXG4gIHwgVmFyaWFudChjdHIsIF8sIFNvbWUodHlwKSkgPT4gW1xuICAgICAgdGV4dChjdHIgKysgXCIoXCIpLFxuICAgICAgdmlld190eSh0eXApLFxuICAgICAgdGV4dChcIilcIiksXG4gICAgXVxuICB8IEJhZEVudHJ5KHR5cCkgPT4gW3ZpZXdfdHkodHlwKV1cblxuYW5kIHBhcmVuX3ZpZXcgPSB0eXAgPT5cbiAgaWYgKFR5cC5uZWVkc19wYXJlbnModHlwKSkge1xuICAgIFt0ZXh0KFwiKFwiKSwgdmlld190eSh+c3RyaXBfb3V0ZXJfcGFyZW5zPXRydWUsIHR5cCksIHRleHQoXCIpXCIpXTtcbiAgfSBlbHNlIHtcbiAgICBbdmlld190eSh0eXApXTtcbiAgfTtcblxubGV0IHZpZXcgPSAodHk6IEhhejNsY29yZS5UeXAudCk6IE5vZGUudCA9PlxuICBkaXZfYyhcInR5cC13cmFwcGVyXCIsIFt2aWV3X3R5KHR5KV0pO1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHBvbHlfaWRfZXggPSB7XG4gIHN1Yl9pZDogVHlwRnVuKEJhc2ljKSxcbiAgdGVybTpcbiAgICBta19leGFtcGxlKFxuICAgICAgXCJsZXQgaWQgOiBcXG4gZm9yYWxsIGEgLT4gKGEgLT4gYSkgPSBcXG4gdHlwZnVuIGEgLT4gXFxuIGZ1biB4IDogYSAtPiB4IFxcbiBpbiBpZFwiLFxuICAgICksXG4gIG1lc3NhZ2U6IFwiVGhlIHBvbHltb3JwaGljIGlkZW50aXR5IGZ1bmN0aW9uLiBJdCBtYXkgYmUgaW5zdGFudGlhdGVkIGF0IGFueSB0eXBlIGEsIGFmdGVyIHdoaWNoIHRoZSBmdW5jdGlvbiBhY3RzIGFzIHR5cGUgKGEgLT4gYSkuXCIsXG59O1xuXG5sZXQgX3RwID0gdHBhdChcImFcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgdHlwZnVuX3ZhcjogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYSB0eXBlIHRoYXQgd2hpY2ggaXMgYm91bmQgdG8gdGhlIFsqdHlwZSB2YXJpYWJsZSpdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSB0eXBlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfdHlwZnVuKFtbc3BhY2UoKSwgX3RwLCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBUeXBGdW5jdGlvbkV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3RwKSwgW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbcG9seV9pZF9leF0sXG4gIH07XG59O1xuXG5sZXQgdHlwZV9mdW5jdGlvbnNfYmFzaWMgPSB7aWQ6IFR5cEZ1bmN0aW9uRXhwLCBmb3JtczogW3R5cGZ1bl92YXJdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB0eXBmdW5hcHBfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IFR5cEZ1bkFwLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXG4gICAgICBcImxldCBpZCA6IFxcbiBmb3JhbGwgYSAtPiAoYSAtPiBhKSA9IFxcbiB0eXBmdW4gYSAtPiBcXG4gZnVuIHggOiBhIC0+IHggXFxuIGluIGlkQDxJbnQ+XCIsXG4gICAgKSxcbiAgbWVzc2FnZTogXCJUaGUgcG9seW1vcnBoaWMgaWRlbnRpdHkgZnVuY3Rpb24gaXMgaW5zdGFudGlhdGVkIGF0IEludC4gVGhlIHR5cGUgdmFyaWFibGUgYSBpcyBib3VuZCB0byBJbnQgaW4gdGhlIHR5cGUgZnVuY3Rpb24gYm9keSBhbmQgdGhlIGJvZHkgZXZhbHVhdGVzIHRvIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBvbiBpbnRlZ2Vycy5cIixcbn07XG5sZXQgX2V4cF90ZnVuID0gZXhwKFwiZV90ZnVuXCIpO1xubGV0IF90eXAgPSB0eXAoXCJ0eVwiKTtcbmxldCB0eXBmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5mX2lkOiBJZC50LCB+dHlwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfdGZ1biksIGZfaWQpLFxuICAoUGllY2UuaWQoX3R5cCksIHR5cF9pZCksXG5dO1xubGV0IHR5cGZ1bmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWyp0eXBlIGZ1bmN0aW9uKl0oJXMpIHRvIHRoZSBbKnR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogVHlwRnVuQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX3RmdW4sIG1rX2FwX2V4cF90eXAoW1tfdHlwXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHlwZnVuYXBwX2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgdHlwZnVuYXBzOiBncm91cCA9IHtpZDogVHlwRnVuQXBFeHAsIGZvcm1zOiBbdHlwZnVuYXBwX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfdHlwID0gdHlwKFwidHlcIik7XG5sZXQgdHlwYW5uX3BhdF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0X2lkOiBJZC50LCB+dHlwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQpLCBwYXRfaWQpLFxuICAoUGllY2UuaWQoX3R5cCksIHR5cF9pZCksXG5dO1xubGV0IHR5cGFubl9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IG1hdGNoIHRoZSBbdHlwZSBhbm5vdGF0ZWQgcGF0dGVybl0oJXMpIGFuZCBoYXZlIHRoZSBbaW5kaWNhdGVkIHR5cGVdKCVzKSBtYXRjaCB0aGlzIHR5cGUgYW5ub3RhdGlvbiBwYXR0ZXJuLlwiO1xuICB7XG4gICAgaWQ6IFR5cEFublBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXQsIHNwYWNlKCksIHR5cGVhbm4oKSwgc3BhY2UoKSwgX3R5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHlwYW5uOiBncm91cCA9IHtpZDogVHlwQW5uUGF0LCBmb3JtczogW3R5cGFubl9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHBhdCA9IHRwYXQoXCJwXCIpO1xubGV0IF90eXBfZGVmID0gdHlwKFwidHlfZGVmXCIpO1xubGV0IHR5YWxpYXNfYmFzZV9leHBfY29sb3JpbmdfaWRzID0gKH50cGF0X2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KSA9PiBbXG4gIChQaWVjZS5pZChfdHBhdCksIHRwYXRfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCB0eWFsaWFzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWyp0eXBlKl0oJXMpIGlzIGJvdW5kIHRvIHRoZSBbKnR5cGUgdmFyaWFibGUqXSglcykgaW4gdGhlIGJvZHkuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX3R5YWxpYXMoW1tzcGFjZSgpLCBfdHBhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfdHlwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogVHlBbGlhc0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0eWFsaWFzX2V4cHM6IGdyb3VwID0ge2lkOiBUeUFsaWFzRXhwLCBmb3JtczogW3R5YWxpYXNfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdHVwbGVfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgdHVwbGUgdHlwZSBjbGFzc2lmaWVzICVzLXR1cGxlcyB3aXRoIGNvcnJlc3BvbmRpbmcgZWxlbWVudCB0eXBlcy5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfdHlwKCk7XG4gIHtcbiAgICBpZDogVHVwbGVUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJ0eTFcIiksIGNvbW1hLCBzcGFjZSgpLCB0eXAoXCIuLi5cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFt0eXAoXCJ0eTFcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR1cGxlMF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBlZGdlLWNhc2UgdHVwbGUgdHlwZSwgYWxzbyBrbm93biBhcyB0aGUgYHVuaXRgIHR5cGUsIGNsYXNzaWZpZXMgMC10dXBsZXMsIG9mIHdoaWNoIHRoZXJlIGlzIG9ubHkgb25lLlwiO1xuICB7XG4gICAgaWQ6IFR1cGxlMFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIigpXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBfdHlwX2VsZW0xID0gdHlwKFwidHkxXCIpO1xubGV0IF90eXBfZWxlbTIgPSB0eXAoXCJ0eTJcIik7XG5sZXQgdHVwbGUyX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2VsZW0xKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9lbGVtMiksIGVsZW0yX2lkKSxcbl07XG5sZXQgdHVwbGUyX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHR1cGxlIHR5cGUgY2xhc3NpZmllcyAyLXR1cGxlcyB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBbZmlyc3QgZWxlbWVudCB0eXBlXSglcykgYW5kIHNlY29uZCBlbGVtZW50IG9mIHRoZSBbc2Vjb25kIGVsZW1lbnQgdHlwZV0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV90eXAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTJUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfdHlwX2VsZW0xLCBjb21tYSwgc3BhY2UoKSwgX3R5cF9lbGVtMl0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3R5cChcInR5MVwiKSwgY29tbWFfdHlwKCksIHR5cChcInR5MlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF90eXBfZWxlbTEgPSB0eXAoXCJ0eTFcIik7XG5sZXQgX3R5cF9lbGVtMiA9IHR5cChcInR5MlwiKTtcbmxldCBfdHlwX2VsZW0zID0gdHlwKFwidHkzXCIpO1xubGV0IHR1cGxlM190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQsIH5lbGVtM19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2VsZW0xKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9lbGVtMiksIGVsZW0yX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTMpLCBlbGVtM19pZCksXG5dO1xubGV0IHR1cGxlM190eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyB0dXBsZSB0eXBlIGNsYXNzaWZpZXMgMy10dXBsZXMgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgW2ZpcnN0IGVsZW1lbnQgdHlwZV0oJXMpLCBzZWNvbmQgZWxlbWVudCBvZiB0aGUgW3NlY29uZCBlbGVtZW50IHR5cGVdKCVzKSwgYW5kIHRoaXJkIGVsZW1lbnQgb2YgdGhlIFt0aGlyZCBlbGVtZW50IHR5cGVdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfdHlwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUzVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfdHlwX2VsZW0xLFxuICAgICAgY29tbWFfdHlwKCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9lbGVtMixcbiAgICAgIGNvbW1hLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfZWxlbTMsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3R5cChcInR5MVwiKSwgY29tbWFfdHlwKCksIHR5cChcInR5MlwiKSwgY29tbWFfdHlwKCksIHR5cChcInR5M1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHVwbGU6IGdyb3VwID0ge2lkOiBUdXBsZVR5cCwgZm9ybXM6IFt0dXBsZV90eXBdfTtcblxubGV0IHR1cGxlMDogZ3JvdXAgPSB7aWQ6IFR1cGxlMFR5cCwgZm9ybXM6IFt0dXBsZTBfdHlwXX07XG5cbmxldCB0dXBsZTI6IGdyb3VwID0ge2lkOiBUdXBsZTJUeXAsIGZvcm1zOiBbdHVwbGUyX3R5cCwgdHVwbGVfdHlwXX07XG5cbmxldCB0dXBsZTM6IGdyb3VwID0ge2lkOiBUdXBsZTNUeXAsIGZvcm1zOiBbdHVwbGUzX3R5cCwgdHVwbGVfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdHVwbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgJXMtdHVwbGVzIHdpdGggZWxlbWVudHMgbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJucyBtYXRjaCB0aGlzIHR1cGxlIHBhdHRlcm4uXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwicDFcIiksIGNvbW1hLCBzcGFjZSgpLCBwYXQoXCIuLi5cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCB0dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIGVsZW0yX2lkKSxcbl07XG5sZXQgdHVwbGVfcGF0X3NpemUyOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgMi10dXBsZXMgd2l0aCBmaXJzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbZmlyc3QgZWxlbWVudCBwYXR0ZXJuXSglcykgYW5kIHNlY29uZCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbc2Vjb25kIGVsZW1lbnQgcGF0dGVybl0oJXMpIG1hdGNoIHRoaXMgdHVwbGUgcGF0dGVybi5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIHtcbiAgICBpZDogVHVwbGUyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdDEsIGNvbW1hLCBzcGFjZSgpLCBfcGF0Ml0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX3BhdDMgPSBwYXQoXCJwM1wiKTtcbmxldCB0dXBsZV9wYXRfc2l6ZTNfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQsIH5lbGVtM19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgZWxlbTJfaWQpLFxuICAoUGllY2UuaWQoX3BhdDMpLCBlbGVtM19pZCksXG5dO1xubGV0IHR1cGxlX3BhdF9zaXplMzogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIDMtdHVwbGVzIHdpdGggZmlyc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgW2ZpcnN0IGVsZW1lbnQgcGF0dGVybl0oJXMpLCBzZWNvbmQgZWxlbWVudCBtYXRjaGluZyB0aGUgW3NlY29uZCBlbGVtZW50IHBhdHRlcm5dKCVzKSwgYW5kIHRoaXJkIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFt0aGlyZCBlbGVtZW50IHBhdHRlcm5dKCVzKSBtYXRjaCB0aGlzIHR1cGxlIHBhdHRlcm4uXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlM1BhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3BhdDEsXG4gICAgICBjb21tYV9wYXQoKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfcGF0MixcbiAgICAgIGNvbW1hLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9wYXQzLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR1cGxlOiBncm91cCA9IHtpZDogVHVwbGVQYXQsIGZvcm1zOiBbdHVwbGVfcGF0XX07XG5sZXQgdHVwbGUyOiBncm91cCA9IHtpZDogVHVwbGUyUGF0LCBmb3JtczogW3R1cGxlX3BhdF9zaXplMiwgdHVwbGVfcGF0XX07XG5sZXQgdHVwbGUzOiBncm91cCA9IHtpZDogVHVwbGUzUGF0LCBmb3JtczogW3R1cGxlX3BhdF9zaXplMywgdHVwbGVfcGF0XX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgdHVwbGVfZXhhbXBsZV8xID0ge1xuICBzdWJfaWQ6IFR1cGxlMSxcbiAgdGVybTogbWtfZXhhbXBsZShcIih0cnVlLCAxKVwiKSxcbiAgbWVzc2FnZTogXCJBIHR1cGxlIHdpdGggZmlyc3QgZWxtZW50IHRydWUgYW5kIHNlY29uZCBlbGVtZW50IDEuXCIsXG59O1xubGV0IHR1cGxlX2V4YW1wbGVfMiA9IHtcbiAgc3ViX2lkOiBUdXBsZTIsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIoMSwgMiwgMylcIiksXG4gIG1lc3NhZ2U6IFwiQSB0dXBsZSB3aXRoIGZpcnN0IGVsZW1lbnQgMSwgc2Vjb25kIGVsZW1lbnQgMiwgYW5kIHRoaXJkIGVsZW1lbnQgMy5cIixcbn07XG5sZXQgdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSB0dXBsZSBoYXMgJXMgZWxlbWVudHMuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiZTFcIiksIGNvbW1hLCBzcGFjZSgpLCBleHAoXCIuLi5cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIGV4cChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlX2V4YW1wbGVfMSwgdHVwbGVfZXhhbXBsZV8yXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHR1cGxlX2V4cF9zaXplMl9jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKFBpZWNlLmlkKF9leHAxKSwgZXhwMV9pZCksIChQaWVjZS5pZChfZXhwMiksIGV4cDJfaWQpXTtcbn07XG5sZXQgdHVwbGVfZXhwX3NpemUyOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSAyLXR1cGxlIGhhcyBhIFtmaXJzdF0oJXMpIGFuZCBbc2Vjb25kXSglcykgZWxlbWVudC5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfZXhwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUyRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIGNvbW1hLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiZTJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZV9leGFtcGxlXzFdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgX2V4cDMgPSBleHAoXCJlM1wiKTtcbmxldCB0dXBsZV9leHBfc2l6ZTNfY29sb3JpbmdfaWRzID1cbiAgICAofmV4cDFfaWQ6IElkLnQsIH5leHAyX2lkOiBJZC50LCB+ZXhwM19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cDIpLCBleHAyX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cDMpLCBleHAzX2lkKSxcbiAgXTtcbn07XG5sZXQgdHVwbGVfZXhwX3NpemUzOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSAzLXR1cGxlIGhhcyBhIFtmaXJzdF0oJXMpLCBbc2Vjb25kXSglcyksIGFuZCBbdGhpcmRdKCVzKSBlbGVtZW50LlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTNFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF9leHAxLFxuICAgICAgY29tbWFfZXhwKCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cDIsXG4gICAgICBjb21tYSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfZXhwMyxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBleHAoXCJlMlwiKSwgY29tbWFfZXhwKCksIGV4cChcImUzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGVfZXhhbXBsZV8yXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZXM6IGdyb3VwID0ge2lkOiBUdXBsZUV4cCwgZm9ybXM6IFt0dXBsZV9leHBdfTtcblxubGV0IHR1cGxlczI6IGdyb3VwID0ge2lkOiBUdXBsZTJFeHAsIGZvcm1zOiBbdHVwbGVfZXhwX3NpemUyLCB0dXBsZV9leHBdfTtcblxubGV0IHR1cGxlczM6IGdyb3VwID0ge2lkOiBUdXBsZTNFeHAsIGZvcm1zOiBbdHVwbGVfZXhwX3NpemUzLCB0dXBsZV9leHBdfTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IHN2ZyA9IChhdHRycywgY2hpbGRyZW4pID0+XG4gIE5vZGUuY3JlYXRlX3N2ZyhcInN2Z1wiLCB+YXR0cj1BdHRyLm1hbnkoYXR0cnMpLCBjaGlsZHJlbik7XG5cbmxldCBzdG9wID0gYXR0cnMgPT4gTm9kZS5jcmVhdGVfc3ZnKFwic3RvcFwiLCB+YXR0cj1BdHRyLm1hbnkoYXR0cnMpLCBbXSk7XG4iLCJ0eXBlIG9yZGluYWwgPSBpbnQ7XG5cbnR5cGUgc3RhdHVzID1cbiAgfCBFbXB0eVxuICB8IFBhcnRpYWxcbiAgfCBGdWxsO1xuXG50eXBlIGludGVydmFsID0gKGZsb2F0LCBmbG9hdCk7XG5cbnR5cGUgdCA9IHtcbiAgcm9vdDogbm9kZSxcbiAgLy8gaW50ZXJ2YWwgZW5kcG9pbnRzIHNwZWNpZmllZCBhdCBpbml0aWFsaXphdGlvblxuICB2YWx1ZXM6IGFycmF5KGZsb2F0KSxcbiAgLy8gb3JkaW5hbHMgb2Ygc29ydGVkIGVuZHBvaW50c1xuICBvcmRpbmFsczogSGFzaHRibC50KGZsb2F0LCBvcmRpbmFsKSxcbn1cbmFuZCBub2RlID0ge1xuICAvLyBpbnZhcmlhbnQ6IHVuaXQgaW50ZXJ2YWxzIGFyZSBsZWF2ZXNcbiAgaW50ZXJ2YWw6IChvcmRpbmFsLCBvcmRpbmFsKSxcbiAgc2hhcGU6IG5vZGVfc2hhcGUsXG4gIC8vIHN0YXR1cyBhbmQgY291bnQgY291bGQgYmUgZXh0ZXJuYWxpemVkIGluIGEgbW9yZVxuICAvLyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZGF0YSBzdHJ1Y3R1cmVcbiAgLy8gYnV0IHdlIG9ubHkgbmVlZCB0aGlzIGRhdGEgc3RydWN0dXJlIGZvciBhIHNpbmdsZVxuICAvLyBwdXJwb3NlIGF0IHRoZSBtb21lbnRcbiAgc3RhdHVzLFxuICBjb3VudDogaW50LFxufVxuYW5kIG5vZGVfc2hhcGUgPVxuICB8IExlYWZcbiAgfCBCcmFuY2goTGF6eS50KG5vZGUpLCBMYXp5LnQobm9kZSkpO1xuXG5sZXQgbWsgPSAodmFsdWVzOiBsaXN0KGZsb2F0KSkgPT4ge1xuICBsZXQgKHZhbHVlcywgb3JkaW5hbHMpID0ge1xuICAgIGxldCBzb3J0ZWRfdmFsdWVzID0gTGlzdC5zb3J0X3VuaXEoRmxvYXQuY29tcGFyZSwgdmFsdWVzKTtcbiAgICAoXG4gICAgICBBcnJheS5vZl9saXN0KHNvcnRlZF92YWx1ZXMpLFxuICAgICAgc29ydGVkX3ZhbHVlc1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCB5KSA9PiAoeSwgaSkpXG4gICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgfD4gSGFzaHRibC5vZl9zZXEsXG4gICAgKTtcbiAgfTtcblxuICBsZXQgcmVjIG1rX25vZGUgPSAoYTogb3JkaW5hbCwgYjogb3JkaW5hbCk6IG5vZGUgPT4ge1xuICAgIGxldCBzaGFwZSA9XG4gICAgICBpZiAoYSArIDEgPT0gYikge1xuICAgICAgICBMZWFmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1pZCA9IChhICsgYikgLyAyO1xuICAgICAgICBCcmFuY2gobGF6eShta19ub2RlKGEsIG1pZCkpLCBsYXp5KG1rX25vZGUobWlkLCBiKSkpO1xuICAgICAgfTtcbiAgICB7c2hhcGUsIGludGVydmFsOiAoYSwgYiksIGNvdW50OiAwLCBzdGF0dXM6IEVtcHR5fTtcbiAgfTtcblxuICB7dmFsdWVzLCBvcmRpbmFscywgcm9vdDogbWtfbm9kZSgwLCBBcnJheS5sZW5ndGgodmFsdWVzKSAtIDEpfTtcbn07XG5cbmxldCB1cGRhdGVfc3RhdHVzID0gKG5vZGU6IG5vZGUpOiBub2RlID0+IHtcbiAgbGV0IHN0YXR1cyA9XG4gICAgaWYgKG5vZGUuY291bnQgPiAwKSB7XG4gICAgICBGdWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG5vZGUuc2hhcGUpIHtcbiAgICAgIHwgTGVhZiA9PiBFbXB0eVxuICAgICAgfCBCcmFuY2gobCwgcikgPT5cbiAgICAgICAgc3dpdGNoIChMYXp5LmZvcmNlKGwpLnN0YXR1cywgTGF6eS5mb3JjZShyKS5zdGF0dXMpIHtcbiAgICAgICAgfCAoRW1wdHksIEVtcHR5KSA9PiBFbXB0eVxuICAgICAgICB8IF8gPT4gUGFydGlhbFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIHsuLi5ub2RlLCBzdGF0dXN9O1xufTtcblxudHlwZSBvcCA9XG4gIHwgSW5zZXJ0XG4gIHwgRGVsZXRlO1xubGV0IHN0cmluZ19vZl9vcCA9XG4gIGZ1blxuICB8IEluc2VydCA9PiBcImluc2VydFwiXG4gIHwgRGVsZXRlID0+IFwiZGVsZXRlXCI7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gZm9sbG93cyBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNlY3Rpb25zIDguMyArIDguNVxuICogb2YgQ29tcHV0YXRpb25hbCBHZW9tZXRyeTogQW4gSW50cm9kdWN0aW9uIGJ5IFByZXBhcmF0YSAmIFNoYW1vcy5cbiAqIFNlY3Rpb24gOC4zIGRlc2NyaWJlcyB0aGUgZ2VuZXJhbCB1c2Ugb2Ygc2VnbWVudCB0cmVlcyB0byBjb21wdXRlXG4gKiBmZWF0dXJlcyBvZiBhIGNvbGxlY3Rpb24gb2YgcmVjdGFuZ2xlczsgU2VjdGlvbiA4LjUgZGVzY3JpYmVzIHRoZVxuICogc3BlY2lhbGl6YXRpb24gb2YgdGhhdCBhcHByb2FjaCB0byBjb21wdXRlIHRoZSBjb250b3VyIG9mIGEgdW5pb25cbiAqIG9mIHJlY3RhbmdsZXMuIFRoZSBnZW5lcmFsIGZyYW1ld29yayBsYWlkIG91dCBpbiA4LjMgaXMgdW5uZWNlc3NhcnlcbiAqIGZvciBvdXIgcHVycG9zZXMgKHNvIG91ciBpbXBsZW1lbnRhdGlvbiBjb3VsZCBiZSBzdHJlYW1saW5lZCkgYnV0IElcbiAqIGltcGxlbWVudGVkIGl0IGFueXdheSBzbyB0aGF0IHRoZSB0ZXh0IHNlcnZlcyBhcyBkb2N1bWVudGF0aW9uIHRoYXRcbiAqIGNsb3NlbHkgbWFwcyB0byBvdXIgY29kZS5cbiAqL1xubGV0IHBlcmZvcm0gPSAob3AsIChhLCBiKTogaW50ZXJ2YWwsIHRyZWU6IHQpOiB0ID0+IHtcbiAgbGV0IHJlYyBnbyA9IChvcCwgKGEsIGIpIGFzIGludGVydmFsLCBub2RlOiBub2RlKTogbm9kZSA9PiB7XG4gICAgbGV0IChhJywgYicpID0gbm9kZS5pbnRlcnZhbDtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBpZiAoYSA8PSBhJyAmJiBiJyA8PSBiKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBhbGxvY2F0ZSB0byB0aGlzIG5vZGVcbiAgICAgICAgICAuLi5ub2RlLFxuICAgICAgICAgIGNvdW50OlxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBJbnNlcnQgPT4gbm9kZS5jb3VudCArIDFcbiAgICAgICAgICAgIHwgRGVsZXRlID0+IG5vZGUuY291bnQgLSAxXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICAgIHwgTGVhZiA9PiBub2RlXG4gICAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgICAgbGV0IG1pZCA9IChhJyArIGInKSAvIDI7XG4gICAgICAgICAgbGV0IGwgPSBhID49IG1pZCA/IGwgOiAobGF6eShnbyhvcCwgaW50ZXJ2YWwsIExhenkuZm9yY2UobCkpKSk7XG4gICAgICAgICAgbGV0IHIgPSBiIDw9IG1pZCA/IHIgOiAobGF6eShnbyhvcCwgaW50ZXJ2YWwsIExhenkuZm9yY2UocikpKSk7XG4gICAgICAgICAgey4uLm5vZGUsIHNoYXBlOiBCcmFuY2gobCwgcil9O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB1cGRhdGVfc3RhdHVzKG5vZGUpO1xuICB9O1xuICBzd2l0Y2ggKFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYSksXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBiKSxcbiAgKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+XG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgXCJTZWdtZW50VHJlZS4lczogZXhwZWN0ZWQgaW50ZXJ2YWwgd2l0aCBlbmRwb2ludHMgc3BlY2lmaWVkIGF0IGluaXRpYWxpemF0aW9uXCIsXG4gICAgICAgIHN0cmluZ19vZl9vcChvcCksXG4gICAgICApO1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQobXNnKSk7XG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+XG4gICAgbGV0IGludGVydmFsID0gYSA8IGIgPyAoYSwgYikgOiAoYiwgYSk7XG4gICAgbGV0IG5ld19yb290ID0gZ28ob3AsIGludGVydmFsLCB0cmVlLnJvb3QpO1xuICAgIHsuLi50cmVlLCByb290OiBuZXdfcm9vdH07XG4gIH07XG59O1xubGV0IGluc2VydCA9IHBlcmZvcm0oSW5zZXJ0KTtcbmxldCBkZWxldGUgPSBwZXJmb3JtKERlbGV0ZSk7XG5cbi8qKlxuICogUHJlcGFyYXRhICYgU2hhbW9zIHVzZSB0aGUgdGVybWlub2xvZ3kgXCJjb250cmlidXRpb25cIiBhbmQgc3BlY2lmeVxuICogdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgcHJvY2VkdXJlIENPTlRSIGluIFNlY3Rpb24gOC41LlxuICovXG5sZXQgY29tcGxlbWVudF9pbnRlcnNlY3Rpb24gPSAoKGEsIGIpOiBpbnRlcnZhbCwgdHJlZTogdCk6IGxpc3QoaW50ZXJ2YWwpID0+IHtcbiAgbGV0IHJlYyBnbyA9XG4gICAgICAgICAgKH5zdGFjaz1bXSwgKGEsIGIpIGFzIGludGVydmFsLCBub2RlOiBub2RlKVxuICAgICAgICAgIDogbGlzdCgob3JkaW5hbCwgb3JkaW5hbCkpID0+IHtcbiAgICBsZXQgKGEnLCBiJykgPSBub2RlLmludGVydmFsO1xuICAgIHN3aXRjaCAobm9kZS5zdGF0dXMpIHtcbiAgICB8IEZ1bGwgPT4gc3RhY2tcbiAgICB8IEVtcHR5IHdoZW4gYSA8PSBhJyAmJiBiJyA8PSBiID0+XG4gICAgICAvLyBtZXJnZSBjb250aW51b3VzIHNlZ21lbnRzXG4gICAgICBzd2l0Y2ggKHN0YWNrKSB7XG4gICAgICB8IFsoYScnLCBiJycpLCAuLi5yZXN0XSB3aGVuIGEnID09IGInJyA9PiBbKGEnJywgYicpLCAuLi5yZXN0XVxuICAgICAgfCBfID0+IFsoYScsIGInKSwgLi4uc3RhY2tdXG4gICAgICB9XG4gICAgfCBfID0+XG4gICAgICBzd2l0Y2ggKG5vZGUuc2hhcGUpIHtcbiAgICAgIHwgTGVhZiA9PiBzdGFja1xuICAgICAgfCBCcmFuY2gobCwgcikgPT5cbiAgICAgICAgbGV0IG1pZCA9IChhJyArIGInKSAvIDI7XG4gICAgICAgIGxldCBzdGFjayA9IGEgPj0gbWlkID8gc3RhY2sgOiBnbyh+c3RhY2ssIGludGVydmFsLCBMYXp5LmZvcmNlKGwpKTtcbiAgICAgICAgYiA8PSBtaWQgPyBzdGFjayA6IGdvKH5zdGFjaywgaW50ZXJ2YWwsIExhenkuZm9yY2UocikpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIHN3aXRjaCAoXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBhKSxcbiAgICBIYXNodGJsLmZpbmRfb3B0KHRyZWUub3JkaW5hbHMsIGIpLFxuICApIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFpbHdpdGgoXCJpbnZhbGlkIGFyZ3VtZW50XCIpXG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+XG4gICAgbGV0IGludGVydmFsID0gYSA8IGIgPyAoYSwgYikgOiAoYiwgYSk7XG4gICAgZ28oaW50ZXJ2YWwsIHRyZWUucm9vdClcbiAgICB8PiBMaXN0Lm1hcCgoKG9yZGluYWwxLCBvcmRpbmFsMikpID0+IHtcbiAgICAgICAgIGxldCAobzEsIG8yKSA9IGEgPCBiID8gKG9yZGluYWwxLCBvcmRpbmFsMikgOiAob3JkaW5hbDIsIG9yZGluYWwxKTtcbiAgICAgICAgICh0cmVlLnZhbHVlc1tvMV0sIHRyZWUudmFsdWVzW28yXSk7XG4gICAgICAgfSk7XG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgUG9pbnQgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICB4OiBmbG9hdCxcbiAgICB5OiBmbG9hdCxcbiAgfTtcbn07XG5cbm1vZHVsZSBWZWN0b3IgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBkeDogZmxvYXQsXG4gICAgZHk6IGZsb2F0LFxuICB9O1xufTtcblxubW9kdWxlIFJlY3QgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBtaW46IFBvaW50LnQsXG4gICAgd2lkdGg6IGZsb2F0LFxuICAgIGhlaWdodDogZmxvYXQsXG4gIH07XG59O1xuXG5tb2R1bGUgUGF0aCA9IHtcbiAgdHlwZSB0ID0gbGlzdChjbWQpXG4gIGFuZCBjbWQgPVxuICAgIHwgWlxuICAgIHwgTShQb2ludC50KVxuICAgIHwgTV8oVmVjdG9yLnQpXG4gICAgfCBMKFBvaW50LnQpXG4gICAgfCBMXyhWZWN0b3IudClcbiAgICB8IEgoe3g6IGZsb2F0fSlcbiAgICB8IEhfKHtkeDogZmxvYXR9KVxuICAgIHwgVih7eTogZmxvYXR9KVxuICAgIHwgVl8oe2R5OiBmbG9hdH0pXG4gICAgfCBBXyh7XG4gICAgICAgIHJ4OiBmbG9hdCxcbiAgICAgICAgcnk6IGZsb2F0LFxuICAgICAgICB4X2F4aXNfcm90YXRpb246IGZsb2F0LFxuICAgICAgICBsYXJnZV9hcmNfZmxhZzogYm9vbCxcbiAgICAgICAgc3dlZXBfZmxhZzogYm9vbCxcbiAgICAgICAgZHg6IGZsb2F0LFxuICAgICAgICBkeTogZmxvYXQsXG4gICAgICB9KTtcblxuICBsZXQgY21kZnVkZ2UgPSAofng9MC4sIH55PTAuLCBjOiBjbWQpOiBjbWQgPT4ge1xuICAgIGxldCAoaCwgdikgPSAoeCwgeSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgfCBNKHt4LCB5fSkgPT4gTSh7eDogeCArLiBoLCB5OiB5ICsuIHZ9KVxuICAgIHwgTCh7eCwgeX0pID0+IEwoe3g6IHggKy4gaCwgeTogeSArLiB2fSlcbiAgICB8IEgoe3h9KSA9PiBIKHt4OiB4ICsuIGh9KVxuICAgIHwgVih7eX0pID0+IFYoe3k6IHkgKy4gdn0pXG4gICAgfCBfID0+IGNcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtID0gKH54LCB+eSkgPT4gTSh7eDogRmxvYXQub2ZfaW50KHgpLCB5OiBGbG9hdC5vZl9pbnQoeSl9KTtcbiAgbGV0IGxfID0gKH5keCwgfmR5KSA9PiBMXyh7ZHg6IEZsb2F0Lm9mX2ludChkeCksIGR5OiBGbG9hdC5vZl9pbnQoZHkpfSk7XG4gIGxldCBoID0gKH54KSA9PiBIKHt4OiBGbG9hdC5vZl9pbnQoeCl9KTtcbiAgbGV0IGhfID0gKH5keCkgPT4gSF8oe2R4OiBGbG9hdC5vZl9pbnQoZHgpfSk7XG4gIGxldCB2ID0gKH55KSA9PiBWKHt5OiBGbG9hdC5vZl9pbnQoeSl9KTtcbiAgbGV0IHZfID0gKH5keSkgPT4gVl8oe2R5OiBGbG9hdC5vZl9pbnQoZHkpfSk7XG5cbiAgbGV0IHNjYWxlX2NtZCA9ICh+c2NhbGVfeD0xLiwgfnNjYWxlX3k9MS4pID0+XG4gICAgZnVuXG4gICAgfCAoWiB8IE0oXykgfCBMKF8pIHwgSChfKSB8IFYoXykgfCBBXyhfKSkgYXMgY21kID0+IGNtZFxuICAgIHwgTV8oe2R4LCBkeX0pID0+IE1fKHtkeDogc2NhbGVfeCAqLiBkeCwgZHk6IHNjYWxlX3kgKi4gZHl9KVxuICAgIHwgTF8oe2R4LCBkeX0pID0+IExfKHtkeDogc2NhbGVfeCAqLiBkeCwgZHk6IHNjYWxlX3kgKi4gZHl9KVxuICAgIHwgSF8oe2R4fSkgPT4gSF8oe2R4OiBzY2FsZV94ICouIGR4fSlcbiAgICB8IFZfKHtkeX0pID0+IFZfKHtkeTogc2NhbGVfeSAqLiBkeX0pO1xuXG4gIGxldCBzY2FsZSA9IHMgPT4gTGlzdC5tYXAoc2NhbGVfY21kKH5zY2FsZV94PXMsIH5zY2FsZV95PXMpKTtcbiAgbGV0IHNjYWxlX3ggPSBzID0+IExpc3QubWFwKHNjYWxlX2NtZCh+c2NhbGVfeD1zKSk7XG4gIGxldCBzY2FsZV95ID0gcyA9PiBMaXN0Lm1hcChzY2FsZV9jbWQofnNjYWxlX3k9cykpO1xuXG4gIGxldCByZXZlcnNlID0gTGlzdC5yZXZfbWFwKHNjYWxlX2NtZCh+c2NhbGVfeD0tMS4sIH5zY2FsZV95PS0xLikpO1xuXG4gIGxldCB0cmFuc2xhdGVfY21kID0gKHY6IFZlY3Rvci50KSA9PlxuICAgIGZ1blxuICAgIHwgKFogfCBNXyhfKSB8IExfKF8pIHwgSF8oXykgfCBWXyhfKSB8IEFfKF8pKSBhcyBjbWQgPT4gY21kXG4gICAgfCBNKHt4LCB5fSkgPT4gTSh7eDogeCArLiB2LmR4LCB5OiB5ICsuIHYuZHl9KVxuICAgIHwgTCh7eCwgeX0pID0+IEwoe3g6IHggKy4gdi5keCwgeTogeSArLiB2LmR5fSlcbiAgICB8IEgoe3h9KSA9PiBIKHt4OiB4ICsuIHYuZHh9KVxuICAgIHwgVih7eX0pID0+IFYoe3k6IHkgKy4gdi5keX0pO1xuICBsZXQgdHJhbnNsYXRlID0gdiA9PiBMaXN0Lm1hcCh0cmFuc2xhdGVfY21kKHYpKTtcblxuICBsZXQgc3RyaW5nX29mX2ZsYWcgPVxuICAgIGZ1blxuICAgIHwgZmFsc2UgPT4gXCIwXCJcbiAgICB8IHRydWUgPT4gXCIxXCI7XG5cbiAgbGV0IHN0cmluZ19vZl9jb21tYW5kID1cbiAgICBmdW5cbiAgICB8IFogPT4gXCJaXCJcbiAgICB8IE0oe3gsIHl9KSA9PiBQcmludGYuc3ByaW50ZihcIk0gJWYgJWZcIiwgeCwgeSlcbiAgICB8IE1fKHtkeCwgZHl9KSA9PiBQcmludGYuc3ByaW50ZihcIm0gJWYgJWZcIiwgZHgsIGR5KVxuICAgIHwgTCh7eCwgeX0pID0+IFByaW50Zi5zcHJpbnRmKFwiTCAlZiAlZlwiLCB4LCB5KVxuICAgIHwgTF8oe2R4LCBkeX0pID0+IFByaW50Zi5zcHJpbnRmKFwibCAlZiAlZlwiLCBkeCwgZHkpXG4gICAgfCBIKHt4fSkgPT4gUHJpbnRmLnNwcmludGYoXCJIICVmXCIsIHgpXG4gICAgfCBIXyh7ZHh9KSA9PiBQcmludGYuc3ByaW50ZihcImggJWZcIiwgZHgpXG4gICAgfCBWKHt5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJWICVmXCIsIHkpXG4gICAgfCBWXyh7ZHl9KSA9PiBQcmludGYuc3ByaW50ZihcInYgJWZcIiwgZHkpXG4gICAgfCBBXyh7cngsIHJ5LCB4X2F4aXNfcm90YXRpb24sIGxhcmdlX2FyY19mbGFnLCBzd2VlcF9mbGFnLCBkeCwgZHl9KSA9PlxuICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgIFwiYSAlZiAlZiAlZiAlcyAlcyAlZiAlZlwiLFxuICAgICAgICByeCxcbiAgICAgICAgcnksXG4gICAgICAgIHhfYXhpc19yb3RhdGlvbixcbiAgICAgICAgc3RyaW5nX29mX2ZsYWcobGFyZ2VfYXJjX2ZsYWcpLFxuICAgICAgICBzdHJpbmdfb2ZfZmxhZyhzd2VlcF9mbGFnKSxcbiAgICAgICAgZHgsXG4gICAgICAgIGR5LFxuICAgICAgKTtcblxuICBsZXQgdmlldyA9ICh+YXR0cnM6IEF0dHJzLnQsIHBhdGg6IHQpOiBOb2RlLnQgPT4ge1xuICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlKExpc3QubGVuZ3RoKHBhdGgpICogMjApO1xuICAgIHBhdGhcbiAgICB8PiBMaXN0Lml0ZXIoY21kID0+IHtcbiAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGJ1ZmZlciwgc3RyaW5nX29mX2NvbW1hbmQoY21kKSk7XG4gICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhidWZmZXIsIFwiIFwiKTtcbiAgICAgICB9KTtcbiAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICBcInBhdGhcIixcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW0F0dHIuY3JlYXRlKFwiZFwiLCBCdWZmZXIuY29udGVudHMoYnVmZmVyKSksIC4uLmF0dHJzXSksXG4gICAgICBbXSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIE9ydGhvZ29uYWxQb2x5Z29uID0ge1xuICB0eXBlIHQgPSBQYXRoLnQ7XG5cbiAgdHlwZSBsaW5rZWRfZWRnZSA9IHtcbiAgICBzcmM6IFBvaW50LnQsXG4gICAgZHN0OiBQb2ludC50LFxuICAgIG11dGFibGUgbmV4dDogW0BzZXhwLm9wYXF1ZV0gb3B0aW9uKGxpbmtlZF9lZGdlKSxcbiAgfTtcblxuICBsZXQgbGlua2VkX2VkZ2VfZXEgPSAoZTEsIGUyKSA9PiBlMS5zcmMgPT0gZTIuc3JjICYmIGUxLmRzdCA9PSBlMi5kc3Q7XG5cbiAgbGV0IGNtZF9vZl9saW5rZWRfZWRnZSA9IChlZGdlKTogUGF0aC5jbWQgPT4ge1xuICAgIGxldCBzcmMgPSBlZGdlLnNyYztcbiAgICBsZXQgZHN0ID0gZWRnZS5kc3Q7XG4gICAgc3JjLnggPT0gZHN0LnggPyBWXyh7ZHk6IGRzdC55IC0uIHNyYy55fSkgOiBIXyh7ZHg6IGRzdC54IC0uIHNyYy54fSk7XG4gIH07XG5cbiAgbGV0IHJvdW5kX2Nvcm5lcnMgPSAoKHJ4OiBmbG9hdCwgcnk6IGZsb2F0KSwgcGF0aDogUGF0aC50KTogUGF0aC50ID0+IHtcbiAgICAvLyBDb3JuZXIgcm91bmRpbmcgY3V0cyBpbnRvIHRoZSBsZW5ndGhzIG9mIHRoZSBlbnRlcmluZyBhbmRcbiAgICAvLyBleGl0aW5nIGVkZ2VzLiBGaW5kIHRoZSBtYXhpbXVtIChwcm9wb3J0aW9uYWxseSBzY2FsZWQpXG4gICAgLy8gcmFkaWkgcG9zc2libGUgZ2l2ZW4gbGVuZ3RocyBvZiBlbnRlcmluZyBhbmQgZXhpdGluZyBlZGdlcy5cbiAgICBsZXQgbWF4X3JhZGlpID1cbiAgICAgICAgKChyeDogZmxvYXQsIHJ5OiBmbG9hdCksIChkeDogZmxvYXQsIGR5OiBmbG9hdCkpOiAoZmxvYXQsIGZsb2F0KSA9PiB7XG4gICAgICBsZXQgcnhfbWluID0gbWluKHJ4LCBGbG9hdC5hYnMoZHgpKTtcbiAgICAgIGxldCByeV9taW4gPSBtaW4ocnksIEZsb2F0LmFicyhkeSkpO1xuICAgICAgcnlfbWluICouIHJ4ID49IHJ4X21pbiAqLiByeVxuICAgICAgICA/IChyeF9taW4sIHJ4X21pbiAqLiByeSAvLiByeCkgOiAocnlfbWluICouIHJ4IC8uIHJ5LCByeV9taW4pO1xuICAgIH07XG5cbiAgICBwYXRoXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgUGF0aC5IXyh7ZHh9KSA9PiBQYXRoLltIXyh7ZHg6IGR4ICouIDAuNX0pLCBIXyh7ZHg6IGR4ICouIDAuNX0pXVxuICAgICAgICAgfCBWXyh7ZHl9KSA9PiBbVl8oe2R5OiBkeSAqLiAwLjV9KSwgVl8oe2R5OiBkeSAqLiAwLjV9KV1cbiAgICAgICAgIHwgY21kID0+IFtjbWRdLFxuICAgICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0VXRpbC5yb3RhdGVcbiAgICB8PiBMaXN0VXRpbC5kaXNqb2ludF9wYWlyc1xuICAgIHw+IExpc3QubWFwKCgoY21kMTogUGF0aC5jbWQsIGNtZDI6IFBhdGguY21kKSkgPT4ge1xuICAgICAgICAgc3dpdGNoIChjbWQxLCBjbWQyKSB7XG4gICAgICAgICB8IChIXyh7ZHh9KSwgVl8oe2R5fSkpID0+XG4gICAgICAgICAgIGxldCAocngsIHJ5KSA9IG1heF9yYWRpaSgocngsIHJ5KSwgKGR4LCBkeSkpO1xuICAgICAgICAgICBsZXQgY2xvY2t3aXNlID0gRmxvYXQuc2lnbl9iaXQoZHgpID09IEZsb2F0LnNpZ25fYml0KGR5KTtcbiAgICAgICAgICAgUGF0aC5bXG4gICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5jb3B5X3NpZ24oRmxvYXQuYWJzKGR4KSAtLiByeCwgZHgpfSksXG4gICAgICAgICAgICAgQV8oe1xuICAgICAgICAgICAgICAgcngsXG4gICAgICAgICAgICAgICByeSxcbiAgICAgICAgICAgICAgIHhfYXhpc19yb3RhdGlvbjogMC4sXG4gICAgICAgICAgICAgICBsYXJnZV9hcmNfZmxhZzogZmFsc2UsXG4gICAgICAgICAgICAgICBzd2VlcF9mbGFnOiBjbG9ja3dpc2UsXG4gICAgICAgICAgICAgICBkeDogRmxvYXQuY29weV9zaWduKHJ4LCBkeCksXG4gICAgICAgICAgICAgICBkeTogRmxvYXQuY29weV9zaWduKHJ5LCBkeSksXG4gICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgVl8oe2R5OiBGbG9hdC5jb3B5X3NpZ24oRmxvYXQuYWJzKGR5KSAtLiByeSwgZHkpfSksXG4gICAgICAgICAgIF07XG4gICAgICAgICB8IChWXyh7ZHl9KSwgSF8oe2R4fSkpID0+XG4gICAgICAgICAgIGxldCAocngsIHJ5KSA9IG1heF9yYWRpaSgocngsIHJ5KSwgKGR4LCBkeSkpO1xuICAgICAgICAgICBsZXQgY2xvY2t3aXNlID0gRmxvYXQuc2lnbl9iaXQoZHkpICE9IEZsb2F0LnNpZ25fYml0KGR4KTtcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFZfKHtkeTogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeSkgLS4gcnksIGR5KX0pLFxuICAgICAgICAgICAgIEFfKHtcbiAgICAgICAgICAgICAgIHJ4LFxuICAgICAgICAgICAgICAgcnksXG4gICAgICAgICAgICAgICB4X2F4aXNfcm90YXRpb246IDAuLFxuICAgICAgICAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgc3dlZXBfZmxhZzogY2xvY2t3aXNlLFxuICAgICAgICAgICAgICAgZHg6IEZsb2F0LmNvcHlfc2lnbihyeCwgZHgpLFxuICAgICAgICAgICAgICAgZHk6IEZsb2F0LmNvcHlfc2lnbihyeSwgZHkpLFxuICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgIEhfKHtkeDogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeCkgLS4gcngsIGR4KX0pLFxuICAgICAgICAgICBdO1xuICAgICAgICAgfCBfID0+IFtjbWQxLCBjbWQyXVxuICAgICAgICAgfVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuO1xuICB9O1xuXG4gIGxldCBpc19sZWZ0X3NpZGUgPSAoZWRnZTogbGlua2VkX2VkZ2UpOiBib29sID0+IHtcbiAgICBlZGdlLnNyYy55ID4gZWRnZS5kc3QueTtcbiAgfTtcblxuICAvKipcbiAgICogTWVyZ2UgY29pbmNpZGluZyB2ZXJ0aWNhbCBlZGdlcyB0aGF0IHBvaW50IGluIHRoZSBzYW1lIGRpcmVjdGlvbi5cbiAgICovXG4gIGxldCBtZXJnZV9jb2luY2lkaW5nX3ZlcnRpY2FsX2VkZ2VzID1cbiAgICAgIChlZGdlczogbGlzdChsaW5rZWRfZWRnZSkpOiBsaXN0KGxpbmtlZF9lZGdlKSA9PiB7XG4gICAgLy8gdGhlcmUgbWF5IGJlIGEgY2xlYW5lciArIG1vcmUgZWZmaWNpZW50IG1ldGhvZCBmb3IgdGhpcyBwYXNzXG4gICAgLy8gYnV0IGdvb2QgZW5vdWdoIGZvciBub3dcbiAgICBsZXQgKGxlZnRfZWRnZXMsIHJpZ2h0X2VkZ2VzKSA9IExpc3QucGFydGl0aW9uKGlzX2xlZnRfc2lkZSwgZWRnZXMpO1xuICAgIGxldCBtZXJnZWRfbGVmdF9lZGdlcyA9XG4gICAgICBsZWZ0X2VkZ2VzXG4gICAgICB8PiBMaXN0LnNvcnQoKHYxLCB2MikgPT5cbiAgICAgICAgICAgaWYgKHYxLnNyYy54IDwgdjIuc3JjLngpIHtcbiAgICAgICAgICAgICAoLTEpO1xuICAgICAgICAgICB9IGVsc2UgaWYgKHYxLnNyYy54ID4gdjIuc3JjLngpIHtcbiAgICAgICAgICAgICAxO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICgtMSkgKiBGbG9hdC5jb21wYXJlKHYxLnNyYy55LCB2Mi5zcmMueSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoc3RhY2ssIHYpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgICAgICAgIHwgW10gPT4gW3ZdXG4gICAgICAgICAgICAgfCBbaGQsIC4uLnRsXSBhcyBzdGFjayA9PlxuICAgICAgICAgICAgICAgaWYgKHYuc3JjLnggPT0gaGQuZHN0LnggJiYgdi5zcmMueSA+PSBoZC5kc3QueSkge1xuICAgICAgICAgICAgICAgICBbey4uLmhkLCBkc3Q6IHYuZHN0fSwgLi4udGxdO1xuICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgW3YsIC4uLnN0YWNrXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBbXSxcbiAgICAgICAgICk7XG4gICAgbGV0IG1lcmdlZF9yaWdodF9lZGdlcyA9XG4gICAgICByaWdodF9lZGdlc1xuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBGbG9hdC5jb21wYXJlKHYxLnNyYy55LCB2Mi5zcmMueSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoc3RhY2ssIHYpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgICAgICAgIHwgW10gPT4gW3ZdXG4gICAgICAgICAgICAgfCBbaGQsIC4uLnRsXSBhcyBzdGFjayA9PlxuICAgICAgICAgICAgICAgaWYgKHYuc3JjLnggPT0gaGQuZHN0LnggJiYgdi5zcmMueSA8PSBoZC5kc3QueSkge1xuICAgICAgICAgICAgICAgICBbey4uLmhkLCBkc3Q6IHYuZHN0fSwgLi4udGxdO1xuICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgW3YsIC4uLnN0YWNrXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBbXSxcbiAgICAgICAgICk7XG4gICAgbWVyZ2VkX2xlZnRfZWRnZXMgQCBtZXJnZWRfcmlnaHRfZWRnZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzKHJzKWAgY29tcHV0ZSB0aGUgdmVydGljYWwgZWRnZXMgb2YgdGhlXG4gICAqIGNvbnRvdXIgb2YgdGhlIHVuaW9uIG9mIHJlY3RhbmdsZXMgYHJzYFxuICAgKi9cbiAgbGV0IHZlcnRpY2FsX2NvbnRvdXJfZWRnZXMgPSAocmVjdHM6IGxpc3QoUmVjdC50KSk6IGxpc3QobGlua2VkX2VkZ2UpID0+IHtcbiAgICBsZXQgc29ydGVkX3ZlcnRpY2FsX3NpZGVzOiBsaXN0KGxpbmtlZF9lZGdlKSA9XG4gICAgICByZWN0c1xuICAgICAgfD4gTGlzdC5tYXAoKFJlY3Que21pbiwgd2lkdGgsIGhlaWdodH0pID0+IHtcbiAgICAgICAgICAgbGV0IG1heF94ID0gbWluLnggKy4gd2lkdGg7XG4gICAgICAgICAgIGxldCBtYXhfeSA9IG1pbi55ICsuIGhlaWdodDtcbiAgICAgICAgICAgbGV0IG1heCA9IFBvaW50Lnt4OiBtYXhfeCwgeTogbWF4X3l9O1xuICAgICAgICAgICBsZXQgbWluX21heCA9IFBvaW50Lnt4OiBtaW4ueCwgeTogbWF4X3l9O1xuICAgICAgICAgICBsZXQgbWF4X21pbiA9IFBvaW50Lnt4OiBtYXhfeCwgeTogbWluLnl9O1xuICAgICAgICAgICBbXG4gICAgICAgICAgICAgLy8gbGVmdCBzaWRlcyBwb2ludCBpbiBuZWdhdGl2ZSBkaXJlY3Rpb25cbiAgICAgICAgICAgICB7c3JjOiBtaW5fbWF4LCBkc3Q6IG1pbiwgbmV4dDogTm9uZX0sXG4gICAgICAgICAgICAgLy8gcmlnaHQgc2lkZXMgcG9pbnQgaW4gcG9zaXRpdmUgZGlyZWN0aW9uXG4gICAgICAgICAgICAge3NyYzogbWF4X21pbiwgZHN0OiBtYXgsIG5leHQ6IE5vbmV9LFxuICAgICAgICAgICBdO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAvLyBmb3IgdmVydGljYWwgc2lkZXMgb2YgZXF1YWwgYWJzY2lzc2EsXG4gICAgICAgICAgICAgLy8gbmVlZCB0byBzb3J0IGxlZnQgc2lkZXMgYmVmb3JlIHJpZ2h0IHNpZGVzXG4gICAgICAgICAgICAgbGV0IGlzX2xlZnQxID0gaXNfbGVmdF9zaWRlKHYxKTtcbiAgICAgICAgICAgICBsZXQgaXNfbGVmdDIgPSBpc19sZWZ0X3NpZGUodjIpO1xuICAgICAgICAgICAgIGlmIChpc19sZWZ0MSAmJiAhaXNfbGVmdDIpIHtcbiAgICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgICAgfSBlbHNlIGlmICghaXNfbGVmdDEgJiYgaXNfbGVmdDIpIHtcbiAgICAgICAgICAgICAgIDE7XG4gICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgfVxuICAgICAgICAgKTtcblxuICAgIGxldCBzZWdtZW50X3RyZWUgPVxuICAgICAgcmVjdHNcbiAgICAgIHw+IExpc3QubWFwKChSZWN0LnttaW4sIGhlaWdodCwgX30pID0+IFttaW4ueSwgbWluLnkgKy4gaGVpZ2h0XSlcbiAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgfD4gU2VnbWVudFRyZWUubWs7XG5cbiAgICBzb3J0ZWRfdmVydGljYWxfc2lkZXNcbiAgICAvLyBwbGFuZS1zd2VlcFxuICAgIHw+IExpc3QuZm9sZF9sZWZ0X21hcChcbiAgICAgICAgICh0cmVlLCB2KSA9PiB7XG4gICAgICAgICAgIGxldCB4ID0gdi5zcmMueDtcbiAgICAgICAgICAgbGV0IHlzID0gKHYuc3JjLnksIHYuZHN0LnkpO1xuICAgICAgICAgICBsZXQgbWtfY29udG91cl9lZGdlID0gKCh5X3NyYywgeV9kc3QpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHNyYyA9IFBvaW50Lnt4LCB5OiB5X3NyY307XG4gICAgICAgICAgICAgbGV0IGRzdCA9IFBvaW50Lnt4LCB5OiB5X2RzdH07XG4gICAgICAgICAgICAge3NyYywgZHN0LCBuZXh0OiBOb25lfTtcbiAgICAgICAgICAgfTtcbiAgICAgICAgICAgaWYgKGlzX2xlZnRfc2lkZSh2KSkge1xuICAgICAgICAgICAgIGxldCBuZXdfY29udG91cl9lZGdlcyA9XG4gICAgICAgICAgICAgICBTZWdtZW50VHJlZS5jb21wbGVtZW50X2ludGVyc2VjdGlvbih5cywgdHJlZSlcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwKG1rX2NvbnRvdXJfZWRnZSk7XG4gICAgICAgICAgICAgbGV0IHVwZGF0ZWRfdHJlZSA9IFNlZ21lbnRUcmVlLmluc2VydCh5cywgdHJlZSk7XG4gICAgICAgICAgICAgKHVwZGF0ZWRfdHJlZSwgbmV3X2NvbnRvdXJfZWRnZXMpO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgIGxldCB1cGRhdGVkX3RyZWUgPSBTZWdtZW50VHJlZS5kZWxldGUoeXMsIHRyZWUpO1xuICAgICAgICAgICAgIGxldCBuZXdfY29udG91cl9lZGdlcyA9XG4gICAgICAgICAgICAgICBTZWdtZW50VHJlZS5jb21wbGVtZW50X2ludGVyc2VjdGlvbih5cywgdXBkYXRlZF90cmVlKVxuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAobWtfY29udG91cl9lZGdlKTtcbiAgICAgICAgICAgICAodXBkYXRlZF90cmVlLCBuZXdfY29udG91cl9lZGdlcyk7XG4gICAgICAgICAgIH07XG4gICAgICAgICB9LFxuICAgICAgICAgc2VnbWVudF90cmVlLFxuICAgICAgIClcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGV4cGxpY2F0ZWQgYnkgUHJlcGFyYXRhICYgU2hhbW9zXG4gICAgLy8gYnV0IGl0cyBhYnNlbmNlIGNhdXNlcyBidWdzXG4gICAgfD4gbWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlcztcbiAgfTtcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNlY3Rpb24gOC41IG9mXG4gICAqIENvbXB1dGF0aW9uYWwgR2VvbWV0cnk6IEFuIEludHJvZHVjdGlvbiBieSBQcmVwYXJhdGFcbiAgICogJiBTaGFtb3MuIElmIHlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFsZ29yaXRobSBpblxuICAgKiBkZXRhaWwsIHlvdSBzaG91bGQgZmlyc3QgcmVhZCBTZWN0aW9ucyAxLjIuMy4xICsgOC4zLlxuICAgKi9cbiAgbGV0IG1rID0gKH5jb3JuZXJfcmFkaWk6IChmbG9hdCwgZmxvYXQpLCByZWN0czogbGlzdChSZWN0LnQpKTogdCA9PiB7XG4gICAgYXNzZXJ0KHJlY3RzICE9IFtdKTtcblxuICAgIGxldCB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzID0gdmVydGljYWxfY29udG91cl9lZGdlcyhyZWN0cyk7XG5cbiAgICAvLyBqb2luIHZlcnRpY2FsIGNvbnRvdXIgZWRnZXMgdmlhIGhvcml6b250YWwgZWRnZXNcbiAgICB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzXG4gICAgfD4gTGlzdC5tYXAodiA9PiBbKGZhbHNlLCB2KSwgKHRydWUsIHYpXSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAvLyBzb3J0IGVuZHBvaW50cyBieSB5IGNvb3JkaW5hdGUsIHRoZW4geCBjb29yZGluYXRlXG4gICAgfD4gTGlzdC5zb3J0KCgoaXNfc3JjMSwgdjEpLCAoaXNfc3JjMiwgdjIpKSA9PiB7XG4gICAgICAgICBsZXQgcHQxID0gaXNfc3JjMSA/IHYxLnNyYyA6IHYxLmRzdDtcbiAgICAgICAgIGxldCBwdDIgPSBpc19zcmMyID8gdjIuc3JjIDogdjIuZHN0O1xuICAgICAgICAgaWYgKHB0MS55IDwgcHQyLnkpIHtcbiAgICAgICAgICAgKC0xKTtcbiAgICAgICAgIH0gZWxzZSBpZiAocHQxLnkgPiBwdDIueSkge1xuICAgICAgICAgICAxO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgRmxvYXQuY29tcGFyZShwdDEueCwgcHQyLngpO1xuICAgICAgICAgfTtcbiAgICAgICB9KVxuICAgIHw+IExpc3RVdGlsLmRpc2pvaW50X3BhaXJzXG4gICAgLy8gY29uc2VjdXRpdmUgcGFpcnMgb2YgZW5kcG9pbnRzIGZvcm0gaG9yaXpvbnRhbCBlZGdlc1xuICAgIHw+IExpc3QuaXRlcigoKChpc19zcmMxLCB2MSksIChpc19zcmMyLCB2MikpKSA9PiB7XG4gICAgICAgICBsZXQgcHQxID0gaXNfc3JjMSA/IHYxLnNyYyA6IHYxLmRzdDtcbiAgICAgICAgIGxldCBwdDIgPSBpc19zcmMyID8gdjIuc3JjIDogdjIuZHN0O1xuICAgICAgICAgYXNzZXJ0KHB0MS55ID09IHB0Mi55KTtcbiAgICAgICAgIGxldCB5ID0gcHQxLnk7XG5cbiAgICAgICAgIGxldCAoeF9zcmMsIHhfZHN0LCBwcmV2LCBuZXh0KSA9XG4gICAgICAgICAgIGlzX3NyYzEgPyAocHQyLngsIHB0MS54LCB2MiwgdjEpIDogKHB0MS54LCBwdDIueCwgdjEsIHYyKTtcblxuICAgICAgICAgbGV0IGggPSB7XG4gICAgICAgICAgIGxldCBzcmMgPSBQb2ludC57eDogeF9zcmMsIHl9O1xuICAgICAgICAgICBsZXQgZHN0ID0gUG9pbnQue3g6IHhfZHN0LCB5fTtcbiAgICAgICAgICAge3NyYywgZHN0LCBuZXh0OiBTb21lKG5leHQpfTtcbiAgICAgICAgIH07XG4gICAgICAgICBwcmV2Lm5leHQgPSBTb21lKGgpO1xuICAgICAgIH0pO1xuXG4gICAgbGV0IHN0YXJ0ID0gTGlzdC5oZCh2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzKTtcbiAgICBsZXQgcmVjIGJ1aWxkX3BhdGggPSAoZWRnZTogbGlua2VkX2VkZ2UpOiBQYXRoLnQgPT4ge1xuICAgICAgc3dpdGNoIChlZGdlLm5leHQpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcImV4cGVjdGVkIHNpbmdsZSBjeWNsZVwiKVxuICAgICAgfCBTb21lKG5leHQpID0+XG4gICAgICAgIGxpbmtlZF9lZGdlX2VxKG5leHQsIHN0YXJ0KVxuICAgICAgICAgID8gW10gOiBbY21kX29mX2xpbmtlZF9lZGdlKG5leHQpLCAuLi5idWlsZF9wYXRoKG5leHQpXVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBwYXRoID0gW2NtZF9vZl9saW5rZWRfZWRnZShzdGFydCksIC4uLmJ1aWxkX3BhdGgoc3RhcnQpXTtcblxuICAgIHBhdGhcbiAgICB8PiByb3VuZF9jb3JuZXJzKGNvcm5lcl9yYWRpaSlcbiAgICB8PiBMaXN0LmNvbnMoXG4gICAgICAgICBQYXRoLk0oe1xuICAgICAgICAgICB4OiAoc3RhcnQuc3JjLnggKy4gc3RhcnQuZHN0LngpICouIDAuNSxcbiAgICAgICAgICAgeTogKHN0YXJ0LnNyYy55ICsuIHN0YXJ0LmRzdC55KSAqLiAwLjUsXG4gICAgICAgICB9KSxcbiAgICAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbDtcblxubGV0IHRpcF93aWR0aCA9IDAuMzI7XG5sZXQgY29uY2F2ZV9hZGogPSAwLjI1O1xubGV0IGNvbnZleF9hZGogPSAoLTAuMTMpO1xubGV0IHNoYWRvd19hZGogPSAwLjAxNTtcblxubGV0IGNhcmV0X2FkanVzdCA9IChzaWRlOiBEaXJlY3Rpb24udCwgc2hhcGU6IG9wdGlvbihEaXJlY3Rpb24udCkpID0+XG4gIHN3aXRjaCAoc2lkZSwgc2hhcGUpIHtcbiAgfCAoXywgTm9uZSkgPT4gMC5cbiAgfCAoTGVmdCwgU29tZShMZWZ0KSkgPT4gY29uY2F2ZV9hZGpcbiAgfCAoUmlnaHQsIFNvbWUoUmlnaHQpKSA9PiAtLiBjb25jYXZlX2FkalxuICB8IChMZWZ0LCBTb21lKFJpZ2h0KSkgPT4gY29udmV4X2FkalxuICB8IChSaWdodCwgU29tZShMZWZ0KSkgPT4gLS4gY29udmV4X2FkalxuICB9O1xuXG5sZXQgY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyA9IDAuMDU7XG5cbmxldCB0ID0gY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyAvLiAwLjU7XG5sZXQgc2hvcnRfdGlwX2hlaWdodCA9ICgxLiAtLiB0KSAqLiAwLjU7XG5cbmxldCBzdHJldGNoX2R4ID0gMC4xNTtcblxubGV0IHJhaXNlZF9zaGFkb3dfZHggPSBcIjAuMVwiO1xubGV0IHJhaXNlZF9zaGFkb3dfZHkgPSBcIjAuMDM3XCI7XG5sZXQgc2hhZG93X2R4ID0gcmFpc2VkX3NoYWRvd19keDtcbmxldCBzaGFkb3dfZHkgPSByYWlzZWRfc2hhZG93X2R5O1xuXG5sZXQgZXh0cmFfdGFpbCA9IDAuO1xubGV0IGphZ2dlZF9lZGdlX2ggPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDMuO1xubGV0IGphZ2dlZF9lZGdlX3cgPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDEuO1xuXG5sZXQgc2hvcnRfdGlwX3dpZHRoID0gKDEuIC0uIHQpICouIHRpcF93aWR0aDtcblxudHlwZSBkaW1zID0ge1xuICB3aWR0aDogaW50LFxuICBoZWlnaHQ6IGludCxcbiAgbGVmdDogaW50LFxuICB0b3A6IGludCxcbn07XG5cbnR5cGUgZmRpbXMgPSB7XG4gIHdpZHRoOiBmbG9hdCxcbiAgaGVpZ2h0OiBmbG9hdCxcbiAgbGVmdDogZmxvYXQsXG4gIHRvcDogZmxvYXQsXG59O1xuXG5sZXQgZnplcm86IGZkaW1zID0ge3dpZHRoOiAwLiwgaGVpZ2h0OiAwLiwgbGVmdDogMC4sIHRvcDogMC59O1xuXG5sZXQgcG9zX3N0ciA9ICh+ZDogZGltcywgfmZ1ZGdlOiBmZGltcz1memVybywgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50KSA9PlxuICBQcmludGYuc3ByaW50ZihcbiAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4OyB3aWR0aDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgIEZsb2F0Lm9mX2ludChkLmxlZnQpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gZnVkZ2UubGVmdCxcbiAgICBGbG9hdC5vZl9pbnQoZC50b3ApICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIGZ1ZGdlLnRvcCxcbiAgICBGbG9hdC5vZl9pbnQoZC53aWR0aCkgKi4gKGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gZnVkZ2Uud2lkdGgpLFxuICAgIEZsb2F0Lm9mX2ludChkLmhlaWdodCkgKi4gKGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIGZ1ZGdlLmhlaWdodCksXG4gICk7XG5cbmxldCBjb2RlX3N2Z19zaXplZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5tZWFzdXJlbWVudCBhcyB7b3JpZ2luLCBsYXN0fTogSGF6M2xjb3JlLk1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgICAgfmJhc2VfY2xzPVtdLFxuICAgICAgfnBhdGhfY2xzPVtdLFxuICAgICAgfmF0dHI9W10sXG4gICAgICB+ZnVkZ2U6IGZkaW1zPWZ6ZXJvLFxuICAgICAgcGF0aHM6IGxpc3QoU3ZnVXRpbC5QYXRoLmNtZCksXG4gICAgKSA9PiB7XG4gIGxldCAobGVmdCwgdG9wKSA9IChvcmlnaW4uY29sLCBvcmlnaW4ucm93KTtcbiAgbGV0ICh3aWR0aCwgaGVpZ2h0KSA9IChcbiAgICBhYnMobGFzdC5jb2wgLSBvcmlnaW4uY29sKSxcbiAgICBhYnMobGFzdC5yb3cgLSBvcmlnaW4ucm93ICsgMSksXG4gICk7XG4gIGxldCBzdHlsZSA9IHBvc19zdHIofmQ9e2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH0sIH5mdWRnZSwgZm9udF9tZXRyaWNzKTtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFxuICAgICAgICBbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKGJhc2VfY2xzKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIHN0eWxlKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInZpZXdCb3hcIiwgUHJpbnRmLnNwcmludGYoXCIwIDAgJWQgJWRcIiwgd2lkdGgsIGhlaWdodCkpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgIF1cbiAgICAgICAgQCBhdHRyLFxuICAgICAgKSxcbiAgICBbU3ZnVXRpbC5QYXRoLnZpZXcofmF0dHJzPVtBdHRyLmNsYXNzZXMocGF0aF9jbHMpXSwgcGF0aHMpXSxcbiAgKTtcbn07XG5cbmxldCBwb3NpdGlvbiA9XG4gICAgKFxuICAgICAgfnN0eWxlPVwiXCIsXG4gICAgICB+bGVmdF9mdWRnZT0wLjAsXG4gICAgICB+dG9wX2Z1ZGdlPTAuMCxcbiAgICAgIH53aWR0aF9mdWRnZT0wLjAsXG4gICAgICB+aGVpZ2h0X2Z1ZGdlPTAuMCxcbiAgICAgIH5zY2FsZT0xLixcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICBvcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgICkgPT5cbiAgQXR0ci5jcmVhdGUoXG4gICAgXCJzdHlsZVwiLFxuICAgIHN0eWxlXG4gICAgKysgXCI7XCJcbiAgICArKyBQcmludGYuc3ByaW50ZihcbiAgICAgICAgIFwibGVmdDogJWZweDsgdG9wOiAlZnB4OyB3aWR0aDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gbGVmdF9mdWRnZSxcbiAgICAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93KSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCArLiB0b3BfZnVkZ2UsXG4gICAgICAgICBzY2FsZSAqLiAoZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiB3aWR0aF9mdWRnZSksXG4gICAgICAgICBzY2FsZSAqLiAoZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gaGVpZ2h0X2Z1ZGdlKSxcbiAgICAgICApLFxuICApO1xuXG5sZXQgYWJzX3Bvc2l0aW9uID1cbiAgICAoXG4gICAgICB+bGVmdF9mdWRnZT0wLjAsXG4gICAgICB+dG9wX2Z1ZGdlPTAuMCxcbiAgICAgIH53aWR0aF9mdWRnZT0wLjAsXG4gICAgICB+aGVpZ2h0X2Z1ZGdlPTAuMCxcbiAgICAgIH5zY2FsZT0xLixcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICBvcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgICkgPT4ge1xuICBwb3NpdGlvbihcbiAgICB+c3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIixcbiAgICB+bGVmdF9mdWRnZSxcbiAgICB+dG9wX2Z1ZGdlLFxuICAgIH53aWR0aF9mdWRnZSxcbiAgICB+aGVpZ2h0X2Z1ZGdlLFxuICAgIH5zY2FsZSxcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIG9yaWdpbixcbiAgKTtcbn07XG5cbmxldCBjb2RlX3N2ZyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5vcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgICAgfmJhc2VfY2xzPVtdLFxuICAgICAgfnBhdGhfY2xzPVtdLFxuICAgICAgfmxlZnRfZnVkZ2U9MC4wLFxuICAgICAgfnRvcF9mdWRnZT0wLjAsXG4gICAgICB+d2lkdGhfZnVkZ2U9MC4wLFxuICAgICAgfmhlaWdodF9mdWRnZT0wLjAsXG4gICAgICB+aWQ9XCJcIixcbiAgICAgIH5hdHRycz1bXSxcbiAgICAgIH5hYnNfcG9zPXRydWUsXG4gICAgICBwYXRoczogbGlzdChTdmdVdGlsLlBhdGguY21kKSxcbiAgICApID0+IHtcbiAgLy8gVXNpbmcgYSB2aWV3Qm94IG9mIDAgMCAxIDEgc2VlbXMgdG8gdHJpZ2dlciBDaHJvbWUgcm91bmRpbmcgYnVnXG4gIC8vIChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00MjQyODgpIHRoYXRcbiAgLy8gY2F1c2VzIG1pYXNsaWdubWVudCBiZXR3ZWVuIHBpZWNlIGRlY29yYXRpb25zIGFuZCB0ZXh0LlxuICAvLyBVc2luZyBhIGRpZmZlcmVudCB2aWV3Qm94IHNpemUgc2VlbXMgdG8gZml4IHRoaXMuXG4gIGxldCBzY2FsZSA9IDIuO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIChpZCA9PSBcIlwiID8gW10gOiBbQXR0ci5pZChpZCldKVxuICAgICAgICBAIFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoYmFzZV9jbHMpLFxuICAgICAgICAgIGFic19wb3NcbiAgICAgICAgICAgID8gYWJzX3Bvc2l0aW9uKFxuICAgICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICAgICAgfmxlZnRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnRvcF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+d2lkdGhfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfmhlaWdodF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+c2NhbGUsXG4gICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHBvc2l0aW9uKFxuICAgICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICAgICAgfmxlZnRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnRvcF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+d2lkdGhfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfmhlaWdodF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+c2NhbGUsXG4gICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAlZiAlZlwiLCBzY2FsZSwgc2NhbGUpKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgICBdXG4gICAgICAgIEAgYXR0cnMsXG4gICAgICApLFxuICAgIFtTdmdVdGlsLlBhdGgudmlldyh+YXR0cnM9W0F0dHIuY2xhc3NlcyhwYXRoX2NscyldLCBwYXRocyldLFxuICApO1xufTtcblxubGV0IHJhaXNlZF9zaGFkb3dfZmlsdGVyID0gKHNvcnQ6IEhhejNsY29yZS5Tb3J0LnQpID0+IHtcbiAgbGV0IHMgPSBIYXozbGNvcmUuU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJmaWx0ZXJcIixcbiAgICB+YXR0cj1BdHRyLmlkKFwicmFpc2VkLWRyb3Atc2hhZG93LVwiICsrIHMpLFxuICAgIFtcbiAgICAgIGNyZWF0ZV9zdmcoXG4gICAgICAgIFwiZmVEcm9wU2hhZG93XCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGlsZS1kcm9wLXNoYWRvd1wiXSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR4XCIsIHJhaXNlZF9zaGFkb3dfZHgpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeVwiLCByYWlzZWRfc2hhZG93X2R5KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3RkRGV2aWF0aW9uXCIsIFwiMFwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgc2hhZG93X2ZpbHRlciA9IChzb3J0OiBIYXozbGNvcmUuU29ydC50KSA9PiB7XG4gIGxldCBzID0gSGF6M2xjb3JlLlNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwiZmlsdGVyXCIsXG4gICAgfmF0dHI9QXR0ci5pZChcImRyb3Atc2hhZG93LVwiICsrIHMpLFxuICAgIFtcbiAgICAgIGNyZWF0ZV9zdmcoXG4gICAgICAgIFwiZmVEcm9wU2hhZG93XCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGlsZS1kcm9wLXNoYWRvd1wiXSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR4XCIsIHNoYWRvd19keCksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR5XCIsIHNoYWRvd19keSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0ZERldmlhdGlvblwiLCBcIjBcIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGZpbHRlcnMgPVxuICBOb2RlVXRpbC5zdmcoXG4gICAgQXR0ci5baWQoXCJmaWx0ZXJzXCIpXSxcbiAgICBMaXN0Lm1hcChyYWlzZWRfc2hhZG93X2ZpbHRlciwgSGF6M2xjb3JlLlNvcnQuYWxsKVxuICAgIEAgTGlzdC5tYXAoc2hhZG93X2ZpbHRlciwgSGF6M2xjb3JlLlNvcnQuYWxsKSxcbiAgKTtcbiIsIm9wZW4gRGVjVXRpbDtcbm9wZW4gU3ZnVXRpbC5QYXRoO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuLy9UT0RPKD8pOiBkZXByZWNhdGUgdGhpcyBtb2R1bGVcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0aXBfc2hhcGUgPSAoSGF6M2xjb3JlLk5pYi50LCBpbnQpO1xuXG4vLyB0b3AgcmlnaHQgdG8gYm90dG9tIGxlZnRcbmxldCB0cl9ibCA9XG4gICAgKFxuICAgICAgfnNjYWxlIGFzIHM9MS4sXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLihcbiAgICB7XG4gICAgICBsZXQgKGRpYWcsIGp1bmN0aW9uKSA9XG4gICAgICAgIHdpdGhfY2hpbGRfYm9yZGVyXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICBMXyh7ZHg6IEZsb2F0Lm5lZyhzaG9ydF90aXBfd2lkdGgpLCBkeTogc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5uZWcoMC41IC0uIHNob3J0X3RpcF93aWR0aCl9KSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBMXyh7ZHg6IEZsb2F0Lm5lZyh0aXBfd2lkdGgpLCBkeTogMC41ICsuIHN0cmV0Y2hfeX0pLFxuICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5uZWcoc3RyZXRjaF94KX0pLFxuICAgICAgICAgICk7XG4gICAgICBsZXQgcGF0aCA9XG4gICAgICAgIHN3aXRjaCAoaGVtaSkge1xuICAgICAgICB8IGBOb3J0aCA9PiBbanVuY3Rpb24sIGRpYWddXG4gICAgICAgIHwgYFNvdXRoID0+IFtkaWFnLCBqdW5jdGlvbl1cbiAgICAgICAgfTtcbiAgICAgIHNjYWxlKHMsIHBhdGgpO1xuICAgIH1cbiAgKTtcbi8vIGJvdHRvbSBsZWZ0IHRvIHRvcCByaWdodFxubGV0IGJsX3RyID1cbiAgICAoXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLnJldmVyc2UoXG4gICAgdHJfYmwofmhlbWksIH53aXRoX2NoaWxkX2JvcmRlciwgfnN0cmV0Y2hfeCwgfnN0cmV0Y2hfeSwgKCkpLFxuICApO1xuXG4vLyB0b3AgbGVmdCB0byBib3R0b20gcmlnaHRcbmxldCB0bF9iciA9XG4gICAgKFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC4oXG4gICAge1xuICAgICAgbGV0IChkaWFnLCBqdW5jdGlvbikgPVxuICAgICAgICB3aXRoX2NoaWxkX2JvcmRlclxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgTF8oe2R4OiBzaG9ydF90aXBfd2lkdGgsIGR5OiBzaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgICAgICAgICBIXyh7ZHg6IDAuNSAtLiBzaG9ydF90aXBfd2lkdGh9KSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoTF8oe2R4OiB0aXBfd2lkdGgsIGR5OiAwLjUgKy4gc3RyZXRjaF95fSksIEhfKHtkeDogc3RyZXRjaF94fSkpO1xuICAgICAgc3dpdGNoIChoZW1pKSB7XG4gICAgICB8IGBOb3J0aCA9PiBbanVuY3Rpb24sIGRpYWddXG4gICAgICB8IGBTb3V0aCA9PiBbZGlhZywganVuY3Rpb25dXG4gICAgICB9O1xuICAgIH1cbiAgKTtcbi8vIGJvdHRvbSByaWdodCB0byB0b3AgbGVmdFxubGV0IGJyX3RsID1cbiAgICAoXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLnJldmVyc2UoXG4gICAgdGxfYnIofmhlbWksIH53aXRoX2NoaWxkX2JvcmRlciwgfnN0cmV0Y2hfeCwgfnN0cmV0Y2hfeSwgKCkpLFxuICApO1xuXG5sZXQgbGVmdF90aXBfcGF0aCA9XG4gICAgKH5zY2FsZV94IGFzIHNfeD0xLiwgfnNjYWxlX3kgYXMgc195PTEuLCB0aXA6IHRpcF9zaGFwZSk6IFN2Z1V0aWwuUGF0aC50ID0+IHtcbiAgbGV0IHBhdGggPVxuICAgIHN3aXRjaCAodGlwKSB7XG4gICAgfCAoe3NoYXBlOiBDb252ZXgsIF99LCBfKSA9PlxuICAgICAgYnJfdGwofmhlbWk9YFNvdXRoLCAoKSkgQCBibF90cih+aGVtaT1gTm9ydGgsICgpKVxuICAgIHwgKHtzaGFwZTogQ29uY2F2ZShfYSksIF99LCBuKSA9PlxuICAgICAgbGV0IGphZyA9IFtcbiAgICAgICAgTF8oe2R4OiAtLiBqYWdnZWRfZWRnZV93LCBkeTogLS4gamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IGphZ2dlZF9lZGdlX3csIGR5OiAtLiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogLS4gamFnZ2VkX2VkZ2VfdywgZHk6IC0uIGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgIF07XG4gICAgICBsZXQgYm90dG9tX2hhbGYgPVxuICAgICAgICBuID09IDBcbiAgICAgICAgICA/IFtIXyh7ZHg6IEZsb2F0Lm5lZyh0aXBfd2lkdGgpfSksIC4uLmJsX3RyKH5oZW1pPWBTb3V0aCwgKCkpXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICBbSF8oe2R4OiAtLiAoZXh0cmFfdGFpbCArLiAwLjUpfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IGphZ2dlZF9lZGdlX3cgKy4gZXh0cmFfdGFpbH0pXSxcbiAgICAgICAgICAgICAgYmxfdHIofmhlbWk9YFNvdXRoLCB+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgKCkpLFxuICAgICAgICAgICAgXSk7XG4gICAgICBsZXQgdG9wX2hhbGYgPVxuICAgICAgICBuID09IDAgfHwgbiA9PSAxXG4gICAgICAgICAgPyBicl90bCh+aGVtaT1gTm9ydGgsICgpKSBAIFtIXyh7ZHg6IHRpcF93aWR0aH0pXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICBicl90bCh+aGVtaT1gTm9ydGgsIH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCAoKSksXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IC0uIChqYWdnZWRfZWRnZV93ICsuIGV4dHJhX3RhaWwpfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IGV4dHJhX3RhaWwgKy4gMC41fSldLFxuICAgICAgICAgICAgXSk7XG4gICAgICBib3R0b21faGFsZiBAIHRvcF9oYWxmO1xuICAgIH07XG4gIHNjYWxlX3goc194LCBzY2FsZV95KHNfeSwgcGF0aCkpO1xufTtcbmxldCByaWdodF90aXBfcGF0aCA9XG4gICAgKH5zY2FsZV94IGFzIHNfeD0xLiwgfnNjYWxlX3kgYXMgc195PTEuLCB0aXA6IHRpcF9zaGFwZSk6IFN2Z1V0aWwuUGF0aC50ID0+IHtcbiAgbGV0IHBhdGggPVxuICAgIHN3aXRjaCAodGlwKSB7XG4gICAgfCAoe3NoYXBlOiBDb252ZXgsIF99LCBfKSA9PlxuICAgICAgdGxfYnIofmhlbWk9YE5vcnRoLCAoKSkgQCB0cl9ibCh+aGVtaT1gU291dGgsICgpKVxuICAgIHwgKHtzaGFwZTogQ29uY2F2ZShfYSksIF99LCBuKSA9PlxuICAgICAgb3BlbiBTdmdVdGlsLlBhdGg7XG4gICAgICBsZXQgamFnID0gW1xuICAgICAgICBMXyh7ZHg6IGphZ2dlZF9lZGdlX3csIGR5OiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogLS4gamFnZ2VkX2VkZ2VfdywgZHk6IGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiBqYWdnZWRfZWRnZV93LCBkeTogamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgXTtcbiAgICAgIGxldCB0b3BfaGFsZiA9XG4gICAgICAgIG4gPT0gMCB8fCBuID09IDFcbiAgICAgICAgICA/IFtIXyh7ZHg6IHRpcF93aWR0aH0pLCAuLi50cl9ibCh+aGVtaT1gTm9ydGgsICgpKV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgW0hfKHtkeDogMC41ICsuIGV4dHJhX3RhaWx9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogLS4gKGV4dHJhX3RhaWwgKy4gamFnZ2VkX2VkZ2Vfdyl9KV0sXG4gICAgICAgICAgICAgIHRyX2JsKH5oZW1pPWBOb3J0aCwgfndpdGhfY2hpbGRfYm9yZGVyPXRydWUsICgpKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgbGV0IGJvdHRvbV9oYWxmID1cbiAgICAgICAgbiA9PSAwXG4gICAgICAgICAgPyB0bF9icih+aGVtaT1gU291dGgsICgpKSBAIFtIXyh7ZHg6IEZsb2F0Lm5lZyh0aXBfd2lkdGgpfSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIHRsX2JyKH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCB+aGVtaT1gU291dGgsICgpKSxcbiAgICAgICAgICAgICAgW0hfKHtkeDogZXh0cmFfdGFpbH0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBGbG9hdC5uZWcoamFnZ2VkX2VkZ2VfdyArLiBleHRyYV90YWlsICsuIDAuNSl9KV0sXG4gICAgICAgICAgICBdKTtcbiAgICAgIHRvcF9oYWxmIEAgYm90dG9tX2hhbGY7XG4gICAgfTtcbiAgc2NhbGVfeChzX3gsIHNjYWxlX3koc195LCBwYXRoKSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBQcm9maWxlID0ge1xuICB0eXBlIHQgPSB7XG4gICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIG1vbGQ6IE1vbGQudCxcbiAgfTtcbn07XG5cbmxldCBwYXRoID0gKHRpcF9sLCB0aXBfciwgb2Zmc2V0LCBzOiBmbG9hdCkgPT4ge1xuICBsZXQgeF9kaWxhdGUgPSAxLjU7XG4gIExpc3QuY29uY2F0KFxuICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICBbXG4gICAgICAgIE0oe3g6IG9mZnNldCArLiAwLjUsIHk6IDAuNSAtLiBzIC8uIDIufSksXG4gICAgICAgIEhfKHtkeDogeF9kaWxhdGUgKi4gcyAvLiAyLn0pLFxuICAgICAgXSxcbiAgICAgIERpYWcucmlnaHRfdGlwX3BhdGgofnNjYWxlX3g9cyAqLiB4X2RpbGF0ZSwgfnNjYWxlX3k9cywgKHRpcF9yLCAwKSksXG4gICAgICBbSF8oe2R4OiAtLiBzICouIHhfZGlsYXRlfSldLFxuICAgICAgRGlhZy5sZWZ0X3RpcF9wYXRoKH5zY2FsZV94PXMgKi4geF9kaWxhdGUsIH5zY2FsZV95PXMsICh0aXBfbCwgMCkpLFxuICAgICAgW1pdLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgdmlldyA9ICh+Zm9udF9tZXRyaWNzLCB7bWVhc3VyZW1lbnQsIG1vbGR9OiBQcm9maWxlLnQpOiBOb2RlLnQgPT4ge1xuICBsZXQgc29ydCA9IG1vbGQub3V0O1xuICBsZXQgY19jbHMgPSBTb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgbGV0ICh0aXBfbCwgdGlwX3IpOiAoSGF6M2xjb3JlLk5pYi5TaGFwZS50LCBIYXozbGNvcmUuTmliLlNoYXBlLnQpID1cbiAgICBVdGlsLlR1cGxlVXRpbC5tYXAyKEhhejNsY29yZS5OaWIuc2hhcGUsIG1vbGQubmlicyk7XG4gIGxldCAodGlwX2wsIHRpcF9yKTogKEhhejNsY29yZS5OaWIudCwgSGF6M2xjb3JlLk5pYi50KSA9IChcbiAgICB7c29ydCwgc2hhcGU6IHRpcF9sfSxcbiAgICB7c29ydCwgc2hhcGU6IHRpcF9yfSxcbiAgKTtcbiAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5tZWFzdXJlbWVudCxcbiAgICB+YmFzZV9jbHM9W1wiZW1wdHktaG9sZVwiXSxcbiAgICB+cGF0aF9jbHM9W1wiZW1wdHktaG9sZS1wYXRoXCIsIGNfY2xzXSxcbiAgICBwYXRoKHRpcF9sLCB0aXBfciwgMC4sIDAuMjgpLFxuICApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBVdGlsO1xub3BlbiBVdGlsLldlYjtcblxubGV0IG9mX2RlbGltJyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAwLFxuICAgICgobGFiZWwsIGlzX2luX2J1ZmZlciwgc29ydCwgaXNfY29uc2lzdGVudCwgaXNfY29tcGxldGUsIGkpKSA9PiB7XG4gICAgICBsZXQgY2xzID1cbiAgICAgICAgc3dpdGNoIChsYWJlbCkge1xuICAgICAgICB8IF8gd2hlbiBpc19pbl9idWZmZXIgPT4gXCJpbi1idWZmZXJcIlxuICAgICAgICB8IF8gd2hlbiAhaXNfY29uc2lzdGVudCA9PiBcInNvcnQtaW5jb25zaXN0ZW50XCJcbiAgICAgICAgfCBfIHdoZW4gIWlzX2NvbXBsZXRlID0+IFwiaW5jb21wbGV0ZVwiXG4gICAgICAgIHwgW3NdIHdoZW4gcyA9PSBGb3JtLmV4cGxpY2l0X2hvbGUgPT4gXCJleHBsaWNpdC1ob2xlXCJcbiAgICAgICAgfCBbc10gd2hlbiBGb3JtLmlzX3N0cmluZyhzKSA9PiBcInN0cmluZy1saXRcIlxuICAgICAgICB8IF8gPT4gXCJkZWZhdWx0XCJcbiAgICAgICAgfTtcbiAgICAgIGxldCBwbHVyYWxpdHkgPSBMaXN0Lmxlbmd0aChsYWJlbCkgPT0gMSA/IFwibW9ub1wiIDogXCJwb2x5XCI7XG4gICAgICBsZXQgbGFiZWwgPSBpc19pbl9idWZmZXIgPyBBc3Npc3RhbnRFeHBhbmRlci5tYXJrKGxhYmVsKSA6IGxhYmVsO1xuICAgICAgW1xuICAgICAgICBzcGFuKFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRva2VuXCIsIGNscywgU29ydC50b19zdHJpbmcoc29ydCksIHBsdXJhbGl0eV0pLFxuICAgICAgICAgIFtOb2RlLnRleHQoTGlzdC5udGgobGFiZWwsIGkpKV0sXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0sXG4gICk7XG5sZXQgb2ZfZGVsaW0gPVxuICAgIChpc19pbl9idWZmZXIsIGlzX2NvbnNpc3RlbnQsIHQ6IFBpZWNlLnRpbGUsIGk6IGludCk6IGxpc3QoTm9kZS50KSA9PlxuICBvZl9kZWxpbScoKFxuICAgIHQubGFiZWwsXG4gICAgaXNfaW5fYnVmZmVyLFxuICAgIHQubW9sZC5vdXQsXG4gICAgaXNfY29uc2lzdGVudCxcbiAgICBUaWxlLmlzX2NvbXBsZXRlKHQpLFxuICAgIGksXG4gICkpO1xuXG5sZXQgb2ZfZ3JvdXQgPSBbTm9kZS50ZXh0KFVuaWNvZGUubmJzcCldO1xuXG5sZXQgb2Zfc2Vjb25kYXJ5ID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsICgoY29udGVudCwgc2Vjb25kYXJ5X2ljb25zLCBpbmRlbnQpKSA9PlxuICAgIGlmIChTdHJpbmcuZXF1YWwoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCksIEZvcm0ubGluZWJyZWFrKSkge1xuICAgICAgbGV0IHN0ciA9IHNlY29uZGFyeV9pY29ucyA/IEZvcm0ubGluZWJyZWFrIDogXCJcIjtcbiAgICAgIFtcbiAgICAgICAgc3Bhbl9jKFwibGluZWJyZWFrXCIsIFt0ZXh0KHN0cildKSxcbiAgICAgICAgTm9kZS5icigpLFxuICAgICAgICBOb2RlLnRleHQoU3RyaW5nVXRpbC5yZXBlYXQoaW5kZW50LCBVbmljb2RlLm5ic3ApKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChTdHJpbmcuZXF1YWwoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCksIEZvcm0uc3BhY2UpKSB7XG4gICAgICBsZXQgc3RyID0gc2Vjb25kYXJ5X2ljb25zID8gXCLCt1wiIDogVW5pY29kZS5uYnNwO1xuICAgICAgW3NwYW5fYyhcInNlY29uZGFyeVwiLCBbdGV4dChzdHIpXSldO1xuICAgIH0gZWxzZSBpZiAoU2Vjb25kYXJ5LmNvbnRlbnRfaXNfY29tbWVudChjb250ZW50KSkge1xuICAgICAgW3NwYW5fYyhcImNvbW1lbnRcIiwgW05vZGUudGV4dChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSldKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtzcGFuX2MoXCJzZWNvbmRhcnlcIiwgW05vZGUudGV4dChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSldKV07XG4gICAgfVxuICApO1xuXG5tb2R1bGUgVGV4dCA9IChNOiB7XG4gICAgICAgICAgICAgICAgIGxldCBtYXA6IE1lYXN1cmVkLnQ7XG4gICAgICAgICAgICAgICAgIGxldCBzZXR0aW5nczogU2V0dGluZ3MudDtcbiAgICAgICAgICAgICAgIH0pID0+IHtcbiAgbGV0IG0gPSBwID0+IE1lYXN1cmVkLmZpbmRfcChwLCBNLm1hcCk7XG4gIGxldCByZWMgb2Zfc2VnbWVudCA9XG4gICAgICAgICAgKGJ1ZmZlcl9pZHMsIG5vX3NvcnRzLCBzb3J0LCBzZWc6IFNlZ21lbnQudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgLyogbm90ZTogbm9fc29ydHMgZmxhZyBpcyB1c2VkIGZvciBiYWNrcGFjayB2aWV3O1xuICAgICAgIG90aGVyd2lzZSBTZWdtZW50LmV4cGVjdGVkX3NvcnRzIGNhbGwgY3Jhc2hlcyBmb3Igc29tZSByZWFzb24gKi9cbiAgICBsZXQgZXhwZWN0ZWRfc29ydHMgPVxuICAgICAgbm9fc29ydHNcbiAgICAgICAgPyBMaXN0LmluaXQoTGlzdC5sZW5ndGgoc2VnKSwgaSA9PiAoaSwgU29ydC5BbnkpKVxuICAgICAgICA6IFNlZ21lbnQuZXhwZWN0ZWRfc29ydHMoc29ydCwgc2VnKTtcbiAgICBsZXQgc29ydF9vZl9wX2lkeCA9IGlkeCA9PlxuICAgICAgc3dpdGNoIChMaXN0LmFzc29jX29wdChpZHgsIGV4cGVjdGVkX3NvcnRzKSkge1xuICAgICAgfCBOb25lID0+IFNvcnQuQW55XG4gICAgICB8IFNvbWUoc29ydCkgPT4gc29ydFxuICAgICAgfTtcbiAgICBzZWdcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChpLCBwKSlcbiAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChpLCBwKSkgPT5cbiAgICAgICAgIG9mX3BpZWNlKGJ1ZmZlcl9pZHMsIHNvcnRfb2ZfcF9pZHgoaSksIHApXG4gICAgICAgKTtcbiAgfVxuICBhbmQgb2ZfcGllY2UgPVxuICAgICAgKGJ1ZmZlcl9pZHMsIGV4cGVjdGVkX3NvcnQ6IFNvcnQudCwgcDogUGllY2UudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgc3dpdGNoIChwKSB7XG4gICAgfCBUaWxlKHQpID0+IG9mX3RpbGUoYnVmZmVyX2lkcywgZXhwZWN0ZWRfc29ydCwgdClcbiAgICB8IEdyb3V0KF8pID0+IG9mX2dyb3V0XG4gICAgfCBTZWNvbmRhcnkoe2NvbnRlbnQsIF99KSA9PlxuICAgICAgb2Zfc2Vjb25kYXJ5KChjb250ZW50LCBNLnNldHRpbmdzLnNlY29uZGFyeV9pY29ucywgbShwKS5sYXN0LmNvbCkpXG4gICAgfTtcbiAgfVxuICBhbmQgb2ZfdGlsZSA9IChidWZmZXJfaWRzLCBleHBlY3RlZF9zb3J0OiBTb3J0LnQsIHQ6IFRpbGUudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgbGV0IGNoaWxkcmVuX2FuZF9zb3J0cyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChpLCAobCwgY2hpbGQsIHIpKSA9PlxuICAgICAgICAgIC8vVE9ETyhhbmRyZXcpOiBtb3JlIHN1YnRsZSBsb2dpYyBhYm91dCBzb3J0IGFjY2VwdGFiaWxpdHlcbiAgICAgICAgICAoY2hpbGQsIGwgKyAxID09IHIgPyBMaXN0Lm50aCh0Lm1vbGQuaW5fLCBpKSA6IFNvcnQuQW55KSxcbiAgICAgICAgQWJhLmFiYV90cmlwbGVzKEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbikpLFxuICAgICAgKTtcbiAgICBsZXQgaXNfY29uc2lzdGVudCA9IFNvcnQuY29uc2lzdGVudCh0Lm1vbGQub3V0LCBleHBlY3RlZF9zb3J0KTtcbiAgICBsZXQgaXNfaW5fYnVmZmVyID0gTGlzdC5tZW0odC5pZCwgYnVmZmVyX2lkcyk7XG4gICAgQWJhLm1rKHQuc2hhcmRzLCBjaGlsZHJlbl9hbmRfc29ydHMpXG4gICAgfD4gQWJhLmpvaW4ob2ZfZGVsaW0oaXNfaW5fYnVmZmVyLCBpc19jb25zaXN0ZW50LCB0KSwgKChzZWcsIHNvcnQpKSA9PlxuICAgICAgICAgb2Zfc2VnbWVudChidWZmZXJfaWRzLCBmYWxzZSwgc29ydCwgc2VnKVxuICAgICAgIClcbiAgICB8PiBMaXN0LmNvbmNhdDtcbiAgfTtcbn07XG5cbmxldCByZWMgaG9sZXMgPVxuICAgICAgICAofmZvbnRfbWV0cmljcywgfm1hcDogTWVhc3VyZWQudCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KE5vZGUudCkgPT5cbiAgc2VnXG4gIHw+IExpc3QuY29uY2F0X21hcChcbiAgICAgICBmdW5cbiAgICAgICB8IFBpZWNlLlNlY29uZGFyeShfKSA9PiBbXVxuICAgICAgIHwgVGlsZSh0KSA9PiBMaXN0LmNvbmNhdF9tYXAoaG9sZXMofm1hcCwgfmZvbnRfbWV0cmljcyksIHQuY2hpbGRyZW4pXG4gICAgICAgfCBHcm91dChnKSA9PiBbXG4gICAgICAgICAgIEVtcHR5SG9sZURlYy52aWV3KFxuICAgICAgICAgICAgIH5mb250X21ldHJpY3MsIC8vIFRPRE8oZCkgZml4IHNvcnRcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQuZmluZF9nKGcsIG1hcCksXG4gICAgICAgICAgICAgICBtb2xkOiBNb2xkLm9mX2dyb3V0KGcsIEFueSksXG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgKSxcbiAgICAgICAgIF0sXG4gICAgICk7XG5cbmxldCBzaW1wbGVfdmlldyA9XG4gICAgKH5mb250X21ldHJpY3MsIH51bnNlbGVjdGVkLCB+bWFwLCB+c2V0dGluZ3M6IFNldHRpbmdzLnQpOiBOb2RlLnQgPT4ge1xuICBtb2R1bGUgVGV4dCA9XG4gICAgVGV4dCh7XG4gICAgICBsZXQgbWFwID0gbWFwO1xuICAgICAgbGV0IHNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgfSk7XG4gIGxldCBob2xlcyA9IGhvbGVzKH5tYXAsIH5mb250X21ldHJpY3MsIHVuc2VsZWN0ZWQpO1xuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJjb2RlXCIpLFxuICAgIFtcbiAgICAgIHNwYW5fYyhcImNvZGUtdGV4dFwiLCBUZXh0Lm9mX3NlZ21lbnQoW10sIGZhbHNlLCBTb3J0LkFueSwgdW5zZWxlY3RlZCkpLFxuICAgICAgLi4uaG9sZXMsXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBvZl9ob2xlID0gKH5mb250X21ldHJpY3MsIH5tZWFzdXJlZCwgZzogR3JvdXQudCkgPT5cbiAgLy8gVE9ETyhkKSBmaXggc29ydFxuICBFbXB0eUhvbGVEZWMudmlldyhcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIHtcbiAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5maW5kX2coZywgbWVhc3VyZWQpLFxuICAgICAgbW9sZDogTW9sZC5vZl9ncm91dChnLCBBbnkpLFxuICAgIH0sXG4gICk7XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+c29ydDogU29ydC50LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIHtzdGF0ZToge21ldGE6IHttZWFzdXJlZCwgYnVmZmVyX2lkcywgdW5zZWxlY3RlZCwgaG9sZXMsIF99LCBffSwgX306IEVkaXRvci50LFxuICAgIClcbiAgICA6IE5vZGUudCA9PiB7XG4gIG1vZHVsZSBUZXh0ID1cbiAgICBUZXh0KHtcbiAgICAgIGxldCBtYXAgPSBtZWFzdXJlZDtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIH0pO1xuICBsZXQgY29kZSA9IFRleHQub2Zfc2VnbWVudChidWZmZXJfaWRzLCBmYWxzZSwgc29ydCwgdW5zZWxlY3RlZCk7XG4gIGxldCBob2xlcyA9IExpc3QubWFwKG9mX2hvbGUofm1lYXN1cmVkLCB+Zm9udF9tZXRyaWNzKSwgaG9sZXMpO1xuICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjb2RlXCIpLCBbc3Bhbl9jKFwiY29kZS10ZXh0XCIsIGNvZGUpLCAuLi5ob2xlc10pO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID1cbiAgfCBDb2xsYXBzZWRcbiAgfCBTdGVwKGludClcbiAgfCBUZXJtXG4gIHwgSG9sZUxhYmVsXG4gIHwgRGVsaW1cbiAgfCBFbXB0eUhvbGUoYm9vbCwgQ2xvc3VyZUVudmlyb25tZW50LnQpXG4gIHwgTm9uRW1wdHlIb2xlXG4gIHwgVmFySG9sZShWYXJFcnJTdGF0dXMuSG9sZVJlYXNvbi50LCBJZC50KVxuICB8IEluY29uc2lzdGVudEJyYW5jaGVzKElkLnQpXG4gIHwgSW52YWxpZFxuICB8IEZhaWxlZENhc3REZWxpbVxuICB8IEZhaWxlZENhc3REZWNvcmF0aW9uXG4gIHwgQ2FzdERlY29yYXRpb25cbiAgfCBPcGVyYXRpb25FcnJvcihJbnZhbGlkT3BlcmF0aW9uRXJyb3IudClcbiAgfCBTdGVwcGFibGUoaW50KVxuICB8IFN0ZXBwZWRcbiAgfCBTdWJzdGl0dXRlZDtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIE1lYXN1cmVkUG9zaXRpb24gPSBQcmV0dHkuTWVhc3VyZWRQb3NpdGlvbjtcbm1vZHVsZSBNZWFzdXJlZExheW91dCA9IFByZXR0eS5NZWFzdXJlZExheW91dDtcblxudHlwZSBjb250YWluZXJfdHlwZSA9XG4gIHwgU3ZnXG4gIHwgRGl2O1xuXG4vKipcbiAqIEEgYnVmZmVyZWQgY29udGFpbmVyIGZvciBTVkcgZWxlbWVudHMgc28gdGhhdCBzdHJva2VzIGFsb25nXG4gKiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBlbGVtZW50cyBkbyBub3QgZ2V0IGNsaXBwZWQgYnkgdGhlXG4gKiB2aWV3Qm94IGJvdW5kYXJpZXNcbiAqL1xubGV0IGNvbnRhaW5lciA9XG4gICAgKFxuICAgICAgfmNvbnRhaW5lcl90eXBlOiBjb250YWluZXJfdHlwZSxcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+b3JpZ2luOiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICB+aGVpZ2h0OiBpbnQsXG4gICAgICB+d2lkdGg6IGludCxcbiAgICAgIH5jbHM6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRzOiBsaXN0KE5vZGUudCksXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbGV0IGJ1ZmZlcmVkX2hlaWdodCA9IGhlaWdodDtcbiAgbGV0IGJ1ZmZlcmVkX3dpZHRoID0gd2lkdGg7XG5cbiAgbGV0IGJ1ZmZlcmVkX2hlaWdodF9weCA9XG4gICAgRmxvYXQub2ZfaW50KGJ1ZmZlcmVkX2hlaWdodCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQ7XG4gIGxldCBidWZmZXJlZF93aWR0aF9weCA9XG4gICAgRmxvYXQub2ZfaW50KGJ1ZmZlcmVkX3dpZHRoKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoO1xuXG4gIGxldCBjb250YWluZXJfb3JpZ2luX3ggPVxuICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93KSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodDtcbiAgbGV0IGNvbnRhaW5lcl9vcmlnaW5feSA9IEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoO1xuXG4gIGxldCBpbm5lciA9XG4gICAgc3dpdGNoIChjb250YWluZXJfdHlwZSkge1xuICAgIHwgRGl2ID0+XG4gICAgICBOb2RlLmRpdihcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwiZGVjb3JhdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXCIlcy1jb250YWluZXJcIiwgY2xzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgXCJ3aWR0aDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgICAgICAgICAgICAgIGJ1ZmZlcmVkX3dpZHRoX3B4LFxuICAgICAgICAgICAgICAgIGJ1ZmZlcmVkX2hlaWdodF9weCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIGNvbnRlbnRzLFxuICAgICAgKVxuICAgIHwgU3ZnID0+XG4gICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgIFwic3ZnXCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW2Nsc10pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICAgIFwidmlld0JveFwiLFxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcIjAgMCAlZCAlZFwiLCBidWZmZXJlZF93aWR0aCwgYnVmZmVyZWRfaGVpZ2h0KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcIndpZHRoXCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBidWZmZXJlZF93aWR0aF9weCkpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBidWZmZXJlZF9oZWlnaHRfcHgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIGNvbnRlbnRzLFxuICAgICAgKVxuICAgIH07XG4gIE5vZGUuZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICBcImRlY29yYXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYoXCIlcy1jb250YWluZXJcIiwgY2xzKSxcbiAgICAgICAgXSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwidG9wOiBjYWxjKCVmcHgpOyBsZWZ0OiAlZnB4O1wiLFxuICAgICAgICAgICAgY29udGFpbmVyX29yaWdpbl94LFxuICAgICAgICAgICAgY29udGFpbmVyX29yaWdpbl95LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBbaW5uZXJdLFxuICApO1xufTtcblxubGV0IGNvcm5lcl9yYWRpaSA9IChmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQpID0+IHtcbiAgbGV0IHIgPSAyLjU7XG4gIChyIC8uIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgsIHIgLy4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQpO1xufTtcblxubGV0IHJlY3RzID1cbiAgICAoXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+dnRyaW09MC4wLFxuICAgICAgc3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgIG06IE1lYXN1cmVkTGF5b3V0LnQoXyksXG4gICAgKVxuICAgIDogbGlzdChTdmdVdGlsLlJlY3QudCkgPT4ge1xuICBsZXQgbWtfcmVjdCA9XG4gICAgICAoXG4gICAgICAgIH5pc19maXJzdD1mYWxzZSxcbiAgICAgICAgfmlzX2xhc3Q9ZmFsc2UsXG4gICAgICAgIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgIGJveDogTWVhc3VyZWRMYXlvdXQuYm94LFxuICAgICAgKSA9PlxuICAgIFN2Z1V0aWwuUmVjdC57XG4gICAgICBtaW46IHtcbiAgICAgICAgeDogRmxvYXQub2ZfaW50KHN0YXJ0LmNvbCksXG4gICAgICAgIHk6IEZsb2F0Lm9mX2ludChzdGFydC5yb3cpICsuIChpc19maXJzdCA/IHZ0cmltIDogMC4wKSxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogRmxvYXQub2ZfaW50KGJveC53aWR0aCksXG4gICAgICBoZWlnaHQ6XG4gICAgICAgIEZsb2F0Lm9mX2ludChib3guaGVpZ2h0KVxuICAgICAgICAtLiAoaXNfZmlyc3QgPyB2dHJpbSA6IDAuMClcbiAgICAgICAgLS4gKGlzX2xhc3QgPyB2dHJpbSA6IDAuMCksXG4gICAgfTtcbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aChtLm1ldHJpY3MpO1xuICBtLm1ldHJpY3NcbiAgfD4gTGlzdC5tYXBpKChpLCBib3gpID0+IChpLCBib3gpKVxuICB8PiBMaXN0LmZvbGRfbGVmdF9tYXAoXG4gICAgICAgKHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIChpLCBib3g6IE1lYXN1cmVkTGF5b3V0LmJveCkpID0+XG4gICAgICAgICAoXG4gICAgICAgICAgIHtyb3c6IHN0YXJ0LnJvdyArIGJveC5oZWlnaHQsIGNvbDogaW5kZW50fSxcbiAgICAgICAgICAgbWtfcmVjdCh+aXNfZmlyc3Q9aSA9PSAwLCB+aXNfbGFzdD1pID09IG4gLSAxLCBzdGFydCwgYm94KSxcbiAgICAgICAgICksXG4gICAgICAgc3RhcnQsXG4gICAgIClcbiAgfD4gc25kO1xufTtcblxubW9kdWxlIEVyckhvbGUgPSB7XG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfnZ0cmltPTAuLFxuICAgICAgICB+Y29ybmVyX3JhZGlpOiAoZmxvYXQsIGZsb2F0KSxcbiAgICAgICAgKG9mZnNldCwgc3ViamVjdCk6IE1lYXN1cmVkTGF5b3V0LndpdGhfb2Zmc2V0KF8pLFxuICAgICAgKVxuICAgICAgOiBOb2RlLnQgPT5cbiAgICBzdWJqZWN0XG4gICAgfD4gcmVjdHMofnZ0cmltLCB7cm93OiAwLCBjb2w6IG9mZnNldH0pXG4gICAgfD4gU3ZnVXRpbC5PcnRob2dvbmFsUG9seWdvbi5tayh+Y29ybmVyX3JhZGlpKVxuICAgIHw+IFN2Z1V0aWwuUGF0aC52aWV3KFxuICAgICAgICAgfmF0dHJzPVxuICAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgICBjbGFzc2VzKFtcImVyci1ob2xlXCJdKSxcbiAgICAgICAgICAgICBjcmVhdGUoXCJ2ZWN0b3ItZWZmZWN0XCIsIFwibm9uLXNjYWxpbmctc3Ryb2tlXCIpLFxuICAgICAgICAgICBdLFxuICAgICAgICk7XG59O1xuXG5tb2R1bGUgVmFyRXJySG9sZSA9IHtcbiAgbGV0IHZpZXcgPVxuICAgICAgKFxuICAgICAgICB+dnRyaW09MC4sXG4gICAgICAgIH5jb3JuZXJfcmFkaWk6IChmbG9hdCwgZmxvYXQpLFxuICAgICAgICAob2Zmc2V0LCBzdWJqZWN0KTogTWVhc3VyZWRMYXlvdXQud2l0aF9vZmZzZXQoXyksXG4gICAgICApXG4gICAgICA6IE5vZGUudCA9PlxuICAgIHN1YmplY3RcbiAgICB8PiByZWN0cyh+dnRyaW0sIHtyb3c6IDAsIGNvbDogb2Zmc2V0fSlcbiAgICB8PiBTdmdVdGlsLk9ydGhvZ29uYWxQb2x5Z29uLm1rKH5jb3JuZXJfcmFkaWkpXG4gICAgfD4gU3ZnVXRpbC5QYXRoLnZpZXcoXG4gICAgICAgICB+YXR0cnM9XG4gICAgICAgICAgIEF0dHIuW1xuICAgICAgICAgICAgIGNsYXNzZXMoW1widmFyLWVyci1ob2xlXCJdKSxcbiAgICAgICAgICAgICBjcmVhdGUoXCJ2ZWN0b3ItZWZmZWN0XCIsIFwibm9uLXNjYWxpbmctc3Ryb2tlXCIpLFxuICAgICAgICAgICBdLFxuICAgICAgICk7XG59O1xuIiwib3BlbiBQcmV0dHk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IERvYy50KERIQW5ub3QudCk7XG4iLCJvcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcbm1vZHVsZSBEb2MgPSBQcmV0dHkuRG9jO1xuXG50eXBlIHQgPSBEb2MudChIVHlwQW5ub3QudCk7XG5cbnR5cGUgZm9ybWF0dGFibGVfY2hpbGQgPSAofmVuZm9yY2VfaW5saW5lOiBib29sKSA9PiB0O1xuXG5sZXQgcHJlY2VkZW5jZV9Qcm9kID0gMTtcbmxldCBwcmVjZWRlbmNlX0Fycm93ID0gMjtcbmxldCBwcmVjZWRlbmNlX1N1bSA9IDM7XG5sZXQgcHJlY2VkZW5jZV9BcCA9IDQ7XG5sZXQgcHJlY2VkZW5jZV9Db25zdCA9IDU7XG5cbmxldCBwcmVjZWRlbmNlID0gKHR5OiBUeXAudCk6IGludCA9PlxuICBzd2l0Y2ggKFR5cC50ZXJtX29mKHR5KSkge1xuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IFVua25vd24oXylcbiAgfCBWYXIoXylcbiAgfCBGb3JhbGwoXylcbiAgfCBSZWMoXylcbiAgfCBTdW0oXykgPT4gcHJlY2VkZW5jZV9TdW1cbiAgfCBMaXN0KF8pID0+IHByZWNlZGVuY2VfQ29uc3RcbiAgfCBQcm9kKF8pID0+IHByZWNlZGVuY2VfUHJvZFxuICB8IEFycm93KF8sIF8pID0+IHByZWNlZGVuY2VfQXJyb3dcbiAgfCBQYXJlbnMoXykgPT4gcHJlY2VkZW5jZV9Db25zdFxuICB8IEFwKF8pID0+IHByZWNlZGVuY2VfQXBcbiAgfTtcblxubGV0IHBhZF9jaGlsZCA9XG4gICAgKFxuICAgICAgfmlubGluZV9wYWRkaW5nIGFzIChsLCByKT0oRG9jLmVtcHR5KCksIERvYy5lbXB0eSgpKSxcbiAgICAgIH5lbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgIGNoaWxkOiBmb3JtYXR0YWJsZV9jaGlsZCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IGlubGluZV9jaG9pY2UgPSBEb2MuaGNhdHMoW2wsIGNoaWxkKH5lbmZvcmNlX2lubGluZT10cnVlKSwgcl0pO1xuICBsZXQgcGFyYV9jaG9pY2UgPVxuICAgIERvYy4oXG4gICAgICBoY2F0cyhbXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBpbmRlbnRfYW5kX2FsaWduKGNoaWxkKH5lbmZvcmNlX2lubGluZSkpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgZW5mb3JjZV9pbmxpbmUgPyBpbmxpbmVfY2hvaWNlIDogRG9jLmNob2ljZShpbmxpbmVfY2hvaWNlLCBwYXJhX2Nob2ljZSk7XG59O1xuXG5sZXQgbWtfZGVsaW0gPSBzID0+IERvYy4oYW5ub3QoSFR5cEFubm90LkRlbGltLCB0ZXh0KHMpKSk7XG5cbmxldCByZWMgbWsgPSAofnBhcmVudGhlc2l6ZT1mYWxzZSwgfmVuZm9yY2VfaW5saW5lOiBib29sLCB0eTogVHlwLnQpOiB0ID0+IHtcbiAgb3BlbiBEb2M7XG4gIGxldCBtaycgPSBtayh+ZW5mb3JjZV9pbmxpbmUpO1xuICBsZXQgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMgPSAocHJlY2VkZW5jZV9vcCwgdHkxLCB0eTIpID0+IChcbiAgICBhbm5vdChcbiAgICAgIEhUeXBBbm5vdC5TdGVwKDApLFxuICAgICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZSh0eTEpIDw9IHByZWNlZGVuY2Vfb3AsIHR5MSksXG4gICAgKSxcbiAgICBhbm5vdChcbiAgICAgIEhUeXBBbm5vdC5TdGVwKDEpLFxuICAgICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZSh0eTIpIDwgcHJlY2VkZW5jZV9vcCwgdHkyKSxcbiAgICApLFxuICApO1xuICBsZXQgKGRvYywgcGFyZW50aGVzaXplKSA9XG4gICAgc3dpdGNoIChUeXAudGVybV9vZih0eSkpIHtcbiAgICB8IFBhcmVucyh0eSkgPT4gKG1rKH5wYXJlbnRoZXNpemU9dHJ1ZSwgfmVuZm9yY2VfaW5saW5lLCB0eSksIGZhbHNlKVxuICAgIHwgVW5rbm93bihfKSA9PiAoXG4gICAgICAgIGFubm90KEhUeXBBbm5vdC5EZWxpbSwgYW5ub3QoSFR5cEFubm90LkhvbGVMYWJlbCwgdGV4dChcIj9cIikpKSxcbiAgICAgICAgcGFyZW50aGVzaXplLFxuICAgICAgKVxuICAgIHwgSW50ID0+ICh0ZXh0KFwiSW50XCIpLCBwYXJlbnRoZXNpemUpXG4gICAgfCBGbG9hdCA9PiAodGV4dChcIkZsb2F0XCIpLCBwYXJlbnRoZXNpemUpXG4gICAgfCBCb29sID0+ICh0ZXh0KFwiQm9vbFwiKSwgcGFyZW50aGVzaXplKVxuICAgIHwgU3RyaW5nID0+ICh0ZXh0KFwiU3RyaW5nXCIpLCBwYXJlbnRoZXNpemUpXG4gICAgfCBWYXIobmFtZSkgPT4gKHRleHQobmFtZSksIHBhcmVudGhlc2l6ZSlcbiAgICB8IExpc3QodHkpID0+IChcbiAgICAgICAgaGNhdHMoW1xuICAgICAgICAgIG1rX2RlbGltKFwiW1wiKSxcbiAgICAgICAgICAoXG4gICAgICAgICAgICAofmVuZm9yY2VfaW5saW5lKSA9PlxuICAgICAgICAgICAgICBhbm5vdChIVHlwQW5ub3QuU3RlcCgwKSwgbWsofmVuZm9yY2VfaW5saW5lLCB0eSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIHw+IHBhZF9jaGlsZCh+ZW5mb3JjZV9pbmxpbmUpLFxuICAgICAgICAgIG1rX2RlbGltKFwiXVwiKSxcbiAgICAgICAgXSksXG4gICAgICAgIHBhcmVudGhlc2l6ZSxcbiAgICAgIClcbiAgICB8IEFycm93KHR5MSwgdHkyKSA9PlxuICAgICAgbGV0IChkMSwgZDIpID1cbiAgICAgICAgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMocHJlY2VkZW5jZV9BcnJvdywgdHkxLCB0eTIpO1xuICAgICAgKFxuICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgZDEsXG4gICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgY2hvaWNlcyhbbGluZWJyZWFrKCksIHNwYWNlKCldKSxcbiAgICAgICAgICAgIHRleHQoVW5pY29kZS50eXBlQXJyb3dTeW0gKysgXCIgXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGQyLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50aGVzaXplLFxuICAgICAgKTtcbiAgICB8IFByb2QoW10pID0+ICh0ZXh0KFwiKClcIiksIHBhcmVudGhlc2l6ZSlcbiAgICB8IFByb2QoW2hlYWQsIC4uLnRhaWxdKSA9PlxuICAgICAgbGV0IGNlbnRlciA9XG4gICAgICAgIFtcbiAgICAgICAgICBhbm5vdChcbiAgICAgICAgICAgIEhUeXBBbm5vdC5TdGVwKDApLFxuICAgICAgICAgICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShoZWFkKSA8PSBwcmVjZWRlbmNlX1Byb2QsIGhlYWQpLFxuICAgICAgICAgICksXG4gICAgICAgICAgLi4uTGlzdC5tYXBpKFxuICAgICAgICAgICAgICAgKGksIHR5KSA9PlxuICAgICAgICAgICAgICAgICBhbm5vdChcbiAgICAgICAgICAgICAgICAgICBIVHlwQW5ub3QuU3RlcChpICsgMSksXG4gICAgICAgICAgICAgICAgICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZSh0eSkgPD0gcHJlY2VkZW5jZV9Qcm9kLCB0eSksXG4gICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICB0YWlsLFxuICAgICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgfD4gTGlzdFV0aWwuam9pbihcbiAgICAgICAgICAgICBoY2F0cyhbdGV4dChcIixcIiksIGNob2ljZXMoW2xpbmVicmVhaygpLCBzcGFjZSgpXSldKSxcbiAgICAgICAgICAgKVxuICAgICAgICB8PiBoY2F0cztcbiAgICAgIChjZW50ZXIsIHRydWUpO1xuICAgIHwgUmVjKG5hbWUsIHR5KSA9PiAoXG4gICAgICAgIGhjYXRzKFtcbiAgICAgICAgICB0ZXh0KFwicmVjIFwiICsrIFR5cGUudHBhdF92aWV3KG5hbWUpICsrIFwiLT57XCIpLFxuICAgICAgICAgIChcbiAgICAgICAgICAgICh+ZW5mb3JjZV9pbmxpbmUpID0+XG4gICAgICAgICAgICAgIGFubm90KEhUeXBBbm5vdC5TdGVwKDApLCBtayh+ZW5mb3JjZV9pbmxpbmUsIHR5KSlcbiAgICAgICAgICApXG4gICAgICAgICAgfD4gcGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZSksXG4gICAgICAgICAgbWtfZGVsaW0oXCJ9XCIpLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50aGVzaXplLFxuICAgICAgKVxuICAgIHwgRm9yYWxsKG5hbWUsIHR5KSA9PiAoXG4gICAgICAgIGhjYXRzKFtcbiAgICAgICAgICB0ZXh0KFwiZm9yYWxsIFwiICsrIFR5cGUudHBhdF92aWV3KG5hbWUpICsrIFwiLT57XCIpLFxuICAgICAgICAgIChcbiAgICAgICAgICAgICh+ZW5mb3JjZV9pbmxpbmUpID0+XG4gICAgICAgICAgICAgIGFubm90KEhUeXBBbm5vdC5TdGVwKDApLCBtayh+ZW5mb3JjZV9pbmxpbmUsIHR5KSlcbiAgICAgICAgICApXG4gICAgICAgICAgfD4gcGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZSksXG4gICAgICAgICAgbWtfZGVsaW0oXCJ9XCIpLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50aGVzaXplLFxuICAgICAgKVxuICAgIHwgU3VtKHN1bV9tYXApID0+XG4gICAgICBsZXQgY2VudGVyID1cbiAgICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAgIChpLCB2cikgPT4ge1xuICAgICAgICAgICAgQ29uc3RydWN0b3JNYXAuKFxuICAgICAgICAgICAgICBzd2l0Y2ggKHZyKSB7XG4gICAgICAgICAgICAgIHwgVmFyaWFudChjdHIsIF8sIE5vbmUpID0+XG4gICAgICAgICAgICAgICAgYW5ub3QoSFR5cEFubm90LlN0ZXAoaSArIDEpLCB0ZXh0KGN0cikpXG4gICAgICAgICAgICAgIHwgVmFyaWFudChjdHIsIF8sIFNvbWUodHkpKSA9PlxuICAgICAgICAgICAgICAgIGFubm90KFxuICAgICAgICAgICAgICAgICAgSFR5cEFubm90LlN0ZXAoaSArIDEpLFxuICAgICAgICAgICAgICAgICAgaGNhdHMoW3RleHQoY3RyICsrIFwiKFwiKSwgbWsnKHR5KSwgdGV4dChcIilcIildKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgQmFkRW50cnkodHkpID0+XG4gICAgICAgICAgICAgICAgYW5ub3QoSFR5cEFubm90LlN0ZXAoaSArIDEpLCBoY2F0cyhbbWsnKHR5KV0pKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdW1fbWFwLFxuICAgICAgICApXG4gICAgICAgIHw+IExpc3RVdGlsLmpvaW4oXG4gICAgICAgICAgICAgaGNhdHMoW3RleHQoXCIgK1wiKSwgY2hvaWNlcyhbbGluZWJyZWFrKCksIHNwYWNlKCldKV0pLFxuICAgICAgICAgICApXG4gICAgICAgIHw+IGhjYXRzO1xuICAgICAgKGNlbnRlciwgdHJ1ZSk7XG4gICAgfCBBcCh0MSwgdDIpID0+IChcbiAgICAgICAgaGNhdHMoW21rJyh0MSksIHRleHQoXCIoXCIpLCBtaycodDIpLCB0ZXh0KFwiKVwiKV0pLFxuICAgICAgICBwYXJlbnRoZXNpemUsXG4gICAgICApXG4gICAgfTtcbiAgbGV0IGRvYyA9IGFubm90KEhUeXBBbm5vdC5UZXJtLCBkb2MpO1xuICBwYXJlbnRoZXNpemUgPyBEb2MuaGNhdHMoW21rX2RlbGltKFwiKFwiKSwgZG9jLCBta19kZWxpbShcIilcIildKSA6IGRvYztcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gUHJldHR5O1xuXG5sZXQgcHJvbW90ZV9hbm5vdCA9XG4gIGZ1blxuICB8IEhUeXBBbm5vdC5UZXJtID0+IERIQW5ub3QuVGVybVxuICB8IEhUeXBBbm5vdC5TdGVwKG4pID0+IERIQW5ub3QuU3RlcChuKVxuICB8IEhUeXBBbm5vdC5Ib2xlTGFiZWwgPT4gREhBbm5vdC5Ib2xlTGFiZWxcbiAgfCBIVHlwQW5ub3QuRGVsaW0gPT4gREhBbm5vdC5EZWxpbTtcbmxldCBwcm9tb3RlID0gKGQ6IEhUeXBEb2MudCk6IERIRG9jLnQgPT4gZCB8PiBEb2MubWFwX2Fubm90KHByb21vdGVfYW5ub3QpO1xubGV0IG1rID0gKH5lbmZvcmNlX2lubGluZTogYm9vbCwgdHk6IFR5cC50KTogREhEb2MudCA9PlxuICB0eSB8PiBIVHlwRG9jLm1rKH5lbmZvcmNlX2lubGluZSkgfD4gcHJvbW90ZTtcbiIsIm1vZHVsZSBEb2MgPSBQcmV0dHkuRG9jO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIERIRG9jO1xuXG50eXBlIGZvcm1hdHRhYmxlX2NoaWxkID0gKH5lbmZvcmNlX2lubGluZTogYm9vbCkgPT4gdDtcblxubW9kdWxlIFAgPSBQcmVjZWRlbmNlO1xubGV0IHByZWNlZGVuY2VfY29uc3QgPSBQLm1heDtcbmxldCBwcmVjZWRlbmNlX0FwID0gUC5hcDtcbmxldCBwcmVjZWRlbmNlX1Bvd2VyID0gUC5wb3dlcjtcbmxldCBwcmVjZWRlbmNlX05vdCA9IFAubm90XztcbmxldCBwcmVjZWRlbmNlX1RpbWVzID0gUC5tdWx0O1xubGV0IHByZWNlZGVuY2VfRGl2aWRlID0gUC5tdWx0O1xubGV0IHByZWNlZGVuY2VfUGx1cyA9IFAucGx1cztcbmxldCBwcmVjZWRlbmNlX01pbnVzID0gUC5wbHVzO1xubGV0IHByZWNlZGVuY2VfQ29ucyA9IFAuY29ucztcbmxldCBwcmVjZWRlbmNlX0VxdWFscyA9IFAuZXFzO1xubGV0IHByZWNlZGVuY2VfTGVzc1RoYW4gPSBQLmVxcztcbmxldCBwcmVjZWRlbmNlX0dyZWF0ZXJUaGFuID0gUC5lcXM7XG5sZXQgcHJlY2VkZW5jZV9BbmQgPSBQLmFuZF87XG5sZXQgcHJlY2VkZW5jZV9PciA9IFAub3JfO1xubGV0IHByZWNlZGVuY2VfQ29tbWEgPSBQLnByb2Q7XG5sZXQgcHJlY2VkZW5jZV9tYXggPSBQLm1pbjtcblxubGV0IHBhZF9jaGlsZCA9XG4gICAgKFxuICAgICAgfmlubGluZV9wYWRkaW5nIGFzIChsLCByKT0oRG9jLmVtcHR5KCksIERvYy5lbXB0eSgpKSxcbiAgICAgIH5lbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgIGNoaWxkOiBmb3JtYXR0YWJsZV9jaGlsZCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IGlubGluZV9jaG9pY2UgPSBEb2MuaGNhdHMoW2wsIGNoaWxkKH5lbmZvcmNlX2lubGluZT10cnVlKSwgcl0pO1xuICBsZXQgcGFyYV9jaG9pY2UgPVxuICAgIERvYy4oXG4gICAgICBoY2F0cyhbXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBpbmRlbnRfYW5kX2FsaWduKGNoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSkpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgZW5mb3JjZV9pbmxpbmUgPyBpbmxpbmVfY2hvaWNlIDogRG9jLmNob2ljZShpbmxpbmVfY2hvaWNlLCBwYXJhX2Nob2ljZSk7XG59O1xuXG5tb2R1bGUgRGVsaW0gPSB7XG4gIGxldCBtayA9IChkZWxpbV90ZXh0OiBzdHJpbmcpOiB0ID0+XG4gICAgRG9jLnRleHQoZGVsaW1fdGV4dCkgfD4gRG9jLmFubm90KERIQW5ub3QuRGVsaW0pO1xuXG4gIGxldCBlbXB0eV9ob2xlID0gKF9lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KTogdCA9PiB7XG4gICAgbGV0IGxibCA9XG4gICAgICAvL1N0cmluZ1V0aWwuY2F0KFtzdHJpbmdfb2ZfaW50KHUgKyAxKSwgXCI6XCIsIHN0cmluZ19vZl9pbnQoaSArIDEpXSk7XG4gICAgICBcIj9cIjtcbiAgICBEb2MudGV4dChsYmwpXG4gICAgfD4gRG9jLmFubm90KERIQW5ub3QuSG9sZUxhYmVsKVxuICAgIHw+IERvYy5hbm5vdChESEFubm90LkRlbGltKTtcbiAgfTtcblxuICBsZXQgbGlzdF9uaWwgPSBtayhcIltdXCIpO1xuICBsZXQgdHJpdiA9IG1rKFwiKClcIik7XG4gIGxldCB3aWxkID0gbWsoXCJfXCIpO1xuXG4gIGxldCBvcGVuX1BhcmVudGhlc2l6ZWQgPSBtayhcIihcIik7XG4gIGxldCBjbG9zZV9QYXJlbnRoZXNpemVkID0gbWsoXCIpXCIpO1xuXG4gIGxldCBzeW1fRnVuID0gbWsoXCJmdW5cIik7XG4gIGxldCBjb2xvbl9GdW4gPSBtayhcIjpcIik7XG4gIGxldCBhcnJvd19GdW4gPSBtayhcIi0+XCIpO1xuXG4gIGxldCBmaXhfRml4RiA9IG1rKFwiZml4XCIpO1xuXG4gIGxldCBhcnJvd19GaXhGID0gbWsoXCItPlwiKTtcbiAgbGV0IGNvbG9uX0ZpeEYgPSBtayhcIjpcIik7XG5cbiAgbGV0IG9wZW5fQ2FzZSA9IG1rKFwiY2FzZVwiKTtcbiAgbGV0IGNsb3NlX0Nhc2UgPSBtayhcImVuZFwiKTtcblxuICBsZXQgYmFyX1J1bGUgPSBtayhcInxcIik7XG4gIGxldCBhcnJvd19SdWxlID0gbWsoXCI9PlwiKTtcblxuICBsZXQgb3Blbl9DYXN0ID0gbWsoXCI8XCIpO1xuICBsZXQgYXJyb3dfQ2FzdCA9IG1rKFVuaWNvZGUuY2FzdEFycm93U3ltKTtcbiAgbGV0IGJhY2tfYXJyb3dfQ2FzdCA9IG1rKFVuaWNvZGUuY2FzdEJhY2tBcnJvd1N5bSk7XG4gIGxldCBjbG9zZV9DYXN0ID0gbWsoXCI+XCIpO1xuXG4gIGxldCBvcGVuX0ZhaWxlZENhc3QgPSBvcGVuX0Nhc3QgfD4gRG9jLmFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlbGltKTtcbiAgbGV0IGFycm93X0ZhaWxlZENhc3QgPVxuICAgIG1rKFVuaWNvZGUuY2FzdEFycm93U3ltKSB8PiBEb2MuYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVsaW0pO1xuICBsZXQgY2xvc2VfRmFpbGVkQ2FzdCA9IGNsb3NlX0Nhc3QgfD4gRG9jLmFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlbGltKTtcbn07XG5cbmxldCBta19FbXB0eUhvbGUgPSAofnNlbGVjdGVkPWZhbHNlLCBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KSA9PlxuICBEZWxpbS5lbXB0eV9ob2xlKGVudikgfD4gRG9jLmFubm90KERIQW5ub3QuRW1wdHlIb2xlKHNlbGVjdGVkLCBlbnYpKTtcblxubGV0IG1rX0ludmFsaWRUZXh0ID0gdCA9PiBEb2MudGV4dCh0KSB8PiBEb2MuYW5ub3QoREhBbm5vdC5JbnZhbGlkKTtcblxubGV0IG1rX1NlcXVlbmNlID0gKGRvYzEsIGRvYzIpID0+IERvYy4oaGNhdHMoW2RvYzEsIGxpbmVicmVhaygpLCBkb2MyXSkpO1xuXG5sZXQgbWtfSW50TGl0ID0gbiA9PiBEb2MudGV4dChzdHJpbmdfb2ZfaW50KG4pKTtcblxubGV0IG1rX1N0cmluZ0xpdCA9IHMgPT4gRG9jLnRleHQoRm9ybS5zdHJpbmdfcXVvdGUocykpO1xuXG5sZXQgbWtfVGVzdCA9IHQgPT4gRG9jLihoY2F0cyhbdGV4dChcIlRlc3RcIiksIHQsIHRleHQoXCJFbmRcIildKSk7XG5cbmxldCBta19GbG9hdExpdCA9IChmOiBmbG9hdCkgPT5cbiAgc3dpdGNoIChmIDwgMC4sIEZsb2F0LmlzX2luZmluaXRlKGYpLCBGbG9hdC5pc19uYW4oZikpIHtcbiAgfCAoZmFsc2UsIHRydWUsIF8pID0+IERvYy50ZXh0KFwiSW5mXCIpIC8qIFRPRE86IE5lZ0luZiBpcyB0ZW1wb3JhcmlseSBpbnRyb2R1Y2VkIHVudGlsIHVuYXJ5IG1pbnVzIGlzIGludHJvZHVjZWQgdG8gSGF6ZWwgKi9cbiAgfCAodHJ1ZSwgdHJ1ZSwgXykgPT4gRG9jLnRleHQoXCJOZWdJbmZcIilcbiAgfCAoXywgXywgdHJ1ZSkgPT4gRG9jLnRleHQoXCJOYU5cIilcbiAgfCBfID0+IERvYy50ZXh0KHN0cmluZ19vZl9mbG9hdChmKSlcbiAgfTtcblxubGV0IG1rX0Jvb2xMaXQgPSBiID0+IERvYy50ZXh0KHN0cmluZ19vZl9ib29sKGIpKTtcblxubGV0IG1rX0NvbnN0cnVjdG9yTGl0ID0gRG9jLnRleHQ7XG5cbmxldCBta19Db25zID0gKGhkLCB0bCkgPT4gRG9jLihoY2F0cyhbaGQsIHRleHQoXCI6OlwiKSwgdGxdKSk7XG5sZXQgbWtfTGlzdENvbmNhdCA9IChoZCwgdGwpID0+IERvYy4oaGNhdHMoW2hkLCB0ZXh0KFwiQFwiKSwgdGxdKSk7XG5cbmxldCBta19jb21tYV9zZXEgPSAobGQsIHJkLCBsKSA9PiB7XG4gIGxldCByZWMgbWtfY29tbWFfc2VxX2lubmVyID0gbCA9PiB7XG4gICAgc3dpdGNoIChsKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW2hkXSA9PiBbaGRdXG4gICAgfCBbaGQsIC4uLnRsXSA9PiBEb2MuKFtoZCwgdGV4dChcIiwgXCIpXSBAIG1rX2NvbW1hX3NlcV9pbm5lcih0bCkpXG4gICAgfTtcbiAgfTtcbiAgRG9jLihoY2F0cyhbdGV4dChsZCldIEAgbWtfY29tbWFfc2VxX2lubmVyKGwpIEAgW3RleHQocmQpXSkpO1xufTtcblxubGV0IG1rX0xpc3RMaXQgPSBsID0+IG1rX2NvbW1hX3NlcShcIltcIiwgXCJdXCIsIGwpO1xuXG5sZXQgbWtfVHVwbGUgPSBlbHRzID0+IG1rX2NvbW1hX3NlcShcIlwiLCBcIlwiLCBlbHRzKTtcblxubGV0IG1rX1R5cEFwID0gKGRvYzEsIGRvYzIpID0+XG4gIERvYy4oaGNhdHMoW2RvYzEsIHRleHQoXCJAPFwiKSwgZG9jMiwgdGV4dChcIj5cIildKSk7XG5cbmxldCBta19BcCA9IChkb2MxLCBkb2MyKSA9PlxuICBEb2MuKGhjYXRzKFtkb2MxLCB0ZXh0KFwiKFwiKSwgZG9jMiwgdGV4dChcIilcIildKSk7XG5cbmxldCBta19yZXZfQXAgPSAoZG9jMSwgZG9jMikgPT4gRG9jLihoY2F0cyhbZG9jMSwgdGV4dChcIiB8PiBcIiksIGRvYzJdKSk7XG4iLCJvcGVuIFByZXR0eTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgcHJlY2VkZW5jZSA9IChkcDogUGF0LnQpID0+XG4gIHN3aXRjaCAoREhQYXQudGVybV9vZihkcCkpIHtcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBXaWxkXG4gIHwgSW52YWxpZChfKVxuICB8IFZhcihfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IExpc3RMaXQoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9jb25zdFxuICB8IFR1cGxlKF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0NvbW1hXG4gIHwgQ29ucyhfKSA9PiBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db25zXG4gIHwgQXAoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQXBcbiAgfCBQYXJlbnMoXykgPT4gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfY29uc3RcbiAgfCBDYXN0KF8pID0+IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwXG4gIH07XG5cbmxldCByZWMgbWsgPVxuICAgICAgICAoXG4gICAgICAgICAgfmluZm9tYXA6IFN0YXRpY3MuTWFwLnQsXG4gICAgICAgICAgfnBhcmVudGhlc2l6ZT1mYWxzZSxcbiAgICAgICAgICB+c2hvd19jYXN0cyxcbiAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU6IGJvb2wsXG4gICAgICAgICAgZHA6IFBhdC50LFxuICAgICAgICApXG4gICAgICAgIDogREhEb2MudCA9PiB7XG4gIGxldCBtaycgPSBtayh+ZW5mb3JjZV9pbmxpbmUsIH5pbmZvbWFwLCB+c2hvd19jYXN0cyk7XG4gIGxldCBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKHByZWNlZGVuY2Vfb3AsIGRwMSwgZHAyKSA9PiAoXG4gICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShkcDEpID4gcHJlY2VkZW5jZV9vcCwgZHAxKSxcbiAgICBtaycofnBhcmVudGhlc2l6ZT1wcmVjZWRlbmNlKGRwMikgPj0gcHJlY2VkZW5jZV9vcCwgZHAyKSxcbiAgKTtcbiAgbGV0IG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKHByZWNlZGVuY2Vfb3AsIGRwMSwgZHAyKSA9PiAoXG4gICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShkcDEpID49IHByZWNlZGVuY2Vfb3AsIGRwMSksXG4gICAgbWsnKH5wYXJlbnRoZXNpemU9cHJlY2VkZW5jZShkcDIpID4gcHJlY2VkZW5jZV9vcCwgZHAyKSxcbiAgKTtcbiAgbGV0IGRvYyA9XG4gICAgc3dpdGNoIChESFBhdC50ZXJtX29mKGRwKSkge1xuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBFbXB0eUhvbGUgPT4gREhEb2NfY29tbW9uLm1rX0VtcHR5SG9sZShDbG9zdXJlRW52aXJvbm1lbnQuZW1wdHkpXG4gICAgfCBJbnZhbGlkKHQpID0+IERIRG9jX2NvbW1vbi5ta19JbnZhbGlkVGV4dCh0KVxuICAgIHwgVmFyKHgpID0+IERvYy50ZXh0KHgpXG4gICAgfCBXaWxkID0+IERIRG9jX2NvbW1vbi5EZWxpbS53aWxkXG4gICAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PiBESERvY19jb21tb24ubWtfQ29uc3RydWN0b3JMaXQobmFtZSlcbiAgICB8IEludChuKSA9PiBESERvY19jb21tb24ubWtfSW50TGl0KG4pXG4gICAgfCBGbG9hdChmKSA9PiBESERvY19jb21tb24ubWtfRmxvYXRMaXQoZilcbiAgICB8IEJvb2woYikgPT4gREhEb2NfY29tbW9uLm1rX0Jvb2xMaXQoYilcbiAgICB8IFN0cmluZyhzKSA9PiBESERvY19jb21tb24ubWtfU3RyaW5nTGl0KHMpXG4gICAgfCBMaXN0TGl0KGRfbGlzdCkgPT5cbiAgICAgIGxldCBvbCA9IExpc3QubWFwKG1rJywgZF9saXN0KTtcbiAgICAgIERIRG9jX2NvbW1vbi5ta19MaXN0TGl0KG9sKTtcbiAgICB8IENvbnMoZHAxLCBkcDIpID0+XG4gICAgICBsZXQgKGRvYzEsIGRvYzIpID1cbiAgICAgICAgbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQ29ucywgZHAxLCBkcDIpO1xuICAgICAgREhEb2NfY29tbW9uLm1rX0NvbnMoZG9jMSwgZG9jMik7XG4gICAgfCBUdXBsZShbXSkgPT4gREhEb2NfY29tbW9uLkRlbGltLnRyaXZcbiAgICB8IFR1cGxlKGRzKSA9PiBESERvY19jb21tb24ubWtfVHVwbGUoTGlzdC5tYXAobWsnLCBkcykpXG4gICAgLy8gVE9ETzogUHJpbnQgdHlwZSBhbm5vdGF0aW9uc1xuICAgIHwgQ2FzdChkcCwgdDEsIHQyKSB3aGVuIHNob3dfY2FzdHMgPT5cbiAgICAgIERvYy5oY2F0cyhbXG4gICAgICAgIG1rJyhkcCksXG4gICAgICAgIERvYy5hbm5vdChcbiAgICAgICAgICBESEFubm90LkNhc3REZWNvcmF0aW9uLFxuICAgICAgICAgIERvYy5oY2F0cyhbXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ub3Blbl9DYXN0LFxuICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0MSksXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYmFja19hcnJvd19DYXN0LFxuICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0MiksXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uY2xvc2VfQ2FzdCxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgIF0pXG4gICAgfCBDYXN0KGRwLCBfLCBfKSA9PiBtaycofnBhcmVudGhlc2l6ZSwgZHApXG4gICAgfCBQYXJlbnMoZHApID0+XG4gICAgICBtayh+ZW5mb3JjZV9pbmxpbmUsIH5wYXJlbnRoZXNpemU9dHJ1ZSwgfmluZm9tYXAsIH5zaG93X2Nhc3RzLCBkcClcbiAgICB8IEFwKGRwMSwgZHAyKSA9PlxuICAgICAgbGV0IChkb2MxLCBkb2MyKSA9XG4gICAgICAgIG1rX2xlZnRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoREhEb2NfY29tbW9uLnByZWNlZGVuY2VfQXAsIGRwMSwgZHAyKTtcbiAgICAgIERIRG9jX2NvbW1vbi5ta19BcChkb2MxLCBkb2MyKTtcbiAgICB9O1xuICBsZXQgZG9jID1cbiAgICBzd2l0Y2ggKFN0YXRpY3MuZ2V0X3BhdF9lcnJvcl9hdChpbmZvbWFwLCBESFBhdC5yZXBfaWQoZHApKSkge1xuICAgIHwgU29tZShfKSA9PiBEb2MuYW5ub3QoREhBbm5vdC5Ob25FbXB0eUhvbGUsIGRvYylcbiAgICB8IE5vbmUgPT4gZG9jXG4gICAgfTtcbiAgcGFyZW50aGVzaXplXG4gICAgPyBEb2MuaGNhdHMoW1xuICAgICAgICBESERvY19jb21tb24uRGVsaW0ub3Blbl9QYXJlbnRoZXNpemVkLFxuICAgICAgICBkb2MsXG4gICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5jbG9zZV9QYXJlbnRoZXNpemVkLFxuICAgICAgXSlcbiAgICA6IGRvYztcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXZhbHVhdG9yU3RlcDtcbm9wZW4gVHJhbnNpdGlvbjtcbm1vZHVsZSBEb2MgPSBQcmV0dHkuRG9jO1xuXG5sZXQgbWtfYmluX2Jvb2xfb3AgPSAob3A6IE9wZXJhdG9ycy5vcF9iaW5fYm9vbCk6IERIRG9jLnQgPT5cbiAgRG9jLnRleHQoT3BlcmF0b3JzLmJvb2xfb3BfdG9fc3RyaW5nKG9wKSk7XG5cbmxldCBta19iaW5faW50X29wID0gKG9wOiBPcGVyYXRvcnMub3BfYmluX2ludCk6IERIRG9jLnQgPT5cbiAgRG9jLnRleHQoT3BlcmF0b3JzLmludF9vcF90b19zdHJpbmcob3ApKTtcblxubGV0IG1rX2Jpbl9mbG9hdF9vcCA9IChvcDogT3BlcmF0b3JzLm9wX2Jpbl9mbG9hdCk6IERIRG9jLnQgPT5cbiAgRG9jLnRleHQoT3BlcmF0b3JzLmZsb2F0X29wX3RvX3N0cmluZyhvcCkpO1xuXG5sZXQgbWtfYmluX3N0cmluZ19vcCA9IChvcDogT3BlcmF0b3JzLm9wX2Jpbl9zdHJpbmcpOiBESERvYy50ID0+XG4gIERvYy50ZXh0KE9wZXJhdG9ycy5zdHJpbmdfb3BfdG9fc3RyaW5nKG9wKSk7XG5cbmxldCBtayA9XG4gICAgKFxuICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50LFxuICAgICAgfmVuZm9yY2VfaW5saW5lOiBib29sLFxuICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2U6IG9wdGlvbihJZC50KSxcbiAgICAgIC8vIFRoZSBuZXh0IGZvdXIgYXJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBzdGVwcGVyIHRvIHRyYWNrIHdoZXJlIHdlIGNhbiBhbm5vdGF0ZSBjaGFuZ2VzXG4gICAgICB+cHJldmlvdXNfc3RlcDogb3B0aW9uKChzdGVwLCBJZC50KSksIC8vIFRoZSBzdGVwIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgYWJvdmUgdGhpcyBvbmUgKGFuIElkIGluIGluY2x1ZGVkIGJlY2F1c2UgaXQgbWF5IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgc3RlcCB3YXMgdGFrZW4pXG4gICAgICB+aGlkZGVuX3N0ZXBzOiBsaXN0KChzdGVwLCBJZC50KSksIC8vIFRoZSBoaWRkZW4gc3RlcHMgYmV0d2VlbiB0aGUgYWJvdmUgYW5kIHRoZSBjdXJyZW50IG9uZSAoYW4gSWQgaW4gaW5jbHVkZWQgYmVjYXVzZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBzdGVwIHdhcyB0YWtlbilcbiAgICAgIH5jaG9zZW5fc3RlcDogb3B0aW9uKHN0ZXApLCAvLyBUaGUgc3RlcCB0aGF0IHdpbGwgYmUgdGFrZW4gbmV4dFxuICAgICAgfm5leHRfc3RlcHM6IGxpc3QoKGludCwgSWQudCkpLCAvLyBUaGUgb3B0aW9ucyBmb3IgdGhlIG5leHQgc3RlcCwgaWYgaXQgaGFzbid0IGJlZW4gY2hvc2VuIHlldFxuICAgICAgfmVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsXG4gICAgICB+aW5mb21hcDogU3RhdGljcy5NYXAudCxcbiAgICAgIGQ6IERIRXhwLnQsXG4gICAgKVxuICAgIDogREhEb2MudCA9PiB7XG4gIC8vIC8vIHByaW50X2VuZGxpbmUoXCJcIik7XG4gIC8vIC8vIGxldCBfID1cbiAgLy8gLy8gICBMaXN0Lm1hcChcbiAgLy8gLy8gICAgICgoeCwgeSkpID0+IHtcbiAgLy8gLy8gICAgICAgcHJpbnRfZW5kbGluZShJZC5zaG93KHkpKTtcbiAgLy8gLy8gICAgICAgcHJpbnRfZW5kbGluZShzaG93X3N0ZXBfa2luZCh4LmtuZCkpO1xuICAvLyAvLyAgICAgfSxcbiAgLy8gLy8gICAgIGhpZGRlbl9zdGVwcyxcbiAgLy8gLy8gICApO1xuICAvLyBsZXQgXyA9IHByaW50X2VuZGxpbmUoXCI9PT09PT09PT09PT1cIik7XG4gIGxldCByZWMgZ28gPVxuICAgICAgICAgIChcbiAgICAgICAgICAgIGQ6IERIRXhwLnQsXG4gICAgICAgICAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgICAgICAgZW5mb3JjZV9pbmxpbmU6IGJvb2wsXG4gICAgICAgICAgICByZWNlbnRfc3Vic3Q6IGxpc3QoVmFyLnQpLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IERIRG9jLnQgPT4ge1xuICAgIG9wZW4gRG9jO1xuICAgIGxldCByZWNlbnRfc3Vic3QgPVxuICAgICAgc3dpdGNoIChwcmV2aW91c19zdGVwKSB7XG4gICAgICB8IFNvbWUoKHBzLCBpZCkpIHdoZW4gaWQgPT0gREhFeHAucmVwX2lkKGQpID0+XG4gICAgICAgIHN3aXRjaCAocHMua25kLCBESEV4cC50ZXJtX29mKHBzLmRfbG9jKSkge1xuICAgICAgICB8IChGdW5BcCwgQXAoXywgZDIsIF8pKSA9PlxuICAgICAgICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMikpIHtcbiAgICAgICAgICB8IEZ1bihwLCBfLCBfLCBfKSA9PiBESFBhdC5ib3VuZF92YXJzKHApXG4gICAgICAgICAgfCBfID0+IFtdXG4gICAgICAgICAgfVxuICAgICAgICB8IChGdW5BcCwgXykgPT4gW11cbiAgICAgICAgfCAoTGV0QmluZCwgTGV0KHAsIF8sIF8pKSA9PiBESFBhdC5ib3VuZF92YXJzKHApXG4gICAgICAgIHwgKExldEJpbmQsIF8pID0+IFtdXG4gICAgICAgIHwgKEZpeFVud3JhcCwgRml4RihwLCBfLCBfKSkgPT4gREhQYXQuYm91bmRfdmFycyhwKVxuICAgICAgICB8IChGaXhVbndyYXAsIF8pID0+IFtdXG4gICAgICAgIHwgKFR5cEZ1bkFwLCBfKSAvLyBUT0RPOiBDb3VsZCBhbHNvIGRvIHNvbWV0aGluZyBoZXJlIGZvciB0eXBlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBsaWtlIGluIEZ1bkFwP1xuICAgICAgICB8IChJbnZhbGlkU3RlcCwgXylcbiAgICAgICAgfCAoVmFyTG9va3VwLCBfKVxuICAgICAgICB8IChTZXEsIF8pXG4gICAgICAgIHwgKEZ1bkNsb3N1cmUsIF8pXG4gICAgICAgIHwgKEZpeENsb3N1cmUsIF8pXG4gICAgICAgIHwgKERlZmVycmVkQXAsIF8pXG4gICAgICAgIHwgKFVwZGF0ZVRlc3QsIF8pXG4gICAgICAgIHwgKENhc3RUeXBBcCwgXylcbiAgICAgICAgfCAoQ2FzdEFwLCBfKVxuICAgICAgICB8IChCdWlsdGluV3JhcCwgXylcbiAgICAgICAgfCAoVW5PcChfKSwgXylcbiAgICAgICAgfCAoQnVpbHRpbkFwKF8pLCBfKVxuICAgICAgICB8IChCaW5Cb29sT3AoXyksIF8pXG4gICAgICAgIHwgKEJpbkludE9wKF8pLCBfKVxuICAgICAgICB8IChCaW5GbG9hdE9wKF8pLCBfKVxuICAgICAgICB8IChCaW5TdHJpbmdPcChfKSwgXylcbiAgICAgICAgfCAoUHJvamVjdGlvbiwgXylcbiAgICAgICAgfCAoTGlzdENvbnMsIF8pXG4gICAgICAgIHwgKExpc3RDb25jYXQsIF8pXG4gICAgICAgIHwgKENhc2VBcHBseSwgXylcbiAgICAgICAgfCAoQ29tcGxldGVDbG9zdXJlLCBfKVxuICAgICAgICB8IChDb21wbGV0ZUZpbHRlciwgXylcbiAgICAgICAgfCAoQ2FzdCwgXylcbiAgICAgICAgfCAoQ29uZGl0aW9uYWwoXyksIF8pXG4gICAgICAgIHwgKFJlbW92ZVBhcmVucywgXylcbiAgICAgICAgfCAoUmVtb3ZlVHlwZUFsaWFzLCBfKSA9PiBbXSAvLyBNYXliZSB0aGlzIGxhc3Qgb25lIGNvdWxkIGNvdW50IGFzIGEgc3Vic3RpdHV0aW9uP1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gcmVjZW50X3N1YnN0XG4gICAgICB9O1xuICAgIGxldCBnbycgPVxuICAgICAgICAoXG4gICAgICAgICAgfmVudj1lbnYsXG4gICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWVuZm9yY2VfaW5saW5lLFxuICAgICAgICAgIH5yZWNlbnRfc3Vic3Q9cmVjZW50X3N1YnN0LFxuICAgICAgICAgIGQsXG4gICAgICAgICkgPT4ge1xuICAgICAgZ28oZCwgZW52LCBlbmZvcmNlX2lubGluZSwgcmVjZW50X3N1YnN0KTtcbiAgICB9O1xuICAgIGxldCBnb19jYXNlX3J1bGUgPSAoKGRwLCBkY2xhdXNlKSk6IERIRG9jLnQgPT4ge1xuICAgICAgbGV0IGhpZGRlbl9jbGF1c2UgPSBhbm5vdChESEFubm90LkNvbGxhcHNlZCwgdGV4dChVbmljb2RlLmVsbGlwc2lzKSk7XG4gICAgICBsZXQgY2xhdXNlX2RvYyA9XG4gICAgICAgIHNldHRpbmdzLnNob3dfY2FzZV9jbGF1c2VzXG4gICAgICAgICAgPyBjaG9pY2VzKFtcbiAgICAgICAgICAgICAgaGNhdHMoW3NwYWNlKCksIGdvJyh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSwgZGNsYXVzZSldKSxcbiAgICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICAgICAgICAgIGluZGVudF9hbmRfYWxpZ24oZ28nKH5lbmZvcmNlX2lubGluZT1mYWxzZSwgZGNsYXVzZSkpLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgOiBoY2F0KHNwYWNlKCksIGhpZGRlbl9jbGF1c2UpO1xuICAgICAgaGNhdHMoW1xuICAgICAgICBESERvY19jb21tb24uRGVsaW0uYmFyX1J1bGUsXG4gICAgICAgIERIRG9jX1BhdC5tayh+aW5mb21hcCwgfnNob3dfY2FzdHM9c2V0dGluZ3Muc2hvd19jYXN0cywgZHApXG4gICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICksXG4gICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5hcnJvd19SdWxlLFxuICAgICAgICBjbGF1c2VfZG9jLFxuICAgICAgXSk7XG4gICAgfTtcbiAgICBsZXQgZ29fY2FzZSA9IChkc2NydXQsIGRycykgPT5cbiAgICAgIGlmIChlbmZvcmNlX2lubGluZSkge1xuICAgICAgICBmYWlsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgc2NydXRfZG9jID1cbiAgICAgICAgICBjaG9pY2VzKFtcbiAgICAgICAgICAgIGhjYXRzKFtzcGFjZSgpLCBnbycofmVuZm9yY2VfaW5saW5lPXRydWUsIGRzY3J1dCldKSxcbiAgICAgICAgICAgIGhjYXRzKFtcbiAgICAgICAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgICAgICAgIGluZGVudF9hbmRfYWxpZ24oZ28nKH5lbmZvcmNlX2lubGluZT1mYWxzZSwgZHNjcnV0KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgdnNlcHMoXG4gICAgICAgICAgTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgW2hjYXQoREhEb2NfY29tbW9uLkRlbGltLm9wZW5fQ2FzZSwgc2NydXRfZG9jKV0sXG4gICAgICAgICAgICBkcnMgfD4gTGlzdC5tYXAoZ29fY2FzZV9ydWxlKSxcbiAgICAgICAgICAgIFtESERvY19jb21tb24uRGVsaW0uY2xvc2VfQ2FzZV0sXG4gICAgICAgICAgXSksXG4gICAgICAgICk7XG4gICAgICB9O1xuICAgIGxldCBnb19mb3JtYXR0YWJsZSA9ICh+ZW5mb3JjZV9pbmxpbmUpID0+IGdvJyh+ZW5mb3JjZV9pbmxpbmUpO1xuICAgIGxldCBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzID0gKGQxLCBkMikgPT4gKGdvJyhkMSksIGdvJyhkMikpO1xuICAgIGxldCBta19yaWdodF9hc3NvY2lhdGl2ZV9vcGVyYW5kcyA9IChkMSwgZDIpID0+IChnbycoZDEpLCBnbycoZDIpKTtcbiAgICBsZXQgZG9jID0ge1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpKSB7XG4gICAgICB8IFBhcmVucyhkJykgPT4gaHNlcHMoW3RleHQoXCIoXCIpLCBnbycoZCcpLCB0ZXh0KFwiKVwiKV0pXG4gICAgICB8IENsb3N1cmUoZW52JywgZCcpID0+IGdvJyhkJywgfmVudj1lbnYnKVxuICAgICAgfCBGaWx0ZXIoZmx0LCBkJykgPT5cbiAgICAgICAgaWYgKHNldHRpbmdzLnNob3dfc3RlcHBlcl9maWx0ZXJzKSB7XG4gICAgICAgICAgc3dpdGNoIChmbHQpIHtcbiAgICAgICAgICB8IEZpbHRlcih7cGF0LCBhY3R9KSA9PlxuICAgICAgICAgICAgbGV0IGtleXdvcmQgPSBGaWx0ZXJBY3Rpb24uc3RyaW5nX29mX3QoYWN0KTtcbiAgICAgICAgICAgIGxldCBmbHRfZG9jID0gZ29fZm9ybWF0dGFibGUocGF0KTtcbiAgICAgICAgICAgIHZzZXBzKFtcbiAgICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhrZXl3b3JkKSxcbiAgICAgICAgICAgICAgICBmbHRfZG9jXG4gICAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJpblwiKSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIGdvJyhkJyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB8IFJlc2lkdWUoXywgYWN0KSA9PlxuICAgICAgICAgICAgbGV0IGtleXdvcmQgPSBGaWx0ZXJBY3Rpb24uc3RyaW5nX29mX3QoYWN0KTtcbiAgICAgICAgICAgIHZzZXBzKFtESERvY19jb21tb24uRGVsaW0ubWsoa2V5d29yZCksIGdvJyhkJyldKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoZmx0KSB7XG4gICAgICAgICAgfCBSZXNpZHVlKF8pID0+IGdvJyhkJylcbiAgICAgICAgICB8IEZpbHRlcihfKSA9PiBnbycoZCcpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAvKiBIb2xlIGV4cHJlc3Npb25zIG11c3QgYXBwZWFyIHdpdGhpbiBhIGNsb3N1cmUgaW5cbiAgICAgICAgIHRoZSBwb3N0cHJvY2Vzc2VkIHJlc3VsdCAqL1xuICAgICAgfCBFbXB0eUhvbGUgPT5cbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0VtcHR5SG9sZShcbiAgICAgICAgICB+c2VsZWN0ZWQ9U29tZShESEV4cC5yZXBfaWQoZCkpID09IHNlbGVjdGVkX2hvbGVfaW5zdGFuY2UsXG4gICAgICAgICAgZW52LFxuICAgICAgICApXG4gICAgICB8IE11bHRpSG9sZShfZHMpID0+XG4gICAgICAgIC8vZHMgfD4gTGlzdC5tYXAoZ28nKSB8PiBEb2MuaGNhdHNcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0VtcHR5SG9sZShcbiAgICAgICAgICB+c2VsZWN0ZWQ9U29tZShESEV4cC5yZXBfaWQoZCkpID09IHNlbGVjdGVkX2hvbGVfaW5zdGFuY2UsXG4gICAgICAgICAgZW52LFxuICAgICAgICApXG4gICAgICB8IEludmFsaWQodCkgPT4gREhEb2NfY29tbW9uLm1rX0ludmFsaWRUZXh0KHQpXG4gICAgICB8IFZhcih4KSB3aGVuIHNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzID0+IHRleHQoeClcbiAgICAgIHwgVmFyKHgpID0+XG4gICAgICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgICAgIHwgTm9uZSA9PiB0ZXh0KHgpXG4gICAgICAgIHwgU29tZShkJykgPT5cbiAgICAgICAgICBpZiAoTGlzdC5tZW0oeCwgcmVjZW50X3N1YnN0KSkge1xuICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICBnbycofmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIGQpXG4gICAgICAgICAgICAgIHw+IGFubm90KERIQW5ub3QuU3Vic3RpdHV0ZWQpLFxuICAgICAgICAgICAgICBnbycoXG4gICAgICAgICAgICAgICAgfmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksXG4gICAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1MaXN0LmZpbHRlcih1ID0+IHUgIT0geCwgcmVjZW50X3N1YnN0KSxcbiAgICAgICAgICAgICAgICBkJyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnbycofmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIGQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHwgQnVpbHRpbkZ1bihmKSA9PiB0ZXh0KGYpXG4gICAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IERIRG9jX2NvbW1vbi5ta19Db25zdHJ1Y3RvckxpdChuYW1lKVxuICAgICAgfCBCb29sKGIpID0+IERIRG9jX2NvbW1vbi5ta19Cb29sTGl0KGIpXG4gICAgICB8IEludChuKSA9PiBESERvY19jb21tb24ubWtfSW50TGl0KG4pXG4gICAgICB8IEZsb2F0KGYpID0+IERIRG9jX2NvbW1vbi5ta19GbG9hdExpdChmKVxuICAgICAgfCBTdHJpbmcocykgPT4gREhEb2NfY29tbW9uLm1rX1N0cmluZ0xpdChzKVxuICAgICAgfCBUZXN0KGQpID0+IERIRG9jX2NvbW1vbi5ta19UZXN0KGdvJyhkKSlcbiAgICAgIHwgRGVmZXJyYWwoXykgPT4gdGV4dChcIl9cIilcbiAgICAgIHwgU2VxKGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IChnbycoZDEpLCBnbycoZDIpKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX1NlcXVlbmNlKGRvYzEsIGRvYzIpO1xuICAgICAgfCBMaXN0TGl0KGRfbGlzdCkgPT5cbiAgICAgICAgbGV0IG9sID0gZF9saXN0IHw+IExpc3QubWFwKGQgPT4gZ28nKGQpKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX0xpc3RMaXQob2wpO1xuICAgICAgfCBBcChGb3J3YXJkLCBkMSwgZDIpID0+XG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPSAoZ28nKGQxKSwgZ28nKGQyKSk7XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19BcChkb2MxLCBkb2MyKTtcbiAgICAgIHwgRGVmZXJyZWRBcChkMSwgZDIpID0+XG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPSAoZ28nKGQxKSwgZ28nKFR1cGxlKGQyKSB8PiBESEV4cC5mcmVzaCkpO1xuICAgICAgICBESERvY19jb21tb24ubWtfQXAoZG9jMSwgZG9jMik7XG4gICAgICB8IFR5cEFwKGQxLCB0eSkgPT5cbiAgICAgICAgbGV0IGRvYzEgPSBnbycoZDEpO1xuICAgICAgICBsZXQgZG9jMiA9IERIRG9jX1R5cC5tayh+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSwgdHkpO1xuICAgICAgICBESERvY19jb21tb24ubWtfVHlwQXAoZG9jMSwgZG9jMik7XG4gICAgICB8IEFwKFJldmVyc2UsIGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IChnbycoZDEpLCBnbycoZDIpKTtcbiAgICAgICAgREhEb2NfY29tbW9uLm1rX3Jldl9BcChkb2MyLCBkb2MxKTtcbiAgICAgIHwgVW5PcChNZXRhKFVucXVvdGUpLCBkKSA9PiBEb2MuaGNhdHMoW3RleHQoXCIkXCIpLCBnbycoZCldKVxuICAgICAgfCBVbk9wKEJvb2woTm90KSwgZCkgPT4gRG9jLmhjYXRzKFt0ZXh0KFwiIVwiKSwgZ28nKGQpXSlcbiAgICAgIHwgVW5PcChJbnQoTWludXMpLCBkKSA9PiBEb2MuaGNhdHMoW3RleHQoXCItXCIpLCBnbycoZCldKVxuICAgICAgfCBCaW5PcChJbnQob3ApLCBkMSwgZDIpID0+XG4gICAgICAgIC8vIFRPRE8gYXNzdW1lcyBhbGwgYmluIGludCBvcHMgYXJlIGxlZnQgYXNzb2NpYXRpdmVcbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IG1rX2xlZnRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoZDEsIGQyKTtcbiAgICAgICAgaHNlcHMoW2RvYzEsIG1rX2Jpbl9pbnRfb3Aob3ApLCBkb2MyXSk7XG4gICAgICB8IEJpbk9wKEZsb2F0KG9wKSwgZDEsIGQyKSA9PlxuICAgICAgICAvLyBUT0RPIGFzc3VtZXMgYWxsIGJpbiBmbG9hdCBvcHMgYXJlIGxlZnQgYXNzb2NpYXRpdmVcbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IG1rX2xlZnRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoZDEsIGQyKTtcbiAgICAgICAgaHNlcHMoW2RvYzEsIG1rX2Jpbl9mbG9hdF9vcChvcCksIGRvYzJdKTtcbiAgICAgIHwgQmluT3AoU3RyaW5nKG9wKSwgZDEsIGQyKSA9PlxuICAgICAgICAvLyBUT0RPIGFzc3VtZXMgYWxsIGJpbiBzdHJpbmcgb3BzIGFyZSBsZWZ0IGFzc29jaWF0aXZlXG4gICAgICAgIGxldCAoZG9jMSwgZG9jMikgPSBta19sZWZ0X2Fzc29jaWF0aXZlX29wZXJhbmRzKGQxLCBkMik7XG4gICAgICAgIGhzZXBzKFtkb2MxLCBta19iaW5fc3RyaW5nX29wKG9wKSwgZG9jMl0pO1xuICAgICAgfCBDb25zKGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzKGQxLCBkMik7XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19Db25zKGRvYzEsIGRvYzIpO1xuICAgICAgfCBMaXN0Q29uY2F0KGQxLCBkMikgPT5cbiAgICAgICAgbGV0IChkb2MxLCBkb2MyKSA9IG1rX3JpZ2h0X2Fzc29jaWF0aXZlX29wZXJhbmRzKGQxLCBkMik7XG4gICAgICAgIERIRG9jX2NvbW1vbi5ta19MaXN0Q29uY2F0KGRvYzEsIGRvYzIpO1xuICAgICAgfCBCaW5PcChCb29sKG9wKSwgZDEsIGQyKSA9PlxuICAgICAgICBsZXQgKGRvYzEsIGRvYzIpID0gbWtfcmlnaHRfYXNzb2NpYXRpdmVfb3BlcmFuZHMoZDEsIGQyKTtcbiAgICAgICAgaHNlcHMoW2RvYzEsIG1rX2Jpbl9ib29sX29wKG9wKSwgZG9jMl0pO1xuICAgICAgfCBUdXBsZShbXSkgPT4gREhEb2NfY29tbW9uLkRlbGltLnRyaXZcbiAgICAgIHwgVHVwbGUoZHMpID0+IERIRG9jX2NvbW1vbi5ta19UdXBsZShkcyB8PiBMaXN0Lm1hcChkID0+IGdvJyhkKSkpXG4gICAgICB8IE1hdGNoKGRzY3J1dCwgZHJzKSA9PiBnb19jYXNlKGRzY3J1dCwgZHJzKVxuICAgICAgfCBUeUFsaWFzKF8sIF8sIGQpID0+IGdvJyhkKVxuICAgICAgfCBDYXN0KGQsIHQxLCB0Mikgd2hlbiBzZXR0aW5ncy5zaG93X2Nhc3RzID0+XG4gICAgICAgIC8vIFRPRE9bTWF0dF06IFJvbGwgbXVsdGlwbGUgY2FzdHMgaW50byBvbmUgY2FzdFxuICAgICAgICBsZXQgZG9jID0gZ28nKGQpO1xuICAgICAgICBEb2MuKFxuICAgICAgICAgIGhjYXQoXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICBhbm5vdChcbiAgICAgICAgICAgICAgREhBbm5vdC5DYXN0RGVjb3JhdGlvbixcbiAgICAgICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5vcGVuX0Nhc3QsXG4gICAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0MSksXG4gICAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmFycm93X0Nhc3QsXG4gICAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0MiksXG4gICAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmNsb3NlX0Nhc3QsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB8IENhc3QoZCwgXywgXykgPT5cbiAgICAgICAgbGV0IGRvYyA9IGdvJyhkKTtcbiAgICAgICAgZG9jO1xuICAgICAgfCBMZXQoZHAsIGRkZWYsIGRib2R5KSA9PlxuICAgICAgICBpZiAoZW5mb3JjZV9pbmxpbmUpIHtcbiAgICAgICAgICBmYWlsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGJpbmRpbmdzID0gREhQYXQuYm91bmRfdmFycyhkcCk7XG4gICAgICAgICAgbGV0IGRlZl9kb2MgPSBnb19mb3JtYXR0YWJsZShkZGVmKTtcbiAgICAgICAgICB2c2VwcyhbXG4gICAgICAgICAgICBoY2F0cyhbXG4gICAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcImxldFwiKSxcbiAgICAgICAgICAgICAgREhEb2NfUGF0Lm1rKH5pbmZvbWFwLCB+c2hvd19jYXN0cz1zZXR0aW5ncy5zaG93X2Nhc3RzLCBkcClcbiAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZSxcbiAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwiPVwiKSxcbiAgICAgICAgICAgICAgZGVmX2RvY1xuICAgICAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJpblwiKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgZ28nKFxuICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgIH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhiaW5kaW5ncywgZW52KSxcbiAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcih4ID0+ICFMaXN0Lm1lbSh4LCBiaW5kaW5ncyksIHJlY2VudF9zdWJzdCksXG4gICAgICAgICAgICAgIGRib2R5LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgfCBGYWlsZWRDYXN0KGQxLCB0eTEsIHR5MykgPT5cbiAgICAgICAgbGV0IGRfZG9jID0gZ28nKGQxKTtcbiAgICAgICAgbGV0IGNhc3RfZGVjb3JhdGlvbiA9XG4gICAgICAgICAgaGNhdHMoW1xuICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm9wZW5fRmFpbGVkQ2FzdCxcbiAgICAgICAgICAgIGhzZXBzKFtcbiAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0eTEpLFxuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRmFpbGVkQ2FzdCxcbiAgICAgICAgICAgICAgREhEb2NfVHlwLm1rKH5lbmZvcmNlX2lubGluZT10cnVlLCB0eTMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uY2xvc2VfRmFpbGVkQ2FzdCxcbiAgICAgICAgICBdKVxuICAgICAgICAgIHw+IGFubm90KERIQW5ub3QuRmFpbGVkQ2FzdERlY29yYXRpb24pO1xuICAgICAgICBoY2F0cyhbZF9kb2MsIGNhc3RfZGVjb3JhdGlvbl0pO1xuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgPT5cbiAgICAgICAgbGV0IGRfZG9jID0gZ28nKGQpO1xuICAgICAgICBsZXQgZGVjb3JhdGlvbiA9XG4gICAgICAgICAgRG9jLnRleHQoSW52YWxpZE9wZXJhdGlvbkVycm9yLmVycl9tc2coZXJyKSlcbiAgICAgICAgICB8PiBhbm5vdChESEFubm90Lk9wZXJhdGlvbkVycm9yKGVycikpO1xuICAgICAgICBoY2F0cyhbZF9kb2MsIGRlY29yYXRpb25dKTtcbiAgICAgIHwgSWYoYywgZDEsIGQyKSA9PlxuICAgICAgICBsZXQgY19kb2MgPSBnb19mb3JtYXR0YWJsZShjKTtcbiAgICAgICAgbGV0IGQxX2RvYyA9IGdvX2Zvcm1hdHRhYmxlKGQxKTtcbiAgICAgICAgbGV0IGQyX2RvYyA9IGdvX2Zvcm1hdHRhYmxlKGQyKTtcbiAgICAgICAgaGNhdHMoW1xuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcIihcIiksXG4gICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwiaWZcIiksXG4gICAgICAgICAgY19kb2NcbiAgICAgICAgICB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKFxuICAgICAgICAgICAgICAgfmlubGluZV9wYWRkaW5nPShzcGFjZSgpLCBzcGFjZSgpKSxcbiAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICAgICAgICAgICApLFxuICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5tayhcInRoZW5cIiksXG4gICAgICAgICAgZDFfZG9jXG4gICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgIH5pbmxpbmVfcGFkZGluZz0oc3BhY2UoKSwgc3BhY2UoKSksXG4gICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgKSxcbiAgICAgICAgICBESERvY19jb21tb24uRGVsaW0ubWsoXCJlbHNlXCIpLFxuICAgICAgICAgIGQyX2RvY1xuICAgICAgICAgIHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQoXG4gICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIGVtcHR5KCkpLFxuICAgICAgICAgICAgICAgfmVuZm9yY2VfaW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgICksXG4gICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLm1rKFwiKVwiKSxcbiAgICAgICAgXSk7XG4gICAgICB8IEZ1bihkcCwgZCwgU29tZShlbnYnKSwgcykgPT5cbiAgICAgICAgaWYgKHNldHRpbmdzLnNob3dfZm5fYm9kaWVzKSB7XG4gICAgICAgICAgbGV0IGJpbmRpbmdzID0gREhQYXQuYm91bmRfdmFycyhkcCk7XG4gICAgICAgICAgbGV0IGJvZHlfZG9jID1cbiAgICAgICAgICAgIGdvX2Zvcm1hdHRhYmxlKFxuICAgICAgICAgICAgICBDbG9zdXJlKFxuICAgICAgICAgICAgICAgIENsb3N1cmVFbnZpcm9ubWVudC53aXRob3V0X2tleXMoT3B0aW9uLnRvX2xpc3QocyksIGVudicpLFxuICAgICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfD4gREhFeHAuZnJlc2gsXG4gICAgICAgICAgICAgIH5lbnY9XG4gICAgICAgICAgICAgICAgQ2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhcbiAgICAgICAgICAgICAgICAgIERIUGF0LmJvdW5kX3ZhcnMoZHApIEAgT3B0aW9uLnRvX2xpc3QocyksXG4gICAgICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcih4ID0+ICFMaXN0Lm1lbSh4LCBiaW5kaW5ncyksIHJlY2VudF9zdWJzdCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGhjYXRzKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uc3ltX0Z1bixcbiAgICAgICAgICAgICAgREhEb2NfUGF0Lm1rKH5pbmZvbWFwLCB+c2hvd19jYXN0cz1zZXR0aW5ncy5zaG93X2Nhc3RzLCBkcClcbiAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZSxcbiAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIEAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRnVuLFxuICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICBib2R5X2RvYyB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYW5ub3QoXG4gICAgICAgICAgICBESEFubm90LkNvbGxhcHNlZCxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIHN3aXRjaCAocykge1xuICAgICAgICAgICAgICB8IE5vbmUgPT4gXCI8YW5vbiBmbj5cIlxuICAgICAgICAgICAgICB8IFNvbWUobmFtZSlcbiAgICAgICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAgICAgIXNldHRpbmdzLnNob3dfZml4cG9pbnRzXG4gICAgICAgICAgICAgICAgICAgICYmIFN0cmluZy5lbmRzX3dpdGgofnN1ZmZpeD1cIitcIiwgbmFtZSkgPT5cbiAgICAgICAgICAgICAgICBcIjxcIiArKyBTdHJpbmcuc3ViKG5hbWUsIDAsIFN0cmluZy5sZW5ndGgobmFtZSkgLSAxKSArKyBcIj5cIlxuICAgICAgICAgICAgICB8IFNvbWUobmFtZSkgPT4gXCI8XCIgKysgbmFtZSArKyBcIj5cIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB8IEZ1bihkcCwgZGJvZHksIE5vbmUsIHMpID0+XG4gICAgICAgIGlmIChzZXR0aW5ncy5zaG93X2ZuX2JvZGllcykge1xuICAgICAgICAgIGxldCBiaW5kaW5ncyA9IERIUGF0LmJvdW5kX3ZhcnMoZHApO1xuICAgICAgICAgIGxldCBib2R5X2RvYyA9XG4gICAgICAgICAgICBnb19mb3JtYXR0YWJsZShcbiAgICAgICAgICAgICAgZGJvZHksXG4gICAgICAgICAgICAgIH5lbnY9Q2xvc3VyZUVudmlyb25tZW50LndpdGhvdXRfa2V5cyhiaW5kaW5ncywgZW52KSxcbiAgICAgICAgICAgICAgfnJlY2VudF9zdWJzdD1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcih4ID0+ICFMaXN0Lm1lbSh4LCBiaW5kaW5ncyksIHJlY2VudF9zdWJzdCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGhjYXRzKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uc3ltX0Z1bixcbiAgICAgICAgICAgICAgREhEb2NfUGF0Lm1rKH5pbmZvbWFwLCB+c2hvd19jYXN0cz1zZXR0aW5ncy5zaG93X2Nhc3RzLCBkcClcbiAgICAgICAgICAgICAgfD4gREhEb2NfY29tbW9uLnBhZF9jaGlsZChcbiAgICAgICAgICAgICAgICAgICB+aW5saW5lX3BhZGRpbmc9KHNwYWNlKCksIHNwYWNlKCkpLFxuICAgICAgICAgICAgICAgICAgIH5lbmZvcmNlX2lubGluZSxcbiAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIEAgW1xuICAgICAgICAgICAgICBESERvY19jb21tb24uRGVsaW0uYXJyb3dfRnVuLFxuICAgICAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgICAgICBib2R5X2RvYyB8PiBESERvY19jb21tb24ucGFkX2NoaWxkKH5lbmZvcmNlX2lubGluZSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpdGNoIChzKSB7XG4gICAgICAgICAgfCBOb25lID0+IGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPGFub24gZm4+XCIpKVxuICAgICAgICAgIHwgU29tZShuYW1lKSA9PiBhbm5vdChESEFubm90LkNvbGxhcHNlZCwgdGV4dChcIjxcIiArKyBuYW1lICsrIFwiPlwiKSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB8IFR5cEZ1bihfdHBhdCwgX2Rib2R5LCBzKSA9PlxuICAgICAgICAvKiBzYW1lIGRpc3BsYXkgYXMgd2l0aCBGdW4gYnV0IHdpdGggYW5vbiB0eXBmbiBpbiB0aGUgbmFtZWxlc3MgY2FzZS4gKi9cbiAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgIHN3aXRjaCAocykge1xuICAgICAgICAgIHwgTm9uZSA9PiBcImFub24gdHlwZm5cIlxuICAgICAgICAgIHwgU29tZShuYW1lKVxuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgIXNldHRpbmdzLnNob3dfZml4cG9pbnRzXG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLmVuZHNfd2l0aCh+c3VmZml4PVwiK1wiLCBuYW1lKSA9PlxuICAgICAgICAgICAgU3RyaW5nLnN1YihuYW1lLCAwLCBTdHJpbmcubGVuZ3RoKG5hbWUpIC0gMSlcbiAgICAgICAgICB8IFNvbWUobmFtZSkgPT4gbmFtZVxuICAgICAgICAgIH07XG4gICAgICAgIGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPFwiICsrIG5hbWUgKysgXCI+XCIpKTtcbiAgICAgIHwgRml4RihkcCwgZGJvZHksIF8pXG4gICAgICAgICAgd2hlbiBzZXR0aW5ncy5zaG93X2ZuX2JvZGllcyAmJiBzZXR0aW5ncy5zaG93X2ZpeHBvaW50cyA9PlxuICAgICAgICBsZXQgZG9jX2JvZHkgPVxuICAgICAgICAgIGdvX2Zvcm1hdHRhYmxlKFxuICAgICAgICAgICAgZGJvZHksXG4gICAgICAgICAgICB+ZW52PUNsb3N1cmVFbnZpcm9ubWVudC53aXRob3V0X2tleXMoREhQYXQuYm91bmRfdmFycyhkcCksIGVudiksXG4gICAgICAgICAgKTtcbiAgICAgICAgaGNhdHMoXG4gICAgICAgICAgW1xuICAgICAgICAgICAgREhEb2NfY29tbW9uLkRlbGltLmZpeF9GaXhGLFxuICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgIERIRG9jX1BhdC5tayhcbiAgICAgICAgICAgICAgfmluZm9tYXAsXG4gICAgICAgICAgICAgIGRwLFxuICAgICAgICAgICAgICB+c2hvd19jYXN0cz1zZXR0aW5ncy5zaG93X2Nhc3RzLFxuICAgICAgICAgICAgICB+ZW5mb3JjZV9pbmxpbmU9dHJ1ZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXVxuICAgICAgICAgIEAgW1xuICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgIERIRG9jX2NvbW1vbi5EZWxpbS5hcnJvd19GaXhGLFxuICAgICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICAgIGRvY19ib2R5IHw+IERIRG9jX2NvbW1vbi5wYWRfY2hpbGQofmVuZm9yY2VfaW5saW5lKSxcbiAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgfCBGaXhGKF8sIHt0ZXJtOiBGdW4oXywgXywgXywgU29tZSh4KSksIF99LCBfKSA9PlxuICAgICAgICBpZiAoU3RyaW5nLmVuZHNfd2l0aCh+c3VmZml4PVwiK1wiLCB4KSkge1xuICAgICAgICAgIGFubm90KFxuICAgICAgICAgICAgREhBbm5vdC5Db2xsYXBzZWQsXG4gICAgICAgICAgICB0ZXh0KFwiPFwiICsrIFN0cmluZy5zdWIoeCwgMCwgU3RyaW5nLmxlbmd0aCh4KSAtIDEpICsrIFwiPlwiKSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPFwiICsrIHggKysgXCI+XCIpKTtcbiAgICAgICAgfVxuICAgICAgfCBGaXhGKF8sIF8sIF8pID0+IGFubm90KERIQW5ub3QuQ29sbGFwc2VkLCB0ZXh0KFwiPGFub24gZm4+XCIpKVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBzdGVwcGFibGUgPVxuICAgICAgbmV4dF9zdGVwcyB8PiBMaXN0LmZpbmRfb3B0KCgoXywgaWQpKSA9PiBpZCA9PSBESEV4cC5yZXBfaWQoZCkpO1xuICAgIGxldCBzdGVwcGVkID1cbiAgICAgIGNob3Nlbl9zdGVwXG4gICAgICB8PiBPcHRpb24ubWFwKHggPT4gREhFeHAucmVwX2lkKHguZF9sb2MpID09IERIRXhwLnJlcF9pZChkKSlcbiAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1mYWxzZSk7XG4gICAgbGV0IHN1YnN0aXR1dGlvbiA9XG4gICAgICBoaWRkZW5fc3RlcHNcbiAgICAgIHw+IExpc3QuZmluZF9vcHQoKChzdGVwLCBpZCkpID0+XG4gICAgICAgICAgIHN0ZXAua25kID09IFZhckxvb2t1cFxuICAgICAgICAgICAvLyBIQUNLW01hdHRdOiB0byBwcmV2ZW50IHN1YnN0aXR1dGlvbnMgaGlkaW5nIGluc2lkZSBjYXN0c1xuICAgICAgICAgICAmJiBpZCA9PSBESEV4cC5yZXBfaWQoZClcbiAgICAgICAgICk7XG4gICAgbGV0IGRvYyA9XG4gICAgICBzd2l0Y2ggKHN1YnN0aXR1dGlvbikge1xuICAgICAgfCBTb21lKChzdGVwLCBfKSkgPT5cbiAgICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKHN0ZXAuZF9sb2MpKSB7XG4gICAgICAgIHwgVmFyKHYpIHdoZW4gTGlzdC5tZW0odiwgcmVjZW50X3N1YnN0KSA9PlxuICAgICAgICAgIGhjYXRzKFt0ZXh0KHYpIHw+IGFubm90KERIQW5ub3QuU3Vic3RpdHV0ZWQpLCBkb2NdKVxuICAgICAgICB8IF8gPT4gZG9jXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PiBkb2NcbiAgICAgIH07XG4gICAgbGV0IGRvYyA9XG4gICAgICBpZiAoc3RlcHBlZCkge1xuICAgICAgICBhbm5vdChESEFubm90LlN0ZXBwZWQsIGRvYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHN0ZXBwYWJsZSkge1xuICAgICAgICB8IFNvbWUoKGksIF8pKSA9PiBhbm5vdChESEFubm90LlN0ZXBwYWJsZShpKSwgZG9jKVxuICAgICAgICB8IE5vbmUgPT4gZG9jXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIGRvYztcbiAgfTtcbiAgZ28oZCwgZW52LCBlbmZvcmNlX2lubGluZSwgW10pO1xufTtcbiIsIm9wZW4gUHJldHR5O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBMYXlvdXQudChESEFubm90LnQpO1xuIiwibW9kdWxlIE1lYXN1cmVkUG9zaXRpb24gPSBQcmV0dHkuTWVhc3VyZWRQb3NpdGlvbjtcbm1vZHVsZSBNZWFzdXJlZExheW91dCA9IFByZXR0eS5NZWFzdXJlZExheW91dDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gTWVhc3VyZWRMYXlvdXQudChESEFubm90LnQpO1xudHlwZSB3aXRoX29mZnNldCA9IE1lYXN1cmVkTGF5b3V0LndpdGhfb2Zmc2V0KERIQW5ub3QudCk7XG5pbmNsdWRlIE1lYXN1cmVkTGF5b3V0Lk1ha2UoV2Vha01hcCk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xub3BlbiBQcmV0dHk7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IHdpdGhfY2xzID0gY2xzID0+IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzZXMoW2Nsc10pKTtcblxubGV0IHZpZXdfb2ZfbGF5b3V0ID1cbiAgICAofmluamVjdCwgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfnJlc3VsdF9rZXksIGw6IERITGF5b3V0LnQpXG4gICAgOiBOb2RlLnQgPT4ge1xuICBsZXQgY29ybmVyX3JhZGlpID0gRGVjb3JhdGlvbl9jb21tb24uY29ybmVyX3JhZGlpKGZvbnRfbWV0cmljcyk7XG4gIGxldCAodGV4dCwgZGVjb3JhdGlvbnMpID1cbiAgICBESE1lYXN1cmVkTGF5b3V0Lm1rKGwpXG4gICAgfD4gTWVhc3VyZWRMYXlvdXQucG9zX2ZvbGQoXG4gICAgICAgICB+bGluZWJyZWFrPV8gPT4gKFtOb2RlLmJyKCldLCBbXSksXG4gICAgICAgICB+dGV4dD0oXywgcykgPT4gKFtOb2RlLnRleHQocyldLCBbXSksXG4gICAgICAgICB+YWxpZ249XG4gICAgICAgICAgIChfLCAodHh0LCBkcykpID0+XG4gICAgICAgICAgICAgKFtOb2RlLmRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiQWxpZ25cIl0pLCB0eHQpXSwgZHMpLFxuICAgICAgICAgfmNhdD0oXywgKHR4dDEsIGRzMSksICh0eHQyLCBkczIpKSA9PiAodHh0MSBAIHR4dDIsIGRzMSBAIGRzMiksXG4gICAgICAgICB+YW5ub3Q9XG4gICAgICAgICAgICh+Z28sIH5pbmRlbnQsIH5zdGFydCwgYW5ub3Q6IERIQW5ub3QudCwgbSkgPT4ge1xuICAgICAgICAgICAgIGxldCAodHh0LCBkcykgPSBnbyhtKTtcbiAgICAgICAgICAgICBzd2l0Y2ggKGFubm90KSB7XG4gICAgICAgICAgICAgfCBTdGVwcGFibGUob2JqKSA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLmNsYXNzXyhcInN0ZXBwYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlN0ZXBwZXJBY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGVwRm9yd2FyZChvYmopLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgdHh0LFxuICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgU3RlcHBlZCA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4ofmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInN0ZXBwZWRcIildKSwgdHh0KSxcbiAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgZHMsXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBTdWJzdGl0dXRlZCA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NfKFwic3Vic3RpdHV0ZWRcIildKSxcbiAgICAgICAgICAgICAgICAgICAgIHR4dCxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IFN0ZXAoXylcbiAgICAgICAgICAgICB8IFRlcm0gPT4gKHR4dCwgZHMpXG4gICAgICAgICAgICAgfCBDb2xsYXBzZWQgPT4gKFt3aXRoX2NscyhcIkNvbGxhcHNlZFwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBIb2xlTGFiZWwgPT4gKFt3aXRoX2NscyhcIkhvbGVMYWJlbFwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBEZWxpbSA9PiAoW3dpdGhfY2xzKFwiY29kZS1kZWxpbVwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBFbXB0eUhvbGUoc2VsZWN0ZWQsIF9pbnN0KSA9PiAoXG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFbXB0eUhvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlbGVjdGVkID8gW1wic2VsZWN0ZWRcIl0gOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkb20uRWZmZWN0Lk1hbnkoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZG9tLkVmZmVjdC5TdG9wX3Byb3BhZ2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2luamVjdChNb2RlbEFjdGlvbi5TZWxlY3RIb2xlSW5zdGFuY2UoaW5zdCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgIHR4dCxcbiAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IEZhaWxlZENhc3REZWxpbSA9PiAoW3dpdGhfY2xzKFwiRmFpbGVkQ2FzdERlbGltXCIsIHR4dCldLCBkcylcbiAgICAgICAgICAgICB8IEZhaWxlZENhc3REZWNvcmF0aW9uID0+IChcbiAgICAgICAgICAgICAgICAgW3dpdGhfY2xzKFwiRmFpbGVkQ2FzdERlY29yYXRpb25cIiwgdHh0KV0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgQ2FzdERlY29yYXRpb24gPT4gKFt3aXRoX2NscyhcIkNhc3REZWNvcmF0aW9uXCIsIHR4dCldLCBkcylcbiAgICAgICAgICAgICB8IE9wZXJhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8gfCBJbnZhbGlkT2ZTdHJpbmcgfCBJbmRleE91dE9mQm91bmRzLFxuICAgICAgICAgICAgICAgKSA9PiAoXG4gICAgICAgICAgICAgICAgIFt3aXRoX2NscyhcIk9wZXJhdGlvbkVycm9yXCIsIHR4dCldLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IE9wZXJhdGlvbkVycm9yKE5lZ2F0aXZlRXhwb25lbnQpID0+IChcbiAgICAgICAgICAgICAgICAgW3dpdGhfY2xzKFwiT3BlcmF0aW9uRXJyb3JcIiwgdHh0KV0sXG4gICAgICAgICAgICAgICAgIGRzLFxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHwgT3BlcmF0aW9uRXJyb3IoT3V0T2ZGdWVsKSA9PiAoXG4gICAgICAgICAgICAgICAgIFt3aXRoX2NscyhcIk9wZXJhdGlvbkVycm9yXCIsIHR4dCldLFxuICAgICAgICAgICAgICAgICBkcyxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IFZhckhvbGUoXykgPT4gKFt3aXRoX2NscyhcIkluVmFySG9sZVwiLCB0eHQpXSwgZHMpXG4gICAgICAgICAgICAgfCBOb25FbXB0eUhvbGVcbiAgICAgICAgICAgICB8IEluY29uc2lzdGVudEJyYW5jaGVzKF8pXG4gICAgICAgICAgICAgfCBJbnZhbGlkID0+XG4gICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gc3RhcnQuY29sIC0gaW5kZW50O1xuICAgICAgICAgICAgICAgbGV0IGRlY29yYXRpb24gPVxuICAgICAgICAgICAgICAgICBEZWNvcmF0aW9uX2NvbW1vbi5jb250YWluZXIoXG4gICAgICAgICAgICAgICAgICAgfmNvbnRhaW5lcl90eXBlPVN2ZyxcbiAgICAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgIH5oZWlnaHQ9TWVhc3VyZWRMYXlvdXQuaGVpZ2h0KG0pLFxuICAgICAgICAgICAgICAgICAgIH53aWR0aD1NZWFzdXJlZExheW91dC53aWR0aCh+b2Zmc2V0LCBtKSxcbiAgICAgICAgICAgICAgICAgICB+b3JpZ2luPU1lYXN1cmVkUG9zaXRpb24ue3Jvdzogc3RhcnQucm93LCBjb2w6IGluZGVudH0sXG4gICAgICAgICAgICAgICAgICAgfmNscz1cImVyci1ob2xlXCIsXG4gICAgICAgICAgICAgICAgICAgW0RIRGVjb3JhdGlvbi5FcnJIb2xlLnZpZXcofmNvcm5lcl9yYWRpaSwgKG9mZnNldCwgbSkpXSxcbiAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICh0eHQsIFtkZWNvcmF0aW9uLCAuLi5kc10pO1xuICAgICAgICAgICAgIH07XG4gICAgICAgICAgIH0sXG4gICAgICAgKTtcbiAgTm9kZS5kaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcIkRIQ29kZVwiXSksXG4gICAgW3dpdGhfY2xzKFwiY29kZVwiLCB0ZXh0KSwgLi4uZGVjb3JhdGlvbnNdLFxuICApO1xufTtcblxubGV0IF92aWV3ID1cbiAgICAoXG4gICAgICB+bG9ja2VkIGFzIF89ZmFsc2UsIC8vIE5PVEU6IFdoZW4gd2UgYWRkIG1vdXNlIGV2ZW50cyB0byB0aGlzLCBpZ25vcmUgdGhlbSBpZiBsb2NrZWRcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQsXG4gICAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZTogb3B0aW9uKElkLnQpLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH53aWR0aDogaW50LFxuICAgICAgfnBvcz0wLFxuICAgICAgfnByZXZpb3VzX3N0ZXA6IG9wdGlvbigoRXZhbHVhdG9yU3RlcC5zdGVwLCBJZC50KSk9Tm9uZSwgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhYm92ZSB0aGlzIG9uZVxuICAgICAgfmhpZGRlbl9zdGVwczogbGlzdCgoRXZhbHVhdG9yU3RlcC5zdGVwLCBJZC50KSk9W10sIC8vIFRoZSBoaWRkZW4gc3RlcHMgYmV0d2VlbiB0aGUgYWJvdmUgYW5kIHRoZSBjdXJyZW50IG9uZVxuICAgICAgfmNob3Nlbl9zdGVwOiBvcHRpb24oRXZhbHVhdG9yU3RlcC5zdGVwKT1Ob25lLCAvLyBUaGUgc3RlcCB0aGF0IHdpbGwgYmUgdGFrZW4gbmV4dFxuICAgICAgfm5leHRfc3RlcHM6IGxpc3QoKGludCwgSWQudCkpPVtdLFxuICAgICAgfnJlc3VsdF9rZXk6IHN0cmluZyxcbiAgICAgIH5pbmZvbWFwLFxuICAgICAgZDogREhFeHAudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBESERvY19FeHAubWsoXG4gICAgfnByZXZpb3VzX3N0ZXAsXG4gICAgfmhpZGRlbl9zdGVwcyxcbiAgICB+Y2hvc2VuX3N0ZXAsXG4gICAgfm5leHRfc3RlcHMsXG4gICAgfmVudj1DbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksXG4gICAgfnNldHRpbmdzLFxuICAgIH5lbmZvcmNlX2lubGluZT1mYWxzZSxcbiAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZSxcbiAgICB+aW5mb21hcCxcbiAgICBkLFxuICApXG4gIHw+IExheW91dE9mRG9jLmxheW91dF9vZl9kb2MofndpZHRoLCB+cG9zKVxuICB8PiBPcHRVdGlsLmdldCgoKSA9PlxuICAgICAgIGZhaWx3aXRoKFwidW5pbXBsZW1lbnRlZDogdmlld19vZl9kaGV4cCBvbiBsYXlvdXQgZmFpbHVyZVwiKVxuICAgICApXG4gIHw+IHZpZXdfb2ZfbGF5b3V0KH5pbmplY3QsIH5mb250X21ldHJpY3MsIH5yZXN1bHRfa2V5KTtcbn07XG5cbnR5cGUgZm9udF9tZXRyaWNzID0gRm9udE1ldHJpY3MudDtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5sb2NrZWQgYXMgXz1mYWxzZSwgLy8gTk9URTogV2hlbiB3ZSBhZGQgbW91c2UgZXZlbnRzIHRvIHRoaXMsIGlnbm9yZSB0aGVtIGlmIGxvY2tlZFxuICAgICAgfmluamVjdCBhcyBfLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2UgYXMgXzogb3B0aW9uKElkLnQpLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH53aWR0aCBhcyBfOiBpbnQsXG4gICAgICB+cG9zIGFzIF89MCxcbiAgICAgIH5wcmV2aW91c19zdGVwIGFzIF86IG9wdGlvbigoRXZhbHVhdG9yU3RlcC5zdGVwLCBJZC50KSk9Tm9uZSwgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhYm92ZSB0aGlzIG9uZVxuICAgICAgfmhpZGRlbl9zdGVwcyBhcyBfOiBsaXN0KChFdmFsdWF0b3JTdGVwLnN0ZXAsIElkLnQpKT1bXSwgLy8gVGhlIGhpZGRlbiBzdGVwcyBiZXR3ZWVuIHRoZSBhYm92ZSBhbmQgdGhlIGN1cnJlbnQgb25lXG4gICAgICB+Y2hvc2VuX3N0ZXAgYXMgXzogb3B0aW9uKEV2YWx1YXRvclN0ZXAuc3RlcCk9Tm9uZSwgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIHRha2VuIG5leHRcbiAgICAgIH5uZXh0X3N0ZXBzIGFzIF86IGxpc3QoKGludCwgSWQudCkpPVtdLFxuICAgICAgfnJlc3VsdF9rZXk6IHN0cmluZyxcbiAgICAgIH5pbmZvbWFwIGFzIF8sXG4gICAgICBkOiBESEV4cC50LFxuICAgICkgPT4ge1xuICBsZXQgcGFyZW50aGVzaXplZCA9IEV4cFRvU2VnbWVudC5wYXJlbnRoZXNpemUoZCk7XG4gIGxldCBvcHRpb25zID0gRXhwVG9TZWdtZW50LmV4cF90b19wcmV0dHkofmlubGluZT1mYWxzZSwgcGFyZW50aGVzaXplZCk7XG4gIGxldCBvcHRpb24gPSBQcmV0dHlTZWdtZW50LnNlbGVjdChvcHRpb25zKTtcbiAgbGV0IGVkaXRvciA9IEVkaXRvci5pbml0KH5yZWFkX29ubHk9dHJ1ZSwgWmlwcGVyLnVuemlwKG9wdGlvbikpO1xuICBsZXQgY29kZV90ZXh0X3ZpZXcgPVxuICAgIENvZGUudmlldyh+c29ydD1Tb3J0LnJvb3QsIH5mb250X21ldHJpY3MsIH5zZXR0aW5ncywgZWRpdG9yKTtcbiAgbGV0IGNvZGVfdmlldyA9XG4gICAgTm9kZS5kaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtBdHRyLmlkKHJlc3VsdF9rZXkpLCBBdHRyLmNsYXNzZXMoW1wiY29kZS1jb250YWluZXJcIl0pXSksXG4gICAgICBbY29kZV90ZXh0X3ZpZXddLFxuICAgICk7XG4gIGNvZGVfdmlldztcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5tb2R1bGUgVGVzdFN0YXR1cyA9IEhhejNsY29yZS5UZXN0U3RhdHVzO1xubW9kdWxlIFRlc3RNYXAgPSBIYXozbGNvcmUuVGVzdE1hcDtcbm1vZHVsZSBUZXN0UmVzdWx0cyA9IEhhejNsY29yZS5UZXN0UmVzdWx0cztcbm1vZHVsZSBJbnRlcmZhY2UgPSBIYXozbGNvcmUuSW50ZXJmYWNlO1xuXG5sZXQgdGVzdF9pbnN0YW5jZV92aWV3ID1cbiAgICAoXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5pbmZvbWFwLFxuICAgICAgKGQsIHN0YXR1cyk6IFRlc3RNYXAuaW5zdGFuY2VfcmVwb3J0LFxuICAgICkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtjbHNzKFtcInRlc3QtaW5zdGFuY2VcIiwgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKV0pXSksXG4gICAgW1xuICAgICAgREhDb2RlLnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfnNlbGVjdGVkX2hvbGVfaW5zdGFuY2U9Tm9uZSxcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfndpZHRoPTQwLFxuICAgICAgICB+cmVzdWx0X2tleT1cIlwiLFxuICAgICAgICB+aW5mb21hcCxcbiAgICAgICAgZCxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcblxubGV0IGp1bXBfdG9fdGVzdCA9ICh+aW5qZWN0LCBwb3MsIGlkLCBfKSA9PiB7XG4gIGxldCBlZmZlY3QxID0gaW5qZWN0KFVwZGF0ZS5NYWtlQWN0aXZlKEV4ZXJjaXNlcyhwb3MsIE1haW5FZGl0b3IpKSk7XG4gIGxldCBlZmZlY3QyID0gaW5qZWN0KFVwZGF0ZS5QZXJmb3JtQWN0aW9uKEp1bXAoVGlsZUlkKGlkKSkpKTtcbiAgRWZmZWN0LmJpbmQoZWZmZWN0MSwgfmY9X3Jlc3VsdDEgPT4gZWZmZWN0Mik7XG59O1xuXG5sZXQgdGVzdF9yZXBvcnRfdmlldyA9XG4gICAgKFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfmluamVjdCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+ZGVzY3JpcHRpb246IG9wdGlvbihzdHJpbmcpPU5vbmUsXG4gICAgICB+aW5mb21hcCxcbiAgICAgIGk6IGludCxcbiAgICAgIChpZCwgaW5zdGFuY2VfcmVwb3J0cyk6IFRlc3RNYXAucmVwb3J0LFxuICAgICkgPT4ge1xuICBsZXQgc3RhdHVzID1cbiAgICBpbnN0YW5jZV9yZXBvcnRzIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzIHw+IFRlc3RTdGF0dXMudG9fc3RyaW5nO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzXyhcInRlc3QtcmVwb3J0XCIpLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGp1bXBfdG9fdGVzdCh+aW5qZWN0LCBZb3VyVGVzdHNUZXN0aW5nLCBpZCkpLFxuICAgICAgXSksXG4gICAgW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1jbHNzKFtcInRlc3QtaWRcIiwgXCJUZXN0XCIgKysgc3RhdHVzXSksXG4gICAgICAgIC8vIG5vdGU6IHByaW50cyBsZXhpY2FsIGluZGV4LCBub3QgaWRcbiAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpICsgMSkpXSxcbiAgICAgICksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnN0YW5jZXNcIiksXG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgIHRlc3RfaW5zdGFuY2Vfdmlldyh+aW5mb21hcCwgfnNldHRpbmdzLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzKSxcbiAgICAgICAgICBpbnN0YW5jZV9yZXBvcnRzLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShkKSA9PiBbZGl2KH5hdHRyPWNsc3MoW1widGVzdC1kZXNjcmlwdGlvblwiXSksIFt0ZXh0KGQpXSldXG4gICAgICB9XG4gICAgKSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X3JlcG9ydHNfdmlldyA9XG4gICAgKFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfmluamVjdCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+aW5mb21hcCxcbiAgICAgIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICApID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInBhbmVsLWJvZHlcIiwgXCJ0ZXN0LXJlcG9ydHNcIl0pLFxuICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlcG9ydCBhdmFpbGFibGUuXCIpXVxuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChpLCByKSA9PlxuICAgICAgICAgIHRlc3RfcmVwb3J0X3ZpZXcoXG4gICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5pbmZvbWFwLFxuICAgICAgICAgICAgfmRlc2NyaXB0aW9uPUxpc3QubnRoX29wdCh0ZXN0X3Jlc3VsdHMuZGVzY3JpcHRpb25zLCBpKSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICByLFxuICAgICAgICAgICksXG4gICAgICAgIHRlc3RfcmVzdWx0cy50ZXN0X21hcCxcbiAgICAgIClcbiAgICB9LFxuICApO1xuXG5sZXQgdGVzdF9iYXJfc2VnbWVudCA9ICh+aW5qZWN0LCBwb3MsIChpZCwgcmVwb3J0cykpID0+IHtcbiAgbGV0IHN0YXR1cyA9IHJlcG9ydHMgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMgfD4gVGVzdFN0YXR1cy50b19zdHJpbmc7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsc3MoW1wic2VnbWVudFwiLCBzdGF0dXNdKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhqdW1wX3RvX3Rlc3QofmluamVjdCwgcG9zLCBpZCkpLFxuICAgICAgXSksXG4gICAgW10sXG4gICk7XG59O1xuXG5sZXQgdGVzdF9iYXIgPSAofmluamVjdCwgfnRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCwgcG9zKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWJhclwiKSxcbiAgICBMaXN0Lm1hcCh0ZXN0X2Jhcl9zZWdtZW50KH5pbmplY3QsIHBvcyksIHRlc3RfcmVzdWx0cy50ZXN0X21hcCksXG4gICk7XG5cbi8vIHJlc3VsdF9zdW1tYXJ5X3N0ciBhbmQgdGVzdF9zdW1tYXJ5X3N0ciBoYXZlIGJlZW4gbW92ZWQgdG8gaGF6M2xjb3JlL1Rlc3RSZXN1bHRzLnJlXG5cbmxldCBwZXJjZW50X3ZpZXcgPSAobjogaW50LCBwOiBpbnQpOiBOb2RlLnQgPT4ge1xuICBsZXQgcGVyY2VudGFnZSA9XG4gICAgbiA9PSAwID8gMTAwLiA6IDEwMC4gKi4gZmxvYXRfb2ZfaW50KHApIC8uIGZsb2F0X29mX2ludChuKTtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1widGVzdC1wZXJjZW50XCIsIG4gPT0gcCA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCJdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMGYlJVwiLCBwZXJjZW50YWdlKSldLFxuICApO1xufTtcblxubGV0IHRlc3RfcGVyY2VudGFnZSA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpOiBOb2RlLnQgPT5cbiAgcGVyY2VudF92aWV3KHRlc3RfcmVzdWx0cy50b3RhbCwgdGVzdF9yZXN1bHRzLnBhc3NpbmcpO1xuXG5sZXQgdGVzdF90ZXh0ID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgW1xuICAgICAgdGVzdF9wZXJjZW50YWdlKHRlc3RfcmVzdWx0cyksXG4gICAgICBkaXYoW3RleHQoXCI6XCIpXSksXG4gICAgICB0ZXh0KFRlc3RSZXN1bHRzLnRlc3Rfc3VtbWFyeV9zdHIodGVzdF9yZXN1bHRzKSksXG4gICAgXSxcbiAgKTtcblxubGV0IHRlc3Rfc3VtbWFyeSA9ICh+aW5qZWN0LCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICB7XG4gICAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHMgYXZhaWxhYmxlLlwiKV1cbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAgICB0ZXN0X3RleHQodGVzdF9yZXN1bHRzKSxcbiAgICAgICAgICB0ZXN0X2Jhcih+aW5qZWN0LCB+dGVzdF9yZXN1bHRzLCBZb3VyVGVzdHNUZXN0aW5nKSxcbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9LFxuICApO1xufTtcblxubGV0IHZpZXdfb2ZfbWFpbl90aXRsZV9iYXIgPSAodGl0bGVfdGV4dDogc3RyaW5nKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcInRpdGxlLWJhclwiLCBcInBhbmVsLXRpdGxlLWJhclwiXSldKSxcbiAgICBbTm9kZS50ZXh0KHRpdGxlX3RleHQpXSxcbiAgKTtcblxubGV0IGluc3BlY3Rvcl92aWV3ID1cbiAgICAoXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH50ZXN0X21hcDogVGVzdE1hcC50LFxuICAgICAgfmluZm9tYXAsXG4gICAgICBpZDogSGF6M2xjb3JlLklkLnQsXG4gICAgKVxuICAgIDogb3B0aW9uKHQpID0+IHtcbiAgc3dpdGNoIChUZXN0TWFwLmxvb2t1cChpZCwgdGVzdF9tYXApKSB7XG4gIHwgU29tZShpbnN0YW5jZXMpIHdoZW4gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VzKSAhPSBJbmRldCA9PlxuICAgIFNvbWUoXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnNwZWN0b3JcIiksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtaW5zdGFuY2VzXCIpLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgIHRlc3RfaW5zdGFuY2Vfdmlldyh+c2V0dGluZ3MsIH5pbmplY3QsIH5mb250X21ldHJpY3MsIH5pbmZvbWFwKSxcbiAgICAgICAgICAgICAgaW5zdGFuY2VzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHRlc3RfdHJ1ZV9leCA9IHtcbiAgc3ViX2lkOiBUZXN0VHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcInRlc3QgdHJ1ZSBlbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhpcyBpcyByZXBvcnRlZCBhcyBhIHBhc3NpbmcgdGVzdCBiZWNhdXNlIHRoZSBib2R5IG9mIHRoZSB0ZXN0IGlzIHRydWUuXCIsXG59O1xuLy8gVE9ETyBhcmUgdGhlc2UgcmVhbGx5IHRoZSBjb3JyZWN0IG1lc3NhZ2VzL2V4cGxhbmF0aW9uczsgbWF5YmUgaW5jbHVkZSBzb21ldGhpbmcgYWJvdXQgdGhlIHJlc3VsdCBiZWluZyB0cml2XG5sZXQgdGVzdF9mYWxzZV9leCA9IHtcbiAgc3ViX2lkOiBUZXN0RmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0ZXN0IDMgPCAxIGVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGlzIGlzIHJlcG9ydGVkIGFzIGEgZmFpbGluZyB0ZXN0IGJlY2F1c2UgdGhlIGJvZHkgb2YgdGhlIHRlc3QgaXMgMyA8IDEgd2hpY2ggZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlXCIpO1xubGV0IHRlc3RfZXhwX2NvbG9yaW5nX2lkcyA9ICh+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2JvZHkpLCBib2R5X2lkKSxcbl07XG5sZXQgdGVzdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqYm9keSpdKCVzKSBvZiB0aGUgdGVzdCBldmFsdXRlcyB0byBgdHJ1ZWAsIHRoZSB0ZXN0IHBhc3Nlcy4gT3RoZXJ3aXNlLCB0aGUgdGVzdCBmYWlscy5cIjtcbiAge1xuICAgIGlkOiBUZXN0RXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbWtfdGVzdChbW3NwYWNlKCksIF9leHBfYm9keSwgc3BhY2UoKV1dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3Rlc3RfdHJ1ZV9leCwgdGVzdF9mYWxzZV9leF0sXG4gIH07XG59O1xuXG5sZXQgdGVzdHM6IGdyb3VwID0ge2lkOiBUZXN0RXhwLCBmb3JtczogW3Rlc3RfZXhwXX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGludF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGBJbnRgIHR5cGUgY2xhc3NpZmllcyAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzLlwiO1xuICB7XG4gICAgaWQ6IEludFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIkludFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZmxvYXRfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgRmxvYXRgIHR5cGUgY2xhc3NpZmllcyA2NC1iaXQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFjY29yZGluZyB0byB0aGUgSUVFRSA3NTQgc3RhbmRhcmQuXCI7XG4gIHtcbiAgICBpZDogRmxvYXRUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJGbG9hdFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYm9vbF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGBCb29sYCB0eXBlIGNsYXNzaWZpZXMgYm9vbGVhbiB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogQm9vbFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIkJvb2xcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHN0cl90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGBTdHJpbmdgIHR5cGUgY2xhc3NpZmllcyBzdHJpbmcgdmFsdWVzLlwiO1xuICB7XG4gICAgaWQ6IFN0clR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIlN0cmluZ1wiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdmFyX3R5cCA9IChuYW1lOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJgJXNgIGlzIGEgdHlwZSB2YXJpYWJsZS5cIjtcbiAge1xuICAgIGlkOiBWYXJUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuYW1lIHw+IGFiYnJldmlhdGUgfD4gdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBpbnQ6IGdyb3VwID0ge2lkOiBJbnRUeXAsIGZvcm1zOiBbaW50X3R5cF19O1xuXG5sZXQgZmxvYXQ6IGdyb3VwID0ge2lkOiBGbG9hdFR5cCwgZm9ybXM6IFtmbG9hdF90eXBdfTtcblxubGV0IGJvb2w6IGdyb3VwID0ge2lkOiBCb29sVHlwLCBmb3JtczogW2Jvb2xfdHlwXX07XG5cbmxldCBzdHI6IGdyb3VwID0ge2lkOiBTdHJUeXAsIGZvcm1zOiBbc3RyX3R5cF19O1xuXG5sZXQgdmFyID0gKG5hbWU6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogVmFyVHlwLCBmb3JtczogW3Zhcl90eXAobmFtZSldfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xubGV0IHdpbGRfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSAqd2lsZGNhcmQgcGF0dGVybiogbWF0Y2hlcyBhbnkgZXhwcmVzc2lvbi5cIjtcbiAge1xuICAgIGlkOiBXaWxkUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiX1wiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgaW50bGl0X3BhdCA9IChpOiBpbnQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdmFsdWUgYCVpYCBtYXRjaCB0aGUgKmAlaWAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogSW50UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbaSB8PiBzdHJpbmdfb2ZfaW50IHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBmbG9hdGxpdF9wYXQgPSAoZjogZmxvYXQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdmFsdWUgYCVmYCBtYXRjaCB0aGUgKmAlZmAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogRmxvYXRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtmIHw+IHN0cmluZ19vZl9mbG9hdCB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYm9vbGxpdF9wYXQgPSAoYjogYm9vbCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWJgIG1hdGNoIHRoZSAqYCViYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBCb29sUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYiB8PiBzdHJpbmdfb2ZfYm9vbCB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgc3RybGl0X3BhdCA9IChzOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdmFsdWUgYCVzYCBtYXRjaCB0aGUgKmAlc2AgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogU3RyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcyB8PiBhYmJyZXZpYXRlIHw+IEhhejNsY29yZS5Gb3JtLnN0cmluZ19xdW90ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHRyaXZfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB0aGUgdHJpdmlhbCB2YWx1ZSBgKClgIG1hdGNoIHRoZSAqdHJpdmlhbCBwYXR0ZXJuIGAoKWAqLlwiO1xuICB7XG4gICAgaWQ6IFRyaXZQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCIoKVwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdmFyX3BhdCA9IChuYW1lOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzICpwYXR0ZXJuIHZhcmlhYmxlKiBtYXRjaGVzIGFueSBleHByZXNzaW9uLCBiaW5kaW5nIGl0cyB2YWx1ZSB0byB2YXJpYWJsZSBgJXNgLlwiO1xuICB7XG4gICAgaWQ6IFZhclBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW25hbWUgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGN0cl9wYXQgPSAobmFtZTogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IG1hdGNoIHRoZSAqYCVzYCBjb25zdHJ1Y3RvciogbWF0Y2ggdGhpcyBjb25zdHJ1Y3RvciBwYXR0ZXJuLlwiO1xuICB7XG4gICAgaWQ6IEN0clBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW25hbWUgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHdpbGQ6IGdyb3VwID0ge2lkOiBXaWxkUGF0LCBmb3JtczogW3dpbGRfcGF0XX07XG5cbmxldCBpbnRsaXQgPSAoaTogaW50KTogZ3JvdXAgPT4ge2lkOiBJbnRQYXQsIGZvcm1zOiBbaW50bGl0X3BhdChpKV19O1xuXG5sZXQgZmxvYXRsaXQgPSAoZjogZmxvYXQpOiBncm91cCA9PiB7XG4gIGlkOiBGbG9hdFBhdCxcbiAgZm9ybXM6IFtmbG9hdGxpdF9wYXQoZildLFxufTtcblxubGV0IGJvb2xsaXQgPSAoYjogYm9vbCk6IGdyb3VwID0+IHtpZDogQm9vbFBhdCwgZm9ybXM6IFtib29sbGl0X3BhdChiKV19O1xuXG5sZXQgc3RybGl0ID0gKHM6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogU3RyUGF0LCBmb3JtczogW3N0cmxpdF9wYXQocyldfTtcblxubGV0IHRyaXY6IGdyb3VwID0ge2lkOiBUcml2UGF0LCBmb3JtczogW3RyaXZfcGF0XX07XG5cbmxldCB2YXIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBWYXJQYXQsIGZvcm1zOiBbdmFyX3BhdChuYW1lKV19O1xuXG5sZXQgY3RyID0gKG5hbWU6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogQ3RyUGF0LCBmb3JtczogW2N0cl9wYXQobmFtZSldfTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgdHJpdl9leHA6IGZvcm0gPSB7XG4gIGlkOiBUcml2RXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2V4cChcIigpXCIpXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiVGhlIHVuaXF1ZSB2YWx1ZSBvZiB0eXBlIGAoKWAuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgdHJpdl9leHBzOiBncm91cCA9IHtpZDogVHJpdkV4cCwgZm9ybXM6IFt0cml2X2V4cF19O1xuXG5sZXQgZGVmZXJyYWxfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IERlZmVycmFsLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXG4gICAgICBcImxldCBwbHVzID0gZnVuICh4LCB5KSAtPiB4ICsgeSBpblxcbmxldCBpbmNyID0gcGx1cyhfLCAxKSBpblxcbmluY3IoNSlcIixcbiAgICApLFxuICBtZXNzYWdlOiBcIkluIHRoZSBwYXJ0aWFsIGFwcGxpY2F0aW9uIHBsdXMoXywgMSksIHRoZSBkZWZlcnJhbCBleHByZXNzaW9uIG1hcmtzIHRoZSBmaXJzdCBhcmd1bWVudCwgd2hpY2ggd2FzIG5vdCBhcHBsaWVkIHVudGlsIGluIHRoZSBmdWxsIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIGluY3IoNSkuXCIsXG59O1xubGV0IGRlZmVycmFsX2V4cDogZm9ybSA9IHtcbiAgaWQ6IERlZmVycmFsRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2V4cChcIl9cIildLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJNYXJrcyBhbiBhcmd1bWVudCB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYXBwbGllZCBpbiBhIHBhcnRpYWwgYXBwbGljYXRpb24uXCIsXG4gIGV4YW1wbGVzOiBbZGVmZXJyYWxfZXhwX2V4XSxcbn07XG5sZXQgZGVmZXJyYWxfZXhwczogZ3JvdXAgPSB7aWQ6IERlZmVycmFsRXhwLCBmb3JtczogW2RlZmVycmFsX2V4cF19O1xuXG5sZXQgYm9vbF9leHAgPSAoYjogYm9vbCk6IGZvcm0gPT4ge1xuICBpZDogQm9vbEV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtleHAoYiB8PiBzdHJpbmdfb2ZfYm9vbCldLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJBIGJvb2xlYW4gbGl0ZXJhbCwgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGJvb2xfZXhwcyA9IChiOiBib29sKTogZ3JvdXAgPT4ge2lkOiBCb29sRXhwLCBmb3JtczogW2Jvb2xfZXhwKGIpXX07XG5cbmxldCBpbnRfZXhwID0gKG46IGludCk6IGZvcm0gPT4ge1xuICBpZDogSW50RXhwLFxuICBzeW50YWN0aWNfZm9ybTogW24gfD4gc3RyaW5nX29mX2ludCB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJBIHNpZ25lZCBpbnRlZ2VyIGxpdGVyYWwuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgaW50X2V4cHMgPSAoaTogaW50KTogZ3JvdXAgPT4ge2lkOiBJbnRFeHAsIGZvcm1zOiBbaW50X2V4cChpKV19O1xuXG5sZXQgZmxvYXRfZXhwID0gKGY6IGZsb2F0KTogZm9ybSA9PiB7XG4gIGlkOiBGbG9hdEV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtmIHw+IHN0cmluZ19vZl9mbG9hdCB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJBIGZsb2F0aW5nLXBvaW50IGxpdGVyYWwuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgZmxvYXRfZXhwcyA9IChmOiBmbG9hdCk6IGdyb3VwID0+IHtcbiAgaWQ6IEZsb2F0RXhwLFxuICBmb3JtczogW2Zsb2F0X2V4cChmKV0sXG59O1xuXG5sZXQgc3RyaW5nX2V4cCA9IChzOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgaWQ6IFN0cmluZ0V4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtzIHw+IGFiYnJldmlhdGUgfD4gSGF6M2xjb3JlLkZvcm0uc3RyaW5nX3F1b3RlIHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgc3RyaW5nIGxpdGVyYWwuIEFueSBjaGFyYWN0ZXIgYmVzaWRlcyBkb3VibGUgcXVvdGVzIChgXFxcImApIGNhbiBiZSB1c2VkLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IHN0cmluZ19leHBzID0gKHM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN0cmluZ0V4cCxcbiAgZm9ybXM6IFtzdHJpbmdfZXhwKHMpXSxcbn07XG5cbmxldCB2YXJfZXhwID0gKG46IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogVmFyRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW24gfD4gYWJicmV2aWF0ZSB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJUYWtlcyB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gdGhhdCBpdCB3YXMgYm91bmQgdG8uXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgdmFyX2V4cHMgPSAoeDogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBWYXJFeHAsIGZvcm1zOiBbdmFyX2V4cCh4KV19O1xuXG5sZXQgY3RyX2V4cCA9IChjOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgaWQ6IEN0ckV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtjIHw+IGFiYnJldmlhdGUgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiYCVzYCBpcyBhIGNvbnN0cnVjdG9yIGZvciBhIHN1bSB0eXBlIHZhcmlhbnQuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgY3RyID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogQ3RyRXhwLCBmb3JtczogW2N0cl9leHAoYyldfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBsYWJlbGxlZF9zdW1fdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlN1bSB0eXBlcyBkZXNjcmliZSBhIGZpbml0ZSBzZXQgb2YgbGFiZWxlZCBjaG9pY2VzLiBWYWx1ZXMgb2YgdGhpcyB0eXBlIGNvbnNpc3Qgb2Ygb25lIG9mIHRoZSBzcGVjaWZpZWQgY29uc3RydWN0b3JzIGFwcGxpZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyIHR5cGUsIGlmIHNwZWNpZmllZC4gQ29uc3RydWN0b3IgbmFtZXMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgc3VtLlwiO1xuICBsZXQgZGl2aWRlciA9IEV4YW1wbGUubWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBfcGx1c1wiKSk7XG4gIHtcbiAgICBpZDogTGFiZWxsZWRTdW1UeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIHNwYWNlKCksXG4gICAgICB0eXAoXCJDb25zdHJ1Y3Rvcih0eSlcIiksXG4gICAgICBzcGFjZSgpLFxuICAgICAgZGl2aWRlcixcbiAgICAgIHNwYWNlKCksXG4gICAgICB0eXAoXCIuLi5cIiksXG4gICAgICBzcGFjZSgpLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IHN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgc3BlY2lmaWVzIG9uZSBwb3NzaWJsZSB3YXkgb2YgY29uc3RydWN0aW5nIHRoZSBwYXJlbnQgc3VtIHR5cGUsIHdoZW4gYXBwbGllZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciB0eXBlLlwiO1xuICB7XG4gICAgaWQ6IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWYsXG4gICAgc3ludGFjdGljX2Zvcm06IFtjICsrIFwiKFR5cGUpXCIgfD4gYWJicmV2aWF0ZSB8PiB0eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWYgPSAoYzogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBzcGVjaWZpZXMgb25lIHBvc3NpYmxlIHdheSBvZiBjb25zdHJ1Y3RpbmcgdGhlIHBhcmVudCBzdW0gdHlwZS5cIjtcbiAge1xuICAgIGlkOiBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWYsXG4gICAgc3ludGFjdGljX2Zvcm06IFtjIHw+IGFiYnJldmlhdGUgfD4gdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBsYWJlbGxlZF9zdW1fdHlwczogZ3JvdXAgPSB7XG4gIGlkOiBMYWJlbGxlZFN1bVR5cCxcbiAgZm9ybXM6IFtsYWJlbGxlZF9zdW1fdHlwXSxcbn07XG5cbmxldCBzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZnMgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3VtVHlwVW5hcnlDb25zdHJ1Y3RvckRlZixcbiAgZm9ybXM6IFtzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZihjKV0sXG59O1xuXG5sZXQgc3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlZnMgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmLFxuICBmb3JtczogW3N1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWYoYyldLFxufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgYmFja3BhY2tfc2VsX3ZpZXcgPVxuICAgIChcbiAgICAgIHhfb2ZmOiBmbG9hdCxcbiAgICAgIHlfb2ZmOiBmbG9hdCxcbiAgICAgIHNjYWxlOiBmbG9hdCxcbiAgICAgIG9wYWNpdHk6IGZsb2F0LFxuICAgICAge2ZvY3VzOiBfLCBjb250ZW50LCBffTogU2VsZWN0aW9uLnQsXG4gICAgKSA9PiB7XG4gIG1vZHVsZSBUZXh0ID1cbiAgICBDb2RlLlRleHQoe1xuICAgICAgbGV0IG1hcCA9IE1lYXN1cmVkLm9mX3NlZ21lbnQoY29udGVudCk7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBJbml0LnN0YXJ0dXAuc2V0dGluZ3M7XG4gICAgfSk7XG4gIC8vIFRPRE8oYW5kcmV3KTogTWF5YmUgdXNlIGluaXQgc29ydCBhdCBjYXJldCB0byBwcmltZSB0aGlzXG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjb2RlLXRleHRcIiwgXCJiYWNrcGFjay1zZWxlY3Rpb25cIl0pLFxuICAgICAgICBBdHRyLmNyZWF0ZShcbiAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7IHRyYW5zZm9ybTogdHJhbnNsYXRlKCVmcHgsICVmcHgpIHNjYWxlKCVmKTsgb3BhY2l0eTogJWYlJTtcIixcbiAgICAgICAgICAgIHhfb2ZmLFxuICAgICAgICAgICAgeV9vZmYsXG4gICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgIG9wYWNpdHksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIC8vIHp3c3AgbmVjZXNzYXJ5IGZvciBjb250YWluaW5nIGJveCB0byBzdHJldGNoIHRvIGNvbnRhaW4gdHJhaWxpbmcgbmV3bGluZVxuICAgIFRleHQub2Zfc2VnbWVudChbXSwgdHJ1ZSwgQW55LCBjb250ZW50KSBAIFt0ZXh0KFVuaWNvZGUuendzcCldLFxuICApO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+b3JpZ2luOiBNZWFzdXJlZC5Qb2ludC50LFxuICAgICAge2JhY2twYWNrLCBffSBhcyB6OiBaaXBwZXIudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICAvL1RPRE8oYW5kcmV3KTogY2xlYW4gdXAgdGhpcyBkdW1wc3RlciBmaXJlIG9mIGEgZnVuY3Rpb25cbiAgbGV0IGhlaWdodF9oZWFkID1cbiAgICBzd2l0Y2ggKGJhY2twYWNrKSB7XG4gICAgfCBbXSA9PiAwXG4gICAgfCBbaGQsIC4uLl9dID0+IE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KGhkLmNvbnRlbnQpXG4gICAgfTtcbiAgbGV0IGNhbl9wdXRfZG93biA9XG4gICAgc3dpdGNoIChaaXBwZXIucG9wX2JhY2twYWNrKHopKSB7XG4gICAgLy8gY2FyZXQgdGhpbmcgaXMgaGFjazsgaSBkb24ndCBrbm93IHdoeSBwb3BfYmFja3BhY2tcbiAgICAvLyBnaXZlcyB1cyB3aGF0IHdlIHdhbnQgaGVyZVxuICAgIHwgU29tZShfKSA9PiB6LmNhcmV0ID09IE91dGVyXG4gICAgfCBOb25lID0+IGZhbHNlXG4gICAgfTtcbiAgbGV0IGNhcmV0X2FkaiA9IHtcbiAgICBsZXQgc2hhcGUgPSBaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopO1xuICAgIGxldCBzaWRlID1cbiAgICAgIHN3aXRjaCAoSW5kaWNhdGVkLnBpZWNlKHopKSB7XG4gICAgICB8IFNvbWUoKF8sIHNpZGUsIF8pKSA9PiBzaWRlXG4gICAgICB8IF8gPT4gUmlnaHRcbiAgICAgIH07XG4gICAgRGVjVXRpbC5jYXJldF9hZGp1c3Qoc2lkZSwgc2hhcGUpO1xuICB9O1xuICBsZXQgY2FyZXRfYWRqX3B4ID1cbiAgICAvL1RPRE8oYW5kcmV3KTogZmlndXJlIG91dCB3aHkgd2UgbmVlZCB0aGlzIG15c3RlcnkgcGl4ZWwgYmVsb3dcbiAgICAoLTEuKSArLiBjYXJldF9hZGogKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aDtcbiAgbGV0IG1heF9kaXNwID0gMzsgLyogTWF4aW11bSB2ZXJ0aWNhbCBiYWNrcGFjayBkaXNwbGFjZW1lbnQgKi9cbiAgbGV0IHZlcnRpY2FsX2Rpc3AgPSBvcmlnaW4ucm93IDw9IG1heF9kaXNwID8gb3JpZ2luLnJvdyA6IG1heF9kaXNwO1xuICBsZXQgc2VsZWN0aW9uc19zdHlsZSA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4O1wiLFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gY2FyZXRfYWRqX3B4LFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cgLSB2ZXJ0aWNhbF9kaXNwIC0gaGVpZ2h0X2hlYWQgLSAxKVxuICAgICAgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgKTtcbiAgbGV0IHNjYWxlX2ZuID0gaWR4ID0+IGZsb2F0X29mX2ludCgxMDAgLSAxMiAqIGlkeCkgLy4gMTAwLjtcbiAgbGV0IHhfZm4gPSBpZHggPT4gZmxvYXRfb2ZfaW50KDEyICogaWR4KTtcbiAgbGV0IGluaXRfb3BhY2l0eSA9IDEwMC47XG4gIGxldCBvcGFjaXR5X3JlZHVjdGlvbiA9IDIwLjsgLy8gcmVkdWN0aW9uIHBlciBsaW5lXG4gIGxldCBpbml0X2lkeCA9IDA7XG4gIGxldCBkeV9mbiA9IChpZHgsIGJhc2VfaGVpZ2h0KSA9PlxuICAgIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0XG4gICAgKi4gZmxvYXRfb2ZfaW50KGJhc2VfaGVpZ2h0KVxuICAgICouIHNjYWxlX2ZuKGlkeClcbiAgICAtLiA0LjtcbiAgbGV0IGluaXRfeV9vZmZzZXQgPSBkeV9mbihpbml0X2lkeCwgaGVpZ2h0X2hlYWQpO1xuICBsZXQgKF8sIF8sIF8sIHNlbGVjdGlvbnMpID1cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICgoaWR4LCB5X29mZnNldCwgb3BhY2l0eSwgdnMpLCBzOiBTZWxlY3Rpb24udCkgPT4ge1xuICAgICAgICBsZXQgYmFzZV9oZWlnaHQgPSBNZWFzdXJlZC5zZWdtZW50X2hlaWdodChzLmNvbnRlbnQpO1xuICAgICAgICBsZXQgc2NhbGUgPSBzY2FsZV9mbihpZHgpO1xuICAgICAgICBsZXQgeF9vZmZzZXQgPSB4X2ZuKGlkeCk7XG4gICAgICAgIGxldCBuZXdfeV9vZmZzZXQgPSB5X29mZnNldCAtLiBkeV9mbihpZHgsIGJhc2VfaGVpZ2h0KTtcbiAgICAgICAgbGV0IHYgPSBiYWNrcGFja19zZWxfdmlldyh4X29mZnNldCwgbmV3X3lfb2Zmc2V0LCBzY2FsZSwgb3BhY2l0eSwgcyk7XG4gICAgICAgIGxldCBuZXdfaWR4ID0gaWR4ICsgMTtcbiAgICAgICAgbGV0IG5ld19vcGFjaXR5ID0gb3BhY2l0eSAtLiBvcGFjaXR5X3JlZHVjdGlvbjtcbiAgICAgICAgLy9UT0RPKGFuZHJldyk6IGFtIGkgbWFraW5nIHRoaXMgZGlmZmljdWx0IGJ5IGdvaW5nIGJhY2t3YXJkcz9cbiAgICAgICAgKG5ld19pZHgsIG5ld195X29mZnNldCwgbmV3X29wYWNpdHksIExpc3QuY29ucyh2LCB2cykpO1xuICAgICAgfSxcbiAgICAgIChpbml0X2lkeCwgaW5pdF95X29mZnNldCwgaW5pdF9vcGFjaXR5LCBbXSksXG4gICAgICBiYWNrcGFjayxcbiAgICApO1xuICBsZXQgc2VsZWN0aW9uc192aWV3ID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIHNlbGVjdGlvbnNfc3R5bGUpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJiYWNrcGFja1wiXSksXG4gICAgICAgIF0pLFxuICAgICAgc2VsZWN0aW9ucyxcbiAgICApO1xuICBsZXQgbGVuZ3RoID1cbiAgICBzd2l0Y2ggKGJhY2twYWNrKSB7XG4gICAgfCBbXSA9PiAwXG4gICAgfCBbaGQsIC4uLl9dID0+IE1lYXN1cmVkLnNlZ21lbnRfd2lkdGgoaGQuY29udGVudClcbiAgICB9O1xuXG4gIGxldCBqb2luZXJfc3R5bGUgPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDsgaGVpZ2h0OiAlZnB4O1wiLFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gY2FyZXRfYWRqX3B4LFxuICAgICAgKC0zLilcbiAgICAgICsuIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93IC0gdmVydGljYWxfZGlzcClcbiAgICAgICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICAgMy4gKy4gRmxvYXQub2ZfaW50KHZlcnRpY2FsX2Rpc3ApICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICk7XG4gIGxldCBqb2luZXIgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgam9pbmVyX3N0eWxlKSxcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiYmFja3BhY2stam9pbmVyXCJdKSxcbiAgICAgICAgXSksXG4gICAgICBbXSxcbiAgICApO1xuICAvL1RPRE8oYW5kcmV3KTogYnJlYWsgb3V0IGJhY2twYWNrIGRlY29yYXRpb24gaW50byBpdHMgb3duIG1vZHVsZVxuICBsZXQgZ2VuaWVfdmlldyA9XG4gICAgRGVjVXRpbC5jb2RlX3N2ZyhcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+b3JpZ2luPXtyb3c6IDAsIGNvbDogMH0sXG4gICAgICB+YmFzZV9jbHM9W1wicmVzdHJ1Y3R1cmluZy1nZW5pZVwiXSxcbiAgICAgIH5wYXRoX2Nscz1bXCJyZXN0cnVjdHVyaW5nLWdlbmllLXBhdGhcIl0sXG4gICAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgICBNKHt4OiAwLiwgeTogMC59KSxcbiAgICAgICAgVih7eTogKC0xLjApfSksXG4gICAgICAgIEhfKHtkeDogRmxvYXQub2ZfaW50KGxlbmd0aCl9KSxcbiAgICAgICAgVl8oe2R5OiAwLjB9KSxcbiAgICAgICAgWixcbiAgICAgIF0sXG4gICAgKTtcbiAgbGV0IGdlbmllX3N0eWxlID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7XCIsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBjYXJldF9hZGpfcHgsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdyAtIHZlcnRpY2FsX2Rpc3ApXG4gICAgICAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodFxuICAgICAgKy4gMS4sXG4gICAgKTtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKFxuICAgICAgICAgIFtcImJhY2twYWNrXCJdIEAgKGNhbl9wdXRfZG93biA/IFtdIDogW1wiY2FudC1wdXQtZG93blwiXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBbXG4gICAgICBzZWxlY3Rpb25zX3ZpZXcsXG4gICAgICBkaXYofmF0dHI9QXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBnZW5pZV9zdHlsZSksIFtnZW5pZV92aWV3XSksXG4gICAgXVxuICAgIEAgKGJhY2twYWNrICE9IFtdID8gW2pvaW5lcl0gOiBbXSksXG4gICk7XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTdmdVdGlsO1xuXG5sZXQgY2FyZXRfd2lkdGhfc3RyYWlnaHQgPSAwLjE7XG5sZXQgY2FyZXRfd2lkdGhfYmVudCA9IDAuMTtcbmxldCBjYXJldF9iZW5kID0gRGVjVXRpbC50aXBfd2lkdGg7XG5cbm1vZHVsZSBQcm9maWxlID0ge1xuICB0eXBlIHQgPSB7XG4gICAgc2lkZTogRGlyZWN0aW9uLnQsXG4gICAgb3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICBzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSxcbiAgfTtcbn07XG5cbmxldCBjYXJldF9wYXRoID0gKHNoYXBlOiBvcHRpb24oRGlyZWN0aW9uLnQpKSA9PiB7XG4gIGxldCBjYXJldF9iZW5kX3BhcmFtID1cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBTb21lKFJpZ2h0KSA9PiAtLiBjYXJldF9iZW5kXG4gICAgfCBTb21lKExlZnQpID0+IGNhcmV0X2JlbmRcbiAgICB8IE5vbmUgPT4gMC4wXG4gICAgfTtcbiAgbGV0IGNhcmV0X3dpZHRoX3BhcmFtID1cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBTb21lKFJpZ2h0KSA9PiAtLiBjYXJldF93aWR0aF9iZW50XG4gICAgfCBTb21lKExlZnQpID0+IGNhcmV0X3dpZHRoX2JlbnRcbiAgICB8IE5vbmUgPT4gY2FyZXRfd2lkdGhfc3RyYWlnaHRcbiAgICB9O1xuICBQYXRoLltcbiAgICBtKH54PTAsIH55PTApLFxuICAgIEgoe3g6IGNhcmV0X3dpZHRoX3BhcmFtfSksXG4gICAgTF8oe2R4OiAtLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogMC41fSksXG4gICAgTF8oe2R4OiArLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogMC41fSksXG4gICAgSCh7eDogLS4gY2FyZXRfd2lkdGhfcGFyYW19KSxcbiAgICBMXyh7ZHg6IC0uIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAoLTAuNSl9KSxcbiAgICBMXyh7ZHg6ICsuIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAoLTAuNSl9KSxcbiAgXTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnByb2ZpbGUgYXMge3NoYXBlLCBzaWRlLCBvcmlnaW59OiBQcm9maWxlLnQsXG4gICAgKSA9PiB7XG4gIGxldCBsX2FkaiA9IERlY1V0aWwuY2FyZXRfYWRqdXN0KHNpZGUsIHNoYXBlKTtcbiAgRGVjVXRpbC5jb2RlX3N2ZyhcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5vcmlnaW4sXG4gICAgfmlkPVwiY2FyZXRcIixcbiAgICB+YmFzZV9jbHM9W1wiYmxpbmtcIl0sXG4gICAgfnBhdGhfY2xzPVtcImNhcmV0LXBhdGhcIl0sXG4gICAgfmhlaWdodF9mdWRnZT1EZWNVdGlsLnNoYWRvd19hZGogKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgfmxlZnRfZnVkZ2U9bF9hZGogKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCxcbiAgICBjYXJldF9wYXRoKHNoYXBlKSxcbiAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbm1vZHVsZSBQcm9maWxlID0ge1xuICB0eXBlIHN0eWxlID0gWyB8IGBCYXJlIHwgYFNpYmxpbmcgfCBgQW5jaG9yIHwgYENhcmV0XTtcbiAgdHlwZSB0ID0ge1xuICAgIHN0eWxlLFxuICAgIG1lYXN1cmVtZW50OiBIYXozbGNvcmUuTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgc29ydDogSGF6M2xjb3JlLlNvcnQudCxcbiAgfTtcbn07XG5cbmxldCBjYXJldF9wb3NpdGlvbl9yYWRpaSA9XG4gICAgKH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsIH5zdHlsZTogUHJvZmlsZS5zdHlsZSkgPT4ge1xuICBsZXQgciA9XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgIHwgYENhcmV0ID0+IDMuNzVcbiAgICB8IGBBbmNob3JcbiAgICB8IGBTaWJsaW5nID0+IDIuNzVcbiAgICB8IGBCYXJlID0+IDIuMFxuICAgIH07XG4gIChyIC8uIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgsIHIgLy4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQpO1xufTtcblxubGV0IHZpZXcgPSAofmZvbnRfbWV0cmljcywge3N0eWxlLCBzb3J0LCBtZWFzdXJlbWVudH06IFByb2ZpbGUudCkgPT4ge1xuICBsZXQgKHJfeCwgcl95KSA9IGNhcmV0X3Bvc2l0aW9uX3JhZGlpKH5mb250X21ldHJpY3MsIH5zdHlsZSk7XG4gIGxldCBjX2NscyA9IEhhejNsY29yZS5Tb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgbGV0IGNscyA9XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgIHwgYEJhcmUgPT4gXCJvdXRlci1jb3VzaW5cIlxuICAgIHwgYENhcmV0ID0+IFwiY3VycmVudC1jYXJldC1wb3NcIlxuICAgIHwgYEFuY2hvciA9PiBcImFuY2hvclwiXG4gICAgfCBgU2libGluZyA9PiBcInNpYmxpbmdcIlxuICAgIH07XG4gIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc18oY2xzKSxcbiAgICAgICAgRGVjVXRpbC5hYnNfcG9zaXRpb24ofmZvbnRfbWV0cmljcywgbWVhc3VyZW1lbnQub3JpZ2luKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXCJ2aWV3Qm94XCIsIFByaW50Zi5zcHJpbnRmKFwiMCAwIDEgMVwiKSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICBdKSxcbiAgICBbXG4gICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgIFwicmVjdFwiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoXG4gICAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgICAgY3JlYXRlKFwieFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgLS4gcl94KSksXG4gICAgICAgICAgICAgIGNyZWF0ZShcInlcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIDAuMSAtLiByX3kpKSxcbiAgICAgICAgICAgICAgY3JlYXRlKFwid2lkdGhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIDEuICouIHJfeCkpLFxuICAgICAgICAgICAgICBjcmVhdGUoXCJoZWlnaHRcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIDEuICouIHJfeSkpLFxuICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY2FyZXQtcG9zaXRpb24tcGF0aFwiLCBjbHMsIGNfY2xzXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcbiIsInR5cGUgY29sb3JNYXAgPSBIYXozbGNvcmUuSWQuTWFwLnQoc3RyaW5nKTtcblxuLypbQGRlcml2aW5nIHNleHBdKi9cbnR5cGUgdCA9IChjb2xvck1hcCwgaW50KTtcblxuLyogVE9ETzogSGFubmFoIC0gUGljayA3IG9yIHNvIGRpc3RpbmN0IGNvbG9ycyBmcm9tIHRoZSBkaWZmZXJlbnQgY29sb3IgZ2VuZXJhdG9yIHRoaW5nIChIU0x1dilcbiAgIE1ha2Ugc3VyZSBkaXN0aW5ndWlzaGFibGUgZm9yIGNvbG9yIGJsaW5kIG9yIGdyZXlzY2FsZVxuICAgLSB0aGluayBhYm91dCByZWxhdGVkIGNvbG9ycyBmb3IgcmVsYXRlZCBjb25jZXB0cyovXG5sZXQgY2hpbGRfY29sb3JzID0gW1wiYmx1ZVwiLCBcInBpbmtcIiwgXCJ0ZWFsXCIsIFwib3JhbmdlXCIsIFwicHVycGxlXCIsIFwieWVsbG93XCJdO1xuXG5sZXQgZW1wdHkgPSAoSGF6M2xjb3JlLklkLk1hcC5lbXB0eSwgMCk7XG5sZXQgZ2V0X2NvbG9yID0gKGlkOiBIYXozbGNvcmUuSWQudCwgKG1hcHBpbmcsIGluZGV4KTogdCk6IChzdHJpbmcsIHQpID0+XG4gIHN3aXRjaCAoSGF6M2xjb3JlLklkLk1hcC5maW5kX29wdChpZCwgbWFwcGluZykpIHtcbiAgfCBOb25lID0+XG4gICAgbGV0IGNvbG9yID0gTGlzdC5udGgoY2hpbGRfY29sb3JzLCBpbmRleCBtb2QgTGlzdC5sZW5ndGgoY2hpbGRfY29sb3JzKSk7XG4gICAgbGV0IG1hcHBpbmcgPSBIYXozbGNvcmUuSWQuTWFwLmFkZChpZCwgY29sb3IsIG1hcHBpbmcpO1xuICAgIChjb2xvciwgKG1hcHBpbmcsIGluZGV4ICsgMSkpO1xuICB8IFNvbWUoY29sb3IpID0+IChjb2xvciwgKG1hcHBpbmcsIGluZGV4KSlcbiAgfTtcblxubGV0IHRvX2xpc3QgPSAobWFwOiBjb2xvck1hcCk6IGxpc3QoKEhhejNsY29yZS5JZC50LCBzdHJpbmcpKSA9PiB7XG4gIExpc3Qub2Zfc2VxKEhhejNsY29yZS5JZC5NYXAudG9fc2VxKG1hcCkpO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBTdmdVdGlsO1xuXG5sZXQgcnVuOiBOaWIuU2hhcGUudCA9PiBmbG9hdCA9XG4gIGZ1blxuICB8IENvbnZleCA9PiArLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aFxuICB8IENvbmNhdmUoXykgPT4gLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGg7XG5cbmxldCBhZGo6IE5pYi5TaGFwZS50ID0+IGZsb2F0ID1cbiAgZnVuXG4gIHwgQ29udmV4ID0+IERlY1V0aWwuY29udmV4X2FkalxuICB8IENvbmNhdmUoXykgPT4gRGVjVXRpbC5jb25jYXZlX2FkajtcblxubGV0IGxfaG9vayA9IChsOiBOaWIuU2hhcGUudCk6IGxpc3QoUGF0aC5jbWQpID0+IFtcbiAgSF8oe2R4OiAtLiBhZGoobCl9KSxcbiAgTF8oe2R4OiAtLiBydW4obCksIGR5OiAoLTAuNSl9KSxcbiAgTF8oe2R4OiArLiBydW4obCksIGR5OiAoLTAuNSl9KSxcbiAgSF8oe2R4OiArLiBhZGoobCl9KSxcbl07XG5cbmxldCByX2hvb2sgPSAocjogTmliLlNoYXBlLnQpOiBsaXN0KFBhdGguY21kKSA9PiBbXG4gIEhfKHtkeDogKy4gYWRqKHIpfSksXG4gIExfKHtkeDogKy4gcnVuKHIpLCBkeTogMC41fSksXG4gIExfKHtkeDogLS4gcnVuKHIpLCBkeTogMC41fSksXG4gIEhfKHtkeDogLS4gYWRqKHIpfSksXG5dO1xuXG5sZXQgc2ltcGxlX3NoYXJkX3BhdGggPSAoKGwsIHIpOiBOaWJzLnNoYXBlcywgbGVuZ3RoOiBpbnQpOiBsaXN0KFBhdGguY21kKSA9PlxuICBMaXN0LmZsYXR0ZW4oXG4gICAgUGF0aC5bXG4gICAgICBbbSh+eD0wLCB+eT0wKSwgaCh+eD1sZW5ndGgpXSxcbiAgICAgIHJfaG9vayhyKSxcbiAgICAgIFtoKH54PTApXSxcbiAgICAgIGxfaG9vayhsKSxcbiAgICBdLFxuICApO1xuXG5sZXQgc2ltcGxlX3NoYXJkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5wYXRoX2NscyxcbiAgICAgIH5iYXNlX2NscyxcbiAgICAgIH5hdHRyPVtdLFxuICAgICAgfmZ1ZGdlPURlY1V0aWwuZnplcm8sXG4gICAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgKVxuICAgIDogdCA9PlxuICBEZWNVdGlsLmNvZGVfc3ZnX3NpemVkKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfm1lYXN1cmVtZW50LFxuICAgIH5iYXNlX2NscyxcbiAgICB+cGF0aF9jbHMsXG4gICAgfmF0dHIsXG4gICAgfmZ1ZGdlLFxuICAgIHNpbXBsZV9zaGFyZF9wYXRoKHNoYXBlcywgbWVhc3VyZW1lbnQubGFzdC5jb2wgLSBtZWFzdXJlbWVudC5vcmlnaW4uY29sKSxcbiAgKTtcblxubGV0IHNpbXBsZV9zaGFyZF9zZWxlY3RlZCA9XG4gICAgKH5mb250X21ldHJpY3MsIH5zaGFwZXMsIH5tZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsIH5idWZmZXIpOiB0ID0+IHtcbiAgbGV0IHBhdGhfY2xzID0gW1xuICAgIFwidGlsZS1wYXRoXCIsXG4gICAgXCJyYWlzZWRcIixcbiAgICBidWZmZXIgPyBcInNlbGVjdGVkLWJ1ZmZlclwiIDogXCJzZWxlY3RlZFwiLFxuICBdO1xuICBsZXQgYmFzZV9jbHMgPSBbXCJ0aWxlLXNlbGVjdGVkXCJdO1xuICBzaW1wbGVfc2hhcmQoXG4gICAgLyogSW5jcmVhc2UgaGVpZ2h0IHNsaWdodGx5IHRvIGF2b2lkIGxlYXZpbmcgc3BhY2VzIGJldHdlZW4gc2VsZWN0ZWQgbGluZXMgKi9cbiAgICB+ZnVkZ2U9e2hlaWdodDogMC4zLCB0b3A6IDAuLCB3aWR0aDogMC4sIGxlZnQ6IDAufSxcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5zaGFwZXMsXG4gICAgfnBhdGhfY2xzLFxuICAgIH5iYXNlX2NscyxcbiAgICBtZWFzdXJlbWVudCxcbiAgKTtcbn07XG5cbmxldCBzaW1wbGVfc2hhcmRfaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfmhhc19jYXJldCxcbiAgICAgIH5zaGFwZXMsXG4gICAgICB+c29ydCxcbiAgICAgIH5tZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgKVxuICAgIDogdCA9PiB7XG4gIGxldCBwYXRoX2NscyA9XG4gICAgW1widGlsZS1wYXRoXCIsIFwicmFpc2VkXCIsIFNvcnQudG9fc3RyaW5nKHNvcnQpXVxuICAgIEAgKGhhc19jYXJldCA/IFtcImluZGljYXRlZC1jYXJldFwiXSA6IFtcImluZGljYXRlZFwiXSk7XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtaW5kaWNhdGVkXCJdO1xuICBzaW1wbGVfc2hhcmQofmZvbnRfbWV0cmljcywgfnNoYXBlcywgfnBhdGhfY2xzLCB+YmFzZV9jbHMsIG1lYXN1cmVtZW50KTtcbn07XG5cbmxldCBzaW1wbGVfc2hhcmRzX2luZGljYXRlZCA9XG4gICAgKH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsIH5jYXJldDogKElkLnQsIGludCksIChpZCwgbW9sZCwgc2hhcmRzKSlcbiAgICA6IGxpc3QodCkgPT5cbiAgTGlzdC5tYXAoXG4gICAgKChpbmRleCwgbWVhc3VyZW1lbnQpKSA9PlxuICAgICAgc2ltcGxlX3NoYXJkX2luZGljYXRlZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfmhhc19jYXJldD1jYXJldCA9PSAoaWQsIGluZGV4KSxcbiAgICAgICAgfnNoYXBlcz1Nb2xkLm5pYl9zaGFwZXMofmluZGV4LCBtb2xkKSxcbiAgICAgICAgfnNvcnQ9bW9sZC5vdXQsXG4gICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICksXG4gICAgc2hhcmRzLFxuICApO1xuXG5sZXQgbmV4dF9zdGVwX2luZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+aGFzX2NhcmV0LFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5zb3J0LFxuICAgICAgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IHBhdGhfY2xzID1cbiAgICBbXCJ0aWxlLXBhdGhcIiwgXCJyYWlzZWRcIiwgU29ydC50b19zdHJpbmcoc29ydCldXG4gICAgQCAoaGFzX2NhcmV0ID8gW1wiaW5kaWNhdGVkLWNhcmV0XCJdIDogW1wiaW5kaWNhdGVkXCJdKTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS1uZXh0LXN0ZXBcIl07XG4gIHNpbXBsZV9zaGFyZChcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5zaGFwZXMsXG4gICAgfnBhdGhfY2xzLFxuICAgIH5iYXNlX2NscyxcbiAgICB+YXR0cj1bXG4gICAgICBBdHRyLm9uX21vdXNlZG93bihfID0+IHtcbiAgICAgICAgcHJpbnRfZW5kbGluZShcIkNMSUNLIVwiKTtcbiAgICAgICAgaW5qZWN0KCk7XG4gICAgICB9KSxcbiAgICBdLFxuICAgIG1lYXN1cmVtZW50LFxuICApO1xufTtcblxubGV0IG5leHRfc3RlcF9zaGFyZHNfaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5jYXJldDogKElkLnQsIGludCksXG4gICAgICAoaWQsIG1vbGQsIHNoYXJkcyksXG4gICAgKVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0Lm1hcChcbiAgICAoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICBuZXh0X3N0ZXBfaW5kaWNhdGVkKFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICB+aGFzX2NhcmV0PWNhcmV0ID09IChpZCwgaW5kZXgpLFxuICAgICAgICB+c2hhcGVzPU1vbGQubmliX3NoYXBlcyh+aW5kZXgsIG1vbGQpLFxuICAgICAgICB+c29ydD1tb2xkLm91dCxcbiAgICAgICAgfm1lYXN1cmVtZW50LFxuICAgICAgKSxcbiAgICBzaGFyZHMsXG4gICk7XG5cbmxldCB0YWtlbl9zdGVwX2luZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5oYXNfY2FyZXQsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnNvcnQsXG4gICAgICB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPVxuICAgIFtcInRpbGUtcGF0aFwiLCBcInJhaXNlZFwiLCBTb3J0LnRvX3N0cmluZyhzb3J0KV1cbiAgICBAIChoYXNfY2FyZXQgPyBbXCJpbmRpY2F0ZWQtY2FyZXRcIl0gOiBbXCJpbmRpY2F0ZWRcIl0pO1xuICBsZXQgYmFzZV9jbHMgPSBbXCJ0aWxlLXRha2VuLXN0ZXBcIl07XG4gIHNpbXBsZV9zaGFyZCh+Zm9udF9tZXRyaWNzLCB+c2hhcGVzLCB+cGF0aF9jbHMsIH5iYXNlX2NscywgbWVhc3VyZW1lbnQpO1xufTtcblxubGV0IHRha2VuX3N0ZXBfc2hhcmRzX2luZGljYXRlZCA9XG4gICAgKH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsIH5jYXJldDogKElkLnQsIGludCksIChpZCwgbW9sZCwgc2hhcmRzKSlcbiAgICA6IGxpc3QodCkgPT5cbiAgTGlzdC5tYXAoXG4gICAgKChpbmRleCwgbWVhc3VyZW1lbnQpKSA9PlxuICAgICAgdGFrZW5fc3RlcF9pbmRpY2F0ZWQoXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5oYXNfY2FyZXQ9Y2FyZXQgPT0gKGlkLCBpbmRleCksXG4gICAgICAgIH5zaGFwZXM9TW9sZC5uaWJfc2hhcGVzKH5pbmRleCwgbW9sZCksXG4gICAgICAgIH5zb3J0PW1vbGQub3V0LFxuICAgICAgICB+bWVhc3VyZW1lbnQsXG4gICAgICApLFxuICAgIHNoYXJkcyxcbiAgKTtcblxubGV0IHNoYWRvd2Z1ZGdlID0gUGF0aC5jbWRmdWRnZSh+eT1EZWNVdGlsLnNoYWRvd19hZGopO1xuXG5sZXQgc2hhcmRzX29mX3RpbGVzID0gdGlsZXMgPT5cbiAgdGlsZXNcbiAgfD4gTGlzdC5jb25jYXRfbWFwKCgoXywgXywgc2hhcmRzKSkgPT4gc2hhcmRzKVxuICB8PiBMaXN0LnNvcnQoXG4gICAgICAgKChfLCBtMTogTWVhc3VyZWQubWVhc3VyZW1lbnQpLCAoXywgbTI6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSkgPT5cbiAgICAgICBNZWFzdXJlZC5Qb2ludC5jb21wYXJlKG0xLm9yaWdpbiwgbTIub3JpZ2luKVxuICAgICApO1xuXG5sZXQgYmlfbGluZXMgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cm93czogTWVhc3VyZWQuUm93cy50LFxuICAgICAgdGlsZXM6IGxpc3QoKElkLnQsIE1vbGQudCwgTWVhc3VyZWQuU2hhcmRzLnQpKSxcbiAgICApXG4gICAgOiBsaXN0KHQpID0+IHtcbiAgbGV0IHNoYXJkcyA9IHNoYXJkc19vZl90aWxlcyh0aWxlcyk7XG4gIGxldCBzaGFyZF9yb3dzID0gTWVhc3VyZWQuU2hhcmRzLnNwbGl0X2J5X3JvdyhzaGFyZHMpO1xuICBsZXQgaW50cmFfbGluZXMgPVxuICAgIHNoYXJkX3Jvd3NcbiAgICB8PiBMaXN0Lm1hcChMaXN0VXRpbC5uZWlnaGJvcnMpXG4gICAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICgoKF8sIGw6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSwgKF8sIHI6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSkpID0+XG4gICAgICAgICAgIChcbiAgICAgICAgICAgICBsLm9yaWdpbixcbiAgICAgICAgICAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgICBoKH54PXIubGFzdC5jb2wgLSBsLm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIClcbiAgICAgICAgICksXG4gICAgICAgKTtcbiAgbGV0IGludGVyX2xpbmVzID1cbiAgICBMaXN0VXRpbC5uZWlnaGJvcnMoc2hhcmRfcm93cylcbiAgICB8PiBMaXN0Lm1hcChcbiAgICAgICAgICgocm93X3NoYXJkczogTWVhc3VyZWQuU2hhcmRzLnQsIHJvd19zaGFyZHMnOiBNZWFzdXJlZC5TaGFyZHMudCkpID0+IHtcbiAgICAgICAgIGFzc2VydChyb3dfc2hhcmRzICE9IFtdKTtcbiAgICAgICAgIGFzc2VydChyb3dfc2hhcmRzJyAhPSBbXSk7XG4gICAgICAgICBsZXQgb3JpZ2luID0gc25kKExpc3QuaGQocm93X3NoYXJkcykpLm9yaWdpbjtcbiAgICAgICAgIGxldCBvcmlnaW4nID0gc25kKExpc3QuaGQocm93X3NoYXJkcycpKS5vcmlnaW47XG4gICAgICAgICBsZXQgaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKG9yaWdpbi5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgICAgIGxldCB2X2RlbHRhID0gb3JpZ2luJy5jb2wgPT0gaW5kZW50ID8gKC0xKSA6IDA7XG4gICAgICAgICAoXG4gICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICBoXyh+ZHg9aW5kZW50IC0gb3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodl8ofmR5PW9yaWdpbicucm93IC0gb3JpZ2luLnJvdyArIHZfZGVsdGEpKSxcbiAgICAgICAgICAgICBoXyh+ZHg9b3JpZ2luJy5jb2wgLSBpbmRlbnQpLFxuICAgICAgICAgICBdLFxuICAgICAgICAgKTtcbiAgICAgICB9KTtcbiAgLy8gVE9ETyhkKSBjbGVhbiB1cCBQcm9maWxlIGRhdGF0eXBlXG4gIGxldCBzID1cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IHRpbGVcIilcbiAgICB8IFsoXywgbW9sZCwgXyksIC4uLl9dID0+IG1vbGQub3V0XG4gICAgfTtcbiAgbGV0IGNsc3MgPSBbXCJjaGlsZC1saW5lXCIsIFNvcnQudG9fc3RyaW5nKHMpXTtcbiAgaW50cmFfbGluZXNcbiAgQCBpbnRlcl9saW5lc1xuICB8PiBMaXN0Lm1hcCgoKG9yaWdpbiwgcGF0aCkpID0+XG4gICAgICAgRGVjVXRpbC5jb2RlX3N2Zyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luLCB+cGF0aF9jbHM9Y2xzcywgcGF0aClcbiAgICAgKTtcbn07XG5cbmxldCB1bmlfbGluZXMgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cm93czogTWVhc3VyZWQuUm93cy50LFxuICAgICAgKGw6IE1lYXN1cmVkLlBvaW50LnQsIHI6IE1lYXN1cmVkLlBvaW50LnQpLFxuICAgICAgdGlsZXM6IGxpc3QoKElkLnQsIE1vbGQudCwgTWVhc3VyZWQuU2hhcmRzLnQpKSxcbiAgICApID0+IHtcbiAgb3BlbiBTdmdVdGlsLlBhdGg7XG4gIGxldCBzaGFyZHMgPSBzaGFyZHNfb2ZfdGlsZXModGlsZXMpO1xuICBsZXQgbF9saW5lID0ge1xuICAgIGxldCAoXywgbV9maXJzdCkgPSBMaXN0LmhkKHNoYXJkcyk7XG4gICAgbGV0IChfLCBtX2xhc3Rfb2ZfZmlyc3QpID0ge1xuICAgICAgbGV0IHNoYXJkX3Jvd3MgPSBNZWFzdXJlZC5TaGFyZHMuc3BsaXRfYnlfcm93KHNoYXJkcyk7XG4gICAgICBhc3NlcnQoc2hhcmRfcm93cyAhPSBbXSk7XG4gICAgICBsZXQgcm93ID0gTGlzdC5oZChzaGFyZF9yb3dzKTtcbiAgICAgIGFzc2VydChyb3cgIT0gW10pO1xuICAgICAgTGlzdFV0aWwubGFzdChyb3cpO1xuICAgIH07XG4gICAgaWYgKE1lYXN1cmVkLlBvaW50LmNvbXBhcmUobCwgbV9maXJzdC5vcmlnaW4pIDwgMCkge1xuICAgICAgbGV0IG1heF9jb2wgPVxuICAgICAgICBNZWFzdXJlZC5Sb3dzLm1heF9jb2woXG4gICAgICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCBtX2ZpcnN0Lm9yaWdpbi5yb3cpLFxuICAgICAgICAgIHJvd3MsXG4gICAgICAgIClcbiAgICAgICAgfD4gbWF4KG1fZmlyc3Qub3JpZ2luLmNvbCk7XG4gICAgICBsZXQgaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKG1fZmlyc3Qub3JpZ2luLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgW1xuICAgICAgICBsLnJvdyA9PSBtX2ZpcnN0Lm9yaWdpbi5yb3dcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIG1fZmlyc3Qub3JpZ2luLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICAgaCh+eD1sLmNvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgIExfKHtcbiAgICAgICAgICAgICAgICBkeDogLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgICAgICAgICAgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCAvLiAyLiAvL2hhY2tcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vTF8oe1xuICAgICAgICAgICAgICAvLyAgZHg6IERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICAgICAgICAvLyAgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCxcbiAgICAgICAgICAgICAgLy99KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgbV9maXJzdC5vcmlnaW4sXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIG1fZmlyc3Qub3JpZ2luLmNvbCA9PSBpbmRlbnRcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIG0ofng9bV9sYXN0X29mX2ZpcnN0Lmxhc3QuY29sIC0gbV9maXJzdC5vcmlnaW4uY29sLCB+eT0wKSxcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE8oZCkgbmVlZCB0byB0YWtlIG1heCBvZiBhbGwgcm93cywgbm90IGp1c3QgdG9wXG4gICAgICAgICAgICAgICAgICBoKH54PW1heF9jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1sLnJvdyAtIG1fbGFzdF9vZl9maXJzdC5vcmlnaW4ucm93KSksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgICAgICBoKH54PWluZGVudCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PWwucm93ICsgMSAtIG1fZmlyc3Qub3JpZ2luLnJvdykpLFxuICAgICAgICAgICAgICAgICAgaCh+eD1tYXhfY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9bC5yb3cgLSBtX2ZpcnN0Lm9yaWdpbi5yb3cpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBAIFtcbiAgICAgICAgICAgICAgaCh+eD1sLmNvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgIExfKHtcbiAgICAgICAgICAgICAgICBkeDogLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgICAgICAgICAgZHk6IERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCAvLiAyLiAvL2hhY2tcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vTF8oe2R4OiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCwgZHk6IERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW107XG4gICAgfTtcbiAgfTtcbiAgbGV0IHJfbGluZSA9IHtcbiAgICBsZXQgKF8sIG1fbGFzdCkgPSBMaXN0VXRpbC5sYXN0KHNoYXJkcyk7XG4gICAgbGV0IGhvb2sgPSBbXG4gICAgICBMXyh7XG4gICAgICAgIGR4OiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodCAvLiAyLiAvL2hhY2tcbiAgICAgIH0pLFxuICAgICAgLy9MXyh7ZHg6IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLCBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgXTtcbiAgICBpZiAoci5yb3cgPT0gbV9sYXN0Lmxhc3Qucm93ICYmIHIuY29sID4gbV9sYXN0Lmxhc3QuY29sKSB7XG4gICAgICBbXG4gICAgICAgIChcbiAgICAgICAgICBtX2xhc3Qub3JpZ2luLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKFxuICAgICAgICAgICAgICBtKFxuICAgICAgICAgICAgICAgIH54PW1fbGFzdC5sYXN0LmNvbCAtIG1fbGFzdC5vcmlnaW4uY29sLFxuICAgICAgICAgICAgICAgIH55PW1fbGFzdC5sYXN0LnJvdyAtIG1fbGFzdC5vcmlnaW4ucm93ICsgMSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBoKH54PXIuY29sIC0gbV9sYXN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgLi4uaG9vayxcbiAgICAgICAgICBdLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKHIucm93ID4gbV9sYXN0Lmxhc3Qucm93KSB7XG4gICAgICBsZXQgbWluX2NvbCA9XG4gICAgICAgIE1lYXN1cmVkLlJvd3MubWluX2NvbChcbiAgICAgICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bV9sYXN0Lmxhc3Qucm93LCByLnJvdyArIDEpLFxuICAgICAgICAgIHJvd3MsXG4gICAgICAgIClcbiAgICAgICAgfD4gbWluKG1fbGFzdC5sYXN0LmNvbCk7XG4gICAgICAvLyBsZXQgcl9pbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoci5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgIGxldCAoXywgbV9mbGFzdCkgPSB7XG4gICAgICAgIGxldCBzaGFyZF9yb3dzID0gTWVhc3VyZWQuU2hhcmRzLnNwbGl0X2J5X3JvdyhzaGFyZHMpO1xuICAgICAgICBhc3NlcnQoc2hhcmRfcm93cyAhPSBbXSk7XG4gICAgICAgIGxldCByb3cgPSBMaXN0VXRpbC5sYXN0KHNoYXJkX3Jvd3MpO1xuICAgICAgICBhc3NlcnQocm93ICE9IFtdKTtcbiAgICAgICAgTGlzdC5oZChyb3cpO1xuICAgICAgfTtcbiAgICAgIC8vIGxldCBmbGFzdF9pbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQobV9mbGFzdC5vcmlnaW4ucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICBbXG4gICAgICAgIChcbiAgICAgICAgICBtX2ZsYXN0Lm9yaWdpbixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBzaGFkb3dmdWRnZShcbiAgICAgICAgICAgICAgbSh+eD0wLCB+eT1tX2ZsYXN0Lmxhc3Qucm93IC0gbV9mbGFzdC5vcmlnaW4ucm93ICsgMSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaCh+eD1taW5fY29sIC0gbV9mbGFzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9ci5yb3cgLSBtX2ZsYXN0Lm9yaWdpbi5yb3cgKyAxKSksXG4gICAgICAgICAgICBoKH54PXIuY29sIC0gbV9mbGFzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgIC4uLmhvb2ssXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtdO1xuICAgIH07XG4gIH07XG4gIC8vIFRPRE8oZCkgY2xlYW4gdXAgUHJvZmlsZSBkYXRhdHlwZVxuICBsZXQgcyA9XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSB0aWxlXCIpXG4gICAgfCBbKF8sIG1vbGQsIF8pLCAuLi5fXSA9PiBtb2xkLm91dFxuICAgIH07XG4gIGxldCBjbHNzID0gW1wiY2hpbGQtbGluZVwiLCBTb3J0LnRvX3N0cmluZyhzKV07XG4gIGxfbGluZVxuICBAIHJfbGluZVxuICB8PiBMaXN0Lm1hcCgoKG9yaWdpbiwgcGF0aCkpID0+XG4gICAgICAgRGVjVXRpbC5jb2RlX3N2Zyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luLCB+cGF0aF9jbHM9Y2xzcywgcGF0aClcbiAgICAgKTtcbn07XG5cbmxldCBpbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cm93czogTWVhc3VyZWQuUm93cy50LFxuICAgICAgfmNhcmV0LFxuICAgICAgfnRpbGVzLFxuICAgICAgcmFuZ2UsXG4gICAgKVxuICAgIDogbGlzdChOb2RlLnQpID0+IHtcbiAgTGlzdC5jb25jYXRfbWFwKHNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkKH5mb250X21ldHJpY3MsIH5jYXJldCksIHRpbGVzKVxuICBAIHVuaV9saW5lcyh+Zm9udF9tZXRyaWNzLCB+cm93cywgcmFuZ2UsIHRpbGVzKVxuICBAIGJpX2xpbmVzKH5mb250X21ldHJpY3MsIH5yb3dzLCB0aWxlcyk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBEZWNvID0gKE06IHtcbiAgICAgICAgICAgICAgICAgbGV0IHVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZTtcbiAgICAgICAgICAgICAgICAgbGV0IGVkaXRvcjogRWRpdG9yLnQ7XG4gICAgICAgICAgICAgICB9KSA9PiB7XG4gIGxldCBmb250X21ldHJpY3MgPSBNLnVpX3N0YXRlLmZvbnRfbWV0cmljcztcbiAgbGV0IG1hcCA9IE0uZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQ7XG4gIGxldCBzaG93X2JhY2twYWNrX3RhcmdldHMgPSBNLnVpX3N0YXRlLnNob3dfYmFja3BhY2tfdGFyZ2V0cztcbiAgbGV0IHRlcm1zID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50ZXJtcztcbiAgbGV0IHRlcm1fcmFuZ2VzID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcztcbiAgbGV0IHRpbGVzID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50aWxlcztcblxuICBsZXQgdGlsZSA9IGlkID0+IElkLk1hcC5maW5kKGlkLCB0aWxlcyk7XG5cbiAgbGV0IGNhcmV0ID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBsZXQgb3JpZ2luID0gWmlwcGVyLmNhcmV0X3BvaW50KG1hcCwgeik7XG4gICAgbGV0IHNoYXBlID0gWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KTtcbiAgICBsZXQgc2lkZSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgICAgfCBTb21lKChfLCBzaWRlLCBfKSkgPT4gc2lkZVxuICAgICAgfCBfID0+IFJpZ2h0XG4gICAgICB9O1xuICAgIFtDYXJldERlYy52aWV3KH5mb250X21ldHJpY3MsIH5wcm9maWxlPXtzaWRlLCBvcmlnaW4sIHNoYXBlfSldO1xuICB9O1xuXG4gIHR5cGUgc2hhcmRfZGF0YSA9IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpO1xuXG4gIGxldCBzZWxfc2hhcmRfc3ZnID1cbiAgICAgICh+aW5kZXg9PywgfnN0YXJ0X3NoYXBlLCBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsIHApXG4gICAgICA6IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpID0+IChcbiAgICBtZWFzdXJlbWVudCxcbiAgICBNb2xkLm5pYl9zaGFwZXMofmluZGV4PywgUGllY2UubW9sZF9vZih+c2hhcGU9c3RhcnRfc2hhcGUsIHApKSxcbiAgKTtcblxuICBsZXQgcmVjIHNlbF9vZl9waWVjZSA9XG4gICAgICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgcDogUGllY2UudClcbiAgICAgICAgICA6IChOaWIuU2hhcGUudCwgbGlzdChvcHRpb24oc2hhcmRfZGF0YSkpKSA9PiB7XG4gICAgbGV0IHNoYXJkX2RhdGEgPVxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFRpbGUodCkgPT4gc2VsX29mX3RpbGUofnN0YXJ0X3NoYXBlLCB0KVxuICAgICAgfCBHcm91dChnKSA9PiBbXG4gICAgICAgICAgU29tZShzZWxfc2hhcmRfc3ZnKH5zdGFydF9zaGFwZSwgTWVhc3VyZWQuZmluZF9nKGcsIG1hcCksIHApKSxcbiAgICAgICAgXVxuICAgICAgfCBTZWNvbmRhcnkodykgd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID0+IFtOb25lXVxuICAgICAgfCBTZWNvbmRhcnkodykgPT4gW1xuICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIE1lYXN1cmVkLmZpbmRfdyh3LCBtYXApLCBwKSksXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgbGV0IHN0YXJ0X3NoYXBlID1cbiAgICAgIHN3aXRjaCAoUGllY2UubmlicyhwKSkge1xuICAgICAgfCBOb25lID0+IHN0YXJ0X3NoYXBlXG4gICAgICB8IFNvbWUoKF8sIHtzaGFwZSwgX30pKSA9PiBzaGFwZVxuICAgICAgfTtcbiAgICAoc3RhcnRfc2hhcGUsIHNoYXJkX2RhdGEpO1xuICB9XG4gIGFuZCBzZWxfb2ZfdGlsZSA9ICh+c3RhcnRfc2hhcGUsIHQ6IFRpbGUudCk6IGxpc3Qob3B0aW9uKHNoYXJkX2RhdGEpKSA9PiB7XG4gICAgbGV0IHRpbGVfc2hhcmRzID1cbiAgICAgIE1lYXN1cmVkLmZpbmRfc2hhcmRzKHQsIG1hcClcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoaSwgXykpID0+IExpc3QubWVtKGksIHQuc2hhcmRzKSlcbiAgICAgIHw+IExpc3QubWFwKCgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIH5pbmRleCwgbWVhc3VyZW1lbnQsIFRpbGUodCkpKSxcbiAgICAgICAgICAgXVxuICAgICAgICAgKTtcbiAgICBsZXQgc2hhcGVfYXQgPSBpbmRleCA9PiBzbmQoTW9sZC5uaWJzKH5pbmRleCwgdC5tb2xkKSkuc2hhcGU7XG4gICAgbGV0IGNoaWxkcmVuX3NoYXJkcyA9XG4gICAgICB0LmNoaWxkcmVuIHw+IExpc3QubWFwaShpbmRleCA9PiBzZWxfb2Zfc2VnbWVudChzaGFwZV9hdChpbmRleCkpKTtcbiAgICBMaXN0VXRpbC5pbnRlcmxlYXZlKHRpbGVfc2hhcmRzLCBjaGlsZHJlbl9zaGFyZHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgfVxuICBhbmQgc2VsX29mX3NlZ21lbnQgPVxuICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkgPT4ge1xuICAgIHNlZ1xuICAgIHw+IExpc3RVdGlsLmZvbGRfbGVmdF9tYXAoc2VsX29mX3BpZWNlLCBzdGFydF9zaGFwZSlcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH1cbiAgYW5kIHNlbGVjdGVkX3BpZWNlcyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PlxuICAgIC8qIFdlIGRyYXcgYSBzaW5nbGUgZGVjbyBwZXIgcm93IGJ5IGRpdmlkaW5nIHBhcnRpb25pbmluZyB0aGUgc2hhcmRzXG4gICAgICogaW50byBsaW5lYnJlYWstc2VwZXJhdGVkIHNlZ21lbnRzLCB0aGVuIGNvbWJpbmluZyB0aGUgbWVhc3VyZW1lbnRzXG4gICAgICogYW5kIHNoYXBlcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3Qgc2hhcmQgb2YgZWFjaCBzZWdtZW50LiBJZGVhbGx5IHdlXG4gICAgICogY291bGQganVzdCBnZXQgdGhpcyBpbmZvIGZyb20gdGhlIHJvdyBtZWFzdXJlbWVudHMsIGJ1dCB3ZSBoYXZlIG5vXG4gICAgICogY3VycmVudCB3YXkgb2YgZmlndXJpbmcgb3V0IHNoYXBlcyBmb3Igd2hpdGVzcGFjZSB3aXRob3V0IHRyYXZlcnNpbmcgKi9cbiAgICBzZWxfb2Zfc2VnbWVudChcbiAgICAgIGZzdChTaWJsaW5ncy5zaGFwZXMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSxcbiAgICAgIHouc2VsZWN0aW9uLmNvbnRlbnQsXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLnNwbGl0X2F0X25vbmVzXG4gICAgfD4gTGlzdFV0aWwuZmlyc3RfYW5kX2xhc3RcbiAgICB8PiBMaXN0Lm1hcCgoKChtMSwgKGwxLCBfKSk6IHNoYXJkX2RhdGEsIChtMiwgKF8sIHIyKSk6IHNoYXJkX2RhdGEpKSA9PlxuICAgICAgICAgKCh7b3JpZ2luOiBtMS5vcmlnaW4sIGxhc3Q6IG0yLmxhc3R9LCAobDEsIHIyKSk6IHNoYXJkX2RhdGEpXG4gICAgICAgKVxuICAgIHw+IExpc3QubWFwKCgobWVhc3VyZW1lbnQsIHNoYXBlcykpID0+XG4gICAgICAgICBQaWVjZURlYy5zaW1wbGVfc2hhcmRfc2VsZWN0ZWQoXG4gICAgICAgICAgIH5idWZmZXI9U2VsZWN0aW9uLmlzX2J1ZmZlcih6LnNlbGVjdGlvbiksXG4gICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICAgICAgfnNoYXBlcyxcbiAgICAgICAgIClcbiAgICAgICApO1xuXG4gIGxldCBpbmRpY2F0ZWRfcGllY2VfZGVjbyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICB8IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IFtdXG4gICAgfCBOb25lID0+IFtdXG4gICAgfCBTb21lKChHcm91dChfKSwgXywgXykpID0+IFtdXG4gICAgfCBTb21lKChwLCBzaWRlLCBfKSkgPT5cbiAgICAgIC8vIHJvb3RfcHJvZmlsZSBjYWxjdWxhdGlvbiBhc3N1bWVzIHAgaXMgdGlsZVxuICAgICAgLy8gVE9ETyBlbmNvZGUgaW4gdHlwZXNcbiAgICAgIGxldCBfbmliX3NoYXBlID1cbiAgICAgICAgc3dpdGNoIChaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBOaWIuU2hhcGUuQ29udmV4XG4gICAgICAgIHwgU29tZShuaWIpID0+IE5pYi5TaGFwZS5yZWxhdGl2ZShuaWIsIHNpZGUpXG4gICAgICAgIH07XG4gICAgICBsZXQgcmFuZ2U6IG9wdGlvbigoTWVhc3VyZWQuUG9pbnQudCwgTWVhc3VyZWQuUG9pbnQudCkpID0ge1xuICAgICAgICAvLyBpZiAoUGllY2UuaGFzX2VuZHMocCkpIHtcbiAgICAgICAgbGV0IGlkID0gSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIHRlcm1zKSB8PiBBbnkucmVwX2lkO1xuICAgICAgICBzd2l0Y2ggKFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB8IFNvbWUoKHBfbCwgcF9yKSkgPT5cbiAgICAgICAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIG1hcCkub3JpZ2luO1xuICAgICAgICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgbWFwKS5sYXN0O1xuICAgICAgICAgIFNvbWUoKGwsIHIpKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgaW5kZXggPVxuICAgICAgICBzd2l0Y2ggKEluZGljYXRlZC5zaGFyZF9pbmRleCh6KSkge1xuICAgICAgICB8IE5vbmUgPT4gKC0xKVxuICAgICAgICB8IFNvbWUoaSkgPT4gaVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUocmFuZ2UpID0+XG4gICAgICAgIGxldCB0aWxlcyA9XG4gICAgICAgICAgSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIHRlcm1zKVxuICAgICAgICAgIHw+IEFueS5pZHNcbiAgICAgICAgICAvKiBOT1RFKGFuZHJldyk6IGRhcmtfaWRzIHdlcmUgb3JpZ2luYWxseSBmaWx0ZXJlZCBoZXJlLlxuICAgICAgICAgICAqIExlYXZpbmcgdGhpcyBjb21tZW50IGluIHBsYWNlIGluIGNhc2UgaXNzdWVzIGluIHRoZVxuICAgICAgICAgICAqIGZ1dHVyZSBhcmUgdHJhY2VkIGJhY2sgdG8gaGVyZS5cbiAgICAgICAgICAgKiB8PiBMaXN0LmZpbHRlcihpZCA9PiBpZCA+PSAwKSovXG4gICAgICAgICAgfD4gTGlzdC5tYXAoaWQgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHQgPSB0aWxlKGlkKTtcbiAgICAgICAgICAgICAgIChpZCwgdC5tb2xkLCBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApKTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgUGllY2VEZWMuaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfnJvd3M9bWFwLnJvd3MsXG4gICAgICAgICAgfmNhcmV0PShQaWVjZS5pZChwKSwgaW5kZXgpLFxuICAgICAgICAgIH50aWxlcyxcbiAgICAgICAgICByYW5nZSxcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIHRhcmdldHMgPSAofmNvbnRhaW5lcl9zaGFyZHM9PywgYnA6IEJhY2twYWNrLnQsIHNlZzogU2VnbWVudC50KSA9PiB7XG4gICAgbGV0IHdpdGhfY29udGFpbmVyX3NoYXJkcyA9ICgocHJlLCBzdWYpIGFzIHNpYnMpID0+XG4gICAgICBzd2l0Y2ggKGNvbnRhaW5lcl9zaGFyZHMpIHtcbiAgICAgIHwgTm9uZSA9PiBzaWJzXG4gICAgICB8IFNvbWUoKGwsIHIpKSA9PiAoW2wsIC4uLnByZV0sIHN1ZiBAIFtyXSlcbiAgICAgIH07XG4gICAgbGV0IHJvb3RfdGFyZ2V0cyA9XG4gICAgICBMaXN0VXRpbC5zcGxpdHMoc2VnKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCgobCwgcikpID0+IHtcbiAgICAgICAgICAgbGV0IHNpYnMgPVxuICAgICAgICAgICAgIFNlZ21lbnQuKGluY29tcGxldGVfdGlsZXMobCksIGluY29tcGxldGVfdGlsZXMocikpXG4gICAgICAgICAgICAgfD4gd2l0aF9jb250YWluZXJfc2hhcmRzO1xuICAgICAgICAgICBzd2l0Y2ggKEJhY2twYWNrLnBvcChzaWJzLCBicCkpIHtcbiAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgIHwgU29tZSgodHJ1ZSwgXywgXykpID0+IFtdXG4gICAgICAgICAgIHwgU29tZShfKSA9PlxuICAgICAgICAgICAgIGxldCBtZWFzdXJlbWVudCA9XG4gICAgICAgICAgICAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycygobCwgcikpKSB7XG4gICAgICAgICAgICAgICB8IChOb25lLCBOb25lKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUocCkpID0+XG4gICAgICAgICAgICAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1hcCk7XG4gICAgICAgICAgICAgICAgIE1lYXN1cmVkLntvcmlnaW46IG0ub3JpZ2luLCBsYXN0OiBtLm9yaWdpbn07XG4gICAgICAgICAgICAgICB8IChTb21lKHApLCBfKSA9PlxuICAgICAgICAgICAgICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtYXApO1xuICAgICAgICAgICAgICAgICBNZWFzdXJlZC57b3JpZ2luOiBtLmxhc3QsIGxhc3Q6IG0ubGFzdH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIGxldCBwcm9maWxlID1cbiAgICAgICAgICAgICAgIENhcmV0UG9zRGVjLlByb2ZpbGUue3N0eWxlOiBgU2libGluZywgbWVhc3VyZW1lbnQsIHNvcnQ6IEV4cH07XG4gICAgICAgICAgICAgW0NhcmV0UG9zRGVjLnZpZXcofmZvbnRfbWV0cmljcywgcHJvZmlsZSldO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSk7XG4gICAgc3dpdGNoIChyb290X3RhcmdldHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiByb290X3RhcmdldHNcbiAgICB8IFtdID0+XG4gICAgICBzZWdcbiAgICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgZnVuXG4gICAgICAgICAgIHwgUGllY2UuVGlsZSh0KSA9PiBTb21lKHQpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCh0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgICAgLy8gVE9ETyhkKTogdW5pZnkgd2l0aCBSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlc1xuICAgICAgICAgICBUaWxlLmNvbnRhaW5lZF9jaGlsZHJlbih0KVxuICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChsLCBzZWcsIHIpKSA9PlxuICAgICAgICAgICAgICAgIHRhcmdldHMofmNvbnRhaW5lcl9zaGFyZHM9KGwsIHIpLCBicCwgc2VnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICB9KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGJhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IFtcbiAgICBCYWNrcGFja1ZpZXcudmlldyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luPVppcHBlci5jYXJldF9wb2ludChtYXAsIHopLCB6KSxcbiAgXTtcblxuICBsZXQgdGFyZ2V0cycgPSAoYmFja3BhY2ssIHNlZykgPT4ge1xuICAgIHNob3dfYmFja3BhY2tfdGFyZ2V0cyAmJiBCYWNrcGFjay5yZXN0cmljdGVkKGJhY2twYWNrKVxuICAgICAgPyB0YXJnZXRzKGJhY2twYWNrLCBzZWcpIDogW107XG4gIH07XG5cbiAgbGV0IHRlcm1fZGVjb3JhdGlvbiA9XG4gICAgICAoXG4gICAgICAgIH5pZDogSWQudCxcbiAgICAgICAgZGVjbzpcbiAgICAgICAgICAoKE1lYXN1cmVkLlBvaW50LnQsIE1lYXN1cmVkLlBvaW50LnQsIFN2Z1V0aWwuUGF0aC50KSkgPT4gTm9kZS50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IChwX2wsIHBfcikgPSBUZXJtUmFuZ2VzLmZpbmQoaWQsIHRlcm1fcmFuZ2VzKTtcbiAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIG1hcCkub3JpZ2luO1xuICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgbWFwKS5sYXN0O1xuICAgIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICAgIGxldCByX2VkZ2UgPVxuICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCByLnJvdyArIDEpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoaSA9PiB7XG4gICAgICAgICAgIGxldCByb3cgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWFwLnJvd3MpO1xuICAgICAgICAgICBbaCh+eD1pID09IHIucm93ID8gci5jb2wgOiByb3cubWF4X2NvbCksIHZfKH5keT0xKV07XG4gICAgICAgICB9KTtcbiAgICBsZXQgbF9lZGdlID1cbiAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1sLnJvdywgci5yb3cgKyAxKVxuICAgICAgfD4gTGlzdC5yZXZfbWFwKGkgPT4ge1xuICAgICAgICAgICBsZXQgcm93ID0gTWVhc3VyZWQuUm93cy5maW5kKGksIG1hcC5yb3dzKTtcbiAgICAgICAgICAgW2gofng9aSA9PSBsLnJvdyA/IGwuY29sIDogcm93LmluZGVudCksIHZfKH5keT0tMSldO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgIGxldCBwYXRoID1cbiAgICAgIFttKH54PWwuY29sLCB+eT1sLnJvdyksIC4uLnJfZWRnZV1cbiAgICAgIEAgbF9lZGdlXG4gICAgICBAIFtaXVxuICAgICAgfD4gdHJhbnNsYXRlKHtkeDogRmxvYXQub2ZfaW50KC0gbC5jb2wpLCBkeTogRmxvYXQub2ZfaW50KC0gbC5yb3cpfSk7XG4gICAgKGwsIHIsIHBhdGgpIHw+IGRlY287XG4gIH07XG5cbiAgbGV0IHRlcm1faGlnaGxpZ2h0ID0gKH5jbHNzOiBsaXN0KHN0cmluZyksIGlkOiBJZC50KSA9PiB7XG4gICAgdGVybV9kZWNvcmF0aW9uKH5pZCwgKChvcmlnaW4sIGxhc3QsIHBhdGgpKSA9PlxuICAgICAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfm1lYXN1cmVtZW50PXtvcmlnaW4sIGxhc3R9LFxuICAgICAgICB+YmFzZV9jbHM9Y2xzcyxcbiAgICAgICAgcGF0aCxcbiAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBjb2xvcl9oaWdobGlnaHRzID0gKGNvbG9yaW5nczogbGlzdCgoSWQudCwgc3RyaW5nKSkpID0+IHtcbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAoKGlkLCBjb2xvcikpID0+XG4gICAgICAgIC8qIEhBQ0soYW5kcmV3KTogQ2F0Y2hpbmcgZXhjZXB0aW9ucyBzaW5jZSB3aGVuIHNob3dpbmdcbiAgICAgICAgICAgdGVybSBoaWdobGlnaHRzIHdoZW4gdGhlIGJhY2twYWNrIGlzIG5vbi1lbXB0eSwgdGhlXG4gICAgICAgICAgIHByb3NwZWN0aXZlIGNvbXBsZXRpb24gbWF5IGhhdmUgZGlmZmVyZW50IHRlcm0gaWRzXG4gICAgICAgICAgIHRoYW4gdGhlIGRpc3BsYXllZCBjb2RlLiAqL1xuICAgICAgICB0cnkoU29tZSh0ZXJtX2hpZ2hsaWdodCh+Y2xzcz1bXCJoaWdobGlnaHQtY29kZS1cIiArKyBjb2xvcl0sIGlkKSkpIHtcbiAgICAgICAgfCBOb3RfZm91bmQgPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgY29sb3JpbmdzLFxuICAgICk7XG4gIH07XG5cbiAgLy8gZmFzdGVyIGluZm9fbWFwIHRyYXZlcnNhbFxuICBsZXQgZXJyX2hvbGVzID0gZXJyb3JfaWRzID0+XG4gICAgTGlzdC5tYXAodGVybV9oaWdobGlnaHQofmNsc3M9W1wiZXJyLWhvbGVcIl0pLCBlcnJvcl9pZHMpO1xuXG4gIGxldCBuZXh0X3N0ZXBzID0gKG5leHRfc3RlcHMsIH5pbmplY3QpID0+IHtcbiAgICBsZXQgdGlsZXMgPSBMaXN0LmZpbHRlcl9tYXAoVGlsZU1hcC5maW5kX29wdChfLCB0aWxlcyksIG5leHRfc3RlcHMpO1xuICAgIExpc3QubWFwaShcbiAgICAgIChpLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgbGV0IGlkID0gVGlsZS5pZCh0KTtcbiAgICAgICAgbGV0IG1vbGQgPSB0Lm1vbGQ7XG4gICAgICAgIGxldCBzaGFyZHMgPSBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApO1xuICAgICAgICBQaWVjZURlYy5uZXh0X3N0ZXBfc2hhcmRzX2luZGljYXRlZChcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH5jYXJldD0oSWQuaW52YWxpZCwgMCksXG4gICAgICAgICAgfmluamVjdD0oKSA9PiBpbmplY3QoaSksXG4gICAgICAgICAgKGlkLCBtb2xkLCBzaGFyZHMpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHRpbGVzLFxuICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH07XG5cbiAgbGV0IHRha2VuX3N0ZXAgPSB0YWtlbl9zdGVwID0+IHtcbiAgICBsZXQgdGlsZXMgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICBUaWxlTWFwLmZpbmRfb3B0KF8sIHRpbGVzKSxcbiAgICAgICAgdGFrZW5fc3RlcCB8PiBPcHRpb24udG9fbGlzdCxcbiAgICAgICk7XG4gICAgTGlzdC5tYXAoXG4gICAgICAodDogVGlsZS50KSA9PiB7XG4gICAgICAgIGxldCBpZCA9IFRpbGUuaWQodCk7XG4gICAgICAgIGxldCBtb2xkID0gdC5tb2xkO1xuICAgICAgICBsZXQgc2hhcmRzID0gTWVhc3VyZWQuZmluZF9zaGFyZHModCwgbWFwKTtcbiAgICAgICAgUGllY2VEZWMudGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfmNhcmV0PShJZC5pbnZhbGlkLCAwKSxcbiAgICAgICAgICAoaWQsIG1vbGQsIHNoYXJkcyksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgdGlsZXMsXG4gICAgKVxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfTtcblxuICBsZXQgc3RhdGljcyA9IGVoID0+IGVycl9ob2xlcyhlaCk7XG5cbiAgbGV0IGVkaXRvciA9ICh6aXBwZXIsIHNlbF9zZWcpID0+XG4gICAgTGlzdC5jb25jYXQoW1xuICAgICAgY2FyZXQoemlwcGVyKSxcbiAgICAgIGluZGljYXRlZF9waWVjZV9kZWNvKHppcHBlciksXG4gICAgICBzZWxlY3RlZF9waWVjZXMoemlwcGVyKSxcbiAgICAgIGJhY2twYWNrKHppcHBlciksXG4gICAgICB0YXJnZXRzJyh6aXBwZXIuYmFja3BhY2ssIHNlbF9zZWcpLFxuICAgIF0pO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbC5SZXN1bHQuU3ludGF4O1xub3BlbiBIYXozbGNvcmU7XG5cbnR5cGUgbW9kZWwgPSB7XG4gIC8vIFVwZGF0ZTpcbiAgZWRpdG9yOiBFZGl0b3IudCxcbiAgLy8gQ2FsY3VsYXRlOlxuICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsXG59O1xuXG50eXBlIGFjdGlvbiA9IEFjdGlvbi50O1xuXG5sZXQgdXBkYXRlID0gKH5zZXR0aW5ncywgYWN0aW9uLCBtb2RlbCkgPT4ge1xuICBsZXQrIGVkaXRvciA9IFBlcmZvcm0uZ28ofnNldHRpbmdzLCBhY3Rpb24sIG1vZGVsLmVkaXRvcik7XG4gIHtlZGl0b3IsIHN0YXRpY3M6IG1vZGVsLnN0YXRpY3N9O1xufTtcblxubGV0IGNhbGN1bGF0ZSA9ICh+c2V0dGluZ3MsIH5zdGl0Y2gsIHtlZGl0b3IsIHN0YXRpY3N9IGFzIG1vZGVsKSA9PiB7XG4gIGxldCB0ZXJtID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbShlZGl0b3Iuc3RhdGUuemlwcGVyKSB8PiBmc3QgfD4gc3RpdGNoO1xuICBpZiAoRXhwLmZhc3RfZXF1YWwodGVybSwgc3RhdGljcy50ZXJtKSkge1xuICAgIG1vZGVsO1xuICB9IGVsc2Uge1xuICAgIHtcbiAgICAgIGVkaXRvcixcbiAgICAgIHN0YXRpY3M6IENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKH5zZXR0aW5ncywgdGVybSwgZWRpdG9yKSxcbiAgICB9O1xuICB9O1xufTtcblxuLy8gVGhlcmUgYXJlIG5vIGV2ZW50cyBmb3IgYSByZWFkLW9ubHkgZWRpdG9yXG50eXBlIGV2ZW50O1xuXG4vLyByZWFkLW9ubHkgZWRpdG9ycyBjYW5ub3QgYmUgc2VsZWN0ZWRcbnR5cGUgc2VsZWN0aW9uO1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIH5vdmVybGF5czogbGlzdChOb2RlLnQpPVtdLFxuICAgICAgfnNvcnQ9U29ydC5yb290LFxuICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICkgPT4ge1xuICBsZXQgY29kZV90ZXh0X3ZpZXcgPVxuICAgIENvZGUudmlldyhcbiAgICAgIH5zb3J0LFxuICAgICAgfmZvbnRfbWV0cmljcz11aV9zdGF0ZS5mb250X21ldHJpY3MsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICBtb2RlbC5lZGl0b3IsXG4gICAgKTtcbiAgbGV0IHN0YXRpY3NfZGVjb3MgPSB7XG4gICAgbW9kdWxlIERlY28gPVxuICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgbGV0IHVpX3N0YXRlID0gdWlfc3RhdGU7XG4gICAgICAgIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3I7XG4gICAgICB9KTtcbiAgICBEZWNvLnN0YXRpY3MobW9kZWwuc3RhdGljcy5lcnJvcl9pZHMpO1xuICB9O1xuICBOb2RlLmRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NlcyhbXCJjb2RlLWNvbnRhaW5lclwiXSldKSxcbiAgICBbY29kZV90ZXh0X3ZpZXddIEAgc3RhdGljc19kZWNvcyBAIG92ZXJsYXlzLFxuICApO1xufTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbnR5cGUgZWRpdG9yX2lkID0gc3RyaW5nO1xuXG50eXBlIG1vZGVsID0gUmVhZE9ubHlFZGl0b3IubW9kZWw7XG5cbnR5cGUgYWN0aW9uID0gUmVhZE9ubHlFZGl0b3IuYWN0aW9uO1xuXG5sZXQgdXBkYXRlID0gUmVhZE9ubHlFZGl0b3IudXBkYXRlO1xuXG5sZXQgY2FsY3VsYXRlID0gUmVhZE9ubHlFZGl0b3IuY2FsY3VsYXRlO1xuXG50eXBlIGV2ZW50ID1cbiAgfCBNYWtlQWN0aXZlXG4gIHwgTW91c2VVcFxuICB8IE1vdXNlRG93bjtcblxubW9kdWxlIFZpZXcgPSB7XG4gIGxldCBnZXRfZ29hbCA9XG4gICAgICAoXG4gICAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICAgIHRleHRfYm94OiBKcy50KERvbV9odG1sLmVsZW1lbnQpLFxuICAgICAgICBlOiBKcy50KERvbV9odG1sLm1vdXNlRXZlbnQpLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHJlY3QgPSB0ZXh0X2JveCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGxldCBnb2FsX3ggPSBmbG9hdF9vZl9pbnQoZSMjLmNsaWVudFgpO1xuICAgIGxldCBnb2FsX3kgPSBmbG9hdF9vZl9pbnQoZSMjLmNsaWVudFkpO1xuICAgIE1lYXN1cmVkLlBvaW50LntcbiAgICAgIHJvdzogRmxvYXQudG9faW50KChnb2FsX3kgLS4gcmVjdCMjLnRvcCkgLy4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQpLFxuICAgICAgY29sOlxuICAgICAgICBGbG9hdC4oXG4gICAgICAgICAgdG9faW50KHJvdW5kKChnb2FsX3ggLS4gcmVjdCMjLmxlZnQpIC8uIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgpKVxuICAgICAgICApLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IG1vdXNlZG93bl9vdmVybGF5ID0gKH5zaWduYWwsIH5pbmplY3QsIH5mb250X21ldHJpY3MpID0+XG4gICAgTm9kZS5kaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgIEF0dHIuW1xuICAgICAgICAgICAgaWQoXCJtb3VzZWRvd24tb3ZlcmxheVwiKSxcbiAgICAgICAgICAgIG9uX21vdXNldXAoXyA9PiBzaWduYWwoTW91c2VVcCkpLFxuICAgICAgICAgICAgb25fbW91c2Vtb3ZlKGUgPT4ge1xuICAgICAgICAgICAgICBsZXQgbW91c2VfaGFuZGxlciA9XG4gICAgICAgICAgICAgICAgZSMjLnRhcmdldCB8PiBKcy5PcHQuZ2V0KF8sIF8gPT4gZmFpbHdpdGgoXCJubyB0YXJnZXRcIikpO1xuICAgICAgICAgICAgICBsZXQgdGV4dF9ib3ggPVxuICAgICAgICAgICAgICAgIEpzVXRpbC5nZXRfY2hpbGRfd2l0aF9jbGFzcyhcbiAgICAgICAgICAgICAgICAgIG1vdXNlX2hhbmRsZXIjIy5wYXJlbnROb2RlXG4gICAgICAgICAgICAgICAgICB8PiBKcy5PcHQuZ2V0KF8sIF8gPT4gZmFpbHdpdGgoXCJcIikpXG4gICAgICAgICAgICAgICAgICB8PiBKcy5VbnNhZmUuY29lcmNlLFxuICAgICAgICAgICAgICAgICAgXCJjb2RlLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8PiBPcHRpb24uZ2V0O1xuICAgICAgICAgICAgICBsZXQgZ29hbCA9IGdldF9nb2FsKH5mb250X21ldHJpY3MsIHRleHRfYm94LCBlKTtcbiAgICAgICAgICAgICAgaW5qZWN0KEFjdGlvbi5TZWxlY3QoUmVzaXplKEdvYWwoUG9pbnQoZ29hbCkpKSkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIFtdLFxuICAgICk7XG5cbiAgbGV0IG1vdXNlZG93bl9oYW5kbGVyID0gKH5zaWduYWwsIH5pbmplY3QsIH5mb250X21ldHJpY3MsIGV2dCkgPT4ge1xuICAgIGxldCBnb2FsID1cbiAgICAgIGdldF9nb2FsKFxuICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICBldnQjIy5jdXJyZW50VGFyZ2V0XG4gICAgICAgIHw+IEpzLk9wdC5nZXQoXywgXyA9PiBmYWlsd2l0aChcIlwiKSlcbiAgICAgICAgfD4gSnNVdGlsLmdldF9jaGlsZF93aXRoX2NsYXNzKF8sIFwiY29kZS1jb250YWluZXJcIilcbiAgICAgICAgfD4gT3B0aW9uLmdldCxcbiAgICAgICAgZXZ0LFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKEpzVXRpbC5jdHJsX2hlbGQoZXZ0KSwgSnNVdGlsLm51bV9jbGlja3MoZXZ0KSkge1xuICAgIHwgKHRydWUsIF8pID0+XG4gICAgICBFZmZlY3QuTWFueShbXG4gICAgICAgIHNpZ25hbChNYWtlQWN0aXZlKSxcbiAgICAgICAgaW5qZWN0KEFjdGlvbi5Nb3ZlKEdvYWwoUG9pbnQoZ29hbCkpKSksXG4gICAgICAgIGluamVjdChBY3Rpb24uSnVtcChCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyKSksXG4gICAgICBdKVxuICAgIHwgKGZhbHNlLCAxKSA9PlxuICAgICAgRWZmZWN0Lk1hbnkoW1xuICAgICAgICBzaWduYWwoTW91c2VEb3duKSxcbiAgICAgICAgc2lnbmFsKE1ha2VBY3RpdmUpLFxuICAgICAgICBpbmplY3QoQWN0aW9uLk1vdmUoR29hbChQb2ludChnb2FsKSkpKSxcbiAgICAgIF0pXG4gICAgfCAoZmFsc2UsIDIpID0+IGluamVjdChBY3Rpb24uU2VsZWN0KFRpbGUoQ3VycmVudCkpKVxuICAgIHwgKGZhbHNlLCAzIHwgXykgPT4gaW5qZWN0KEFjdGlvbi5TZWxlY3QoU21hcnQpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPVxuICAgICAgKFxuICAgICAgICB+c2lnbmFsOiBldmVudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdDogYWN0aW9uID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICAgIH5zZWxlY3RlZDogYm9vbCxcbiAgICAgICAgfmhpZ2hsaWdodHM6IG9wdGlvbihDb2xvclN0ZXBzLmNvbG9yTWFwKSxcbiAgICAgICAgfm92ZXJsYXlzOiBsaXN0KE5vZGUudCk9W10sXG4gICAgICAgIH5zb3J0PT8sXG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICkgPT4ge1xuICAgIGxldCBlZGl0X2RlY29zID0ge1xuICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICBEZWNvLkRlY28oe1xuICAgICAgICAgIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3I7XG4gICAgICAgICAgbGV0IHVpX3N0YXRlID0gdWlfc3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgRGVjby5lZGl0b3IobW9kZWwuZWRpdG9yLnN0YXRlLnppcHBlciwgbW9kZWwuZWRpdG9yLnN0YXRlLm1ldGEuc2VnbWVudClcbiAgICAgIEAgKFxuICAgICAgICBzd2l0Y2ggKGhpZ2hsaWdodHMpIHtcbiAgICAgICAgfCBTb21lKGNvbG9yTWFwKSA9PlxuICAgICAgICAgIERlY28uY29sb3JfaGlnaGxpZ2h0cyhDb2xvclN0ZXBzLnRvX2xpc3QoY29sb3JNYXApKVxuICAgICAgICB8IF8gPT4gW11cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuICAgIGxldCBvdmVybGF5cyA9IGVkaXRfZGVjb3MgQCBvdmVybGF5cztcbiAgICBsZXQgY29kZV92aWV3ID1cbiAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcofnVpX3N0YXRlLCB+c2V0dGluZ3MsIH5vdmVybGF5cywgfnNvcnQ/LCBtb2RlbCk7XG4gICAgbGV0IG1vdXNlZG93bl9vdmVybGF5ID1cbiAgICAgIHNlbGVjdGVkICYmIHVpX3N0YXRlLm1vdXNlZG93blxuICAgICAgICA/IFtcbiAgICAgICAgICBtb3VzZWRvd25fb3ZlcmxheShcbiAgICAgICAgICAgIH5zaWduYWwsXG4gICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcz11aV9zdGF0ZS5mb250X21ldHJpY3MsXG4gICAgICAgICAgKSxcbiAgICAgICAgXVxuICAgICAgICA6IFtdO1xuICAgIGxldCBvbl9tb3VzZWRvd24gPVxuICAgICAgbW91c2Vkb3duX2hhbmRsZXIoXG4gICAgICAgIH5zaWduYWwsXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5mb250X21ldHJpY3M9dWlfc3RhdGUuZm9udF9tZXRyaWNzLFxuICAgICAgKTtcbiAgICBOb2RlLmRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIl0pLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjb2RlLWVkaXRvclwiXSksXG4gICAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24ob25fbW91c2Vkb3duKSxcbiAgICAgICAgXSksXG4gICAgICBtb3VzZWRvd25fb3ZlcmxheSBAIFtjb2RlX3ZpZXddLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgdmlldyA9IFZpZXcudmlldztcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgU3RlcHBlZCA9IHtcbiAgdHlwZSBtb2RlbCA9IHtcbiAgICBlZGl0b3I6IFJlYWRPbmx5RWRpdG9yLm1vZGVsLFxuICAgIHN0ZXA6IG9wdGlvbihFdmFsdWF0b3JTdGVwLnN0ZXApLFxuICAgIHN0ZXBfaWQ6IG9wdGlvbihJZC50KSxcbiAgfTtcblxuICB0eXBlIGFjdGlvbiA9IFJlYWRPbmx5RWRpdG9yLmFjdGlvbjtcblxuICB0eXBlIGV2ZW50ID0gUmVhZE9ubHlFZGl0b3IuZXZlbnQ7XG5cbiAgdHlwZSBzZWxlY3Rpb24gPSBSZWFkT25seUVkaXRvci5zZWxlY3Rpb247XG5cbiAgbGV0IHZpZXcgPVxuICAgICAgKH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsIH5zZXR0aW5ncywgfm92ZXJsYXlzPVtdLCBtb2RlbDogbW9kZWwpID0+IHtcbiAgICBsZXQgb3ZlcmxheXMgPSB7XG4gICAgICBtb2R1bGUgRGVjbyA9XG4gICAgICAgIERlY28uRGVjbyh7XG4gICAgICAgICAgbGV0IGVkaXRvciA9IG1vZGVsLmVkaXRvci5lZGl0b3I7XG4gICAgICAgICAgbGV0IHVpX3N0YXRlID0gdWlfc3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgb3ZlcmxheXMgQCBEZWNvLnRha2VuX3N0ZXAobW9kZWwuc3RlcF9pZCk7XG4gICAgfTtcbiAgICBSZWFkT25seUVkaXRvci52aWV3KH51aV9zdGF0ZSwgfnNldHRpbmdzLCB+b3ZlcmxheXMsIG1vZGVsLmVkaXRvcik7XG4gIH07XG59O1xuXG5tb2R1bGUgU3RlcHBhYmxlID0ge1xuICB0eXBlIG1vZGVsID0ge1xuICAgIGVkaXRvcjogQ29kZUVkaXRvci5tb2RlbCxcbiAgICBuZXh0X3N0ZXBzOiBsaXN0KElkLnQpLFxuICB9O1xuXG4gIHR5cGUgYWN0aW9uID0gQ29kZUVkaXRvci5hY3Rpb247XG5cbiAgdHlwZSBldmVudCA9XG4gICAgfCBUYWtlU3RlcChpbnQpO1xuXG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfnNpZ25hbDogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfm92ZXJsYXlzPVtdLFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICApID0+IHtcbiAgICBsZXQgb3ZlcmxheXMgPSB7XG4gICAgICBtb2R1bGUgRGVjbyA9XG4gICAgICAgIERlY28uRGVjbyh7XG4gICAgICAgICAgbGV0IGVkaXRvciA9IG1vZGVsLmVkaXRvci5lZGl0b3I7XG4gICAgICAgICAgbGV0IHVpX3N0YXRlID0gdWlfc3RhdGU7XG4gICAgICAgIH0pO1xuICAgICAgb3ZlcmxheXNcbiAgICAgIEAgRGVjby5uZXh0X3N0ZXBzKG1vZGVsLm5leHRfc3RlcHMsIH5pbmplY3Q9eCA9PiBzaWduYWwoVGFrZVN0ZXAoeCkpKTtcbiAgICB9O1xuICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcofnVpX3N0YXRlLCB+c2V0dGluZ3MsIH5vdmVybGF5cywgbW9kZWwuZWRpdG9yKTtcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEVkaXRvcnM7XG5sZXQgaW1nID0gY3JlYXRlKFwiaW1nXCIpO1xuXG5sZXQgc2xpZGUgPSAoaGVhZGVyLCBjb250ZW50KSA9PlxuICBkaXYoXG4gICAgfmtleT1cInNsaWRlXCIsXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZVwiKSxcbiAgICBbXG4gICAgICBoMSh+a2V5PVwiaGVhZGVyXCIsIH5hdHRyPUF0dHIuY2xhc3NfKFwic2xpZGUtaGVhZGVyXCIpLCBbdGV4dChoZWFkZXIpXSksXG4gICAgICBkaXYofmtleT1cImNvbnRlbnRcIiwgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZS1jb250ZW50XCIpLCBjb250ZW50KSxcbiAgICBdLFxuICApO1xuXG5sZXQgY29kZSA9IGNvbnRlbnQgPT4gc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImNvZGVcIiksIFt0ZXh0KGNvbnRlbnQpXSk7XG5cbmxldCBlbSA9IGNvbnRlbnQgPT4gc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImVtXCIpLCBbdGV4dChjb250ZW50KV0pO1xuXG5sZXQgZ2V0X2NvbnRlbnQgPVxuICBmdW5cbiAgfCBEb2N1bWVudGF0aW9uKFwiUHJvZ3JhbW1pbmcgRXhwcmVzc2l2ZWx5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlByb2dyYW1taW5nIEV4cHJlc3NpdmVseVwiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIllvdSBtaWdodCBub3QgaGF2ZSByZWFsaXplZCBpdCwgYnV0IHlvdSB3cm90ZSB5b3VyXG4gICAgICBmaXJzdCBjb21wdXRlciBwcm9ncmFtcyBpbiBncmFkZSBzY2hvb2wgaW4gdGhlIGZvcm0gb2ZcbiAgICAgIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMhXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkZvciBleGFtcGxlLCBlbnRlciB0aGUgcHJvZ3JhbSBcIiksXG4gICAgICAgICAgICBjb2RlKFwiMiArIDJcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbiB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3cuXG4gICAgICAgICAgICAgIEhhemVsIG9wZXJhdGVzIGxpa2UgYSBjYWxjdWxhdG9yLCBjb21wdXRpbmcgdGhlIHZhbHVlIG9mIHlvdXIgZXhwcmVzc2lvbiBieSBlcXVhdGlvbmFsbHkgc2ltcGxpZnlpbmcgaXQgKGkuZS4gZXZhbHVhdGluZyBpdCksIGhlcmUgdG8gdGhlIGludGVnZXIgdmFsdWUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBcIiksXG4gICAgICAgICAgICB0ZXh0KFwiVGhlIHN5bWJvbCBcIiksXG4gICAgICAgICAgICBjb2RlKFwi4omhXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBpcyBwcm9ub3VuY2VkIFxcXCJpcyBlcXVpdmFsZW50IHRvXFxcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29tcG9zaW5nIEFyaXRobWV0aWMgRXhwcmVzc2lvbnNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQ29tcG9zaW5nIEFyaXRobWV0aWMgRXhwcmVzc2lvbnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIGNvbnN0cnVjdGVkIFwiKSxcbiAgICAgICAgICAgIGVtKFwiY29tcG9zaXRpb25hbGx5XCIpLFxuICAgICAgICAgICAgdGV4dChcIjogYnkgY29tYmluaW5nIHNtYWxsZXIgZXhwcmVzc2lvbnMgdXNpbmcgdmFyaW91cyBcIiksXG4gICAgICAgICAgICBlbShcIm9wZXJhdG9yc1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIGxpa2UgYWRkaXRpb24gKFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIrXCIpLFxuICAgICAgICAgICAgdGV4dChcIikgYW5kIG11bHRpcGxpY2F0aW9uIChcIiksXG4gICAgICAgICAgICBjb2RlKFwiKlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIpLCBcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiB0byBmb3JtIGxhcmdlciBleHByZXNzaW9ucy4gVGhlIHNtYWxsZXN0IGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwibnVtYmVyIGxpdGVyYWxzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBsaWtlIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcIjQyXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiRm9yIGV4YW1wbGUsIGVudGVyIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICogMyArIDQgKiA1XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW4gdGhlIGV4cHJlc3Npb24gZWRpdG9yIGJlbG93LCBvYnNlcnZpbmcgdGhhdCBpdHMgdmFsdWUgaXMgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjI2XCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBUaGUgcmVhc29uIGlzIGJlY2F1c2Ugb2YgdGhlIGZhbWlsaWFyIG9yZGVyIG9mIG9wZXJhdGlvbnM6IG11bHRpcGxpY2F0aW9uIHByZWNlZGVzIGFkZGl0aW9uLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIEJ5IHJ1bm5pbmcgeW91ciBjdXJzb3IgdGhyb3VnaCB0aGlzIHByb2dyYW0sIG9ic2VydmUgaG93IEhhemVsJ3MgY3Vyc29yIGRlY29yYXRpb25zIGRlbW9uc3RyYXRlIHRoaXMgb3JkZXIgb2Ygb3BlcmF0aW9ucyBieSBncm91cGluZyB0b2dldGhlciB0aGUgb3BlcmFuZHMgb2YgZWFjaCBvcGVyYXRvci5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29tcHV0aW5nIEVxdWF0aW9uYWxseVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wdXRpbmcgRXF1YXRpb25hbGx5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJUbyBwcm92ZSB0aGF0IFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICogMyArIDQgKiA1IOKJoSAyNlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGluIGdyYWRlIHNjaG9vbCwgd2Ugd291bGQgaGF2ZSB3cml0dGVuIG91dCBhIHNlcmllcyBvZiBlcXVhdGlvbmFsIHN0ZXBzLCBlYWNoIHNpbXBsaWZ5aW5nIHRoZSBleHByZXNzaW9uIGZyb20gdGhlIHByZXZpb3VzIHN0ZXAgYnkgcGVyZm9ybWluZyBvbmUgZWxlbWVudGFyeSBhcml0aG1ldGljIGNvbXB1dGF0aW9uIGF0IGEgdGltZS5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIlVzZSBIYXplbCdzIHN0ZXBwZXIgYnkgY2xpY2tpbmcgdGhlIGJ1dHRvbiB0byB0aGUgcmlnaHQgb2YgdGhlIHJlc3VsdCBiZWxvdyBhbmQgaW50ZXJhY3RpdmVseSBwcm92ZSB0aGF0IG91ciBldmFsdWF0aW9uIHRvIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCIyNlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGlzIGNvcnJlY3Qgb25lIGVsZW1lbnRhcnkgYXJpdGhtZXRpYyBzdGVwIGF0IGEgdGltZS4gVGhpcyBwcm9vZiBpcyB0aGUgZXNzZW5jZSBvZiBjb21wdXRhdGlvbiFcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiVmFyaWFibGVzXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlZhcmlhYmxlc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkFzIGl0IHR1cm5zIG91dCwgeW91IGNhbiBlbnJpY2ggYXJpdGhtZXRpYyBleHByZXNzaW9ucyB0byBnbyBmcm9tIHNpbXBsZSBpbnRlZ2VyIGNvbXB1dGF0aW9ucyB0byBnZW5lcmFsLXB1cnBvc2UgY29tcHV0YXRpb25zISBPdmVyIHRoZSBuZXh0IHNldmVyYWwgc2xpZGVzLCB3ZSB3aWxsIHNlZSBob3cgdGhpcyB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIk91ciBmaXJzdCBzdGVwIGlzIHRvIGludHJvZHVjZSBhIHdheSB0byBhYmJyZXZpYXRlIGV4cHJlc3Npb25zIHVzaW5nIHZhcmlhYmxlcy4gVHlwZSB0aGUgZXhwcmVzc2lvbiBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwibGV0IHggPSAyICogMyBpbiB4ICsgMVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGludG8gdGhlIGV4cHJlc3Npb24gZWRpdG9yIGJlbG93LCBvYnNlcnZpbmcgdGhhdCBpdCBldmFsdWF0ZXMgdG8gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjdcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBZb3UgY2FuIGluc2VydCBhIG5ldyBsaW5lIGFmdGVyIHRoZSBcIiksXG4gICAgICAgICAgICBjb2RlKFwiaW5cIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBrZXl3b3JkIHRvIG1ha2UgdGhlIHByb2dyYW0gbW9yZSBpZGlvbWF0aWMgKGkuZS4gcmVhZGFibGUpLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGFyZSBnaXZlbiBjb21wdXRhdGlvbmFsIG1lYW5pbmcgc2ltcGx5IGJ5IHN1YnN0aXR1dGlvbi4gVXNlIHRoZSBzdGVwcGVyIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29tcG9zaXRpb25hbGl0eVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wb3NpdGlvbmFsaXR5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgXCJMZXQgZXhwcmVzc2lvbnMgYXJlIGV4cHJlc3Npb25zLCBqdXN0IGxpa2UgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gQXMgd2UgZGlzY3Vzc2VkIGVhcmxpZXIsIGV4cHJlc3Npb25zIGFyZSBjb25zdHJ1Y3RlZCBjb21wb3NpdGlvbmFsbHksIHNvIHdlIGNhbiBldmVuIG1ha2UgYSBsZXQgZXhwcmVzc2lvbiBhbiBvcGVyYW5kIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IuXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJTY29wZVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJTY29wZVwiLFxuICAgICAgICBbXG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiVGhlIHNjb3BlIG9mIGEgdmFyaWFibGUgaXMgdGhlIGV4cHJlc3Npb24ocykgb2YgdGhlIHByb2dyYW0gd2hlcmUgaXQgaXMgYXZhaWxhYmxlIGZvciB1c2UuIEZvciBsZXQgZXhwcmVzc2lvbnMsIHRoZSBzdWItZXhwcmVzc2lvbiB0aGF0IGZvbGxvd3MgdGhlIFwiLFxuICAgICAgICAgICksXG4gICAgICAgICAgY29kZShcImluXCIpLFxuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIiBrZXl3b3JkIGhhcyB0aGUgdmFyaWFibGUgYm91bmQgYnkgdGhlIGxldCBleHByZXNzaW9uIGluIHNjb3BlLiBIYXplbCdzIGV4cHJlc3Npb24gZGVjb3JhdGlvbnMgc2hvdyB5b3Ugd2hlcmUgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZSB3aWxsIGVuZC5cIixcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlNoYWRvd2luZ1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJTaGFkb3dpbmdcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJPbmNlIGEgdmFyaWFibGUgaXMgZGVmaW5lZCwgaXQgY2Fubm90IGJlIGNoYW5nZWQuIFRoZXJlIGlzIG5vIGFzc2lnbm1lbnQgb3BlcmF0b3IgaW4gbGFuZ3VhZ2VzIGJhc2VkIG9uIHB1cmUgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb25zLCB3aGVyZSB2YXJpYWJsZXMgYXJlIGdpdmVuIG1lYW5pbmcgYnkgc3Vic3RpdHV0aW9uLCBsaWtlIEhhemVsLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUgYSBcIiksXG4gICAgICAgICAgICBlbShcIm5ldyB2YXJpYWJsZVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIHRoYXQgc2hhcmVzIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSBib3VuZCB2YXJpYWJsZS4gSG93ZXZlciwgdGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHJlZmVyIHRvIHRoZSBwcmV2aW91cyBiaW5kaW5nIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIG5ldyBiaW5kaW5nOyB3ZSBzYXkgdGhhdCB2YXJpYWJsZSBoYXMgYmVlbiBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlbShcInNoYWRvd2VkXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQm9vbGVhbnMgYW5kIFR5cGVzXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkJvb2xlYW5zIGFuZCBUeXBlc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIlNvIGZhciwgd2UgaGF2ZSBvbmx5IHNlZW4gZXhwcmVzc2lvbnMgdGhhdCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSG93ZXZlciwgSGF6ZWwgc3VwcG9ydHMgbWFueSBvdGhlciB0eXBlcyBvZiB2YWx1ZXMsIGxpa2UgYm9vbGVhbnMuIFRoZXJlIGFyZSB0d28gYm9vbGVhbiB2YWx1ZXMsIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJ0cnVlXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcImZhbHNlXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkhhemVsJ3MgdHlwZSBzeXN0ZW0gZW5zdXJlcyB0aGF0IGV4cHJlc3Npb25zIGFyZSB1c2VkIGluIHdheXMgdGhhdCBtYWtlIHNlbnNlLiBFYWNoIGV4cHJlc3Npb24gaGFzIGEgdHlwZSwgd2hpY2ggcHJlZGljdHMgdGhlIHR5cGUgb2YgaXRzIHZhbHVlLiBUaGUgZXhwcmVzc2lvbnMgaW4gdGhlIHByZXZpb3VzIHNsaWRlcyBhbGwgaGFkIHR5cGUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIkludFwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiLCB3aGljaCBpcyB0aGUgdHlwZSBvZiBpbnRlZ2Vycywgd2hlcmVhcyB0aGUgYm9vbGVhbiB2YWx1ZXMgaGF2ZSB0eXBlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJCb29sXCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJZb3UgY2FuIHNlZSB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiB5b3VyIGN1cnNvciBpcyBvbiBpbiB0aGUgY3Vyc29yIGluc3BlY3RvciBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoZSBzeW1ib2wgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjpcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGlzIHByb25vdW5jZWQgXFxcImhhcyB0eXBlXFxcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkJvb2xlYW4gdmFsdWVzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSB1c2luZyBjb21wYXJpc29uIG9wZXJhdG9ycyBsaWtlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCI8XCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgXCIpLFxuICAgICAgICAgICAgY29kZShcIj09XCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgYW5kIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCI+XCIpLFxuICAgICAgICAgICAgdGV4dChcIiBvbiBpbnRlZ2Vycy4gRm9yIGV4YW1wbGUsIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyIDwgM1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIgZXZhbHVhdGVzIHRvIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJ0cnVlXCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBCb29sZWFucyBjYW4gYWxzbyBiZSBjb21iaW5lZCB1c2luZyBsb2dpY2FsIGFuZCAoY29uanVuY3Rpb24pLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiJiZcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBhbmQgbG9naWNhbCBvciAoZGlzanVuY3Rpb24pLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwifHxcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb25kaXRpb25hbCBFeHByZXNzaW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb25kaXRpb25hbCBFeHByZXNzaW9uc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkdpdmVuIGEgYm9vbGVhbiBleHByZXNzaW9uLCB3ZSBjYW4gdXNlIGl0IHRvIGNob29zZSBiZXR3ZWVuIHR3byBleHByZXNzaW9ucyB1c2luZyBhIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwiY29uZGl0aW9uYWwgZXhwcmVzc2lvblwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIEZvciBleGFtcGxlLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiaWYgMiA8IDMgdGhlbiA0ICogNCBlbHNlIDUgKiA1XCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcIjRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJGdW5jdGlvbnNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiRnVuY3Rpb25zXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiRnVuY3Rpb25zIGFyZSBleHByZXNzaW9ucyB0aGF0IHRha2Ugb3RoZXIgZXhwcmVzc2lvbnMgYXMgaW5wdXRzIGFuZCBwcm9kdWNlIG90aGVyIGV4cHJlc3Npb25zIGFzIG91dHB1dHMuIEZvciBleGFtcGxlLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiZnVuIHggLT4geCArIDFcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gaW50ZWdlciBleHByZXNzaW9uIGFzIGlucHV0IGFuZCBwcm9kdWNlcyBhbiBpbnRlZ2VyIGV4cHJlc3Npb24gYXMgb3V0cHV0LlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiRnVuY3Rpb25zIGluIEhhemVsIGRvIG5vdCB0aGVtc2VsdmVzIGhhdmUgbmFtZXMuIEluc3RlYWQsIHlvdSBjYW4gdXNlIGEgbGV0IGV4cHJlc3Npb24gdG8gbmFtZSBhIGZ1bmN0aW9uLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiWW91IGFwcGx5IGEgZnVuY3Rpb24gdG8gYW4gYXJndW1lbnQgZXhwcmVzc2lvbiBieSB1c2luZyBwYXJlbnRoZXNlcyBpbiB0aGUgdXN1YWwgd2F5LiBGb3IgZXhhbXBsZSwgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcImxldCBmID0gZnVuIHggLT4geCArIDEgaW4gZigyKVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgZXZhbHVhdGVzIHRvIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIzXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIuIEdvIHRocm91Z2ggdGhpcyBleGFtcGxlIGluIHRoZSBzdGVwcGVyIHRvIHNlZSBob3cgc3Vic3RpdHV0aW9uIG9mIHRoZSBmdW5jdGlvbiBmb3IgdGhlIHZhcmlhYmxlIHN0YW5kaW5nIGZvciB0aGUgZnVuY3Rpb24gd29ya3MuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlR1cGxlc1wiLCBfKSA9PiBTb21lKHNsaWRlKFwiVHVwbGVzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUGF0dGVybiBNYXRjaGluZyBvbiBUdXBsZXNcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUGF0dGVybiBNYXRjaGluZyBvbiBUdXBsZXNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb25cIiwgXykgPT4gU29tZShzbGlkZShcIlJlY3Vyc2lvblwiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIkxpc3RzXCIsIF8pID0+IFNvbWUoc2xpZGUoXCJMaXN0c1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlBhdHRlcm4gTWF0Y2hpbmcgb24gTGlzdHNcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUGF0dGVybiBNYXRjaGluZyBvbiBMaXN0c1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvbiBvbiBMaXN0czogbGVuZ3RoXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlJlY3Vyc2lvbiBvbiBMaXN0czogbGVuZ3RoXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBzdW1cIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBzdW1cIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb24gb24gTGlzdHM6IG51bV96ZXJvc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJSZWN1cnNpb24gb24gTGlzdHM6IG51bV96ZXJvc1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIkhpZ2hlci1PcmRlciBGdW5jdGlvbnNcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiSGlnaGVyLU9yZGVyIEZ1bmN0aW9uc1wiLCBbXSkpXG4gIHwgXyA9PiBOb25lO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgaWNvbl9zaXplID0gMjAuO1xuXG5sZXQgc2ltcGxlX2ljb24gPSAofnRyYW5zZm9ybT1cIlwiLCB+dmlldzogc3RyaW5nLCBkczogbGlzdChzdHJpbmcpKSA9PlxuICAvKiB0YWtlcyBhIGxpc3Qgb2YgcGF0aHMgYXMgc3RyaW5ncywgYSB2aWV3cG9ydCBhcyBhIHN0cmluZyxcbiAgICAgYW5kIGFuIG9wdGlvbmFsIChzdHJpbmcpIHRyYW5zZm9ybSB0byBhcHBseSB0byBlYWNoICovXG4gIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFxuICAgICAgICBBdHRyLltcbiAgICAgICAgICBjcmVhdGUoXCJ2aWV3Qm94XCIsIHZpZXcpLFxuICAgICAgICAgIGNyZWF0ZShcIndpZHRoXCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBpY29uX3NpemUpKSxcbiAgICAgICAgICBjcmVhdGUoXCJoZWlnaHRcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIGljb25fc2l6ZSkpLFxuICAgICAgICAgIGNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBMaXN0Lm1hcChcbiAgICAgIGQgPT5cbiAgICAgICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgICAgIFwicGF0aFwiLFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgICBbQXR0ci5jcmVhdGUoXCJkXCIsIGQpXVxuICAgICAgICAgICAgICBAIChcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gPT0gXCJcIiA/IFtdIDogW0F0dHIuY3JlYXRlKFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFtdLFxuICAgICAgICApLFxuICAgICAgZHMsXG4gICAgKSxcbiAgKTtcblxubGV0IGdlYXIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm0xMTkzLjIgNjkwLjk1YzQuNDg4My0yOS42NjQgNi44MjgxLTYwLjA0NyA2LjgyODEtOTAuOTYxIDAtMzAuOTEtMi4zMzk4LTYxLjI3My02LjgyODEtOTAuOTM4bC0xNTEuMzctNzQuMzA1Yy0zLjgzOTgtMTAuMjYyLTguMDE1Ni0yMC4zNjMtMTIuNTYyLTMwLjI2Nmw1NC40NjktMTU5LjUyYy0zNi4xMDktNDkuMTQ4LTc5LjUyNy05Mi41NjYtMTI4LjY2LTEyOC42N2wtMTU5LjUzIDU0LjQ2OWMtOS44OTg0LTQuNTIzNC0xOS45OTItOC43MTA5LTMwLjI2Ni0xMi41NTFsLTc0LjMwMS0xNTEuMzZjLTI5LjY2NC00LjUyMzQtNjAuMDUxLTYuODUxNi05MC45NjEtNi44NTE2cy02MS4yODUgMi4zMjgxLTkwLjk0OSA2Ljg1MTZsLTc0LjMwNSAxNTEuMzZjLTEwLjI2MiAzLjgzOTgtMjAuMzUyIDguMDI3My0zMC4yNjYgMTIuNTUxbC0xNTkuNTItNTQuNDY1Yy00OS4xMjkgMzYuMTA5LTkyLjU0MyA3OS41MzUtMTI4LjY2IDEyOC42Nmw1NC40NTcgMTU5LjUyYy00LjUxMTcgOS44OTg0LTguNjg3NSAyMC4wMDQtMTIuNTM5IDMwLjI2NmwtMTUxLjM2IDc0LjMxMmMtNC41MTE3IDI5LjY2NC02Ljg1MTYgNjAuMDIzLTYuODUxNiA5MC45MzggMCAzMC45MSAyLjMzOTggNjEuMjk3IDYuODUxNiA5MC45NjFsMTUxLjM2IDc0LjMwNWMzLjg1MTYgMTAuMjYyIDguMDI3MyAyMC4zNTIgMTIuNTM5IDMwLjI3N2wtNTQuNDUzIDE1OS41MWMzNi4xMjEgNDkuMTI5IDc5LjUzNSA5Mi41NDMgMTI4LjY2IDEyOC42OGwxNTkuNTItNTQuNDU3YzkuOTEwMiA0LjUxMTcgMjAuMDA0IDguNjg3NSAzMC4yNjYgMTIuNTI3bDc0LjMwNSAxNTEuMzdjMjkuNjcyIDQuNTAzOSA2MC4wNDcgNi44NDM4IDkwLjk1NyA2Ljg0MzhzNjEuMjk3LTIuMzM5OCA5MC45NjEtNi44Mzk4bDc0LjI5My0xNTEuMzdjMTAuMjczLTMuODM5OCAyMC4zNjMtOC4wMTU2IDMwLjI4OS0xMi41MjdsMTU5LjUgNTQuNDU3YzQ5LjEyOS0zNi4xMzMgOTIuNTQzLTc5LjU0NyAxMjguNjUtMTI4LjY4bC01NC40NjEtMTU5LjUxYzQuNTQ2OS05LjkyNTggOC43MjI3LTIwLjAxNiAxMi41NjItMzAuMjc3em0tNTkzLjE3IDQ4LjUxNmMtNzcuMDE2IDAtMTM5LjQ0LTYyLjQ0OS0xMzkuNDQtMTM5LjQ4IDAtNzcuMDE2IDYyLjQyNi0xMzkuNDUgMTM5LjQ0LTEzOS40NXMxMzkuNDggNjIuNDM4IDEzOS40OCAxMzkuNDVjMCA3Ny4wMjctNjIuNDYxIDEzOS40OC0xMzkuNDggMTM5LjQ4elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBpbmZvID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtMTEyMC41IDUzMS43NWMtMTcuMDYyLTEzMC4yNC04Mi4zMzItMjQ5LjM2LTE4Mi45Mi0zMzMuODMtMTAwLjU5LTg0LjQ3Ny0yMjkuMTktMTI4LjE4LTM2MC40Mi0xMjIuNDgtMTMxLjIzIDUuNzAzMS0yNTUuNTYgNjAuMzk1LTM0OC40NCAxNTMuMjhzLTE0Ny41NyAyMTcuMjEtMTUzLjI4IDM0OC40NGMtNS42OTkyIDEzMS4yMyAzOCAyNTkuODMgMTIyLjQ4IDM2MC40MiA4NC40NzcgMTAwLjU5IDIwMy41OSAxNjUuODYgMzMzLjgzIDE4Mi45MiAxMDYuNzUgMTMuOTg0IDIxNS4yMi01LjE4NzUgMzEwLjcxLTU0LjkyMiA5NS40ODgtNDkuNzM0IDE3My4zOC0xMjcuNjIgMjIzLjExLTIyMy4xMSA0OS43MzQtOTUuNDkyIDY4LjkwNi0yMDMuOTYgNTQuOTIyLTMxMC43MXptLTQ0NS41IDMxNy4yNWMwIDI2Ljc5My0xNC4yOTMgNTEuNTU1LTM3LjUgNjQuOTUzLTIzLjIwNyAxMy4zOTUtNTEuNzkzIDEzLjM5NS03NSAwLTIzLjIwNy0xMy4zOTgtMzcuNS0zOC4xNi0zNy41LTY0Ljk1M3YtMjI1YzAtMjYuNzkzIDE0LjI5My01MS41NTUgMzcuNS02NC45NTMgMjMuMjA3LTEzLjM5NSA1MS43OTMtMTMuMzk1IDc1IDAgMjMuMjA3IDEzLjM5OCAzNy41IDM4LjE2IDM3LjUgNjQuOTUzem0tNzUtNDIzYy0xOS44OTEgMC0zOC45NjktNy45MDIzLTUzLjAzMS0yMS45NjktMTQuMDY2LTE0LjA2Mi0yMS45NjktMzMuMTQxLTIxLjk2OS01My4wMzFzNy45MDIzLTM4Ljk2OSAyMS45NjktNTMuMDMxYzE0LjA2Mi0xNC4wNjYgMzMuMTQxLTIxLjk2OSA1My4wMzEtMjEuOTY5czM4Ljk2OSA3LjkwMjMgNTMuMDMxIDIxLjk2OWMxNC4wNjYgMTQuMDYyIDIxLjk2OSAzMy4xNDEgMjEuOTY5IDUzLjAzMXMtNy45MDIzIDM4Ljk2OS0yMS45NjkgNTMuMDMxYy0xNC4wNjIgMTQuMDY2LTMzLjE0MSAyMS45NjktNTMuMDMxIDIxLjk2OXpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgc3RhciA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTEwNDUuMiA0NTkuNi0yNzAtNTcuNjAyLTEzNi44LTIzOC44Yy0xNi44MDEtMjguODAxLTU4LjgwMS0yOC44MDEtNzUuNjAyIDBsLTEzOCAyMzguOC0yNzAgNTcuNjAyYy0zMi4zOTggNy4xOTkyLTQ1LjYwMiA0Ni44MDEtMjQgNzJsMTg0LjggMjA1LjItMjguODAxIDI3My42Yy0zLjYwMTYgMzMuNTk4IDMwIDU3LjU5OCA2MS4xOTkgNDQuMzk4bDI1Mi0xMTEuNiAyNTIgMTExLjZjMzEuMTk5IDEzLjE5OSA2NC44MDEtMTAuODAxIDYxLjE5OS00NC4zOThsLTI4LjgwMS0yNzMuNiAxODQuOC0yMDUuMmMyMS42MDItMjUuMjAzIDkuNjAxNi02NC44MDEtMjQtNzJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJvbWIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm03MDAuODggMzY0Ljg4di05NC4zMTJjMC0xMC41LTguNDM3NS0xOC43NS0xOC43NS0xOC43NWgtOTguODEyYzEuMzEyNS0yMi41IDkuNTYyNS05NC42ODggNjEuNS0xMjMuMTkgNTIuNjg4LTI5LjA2MiAxNDAuMjUtNi4xODc1IDI1My4zMSA2Ni4zNzUgOC42MjUgNS42MjUgMjAuMjUgMy4xODc1IDI1Ljg3NS01LjYyNSA1LjYyNS04LjYyNSAzLTIwLjI1LTUuNjI1LTI1Ljg3NS0xMjcuMTItODEuNTYyLTIyNS4zOC0xMDQuNDQtMjkxLjk0LTY3LjY4OC03MC4zMTIgMzguODEyLTc5LjUgMTI5Ljc1LTgwLjYyNSAxNTZoLTk5Yy0xMC4zMTIgMC0xOC43NSA4LjI1LTE4Ljc1IDE4Ljc1djkyLjQzOGMwIDAuNTYyNSAwIDEuMzEyNSAwLjE4NzUgMS44NzUtMTUzLjE5IDU1LjY4OC0yNjIuNjkgMjAyLjY5LTI2Mi42OSAzNzQuODEgMCAyMTkuOTQgMTc4Ljg4IDM5OC44MSAzOTguODEgMzk4LjgxczM5OS0xNzguODggMzk5LTM5OC44MWMwLTE3MS45NC0xMDkuNS0zMTguNzUtMjYyLjUtMzc0Ljgxem0tODIuNjg4IDkwLjc1Yy05LjkzNzUtMy4xODc1LTE1LjM3NS0xMy42ODgtMTIuMzc1LTIzLjYyNSAzLjE4NzUtOS43NSAxMy42ODgtMTUuMzc1IDIzLjQzOC0xMi4xODggMi44MTI1IDAuOTM3NSAyNzkgOTAuNzUgMjM3Ljc1IDM4NS4zMS0xLjMxMjUgOS4zNzUtOS4zNzUgMTYuMTI1LTE4LjU2MiAxNi4xMjUtMC45Mzc1IDAtMS42ODc1IDAtMi42MjUtMC4xODc1LTEwLjMxMi0xLjMxMjUtMTcuNDM4LTEwLjg3NS0xNS45MzgtMjEgMzYuOTM4LTI2My42Mi0yMDEuNTYtMzQxLjI1LTIxMS42OS0zNDQuNDR6XCIsXG4gICAgICBcIm04OTMuMjUgMjQ0Ljg4LTMwLjU2MiAyOS4yNWMtMy41NjI1IDMuNTYyNS04LjI1IDUuMjUtMTIuOTM4IDUuMjUtNC44NzUgMC05LjkzNzUtMS44NzUtMTMuNS01LjgxMjUtNy4zMTI1LTcuNS02LjkzNzUtMTkuMzEyIDAuNTYyNS0yNi40MzhsMzAuNTYyLTI5LjI1YzcuNS03LjMxMjUgMTkuNS02LjkzNzUgMjYuNjI1IDAuNTYyNXM2Ljc1IDE5LjMxMi0wLjc1IDI2LjQzOHpcIixcbiAgICAgIFwibTk1OC4zMSA4My4yNS02Ljc1IDQxLjYyNWMtMS4zMTI1IDkuMzc1LTkuMzc1IDE1Ljc1LTE4LjM3NSAxNS43NS0wLjkzNzUgMC0yLjA2MjUgMC0zLTAuMTg3NS0xMC4zMTItMS42ODc1LTE3LjI1LTExLjI1LTE1LjU2Mi0yMS4zNzVsNi43NS00MS44MTJjMS42ODc1LTEwLjMxMiAxMS40MzgtMTcuMjUgMjEuNTYyLTE1LjU2MnMxNy4wNjIgMTEuMjUgMTUuMzc1IDIxLjU2MnpcIixcbiAgICAgIFwibTEwMjguNCAyNDkuOTRjLTMuNTYyNSA0LjUtOSA2LjkzNzUtMTQuNjI1IDYuOTM3NS00LjEyNSAwLTguMjUtMS4zMTI1LTExLjYyNS00LjEyNWwtMzMtMjYuNDM4Yy04LjA2MjUtNi41NjI1LTkuMzc1LTE4LjM3NS0yLjgxMjUtMjYuNDM4IDYuMzc1LTguMDYyNSAxOC4xODgtOS4zNzUgMjYuMjUtMi44MTI1bDMzIDI2LjQzOGM4LjA2MjUgNi41NjI1IDkuMzc1IDE4LjM3NSAyLjgxMjUgMjYuNDM4elwiLFxuICAgICAgXCJtMTAyMy42IDE1NS4wNi0zOC40MzggMTcuODEyYy0yLjQzNzUgMS4xMjUtNS4yNSAxLjY4NzUtNy44NzUgMS42ODc1LTYuOTM3NSAwLTEzLjg3NS00LjEyNS0xNy4wNjItMTAuODc1LTQuMzEyNS05LjM3NS0wLjE4NzUtMjAuNjI1IDkuMTg3NS0yNC45MzhsMzguNDM4LTE3LjgxMmM5LjM3NS00LjMxMjUgMjAuNjI1LTAuMTg3NSAyNC45MzggOS4xODc1czAuMTg3NSAyMC42MjUtOS4xODc1IDI0LjkzOHpcIixcbiAgICAgIFwibTk1Ni42MiAyODQuMDZjMC43NSAxMC4zMTItNy4xMjUgMTkuMzEyLTE3LjQzOCAxOS44NzUtMC41NjI1IDAuMTg3NS0wLjkzNzUgMC4xODc1LTEuMzEyNSAwLjE4NzUtOS43NSAwLTE4LTcuNjg3NS0xOC43NS0xNy42MjVsLTIuODEyNS00Mi4xODhjLTAuNTYyNS0xMC4zMTIgNy4xMjUtMTkuMzEyIDE3LjYyNS0xOS44NzUgMTAuMzEyLTAuNzUgMTkuMTI1IDcuMTI1IDE5Ljg3NSAxNy40Mzh6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGV4cG9ydCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDY3LjY3MSA2Ny42NzFcIixcbiAgICBbXG4gICAgICBcIk01Mi45NDYsMjMuMzQ4SDQyLjgzNHY2aDEwLjExMmMzLjAwNywwLDUuMzQsMS41MzYsNS4zNCwyLjg1OHYyNi42MDZjMCwxLjMyMi0yLjMzMywyLjg1OC01LjM0LDIuODU4SDE0LjcyNCAgIGMtMy4wMDcsMC01LjM0LTEuNTM2LTUuMzQtMi44NThWMzIuMjA3YzAtMS4zMjIsMi4zMzMtMi44NTgsNS4zNC0yLjg1OGgxMC4xMXYtNmgtMTAuMTFjLTYuMzU5LDAtMTEuMzQsMy44OTEtMTEuMzQsOC44NTh2MjYuNjA2ICAgYzAsNC45NjgsNC45ODEsOC44NTgsMTEuMzQsOC44NThoMzguMjIzYzYuMzU4LDAsMTEuMzQtMy44OTEsMTEuMzQtOC44NThWMzIuMjA3QzY0LjI4NiwyNy4yMzksNTkuMzA1LDIzLjM0OCw1Mi45NDYsMjMuMzQ4elwiLFxuICAgICAgXCJNMjQuOTU3LDE0Ljk1NWMwLjc2OCwwLDEuNTM1LTAuMjkzLDIuMTIxLTAuODc5bDMuNzU2LTMuNzU2djEzLjAyOHY2djExLjQ5NGMwLDEuNjU3LDEuMzQzLDMsMywzczMtMS4zNDMsMy0zVjI5LjM0OHYtNiAgIFYxMC4xMTdsMy45NTksMy45NTljMC41ODYsMC41ODYsMS4zNTQsMC44NzksMi4xMjEsMC44NzlzMS41MzUtMC4yOTMsMi4xMjEtMC44NzljMS4xNzItMS4xNzEsMS4xNzItMy4wNzEsMC00LjI0MmwtOC45NTctOC45NTcgICBDMzUuNDkyLDAuMjkxLDM0LjcyNSwwLDMzLjk1OCwwYy0wLjAwOCwwLTAuMDE1LDAtMC4wMjMsMHMtMC4wMTUsMC0wLjAyMywwYy0wLjc2NywwLTEuNTM0LDAuMjkxLTIuMTIsMC44NzdsLTguOTU3LDguOTU3ICAgYy0xLjE3MiwxLjE3MS0xLjE3MiwzLjA3MSwwLDQuMjQyQzIzLjQyMiwxNC42NjIsMjQuMTg5LDE0Ljk1NSwyNC45NTcsMTQuOTU1elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBpbXBvcnQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA2MSA2MVwiLFxuICAgIFtcbiAgICAgIFwiTTQ5LjU2MSwxNi40NjRIMzkuNDV2NmgxMC4xMTFjMy4wMDgsMCw1LjM0MSwxLjUzNSw1LjM0MSwyLjg1N3YyNi42MDdjMCwxLjMyMS0yLjMzMywyLjg1OC01LjM0MSwyLjg1OEgxMS4zNCAgIGMtMy4wMDcsMC01LjM0LTEuNTM3LTUuMzQtMi44NThWMjUuMzI0YzAtMS4zMjIsMi4zMzMtMi44NTgsNS4zNC0yLjg1OGgxMC4xMXYtNkgxMS4zNEM0Ljk4MSwxNi40NjYsMCwyMC4zNTcsMCwyNS4zMjR2MjYuNjA1ICAgYzAsNC45NjgsNC45ODEsOC44NTcsMTEuMzQsOC44NTdoMzguMjIzYzYuMzU3LDAsMTEuMzQtMy44OTEsMTEuMzQtOC44NTdWMjUuMzI0QzYwLjkwMiwyMC4zNTUsNTUuOTIxLDE2LjQ2NCw0OS41NjEsMTYuNDY0elwiLFxuICAgICAgXCJNMzkuNTI5LDI5LjAwNGMtMC43NjgsMC0xLjUzNSwwLjI5NC0yLjEyMSwwLjg4bC0zLjc1NiwzLjc1NVYyMC42MTJ2LTZWMy4xMTdjMC0xLjY1Ni0xLjM0My0zLTMtM3MtMywxLjM0NC0zLDN2MTEuNDk0djYgICB2MTMuMjNsLTMuOTU5LTMuOTU4Yy0wLjU4Ni0wLjU4Ni0xLjM1NC0wLjg4LTIuMTIxLTAuODhzLTEuNTM1LDAuMjk0LTIuMTIxLDAuODhjLTEuMTcyLDEuMTctMS4xNzIsMy4wNywwLDQuMjQxbDguOTU3LDguOTU3ICAgYzAuNTg2LDAuNTg2LDEuMzU0LDAuODc3LDIuMTIsMC44NzdjMC4wMDgsMCwwLjAxNiwwLDAuMDIzLDBzMC4wMTUsMCwwLjAyMiwwYzAuNzY4LDAsMS41MzQtMC4yOTEsMi4xMi0wLjg3N2w4Ljk1Ny04Ljk1NyAgIGMxLjE3Mi0xLjE3MSwxLjE3Mi0zLjA3MSwwLTQuMjQxQzQxLjA2NCwyOS4yOTgsNDAuMjk4LDI5LjAwNCwzOS41MjksMjkuMDA0elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB1bmRvID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNTEyIDUxMlwiLFxuICAgIFtcbiAgICAgIFwiTTEyOS43LDQ2LjRsMzcuMiwzNy43bC02Ni42LDY3LjFoMjU0LjRjODYuOCwwLDE1Ny4yLDcwLjQsMTU3LjIsMTU3LjJzLTcwLjQsMTU3LjItMTU3LjIsMTU3LjJoLTUyLjR2LTUyLjRoNTIuNCBjNTcuOSwwLDEwNC44LTQ2LjksMTA0LjgtMTA0LjhzLTQ2LjktMTA0LjgtMTA0LjgtMTA0LjhIMTAwLjRsNjYuNiw2NS44bC0zNy4yLDM2LjlMMCwxNzcuNEwxMjkuNyw0Ni40elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCByZWRvID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNTEyIDUxMlwiLFxuICAgIFtcbiAgICAgIFwiTTM4Mi4zLDQ2LjRsLTM3LjIsMzcuN2w2Ni42LDY3LjFIMTU3LjJDNzAuNCwxNTEuMiwwLDIyMS42LDAsMzA4LjRzNzAuNCwxNTcuMiwxNTcuMiwxNTcuMmg1Mi40di01Mi40aC01Mi40IGMtNTcuOSwwLTEwNC44LTQ2LjktMTA0LjgtMTA0LjhzNDYuOS0xMDQuOCwxMDQuOC0xMDQuOGgyNTQuNGwtNjYuNiw2NS44bDM2LjksMzYuOWwxMzAtMTI4LjlMMzgyLjMsNDYuNHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgY2lyY2xlX3F1ZXN0aW9uID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCItMC41IC0wLjUgMjUgMjVcIixcbiAgICBbXG4gICAgICBcIk0xMiAyYzUuNTE0IDAgMTAgNC40ODYgMTAgMTBzLTQuNDg2IDEwLTEwIDEwLTEwLTQuNDg2LTEwLTEwIDQuNDg2LTEwIDEwLTEwem0wLTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJzNS4zNzMgMTIgMTIgMTIgMTItNS4zNzMgMTItMTItNS4zNzMtMTItMTItMTJ6bTEuMjUgMTdjMCAuNjktLjU1OSAxLjI1LTEuMjUgMS4yNS0uNjg5IDAtMS4yNS0uNTYtMS4yNS0xLjI1cy41NjEtMS4yNSAxLjI1LTEuMjVjLjY5MSAwIDEuMjUuNTYgMS4yNSAxLjI1em0xLjM5My05Ljk5OGMtLjYwOC0uNjE2LTEuNTE1LS45NTUtMi41NTEtLjk1NS0yLjE4IDAtMy41OSAxLjU1LTMuNTkgMy45NWgyLjAxMWMwLTEuNDg2LjgyOS0yLjAxMyAxLjUzOC0yLjAxMy42MzQgMCAxLjMwNy40MjEgMS4zNjQgMS4yMjYuMDYyLjg0Ny0uMzkgMS4yNzctLjk2MiAxLjgyMS0xLjQxMiAxLjM0My0xLjQzOCAxLjk5My0xLjQzMiAzLjQ2OGgyLjAwNWMtLjAxMy0uNjY0LjAzLTEuMjAzLjkzNS0yLjE3OC42NzctLjczIDEuNTE5LTEuNjM4IDEuNTM2LTMuMDIyLjAxMS0uOTI0LS4yODQtMS43MTktLjg1NC0yLjI5N3pcIixcbiAgICBdLFxuICApO1xuXG5sZXQgZ2l0aHViID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCItMC41IC0wLjUgMjUgMjVcIixcbiAgICBbXG4gICAgICBcIk0xMiAwYy02LjYyNiAwLTEyIDUuMzczLTEyIDEyIDAgNS4zMDIgMy40MzggOS44IDguMjA3IDExLjM4Ny41OTkuMTExLjc5My0uMjYxLjc5My0uNTc3di0yLjIzNGMtMy4zMzguNzI2LTQuMDMzLTEuNDE2LTQuMDMzLTEuNDE2LS41NDYtMS4zODctMS4zMzMtMS43NTYtMS4zMzMtMS43NTYtMS4wODktLjc0NS4wODMtLjcyOS4wODMtLjcyOSAxLjIwNS4wODQgMS44MzkgMS4yMzcgMS44MzkgMS4yMzcgMS4wNyAxLjgzNCAyLjgwNyAxLjMwNCAzLjQ5Mi45OTcuMTA3LS43NzUuNDE4LTEuMzA1Ljc2Mi0xLjYwNC0yLjY2NS0uMzA1LTUuNDY3LTEuMzM0LTUuNDY3LTUuOTMxIDAtMS4zMTEuNDY5LTIuMzgxIDEuMjM2LTMuMjIxLS4xMjQtLjMwMy0uNTM1LTEuNTI0LjExNy0zLjE3NiAwIDAgMS4wMDgtLjMyMiAzLjMwMSAxLjIzLjk1Ny0uMjY2IDEuOTgzLS4zOTkgMy4wMDMtLjQwNCAxLjAyLjAwNSAyLjA0Ny4xMzggMy4wMDYuNDA0IDIuMjkxLTEuNTUyIDMuMjk3LTEuMjMgMy4yOTctMS4yMy42NTMgMS42NTMuMjQyIDIuODc0LjExOCAzLjE3Ni43Ny44NCAxLjIzNSAxLjkxMSAxLjIzNSAzLjIyMSAwIDQuNjA5LTIuODA3IDUuNjI0LTUuNDc5IDUuOTIxLjQzLjM3Mi44MjMgMS4xMDIuODIzIDIuMjIydjMuMjkzYzAgLjMxOS4xOTIuNjk0LjgwMS41NzYgNC43NjUtMS41ODkgOC4xOTktNi4wODYgOC4xOTktMTEuMzg2IDAtNi42MjctNS4zNzMtMTItMTItMTJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJhY2sgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAzMzAgMzMwXCIsXG4gICAgW1xuICAgICAgXCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMSAgYy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzbDEzOS4zOTMsMTM5LjM5TDc5LjM5MywzMDQuMzk0Yy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzICBDODIuMzIyLDMyOC41MzYsODYuMTYxLDMzMCw5MCwzMzBzNy42NzgtMS40NjQsMTAuNjA3LTQuMzk0bDE0OS45OTktMTUwLjAwNGMyLjgxNC0yLjgxMyw0LjM5NC02LjYyOCw0LjM5NC0xMC42MDYgIEMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIsXG4gICAgXSxcbiAgICB+dHJhbnNmb3JtPVwic2NhbGUoLTAuNzUsIDAuNzUpIHRyYW5zbGF0ZSgtMzMwLCA1MClcIixcbiAgKTtcblxubGV0IGZvcndhcmQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAzMzAgMzMwXCIsXG4gICAgW1xuICAgICAgXCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMSAgYy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzbDEzOS4zOTMsMTM5LjM5TDc5LjM5MywzMDQuMzk0Yy01Ljg1Nyw1Ljg1OC01Ljg1NywxNS4zNTUsMC4wMDEsMjEuMjEzICBDODIuMzIyLDMyOC41MzYsODYuMTYxLDMzMCw5MCwzMzBzNy42NzgtMS40NjQsMTAuNjA3LTQuMzk0bDE0OS45OTktMTUwLjAwNGMyLjgxNC0yLjgxMyw0LjM5NC02LjYyOCw0LjM5NC0xMC42MDYgIEMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIsXG4gICAgXSxcbiAgICB+dHJhbnNmb3JtPVwic2NhbGUoMC43NSwgMC43NSkgdHJhbnNsYXRlKDAsIDUwKVwiLFxuICApO1xuXG5sZXQgZXllID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNDggNDhcIixcbiAgICBbXG4gICAgICBcIk0yNCA5Yy0xMCAwLTE4LjU0IDYuMjItMjIgMTUgMy40NiA4Ljc4IDEyIDE1IDIyIDE1IDEwLjAxIDAgMTguNTQtNi4yMiAyMi0xNS0zLjQ2LTguNzgtMTEuOTktMTUtMjItMTV6bTAgMjVjLTUuNTIgMC0xMC00LjQ4LTEwLTEwczQuNDgtMTAgMTAtMTAgMTAgNC40OCAxMCAxMC00LjQ4IDEwLTEwIDEwem0wLTE2Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgdHJhc2ggPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAyNCAyNFwiLFxuICAgIFtcbiAgICAgIFwiTTMgNnYxOGgxOHYtMThoLTE4em01IDE0YzAgLjU1Mi0uNDQ4IDEtMSAxcy0xLS40NDgtMS0xdi0xMGMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MTB6bTUgMGMwIC41NTItLjQ0OCAxLTEgMXMtMS0uNDQ4LTEtMXYtMTBjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjEwem01IDBjMCAuNTUyLS40NDggMS0xIDFzLTEtLjQ0OC0xLTF2LTEwYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYxMHptNC0xOHYyaC0yMHYtMmg1LjcxMWMuOSAwIDEuNjMxLTEuMDk5IDEuNjMxLTJoNS4zMTVjMCAuOTAxLjczIDIgMS42MzEgMmg1LjcxMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgaGF6ZWxudXQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjEwMCAwIDUwMCA1MDBcIixcbiAgICBbXG4gICAgICBcIm00OTkuODQgMTMwLjUxYy05My4zNjMtOTMuMzYzLTIwNy41OS0xMjkuMDYtMzAwLjY1LTM2LjA1MS05NS4wNyA5NS4xMTMtMTE2LjA3IDIxMy4xNS02Mi41NjIgMzUwLjgzIDMuMTQ4NCA4LjA1MDgtMC44NzUgMjguNDM4IDkuNTM5MSAzOC44OTUgMTAuNDE0IDEwLjQ1NyAyOS44MzYgNS40Njg4IDM2LjcwNyA4LjAwNzggMTI4Ljg0IDQ3LjUxMiAyNTQuOCAzNy4xODggMzUzLjAyLTYxLjI1IDkzLjAwOC05Mi43OTcgNTcuMzUyLTIwNy4wMy0zNi4wNTUtMzAwLjQzem0tMTIuMzgzIDEyLjM4M2MzMi4yODkgMzIuMjg5IDg4LjUwOCA5OS41NzQgODUuMDk0IDE3My42NC03Ni4yMTEtMzMuMzQtODUuOTIyLTg1LjE0MS0xNDQuNzctMTQzLjk4LTM1LjQ4LTM1LjQ4LTEwMy44Mi01OC4wNTUtMTE2LjA3LTExNC42MiA2Ni4wMi00LjE5OTIgMTI5LjI0IDM4LjMyNCAxNzUuNzQgODQuOTYxem0zNi4wNTEgMjc1Ljg5Yy04Ny41IDg3LjUtMTk5Ljk4IDEwNi42Mi0zMzQuNTUgNTYuODc1LTkuMTg3NS0zLjM2NzItMjcuMzQ0LTEuMDUwOC0zMC42MjUtMy45Mzc1LTMuODk0NS0zLjkzNzUtMS41NzQyLTIyLjQ4OC01LjYwMTYtMzIuODU1LTUxLjUzOS0xMzIuNDgtMzIuMzc1LTI0MS4xMSA1OC42MjUtMzMyLjExIDI1LjQxOC0yNS4zNzUgNTMuMTEzLTQwLjk0OSA4Mi43NzMtNDYuNjggMTMuNDM0IDY2LjAxMiA4Ny4xOTUgOTAuNzc3IDEyMS41IDEyNC44NiA1OC40NDkgNTguNjcyIDY5LjA4MiAxMTQuMjMgMTU0Ljg4IDE0OS43MS01LjA3NDIgMjcuOTEtMTkuMjUgNTYuNDM4LTQ2Ljk4OCA4NC4xMjl6XCIsXG4gICAgICBcIm0yNzQuMDEgMzc0LjcyIDEwOC4xMS0xMDguMTFjMS43Njk1LTEuNjEzMyAyLjgwNDctMy44Nzg5IDIuODU5NC02LjI3MzQgMC4wNTQ2ODgtMi4zOTQ1LTAuODc1LTQuNzA3LTIuNTcwMy02LjM5ODQtMS42OTUzLTEuNjkxNC00LjAxMTctMi42MTMzLTYuNDA2Mi0yLjU1MDgtMi4zOTQ1IDAuMDY2NDA2LTQuNjYwMiAxLjEwNTUtNi4yNjU2IDIuODgyOGwtMTA4LjExIDEwOC4wNmMtMy40MTggMy40MjE5LTMuNDE4IDguOTY0OCAwIDEyLjM4M3M4Ljk2MDkgMy40MTggMTIuMzgzIDB6XCIsXG4gICAgICBcIm00NDUuNDIgMzk5LjYxYy0wLjUyMzQ0IDAuMzk0NTMtNTIuOTM4IDQwLjU1NS0xMTUuNTQgNDYuMjQyLTQuODMyIDAuNDM3NS04LjM5ODQgNC43MDctNy45NjA5IDkuNTM5MSAwLjQzMzU5IDQuODMyIDQuNzAzMSA4LjM5ODQgOS41MzUyIDcuOTYwOSA2Ny44NTUtNi4xNjggMTIyLjUtNDguMTI1IDEyNC42OS00OS44MzIgMS45MDYyLTEuMzk0NSAzLjE2OC0zLjUgMy40OTYxLTUuODM5OCAwLjMyODEzLTIuMzM5OC0wLjMwNDY5LTQuNzEwOS0xLjc1LTYuNTc4MS0xLjQ0OTItMS44NjcyLTMuNTg5OC0zLjA3MDMtNS45Mzc1LTMuMzM1OS0yLjM0MzgtMC4yNjE3Mi00LjY5OTIgMC40MzM1OS02LjUyNzMgMS45Mjk3elwiLFxuICAgICAgXCJtMzQ0LjkzIDQxMC42NGMyLjI2MTcgNC4yNjE3IDcuNTQ2OSA1Ljg4MjggMTEuODEyIDMuNjMyOCAzNC43NjItMTguNDM0IDY4LjAxNi0zOS41ODYgOTkuNDQxLTYzLjI2MiAzLjgwODYtMi45ODQ0IDQuNDcyNy04LjQ4ODMgMS40ODgzLTEyLjI5Ny0yLjk4NDQtMy44MDQ3LTguNDg4My00LjQ2ODgtMTIuMjkzLTEuNDg0NC0zMC42NDggMjMuMDA0LTYzLjAzMSA0My41OTgtOTYuODYzIDYxLjU5OC00LjI0MjIgMi4yODEyLTUuODQ3NyA3LjU1ODYtMy41ODU5IDExLjgxMnpcIixcbiAgICAgIFwibTM1MCAzNTcuNjFjLTIuODQzOC0zLjg5ODQtOC4zMDA4LTQuNzU3OC0xMi4yMDctMS45MjU4LTAuNTIzNDQgMC4zNTE1Ni01MC4xOCAzNi40NDUtMTA1LjYxIDcxLjA5NC0yLjAzOTEgMS4xOTUzLTMuNTA3OCAzLjE2NDEtNC4wNzQyIDUuNDYwOS0wLjU2MjUgMi4yOTY5LTAuMTc1NzggNC43MjI3IDEuMDc4MSA2LjczMDUgMS4yNTM5IDIuMDAzOSAzLjI2NTYgMy40MTQxIDUuNTc4MSAzLjkxNDEgMi4zMTI1IDAuNDk2MDkgNC43MjY2IDAuMDM5MDYyIDYuNjk1My0xLjI3MzQgNTYuMDQzLTM0LjczOCAxMDYtNzEuNDAyIDEwNi41My03MS43OTMgMy45MjU4LTIuODE2NCA0LjgyNDItOC4yODEyIDIuMDExNy0xMi4yMDd6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IG1hZ25pZnkgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAyNCAyNCBcIixcbiAgICBbXG4gICAgICBcIk0xNS41IDE0aC0uNzlsLS4yOC0uMjdBNi40NzEgNi40NzEgMCAwIDAgMTYgOS41IDYuNSA2LjUgMCAxIDAgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgY2hlc3QgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMDAgMTI1XCIsXG4gICAgW1xuICAgICAgXCJNNTYsNTR2LTRjMC0xLjEsMC45LTIsMi0yczIsMC45LDIsMnY0YzAsMS4xLTAuOSwyLTIsMlM1Niw1NS4xLDU2LDU0eiBNOTQsMjh2MTJ2MzZjMCwzLjMtMi43LDYtNiw2SDEyYy0zLjMsMC02LTIuNy02LTYgIFY0MFYyOGMwLTUuNSw0LjUtMTAsMTAtMTBoNjhDODkuNSwxOCw5NCwyMi41LDk0LDI4eiBNODQsMjJIMjRjMS4zLDEuNywyLDMuNywyLDZ2MTBoNjRWMjhDOTAsMjQuNyw4Ny4zLDIyLDg0LDIyeiBNMTAsMzhoMTJWMjggIGMwLTMuMy0yLjctNi02LTZzLTYsMi43LTYsNlYzOHogTTEyLDc4aDEwVjQySDEwdjM0QzEwLDc3LjEsMTAuOSw3OCwxMiw3OHogTTkwLDQySDI2djM2aDYyYzEuMSwwLDItMC45LDItMlY0MnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgc3Byb3V0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTAwIDEyNVwiLFxuICAgIFtcbiAgICAgIFwiTTQ4LjgsNjguMmMtMiwwLjgtMS42LDIuMi0yLjEsMi41Yy0wLjgsMC4zLTAuMS0xLTIuMS0xLjZjLTQuNS0xLjQtNCw0LjMtNi41LDQuMmMtMS43LTAuMS0xLjgtMC42LTMuNC0wLjQgIGMtMS42LDAuMy0xLjEsMi4xLTIuOSwyLjNjLTEuMSwwLjEtMC43LDEuMi0yLjQsMWMtMS40LTAuMi0yLDEuNi0yLjEsMi43Yy0wLjEsMC44LTAuMywxLjYtMS42LDIuM2MtMS4yLDAuNy0zLjMsMC4yLTQuNCwxLjcgIGMtMS42LDItMS43LDUuMS0xLjcsNS4xaDYwLjdjMCwwLTAuMS0yLjMtMi42LTMuOWMtMC43LTAuNCwwLjEtMC40LDAuNC0yYzAuMS0wLjYsMC0xLjUtMC43LTIuNmMtMC45LTEuMy0yLjctMC45LTMuNC0wLjcgIGMwLjItMC45LDAuMi0yLTEuMi0yLjljLTEtMC43LTEuMy0wLjMtMS45LTAuNGMtMC43LTAuMS0wLjMtMC44LTEtMS4yYy0xLjgtMS4xLTAuNS0yLjEtMy4zLTMuMmMtMS43LTAuNy0yLTAuNi01LjYtMC42ICBjLTEuNCwwLTEuNy0yLjMtMy42LTEuOGMtMS45LDAuNi0xLjEtMC41LTIuMi0xLjZjLTAuMy0wLjMtMC45LTAuNS0xLjUtMC41Yy0wLjEtMTAuNi0wLjEtMjQuNSwwLjMtMjcuMmMwLjYtNC41LDUuNy05LjgsMTMuMS0xMC42ICBjLTcsNS4yLTEwLjIsNi43LTEwLjgsOS45Yy0wLjYsMy4yLDUuMSwyLjUsOS42LDBjNC41LTIuNSwxMi4xLTE0LjYsMTIuNC0xOWMtNi40LTEuNi0yMiw0LjEtMjcuMSwxNi42QzQ5LjYsMjYuNiw0Ny43LDEyLDIwLjMsMTIgIGMtMC4xLDIuNiwwLjYsMi45LDEuOSw2LjFjMS4zLDMuMiw5LjksMTguMSwyMC43LDE3LjVjMS42LTAuMS0wLjMtMy44LTIuOS02LjhjMCwwLTYuNC01LjktOC4zLTcuNWM2LjQsMi41LDE2LjIsOS45LDE3LDE1LjMgIGMwLjUsMy41LDAuNCwyMC4yLDAuMiwzMS43QzQ5LDY4LjIsNDguOSw2OC4yLDQ4LjgsNjguMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgeCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMjk1MCAxMDAwIDQ1MCA0NTBcIixcbiAgICBbXG4gICAgICBcIk0zMzgyLjg0IDc4NC4zIDM0NjIuNDMgODYyLjgyOSAzNTQwLjk2IDc4My4yMzggMzYwMS4yMyA4NDIuNzA0IDM1MjIuNyA5MjIuMjk1IDM2MDIuMjkgMTAwMC44MiAzNTQyLjgyIDEwNjEuMDkgMzQ2My4yMyA5ODIuNTY2IDMzODQuNyAxMDYyLjE2IDMzMjQuNDMgMTAwMi42OSAzNDAyLjk2IDkyMy4xIDMzMjMuMzcgODQ0LjU3WlwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBiYWNrcGFjayA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEwMDAgMTAwMFwiLFxuICAgIFtcbiAgICAgIFwibTkwMi4wOSA3NjkuNTVjMC4zMzU5NC0zNS4xNDggMC4yMDMxMi0xMTIuMjktNS45MTQxLTE4OC41MiAwLjUzOTA2IDMyLjEyNSAxLjM3ODkgNjEuNTIzIDIuNDcyNyA3Ni45MDYgMC42MDkzOCA4LjgyNDIgMS45NTMxIDU1LjAyMyAzLjQ0MTQgMTExLjYxelwiLFxuICAgICAgXCJtNjA4LjE0IDEwOC40NWMxLjA0My0yNC42OTUtMC4yODkwNi01MS4xNDUgMjAuNjQxLTQ5LjYzMyAxMC4wNDMgMC43MzA0NyAyNy4zNDggMy4yODkxIDQ4Ljc1OCA3LjU3MDMgMjMuNzM0IDQuNzUzOSAyMC4zODcgMTMzLjQ1IDIwLjM4NyAxMzMuNDVsODYuMDUxIDMzLjQ1N2MyLjgzMi05My4xMzMtMjAuNDQ5LTIwMS4yOC00My42OC0yMDcuOS0zOC45My0xMS4xMDItOTYuMDU5LTM0LjI0Ni0xNTIuODMtMjEuODI4LTM3LjkzNCA4LjI5My00OC4wODYgMTQ3LjU1LTQ4LjA4NiAxNDcuNTVsNjYuMzgzIDE3LjM4N2MwLjAwMzkwNiAwIDAuNjk5MjItMjAuNTQzIDIuMzc4OS02MC4wNTl6XCIsXG4gICAgICBcIm0yMDcuNzYgNTc5LjJjMTMuOTggNS4xNzE5IDM3LjAyIDEyLjc3IDY0LjI5NyAyMS4zMjQgMjAuMzg3LTU2LjQ2MSA1NC45NjEtOTkuNTI3IDU0Ljk2MS05OS41MjdzNy45ODA1LTIwLjkxNCA0OC4wNy0xMi40OTJjNDAuMDk0IDguNDEwMiA0MS45NjUgMjYuNzExIDQxLjk2NSAyNi43MTFzLTI1Ljk2OSA0Mi4wOTgtNTEuMjE1IDk4LjgzMmMtMS41NTg2IDMuNTAzOS0zLjYxMzMgNy44NTk0LTUuMTcxOSAxMy4yMjMgNjMuNTYyIDE4LjUyNyAxMjQuOTggMzQuOTM0IDE0Mi42NCAzNi41MzkgMzQuNzY2IDMuMTc5NyAxMjIuMDkgNi45OTYxIDEzOC42OC03Ny4wMzkgMTYuMzY3LTgyLjkzNCAzMi41NjYtMTMzLjUyIDQ2LjM2Ny0xNjUuMTEgMi43NjE3LTYuODk4NCA1LjI0MjItMTIuNjEzIDcuMDY2NC0xNi43MzggMy43NTc4LTguNDk2MSAxNS4xOTEtMjUuNTM1IDMxLjgyNC00Mi4yMzh2LTAuMDIzNDM4YzAuMDQ2ODc1LTAuMTIxMDkgMC4xMjEwOS0wLjE3OTY5IDAuMjE0ODQtMC4yMDMxMiAyMi4yMjMtMjIuMTk5IDUzLjY2NC00My43MDMgODguNzY2LTQzLjU3IDEuODQ3NyAwIDQuMTA1NSAwLjIyNjU2IDYuNjEzMyAwLjYxMzI4LTIwLjY1Mi0yMi45NjktNDQuMTg0LTQyLjUyNy02OS4yMzgtNTIuMTg4LTUuNjk5Mi0yLjE5NTMtMjEyLjYyLTgzLjk3Ny0yNzQuNDQtNzUuMjI3LTEuNzc3MyAwLjI1MzkxLTMuNDMzNiAwLjQ5MjE5LTUuMDI3MyAwLjcxODc1IDMtMC40MzM1OSA1LjAyNzMtMC43MTg3NSA1LjAyNzMtMC43MTg3NS0wLjAwMzkwNy0wLjAwMzkwNi0xNDEuNzMgMy41MTE3LTIzNS40NSA5Ny4xNTYtNDguOTYxIDQ4LjkxLTkxLjk0NSAxMzYuNjYtMTE4LjkzIDIyMC45Ny0wLjM0NzY2IDIxLjM5OCAyNi45NTMgNDguMjc3IDgyLjk4IDY4Ljk4OHpcIixcbiAgICAgIFwibTQ4NC4zNSA3MjYuNjRjLTI3Ljg2My01LjExMzMtNzkuNjIxLTE5LjI5Ny0xMzQuNzktMzUuNjA1LTguMzk4NCAzMy4yMjctMS4yNjE3IDkwLjMwMS0xLjI2MTcgOTAuMzAxcy0xMC44NDggMjUuODk1LTUzLjYwNSAxNi40M2MtMzYuNDM0LTguMDg5OC0zNS40OTYtMzQuMzc5LTM1LjQ5Ni0zNC4zNzlzLTkuMzEyNS01My4zNTItMS4xMDU1LTEwMC4zMWMtNTIuNTEyLTE2LjUzNS05Ny4xMjktMzEuMzc5LTExMy41NC0zNy42OC0xOS43NTQtNy41NTg2LTMzLjk5Ni0xOC4wOTgtNDQuMjU4LTI5Ljg2Ny0wLjc1NzgxIDQuNjY4LTEuNDI5NyAyMy41Mi0yLjA2MjUgMjguMDA4LTM3LjIxOSAyNjUuMSA0MC4wMzUgMzc5LjI3IDQ1LjUwOCA0MDMuMzggNy4zNTU1IDMyLjQxIDE0OC41NyAxMDAuMzcgMjg0Ljg5IDE1MC4xNiA3OS4wNzggMjguODgzIDE2Ny4zNiAyMy4yODEgMjAyLjQzIDIwLjc2MmwyLjU2NjQtMC4xNDQ1M2M1LjU3ODEtMTAyLjUgMjAuNzczLTM2OS4zMiAyOC4yMjMtNTMyLjYxLTExLjgwNSA1OS45NTMtMTEwLjc5IDczLjc3Ny0xNzcuNSA2MS41NjJ6XCIsXG4gICAgICBcIm05MDIuMDkgNzY5LjU1Yy0xLjQ4ODMtNTYuNTk0LTIuODIwMy0xMDIuNzctMy40NDUzLTExMS42NC0xLjA5MzgtMTUuMzU5LTEuOTMzNi00NC43NjItMi40NzI3LTc2Ljg5NS01LjQ2MDktNjcuODcxLTIyLjk1Ny0xNDAuNzItMzcuOTIyLTE3OC41OS0yNS4xNTItNjMuNzQyLTk4LjE5NSAxNi4yMTEtMTE4LjgyIDY2LjU1MS0yMS4zNTkgNTIuMTI5LTQxLjU3OCA2NTMuMDMtNDMuNTQ3IDcxMi42IDUxLTEzLjI4NSAxMjQuMDUtMzIuMzUyIDEzMy4wMS00Ni40MDIgMTguOTczLTI5LjcxMSAyOS4yNTgtNTguNDc3IDMzLjk5Ni04Mi45NjkgMy4xNDQ1LTE2LjMwOSA0NS4zMjQtMzEuNTU5IDQ1LjMyNC0zMS41NTlzLTIuOTg4My0xMjkuNi01LjY4NzUtMjM0LjE5bC0wLjc0MjE5IDIuNzYxN2MwIDAuMDE5NTMxIDAuMjAzMTItNy4xOTE0IDAuMzEyNS0xOS42NzJ6XCIsXG4gICAgICBcIm0xMDg5LjEgNTA4LjI1cy0xMC44MTItMTI4Ljc5LTEzLjI2Mi0xNTMuODJjLTUuOTI5Ny02MC40NDUtNjAuNDU3LTI1NC44NC0yNDYuMzEtMTA1LjlsNDkuMjM0IDUzLjcxMXMxMjUuOTUtMTEzLjE4IDEzMC43IDE1Ni41YzAuMzk0NTMgMjIuODI0IDEuOTA2MiA1NC43MDcgMTUuNjM3IDI0Ni41OSAxNS4xOTEgMjEyLjE1LTY3Ljc3NyAyMTMuMzItNjcuNzc3IDIxMy4zMmwzLjc0MjIgOTAuMjE1czMwLjgxNi04LjA2MjUgNjIuNjQxLTIxLjQ1N2M0NS4wMzUtMTguOTczIDg4LjE4OC05OC4zNzUgODguMTg4LTIxNC43Ny0wLjAzOTA2Mi00Ni4wNTEtMjIuNzkzLTI2NC40MS0yMi43OTMtMjY0LjQxelwiLFxuICAgICAgXCJtNDM4LjI1IDE0OC4xOCA0MS4wOS02LjMxMjV2LTM0Ljc3M2w3LjkwNjItMjguNDQxcy0zNy45NDUgMTcuMzg3LTQ4Ljk5NiAzNC43NjZjLTExLjA2MiAxNy4zODctMTUuODE2IDI2Ljg2Ny0xNS44MTYgMzQuNzY2IDAgNy45MDYyIDE1LjgxNi0wLjAwMzkwNyAxNS44MTYtMC4wMDM5MDd6XCIsXG4gICAgXSxcbiAgKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgdmlldyA9ICh+aW5qZWN0LCBzZXR0aW5nczogQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCkgPT4ge1xuICBsZXQgbW9kYWwgPSBkaXYofmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLW1vZGFsXCIpXSkpO1xuICBsZXQgc2V0dGluZyA9IChpY29uLCBuYW1lLCBjdXJyZW50LCBhY3Rpb246IFVwZGF0ZUFjdGlvbi5zZXR0aW5nc19hY3Rpb24pID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLXRvZ2dsZVwiKV0pLFxuICAgICAgW1xuICAgICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1uYW1lLCBpY29uLCBjdXJyZW50LCBfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoYWN0aW9uKSlcbiAgICAgICAgKSxcbiAgICAgICAgdGV4dChuYW1lKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgW1xuICAgIG1vZGFsKFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLW1vZGFsLXRvcFwiKV0pLFxuICAgICAgICBbXG4gICAgICAgICAgV2lkZ2V0cy5idXR0b24oSWNvbnMueCwgXyA9PlxuICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoRXZhbHVhdGlvbihTaG93U2V0dGluZ3MpKSlcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwiaFwiLFxuICAgICAgICBcInNob3cgZnVsbCBzdGVwIHRyYWNlXCIsXG4gICAgICAgIHNldHRpbmdzLnN0ZXBwZXJfaGlzdG9yeSxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93UmVjb3JkKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcInxcIixcbiAgICAgICAgXCJzaG93IGNhc2UgY2xhdXNlc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Q2FzZUNsYXVzZXMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwizrtcIixcbiAgICAgICAgXCJzaG93IGZ1bmN0aW9uIGJvZGllc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2ZuX2JvZGllcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Rm5Cb2RpZXMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwieFwiLFxuICAgICAgICBcInNob3cgZml4cG9pbnRzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfZml4cG9pbnRzLFxuICAgICAgICBFdmFsdWF0aW9uKFNob3dGaXhwb2ludHMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFVuaWNvZGUuY2FzdEFycm93U3ltLFxuICAgICAgICBcInNob3cgY2FzdHNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXN0cyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Q2FzdHMpLFxuICAgICAgKSxcbiAgICAgIHNldHRpbmcoXG4gICAgICAgIFwi8J+UjVwiLFxuICAgICAgICBcInNob3cgbG9va3VwIHN0ZXBzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzLFxuICAgICAgICBFdmFsdWF0aW9uKFNob3dMb29rdXBzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIuKPr++4j1wiLFxuICAgICAgICBcInNob3cgc3RlcHBlciBmaWx0ZXJzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfc3RlcHBlcl9maWx0ZXJzLFxuICAgICAgICBFdmFsdWF0aW9uKFNob3dGaWx0ZXJzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIvCfpKtcIixcbiAgICAgICAgXCJzaG93IGhpZGRlbiBzdGVwc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2hpZGRlbl9zdGVwcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93SGlkZGVuU3RlcHMpLFxuICAgICAgKSxcbiAgICBdKSxcbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNsYXNzXyhcIm1vZGFsLWJhY2tcIiksXG4gICAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oXyA9PlxuICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoRXZhbHVhdGlvbihTaG93U2V0dGluZ3MpKSlcbiAgICAgICAgICApLFxuICAgICAgICBdKSxcbiAgICAgIFtdLFxuICAgICksXG4gIF07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHNlcV9iYXNpY19leHBfZXggPSB7XG4gIHN1Yl9pZDogU2VxQmFzaWMsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxOyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEsIHdoaWNoIGlzIGlnbm9yZWQuIFRoZW4gdGhlIHJpZ2h0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIHRvIDIuXCIsXG59O1xuLy8gVE9ETyBhcmUgdGhlc2UgcmVhbGx5IHRoZSBjb3JyZWN0IG1lc3NhZ2VzL2V4cGxhbmF0aW9uc1xubGV0IHNlcV90ZXN0X2V4cF9leCA9IHtcbiAgc3ViX2lkOiBTZXFUZXN0LFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZDsgM1wiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhbmQgcmVjb3JkZWQgYXMgYSBwYXNzaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyB0cnVlLiBUaGVuIHRoZSByaWdodCBleHByZXNzaW9uIGlzIGV2YWxhdXRlcyB0byAzLlwiLFxufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSxcbiAgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCksXG5dO1xubGV0IHNlcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFtsZWZ0IGV4cHJlc3Npb25dKCVzKSBpcyBldmFsdWF0ZWQsIHRoZW4gdGhlIFtyaWdodCBleHByZXNzaW9uXSglcykgaXMgZXZhbHVhdGVkLlwiO1xuICB7XG4gICAgaWQ6IFNlcUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzZXEoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzZXFfYmFzaWNfZXhwX2V4LCBzZXFfdGVzdF9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IHNlcXM6IGdyb3VwID0ge2lkOiBTZXFFeHAsIGZvcm1zOiBbc2VxX2V4cF19O1xuIiwibGV0IGZpbGxlZF9zbGlkZXMgPSBbXTtcblxubGV0IGVtcHR5OiBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSA9IHtcbiAgemlwcGVyOiBcIigoc2VsZWN0aW9uKChmb2N1cyBMZWZ0KShjb250ZW50KCkpKSkoYmFja3BhY2soKSkocmVsYXRpdmVzKChzaWJsaW5ncygoKSgoR3JvdXQoKGlkIDApKHNoYXBlIENvbnZleCkpKSkpKShhbmNlc3RvcnMoKSkpKShjYXJldCBPdXRlcikpXCIsXG4gIGJhY2t1cF90ZXh0OiBcIlwiLFxufTtcblxubGV0IG51bV9lbXB0eSA9IDg7XG5cbmxldCBpbml0X2RhdGEgPSBmaWxsZWRfc2xpZGVzIEAgTGlzdC5pbml0KG51bV9lbXB0eSwgXyA9PiBlbXB0eSk7XG5cbmFzc2VydChMaXN0Lmxlbmd0aChpbml0X2RhdGEpID4gMCk7XG5cbmxldCBpbml0ID0gKCkgPT4gKDAsIGluaXRfZGF0YSB8PiBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0KSk7XG5cbmxldCBpbml0X250aCA9IG4gPT4ge1xuICBsZXQgZGF0YSA9IExpc3QubnRoKGluaXRfZGF0YSwgbik7XG4gIFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmxldCBuYXJyYXRpdmVfY2VsbCA9IChjb250ZW50OiBOb2RlLnQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGxcIiksXG4gICAgW2Rpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGwtY2hhcHRlclwiKSwgW2NvbnRlbnRdKV0sXG4gICk7XG5cbmxldCBzaW1wbGVfY2VsbF9pdGVtID0gKGNvbnRlbnQ6IGxpc3QoTm9kZS50KSkgPT5cbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIl0pLCBjb250ZW50KTtcblxubGV0IGNhcHRpb24gPSAofnJlc3Q6IG9wdGlvbihzdHJpbmcpPT8sIGJvbGRlZDogc3RyaW5nKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzZXMoW1wiY2VsbC1jYXB0aW9uXCJdKV0pLFxuICAgIFtzdHJvbmcoW3RleHQoYm9sZGVkKV0pXSBAIChyZXN0IHw+IE9wdGlvbi5tYXAodGV4dCkgfD4gT3B0aW9uLnRvX2xpc3QpLFxuICApO1xuXG5sZXQgc2ltcGxlX2NlbGxfdmlldyA9IChpdGVtczogbGlzdCh0KSkgPT5cbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiY2VsbFwiKSwgaXRlbXMpO1xuXG5sZXQgcmVwb3J0X2Zvb3Rlcl92aWV3ID0gY29udGVudCA9PiB7XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXBvcnRcIl0pLCBjb250ZW50KTtcbn07XG5cbmxldCB0ZXN0X3JlcG9ydF9mb290ZXJfdmlldyA9ICh+aW5qZWN0LCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgcmVwb3J0X2Zvb3Rlcl92aWV3KFtUZXN0Vmlldy50ZXN0X3N1bW1hcnkofmluamVjdCwgfnRlc3RfcmVzdWx0cyldKTtcbn07XG5cbmxldCBwYW5lbCA9ICh+Y2xhc3Nlcz1bXSwgY29udGVudCwgfmZvb3Rlcjogb3B0aW9uKHQpKSA9PiB7XG4gIHNpbXBsZV9jZWxsX3ZpZXcoXG4gICAgW2Rpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwicGFuZWxcIl0gQCBjbGFzc2VzKSwgY29udGVudCldXG4gICAgQCBPcHRpb24udG9fbGlzdChmb290ZXIpLFxuICApO1xufTtcblxubGV0IHRpdGxlX2NlbGwgPSB0aXRsZSA9PiB7XG4gIHNpbXBsZV9jZWxsX3ZpZXcoW1xuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGl0bGUtY2VsbFwiKSxcbiAgICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJ0aXRsZS10ZXh0XCIpLCBbdGV4dCh0aXRsZSldKV0sXG4gICAgKSxcbiAgXSk7XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsO1xuXG50eXBlIG1vZGVsID0gTW9kZWxSZXN1bHQudDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhY3Rpb24gPVxuICB8IFN0ZXBwZXJFZGl0b3JBY3Rpb24oaW50LCBBY3Rpb24udClcbiAgfCBTdGVwcGVyQWN0aW9uKFVwZGF0ZUFjdGlvbi5zdGVwcGVyX2FjdGlvbilcbiAgfCBUb2dnbGVTdGVwcGVyO1xuXG5sZXQgdXBkYXRlID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIGFjdGlvbiwgbW9kZWwpID0+XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gIHwgU3RlcHBlckVkaXRvckFjdGlvbihpZHgsIGFjdGlvbikgPT5cbiAgICBNb2RlbFJlc3VsdC5wZXJmb3JtKH5zZXR0aW5ncywgaWR4LCBhY3Rpb24sIG1vZGVsKVxuICB8IFN0ZXBwZXJBY3Rpb24oc3RlcHBlcl9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChzdGVwcGVyX2FjdGlvbikge1xuICAgIHwgVXBkYXRlQWN0aW9uLlN0ZXBGb3J3YXJkKGlkeCkgPT4gTW9kZWxSZXN1bHQuc3RlcF9mb3J3YXJkKGlkeCwgbW9kZWwpXG4gICAgfCBVcGRhdGVBY3Rpb24uU3RlcEJhY2t3YXJkID0+XG4gICAgICBNb2RlbFJlc3VsdC5zdGVwX2JhY2t3YXJkKH5zZXR0aW5ncz1zZXR0aW5ncy5ldmFsdWF0aW9uLCBtb2RlbClcbiAgICB8IFVwZGF0ZUFjdGlvbi5IaWRlU3RlcHBlciA9PiBNb2RlbFJlc3VsdC50b2dnbGVfc3RlcHBlcih+c2V0dGluZ3MsIG1vZGVsKVxuICAgIH1cbiAgfCBUb2dnbGVTdGVwcGVyID0+IE1vZGVsUmVzdWx0LnRvZ2dsZV9zdGVwcGVyKH5zZXR0aW5ncywgbW9kZWwpXG4gIH07XG5cbm1vZHVsZSBWaWV3ID0ge1xuICB0eXBlIGV2ZW50ID1cbiAgICB8IE1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uY2VsbClcbiAgICB8IE1vdXNlVXBcbiAgICB8IE1vdXNlRG93bjtcblxuICBsZXQgZXJyb3JfbXNnID0gKGVycjogUHJvZ3JhbVJlc3VsdC5lcnJvcikgPT5cbiAgICBzd2l0Y2ggKGVycikge1xuICAgIHwgRXZhdWxhdG9yRXJyb3IoZXJyKSA9PiBFdmFsdWF0b3JFcnJvci5zaG93KGVycilcbiAgICB8IFVua25vd25FeGNlcHRpb24oc3RyKSA9PiBzdHJcbiAgICB8IFRpbWVvdXQgPT4gXCJFdmFsdWF0aW9uIHRpbWVkIG91dFwiXG4gICAgfTtcblxuICBsZXQgc3RhdHVzX29mOiBQcm9ncmFtUmVzdWx0LnQgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IFJlc3VsdFBlbmRpbmcgPT4gXCJwZW5kaW5nXCJcbiAgICB8IFJlc3VsdE9rKF8pID0+IFwib2tcIlxuICAgIHwgUmVzdWx0RmFpbChfKSA9PiBcImZhaWxcIlxuICAgIHwgT2ZmKF8pID0+IFwib2ZmXCI7XG5cbiAgbGV0IHN0ZXBwZXJfdmlldyA9XG4gICAgICAoXG4gICAgICAgIH5zaWduYWwgYXMgXzogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3Q6IGFjdGlvbiA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdF9nbG9iYWw6IFVwZGF0ZS50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgICAgfnJlYWRfb25seTogYm9vbCxcbiAgICAgICAgc3RlcHBlcjogU3RlcHBlci50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGhpc3RvcnkgPVxuICAgICAgU3RlcHBlci5nZXRfaGlzdG9yeSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLCBzdGVwcGVyKTtcbiAgICBzd2l0Y2ggKGhpc3RvcnkpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLl9dID0+XG4gICAgICBsZXQgYnV0dG9uX2JhY2sgPVxuICAgICAgICBXaWRnZXRzLmJ1dHRvbl9kKFxuICAgICAgICAgIEljb25zLnVuZG8sXG4gICAgICAgICAgaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEJhY2t3YXJkKSksXG4gICAgICAgICAgfmRpc2FibGVkPVxuICAgICAgICAgICAgIVN0ZXBwZXIuY2FuX3VuZG8ofnNldHRpbmdzPXNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbiwgc3RlcHBlciksXG4gICAgICAgICAgfnRvb2x0aXA9XCJTdGVwIEJhY2t3YXJkc1wiLFxuICAgICAgICApO1xuICAgICAgbGV0IGJ1dHRvbl9oaWRlX3N0ZXBwZXIgPVxuICAgICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgU3RlcHBlclwiLCBcInNcIiwgdHJ1ZSwgXyA9PlxuICAgICAgICAgIGluamVjdChTdGVwcGVyQWN0aW9uKEhpZGVTdGVwcGVyKSlcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b2dnbGVfc2hvd19oaXN0b3J5ID1cbiAgICAgICAgV2lkZ2V0cy50b2dnbGUoXG4gICAgICAgICAgfnRvb2x0aXA9XCJTaG93IEhpc3RvcnlcIixcbiAgICAgICAgICBcImhcIixcbiAgICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc3RlcHBlcl9oaXN0b3J5LFxuICAgICAgICAgIF8gPT5cbiAgICAgICAgICBpbmplY3RfZ2xvYmFsKFNldChFdmFsdWF0aW9uKFNob3dSZWNvcmQpKSlcbiAgICAgICAgKTtcbiAgICAgIGxldCBldmFsX3NldHRpbmdzID1cbiAgICAgICAgV2lkZ2V0cy5idXR0b24oSWNvbnMuZ2VhciwgXyA9PlxuICAgICAgICAgIGluamVjdF9nbG9iYWwoU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICk7XG4gICAgICBsZXQgKHN0YXRpY3MsIGVkaXRvciwgXykgPSBoZC5oaWRkZW5faGlzdG9yeSB8PiBBYmEuaGQ7XG4gICAgICBsZXQgY3VycmVudF9tb2RlbDogU3RlcHBlckVkaXRvci5TdGVwcGFibGUubW9kZWwgPSB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICB9LFxuICAgICAgICBuZXh0X3N0ZXBzOlxuICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgKG9wdGlvbjogRXZhbHVhdG9yU3RlcC5FdmFsT2JqLnQpID0+IG9wdGlvbi5kX2xvYyB8PiBFeHAucmVwX2lkLFxuICAgICAgICAgICAgc3RlcHBlci5uZXh0X29wdGlvbnMsXG4gICAgICAgICAgKSxcbiAgICAgIH07XG4gICAgICBsZXQgY3VycmVudCA9XG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgICAgICAgIHJlYWRfb25seVxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLnZpZXcoXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogTWF5YmUgZ2V0IHJpZCBvZiB0aGlzIHNpZ25hbD9cbiAgICAgICAgICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgICAgICAgICAgKFRha2VTdGVwKHgpKSA9PiBpbmplY3QoU3RlcHBlckFjdGlvbihTdGVwRm9yd2FyZCh4KSkpLFxuICAgICAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgfm92ZXJsYXlzPVtdLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiZXF1aXZcIiksIFtOb2RlLnRleHQoXCLiiaFcIildKSxcbiAgICAgICAgICAgICAgU3RlcHBlckVkaXRvci5TdGVwcGFibGUudmlldyhcbiAgICAgICAgICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgICAgICAgICAgKFRha2VTdGVwKHgpKSA9PiBpbmplY3QoU3RlcHBlckFjdGlvbihTdGVwRm9yd2FyZCh4KSkpLFxuICAgICAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgfm92ZXJsYXlzPVtdLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGJ1dHRvbl9iYWNrLFxuICAgICAgICAgICAgICBldmFsX3NldHRpbmdzLFxuICAgICAgICAgICAgICB0b2dnbGVfc2hvd19oaXN0b3J5LFxuICAgICAgICAgICAgICBidXR0b25faGlkZV9zdGVwcGVyLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgKTtcbiAgICAgIGxldCBwcmV2aW91c19zdGVwID1cbiAgICAgICAgICAofmhpZGRlbjogYm9vbCwgfmlkeCBhcyBfLCBzdGVwOiBTdGVwcGVyLnN0ZXBfaW5mbyk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgICAgIGxldCAoc3RhdGljcywgZWRpdG9yLCBfKSA9IHN0ZXAuaGlkZGVuX2hpc3RvcnkgfD4gQWJhLmhkO1xuICAgICAgICBsZXQgbW9kZWw6IFN0ZXBwZXJFZGl0b3IuU3RlcHBlZC5tb2RlbCA9IHtcbiAgICAgICAgICBlZGl0b3I6IHtcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHN0YXRpY3MsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGVwOiBzdGVwLmNob3Nlbl9zdGVwLCAvLyBUT0RPW01hdHRdOiByZWZhY3RvciBhd2F5IE9wdGlvbi5nZXRcbiAgICAgICAgICBzdGVwX2lkOlxuICAgICAgICAgICAgc3RlcC5jaG9zZW5fc3RlcFxuICAgICAgICAgICAgfD4gT3B0aW9uLm1hcCgoeDogRXZhbHVhdG9yU3RlcC5zdGVwKSA9PiB4LmRfbG9jIHw+IEV4cC5yZXBfaWQpLFxuICAgICAgICB9O1xuICAgICAgICBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhcbiAgICAgICAgICAgICAgICBbXCJjZWxsLWl0ZW1cIiwgXCJjZWxsLXJlc3VsdFwiXSBAIChoaWRkZW4gPyBbXCJoaWRkZW5cIl0gOiBbXSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBlZC52aWV3KFxuICAgICAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgfm92ZXJsYXlzPVtdLFxuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0ZXBwZXItanVzdGlmaWNhdGlvblwiXSksXG4gICAgICAgICAgICAgICAgc3RlcC5jaG9zZW5fc3RlcFxuICAgICAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKGNob3Nlbl9zdGVwOiBFdmFsdWF0b3JTdGVwLnN0ZXApID0+XG4gICAgICAgICAgICAgICAgICAgICBjaG9zZW5fc3RlcC5rbmQgfD4gU3RlcHBlci5nZXRfanVzdGlmaWNhdGlvbiB8PiBOb2RlLnRleHRcbiAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gT3B0aW9uLnRvX2xpc3QsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIF07XG4gICAgICB9O1xuICAgICAgKFxuICAgICAgICAoXG4gICAgICAgICAgc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLnN0ZXBwZXJfaGlzdG9yeVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGxldCBzdGVwczogbGlzdCgoYm9vbCwgU3RlcHBlci5zdGVwX2luZm8pKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICAgICBzdGVwID0+XG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIHN0ZXApLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLnNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbi5zaG93X2hpZGRlbl9zdGVwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdGVwcGVyLmhpZGRlbl9zdGVwc19vZl9pbmZvKHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IExpc3QubWFwKHggPT4gKHRydWUsIHgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICAgICAgIHw+IExpc3QudGw7XG4gICAgICAgICAgICAgIExpc3QubWFwaShcbiAgICAgICAgICAgICAgICAoaWR4LCAoaGlkZGVuLCBzdGVwKSkgPT5cbiAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3N0ZXAofmhpZGRlbiwgfmlkeD1pZHggKyAxLCBzdGVwKSxcbiAgICAgICAgICAgICAgICBzdGVwcyB8PiBMaXN0LnJldixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8PiBMaXN0LmZsYXR0ZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IFtdXG4gICAgICAgIClcbiAgICAgICAgQCBbY3VycmVudF1cbiAgICAgIClcbiAgICAgIEAgKFxuICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc2hvd19zZXR0aW5nc1xuICAgICAgICAgID8gU2V0dGluZ3NNb2RhbC52aWV3KFxuICAgICAgICAgICAgICB+aW5qZWN0PWluamVjdF9nbG9iYWwsXG4gICAgICAgICAgICAgIHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFtdXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbGV0IGxpdmVfZXZhbCA9XG4gICAgICAoXG4gICAgICAgIH5zaWduYWw6IGV2ZW50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+aW5qZWN0OiBhY3Rpb24gPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgIH5sb2NrZWQsXG4gICAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQuZXZhbF9yZXN1bHQsXG4gICAgICApID0+IHtcbiAgICBsZXQgZWRpdG9yID1cbiAgICAgIHN3aXRjaCAocmVzdWx0LmV2YWx1YXRpb24sIHJlc3VsdC5wcmV2aW91cykge1xuICAgICAgfCAoUmVzdWx0T2socmVzKSwgXykgPT4gcmVzLmVkaXRvclxuICAgICAgfCAoUmVzdWx0UGVuZGluZywgUmVzdWx0T2socmVzKSkgPT4gcmVzLmVkaXRvclxuICAgICAgfCBfID0+IHJlc3VsdC5lbGFiLmQgfD4gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSlcbiAgICAgIH07XG4gICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICBDb2RlRWRpdG9yLnZpZXcoXG4gICAgICAgIH5zaWduYWw9XG4gICAgICAgICAgZnVuXG4gICAgICAgICAgfCBNYWtlQWN0aXZlID0+IHNpZ25hbChNYWtlQWN0aXZlKE1haW5FZGl0b3IpKVxuICAgICAgICAgIHwgTW91c2VVcCA9PiBzaWduYWwoTW91c2VVcClcbiAgICAgICAgICB8IE1vdXNlRG93biA9PiBzaWduYWwoTW91c2VEb3duKSxcbiAgICAgICAgfmluamVjdD1hID0+IGluamVjdChTdGVwcGVyRWRpdG9yQWN0aW9uKDAsIGEpKSxcbiAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3RlZCxcbiAgICAgICAgfmhpZ2hsaWdodHM9Tm9uZSxcbiAgICAgICAgfnNvcnQ9U29ydC5yb290LFxuICAgICAgICB7ZWRpdG9yLCBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3N9LFxuICAgICAgKTtcbiAgICBsZXQgZXhuX3ZpZXcgPVxuICAgICAgc3dpdGNoIChyZXN1bHQuZXZhbHVhdGlvbikge1xuICAgICAgfCBSZXN1bHRGYWlsKGVycikgPT4gW1xuICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiZXJyb3ItbXNnXCJdKSwgW3RleHQoZXJyb3JfbXNnKGVycikpXSksXG4gICAgICAgIF1cbiAgICAgIHwgXyA9PiBbXVxuICAgICAgfTtcbiAgICBOb2RlLihcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVzdWx0XCJdKSxcbiAgICAgICAgZXhuX3ZpZXdcbiAgICAgICAgQCBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0YXR1c1wiLCBzdGF0dXNfb2YocmVzdWx0LmV2YWx1YXRpb24pXSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wic3Bpbm5lclwiXSksIFtdKSxcbiAgICAgICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJlcVwiXSksIFt0ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInJlc3VsdFwiLCBzdGF0dXNfb2YocmVzdWx0LmV2YWx1YXRpb24pXSksXG4gICAgICAgICAgICBbY29kZV92aWV3XSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgKFxuICAgICAgICAgIGxvY2tlZFxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIFdpZGdldHMudG9nZ2xlKH50b29sdGlwPVwiU2hvdyBTdGVwcGVyXCIsIFwic1wiLCBmYWxzZSwgXyA9PlxuICAgICAgICAgICAgICAgIGluamVjdChUb2dnbGVTdGVwcGVyKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbGV0IGZvb3RlciA9XG4gICAgICAoXG4gICAgICAgIH5zaWduYWwsXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5pbmplY3RfZ2xvYmFsLFxuICAgICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICAgIH5yZXN1bHQ6IE1vZGVsUmVzdWx0LnQsXG4gICAgICAgIH5zZWxlY3RlZDogb3B0aW9uKGludCksXG4gICAgICAgIH5sb2NrZWQsXG4gICAgICApID0+XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5keW5hbWljcyA9PiBbXVxuICAgIHwgTm9FbGFiID0+IFtdXG4gICAgfCBFdmFsdWF0aW9uKHJlc3VsdCkgPT4gW1xuICAgICAgICBsaXZlX2V2YWwoXG4gICAgICAgICAgfnNpZ25hbCxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfnNlbGVjdGVkPXNlbGVjdGVkID09IFNvbWUoMCksXG4gICAgICAgICAgfmxvY2tlZCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICksXG4gICAgICBdXG4gICAgfCBTdGVwcGVyKHMpID0+XG4gICAgICBzdGVwcGVyX3ZpZXcoXG4gICAgICAgIH5zaWduYWwsXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5pbmplY3RfZ2xvYmFsLFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnJlYWRfb25seT1sb2NrZWQsXG4gICAgICAgIHMsXG4gICAgICApXG4gICAgfTtcblxuICBsZXQgdGVzdF9zdGF0dXNfaWNvbl92aWV3ID1cbiAgICAgICh+Zm9udF9tZXRyaWNzLCBpbnN0cywgbXM6IE1lYXN1cmVkLlNoYXJkcy50KTogb3B0aW9uKE5vZGUudCkgPT5cbiAgICBzd2l0Y2ggKG1zKSB7XG4gICAgfCBbKF8sIHtvcmlnaW46IF8sIGxhc3R9KSwgLi4uX10gPT5cbiAgICAgIGxldCBzdGF0dXMgPSBpbnN0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbiAgICAgIGxldCBwb3MgPSBEZWNVdGlsLmFic19wb3NpdGlvbih+Zm9udF9tZXRyaWNzLCBsYXN0KTtcbiAgICAgIFNvbWUoXG4gICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVzdWx0XCIsIHN0YXR1c10pLCBwb3NdKSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuXG4gIGxldCB0ZXN0X3Jlc3VsdF9sYXllciA9XG4gICAgICAofmZvbnRfbWV0cmljcywgfm1lYXN1cmVkOiBNZWFzdXJlZC50LCB0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpXG4gICAgICA6IGxpc3QoTm9kZS50KSA9PlxuICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICgoaWQsIGluc3RzKSkgPT5cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1lYXN1cmVkLnRpbGVzKSkge1xuICAgICAgICB8IFNvbWUobXMpID0+IHRlc3Rfc3RhdHVzX2ljb25fdmlldyh+Zm9udF9tZXRyaWNzLCBpbnN0cywgbXMpXG4gICAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICAgIH0sXG4gICAgICB0ZXN0X3Jlc3VsdHMudGVzdF9tYXAsXG4gICAgKTtcblxuICB0eXBlIHJlc3VsdF9raW5kID1cbiAgICB8IE5vUmVzdWx0c1xuICAgIHwgVGVzdFJlc3VsdHNcbiAgICB8IEV2YWxSZXN1bHRzO1xuXG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfnNpZ25hbDogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3Q6IGFjdGlvbiA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdF9nbG9iYWw6IFVwZGF0ZUFjdGlvbi50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICAgIH5zZWxlY3RlZDogYm9vbCxcbiAgICAgICAgfnJlc3VsdF9raW5kPUV2YWxSZXN1bHRzLFxuICAgICAgICB+bG9ja2VkOiBib29sLFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICApID0+XG4gICAgc3dpdGNoIChyZXN1bHRfa2luZCkge1xuICAgIC8vIE5vcm1hbCBjYXNlOlxuICAgIHwgRXZhbFJlc3VsdHMgd2hlbiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzID0+XG4gICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgZm9vdGVyKFxuICAgICAgICAgIH5zaWduYWwsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+cmVzdWx0PW1vZGVsLFxuICAgICAgICAgIH5zZWxlY3RlZD1zZWxlY3RlZCA/IFNvbWUoMCkgOiBOb25lLFxuICAgICAgICAgIH5sb2NrZWQsXG4gICAgICAgICk7XG4gICAgICBsZXQgdGVzdF9vdmVybGF5ID0gKGVkaXRvcjogRWRpdG9yLnQpID0+XG4gICAgICAgIHN3aXRjaCAoTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKG1vZGVsKSkge1xuICAgICAgICB8IFNvbWUocmVzdWx0KSA9PlxuICAgICAgICAgIHRlc3RfcmVzdWx0X2xheWVyKFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcz11aV9zdGF0ZS5mb250X21ldHJpY3MsXG4gICAgICAgICAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgKVxuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfTtcbiAgICAgIChyZXN1bHQsIHRlc3Rfb3ZlcmxheSk7XG5cbiAgICAvLyBKdXN0IHNob3dpbmcgZWxhYm9yYXRpb24gYmVjYXVzZSBldmFsdWF0aW9uIGlzIG9mZjpcbiAgICB8IEV2YWxSZXN1bHRzIHdoZW4gc2V0dGluZ3MuY29yZS5lbGFib3JhdGUgPT5cbiAgICAgIGxldCByZXN1bHQgPSBbXG4gICAgICAgIHRleHQoXCJFdmFsdWF0aW9uIGRpc2FibGVkLCBzaG93aW5nIGVsYWJvcmF0aW9uOlwiKSxcbiAgICAgICAgc3dpdGNoIChNb2RlbFJlc3VsdC5nZXRfZWxhYm9yYXRpb24obW9kZWwpKSB7XG4gICAgICAgIHwgU29tZShlbGFiKSA9PlxuICAgICAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcoXG4gICAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRvcjogZWxhYi5kIHw+IEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKH5pbmxpbmU9ZmFsc2UpLFxuICAgICAgICAgICAgICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3MsXG4gICAgICAgICAgICB9OiBDb2RlRWRpdG9yLm1vZGVsLFxuICAgICAgICAgIClcbiAgICAgICAgfCBOb25lID0+IHRleHQoXCJObyBlbGFib3JhdGlvbiBmb3VuZFwiKVxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIChyZXN1bHQsIChfID0+IFtdKSk7XG5cbiAgICAvLyBOb3Qgc2hvd2luZyBhbnkgcmVzdWx0czpcbiAgICB8IEV2YWxSZXN1bHRzXG4gICAgfCBOb1Jlc3VsdHMgPT4gKFtdLCAoXyA9PiBbXSkpXG5cbiAgICAvLyBKdXN0IHNob3dpbmcgdGVzdCByZXN1bHRzIChzY2hvb2wgbW9kZSlcbiAgICB8IFRlc3RSZXN1bHRzID0+XG4gICAgICBsZXQgdGVzdF9yZXN1bHRzID0gTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKG1vZGVsKTtcbiAgICAgIGxldCB0ZXN0X292ZXJsYXkgPSAoZWRpdG9yOiBFZGl0b3IudCkgPT5cbiAgICAgICAgc3dpdGNoIChNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMobW9kZWwpKSB7XG4gICAgICAgIHwgU29tZShyZXN1bHQpID0+XG4gICAgICAgICAgdGVzdF9yZXN1bHRfbGF5ZXIoXG4gICAgICAgICAgICB+Zm9udF9tZXRyaWNzPXVpX3N0YXRlLmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICApXG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICB9O1xuICAgICAgKFxuICAgICAgICBbXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgVGVzdFZpZXcudGVzdF9zdW1tYXJ5KH5pbmplY3Q9aW5qZWN0X2dsb2JhbCwgfnRlc3RfcmVzdWx0cyksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICAgIHRlc3Rfb3ZlcmxheSxcbiAgICAgICk7XG4gICAgfTtcbn07XG5cbmxldCB2aWV3ID0gVmlldy52aWV3O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbnR5cGUgbW9kZWwgPSB7XG4gIGVkaXRvcjogQ29kZUVkaXRvci5tb2RlbCxcbiAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxufTtcblxudHlwZSBhY3Rpb24gPVxuICB8IE1haW5FZGl0b3IoQ29kZUVkaXRvci5hY3Rpb24pXG4gIHwgUmVzdWx0QWN0aW9uKENlbGxSZXN1bHQuYWN0aW9uKTtcblxubGV0IHVwZGF0ZSA9IFJlYWRPbmx5RWRpdG9yLnVwZGF0ZTtcblxubGV0IGNhbGN1bGF0ZSA9IFJlYWRPbmx5RWRpdG9yLmNhbGN1bGF0ZTtcblxudHlwZSBldmVudCA9IENvZGVFZGl0b3IuZXZlbnQ7XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+c2VsZWN0OiBFZGl0b3JzLlNlbGVjdGlvbi5jZWxsID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgfmluamVjdCxcbiAgICAgIH5pbmplY3RfZ2xvYmFsLFxuICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgICB+c2VsZWN0ZWQ6IG9wdGlvbihFZGl0b3JzLlNlbGVjdGlvbi5jZWxsKSxcbiAgICAgIH5jYXB0aW9uOiBvcHRpb24oTm9kZS50KT0/LFxuICAgICAgfnNvcnQ9PyxcbiAgICAgIH5yZXN1bHRfa2luZD0/LFxuICAgICAgfmxvY2tlZD1mYWxzZSxcbiAgICAgIG1vZGVsLFxuICAgICkgPT4ge1xuICBsZXQgKGZvb3Rlciwgb3ZlcmxheXMpID1cbiAgICBDZWxsUmVzdWx0LnZpZXcoXG4gICAgICB+c2lnbmFsPVxuICAgICAgICBmdW5cbiAgICAgICAgfCBNYWtlQWN0aXZlKGEpID0+IHNlbGVjdChhKVxuICAgICAgICB8IE1vdXNlVXAgPT4gaW5qZWN0X2dsb2JhbChVcGRhdGUuU2V0TWV0YShNb3VzZXVwKSlcbiAgICAgICAgfCBNb3VzZURvd24gPT4gaW5qZWN0X2dsb2JhbChVcGRhdGUuU2V0TWV0YShNb3VzZWRvd24pKSxcbiAgICAgIH5pbmplY3Q9YSA9PiBpbmplY3QoUmVzdWx0QWN0aW9uKGEpKSxcbiAgICAgIH5pbmplY3RfZ2xvYmFsLFxuICAgICAgfnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfnNlbGVjdGVkPXNlbGVjdGVkID09IFNvbWUoUmVzdWx0KDApKSxcbiAgICAgIH5yZXN1bHRfa2luZD8sXG4gICAgICB+bG9ja2VkLFxuICAgICAgbW9kZWwucmVzdWx0LFxuICAgICk7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwiY2VsbFwiLFxuICAgICAgICBPcHRpb24uaXNfc29tZShzZWxlY3RlZCkgPyBcInNlbGVjdGVkXCIgOiBcImRlc2VsZWN0ZWRcIixcbiAgICAgICAgbG9ja2VkID8gXCJsb2NrZWRcIiA6IFwidW5sb2NrZWRcIixcbiAgICAgIF0pLFxuICAgIE9wdGlvbi50b19saXN0KGNhcHRpb24pXG4gICAgQCBbXG4gICAgICBDb2RlRWRpdG9yLnZpZXcoXG4gICAgICAgIH5zaWduYWw9XG4gICAgICAgICAgbG9ja2VkXG4gICAgICAgICAgICA/IF8gPT4gVWlfZWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgOiBmdW5cbiAgICAgICAgICAgICAgfCBNb3VzZVVwID0+IGluamVjdF9nbG9iYWwoVXBkYXRlLlNldE1ldGEoTW91c2V1cCkpXG4gICAgICAgICAgICAgIHwgTW91c2VEb3duID0+IGluamVjdF9nbG9iYWwoVXBkYXRlLlNldE1ldGEoTW91c2Vkb3duKSlcbiAgICAgICAgICAgICAgfCBNYWtlQWN0aXZlID0+IHNlbGVjdChFZGl0b3JzLlNlbGVjdGlvbi5NYWluRWRpdG9yKSxcbiAgICAgICAgfmluamVjdD1cbiAgICAgICAgICBsb2NrZWRcbiAgICAgICAgICAgID8gXyA9PiBVaV9lZmZlY3QuSWdub3JlXG4gICAgICAgICAgICA6IChhY3Rpb24gPT4gaW5qZWN0X2dsb2JhbChQZXJmb3JtQWN0aW9uKGFjdGlvbikpKSxcbiAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3RlZD1zZWxlY3RlZCA9PSBTb21lKE1haW5FZGl0b3IpLFxuICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgfm92ZXJsYXlzPW92ZXJsYXlzKG1vZGVsLmVkaXRvci5lZGl0b3IpLFxuICAgICAgICB+c29ydD8sXG4gICAgICAgIG1vZGVsLmVkaXRvcixcbiAgICAgICksXG4gICAgXVxuICAgIEAgZm9vdGVyLFxuICApO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfnNlbGVjdCxcbiAgICAgIH5pbmplY3Q6IFVwZGF0ZUFjdGlvbi50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgfnJlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICAgICAgfnJlc3VsdF9rZXksXG4gICAgICB+c3RhdGljczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLFxuICAgICAgfnNlbGVjdGVkLFxuICAgICAgZWRpdG9yOiBFZGl0b3IudCxcbiAgICApID0+IHtcbiAgbGV0IHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAocmVzdWx0cywgcmVzdWx0X2tleSkgfD4gT3B0aW9uLmdldDtcbiAgW1xuICAgIENlbGxFZGl0b3IudmlldyhcbiAgICAgIH5zZWxlY3QsXG4gICAgICB+aW5qZWN0PVxuICAgICAgICBmdW5cbiAgICAgICAgfCBNYWluRWRpdG9yKGEpID0+IGluamVjdChQZXJmb3JtQWN0aW9uKGEpKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihTdGVwcGVyQWN0aW9uKGEpKSA9PlxuICAgICAgICAgIGluamVjdChTdGVwcGVyQWN0aW9uKHJlc3VsdF9rZXksIGEpKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihUb2dnbGVTdGVwcGVyKSA9PiBpbmplY3QoVG9nZ2xlU3RlcHBlcihyZXN1bHRfa2V5KSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckVkaXRvckFjdGlvbihfLCBhKSkgPT5cbiAgICAgICAgICBpbmplY3QoUGVyZm9ybUFjdGlvbihhKSksXG4gICAgICB+aW5qZWN0X2dsb2JhbD1pbmplY3QsXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5zZWxlY3RlZCxcbiAgICAgIH5sb2NrZWQ9ZmFsc2UsXG4gICAgICB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHQsXG4gICAgICB9LFxuICAgICksXG4gIF07XG59O1xuXG5sZXQgZXhwb3J0X2J1dHRvbiA9IHN0YXRlID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICBsZXQganNvbl9kYXRhID0gU2NyYXRjaFNsaWRlLmV4cG9ydChzdGF0ZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfanNvbihcImhhemVsLXNjcmF0Y2hwYWRcIiwganNvbl9kYXRhKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IFNjcmF0Y2hwYWRcIixcbiAgKTtcbmxldCBpbXBvcnRfYnV0dG9uID0gaW5qZWN0ID0+XG4gIFdpZGdldHMuZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkKFxuICAgIFwiaW1wb3J0LXNjcmF0Y2hwYWRcIixcbiAgICBJY29ucy5zdGFyLFxuICAgIGZpbGUgPT4ge1xuICAgICAgc3dpdGNoIChmaWxlKSB7XG4gICAgICB8IE5vbmUgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlXG4gICAgICB8IFNvbWUoZmlsZSkgPT4gaW5qZWN0KFVwZGF0ZUFjdGlvbi5Jbml0SW1wb3J0U2NyYXRjaHBhZChmaWxlKSlcbiAgICAgIH1cbiAgICB9LFxuICAgIH50b29sdGlwPVwiSW1wb3J0IFNjcmF0Y2hwYWRcIixcbiAgKTtcblxubGV0IHJlc2V0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy50cmFzaCxcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCB0aGlzIHNjcmF0Y2hwYWQ/IFlvdSB3aWxsIGxvc2UgYW55IGV4aXN0aW5nIGNvZGUuXCIsXG4gICAgICAgICk7XG4gICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUmVzZXRDdXJyZW50RWRpdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICAgIH07XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIlJlc2V0IFNjcmF0Y2hwYWRcIixcbiAgKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHBhdCA9IHRwYXQoXCJ0X3ZhclwiKTtcbmxldCBfdHlwX2FyZyA9IHR5cChcInR5X2FyZ1wiKTtcbmxldCByZWNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH50cGF0X2lkOiBJZC50LCB+dGJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3RwYXQpLCB0cGF0X2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfYXJnKSwgdGJvZHlfaWQpLFxuXTtcbmxldCBwZWFub19leCA9IHtcbiAgc3ViX2lkOiBSZWNUeXAsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0eXBlIFBlYW5vID0gXFxuIHJlYyBQIC0+IFogKyBTKFApIFxcbiBpbiBTKFMoUyhaKSkpXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0eXBlIG9mIHRoZSBQZWFubyBudW1iZXJzIGFuZCB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciAzLlwiLFxufTtcbmxldCByZWNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgcmVjdXJzaXZlIHR5cGUgY2xhc3NpZmllcyB0aGUgbGVhc3QgZml4ZWQgcG9pbnQgb2YgdGhlIHBvbHltb3JwaGljIHR5cGUgb3ZlciB0aGUgWyp0eXBlIHZhcmlhYmxlKl0oJXMpIG9mIGJvZHkgWyppbnN0YW50aWF0ZWQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBSZWNUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19yZWMoW1tzcGFjZSgpLCBfdHBhdCwgc3BhY2UoKV1dKSwgX3R5cF9hcmddLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90cGF0KSwgW190eXBfYXJnXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbcGVhbm9fZXhdLFxuICB9O1xufTtcblxubGV0IHJlY186IGdyb3VwID0ge2lkOiBSZWNUeXAsIGZvcm1zOiBbcmVjX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxuLyogKEEpIFVzZSB0aGlzIGZpbGUgYXMgYW4gZXhhbXBsZSBmb3IgYWRkaW5nIGEgbmV3IGZvcm0gdG8gRXhwbGFpblRoaXMuXG4gKiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gY29weS1wYXN0ZSB0aGlzIGZpbGUgYW5kIG1vZGlmeSBpdCB0byBhZGQgYSBuZXcgZm9ybSAqL1xuXG5sZXQgc2luZ2xlID0gKH5hcmdfaWQ6IElkLnQsIH5mbl9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgLyogKEIpIFlvdSdsbCBuZWVkIHRvIGFkZCBuZXcgY2FzZXMgdG8gRXhwbGFpblRoaXNGb3JtLnJlIGZvciB0aGUgbmV3IGZvcm1cbiAgICogdG8gcmVwcmVzZW50IGEgZ3JvdXBfaWQgYW5kIGZvcm1faWQuIFRoaXMgU2ltcGxlIHN0eWxlIGlzIHNwZWNpYWxpemVkXG4gICAqIHRvIHNpbmdsZXRvbiBncm91cHMuIEluIGdlbmVyYWwsIHRoZSBncm91cF9pZCBuZWVkcyB0byBiZSB1bmlxdWUsIGFuZFxuICAgKiBmb3JtX2lkcyBuZWVkIHRvIGJlIHVuaXF1ZSB3aXRoaW4gYSBncm91cC4gVGhlc2UgaWRzIGFyZSB1c2VkIHRvIHRyYWNrXG4gICAqIEV4cGxhaW5UaGlzIHBlcnNpc3RlbnQgc3RhdGUuICovXG4gIGdyb3VwX2lkOiBQaXBlbGluZUV4cCxcbiAgZm9ybV9pZDogUGlwZWxpbmVFeHAsXG4gIC8qIChDKSBUaGUgYWJzdHJhY3QgZmllbGQgZGVmaW5lcyBhbiBhYnN0cmFjdCBleGFtcGxlIGlsbHVzdHJhdGluZyB0aGVcbiAgICogbmV3IGZvcm0uIFlvdSdsbCBuZWVkIHRvIHByb3ZpZGUgcGFpcnMgYXNzb2NpYXRpbmcgYW55IHJlcHJlc2VudGF0aXZlXG4gICAqIHN1YnRlcm1zIG9mIHRoZSBleGVtcGxhciAoZS5nLiBcImVfYXJnXCIgYW5kIFwiZV9mdW5cIiBiZWxvdykgd2l0aCB0aGVcbiAgICogY29uY3JldGUgc3VidGVybXMgb2YgdGhlIHRlcm0gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIChoZXJlLCBhcmdfaWRcbiAgICogYW5kIGZuX2lkKS4gWW91J2xsIHRoZW4gbmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIHNlZ21lbnRcbiAgICogcmVwcmVzZW50aW5nIHlvdXIgYWJzdHJhY3QuIFRoaXMgaXMgZG9uZSBpbiB0aGlzIGluZGlyZWN0IHdheSBzb1xuICAgKiBhcyB0byBhc3NvY2lhdGUgcmVwcmVzZW50YXRpdmUgYW5kIGNvbmNyZXRlIHN1YnRlcm1zIGlkcyBmb3JcbiAgICogc3ludGF4IGhpZ2hsaWdodGluZyBwdXJwb3Nlcy4gKi9cbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwiZV9hcmdcIiwgYXJnX2lkKSwgKFwiZV9mdW5cIiwgZm5faWQpLCAoZV9hcmcnLCBlX2ZuJykgPT5cbiAgICAgIFtlX2FyZycsIHNwYWNlKCksIHBpcGVsaW5lKCksIHNwYWNlKCksIGVfZm4nXVxuICAgICksXG4gIC8qIChEKSBUaGUgZXhwbGFuYXRpb24gd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIHNpZGViYXIgYmVsb3cgdGhlIGFic3RyYWN0ICovXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJQYXNzZXMgdGhlIFsqYXJndW1lbnQqXSglcykgdG8gdGhlIFsqZnVuY3Rpb24qXSglcykuXCIsXG4gICAgICBhcmdfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgZm5faWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIC8qIChFKSBBZGRpdGlvbmFsIG1vcmUgY29uY3JldGUgZXhhbXBsZXMgYW5kIGFzc29jaWF0ZWQgZXhwbGFuYXRpb25zICovXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBQaXBlbGluZTEsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiMSB8PiBmdW4geCAtPiB4ICsgMVwiKSxcbiAgICAgIG1lc3NhZ2U6IHt8XG4gICAgICAgICAgICAgIFRoZSBhcmd1bWVudCAxIGlzIHBhc3NlZCB0byBhbiBpbmNyZW1lbnQgZnVuY3Rpb24sIGFuZCB0aGUgZW50aXJlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXG4gICAgICAgICAgICAgIFRoZSBwaXBlbGluZSBvcGVyYXRvciBpcyB1c2VmdWwgZm9yIGNoYWluaW5nIGZ1bmN0aW9ucyB0b2dldGhlci5cbiAgICAgICAgICAgICAgfH0sXG4gICAgfSxcbiAgXSxcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZnVuYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBGdW5BcCxcbiAgdGVybTogbWtfZXhhbXBsZShcIihmdW4geCAtPiB4KSgxKVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaWRlbnRpdHkgZnVuY3Rpb24gaXMgYXBwbGllZCB0byAxLiBUaGUgYXJndW1lbnQgeCBpcyBib3VuZCB0byAxIGluIHRoZSBmdW5jdGlvbiBib2R5IGFuZCB0aGUgYm9keSBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG4vLyBUT0RPIEhhcyBhIHJlZCBib3ggYXJvdW5kIGl0IGluIHRoZSByZXN1bHRcbmxldCBjb25hcHBfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IENvbkFwLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBUID0gTm9uZSArIFNvbWUoSW50KVxcbmluIFNvbWUoMSlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGNvbnN0cnVjdG9yIFNvbWUgaXMgYXBwbGllZCB0byAxLCB3aGljaCBldmFsdWF0ZXMgdG8gU29tZSgxKS5cIixcbn07XG5sZXQgZGVmZXJyZWRfZnVuYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBEZWZlcnJlZEFwLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXG4gICAgICBcImxldCBwbHVzID0gZnVuICh4LCB5KSAtPiB4ICsgeSBpblxcbmxldCBpbmNyID0gcGx1cyhfLCAxKSBpblxcbmluY3IoNSlcIixcbiAgICApLFxuICBtZXNzYWdlOiBcIlRoZSBwbHVzIGZ1bmN0aW9uIGlzIHBhcnRpYWxseSBhcHBsaWVkLiBUaGUgYXJndW1lbnQgeSBpcyBib3VuZCB0byAxIGluIHRoZSBmdW5jdGlvbiBib2R5LiBUaGUgZGVmZXJyZWQgYXJndW1lbnQgeCBpcyBub3QgYXBwbGllZCB1bnRpbCBpbiB0aGUgZnVsbCBmdW5jdGlvbiBhcHBsaWNhdGlvbiwgaW5jcig1KSwgd2hlcmUgaXQncyBib3VuZCB0byA1LiBUaGUgcGFydGlhbCBhcHBsaWNhdGlvbiBldmFsdWF0ZXMgdG8gYSBuZXcgZnVuY3Rpb24sIChmdW4geCAtPiB4ICsgMSkuXCIsXG59O1xubGV0IF9leHBfZnVuID0gZXhwKFwiZV9mdW5cIik7XG5sZXQgX2V4cF9hcmcgPSBleHAoXCJlX2FyZ1wiKTtcbmxldCBmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54X2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfZnVuKSwgeF9pZCksXG4gIChQaWVjZS5pZChfZXhwX2FyZyksIGFyZ19pZCksXG5dO1xubGV0IGZ1bmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWypmdW5jdGlvbipdKCVzKSB0byB0aGUgWyphcmd1bWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBGdW5BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfZnVuLCBta19hcF9leHAoW1tfZXhwX2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Z1bmFwcF9leHBfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwX2NvbiA9IGV4cChcImVfY29uXCIpO1xubGV0IF9leHBfYXJnID0gZXhwKFwiZV9hcmdcIik7XG5sZXQgY29uYXBwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eF9pZDogSWQudCwgfmFyZ19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2NvbiksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBjb25hcHBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFwcGxpZXMgdGhlIFsqYCVzYCBjb25zdHJ1Y3RvcipdKCVzKSB0byB0aGUgWyphcmd1bWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBDb25BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfY29uLCBta19hcF9leHAoW1tfZXhwX2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbmFwcF9leHBfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwX2Z1biA9IGV4cChcImVfZnVuXCIpO1xubGV0IF9leHBfZGVmZXJyYWwgPSBkZWZlcnJhbCgpO1xubGV0IGRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnhfaWQ6IElkLnQsIH5kZWZlcnJlZF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2Z1biksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWZlcnJhbCksIGRlZmVycmVkX2lkKSxcbl07XG5sZXQgZGVmZXJyZWRfZnVuYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKmZ1bmN0aW9uKl0oJXMpIHRvIHRoZSBbKnN1cHBsaWVkIGFyZ3VtZW50cypdKCVzKS4gVGhlIFsqZGVmZXJyZWQgYXJndW1lbnRzKl0oJXMpIGNhbiBiZSBhcHBsaWVkIGluIGZ1dHVyZSBhcHBsaWNhdGlvbnMuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IERlZmVycmVkQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF9leHBfZnVuLFxuICAgICAgbWtfYXBfZXhwKFtcbiAgICAgICAgW1xuICAgICAgICAgIGV4cChcIi4uLlwiKSxcbiAgICAgICAgICBjb21tYSxcbiAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgIF9leHBfZGVmZXJyYWwsXG4gICAgICAgICAgY29tbWEsXG4gICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgIF0sXG4gICAgICBdKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtkZWZlcnJlZF9mdW5hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5cbmxldCBmdW5hcHM6IGdyb3VwID0ge2lkOiBGdW5BcEV4cCwgZm9ybXM6IFtmdW5hcHBfZXhwXX07XG5cbmxldCBjb25hcHM6IGdyb3VwID0ge2lkOiBDb25BcEV4cCwgZm9ybXM6IFtjb25hcHBfZXhwXX07XG5cbmxldCBkZWZlcnJlZGFwczogZ3JvdXAgPSB7aWQ6IERlZmVycmVkQXBFeHAsIGZvcm1zOiBbZGVmZXJyZWRfZnVuYXBwX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBhcF9wYXRfY29sb3JpbmdfaWRzID0gKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBhcF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IG1hdGNoIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdpdGggYW4gKmFyZ3VtZW50KiBtYXRjaGluZyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgKmNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEFwUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9jb24sIG1rX2FwX3BhdChbW19wYXRfYXJnXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBhcDogZ3JvdXAgPSB7aWQ6IEFwUGF0LCBmb3JtczogW2FwX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90eXBfYXJnID0gdHlwKFwidHlfYXJnXCIpO1xubGV0IF90eXBfb3V0ID0gdHlwKFwidHlfb3V0XCIpO1xubGV0IGFycm93X3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+YXJnX2lkOiBJZC50LCB+cmVzdWx0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfYXJnKSwgYXJnX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfb3V0KSwgcmVzdWx0X2lkKSxcbl07XG5sZXQgYXJyb3dfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgYXJyb3cgdHlwZSBjbGFzc2lmaWVzIGZ1bmN0aW9ucyB3aXRoIFsqYXJndW1lbnQgdHlwZSpdKCVzKSBhbmQgWypvdXRwdXQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBBcnJvd1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW190eXBfYXJnLCBzcGFjZSgpLCBhcnJvdygpLCBzcGFjZSgpLCBfdHlwX291dF0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3R5cF9vdXQpLCBbdHlwKFwidHlfb3V0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3R5cF9hcmcxID0gdHlwKFwidHlfYXJnMVwiKTtcbmxldCBfdHlwX2FyZzIgPSB0eXAoXCJ0eV9hcmcyXCIpO1xubGV0IF90eXBfb3V0ID0gdHlwKFwidHlfb3V0XCIpO1xubGV0IGFycm93M190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmFyZzFfaWQ6IElkLnQsIH5hcmcyX2lkOiBJZC50LCB+cmVzdWx0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfYXJnMSksIGFyZzFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9hcmcyKSwgYXJnMl9pZCksXG4gIChQaWVjZS5pZChfdHlwX291dCksIHJlc3VsdF9pZCksXG5dO1xubGV0IGFycm93M190eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBhcnJvdyB0eXBlIGNsYXNzaWZpZXMgZnVuY3Rpb25zIHdpdGggWypmaXJzdCBhcmd1bWVudCB0eXBlKl0oJXMpLCBbKnNlY29uZCBhcmd1bWVudCB0eXBlKl0oJXMpLCBhbmQgWypvdXRwdXQgdHlwZSpdKCVzKS5cIjtcbiAgbGV0IGFycm93MiA9IGFycm93KCk7XG4gIHtcbiAgICBpZDogQXJyb3czVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfdHlwX2FyZzEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgYXJyb3coKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2FyZzIsXG4gICAgICBzcGFjZSgpLFxuICAgICAgYXJyb3cyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfb3V0LFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFycm93MiksIFt0eXAoXCJ0eV9hcmcyXCIpLCBhcnJvdygpLCB0eXAoXCJ0eV9vdXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGFycm93OiBncm91cCA9IHtpZDogQXJyb3dUeXAsIGZvcm1zOiBbYXJyb3dfdHlwXX07XG5cbmxldCBhcnJvdzM6IGdyb3VwID0ge2lkOiBBcnJvdzNUeXAsIGZvcm1zOiBbYXJyb3czX3R5cCwgYXJyb3dfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlID0ge1xuICBzdWJfaWQ6IENhc2VXaWxkU2ltcGxlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAxIFxcbnwgMiA9PiAzIFxcbnwgXyA9PiA0IFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgMS4gU2luY2UgdGhlIHNjcnV0aW5lZSBkb2VzIG5vdCBtYXRjaCB0aGUgdGhlIGZpcnN0IHBhdHRlcm4gMi4gU2luY2UgdGhlIHNjcnV0aW5lZSBkb2VzIG1hdGNoIHRoZSBzZWNvbmQgcGF0dGVybiB3aGljaCBpcyBhIHdpbGRjYXJkLCB0aGUgc2Vjb25kIGJyYW5jaCBpcyB0YWtlbi4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBzZWNvbmQgY2xhdXNlIDQuXCIsXG59O1xubGV0IGNhc2VfZXhhbXBsZV93aWxkX3R1cGxlID0ge1xuICBzdWJfaWQ6IENhc2VXaWxkVHVwbGUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlICgxLCAyKSBcXG58IChfLCAyKSA9PiAzIFxcbnwgXyA9PiA0IFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgKDEsIDIpLiBTaW5jZSB0aGUgc2NydXRpbmVlIG1hdGNoZXMgdGhlIGZpcnN0IHBhdHRlcm4gKF8sIDIpLCB0aGUgZmlyc3QgYnJhbmNoIGlzIHRha2VuLiBUaGlzIHBhdHRlcm4gaXMgbWF0Y2hlZCBiZWNhdXNlIHRoZSBmaXJzdCBlbGVtZW50IDEgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBwYXR0ZXJuLCB3aGljaCBpcyBhIHdpbGRjYXJkLCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IDIgbWF0Y2hlcyB0aGUgc2Vjb25kIGVsZW1lbnQgcGF0dGVybiAyLiBUaGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGNsYXVzZSAzLlwiLFxufTtcbmxldCBjYXNlX2V4YW1wbGVfaW50ID0ge1xuICBzdWJfaWQ6IENhc2VJbnQsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlIDEgXFxufCAxID0+IDEuMSBcXG58IDIgPT4gMi4yIFxcbnwgXyA9PiAzLjMgXFxuZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBzY3J1dGluZWUgb2YgdGhlIGNhc2UgZXhwcmVzc2lvbiBpcyAxLiBTaW5jZSB0aGUgc2NydXRpbmVlIG1hdGNoZXMgdGhlIGZpcnN0IHBhdHRlcm4sIHRoZSBmaXJzdCBicmFuY2ggaXMgdGFrZW4sIGFuZCB0aGUgY2FzZSBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGNsYXVzZS5cIixcbn07XG5sZXQgY2FzZV9leGFtcGxlX2Jvb2wgPSB7XG4gIHN1Yl9pZDogQ2FzZUJvb2wsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlIGZhbHNlIFxcbnwgdHJ1ZSA9PiAxIFxcbnwgZmFsc2UgPT4gMiBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzIGZhbHNlLiBUaGUgc2NydXRpbmVlIGRvZXMgbm90IG1hdGNoIHRoZSBmaXJzdCBwYXR0ZXJuIGJ1dCBkb2VzIG1hdGNoIHRoZSBzZWNvbmQgcGF0dGVybiwgc28gdGhlIHNlY29uZCBicmFuY2ggaXMgdGFrZW4uXCIsXG59O1xuLy8gVE9ETyAtIEkgZG9uJ3QgdGhpbmsgY2hhbmdpbmcgc3BlY2lmaWNpdHkgb24gdGhlIG51bWJlciBvZiBjYXNlcyBpcyByZWFsbHkgdGhlIG1vc3Rcbi8vIGJlbmVmaWNpYWwgc3BlY2lmaWNpdHkgY2hhbmdlIC0gSSB0aGluayBpbnN0ZWFkIGhhdmUgZ2VuZXJpYyBhdCB0b3AgbGV2ZWxcbi8vIGFuZCB0aGVuIGhhdmUgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2V0dXAgZm9yIHNwZWNpZmljIHRoYXQgaXMgY3JlYXRlZCBtb3JlXG4vLyBkeW5hbWljYWxseSBjYWxsaW5nIHNldHVwIG1ldGhvZHMgaGVyZSBidXQgbW9yZVxuLy8gd29yayBkb25lIGluIHRoZSBFeHBsYWluVGhpcyBjb2RlIC0gbWF5YmUganVzdCB1cCB0byAzIG9yIDQgYnJhbmNoZXM/XG5sZXQgX2V4cF9zY3J1dCA9IGV4cChcImVfc2NydXRcIik7XG5sZXQgY2FzZV9leHBfY29sb3JpbmdfaWRzID0gKH5zY3J1dF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3NjcnV0KSwgc2NydXRfaWQpLFxuXTtcbmxldCBjYXNlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJDb25zaWRlciBlYWNoIGJyYW5jaCBpbiBvcmRlci4gRm9yIHRoZSBmaXJzdCBicmFuY2ggd2l0aCBhICpwYXR0ZXJuKiB0aGF0IG1hdGNoZXMgdGhlIFsqc2NydXRpbmVlKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgKmNsYXVzZSouXCI7XG4gIGxldCBjYXNlID1cbiAgICBta19jYXNlKFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX2V4cF9zY3J1dCxcbiAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgIG1rX3J1bGUoW1tzcGFjZSgpLCBwYXQoXCJwMVwiKSwgc3BhY2UoKV1dKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgZXhwKFwiZTFcIiksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBta19ydWxlKFtbc3BhY2UoKSwgcGF0KFwiLi4uXCIpLCBzcGFjZSgpXV0pLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgXSxcbiAgICBdKTtcbiAge1xuICAgIGlkOiBDYXNlRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbY2FzZV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW1xuICAgICAgY2FzZV9leGFtcGxlX2ludCxcbiAgICAgIGNhc2VfZXhhbXBsZV9ib29sLFxuICAgICAgY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlLFxuICAgICAgY2FzZV9leGFtcGxlX3dpbGRfdHVwbGUsXG4gICAgXSxcbiAgfTtcbn07XG5cbmxldCBjYXNlOiBncm91cCA9IHtpZDogQ2FzZUV4cCwgZm9ybXM6IFtjYXNlX2V4cF19O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IHZpZXcgPSAoa2luZDogSGF6M2xjb3JlLkN0eC5raW5kKTogTm9kZS50ID0+XG4gIHN3aXRjaCAoa2luZCkge1xuICB8IFNpbmdsZXRvbih0eSkgPT4gZGl2X2MoXCJraW5kLXZpZXdcIiwgW1R5cGUudmlldyh0eSldKVxuICB8IEFic3RyYWN0ID0+IGRpdl9jKFwia2luZC12aWV3XCIsIFt0ZXh0KFwiVHlwZVwiKV0pXG4gIH07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQganVtcF90byA9IGVudHJ5ID0+XG4gIFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKEp1bXAoVGlsZUlkKEhhejNsY29yZS5DdHguZ2V0X2lkKGVudHJ5KSkpKTtcblxubGV0IGNvbnRleHRfZW50cnlfdmlldyA9ICh+aW5qZWN0LCBlbnRyeTogSGF6M2xjb3JlLkN0eC5lbnRyeSk6IE5vZGUudCA9PiB7XG4gIGxldCBkaXZfbmFtZSA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgY2xzcyhbXCJuYW1lXCJdKSxcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gaW5qZWN0KGp1bXBfdG8oZW50cnkpKSksXG4gICAgICAgIF0pLFxuICAgICk7XG4gIHN3aXRjaCAoZW50cnkpIHtcbiAgfCBWYXJFbnRyeSh7bmFtZSwgdHlwLCBffSlcbiAgfCBDb25zdHJ1Y3RvckVudHJ5KHtuYW1lLCB0eXAsIF99KSA9PlxuICAgIGRpdl9jKFxuICAgICAgXCJjb250ZXh0LWVudHJ5XCIsXG4gICAgICBbXG4gICAgICAgIGRpdl9uYW1lKFt0ZXh0KG5hbWUpXSksXG4gICAgICAgIGRpdih+YXR0cj1jbHNzKFtcInNlcGVyYXRvclwiXSksIFt0ZXh0KFwiOlwiKV0pLFxuICAgICAgICBUeXBlLnZpZXcodHlwKSxcbiAgICAgIF0sXG4gICAgKVxuICB8IFRWYXJFbnRyeSh7bmFtZSwga2luZCwgX30pID0+XG4gICAgZGl2X2MoXG4gICAgICBcImNvbnRleHQtZW50cnlcIixcbiAgICAgIFtcbiAgICAgICAgZGl2X25hbWUoW1R5cGUuYWxpYXNfdmlldyhuYW1lKV0pLFxuICAgICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzZXBlcmF0b3JcIl0pLCBbdGV4dChcIjo6XCIpXSksXG4gICAgICAgIEtpbmQudmlldyhraW5kKSxcbiAgICAgIF0sXG4gICAgKVxuICB9O1xufTtcblxubGV0IGN0eF92aWV3ID0gKH5pbmplY3QsIGN0eDogSGF6M2xjb3JlLkN0eC50KTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImNvbnRleHQtZW50cmllc1wiXSksXG4gICAgTGlzdC5tYXAoXG4gICAgICBjb250ZXh0X2VudHJ5X3ZpZXcofmluamVjdCksXG4gICAgICBjdHggfD4gSGF6M2xjb3JlLkN0eC5maWx0ZXJfZHVwbGljYXRlcyB8PiBMaXN0LnJldixcbiAgICApLFxuICApO1xuXG5sZXQgY3R4X3NvcnRzX3ZpZXcgPSAofmluamVjdCwgY2k6IEhhejNsY29yZS5TdGF0aWNzLkluZm8udCkgPT5cbiAgSGF6M2xjb3JlLkluZm8uY3R4X29mKGNpKVxuICB8PiBIYXozbGNvcmUuQ3R4LmZpbHRlcl9kdXBsaWNhdGVzXG4gIHw+IExpc3QucmV2XG4gIHw+IExpc3QubWFwKGNvbnRleHRfZW50cnlfdmlldyh+aW5qZWN0KSk7XG5cbmxldCB2aWV3ID1cbiAgICAofmluamVjdCwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCBjaTogSGF6M2xjb3JlLlN0YXRpY3MuSW5mby50KTogTm9kZS50ID0+IHtcbiAgbGV0IGNsc3MgPVxuICAgIGNsc3MoXG4gICAgICBbXCJjb250ZXh0LWluc3BlY3RvclwiXSBAIChzZXR0aW5ncy5jb250ZXh0X2luc3BlY3RvciA/IFtcInZpc2libGVcIl0gOiBbXSksXG4gICAgKTtcbiAgZGl2KH5hdHRyPWNsc3MsIGN0eF9zb3J0c192aWV3KH5pbmplY3QsIGNpKSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgZXJyYyA9IFwiZXJyb3JcIjtcbmxldCBva2MgPSBcIm9rXCI7XG5sZXQgZGl2X2VyciA9IGRpdih+YXR0cj1jbHNzKFtlcnJjXSkpO1xubGV0IGRpdl9vayA9IGRpdih+YXR0cj1jbHNzKFtva2NdKSk7XG5cbmxldCBjb2RlX2VyciA9IChjb2RlOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1wiY29kZVwiXSksIFt0ZXh0KGNvZGUpXSk7XG5cbmxldCBleHBsYWluX3RoaXNfdG9nZ2xlID0gKH5pbmplY3QsIH5zaG93X2V4cGxhaW5fdGhpczogYm9vbCk6IE5vZGUudCA9PiB7XG4gIGxldCB0b29sdGlwID0gXCJUb2dnbGUgbGFuZ3VhZ2UgZG9jdW1lbnRhdGlvblwiO1xuICBsZXQgdG9nZ2xlX2V4cGxhaW5fdGhpcyA9IF8gPT5cbiAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5NYW55KFtcbiAgICAgIGluamVjdChVcGRhdGUuU2V0KEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpKSksXG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5TdG9wX3Byb3BhZ2F0aW9uLFxuICAgIF0pO1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJleHBsYWluLXRoaXMtYnV0dG9uXCJdKSxcbiAgICBbV2lkZ2V0cy50b2dnbGUofnRvb2x0aXAsIFwiP1wiLCBzaG93X2V4cGxhaW5fdGhpcywgdG9nZ2xlX2V4cGxhaW5fdGhpcyldLFxuICApO1xufTtcblxubGV0IGNsc192aWV3ID0gKGNpOiBJbmZvLnQpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1wic3ludGF4LWNsYXNzXCJdKSwgW3RleHQoY2kgfD4gSW5mby5jbHNfb2YgfD4gQ2xzLnNob3cpXSk7XG5cbmxldCBjdHhfdG9nZ2xlID0gKH5pbmplY3QsIGNvbnRleHRfaW5zcGVjdG9yOiBib29sKTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIub25fY2xpY2soXyA9PiBpbmplY3QoVXBkYXRlLlNldChDb250ZXh0SW5zcGVjdG9yKSkpLFxuICAgICAgICBjbHNzKFtcImdhbW1hXCJdIEAgKGNvbnRleHRfaW5zcGVjdG9yID8gW1widmlzaWJsZVwiXSA6IFtdKSksXG4gICAgICBdKSxcbiAgICBbdGV4dChcIs6TXCIpXSxcbiAgKTtcblxubGV0IHRlcm1fdmlldyA9ICh+aW5qZWN0LCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGNpKSA9PiB7XG4gIGxldCBzb3J0ID0gY2kgfD4gSW5mby5zb3J0X29mIHw+IFNvcnQuc2hvdztcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiY2ktaGVhZGVyXCIsIHNvcnRdIEAgKEluZm8uaXNfZXJyb3IoY2kpID8gW2VycmNdIDogW10pKSxcbiAgICBbXG4gICAgICBjdHhfdG9nZ2xlKH5pbmplY3QsIHNldHRpbmdzLmNvbnRleHRfaW5zcGVjdG9yKSxcbiAgICAgIEN0eEluc3BlY3Rvci52aWV3KH5pbmplY3QsIH5zZXR0aW5ncywgY2kpLFxuICAgICAgZGl2KH5hdHRyPWNsc3MoW1widGVybS10YWdcIl0pLCBbdGV4dChzb3J0KV0pLFxuICAgICAgZXhwbGFpbl90aGlzX3RvZ2dsZShcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgfnNob3dfZXhwbGFpbl90aGlzPXNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3csXG4gICAgICApLFxuICAgICAgY2xzX3ZpZXcoY2kpLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZWxlbWVudHNfbm91bjogQ2xzLnQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgRXhwKE1hdGNoIHwgSWYpID0+IFwiQnJhbmNoZXNcIlxuICB8IEV4cChMaXN0TGl0KVxuICB8IFBhdChMaXN0TGl0KSA9PiBcIkVsZW1lbnRzXCJcbiAgfCBFeHAoTGlzdENvbmNhdCkgPT4gXCJPcGVyYW5kc1wiXG4gIHwgXyA9PiBmYWlsd2l0aChcImVsZW1lbnRzX25vdW46IENscyBkb2Vzbid0IGhhdmUgZWxlbWVudHNcIik7XG5cbmxldCBjb21tb25fZXJyX3ZpZXcgPSAoY2xzOiBDbHMudCwgZXJyOiBJbmZvLmVycm9yX2NvbW1vbikgPT5cbiAgc3dpdGNoIChlcnIpIHtcbiAgfCBOb1R5cGUoQmFkVG9rZW4odG9rZW4pKSA9PlxuICAgIHN3aXRjaCAoRm9ybS5iYWRfdG9rZW5fY2xzKHRva2VuKSkge1xuICAgIHwgQmFkSW50ID0+IFt0ZXh0KFwiSW50ZWdlciBpcyB0b28gbGFyZ2Ugb3IgdG9vIHNtYWxsXCIpXVxuICAgIHwgT3RoZXIgPT4gW3RleHQoUHJpbnRmLnNwcmludGYoXCJcXFwiJXNcXFwiIGlzbid0IGEgdmFsaWQgdG9rZW5cIiwgdG9rZW4pKV1cbiAgICB9XG4gIHwgTm9UeXBlKEJhZFRyaXZBcCh0eSkpID0+IFtcbiAgICAgIHRleHQoXCJGdW5jdGlvbiBhcmd1bWVudCB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHR5KSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aFwiKSxcbiAgICAgIFR5cGUudmlldyhQcm9kKFtdKSB8PiBUeXAuZnJlc2gpLFxuICAgIF1cbiAgfCBOb1R5cGUoRnJlZUNvbnN0cnVjdG9yKG5hbWUpKSA9PiBbY29kZV9lcnIobmFtZSksIHRleHQoXCJub3QgZm91bmRcIildXG4gIHwgSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eXApKSA9PiBbXG4gICAgICB0ZXh0KFwiOlwiKSxcbiAgICAgIFR5cGUudmlldyh0eXApLFxuICAgICAgdGV4dChcImluY29uc2lzdGVudCB3aXRoIGFycm93IHR5cGVcIiksXG4gICAgXVxuICB8IEluY29uc2lzdGVudChFeHBlY3RhdGlvbih7YW5hLCBzeW59KSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KGFuYSksXG4gICAgXVxuICB8IEluY29uc2lzdGVudChJbnRlcm5hbCh0eXMpKSA9PiBbXG4gICAgICB0ZXh0KGVsZW1lbnRzX25vdW4oY2xzKSArKyBcIiBoYXZlIGluY29uc2lzdGVudCB0eXBlczpcIiksXG4gICAgICAuLi5MaXN0VXRpbC5qb2luKHRleHQoXCIsXCIpLCBMaXN0Lm1hcChUeXBlLnZpZXcsIHR5cykpLFxuICAgIF1cbiAgfTtcblxubGV0IGNvbW1vbl9va192aWV3ID0gKGNsczogQ2xzLnQsIG9rOiBJbmZvLm9rX3BhdCkgPT4ge1xuICBzd2l0Y2ggKGNscywgb2spIHtcbiAgfCAoRXhwKE11bHRpSG9sZSkgfCBQYXQoTXVsdGlIb2xlKSwgXykgPT4gW1xuICAgICAgdGV4dChcIkV4cGVjdGluZyBvcGVyYXRvciBvciBkZWxpbWl0ZXJcIiksXG4gICAgXVxuICB8IChFeHAoRW1wdHlIb2xlKSwgU3luKF8pKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBleHByZXNzaW9uXCIpXVxuICB8IChQYXQoRW1wdHlIb2xlKSwgU3luKF8pKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBwYXR0ZXJuXCIpXVxuICB8IChFeHAoRW1wdHlIb2xlKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBleHByZXNzaW9uIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKFBhdChFbXB0eUhvbGUpLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBffSkpKSA9PiBbXG4gICAgICB0ZXh0KFwiRmlsbGFibGUgYnkgYW55IHBhdHRlcm4gb2YgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgU3luKHN5bikpID0+IFt0ZXh0KFwiOlwiKSwgVHlwZS52aWV3KHN5bildXG4gIHwgKFBhdChWYXIpIHwgUGF0KFdpbGQpLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBffSkpKSA9PiBbXG4gICAgICB0ZXh0KFwiOlwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgQW5hKENvbnNpc3RlbnQoe2FuYSwgc3luLCBffSkpKSB3aGVuIGFuYSA9PSBzeW4gPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJlcXVhbHMgZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICBdXG4gIHwgKF8sIEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJjb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgbm9qb2luOiB0eXN9KSkpID0+XG4gICAgW1xuICAgICAgdGV4dChlbGVtZW50c19ub3VuKGNscykgKysgXCIgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXM6XCIpLFxuICAgICAgLi4uTGlzdFV0aWwuam9pbih0ZXh0KFwiLFwiKSwgTGlzdC5tYXAoVHlwZS52aWV3LCB0eXMpKSxcbiAgICBdXG4gICAgQCBbdGV4dChcImJ1dCBjb25zaXN0ZW50IHdpdGggZXhwZWN0ZWRcIiksIFR5cGUudmlldyhhbmEpXVxuICB9O1xufTtcblxubGV0IHR5cF9va192aWV3ID0gKGNsczogQ2xzLnQsIG9rOiBJbmZvLm9rX3R5cCkgPT5cbiAgc3dpdGNoIChvaykge1xuICB8IFR5cGUoXykgd2hlbiBjbHMgPT0gVHlwKEVtcHR5SG9sZSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgdHlwZVwiKV1cbiAgfCBUeXBlKHR5KSA9PiBbVHlwZS52aWV3KHR5KSwgdGV4dChcImlzIGEgdHlwZVwiKV1cbiAgfCBUeXBlQWxpYXMobmFtZSwgdHlfbG9va3VwKSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgICB0ZXh0KFwiaXMgYW4gYWxpYXMgZm9yXCIpLFxuICAgICAgVHlwZS52aWV3KHR5X2xvb2t1cCksXG4gICAgXVxuICB8IFZhcmlhbnQobmFtZSwgc3VtX3R5KSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgICB0ZXh0KFwiaXMgYSBzdW0gdHlwZSBjb25zdHVjdG9yIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoc3VtX3R5KSxcbiAgICBdXG4gIHwgVmFyaWFudEluY29tcGxldGUoc3VtX3R5KSA9PiBbXG4gICAgICB0ZXh0KFwiQW4gaW5jb21wbGV0ZSBzdW0gdHlwZSBjb25zdHVjdG9yIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoc3VtX3R5KSxcbiAgICBdXG4gIH07XG5cbmxldCB0eXBfZXJyX3ZpZXcgPSAob2s6IEluZm8uZXJyb3JfdHlwKSA9PlxuICBzd2l0Y2ggKG9rKSB7XG4gIHwgRnJlZVR5cGVWYXJpYWJsZShuYW1lKSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgICB0ZXh0KFwibm90IGZvdW5kXCIpLFxuICAgIF1cbiAgfCBCYWRUb2tlbih0b2tlbikgPT4gW1xuICAgICAgY29kZV9lcnIodG9rZW4pLFxuICAgICAgdGV4dChcIm5vdCBhIHR5cGUgb3IgdHlwZSBvcGVyYXRvclwiKSxcbiAgICBdXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRBcFxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kVHlwZShfKSA9PiBbdGV4dChcIkV4cGVjdGVkIGEgY29uc3RydWN0b3JcIildXG4gIHwgV2FudFR5cGVGb3VuZEFwID0+IFt0ZXh0KFwiTXVzdCBiZSBwYXJ0IG9mIGEgc3VtIHR5cGVcIildXG4gIHwgRHVwbGljYXRlQ29uc3RydWN0b3IobmFtZSkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcImFscmVhZHkgdXNlZCBpbiB0aGlzIHN1bVwiKSxcbiAgICBdXG4gIH07XG5cbmxldCBleHBfdmlldyA9IChjbHM6IENscy50LCBzdGF0dXM6IEluZm8uc3RhdHVzX2V4cCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBJbkhvbGUoRnJlZVZhcmlhYmxlKG5hbWUpKSA9PlxuICAgIGRpdl9lcnIoW2NvZGVfZXJyKG5hbWUpLCB0ZXh0KFwibm90IGZvdW5kXCIpXSlcbiAgfCBJbkhvbGUoVW51c2VkRGVmZXJyYWwpID0+XG4gICAgZGl2X2VycihbdGV4dChcIkRlZmVycmFsIG11c3QgYXBwZWFyIGFzIGEgZnVuY3Rpb24gYXJndW1lbnRcIildKVxuICB8IEluSG9sZShCYWRQYXJ0aWFsQXAoTm9EZWZlcnJlZEFyZ3MpKSA9PlxuICAgIGRpdl9lcnIoW3RleHQoXCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgbm9uLWRlZmVycmVkIGFyZ3VtZW50XCIpXSlcbiAgfCBJbkhvbGUoQmFkUGFydGlhbEFwKEFyaXR5TWlzbWF0Y2goe2V4cGVjdGVkLCBhY3R1YWx9KSkpID0+XG4gICAgZGl2X2VycihbXG4gICAgICB0ZXh0KFxuICAgICAgICBcIkFyaXR5IG1pc21hdGNoOiBleHBlY3RlZCBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KGV4cGVjdGVkKVxuICAgICAgICArKyBcIiBhcmd1bWVudFwiXG4gICAgICAgICsrIChleHBlY3RlZCA9PSAxID8gXCJcIiA6IFwic1wiKVxuICAgICAgICArKyBcIiwgZ290IFwiXG4gICAgICAgICsrIHN0cmluZ19vZl9pbnQoYWN0dWFsKVxuICAgICAgICArKyBcIiBhcmd1bWVudHNcIixcbiAgICAgICksXG4gICAgXSlcbiAgfCBJbkhvbGUoQ29tbW9uKGVycm9yKSkgPT4gZGl2X2Vycihjb21tb25fZXJyX3ZpZXcoY2xzLCBlcnJvcikpXG4gIHwgTm90SW5Ib2xlKEFuYURlZmVycmFsQ29uc2lzdGVudChhbmEpKSA9PlxuICAgIGRpdl9vayhbdGV4dChcIkV4cGVjdGluZyB0eXBlXCIpLCBUeXBlLnZpZXcoYW5hKV0pXG4gIHwgTm90SW5Ib2xlKENvbW1vbihvaykpID0+IGRpdl9vayhjb21tb25fb2tfdmlldyhjbHMsIG9rKSlcbiAgfTtcblxubGV0IHBhdF92aWV3ID0gKGNsczogQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfcGF0KSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IEluSG9sZShFeHBlY3RlZENvbnN0cnVjdG9yKSA9PiBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYSBjb25zdHJ1Y3RvclwiKV0pXG4gIHwgSW5Ib2xlKENvbW1vbihlcnJvcikpID0+IGRpdl9lcnIoY29tbW9uX2Vycl92aWV3KGNscywgZXJyb3IpKVxuICB8IE5vdEluSG9sZShvaykgPT4gZGl2X29rKGNvbW1vbl9va192aWV3KGNscywgb2spKVxuICB9O1xuXG5sZXQgdHlwX3ZpZXcgPSAoY2xzOiBDbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c190eXApID0+XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gIHwgTm90SW5Ib2xlKG9rKSA9PiBkaXZfb2sodHlwX29rX3ZpZXcoY2xzLCBvaykpXG4gIHwgSW5Ib2xlKGVycikgPT4gZGl2X2Vycih0eXBfZXJyX3ZpZXcoZXJyKSlcbiAgfTtcblxubGV0IHRwYXRfdmlldyA9IChfOiBDbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c190cGF0KSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IE5vdEluSG9sZShFbXB0eSkgPT4gZGl2X29rKFt0ZXh0KFwiRmlsbGFibGUgd2l0aCBhIG5ldyBhbGlhc1wiKV0pXG4gIHwgTm90SW5Ib2xlKFZhcihuYW1lKSkgPT4gZGl2X29rKFtUeXBlLmFsaWFzX3ZpZXcobmFtZSldKVxuICB8IEluSG9sZShOb3RBVmFyKE5vdENhcGl0YWxpemVkKSkgPT5cbiAgICBkaXZfZXJyKFt0ZXh0KFwiTXVzdCBiZWdpbiB3aXRoIGEgY2FwaXRhbCBsZXR0ZXJcIildKVxuICB8IEluSG9sZShOb3RBVmFyKF8pKSA9PiBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYW4gYWxpYXNcIildKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBCYXNlVHlwKSkgPT5cbiAgICBkaXZfZXJyKFtcbiAgICAgIHRleHQoXCJDYW4ndCBzaGFkb3cgYmFzZSB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgIF0pXG4gIHwgSW5Ib2xlKFNoYWRvd3NUeXBlKG5hbWUsIFR5QWxpYXMpKSA9PlxuICAgIGRpdl9lcnIoW1xuICAgICAgdGV4dChcIkNhbid0IHNoYWRvdyBleGlzdGluZyBhbGlhc1wiKSxcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkgfD4gVHlwLmZyZXNoKSxcbiAgICBdKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBUeVZhcikpID0+XG4gICAgZGl2X2VycihbXG4gICAgICB0ZXh0KFwiQ2FuJ3Qgc2hhZG93IGV4aXN0aW5nIHR5cGUgdmFyaWFibGVcIiksXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgXSlcbiAgfTtcblxubGV0IHNlY29uZGFyeV92aWV3ID0gKGNsczogQ2xzLnQpID0+IGRpdl9vayhbdGV4dChjbHMgfD4gQ2xzLnNob3cpXSk7XG5cbmxldCB2aWV3X29mX2luZm8gPSAofmluamVjdCwgfnNldHRpbmdzLCBjaSk6IE5vZGUudCA9PiB7XG4gIGxldCB3cmFwcGVyID0gc3RhdHVzX3ZpZXcgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcImluZm9cIl0pLFxuICAgICAgW3Rlcm1fdmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKSwgc3RhdHVzX3ZpZXddLFxuICAgICk7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBTZWNvbmRhcnkoXykgPT4gd3JhcHBlcihkaXYoW10pKVxuICB8IEluZm9FeHAoe2Nscywgc3RhdHVzLCBffSkgPT4gd3JhcHBlcihleHBfdmlldyhjbHMsIHN0YXR1cykpXG4gIHwgSW5mb1BhdCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHBhdF92aWV3KGNscywgc3RhdHVzKSlcbiAgfCBJbmZvVHlwKHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIodHlwX3ZpZXcoY2xzLCBzdGF0dXMpKVxuICB8IEluZm9UUGF0KHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIodHBhdF92aWV3KGNscywgc3RhdHVzKSlcbiAgfTtcbn07XG5cbmxldCBpbnNwZWN0b3JfdmlldyA9ICh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImN1cnNvci1pbnNwZWN0b3JcIl0gQCBbSW5mby5pc19lcnJvcihjaSkgPyBlcnJjIDogb2tjXSksXG4gICAgW3ZpZXdfb2ZfaW5mbyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKV0sXG4gICk7XG5cbmxldCB2aWV3ID0gKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgY3Vyc29yX2luZm86IG9wdGlvbihJbmZvLnQpKSA9PiB7XG4gIGxldCBiYXJfdmlldyA9IGRpdih+YXR0cj1BdHRyLmlkKFwiYm90dG9tLWJhclwiKSk7XG4gIGxldCBlcnJfdmlldyA9IGVyciA9PlxuICAgIGJhcl92aWV3KFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJjdXJzb3ItaW5zcGVjdG9yXCIsIFwibm8taW5mb1wiXSksXG4gICAgICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJpY29uXCJdKSwgW0ljb25zLm1hZ25pZnldKSwgdGV4dChlcnIpXSxcbiAgICAgICksXG4gICAgXSk7XG4gIHN3aXRjaCAoY3Vyc29yX2luZm8pIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBkaXZfZW1wdHlcbiAgfCBOb25lID0+IGVycl92aWV3KFwiV2hpdGVzcGFjZSBvciBDb21tZW50XCIpXG4gIHwgU29tZShjaSkgPT5cbiAgICBiYXJfdmlldyhbXG4gICAgICBpbnNwZWN0b3Jfdmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJpZFwiXSksXG4gICAgICAgIFt0ZXh0KFN0cmluZy5zdWIoSWQudG9fc3RyaW5nKEluZm8uaWRfb2YoY2kpKSwgMCwgNCkpXSxcbiAgICAgICksXG4gICAgXSlcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFdpZGdldHM7XG5cbmxldCBvcHRpb25fdmlldyA9IChuYW1lLCBuKSA9PlxuICBvcHRpb24oXG4gICAgfmF0dHI9biA9PSBuYW1lID8gQXR0ci5jcmVhdGUoXCJzZWxlY3RlZFwiLCBcInNlbGVjdGVkXCIpIDogQXR0ci5tYW55KFtdKSxcbiAgICBbdGV4dChuKV0sXG4gICk7XG5cbmxldCBtb2RlX21lbnUgPSAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EsIH5tb2RlOiBTZXR0aW5ncy5tb2RlKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcIm1vZGUtbmFtZVwiKSwgQXR0ci50aXRsZShcIlRvZ2dsZSBNb2RlXCIpXSksXG4gICAgW1xuICAgICAgc2VsZWN0KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm9uX2NoYW5nZSgoXywgbmFtZSkgPT5cbiAgICAgICAgICAgIGluamVjdChTZXQoTW9kZShTZXR0aW5ncy5tb2RlX29mX3N0cmluZyhuYW1lKSkpKVxuICAgICAgICAgICksXG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgIG9wdGlvbl92aWV3KFNldHRpbmdzLnNob3dfbW9kZShtb2RlKSksXG4gICAgICAgICAgW1wiU2NyYXRjaFwiLCBcIkRvY3VtZW50YXRpb25cIiwgXCJFeGVyY2lzZXNcIl0sXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF0sXG4gICk7XG5cbmxldCBzbGlkZV9zZWxlY3QgPSAofmluamVjdCwgfmN1cl9zbGlkZSwgfm51bV9zbGlkZXMpID0+IHtcbiAgbGV0IG5leHRfZWQgPSAoY3VyX3NsaWRlICsgMSkgbW9kIG51bV9zbGlkZXM7XG4gIGxldCBwcmV2X2VkID0gVXRpbC5JbnRVdGlsLm1vZHVsbyhjdXJfc2xpZGUgLSAxLCBudW1fc2xpZGVzKTtcbiAgW1xuICAgIGJ1dHRvbihJY29ucy5iYWNrLCBfID0+IGluamVjdChVcGRhdGUuU3dpdGNoU2NyYXRjaFNsaWRlKHByZXZfZWQpKSksXG4gICAgdGV4dChQcmludGYuc3ByaW50ZihcIiVkIC8gJWRcIiwgY3VyX3NsaWRlICsgMSwgbnVtX3NsaWRlcykpLFxuICAgIGJ1dHRvbihJY29ucy5mb3J3YXJkLCBfID0+IGluamVjdChVcGRhdGUuU3dpdGNoU2NyYXRjaFNsaWRlKG5leHRfZWQpKSksXG4gIF07XG59O1xuXG5sZXQgc2NyYXRjaF92aWV3ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5zbGlkZXMpID0+XG4gIFttb2RlX21lbnUofmluamVjdCwgfm1vZGU9U2NyYXRjaCldXG4gIEAgc2xpZGVfc2VsZWN0KH5pbmplY3QsIH5jdXJfc2xpZGUsIH5udW1fc2xpZGVzPUxpc3QubGVuZ3RoKHNsaWRlcykpO1xuXG5sZXQgZG9jdW1lbnRhdGlvbl92aWV3ID0gKH5pbmplY3QsIH5uYW1lLCB+ZWRpdG9ycykgPT4ge1xuICBsZXQgZWRpdG9yX25hbWVzID0gTGlzdC5tYXAoZnN0LCBlZGl0b3JzKTtcbiAgbGV0IHJlYyBmaW5kX3ByZXZfbmV4dDogbGlzdChzdHJpbmcpID0+IChvcHRpb24oc3RyaW5nKSwgb3B0aW9uKHN0cmluZykpID1cbiAgICBmdW5cbiAgICB8IFtdXG4gICAgfCBbX10gPT4gKE5vbmUsIE5vbmUpXG4gICAgfCBbeCwgeV0gd2hlbiBuYW1lID09IHggPT4gKE5vbmUsIFNvbWUoeSkpXG4gICAgfCBbeCwgeV0gd2hlbiBuYW1lID09IHkgPT4gKFNvbWUoeCksIE5vbmUpXG4gICAgfCBbXywgX10gPT4gKE5vbmUsIE5vbmUpXG4gICAgfCBbeCwgeSwgLi4uX10gd2hlbiBuYW1lID09IHggPT4gKE5vbmUsIFNvbWUoeSkpXG4gICAgfCBbeCwgeSwgeiwgLi4uX10gd2hlbiBuYW1lID09IHkgPT4gKFNvbWUoeCksIFNvbWUoeikpXG4gICAgfCBbXywgLi4ueXNdID0+IGZpbmRfcHJldl9uZXh0KHlzKTtcbiAgbGV0IChwcmV2LCBuZXh0KSA9IGZpbmRfcHJldl9uZXh0KGVkaXRvcl9uYW1lcyk7XG4gIGxldCBwcmV2ID1cbiAgICBwcmV2XG4gICAgfD4gT3B0aW9uLm1hcChzID0+XG4gICAgICAgICBidXR0b24oSWNvbnMuYmFjaywgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShzKSkpXG4gICAgICAgKVxuICAgIHw+IE9wdGlvbi52YWx1ZShcbiAgICAgICAgIH5kZWZhdWx0PVxuICAgICAgICAgICBidXR0b25fZChcbiAgICAgICAgICAgICBJY29ucy5iYWNrLFxuICAgICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKFwibm9uZVwiKSksXG4gICAgICAgICAgICAgfmRpc2FibGVkPXRydWUsXG4gICAgICAgICAgICksXG4gICAgICAgKTtcbiAgbGV0IG5leHQgPVxuICAgIG5leHRcbiAgICB8PiBPcHRpb24ubWFwKHMgPT5cbiAgICAgICAgIGJ1dHRvbihJY29ucy5mb3J3YXJkLCBfID0+XG4gICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKHMpKVxuICAgICAgICAgKVxuICAgICAgIClcbiAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgYnV0dG9uX2QoXG4gICAgICAgICAgICAgSWNvbnMuZm9yd2FyZCxcbiAgICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShcIm5vbmVcIikpLFxuICAgICAgICAgICAgIH5kaXNhYmxlZD10cnVlLFxuICAgICAgICAgICApLFxuICAgICAgICk7XG4gIFtcbiAgICBtb2RlX21lbnUofmluamVjdCwgfm1vZGU9RG9jdW1lbnRhdGlvbiksXG4gICAgcHJldixcbiAgICBzZWxlY3QoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5vbl9jaGFuZ2UoKF8sIG5hbWUpID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUobmFtZSkpXG4gICAgICAgICksXG4gICAgICBMaXN0Lm1hcChvcHRpb25fdmlldyhuYW1lKSwgZWRpdG9yX25hbWVzKSxcbiAgICApLFxuICAgIG5leHQsXG4gIF07XG59O1xuXG5sZXQgaW5zdHJ1Y3Rvcl90b2dnbGUgPSAofmluamVjdCwgfmluc3RydWN0b3JfbW9kZSkgPT5cbiAgRXhlcmNpc2VTZXR0aW5ncy5zaG93X2luc3RydWN0b3JcbiAgICA/IFtcbiAgICAgIHRvZ2dsZShcIvCfjpNcIiwgfnRvb2x0aXA9XCJUb2dnbGUgSW5zdHJ1Y3RvciBNb2RlXCIsIGluc3RydWN0b3JfbW9kZSwgXyA9PlxuICAgICAgICBpbmplY3QoVXBkYXRlLlNldChJbnN0cnVjdG9yTW9kZSkpXG4gICAgICApLFxuICAgIF1cbiAgICA6IFtdO1xuXG5sZXQgZXhlcmNpc2VzX3ZpZXcgPSAofmluamVjdCwgfmN1cl9zbGlkZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gIFttb2RlX21lbnUofmluamVjdCwgfm1vZGU9RXhlcmNpc2VzKV1cbiAgQCBpbnN0cnVjdG9yX3RvZ2dsZSh+aW5qZWN0LCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICBAIHNsaWRlX3NlbGVjdCh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcz1MaXN0Lmxlbmd0aChzcGVjcykpO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLFxuICAgICAgfmVkaXRvcnM6IEVkaXRvcnMudCxcbiAgICAgIH5zZXR0aW5ncyBhcyB7aW5zdHJ1Y3Rvcl9tb2RlLCBffTogU2V0dGluZ3MudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBsZXQgY29udGVudHMgPVxuICAgIHN3aXRjaCAoZWRpdG9ycykge1xuICAgIHwgU2NyYXRjaChjdXJfc2xpZGUsIHNsaWRlcykgPT5cbiAgICAgIHNjcmF0Y2hfdmlldyh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+c2xpZGVzKVxuICAgIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBlZGl0b3JzKSA9PlxuICAgICAgZG9jdW1lbnRhdGlvbl92aWV3KH5pbmplY3QsIH5uYW1lLCB+ZWRpdG9ycylcbiAgICB8IEV4ZXJjaXNlcyhjdXJfc2xpZGUsIHNwZWNzLCBfKSA9PlxuICAgICAgZXhlcmNpc2VzX3ZpZXcofmN1cl9zbGlkZSwgfnNwZWNzLCB+aW5qZWN0LCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIGRpdih+YXR0cj1BdHRyLmlkKFwiZWRpdG9yLW1vZGVcIiksIGNvbnRlbnRzKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmluY2x1ZGUgSGF6M2xzY2hvb2wuR3JhZGluZy5GKEV4ZXJjaXNlLkV4ZXJjaXNlRW52KTtcblxubGV0IHNjb3JlX3ZpZXcgPSAoKGVhcm5lZDogcG9pbnRzLCBtYXg6IHBvaW50cykpID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgXCJ0ZXN0LXBlcmNlbnRcIixcbiAgICAgICAgRmxvYXQuZXF1YWwoZWFybmVkLCBtYXgpID8gXCJhbGwtcGFzc1wiIDogXCJzb21lLWZhaWxcIixcbiAgICAgIF0pLFxuICAgIFt0ZXh0KFByaW50Zi5zcHJpbnRmKFwiJS4xZiAvICUuMWYgcHRzXCIsIGVhcm5lZCwgbWF4KSldLFxuICApO1xufTtcblxubGV0IHBlcmNlbnRhZ2VfdmlldyA9IChwOiBwZXJjZW50YWdlKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwidGVzdC1wZXJjZW50XCIsXG4gICAgICAgIEZsb2F0LmVxdWFsKHAsIDEuKSA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCIsXG4gICAgICBdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMGYlJVwiLCAxMDAuICouIHApKV0sXG4gICk7XG59O1xuXG5tb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gIGluY2x1ZGUgVGVzdFZhbGlkYXRpb25SZXBvcnQ7XG4gIGxldCB0ZXh0dWFsX3N1bW1hcnkgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHNcIildXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgbGV0IHRvdGFsX3Rlc3RzID0gdGVzdF9yZXN1bHRzLnRvdGFsO1xuICAgICAgICAgIGxldCByZXF1aXJlZCA9IHJlcG9ydC5yZXF1aXJlZDtcbiAgICAgICAgICBsZXQgbnVtX3Rlc3RzX21lc3NhZ2UgPVxuICAgICAgICAgICAgdG90YWxfdGVzdHMgPj0gcmVxdWlyZWRcbiAgICAgICAgICAgICAgPyBcImF0IGxlYXN0IFwiICsrIHN0cmluZ19vZl9pbnQocmVxdWlyZWQpXG4gICAgICAgICAgICAgIDogc3RyaW5nX29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpXG4gICAgICAgICAgICAgICAgKysgXCIgb2YgXCJcbiAgICAgICAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiRW50ZXJlZCBcIlxuICAgICAgICAgICAgKysgbnVtX3Rlc3RzX21lc3NhZ2VcbiAgICAgICAgICAgICsrIFwiIHRlc3RzLiBcIlxuICAgICAgICAgICAgKysgdGVzdF9zdW1tYXJ5X3N0cih0ZXN0X3Jlc3VsdHMpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmlldyA9ICh+aW5qZWN0LCByZXBvcnQ6IHQsIG1heF9wb2ludHM6IGludCkgPT4ge1xuICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtdGV4dFwiKSxcbiAgICAgICAgICAgIFtzY29yZV92aWV3KHNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZShyZXBvcnQpLCBtYXhfcG9pbnRzKSldXG4gICAgICAgICAgICBAIHRleHR1YWxfc3VtbWFyeShyZXBvcnQpLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCBPcHRpb24udG9fbGlzdChcbiAgICAgICAgICAgIHJlcG9ydC50ZXN0X3Jlc3VsdHNcbiAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAodGVzdF9yZXN1bHRzID0+XG4gICAgICAgICAgICAgICAgIFRlc3RWaWV3LnRlc3RfYmFyKFxuICAgICAgICAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICAgICAgICAgfnRlc3RfcmVzdWx0cyxcbiAgICAgICAgICAgICAgICAgICBZb3VyVGVzdHNWYWxpZGF0aW9uLFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgIF0pO1xuICB9O1xufTtcblxubW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgaW5jbHVkZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQ7XG4gIG9wZW4gSGF6M2xjb3JlO1xuXG4gIGxldCBzdW1tYXJ5X21lc3NhZ2UgPSAofnNjb3JlLCB+dG90YWwsIH5mb3VuZCk6IE5vZGUudCA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXRleHRcIl0pLFxuICAgICAgW3Njb3JlX3ZpZXcoc2NvcmUpLCB0ZXh0KHN1bW1hcnlfc3RyKH50b3RhbCwgfmZvdW5kKSldLFxuICAgICk7XG5cbiAgbGV0IGJhciA9ICh+aW5qZWN0LCBpbnN0YW5jZXMpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtYmFyXCJdKSxcbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKGlkLCAoc3RhdHVzLCBfKSkgPT5cbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wic2VnbWVudFwiLCBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpXSksXG4gICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhcbiAgICAgICAgICAgICAgICAgIC8vVE9ETzogd2lyZSB1cCB0ZXN0IGlkc1xuICAgICAgICAgICAgICAgICAgVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlbkJ1Z3MoaWQpLCBJZC5pbnZhbGlkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICksXG4gICAgICAgIGluc3RhbmNlcyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgc3VtbWFyeSA9ICh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykgPT4ge1xuICAgIGxldCB0b3RhbCA9IExpc3QubGVuZ3RoKHJlcG9ydC5yZXN1bHRzKTtcbiAgICBsZXQgZm91bmQgPVxuICAgICAgTGlzdC5sZW5ndGgoXG4gICAgICAgIExpc3QuZmlsdGVyKCgoeDogVGVzdFN0YXR1cy50LCBfKSkgPT4geCA9PSBQYXNzLCByZXBvcnQucmVzdWx0cyksXG4gICAgICApO1xuICAgIGxldCBzdGF0dXNfY2xhc3MgPSB0b3RhbCA9PSBmb3VuZCA/IFwiUGFzc1wiIDogXCJGYWlsXCI7XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgXCJjZWxsLWl0ZW1cIixcbiAgICAgICAgICBcInRlc3Qtc3VtbWFyeVwiLFxuICAgICAgICAgIFwiY2VsbC1yZXBvcnRcIixcbiAgICAgICAgICBzdGF0dXNfY2xhc3MsXG4gICAgICAgIF0pLFxuICAgICAgW1xuICAgICAgICBzdW1tYXJ5X21lc3NhZ2UoXG4gICAgICAgICAgfnNjb3JlPXNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZShyZXBvcnQpLCBtYXhfcG9pbnRzKSxcbiAgICAgICAgICB+dG90YWwsXG4gICAgICAgICAgfmZvdW5kLFxuICAgICAgICApLFxuICAgICAgICBiYXIofmluamVjdCwgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgXSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydCA9IChpZCwgfmluamVjdCwgfmhpbnQ6IHN0cmluZywgfnN0YXR1czogVGVzdFN0YXR1cy50KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlcG9ydFwiXSksXG4gICAgICAgICAgLy9UT0RPOiB3aXJlIHVwIHRlc3QgaWRzXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhcbiAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5CdWdzKGlkKSwgSWQuaW52YWxpZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1pZFwiLFxuICAgICAgICAgICAgICBcIlRlc3RcIiArKyBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgLyogTk9URTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCB1bmlxdWUgaWQgKi9cbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGlkICsgMSkpXSxcbiAgICAgICAgKSxcbiAgICAgICAgLy8gVGVzdFZpZXcudGVzdF9pbnN0YW5jZV92aWV3KH5mb250X21ldHJpY3MsIGluc3RhbmNlKSxcbiAgICAgIF1cbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaGludFwiLFxuICAgICAgICAgICAgICBcInRlc3QtaW5zdGFuY2VcIixcbiAgICAgICAgICAgICAgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFt0ZXh0KGhpbnQpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnRzID0gKH5pbmplY3QsIGNvdmVyYWdlX3Jlc3VsdHMpID0+XG4gICAgZGl2KFxuICAgICAgY292ZXJhZ2VfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoaSwgfmluamVjdCwgfmhpbnQsIH5zdGF0dXMpXG4gICAgICAgICApLFxuICAgICk7XG5cbiAgLy8gbGV0IHBhc3NpbmdfdGVzdF9pZHMgPSB0ZXN0X21hcCA9PlxuICAvLyAgIHRlc3RfbWFwXG4gIC8vICAgfD4gTGlzdC5maWx0ZXIoKChfaWQsIHJlcG9ydHMpKSA9PlxuICAvLyAgICAgICAgTGlzdC5mb3JfYWxsKFxuICAvLyAgICAgICAgICAoKF8sIHN0YXR1cykpID0+IHN0YXR1cyA9PSBIYXozbGNvcmUuVGVzdFN0YXR1cy5QYXNzLFxuICAvLyAgICAgICAgICByZXBvcnRzLFxuICAvLyAgICAgICAgKVxuICAvLyAgICAgIClcbiAgLy8gICB8PiBMaXN0LnNwbGl0XG4gIC8vICAgfD4gZnN0O1xuXG4gIC8vIGxldCBmYWlsaW5nX3Rlc3RfaWRzID0gdGVzdF9tYXAgPT5cbiAgLy8gICB0ZXN0X21hcFxuICAvLyAgIHw+IExpc3QuZmlsdGVyKCgoX2lkLCByZXBvcnRzKSkgPT5cbiAgLy8gICAgICAgIExpc3QuZm9yX2FsbChcbiAgLy8gICAgICAgICAgKChfLCBzdGF0dXMpKSA9PiBzdGF0dXMgPT0gSGF6M2xjb3JlLlRlc3RTdGF0dXMuRmFpbCxcbiAgLy8gICAgICAgICAgcmVwb3J0cyxcbiAgLy8gICAgICAgIClcbiAgLy8gICAgICApXG4gIC8vICAgfD4gTGlzdC5zcGxpdFxuICAvLyAgIHw+IGZzdDtcblxuICAvLyBsZXQgZ2V0X3Rlc3RfbWFwID0gKGVkaXRvcnM6IGxpc3QoSGF6M2xjb3JlLkVkaXRvci50KSkgPT4ge1xuICAvLyAgIGxldCAocmVmZXJlbmNlX3Rlcm0sIHJlZmVyZW5jZV9tYXApID0gc3BsaWNlZF9zdGF0aWNzKGVkaXRvcnMpO1xuICAvLyAgIGxldCByZXN1bHRfcmVmZXJlbmNlID1cbiAgLy8gICAgIEludGVyZmFjZS50ZXN0X3Jlc3VsdHMocmVmZXJlbmNlX21hcCwgcmVmZXJlbmNlX3Rlcm0pO1xuICAvLyAgIHN3aXRjaCAocmVzdWx0X3JlZmVyZW5jZSkge1xuICAvLyAgIHwgTm9uZSA9PiBbXVxuICAvLyAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IHRlc3RfcmVzdWx0cy50ZXN0X21hcFxuICAvLyAgIH07XG4gIC8vIH07XG4gIC8vIGxldCBzaG93X3Rlcm0gPSAoZWRpdG9yOiBFZGl0b3IudCwgXykgPT5cbiAgLy8gICBlZGl0b3Iuc3RhdGUuemlwcGVyXG4gIC8vICAgfD4gWmlwcGVyLnppcFxuICAvLyAgIHw+IE1ha2VUZXJtLmdvXG4gIC8vICAgfD4gZnN0XG4gIC8vICAgfD4gVUV4cC5zaG93XG4gIC8vICAgfD4gcHJpbnRfZW5kbGluZVxuICAvLyAgIHw+IChfID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZSk7XG5cbiAgLy8gbGV0IGdldF9maXJzdF9jb21tb24gPVxuICAvLyAgICAgKHJlZmVyZW5jZV9wYXNzaW5nLCB3cm9uZyk6IChUZXN0U3RhdHVzLnQsIG9wdGlvbignYSkpID0+IHtcbiAgLy8gICBsZXQgd3JvbmdfdGVzdF9tYXAgPSB3cm9uZyB8PiBnZXRfdGVzdF9tYXA7XG4gIC8vICAgbGV0IHdyb25nX2ZhaWxpbmcgPSB3cm9uZ190ZXN0X21hcCB8PiBmYWlsaW5nX3Rlc3RfaWRzO1xuICAvLyAgIGxldCBjb21tb24gPVxuICAvLyAgICAgTGlzdC5maWx0ZXIoeCA9PiBMaXN0Lm1lbSh4LCByZWZlcmVuY2VfcGFzc2luZyksIHdyb25nX2ZhaWxpbmcpO1xuICAvLyAgIGxldCBpbnN0YW5jZTogb3B0aW9uKGxpc3QoJ2EpKSA9XG4gIC8vICAgICBzd2l0Y2ggKGNvbW1vbikge1xuICAvLyAgICAgfCBbXSA9PiBOb25lXG4gIC8vICAgICB8IFt4LCAuLi5fXSA9PiBMaXN0LmFzc29jX29wdCh4LCB3cm9uZ190ZXN0X21hcClcbiAgLy8gICAgIH07XG4gIC8vICAgc3dpdGNoIChpbnN0YW5jZSkge1xuICAvLyAgIHwgU29tZShbaW5zdGFuY2UsIC4uLl9dKSA9PiAoVGVzdFN0YXR1cy5QYXNzLCBTb21lKGluc3RhbmNlKSlcbiAgLy8gICB8IF8gPT4gKFRlc3RTdGF0dXMuRmFpbCwgTm9uZSlcbiAgLy8gICB9O1xuICAvLyB9O1xuXG4gIGxldCB2aWV3ID0gKH5pbmplY3QsIHJlcG9ydDogdCwgbWF4X3BvaW50czogaW50KSA9PlxuICAgIGlmIChtYXhfcG9pbnRzID09IDApIHtcbiAgICAgIE5vZGUuZGl2KFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ2VsbC5wYW5lbChcbiAgICAgICAgfmNsYXNzZXM9W1widGVzdC1wYW5lbFwiXSxcbiAgICAgICAgW1xuICAgICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICAgIFwiTXV0YXRpb24gVGVzdGluZ1wiLFxuICAgICAgICAgICAgfnJlc3Q9XCI6IFlvdXIgVGVzdHMgdnMuIEJ1Z2d5IEltcGxlbWVudGF0aW9ucyAoaGlkZGVuKVwiLFxuICAgICAgICAgICksXG4gICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgfmZvb3Rlcj1Tb21lKHN1bW1hcnkofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpKSxcbiAgICAgICk7XG4gICAgfTtcbn07XG5cbm1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gIGluY2x1ZGUgU3ludGF4UmVwb3J0O1xuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaTogaW50LCBoaW50OiBzdHJpbmcsIHN0YXR1czogYm9vbCkgPT4ge1xuICAgIGxldCByZXN1bHRfc3RyaW5nID0gc3RhdHVzID8gXCJQYXNzXCIgOiBcIkluZGV0XCI7XG5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtaWRcIiwgXCJUZXN0XCIgKysgcmVzdWx0X3N0cmluZ10pLFxuICAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4gICAgICAgICksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LWhpbnRcIiwgXCJ0ZXN0LWluc3RhbmNlXCIsIHJlc3VsdF9zdHJpbmddKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9IChoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgc3RyaW5nKSkpID0+IHtcbiAgICBkaXYoXG4gICAgICBoaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoaSwgaGludCwgc3RhdHVzKVxuICAgICAgICAgKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCB2aWV3ID0gKHN5bnRheF9yZXBvcnQ6IHQpID0+IHtcbiAgICBDZWxsLnBhbmVsKFxuICAgICAgfmNsYXNzZXM9W1widGVzdC1wYW5lbFwiXSxcbiAgICAgIFtcbiAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgIFwiU3ludGF4IFZhbGlkYXRpb25cIixcbiAgICAgICAgICB+cmVzdD1cbiAgICAgICAgICAgIFwiOiBEb2VzIHlvdXIgaW1wbGVtZW50YXRpb24gc2F0aXNmeSB0aGUgc3ludGFjdGljIHJlcXVpcmVtZW50cz9cIixcbiAgICAgICAgKSxcbiAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKHN5bnRheF9yZXBvcnQuaGludGVkX3Jlc3VsdHMpLFxuICAgICAgXSxcbiAgICAgIH5mb290ZXI9XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlX3ZpZXcoc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlKSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgICAgICAgICBcIiBvZiB0aGUgSW1wbGVtZW50YXRpb24gVmFsaWRhdGlvbiBwb2ludHMgd2lsbCBiZSBlYXJuZWRcIixcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgb3BlbiBIYXozbGNvcmU7XG4gIGluY2x1ZGUgSW1wbEdyYWRpbmdSZXBvcnQ7XG4gIGxldCB0ZXh0dWFsX3N1bW1hcnkgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHNcIildXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dCh0ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgLy8gbGV0IHN1bW1hcnkgPSAofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpID0+IHtcbiAgLy8gICBsZXQgcGVyY2VudGFnZSA9IHBlcmNlbnRhZ2UocmVwb3J0KTtcbiAgLy8gICBsZXQgc2NvcmUgPSBzY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UpO1xuICAvLyAgIGxldCB0b3RhbCA9IHRvdGFsKHJlcG9ydCk7XG4gIC8vICAgbGV0IG51bV9wYXNzZWQgPSBudW1fcGFzc2VkKHJlcG9ydCk7XG4gIC8vICAgbGV0IHN0YXR1c19jbGFzcyA9IHRvdGFsID09IG51bV9wYXNzZWQgPyBcIlBhc3NcIiA6IFwiRmFpbFwiO1xuICAvLyAgIGRpdihcbiAgLy8gICAgIH5hdHRyPVxuICAvLyAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAvLyAgICAgICAgIFwiY2VsbC1pdGVtXCIsXG4gIC8vICAgICAgICAgXCJ0ZXN0LXN1bW1hcnlcIixcbiAgLy8gICAgICAgICBcImNlbGwtcmVwb3J0XCIsXG4gIC8vICAgICAgICAgc3RhdHVzX2NsYXNzLFxuICAvLyAgICAgICBdKSxcbiAgLy8gICAgIFtcbiAgLy8gICAgICAgc3VtbWFyeV9tZXNzYWdlKFxuICAvLyAgICAgICAgIH5zY29yZSxcbiAgLy8gICAgICAgICB+dG90YWwsXG4gIC8vICAgICAgICAgfmZvdW5kPW51bV9wYXNzZWQsXG4gIC8vICAgICAgICksXG4gIC8vICAgICAgIGJhcih+aW5qZWN0LCByZXBvcnQucmVzdWx0cyksXG4gIC8vICAgICBdLFxuICAvLyAgICk7XG4gIC8vIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0ID0gKGksIH5pbmplY3QsIH5oaW50OiBzdHJpbmcsIH5zdGF0dXMsIChpZCwgXykpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVwb3J0XCJdKSxcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5UZXN0cywgaWQpKSxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1pZFwiLFxuICAgICAgICAgICAgICBcIlRlc3RcIiArKyBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgLyogTk9URTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCB1bmlxdWUgaWQgKi9cbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGkgKyAxKSldLFxuICAgICAgICApLFxuICAgICAgICAvLyBUZXN0Vmlldy50ZXN0X2luc3RhbmNlX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdGFuY2UpLFxuICAgICAgXVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1oaW50XCIsXG4gICAgICAgICAgICAgIFwidGVzdC1pbnN0YW5jZVwiLFxuICAgICAgICAgICAgICBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgW3RleHQoaGludCldLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICApO1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydHMgPSAofmluamVjdCwgfnJlcG9ydCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBMaXN0Lmxlbmd0aCh0ZXN0X3Jlc3VsdHMudGVzdF9tYXApXG4gICAgICAgICAgPT0gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKSA9PlxuICAgICAgLyogTk9URTogVGhpcyBjb25kaXRpb24gd2lsbCBiZSBmYWxzZSB3aGVuIGV2YWx1YXRpb24gY3Jhc2hlcyxcbiAgICAgICAqIGZvciBleGFtcGxlIGR1ZSB0byBhIHN0YWNrIG92ZXJmbG93LCB3aGljaCBtYXkgb2NjdXIgaW4gbm9ybWFsIG9wZXJhdGlvbiAgKi9cbiAgICAgIGRpdihcbiAgICAgICAgcmVwb3J0LmhpbnRlZF9yZXN1bHRzXG4gICAgICAgIHw+IExpc3QubWFwaSgoaSwgKHN0YXR1cywgaGludCkpID0+XG4gICAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoXG4gICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgIH5oaW50LFxuICAgICAgICAgICAgICAgfnN0YXR1cyxcbiAgICAgICAgICAgICAgIExpc3QubnRoKHRlc3RfcmVzdWx0cy50ZXN0X21hcCwgaSksXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICApLFxuICAgICAgKVxuICAgIHwgXyA9PiBkaXYoW10pXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmlldyA9XG4gICAgICAofmluamVjdCwgfnJlcG9ydDogdCwgfnN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LCB+bWF4X3BvaW50czogaW50KSA9PiB7XG4gICAgQ2VsbC5wYW5lbChcbiAgICAgIH5jbGFzc2VzPVtcImNlbGwtaXRlbVwiLCBcInBhbmVsXCIsIFwidGVzdC1wYW5lbFwiXSxcbiAgICAgIFtcbiAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgIFwiSW1wbGVtZW50YXRpb24gR3JhZGluZ1wiLFxuICAgICAgICAgIH5yZXN0PVwiOiBIaWRkZW4gVGVzdHMgdnMuIFlvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgKSxcbiAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKH5pbmplY3QsIH5yZXBvcnQpLFxuICAgICAgXSxcbiAgICAgIH5mb290ZXI9XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzY29yZV92aWV3KFxuICAgICAgICAgICAgICAgICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlKHJlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhfcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIHRleHR1YWxfc3VtbWFyeShyZXBvcnQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgQCBPcHRpb24udG9fbGlzdChcbiAgICAgICAgICAgICAgICAgIHJlcG9ydC50ZXN0X3Jlc3VsdHNcbiAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAodGVzdF9yZXN1bHRzID0+XG4gICAgICAgICAgICAgICAgICAgICAgIFRlc3RWaWV3LnRlc3RfYmFyKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHMsIEhpZGRlblRlc3RzKVxuICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gIGluY2x1ZGUgR3JhZGluZ1JlcG9ydDtcblxuICBsZXQgdmlld19vdmVyYWxsX3Njb3JlID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHNjb3JlX3ZpZXcob3ZlcmFsbF9zY29yZShyZXBvcnQpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcblxudHlwZSBtb2RlbCA9IEV4ZXJjaXNlLnN0aXRjaGVkKENlbGxFZGl0b3IubW9kZWwpO1xuXG50eXBlIHZpc19tYXJrZWQoJ2EpID1cbiAgfCBJbnN0cnVjdG9yT25seSh1bml0ID0+ICdhKVxuICB8IEFsd2F5cygnYSk7XG5cbmxldCByZW5kZXJfY2VsbHMgPSAoc2V0dGluZ3M6IFNldHRpbmdzLnQsIHY6IGxpc3QodmlzX21hcmtlZChOb2RlLnQpKSkgPT4ge1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgdmlzID0+XG4gICAgICBzd2l0Y2ggKHZpcykge1xuICAgICAgfCBJbnN0cnVjdG9yT25seShmKSA9PiBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPyBTb21lKGYoKSkgOiBOb25lXG4gICAgICB8IEFsd2F5cyhub2RlKSA9PiBTb21lKG5vZGUpXG4gICAgICB9LFxuICAgIHYsXG4gICk7XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfnNlbGVjdCxcbiAgICAgIH5pbmplY3RfZ2xvYmFsLFxuICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZWxlY3Rpb246IG9wdGlvbigoRXhlcmNpc2UucG9zLCBFZGl0b3JzLlNlbGVjdGlvbi5jZWxsKSksXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+ZXhlcmNpc2UsXG4gICAgICB+cmVzdWx0cyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICkgPT4ge1xuICBsZXQgRXhlcmNpc2Uue2Vkc30gPSBleGVyY2lzZTtcbiAgbGV0IHN0aXRjaGVkX2R5bmFtaWNzID1cbiAgICBFeGVyY2lzZS5zdGl0Y2hfZHluYW1pYyhcbiAgICAgIHNldHRpbmdzLmNvcmUsXG4gICAgICBleGVyY2lzZSxcbiAgICAgIHNldHRpbmdzLmNvcmUuZHluYW1pY3MgPyBTb21lKHJlc3VsdHMpIDogTm9uZSxcbiAgICApO1xuICBsZXQge1xuICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICB1c2VyX2ltcGwsXG4gICAgdXNlcl90ZXN0cyxcbiAgICBwcmVsdWRlLFxuICAgIGluc3RydWN0b3IsXG4gICAgaGlkZGVuX2J1Z3MsXG4gICAgaGlkZGVuX3Rlc3RzOiBfLFxuICB9OlxuICAgIEV4ZXJjaXNlLnN0aXRjaGVkKEV4ZXJjaXNlLkR5bmFtaWNzSXRlbS50KSA9IHN0aXRjaGVkX2R5bmFtaWNzO1xuXG4gIGxldCBncmFkaW5nX3JlcG9ydCA9IEdyYWRpbmcuR3JhZGluZ1JlcG9ydC5tayhlZHMsIH5zdGl0Y2hlZF9keW5hbWljcyk7XG5cbiAgbGV0IHNjb3JlX3ZpZXcgPSBHcmFkaW5nLkdyYWRpbmdSZXBvcnQudmlld19vdmVyYWxsX3Njb3JlKGdyYWRpbmdfcmVwb3J0KTtcblxuICBsZXQgZWRpdG9yX3ZpZXcgPVxuICAgICAgKFxuICAgICAgICB+ZWRpdG9yOiBFZGl0b3IudCxcbiAgICAgICAgfmNhcHRpb246IHN0cmluZyxcbiAgICAgICAgfnN1YmNhcHRpb246IG9wdGlvbihzdHJpbmcpPT8sXG4gICAgICAgIH5kaTogRXhlcmNpc2UuRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIH5yZXN1bHRfa2luZD1DZWxsUmVzdWx0LlZpZXcuTm9SZXN1bHRzLFxuICAgICAgICB0aGlzX3BvczogRXhlcmNpc2UucG9zLFxuICAgICAgKSA9PiB7XG4gICAgQ2VsbEVkaXRvci52aWV3KFxuICAgICAgfnNlbGVjdD1zID0+IHNlbGVjdCgodGhpc19wb3MsIHMpKSxcbiAgICAgIH5zZWxlY3RlZD1cbiAgICAgICAgc3dpdGNoIChzZWxlY3Rpb24pIHtcbiAgICAgICAgfCBTb21lKChwb3MsIHMpKSB3aGVuIHBvcyA9PSB0aGlzX3BvcyA9PiBTb21lKHMpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH0sXG4gICAgICB+aW5qZWN0PVxuICAgICAgICBmdW5cbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckVkaXRvckFjdGlvbihfLCBhKSlcbiAgICAgICAgfCBNYWluRWRpdG9yKGEpID0+IGluamVjdF9nbG9iYWwoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oYSkpXG4gICAgICAgIHwgUmVzdWx0QWN0aW9uKFN0ZXBwZXJBY3Rpb24oYSkpID0+XG4gICAgICAgICAgaW5qZWN0X2dsb2JhbChcbiAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5TdGVwcGVyQWN0aW9uKFxuICAgICAgICAgICAgICBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3ModGhpc19wb3MpLFxuICAgICAgICAgICAgICBhLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgIHwgUmVzdWx0QWN0aW9uKFRvZ2dsZVN0ZXBwZXIpID0+XG4gICAgICAgICAgaW5qZWN0X2dsb2JhbChcbiAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5Ub2dnbGVTdGVwcGVyKEV4ZXJjaXNlLmtleV9mb3Jfc3RhdGljcyh0aGlzX3BvcykpLFxuICAgICAgICAgICksXG4gICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgIH51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgfnJlc3VsdF9raW5kLFxuICAgICAgfmNhcHRpb249Q2VsbC5jYXB0aW9uKGNhcHRpb24sIH5yZXN0PT9zdWJjYXB0aW9uKSxcbiAgICAgIHtcbiAgICAgICAgZWRpdG9yOiB7XG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIHN0YXRpY3M6IHtcbiAgICAgICAgICAgIHRlcm06IGRpLnRlcm0sXG4gICAgICAgICAgICBpbmZvX21hcDogZGkuaW5mb19tYXAsXG4gICAgICAgICAgICBlcnJvcl9pZHM6XG4gICAgICAgICAgICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhcbiAgICAgICAgICAgICAgICBlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcyxcbiAgICAgICAgICAgICAgICBkaS5pbmZvX21hcCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHQ6IGRpLnJlc3VsdCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgdGl0bGVfdmlldyA9IENlbGwudGl0bGVfY2VsbChlZHMudGl0bGUpO1xuXG4gIGxldCBwcm9tcHRfdmlldyA9XG4gICAgQ2VsbC5uYXJyYXRpdmVfY2VsbChcbiAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGwtcHJvbXB0XCIpLCBbZWRzLnByb21wdF0pLFxuICAgICk7XG5cbiAgbGV0IHByZWx1ZGVfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFByZWx1ZGUsXG4gICAgICAgIH5jYXB0aW9uPVwiUHJlbHVkZVwiLFxuICAgICAgICB+c3ViY2FwdGlvbj1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPyBcIlwiIDogXCIgKFJlYWQtT25seSlcIixcbiAgICAgICAgfmVkaXRvcj1lZHMucHJlbHVkZSxcbiAgICAgICAgfmRpPXByZWx1ZGUsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IGNvcnJlY3RfaW1wbF92aWV3ID1cbiAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICgpID0+XG4gICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgIENvcnJlY3RJbXBsLFxuICAgICAgICAgIH5jYXB0aW9uPVwiQ29ycmVjdCBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICAgIH5lZGl0b3I9ZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgICAgICB+ZGk9aW5zdHJ1Y3RvcixcbiAgICAgICAgKSxcbiAgICApO1xuXG4gIC8vIGRldGVybWluZSB0cmFpbGluZyBob2xlXG4gIC8vIFRPRE86IG1vZHVsZVxuICBsZXQgY29ycmVjdF9pbXBsX2N0eF92aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICB7XG4gICAgICAgIGxldCBleHBfY3R4X3ZpZXcgPSB7XG4gICAgICAgICAgbGV0IGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCA9XG4gICAgICAgICAgICBIYXozbGNvcmUuRWRpdG9yLnRyYWlsaW5nX2hvbGVfY3R4KFxuICAgICAgICAgICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgICAgICAgICBpbnN0cnVjdG9yLmluZm9fbWFwLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCA9XG4gICAgICAgICAgICBIYXozbGNvcmUuRWRpdG9yLnRyYWlsaW5nX2hvbGVfY3R4KGVkcy5wcmVsdWRlLCBwcmVsdWRlLmluZm9fbWFwKTtcbiAgICAgICAgICBzd2l0Y2ggKGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCwgcHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCkge1xuICAgICAgICAgIHwgKE5vbmUsIF8pID0+IE5vZGUuZGl2KFt0ZXh0KFwiTm8gY29udGV4dCBhdmFpbGFibGUgKDEpXCIpXSlcbiAgICAgICAgICB8IChfLCBOb25lKSA9PiBOb2RlLmRpdihbdGV4dChcIk5vIGNvbnRleHQgYXZhaWxhYmxlICgyKVwiKV0pIC8vIFRPRE8gc2hvdyBleGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yXG4gICAgICAgICAgfCAoXG4gICAgICAgICAgICAgIFNvbWUoY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4KSxcbiAgICAgICAgICAgICAgU29tZShwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4KSxcbiAgICAgICAgICAgICkgPT5cbiAgICAgICAgICAgIGxldCBzcGVjaWZpY19jdHggPVxuICAgICAgICAgICAgICBIYXozbGNvcmUuQ3R4LnN1YnRyYWN0X3ByZWZpeChcbiAgICAgICAgICAgICAgICBjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgsXG4gICAgICAgICAgICAgICAgcHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc3BlY2lmaWNfY3R4KSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gTm9kZS5kaXYoW3RleHQoXCJObyBjb250ZXh0IGF2YWlsYWJsZVwiKV0pIC8vIFRPRE8gc2hvdyBleGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yXG4gICAgICAgICAgICB8IFNvbWUoc3BlY2lmaWNfY3R4KSA9PlxuICAgICAgICAgICAgICBDdHhJbnNwZWN0b3IuY3R4X3ZpZXcofmluamVjdD1pbmplY3RfZ2xvYmFsLCBzcGVjaWZpY19jdHgpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIENlbGwuc2ltcGxlX2NlbGxfdmlldyhbXG4gICAgICAgICAgQ2VsbC5zaW1wbGVfY2VsbF9pdGVtKFtcbiAgICAgICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICAgICAgXCJDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgICAgICAgIH5yZXN0PVwiIChUeXBlIFNpZ25hdHVyZXMgT25seSlcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBleHBfY3R4X3ZpZXcsXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pO1xuICAgICAgfSxcbiAgICApO1xuXG4gIGxldCB5b3VyX3Rlc3RzX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VyVGVzdHNWYWxpZGF0aW9uLFxuICAgICAgICB+Y2FwdGlvbj1cIlRlc3QgVmFsaWRhdGlvblwiLFxuICAgICAgICB+c3ViY2FwdGlvbj1cIjogWW91ciBUZXN0cyB2cy4gQ29ycmVjdCBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgICB+ZGk9dGVzdF92YWxpZGF0aW9uLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9VGVzdFJlc3VsdHMsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IHdyb25nX2ltcGxfdmlld3MgPVxuICAgIExpc3QubWFwaShcbiAgICAgIChpLCAoRXhlcmNpc2Uue2ltcGwsIF99LCBkaSkpID0+IHtcbiAgICAgICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgICAgICBIaWRkZW5CdWdzKGkpLFxuICAgICAgICAgICAgICB+Y2FwdGlvbj1cIldyb25nIEltcGxlbWVudGF0aW9uIFwiICsrIHN0cmluZ19vZl9pbnQoaSArIDEpLFxuICAgICAgICAgICAgICB+ZWRpdG9yPWltcGwsXG4gICAgICAgICAgICAgIH5kaSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBMaXN0LmNvbWJpbmUoZWRzLmhpZGRlbl9idWdzLCBoaWRkZW5fYnVncyksXG4gICAgKTtcblxuICBsZXQgbXV0YXRpb25fdGVzdGluZ192aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBHcmFkaW5nLk11dGF0aW9uVGVzdGluZ1JlcG9ydC52aWV3KFxuICAgICAgICB+aW5qZWN0PWluamVjdF9nbG9iYWwsXG4gICAgICAgIGdyYWRpbmdfcmVwb3J0Lm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0LFxuICAgICAgICBncmFkaW5nX3JlcG9ydC5wb2ludF9kaXN0cmlidXRpb24ubXV0YXRpb25fdGVzdGluZyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgeW91cl9pbXBsX3ZpZXcgPSB7XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFlvdXJJbXBsLFxuICAgICAgICB+Y2FwdGlvbj1cIllvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgfmVkaXRvcj1lZHMueW91cl9pbXBsLFxuICAgICAgICB+ZGk9dXNlcl9pbXBsLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9RXZhbFJlc3VsdHMsXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHN5bnRheF9ncmFkaW5nX3ZpZXcgPVxuICAgIEFsd2F5cyhHcmFkaW5nLlN5bnRheFJlcG9ydC52aWV3KGdyYWRpbmdfcmVwb3J0LnN5bnRheF9yZXBvcnQpKTtcblxuICBsZXQgaW1wbF92YWxpZGF0aW9uX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VyVGVzdHNUZXN0aW5nLFxuICAgICAgICB+Y2FwdGlvbj1cIkltcGxlbWVudGF0aW9uIFZhbGlkYXRpb25cIixcbiAgICAgICAgfnN1YmNhcHRpb249XG4gICAgICAgICAgXCI6IFlvdXIgVGVzdHMgKGNvZGUgc3luY2hyb25pemVkIHdpdGggVGVzdCBWYWxpZGF0aW9uIGNlbGwgYWJvdmUpIHZzLiBZb3VyIEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICAgIH5kaT11c2VyX3Rlc3RzLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9VGVzdFJlc3VsdHMsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IGhpZGRlbl90ZXN0c192aWV3ID1cbiAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICgpID0+XG4gICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgIEhpZGRlblRlc3RzLFxuICAgICAgICAgIH5jYXB0aW9uPVwiSGlkZGVuIFRlc3RzXCIsXG4gICAgICAgICAgfmVkaXRvcj1lZHMuaGlkZGVuX3Rlc3RzLnRlc3RzLFxuICAgICAgICAgIH5kaT1pbnN0cnVjdG9yLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgbGV0IGltcGxfZ3JhZGluZ192aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBHcmFkaW5nLkltcGxHcmFkaW5nUmVwb3J0LnZpZXcoXG4gICAgICAgIH5pbmplY3Q9aW5qZWN0X2dsb2JhbCxcbiAgICAgICAgfnJlcG9ydD1ncmFkaW5nX3JlcG9ydC5pbXBsX2dyYWRpbmdfcmVwb3J0LFxuICAgICAgICB+c3ludGF4X3JlcG9ydD1ncmFkaW5nX3JlcG9ydC5zeW50YXhfcmVwb3J0LFxuICAgICAgICB+bWF4X3BvaW50cz1ncmFkaW5nX3JlcG9ydC5wb2ludF9kaXN0cmlidXRpb24uaW1wbF9ncmFkaW5nLFxuICAgICAgKSxcbiAgICApO1xuXG4gIFtzY29yZV92aWV3LCB0aXRsZV92aWV3LCBwcm9tcHRfdmlld11cbiAgQCByZW5kZXJfY2VsbHMoXG4gICAgICBzZXR0aW5ncyxcbiAgICAgIFtcbiAgICAgICAgcHJlbHVkZV92aWV3LFxuICAgICAgICBjb3JyZWN0X2ltcGxfdmlldyxcbiAgICAgICAgY29ycmVjdF9pbXBsX2N0eF92aWV3LFxuICAgICAgICB5b3VyX3Rlc3RzX3ZpZXcsXG4gICAgICBdXG4gICAgICBAIHdyb25nX2ltcGxfdmlld3NcbiAgICAgIEAgW1xuICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3ZpZXcsXG4gICAgICAgIHlvdXJfaW1wbF92aWV3LFxuICAgICAgICBzeW50YXhfZ3JhZGluZ192aWV3LFxuICAgICAgICBpbXBsX3ZhbGlkYXRpb25fdmlldyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzX3ZpZXcsXG4gICAgICAgIGltcGxfZ3JhZGluZ192aWV3LFxuICAgICAgXSxcbiAgICApO1xufTtcblxubGV0IHJlc2V0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy50cmFzaCxcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCB0aGlzIGV4ZXJjaXNlPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlIHRoYXQgeW91IGhhdmUgd3JpdHRlbiwgYW5kIGNvdXJzZSBzdGFmZiBoYXZlIG5vIHdheSB0byByZXN0b3JlIGl0IVwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlJlc2V0Q3VycmVudEVkaXRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgICB9O1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJSZXNldCBFeGVyY2lzZVwiLFxuICApO1xuXG5sZXQgaW5zdHJ1Y3Rvcl9leHBvcnQgPSAoZXhlcmNpc2U6IEV4ZXJjaXNlLnN0YXRlKSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgLy8gLm1sIGZpbGVzIGJlY2F1c2Ugc2hvdyB1c2VzIE9DYW1sIHN5bnRheCAoZHVuZSBoYW5kbGVzIHNlYW1sZXNzbHkpXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWU7XG4gICAgICBsZXQgZmlsZW5hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWUgKysgXCIubWxcIjtcbiAgICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvcGxhaW5cIjtcbiAgICAgIGxldCBjb250ZW50cyA9IEV4ZXJjaXNlLmV4cG9ydF9tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBFeGVyY2lzZSBNb2R1bGVcIixcbiAgKTtcblxubGV0IGluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvcnQgPSAoZXhlcmNpc2U6IEV4ZXJjaXNlLnN0YXRlKSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgLy8gLm1sIGZpbGVzIGJlY2F1c2Ugc2hvdyB1c2VzIE9DYW1sIHN5bnRheCAoZHVuZSBoYW5kbGVzIHNlYW1sZXNzbHkpXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWU7XG4gICAgICBsZXQgZmlsZW5hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWUgKysgXCIubWxcIjtcbiAgICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvcGxhaW5cIjtcbiAgICAgIGxldCBjb250ZW50cyA9XG4gICAgICAgIEV4ZXJjaXNlLmV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZShtb2R1bGVfbmFtZSwgZXhlcmNpc2UpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX3N0cmluZ19maWxlKH5maWxlbmFtZSwgfmNvbnRlbnRfdHlwZSwgfmNvbnRlbnRzKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IFRyYW5zaXRpb25hcnkgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBpbnN0cnVjdG9yX2dyYWRpbmdfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiX2dyYWRpbmcubWxcIjtcbiAgICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvcGxhaW5cIjtcbiAgICAgIGxldCBjb250ZW50cyA9IEV4ZXJjaXNlLmV4cG9ydF9ncmFkaW5nX21vZHVsZShtb2R1bGVfbmFtZSwgZXhlcmNpc2UpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX3N0cmluZ19maWxlKH5maWxlbmFtZSwgfmNvbnRlbnRfdHlwZSwgfmNvbnRlbnRzKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IEdyYWRpbmcgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBkb3dubG9hZF9lZGl0b3Jfc3RhdGUgPSAofmluc3RydWN0b3JfbW9kZSkgPT5cbiAgTG9nLmdldF9hbmQobG9nID0+IHtcbiAgICBsZXQgZGF0YSA9IEV4cG9ydC5leHBvcnRfYWxsKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpO1xuICAgIEpzVXRpbC5kb3dubG9hZF9qc29uKEV4ZXJjaXNlU2V0dGluZ3MuZmlsZW5hbWUsIGRhdGEpO1xuICB9KTtcblxubGV0IGV4cG9ydF9zdWJtaXNzaW9uID0gKH5zZXR0aW5nczogU2V0dGluZ3MudCkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIGRvd25sb2FkX2VkaXRvcl9zdGF0ZSh+aW5zdHJ1Y3Rvcl9tb2RlPXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBTdWJtaXNzaW9uXCIsXG4gICk7XG5cbmxldCBpbXBvcnRfc3VibWlzc2lvbiA9ICh+aW5qZWN0KSA9PlxuICBXaWRnZXRzLmZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZChcbiAgICBcImltcG9ydC1zdWJtaXNzaW9uXCIsXG4gICAgSWNvbnMuc3RhcixcbiAgICBmaWxlID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsZSkge1xuICAgICAgfCBOb25lID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZVxuICAgICAgfCBTb21lKGZpbGUpID0+IGluamVjdChVcGRhdGVBY3Rpb24uSW5pdEltcG9ydEFsbChmaWxlKSlcbiAgICAgIH1cbiAgICB9LFxuICAgIH50b29sdGlwPVwiSW1wb3J0IFN1Ym1pc3Npb25cIixcbiAgKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBmaWx0ZXJfcGF1c2UgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyUGF1c2UsXG4gIGZvcm1faWQ6IEZpbHRlclBhdXNlLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19wYXVzZShbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiUGF1c2UgZmlsdGVyIGZvciBzdGVwcGVyLiBUaGUgZXZhbHVhdGlvbiBvZiBhbGwgc3ViZXhwcmVzc2lvbnMgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBiZSBwYXVzZWQgZHVyaW5nIGV2YWx1YXRpb25cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlclN0ZXAsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiZXZhbCAkZSArICRlIGluXFxuKDEgKyAyKSAqICgzICsgNClcIiksXG4gICAgICBtZXNzYWdlOiBcIlRoZSBleHByZXNzaW9uICgxICogMikgKyAoMyAqIDQpIGlzIGd1YXJkZWQgYnkgYSBwYXVzZSBmaWx0ZXIgZXhwcmVzc2lvbiBwYXVzZSAkdiArICR2LCB3aGljaCBpbnN0cnVjdCB0aGUgZXZhbHVhdG9yIHRvIHBhdXNlIHRoZSBldmFsdWF0aW9uIHdoZW4gaXQgc2VlcyBhIHZhbHVlIGlzIGFkZGVkIHRvIGFub3RoZXIgdmFsdWUuIEFmdGVyIGV2YWx1YXRpbmcgc3VidGVybXMgKDEgKiAyKSBhbmQgKDMgKiA0KSwgdGhlIGV4cHJlc3Npb24gdHVybnMgaW50byAyICsgMTIuIDIgbWF0Y2hlcyB0aGUgZmlyc3QgJHYgcGF0dGVybiwgYW5kIDEyIG1hdGNoZXMgdGhlIHNlY29uZCAkdiBwYXR0ZXJuLiBUaGVyZWZvcmUsIHRoZSBldmFsdWF0b3Igc3RvcHMgd2hlbiB0aGUgZXhwcmVzc2lvbiBzdGVwcyB0byAyICsgMTJcIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IGZpbHRlcl9ldmFsID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlckV2YWwsXG4gIGZvcm1faWQ6IEZpbHRlckV2YWwsXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcF9pZCksIChcImVfYm9keVwiLCBib2R5X2lkKSwgKHAnLCBlX2JvZHknKSA9PlxuICAgICAgW21rX2V2YWwoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIkZ1bGwgZXZhbHVhdGlvbiBmaWx0ZXIgZm9yIHN0ZXBwZXIuIEFsbCBzdWJleHByZXNzaW9ucyB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGdldCBldmFsdWF0ZWQgaW4gb25lIGdvXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJFdmFsLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcInBhdXNlICRlIGluXFxuaGlkZSBsZXQgPSBpbiBpblxcbmxldCB4ID0gMSBpblxcbmxldCB5ID0gMiBpblxcbnggKyB5XCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiBcInBhdXNlICRlIGluIGluc3RydWN0IHRoZSBldmFsdWF0b3IgdG8gYWN0IGxpa2UgYSBzaW5nbGUtc3RlcHBlciwgZS5nLiBzdG9wIGF0IGV2ZXJ5IHN0ZXAuIFRoZSBoaWRlIGZpbHRlciBleHByZXNzaW9uIGluc3RydWN0cyB0aGUgZXZhbHVhdG9yIHRvIHNraXAgb3ZlciBhbGwgZXZhbHVhdG9yIHN0ZXBzIHRoYXQgZGVzdHJ1Y3RzIHBlcmZvcm0gc3Vic3RpdHV0aW9uIG9uIGEgbGV0LWV4cHJlc3Npb24uIEhlcmUsIHRoZSBzdWJzdGl0dXRpb24gb2YgdmFyaWFibGUgeCBhbmQgeSBpcyBza2lwcGVkIG92ZXIgYW5kIHdlIGRpcmVjdGx5IGdvdCAxICsgMiBpbiB0aGUgcmVzdWx0IGFyZWEuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfaGlkZSA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJIaWRlLFxuICBmb3JtX2lkOiBGaWx0ZXJIaWRlLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19oaWRlKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJTdGVwIGhpZGluZyBmaWx0ZXIgZm9yIHN0ZXBwZXIuIFRoZSBlbGltaW5hdGlvbiBvZiBhbGwgbGFuZ3VhZ2UgY29uc3RydWN0cyAobGlrZSBiaW5hcnkgb3BlcmF0b3IgKyBvciBsZXQgLi4gPSAuLiBpbikgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBnZXQgc2tpcHBlZC5cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlckhpZGUsXG4gICAgICB0ZXJtOlxuICAgICAgICBta19leGFtcGxlKFxuICAgICAgICAgIFwicGF1c2UgJGUgaW5cXG5oaWRlIGxldCA9IGluIGluXFxubGV0IHggPSAxIGluXFxubGV0IHkgPSAyIGluXFxueCArIHlcIixcbiAgICAgICAgKSxcbiAgICAgIG1lc3NhZ2U6IFwicGF1c2UgJGUgaW4gaW5zdHJ1Y3QgdGhlIGV2YWx1YXRvciB0byBhY3QgbGlrZSBhIHNpbmdsZS1zdGVwcGVyLCBlLmcuIHN0b3AgYXQgZXZlcnkgc3RlcC4gVGhlIGhpZGUgZmlsdGVyIGV4cHJlc3Npb24gaW5zdHJ1Y3RzIHRoZSBldmFsdWF0b3IgdG8gc2tpcCBvdmVyIGFsbCBldmFsdWF0b3Igc3RlcHMgdGhhdCBkZXN0cnVjdHMgcGVyZm9ybSBzdWJzdGl0dXRpb24gb24gYSBsZXQtZXhwcmVzc2lvbi4gSGVyZSwgdGhlIHN1YnN0aXR1dGlvbiBvZiB2YXJpYWJsZSB4IGFuZCB5IGlzIHNraXBwZWQgb3ZlciBhbmQgd2UgZGlyZWN0bHkgZ290IDEgKyAyIGluIHRoZSByZXN1bHQgYXJlYS5cIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IGZpbHRlcl9kZWJ1ZyA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJEZWJ1ZyxcbiAgZm9ybV9pZDogRmlsdGVyRGVidWcsXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcF9pZCksIChcImVfYm9keVwiLCBib2R5X2lkKSwgKHAnLCBlX2JvZHknKSA9PlxuICAgICAgW21rX2RlYnVnKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJEZWJ1ZyBmaWx0ZXIgZm9yIHN0ZXBwZXIuIEFsbCBtYXRjaGVkIHN1Yi1leHByZXNzaW9uIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgYmUgc3RlcHBlZCB0aHJvdWdoLlwiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVyRGVidWcsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiZXZhbCAkZSBpblxcbmRlYnVnICR2ICsgJHYgKyAkdiBpblxcbjEgKyAyICsgM1wiKSxcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIGRlYnVnIGZpbHRlciBwYXR0ZXJuICR2ICsgJHYgKyAkdiBtYXRjaGVzIDEgKyAyICsgMywgdGhlcmVmb3JlLCB0aGUgZXZhbHVhdG9yIHdpbGwgc3RlcCBpbnRvIHRoZSBldmFsdWF0aW9uIG9mIHRoZSBtYXRjaGVkIHN1Yi1leHByZXNzaW9uIDEgKyAyICsgMy5cIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IHVucXVvdGUgPSAofnNlbF9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlclNlbGVjdG9yLFxuICBmb3JtX2lkOiBGaWx0ZXJTZWxlY3RvcixcbiAgYWJzdHJhY3Q6IFNpbXBsZS5ta18xKChcInNlbFwiLCBzZWxfaWQpLCBzZWwnID0+IFtta191bnF1b3RlKFtdKSwgc2VsJ10pLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiU2VsZWN0b3IgZXhwcmVzc2lvbiBmb3IgYSBzdGVwcGVyIGZpbHRlciBwYXR0ZXJuLiBXaGVuIFsqc2VsKl0oJXMpIGlzICdlJywgaXQgbWF0Y2hlcyBhbnkgZXhwcmVzc2lvbiwgd2hlbiBbKnNlbCpdKCVzKSBpcyAndicgaXQgb25seSBtYXRjaGVzIHZhbHVlcy5cIixcbiAgICAgIHNlbF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBzZWxfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXSxcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG4vKiAoQSkgVXNlIHRoaXMgZmlsZSBhcyBhbiBleGFtcGxlIGZvciBhZGRpbmcgYSBuZXcgZm9ybSB0byBFeHBsYWluVGhpcy5cbiAqIFlvdSBzaG91bGQgYmUgYWJsZSB0byBjb3B5LXBhc3RlIHRoaXMgZmlsZSBhbmQgbW9kaWZ5IGl0IHRvIGFkZCBhIG5ldyBmb3JtICovXG5cbmxldCBzaW5nbGUgPSAofnBhdF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIC8qIChCKSBZb3UnbGwgbmVlZCB0byBhZGQgbmV3IGNhc2VzIHRvIEV4cGxhaW5UaGlzRm9ybS5yZSBmb3IgdGhlIG5ldyBmb3JtXG4gICAqIHRvIHJlcHJlc2VudCBhIGdyb3VwX2lkIGFuZCBmb3JtX2lkLiBUaGlzIFNpbXBsZSBzdHlsZSBpcyBzcGVjaWFsaXplZFxuICAgKiB0byBzaW5nbGV0b24gZ3JvdXBzLiBJbiBnZW5lcmFsLCB0aGUgZ3JvdXBfaWQgbmVlZHMgdG8gYmUgdW5pcXVlLCBhbmRcbiAgICogZm9ybV9pZHMgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEgZ3JvdXAuIFRoZXNlIGlkcyBhcmUgdXNlZCB0byB0cmFja1xuICAgKiBFeHBsYWluVGhpcyBwZXJzaXN0ZW50IHN0YXRlLiAqL1xuICBncm91cF9pZDogRml4RXhwKEJhc2UpLFxuICBmb3JtX2lkOiBGaXhFeHAoQmFzZSksXG4gIC8qIChDKSBUaGUgYWJzdHJhY3QgZmllbGQgZGVmaW5lcyBhbiBhYnN0cmFjdCBleGFtcGxlIGlsbHVzdHJhdGluZyB0aGVcbiAgICogbmV3IGZvcm0uIFlvdSdsbCBuZWVkIHRvIHByb3ZpZGUgcGFpcnMgYXNzb2NpYXRpbmcgYW55IHJlcHJlc2VudGF0aXZlXG4gICAqIHN1YnRlcm1zIG9mIHRoZSBleGVtcGxhciAoZS5nLiBcImVfYXJnXCIgYW5kIFwiZV9mdW5cIiBiZWxvdykgd2l0aCB0aGVcbiAgICogY29uY3JldGUgc3VidGVybXMgb2YgdGhlIHRlcm0gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIChoZXJlLCBhcmdfaWRcbiAgICogYW5kIGZuX2lkKS4gWW91J2xsIHRoZW4gbmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIHNlZ21lbnRcbiAgICogcmVwcmVzZW50aW5nIHlvdXIgYWJzdHJhY3QuIFRoaXMgaXMgZG9uZSBpbiB0aGlzIGluZGlyZWN0IHdheSBzb1xuICAgKiBhcyB0byBhc3NvY2lhdGUgcmVwcmVzZW50YXRpdmUgYW5kIGNvbmNyZXRlIHN1YnRlcm1zIGlkcyBmb3JcbiAgICogc3ludGF4IGhpZ2hsaWdodGluZyBwdXJwb3Nlcy4gKi9cbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwYXRfaWQpLCAoXCJlXCIsIGJvZHlfaWQpLCAocCwgZSkgPT5cbiAgICAgIFtta19maXgoW1tzcGFjZSgpLCBwLCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBlXVxuICAgICksXG4gIC8qIChEKSBUaGUgZXhwbGFuYXRpb24gd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIHNpZGViYXIgYmVsb3cgdGhlIGFic3RyYWN0ICovXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJSZWN1cnNpdmVseSByZXBsYWNlcyBhbGwgb2NjdXJlbmNlcyBvZiB0aGUgWypwYXR0ZXJuKl0oJXMpIGluc2lkZSB0aGUgWypib2R5Kl0oJXMpIHdpdGggdGhlIGVudGlyZSBbKmJvZHkqXSglcykgaXRzZWxmLCBlZmZlY3RpdmVseSBjcmVhdGluZyBhbiBpbmZpbml0ZSBleHByZXNzaW9uLiBVbmxlc3MgWypwYXR0ZXJuKl0oJXMpIGlzIGEgZnVuY3Rpb24sIGl0IGlzIGxpa2VseSB0byBldmFsdWF0ZSBmb3JldmVyLlwiLFxuICAgICAgcGF0X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwYXRfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIC8qIChFKSBBZGRpdGlvbmFsIG1vcmUgY29uY3JldGUgZXhhbXBsZXMgYW5kIGFzc29jaWF0ZWQgZXhwbGFuYXRpb25zICovXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaXgxLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImZpeCB4IC0+IHggKyAxXCIpLFxuICAgICAgbWVzc2FnZToge3xcbiAgICAgICAgICAgICAgVHJpZXMgdG8gY3JlYXRlIHRoZSBpbmZpbml0ZSBleHByZXNzaW9uICgoKC4uLikgKyAxKSArIDEpICsgMSBidXQgdGltZXMgb3V0XG4gICAgICAgICAgICAgIHx9LFxuICAgIH0sXG4gICAge1xuICAgICAgc3ViX2lkOiBGaXgyLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcIihmaXggZiAtPiBmdW4geCAtPiBcXG5pZiB4ID09IDAgdGhlbiBcXG4wIFxcbmVsc2UgXFxuZih4LTEpICsgMlxcbikgKDUpXCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiB7fFxuICAgICAgICAgICAgIEEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQgZG91YmxlcyBhIGdpdmVuIG51bWJlci5cbiAgICAgICAgICAgICAgfH0sXG4gICAgfSxcbiAgXSxcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3RwYXQgPSB0cGF0KFwidF92YXJcIik7XG5sZXQgX3R5cF9hcmcgPSB0eXAoXCJ0eV9hcmdcIik7XG5sZXQgZm9yYWxsX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+dHBhdF9pZDogSWQudCwgfnRib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90cGF0KSwgdHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIHRib2R5X2lkKSxcbl07XG5sZXQgZm9yYWxsX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGZvcmFsbCB0eXBlIGNsYXNzaWZpZXMgcG9seW1vcnBoaWMgdmFsdWVzIHZhcnlpbmcgb3ZlciBbKnR5cGUgdmFyaWFibGUqXSglcykgd2l0aCBbKmluc3RhbnRpYXRlZCB0eXBlKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IEZvcmFsbFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW21rX2ZvcmFsbChbW3NwYWNlKCksIF90cGF0LCBzcGFjZSgpXV0pLCBfdHlwX2FyZ10sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3RwYXQpLCBbX3R5cF9hcmddKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZvcmFsbDogZ3JvdXAgPSB7aWQ6IEZvcmFsbFR5cCwgZm9ybXM6IFtmb3JhbGxfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgYmFzaWNfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihCYXNpYyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4geCAtPiB4XCIpLFxuICBtZXNzYWdlOiBcIlRoZSBpZGVudGl0eSBmdW5jdGlvbi4gV2hlbiBnaXZlbiBhbiBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGF0IGFyZ3VtZW50LlwiLFxufTtcbmxldCB3aWxkX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oV2lsZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gXyAtPiAzXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMy5cIixcbn07XG5sZXQgaW50bGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oSW50TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAxIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIDEsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgZmxvYXRsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihGbG9hdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gMS4xIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIDEuMSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBib29sbGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQm9vbExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gdHJ1ZSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSB0cnVlLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IHN0cmxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFN0ckxpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gXFxcImFiY1xcXCIgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgXFxcImFiY1xcXCIsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgdHJpdl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFRyaXYpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuICgpIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHRoZSAoKSB2YWx1ZSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsaXN0bmlsX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oTGlzdE5pbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gW10gLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdGhlIGVtcHR5IGxpc3QgdmFsdWUsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGlzdGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKExpc3RMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFt4LCB5XSAtPiB4XCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgdGhhdCBpcyBhIGxpc3Qgb2YgdHdvIGVsZW1lbnRzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoYXQgbGlzdC5cIixcbn07XG5sZXQgY29uc19oZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKENvbnNIZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gaGQ6OnRsIC0+IGhkXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgdGhhdCBpcyBhIG5vbi1lbXB0eSBsaXN0LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBoZWFkIG9mIHRoYXQgbGlzdC5cIixcbn07XG5sZXQgY29uc19zbmRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDb25zU25kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBmc3Q6OnNuZDo6dGwgLT4gc25kXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgdGhhdCBpcyBhIGxpc3Qgd2l0aCBhdCBsZWFzdCB0d28gZWxlbWVudHMsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoYXQgbGlzdC5cIixcbn07XG5sZXQgdmFyX2luY3JfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihWYXJJbmNyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biB4IC0+IHggKyAxXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gaW50ZWdlciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgYXJndW1lbnQgcGx1cyAxLlwiLFxufTtcbmxldCB2YXJfYW5kX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVmFyQW5kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBiIC0+IGIgJiYgdHJ1ZVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgYm9vbGVhbiBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgbG9naWNhbC1hbmQgb2YgdGhlIGFyZ3VtZW50IGFuZCB0cnVlLCB3aGljaCBldmFsdWF0ZXMgdG8gdGhlIHRydXRoIHZhbHVlIG9mIHRoZSBhcmd1bWVudC5cIixcbn07XG5sZXQgdHVwbGUyX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVHVwbGUyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoeCwgeSkgLT4geCArIHlcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIDItdHVwbGUgb2YgaW50ZWdlcnMsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIHN1bSBvZiB0aGUgdHdvIGludGVnZXJzLlwiLFxufTtcbmxldCB0dXBsZTNfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihUdXBsZTMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIChhLCBiLCBjKSAtPlxcbmEgJiYgYiAmJiBjXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSAzLXR1cGxlIG9mIGJvb2xlYW5zLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBsb2dpY2FsLWFuZCBvZiB0aGUgdGhyZWUgYm9vbGVhbnMuXCIsXG59O1xubGV0IGN0cl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEN0ciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gTm9uZSAtPiAxXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSBOb25lIGNvbnN0cnVjdG9yIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIDEuXCIsXG59O1xubGV0IGFwX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQXApLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFNvbWUoYSkgLT4gYVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgU29tZSBjb25zdHJ1Y3RvciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgY29uc3RydWN0b3IncyBhcmd1bWVudC5cIixcbn07XG4vLyBUT0RPIGZvciBzaGFyZWQgZXhhbXBsZXMsIHNob3VsZCB0aGUgZmVlZGJhY2sgYmUgc3RvcmVkIHNlcGFyYXRlbHkgZm9yIGVhY2ggXCJpbnN0YW5jZVwiP1xubGV0IF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfcGF0X2lkOiBJZC50LCBzZl9ib2R5X2lkOiBJZC50LCB+cGF0X2lkOiBJZC50LCB+Ym9keV9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfcGF0X2lkLCBwYXRfaWQpLCAoc2ZfYm9keV9pZCwgYm9keV9pZCldO1xufTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQmFzZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJwXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4XSAvLyBUT0RPIFdoYXQgb3RoZXIgZXhhbXBsZXMgc2hvdWxkIGJlIGhlcmVcbiAgfTtcbn07XG5cbmxldCBfcGF0ID0gUGllY2UuR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSk7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLCBhZnRlciB0aGUgW2VtcHR5IGhvbGUgcGF0dGVybl0oJXMpIGlzIGZpbGxlZC5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoRW1wdHlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJTlZBTElEXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fbXVsdGlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKSwgYWZ0ZXIgdGhlIFtpbnZhbGlkIGFyZ3VtZW50IHBhdHRlcm5dKCVzKSBpcyBjb3JyZWN0ZWQuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKE11bHRpSG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJTlZBTElEXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzID0gKH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhQaWVjZS5pZChfZXhwKSwgYm9keV9pZCldO1xufTtcbmxldCBmdW5jdGlvbl93aWxkX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgdGhhdCBpcyBpZ25vcmVkLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IF9wYXQgPSBwYXQoXCJfXCIpO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChXaWxkKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIl9cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt3aWxkX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJbnRMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25faW50bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2ludGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVzYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEludCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJbnRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkZsb2F0TGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2Zsb2F0bGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJWZgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgLy8gVE9ETyBwcmludCBvdXQgdGhlIGZsb2F0IGxpdGVyYWwgbmljZXJcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoRmxvYXQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiRmxvYXRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdGxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQm9vbExpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2Jvb2xsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlYmAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChCb29sKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkJvb2xMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtib29sbGl0X2Z1bl9leF0sXG4gIH07XG59O1xuXG5sZXQgX3BhdCA9IHBhdChcIlN0cmluZ0xpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fc3RybGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJXNgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcblxuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChTdHJpbmcpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiU3RyaW5nTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbc3RybGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCIoKVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90cml2X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3RyaXZfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIHRoZSB0cml2aWFsIHZhbHVlIGAoKWAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLiBUaGlzIGlmIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGEgemVybyBhcmd1bWVudCBmdW5jdGlvbi5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHJpdiksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCIoKVwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3RyaXZfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIltdXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fbGlzdG5pbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgdGhlIGVtcHR5IGxpc3QgYFtdYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKExpc3ROaWwpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiW11cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsaXN0bmlsX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXV0pO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fbGlzdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBhcmUgbGlzdHMgd2l0aCAlcy1lbGVtZW50cywgZWFjaCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4uIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0TGl0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgICAgICBbbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV1dKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xpc3RuaWxfZnVuX2V4LCBsaXN0bGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfaGQgPSBwYXQoXCJwX2hkXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2NvbnNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdF9oZCksIGhkX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl9jb25zX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSBub24tZW1wdHkgbGlzdHMgdGhhdCBtYXRjaCB0aGUgWypoZWFkIHBhdHRlcm4qXSglcykgYW5kIFsqdGFpbCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbnMgPSBjb25zX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBfcGF0X2hkLCBjb25zLCBfcGF0X3RsLCBzcGFjZSgpXV0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0Q29ucyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbnMpLCBbcGF0KFwicF9oZFwiKSwgY29uc19wYXQoKSwgcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbnNfaGRfZnVuX2V4LCBjb25zX3NuZF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwieFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fdmFyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggaXMgYm91bmQgdG8gdGhlIFsqdmFyaWFibGUqXSglcykgYCVzYCwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFZhciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJ4XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4LCB2YXJfaW5jcl9mdW5fZXgsIHZhcl9hbmRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX2NvbW1hID0gY29tbWFfcGF0KCk7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9jb21tYSksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl90dXBsZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBhcmUgJXMtdHVwbGVzIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IGVsZW1lbnQgcGF0dGVybi4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbW3NwYWNlKCksIHBhdChcInAxXCIpLCBfY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV1dKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHVwbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTJfZnVuX2V4LCB0dXBsZTNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl90dXBsZTJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIDItdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpIGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbW3NwYWNlKCksIF9wYXQxLCBjb21tYSwgc3BhY2UoKSwgX3BhdDIsIHNwYWNlKCldXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMiksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTJfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9wYXQzID0gcGF0KFwicDNcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0MV9pZDogSWQudCwgfnBhdDJfaWQ6IElkLnQsIH5wYXQzX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdDMpLCBwYXQzX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl90dXBsZTNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIDMtdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCBhbmQgdGhlIHRoaXJkIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWyp0aGlyZCBlbGVtZW50IHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDEsXG4gICAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MixcbiAgICAgICAgY29tbWEsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQzLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgXSxcbiAgICBdKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHVwbGUzKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlM19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQ1wiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fY3RyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyB0aGUgKmAlc2AgY29uc3RydWN0b3IqLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQ3RyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkNcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjdHJfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdF9jb24gPSBwYXQoXCJwX2NvblwiKTtcbmxldCBfcGF0X2FyZyA9IHBhdChcInBfYXJnXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2FwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+Y29uX2lkOiBJZC50LCB+YXJnX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAgIChQaWVjZS5pZChfcGF0X2FyZyksIGFyZ19pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fYXBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdoZXJlIHRoZSAqY29uc3RydWN0b3IgYXJndW1lbnQqIG1hdGNoZXMgdGhlIFsqY29uc3RydWN0b3IgYXJndW1lbnQgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBhcCA9IG1rX2FwX3BhdChbW19wYXRfYXJnXV0pO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0X2NvbiwgYXAsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEFwKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoYXApLCBbcGF0KFwicF9jb25cIiksIG1rX2FwX3BhdChbW3BhdChcInBfYXJnXCIpXV0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYXBfZnVuX2V4XSxcbiAgfTtcbn07XG5cbmxldCBmdW5jdGlvbnM6IGdyb3VwID0ge2lkOiBGdW5jdGlvbkV4cChCYXNlKSwgZm9ybXM6IFtmdW5jdGlvbl9leHBdfTtcbmxldCBmdW5jdGlvbnNfZW1wdHlfaG9sZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEVtcHR5SG9sZSksXG4gIGZvcm1zOiBbZnVuY3Rpb25fZW1wdHlfaG9sZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19tdWx0aV9ob2xlID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTXVsdGlIb2xlKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX3dpbGQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChXaWxkKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl93aWxkX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX2ludCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEludCksXG4gIGZvcm1zOiBbZnVuY3Rpb25faW50bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX2Zsb2F0ID0ge1xuICBpZDogRnVuY3Rpb25FeHAoRmxvYXQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2Zsb2F0bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX2Jvb2wgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChCb29sKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9ib29sbGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfc3RyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoU3RyaW5nKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9zdHJsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190cml2ID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHJpdiksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHJpdl9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2xpc3RuaWwgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChMaXN0TmlsKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9saXN0bmlsX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfbGlzdGxpdCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RMaXQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2xpc3RsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19jb25zID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTGlzdENvbnMpLFxuICBmb3JtczogW2Z1bmN0aW9uX2NvbnNfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc192YXIgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChWYXIpLFxuICBmb3JtczogW2Z1bmN0aW9uX3Zhcl9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHVwbGUpLFxuICBmb3JtczogW2Z1bmN0aW9uX3R1cGxlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHVwbGUyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHVwbGUyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90dXBsZTJfZXhwLCBmdW5jdGlvbl90dXBsZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlMyA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMyksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHVwbGUzX2V4cCwgZnVuY3Rpb25fdHVwbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19jdHIgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChDdHIpLFxuICBmb3JtczogW2Z1bmN0aW9uX2N0cl9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2FwID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQXApLFxuICBmb3JtczogW2Z1bmN0aW9uX2FwX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgZW1wdHlfaG9sZV90ZW1wbGF0ZSA9IChfc29ydCwgc3RyLCBpZCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJUaGlzIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAlcyB0byBjb21wbGV0ZSB0aGUgcHJvZ3JhbS5cIixcbiAgICAgIHN0cixcbiAgICApO1xuICB7XG4gICAgaWQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbXVsdGlfaG9sZV90ZW1wbGF0ZSA9IChzb3J0LCBpZCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgaXMgYW4gaW52YWxpZCB0ZXJtLlwiO1xuICB7XG4gICAgaWQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtzb3J0KFwiSU5WQUxJRFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBlbXB0eV9ob2xlX2V4cDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5lbXB0eV9ob2xlX3RlbXBsYXRlKGV4cCwgXCJhbiBleHByZXNzaW9uXCIsIEVtcHR5SG9sZUV4cCk7XG5sZXQgZW1wdHlfaG9sZV9leHBzID0ge2lkOiBFbXB0eUhvbGVFeHAsIGZvcm1zOiBbZW1wdHlfaG9sZV9leHBdfTtcblxubGV0IG11bHRpX2hvbGVfZXhwOiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLm11bHRpX2hvbGVfdGVtcGxhdGUoZXhwLCBNdWx0aUhvbGVFeHApO1xuXG5sZXQgbXVsdGlfaG9sZV9leHBzID0ge2lkOiBNdWx0aUhvbGVFeHAsIGZvcm1zOiBbbXVsdGlfaG9sZV9leHBdfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBIYXozbGNvcmU7XG5sZXQgZW1wdHlfaG9sZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiRXhwcmVzc2lvbnMgYXJlIG5vdCBtYXRjaGVkIGFnYWluc3QgdGhlICplbXB0eSBob2xlIHBhdHRlcm4qIHVudGlsIGl0IGlzIGZpbGxlZC5cIjtcbiAge1xuICAgIGlkOiBFbXB0eUhvbGVQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbXVsdGlfaG9sZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiRXhwcmVzc2lvbnMgYXJlIG5vdCBtYXRjaGVkIGFnYWluc3QgdGhlIGludmFsaWQgcGF0dGVybiB1bnRpbCBpdCBpcyBjb3JyZWN0ZWQuXCI7XG4gIHtcbiAgICBpZDogTXVsdGlIb2xlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiSW52YWxpZFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZW1wdHlfaG9sZTogZ3JvdXAgPSB7aWQ6IEVtcHR5SG9sZVBhdCwgZm9ybXM6IFtlbXB0eV9ob2xlX3BhdF19O1xuXG5sZXQgbXVsdGlfaG9sZTogZ3JvdXAgPSB7aWQ6IE11bHRpSG9sZVBhdCwgZm9ybXM6IFttdWx0aV9ob2xlX3BhdF19O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBlbXB0eV9ob2xlX3RwYXQ6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUuZW1wdHlfaG9sZV90ZW1wbGF0ZSh0cGF0LCBcImEgdHlwZSBwYXR0ZXJuXCIsIEVtcHR5SG9sZVRQYXQpO1xubGV0IGVtcHR5X2hvbGVfdHBhdHMgPSB7aWQ6IEVtcHR5SG9sZVRQYXQsIGZvcm1zOiBbZW1wdHlfaG9sZV90cGF0XX07XG5cbmxldCBtdWx0aV9ob2xlX3RwYXQ6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUubXVsdGlfaG9sZV90ZW1wbGF0ZSh0cGF0LCBNdWx0aUhvbGVUUGF0KTtcblxubGV0IG11bHRpX2hvbGVfdHBhdHMgPSB7aWQ6IE11bHRpSG9sZVRQYXQsIGZvcm1zOiBbbXVsdGlfaG9sZV90cGF0XX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgZW1wdHlfaG9sZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBtYXJrcyBhIHR5cGUgdGhhdCBuZWVkcyB0byBiZSBmaWxsZWQgaW4uXCI7XG4gIHtcbiAgICBpZDogRW1wdHlIb2xlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxuLy8gVE9ETyBEaWQgZ2V0IGEgY2FzZSB3aGVyZSBpbiB0eXBlIHBvc2l0aW9uIGhhZCBzcGFjZSBiZXR3ZWVuIHR3byB2YXJpYWJsZXMgd2hlcmUgZ290IGludG8gd2VpcmQgc3RhdGVcbmxldCBtdWx0aV9ob2xlX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGlzIGFuIGludmFsaWQgdHlwZS5cIjtcbiAge1xuICAgIGlkOiBNdWx0aUhvbGVUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJJbnZhbGlkXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBlbXB0eV9ob2xlOiBncm91cCA9IHtpZDogRW1wdHlIb2xlVHlwLCBmb3JtczogW2VtcHR5X2hvbGVfdHlwXX07XG5cbmxldCBtdWx0aV9ob2xlOiBncm91cCA9IHtpZDogTXVsdGlIb2xlVHlwLCBmb3JtczogW211bHRpX2hvbGVfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgaWZfYmFzaWMxX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBJZlRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJpZiAodHJ1ZSkgdGhlbiAxIGVsc2UgMlwiKSxcbiAgbWVzc2FnZTogXCJTaW5jZSB0aGUgY29uZGl0aW9uIGlzIHRydWUsIHRoZSBpZiBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0aGUgdGhlbiBicmFuY2gsIDEuXCIsXG59O1xubGV0IGlmX2Jhc2ljMl9leHBfZXggPSB7XG4gIHN1Yl9pZDogSWZGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImlmICgyIDwgMSkgdGhlbiAzIGVsc2UgNFwiKSxcbiAgbWVzc2FnZTogXCJTaW5jZSB0aGUgY29uZGl0aW9uIGlzIDIgPCAxIGlzIGZhbHNlLCB0aGUgaWYgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIGVsc2UgYnJhbmNoLCA0LlwiLFxufTtcbmxldCBfZXhwX2NvbmQgPSBleHAoXCJlX2NvbmRcIik7XG5sZXQgX2V4cF90aGVuID0gZXhwKFwiZV90aGVuXCIpO1xubGV0IF9leHBfZWxzZSA9IGV4cChcImVfZWxzZVwiKTtcbmxldCBpZl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbmRfaWQ6IElkLnQsIH50aGVuX2lkOiBJZC50LCB+ZWxzZV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2NvbmQpLCBjb25kX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfdGhlbiksIHRoZW5faWQpLFxuICAoUGllY2UuaWQoX2V4cF9lbHNlKSwgZWxzZV9pZCksXG5dO1xubGV0IGlmX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypjb25kaXRpb24qXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgZXZhbHVhdGUgdGhlIFsqdGhlbiBicmFuY2gqXSglcykuIE90aGVyd2lzZSwgZXZhbHVhdGUgdGhlIFsqZWxzZSBicmFuY2gqXSglcykuXCI7XG4gIHtcbiAgICBpZDogSWZFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIG1rX2lmKFtcbiAgICAgICAgW3NwYWNlKCksIF9leHBfY29uZCwgbGluZWJyZWFrKCldLFxuICAgICAgICBbc3BhY2UoKSwgX2V4cF90aGVuLCBsaW5lYnJlYWsoKV0sXG4gICAgICBdKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfZXhwX2Vsc2UsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaWZfYmFzaWMxX2V4cF9leCwgaWZfYmFzaWMyX2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgaWZzOiBncm91cCA9IHtpZDogSWZFeHAsIGZvcm1zOiBbaWZfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGV0X2Jhc2VfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEJhc2ljKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCB4ID0gMSBpbiBcXG54XCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxXCIsXG59O1xubGV0IGxldF93aWxkX2V4ID0ge1xuICBzdWJfaWQ6IExldChXaWxkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBfID0gMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2ludF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoSW50TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAxID0gMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2Zsb2F0X2V4ID0ge1xuICBzdWJfaWQ6IExldChGbG9hdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgMS4xID0gMS4xIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIDEuMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9ib29sX2V4ID0ge1xuICBzdWJfaWQ6IExldChCb29sTGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCB0cnVlID0gdHJ1ZSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0cnVlIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X3N0cl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoU3RyTGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBcXFwiYWJjXFxcIiA9IFxcXCJhYmNcXFwiIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHRydWUgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfdHJpdl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoVHJpdiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgKCkgPSAoKSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAoKSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9saXN0bGl0X2V4ID0ge1xuICBzdWJfaWQ6IExldChMaXN0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBbeCwgeV0gPSBbMSwgMl0gaW4gXFxueFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxIGFuZCB0aGUgeSBpcyBib3VuZCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG5sZXQgbGV0X2xpc3RuaWxfZXggPSB7XG4gIHN1Yl9pZDogTGV0KExpc3ROaWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IFtdID0gW10gaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgZW1wdHkgbGlzdCBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9jb25zX2hkX2V4ID0ge1xuICBzdWJfaWQ6IExldChDb25zSGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IGhkOjp0bCA9IDE6OltdIGluIFxcbmhkXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBoZCBpcyBib3VuZCB0byAxIGFuZCB0aGUgdGwgaXMgYm91bmQgdG8gdGhlIGVtcHR5IGxpc3QsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxLlwiLFxufTtcbmxldCBsZXRfY29uc19zbmRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KENvbnNTbmQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IGZzdDo6c25kOjp0bCA9IHRydWU6OmZhbHNlOjpbXSBpbiBcXG5zbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGZzdCBpcyBib3VuZCB0byB0cnVlLCB0aGUgc25kIGlzIGJvdW5kIHRvIGZhbHNlLCBhbmQgdGhlIHRsIGlzIGJvdW5kIHRvIHRoZSBlbXB0eSBsaXN0LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGxldF92YXJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFZhciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgeCA9IDEgaW4gXFxueCArIDJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyLCB3aGljaCBpcyAzLlwiLFxufTtcbmxldCBsZXRfdHVwbGUyX2V4ID0ge1xuICBzdWJfaWQ6IExldChUdXBsZTIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICh4LCB5KSA9ICgxLCAyKSBpbiBcXG54ICsgeVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxIGFuZCB0aGUgeSBpcyBib3VuZCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMSArIDIsIHdoaWNoIGlzIDMuXCIsXG59O1xubGV0IGxldF90dXBsZTNfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFR1cGxlMyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgKHgsIHksIHopID0gKDEsIDIsIDMpXFxuaW4geCArIHkgKyB6XCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHRoZSB5IGlzIGJvdW5kIHRvIDIsIGFuZCB0aGUgeiBpcyBib3VuZCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMSArIDIgKyAzLCB3aGljaCBpcyA2LlwiLFxufTtcbmxldCBsZXRfY3RyX2V4ID0ge1xuICBzdWJfaWQ6IExldChDdHIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBUID0gTm9uZSArIFNvbWUoSW50KVxcbiBpbiBsZXQgTm9uZSA9IE5vbmVcXG5pbiAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBOb25lIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2FwX2V4ID0ge1xuICBzdWJfaWQ6IExldChBcCksXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG4gaW4gbGV0IFNvbWUoYSkgPSBTb21lKDIpXFxuaW4gYVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgYSBpcyBib3VuZCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKFxuICAgICAgc2ZfcGF0X2lkOiBJZC50LFxuICAgICAgc2ZfZGVmX2lkOiBJZC50LFxuICAgICAgc2ZfYm9keV9pZDogSWQudCxcbiAgICAgIH5wYXRfaWQ6IElkLnQsXG4gICAgICB+ZGVmX2lkOiBJZC50LFxuICAgICAgfmJvZHlfaWQ6IElkLnQsXG4gICAgKVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9wYXRfaWQsIHBhdF9pZCksIChzZl9kZWZfaWQsIGRlZl9pZCksIChzZl9ib2R5X2lkLCBib2R5X2lkKV07XG59O1xubGV0IF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfcGF0X2lkOiBJZC50LCBzZl9kZWZfaWQ6IElkLnQsIH5wYXRfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX3BhdF9pZCwgcGF0X2lkKSwgKHNmX2RlZl9pZCwgZGVmX2lkKV07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJwXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9iYXNlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQmFzZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJwXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jhc2VfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gUGllY2UuR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSk7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X2VtcHR5X2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFmdGVyIHRoZSBbKmVtcHR5IGhvbGUgcGF0dGVybipdKCVzKSBpcyBmaWxsZWQsIHRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBbKnBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChFbXB0eUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfcGF0KSwgW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jhc2VfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSU5WQUxJRFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfbXVsdGlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQWZ0ZXIgdGhlIFtpbnZhbGlkIHBhdHRlcm5dKCVzKSBpcyBjb3JyZWN0ZWQsIHRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBbKnBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChNdWx0aUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSU5WQUxJRFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3dpbGRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5kZWZfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfYm9keSksIGJvZHlfaWQpLFxuXTtcbmxldCBsZXRfd2lsZF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBldmFsdWF0ZWQgYW5kIGlnbm9yZWQuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgcGF0XyA9IHBhdChcIl9cIik7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIHBhdF8sIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChXaWxkKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChwYXRfKSwgW3BhdChcIl9cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfd2lsZF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJbnRMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2ludF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfaW50X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJXNgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEludCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJbnRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfaW50X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkZsb2F0TGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9mbG9hdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfZmxvYXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlZmAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoRmxvYXQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiRmxvYXRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfZmxvYXRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQm9vbExpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfYm9vbF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfYm9vbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCViYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChCb29sKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkJvb2xMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYm9vbF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJTdHJpbmdMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3N0cl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfc3RyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJXNgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFN0cmluZyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJTdHJpbmdMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfc3RyX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIigpXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF90cml2X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF90cml2X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyB0aGUgdHJpdmlhbCB2YWx1ZSBgKClgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFRyaXYpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiKClcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHJpdl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXV0pO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9saXN0bGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIGFyZSBsaXN0cyB3aXRoICVzLWVsZW1lbnRzLCB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4uXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChMaXN0TGl0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9saXN0bGl0X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIltdXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9saXN0bmlsX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyB0aGUgZW1wdHkgbGlzdCBgW11gLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKExpc3ROaWwpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiW11cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfbGlzdG5pbF9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfaGQgPSBwYXQoXCJwX2hkXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlICpwYXR0ZXJuKiBhcmUgbm9uLWVtcHR5IGxpc3RzIHRoYXQgbWF0Y2ggdGhlIFsqaGVhZCpdKCVzKSBhbmQgWyp0YWlsKl0oJXMpIHBhdHRlcm5zLlwiO1xuICBsZXQgY29ucyA9IGNvbnNfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdF9oZCwgY29ucywgX3BhdF90bCwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTGlzdENvbnMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb25zKSwgW3BhdChcInBfaGRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfY29uc19oZF9leCwgbGV0X2NvbnNfc25kX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInhcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfdmFyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIGJvdW5kIHRvIHRoZSBbKnZhcmlhYmxlKl0oJXMpIGAlc2AgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFZhciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJ4XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3Zhcl9leF0sXG4gICAgLy8gVE9ETyBEb2VzIHRoaXMgZXhhbXBsZSBiZWluZyBzbGlnaHRseSBkaWZmZXJlbnQgYWN0dWFsbHkgYWRkIGFueXRoaW5nP1xuICB9O1xufTtcbmxldCBfY29tbWEgPSBjb21tYV9wYXQoKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF90dXBsZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2NvbW1hKSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgYXJlICVzLXR1cGxlcyB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4uXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgcGF0KFwicDFcIiksIF9jb21tYSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9jb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90dXBsZTJfZXgsIGxldF90dXBsZTNfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0MV9pZDogSWQudCwgfnBhdDJfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF90dXBsZTJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIDItdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpIGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtzcGFjZSgpLCBfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZTIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3R1cGxlMl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X3R1cGxlM19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+cGF0M19pZDogSWQudCwgfmRlZl9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIHBhdDFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQzKSwgcGF0M19pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF90dXBsZTNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIDMtdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCBhbmQgdGhlIHRoaXJkIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWyp0aGlyZCBlbGVtZW50IHBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW1xuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MSxcbiAgICAgICAgY29tbWFfcGF0KCksXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQyLFxuICAgICAgICBjb21tYSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDMsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICBdLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFR1cGxlMyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHVwbGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkNcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2N0cl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfY3RyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyB0aGUgKmAlc2AgY29uc3RydWN0b3IqLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEN0ciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJDXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2N0cl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9hcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbl9pZDogSWQudCwgfmFyZ19pZDogSWQudCwgfmRlZl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2NvbiksIGNvbl9pZCksXG4gIChQaWVjZS5pZChfcGF0X2FyZyksIGFyZ19pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF9hcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlICpwYXR0ZXJuKiBhcmUgdGhlIFsqY29uc3RydWN0b3IqXSglcykgd2hlcmUgdGhlICphcmd1bWVudCogbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgYXAgPSBta19hcF9wYXQoW1tfcGF0X2FyZ11dKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtzcGFjZSgpLCBfcGF0X2NvbiwgYXAsIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEFwKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoYXApLCBbcGF0KFwicF9jb25cIiksIG1rX2FwX3BhdChbW3BhdChcInBfYXJnXCIpXV0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2FwX2V4XSxcbiAgfTtcbn07XG5cbmxldCBsZXRzX2VtcHR5aG9sZTogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoRW1wdHlIb2xlKSxcbiAgZm9ybXM6IFtsZXRfZW1wdHlfaG9sZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19tdXRsaWhvbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKE11bHRpSG9sZSksXG4gIGZvcm1zOiBbbGV0X211bHRpX2hvbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfd2lsZDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoV2lsZCksXG4gIGZvcm1zOiBbbGV0X3dpbGRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfaW50OiBncm91cCA9IHtpZDogTGV0RXhwKEludCksIGZvcm1zOiBbbGV0X2ludF9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c19mbG9hdDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoRmxvYXQpLFxuICBmb3JtczogW2xldF9mbG9hdF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19ib29sOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChCb29sKSxcbiAgZm9ybXM6IFtsZXRfYm9vbF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19zdHI6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFN0cmluZyksXG4gIGZvcm1zOiBbbGV0X3N0cl9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c190cml2OiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUcml2KSxcbiAgZm9ybXM6IFtsZXRfdHJpdl9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19saXN0bGl0OiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChMaXN0TGl0KSxcbiAgZm9ybXM6IFtsZXRfbGlzdGxpdF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19saXN0bmlsOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChMaXN0TmlsKSxcbiAgZm9ybXM6IFtsZXRfbGlzdG5pbF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19jb25zOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChMaXN0Q29ucyksXG4gIGZvcm1zOiBbbGV0X2NvbnNfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdmFyOiBncm91cCA9IHtpZDogTGV0RXhwKFZhciksIGZvcm1zOiBbbGV0X3Zhcl9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c190dXBsZTogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHVwbGUpLFxuICBmb3JtczogW2xldF90dXBsZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c190dXBsZTI6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlMiksXG4gIGZvcm1zOiBbbGV0X3R1cGxlMl9leHAsIGxldF90dXBsZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c190dXBsZTM6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlMyksXG4gIGZvcm1zOiBbbGV0X3R1cGxlM19leHAsIGxldF90dXBsZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19jdHI6IGdyb3VwID0ge2lkOiBMZXRFeHAoQ3RyKSwgZm9ybXM6IFtsZXRfY3RyX2V4cCwgbGV0X2Jhc2VfZXhwXX07XG5cbmxldCBsZXRzX2FwOiBncm91cCA9IHtpZDogTGV0RXhwKEFwKSwgZm9ybXM6IFtsZXRfYXBfZXhwLCBsZXRfYmFzZV9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBsaXN0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGludF9saXN0ID0ge1xuICAgIHN1Yl9pZDogTGlzdChJbnQpLFxuICAgIHRlcm06IG1rX2V4YW1wbGUoXCJbMSwgMl1cIiksXG4gICAgbWVzc2FnZTogXCJBIGxpc3Qgd2l0aCB0d28gZWxlbWVudHMsIDEgYW5kIDIuXCIsXG4gIH07XG4gIGxldCB0dXBsZV9saXN0ID0ge1xuICAgIHN1Yl9pZDogTGlzdChUdXBsZSksXG4gICAgdGVybTogbWtfZXhhbXBsZShcIlsoMSwgdHJ1ZSksICgyLCBmYWxzZSldXCIpLFxuICAgIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCBhIHR1cGxlIHdpdGggMSBhbmQgdHJ1ZSBhbmQgYSB0dXBsZSB3aXRoIDIgYW5kIGZhbHNlLlwiLFxuICB9O1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkxpc3QgbGl0ZXJhbCB3aXRoICVzIGVsZW1lbnQocykuXCI7XG4gIHtcbiAgICBpZDogTGlzdEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgbWtfbGlzdF9leHAoW1tleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIHNwYWNlKCksIGV4cChcIi4uLlwiKV1dKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbGlzdCwgdHVwbGVfbGlzdF0sXG4gIH07XG59O1xuXG5sZXQgY29uczFfZXggPSB7XG4gIHN1Yl9pZDogTGlzdChDb25zMSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxOjpbXVwiKSxcbiAgbWVzc2FnZTogXCJBIHNpbmdsZSBlbGVtZW50IGxpc3Qgb2YgMS5cIixcbn07XG5sZXQgY29uczJfZXggPSB7XG4gIHN1Yl9pZDogTGlzdChDb25zMiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0cnVlOjpmYWxzZTo6W11cIiksXG4gIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCB0cnVlIGFuZCBmYWxzZS5cIixcbn07XG5sZXQgX2V4cF9oZCA9IGV4cChcImVfaGRcIik7XG5sZXQgX2V4cF90bCA9IGV4cChcImVfdGxcIik7XG5sZXQgY29uc19leHBfY29sb3JpbmdfaWRzID0gKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfZXhwX3RsKSwgdGxfaWQpLFxuXTtcbmxldCBjb25zX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJDcmVhdGVzIGEgbGlzdCB3aXRoIFsqaGVhZCBlbGVtZW50Kl0oJXMpIGFuZCBbKnRhaWwgZWxlbWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBDb25zRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF9oZCwgY29uc19leHAoKSwgX2V4cF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbnMxX2V4LCBjb25zMl9leF0sXG4gIH07XG59O1xuXG5sZXQgX2V4cF94cyA9IGV4cChcInhzXCIpO1xubGV0IF9leHBfeXMgPSBleHAoXCJ5c1wiKTtcbmxldCBjb25jYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54c19pZDogSWQudCwgfnlzX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfeHMpLCB4c19pZCksXG4gIChQaWVjZS5pZChfZXhwX3lzKSwgeXNfaWQpLFxuXTtcbmxldCBsaXN0X2NvbmNhdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ3JlYXRlcyBhIGxpc3QgYnkgY29tYmluaW5nIHRoZSBbKmZpcnN0IG9wZXJhbmQqXSglcykgYW5kIHRoZSBbKnNlY29uZCBvcGVyYW5kKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RDb25jYXRFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX3hzLCBzcGFjZSgpLCBsaXN0X2NvbmNhdF9leHAoKSwgc3BhY2UoKSwgX2V4cF95c10sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdGxpdHM6IGdyb3VwID0ge2lkOiBMaXN0RXhwLCBmb3JtczogW2xpc3RfZXhwXX07XG5cbmxldCBsaXN0Y29uczogZ3JvdXAgPSB7aWQ6IENvbnNFeHAsIGZvcm1zOiBbY29uc19leHBdfTtcblxubGV0IGxpc3Rjb25jYXRzOiBncm91cCA9IHtpZDogTGlzdENvbmNhdEV4cCwgZm9ybXM6IFtsaXN0X2NvbmNhdF9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBsaXN0bGl0X3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIGxpc3RzIHdpdGggJXMtZWxlbWVudHMgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuIG1hdGNoIHRoaXMgKmxpc3QgbGl0ZXJhbCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBMaXN0TGl0UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXV0pLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IGxpc3RuaWxfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgZW1wdHkgbGlzdHMgYFtdYCBtYXRjaCB0aGUgKmVtcHR5IGxpc3QgYFtdYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBMaXN0TmlsUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiW11cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IF9wYXRfaGQgPSBwYXQoXCJwX2hkXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IGNvbnNfYmFzZV9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofmhkX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9oZCksIGhkX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG5dO1xubGV0IGNvbnNfYmFzZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBub24tZW1wdHkgbGlzdHMgd2l0aCAqaGVhZCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypoZWFkIGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgKnRhaWwqIGxpc3QgbWF0Y2hpbmcgdGhlIFsqdGFpbCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgbm9uLWVtcHR5IGxpc3QgcGF0dGVybi5cIjtcbiAge1xuICAgIGlkOiBDb25zUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9oZCwgY29uc19wYXQoKSwgX3BhdF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdF90bCksIFtwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3BhdF9mc3QgPSBwYXQoXCJwX2ZzdFwiKTtcbmxldCBfcGF0X3NuZCA9IHBhdChcInBfc25kXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IGNvbnMyX3BhdF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZnN0X2lkOiBJZC50LCB+c25kX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9mc3QpLCBmc3RfaWQpLFxuICAoUGllY2UuaWQoX3BhdF9zbmQpLCBzbmRfaWQpLFxuICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbl07XG5sZXQgY29uczJfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm9uLWVtcHR5IGxpc3RzIHdpdGggKmZpcnN0IGVsZW1lbnQqIG1hdGNoaW5nIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgKnNlY29uZCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCBhbmQgKnRhaWwqIGxpc3QgbWF0Y2hpbmcgdGhlIFsqdGFpbCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgbm9uLWVtcHR5IGxpc3QgcGF0dGVybi5cIjtcbiAgbGV0IGMgPSBjb25zX3BhdCgpO1xuICB7XG4gICAgaWQ6IENvbnMyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9mc3QsIGNvbnNfcGF0KCksIF9wYXRfc25kLCBjLCBfcGF0X3RsXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoYyksIFtwYXQoXCJwX3NuZFwiKSwgY29uc19wYXQoKSwgcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdGxpdDogZ3JvdXAgPSB7aWQ6IExpc3RMaXRQYXQsIGZvcm1zOiBbbGlzdGxpdF9wYXRdfTtcblxubGV0IGxpc3RuaWw6IGdyb3VwID0ge2lkOiBMaXN0TmlsUGF0LCBmb3JtczogW2xpc3RuaWxfcGF0XX07XG5cbmxldCBjb25zOiBncm91cCA9IHtpZDogQ29uc1BhdCwgZm9ybXM6IFtjb25zX2Jhc2VfcGF0XX07XG5cbmxldCBjb25zMjogZ3JvdXAgPSB7aWQ6IENvbnMyUGF0LCBmb3JtczogW2NvbnMyX3BhdCwgY29uc19iYXNlX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90eXBfZWxlbSA9IHR5cChcInR5X2VsZW1cIik7XG4vLyBUT0RPIFN5bnRhY3RpYyBmb3JtIGNvbG9yaW5nIGxvb2tzIG9mZiBmb3IgdGhpcyBvbmUgYW5kIG90aGVyIHR5cGVzIG9uZXMuLi5cbmxldCBsaXN0X3R5cF9jb2xvcmluZ19pZHMgPSAofmVsZW1faWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3R5cF9lbGVtKSwgZWxlbV9pZCksXG5dO1xubGV0IGxpc3RfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBsaXN0IHR5cGUgY2xhc3NpZmllcyBsaXN0cyB3aXRoIGVsZW1lbnRzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgWyplbGVtZW50IHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogTGlzdFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW21rX2xpc3RfdHlwKFtbX3R5cF9lbGVtXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBsaXN0OiBncm91cCA9IHtpZDogTGlzdFR5cCwgZm9ybXM6IFtsaXN0X3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGludF91bmFyeV9taW51c19leCA9IHtcbiAgc3ViX2lkOiBJbnRVbmFyeU1pbnVzLFxuICB0ZXJtOiBta19leGFtcGxlKFwiLTFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIDEgaXMgbmVnYXRlZC5cIixcbn07XG5sZXQgaW50X3BsdXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KFBsdXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSArIDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBhZGRlZCB0byAyIGV2YWx1dGVzIHRvIDMuXCIsXG59O1xubGV0IGludF9taW51c19leCA9IHtcbiAgc3ViX2lkOiBJbnQoTWludXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMiAtIDFcIiksXG4gIG1lc3NhZ2U6IFwiMiBtaW51cyAxIGV2YWx1dGVzIHRvIDEuXCIsXG59O1xubGV0IGludF90aW1lc19leCA9IHtcbiAgc3ViX2lkOiBJbnQoVGltZXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSAqIDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBtdWx0aXBsaWVkIGJlIDIgZXZhbHV0ZXMgdG8gMi5cIixcbn07XG5sZXQgaW50X3Bvd2VyX2V4ID0ge1xuICBzdWJfaWQ6IEludChQb3dlciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIyICoqIDRcIiksXG4gIG1lc3NhZ2U6IFwiMiByYWlzZWQgdG8gNCBldmFsdWF0ZXMgdG8gMTZcIixcbn07XG5sZXQgaW50X2RpdmlkZV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRGl2aWRlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjYgLyAzXCIpLFxuICBtZXNzYWdlOiBcIjYgZGl2aWRlZCBieSAzIGV2YWx1dGVzIHRvIDIuXCIsXG59O1xubGV0IGludF9sdDFfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxIDwgMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIGxlc3MgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfbHQyX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPCAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgbGVzcyBub3QgbGVzcyB0aGFuIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2x0ZTFfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRXF1YWxMZXNzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPD0gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIGxlc3MgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfbHRlMl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPD0gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGxlc3Mgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9sdGUzX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkVxdWFsRXF1YWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNSA8PSA1XCIpLFxuICBtZXNzYWdlOiBcIjUgaXMgZXF1YWwgdG8gNSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9ndDFfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA+IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBub3QgZ3JlYXRlciB0aGFuIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2d0Ml9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPiAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgZ3JlYXRlciB0aGFuIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3RlMV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPj0gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfZ3RlMl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5FcXVhbEdyZWF0ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNCA+PSAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgZ3JlYXRlciB0aGFuIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3RlM19leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUgPj0gNVwiKSxcbiAgbWVzc2FnZTogXCI1IGlzIGVxdWFsIHRvIDUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZXExX2V4ID0ge1xuICBzdWJfaWQ6IEludChFcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPT0gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGRvZXMgbm90IGVxdWFsIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2VxMl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRXF1YWxUcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjMgPT0gM1wiKSxcbiAgbWVzc2FnZTogXCIzIGlzIGVxdWFsIHRvIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9wbHVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KFBsdXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gKy4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuIGFkZGVkIHRvIDIuMSBldmFsdXRlcyB0byAzLjFcIixcbn07XG5sZXQgZmxvYXRfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTWludXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMi4gLS4gMS4xXCIpLFxuICBtZXNzYWdlOiBcIjIuIG1pbnVzIDEuMSBldmFsdXRlcyB0byAwLjlcIixcbn07XG5sZXQgZmxvYXRfdGltZXNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoVGltZXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gKi4gMi4yXCIpLFxuICBtZXNzYWdlOiBcIjEgbXVsdGlwbGllZCBiZSAyLjIgZXZhbHV0ZXMgdG8gMi4yLlwiLFxufTtcbmxldCBmbG9hdF9wb3dlcl9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChQb3dlciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIyLiAqKi4gNC5cIiksXG4gIG1lc3NhZ2U6IFwiMi4gcmFpc2VkIHRvIDQuIGV2YWx1YXRlcyB0byAxNi5cIixcbn07XG5sZXQgZmxvYXRfZGl2aWRlX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KERpdmlkZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LjIgLy4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjQuMiBkaXZpZGVkIGJ5IDIuMSBldmFsdXRlcyB0byAyLlwiLFxufTtcbmxldCBmbG9hdF9sdDFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuIDwuIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLiBpcyBsZXNzIHRoYW4gMi4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9sdDJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA8LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgbGVzcyBub3QgbGVzcyB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9sdGUxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRXF1YWxMZXNzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuIDw9LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4gaXMgbGVzcyB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfbHRlMl9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPD0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2x0ZTNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUuNSA8PS4gNS41XCIpLFxuICBtZXNzYWdlOiBcIjUuNSBpcyBlcXVhbCB0byA1LjUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9ndDFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLjEgPi4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuMSBpcyBub3QgZ3JlYXRlciB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9ndDJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuID4uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBncmVhdGVyIHRoYW4gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3RlMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhbkVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4xID49LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4xIGlzIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMi4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEdyZWF0ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPj0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBncmVhdGVyIHRoYW4gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3RlM19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhbkVxdWFsRXF1YWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNS41ID49LiA1LjVcIiksXG4gIG1lc3NhZ2U6IFwiNS41IGlzIGVxdWFsIHRvIDUuNSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2VxMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChFcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuID09LiAyLlwiKSxcbiAgbWVzc2FnZTogXCIxLiBkb2VzIG5vdCBlcXVhbCAyLiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9lcTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoRXF1YWxUcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjMuMSA9PS4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjMuMSBpcyBlcXVhbCB0byAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBib29sX2FuZDFfZXggPSB7XG4gIHN1Yl9pZDogQW5kRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0cnVlICYmIGZhbHNlXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgaXMgdHJ1ZSwgc28gZXZhbHVhdGUgdGhlIHJpZ2h0IG9wZXJhbmQuIFNpbmNlIHRoZSByaWdodCBvcGVyYW5kIGlzIGZhbHNlLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGJvb2xfYW5kMl9leCA9IHtcbiAgc3ViX2lkOiBBbmRUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA8IDIgJiYgMyA8IDRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBldmFsdWF0ZXMgdG8gdHJ1ZSwgc28gZXZhbHVhdGUgdGhlIHJpZ2h0IG9wZXJhbmQuIFNpbmNlIHRoZSByaWdodCBvcGVyYW5kIGFsc28gZXZhbHV0ZXMgdG8gdHJ1ZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGJvb2xfb3IxX2V4ID0ge1xuICBzdWJfaWQ6IE9yRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmYWxzZSBcXFxcLyAyIDwgMVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGV2YWx1YXRlcyB0byBmYWxzZSwgc28gZXZhbHVhdGUgdGhlIHJpZ2h0IG9wZXJhbmQuIFNpbmNlIHRoZSByaWdodCBvcGVyYW5kIGFsc28gZXZhbHVhdGVzIHRvIGZhbHNlLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGJvb2xfb3IyX2V4ID0ge1xuICBzdWJfaWQ6IE9yVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjMgPCA0IFxcXFwvIGZhbHNlXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgZXZhbHV0ZXMgdG8gdHJ1ZSwgc28gdGhlIHJpZ2h0IG9wZXJhbmQgaXMgbm90IGV2YWx1YXRlZC4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IHN0cl9lcTFfZXggPSB7XG4gIHN1Yl9pZDogU3RyaW5nRXF1YWxGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIlxcXCJhYmNcXFwiICQ9PSBcXFwieHl6XFxcIlwiKSxcbiAgbWVzc2FnZTogXCJcXFwiYWJjXFxcIiBkb2VzIG5vdCBlcXVhbCBcXFwieHl6XFxcIiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBzdHJfZXEyX2V4ID0ge1xuICBzdWJfaWQ6IFN0cmluZ0VxdWFsVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIlxcXCJhYmNcXFwiICQ9PSBcXFwiYWJjXFxcIlwiKSxcbiAgbWVzc2FnZTogXCJcXFwiYWJjXFxcIiBpcyBlcXVhbCB0byBcXFwiYWJjXFxcIiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IF91bm9wX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9leHBfaWQ6IElkLnQsIH5leHBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoc2ZfZXhwX2lkLCBleHBfaWQpLFxuXTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWRzID0gKH5leHBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX3Vub3BfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfZXhwKSwgfmV4cF9pZCk7XG5sZXQgYm9vbF91bmFyeV9ub3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlBlcmZvcm1zIGJvb2xlYW4gbmVnYXRpb24gb2YgdGhlIFsqb3BlcmFuZCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBVbk9wRXhwKEJvb2woTm90KSksXG4gICAgc3ludGFjdGljX2Zvcm06IFt1bmFyeV9ub3QoKSwgX2V4cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaWRzID0gKH5leHBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX3Vub3BfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfZXhwKSwgfmV4cF9pZCk7XG5sZXQgaW50X3VuYXJ5X21pbnVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJQZXJmb3JtcyBpbnRlZ2VyIG5lZ2F0aW9uIG9mIHRoZSBbKm9wZXJhbmQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogVW5PcEV4cChJbnQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW3VuYXJ5X21pbnVzKCksIF9leHBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfdW5hcnlfbWludXNfZXhdLFxuICB9O1xufTtcbmxldCBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX2xlZnRfaWQ6IElkLnQsIHNmX3JpZ2h0X2lkOiBJZC50LCB+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9sZWZ0X2lkLCBsZWZ0X2lkKSwgKHNmX3JpZ2h0X2lkLCByaWdodF9pZCldO1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3BsdXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBzdW0gb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoUGx1cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHBsdXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfcGx1c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X21pbnVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChNaW51cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIG1pbnVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF90aW1lc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfdGltZXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBwcm9kdWN0IG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KFRpbWVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgdGltZXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfdGltZXNfZXhdLFxuICB9O1xufTtcbmxldCBpbnRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3Bvd2VyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcmVzdWx0IG9mIHJhaXNpbmcgWypsZWZ0Kl0oJXMpIHJvIHRoZSBbKnJpZ2h0Kl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChQb3dlcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHBvd2VyKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3Bvd2VyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2RpdmlkZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHF1b3RpZW50IG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KERpdmlkZSkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGRpdmlkZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9kaXZpZGVfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2x0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9sdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbHQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbHQxX2V4LCBpbnRfbHQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9sdGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2x0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGx0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9sdGUxX2V4LCBpbnRfbHRlMl9leCwgaW50X2x0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2d0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9ndF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZ3QoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZ3QxX2V4LCBpbnRfZ3QyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9ndGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2d0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGd0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9ndGUxX2V4LCBpbnRfZ3RlMl9leCwgaW50X2d0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGVxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9lcTFfZXgsIGludF9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X25lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbmVxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbm90IGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KE5vdEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIG5vdF9lcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfcGx1c19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9wbHVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgc3VtIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoUGx1cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZwbHVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfcGx1c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9taW51c19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChNaW51cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZtaW51cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X3RpbWVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcHJvZHVjdCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KFRpbWVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZnRpbWVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfdGltZXNfZXhdLFxuICB9O1xufTtcbmxldCBmbG9hdF9wb3dlcl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9wb3dlcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHJlc3VsdCBvZiByYWlzaW5nIFsqbGVmdCpdKCVzKSB0byB0aGUgWypyaWdodCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChQb3dlcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZwb3dlcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3Bvd2VyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9kaXZpZGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBxdW90aWVudCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KERpdmlkZSkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZkaXZpZGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9kaXZpZGVfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbHRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmx0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfbHQxX2V4LCBmbG9hdF9sdDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbHRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2x0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmx0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2x0ZTFfZXgsIGZsb2F0X2x0ZTJfZXgsIGZsb2F0X2x0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZ3RfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZ3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmd0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZ3QxX2V4LCBmbG9hdF9ndDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2d0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmd0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2d0ZTFfZXgsIGZsb2F0X2d0ZTJfZXgsIGZsb2F0X2d0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9lcTFfZXgsIGZsb2F0X2VxMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9uZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbmVxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbm90IGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTm90RXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZm5vdF9lcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgYm9vbF9hbmRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgYm9vbF9hbmRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBldmFsdWF0ZXMgdG8gYHRydWVgLCBldmFsdWF0ZSB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLiBJZiB0aGF0IGFsc28gZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChCb29sKEFuZCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGxvZ2ljYWxfYW5kKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYm9vbF9hbmQxX2V4LCBib29sX2FuZDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgYm9vbF9vcl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbi8vIFRPRE8gU29tZSBvZiB0aGUgZXhhbXBsZXMgYXJlIGV2YWx1YXRpbmcgd2VpcmRseSBhbmQgY2FuJ3QgdHlwZSB0aGUgfHwgaW4gdGhlIGVkaXRvclxubGV0IGJvb2xfb3JfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBldmFsdWF0ZXMgdG8gYHRydWVgLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcykuIElmIHRoYXQgZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChCb29sKE9yKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbG9naWNhbF9vcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jvb2xfb3IxX2V4LCBib29sX29yMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBzdHJfZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgc3RyX2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChTdHJpbmcoRXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgc2VxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3N0cl9lcTFfZXgsIHN0cl9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc3RyX2NvbmNhdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBzdHJfY29uY2F0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJSZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBhbmQgdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSxcIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChTdHJpbmcoQ29uY2F0KSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgc2NvbmNhdCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYm9vbF91bl9ub3Q6IGdyb3VwID0ge1xuICBpZDogVW5PcEV4cChCb29sKE5vdCkpLFxuICBmb3JtczogW2Jvb2xfdW5hcnlfbm90X2V4cF0sXG59O1xuXG5sZXQgaW50X3VuX21pbnVzOiBncm91cCA9IHtcbiAgaWQ6IFVuT3BFeHAoSW50KE1pbnVzKSksXG4gIGZvcm1zOiBbaW50X3VuYXJ5X21pbnVzX2V4cF0sXG59O1xuXG5sZXQgaW50X3BsdXM6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoUGx1cykpLCBmb3JtczogW2ludF9wbHVzX2V4cF19O1xuXG5sZXQgaW50X21pbnVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KE1pbnVzKSksIGZvcm1zOiBbaW50X21pbnVzX2V4cF19O1xuXG5sZXQgaW50X3RpbWVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFRpbWVzKSksIGZvcm1zOiBbaW50X3RpbWVzX2V4cF19O1xuXG5sZXQgaW50X3Bvd2VyOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFBvd2VyKSksIGZvcm1zOiBbaW50X3Bvd2VyX2V4cF19O1xuXG5sZXQgaW50X2RpdmlkZTogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoRGl2aWRlKSksXG4gIGZvcm1zOiBbaW50X2RpdmlkZV9leHBdLFxufTtcblxubGV0IGludF9sZXNzX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuKSksXG4gIGZvcm1zOiBbaW50X2x0X2V4cF0sXG59O1xuXG5sZXQgaW50X2xlc3NfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoTGVzc1RoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbaW50X2x0ZV9leHBdLFxufTtcblxubGV0IGludF9ncmVhdGVyX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuKSksXG4gIGZvcm1zOiBbaW50X2d0X2V4cF0sXG59O1xuXG5sZXQgaW50X2dyZWF0ZXJfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbaW50X2d0ZV9leHBdLFxufTtcblxubGV0IGludF9lcXVhbDogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChFcXVhbHMpKSwgZm9ybXM6IFtpbnRfZXFfZXhwXX07XG5cbmxldCBpbnRfbm90X2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChOb3RFcXVhbHMpKSxcbiAgZm9ybXM6IFtpbnRfbmVxX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfcGx1czogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChQbHVzKSksXG4gIGZvcm1zOiBbZmxvYXRfcGx1c19leHBdLFxufTtcblxubGV0IGZsb2F0X21pbnVzOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KE1pbnVzKSksXG4gIGZvcm1zOiBbZmxvYXRfbWludXNfZXhwXSxcbn07XG5cbmxldCBmbG9hdF90aW1lczogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChUaW1lcykpLFxuICBmb3JtczogW2Zsb2F0X3RpbWVzX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfcG93ZXI6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoUG93ZXIpKSxcbiAgZm9ybXM6IFtmbG9hdF9wb3dlcl9leHBdLFxufTtcblxubGV0IGZsb2F0X2RpdmlkZTogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChEaXZpZGUpKSxcbiAgZm9ybXM6IFtmbG9hdF9kaXZpZGVfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9sZXNzX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW4pKSxcbiAgZm9ybXM6IFtmbG9hdF9sdF9leHBdLFxufTtcblxubGV0IGZsb2F0X2xlc3NfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgZm9ybXM6IFtmbG9hdF9sdGVfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ncmVhdGVyX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW4pKSxcbiAgZm9ybXM6IFtmbG9hdF9ndF9leHBdLFxufTtcblxubGV0IGZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgZm9ybXM6IFtmbG9hdF9ndGVfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChFcXVhbHMpKSxcbiAgZm9ybXM6IFtmbG9hdF9lcV9leHBdLFxufTtcblxubGV0IGZsb2F0X25vdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChOb3RFcXVhbHMpKSxcbiAgZm9ybXM6IFtmbG9hdF9uZXFfZXhwXSxcbn07XG5cbmxldCBib29sX2FuZDogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEJvb2woQW5kKSksIGZvcm1zOiBbYm9vbF9hbmRfZXhwXX07XG5cbmxldCBib29sX29yOiBncm91cCA9IHtpZDogQmluT3BFeHAoQm9vbChPcikpLCBmb3JtczogW2Jvb2xfb3JfZXhwXX07XG5cbmxldCBzdHJpbmdfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoU3RyaW5nKEVxdWFscykpLFxuICBmb3JtczogW3N0cl9lcV9leHBdLFxufTtcblxubGV0IHN0cmluZ19jb25jYXQ6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoU3RyaW5nKENvbmNhdCkpLFxuICBmb3JtczogW3N0cl9jb25jYXRfZXhwXSxcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBIYXozbGNvcmU7XG5cbi8qIElmIHlvdSBhcmUgYWRkaW5nIGRvY3MgaGVyZSBmb3IgbmV3IHN5bnRheCwgc2VlIFBpcGVsaW5lRXhwLnJlXG4gKiB3aGljaCBkb2N1bWVudHMgdGhlIHNpbXBsZXN0IHdheSB0byBhZGQgYSBuZXcgZm9ybS4gKi9cblxubGV0IGZlZWRiYWNrX3ZpZXcgPSAobWVzc2FnZSwgdXBfYWN0aXZlLCB1cF9hY3Rpb24sIGRvd25fYWN0aXZlLCBkb3duX2FjdGlvbikgPT4ge1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJmZWVkYmFja1wiXSksXG4gICAgW1xuICAgICAgZGl2KH5hdHRyPWNsc3MoW1wibWVzc2FnZVwiXSksIFt0ZXh0KG1lc3NhZ2UpXSksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBjbHNzKFtcIm9wdGlvblwiXSBAICh1cF9hY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICAgICAgQXR0ci5vbl9jbGljayh1cF9hY3Rpb24pLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbdGV4dChcIvCfkY1cIildLFxuICAgICAgKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIGNsc3MoW1wib3B0aW9uXCJdIEAgKGRvd25fYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgICAgIEF0dHIub25fY2xpY2soZG93bl9hY3Rpb24pLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbdGV4dChcIvCfkY5cIildLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGV4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZpZXcgPSAofmluamVjdCwgZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKSA9PiB7XG4gIGxldCAodXBfYWN0aXZlLCBkb3duX2FjdGl2ZSkgPVxuICAgIHN3aXRjaCAoXG4gICAgICBFeHBsYWluVGhpc01vZGVsLmdldF9leHBsYW5hdGlvbl9mZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgbW9kZWwpXG4gICAgKSB7XG4gICAgfCBTb21lKFRodW1ic1VwKSA9PiAodHJ1ZSwgZmFsc2UpXG4gICAgfCBTb21lKFRodW1ic0Rvd24pID0+IChmYWxzZSwgdHJ1ZSlcbiAgICB8IE5vbmUgPT4gKGZhbHNlLCBmYWxzZSlcbiAgICB9O1xuICBmZWVkYmFja192aWV3KFxuICAgIFwiVGhpcyBleHBsYW5hdGlvbiBpcyBoZWxwZnVsXCIsXG4gICAgdXBfYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgVGh1bWJzVXApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBkb3duX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIFRodW1ic0Rvd24pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgKTtcbn07XG5cbmxldCBleGFtcGxlX2ZlZWRiYWNrX3ZpZXcgPSAofmluamVjdCwgZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIG1vZGVsKSA9PiB7XG4gIGxldCAodXBfYWN0aXZlLCBkb3duX2FjdGl2ZSkgPVxuICAgIHN3aXRjaCAoXG4gICAgICBFeHBsYWluVGhpc01vZGVsLmdldF9leGFtcGxlX2ZlZWRiYWNrKFxuICAgICAgICBncm91cF9pZCxcbiAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgZXhhbXBsZV9pZCxcbiAgICAgICAgbW9kZWwsXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKFRodW1ic1VwKSA9PiAodHJ1ZSwgZmFsc2UpXG4gICAgfCBTb21lKFRodW1ic0Rvd24pID0+IChmYWxzZSwgdHJ1ZSlcbiAgICB8IE5vbmUgPT4gKGZhbHNlLCBmYWxzZSlcbiAgICB9O1xuICBmZWVkYmFja192aWV3KFxuICAgIFwiVGhpcyBleGFtcGxlIGlzIGhlbHBmdWxcIixcbiAgICB1cF9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIFRodW1ic1VwKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgZG93bl9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIFRodW1ic0Rvd24pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgKTtcbn07XG5cbmxldCBjb2RlX25vZGUgPSB0ZXh0ID0+IE5vZGUuc3Bhbih+YXR0cj1jbHNzKFtcImNvZGVcIl0pLCBbTm9kZS50ZXh0KHRleHQpXSk7XG5cbmxldCBoaWdobGlnaHQgPVxuICAgICh+aW5qZWN0LCBtc2c6IGxpc3QoTm9kZS50KSwgaWQ6IElkLnQsIG1hcHBpbmc6IENvbG9yU3RlcHMudClcbiAgICA6IChOb2RlLnQsIENvbG9yU3RlcHMudCkgPT4ge1xuICBsZXQgKGMsIG1hcHBpbmcpID0gQ29sb3JTdGVwcy5nZXRfY29sb3IoaWQsIG1hcHBpbmcpO1xuICBsZXQgY2xhc3NlcyA9IGNsc3MoW1wiaGlnaGxpZ2h0LVwiICsrIGMsIFwiY2xpY2thYmxlXCJdKTtcbiAgbGV0IGF0dHIgPVxuICAgIHN3aXRjaCAoaW5qZWN0KSB7XG4gICAgfCBTb21lKGluamVjdCkgPT5cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsYXNzZXMsXG4gICAgICAgIEF0dHIub25fbW91c2VlbnRlcihfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KEhvdmVyKGlkKSkpKSlcbiAgICAgICAgKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWxlYXZlKF8gPT5cbiAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlNldChFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoVW5zZXRIb3ZlcikpKSlcbiAgICAgICAgKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKFNlbGVjdChUZXJtKElkKGlkLCBMZWZ0KSkpKSlcbiAgICAgICAgKSxcbiAgICAgIF0pXG4gICAgfCBOb25lID0+IGNsYXNzZXNcbiAgICB9O1xuICAoTm9kZS5zcGFuKH5hdHRyLCBtc2cpLCBtYXBwaW5nKTtcbn07XG5cbi8qXG4gTWFya2Rvd24gbGlrZSB0aGluZzpcbiBoaWdobGlnaHR5IHRoaW5nIDogW3RoaW5nIHRvIGhpZ2hsaWdodF0oaWQpXG4gYnVsbGV0ZWQgbGlzdDogLSBsaXN0IGl0ZW1cbiAgICAgICAgICAgICAgICAtIGxpc3QgaXRlbVxuIGNvZGU6IGBjb2RlYFxuIGl0YWxpY3M6ICp3b3JkKlxuICovXG5sZXQgbWtfdHJhbnNsYXRpb24gPSAofmluamVjdCwgdGV4dDogc3RyaW5nKTogKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSA9PiB7XG4gIGxldCBvbWQgPSBPbWQub2Zfc3RyaW5nKHRleHQpO1xuICAvL3ByaW50X21hcmtkb3duKG9tZCk7XG4gIGxldCByZWMgdHJhbnNsYXRlID1cbiAgICAgICAgICAoZG9jOiBPbWQudCwgbWFwcGluZzogQ29sb3JTdGVwcy50KTogKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChtc2csIG1hcHBpbmcpLCBlbGVtKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZWxlbSkge1xuICAgICAgICB8IE9tZC5QYXJhZ3JhcGgoZCkgPT4gdHJhbnNsYXRlKGQsIG1hcHBpbmcpXG4gICAgICAgIHwgVGV4dCh0KSA9PiAoTGlzdC5hcHBlbmQobXNnLCBbTm9kZS50ZXh0KHQpXSksIG1hcHBpbmcpXG4gICAgICAgIHwgVWwoaXRlbXMpID0+XG4gICAgICAgICAgbGV0IChidWxsZXRzLCBtYXBwaW5nKSA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgICAgKChub2RlcywgbWFwcGluZyksIGQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgKG4sIG1hcHBpbmcpID0gdHJhbnNsYXRlKGQsIG1hcHBpbmcpO1xuICAgICAgICAgICAgICAgIChMaXN0LmFwcGVuZChub2RlcywgW05vZGUubGkobildKSwgbWFwcGluZyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIChbXSwgbWFwcGluZyksXG4gICAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAoTGlzdC5hcHBlbmQobXNnLCBbTm9kZS51bChidWxsZXRzKV0pLCBtYXBwaW5nKTsgLyogVE9ETyBIYW5uYWggLSBTaG91bGQgdGhpcyBiZSBhbiBvcmRlcmVkIGxpc3QgaW5zdGVhZCBvZiBhbiB1bm9yZGVyZWQgbGlzdD8gKi9cbiAgICAgICAgfCBDb2RlKF9uYW1lLCB0KSA9PiAoTGlzdC5hcHBlbmQobXNnLCBbY29kZV9ub2RlKHQpXSksIG1hcHBpbmcpXG4gICAgICAgIHwgVXJsKGlkLCBkLCBfdGl0bGUpID0+XG4gICAgICAgICAgbGV0IChkLCBtYXBwaW5nKSA9IHRyYW5zbGF0ZShkLCBtYXBwaW5nKTtcbiAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgc3dpdGNoIChJZC5vZl9zdHJpbmcoaWQpKSB7XG4gICAgICAgICAgICB8IFNvbWUoaWQpID0+IGlkXG4gICAgICAgICAgICB8IE5vbmUgPT4gSWQuaW52YWxpZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgKGlubmVyX21zZywgbWFwcGluZykgPSBoaWdobGlnaHQofmluamVjdCwgZCwgaWQsIG1hcHBpbmcpO1xuICAgICAgICAgIChMaXN0LmFwcGVuZChtc2csIFtpbm5lcl9tc2ddKSwgbWFwcGluZyk7XG4gICAgICAgIHwgRW1waChkKSA9PlxuICAgICAgICAgIGxldCAoZCwgbWFwcGluZykgPSB0cmFuc2xhdGUoZCwgbWFwcGluZyk7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgTGlzdC5hcHBlbmQoXG4gICAgICAgICAgICAgIG1zZyxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIE5vZGUuc3BhbihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICAgICAgICBBdHRyLnN0eWxlKFxuICAgICAgICAgICAgICAgICAgICAgIENzc19nZW4uY3JlYXRlKH5maWVsZD1cImZvbnQtc3R5bGVcIiwgfnZhbHVlPVwiaXRhbGljXCIpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcHBpbmcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBfID0+IChtc2csIG1hcHBpbmcpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoW10sIG1hcHBpbmcpLFxuICAgICAgZG9jLFxuICAgICk7XG4gIHRyYW5zbGF0ZShvbWQsIENvbG9yU3RlcHMuZW1wdHkpO1xufTtcblxubGV0IG1rX2V4cGxhbmF0aW9uID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgZ3JvdXBfaWQsXG4gICAgICBmb3JtX2lkLFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgbW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICApXG4gICAgOiAoTm9kZS50LCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IChtc2csIGNvbG9yX21hcCkgPSBta190cmFuc2xhdGlvbih+aW5qZWN0PVNvbWUoaW5qZWN0KSwgdGV4dCk7XG4gIGxldCBmZWVkYmFjayA9XG4gICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvd19mZWVkYmFja1xuICAgICAgPyBbZXhwbGFuYXRpb25fZmVlZGJhY2tfdmlldyh+aW5qZWN0LCBncm91cF9pZCwgZm9ybV9pZCwgbW9kZWwpXSA6IFtdO1xuICAoXG4gICAgZGl2KFtkaXYofmF0dHI9Y2xzcyhbXCJleHBsYW5hdGlvbi1jb250ZW50c1wiXSksIG1zZyldIEAgZmVlZGJhY2spLFxuICAgIGNvbG9yX21hcCxcbiAgKTtcbn07XG5cbmxldCBleHBhbmRlcl9kZWNvID1cbiAgICAoXG4gICAgICB+ZG9jczogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZSBhcyB7Zm9udF9tZXRyaWNzLCBffSBhcyB1aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+b3B0aW9uczogbGlzdCgoRXhwbGFpblRoaXNGb3JtLmZvcm1faWQsIFNlZ21lbnQudCkpLFxuICAgICAgfmdyb3VwOiBFeHBsYWluVGhpc0Zvcm0uZ3JvdXAsXG4gICAgICB+ZG9jOiBFeHBsYWluVGhpc0Zvcm0uZm9ybSxcbiAgICAgIGVkaXRvcixcbiAgICApID0+IHtcbiAgbW9kdWxlIERlY28gPVxuICAgIERlY28uRGVjbyh7XG4gICAgICBsZXQgZWRpdG9yID0gZWRpdG9yO1xuICAgICAgbGV0IHVpX3N0YXRlID0gdWlfc3RhdGU7XG4gICAgfSk7XG4gIHN3aXRjaCAoZG9jLmV4cGFuZGFibGVfaWQsIExpc3QubGVuZ3RoKG9wdGlvbnMpKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIDAgfCAxKSA9PiBkaXYoW10pXG4gIHwgKFNvbWUoKGV4cGFuZGFibGUsIF8pKSwgXykgPT5cbiAgICBEZWNvLnRlcm1fZGVjb3JhdGlvbihcbiAgICAgIH5pZD1leHBhbmRhYmxlLFxuICAgICAgKChvcmlnaW4sIF8sIHBhdGgpKSA9PiB7XG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9wb3MgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogJWZweDtcIixcbiAgICAgICAgICAgIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgbGV0IHNwZWNpZmljaXR5X3N0eWxlID1cbiAgICAgICAgICBBdHRyLmNyZWF0ZShcbiAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgIHNwZWNpZmljaXR5X3Bvc1xuICAgICAgICAgICAgKysgKGRvY3Muc3BlY2lmaWNpdHlfb3BlbiA/IFwidHJhbnNmb3JtOiBzY2FsZVkoMSk7XCIgOiBcIlwiKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBnZXRfY2xzcyA9IHNlZ21lbnQgPT5cbiAgICAgICAgICBzd2l0Y2ggKExpc3QubnRoKHNlZ21lbnQsIDApKSB7XG4gICAgICAgICAgfCBCYXNlLlRpbGUoe21vbGQsIF99KSA9PiBbXG4gICAgICAgICAgICAgIFwiY2ktaGVhZGVyLVwiICsrIFNvcnQudG9fc3RyaW5nKG1vbGQub3V0KSAvLyBUT0RPIHRoZSBicm93biBvbiBicm93biBpc24ndCB0aGUgZ3JlYXRlc3QuLi4gYnV0IG9rYXlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB8IF8gPT4gW11cbiAgICAgICAgICB9O1xuXG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9tZW51ID1cbiAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICAgIGNsc3MoW1wic3BlY2lmaWNpdHktb3B0aW9ucy1tZW51XCIsIFwiZXhwYW5kYWJsZVwiXSksXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNpdHlfc3R5bGUsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICgoaWQ6IEV4cGxhaW5UaGlzRm9ybS5mb3JtX2lkLCBzZWdtZW50OiBTZWdtZW50LnQpKTogTm9kZS50ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbWFwID0gTWVhc3VyZWQub2Zfc2VnbWVudChzZWdtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgY29kZV92aWV3ID1cbiAgICAgICAgICAgICAgICAgIENvZGUuc2ltcGxlX3ZpZXcoXG4gICAgICAgICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIH51bnNlbGVjdGVkPXNlZ21lbnQsXG4gICAgICAgICAgICAgICAgICAgIH5tYXAsXG4gICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGV0IGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgaWQgPT0gZG9jLmlkXG4gICAgICAgICAgICAgICAgICAgID8gW1wic2VsZWN0ZWRcIl0gQCBnZXRfY2xzcyhzZWdtZW50KSA6IGdldF9jbHNzKHNlZ21lbnQpO1xuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVfZ3JvdXBfc2VsZWN0aW9uID0gXyA9PlxuICAgICAgICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgICBFeHBsYWluVGhpc1VwZGF0ZS5VcGRhdGVHcm91cFNlbGVjdGlvbihncm91cC5pZCwgaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICAgICAgICAgIGNsc3MoY2xhc3NlcyksXG4gICAgICAgICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayh1cGRhdGVfZ3JvdXBfc2VsZWN0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBbY29kZV92aWV3XSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBleHBhbmRfYXJyb3dfc3R5bGUgPSBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIHNwZWNpZmljaXR5X3Bvcyk7XG4gICAgICAgIGxldCBleHBhbmRfYXJyb3cgPVxuICAgICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcImFycm93XCJdKSwgZXhwYW5kX2Fycm93X3N0eWxlXSksXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBleHBhbmRhYmxlX2RlY28gPVxuICAgICAgICAgIERlY1V0aWwuY29kZV9zdmcoXG4gICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgfm9yaWdpbixcbiAgICAgICAgICAgIH5iYXNlX2Nscz1bXCJleHBhbmRhYmxlXCJdLFxuICAgICAgICAgICAgfmFic19wb3M9ZmFsc2UsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICBjbHNzKFtcImV4cGFuZGFibGUtdGFyZ2V0XCJdKSxcbiAgICAgICAgICAgICAgRGVjVXRpbC5hYnNfcG9zaXRpb24ofmZvbnRfbWV0cmljcywgb3JpZ2luKSxcbiAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IHtcbiAgICAgICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuU3BlY2lmaWNpdHlPcGVuKCFkb2NzLnNwZWNpZmljaXR5X29wZW4pLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgW2V4cGFuZGFibGVfZGVjbywgc3BlY2lmaWNpdHlfbWVudV1cbiAgICAgICAgICBAIChkb2NzLnNwZWNpZmljaXR5X29wZW4gPyBbXSA6IFtleHBhbmRfYXJyb3ddKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKVxuICB9O1xufTtcblxubGV0IGV4YW1wbGVfdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5ncm91cF9pZCxcbiAgICAgIH5mb3JtX2lkLFxuICAgICAgfmV4YW1wbGVzOiBsaXN0KEV4cGxhaW5UaGlzRm9ybS5leGFtcGxlKSxcbiAgICAgIH5tb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICkgPT4ge1xuICBleGFtcGxlcyA9PSBbXVxuICAgID8gW11cbiAgICA6IFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5pZChcImV4YW1wbGVzXCIpLFxuICAgICAgICBMaXN0Lm1hcGkoXG4gICAgICAgICAgKF8sIHt0ZXJtLCBtZXNzYWdlLCBzdWJfaWQsIF99OiBFeHBsYWluVGhpc0Zvcm0uZXhhbXBsZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZlZWRiYWNrID1cbiAgICAgICAgICAgICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvd19mZWVkYmFja1xuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgZXhhbXBsZV9mZWVkYmFja192aWV3KFxuICAgICAgICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgICAgICAgICAgICAgc3ViX2lkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPWNsc3MoW1wiZXhhbXBsZVwiXSksXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBDZWxsRWRpdG9yLnZpZXcoXG4gICAgICAgICAgICAgICAgICB+c2VsZWN0PV8gPT4gVWlfZWZmZWN0Lklnbm9yZSxcbiAgICAgICAgICAgICAgICAgIH5pbmplY3Q9XyA9PiBVaV9lZmZlY3QuSWdub3JlLFxuICAgICAgICAgICAgICAgICAgfmluamVjdF9nbG9iYWw9XyA9PiBVaV9lZmZlY3QuSWdub3JlLFxuICAgICAgICAgICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgfmhpZ2hsaWdodHM9Tm9uZSxcbiAgICAgICAgICAgICAgICAgIH5zZWxlY3RlZD1Ob25lLFxuICAgICAgICAgICAgICAgICAgfmNhcHRpb249Tm9uZSxcbiAgICAgICAgICAgICAgICAgIH5sb2NrZWQ9dHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVkaXRvciA9XG4gICAgICAgICAgICAgICAgICAgICAgRWRpdG9yLmluaXQofnJlYWRfb25seT10cnVlLCBaaXBwZXIudW56aXAodGVybSkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgKHRlcm0sIF8pID1cbiAgICAgICAgICAgICAgICAgICAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGljcyA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdDogTW9kZWxSZXN1bHQudCA9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuY29yZS5keW5hbWljc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBFdmFsdWF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZS5ldmFsdWF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfnNldHRpbmdzPXNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOb0VsYWI7XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBlZGl0b3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9Y2xzcyhbXCJleHBsYW5hdGlvblwiXSksXG4gICAgICAgICAgICAgICAgICBbdGV4dChtZXNzYWdlKV0gQCBmZWVkYmFjayxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdO1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQgPSAocGF0OiBQYXQudCkgPT4ge1xuICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gIHwgUGFyZW5zKHApXG4gIHwgQ2FzdChwLCBfLCBfKSA9PiBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQocClcbiAgfCBfID0+IHBhdFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX3BhdCA9IChwYXQ6IFBhdC50KSA9PiB7XG4gIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgfCBQYXJlbnMocCkgPT4gYnlwYXNzX3BhcmVuc19wYXQocClcbiAgfCBfID0+IHBhdFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX2V4cCA9IChleHA6IEV4cC50KSA9PiB7XG4gIHN3aXRjaCAoZXhwLnRlcm0pIHtcbiAgfCBQYXJlbnMoZSkgPT4gYnlwYXNzX3BhcmVuc19leHAoZSlcbiAgfCBfID0+IGV4cFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX3R5cCA9ICh0eXA6IFR5cC50KSA9PiB7XG4gIHN3aXRjaCAodHlwLnRlcm0pIHtcbiAgfCBQYXJlbnModCkgPT4gYnlwYXNzX3BhcmVuc190eXAodClcbiAgfCBfID0+IHR5cFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtZXNzYWdlX21vZGUgPVxuICB8IE1lc3NhZ2VDb250ZW50KFxuICAgICAgVXBkYXRlQWN0aW9uLnQgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QudCh1bml0KSxcbiAgICAgIE1vZGVsLnVpX3N0YXRlLFxuICAgICAgU2V0dGluZ3MudCxcbiAgICApXG4gIHwgQ29sb3JpbmdzO1xuXG5sZXQgZ2V0X2RvYyA9XG4gICAgKFxuICAgICAgfmRvY3M6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIGluZm86IG9wdGlvbihTdGF0aWNzLkluZm8udCksXG4gICAgICBtb2RlOiBtZXNzYWdlX21vZGUsXG4gICAgKVxuICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PiB7XG4gIGxldCBzaW1wbGUgPSBtc2cgPT4gKFtdLCAoW3RleHQobXNnKV0sIChJZC5NYXAuZW1wdHksIDApKSwgW10pO1xuICBsZXQgZGVmYXVsdCA9IHNpbXBsZShcIk5vIGRvY3MgYXZhaWxhYmxlXCIpO1xuICBsZXQgZ2V0X3NwZWNpZmljaXR5X2xldmVsID0gZ3JvdXBfaWQgPT5cbiAgICBmc3QoRXhwbGFpblRoaXNNb2RlbC5nZXRfZm9ybV9hbmRfb3B0aW9ucyhncm91cF9pZCwgZG9jcykpLmlkO1xuICBsZXQgZ2V0X21lc3NhZ2UgPVxuICAgICAgKFxuICAgICAgICB+Y29sb3JpbmdzPVtdLFxuICAgICAgICB+Zm9ybWF0OiBvcHRpb24oc3RyaW5nID0+IHN0cmluZyk9Tm9uZSxcbiAgICAgICAgfmV4cGxhbmF0aW9uOiBvcHRpb24oc3RyaW5nKT0/LFxuICAgICAgICBncm91cDogRXhwbGFpblRoaXNGb3JtLmdyb3VwLFxuICAgICAgKVxuICAgICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+IHtcbiAgICBsZXQgKGRvYywgb3B0aW9ucykgPSBFeHBsYWluVGhpc01vZGVsLmdldF9mb3JtX2FuZF9vcHRpb25zKGdyb3VwLCBkb2NzKTtcblxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMxOTk4NDA4L29jYW1sLWNvbnZlcnRpbmctc3RyaW5ncy10by1hLXVuaXQtc3RyaW5nLWZvcm1hdFxuICAgIGxldCBleHBsYW5hdGlvbl9tc2cgPVxuICAgICAgc3dpdGNoIChleHBsYW5hdGlvbiwgZm9ybWF0KSB7XG4gICAgICB8IChTb21lKG1zZyksIF8pID0+IG1zZ1xuICAgICAgfCAoXywgU29tZShmKSkgPT4gZihkb2MuZXhwbGFuYXRpb24pXG4gICAgICB8IChfLCBOb25lKSA9PiBkb2MuZXhwbGFuYXRpb25cbiAgICAgIH07XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgfCBNZXNzYWdlQ29udGVudChpbmplY3QsIHVpX3N0YXRlLCBzZXR0aW5ncykgPT5cbiAgICAgIGxldCAoZXhwbGFuYXRpb24sIGNvbG9yX21hcCkgPVxuICAgICAgICBta19leHBsYW5hdGlvbihcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICBncm91cC5pZCxcbiAgICAgICAgICBkb2MuaWQsXG4gICAgICAgICAgZXhwbGFuYXRpb25fbXNnLFxuICAgICAgICAgIGRvY3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgc29ydCA9XG4gICAgICAgIHN3aXRjaCAoaW5mbykge1xuICAgICAgICB8IE5vbmUgPT4gU29ydC5BbnlcbiAgICAgICAgfCBTb21lKGNpKSA9PiBJbmZvLnNvcnRfb2YoY2kpXG4gICAgICAgIH07XG4gICAgICBsZXQgaGlnaGxpZ2h0cyA9XG4gICAgICAgIGNvbG9yaW5nc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoKHN5bnRhY3RpY19mb3JtX2lkOiBJZC50LCBjb2RlX2lkOiBJZC50KSkgPT4ge1xuICAgICAgICAgICAgIGxldCAoY29sb3IsIF8pID0gQ29sb3JTdGVwcy5nZXRfY29sb3IoY29kZV9pZCwgY29sb3JfbWFwKTtcbiAgICAgICAgICAgICAoc3ludGFjdGljX2Zvcm1faWQsIGNvbG9yKTtcbiAgICAgICAgICAgfSlcbiAgICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgICAgfD4gSWQuTWFwLm9mX3NlcVxuICAgICAgICB8PiBPcHRpb24uc29tZTtcbiAgICAgIGxldCBlZGl0b3IgPVxuICAgICAgICBFZGl0b3IuaW5pdCh+cmVhZF9vbmx5PXRydWUsIGRvYy5zeW50YWN0aWNfZm9ybSB8PiBaaXBwZXIudW56aXApO1xuICAgICAgbGV0IGV4cGFuZGVyX2RlY28gPVxuICAgICAgICBleHBhbmRlcl9kZWNvKFxuICAgICAgICAgIH5kb2NzLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICB+b3B0aW9ucyxcbiAgICAgICAgICB+Z3JvdXAsXG4gICAgICAgICAgfmRvYyxcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlnaGxpZ2h0X2RlY28gPVxuICAgICAgICBzd2l0Y2ggKGhpZ2hsaWdodHMpIHtcbiAgICAgICAgfCBTb21lKGhpZ2hsaWdodHMpID0+XG4gICAgICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICAgICAgbGV0IGVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgICAgICAgbGV0IHVpX3N0YXRlID0gdWlfc3RhdGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBEZWNvLmNvbG9yX2hpZ2hsaWdodHMoQ29sb3JTdGVwcy50b19saXN0KGhpZ2hsaWdodHMpKTtcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIH07XG4gICAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljcztcbiAgICAgIGxldCBzeW50YWN0aWNfZm9ybV92aWV3ID1cbiAgICAgICAgUmVhZE9ubHlFZGl0b3IudmlldyhcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5vdmVybGF5cz1oaWdobGlnaHRfZGVjbyBAIFtleHBhbmRlcl9kZWNvXSxcbiAgICAgICAgICB+c29ydCxcbiAgICAgICAgICB7ZWRpdG9yLCBzdGF0aWNzfSxcbiAgICAgICAgKTtcbiAgICAgIGxldCBleGFtcGxlX3ZpZXcgPVxuICAgICAgICBleGFtcGxlX3ZpZXcoXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5ncm91cF9pZD1ncm91cC5pZCxcbiAgICAgICAgICB+Zm9ybV9pZD1kb2MuaWQsXG4gICAgICAgICAgfmV4YW1wbGVzPWRvYy5leGFtcGxlcyxcbiAgICAgICAgICB+bW9kZWw9ZG9jcyxcbiAgICAgICAgKTtcbiAgICAgIChbc3ludGFjdGljX2Zvcm1fdmlld10sIChbZXhwbGFuYXRpb25dLCBjb2xvcl9tYXApLCBleGFtcGxlX3ZpZXcpO1xuICAgIHwgQ29sb3JpbmdzID0+XG4gICAgICBsZXQgKF8sIGNvbG9yX21hcCkgPSBta190cmFuc2xhdGlvbih+aW5qZWN0PU5vbmUsIGV4cGxhbmF0aW9uX21zZyk7XG4gICAgICAoW10sIChbXSwgY29sb3JfbWFwKSwgW10pO1xuICAgIH07XG4gIH07XG5cbiAgLyogVXNlIHRoaXMgd2hlbiBhZGRpbmcgbmV3IGVudHJpZXMgKi9cbiAgbGV0IG1lc3NhZ2Vfc2luZ2xlID0gKGU6IEV4cGxhaW5UaGlzRm9ybS5TaW1wbGUudCkgPT4ge1xuICAgIGxldCAoZXhwbGFuYXRpb24sIGNvbG9yaW5ncywgZ3JvdXApID0gRXhwbGFpblRoaXNGb3JtLlNpbXBsZS50b19ncm91cChlKTtcbiAgICBnZXRfbWVzc2FnZSh+Y29sb3JpbmdzLCB+Zm9ybWF0PU5vbmUsIH5leHBsYW5hdGlvbiwgZ3JvdXApO1xuICB9O1xuXG4gIHN3aXRjaCAoaW5mbykge1xuICB8IFNvbWUoSW5mb0V4cCh7dGVybSwgX30pKSA9PlxuICAgIGxldCByZWMgZ2V0X21lc3NhZ2VfZXhwID1cbiAgICAgICAgICAgICh0ZXJtKVxuICAgICAgICAgICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+XG4gICAgICBzd2l0Y2ggKCh0ZXJtOiBFeHAudGVybSkpIHtcbiAgICAgIHwgRXhwLkludmFsaWQoXykgPT4gc2ltcGxlKFwiTm90IGEgdmFsaWQgZXhwcmVzc2lvblwiKVxuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgIHwgQ2xvc3VyZShfKVxuICAgICAgfCBDYXN0KF8pXG4gICAgICB8IEJ1aWx0aW5GdW4oXykgPT4gc2ltcGxlKFwiSW50ZXJuYWwgZXhwcmVzc2lvblwiKVxuICAgICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZUV4cC5lbXB0eV9ob2xlX2V4cHMpXG4gICAgICB8IE11bHRpSG9sZShfY2hpbGRyZW4pID0+IGdldF9tZXNzYWdlKEhvbGVFeHAubXVsdGlfaG9sZV9leHBzKVxuICAgICAgfCBUeUFsaWFzKHR5X3BhdCwgdHlfZGVmLCBfYm9keSkgPT5cbiAgICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0eV9wYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGRlZl9pZCA9IExpc3QubnRoKHR5X2RlZi5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgVHlBbGlhc0V4cC50eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVHlBbGlhc0V4cC50eWFsaWFzX2V4cHMsXG4gICAgICAgICk7XG4gICAgICB8IERlZmVycmFsKF8pID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmRlZmVycmFsX2V4cHMpXG4gICAgICB8IEJvb2woYikgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuYm9vbF9leHBzKGIpKVxuICAgICAgfCBJbnQoaSkgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuaW50X2V4cHMoaSkpXG4gICAgICB8IEZsb2F0KGYpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmZsb2F0X2V4cHMoZikpXG4gICAgICB8IFN0cmluZyhzKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5zdHJpbmdfZXhwcyhzKSlcbiAgICAgIHwgTGlzdExpdCh0ZXJtcykgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgodGVybXMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0RXhwLmxpc3RsaXRzLFxuICAgICAgICApXG4gICAgICB8IFR5cEZ1bih0cGF0LCBib2R5LCBfKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0cGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgIH5wYXRfaWQ9dHBhdF9pZCxcbiAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICAvKiBUT0RPOiBNb3JlIGNvdWxkIGJlIGRvbmUgaGVyZSBwcm9iYWJseSBmb3IgZGlmZmVyZW50IHBhdHRlcm5zLiAqL1xuICAgICAgICBiYXNpYyhUeXBGdW5jdGlvbkV4cC50eXBlX2Z1bmN0aW9uc19iYXNpYyk7XG4gICAgICB8IEZ1bihwYXQsIGJvZHksIF8sIF8pID0+XG4gICAgICAgIGxldCBiYXNpYyA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIGxldCBwYXQgPSBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQocGF0KTtcbiAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9lbXB0eV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2VtcHR5X2hvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZW1wdHlfaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19lbXB0eV9ob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTXVsdGlIb2xlKF8pID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX211bHRpX2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbXVsdGlfaG9sZSkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19tdWx0aV9ob2xlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX211bHRpX2hvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBXaWxkID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3dpbGRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3dpbGRfZXhwX2NvbG9yaW5nX2lkcyh+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc193aWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgSW50KGkpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2ludGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19pbnQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KGkpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfaW50LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2ludCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEZsb2F0KGYpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Zsb2F0bGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZmxvYXRsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVmJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBmLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZmxvYXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBCb29sKGIpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Jvb2xsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Jvb2xsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyViJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBiLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19ib29sKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3N0cmxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19zdHIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfc3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3N0cik7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKFtdKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90cml2X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90cml2X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICAvLyBIQU5OQUggVE9ETyAtIHRoaW5rIGNvdWxkIG1vdmUgdGhpcyBmb3JtYXQgdGhpbmcgbGlrZSBpbnRvIHRoZSBjb2xvcmluZ3NcbiAgICAgICAgICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHJpdik7XG4gICAgICAgICAgfVxuICAgICAgICB8IExpc3RMaXQoZWxlbWVudHMpID0+XG4gICAgICAgICAgaWYgKExpc3QubGVuZ3RoKGVsZW1lbnRzKSA9PSAwKSB7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdG5pbF9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwpKSB7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdG5pbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdGxpdCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bGl0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RsaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fY29uc19leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zKSkge1xuICAgICAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+aGRfaWQsXG4gICAgICAgICAgICAgICAgICB+dGxfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVmFyKHZhcikgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdmFyX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3ZhcikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3Zhcl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHZhcixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3ZhcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJhc2ljX3R1cGxlID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgICAgICB8IDIgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUyX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0MV9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDJfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIHwgMyA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTNfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0M19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDNfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSkpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfCBBcChjb24sIGFyZykgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fYXBfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXApKSB7XG4gICAgICAgICAgICBsZXQgY29uX2lkID0gTGlzdC5udGgoY29uLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmNvbl9pZCxcbiAgICAgICAgICAgICAgICAgIH5hcmdfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnN0cnVjdG9yKHYpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2N0cl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIpKSB7XG4gICAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXRcbiAgICAgICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfCBDYXN0KF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIH07XG4gICAgICB8IFR1cGxlKHRlcm1zKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PlxuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHRlcm1zKSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aCh0ZXJtcykpIHtcbiAgICAgICAgfCAyID0+XG4gICAgICAgICAgaWYgKFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMi5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVFeHAudHVwbGVzMikpIHtcbiAgICAgICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyh+ZXhwMV9pZCwgfmV4cDJfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVzMixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKFR1cGxlRXhwLnR1cGxlczIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCAzID0+XG4gICAgICAgICAgaWYgKFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMy5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVFeHAudHVwbGVzMykpIHtcbiAgICAgICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+ZXhwMV9pZCxcbiAgICAgICAgICAgICAgICAgIH5leHAyX2lkLFxuICAgICAgICAgICAgICAgICAgfmV4cDNfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlczMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhUdXBsZUV4cC50dXBsZXMzKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZUV4cC50dXBsZXMpXG4gICAgICAgIH07XG4gICAgICB8IFZhcihuKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC52YXJfZXhwcyhuKSlcbiAgICAgIHwgTGV0KHBhdCwgZGVmLCBib2R5KSA9PlxuICAgICAgICBsZXQgcGF0ID0gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHBhdCk7XG4gICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGRlZl9pZCA9IExpc3QubnRoKGRlZi5pZHMsIDApO1xuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2VtcHR5X2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19lbXB0eWhvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2VtcHR5aG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2VtcHR5aG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X211bHRpX2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19tdXRsaWhvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX211dGxpaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX211dGxpaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFdpbGQgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF93aWxkX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfd2lsZCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfd2lsZF9leHBfY29sb3JpbmdfaWRzKH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c193aWxkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfd2lsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludChpKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2ludF9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2ludCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfaW50X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoaSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUgYW5kIHNvbWUgb3RoZXIgcGxhY2VzIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gZm9ybXMgYW5kIHNwZWNpZmljaXR5IGxldmVscy4uLiBtYXliZSBhIFNhZmFyaSBpc3N1ZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEZsb2F0KGYpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfZmxvYXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19mbG9hdCkpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gTWFrZSBzdXJlIGV2ZXJ5d2hlcmUgcHJpbnRpbmcgdGhlIGZsb2F0IGxpdGVyYWwgcHJpbnQgaXQgcHJldHRpZXJcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlZiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgZixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBCb29sKGIpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfYm9vbF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2Jvb2wpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlYiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgYixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19ib29sLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfc3RyX2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfc3RyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfc3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKFtdKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3RyaXZfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190cml2KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF90cml2X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfdHJpdixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUgYW5kIG90aGVyIHBsYWNlcyB3aGVuIHN3aXRjaGluZyBzeW50YWN0aWMgc3BlY2lmaWNpdGllcy4uLiBzZWVtcyBsaWtlIG1pZ2h0IGJlIFNhZmFyaSBpc3N1ZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBMaXN0TGl0KGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfbGlzdG5pbF9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfbGlzdG5pbCkpIHtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgICB+ZGVmX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c19saXN0bmlsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbGlzdG5pbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF9saXN0bGl0X2V4cC5pZFxuICAgICAgICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2xpc3RsaXQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19saXN0bGl0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbGlzdGxpdCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2NvbnNfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19jb25zKSkge1xuICAgICAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfY29ucyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2NvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBWYXIodmFyKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3Zhcl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3ZhcikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdmFyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2YXIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3ZhcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3Zhcik7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGxldCBiYXNpY190dXBsZSA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICAgICAgfCAyID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3R1cGxlMik7XG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZTJfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgTGV0RXhwLmxldF90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+ZGVmX2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRzX3R1cGxlMixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IDMgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHVwbGUzKTtcbiAgICAgICAgICAgIC8vIFRPRE8gU3ludGFjdGljIGZvcm0gY2FuIGdvIG9mZiBwYWdlIC0gc28gY2FuIGV4YW1wbGVzIC0gYnV0IGNhbiBzY3JvbGwsIGp1c3QgY2FuJ3Qgc2VlIGJvdHRvbSBzY3JvbGwgYmFyXG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZTNfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0M19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgTGV0RXhwLmxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0M19pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRzX3R1cGxlMyxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlMyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c190dXBsZTMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IF8gPT5cbiAgICAgICAgICAgIGlmIChMZXRFeHAubGV0X3R1cGxlX2V4cC5pZFxuICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190dXBsZSkpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoTGV0RXhwLmxldHNfdHVwbGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIHwgQXAoY29uLCBhcmcpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfYXBfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19hcCkpIHtcbiAgICAgICAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyh+Y29uX2lkLCB+YXJnX2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2FwLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2N0cl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2N0cikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfY3RyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2N0cik7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludmFsaWQoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdFxuICAgICAgICB8IFBhcmVucyhfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0P1xuICAgICAgICB8IENhc3QoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfTtcbiAgICAgIHwgRml4RihwYXQsIGJvZHksIF8pID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpeEZFeHAuc2luZ2xlKFxuICAgICAgICAgICAgfnBhdF9pZD1VUGF0LnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBBcChSZXZlcnNlLCBhcmcsIGZuKSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBQaXBlbGluZUV4cC5zaW5nbGUoXG4gICAgICAgICAgICB+YXJnX2lkPVVFeHAucmVwX2lkKGFyZyksXG4gICAgICAgICAgICB+Zm5faWQ9VUV4cC5yZXBfaWQoZm4pLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgVHlwQXAoZiwgdHlwKSA9PlxuICAgICAgICBsZXQgZl9pZCA9IExpc3QubnRoKGYuaWRzLCAwKTtcbiAgICAgICAgbGV0IHR5cF9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgICBsZXQgYmFzaWMgPSAoZ3JvdXAsIGZvcm1hdCwgY29sb3JpbmdfaWRzKSA9PiB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+Zl9pZCwgfnR5cF9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUoZm9ybWF0KSxcbiAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIGJhc2ljKFxuICAgICAgICAgIFR5cEFwcEV4cC50eXBmdW5hcHMsXG4gICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZl9pZCksXG4gICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0eXBfaWQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUeXBBcHBFeHAudHlwZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICk7XG5cbiAgICAgIHwgQXAoRm9yd2FyZCwgeCwgYXJnKSA9PlxuICAgICAgICBsZXQgeF9pZCA9IExpc3QubnRoKHguaWRzLCAwKTtcbiAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICBsZXQgYmFzaWMgPSAoZ3JvdXAsIGZvcm1hdCwgY29sb3JpbmdfaWRzKSA9PiB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+eF9pZCwgfmFyZ19pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUoZm9ybWF0KSxcbiAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCAoeC50ZXJtKSB7XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgIEFwcEV4cC5jb25hcHMsXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgdixcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuY29uYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgIEFwcEV4cC5mdW5hcHMsXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4X2lkKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFwcEV4cC5mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgICB8IERlZmVycmVkQXAoeCwgYXJncykgPT5cbiAgICAgICAgbGV0IHhfaWQgPSBMaXN0Lm50aCh4LmlkcywgMCk7XG4gICAgICAgIGxldCBzdXBwbGllZF9pZCA9IElkLm1rKCk7XG4gICAgICAgIGxldCBkZWZlcnJlZF9pZCA9IHtcbiAgICAgICAgICBsZXQgZGVmZXJyYWwgPSBMaXN0LmZpbmQoRXhwLmlzX2RlZmVycmFsLCBhcmdzKTtcbiAgICAgICAgICBMaXN0Lm50aChkZWZlcnJhbC5pZHMsIDApO1xuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgfCBNZXNzYWdlQ29udGVudChfKSA9PlxuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgQXBwRXhwLmRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaWRzKH54X2lkLCB+ZGVmZXJyZWRfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoc3VwcGxpZWRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmZXJyZWRfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFwcEV4cC5kZWZlcnJlZGFwcyxcbiAgICAgICAgICApXG4gICAgICAgIHwgQ29sb3JpbmdzID0+XG4gICAgICAgICAgbGV0IGNvbG9yX2ZuID0gTGlzdC5udGgoQ29sb3JTdGVwcy5jaGlsZF9jb2xvcnMsIDApO1xuICAgICAgICAgIGxldCBjb2xvcl9zdXBwbGllZCA9IExpc3QubnRoKENvbG9yU3RlcHMuY2hpbGRfY29sb3JzLCAxKTtcbiAgICAgICAgICBsZXQgY29sb3JfZGVmZXJyZWQgPSBMaXN0Lm50aChDb2xvclN0ZXBzLmNoaWxkX2NvbG9ycywgMik7XG4gICAgICAgICAgbGV0IGFkZCA9IChtYXBwaW5nLCBhcmc6IEV4cC50KSA9PiB7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBIYXozbGNvcmUuSWQuTWFwLmFkZChcbiAgICAgICAgICAgICAgYXJnX2lkLFxuICAgICAgICAgICAgICBFeHAuaXNfZGVmZXJyYWwoYXJnKSA/IGNvbG9yX2RlZmVycmVkIDogY29sb3Jfc3VwcGxpZWQsXG4gICAgICAgICAgICAgIG1hcHBpbmcsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IG1hcHBpbmcgPSBIYXozbGNvcmUuSWQuTWFwLnNpbmdsZXRvbih4X2lkLCBjb2xvcl9mbik7XG4gICAgICAgICAgbGV0IG1hcHBpbmcgPSBMaXN0LmZvbGRfbGVmdChhZGQsIG1hcHBpbmcsIGFyZ3MpO1xuICAgICAgICAgIGxldCBjb2xvcl9tYXAgPSAobWFwcGluZywgTGlzdC5sZW5ndGgoYXJncykgKyAxKTtcbiAgICAgICAgICAoW10sIChbXSwgY29sb3JfbWFwKSwgW10pO1xuICAgICAgICB9O1xuICAgICAgfCBJZihjb25kLCB0aGVuXywgZWxzZV8pID0+XG4gICAgICAgIGxldCBjb25kX2lkID0gTGlzdC5udGgoY29uZC5pZHMsIDApO1xuICAgICAgICBsZXQgdGhlbl9pZCA9IExpc3QubnRoKHRoZW5fLmlkcywgMCk7XG4gICAgICAgIGxldCBlbHNlX2lkID0gTGlzdC5udGgoZWxzZV8uaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1JZkV4cC5pZl9leHBfY29sb3JpbmdfaWRzKH5jb25kX2lkLCB+dGhlbl9pZCwgfmVsc2VfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbmRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRoZW5faWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsc2VfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIElmRXhwLmlmcyxcbiAgICAgICAgKTtcbiAgICAgIHwgU2VxKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBsZXQgZXhwMV9pZCA9IExpc3QubnRoKGxlZnQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGV4cDJfaWQgPSBMaXN0Lm50aChyaWdodC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPVNlcUV4cC5zZXFfZXhwX2NvbG9yaW5nX2lkcyh+ZXhwMV9pZCwgfmV4cDJfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAyX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBTZXFFeHAuc2VxcyxcbiAgICAgICAgKTtcbiAgICAgIHwgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgT25lKSwgcGF0fSksIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfcGF1c2UoXG4gICAgICAgICAgICB+cF9pZD1VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoRmlsdGVyKHthY3Q6IChTdGVwLCBBbGwpLCBwYXR9KSwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9kZWJ1ZyhcbiAgICAgICAgICAgIH5wX2lkPVVFeHAucmVwX2lkKHBhdCksXG4gICAgICAgICAgICB+Ym9keV9pZD1VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcihGaWx0ZXIoe2FjdDogKEV2YWwsIEFsbCksIHBhdH0pLCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX2V2YWwoXG4gICAgICAgICAgICB+cF9pZD1VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoRmlsdGVyKHthY3Q6IChFdmFsLCBPbmUpLCBwYXR9KSwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9oaWRlKFxuICAgICAgICAgICAgfnBfaWQ9VUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKF8pID0+IHNpbXBsZShcIkludGVybmFsIGV4cHJlc3Npb25cIilcbiAgICAgIHwgVGVzdChib2R5KSA9PlxuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1UZXN0RXhwLnRlc3RfZXhwX2NvbG9yaW5nX2lkcyh+Ym9keV9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUZXN0RXhwLnRlc3RzLFxuICAgICAgICApO1xuICAgICAgfCBQYXJlbnModGVybSkgPT4gZ2V0X21lc3NhZ2VfZXhwKHRlcm0udGVybSkgLy8gTm8gU3BlY2lhbCBtZXNzYWdlP1xuICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHRsX2lkID0gTGlzdC5udGgodGwuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1MaXN0RXhwLmNvbnNfZXhwX2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0Y29ucyxcbiAgICAgICAgKTtcbiAgICAgIHwgTGlzdENvbmNhdCh4cywgeXMpID0+XG4gICAgICAgIGxldCB4c19pZCA9IExpc3QubnRoKHhzLmlkcywgMCk7XG4gICAgICAgIGxldCB5c19pZCA9IExpc3QubnRoKHlzLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdEV4cC5jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyh+eHNfaWQsIH55c19pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhzX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh5c19pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0Y29uY2F0cyxcbiAgICAgICAgKTtcbiAgICAgIHwgVW5PcChvcCwgZXhwKSA9PlxuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIHwgQm9vbChOb3QpID0+XG4gICAgICAgICAgbGV0IGV4cF9pZCA9IExpc3QubnRoKGV4cC5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1PcEV4cC5ib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWRzKH5leHBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBPcEV4cC5ib29sX3VuX25vdCxcbiAgICAgICAgICApO1xuICAgICAgICB8IEludChNaW51cykgPT5cbiAgICAgICAgICBsZXQgZXhwX2lkID0gTGlzdC5udGgoZXhwLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPU9wRXhwLmludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaWRzKH5leHBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBPcEV4cC5pbnRfdW5fbWludXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBNZXRhKFVucXVvdGUpID0+XG4gICAgICAgICAgbWVzc2FnZV9zaW5nbGUoRmlsdGVyRXhwLnVucXVvdGUofnNlbF9pZD1VRXhwLnJlcF9pZChleHApKSlcbiAgICAgICAgfVxuICAgICAgfCBCaW5PcChvcCwgbGVmdCwgcmlnaHQpID0+XG4gICAgICAgIG9wZW4gT3BFeHA7XG4gICAgICAgIGxldCAoZ3JvdXAsIGNvbG9yaW5nX2lkcykgPVxuICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICB8IEludChQbHVzKSA9PiAoaW50X3BsdXMsIGludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTWludXMpID0+IChpbnRfbWludXMsIGludF9taW51c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KFRpbWVzKSA9PiAoaW50X3RpbWVzLCBpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChQb3dlcikgPT4gKGludF9wb3dlciwgaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoRGl2aWRlKSA9PiAoaW50X2RpdmlkZSwgaW50X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KExlc3NUaGFuKSA9PiAoaW50X2xlc3NfdGhhbiwgaW50X2x0X2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTGVzc1RoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGludF9sZXNzX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGludF9sdGVfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEludChHcmVhdGVyVGhhbikgPT4gKGludF9ncmVhdGVyX3RoYW4sIGludF9ndF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBpbnRfZ3JlYXRlcl90aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnQoRXF1YWxzKSA9PiAoaW50X2VxdWFsLCBpbnRfZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChOb3RFcXVhbHMpID0+IChpbnRfbm90X2VxdWFsLCBpbnRfbmVxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChQbHVzKSA9PiAoZmxvYXRfcGx1cywgZmxvYXRfcGx1c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTWludXMpID0+IChmbG9hdF9taW51cywgZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KFRpbWVzKSA9PiAoZmxvYXRfdGltZXMsIGZsb2F0X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChQb3dlcikgPT4gKGZsb2F0X3Bvd2VyLCBmbG9hdF9wb3dlcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoRGl2aWRlKSA9PiAoZmxvYXRfZGl2aWRlLCBmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KExlc3NUaGFuKSA9PiAoZmxvYXRfbGVzc190aGFuLCBmbG9hdF9sdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTGVzc1RoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGZsb2F0X2xlc3NfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgZmxvYXRfbHRlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChHcmVhdGVyVGhhbikgPT4gKFxuICAgICAgICAgICAgICBmbG9hdF9ncmVhdGVyX3RoYW4sXG4gICAgICAgICAgICAgIGZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgZmxvYXRfZ3JlYXRlcl90aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBmbG9hdF9ndGVfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEZsb2F0KEVxdWFscykgPT4gKGZsb2F0X2VxdWFsLCBmbG9hdF9lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTm90RXF1YWxzKSA9PiAoZmxvYXRfbm90X2VxdWFsLCBmbG9hdF9uZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEJvb2woQW5kKSA9PiAoYm9vbF9hbmQsIGJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBCb29sKE9yKSA9PiAoYm9vbF9vciwgYm9vbF9vcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgU3RyaW5nKEVxdWFscykgPT4gKHN0cmluZ19lcXVhbCwgc3RyX2VxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBTdHJpbmcoQ29uY2F0KSA9PiAoc3RyaW5nX2NvbmNhdCwgc3RyX2NvbmNhdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIH07XG4gICAgICAgIGxldCBsZWZ0X2lkID0gTGlzdC5udGgobGVmdC5pZHMsIDApO1xuICAgICAgICBsZXQgcmlnaHRfaWQgPSBMaXN0Lm50aChyaWdodC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+bGVmdF9pZCwgfnJpZ2h0X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcobGVmdF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocmlnaHRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICApO1xuICAgICAgfCBNYXRjaChzY3J1dCwgX3J1bGVzKSA9PlxuICAgICAgICBsZXQgc2NydXRfaWQgPSBMaXN0Lm50aChzY3J1dC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUNhc2VFeHAuY2FzZV9leHBfY29sb3JpbmdfaWRzKH5zY3J1dF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhzY3J1dF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgQ2FzZUV4cC5jYXNlLFxuICAgICAgICApO1xuICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUZXJtaW5hbEV4cC5jdHIodiksXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgZ2V0X21lc3NhZ2VfZXhwKHRlcm0udGVybSk7XG4gIHwgU29tZShJbmZvUGF0KHt0ZXJtLCBffSkpID0+XG4gICAgc3dpdGNoIChieXBhc3NfcGFyZW5zX3BhdCh0ZXJtKS50ZXJtKSB7XG4gICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZVBhdC5lbXB0eV9ob2xlKVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IGdldF9tZXNzYWdlKEhvbGVQYXQubXVsdGlfaG9sZSlcbiAgICB8IFdpbGQgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxQYXQud2lsZClcbiAgICB8IEludChpKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVpJWlcIiksIGksIGkpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmludGxpdChpKSxcbiAgICAgIClcbiAgICB8IEZsb2F0KGYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJWYlZlwiKSwgZiwgZiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuZmxvYXRsaXQoZiksXG4gICAgICApXG4gICAgfCBCb29sKGIpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJWIlYlwiKSwgYiwgYiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuYm9vbGxpdChiKSxcbiAgICAgIClcbiAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksIHMsIHMpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LnN0cmxpdChzKSxcbiAgICAgIClcbiAgICB8IFR1cGxlKFtdKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFBhdC50cml2KVxuICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICBnZXRfbWVzc2FnZShMaXN0UGF0Lmxpc3RuaWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0UGF0Lmxpc3RsaXQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgbGV0IGJhc2ljID0gZG9jID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdFBhdC5jb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZG9jLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoICh0bC50ZXJtKSB7XG4gICAgICB8IFBhdC5Db25zKGhkMiwgdGwyKSA9PlxuICAgICAgICBpZiAoTGlzdFBhdC5jb25zMl9wYXQuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExpc3RQYXQuY29uczIpKSB7XG4gICAgICAgICAgbGV0IGhkMl9pZCA9IExpc3QubnRoKGhkMi5pZHMsIDApO1xuICAgICAgICAgIGxldCB0bDJfaWQgPSBMaXN0Lm50aCh0bDIuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIExpc3RQYXQuY29uczJfcGF0X2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZnN0X2lkPWhkX2lkLFxuICAgICAgICAgICAgICAgIH5zbmRfaWQ9aGQyX2lkLFxuICAgICAgICAgICAgICAgIH50bF9pZD10bDJfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsMl9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgTGlzdFBhdC5jb25zMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKExpc3RQYXQuY29uczIpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoTGlzdFBhdC5jb25zKVxuICAgICAgfTtcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC52YXIodiksXG4gICAgICApXG4gICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgIGxldCBiYXNpYyA9IGdyb3VwID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgfCAyID0+XG4gICAgICAgIGlmIChUdXBsZVBhdC50dXBsZV9wYXRfc2l6ZTIuaWRcbiAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVBhdC50dXBsZTIpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBUdXBsZVBhdC50dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzKH5lbGVtMV9pZCwgfmVsZW0yX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlUGF0LnR1cGxlMik7XG4gICAgICAgIH1cbiAgICAgIHwgMyA9PlxuICAgICAgICBpZiAoVHVwbGVQYXQudHVwbGVfcGF0X3NpemUzLmlkXG4gICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVQYXQudHVwbGUzKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtM19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVQYXQudHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZWxlbTFfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0yX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtM19pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtM19pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVQYXQudHVwbGUzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVQYXQudHVwbGUzKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKFR1cGxlUGF0LnR1cGxlKVxuICAgICAgfTtcbiAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgbGV0IGNvbl9pZCA9IExpc3QubnRoKGNvbi5pZHMsIDApO1xuICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9QXBwUGF0LmFwX3BhdF9jb2xvcmluZ19pZHMofmNvbl9pZCwgfmFyZ19pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbl9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgQXBwUGF0LmFwLFxuICAgICAgKTtcbiAgICB8IENvbnN0cnVjdG9yKGNvbikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgY29uKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5jdHIoY29uKSxcbiAgICAgIClcbiAgICB8IENhc3QocGF0LCB0eXAsIF8pID0+XG4gICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICBsZXQgdHlwX2lkID0gTGlzdC5udGgodHlwLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1UeXBBbm5QYXQudHlwYW5uX3BhdF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfnR5cF9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHR5cF9pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgVHlwQW5uUGF0LnR5cGFubixcbiAgICAgICk7XG4gICAgfCBJbnZhbGlkKF8pID0+IHNpbXBsZShcIk5vdCBhIHZhbGlkIHBhdHRlcm5cIilcbiAgICB8IFBhcmVucyhfKSA9PlxuICAgICAgLy8gU2hvdWxkbid0IGJlIGhpdD9cbiAgICAgIGRlZmF1bHRcbiAgICB9XG4gIHwgU29tZShJbmZvVHlwKHt0ZXJtLCBffSBhcyB0eXBfaW5mbykpID0+XG4gICAgc3dpdGNoIChieXBhc3NfcGFyZW5zX3R5cCh0ZXJtKS50ZXJtKSB7XG4gICAgfCBVbmtub3duKFN5blN3aXRjaClcbiAgICB8IFVua25vd24oSW50ZXJuYWwpXG4gICAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSkgPT4gZ2V0X21lc3NhZ2UoSG9sZVR5cC5lbXB0eV9ob2xlKVxuICAgIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShfKSkpID0+IGdldF9tZXNzYWdlKEhvbGVUeXAubXVsdGlfaG9sZSlcbiAgICB8IEludCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5pbnQpXG4gICAgfCBGbG9hdCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5mbG9hdClcbiAgICB8IEJvb2wgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuYm9vbClcbiAgICB8IFN0cmluZyA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5zdHIpXG4gICAgfCBMaXN0KGVsZW0pID0+XG4gICAgICBsZXQgZWxlbV9pZCA9IExpc3QubnRoKGVsZW0uaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUxpc3RUeXAubGlzdF90eXBfY29sb3JpbmdfaWRzKH5lbGVtX2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW1faWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIExpc3RUeXAubGlzdCxcbiAgICAgICk7XG4gICAgfCBGb3JhbGwodHBhdCwgdHlwKSA9PlxuICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0cGF0LmlkcywgMCk7XG4gICAgICBsZXQgdGJvZHlfaWQgPSBMaXN0Lm50aCh0eXAuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUZvcmFsbFR5cC5mb3JhbGxfdHlwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfnRib2R5X2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRib2R5X2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBGb3JhbGxUeXAuZm9yYWxsLFxuICAgICAgKTtcbiAgICB8IFJlYyh0cGF0LCB0eXApID0+XG4gICAgICBsZXQgdHBhdF9pZCA9IExpc3QubnRoKHRwYXQuaWRzLCAwKTtcbiAgICAgIGxldCB0Ym9keV9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9UmVjVHlwLnJlY190eXBfY29sb3JpbmdfaWRzKH50cGF0X2lkLCB+dGJvZHlfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0cGF0X2lkKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGJvZHlfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIFJlY1R5cC5yZWNfLFxuICAgICAgKTtcbiAgICB8IEFycm93KGFyZywgcmVzdWx0KSA9PlxuICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgbGV0IHJlc3VsdF9pZCA9IExpc3QubnRoKHJlc3VsdC5pZHMsIDApO1xuICAgICAgbGV0IGJhc2ljID0gZG9jID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9QXJyb3dUeXAuYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyh+YXJnX2lkLCB+cmVzdWx0X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyZXN1bHRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAocmVzdWx0LnRlcm0pIHtcbiAgICAgIHwgVHlwLkFycm93KGFyZzIsIHJlc3VsdDIpID0+XG4gICAgICAgIGlmIChBcnJvd1R5cC5hcnJvdzNfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChBcnJvd1R5cC5hcnJvdzMpKSB7XG4gICAgICAgICAgbGV0IGFyZzJfaWQgPSBMaXN0Lm50aChhcmcyLmlkcywgMCk7XG4gICAgICAgICAgbGV0IHJlc3VsdDJfaWQgPSBMaXN0Lm50aChyZXN1bHQyLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBBcnJvd1R5cC5hcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+YXJnMV9pZD1hcmdfaWQsXG4gICAgICAgICAgICAgICAgfmFyZzJfaWQsXG4gICAgICAgICAgICAgICAgfnJlc3VsdF9pZD1yZXN1bHQyX2lkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmcyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHJlc3VsdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFycm93VHlwLmFycm93MyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKEFycm93VHlwLmFycm93Myk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhBcnJvd1R5cC5hcnJvdylcbiAgICAgIH07XG4gICAgfCBQcm9kKGVsZW1lbnRzKSA9PlxuICAgICAgbGV0IGJhc2ljID0gZ3JvdXAgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICB8IDAgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlMF90eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMCkpIHtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9W10sXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUobXNnID0+IG1zZyksXG4gICAgICAgICAgICBUdXBsZVR5cC50dXBsZTAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVR5cC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDIgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlMl90eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMikpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9VHVwbGVUeXAudHVwbGUyX3R5cF9jb2xvcmluZ19pZHMofmVsZW0xX2lkLCB+ZWxlbTJfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUyLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUyKTtcbiAgICAgICAgfVxuICAgICAgfCAzID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTNfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTMpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0zX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDIpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBUdXBsZVR5cC50dXBsZTNfdHlwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZWxlbTFfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0yX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtM19pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtM19pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUzKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKFR1cGxlVHlwLnR1cGxlKVxuICAgICAgfTtcbiAgICB8IFZhcihjKSB3aGVuIEluZm8udHlwX2lzX2NvbnN0cnVjdG9yX2V4cGVjdGVkKHR5cF9pbmZvKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoU3VtVHlwLnN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWZzKGMpKVxuICAgIHwgVmFyKHYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsVHlwLnZhcih2KSxcbiAgICAgIClcbiAgICB8IFN1bShfKSA9PiBnZXRfbWVzc2FnZShTdW1UeXAubGFiZWxsZWRfc3VtX3R5cHMpXG4gICAgfCBBcCh7dGVybTogVmFyKGMpLCBffSwgXykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFN1bVR5cC5zdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZnMoYykpXG4gICAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpID0+IHNpbXBsZShcIk5vdCBhIHR5cGUgb3IgdHlwZSBvcGVyYXRvclwiKVxuICAgIHwgQXAoXylcbiAgICB8IFBhcmVucyhfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBiZSBoaXQ/XG4gICAgfVxuICB8IFNvbWUoSW5mb1RQYXQoaW5mbykpID0+XG4gICAgc3dpdGNoIChpbmZvLnRlcm0udGVybSkge1xuICAgIHwgSW52YWxpZChfKSA9PiBzaW1wbGUoXCJUeXBlIG5hbWVzIG11c3QgYmVnaW4gd2l0aCBhIGNhcGl0YWwgbGV0dGVyXCIpXG4gICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZVRQYXQuZW1wdHlfaG9sZV90cGF0cylcbiAgICB8IE11bHRpSG9sZShfKSA9PiBnZXRfbWVzc2FnZShIb2xlVFBhdC5tdWx0aV9ob2xlX3RwYXRzKVxuICAgIHwgVmFyKHYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICksXG4gICAgICAgIFZhclRQYXQudmFyX3R5cF9wYXRzKHYpLFxuICAgICAgKVxuICAgIH1cbiAgfCBTb21lKFNlY29uZGFyeShzKSkgPT5cbiAgICBzd2l0Y2ggKHMuY2xzKSB7XG4gICAgfCBTZWNvbmRhcnkoV2hpdGVzcGFjZSkgPT4gc2ltcGxlKFwiQSBzZW1hbnRpYyB2b2lkLCBwZXJ2YWRpbmcgYnV0IGluZXJ0XCIpXG4gICAgfCBTZWNvbmRhcnkoQ29tbWVudCkgPT5cbiAgICAgIHNpbXBsZShcIkNvbW1lbnRzIGFyZSBpZ25vcmVkIGJ5IHN5c3RlbXMgYnV0IHRyZWFzdXJlZCBieSByZWFkZXJzXCIpXG4gICAgfCBfID0+IGZhaWx3aXRoKFwiRXhwbGFpblRoaXM6IFNlY29uZGFyeSBJbXBvc3NpYmxlXCIpXG4gICAgfVxuICB8IE5vbmUgPT4gZGVmYXVsdFxuICB9O1xufTtcblxubGV0IHNlY3Rpb24gPSAofnNlY3Rpb25fY2xzczogc3RyaW5nLCB+dGl0bGU6IHN0cmluZywgY29udGVudHM6IGxpc3QoTm9kZS50KSkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wic2VjdGlvblwiLCBzZWN0aW9uX2Nsc3NdKSxcbiAgICBbZGl2KH5hdHRyPWNsc3MoW1wic2VjdGlvbi10aXRsZVwiXSksIFt0ZXh0KHRpdGxlKV0pXSBAIGNvbnRlbnRzLFxuICApO1xuXG5sZXQgZ2V0X2NvbG9yX21hcCA9XG4gICAgKH5zZXR0aW5nczogU2V0dGluZ3MudCwgfmV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCwgaW5mbykgPT5cbiAgc3dpdGNoIChzZXR0aW5ncy5leHBsYWluVGhpcy5oaWdobGlnaHQpIHtcbiAgfCBBbGwgd2hlbiBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93ID0+XG4gICAgbGV0IChfLCAoXywgKGNvbG9yX21hcCwgXykpLCBfKSA9XG4gICAgICBnZXRfZG9jKH5kb2NzPWV4cGxhaW5UaGlzTW9kZWwsIGluZm8sIENvbG9yaW5ncyk7XG4gICAgU29tZShjb2xvcl9tYXApO1xuICB8IE9uZShpZCkgd2hlbiBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93ID0+XG4gICAgbGV0IChfLCAoXywgKGNvbG9yX21hcCwgXykpLCBfKSA9XG4gICAgICBnZXRfZG9jKH5kb2NzPWV4cGxhaW5UaGlzTW9kZWwsIGluZm8sIENvbG9yaW5ncyk7XG4gICAgU29tZShJZC5NYXAuZmlsdGVyKChpZCcsIF8pID0+IGlkID09IGlkJywgY29sb3JfbWFwKSk7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5leHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgICBpbmZvOiBvcHRpb24oSW5mby50KSxcbiAgICApID0+IHtcbiAgbGV0IChzeW5fZm9ybSwgKGV4cGxhbmF0aW9uLCBfKSwgZXhhbXBsZSkgPVxuICAgIGdldF9kb2MoXG4gICAgICB+ZG9jcz1leHBsYWluVGhpc01vZGVsLFxuICAgICAgaW5mbyxcbiAgICAgIE1lc3NhZ2VDb250ZW50KGluamVjdCwgdWlfc3RhdGUsIHNldHRpbmdzKSxcbiAgICApO1xuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5pZChcInNpZGUtYmFyXCIpLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJleHBsYWluLXRoaXNcIl0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9Y2xzcyhbXCJ0b3AtYmFyXCJdKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgV2lkZ2V0cy50b2dnbGUoXG4gICAgICAgICAgICAgICAgfnRvb2x0aXA9XCJUb2dnbGUgaGlnaGxpZ2h0aW5nXCIsXG4gICAgICAgICAgICAgICAgXCLwn5SGXCIsXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuaGlnaGxpZ2h0ID09IEFsbCxcbiAgICAgICAgICAgICAgICBfID0+XG4gICAgICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KFRvZ2dsZSkpKSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgY2xzcyhbXCJjbG9zZVwiXSksXG4gICAgICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PlxuICAgICAgICAgICAgICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIFt0ZXh0KFwieFwiKV0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCBbXG4gICAgICAgICAgc2VjdGlvbihcbiAgICAgICAgICAgIH5zZWN0aW9uX2Nsc3M9XCJzeW50YWN0aWMtZm9ybVwiLFxuICAgICAgICAgICAgfnRpdGxlPVxuICAgICAgICAgICAgICBzd2l0Y2ggKGluZm8pIHtcbiAgICAgICAgICAgICAgfCBOb25lID0+IFwiV2hpdGVzcGFjZSBvciBDb21tZW50XCJcbiAgICAgICAgICAgICAgfCBTb21lKGluZm8pID0+IEluZm8uY2xzX29mKGluZm8pIHw+IENscy5zaG93XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzeW5fZm9ybSBAIGV4cGxhbmF0aW9uLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCAoXG4gICAgICAgICAgZXhhbXBsZSA9PSBbXVxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBbc2VjdGlvbih+c2VjdGlvbl9jbHNzPVwiZXhhbXBsZXNcIiwgfnRpdGxlPVwiRXhhbXBsZXNcIiwgZXhhbXBsZSldXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgdmlldyA9IGlkID0+IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmlkKGlkKSwgW05vZGUudGV4dChcIlhcIildKTtcbiIsImxldCBpc19tYWMgPSByZWYoZmFsc2UpO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBkaXIgPVxuICB8IEtleVVwXG4gIHwgS2V5RG93bjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBrZXkgPVxuICB8IEQoc3RyaW5nKVxuICB8IFUoc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBzeXMgPVxuICB8IE1hY1xuICB8IFBDO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIGhlbGQgPVxuICB8IERvd25cbiAgfCBVcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBrZXksXG4gIHN5cyxcbiAgc2hpZnQ6IGhlbGQsXG4gIG1ldGE6IGhlbGQsXG4gIGN0cmw6IGhlbGQsXG4gIGFsdDogaGVsZCxcbn07XG5cbmxldCBrZXlfb2YgPSAoZGlyOiBkaXIsIGV2dCk6IGtleSA9PiB7XG4gIGxldCBrZXkgPSBKc1V0aWwuZ2V0X2tleShldnQpO1xuICBzd2l0Y2ggKGRpcikge1xuICB8IEtleVVwID0+IFUoa2V5KVxuICB8IEtleURvd24gPT4gRChrZXkpXG4gIH07XG59O1xuXG5sZXQgdG9faGVsZDogYm9vbCA9PiBoZWxkID0gYiA9PiBiID8gRG93biA6IFVwO1xuXG5sZXQgbWsgPSAoZGlyLCBldnQpOiB0ID0+IHtcbiAga2V5OiBrZXlfb2YoZGlyLCBldnQpLFxuICBzeXM6IE9zLmlzX21hY14gPyBNYWMgOiBQQyxcbiAgc2hpZnQ6IHRvX2hlbGQoSnNVdGlsLnNoaWZ0X2hlbGQoZXZ0KSksXG4gIG1ldGE6IHRvX2hlbGQoSnNVdGlsLm1ldGFfaGVsZChldnQpKSxcbiAgY3RybDogdG9faGVsZChKc1V0aWwuY3RybF9oZWxkKGV2dCkpLFxuICBhbHQ6IHRvX2hlbGQoSnNVdGlsLmFsdF9oZWxkKGV2dCkpLFxufTtcblxubGV0IG1vZGlmaWVyX3N0cmluZyA9IChoOiBoZWxkLCBtKTogc3RyaW5nID0+IGggPT0gRG93biA/IFwiICsgXCIgKysgbSA6IFwiXCI7XG5cbmxldCBtb2RpZmllcnNfc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBtb2RpZmllcl9zdHJpbmcoa2V5LnNoaWZ0LCBcIlNISUZUXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkubWV0YSwgXCJNRVRBXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkuY3RybCwgXCJDVFJMXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkuYWx0LCBcIkFMVFwiKTtcblxubGV0IGtleV9kaXJfc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGtleS5rZXkpIHtcbiAgfCBVKGtleSkgPT4gXCIoVVApOiBcIiArKyBrZXlcbiAgfCBEKGtleSkgPT4gXCIoRE4pOiBcIiArKyBrZXlcbiAgfTtcblxubGV0IHRvX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgXCJLRVlcIiArKyBrZXlfZGlyX3N0cmluZyhrZXkpICsrIG1vZGlmaWVyc19zdHJpbmcoa2V5KTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgaXNfZGlnaXQgPSBzID0+IFJlLlN0ci4oc3RyaW5nX21hdGNoKHJlZ2V4cChcIl5bMC05XSRcIiksIHMsIDApKTtcbmxldCBpc19mX2tleSA9IHMgPT4gUmUuU3RyLihzdHJpbmdfbWF0Y2gocmVnZXhwKFwiXkZbMC05XVswLTldKiRcIiksIHMsIDApKTtcblxubGV0IGhhbmRsZV9rZXlfZXZlbnQgPSAoazogS2V5LnQpOiBvcHRpb24oVXBkYXRlLnQpID0+IHtcbiAgbGV0IG5vdyA9IChhOiBBY3Rpb24udCk6IG9wdGlvbihVcGRhdGVBY3Rpb24udCkgPT5cbiAgICBTb21lKFBlcmZvcm1BY3Rpb24oYSkpO1xuICBzd2l0Y2ggKGspIHtcbiAgfCB7a2V5OiBVKGtleSksIF99ID0+XG4gICAgLyogS2V1LVVQcEV2ZW50czpcbiAgICAgICBOT1RFOiBSZW1lbWJlciB0aGF0IHNpbmNlIHRoZXJlIGlzIGEga2V5dXAgZm9yIGV2ZXJ5XG4gICAgICAga2V5ZG93biwgbWFraW5nIGFuIHVwZGF0ZSBoZXJlIG1heSB0cmlnZ2VyIGFuIGVudGlyZVxuICAgICAgIGV4dHJhIHJlZHJhdywgY29udGluZ2VudCBvbiBtb2RlbC5jdXRvZmYgKi9cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJBbHRcIiA9PiBTb21lKFNldE1ldGEoU2hvd0JhY2twYWNrVGFyZ2V0cyhmYWxzZSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBfLCBzaGlmdDogRG93biwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IFVwfVxuICAgICAgd2hlbiBpc19mX2tleShrZXkpID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiRjdcIiA9PiBTb21lKEJlbmNobWFyayhTdGFydCkpXG4gICAgfCBfID0+IFNvbWUoRGVidWdDb25zb2xlKGtleSkpXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBfLCBzaGlmdCwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoc2hpZnQsIGtleSkge1xuICAgIHwgKFVwLCBcIkFycm93TGVmdFwiKSA9PiBub3coTW92ZShMb2NhbChMZWZ0KEJ5Q2hhcikpKSlcbiAgICB8IChVcCwgXCJBcnJvd1JpZ2h0XCIpID0+IG5vdyhNb3ZlKExvY2FsKFJpZ2h0KEJ5Q2hhcikpKSlcbiAgICB8IChVcCwgXCJBcnJvd1VwXCIpID0+IG5vdyhNb3ZlKExvY2FsKFVwKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dEb3duXCIpID0+IG5vdyhNb3ZlKExvY2FsKERvd24pKSlcbiAgICB8IChVcCwgXCJIb21lXCIpID0+IG5vdyhNb3ZlKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgKFVwLCBcIkVuZFwiKSA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCAoVXAsIFwiQmFja3NwYWNlXCIpID0+IG5vdyhEZXN0cnVjdChMZWZ0KSlcbiAgICB8IChVcCwgXCJEZWxldGVcIikgPT4gbm93KERlc3RydWN0KFJpZ2h0KSlcbiAgICB8IChVcCwgXCJFc2NhcGVcIikgPT4gbm93KFVuc2VsZWN0KE5vbmUpKVxuICAgIHwgKFVwLCBcIlRhYlwiKSA9PiBTb21lKFRBQilcbiAgICB8IChVcCwgXCJGMTJcIikgPT4gbm93KEp1bXAoQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcikpXG4gICAgfCAoRG93biwgXCJUYWJcIikgPT4gU29tZShNb3ZlVG9OZXh0SG9sZShMZWZ0KSlcbiAgICB8IChEb3duLCBcIkFycm93TGVmdFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiQXJyb3dSaWdodFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkFycm93VXBcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoVXApKSkpXG4gICAgfCAoRG93biwgXCJBcnJvd0Rvd25cIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoRG93bikpKSlcbiAgICB8IChEb3duLCBcIkhvbWVcIikgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiRW5kXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCAoXywgXCJFbnRlclwiKSA9PiBub3coSW5zZXJ0KEZvcm0ubGluZWJyZWFrKSlcbiAgICB8IF8gd2hlbiBTdHJpbmcubGVuZ3RoKGtleSkgPT0gMSA9PlxuICAgICAgLyogTm90ZTogbGVuZ3RoPT0xIHByZXZlbnQgc3BlY2lhbHMgbGlrZVxuICAgICAgICogU0hJRlQgZnJvbSBiZWluZyBjYXB0dXJlZCBoZXJlICovXG4gICAgICBub3coSW5zZXJ0KGtleSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IERvd24sIG1ldGE6IERvd24sIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIlpcIlxuICAgIHwgXCJ6XCIgPT4gU29tZShSZWRvKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1VwXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShVcCkpKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShEb3duKSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBQQywgc2hpZnQ6IERvd24sIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIlpcIlxuICAgIHwgXCJ6XCIgPT4gU29tZShSZWRvKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93VXBcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChVcCkpKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoRG93bikpKSlcbiAgICB8IFwiSG9tZVwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoVXApKSkpXG4gICAgfCBcIkVuZFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoRG93bikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogVXAsIG1ldGE6IERvd24sIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcInpcIiA9PiBTb21lKFVuZG8pXG4gICAgfCBcImRcIiA9PiBub3coU2VsZWN0KFRlcm0oQ3VycmVudCkpKVxuICAgIHwgXCJwXCIgPT4gU29tZShQZXJmb3JtQWN0aW9uKFBpY2tfdXApKVxuICAgIHwgXCJhXCIgPT4gbm93KFNlbGVjdChBbGwpKVxuICAgIHwgXCJrXCIgPT4gU29tZShSZXBhcnNlQ3VycmVudEVkaXRvcilcbiAgICB8IFwiL1wiID0+IFNvbWUoQXNzaXN0YW50KFByb21wdChUeURpKSkpXG4gICAgfCBfIHdoZW4gaXNfZGlnaXQoa2V5KSA9PiBTb21lKFN3aXRjaFNjcmF0Y2hTbGlkZShpbnRfb2Zfc3RyaW5nKGtleSkpKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dVcFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoVXApKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KE1vdmUoRXh0cmVtZShEb3duKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IFBDLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcInpcIiA9PiBTb21lKFVuZG8pXG4gICAgfCBcImRcIiA9PiBub3coU2VsZWN0KFRlcm0oQ3VycmVudCkpKVxuICAgIHwgXCJwXCIgPT4gU29tZShQZXJmb3JtQWN0aW9uKFBpY2tfdXApKVxuICAgIHwgXCJhXCIgPT4gbm93KFNlbGVjdChBbGwpKVxuICAgIHwgXCJrXCIgPT4gU29tZShSZXBhcnNlQ3VycmVudEVkaXRvcilcbiAgICB8IFwiL1wiID0+IFNvbWUoQXNzaXN0YW50KFByb21wdChUeURpKSkpXG4gICAgfCBfIHdoZW4gaXNfZGlnaXQoa2V5KSA9PiBTb21lKFN3aXRjaFNjcmF0Y2hTbGlkZShpbnRfb2Zfc3RyaW5nKGtleSkpKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coTW92ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coTW92ZShMb2NhbChSaWdodChCeVRva2VuKSkpKVxuICAgIHwgXCJIb21lXCIgPT4gbm93KE1vdmUoRXh0cmVtZShVcCkpKVxuICAgIHwgXCJFbmRcIiA9PiBub3coTW92ZShFeHRyZW1lKERvd24pKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcImFcIiA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiZVwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5cywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogVXAsIGFsdDogRG93bn0gPT5cbiAgICBzd2l0Y2ggKHN5cywga2V5KSB7XG4gICAgfCAoXywgXCJBcnJvd0xlZnRcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KExlZnQoQnlUb2tlbikpKVxuICAgIHwgKF8sIFwiQXJyb3dSaWdodFwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoUmlnaHQoQnlUb2tlbikpKVxuICAgIHwgKF8sIFwiQWx0XCIpID0+IFNvbWUoU2V0TWV0YShTaG93QmFja3BhY2tUYXJnZXRzKHRydWUpKSlcbiAgICB8IChfLCBcIkFycm93VXBcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KFVwKSlcbiAgICB8IChfLCBcIkFycm93RG93blwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoRG93bikpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIFdpZGdldHM7XG5cbmxldCBleHBvcnRfcGVyc2lzdGVudF9kYXRhID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhKSA9PlxuICBidXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3Byb3V0LFxuICAgIF8gPT4gaW5qZWN0KEV4cG9ydFBlcnNpc3RlbnREYXRhKSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBBbGwgUGVyc2lzdGVudCBEYXRhXCIsXG4gICk7XG5cbmxldCByZXNldF9oYXplbCA9XG4gIGJ1dHRvbihcbiAgICBJY29ucy5ib21iLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGNvbmZpcm1lZCA9XG4gICAgICAgIEpzVXRpbC5jb25maXJtKFxuICAgICAgICAgIFwiQXJlIHlvdSBTVVJFIHlvdSB3YW50IHRvIHJlc2V0IEhhemVsIHRvIGl0cyBpbml0aWFsIHN0YXRlPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlIHRoYXQgeW91IGhhdmUgd3JpdHRlbiwgYW5kIGNvdXJzZSBzdGFmZiBoYXZlIG5vIHdheSB0byByZXN0b3JlIGl0IVwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBKc1V0aWwuY2xlYXJfbG9jYWxzdG9yZSgpO1xuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbiMjcmVsb2FkO1xuICAgICAgfTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiQ2xlYXIgTG9jYWwgU3RvcmFnZSBhbmQgUmVsb2FkIChMT1NFIEFMTCBEQVRBKVwiLFxuICApO1xuXG5sZXQgcmVwYXJzZSA9ICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSkgPT5cbiAgYnV0dG9uKFxuICAgIEljb25zLmJhY2twYWNrLFxuICAgIF8gPT4gaW5qZWN0KFJlcGFyc2VDdXJyZW50RWRpdG9yKSxcbiAgICB+dG9vbHRpcD1cIlJlcGFyc2UgQ3VycmVudCBFZGl0b3JcIixcbiAgKTtcblxubGV0IHNldHRpbmdzX21lbnUgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3MgYXNcbiAgICAgICAge1xuICAgICAgICAgIGNvcmU6IHtldmFsdWF0aW9uLCBffSBhcyBjb3JlLFxuICAgICAgICAgIGJlbmNobWFyayxcbiAgICAgICAgICBzZWNvbmRhcnlfaWNvbnMsXG4gICAgICAgICAgZXhwbGFpblRoaXMsXG4gICAgICAgICAgXyxcbiAgICAgICAgfTogU2V0dGluZ3MudCxcbiAgICApID0+IHtcbiAgbGV0IHRvZ2dsZSA9IChpY29uLCB0b29sdGlwLCBib29sLCBzZXR0aW5nKSA9PlxuICAgIHRvZ2dsZV9uYW1lZChpY29uLCB+dG9vbHRpcCwgYm9vbCwgXyA9PlxuICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoc2V0dGluZykpXG4gICAgKTtcbiAgW1xuICAgIHRvZ2dsZShcIs+EXCIsIFwiVG9nZ2xlIFN0YXRpY3NcIiwgY29yZS5zdGF0aWNzLCBTdGF0aWNzKSxcbiAgICB0b2dnbGUoXCLih7JcIiwgXCJUb2dnbGUgQ29tcGxldGlvblwiLCBjb3JlLmFzc2lzdCwgQXNzaXN0KSxcbiAgICB0b2dnbGUoXCLihrVcIiwgXCJTaG93IFdoaXRlc3BhY2VcIiwgc2Vjb25kYXJ5X2ljb25zLCBTZWNvbmRhcnlJY29ucyksXG4gICAgdG9nZ2xlKFwi4pyTXCIsIFwiUHJpbnQgQmVuY2htYXJrc1wiLCBiZW5jaG1hcmssIEJlbmNobWFyayksXG4gICAgdG9nZ2xlKFwi8J2bv1wiLCBcIlRvZ2dsZSBEeW5hbWljc1wiLCBjb3JlLmR5bmFtaWNzLCBEeW5hbWljcyksXG4gICAgdG9nZ2xlKFwi8J2RklwiLCBcIlNob3cgRWxhYm9yYXRpb25cIiwgY29yZS5lbGFib3JhdGUsIEVsYWJvcmF0ZSksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLOu1wiLFxuICAgICAgXCJTaG93IEZ1bmN0aW9uIEJvZGllc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2ZuX2JvZGllcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwifFwiLFxuICAgICAgXCJTaG93IENhc2UgQ2xhdXNlc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwiZlwiLFxuICAgICAgXCJTaG93IGZpeHBvaW50c1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2ZpeHBvaW50cyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZpeHBvaW50cyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgIFwiU2hvdyBjYXN0c1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2Nhc3RzLFxuICAgICAgRXZhbHVhdGlvbihTaG93Q2FzdHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn5SNXCIsXG4gICAgICBcIlNob3cgTG9va3VwIFN0ZXBzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfbG9va3VwX3N0ZXBzLFxuICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIuKPr++4j1wiLFxuICAgICAgXCJTaG93IFN0ZXBwZXIgRmlsdGVyc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZpbHRlcnMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn6SrXCIsXG4gICAgICBcIlNob3cgSGlkZGVuIFN0ZXBzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfaGlkZGVuX3N0ZXBzLFxuICAgICAgRXZhbHVhdGlvbihTaG93SGlkZGVuU3RlcHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCI/XCIsXG4gICAgICBcIlNob3cgRG9jcyBTaWRlYmFyXCIsXG4gICAgICBleHBsYWluVGhpcy5zaG93LFxuICAgICAgRXhwbGFpblRoaXMoVG9nZ2xlU2hvdyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIvCfkY1cIixcbiAgICAgIFwiU2hvdyBEb2NzIEZlZWRiYWNrXCIsXG4gICAgICBleHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgICAgRXhwbGFpblRoaXMoVG9nZ2xlU2hvd0ZlZWRiYWNrKSxcbiAgICApLFxuICBdO1xufTtcblxubGV0IGV4cG9ydF9tZW51ID0gKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgZWRpdG9yczogRWRpdG9ycy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKHNsaWRlX2lkeCwgc2xpZGVzKSA9PlxuICAgIGxldCBzdGF0ZSA9IExpc3QubnRoKHNsaWRlcywgc2xpZGVfaWR4KTtcbiAgICBbU2NyYXRjaE1vZGUuZXhwb3J0X2J1dHRvbihzdGF0ZSldO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIGxldCBzdGF0ZSA9IExpc3QuYXNzb2MobmFtZSwgc2xpZGVzKTtcbiAgICBbU2NyYXRjaE1vZGUuZXhwb3J0X2J1dHRvbihzdGF0ZSldO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgd2hlbiBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPT4gW1xuICAgICAgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSh+aW5qZWN0KSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5leHBvcnRfc3VibWlzc2lvbih+c2V0dGluZ3MpLFxuICAgICAgRXhlcmNpc2VNb2RlLmluc3RydWN0b3JfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX2dyYWRpbmdfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICBdXG4gIHwgRXhlcmNpc2VzKF8pID0+IFtFeGVyY2lzZU1vZGUuZXhwb3J0X3N1Ym1pc3Npb24ofnNldHRpbmdzKV1cbiAgfTtcblxubGV0IGltcG9ydF9tZW51ID0gKH5pbmplY3QsIGVkaXRvcnM6IEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gW1xuICAgICAgU2NyYXRjaE1vZGUuaW1wb3J0X2J1dHRvbihpbmplY3QpLFxuICAgICAgU2NyYXRjaE1vZGUucmVzZXRfYnV0dG9uKGluamVjdCksXG4gICAgXVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBbXG4gICAgICBFeGVyY2lzZU1vZGUuaW1wb3J0X3N1Ym1pc3Npb24ofmluamVjdCksXG4gICAgICBFeGVyY2lzZU1vZGUucmVzZXRfYnV0dG9uKGluamVjdCksXG4gICAgXVxuICB9O1xuXG5sZXQgc3VibWVudSA9ICh+dG9vbHRpcCwgfmljb24sIG1lbnUpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRvcC1tZW51LWl0ZW1cIl0pLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcInN1Ym1lbnUtaWNvblwiXSksIEF0dHIudGl0bGUodG9vbHRpcCldKSxcbiAgICAgICAgW2Rpdih+YXR0cj1jbHNzKFtcImljb25cIl0pLCBbaWNvbl0pXSxcbiAgICAgICksXG4gICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzdWJtZW51XCJdKSwgbWVudSksXG4gICAgXSxcbiAgKTtcblxubGV0IHZpZXcgPVxuICAgICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCB+ZWRpdG9yczogRWRpdG9ycy50KSA9PiBbXG4gIGEofmF0dHI9Y2xzcyhbXCJudXQtaWNvblwiXSksIFtJY29ucy5oYXplbG51dF0pLFxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJudXQtbWVudVwiXSksXG4gICAgW1xuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJTZXR0aW5nc1wiLFxuICAgICAgICB+aWNvbj1JY29ucy5nZWFyLFxuICAgICAgICBzZXR0aW5nc19tZW51KH5pbmplY3QsIH5zZXR0aW5ncyksXG4gICAgICApLFxuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJFeHBvcnRcIixcbiAgICAgICAgfmljb249SWNvbnMuZXhwb3J0LFxuICAgICAgICBleHBvcnRfbWVudSh+aW5qZWN0LCB+c2V0dGluZ3MsIGVkaXRvcnMpLFxuICAgICAgKSxcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiSW1wb3J0XCIsXG4gICAgICAgIH5pY29uPUljb25zLmltcG9ydCxcbiAgICAgICAgaW1wb3J0X21lbnUofmluamVjdCwgZWRpdG9ycyksXG4gICAgICApLFxuICAgICAgcmVwYXJzZSh+aW5qZWN0KSxcbiAgICAgIHJlc2V0X2hhemVsLFxuICAgICAgbGluayhcbiAgICAgICAgSWNvbnMuZ2l0aHViLFxuICAgICAgICBcImh0dHBzOi8vZ2l0aHViLmNvbS9oYXplbGdyb3ZlL2hhemVsXCIsXG4gICAgICAgIH50b29sdGlwPVwiSGF6ZWwgb24gR2l0SHViXCIsXG4gICAgICApLFxuICAgICAgbGluayhJY29ucy5pbmZvLCBcImh0dHBzOi8vaGF6ZWwub3JnXCIsIH50b29sdGlwPVwiSGF6ZWwgSG9tZXBhZ2VcIiksXG4gICAgXSxcbiAgKSxcbl07XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xub3BlbiBOb2RlO1xuXG5sZXQgaGFuZGxlcnMgPSAofmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksIG1vZGVsKSA9PiB7XG4gIGxldCBnZXRfc2VsZWN0aW9uID0gKG1vZGVsOiBNb2RlbC50KTogb3B0aW9uKHN0cmluZykgPT4ge1xuICAgIGxldCogc2VsZWN0aW9uID0gbW9kZWwudWlfc3RhdGUuYWN0aXZlX2VkaXRvcjtcbiAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgbW9kZWwuZWRpdG9ycywgbW9kZWwucmVzdWx0cylcbiAgICB8PiBPcHRpb24ubWFwKFByaW50ZXIudG9fc3RyaW5nX3NlbGVjdGlvbik7XG4gIH07XG4gIGxldCBrZXlfaGFuZGxlciA9XG4gICAgICAofmluamVjdCwgfmRpcjogS2V5LmRpciwgZXZ0OiBKcy50KERvbV9odG1sLmtleWJvYXJkRXZlbnQpKVxuICAgICAgOiBFZmZlY3QudCh1bml0KSA9PlxuICAgIEVmZmVjdC4oXG4gICAgICBzd2l0Y2ggKEtleWJvYXJkLmhhbmRsZV9rZXlfZXZlbnQoS2V5Lm1rKGRpciwgZXZ0KSkpIHtcbiAgICAgIHwgTm9uZSA9PiBJZ25vcmVcbiAgICAgIHwgU29tZShhY3Rpb24pID0+XG4gICAgICAgIE1hbnkoW1ByZXZlbnRfZGVmYXVsdCwgU3RvcF9wcm9wYWdhdGlvbiwgaW5qZWN0KGFjdGlvbildKVxuICAgICAgfVxuICAgICk7XG4gIFtcbiAgICBBdHRyLm9uX2tleXByZXNzKF8gPT4gRWZmZWN0LlByZXZlbnRfZGVmYXVsdCksXG4gICAgQXR0ci5vbl9rZXl1cChrZXlfaGFuZGxlcih+aW5qZWN0LCB+ZGlyPUtleVVwKSksXG4gICAgQXR0ci5vbl9rZXlkb3duKGtleV9oYW5kbGVyKH5pbmplY3QsIH5kaXI9S2V5RG93bikpLFxuICAgIC8qIHNhZmV0eSBoYW5kbGVyIGluIGNhc2UgbW91c2Vkb3duIG92ZXJsYXkgZG9lc24ndCBjYXRjaCBpdCAqL1xuICAgIEF0dHIub25fbW91c2V1cChfID0+IGluamVjdChTZXRNZXRhKE1vdXNldXApKSksXG4gICAgQXR0ci5vbl9ibHVyKF8gPT4ge1xuICAgICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gICAgICBFZmZlY3QuSWdub3JlO1xuICAgIH0pLFxuICAgIEF0dHIub25fZm9jdXMoXyA9PiB7XG4gICAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcbiAgICAgIEVmZmVjdC5JZ25vcmU7XG4gICAgfSksXG4gICAgQXR0ci5vbl9wYXN0ZShldnQgPT4ge1xuICAgICAgbGV0IHBhc3RlZF90ZXh0ID1cbiAgICAgICAgSnMudG9fc3RyaW5nKGV2dCMjLmNsaXBib2FyZERhdGEjI2dldERhdGEoSnMuc3RyaW5nKFwidGV4dFwiKSkpXG4gICAgICAgIHw+IFN0ci5nbG9iYWxfcmVwbGFjZShTdHIucmVnZXhwKFwiXFxuWyBdKlwiKSwgXCJcXG5cIik7XG4gICAgICBEb20ucHJldmVudERlZmF1bHQoZXZ0KTtcbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihQYXN0ZShwYXN0ZWRfdGV4dCkpKTtcbiAgICB9KSxcbiAgXVxuICBAIChcbiAgICBzd2l0Y2ggKGdldF9zZWxlY3Rpb24obW9kZWwpKSB7XG4gICAgfCBOb25lID0+IFtdXG4gICAgfCBTb21lKHNlbGVjdGlvbikgPT4gW1xuICAgICAgICBBdHRyLm9uX2NvcHkoXyA9PiB7XG4gICAgICAgICAgSnNVdGlsLmNvcHkoc2VsZWN0aW9uKTtcbiAgICAgICAgICBFZmZlY3QuSWdub3JlO1xuICAgICAgICB9KSxcbiAgICAgICAgQXR0ci5vbl9jdXQoXyA9PiB7XG4gICAgICAgICAgSnNVdGlsLmNvcHkoc2VsZWN0aW9uKTtcbiAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oRGVzdHJ1Y3QoTGVmdCkpKTtcbiAgICAgICAgfSksXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxubGV0IG1haW5fdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICB7c2V0dGluZ3MsIGVkaXRvcnMsIGV4cGxhaW5UaGlzTW9kZWwsIHJlc3VsdHMsIHN0YXRpY3MsIHVpX3N0YXRlLCBffTogTW9kZWwudCxcbiAgICApID0+IHtcbiAgbGV0IF8gPVxuICAgIHN3aXRjaCAodWlfc3RhdGUuYWN0aXZlX2VkaXRvcikge1xuICAgIHwgU29tZShhZSkgPT4gcHJpbnRfZW5kbGluZShcIlNFTEVDVEVEOiBcIiArKyBFZGl0b3JzLlNlbGVjdGlvbi5zaG93KGFlKSlcbiAgICB8IE5vbmUgPT4gcHJpbnRfZW5kbGluZShcIk5PIEFDVElWRSBFRElUT1JcIilcbiAgICB9O1xuICBsZXQgY3Vyc29yX2luZm8gPVxuICAgIEVkaXRvcnMuZ2V0X2N1cnNvcl9pbmZvKFxuICAgICAgfnNlbGVjdGlvbj11aV9zdGF0ZS5hY3RpdmVfZWRpdG9yLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgZWRpdG9ycyxcbiAgICAgIHJlc3VsdHMsXG4gICAgICBzdGF0aWNzLFxuICAgICk7XG4gIGxldCB0b3BfYmFyID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmlkKFwidG9wLWJhclwiKSxcbiAgICAgIE51dE1lbnUudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIH5lZGl0b3JzKVxuICAgICAgQCBbZGl2KH5hdHRyPUF0dHIuaWQoXCJ0aXRsZVwiKSwgW3RleHQoXCJoYXplbFwiKV0pXVxuICAgICAgQCBbRWRpdG9yTW9kZVZpZXcudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIH5lZGl0b3JzKV0sXG4gICAgKTtcbiAgbGV0IGJvdHRvbV9iYXIgPSBDdXJzb3JJbnNwZWN0b3Iudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGN1cnNvcl9pbmZvKTtcbiAgbGV0IHNpZGViYXIgPVxuICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3cgJiYgc2V0dGluZ3MuY29yZS5zdGF0aWNzXG4gICAgICA/IEV4cGxhaW5UaGlzLnZpZXcoXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5leHBsYWluVGhpc01vZGVsLFxuICAgICAgICAgIGN1cnNvcl9pbmZvLFxuICAgICAgICApXG4gICAgICA6IGRpdihbXSk7XG4gIGxldCBoaWdobGlnaHRzID1cbiAgICBFeHBsYWluVGhpcy5nZXRfY29sb3JfbWFwKH5zZXR0aW5ncywgfmV4cGxhaW5UaGlzTW9kZWwsIGN1cnNvcl9pbmZvKTtcbiAgbGV0IGVkaXRvcnNfdmlldyA9XG4gICAgc3dpdGNoIChlZGl0b3JzKSB7XG4gICAgfCBTY3JhdGNoKGlkeCwgc3MpID0+XG4gICAgICBsZXQgZWRpdG9yID0gTGlzdC5udGgoc3MsIGlkeCk7XG4gICAgICBsZXQgcmVzdWx0X2tleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgICAgbGV0IHN0YXRpY3MgPSBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCByZXN1bHRfa2V5KTtcbiAgICAgIGxldCBzZWxlY3RlZCA9XG4gICAgICAgIHN3aXRjaCAodWlfc3RhdGUuYWN0aXZlX2VkaXRvcikge1xuICAgICAgICB8IFNvbWUoRWRpdG9ycy5TZWxlY3Rpb24uU2NyYXRjaChpKSkgPT4gU29tZShpKVxuICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICB9O1xuICAgICAgU2NyYXRjaE1vZGUudmlldyhcbiAgICAgICAgfnNlbGVjdD1cbiAgICAgICAgICBzID0+XG4gICAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLk1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uU2NyYXRjaChzKSkpLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5yZXN1bHRzLFxuICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIH5zZWxlY3RlZCxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgKTtcbiAgICB8IERvY3VtZW50YXRpb24obmFtZSwgc3MpID0+XG4gICAgICBsZXQgZWRpdG9yID0gTGlzdC5hc3NvYyhuYW1lLCBzcyk7XG4gICAgICBsZXQgcmVzdWx0X2tleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICAgIGxldCBpbmZvID1cbiAgICAgICAgU2xpZGVDb250ZW50LmdldF9jb250ZW50KGVkaXRvcnMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoaSA9PiBkaXYofmF0dHI9QXR0ci5pZChcInNsaWRlXCIpLCBbaV0pKVxuICAgICAgICB8PiBPcHRpb24udG9fbGlzdDtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywgcmVzdWx0X2tleSk7XG4gICAgICBsZXQgc2VsZWN0ZWQgPVxuICAgICAgICBzd2l0Y2ggKHVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IpIHtcbiAgICAgICAgfCBTb21lKEVkaXRvcnMuU2VsZWN0aW9uLkRvY3VtZW50YXRpb24oaSkpID0+IFNvbWUoaSlcbiAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIGluZm9cbiAgICAgIEAgU2NyYXRjaE1vZGUudmlldyhcbiAgICAgICAgICB+c2VsZWN0PVxuICAgICAgICAgICAgcyA9PlxuICAgICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLk1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uRG9jdW1lbnRhdGlvbihzKSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgICAgIH5yZXN1bHRzLFxuICAgICAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgICAgIH5zdGF0aWNzLFxuICAgICAgICAgIH5zZWxlY3RlZCxcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICk7XG4gICAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgICBsZXQgc2VsZWN0aW9uID1cbiAgICAgICAgc3dpdGNoICh1aV9zdGF0ZS5hY3RpdmVfZWRpdG9yKSB7XG4gICAgICAgIHwgU29tZShFZGl0b3JzLlNlbGVjdGlvbi5FeGVyY2lzZXMocG9zLCBzZWwpKSA9PiBTb21lKChwb3MsIHNlbCkpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG4gICAgICBFeGVyY2lzZU1vZGUudmlldyhcbiAgICAgICAgfnNlbGVjdD1cbiAgICAgICAgICAoKHBvcywgc2VsKSkgPT5cbiAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLk1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uRXhlcmNpc2VzKHBvcywgc2VsKSksXG4gICAgICAgICAgICApLFxuICAgICAgICB+aW5qZWN0X2dsb2JhbD1pbmplY3QsXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgfnJlc3VsdHMsXG4gICAgICAgIH5leGVyY2lzZSxcbiAgICAgICk7XG4gICAgfTtcbiAgW1xuICAgIHRvcF9iYXIsXG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5pZChcIm1haW5cIiksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtTZXR0aW5ncy5zaG93X21vZGUoc2V0dGluZ3MubW9kZSldKSxcbiAgICAgICAgXSksXG4gICAgICBlZGl0b3JzX3ZpZXcsXG4gICAgKSxcbiAgICBzaWRlYmFyLFxuICAgIGJvdHRvbV9iYXIsXG4gIF07XG59O1xuXG5sZXQgdmlldyA9ICh+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSwgbW9kZWw6IE1vZGVsLnQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoQXR0ci5baWQoXCJwYWdlXCIpLCAuLi5oYW5kbGVycyh+aW5qZWN0LCBtb2RlbCldKSxcbiAgICBbXG4gICAgICBGb250U3BlY2ltZW4udmlldyhcImZvbnQtc3BlY2ltZW5cIiksXG4gICAgICBEZWNVdGlsLmZpbHRlcnMsXG4gICAgICBKc1V0aWwuY2xpcGJvYXJkX3NoaW0sXG4gICAgXVxuICAgIEAgbWFpbl92aWV3KH5pbmplY3QsIG1vZGVsKSxcbiAgKTtcbiIsImxldCBtZW1vaXplID0gKGY6ICdrID0+ICd2KTogKCdrID0+ICd2KSA9PiB7XG4gIGxldCB0YWJsZTogV2Vha01hcC50KCdrLCAndikgPSBXZWFrTWFwLm1rKCk7XG4gIGsgPT5cbiAgICBzd2l0Y2ggKFdlYWtNYXAuZ2V0KHRhYmxlLCBrKSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHYgPSBmKGspO1xuICAgICAgbGV0IF8gPSBXZWFrTWFwLnNldCh0YWJsZSwgaywgdik7XG4gICAgICB2O1xuICAgIHwgU29tZSh2KSA9PiB2XG4gICAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHQgPSAoZmxvYXQsIFVwZGF0ZUFjdGlvbi50KTtcblxubGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAoSnNVdGlsLnRpbWVzdGFtcCgpLCB1cGRhdGUpO1xufTtcblxubGV0IHRvX3N0cmluZyA9ICgodGltZXN0YW1wLCB1cGRhdGUpOiB0KSA9PiB7XG4gIC8qbGV0IHN0YXR1cyA9XG4gICAgc3dpdGNoIChlbnRyeS5lcnJvcikge1xuICAgIHwgTm9uZSA9PiBcIlNVQ0NFU1NcIlxuICAgIHwgU29tZShmYWlsdXJlKSA9PiBcIkZBSUxVUkUoXCIgKysgVXBkYXRlQWN0aW9uLkZhaWx1cmUuc2hvdyhmYWlsdXJlKSArKyBcIilcIlxuICAgIH07Ki9cbiAgUHJpbnRmLnNwcmludGYoXG4gICAgXCIlLjBmOiAlc1wiLFxuICAgIHRpbWVzdGFtcCxcbiAgICBVcGRhdGVBY3Rpb24uc2hvdyh1cGRhdGUpLFxuICAgIC8vc3RhdHVzLFxuICApO1xufTtcblxubGV0IHNlcmlhbGl6ZSA9IChlbnRyeTogdCk6IHN0cmluZyA9PiB7XG4gIGVudHJ5IHw+IHNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKHM6IHN0cmluZyk6IHQgPT4ge1xuICBzIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWFzb24gPVxuICB8IFVucmVjb2duaXplZFxuICB8IEZhaWx1cmUoQWN0aW9uLkZhaWx1cmUudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgcmVhc29uLFxuICBwcmlvcl9hdHRlbXB0czogaW50LFxufTtcblxubGV0IG1rID0gKH5wcmlvcl9hdHRlbXB0cz0wLCByZWFzb24pID0+IHtyZWFzb24sIHByaW9yX2F0dGVtcHRzfTtcblxubGV0IHJlcGxhY2Vfb3JfaW5jcmVtZW50X2F0dGVtcHRzID0gKHJlYXNvbiwgZmFpbGVkX2lucHV0OiB0KSA9PlxuICByZWFzb24gPT0gZmFpbGVkX2lucHV0LnJlYXNvblxuICAgID8gey4uLmZhaWxlZF9pbnB1dCwgcHJpb3JfYXR0ZW1wdHM6IGZhaWxlZF9pbnB1dC5wcmlvcl9hdHRlbXB0cyArIDF9XG4gICAgOiBtayhyZWFzb24pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgVHVybk9mZkR5bmFtaWNzXG4gIHwgQ2xlYXJTdG9yZTtcblxubGV0IHBlcmZvcm0gPSAoYWN0aW9uOiBhY3Rpb24pOiB1bml0ID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgfCBUdXJuT2ZmRHluYW1pY3MgPT5cbiAgICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5sb2FkKCk7XG4gICAgU3RvcmUuU2V0dGluZ3Muc2F2ZSh7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIGNvcmU6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgZHluYW1pY3M6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfCBDbGVhclN0b3JlID0+IEpzVXRpbC5jbGVhcl9sb2NhbHN0b3JlKClcbiAgfTtcbiAgSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlcGxhY2UoXG4gICAgSnNfb2Zfb2NhbWwuSnMuc3RyaW5nKFwiI1wiKSxcbiAgKTtcbiAgSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlbG9hZDtcbn07XG5cbmxldCBidG4gPSAoY2FwdGlvbiwgYWN0aW9uKSA9PiB7XG4gIE5vZGUuKFxuICAgIGJ1dHRvbihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiB7XG4gICAgICAgICAgICBwZXJmb3JtKGFjdGlvbik7XG4gICAgICAgICAgICBVaV9lZmZlY3QuSWdub3JlO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIFt0ZXh0KGNhcHRpb24pXSxcbiAgICApXG4gICk7XG59O1xuXG5sZXQgdmlldyA9IHtcbiAgTm9kZS4oXG4gICAgZGl2KFtcbiAgICAgIGJ0bihcInR1cm4gb2ZmIGR5bmFtaWNzXCIsIFR1cm5PZmZEeW5hbWljcyksXG4gICAgICBidG4oXCJjbGVhciBsb2NhbCBzdG9yYWdlIChMT1NFIEFMTCBEQVRBISlcIiwgQ2xlYXJTdG9yZSksXG4gICAgXSlcbiAgKTtcbn07XG5cbm1vZHVsZSBBcHAgPSB7XG4gIG1vZHVsZSBNb2RlbCA9IHtcbiAgICB0eXBlIHQgPSB1bml0O1xuICAgIGxldCBjdXRvZmYgPSAoXywgXykgPT4gZmFsc2U7XG4gIH07XG4gIG1vZHVsZSBBY3Rpb24gPSB7XG4gICAgdHlwZSB0ID0gdW5pdDtcbiAgICBsZXQgc2V4cF9vZl90ID0gXyA9PiBTZXhwbGliLlNleHAudW5pdDtcbiAgfTtcbiAgbW9kdWxlIFN0YXRlID0ge1xuICAgIHR5cGUgdCA9IHVuaXQ7XG4gIH07XG4gIGxldCBvbl9zdGFydHVwID0gKH5zY2hlZHVsZV9hY3Rpb24gYXMgXywgXykgPT5cbiAgICBBc3luY19rZXJuZWwuRGVmZXJyZWQucmV0dXJuKCk7XG4gIGxldCBjcmVhdGUgPSAoXywgfm9sZF9tb2RlbCBhcyBfLCB+aW5qZWN0IGFzIF8pID0+XG4gICAgSW5jcl9kb20uSW5jci5yZXR1cm4oKVxuICAgIHw+IEluY3JfZG9tLkluY3IubWFwKH5mPV8gPT5cbiAgICAgICAgIEluY3JfZG9tLkNvbXBvbmVudC5jcmVhdGUoXG4gICAgICAgICAgIH5hcHBseV9hY3Rpb249KF8sIF8sIH5zY2hlZHVsZV9hY3Rpb24gYXMgXykgPT4gKCksXG4gICAgICAgICAgICgpLFxuICAgICAgICAgICB2aWV3LFxuICAgICAgICAgKVxuICAgICAgICk7XG59O1xuXG5sZXQgZ28gPSAoKSA9PlxuICBJbmNyX2RvbS5TdGFydF9hcHAuc3RhcnQoXG4gICAgKG1vZHVsZSBBcHApLFxuICAgIH5kZWJ1Zz1mYWxzZSxcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWQ9XCJjb250YWluZXJcIixcbiAgICB+aW5pdGlhbF9tb2RlbD0oKSxcbiAgKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgRG9jID0gUHJldHR5LkRvYztcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gRG9jLnQoREhBbm5vdC50KTtcblxudHlwZSBmb3JtYXR0YWJsZV9jaGlsZCA9ICh+ZW5mb3JjZV9pbmxpbmU6IGJvb2wpID0+IHQ7XG5cbmxldCBwcmVjZWRlbmNlX2NvbnN0ID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfY29uc3Q7XG5sZXQgcHJlY2VkZW5jZV9BcCA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0FwO1xubGV0IHByZWNlZGVuY2VfVGltZXMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9UaW1lcztcbmxldCBwcmVjZWRlbmNlX0RpdmlkZSA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX0RpdmlkZTtcbmxldCBwcmVjZWRlbmNlX1BsdXMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9QbHVzO1xubGV0IHByZWNlZGVuY2VfTWludXMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9NaW51cztcbmxldCBwcmVjZWRlbmNlX0NvbnMgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db25zO1xubGV0IHByZWNlZGVuY2VfRXF1YWxzID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfRXF1YWxzO1xubGV0IHByZWNlZGVuY2VfTGVzc1RoYW4gPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9MZXNzVGhhbjtcbmxldCBwcmVjZWRlbmNlX0dyZWF0ZXJUaGFuID0gREhEb2NfY29tbW9uLnByZWNlZGVuY2VfR3JlYXRlclRoYW47XG5sZXQgcHJlY2VkZW5jZV9BbmQgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9BbmQ7XG5sZXQgcHJlY2VkZW5jZV9PciA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX09yO1xubGV0IHByZWNlZGVuY2VfQ29tbWEgPSBESERvY19jb21tb24ucHJlY2VkZW5jZV9Db21tYTtcbmxldCBwcmVjZWRlbmNlX21heCA9IERIRG9jX2NvbW1vbi5wcmVjZWRlbmNlX21heDtcblxubGV0IHBhZF9jaGlsZCA9XG4gICAgKFxuICAgICAgfmlubGluZV9wYWRkaW5nIGFzIChsLCByKT0oRG9jLmVtcHR5KCksIERvYy5lbXB0eSgpKSxcbiAgICAgIH5lbmZvcmNlX2lubGluZTogYm9vbCxcbiAgICAgIGNoaWxkOiBmb3JtYXR0YWJsZV9jaGlsZCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IGlubGluZV9jaG9pY2UgPSBEb2MuaGNhdHMoW2wsIGNoaWxkKH5lbmZvcmNlX2lubGluZT10cnVlKSwgcl0pO1xuICBsZXQgcGFyYV9jaG9pY2UgPVxuICAgIERvYy4oXG4gICAgICBoY2F0cyhbXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBpbmRlbnRfYW5kX2FsaWduKGNoaWxkKH5lbmZvcmNlX2lubGluZT1mYWxzZSkpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgZW5mb3JjZV9pbmxpbmUgPyBpbmxpbmVfY2hvaWNlIDogRG9jLmNob2ljZShpbmxpbmVfY2hvaWNlLCBwYXJhX2Nob2ljZSk7XG59O1xuXG5tb2R1bGUgRGVsaW0gPSB7XG4gIGxldCBtayA9IChkZWxpbV90ZXh0OiBzdHJpbmcpOiB0ID0+XG4gICAgRG9jLnRleHQoZGVsaW1fdGV4dCkgfD4gRG9jLmFubm90KERIQW5ub3QuRGVsaW0pO1xuXG4gIGxldCBlbXB0eV9ob2xlID0gKF9lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KTogdCA9PiB7XG4gICAgbGV0IGxibCA9IFwiLVwiO1xuICAgIERvYy50ZXh0KGxibClcbiAgICB8PiBEb2MuYW5ub3QoREhBbm5vdC5Ib2xlTGFiZWwpXG4gICAgfD4gRG9jLmFubm90KERIQW5ub3QuRGVsaW0pO1xuICB9O1xuXG4gIGxldCBsaXN0X25pbCA9IG1rKFwiW11cIik7XG4gIGxldCB0cml2ID0gbWsoXCIoKVwiKTtcbiAgbGV0IHdpbGQgPSBtayhcIl9cIik7XG5cbiAgbGV0IG9wZW5fUGFyZW50aGVzaXplZCA9IG1rKFwiKFwiKTtcbiAgbGV0IGNsb3NlX1BhcmVudGhlc2l6ZWQgPSBtayhcIilcIik7XG5cbiAgbGV0IHN5bV9GdW4gPSBtayhcImZ1blwiKTtcbiAgbGV0IGNvbG9uX0xhbSA9IG1rKFwiOlwiKTtcbiAgbGV0IG9wZW5fTGFtID0gbWsoXCIue1wiKTtcbiAgbGV0IGNsb3NlX0xhbSA9IG1rKFwifVwiKTtcblxuICBsZXQgZml4X0ZpeEYgPSBtayhcImZpeFwiKTtcbiAgbGV0IGNvbG9uX0ZpeEYgPSBtayhcIjpcIik7XG4gIGxldCBvcGVuX0ZpeEYgPSBtayhcIi57XCIpO1xuICBsZXQgY2xvc2VfRml4RiA9IG1rKFwifVwiKTtcbiAgbGV0IG9wZW5fQ2FzZSA9IG1rKFwiY2FzZVwiKTtcbiAgbGV0IGNsb3NlX0Nhc2UgPSBtayhcImVuZFwiKTtcblxuICBsZXQgYmFyX1J1bGUgPSBtayhcInxcIik7XG4gIGxldCBhcnJvd19SdWxlID0gbWsoXCI9PlwiKTtcblxuICBsZXQgb3Blbl9DYXN0ID0gbWsoXCI8XCIpO1xuICBsZXQgYXJyb3dfQ2FzdCA9IG1rKFVuaWNvZGUuY2FzdEFycm93U3ltKTtcbiAgbGV0IGNsb3NlX0Nhc3QgPSBtayhcIj5cIik7XG5cbiAgbGV0IG9wZW5fRmFpbGVkQ2FzdCA9IG9wZW5fQ2FzdCB8PiBEb2MuYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVsaW0pO1xuICBsZXQgYXJyb3dfRmFpbGVkQ2FzdCA9XG4gICAgbWsoVW5pY29kZS5jYXN0QXJyb3dTeW0pIHw+IERvYy5hbm5vdChESEFubm90LkZhaWxlZENhc3REZWxpbSk7XG4gIGxldCBjbG9zZV9GYWlsZWRDYXN0ID0gY2xvc2VfQ2FzdCB8PiBEb2MuYW5ub3QoREhBbm5vdC5GYWlsZWRDYXN0RGVsaW0pO1xufTtcblxubGV0IG1rX0VtcHR5SG9sZSA9ICh+c2VsZWN0ZWQ9ZmFsc2UsIGVudikgPT5cbiAgRGVsaW0uZW1wdHlfaG9sZShlbnYpIHw+IERvYy5hbm5vdChESEFubm90LkVtcHR5SG9sZShzZWxlY3RlZCwgZW52KSk7XG5cbmxldCBta19JbnRMaXQgPSBuID0+IERvYy50ZXh0KHN0cmluZ19vZl9pbnQobikpO1xuXG5sZXQgbWtfRmxvYXRMaXQgPSAoZjogZmxvYXQpID0+XG4gIHN3aXRjaCAoZiA8IDAuLCBGbG9hdC5pc19pbmZpbml0ZShmKSwgRmxvYXQuaXNfbmFuKGYpKSB7XG4gIHwgKGZhbHNlLCB0cnVlLCBfKSA9PiBEb2MudGV4dChcIkluZlwiKVxuICAvKiBUT0RPOiBOZWdJbmYgaXMgdGVtcG9yYXJpbHkgaW50cm9kdWNlZCB1bnRpbCB1bmFyeSBtaW51cyBpcyBpbnRyb2R1Y2VkIHRvIEhhemVsICovXG4gIHwgKHRydWUsIHRydWUsIF8pID0+IERvYy50ZXh0KFwiTmVnSW5mXCIpXG4gIHwgKF8sIF8sIHRydWUpID0+IERvYy50ZXh0KFwiTmFOXCIpXG4gIHwgXyA9PiBEb2MudGV4dChzdHJpbmdfb2ZfZmxvYXQoZikpXG4gIH07XG5cbmxldCBta19Cb29sTGl0ID0gYiA9PiBEb2MudGV4dChzdHJpbmdfb2ZfYm9vbChiKSk7XG5cbmxldCBta19Db25zID0gKGhkLCB0bCkgPT4gRG9jLihoY2F0cyhbaGQsIHRleHQoXCI6OlwiKSwgdGxdKSk7XG5cbmxldCBta19QYWlyID0gKGRvYzEsIGRvYzIpID0+IERvYy4oaGNhdHMoW2RvYzEsIHRleHQoXCIsIFwiKSwgZG9jMl0pKTtcblxubGV0IG1rX0FwID0gKGRvYzEsIGRvYzIpID0+IERvYy5oc2VwcyhbZG9jMSwgZG9jMl0pO1xuIiwiKCogY29weSB0aGlzIGZpbGUsIGZpbGxpbmcgaW4gdGhlIGRldGFpbHMgYmVsb3csIHRvIGNyZWF0ZSBhIGJsYW5rIGV4ZXJjaXNlIHRoYXQgeW91IGNhbiB0aGVuIGVkaXQgaW4gSGF6ZWxcbiAgIGFuZCBleHBvcnQsIG92ZXJ3cml0aW5nIHlvdXIgY29weSBvZiB0aGUgYmVsb3dcblxuICAgZm9yIHByb21wdHMsIHlvdSBuZWVkIHRvIGRlZmluZSBhIHNlcGFyYXRlIGZpbGUge21vZHVsZV9uYW1lfV9wcm9tcHQucmUgKHNlZSBleGFtcGxlcylcbiopXG5cbmxldCBleGVyY2lzZSA9XG4gIEV4ZXJjaXNlLmJsYW5rX3NwZWMgfnRpdGxlOlwiUmVjdXJzaXZlIEZpYm9uYWNjaVwiXG4gICAgfm1vZHVsZV9uYW1lOlwiRXhfUmVjdXJzaXZlRmlib25hY2NpXCJcbiAgICAgICgqIG1ha2Ugc3VyZSB5b3VyIGZpbGUgaXMgbmFtZWQgPG1vZHVsZV9uYW1lPi5tbCAqKVxuICAgIH5wb2ludF9kaXN0cmlidXRpb246XG4gICAgICB7IHRlc3RfdmFsaWRhdGlvbiA9IDEwOyBtdXRhdGlvbl90ZXN0aW5nID0gNDA7IGltcGxfZ3JhZGluZyA9IDUwIH1cbiAgICAgICgqIGlmIG11dGF0aW9uX3Rlc3RpbmcgPSAwLCB0aGVuIG5vIG11dGF0aW9uIHRlc3RpbmcgYm94IHdpbGwgc2hvdyB1cCAqKVxuICAgIH5yZXF1aXJlZF90ZXN0czo1IH5wcm92aWRlZF90ZXN0czowIH5udW1fd3JvbmdfaW1wbHM6MlxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tLkF0dHI7XG5cbmxldCBmc3RyID0gZiA9PiBQcmludGYuc3ByaW50ZihcIiVmXCIsIGYpO1xuXG5sZXQgY3ggPSBmID0+IGNyZWF0ZShcImN4XCIsIGZzdHIoZikpO1xubGV0IGN5ID0gZiA9PiBjcmVhdGUoXCJjeVwiLCBmc3RyKGYpKTtcbmxldCByeCA9IGYgPT4gY3JlYXRlKFwicnhcIiwgZnN0cihmKSk7XG5sZXQgcnkgPSBmID0+IGNyZWF0ZShcInJ5XCIsIGZzdHIoZikpO1xuXG5sZXQgeCA9IGYgPT4gY3JlYXRlKFwieFwiLCBmc3RyKGYpKTtcbmxldCB5ID0gZiA9PiBjcmVhdGUoXCJ5XCIsIGZzdHIoZikpO1xubGV0IHdpZHRoID0gZiA9PiBjcmVhdGUoXCJ3aWR0aFwiLCBmc3RyKGYpKTtcbmxldCBoZWlnaHQgPSBmID0+IGNyZWF0ZShcImhlaWdodFwiLCBmc3RyKGYpKTtcblxubGV0IHN0cm9rZV93aWR0aCA9IGYgPT4gY3JlYXRlKFwic3Ryb2tlLXdpZHRoXCIsIGZzdHIoZikpO1xubGV0IHZlY3Rvcl9lZmZlY3QgPSBzID0+IGNyZWF0ZShcInZlY3Rvci1lZmZlY3RcIiwgcyk7XG5sZXQgZmlsdGVyID0gcyA9PiBjcmVhdGUoXCJmaWx0ZXJcIiwgcyk7XG5cbmxldCBvZmZzZXQgPSBmID0+IGNyZWF0ZShcIm9mZnNldFwiLCBQcmludGYuc3ByaW50ZihcIiVmJSVcIiwgMTAwLiAqLiBmKSk7XG5sZXQgc3RvcF9jb2xvciA9IHMgPT4gY3JlYXRlKFwic3RvcC1jb2xvclwiLCBzKTtcbmxldCBzdG9wX29wYWNpdHkgPSBmID0+IGNyZWF0ZShcInN0b3Atb3BhY2l0eVwiLCBQcmludGYuc3ByaW50ZihcIiVmXCIsIGYpKTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIEluY3JfZG9tO1xub3BlbiBIYXozbHdlYjtcblxubGV0IHNjcm9sbF90b19jYXJldCA9IHJlZih0cnVlKTtcbmxldCBlZGl0X2FjdGlvbl9hcHBsaWVkID0gcmVmKHRydWUpO1xubGV0IGxhc3RfZWRpdF9hY3Rpb24gPSByZWYoSnNVdGlsLnRpbWVzdGFtcCgpKTtcblxubGV0IG9ic2VydmVfZm9udF9zcGVjaW1lbiA9IChpZCwgdXBkYXRlKSA9PlxuICBSZXNpemVPYnNlcnZlci5vYnNlcnZlKFxuICAgIH5ub2RlPUpzVXRpbC5nZXRfZWxlbV9ieV9pZChpZCksXG4gICAgfmY9XG4gICAgICAoZW50cmllcywgXykgPT4ge1xuICAgICAgICBsZXQgc3BlY2ltZW4gPSBKcy50b19hcnJheShlbnRyaWVzKVswXTtcbiAgICAgICAgbGV0IHJlY3QgPSBzcGVjaW1lbiMjLmNvbnRlbnRSZWN0O1xuICAgICAgICB1cGRhdGUoXG4gICAgICAgICAgSGF6M2x3ZWIuRm9udE1ldHJpY3Mue1xuICAgICAgICAgICAgcm93X2hlaWdodDogcmVjdCMjLmJvdHRvbSAtLiByZWN0IyMudG9wLFxuICAgICAgICAgICAgY29sX3dpZHRoOiByZWN0IyMucmlnaHQgLS4gcmVjdCMjLmxlZnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKCksXG4gICk7XG5cbmxldCByZXN0YXJ0X2NhcmV0X2FuaW1hdGlvbiA9ICgpID0+XG4gIC8vIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHJlZmxvd1xuICAvLyA8aHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9yZXN0YXJ0LWNzcy1hbmltYXRpb24vPlxuICB0cnkoe1xuICAgIGxldCBjYXJldF9lbGVtID0gSnNVdGlsLmdldF9lbGVtX2J5X2lkKFwiY2FyZXRcIik7XG4gICAgY2FyZXRfZWxlbSMjLmNsYXNzTGlzdCMjcmVtb3ZlKEpzLnN0cmluZyhcImJsaW5rXCIpKTtcbiAgICBsZXQgXyA9IGNhcmV0X2VsZW0jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBjYXJldF9lbGVtIyMuY2xhc3NMaXN0IyNhZGQoSnMuc3RyaW5nKFwiYmxpbmtcIikpO1xuICB9KSB7XG4gIHwgXyA9PiAoKVxuICB9O1xuXG5sZXQgYXBwbHkgPSAobW9kZWwsIGFjdGlvbiwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pOiBNb2RlbC50ID0+IHtcbiAgcmVzdGFydF9jYXJldF9hbmltYXRpb24oKTtcbiAgaWYgKFVwZGF0ZUFjdGlvbi5pc19lZGl0KGFjdGlvbikpIHtcbiAgICBsYXN0X2VkaXRfYWN0aW9uIDo9IEpzVXRpbC50aW1lc3RhbXAoKTtcbiAgICBlZGl0X2FjdGlvbl9hcHBsaWVkIDo9IHRydWU7XG4gIH07XG4gIGlmIChVcGRhdGUuc2hvdWxkX3Njcm9sbF90b19jYXJldChhY3Rpb24pKSB7XG4gICAgc2Nyb2xsX3RvX2NhcmV0IDo9IHRydWU7XG4gIH07XG4gIGxhc3RfZWRpdF9hY3Rpb24gOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICBzd2l0Y2ggKFxuICAgIHRyeSh7XG4gICAgICBsZXQgbmV3X21vZGVsID0gVXBkYXRlLmFwcGx5KG1vZGVsLCBhY3Rpb24sIHN0YXRlLCB+c2NoZWR1bGVfYWN0aW9uKTtcbiAgICAgIExvZy51cGRhdGUoYWN0aW9uKTtcbiAgICAgIG5ld19tb2RlbDtcbiAgICB9KSB7XG4gICAgfCBleGMgPT5cbiAgICAgIFByaW50Zi5wcmludGYoXG4gICAgICAgIFwiRVJST1I6IEV4Y2VwdGlvbiBkdXJpbmcgYXBwbHk6ICVzXFxuXCIsXG4gICAgICAgIFByaW50ZXhjLnRvX3N0cmluZyhleGMpLFxuICAgICAgKTtcbiAgICAgIEVycm9yKEV4Y2VwdGlvbihQcmludGV4Yy50b19zdHJpbmcoZXhjKSkpO1xuICAgIH1cbiAgKSB7XG4gIHwgT2sobW9kZWwpID0+IG1vZGVsXG4gIHwgRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGVycikpID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiByZWluc3RhdGUgdGhpcyBoaXN0b3J5IGZ1bmN0aW9uYWxpdHlcbiAgICBwcmludF9lbmRsaW5lKFVwZGF0ZS5GYWlsdXJlLnNob3coRmFpbGVkVG9QZXJmb3JtKGVycikpKTtcbiAgICAvL3suLi5tb2RlbCwgaGlzdG9yeTogQWN0aW9uSGlzdG9yeS5mYWlsdXJlKGVyciwgbW9kZWwuaGlzdG9yeSl9O1xuICAgIG1vZGVsO1xuICB8IEVycm9yKGVycikgPT5cbiAgICBwcmludF9lbmRsaW5lKFVwZGF0ZS5GYWlsdXJlLnNob3coZXJyKSk7XG4gICAgbW9kZWw7XG4gIH07XG59O1xuXG5tb2R1bGUgQXBwID0ge1xuICBtb2R1bGUgTW9kZWwgPSBNb2RlbDtcbiAgbW9kdWxlIEFjdGlvbiA9IFVwZGF0ZTtcbiAgbW9kdWxlIFN0YXRlID0gU3RhdGU7XG5cbiAgbGV0IG9uX3N0YXJ0dXAgPSAofnNjaGVkdWxlX2FjdGlvbiwgbTogTW9kZWwudCkgPT4ge1xuICAgIGxldCBfID1cbiAgICAgIG9ic2VydmVfZm9udF9zcGVjaW1lbihcImZvbnQtc3BlY2ltZW5cIiwgZm0gPT5cbiAgICAgICAgc2NoZWR1bGVfYWN0aW9uKEhhejNsd2ViLlVwZGF0ZS5TZXRNZXRhKEZvbnRNZXRyaWNzKGZtKSkpXG4gICAgICApO1xuXG4gICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG5cbiAgICAvKiBpbml0aWFsaXplIHN0YXRlLiAqL1xuICAgIGxldCBzdGF0ZSA9IFN0YXRlLmluaXQoKTtcblxuICAgIC8qIEluaXRpYWwgZXZhbHVhdGlvbiBvbiBhIHdvcmtlciAqL1xuICAgIFVwZGF0ZS5zY2hlZHVsZV9ldmFsdWF0aW9uKH5zY2hlZHVsZV9hY3Rpb24sIG0pO1xuXG4gICAgT3MuaXNfbWFjIDo9XG4gICAgICBEb21faHRtbC53aW5kb3cjIy5uYXZpZ2F0b3IjIy5wbGF0Zm9ybSMjdG9VcHBlckNhc2UjI2luZGV4T2YoXG4gICAgICAgIEpzLnN0cmluZyhcIk1BQ1wiKSxcbiAgICAgIClcbiAgICAgID49IDA7XG4gICAgQXN5bmNfa2VybmVsLkRlZmVycmVkLnJldHVybihzdGF0ZSk7XG4gIH07XG5cbiAgbGV0IGNyZWF0ZSA9XG4gICAgICAoXG4gICAgICAgIG1vZGVsOiBJbmNyLnQoSGF6M2x3ZWIuTW9kZWwudCksXG4gICAgICAgIH5vbGRfbW9kZWwgYXMgXzogSW5jci50KEhhejNsd2ViLk1vZGVsLnQpLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgKSA9PiB7XG4gICAgb3BlbiBJbmNyLkxldF9zeW50YXg7XG4gICAgbGV0JW1hcCBtb2RlbCA9IG1vZGVsO1xuICAgIC8qIE5vdGU6IG1hcHBpbmcgb3ZlciB0aGUgb2xkX21vZGVsIGhlcmUgbWF5XG4gICAgICAgdHJpZ2dlciBhbiBhZGRpdGlvbmFsIHJlZHJhdyAqL1xuICAgIENvbXBvbmVudC5jcmVhdGUoXG4gICAgICB+YXBwbHlfYWN0aW9uPWFwcGx5KG1vZGVsKSxcbiAgICAgIG1vZGVsLFxuICAgICAgSGF6M2x3ZWIuUGFnZS52aWV3KH5pbmplY3QsIG1vZGVsKSxcbiAgICAgIH5vbl9kaXNwbGF5PShfLCB+c2NoZWR1bGVfYWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChlZGl0X2FjdGlvbl9hcHBsaWVkXlxuICAgICAgICAgICAgJiYgSnNVdGlsLnRpbWVzdGFtcCgpXG4gICAgICAgICAgICAtLiBsYXN0X2VkaXRfYWN0aW9uXiA+IDEwMDAuMCkge1xuICAgICAgICAgIC8qIElmIGFuIGVkaXQgYWN0aW9uIGhhcyBiZWVuIGFwcGxpZWQsIGJ1dCBubyBvdGhlciBlZGl0IGFjdGlvblxuICAgICAgICAgICAgIGhhcyBiZWVuIGFwcGxpZWQgZm9yIDEgc2Vjb25kLCBzYXZlIHRoZSBtb2RlbC4gKi9cbiAgICAgICAgICBlZGl0X2FjdGlvbl9hcHBsaWVkIDo9IGZhbHNlO1xuICAgICAgICAgIHByaW50X2VuZGxpbmUoXCJTYXZpbmcuLi5cIik7XG4gICAgICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZS5TYXZlKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHNjcm9sbF90b19jYXJldC5jb250ZW50cykge1xuICAgICAgICAgIHNjcm9sbF90b19jYXJldCA6PSBmYWxzZTtcbiAgICAgICAgICBKc1V0aWwuc2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlZGVkKCk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG4gIH07XG59O1xuXG5zd2l0Y2ggKEpzVXRpbC5GcmFnbWVudC5nZXRfY3VycmVudCgpKSB7XG58IFNvbWUoXCJkZWJ1Z1wiKSA9PiBEZWJ1Z01vZGUuZ28oKVxufCBfID0+XG4gIEluY3JfZG9tLlN0YXJ0X2FwcC5zdGFydChcbiAgICAobW9kdWxlIEFwcCksXG4gICAgfmRlYnVnPWZhbHNlLFxuICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZD1cImNvbnRhaW5lclwiLFxuICAgIH5pbml0aWFsX21vZGVsPU1vZGVsLmxvYWQoTW9kZWwuYmxhbmspLFxuICApXG59O1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiR2VuZXJpY0hvb2siLCJpbml0IiwidXBkYXRlIiwiZGVzdHJveSIsImV4dHJhIiwiaG9va19zdGF0ZV9rZXkiLCJTeW1ib2wiLCJzdGF0ZSIsImZyb20iLCJ0byIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwianNvb19zeXNfZ2V0ZW52IiwicHJvY2VzcyIsImdsb2JhbFRoaXMiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJidWZmZXIiLCJjYW1sX2ludDY0X2Zvcm1hdCIsIndiYXNlIiwiY3Z0YmwiLCJwIiwiY2FtbF9leHBtMV9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJjMSIsImMyIiwidiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiZnNfbm9kZV9zdXBwb3J0ZWQiLCJtYWtlX3BhdGhfaXNfYWJzb2x1dGUiLCJwb3NpeCIsInBhdGgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwiY29tcCIsIm5jb21wIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJNbEJ5dGVzIiwiY29udGVudHMiLCJjb250ZW50IiwiY2FtbF9pc19tbF9ieXRlcyIsImNhbWxfaXNfbWxfc3RyaW5nIiwiY2FtbF9ieXRlc19vZl9hcnJheSIsIlVpbnQ4QXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfYmxpdF9ieXRlcyIsInMxIiwiaTEiLCJzMiIsImkyIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VGZCIsImZpbGUiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJzZWVuIiwibSIsImVudHJ5Iiwib2siLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJidWZfb2Zmc2V0IiwicmVhZCIsIk1sTm9kZURldmljZSIsImNvbnN0cyIsImlzQ2hhcmFjdGVyRGV2aWNlIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiY2FtbF9zeXNfcmVuYW1lIiwib19yb290Iiwibl9yb290IiwiY2FtbF9sb2cxMF9mbG9hdCIsImNhbWxfcnVudGltZV93YXJuaW5ncyIsImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MiLCJib29sIiwiY2FtbF9jbGFzc2lmeV9mbG9hdCIsImlzRmluaXRlIiwiaXNOYU4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9yZWZpbGwiLCJjaGFuIiwic3RyX2EiLCJucmVhZCIsImNhbWxfYXJyYXlfYm91bmRfZXJyb3IiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsImNoYW5pZCIsInByZXZfbWF4IiwiY2FtbF9nY19taW5vciIsInVuaXQiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImJhIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheSIsImNhbWxfaW50NjRfb2ZfYnl0ZXMiLCJjYW1sX2JhX3VpbnQ4X2dldDY0IiwiaTAiLCJvZnMiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfaW50NjRfbWFyc2hhbCIsIndyaXRlciIsInNpemVzIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2ludF9jb21wYXJlIiwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyIsImJhMSIsImJhMV9vZmYiLCJiYTIiLCJiYTJfb2ZmIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsInBvczEiLCJieXRlczIiLCJwb3MyIiwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NyZWF0ZV9maWxlIiwianNvb19jcmVhdGVfZmlsZSIsImNhbWxfZnNfaW5pdCIsInRtcCIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwibmFyZ3MiLCJleHRyYV9hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImJpZ3N0cmluZ19maW5kIiwiYnMiLCJjaHIiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QiLCJ2b3V0cHV0IiwidnN0ZG91dCIsInZzdGRlcnIiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIiLCJjYW1sX2NoZWNrX2JvdW5kIiwiYXJyYXkiLCJjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyIsImJpZ3N0cmluZyIsImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJiYXNlIiwiYmFja3RyayIsImNhbWxfc3lzX2ZpbGVfZXhpc3RzIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfYXJyYXlfc3ViIiwiY2FtbF9ieXRlc19lcXVhbCIsImNhbWxfZ3Jfc2l6ZV94IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHoiLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImpzX3BlcmZvcm1hbmNlIiwiX2UiLCJqc19wcm9mX21hcmsiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJCYXNlX2hhc2hfc3RyaW5nIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiY2FtbF9zeXNfZmRzIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjb3JlX21kNV9mZCIsImljIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiIsImV4cG9uZW50Iiwib25lIiwibXVsIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsImNhbWxfYXJyYXlfZ2V0IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwidGEiLCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX3JlYWxsb2MiLCJuZXdfZGF0YSIsIm5ld19iaWdzdHJpbmciLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9tYXliZV9wcmludF9zdGF0cyIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF91bml4X2hhc19zeW1saW5rIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJCYXNlX2FtX3Rlc3RpbmciLCJjYW1sX2J5dGVzX2xlc3N0aGFuIiwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsImNhbWxfc3lzX2dldGN3ZCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3VsdCIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfaW50NjRfb3IiLCJjYW1sX2x4bV9uZXh0Iiwic2hpZnRfbCIsInNoaWZ0X3IiLCJvciIsInhvciIsInJvdGwiLCJnZXQiLCJzZXQiLCJNIiwiZGFiYSIsInEwIiwicTEiLCJzdCIsIngwIiwiY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiIsImNhbWxfbGlzdF90b19qc19hcnJheSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImJpZ3N0cmluZ19tZW1jbXBfc3R1YiIsInZfczEiLCJ2X3MxX3BvcyIsInZfczIiLCJ2X3MyX3BvcyIsInZfbGVuIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsIlVJbnQ4QXJyYXlSZWFkZXIiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwicmVhZHZscSIsIm92ZXJmbG93IiwibjciLCJoZWFkZXJfbGVuIiwiZGF0YV9sZW4iLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZGVjb21wcmVzc19pbnB1dCIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwibWFnaWMiLCJjb21wcmVzc2VkIiwidW5jb21wcmVzc2VkX2RhdGFfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwiY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJiaWdzdHJpbmdfYWxsb2MiLCJfIiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJyZV9zZWFyY2hfYmFja3dhcmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9vdXRwdXRfdGEiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwibmV3X2RpbXMiLCJjb3JlX2djX2NvbXBhY3Rpb25zIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9zdHJpbmdfaGFzaCIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJCYXNlX2ludF9tYXRoX2ludDMyX2N0eiIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCIsImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCIsImNhbWxfY3JlYXRlX3N0cmluZyIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiIsImJpZ3N0cmluZ19tZW1zZXRfc3R1YiIsInZfcG9zIiwidl9jaGFyIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyIsIkJhc2VfaW50X21hdGhfaW50NjRfY2x6IiwiY2FtbF9hcnJheV9hcHBlbmQiLCJsMSIsImwyIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF90aW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9qc190b19zdHJpbmciLCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY29yZV9nY190b3BfaGVhcF93b3JkcyIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJsZW5ndGhfbmF0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQiLCJpbmZvIiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9tZW1wcm9mX2Rpc2NhcmQiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6IiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nIiwiYmFfb2ZmIiwic3RyX29mZiIsImNhbWxfYnVpbGRfc3ltYm9scyIsInRvYyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZ2Nfc3RhdCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImJpZ3N0cmluZ2FmX21lbWNociIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9tZXRob2RfY2FjaGUiLCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kIiwiY2FjaGVpZCIsIm1ldGhzIiwibGkiLCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX3JvdW5kX2Zsb2F0IiwianNfcHJvZl9tZWFzdXJlIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6IiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHoiLCJpc196ZXJvIiwibGFuZCIsInNtYWxsX2ludDY0IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF9kb21haW5fZGxzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MzIiLCJjYW1sX2ZyZXhwX2Zsb2F0IiwibmVnIiwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIiLCJjb3JlX3RpbWVfbnNfZm9ybWF0IiwidGltZSIsImZvcm1hdGpzIiwianN0cmluZyIsImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsIkJhc2VfaGFzaF9kb3VibGUiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwiY29yZV9nY19oZWFwX3dvcmRzIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjb3JlX2djX21pbm9yX3dvcmRzIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJtc190b19uYW5vIiwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvIiwibXMiLCJtc19pNjMiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsInNldF9kaWdpdF9uYXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY29yZV9nY19tYWpvcl93b3JkcyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJiaWdzdHJpbmdfYmxpdF9zdHViIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwibWF4X2ludCIsIm1pbl9pbnQiLCJzeW1ib2wiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsInIiLCJsZW4kMSIsIm9mcyQxIiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2xpbmUiLCJidWlsZF9yZXN1bHQiLCJidWYiLCJwb3MkMCIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9pbl9ub2VyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnQiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2Zsb2F0IiwicmVhZF9mbG9hdF9vcHQiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sJDEiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJkb19hdF9leGl0IiwiZXhpdCIsInJldGNvZGUiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwibWFwIiwidiQwIiwiZm9sZCIsImVxdWFsIiwiZTEiLCJlMiIsInYxIiwidjIiLCJ2MSQwIiwidjIkMCIsImNvbXBhcmUiLCJvY2FtbF92ZXJzaW9uIiwib2NhbWxfcmVsZWFzZSIsImV4ZWN1dGFibGVfbmFtZSIsIm9zX3R5cGUiLCJiYWNrZW5kX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJtYXhfYXJyYXlfbGVuZ3RoIiwibWF4X2Zsb2F0YXJyYXlfbGVuZ3RoIiwibWF4X3N0cmluZ19sZW5ndGgiLCJiaWdfZW5kaWFuIiwid29yZF9zaXplIiwiaW50X3NpemUiLCJnZXRlbnZfb3B0IiwiaW50ZXJhY3RpdmUiLCJzZXRfc2lnbmFsIiwic2lnX251bSIsInNpZ19iZWgiLCJzaWdhYnJ0Iiwic2lnYWxybSIsInNpZ2ZwZSIsInNpZ2h1cCIsInNpZ2lsbCIsInNpZ2ludCIsInNpZ2tpbGwiLCJzaWdwaXBlIiwic2lncXVpdCIsInNpZ3NlZ3YiLCJzaWd0ZXJtIiwic2lndXNyMSIsInNpZ3VzcjIiLCJzaWdjaGxkIiwic2lnY29udCIsInNpZ3N0b3AiLCJzaWd0c3RwIiwic2lndHRpbiIsInNpZ3R0b3UiLCJzaWd2dGFscm0iLCJzaWdwcm9mIiwic2lnYnVzIiwic2lncG9sbCIsInNpZ3N5cyIsInNpZ3RyYXAiLCJzaWd1cmciLCJzaWd4Y3B1Iiwic2lneGZzeiIsImNhdGNoX2JyZWFrIiwib24iLCJkZXZlbG9wbWVudF92ZXJzaW9uIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwiZm9yY2luZ190YWciLCJjb250X3RhZyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImN1c3RvbV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJvYmoiLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInNldCIsImluY3IiLCJkZWNyIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUkMCIsInJlc3VsdCQwIiwiY2xvc3VyZSIsInJlc3VsdCIsImUkMCIsImZvcmNlX2xhenlfYmxvY2siLCJmb3JjZV9nZW4iLCJsenYiLCJ0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJ4cyQxIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiYWNjdSQxIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmaW5kIiwiZmluZF9tYXAiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJub25lIiwic29tZSIsInZhbHVlIiwiZGVmYXVsdCQwIiwiZ2V0IiwiYmluZCIsImpvaW4iLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwicmV2X2luaXRfdGhyZXNob2xkIiwiZmxhdHRlbiIsInJldl9tYXAiLCJmb2xkX3JpZ2h0IiwiYTIiLCJhMSIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwibWFrZSIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXRfdXRmXzhfdWNoYXIiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJvZl9saXN0IiwiaW5wdXRfYXJyYXkiLCJlbHQiLCJvdXRwdXRfYXJyYXkiLCJlbHQkMCIsImFjYyQyIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImUkMSIsImokMCIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImkyJDAiLCJkJDAiLCJzMiQwIiwiaTEkMCIsImQkMSIsInMxJDAiLCJpc29ydHRvIiwic3Jjb2ZzIiwic29ydHRvIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInBpIiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic2l6ZSIsImR1bW15X3BvcyIsInplcm9fcG9zIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInJlYWRfZnVuIiwic3RoIiwid2l0aF9wb3NpdGlvbnMiLCJhdXhfYnVmZmVyIiwibGV4YnVmIiwicmVhZCIsIm5ld2xlbiIsIm5ld2J1ZiIsImZyb21fY2hhbm5lbCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiZXhuJDAiLCJleG4iLCJjdXJyX2NoYXIiLCJ0b2siLCJwZWVrX3ZhbCIsInN5bWJvbF9zdGFydF9wb3MiLCJzdCIsImVuIiwic3ltYm9sX2VuZF9wb3MiLCJyaHNfc3RhcnRfcG9zIiwicmhzX2VuZF9wb3MiLCJzeW1ib2xfc3RhcnQiLCJzeW1ib2xfZW5kIiwicmhzX3N0YXJ0IiwicmhzX2VuZCIsImlzX2N1cnJlbnRfbG9va2FoZWFkIiwicGFyc2VfZXJyb3IiLCJoZWlnaHQiLCJobCIsImgkMCIsImhyIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2IiwicmxsIiwiYWRkIiwic2luZ2xldG9uIiwiYWRkX21pbl9lbGVtZW50IiwiYWRkX21heF9lbGVtZW50IiwicmgiLCJsaCIsIm1pbl9lbHQiLCJtaW5fZWx0X29wdCIsIm1heF9lbHQiLCJtYXhfZWx0X29wdCIsInJlbW92ZV9taW5fZWx0IiwiciQwIiwicHJlcyIsInByZXMkMCIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwidG9fcmVhZCQxIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsInByZXZpb3VzJDAiLCJzdGFydCQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJyZWxlYXNlIiwiYWNxdWlyZSIsInRyeV9hY3F1aXJlIiwicmV0IiwiZ2V0X3ZhbHVlIiwibWFrZSQwIiwicmVsZWFzZSQwIiwiYWNxdWlyZSQwIiwidHJ5X2FjcXVpcmUkMCIsImNwdV9yZWxheCIsInVuaXF1ZV92YWx1ZSIsImNyZWF0ZV9kbHMiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJraSIsIm1heWJlX2dyb3ciLCJzeiIsIm5ld19zeiIsIm5ld19zdCIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJzcGF3biIsInBrIiwidGVybV9tdXRleCIsInRlcm1fY29uZGl0aW9uIiwidGVybV9zdGF0ZSIsImJvZHkiLCJleCQwIiwiZXgiLCJyZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5IiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwiZm10dHkkNCIsImZtdHR5JDUiLCJmbXR0eSQ2IiwiZm10dHkkNyIsImZtdHR5JDgiLCJmbXR0eSQ5Iiwic3ViX2ZtdHR5IiwiZm10dHkkMTAiLCJzdWJfZm10dHkkMCIsImZtdHR5JDExIiwiZm10dHkkMTIiLCJmbXR0eSQxMyIsImZtdHR5JDE0IiwiZm10dHkkMTUiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJjdXIiLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwic2VlbiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG8iLCJjb25zdHJ1Y3RvciIsImZpZWxkc19vcHQiLCJjb25zdHJ1Y3RvciQwIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwiZXZlbnRsb2dfcGF1c2UiLCJldmVudGxvZ19yZXN1bWUiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIiLCJpbnQ2NCIsImludCQwIiwibmF0aXZlaW50IiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiYXJyIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInJlaW5pdCIsInNlZWQiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJpbnRhdXgiLCJib3VuZCIsImZ1bGxfaW50IiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImZsb2F0JDAiLCJib29sIiwibWtfZGVmYXVsdCIsInJhbmRvbV9rZXkiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiYml0czMyJDAiLCJiaXRzNjQkMCIsIm5hdGl2ZWJpdHMkMCIsImZ1bGxfaW5pdCIsInNlbGZfaW5pdCIsInNwbGl0JDAiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmdfa2V5IiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInNlZWRlZF9oYXNoIiwiaGFzaF9wYXJhbSIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImNvdW50IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJmbHVzaCIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwic3RkYnVmX2tleSIsInN0cl9mb3JtYXR0ZXJfa2V5IiwiYnVmZmVyZWRfb3V0X3N0cmluZyIsImJ1ZmZlcmVkX291dF9mbHVzaCIsInN0ZF9idWZfa2V5IiwiZXJyX2J1Zl9rZXkiLCJzdGRfZm9ybWF0dGVyX2tleSIsImVycl9mb3JtYXR0ZXJfa2V5IiwiZ2V0X3N0ZF9mb3JtYXR0ZXIiLCJnZXRfZXJyX2Zvcm1hdHRlciIsImdldF9zdHJfZm9ybWF0dGVyIiwiZ2V0X3N0ZGJ1ZiIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIiwib3V0cHV0JDAiLCJmbHVzaCQwIiwic3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsImZzIiwiZnMkMCIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiY2xvc2VfaW4iLCJpYyQwIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJsb3dlcmNhc2UiLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZl9nZW4iLCJlZiIsImFyZ3MkMSIsImV4YyQwIiwiZXhjIiwiYXJncyQwIiwia3NjYW5mIiwia3NjYW5mX29wdCIsImJzY2FuZiIsImJzY2FuZl9vcHQiLCJrc3NjYW5mIiwic3NjYW5mIiwic3NjYW5mX29wdCIsInNjYW5mIiwic2NhbmZfb3B0IiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiZ2V0X2RhdGEiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsImluaXRfbW9kX2Jsb2NrIiwiY29tcHMkMCIsIm1vZHUiLCJzaGFwZSIsImZuJDAiLCJjb21wcyIsImluaXRfbW9kIiwidXBkYXRlX21vZF9ibG9jayIsImNsIiwidXBkYXRlX21vZCIsInBybmciLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwic2V0X2RhdGEiLCJlcGgiLCJxdWVyeSIsInNldF9rZXlfZGF0YSIsInRlc3Rfa2V5IiwidCQwIiwiZ2V0X2tleTEiLCJzZXRfa2V5MSIsImdldF9rZXkyIiwic2V0X2tleTIiLCJnZXRfZGF0YSQwIiwic2V0X2RhdGEkMCIsIm1ha2UkMSIsImtleTEiLCJrZXkyIiwicXVlcnkkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsInNlZWRlZF9oYXNoJDAiLCJtYWtlJDIiLCJhZGQkMCIsInRlc3Rfa2V5cyIsInJlbW92ZSQwIiwiZmluZCQwIiwibGVuZ3RoJDAiLCJjbGVhciQwIiwibGVuZ3RoJDEiLCJnZXRfa2V5JDAiLCJzZXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwic2V0X2RhdGEkMSIsIm1ha2UkMyIsInF1ZXJ5JDEiLCJtYWtlJDQiLCJhZGQkMSIsInRlc3Rfa2V5cyQwIiwicmVtb3ZlJDEiLCJmaW5kJDEiLCJsZW5ndGgkMiIsImNsZWFyJDEiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiZ2VuZXJpY19iYXNlbmFtZSIsImlzX2Rpcl9zZXAiLCJnZW5lcmljX2Rpcm5hbWUiLCJpc19yZWxhdGl2ZSIsImlzX2ltcGxpY2l0IiwiY2hlY2tfc3VmZml4Iiwic3VmZiIsImNob3Bfc3VmZml4X29wdCIsImxlbl9mIiwidGVtcF9kaXJfbmFtZSIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDAiLCJsb29wJDAiLCJsb29wX2JzIiwiYWRkX2JzIiwicXVvdGVfY21kX2ZpbGVuYW1lIiwicXVvdGVfY29tbWFuZCQwIiwiZHJpdmVfYW5kX3BhdGgiLCJkaXJuYW1lJDAiLCJwYXRoIiwiZHJpdmUiLCJkaXIiLCJiYXNlbmFtZSQwIiwiYmFzZW5hbWUkMSIsImRpcm5hbWUkMSIsIm51bGwkMyIsImN1cnJlbnRfZGlyX25hbWUkMiIsInBhcmVudF9kaXJfbmFtZSQyIiwiZGlyX3NlcCQyIiwiaXNfZGlyX3NlcCQxIiwiaXNfcmVsYXRpdmUkMSIsImlzX2ltcGxpY2l0JDEiLCJjaGVja19zdWZmaXgkMSIsImNob3Bfc3VmZml4X29wdCQxIiwidGVtcF9kaXJfbmFtZSQxIiwicXVvdGUkMSIsInF1b3RlX2NvbW1hbmQkMSIsImJhc2VuYW1lJDIiLCJkaXJuYW1lJDIiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJpMCIsImV4dGVuc2lvbiIsImNob3BfZXh0ZW5zaW9uIiwicmVtb3ZlX2V4dGVuc2lvbiIsInRlbXBfZmlsZV9uYW1lIiwidGVtcF9kaXIiLCJyYW5kb21fc3RhdGUiLCJybmQiLCJjdXJyZW50X3RlbXBfZGlyX25hbWUiLCJzZXRfdGVtcF9kaXJfbmFtZSIsImdldF90ZW1wX2Rpcl9uYW1lIiwidGVtcF9maWxlIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93Iiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4kMCIsIm5ld19sZW4kMSIsImlucHV0X2FsbCIsImNodW5rX3NpemUiLCJpbml0aWFsX3NpemUkMCIsImluaXRpYWxfc2l6ZSQxIiwibnJlYWQiLCJidWYkMiIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJzZXRfYmluYXJ5X21vZGUiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJtYXhfaW50IiwibWluX2ludCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJib29sX29mX3N0cmluZ19vcHQiLCJib29sX29mX3N0cmluZyIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnRfb3B0IiwicmVhZF9pbnQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfZmxvYXQiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsIm9wZW5fb3V0X2dlbiIsImZsdXNoIiwiZmx1c2hfYWxsIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0X2J5dGVzIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfdmFsdWUiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfb3V0Iiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwib3Blbl9pbl9nZW4iLCJpbnB1dF9jaGFyIiwiaW5wdXRfbGluZSIsImlucHV0IiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsImNsb3NlX2luX25vZXJyIiwic2V0X2JpbmFyeV9tb2RlX2luIiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCIsImV4aXQiLCJhdF9leGl0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiZG9fYXRfZXhpdCIsImRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IiwiYm9vbF90b19pbnQiLCJzeW1ib2wkMyIsInN5bWJvbCQ0Iiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsImFzY2VuZGluZyIsIm1heCQwIiwibWluJDAiLCJhc2NlbmRpbmckMCIsImRlc2NlbmRpbmckMCIsIm1heCQxIiwibWluJDEiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJhc2NlbmRpbmckMSIsImRlc2NlbmRpbmckMSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCQyIiwibWluJDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsIm1heCQzIiwibWluJDMiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJhc2NlbmRpbmckMyIsImRlc2NlbmRpbmckMyIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJtYXgkNCIsIm1pbiQ0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiYXNjZW5kaW5nJDQiLCJkZXNjZW5kaW5nJDQiLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwibWF4JDUiLCJtaW4kNSIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsImFzY2VuZGluZyQ1IiwiZGVzY2VuZGluZyQ1IiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQ2IiwibWluJDYiLCJpIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwic3ltYm9sJDQyIiwiYXNjZW5kaW5nJDYiLCJkZXNjZW5kaW5nJDYiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwibWF4JDciLCJtaW4kNyIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsImFzY2VuZGluZyQ3IiwiZGVzY2VuZGluZyQ3IiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsIm1heCQ4IiwibWluJDgiLCJzeW1ib2wkNDkiLCJzeW1ib2wkNTAiLCJzeW1ib2wkNTEiLCJzeW1ib2wkNTIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJhc2NlbmRpbmckOCIsImRlc2NlbmRpbmckOCIsImNvbXBhcmUkNSIsImVxdWFsJDUiLCJtYXgkOSIsIm1pbiQ5Iiwic3ltYm9sJDU1Iiwic3ltYm9sJDU2Iiwic3ltYm9sJDU3Iiwic3ltYm9sJDU4Iiwic3ltYm9sJDU5Iiwic3ltYm9sJDYwIiwiYXNjZW5kaW5nJDkiLCJkZXNjZW5kaW5nJDkiLCJjb21wYXJlJDYiLCJlcXVhbCQ2IiwibWF4JDEwIiwibWluJDEwIiwic3ltYm9sJDYxIiwic3ltYm9sJDYyIiwic3ltYm9sJDYzIiwic3ltYm9sJDY0IiwiYXNyIiwibGFuZCIsImxub3QkMCIsImxvciIsImxzbCIsImxzciIsImx4b3IiLCJtb2QiLCJhYnMkMCIsImZhaWx3aXRoJDAiLCJmc3QiLCJpbnZhbGlkX2FyZyQwIiwic25kIiwicGh5c19lcXVhbCIsImRlY3IiLCJpbmNyIiwiZmxvYXRfb2Zfc3RyaW5nIiwiYW1fdGVzdGluZyIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwidCIsImYiLCJmb2xkX3JpZ2h0IiwiaXRlciIsIml0ZXJpIiwibWFwIiwibWFwaSIsInN0YWJsZV9zb3J0Iiwic3dhcCIsImoiLCJlbHRfaSIsImVsdF9qIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInRvX2ludCIsInVuc2FmZV9vZl9pbnQiLCJ1cHBlcmNhc2UiLCJpbnRfaXNfb2siLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJvZl9pbnQiLCJvZl9pbnRfZXhuIiwidDEiLCJ0MiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJzdWNjIiwiaGRfZXhuIiwibGVuZ3RoIiwicmV2X2FwcGVuZCIsInRsX2V4biIsInVuemlwIiwiZXhpc3RzIiwiZXhpc3RzMl9vayIsImwxIiwibDIiLCJmb2xkMl9vayIsImZvcl9hbGwiLCJmb3JfYWxsMl9vayIsIml0ZXIyX29rIiwibm9udGFpbF9tYXAiLCJub250YWlsX21hcGkiLCJwYXJ0aXRpb24iLCJyZXZfbWFwIiwicmV2X21hcDJfb2siLCJzb3J0IiwibCIsInJldiIsInJlcyIsInJlc3QiLCJhIiwiYiIsImhhc2hfZm9sZF91bml0IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZm9sZF9zdHJpbmciLCJhc19pbnQiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImhhc2hfZm9sZF9vcHRpb24iLCJoYXNoX2ZvbGRfZWxlbSIsImhhc2hfZm9sZF9saXN0IiwicyQxIiwibGlzdCQxIiwicyQyIiwibGlzdCIsImxpc3QkMCIsInMkMCIsImhhc2hfZm9sZF9sYXp5X3QiLCJoYXNoX2ZvbGRfcmVmX2Zyb3plbiIsImhhc2hfZm9sZF9hcnJheV9mcm96ZW4iLCJhcnJheSIsImUiLCJpJDAiLCJoYXNoX25hdGl2ZWludCIsImhhc2hfaW50NjQiLCJoYXNoX2ludDMyIiwiaGFzaF9jaGFyIiwiaGFzaF9pbnQiLCJoYXNoX2Jvb2wiLCJoYXNoX3N0cmluZyIsImhhc2hfZmxvYXQiLCJoYXNoX3VuaXQiLCJzZWVkIiwib2ZfZm9sZCIsImhhc2hfZm9sZF90IiwicnVuIiwiZm9sZGVyIiwib3B0Iiwic3RoIiwiY29tcGFyZV9zdGF0ZSIsInN0YXRlX3RvX3N0cmluZyIsInN0YXRlIiwidCQwIiwidCQxIiwidCQyIiwidCQzIiwidCQ0IiwidCQ1IiwiY29tcGFyZV9hYnN0cmFjdCIsInR5cGVfbmFtZSIsImVxdWFsX2Fic3RyYWN0IiwiY29tcGFyZV9ib29sIiwiY29tcGFyZV9jaGFyIiwiY29tcGFyZV9mbG9hdCIsImNvbXBhcmVfaW50IiwiY29tcGFyZV9pbnQzMiIsImNvbXBhcmVfaW50NjQiLCJjb21wYXJlX25hdGl2ZWludCIsImNvbXBhcmVfc3RyaW5nIiwiY29tcGFyZV91bml0IiwiY29tcGFyZV9hcnJheSIsImNvbXBhcmVfZWx0IiwibGVuX2EiLCJsZW5fYiIsInJldCIsInIiLCJjb21wYXJlX2xpc3QiLCJhJDAiLCJiJDAiLCJ5cyIsInhzIiwiY29tcGFyZV9vcHRpb24iLCJjb21wYXJlX3JlZiIsImVxdWFsX2Jvb2wiLCJlcXVhbF9jaGFyIiwiZXF1YWxfaW50IiwiZXF1YWxfaW50MzIiLCJlcXVhbF9pbnQ2NCIsImVxdWFsX25hdGl2ZWludCIsImVxdWFsX3N0cmluZyIsImVxdWFsX3VuaXQiLCJlcXVhbF9mbG9hdCIsImVxdWFsX2FycmF5IiwiZXF1YWxfZWx0IiwiZXF1YWxfbGlzdCIsImVxdWFsX29wdGlvbiIsImVxdWFsX3JlZiIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsImhhc2giLCJoc3YiLCJhcmciLCJhMCIsImhzdiQwIiwiYTAkMCIsImhzdiQxIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJmdW5jIiwicmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UiLCJpbml0aWFsaXplX21vZHVsZSIsImNsZWFyX2JhY2t0cmFjZSIsIndpdGhfcmV0dXJuIiwiaXNfYWxpdmUiLCJyZXR1cm4kMCIsIndpdGhfcmV0dXJuX29wdGlvbiIsInByZXBlbmQiLCJwYXJhbSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwiYmluZCQwIiwicmV0dXJuJDEiLCJtYXAkMCIsInRvX21vbmFkIiwib2ZfbW9uYWQiLCJkZXJpdmVkX21hcCIsIm1hcDIiLCJ0YSIsInRiIiwibWFwMyIsInRjIiwic3ltYm9sJDAiLCJ1Iiwic3ltYm9sJDEiLCJ0ZiIsImZhYiIsImMiLCJhcHBseSIsIm1mIiwibXgiLCJ0eCIsImN1c3RvbV9tYXAiLCJhcHBseSQwIiwiYmxpdF9zdHJpbmciLCJtYWtlIiwidW5zYWZlX2JsaXQiLCJ1bnNhZmVfdG9fc3RyaW5nIiwidW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211IiwiY29tcGFyYXRvciIsImVycm9yX3NvdXJjZV8wMTEiLCJjbXBfZiIsImNtcF9zIiwiaGFzaF9mb2xkX2YiLCJoYXNoX2ZvbGRfcyIsInRfb2Zfc2V4cCIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwiZl9zZXhwX2dyYW1tYXIiLCJzX3NleHBfZ3JhbW1hciIsIm9wYXF1ZV9pZGVudGl0eSIsIm5hbWUiLCJnZXQiLCJmc2V0Iiwic2V0dGVyIiwidXBkYXRlciIsImZpZWxkIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInNlcCIsIm4iLCJuJDAiLCJuJDEiLCJoc3YkMiIsInBvc19jbnVtXzAxMCIsInBvc19ib2xfMDA4IiwicG9zX2xudW1fMDA2IiwicG9zX2ZuYW1lXzAwNCIsImFyZ18wMTEiLCJibmRzXzAwMyIsImFyZ18wMDkiLCJibmRzXzAwMyQwIiwiYXJnXzAwNyIsImJuZHNfMDAzJDEiLCJhcmdfMDA1IiwiYm5kc18wMDMkMiIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJtYWtlX2xvY2F0aW9uX3N0cmluZyIsInBvc19mbmFtZSIsInBvc19sbnVtIiwicG9zX2NudW0iLCJwb3NfYm9sIiwiaXNfZW1wdHkiLCJwYXJ0aXRpb25fbWFwIiwiZnN0JDAiLCJ5JDAiLCJzbmQkMCIsImVycm9yX3NvdXJjZV8wMDUiLCJvZl9hXzAwMSIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMyIsInJlczBfMDI0IiwiYV9zZXhwX2dyYW1tYXIiLCJiX3NleHBfZ3JhbW1hciIsImNtcF9hIiwiY21wX2IiLCJhXzAyNyIsImJfMDI4IiwiYV8wMjkiLCJiXzAzMCIsImFfMDMxIiwiYl8wMzIiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3IiwiYl8wMzgiLCJoYXNoX2ZvbGRfYSIsImhhc2hfZm9sZF9iIiwieCQwIiwiY2hlY2tfb2siLCJjaGVja19lcnJvciIsIm9rIiwiZXJyb3IiLCJmYWlsIiwiZmFpbGYiLCJtYXBfZXJyb3IiLCJiaW5kJDEiLCJtYXAkMSIsInJldHVybiQyIiwiaXNfb2siLCJpc19lcnJvciIsIm9mX29wdGlvbiIsIml0ZXJfZXJyb3IiLCJ0b19laXRoZXIiLCJvZl9laXRoZXIiLCJva19pZl90cnVlIiwiYm9vbCIsInRyeV93aXRoIiwib2tfZXhuIiwib2tfb3JfZmFpbHdpdGgiLCJjb21iaW5lIiwiZXJyIiwib2sxIiwib2syIiwiZXJyMSIsImVycjIiLCJjb21iaW5lX2Vycm9ycyIsImVycnMiLCJjb21iaW5lX2Vycm9yc191bml0IiwiY291bnQiLCJzdW0iLCJNIiwiZm9sZF9yZXN1bHQiLCJhY2MiLCJpdGVtIiwiZm9sZF91bnRpbCIsImZpbmlzaCIsIm1pbl9lbHQiLCJlbHQiLCJtYXhfZWx0IiwiZmluZF9tYXAiLCJmaW5kIiwidG9fYXJyYXkiLCJpdGVyJDAiLCJpdGVyJDEiLCJsZW5ndGgkMCIsImxlbmd0aCQxIiwiaXNfZW1wdHkkMCIsInN1bSQwIiwibSIsImNvdW50JDAiLCJleGlzdHMkMCIsImZvcl9hbGwkMCIsImZpbmRfbWFwJDAiLCJmaW5kJDAiLCJ0b19saXN0JDAiLCJ0b19hcnJheSQwIiwibWluX2VsdCQwIiwibWF4X2VsdCQwIiwiZm9sZF9yZXN1bHQkMCIsImZvbGRfdW50aWwkMCIsImZvbGQkMCIsIm1lbSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJzZXhwX29mX2EiLCJzbG93X2NoZWNrX3Bvc19sZW5fZXhuIiwicG9zIiwidG90YWxfbGVuZ3RoIiwiY2hlY2tfcG9zX2xlbl9leG4iLCJzdG9wIiwiZ2V0X3Bvc19sZW5fZXhuIiwibGVuJDAiLCJvZl9zdGF0ZSIsImFzc2lnbiIsImRzdCIsInNyYyIsImRzdCQwIiwic3JjJDAiLCJtYWtlX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJzcGxpdF9mcm9tX3BhcmVudCIsImdldF9zdGF0ZSIsInJhbmRvbV9rZXkiLCJmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMiLCJhbGxvd19pbl90ZXN0cyIsImJpdHMiLCJpbnQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJjaGFyJDAiLCJhc2NpaSIsIm1ha2Vfc2VsZl9pbml0IiwiaW50X29uXzY0Yml0cyIsImJvdW5kIiwiaW50X29uXzMyYml0cyIsImludCQxIiwiYml0cyQwIiwiZnVsbF9yYW5nZV9pbnQ2NCIsImJpdHMkMSIsImZ1bGxfcmFuZ2VfaW50MzIiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMkMCIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50IiwicmFpc2VfY3Jvc3NlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kIiwic3RyaW5nX29mX2JvdW5kIiwiaW50X2luY2wiLCJsbyIsImhpIiwiZGlmZiIsImludDMyX2luY2wiLCJuYXRpdmVpbnRfaW5jbCIsImludDY0X2luY2wiLCJmbG9hdCQwIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQyIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwic3RoJDAiLCJudW1fc3dhcHMiLCJ0aGlzX2kiLCJyYW5kb21faSIsImNvbnN0JDAiLCJub24iLCJmb3JldmVyIiwiZSQwIiwiY29tcG9zZSIsImciLCJmbGlwIiwiYXBwbHlfbl90aW1lcyIsIngkMSIsInNleHBfMDA2IiwiZXJyb3Jfc291cmNlXzAyMiIsImZvbGRfbGVmdCIsImFfMDA2IiwiYl8wMDciLCJhXzAwOCIsImJfMDA5Iiwib2ZfYV8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwic3RoJDEiLCJoZCIsInRsIiwibnRoIiwibnRoX2V4biIsInVub3JkZXJlZF9hcHBlbmQiLCJvZl9saXN0cyIsInNoYXJlZF9sZW5ndGgiLCJzaGFyZWRfbGVuZ3RoJDAiLCJjaGVja19sZW5ndGgyX2V4biIsInRhaWxfb2ZfYiIsInRhaWxfb2ZfYSIsImNoZWNrX2xlbmd0aDIiLCJvZl9saXN0cyQwIiwibDMiLCJjJDAiLCJjaGVja19sZW5ndGgzX2V4biIsInRhaWxfb2ZfYyIsIm4xIiwibjIiLCJuMyIsImNoZWNrX2xlbmd0aDMiLCJpdGVyMiIsIml0ZXIyX2V4biIsInJldl9tYXAyIiwicmV2X21hcDJfZXhuIiwiZm9sZDIiLCJmb2xkMl9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsImFjY3UiLCJmaWx0ZXIiLCJub3RfZm91bmQiLCJmaW5kX21hcF9leG4iLCJub3RfZm91bmQkMCIsImZpbmRfZXhuIiwiZmluZGkiLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsImZpbmRfbWFwaSIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsImZvcl9hbGxpIiwiZXhpc3RzaSIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDEkMCIsImwyJDAiLCJsMyQwIiwiYWMiLCJsMyQxIiwibDIkMSIsImwxJDEiLCJhYyQwIiwicmV2X21hcDMiLCJyZXZfbWFwM19leG4iLCJtYXAzX29rIiwibWFwM19leG4iLCJyZXZfbWFwX2FwcGVuZCIsImgiLCJsaXN0JDIiLCJ1bnppcDMiLCJ6IiwiemlwX2V4biIsInppcCIsInJldl9tYXBpIiwiZm9sZGluZ19tYXBpIiwiZm9sZF9tYXBpIiwiZm9sZGkiLCJmaWx0ZXJpIiwicmVkdWNlIiwicmVkdWNlX2V4biIsInJlZHVjZV9iYWxhbmNlZCIsInN0ZXBfYWNjdW0iLCJudW0iLCJudW0kMCIsImFjYyQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwic3ltYm9sJDIiLCJsYXN0X2V4biIsImxhc3QiLCJpc19wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsInByZWZpeCQxIiwiaGQkMCIsImZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIiwiYTEiLCJhMSQwIiwiYTIiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImwkMCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImNvdW50aSIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwiZmlsdGVyX21hcCIsInJldl9maWx0ZXJfbWFwaSIsImkkMSIsImZpbHRlcl9tYXBpIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJwYXJ0aXRpb25fdGYiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAxNCIsIm9mX2JfMDE1IiwieF8wMjMiLCJzZXhwXzAyMSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwic2V4cF9vZl90JDEiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsIm1lbSQwIiwicmVtb3ZlIiwiYWRkIiwiaW52ZXJzZSIsIm1hcCQyIiwiZWwiLCJzcGxpdF9uIiwidF9vcmlnIiwidGFrZSIsImRyb3AiLCJjaHVua3Nfb2YiLCJsJDEiLCJzdWJsaXN0Iiwic3BsaXRfd2hpbGUiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImRyb3BfbGFzdCIsImRyb3BfbGFzdF9leG4iLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsImxpc3QxIiwibGlzdDIiLCJjb25jYXRfbm9fb3JkZXIiLCJjb25zIiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwiYXJyIiwicmFuZG9tX2VsZW1lbnRfZXhuIiwicmFuZG9tX2VsZW1lbnQiLCJjbXAiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMV8wMTMiLCJyZXMyXzAxNCIsImFyZzFfMDE2IiwicmVzMV8wMTgiLCJhcmcyXzAyMSIsImFyZzFfMDIwIiwiYXJnMF8wMTkiLCJyZXMxXzAyMyIsInJlczJfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJ0b19zdHJpbmdzX2h1bSIsInN0cmluZyIsInNleHAkMCIsInNleHAkMSIsInRhZyIsInRhZyQwIiwic2V4cCQyIiwidGFnJDEiLCJib2R5IiwidHJ1bmNfYWZ0ZXIiLCJ0cyQwIiwidHMkMSIsImFjJDEiLCJ0b19zZXhwc19odW0iLCJoZXJlIiwiaGVyZSQwIiwidG9fc2V4cF9odW0iLCJzZXhwcyIsInRvX21lc3NhZ2UiLCJpbmZvIiwib2ZfbWVzc2FnZSIsInRvX3N0cmluZ19odW0iLCJtZXNzYWdlIiwidG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIiwib2ZfbGF6eSIsIm9mX2xhenlfc2V4cCIsIm9mX2xhenlfdCIsImxhenlfdCIsImNyZWF0ZWYiLCJvZl90aHVuayIsInN0cmljdCIsInNleHBfb2ZfeCIsInRhZ19zX2xhenkiLCJ0YWdfcyIsInRhZ19hcmciLCJ0b19leG4iLCJvZl9leG4iLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwiYmFja3RyYWNlJDIiLCJyYWlzZSIsInJhaXNlX3MiLCJ0b19pbmZvIiwib2ZfaW5mbyIsImNoZWNrX2ZpZWxkIiwiYV8wMDciLCJiXzAwOCIsIm9mX2FfMDEzIiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3IiwiaW52YXJpYW50X2EiLCJlMSIsImUyIiwidHJ5X3dpdGhfam9pbiIsIm9mX2V4bl9yZXN1bHQiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidW5pbXBsZW1lbnRlZCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImlzX3Bvc2l0aXZlIiwiaXNfbm9uX25lZ2F0aXZlIiwiaXNfbmVnYXRpdmUiLCJpc19ub25fcG9zaXRpdmUiLCJzaWduIiwiaGFzaF9wYXJhbSIsInBvbHkiLCJvZl9rZXkiLCJLZXkiLCJ0b19rZXkiLCJoYXNoX3BhcmFtJDAiLCJwb2x5JDAiLCJvZl9rZXkkMCIsInRvX2tleSQwIiwiaGFzaGFibGUiLCJnZXRfcG9zX2xlbiIsImZpbmRfZmlyc3Rfc2F0aXNmeWluZyIsInByZWQiLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsInNyY19wb3MiLCJkc3RfcG9zIiwiYmxpdG8iLCJzcmNfbGVuIiwic3VibyIsImNyZWF0ZV9saWtlIiwidW5zYWZlX2JsaXQkMCIsImlzX25vbmUiLCJpc19zb21lIiwidmFsdWVfbWFwIiwibyIsImNhbGwiLCJ2YWx1ZV9leG4iLCJlcnJvciQwIiwibSQwIiwibSQxIiwidmFsdWVfb3JfdGh1bmsiLCJzb21lIiwiZmlyc3Rfc29tZSIsInNvbWVfaWYiLCJjb25kIiwiYV9vZl9zZXhwIiwiYl9vZl9zZXhwIiwic2V4cF9vZl9iIiwiY19vZl9zZXhwIiwic2V4cF9vZl9jIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZWl0aGVyIiwib3RoZXJfbG9vcCIsInJldHVybl9sb29wIiwiY29tYmluZV9hbGwiLCJvdGhlcl9sb29wJDAiLCJyZXR1cm5fbG9vcCQwIiwiY29tYmluZV9hbGxfdW5pdCIsInRvX29wdGlvbiIsImVpdGhlciQwIiwiY29tYmluZSQwIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImVycm9yX3NvdXJjZV8wMjUiLCJvZl9zXzAwMiIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxOSIsImFfMDE3IiwiYl8wMjAiLCJiXzAxOCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIxIiwib2ZfYl8wMjIiLCJzZXhwXzAyNyIsInRhZ18wMjgiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfYXJnc18wMjkiLCJhcmcwXzAzMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsIm9mX2FfMDQ2Iiwib2ZfYl8wNDciLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsInNldCIsInN3YXAkMCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25pX3RmIiwidHJ1ZXMiLCJmYWxzZXMiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwidG9fc2VxdWVuY2UiLCJpMSIsImkyIiwidHQiLCJ3aWR0aCIsImRlcHRoIiwiZCIsInciLCJ0dCQwIiwiZ2V0JDAiLCJ6ZXJvX29iaiIsImNyZWF0ZV96ZXJvIiwidW5zYWZlX2dldCIsInVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSIsIm9iaiIsInNldF93aXRoX2NhbWxfbW9kaWZ5IiwidW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVuIiwib2xkX29iaiIsInVuc2FmZV9zZXQiLCJ1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGUiLCJ1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV8iLCJ1bnNhZmVfc2V0X2ludCIsInVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIiwidW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIiwiY3JlYXRlX29ial9hcnJheSIsIm9mX2FycmF5IiwiZ3JhbW1hciIsImNlaWwiLCJmbG9vciIsIm1vZF9mbG9hdCIsIm1vZGYiLCJtYXhfZmluaXRlX3ZhbHVlIiwiY2xhc3NpZnlfZmxvYXQiLCJhYnNfZmxvYXQiLCJpc19pbnRlZ2VyIiwiZnJleHAiLCJsZGV4cCIsImlzX25hbiIsInRvX2ludDY0X3ByZXNlcnZlX29yZGVyIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIiwib2ZfaW50NjRfcHJlc2VydmVfb3JkZXIiLCJvbmVfdWxwIiwiZGlyIiwidXBwZXJfYm91bmRfZm9yX2ludCIsImV4cCIsImlzX3hfbWludXNfb25lX2V4YWN0IiwibG93ZXJfYm91bmRfZm9yX2ludCIsIm1pbl9pbnRfYXNfZmxvYXQiLCJib3giLCJpc19sb3dlcmNhc2UiLCJpc191cHBlcmNhc2UiLCJpc19wcmludCIsImlzX3doaXRlc3BhY2UiLCJpc19kaWdpdCIsImlzX2FscGhhIiwiaXNfYWxwaGFudW0iLCJnZXRfZGlnaXRfdW5zYWZlIiwiZ2V0X2RpZ2l0X2V4biIsImdldF9kaWdpdCIsImlzX2hleF9kaWdpdCIsImlzX2hleF9kaWdpdF9sb3dlciIsImlzX2hleF9kaWdpdF91cHBlciIsImdldF9oZXhfZGlnaXRfZXhuIiwiZ2V0X2hleF9kaWdpdCIsInRfb2Zfc2V4cCQxIiwiYzEiLCJjMiIsImhhc2hfZm9sZF90JDEiLCJoYXNoJDEiLCJ0cl9jcmVhdGVfbWFwIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJ0cl9tYXAiLCJpJDMiLCJpJDIiLCJpbmRleCQwIiwibGFzdF9yZXBsYWNlbWVudCIsImluZGV4IiwiZmlyc3RfdGFyZ2V0Iiwic3RhZ2UiLCJ1bnN0YWdlIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwiYV8wMDIiLCJiXzAwMyIsImttcF9hcnJheV8wMTEiLCJjYXNlX3NlbnNpdGl2ZV8wMDkiLCJwYXR0ZXJuXzAwNyIsImFyZ18wMTIiLCJibmRzXzAwNiIsImFyZ18wMTAiLCJibmRzXzAwNiQwIiwiYXJnXzAwOCIsImJuZHNfMDA2JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJsZmluZGkiLCJyZmluZGkiLCJsYXN0X25vbl9kcm9wIiwicnN0cmlwIiwiZmlyc3Rfbm9uX2Ryb3AiLCJsc3RyaXAiLCJzdHJpcCIsInRyIiwidHJfbXVsdGkiLCJjb25jYXRfYXJyYXkiLCJhciIsIm91dCIsIm91dF9wb3MiLCJvdXQkMCIsImNob3BfcHJlZml4IiwiY2hvcF9wcmVmaXhfaWZfZXhpc3RzIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3N1ZmZpeF9leG4iLCJzaG9ydGVyIiwic2hvcnRlc3QiLCJwb3NfZnJvbV9sZWZ0IiwicG9zX2Zyb21fcmlnaHQiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AiLCJnZXRfcG9zIiwibWF4X2xlbiIsImxlbl9zb19mYXIiLCJsZW5fc29fZmFyJDAiLCJsZW5fc29fZmFyJDEiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AiLCJmaXJzdCQwIiwibWF4X2xlbiQwIiwibWF4X2xlbiQxIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWMyIiwiY29tbW9uX2dlbmVyaWMiLCJjb21tb25fcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4X2xlbmd0aCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsInVuc2FmZV9ibGl0JDEiLCJtYXBpJDAiLCJvY2FtbF9sZXhfdGFibGVzIiwicGFyc2VfaGV4IiwibGV4YnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJjb252ZXJ0X2ZhaWx1cmUiLCJudW1fYml0c19pbnQiLCJudW1fYml0c19uYXRpdmVpbnQiLCJudW1fYml0c19pbnQzMiIsIm51bV9iaXRzX2ludDY0IiwibWluX2ludDMyIiwibWF4X2ludDMyIiwibWluX2ludDY0IiwibWF4X2ludDY0IiwibWluX25hdGl2ZWludCIsIm1heF9uYXRpdmVpbnQiLCJpbnQ2NF90b19zdHJpbmciLCJuYXRpdmVpbnRfdG9fc3RyaW5nIiwiaW50MzJfdG9faW50X3RydW5jIiwiaW50X3RvX2ludDMyX3RydW5jIiwiaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIiLCJpbnRfdG9faW50MzIiLCJpbnQzMl90b19pbnQiLCJpbnRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9faW50X2V4biIsImludF90b19pbnQ2NCIsImludDY0X3RvX2ludF90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IiwiaW50NjRfdG9faW50IiwiaW50NjRfdG9faW50X2V4biIsImludF90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludCIsIm5hdGl2ZWludF90b19pbnRfZXhuIiwiaW50MzJfdG9faW50NjQiLCJpbnQ2NF90b19pbnQzMl90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MyIsImludDY0X3RvX2ludDMyIiwiaW50NjRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9fbmF0aXZlaW50IiwibmF0aXZlaW50X3RvX2ludDMyX3RydW5jIiwibmF0aXZlaW50X3RvX2ludDMyIiwibmF0aXZlaW50X3RvX2ludDMyX2V4biIsImludDY0X3RvX25hdGl2ZWludF90cnVuYyIsIm5hdGl2ZWludF90b19pbnQ2NCIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aSIsImludDY0X3RvX25hdGl2ZWludCIsImludDY0X3RvX25hdGl2ZWludF9leG4iLCJpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYiLCJpbnQ2NF9maXRfb25faW50NjNfZXhuIiwiaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSIsImRlbGltaXRlciIsImNoYXJzX3Blcl9kZWxpbWl0ZXIiLCJpbnB1dF9sZW5ndGgiLCJoYXNfc2lnbiIsIm51bV9kaWdpdHMiLCJudW1fZGVsaW1pdGVycyIsIm91dHB1dF9sZW5ndGgiLCJpbnB1dF9wb3MiLCJvdXRwdXRfcG9zIiwibnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciIsImZpcnN0X2RpZ2l0X3BvcyIsImluc2VydF9kZWxpbWl0ZXIiLCJpbnNlcnRfdW5kZXJzY29yZXMiLCJzZXhwX29mX2ludF9zdHlsZSIsImRlbGltaXRlciQwIiwibWFrZV9zdWZmaXgiLCJ0b19zdHJpbmckMCIsImludmFsaWQiLCJvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIiLCJsZXgiLCJib2R5JDAiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW4iLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUiLCJpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIiwib3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIiwiaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbCIsImludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyIsIm5lZ2F0aXZlX2V4cG9uZW50Iiwib3ZlcmZsb3ciLCJpbnRfcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaW50NjRfcG93IiwiaW50NjNfcG93X29uX2ludDY0IiwicnZhbCIsIm9uZSIsInJvdW5kX2Rvd24iLCJtb2R1bHVzIiwicm91bmRfdXAiLCJyZW1haW5kZXIiLCJyb3VuZF90b3dhcmRzX3plcm8iLCJ0b19tdWx0aXBsZV9vZiIsInJvdW5kX25lYXJlc3QiLCJtb2R1bHVzX21pbnVzX3JlbWFpbmRlciIsInJvdW5kIiwiaDAxIiwibWFzayIsImludDY0X3BvcGNvdW50IiwieCQyIiwiaW50MzJfcG9wY291bnQiLCJuYXRpdmVpbnRfcG9wY291bnQiLCJtb2R1bGVfbmFtZSQwIiwib2Zfc3RyaW5nJDAiLCJmbG9hdF9sb3dlcl9ib3VuZCIsImZsb2F0X3VwcGVyX2JvdW5kIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwiZnVuYyQwIiwiemVybyIsIm1pbnVzX29uZSIsIm5lZyIsIm9mX3N0cmluZyQxIiwib2ZfaW50MzIiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMiIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0Iiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50IiwibWF4X3ZhbHVlXzMwX2JpdHMiLCJhYnMiLCJyZW0iLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwic2hpZnRfbGVmdCIsImJpdF9ub3QiLCJiaXRfb3IiLCJiaXRfYW5kIiwiYml0X3hvciIsInBvdyIsIm5vbl9wb3NpdGl2ZV9hcmd1bWVudCIsImNlaWxfcG93MiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsImZsb29yX3BvdzIiLCJpc19wb3cyIiwiZmxvb3JfbG9nMiIsImNlaWxfbG9nMiIsInBvcGNvdW50IiwibG5vdCIsInN1Y2NfZXhuIiwibXNnIiwicHJlZF9leG4iLCJvZl9zY2FsYXIiLCJvZl9zY2FsYXJfZXhuIiwidG9fc2NhbGFyIiwidG9fY2hhciIsInRvX2NoYXJfZXhuIiwidXRmOF9ieXRlX2xlbmd0aCIsInVjaGFyIiwiY29kZXBvaW50Iiwic29tZV90IiwicmVmbCIsInN5bSIsInRyYW5zIiwiY29udiIsImRldHVwbGUyIiwidHVwbGUyIiwid2l0bmVzcyIsInZfMDA1IiwidG9fc2V4cCIsInVpZCIsInNhbWVfd2l0bmVzcyIsInNhbWUiLCJzYW1lX3dpdG5lc3NfZXhuIiwibm9uZV9zdWJzdGl0dXRlIiwibm9uZSIsInZhbHVlX3Vuc2FmZSIsIm9mX3NleHBhYmxlIiwidG9fc2V4cGFibGUiLCJ4XzAwMyIsIm9mX2FfMDA0IiwieF8wMDUiLCJpbml0X3NvbWUiLCJnZXRfc29tZV9leG4iLCJpc19ub25lJDAiLCJpc19zb21lJDAiLCJzZXRfc29tZSIsInNldF9ub25lIiwidW5zYWZlX2dldF9zb21lX2V4biIsInVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIiwidW5zYWZlX2lzX3NvbWUiLCJ1bnNhZmVfc2V0X3NvbWUiLCJ1bnNhZmVfc2V0X25vbmUiLCJjbGVhciIsImVsZW0iLCJtYXBfc29tZSIsIm9mX2FycmF5X3NvbWUiLCJjYXBhY2l0eSIsImVsdHMiLCJsZW5ndGhfMDAzIiwiZWx0c18wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInJlc2l6ZSIsInNpemUiLCJzZXRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkkMCIsInB1c2giLCJwb3Bfbm9uZW1wdHkiLCJwb3BfZXJyb3IiLCJwb3AiLCJwb3BfZXhuIiwidG9wX25vbmVtcHR5IiwidG9wX2Vycm9yIiwidG9wIiwidG9wX2V4biIsInVudGlsX2VtcHR5IiwiaGFzaF9vdmVycmlkZSIsIm9mX3BvcyIsIm9mX3NpZ24iLCJ0b19zaWduX2V4biIsInRvX2ludF9leG4iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAyNyIsImludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbSIsImFsbF9vZl9hIiwiZW51bWVyYXRlXzAwMiIsImVudW1lcmF0ZV8wMDEiLCJhY2MkMiIsIm9mX2FfMDAzIiwic2V4cF8wMDgiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwidF8wMTQiLCJ0XzAxMyIsInRfMDE2IiwidF8wMTUiLCJyaWdodF8wMTgiLCJsZWZ0XzAxNyIsInJpZ2h0XzAyMiIsImxlZnRfMDIxIiwidF8wMjQiLCJ0XzAyMyIsInRfMDI2IiwidF8wMjUiLCJyaWdodF8wMjAiLCJsZWZ0XzAxOSIsInRfMDMwIiwidF8wMjkiLCJ0XzAzMiIsInRfMDMxIiwicmlnaHRfMDM0IiwibGVmdF8wMzMiLCJyaWdodF8wMzgiLCJsZWZ0XzAzNyIsInRfMDQwIiwidF8wMzkiLCJ0XzA0MiIsInRfMDQxIiwicmlnaHRfMDM2IiwibGVmdF8wMzUiLCJvZl9rXzA0MyIsIm9mX3ZfMDQ0Iiwic2V4cF8wNzEiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJhdG9tXzA0NyIsInNleHBfYXJnc18wNTAiLCJhdG9tXzA0NyQwIiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2NCIsInJlczBfMDY1IiwicmVzMV8wNzAiLCJvZl9rXzA3MiIsIm9mX3ZfMDczIiwiYXJnMV8wODIiLCJhcmcwXzA4MSIsInJlczBfMDgzIiwidl8wNzQiLCJyZXMxXzA4NCIsInZfMDc2IiwiYXJnMV8wNzgiLCJhcmcwXzA3NyIsInJlczBfMDc5IiwicmVzMV8wODAiLCJ2XzA3NSIsImtfc2V4cF9ncmFtbWFyIiwidl9zZXhwX2dyYW1tYXIiLCJjbXBfbGVmdCIsImNtcF9yaWdodCIsImFfMDg1IiwiYl8wODYiLCJyaWdodF8wOTIiLCJsZWZ0XzA5MSIsInRfMDk0IiwidF8wOTMiLCJ0XzA5NiIsInRfMDk1IiwicmlnaHRfMDg4IiwibGVmdF8wODciLCJyaWdodF8wOTAiLCJsZWZ0XzA4OSIsImFfMDk3IiwiYl8wOTgiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInRfMTA2IiwidF8xMDUiLCJ0XzEwOCIsInRfMTA3IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8xMDIiLCJsZWZ0XzEwMSIsIm9mX2xlZnRfMTA5Iiwib2ZfcmlnaHRfMTEwIiwidl8xMTMiLCJhcmcxXzExNSIsImFyZzBfMTE0IiwicmVzMF8xMTYiLCJyZXMxXzExNyIsInZfMTExIiwidl8xMTIiLCJzZXhwX29mX3QkMyIsImhlaWdodCIsImluX3JhbmdlIiwiaGwiLCJociIsImxvd2VyJDEiLCJpbnZhcmlhbnRzIiwiaCQxIiwiaCQwIiwic2wiLCJzciIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayIsImtsIiwiayQxIiwia2wkMCIsImskMiIsImtyIiwibGVmdF9sZW5ndGgiLCJyaWdodF9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwiYXJyYXlfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5IiwiaW5jcmVhc2luZyIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiQwIiwibHJsIiwibHJ2IiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2JDAiLCJybGwiLCJybHYiLCJhdXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInJlbW92ZV9pbmRleCIsImxfc2l6ZSIsInVuaW9uIiwidjEkMCIsInYyJDAiLCJyMiQwIiwicjEkMCIsInVuaW9uX2xpc3QiLCJ0b190cmVlIiwiaW50ZXIiLCJvdGhlcl9zZXQiLCJlJDEiLCJjb25zX3JpZ2h0Iiwib2Zfc2V0IiwiZW51bSQwIiwidHJlZSIsInN5bW1ldHJpY19kaWZmIiwiZWx0JDAiLCJlbnVtMSIsInRyZWUxIiwiZW51bTIiLCJ0cmVlMiIsImNvbXBhcmVfcmVzdWx0IiwibmV4dF9zdGF0ZSIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwiaW5jbHVzaXZlX2JvdW5kIiwic2lkZSIsIm1heWJlIiwidiQxIiwiaW5pdCQwIiwidiQyIiwidiQzIiwidiQ0IiwiZSQyIiwibWVyZ2VfdG9fc2VxdWVuY2UiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJ0MiQyIiwidDEkMiIsImlzX3N1YnNldCIsImFyZV9kaXNqb2ludCIsImFjY3UkMCIsImFjY3UkMSIsImZpbHQiLCJwYXJ0IiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJjaG9vc2VfZXhuIiwicG9zX3JlZiIsImdyb3VwX2J5IiwiZXF1aXYiLCJzZXQkMCIsImVxdWl2X2NsYXNzZXMiLCJub3RfZXF1aXZfeCIsImVxdWl2X3giLCJlcXVpdl9jbGFzc2VzJDAiLCJzdGFibGVfZGVkdXBfbGlzdCIsImxlZnRvdmVycyIsImFscmVhZHlfc2VlbiIsImFscmVhZHlfc2VlbiQwIiwibGVmdG92ZXJzJDAiLCJ0X29mX3NleHBfZGlyZWN0IiwiZWx0X2xzdCIsImVsX3NleHAiLCJpc19zdWJzZXQkMCIsInN1YnNldCIsInN1cGVyc2V0Iiwic2V4cF9vZl9lbHQiLCJpbnZhbGlkX2VsZW1lbnRzIiwiaW52YWxpZF9lbGVtZW50c19zZXhwIiwibGlrZSIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsImlzX3N1YnNldCQyIiwicGFydGl0aW9uX3RmJDAiLCJ0cmVlX2YiLCJ0cmVlX3QiLCJncm91cF9ieSQwIiwibnRoJDAiLCJyZW1vdmVfaW5kZXgkMCIsInRvX3NlcXVlbmNlJDAiLCJiaW5hcnlfc2VhcmNoJDAiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsImhhc2hfZm9sZF9kaXJlY3QiLCJ0X29mX3NleHBfZGlyZWN0JDAiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwiZWxlbWVudHMkMSIsIm1pbl9lbHQkMSIsIm1pbl9lbHRfZXhuJDEiLCJtYXhfZWx0JDEiLCJtYXhfZWx0X2V4biQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwiaXRlciQyIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJjb3VudCQxIiwic3VtJDEiLCJmaW5kJDEiLCJmaW5kX2V4biQxIiwiZmluZF9tYXAkMSIsImZvbGQkMSIsImZvbGRfdW50aWwkMSIsImZvbGRfcmlnaHQkMSIsImZpbHRlciQxIiwiZmlsdGVyX21hcCQwIiwicGFydGl0aW9uX3RmJDEiLCJpdGVyMiQxIiwibWVtJDEiLCJhZGQkMSIsInJlbW92ZSQxIiwidW5pb24kMSIsImludGVyJDEiLCJkaWZmJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiY29tcGFyZV9kaXJlY3QkMCIsImlzX3N1YnNldCQzIiwiYXJlX2Rpc2pvaW50JDEiLCJvZl9saXN0JDAiLCJvZl9zZXF1ZW5jZSQwIiwib2ZfYXJyYXkkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJudGgkMSIsInJlbW92ZV9pbmRleCQxIiwib2ZfdHJlZSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsImlzX3N1YnNldCQ0IiwidG9fdHJlZSQwIiwib2ZfdHJlZSQwIiwidF9vZl9zZXhwX2RpcmVjdCQxIiwiZW1wdHkkMCIsInNpbmdsZXRvbiQwIiwidW5pb25fbGlzdCQxIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQxIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX2xpc3QkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMSIsImZpbHRlcl9tYXAkMSIsImNvbXBhcmF0b3JfcyIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsInVuaW9uX2xpc3QkMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQyIiwib2Zfc29ydGVkX2FycmF5JDIiLCJvZl9saXN0JDIiLCJvZl9zZXF1ZW5jZSQyIiwib2ZfYXJyYXkkMiIsInN0YWJsZV9kZWR1cF9saXN0JDIiLCJmaWx0ZXJfbWFwJDIiLCJzZXhwX29mX21fdCIsIkVsdCIsIm1fdF9vZl9zZXhwIiwibV90X3NleHBfZ3JhbW1hciIsImNvbXBhcmVfbV90IiwiZXF1YWxfbV90IiwiaGFzaF9mb2xkX21fdCIsImhhc2hfbV90IiwiY29tcGFyYXRvciQwIiwiZW1wdHkkMiIsInNpbmdsZXRvbiQyIiwidW5pb25fbGlzdCQzIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQzIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDMiLCJvZl9zb3J0ZWRfYXJyYXkkMyIsIm9mX2xpc3QkMyIsIm9mX3NlcXVlbmNlJDMiLCJvZl9hcnJheSQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsIm1hcCQzIiwiZmlsdGVyX21hcCQzIiwib2ZfdHJlZSQxIiwidG9fdHJlZSQxIiwicmVwbGFjZSIsInNldF90ZW1wb3JhcmlseSIsInJlc3RvcmVfdG8iLCJzZXRzIiwic25hcHNob3QiLCJzZXRzX3RlbXBvcmFyaWx5IiwiYW5kX3ZhbHVlcyIsImluY19udW1fbXV0YXRpb25zIiwiZWx0c19pbmRleCIsImNoZWNrX2luZGV4X2V4biIsImVuc3VyZV9ub19tdXRhdGlvbiIsIm51bV9tdXRhdGlvbnMiLCJudW1fbXV0YXRpb25zXzAwMyIsImZyb250XzAwNSIsIm1hc2tfMDA3IiwibGVuZ3RoXzAwOSIsImVsdHNfMDExIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZnJvbnRfbm9uZW1wdHkiLCJsYXN0X25vbmVtcHR5IiwicGVlayIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwidF9yZXN1bHQiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcmlfaW5wbGFjZSIsInVucmVhY2hhYmxlX2NvZGUiLCJ6ZXJvJDAiLCJ6ZXJvJDEiLCJ0b19pbnRfdHJ1bmMiLCJ0b19pbnQzMl90cnVuYyIsIm9mX2ludDY0X3RydW5jIiwibmFtZSQwIiwib2ZfY29udGludWVfb3Jfc3RvcCIsInRvX2NvbnRpbnVlX29yX3N0b3AiLCJsZWZ0X3ZhbHVlIiwicmlnaHRfdmFsdWUiLCJ2YWx1ZXMiLCJsZWZ0X2RlZmF1bHQiLCJyaWdodF9kZWZhdWx0IiwicmlnaHQkMCIsImNvbXBhcmVfa2V5IiwidmwiLCJ2bCQwIiwidnIiLCJrMCIsImsxIiwibGQiLCJscmQiLCJscmQkMCIsInJkIiwicmxkIiwicmxkJDAiLCJyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50Iiwic2V4cF9vZl9rZXkiLCJmaW5kX2FuZF9hZGRfb3Jfc2V0IiwiZGF0YSIsImFkZF9vcl9zZXQiLCJkJDAiLCJhZGRfZXhuIiwiYWRkX2V4bl9pbnRlcm5hbCIsInNpbmdsZXRvbl90b190cmVlX2V4biIsImNvbGxhcHNlIiwiZ28iLCJhZGRfdW5jaGVja2VkIiwiZ28kMCIsInRvX3RyZWVfdW5jaGVja2VkIiwibWF4X2tleSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UiLCJidWlsZGVyIiwicHJldl9rZXkiLCJqb2luJDAiLCJsZCQwIiwibGskMCIsInJrIiwicmQkMCIsInJrJDAiLCJsayIsImNtcCQwIiwibWF5YmUkMCIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSIsImludG8iLCJib3VuZGFyeV9vcHQiLCJpbnNlcnRfaW50byIsInNwbGl0X3JhbmdlIiwibWlkX2FuZF9yaWdodCIsImxiJDEiLCJsYiQyIiwibWlkX2FuZF9yaWdodCQwIiwibGIiLCJsYiQwIiwibWlkJDAiLCJhZGRfbXVsdGkiLCJkYXRhJDAiLCJmaW5kX211bHRpIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJtaW5fdXBwZXIiLCJtYXhfbG93ZXIiLCJ1cHBlcl9wYXJ0X3dpdGhvdXRfbWluIiwiZ28kMSIsImNfbWluIiwiaW5pdCQxIiwiY19tYXgiLCJpbml0JDIiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInJhbmdlX3RvX2FsaXN0IiwiY29uY2F0X3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkMiIsImxlbmd0aCQzIiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwiZmlsdGVyX2tleXMiLCJwYXJ0aXRpb25fbWFwaSIsInBhaXIyIiwicGFpcjEiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMiIsImxlZnQkMiIsInJpZ2h0JDEiLCJrZXlzIiwib2ZfZm9sZGFibGVfZm9sZCIsImZvbGRhYmxlIiwicHJldl9kYXRhIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwibmV3X2RhdGEiLCJvZl9mb2xkYWJsZSIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2FsaXN0Iiwib2ZfYWxpc3Rfb3JfZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJvZl9mb2xkYWJsZV9tdWx0aSIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJ0b19hbGlzdCIsImtleV9vcmRlciIsIm1lcmdlX2xhcmdlX2ZpcnN0IiwibGVuZ3RoX2xhcmdlIiwidF9sYXJnZSIsInRfc21hbGwiLCJtZXJnZV9za2V3ZWQiLCJsZW5ndGgxIiwibGVuZ3RoMiIsInJlcGFja2FnZSIsIm1hcmtlciIsImNsb3Nlc3Rfa2V5IiwiZm91bmRfbWFya2VyIiwiZm91bmRfa2V5IiwiZm91bmRfdmFsdWUiLCJmb3VuZF92YWx1ZSQwIiwiZm91bmRfa2V5JDAiLCJyYW5rIiwibnVtX3RvX3NlYXJjaCIsInBhaXIiLCJwYWlyJDAiLCJiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCIsIm1heWJlX2JvdW5kIiwiaWZfZXhjbHVzaXZlIiwiaWZfaW5jbHVzaXZlIiwiZmluZF9ib3VuZCIsImJvdW5kJDAiLCJiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCQwIiwidXBwZXJfYm91bmQkMCIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwia2V5X29mX3NleHAiLCJ2YWx1ZV9vZl9zZXhwIiwiYWxpc3Rfc2V4cHMiLCJmb3VuZF9maXJzdF9rIiwiazJfc2V4cCIsInNleHBfb2ZfdmFsdWUiLCJlcnJvcl90cmVlIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJsaWtlMiIsImxpa2VfbWF5YmVfbm9fb3AiLCJvbGRfdCIsIm9sZF90cmVlIiwid2l0aF9zYW1lX2xlbmd0aCIsInNldCQxIiwiYWRkX2V4biQwIiwiYWRkX211bHRpJDAiLCJyZW1vdmVfbXVsdGkkMCIsImZpbmRfbXVsdGkkMCIsImNoYW5nZSQwIiwidXBkYXRlJDAiLCJpdGVyX2tleXMkMCIsIml0ZXJpX3VudGlsJDAiLCJmb2xkJDMiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlcmkkMCIsImZpbHRlcl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInN1YnJhbmdlIiwiaF9sIiwiaF9yIiwib3V0ZXJfam9pbmVkX2hlaWdodCIsIm1pZF9sZW5ndGgiLCJhcHBlbmQkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsInJhbmskMCIsInNleHBfb2ZfayIsInNleHBfb2ZfdiIsImhhc2hfZm9sZF9rZXkiLCJoYXNoX2ZvbGRfZGF0YSIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsInNldCQyIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJpdGVyX2tleXMkMSIsIml0ZXJpX3VudGlsJDEiLCJtYXBpJDEiLCJmb2xkJDQiLCJmb2xkMiQyIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwiY29tYmluZV9lcnJvcnMkMSIsImtleXMkMSIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzaSQxIiwiY291bnRpJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDAiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMiIsIm50aF9leG4kMCIsInJhbmskMSIsImtfb2Zfc2V4cCIsInZfb2Zfc2V4cCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UkMCIsIm1hcF9rZXlzJDAiLCJkdXAiLCJtYXBfa2V5c19leG4kMCIsImFkZF9leG4kMiIsIm9mX3RyZWUwIiwib2ZfdHJlZSQyIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2l0ZXJpJDEiLCJ0cmVlX2xlbmd0aCIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2ZfdHJlZSQzIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2FsaXN0X211bHRpJDIiLCJvZl9hbGlzdF9mb2xkJDIiLCJvZl9hbGlzdF9yZWR1Y2UkMiIsIm9mX2l0ZXJpJDIiLCJvZl9pdGVyaV9leG4kMiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMiIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDIiLCJvZl9zZXF1ZW5jZV9leG4kMiIsIm9mX3NlcXVlbmNlX211bHRpJDIiLCJvZl9zZXF1ZW5jZV9mb2xkJDIiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMiIsIm1hcF9rZXlzJDIiLCJtYXBfa2V5c19leG4kMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm1hcF9rZXlzJDMiLCJtYXBfa2V5c19leG4kMyIsInRyYW5zZmVyIiwicSIsInEkMCIsImZsb2F0X29mX2JpdHMiLCJiaXRzX29mX2Zsb2F0IiwiYnN3YXAxNiIsImJzd2FwMzIiLCJic3dhcDQ4IiwidG9fbmF0aXZlaW50X2V4biIsIndyYXBfZXhuIiwid3JhcF9tb2R1bG8iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsInNpZ25lZG5lc3MiLCJwb3Nfc3RyIiwiaW50NjMiLCJpbnQ2MyQwIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsInJlcHIiLCJvZl9pbnRfdHJ1bmMiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwidHJlZSQwIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJpbnZhcmlhbnRfa2V5IiwiaW52YXJpYW50X2RhdGEiLCJyZWFsX2xlbiIsIm5ld190IiwidDAiLCJuZXdfZGF0YSQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiZHVwZXMiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMiLCJzZXhwX29mX2RhdGEiLCJkX29mX3NleHAiLCJrX2dyYW1tYXIiLCJyb3ciLCJvbGQiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXlfZXhuIiwibWF5YmVfc2V0IiwidF9sZWZ0IiwidF9yaWdodCIsIm1lcmdlX2ludG8iLCJkc3RfZGF0YSIsImFjdGlvbiIsImRzdF9kYXRhJDAiLCJ0b19yZW1vdmUiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZmlsdGVyX21hcGlfaW5wbGFjZSIsIm1hcF9yZXN1bHRzIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwic2ltaWxhciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQwIiwiY3JlYXRlX21hcHBlZCQwIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQxIiwiY3JlYXRlX21hcHBlZCQxIiwiY3JlYXRlX3dpdGhfa2V5JDEiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMSIsImNyZWF0ZV93aXRoX2tleV9leG4kMSIsImdyb3VwJDEiLCJoYXNoYWJsZV9zIiwicG9seV9oYXNoYWJsZSIsInN0cmljdF9hZGQiLCJzdHJpY3RfYWRkX2V4biIsInN0cmljdF9yZW1vdmUiLCJzdHJpY3RfcmVtb3ZlX2V4biIsInNleHBfb2ZfZSIsImxhcmdlciIsInNtYWxsZXIiLCJvZl9oYXNodGJsX2tleXMiLCJoYXNodGJsIiwidG9faGFzaHRibCIsImVfb2Zfc2V4cCIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwicGkiLCJzcXJ0X3BpIiwic3FydF8ycGkiLCJldWxlciIsIm9mX2ludDYzIiwiaXJvdW5kX2xib3VuZCIsImlyb3VuZF91Ym91bmQiLCJpcm91bmRfdXAiLCJpcm91bmRfdXBfZXhuIiwiaXJvdW5kX2Rvd24iLCJpcm91bmRfZG93bl9leG4iLCJpcm91bmRfdG93YXJkc196ZXJvIiwiaXJvdW5kX3Rvd2FyZHNfemVyb19leG4iLCJyb3VuZF9uZWFyZXN0X2xiIiwicm91bmRfbmVhcmVzdF91YiIsIm9uZV91bHBfbGVzc190aGFuX2hhbGYiLCJhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCIsImlyb3VuZF9uZWFyZXN0XzMyIiwiaXJvdW5kX25lYXJlc3RfNjQiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzY2FsZSIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwiZXhwb25lbnRfbWFzazY0IiwiZXhwb25lbnRfbWFzayIsIm1hbnRpc3NhX21hc2siLCJtYW50aXNzYV9tYXNrNjQiLCJtYW50aXNzYV9iaXRzIiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJvcHQiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInN0aCIsInN0aCQwIiwicHJpbnRfbG9uZ2lkZW50IiwibG9uZ3ByZWZpeCIsInMkMCIsInkiLCJsb25naWRlbnRfbG9jIiwiY29uc3RhbnQiLCJpIiwibSIsImkkMCIsImkkMSIsImRlbGltIiwiaSQyIiwibSQwIiwibXV0YWJsZV9mbGFnIiwidmlydHVhbF9mbGFnIiwicmVjX2ZsYWciLCJyZiIsIm5vbnJlY19mbGFnIiwiZGlyZWN0aW9uX2ZsYWciLCJwcml2YXRlX2ZsYWciLCJjb25zdGFudF9zdHJpbmciLCJ0eXZhciIsInR5dmFyX2xvYyIsInN0cmluZ19xdW90IiwiY2xhc3NfcGFyYW1zX2RlZiIsImwiLCJ0eXBlX3BhcmFtIiwidHlwZV93aXRoX2xhYmVsIiwibGFiZWwiLCJjb3JlX3R5cGUxIiwiY29yZV90eXBlIiwiYXR0cmlidXRlcyIsImN0MiIsImN0MSIsImN0Iiwic2wiLCJjdCQwIiwiY3QkMSIsImwkMCIsImxpIiwibCQxIiwiY29yZV9maWVsZF90eXBlIiwiZmllbGRfdmFyIiwibCQyIiwibGkkMCIsImxvdyIsImNsb3NlZCIsImwkMyIsImZpcnN0X2lzX2luaGVyaXQiLCJ0eXBlX3ZhcmlhbnRfaGVscGVyIiwiY3RsIiwiY3N0cnMiLCJsaWQiLCJhdXgiLCJleHRlbnNpb24iLCJwYXR0ZXJuJDEiLCJwYXR0ZXJuIiwicCIsInAyIiwicDEiLCJvcnBhdHMiLCJwYXR0ZXJuMSIsInBhdHRlcm4xJDAiLCJwYXR0ZXJuX2xpc3RfaGVscGVyIiwicGF0MiIsInBhdDEiLCJzaW1wbGVfcGF0dGVybiIsInNpbXBsZV9wYXR0ZXJuJDAiLCJwbyIsInZsIiwiYzIiLCJjMSIsImxvbmdpZGVudF94X3BhdHRlcm4iLCJwJDAiLCJwJDEiLCJwJDIiLCJ3aXRoX3BhcmVuIiwibGFiZWxfZXhwIiwicmVzdCIsInR4dCQwIiwibyQwIiwic3VnYXJfZXhwciIsImFyZ3MiLCJpZCIsImxhYiIsInByaW50X2luZGV4b3AiLCJwYXRoX3ByZWZpeCIsImFzc2lnbiIsImxlZnQiLCJwcmludF9pbmRleCIsImluZGljZXMiLCJyZW1fYXJncyIsInByaW50X3BhdGgiLCJzaW1wbGVfZXhwciIsImUkMCIsInBhdGgiLCJmdW5jIiwib3RoZXJfYXJncyIsImEkMCIsImFzc2lnbiQwIiwicHJpbnQiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJpbmRleGVzIiwicmVzdCQzIiwiaTMiLCJpMiIsImkxIiwicmVzdCQ0IiwiaTIkMCIsImkxJDAiLCJyZXN0JDUiLCJpMSQxIiwibXVsdGlfaW5kaWNlcyIsIm4iLCJraW5kIiwicmlnaHQkMCIsImxlZnQkMCIsImwkNSIsImUkNyIsImFyZzEiLCJhcmcyIiwibGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIiwicyQxIiwicyQyIiwiZXhwcmVzc2lvbjIiLCJlbyQwIiwiZW8kMSIsImwkNiIsImUyJDEiLCJlMSQxIiwibGkkMSIsImUkOCIsInMkMyIsImwkNyIsInN0cmluZ194X2V4cHJlc3Npb24iLCJlJDkiLCJlJDEwIiwiZSQxMSIsImUkMTIiLCJjYXNlX2xpc3QiLCJlMCIsImUkMSIsImwkNCIsImUkMiIsImUkMyIsIm1lIiwibW9kdWxlX2V4cHIiLCJlJDQiLCJjZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImUkNSIsImUkNiIsImJvZHkiLCJhbmRzIiwibGV0JDAiLCJiaW5kaW5nX29wIiwiZW8iLCJlMiIsImV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSIsImUyJDAiLCJlMSQwIiwibHN0IiwiYmluZGluZ3MiLCJjcyIsImNsYXNzX3N0cnVjdHVyZSIsImV4cHJlc3Npb24yJDAiLCJzaW1wbGVfZXhwciQwIiwibG9uZ2lkZW50X3hfZXhwcmVzc2lvbiIsImUzIiwiZGYiLCJleHByZXNzaW9uIiwiY3RvMSIsInBheWxvYWQiLCJpdGVtX2F0dHJpYnV0ZXMiLCJmbG9hdGluZ19hdHRyaWJ1dGUiLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsIml0ZW1fZXh0ZW5zaW9uIiwiZXhjZXB0aW9uX2RlY2xhcmF0aW9uIiwiY2xhc3NfdHlwZV9maWVsZCIsImNsYXNzX3R5cGUiLCJ2ZiIsIm1mIiwidmYkMCIsInBmIiwiY2xhc3Nfc2lnbmF0dXJlIiwiY2wiLCJjbyIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJrd2QiLCJjbGFzc19maWVsZCIsInNvIiwiY2UiLCJvdmYiLCJjbGFzc19leHByIiwib3ZmJDAiLCJvdmYkMSIsImJpbmQiLCJiaW5kaW5nIiwiY2UkMCIsImNlJDEiLCJtb2R1bGVfdHlwZSQxIiwibW9kdWxlX3R5cGUiLCJtdDIkMCIsIm10MiIsIm10MSIsIm1vZHVsZV90eXBlMSIsIm10IiwidGQiLCJscyQwIiwidHlwZV9kZWNsYXJhdGlvbiIsImxpMiIsIm10eSIsIm10eSQwIiwibGkkMiIsInRkJDAiLCJscyQxIiwibGkkMyIsImxzJDIiLCJsaTIkMCIsImxpJDQiLCJtb2R1bGVfdHlwZTEkMCIsInNpZ25hdHVyZV9pdGVtIiwic2lnbmF0dXJlIiwidmQiLCJpbnRybyIsInR5cGVfZGVmX2xpc3QiLCJ0ZSIsInR5cGVfZXh0ZW5zaW9uIiwiZWQiLCJwbWQiLCJhbGlhcyIsInBtcyIsImRlY2xzIiwib3B0JDAiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwieDAiLCJjb3B5X3N0cnVjdHVyZSIsIngwJDAiLCJjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSIsInBkaXJfbG9jIiwiY29weV9sb2NhdGlvbiIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IiwiY29weV9sb2MiLCJwZGlyYV9sb2MiLCJwZGlyYV9kZXNjIiwiY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyIsIngxIiwieDAkMSIsImNvcHlfTG9uZ2lkZW50X3QiLCJ4MCQyIiwiY29weV9leHByZXNzaW9uIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsImNvcHlfYXR0cmlidXRlcyIsImNvcHlfbG9jYXRpb25fc3RhY2siLCJjb3B5X2V4cHJlc3Npb25fZGVzYyIsImNvcHlfY29uc3RhbnQiLCJ4MiIsImNvcHlfdmFsdWVfYmluZGluZyIsImNvcHlfcmVjX2ZsYWciLCJjb3B5X2Nhc2UiLCJ4MyIsIngyJDAiLCJ4MSQwIiwieDAkMyIsImNvcHlfcGF0dGVybiIsImNvcHlfYXJnX2xhYmVsIiwieDEkMSIsIngwJDQiLCJ4MSQyIiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDAkNyIsIngxJDQiLCJ4MCQ4IiwieDEkNSIsIngwJDkiLCJ4MSQ2IiwieDAkMTAiLCJ4MSQ3IiwieDAkMTEiLCJ4MiQxIiwieDEkOCIsIngwJDEyIiwieDAkMTMiLCJ4MiQyIiwieDEkOSIsIngwJDE0IiwieDEkMTAiLCJ4MCQxNSIsIngxJDExIiwieDAkMTYiLCJ4NCIsIngzJDAiLCJ4MiQzIiwieDEkMTIiLCJ4MCQxNyIsImNvcHlfZGlyZWN0aW9uX2ZsYWciLCJ4MSQxMyIsIngwJDE4IiwiY29weV9jb3JlX3R5cGUiLCJ4MiQ0IiwieDEkMTQiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJjb3B5X2xhYmVsIiwieDAkMjEiLCJ4MSQxNiIsIngwJDIyIiwieDAkMjMiLCJ4MiQ1IiwieDEkMTciLCJ4MCQyNCIsImNvcHlfbW9kdWxlX2V4cHIiLCJ4MSQxOCIsIngwJDI1IiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJ4MCQyNiIsIngwJDI3IiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwiY29weV9jbGFzc19zdHJ1Y3R1cmUiLCJ4MSQyMCIsIngwJDMwIiwieDAkMzEiLCJ4MSQyMSIsIngwJDMyIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwieDAkMzMiLCJjb3B5X2xldG9wIiwieDAkMzQiLCJjb3B5X2V4dGVuc2lvbiIsImNvcHlfYmluZGluZ19vcCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfY29uc3RyYWludCIsInB2Yl9leHByIiwicHZiX3BhdCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwcGF0X2xvYyIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiIsImdyb3VuZCIsImNvZXJjaW9uJDAiLCJwdHlwX2xvYyQwIiwidHlwJDMiLCJwdmJfcGF0JDMiLCJncm91bmQkMCIsInBleHBfbG9jJDAiLCJwdmJfZXhwciQzIiwicHZiX2V4cHIkMSIsInB2Yl9wYXQkMSIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsInR5cCQyIiwidHlwJDEiLCJwdHlwX2xvYyIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2Rlc2MiLCJjb3B5X3BhdHRlcm5fZGVzYyIsImNvcHlfY2xvc2VkX2ZsYWciLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJjb3B5X21vZHVsZV90eXBlIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJjb3B5X21vZHVsZV90eXBlX2Rlc2MiLCJjb3B5X3dpdGhfY29uc3RyYWludCIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsImNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyIsImNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIiwiY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIiwiY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIiwiY29weV9jbGFzc19kZXNjcmlwdGlvbiIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwiY29weV9jbGFzc190eXBlX2Rlc2MiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIiwiY29weV92aXJ0dWFsX2ZsYWciLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImNvcHlfcG9zaXRpb24iLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmciLCJ0eV9leHQiLCJydCQwIiwidmFsdWVfcGF0dGVybiIsInZhbHVlX2V4cCIsImlubmVyX2UiLCJleHRlcm5fY3QiLCJleHRlcm5fY3QkMCIsInB0X3R5dmFycyQwIiwid2l0aF9jb25zdHJhaW50IiwidHlfdmFycyIsInB2Yl9jb25zdHJhaW50JDAiLCJleHByJDAiLCJjb2VyY2UiLCJnciIsImV4cHIkMSIsInB2Yl9jb25zdHJhaW50JDEiLCJoZCIsInEiLCJpc191bml0IiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV9leHByIiwiY29weV9jYXNlcyIsImNvcHlfcGF0IiwiY29weV90eXAiLCJtYXBfb3B0aW9uIiwiY29weV9vcHRpb24iLCJjb3B5X2Jvb2wiLCJjb3B5X2xvbmdpZGVudCIsIngwX2xvYyIsIndyYXAiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwiZmllbGRzIiwiY3R5IiwibG9jJDEiLCJub2xvYyIsImZyb21fbG9jIiwicG9zIiwiaW5qZWN0X3ByZWRlZl9vcHRpb24iLCJkIiwiaWRlbnQiLCJ0eXBlX2RlY2xhcmF0aW9ucyIsInJlY2ZsYWciLCJ0eXBlcyIsImV4dHJhY3RfcHJlZGVmX29wdGlvbiIsImlzX25vbnJlYyIsImF0dHIiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImludDMyIiwib3B0Iiwic3RoIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiY2hhciQwIiwiYyIsInN0cmluZyIsInF1b3RhdGlvbl9kZWxpbWl0ZXIiLCJzIiwibG9jIiwibWsiLCJuYW1lIiwicGF5bG9hZCIsIm1rJDAiLCJkIiwic3RoJDAiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwibWF0Y2giLCJ0cnkkMCIsInR1cGxlJDEiLCJjb25zdHJ1Y3QkMCIsInZhcmlhbnQkMSIsInJlY29yZCQwIiwic2V0ZmllbGQiLCJhcnJheSQwIiwiaWZ0aGVuZWxzZSIsInNlcXVlbmNlIiwid2hpbGUkMCIsImZvciQwIiwiY29uc3RyYWludCQwIiwiY29lcmNlIiwic2VuZCIsIm5ldyQwIiwic2V0aW5zdHZhciIsIm92ZXJyaWRlIiwibGV0bW9kdWxlIiwibGV0ZXhjZXB0aW9uIiwiYXNzZXJ0IiwibGF6eSQwIiwicG9seSQwIiwib2JqZWN0JDAiLCJuZXd0eXBlIiwicGFjayIsIm9wZW4kMCIsImxldG9wIiwiYW5kcyIsImJvZHkiLCJleHRlbnNpb24kMSIsInVucmVhY2hhYmxlIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJtayQzIiwiYXR0ciQyIiwiaWRlbnQkMCIsImFsaWFzJDEiLCJzaWduYXR1cmUiLCJmdW5jdG9yIiwid2l0aCQwIiwidHlwZW9mJDAiLCJleHRlbnNpb24kMiIsIm1rJDQiLCJhdHRyJDMiLCJpZGVudCQxIiwic3RydWN0dXJlIiwiZnVuY3RvciQwIiwiYXBwbHkkMCIsIm0xIiwibTIiLCJjb25zdHJhaW50JDEiLCJtIiwibXR5IiwidW5wYWNrJDAiLCJleHRlbnNpb24kMyIsIm1rJDUiLCJ2YWx1ZSIsInR5cGUkMCIsInJlY19mbGFnIiwidHlwZV9zdWJzdCIsInR5cGVfZXh0ZW5zaW9uIiwiZXhjZXB0aW9uJDAiLCJtb2R1bGUiLCJtb2Rfc3Vic3QiLCJyZWNfbW9kdWxlIiwibW9kdHlwZSIsIm9wZW4kMSIsImluY2x1ZGUiLCJjbGFzcyQxIiwiY2xhc3NfdHlwZSIsImV4dGVuc2lvbiQ0IiwiYXR0cmlidXRlIiwibWskNiIsImV2YWwkMCIsInZhbHVlJDAiLCJwcmltaXRpdmUiLCJ0eXBlJDEiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiZXhjZXB0aW9uJDEiLCJtb2R1bGUkMCIsInJlY19tb2R1bGUkMCIsIm1vZHR5cGUkMCIsIm9wZW4kMiIsImNsYXNzJDIiLCJjbGFzc190eXBlJDAiLCJpbmNsdWRlJDAiLCJleHRlbnNpb24kNSIsImF0dHJpYnV0ZSQwIiwibWskNyIsImF0dHIkNCIsImNvbnN0ciQwIiwic3RydWN0dXJlJDAiLCJmdW4kMCIsImFwcGx5JDEiLCJsZXQkMSIsImNvbnN0cmFpbnQkMiIsImV4dGVuc2lvbiQ2Iiwib3BlbiQzIiwibWskOCIsImF0dHIkNSIsImNvbnN0ciQxIiwic2lnbmF0dXJlJDAiLCJhcnJvdyQwIiwiZXh0ZW5zaW9uJDciLCJvcGVuJDQiLCJtayQ5IiwiaW5oZXJpdCIsInZhbCIsIm1ldGhvZCIsImNvbnN0cmFpbnQkMyIsImV4dGVuc2lvbiQ4IiwiYXR0cmlidXRlJDEiLCJhdHRyJDYiLCJtayQxMCIsImluaGVyaXQkMCIsInZhbCQwIiwibWV0aG9kJDAiLCJjb25zdHJhaW50JDQiLCJpbml0aWFsaXplciIsImV4dGVuc2lvbiQ5IiwiYXR0cmlidXRlJDIiLCJ2aXJ0dWFsIiwiY3QiLCJjb25jcmV0ZSIsImF0dHIkNyIsIm1rJDExIiwic3RoJDEiLCJwcmltIiwibWskMTIiLCJtayQxMyIsInN5biIsIm1rJDE0IiwibWskMTUiLCJleHByIiwibWskMTYiLCJtayQxNyIsIm1leHByIiwibWskMTgiLCJtayQxOSIsInZpcnQiLCJzdGgkMiIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsInN0aCQzIiwia2luZCIsInN0aCQ0IiwicHJpdiIsImNvbnN0cnVjdG9yIiwicmVzIiwidmFycyIsImFyZ3MiLCJmaWVsZCQwIiwibXV0IiwibWskMjEiLCJwYXRoIiwiY29uc3RydWN0b3JzIiwibWtfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IkMCIsImRlY2wiLCJyZWJpbmQiLCJsaWQiLCJtayQyMiIsInNlbGYiLCJmaWVsZHMiLCJtayQyMyIsIm1rJDI0IiwidGFnIiwiY29uc3QkMCIsInR5cyIsImluaGVyaXQkMSIsInR5IiwibWskMjUiLCJ0YWckMCIsImluaGVyaXQkMiIsInN0cmluZ192ZXJzaW9uIiwic3RyaW5nX3ZlcnNpb24kMCIsInN0cmluZ192ZXJzaW9uJDEiLCJzdHJpbmdfdmVyc2lvbiQyIiwic3RyaW5nX3ZlcnNpb24kMyIsInN0cmluZ192ZXJzaW9uJDQiLCJzdHJpbmdfdmVyc2lvbiQ1Iiwic3RyaW5nX3ZlcnNpb24kNiIsInN0cmluZ192ZXJzaW9uJDciLCJzdHJpbmdfdmVyc2lvbiQ4Iiwic3RyaW5nX3ZlcnNpb24kOSIsInN0cmluZ192ZXJzaW9uJDEwIiwic3RyaW5nX3ZlcnNpb24kMTEiLCJzdHJpbmdfdmVyc2lvbiQxMiIsInN0cmluZ192ZXJzaW9uJDEzIiwibWlncmF0aW9uX2luZm8iLCJpZCIsIm1pZ3JhdGlvbl9pZGVudGl0eSIsImNvbXBvc2UiLCJnIiwibWlncmF0aW9uX2Z1bmN0aW9ucyIsImlzX3VuZGVmaW5lZCIsImltbWVkaWF0ZV9taWdyYXRpb24iLCJBIiwiZGlyZWN0aW9uIiwidmVyc2lvbiIsInRvIiwiZnVucyIsIkIiLCJtJDEiLCJUbyIsImFiIiwidG8yIiwiYmMiLCJtJDAiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwiY29weV9zaWduYXR1cmVfaXRlbSIsImNvcHlfbW9kdWxlX3R5cGUiLCJjb3B5X21vZHVsZV9leHByIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJjb3B5X2NsYXNzX3R5cGUiLCJjb3B5X2NsYXNzX2ZpZWxkIiwiY29weV9jbGFzc19leHByIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jYXNlIiwiY29weV9wYXR0ZXJuIiwiY29weV9leHByZXNzaW9uIiwiY29weV9jb3JlX3R5cGUiLCJjb3B5X3RvcGxldmVsX3BocmFzZSIsImNvcHlfc2lnbmF0dXJlIiwiY29weV9zdHJ1Y3R1cmUiLCJtaWdyYXRpb25faW5mbyQwIiwibWlncmF0aW9uX2luZm8kMSIsIm1pZ3JhdGlvbl9pbmZvJDIiLCJtaWdyYXRpb25faW5mbyQzIiwibWlncmF0aW9uX2luZm8kNCIsIm1pZ3JhdGlvbl9pbmZvJDUiLCJtaWdyYXRpb25faW5mbyQ2IiwibWlncmF0aW9uX2luZm8kNyIsIm1pZ3JhdGlvbl9pbmZvJDgiLCJtaWdyYXRpb25faW5mbyQ5IiwibWlncmF0aW9uX2luZm8kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwibWlncmF0aW9uX2luZm8kMTMiLCJhbGxfdmVyc2lvbnMiLCJ2ZXJzaW9uJDAiLCJ2ZXJzaW9uJDEiLCJ2ZXJzaW9uJDIiLCJ2ZXJzaW9uJDMiLCJ2ZXJzaW9uJDQiLCJ2ZXJzaW9uJDUiLCJ2ZXJzaW9uJDYiLCJ2ZXJzaW9uJDciLCJ2ZXJzaW9uJDgiLCJ2ZXJzaW9uJDkiLCJ2ZXJzaW9uJDEwIiwidmVyc2lvbiQxMSIsInZlcnNpb24kMTIiLCJ2ZXJzaW9uJDEzIiwiZnJvbV9tYWdpYyIsIm1hZ2ljIiwiYWxsX3ZlcnNpb25zX3RvcF9kb3duIiwidGFpbCIsIlZlcnNpb24iLCJvZl9vY2FtbCIsIm5vZGUiLCJ5IiwidG9fb2NhbWwiLCJvZl9vY2FtbF9tYXBwZXIiLCJpdGVtIiwiY3R4dCIsInRvX29jYW1sX21hcHBlciIsImltcGxlbWVudGF0aW9uIiwibGV4YnVmIiwiaW50ZXJmYWNlJDAiLCJ0b3BsZXZlbF9waHJhc2UiLCJ1c2VfZmlsZSIsImV4cHJlc3Npb24iLCJwYXR0ZXJuIiwiZGVmYXVsdF9wcmludF93YXJuaW5nIiwiYWJvdXRfaXRlX2JyYW5jaF9yZWYiLCJjYXJlX2Fib3V0X2l0ZV9icmFuY2giLCJhYm91dF9pdGVfYnJhbmNoIiwic2VsZl8xIiwiYSQwIiwiYSQxIiwiYSQyIiwiYiQwIiwiYSQzIiwiYSQ0IiwiYSQ1IiwiYSQ2IiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwicGRpcl9sb2MiLCJwZGlyX2FyZyIsInBkaXJfbmFtZSIsInBkaXJfbmFtZSQwIiwicGRpcl9hcmckMCIsInBkaXJfbG9jJDAiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1iX25hbWUkMCIsInBtYl9leHByJDAiLCJwbWJfYXR0cmlidXRlcyQwIiwicG1iX2xvYyQwIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2V4cHIiLCJwdmJfcGF0IiwicHZiX3BhdCQwIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJwdmJfbG9jJDAiLCJiJDEiLCJiJDIiLCJiJDMiLCJiJDQiLCJhJDciLCJhJDgiLCJhJDkiLCJhJDEwIiwiYSQxMSIsImEkMTIiLCJhJDEzIiwiYSQxNCIsImEkMTUiLCJhJDE2IiwiYSQxNyIsImEkMTgiLCJhJDE5IiwiYSQyMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImIkNSIsImEkMjciLCJhJDI4IiwiYiQ2IiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwiYiQ3IiwiYiQ4IiwiYiQ5IiwiYiQxMCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwaW5jbF9tb2QkMCIsInBpbmNsX2xvYyQwIiwicGluY2xfYXR0cmlidXRlcyQwIiwicG9wZW5fYXR0cmlidXRlcyIsInBvcGVuX2xvYyIsInBvcGVuX292ZXJyaWRlIiwicG9wZW5fZXhwciIsInBvcGVuX2V4cHIkMCIsInBvcGVuX292ZXJyaWRlJDAiLCJwb3Blbl9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJhJDI5IiwiYSQzMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsInBjZl9hdHRyaWJ1dGVzIiwicGNmX2xvYyIsInBjZl9kZXNjIiwicGNmX2Rlc2MkMCIsInBjZl9sb2MkMCIsInBjZl9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJkJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJkJDEiLCJkJDIiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsInBjc2lnX3NlbGYkMCIsInBjc2lnX2ZpZWxkcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwiYW5kcyQwIiwiYm9keSQwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImIkMTEiLCJiJDEyIiwiYiQxMyIsImIkMTQiLCJiJDE1IiwiYiQxNiIsImIkMTciLCJiJDE4IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYSQzMSIsImEkMzIiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInByZl9hdHRyaWJ1dGVzIiwicHJmX2xvYyIsInByZl9kZXNjJDAiLCJwcmZfbG9jJDAiLCJwcmZfYXR0cmlidXRlcyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJ0eHQiLCJ0eHQkMCIsImxvYyQwIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImxvY19zdGFydCQwIiwibG9jX2VuZCQwIiwibG9jX2dob3N0JDAiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJzZWxmXzIiLCJzZWxmXzMiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwiYWNjJDgiLCJhY2MkOSIsImFjYyQxMCIsImFjYyQxMSIsImFjYyQxMiIsImFjYyQxMyIsImFjYyQxNCIsImFjYyQxNSIsImFjYyQxNiIsImFjYyQxNyIsImFjYyQxOCIsImFjYyQxOSIsImFjYyQyMCIsImFjYyQyMSIsImFjYyQyMiIsImFjYyQyMyIsImFjYyQyNCIsImFjYyQyNSIsImFjYyQyNiIsImFjYyQyNyIsImFjYyQyOCIsImFjYyQyOSIsImFjYyQzMCIsImFjYyQzMSIsImFjYyQzMiIsImFjYyQzMyIsImFjYyQzNCIsImFjYyQzNSIsImFjYyQzNiIsImFjYyQzNyIsImFjYyQzOCIsImFjYyQzOSIsImFjYyQ0MCIsImFjYyQ0MSIsImFjYyQ0MiIsImFjYyQ0MyIsImFjYyQ0NCIsImFjYyQ0NSIsImFjYyQ0NiIsImFjYyQ0NyIsImFjYyQ0OCIsImFjYyQ0OSIsImFjYyQ1MCIsImFjYyQ1MSIsImFjYyQ1MiIsImFjYyQ1MyIsImFjYyQ1NCIsImFjYyQ1NSIsInNlbGZfNCIsImFjYyQ1NiIsImFjYyQ1NyIsImFjYyQ1OCIsImFjYyQ1OSIsImFjYyQ2MCIsImFjYyQ2MSIsImFjYyQ2MiIsImFjYyQ2MyIsImFjYyQ2NCIsImFjYyQ2NSIsImFjYyQ2NiIsImFjYyQ2NyIsImFjYyQ2OCIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInRvX2V4dGVuc2lvbiIsImVycm9yIiwic3ViX21zZ3MiLCJtYWluX21zZyIsImVycl9leHRlbnNpb25fbmFtZSIsIm1rX3N0cmluZ19jb25zdGFudCIsImV4dGVuc2lvbl9vZl9zdWJfbXNnIiwic3ViX21zZyIsInJlZ2lzdGVyX2Vycm9yX29mX2V4biIsIm1lc3NhZ2UiLCJzZXRfbWVzc2FnZSIsIm1ha2UiLCJzdWIiLCJzdWIkMCIsInVwZGF0ZV9sb2MiLCJnZXRfbG9jYXRpb24iLCJvZl9leG4iLCJyYWlzZSIsInByaW50IiwiZGlmZl9jb21tYW5kIiwib3B0IiwiZmlsZTEiLCJmaWxlMiIsInN0aCIsImV4dHJhX3BhdGRpZmZfYXJncyIsInN0aCQwIiwidXNlX2NvbG9yIiwiZXhlYyIsImNtZCIsImNtZCQwIiwibiIsInMiLCJhcmdzIiwiZXJyX2NvZGUiLCJhbGwiLCJyZWdpc3RlciIsIm5hbWUiLCJkZXJpdmVyIiwibG9va3VwIiwiZHJ2IiwiZGVyaXZlcnMiLCJhY2MiLCJ4Iiwic2VsZl8xIiwiZiIsIngkMCIsInNlbGZfMiIsImFjYyIsInNlbGZfMyIsImEiLCJyIiwiaSIsImxvb3AiLCJsIiwibCQwIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsInNlbGZfNCIsImxlbiIsImEkMCIsIngkMSIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInJlc19oZWFkIiwicmVzX3RhaWwiLCJyZXMiLCJmbGFncyQwIiwiZmxhZ3MiLCJjb21wYXJlIiwiZXF1YWwiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwibWluIiwibWF4IiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJtaW4kMCIsIm1heCQwIiwidG9fc3RyaW5nIiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsIm1pbiQxIiwibWF4JDEiLCJzdWJfc3RyaW5nIiwidCIsInBvcyIsImxlbiIsImJsaXRfc3RyaW5nIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwibWluJDIiLCJtYXgkMiIsInByb3RlY3R4IiwieCIsImYiLCJmaW5hbGx5JDAiLCJ5IiwiZXhuJDAiLCJleG4iLCJ0b19zdHJpbmckMSIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJtaW4kMyIsIm1heCQzIiwiaWQiLCJzZXQiLCJrZXkiLCJkYXRhIiwiYWRkIiwiYWRkX2V4biIsImZpbmRfb3B0IiwiZmluZF9vcl9hZGQiLCJkZWZhdWx0JDAiLCJkYXRhJDAiLCJhZGRfYWxpc3QiLCJhbGlzdCIsImFsaXN0JDAiLCJhbGlzdCQxIiwib2ZfYWxpc3QiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJjcmVhdGUkMCIsIm9wdCIsImZpbGUiLCJzdGgiLCJiaW5hcnkiLCJ3aXRoX2ZpbGUiLCJmaWxlbmFtZSIsImlucHV0X2FsbCIsImJ1ZiIsImNoYXIkMCIsInJlYWRfYWxsIiwibWF4X2ludCIsInRvX3N0cmluZyQyIiwiY29tcGFyZSQ1IiwiZXF1YWwkNSIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsIm1pbiQ0IiwibWF4JDQiLCJtZXJnZSIsInJlbW92ZV9hc3NvYyIsInJlbW92ZV9hc3NxIiwicmV2X21hcGkiLCJsaXN0IiwibGlzdCQwIiwiaSIsImFjYyIsInRhaWwiLCJoZWFkIiwiYWNjJDAiLCJpJDAiLCJmb2xkX3JpZ2h0MiIsImxpc3QxIiwibGlzdDIiLCJpbml0IiwibWFwJDAiLCJtYXBpJDAiLCJmb2xkX3JpZ2h0JDAiLCJhcHBlbmQiLCJjb25jYXQkMCIsInJldl9jb21iaW5lIiwiY29tYmluZSIsInNwbGl0IiwieXMiLCJ4cyIsIm1hcDIiLCJwYXJ0aXRpb25fbWFwIiwicCIsImwiLCJsZWZ0IiwicmlnaHQiLCJsJDAiLCJ2IiwidiQwIiwiaW5pdCQwIiwicG9zJDAiLCJpc19lbXB0eSIsInJldl9maWx0ZXJfb3B0Iiwib3B0aW9uIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJzb21lIiwiZmluZF9tYXBfZXhuIiwibGFzdCIsInJlc3QiLCJzcGxpdF93aGlsZSIsImZpbmRfYV9kdXAiLCJzZXQkMSIsInNldCQwIiwiYXNzb2Nfb3B0IiwiaXRlciQyIiwiaXNfc29tZSIsIml0ZXIkMyIsIm1hcCQxIiwidmFsdWUiLCJ0b19saXN0IiwiYmluZCIsImEiLCJlIiwibWFwJDIiLCJtYXBfZXJyb3IiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJoYW5kbGVfZXJyb3IiLCJzeW1ib2wkMzUiLCJxMiIsInQyIiwicTEiLCJ0MSIsImhkJDAiLCJ0b19saXN0JDAiLCJxIiwibWFwJDMiLCJjcmVhdGUkMSIsInN0aCQwIiwic3RoJDEiLCJmYWlsX2lmX2V4aXN0cyIsInN0aCQyIiwicGVybSIsImZsYWdzJDEiLCJmbGFncyQyIiwid2l0aF9maWxlJDAiLCJ3cml0ZV9hbGwiLCJpc19lbXB0eSQwIiwicHJlZml4Iiwic3VmZml4IiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImlzX3ByZWZpeCIsImlzX3N1ZmZpeCIsInN1ZmZpeF9vZmZzZXQiLCJwb3MkMSIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiaW5kZXhfb3B0JDAiLCJyaW5kZXhfb3B0JDAiLCJpbmRleF9mcm9tX29wdCQwIiwicmluZGV4X2Zyb21fb3B0JDAiLCJsc3BsaXQyIiwib24iLCJjYXBpdGFsaXplX2FzY2lpJDAiLCJsb3dlcmNhc2VfYXNjaWkkMSIsInVuY2FwaXRhbGl6ZV9hc2NpaSQwIiwic3BsaXRfb25fY2hhciQwIiwic2VwIiwiY29tcGFyZSQ3IiwiZXF1YWwkNyIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsIm1pbiQ1IiwibWF4JDUiLCJmaW5kX29wdCQxIiwic3ltYm9sJDQyIiwib3V0cHV0Iiwib2MiLCJieXRlcyIsIm91dHB1dF9zdWJzdHJpbmciLCJzdHJpbmciLCJpbl9maWxlIiwibmFtZSIsImxvYyIsInNldF9maWxlbmFtZSIsImZuIiwibG9jX3N0YXJ0IiwibG9jX2VuZCIsIm5vbmUiLCJpbml0IiwibGV4YnVmIiwiZm5hbWUiLCJyYWlzZV9lcnJvcmYiLCJmbXQiLCJyZXBvcnRfZXhjZXB0aW9uIiwib2ZfbGV4YnVmIiwicHJpbnQiLCJwcGYiLCJ0IiwiY29tcGFyZV9wb3MiLCJwMSIsInAyIiwiY29sdW1uIiwicCIsIm4iLCJtaW5fcG9zIiwibWF4X3BvcyIsImNvbXBhcmUiLCJsb2MxIiwibG9jMiIsImNyZWF0ZWYiLCJzdHIiLCJlcnJvcl9leHRlbnNpb25mIiwiZSIsImZhaWwiLCJleHBlY3RlZCIsImF0dHJpYnV0ZSIsInBheWxvYWQiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsInBjbF9jb25zdHIiLCJ4MCIsIngxIiwicGNsX3N0cnVjdHVyZSIsInBjbF9mdW4iLCJ4MiIsIngzIiwicGNsX2FwcGx5IiwicGNsX2xldCIsInBjbF9jb25zdHJhaW50IiwicGNsX2V4dGVuc2lvbiIsInBjbF9vcGVuIiwicGNmX2luaGVyaXQiLCJwY2ZfdmFsIiwicGNmX21ldGhvZCIsInBjZl9jb25zdHJhaW50IiwicGNmX2luaXRpYWxpemVyIiwicGNmX2F0dHJpYnV0ZSIsInBjZl9leHRlbnNpb24iLCJjbGFzc19pbmZvcyIsInZpcnQiLCJwYXJhbXMiLCJleHByIiwiY2xhc3Nfc2lnbmF0dXJlIiwic2VsZiIsImZpZWxkcyIsImNsYXNzX3N0cnVjdHVyZSIsInBjdHlfY29uc3RyIiwicGN0eV9zaWduYXR1cmUiLCJwY3R5X2Fycm93IiwicGN0eV9leHRlbnNpb24iLCJwY3R5X29wZW4iLCJwY3RmX2luaGVyaXQiLCJwY3RmX3ZhbCIsInBjdGZfbWV0aG9kIiwicGN0Zl9jb25zdHJhaW50IiwicGN0Zl9hdHRyaWJ1dGUiLCJwY3RmX2V4dGVuc2lvbiIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidmFycyIsImFyZ3MiLCJyZXMiLCJwdHlwX2FueSIsInB0eXBfdmFyIiwicHR5cF9hcnJvdyIsInB0eXBfdHVwbGUiLCJwdHlwX2NvbnN0ciIsInB0eXBfb2JqZWN0IiwicHR5cF9jbGFzcyIsInB0eXBfYWxpYXMiLCJwdHlwX3ZhcmlhbnQiLCJwdHlwX3BvbHkiLCJwdHlwX3BhY2thZ2UiLCJwdHlwX2V4dGVuc2lvbiIsInBkaXJfc3RyaW5nIiwicGRpcl9pbnQiLCJwZGlyX2lkZW50IiwicGRpcl9ib29sIiwicGV4cF9pZGVudCIsInBleHBfY29uc3RhbnQiLCJwZXhwX2xldCIsInBleHBfZnVuY3Rpb24iLCJwZXhwX2Z1biIsInBleHBfYXBwbHkiLCJwZXhwX21hdGNoIiwicGV4cF90cnkiLCJwZXhwX3R1cGxlIiwicGV4cF9jb25zdHJ1Y3QiLCJwZXhwX3ZhcmlhbnQiLCJwZXhwX3JlY29yZCIsInBleHBfZmllbGQiLCJwZXhwX3NldGZpZWxkIiwicGV4cF9hcnJheSIsInBleHBfaWZ0aGVuZWxzZSIsInBleHBfc2VxdWVuY2UiLCJwZXhwX3doaWxlIiwicGV4cF9mb3IiLCJ4NCIsInBleHBfY29uc3RyYWludCIsInBleHBfY29lcmNlIiwicGV4cF9zZW5kIiwicGV4cF9uZXciLCJwZXhwX3NldGluc3R2YXIiLCJwZXhwX292ZXJyaWRlIiwicGV4cF9sZXRtb2R1bGUiLCJwZXhwX2xldGV4Y2VwdGlvbiIsInBleHBfYXNzZXJ0IiwicGV4cF9sYXp5IiwicGV4cF9wb2x5IiwicGV4cF9vYmplY3QiLCJwZXhwX25ld3R5cGUiLCJwZXhwX3BhY2siLCJwZXhwX29wZW4iLCJwZXhwX2xldG9wIiwicGV4cF9leHRlbnNpb24iLCJwZXhwX3VucmVhY2hhYmxlIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwia2luZCIsImluY2x1ZGVfaW5mb3MiLCJtb2QiLCJsYWJlbF9kZWNsYXJhdGlvbiIsIm11dGFibGUiLCJ0eXBlIiwibGV0b3AiLCJsZXQkMCIsImFuZHMiLCJib2R5IiwibG9jYXRpb24iLCJzdGFydCIsImVuZCIsImdob3N0IiwibW9kdWxlX2JpbmRpbmciLCJtb2R1bGVfZGVjbGFyYXRpb24iLCJwbW9kX2lkZW50IiwicG1vZF9zdHJ1Y3R1cmUiLCJwbW9kX2Z1bmN0b3IiLCJwbW9kX2FwcGx5IiwicG1vZF9jb25zdHJhaW50IiwicG1vZF91bnBhY2siLCJwbW9kX2V4dGVuc2lvbiIsIm1vZHVsZV9zdWJzdGl0dXRpb24iLCJtYW5pZmVzdCIsInBtdHlfaWRlbnQiLCJwbXR5X3NpZ25hdHVyZSIsInBtdHlfZnVuY3RvciIsInBtdHlfd2l0aCIsInBtdHlfdHlwZW9mIiwicG10eV9leHRlbnNpb24iLCJwbXR5X2FsaWFzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb24iLCJvdGFnIiwib2luaGVyaXQiLCJvcGVuX2luZm9zIiwib3ZlcnJpZGUiLCJwcGF0X2FueSIsInBwYXRfdmFyIiwicHBhdF9hbGlhcyIsInBwYXRfY29uc3RhbnQiLCJwcGF0X2ludGVydmFsIiwicHBhdF90dXBsZSIsInBwYXRfY29uc3RydWN0IiwicHBhdF92YXJpYW50IiwicHBhdF9yZWNvcmQiLCJwcGF0X2FycmF5IiwicHBhdF9vciIsInBwYXRfY29uc3RyYWludCIsInBwYXRfdHlwZSIsInBwYXRfbGF6eSIsInBwYXRfdW5wYWNrIiwicHBhdF9leGNlcHRpb24iLCJwcGF0X2V4dGVuc2lvbiIsInBwYXRfb3BlbiIsInBvc2l0aW9uIiwibG51bSIsImJvbCIsImNudW0iLCJydGFnIiwicmluaGVyaXQiLCJwc2lnX3ZhbHVlIiwicHNpZ190eXBlIiwicHNpZ190eXBlc3Vic3QiLCJwc2lnX3R5cGV4dCIsInBzaWdfZXhjZXB0aW9uIiwicHNpZ19tb2R1bGUiLCJwc2lnX21vZHN1YnN0IiwicHNpZ19yZWNtb2R1bGUiLCJwc2lnX21vZHR5cGUiLCJwc2lnX21vZHR5cGVzdWJzdCIsInBzaWdfb3BlbiIsInBzaWdfaW5jbHVkZSIsInBzaWdfY2xhc3MiLCJwc2lnX2NsYXNzX3R5cGUiLCJwc2lnX2F0dHJpYnV0ZSIsInBzaWdfZXh0ZW5zaW9uIiwicHN0cl9ldmFsIiwicHN0cl92YWx1ZSIsInBzdHJfcHJpbWl0aXZlIiwicHN0cl90eXBlIiwicHN0cl90eXBleHQiLCJwc3RyX2V4Y2VwdGlvbiIsInBzdHJfbW9kdWxlIiwicHN0cl9yZWNtb2R1bGUiLCJwc3RyX21vZHR5cGUiLCJwc3RyX29wZW4iLCJwc3RyX2NsYXNzIiwicHN0cl9jbGFzc190eXBlIiwicHN0cl9pbmNsdWRlIiwicHN0cl9hdHRyaWJ1dGUiLCJwc3RyX2V4dGVuc2lvbiIsInRvcGxldmVsX2RpcmVjdGl2ZSIsImFyZyIsInR5cGVfZGVjbGFyYXRpb24iLCJjc3RycyIsInByaXZhdGUkMCIsInR5cGVfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IiLCJ0eXBlX2V4dGVuc2lvbiIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJ2YWx1ZV9iaW5kaW5nIiwidmFsdWVfZGVzY3JpcHRpb24iLCJwcmltIiwidHh0IiwibWFrZSIsIm1hcCIsImYiLCJpc19ub3JtYWxfaWRlbnRfY2hhciIsInNob3J0X25hbWUiLCJzdHJpbmciLCJzIiwiYiIsImEiLCJiJDAiLCJhJDAiLCJzZXhwX29mX3QiLCJmbGF0dGVuX2V4biIsImxpZCQwIiwiYWNjdSIsInMkMCIsImxpZCIsImxhc3RfZXhuIiwidW5mbGF0dGVuIiwibCIsImFjYyIsInBhcnNlIiwiaW52YWxpZCIsIm9wZW5fcGFyIiwiY2xvc2VfcGFyIiwiciIsImwkMCIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3QiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJmdW5jdG9yJDAiLCJmdW5jdG9yX3BhdGgiLCJyZXN0IiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGVuIiwicG9zIiwicG9zJDAiLCJsZXZlbnNodGVpbl9kaXN0YW5jZSIsImN1dG9mZiIsIm0iLCJkIiwiaSQwIiwiaiQwIiwibGluZV9taW4iLCJqIiwiaSIsInZhbHVlIiwiZGlzdGFuY2UiLCJzcGVsbGNoZWNrIiwibmFtZXMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJzdWdnZXN0aW9ucyIsInJldl9yZXN0IiwibGFzdCIsImZvbGRfZG90X3N1ZmZpeGVzIiwiY29sbGFwc2VfYWZ0ZXJfYXQiLCJwYXJ0cyIsInBhcnQiLCJwYXJ0cyQxIiwicGFydHMkMCIsImRvdF9zdWZmaXhlcyIsInNwbGl0X3BhdGgiLCJpJDIiLCJpJDQiLCJpJDMiLCJpJDEiLCJtYXRjaGVzIiwibWF0Y2hlZCIsInNwbGl0X291dGVyX25hbWVzcGFjZSIsImJlZm9yZV9kb3QiLCJhZnRlcl9kb3QiLCJjcmVhdGVfc2V0IiwiZnVsbHlfcXVhbGlmaWVkX25hbWVzIiwiYXR0cmlidXRlcyIsImV4dGVuc2lvbnMiLCJpc19hbGxvd2xpc3RlZCIsImdldF9hdHRyaWJ1dGVfbGlzdCIsImdldF9leHRlbnNpb25fbGlzdCIsImNyZWF0ZV9yZXNlcnZlZCIsInRibCIsInJlc2VydmUiLCJucyQwIiwibnMiLCJ0YmwkMCIsInJlc3RfbnMiLCJvdXRlcl9ucyIsInJlc3RfdGJsIiwiaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyIsImlnbm9yZV9jaGVja3MiLCJjcmVhdGUiLCJjdXJyZW50X2ZpbGUiLCJzdHJpbmdfb2ZfY29udGV4dCIsImdldF9hbGxfZm9yX2NvbnRleHQiLCJjb250ZXh0IiwiY2hlY2tfY29sbGlzaW9uc19sb2NhbCIsImNhbGxlciIsImFsbF9mb3JfY29udGV4dCIsImRlY2xhcmVkX2F0IiwiY29udGV4dCQwIiwiY2hlY2tfY29sbGlzaW9ucyIsInJlZ2lzdGVyIiwia2luZCQxIiwibGlzdCIsImtpbmQkMCIsImFsbCIsInQkMCIsIm9wdCIsInN0aCIsImFsbG93bGlzdCIsImtleSIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJvdGhlcl9jb250ZXh0cyIsInBwX3RleHQiLCJjdXJyZW50X2NvbnRleHQiLCJhX29yX2FuIiwieSIsImMiLCJyZXZfb3RoZXJzIiwib3RoZXJzIiwibXNnIiwicmFpc2VfZXJyb3JmJDAiLCJjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiIsInRkIiwiY2hvcCIsIm9yX21vcmUiLCJ0YXJnZXQiLCJjbnQiLCJnZW5fc3ltYm9sIiwicHJlZml4IiwicHJlZml4JDAiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyIsIm5hbWVfcGFyYW0iLCJ2YXJpYW5jZSIsInRwIiwicHR5cF9kZXNjIiwibyIsImVycm9ycyIsInB0eXBlX3BhcmFtcyIsInEiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkIiwiZXJyIiwiY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyIiwidGQkMCIsInJlc3VsdF90eXBlIiwic3RyaW5nX29mX2NvcmVfdHlwZSIsImN0IiwiYnVmIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMiLCJnZXRfdHlwZV9wYXJhbV9uYW1lIiwic2VsZl8xIiwiY3R5cGUiLCJpZCIsInRkcyIsInJlYWxseV9yZWN1cnNpdmUiLCJ4JDAiLCJ4JDEiLCJsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCIsImxvY19vZl9wYXlsb2FkIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwibG9jX29mX2F0dHJpYnV0ZSIsImxvY19vZl9leHRlbnNpb24iLCJjdXJyeV9hcHBsaWNhdGlvbnMiLCJvcmlnX2ZvcndhcmRfYXJncyIsImxvb3AiLCJyZXZfZnJvbnRfYXJncyIsImxhc3RfYXJnIiwiYXR0ciIsImF0dHJpYnV0ZXNfZXJyb3JzIiwic2VsZl8yIiwiY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyIsImFzc2VydF9ub19hdHRyaWJ1dGVzIiwic2VsZl8zIiwiYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4iLCJhdHRyaWJ1dGVfb2Zfd2FybmluZyIsImlzX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJzaWciLCJ0eXAkMCIsInR5cCIsIm1rX25hbWVkX3NpZyIsInNnX25hbWUiLCJoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCIsImFyaXR5IiwibXR5IiwiZm9yX3N1YnN0IiwiZXhuX3RvX2xvY19lcnJvciIsImV4biIsImVycm9yIiwicmV0dXJuJDAiLCJzeW1ib2xfYmluZCIsImVycm9yczEiLCJlcnJvcnMyIiwic3ltYm9sX21hcCIsIm9mX3Jlc3VsdCIsInJlc3VsdCIsImRlZmF1bHQkMCIsImNvbWJpbmVfZXJyb3JzIiwibm9sYWJlbCIsImsiLCJsYWJlbGxlZCIsImYwIiwiayQwIiwib3B0aW9uYWwiLCJrJDEiLCJrJDIiLCJwY2xfbG9jIiwiZjIiLCJmMSIsInBjbF9hdHRyaWJ1dGVzIiwiZjMiLCJrJDMiLCJwY2ZfbG9jIiwicGNmX2F0dHJpYnV0ZXMiLCJjZmtfdmlydHVhbCIsImNma19jb25jcmV0ZSIsImNsYXNzX2luZm9zX2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9hdHRyaWJ1dGVzIiwiY2xvc2VkIiwib3BlbiIsInBjb25zdF9pbnRlZ2VyIiwicGNvbnN0X2NoYXIiLCJwY29uc3Rfc3RyaW5nIiwicGNvbnN0X2Zsb2F0IiwicGNzdHJfdHVwbGUiLCJwY3N0cl9yZWNvcmQiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWIiLCJwdHlwX2xvYyIsInB0eXBfYXR0cmlidXRlcyIsInVwdG8iLCJkb3dudG8iLCJwZGlyYV9sb2MiLCJwZXhwX2xvYyIsInBleHBfYXR0cmlidXRlcyIsImY0IiwiayQ0IiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0IiwicGV4dF9kZWNsIiwicGV4dF9yZWJpbmQiLCJ1bml0IiwibmFtZWQiLCJpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMiLCJpbmplY3RpdmUiLCJub2luamVjdGl2aXR5IiwibGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImxkb3QiLCJsYXBwbHkiLCJtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIiwibW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfYXR0cmlidXRlcyIsIm1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9hdHRyaWJ1dGVzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmliIiwiaW1tdXRhYmxlIiwicG9mX2xvYyIsInBvZl9hdHRyaWJ1dGVzIiwib3Blbl9pbmZvc19hdHRyaWJ1dGVzIiwiZnJlc2giLCJwcGF0X2xvYyIsInBwYXRfYXR0cmlidXRlcyIsInBzdHIiLCJwc2lnIiwicHR5cCIsInBwYXQiLCJwdWJsaWMkMCIsIm5vbnJlY3Vyc2l2ZSIsInJlY3Vyc2l2ZSIsInByZl9sb2MiLCJwcmZfYXR0cmlidXRlcyIsInBzaWdfbG9jIiwicHN0cl9sb2MiLCJwdG9wX2RlZiIsInB0b3BfZGlyIiwidHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwiayQ1IiwidHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyIsInR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMiLCJwdHlwZV9hYnN0cmFjdCIsInB0eXBlX3ZhcmlhbnQiLCJwdHlwZV9yZWNvcmQiLCJwdHlwZV9vcGVuIiwidmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIiwidmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyIsImNvdmFyaWFudCIsImNvbnRyYXZhcmlhbnQiLCJub3ZhcmlhbmNlIiwidmlydHVhbCIsImNvbmNyZXRlIiwicHdpdGhfdHlwZSIsInB3aXRoX21vZHVsZSIsInB3aXRoX21vZHR5cGUiLCJwd2l0aF9tb2R0eXBlc3Vic3QiLCJwd2l0aF90eXBlc3Vic3QiLCJwd2l0aF9tb2RzdWJzdCIsInJlc3RvcmVfY29udGV4dCIsImJhY2t1cCIsImluY3JfbWF0Y2hlZCIsInBhcnNlX3JlcyIsIm9uX2Vycm9yIiwiZiQwIiwiciQwIiwicGFyc2VfcmVzJDAiLCJwYXJzZSQwIiwic3ltYm9sIiwic3ltYm9sJDAiLCJkcm9wIiwiYXMiLCJjc3QiLCJ0b19zdHJpbmciLCJlcXVhbCIsImludCQwIiwiY2hhciQwIiwiZmxvYXQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJib29sIiwiYm9vbCQwIiwiZnVuYyIsImZhbHNlJDAiLCJ0cnVlJDAiLCJuaWwiLCJzeW1ib2wkMSIsInNvbWUiLCJwYWlyIiwidHJpcGxlIiwiYWx0IiwiZTEkMCIsImUxIiwibTEiLCJlMiQwIiwiZTIiLCJtMiIsIm1hcCQwIiwibWFwX3Jlc3VsdCIsIm1hcDAiLCJtYXAxIiwibWFwMiIsIm1hcDAkMCIsIm1hcDEkMCIsIm1hcDIkMCIsIm1hcF92YWx1ZSIsIm1hcF92YWx1ZSQwIiwiYWx0X29wdGlvbiIsIm1hbnkiLCJhdXgiLCJ4cyIsInBhY2swIiwicGFjazIiLCJwYWNrMyIsInoiLCJjb25zdF9pbnQiLCJjb25zdF9pbnQzMiIsImNvbnN0X2ludDY0IiwiY29uc3RfbmF0aXZlaW50Iiwic2luZ2xlX2V4cHJfcGF5bG9hZCIsIm5vX2xhYmVsIiwiZXh0ZW5zaW9uIiwibmV4dCIsImV4cHIkMSIsIm9mX2Z1bmMiLCJ0b19mdW5jIiwicG9seV9lcXVhbCIsInBhdHRlcm4iLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjbGFzc19leHByIiwiY2xhc3NfZmllbGQiLCJtb2R1bGVfdHlwZSIsIm9wZW5fZGVzY3JpcHRpb24iLCJtb2R1bGVfZXhwciIsIm9iamVjdF90eXBlX2ZpZWxkIiwiZ2V0X3BzdHJfZXZhbCIsInN0IiwiZ2V0X3BzdHJfZXh0ZW5zaW9uIiwiZ2V0X3BzaWdfZXh0ZW5zaW9uIiwiZ2V0X2F0dHJpYnV0ZXMiLCJzZXRfYXR0cmlidXRlcyIsImF0dHJzIiwic3RydWN0dXJlX2l0ZW0iLCJzaWduYXR1cmVfaXRlbSIsImNsYXNzX2ZpZWxkJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJkZWNsYXJlIiwiZGVjbGFyZV93aXRoX25hbWVfbG9jIiwibmFtZV9sb2MiLCJkZWNsYXJlX3dpdGhfYXR0cl9sb2MiLCJhdHRyX2xvYyIsImRlY2xhcmVfZmxhZyIsInBheWxvYWRfcGF0dGVybiIsImNvbnRpbnVhdGlvbiIsIm5vcm1hbGl6ZSIsImhhc2giLCJub3Rfc2VlbiIsIm1hcmtfYXNfc2VlbiIsImV4cGxpY2l0bHlfZHJvcCIsImdldF9pbnRlcm5hbCIsImF0dHJpYnV0ZXMkMSIsImxvbmdlc3RfbWF0Y2giLCJhdHRyaWJ1dGVzJDAiLCJsZW4kMCIsImxvbmdlc3RfbWF0Y2gkMCIsImxvbmdlc3RfbWF0Y2gkMSIsImNvbnZlcnQiLCJkb19tYXJrX2FzX3NlZW4iLCJwYXR0ZXJuJDAiLCJnZXRfcmVzIiwiaGFzX2ZsYWdfcmVzIiwiaGFzX2ZsYWciLCJjb25zdW1lX3JlcyIsImF0dHIkMCIsImF0dHJzJDAiLCJjb25zdW1lIiwicmVtb3ZlX3NlZW5fcmVzIiwicGFja2VkcyIsInJlbW92ZV9zZWVuIiwicGF0dGVybl9yZXMiLCJkZWNsYXJlJDAiLCJjb252ZXJ0X3JlcyIsInRzIiwiY29udmVydCQwIiwiY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIiwiaXRlbSIsIml0ZW0kMCIsImVycm9yczIkMCIsIml0ZW0kMiIsIml0ZW0kMSIsImNsb3NlZF9mbGFnIiwiZXJyb3JzJDAiLCJmaWVsZHMkMCIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvIiwicmFpc2VfaWZfbm9uX2VtcHR5IiwiY2hlY2tfdW51c2VkIiwicmVzZXRfY2hlY2tzIiwic2VsZl80IiwiY29sbGVjdCIsImNvbGxlY3RfdW5zZWVuX2Vycm9ycyIsImNoZWNrX2FsbF9zZWVuIiwicmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiIsInRhYmxlIiwic2VsZl81IiwiY29weV9vZl9ub3Rfc2VlbiIsImNvcHkiLCJkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUiLCJkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUiLCJzZyIsInRvcF9sZXZlbCIsImZpbGVfcGF0aCIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtdGQiLCJtZCIsIm1iIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ2YiIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInZhcl9uYW1lIiwiaW5fYmluZGluZ19jdHh0IiwicGF0X2Vycm9ycyIsInB2Yl9wYXQkMCIsImV4cHJfZXJyb3JzIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJsb2NfZXJyb3JzIiwicHZiX2xvYyQwIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwid2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIndpdGhfbW9kdWxlX2RlY2xhcmF0aW9uIiwid2l0aF9tb2R1bGVfYmluZGluZyIsIm1lIiwid2l0aF9tb2R1bGVfZXhwciIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9kZXNjIiwid2l0aF92YWx1ZSIsImN0eHQkMCIsIm5hbWVfZXJyb3JzIiwid2l0aF9sZXRfbW9kdWxlIiwibW9kdWxlX2V4cHJfZXJyb3JzIiwibW9kdWxlX2V4cHIkMCIsImJvZHlfZXJyb3JzIiwiZGVzY19lcnJvcnMkMCIsInBleHBfZGVzYyQxIiwiZGVzY19lcnJvcnMiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJsb2Nfc3RhY2tfZXJyb3JzIiwicGV4cF9sb2Nfc3RhY2skMCIsInBleHBfYXR0cmlidXRlcyQwIiwidGFnIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFzdCIsImV4biQwIiwiSW5wdXRfdmVyc2lvbiIsImFzdCQwIiwiSW5wdXRfdmVyc2lvbiQwIiwiYXN0JDEiLCJhc3QkMiIsInJlYWQiLCJpbnB1dF9zb3VyY2UiLCJ3cml0ZSIsIm9jIiwiYWRkX3BweF9jb250ZXh0Iiwic2ckMCIsInN0JDAiLCJyZWFkX2JpbmFyeSIsInNpZ25hdHVyZSIsInN0cnVjdHVyZSIsImdldF9hc3QiLCJnZXRfaW5wdXRfbmFtZSIsInJ1bl9wcmVwcm9jZXNzb3IiLCJwcCIsImlucHV0Iiwib3V0cHV0IiwiY29tbWFuZCIsImVuZF9tYXJrZXJfc2lnIiwiZW5kX21hcmtlcl9zdHIiLCJleHRyYWN0X3ByZWZpeCIsInJlbW92ZV9sb2MiLCJyZW1vdmVfbG9jJDAiLCJwcmV2JDAiLCJwcmV2JDEiLCJkaWZmX2FzdHMiLCJnZW5lcmF0ZWQiLCJyb3VuZF90cmlwIiwid2l0aF90ZW1wX2ZpbGUiLCJmbjEiLCJmbjIiLCJvdXQiLCJkdW1wIiwiY21kIiwib2siLCJjbWQkMCIsInBhcnNlX3N0cmluZyIsIm1hdGNoX2xvb3AiLCJlbmRfcG9zIiwibWlzbWF0Y2hfaGFuZGxlciIsInNvdXJjZSIsImV4cGVjdGVkJDAiLCJzb3VyY2UkMCIsImxvYyQxIiwic291cmNlJDEiLCJleHBlY3RlZCQxIiwieSQwIiwiZG9fbWF0Y2giLCJnZXRfbG9jIiwiYXBwbHkiLCJ0b19zZXhwIiwiZ2V0X2xvYyQwIiwicHAkMCIsInRvX3NleHAkMCIsIm1hdGNoX3N0cnVjdHVyZV9yZXMiLCJtYXRjaF9zdHJ1Y3R1cmUiLCJtYXRjaF9zaWduYXR1cmVfcmVzIiwibWF0Y2hfc2lnbmF0dXJlIiwiZGVzYyIsImVxIiwiZ2V0X2V4dGVuc2lvbiIsInR5cGVfZGVjbCIsImUkMSIsImUkMiIsImEkMyIsImUkMyIsImEkNCIsImUkNCIsImEkNSIsImUkNSIsImEkNiIsImUkNiIsImEkNyIsImUkNyIsImEkOCIsImUkOCIsImEkOSIsImUkOSIsInZpcnR1YWxfcGF5bG9hZCIsIm1lcmdlX2F0dHJpYnV0ZXNfcmVzIiwicSQwIiwidCQxIiwicSQxIiwidCQyIiwibWVyZ2VfYXR0cmlidXRlcyIsIndpdGhfYXJnIiwiZmluZCIsImV4dCIsInNoaWZ0IiwiYXJnJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmciLCJwYXR0IiwiY29udmVydF9yZXMkMCIsImZvdW5kIiwiY29udmVydF9pbmxpbmVfcmVzIiwiY29udmVydF9pbmxpbmUiLCJjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUiLCJmaWx0ZXJfYnlfY29udGV4dCIsImV4cGFuZGVycyIsImV4cGFuZGVycyQwIiwiZXhwYW5kZXJzJDEiLCJ1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIiwiY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2VyIiwiZXJyb3JfbGlzdF90b19leGNlcHRpb24iLCJkZWNsYXJlX2lubGluZSIsImRlY2xhcmVfd2l0aF9wYXRoX2FyZyQwIiwiZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyIsImRlY2xhcmUkMSIsImRlY2xhcmVfaW5saW5lJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMSIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfcHB4X2ltcG9ydCIsImV4cGFuZCIsInNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IiwiYXR0cl9uYW1lJDAiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCQwIiwiZmlsdGVyIiwiZmllbGQiLCJmaWVsZCQwIiwic3BlY2lhbF9mdW5jdGlvbiIsImNvbnN0YW50Iiwic3VmZml4IiwiYXR0cl9zdHJfdHlwZV9kZWNsIiwiYXR0cl9zaWdfdHlwZV9kZWNsIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCIsImF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3N0cl90eXBlX2V4dCIsImF0dHJfc2lnX3R5cGVfZXh0IiwiYXR0cl9zdHJfZXhjZXB0aW9uIiwiYXR0cl9zaWdfZXhjZXB0aW9uIiwiYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCIsIm5vcCIsInJlcGxhY2UiLCJpbnNlcnRfYWZ0ZXIiLCJtYXBfbm9kZV9yZWMiLCJzdXBlcl9jYWxsIiwiYmFzZV9jdHh0IiwiZW1iZWRfZXJyb3JzIiwiY29udmVydGVkIiwibWFwX25vZGVzIiwiaG9vayIsImluX2dlbmVyYXRlZF9jb2RlIiwiZ2VuZXJhdGVkX2NvZGUiLCJjb2RlIiwiZ2V0X2dyb3VwIiwiYXR0cjIiLCJ2YWxzJDAiLCJ2YWxzIiwicmV2X2NvbmNhdCIsInNvcnRfYXR0cl9ncm91cF9pbmxpbmUiLCJzb3J0X2F0dHJfaW5saW5lIiwiY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljIiwibm9wJDAiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImZ1bmMkMCIsImxhYiIsIm9wdGlvbiIsIndpdGhfY29udGV4dCIsImV4cGFuZGVkIiwiZXhwYW5kX2NvbnN0YW50IiwidGV4dCIsImMkMCIsImV4biQxIiwiaWQkMCIsImdlbmVyYXRlZF9jb2RlJDAiLCJleG4kMiIsInN0aCQwIiwicnVsZXMiLCJzcGVjaWFsX2Z1bmN0aW9ucyIsInNwZWNpYWxfZnVuY3Rpb25zJDAiLCJjb25zdGFudHMiLCJwcHhfaW1wb3J0IiwiYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2RlY2xzIiwiYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xzIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHAiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyIsImF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2V4dHMiLCJhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRzIiwiYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25zIiwiYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3NpZ19leGNlcHRpb25zIiwibWFwX25vZGUiLCJtYXBfbm9kZXMkMCIsImhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSIsImV4cGFuZGVkX2l0ZW1zIiwiZzEiLCJnMiIsInZhbHVlcyIsImdlbmVyYXRlZF9jb2RlX2JlZ2luIiwiZ2VuZXJhdGVkX2NvZGVfZW5kIiwicGFyZW4iLCJzdG9wIiwibWFrZV90ZXh0IiwiYmxvY2siLCJwcmludGVyIiwiaWR4IiwiY291bnRfbmV3bGluZXMiLCJza2lwX2JsYW5rX2VvbCIsImNvbnRlbnRzIiwiY251bSQxIiwiY251bSQwIiwicmVjb25jaWxlIiwic3R5bGVyIiwicmVwbHMkMyIsImlucHV0X2ZpbGVuYW1lIiwicmVwbHMiLCJyZXBscyQyIiwicmVwbCQwIiwicHJldiIsInJlcGxzJDAiLCJyZXBscyQxIiwicmVwbHMkNCIsIm91dHB1dF9uYW1lIiwiY29weV9pbnB1dCIsInVwX3RvIiwibGluZSIsImxhc3RfaXNfdGV4dCIsImlzX3RleHQiLCJsaW5lJDAiLCJsaW5lJDEiLCJsb29wJDAiLCJsaW5lJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzJDAiLCJsYXN0X2lzX3RleHQkMCIsImVuZF9jb25zZWN1dGl2ZV9yZXBscyIsInBvcyQxIiwibGFzdF9pc190ZXh0JDEiLCJwb3MkMiIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJvZCIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImNlIiwibGFiZWxzIiwiZXhwcl9vIiwiY3RlIiwib3BuIiwiZV9sb2MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImN0cCIsInNpYmxpbmdzIiwiZXhlX25hbWUiLCJhZGRfYXJnIiwic3BlYyIsImRvYyIsImxvY19mbmFtZSIsInBlcmZvcm1fY2hlY2tzIiwicGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyIsInBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIiwiZGVidWdfYXR0cmlidXRlX2Ryb3AiLCJhcHBseV9saXN0IiwicHJlcHJvY2Vzc29yIiwibm9fbWVyZ2UiLCJyZXF1ZXN0X3ByaW50X3Bhc3NlcyIsInJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIiwidXNlX2NvbG9yIiwiZGlmZl9jb21tYW5kIiwicHJldHR5Iiwib3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIiwiY29ycmVjdGVkX3N1ZmZpeCIsImdldF9kZWZhdWx0X3BhdGgiLCJmbmFtZSQwIiwiZ2V0X2RlZmF1bHRfcGF0aF9zdHIiLCJnZXRfZGVmYXVsdF9wYXRoX3NpZyIsIm9mX3N0cmluZyIsImdpdmVuX3Rocm91Z2hfY2xpIiwic2V0IiwiaGFuZGxlcnMiLCJhZGRfaGFuZGxlciIsImFkZF9zaW1wbGVfaGFuZGxlciIsImFja25vd2xlZGdlX2Nvb2tpZXMiLCJwb3N0X2hhbmRsZXJzIiwiYWRkX3Bvc3RfaGFuZGxlciIsImNhbGxfcG9zdF9oYW5kbGVycyIsInRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtYXRpb24kMCIsImhhc19uYW1lIiwicHJpbnRfY2FsbGVyX2lkIiwiY2FsbGVyX2lkIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24iLCJlbmNsb3NlX2ltcGwiLCJlbmNsb3NlX2ludGYiLCJpbXBsIiwiaW50ZiIsImxpbnRfaW1wbCIsImxpbnRfaW50ZiIsInByZXByb2Nlc3NfaW1wbCIsInByZXByb2Nlc3NfaW50ZiIsImluc3RydW1lbnQiLCJzdGgkMSIsImFsaWFzZXMiLCJydWxlcyQwIiwiaW1wbCQwIiwiaW50ZiQwIiwicHJlcHJvY2Vzc19pbXBsJDAiLCJwcmVwcm9jZXNzX2ludGYkMCIsImN0JDAiLCJsb2Nfb2ZfbGlzdCIsImwkMiIsImZpcnN0IiwibWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMiLCJleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciIsImdlbl9oZWFkZXJfYW5kX2Zvb3RlciIsIndob2xlX2xvYyIsImZvb3RlciIsImhlYWRlciIsImxvY19oZWFkZXIiLCJsb2NfZm9vdGVyIiwibWFwX2ltcGwiLCJzdF93aXRoX2F0dHJzIiwibWFwX2ludGYiLCJzZ193aXRoX2F0dHJzIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfIiwiYWRkX2N0eHRfYXJnIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24kMCIsImxpbnRfaW1wbCQwIiwibGludF9pbnRmJDAiLCJlbmNsb3NlX2ltcGwkMCIsImVuY2xvc2VfaW50ZiQwIiwicmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyQwIiwiZ2V0X3dob2xlX2FzdF9wYXNzZXMiLCJjdHMiLCJhZnRfaSIsImJlZl9pIiwicmVkdWNlZF90IiwiaW5zdHIiLCJ0cmFuc2YiLCJ0cmFuc2YkMCIsInRyYW5zZm9ybXMiLCJhZnRlcl9pbnN0cnMiLCJiZWZvcmVfaW5zdHJzIiwicHJlcHJvY2VzcyIsImxpbnRlcnMiLCJnZXRfZW5jbG9zZXJzIiwiaW1wbF9lbmNsb3NlcnMiLCJpbnRmX2VuY2xvc2VycyIsIm1lcmdlX2VuY2xvc2VyIiwiZW5jbG9zZXJzIiwiZm9vdGVycyIsImhlYWRlcnMiLCJoZWFkZXJzJDAiLCJmb290ZXJzJDAiLCJhcHBseV90cmFuc2Zvcm1zIiwibGludF9maWVsZCIsImRyb3BwZWRfc29fZmFyIiwibGludF9lcnJvcnMiLCJvbGRfZHJvcHBlZCIsImxpbnRfZXJyb3JzJDAiLCJlcnJvcnMkMSIsIm1vcmVfZXJyb3JzIiwibmV3X2Ryb3BwZWQiLCJwcmludF9kaWZmIiwid2hhdCIsImRpZmYiLCJkcm9wcGVkIiwiZXJyb3JfdG9fZXh0ZW5zaW9uIiwiZXh0JDAiLCJleG5fdG9fZXh0ZW5zaW9uIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJmcCIsIm1zIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwicGFyYW0iLCJhcHBseV9hbGwiLCJlbnRyeSIsImdlbmVyYXRvcnMiLCJleHRfdG9faXRlbSIsImVtcHR5X2xhYmVsX2Vycm9yIiwiZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIiwiYWNjZXB0ZWRfYXJncyIsInNwZWxsY2hlY2tfbXNnIiwidW5hY2NlcHRlZF9hcmd1bWVudCIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImFjdHVhbF9kZXJpdmVyX25hbWUiLCJkdXBfZXJyb3IiLCJkZXAiLCJkZXBfbmFtZSIsImxfZXJyIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJ4IiwiZGVmYXVsdCQwIiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJpIiwidmFycyIsInZhciQwIiwiYmluZGluZ3MiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ0eHQiLCJ2YXJzJDAiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsInRwIiwiYm9keSQwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJvcHQiLCJzdGgiLCJpbnRlcm5hbCIsIm4iLCJhcmciLCJhcmdzJDAiLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJpbml0IiwiZmllbGRfcmVmcyIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwidG9fYXJyYXlmIiwiZiIsImEiLCJvZl9hcnJheWYiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ0b19saXN0ZiIsIm9mX2xpc3RmIiwib3B0ZGVmIiwieCIsInRvX29wdGRlZiIsIngkMCIsInVub3B0ZGVmX2YiLCJkZWYiLCJ1bm9wdGRlZiIsImNvbnZkZWYiLCJ0b19vcHQiLCJvcHQiLCJjb252b3B0IiwianNfbG9nIiwibyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsInN0aCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwib2JqZWN0X2NzIiwiYXNzaWduIiwibzEiLCJvMiIsImFzc2lnbl9saXN0IiwicmVtb3ZlX3VuZGVmaW5lZCIsImtleXMiLCJrIiwib2JqIiwiY3JlYXRlIiwiYWRkIiwidiIsImFkZF9saXN0IiwiYWRkX2xpc3RmIiwibWFrZSIsIm1ha2VmIiwicmVtb3ZlIiwiZmluZCIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwiY3MiLCJqdGhlbjAiLCJlcnJvciIsInByb20iLCJwIiwiZXhuJDAiLCJlZiIsImVycm9yJDAiLCJqdGhlbiIsImp0aGVuMF9vcHQiLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibzMiLCJsb2dfc3RyMiIsInMxIiwiczIiLCJsb2dfc3RyMyIsInMzIiwiZGVidWciLCJkZWJ1ZzIiLCJkZWJ1ZzMiLCJkZWJ1Z19zdHIiLCJkZWJ1Z19zdHIyIiwiZGVidWdfc3RyMyIsIndhcm4iLCJ3YXJuMiIsIndhcm4zIiwid2Fybl9zdHIiLCJ3YXJuX3N0cjIiLCJ3YXJuX3N0cjMiLCJlcnJvcjIiLCJlcnJvcjMiLCJlcnJvcl9zdHIiLCJlcnJvcl9zdHIyIiwiZXJyb3Jfc3RyMyIsImJpZ0ludCIsIm9mX3N0cmluZyIsIm9mX2ludCIsImkiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZSIsIm9mX2Zsb2F0IiwidG9fbG9jYWxlX3N0cmluZyIsIm9wdGlvbnMiLCJuIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsInN0aCQwIiwic3RoJDEiLCJsaXN0ZW4iLCJzdGgkMiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwidHIiLCJjcmVhdGUiLCJzdG9yZSIsImFkZCIsImtleSIsInN0IiwieCIsInB1dCIsInJhbmdlIiwib2xvd2VyIiwib3VwcGVyIiwibG93ZXIiLCJ1cHBlciIsInVwcGVyJDEiLCJsb3dlciQwIiwidXBwZXIkMCIsImNvdW50IiwiayIsImdldCIsIm9mX2pzIiwianMiLCJqcyQwIiwiZ2V0X2FsbCIsImdldF9rZXkiLCJnZXRfYWxsX2tleXMiLCJkZWxldGUkMCIsIml0ZXIiLCJkaXJlY3Rpb24iLCJjIiwidDgwIiwiZm9sZCIsInN0YXJ0IiwiYWNjIiwiY2FsbGJhY2skMCIsInQ5NSIsIml0ZXJfa2V5cyIsInQxMTAiLCJmb2xkX2tleXMiLCJ0MTI0IiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4Iiwib3B0aW9ucyQwIiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJsZW5ndGgiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMDI2IiwiZXJyb3Jfc291cmNlXzA0MiIsImVycm9yX3NvdXJjZV8yMDYiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJ0X29mX3NleHAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXZhbF9mYWlsIiwibG9jIiwiZm10IiwicyIsImN1c3RvbV9wcmludGZfMDAxIiwiZXF1YWxfb3B0aW9uIiwiZXF1YWwiLCJhIiwiYiIsInkiLCJ4IiwiY3JlYXRlIiwiZXEiLCJ4cyQxIiwiczIiLCJzMSIsInNvcnRlZCIsInhzJDAiLCJsYXN0X3ZhbHVlJDEiLCJsYXN0X2tleSQxIiwiYWNjIiwibGFzdF9rZXkiLCJsYXN0X3ZhbHVlIiwieHMiLCJsYXN0X3ZhbHVlJDAiLCJsYXN0X2tleSQwIiwic29ydGVkJDAiLCJtYXAiLCJ0IiwiZiIsInYiLCJrIiwidG9fbWQ1Iiwib2ZfbWQ1Iiwic2V4cF9vZl90JDEiLCJ0X29mX3NleHAkMCIsInV1aWQiLCJ1IiwiaW50JDAiLCJwYWlyIiwibGlzdCIsImwiLCJjb25zdHJ1Y3RvciIsInRfb2Zfc2V4cCQxIiwib2ZfYV8wMzkiLCJzZXhwXzA0NCIsInRhZ18wNDUiLCJzZXhwX2FyZ3NfMDQ2IiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDkzIiwicmVzMV8wOTQiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMV8wNTUiLCJhcmcwXzA1NCIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDg1IiwiYXJnMF8wODYiLCJvZl9hXzAxMCIsInJlczBfMDg3IiwiZmllbGRfc2V4cHNfMDEzIiwic29ydGVkXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3Iiwic2V4cF8wMTIiLCJmaWVsZF9zZXhwc18wMjAiLCJmaWVsZF9uYW1lXzAxOCIsInRhaWxfMDI5IiwieF8wMzAiLCJmaWVsZF9zZXhwXzAxOSIsInNleHBfMDI1IiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJmdmFsdWVfMDI3Iiwic29ydGVkXzAxNSIsInNleHBfYXJnc18wOTciLCJhcmcxXzA5OSIsImFyZzBfMDk4IiwicmVzMF8xMDAiLCJyZXMxXzEwMSIsInNleHBfYXJnc18wNjUiLCJhcmcwXzA3MSIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMwXzA3MiIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wODEiLCJzZXhwXzA4MCIsImFyZzFfMDc3IiwiYXJnMF8wNzYiLCJyZXMwXzA3OCIsInJlczFfMDc5IiwicmVzMF8wODIiLCJzZXhwX29mX3QkMiIsIm9mX2FfMTA4IiwiYXJnMV8xMTAiLCJhcmcwXzEwOSIsInJlczBfMTExIiwicmVzMV8xMTIiLCJhcmcxXzExNCIsImFyZzBfMTEzIiwicmVzMF8xMTUiLCJyZXMxXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzEyMyIsImFyZzFfMTIwIiwiYXJnMF8xMTkiLCJyZXMwXzEyMSIsInJlczFfMTIyIiwicmVzMF8xMjQiLCJhcmcwXzEyOSIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4IiwicmVzMF8xMzAiLCJhcmcwXzEzMSIsIm9mX2FfMDMxIiwic29ydGVkXzAzMyIsImJuZHNfMDMyIiwiYXJnMV8wMzYiLCJhcmcwXzAzNSIsInJlczBfMDM3IiwicmVzMV8wMzgiLCJhcmdfMDM0IiwiYm5kc18wMzIkMCIsInJlczBfMTMyIiwiYXJnMV8xMzQiLCJhcmcwXzEzMyIsInJlczBfMTM1IiwicmVzMV8xMzYiLCJhcmcxXzEzOCIsImFyZzBfMTM3IiwicmVzMF8xMzkiLCJyZXMxXzE0MCIsImFyZzBfMTQxIiwicmVzMF8xNDIiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJuIiwibiQwIiwidG9fZGlnZXN0IiwidG9fZGlnZXN0JDAiLCJ4JDIiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTk4IiwiYl8xOTkiLCJiXzIwMSIsImFfMjAwIiwiY21wX2EiLCJhXzIwMiIsImJfMjAzIiwiYV8xNDYiLCJiXzE0OSIsImJfMTQ3IiwiYV8xNDgiLCJhXzE1MiIsImFfMTUwIiwiYl8xNTMiLCJiXzE1MSIsImFfMTU0IiwiYl8xNTUiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsImFfMTYwIiwiYl8xNjEiLCJhXzE2MiIsImJfMTYzIiwidF8xNjUiLCJ0XzE2NCIsInRfMTY3IiwidF8xNjYiLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsInRfMTczIiwidF8xNzIiLCJ0XzE3NSIsInRfMTc0IiwiYV8xNzYiLCJiXzE3NyIsImFfMDAyIiwiYl8xNzkiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJhXzE4MiIsImJfMTgzIiwiYV8xODYiLCJhXzE4NCIsImJfMTg3IiwiYl8xODUiLCJuJDEiLCJhXzE4OCIsImJfMTg5IiwiYV8xOTIiLCJhXzE5MCIsImJfMTkzIiwiYl8xOTEiLCJuJDIiLCJhXzE5NCIsImJfMTk1IiwiYV8xOTYiLCJiXzE5NyIsInQwX29mX3NleHAiLCJzZXhwXzIwOCIsInRhZ18yMDkiLCJzZXhwX2FyZ3NfMjEwIiwiYXJnMF8yMTEiLCJyZXMwXzIxMiIsInNleHBfb2ZfdDAiLCJhcmcwXzIxMyIsInJlczBfMjE0IiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwic2V4cF9vZl90JDMiLCJvZl9zdHJpbmckMSIsInRvX3N0cmluZyQyIiwic3ltYm9sIiwiY29tcGFyZSQxIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQ0Iiwib2Zfc3RyaW5nJDIiLCJ0b19zdHJpbmckMyIsImNvbXBhcmF0b3IiLCJjb21wYXJlJDIiLCJzZXhwX29mX3QkNSIsImNyZWF0ZSQzIiwidHJpcHMiLCJnaWQiLCJ2cyIsIm1lbWJlcnMiLCJsb29rdXAiLCJnIiwic2NoZW1lIiwiY3VzdG9tX3ByaW50Zl8yODUiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwic2V4cF9vZl90JDYiLCJhcmcxXzI4NyIsImFyZzBfMjg2IiwicmVzMF8yODgiLCJyZXMxXzI4OSIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MiIsInJlczFfMjkzIiwiYXJnMF8yOTgiLCJhcmcxXzI5NSIsImFyZzBfMjk0IiwicmVzMF8yOTYiLCJyZXMxXzI5NyIsInJlczBfMjk5IiwiYXJnMF8zMDQiLCJhcmcxXzMwMSIsImFyZzBfMzAwIiwicmVzMF8zMDIiLCJyZXMxXzMwMyIsInJlczBfMzA1IiwiYXJnMF8zMDYiLCJyZXMwXzMwNyIsImFyZzBfMzEyIiwiYXJnMV8zMDkiLCJhcmcwXzMwOCIsInJlczBfMzEwIiwidl8yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInZfMjUwIiwiYXJnMV8yNTIiLCJhcmcwXzI1MSIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMxXzMxMSIsInJlczBfMzEzIiwiYXJnMF8zMTgiLCJhcmcxXzMxNSIsImFyZzBfMzE0IiwicmVzMF8zMTYiLCJyZXMxXzMxNyIsInJlczBfMzE5IiwiYXJnMV8zMjEiLCJhcmcwXzMyMCIsInJlczBfMzIyIiwicmVzMV8zMjMiLCJhcmcyXzMyNiIsImFyZzFfMzI1IiwiYXJnMF8zMjQiLCJtZW1iZXJzXzI3NSIsImxvY18yNzMiLCJnaWRfMjcxIiwiYm5kc18yNzAiLCJhcmcxXzI4MiIsImFyZzBfMjgxIiwicmVzMF8yODMiLCJhcmcxXzI3OCIsImFyZzBfMjc3IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczFfMjg0IiwiYXJnXzI3NiIsImJuZHNfMjcwJDAiLCJhcmdfMjc0IiwiYm5kc18yNzAkMSIsImFyZ18yNzIiLCJibmRzXzI3MCQyIiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5IiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImxvb2t1cCQwIiwiYV8zMzAiLCJiXzMzMSIsInRfMzMzIiwidF8zMzIiLCJ0XzMzNSIsInRfMzM0IiwiYXJnMV8zMzciLCJhcmcwXzMzNiIsInJlczBfMzM4IiwicmVzMV8zMzkiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl8zNDAiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfYXJyYXlfbG9vcCIsImFyIiwiZWxzX3Bvc19yZWYiLCJpIiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlX2hhc2h0YmwiLCJiaW5fd3JpdGVfa2V5IiwiYmluX3dyaXRlX3ZhbCIsInBsZW4iLCJjbnRfcmVmIiwiY29sbF9odGJsIiwicmVzX3BvcyIsImJpbl93cml0ZV9mbG9hdDMyX3ZlYyIsImJpbl93cml0ZV9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZV9mbG9hdDMyX21hdCIsIm0iLCJsZW4xIiwibGVuMiIsInBvcyQxIiwiYmluX3dyaXRlX2Zsb2F0NjRfbWF0IiwiYmluX3dyaXRlX2JpZ3N0cmluZyIsInMiLCJiaW5fd3JpdGVfdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVfaW50XzhiaXQiLCJiaW5fd3JpdGVfaW50XzE2Yml0IiwiYmluX3dyaXRlX2ludF8zMmJpdCIsImJpbl93cml0ZV9pbnRfNjRiaXQiLCJiaW5fd3JpdGVfaW50NjRfYml0cyIsImJpbl93cml0ZV9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IiwiYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImVsJDEiLCJtYXliZV9mbG9hdCIsImVsJDAiLCJmaXJzdCIsInJlcyIsImJpbl9yZWFkX2hhc2h0YmwiLCJiaW5fcmVhZF9rZXkiLCJiaW5fcmVhZF92YWwiLCJyZWFkX2t2X3BhaXIiLCJlbHMiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyIsInZlYyIsImJpbl9yZWFkX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQiLCJtYXQiLCJiaW5fcmVhZF9mbG9hdDY0X21hdCIsImJpbl9yZWFkX2JpZ3N0cmluZyIsImJpbl9yZWFkX3ZhcmlhbnRfaW50IiwiYmluX3JlYWRfaW50XzhiaXQiLCJiaW5fcmVhZF9pbnRfMTZiaXQiLCJiaW5fcmVhZF9pbnRfMzJiaXQiLCJiaW5fcmVhZF9pbnRfNjRiaXQiLCJiaW5fcmVhZF9pbnQ2NF9iaXRzIiwiYmluX3JlYWRfbmV0d29yazE2X2ludCIsImJpbl9yZWFkX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIiLCJiaW5fcmVhZF9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRfbmV0d29yazY0X2ludDY0IiwiYmluX3JlYWRfbWQ1IiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaGFwZV9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2hhcGVfaW50NjMiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2hhcGVfbmF0aXZlaW50IiwiYmluX3NoYXBlX25hdDAiLCJiaW5fc2hhcGVfZGlnZXN0IiwiYmluX3NoYXBlX2Zsb2F0MzJfdmVjIiwiYmluX3NoYXBlX2Zsb2F0NjRfdmVjIiwiYmluX3NoYXBlX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDMyX21hdCIsImJpbl9zaGFwZV9mbG9hdDY0X21hdCIsImJpbl9zaGFwZV9tYXQiLCJiaW5fc2hhcGVfYmlnc3RyaW5nIiwiYmluX3NoYXBlX2Zsb2F0YXJyYXkiLCJiaW5fc2hhcGVfdmFyaWFudF9pbnQiLCJiaW5fc2hhcGVfaW50XzhiaXQiLCJiaW5fc2hhcGVfaW50XzE2Yml0IiwiYmluX3NoYXBlX2ludF8zMmJpdCIsImJpbl9zaGFwZV9pbnRfNjRiaXQiLCJiaW5fc2hhcGVfaW50NjRfYml0cyIsImJpbl9zaGFwZV9uZXR3b3JrMTZfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyIiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0IiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaGFwZV9oYXNodGJsIiwieSIsImJpbl9zaGFwZV9mbG9hdF9hcnJheSIsImJpbl9zaGFwZV9sYXp5IiwiYmluX3NoYXBlX3BhaXIiLCJiaW5fc2hhcGVfdHJpcGxlIiwieiIsImJpbl9zaXplX3VuaXQiLCJiaW5fc2l6ZV9ib29sIiwiYmluX3NpemVfY2hhciIsImJpbl9zaXplX21kNSIsImJpbl9zaXplX2ludF9uYXQwIiwiYmluX3NpemVfaW50X25lZ2F0aXZlIiwiYmluX3NpemVfaW50IiwiYmluX3NpemVfaW50JDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfZmxvYXQiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl9zaXplX2ludDY0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fc2l6ZV91bml0JDAiLCJiaW5fc2l6ZV9ib29sJDAiLCJiaW5fc2l6ZV9jaGFyJDAiLCJiaW5fc2l6ZV9pbnQkMSIsImJpbl9zaXplX25hdDAkMCIsImJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyIsInNpemVfbGVuIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fc2l6ZV9tZDUkMSIsImJpbl9zaXplX2Zsb2F0JDAiLCJmIiwiYmluX3NpemVfaW50MzIkMCIsImJpbl9zaXplX2ludDY0JDAiLCJiaW5fc2l6ZV9uYXRpdmVpbnQiLCJiaW5fc2l6ZV9yZWYkMCIsImJpbl9zaXplX2VsIiwiYmluX3NpemVfbGF6eV90JDAiLCJiaW5fc2l6ZV9vcHRpb24kMCIsImJpbl9zaXplX3BhaXIkMCIsImJpbl9zaXplX2EiLCJiaW5fc2l6ZV9iIiwiYmluX3NpemVfdHJpcGxlJDAiLCJiaW5fc2l6ZV9jIiwiYmluX3NpemVfbGlzdCIsInNpemVfYWNjIiwibGVuX2FjYyIsImxlbl9hY2MkMCIsInNpemVfYWNjJDAiLCJiaW5fc2l6ZV9sZW4iLCJiaW5fc2l6ZV9mbG9hdGFycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheV9sb29wIiwidG90YWxfbGVuIiwidG90YWxfbGVuX3JlZiIsImJpbl9zaXplX2FycmF5IiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGgiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IiwiYmluX2Zsb2F0X2FycmF5IiwiYmluX3dyaXRlcl92YXJpYW50X2ludCIsImJpbl9yZWFkZXJfdmFyaWFudF9pbnQiLCJiaW5fdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVyX2ludF84Yml0IiwiYmluX3JlYWRlcl9pbnRfOGJpdCIsImJpbl9pbnRfOGJpdCIsImJpbl93cml0ZXJfaW50XzE2Yml0IiwiYmluX3JlYWRlcl9pbnRfMTZiaXQiLCJiaW5faW50XzE2Yml0IiwiYmluX3dyaXRlcl9pbnRfMzJiaXQiLCJiaW5fcmVhZGVyX2ludF8zMmJpdCIsImJpbl9pbnRfMzJiaXQiLCJiaW5fd3JpdGVyX2ludF82NGJpdCIsImJpbl9yZWFkZXJfaW50XzY0Yml0IiwiYmluX2ludF82NGJpdCIsImJpbl93cml0ZXJfaW50NjRfYml0cyIsImJpbl9yZWFkZXJfaW50NjRfYml0cyIsImJpbl9pbnQ2NF9iaXRzIiwiYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50IiwiYmluX25ldHdvcmsxNl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQiLCJiaW5fbmV0d29yazMyX2ludCIsImJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIiLCJiaW5fbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50IiwiYmluX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0IiwiYmluX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIiwiY252X3dyaXRlciIsImNudiIsInRwX2NsYXNzIiwiY252X3JlYWRlciIsInZ0YWciLCJmb3Jfc2hhcGUiLCJmb3Jfd3JpdGVyIiwiZm9yX3JlYWRlciIsImJpbl93cml0ZV9zaXplX2hlYWRlciIsImJpbl9yZWFkX3NpemVfaGVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX2R1bXAiLCJvcHQiLCJ3cml0ZXIiLCJzdGgiLCJoZWFkZXIiLCJwb3NfbGVuIiwidG90X2xlbiIsInBvc19sZW4kMCIsImJ1ZiQwIiwiYnVmJDEiLCJiaW5fcmVhZF9zdHJlYW0iLCJtYXhfc2l6ZSIsInJlYWQiLCJyZWFkZXIiLCJtYXhfc2l6ZSQwIiwibXNnIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJtYXliZV9hbm5vdGF0ZV9zaGFwZSIsIm1heWJlX3V1aWQiLCJzaGFwZSIsInV1aWQiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ0IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2hhcGVfZWwiLCJiaW5fd3JpdGVyIiwiYmluX3JlYWRlciIsInR5cGVfY2xhc3MiLCJiaW5fc2hhcGVfZWwxIiwiYmluX3NoYXBlX2VsMiIsImJpbl9zaXplX2VsMSIsImJpbl9zaXplX2VsMiIsImJpbl93cml0ZV9lbDEiLCJiaW5fd3JpdGVfZWwyIiwiYmluX3JlYWRfZWwxIiwiYmluX3JlYWRfZWwyIiwiYmluX3dyaXRlcjEiLCJiaW5fd3JpdGVyMiIsImJpbl9yZWFkZXIxIiwiYmluX3JlYWRlcjIiLCJ0eXBlX2NsYXNzMSIsInR5cGVfY2xhc3MyIiwiYmluX3NoYXBlX2VsMyIsImJpbl9zaXplX2VsMyIsImJpbl93cml0ZV9lbDMiLCJiaW5fcmVhZF9lbDMiLCJiaW5fd3JpdGVyMyIsImJpbl9yZWFkZXIzIiwidHlwZV9jbGFzczMiLCJtYXliZV9jYWxsZXJfaWRlbnRpdHkiLCJ3aXRoX21vZHVsZV9uYW1lIiwibW9kdWxlX25hbWUiLCJmdW5jdGlvbl9uYW1lIiwibW9kdWxlX25hbWUkMCIsInJhaXNlX3JlYWRfdG9vX211Y2giLCJyYWlzZV9yZWFkX25vdF9lbm91Z2giLCJzaXplX3JlZiIsImlkeCIsInJlc3VsdCIsInQxIiwidDIiLCJ0MyIsImJpbl9yZWFkX3VuaXQkMCIsInZpbnQiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZF9zdHJpbmckMCIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZF9mbG9hdGFycmF5JDAiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwic2V4cF9vZl90Iiwib2ZfYV8wMDMiLCJzdGFydF9hIiwiZW5kX2EiLCJ3cml0dGVuIiwiZXhwZWN0ZWRfc2l6ZSIsIm9mX2JpbmFibGUiLCJ0b19iaW5hYmxlIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ0b19vcGFxdWUiLCJibG9iIiwib2Zfb3BhcXVlX2V4biIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQwIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsInN0cmluZ19vZl9iaWdzdHJpbmciLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJ0b19vcGFxdWUkMCIsImJpbl93cml0ZXJfdiIsIm9mX29wYXF1ZV9leG4kMCIsImJpbl9yZWFkZXJfdiIsImVycm9yIiwiY29tcGFyZSQxIiwic2V4cF9vZl90JDEiLCJiaW5fc2l6ZV90JDUiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQyIiwicHJlX3Rlc3RfaG9vayIsIm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2giLCJ0IiwiZW5hYmxlX2V2ZXJ5dGhpbmciLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIiLCJ0b19zdHJpbmciLCJjb21iaW5lIiwidDEiLCJ0MiIsImNvbWJpbmVfYWxsIiwidHMiLCJ0ZXN0X21vZHVsZXNfcmFuIiwidGVzdF9tb2R1bGVzX2ZhaWxlZCIsInRlc3RzX3JhbiIsInRlc3RzX2ZhaWxlZCIsImR5bmFtaWNfbGliIiwiYWN0aW9uIiwiZm9yY2VfZHJvcCIsImdldCIsImN1cnJlbnQiLCJmb3VuZF90ZXN0IiwiaXNfY3VycmVudCIsInAiLCJjdXJyZW50JDAiLCJjdXJyZW50X3RhZ3MiLCJ0IiwibSIsInZlcmJvc2UiLCJzdHJpY3QiLCJzaG93X2NvdW50cyIsImxpc3RfdGVzdF9uYW1lcyIsImRlbGF5ZWRfZXJyb3JzIiwic3RvcF9vbl9lcnJvciIsImxvZyIsInRpbWVfc2VjIiwidXNlX2NvbG9yIiwiaW5fcGxhY2UiLCJkaWZmX2NvbW1hbmQiLCJzb3VyY2VfdHJlZV9yb290IiwiYWxsb3dfb3V0cHV0X3BhdHRlcm5zIiwiZGlzcGxheWVkX2Rlc2NyIiwiZGVzY3IiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJzIiwic3RyIiwiZmlsZSIsImluZGV4IiwiaW5kZXgkMCIsImkiLCJmaWxlbmFtZSQwIiwiaW5kZXhfc3RyaW5nIiwiaW5kZXgkMSIsInRhZyIsImwiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiZGVzY3IkMCIsImNvbXBsZXRlX3RhZ3MiLCJ1c2VkIiwibGluZV9udW1iZXJfb3B0IiwicG9zaXRpb25fc3RhcnQiLCJlbmRfb2ZfZGVmX2ZpbGVuYW1lIiwibGluZV9udW1iZXIiLCJmb3VuZCIsInJlcSIsImRyb3BwZWQiLCJkZXNjciQxIiwic3Vic3RyaW5nIiwic2hvdWxkX3J1biIsImRlc2NyJDIiLCJjaCIsInJlc3VsdCQwIiwiY2FtbF9yYW5kb21fc3RhdGUiLCJiYXNlX3JhbmRvbV9zdGF0ZSIsInJlc3VsdCIsImJhY2t0cmFjZSQwIiwiZXhuX3N0ciIsInNlcCIsInNldF9saWJfYW5kX3BhcnRpdGlvbiIsInN0YXRpY19saWIiLCJ3aGljaF90ZXN0cyIsInJlcXVpcmVzX3BhcnRpdGlvbiIsInVuc2V0X2xpYiIsInRlc3QiLCJiIiwidGVzdF91bml0IiwidGVzdF9tb2R1bGUiLCJwYXJ0aWFsX3RhZ3MiLCJwcmV2IiwieCIsImUkMCIsImUiLCJzdW1tYXJpemUiLCJrIiwiYWNjIiwiY291bnQiLCJjb3VudF90ZXN0X21vZHVsZXMiLCJ1bnVzZWRfdGVzdHMiLCJlcnJvcnMiLCJ1c2VfY29sb3IkMCIsImluX3BsYWNlJDAiLCJkaWZmX2NvbW1hbmQkMCIsInNvdXJjZV90cmVlX3Jvb3QkMCIsImFsbG93X291dHB1dF9wYXR0ZXJucyQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJvcHQiLCJmaWxlIiwic3RoIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiYnVmZmVyIiwiY2h1bmtfc2l6ZSIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJzdGgkMCIsImFwcGVuZCIsInN0aCQxIiwiZmFpbF9pZl9leGlzdHMiLCJzdGgkMiIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxpc3QkMCIsIndpZHRoIiwibGVmdCIsImxlZnRfY29sdW1uX3dpZHRoIiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwicmVmbCIsImNvbnYiLCJ4IiwibGlmdCIsImNvbXBhcmUiLCJhIiwiYiIsImVxdWFsIiwidWlkIiwibmV4dCIsIm5hbWUiLCJjb2RlIiwiaGFzaCIsInN0YXRpYyQwIiwiY29tcGFyZSQwIiwiazEiLCJrMiIsImNtcCIsImIkMCIsImEkMCIsInlzIiwieSIsInhzIiwibiIsImVxdWFsJDAiLCJoYXNoJDAiLCJzdGF0aWMkMSIsImtleSIsInQiLCJ1aWQkMCIsIm5hbWUkMCIsImNyZWF0ZSIsIm9wdCIsInN0aCIsInNhbWUiLCJubTEiLCJubTIiLCJzYW1lX3dpdG5lc3MiLCJzYW1lX3dpdG5lc3NfZXhuIiwiaW50JDAiLCJtZW0iLCJ0YWJsZSIsInNldCIsImRhdGEiLCJmaW5kIiwiZGF0YSQwIiwiZmFpbCIsInVpZF9hIiwidWlkX2IiLCJtc2ciLCJ3aXRuZXNzIiwidHlwZW5hbWVfb2ZfdCIsImMiLCJkIiwiZSIsImxhYmVsIiwiYXJpdHkiLCJhcmdzX2xhYmVscyIsImluZGV4Iiwib2NhbWxfcmVwciIsInR5aWQiLCJ0cmF2ZXJzZSIsImludGVybmFsX3VzZV9vbmx5IiwibGVuZ3RoIiwidGFnIiwiaXNfcG9seW1vcnBoaWMiLCJ2YWx1ZSIsImZvbGQiLCJpbml0IiwiZiIsImludGVybmFsX3VzZV9vbmx5JDAiLCJsYWJlbCQwIiwiaW5kZXgkMCIsImdldCIsImlzX211dGFibGUiLCJ0eWlkJDAiLCJ0cmF2ZXJzZSQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMSIsInR5cGVuYW1lX29mX3QkMCIsImxlbmd0aCQwIiwiZmllbGQiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImNyZWF0ZSQwIiwiZm9sZCQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMiIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsIm5hbWUkNCIsIm5hbWUkNSIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwibmFtZSQxNSIsIm5hbWUkMTYiLCJuYW1lJDE3IiwibmFtZSQxOCIsIm5hbWUkMTkiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2Zfc3RyaW5nIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX2xpc3QiLCJ0eXBlbmFtZV9vZl9hcnJheSIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfdHVwbGUwIiwidHlwZW5hbWVfb2ZfdHVwbGUyIiwidHlwZW5hbWVfb2ZfdHVwbGUzIiwidHlwZW5hbWVfb2ZfdHVwbGU0IiwidHlwZW5hbWVfb2ZfdHVwbGU1IiwicmVwIiwicmVwJDAiLCJyZXAkMSIsInJlcCQyIiwicmVwJDMiLCJyZXAkNCIsIm5hbWUkMjAiLCJhcml0eSQwIiwiYyQwIiwiYiQxIiwiYSQxIiwiZCQwIiwiYyQxIiwiYiQyIiwiYSQyIiwidHlwZW5hbWVfb2ZfdCQxIiwicm5nIiwiZG9tIiwicmVwJDUiLCJyZXAkNiIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsInIxIiwicjIkMCIsInIxJDAiLCJyMiQxIiwieCQwIiwicjEkMSIsInIyJDIiLCJ4JDEiLCJyMSQyIiwicjIkMyIsIngkMiIsInIxJDMiLCJyMiQ0IiwieCQzIiwicm5nMSIsImRvbTEiLCJybmcyIiwiZG9tMiIsInQxJDEiLCJ0MiQyIiwiYjIiLCJhMiIsImIxIiwiYTEiLCJjMiIsImIyJDAiLCJhMiQwIiwiYzEiLCJiMSQwIiwiYTEkMCIsImQyIiwiYzIkMCIsImIyJDEiLCJhMiQxIiwiZDEiLCJjMSQwIiwiYjEkMSIsImExJDEiLCJlMiIsImQyJDAiLCJjMiQxIiwiYjIkMiIsImEyJDIiLCJlMSIsImQxJDAiLCJjMSQxIiwiYjEkMiIsImExJDIiLCJyMSQ0IiwicjIkNSIsInIxJDUiLCJyMiQ2IiwibmFtZTEiLCJyMiQ3IiwibmFtZTIiLCJyMSQ3IiwieCQ0IiwidDEkMyIsInQyJDMiLCJ0MiQ0IiwicjEkNiIsInQxJDIiLCJyMiIsInQyJDEiLCJwcm9vZiIsImhlYWQiLCJ0JDAiLCJ0JDEiLCJ0eXBlcmVwX29mX2ludCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX3JlZiIsInR5cGVyZXBfb2ZfZnVuY3Rpb24iLCJ0eXBlcmVwX29mX3R1cGxlMCIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlNCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidmFsdWVfdHVwbGUwIiwidHlwZW5hbWVfb2ZfaW50NjMiLCJ0eXBlcmVwX29mX2ludDYzIiwicmVwcl9vZl9wb2x5X3ZhcmlhbnQiLCJ2YXJpYW50Iiwic2l6ZSIsInJlcHIiLCJoYXNoX3ZhcmlhbnQiLCJzIiwiYWNjdSIsImkiLCJkb3VibGVfYXJyYXlfdmFsdWUiLCJkb3VibGUkMCIsInNpbXBsZSIsIm1hcF92YXJpYW50IiwibWFwIiwidHlwZW5hbWUiLCJwb2x5bW9ycGhpYyIsInRhZyQwIiwiZmN0IiwiayIsInRhZ3MiLCJhdGFnIiwiYnRhZyIsIm1hcF9yZWNvcmQiLCJyZWNvcmQiLCJmaWVsZCQwIiwiZmllbGRzIiwiZ2V0JDAiLCJhZmllbGQiLCJiZmllbGQiLCJyZXF1aXJlZCIsInRhYmxlJDAiLCJjaGVja19kZXBlbmRlbmNpZXMiLCJpbXBsZW1lbnRzJDAiLCJtZXNzYWdlIiwicmVwbGFjZSQwIiwibWVtJDAiLCJ0YWJsZTAiLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJ0YWJsZTUiLCJpc19yZWdpc3RlcmVkIiwiaWRlbnQiLCJ1bml0IiwicmVnaXN0ZXIwIiwiY29tcHV0ZSIsInJlZ2lzdGVyMSIsInJlZ2lzdGVyMiIsInJlZ2lzdGVyMyIsInJlZ2lzdGVyNCIsInJlZ2lzdGVyNSIsInJlZ2lzdGVyIiwidHlwZXJlcF9vZl9hIiwib2ZfdHlwZXJlcCIsImNvbnRleHQiLCJtZW1vX3RhYmxlIiwicmVwJDExIiwicmVwJDEyIiwicmVwJDEzIiwicmVwJDE0IiwicmVwJDE1IiwidHVwbGUiLCJyYSIsInJiIiwicmEkMCIsInJiJDAiLCJyYyIsInJhJDEiLCJyYiQxIiwicmMkMCIsInJkIiwicmEkMiIsInJiJDIiLCJyYyQxIiwicmQkMCIsInJlIiwiY29udGVudCIsIm5hbWVkIiwic2hhcmVkIiwiY3VzdG9tIiwiY3VzdG9tJDAiLCJjdXN0b20kMSIsInJlcCQ3IiwiY3VzdG9tJDIiLCJjdXN0b20kMyIsInJlcCQ4IiwiY3VzdG9tJDQiLCJjdXN0b20kNSIsInJlcCQ5IiwidHlwZW5hbWVfb2ZfdCQyIiwiY3VzdG9tJDYiLCJjdXN0b20kNyIsInJlcCQxMCIsInR5cGVuYW1lX29mX3QkMyIsImN1c3RvbSQ4IiwiY3VzdG9tJDkiLCJjb21wdXRhdGlvbiIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIiwic2hhcmUiLCJvZl9wMSIsIm9mX3AyIiwib2ZfcDMiLCJvZl9wNCIsIm9mX3A1IiwidHlwZW5hbWVfb2ZfbmFtZWQiLCJ0eXBlcmVwX29mX3QiLCJlcnJvcl9zb3VyY2VfMDI0IiwiaGFzaF9mb2xkX3QiLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsIm1pbiIsIm1heCIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJiZXR3ZWVuIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJjb21wYXJhdG9yIiwicHAiLCJoYXNoYWJsZSIsImVxdWFsIiwicmVsYXRpdmVfdG8iLCJkaXIiLCJ0IiwidiIsImV4biQwIiwiZXhuIiwiZGlyX29yX2Vycm9yIiwiaW5pdGlhbF9kaXIiLCJ0X29mX3NleHAkMCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZmlsZW5hbWVfMDA0IiwibGluZV9udW1iZXJfMDA2IiwibGluZV9zdGFydF8wMDgiLCJzdGFydF9wb3NfMDEwIiwiZW5kX3Bvc18wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI2IiwiZmllbGRfc2V4cF8wMTckNSIsImZpZWxkX3NleHBfMDE3IiwieF8wMjciLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE3JDQiLCJmdmFsdWVfMDE5IiwiZW5kX3Bvc18wMTMiLCJzdGFydF9wb3NfMDExIiwibGluZV9zdGFydF8wMDkiLCJsaW5lX251bWJlcl8wMDciLCJmaWxlbmFtZV8wMDUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDM3Iiwic3RhcnRfcG9zXzAzNSIsImxpbmVfc3RhcnRfMDMzIiwibGluZV9udW1iZXJfMDMxIiwiZmlsZW5hbWVfMDI5IiwiYXJnXzAzOCIsImJuZHNfMDI4IiwiYXJnXzAzNiIsImJuZHNfMDI4JDAiLCJhcmdfMDM0IiwiYm5kc18wMjgkMSIsImFyZ18wMzIiLCJibmRzXzAyOCQyIiwiYXJnXzAzMCIsImJuZHNfMDI4JDMiLCJjb21wYXJlJDAiLCJhXzAzOSIsImJfMDQwIiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwiZmlsZW5hbWUiLCJvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiIsInBvcyIsInNleHBfb2ZfdCQxIiwiY29tcGFyZSQyIiwidG9fc3RyaW5nJDAiLCJvZl9zdHJpbmckMCIsInMiLCJpIiwib2ZfYV8wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImNtcF9hIiwiYV8wMDciLCJiXzAwOCIsImFfMDA5IiwiYl8wMTAiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiZ2V0X2N1cnJlbnQiLCJzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXQiLCJsb2NhdGlvbiIsInBvcyIsInByZXZfcG9zIiwicHJldl9wb3MkMCIsImxlbiIsImJhc2ljX2ZsdXNoIiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dCIsImluc3RhbmNlIiwidGVzdHNfcnVuJDAiLCJzeW1ib2xfYmluZCIsInJldHVybiQwIiwiZmx1c2giLCJleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUiLCJzIiwiZ2V0X291dHB1dHNfYW5kX2NsZWFudXAiLCJsYXN0X29mcyIsIm5leHRfb2ZzIiwibG9jIiwiYWNjIiwib2ZzIiwib3V0cHV0cyIsInRyYWlsaW5nX291dHB1dCIsInNhdmVfb3V0cHV0IiwidHJhaWxpbmciLCJibG9ja3MiLCJmaW5hbF9mbHVzaCIsIm9wdCIsImsiLCJzdGgiLCJjb3VudCIsIm1heF9hdHRlbXB0cyIsInJ1biQwIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJhcHBlbmQiLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4IiwiYmluZCIsInQiLCJmIiwidG9fcnVuIiwic2FuaXRpemUiLCJzIiwicnVuIiwiZmx1c2hlZCIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsIm9wdCIsInN0aCIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyIsInRvY3MkMCIsInRvYyIsImZvcmdldF90b2NzIiwiZm9yZ2V0X3RvYyQwIiwiZm9yZ2V0X3QiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJlbXB0eSIsImdldF9tYW55Iiwic3RhY2skMCIsInN0YWNrIiwiZW1wdHkkMCIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwiY2FtbF9wYXJzZXJfZW52IiwiXzEiLCJfMiIsInl5YWN0IiwieXl0YWJsZXMiLCJzZXhwIiwibGV4ZnVuIiwibGV4YnVmIiwic2V4cF9vcHQiLCJzZXhwcyIsInJldl9zZXhwcyIsInNleHBzX2FicyIsIm9jYW1sX2xleF90YWJsZXMiLCJidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsInNjYW5fc3RyaW5nIiwibG9jcyIsImxvY3MkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJsb2NzJDEiLCJsb2NzJDIiLCJzdGFydCIsImdlbl9sb2FkX3NleHBfbG9jIiwidW5pdCIsIm9mX2ludF9zdHlsZSIsIm9mX2Zsb2F0X3N0eWxlIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX21hY2giLCJ0b19zdHJpbmdfaHVtIiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsImRlZmF1bHRfaW5kZW50IiwibWVzc2FnZSIsImNvbXBhcmUiLCJlcXVhbCIsInRfc2V4cF9ncmFtbWFyIiwid2l0aF9uZXdfYnVmZmVyIiwib2MiLCJvdXRwdXRfaHVtIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJpbmRlbnQiLCJvdXRwdXRfbWFjaCIsInBybmciLCJ0ZW1wX2ZpbGVfbmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInYiLCJyYW5kX3N0YXRlIiwicmV0Iiwicm5kIiwib3Blbl90ZW1wX2ZpbGUiLCJvcHQiLCJzdGgiLCJwZXJtIiwiY291bnRlciIsIm5hbWUiLCJlJDAiLCJlIiwiY291bnRlciQwIiwic2F2ZV9vZl9vdXRwdXQiLCJvdXRwdXRfZnVuY3Rpb24iLCJmaWxlIiwidG1wX25hbWUiLCJvdXRwdXRfc2V4cF9ubCIsImRvX291dHB1dCIsInNhdmVfaHVtIiwic2F2ZV9tYWNoIiwib3V0cHV0X3NleHBzX25sIiwic2F2ZV9zZXhwc19odW0iLCJzYXZlX3NleHBzX21hY2giLCJzY2FuX3NleHAiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9zZXhwcyIsInNjYW5fcmV2X3NleHBzIiwiZ2V0X21haW5fYnVmIiwiYnVmJDAiLCJidWYkMSIsInNjYW5fZm9sZF9zZXhwcyIsImluaXQiLCJtYWluIiwiYWNjIiwiYWNjJDAiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBzX2NvbnYiLCJjb2xsIiwic2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UiLCJjb250YWluaW5nX3NleHAiLCJsb2NhdGlvbiIsImludmFsaWRfc2V4cCIsImV4biIsIngkMCIsIngkMSIsIngkMiIsImdldF9zZXhwIiwiZ2V0X3JhbmdlIiwicmFuZ2UiLCJzZXhwX29mX2NvbnYiLCJzZXhwX29mX2EiLCJhIiwiZmluZF9zZXhwIiwiYW5ub3Rfc2V4cCIsImxvb3AiLCJzdWJfc2V4cCIsImFubm90cyIsInJlcyIsImV4biQwIiwiaW52YWxpZF9zZXhwJDAiLCJjcmVhdGUiLCJ0ZXh0X2xpbmUiLCJzdGgkMCIsInRleHRfY2hhciIsInN0aCQxIiwiYnVmX3BvcyIsInN0aCQyIiwiZ2xvYmFsX29mZnNldCIsImZhaWwiLCJtc2ciLCJ3aXRoX2J1Zl9wb3MiLCJwZSIsInBwb3MiLCJhbm5vdGF0ZV9zZXhwIiwiaXRlciIsInN0YXJ0X3BvcyQwIiwiYW5ub3QiLCJlbmRfcG9zJDAiLCJyYWlzZV9mb3VuZCIsInN0YXRlIiwicmFpc2VfZm91bmQkMCIsInBvc2l0aW9ucyIsInBhcnNlX3Bvc19vZl9zdGF0ZSIsInJ1bl9mZWVkX2xvb3AiLCJzdGFjayIsImxlbiIsInN0ciIsInN0cl9sZW4iLCJwb3NfbGVuIiwibWF4X3BvcyIsInByZXZpb3VzX29mZnNldCIsInN0YWNrJDAiLCJyZXN1bHQiLCJvZmZzZXQiLCJuZXh0X3BvcyIsImVyciIsInBhcnNlX3N0YXRlIiwicGFyc2VfZXJyb3IiLCJ1c2VkX3JlZiIsInBhcnNlX2Z1biIsImNvbnRfc3RhdGUiLCJwYXJzZSIsInBhcnNlX3BvcyIsImxlbiQwIiwicmFpc2VfZm91bmQkMSIsImxlbmd0aCIsInVuc2FmZV9mZWVkX2xvb3AiLCJzdGFjayQxIiwicG9zJDEiLCJwYXJzZV9zdHIiLCJyYWlzZV9mb3VuZCQyIiwibGVuZ3RoJDAiLCJ1bnNhZmVfZmVlZF9sb29wJDAiLCJwYXJzZV9zdHJfYW5ub3QiLCJyYWlzZV9mb3VuZCQzIiwibGVuZ3RoJDEiLCJ1bnNhZmVfZmVlZF9sb29wJDEiLCJwYXJzZV9iaWdzdHJpbmciLCJyYWlzZV9mb3VuZCQ0IiwibGVuZ3RoJDIiLCJ1bnNhZmVfZmVlZF9sb29wJDIiLCJwYXJzZV9iaWdzdHJpbmdfYW5ub3QiLCJta190aGlzX3BhcnNlIiwibXlfcGFyc2UiLCJwYXJzZV9wb3MkMCIsInBhcnNlX3BvcyQxIiwiZmVlZF9lbmRfb2ZfaW5wdXQiLCJ0aGlzX3BhcnNlIiwid3NfYnVmIiwiZ2VuX2lucHV0X3NleHAiLCJpYyIsInRoaXNfcGFyc2UkMSIsInNleHAkMCIsInRoaXNfcGFyc2UkMCIsImlucHV0X3NleHAiLCJnZW5faW5wdXRfcmV2X3NleHBzIiwicmV2X3NleHBzX3JlZiIsImJ1Zl9sZW4iLCJsZW4kMiIsInRoaXNfcGFyc2UkMiIsIm5fcGFyc2VkIiwibmV3X2xlbiIsImxlbiQxIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJvZl9zdHJpbmdfYmlnc3RyaW5nIiwibG9jIiwiZ2V0X2xlbiIsImdldF9zdWIiLCJjb250X3N0YXRlX3N0ciIsIm9mX3N0cmluZyIsIm9mX3N0cmluZ19tYW55IiwiZ2V0X2JzdHJfc3ViX3N0ciIsImJzdHIiLCJpIiwiYnN0cl93c19idWYiLCJvZl9iaWdzdHJpbmciLCJnZW5fbG9hZF9yZXZfc2V4cHMiLCJleGMkMCIsImV4YyIsImxvYWRfcmV2X3NleHBzIiwibG9hZF9zZXhwcyIsImdlbl9sb2FkX3NleHAiLCJzdHJpY3QiLCJ0aGlzX3BhcnNlJDQiLCJzZXhwJDEiLCJ0aGlzX3BhcnNlJDMiLCJjb250X3N0YXRlJDAiLCJsb2FkX3NleHAiLCJnZXRfc2V4cCQwIiwiZ2V0X3JhbmdlJDAiLCJzZXhwX29mX2NvbnYkMCIsImZpbmRfc2V4cCQwIiwiaW5wdXRfcmV2X3NleHBzJDAiLCJpbnB1dF9zZXhwJDAiLCJpbnB1dF9zZXhwcyQwIiwib2Zfc3RyaW5nJDAiLCJvZl9iaWdzdHJpbmckMCIsImxvYWRfcmV2X3NleHBzJDAiLCJsb2FkX3NleHBzJDAiLCJsb2FkX3NleHAkMCIsImNvbnYiLCJiYWRfc2V4cCIsImJhZF9hbm5vdF9zZXhwIiwiZ2V0X2NvbnZfZXhuIiwibGluZSIsImxvYWRfc2V4cF9jb252IiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyQwIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIiwiYmlnc3RyaW5nX29mX3NleHAiLCJmbG9hdF92ZWNfb2Zfc2V4cCIsImVtcHR5X2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdF92ZWMiLCJjcmVhdGVfZmxvYXQzMl92ZWMiLCJjcmVhdGVfZmxvYXQ2NF92ZWMiLCJlbXB0eV9mbG9hdDMyX3ZlYyIsImVtcHR5X2Zsb2F0NjRfdmVjIiwiZmxvYXQzMl92ZWNfb2Zfc2V4cCIsImZsb2F0NjRfdmVjX29mX3NleHAiLCJ2ZWNfb2Zfc2V4cCIsImNoZWNrX3Rvb19tdWNoX2RhdGEiLCJkYXRhIiwiZmxvYXRfbWF0X29mX3NleHAiLCJjcmVhdGVfZmxvYXRfbWF0Iiwic24iLCJzbSIsImRhdGEkMCIsImRhdGEkMSIsImNvbCQwIiwiY3JlYXRlX2Zsb2F0MzJfbWF0IiwiY3JlYXRlX2Zsb2F0NjRfbWF0IiwiZmxvYXQzMl9tYXRfb2Zfc2V4cCIsImZsb2F0NjRfbWF0X29mX3NleHAiLCJtYXRfb2Zfc2V4cCIsInN0cmluZ19vZl9vZl9zZXhwX29mIiwidG9fc2V4cCIsIm9mX3N0cmluZ19vZl9vZl9zZXhwIiwib2Zfc2V4cCIsInRfb2Zfc2V4cCIsInRfb2Zfc2V4cCQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X29mX3NleHAiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYm9vbCIsImJvb2xfb2Zfc2V4cCIsImJvb2xfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2NoYXIiLCJjaGFyX29mX3NleHAiLCJjaGFyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50IiwiaW50X29mX3NleHAiLCJpbnRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfb2Zfc2V4cCIsImludDMyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9vZl9zZXhwIiwiaW50NjRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3JlZiIsInJlZl9vZl9zZXhwIiwicmVmX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fb2Zfc2V4cCIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2xpc3QiLCJsaXN0X29mX3NleHAiLCJsaXN0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwiYXJyYXlfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJleG5fc2V4cF9ncmFtbWFyIiwiY29lcmNlIiwiZG9jX2NvbW1lbnRfdGFnIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwidGFnIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwic2V4cDEiLCJyZWdpc3RlcjIiLCJzZXhwX29mX2FyZzIiLCJzZXhwMiIsInJlZ2lzdGVyMyIsInNleHBfb2ZfYXJnMyIsInNleHAzIiwicmVnaXN0ZXI0Iiwic2V4cF9vZl9hcmc0Iiwic2V4cDQiLCJyZWdpc3RlcjUiLCJzZXhwX29mX2FyZzUiLCJzZXhwNSIsInJlZ2lzdGVyNiIsInNleHBfb2ZfYXJnNiIsInNleHA2IiwicmVnaXN0ZXI3Iiwic2V4cF9vZl9hcmc3Iiwic2V4cDciLCJyZWdpc3RlcjgiLCJzZXhwX29mX2FyZzgiLCJzZXhwOCIsInJlZ2lzdGVyOSIsInNleHBfb2ZfYXJnOSIsInNleHA5IiwicmVnaXN0ZXIxMCIsInNleHBfb2ZfYXJnMTAiLCJzZXhwMTAiLCJpbnQ2NCQwIiwiZ29sZGVuX2dhbW1hIiwicG9wY291bnQiLCJvZl9pbnQiLCJzZWVkIiwiY29weSIsIm9kZF9nYW1tYSIsIm1peF9iaXRzIiwieiIsIm4iLCJtaXg2NCIsInokMCIsInokMSIsIm5leHRfc2VlZCIsInQiLCJuZXh0Iiwib2Zfc2VlZF9hbmRfZ2FtbWEiLCJnYW1tYSIsInNlZWQkMCIsInJhbmRvbV9pbnQ2NCIsInJhbmRvbV9zdGF0ZSIsImNyZWF0ZSIsInNwbGl0IiwibmV4dF9pbnQ2NCIsInBlcnR1cmIiLCJzYWx0IiwiYm9vbCIsInN0YXRlIiwieCIsImludDY0IiwibG8iLCJoaSIsInJlbWFpbmRlcl9tYXhpbXVtIiwiZHJhdyQwIiwicmVtYWluZGVyIiwiZHJhd19tYXhpbXVtIiwiZHJhdyIsImludCQwIiwibG8kMCIsImhpJDAiLCJpbnQzMiIsIm5hdGl2ZWludCIsImludDYzIiwiZG91YmxlX3VscCIsInVuaXRfZmxvYXRfZnJvbV9pbnQ2NCIsInVuaXRfZmxvYXQiLCJmbG9hdCQwIiwicmFuZ2UiLCJtaWQiLCJmIiwiYml0c190b19yZXByZXNlbnQiLCJ0JDAiLCJsb2dfdW5pZm9ybSIsIm1pbl9iaXRzIiwibWF4X2JpdHMiLCJiaXRzIiwidF9zZXhwX2dyYW1tYXIiLCJvZl9mbG9hdCIsInRvX2Zsb2F0Iiwib2ZfaW50X2V4biIsInRvX2ludF9leG4iLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcXVhbCIsImNvbXBhcmUiLCJtaW4iLCJtYXgiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiYmV0d2VlbiIsImNsYW1wX2V4biIsImNsYW1wIiwiY29tcGFyYXRvciIsInBwIiwiaGFzaGFibGUiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImludmFyaWFudCIsInRvX3N0cmluZ19odW0iLCJvbmUiLCJtaW51c19vbmUiLCJyZW0iLCJyb3VuZCIsInJvdW5kX3Rvd2FyZHNfemVybyIsInJvdW5kX2Rvd24iLCJyb3VuZF91cCIsInJvdW5kX25lYXJlc3QiLCJzdWNjIiwicHJlZCIsInBvdyIsImJpdF9hbmQiLCJiaXRfb3IiLCJiaXRfeG9yIiwiYml0X25vdCIsInBvcGNvdW50JDAiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJkZWNyIiwiaW5jciIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0X2V4biIsInRvX2ludDY0Iiwib2ZfbmF0aXZlaW50X2V4biIsInRvX25hdGl2ZWludF9leG4iLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJjZWlsX3BvdzIiLCJmbG9vcl9wb3cyIiwiY2VpbF9sb2cyIiwiZmxvb3JfbG9nMiIsImlzX3BvdzIiLCJjbHoiLCJjdHoiLCJzeW1ib2wiLCJsbm90IiwiYWJzIiwiemVybyIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInRfc2V4cF9ncmFtbWFyJDAiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsImVxdWFsJDAiLCJjb21wYXJlJDAiLCJtaW4kMCIsIm1heCQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjb21wYXJhdG9yJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwiemVybyQwIiwib25lJDAiLCJtaW51c19vbmUkMCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwibmVnIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwicmVtJDAiLCJzeW1ib2wkMTciLCJsYW5kIiwibG9yIiwibHhvciIsImxub3QkMCIsImxzbCIsImFzciIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJhYnMkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQxIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsIm51bV9iaXRzJDAiLCJtYXhfdmFsdWUkMCIsIm1pbl92YWx1ZSQwIiwibHNyIiwic2hpZnRfcmlnaHRfbG9naWNhbCQwIiwiY2VpbF9wb3cyJDAiLCJmbG9vcl9wb3cyJDAiLCJjZWlsX2xvZzIkMCIsImZsb29yX2xvZzIkMCIsImlzX3BvdzIkMCIsImNseiQwIiwiY3R6JDAiLCJ0X3NleHBfZ3JhbW1hciQyIiwib2ZfZmxvYXQkMiIsInRvX2Zsb2F0JDIiLCJvZl9pbnRfZXhuJDIiLCJ0b19pbnRfZXhuJDIiLCJoYXNoX2ZvbGRfdCQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDIiLCJlcXVhbCQyIiwiY29tcGFyZSQyIiwibWluJDIiLCJtYXgkMiIsImFzY2VuZGluZyQyIiwiZGVzY2VuZGluZyQyIiwiYmV0d2VlbiQyIiwiY2xhbXBfZXhuJDIiLCJjbGFtcCQyIiwiY29tcGFyYXRvciQyIiwicHAkMiIsImhhc2hhYmxlJDIiLCJpc19wb3NpdGl2ZSQyIiwiaXNfbm9uX25lZ2F0aXZlJDIiLCJpc19uZWdhdGl2ZSQyIiwiaXNfbm9uX3Bvc2l0aXZlJDIiLCJzaWduJDIiLCJpbnZhcmlhbnQkMiIsInRvX3N0cmluZ19odW0kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJyZW0kMiIsInJvdW5kJDIiLCJyb3VuZF90b3dhcmRzX3plcm8kMiIsInJvdW5kX2Rvd24kMiIsInJvdW5kX3VwJDIiLCJyb3VuZF9uZWFyZXN0JDIiLCJzdWNjJDIiLCJwcmVkJDIiLCJwb3ckMiIsImJpdF9hbmQkMiIsImJpdF9vciQyIiwiYml0X3hvciQyIiwiYml0X25vdCQyIiwicG9wY291bnQkMyIsInNoaWZ0X2xlZnQkMiIsInNoaWZ0X3JpZ2h0JDIiLCJkZWNyJDIiLCJpbmNyJDIiLCJvZl9pbnQzMl9leG4kMiIsInRvX2ludDMyX2V4biQyIiwib2ZfaW50NjRfZXhuJDIiLCJ0b19pbnQ2NCQyIiwib2ZfbmF0aXZlaW50X2V4biQyIiwidG9fbmF0aXZlaW50X2V4biQyIiwib2ZfZmxvYXRfdW5jaGVja2VkJDIiLCJudW1fYml0cyQyIiwibWF4X3ZhbHVlJDIiLCJtaW5fdmFsdWUkMiIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMiIsImNlaWxfcG93MiQyIiwiZmxvb3JfcG93MiQyIiwiY2VpbF9sb2cyJDIiLCJmbG9vcl9sb2cyJDIiLCJpc19wb3cyJDIiLCJjbHokMiIsImN0eiQyIiwic3ltYm9sJDMzIiwibG5vdCQyIiwiYWJzJDIiLCJ6ZXJvJDIiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJ0X3NleHBfZ3JhbW1hciQzIiwib2ZfZmxvYXQkMyIsInRvX2Zsb2F0JDMiLCJvZl9pbnRfZXhuJDMiLCJ0b19pbnRfZXhuJDMiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsIm9mX3N0cmluZyQzIiwidG9fc3RyaW5nJDMiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJlcXVhbCQzIiwiY29tcGFyZSQzIiwibWluJDMiLCJtYXgkMyIsImFzY2VuZGluZyQzIiwiZGVzY2VuZGluZyQzIiwiYmV0d2VlbiQzIiwiY2xhbXBfZXhuJDMiLCJjbGFtcCQzIiwiY29tcGFyYXRvciQzIiwicHAkMyIsImhhc2hhYmxlJDMiLCJpc19wb3NpdGl2ZSQzIiwiaXNfbm9uX25lZ2F0aXZlJDMiLCJpc19uZWdhdGl2ZSQzIiwiaXNfbm9uX3Bvc2l0aXZlJDMiLCJzaWduJDMiLCJpbnZhcmlhbnQkMyIsInRvX3N0cmluZ19odW0kMyIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJuZWckMSIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsInN5bWJvbCQ0OSIsInN5bWJvbCQ1MCIsInJlbSQzIiwic3ltYm9sJDUxIiwibGFuZCQxIiwibG9yJDEiLCJseG9yJDEiLCJsbm90JDMiLCJsc2wkMSIsImFzciQxIiwicm91bmQkMyIsInJvdW5kX3Rvd2FyZHNfemVybyQzIiwicm91bmRfZG93biQzIiwicm91bmRfdXAkMyIsInJvdW5kX25lYXJlc3QkMyIsImFicyQzIiwic3VjYyQzIiwicHJlZCQzIiwicG93JDMiLCJiaXRfYW5kJDMiLCJiaXRfb3IkMyIsImJpdF94b3IkMyIsImJpdF9ub3QkMyIsInBvcGNvdW50JDQiLCJzaGlmdF9sZWZ0JDMiLCJzaGlmdF9yaWdodCQzIiwiZGVjciQzIiwiaW5jciQzIiwib2ZfaW50MzJfZXhuJDMiLCJ0b19pbnQzMl9leG4kMyIsIm9mX2ludDY0X2V4biQzIiwidG9faW50NjQkMyIsIm9mX25hdGl2ZWludF9leG4kMyIsInRvX25hdGl2ZWludF9leG4kMyIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQzIiwibnVtX2JpdHMkMyIsIm1heF92YWx1ZSQzIiwibWluX3ZhbHVlJDMiLCJsc3IkMSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMyIsImNlaWxfcG93MiQzIiwiZmxvb3JfcG93MiQzIiwiY2VpbF9sb2cyJDMiLCJmbG9vcl9sb2cyJDMiLCJpc19wb3cyJDMiLCJjbHokMyIsImN0eiQzIiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5IiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsInN1bSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwidyIsIm4iLCJyZWNfbGlzdCIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm9wdCIsInN0aCIsIm1pbl9sZW5ndGgiLCJzdGgkMCIsIm1heF9sZW5ndGgiLCJ1cHBlcl9ib3VuZCIsIm1heF9sZW5ndGgkMCIsImxlbiIsInJlbWFpbmluZyIsIm1heF9pbmRleCIsInVuaXQiLCJib29sIiwib3B0aW9uIiwidmFsdWVfdCIsImVpdGhlciIsImZzdF90Iiwic25kX3QiLCJyZXN1bHQiLCJva190IiwiZXJyX3QiLCJvayIsImVyciIsImxpc3RfZ2VuZXJpYyIsImVsdF9nZW4iLCJsaXN0X25vbl9lbXB0eSIsImxpc3Rfd2l0aF9sZW5ndGgiLCJsZW5ndGgiLCJsaXN0X2ZpbHRlcmVkIiwiZWx0cyIsImVsdHMkMCIsImxlbmd0aF9vZl9pbnB1dCIsImxlbmd0aF9vZl9vdXRwdXQiLCJpbmRpY2VzIiwibGlzdF9wZXJtdXRhdGlvbnMiLCJyZWYiLCJjaGFyX3VuaWZvcm1faW5jbHVzaXZlIiwiY2hhcl91cHBlcmNhc2UiLCJjaGFyX2xvd2VyY2FzZSIsImNoYXJfZGlnaXQiLCJjaGFyX3ByaW50X3VuaWZvcm0iLCJjaGFyX3VuaWZvcm0iLCJjaGFyX2FscGhhIiwiY2hhcl9hbHBoYW51bSIsImNoYXJfd2hpdGVzcGFjZSIsImNoYXJfcHJpbnQiLCJjaGFyJDAiLCJzbWFsbF9pbnQiLCJhbGxvd196ZXJvIiwibG93ZXJfYm91bmQiLCJ3ZWlnaHRlZF9sb3ciLCJ3ZWlnaHRlZF9oaWdoIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsInVuaWZvcm0iLCJsb2dfdW5pZm9ybSIsImludCQwIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwidW5pZm9ybSQwIiwibG9nX3VuaWZvcm0kMCIsImludDMyIiwiaW50MzJfdW5pZm9ybSIsImludDMyX2luY2x1c2l2ZSIsImludDMyX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50MzJfbG9nX2luY2x1c2l2ZSIsImludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsInVuaWZvcm0kMSIsImxvZ191bmlmb3JtJDEiLCJpbnQ2MyIsImludDYzX3VuaWZvcm0iLCJpbnQ2M19pbmNsdXNpdmUiLCJpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSIsImludDYzX2xvZ19pbmNsdXNpdmUiLCJpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJzeW1ib2wkMzYiLCJsbm90JDIiLCJhYnMkMiIsInplcm8kMiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInVuaWZvcm0kMiIsImxvZ191bmlmb3JtJDIiLCJpbnQ2NCIsImludDY0X3VuaWZvcm0iLCJpbnQ2NF9pbmNsdXNpdmUiLCJpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2xvZ19pbmNsdXNpdmUiLCJpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJ1bmlmb3JtJDMiLCJsb2dfdW5pZm9ybSQzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X3VuaWZvcm0iLCJuYXRpdmVpbnRfaW5jbHVzaXZlIiwibmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlIiwibmF0aXZlaW50X2xvZ19pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXYiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X251bV9tYW50aXNzYV9iaXRzIiwibnVtX2JpdHMiLCJiaXRzIiwiZmxvYXRfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfZXhwb25lbnQiLCJmbG9hdF96ZXJvIiwibGV0X3N5bnRheF8wMTIiLCJsZXRfc3ludGF4XzAxMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJmbG9hdF9zdWJub3JtYWwiLCJmbG9hdF9ub3JtYWwiLCJmbG9hdF9pbmZpbml0ZSIsImxldF9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjIiLCJmbG9hdF9uYW4iLCJmbG9hdF9vZl9jbGFzcyIsImMiLCJmbG9hdF9tYXRjaGluZ19jbGFzc2VzIiwiZmxvYXRfZmluaXRlIiwiZmxvYXRfd2l0aG91dF9uYW4iLCJmbG9hdCQwIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJtYXhfdG90YWxfc2l6ZSIsImEiLCJiIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImJpZ2FycmF5Ml9kaW0iLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsInYiLCJkaW0yJDAiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImsiLCJkcm9wX2tleXMiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsIm1vZF9uYW1lIiwibW9kX25hbWUkMCIsIm1vZF9uYW1lJDEiLCJtb2RfbmFtZSQyIiwibW9kX25hbWUkMyIsIm1vZF9uYW1lJDQiLCJtb2RfbmFtZSQ1IiwibW9kX25hbWUkNiIsIm1vZF9uYW1lJDciLCJtb2RfbmFtZSQ4IiwibW9kX25hbWUkOSIsIm1heF92YWx1ZSQxMiIsIm1vZF9uYW1lJDEwIiwicmFpc2VfY2Fubm90X3JlcHIiLCJ0b19zdHJpbmciLCJ4IiwidHJ1bmNfdW5zaWduZWQiLCJjb252IiwibG9nYW5kIiwibWFzayIsImV4bl91bnNpZ25lZCIsImVxdWFsIiwieSIsInRydW5jX3NpZ25lZCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsInNoaWZ0IiwiZXhuX3NpZ25lZCIsImlkZW50aXR5X2lmX3Bvc2l0aXZlIiwiZ3JlYXRlcl9lcXVhbCIsInplcm8iLCJvZl9zZXhwX2Vycm9yIiwid2hhdCIsInNleHAiLCJ0b19pbnQzMiIsInRvX2ludDY0IiwiY29tcGFyZSIsImhhc2hfZm9sZF90IiwiZnVuYyIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJ0eXBlcmVwX29mX3QiLCJ0eXBlbmFtZV9vZl90IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwic2lnbmVkIiwibnVtX2JpdHMiLCJudW1fYnl0ZXMiLCJ0cnVuYyIsImV4biIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJsb2dhbmQ2NCIsIm1hc2s2NCIsImVxdWFsJDAiLCJlcXVhbDY0IiwidG9fc3RyaW5nJDAiLCJ0b19zdHJpbmc2NCIsInRydW5jJDAiLCJleG4kMCIsInRydW5jNjQiLCJleG42NCIsIm9mX2Jhc2VfaW50X3RydW5jJDAiLCJvZl9iYXNlX2ludF9leG4kMCIsInRvX2Jhc2VfaW50JDAiLCJvZl91aW50MTZfdHJ1bmMiLCJvZl91aW50MTZfZXhuIiwib2ZfdWludDMyX3RydW5jIiwib2ZfdWludDMyX2V4biIsIm9mX3VpbnQ2M190cnVuYyIsIm9mX3VpbnQ2M19leG4iLCJvZl91aW50NjRfdHJ1bmMiLCJvZl91aW50NjRfZXhuIiwib2ZfaW50OF93cmFwIiwib2ZfaW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiY29tcGFyZSQzIiwiaGFzaF9mb2xkX3QkMSIsImZ1bmMkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF9vZl90JDEiLCJ0eXBlcmVwX29mX3QkMSIsInR5cGVuYW1lX29mX3QkMSIsInplcm8kMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJtaW5fdmFsdWUkMSIsIm1heF92YWx1ZSQxIiwic2lnbmVkJDEiLCJudW1fYml0cyQxIiwibnVtX2J5dGVzJDEiLCJ0cnVuYyQxIiwiZXhuJDEiLCJvZl9iYXNlX2ludF90cnVuYyQxIiwib2ZfYmFzZV9pbnRfZXhuJDEiLCJ0b19iYXNlX2ludCQxIiwib2ZfaW50OCIsIm9mX2ludDMyX3RydW5jJDAiLCJvZl9pbnQzMl9leG4kMCIsIm9mX2ludDYzX3RydW5jJDAiLCJvZl9pbnQ2M19leG4kMCIsIm9mX2ludDY0X3RydW5jJDAiLCJvZl9pbnQ2NF9leG4kMCIsIm9mX3VpbnQxNl93cmFwIiwib2ZfdWludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsImNvbXBhcmUkNSIsImhhc2hfZm9sZF90JDIiLCJmdW5jJDIiLCJoYXNoJDIiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJ0eXBlbmFtZV9vZl90JDIiLCJ6ZXJvJDIiLCJtaW5fdmFsdWUkMiIsImNvbnYkMCIsIm1heF92YWx1ZSQyIiwic2lnbmVkJDIiLCJudW1fYml0cyQyIiwibnVtX2J5dGVzJDIiLCJsb2dhbmQkMCIsImxvZ2FuZDY0JDAiLCJtYXNrNjQkMCIsImVxdWFsJDIiLCJlcXVhbDY0JDAiLCJ0b19zdHJpbmckMiIsInRvX3N0cmluZzY0JDAiLCJtYXNrJDAiLCJ0cnVuYyQyIiwiZXhuJDIiLCJ0cnVuYzY0JDAiLCJleG42NCQwIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50X2V4biQyIiwidG9fYmFzZV9pbnQkMiIsIm9mX3VpbnQ4Iiwib2ZfdWludDMyX3RydW5jJDAiLCJvZl91aW50MzJfZXhuJDAiLCJvZl91aW50NjNfdHJ1bmMkMCIsIm9mX3VpbnQ2M19leG4kMCIsIm9mX3VpbnQ2NF90cnVuYyQwIiwib2ZfdWludDY0X2V4biQwIiwib2ZfaW50MTZfd3JhcCIsIm9mX2ludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMiIsInN5bWJvbCQ1MyIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImNvbXBhcmUkNyIsImhhc2hfZm9sZF90JDMiLCJmdW5jJDMiLCJoYXNoJDMiLCJ0X29mX3NleHAkMyIsInNleHBfb2ZfdCQzIiwidHlwZXJlcF9vZl90JDMiLCJ0eXBlbmFtZV9vZl90JDMiLCJ6ZXJvJDMiLCJtaW5fdmFsdWUkMyIsIm1heF92YWx1ZSQzIiwic2hpZnRfbGVmdCQxIiwic2hpZnRfcmlnaHQkMSIsInNoaWZ0JDEiLCJ0b19zdHJpbmckMyIsInNpZ25lZCQzIiwibnVtX2JpdHMkMyIsIm51bV9ieXRlcyQzIiwidHJ1bmMkMyIsImV4biQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwic2lnbmVkJDQiLCJudW1fYml0cyQ0IiwibnVtX2J5dGVzJDQiLCJsb2dhbmQkMSIsImxvZ2FuZDY0JDEiLCJtYXNrJDEiLCJtYXNrNjQkMSIsImVxdWFsJDQiLCJlcXVhbDY0JDEiLCJ0b19zdHJpbmckNCIsInRvX3N0cmluZzY0JDEiLCJ0cnVuYyQ0IiwiZXhuJDQiLCJ0cnVuYzY0JDEiLCJleG42NCQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsInRvX2Jhc2VfaW50X2V4biIsIm9mX3VpbnQ4JDAiLCJvZl91aW50MTYiLCJvZl91aW50NjNfdHJ1bmMkMSIsIm9mX3VpbnQ2M19leG4kMSIsIm9mX3VpbnQ2NF90cnVuYyQxIiwib2ZfdWludDY0X2V4biQxIiwib2ZfaW50MzJfd3JhcCIsIm9mX2ludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkNCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNCIsInN5bWJvbCQ4NSIsInN5bWJvbCQ4NiIsInN5bWJvbCQ4NyIsInN5bWJvbCQ4OCIsInN5bWJvbCQ4OSIsInN5bWJvbCQ5MCIsInN5bWJvbCQ5MSIsInN5bWJvbCQ5MiIsInN5bWJvbCQ5MyIsInN5bWJvbCQ5NCIsImNvbXBhcmUkMTEiLCJoYXNoX2ZvbGRfdCQ1IiwiZnVuYyQ1IiwiaGFzaCQ1IiwidF9vZl9zZXhwJDUiLCJzZXhwX29mX3QkNSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDUiLCJxdWlja2NoZWNrX29ic2VydmVyJDUiLCJxdWlja2NoZWNrX3Nocmlua2VyJDUiLCJ0eXBlcmVwX29mX3QkNSIsInR5cGVuYW1lX29mX3QkNSIsInplcm8kNSIsIm1pbl92YWx1ZSQ1IiwibWF4X3ZhbHVlJDUiLCJ0b19zdHJpbmckNSIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50MzJfZXhuJDAiLCJ0b19iYXNlX2ludDMyX3RydW5jJDAiLCJ0b19iYXNlX2ludDMyX2V4biQwIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQwIiwib2ZfYmFzZV9pbnQ2NF9leG4kMCIsInRvX2Jhc2VfaW50NjQkMCIsInRvX2Jhc2VfaW50X2V4biQwIiwib2ZfdWludDgkMSIsIm9mX3VpbnQxNiQwIiwib2ZfdWludDYzX3RydW5jJDIiLCJvZl91aW50NjNfZXhuJDIiLCJvZl91aW50NjRfdHJ1bmMkMiIsIm9mX3VpbnQ2NF9leG4kMiIsIm9mX2ludDMyX3dyYXAkMCIsIm9mX2ludDMyX2V4biQyIiwic2V4cF9vZl90JDYiLCJ0X29mX3NleHAkNiIsInMiLCJzeW1ib2wkMTExIiwic3ltYm9sJDExMiIsInN5bWJvbCQxMTMiLCJzeW1ib2wkMTE0Iiwic3ltYm9sJDExNSIsInN5bWJvbCQxMTYiLCJzeW1ib2wkMTE3Iiwic3ltYm9sJDExOCIsInN5bWJvbCQxMTkiLCJzeW1ib2wkMTIwIiwiaW1wbCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDciLCJxdWlja2NoZWNrX29ic2VydmVyJDciLCJxdWlja2NoZWNrX3Nocmlua2VyJDciLCJ0X29mX3NleHAkNyIsInNleHBfb2ZfdCQ3IiwidHlwZXJlcF9vZl90JDciLCJ0eXBlbmFtZV9vZl90JDciLCJzaWduZWQkNyIsIm51bV9iaXRzJDciLCJudW1fYnl0ZXMkNyIsInplcm8kNyIsIm1pbl92YWx1ZSQ3IiwibWF4X3ZhbHVlJDciLCJoYXNoX2ZvbGRfdCQ3IiwiaGFzaCQ3Iiwic3ltYm9sJDEyNyIsInN5bWJvbCQxMjgiLCJzeW1ib2wkMTI5Iiwic3ltYm9sJDEzMCIsInN5bWJvbCQxMzEiLCJzeW1ib2wkMTMyIiwiZXF1YWwkNyIsImNvbXBhcmUkMTUiLCJtaW4kNyIsIm1heCQ3Iiwib2ZfYmFzZV9pbnQzMiQxIiwidG9fYmFzZV9pbnQzMiQxIiwib2ZfaW50OCQyIiwib2ZfaW50MTYkMSIsIm9mX2ludDYzX3RydW5jJDMiLCJvZl9pbnQ2M19leG4kMyIsIm9mX2ludDY0X3RydW5jJDMiLCJvZl9pbnQ2NF9leG4kMyIsIm9mX3VpbnQzMl93cmFwJDEiLCJvZl91aW50MzJfZXhuJDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ4IiwicXVpY2tjaGVja19vYnNlcnZlciQ4IiwicXVpY2tjaGVja19zaHJpbmtlciQ4IiwidF9vZl9zZXhwJDgiLCJzZXhwX29mX3QkOCIsInR5cGVyZXBfb2ZfdCQ4IiwidHlwZW5hbWVfb2ZfdCQ4Iiwic2lnbmVkJDgiLCJudW1fYml0cyQ4IiwibnVtX2J5dGVzJDgiLCJ6ZXJvJDgiLCJtaW5fdmFsdWUkOCIsIm1heF92YWx1ZSQ4IiwiaGFzaF9mb2xkX3QkOCIsImhhc2gkOCIsInN5bWJvbCQxMzMiLCJzeW1ib2wkMTM0Iiwic3ltYm9sJDEzNSIsInN5bWJvbCQxMzYiLCJzeW1ib2wkMTM3Iiwic3ltYm9sJDEzOCIsImVxdWFsJDgiLCJjb21wYXJlJDE2IiwibWluJDgiLCJtYXgkOCIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50MzJfZXhuJDEiLCJ0b19iYXNlX2ludDMyX3RydW5jJDEiLCJ0b19iYXNlX2ludDMyX2V4biQxIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQxIiwib2ZfYmFzZV9pbnQ2NF9leG4kMSIsInRvX2Jhc2VfaW50NjQkMSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwic2lnbmVkJDkiLCJudW1fYml0cyQ5IiwibnVtX2J5dGVzJDkiLCJvZl9pbnQ4JDMiLCJvZl9pbnQxNiQyIiwib2ZfaW50MzIiLCJvZl9pbnQ2NF90cnVuYyQ0Iiwib2ZfaW50NjRfZXhuJDQiLCJvZl91aW50NjNfd3JhcCIsIm9mX3VpbnQ2M19leG4kNCIsInN5bWJvbCQxNDUiLCJzeW1ib2wkMTQ2Iiwic3ltYm9sJDE0NyIsInN5bWJvbCQxNDgiLCJzeW1ib2wkMTQ5Iiwic3ltYm9sJDE1MCIsInN5bWJvbCQxNTEiLCJzeW1ib2wkMTUyIiwic3ltYm9sJDE1MyIsInN5bWJvbCQxNTQiLCJoYXNoX2ZvbGRfdCQxMCIsImZ1bmMkOCIsImhhc2gkMTAiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEwIiwiY29tcGFyZSQxOSIsInR5cGVyZXBfb2ZfdCQxMCIsInR5cGVuYW1lX29mX3QkMTAiLCJ6ZXJvJDEwIiwibWluX3ZhbHVlJDEwIiwibWF4X3ZhbHVlJDEwIiwiZ3JlYXRlcl9lcXVhbCQyIiwidG9fc3RyaW5nJDgiLCJzaWduZWQkMTAiLCJudW1fYml0cyQxMCIsIm51bV9ieXRlcyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50NjRfZXhuJDIiLCJ0b19iYXNlX2ludDY0JDIiLCJvZl91aW50OCQzIiwib2ZfdWludDE2JDIiLCJvZl91aW50MzIiLCJvZl91aW50NjRfdHJ1bmMkNCIsIm9mX3VpbnQ2NF9leG4kNCIsIm9mX2ludDYzX3dyYXAiLCJvZl9pbnQ2M19leG4kNCIsInNleHBfb2ZfdCQxMCIsInRfb2Zfc2V4cCQxMCIsInN5bWJvbCQxNTUiLCJzeW1ib2wkMTU2Iiwic3ltYm9sJDE1NyIsInN5bWJvbCQxNTgiLCJzeW1ib2wkMTU5Iiwic3ltYm9sJDE2MCIsInN5bWJvbCQxNjEiLCJzeW1ib2wkMTYyIiwic3ltYm9sJDE2MyIsInN5bWJvbCQxNjQiLCJjb21wYXJlJDIxIiwiaGFzaF9mb2xkX3QkMTEiLCJmdW5jJDkiLCJoYXNoJDExIiwidF9vZl9zZXhwJDExIiwic2V4cF9vZl90JDExIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTEiLCJxdWlja2NoZWNrX29ic2VydmVyJDExIiwicXVpY2tjaGVja19zaHJpbmtlciQxMSIsInR5cGVyZXBfb2ZfdCQxMSIsInR5cGVuYW1lX29mX3QkMTEiLCJ6ZXJvJDExIiwibWluX3ZhbHVlJDExIiwibWF4X3ZhbHVlJDExIiwiZ3JlYXRlcl9lcXVhbCQzIiwidG9fc3RyaW5nJDkiLCJvZl9pbnQ4JDQiLCJvZl9pbnQxNiQzIiwic2lnbmVkJDExIiwibnVtX2JpdHMkMTEiLCJudW1fYnl0ZXMkMTEiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsInNpZ25lZCQxMiIsIm51bV9iaXRzJDEyIiwibnVtX2J5dGVzJDEyIiwiZXhuJDUiLCJvZl9iYXNlX2ludDY0X3RydW5jJDMiLCJvZl9iYXNlX2ludDY0X2V4biQzIiwidG9fYmFzZV9pbnQ2NF90cnVuYyIsInRvX2Jhc2VfaW50NjRfZXhuIiwib2ZfdWludDgkNCIsIm9mX3VpbnQxNiQzIiwib2ZfdWludDMyJDAiLCJvZl91aW50NjMiLCJvZl9pbnQ2NF93cmFwIiwib2ZfaW50NjRfZXhuJDUiLCJzZXhwX29mX3QkMTIiLCJ0X29mX3NleHAkMTIiLCJzeW1ib2wkMTg3Iiwic3ltYm9sJDE4OCIsInN5bWJvbCQxODkiLCJzeW1ib2wkMTkwIiwic3ltYm9sJDE5MSIsInN5bWJvbCQxOTIiLCJzeW1ib2wkMTkzIiwic3ltYm9sJDE5NCIsInN5bWJvbCQxOTUiLCJzeW1ib2wkMTk2IiwiZ2V0X2ludDgiLCJ0IiwicG9zIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwieCQwIiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfdWludDMyX2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsImdldF91aW50NjRfbGUiLCJnZXRfdWludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X2ludDgiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsIngkMSIsInNldF9pbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ2NF9sZSIsInNldF91aW50NjRfYmUiLCJnZXRfaW50OCQwIiwiZ2V0X3VpbnQ4JDAiLCJnZXRfaW50MTZfbGUkMCIsImdldF9pbnQxNl9iZSQwIiwiZ2V0X3VpbnQxNl9sZSQwIiwiZ2V0X3VpbnQxNl9iZSQwIiwiZ2V0X2ludDMyX2xlJDAiLCJnZXRfaW50MzJfYmUkMCIsImdldF91aW50MzJfbGUkMCIsImdldF91aW50MzJfYmUkMCIsImdldF9pbnQ2NF9sZSQwIiwiZ2V0X2ludDY0X2JlJDAiLCJnZXRfdWludDY0X2xlJDAiLCJnZXRfdWludDY0X2JlJDAiLCJzZXRfaW50OCQwIiwic2V0X3VpbnQ4JDAiLCJzZXRfaW50MTZfbGUkMCIsInNldF9pbnQxNl9iZSQwIiwic2V0X3VpbnQxNl9sZSQwIiwic2V0X3VpbnQxNl9iZSQwIiwic2V0X2ludDMyX2xlJDAiLCJzZXRfaW50MzJfYmUkMCIsInNldF91aW50MzJfbGUkMCIsInNldF91aW50MzJfYmUkMCIsInNldF9pbnQ2NF9sZSQwIiwic2V0X2ludDY0X2JlJDAiLCJzZXRfdWludDY0X2xlJDAiLCJzZXRfdWludDY0X2JlJDAiLCJnZXRfaW50OCQxIiwiZ2V0X3VpbnQ4JDEiLCJnZXRfaW50MTZfbGUkMSIsImdldF9pbnQxNl9iZSQxIiwiZ2V0X3VpbnQxNl9sZSQxIiwiZ2V0X3VpbnQxNl9iZSQxIiwiZ2V0X2ludDMyX2xlJDEiLCJnZXRfaW50MzJfYmUkMSIsImdldF91aW50MzJfbGUkMSIsImdldF91aW50MzJfYmUkMSIsImdldF9pbnQ2NF9sZSQxIiwiZ2V0X2ludDY0X2JlJDEiLCJnZXRfdWludDY0X2xlJDEiLCJnZXRfdWludDY0X2JlJDEiLCJnZXRfaW50OCQyIiwiZ2V0X3VpbnQ4JDIiLCJnZXRfaW50MTZfbGUkMiIsImdldF9pbnQxNl9iZSQyIiwiZ2V0X3VpbnQxNl9sZSQyIiwiZ2V0X3VpbnQxNl9iZSQyIiwiZ2V0X2ludDMyX2xlJDIiLCJnZXRfaW50MzJfYmUkMiIsImdldF91aW50MzJfbGUkMiIsImdldF91aW50MzJfYmUkMiIsImdldF9pbnQ2NF9sZSQyIiwiZ2V0X2ludDY0X2JlJDIiLCJnZXRfdWludDY0X2xlJDIiLCJnZXRfdWludDY0X2JlJDIiLCJsb2MkMCIsImxvYyIsInNwcmludGYiLCJhcmNoX3NpeHR5Zm91ciIsImFyY2hfYmlnX2VuZGlhbiIsIm5vdF9vbl8zMmJpdCIsImNyZWF0ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyIsInNpemUiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMkMCIsImxlbmd0aCIsImluaXQiLCJuIiwiZiIsInQiLCJpIiwiY2hlY2tfYXJncyIsInBvcyIsImxlbiIsImJzdHIiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwib3B0IiwiY2hyIiwic3RoIiwibGVuJDAiLCJyZXMiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsImdldF9pbnQ2NF90X2JlIiwicmVhZF9pbnQ2NF9zd2FwJDAiLCJzZXRfaW50NjRfdF9iZSIsInNldF9pbnQ2NF90X2xlIiwiaW50NjRfY29udl9lcnJvciIsInVpbnQ2NF9jb252X2Vycm9yIiwiaW50NjRfdG9faW50X2V4biIsInVpbnQ2NF90b19pbnRfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9iZV9leG4iLCJ1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biIsImdldF9pbnQ2NF9iZV9leG4iLCJnZXRfaW50NjRfbGVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfbGVfZXhuIiwiZ2V0X3VpbnQ2NF9iZV9leG4iLCJnZXRfdWludDY0X2xlX2V4biIsInNldF91aW50NjRfYmVfZXhuIiwic2V0X3VpbnQ2NF9sZV9leG4iLCJ1bnNhZmVfc2V0X3VpbnQ4IiwidW5zYWZlX3NldF9pbnQ4IiwibiQwIiwidW5zYWZlX2dldF91aW50OCIsInVuc2FmZV9nZXRfaW50OCIsInNldF91aW50OF9leG4iLCJzZXRfaW50OF9leG4iLCJnZXRfdWludDgiLCJnZXRfaW50OCIsInVpbnQzMl9vZl9pbnQzMl90IiwidW5zYWZlX3NldF91aW50MzJfbGUiLCJ1bnNhZmVfc2V0X3VpbnQzMl9iZSIsInVuc2FmZV9nZXRfdWludDMyX2xlIiwidW5zYWZlX2dldF91aW50MzJfYmUiLCJzZXRfdWludDMyX2xlX2V4biIsInNldF91aW50MzJfYmVfZXhuIiwiZ2V0X3VpbnQzMl9sZSIsImdldF91aW50MzJfYmUiLCJnZXRfdWludDgkMCIsInNldF91aW50OCIsImdldF91aW50MTZfbmUiLCJzZXRfdWludDE2X25lIiwiZ2V0X2ludDMyX25lIiwic2V0X2ludDMyX25lIiwiZ2V0X2ludDY0X25lIiwic2V0X2ludDY0X25lIiwiZ2V0X3VpbnQ4JDIiLCJzZXRfdWludDgkMSIsImdldF91aW50MTZfbmUkMCIsInNldF91aW50MTZfbmUkMCIsImdldF9pbnQzMl9uZSQwIiwic2V0X2ludDMyX25lJDAiLCJnZXRfaW50NjRfbmUkMCIsInNldF9pbnQ2NF9uZSQwIiwiZWx0MSIsImVsdDIiLCJlcXVhbCIsIm9mX2Jvb2wiLCJsZW5ndGgiLCJjcmVhdGVfYm9vbCIsImdldCIsInNldCIsIm92ZXJsYXBwaW5nX3NyY19kc3QiLCJsZW5ndGgkMCIsImdldCQwIiwic2V0JDAiLCJjcmVhdGVfYm9vbCQwIiwicGFzcyIsImZhaWxzIiwibWVzc2FnZSIsImEiLCJzZXhwX29mX2EiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJmYWlsX3MiLCJzZXhwIiwiY29tYmluZSIsInQxIiwidDIiLCJvZl9saXN0IiwibmFtZSIsInQiLCJlcnJvciIsInBhdGgiLCJuYW1lX2xpc3QiLCJuIiwibCIsImZhaWxfZm4iLCJwYXNzX2Jvb2wiLCJwYXNzX3VuaXQiLCJwcm90ZWN0IiwiZiIsInYiLCJleG4kMCIsImV4biIsInRyeV93aXRoIiwicGF0aF9zdHJpbmciLCJlcnJvcnMiLCJyZXN1bHQiLCJ4XzAwNSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwMyIsInJlczFfMDA0IiwibWF5YmVfcmFpc2UiLCJ2YWxpZF9vcl9lcnJvciIsImNoZWNrIiwieCIsImZpZWxkX2RpcmVjdCIsImZsZCIsInJlY29yZCIsImZpZWxkIiwiZmllbGRfZm9sZGVyIiwiYWNjIiwiZmllbGRfZGlyZWN0X2ZvbGRlciIsImFsbCIsImNoZWNrcyIsImNoZWNrcyQwIiwiZXJycyIsImNoZWNrcyQxIiwiZXJyIiwiZXJycyQwIiwib2ZfcmVzdWx0Iiwib2ZfZXJyb3IiLCJib29sdGVzdCIsImlmX2ZhbHNlIiwicGFpciIsImZzdCIsInNuZCIsInNuZF92YWx1ZSIsImZzdF92YWx1ZSIsImxpc3RfaW5kZXhlZCIsImxpc3QiLCJpIiwiZWwiLCJleHRyYWN0X25hbWUiLCJhbGlzdCIsImxpc3QkMCIsImtleSIsImZpcnN0X2ZhaWx1cmUiLCJvZl9lcnJvcl9vcHQiLCJib3VuZGVkIiwibG93ZXIiLCJ1cHBlciIsImNvbXBhcmUiLCJpbmNsIiwiZXhjbCIsImluY2wkMCIsImV4Y2wkMCIsInN5bWJvbCIsIm5hbWUiLCJzZXhwX29mX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9tYXQiLCJtYXRfb2Zfc2V4cCIsInNleHBfb2ZfdmVjIiwidmVjX29mX3NleHAiLCJzZXhwX29mX29wYXF1ZSIsIm9wYXF1ZV9vZl9zZXhwIiwic2V4cF9vZl9wYWlyIiwicGFpcl9vZl9zZXhwIiwib2Zfc2V4cF9lcnJvciIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZ3JvdXAiLCJiaW5fc2hhcGVfc2V4cF9vcGFxdWUiLCJhIiwiYmluX3NpemVfc2V4cF9vcGFxdWUiLCJzaXplX29mX2EiLCJiaW5fd3JpdGVfc2V4cF9vcGFxdWUiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl9zZXhwX29wYXF1ZSIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSIsIm9mX2EiLCJidWYiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3NleHBfb3BhcXVlJDAiLCJiaW5fcmVhZGVyX3NleHBfb3BhcXVlIiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl9zZXhwX29wYXF1ZSIsImJpbl9hIiwiY29tcGFyZV9zZXhwX29wYXF1ZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImhhc2hfZm9sZF9zZXhwX29wYXF1ZSIsImhhc2hfZm9sZF9hIiwiaHN2IiwiYXJnIiwidHlwZW5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlcmVwX29mX3NleHBfb3BhcXVlIiwibmFtZV9vZl9zZXhwX29wYXF1ZSIsInR5cGVuYW1lX29mX3R1cGxlNSIsInR5cGVuYW1lX29mX3R1cGxlNCIsInR5cGVuYW1lX29mX3R1cGxlMyIsInR5cGVuYW1lX29mX3R1cGxlMiIsInR5cGVuYW1lX29mX3R1cGxlMCIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfYXJyYXkiLCJ0eXBlbmFtZV9vZl9saXN0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX3N0cmluZyIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2ludDYzIiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidHlwZXJlcF9vZl90dXBsZTQiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTAiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2xhenlfdCIsInR5cGVyZXBfb2ZfYXJyYXkiLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX29wdGlvbiIsInZhbHVlX3R1cGxlMCIsInR5cGVyZXBfb2ZfdW5pdCIsInR5cGVyZXBfb2ZfYm9vbCIsInR5cGVyZXBfb2ZfYnl0ZXMiLCJ0eXBlcmVwX29mX3N0cmluZyIsInR5cGVyZXBfb2ZfZmxvYXQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2ludDYzIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9pbnQzMiIsInR5cGVyZXBfb2ZfaW50Iiwid2l0aF9yZXR1cm4iLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJvZl9zdHJpbmciLCJ4IiwidG9fc3RyaW5nIiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJjYWxsZXJfaWRlbnRpdHkiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ2MSIsInYxJDAiLCJiaW5fd3JpdGVfdCIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYXJnXzEiLCJhcmdfMSQwIiwieCQwIiwib2ZfYmlnc3RyaW5nIiwibSIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ19sZW5ndGgiLCJ0b19iaWdzdHJpbmciLCJvcHQiLCJzdGgiLCJwcmVmaXhfd2l0aF9sZW5ndGgiLCJ0X2xlbmd0aCIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludGYiLCJleGl0ZiIsImZtdCIsImNvbGxlY3RfdG9fc3RyaW5nIiwiZiIsImRvbmUiLCJvdXRwdXQiLCJlcnIkMyIsImVyciQyIiwiZXJyJDEiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDQiLCJlcnJvcl9zb3VyY2VfMDA5IiwibmFtZSQwIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjAiLCJuYW1lJDEiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzAzNSIsIm5hbWUkMiIsImVycm9yX3NvdXJjZV8wNTEiLCJlcnJvcl9zb3VyY2VfMDUzIiwibmFtZSQzIiwiZXJyb3Jfc291cmNlXzA2NCIsIm5hbWUkNCIsImVycm9yX3NvdXJjZV8wODIiLCJlcnJvcl9zb3VyY2VfMDg0IiwibmFtZSQ1IiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwieF8wMDUiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA2IiwiYl8wMDciLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwidF9vZl9zZXhwJDAiLCJ4XzAxMCIsInNleHBfb2ZfdCQwIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzAxMSIsImJfMDEyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMTYiLCJhdG9tXzAxNCIsImF0b21fMDE0JDAiLCJ0X29mX3NleHAkMiIsInNleHBfMDE5Iiwic2V4cF9vZl90JDEiLCJncm91cCQyIiwiYmluX3NoYXBlX3QkMiIsImJpbl9zaXplX3QkMiIsImFyZ3MiLCJzaXplX2FyZ3MiLCJiaW5fd3JpdGVfdCQyIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImJpbl90JDIiLCJjb21wYXJlJDIiLCJhXzAyMSIsImJfMDIyIiwicmlnaHRfMDI0IiwibGVmdF8wMjMiLCJoYXNoX2ZvbGRfdCQyIiwiaHN2JDAiLCJoYXNoJDIiLCJ0X29mX3NleHAkMyIsInNleHBfMDI4IiwiYXRvbV8wMjYiLCJzZXhwX2FyZ3NfMDI5IiwiYXRvbV8wMjYkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0X29mX3NleHAkNCIsInNleHBfMDM0Iiwic2V4cF9vZl90JDIiLCJ2XzAzNiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQzIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsImJpbl93cml0ZXJfdCQzIiwiYmluX3JlYWRfdCQ3IiwiYmluX3JlYWRfdCQ4IiwiYmluX3JlYWRlcl90JDMiLCJiaW5fdCQzIiwiY29tcGFyZSQzIiwiYV8wMzciLCJiXzAzOCIsInJpZ2h0XzA0MiIsImxlZnRfMDQxIiwiaGFzaF9mb2xkX3QkMyIsImhhc2gkMyIsInRfb2Zfc2V4cCQ1Iiwic2V4cF8wNTIiLCJhdG9tXzA0NCIsInNleHBfYXJnc18wNDciLCJhdG9tXzA0NCQwIiwiYXJnMF8wNDkiLCJyZXMwXzA1MCIsInNleHBfb2ZfdCQzIiwidl8wNTQiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfbm9ib2R5IiwiYmluX3NpemVfbm9ib2R5IiwiYmluX3dyaXRlX25vYm9keSIsImJpbl93cml0ZXJfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5JDAiLCJiaW5fcmVhZGVyX25vYm9keSIsImJpbl9ub2JvZHkiLCJjb21wYXJlX25vYm9keSIsImhhc2hfZm9sZF9ub2JvZHkiLCJmdW5jIiwiaGFzaF9ub2JvZHkiLCJub2JvZHlfb2Zfc2V4cCIsInNleHBfb2Zfbm9ib2R5IiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9tZSIsImJpbl9zaXplX21lIiwiYmluX3dyaXRlX21lIiwiYmluX3dyaXRlcl9tZSIsImJpbl9yZWFkX21lIiwiYmluX3JlYWRfbWUkMCIsImJpbl9yZWFkZXJfbWUiLCJiaW5fbWUiLCJjb21wYXJlX21lIiwiaGFzaF9mb2xkX21lIiwiZnVuYyQwIiwiaGFzaF9tZSIsIm1lX29mX3NleHAiLCJzZXhwX29mX21lIiwiZ3JvdXAkOCIsImJpbl9zaGFwZV90JDUiLCJiaW5fc2l6ZV90JDUiLCJiaW5fd3JpdGVfdCQ1IiwiYmluX3dyaXRlcl90JDUiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3QkNSIsImNvbXBhcmUkNSIsImFfMTAxIiwiYl8xMDIiLCJhXzEwMyIsImJfMTA0IiwicmlnaHRfMDcyIiwibGVmdF8wNzEiLCJoYXNoX2ZvbGRfcGVybXMiLCJwZXJtc19vZl9zZXhwIiwib2ZfYV8xMDciLCJ4XzEwOSIsInNleHBfMDc0IiwiYXRvbV8wNzUiLCJzZXhwX2FyZ3NfMDc4IiwiYXRvbV8wNzUkMCIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJzZXhwX29mX3Blcm1zIiwib2ZfYV8xMTAiLCJ4XzExMSIsInZfMDg2Iiwidl8wODciLCJncm91cCQ5IiwiYmluX3NoYXBlX3JlYWQiLCJiaW5fc2l6ZV9yZWFkIiwiYmluX3dyaXRlX3JlYWQiLCJiaW5fd3JpdGVyX3JlYWQiLCJiaW5fcmVhZF9yZWFkIiwiYmluX3JlYWRfcmVhZCQwIiwiYmluX3JlYWRlcl9yZWFkIiwiYmluX3JlYWQiLCJjb21wYXJlX3JlYWQiLCJoYXNoX2ZvbGRfcmVhZCIsImZ1bmMkMSIsImhhc2hfcmVhZCIsInJlYWRfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZCIsImNvbXBhcmVfd3JpdGUiLCJoYXNoX2ZvbGRfd3JpdGUiLCJmdW5jJDIiLCJoYXNoX3dyaXRlIiwid3JpdGVfb2Zfc2V4cCIsInNleHBfb2Zfd3JpdGUiLCJncm91cCQxMCIsImJpbl9zaGFwZV9pbW11dGFibGUiLCJiaW5fc2l6ZV9pbW11dGFibGUiLCJiaW5fd3JpdGVfaW1tdXRhYmxlIiwiYmluX3dyaXRlcl9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUkMCIsImJpbl9yZWFkZXJfaW1tdXRhYmxlIiwiYmluX2ltbXV0YWJsZSIsImNvbXBhcmVfaW1tdXRhYmxlIiwiaGFzaF9mb2xkX2ltbXV0YWJsZSIsImZ1bmMkMyIsImhhc2hfaW1tdXRhYmxlIiwiaW1tdXRhYmxlX29mX3NleHAiLCJzZXhwX29mX2ltbXV0YWJsZSIsImdyb3VwJDExIiwiYmluX3NoYXBlX3JlYWRfd3JpdGUiLCJiaW5fc2l6ZV9yZWFkX3dyaXRlIiwiYmluX3dyaXRlX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlIiwiYmluX3JlYWRfcmVhZF93cml0ZSQwIiwiYmluX3JlYWRlcl9yZWFkX3dyaXRlIiwiYmluX3JlYWRfd3JpdGUiLCJjb21wYXJlX3JlYWRfd3JpdGUiLCJoYXNoX2ZvbGRfcmVhZF93cml0ZSIsImZ1bmMkNCIsImhhc2hfcmVhZF93cml0ZSIsInJlYWRfd3JpdGVfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZF93cml0ZSIsImdyb3VwJDEyIiwiYmluX3NoYXBlX3Blcm1zIiwiYmluX3NpemVfcGVybXMiLCJiaW5fd3JpdGVfcGVybXMiLCJiaW5fd3JpdGVyX3Blcm1zIiwiYmluX3JlYWRfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyQwIiwiYmluX3JlYWRlcl9wZXJtcyIsImJpbl9wZXJtcyIsImNvbXBhcmVfcGVybXMiLCJhXzEyNCIsImJfMTI1IiwiYV8xMjYiLCJiXzEyNyIsIm1ha2UiLCJlcnJvcl9zb3VyY2VfMDExIiwidGVzdHMiLCJiIiwic2l6ZV9vZl9iIiwid3JpdGVfYiIsImJpbl93cml0ZXJfYiIsIm9mX2IiLCJiaW5fcmVhZGVyX2IiLCJiaW5fYiIsImNtcF9iIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJvZl9hXzAwNyIsIm9mX2JfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsIm9mX2FfMDI1Iiwib2ZfYl8wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsIm1hcCIsImYxIiwiZjIiLCJ4XzA0MCIsInhfMDQxIiwiZXF1YWwiLCJ4XzA0MiIsInhfMDQzIiwiYV8wMzUiLCJiXzAzNiIsInN5bWJvbCIsInkiLCJub3JtYWxpemUiLCJsZW5ndGhfZnVuIiwiaSIsInNsaWNlIiwic3ViX2Z1biIsInN0YXJ0Iiwic3RvcCIsInN0b3AkMCIsImxlbiIsInNpemVfb2ZfcyIsInYyIiwic2l6ZSIsIndyaXRlX3MiLCJwb3MkMiIsImJpbl93cml0ZXJfcyIsIm9mX3MiLCJhcmdfMiIsImJpbl9yZWFkZXJfcyIsImJpbl9zIiwidjEkMSIsInBvcyQzIiwiYXJnXzEkMSIsIm1lcmdlX2FsbCIsIkhlYXAiLCJzZXFzIiwibm90X3lldF9pbl9oZWFwIiwiaGVhcCIsImhlYXAkMCIsInNlcSQyIiwiZWx0JDAiLCJub3RfeWV0X2luX2hlYXAkMCIsInNlcSIsInNlcSQwIiwic2VxJDEiLCJlbHQiLCJ0X3NleHBfZ3JhbW1hciIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yIiwiZ2VuZXJhdG9yXzAwMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJvYnNlcnZlcl8wMDIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic2hyaW5rZXJfMDAxIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsImJpbmFyeV9zZWFyY2giLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsIm1lbSIsImlzX2VtcHR5IiwiaXRlciIsImZvbGQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNyZWF0ZSIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiaW5pdCIsIm1ha2VfbWF0cml4IiwiY29weV9tYXRyaXgiLCJhcHBlbmQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImJsaXQiLCJibGl0byIsInVuc2FmZV9ibGl0Iiwic3ViIiwic3VibyIsIm9mX2xpc3QiLCJmb2xkaW5nX21hcCIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwIiwiZm9sZF9tYXBpIiwiaXRlcmkiLCJtYXBpIiwiZm9sZGkiLCJmb2xkX3JpZ2h0Iiwic29ydCIsInN0YWJsZV9zb3J0IiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwibWVyZ2UiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJwYXJ0aXRpb25fdGYiLCJwYXJ0aXRpb25pX3RmIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJ0cmFuc3Bvc2UiLCJ0cmFuc3Bvc2VfZXhuIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJmaWx0ZXJfbWFwaSIsImZvcl9hbGxpIiwiZXhpc3RzaSIsImNvdW50aSIsIml0ZXIyX2V4biIsIm1hcDJfZXhuIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDJfZXhuIiwiZXhpc3RzMl9leG4iLCJmaWx0ZXIiLCJmaWx0ZXJpIiwic3dhcCIsInJldl9pbnBsYWNlIiwicmV2Iiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRfZXhuIiwiZmluZF9tYXBfZXhuIiwiZmluZGkiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJmaW5kX21hcGlfZXhuIiwiZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicGVybXV0ZSIsInJhbmRvbV9lbGVtZW50IiwicmFuZG9tX2VsZW1lbnRfZXhuIiwiemlwIiwiemlwX2V4biIsInVuemlwIiwic29ydGVkX2NvcHkiLCJsYXN0IiwidG9fc2VxdWVuY2UiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwibmdldCIsIm5zZXQiLCJsZW5ndGgiLCJnZXQiLCJzZXQiLCJjb21wYXJlX3QiLCJhXzAwNCIsImJfMDA1IiwieF8wMDkiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiYmluX3NoYXBlX3QkNiIsInNpemVfb2ZfZiIsIndyaXRlX2YiLCJiaW5fd3JpdGVyX2YiLCJvZl9mIiwiYmluX3JlYWRlcl9mIiwiYmluX2YiLCJjbXBfZiIsImNtcF9zIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJ2MCIsInRhZzAiLCJ0YWcxIiwidHlwZW5hbWUiLCJ0YWdzIiwicG9seW1vcnBoaWMiLCJ2YWx1ZSIsInYwJDAiLCJ4MSIsIngyIiwiYV8wMzYiLCJiXzAzNyIsImFfMDQwIiwiYl8wNDEiLCJhXzAzOCIsImJfMDM5IiwibmFtZXMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidjQiLCJ2MyIsInNpemUkMCIsInNpemUkMSIsInZfcG9zX2ZuYW1lIiwidl9wb3NfbG51bSIsInZfcG9zX2JvbCIsInZfcG9zX2NudW0iLCJuIiwibiQwIiwibiQxIiwicG9zX2NudW0iLCJyIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2NudW0kMCIsInBvc19ib2wkMCIsInBvc19sbnVtJDAiLCJwb3NfZm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsInBvc19mbmFtZV9mdW4iLCJwb3NfbG51bV9mdW4iLCJwb3NfYm9sX2Z1biIsInBvc19jbnVtX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsInBvc19mbmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwicG9zX2xudW1fZ2VuIiwiY29tcGlsZV9hY2MkMiIsInBvc19ib2xfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInBvc19jbnVtX2dlbiIsImFjYyIsIm1hcF9wb2x5IiwicmVjb3JkIiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwic2V4cF8wMDQiLCJmaWVsZF9zZXhwc18wMDUiLCJwb3NfZm5hbWVfMDA2IiwicG9zX2xudW1fMDA4IiwicG9zX2JvbF8wMTAiLCJwb3NfY251bV8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDA0JDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI1IiwiZmllbGRfc2V4cF8wMTckNCIsImZpZWxkX3NleHBfMDE3IiwieF8wMjYiLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIyIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMTkiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMCIsInBvc19jbnVtXzAxMyIsInBvc19ib2xfMDExIiwicG9zX2xudW1fMDA5IiwicG9zX2ZuYW1lXzAwNyIsInBvc19jbnVtXzAzNCIsInBvc19ib2xfMDMyIiwicG9zX2xudW1fMDMwIiwicG9zX2ZuYW1lXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImEwIiwiYTAkMCIsInYxJDIiLCJ2MSQzIiwidjIkMCIsInYxJDQiLCJ2MyQwIiwidjIkMSIsInYxJDUiLCJzaXplJDIiLCJzaXplJDMiLCJ2MiQyIiwidjEkNiIsInNpemUkNCIsInYyJDMiLCJ2MSQ3Iiwic2l6ZSQ1IiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMiIsImFyZ18xJDMiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJzZXhwX29mX3QkNiIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJiaW5fc2l6ZV90JDYiLCJiaW5fd3JpdGVfdCQ2IiwiZmFpbHdpdGhzIiwic3RyaWN0IiwiaGVyZSIsIm1lc3NhZ2UiLCJmYWlsd2l0aHAiLCJ0b19ydW4iLCJydW4iLCJzYW5pdGl6ZSIsImZsdXNoZWQiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSIsInRvX3J1biQwIiwicnVuJDAiLCJmbHVzaGVkJDAiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSQwIiwic2FuaXRpemUkMCIsIm9mX2FfMDEwIiwieF8wMTEiLCJhXzAxMiIsImJfMDEzIiwiYV8wMTYiLCJiXzAxNyIsImFfMDE0IiwiYl8wMTUiLCJvZl9hXzAxOCIsInhfMDIwIiwib2ZfYV8wMjEiLCJ4XzAyMiIsIm1hcCQxIiwiZGVmYXVsdF9zZWVkIiwiZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MiIsImdlbmVyYXRvcl8wMTIiLCJnZW5lcmF0b3JfMDEzIiwic2l6ZV8wMTYiLCJyYW5kb21fMDE3Iiwic2l6ZV8wMTQiLCJyYW5kb21fMDE1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MiIsIm9ic2VydmVyXzAwNSIsIm9ic2VydmVyXzAwNiIsInhfMDA3Iiwic2l6ZV8wMDgiLCJoYXNoXzAwOSIsImhhc2hfMDA5JDAiLCJoYXNoXzAwOSQxIiwiaGFzaF8wMDkkMiIsImhhc2hfMDA5JDMiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyIiwic2hyaW5rZXJfMDAyIiwieF8wMDQiLCJ4XzAwMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzIiwiZ2VuZXJhdG9yXzAzMyIsImdlbmVyYXRvcl8wMzQiLCJnZW5lcmF0b3JfMDM1Iiwic2l6ZV8wNDAiLCJyYW5kb21fMDQxIiwic2l6ZV8wMzgiLCJyYW5kb21fMDM5Iiwic2l6ZV8wMzYiLCJyYW5kb21fMDM3IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MyIsIm9ic2VydmVyXzAyNCIsIm9ic2VydmVyXzAyNSIsIm9ic2VydmVyXzAyNiIsInhfMDI3Iiwic2l6ZV8wMjgiLCJoYXNoXzAyOSIsInhfMDMwIiwiaGFzaF8wMjkkMCIsImhhc2hfMDI5JDEiLCJ4XzAzMSIsImhhc2hfMDI5JDIiLCJoYXNoXzAyOSQzIiwieF8wMzIiLCJoYXNoXzAyOSQ0IiwiaGFzaF8wMjkkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDMiLCJzaHJpbmtlcl8wMTgiLCJzaHJpbmtlcl8wMTkiLCJzaHJpbmtlcl8wMjAiLCJ4XzAyMSIsInhfMDIzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDQiLCJnZW5lcmF0b3JfMDYxIiwiZ2VuZXJhdG9yXzA2MiIsImdlbmVyYXRvcl8wNjMiLCJnZW5lcmF0b3JfMDY0Iiwic2l6ZV8wNzEiLCJyYW5kb21fMDcyIiwic2l6ZV8wNjkiLCJyYW5kb21fMDcwIiwic2l6ZV8wNjciLCJyYW5kb21fMDY4Iiwic2l6ZV8wNjUiLCJyYW5kb21fMDY2IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NCIsIm9ic2VydmVyXzA1MCIsIm9ic2VydmVyXzA1MSIsIm9ic2VydmVyXzA1MiIsIm9ic2VydmVyXzA1MyIsInhfMDU0Iiwic2l6ZV8wNTUiLCJoYXNoXzA1NiIsInhfMDU3IiwiaGFzaF8wNTYkMCIsImhhc2hfMDU2JDEiLCJ4XzA1OCIsImhhc2hfMDU2JDIiLCJoYXNoXzA1NiQzIiwieF8wNTkiLCJoYXNoXzA1NiQ0IiwiaGFzaF8wNTYkNSIsInhfMDYwIiwiaGFzaF8wNTYkNiIsImhhc2hfMDU2JDciLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0Iiwic2hyaW5rZXJfMDQyIiwic2hyaW5rZXJfMDQzIiwic2hyaW5rZXJfMDQ0Iiwic2hyaW5rZXJfMDQ1IiwieF8wNDYiLCJ4XzA0NyIsInhfMDQ4IiwieF8wNDkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NSIsImdlbmVyYXRvcl8wOTYiLCJnZW5lcmF0b3JfMDk3IiwiZ2VuZXJhdG9yXzA5OCIsImdlbmVyYXRvcl8wOTkiLCJnZW5lcmF0b3JfMTAwIiwic2l6ZV8xMDkiLCJyYW5kb21fMTEwIiwic2l6ZV8xMDciLCJyYW5kb21fMTA4Iiwic2l6ZV8xMDUiLCJyYW5kb21fMTA2Iiwic2l6ZV8xMDMiLCJyYW5kb21fMTA0Iiwic2l6ZV8xMDEiLCJyYW5kb21fMTAyIiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NSIsIm9ic2VydmVyXzA4MyIsIm9ic2VydmVyXzA4NCIsIm9ic2VydmVyXzA4NSIsIm9ic2VydmVyXzA4NiIsIm9ic2VydmVyXzA4NyIsInhfMDg4Iiwic2l6ZV8wODkiLCJoYXNoXzA5MCIsInhfMDkxIiwiaGFzaF8wOTAkMCIsImhhc2hfMDkwJDEiLCJ4XzA5MiIsImhhc2hfMDkwJDIiLCJoYXNoXzA5MCQzIiwiaGFzaF8wOTAkNCIsImhhc2hfMDkwJDUiLCJoYXNoXzA5MCQ2IiwiaGFzaF8wOTAkNyIsInhfMDk1IiwiaGFzaF8wOTAkOCIsImhhc2hfMDkwJDkiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1Iiwic2hyaW5rZXJfMDczIiwic2hyaW5rZXJfMDc0Iiwic2hyaW5rZXJfMDc1Iiwic2hyaW5rZXJfMDc2Iiwic2hyaW5rZXJfMDc3IiwieF8wNzgiLCJ4XzA3OSIsInhfMDgwIiwieF8wODEiLCJ4XzA4MiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2IiwiZ2VuZXJhdG9yXzEzOCIsImdlbmVyYXRvcl8xMzkiLCJnZW5lcmF0b3JfMTQwIiwiZ2VuZXJhdG9yXzE0MSIsImdlbmVyYXRvcl8xNDIiLCJnZW5lcmF0b3JfMTQzIiwic2l6ZV8xNTQiLCJyYW5kb21fMTU1Iiwic2l6ZV8xNTIiLCJyYW5kb21fMTUzIiwic2l6ZV8xNTAiLCJyYW5kb21fMTUxIiwic2l6ZV8xNDgiLCJyYW5kb21fMTQ5Iiwic2l6ZV8xNDYiLCJyYW5kb21fMTQ3Iiwic2l6ZV8xNDQiLCJyYW5kb21fMTQ1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NiIsIm9ic2VydmVyXzEyMyIsIm9ic2VydmVyXzEyNCIsIm9ic2VydmVyXzEyNSIsIm9ic2VydmVyXzEyNiIsIm9ic2VydmVyXzEyNyIsIm9ic2VydmVyXzEyOCIsInhfMTI5Iiwic2l6ZV8xMzAiLCJoYXNoXzEzMSIsInhfMTMyIiwiaGFzaF8xMzEkMCIsImhhc2hfMTMxJDEiLCJ4XzEzMyIsImhhc2hfMTMxJDIiLCJoYXNoXzEzMSQzIiwieF8xMzQiLCJoYXNoXzEzMSQ0IiwiaGFzaF8xMzEkNSIsInhfMTM1IiwiaGFzaF8xMzEkNiIsImhhc2hfMTMxJDciLCJ4XzEzNiIsImhhc2hfMTMxJDgiLCJoYXNoXzEzMSQ5IiwieF8xMzciLCJoYXNoXzEzMSQxMCIsImhhc2hfMTMxJDExIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NiIsInNocmlua2VyXzExMSIsInNocmlua2VyXzExMiIsInNocmlua2VyXzExMyIsInNocmlua2VyXzExNCIsInNocmlua2VyXzExNSIsInNocmlua2VyXzExNiIsInhfMTE3IiwieF8xMTgiLCJ4XzExOSIsInhfMTIwIiwieF8xMjEiLCJ4XzEyMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMiIsImdlbmVyYXRvcl8xNjYiLCJnZW5lcmF0b3JfMTY3Iiwic2l6ZV8xNjgiLCJyYW5kb21fMTY5IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTIiLCJvYnNlcnZlcl8xNjAiLCJvYnNlcnZlcl8xNjEiLCJzaXplXzE2NCIsImhhc2hfMTY1IiwieF8xNjMiLCJ4XzE2MiIsImhhc2hfMTY1JDAiLCJoYXNoXzE2NSQxIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTIiLCJzaHJpbmtlcl8xNTYiLCJzaHJpbmtlcl8xNTciLCJ4XzE1OSIsInhfMTU4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzIiwiZ2VuZXJhdG9yXzE4NCIsImdlbmVyYXRvcl8xODUiLCJnZW5lcmF0b3JfMTg2Iiwic2l6ZV8xODciLCJyYW5kb21fMTg4IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTMiLCJvYnNlcnZlcl8xNzYiLCJvYnNlcnZlcl8xNzciLCJvYnNlcnZlcl8xNzgiLCJzaXplXzE4MiIsImhhc2hfMTgzIiwieF8xODEiLCJ4XzE4MCIsInhfMTc5IiwiaGFzaF8xODMkMCIsImhhc2hfMTgzJDEiLCJoYXNoXzE4MyQyIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTMiLCJzaHJpbmtlcl8xNzAiLCJzaHJpbmtlcl8xNzEiLCJzaHJpbmtlcl8xNzIiLCJ4XzE3NSIsInhfMTc0IiwieF8xNzMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTQiLCJnZW5lcmF0b3JfMjA3IiwiZ2VuZXJhdG9yXzIwOCIsImdlbmVyYXRvcl8yMDkiLCJnZW5lcmF0b3JfMjEwIiwic2l6ZV8yMTEiLCJyYW5kb21fMjEyIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTQiLCJvYnNlcnZlcl8xOTciLCJvYnNlcnZlcl8xOTgiLCJvYnNlcnZlcl8xOTkiLCJvYnNlcnZlcl8yMDAiLCJzaXplXzIwNSIsImhhc2hfMjA2IiwieF8yMDQiLCJ4XzIwMyIsInhfMjAyIiwieF8yMDEiLCJoYXNoXzIwNiQwIiwiaGFzaF8yMDYkMSIsImhhc2hfMjA2JDIiLCJoYXNoXzIwNiQzIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTQiLCJzaHJpbmtlcl8xODkiLCJzaHJpbmtlcl8xOTAiLCJzaHJpbmtlcl8xOTEiLCJzaHJpbmtlcl8xOTIiLCJ4XzE5NiIsInhfMTk1IiwieF8xOTQiLCJ4XzE5MyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNSIsImdlbmVyYXRvcl8yMzUiLCJnZW5lcmF0b3JfMjM2IiwiZ2VuZXJhdG9yXzIzNyIsImdlbmVyYXRvcl8yMzgiLCJnZW5lcmF0b3JfMjM5Iiwic2l6ZV8yNDAiLCJyYW5kb21fMjQxIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTUiLCJvYnNlcnZlcl8yMjMiLCJvYnNlcnZlcl8yMjQiLCJvYnNlcnZlcl8yMjUiLCJvYnNlcnZlcl8yMjYiLCJvYnNlcnZlcl8yMjciLCJzaXplXzIzMyIsImhhc2hfMjM0IiwieF8yMzIiLCJ4XzIzMSIsInhfMjMwIiwieF8yMjkiLCJ4XzIyOCIsImhhc2hfMjM0JDAiLCJoYXNoXzIzNCQxIiwiaGFzaF8yMzQkMiIsImhhc2hfMjM0JDMiLCJoYXNoXzIzNCQ0IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTUiLCJzaHJpbmtlcl8yMTMiLCJzaHJpbmtlcl8yMTQiLCJzaHJpbmtlcl8yMTUiLCJzaHJpbmtlcl8yMTYiLCJzaHJpbmtlcl8yMTciLCJ4XzIyMiIsInhfMjIxIiwieF8yMjAiLCJ4XzIxOSIsInhfMjE4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2IiwiZ2VuZXJhdG9yXzI2OCIsImdlbmVyYXRvcl8yNjkiLCJnZW5lcmF0b3JfMjcwIiwiZ2VuZXJhdG9yXzI3MSIsImdlbmVyYXRvcl8yNzIiLCJnZW5lcmF0b3JfMjczIiwic2l6ZV8yNzQiLCJyYW5kb21fMjc1IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTYiLCJvYnNlcnZlcl8yNTQiLCJvYnNlcnZlcl8yNTUiLCJvYnNlcnZlcl8yNTYiLCJvYnNlcnZlcl8yNTciLCJvYnNlcnZlcl8yNTgiLCJvYnNlcnZlcl8yNTkiLCJzaXplXzI2NiIsImhhc2hfMjY3IiwieF8yNjUiLCJ4XzI2NCIsInhfMjYzIiwieF8yNjIiLCJ4XzI2MSIsInhfMjYwIiwiaGFzaF8yNjckMCIsImhhc2hfMjY3JDEiLCJoYXNoXzI2NyQyIiwiaGFzaF8yNjckMyIsImhhc2hfMjY3JDQiLCJoYXNoXzI2NyQ1IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTYiLCJzaHJpbmtlcl8yNDIiLCJzaHJpbmtlcl8yNDMiLCJzaHJpbmtlcl8yNDQiLCJzaHJpbmtlcl8yNDUiLCJzaHJpbmtlcl8yNDYiLCJzaHJpbmtlcl8yNDciLCJ4XzI1MyIsInhfMjUyIiwieF8yNTEiLCJ4XzI1MCIsInhfMjQ5IiwieF8yNDgiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjIiLCJvYnNlcnZlcl8yODIiLCJvYnNlcnZlcl8yODMiLCJnZW5lcmF0b3JfMjg0IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4zIiwib2JzZXJ2ZXJfMjkzIiwib2JzZXJ2ZXJfMjk0Iiwib2JzZXJ2ZXJfMjk1IiwiZ2VuZXJhdG9yXzI5NiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNCIsIm9ic2VydmVyXzMwNyIsIm9ic2VydmVyXzMwOCIsIm9ic2VydmVyXzMwOSIsIm9ic2VydmVyXzMxMCIsImdlbmVyYXRvcl8zMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjUiLCJvYnNlcnZlcl8zMjQiLCJvYnNlcnZlcl8zMjUiLCJvYnNlcnZlcl8zMjYiLCJvYnNlcnZlcl8zMjciLCJvYnNlcnZlcl8zMjgiLCJnZW5lcmF0b3JfMzI5IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm42Iiwib2JzZXJ2ZXJfMzQ0Iiwib2JzZXJ2ZXJfMzQ1Iiwib2JzZXJ2ZXJfMzQ2Iiwib2JzZXJ2ZXJfMzQ3Iiwib2JzZXJ2ZXJfMzQ4Iiwib2JzZXJ2ZXJfMzQ5IiwiZ2VuZXJhdG9yXzM1MCIsIm9mX2hhc2giLCJNIiwib2ZfcHJlZGljYXRlIiwic2luZ2xldG9uIiwiZG91YmxldG9uIiwiZW51bSQwIiwibGlzdCIsIm9mX2Z1biIsImNvbXBhcmlzb24iLCJlcSIsImx0IiwiZ3QiLCJjIiwicmV0dXJuJDAiLCJzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCIsInNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCIsInNpbmdsZXRvbiQwIiwiZG91YmxldG9uJDAiLCJyYW5kb20iLCJvZl9mdW4kMCIsIm9mX3NlcXVlbmNlIiwicCIsImsiLCJib3VuZGVkX2dlb21ldHJpYyIsIm1heGltdW0iLCJnZW9tZXRyaWMiLCJsaXN0X3dpdGhfbGVuZ3RoIiwiY29tcGFyZV9mbiIsImRvbSIsImdldF9pbmRleCIsImJfMzUyIiwiYV8zNTEiLCJlcXVhbF9mbiIsImNtcCIsImVtcHR5Iiwibm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSIsInJhbmRvbV9zdGF0ZV9vZl9zZWVkIiwic2VlZCIsInN0ciIsIm1ha2Vfc2VlZCIsInN0cmluZyIsIm1ha2Vfc2hyaW5rX2NvdW50IiwibWFrZV9jb25maWciLCJzaXplcyIsInRyaWFscyIsInNocmlua19hdHRlbXB0cyIsIm1ha2VfdGVzdF9tIiwiZ2VuIiwic2hyaW5rZXIiLCJzZXhwX29mIiwicmFuZG9tX3ZhbHVlIiwic3RoJDAiLCJyYW5kb21fc2VxdWVuY2UiLCJjb25maWciLCJzZXF1ZW5jZSIsInRlc3QiLCJleGFtcGxlcyIsInRlc3RfbSIsInRlc3Rfb3JfZXJyb3IiLCJ0ZXN0X2Rpc3RpbmN0X3ZhbHVlcyIsImRpc3RpbmN0X3ZhbHVlcyIsInNldCQwIiwiYWN0dWFsX2NvdW50Iiwic2V4cF9vZl9lbHQiLCJ4XzM1MyIsInZhbHVlcyIsIm1hdGNoIiwicmVzIiwiaCIsInRlc3RfY2FuX2dlbmVyYXRlIiwic2V4cF9vZl92YWx1ZSIsInhfMzU0IiwiZGVmYXVsdF90cmlhbF9jb3VudCIsImRlZmF1bHRfc2l6ZXMiLCJjb21wYXJlX2EiLCJjb21wYXJlX2IiLCJ0XzAwNiIsInRfMDA1IiwidF8wMDgiLCJ0XzAwNyIsImdlbl9ub25fZW1wdHkiLCJnZW5fd2l0aF9sZW5ndGgiLCJnZW5fZmlsdGVyZWQiLCJnZW5fcGVybXV0YXRpb25zIiwiZ2VuZXJhdGVfYSIsIm9ic2VydmVfYSIsInNocmlua19hIiwibW9kdWxlX25hbWUkMCIsIm1vZHVsZV9uYW1lIiwiaGFzaGFibGVfcyIsImZpbmRfbXVsdGkiLCJyZW1vdmVfbXVsdGkiLCJhZGRfbXVsdGkiLCJkZWNyIiwiaW5jciIsInRvX2FsaXN0Iiwic2ltaWxhciIsImZpbHRlcl9tYXBpX2lucGxhY2UiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJmaWx0ZXJpX2lucGxhY2UiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJkYXRhIiwia2V5cyIsIm1lcmdlX2ludG8iLCJmaW5kX2FuZF9yZW1vdmUiLCJmaW5kaV9hbmRfY2FsbDIiLCJmaW5kaV9hbmRfY2FsbDEiLCJmaW5kaV9hbmRfY2FsbCIsImZpbmRfYW5kX2NhbGwyIiwiZmluZF9hbmRfY2FsbDEiLCJmaW5kX2FuZF9jYWxsIiwiZmluZGlfb3JfYWRkIiwiZmluZF9vcl9hZGQiLCJwYXJ0aXRpb25fbWFwaSIsInBhcnRpdGlvbl9tYXAiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9leG4iLCJjaG9vc2UiLCJyZW1vdmUiLCJpdGVyX2tleXMiLCJjbGVhciIsInNleHBfb2Zfa2V5IiwiY3JlYXRlX3dpdGhfa2V5X2V4biIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV9tYXBwZWQiLCJvZl9hbGlzdF9tdWx0aSIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X29yX2Vycm9yIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIiwib2ZfYWxpc3QiLCJoYXNoX3BhcmFtIiwidmFsaWRhdGUiLCJncm93dGhfYWxsb3dlZCIsImhhc2hhYmxlIiwib2ZfYWxpc3QkMCIsImwiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMkMCIsIm9mX2FsaXN0X29yX2Vycm9yJDAiLCJvZl9hbGlzdF9leG4kMCIsIm9mX2FsaXN0X211bHRpJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwiY29tYmluZSIsImJpbl9zaGFwZV9lbCIsImJpbl9zaXplX2VsIiwiYmluX3dyaXRlX2VsIiwiYmluX3JlYWRfZWwiLCJpdGVyJDEiLCJrZXkiLCJuZXh0IiwiaW52YXJpYW50X2tleSIsInNleHBfb2ZfdiIsInZfb2Zfc2V4cCIsImVxdWFsX21fdCIsIm1fdF9zZXhwX2dyYW1tYXIiLCJtX3Rfb2Zfc2V4cCIsInNleHBfb2ZfbV90Iiwib2ZfYWxpc3Rfb3B0aW9uIiwiYWxpc3QiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9tX3QiLCJLZXkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhIiwic2l6ZV8wMDQiLCJyYW5kb21fMDA1IiwicXVpY2tjaGVja19vYnNlcnZlcl9tX3QiLCJxdWlja2NoZWNrX29ic2VydmVyX2RhdGEiLCJ4XzAwNiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfbV90IiwicXVpY2tjaGVja19zaHJpbmtlcl9kYXRhIiwiaGFzaGFibGUkMCIsIm9mX2xpc3QkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJzaXplX29mX2siLCJzaXplX29mX3YiLCJhcmdzJDAiLCJzaXplX2FyZ3MkMCIsImFyZ3MkMSIsInNpemVfYXJncyQxIiwid3JpdGVfayIsIndyaXRlX3YiLCJiaW5fd3JpdGVyX2siLCJiaW5fd3JpdGVyX3YiLCJvZl9rIiwib2ZfdiIsImJpbl9yZWFkZXJfayIsImJpbl9yZWFkZXJfdiIsImJpbl9rIiwiYmluX3YiLCJjbXBfayIsImNtcF92IiwidF8wMDQiLCJ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3IiwicmlnaHRfMDEyIiwibGVmdF8wMTEiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxMCIsImxlZnRfMDA5Iiwib2Zfa18wMTciLCJvZl92XzAxOCIsInNleHBfMDQ1IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwiYXRvbV8wMjEiLCJzZXhwX2FyZ3NfMDI0IiwiYXRvbV8wMjEkMCIsImFyZzBfMDMyIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwicmVzMF8wMzMiLCJhcmcwXzAzNSIsInJlczBfMDM2IiwiYXJnMF8wMzgiLCJyZXMxXzA0NCIsIm9mX2tfMDQ2Iiwib2Zfdl8wNDciLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJ2XzA0OCIsInJlczFfMDU4Iiwidl8wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMF8wNTMiLCJyZXMxXzA1NCIsInZfMDQ5IiwiZGlmZiIsImskMCIsImRpZmYkMCIsInYkMCIsIm1hcF9kYXRhIiwibGVmdCIsInJpZ2h0IiwiZ2VuX3RyZWUiLCJjb21wYXJhdG9yIiwia19nZW4iLCJ2X2dlbiIsIm9ic190cmVlIiwia19vYnMiLCJ2X29icyIsInNocl90cmVlIiwia19zaHIiLCJ2X3NociIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJoYXNoX2ZvbGRfZGlyZWN0Iiwib2ZfaGFzaHRibF9leG4iLCJoYXNodGJsIiwidHJlZV9vZl9oYXNodGJsX2V4biIsImtleV9zZXQiLCJrZXlfc2V0X29mX3RyZWUiLCJvZl9rZXlfc2V0IiwidHJlZV9vZl9rZXlfc2V0IiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsInRvX3RyZWUkMCIsInJhbmsiLCJudGhfZXhuIiwibnRoIiwiY2xvc2VzdF9rZXkiLCJyYW5nZV90b19hbGlzdCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwic3VicmFuZ2UiLCJzcGxpdCIsIm1heF9lbHRfZXhuIiwibWluX2VsdF9leG4iLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwic3ltbWV0cmljX2RpZmYiLCJtZXJnZV9za2V3ZWQiLCJrZXlzJDAiLCJjb21wYXJlX2RpcmVjdCIsImNvbWJpbmVfZXJyb3JzIiwiZm9sZDIiLCJpdGVyMiIsIml0ZXJpX3VudGlsIiwiaW52YXJpYW50cyIsInZhbGlkYXRlaSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMCIsImtleV9zZXQkMCIsImtleV9zZXQkMSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVtcHR5JDAiLCJvZl9hbGlzdF9mb2xkJDAiLCJvZl9hbGlzdF9yZWR1Y2UkMCIsIm9mX2l0ZXJpJDAiLCJvZl9pdGVyaV9leG4kMCIsIm9mX3NvcnRlZF9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJmb3JfYWxsaSQwIiwiZXhpc3RzaSQwIiwiY291bnQkMCIsImNvdW50aSQwIiwic3BsaXQkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwidG9fdHJlZSIsImRhdGFfZXF1YWwiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJtaW4iLCJtYXgiLCJvcmRlciIsImtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byIsImtleXNfbGVzc19vcl9lcXVhbF90byIsImhvdyIsInNlZ21lbnRfb2YiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImluaXRfZm9yX2Jpbl9wcm90IiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2Zfc29ydGVkX2FycmF5JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX2FsaXN0JDEiLCJvZl9hbGlzdF9vcl9lcnJvciQxIiwib2ZfYWxpc3RfZXhuJDEiLCJvZl9hbGlzdF9tdWx0aSQxIiwib2ZfYWxpc3RfZm9sZCQxIiwib2ZfYWxpc3RfcmVkdWNlJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9rZXlfc2V0JDEiLCJ0b190cmVlJDIiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDEiLCJzZXQkMSIsImFkZCQxIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJmaW5kX2V4biQxIiwiZmluZCQxIiwicmVtb3ZlJDEiLCJtZW0kMSIsIml0ZXJfa2V5cyQxIiwiaXRlciQyIiwiaXRlcmkkMSIsIml0ZXJpX3VudGlsJDEiLCJpdGVyMiQxIiwibWFwJDIiLCJtYXBpJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlciQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcCQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJwYXJ0aXRpb25fdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJjb21wYXJlX2RpcmVjdCQxIiwia2V5cyQyIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsInZhbGlkYXRlJDEiLCJ2YWxpZGF0ZWkkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImZvcl9hbGwkMSIsImZvcl9hbGxpJDEiLCJleGlzdHMkMSIsImV4aXN0c2kkMSIsImNvdW50JDEiLCJjb3VudGkkMSIsInNwbGl0JDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInRfc2V4cF9ncmFtbWFyJDAiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxMCIsImVycm9yX3NvdXJjZV8wNTQiLCJzZXhwXzAxMiIsInRhZ18wMTMiLCJzZXhwX2FyZ3NfMDE0Iiwic2V4cF9hcmdzXzAxOSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJvZl9hXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjciLCJ4JDEiLCJnZW5lcmF0b3JfMDQ0Iiwic2l6ZV8wNDkiLCJyYW5kb21fMDUwIiwic2l6ZV8wNDciLCJyYW5kb21fMDQ4Iiwic2l6ZV8wNDUiLCJyYW5kb21fMDQ2Iiwib2JzZXJ2ZXJfMDM4IiwieF8wMzkiLCJoYXNoXzA0MSIsImhhc2hfMDQxJDAiLCJoYXNoXzA0MSQxIiwiaGFzaF8wNDEkMiIsImhhc2hfMDQxJDMiLCJoYXNoXzA0MSQ0Iiwic2hyaW5rZXJfMDM1IiwieF8wMzYiLCJ4XzAzNyIsIm9mX2FfMDUxIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsIm9mX2FfMDY3IiwiYXJnMF8wNjgiLCJyZXMwXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImVsdF9nZW4iLCJlbHRfb2JzIiwiZWx0X3NociIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInRvX21hcCIsIm9mX21hcF9rZXlzIiwib2ZfaGFzaF9zZXQiLCJoc2V0Iiwib2ZfaGFzaHRibF9rZXlzIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInJlbW92ZV9pbmRleCQwIiwiZ3JvdXBfYnkkMCIsImNob29zZV9leG4kMCIsImNob29zZSQwIiwiZWxlbWVudHMkMCIsImFyZV9kaXNqb2ludCQwIiwiaXNfc3Vic2V0JDAiLCJpbnRlciQwIiwidW5pb24kMCIsInRvX2FycmF5JDAiLCJmaW5kX21hcCQwIiwic3VtJDAiLCJmb2xkX3Jlc3VsdCQwIiwidG9fbWFwJDAiLCJ1bmlvbiQxIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMSIsImRpZmYkMSIsInN1bSQxIiwiZmluZF9tYXAkMSIsInJlbW92ZV9pbmRleCQxIiwiaXNfc3Vic2V0JDEiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2FycmF5JDAiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDEiLCJlbGVtZW50cyQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJncm91cF9ieSQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQxIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwib2ZfYXJyYXkiLCJzdGFibGVfZGVkdXBfbGlzdCIsInhzIiwib2YiLCJlcXVpdiIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwidCQwIiwiZWxlbWVudHMiLCJ1bmlvbiIsImludGVyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiZ3JvdXBfYnkiLCJyZW1vdmVfaW5kZXgiLCJtZXJnZV90b19zZXF1ZW5jZSIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwiaW52YXJpYW50cyQyIiwibGVuZ3RoJDIiLCJpc19lbXB0eSQyIiwiZWxlbWVudHMkMiIsIm1pbl9lbHQkMiIsIm1pbl9lbHRfZXhuJDIiLCJtYXhfZWx0JDIiLCJtYXhfZWx0X2V4biQyIiwiY2hvb3NlJDIiLCJjaG9vc2VfZXhuJDIiLCJ0b19saXN0JDIiLCJ0b19hcnJheSQyIiwiaXRlciQzIiwiaXRlcjIkMiIsImV4aXN0cyQyIiwiZm9yX2FsbCQyIiwiY291bnQkMiIsInN1bSQyIiwiZmluZCQyIiwiZmluZF9leG4kMiIsImZpbmRfbWFwJDIiLCJmb2xkJDIiLCJmb2xkX3VudGlsJDIiLCJmb2xkX3JpZ2h0JDIiLCJmb2xkX3Jlc3VsdCQyIiwibWFwJDMiLCJmaWx0ZXIkMiIsImZpbHRlcl9tYXAkMyIsInBhcnRpdGlvbl90ZiQyIiwibWVtJDIiLCJhZGQkMiIsInJlbW92ZSQyIiwidW5pb24kMiIsImludGVyJDIiLCJkaWZmJDIiLCJzeW1tZXRyaWNfZGlmZiQyIiwiY29tcGFyZV9kaXJlY3QkMiIsImVxdWFsJDIiLCJpc19zdWJzZXQkMiIsImFyZV9kaXNqb2ludCQyIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2hhc2hfc2V0JDMiLCJvZl9oYXNodGJsX2tleXMkMyIsIm9mX2FycmF5JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwidW5pb25fbGlzdCQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsImdyb3VwX2J5JDIiLCJzcGxpdCQyIiwibnRoJDIiLCJyZW1vdmVfaW5kZXgkMiIsIm9mX3RyZWUkMyIsInRvX3NlcXVlbmNlJDIiLCJiaW5hcnlfc2VhcmNoJDIiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQyIiwibWVyZ2VfdG9fc2VxdWVuY2UkMiIsIm9mX21hcF9rZXlzJDMiLCJ0b19tYXAkMiIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwic3RhYmxlX2RlZHVwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhXzAxMCIsImJfMDExIiwibm9uZSIsInNvbWUiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInIxIiwidDEkMCIsInIyIiwidDIkMCIsIm4xIiwibjIiLCJpc19jb21wcmVzc2VkIiwicGh5c19lcXVhbCIsInVuaW9uX2ZpbmRfZ2V0X2NoZWNrX25vX3BlbmRpbiIsImNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyIsImluY3JfbGVuZ3RoIiwiaW5jcl9wZW5kaW5nX2l0ZXJzIiwiZGVjcl9wZW5kaW5nX2l0ZXJzIiwid2l0aF9pdGVyYXRpb25fMiIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiaXNfZmlyc3QiLCJpc19sYXN0IiwibWVtX2VsdCIsInByZXYkMCIsImluc2VydF9hZnRlciQwIiwiaW5zZXJ0X2JlZm9yZSQwIiwibmV3X2VsdCIsImluc2VydF9lbXB0eSIsImluc2VydF9sYXN0IiwiaW5zZXJ0X2ZpcnN0IiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZmlyc3QiLCJzZWNvbmQiLCJuZXdfdCIsInZhbHVlJDAiLCJtb3ZlX2JlZm9yZSIsImFuY2hvciIsImFmdGVyX2VsdCIsIm1vdmVfdG9fZnJvbnQiLCJtb3ZlX2FmdGVyIiwibW92ZV90b19iYWNrIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJ0XzAxOCIsInRfMDE3IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdmFsdWUiLCJ2X3RleHQiLCJvZl90ZXh0IiwidmFsdWVfb2Zfc2V4cCIsInRleHQiLCJmaWxlbmFtZSIsImFubm90YXRlZCIsInRfc2V4cF9ncmFtbWFyJDEiLCJvZl92YWx1ZSIsImJpbl9zaGFwZV9ub19yYWlzZSIsImJpbl9zaXplX25vX3JhaXNlIiwiYmluX3dyaXRlX25vX3JhaXNlIiwiYmluX3dyaXRlcl9ub19yYWlzZSIsImJpbl9yZWFkX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UkMCIsImJpbl9yZWFkZXJfbm9fcmFpc2UiLCJiaW5fbm9fcmFpc2UiLCJub19yYWlzZV9vZl9zZXhwIiwib2ZfYV8wMTkiLCJzZXhwX29mX25vX3JhaXNlIiwib2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjIiwib2Zfc2V4cCIsInNleHBfb2ZfZGF0YSIsImFyZzFfMDAyIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImt2IiwicmVhZCIsImVuc3VyZV9jYW5fbW9kaWZ5IiwibG9va3VwIiwibG9va3VwX2V4biIsImVucXVldWUiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlX2JhY2siLCJlbnF1ZXVlX2Zyb250IiwiZW5xdWV1ZV9leG4iLCJlbnF1ZXVlX2JhY2tfZXhuIiwiZW5xdWV1ZV9mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFjayIsImxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQiLCJkZXF1ZXVlX3dpdGhfa2V5IiwibWF5YmVfa3YiLCJkZXF1ZXVlX3dpdGhfa2V5X2V4biIsImRlcXVldWVfYmFja193aXRoX2tleSIsImRlcXVldWVfYmFja193aXRoX2tleV9leG4iLCJkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9iYWNrIiwiZGVxdWV1ZV9mcm9udCIsImxhc3Rfd2l0aF9rZXkiLCJmaXJzdF93aXRoX2tleSIsImRlcXVldWVfZXhuIiwiZGVxdWV1ZV9iYWNrX2V4biIsImRlcXVldWVfZnJvbnRfZXhuIiwiYWMiLCJkZXF1ZXVlX2FsbCIsInJlbW92ZV9leG4iLCJsb29rdXBfYW5kX3JlbW92ZSIsInJlcGxhY2UiLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwiZXNjYXBlZCIsImNvbnRhaW5zIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsImluZGV4IiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tIiwicmluZGV4X2Zyb21fZXhuIiwic3Vic3RyX2luZGV4Iiwic3Vic3RyX2luZGV4X2V4biIsInN1YnN0cl9pbmRleF9hbGwiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCIsInN1YnN0cl9yZXBsYWNlX2FsbCIsImlzX3N1YnN0cmluZyIsImlzX3N1YnN0cmluZ19hdCIsInRvX2xpc3RfcmV2IiwiaXNfc3VmZml4IiwiaXNfcHJlZml4IiwibHNwbGl0Ml9leG4iLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJyc3BsaXQyIiwic3BsaXRfb25fY2hhcnMiLCJzcGxpdF9saW5lcyIsImxmaW5kaSIsInJmaW5kaSIsImxzdHJpcCIsInJzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNob3Bfc3VmZml4X2V4biIsImNob3BfcHJlZml4X2V4biIsImNob3Bfc3VmZml4IiwiY2hvcF9wcmVmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJzdWZmaXgiLCJwcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImRyb3BfcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4X2xlbmd0aCIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4MiIsImNvbW1vbl9zdWZmaXgyX2xlbmd0aCIsImNvbW1vbl9wcmVmaXgyX2xlbmd0aCIsImNvbmNhdF9hcnJheSIsIm9mX2NoYXIiLCJvZl9jaGFyX2xpc3QiLCJpc19zdWZmaXgkMCIsImlzX3ByZWZpeCQwIiwiaXNfc3Vic3RyaW5nJDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsInN1YnN0cl9pbmRleCQwIiwic3Vic3RyX2luZGV4X2V4biQwIiwic3Vic3RyX2luZGV4X2FsbCQwIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QkMCIsInN1YnN0cl9yZXBsYWNlX2FsbCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRhZzIiLCJ2YWxpZGF0ZV9vcmRpbmFyeSIsInJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSIsInJvYnVzdGx5X2NvbXBhcmUiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJyb2J1c3RseV9jb21wYXJlJDAiLCJyb2J1c3Rfc2lnbiIsInRvX3N0cmluZ18xMiIsImdlbl91bmlmb3JtX2V4Y2wiLCJnZW5faW5jbCIsImdlbl93aXRob3V0X25hbiIsImdlbl9maW5pdGUiLCJnZW5fcG9zaXRpdmUiLCJnZW5fbmVnYXRpdmUiLCJnZW5femVybyIsImdlbl9uYW4iLCJnZW5fc3Vibm9ybWFsIiwiZ2VuX25vcm1hbCIsImdlbl9pbmZpbml0ZSIsIm9mX2Zsb2F0IiwidG9fZmxvYXQiLCJ0b19pbnRfZXhuIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiYmluZCIsImpvaW4iLCJpZ25vcmVfbSIsImFsbF91bml0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsInV3IiwicGh5c19zYW1lIiwiYnByaW50ZiIsImNvbnN0JDAiLCJlcnJvciIsImVycm9yX3MiLCJmb3JjZSIsImlkZW50IiwiaW52YWxpZF9hcmdmIiwiaWZwcmludGYiLCJpc19ub25lIiwiaXNfc29tZSIsImtzcHJpbnRmIiwib2tfZXhuIiwicHJpbnRfcyIsImVwcmludF9zIiwicHJvdGVjdCIsInByb3RlY3R4IiwicmFpc2VfcyIsInNwcmludGYiLCJzdGFnZSIsInVuc3RhZ2UiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheSIsImJpbl93cml0ZV9hcnJheSIsImJpbl93cml0ZXJfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImJpbl9yZWFkX2FycmF5JDAiLCJiaW5fcmVhZGVyX2FycmF5IiwiYmluX2FycmF5IiwiY29tcGFyZV9hcnJheSIsImVxdWFsX2FycmF5IiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJhX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ib29sIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2l6ZV9jaGFyIiwiYmluX3dyaXRlX2NoYXIiLCJiaW5fd3JpdGVyX2NoYXIiLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRlcl9jaGFyIiwiYmluX2NoYXIiLCJjb21wYXJlX2NoYXIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfY2hhciIsImVxdWFsX2NoYXIiLCJjaGFyX29mX3NleHAiLCJzZXhwX29mX2NoYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3dyaXRlX2Zsb2F0IiwiYmluX3dyaXRlcl9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0IiwiYmluX3JlYWRfZmxvYXQkMCIsImJpbl9yZWFkZXJfZmxvYXQiLCJiaW5fZmxvYXQiLCJjb21wYXJlX2Zsb2F0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mbG9hdCIsImVxdWFsX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsInNleHBfb2ZfZmxvYXQiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Zsb2F0IiwiYmluX3NoYXBlX2ludCIsImJpbl9zaXplX2ludCIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVyX2ludCIsImJpbl9yZWFkX2ludCIsImJpbl9yZWFkX2ludCQwIiwiYmluX3JlYWRlcl9pbnQiLCJiaW5faW50IiwiY29tcGFyZV9pbnQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9pbnQiLCJlcXVhbF9pbnQiLCJpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaW50IiwiaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NpemVfaW50MzIiLCJiaW5fd3JpdGVfaW50MzIiLCJiaW5fd3JpdGVyX2ludDMyIiwiYmluX3JlYWRfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiQwIiwiYmluX3JlYWRlcl9pbnQzMiIsImJpbl9pbnQzMiIsImNvbXBhcmVfaW50MzIiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ludDMyIiwiZXF1YWxfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwic2V4cF9vZl9pbnQzMiIsImludDMyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50MzIiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2l6ZV9pbnQ2NCIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZXJfaW50NjQiLCJiaW5fcmVhZF9pbnQ2NCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZGVyX2ludDY0IiwiYmluX2ludDY0IiwiY29tcGFyZV9pbnQ2NCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfaW50NjQiLCJlcXVhbF9pbnQ2NCIsImludDY0X29mX3NleHAiLCJzZXhwX29mX2ludDY0IiwiaW50NjRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQ2NCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fd3JpdGVfbGF6eV90IiwiYmluX3dyaXRlcl9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QkMCIsImJpbl9yZWFkZXJfbGF6eV90IiwiYmluX2xhenlfdCIsImNvbXBhcmVfbGF6eV90IiwiYV8wNDYiLCJiXzA0NyIsImFfMDQ4IiwiYl8wNDkiLCJoYXNoX2ZvbGRfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJzZXhwX29mX2xhenlfdCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2xhenlfdCIsImJpbl9zaGFwZV9saXN0IiwiYmluX3NpemVfbGlzdCIsImJpbl93cml0ZV9saXN0IiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRfbGlzdCIsImJpbl9yZWFkX2xpc3QkMCIsImJpbl9yZWFkZXJfbGlzdCIsImJpbl9saXN0IiwiY29tcGFyZV9saXN0IiwiYV8wNTUiLCJiXzA1NiIsImFfMDU3IiwiYl8wNTgiLCJoYXNoX2ZvbGRfbGlzdCIsImVxdWFsX2xpc3QiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiZnVuYyQ1IiwiaGFzaF9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsInNleHBfb2ZfbmF0aXZlaW50IiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfbmF0aXZlaW50IiwiYmluX3NoYXBlX29wdGlvbiIsImJpbl9zaXplX29wdGlvbiIsImJpbl93cml0ZV9vcHRpb24iLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiQwIiwiYmluX3JlYWRlcl9vcHRpb24iLCJiaW5fb3B0aW9uIiwiY29tcGFyZV9vcHRpb24iLCJhXzA3MyIsImJfMDc0IiwiYV8wNzUiLCJiXzA3NiIsImVxdWFsX29wdGlvbiIsImFfMDc3IiwiYl8wNzgiLCJhXzA3OSIsImJfMDgwIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImhhc2hfZm9sZF9zdHJpbmciLCJmdW5jJDYiLCJoYXNoX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2l6ZV9ieXRlcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZXJfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZGVyX2J5dGVzIiwiYmluX2J5dGVzIiwiY29tcGFyZV9ieXRlcyIsImVxdWFsX2J5dGVzIiwiYnl0ZXNfb2Zfc2V4cCIsInNleHBfb2ZfYnl0ZXMiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2J5dGVzIiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaXplX3JlZiIsImJpbl93cml0ZV9yZWYiLCJiaW5fd3JpdGVyX3JlZiIsImJpbl9yZWFkX3JlZiIsImJpbl9yZWFkX3JlZiQwIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVmIiwiY29tcGFyZV9yZWYiLCJhXzA5NiIsImJfMDk3IiwiYV8wOTgiLCJiXzA5OSIsImVxdWFsX3JlZiIsImFfMTAwIiwiYl8xMDEiLCJhXzEwMiIsImJfMTAzIiwicmVmX29mX3NleHAiLCJzZXhwX29mX3JlZiIsInJlZl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3JlZiIsImdyb3VwJDEzIiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2l6ZV91bml0IiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZF91bml0IiwiYmluX3JlYWRfdW5pdCQwIiwiYmluX3JlYWRlcl91bml0IiwiYmluX3VuaXQiLCJjb21wYXJlX3VuaXQiLCJlcXVhbF91bml0IiwiaGFzaF9mb2xkX3VuaXQiLCJmdW5jJDciLCJoYXNoX3VuaXQiLCJ1bml0X29mX3NleHAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfdW5pdCIsImdyb3VwJDE0IiwiYmluX3NoYXBlX2Zsb2F0X2FycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRlcl9mbG9hdF9hcnJheSIsImJpbl9mbG9hdF9hcnJheSIsImNvbXBhcmVfZmxvYXRfYXJyYXkiLCJhXzExNCIsImJfMTE1IiwiYV8xMTYiLCJiXzExNyIsImZsb2F0X2FycmF5X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0X2FycmF5IiwiZmxvYXRfYXJyYXlfc2V4cF9ncmFtbWFyIiwidHlwZW5hbWVfb2ZfZmxvYXRfYXJyYXkiLCJuYW1lX29mX2Zsb2F0X2FycmF5IiwidHlwZXJlcF9vZl9mbG9hdF9hcnJheSIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwibWF4X21lbV93YWl0aW5nX2djIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic3ViX3NoYXJlZCIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdCIsIndyaXRlciIsImRhdGFfbGVuIiwidG90YWxfbGVuIiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4Iiwidl8wMDUiLCJyZXMwXzAxMSIsInZfMDA2IiwicmVzMV8wMTIiLCJ2XzAwNyIsInJlczJfMDEzIiwicG9zX2FmdGVyX3NpemVfaGVhZGVyIiwicG9zX2FmdGVyX2RhdGEiLCJhcmc0XzAyMyIsImFyZzNfMDIyIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5Iiwidl8wMTQiLCJyZXMwXzAyNCIsInZfMDE1IiwicmVzMV8wMjUiLCJ2XzAxNiIsInJlczJfMDI2Iiwidl8wMTciLCJyZXMzXzAyNyIsInZfMDE4IiwicmVzNF8wMjgiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsIm1pbl9wb3MiLCJkYXRhX2VuZCIsInNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmciLCJzbGVuIiwic2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmciLCJtYXhfcG9zIiwiZGF0YV9iZWdpbiIsInRvX2J5dGVzIiwib2ZfYnl0ZXMiLCJieXRlcyIsInRvX2hleCIsIm9mX2hleF9leG4iLCJvZl9iaW5hcnlfZXhuIiwiYWNjdW0iLCJ0b19iaW5hYmxlJDAiLCJkaWdlc3Rfc3RyaW5nIiwiZGlnZXN0X2J5dGVzIiwiZGlnZXN0X251bV9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDQ1IiwiZXJyb3Jfc291cmNlXzA2OCIsImVycm9yX3NvdXJjZV8xMDYiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDYiLCJpc19kc3RfMDA4IiwiYWJicnZfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIyIiwiZmllbGRfc2V4cF8wMTUkMyIsImZpZWxkX3NleHBfMDE1IiwiZmllbGRfc2V4cF8wMTUkMCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE4IiwiZmllbGRfc2V4cF8wMTUkMiIsImZ2YWx1ZV8wMTciLCJhYmJydl8wMTEiLCJpc19kc3RfMDA5IiwidXRjX29mZnNldF9pbl9zZWNvbmRzXzAwNyIsImFiYnJ2XzAyOSIsImlzX2RzdF8wMjciLCJ1dGNfb2Zmc2V0X2luX3NlY29uZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYXJnXzAyOCIsImJuZHNfMDI0JDAiLCJhcmdfMDI2IiwiYm5kc18wMjQkMSIsInZfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIiwidl9zZWNvbmRzIiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wMzMiLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMiLCJzZWNvbmRzXzAzNiIsImR1cGxpY2F0ZXNfMDM4IiwiZXh0cmFfMDM5Iiwic2V4cF8wMzIkMCIsImZpZWxkX3NleHBzXzA0MiIsImZpZWxkX25hbWVfMDQwIiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzA0MSQyIiwiZmllbGRfc2V4cF8wNDEiLCJmaWVsZF9zZXhwXzA0MSQwIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDQxJDEiLCJmdmFsdWVfMDQzIiwic2Vjb25kc18wMzciLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMkMCIsInNlY29uZHNfMDUyIiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzA1IiwiYXJnXzA1MyIsImJuZHNfMDQ5IiwiYXJnXzA1MSIsImJuZHNfMDQ5JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJzZXhwXzA1NSIsImZpZWxkX3NleHBzXzA1NiIsInN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcCIsIm5ld19yZWdpbWVfMDU5IiwiZHVwbGljYXRlc18wNjEiLCJleHRyYV8wNjIiLCJzZXhwXzA1NSQwIiwiZmllbGRfc2V4cHNfMDY1IiwiZmllbGRfbmFtZV8wNjMiLCJ0YWlsXzA3MCIsImZpZWxkX3NleHBfMDY0JDIiLCJmaWVsZF9zZXhwXzA2NCIsInhfMDcxIiwiZmllbGRfc2V4cF8wNjQkMCIsImZ2YWx1ZV8wNjciLCJmaWVsZF9zZXhwXzA2NCQxIiwiZnZhbHVlXzA2NiIsIm5ld19yZWdpbWVfMDYwIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwJDAiLCJuZXdfcmVnaW1lXzA3NSIsImFyZ18wNzYiLCJibmRzXzA3MiIsImFyZ18wNzQiLCJibmRzXzA3MiQwIiwidjUiLCJ2NyIsInY2Iiwidl9uYW1lIiwidl9vcmlnaW5hbF9maWxlbmFtZSIsInZfZGlnZXN0Iiwidl90cmFuc2l0aW9ucyIsInZfbGFzdF9yZWdpbWVfaW5kZXgiLCJ2X2RlZmF1bHRfbG9jYWxfdGltZV90eXBlIiwidl9sZWFwX3NlY29uZHMiLCJzZXhwXzA3OCIsImZpZWxkX3NleHBzXzA3OSIsIm5hbWVfMDgwIiwib3JpZ2luYWxfZmlsZW5hbWVfMDgyIiwiZGlnZXN0XzA4NCIsInRyYW5zaXRpb25zXzA4NiIsImxhc3RfcmVnaW1lX2luZGV4XzA4OCIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzA5MCIsImxlYXBfc2Vjb25kc18wOTIiLCJkdXBsaWNhdGVzXzA5NCIsImV4dHJhXzA5NSIsInNleHBfMDc4JDAiLCJmaWVsZF9zZXhwc18wOTgiLCJmaWVsZF9uYW1lXzA5NiIsInRhaWxfMTA4IiwiZmllbGRfc2V4cF8wOTckNyIsImZpZWxkX3NleHBfMDk3IiwiZmllbGRfc2V4cF8wOTckMCIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5NyQxIiwiZnZhbHVlXzEwNCIsImZpZWxkX3NleHBfMDk3JDIiLCJmdmFsdWVfMTA1IiwiZmllbGRfc2V4cF8wOTckMyIsImZ2YWx1ZV8wOTkiLCJmaWVsZF9zZXhwXzA5NyQ0IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDk3JDUiLCJmdmFsdWVfMTAzIiwiZmllbGRfc2V4cF8wOTckNiIsImZ2YWx1ZV8xMDAiLCJsZWFwX3NlY29uZHNfMDkzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDkxIiwibGFzdF9yZWdpbWVfaW5kZXhfMDg5IiwidHJhbnNpdGlvbnNfMDg3IiwiZGlnZXN0XzA4NSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzA4MyIsIm5hbWVfMDgxIiwidHJhbnNpdGlvbnNfMTE3IiwiZGlnZXN0XzExNSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzExMyIsIm5hbWVfMTExIiwibGFzdF9yZWdpbWVfaW5kZXhfMTE5IiwibGVhcF9zZWNvbmRzXzEyMyIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzEyMSIsImFyZ18xMjQiLCJibmRzXzExMCIsImFyZ18xMjIiLCJibmRzXzExMCQwIiwiYXJnXzEyMCIsImJuZHNfMTEwJDEiLCJhcmdfMTE4IiwiYm5kc18xMTAkMiIsImFyZ18xMTYiLCJibmRzXzExMCQzIiwiYXJnXzExNCIsImJuZHNfMTEwJDQiLCJhcmdfMTEyIiwiYm5kc18xMTAkNSIsIm9yaWdpbmFsX2ZpbGVuYW1lIiwiem9uZSIsImRpZ2VzdCIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kcyIsImlzX2RzdCIsImFiYnJ2X2luZGV4IiwiYWJicnYiLCJpbnB1dF90el9maWxlX2dlbiIsImlucHV0X3RyYW5zaXRpb24iLCJpbnB1dF9sZWFwX3NlY29uZCIsInV0Y19sb2NhbF9jb3VudCIsInN0ZF93YWxsX2NvdW50IiwibGVhcF9jb3VudCIsInRyYW5zaXRpb25fY291bnQiLCJ0eXBlX2NvdW50IiwiYWJicnZfY2hhcl9jb3VudCIsInRyYW5zaXRpb25fdGltZXMiLCJ0cmFuc2l0aW9uX2luZGljZXMiLCJyZWdpbWVzIiwicmF3X2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsImluZGV4ZWRfYWJicnZzIiwibGVhcF9zZWNvbmRzIiwicmVnaW1lcyQwIiwidGltZSIsInJlZ2ltZSIsInJhd190cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zIiwibHR0IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJyZXN0IiwibmV3X3JlZ2ltZSIsImlucHV0X2xlYXBfc2Vjb25kX2dlbiIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHMiLCJyZWFkX2hlYWRlciIsIm1hZ2ljIiwiYmFkX3ZlcnNpb24iLCJ2ZXJzaW9uIiwiaW5wdXRfdHpfZmlsZV92MSIsImlucHV0X3R6X2ZpbGUiLCJ6b25lbmFtZSIsInhfMTI1IiwibWFrZV96b25lIiwicmVhc29uIiwib2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIiwib2ZfdXRjX29mZnNldCIsImxpa2VseV9tYWNoaW5lX3pvbmVzIiwidXRjIiwicmVzZXRfdHJhbnNpdGlvbl9jYWNoZSIsImdldF9yZWdpbWVfZXhuIiwiZWZmZWN0aXZlX3N0YXJ0X3RpbWUiLCJtb2RlIiwiaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2VjIiwiaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2VjIiwiYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzIiwidHJhbnNpdGlvbiIsImluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2giLCJpbmRleCQwIiwiaW5kZXgkMSIsImluZGV4JDIiLCJpbmRleCQzIiwiaW5kZXgkNCIsIm9mX2ludDYzX3NlY29uZHMiLCJ0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXgiLCJvZl9zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3Bhbl9zaW5jZV9lcG9jaCIsIm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJpbmRleF9vZl9kYXRlX2FuZF9vZmRheSIsImluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IiwiaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF8iLCJhZnRlciIsImJlZm9yZSIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50XyIsImluZGV4X2FiYnJldmlhdGlvbl9leG4iLCJpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIiwicmF3IiwidmFsaWRhdGlvbl9mYWlsZWQiLCJhcmcyXzAwMyIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAwNiIsImNyZWF0ZV9leG4iLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwidHlwZV9pZDEiLCJ0eXBlX2lkMiIsIm5hbWVfb2Zfa2V5IiwidWlkX29mX2tleSIsInR5cGVfaWRfbmFtZSIsInR5cGVfaWRfdWlkIiwicGFja2VkIiwieF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm1lbV9ieV9pZCIsImlkIiwicmVtb3ZlX2J5X2lkIiwia2V5JDAiLCJjaGFuZ2VfZXhuIiwib3JpZyIsIm9mX2FfMDExIiwib2ZfYV8wMTIiLCJ4XzAxMyIsInhfMDE0Iiwib2ZfYV8wMTciLCJkZWZhdWx0JDAiLCJpZCQwIiwiaWQkMSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsInJhY2VfZnJlZV9jcmVhdGVfbG9vcCIsImNlbGwiLCJuZXdfeCIsImN1cnJlbnQiLCJpbW1lZGlhY3kiLCJhbGxvd2VkX2ludHMiLCJuZXZlcl93aXRoX25hbWUiLCJuZXZlciIsInVua25vd24iLCJvcHRpb24iLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsInJlZiIsInR1cGxlMiIsInR1cGxlMyIsInR1cGxlNCIsInR1cGxlNSIsImZ1bmN0aW9uJDAiLCJpbnQkMCIsInJlZiQwIiwiYXJyYXkkMCIsInR1cGxlMiQwIiwidHVwbGUzJDAiLCJ0dXBsZTQkMCIsInR1cGxlNSQwIiwiZnVuY3Rpb24kMSIsIm9wdGlvbiQwIiwibGlzdCQwIiwibGF6eV90IiwicG9zc2libHlfdW5ib3hlZCIsImNoaWxkX3R5cGUiLCJ0aGVfb25seV9maWVsZCIsInZhcmlhbnQiLCJ0YWciLCJtb3JlIiwibm8iLCJtb3JlX2FyZ19saXN0Iiwib25lX2FyZ19saXN0Iiwibm9fYXJnX2xpc3QiLCJub19hcmdfY291bnQiLCJoYXNoX3NldCIsInJlcXVpcmVkIiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzAzMCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwOCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczFfMDE1IiwiY3VycnkiLCJ1bmN1cnJ5IiwibWFwX2ZzdCIsIm1hcF9zbmQiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYl8wMjAiLCJvZl9jXzAyMSIsInNleHBfMDI5IiwiYXJnMl8wMjUiLCJyZXMwXzAyNiIsInJlczFfMDI3IiwicmVzMl8wMjgiLCJvZl9hXzAzMSIsIm9mX2JfMDMyIiwib2ZfY18wMzMiLCJhcmcyXzAzNiIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNyIsInJlczFfMDM4IiwicmVzMl8wMzkiLCJvZl9jIiwiY3VycnkkMCIsInVuY3VycnkkMCIsIm1hcF9mc3QkMCIsIm1hcF9zbmQkMCIsIm1hcF90cmQiLCJtYXAyJDAiLCJ6MiIsInoxIiwiZ2V0MyIsImNtcDMiLCJ6JDAiLCJjMSIsImMyIiwiZXEzIiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJhXzA1MSIsImJfMDUyIiwidF8wNTQiLCJ0XzA1MyIsInRfMDU2IiwidF8wNTUiLCJzZXhwXzA2MiIsImFyZzFfMDU5IiwiYXJnMF8wNTgiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwicmVzMF8wNjYiLCJyZXMxXzA2NyIsInMyIiwiczEiLCJzMiQwIiwiczEkMCIsIndlZWtkYXlzIiwid2Vla2VuZHMiLCJzaXplXzAxOCIsInJhbmRvbV8wMTkiLCJzaXplXzAxMiIsInJhbmRvbV8wMTMiLCJzaXplXzAxMCIsInJhbmRvbV8wMTEiLCJyYW5kb21fMDA5Iiwic2l6ZV8wMDYiLCJyYW5kb21fMDA3IiwiaGFzaF8wMDUiLCJoYXNoXzAwNSQwIiwiaGFzaF8wMDUkMSIsImhhc2hfMDA1JDIiLCJoYXNoXzAwNSQzIiwiaGFzaF8wMDUkNCIsImhhc2hfMDA1JDUiLCJoYXNoXzAwNSQ2IiwidG9fc3RyaW5nX2xvbmciLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwMyIsImN1c3RvbV9wcmludGZfMDA0IiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDIxIiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsImRheXNfaW5fbW9udGgiLCJpbnZhbGlkIiwibXNnIiwiZGF5c19pbl9tb250aCQwIiwidW5jaGVja2VkX3ZhbHVlIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJzZXhwXzAwNSQwIiwiZmllbGRfc2V4cHNfMDA2IiwieV8wMDciLCJtXzAwOSIsImRfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwNSIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjMiLCJmaWVsZF9zZXhwXzAxNiQzIiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNCIsImZpZWxkX3NleHBfMDE2JDAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZmllbGRfc2V4cF8wMTYkMiIsImRfMDEyIiwibV8wMTAiLCJ5XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInZhbHVlX2V4biIsInN5bWJvbCQ1IiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwib2ZfbXVsdCIsInRvX211bHQiLCJvZl9wZXJjZW50YWdlIiwidG9fcGVyY2VudGFnZSIsIm9mX2JwIiwidG9fYnAiLCJvZl9icF9pbnQiLCJ0b19icF9pbnQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWxfbXVsdCIsImRlY2ltYWxfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIiwicm91bmRfZGVjaW1hbF9icCIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiZXhwb25lbnQiLCJwcmVjaXNpb24iLCJleHBvbmVudF9FIiwiZGVjaW1hbCIsIm9jYW1sIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwieF9hYnMiLCJyZWFsbHlfb2Zfc3RyaW5nIiwiZmxvYXRfb2Zfc3RyaW5nIiwic3RyJDAiLCJzdHIkMSIsInN0ciQyIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImlzX3plcm8iLCJhcHBseSIsImlzX25hbiIsImlzX2luZiIsIm5lZyIsInNpZ25fZXhuIiwib2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIiwidF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIiwiZm9ybWF0JDAiLCJyYW5kb21pemUiLCJzcGFuIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJlcnJvcl9zb3VyY2VfMDMyIiwibiQyIiwibiQzIiwibiQ0Iiwic2lnbl8wMDYiLCJocl8wMDgiLCJtaW5fMDEwIiwic2VjXzAxMiIsIm1zXzAxNCIsInVzXzAxNiIsIm5zXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfc2V4cHNfMDI0IiwiZmllbGRfbmFtZV8wMjIiLCJ0YWlsXzAzNCIsImZpZWxkX3NleHBfMDIzJDciLCJmaWVsZF9zZXhwXzAyMyIsInhfMDM1IiwiZmllbGRfc2V4cF8wMjMkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAyMyQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDIzJDIiLCJmdmFsdWVfMDI4IiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZnZhbHVlXzAyNyIsImZpZWxkX3NleHBfMDIzJDUiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNiIsImZ2YWx1ZV8wMzAiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwibnNfMDQ5IiwidXNfMDQ3IiwibXNfMDQ1Iiwic2VjXzA0MyIsIm1pbl8wNDEiLCJocl8wMzkiLCJzaWduXzAzNyIsImFyZ18wNTAiLCJibmRzXzAzNiIsImFyZ18wNDgiLCJibmRzXzAzNiQwIiwiYXJnXzA0NiIsImJuZHNfMDM2JDEiLCJhcmdfMDQ0IiwiYm5kc18wMzYkMiIsImFyZ18wNDIiLCJibmRzXzAzNiQzIiwiYXJnXzA0MCIsImJuZHNfMDM2JDQiLCJhcmdfMDM4IiwiYm5kc18wMzYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50X3NlYyIsIm9mX2ludDMyX3NlY29uZHMiLCJvZl9taW4iLCJvZl9ociIsIm9mX2RheSIsImRpdmlkZV9ieV91bml0X29mX3RpbWUiLCJ1bml0X29mX3RpbWUiLCJzY2FsZV9ieV91bml0X29mX3RpbWUiLCJzdGgkMSIsInN0aCQyIiwic3RoJDMiLCJzdGgkNCIsInN0aCQ1Iiwic3RoJDYiLCJ0b19zaG9ydF9zdHJpbmciLCJ0X29mX3NleHBfdjFfdjIiLCJpc192MiIsInNleHBfb2ZfdF92MV92MiIsImFic190IiwidG9fdW5pdF9vZl90aW1lIiwib2ZfdW5pdF9vZl90aW1lIiwic3VmZml4X29mX3VuaXRfb2ZfdGltZSIsInBhcnNlX3N1ZmZpeCIsInVuaXRfb2ZfdGltZV9saXN0JDEiLCJ1bml0X29mX3RpbWVfbGlzdCIsInVuaXRfb2ZfdGltZV9saXN0JDAiLCJzdGF0ZV9pc19maW5hbCIsImludmFsaWRfc3RyaW5nJDAiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJzdGFydF9vZl9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJzJDAiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9pbnRfdXMiLCJvZl9pbnRfbXMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJvZl9pbnRfbnMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNpbmNlX3VuaXhfZXBvY2giLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJoYWxmX21pY3Jvc2Vjb25kIiwidG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwibWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwib2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3ZhbHVlX3JlcHJlc2VudGFibGUiLCJtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSIsImlzX2ludmFsaWQiLCJvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQiLCJzdWJfZXhuIiwidG9fc3RyaW5nX3dpdGhfdW5pdCIsInNpeHR5IiwidGhvdXNhbmQiLCJ1bml0JDAiLCJudW1fZGlnaXRzIiwidG9fbWljcm9zZWNvbmRfc3RyaW5nIiwiZXZlcnkiLCJzdGFydCQxIiwidG9faW50NjNfbnNfc2luY2VfZXBvY2giLCJvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCIsIm92ZXJmbG93IiwiYWRkX292ZXJmbG93ZWQiLCJzdWJfb3ZlcmZsb3dlZCIsImFkZF9zYXR1cmF0aW5nIiwic3ViX3NhdHVyYXRpbmciLCJ0b19pbnRfbnNfc2luY2VfZXBvY2giLCJvZl9pbnRfbnNfc2luY2VfZXBvY2giLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJ0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJuc19zaW5jZV9lcG9jaCIsIm5zX3Blcl9kYXkiLCJhcHByb3hfZGF5c19mcm9tX2Vwb2NoIiwibnNfc2luY2Vfc3RhcnRfb2ZfZGF5Iiwic3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJzcGFuX2luX2RheXNfc2luY2VfZXBvY2giLCJzcGFuX3NpbmNlX2Vwb2NoIiwidHdvX2RpZ2l0X29mX3N0cmluZyIsIm5zX29mXzEwMF9tcyIsIm5zX29mXzEwX21zIiwibnNfb2ZfMV9tcyIsIm5zX29mXzEwMF91cyIsIm5zX29mXzEwX3VzIiwibnNfb2ZfMV91cyIsIm5zX29mXzEwMF9ucyIsIm5zX29mXzEwX25zIiwibnNfb2ZfMV9ucyIsInNlY29uZHNfc3BhbiIsInN1Yl9zZWNvbmRfc3BhbiIsIm9mZGF5X3N0cmluZ193aXRoX3pvbmUiLCJkYXRlX3N0cmluZyIsIm9mZGF5X3N0cmluZyIsInN1ZmZpeF9sZW4iLCJzZWNvbmRzX3N0cmluZyIsInN1Yl9zZWNvbmRfc3RyaW5nIiwic19zdHJpbmciLCJtX3N0cmluZyIsImhfc3RyaW5nIiwibXVsdGlwbGllciIsImRheXNfZnJvbV9lcG9jaCQwIiwiZGF5c19mcm9tX2Vwb2NoX2luX25zIiwiYXR0ZW1wdCIsInNwYW5fb2ZfZHVyYXRpb24iLCJ0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQiLCJkdXJhdGlvbnMiLCJzcGFucyIsInN0cmluZ19ieXRlcyIsInNyY19wb3MiLCJzcmNfbGVuIiwiZHN0X3BvcyIsInNyY19wb3MkMCIsImJ5dGVzX2J5dGVzIiwic3RyaW5nX2JpZ3N0cmluZyIsImJ5dGVzX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19iaWdzdHJpbmciLCJiaWdzdHJpbmdfc3RyaW5nIiwiYmlnc3RyaW5nX2J5dGVzIiwic2l6ZV8wMDkiLCJyYW5kb21fMDEwIiwic2l6ZV8wMDciLCJoYXNoXzAwOCIsImhhc2hfMDA4JDAiLCJoYXNoXzAwOCQxIiwiaGFzaF8wMDgkMiIsImJhc2VfbGVuIiwiZ2V0X25vX2JvdW5kc19jaGVjayIsImZvbGRpJDAiLCJ3cmFwX3N1Yl9uIiwib25fZXJyb3IiLCJibGl0X3RvIiwiYmxpdF90b19zdHJpbmciLCJibGl0X3RvX2J5dGVzIiwiYmxpdF90b19iaWdzdHJpbmciLCJibGl0X2Jhc2UiLCJibGl0X2Zyb20iLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2JpZ3N0cmluZyIsIm9mX2Jhc2UiLCJjb25jYXRfZ2VuIiwiY3JlYXRlX2RzdCIsImJsaXRfZHN0IiwidHMiLCJjb25jYXRfc3RyaW5nIiwiY29uY2F0X2JpZ3N0cmluZyIsInNvcnRfYW5kX2FsaWduIiwiY2hlY2tfc3VmZml4IiwiY2hvcF9leHRlbnNpb24iLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAxIiwicDIiLCJzJDEiLCJzJDIiLCJ0b19hYnNvbHV0ZV9leG4iLCJyZWxhdGl2ZV90byIsIm1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSIsImlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCIsInNwbGl0X2V4dGVuc2lvbiIsImZuIiwiZm4kMCIsImZuJDEiLCJkaXIiLCJleHQiLCJiYXNlX2ZuIiwiZXh0JDAiLCJmbiQyIiwiZGlyJDAiLCJmbiQzIiwicGFydHMiLCJmaWxlbmFtZSQwIiwiZmlsZW5hbWUkMSIsIm9mX2Fic29sdXRlX2V4biIsImFfcGFydHMiLCJiX3BhcnRzIiwiYV9zdWZmaXgiLCJiX3N1ZmZpeCIsImgyIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJmbGFnX25hbWUiLCJlcnJvcl9zb3VyY2VfMDE3IiwiZXJyb3Jfc291cmNlXzA2MiIsImVycm9yX3NvdXJjZV8wOTkiLCJlcnJvcl9zb3VyY2VfMTM2IiwiZXJyb3Jfc291cmNlXzE3MSIsImVycm9yX3NvdXJjZV8yMTgiLCJlcnJvcl9zb3VyY2VfMjY5IiwiZXJyb3Jfc291cmNlXzMxOSIsImVycm9yX3NvdXJjZV8zNTYiLCJlcnJvcl9zb3VyY2VfMzg4IiwiZXJyb3Jfc291cmNlXzQxNSIsImVycm9yX3NvdXJjZV80NDQiLCJlcnJvcl9zb3VyY2VfNDc2IiwiZXJyb3Jfc291cmNlXzUwMSIsImVycm9yX3NvdXJjZV81MjYiLCJlcnJvcl9zb3VyY2VfNTY1IiwiZXJyb3Jfc291cmNlXzYxMCIsImVudW1lcmF0ZV82MjgiLCJlbnVtZXJhdGVfNjI5IiwibWF5YmVfbWlzc2luZ19wcmVmaXgiLCJtYXliZV9taXNzaW5nX3N1ZmZpeCIsIm1heWJlX21vcmVfc3VmZml4IiwibmFtZXMkMCIsImVycm9yX3NvdXJjZV82NjkiLCJpbmRlbnRhdGlvbiIsInNwYWNpbmdfZG90IiwibmFtZXMkMSIsImVycm9yX3NvdXJjZV83MDgiLCJuYW1lcyQyIiwiZXJyb3Jfc291cmNlXzc1NyIsIm5hbWVzJDMiLCJlcnJvcl9zb3VyY2VfODA3IiwiZXJyb3Jfc291cmNlXzgzOCIsImFfMDAxJDAiLCJiXzAwMiQwIiwidGFnXzAyMCIsInNleHBfYXJnc18wNDEiLCJhcmcwXzA0MiIsInNleHBfYXJnc18wMzYiLCJyZXMwXzAzOCIsInNleHBfYXJnc18wMjYiLCJzZXhwX2FyZ3NfMDMxIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzA0NCIsInJlczBfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwidXNhZ2UiLCJ1c2FnZSQwIiwidXNhZ2UkMSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1OCIsImJfMDU5Iiwic2V4cF8wNjQiLCJ0YWdfMDY1Iiwic2V4cF9hcmdzXzA2NiIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsImFyZzBfMDc0IiwicmVzMF8wNzUiLCJhcmcwXzA3NiIsInJlczBfMDc3Iiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJhXzA3OCIsImJfMDc5IiwiYV8wODAiLCJiXzA4MSIsInNleHBfMDgzIiwiZmllbGRfc2V4cHNfMDg0IiwibmFtZV8wODUiLCJkb2NfMDg3IiwiYWxpYXNlc18wODkiLCJkdXBsaWNhdGVzXzA5MSIsImV4dHJhXzA5MiIsInNleHBfMDgzJDAiLCJmaWVsZF9zZXhwc18wOTUiLCJmaWVsZF9uYW1lXzA5MyIsInRhaWxfMTAxIiwiZmllbGRfc2V4cF8wOTQkMyIsImZpZWxkX3NleHBfMDk0IiwieF8xMDIiLCJmaWVsZF9zZXhwXzA5NCQwIiwiZnZhbHVlXzA5OCIsImZpZWxkX3NleHBfMDk0JDEiLCJmdmFsdWVfMDk3IiwiZmllbGRfc2V4cF8wOTQkMiIsImZ2YWx1ZV8wOTYiLCJhbGlhc2VzXzA5MCIsImRvY18wODgiLCJuYW1lXzA4NiIsImFsaWFzZXNfMTA4IiwiZG9jXzEwNiIsIm5hbWVfMTA0IiwiYXJnXzEwOSIsImJuZHNfMTAzIiwiYXJnXzEwNyIsImJuZHNfMTAzJDAiLCJhcmdfMTA1IiwiYm5kc18xMDMkMSIsInZfc3VtbWFyeSIsInZfcmVhZG1lIiwidl9hbm9ucyIsInZfZmxhZ3MiLCJhXzExMCIsImJfMTExIiwiYV8xMTIiLCJiXzExMyIsInNleHBfMTE3IiwiZmllbGRfc2V4cHNfMTE4Iiwic3VtbWFyeV8xMTkiLCJyZWFkbWVfMTIxIiwiYW5vbnNfMTIzIiwiZmxhZ3NfMTI1IiwiZHVwbGljYXRlc18xMjciLCJleHRyYV8xMjgiLCJzZXhwXzExNyQwIiwiZmllbGRfc2V4cHNfMTMxIiwiZmllbGRfbmFtZV8xMjkiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMwJDQiLCJmaWVsZF9zZXhwXzEzMCIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzAkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMCQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMwJDIiLCJmdmFsdWVfMTMyIiwiZmllbGRfc2V4cF8xMzAkMyIsImZ2YWx1ZV8xMzMiLCJyZWFkbWVfMTIyIiwiZmxhZ3NfMTI2IiwiYW5vbnNfMTI0Iiwic3VtbWFyeV8xMjAiLCJmbGFnc18xNDkiLCJhbm9uc18xNDciLCJyZWFkbWVfMTQzIiwic3VtbWFyeV8xNDEiLCJhcmdfMTUwIiwiYm5kc18xNDAiLCJhcmdfMTQ4IiwiYm5kc18xNDAkMCIsInZfMTQ0IiwiYXJnXzE0NiIsImJuZF8xNDUiLCJibmRzXzE0MCQxIiwiYXJnXzE0MiIsImJuZHNfMTQwJDIiLCJiaW5fc2hhcGVfYSIsInZfc3ViY29tbWFuZHMiLCJhXzE4NiIsImJfMTg3IiwiYV8xODgiLCJiXzE4OSIsImFfMTkwIiwiYl8xOTEiLCJhXzE5MiIsImJfMTkzIiwidF8xOTUiLCJ0XzE5NCIsInRfMTk3IiwidF8xOTYiLCJvZl9hXzE5OCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwic3VtbWFyeV8yMDIiLCJyZWFkbWVfMjA0Iiwic3ViY29tbWFuZHNfMjA2IiwiZHVwbGljYXRlc18yMDgiLCJleHRyYV8yMDkiLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEyIiwiZmllbGRfbmFtZV8yMTAiLCJ0YWlsXzIyMyIsImZpZWxkX3NleHBfMjExJDMiLCJmaWVsZF9zZXhwXzIxMSIsInhfMjI0IiwiZmllbGRfc2V4cF8yMTEkMCIsImZ2YWx1ZV8yMjEiLCJmaWVsZF9zZXhwXzIxMSQxIiwic2V4cF8yMTciLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImZ2YWx1ZV8yMTkiLCJmaWVsZF9zZXhwXzIxMSQyIiwiZnZhbHVlXzIyMCIsInJlYWRtZV8yMDUiLCJzdWJjb21tYW5kc18yMDciLCJzdW1tYXJ5XzIwMyIsIm9mX2FfMjI1Iiwic3ViY29tbWFuZHNfMjMzIiwicmVhZG1lXzIyOSIsInN1bW1hcnlfMjI3IiwiYm5kc18yMjYiLCJhcmcxXzIzNiIsImFyZzBfMjM1IiwicmVzMF8yMzciLCJyZXMxXzIzOCIsImFyZ18yMzQiLCJibmRzXzIyNiQwIiwidl8yMzAiLCJhcmdfMjMyIiwiYm5kXzIzMSIsImJuZHNfMjI2JDEiLCJhcmdfMjI4IiwiYm5kc18yMjYkMiIsIm9mX2FfMjQ5Iiwic2V4cF8yNTEiLCJmaWVsZF9zZXhwc18yNTIiLCJzdW1tYXJ5XzI1MyIsInJlYWRtZV8yNTUiLCJzdWJjb21tYW5kc18yNTciLCJkdXBsaWNhdGVzXzI1OSIsImV4dHJhXzI2MCIsInNleHBfMjUxJDAiLCJmaWVsZF9zZXhwc18yNjMiLCJmaWVsZF9uYW1lXzI2MSIsInRhaWxfMjc0IiwiZmllbGRfc2V4cF8yNjIkMyIsImZpZWxkX3NleHBfMjYyIiwieF8yNzUiLCJmaWVsZF9zZXhwXzI2MiQwIiwiZnZhbHVlXzI3MiIsImZpZWxkX3NleHBfMjYyJDEiLCJzZXhwXzI2OCIsImFyZzFfMjY1IiwiYXJnMF8yNjQiLCJyZXMwXzI2NiIsInJlczFfMjY3IiwiZnZhbHVlXzI3MCIsImZpZWxkX3NleHBfMjYyJDIiLCJmdmFsdWVfMjcxIiwicmVhZG1lXzI1NiIsInN1YmNvbW1hbmRzXzI1OCIsInN1bW1hcnlfMjU0Iiwib2ZfYV8yNzYiLCJzdWJjb21tYW5kc18yODQiLCJyZWFkbWVfMjgwIiwic3VtbWFyeV8yNzgiLCJibmRzXzI3NyIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInJlczFfMjg5IiwiYXJnXzI4NSIsImJuZHNfMjc3JDAiLCJ2XzI4MSIsImFyZ18yODMiLCJibmRfMjgyIiwiYm5kc18yNzckMSIsImFyZ18yNzkiLCJibmRzXzI3NyQyIiwidG9fbGF0ZXN0Iiwic3ViY29tbWFuZHMiLCJyZWFkbWUiLCJzdW1tYXJ5Iiwib2ZfbGF0ZXN0IiwiYWJzX3BhdGgiLCJ2X3dvcmtpbmdfZGlyIiwidl9wYXRoX3RvX2V4ZSIsInZfY2hpbGRfc3ViY29tbWFuZCIsImFfMjkwIiwiYl8yOTEiLCJhXzI5MiIsImJfMjkzIiwiYV8yOTQiLCJiXzI5NSIsInNleHBfMjk3IiwiZmllbGRfc2V4cHNfMjk4Iiwic3VtbWFyeV8yOTkiLCJyZWFkbWVfMzAxIiwid29ya2luZ19kaXJfMzAzIiwicGF0aF90b19leGVfMzA1IiwiY2hpbGRfc3ViY29tbWFuZF8zMDciLCJkdXBsaWNhdGVzXzMwOSIsImV4dHJhXzMxMCIsInNleHBfMjk3JDAiLCJmaWVsZF9zZXhwc18zMTMiLCJmaWVsZF9uYW1lXzMxMSIsInRhaWxfMzIxIiwiZmllbGRfc2V4cF8zMTIkNSIsImZpZWxkX3NleHBfMzEyIiwieF8zMjIiLCJmaWVsZF9zZXhwXzMxMiQwIiwiZnZhbHVlXzMxNiIsImZpZWxkX3NleHBfMzEyJDEiLCJmdmFsdWVfMzE4IiwiZmllbGRfc2V4cF8zMTIkMiIsImZ2YWx1ZV8zMTciLCJmaWVsZF9zZXhwXzMxMiQzIiwiZnZhbHVlXzMxNSIsImZpZWxkX3NleHBfMzEyJDQiLCJmdmFsdWVfMzE0IiwicmVhZG1lXzMwMiIsImNoaWxkX3N1YmNvbW1hbmRfMzA4IiwicGF0aF90b19leGVfMzA2Iiwid29ya2luZ19kaXJfMzA0Iiwic3VtbWFyeV8zMDAiLCJjaGlsZF9zdWJjb21tYW5kXzMzNCIsInBhdGhfdG9fZXhlXzMzMiIsIndvcmtpbmdfZGlyXzMzMCIsInJlYWRtZV8zMjYiLCJzdW1tYXJ5XzMyNCIsImFyZ18zMzUiLCJibmRzXzMyMyIsImFyZ18zMzMiLCJibmRzXzMyMyQwIiwiYXJnXzMzMSIsImJuZHNfMzIzJDEiLCJ2XzMyNyIsImFyZ18zMjkiLCJibmRfMzI4IiwiYm5kc18zMjMkMiIsImFyZ18zMjUiLCJibmRzXzMyMyQzIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImJpbl9zaGFwZV90JDciLCJ0b192MyIsIm9mX3YzIiwidG9fbGF0ZXN0JDEiLCJvZl9sYXRlc3QkMSIsImJpbl9zaGFwZV90JDgiLCJ0b192MiIsIm9mX3YyIiwidG9fbGF0ZXN0JDIiLCJvZl9sYXRlc3QkMiIsImJpbl9zaGFwZV90JDkiLCJhXzQwMSIsImJfNDAyIiwiYV80MDEkMCIsImJfNDAyJDAiLCJhXzQwMyIsImJfNDA0IiwiYV80MDUiLCJiXzQwNiIsImFfNDA3IiwiYl80MDgiLCJhXzQxMSIsImFfNDA5IiwiYl80MTIiLCJiXzQxMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF80MTciLCJ0YWdfNDE4Iiwic2V4cF9hcmdzXzQyNCIsImFyZzBfNDI1IiwicmVzMF80MjYiLCJzZXhwX2FyZ3NfNDI5IiwiYXJnMV80MzEiLCJhcmcwXzQzMCIsInJlczBfNDMyIiwicmVzMV80MzMiLCJzZXhwX2FyZ3NfNDE5IiwiYXJnMF80MjAiLCJyZXMwXzQyMSIsImFyZzBfNDM0IiwicmVzMF80MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3IiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJiaW5fc2hhcGVfdCQxMCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF80NDYiLCJ0YWdfNDQ3Iiwic2V4cF9hcmdzXzQ2MyIsImFyZzBfNDY0IiwicmVzMF80NjUiLCJzZXhwX2FyZ3NfNDUzIiwiYXJnMF80NTQiLCJyZXMwXzQ1NSIsInNleHBfYXJnc180NTgiLCJhcmcwXzQ1OSIsInJlczBfNDYwIiwic2V4cF9hcmdzXzQ0OCIsImFyZzBfNDQ5IiwicmVzMF80NTAiLCJzZXhwX29mX3QkNyIsImFyZzBfNDY2IiwicmVzMF80NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJiaW5fc2hhcGVfdCQxMSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF80NzgiLCJ0YWdfNDc5Iiwic2V4cF9hcmdzXzQ4NSIsImFyZzBfNDg2IiwicmVzMF80ODciLCJzZXhwX2FyZ3NfNDkwIiwiYXJnMF80OTEiLCJyZXMwXzQ5MiIsImZpZWxkX3NleHBzXzMzOCIsInN1bW1hcnlfMzM5IiwicmVhZG1lXzM0MSIsIndvcmtpbmdfZGlyXzM0MyIsInBhdGhfdG9fZXhlXzM0NSIsImR1cGxpY2F0ZXNfMzQ3IiwiZXh0cmFfMzQ4Iiwic2V4cF8zMzciLCJmaWVsZF9zZXhwc18zNTEiLCJmaWVsZF9uYW1lXzM0OSIsInRhaWxfMzU4IiwiZmllbGRfc2V4cF8zNTAkNCIsImZpZWxkX3NleHBfMzUwIiwieF8zNTkiLCJmaWVsZF9zZXhwXzM1MCQwIiwiZnZhbHVlXzM1MyIsImZpZWxkX3NleHBfMzUwJDEiLCJmdmFsdWVfMzU1IiwiZmllbGRfc2V4cF8zNTAkMiIsImZ2YWx1ZV8zNTQiLCJmaWVsZF9zZXhwXzM1MCQzIiwiZnZhbHVlXzM1MiIsInJlYWRtZV8zNDIiLCJwYXRoX3RvX2V4ZV8zNDYiLCJ3b3JraW5nX2Rpcl8zNDQiLCJzdW1tYXJ5XzM0MCIsInNleHBfYXJnc180ODAiLCJhcmcwXzQ4MSIsInJlczBfNDgyIiwic2V4cF9vZl90JDgiLCJhcmcwXzQ5MyIsInJlczBfNDk0IiwiYXJnMF80OTUiLCJyZXMwXzQ5NiIsImFyZzBfNDk3IiwicGF0aF90b19leGVfMzY5Iiwid29ya2luZ19kaXJfMzY3IiwicmVhZG1lXzM2MyIsInN1bW1hcnlfMzYxIiwiYXJnXzM3MCIsImJuZHNfMzYwIiwiYXJnXzM2OCIsImJuZHNfMzYwJDAiLCJ2XzM2NCIsImFyZ18zNjYiLCJibmRfMzY1IiwiYm5kc18zNjAkMSIsImFyZ18zNjIiLCJibmRzXzM2MCQyIiwicmVzMF80OTgiLCJ0b19sYXRlc3QkMyIsImciLCJvZl9sYXRlc3QkMyIsInRodW5rIiwiYmluX3NoYXBlX3QkMTIiLCJ0X29mX3NleHAkMTAiLCJzZXhwXzUwMyIsInRhZ181MDQiLCJzZXhwX2FyZ3NfNTEwIiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsInNleHBfYXJnc181MTUiLCJhcmcwXzUxNiIsInJlczBfNTE3IiwiZmllbGRfc2V4cHNfMzczIiwic3VtbWFyeV8zNzQiLCJyZWFkbWVfMzc2IiwicGF0aF90b19leGVfMzc4IiwiZHVwbGljYXRlc18zODAiLCJleHRyYV8zODEiLCJzZXhwXzM3MiIsImZpZWxkX3NleHBzXzM4NCIsImZpZWxkX25hbWVfMzgyIiwidGFpbF8zOTAiLCJmaWVsZF9zZXhwXzM4MyQzIiwiZmllbGRfc2V4cF8zODMiLCJ4XzM5MSIsImZpZWxkX3NleHBfMzgzJDAiLCJmdmFsdWVfMzg3IiwiZmllbGRfc2V4cF8zODMkMSIsImZ2YWx1ZV8zODYiLCJmaWVsZF9zZXhwXzM4MyQyIiwiZnZhbHVlXzM4NSIsInJlYWRtZV8zNzciLCJwYXRoX3RvX2V4ZV8zNzkiLCJzdW1tYXJ5XzM3NSIsInNleHBfYXJnc181MDUiLCJhcmcwXzUwNiIsInJlczBfNTA3IiwiZmllbGRfc2V4cHNfMTUzIiwic3VtbWFyeV8xNTQiLCJyZWFkbWVfMTU2IiwidXNhZ2VfMTU4IiwiZmxhZ3NfMTYwIiwiZHVwbGljYXRlc18xNjIiLCJleHRyYV8xNjMiLCJzZXhwXzE1MiIsImZpZWxkX3NleHBzXzE2NiIsImZpZWxkX25hbWVfMTY0IiwidGFpbF8xNzMiLCJmaWVsZF9zZXhwXzE2NSQ0IiwiZmllbGRfc2V4cF8xNjUiLCJmaWVsZF9zZXhwXzE2NSQwIiwiZnZhbHVlXzE2OCIsImZpZWxkX3NleHBfMTY1JDEiLCJmdmFsdWVfMTcwIiwiZmllbGRfc2V4cF8xNjUkMiIsImZ2YWx1ZV8xNjkiLCJmaWVsZF9zZXhwXzE2NSQzIiwiZnZhbHVlXzE2NyIsInJlYWRtZV8xNTciLCJmbGFnc18xNjEiLCJ1c2FnZV8xNTkiLCJzdW1tYXJ5XzE1NSIsInNleHBfb2ZfdCQ5IiwiYXJnMF81MTgiLCJmbGFnc18xODQiLCJ1c2FnZV8xODIiLCJyZWFkbWVfMTc4Iiwic3VtbWFyeV8xNzYiLCJhcmdfMTg1IiwiYm5kc18xNzUiLCJhcmdfMTgzIiwiYm5kc18xNzUkMCIsInZfMTc5IiwiYXJnXzE4MSIsImJuZF8xODAiLCJibmRzXzE3NSQxIiwiYXJnXzE3NyIsImJuZHNfMTc1JDIiLCJyZXMwXzUxOSIsImFyZzBfNTIwIiwicmVzMF81MjEiLCJhcmcwXzUyMiIsInBhdGhfdG9fZXhlXzM5OSIsInJlYWRtZV8zOTUiLCJzdW1tYXJ5XzM5MyIsImFyZ180MDAiLCJibmRzXzM5MiIsInZfMzk2IiwiYXJnXzM5OCIsImJuZF8zOTciLCJibmRzXzM5MiQwIiwiYXJnXzM5NCIsImJuZHNfMzkyJDEiLCJyZXMwXzUyMyIsInRvX2xhdGVzdCQ0IiwiZmxhZ3MiLCJvZl9sYXRlc3QkNCIsImFub25zIiwiYmluX3NoYXBlX3QkMTMiLCJ0X29mX3NleHAkMTEiLCJzZXhwXzUyOCIsInRhZ181MjkiLCJzZXhwX2FyZ3NfNTQwIiwiYXJnMF81NDEiLCJyZXMwXzU0MiIsInNleHBfYXJnc181MzUiLCJhcmcwXzUzNiIsInJlczBfNTM3Iiwic2V4cF9hcmdzXzUzMCIsImFyZzBfNTMxIiwicmVzMF81MzIiLCJzZXhwX29mX3QkMTAiLCJhcmcwXzU0MyIsInJlczBfNTQ0IiwiYXJnMF81NDUiLCJyZXMwXzU0NiIsImFyZzBfNTQ3IiwicmVzMF81NDgiLCJvZl92ZXJzaW9uZWQiLCJncm91cCQxNSIsImJpbl9zaGFwZV90JDE0IiwiY29tcGFyZSQ2IiwiYV81NDkiLCJiXzU1MCIsImFfNTQ5JDAiLCJiXzU1MCQwIiwiYV81NTEiLCJiXzU1MiIsImFfNTUzIiwiYl81NTQiLCJhXzU1NSIsImJfNTU2IiwiYV81NTciLCJiXzU1OCIsImFfNTU5IiwiYl81NjAiLCJhXzU2MSIsImJfNTYyIiwidF9vZl9zZXhwJDEyIiwic2V4cF81NjciLCJ0YWdfNTY4Iiwic2V4cF9hcmdzXzU4OSIsImFyZzBfNTkwIiwicmVzMF81OTEiLCJzZXhwX2FyZ3NfNTg0IiwiYXJnMF81ODUiLCJyZXMwXzU4NiIsInNleHBfYXJnc181NzQiLCJhcmcwXzU3NSIsInJlczBfNTc2Iiwic2V4cF9hcmdzXzU3OSIsImFyZzBfNTgwIiwicmVzMF81ODEiLCJzZXhwX2FyZ3NfNTY5IiwiYXJnMF81NzAiLCJyZXMwXzU3MSIsInNleHBfb2ZfdCQxMSIsImFyZzBfNTkyIiwicmVzMF81OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1IiwiYXJnMF81OTYiLCJyZXMwXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJhcmcwXzYwMCIsInJlczBfNjAxIiwiZ3JvdXAkMTYiLCJiaW5fc2hhcGVfdCQxNSIsImNvbXBhcmUkNyIsImFfNjAyIiwiYl82MDMiLCJhXzYwNCIsImJfNjA1IiwiYV82MDYiLCJiXzYwNyIsInNleHBfb2ZfdCQxMiIsImFyZzBfNjIyIiwicmVzMF82MjMiLCJhcmcwXzYyNCIsInJlczBfNjI1IiwiY29tcGFyZSQ4IiwiYV82MjYiLCJiXzYyNyIsImVudW1lcmF0ZV82MzIiLCJlbnVtZXJhdGVfNjMzIiwiZW51bWVyYXRlXzYzMSIsImVudW1lcmF0ZV82MzQiLCJlbnVtZXJhdGVfNjMwIiwiZW51bWVyYXRlXzYzNCQwIiwiYXRfbW9zdF9vbmNlIiwiYXRfbGVhc3Rfb25jZSIsImF0X21vc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZV9mdW4iLCJhdF9tb3N0X29uY2VfZnVuIiwiYXRfbGVhc3Rfb25jZV9nZW4iLCJhdF9tb3N0X29uY2VfZ2VuIiwic2V4cF9vZl90JDEzIiwiYXRfbW9zdF9vbmNlXzYzOCIsImF0X2xlYXN0X29uY2VfNjM2IiwiYXJnXzYzOSIsImJuZHNfNjM1IiwiYXJnXzYzNyIsImJuZHNfNjM1JDAiLCJ0b19oZWxwX3N0cmluZyIsImRlc2NyaXB0aW9uIiwib2ZfaGVscF9zdHJpbmciLCJ4XzY0MCIsImZsYWdfbmFtZSQwIiwieF82NDEiLCJncm91cCQxNyIsImJpbl9zaGFwZV90JDE2IiwiYmluX3NpemVfdCQ3IiwiYmluX3dyaXRlX3QkNyIsImJpbl93cml0ZXJfdCQ2IiwiYmluX3JlYWRfdCQxNCIsImJpbl9yZWFkX3QkMTUiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl90JDYiLCJjb21wYXJlJDkiLCJhXzY0OCIsImJfNjQ5IiwiYV82NTAiLCJiXzY1MSIsImFsaWFzZXMiLCJkb2MiLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJhbGlhc2VzX2dlbiIsIm1hcF9wb2x5JDAiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxMyIsInNleHBfNjUzIiwiZmllbGRfc2V4cHNfNjU0IiwibmFtZV82NTUiLCJkb2NfNjU3IiwiYWxpYXNlc182NTkiLCJkdXBsaWNhdGVzXzY2MSIsImV4dHJhXzY2MiIsInNleHBfNjUzJDAiLCJmaWVsZF9zZXhwc182NjUiLCJmaWVsZF9uYW1lXzY2MyIsInRhaWxfNjcxIiwiZmllbGRfc2V4cF82NjQkMyIsImZpZWxkX3NleHBfNjY0IiwieF82NzIiLCJmaWVsZF9zZXhwXzY2NCQwIiwiZnZhbHVlXzY2OCIsImZpZWxkX3NleHBfNjY0JDEiLCJmdmFsdWVfNjY3IiwiZmllbGRfc2V4cF82NjQkMiIsImZ2YWx1ZV82NjYiLCJhbGlhc2VzXzY2MCIsImRvY182NTgiLCJuYW1lXzY1NiIsInNleHBfb2ZfdCQxNCIsImFsaWFzZXNfNjc4IiwiZG9jXzY3NiIsIm5hbWVfNjc0IiwiYXJnXzY3OSIsImJuZHNfNjczIiwiYXJnXzY3NyIsImJuZHNfNjczJDAiLCJhcmdfNjc1IiwiYm5kc182NzMkMSIsInBhcnNlX25hbWUiLCJudW1fb2NjdXJyZW5jZXMiLCJyZXF1aXJlc19hcmciLCJoZWxwX3NjcmVlbl9jb21wYXJlIiwid29yZF93cmFwX2FuZF9zdHJpcCIsIndpZHRoIiwiY2h1bmtzIiwid29yZCIsIndvcmRzIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4Iiwic2xhY2siLCJpbmRlbnRfYW5kX25ld2xpbmUiLCJsaHNfcGFkIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImZsYWciLCJmbGFnX25hbWVfd2l0aF9hbGlhc2VzIiwiZG9jdW1lbnRhdGlvbiIsImZsYWdfd2lkdGgiLCJmbGFnX29uX2l0c19vd25fbGluZSIsIndyYXBwZWRfZG9jdW1lbnRhdGlvbiIsImRvY193cmFwcGVkX3Jlc3RfbGluZXMiLCJkb2Nfd3JhcHBlZF9maXJzdF9saW5lIiwid3JhcHBlZF9kb2NfbGluZXMiLCJwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV8iLCJsb29rdXBfZXhwYW5kIiwia2V5X3R5cGUiLCJpc19kYXNoIiwiYWxpc3QkMCIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzY4MCIsIm1hdGNoaW5nX2tleXMiLCJjdXN0b21fcHJpbnRmXzY4MSIsImdyb3VwJDE4IiwiYmluX3NoYXBlX3QkMTciLCJiaW5fc2l6ZV90JDgiLCJiaW5fd3JpdGVfdCQ4IiwiYmluX3dyaXRlcl90JDciLCJiaW5fcmVhZF90JDE2IiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsImNvbXBhcmUkMTAiLCJhXzY4MiIsImJfNjgzIiwiYV82ODQiLCJiXzY4NSIsImFfNjg2IiwiYl82ODciLCJmbGFncyQwIiwiYW5vbnMkMCIsInJlYWRtZSQwIiwic3VtbWFyeSQwIiwibWFrZV9jcmVhdG9yJDEiLCJzdW1tYXJ5X2Z1biIsInJlYWRtZV9mdW4iLCJhbm9uc19mdW4iLCJmbGFnc19mdW4iLCJzdW1tYXJ5X2dlbiIsInJlYWRtZV9nZW4iLCJhbm9uc19nZW4iLCJmbGFnc19nZW4iLCJtYXAkNSIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDYiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJ0X29mX3NleHAkMTQiLCJzZXhwXzY4OSIsImZpZWxkX3NleHBzXzY5MCIsInN1bW1hcnlfNjkxIiwicmVhZG1lXzY5MyIsImFub25zXzY5NSIsImZsYWdzXzY5NyIsImR1cGxpY2F0ZXNfNjk5IiwiZXh0cmFfNzAwIiwic2V4cF82ODkkMCIsImZpZWxkX3NleHBzXzcwMyIsImZpZWxkX25hbWVfNzAxIiwidGFpbF83MTAiLCJmaWVsZF9zZXhwXzcwMiQ0IiwiZmllbGRfc2V4cF83MDIiLCJ4XzcxMSIsImZpZWxkX3NleHBfNzAyJDAiLCJmdmFsdWVfNzA3IiwiZmllbGRfc2V4cF83MDIkMSIsImZ2YWx1ZV83MDYiLCJmaWVsZF9zZXhwXzcwMiQyIiwiZnZhbHVlXzcwNCIsImZpZWxkX3NleHBfNzAyJDMiLCJmdmFsdWVfNzA1IiwidGFnXzYxMyIsInNleHBfYXJnc182MTQiLCJhcmcwXzYxNSIsInJlczBfNjE2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJyZWFkbWVfNjk0IiwiZmxhZ3NfNjk4IiwiYW5vbnNfNjk2Iiwic3VtbWFyeV82OTIiLCJzZXhwX29mX3QkMTUiLCJmbGFnc183MjEiLCJhbm9uc183MTkiLCJyZWFkbWVfNzE1Iiwic3VtbWFyeV83MTMiLCJhcmdfNzIyIiwiYm5kc183MTIiLCJhcmdfNzIwIiwiYm5kc183MTIkMCIsInZfNzE2IiwiYXJnXzcxOCIsImJuZF83MTciLCJibmRzXzcxMiQxIiwiYXJnXzcxNCIsImJuZHNfNzEyJDIiLCJmaW5kX2ZsYWciLCJjaG9pY2VzIiwiZmxhZ19pbmZvIiwiZ2V0X3VzYWdlIiwiZ3JvdXAkMTkiLCJiaW5fc2hhcGVfdCQxOCIsImJpbl9zaXplX3QkOSIsImJpbl93cml0ZV90JDkiLCJiaW5fd3JpdGVyX3QkOCIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZF90JDE5IiwiYmluX3JlYWRlcl90JDgiLCJiaW5fdCQ4IiwiY29tcGFyZSQxMSIsImFfNzI1IiwiYl83MjYiLCJhXzcyNyIsImJfNzI4IiwiYV83MjkiLCJiXzczMCIsImFfNzMxIiwiYl83MzIiLCJ0XzczNCIsInRfNzMzIiwidF83MzYiLCJ0XzczNSIsInJlYWRtZSQxIiwic3VtbWFyeSQxIiwic3ViY29tbWFuZHMkMCIsInJlYWRtZSQyIiwic3VtbWFyeSQyIiwibWFrZV9jcmVhdG9yJDIiLCJzdWJjb21tYW5kc19mdW4iLCJzdWJjb21tYW5kc19nZW4iLCJjcmVhdGUkMiIsIm1hcCQ3IiwiaXRlciQ1IiwiZm9sZCQ1IiwibWFwX3BvbHkkMiIsImZvcl9hbGwkNSIsImV4aXN0cyQ1IiwidG9fbGlzdCQ1IiwiaXRlciQ2IiwiZm9sZCQ2IiwiZm9yX2FsbCQ2IiwiZXhpc3RzJDYiLCJ0b19saXN0JDYiLCJtYXAkOCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMiIsInRfb2Zfc2V4cCQxNSIsIm9mX2FfNzM3Iiwic2V4cF83MzkiLCJmaWVsZF9zZXhwc183NDAiLCJzdW1tYXJ5Xzc0MSIsInJlYWRtZV83NDMiLCJzdWJjb21tYW5kc183NDUiLCJkdXBsaWNhdGVzXzc0NyIsImV4dHJhXzc0OCIsInNleHBfNzM5JDAiLCJmaWVsZF9zZXhwc183NTEiLCJmaWVsZF9uYW1lXzc0OSIsInRhaWxfNzYyIiwiZmllbGRfc2V4cF83NTAkMyIsImZpZWxkX3NleHBfNzUwIiwieF83NjMiLCJmaWVsZF9zZXhwXzc1MCQwIiwiZnZhbHVlXzc2MCIsImZpZWxkX3NleHBfNzUwJDEiLCJzZXhwXzc1NiIsImFyZzFfNzUzIiwiYXJnMF83NTIiLCJyZXMwXzc1NCIsInJlczFfNzU1IiwiZnZhbHVlXzc1OCIsImZpZWxkX3NleHBfNzUwJDIiLCJmdmFsdWVfNzU5IiwicmVhZG1lXzc0NCIsInN1YmNvbW1hbmRzXzc0NiIsInN1bW1hcnlfNzQyIiwic2V4cF9vZl90JDE2Iiwib2ZfYV83NjQiLCJzdWJjb21tYW5kc183NzIiLCJyZWFkbWVfNzY4Iiwic3VtbWFyeV83NjYiLCJibmRzXzc2NSIsImFyZzFfNzc1IiwiYXJnMF83NzQiLCJyZXMwXzc3NiIsInJlczFfNzc3IiwiYXJnXzc3MyIsImJuZHNfNzY1JDAiLCJ2Xzc2OSIsImFyZ183NzEiLCJibmRfNzcwIiwiYm5kc183NjUkMSIsImFyZ183NjciLCJibmRzXzc2NSQyIiwiZmluZF9zdWJjb21tYW5kIiwiZ3JvdXAkMjAiLCJiaW5fc2hhcGVfdCQxOSIsImJpbl9zaXplX3QkMTAiLCJiaW5fd3JpdGVfdCQxMCIsImJpbl93cml0ZXJfdCQ5IiwiYmluX3JlYWRfdCQyMCIsImJpbl9yZWFkX3QkMjEiLCJiaW5fcmVhZGVyX3QkOSIsImJpbl90JDkiLCJjb21wYXJlJDEyIiwiYV83NzgiLCJiXzc3OSIsImFfNzgwIiwiYl83ODEiLCJhXzc4MiIsImJfNzgzIiwiY2hpbGRfc3ViY29tbWFuZCIsInBhdGhfdG9fZXhlIiwid29ya2luZ19kaXIiLCJyZWFkbWUkMyIsInN1bW1hcnkkMyIsImNoaWxkX3N1YmNvbW1hbmQkMCIsInBhdGhfdG9fZXhlJDAiLCJ3b3JraW5nX2RpciQwIiwicmVhZG1lJDQiLCJzdW1tYXJ5JDQiLCJtYWtlX2NyZWF0b3IkMyIsIndvcmtpbmdfZGlyX2Z1biIsInBhdGhfdG9fZXhlX2Z1biIsImNoaWxkX3N1YmNvbW1hbmRfZnVuIiwid29ya2luZ19kaXJfZ2VuIiwicGF0aF90b19leGVfZ2VuIiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMTYiLCJzZXhwXzc4NSIsImZpZWxkX3NleHBzXzc4NiIsInN1bW1hcnlfNzg3IiwicmVhZG1lXzc4OSIsIndvcmtpbmdfZGlyXzc5MSIsInBhdGhfdG9fZXhlXzc5MyIsImNoaWxkX3N1YmNvbW1hbmRfNzk1IiwiZHVwbGljYXRlc183OTciLCJleHRyYV83OTgiLCJzZXhwXzc4NSQwIiwiZmllbGRfc2V4cHNfODAxIiwiZmllbGRfbmFtZV83OTkiLCJ0YWlsXzgwOSIsImZpZWxkX3NleHBfODAwJDUiLCJmaWVsZF9zZXhwXzgwMCIsInhfODEwIiwiZmllbGRfc2V4cF84MDAkMCIsImZ2YWx1ZV84MDQiLCJmaWVsZF9zZXhwXzgwMCQxIiwiZnZhbHVlXzgwNiIsImZpZWxkX3NleHBfODAwJDIiLCJmdmFsdWVfODA1IiwiZmllbGRfc2V4cF84MDAkMyIsImZ2YWx1ZV84MDMiLCJmaWVsZF9zZXhwXzgwMCQ0IiwiZnZhbHVlXzgwMiIsInJlYWRtZV83OTAiLCJjaGlsZF9zdWJjb21tYW5kXzc5NiIsInBhdGhfdG9fZXhlXzc5NCIsIndvcmtpbmdfZGlyXzc5MiIsInN1bW1hcnlfNzg4Iiwic2V4cF9vZl90JDE3IiwiY2hpbGRfc3ViY29tbWFuZF84MjIiLCJwYXRoX3RvX2V4ZV84MjAiLCJ3b3JraW5nX2Rpcl84MTgiLCJyZWFkbWVfODE0Iiwic3VtbWFyeV84MTIiLCJhcmdfODIzIiwiYm5kc184MTEiLCJhcmdfODIxIiwiYm5kc184MTEkMCIsImFyZ184MTkiLCJibmRzXzgxMSQxIiwidl84MTUiLCJhcmdfODE3IiwiYm5kXzgxNiIsImJuZHNfODExJDIiLCJhcmdfODEzIiwiYm5kc184MTEkMyIsImdyb3VwJDIxIiwiYmluX3NoYXBlX3QkMjAiLCJiaW5fc2l6ZV90JDExIiwiYmluX3dyaXRlX3QkMTEiLCJiaW5fd3JpdGVyX3QkMTAiLCJiaW5fcmVhZF90JDIyIiwiYmluX3JlYWRfdCQyMyIsImJpbl9yZWFkZXJfdCQxMCIsImJpbl90JDEwIiwiY29tcGFyZSQxMyIsImFfODI0IiwiYl84MjUiLCJhXzgyNCQwIiwiYl84MjUkMCIsImFfODI2IiwiYl84MjciLCJhXzgyOCIsImJfODI5IiwiYV84MzAiLCJiXzgzMSIsImFfODM0IiwiYV84MzIiLCJiXzgzNSIsImJfODMzIiwidF9vZl9zZXhwJDE3Iiwic2V4cF84NDAiLCJ0YWdfODQxIiwic2V4cF9hcmdzXzg0NyIsImFyZzBfODQ4IiwicmVzMF84NDkiLCJzZXhwX2FyZ3NfODUyIiwiYXJnMV84NTQiLCJhcmcwXzg1MyIsInJlczBfODU1IiwicmVzMV84NTYiLCJzZXhwX2FyZ3NfODQyIiwiYXJnMF84NDMiLCJyZXMwXzg0NCIsInNleHBfb2ZfdCQxOCIsImFyZzBfODU3IiwicmVzMF84NTgiLCJhcmcwXzg1OSIsInJlczBfODYwIiwiYXJnMV84NjIiLCJhcmcwXzg2MSIsInJlczBfODYzIiwicmVzMV84NjQiLCJleHBhbmRlZF9zdWJjb21tYW5kcyIsImV4cGFuZCIsInNleHBfb2ZfdCQxOSIsImFyZzBfODY1IiwicmVzMF84NjYiLCJhcmcwXzg2NyIsInJlczBfODY4IiwiYXJnMF84NjkiLCJyZXMwXzg3MCIsImFyZzBfODcxIiwicmVzMF84NzIiLCJleHRyYWN0aW9uX3ZhciIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJleHBlY3QiLCJleHBlY3QkMCIsImVycm9yX3NvdXJjZV8wMDciLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMxXzAxMSIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwibl9mcm9udCIsIm5fYmFjayIsImZyb250IiwiYmFjayIsInJldl9iYWNrIiwiZnJvbnQkMCIsInJldl9mcm9udCIsImJhY2skMCIsInJhaXNlX2Zyb250X2ludmFyaWFudCIsInJhaXNlX2JhY2tfaW52YXJpYW50IiwicGVla19mcm9udF9leG4iLCJwZWVrX2JhY2tfZXhuIiwiZHJvcF9mcm9udF9leG4iLCJkcm9wX2JhY2tfZXhuIiwib3B0aW9uYWwiLCJwZWVrX2Zyb250IiwicGVla19iYWNrIiwicGVlayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJidWlsZCIsIm9mX2Zvcm1hdCIsInRvX2Zvcm1hdCIsInNldF9hdCIsInNldF9pbnRlcm5hbCIsInNldF9pZl9ub25lIiwic2V0X2V4biIsImdldF9leG4iLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsImRpZSIsImtleV9jcmVhdGUiLCJtdWx0aV9hZGQiLCJzZXRfd2l0aF9kZWZhdWx0IiwicnVuX2FuZF9leGl0IiwiZW52IiwicGFydCIsImNvbXBsZXRpb25zIiwiZXh0cmFfZG9jIiwiY29tcGxldGUiLCJvZl9sYXp5IiwiZXh0cmFfZG9jJDAiLCJob3N0X2FuZF9wb3J0Iiwic2V4cF9jb252IiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJkdXBsaWNhdGVfa2V5cyIsIlMiLCJ1bml2X21hcCIsInZhbGlkX2FyZ3VtZW50c19leHRyYSIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImNvbW1hX3NlcGFyYXRlZCIsImFsbG93X2VtcHR5Iiwic3RyaXBfd2hpdGVzcGFjZSIsInVuaXF1ZV92YWx1ZXMiLCJjb21wbGV0ZV9lbHQiLCJoZCIsInByZWZpeGVzIiwic2Vlbl9hbHJlYWR5IiwiaXNfYWxsb3dlZCIsImNob2ljZSIsImNob2ljZXMkMCIsInN0cmluZyQwIiwicGFyc2UkMCIsImVudW1lcmF0ZV8wMTIiLCJlbnVtZXJhdGVfMDEzIiwiZW51bWVyYXRlXzAxMSIsImVudW1lcmF0ZV8wMTQiLCJlbnVtZXJhdGVfMDEwIiwiZW51bWVyYXRlXzAxNCQwIiwicGFyc2UkMSIsImFjdGlvbiIsImFyZ19kb2MiLCJkb2MkMSIsImFyZ19kb2MkMCIsIndyYXBfaWZfb3B0aW9uYWwiLCJoZWxwIiwiYWxpZ24iLCJhcmdfZmxhZyIsImFyZ190eXBlIiwid3JpdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJ3cml0ZV9vcHRpb24iLCJyZXF1aXJlZF92YWx1ZSIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsIm5vX2FyZ19nZW5lcmFsIiwia2V5X3ZhbHVlIiwiZGVwcmVjYXRlZF9ob29rIiwiYWN0aW9uJDAiLCJub19hcmciLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmdfc29tZSIsImxpc3RlZCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIiLCJxIiwib25lX29yX21vcmVfYXNfbGlzdCIsImVzY2FwZV9nZW5lcmFsIiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsInN1YmNvbW1hbmQiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJyZXBsYWNlX2ZpcnN0IiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsImNvbmNhdCQwIiwiY2RyIiwiY2FyIiwiY2RyJDAiLCJjYXIkMCIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInBhcnNlX21vcmUiLCJmb3JfY29tcGxldGlvbiIsInVwZGF0ZV9lbnYiLCJwYXJzZXIiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibW9yZSQwIiwidGVzdCQwIiwiYW5vbiIsImxvb3AiLCJjb25zdW1lIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsInQzIiwiYTMiLCJ0NCIsImE0Iiwic3RybGVuIiwic3BlY2lhbF9jaGFycyIsImhhc19zcGVjaWFsX2NoYXJzIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI3IiwiYl8wMjgiLCJhXzAzMSIsImJfMDMyIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiY3VzdG9tX3ByaW50Zl8wMzMiLCJjdXN0b21fcHJpbnRmXzAzNCIsInN1YmNvbW1hbmRfY21wX2ZzdCIsInNoYXBlIiwicGF0aF9rZXkiLCJhcmdzX2tleSIsImhlbHBfa2V5IiwiYXBwIiwicGYiLCJweCIsIm1mIiwibXgiLCJyZXR1cm4kMSIsIndyYXAiLCJtYWluIiwib2ZfcGFyYW0iLCJ0b19wYXJhbSIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiYm9vbCQwIiwicGVyY2VudCQwIiwiaG9zdF9hbmRfcG9ydCQwIiwic2V4cF9jb252JDAiLCJzcGVjIiwiZXNjYXBlX2Fub24iLCJmaW5hbF9hbm9uIiwiZnVsbF9mbGFnX3JlcXVpcmVkIiwiYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAiLCJjaGVja19hdmFpbGFibGUiLCJuYW1lX21hdGNoaW5nIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJib3RoIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0X2Jvb2wiLCJwYXNzZWQiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJmJDMiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1IiwiYXJnX25hbWVzIiwicGFyYW0iLCJmbGFnX25hbWVzIiwiYW5vbl9uYW1lcyIsIm5hbWVzX3dpdGhfY29tbWFzIiwidG9fc3RyaW5nJDEiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmUiLCJpZl9ub3RoaW5nX2Nob3NlbiIsInRzJDAiLCJjdXN0b21fcHJpbnRmXzA0MiIsImN1c3RvbV9wcmludGZfMDQzIiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInNoYXBlJDAiLCJzdWJjb21tYW5kX3RvX3NoYXBlIiwiY29tcF9jd29yZCIsInNoYXBlJDEiLCJzZXhwYWJsZV9zaGFwZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljX3NwZWMiLCJmbGFncyQxIiwiYmFzZSQwIiwic3Vic19rZXkiLCJsYXp5X2dyb3VwIiwicHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciIsImJvZHkiLCJwJDAiLCJwJDEiLCJwJDIiLCJvZl9sYXp5JDAiLCJwcm94eV9vZl9zZXhwYWJsZSIsInNleHBhYmxlIiwicGF0aF90b19zdWJjb21tYW5kIiwia2luZCIsImtpbmRfb2Zfc2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMCIsInByb3h5IiwicHJpbnRfdmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsInVudmVyc2lvbmVkIiwiYmFzZSQxIiwibm9ybWFsaXplX3ZlcnNpb25fbGluZXMiLCJkZWZhdWx0X3ZlcnNpb24iLCJkZWZhdWx0X2J1aWxkX2luZm8iLCJyZXByaW50X2J1aWxkX2luZm8iLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsInN0cmluZyQxIiwiaW50JDIiLCJjaGFyJDIiLCJmbG9hdCQyIiwiYm9vbCQxIiwicGVyY2VudCQxIiwiaG9zdF9hbmRfcG9ydCQxIiwic2V4cCQxIiwic2V4cF9jb252JDEiLCJiYXNpYyIsInBhcmFtcyIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsInNoYXBlJDIiLCJnZXRwaWQiLCJjbG9zZSIsImluX2NoYW5uZWxfb2ZfZGVzY3IiLCJ3YWl0IiwiZ2V0ZW52X2FuZF9jbGVhciIsInZhciQwIiwiaGVscF9zZXhwIiwicHJvZyIsImFyZ3YwIiwicHJvZ19zZWFyY2hfcGF0aCIsImNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0ciIsImVudl92YXIiLCJsaXN0JDEiLCJwcm9jZXNzX2luZm8iLCJzdGFydF9yZWFkaW5nIiwiZGVzY3IiLCJpbmZvIiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsInNoYXBlX29mX3Byb3h5Iiwic2hhcGVfb2ZfcHJveHlfa2luZCIsInNoYXBlX29mX2V4ZSIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwYXRoJDEiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsImVudiQxIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQiLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwid2hlbl9wYXJzaW5nX3N1Y2NlZWRzIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0IiwicGFyc2VyJDEiLCJjbWRsaW5lJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwiYWxpYXMiLCJmbGFnJDAiLCJmbGFnJDEiLCJjb21wbGV0aW5nIiwiY21kbGluZSQyIiwiZW52JDIiLCJwYXJzZV9mbGFnczIiLCJlbnYkMyIsInBhcnNlX2ZsYWdzJDAiLCJwYXJ0JDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJleG5fc3RyIiwidmVyYm9zZSIsImVycm9yX21zZyIsImRpZV9zaG93aW5nX2hlbHAiLCJwYXJzZV9ncm91cCIsIm1heWJlX25ld19jb21wX2N3b3JkJDAiLCJyZXNvbHZlIiwic3VicyQwIiwic3ViJDAiLCJib2R5JDAiLCJ0b19vdXRwdXQiLCJyZXN0X29mX3Jlc3QiLCJmaXJzdF9vZl9yZXN0IiwibmV3X3ZhbHVlJDAiLCJuZXdfdmFsdWUiLCJ0aHVuayQwIiwiYXJndiIsImJ1aWxkX2luZm8kMCIsInZlcnNpb24kMCIsInN1cHBvcnRlZF92ZXJzaW9ucyQwIiwicGF0aF90b19zdWJjb21tYW5kJDEiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMiIsImZuYW1lIiwiYXJndl8wIiwiY29tcF9jd29yZCQwIiwiZGVwcmVjYXRlZF9ydW4iLCJpc19oZWxwIiwiaXNfaGVscF9yZWMiLCJpc19oZWxwX3JlY19mbGFncyIsImlzX2V4cGFuZF9kb3RzIiwicGF0aF9zdHJpbmdzIiwiYXJncyQyIiwiYXJncyQzIiwiYXJncyQ0IiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsInR5cGVuYW1lX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJ0X3NleHBfZ3JhbW1hciQyIiwidHlwZW5hbWVfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJjaGVjayQyIiwidG9fc3RyaW5nJDIiLCJwcCQyIiwib2Zfc3RyaW5nJDIiLCJhcmdfdHlwZSQwIiwic2V4cF9hc19zdHJpbmciLCJ2XzAwMSIsInNlcmlhbGl6ZWRfc2V4cCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJ2XzAxMiIsInZfMDEzIiwicmVzMV8wMTciLCJleHBlY3RlZF9iaW5faW8iLCJiaW5hYmxlX20iLCJzZXJpYWxpemVkX2Jpbl9pbyIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJyZXMxXzAyNCIsInZfMDE5IiwicmVzMl8wMjUiLCJhcmcxXzAyOSIsImFyZzBfMDI4Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJyZXZfc2tpcHBlZCIsInN0cmluZ3MkMCIsImNvbnRpbnVlJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwidl8wNDQiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNDgiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwicGVybXV0YXRhdGlvbnMiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsImJsYW5nIiwiY21wX2EkMCIsImNtcF9hJDUiLCJjbXBfYSQxIiwiYV8wMTUiLCJiXzAxNiIsImNtcF9hJDYiLCJhXzAxNyIsImJfMDE4IiwiY21wX2EkMiIsImFfMDE5IiwiYl8wMjAiLCJjbXBfYSQ3IiwiY21wX2EkMyIsImFfMDIzIiwiYl8wMjQiLCJjbXBfYSQ4IiwiYV8wMzMiLCJiXzAzNCIsImNtcF9hJDQiLCJhXzAzNyQwIiwiYl8wMzgkMCIsImFfMDQxIiwiYV8wMzkiLCJiXzA0MiIsImJfMDQwIiwiYV8wNDMiLCJiXzA0NCIsImFfMDQ1IiwiYl8wNDYiLCJhXzA0OSIsImFfMDQ3IiwiYl8wNTAiLCJiXzA0OCIsImFfMDUzIiwiYl8wNTQiLCJhXzA2MyIsImJfMDY0IiwiYV8wNjUiLCJiXzA2NiIsImFfMDY3IiwiYl8wNjgiLCJhXzA2OSIsImJfMDcwIiwiYV8wNzEiLCJiXzA3MiIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidjAkMSIsInYwJDIiLCJ2MCQzIiwic3VidGVybXMiLCJ0MSQxIiwiY29udGFpbnNfbm9fY29uc3RhbnRzIiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5vdCIsImFuZGFsc28iLCJvdGhlciIsInQxYiIsInQxYSIsIm9yZWxzZSIsImlmJDAiLCJvZl9hXzA3MyIsImFyZzFfMDc1IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMF8wODIiLCJyZXMwXzA4MyIsImFyZzJfMDg2IiwiYXJnMV8wODUiLCJhcmcwXzA4NCIsInJlczBfMDg3IiwicmVzMV8wODgiLCJyZXMyXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJnYXRoZXJfY29uanVuY3RzIiwidHMkMSIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJraWxvYnl0ZXMiLCJtZWdhYnl0ZXMiLCJnaWdhYnl0ZXMiLCJ0ZXJhYnl0ZXMiLCJwZXRhYnl0ZXMiLCJleGFieXRlcyIsIndvcmRzX2ludF9leG4iLCJ3b3Jkc19mbG9hdCIsIm9mX2tpbG9ieXRlcyIsIm9mX21lZ2FieXRlcyIsIm9mX2dpZ2FieXRlcyIsIm9mX3RlcmFieXRlcyIsIm9mX3BldGFieXRlcyIsIm9mX2V4YWJ5dGVzIiwib2Zfd29yZHNfaW50Iiwib2Zfd29yZHNfZmxvYXRfZXhuIiwiYmFzZV9zdHIiLCJleHRfY2hhciIsImxhcmdlc3RfbWVhc3VyZSIsInRfYWJzIiwibm9fbWF0Y2giLCJ2YWxfc2V4cCIsInVuaXRfbmFtZSIsImN1c3RvbV9wcmludGZfMDA1IiwiY3VzdG9tX3ByaW50Zl8wMDYiLCJjdXN0b21fcHJpbnRmXzAwNyIsImN1c3RvbV9wcmludGZfMDA4IiwiY3VzdG9tX3ByaW50Zl8wMDkiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDExIiwidG9fc3RyaW5nX3Nob3J0IiwidG9fdW5pdHNfc3RyIiwidG9fdW5pdCIsImZfYWJzIiwiY3VzdG9tX3ByaW50Zl8wMTQiLCJjdXN0b21fcHJpbnRmXzAxNSIsImN1c3RvbV9wcmludGZfMDE2IiwiY3VzdG9tX3ByaW50Zl8wMTciLCJjdXN0b21fcHJpbnRmXzAxOCIsImN1c3RvbV9wcmludGZfMDE5IiwiY3VzdG9tX3ByaW50Zl8wMjAiLCJjdXN0b21fcHJpbnRmXzAyMSIsImN1c3RvbV9wcmludGZfMDIyIiwiY3VzdG9tX3ByaW50Zl8wMjMiLCJjdXN0b21fcHJpbnRmXzAyNCIsImN1c3RvbV9wcmludGZfMDI1IiwiY3VzdG9tX3ByaW50Zl8wMjYiLCJieXRlc19wZXJfd29yZCIsImVycm9yX3NvdXJjZV8wNjkiLCJlcnJvcl9zb3VyY2VfMTY5IiwiZXJyb3Jfc291cmNlXzI1MyIsInYxNiIsInYxNSIsInYxNCIsInYxMyIsInYxMiIsInYxMSIsInYxMCIsInY5IiwidjgiLCJzaXplJDYiLCJzaXplJDciLCJzaXplJDgiLCJzaXplJDkiLCJzaXplJDEwIiwic2l6ZSQxMSIsInNpemUkMTIiLCJzaXplJDEzIiwidl9taW5vcl93b3JkcyIsInZfcHJvbW90ZWRfd29yZHMiLCJ2X21ham9yX3dvcmRzIiwidl9taW5vcl9jb2xsZWN0aW9ucyIsInZfbWFqb3JfY29sbGVjdGlvbnMiLCJ2X2hlYXBfd29yZHMiLCJ2X2hlYXBfY2h1bmtzIiwidl9saXZlX3dvcmRzIiwidl9saXZlX2Jsb2NrcyIsInZfZnJlZV93b3JkcyIsInZfZnJlZV9ibG9ja3MiLCJ2X2xhcmdlc3RfZnJlZSIsInZfZnJhZ21lbnRzIiwidl9jb21wYWN0aW9ucyIsInZfdG9wX2hlYXBfd29yZHMiLCJ2X3N0YWNrX3NpemUiLCJuJDUiLCJuJDYiLCJuJDciLCJuJDgiLCJuJDkiLCJuJDEwIiwibiQxMSIsIm4kMTIiLCJuJDEzIiwiaHN2JDEwIiwiaHN2JDExIiwiaHN2JDEyIiwiaHN2JDEzIiwiaHN2JDE0Iiwic2V4cF8wMTQiLCJmaWVsZF9zZXhwc18wMTUiLCJtaW5vcl93b3Jkc18wMTYiLCJwcm9tb3RlZF93b3Jkc18wMTgiLCJtYWpvcl93b3Jkc18wMjAiLCJtaW5vcl9jb2xsZWN0aW9uc18wMjIiLCJtYWpvcl9jb2xsZWN0aW9uc18wMjQiLCJoZWFwX3dvcmRzXzAyNiIsImhlYXBfY2h1bmtzXzAyOCIsImxpdmVfd29yZHNfMDMwIiwibGl2ZV9ibG9ja3NfMDMyIiwiZnJlZV93b3Jkc18wMzQiLCJmcmVlX2Jsb2Nrc18wMzYiLCJsYXJnZXN0X2ZyZWVfMDM4IiwiZnJhZ21lbnRzXzA0MCIsImNvbXBhY3Rpb25zXzA0MiIsInRvcF9oZWFwX3dvcmRzXzA0NCIsInN0YWNrX3NpemVfMDQ2IiwiZHVwbGljYXRlc18wNDgiLCJleHRyYV8wNDkiLCJpdGVyXzA3MCIsInNleHBfMDE0JDAiLCJmaWVsZF9zZXhwc18wNTIiLCJmaWVsZF9uYW1lXzA1MCIsInRhaWxfMDcxIiwiZmllbGRfc2V4cF8wNTEkMTYiLCJmaWVsZF9zZXhwXzA1MSIsInhfMDcyIiwiZmllbGRfc2V4cF8wNTEkMCIsImZ2YWx1ZV8wNTQiLCJmaWVsZF9zZXhwXzA1MSQxIiwiZnZhbHVlXzA1MyIsImZpZWxkX3NleHBfMDUxJDIiLCJmaWVsZF9zZXhwXzA1MSQzIiwiZnZhbHVlXzA2OCIsImZpZWxkX3NleHBfMDUxJDQiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTEkNSIsImZpZWxkX3NleHBfMDUxJDYiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTEkNyIsImZ2YWx1ZV8wNjEiLCJmaWVsZF9zZXhwXzA1MSQ4IiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDUxJDkiLCJmdmFsdWVfMDU3IiwiZmllbGRfc2V4cF8wNTEkMTAiLCJmdmFsdWVfMDYzIiwiZmllbGRfc2V4cF8wNTEkMTEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTEkMTIiLCJmdmFsdWVfMDU5IiwiZmllbGRfc2V4cF8wNTEkMTMiLCJmdmFsdWVfMDU4IiwiZmllbGRfc2V4cF8wNTEkMTQiLCJmdmFsdWVfMDU2IiwiZmllbGRfc2V4cF8wNTEkMTUiLCJmdmFsdWVfMDU1Iiwic3RhY2tfc2l6ZV8wNDciLCJ0b3BfaGVhcF93b3Jkc18wNDUiLCJjb21wYWN0aW9uc18wNDMiLCJmcmFnbWVudHNfMDQxIiwibGFyZ2VzdF9mcmVlXzAzOSIsImZyZWVfYmxvY2tzXzAzNyIsImZyZWVfd29yZHNfMDM1IiwibGl2ZV9ibG9ja3NfMDMzIiwibGl2ZV93b3Jkc18wMzEiLCJoZWFwX2NodW5rc18wMjkiLCJoZWFwX3dvcmRzXzAyNyIsIm1ham9yX2NvbGxlY3Rpb25zXzAyNSIsIm1pbm9yX2NvbGxlY3Rpb25zXzAyMyIsIm1ham9yX3dvcmRzXzAyMSIsInByb21vdGVkX3dvcmRzXzAxOSIsIm1pbm9yX3dvcmRzXzAxNyIsInN0YWNrX3NpemVfMTA0IiwidG9wX2hlYXBfd29yZHNfMTAyIiwiY29tcGFjdGlvbnNfMTAwIiwiZnJhZ21lbnRzXzA5OCIsImxhcmdlc3RfZnJlZV8wOTYiLCJmcmVlX2Jsb2Nrc18wOTQiLCJmcmVlX3dvcmRzXzA5MiIsImxpdmVfYmxvY2tzXzA5MCIsImxpdmVfd29yZHNfMDg4IiwiaGVhcF9jaHVua3NfMDg2IiwiaGVhcF93b3Jkc18wODQiLCJtYWpvcl9jb2xsZWN0aW9uc18wODIiLCJtaW5vcl9jb2xsZWN0aW9uc18wODAiLCJtYWpvcl93b3Jkc18wNzgiLCJwcm9tb3RlZF93b3Jkc18wNzYiLCJtaW5vcl93b3Jkc18wNzQiLCJibmRzXzA3MyIsImFyZ18xMDMiLCJibmRzXzA3MyQwIiwiYXJnXzEwMSIsImJuZHNfMDczJDEiLCJhcmdfMDk5IiwiYm5kc18wNzMkMiIsImFyZ18wOTciLCJibmRzXzA3MyQzIiwiYXJnXzA5NSIsImJuZHNfMDczJDQiLCJhcmdfMDkzIiwiYm5kc18wNzMkNSIsImFyZ18wOTEiLCJibmRzXzA3MyQ2IiwiYXJnXzA4OSIsImJuZHNfMDczJDciLCJhcmdfMDg3IiwiYm5kc18wNzMkOCIsImFyZ18wODUiLCJibmRzXzA3MyQ5IiwiYXJnXzA4MyIsImJuZHNfMDczJDEwIiwiYXJnXzA4MSIsImJuZHNfMDczJDExIiwiYXJnXzA3OSIsImJuZHNfMDczJDEyIiwiYXJnXzA3NyIsImJuZHNfMDczJDEzIiwiYXJnXzA3NSIsImJuZHNfMDczJDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwiYV8xMDYiLCJiXzEwNyIsIm4kMTQiLCJhXzEwOCIsImJfMTA5IiwiaHN2JDE1Iiwic2V4cF8xMTEiLCJmaWVsZF9zZXhwc18xMTIiLCJtaW5vcl93b3Jkc18xMTMiLCJwcm9tb3RlZF93b3Jkc18xMTUiLCJtYWpvcl93b3Jkc18xMTciLCJtaW5vcl9jb2xsZWN0aW9uc18xMTkiLCJtYWpvcl9jb2xsZWN0aW9uc18xMjEiLCJoZWFwX3dvcmRzXzEyMyIsImhlYXBfY2h1bmtzXzEyNSIsImxpdmVfd29yZHNfMTI3IiwibGl2ZV9ibG9ja3NfMTI5IiwiZnJlZV93b3Jkc18xMzEiLCJmcmVlX2Jsb2Nrc18xMzMiLCJsYXJnZXN0X2ZyZWVfMTM1IiwiZnJhZ21lbnRzXzEzNyIsImNvbXBhY3Rpb25zXzEzOSIsInRvcF9oZWFwX3dvcmRzXzE0MSIsInN0YWNrX3NpemVfMTQzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzE0NSIsImR1cGxpY2F0ZXNfMTQ3IiwiZXh0cmFfMTQ4IiwiaXRlcl8xNzAiLCJzZXhwXzExMSQwIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTUwJDE3IiwiZmllbGRfc2V4cF8xNTAiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTUwJDAiLCJmdmFsdWVfMTU0IiwiZmllbGRfc2V4cF8xNTAkMSIsImZ2YWx1ZV8xNTMiLCJmaWVsZF9zZXhwXzE1MCQyIiwiZmllbGRfc2V4cF8xNTAkMyIsImZpZWxkX3NleHBfMTUwJDQiLCJmdmFsdWVfMTY1IiwiZmllbGRfc2V4cF8xNTAkNSIsImZ2YWx1ZV8xNjYiLCJmaWVsZF9zZXhwXzE1MCQ2IiwiZnZhbHVlXzE2NCIsImZpZWxkX3NleHBfMTUwJDciLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTAkOCIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1MCQ5IiwiZnZhbHVlXzE1NyIsImZpZWxkX3NleHBfMTUwJDEwIiwiZnZhbHVlXzE2MyIsImZpZWxkX3NleHBfMTUwJDExIiwiZnZhbHVlXzE2MiIsImZpZWxkX3NleHBfMTUwJDEyIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTUwJDEzIiwiZnZhbHVlXzE1OCIsImZpZWxkX3NleHBfMTUwJDE0IiwiZnZhbHVlXzE1NiIsImZpZWxkX3NleHBfMTUwJDE1IiwiZnZhbHVlXzE1MiIsImZpZWxkX3NleHBfMTUwJDE2IiwiZnZhbHVlXzE1NSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNDYiLCJzdGFja19zaXplXzE0NCIsInRvcF9oZWFwX3dvcmRzXzE0MiIsImNvbXBhY3Rpb25zXzE0MCIsImZyYWdtZW50c18xMzgiLCJsYXJnZXN0X2ZyZWVfMTM2IiwiZnJlZV9ibG9ja3NfMTM0IiwiZnJlZV93b3Jkc18xMzIiLCJsaXZlX2Jsb2Nrc18xMzAiLCJsaXZlX3dvcmRzXzEyOCIsImhlYXBfY2h1bmtzXzEyNiIsImhlYXBfd29yZHNfMTI0IiwibWFqb3JfY29sbGVjdGlvbnNfMTIyIiwibWlub3JfY29sbGVjdGlvbnNfMTIwIiwibWFqb3Jfd29yZHNfMTE4IiwicHJvbW90ZWRfd29yZHNfMTE2IiwibWlub3Jfd29yZHNfMTE0IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzIwNiIsInN0YWNrX3NpemVfMjA0IiwidG9wX2hlYXBfd29yZHNfMjAyIiwiY29tcGFjdGlvbnNfMjAwIiwiZnJhZ21lbnRzXzE5OCIsImxhcmdlc3RfZnJlZV8xOTYiLCJmcmVlX2Jsb2Nrc18xOTQiLCJmcmVlX3dvcmRzXzE5MiIsImxpdmVfYmxvY2tzXzE5MCIsImxpdmVfd29yZHNfMTg4IiwiaGVhcF9jaHVua3NfMTg2IiwiaGVhcF93b3Jkc18xODQiLCJtYWpvcl9jb2xsZWN0aW9uc18xODIiLCJtaW5vcl9jb2xsZWN0aW9uc18xODAiLCJtYWpvcl93b3Jkc18xNzgiLCJwcm9tb3RlZF93b3Jkc18xNzYiLCJtaW5vcl93b3Jkc18xNzQiLCJhcmdfMjA3IiwiYm5kc18xNzMiLCJhcmdfMjA1IiwiYm5kc18xNzMkMCIsImFyZ18yMDMiLCJibmRzXzE3MyQxIiwiYXJnXzIwMSIsImJuZHNfMTczJDIiLCJhcmdfMTk5IiwiYm5kc18xNzMkMyIsImFyZ18xOTciLCJibmRzXzE3MyQ0IiwiYXJnXzE5NSIsImJuZHNfMTczJDUiLCJhcmdfMTkzIiwiYm5kc18xNzMkNiIsImFyZ18xOTEiLCJibmRzXzE3MyQ3IiwiYXJnXzE4OSIsImJuZHNfMTczJDgiLCJhcmdfMTg3IiwiYm5kc18xNzMkOSIsImJuZHNfMTczJDEwIiwiYm5kc18xNzMkMTEiLCJibmRzXzE3MyQxMiIsImFyZ18xNzkiLCJibmRzXzE3MyQxMyIsImJuZHNfMTczJDE0IiwiYXJnXzE3NSIsImJuZHNfMTczJDE1Iiwidl9taW5vcl9oZWFwX3NpemUiLCJ2X21ham9yX2hlYXBfaW5jcmVtZW50Iiwidl9zcGFjZV9vdmVyaGVhZCIsInZfdmVyYm9zZSIsInZfbWF4X292ZXJoZWFkIiwidl9zdGFja19saW1pdCIsInZfYWxsb2NhdGlvbl9wb2xpY3kiLCJ2X3dpbmRvd19zaXplIiwidl9jdXN0b21fbWFqb3JfcmF0aW8iLCJ2X2N1c3RvbV9taW5vcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX21heF9zaXplIiwiYV8yMDgiLCJiXzIwOSIsImFfMjEwIiwiYl8yMTEiLCJzZXhwXzIxMyIsImZpZWxkX3NleHBzXzIxNCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTUiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yMTciLCJzcGFjZV9vdmVyaGVhZF8yMTkiLCJ2ZXJib3NlXzIyMSIsIm1heF9vdmVyaGVhZF8yMjMiLCJzdGFja19saW1pdF8yMjUiLCJhbGxvY2F0aW9uX3BvbGljeV8yMjciLCJ3aW5kb3dfc2l6ZV8yMjkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMjMxIiwiY3VzdG9tX21pbm9yX3JhdGlvXzIzMyIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzUiLCJkdXBsaWNhdGVzXzIzNyIsImV4dHJhXzIzOCIsIml0ZXJfMjU0Iiwic2V4cF8yMTMkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNTUiLCJmaWVsZF9zZXhwXzI0MCQxMSIsImZpZWxkX3NleHBfMjQwIiwieF8yNTYiLCJmaWVsZF9zZXhwXzI0MCQwIiwiZnZhbHVlXzI0NSIsImZpZWxkX3NleHBfMjQwJDEiLCJmdmFsdWVfMjQ5IiwiZmllbGRfc2V4cF8yNDAkMiIsImZ2YWx1ZV8yNDciLCJmaWVsZF9zZXhwXzI0MCQzIiwiZnZhbHVlXzI1MCIsImZpZWxkX3NleHBfMjQwJDQiLCJmdmFsdWVfMjUyIiwiZmllbGRfc2V4cF8yNDAkNSIsImZ2YWx1ZV8yNDgiLCJmaWVsZF9zZXhwXzI0MCQ2IiwiZnZhbHVlXzI1MSIsImZpZWxkX3NleHBfMjQwJDciLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkOCIsImZ2YWx1ZV8yNDIiLCJmaWVsZF9zZXhwXzI0MCQ5IiwiZnZhbHVlXzI0NCIsImZpZWxkX3NleHBfMjQwJDEwIiwiZnZhbHVlXzI0NiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzYiLCJjdXN0b21fbWlub3JfcmF0aW9fMjM0IiwiY3VzdG9tX21ham9yX3JhdGlvXzIzMiIsIndpbmRvd19zaXplXzIzMCIsImFsbG9jYXRpb25fcG9saWN5XzIyOCIsInN0YWNrX2xpbWl0XzIyNiIsIm1heF9vdmVyaGVhZF8yMjQiLCJ2ZXJib3NlXzIyMiIsInNwYWNlX292ZXJoZWFkXzIyMCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzIxOCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTYiLCJjdXN0b21fbWlub3JfbWF4X3NpemVfMjc4IiwiY3VzdG9tX21pbm9yX3JhdGlvXzI3NiIsImN1c3RvbV9tYWpvcl9yYXRpb18yNzQiLCJ3aW5kb3dfc2l6ZV8yNzIiLCJhbGxvY2F0aW9uX3BvbGljeV8yNzAiLCJzdGFja19saW1pdF8yNjgiLCJtYXhfb3ZlcmhlYWRfMjY2IiwidmVyYm9zZV8yNjQiLCJzcGFjZV9vdmVyaGVhZF8yNjIiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yNjAiLCJtaW5vcl9oZWFwX3NpemVfMjU4IiwiYm5kc18yNTciLCJhcmdfMjc3IiwiYm5kc18yNTckMCIsImFyZ18yNzUiLCJibmRzXzI1NyQxIiwiYXJnXzI3MyIsImJuZHNfMjU3JDIiLCJhcmdfMjcxIiwiYm5kc18yNTckMyIsImFyZ18yNjkiLCJibmRzXzI1NyQ0IiwiYXJnXzI2NyIsImJuZHNfMjU3JDUiLCJhcmdfMjY1IiwiYm5kc18yNTckNiIsImFyZ18yNjMiLCJibmRzXzI1NyQ3IiwiYXJnXzI2MSIsImJuZHNfMjU3JDgiLCJhcmdfMjU5IiwiYm5kc18yNTckOSIsImFfMjgwIiwiYl8yODEiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfMzE1Iiwic3RhY2tfc2l6ZV8zMTMiLCJ0b3BfaGVhcF93b3Jkc18zMTEiLCJjb21wYWN0aW9uc18zMDkiLCJmcmFnbWVudHNfMzA3IiwibGFyZ2VzdF9mcmVlXzMwNSIsImZyZWVfYmxvY2tzXzMwMyIsImZyZWVfd29yZHNfMzAxIiwibGl2ZV9ibG9ja3NfMjk5IiwibGl2ZV93b3Jkc18yOTciLCJoZWFwX2NodW5rc18yOTUiLCJoZWFwX3dvcmRzXzI5MyIsIm1ham9yX2NvbGxlY3Rpb25zXzI5MSIsIm1pbm9yX2NvbGxlY3Rpb25zXzI4OSIsIm1ham9yX3dvcmRzXzI4NyIsInByb21vdGVkX3dvcmRzXzI4NSIsIm1pbm9yX3dvcmRzXzI4MyIsImFyZ18zMTYiLCJibmRzXzI4MiIsImFyZ18zMTQiLCJibmRzXzI4MiQwIiwiYXJnXzMxMiIsImJuZHNfMjgyJDEiLCJhcmdfMzEwIiwiYm5kc18yODIkMiIsImFyZ18zMDgiLCJibmRzXzI4MiQzIiwiYXJnXzMwNiIsImJuZHNfMjgyJDQiLCJhcmdfMzA0IiwiYm5kc18yODIkNSIsImFyZ18zMDIiLCJibmRzXzI4MiQ2IiwiYXJnXzMwMCIsImJuZHNfMjgyJDciLCJhcmdfMjk4IiwiYm5kc18yODIkOCIsImFyZ18yOTYiLCJibmRzXzI4MiQ5IiwiYXJnXzI5NCIsImJuZHNfMjgyJDEwIiwiYXJnXzI5MiIsImJuZHNfMjgyJDExIiwiYXJnXzI5MCIsImJuZHNfMjgyJDEyIiwiYXJnXzI4OCIsImJuZHNfMjgyJDEzIiwiYXJnXzI4NiIsImJuZHNfMjgyJDE0IiwiYXJnXzI4NCIsImJuZHNfMjgyJDE1IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwic3RhY2tfc2l6ZSIsInRvcF9oZWFwX3dvcmRzIiwiY29tcGFjdGlvbnMiLCJmcmFnbWVudHMiLCJsYXJnZXN0X2ZyZWUiLCJmcmVlX2Jsb2NrcyIsImZyZWVfd29yZHMiLCJsaXZlX2Jsb2NrcyIsImxpdmVfd29yZHMiLCJoZWFwX2NodW5rcyIsImhlYXBfd29yZHMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwibWFqb3Jfd29yZHMiLCJwcm9tb3RlZF93b3JkcyIsIm1pbm9yX3dvcmRzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zJDAiLCJzdGFja19zaXplJDAiLCJ0b3BfaGVhcF93b3JkcyQwIiwiY29tcGFjdGlvbnMkMCIsImZyYWdtZW50cyQwIiwibGFyZ2VzdF9mcmVlJDAiLCJmcmVlX2Jsb2NrcyQwIiwiZnJlZV93b3JkcyQwIiwibGl2ZV9ibG9ja3MkMCIsImxpdmVfd29yZHMkMCIsImhlYXBfY2h1bmtzJDAiLCJoZWFwX3dvcmRzJDAiLCJtYWpvcl9jb2xsZWN0aW9ucyQwIiwibWlub3JfY29sbGVjdGlvbnMkMCIsIm1ham9yX3dvcmRzJDAiLCJwcm9tb3RlZF93b3JkcyQwIiwibWlub3Jfd29yZHMkMCIsIm1pbm9yX3dvcmRzX2Z1biIsInByb21vdGVkX3dvcmRzX2Z1biIsIm1ham9yX3dvcmRzX2Z1biIsIm1pbm9yX2NvbGxlY3Rpb25zX2Z1biIsIm1ham9yX2NvbGxlY3Rpb25zX2Z1biIsImhlYXBfd29yZHNfZnVuIiwiaGVhcF9jaHVua3NfZnVuIiwibGl2ZV93b3Jkc19mdW4iLCJsaXZlX2Jsb2Nrc19mdW4iLCJmcmVlX3dvcmRzX2Z1biIsImZyZWVfYmxvY2tzX2Z1biIsImxhcmdlc3RfZnJlZV9mdW4iLCJmcmFnbWVudHNfZnVuIiwiY29tcGFjdGlvbnNfZnVuIiwidG9wX2hlYXBfd29yZHNfZnVuIiwic3RhY2tfc2l6ZV9mdW4iLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZnVuIiwibWlub3Jfd29yZHNfZ2VuIiwicHJvbW90ZWRfd29yZHNfZ2VuIiwibWFqb3Jfd29yZHNfZ2VuIiwibWlub3JfY29sbGVjdGlvbnNfZ2VuIiwibWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiaGVhcF93b3Jkc19nZW4iLCJoZWFwX2NodW5rc19nZW4iLCJsaXZlX3dvcmRzX2dlbiIsImxpdmVfYmxvY2tzX2dlbiIsImZyZWVfd29yZHNfZ2VuIiwiZnJlZV9ibG9ja3NfZ2VuIiwibGFyZ2VzdF9mcmVlX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwiZnJhZ21lbnRzX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiY29tcGFjdGlvbnNfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJ0b3BfaGVhcF93b3Jkc19nZW4iLCJjb21waWxlX2FjYyQxNSIsInN0YWNrX3NpemVfZ2VuIiwiY29tcGlsZV9hY2MkMTYiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiYV8zMTciLCJiXzMxOCIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8zNDAiLCJjdXN0b21fbWlub3JfcmF0aW9fMzM4IiwiY3VzdG9tX21ham9yX3JhdGlvXzMzNiIsIndpbmRvd19zaXplXzMzNCIsImFsbG9jYXRpb25fcG9saWN5XzMzMiIsInN0YWNrX2xpbWl0XzMzMCIsIm1heF9vdmVyaGVhZF8zMjgiLCJ2ZXJib3NlXzMyNiIsInNwYWNlX292ZXJoZWFkXzMyNCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzMyMiIsIm1pbm9yX2hlYXBfc2l6ZV8zMjAiLCJhcmdfMzQxIiwiYm5kc18zMTkiLCJhcmdfMzM5IiwiYm5kc18zMTkkMCIsImFyZ18zMzciLCJibmRzXzMxOSQxIiwiYm5kc18zMTkkMiIsImJuZHNfMzE5JDMiLCJibmRzXzMxOSQ0IiwiYm5kc18zMTkkNSIsImFyZ18zMjciLCJibmRzXzMxOSQ2IiwiYm5kc18zMTkkNyIsImFyZ18zMjMiLCJibmRzXzMxOSQ4IiwiYXJnXzMyMSIsImJuZHNfMzE5JDkiLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJzcGFjZV9vdmVyaGVhZCIsIm1ham9yX2hlYXBfaW5jcmVtZW50IiwibWlub3JfaGVhcF9zaXplIiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWlub3JfaGVhcF9zaXplX2Z1biIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2Z1biIsInNwYWNlX292ZXJoZWFkX2Z1biIsInZlcmJvc2VfZnVuIiwibWF4X292ZXJoZWFkX2Z1biIsInN0YWNrX2xpbWl0X2Z1biIsImFsbG9jYXRpb25fcG9saWN5X2Z1biIsIndpbmRvd19zaXplX2Z1biIsImN1c3RvbV9tYWpvcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZnVuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2Z1biIsIm1pbm9yX2hlYXBfc2l6ZV9nZW4iLCJtYWpvcl9oZWFwX2luY3JlbWVudF9nZW4iLCJzcGFjZV9vdmVyaGVhZF9nZW4iLCJ2ZXJib3NlX2dlbiIsIm1heF9vdmVyaGVhZF9nZW4iLCJzdGFja19saW1pdF9nZW4iLCJhbGxvY2F0aW9uX3BvbGljeV9nZW4iLCJ3aW5kb3dfc2l6ZV9nZW4iLCJjdXN0b21fbWFqb3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX3JhdGlvX2dlbiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV9nZW4iLCJlcXVhbCQ1IiwidHVuZSIsImxvZ2dlciIsIm9sZF9jb250cm9sX3BhcmFtcyIsImZpZWxkIiwib2xkX3ZhbHVlIiwibmV3X2NvbnRyb2xfcGFyYW1zIiwiZGlzYWJsZV9jb21wYWN0aW9uIiwicG9saWN5Iiwia2VlcF9hbGl2ZSIsIm8iLCJwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWwiLCJtZWFzdXJlX2ludGVybmFsIiwib25fcmVzdWx0IiwibWlub3Jfd29yZHNfYmVmb3JlIiwibWFqb3Jfd29yZHNfYmVmb3JlIiwibWlub3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hZnRlciIsIm1ham9yX3dvcmRzX2FsbG9jYXRlZCIsIm1pbm9yX3dvcmRzX2FsbG9jYXRlZCIsImlzX3plcm9fYWxsb2MiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMzQ5IiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzM0NyIsImFyZ18zNTAiLCJibmRzXzM0NiIsImFyZ18zNDgiLCJibmRzXzM0NiQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzM1NiIsImlzX21ham9yXzM1NCIsInNpemVfaW5fd29yZHNfMzUyIiwiYXJnXzM1NyIsImJuZHNfMzUxIiwiYXJnXzM1NSIsImJuZHNfMzUxJDAiLCJhcmdfMzUzIiwiYm5kc18zNTEkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImJhY2t0cmFjZSIsImJhY2t0cmFjZSQwIiwiaW5mbyQwIiwidHJhY2tlciIsImFkZF9maW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmaW5hbGl6ZV9yZWxlYXNlIiwidG9fc3RhYmxlX2Zvcm1hdCIsIm9mX3N0YWJsZV9mb3JtYXQiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwiY2FuX3NlbmRfdG8iLCJvZl9zeXN0ZW1faW50Iiwic2VuZCIsInNlbmRfZXhuIiwic2VuZF9pIiwic2V4cF9vZl9waWRfc3BlYyIsInNpZ3BlbmRpbmciLCJzaWdwcm9jbWFzayIsInNpZ3N1c3BlbmQiLCJ0b19zeXN0ZW1faW50Iiwic2lnbmFsIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJwcmludCIsImNhdGNoJDAiLCJwcmludF9iYWNrdHJhY2UiLCJnZXRfYmFja3RyYWNlIiwicmVjb3JkX2JhY2t0cmFjZSIsImJhY2t0cmFjZV9zdGF0dXMiLCJjYXB0dXJlIiwiZ2VuZXJhbCIsImhhc2hhYmxlJDEiLCJjYWNoZV9zaXplX2JvdW5kIiwibWF4X2NhY2hlX3NpemUiLCJjYWNoZSQwIiwiY2FjaGUiLCJyZWFsbHlfY2FsbF9mIiwiZl9vbmVzdGVwIiwibWVtb2l6ZWQiLCJvZl9jb21wYXJhYmxlIiwidiQxIiwiaW5pdGlhbF9sZW5ndGgiLCJuZXZlcl9zaHJpbmsiLCJuZXZlcl9zaHJpbmskMCIsImluaXRpYWxfbGVuZ3RoJDAiLCJhcnJfbGVuZ3RoIiwiYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfIiwiYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lIiwiYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtIiwiYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wIiwiY2hlY2tlZCIsImFwcGFyZW50X2Zyb250X2luZGV4IiwiYXBwYXJlbnRfYmFja19pbmRleCIsImFwcGFyZW50X2Zyb250IiwiYXBwYXJlbnRfYmFjayIsImFjdHVhbF9mcm9udCIsImFjdHVhbF9iYWNrIiwiYXBwYXJlbnRfaSIsInJlYWxfaSIsInN0b3BfcG9zIiwiYXBwYXJlbnRfaSQwIiwicmVhbF9pJDAiLCJyZWFsX2kkMSIsImFwcGFyZW50X2kkMSIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiaXRlcmlfaW50ZXJuYWwiLCJuZXdfYXJyIiwib2xkX2FyciIsImJyZWFrX3BvcyIsIm1heWJlX3Nocmlua191bmRlcmx5aW5nIiwiZ3Jvd191bmRlcmx5aW5nIiwicGVla19mcm9udF9ub25lbXB0eSIsInBlZWtfYmFja19ub25lbXB0eSIsImRlcXVldWVfZnJvbnRfbm9uZW1wdHkiLCJkZXF1ZXVlX2JhY2tfbm9uZW1wdHkiLCJkcm9wX2dlbiIsImFzc2VydF9ub3RfZW1wdHkiLCJ0cnVlX2luZGV4X2V4biIsImlfZnJvbV96ZXJvIiwidHJ1ZV9pIiwiZ2V0X29wdCIsImJhY2tfaW5kZXhfZXhuIiwiZnJvbnRfaW5kZXhfZXhuIiwiZ2V0JDAiLCJ1bnRyYW5zbGF0ZWRfaSIsImVwcmludCIsImVwcmludHMiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwiYXJnMV8wMDYiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsImNvbmNhdF9xdW90ZWQiLCJzcGxpdF9jb21tYW5kIiwiYWRkX3VuaXQiLCJ1bnRpbF9lbXB0eSIsImJzdHJfMDAyIiwicG9zXzAwNCIsImxlbl8wMDYiLCJpbml0XzAwOCIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwicmVzaXplIiwibWluX2xlbiIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW50ZXJuYWwiLCJic3RyIiwiY29udGVudHNfYnl0ZXMiLCJiaWdfY29udGVudHMiLCJ2b2xhdGlsZV9jb250ZW50cyIsImFkZF9jaGFyIiwicmVzZXQiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3BvcyIsImFkZF9zdWJieXRlcyIsImFkZF9iaWdzdHJpbmciLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJ1Zl9kc3QiLCJidWZfc3JjIiwiYWRkX2Jpbl9wcm90IiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwiaSQ0IiwicHJldmlvdXMkMCIsImkkNSIsIm9wZW5pbmciLCJsaW0kMCIsImkkMiIsImkkMyIsIm5ld19zdGFydCIsImskMiIsImNsb3NpbmciLCJsaW0iLCJpJDEiLCJuZXh0X2kiLCJpJDYiLCJpJDciLCJpJDgiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwidl9pbmRleCIsInZfbWluX2luZGV4Iiwidl9tYXhfaW5kZXgiLCJhcmc1XzAwOSIsImFyZzRfMDA4IiwiYXJnM18wMDciLCJhcmcyXzAwNiIsInJlczJfMDEyIiwicmVzM18wMTMiLCJyZXM0XzAxNCIsInJlczVfMDE1IiwiYXJnNV8wMjMiLCJhcmc0XzAyMiIsImFyZzNfMDIxIiwiYXJnMl8wMjAiLCJhcmcxXzAxOSIsImFyZzBfMDE4IiwicmVzNV8wMjkiLCJsYWJlbCIsImNyZWF0ZV9hbGwiLCJtYXhfaW5kZXgiLCJtaW5faW5kZXgiLCJkb2VzX3JhaXNlIiwic3ltYm9sJDE4IiwiaGFuZGxlcnMiLCJrZXkiLCJpbnAiLCJjYWxsYmFjayIsInZhbHVlIiwiaW5qZWN0IiwidiIsImNhbGxlZCIsImNhbGxiYWNrJDAiLCJhIiwiaGFuZGxlIiwicyIsInByaW50X3MiLCJOZXZlciIsInJldHVybiQwIiwiYmluZCIsInQiLCJmIiwib2ZfZnVuIiwibGF6eSIsIm1hcCIsImV2YWwkMCIsInQkMCIsInQkMSIsImwiLCJmJDAiLCJ0JDIiLCJjYWxsYmFjayQzIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDQiLCJjYWxsYmFjayQyIiwiaGFuZGxlJDAiLCJoYW5kbGUkMSIsIm9uX3Jlc3BvbnNlIiwib2Zfc3luY19mdW4iLCJtYWtlIiwicmVxdWVzdCIsInJlc3BvbmRfdG8iLCJyZXNwb25zZSIsIm1ha2UkMCIsImV2YWx1YXRvciIsImNyZWF0ZSIsInVwb24iLCJoYW5kbGVyIiwieCIsImZpbGxfaWZfZW1wdHkiLCJwZWVrIiwiaGFuZGxlJDIiLCJvZl9zdmFyX2Z1biIsImNyZWF0ZSQwIiwicXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIiwicXVlcnkiLCJtYXliZV9yZXNwb25kIiwicmVzcCIsIm9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIiLCJxcnQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1MiIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyOCIsImVycm9yX3NvdXJjZV8xNjEiLCJlcnJvcl9zb3VyY2VfMTkzIiwiZXJyb3Jfc291cmNlXzI0MSIsImVycm9yX3NvdXJjZV8yNDMiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwic2V4cF8wMzMiLCJmaWVsZF9zZXhwc18wMzQiLCJyXzAzNSIsImdfMDM3IiwiYl8wMzkiLCJhXzA0MSIsImR1cGxpY2F0ZXNfMDQzIiwiZXh0cmFfMDQ0Iiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0NyIsImZpZWxkX25hbWVfMDQ1IiwidGFpbF8wNTQiLCJmaWVsZF9zZXhwXzA0NiQ0IiwiZmllbGRfc2V4cF8wNDYiLCJ4XzA1NSIsImZpZWxkX3NleHBfMDQ2JDAiLCJmdmFsdWVfMDUxIiwiZmllbGRfc2V4cF8wNDYkMSIsImZ2YWx1ZV8wNTAiLCJmaWVsZF9zZXhwXzA0NiQyIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDQ4IiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJzZXhwX29mX3QkMCIsImFfMDYzIiwiYl8wNjEiLCJnXzA1OSIsInJfMDU3IiwiYXJnXzA2NCIsImJuZHNfMDU2IiwiYXJnXzA2MiIsImJuZHNfMDU2JDAiLCJhcmdfMDYwIiwiYm5kc18wNTYkMSIsImFyZ18wNTgiLCJibmRzXzA1NiQyIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2NCIsInYzIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QkMCIsInBvcyQxIiwicG9zJDIiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsInZfciIsInZfZyIsInZfYiIsInZfYSIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDY1IiwiYl8wNjYiLCJuJDAiLCJuJDEiLCJhXzA2NyIsImJfMDY4IiwiZyIsImEiLCJ0X29mX3NleHAkMSIsInNleHBfMDcwIiwiZmllbGRfc2V4cHNfMDcxIiwiaF8wNzIiLCJzXzA3NCIsImxfMDc2IiwiYV8wNzgiLCJkdXBsaWNhdGVzXzA4MCIsImV4dHJhXzA4MSIsInNleHBfMDcwJDAiLCJmaWVsZF9zZXhwc18wODQiLCJmaWVsZF9uYW1lXzA4MiIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODMkNCIsImZpZWxkX3NleHBfMDgzIiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4MyQwIiwiZnZhbHVlXzA4NyIsImZpZWxkX3NleHBfMDgzJDEiLCJmdmFsdWVfMDg2IiwiZmllbGRfc2V4cF8wODMkMiIsImZ2YWx1ZV8wODgiLCJmaWVsZF9zZXhwXzA4MyQzIiwiZnZhbHVlXzA4NSIsImFfMDc5IiwibF8wNzciLCJzXzA3NSIsImhfMDczIiwic2V4cF9vZl90JDEiLCJhXzEwMCIsImxfMDk4Iiwic18wOTYiLCJoXzA5NCIsImFyZ18xMDEiLCJibmRzXzA5MyIsImFyZ18wOTkiLCJibmRzXzA5MyQwIiwiYXJnXzA5NyIsImJuZHNfMDkzJDEiLCJhcmdfMDk1IiwiYm5kc18wOTMkMiIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl93cml0ZXJfdCQxIiwiYmluX3JlYWRfdCQzIiwiYmluX3JlYWRfdCQ0Iiwidl9oIiwidl9zIiwidl9sIiwiYmluX3JlYWRlcl90JDEiLCJiaW5fdCQxIiwiY29tcGFyZSQxIiwiYV8xMDIiLCJiXzEwMyIsImFfMTA0IiwiYl8xMDUiLCJjcmVhdGUkMCIsImgiLCJsIiwidF9vZl9zZXhwJDIiLCJzZXhwXzEwOSIsImF0b21fMTA3Iiwic2V4cF9hcmdzXzExMCIsImF0b21fMTA3JDAiLCJhcmcwXzEyMiIsInJlczBfMTIzIiwiYXJnMF8xMTYiLCJyZXMwXzExNyIsImFyZzBfMTE5IiwicmVzMF8xMjAiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMjUiLCJyZXMwXzEyNiIsInRfb2Zfc2V4cCQzIiwic2V4cF8xMjciLCJzZXhwX29mX3QkMiIsInZfMTM0Iiwidl8xMzMiLCJ2XzEyOSIsInZfMTMxIiwidl8xMzAiLCJ2XzEzMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMTM1IiwiYl8xMzYiLCJyaWdodF8xNDYiLCJsZWZ0XzE0NSIsInJpZ2h0XzEzOCIsImxlZnRfMTM3IiwicmlnaHRfMTQyIiwibGVmdF8xNDEiLCJyaWdodF8xNDAiLCJsZWZ0XzEzOSIsInJpZ2h0XzE0NCIsImxlZnRfMTQzIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTU2IiwiYXRvbV8xNTQiLCJzZXhwX2FyZ3NfMTU3IiwiYXRvbV8xNTQkMCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE2NiIsInJlczBfMTY3IiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcwXzE2MyIsInJlczBfMTY0IiwiYXJnMF8xNTkiLCJyZXMwXzE2MCIsImFyZzBfMTg3IiwicmVzMF8xODgiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiYXJnMF8xNzgiLCJyZXMwXzE3OSIsImFyZzBfMTc1IiwicmVzMF8xNzYiLCJhcmcwXzE3MiIsInJlczBfMTczIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE5MiIsInNleHBfb2ZfdCQzIiwidl8yMDUiLCJ2XzIwMyIsInZfMjAxIiwidl8xOTgiLCJ2XzE5NiIsInZfMTk0Iiwidl8yMDQiLCJ2XzIwMiIsInZfMjAwIiwidl8xOTciLCJ2XzE5NSIsInZfMTk5IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzIwNiIsImJfMjA3IiwicmlnaHRfMjE3IiwibGVmdF8yMTYiLCJyaWdodF8yMTMiLCJsZWZ0XzIxMiIsInJpZ2h0XzIwOSIsImxlZnRfMjA4IiwicmlnaHRfMjI5IiwibGVmdF8yMjgiLCJyaWdodF8yMjciLCJsZWZ0XzIyNiIsInJpZ2h0XzIyMyIsImxlZnRfMjIyIiwicmlnaHRfMjI1IiwibGVmdF8yMjQiLCJyaWdodF8yMjEiLCJsZWZ0XzIyMCIsInJpZ2h0XzIxNSIsImxlZnRfMjE0IiwicmlnaHRfMjExIiwibGVmdF8yMTAiLCJyaWdodF8yMTkiLCJsZWZ0XzIxOCIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMjMyIiwiYl8yMzMiLCJ0X29mX3NleHAkNiIsInNleHBfMjM5IiwiYXRvbV8yMzciLCJhdG9tXzIzNyQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzI0MiIsInNleHBfb2ZfdCQ0Iiwidl8yNDQiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiaXNfZW1wdHkiLCJlbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsIndpZHRoIiwibWluX3dpZHRoIiwibWF4X3dpZHRoIiwiaGVpZ2h0IiwibWluX2hlaWdodCIsIm1heF9oZWlnaHQiLCJwYWRkaW5nX3RvcCIsInBhZGRpbmdfYm90dG9tIiwicGFkZGluZ19sZWZ0IiwicGFkZGluZ19yaWdodCIsInBhZGRpbmciLCJ1bmlmb3JtX3BhZGRpbmciLCJtYXJnaW5fdG9wIiwibWFyZ2luX2JvdHRvbSIsIm1hcmdpbl9sZWZ0IiwibWFyZ2luX3JpZ2h0IiwibWFyZ2luIiwidW5pZm9ybV9tYXJnaW4iLCJjb25jYXQydiIsImNvbmNhdDN2IiwiYm9yZGVyX3ZhbHVlIiwic3R5bGUkMCIsIndpZHRoJDAiLCJjb2xvciQwIiwiY3JlYXRlX2JvcmRlciIsInNpZGUiLCJib3JkZXJfdG9wIiwiYm9yZGVyX2JvdHRvbSIsImJvcmRlcl9sZWZ0IiwiYm9yZGVyX3JpZ2h0IiwiYm9yZGVyIiwib3V0bGluZSIsImJvcmRlcl9jb2xsYXBzZSIsImJvcmRlcl9zcGFjaW5nIiwiYm9yZGVyX3JhZGl1cyIsInRleHRfZGVjb3JhdGlvbiIsImxpbmUiLCJsaW5lJDAiLCJpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIiwiZmxleF9jb250YWluZXIiLCJvcHQiLCJhbGlnbl9pdGVtcyIsImp1c3RpZnlfY29udGVudCIsInN0aCIsImlubGluZSIsInN0aCQwIiwic3RoJDEiLCJ3cmFwIiwiZGlyZWN0aW9uJDAiLCJ3cmFwJDAiLCJhbGlnbl9pdGVtcyQwIiwianVzdGlmeV9jb250ZW50JDAiLCJmbGV4X2l0ZW0iLCJvcmRlciIsImdyb3ciLCJiYXNpcyIsInNocmluayIsIm9yZGVyJDAiLCJiYXNpcyQwIiwiZmxleCIsImFsaWduX3NlbGYiLCJyZXNpemUiLCJ2YWx1ZSQwIiwiYW5pbWF0aW9uIiwiZHVyYXRpb24iLCJkZWxheSIsImZpbGxfbW9kZSIsIml0ZXJfY291bnQiLCJ0aW1pbmdfZnVuY3Rpb24iLCJzcGFuX3RvX3N0cmluZyIsImQiLCJmaWxsX21vZGUkMCIsInVzZXJfc2VsZWN0IiwiY3NzIiwiczIiLCJ4IiwidHlwZV9vZiIsIngiLCJpbnN0YW5jZV9vZiIsImNvbnN0ciIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwiZ2xvYmFsIiwiYXJyYXlfbWFrZSIsIm4iLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9vZl9qc19mcm9tIiwiZiIsIm9ianMiLCJzdGFydCIsImkiLCJhcnJheV9vZl9qcyIsImFycmF5X3RvX2pzIiwiYXJyIiwiYSIsImxpc3Rfb2ZfanNfZnJvbSIsImxpc3Rfb2ZfanMiLCJsaXN0X3RvX2pzIiwibCIsIm9wdGlvbl9vZl9qcyIsIm9wdGlvbl90b19qcyIsInVuaXRfdG9fanMiLCJ1bml0X29mX2pzIiwic2VsZl8xIiwiaGFzX3Byb3BlcnR5IiwibyIsImVtcHR5X29iaiIsIml0ZXJfcHJvcGVydGllcyIsImFwcGx5X2FyciIsImNhbGxfYXJyIiwicyIsImlzX251bGwiLCJvYmpfdHlwZSIsInRfdG9fanMiLCJ0X29mX2pzIiwidF90b19qcyQwIiwidF9vZl9qcyQwIiwidF90b19qcyQxIiwidF9vZl9qcyQxIiwidF90b19qcyQyIiwidF9vZl9qcyQyIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInRvX2pzX3N0cmluZyIsInZhbHVlIiwidG9fanNfc3RyaW5nX2ZpeGVkIiwiZGlnaXRzIiwidG9fanNfc3RyaW5nX3ByZWNpc2lvbiIsInRvX2pzX3N0cmluZ19leHBvbmVudGlhbCIsInRvX3N0cmluZyIsInRvX3N0cmluZ19maXhlZCIsInRvX3N0cmluZ19wcmVjaXNpb24iLCJ0b19zdHJpbmdfZXhwb25lbnRpYWwiLCJwcmludCIsImYiLCJ2aXNpYmlsaXR5X2hhbmRsZXJzIiwic2VxdWVuY2VfYXNfc2libGluZyIsImxlZnQiLCJ1bmxlc3Nfc3RvcHBlZCIsImNvbnRhaW5zX3N0b3AiLCJlcyIsImN1cnJlbnRfZG9tX2V2ZW50IiwiaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIiwiaGFuZGxlIiwiZG9tX2V2ZW50IiwiZXZlbnQiLCJvbGQiLCJzZXhwX29mX3QiLCJ0eXBlX2lkIiwiZ2VuZXJpY19ob29rIiwicGFjayIsImlkIiwiZGVzdHJveSIsInVwZGF0ZSIsImluaXQiLCJpbnB1dF9pZCIsImlucHV0IiwiaW5pdCQwIiwidXBkYXRlJDAiLCJkZXN0cm95JDAiLCJnZW5lcmljX2hvb2skMCIsImV4dHJhIiwiY29tYmluZSIsInJpZ2h0IiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJlbGVtZW50Iiwic3RhdGUiLCJhbmltYXRpb25faWQiLCJvbGRfaW5wdXQiLCJjcmVhdGUiLCJjb21iaW5lX2lucHV0cyIsInNldCIsIng3IiwieDUiLCJ4NiIsImdldCIsIngxMSIsIngxMCIsImRlbGV0ZSQwIiwieDE2IiwieDE1IiwidF9vZl9qcyIsIngiLCJ0X3RvX2pzIiwidF9vZl9qcyQwIiwidF90b19qcyQwIiwic2V0X3Byb3BlcnR5IiwiaGFzX3Byb3BlcnR5IiwiaGFzX2F0dHJpYnV0ZSIsInQiLCJuYW1lIiwic2V0X2F0dHJpYnV0ZSIsInRfb2ZfanMkMSIsInRfdG9fanMkMSIsImlzX2VtcHR5IiwiZl9pZCIsImlkX3NleHAiLCJjcmVhdGUkMSIsImluZm8iLCJvcHQiLCJzdGgiLCJzdGgkMCIsInMiLCJlbHQiLCJkb21fbm9kZSIsInMwIiwicHJldl9zdGF0ZSIsImRvbV9ub2RlJDAiLCJlbXB0eSIsInJoYW5kbGVyIiwieF8wMDIiLCJsaGFuZGxlciIsInhfMDAxIiwiY3JlYXRlX2Zsb2F0IiwicHJvcGVydHkiLCJzdHJpbmdfcHJvcGVydHkiLCJib29sX3Byb3BlcnR5Iiwic3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MiLCJjcmVhdGVfaG9vayIsImhvb2siLCJtYW55IiwiYXR0cnMiLCJtYW55X3dpdGhvdXRfbWVyZ2UiLCJjb21iaW5lJDAiLCJ3YXJuaW5nX2NvdW50IiwiY3VycmVudCIsIndhcm5fcyIsInF1b3RhIiwid2FybmluZ19jb3VudCQwIiwicmVzZXRfd2FybmluZ19jb3VudCIsImNvbWJpbmluZ19tYXBfYWRkIiwibWFwIiwia2V5IiwiZXhpc3RpbmdfdmFsdWUiLCJlbXB0eV9tZXJnZSIsInN0eWxlIiwiY3NzIiwidmFsaWRfY2xhc3NfbmFtZSIsImludmFsaWQiLCJjbGFzcyQwIiwiY2xhc3NuYW1lIiwiY2xhc3NlcyIsImNsYXNzZXMkMCIsImNsYXNzbmFtZXMiLCJocmVmIiwiciIsInRhcmdldCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsImhpZGRlbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImZvciQwIiwidHlwZSIsInZhbHVlX3Byb3AiLCJ0YWJpbmRleCIsInRpdGxlIiwic3JjIiwibWluIiwibWF4IiwiY29sc3BhbiIsInJvd3NwYW4iLCJkcmFnZ2FibGUiLCJiIiwiY3JlYXRlJDAiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwiY2xpcGJvYXJkIiwiZHJhZyIsInBvaW50ZXIiLCJhbmltYXRpb24iLCJvbiIsImhhbmRsZXIiLCJvbl9mb2N1cyIsIm9uX2JsdXIiLCJvbl9jbGljayIsIm9uX2NvbnRleHRtZW51Iiwib25fZG91YmxlX2NsaWNrIiwib25fZHJhZyIsIm9uX2RyYWdzdGFydCIsIm9uX2RyYWdlbmQiLCJvbl9kcmFnZW50ZXIiLCJvbl9kcmFnbGVhdmUiLCJvbl9kcmFnb3ZlciIsIm9uX2Ryb3AiLCJvbl9tb3VzZW1vdmUiLCJvbl9tb3VzZXVwIiwib25fbW91c2Vkb3duIiwib25fbW91c2VlbnRlciIsIm9uX21vdXNlbGVhdmUiLCJvbl9tb3VzZW92ZXIiLCJvbl9tb3VzZW91dCIsIm9uX2tleXVwIiwib25fa2V5cHJlc3MiLCJvbl9rZXlkb3duIiwib25fc2Nyb2xsIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fY29weSIsIm9uX2N1dCIsIm9uX3Bhc3RlIiwib25fcmVzZXQiLCJvbl9hbmltYXRpb25lbmQiLCJjb25zdF9pZ25vcmUiLCJydW5fY29lcmNpb24iLCJjb2VyY2lvbiIsInByZXYiLCJvbl9pbnB1dF9ldmVudCIsInRleHQiLCJvbl9jaGFuZ2UiLCJvbl9pbnB1dCIsInRvX3JhdyIsImF0dHIiLCJhdHRyc19vYmoiLCJ0YWtlX3NlY29uZF9zdHlsZXMiLCJmaXJzdCIsInNlY29uZCIsInRha2Vfc2Vjb25kX2NsYXNzZXMiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm5hbWUkMCIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwiZmlsdGVyX2J5X2tpbmQiLCJhIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZV91cF90eXBlX2lkIiwibW91c2VfbW92ZV90eXBlX2lkIiwicmVzMV8wMDkiLCJ0YWciLCJ3aXRoX2tleSIsIm1hcF9hdHRycyIsInJhd19hdHRycyIsImFkZF9jbGFzc2VzIiwiY2hpbGRyZW4iLCJ3Iiwia2luZCIsImNoaWxkcmVuX3JhdyIsIm90aGVyIiwiZWxlbWVudF9leHBlcnQiLCJ3aWRnZXQiLCJjcmVhdGVfY2hpbGRsZXNzIiwiY3JlYXRlX3N2ZyIsIm5vbmUiLCJ0ZXh0ZiIsImZvcm1hdCIsIndpZGdldF9vZl9tb2R1bGUiLCJtIiwiYXJnMF8wMDYiLCJzdGF0ZV8wMDQiLCJpbnB1dF8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsInJlczBfMDA4IiwicHJldl9pbnB1dCIsImVsZW1lbnQkMCIsInN0YXRlJDAiLCJpIiwidG9fZG9tIiwiaW5uZXJfaHRtbCIsImNvbnRlbnQiLCJidWlsZF9zZXhwIiwiZGVidWciLCJpbm5lcl9odG1sX3N2ZyIsImlubmVyX2h0bWwkMCIsImJvZHkiLCJidXR0b24iLCJjb2RlIiwiZGl2IiwibWFpbiIsImZpZWxkc2V0IiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHRtbCIsInRleHRhcmVhIiwic2VsZWN0Iiwib3B0aW9uIiwibGFiZWwiLCJsaSIsInAiLCJwcmUiLCJzZWN0aW9uIiwic3BhbiIsInN0cm9uZyIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsInByZXZpb3VzIiwiYXBwbHkiLCJjcmVhdGUkMiIsImNyZWF0ZV9zdmckMCIsImhlcmUiLCJlcnJvcl9zb3VyY2VfMDA0IiwidF9vZl9zZXhwIiwic2V4cF9vZl90IiwidmFsaWRhdGUiLCJ0IiwiZXF1YWwiLCJ0MSIsInQyIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsInNleHBfb2ZfdCQxIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInQxIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInNleHBfb2ZfdCIsInZfMDA2Iiwic2xvdHNfcGVyX3R1cGxlXzAwMiIsImFyZ18wMDMiLCJibmRzXzAwMSIsInNleHBfb2ZfdCQwIiwib2ZfdHVwbGVfMDA3Iiwib2ZfdmFyaWFudF8wMDgiLCJzbG90c19wZXJfdHVwbGUiLCJuIiwic2V4cF9vZl90MSIsIm9mX2EwXzAwOSIsInNleHBfb2ZfdDIiLCJvZl9hMF8wMTAiLCJvZl9hMV8wMTEiLCJzZXhwX29mX3QzIiwib2ZfYTBfMDEyIiwib2ZfYTFfMDEzIiwib2ZfYTJfMDE0Iiwic2V4cF9vZl90NCIsIm9mX2EwXzAxNSIsIm9mX2ExXzAxNiIsIm9mX2EyXzAxNyIsIm9mX2EzXzAxOCIsInNleHBfb2ZfdDUiLCJvZl9hMF8wMTkiLCJvZl9hMV8wMjAiLCJvZl9hMl8wMjEiLCJvZl9hM18wMjIiLCJvZl9hNF8wMjMiLCJzZXhwX29mX3Q2Iiwib2ZfYTBfMDI0Iiwib2ZfYTFfMDI1Iiwib2ZfYTJfMDI2Iiwib2ZfYTNfMDI3Iiwib2ZfYTRfMDI4Iiwib2ZfYTVfMDI5Iiwic2V4cF9vZl90NyIsIm9mX2EwXzAzMCIsIm9mX2ExXzAzMSIsIm9mX2EyXzAzMiIsIm9mX2EzXzAzMyIsIm9mX2E0XzAzNCIsIm9mX2E1XzAzNSIsIm9mX2E2XzAzNiIsInNleHBfb2ZfdDgiLCJvZl9hMF8wMzciLCJvZl9hMV8wMzgiLCJvZl9hMl8wMzkiLCJvZl9hM18wNDAiLCJvZl9hNF8wNDEiLCJvZl9hNV8wNDIiLCJvZl9hNl8wNDMiLCJvZl9hN18wNDQiLCJzZXhwX29mX3Q5Iiwib2ZfYTBfMDQ1Iiwib2ZfYTFfMDQ2Iiwib2ZfYTJfMDQ3Iiwib2ZfYTNfMDQ4Iiwib2ZfYTRfMDQ5Iiwib2ZfYTVfMDUwIiwib2ZfYTZfMDUxIiwib2ZfYTdfMDUyIiwib2ZfYThfMDUzIiwic2V4cF9vZl90MTAiLCJvZl9hMF8wNTQiLCJvZl9hMV8wNTUiLCJvZl9hMl8wNTYiLCJvZl9hM18wNTciLCJvZl9hNF8wNTgiLCJvZl9hNV8wNTkiLCJvZl9hNl8wNjAiLCJvZl9hN18wNjEiLCJvZl9hOF8wNjIiLCJvZl9hOV8wNjMiLCJzZXhwX29mX3QxMSIsIm9mX2EwXzA2NCIsIm9mX2ExXzA2NSIsIm9mX2EyXzA2NiIsIm9mX2EzXzA2NyIsIm9mX2E0XzA2OCIsIm9mX2E1XzA2OSIsIm9mX2E2XzA3MCIsIm9mX2E3XzA3MSIsIm9mX2E4XzA3MiIsIm9mX2E5XzA3MyIsIm9mX2ExMF8wNzQiLCJzZXhwX29mX3QxMiIsIm9mX2EwXzA3NSIsIm9mX2ExXzA3NiIsIm9mX2EyXzA3NyIsIm9mX2EzXzA3OCIsIm9mX2E0XzA3OSIsIm9mX2E1XzA4MCIsIm9mX2E2XzA4MSIsIm9mX2E3XzA4MiIsIm9mX2E4XzA4MyIsIm9mX2E5XzA4NCIsIm9mX2ExMF8wODUiLCJvZl9hMTFfMDg2Iiwic2V4cF9vZl90MTMiLCJvZl9hMF8wODciLCJvZl9hMV8wODgiLCJvZl9hMl8wODkiLCJvZl9hM18wOTAiLCJvZl9hNF8wOTEiLCJvZl9hNV8wOTIiLCJvZl9hNl8wOTMiLCJvZl9hN18wOTQiLCJvZl9hOF8wOTUiLCJvZl9hOV8wOTYiLCJvZl9hMTBfMDk3Iiwib2ZfYTExXzA5OCIsIm9mX2ExMl8wOTkiLCJzZXhwX29mX3QxNCIsIm9mX2EwXzEwMCIsIm9mX2ExXzEwMSIsIm9mX2EyXzEwMiIsIm9mX2EzXzEwMyIsIm9mX2E0XzEwNCIsIm9mX2E1XzEwNSIsIm9mX2E2XzEwNiIsIm9mX2E3XzEwNyIsIm9mX2E4XzEwOCIsIm9mX2E5XzEwOSIsIm9mX2ExMF8xMTAiLCJvZl9hMTFfMTExIiwib2ZfYTEyXzExMiIsIm9mX2ExM18xMTMiLCJuYW1lJDEiLCJwcmVmaXgiLCJuYW1lJDAiLCJuYW1lIiwiZmFpbHdpdGhzIiwiYXJjaF9zaXh0eWZvdXIiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsInRvX3N0cmluZyIsInNwcmludGYiLCJjb25jYXQiLCJsIiwibWF4X3Nsb3QiLCJvZl9zbG90c18wMDciLCJvZl9hXzAwOCIsImVxdWFsIiwidDAiLCJhcnJheV9pbmRleF9udW1fYml0cyIsIm1hc2tlZF90dXBsZV9pZF9udW1fYml0cyIsIm1heF9hcnJheV9sZW5ndGgiLCJpbnZhcmlhbnQiLCJ0IiwiaW5pdCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInBoeXNfZXF1YWwiLCJwaHlzX2NvbXBhcmUiLCJudWxsJDAiLCJpc19udWxsIiwiY3JlYXRlIiwiaGVhZGVyX2luZGV4IiwidHVwbGVfaWQiLCJoZWFkZXJfaW5kZXhfbWFzayIsIm1hc2tlZF90dXBsZV9pZCIsImludmFyaWFudCQwIiwic2xvdF9pbmRleCIsInNsb3QiLCJmaXJzdF9zbG90X2luZGV4IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsIm51bGwkMSIsImlzX251bGwkMCIsImlzX2ZyZWUiLCJpc191c2VkIiwiaWQiLCJtZXRhZGF0YV9pbmRleCIsInN0YXJ0X29mX3R1cGxlc19pbmRleCIsIm1heF9jYXBhY2l0eSIsImR1bW15IiwiciIsImZpcnN0X2ZyZWUiLCJzZXRfZmlyc3RfZnJlZSIsInYiLCJuZXh0X2lkIiwic2V0X25leHRfaWQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiY2FwYWNpdHkiLCJkdW1teSQwIiwiZmlyc3RfZnJlZSQwIiwibmV4dF9pZCQwIiwibGVuZ3RoJDAiLCJjYXBhY2l0eSQwIiwic2xvdHNfcGVyX3R1cGxlJDAiLCJhcnJheV9pbmRpY2VzX3Blcl90dXBsZSIsImFycmF5X2xlbmd0aCIsInR1cGxlX251bV90b19oZWFkZXJfaW5kZXgiLCJ0dXBsZV9udW0iLCJ0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCIsIm1ldGFkYXRhIiwibGVuZ3RoJDEiLCJzZXhwX29mX3QkMyIsInNleHBfb2ZfdHkiLCJjYXBhY2l0eV8wMTgiLCJzbG90c19wZXJfdHVwbGVfMDE2IiwibGVuZ3RoXzAyMCIsIm5leHRfaWRfMDIyIiwiZmlyc3RfZnJlZV8wMjQiLCJkdW1teV8wMjYiLCJhcmdfMDI3IiwiYm5kc18wMTUiLCJhcmdfMDI1IiwiYm5kc18wMTUkMCIsImFyZ18wMjMiLCJibmRzXzAxNSQxIiwiYXJnXzAyMSIsImJuZHNfMDE1JDIiLCJhcmdfMDE5IiwiYm5kc18wMTUkMyIsImFyZ18wMTciLCJibmRzXzAxNSQ0IiwidW5zYWZlX2hlYWRlciIsInVuc2FmZV9zZXRfaGVhZGVyIiwiaGVhZGVyIiwiaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyIsInVuc2FmZV9wb2ludGVyX2lzX2xpdmUiLCJwb2ludGVyIiwiaGVhZGVyX2luZGV4JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMiIsInQkMCIsInNob3VsZF9lcXVhbCIsInQkMSIsInhfMDA5IiwiZXhuJDAiLCJleG4iLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImFyZzJfMDMwIiwiYXJnMV8wMjkiLCJhcmcwXzAyOCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJyZXMyXzAzMyIsImludmFyaWFudCQxIiwiaW52YXJpYW50X2EiLCJjaGVjayIsImYiLCJmaWVsZCIsImZpcnN0X3Nsb3QiLCJmcmVlIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczBfMDM2IiwicmVzMV8wMzciLCJjYXBhY2l0eSQxIiwiaXNfZnVsbCIsInVuc2FmZV9hZGRfdG9fZnJlZV9saXN0Iiwic2V0X21ldGFkYXRhIiwiY3JlYXRlX2FycmF5IiwidW5zYWZlX2luaXRfcmFuZ2UiLCJsbyIsImhpIiwidHVwbGVfbnVtJDAiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJvZl9zbG90c18wNzciLCJpc192YWxpZF8wNzkiLCJwb2ludGVyXzA4MSIsImFyZ18wODIiLCJibmRzXzA3OCIsImFyZ18wODAiLCJibmRzXzA3OCQwIiwiZmllbGQwIiwiZmllbGQxIiwidHlwZW5hbWUiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImZpZWxkcyIsImlzX3ZhbGlkIiwiZm9sbG93IiwieF8wODMiLCJpbnZhbGlkYXRlIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwidHMiLCJhcmciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ4XzA2OSIsInZfMDY4IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2IiwicG9zJDkiLCJwb3MkOCIsInBvcyQ3IiwicG9zJDYiLCJhcmdfMTA4IiwicG9zJDUiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwiZXJyb3Jfc291cmNlXzAzOSIsIm1heF90aW1lIiwibWluX3RpbWUiLCJtYXhfbnVtX2JpdHMiLCJtaW5fdmFsdWUiLCJpbnZhcmlhbnQiLCJ0Iiwib2ZfaW50IiwiaSIsInN5bWJvbCQyIiwidDEiLCJ0MiIsInN5bWJvbCQzIiwicG93MiIsInNleHBfb2ZfdCQwIiwieF8wMDciLCJudW1fYml0c19pbnRlcm5hbCIsIm51bV9iaXRzIiwiaW52YXJpYW50JDAiLCJudW1fa2V5X2JpdHMiLCJ0X29mX3NleHAkMCIsInhfMDA2IiwiY3JlYXRlX2V4biIsIm9wdCIsInhfMDA4Iiwic3RoIiwiZXh0ZW5kX3RvX21heF9udW1fYml0cyIsImJpdHMiLCJpbnRzIiwibGV2ZWxfYml0c19kZWZhdWx0IiwiY29tcGFyZSIsImVxdWFsJDAiLCJ4XzAxMiIsInhfMDEzIiwidG9fc2V4cGFibGUiLCJzZXhwX29mX3QkMSIsIm9uZV9uYW5vc2Vjb25kIiwiYWJvdXRfb25lX21pY3Jvc2Vjb25kIiwiYWJvdXRfb25lX21pbGxpc2Vjb25kIiwiYWJvdXRfb25lX3NlY29uZCIsImFib3V0X29uZV9kYXkiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJ2IiwibGV2ZWxfYml0cyQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzAxOSIsImZpZWxkX3NleHBzXzAyMCIsImFsYXJtX3ByZWNpc2lvbl8wMjEiLCJsZXZlbF9iaXRzXzAyMyIsImNhcGFjaXR5XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4Iiwic2V4cF8wMTkkMCIsImZpZWxkX3NleHBzXzAzMSIsImZpZWxkX25hbWVfMDI5IiwidGFpbF8wNDEiLCJmaWVsZF9zZXhwXzAzMCQzIiwiZmllbGRfc2V4cF8wMzAiLCJ4XzA0MiIsImZpZWxkX3NleHBfMDMwJDAiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMzAkMSIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAzMCQyIiwiZnZhbHVlXzAzNSIsImxldmVsX2JpdHNfMDI0IiwibWF0Y2giLCJhbGFybV9wcmVjaXNpb25fMDIyIiwidl8wMzgiLCJ2XzAzOCQwIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wNDgiLCJsZXZlbF9iaXRzXzA0NiIsImFsYXJtX3ByZWNpc2lvbl8wNDQiLCJibmRzXzA0MyIsInZfMDQ5IiwiYXJnXzA1MSIsImJuZF8wNTAiLCJibmRzXzA0MyQwIiwiYXJnXzA0NyIsImJuZHNfMDQzJDEiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMiIsImFsYXJtX3ByZWNpc2lvbiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJjYXBhY2l0eSIsImxvb3AiLCJyZW1haW5pbmciLCJ0JDAiLCJiIiwibWljcm9zZWNvbmRfcHJlY2lzaW9uIiwiZHVyYXRpb25zIiwibnVtX2JpdHNfYWNjdW0iLCJsZXZlbF9udW1fYml0cyIsIm51bV9iaXRzX2FjY3VtJDAiLCJkdXJhdGlvbiIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQ0IiwiY3JlYXRlJDAiLCJudW1fa2V5cyIsImNyZWF0ZSQxIiwiYml0c19wZXJfc2xvdCIsInRvX2ludDYzIiwib2ZfaW50NjMiLCJzY2FsZV9pbnQiLCJzZXhwX29mX3QkNyIsIm9mX2ludDYzJDAiLCJ0b19pbnQ2MyQwIiwiYWRkIiwiYWRkX2NsYW1wX3RvX21heCIsInN1YiIsImRpZmYiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2siLCJzZXhwX29mX3Bvb2xfc2xvdHMiLCJvZl9hXzA1NCIsInhfMDU1Iiwic2V4cF9vZl90JDgiLCJvZl9hXzA1NiIsInhfMDU3IiwibnVsbCQwIiwibnVsbCQxIiwiaXNfbnVsbCIsImZyZWUiLCJrZXkiLCJwIiwiYXQiLCJ2YWx1ZSIsImxldmVsX2luZGV4IiwicHJldiIsInNldF9wcmV2IiwieCIsIm5leHQiLCJzZXRfbmV4dCIsImlzX3ZhbGlkIiwiZ3JvdyIsImlzX2Z1bGwiLCJvZl9leHRlcm5hbF9leG4iLCJwb29sIiwibGluayIsIml0ZXIiLCJmaXJzdCIsImYiLCJjdXJyZW50IiwiY29udGludWUkMCIsIm5leHQkMCIsInNsb3RzIiwibWF4X2FsbG93ZWRfa2V5Iiwic2V0X21heF9hbGxvd2VkX2tleSIsIm1pbl9hbGxvd2VkX2tleSIsInNldF9taW5fYWxsb3dlZF9rZXkiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5Iiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDY1IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA3OSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDc3Iiwia2V5c19wZXJfc2xvdF8wNzUiLCJiaXRzX3Blcl9zbG90XzA3MyIsInNsb3RzX21hc2tfMDcxIiwiYml0c18wNjkiLCJpbmRleF8wNjciLCJsZW5ndGhfMDgxIiwibWluX2FsbG93ZWRfa2V5XzA4MyIsIm1heF9hbGxvd2VkX2tleV8wODUiLCJzbG90c18wODciLCJhcmdfMDg4IiwiYm5kc18wNjYiLCJhcmdfMDg2IiwiYm5kc18wNjYkMCIsImFyZ18wODQiLCJibmRzXzA2NiQxIiwiYXJnXzA4MiIsImJuZHNfMDY2JDIiLCJhcmdfMDgwIiwiYm5kc18wNjYkMyIsImFyZ18wNzgiLCJibmRzXzA2NiQ0IiwiYXJnXzA3NiIsImJuZHNfMDY2JDUiLCJhcmdfMDc0IiwiYm5kc18wNjYkNiIsImFyZ18wNzIiLCJibmRzXzA2NiQ3IiwiYXJnXzA3MCIsImJuZHNfMDY2JDgiLCJhcmdfMDY4IiwiYm5kc18wNjYkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCQwIiwiY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkiLCJwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSIsImxldmVscyIsImVsdF9rZXlfbG93ZXJfYm91bmQiLCJzZXRfZWx0X2tleV9sb3dlcl9ib3VuZCIsIm1pbl9lbHQiLCJzZXRfbWluX2VsdCIsInNldF9wb29sIiwibGVuZ3RoJDEiLCJzZXRfbGVuZ3RoJDAiLCJsZXZlbHMkMCIsImVsdF9rZXlfbG93ZXJfYm91bmQkMCIsIm1pbl9lbHQkMCIsInBvb2wkMCIsImxlbmd0aCQyIiwiaXNfZW1wdHkiLCJudW1fbGV2ZWxzIiwibWluX2FsbG93ZWRfa2V5JDEiLCJtYXhfYWxsb3dlZF9rZXkkMSIsImludGVybmFsX2l0ZXIiLCJsZXZlbCIsInNsb3RfaW5kZXgiLCJlbHQiLCJjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2siLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2FscmVhZHlfZm91bmQiLCJtaW5fa2V5X2FscmVhZHlfZm91bmQiLCJudW1fbGV2ZWxzJDAiLCJzbG90X21pbl9rZXkiLCJzbG90JDAiLCJjdXJyZW50X2tleSIsImFkZF9lbHQiLCJ4XzEzNSIsInRvX2FkZCIsImtleSQwIiwiZWx0c18xMTUiLCJtYXhfYWxsb3dlZF9rZXlfMTEzIiwibWluX2FsbG93ZWRfa2V5XzExMSIsImJuZHNfMTEwIiwia2V5XzEwNSIsImJuZHNfMTA0IiwiYXJnXzEwNiIsImJuZHNfMTA0JDAiLCJhcmdfMTE2IiwiYm5kc18xMTAkMCIsImFyZ18xMTQiLCJibmRzXzExMCQxIiwiYXJnXzExMiIsImJuZHNfMTEwJDIiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTY3Iiwic3RhcnRfMTY1IiwiY29uZmlnXzE2MyIsIm5vd18xNjkiLCJhbGFybSIsImFsYXJtc18xNzEiLCJibmRzXzE2MiIsInZhbHVlXzE1OSIsImF0XzE1NyIsImFyZ18xNjAiLCJibmRzXzE1NiIsImFyZ18xNTgiLCJibmRzXzE1NiQwIiwiYXJnXzE3MiIsImJuZHNfMTYyJDAiLCJhcmdfMTcwIiwiYm5kc18xNjIkMSIsImFyZ18xNjgiLCJibmRzXzE2MiQyIiwiYXJnXzE2NiIsImJuZHNfMTYyJDMiLCJhcmdfMTY0IiwiYm5kc18xNjIkNCIsImxlbmd0aCQzIiwiaXNfZW1wdHkkMCIsInBvb2wkMSIsImludGVydmFsX251bV9pbnRlcm5hbCIsInRpbWUiLCJpbnRlcnZhbF9udW1fdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtJDAiLCJpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtX3N0YXJ0IiwibmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biIsInhfMTc0IiwiY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIiwibm93X2ludGVydmFsX251bSIsIm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSIsImludGVydmFsX3N0YXJ0IiwiaW52YXJpYW50JDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwicHJpb3JpdHlfcXVldWVfZnVuIiwibGV2ZWxzX2Z1biIsInNsb3RzX2Z1biIsIm4iLCJ4XzA2MiIsIm1heF9hbGxvd2VkX2tleV9mdW4iLCJleHBlY3QiLCJlcXVhbCIsIm1lc3NhZ2UiLCJoZXJlIiwiY29tcGFyYXRvciIsImFfMTI4IiwiYl8xMjkiLCJtaW5fYWxsb3dlZF9rZXlfZnVuIiwiZ290Iiwic2V4cGlmaWVyIiwiYV8xMjYiLCJiXzEyNyIsImxlbmd0aF9mdW4iLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXlfZnVuIiwiZXRhIiwiYV8xMjQiLCJiXzEyNSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfZnVuIiwia2V5c19wZXJfc2xvdF9mdW4iLCJhXzEyMiIsImJfMTIzIiwiYml0c19wZXJfc2xvdF9mdW4iLCJleHBlY3QkMCIsInNsb3RzX21hc2tfZnVuIiwiYV8xMjAiLCJiXzEyMSIsImJpdHNfZnVuIiwiaW5kZXhfZnVuIiwieF8xMTkiLCJwcmV2X2xldmVsIiwiYV8xMzEiLCJiXzEzMiIsImdvdCQwIiwibWVzc2FnZSQwIiwiaGVyZSQwIiwiY29tcGFyYXRvciQwIiwiYV8xMzMiLCJiXzEzNCIsImVsdF9rZXlfbG93ZXJfYm91bmRfZnVuIiwibWluX2VsdF9mdW4iLCJwb29sX2Z1biIsInhfMTMwIiwib2ZfYV8wODkiLCJsZW5ndGhfMDkxIiwicG9vbF8wOTMiLCJtaW5fZWx0XzA5NSIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDk3IiwibGV2ZWxzXzA5OSIsImJuZHNfMDkwIiwiYXJnXzEwMCIsImJuZHNfMDkwJDAiLCJhcmdfMDk4IiwiYm5kc18wOTAkMSIsImFyZ18wOTYiLCJibmRzXzA5MCQyIiwiYXJnXzA5NCIsImJuZHNfMDkwJDMiLCJhcmdfMDkyIiwiYm5kc18wOTAkNCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWVfZnVuIiwiYV8xODMiLCJiXzE4NCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnRfZnVuIiwiYV8xODEiLCJiXzE4MiIsIm5vd19mdW4iLCJtYXhfaW50ZXJ2YWxfbnVtX2Z1biIsImFfMTc3IiwiYl8xNzgiLCJzZXhwaWZpZXIkMCIsImFfMTc5IiwiYl8xODAiLCJzdGFydF9mdW4iLCJjb25maWdfZnVuIiwieF8xNzYiLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTg1IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTg2IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE4NyIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMTkiLCJlcnJvcl9zb3VyY2VfMDMwIiwiZXJyb3Jfc291cmNlXzA0MyIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDUxIiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzExMiIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInNleHBfMDA2IiwiZmllbGRfc2V4cHNfMDA3IiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOCIsImhvd190b19kdW1wXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJob3dfdG9fZHVtcF8wMTEiLCJkdW1wX2lmX2RlbGF5ZWRfYnlfMDA5Iiwic2V4cF9vZl93YXRjaCIsImhvd190b19kdW1wXzAyNiIsImR1bXBfaWZfZGVsYXllZF9ieV8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF8wMzIiLCJ0YWdfMDMzIiwic2V4cF9hcmdzXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJzZXhwX29mX3QkNyIsImFyZzBfMDM3IiwicmVzMF8wMzgiLCJ0X29mX3NleHAkOCIsInNleHBfMDQ0Iiwic2V4cF9vZl90JDgiLCJlcXVhbCQwIiwieF8wNDUiLCJ4XzA0NiIsInRfb2Zfc2V4cCQ5Iiwic2V4cF8wNTIiLCJzZXhwX29mX3QkOSIsInRfb2Zfc2V4cCQxMCIsInNleHBfb2ZfdCQxMCIsInRpbWluZ193aGVlbF9jb25maWciLCJyIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciIsInJlY29yZF9iYWNrdHJhY2VzIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJtYXhfbnVtX3RocmVhZHMiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCIsImZpbGVfZGVzY3Jfd2F0Y2hlciIsImVwb2xsX21heF9yZWFkeV9ldmVudHMiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5IiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyIiwiY2hlY2tfaW52YXJpYW50cyIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyIsInYiLCJ0aW1pbmdfd2hlZWxfY29uZmlnJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMCIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMCIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsIm1heF9udW1fdGhyZWFkcyQwIiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzJDAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCQwIiwiZmlsZV9kZXNjcl93YXRjaGVyJDAiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDAiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5JDAiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIkMCIsImNoZWNrX2ludmFyaWFudHMkMCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQwIiwic2V4cF9vZl90JDExIiwidGltaW5nX3doZWVsX2NvbmZpZ18xNzQiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMTcwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8xIiwicmVjb3JkX2JhY2t0cmFjZXNfMTYyIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXzE1OCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XzE1NCIsIm1heF9udW1fdGhyZWFkc18xNDYiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNfMTQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMTM4IiwiZmlsZV9kZXNjcl93YXRjaGVyXzEzNCIsImVwb2xsX21heF9yZWFkeV9ldmVudHNfMTMwIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheV8xMjYiLCJjaGVja19pbnZhcmlhbnRzXzExOCIsImJuZHNfMTEzIiwidl8xNzUiLCJhcmdfMTc3IiwiYm5kXzE3NiIsImJuZHNfMTEzJDAiLCJ2XzE3MSIsImFyZ18xNzMiLCJibmRfMTcyIiwiYm5kc18xMTMkMSIsInZfMTY3IiwiYXJnXzE2OSIsImJuZF8xNjgiLCJibmRzXzExMyQyIiwidl8xNjMiLCJhcmdfMTY1IiwiYm5kXzE2NCIsImJuZHNfMTEzJDMiLCJ2XzE1OSIsImFyZ18xNjEiLCJibmRfMTYwIiwiYm5kc18xMTMkNCIsInZfMTU1IiwiYXJnXzE1NyIsImJuZF8xNTYiLCJibmRzXzExMyQ1Iiwidl8xNTEiLCJhcmdfMTUzIiwiYm5kXzE1MiIsImJuZHNfMTEzJDYiLCJ2XzE0NyIsImFyZ18xNDkiLCJibmRfMTQ4IiwiYm5kc18xMTMkNyIsInZfMTQzIiwiYXJnXzE0NSIsImJuZF8xNDQiLCJibmRzXzExMyQ4Iiwidl8xMzkiLCJhcmdfMTQxIiwiYm5kXzE0MCIsImJuZHNfMTEzJDkiLCJ2XzEzNSIsImFyZ18xMzciLCJibmRfMTM2IiwiYm5kc18xMTMkMTAiLCJ2XzEzMSIsImFyZ18xMzMiLCJibmRfMTMyIiwiYm5kc18xMTMkMTEiLCJ2XzEyNyIsImFyZ18xMjkiLCJibmRfMTI4IiwiYm5kc18xMTMkMTIiLCJ2XzEyMyIsImFyZ18xMjUiLCJibmRfMTI0IiwiYm5kc18xMTMkMTMiLCJ2XzExOSIsImFyZ18xMjEiLCJibmRfMTIwIiwiYm5kc18xMTMkMTQiLCJ2XzExNSIsImFyZ18xMTciLCJibmRfMTE2IiwiYm5kc18xMTMkMTUiLCJjcmVhdGUkMCIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mbyIsIndvcmRfc2l6ZSIsImxldmVsX2JpdHMkMSIsImFsYXJtX3ByZWNpc2lvbiIsImFsYXJtX3ByZWNpc2lvbiQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiZGVmYXVsdCQxIiwiZXhhbXBsZSIsInVzYWdlIiwiZmllbGQiLCJ0b19zZXhwIiwiZGVzY3JpcHRpb24iLCJhYyIsImQiLCJ4XzE3OCIsImZpZWxkcyIsIm5hbWUiLCJuYW1lMiIsIm5hbWUxIiwic3RyaW5nIiwic2V4cF8wNTQiLCJmaWVsZF9zZXhwc18wNTUiLCJjaGVja19pbnZhcmlhbnRzXzA1OCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjQiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY2IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY4IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MCIsIm1heF9udW1fdGhyZWFkc18wNzIiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzYiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc4IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XzA4NCIsInRpbWluZ193aGVlbF9jb25maWdfMDg2IiwiZHVwbGljYXRlc18wODgiLCJleHRyYV8wODkiLCJpdGVyXzEwOSIsInNleHBfMDU0JDAiLCJmaWVsZF9zZXhwc18wOTIiLCJmaWVsZF9uYW1lXzA5MCIsInRhaWxfMTEwIiwiZmllbGRfc2V4cF8wOTEkMTYiLCJmaWVsZF9zZXhwXzA5MSIsInhfMTExIiwiZmllbGRfc2V4cF8wOTEkMCIsImZ2YWx1ZV8wOTMiLCJmaWVsZF9zZXhwXzA5MSQxIiwiZnZhbHVlXzA5NCIsImZpZWxkX3NleHBfMDkxJDIiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTEkMyIsImZ2YWx1ZV8wOTYiLCJmaWVsZF9zZXhwXzA5MSQ0IiwiZnZhbHVlXzA5NyIsImZpZWxkX3NleHBfMDkxJDUiLCJmdmFsdWVfMDk4IiwiZmllbGRfc2V4cF8wOTEkNiIsImZ2YWx1ZV8xMDAiLCJmaWVsZF9zZXhwXzA5MSQ3IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDkxJDgiLCJmdmFsdWVfMDk5IiwiZmllbGRfc2V4cF8wOTEkOSIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5MSQxMCIsImZ2YWx1ZV8xMDMiLCJmaWVsZF9zZXhwXzA5MSQxMSIsImZ2YWx1ZV8xMDQiLCJmaWVsZF9zZXhwXzA5MSQxMiIsImZ2YWx1ZV8xMDUiLCJmaWVsZF9zZXhwXzA5MSQxMyIsImZ2YWx1ZV8xMDYiLCJmaWVsZF9zZXhwXzA5MSQxNCIsImZ2YWx1ZV8xMDciLCJmaWVsZF9zZXhwXzA5MSQxNSIsImZ2YWx1ZV8xMDgiLCJjaGVja19pbnZhcmlhbnRzXzA1OSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYzIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjUiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY3IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY5IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MSIsIm1heF9udW1fdGhyZWFkc18wNzMiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzciLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc5IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMDg1IiwidCIsInQkMCIsImV4biIsInQkMSIsInQkMiIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQxIiwidGFnIiwibCIsImFsbCIsImRlYnVnIiwiY2xvY2siLCJmZCIsImZpbGVfZGVzY3Jfd2F0Y2hlciQxIiwiZmluYWxpemVycyIsImludGVycnVwdG9yIiwibW9uaXRvciIsIm1vbml0b3Jfc2VuZF9leG4iLCJwYXJhbGxlbCIsInJlYWRlciIsInNjaGVkdWxlciIsInNodXRkb3duIiwidGhyZWFkX3Bvb2wiLCJ0aHJlYWRfc2FmZSIsIndyaXRlciIsInN5bWJvbCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQxIiwiY2hlY2tfaW52YXJpYW50cyQxIiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyJDEiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDEiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMSIsImZpbGVfZGVzY3Jfd2F0Y2hlciQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQkMSIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyQxIiwibWF4X251bV90aHJlYWRzJDEiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMSIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJyZWNvcmRfYmFja3RyYWNlcyQxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQxIiwidGltaW5nX3doZWVsX2NvbmZpZyQxIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheSQxIiwidCQzIiwidGFza19pZCIsIm5vbmUiLCJjcmVhdGUiLCJpc19ub25lIiwieCIsImlzX3NvbWUiLCJnZXRfc29tZV9leG4iLCJnZXQiLCJ0IiwidW5zYWZlX2dldCIsInNldF9zb21lIiwidiIsInNldF9ub25lIiwic2V0IiwidiQwIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInhfMDAyIiwiZW1wdHkiLCJpc19lbXB0eSIsImVxdWFsIiwiZHVtbXlfaWQiLCJjaGlsZCIsInQiLCJwb29sIiwic2libGluZyIsInByZXYiLCJpZCIsInNldF9jaGlsZCIsInYiLCJzZXRfc2libGluZyIsInNldF9wcmV2IiwidmFsdWVfZXhuIiwiYWxsb2NhdGUiLCJ2YWx1ZSIsImZyZWUiLCJkaXNjb25uZWN0X3NpYmxpbmciLCJzaWJsaW5nJDAiLCJkaXNjb25uZWN0X2NoaWxkIiwiY2hpbGQkMCIsImRldGFjaCIsInByZXYkMCIsInJlbGF0aW9uX3RvX3ByZXYiLCJjcmVhdGUiLCJjYXBhY2l0eSIsImludmFyaWFudCIsInRvX3Zpc2l0JDIiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJtYXliZV9wYXJlbnRfdmFsdWUiLCJleHBlY3RlZF9wcmV2Iiwibm9kZSIsInRoaXNfdmFsdWUiLCJwYXJlbnRfdmFsdWUiLCJ0b192aXNpdCQxIiwiY3JlYXRlJDAiLCJvcHQiLCJjbXAiLCJzdGgiLCJtaW5fc2l6ZSIsImNvcHkiLCJwb29sJDAiLCJzdGFydCIsIm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMiLCJjb3B5X25vZGUiLCJuZXdfbm9kZSIsIm5ld19zdGFydCIsInJlc3QiLCJub2RlX3RvX2NvcHkiLCJzbG90Iiwibm9kZV90b191cGRhdGUiLCJtZXJnZSIsInJvb3QxIiwicm9vdDIiLCJhZGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJjdXJyZW50X2NoaWxkIiwidjEiLCJ2MiIsInRvcF9leG4iLCJ0b3AiLCJhZGRfbm9kZSIsInQkMSIsInQkMCIsImFkZCIsIm1heF9zdGFja19kZXB0aCIsImxvb3AiLCJkZXB0aCIsImhlYWQkMCIsIm5leHQxJDAiLCJuZXh0MiQwIiwiYWNjIiwiaGVhZCIsIm5leHQxIiwibmV4dDIiLCJhY2MkMCIsImgiLCJ4cyIsImhlYXAiLCJyZW1vdmVfbm9uX2VtcHR5IiwibWVyZ2VkX2NoaWxkcmVuIiwibmV3X3Jvb3QiLCJyZW1vdmVfdG9wIiwiY2xlYXIiLCJub2RlJDAiLCJwb3BfZXhuIiwiciIsInBvcCIsInBvcF9pZiIsImYiLCJmb2xkIiwiaW5pdCIsIml0ZXIiLCJsZW5ndGgiLCJpdGVyJDAiLCJsZW5ndGgkMCIsImlzX2VtcHR5JDAiLCJtZW0iLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJzZXhwX29mX3QiLCJpc19ub2RlX3ZhbGlkIiwidmFsdWVfZXhuJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfYSIsInhfMDAxIiwicmVtb3ZlIiwidG9rZW4iLCJhZGRfcmVtb3ZhYmxlIiwidXBkYXRlIiwiZmluZF9lbHQiLCJub2RlcyQyIiwibm9kZXMiLCJub2RlcyQwIiwibm9kZXMkMSIsInVwZGF0ZSQwIiwiZWx0IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJ0X29mX3NleHAiLCJvZl9hXzAwMyIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsInBvcyIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhbV9ydW5uaW5nX3Rlc3QiLCJub25lIiwic29tZSIsIngiLCJ1bnNhZmVfdmFsdWUiLCJpc19ub25lIiwidCIsImlzX3NvbWUiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsImEiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsInZhbHVlXzAwMyIsIm5leHRfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJjcmVhdGUiLCJ1bnVzZWRfZWx0cyIsInIiLCJzZXRfdW51c2VkX2VsdHMiLCJ2IiwiYmFjayIsInNldF9iYWNrIiwiZnJvbnQiLCJzZXRfZnJvbnQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwidW51c2VkX2VsdHMkMCIsImJhY2skMCIsImZyb250JDAiLCJsZW5ndGgkMCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDciLCJsZW5ndGhfMDA5IiwiZnJvbnRfMDExIiwiYmFja18wMTMiLCJ1bnVzZWRfZWx0c18wMTUiLCJibmRzXzAwOCIsImFyZ18wMTYiLCJibmRzXzAwOCQwIiwiYXJnXzAxNCIsImJuZHNfMDA4JDEiLCJhcmdfMDEyIiwiYm5kc18wMDgkMiIsImFyZ18wMTAiLCJibmRzXzAwOCQzIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ0IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsInhfMDE3IiwiY3JlYXRlJDAiLCJlbnF1ZXVlIiwiYSIsIm5ld19iYWNrIiwiZGVxdWV1ZV9leG4iLCJ4XzAxOCIsImNsZWFyX2ludGVybmFsX3Bvb2wiLCJhZnRlciIsInQiLCJzcGFuIiwicmVzdWx0IiwibG9nIiwiYXJnMl8wMDMiLCJhcmczXzAwNCIsInNleHBfb2ZfYSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwNSIsInJlczFfMDA2IiwicmVzMl8wMDciLCJyZXMzXzAwOCIsImxvZ19zdHJpbmciLCJtZXNzYWdlIiwiY29uY2F0IiwiZXByaW50IiwiZXByaW50X3MiLCJlcHJpbnRzIiwicHJpbnRfcyIsInNleHAiLCJzZWMiLCJzZXhwX29mX3QiLCJ0b19yZXByIiwib2ZfcmVwciIsIm5hbWVzIiwiZGVidWciLCJmb3J3YXJkaW5nIiwiciIsInNldF9mb3J3YXJkaW5nIiwidiIsImhhc19zZWVuX2Vycm9yIiwic2V0X2hhc19zZWVuX2Vycm9yIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfdGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsInNldF9oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsIm5leHRfZXJyb3IiLCJzZXRfbmV4dF9lcnJvciIsImlkIiwiaGVyZSIsIm5hbWUiLCJmb3J3YXJkaW5nJDAiLCJoYXNfc2Vlbl9lcnJvciQwIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMkMCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzJDAiLCJuZXh0X2Vycm9yJDAiLCJpZCQwIiwiaGVyZSQwIiwibmFtZSQwIiwibWFrZV9jcmVhdG9yIiwibmFtZV9mdW4iLCJoZXJlX2Z1biIsImlkX2Z1biIsIm5leHRfZXJyb3JfZnVuIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZnVuIiwidGFpbHNfZm9yX2FsbF9lcnJvcnNfZnVuIiwiaGFzX3NlZW5fZXJyb3JfZnVuIiwiZm9yd2FyZGluZ19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJuYW1lX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJoZXJlX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJpZF9nZW4iLCJjb21waWxlX2FjYyQzIiwibmV4dF9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZ2VuIiwiY29tcGlsZV9hY2MkNSIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJoYXNfc2Vlbl9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ3IiwiZm9yd2FyZGluZ19nZW4iLCJhY2MiLCJjcmVhdGUiLCJtYXAiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJyZWNvcmQkMCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25zIiwidCQxIiwiYWMiLCJhYyQwIiwidCQwIiwieF8wMDEiLCJuZXh0X2lkIiwiY3JlYXRlX3dpdGhfcGFyZW50IiwiaW5mbyIsInBhcmVudCIsImkiLCJzIiwicyQwIiwieF8wMDIiLCJwYXJlbnQkMCIsIm1haW4iLCJiYWNrdHJhY2VfaGlzdG9yeSIsImxvY2FsX3N0b3JhZ2UiLCJwcmlvcml0eSIsIm1vbml0b3IiLCJiYWNrdHJhY2VfaGlzdG9yeSQwIiwibG9jYWxfc3RvcmFnZSQwIiwicHJpb3JpdHkkMCIsIm1vbml0b3IkMCIsIm1vbml0b3JfZnVuIiwicHJpb3JpdHlfZnVuIiwibG9jYWxfc3RvcmFnZV9mdW4iLCJiYWNrdHJhY2VfaGlzdG9yeV9mdW4iLCJtb25pdG9yX2dlbiIsInByaW9yaXR5X2dlbiIsImxvY2FsX3N0b3JhZ2VfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfMDA4IiwibG9jYWxfc3RvcmFnZV8wMDYiLCJwcmlvcml0eV8wMDQiLCJtb25pdG9yXzAwMiIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMiIsImludmFyaWFudCIsImNyZWF0ZV9saWtlIiwiZmluZF9sb2NhbCIsImtleSIsIndpdGhfbG9jYWwiLCJkYXRhIiwicmVjb3JkX2JhY2t0cmFjZSIsImR1bW15X2UiLCJkdW1teV9mIiwiZHVtbXlfYSIsInNleHBfb2Zfc2xvdHMiLCJvZl9ldmVudCIsImV2ZW50Iiwib2Zfam9iIiwiam9iIiwiaXNfZXZlbnQiLCJpc19qb2IiLCJraW5kIiwicHJvamVjdCIsImpvYl9vcl9ldmVudCIsImV2ZW50cyIsInNldF9leGVjdXRpb25fY29udGV4dCIsImV4ZWN1dGlvbl9jb250ZXh0IiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImZyb250Iiwic2V0X2Zyb250IiwibWFzayIsInNldF9tYXNrIiwiam9icyIsInNldF9qb2JzIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJudW1fam9ic19ydW4iLCJzZXRfbnVtX2pvYnNfcnVuIiwibGVuZ3RoJDAiLCJmcm9udCQwIiwibWFzayQwIiwiam9icyQwIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm51bV9qb2JzX3J1biQwIiwibnVtX2pvYnNfcnVuXzAwMiIsImpvYnNfbGVmdF90aGlzX2N5Y2xlXzAwNCIsImpvYnNfMDA2IiwibWFza18wMDgiLCJmcm9udF8wMTAiLCJsZW5ndGhfMDEyIiwiYXJnXzAxMyIsImFyZ18wMTEiLCJibmRzXzAwMSQzIiwiYm5kc18wMDEkNCIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiY2xlYXIiLCJzZXQiLCJhIiwib2Zmc2V0JDAiLCJlbnF1ZXVlIiwib2xkX2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5Iiwib2xkX2pvYnMiLCJvbGRfZnJvbnQiLCJsZW4xIiwibGVuMiIsIm5ld19qb2JzIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJuIiwiY2FuX3J1bl9hX2pvYiIsInJ1bl9qb2IiLCJzY2hlZHVsZXIiLCJydW5fZXh0ZXJuYWxfam9icyIsImV4dGVybmFsX2pvYnMiLCJydW5fam9icyIsInRoaXNfam9iIiwiZXhuJDAiLCJleG4iLCJiYWNrdHJhY2UiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsIm5hbWVzJDAiLCJpc19udWxsIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQxIiwidHJhbnNpdGlvbl9pc19hbGxvd2VkIiwiZnJvbSIsInRvIiwic2V4cF9vZl9ldmVudCIsImF0IiwiaW50ZXJ2YWwiLCJzdGF0dXMiLCJtYXRjaCIsIm5vbmUiLCJzb21lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJmaXJzdF9zb21lIiwidDEiLCJ0MiIsInVuc2FmZV92YWx1ZSIsInNleHBfb2ZfdCQyIiwicHB4X29wdGlvbmFsX2VfMCIsInZhbHVlJDAiLCJkZWZhdWx0JDAiLCJ2YWx1ZV9leG4iLCJ0b19vcHRpb24iLCJvZl9vcHRpb24iLCJzZXRfc3RhdHVzIiwicHJldl9maXJlZCIsInNldF9wcmV2X2ZpcmVkIiwibmV4dF9maXJlZCIsInNldF9uZXh0X2ZpcmVkIiwic2V0X2ludGVydmFsIiwiY2FsbGJhY2siLCJhdCQwIiwic2V0X2F0IiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJzdGF0dXMkMCIsInByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMCIsImludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQwIiwiY2FsbGJhY2skMCIsImF0JDEiLCJhbGFybSQwIiwiYWxhcm1fZnVuIiwiYXRfZnVuIiwiY2FsbGJhY2tfZnVuIiwiZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiaW50ZXJ2YWxfZnVuIiwibmV4dF9maXJlZF9mdW4iLCJwcmV2X2ZpcmVkX2Z1biIsInN0YXR1c19mdW4iLCJhbGFybV9nZW4iLCJhdF9nZW4iLCJjYWxsYmFja19nZW4iLCJleGVjdXRpb25fY29udGV4dF9nZW4iLCJpbnRlcnZhbF9nZW4iLCJuZXh0X2ZpcmVkX2dlbiIsInByZXZfZmlyZWRfZ2VuIiwic3RhdHVzX2dlbiIsImdvdCIsInNleHBpZmllciIsImV4cGVjdCIsImVxdWFsIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJwcHhfb3B0aW9uYWxfZV8wJDAiLCJhXzAxNyIsImJfMDE4IiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImV4cGVjdCQwIiwibWVzc2FnZSQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsInhfMDE2IiwiaW52YXJpYW50JDAiLCJzZXhwX29mX3QkNSIsInhfMDIxIiwiaW52YXJpYW50JDEiLCJpbnZhcmlhbnRfd2l0aF9qb2JzJDAiLCJzZXhwX29mX3QkNiIsInhfMDIyIiwiaWQkMSIsImlzX3dhbGxfY2xvY2skMSIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJyZWFkX29ubHkiLCJmaXJlIiwiY29udGludWUkMCIsIm5leHQkMCIsImNvbnRpbnVlJDEiLCJwcHhfb3B0aW9uYWxfZV8wJDEiLCJuZXh0IiwicHB4X29wdGlvbmFsX2VfMCQyIiwicHJldiIsImFsYXJtX3ByZWNpc2lvbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX3J1bnNfYXQiLCJub3ckMCIsInRpbWluZ193aGVlbF9ub3ckMCIsInNjaGVkdWxlIiwicmVtb3ZlX2Zyb21fZmlyZWQiLCJuZXdfc3RhdHVzIiwic2V4cF9vZl9ldmVudCQwIiwic3RhdHVzJDEiLCJwcmV2X2ZpcmVkJDEiLCJzZXRfcHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQxIiwic2V0X25leHRfZmlyZWQkMCIsImludGVydmFsJDEiLCJzZXRfaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDEiLCJjYWxsYmFjayQxIiwic2V0X2F0JDAiLCJhbGFybSQxIiwic2V0X2FsYXJtJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQyIiwic2V0X3N0YXR1cyQxIiwic2V0X3N0YXR1c19pZiQwIiwic2NoZWR1bGVkX2F0IiwiY3JlYXRlX2ludGVybmFsIiwiYWRkJDAiLCJjcmVhdGVfYW5kX2FkZCIsImF0JDIiLCJhZnRlciQwIiwicmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJhdF9pbnRlcnZhbHMiLCJzZXhwX29mX3QkOCIsImFib3J0IiwiYWJvcnRfaWZfcG9zc2libGUiLCJhYm9ydF9leG4iLCJyZWFzb24iLCJjcmVhdGUkMSIsInNjaGVkdWxlX2F0X2ludGVybmFsIiwic2NoZWR1bGVfYXQiLCJzY2hlZHVsZV9hZnRlciIsInNjaGVkdWxlX2F0X2ludGVydmFscyIsInJlc2NoZWR1bGVfYXQiLCJyZXNjaGVkdWxlX2FmdGVyIiwicnVuX2FmdGVyIiwicnVuX2F0IiwicnVuX2F0X2ludGVydmFscyIsInJ1bl9maXJlZF9ldmVudHMiLCJzZW5kX2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJzZW5kX2V4biQwIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF8iLCJhZHZhbmNlX2RpcmVjdGx5IiwiZHVyYXRpb25fb2YiLCJzdGFydCIsImR1cmF0aW9uIiwibWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193IiwiaGFzX2V2ZW50c190b19ydW4iLCJjcmVhdGVfd2l0aF9jZWxsIiwiY2VsbCIsImNyZWF0ZV9mdWxsIiwiZXhlYyIsImV4ZWMkMCIsImV4ZWNfZnVuIiwiZXhlY19nZW4iLCJzZXhwX29mX3QkMCIsImV4ZWN1dGlvbl9jb250ZXh0XzAwMiIsInJlY29yZF9iYWNrdHJhY2VzIiwic2V0X3JlY29yZF9iYWNrdHJhY2VzIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfIiwic2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfIiwiY2hlY2tfaW52YXJpYW50cyIsInNldF9jaGVja19pbnZhcmlhbnRzIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJzZXRfeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJ5aWVsZCQwIiwic2V0X3lpZWxkIiwiZXZlbnRfYWRkZWRfaG9vayIsInNldF9ldmVudF9hZGRlZF9ob29rIiwiam9iX3F1ZXVlZF9ob29rIiwic2V0X2pvYl9xdWV1ZWRfaG9vayIsInRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIiwic2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9oIiwidGltZV9zb3VyY2UiLCJzZXRfdGltZV9zb3VyY2UiLCJ0b3RhbF9jeWNsZV90aW1lIiwic2V0X3RvdGFsX2N5Y2xlX3RpbWUiLCJsYXN0X2N5Y2xlX251bV9qb2JzIiwic2V0X2xhc3RfY3ljbGVfbnVtX2pvYnMiLCJsYXN0X2N5Y2xlX3RpbWUiLCJzZXRfbGFzdF9jeWNsZV90aW1lIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9lbmQiLCJzZXRfcnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydCIsInNldF9ydW5fZXZlcnlfY3ljbGVfc3RhcnQiLCJpbl9jeWNsZSIsInNldF9pbl9jeWNsZSIsImN5Y2xlX3N0YXJ0Iiwic2V0X2N5Y2xlX3N0YXJ0IiwiY3ljbGVfY291bnQiLCJzZXRfY3ljbGVfY291bnQiLCJ1bmNhdWdodF9leG5fdW53cmFwcGVkIiwic2V0X3VuY2F1Z2h0X2V4biIsInNldF9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IiwibWFpbl9leGVjdXRpb25fY29udGV4dCIsInNldF9tYWluX2V4ZWN1dGlvbl9jb250ZXh0IiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyIsImxvd19wcmlvcml0eV9qb2JzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMiLCJqb2JfcG9vbCIsInNldF9qb2JfcG9vbCIsImNoZWNrX2FjY2VzcyIsInNldF9jaGVja19hY2Nlc3MiLCJyZWNvcmRfYmFja3RyYWNlcyQwIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDAiLCJjaGVja19pbnZhcmlhbnRzJDAiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiQwIiwieWllbGQkMSIsImV2ZW50X2FkZGVkX2hvb2skMCIsImpvYl9xdWV1ZWRfaG9vayQwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2skMCIsImV4dGVybmFsX2pvYnMkMCIsInRpbWVfc291cmNlJDAiLCJ0b3RhbF9jeWNsZV90aW1lJDAiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDAiLCJsYXN0X2N5Y2xlX3RpbWUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmQkMCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0JDAiLCJpbl9jeWNsZSQwIiwiY3ljbGVfc3RhcnQkMCIsImN5Y2xlX2NvdW50JDAiLCJ1bmNhdWdodF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzJDAiLCJsb3dfcHJpb3JpdHlfam9icyQwIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMkMCIsImpvYl9wb29sJDAiLCJjaGVja19hY2Nlc3MkMCIsImNoZWNrX2FjY2Vzc19mdW4iLCJqb2JfcG9vbF9mdW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19mdW4iLCJsb3dfcHJpb3JpdHlfam9ic19mdW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2Z1biIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9mdW4iLCJ1bmNhdWdodF9leG5fZnVuIiwiY3ljbGVfY291bnRfZnVuIiwiY3ljbGVfc3RhcnRfZnVuIiwiaW5fY3ljbGVfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2Z1biIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV9mdSIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9mdW4iLCJsYXN0X2N5Y2xlX3RpbWVfZnVuIiwibGFzdF9jeWNsZV9udW1fam9ic19mdW4iLCJ0b3RhbF9jeWNsZV90aW1lX2Z1biIsInRpbWVfc291cmNlX2Z1biIsImV4dGVybmFsX2pvYnNfZnVuIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfIiwiam9iX3F1ZXVlZF9ob29rX2Z1biIsImV2ZW50X2FkZGVkX2hvb2tfZnVuIiwieWllbGRfZnVuIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZnVuIiwiY2hlY2tfaW52YXJpYW50c19mdW4iLCJyZWNvcmRfYmFja3RyYWNlc19mdW4iLCJjaGVja19hY2Nlc3NfZ2VuIiwiam9iX3Bvb2xfZ2VuIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfZ2VuIiwibG93X3ByaW9yaXR5X2pvYnNfZ2VuIiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2Vyc19nZW4iLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwidW5jYXVnaHRfZXhuX2dlbiIsImN5Y2xlX2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDkiLCJjeWNsZV9zdGFydF9nZW4iLCJjb21waWxlX2FjYyQxMCIsImluX2N5Y2xlX2dlbiIsImNvbXBpbGVfYWNjJDExIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEyIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2dlIiwiY29tcGlsZV9hY2MkMTMiLCJydW5fZXZlcnlfY3ljbGVfZW5kX2dlbiIsImNvbXBpbGVfYWNjJDE0IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9nZW4iLCJjb21waWxlX2FjYyQxNSIsImxhc3RfY3ljbGVfdGltZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImxhc3RfY3ljbGVfbnVtX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJ0b3RhbF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE4IiwidGltZV9zb3VyY2VfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJleHRlcm5hbF9qb2JzX2dlbiIsImNvbXBpbGVfYWNjJDIwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfJDAiLCJjb21waWxlX2FjYyQyMSIsImpvYl9xdWV1ZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMiIsImV2ZW50X2FkZGVkX2hvb2tfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJ5aWVsZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluX2dlbiIsImNvbXBpbGVfYWNjJDI1IiwiY2hlY2tfaW52YXJpYW50c19nZW4iLCJjb21waWxlX2FjYyQyNiIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQxIiwiY29tcGlsZV9hY2MkMjciLCJyZWNvcmRfYmFja3RyYWNlc19nZW4iLCJjcmVhdGUkMiIsImNoZWNrX2FjY2Vzc18wMDciLCJqb2JfcG9vbF8wMDkiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzXzAxNSIsImxvd19wcmlvcml0eV9qb2JzXzAxMyIsIm5vcm1hbF9wcmlvcml0eV9qb2JzXzAxMSIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfMDE3IiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF8wMTkiLCJ1bmNhdWdodF9leG5fMDIxIiwiY3ljbGVfY291bnRfMDI3IiwiY3ljbGVfc3RhcnRfMDI5IiwiaW5fY3ljbGVfMDMxIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XzAzMyIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV8wMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfMDM3IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV8wMzkiLCJsYXN0X2N5Y2xlX3RpbWVfMDQxIiwibGFzdF9jeWNsZV9udW1fam9ic18wNDMiLCJ0b3RhbF9jeWNsZV90aW1lXzA0NSIsInRpbWVfc291cmNlXzA0NyIsImV4dGVybmFsX2pvYnNfMDQ5Iiwiam9iX3F1ZXVlZF9ob29rXzA1MyIsImV2ZW50X2FkZGVkX2hvb2tfMDU1IiwieWllbGRfMDU3IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fMDU5IiwiY2hlY2tfaW52YXJpYW50c18wNjEiLCJyZWNvcmRfYmFja3RyYWNlc18wNjUiLCJhcmdfMDY2IiwiYm5kc18wMDYiLCJhcmdfMDY0IiwiYm5kc18wMDYkMCIsImFyZ18wNjIiLCJibmRzXzAwNiQxIiwiYXJnXzA2MCIsImJuZHNfMDA2JDIiLCJhcmdfMDU4IiwiYm5kc18wMDYkMyIsImFyZ18wNTYiLCJibmRzXzAwNiQ0IiwiYXJnXzA1NCIsImJuZHNfMDA2JDUiLCJhcmdfMDUyIiwiYm5kc18wMDYkNiIsImFyZ18wNTAiLCJibmRzXzAwNiQ3IiwiYXJnXzA0OCIsImJuZHNfMDA2JDgiLCJhcmdfMDQ2IiwiYm5kc18wMDYkOSIsImFyZ18wNDQiLCJibmRzXzAwNiQxMCIsImFyZ18wNDIiLCJibmRzXzAwNiQxMSIsImFyZ18wNDAiLCJibmRzXzAwNiQxMiIsImFyZ18wMzgiLCJibmRzXzAwNiQxMyIsImFyZ18wMzYiLCJibmRzXzAwNiQxNCIsImFyZ18wMzQiLCJibmRzXzAwNiQxNSIsImFyZ18wMzIiLCJibmRzXzAwNiQxNiIsImFyZ18wMzAiLCJibmRzXzAwNiQxNyIsImFyZ18wMjgiLCJibmRzXzAwNiQxOCIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYXJnXzAyMiIsImJuZHNfMDA2JDE5IiwiYXJnXzAyMCIsImJuZHNfMDA2JDIwIiwiYXJnXzAxOCIsImJuZHNfMDA2JDIxIiwiYXJnXzAxNiIsImJuZHNfMDA2JDIyIiwiYXJnXzAxNCIsImJuZHNfMDA2JDIzIiwiYXJnXzAxMiIsImJuZHNfMDA2JDI0IiwiYXJnXzAxMCIsImJuZHNfMDA2JDI1IiwiYXJnXzAwOCIsImJuZHNfMDA2JDI2IiwidW5jYXVnaHRfZXhuJDAiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJyZXMxXzA3MCIsIm51bV9wZW5kaW5nX2pvYnMiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDEiLCJ1bm9yZGVyZWRfaXNfc3VibGlzdCIsInNtYWxsIiwibGFyZ2UiLCJ4IiwibCQwIiwieSIsImwiLCJjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCIsInRhYmxlIiwibGlzdCIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJ0X3JlZiIsImNoZWNrX2FjY2VzcyQxIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dCQxIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEiLCJ0bXBfY29udGV4dCIsIm9sZF9jb250ZXh0Iiwid2l0aF9leGVjdXRpb25fY29udGV4dCIsImNyZWF0ZV9qb2IiLCJnb3RfdW5jYXVnaHRfZXhuIiwiYXJnMV8wNzIiLCJhcmcwXzA3MSIsInJlczBfMDczIiwicmVzMV8wNzQiLCJzdGFydF9jeWNsZSIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkiLCJlIiwiZSQwIiwic3RhYmlsaXplIiwiY3JlYXRlX3RpbWVfc291cmNlIiwib3B0Iiwic3RoIiwidGltaW5nX3doZWVsX2NvbmZpZyIsIndhbGxfY2xvY2siLCJzZXRfcHJldiIsInBhcmFtIiwic2V0X25leHQiLCJydW4iLCJjcmVhdGUyIiwicnVuMSIsImV4ZWN1dGlvbl9jb250ZXh0MSIsInJ1bjIiLCJleGVjdXRpb25fY29udGV4dDIiLCJzY2hlZHVsZV9qb2JzIiwiYWRkIiwib2ZfbGlzdCIsImZpcnN0IiwibCQxIiwibCQyIiwicnVuJDAiLCJwcmV2JDAiLCJhY2MkMCIsImNlbGxfb2ZfaGFuZGxlciIsImluZGlyIiwic3F1YXNoIiwidCQzIiwidCQ0IiwiaW5kaXIkMSIsInQkNSIsImluZGlyJDAiLCJ0JDIiLCJhX2ludmFyaWFudCIsImhhbmRsZXIiLCJwZWVrIiwidmFsdWUiLCJpZl9lbXB0eV90aGVuX2ZhaWx3aXRoIiwiaXNfZW1wdHkiLCJpc19mdWxsIiwiZmlsbCIsInJlbW92ZV9oYW5kbGVyIiwiYWRkX2hhbmRsZXIiLCJoYW5kbGVyJDEiLCJoYW5kbGVyJDIiLCJydW4kMSIsImhhbmRsZXIkMCIsImhhc19oYW5kbGVycyIsInVwb24iLCJ1cG9uJDAiLCJjb25uZWN0IiwiYmluZF9yZXN1bHQiLCJiaW5kX3JocyIsImJpbmRfcmVzdWx0JDAiLCJpdmFyIiwiYmluZF9yaHNfY29udGVudHMiLCJpdmFyJDAiLCJsYXN0MSIsImxhc3QyIiwiaGFuZGxlcjEiLCJleGVjdXRpb25fY29udGV4dDIkMCIsInJ1bjIkMCIsImhhbmRsZXIxJDAiLCJ2JDAiLCJvZl9pdmFyIiwiaW52YXJpYW50X2EiLCJyZXR1cm4kMCIsImlzX2RldGVybWluZWQiLCJiaW5kIiwiaCIsInJlYWQiLCJmaWxsX2lmX2VtcHR5IiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJzZXhwX29mX2hvdyIsInZfMDAxIiwibmV2ZXIiLCJyZXR1cm4kMSIsInJldHVybiQyIiwicmV0dXJuJDMiLCJ1bml0IiwiYm90aCQwIiwiYTEiLCJhMiIsImRvbl90X3dhaXRfZm9yIiwiZjIiLCJmMSIsInByb2Nlc3MiLCJyZXN0IiwiY2hvaWNlIiwiZW5hYmxlZCIsImNob2ljZXMiLCJ1bnJlZ2lzdGVycyIsInJlYWR5IiwiY2hvb3NlX3Jlc3VsdCIsImNob2ljZXMkMCIsImNob2ljZXMkMSIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsImIiLCJ4cyIsInNlcW1hcCIsImJzIiwiYWxsIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJvayIsIm9mX2FfMDA1IiwieF8wMDYiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwieF8wMDciLCJjb2xsZWN0IiwiaXNfY2xvc2VkIiwiZmlsbF9leG4iLCJjbG9zZV9leG4iLCJjbG9zZV9pZl9vcGVuIiwiZXh0ZW5kIiwiZGVmZXJyZWQwIiwiZGVmZXJyZWQxIiwiaW1wb3J0MCIsImVycm9yIiwiZGV0YWNoIiwiZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyIsImhhbmRsZXJfc3RhdGVfcmVmIiwicnVuX2YiLCJiYWdfZWx0IiwiaW5uZXJfZXhuJDAiLCJpbm5lcl9leG4iLCJkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0iLCJ0YWlsIiwiZ2V0X25leHRfZXJyb3IiLCJkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIiwiZXh0cmFjdF9leG4iLCJjb2x1bW4iLCJtb25pdG9yJDEiLCJuYW1lJDEiLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwicmVzdCQwIiwicmVzdCQxIiwidDMiLCJyZXN0JDIiLCJyZXN0JDMiLCJ0cmFjZXMiLCJyZXN0JDQiLCJ0MSQwIiwicmVzdCQ1IiwidDIkMCIsInJlc3QkNiIsInQyJDEiLCJiYWNrdHJhY2UkMiIsImxpc3RfaWZfbm90X2VtcHR5IiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJleHRyYWN0X2V4biQwIiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwid2l0aGluX2NvbnRleHQiLCJjb250ZXh0Iiwid2l0aGluX2dlbiIsIndpdGhpbiIsIndpdGhpbl92Iiwid2l0aGluJDAiLCJzY2hlZHVsZV93aXRoX2RhdGEiLCJ3b3JrIiwidXBvbl93b3JrX2ZpbGxfaSIsInNjaGVkdWxlJDAiLCJwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsX2FuZF9maWxsIiwic3RyZWFtX2l0ZXIiLCJzdHJlYW0iLCJleG5zIiwiZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvIiwicmVzdWx0X2ZpbGxlciIsImhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCIsInRyeV93aXRoX2xvZ19leG4iLCJ0cnlfd2l0aCIsInN0aCQwIiwiZG9fZXh0cmFjdF9leG4iLCJzdGgkMSIsInN0aCQyIiwiaGFuZGxlX2V4biIsInJlcyIsInRyeV93aXRoX29yX2Vycm9yIiwidHJ5X3dpdGhfam9pbl9vcl9lcnJvciIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmciIsInIkMCIsImZpbmFsbHlfZXhuIiwiaGFuZGxlX2Vycm9ycyIsImNhdGNoX3N0cmVhbSIsImNhdGNoJDAiLCJjYXRjaF9lcnJvciIsImRlcHRoIiwibiQwIiwiZmlyc3RfZXhuIiwibG9vcCQwIiwibG9vcF9uZXh0IiwibG9vcF9uZXh0JDAiLCJjbG9zZWQiLCJ1bmZvbGQiLCJjb3B5X3RvX3RhaWwiLCJhcHBlbmQiLCJmaWx0ZXJfZGVwcmVjYXRlZCIsImZpbHRlcl9tYXBfZGVwcmVjYXRlZCIsImZpcnN0X24iLCJhdmFpbGFibGVfbm93Iiwic3BsaXQiLCJzdG9wIiwicmVhc29uX2Zvcl9zdG9wcGluZyIsInByZWZpeCIsImZpbmlzaCIsIm8iLCJmaW5kIiwiZm91bmQiLCJ1bmdyb3VwIiwiaW50ZXJsZWF2ZSIsIm51bV9vcGVuIiwiY2xvc2UiLCJvdXRlcl9jbG9zZWQiLCJ0YWtlX3VudGlsIiwieiIsIml0ZXJfZHVyYWJseSIsIml0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIiwiaXRlcl9kdXJhYmx5JDAiLCJvZl9mdW4iLCJzZXRfaXZhciIsImhhc19hbnlfd2FpdGVycyIsInNldF9oYXNfYW55X3dhaXRlcnMiLCJoYXNfYW55X3dhaXRlcnMkMCIsInJlcHIiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJvZl9hXzAwMSIsImhhc19hbnlfd2FpdGVyc18wMDMiLCJpdmFyXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwiYnJvYWRjYXN0Iiwid2FpdCIsImhhc19hbnlfd2FpdGVycyQxIiwieF8wMDMiLCJhZHZhbmNlX2RpcmVjdGx5X2J5IiwiYnkiLCJ3YWl0X2ZvciIsInJ1bl9xdWV1ZWRfYWxhcm1zIiwid2Fsa19hbGFybXMiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQkMCIsImFkdmFuY2VfYnlfYWxhcm1zX2J5Iiwic3Bhbl90b190aW1lIiwicnVuX2F0X2ludGVybmFsIiwidGltZSIsInJlbW92ZV9hbGFybSIsIm9mX2FfMDA4Iiwib2ZfaF8wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNldF9zY2hlZHVsZWRfYXQiLCJudW1fZmlyZXNfdG9fc2tpcCIsInNldF9udW1fZmlyZXNfdG9fc2tpcCIsImZpcmVkIiwic2NoZWR1bGVkX2F0JDAiLCJudW1fZmlyZXNfdG9fc2tpcCQwIiwiZmlyZWQkMCIsIm9mX2FfMDE2Iiwib2ZfaF8wMTciLCJhbGFybV8wMTkiLCJmaXJlZF8wMjMiLCJudW1fZmlyZXNfdG9fc2tpcF8wMjUiLCJzY2hlZHVsZWRfYXRfMDI3IiwidGltZV9zb3VyY2VfMDI5IiwiYm5kc18wMTgiLCJibmRzXzAxOCQwIiwiYXJnXzAyNiIsImJuZHNfMDE4JDEiLCJhcmdfMDI0IiwiYm5kc18wMTgkMiIsImJuZHNfMDE4JDMiLCJibmRzXzAxOCQ0Iiwic2V4cF9vZl90X3VuaXQiLCJ4XzAzMSIsImZpcmVkJDEiLCJpbnZhcmlhbnRfaCIsInNjaGVkdWxlZF9hdF9mdW4iLCJhXzAzMyIsImJfMDM0IiwibnVtX2ZpcmVzX3RvX3NraXBfZnVuIiwiZmlyZWRfZnVuIiwieF8wMzIiLCJvZl9hXzAzNSIsIm9mX2hfMDM2IiwiYXJnMF8wMzciLCJyZXMwXzAzOCIsImFyZzBfMDM5IiwicmVzMF8wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwib2ZfYV8wNDUiLCJvZl9oXzA0NiIsImFyZzBfMDQ3IiwicmVzMF8wNDgiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwieF8wNTMiLCJhJDAiLCJvZl9hXzA1NCIsIm9mX2hfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJhcmcxXzA2MyIsImFyZzBfMDYyIiwicmVzMF8wNjQiLCJyZXMxXzA2NSIsImlzX2luX3RpbWluZ193aGVlbCIsImFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZSIsInJ1bl9hdCQwIiwicnVuX2FmdGVyJDAiLCJhdF90aW1lcyIsIm5leHRfdGltZSIsImF0X3ZhcnlpbmdfaW50ZXJ2YWxzIiwiY29tcHV0ZV9zcGFuIiwic3RhcnQkMCIsImltbWVkaWF0ZWx5IiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsIm9mX2FfMDAyIiwicmVzMF8wMDQiLCJsZW5ndGhfMDA2IiwiYm5kc18wMDUiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwibWF4X2NvbmN1cnJlbnRfam9icyIsImNsZWFuZWQkMCIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQkMCIsImNhcGFjaXR5X2F2YWlsYWJsZSQwIiwibnVtX2pvYnNfcnVubmluZyQwIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0JDAiLCJqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UkMCIsIm1heF9jb25jdXJyZW50X2pvYnMkMCIsIm9mX2FfMDExIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0XzAxOSIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZV8wMTciLCJtYXhfY29uY3VycmVudF9qb2JzXzAxNSIsImNvbnRpbnVlX29uX2Vycm9yXzAxMyIsIm51bV9qb2JzX3J1bm5pbmdfMDIxIiwiY2FwYWNpdHlfYXZhaWxhYmxlXzAyMyIsImlzX2RlYWRfMDI1IiwiY2xlYW5zXzAyNyIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRfMDI5IiwiY2xlYW5lZF8wMzEiLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiYm5kc18wMTIkMiIsImJuZHNfMDEyJDMiLCJibmRzXzAxMiQ0Iiwib3V0Y29tZV8wMDkiLCJzdGFydF8wMDYiLCJibmRzXzAwNSQwIiwidl8wMDgiLCJibmRzXzAwNSQxIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2ZfYV8wMzQiLCJvZl9raW5kXzAzNSIsInhfMDM2IiwibnVtX2pvYnNfd2FpdGluZ190b19zdGFydCIsImNsZWFuX3Jlc291cmNlIiwia2lsbCIsImF0X2tpbGwiLCJjbGVhbmVkJDEiLCJzdGFydF9qb2IiLCJqb2JfcmVzb3VyY2UiLCJqb2JfcmVzb3VyY2VzIiwiY3JlYXRlX3dpdGgiLCJvdXRjb21lIiwiaW50ZXJuYWxfam9iIiwiaGFuZGxlX2VucXVldWVfcmVzdWx0IiwiZW5xdWV1ZSQwIiwiZW5xdWV1ZV9leGNsdXNpdmUiLCJkb25lIiwiZl9wbGFjZWhvbGRlciIsInNsb3QiLCJtb25hZF9zZXF1ZW5jZV9ob3ciLCJob3ciLCJtb25hZF9zZXF1ZW5jZV9ob3cyIiwicHJpb3Jfam9ic19kb25lIiwiYWxsX2R1bW15X2pvYnNfcnVubmluZyIsImR1bW15X2pvYnNfcnVubmluZyIsImNhcGFjaXR5X2F2YWlsYWJsZSQxIiwiaGFzX3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudCIsIm5leHRfdXBjb21pbmdfZXZlbnRfZXhuIiwiZXZlbnRfcHJlY2lzaW9uIiwiYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2siLCJoYW5kbGUiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2siLCJyZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2siLCJsc3QiLCJsc3QkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJxdWV1ZSIsInJ1bm5pbmciLCJ0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiIsImN5Y2xlX3N0YXJ0X25zIiwiY3ljbGVfdGltZXNfbnMiLCJjeWNsZV90aW1lcyIsImV2ZW50X3ByZWNpc2lvbl9ucyIsImJvb2wiLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayQwIiwiYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rJDAiLCJyZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va18kMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEkMCIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInZfMDA2IiwiZm9sZGkiLCJzZXFtYXBpIiwiaXRlcmkiLCJtYXBpIiwiZmlsdGVyaSIsImJvb2xzIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImZpbmRfbWFwaSIsImF1eCIsImZpbmRpIiwiZWx0IiwiZXhpc3RzaSIsImZvcl9hbGxpIiwiZmlsdGVyX21hcCIsImZpbHRlciIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInRsIiwiaGQiLCJjaGFuZ2UiLCJ1cGRhdGUiLCJpdGVyX2tleXMiLCJhbGlzdCIsImFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIiwiZm9sZF9yaWdodCIsImFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIiwic2VxdWVuY2UiLCJqb2JfbWFwIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInRodW5rIiwicmVyYWlzZSIsImdlbmVyYWwiLCJoYXNoYWJsZSIsImNvbWJpbmUiLCJlcnIiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImFwcGx5IiwiZTEiLCJlMiIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJva19leG4iLCJvZl9leG4iLCJvZl9leG5fcmVzdWx0IiwibXNnIiwic2V4cF9vZiIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ0YWciLCJ0YWdfcyIsInRhZ19zX2xhenkiLCJ0YWdfYXJnIiwidW5pbXBsZW1lbnRlZCIsImNvbWJpbmVfZXJyb3JzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCQwIiwidHJ5X3dpdGhfam9pbiIsInN0YXRlJDAiLCJmb2xkX21hcGkiLCJtYXBpX2YiLCJmb2xkX2YiLCJ0aHJvdHRsZSIsImMiLCJjJDEiLCJjJDAiLCJpJDAiLCJhY2N1bSIsIm1heWJlX3YiLCJzaG93X2RlYnVnX21lc3NhZ2VzIiwiY2hlY2tfaW52YXJpYW50IiwieF8wMDQiLCJ2YWx1ZXNfcmVhZCIsInNldF92YWx1ZXNfcmVhZCIsInZhbHVlc19yZWFkJDAiLCJwaXBlX2lkXzAwOSIsInZhbHVlc19yZWFkXzAxMSIsImJuZHNfMDA4IiwiYXJnXzAxNSIsImJuZHNfMDA4JDAiLCJ2XzAxMyIsImJuZHNfMDA4JDEiLCJibmRzXzAwOCQyIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbSIsInZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdSIsIndoZW5fc2VudF9kb3duc3RyZWFtIiwiY29uc3VtZXIiLCJ3YW50cyIsImNvbnN1bWVyJDAiLCJ3YW50cyQwIiwib2ZfYV8wMjkiLCJjb25zdW1lcl8wMzMiLCJ3YW50c18wMzEiLCJibmRzXzAzMCIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMSIsInZfMDIwIiwicmVzMF8wMjIiLCJhcmcxXzAyNSIsImFyZzBfMDI0IiwicmVzMF8wMjYiLCJ2XzAyMyIsInJlczFfMDI3IiwiYm5kc18wMzAkMCIsImZpbGxfd2l0aF9lb2YiLCJpJDEiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIiwicmVhZHlfMDM5IiwiZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF8wMzciLCJibmRzXzAzNiIsImJuZHNfMDM2JDAiLCJibmRzXzAzNiQxIiwiY29uc3VtZXJzIiwic2V0X2NvbnN1bWVycyIsImJsb2NrZWRfcmVhZHMiLCJibG9ja2VkX2ZsdXNoZXMiLCJwdXNoYmFjayIsInNldF9wdXNoYmFjayIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJzaXplX2J1ZGdldCQwIiwic2V4cF9vZl9waXBlIiwib2ZfYV8wNDEiLCJvZl9waGFudG9tXzA0MiIsImlkXzA0NCIsImluZm9fMDQ2IiwiYnVmZmVyXzA1MCIsInNpemVfYnVkZ2V0XzA1MiIsInB1c2hiYWNrXzA1NCIsIm51bV92YWx1ZXNfcmVhZF8wNTYiLCJyZWFkX2Nsb3NlZF8wNjQiLCJjbG9zZWRfMDYyIiwiYmxvY2tlZF9yZWFkc18wNjAiLCJibG9ja2VkX2ZsdXNoZXNfMDU4IiwiY29uc3VtZXJzXzA2NiIsInVwc3RyZWFtX2ZsdXNoZWRzXzA2OCIsImJuZHNfMDQzIiwiYXJnXzA2OSIsImJuZHNfMDQzJDAiLCJhcmdfMDY3IiwiYm5kc18wNDMkMSIsImFyZ18wNjUiLCJibmRzXzA0MyQyIiwiYXJnXzA2MyIsImJuZHNfMDQzJDMiLCJhcmdfMDYxIiwiYm5kc18wNDMkNCIsImFyZ18wNTkiLCJibmRzXzA0MyQ1IiwiYXJnXzA1NyIsImJuZHNfMDQzJDYiLCJhcmdfMDU1IiwiYm5kc18wNDMkNyIsImFyZ18wNTMiLCJibmRzXzA0MyQ4IiwiYXJnXzA1MSIsImJuZHNfMDQzJDkiLCJ2XzA0NyIsImFyZ18wNDkiLCJibmRfMDQ4IiwiYm5kc18wNDMkMTAiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMTEiLCJoYXNoIiwiaXNfcmVhZF9jbG9zZWQiLCJwdXNoYmFjayQxIiwieF8wNzMiLCJ4XzAzNSIsInNleHBfb2ZfcGhhbnRvbSIsIm9mX2FfMDc0IiwieF8wNzUiLCJzZXhwX29mX3BoYW50b20kMCIsIm9mX2FfMDc2IiwieF8wNzciLCJpZF9yZWYiLCJpbml0aWFsX2J1ZmZlciIsInZhbGlkYXRlX3NpemVfYnVkZ2V0IiwidXBkYXRlX3B1c2hiYWNrIiwieF8wNzgiLCJjbG9zZV9yZWFkIiwieF8wNzkiLCJmbHVzaCIsImNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4YyIsInciLCJjcmVhdGVfcmVhZGVyIiwiY2xvc2Vfb25fZXhjZXB0aW9uIiwiY3JlYXRlX3dyaXRlciIsInZhbHVlc193ZXJlX3JlYWQiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInN0YXJ0X3dyaXRlIiwieF8wODEiLCJ4XzA4MCIsImZpbmlzaF93cml0ZSIsImJsb2NrZWRfcmVhZCIsIml2YXIkMSIsInRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2siLCJ0cmFuc2Zlcl9pbiIsIndyaXRlIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlJDAiLCJ3cml0ZV93aGVuX3JlYWR5Iiwid3JpdGVfaWZfb3BlbiIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiIsImVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIiwieF8wODMiLCJzdGFydF9yZWFkIiwibGFiZWwiLCJ4XzA4NCIsImdlbl9yZWFkX25vdyIsImdldF9tYXhfcXVldWVfbGVuZ3RoIiwibWF4X3F1ZXVlX2xlbmd0aCQwIiwicmVhZF9ub3ciLCJyZWFkX25vdyQwIiwicmVhZCQwIiwicmVhZF9leG4iLCJ2YWx1ZXNfYXZhaWxhYmxlIiwicmVhZF9jaG9pY2UiLCJyZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXgiLCJyZWFkX2V4YWN0bHkiLCJudW1fdmFsdWVzIiwiYWxyZWFkeV9yZWFkIiwiZG93bnN0cmVhbV9mbHVzaGVkIiwidXBzdHJlYW1fZmx1c2hlZCIsImFkZF9jb25zdW1lciIsInBpcGVfaWQiLCJjb25zdW1lciQxIiwidXBzdHJlYW0iLCJkb3duc3RyZWFtIiwidXBzdHJlYW1fZmx1c2hlZCQwIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsImZvbGRfZ2VuIiwiZmx1c2hlZCIsImZvbGRfd2l0aG91dF9wdXNoYmFjayIsIndpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yIiwiaXRlcl93aXRob3V0X3B1c2hiYWNrIiwibWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMCIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMSIsInJlbWFpbmluZyIsInJlbWFpbmluZyQwIiwiZHJhaW4iLCJkcmFpbl9hbmRfY291bnQiLCJzdW0iLCJyZWFkX2FsbCIsImlucHV0IiwidG9fc3RyZWFtX2RlcHJlY2F0ZWQiLCJvZl9zdHJlYW1fZGVwcmVjYXRlZCIsInRyYW5zZmVyIiwibmV4dF9kZWZlcnJlZCIsImNoZWNrX2Nsb3NlZF9sb29wX25leHQiLCJ0cmFuc2Zlcl9nZW4iLCJvdXRwdXQiLCJsaW5rIiwidW5saW5rIiwib3V0cHV0X2Nsb3NlZCIsInRyYW5zZmVyJDAiLCJ0cmFuc2Zlcl9pZCIsIm1hcF9nZW4iLCJjb25jYXRfbWFwX2xpc3QiLCJmaWx0ZXJfbWFwJDAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAkMCIsIngkMCIsImZvbGRpbmdfbWFwIiwiYWNjdW0kMCIsImVtcHR5Iiwic2luZ2xldG9uIiwid3JpdGVyIiwicmVhZGVyIiwic3ltYm9sIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSQxIiwic2VxdWVuY2UkMCIsInRvX3NlcXVlbmNlIiwiaW50ZXJsZWF2ZV9waXBlIiwiaW5wdXRzIiwib3V0cHV0X3dyaXRlciIsIm51bV9waXBlc19yZW1haW5pbmciLCJkZWNyX251bV9waXBlc19yZW1haW5pbmciLCJoZWFwIiwiaGFuZGxlX3JlYWQiLCJlb2Zfb3Jfb2siLCJwb3BfaGVhcF9hbmRfbG9vcCIsImluaXRpYWxfcHVzaCIsImNvbmNhdF9waXBlIiwiZm9yayIsInB1c2hiYWNrX3VzZXMiLCJ3cml0ZXIwIiwicmVhZGVyMCIsIndyaXRlcjEiLCJyZWFkZXIxIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCIsInNvbWVfcmVhZGVyX3dhc19jbG9zZWQkMCIsInN0aWxsX29wZW4iLCJmaWx0ZXJfb3BlbiIsInN0aWxsX29wZW4kMCIsInNldF9pbmZvIiwidmFsdWVfYXZhaWxhYmxlIiwic2V0X3ZhbHVlX2F2YWlsYWJsZSIsInRha2VuIiwiY3VycmVudF92YWx1ZSIsInZhbHVlX2F2YWlsYWJsZSQwIiwidGFrZW4kMCIsImN1cnJlbnRfdmFsdWUkMCIsInZhbHVlX2F2YWlsYWJsZSQxIiwidmFsdWVfYXZhaWxhYmxlX2Z1biIsImFfMDExIiwiYl8wMTIiLCJ0YWtlbl9mdW4iLCJjdXJyZW50X3ZhbHVlX2Z1biIsInhfMDEwIiwidGFrZW5fMDA2IiwiY3VycmVudF92YWx1ZV8wMDQiLCJ2YWx1ZV9hdmFpbGFibGVfMDA4IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInBlZWtfZXhuIiwieF8wMTMiLCJvZl9hXzAxNCIsInhfMDE1IiwieF8wMTciLCJ3cml0ZV9vbmx5IiwidGFrZV9ub25lbXB0eSIsInRha2Vfbm93X2V4biIsInRha2Vfbm93IiwidGFrZSIsInVwZGF0ZV9leG4iLCJ0YWtlbiQxIiwicHV0IiwicGlwZV93aGVuX3JlYWR5IiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJvbl9ldmVudCIsImFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdCIsImN1cnJlbnRfY29ubmVjdGlvbiIsImNvbm4iLCJjbG9zZV9maW5pc2hlZCQwIiwiaXNfY2xvc2VkJDAiLCJjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QiLCJzZXhwX29mX3QkMSIsInBhcmFtIiwiY29ubl8wMjMiLCJuZXh0X2Nvbm5lY3RfcmVzdWx0XzAyNiIsImRvbl90X3JlY29ubmVjdF8wMzQiLCJjbG9zZV9maW5pc2hlZF8wMzIiLCJjbG9zZV9zdGFydGVkXzAzMCIsImV2ZW50X2hhbmRsZXJfMDI4IiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYm5kc18wMTAiLCJhcmdfMDE0IiwiYm5kc18wMTAkMCIsImFyZ18wMTIiLCJibmRzXzAxMCQxIiwiYXJnXzAyOSIsImJuZHNfMDE2JDUiLCJhcmdfMDI3IiwiYm5kc18wMTYkNiIsInZfMDI1IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwic3RoIiwic3RoJDAiLCJyYW5kb21fc3RhdGUiLCJzdGgkMSIsInRpbWVfc291cmNlIiwiZXZlbnRfaGFuZGxlciIsImRlZmF1bHRfcmV0cnlfZGVsYXkiLCJub25fcmFuZG9taXplZF9kZWxheSIsInJldHJ5X2RlbGF5X3NwYW4iLCJyYW5kb21fc3RhdGUkMCIsInNwYW4iLCJzcGFuJDAiLCJkaXN0YW5jZSIsIndhaXQiLCJyZXRyeV9kZWxheSIsInByZXZpb3VzX2FkZHJlc3MiLCJwcmV2aW91c19lcnJvciIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJlIiwic2FtZV9hc19wcmV2aW91c19lcnJvciIsImFkZHIiLCJwcmV2aW91c19hZGRyZXNzJDAiLCJzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MiLCJwb3MiLCJhbGwiLCJlcnJvcl9zb3VyY2VfMDA1IiwicmV0aXJlZF9rcmJfd29yZCIsImNvbXBhcmUiLCJ0X29mX3NleHAiLCJzZXhwXzAwNiIsInNleHBfb2ZfdCIsImdyb3VwIiwibWFnaWNfd29yZCIsIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSIsImdlbl9tYWdpY19udW1iZXIiLCJ3b3JkIiwiYWNjIiwiYyIsIm1hZ2ljX251bWJlciIsInQiLCJwIiwiYnlfbWFnaWNfbnVtYmVyIiwibWFnaWNfd29yZHMiLCJtYWdpY19udW1iZXJzIiwibiIsIm1hZ2ljX251bWJlciQwIiwic2l6ZSIsInNleHBpZmllciIsImVxdWFsIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMDciLCJiXzAwOCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJjcmVhdGVfZXhuIiwicHJvdG9jb2wiLCJzdXBwb3J0ZWRfdmVyc2lvbnMiLCJnZXRfcHJvdG9jb2wiLCJ2ZXJzaW9ucyIsInByb3RvY29scyIsIm5lZ290aWF0ZSIsImFsbG93X2xlZ2FjeV9wZWVyIiwidXMiLCJwZWVyIiwidXNfdmVyc2lvbnMiLCJ1c19wcm90b2NvbCIsInBlZXJfdmVyc2lvbnMiLCJwZWVyX3Byb3RvY29sIiwidmVyc2lvbiIsIngiLCJtYXRjaGVzX21hZ2ljX3ByZWZpeCIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImYiLCJhbnlfbWFnaWNfcHJlZml4IiwiZ3JvdXAkMCIsImJpbl9zaXplX3QkMCIsImFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZSIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkZXJfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlJDAiLCJib3VuZGVkX2xpc3RfYmluX3NpemUiLCJiaW5fc2hhcGVfdCIsImJpbl90IiwiYmluX3NpemVfdCIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZV90IiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJ1ZiIsInBvc19yZWYiLCJ2bmF0MCIsIm9mX2ludF9leG4iLCJvZl93cml0ZXIiLCJ3cml0ZSIsInNpemUiLCJ3cml0ZSQwIiwicG9zIiwiYSIsImxlbiIsInBvcyQwIiwic2l6ZSQwIiwib2ZfdHlwZV9jbGFzcyIsImJpbl9hIiwidGVzdCIsInMiLCJiaWdzdHJpbmciLCJiaWdzdHJpbmdfdmVyc2lvbiIsIndyaXRlcl93aXRoX2xlbmd0aCIsIndpdGhfbGVuZ3RoX3ZlcnNpb24iLCJwb3ciLCJ4IiwiZGVzY3JpcHRpb25zIiwiZXJyb3Jfc291cmNlXzAxNyIsImdyb3VwIiwidjIiLCJ2MSIsInZpbnQiLCJ2X25hbWUiLCJ2X3ZlcnNpb24iLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsIm4iLCJoYXNoX2ZvbGRfdCIsImhzdiIsImFyZyIsImhzdiQwIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfMDA0IiwiZmllbGRfc2V4cHNfMDA1IiwibmFtZV8wMDYiLCJ2ZXJzaW9uXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwic2V4cF8wMDQkMCIsImZpZWxkX3NleHBzXzAxNCIsImZpZWxkX25hbWVfMDEyIiwidGFpbF8wMTkiLCJmaWVsZF9zZXhwXzAxMyQyIiwiZmllbGRfc2V4cF8wMTMiLCJ4XzAyMCIsImZpZWxkX3NleHBfMDEzJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMSIsImZ2YWx1ZV8wMTYiLCJ2ZXJzaW9uXzAwOSIsIm5hbWVfMDA3Iiwic2V4cF9vZl90IiwidmVyc2lvbl8wMjQiLCJuYW1lXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImFyZ18wMjMiLCJibmRzXzAyMSQwIiwic3VtbWFyaXplIiwidHMiLCJ2ZXJzaW9uIiwibmFtZSIsInN1bW1hcnkiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDMiLCJ0IiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDg2IiwiaWRfMDg0IiwiYXJnXzA4NyIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX3QkOSIsImJpbl9yZWFkX3QkMTAiLCJiaW5fcmVhZGVyX3QkNCIsImJpbl9yZWFkX25hdDBfdCIsImJpbl9yZWFkX25hdDBfdCQwIiwiYmluX3JlYWRlcl9uYXQwX3QiLCJiaW5fc2l6ZV9uYXQwX3QiLCJiaW5fd3JpdGVfbmF0MF90IiwiYmluX3dyaXRlcl9uYXQwX3QiLCJncm91cCQ1IiwiYmluX3NoYXBlX3QkMiIsInJlc3BvbnNlIiwiZXJyb3IiLCJiaW5fc2l6ZV90JDIiLCJzaXplX29mX3Jlc3BvbnNlIiwic2l6ZV9vZl9lcnJvciIsImJpbl93cml0ZV90JDIiLCJ3cml0ZV9yZXNwb25zZSIsIndyaXRlX2Vycm9yIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlIiwiYmluX3dyaXRlcl9lcnJvciIsImJpbl9yZWFkX3QkMTEiLCJvZl9yZXNwb25zZSIsIm9mX2Vycm9yIiwiYmluX3JlYWRfdCQxMiIsInZfdW51c2VkX3F1ZXJ5X2lkIiwidl9pbml0aWFsIiwiYmluX3JlYWRlcl90JDUiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlIiwiYmluX3JlYWRlcl9lcnJvciIsImJpbl90JDIiLCJiaW5fcmVzcG9uc2UiLCJiaW5fZXJyb3IiLCJzZXhwX29mX3QkMiIsIm9mX3Jlc3BvbnNlXzA4OCIsIm9mX2Vycm9yXzA4OSIsImluaXRpYWxfMDkzIiwidW51c2VkX3F1ZXJ5X2lkXzA5MSIsImFyZ18wOTQiLCJibmRzXzA5MCIsImFyZ18wOTIiLCJibmRzXzA5MCQwIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMiIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMiIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ1IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDYiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkX3QkMTQiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkX25hdDBfdCQxIiwiYmluX3JlYWRfbmF0MF90JDIiLCJiaW5fcmVhZGVyX25hdDBfdCQwIiwiYmluX3NpemVfbmF0MF90JDAiLCJiaW5fd3JpdGVfbmF0MF90JDAiLCJiaW5fd3JpdGVyX25hdDBfdCQwIiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMyIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ3IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDgiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX25lZWRzX2xlbmd0aCQzIiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMSIsIm9mX2FfMDk1IiwiYXJnMF8wOTYiLCJyZXMwXzA5NyIsImFyZzBfMDk4IiwicmVzMF8wOTkiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDMiLCJiaW5fcmVhZF9uYXQwX3QkNCIsImJpbl9yZWFkZXJfbmF0MF90JDEiLCJiaW5fc2l6ZV9uYXQwX3QkMSIsImJpbl93cml0ZV9uYXQwX3QkMSIsImJpbl93cml0ZXJfbmF0MF90JDEiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJsZW5ndGgiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJyZWFkX2ZvcmV2ZXIiLCJvbl9tZXNzYWdlIiwib25fZW5kX29mX2JhdGNoIiwicmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCIsImJpbl9yZWFkZXIiLCJwYWNrJDAiLCJjbG9zZSQwIiwiaXNfY2xvc2VkJDAiLCJtb25pdG9yIiwiYnl0ZXNfdG9fd3JpdGUiLCJmbHVzaGVkIiwicmVhZHlfdG9fd3JpdGUiLCJzZW5kX2Jpbl9wcm90IiwiYmluX3dyaXRlciIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ubyIsInN0b3BwZWQiLCJjYW5fc2VuZCIsInRyYW5zZmVyIiwib3B0IiwicGlwZSIsImYiLCJzdGgiLCJtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCIsImNvbnN1bWVyIiwiaXZhciIsIml0ZXIiLCJxIiwiZW5kX29mX3BpcGUiLCJ3cml0ZXJfMDA2IiwicmVhZGVyXzAwNCIsImFyZ18wMDciLCJibmRzXzAwMyIsImJuZHNfMDAzJDAiLCJjbG9zZSQxIiwiY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fIiwiY2FsbGJhY2tfMDAyIiwiY2xvc2VfY29ubmVjdGlvbiIsImNvbnRpbnVlJDAiLCJoYW5kbGVfZXhuIiwiY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIiwiZXhuIiwiY2FsbGJhY2siLCJ3cml0ZXJfMDA0IiwicXVlcnlfaWRfMDAyIiwicmVzcG9uZGVkXzAwNiIsImJuZHNfMDAxJDEiLCJjcmVhdGUiLCJxdWVyeV9pZCIsIndyaXRlciIsImxpZnQiLCJpbXBsIiwiYmluX21zZyIsInN0YXRlIiwic3RyIiwiaW1wbCQwIiwicmVzdWx0X21vZGUiLCJpbXBsJDEiLCJiaW5fcXVlcnkiLCJyZXN1bHRfbW9kZSQwIiwiaW1wbCQyIiwicmVzcCIsImltcGwkMyIsImJpbl91IiwiYmluX2kiLCJiaW5fcSIsImltcGwkNCIsImltcGwkNSIsImltcGwkNiIsInciLCJvZl9jb25uZWN0aW9uX3N0YXRlXzAwOCIsIm9uX2V4Y2VwdGlvbl8wMTgiLCJzaGFwZXNfMDE2IiwiZl8wMTQiLCJ2ZXJzaW9uXzAxMiIsInRhZ18wMTAiLCJhcmdfMDE5IiwiYm5kc18wMDkiLCJhcmdfMDE3IiwiYm5kc18wMDkkMCIsImFyZ18wMTUiLCJibmRzXzAwOSQxIiwiYXJnXzAxMyIsImJuZHNfMDA5JDIiLCJhcmdfMDExIiwiYm5kc18wMDkkMyIsImRlc2NyaXB0aW9uIiwibGlmdCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiZGF0YSIsImFkZF9sZW4kMCIsImFkZF9sZW4kMSIsImUkMCIsImUiLCJhcmdfMDE4Iiwic3ltYm9sIiwiZGVmZXJfcmVzdWx0IiwiZCIsImQkMCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAzMCIsImJuZHNfMDA4IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmdfMDI0IiwiYm5kc18wMDgkMCIsImFyZ18wMjIiLCJibmRzXzAwOCQxIiwiYXJnXzAyMCIsImJuZHNfMDA4JDIiLCJibmRzXzAwOCQzIiwiYXJnXzAxNiIsImJuZHNfMDA4JDQiLCJhcmdfMDE0IiwiYm5kc18wMDgkNSIsImFyZ18wMTIiLCJibmRzXzAwOCQ2IiwiYXJnXzAxMCIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJpZCIsInJlc3VsdCIsInNleHAiLCJ4XzAzNCIsIndyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX2RhdGEiLCJiaW5fd3JpdGVfdm9pZCIsImJ1ZmZlciIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hcyIsImJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIiwic3RyX2xlbiIsIm5leHQiLCJiaW5fc2l6ZV9uYXQwX2hlYWRlciIsImhlYWRlcl9wcmVmaXgiLCJkYXRhX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuIiwic3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuIiwiYmluX3dyaXRlX25hdDBfaGVhZGVyIiwiYmluX3dyaXRlcl9uYXQwX2hlYWRlciIsImJpbl9zaXplX21lc3NhZ2UiLCJiaW5fd3JpdGVfbWVzc2FnZSIsImJpbl93cml0ZXJfbWVzc2FnZSIsImJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyIsImluc3RhbmNlIiwiY2xvc2VkIiwid3JpdGVfZW9mIiwid3JpdGVfbWVzc2FnZSQwIiwic3RyZWFtX3dyaXRlciIsImNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbiIsImdyb3VwcyIsImVsZW1lbnRfaW5fZ3JvdXAiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQwIiwiaW5zdGFuY2UkMCIsIndyaXRlJDEiLCJtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24iLCJvbl9leGNlcHRpb24iLCJhcHBseV9pbXBsZW1lbnRhdGlvbiIsImltcGxlbWVudGF0aW9uIiwicXVlcnkiLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJiaW5fcXVlcnlfcmVhZGVyIiwicXVlcnlfY29udGVudHMiLCJleG4kMCIsImYkMCIsImxlbiQwIiwiZiQxIiwiYmluX3Jlc3BvbnNlX3dyaXRlciIsImJpbl9xdWVyeV9yZWFkZXIkMCIsInF1ZXJ5X2NvbnRlbnRzJDAiLCJkYXRhJDAiLCJleG4kMSIsImJhY2t0cmFjZSIsImYkMiIsInJlc3BvbmRlciIsImlzX3VuY2F1Z2h0X2V4biIsInJlc3VsdCQwIiwiY2hlY2tfcmVzcG9uZGVkIiwiciIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciQxIiwic3RyZWFtX3F1ZXJ5IiwibGVuJDEiLCJkYXRhJDEiLCJmJDMiLCJpbXBsX3dpdGhfc3RhdGUiLCJmJDYiLCJ3cml0ZXIkMCIsInJ1bl9pbXBsIiwic3BsaXRfb2siLCJoYW5kbGVfb2siLCJvayIsImluaXRpYWwiLCJmJDQiLCJwaXBlX3IiLCJmJDUiLCJmbHVzaCIsImFjYyIsInByb2R1Y2Vyc19mbHVzaGVkIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsInRhZyIsImlfcyIsImR1cHMiLCJpIiwiaW5zdGFudGlhdGUiLCJjb25uZWN0aW9uX3N0YXRlIiwidW5wYWNrZWQiLCJjcmVhdGVfZXhuIiwibnVsbCQwIiwiYWRkX2V4biIsImRlc2MiLCJhZGQiLCJpbXBsZW1lbnRhdGlvbnMkMCIsIm9uX3Vua25vd25fcnBjJDAiLCJjYWxsIiwiZXhwZXJ0IiwiY2Fubm90X3NlbmQiLCJ4XzAzOSIsIm1hcmtfcmVzcG9uZGVkIiwic2NoZWR1bGUiLCJoZWFkZXIiLCJoYW5kbGVfc2VuZF9yZXN1bHQkMCIsIndyaXRlX2JpZ3N0cmluZyIsIndyaXRlX2Jpbl9wcm90IiwibXNnIiwiZXJyb3Jfc291cmNlXzA0NiIsIm5lZ290aWF0ZSQwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJ0X29mX3NleHAkMCIsInNleHBfMDMzIiwiZmllbGRfc2V4cHNfMDM0IiwidGltZW91dF8wMzUiLCJzZW5kX2V2ZXJ5XzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNDgiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA0OSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDQiLCJzZW5kX2V2ZXJ5XzAzOCIsInRpbWVvdXRfMDM2Iiwic2VuZF9ldmVyeV8wNTMiLCJ0aW1lb3V0XzA1MSIsImFyZ18wNTQiLCJibmRzXzA1MCIsImFyZ18wNTIiLCJibmRzXzA1MCQwIiwidl90aW1lb3V0Iiwidl9zZW5kX2V2ZXJ5Iiwic2VuZF9ldmVyeSIsInRpbWVvdXQiLCJzdGgkMCIsImhlYXJ0YmVhdF9jb25maWdfMDYzIiwiZGVzY3JpcHRpb25fMDYxIiwiaGVhcnRiZWF0X2NhbGxiYWNrc18wNjUiLCJsYXN0X3NlZW5fYWxpdmVfMDY3IiwiaGVhcnRiZWF0X2V2ZW50XzA4MyIsInRpbWVfc291cmNlXzA4MSIsImltcGxlbWVudGF0aW9uc19pbnN0YW5jZV8wNzkiLCJjbG9zZV9maW5pc2hlZF8wNzciLCJjbG9zZV9zdGFydGVkXzA3NSIsIm9wZW5fcXVlcmllc18wNzMiLCJ3cml0ZXJfMDcxIiwicmVhZGVyXzA2OSIsImFyZ18wODQiLCJibmRzXzA2MCIsImFyZ18wODIiLCJibmRzXzA2MCQwIiwiYXJnXzA4MCIsImJuZHNfMDYwJDEiLCJhcmdfMDc4IiwiYm5kc18wNjAkMiIsImFyZ18wNzYiLCJibmRzXzA2MCQzIiwiYXJnXzA3NCIsImJuZHNfMDYwJDQiLCJhcmdfMDcyIiwiYm5kc18wNjAkNSIsImFyZ18wNzAiLCJibmRzXzA2MCQ2IiwiYXJnXzA2OCIsImJuZHNfMDYwJDciLCJhcmdfMDY2IiwiYm5kc18wNjAkOCIsInRpbWVvdXRfMDU2Iiwic2VuZF9ldmVyeV8wNTgiLCJhcmdfMDU5IiwiYm5kc18wNTUiLCJhcmdfMDU3IiwiYm5kc18wNTUkMCIsImFyZ18wNjQiLCJibmRzXzA2MCQ5IiwiYXJnXzA2MiIsImJuZHNfMDYwJDEwIiwic2V4cF9vZl90X2h1bV93cml0ZXIiLCJ4XzA4NSIsImRpc3BhdGNoIiwicmVzcG9uc2VfaGFuZGxlciIsImJpbl93cml0ZXJfcXVlcnkiLCJtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyIsImRvX3NlbmQiLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImVycm9yJDAiLCJkdW1teV9idWZmZXIiLCJkdW1teV9yZWYiLCJjb250YWluc19tYWdpY19wcmVmaXgiLCJjcmVhdGUkMCIsImhhbmRzaGFrZV90aW1lb3V0IiwiaGVhcnRiZWF0X2NvbmZpZyIsInN0aCQxIiwic3RoJDIiLCJ0aW1lX3NvdXJjZSIsIndyaXRlciQxIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODgiLCJoZWFydGJlYXRfZnJvbV9ub3dfb24iLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJwZWVyIiwid2l0aF9jbG9zZSIsInRyYW5zcG9ydCIsImRpc3BhdGNoX3F1ZXJpZXMiLCJvbl9oYW5kc2hha2VfZXJyb3IiLCJoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIiwidCQwIiwic2VydmVyX3dpdGhfY2xvc2UiLCJvbl9oYW5kc2hha2VfZXJyb3IkMCIsImVycm9yX3NvdXJjZV8wMDkiLCJlcnJvcl9zb3VyY2VfMDI0Iiwic3ltYm9sJDAiLCJkaXNwYXRjaF9yYXciLCJjb25uIiwicXVlcnkkMCIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInNoYXBlcyIsImxzdCIsInNoYXBlIiwicXVlcnlfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQiLCJzaGFwZXMkMCIsImltcGxlbWVudCIsImltcGxlbWVudCQwIiwicmVzcG9uc2UkMCIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IiLCJkaXNwYXRjaCQwIiwiZGlzcGF0Y2hfZXhuIiwibWFrZV9kaXNwYXRjaCIsImRvX2Rpc3BhdGNoIiwicnBjX3RhZyIsImhhbmRsZV9yZXNwb25zZSIsImhhbmRsZV9lcnJvciIsInhfMDAyIiwiZGlzcGF0Y2gkMSIsInNjaGVkdWxlX2Rpc3BhdGNoIiwiaW1wbGVtZW50JDEiLCJpbXBsZW1lbnQkMiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uIiwiaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24kMCIsInZlcnNpb24kMCIsIm5hbWUkMCIsIm1zZ190eXBlX2lkIiwic2hhcGVzJDEiLCJkZXNjcmlwdGlvbiQwIiwiaW1wbGVtZW50JDMiLCJkaXNwYXRjaCQyIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciQwIiwiZGlzcGF0Y2gkMyIsImRpc3BhdGNoX2V4biQwIiwiaW1wbGVtZW50JDQiLCJkaXNwYXRjaCQ0Iiwic2NoZWR1bGVfZGlzcGF0Y2gkMCIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNyZWF0ZSQxIiwiY2xpZW50X3B1c2hlc19iYWNrIiwiYmluX2luaXRpYWxfcmVzcG9uc2UiLCJiaW5fdXBkYXRlX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2UiLCJhbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlIiwiY2xpZW50X3B1c2hlc19iYWNrJDAiLCJpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQiLCJ1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCIsImVycm9yX3Jlc3BvbnNlX3R5cGVfaWQiLCJtYWtlX2luaXRpYWxfbWVzc2FnZSIsImltcGxlbWVudF9nZW4iLCJpbXBsZW1lbnQkNSIsImMiLCJhYm9ydCIsInJlYWRfZXJyb3IiLCJoYW5kbGVyIiwiY29yZV9lcnIiLCJkaXNwYXRjaF9nZW4iLCJtYWtlX3VwZGF0ZV9oYW5kbGVyIiwiaW5pdGlhbF9zdGF0ZSIsImluaXRpYWxfaGFuZGxlciIsImVyciQxIiwiaW5pdGlhbF9tc2ciLCJpbml0aWFsJDAiLCJleHRyYSIsImhhbmRsZXIkMCIsImJpbl9yZWFkZXJfdXBkYXRlIiwiZXJyJDQiLCJlcnIkMyIsImVyciQyIiwiZGlzcGF0Y2gkNSIsImluaXQiLCJwaXBlX21ldGFkYXRhIiwicGlwZV93IiwiY3JlYXRlJDIiLCJiaW5fcXVlcnkkMCIsImJpbl9yZXNwb25zZSQwIiwiaW1wbGVtZW50JDYiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsImNyZWF0ZSQ0IiwiYiIsImJ1ZmZlciQwIiwib25lIiwib25lJDAiLCJ3cml0ZXJfZWxlbWVudF9pbl9ncm91cCIsImdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIiwicmVtb3ZlIiwidG9fbGlzdCIsImZsdXNoZWRfb3JfY2xvc2VkIiwiZGlyZWN0X3N0cmVhbV93cml0ZXIiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrJDEiLCJpbXBsZW1lbnRfZGlyZWN0IiwiZGlzcGF0Y2gkNiIsIm1ldGFkYXRhIiwiZGlzcGF0Y2hfZXhuJDEiLCJwaXBlX2FuZF9pZCIsImRpc3BhdGNoX2l0ZXIiLCJuYW1lJDEiLCJ2ZXJzaW9uJDEiLCJkZXNjcmlwdGlvbiQxIiwicXVlcnlfdHlwZV9pZCQwIiwiZXJyb3JfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQkMCIsImNyZWF0ZSQ1IiwiYmluX3N0YXRlIiwiYmluX3VwZGF0ZSIsImJpbl9xdWVyeSQxIiwiYmluX2Vycm9yJDAiLCJkaXNwYXRjaCQ3IiwidXBkYXRlX3IiLCJuYW1lJDIiLCJ2ZXJzaW9uJDIiLCJkZXNjcmlwdGlvbiQyIiwicXVlcnlfdHlwZV9pZCQxIiwic3RhdGVfdHlwZV9pZCIsInVwZGF0ZV90eXBlX2lkIiwiZXJyb3JfdHlwZV9pZCQwIiwiZGVzY3JpcHRpb24kMyIsInJwYyIsInJwYyQwIiwicnBjJDEiLCJycGMkMiIsInRoZV9ycGMiLCJub3RfdGhlX3JwYyIsInJwY19uYW1lJDAiLCJpbnB1dCIsImNvbnZlcnQiLCJmYWlsZWRfY29udmVyc2lvbiIsImFyZzNfMDA2IiwiYXJnMl8wMDUiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDciLCJ2XzAwMSIsInJlczFfMDA4Iiwidl8wMDIiLCJyZXMyXzAwOSIsInJlczNfMDEwIiwibXVsdGlwbGVfcmVnaXN0cmF0aW9ucyIsImFyZzFfMDE0Iiwidl8wMTEiLCJ2XzAxMiIsInJlczFfMDE2IiwiYWRhcHRlciIsImFkYXB0ZXJzIiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczFfMDI0IiwiYWRhcHRlcnMkMCIsImFkZF9ycGNfdmVyc2lvbiIsIm9sZF9ycGMiLCJ1cGdyYWRlIiwiZG93bmdyYWRlIiwiYWRhcHQiLCJmbiIsImFkYXB0ZWQiLCJvbGRfcXVlcnkiLCJhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIiwidXBncmFkZV9vcl9lcnJvciIsImRvd25ncmFkZV9vcl9lcnJvciIsInZhbHVlIiwiYWRkX3ZlcnNpb24iLCJhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJyZWdpc3RyeSIsImltcGxlbWVudF9tdWx0aSIsImxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpbyIsImxvZ192ZXJzaW9uIiwicnBjcyIsInZlcnNpb25zIiwicSQwIiwiciQwIiwiaW1wbGVtZW50X211bHRpX2dlbiIsImltcGxlbWVudF9kaXJlY3RfbXVsdGkiLCJ3cmFwcGVkX21vZGVsX29mX3F1ZXJ5Iiwid3JhcHBlZF9lcnJvcl9vZl9tb2RlbCIsImNvbnZlcnRfZWx0IiwiZHN3IiwiY29udmVydF9waXBlIiwibW9kZWxfc3RhdGUiLCJzdGF0ZSQwIiwiYmluX3NoYXBlX3F1ZXJ5IiwiYmluX3NpemVfcXVlcnkiLCJiaW5fd3JpdGVfcXVlcnkiLCJiaW5fcmVhZF9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5JDAiLCJiaW5fcmVhZGVyX3F1ZXJ5IiwiYmluX3NoYXBlX3N0YXRlIiwiYmluX3NpemVfc3RhdGUiLCJiaW5fd3JpdGVfc3RhdGUiLCJiaW5fd3JpdGVyX3N0YXRlIiwiYmluX3JlYWRfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSQwIiwiYmluX3JlYWRlcl9zdGF0ZSIsImJpbl9zaGFwZV91cGRhdGUiLCJiaW5fc2l6ZV91cGRhdGUiLCJiaW5fd3JpdGVfdXBkYXRlIiwiYmluX3dyaXRlcl91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciIsImJpbl9zaXplX2Vycm9yIiwiYmluX3dyaXRlX2Vycm9yIiwiYmluX3JlYWRfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciQwIiwibW9kZWxfb2ZfcXVlcnkiLCJzdGF0ZV9vZl9tb2RlbCIsImVycm9yX29mX21vZGVsIiwidXBkYXRlX29mX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlIiwiYmluX3NpemVfcmVzcG9uc2UiLCJiaW5fd3JpdGVfcmVzcG9uc2UiLCJiaW5fcmVhZF9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlJDAiLCJyZXNwb25zZV9vZl9tb2RlbCIsImFkZCQwIiwiaW1wbHMiLCJtZW51IiwibWVudV9pbXBscyIsInN1cHBvcnRlZF9ycGNzIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwib2ZfZW50cmllcyIsImVudHJpZXMiLCJyZXF1ZXN0IiwiY29ubmVjdGlvbiIsImNyZWF0ZV9kaXJlY3RseSIsIm1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIiwiY2FsbGVyX3ZlcnNpb25zIiwiY2FsbGVlX3ZlcnNpb25zIiwiY2FsbGVlX21lbnUiLCJ3aXRoX3NwZWNpZmljX3ZlcnNpb24iLCJkaXNwYXRjaGVyIiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwid2l0aF92ZXJzaW9uX21lbnUiLCJkaXNwYXRjaF9tdWx0aSIsImNvbm5fd2l0aF9tZW51IiwibXEiLCJxdWVyeV9vZl9tb2RlbCIsIm1vZGVsX29mX3Jlc3BvbnNlIiwiZGlzcGF0Y2hfaXRlcl9tdWx0aSIsImFib3J0X211bHRpIiwid3JhcHBlZF9xdWVyeV9vZl9tb2RlbCIsImNvbnZlcnRfcmVzdWx0IiwiY29udmVydF9vayIsIm1lc3NhZ2UiLCJ1IiwicnMiLCJtb2RlbF9vZl9zdGF0ZSIsIm1vZGVsX29mX2Vycm9yIiwibW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwiY2FsbGVlX21vZGVsX29mX3F1ZXJ5Iiwic3RhdGVfb2ZfY2FsbGVlX21vZGVsIiwiZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIiwidXBkYXRlX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9xdWVyeSQwIiwiYmluX3NpemVfcXVlcnkkMCIsImJpbl93cml0ZV9xdWVyeSQwIiwiYmluX3dyaXRlcl9xdWVyeSQwIiwiYmluX3JlYWRfcXVlcnkkMSIsImJpbl9yZWFkX3F1ZXJ5JDIiLCJiaW5fcmVhZGVyX3F1ZXJ5JDAiLCJiaW5fc2hhcGVfc3RhdGUkMCIsImJpbl9zaXplX3N0YXRlJDAiLCJiaW5fd3JpdGVfc3RhdGUkMCIsImJpbl93cml0ZXJfc3RhdGUkMCIsImJpbl9yZWFkX3N0YXRlJDEiLCJiaW5fcmVhZF9zdGF0ZSQyIiwiYmluX3JlYWRlcl9zdGF0ZSQwIiwiYmluX3N0YXRlJDAiLCJiaW5fc2hhcGVfdXBkYXRlJDAiLCJiaW5fc2l6ZV91cGRhdGUkMCIsImJpbl93cml0ZV91cGRhdGUkMCIsImJpbl93cml0ZXJfdXBkYXRlJDAiLCJiaW5fcmVhZF91cGRhdGUkMSIsImJpbl9yZWFkX3VwZGF0ZSQyIiwiYmluX3JlYWRlcl91cGRhdGUkMCIsImJpbl91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJxdWVyeV9vZl9jYWxsZXJfbW9kZWwiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwicmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlJDAiLCJiaW5fc2l6ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlX3Jlc3BvbnNlJDAiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlJDAiLCJiaW5fcmVhZF9yZXNwb25zZSQxIiwiYmluX3JlYWRfcmVzcG9uc2UkMiIsImJpbl9yZWFkZXJfcmVzcG9uc2UkMCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsInBpcGVfcmVhZCIsInhfMDA3Iiwib2ZfYV8wMDEiLCJidWZmZXJfMDA1IiwicGlwZV8wMDMiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlJDAiLCJ0b3RhbF9sZW4iLCJjb250aW51ZV9vcl93YWl0IiwibGVuZ3RoJDAiLCJzZXRfYnVmZmVyIiwicHJvY2Vzc19kYXRhIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSIsInByb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE1Iiwib2ZfYV8wMDkiLCJtb25pdG9yXzAxMyIsInBpcGVfMDExIiwiYm5kc18wMTAiLCJibmRzXzAxMCQwIiwiY2hlY2tfY2xvc2VkIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJjcmVhdGVfbWVzc2FnZSIsIm9uX21lc3NhZ2VfY291bnQiLCJnb3QiLCJzZXhwaWZpZXIiLCJlcXVhbCIsIm1lc3NhZ2UkMCIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMTYiLCJiXzAxNyIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJnb3QkMCIsInNleHBpZmllciQwIiwiZXF1YWwkMCIsImhlcmUkMCIsImNvbXBhcmF0b3IkMCIsIndyaXRlXzFfbXNnXzFfY2h1bmsiLCJ3cml0ZV8xX21zZ18zX2NodW5rIiwibXNnX2xlbiIsInNwbGl0X2F0IiwicGFydDEiLCJwYXJ0MiIsIndyaXRlXzJfbXNnXzFfY2h1bmsiLCJvbmVfbXNnIiwidHdvX21zZyIsIndyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZSIsIm51bSIsInN0b3BfYWZ0ZXJfb25fbWVzc2FnZSIsImFfMDIyIiwiYl8wMjMiLCJleHBlY3QiLCJhXzAyNiIsImJfMDI3Iiwib25lX21lc3NhZ2UiLCJ0d29fbWVzc2FnZXMiLCJvbmVfbWVzc2FnZV9wMSIsIm9uZV9tZXNzYWdlX3AyIiwicnBjX2Nvbm5lY3Rpb24iLCJjbG9zZV9maW5pc2hlZCQwIiwic3RyaW5nX2FmdGVyIiwicyIsIm4iLCJxdW90ZSIsImxlbiIsImJ1ZiIsImkiLCJjIiwib2ZfY2hhciIsImZ1bGxfc3BsaXQiLCJzdHIiLCJvbiIsInNlcCIsImxvb3AiLCJhY2MiLCJvZmZzZXQiLCJpbmRleCIsInRva2VuIiwic3BsaXQiLCJtYXgiLCJtYXgkMCIsInRva2VucyIsImxvb3AkMCIsInRyaW1fbGVmdF9zdWIiLCJsYXN0X2NoYXIiLCJjaGFycyIsImZpbmFsJDAiLCJsYXN0X2NoYXIkMCIsImkkMCIsImxhc3RfY2hhciQxIiwibmV3X2xlbiIsInNwbGl0X3RyaW1fbGVmdCIsInRyaW0iLCJ0cmltX2xlZnQiLCJub25fc3BhY2UiLCJmaW5kX2Zyb20iLCJvcHQiLCJwYXR0ZXJuIiwic3RoIiwic3RhcnQiLCJzdGFydCQwIiwicmVwbGFjZV9hbGwiLCJ3aXRoJDAiLCJwbGVuIiwic2xlbiIsImoiLCJyZXBsYWNlX2FsbF9hc3NvYyIsInRibCIsImZvdW5kIiwiZiQwIiwiZiIsInhzJDAiLCJ4JDEiLCJ4IiwiZngiLCJ4cyIsIngkMCIsImZ4JDAiLCJlIiwiaiQxIiwid2l0aCQyIiwicGF0dGVybiQxIiwiciIsIndpdGgkMSIsInBhdHRlcm4kMCIsImokMCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCIsImkkMSIsImFjYyQwIiwib2ZfYXJyYXkiLCJhIiwiYnl0ZXMiLCJ0b19hcnJheSIsImN1dCIsInNlcF9tYXgiLCJzX21heCIsImsiLCJsZWZ0X2VuZCIsInJpZ2h0X3N0YXJ0IiwicmN1dCIsInNlcF9zdGFydCIsImNob3BfcHJlZml4IiwicHJlZml4IiwicHJlZml4X2wiLCJzdHJpbmdfbCIsImRyb3AiLCJ0YWtlIiwiY3JlYXRlIiwic2l6ZSIsImVtcHR5IiwibGVuZ3RoIiwic3ViIiwiaW52YWxpZF9ib3VuZHMiLCJvcCIsImJ1ZmZlcl9sZW4iLCJvZmYiLCJsZW4iLCJtZXNzYWdlIiwiaW52YWxpZF9ib3VuZHNfYmxpdCIsInNyY19sZW4iLCJzcmNfb2ZmIiwiZHN0X2xlbiIsImRzdF9vZmYiLCJpbnZhbGlkX2JvdW5kc19tZW1jbXAiLCJidWYxX2xlbiIsImJ1ZjFfb2ZmIiwiYnVmMl9sZW4iLCJidWYyX29mZiIsImNvcHkiLCJ0IiwiZHN0Iiwic3Vic3RyaW5nIiwiYiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInMiLCJibGl0Iiwic3JjIiwiYmxpdF9mcm9tX3N0cmluZyIsImJsaXRfZnJvbV9ieXRlcyIsImJsaXRfdG9fYnl0ZXMiLCJtZW1jbXAiLCJidWYxIiwiYnVmMiIsIm1lbWNtcF9zdHJpbmciLCJtZW1jaHIiLCJidWYiLCJidWZfb2ZmIiwiY2hyIiwiYnVmX2xlbiIsImNhbWxfYmlnc3RyaW5nX3NldF8xNiIsImJzIiwiaSIsImNhbWxfYmlnc3RyaW5nX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX2dldF8xNiIsImNhbWxfYmlnc3RyaW5nX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX2dldF82NCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwieCIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQ2NF9iZSIsInNldF9pbnQ2NF9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCQwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50NjRfYmUiLCJnZXRfaW50NjRfbGUiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3NldF9pbnQxNl9sZSIsInVuc2FmZV9zZXRfaW50MzJfYmUiLCJ1bnNhZmVfc2V0X2ludDMyX2xlIiwidW5zYWZlX3NldF9pbnQ2NF9iZSIsInVuc2FmZV9zZXRfaW50NjRfbGUiLCJ1bnNhZmVfZ2V0X2ludDE2X2JlIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCQwIiwidW5zYWZlX2dldF9pbnQzMl9iZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInN0YXRlX3RvX29wdGlvbiIsIngiLCJ2IiwiZmFpbF90b19zdHJpbmciLCJtYXJrcyIsImVyciIsInN0YXRlX3RvX3Jlc3VsdCIsImNyZWF0ZSIsImJ1ZmZlciIsIm9mZiIsImxlbiIsImNvbW1pdHRlZF9ieXRlcyIsImxlbmd0aCIsInQiLCJjbGllbnRfY29tbWl0dGVkX2J5dGVzIiwicGFyc2VyX2NvbW1pdHRlZF9ieXRlcyIsImJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IiwicGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIiwiaW52YXJpYW50Iiwib2Zmc2V0X2luX2J1ZmZlciIsInBvcyIsImFwcGx5IiwiZiIsInVuc2FmZV9nZXRfY2hhciIsInVuc2FmZV9nZXRfaW50MTZfbGUiLCJ1bnNhZmVfZ2V0X2ludDMyX2xlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQ2NF9iZSIsImNvdW50X3doaWxlIiwiaSIsImxpbWl0IiwiY29tbWl0IiwiZmFpbF9rIiwiaW5wdXQiLCJtc2ciLCJzdWNjZWVkX2siLCJ0b19leHBvcnRlZF9zdGF0ZSIsImNvbnRpbnVlJDAiLCJjb21taXR0ZWQiLCJicyIsIm1vcmUiLCJ4JDAiLCJzIiwic2wiLCJpJDAiLCJwYXJzZSIsInAiLCJwYXJzZV9iaWdzdHJpbmciLCJpbnB1dCQwIiwicmV0dXJuJDAiLCJmYWlsIiwic3VjYyIsInN5bWJvbF9iaW5kIiwic3VjYyQwIiwic3ltYm9sX21hcCIsInN5bWJvbCIsIm0iLCJzeW1ib2wkMCIsInN1Y2MwIiwiaW5wdXQwIiwicG9zMCIsIm1vcmUwIiwic3VjYzEiLCJpbnB1dDEiLCJwb3MxIiwibW9yZTEiLCJsaWZ0IiwibGlmdDIiLCJtMSIsIm0yIiwic3VjYzIiLCJpbnB1dDIiLCJwb3MyIiwibW9yZTIiLCJsaWZ0MyIsIm0zIiwic3VjYzMiLCJpbnB1dDMiLCJwb3MzIiwibW9yZTMiLCJsaWZ0NCIsIm00Iiwic3VjYzQiLCJpbnB1dDQiLCJwb3M0IiwibW9yZTQiLCJzeW1ib2wkMSIsImEiLCJiIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsIm1hcmsiLCJmYWlsJDAiLCJzeW1ib2wkNCIsInEiLCJwb3MkMCIsIm1vcmUkMCIsInJldHVybiQxIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJsaWZ0MiQwIiwibGlmdDMkMCIsImxpZnQ0JDAiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwib2ZfYmlnc3RyaW5nIiwiYnVmIiwid3JpdGFibGVfc3BhY2UiLCJlbnN1cmUiLCJ0b19jb3B5Iiwib2xkX2xlbiIsIm5ld19sZW4iLCJzcGFjZSIsIm5ld19idWYiLCJ3cml0ZV9wb3MiLCJmZWVkX3N0cmluZyIsInN0ciIsImZlZWRfYmlnc3RyaW5nIiwiZmVlZF9pbnB1dCIsInNoaWZ0IiwibiIsImZvcl9yZWFkaW5nIiwidW5jb25zdW1lZCIsIm9wdCIsInN0aCIsIm9mX3VuY29uc3VtZWQiLCJmcm9tX3VuYnVmZmVyZWRfc3RhdGUiLCJidWZmZXJpbmciLCJjb25zdW1lZCIsImNvbnN1bWVkJDAiLCJ1bmNvbnN1bWVkJDAiLCJwYXJzZSQwIiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsImZlZWQiLCJzdGF0ZSIsImsiLCJidWZmZXJpbmckMCIsInN0YXRlX3RvX29wdGlvbiQwIiwic3RhdGVfdG9fcmVzdWx0JDAiLCJzdGF0ZV90b191bmNvbnN1bWVkIiwicHJvbXB0IiwiZGVtYW5kX2lucHV0IiwiZW5zdXJlX3N1c3BlbmRlZCIsImdvIiwidW5zYWZlX2FwcGx5IiwiYXRfZW5kX29mX2lucHV0IiwiZW5kX29mX2lucHV0IiwiYWR2YW5jZSIsImF2YWlsYWJsZSIsInVuc2FmZV9sb29rYWhlYWQiLCJwZWVrX2NoYXIiLCJwZWVrX2NoYXJfZmFpbCIsInNhdGlzZnkiLCJjIiwiY2hhciQwIiwibm90X2NoYXIiLCJjJDAiLCJhbnlfY2hhciIsImludDgiLCJwJDAiLCJhbnlfdWludDgiLCJwJDEiLCJhbnlfaW50OCIsInNraXAiLCJpbml0Iiwid2l0aF9idWZmZXIiLCJpbnB1dF9sZW4iLCJpbml0JDAiLCJjb3VudF93aGlsZTEiLCJzdWNjJDEiLCJmYWlsJDEiLCJzdHJpbmciLCJmJDAiLCJlIiwic3RyaW5nJDAiLCJzdHJpbmdfY2kiLCJza2lwX3doaWxlIiwidGFrZSIsIm4kMCIsInRha2VfYmlnc3RyaW5nIiwidGFrZV9iaWdzdHJpbmdfd2hpbGUiLCJ0YWtlX2JpZ3N0cmluZ193aGlsZTEiLCJ0YWtlX2JpZ3N0cmluZ190aWxsIiwicGVla19zdHJpbmciLCJ0YWtlX3doaWxlIiwidGFrZV93aGlsZTEiLCJ0YWtlX3RpbGwiLCJjaG9pY2UiLCJwcyIsImZhaWx1cmVfbXNnIiwiZml4X2RpcmVjdCIsInIiLCJmaXhfbGF6eSIsIm1heF9zdGVwcyIsInN0ZXBzIiwiZml4Iiwib3B0aW9uIiwiY29ucyIsInhzIiwibGlzdCIsInBzJDAiLCJjb3VudCIsImxvb3AiLCJtYW55IiwibWFueTEiLCJtYW55X3RpbGwiLCJzZXBfYnkxIiwic2VwX2J5Iiwic2tpcF9tYW55Iiwic2tpcF9tYW55MSIsImVuZF9vZl9saW5lIiwic2NhbiIsInN0YXRlJDAiLCJwYXJzZXIiLCJzY2FuJDAiLCJzY2FuX3N0YXRlIiwic2Nhbl9zdHJpbmciLCJjb25zdW1lX3dpdGgiLCJjb25zdW1lZF9iaWdzdHJpbmciLCJib3RoIiwibWFwIiwiYmluZCIsIm1hcDIiLCJtYXAzIiwibWFwNCIsImQiLCJpbnQxNiIsImJ5dGVzIiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJjc3QkMCIsIml0ZXJfY29uY2F0IiwiZm4iLCJzZXAiLCJidWYiLCJsYXN0IiwicmVzdCIsImNvbXBhcmVfb3B0IiwiYyIsInQkMCIsInQiLCJhIiwiYiIsImNvbXBhcmVfbGlzdCIsImYiLCJ0JDIiLCJ0JDEiLCJ4cyIsIngiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwib3B0Iiwic3RoIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwic3RoJDAiLCJ1c2VyaW5mbyIsInN0aCQxIiwiaG9zdCIsInN0aCQyIiwic3RoJDMiLCJxdWVyeV9rZXkiLCJzdGgkNCIsInF1ZXJ5X3ZhbHVlIiwic3RoJDUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfZGVjb2RlZF9vcHQiLCJjb21wYXJlX2hvc3QiLCJoMSIsImgyIiwiaXAyIiwiaXAxIiwiaXAyJDAiLCJpcDEkMCIsImgyJDAiLCJoMSQwIiwiY29tcGFyZSQwIiwiYyQzIiwiYyQxIiwiYyQ0Iiwia3ZsJDAiLCJrdmwiLCJyYXciLCJyYXckMCIsImMkMiIsInZsIiwidmwkMCIsImskMCIsImVxdWFsIiwidW5jYXN0X29wdCIsIm5vcm1hbGl6ZSIsInNjaGVtIiwiaW5pdCIsImhvc3QkMCIsImhvc3QkMSIsInRvX3N0cmluZyIsInVyaSIsImFkZF9wY3Rfc3RyaW5nIiwiZmlyc3Rfc2VnbWVudCIsInEiLCJnZXRfZGVjb2RlZF9vcHQiLCJ3aXRoX3NjaGVtZSIsImgkMCIsImhvc3Rfd2l0aF9kZWZhdWx0IiwiZGVmYXVsdCQwIiwid2l0aF91c2VyaW5mbyIsInVzZXJpbmZvJDAiLCJ1c2VyIiwicGFzc3dvcmQiLCJwYXNzIiwid2l0aF9wYXNzd29yZCIsInJlc3VsdCIsIndpdGhfcG9ydCIsIndpdGhfcGF0aCIsInBhdGgkMCIsIndpdGhfZnJhZ21lbnQiLCJmcmFnIiwicXVlcnkiLCJ2ZXJiYXRpbV9xdWVyeSIsImdldF9xdWVyeV9wYXJhbSIsImdldF9xdWVyeV9wYXJhbSQwIiwid2l0aF9xdWVyeSIsInFfcyIsIndpdGhfcXVlcnkkMCIsImFkZF9xdWVyeV9wYXJhbSIsImFkZF9xdWVyeV9wYXJhbSQwIiwiYWRkX3F1ZXJ5X3BhcmFtcyIsImFkZF9xdWVyeV9wYXJhbXMkMCIsInJlbW92ZV9xdWVyeV9wYXJhbSIsInBhdGhfYW5kX3F1ZXJ5IiwibWF0Y2giLCJzY2hlbWUkMCIsInJlc29sdmUiLCJiYXNlIiwic2NoZW1lJDEiLCJzY2hlbSQwIiwicGF0aF9zdHIiLCJyZWxwYXRoIiwiYnBhdGgiLCJiaG9zdCIsInJicGF0aCIsImNhbm9uaWNhbGl6ZSIsInVyaSQwIiwicHAiLCJwcGYiLCJwcF9odW0iLCJzdHJpbmdfb2ZfY2hhciIsInN0cmluZ19vZl9jaGFyX2xpc3QiLCJjaGFycyIsImlzX2RpZ2l0IiwiaGV4X2RpZ2l0IiwiaGV4YWRlY2ltYWwiLCJjX2RvdCIsImNfYXQiLCJjX2NvbG9uIiwibnVtIiwiZGVjX29jdGV0IiwidGhyZWUiLCJvbmUiLCJpcHY0X2FkZHJlc3MiLCJhZnRlcl9kb3VibGVfY29sb24iLCJkb3VibGVfY29sb24iLCJjb3VudCIsImZpbGxlcl9sZW5ndGgiLCJwYXJ0IiwiaGV4X3BhcnQiLCJzcGxpdF93aXRoIiwidHMiLCJ6cyIsImZvcm1hdF9hZGRyIiwic2VnbWVudHMiLCJzZWdtZW50IiwiYmVmb3JlX2RvdWJsZV9jb2xvbiIsImJlZm9yZSIsInJlcyIsImlwdjYiLCJpcHY2X2FkZHJlc3MiLCJwY3QiLCJkaWdpdHMiLCJwY3RfZW5jb2RlZCIsInN1Yl9kZWxpbXMkMCIsInVucmVzZXJ2ZWQiLCJyZWdfbmFtZSIsImRlY29kZWQiLCJwb3J0JDAiLCJhdXRob3JpdHkiLCJxdWVyeSQwIiwiZnJhZ21lbnQkMCIsInVyaV9yZWZlcmVuY2UiLCJ1cmlfcmVmZXJlbmNlJDAiLCJkZWNvZGVfaG9zdCIsInBhcnNlZCIsInBhcnNlZCQwIiwibWFrZSIsInBhdGgkMSIsIndpdGhfaG9zdCIsIndpdGhfdXJpIiwid2l0aF9wYXRoX29wdCIsIm8iLCJ3aXRoX3F1ZXJ5X29wdCIsIndpdGgkMCIsIm9mX3N0cmluZyIsImxldCQwIiwidG9fdXJpIiwib2ZfdXJpIiwidW5zdXBwb3J0ZWRfc2NoZW1lIiwib2Zfc3RyaW5nJDAiLCJlcnJvciIsInRvX3N0cmluZyQwIiwibWFrZSQwIiwiaG9zdCQyIiwiZXJyb3Jfc291cmNlXzAwNiIsImVycm9yX3NvdXJjZV8wMTgiLCJkZWZhdWx0XzA4MSIsImVycm9yX3NvdXJjZV8wNTUiLCJkZWZhdWx0XzExMSIsImNvbXBvbmVudF9vZl9zZXhwIiwiY29tcG9uZW50X29mX3NleHAkMCIsInNleHBfMDA0IiwiYXRvbV8wMDIiLCJzZXhwX2FyZ3NfMDA1IiwiYXRvbV8wMDIkMCIsImFyZzBfMDE1IiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsInJlczJfMDEzIiwicmVzMF8wMTYiLCJzZXhwXzAxNyIsInNleHBfb2ZfY29tcG9uZW50Iiwidl8wMTkiLCJhcmcyXzAyMiIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwicmVzMl8wMjUiLCJkZWZhdWx0XzA3MyIsImRlZmF1bHRfMDc1IiwiZGVmYXVsdF8wNzciLCJkZWZhdWx0XzA3OSIsImRlZmF1bHRfMDg0IiwidF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJzY2hlbWVfMDI5IiwidXNlcmluZm9fMDMxIiwiaG9zdF8wMzMiLCJwb3J0XzAzNSIsInBhdGhfMDM3IiwicXVlcnlfMDM5IiwiZnJhZ21lbnRfMDQxIiwiZHVwbGljYXRlc18wNDMiLCJleHRyYV8wNDQiLCJzZXhwXzAyNyQwIiwiZmllbGRfc2V4cHNfMDQ3IiwiZmllbGRfbmFtZV8wNDUiLCJ0YWlsXzA4NyIsImZpZWxkX3NleHBfMDQ2JDciLCJmaWVsZF9zZXhwXzA0NiIsInhfMDg4IiwiZmllbGRfc2V4cF8wNDYkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA0NiQxIiwiZnZhbHVlXzA2NiIsImZpZWxkX3NleHBfMDQ2JDIiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDYwIiwiZmllbGRfc2V4cF8wNDYkNCIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA0NiQ1IiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDQ2JDYiLCJmdmFsdWVfMDQ5Iiwic2NoZW1lXzAzMCIsInVzZXJpbmZvXzAzMiIsImhvc3RfMDM0IiwicG9ydF8wMzYiLCJwYXRoXzAzOCIsInF1ZXJ5XzA0MCIsImZyYWdtZW50XzA0MiIsInZfMDg1Iiwidl8wODUkMCIsInZfMDgzIiwidl8wODMkMCIsInZfMDgyIiwidl8wODIkMCIsInZfMDgwIiwidl8wODAkMCIsInZfMDc4Iiwidl8wNzgkMCIsInZfMDc2Iiwidl8wNzYkMCIsInZfMDc0Iiwidl8wNzQkMCIsImRlZmF1bHRfMDkxIiwiZGVmYXVsdF8wOTYiLCJkZWZhdWx0XzEwMSIsImRlZmF1bHRfMTA2IiwiZGVmYXVsdF8xMjQiLCJ0X29mX3NleHAkMCIsInNleHAiLCJ0Iiwic2V4cF9vZl90IiwiZnJhZ21lbnRfMTI1IiwicXVlcnlfMTE2IiwicGF0aF8xMTIiLCJwb3J0XzEwNyIsImhvc3RfMTAyIiwidXNlcmluZm9fMDk3Iiwic2NoZW1lXzA5MiIsImFyZ18xMjciLCJibmRzXzA4OSIsImJuZHNfMDg5JDAiLCJibmRfMTI2IiwiYm5kc18wODkkMSIsImFyZzFfMTE4IiwiYXJnMF8xMTciLCJyZXMwXzExOSIsInJlczFfMTIwIiwiYXJnXzEyMiIsImJuZF8xMjEiLCJhcmdfMTE0IiwiYm5kc18wODkkMiIsImJuZF8xMTMiLCJhcmdfMTA5IiwiYm5kc18wODkkMyIsImJuZF8xMDgiLCJhcmdfMTA0IiwiYm5kc18wODkkNCIsImJuZF8xMDMiLCJhcmdfMDk5IiwiYm5kc18wODkkNSIsImJuZF8wOTgiLCJhcmdfMDk0IiwiYm5kc18wODkkNiIsImJuZF8wOTMiLCJjb21wYXJlIiwiYSIsImIiLCJlcXVhbCIsImlzX3ZhbGlkX2ZpZWxkX25hbWUiLCJzZWVuIiwibmFtZSIsImFueV9vZl9zZXhwIiwicyIsImxpc3QkMCIsInYkMCIsIm5hbWUkMSIsInNlZW4kMiIsInJldl9hY2MiLCJsaXN0IiwicmVzdCIsInJldl9hY2MkMCIsInNlZW4kMCIsInJlc3QkMCIsInYiLCJuYW1lJDAiLCJyZXZfYWNjJDEiLCJzZWVuJDEiLCJsIiwibG9nX3MiLCJzZXhwIiwibG9nX3NfYXNfc3RyaW5nIiwic2V4cF9vZl90IiwiZmllbGQyXzA0MyIsImZpZWxkMV8wNDEiLCJhcmdfMDQ0IiwiYm5kc18wNDAiLCJzb21lX25hbWVfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2IiwiYXJnXzA0MiIsImJuZHNfMDQwJDAiLCJ0b19zdHJpbmciLCJhbnkiLCJzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMiLCJpIiwieF8wNDkiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMF8wNDciLCJyZXMxXzA0OCIsImNvbXBhcmVfY2xvc2VfZXZlbnRfY29kZSIsInNleHBfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImFsbF9vZl9jbG9zZV9ldmVudF9jb2RlIiwiY29tcGFyZSIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsImFjYyIsImwkMCIsImVudW1lcmF0ZV8wMTEiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwibCQyIiwiZW51bWVyYXRlXzAxMCIsImFjYyQyIiwiYWxsIiwibm9ybWFsX2Nsb3N1cmUiLCJvZl9pbnQiLCJjb2RlIiwidG9faW50IiwiY29kZSQwIiwieF8wMzEiLCJ4XzAzMCIsImNsaWVudCIsIm9wdCIsImhlYXJ0YmVhdF9jb25maWciLCJkZXNjcmlwdGlvbiIsImltcGxlbWVudGF0aW9ucyIsInN0aCIsInVyaSIsInNjaGVtZSIsInBvcnQiLCJwb3J0JDAiLCJob3N0IiwibWF0Y2gkMSIsInJlcyIsImgiLCJkZXNjcmlwdGlvbiQwIiwiZnJvbV9zZXJ2ZXJfdyIsImZyb21fc2VydmVyX3IiLCJ0b19zZXJ2ZXJfdyIsInRvX3NlcnZlcl9yIiwiZXJyb3IiLCJ0cmFuc3BvcnQiLCJjb25uZWN0aW9uIiwiZXhuIiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImltcGxlbWVudGF0aW9ucyQwIiwiZXhuJDEiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiYnVmZmVyIiwiZXhuJDAiLCJjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCIsImNsaWVudF9leG4iLCJjcmVhdGVfZnJvbV91cmkiLCJlcXVhbCQwIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJzZXhwX29mX3QkMSIsInhfMDA3IiwiY3JlYXRlX2Zyb21fdXJpX29wdGlvbiIsIm1ldGhvZF9zdHJpbmckMCIsInJlcXVlc3QiLCJvbl9wcm9ncmVzcyIsIm9uX3VwbG9hZF9wcm9ncmVzcyIsInVybCIsImhlYWRlcnMiLCJtZXRob2Rfd2l0aF9hcmdzIiwiYXJncyIsIm1ldGhvZF9zdHJpbmckMSIsInVybCQwIiwidmFsdWUiLCJyZXNwb25zZSIsImNvbnRlbnQiLCJnZXRfaGVhZGVyIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJib2R5IiwiYm9keSQwIiwiYiIsImQiLCJmZCIsImdldCIsImFyZ3VtZW50cyQwIiwicmVzcCIsInBvc3QiLCJyZWFkeV9zdGF0ZV9jaGFuZ2UiLCJjb21wbGV0ZSIsInNsZWVwIiwieWllbGQkMCIsImV4dHJhY3RfanNfZXJyb3IiLCJzdGF0ZSIsInRpbWVvdXRzIiwicnVuX2FmdGVyIiwiZiIsIm1zIiwibG9vcCIsInQiLCJuZXh0X3dha2V1cCIsIm5leHQiLCJub3ciLCJkX21zJDAiLCJlcnIiLCJlcnIkMCIsImRfbXMiLCJhdCIsInJ1bl90aW1lb3V0IiwicnVuIiwibG9nIiwiZXJyJDIiLCJleG4kMiIsImV4biQzIiwiZXJyJDEiLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwiY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0IiwicmlnaHQiLCJsZWZ0X2lzX25vbmUiLCJyaWdodF9pc19ub25lIiwiY3JlYXRlX2V4biIsIm9wdCIsIm51bV9sZWF2ZXMiLCJyZWR1Y2UiLCJzdGgiLCJudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwiLCJ2YWxpZGF0ZV9pbmRleCIsImxlbmd0aCIsInNldF9leG4iLCJjaGlsZF9pbmRleCIsInBhcmVudCIsImdldF9leG4iLCJ4XzAwMiIsImNvbXB1dGVfZXhuIiwic2V4cF9vZl90Iiwic3RlcHMiLCJyIiwiaW5pdCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDEiLCJzdGVwc18wMDUiLCJpbml0XzAwMyIsImJuZHNfMDAyIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJhcmdfMDA2IiwiYm5kc18wMDIkMCIsImFyZ18wMDQiLCJibmRzXzAwMiQxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ2YWx1ZSIsInQkMCIsImF0Iiwic3RlcHMkMSIsImluaXQkMSIsInN0ZXBzJDAiLCJpbml0JDAiLCJ0IiwiY29uc3RhbnQiLCJjcmVhdGVfZXhuIiwidGltZTIiLCJ0aW1lMSIsInhfMDExIiwiY3JlYXRlX2Zyb21fc2VxdWVuY2UiLCJjcmVhdGUiLCJsZW4iLCJsZW5ndGgiLCJ0Iiwic2V0Iiwic2V0X2V4biIsImkiLCJ4IiwiZ2V0IiwiaXNfc29tZSIsImlzX25vbmUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsIml0ZXIiLCJmIiwidiIsIml0ZXJpIiwiYmxpdCIsInNyYyIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY3JlYXRlIiwiaW5kZXgiLCJnZXQiLCJ0Iiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpc19ub25lIiwiaXNfc29tZSIsInNldCIsImJsb2NrIiwic2V4cF9vZl90Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsImtleXNfd2l0aF91bnVzZWRfZGF0YV8wMDYiLCJlbnRyeV9ieV9rZXlfMDA0IiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJyZXBsYWNlIiwiYWRkX2V4biIsInhfMDEwIiwiZmluZCIsImZpbmRfb3JfYWRkIiwiZGVmYXVsdCQwIiwidiIsInNleHBfb2ZfdCIsImNvbmNhdCIsImRlYnVnIiwidGFnIiwiYXJnMF8wMDEiLCJhcmcxXzAwMiIsInNleHBfb2ZfYSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJyZWFsbG9jIiwidCIsImxlbiIsImEiLCJuZXdfdCIsInJlYWxsb2MkMCIsInJlczBfMDA1IiwicmVzMF8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsImNyZWF0ZSIsImYiLCJvZl9jb21wYXJlIiwib2ZfZXF1YWwiLCJwb2x5X2VxdWFsIiwibmV2ZXIiLCJhbHdheXMiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwid2F0Y2hfZnVuIiwidCQwIiwic2V0X2F0X2Z1biIsInZhbHVlX2Z1biIsInhfMDExIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsImZvbGRfdmFsdWVfZnVuIiwiZ290IiwiZXhwZWN0Iiwic2V4cGlmaWVyIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInhfMDI4IiwidXBkYXRlJDAiLCJmX2ludmVyc2UiLCJ1cGRhdGUiLCJjb21wdXRlIiwicmVzdWx0IiwiZm9yY2VfZnVsbF9jb21wdXRlIiwiY2hpbGRfY2hhbmdlZCIsInhfMDMxIiwiY2hpbGRfaW5kZXgiLCJvbGRfdmFsdWVfb3B0IiwiY2hpbGRfYXRfaW5kZXgiLCJ4XzAwMSIsIm51bGwkMCIsImFsYXJtX3ZhbHVlIiwic2V0X2FsYXJtX3ZhbHVlIiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJhbGFybV92YWx1ZSQwIiwiYWxhcm0kMCIsIm1haW5fMDAzIiwiY2hpbGRfMDA1IiwiZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jIiwidmFsdWVfMDA5IiwidXBjb21pbmdfc3RlcHNfMDExIiwiYWxhcm1fMDE3IiwiYWxhcm1fdmFsdWVfMDE5IiwiY2xvY2tfMDIxIiwiYXJnXzAxOCIsImFyZzFfMDE0IiwicmVzMV8wMTYiLCJhcmdfMDEyIiwiYm5kc18wMDIkMyIsImJuZHNfMDAyJDQiLCJibmRzXzAwMiQ1IiwiYm5kc18wMDIkNiIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsInhfMDIzIiwiYWR2YW5jZSIsInRvIiwic3RlcHMkMCIsImExJDAiLCJhMSIsInN0ZXBzIiwic3RlcHMyIiwiYTIiLCJzdGVwX2F0Iiwib2ZfYWNjXzAwMiIsImNoaWxkcmVuXzAwOCIsImluaXRfMDA0IiwiYXJnXzAwOSIsImJuZHNfMDAzIiwiYXJnXzAwNyIsImJuZHNfMDAzJDAiLCJibmRzXzAwMyQxIiwieF8wMTAiLCJhdF8wMDQiLCJtYWluXzAwMiIsImFsYXJtXzAwNiIsImNsb2NrXzAwOCIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbCQwIiwiaW50ZXJ2YWxfMDA2IiwiYmFzZV8wMDQiLCJhbGFybV8wMDgiLCJjbG9ja18wMTAiLCJhcmdfMDExIiwiYm5kc18wMDEkMyIsImludGVydmFsX2Z1biIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsInNldF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJyaHNfc2NvcGUiLCJzZXRfcmhzX3Njb3BlIiwibGhzX2NoYW5nZSIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyQwIiwicmhzX3Njb3BlJDAiLCJsaHNfY2hhbmdlJDAiLCJvZl9iXzAwMiIsIm1haW5fMDA0IiwibGhzX2NoYW5nZV8wMTAiLCJsaHNfMDA4IiwicmhzXzAxMiIsInJoc19zY29wZV8wMTQiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNfMDE2IiwiYm5kc18wMDMkMiIsImJuZHNfMDAzJDMiLCJibmRzXzAwMyQ0IiwiYm5kc18wMDMkNSIsInNhbWUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc19mdW4iLCJub2RlIiwicmhzX3Njb3BlX2Z1biIsImxoc19jaGFuZ2VfZnVuIiwieF8wMTgiLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJleHBlY3QkMCIsImVxdWFsJDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJ0b3AiLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsImN1cnJlbnRfYnJhbmNoX2Z1biIsInRlc3RfY2hhbmdlX2Z1biIsInhfMDE1IiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsImJlZm9yZV9mdW4iLCJ4XzAxMyIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiYmluZF9yaHNfY2hpbGRfaW5kZXgiLCJmcmVlemVfY2hpbGRfaW5kZXgiLCJpZl9icmFuY2hfY2hpbGRfaW5kZXgiLCJqb2luX3Joc19jaGlsZF9pbmRleCIsIml0ZXJpX2NoaWxkcmVuIiwicmhzIiwiaSQwIiwidGVzdCIsImxocyIsInJocyQwIiwibm9kZTAiLCJjaGlsZCQwIiwiY2hpbGRyZW4kMSIsImkkMSIsIm5vZGUxIiwibm9kZTAkMCIsIm5vZGUyIiwibm9kZTEkMCIsIm5vZGUwJDEiLCJub2RlMyIsIm5vZGUyJDAiLCJub2RlMSQxIiwibm9kZTAkMiIsIm5vZGU0Iiwibm9kZTMkMCIsIm5vZGUyJDEiLCJub2RlMSQyIiwibm9kZTAkMyIsIm5vZGU1Iiwibm9kZTQkMCIsIm5vZGUzJDEiLCJub2RlMiQyIiwibm9kZTEkMyIsIm5vZGUwJDQiLCJub2RlNiIsIm5vZGU1JDAiLCJub2RlNCQxIiwibm9kZTMkMiIsIm5vZGUyJDMiLCJub2RlMSQ0Iiwibm9kZTAkNSIsIm5vZGU3Iiwibm9kZTYkMCIsIm5vZGU1JDEiLCJub2RlNCQyIiwibm9kZTMkMyIsIm5vZGUyJDQiLCJub2RlMSQ1Iiwibm9kZTAkNiIsIm5vZGU4Iiwibm9kZTckMCIsIm5vZGU2JDEiLCJub2RlNSQyIiwibm9kZTQkMyIsIm5vZGUzJDQiLCJub2RlMiQ1Iiwibm9kZTEkNiIsIm5vZGUwJDciLCJub2RlOSIsIm5vZGU4JDAiLCJub2RlNyQxIiwibm9kZTYkMiIsIm5vZGU1JDMiLCJub2RlNCQ0Iiwibm9kZTMkNSIsIm5vZGUyJDYiLCJub2RlMSQ3Iiwibm9kZTAkOCIsIm5vZGUxMCIsIm5vZGU5JDAiLCJub2RlOCQxIiwibm9kZTckMiIsIm5vZGU2JDMiLCJub2RlNSQ0Iiwibm9kZTQkNSIsIm5vZGUzJDYiLCJub2RlMiQ3Iiwibm9kZTEkOCIsIm5vZGUwJDkiLCJub2RlMTEiLCJub2RlMTAkMCIsIm5vZGU5JDEiLCJub2RlOCQyIiwibm9kZTckMyIsIm5vZGU2JDQiLCJub2RlNSQ1Iiwibm9kZTQkNiIsIm5vZGUzJDciLCJub2RlMiQ4Iiwibm9kZTEkOSIsIm5vZGUwJDEwIiwibm9kZTEyIiwibm9kZTExJDAiLCJub2RlMTAkMSIsIm5vZGU5JDIiLCJub2RlOCQzIiwibm9kZTckNCIsIm5vZGU2JDUiLCJub2RlNSQ2Iiwibm9kZTQkNyIsIm5vZGUzJDgiLCJub2RlMiQ5Iiwibm9kZTEkMTAiLCJub2RlMCQxMSIsIm5vZGUxMyIsIm5vZGUxMiQwIiwibm9kZTExJDEiLCJub2RlMTAkMiIsIm5vZGU5JDMiLCJub2RlOCQ0Iiwibm9kZTckNSIsIm5vZGU2JDYiLCJub2RlNSQ3Iiwibm9kZTQkOCIsIm5vZGUzJDkiLCJub2RlMiQxMCIsIm5vZGUxJDExIiwibm9kZTAkMTIiLCJub2RlMTQiLCJub2RlMTMkMCIsIm5vZGUxMiQxIiwibm9kZTExJDIiLCJub2RlMTAkMyIsIm5vZGU5JDQiLCJub2RlOCQ1Iiwibm9kZTckNiIsIm5vZGU2JDciLCJub2RlNSQ4Iiwibm9kZTQkOSIsIm5vZGUzJDEwIiwibm9kZTIkMTEiLCJub2RlMSQxMiIsIm5vZGUwJDEzIiwic2xvd19nZXRfY2hpbGQiLCJpbmRleCIsImFyZzFfMzA2IiwiYXJnMF8zMDUiLCJyZXMwXzMwNyIsInJlczFfMzA4IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luIiwic2V0X215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luIiwic2V0X215X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hIiwib2JzZXJ2ZXJzIiwic2V0X29ic2VydmVycyIsInNldF9vbGRfdmFsdWVfb3B0IiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwic2V0X25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2giLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X25leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJwcmV2X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X3ByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X2hlaWdodCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwic2V0X25leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwiY3JlYXRlZF9pbiIsInNldF9jcmVhdGVkX2luIiwicGFyZW50MCIsInNldF9wYXJlbnQwIiwicGFyZW50MV9hbmRfYmV5b25kIiwic2V0X3BhcmVudDFfYW5kX2JleW9uZCIsIm51bV9wYXJlbnRzIiwic2V0X251bV9wYXJlbnRzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyIsInNldF9udW1fb25fdXBkYXRlX2hhbmRsZXJzIiwiY2hhbmdlZF9hdCIsInNldF9jaGFuZ2VkX2F0IiwiY3V0b2ZmIiwic2V0X2N1dG9mZiIsImtpbmQiLCJzZXRfa2luZCIsInZhbHVlX29wdCIsInNldF92YWx1ZV9vcHQiLCJyZWNvbXB1dGVkX2F0Iiwic2V0X3JlY29tcHV0ZWRfYXQiLCJpZCIsIm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbiQwIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luJDAiLCJvYnNlcnZlcnMkMCIsIm9sZF92YWx1ZV9vcHQkMCIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAkMCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAkMCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAkMCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0JDAiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZSQwIiwiY3JlYXRlZF9pbiQwIiwicGFyZW50MCQwIiwicGFyZW50MV9hbmRfYmV5b25kJDAiLCJudW1fcGFyZW50cyQwIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyQwIiwiY2hhbmdlZF9hdCQwIiwiY3V0b2ZmJDAiLCJraW5kJDAiLCJ2YWx1ZV9vcHQkMCIsInJlY29tcHV0ZWRfYXQkMCIsImlkJDAiLCJzdGF0ZV8wMDUiLCJpZF8wMDMiLCJyZWNvbXB1dGVkX2F0XzAwNyIsInZhbHVlX29wdF8wMDkiLCJraW5kXzAxMSIsImN1dG9mZl8wMTMiLCJjaGFuZ2VkX2F0XzAxNSIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfMDE3IiwibnVtX3BhcmVudHNfMDE5IiwicGFyZW50MV9hbmRfYmV5b25kXzAyMSIsInBhcmVudDBfMDIzIiwiY3JlYXRlZF9pbl8wMjUiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV8wMjciLCJoZWlnaHRfMDI5IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXzAzMSIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfMDMzIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcF8wMzUiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfMDMiLCJvbGRfdmFsdWVfb3B0XzA0MSIsIm9ic2VydmVyc18wNDMiLCJpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGkiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDQ3IiwiZm9yY2VfbmVjZXNzYXJ5XzA1MyIsInVzZXJfaW5mb18wNTUiLCJjcmVhdGlvbl9iYWNrdHJhY2VfMDU3IiwiYXJnXzA1OCIsImFyZ18wNTYiLCJhcmdfMDU0IiwiYXJnXzA1MiIsImFyZ18wNTAiLCJhcmdfMDQ4IiwiYXJnXzA0NiIsImFyZ18wNDQiLCJhcmdfMDQyIiwiYm5kc18wMDIkNyIsImFyZ18wNDAiLCJibmRzXzAwMiQ4IiwiYXJnXzAzOCIsImJuZHNfMDAyJDkiLCJhcmdfMDM2IiwiYm5kc18wMDIkMTAiLCJhcmdfMDM0IiwiYm5kc18wMDIkMTEiLCJhcmdfMDMyIiwiYm5kc18wMDIkMTIiLCJhcmdfMDMwIiwiYm5kc18wMDIkMTMiLCJhcmdfMDI4IiwiYm5kc18wMDIkMTQiLCJibmRzXzAwMiQxNSIsImJuZHNfMDAyJDE2IiwiYm5kc18wMDIkMTciLCJibmRzXzAwMiQxOCIsImJuZHNfMDAyJDE5IiwiYm5kc18wMDIkMjAiLCJibmRzXzAwMiQyMSIsImJuZHNfMDAyJDIyIiwiYm5kc18wMDIkMjMiLCJibmRzXzAwMiQyNCIsImJuZHNfMDAyJDI1IiwiYm5kc18wMDIkMjYiLCJwYWNrZWRfc2FtZSIsInVzZXJfaW5mbyIsIm90aGVyIiwic2V0X3VzZXJfaW5mbyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXoiLCJhdHRycyIsImVkZ2VfaXNfc3RhbGUiLCJwYXJlbnQiLCJpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGkiLCJpc19zdGFsZSIsImZvcmNlX3N0YWxlIiwiZm9yY2Vfc3RhbGUkMCIsIm5lZWRzX3RvX2JlX2NvbXB1dGVkIiwiaXNfaW5fcmVjb21wdXRlX2hlYXAiLCJpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwiZ2V0X3BhcmVudCIsIml0ZXJpX3BhcmVudHMiLCJoYXNfY2hpbGQiLCJoYXMiLCJoYXNfcGFyZW50IiwicGFyZW50JDAiLCJzaG91bGRfYmVfaW52YWxpZGF0ZWQiLCJsaHMkMCIsImZvbGRfb2JzZXJ2ZXJzIiwiYWMiLCJvYnNlcnZlciIsImFfMDYwIiwiYl8wNjEiLCJhXzA3MCIsImJfMDcxIiwicGFyZW50X2luZGV4IiwieCIsImFfMDY4IiwiYl8wNjkiLCJvYnNlcnZlcnNfZnVuIiwic3RhdGUiLCJvYnNlcnZpbmciLCJvbGRfdmFsdWVfb3B0X2Z1biIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF9mdSIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJwcmV2IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsImhlaWdodF9mdW4iLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV9mdW4iLCJjcmVhdGVkX2luX2Z1biIsInBhcmVudDBfZnVuIiwiYV8wNjYiLCJiXzA2NyIsInBhcmVudDFfYW5kX2JleW9uZF9mdW4iLCJhXzA2NCIsImJfMDY1IiwibnVtX3BhcmVudHNfZnVuIiwib25fdXBkYXRlX2hhbmRsZXJzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJldGEiLCJhXzA2MiIsImJfMDYzIiwiY2hhbmdlZF9hdF9mdW4iLCJjdXRvZmZfZnVuIiwia2luZF9mdW4iLCJ2YWx1ZV9vcHRfZnVuIiwicmVjb21wdXRlZF9hdF9mdW4iLCJpZF9mdW4iLCJ4XzA1OSIsInVuc2FmZV92YWx1ZSIsInZhbHVlX2V4biIsInhfMDcyIiwiZ2V0X2N1dG9mZiIsInNldF9jdXRvZmYkMCIsImlzX2NvbnN0Iiwib25fdXBkYXRlIiwib25fdXBkYXRlX2hhbmRsZXIiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzIiwicmVzdCQwIiwib25fdXBkYXRlX2hhbmRsZXIkMCIsInIkMCIsInIkMSIsInJlc3QiLCJzZXRfa2luZCQwIiwibWF4X251bV9wYXJlbnRzIiwic2V0X3BhcmVudCIsImxpbmsiLCJhZGRfcGFyZW50IiwibmV3X21heF9udW1fcGFyZW50cyIsIm1heF9udW1fY2hpbGRyZW4iLCJuZXdfbWF4X251bV9jaGlsZHJlbiIsInJlbW92ZV9wYXJlbnQiLCJsYXN0X3BhcmVudF9pbmRleCIsInN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQiLCJjaGlsZDEiLCJjaGlsZDIiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJzYW1lX2FzX3BhY2tlZCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjAiLCJ4XzAyMiIsInhfMDIxIiwib25fdXBkYXRlX2V4biIsInhfMDI0IiwicHJldiQwIiwibmV4dCQwIiwieF8wMjUiLCJ4XzAwMiIsIm5hbWVzIiwibmFtZXMkMCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfMDk1Iiwic2V4cF9vZl9zdGF0dXMiLCJhcmcxXzAwNCIsInJlczFfMDA2IiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuIiwic2V0X2V4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1IiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsInNldF9jdXJyZW50bHlfcnVubmluZ19ub2RlIiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlJDAiLCJtYWtlX2NyZWF0b3IiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQxIiwiYWNjIiwibWFwIiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlXzAwOCIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsInNleHBfb2ZfdCQxIiwibnVtX3Zhcl9zZXRzIiwic2V0X251bV92YXJfc2V0cyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQwIiwic2V0X251bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjJDAiLCJudW1fbm9kZXNfcmVjb21wdXRlZCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZCIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZCIsInNldF9udW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJudW1fbm9kZXNfY3JlYXRlZCIsInNldF9udW1fbm9kZXNfY3JlYXRlZCIsIm51bV9ub2Rlc19jaGFuZ2VkIiwic2V0X251bV9ub2Rlc19jaGFuZ2VkIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYSIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwic2V0X251bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSIsInNldF9rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYSIsIndlYWtfaGFzaHRibHMiLCJvbmx5X2luX2RlYnVnIiwic2V0X29ubHlfaW5fZGVidWciLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiIsInNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwibmV3X29ic2VydmVycyIsImZpbmFsaXplZF9vYnNlcnZlcnMiLCJhbGxfb2JzZXJ2ZXJzIiwic2V0X2FsbF9vYnNlcnZlcnMiLCJudW1fYWN0aXZlX29ic2VydmVycyIsInNldF9udW1fYWN0aXZlX29ic2VydmVycyIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5IiwiYWRqdXN0X2hlaWdodHNfaGVhcCIsImN1cnJlbnRfc2NvcGUiLCJzZXRfY3VycmVudF9zY29wZSIsInN0YWJpbGl6YXRpb25fbnVtIiwic2V0X3N0YWJpbGl6YXRpb25fbnVtIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkIiwic3RhdHVzIiwic2V0X3N0YXR1cyIsIm51bV92YXJfc2V0cyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDEiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMiIsIm51bV9ub2Rlc19yZWNvbXB1dGVkJDAiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQkMCIsIm51bV9ub2Rlc19jcmVhdGVkJDAiLCJudW1fbm9kZXNfY2hhbmdlZCQwIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSQwIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkkMCIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UkMCIsIndlYWtfaGFzaHRibHMkMCIsIm9ubHlfaW5fZGVidWckMCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMkMCIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uJDAiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzJDAiLCJuZXdfb2JzZXJ2ZXJzJDAiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzJDAiLCJhbGxfb2JzZXJ2ZXJzJDAiLCJudW1fYWN0aXZlX29ic2VydmVycyQwIiwicHJvcGFnYXRlX2ludmFsaWRpdHkkMCIsImFkanVzdF9oZWlnaHRzX2hlYXAkMCIsInJlY29tcHV0ZV9oZWFwJDAiLCJjdXJyZW50X3Njb3BlJDAiLCJzdGFiaWxpemF0aW9uX251bSQwIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDAiLCJzdGF0dXMkMCIsIm1ha2VfY3JlYXRvciQwIiwic3RhdHVzX2Z1biIsInN0YWJpbGl6YXRpb25fbnVtX2Z1biIsImN1cnJlbnRfc2NvcGVfZnVuIiwicmVjb21wdXRlX2hlYXBfZnVuIiwiYWRqdXN0X2hlaWdodHNfaGVhcF9mdW4iLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9mdW4iLCJudW1fYWN0aXZlX29ic2VydmVyc19mdW4iLCJhbGxfb2JzZXJ2ZXJzX2Z1biIsImZpbmFsaXplZF9vYnNlcnZlcnNfZnVuIiwibmV3X29ic2VydmVyc19mdW4iLCJkaXNhbGxvd2VkX29ic2VydmVyc19mdW4iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZnVuIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZnVuIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvbmx5X2luX2RlYnVnX2Z1biIsIndlYWtfaGFzaHRibHNfZnVuIiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV9mIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZnVuIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9mIiwibnVtX25vZGVzX2NoYW5nZWRfZnVuIiwibnVtX25vZGVzX2NyZWF0ZWRfZnVuIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2Z1biIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2Z1biIsIm51bV92YXJfc2V0c19mdW4iLCJzdGF0dXNfZ2VuIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDEiLCJjb21waWxlX2FjYyQyIiwic3RhYmlsaXphdGlvbl9udW1fZ2VuIiwiY29tcGlsZV9hY2MkMyIsImN1cnJlbnRfc2NvcGVfZ2VuIiwiY29tcGlsZV9hY2MkNCIsInJlY29tcHV0ZV9oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJhZGp1c3RfaGVpZ2h0c19oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9nZW4iLCJjb21waWxlX2FjYyQ3IiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOCIsImFsbF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImZpbmFsaXplZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTAiLCJuZXdfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDExIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl9nZW4iLCJjb21waWxlX2FjYyQxNCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTUiLCJvbmx5X2luX2RlYnVnX2dlbiIsImNvbXBpbGVfYWNjJDE2Iiwid2Vha19oYXNodGJsc19nZW4iLCJjb21waWxlX2FjYyQxNyIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZyIsImNvbXBpbGVfYWNjJDE4IiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5X2ciLCJjb21waWxlX2FjYyQyMCIsIm51bV9ub2Rlc19jaGFuZ2VkX2dlbiIsImNvbXBpbGVfYWNjJDIxIiwibnVtX25vZGVzX2NyZWF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjIiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQzIiwiY29tcGlsZV9hY2MkMjUiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kNCIsImNvbXBpbGVfYWNjJDI2IiwibnVtX3Zhcl9zZXRzX2dlbiIsImNyZWF0ZSQxIiwibWFwJDEiLCJpdGVyJDEiLCJmb2xkJDEiLCJtYXBfcG9seSQwIiwiZm9yX2FsbCQxIiwiZXhpc3RzJDEiLCJ0b19saXN0JDEiLCJpdGVyJDIiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInRvX2xpc3QkMiIsIm1hcCQyIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQwIiwic2V4cF9vZl90JDIiLCJzdGF0dXNfMDE1Iiwic3RhYmlsaXphdGlvbl9udW1fMDE5IiwiY3VycmVudF9zY29wZV8wMjEiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV8wMjciLCJhZGp1c3RfaGVpZ2h0c19oZWFwXzAyNSIsInJlY29tcHV0ZV9oZWFwXzAyMyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzXzAyOSIsImFsbF9vYnNlcnZlcnNfMDMxIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc18wNDMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl8wNDEiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fMDM5IiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfMDM3IiwibmV3X29ic2VydmVyc18wMzUiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzXzAzMyIsIm9ubHlfaW5fZGVidWdfMDQ1Iiwid2Vha19oYXNodGJsc18wNDciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlXzAiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeV8wNTEiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5XzAiLCJudW1fbm9kZXNfY2hhbmdlZF8wNTUiLCJudW1fbm9kZXNfY3JlYXRlZF8wNTciLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfMDU5IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfMDYxIiwibnVtX3Zhcl9zZXRzXzA2NyIsImFyZ18wNjgiLCJibmRzXzAxNCIsImFyZ18wNjYiLCJibmRzXzAxNCQwIiwiYXJnXzA2NCIsImJuZHNfMDE0JDEiLCJhcmdfMDYyIiwiYm5kc18wMTQkMiIsImFyZ18wNjAiLCJibmRzXzAxNCQzIiwiYm5kc18wMTQkNCIsImJuZHNfMDE0JDUiLCJibmRzXzAxNCQ2IiwiYm5kc18wMTQkNyIsImJuZHNfMDE0JDgiLCJibmRzXzAxNCQ5IiwiYm5kc18wMTQkMTAiLCJibmRzXzAxNCQxMSIsImJuZHNfMDE0JDEyIiwiYm5kc18wMTQkMTMiLCJibmRzXzAxNCQxNCIsImJuZHNfMDE0JDE1IiwiYm5kc18wMTQkMTYiLCJibmRzXzAxNCQxNyIsImJuZHNfMDE0JDE4IiwiYm5kc18wMTQkMTkiLCJibmRzXzAxNCQyMCIsImJuZHNfMDE0JDIxIiwiYm5kc18wMTQkMjIiLCJibmRzXzAxNCQyMyIsImJuZHNfMDE0JDI0IiwiYm5kc18wMTQkMjUiLCJmaXJlZF9hbGFybV92YWx1ZXMiLCJzZXRfZmlyZWRfYWxhcm1fdmFsdWVzIiwiaGFuZGxlX2ZpcmVkIiwidGltaW5nX3doZWVsIiwiZmlyZWRfYWxhcm1fdmFsdWVzJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm5vdyQwIiwidGltaW5nX3doZWVsJDAiLCJtYWtlX2NyZWF0b3IkMSIsInRpbWluZ193aGVlbF9mdW4iLCJub3dfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImZpcmVkX2FsYXJtX3ZhbHVlc19mdW4iLCJ0aW1pbmdfd2hlZWxfZ2VuIiwibm93X2dlbiIsImhhbmRsZV9maXJlZF9nZW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkMyIsIml0ZXIkMyIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDQiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJzZXhwX29mX3QkMyIsIm5vd18wNzIiLCJ0aW1pbmdfd2hlZWxfMDcwIiwiZmlyZWRfYWxhcm1fdmFsdWVzXzA3NiIsImFyZ18wNzciLCJibmRzXzA2OSIsImFyZ18wNzUiLCJibmRzXzA2OSQwIiwiYXJnXzA3MyIsImJuZHNfMDY5JDEiLCJhcmdfMDcxIiwiYm5kc18wNjkkMiIsImludmFyaWFudCQxIiwibm93JDEiLCJjbG9jayIsInRpbWluZ193aGVlbF9sZW5ndGgiLCJudW1fc3RhYmlsaXplcyIsIml0ZXJfb2JzZXJ2ZXJzIiwiZGlyZWN0bHlfb2JzZXJ2ZWQiLCJpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIiwidF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJtYXhfbnVtX3BhcmVudHNfMDgxIiwicGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyIiwiZHVwbGljYXRlc18wODUiLCJleHRyYV8wODYiLCJzZXhwXzA3OSQwIiwiZmllbGRfc2V4cHNfMDg5IiwiZmllbGRfbmFtZV8wODciLCJ0YWlsXzA5OSIsImZpZWxkX3NleHBfMDg4JDIiLCJmaWVsZF9zZXhwXzA4OCIsInhfMTAwIiwiZmllbGRfc2V4cF8wODgkMCIsInNleHBfMDk0IiwiYXJnMV8wOTEiLCJhcmcwXzA5MCIsInJlczBfMDkyIiwicmVzMV8wOTMiLCJmdmFsdWVfMDk2IiwiZmllbGRfc2V4cF8wODgkMSIsImZ2YWx1ZV8wOTciLCJwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXIkMCIsIm1heF9udW1fcGFyZW50c18wODIiLCJzZXhwX29mX3QkNCIsIm1heF9udW1fcGFyZW50c18xMDIiLCJibmRzXzEwMSIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnXzEwNSIsImJuZHNfMTAxJDAiLCJhcmdfMTAzIiwiYm5kc18xMDEkMSIsInN0YXRzIiwibnVtX25lY2Vzc2FyeV9ub2RlcyIsIm1heF9udW1fcGFyZW50cyQwIiwibnVtX25vZGVzX2J5X251bV9wYXJlbnRzIiwibnVtX25vZGVzIiwiYW1fc3RhYmlsaXppbmciLCJyYWlzZWRfZXhuIiwiaW52YXJpYW50JDIiLCJpbnRlcm5hbF9vYnNlcnZlciIsInhfMTEwIiwicGFja2VkIiwiZW5zdXJlX25vdF9zdGFiaWxpemluZyIsImFsbG93X2luX3VwZGF0ZV9oYW5kbGVyIiwiYmFja3RyYWNlIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImFyZzFfMTEyIiwiYXJnMF8xMTEiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQxIiwicmVtb3ZlX2NoaWxkcmVuIiwicmVtb3ZlX2NoaWxkIiwiY2hlY2tfaWZfdW5uZWNlc3NhcnkiLCJiZWNhbWVfdW5uZWNlc3NhcnkiLCJwIiwidSIsInJlbW92ZV9hbGFybSIsImludmFsaWRhdGVfbm9kZSIsImludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaCIsInJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJmaXJzdF9ub2RlX29uX3JocyIsIm5ld19zY29wZSIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDEiLCJleHBlcnQiLCJhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2giLCJ3YXNfbmVjZXNzYXJ5IiwieF8xMTUiLCJiZWNhbWVfbmVjZXNzYXJ5IiwicnVuX3dpdGhfc2NvcGUiLCJzY29wZSIsInNhdmVkIiwiZXhuJDAiLCJ3aXRoaW5fc2NvcGUiLCJjaGFuZ2VfY2hpbGQiLCJvbGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJvbGRfY2hpbGQkMCIsImFkZF9hbGFybSIsInJlY29tcHV0ZSIsIm1heWJlX2NoYW5nZV92YWx1ZSIsIm9sZF9yaHMiLCJvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiY29weV9jaGlsZCIsIm9ubHlfZnJlZXplX3doZW4iLCJlbHNlJDAiLCJ0aGVuIiwiZGVzaXJlZF9icmFuY2giLCJtYWluJDEiLCJvbGRfcmhzJDAiLCJyaHMkMSIsInJocyQyIiwibjEiLCJjbG9jayQwIiwiYXQkMCIsImNsb2NrJDEiLCJjaGlsZCQxIiwic3RlcF9mdW5jdGlvbiIsInN0ZXBfZnVuY3Rpb25fdmFsdWUiLCJhdCQxIiwibjIiLCJuMSQwIiwibjMiLCJuMiQwIiwibjEkMSIsImYkMiIsIm40IiwibjMkMCIsIm4yJDEiLCJuMSQyIiwiZiQzIiwibjUiLCJuNCQwIiwibjMkMSIsIm4yJDIiLCJuMSQzIiwiZiQ0IiwibjYiLCJuNSQwIiwibjQkMSIsIm4zJDIiLCJuMiQzIiwibjEkNCIsImYkNSIsIm43IiwibjYkMCIsIm41JDEiLCJuNCQyIiwibjMkMyIsIm4yJDQiLCJuMSQ1IiwiZiQ2IiwibjgiLCJuNyQwIiwibjYkMSIsIm41JDIiLCJuNCQzIiwibjMkNCIsIm4yJDUiLCJuMSQ2IiwiZiQ3IiwibjkiLCJuOCQwIiwibjckMSIsIm42JDIiLCJuNSQzIiwibjQkNCIsIm4zJDUiLCJuMiQ2IiwibjEkNyIsImYkOCIsIm4xMCIsIm45JDAiLCJuOCQxIiwibjckMiIsIm42JDMiLCJuNSQ0IiwibjQkNSIsIm4zJDYiLCJuMiQ3IiwibjEkOCIsImYkOSIsIm4xMSIsIm4xMCQwIiwibjkkMSIsIm44JDIiLCJuNyQzIiwibjYkNCIsIm41JDUiLCJuNCQ2IiwibjMkNyIsIm4yJDgiLCJuMSQ5IiwiZiQxMCIsIm4xMiIsIm4xMSQwIiwibjEwJDEiLCJuOSQyIiwibjgkMyIsIm43JDQiLCJuNiQ1IiwibjUkNiIsIm40JDciLCJuMyQ4IiwibjIkOSIsIm4xJDEwIiwiZiQxMSIsIm4xMyIsIm4xMiQwIiwibjExJDEiLCJuMTAkMiIsIm45JDMiLCJuOCQ0IiwibjckNSIsIm42JDYiLCJuNSQ3IiwibjQkOCIsIm4zJDkiLCJuMiQxMCIsIm4xJDExIiwiZiQxMiIsIm4xNCIsIm4xMyQwIiwibjEyJDEiLCJuMTEkMiIsIm4xMCQzIiwibjkkNCIsIm44JDUiLCJuNyQ2IiwibjYkNyIsIm41JDgiLCJuNCQ5IiwibjMkMTAiLCJuMiQxMSIsIm4xJDEyIiwiZiQxMyIsIm4xNSIsIm4xNCQwIiwibjEzJDEiLCJuMTIkMiIsIm4xMSQzIiwibjEwJDQiLCJuOSQ1IiwibjgkNiIsIm43JDciLCJuNiQ4IiwibjUkOSIsIm40JDEwIiwibjMkMTEiLCJuMiQxMiIsIm4xJDEzIiwiZiQxNCIsImNoaWxkX2luZGV4JDAiLCJ1JDAiLCJjYW5fcmVjb21wdXRlX25vdyIsImIiLCJqIiwicmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uIiwieF8xMTYiLCJ1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMiLCJkaXNhbGxvd19mdXR1cmVfdXNlIiwiZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyIsIm9ic2VydmVyX2ZpbmFsaXplciIsImNyZWF0ZV9vYnNlcnZlciIsIm9wdCIsInN0aCIsInNob3VsZF9maW5hbGl6ZSIsImFkZF9uZXdfb2JzZXJ2ZXJzIiwib2xkX2FsbF9vYnNlcnZlcnMiLCJvbGRfb2JzZXJ2ZXJzIiwib2JzZXJ2ZXJfdmFsdWVfZXhuIiwieF8xMTciLCJvYnNlcnZlcl92YWx1ZSIsIm5vZGVfb25fdXBkYXRlIiwib2JzZXJ2ZXJfb25fdXBkYXRlX2V4biIsInNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIiwic2V0X3ZhciIsInJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyIsIndlYWtfaGFzaHRibCIsInN0YWJpbGl6ZV9zdGFydCIsInN0YWJpbGl6ZV9lbmQiLCJtYXRjaCQwIiwibm9kZV91cGRhdGUkMCIsInJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIiwic3RhYmlsaXplIiwic2V4cF9vZl90JDUiLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUiLCJjcmVhdGVfbm9kZV9pbiIsImNyZWF0ZV9ub2RlIiwiY3JlYXRlX25vZGVfdG9wIiwiY3JlYXRlX3ZhciIsInVzZV9jdXJyZW50X3Njb3BlIiwiY29uc3QkMCIsIm1hcCQ1IiwibWFwMiIsImJvdGgiLCJtYXAzIiwibWFwNCIsIm1hcDUiLCJtYXA2IiwibWFwNyIsIm1hcDgiLCJtYXA5IiwibWFwMTAiLCJtYXAxMSIsIm1hcDEyIiwibWFwMTMiLCJtYXAxNCIsIm1hcDE1IiwicHJlc2VydmVfY3V0b2ZmIiwiaW5wdXQiLCJvdXRwdXQiLCJkZXBlbmRfb24iLCJuZWNlc3NhcnlfaWZfYWxpdmUiLCJiaW5kMiIsInYyIiwidjEiLCJiaW5kMyIsInYzIiwiYmluZDQiLCJ2NCIsImlmJDAiLCJsYXp5X2Zyb21fZnVuIiwiZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6IiwibWVtb2l6ZV9mdW5fYnlfa2V5IiwiaGFzaGFibGUiLCJwcm9qZWN0X2tleSIsImluaXRpYWxfc2l6ZSIsInRhYmxlIiwia2V5IiwiYiQwIiwiYWxsIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIiwibnVtX2ludmFsaWQiLCJhY2N1bSIsIngkMCIsImZfaW52ZXJzZSQwIiwiYXRfbGVhc3Rfa19vZiIsImJvb2xfdG9faW50IiwibnVtX3RydWUiLCJleGlzdHMkNSIsImZvcl9hbGwkNSIsInN1bSIsInplcm8iLCJzdWIiLCJvcHRfc3VtIiwic3VtX2ludCIsInN1bV9mbG9hdCIsInNldF9mcmVlemUiLCJ0aW1lIiwiYWZ0ZXIiLCJzcGFuIiwibmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QiLCJiYXNlIiwidmFsdWVfYXQiLCJpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIiwiYWR2YW5jZV9jbG9jayIsIm1haW4kMiIsImNyZWF0ZV9jbG9jayIsInRpbWluZ193aGVlbF9jb25maWciLCJzdGFydCIsImNyZWF0ZSQzIiwiQ29uZmlnIiwid2Vha19tZW1vaXplX2Z1bl9ieV9rZXkiLCJleHBlcnRfa2luZF9vZl9ub2RlIiwieF8xMTgiLCJjcmVhdGUkNCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIiwiY3VycmVudCIsImFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlXyIsInhfMTIwIiwieF8xMTkiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8kMCIsInhfMTIyIiwieF8xMjEiLCJtYWtlX3N0YWxlJDAiLCJlX29wdCIsImludmFsaWRhdGUiLCJhZGRfZGVwZW5kZW5jeSIsImRlcCIsInJlbW92ZV9kZXBlbmRlbmN5IiwiZWRnZSIsImVkZ2VfaW5kZXgiLCJsYXN0X2VkZ2UiLCJsYXN0X2VkZ2VfaW5kZXgiLCJvbl9jaGFuZ2UiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwibGV2ZWxfYml0cyIsImNyZWF0ZV9pbnRlcm5hbCIsImRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkIiwic2V4cF9vZl9zdGF0ZV93aXRuZXNzIiwid2l0aGluIiwicGFjayIsInJldHVybiQwIiwibWFwMiQwIiwibWFwMyQwIiwibWFwNCQwIiwibWFwNSQwIiwibWFwNiQwIiwibWFwNyQwIiwibWFwOCQwIiwibWFwOSQwIiwibWFwMTAkMCIsIm1hcDExJDAiLCJtYXAxMiQwIiwibWFwMTMkMCIsIm1hcDE0JDAiLCJtYXAxNSQwIiwiYmluZDIkMCIsImJpbmQzJDAiLCJiaW5kNCQwIiwic3ltYm9sX21hcCIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCQwIiwic3ltYm9sX2JpbmQkMCIsImxhenlfZnJvbV9mdW4kMCIsIm1lbW9pemVfZnVuIiwiYXJyYXlfZm9sZCQwIiwicmVkdWNlX2JhbGFuY2VkIiwicmVwbGFjZSIsInhfMDE3IiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQwIiwiaW5jcl9zdGF0ZSQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQkMCIsImFsYXJtX3ByZWNpc2lvbiQwIiwid2F0Y2hfbm93IiwiYWR2YW5jZV9jbG9ja19ieSIsImZyZWV6ZSQwIiwid2hlbiIsImRlcGVuZF9vbiQwIiwic3RhYmlsaXplJDAiLCJhbV9zdGFiaWxpemluZyQwIiwib2ZfYV8wMTgiLCJhcmcwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJub2RlX3ZhbHVlIiwic2V4cF9vZl90JDYiLCJib3RoJDAiLCJ4MSIsIngyIiwibWFwMiQxIiwibWFwMyQxIiwibWFwNCQxIiwibWFwNSQxIiwibWFwNiQxIiwibWFwNyQxIiwibWFwOCQxIiwibWFwOSQxIiwibWFwMTAkMSIsIm1hcDExJDEiLCJtYXAxMiQxIiwibWFwMTMkMSIsIm1hcDE0JDEiLCJtYXAxNSQxIiwiYmluZDIkMSIsImJpbmQzJDEiLCJiaW5kNCQxIiwid2Vha19tZW1vaXplX2Z1biIsImRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSQwIiwicmV0dXJuJDEiLCJ3aXRoaW4kMCIsImNvbnN0JDEiLCJyZXR1cm4kMiIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwiYXJyYXlfZm9sZCQxIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic3RhYmlsaXplJDEiLCJhbV9zdGFiaWxpemluZyQxIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1Iiwid2l0aF9vbGQiLCJpIiwiZiIsIm9sZCIsImEiLCJiIiwidW5vcmRlcmVkX2ZvbGQiLCJvcHQiLCJ1cGRhdGUiLCJzcGVjaWFsaXplZF9pbml0aWFsIiwibWFwIiwiaW5pdCIsImFkZCIsInJlbW92ZSIsInN0aCIsImRhdGFfZXF1YWwiLCJzdGgkMCIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJrZXkiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwiYWNjIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJpbml0aWFsIiwib2xkX291dCIsIm9sZF9pbiIsImNoYW5nZSIsIm5ldyQwIiwib2xkJDAiLCJuZXckMSIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzIiwiaW5jcl9tYXAiLCJ1cGRhdGUkMSIsIm91dGVyX2tleSIsImlubmVyX2tleSIsImlubmVyX21hcCIsImRhdGEiLCJvbGRfaW5uZXJfbWFwIiwibmV3X2lubmVyX21hcCIsImRpZmYiLCJkYXRhX3JlbW92ZWQiLCJkYXRhX2FkZGVkIiwid2l0aF9jb21wYXJhdG9yIiwiZ2V0X2NvbXBhcmF0b3IiLCJ4Iiwid2l0aF9jb21wYXJhdG9yJDAiLCJvZl9zZXQiLCJzZXQiLCJjb21wYXJhdG9yIiwib2xkX2lucHV0Iiwib2xkX291dHB1dCIsIm5ld19pbnB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJuZXdfb3V0cHV0IiwiZ2VuZXJpY19tYXBpIiwid2l0bmVzcyIsImlucHV0IiwicmVzIiwib3V0cHV0X2RhdGEiLCJtYXBpIiwiZmlsdGVyX21hcGkiLCJmaWx0ZXJfbWFwIiwid2l0aF9vbGQyIiwiaTEiLCJpMiIsImExIiwiYTIiLCJtYXBpX2NvdW50IiwibmV3X2tleSIsIm4iLCJwcmV2X2tleSIsIm1hcF9jb3VudCIsIm1pbl9oZWxwZXIiLCJtaW4iLCJtYXhfaGVscGVyIiwibWF4IiwiYm91bmRzX2hlbHBlciIsIm1hcGlfbWluIiwibWFwaV9tYXgiLCJtYXBpX2JvdW5kcyIsIm1hcGlfbW4iLCJtYXBfbWF4IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwibWFwX2JvdW5kcyIsInZhbHVlX2JvdW5kcyIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0IiwibmV3X2xlZnRfbWFwIiwibmV3X3JpZ2h0X21hcCIsIm9sZF9yaWdodF9tYXAiLCJvbGRfbGVmdF9tYXAiLCJvbGRfbGVmdF9tYXAkMCIsImxlZnRfZGlmZiIsInJpZ2h0X2RpZmYiLCJkaWZmX2VsZW1lbnQiLCJyaWdodF9rZXkiLCJsZWZ0X2tleSIsImtleSQwIiwicmlnaHRfZGF0YV9vcHQkMCIsImxlZnRfZGF0YV9vcHQiLCJyaWdodF9kaWZmJDAiLCJsZWZ0X2RpZmYkMCIsInJpZ2h0X2RhdGFfb3B0JDIiLCJsZWZ0X2RhdGFfb3B0JDAiLCJ5Iiwib3V0cHV0X2RhdGFfb3B0IiwieSQwIiwiZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvciIsImN1dG9mZiIsImluY3JlbWVudGFsX3N0YXRlIiwiZW1wdHlfbWFwIiwicHJldl9tYXAiLCJwcmV2X25vZGVzIiwicmVzdWx0Iiwib25faW5uZXJfY2hhbmdlIiwibGhzX2NoYW5nZSIsIm5vZGVzIiwiY2hhbmdlZCIsImRlcCIsIm5vZGUiLCJub2RlcyQwIiwibm9kZSQwIiwibm9kZSQxIiwiYyIsInVzZXJfZnVuY3Rpb25fZGVwIiwibmV3X25vZGVzIiwiZmlsdGVyX21hcGkkMCIsIm1hcGkkMCIsIm1hcCQwIiwiZmlsdGVyX21hcCQwIiwibWVyZ2UkMCIsIm1hcDEiLCJtYXAyIiwidW56aXBfbWFwaSIsImxlZnRfcmVzdWx0X2VxdWFsIiwicmlnaHRfcmVzdWx0X2VxdWFsIiwicGFpciIsImRhdGFfZXF1YWwkMCIsImxlZnRfcmVzdWx0X2VxdWFsJDAiLCJzdGgkMSIsInJpZ2h0X3Jlc3VsdF9lcXVhbCQwIiwibGVmdF9hY2MiLCJsZWZ0X3Jlc3VsdCIsInJpZ2h0X2FjYyIsInJpZ2h0X3Jlc3VsdCIsImwiLCJsZWZ0JDAiLCJyIiwicmlnaHQkMCIsInJpZ2h0IiwibGVmdCIsInByZXYiLCJwcmV2X2IiLCJwcmV2X2EiLCJuZXdfYiIsIm5ld19hIiwiZWxlbWVudCIsImlucHV0X2NoYW5nZSIsInVuemlwIiwidW56aXBfbWFwaSQwIiwicmlnaHRfZGVwIiwibGVmdF9kZXAiLCJyaWdodF9pbmNyIiwibGVmdF9pbmNyIiwibGVmdF91c2VyX2Z1bmN0aW9uX2RlcCIsInJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwIiwia2V5cyIsInBhcnRpdGlvbl9tYXBpIiwiZW1wdHkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsImZsYXR0ZW4iLCJzdGF0ZSIsImluY3IiLCJqb2luIiwibWFwX2luY3IiLCJyZXN1bHRfbWFwIiwib2xkX21hcF9vZl9pbmNycyIsImN1cnJlbnRfZGVwZW5kZW5jaWVzIiwiYWRkX3N1Ym5vZGUiLCJkYXRhX25vZGUiLCJuZXdfZGVwIiwicmVtb3ZlX3N1Ym5vZGUiLCJtYXBfb2ZfaW5jcnMiLCJkYXRhX25vZGUkMCIsIm5ld19kZXBlbmRlbmN5X21hcCIsInNlcGFyYXRlIiwiaW5wdXRfbWFwIiwib3V0cHV0X21hcF9ub2RlIiwibWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfIiwiaW5wdXRfbWFwX2NoYW5nZWQiLCJkZXBlbmRlbmN5IiwicHJldl9pbnB1dF9tYXAiLCJvdXRwdXRfbWFwIiwiZXhwZXJ0X25vZGVzIiwib2xkX25vZGUiLCJzdWJyYW5nZSIsInJhbmdlIiwiY29tcGFyZSIsImVxdWFsIiwibWF5YmVfYm91bmRfZXF1YWwiLCJhXzAwMiIsImJfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJyYW5nZV9pc19lbXB0eSIsIm1pbiQwIiwibWF4JDAiLCJtYXgkMSIsIm1pbiQxIiwicmFuZ2VfaW5jbHVkZXMiLCJyYW5nZSQwIiwiZnJvbV9zY3JhdGNoIiwib2xkX3JhbmdlIiwib2xkX21pbiIsIm9sZF9tYXAiLCJvbGRfbWF4Iiwib2xkX3JlcyIsIm9sZF9tYXgkMCIsInBhcmFtIiwiYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24iLCJvdXRzaWRlIiwib3V0c2lkZSQwIiwib3V0c2lkZV9jdXRvZmYiLCJ3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2UiLCJ3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIiwibWFwX2FwcGVuZF9leG4iLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm9sZF9taW4kMCIsIm9sZF9taW4kMSIsIm9sZF9tYXgkMSIsIndpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlIiwicmVrZXkiLCJvdXRlcl9jb21wYXJhdG9yIiwiaW5kZXhfYnlpIiwiaW5kZXgiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfbWFwIiwiaW5uZXJfbWFwJDAiLCJpbmRleF9ieSIsImlzX2tub3duIiwidG9fb3B0aW9uIiwiZmluZF9rZXlfcmFuZ2VfbGluZWFyIiwiZnJvbSIsInRvIiwibGVuIiwiYmVnaW5fa2V5IiwiZW5kX2tleSIsImZpbmRfa2V5cyIsImZvbGQiLCJzdGFydF9wb3MiLCJhZHZhbmNlX3BvcyIsInBvcyIsImJlZ2luX2tleSQwIiwiZW5kX2tleSQwIiwicmFuayIsImNvbXBhcmVfa2V5Iiwic2FtZV9rZXkiLCJwcm9jZXNzIiwibmV3X21hcCIsIm9sZF9yYW5rIiwib2xkX2tleSIsIm9sZF9yYW5rJDAiLCJ1cHBlcl9ib3VuZCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQkMCIsImxvd2VyX2JvdW5kJDAiLCJzdWJyYW5nZSQwIiwiZGlmZl9rZXkiLCJvbGRfcmFuayQxIiwib2xkJDEiLCJzdWJyYW5nZV9ieV9yYW5rIiwiZmluZF9rZXlfcmFuZ2UiLCJlbmRfa2V5X29wdCQwIiwib2xkX3RvIiwib2xkX2Zyb20iLCJmaW5kX29mZnNldCIsImNoYW5nZWRfa2V5IiwicmFuZ2Vfb2Zmc2V0X2JlZ2luIiwicmFuZ2Vfb2Zmc2V0X2VuZCIsImFkanVzdF9hbmRfb2Zmc2V0IiwiYnkkMSIsImtleSQxIiwiYnkkMiIsImJ5IiwiY2xvc2VzdF9kaXIiLCJieSQwIiwib2Zmc2V0X2VuZCIsIm9mZnNldF9iZWdpbiIsIm1hcF9vZmZzZXRfZW5kIiwibWFwX29mZnNldF9iZWdpbiIsImVuZF9rZXlfb3B0JDIiLCJiZWdpbl9rZXlfb3B0IiwibWFwX29mZnNldF9iZWdpbiQwIiwiZW5kX2tleV9vcHQiLCJiZWdpbl9rZXlfb3B0JDAiLCJzeW1ib2wiLCJib3VuZCIsInJldHVybiQwIiwicGF0dGVybl9zeW50YXhfMDA4IiwicGF0dGVybl9zeW50YXhfMDA5IiwibGIiLCJwYXR0ZXJuX3N5bnRheF8wMTAiLCJ1IiwicGF0dGVybl9zeW50YXhfMDExIiwidWIiLCJsZXRfc3ludGF4XzAxNiIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxMiIsImwkMCIsInBhdHRlcm5fc3ludGF4XzAxMyIsImxiJDAiLCJsZXRfc3ludGF4XzAyMCIsInBhdHRlcm5fc3ludGF4XzAxNCIsInUkMCIsInBhdHRlcm5fc3ludGF4XzAxNSIsInViJDAiLCJsZXRfc3ludGF4XzAyMyIsInRyYW5zcG9zZSIsImsyX2NvbXBhcmF0b3IiLCJtIiwiazFfY29tcGFyYXRvciIsImsxIiwiazIiLCJ2YWx1ZSIsImFjY19pbm5lciIsImFjY19pbm5lciQwIiwiY29sbGFwc2VfYnkiLCJtZXJnZV9rZXlzIiwiY29sbGFwc2UiLCJpbm5lcl9jb21wYXJhdG9yJDAiLCJleHBhbmQiLCJjb3VudGkiLCJjb3VudCIsImV4aXN0c2kiLCJleGlzdHMiLCJzdW0iLCJHcm91cCIsInYiLCJmb3JfYWxsaSIsImZvcl9hbGwiLCJjcmVhdGUiLCJzZWxmIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsIm5ld192YWx1ZSIsInVwZGF0ZXJfbm9kZSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsInNhdmVkX3ZhbHVlIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJtYXRjaCQ0IiwidiQxIiwibWF0Y2gkNSIsInYkMiIsIm1hdGNoJDAiLCJpbmZvX3Blcl9rZXkiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJhIiwiY29udGVudHNfYmlnc3RyIiwiYmxvYiIsInVybCIsImNyZWF0ZSQwIiwib3B0IiwiZ2V0X2Rvd25sb2FkIiwiYnV0dG9uX3RleHQiLCJzdGgiLCJlbmFibGVkIiwic3RoJDAiLCJvbl9jbGljayIsInN0aCQxIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMjIiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wNDAiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwidG9wXzAwNSIsImxlZnRfMDA3IiwiYm90dG9tXzAwOSIsInJpZ2h0XzAxMSIsImR1cGxpY2F0ZXNfMDEzIiwiZXh0cmFfMDE0Iiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjQiLCJmaWVsZF9zZXhwXzAxNiQ0IiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNSIsImZpZWxkX3NleHBfMDE2JDAiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMSIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNiQyIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE2JDMiLCJmdmFsdWVfMDE5IiwicmlnaHRfMDEyIiwiYm90dG9tXzAxMCIsImxlZnRfMDA4IiwidG9wXzAwNiIsInNleHBfb2ZfdCIsIm9mX2FfMDI2IiwicmlnaHRfMDM0IiwiYm90dG9tXzAzMiIsImxlZnRfMDMwIiwidG9wXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInY0IiwidjMiLCJ2MiIsInYxIiwic2l6ZSIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwidl90b3AiLCJ2X2xlZnQiLCJ2X2JvdHRvbSIsInZfcmlnaHQiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDM2IiwiYl8wMzciLCJuIiwibiQwIiwibiQxIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwicmlnaHQkMCIsImJvdHRvbSQwIiwibGVmdCQwIiwidG9wJDAiLCJtYWtlX2NyZWF0b3IiLCJ0b3BfZnVuIiwibGVmdF9mdW4iLCJib3R0b21fZnVuIiwicmlnaHRfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwidG9wX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJsZWZ0X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJib3R0b21fZ2VuIiwiY29tcGlsZV9hY2MkMyIsInJpZ2h0X2dlbiIsImFjYyIsIm1hcCIsIml0ZXIiLCJmb2xkIiwiaW5pdCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsIm1hcCQxIiwidCIsImYiLCJpbnRfaGVpZ2h0IiwiaW50X3dpZHRoIiwiZmxvYXRfaGVpZ2h0IiwiZmxvYXRfd2lkdGgiLCJyb3VuZF9mbG9hdF9yZWN0Iiwib3B0Iiwic3RoIiwicm91bmQiLCJyb3dzX29yX2NvbHVtbnNfb2Zfc2V4cCIsInNleHBfMDQxIiwic2V4cF9vZl9yb3dzX29yX2NvbHVtbnMiLCJncm91cCQwIiwiYmluX3NoYXBlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9zaXplX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZV9yb3dzX29yX2NvbHVtbnMiLCJiaW5fd3JpdGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyQwIiwiYmluX3JlYWRlcl9yb3dzX29yX2NvbHVtbnMiLCJiaW5fcm93c19vcl9jb2x1bW5zIiwicm93cyIsImNvbHVtbnMiLCJpc19yb3dzIiwiaXNfY29sdW1ucyIsInJvd3NfdmFsIiwiY29sdW1uc192YWwiLCJyb3dzJDAiLCJjb2x1bW5zJDAiLCJmb2xkJDEiLCJyb3dzX2Z1biIsImNvbHVtbnNfZnVuIiwiaXRlciQxIiwibWFwJDIiLCJtYWtlX21hdGNoZXIiLCJyb3dzX2dlbiIsImNvbHVtbnNfZ2VuIiwidG9fcmFuayIsInRvX25hbWUiLCJjb21wYXJlX3Jvd3Nfb3JfY29sdW1ucyIsImlubmVySGVpZ2h0IiwiaW5uZXJXaWR0aCIsImVsZW1lbnRfaXNfaW5fdmlld3BvcnQiLCJlbHQiLCJzY3JvbGwiLCJpZCIsInZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCIsInZpZXdwb3J0X3JlY3QiLCJjbGllbnRfcmVjdF9vZl9lbGVtZW50IiwiYm91bmRpbmdfcmVjdCIsImNsaWVudF9yZWN0IiwiZmluZF92aXNpYmxlX3JhbmdlIiwibGVuZ3RoIiwibnRoX2VsZW1lbnRfaWQiLCJsYXlvdXQiLCJlbGVtZW50X3NlYXJjaCIsInNlYXJjaF9ieSIsIm1vZGUiLCJ4IiwibnRoX2VsZW1lbnQiLCJmaXJzdCIsImxhc3QiLCJnZXQiLCJpc19hc2NlbmRpbmciLCJsZW5ndGgkMCIsInZpZXdwb3J0X3JlY3QkMCIsInRhcmdldCIsInRhcmdldCQwIiwic2VhcmNoX2J5JDAiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIiwiZ2V0X3Njcm9sbF9jb250YWluZXIiLCJlbCIsImZpbGVuYW1lIiwicHJpbnRfZXJyb3JmIiwiZm10IiwicyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwiY2FsbGJhY2siLCJjdXJyZW50X2NvbnRleHQiLCJyZXF1ZXN0X2lkcyIsImNhbGxiYWNrJDAiLCJzZXRfdGltZW91dF9pZCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsImFuaW1hdGlvbl9jYWxsYmFjayIsInRpbWVvdXRfY2FsbGJhY2siLCJhc19mb2N1c2FibGUiLCJtYXJrX2RpcnR5IiwiaXNfZGlydHkiLCJ4XzAwMiIsInhfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJzZXRfbG9nZ2luZ19maWx0ZXIiLCJsb2dnaW5nX2ZpbHRlciIsImdsb2JhbF9pc19pbml0aWFsaXplZCIsImFwcF9zdGF0ZXMiLCJzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCIsInN0cmluZ3MiLCJzdHIiLCJtdWx0aV9saW5lX3N0cmluZ19saXN0IiwiZ2V0X3RhZ19uYW1lIiwibm9kZSIsImUiLCJzdGFydF9ib25zYWkiLCJiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCIsImluaXRpYWxfbW9kZWwiLCJkZWJ1ZyIsInN0aCQwIiwic3RvcCIsInN0aCQxIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImN1dG9mZiIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJnZXRfdmlldyIsIm5hbWVkX2xvZ2dpbmdfZmlsdGVycyQwIiwiZmlsdGVyX25hbWVzIiwid2l0aF9hcHBfaWRfb3B0IiwidXBkYXRlX3N0YXRlIiwiYXBwX2lkX29wdCIsImFwcF9pZF9vcHQkMCIsImFwcF9pZCIsInN0YXRlIiwidXBkYXRlX2xvZ2dpbmdfZmlsdGVyIiwidXBkYXRlX3Nob3VsZF9wcm9maWxlIiwic2hvdWxkX3Byb2ZpbGUiLCJ1cGRhdGVfc2hvdWxkX2RlYnVnIiwic2hvdWxkX2RlYnVnIiwiYmxhbmdfc3RyIiwiYmxhbmdfc3RyJDAiLCJhcHBfc3RhdGUiLCJibGFuZyIsImludmFsaWRfbmFtZXMiLCJuYW1lIiwiZmlsdGVyIiwiZmlsdGVyJDAiLCJhY3Rpb25fc2V4cCIsImNvbnRlbnRzIiwiYXBwX2luaXRfbWVzc2FnZSIsInNob3VsZF9kZWJ1ZyQwIiwic2hvdWxkX3Byb2ZpbGUkMCIsImh0bWwiLCJodG1sX2RvbSIsInBhcmVudCIsImNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCIsImV2ZW50X25hbWUiLCJ3aGVyZSIsInByZXZfaHRtbCIsInByZXZfZWx0IiwicmVmb2N1c19yb290X2VsZW1lbnQiLCJlbGVtZW50IiwidGltZXJfc3RhcnQiLCJwcm9maWxlIiwidGltZXJfc3RvcCIsImJlZm9yZSIsImFmdGVyIiwicmVsYXRlZF90YXJnZXQiLCJzYWZlX2ZpbHRlciIsInNob3VsZF9sb2ciLCJlcnIiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDEyIiwibmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIiwicGVyZm9ybV91cGRhdGUiLCJkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsImFkZF9uZXdfYXR0cnMiLCJhdHRycyIsImh0bWwkMCIsInBhdGNoIiwib2xkX3RhZ19uYW1lIiwibmV3X3RhZ19uYW1lIiwidGFnc190aGVfc2FtZSIsInN0YXJ0IiwiYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24iLCJvbGRfbW9kZWwiLCJpbmplY3QiLCJjb21wb25lbnQiLCJzY2hlZHVsZV9ldmVudCIsInNjaGVkdWxlX2FjdGlvbiIsImVycm9yX3NvdXJjZV8wMTQiLCJpbnZhcmlhbnQiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsInRvX3N0cmluZyIsImVxdWFsIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDUiLCJiXzAwNiIsImFfMDA5IiwiYl8wMTAiLCJ1cGRhdGVfb2Zfc2V4cCIsIm9mX2FfMDExIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTYiLCJpbnB1dF8wMTkiLCJ2YWx1ZV8wMjEiLCJkdXBsaWNhdGVzXzAyMyIsImV4dHJhXzAyNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjciLCJmaWVsZF9uYW1lXzAyNSIsInRhaWxfMDMxIiwiZmllbGRfc2V4cF8wMjYkMiIsImZpZWxkX3NleHBfMDI2IiwieF8wMzIiLCJmaWVsZF9zZXhwXzAyNiQwIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI2JDEiLCJmdmFsdWVfMDI5IiwidmFsdWVfMDIyIiwiaW5wdXRfMDIwIiwiZmllbGRfc2V4cHNfMDMzIiwiaW5wdXRfMDM2IiwibGFzdF92YWxpZF8wMzgiLCJlcnJvcl8wNDAiLCJkdXBsaWNhdGVzXzA0MiIsImV4dHJhXzA0MyIsInNleHBfMDM0IiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MSIsImZpZWxkX3NleHBfMDQ1JDMiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDUyIiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDgiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDQ3IiwiZXJyb3JfMDQxIiwibGFzdF92YWxpZF8wMzkiLCJpbnB1dF8wMzciLCJzZXhwX29mX3VwZGF0ZSIsIm9mX2FfMDU0IiwidmFsdWVfMDU4IiwiaW5wdXRfMDU2IiwiYXJnXzA1OSIsImJuZHNfMDU1IiwiYXJnXzA1NyIsImJuZHNfMDU1JDAiLCJlcnJvcl8wNjUiLCJsYXN0X3ZhbGlkXzA2MyIsImlucHV0XzA2MSIsImFyZ18wNjYiLCJibmRzXzA2MCIsImFyZ18wNjQiLCJibmRzXzA2MCQwIiwiYXJnXzA2MiIsImJuZHNfMDYwJDEiLCJncm91cCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2MiIsInYxIiwic2l6ZSIsInYzIiwidjIkMCIsInYxJDAiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCIsIndyaXRlX2EiLCJidWYiLCJwb3MiLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X2lucHV0Iiwidl92YWx1ZSIsInZfaW5wdXQkMCIsInZfbGFzdF92YWxpZCIsInZfZXJyb3IiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJhXzA2OCIsImJfMDY5IiwiYV8wNzIiLCJiXzA3MyIsIm4iLCJuJDAiLCJhXzA3NiIsImJfMDc3IiwibiQxIiwiZXF1YWxfdXBkYXRlIiwiYV8wNzgiLCJiXzA3OSIsImFfMDgwIiwiYl8wODEiLCJncm91cCQwIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJiaW5fdXBkYXRlIiwiY29tcGFyZV91cGRhdGUiLCJhXzA4NyIsImJfMDg4IiwiYV8wODkiLCJiXzA5MCIsImxpZnQiLCJNIiwiaW5wdXQkMSIsInZhbHVlIiwiaW5wdXQiLCJpbnB1dCQwIiwiZXhuJDAiLCJleG4iLCJpbml0aWFsX2VtcHR5IiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwibGFzdF92YWxpZCIsImdldF9lcnJvciIsImVycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJzdHJ1Y3R1cmFsX2xpc3QiLCJvcHQiLCJjaGlsZHJlbiIsInN0aCIsIm9yaWVudGF0aW9uIiwibGF5b3V0X3N0eWxlIiwiY2hpbGQiLCJzZXhwX29mX3QiLCJjb21iaW5lIiwibGVmdCIsInJpZ2h0IiwiaW5pdCIsImVsZW1lbnQiLCJmIiwiZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQiLCJjaGFuZ2VfaGFuZGxlciIsIm5vcm1hbGl6ZWQiLCJjaGFuZ2VfaGFuZGxlciQwIiwiZXZlbnRfaWQiLCJvbl9tb3VudCIsInN0YXRlIiwiZGVzdHJveSIsInVwZGF0ZSQwIiwib2xkX2lucHV0IiwibmV3X2lucHV0IiwiY3JlYXRlIiwiaW1wbCIsInZhbHVlcyIsInNlbGVjdGVkIiwib25fY2hhbmdlIiwiZXh0cmFfYXR0cnMiLCJzdGgkMCIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInZhbHVlcyQwIiwiYV8wOTEiLCJiXzA5MiIsImFfMDkzIiwiYl8wOTQiLCJvZl9lbnVtIiwib2ZfZW51bV9vcHQiLCJhXzA5NSIsImJfMDk2IiwiYV8wOTciLCJiXzA5OCIsImltcGwkMCIsImlzX2NoZWNrZWQiLCJsYWJlbCIsIm9uX3RvZ2dsZSIsImV2Iiwic2ltcGxlIiwiaW1wbCQxIiwiaXRlbSIsIm9mX3ZhbHVlcyQwIiwib2ZfZW51bSQwIiwiaW1wbCQyIiwicmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IiLCJzdGgkMSIsInRhcmdldCIsImkiLCJvcHRpb25zIiwic2VsZWN0ZWRfdmFsdWVzIiwiaXNfc2VsZWN0ZWQiLCJ3YXNfcmVwZWF0ZWRfY2xpY2siLCJvZl92YWx1ZXMkMSIsIm9mX2VudW0kMSIsImxpc3RlbmVyIiwibm9ybWFsaXplIiwibWF5YmVfb25fcmV0dXJuIiwib25fcmV0dXJuIiwib25fcmV0dXJuJDAiLCJpbnB1dF9ub2RlIiwicGxhY2Vob2xkZXIiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwiY2FsbF9vbl9pbnB1dF93aGVuIiwic2hvdWxkX25vcm1hbGl6ZSIsInR5cGVfYXR0cnMiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm9mX3N0cmluZ2FibGUiLCJ2YWxpZGF0ZWQiLCJWIiwidmFsdWVfYXR0ciIsInRleHQiLCJudW1iZXIiLCJzdGVwIiwicmFuZ2UiLCJ0aW1lIiwiZGF0ZSIsImRhdGV0aW1lX2xvY2FsIiwidXRjX29mZnNldCIsImhvdXJzIiwiem9uZSIsInBhcnRzIiwiaHIiLCJtaW4iLCJvZmRheSIsIlpvbmVkX3RpbWUiLCJ0ZXh0X2FyZWEiLCJzdGgkMiIsImNvbG9yX3BpY2tlciIsImV4dHJhX2F0dHIiLCJ3aXRoX3ZhbGlkYXRpb24iLCJ2YWxpZGF0aW9uIiwib25fY2xpY2siLCJyZXN1bHQiLCJyZWFzb24iLCJzaW1wbGUkMCIsImJhcmVib25lc19idXR0b25fbGlrZSIsImNoZWNrZWQiLCJoaWRlX25hdGl2ZV9pbnB1dHMiLCJpbXBsJDMiLCJuYW1lIiwic3R5bGUiLCJleHRyYV9hdHRycyQwIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJvZl92YWx1ZXMkMiIsIkUiLCJvZl92YWx1ZXNfaG9yaXpvbnRhbCIsImFjY2VwdF9hdHRycyIsImFjY2VwdHMiLCJzJDAiLCJsaXN0IiwiYWNjZXB0IiwiZmlsZXMiLCJzaW5nbGUiLCJmaWxlX2xpc3QiLCJmaWxlIiwiZW1wdHkiLCJpc19lbXB0eSIsInQiLCJ6ZXJvX2JpdCIsImsiLCJtIiwibWVtIiwiaiIsInIiLCJsIiwibCQwIiwiZmluZCIsIngiLCJmaW5kX29wdCIsImZpbmRfZmlyc3Rfb3B0IiwiZiIsInJ2IiwicmsiLCJsdiIsImxrIiwidiQwIiwiZmluZF9maXJzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX2xhc3QiLCJtYXNrIiwicCIsImpvaW4iLCJ0MSIsInAxIiwidDAiLCJwMCIsIm1hdGNoX3ByZWZpeCIsImFkZCIsImlucyIsInNpbmdsZXRvbiIsInYiLCJicmFuY2giLCJ0JDAiLCJyZW1vdmUiLCJybXYiLCJjYXJkaW5hbCIsIml0ZXIiLCJtYXAiLCJtYXBpIiwiZm9sZCIsInMiLCJhY2N1IiwicyQwIiwiYWNjdSQwIiwiYWNjdSQxIiwiZm9yX2FsbCIsImV4aXN0cyIsImZpbHRlciIsInByIiwiZmlsdGVyX21hcCIsInBhcnRpdGlvbiIsInBhcnQiLCJhY2MkMCIsImNob29zZSIsImNob29zZV9vcHQiLCJzcGxpdCIsImNvbGwiLCJiIiwibWluX2JpbmRpbmciLCJicyIsImtzIiwiYnQiLCJrdCIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwiYmluZGluZ3MiLCJhY2MiLCJjb21wYXJlIiwiY21wIiwidDIiLCJjb21wYXJlX2F1eCIsInQxJDAiLCJ0MiQwIiwieDEiLCJrMSIsIngyIiwiazIiLCJjIiwicjEiLCJsMSIsIm0xIiwicjIiLCJsMiIsIm0yIiwicDIiLCJjJDAiLCJjJDEiLCJjJDIiLCJlcXVhbCIsImVxIiwiZXF1YWxfYXV4IiwibWVyZ2UiLCJhZGQkMCIsInYxIiwidjIiLCJ1cGRhdGUiLCJ6IiwidW5zaWduZWRfbHQiLCJuIiwidCQyIiwiczEiLCJzMCIsImskMCIsInEiLCJ0JDEiLCJ1bmlvbiIsInRvX3NlcSIsInByZXBlbmRfc2VxIiwibSQwIiwicyQxIiwidG9fc2VxX2Zyb20iLCJrZXkiLCJhZGRfc2VxIiwib2Zfc2VxIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwicmVhZF9qdW5rIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsImZpZWxkcyQwIiwicmVzdCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJzeW1ib2wiLCJjbHNzIiwiZGl2X2MiLCJjbHMiLCJzcGFuX2MiLCJkaXZfZW1wdHkiLCJkaXZfaWYiLCJwIiwiYXRzIiwibnMiLCJzcGFuX2lmIiwidW5sZXNzIiwiYSIsInN3YXAiLCJiIiwibWFwMiIsImYiLCJtYXAzIiwiYyIsInByaW50X3RpbWVfcHJlZml4IiwibmFtZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsInByaW50X3RpbWUiLCJwcmludF90aW1lcyIsInRpbWVzIiwibGFzdCIsImdvIiwicHJldmlvdXNfdGltZSIsInByZXZpb3VzX3RpbWUkMCIsInRpbWVzJDAiLCJ0aW1lcyQxIiwicHJldmlvdXNfdGltZSQxIiwibWVhc3VyZV90aW1lIiwibWVhc3VyZSIsIngiLCJjYXQiLCJyZW1vdmVfbnRoIiwibiIsInQiLCJyZW1vdmVfZmlyc3QiLCJyZW1vdmVfbGFzdCIsImluc2VydF9udGgiLCJzIiwic3BsaXRfbnRoIiwidG9fbGlzdCIsImkiLCJyZXBlYXQiLCJhYmJyZXZpYXRlIiwibWF4X2xlbiIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInppcCIsInkiLCJzZXF1ZW5jZSIsIm1zIiwiYWNjIiwibXMkMCIsIm0iLCJvZl9hXzAwMSIsIm9mX2FfMDAzIiwieGYiLCJtYXRjaCIsImV4biQwIiwiZXhuIiwicyQwIiwiZ2V0IiwicHV0IiwibW9kaWZ5IiwibW9kaWZ5JDAiLCJnZXQkMCIsInB1dCQwIiwibW9kaWZ5JDEiLCJtb2RpZnkkMiIsImVycm9yX3NvdXJjZV8wMDUiLCJ0cF9sb2MiLCJsZXQkMCIsInJlc3VsdCIsImxldCQxIiwicHBfcGVyc2lzdGVudCIsInBvbHlfYSIsInBvbHlfYiIsImZtdCIsImEwIiwiYTAkMCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfcGVyc2lzdGVudCIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwib2ZfYSIsIm9mX2IiLCJ5b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsIm9mX3BlcnNpc3RlbnQiLCJwcCIsInRfb2ZfeW9qc29uIiwieW9qc29uX29mX3QiLCJtYXBfZnN0IiwibWFwX3NuZCIsImlmX25vbmUiLCJvIiwiZ2V0X29yX2ZhaWwiLCJnZXRfb3JfcmFpc2UiLCJlIiwibzEiLCJvMiIsInYyIiwidjEiLCJzb21lX2lmIiwiY29uZCIsInVuemlwIiwibCIsInhzIiwiYW5kX3RoZW4iLCJlcnJvcl9zb3VyY2VfMDA4IiwicHBfdiIsImsiLCJ2IiwiYmluZGluZ19vZl9zZXhwIiwib2Zfdl8wMDEiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInNleHBfb2ZfYmluZGluZyIsIm9mX3ZfMDA5IiwiYXJnMV8wMTEiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwic2V4cF9vZl92Iiwidl9vZl9zZXhwIiwic2V4cCIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInYxJDAiLCJ5b2pzb25fb2ZfYmluZGluZyIsInlvanNvbl9vZl92Iiwidl9vZl95b2pzb24iLCJyZXZfaWYiLCJkZWR1cCIsImRlZHVwZWQiLCJkZWR1cF9mIiwiYXJlX2R1cGxpY2F0ZXMiLCJncm91cF9ieSIsImtleSIsImdyb3VwZWQiLCJrX2dyb3VwIiwicmFuZ2UiLCJvcHQiLCJoaSIsInN0aCIsImxvIiwibWtfZnJhbWUiLCJpbnZhbGlkX2FyZyIsInhzJDAiLCJzdWZmaXgiLCJwcmVmaXgiLCJzcGxpdCIsInBvc3QiLCJ4JDAiLCJwcmUiLCJzcGxpdF9mcmFtZSIsInhzJDEiLCJzdWJqIiwib2ZfZnJhbWUiLCJzdWJqZWN0IiwiY29tYmluZV9vcHQiLCJ5cyIsInh5cyIsImlzX2VtcHR5IiwiZmxhdF9tYXAiLCJqb2luIiwic2VwIiwiaGRfb3B0IiwiaGQiLCJudGhfb3B0IiwibiQwIiwidGwiLCJuJDEiLCJzcGxpdF9uX29wdCIsInNwbGl0X24iLCJyIiwic3BsaXRfc3VibGlzdF9vcHQiLCJqIiwicmlnaHQiLCJsZWZ0IiwibWlkIiwibGVmdCQwIiwic3BsaXRfc3VibGlzdCIsInN1Ymxpc3QiLCJzcGxpdF9udGhfb3B0IiwicHV0X250aCIsInRsJDAiLCJ0bCQxIiwibWFwX250aCIsImhkJDAiLCJzcGxpdF9sYXN0X29wdCIsImxlYWRpbmciLCJzcGxpdF9sYXN0IiwibGFzdF9vcHQiLCJsZW5ndGgiLCJzcGxpdF9maXJzdF9vcHQiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfZmlyc3QiLCJmb2xkX2xlZnRfbWFwIiwic3RhcnQiLCJuZXdfYWNjIiwiZmluYWwkMCIsInRha2Vfd2hpbGUiLCJyZXN0IiwidGFrZW4iLCJwcm9kdWN0Iiwib3JkZXJlZF9wYWlycyIsIm5laWdoYm9ycyIsIngyIiwieDEiLCJtYXBfYWx0IiwiZngiLCJmeSIsImludGVybGVhdmUiLCJwX2luZGljZXMiLCJpZHhzIiwic3BsaXRzIiwiZWxlbV9zcGxpdHMiLCJyb3RhdGUiLCJzaW5nbGVfZWxlbSIsImNvdW50X3ByZWQiLCJmb3JfYWxsMl9vcHQiLCJtYXAyX29wdCIsInJlcGxpY2F0ZSIsImMkMCIsImMkMSIsIm9wdF96aXAiLCJ5cyQwIiwiemlwX2RlZmF1bHRzIiwiZGVmYXVsdF94IiwiZGVmYXVsdF95IiwieXMkMSIsInkkMCIsInVwZGF0ZV9udGgiLCJkaXNqb2ludF9wYWlycyIsImZpbmRpX29wdCIsInBhaXIiLCJpbml0X2ZvbGQiLCJlbHQiLCJhY2MkMCIsInJldl94cyIsImFzc29jX2VyciIsImVyciIsInVwZGF0ZV9hc3NvYyIsInYkMCIsImskMCIsInNwbGl0X2F0X25vbmVzIiwiYWNjcyIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsInhzJDIiLCJhY2MkNCIsImZpcnN0X2FuZF9sYXN0IiwieHNzIiwicmV2X2NvbmNhdCIsImxzIiwicnMiLCJscyQwIiwicnMkMCIsInJzJDEiLCJ6cyIsInpzJDAiLCJ6IiwibHN0IiwidGFpbCIsImJzIiwiYXMiLCJjcm9zcyIsImludGVyc3BlcnNlIiwiZmxhdF9pbnRlcnNwZXJzZSIsInhzcyQwIiwibWFwX2xhc3Rfb25seSIsInNwbGl0X2xhc3QkMCIsIm1pbmltdW0iLCJsb29wIiwiYmVzdCIsImJlc3RfZiIsImJlc3QkMCIsImJlc3RfZiQwIiwiYmVzdCQxIiwiYmVzdF9mJDEiLCJlcnJvcl9zb3VyY2VfMDAzIiwic2hvdyIsInNleHBfMDA0IiwidG9nZ2xlIiwic2lnbiIsImNob29zZSIsImQiLCJta19vcHQiLCJtayIsImZpbmRfbWsiLCJvcmllbnQiLCJwcmVmaXgkMCIsImFwcGVuZCIsInN1ZmZpeCQwIiwibnVtX2RpZ2l0cyIsIm1vZHVsbyIsImlwb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpcG93X2l0ZXIiLCJiJDAiLCJlJDAiLCJyJDAiLCJlJDEiLCJiJDEiLCJyJDEiLCJlJDIiLCJiJDIiLCJzaW5nbGV0b24iLCJkaXNqX3VuaW9uIiwibSQwIiwicG9seV9sIiwicG9seV9yIiwib2ZfbF8wMDEiLCJvZl9yXzAwMiIsIm9mX2xfMDE5Iiwib2Zfcl8wMjAiLCJvZl9sIiwib2ZfciIsImlzX0wiLCJpc19SIiwiZ2V0X0wiLCJnZXRfUiIsImVycm9yX3NvdXJjZV8wMDkiLCJhMSIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9hXzAxMCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJmaXJzdF9hIiwibGFzdF9hIiwicmV2IiwicmV2X2EiLCJyZXZfYiIsImNvbnMiLCJzbm9jIiwiZ2V0X2FzIiwiZ2V0X2JzIiwiYWJhX3RyaXBsZXMiLCJhYmEiLCJhMiIsImJhYl90cmlwbGVzIiwiYjEiLCJiMiIsImJhYl90cmlwbGVzJDAiLCJtYXBfYSIsImZfYSIsIm1hcF9iIiwiZl9iIiwibWFwX2FiYXMiLCJmX2FiYSIsIm1hcF9oZCIsInRyaW0iLCJhcyQwIiwiYXMkMSIsImNzIiwiZm9sZF9sZWZ0IiwiZl9iYSIsIm1hcHBlZCIsImZvbGRfcmlnaHQiLCJmX2FiIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImR1bW15IiwiaW5leGlzdGFudCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm9sIiwiZW9sIiwiYm93IiwiZW93Iiwid29yZCIsIm5vdF9ib3VuZGFyeSIsImJvcyIsImVvcyIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJlbmNsb3NlZF9zZXQkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsImVycm9yX3NvdXJjZV8wMDgiLCJ0cF9sb2MiLCJzZXhwX29mX3QiLCJ0IiwidF9vZl9zZXhwIiwicyIsInlvanNvbl9vZl90IiwidF9vZl95b2pzb24iLCJtayIsImNvbXBhcmUiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmciLCJwcCIsImYiLCJpZCIsInNob3ciLCJiaW5kaW5nX29mX3NleHAiLCJvZl92XzAwMSIsInNleHBfMDA3IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInJlczBfMDA1IiwicmVzMV8wMDYiLCJzZXhwX29mX2JpbmRpbmciLCJvZl92XzAwOSIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYmluZGluZ19vZl95b2pzb24iLCJvZl92IiwieW9qc29uIiwidjEiLCJ2MCIsInYwJDAiLCJ2MSQwIiwieW9qc29uX29mX2JpbmRpbmciLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdiIsIm1hcCIsInRfb2Zfc2V4cCQwIiwidl9vZl9zZXhwIiwic2V4cCIsInlvanNvbl9vZl90JDAiLCJ5b2pzb25fb2ZfdiIsInRfb2ZfeW9qc29uJDAiLCJ2X29mX3lvanNvbiIsImpzb24iLCJwcCQwIiwicHBfdiIsImZtdCIsInYiLCJrIiwiaW52YWxpZCIsIm51bGxhcnlfYXBfZmxhZyIsImlzX251bGxhcnlfYXBfZmxhZyIsImlkcyIsImluaXQiLCJycmVmIiwiYWRkJDAiLCJhIiwiciIsImdldCIsImdldF9vcHQiLCJzZXQiLCJtZXJnZSQwIiwiaWQkMCIsImVycm9yX3NvdXJjZV8wMDMiLCJlcnJvcl9zb3VyY2VfMDA3IiwidHBfbG9jJDAiLCJlcnJvcl9zb3VyY2VfMDExIiwidHBfbG9jJDEiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jJDIiLCJlcnJvcl9zb3VyY2VfMDE5IiwidHBfbG9jJDMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidHBfbG9jJDQiLCJlcnJvcl9zb3VyY2VfMDI3IiwidHBfbG9jJDUiLCJlcnJvcl9zb3VyY2VfMDMxIiwidHBfbG9jJDYiLCJlcnJvcl9zb3VyY2VfMDU2IiwidHBfbG9jJDciLCJlcnJvcl9zb3VyY2VfMDg4IiwidHBfbG9jJDgiLCJwcF9vcF91bl9ib29sIiwib3BfdW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX29wX3VuX2Jvb2wiLCJvcF91bl9ib29sX29mX3lvanNvbiIsInlvanNvbl9vZl9vcF91bl9ib29sIiwicHBfb3BfdW5fbWV0YSIsIm9wX3VuX21ldGFfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9vcF91bl9tZXRhIiwib3BfdW5fbWV0YV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5fbWV0YSIsInBwX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl9zZXhwIiwic2V4cF8wMTIiLCJzZXhwX29mX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5faW50IiwicHBfb3BfYmluX2Jvb2wiLCJvcF9iaW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX29wX2Jpbl9ib29sIiwib3BfYmluX2Jvb2xfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9ib29sIiwicHBfb3BfYmluX2ludCIsIm9wX2Jpbl9pbnRfb2Zfc2V4cCIsInNleHBfMDIwIiwic2V4cF9vZl9vcF9iaW5faW50Iiwib3BfYmluX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2ludCIsInBwX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl9zZXhwIiwic2V4cF8wMjQiLCJzZXhwX29mX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2Zsb2F0IiwicHBfb3BfYmluX3N0cmluZyIsIm9wX2Jpbl9zdHJpbmdfb2Zfc2V4cCIsInNleHBfMDI4Iiwic2V4cF9vZl9vcF9iaW5fc3RyaW5nIiwib3BfYmluX3N0cmluZ19vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX3N0cmluZyIsInBwX29wX3VuIiwic2hvd19vcF91biIsIl8yIiwiXzEiLCJfMCIsImEwIiwiYTAkMCIsImEwJDEiLCJ4Iiwib3BfdW5fb2Zfc2V4cCIsInNleHBfMDMzIiwidGFnXzAzNCIsInNleHBfYXJnc18wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3Iiwic2V4cF9hcmdzXzA0MCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfb2Zfb3BfdW4iLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwicmVzMF8wNTMiLCJvcF91bl9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInlvanNvbl9vZl9vcF91biIsInBwX29wX2JpbiIsInNob3dfb3BfYmluIiwiXzMiLCJfMiQwIiwiXzEkMCIsIl8wJDAiLCJhMCQyIiwib3BfYmluX29mX3NleHAiLCJzZXhwXzA1OCIsInRhZ18wNTkiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wNzYiLCJyZXMwXzA3NyIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzA2NSIsImFyZzBfMDY2IiwicmVzMF8wNjciLCJzZXhwX2FyZ3NfMDcwIiwiYXJnMF8wNzEiLCJyZXMwXzA3MiIsInNleHBfb2Zfb3BfYmluIiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJhcmcwXzA4MiIsInJlczBfMDgzIiwiYXJnMF8wODQiLCJyZXMwXzA4NSIsIm9wX2Jpbl9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fb2Zfb3BfYmluIiwicHBfYXBfZGlyZWN0aW9uIiwic2hvd19hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2Zfc2V4cCIsInNleHBfMDg5Iiwic2V4cF9vZl9hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FwX2RpcmVjdGlvbiIsInNob3dfb3BfdW5fbWV0YSIsInNob3dfb3BfdW5fYm9vbCIsInNob3dfb3BfdW5faW50Iiwic2hvd191bm9wIiwib3AiLCJvcCQwIiwib3AkMSIsInNob3dfb3BfYmluX2Jvb2wiLCJzaG93X29wX2Jpbl9pbnQiLCJzaG93X29wX2Jpbl9mbG9hdCIsInNob3dfb3BfYmluX3N0cmluZyIsInNob3dfYmlub3AiLCJvcCQyIiwiYm9vbF9vcF90b19zdHJpbmciLCJpbnRfb3BfdG9fc3RyaW5nIiwiZmxvYXRfb3BfdG9fc3RyaW5nIiwic3RyaW5nX29wX3RvX3N0cmluZyIsImJpbl9vcF90b19zdHJpbmciLCJvcCQzIiwibWF4IiwidW5xdW90ZSIsImNhc3QiLCJhcCIsIm5lZyIsInBvd2VyIiwibXVsdCIsIm5vdCIsInBsdXMiLCJjb25zIiwiY29uY2F0IiwiZXFzIiwiYW5kIiwib3IiLCJhbm4iLCJpZiQwIiwiZnVuIiwicHJvZCIsInNlbWkiLCJsZXQkMCIsInJ1bGVfYXJyIiwicnVsZV9wcmUiLCJydWxlX3NlcCIsImNhc2UkMCIsIm1pbiIsInAxIiwicDIiLCJhc3NvY2lhdGl2aXR5X21hcCIsImFzc29jaWF0aXZpdHkiLCJwIiwib2ZfYmluX29wIiwiYWxsIiwicm9vdCIsImNvbnNpc3RlbnQiLCJzJDAiLCJ0b19zdHJpbmdfdmVyYm9zZSIsImVycm9yX3NvdXJjZV8wMjYiLCJzZXhwXzAwNSIsInRhZ18wMDYiLCJzZXhwX2FyZ3NfMDA3IiwiYXJnMF8wMDgiLCJyZXMwXzAwOSIsInJlczBfMDExIiwiY29uY2F2ZSIsInAkMCIsInAkMSIsImZpdHMiLCJsIiwiZml0dGluZyIsImZsaXAiLCJhYnNvbHV0ZSIsImQiLCJyZWxhdGl2ZSIsIm5pYiIsInNpZGUiLCJzaG93JDAiLCJzZXhwXzAxMyIsImZpZWxkX3NleHBzXzAxNCIsInNoYXBlXzAxNSIsInNvcnRfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJpdGVyXzAyNyIsInNleHBfMDEzJDAiLCJmaWVsZF9zZXhwc18wMjMiLCJmaWVsZF9uYW1lXzAyMSIsInRhaWxfMDI4IiwiZmllbGRfc2V4cF8wMjIkMiIsImZpZWxkX3NleHBfMDIyIiwieF8wMjkiLCJmaWVsZF9zZXhwXzAyMiQwIiwiZnZhbHVlXzAyNCIsImZpZWxkX3NleHBfMDIyJDEiLCJmdmFsdWVfMDI1Iiwic29ydF8wMTgiLCJzaGFwZV8wMTYiLCJzb3J0XzAzMyIsInNoYXBlXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwiZmllbGRfeW9qc29ucyIsInNoYXBlX2ZpZWxkIiwic29ydF9maWVsZCIsImR1cGxpY2F0ZXMiLCJleHRyYSIsIml0ZXIiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwic29ydF92YWx1ZSIsInNoYXBlX3ZhbHVlIiwidl9zb3J0Iiwidl9zaGFwZSIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsInNoYXBlIiwibiIsImZpdHMkMCIsImZpdHRpbmckMCIsImZsaXAkMCIsInBwX3NoYXBlIiwic2hvd19zaGFwZSIsInNoYXBlX29mX3NleHAiLCJzZXhwX29mX3NoYXBlIiwic2hhcGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3NoYXBlIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJpZF8wMDgiLCJzaGFwZV8wMTAiLCJkdXBsaWNhdGVzXzAxMiIsImV4dHJhXzAxMyIsIml0ZXJfMDIwIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJzaGFwZV8wMTEiLCJpZF8wMDkiLCJzaGFwZV8wMjYiLCJpZF8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsImlkX2ZpZWxkIiwiaWRfdmFsdWUiLCJ2X2lkIiwiZyIsInNoYXBlcyIsIm1rX2ZpdHNfc2hhcGUiLCJmaXRzX3NoYXBlIiwiZyQwIiwibWVyZ2UiLCJncyIsInRsIiwiaGQiLCJmdCIsImxlbmd0aCIsInJtX250aCIsInJtX2xhc3QiLCJybV9maXJzdCIsInNwbGl0X250aCIsImluc2VydF9udGgiLCJzZXAiLCJ4XzAwMiIsInhfMDAzIiwicmV2IiwiaGRfdGwiLCJsYmwiLCJhMSIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwiYXJnMV8wMDkiLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfc2hhcGVzIiwic2hvd19zaGFwZXMiLCJvZl9ob2xlIiwic29ydCIsImVycm9yX3NvdXJjZV8wMTgiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsIm91dF8wMDQiLCJpbl8wMDYiLCJuaWJzXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwiaXRlcl8wMTkiLCJzZXhwXzAwMiQwIiwiZmllbGRfbmFtZV8wMTIiLCJ0YWlsXzAyMCIsImZpZWxkX3NleHBfMDEzJDMiLCJmaWVsZF9zZXhwXzAxMyIsInhfMDIxIiwiZmllbGRfc2V4cF8wMTMkMCIsImZpZWxkX3NleHBfMDEzJDEiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMiIsImZ2YWx1ZV8wMTYiLCJuaWJzXzAwOSIsImluXzAwNyIsIm91dF8wMDUiLCJuaWJzXzAyNyIsImluXzAyNSIsIm91dF8wMjMiLCJhcmdfMDI4IiwiYm5kc18wMjIiLCJhcmdfMDI2IiwiYm5kc18wMjIkMCIsImFyZ18wMjQiLCJibmRzXzAyMiQxIiwib3V0X2ZpZWxkIiwiaW5fZmllbGQiLCJuaWJzX2ZpZWxkIiwiZnZhbHVlJDEiLCJuaWJzX3ZhbHVlIiwiaW5fdmFsdWUiLCJvdXRfdmFsdWUiLCJ2X25pYnMiLCJ2X2luIiwidl9vdXQiLCJhcmckMSIsImJuZHMkMSIsImZsaXBfbmlicyIsIm0iLCJta19vcCIsIm91dCIsImluJDAiLCJta19wcmUiLCJta19wb3N0IiwibWtfYmluIiwibCQwIiwiciQwIiwibWtfcHJlJDAiLCJzb3J0X2wiLCJzb3J0X3IiLCJta19wb3N0JDAiLCJta19iaW4kMCIsIm5pYnMiLCJpbmRleCIsIm1vbGQiLCJpIiwibmliX3NoYXBlcyIsIm5pYl9yIiwibmliX2wiLCJvZl9ncm91dCIsIm4kMCIsIm9mX3NlY29uZGFyeSIsImNvbnNpc3RlbnRfc2hhcGVzIiwibXMiLCJpc19pbmZpeF9vcCIsImNoZXZyb24iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxNCIsImVycm9yX3NvdXJjZV8wMzYiLCJlcnJvcl9zb3VyY2VfMDQ5Iiwic3MiLCJpaSIsImlzIiwiZHMiLCJzcGFjZSIsImxpbmVicmVhayIsImNvbW1lbnRfcmVnZXhwIiwic3RyaW5nX2RlbGltIiwia2V5d29yZHMiLCJyZXNlcnZlZF9rZXl3b3JkcyIsImJvb2xzIiwiYmFzZV90eXBzIiwid2lsZCIsImxpc3Rfc3RhcnQiLCJsaXN0X2VuZCIsInR1cGxlX3N0YXJ0IiwidHVwbGVfZW5kIiwiZXhwbGljaXRfaG9sZSIsInJlZ2V4cCIsInBwX2xhYmVsIiwic2hvd19sYWJlbCIsImxhYmVsX29mX3NleHAiLCJzZXhwX29mX2xhYmVsIiwibGFiZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX2xhYmVsIiwicHBfZXhwYW5zaW9uX3RpbWUiLCJzaG93X2V4cGFuc2lvbl90aW1lIiwiZXhwYW5zaW9uX3RpbWVfb2Zfc2V4cCIsInNleHBfb2ZfZXhwYW5zaW9uX3RpbWUiLCJleHBhbnNpb25fdGltZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uX3RpbWUiLCJwcF9leHBhbnNpb24iLCJzaG93X2V4cGFuc2lvbiIsImV4cGFuc2lvbl9vZl9zZXhwIiwiYXJnMV8wMTAiLCJhcmcwXzAwOSIsInJlczFfMDEyIiwic2V4cF9vZl9leHBhbnNpb24iLCJhcmcxXzAxNiIsImFyZzBfMDE1IiwicmVzMF8wMTciLCJyZXMxXzAxOCIsImV4cGFuc2lvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uIiwiXzAkMSIsImZpZWxkX3NleHBzXzAyMSIsImxhYmVsXzAyMiIsImV4cGFuc2lvbl8wMjQiLCJtb2xkXzAyNiIsImR1cGxpY2F0ZXNfMDI4IiwiZXh0cmFfMDI5IiwiaXRlcl8wMzciLCJzZXhwXzAyMCQwIiwiZmllbGRfc2V4cHNfMDMyIiwiZmllbGRfbmFtZV8wMzAiLCJ0YWlsXzAzOCIsImZpZWxkX3NleHBfMDMxJDMiLCJmaWVsZF9zZXhwXzAzMSIsInhfMDM5IiwiZmllbGRfc2V4cF8wMzEkMCIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQxIiwiZnZhbHVlXzAzNSIsImZpZWxkX3NleHBfMDMxJDIiLCJmdmFsdWVfMDM0IiwibW9sZF8wMjciLCJleHBhbnNpb25fMDI1IiwibGFiZWxfMDIzIiwibW9sZF8wNDUiLCJleHBhbnNpb25fMDQzIiwibGFiZWxfMDQxIiwiYXJnXzA0NiIsImJuZHNfMDQwIiwiYXJnXzA0NCIsImJuZHNfMDQwJDAiLCJhcmdfMDQyIiwiYm5kc18wNDAkMSIsImxhYmVsX2ZpZWxkIiwiZXhwYW5zaW9uX2ZpZWxkIiwibW9sZF9maWVsZCIsIm1vbGRfdmFsdWUiLCJleHBhbnNpb25fdmFsdWUiLCJsYWJlbF92YWx1ZSIsInZfbW9sZCIsInZfZXhwYW5zaW9uIiwidl9sYWJlbCIsInBwX2JhZF90b2tlbl9jbHMiLCJzaG93X2JhZF90b2tlbl9jbHMiLCJiYWRfdG9rZW5fY2xzX29mX3NleHAiLCJzZXhwXzA1MCIsInNleHBfb2ZfYmFkX3Rva2VuX2NscyIsImJhZF90b2tlbl9jbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2JhZF90b2tlbl9jbHMiLCJleHBhbnNpb24iLCJsYWJlbCIsIm1rX2luZml4IiwicHJlYyIsIm1rX251bF9pbmZpeCIsImlzX2NvbW1lbnQiLCJpc19jb21tZW50X2RlbGltIiwiaXNfc2Vjb25kYXJ5IiwiaXNfc3RyaW5nIiwiZW1wdHlfc3RyaW5nIiwiaXNfc3RyaW5nX2RlbGltIiwic3RyaXBfcXVvdGVzIiwic3RyaW5nX3F1b3RlIiwiaXNfa2V5d29yZCIsImlzX3Jlc2VydmVkX2tleXdvcmQiLCJpc19wb3RlbnRpYWxfb3BlcmFuZCIsImlzX3BvdGVudGlhbF9vcGVyYXRvciIsImlzX3BvdGVudGlhbF90b2tlbiIsImlzX2FyYml0YXJ5X2ludCIsImlzX2FyYml0YXJ5X2Zsb2F0IiwiaXNfaW50Iiwic3RyIiwiaXNfYmFkX2ludCIsImlzX2Zsb2F0IiwiaXNfYmFkX2Zsb2F0IiwiaXNfYm9vbCIsImlzX3ZhciIsImlzX2NhcGl0YWxpemVkX25hbWUiLCJpc19iYXNlX3R5cCIsImlzX3R5cF92YXIiLCJpc193aWxkIiwibGlzdGxpdF9sYmwiLCJlbXB0eV9saXN0IiwiaXNfZW1wdHlfbGlzdCIsInR1cGxlX2xibCIsImVtcHR5X3R1cGxlIiwiaXNfZW1wdHlfdHVwbGUiLCJkdW9zcGxpdHMiLCJkdW9tZXJnZXMiLCJjb25zdF9tb25vX2RlbGltcyIsImlzX2V4cGxpY2l0X2hvbGUiLCJiYWRfdG9rZW5fY2xzIiwiYXRvbWljX2Zvcm1zIiwiZm9ybXMiLCJuYW1lIiwiYWNjIiwiZGVsaW1zIiwiYXRvbWljX21vbGRzIiwibW9sZHMiLCJ0ZXN0IiwiaXNfYXRvbWljIiwiaXNfZGVsaW0iLCJpc192YWxpZF90b2tlbiIsIm1rX2F0b21pYyIsImVycm9yX3NvdXJjZV8wMzciLCJwcF9jbHMiLCJzaG93X2NscyIsImNsc19vZl9zZXhwIiwic2V4cF9vZl9jbHMiLCJjbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2NscyIsInBwX3NlY29uZGFyeV9jb250ZW50Iiwic2hvd19zZWNvbmRhcnlfY29udGVudCIsInNlY29uZGFyeV9jb250ZW50X29mX3NleHAiLCJzZXhwXzAwOSIsInRhZ18wMTAiLCJzZXhwX2FyZ3NfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNleHBfYXJnc18wMTYiLCJhcmcwXzAxNyIsInJlczBfMDE4Iiwic2V4cF9vZl9zZWNvbmRhcnlfY29udGVudCIsImFyZzBfMDE5IiwicmVzMF8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2Vjb25kYXJ5X2NvbnRlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlY29uZGFyeV9jb250ZW50IiwiZmllbGRfc2V4cHNfMDI1IiwiaWRfMDI2IiwiY29udGVudF8wMjgiLCJkdXBsaWNhdGVzXzAzMCIsImV4dHJhXzAzMSIsIml0ZXJfMDM4Iiwic2V4cF8wMjQkMCIsImZpZWxkX3NleHBzXzAzNCIsImZpZWxkX25hbWVfMDMyIiwidGFpbF8wMzkiLCJmaWVsZF9zZXhwXzAzMyQyIiwiZmllbGRfc2V4cF8wMzMiLCJ4XzA0MCIsImZpZWxkX3NleHBfMDMzJDAiLCJmdmFsdWVfMDM2IiwiZmllbGRfc2V4cF8wMzMkMSIsImNvbnRlbnRfMDI5IiwiaWRfMDI3IiwiY29udGVudF8wNDQiLCJpZF8wNDIiLCJhcmdfMDQ1IiwiYm5kc18wNDEiLCJhcmdfMDQzIiwiYm5kc18wNDEkMCIsImNvbnRlbnRfZmllbGQiLCJjb250ZW50X3ZhbHVlIiwidl9jb250ZW50IiwiY2xzX29mIiwibWtfc3BhY2UiLCJta19uZXdsaW5lIiwiY29uc3RydWN0X2NvbW1lbnQiLCJjb250ZW50IiwiaXNfc3BhY2UiLCJ3IiwiaXNfbGluZWJyZWFrIiwiY29udGVudF9pc19jb21tZW50IiwiZ2V0X3N0cmluZyIsImVycm9yX3NvdXJjZV8wMDUiLCJlcnJvcl9zb3VyY2VfMDQ1IiwicHBfc2VnbWVudCIsInNob3dfc2VnbWVudCIsInBwX3BpZWNlIiwic2hvd19waWVjZSIsInBwX3RpbGUiLCJzaG93X3RpbGUiLCJzZWdtZW50X29mX3NleHAiLCJwaWVjZV9vZl9zZXhwIiwidGlsZV9vZl9zZXhwIiwidGFnXzAwOCIsInNleHBfYXJnc18wMDkiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfYXJnc18wMTQiLCJyZXMwXzAxNiIsInNleHBfMDIzIiwiZmllbGRfc2V4cHNfMDI0IiwiaWRfMDI1IiwibGFiZWxfMDI3IiwibW9sZF8wMjkiLCJzaGFyZHNfMDMxIiwiY2hpbGRyZW5fMDMzIiwiZHVwbGljYXRlc18wMzUiLCJleHRyYV8wMzYiLCJpdGVyXzA0NiIsInNleHBfMDIzJDAiLCJmaWVsZF9zZXhwc18wMzkiLCJmaWVsZF9uYW1lXzAzNyIsInRhaWxfMDQ3IiwiZmllbGRfc2V4cF8wMzgkNSIsImZpZWxkX3NleHBfMDM4IiwieF8wNDgiLCJmaWVsZF9zZXhwXzAzOCQwIiwiZnZhbHVlXzA0MSIsImZpZWxkX3NleHBfMDM4JDEiLCJmdmFsdWVfMDQyIiwiZmllbGRfc2V4cF8wMzgkMiIsImZ2YWx1ZV8wNDMiLCJmaWVsZF9zZXhwXzAzOCQzIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDM4JDQiLCJmdmFsdWVfMDQwIiwiY2hpbGRyZW5fMDM0Iiwic2hhcmRzXzAzMiIsIm1vbGRfMDMwIiwibGFiZWxfMDI4Iiwic2V4cF9vZl9zZWdtZW50IiwieF8wNDkiLCJzZXhwX29mX3BpZWNlIiwic2V4cF9vZl90aWxlIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsImNoaWxkcmVuXzA2NSIsInNoYXJkc18wNjMiLCJtb2xkXzA2MSIsImxhYmVsXzA1OSIsImlkXzA1NyIsImFyZ18wNjYiLCJibmRzXzA1NiIsImFyZ18wNjQiLCJibmRzXzA1NiQwIiwiYXJnXzA2MiIsImJuZHNfMDU2JDEiLCJhcmdfMDYwIiwiYm5kc18wNTYkMiIsImFyZ18wNTgiLCJibmRzXzA1NiQzIiwic2VnbWVudF9vZl95b2pzb24iLCJwaWVjZV9vZl95b2pzb24iLCJ0aWxlX29mX3lvanNvbiIsInNoYXJkc19maWVsZCIsImNoaWxkcmVuX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImNoaWxkcmVuX3ZhbHVlIiwic2hhcmRzX3ZhbHVlIiwieW9qc29uX29mX3NlZ21lbnQiLCJ5b2pzb25fb2ZfcGllY2UiLCJ5b2pzb25fb2ZfdGlsZSIsInZfY2hpbGRyZW4iLCJ2X3NoYXJkcyIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJta19zZWNvbmRhcnkiLCJzZXhwX2FyZ3NfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsInNfY2xlYXIiLCJzX3RvdWNoIiwic190b3VjaGVkIiwicHBfZXhwYW5zaW9ucyIsInNob3dfZXhwYW5zaW9ucyIsImV4cGFuc2lvbnNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9leHBhbnNpb25zIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJyZXMxXzAxNyIsInJlczFfMDIxIiwiZXhwYW5zaW9uc19vZl95b2pzb24iLCJ2MSQxIiwidjEkMiIsInlvanNvbl9vZl9leHBhbnNpb25zIiwib2xkX21vbGRzIiwiZm9ybXNfYXNzb2MiLCJtb2xkcyQwIiwiaGQkMCIsImRlbGF5ZWRfZXhwYW5zaW9ucyIsImluc3RhbnRfZXhwYW5zaW9ucyIsImRlbGF5ZWRfZXhwYW5zaW9uIiwiaW5zdGFudF9leHBhbnNpb24iLCJpc19kZWxheWVkIiwia3ciLCJhbGxvd19tZXJnZSIsImFsbG93X2FwcGVuZF9yaWdodCIsImNoYXIkMCIsImFsbG93X2FwcGVuZF9sZWZ0IiwiYWxsb3dfaW5zZXJ0aW9uIiwibmV3X3QiLCJpc19jb21wbGV0ZSIsImxfc2hhcmQiLCJyX3NoYXJkIiwiaGFzX2VuZCIsImhhc19lbmRzIiwidG9fcGllY2UiLCJzb3J0ZWRfY2hpbGRyZW4iLCJjaGlsZHJlbiIsInNoYXJkcyIsImNoaWxkIiwiY29udGFpbmVkX2NoaWxkcmVuIiwic3BsaXRfc2hhcmRzIiwiZGlzYXNzZW1ibGUiLCJzaGFyZHMkMCIsImRpc2ludGVncmF0ZSIsInJlYXNzZW1ibGUiLCJtYXRjaCIsInBvcF9sIiwidGlsZSIsInBvcF9yIiwic2Vjb25kYXJ5IiwiZ3JvdXQiLCJmX3ciLCJmX2ciLCJmX3QiLCJuaWJfc29ydHMiLCJpc19ncm91dCIsImlzX3RpbGUiLCJtb25vdGlsZSIsImdldF9vdXRzaWRlX3NvcnRzIiwib3B0Iiwic3RoIiwiZGVmYXVsdF9zb3J0IiwibW9sZF9vZiIsImVtcHR5IiwicHBfcm9vdCIsInNob3dfcm9vdCIsIl83IiwiXzYiLCJfNSIsIl80IiwiYTEkMCIsImEyIiwiYTEkMSIsInJvb3Rfb2Zfc2V4cCIsImFyZzFfMDE0IiwicmVzMF8wMTUiLCJyZXMxXzAxNiIsImFyZzFfMDIxIiwicmVzMV8wMjMiLCJzZXhwX2FyZ3NfMDI2IiwiYXJnMl8wMjkiLCJhcmcxXzAyOCIsImFyZzBfMDI3IiwicmVzMF8wMzAiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwieF8wMzQiLCJhcmcwXzAzNSIsInJlczBfMDM2Iiwic2V4cF9vZl9yb290IiwiYXJnMV8wMzgiLCJhcmcwXzAzNyIsInJlczBfMDM5IiwicmVzMV8wNDAiLCJhcmcxXzA0MiIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0OCIsInJlczFfMDQ5IiwicmVzMl8wNTAiLCJ4XzA1MSIsInJvb3Rfb2ZfeW9qc29uIiwidjIiLCJ2MSQzIiwidjEkNCIsInYyJDAiLCJ5b2pzb25fb2Zfcm9vdCIsInBwX2lwIiwic2hvd19pcCIsInJlbCIsInQxIiwidDIiLCJsYmwxIiwibGJsMiIsImVxIiwicjEiLCJsMiIsInNoYXBlJDAiLCJwcF9za2VsIiwic2hvd19za2VsIiwiXzAkMiIsIl8xJDEiLCJfMCQzIiwicG9wX2NoYWluIiwib3B0JDAiLCJwb3BwZWQiLCJvcHQkMSIsIm9wdCQyIiwic2hhcGVzX29mX2NoYWluIiwiY2hhaW4iLCJsYXN0IiwiZmlyc3QiLCJwdXNoX291dHB1dCIsInN0YWNrcyIsInN0YWNrcyQwIiwic2h1bnRlZCIsInByZWMkMCIsInByZWMkMSIsInNwbGl0X2tpZHMkMCIsInNwbGl0X2tpZHMiLCJvdXRwdXQiLCJraWRzIiwia2lkcyQwIiwia2lkcyQxIiwib3V0cHV0JDAiLCJvdXRwdXQkMSIsImtpZHMkMiIsImtpZHMkMyIsImwkMSIsIm91dHB1dCQyIiwia2lkcyQ0IiwiciQxIiwia2lkcyQ1Iiwib3V0cHV0JDMiLCJraWRzJDYiLCJzdGFja3MkMSIsInB1c2hfc2h1bnRlZCIsImlwIiwiZmluaXNoIiwic2VnIiwiZm9sZF9yaWdodCIsIm9mX3RpbGUiLCJ0aWxlcyIsImluY29tcGxldGVfdGlsZXMiLCJjb252ZXhfZ3JvdXQiLCJjb250YWluc19tYXRjaGluZyIsInQkMCIsInJlbW92ZV9tYXRjaGluZyIsInNub2MiLCJzaGFwZV9hZmZpeCIsImFmZml4IiwiZW1wdHlfd2d3IiwiZ28iLCJ0bCQwIiwid2d3Iiwid3NzIiwid3NzJDAiLCJ3cyIsImNvbnZleCIsInNwbGl0X2J5X2dyb3V0IiwicmVtb2xkIiwicmVtb2xkX3BhdCIsInJlbW9sZF90eXAiLCJyZW1vbGRfdHBhdCIsInJlbW9sZF9ydWwiLCJyZW1vbGRfZXhwIiwicmVtb2xkX3RpbGUiLCJyZW1vbGRlZCIsImNoaWxkJDAiLCJ0cyIsInJlbW9sZF90eXBfdW5pIiwicmVzdCQwIiwic2hhcGUkMiIsInJlbW9sZGVkJDEiLCJyZW1vbGRlZCQwIiwic2hhcGUkMSIsInJlc3QiLCJyZW1vbGRfcGF0X3VuaSIsInJlc3QkMiIsInNoYXBlJDUiLCJzaGFwZSQ0IiwicmVtb2xkZWRfdHlwIiwicmVtb2xkZWRfcGF0IiwicmVzdCQxIiwic2hhcGUkMyIsInJlbW9sZF90cGF0X3VuaSIsInJlbW9sZF9leHBfdW5pIiwicmVzdCQ2Iiwic2hhcGUkOSIsInJlbW9sZGVkX2V4cCIsInJlc3QkMyIsInJlbW9sZGVkX2V4cCQwIiwicmVzdCQ0Iiwic2hhcGUkNiIsInJlbW9sZGVkX3RwYXQiLCJyZXN0JDUiLCJzaGFwZSQ3IiwicmVtb2xkZWRfZXhwJDEiLCJzaGFwZSQ4Iiwic2tlbCIsImVtcHR5JDAiLCJyZXYkMCIsImNvbnNfdyIsImNvbnNfZyIsInJtX3VwX3RvX29uZV9zcGFjZSIsIndzJDAiLCJ3c3MkMSIsImFkZF9ncm91dCIsInJlZ3JvdXQiLCJ0cmltIiwibmV3X3NwYWNlcyIsIm1lcmdlZCIsImdzJDAiLCJ0b19zZWciLCJyZWdyb3V0JDAiLCJyZWdyb3V0X2FmZml4IiwidHJpbSQwIiwiYWZmaXgkMCIsInNwbGl0X2J5X21hdGNoaW5nIiwic2VnX3IiLCJzZWdfbCIsInRyaW1fZiIsInRyaW1fbCIsInBzIiwidHJpbV9zZWNvbmRhcnkiLCJ4cyIsInhzJDAiLCJ4cyQxIiwidHJpbV9ncm91dCIsInRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCIsInRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeSIsInhzJDIiLCJlZGdlX3NoYXBlX29mIiwidHJpbW1lZCIsImVkZ2VfZGlyZWN0aW9uX29mIiwic2VyaWFsaXplIiwic2FtZWxpbmVfc2Vjb25kYXJ5IiwiZXhwZWN0ZWRfc29ydHMiLCJuX3IiLCJraWQiLCJuX2wiLCJzX2wiLCJzX3IiLCJpbnNpZGVfc29ydHMiLCJucyIsImxfc29ydCIsInJfc29ydCIsIm91dHNpZGVfc29ydHMiLCJob2xlcyIsInNlZ21lbnQiLCJnZXRfY2hpbGRyZW5zIiwiZ2V0X2luY29tcGxldGVfaWRzIiwiaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkIiwiZmlyc3Rfc3RyaW5nIiwibGFzdF9zdHJpbmciLCJub19zaWJsaW5ncyIsInVuemlwIiwiemlwIiwic3VmIiwicHJlIiwic2VsIiwicHJlcGVuZCIsInNpYnNzIiwic2licyIsImlzX21pc21hdGNoIiwiczEiLCJwdXNoIiwib250byIsInBvcCIsImZyb20iLCJzdWYkMCIsInByZSQwIiwibGVmdF9uZWlnaGJvciIsInJpZ2h0X25laWdoYm9yIiwibmVpZ2hib3JzIiwicl9zaWJzIiwibF9zaWJzIiwiZGlyZWN0aW9uX2JldHdlZW4iLCJtb2xkX2ZpdHRpbmdfYmV0d2VlbiIsImVycm9yX3NvdXJjZV8wMjUiLCJwcF9zdGVwIiwic2hvd19zdGVwIiwic3RlcF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwIiwic3RlcF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcCIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwiaWRfMDA1IiwibGFiZWxfMDA3IiwibW9sZF8wMDkiLCJzaGFyZHNfMDExIiwiY2hpbGRyZW5fMDEzIiwiZHVwbGljYXRlc18wMTUiLCJleHRyYV8wMTYiLCJpdGVyXzAzNiIsInNleHBfMDAzJDAiLCJmaWVsZF9zZXhwc18wMTkiLCJmaWVsZF9uYW1lXzAxNyIsInRhaWxfMDM3IiwiZmllbGRfc2V4cF8wMTgkNSIsImZpZWxkX3NleHBfMDE4IiwieF8wMzgiLCJmaWVsZF9zZXhwXzAxOCQwIiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAxOCQxIiwiZmllbGRfc2V4cF8wMTgkMiIsImZpZWxkX3NleHBfMDE4JDMiLCJmaWVsZF9zZXhwXzAxOCQ0IiwiZnZhbHVlXzAyNiIsImNoaWxkcmVuXzAxNCIsInNoYXJkc18wMTIiLCJtb2xkXzAxMCIsImxhYmVsXzAwOCIsImlkXzAwNiIsImNoaWxkcmVuXzA1MiIsInNoYXJkc18wNDYiLCJtb2xkXzA0NCIsImxhYmVsXzA0MiIsImlkXzA0MCIsImFyZzFfMDU1IiwicmVzMF8wNTYiLCJyZXMxXzA1NyIsImFyZ18wNTMiLCJibmRzXzAzOSIsImFyZzFfMDQ5IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsImFyZ18wNDciLCJibmRzXzAzOSQwIiwiYm5kc18wMzkkMSIsImJuZHNfMDM5JDIiLCJhcmdfMDQxIiwiYm5kc18wMzkkMyIsImoiLCJraWRzX3IiLCJraWRzX2wiLCJzaGFyZHNfciIsInNoYXJkc19sIiwiZmxhdHRlbiIsImNvbnRhaW5lcl9zaGFyZHMiLCJtYXRjaF9sIiwibWF0Y2hfciIsInRfciIsInRfbCIsInBwX2dlbmVyYXRpb24iLCJzaG93X2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3NleHAiLCJzZXhwX29mX2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9nZW5lcmF0aW9uIiwieF8wMTQiLCJwYXJlbnQiLCJ6aXBfZ2VuIiwiYW5jcyIsImEkMCIsInJlZ3JvdXRlZCIsInRyaW1fciIsInRyaW1fbCQwIiwidHJpbV9yJDAiLCJwYXJlbnRfbWF0Y2hlcyIsInRpY2siLCJ0aW1lIiwibHQiLCJtYXhfdGltZSIsInVwZGF0ZSIsImVzIiwidGQiLCJlIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJjYXN0QmFja0Fycm93U3ltIiwiZWxsaXBzaXMiLCJzdG9wIiwiZGlzdGFuY2VfYXV4Iiwic3RhcnQiLCJjb3VudCIsInN0YXJ0JDAiLCJjb3VudCQwIiwiY291bnQkMSIsInN0YXJ0JDEiLCJjb3VudCQyIiwic3RhcnQkMiIsImNvdW50JDMiLCJzdGFydCQzIiwic3RhcnQkNCIsImVycm9yX3NvdXJjZV8wMTciLCJ6ZXJvIiwiZXJyb3Jfc291cmNlXzA0MCIsImVycm9yX3NvdXJjZV8wNTUiLCJwcF9yb3ciLCJzaG93X3JvdyIsInJvd19vZl9zZXhwIiwic2V4cF9vZl9yb3ciLCJyb3dfb2ZfeW9qc29uIiwieW9qc29uX29mX3JvdyIsInBwX2NvbCIsInNob3dfY29sIiwiY29sX29mX3NleHAiLCJzZXhwX29mX2NvbCIsImNvbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY29sIiwiZmllbGRfc2V4cHNfMDA1Iiwicm93XzAwNiIsImNvbF8wMDgiLCJpdGVyXzAxOCIsInNleHBfMDA0JDAiLCJ0YWlsXzAxOSIsInhfMDIwIiwiY29sXzAwOSIsInJvd18wMDciLCJjb2xfMDI0Iiwicm93XzAyMiIsImJuZHNfMDIxIiwiYXJnXzAyMyIsImJuZHNfMDIxJDAiLCJyb3dfZmllbGQiLCJjb2xfZmllbGQiLCJjb2xfdmFsdWUiLCJyb3dfdmFsdWUiLCJ2X2NvbCIsInZfcm93IiwiZXF1YWxzIiwicSIsImNvbXAiLCJjdXJyZW50IiwidGFyZ2V0IiwiZGNvbXAiLCJkaXJlY3Rpb24iLCJiIiwicHBfbWVhc3VyZW1lbnQiLCJzaG93X21lYXN1cmVtZW50IiwibWVhc3VyZW1lbnRfb2Zfc2V4cCIsInNleHBfMDI3IiwiZmllbGRfc2V4cHNfMDI4Iiwib3JpZ2luXzAyOSIsImxhc3RfMDMxIiwiZHVwbGljYXRlc18wMzMiLCJleHRyYV8wMzQiLCJpdGVyXzA0MSIsInNleHBfMDI3JDAiLCJmaWVsZF9zZXhwc18wMzciLCJmaWVsZF9uYW1lXzAzNSIsInRhaWxfMDQyIiwiZmllbGRfc2V4cF8wMzYkMiIsImZpZWxkX3NleHBfMDM2IiwieF8wNDMiLCJmaWVsZF9zZXhwXzAzNiQwIiwiZnZhbHVlXzAzOSIsImZpZWxkX3NleHBfMDM2JDEiLCJmdmFsdWVfMDM4IiwibGFzdF8wMzIiLCJvcmlnaW5fMDMwIiwic2V4cF9vZl9tZWFzdXJlbWVudCIsImxhc3RfMDQ3Iiwib3JpZ2luXzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImJuZHNfMDQ0JDAiLCJtZWFzdXJlbWVudF9vZl95b2pzb24iLCJvcmlnaW5fZmllbGQiLCJsYXN0X2ZpZWxkIiwibGFzdF92YWx1ZSIsIm9yaWdpbl92YWx1ZSIsInlvanNvbl9vZl9tZWFzdXJlbWVudCIsInZfbGFzdCIsInZfb3JpZ2luIiwibWF4X2NvbCIsInJzIiwibWluX2NvbCIsInBwX3NoYXJkIiwic2hvd19zaGFyZCIsInNoYXJkX29mX3NleHAiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInNleHBfb2Zfc2hhcmQiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsInNoYXJkX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFyZCIsInBwJDEiLCJ0X29mX3NleHAkMSIsInhfMDYxIiwic2V4cF9vZl90JDEiLCJ4XzA2MiIsInRfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfdCQxIiwic3BsaXRfYnlfcm93Iiwicm93cyIsInJvdyIsImFkZF9zIiwiYWRkX3QiLCJhZGRfZyIsImFkZF93IiwiYWRkX3AiLCJhZGRfcm93IiwiYWRkX2xiIiwiaW5kZW50Iiwic2luZ2xldG9uX3ciLCJzaW5nbGV0b25fZyIsInNpbmdsZXRvbl9zIiwic2hhcmQiLCJmaW5kX29wdF9zaGFyZHMiLCJmaW5kX3NoYXJkcyIsImZpbmRfb3B0X2xiIiwiZmluZF9zaGFyZHMkMCIsImZpbmRfdyIsImZpbmRfZyIsImZpbmRfdCIsImZpbmRfcCIsImZpbmRfYnlfaWQiLCJtJDAiLCJwb3N0X3RpbGVfaW5kZW50IiwiY29tcGxldGVfZnVuIiwibWlzc2luZ19yaWdodF9leHRyZW1lIiwiY29tcGxldGVfZnVuJDAiLCJtaXNzaW5nX2xlZnRfZXh0cmVtZSIsImlzX2luZGVudGVkX21hcCIsImlzX2luZGVudGVkIiwic3RoJDAiLCJpc19pbmRlbnRlZCQwIiwibWFwJDAiLCJvZl9zZWdtZW50Iiwib2xkIiwidG91Y2hlZCIsImdvX25lc3RlZCIsImNvbnRhaW5lcl9pbmRlbnQiLCJvcmlnaW4iLCJ0aW1lJDAiLCJ0aW1lJDEiLCJmaXJzdF90b3VjaGVkX2luY29tcGxldGUiLCJnb19zZXEiLCJjb250YWluZWRfaW5kZW50IiwibWFwJDYiLCJ0b2tlbiIsImFkZF9zaGFyZCIsImNoaWxkX21hcCIsImNoaWxkX2xhc3QiLCJtYXAkMSIsIm9yaWdpbiQwIiwiY29udGFpbmVkX2luZGVudCQwIiwibGFzdCQwIiwibWFwJDMiLCJyb3dfaW5kZW50IiwiaW5kZW50JDAiLCJ0b3VjaGVkJDAiLCJ0b3VjaGVkJDEiLCJpbmRlbnQkMSIsImxhc3QkMSIsIm1hcCQ0Iiwid3NwYWNlX2xlbmd0aCIsIm9yaWdpbiQxIiwibWFwJDUiLCJtYXAkMiIsInRsX2xhc3QiLCJzZWdtZW50X29yaWdpbiIsInNlZ21lbnRfbGFzdCIsInNlZ21lbnRfaGVpZ2h0Iiwic2VnbWVudF93aWR0aCIsIndpZHRoX2Nvc3QiLCJtYXhfd2lkdGgiLCJvdmVyZmxvdyIsImVycm9yX3NvdXJjZV8wMzMiLCJwcF9idWZmZXIiLCJzaG93X2J1ZmZlciIsImJ1ZmZlcl9vZl9zZXhwIiwic2V4cF9vZl9idWZmZXIiLCJidWZmZXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2J1ZmZlciIsInBwX21vZGUiLCJzaG93X21vZGUiLCJtb2RlX29mX3NleHAiLCJzZXhwX29mX21vZGUiLCJtb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb2RlIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTgiLCJmb2N1c18wMTkiLCJjb250ZW50XzAyMSIsIm1vZGVfMDIzIiwiZHVwbGljYXRlc18wMjUiLCJleHRyYV8wMjYiLCJpdGVyXzAzNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjkiLCJmaWVsZF9uYW1lXzAyNyIsInRhaWxfMDM1IiwiZmllbGRfc2V4cF8wMjgkMyIsImZpZWxkX3NleHBfMDI4IiwieF8wMzYiLCJmaWVsZF9zZXhwXzAyOCQwIiwiZnZhbHVlXzAzMCIsImZpZWxkX3NleHBfMDI4JDEiLCJmaWVsZF9zZXhwXzAyOCQyIiwiZnZhbHVlXzAzMSIsIm1vZGVfMDI0IiwiY29udGVudF8wMjIiLCJmb2N1c18wMjAiLCJtb2RlXzA0MiIsImNvbnRlbnRfMDQwIiwiZm9jdXNfMDM4IiwiYm5kc18wMzciLCJibmRzXzAzNyQwIiwiYXJnXzAzOSIsImJuZHNfMDM3JDEiLCJmb2N1c19maWVsZCIsIm1vZGVfZmllbGQiLCJtb2RlX3ZhbHVlIiwiZm9jdXNfdmFsdWUiLCJ2X21vZGUiLCJ2X2ZvY3VzIiwibW9kZSIsImZvY3VzIiwibWtfYnVmZmVyIiwiYnVmZmVyIiwiaXNfYnVmZmVyIiwiYnVmZmVyX2lkcyIsInRvZ2dsZV9mb2N1cyIsInNlbGVjdGlvbiIsImlzX2VtcHR5IiwiY29udGVudCQwIiwicCQyIiwic3BsaXRfcGllY2UiLCJvcmQiLCJpX3IiLCJpX2wiLCJndCIsInVuIiwiZGlzb3JkZXJlZCIsImx0X29yX3VuIiwibHMiLCJhZGRfdGlsZSIsInRyYW5fY2xvc2UiLCJrZXlzIiwibWVtIiwiZXhpc3RzX21lbSIsIm1lcmdlJDEiLCJhZGRfdGlsZSQwIiwiY3MiLCJjIiwiYyQwIiwiaW5pdCQxIiwiYWRkX3NlbCIsImNvdW50cyIsIm9yZGVyIiwicHJldiIsImN1cnIiLCJwcmV2JDAiLCJzaGFyZF9pbmZvIiwiYnAiLCJpbmZvIiwic2hhcmRfaW5mbyQwIiwicHVzaF9zIiwiZmlyc3QkMCIsInJlc3RyaWN0ZWQiLCJ3aWxsX2JhcmYiLCJyZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXQiLCJzaWJsaW5nc18wMDQiLCJhbmNlc3RvcnNfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJpdGVyXzAxNiIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJhbmNlc3RvcnNfMDA3Iiwic2libGluZ3NfMDA1IiwiYW5jZXN0b3JzXzAyMiIsInNpYmxpbmdzXzAyMCIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJzaWJsaW5nc19maWVsZCIsImFuY2VzdG9yc19maWVsZCIsImFuY2VzdG9yc192YWx1ZSIsInNpYmxpbmdzX3ZhbHVlIiwidl9hbmNlc3RvcnMiLCJ2X3NpYmxpbmdzIiwic2libGluZ3MiLCJhbmNlc3RvcnMiLCJzaWJsaW5ncyQwIiwiYW5jZXN0b3IiLCJzaWJsaW5ncyQxIiwibG9jYWxfaW5jb21wbGV0ZV90aWxlcyIsImRlbGV0ZV9wYXJlbnQiLCJhbmNlc3RvcnMkMCIsInBfc2licyIsImdzX2wiLCJnc19yIiwiZ19sIiwiZ19yIiwidHJpbV9yJDEiLCJwcmVwZW5kX2dlbmVyYXRpb24iLCJwcmVwZW5kX3NpYmxpbmdzIiwicnNzIiwiY2F0IiwicmVhc3NlbWJsZV9wYXJlbnQiLCJmbGF0dGVuX21hdGNoIiwiaW5uZXJfbCIsIm91dGVyX2wiLCJhJDEiLCJvdXRlcl9yIiwiaW5uZXJfciIsImEkMiIsImEkMyIsInJlYXNzZW1ibGVfc2libGluZ3MiLCJycyQwIiwib3V0ZXJfciQwIiwibWF0Y2hfciQwIiwiaW5uZXJfciQwIiwiZXJyb3Jfc291cmNlXzA1MSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJkZWNyZW1lbnQiLCJvZmZzZXQiLCJzZWxlY3Rpb25fMDE5IiwiYmFja3BhY2tfMDIxIiwicmVsYXRpdmVzXzAyMyIsImNhcmV0XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4IiwiZmllbGRfc2V4cHNfMDMxIiwiZmllbGRfbmFtZV8wMjkiLCJmaWVsZF9zZXhwXzAzMCQ0IiwiZmllbGRfc2V4cF8wMzAiLCJmaWVsZF9zZXhwXzAzMCQwIiwiZmllbGRfc2V4cF8wMzAkMSIsImZpZWxkX3NleHBfMDMwJDIiLCJmaWVsZF9zZXhwXzAzMCQzIiwiY2FyZXRfMDI2IiwicmVsYXRpdmVzXzAyNCIsImJhY2twYWNrXzAyMiIsInNlbGVjdGlvbl8wMjAiLCJjYXJldF8wNDciLCJyZWxhdGl2ZXNfMDQ1IiwiYmFja3BhY2tfMDQzIiwic2VsZWN0aW9uXzA0MSIsImJuZHNfMDQwJDIiLCJzZWxlY3Rpb25fZmllbGQiLCJiYWNrcGFja19maWVsZCIsInJlbGF0aXZlc19maWVsZCIsImNhcmV0X2ZpZWxkIiwiY2FyZXRfdmFsdWUiLCJyZWxhdGl2ZXNfdmFsdWUiLCJiYWNrcGFja192YWx1ZSIsInNlbGVjdGlvbl92YWx1ZSIsInZfY2FyZXQiLCJ2X3JlbGF0aXZlcyIsInZfYmFja3BhY2siLCJ2X3NlbGVjdGlvbiIsIm5leHRfYmxhbmsiLCJwcF9jaHVua2luZXNzIiwic2hvd19jaHVua2luZXNzIiwiY2h1bmtpbmVzc19vZl9zZXhwIiwic2V4cF8wNTIiLCJzZXhwX29mX2NodW5raW5lc3MiLCJjaHVua2luZXNzX29mX3lvanNvbiIsInlvanNvbl9vZl9jaHVua2luZXNzIiwicHBfcGxhbmFyIiwic2hvd19wbGFuYXIiLCJwbGFuYXJfb2Zfc2V4cCIsInNleHBfMDU3IiwidGFnXzA1OCIsInNleHBfYXJnc18wNjQiLCJhcmcwXzA2NSIsInJlczBfMDY2Iiwic2V4cF9hcmdzXzA1OSIsImFyZzBfMDYwIiwicmVzMF8wNjEiLCJzZXhwX29mX3BsYW5hciIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJhcmcwXzA2OSIsInJlczBfMDcwIiwicGxhbmFyX29mX3lvanNvbiIsInlvanNvbl9vZl9wbGFuYXIiLCJmcm9tX3BsYW5lIiwidXBkYXRlX2NhcmV0IiwieiIsInNldF9jYXJldCIsImNhcmV0IiwidXBkYXRlX3JlbGF0aXZlcyIsInVwZGF0ZV9zaWJsaW5ncyIsInNpYnNfd2l0aF9zZWwiLCJwb3BfYmFja3BhY2siLCJsZWZ0X25laWdoYm9yX21vbm90aWxlIiwicmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUiLCJuZWlnaGJvcl9tb25vdGlsZXMiLCJyZWxhdGl2ZXMiLCJyZW1vbGRfcmVncm91dCIsImNsZWFyX3VucGFyc2VkX2J1ZmZlciIsInVuc2VsZWN0IiwiZXJhc2VfYnVmZmVyIiwieiQwIiwidW5zZWxlY3RfYW5kX3ppcCIsInVwZGF0ZV9zZWxlY3Rpb24iLCJwdXRfc2VsZWN0aW9uIiwiZ3Jvd19zZWxlY3Rpb24iLCJzaHJpbmtfc2VsZWN0aW9uIiwic2VsZWN0aW9uJDAiLCJkaXJlY3Rpb25hbF91bnNlbGVjdCIsIm1vdmUiLCJyZWxhdGl2ZXMkMCIsInNlbGVjdCIsInBpY2tfdXAiLCJzZWxlY3RlZCIsImJhY2twYWNrIiwiZGVzdHJ1Y3QiLCJkZXN0cm95X2tpZHMiLCJ0b19yZW1vdmUiLCJ0b19waWNrX3VwIiwidG9fcGlja191cCQwIiwiYmFja3BhY2skMCIsImRlbGV0ZSQwIiwicHV0X2Rvd24iLCJjb25zdHJ1Y3QiLCJsYWJlbCQwIiwibGFiZWwkMSIsInokMSIsInNlbGVjdGlvbnMkMCIsImJhY2twYWNrJDEiLCJjb250ZW50JDEiLCJpZCQxIiwic2VsZWN0aW9ucyIsImNvbnN0cnVjdF9tb25vIiwicmVwbGFjZSIsInJlcGxhY2VfbW9ubyIsInJlcHJlc2VudGF0aXZlX3BpZWNlIiwiY2FyZXRfZGlyZWN0aW9uIiwiYmFzZV9wb2ludCIsIm1lYXN1cmVkIiwiY2FyZXRfcG9pbnQiLCJjb2wiLCJkZXNlcmlhbGl6ZSIsImRhdGEiLCJjYW5fcHV0X2Rvd24iLCJzZXRfYnVmZmVyIiwiaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0IiwidHJ5X3RvX2R1bXBfYmFja3BhY2siLCJ6aXBwZXIiLCJ6aXBwZXIkMCIsIm1vdmVfdW50aWxfY2FudF9wdXRfZG93biIsInpfbGFzdCIsInpfbGFzdCQxIiwiel9sYXN0JDAiLCJ6X25ldyIsIm1vdmVfdW50aWxfY2FuX3B1dF9kb3duIiwiel9jYW4iLCJ6JDIiLCJ6X2NhbiQwIiwiel9jYW4kMSIsInokMyIsInokNCIsInNtYXJ0X3NlZyIsImR1bXBfYmFja3BhY2siLCJzZWdfZm9yX3ZpZXciLCJzZWdfZm9yX3NlbSIsInNlZ193aXRob3V0X2J1ZmZlciIsInBwX3QiLCJzaG93X3QiLCJwb2x5X2EiLCJvZl9hXzAwMSIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxNSIsImFyZzFfMDEyIiwiYXJnMF8wMTEiLCJyZXMxXzAxNCIsIm9mX2EiLCJleHRlbmQiLCJjdHgiLCJ4YSIsIm5ld19jdHgiLCJsb29rdXAiLCJjb250YWlucyIsImZpbHRlciIsInRvX2xpc3QiLCJmaW5kX21hcCIsImN0eCQwIiwiYXJnMV8wMTciLCJhcmcwXzAxNiIsInJlczFfMDE5IiwiZXF1YWwiLCJlcnJvcl9zb3VyY2VfMDA0IiwicHBfdmFyaWFudCIsInNob3dfdmFyaWFudCIsInZhcmlhbnRfb2Zfc2V4cCIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMl8wMTEiLCJyZXMyXzAxNCIsInNleHBfYXJnc18wMTciLCJyZXMwXzAxOSIsInNleHBfb2ZfdmFyaWFudCIsIm9mX2FfMDIxIiwiYXJnMl8wMjQiLCJhcmcxXzAyMyIsImFyZzBfMDIyIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsInJlczJfMDI3IiwiYXJnMF8wMjgiLCJ2YXJpYW50X29mX3lvanNvbiIsInlvanNvbl9vZl92YXJpYW50Iiwib2ZfYV8wMzEiLCJ4XzAzMyIsIm9mX2FfMDM0IiwieF8wMzUiLCJlcXVhbF9jb25zdHJ1Y3RvciIsInkiLCJjdHIxIiwieDEiLCJ5MSIsImN0cjIiLCJjdHIyJDAiLCJ4JDAiLCJ5JDAiLCJzYW1lX2NvbnN0cnVjdG9yIiwiaGFzX2JhZF9lbnRyeSIsImhhc19nb29kX2VudHJ5IiwiZnJlZV92YXJpYWJsZXMiLCJ2YWx1ZSIsImlzX2dyb3VuZCIsImlzX2hvbGUiLCJ2ZW5uX3JlZ2lvbnMiLCJ5cyIsImxlZnQiLCJyaWdodCIsInlzJDAiLCJhY2MkMCIsImxlZnQkMCIsInlzJDEiLCJhY2MkMSIsImxlZnQkMSIsImpvaW5fZW50cnkiLCJqb2luIiwiaWRzMSIsInZhbHVlMSIsInZhbHVlMiIsIm0xIiwibTIiLCJpbnRlciIsImpvaW5fZW50cmllcyIsIm1hdGNoX3N5bnN3aXRjaCIsImN0ciIsImFyZ3MiLCJ2YWx1ZSQwIiwiZ2V0X2VudHJ5IiwiY3RyJDAiLCJoYXNfY29uc3RydWN0b3Jfbm9fYXJncyIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwX29mX2FjdGlvbiIsImFjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWN0aW9uIiwicHBfY291bnQiLCJzaG93X2NvdW50IiwiY291bnRfb2Zfc2V4cCIsInNleHBfb2ZfY291bnQiLCJjb3VudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY291bnQiLCJzZXhwXzAxNCIsInN0cmluZ19vZl90IiwiaWRzXzAwNSIsImNvcGllZF8wMDciLCJ0ZXJtXzAwOSIsImR1cGxpY2F0ZXNfMDExIiwiZXh0cmFfMDEyIiwiZmllbGRfc2V4cHNfMDE1IiwiZmllbGRfbmFtZV8wMTMiLCJmaWVsZF9zZXhwXzAxNCQzIiwiZmllbGRfc2V4cF8wMTQiLCJmaWVsZF9zZXhwXzAxNCQwIiwiZmllbGRfc2V4cF8wMTQkMSIsImZpZWxkX3NleHBfMDE0JDIiLCJ0ZXJtXzAxMCIsImNvcGllZF8wMDgiLCJpZHNfMDA2Iiwib2ZfYV8wMjMiLCJ0ZXJtXzAyOSIsImNvcGllZF8wMjciLCJpZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYm5kc18wMjQkMCIsImJuZHNfMDI0JDEiLCJpZHNfZmllbGQiLCJjb3BpZWRfZmllbGQiLCJ0ZXJtX2ZpZWxkIiwidGVybV92YWx1ZSIsImNvcGllZF92YWx1ZSIsImlkc192YWx1ZSIsInZfdGVybSIsInZfY29waWVkIiwidl9pZHMiLCJmcmVzaCIsInRlcm0iLCJ0ZXJtX29mIiwidW53cmFwIiwicmVwX2lkIiwiZmFzdF9jb3B5IiwibmV3X2lkcyIsImNvcGllZCIsImVycl9tc2ciLCJlcnIiLCJzdHJ1Y3R1cmVfc2hhcmVfbWFwIiwic3RydWN0dXJlX3NoYXJlZF9vZl9zZXhwIiwic2V4cF9vZl9zdHJ1Y3R1cmVfc2hhcmVkIiwic3RydWN0dXJlX3NoYXJlX2hlcmUiLCJrZXlfZiIsInRoaW5nIiwia2V5IiwidGhpbmdfcyIsInN0cnVjdHVyZV9zaGFyZV9pbiIsInJlc3VsdCIsInNleHAkMCIsInZhbGlkX3JlZ2V4IiwiaXNfdmFsaWQiLCJjaGVja192YWxpZCIsImlzX3RydWUiLCJpc19mYWxzZSIsImlzX2xldCIsImlzX2Z1biIsImlzX2Nhc2UiLCJzcGxpdCIsInBvcyIsImxlZnRfdmFyIiwicmlnaHRfdmFyIiwiY2FyZGluYWwiLCJzaW5nbGV0b24kMCIsInVwZGF0ZSQwIiwidW5pb24kMCIsImN0eDEiLCJjdHgyIiwiZmlsdGVyJDAiLCJmb2xkJDAiLCJvZl9saXN0IiwiYmluZGluZ3MiLCJwcF90JDAiLCJzaG93X3QkMCIsIm9mX2FfMDE5Iiwic2V4cF8wMjEiLCJmaWVsZF9zZXhwc18wMjIiLCJtYXBfMDIzIiwicmV2X29yZGVyXzAyNSIsIml0ZXJfMDQwIiwic2V4cF8wMjEkMCIsInRhaWxfMDQxIiwieF8wNDIiLCJzZXhwXzAzNiIsImFyZzFfMDMzIiwiYXJnMF8wMzIiLCJyZXMwXzAzNCIsInJlczFfMDM1IiwicmV2X29yZGVyXzAyNiIsIm1hcF8wMjQiLCJvZl9hXzA0MyIsInJldl9vcmRlcl8wNDciLCJtYXBfMDQ1IiwiYXJnMV8wNTAiLCJhcmcwXzA0OSIsInJlczFfMDUyIiwiYm5kc18wNDQkMSIsIm1hcF9maWVsZCIsInJldl9vcmRlcl9maWVsZCIsInJldl9vcmRlcl92YWx1ZSIsIm1hcF92YWx1ZSIsInZfcmV2X29yZGVyIiwidl9tYXAiLCJmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50IiwiaXNfZW1wdHkkMCIsInNpbmdsZXRvbiQxIiwiZXh0ZW5kJDAiLCJyZXZfb3JkZXIiLCJ1bmlvbiQxIiwicmV2X29yZGVyMiIsIm1hcDIiLCJyZXZfb3JkZXIxIiwibWFwMSIsInVuaW9uX29yZGVyIiwib3JkZXIxIiwib3JkZXIxJDAiLCJyZXZfb3JkZXIyJDAiLCJyZXZfb3JkZXIyJDEiLCJsb29rdXAkMCIsImNvbnRhaW5zJDAiLCJtYXBrIiwibWFwbyIsImZpbHRlcmsiLCJyZXZfb3JkZXIkMCIsImZpbHRlcm8iLCJmb2xkayIsImZvbGRvIiwidG9fbGlzdGsiLCJ0b19saXN0byIsIm9mX2xpc3QkMCIsIndpdGhvdXRfa2V5cyIsImVycm9yX3NvdXJjZV83NTciLCJlcnJvcl9zb3VyY2VfMDYwIiwiZXJyb3Jfc291cmNlXzQzOCIsImVycm9yX3NvdXJjZV81NTkiLCJlcnJvcl9zb3VyY2VfNTc3IiwiZXJyb3Jfc291cmNlXzU4OCIsImVycm9yX3NvdXJjZV82ODEiLCJlcnJvcl9zb3VyY2VfNzA5IiwiZXJyb3Jfc291cmNlXzc3NiIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzc4NyIsInRwX2xvYyQxMCIsImNvbnRpbnVlJDAiLCJ4Xzc0OSIsInhfNzUwIiwic2V4cF83NTYiLCJhcmcxXzc1MyIsImFyZzBfNzUyIiwicmVzMF83NTQiLCJyZXMxXzc1NSIsImFyZzFfNzU5IiwiYXJnMF83NTgiLCJyZXMwXzc2MCIsInJlczFfNzYxIiwid3JhcCIsImVpIiwiaWRfb2YiLCJtYXBfb2YiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwiZW52Iiwib2ZfZW52aXJvbm1lbnQiLCJpZF9lcXVhbCIsImVudjEiLCJlbnYyIiwibGVuZ3RoJDAiLCJ1cGRhdGVfa2VlcF9pZCIsInhyIiwiZXh0ZW5kX2tlZXBfaWQiLCJ1bmlvbl9rZWVwX2lkIiwibWFwX2tlZXBfaWQiLCJmaWx0ZXJfa2VlcF9pZCIsImZvbGQiLCJwbGFjZWhvbGRlciIsIndpdGhvdXRfa2V5cyQwIiwic2hvdyQxIiwiYTAkMyIsImEwJDQiLCJhMCQ1IiwidF9vZl9zZXhwJDMiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJzZXhwX2FyZ3NfMDMyIiwiYXJnMF8wMzMiLCJzZXhwX2FyZ3NfMDI3Iiwic2V4cF9hcmdzXzAyMiIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJzZXhwX29mX3QkMyIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJhcmcwXzA0MiIsImFyZzBfMDQ0IiwicmVzMF8wNDUiLCJ0X29mX3lvanNvbiQyIiwieW9qc29uX2FyZ3MkNSIsInYwJDExIiwidjAkMTIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX3QkMiIsIm1hcF90ZXJtIiwiZl9leHAiLCJmX3BhdCIsInN0aCQxIiwiZl90eXAiLCJzdGgkMiIsImZfdHBhdCIsInN0aCQzIiwiZl9ydWwiLCJzdGgkNCIsImZfYW55IiwicmVjX2NhbGwiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJmYXN0X2VxdWFsIiwieSQxIiwieSQyIiwieSQzIiwieCQ0IiwieSQ0IiwicHBfZGVmZXJyYWxfcG9zaXRpb24iLCJzaG93X2RlZmVycmFsX3Bvc2l0aW9uIiwiZGVmZXJyYWxfcG9zaXRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJkZWZlcnJhbF9wb3NpdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJwcF90ZXJtIiwic2hvd190ZXJtIiwicHAkMiIsInNob3ckMiIsIl81NCIsIl81MyIsIl81MiIsIl81MSIsIl81MCIsIl80OSIsIl80OCIsIl80NyIsIl80NiIsIl80NSIsIl80NCIsIl80MyIsIl80MiIsIl80MSIsIl80MCIsIl8zOSIsIl8zOCIsIl8zNyIsIl8zNiIsIl8zNSIsIl8zNCIsIl8zMyIsIl8zMiIsIl8zMSIsIl8zMCIsIl8yOSIsIl8yOCIsIl8yNyIsIl8yNiIsIl8yNSIsIl8yNCIsIl8yMyIsIl8yMiIsIl8yMSIsIl8yMCIsIl8xOSIsIl8xOCIsIl8xNyIsIl8xNiIsIl8xNSIsIl8xNCIsIl8xMyIsIl8xMiIsIl8xMSIsIl8xMCIsIl85IiwiXzgiLCJfNCQwIiwiXzMkMCIsIl8xJDIiLCJhMCQ2IiwiYTAkNyIsImEwJDgiLCJhMCQ5IiwiYTMiLCJhMiQwIiwiYTAkMTAiLCJhMiQxIiwiYTEkMiIsImEwJDExIiwiYTAkMTIiLCJhMCQxMyIsImEyJDIiLCJhMSQzIiwiYTAkMTQiLCJhMiQzIiwiYTEkNCIsImEwJDE1IiwiYTIkNCIsImExJDUiLCJhMCQxNiIsImEyJDUiLCJhMSQ2IiwiYTAkMTciLCJhMSQ3IiwiYTAkMTgiLCJhMSQ4IiwiYTAkMTkiLCJhMiQ2IiwiYTEkOSIsImEwJDIwIiwiYTEkMTAiLCJhMCQyMSIsImEwJDIyIiwiYTEkMTEiLCJhMCQyMyIsImExJDEyIiwiYTAkMjQiLCJhMCQyNSIsImExJDEzIiwiYTAkMjYiLCJhMSQxNCIsImEwJDI3IiwiYTEkMTUiLCJhMCQyOCIsImEyJDciLCJhMSQxNiIsImEwJDI5IiwiYTAkMzAiLCJhMSQxNyIsImEwJDMxIiwiYTIkOCIsImExJDE4IiwiYTAkMzIiLCJfMSQzIiwidGVybV9vZl9zZXhwIiwidF9vZl9zZXhwJDQiLCJzZXhwXzA2MiIsInRhZ18wNjMiLCJzZXhwX2FyZ3NfMjA1IiwiYXJnMl8yMDgiLCJhcmcxXzIwNyIsImFyZzBfMjA2IiwicmVzMF8yMDkiLCJyZXMxXzIxMCIsInJlczJfMjExIiwic2V4cF9hcmdzXzIxNCIsImFyZzFfMjE2IiwiYXJnMF8yMTUiLCJyZXMwXzIxNyIsInJlczFfMjE4Iiwic2V4cF9hcmdzXzExMCIsImFyZzBfMTExIiwicmVzMF8xMTIiLCJzZXhwX2FyZ3NfMjIxIiwiYXJnMF8yMjIiLCJyZXMwXzIyMyIsInNleHBfYXJnc18xNDUiLCJhcmcwXzE0NiIsInJlczBfMTQ3Iiwic2V4cF9hcmdzXzE3MyIsImFyZzJfMTc2IiwiYXJnMV8xNzUiLCJhcmcwXzE3NCIsInJlczBfMTc3IiwicmVzMV8xNzgiLCJyZXMyXzE3OSIsInNleHBfYXJnc18xOTEiLCJhcmcxXzE5MyIsImFyZzBfMTkyIiwicmVzMF8xOTQiLCJyZXMxXzE5NSIsInNleHBfYXJnc18xMzYiLCJhcmcyXzEzOSIsImFyZzFfMTM4IiwiYXJnMF8xMzciLCJyZXMwXzE0MCIsInJlczFfMTQxIiwicmVzMl8xNDIiLCJzZXhwX2FyZ3NfMjU5IiwiYXJnMV8yNjEiLCJhcmcwXzI2MCIsInJlczBfMjYyIiwicmVzMV8yNjMiLCJzZXhwX2FyZ3NfMTUwIiwiYXJnMF8xNTEiLCJyZXMwXzE1MiIsInNleHBfYXJnc18xMDAiLCJhcmcwXzEwMSIsInJlczBfMTAyIiwic2V4cF9hcmdzXzE1NSIsImFyZzJfMTU4IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU5IiwicmVzMV8xNjAiLCJyZXMyXzE2MSIsInNleHBfYXJnc18yNTIiLCJhcmcxXzI1NCIsImFyZzBfMjUzIiwicmVzMF8yNTUiLCJyZXMxXzI1NiIsInNleHBfYXJnc18xMTUiLCJhcmcwXzExNiIsInJlczBfMTE3Iiwic2V4cF9hcmdzXzI4MCIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInNleHBfMjg1IiwiYXJnMV8yODIiLCJhcmcwXzI4MSIsInJlczBfMjgzIiwicmVzMV8yODQiLCJyZXMxXzI4OSIsInNleHBfYXJnc18wNjkiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwic2V4cF9hcmdzXzI0MCIsImFyZzBfMjQxIiwicmVzMF8yNDIiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMF8wOTEiLCJyZXMwXzA5MiIsInNleHBfYXJnc18xOTgiLCJhcmcxXzIwMCIsImFyZzBfMTk5IiwicmVzMF8yMDEiLCJyZXMxXzIwMiIsInNleHBfYXJnc18wNzQiLCJhcmcxXzA3NiIsImFyZzBfMDc1IiwicmVzMV8wNzgiLCJzZXhwX2FyZ3NfMDgxIiwiYXJnMl8wODQiLCJhcmcxXzA4MyIsInJlczFfMDg2IiwicmVzMl8wODciLCJzZXhwX2FyZ3NfMjI2IiwiYXJnMV8yMjgiLCJhcmcwXzIyNyIsInJlczBfMjI5IiwicmVzMV8yMzAiLCJzZXhwX2FyZ3NfMTY0IiwiYXJnMl8xNjciLCJhcmcxXzE2NiIsImFyZzBfMTY1IiwicmVzMF8xNjgiLCJyZXMxXzE2OSIsInJlczJfMTcwIiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnM18xMjkiLCJhcmcyXzEyOCIsImFyZzFfMTI3IiwiYXJnMF8xMjYiLCJyZXMwXzEzMCIsInJlczFfMTMxIiwicmVzMl8xMzIiLCJyZXMzXzEzMyIsInNleHBfYXJnc18xODIiLCJhcmcyXzE4NSIsImFyZzFfMTg0IiwiYXJnMF8xODMiLCJyZXMwXzE4NiIsInJlczFfMTg3IiwicmVzMl8xODgiLCJzZXhwX2FyZ3NfMjY2IiwiYXJnMl8yNjkiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNzAiLCJyZXMxXzI3MSIsInJlczJfMjcyIiwic2V4cF9hcmdzXzA5NSIsImFyZzBfMDk2IiwicmVzMF8wOTciLCJzZXhwX2FyZ3NfMjc1IiwiYXJnMF8yNzYiLCJyZXMwXzI3NyIsInNleHBfYXJnc18yOTIiLCJhcmcyXzI5NSIsImFyZzFfMjk0IiwiYXJnMF8yOTMiLCJyZXMwXzI5NiIsInJlczFfMjk3IiwicmVzMl8yOTgiLCJzZXhwX2FyZ3NfMjMzIiwiYXJnMV8yMzUiLCJhcmcwXzIzNCIsInJlczBfMjM2IiwicmVzMV8yMzciLCJzZXhwX2FyZ3NfMjQ1IiwiYXJnMV8yNDciLCJhcmcwXzI0NiIsInJlczBfMjQ4IiwicmVzMV8yNDkiLCJzZXhwX2FyZ3NfMTIwIiwiYXJnMF8xMjEiLCJyZXMwXzEyMiIsInhfMzAwIiwic2V4cF9vZl90ZXJtIiwiYXJnMF8zMDEiLCJyZXMwXzMwMiIsImFyZzBfMzAzIiwicmVzMF8zMDQiLCJhcmcxXzMwNiIsImFyZzBfMzA1IiwicmVzMF8zMDciLCJzZXhwX29mX3QkNCIsInJlczFfMzA4IiwiYXJnMl8zMTEiLCJhcmcxXzMxMCIsImFyZzBfMzA5IiwicmVzMF8zMTIiLCJyZXMxXzMxMyIsInJlczJfMzE0IiwiYXJnMF8zMTUiLCJyZXMwXzMxNiIsImFyZzBfMzE3IiwicmVzMF8zMTgiLCJhcmcwXzMxOSIsInJlczBfMzIwIiwiYXJnMF8zMjEiLCJyZXMwXzMyMiIsImFyZzBfMzIzIiwicmVzMF8zMjQiLCJhcmcwXzMyNSIsInJlczBfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsImFyZzNfMzMyIiwiYXJnMl8zMzEiLCJhcmcxXzMzMCIsImFyZzBfMzI5IiwicmVzMF8zMzMiLCJyZXMxXzMzNCIsInJlczJfMzM1IiwicmVzM18zMzYiLCJhcmcyXzMzOSIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzM0MCIsInJlczFfMzQxIiwicmVzMl8zNDIiLCJhcmcwXzM0MyIsInJlczBfMzQ0IiwiYXJnMF8zNDUiLCJyZXMwXzM0NiIsImFyZzJfMzQ5IiwiYXJnMV8zNDgiLCJhcmcwXzM0NyIsInJlczBfMzUwIiwicmVzMV8zNTEiLCJyZXMyXzM1MiIsImFyZzJfMzU1IiwiYXJnMV8zNTQiLCJhcmcwXzM1MyIsInJlczBfMzU2IiwicmVzMV8zNTciLCJyZXMyXzM1OCIsImFyZzJfMzYxIiwiYXJnMV8zNjAiLCJhcmcwXzM1OSIsInJlczBfMzYyIiwicmVzMV8zNjMiLCJyZXMyXzM2NCIsImFyZzJfMzY3IiwiYXJnMV8zNjYiLCJhcmcwXzM2NSIsInJlczBfMzY4IiwicmVzMV8zNjkiLCJyZXMyXzM3MCIsImFyZzFfMzcyIiwiYXJnMF8zNzEiLCJyZXMwXzM3MyIsInJlczFfMzc0IiwiYXJnMV8zNzYiLCJhcmcwXzM3NSIsInJlczBfMzc3IiwicmVzMV8zNzgiLCJhcmcyXzM4MSIsImFyZzFfMzgwIiwiYXJnMF8zNzkiLCJyZXMwXzM4MiIsInJlczFfMzgzIiwicmVzMl8zODQiLCJhcmcxXzM4NiIsImFyZzBfMzg1IiwicmVzMF8zODciLCJyZXMxXzM4OCIsImFyZzBfMzg5IiwicmVzMF8zOTAiLCJhcmcxXzM5MiIsImFyZzBfMzkxIiwicmVzMF8zOTMiLCJyZXMxXzM5NCIsImFyZzFfMzk2IiwiYXJnMF8zOTUiLCJyZXMwXzM5NyIsInJlczFfMzk4IiwiYXJnMF8zOTkiLCJyZXMwXzQwMCIsImFyZzFfNDAyIiwiYXJnMF80MDEiLCJyZXMwXzQwMyIsInJlczFfNDA0IiwiYXJnMV80MDYiLCJhcmcwXzQwNSIsInJlczBfNDA3IiwicmVzMV80MDgiLCJhcmcxXzQxMCIsImFyZzBfNDA5IiwicmVzMF80MTEiLCJyZXMxXzQxMiIsImFyZzJfNDE1IiwiYXJnMV80MTQiLCJhcmcwXzQxMyIsInJlczBfNDE2IiwicmVzMV80MTciLCJyZXMyXzQxOCIsImFyZzBfNDE5IiwicmVzMF80MjAiLCJhcmcxXzQyNiIsImFyZzBfNDI1IiwicmVzMF80MjciLCJhcmcxXzQyMiIsImFyZzBfNDIxIiwicmVzMF80MjMiLCJyZXMxXzQyNCIsInJlczFfNDI4IiwiYXJnMl80MzEiLCJhcmcxXzQzMCIsImFyZzBfNDI5IiwicmVzMF80MzIiLCJyZXMxXzQzMyIsInJlczJfNDM0IiwieF80MzUiLCJ0ZXJtX29mX3lvanNvbiIsInRfb2ZfeW9qc29uJDMiLCJ5b2pzb25fYXJncyQxNiIsInYyJDUiLCJ2MSQxNSIsInYwJDMzIiwidjAkMzQiLCJ2MSQxNiIsInYyJDYiLCJ5b2pzb25fYXJncyQ3IiwidjEkNyIsInYwJDE1IiwidjAkMTYiLCJ2MSQ4IiwieW9qc29uX2FyZ3MkNiIsInYwJDEzIiwidjAkMTQiLCJ2MiQxIiwidjEkNSIsInYxJDYiLCJ2MiQyIiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwieW9qc29uX2FyZ3MkMTQiLCJ2MCQyOSIsInYwJDMwIiwieW9qc29uX2FyZ3MkMTMiLCJ2MiQzIiwidjEkMTMiLCJ2MCQyNyIsInYwJDI4IiwidjEkMTQiLCJ2MiQ0IiwieW9qc29uX2FyZ3MkMTIiLCJ2MSQxMSIsInYwJDI1IiwidjAkMjYiLCJ2MSQxMiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjEkOSIsInYwJDIxIiwidjAkMjIiLCJ2MSQxMCIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQyNCIsInYwJDQ5IiwidjAkNTAiLCJ5b2pzb25fYXJncyQyMyIsInYxJDI3IiwidjAkNDciLCJ2MCQ0OCIsInYxJDI4IiwieW9qc29uX2FyZ3MkMjIiLCJ2MSQyNSIsInYwJDQ1IiwidjAkNDYiLCJ2MSQyNiIsInlvanNvbl9hcmdzJDIxIiwidjIkMTEiLCJ2MSQyMyIsInYwJDQzIiwidjAkNDQiLCJ2MSQyNCIsInYyJDEyIiwieW9qc29uX2FyZ3MkMjAiLCJ2MSQyMSIsInYwJDQxIiwidjAkNDIiLCJ2MSQyMiIsInlvanNvbl9hcmdzJDE5IiwidjIkOSIsInYxJDE5IiwidjAkMzkiLCJ2MCQ0MCIsInYxJDIwIiwidjIkMTAiLCJ5b2pzb25fYXJncyQxOCIsInYwJDM3IiwidjAkMzgiLCJ5b2pzb25fYXJncyQxNyIsInYzIiwidjIkNyIsInYxJDE3IiwidjAkMzUiLCJ2MCQzNiIsInYxJDE4IiwidjIkOCIsInYzJDAiLCJ5b2pzb25fYXJncyQzMiIsInYyJDE3IiwidjEkMzciLCJ2MCQ2NSIsInYwJDY2IiwidjEkMzgiLCJ2MiQxOCIsInlvanNvbl9hcmdzJDMxIiwidjIkMTUiLCJ2MSQzNSIsInYwJDYzIiwidjAkNjQiLCJ2MSQzNiIsInYyJDE2IiwieW9qc29uX2FyZ3MkMzAiLCJ2MCQ2MSIsInYwJDYyIiwieW9qc29uX2FyZ3MkMjkiLCJ2MCQ1OSIsInYwJDYwIiwieW9qc29uX2FyZ3MkMjgiLCJ2MiQxMyIsInYxJDMzIiwidjAkNTciLCJ2MCQ1OCIsInYxJDM0IiwidjIkMTQiLCJ5b2pzb25fYXJncyQyNyIsInYxJDMxIiwidjAkNTUiLCJ2MCQ1NiIsInYxJDMyIiwieW9qc29uX2FyZ3MkMjYiLCJ2MSQyOSIsInYwJDUzIiwidjAkNTQiLCJ2MSQzMCIsInlvanNvbl9hcmdzJDI1IiwidjAkNTEiLCJ2MCQ1MiIsInlvanNvbl9vZl90ZXJtIiwieW9qc29uX29mX3QkMyIsIm1hcF90ZXJtJDAiLCJleHBfbWFwX3Rlcm0iLCJwYXRfbWFwX3Rlcm0iLCJ0eXBfbWFwX3Rlcm0iLCJ0cGF0X21hcF90ZXJtIiwiYW55X21hcF90ZXJtIiwiZmx0X21hcF90ZXJtIiwidGhpbmdzIiwidGVybSQwIiwiZSQwIiwiZSQxIiwiZiQwIiwiZSQyIiwidHAiLCJlMiIsImUxIiwiZW52JDAiLCJlJDMiLCJlJDQiLCJ0cCQwIiwiZTIkMCIsImUxJDAiLCJlJDUiLCJlJDYiLCJlMyIsImUyJDEiLCJlMSQxIiwiZTIkMiIsImUxJDIiLCJlJDciLCJlJDgiLCJmJDEiLCJlJDkiLCJlbnYkMSIsImUkMTAiLCJlMiQzIiwiZTEkMyIsImUyJDQiLCJlMSQ0IiwiZSQxMSIsImUyJDUiLCJlMSQ1IiwicmxzIiwiZSQxMiIsInQyJDAiLCJ0MSQwIiwiZSQxMyIsImZhc3RfZXF1YWwkMCIsInMyIiwidDQiLCJ0MyIsImQyIiwiZDEiLCJiMiIsImIxIiwiaTIiLCJpMSIsImYyIiwiZjEiLCJzMiQwIiwiczEkMCIsImMyIiwiYzEiLCJ0cDIiLCJ0cDEiLCJlNCIsInAyJDAiLCJwMSQwIiwiYzIkMCIsImUyJDYiLCJwMiQxIiwiYzEkMCIsImUxJDYiLCJwMSQxIiwiZTIkNyIsInRwMiQwIiwiZTEkNyIsInRwMSQwIiwiZTQkMCIsImUzJDAiLCJkMiQwIiwiZTIkOCIsImUxJDgiLCJkMSQwIiwidDIkMSIsImUyJDkiLCJ0MSQxIiwiZTEkOSIsImVzMiIsImUyJDEwIiwiZXMxIiwiZTEkMTAiLCJlNiIsImU1IiwiZTQkMSIsImUzJDEiLCJlMiQxMSIsImUxJDExIiwiZTQkMiIsImUzJDIiLCJlMiQxMiIsImUxJDEyIiwiZTIkMTMiLCJlMSQxMyIsImUyJDE0IiwiZjIkMCIsImUxJDE0IiwiZjEkMCIsImUyJDE1IiwiYzIkMSIsImUxJDE1IiwiYzEkMSIsImU0JDMiLCJlMyQzIiwiZTIkMTYiLCJlMSQxNiIsImU0JDQiLCJlMyQ0IiwiZTIkMTciLCJlMSQxNyIsImUyJDE4IiwibzIiLCJlMSQxOCIsIm8xIiwiZTQkNSIsImUzJDUiLCJvMiQwIiwiZTIkMTkiLCJlMSQxOSIsIm8xJDAiLCJmMiQxIiwiZjEkMSIsInJsczIiLCJlMiQyMCIsInJsczEiLCJlMSQyMCIsInQ0JDAiLCJ0MyQwIiwiZTIkMjEiLCJ0MiQyIiwidDEkMiIsImUxJDIxIiwicHBfdGVybSQwIiwic2hvd190ZXJtJDAiLCJwcCQzIiwic2hvdyQzIiwiXzExJDAiLCJfMTAkMCIsIl85JDAiLCJfOCQwIiwiXzckMCIsIl82JDAiLCJfNSQwIiwiXzQkMSIsIl8zJDEiLCJfMiQxIiwiXzEkNCIsIl8wJDQiLCJfMSQ1IiwiXzAkNSIsInRlcm1fb2Zfc2V4cCQwIiwidF9vZl9zZXhwJDUiLCJzZXhwXzQ0MCIsInRhZ180NDEiLCJzZXhwX2FyZ3NfNDQyIiwiYXJnMF80NDMiLCJyZXMwXzQ0NCIsInNleHBfYXJnc180NzIiLCJhcmcwXzQ3MyIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0NyIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwX2FyZ3NfNDk5IiwiYXJnMF81MDAiLCJyZXMwXzUwMSIsInNleHBfYXJnc180NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5Iiwic2V4cF9hcmdzXzQ5NCIsImFyZzBfNDk1IiwicmVzMF80OTYiLCJzZXhwX2FyZ3NfNDg5IiwiYXJnMF80OTAiLCJyZXMwXzQ5MSIsInNleHBfYXJnc181MDQiLCJhcmcxXzUwNiIsImFyZzBfNTA1IiwicmVzMF81MDciLCJyZXMxXzUwOCIsInNleHBfYXJnc180NjIiLCJhcmcwXzQ2MyIsInJlczBfNDY0Iiwic2V4cF9hcmdzXzUxMSIsImFyZzJfNTE0IiwiYXJnMV81MTMiLCJhcmcwXzUxMiIsInJlczBfNTE1IiwicmVzMV81MTYiLCJyZXMyXzUxNyIsInNleHBfYXJnc180ODIiLCJhcmcxXzQ4NCIsImFyZzBfNDgzIiwicmVzMF80ODUiLCJyZXMxXzQ4NiIsInNleHBfYXJnc180NzciLCJhcmcwXzQ3OCIsInJlczBfNDc5Iiwic2V4cF9hcmdzXzQ1NyIsImFyZzBfNDU4IiwicmVzMF80NTkiLCJzZXhwX2FyZ3NfNDUyIiwiYXJnMF80NTMiLCJyZXMwXzQ1NCIsInhfNTE5Iiwic2V4cF9vZl90ZXJtJDAiLCJhcmcwXzUyMCIsInJlczBfNTIxIiwiYXJnMF81MjIiLCJyZXMwXzUyMyIsImFyZzBfNTI0IiwicmVzMF81MjUiLCJhcmcwXzUyNiIsInJlczBfNTI3IiwiYXJnMF81MjgiLCJyZXMwXzUyOSIsImFyZzBfNTMwIiwicmVzMF81MzEiLCJhcmcwXzUzMiIsInJlczBfNTMzIiwic2V4cF9vZl90JDUiLCJhcmcwXzUzNCIsInJlczBfNTM1IiwiYXJnMV81MzciLCJhcmcwXzUzNiIsInJlczBfNTM4IiwicmVzMV81MzkiLCJhcmcwXzU0MCIsInJlczBfNTQxIiwiYXJnMF81NDIiLCJyZXMwXzU0MyIsImFyZzBfNTQ0IiwicmVzMF81NDUiLCJhcmcxXzU0NyIsImFyZzBfNTQ2IiwicmVzMF81NDgiLCJyZXMxXzU0OSIsImFyZzJfNTUyIiwiYXJnMV81NTEiLCJhcmcwXzU1MCIsInJlczBfNTUzIiwicmVzMV81NTQiLCJyZXMyXzU1NSIsInhfNTU2IiwidGVybV9vZl95b2pzb24kMCIsInRfb2ZfeW9qc29uJDQiLCJ5b2pzb25fb2ZfdGVybSQwIiwieW9qc29uX29mX3QkNCIsIm1hcF90ZXJtJDEiLCJmYXN0X2VxdWFsJDEiLCJ5MiIsIngyIiwieTEkMCIsIngxJDAiLCJ5MiQwIiwieDIkMCIsIngxJDEiLCJ1MiIsInUxIiwieDIkMSIsInBwX3R5cGVfaG9sZSIsInNob3dfdHlwZV9ob2xlIiwiXzAkNiIsInR5cGVfaG9sZV9vZl9zZXhwIiwic2V4cF81NjEiLCJ0YWdfNTYyIiwic2V4cF9hcmdzXzU2OCIsImFyZzBfNTY5IiwicmVzMF81NzAiLCJzZXhwX2FyZ3NfNTYzIiwiYXJnMF81NjQiLCJyZXMwXzU2NSIsInNleHBfb2ZfdHlwZV9ob2xlIiwiYXJnMF81NzEiLCJyZXMwXzU3MiIsImFyZzBfNTczIiwicmVzMF81NzQiLCJ0eXBlX2hvbGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfaG9sZSIsInBwX3R5cGVfcHJvdmVuYW5jZSIsInNob3dfdHlwZV9wcm92ZW5hbmNlIiwiXzAkNyIsInR5cGVfcHJvdmVuYW5jZV9vZl9zZXhwIiwic2V4cF81NzkiLCJ0YWdfNTgwIiwic2V4cF9hcmdzXzU4MSIsImFyZzBfNTgyIiwicmVzMF81ODMiLCJzZXhwX29mX3R5cGVfcHJvdmVuYW5jZSIsImFyZzBfNTg0IiwicmVzMF81ODUiLCJ0eXBlX3Byb3ZlbmFuY2Vfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfcHJvdmVuYW5jZSIsInBwX3Rlcm0kMSIsInNob3dfdGVybSQxIiwicHAkNCIsInNob3ckNCIsIl8xMyQwIiwiXzEyJDAiLCJfMTEkMSIsIl8xMCQxIiwiXzkkMSIsIl84JDEiLCJfNyQxIiwiXzYkMSIsIl81JDEiLCJfNCQyIiwiXzMkMiIsIl8yJDIiLCJfMSQ2IiwiXzAkOCIsIl8xJDciLCJfMCQ5IiwidGVybV9vZl9zZXhwJDEiLCJ0X29mX3NleHAkNiIsInNleHBfNTkwIiwidGFnXzU5MSIsInNleHBfYXJnc182MjQiLCJhcmcwXzYyNSIsInJlczBfNjI2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJzZXhwX2FyZ3NfNjM2IiwiYXJnMV82MzgiLCJhcmcwXzYzNyIsInJlczBfNjM5IiwicmVzMV82NDAiLCJzZXhwX2FyZ3NfNjE0IiwiYXJnMF82MTUiLCJyZXMwXzYxNiIsInNleHBfYXJnc181OTIiLCJhcmcwXzU5MyIsInJlczBfNTk0Iiwic2V4cF9hcmdzXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJzZXhwX2FyZ3NfNjI5IiwiYXJnMV82MzEiLCJhcmcwXzYzMCIsInJlczBfNjMyIiwicmVzMV82MzMiLCJzZXhwX2FyZ3NfNjA3IiwiYXJnMV82MDkiLCJhcmcwXzYwOCIsInJlczBfNjEwIiwicmVzMV82MTEiLCJzZXhwX2FyZ3NfNjQzIiwiYXJnMV82NDUiLCJhcmcwXzY0NCIsInJlczBfNjQ2IiwicmVzMV82NDciLCJzZXhwX2FyZ3NfNjAyIiwiYXJnMF82MDMiLCJyZXMwXzYwNCIsInhfNjQ5Iiwic2V4cF9vZl90ZXJtJDEiLCJhcmcwXzY1MCIsInJlczBfNjUxIiwiYXJnMF82NTIiLCJyZXMwXzY1MyIsImFyZzBfNjU0IiwicmVzMF82NTUiLCJzZXhwX29mX3QkNiIsImFyZzFfNjU3IiwiYXJnMF82NTYiLCJyZXMwXzY1OCIsInJlczFfNjU5IiwiYXJnMF82NjAiLCJyZXMwXzY2MSIsImFyZzBfNjYyIiwicmVzMF82NjMiLCJhcmcwXzY2NCIsInJlczBfNjY1IiwiYXJnMV82NjciLCJhcmcwXzY2NiIsInJlczBfNjY4IiwicmVzMV82NjkiLCJhcmcxXzY3MSIsImFyZzBfNjcwIiwicmVzMF82NzIiLCJyZXMxXzY3MyIsImFyZzFfNjc1IiwiYXJnMF82NzQiLCJyZXMwXzY3NiIsInJlczFfNjc3IiwieF82NzgiLCJ0ZXJtX29mX3lvanNvbiQxIiwidF9vZl95b2pzb24kNSIsInlvanNvbl9vZl90ZXJtJDEiLCJ5b2pzb25fb2ZfdCQ1IiwibWFwX3Rlcm0kMiIsInZhcmlhbnRzIiwidCQxIiwic3Vic3QiLCJ0eSIsInJld3JhcCIsInByb3YiLCJ0eSQwIiwidHkyIiwidHkxIiwic20iLCJ0eXMiLCJ0eSQxIiwidHkkMiIsInR5JDMiLCJ0eSQ0IiwidHkkNSIsImVxX2ludGVybmFsIiwibjEiLCJuMiIsInQyJDMiLCJ0MiQ0IiwidDEkMyIsInNtMSIsInNtMiIsInR5czEiLCJ0eXMyIiwidDEkNCIsInQyJDUiLCJ0MSQ1IiwidDIkNiIsInQxJDYiLCJ0MiQ3IiwidDEkNyIsImFscGhhX3N1YnN0JDAiLCJhbHBoYV9zdWJzdCIsInQyJDgiLCJ0MSQ4IiwibiQxIiwiZmFzdF9lcXVhbCQyIiwicHBfdGVybSQyIiwic2hvd190ZXJtJDIiLCJwcCQ1Iiwic2hvdyQ1IiwiXzAkMTAiLCJfMSQ4IiwiXzAkMTEiLCJ0ZXJtX29mX3NleHAkMiIsInRfb2Zfc2V4cCQ3Iiwic2V4cF82ODMiLCJ0YWdfNjg0Iiwic2V4cF9hcmdzXzY5NSIsImFyZzBfNjk2IiwicmVzMF82OTciLCJzZXhwX2FyZ3NfNjkwIiwiYXJnMF82OTEiLCJyZXMwXzY5MiIsInNleHBfYXJnc182ODUiLCJhcmcwXzY4NiIsInJlczBfNjg3IiwieF82OTkiLCJzZXhwX29mX3Rlcm0kMiIsImFyZzBfNzAwIiwicmVzMF83MDEiLCJhcmcwXzcwMiIsInJlczBfNzAzIiwiYXJnMF83MDQiLCJyZXMwXzcwNSIsInNleHBfb2ZfdCQ3IiwieF83MDYiLCJ0ZXJtX29mX3lvanNvbiQyIiwidF9vZl95b2pzb24kNiIsInlvanNvbl9vZl90ZXJtJDIiLCJ5b2pzb25fb2ZfdCQ2IiwibWFwX3Rlcm0kMyIsInR5dmFyX29mX3V0cGF0IiwiZmFzdF9lcXVhbCQzIiwicHBfdGVybSQzIiwic2hvd190ZXJtJDMiLCJwcCQ2Iiwic2hvdyQ2IiwiXzMkMyIsIl8yJDMiLCJfMSQ5IiwiXzAkMTIiLCJfMSQxMCIsIl8wJDEzIiwidGVybV9vZl9zZXhwJDMiLCJ0X29mX3NleHAkOCIsInNleHBfNzExIiwidGFnXzcxMiIsInNleHBfYXJnc183MjMiLCJhcmcxXzczMCIsImFyZzBfNzI5IiwicmVzMF83MzEiLCJzZXhwXzcyOCIsImFyZzFfNzI1IiwiYXJnMF83MjQiLCJyZXMwXzcyNiIsInJlczFfNzI3IiwicmVzMV83MzIiLCJzZXhwX2FyZ3NfNzEzIiwiYXJnMF83MTQiLCJyZXMwXzcxNSIsInNleHBfYXJnc183MTgiLCJhcmcwXzcxOSIsInJlczBfNzIwIiwieF83MzQiLCJzZXhwX29mX3Rlcm0kMyIsImFyZzBfNzM1IiwicmVzMF83MzYiLCJhcmcwXzczNyIsInJlczBfNzM4IiwiYXJnMV83NDQiLCJhcmcwXzc0MyIsInJlczBfNzQ1IiwiYXJnMV83NDAiLCJhcmcwXzczOSIsInJlczBfNzQxIiwicmVzMV83NDIiLCJyZXMxXzc0NiIsInNleHBfb2ZfdCQ4IiwieF83NDciLCJ0ZXJtX29mX3lvanNvbiQzIiwidF9vZl95b2pzb24kNyIsInlvanNvbl9vZl90ZXJtJDMiLCJ5b2pzb25fb2ZfdCQ3IiwibWFwX3Rlcm0kNCIsImZhc3RfZXF1YWwkNCIsInIyIiwicHBfZmlsdGVyIiwic2hvd19maWx0ZXIiLCJfMSQxMSIsIl8wJDE0IiwiZmlsdGVyX29mX3NleHAiLCJzZXhwXzc2MyIsImZpZWxkX3NleHBzXzc2NCIsInBhdF83NjUiLCJhY3RfNzY3IiwiZHVwbGljYXRlc183NjkiLCJleHRyYV83NzAiLCJpdGVyXzc3NyIsInNleHBfNzYzJDAiLCJmaWVsZF9zZXhwc183NzMiLCJmaWVsZF9uYW1lXzc3MSIsInRhaWxfNzc4IiwiZmllbGRfc2V4cF83NzIkMiIsImZpZWxkX3NleHBfNzcyIiwieF83NzkiLCJmaWVsZF9zZXhwXzc3MiQwIiwiZnZhbHVlXzc3NSIsImZpZWxkX3NleHBfNzcyJDEiLCJmdmFsdWVfNzc0IiwiYWN0Xzc2OCIsInBhdF83NjYiLCJzZXhwX29mX2ZpbHRlciIsImFjdF83ODMiLCJwYXRfNzgxIiwiYXJnXzc4NCIsImJuZHNfNzgwIiwiYXJnXzc4MiIsImJuZHNfNzgwJDAiLCJmaWx0ZXJfb2ZfeW9qc29uIiwicGF0X2ZpZWxkIiwiYWN0X2ZpZWxkIiwiYWN0X3ZhbHVlIiwicGF0X3ZhbHVlIiwieW9qc29uX29mX2ZpbHRlciIsInZfYWN0Iiwidl9wYXQiLCJwcCQ3Iiwic2hvdyQ3IiwiXzEkMTIiLCJfMCQxNSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF83ODkiLCJ0YWdfNzkwIiwic2V4cF9hcmdzXzc5NiIsImFyZzFfNzk4IiwiYXJnMF83OTciLCJyZXMwXzc5OSIsInJlczFfODAwIiwic2V4cF9hcmdzXzc5MSIsImFyZzBfNzkyIiwicmVzMF83OTMiLCJzZXhwX29mX3QkOSIsImFyZzBfODAxIiwicmVzMF84MDIiLCJhcmcxXzgwNCIsImFyZzBfODAzIiwicmVzMF84MDUiLCJyZXMxXzgwNiIsInRfb2ZfeW9qc29uJDgiLCJ5b2pzb25fb2ZfdCQ4IiwibWFwcGVyIiwiYWN0IiwicGF0IiwiYWN0JDAiLCJpZHgiLCJtYXBfdGVybSQ1IiwiZmFzdF9lcXVhbCQ1IiwiaG9sZSIsInRtcyIsImNsc19vZl90ZXJtIiwiZXJyb3Jfc291cmNlXzAyOSIsImVycm9yX3NvdXJjZV8wNTciLCJlcnJvcl9zb3VyY2VfMDcwIiwicHBfa2luZCIsInNob3dfa2luZCIsImtpbmRfb2Zfc2V4cCIsInNleHBfb2Zfa2luZCIsImtpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX2tpbmQiLCJwcF92YXJfZW50cnkiLCJzaG93X3Zhcl9lbnRyeSIsInZhcl9lbnRyeV9vZl9zZXhwIiwibmFtZV8wMTUiLCJpZF8wMTciLCJ0eXBfMDE5IiwiZHVwbGljYXRlc18wMjEiLCJleHRyYV8wMjIiLCJpdGVyXzAzMCIsImZpZWxkX25hbWVfMDIzIiwidGFpbF8wMzEiLCJmaWVsZF9zZXhwXzAyNCQzIiwiZmllbGRfc2V4cF8wMjQiLCJ4XzAzMiIsImZpZWxkX3NleHBfMDI0JDAiLCJmaWVsZF9zZXhwXzAyNCQxIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI0JDIiLCJmdmFsdWVfMDI3IiwidHlwXzAyMCIsImlkXzAxOCIsIm5hbWVfMDE2Iiwic2V4cF9vZl92YXJfZW50cnkiLCJ0eXBfMDM4IiwiaWRfMDM2IiwibmFtZV8wMzQiLCJibmRzXzAzMyIsImFyZ18wMzciLCJibmRzXzAzMyQwIiwiYXJnXzAzNSIsImJuZHNfMDMzJDEiLCJ2YXJfZW50cnlfb2ZfeW9qc29uIiwibmFtZV9maWVsZCIsInR5cF9maWVsZCIsInR5cF92YWx1ZSIsIm5hbWVfdmFsdWUiLCJ5b2pzb25fb2ZfdmFyX2VudHJ5Iiwidl90eXAiLCJ2X25hbWUiLCJwcF90dmFyX2VudHJ5Iiwic2hvd190dmFyX2VudHJ5IiwidHZhcl9lbnRyeV9vZl9zZXhwIiwic2V4cF8wNDEiLCJmaWVsZF9zZXhwc18wNDIiLCJuYW1lXzA0MyIsImlkXzA0NSIsImtpbmRfMDQ3IiwiZHVwbGljYXRlc18wNDkiLCJleHRyYV8wNTAiLCJpdGVyXzA1OCIsInNleHBfMDQxJDAiLCJmaWVsZF9zZXhwc18wNTMiLCJmaWVsZF9uYW1lXzA1MSIsInRhaWxfMDU5IiwiZmllbGRfc2V4cF8wNTIkMyIsImZpZWxkX3NleHBfMDUyIiwieF8wNjAiLCJmaWVsZF9zZXhwXzA1MiQwIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDUyJDEiLCJmdmFsdWVfMDU0IiwiZmllbGRfc2V4cF8wNTIkMiIsImZ2YWx1ZV8wNTUiLCJraW5kXzA0OCIsImlkXzA0NiIsIm5hbWVfMDQ0Iiwic2V4cF9vZl90dmFyX2VudHJ5Iiwia2luZF8wNjYiLCJpZF8wNjQiLCJuYW1lXzA2MiIsImFyZ18wNjciLCJibmRzXzA2MSIsImFyZ18wNjUiLCJibmRzXzA2MSQwIiwiYXJnXzA2MyIsImJuZHNfMDYxJDEiLCJ0dmFyX2VudHJ5X29mX3lvanNvbiIsImtpbmRfZmllbGQiLCJraW5kX3ZhbHVlIiwieW9qc29uX29mX3R2YXJfZW50cnkiLCJ2X2tpbmQiLCJwcF9lbnRyeSIsInNob3dfZW50cnkiLCJlbnRyeV9vZl9zZXhwIiwic2V4cF8wNzIiLCJ0YWdfMDczIiwicmVzMF8wNzYiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsInNleHBfYXJnc18wNzkiLCJzZXhwX29mX2VudHJ5IiwiYXJnMF8wODciLCJyZXMwXzA4OCIsImFyZzBfMDg5IiwicmVzMF8wOTAiLCJlbnRyeV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZW50cnkiLCJ4XzA5NCIsInhfMDk1IiwiZW50cnkiLCJleHRlbmRfdHZhciIsInR2YXJfZW50cnkiLCJleHRlbmRfYWxpYXMiLCJleHRlbmRfZHVtbXlfdHZhciIsInR2YXIiLCJsb29rdXBfdHZhciIsImxvb2t1cF9hbGlhcyIsImdldF9pZCIsImxvb2t1cF92YXIiLCJsb29rdXBfY3RyIiwiaXNfYWxpYXMiLCJpc19hYnN0cmFjdCIsImFkZF9jdHJzIiwiY3RycyIsInR5cCIsInR5cCQwIiwic3VidHJhY3RfcHJlZml4IiwicHJlZml4X2N0eCIsInByZWZpeF9sZW5ndGgiLCJjdHhfbGVuZ3RoIiwiYWRkZWRfYmluZGluZ3MiLCJjdHhfYWZ0ZXIiLCJjdHhfYmVmb3JlIiwibmV3X2NvdW50IiwiZmlsdGVyX2R1cGxpY2F0ZXMiLCJ0eXBfc2V0IiwidGVybV9zZXQiLCJuYW1lJDAiLCJzaGFkb3dzX3R5cCIsIm1rX2Zhc3QiLCJpc19hcnJvdyIsInR5cCQxIiwiaXNfZm9yYWxsIiwidG9fdHlwIiwidXR5cCIsInV0eXAkMCIsInUiLCJ1dHMiLCJ0b19jdHJfbWFwIiwidXMiLCJ1dHlwJDEiLCJ1dHBhdCIsInRib2R5JDAiLCJ0Ym9keSIsInV0cGF0JDAiLCJ0Ym9keSQyIiwibmFtZSQxIiwiY3R4JDEiLCJ0Ym9keSQxIiwidG9fdmFyaWFudCIsInUkMCIsInBwX3NvdXJjZSIsInNob3dfc291cmNlIiwic291cmNlX29mX3NleHAiLCJ0eV8wMTAiLCJ0eV8wMTEiLCJzZXhwX29mX3NvdXJjZSIsInR5XzAyNiIsInNvdXJjZV9vZl95b2pzb24iLCJ0eV9maWVsZCIsInR5X3ZhbHVlIiwieW9qc29uX29mX3NvdXJjZSIsInZfdHkiLCJzb3VyY2UiLCJvZl9zb3VyY2UiLCJqb2luX3R5cGVfcHJvdmVuYW5jZSIsImgxIiwiaDIiLCJmcmVlX3ZhcnMiLCJib3VuZCIsIm9wdCQzIiwidmFyX2NvdW50IiwiZnJlc2hfdmFyIiwidmFyX25hbWUiLCJ1bnJvbGwiLCJ0eV9ib2R5IiwiZml4IiwicmVzb2x2ZSIsImpvaW4kMCIsInR5MiQ1IiwidHlfam9pbiIsInR5MSQwIiwidHkyJDAiLCJ0eTIkMSIsInR5MSQxIiwidHkyJDIiLCJ0eTEkMiIsInR5MSQzIiwidHkxJDQiLCJ0eTIkMyIsInR5MSQ1IiwidHkxJDYiLCJ0eTIkNCIsInR5MSQ3IiwidHlfbmFtZSIsInJld3JhcDEiLCJ0ZXJtMSIsImpvaW5fZml4Iiwiam9pbl9hbGwiLCJpc19jb25zaXN0ZW50Iiwid2Vha19oZWFkX25vcm1hbGl6ZSIsIm5vcm1hbGl6ZSIsInRzJDAiLCJ0cGF0IiwibWF0Y2hlZF9hcnJvdyIsInR5X291dCIsInR5X2luIiwibWF0Y2hlZF9mb3JhbGwiLCJtYXRjaGVkX3Byb2QiLCJtYXRjaGVkX2xpc3QiLCJtYXRjaGVkX2FyZ3MiLCJkZWZhdWx0X2FyaXR5IiwiZ2V0X3N1bV9jb25zdHJ1Y3RvcnMiLCJ0eV9ib2R5JDAiLCJzbSQwIiwiaXNfdW5rbm93biIsIm5lZWRzX3BhcmVucyIsInByZXR0eV9wcmludF90dmFyIiwidHYiLCJwcmV0dHlfcHJpbnQiLCJwYXJlbl9wcmV0dHlfcHJpbnQiLCJ0MCIsImN0cl9wcmV0dHlfcHJpbnQiLCJ0MCQwIiwidHYkMCIsInBhdCQwIiwicGF0JDEiLCJpc19mdW5fdmFyIiwicGF0JDIiLCJpc190dXBsZV9vZl9hcnJvd3MiLCJwYXRzIiwiaXNfdHVwbGVfb2ZfdmFycyIsImdldF92YXIiLCJnZXRfZnVuX3ZhciIsInZhciQwIiwiZ2V0X251bV9vZl92YXJzIiwiY3RyX25hbWUiLCJwcF9jbHMkMCIsInNob3dfY2xzJDAiLCJjbHNfb2Zfc2V4cCQwIiwic2V4cF9vZl9jbHMkMCIsImNsc19vZl95b2pzb24kMCIsInlvanNvbl9vZl9jbHMkMCIsImhvbGUkMCIsInJlcF9pZCQwIiwiZnJlc2gkMCIsInRlcm1fb2YkMCIsInVud3JhcCQwIiwiY2xzX29mX3Rlcm0kMCIsInNob3dfY2xzJDEiLCJpc190dXBsZV9vZl9mdW5jdGlvbnMiLCJjdHJfbmFtZSQwIiwiaXNfZGVmZXJyYWwiLCJnZXRfbnVtX29mX2Z1bmN0aW9ucyIsInBwX2NscyQxIiwic2hvd19jbHMkMiIsImNsc19vZl9zZXhwJDEiLCJzZXhwXzAyNiIsInNleHBfb2ZfY2xzJDEiLCJjbHNfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfY2xzJDEiLCJhbnlfaWRzIiwidG0iLCJzY3J1dCIsInJlcF9pZCQxIiwiaXNfZXhwIiwiaXNfcGF0IiwiaXNfdHlwIiwiaWRzJDAiLCJ0bSQwIiwidG0kMSIsInRtJDIiLCJ0bSQzIiwicmVwX2lkJDIiLCJleHAiLCJyZXBsYWNlX2FsbF9pZHMiLCJyZXBhaXJfaWRzIiwic3RyaXBfY2FzdHMiLCJhc3NpZ25fbmFtZV9pZl9ub25lIiwiYm9keSIsImJvZHkkMCIsInR5X3N1YnN0Iiwic2V4cF9hcmdzXzA0MiIsImFyZzBfMDQzIiwicmVzMF8wNDQiLCJzZXhwX2FyZ3NfMDQ3Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDU3IiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsInNleHBfYXJnc18wNjIiLCJhcmcxXzA2NCIsImFyZzBfMDYzIiwicmVzMF8wNjUiLCJyZXMxXzA2NiIsImFyZzBfMDcyIiwicmVzMF8wNzMiLCJhcmcwXzA3NCIsInJlczBfMDc1IiwiYXJnMF8wODYiLCJyZXMwXzA4NyIsImFyZzBfMDg4IiwicmVzMF8wODkiLCJhcmcwXzA5MCIsInJlczBfMDkxIiwiYXJnMF8wOTIiLCJyZXMwXzA5MyIsImFyZzFfMDk1IiwiYXJnMF8wOTQiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwiYXJnMF8wOTgiLCJyZXMwXzA5OSIsInBwX2J1aWx0aW4iLCJzaG93X2J1aWx0aW4iLCJidWlsdGluX29mX3NleHAiLCJhcmcyXzAxNyIsInJlczJfMDIwIiwic2V4cF9vZl9idWlsdGluIiwiYXJnMV8wMjIiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJyZXMyXzAzMCIsImJ1aWx0aW5fb2ZfeW9qc29uIiwieW9qc29uX29mX2J1aWx0aW4iLCJwcF9mb3JtcyIsInNob3dfZm9ybXMiLCJmb3Jtc19vZl9zZXhwIiwic2V4cF9vZl9mb3JtcyIsImZvcm1zX29mX3lvanNvbiIsInlvanNvbl9vZl9mb3JtcyIsImNvbnN0JDAiLCJidWlsdGlucyIsImZuIiwiaW1wbCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwiZXBzaWxvbl9mbG9hdCIsInBpIiwibWF4X2ludCIsIm1pbl9pbnQiLCJ1bmFyeSIsImJpbmFyeSIsInRlcm5hcnkiLCJkMyIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwic3RyaW5nX29mX2ludCIsInN0cmluZ19vZl9mbG9hdCIsInN0cmluZ19vZl9ib29sIiwiaW50X29mX2Zsb2F0IiwiZmxvYXRfb2ZfaW50IiwiYWJzIiwiZmxvYXRfb3AiLCJhYnNfZmxvYXQiLCJjZWlsIiwiZmxvb3IiLCJzcXJ0IiwibG9nIiwibG9nMTAiLCJzaW4iLCJjb3MiLCJ0YW4iLCJhc2luIiwiYWNvcyIsImF0YW4iLCJjb252ZXJ0IiwiZCQwIiwiZCQxIiwiZCQyIiwiaW50X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nIiwiaW50X21vZCIsInN0cmluZ19sZW5ndGgiLCJzdHJpbmdfY29tcGFyZSIsInN0cmluZ190cmltIiwic3RyaW5nX29mIiwic3RyaW5nX2NvbmNhdCIsInN0cmluZ19zdWIiLCJsZW4iLCJtZXRhX2NvbnNfbWFwIiwibWV0YSIsImN0eF9pbml0IiwiZm9ybXNfaW5pdCIsImVudl9pbml0IiwicmVzMF8wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwicmVzMF8wNDYiLCJjbHMiLCJjbHMkMCIsImNscyQxIiwiY2xzJDIiLCJjbHMkMyIsImNscyQ0IiwiY2xzJDUiLCJpZF8wMDQiLCJleHBlY3RlZF90eV8wMDYiLCJleHBlY3RlZF90eV8wMDciLCJleHBlY3RlZF90eV8wMjIiLCJpZF8wMjAiLCJleHBlY3RlZF90eV9maWVsZCIsImV4cGVjdGVkX3R5X3ZhbHVlIiwidl9leHBlY3RlZF90eSIsInhfMDI1IiwieF8wMjYiLCJjb19jdHgiLCJjb19jdHgxIiwiY29fY3R4MiIsInVuaW9uIiwic2luZ2xldG9uIiwiZXhwZWN0ZWRfdHkiLCJlbnRyaWVzIiwiZXhwZWN0ZWRfdHlzIiwiYW5hIiwidHlfb2YiLCJvZl9hcnJvdyIsIm9mX2ZvcmFsbCIsIm5hbWVfb3B0IiwiaXRlbSIsIm5hbWVfZXhwZWN0ZWRfb3B0IiwibmFtZV9leHBlY3RlZCIsIm9mX3Byb2QiLCJvZl9jb25zX2hkIiwib2ZfY29uc190bCIsImhkX3R5Iiwib2ZfbGlzdF9jb25jYXQiLCJvZl9saXN0X2xpdCIsImN0cl9hbmFfdHlwIiwidHlfYW5hIiwidHlfZW50cnkiLCJvZl9jdHJfaW5fYXAiLCJvZl9hcCIsIm1vZGUkMCIsInR5cGFwX21vZGUiLCJvZl9kZWZlcnJlZF9hcF9hcmdzIiwidHlfaW5zIiwidHlfaW5zJDAiLCJlcnJvcl9zb3VyY2VfMDY1IiwiZXJyb3Jfc291cmNlXzA5MSIsImVycm9yX3NvdXJjZV8xMjMiLCJwcF9qb2luX3R5cGUiLCJzaG93X2pvaW5fdHlwZSIsImpvaW5fdHlwZV9vZl9zZXhwIiwic2V4cF9vZl9qb2luX3R5cGUiLCJqb2luX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2pvaW5fdHlwZSIsImFzeW5fdHkiLCJhbmFtZSIsInNleHBfYXJnc18wMjMiLCJhcmcwXzAyNCIsInNleHBfYXJnc18wMjgiLCJhcmcwXzAyOSIsInN5bl90eV8wMzYiLCJkdXBsaWNhdGVzXzAzOCIsImV4dHJhXzAzOSIsIml0ZXJfMDQ1Iiwic2V4cF8wMzIiLCJmaWVsZF9uYW1lXzA0MCIsInRhaWxfMDQ2IiwiZmllbGRfc2V4cF8wNDEkMiIsImZpZWxkX3NleHBfMDQxIiwieF8wNDciLCJmaWVsZF9zZXhwXzA0MSQwIiwiZmllbGRfc2V4cF8wNDEkMSIsInN5bl90eV8wMzciLCJuYW1lXzAzNSIsImFyZzFfMDE4IiwicmVzMV8wMjAiLCJyZXMwXzA1NyIsInN5bl90eV8wNjEiLCJuYW1lXzA1OSIsImJuZHNfMDU4IiwiYm5kc18wNTgkMCIsInN5bl90eV9maWVsZCIsInN5bl90eV92YWx1ZSIsInZfc3luX3R5IiwicHBfZXJyb3JfcGFydGlhbF9hcCIsImFhY3R1YWwiLCJhZXhwZWN0ZWQiLCJzaG93X2Vycm9yX3BhcnRpYWxfYXAiLCJlcnJvcl9wYXJ0aWFsX2FwX29mX3NleHAiLCJzZXhwXzA2OCIsImZpZWxkX3NleHBzXzA2NyIsImV4cGVjdGVkXzA3MCIsImFjdHVhbF8wNzIiLCJkdXBsaWNhdGVzXzA3NCIsImV4dHJhXzA3NSIsIml0ZXJfMDgxIiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA3OCIsImZpZWxkX25hbWVfMDc2IiwidGFpbF8wODIiLCJmaWVsZF9zZXhwXzA3NyQyIiwiZmllbGRfc2V4cF8wNzciLCJ4XzA4MyIsImZpZWxkX3NleHBfMDc3JDAiLCJmdmFsdWVfMDgwIiwiZmllbGRfc2V4cF8wNzckMSIsImZ2YWx1ZV8wNzkiLCJhY3R1YWxfMDczIiwiZXhwZWN0ZWRfMDcxIiwic2V4cF9vZl9lcnJvcl9wYXJ0aWFsX2FwIiwiYWN0dWFsXzA4NyIsImV4cGVjdGVkXzA4NSIsImFyZ18wODgiLCJibmRzXzA4NCIsImFyZ18wODYiLCJibmRzXzA4NCQwIiwiZXJyb3JfcGFydGlhbF9hcF9vZl95b2pzb24iLCJleHBlY3RlZF9maWVsZCIsImFjdHVhbF9maWVsZCIsImFjdHVhbF92YWx1ZSIsImV4cGVjdGVkX3ZhbHVlIiwieW9qc29uX29mX2Vycm9yX3BhcnRpYWxfYXAiLCJ2X2FjdHVhbCIsInZfZXhwZWN0ZWQiLCJwcF9leHAiLCJzaG93X2V4cCIsImV4cF9vZl9zZXhwIiwic2V4cF8wOTMiLCJ0YWdfMDk0Iiwic2V4cF9vZl9leHAiLCJhcmcwXzExMyIsInJlczBfMTE0IiwiYXJnMF8xMTUiLCJyZXMwXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9leHAiLCJwcF9wYXQiLCJzaG93X3BhdCIsInBhdF9vZl9zZXhwIiwic2V4cF8xMjUiLCJ0YWdfMTI2Iiwic2V4cF9hcmdzXzEyNyIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJzZXhwX29mX3BhdCIsImFyZzBfMTMwIiwicmVzMF8xMzEiLCJwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BhdCIsImpvaW5fb2YiLCJ0eXBfb2YiLCJzeW5fdHkiLCJ0eXBfb2ZfZXhwIiwic2VsZiIsInR5cF9vZl9wYXQiLCJvZl9leHBfdmFyIiwib2ZfY3RyIiwib2ZfZGVmZXJyZWRfYXAiLCJleHBlY3RlZCIsImFjdHVhbCIsImFkZF9zb3VyY2UiLCJsaXN0bGl0IiwibGlzdF9jb25jYXQiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzA3MSIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyNSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMTk2IiwiZXJyb3Jfc291cmNlXzIxNSIsImVycm9yX3NvdXJjZV8yMzMiLCJlcnJvcl9zb3VyY2VfMjUxIiwiZXJyb3Jfc291cmNlXzI2OSIsImVycm9yX3NvdXJjZV8yNzMiLCJ0cF9sb2MkMTEiLCJlcnJvcl9zb3VyY2VfMjk5IiwidHBfbG9jJDEyIiwiZXJyb3Jfc291cmNlXzMzMSIsInRwX2xvYyQxMyIsImVycm9yX3NvdXJjZV8zNzEiLCJ0cF9sb2MkMTQiLCJlcnJvcl9zb3VyY2VfMzg5IiwidHBfbG9jJDE1IiwiZXJyb3Jfc291cmNlXzM5MyIsInRwX2xvYyQxNiIsImVycm9yX3NvdXJjZV8zOTciLCJ0cF9sb2MkMTciLCJlcnJvcl9zb3VyY2VfNDE5IiwidHBfbG9jJDE4IiwiZXJyb3Jfc291cmNlXzQzMCIsInRwX2xvYyQxOSIsImVycm9yX3NvdXJjZV80ODEiLCJ0cF9sb2MkMjAiLCJlcnJvcl9zb3VyY2VfNTQyIiwidHBfbG9jJDIxIiwiZXJyb3Jfc291cmNlXzU5NiIsInRwX2xvYyQyMiIsImVycm9yX3NvdXJjZV82MzgiLCJ0cF9sb2MkMjMiLCJlcnJvcl9zb3VyY2VfNjczIiwidHBfbG9jJDI0IiwiZXJyb3Jfc291cmNlXzY4OCIsInRwX2xvYyQyNSIsImVycm9yX3NvdXJjZV83MjciLCJ0cF9sb2MkMjYiLCJwcF9hbmNlc3RvcnMiLCJzaG93X2FuY2VzdG9ycyIsImFuY2VzdG9yc19vZl9zZXhwIiwic2V4cF9vZl9hbmNlc3RvcnMiLCJhbmNlc3RvcnNfb2ZfeW9qc29uIiwieW9qc29uX29mX2FuY2VzdG9ycyIsInBwX2Vycm9yX2luY29uc2lzdGVudCIsInNob3dfZXJyb3JfaW5jb25zaXN0ZW50IiwiYXN5biIsImFhbmEiLCJlcnJvcl9pbmNvbnNpc3RlbnRfb2Zfc2V4cCIsImZpZWxkX3NleHBzXzAwOCIsImFuYV8wMTEiLCJzeW5fMDEzIiwiaXRlcl8wMjIiLCJzZXhwXzAwOSQwIiwidGFpbF8wMjMiLCJ4XzAyNCIsImZ2YWx1ZV8wMjAiLCJmdmFsdWVfMDIxIiwic3luXzAxNCIsImFuYV8wMTIiLCJzZXhwX29mX2Vycm9yX2luY29uc2lzdGVudCIsInN5bl8wMzgiLCJhbmFfMDM2IiwiYm5kc18wMzUiLCJibmRzXzAzNSQwIiwiZXJyb3JfaW5jb25zaXN0ZW50X29mX3lvanNvbiIsImFuYV9maWVsZCIsInN5bl9maWVsZCIsInN5bl92YWx1ZSIsImFuYV92YWx1ZSIsInlvanNvbl9vZl9lcnJvcl9pbmNvbnNpc3RlbnQiLCJ2X3N5biIsInZfYW5hIiwicHBfZXJyb3Jfbm9fdHlwZSIsInNob3dfZXJyb3Jfbm9fdHlwZSIsImVycm9yX25vX3R5cGVfb2Zfc2V4cCIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJzZXhwX2FyZ3NfMDUwIiwiYXJnMF8wNTEiLCJzZXhwX29mX2Vycm9yX25vX3R5cGUiLCJyZXMwXzA2NCIsImVycm9yX25vX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX25vX3R5cGUiLCJwcF9lcnJvcl9jb21tb24iLCJzaG93X2Vycm9yX2NvbW1vbiIsImVycm9yX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8wNzMiLCJ0YWdfMDc0Iiwic2V4cF9hcmdzXzA4MCIsImFyZzBfMDgxIiwicmVzMF8wODIiLCJzZXhwX29mX2Vycm9yX2NvbW1vbiIsImFyZzBfMDgzIiwicmVzMF8wODQiLCJlcnJvcl9jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX2NvbW1vbiIsInBwX2Vycm9yX2V4cCIsInNob3dfZXJyb3JfZXhwIiwiZXJyb3JfZXhwX29mX3NleHAiLCJzZXhwXzA5MSIsInRhZ18wOTIiLCJzZXhwX2FyZ3NfMDkzIiwicmVzMF8wOTUiLCJzZXhwX2FyZ3NfMTAzIiwiYXJnMF8xMDQiLCJyZXMwXzEwNSIsInNleHBfYXJnc18wOTgiLCJhcmcwXzA5OSIsInJlczBfMTAwIiwic2V4cF9vZl9lcnJvcl9leHAiLCJhcmcwXzEwOCIsInJlczBfMTA5IiwiYXJnMF8xMTAiLCJyZXMwXzExMSIsImVycm9yX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfZXhwIiwicHBfZXJyb3JfcGF0Iiwic2hvd19lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJzZXhwX29mX2Vycm9yX3BhdCIsImVycm9yX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfcGF0IiwicHBfb2tfYW5hIiwic2hvd19va19hbmEiLCJham9pbiIsImFub2pvaW4iLCJhYW5hJDAiLCJva19hbmFfb2Zfc2V4cCIsInNleHBfMTI4IiwiZmllbGRfc2V4cHNfMTQ3IiwiYW5hXzE1MCIsIm5vam9pbl8xNTIiLCJkdXBsaWNhdGVzXzE1NCIsImV4dHJhXzE1NSIsIml0ZXJfMTYxIiwic2V4cF8xNDgiLCJmaWVsZF9zZXhwc18xNTgiLCJmaWVsZF9uYW1lXzE1NiIsInRhaWxfMTYyIiwiZmllbGRfc2V4cF8xNTckMiIsImZpZWxkX3NleHBfMTU3IiwieF8xNjMiLCJmaWVsZF9zZXhwXzE1NyQwIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTU3JDEiLCJmdmFsdWVfMTYwIiwibm9qb2luXzE1MyIsImFuYV8xNTEiLCJmaWVsZF9zZXhwc18xMjciLCJhbmFfMTMwIiwic3luXzEzMiIsImpvaW5fMTM0IiwiZHVwbGljYXRlc18xMzYiLCJleHRyYV8xMzciLCJpdGVyXzE0NCIsInNleHBfMTI4JDAiLCJmaWVsZF9zZXhwc18xNDAiLCJmaWVsZF9uYW1lXzEzOCIsInRhaWxfMTQ1IiwiZmllbGRfc2V4cF8xMzkkMyIsImZpZWxkX3NleHBfMTM5IiwieF8xNDYiLCJmaWVsZF9zZXhwXzEzOSQwIiwiZnZhbHVlXzE0MiIsImZpZWxkX3NleHBfMTM5JDEiLCJmdmFsdWVfMTQxIiwiZmllbGRfc2V4cF8xMzkkMiIsImZ2YWx1ZV8xNDMiLCJqb2luXzEzNSIsInN5bl8xMzMiLCJhbmFfMTMxIiwic2V4cF9vZl9va19hbmEiLCJqb2luXzE2OSIsInN5bl8xNjciLCJhbmFfMTY1IiwiYXJnXzE3MCIsImJuZHNfMTY0IiwiYXJnXzE2OCIsImJuZHNfMTY0JDAiLCJhcmdfMTY2IiwiYm5kc18xNjQkMSIsIm5vam9pbl8xNzQiLCJhbmFfMTcyIiwiYXJnXzE3NSIsImJuZHNfMTcxIiwiYXJnXzE3MyIsImJuZHNfMTcxJDAiLCJva19hbmFfb2ZfeW9qc29uIiwibm9qb2luX2ZpZWxkIiwibm9qb2luX3ZhbHVlIiwiZmllbGRfeW9qc29ucyQwIiwiYW5hX2ZpZWxkJDAiLCJqb2luX2ZpZWxkIiwiZHVwbGljYXRlcyQwIiwiZXh0cmEkMCIsIml0ZXIkMCIsImpvaW5fdmFsdWUiLCJhbmFfdmFsdWUkMCIsInlvanNvbl9vZl9va19hbmEiLCJ2X2pvaW4iLCJ2X25vam9pbiIsInZfYW5hJDAiLCJwcF9va19jb21tb24iLCJzaG93X29rX2NvbW1vbiIsIm9rX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8xODAiLCJ0YWdfMTgxIiwicmVzMF8xODQiLCJzZXhwX2FyZ3NfMTg3IiwiYXJnMF8xODgiLCJyZXMwXzE4OSIsInNleHBfb2Zfb2tfY29tbW9uIiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsInJlczBfMTkzIiwib2tfY29tbW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9va19jb21tb24iLCJwcF9va19leHAiLCJzaG93X29rX2V4cCIsIm9rX2V4cF9vZl9zZXhwIiwic2V4cF8xOTgiLCJ0YWdfMTk5IiwicmVzMF8yMDciLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsInNleHBfb2Zfb2tfZXhwIiwiYXJnMF8yMDgiLCJhcmcwXzIxMCIsInJlczBfMjExIiwib2tfZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9va19leHAiLCJwcF9va19wYXQiLCJzaG93X29rX3BhdCIsInBwX3N0YXR1c19jb21tb24iLCJzaG93X3N0YXR1c19jb21tb24iLCJzdGF0dXNfY29tbW9uX29mX3NleHAiLCJzZXhwXzIxNyIsInRhZ18yMTgiLCJzZXhwX2FyZ3NfMjI0IiwiYXJnMF8yMjUiLCJyZXMwXzIyNiIsInNleHBfYXJnc18yMTkiLCJhcmcwXzIyMCIsInJlczBfMjIxIiwic2V4cF9vZl9zdGF0dXNfY29tbW9uIiwicmVzMF8yMjgiLCJhcmcwXzIyOSIsInJlczBfMjMwIiwic3RhdHVzX2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2NvbW1vbiIsInBwX3N0YXR1c19leHAiLCJzaG93X3N0YXR1c19leHAiLCJzdGF0dXNfZXhwX29mX3NleHAiLCJzZXhwXzIzNSIsInRhZ18yMzYiLCJzZXhwX2FyZ3NfMjQyIiwiYXJnMF8yNDMiLCJyZXMwXzI0NCIsInNleHBfYXJnc18yMzciLCJhcmcwXzIzOCIsInJlczBfMjM5Iiwic2V4cF9vZl9zdGF0dXNfZXhwIiwiYXJnMF8yNDUiLCJyZXMwXzI0NiIsImFyZzBfMjQ3Iiwic3RhdHVzX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2V4cCIsInBwX3N0YXR1c19wYXQiLCJzaG93X3N0YXR1c19wYXQiLCJzdGF0dXNfcGF0X29mX3NleHAiLCJzZXhwXzI1MyIsInRhZ18yNTQiLCJzZXhwX2FyZ3NfMjYwIiwiYXJnMF8yNjEiLCJzZXhwX2FyZ3NfMjU1IiwiYXJnMF8yNTYiLCJyZXMwXzI1NyIsInNleHBfb2Zfc3RhdHVzX3BhdCIsImFyZzBfMjYzIiwicmVzMF8yNjQiLCJhcmcwXzI2NSIsInJlczBfMjY2Iiwic3RhdHVzX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3BhdCIsInBwX3N0YXR1c192YXJpYW50Iiwic2hvd19zdGF0dXNfdmFyaWFudCIsInN0YXR1c192YXJpYW50X29mX3NleHAiLCJzZXhwXzI3MCIsInNleHBfb2Zfc3RhdHVzX3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3ZhcmlhbnQiLCJwcF90eXBfZXhwZWN0cyIsInNob3dfdHlwX2V4cGVjdHMiLCJ0eXBfZXhwZWN0c19vZl9zZXhwIiwic2V4cF8yNzUiLCJ0YWdfMjc2Iiwic2V4cF9hcmdzXzI4NCIsImFyZzFfMjg2IiwiYXJnMF8yODUiLCJyZXMwXzI4NyIsInJlczFfMjg4Iiwic2V4cF9hcmdzXzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwic2V4cF9vZl90eXBfZXhwZWN0cyIsImFyZzFfMjkwIiwiYXJnMF8yODkiLCJyZXMwXzI5MSIsInJlczFfMjkyIiwicmVzMF8yOTUiLCJyZXMxXzI5NiIsInR5cF9leHBlY3RzX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBfZXhwZWN0cyIsInBwX2Vycm9yX3R5cCIsInNob3dfZXJyb3JfdHlwIiwiXzIkNCIsImVycm9yX3R5cF9vZl9zZXhwIiwic2V4cF8zMDEiLCJ0YWdfMzAyIiwic2V4cF9hcmdzXzMwMyIsImFyZzBfMzA0IiwicmVzMF8zMDUiLCJzZXhwX2FyZ3NfMzEzIiwiYXJnMF8zMTQiLCJyZXMwXzMxNSIsInNleHBfYXJnc18zMDgiLCJyZXMwXzMxMCIsInNleHBfYXJnc18zMTgiLCJzZXhwX29mX2Vycm9yX3R5cCIsImVycm9yX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHlwIiwicHBfb2tfdHlwIiwic2hvd19va190eXAiLCJfMiQ1Iiwib2tfdHlwX29mX3NleHAiLCJzZXhwXzMzMyIsInRhZ18zMzQiLCJzZXhwX2FyZ3NfMzQyIiwic2V4cF9hcmdzXzMzNSIsImFyZzFfMzM3IiwiYXJnMF8zMzYiLCJyZXMwXzMzOCIsInJlczFfMzM5Iiwic2V4cF9hcmdzXzM0NyIsImFyZzFfMzQ5IiwiYXJnMF8zNDgiLCJzZXhwX2FyZ3NfMzU0IiwiYXJnMF8zNTUiLCJzZXhwX29mX29rX3R5cCIsImFyZzFfMzU4IiwiYXJnMF8zNTciLCJyZXMwXzM1OSIsInJlczFfMzYwIiwiYXJnMF8zNjEiLCJhcmcxXzM2NCIsImFyZzBfMzYzIiwicmVzMF8zNjUiLCJyZXMxXzM2NiIsImFyZzBfMzY3Iiwib2tfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9va190eXAiLCJwcF9zdGF0dXNfdHlwIiwic2hvd19zdGF0dXNfdHlwIiwic3RhdHVzX3R5cF9vZl9zZXhwIiwic2V4cF8zNzMiLCJ0YWdfMzc0Iiwic2V4cF9hcmdzXzM4MCIsImFyZzBfMzgxIiwic2V4cF9hcmdzXzM3NSIsImFyZzBfMzc2Iiwic2V4cF9vZl9zdGF0dXNfdHlwIiwiYXJnMF8zODMiLCJyZXMwXzM4NCIsInJlczBfMzg2Iiwic3RhdHVzX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3R5cCIsInBwX3R5cGVfdmFyX2VyciIsInNob3dfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3NleHAiLCJzZXhwXzM5MCIsInNleHBfb2ZfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBlX3Zhcl9lcnIiLCJwcF9zaGFkb3dfc3JjIiwic2hvd19zaGFkb3dfc3JjIiwic2hhZG93X3NyY19vZl9zZXhwIiwic2V4cF8zOTQiLCJzZXhwX29mX3NoYWRvd19zcmMiLCJzaGFkb3dfc3JjX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFkb3dfc3JjIiwicHBfZXJyb3JfdHBhdCIsInNob3dfZXJyb3JfdHBhdCIsIl8xJDEzIiwiXzAkMTYiLCJlcnJvcl90cGF0X29mX3NleHAiLCJzZXhwXzM5OSIsInRhZ180MDAiLCJzZXhwX2FyZ3NfNDAxIiwiYXJnMV80MDMiLCJhcmcwXzQwMiIsInJlczBfNDA0IiwicmVzMV80MDUiLCJzZXhwX2FyZ3NfNDA4IiwicmVzMF80MTAiLCJzZXhwX29mX2Vycm9yX3RwYXQiLCJhcmcxXzQxMiIsImFyZzBfNDExIiwicmVzMF80MTMiLCJyZXMxXzQxNCIsImFyZzBfNDE1IiwiZXJyb3JfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHBhdCIsInBwX29rX3RwYXQiLCJzaG93X29rX3RwYXQiLCJva190cGF0X29mX3NleHAiLCJzZXhwXzQyMSIsInRhZ180MjIiLCJzZXhwX2FyZ3NfNDIzIiwiYXJnMF80MjQiLCJyZXMwXzQyNSIsInNleHBfb2Zfb2tfdHBhdCIsImFyZzBfNDI2Iiwib2tfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb2tfdHBhdCIsInBwX3N0YXR1c190cGF0Iiwic2hvd19zdGF0dXNfdHBhdCIsIl8xJDE0IiwiXzAkMTciLCJzdGF0dXNfdHBhdF9vZl9zZXhwIiwic2V4cF80MzIiLCJ0YWdfNDMzIiwic2V4cF9hcmdzXzQzNCIsImFyZzBfNDM1IiwicmVzMF80MzYiLCJzZXhwX2FyZ3NfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsInNleHBfb2Zfc3RhdHVzX3RwYXQiLCJhcmcwXzQ0MiIsInJlczBfNDQzIiwiYXJnMF80NDQiLCJyZXMwXzQ0NSIsInN0YXR1c190cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfdHBhdCIsIl8yJDYiLCJfMSQxNSIsIl8wJDE4Iiwic2V4cF80NDciLCJmaWVsZF9zZXhwc180NDgiLCJ0ZXJtXzQ0OSIsImFuY2VzdG9yc180NTEiLCJjdHhfNDUzIiwibW9kZV80NTUiLCJzZWxmXzQ1NyIsImNvX2N0eF80NTkiLCJjbHNfNDYxIiwic3RhdHVzXzQ2MyIsInR5XzQ2NSIsImR1cGxpY2F0ZXNfNDY3IiwiZXh0cmFfNDY4IiwiaXRlcl80ODIiLCJzZXhwXzQ0NyQwIiwiZmllbGRfc2V4cHNfNDcxIiwiZmllbGRfbmFtZV80NjkiLCJ0YWlsXzQ4MyIsImZpZWxkX3NleHBfNDcwJDkiLCJmaWVsZF9zZXhwXzQ3MCIsInhfNDg0IiwiZmllbGRfc2V4cF80NzAkMCIsImZ2YWx1ZV80NzIiLCJmaWVsZF9zZXhwXzQ3MCQxIiwiZnZhbHVlXzQ4MCIsImZpZWxkX3NleHBfNDcwJDIiLCJmdmFsdWVfNDczIiwiZmllbGRfc2V4cF80NzAkMyIsImZ2YWx1ZV80NzYiLCJmaWVsZF9zZXhwXzQ3MCQ0IiwiZnZhbHVlXzQ3NyIsImZpZWxkX3NleHBfNDcwJDUiLCJmdmFsdWVfNDc4IiwiZmllbGRfc2V4cF80NzAkNiIsImZ2YWx1ZV80NzUiLCJmaWVsZF9zZXhwXzQ3MCQ3IiwiZnZhbHVlXzQ3NCIsImZpZWxkX3NleHBfNDcwJDgiLCJmdmFsdWVfNDc5IiwidHlfNDY2Iiwic3RhdHVzXzQ2NCIsImNsc180NjIiLCJjb19jdHhfNDYwIiwic2VsZl80NTgiLCJtb2RlXzQ1NiIsImN0eF80NTQiLCJhbmNlc3RvcnNfNDUyIiwidGVybV80NTAiLCJ0eV81MDIiLCJzdGF0dXNfNTAwIiwiY2xzXzQ5OCIsImNvX2N0eF80OTYiLCJzZWxmXzQ5NCIsIm1vZGVfNDkyIiwiY3R4XzQ5MCIsImFuY2VzdG9yc180ODgiLCJ0ZXJtXzQ4NiIsImFyZ181MDMiLCJibmRzXzQ4NSIsImFyZ181MDEiLCJibmRzXzQ4NSQwIiwiYXJnXzQ5OSIsImJuZHNfNDg1JDEiLCJhcmdfNDk3IiwiYm5kc180ODUkMiIsImFyZ180OTUiLCJibmRzXzQ4NSQzIiwiYXJnXzQ5MyIsImJuZHNfNDg1JDQiLCJhcmdfNDkxIiwiYm5kc180ODUkNSIsImFyZ180ODkiLCJibmRzXzQ4NSQ2IiwiYXJnXzQ4NyIsImJuZHNfNDg1JDciLCJjdHhfZmllbGQiLCJzZWxmX2ZpZWxkIiwiY29fY3R4X2ZpZWxkIiwiY2xzX2ZpZWxkIiwic3RhdHVzX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJzdGF0dXNfdmFsdWUiLCJjbHNfdmFsdWUiLCJjb19jdHhfdmFsdWUiLCJzZWxmX3ZhbHVlIiwiY3R4X3ZhbHVlIiwidl9zdGF0dXMiLCJ2X2NscyIsInZfY29fY3R4Iiwidl9zZWxmIiwidl9jdHgiLCJhcmckNCIsImJuZHMkNCIsImFyZyQ1IiwiYm5kcyQ1IiwiYXJnJDYiLCJibmRzJDYiLCJhcmckNyIsImJuZHMkNyIsIl8zJDQiLCJfMiQ3IiwiXzEkMTYiLCJfMCQxOSIsInNleHBfNTA1IiwiZmllbGRfc2V4cHNfNTA2IiwidGVybV81MDciLCJhbmNlc3RvcnNfNTA5IiwiY3R4XzUxMSIsImNvX2N0eF81MTMiLCJwcmV2X3N5bnN3aXRjaF81MTUiLCJtb2RlXzUxNyIsInNlbGZfNTE5IiwiY2xzXzUyMSIsInN0YXR1c181MjMiLCJ0eV81MjUiLCJkdXBsaWNhdGVzXzUyNyIsImV4dHJhXzUyOCIsIml0ZXJfNTQzIiwic2V4cF81MDUkMCIsImZpZWxkX3NleHBzXzUzMSIsImZpZWxkX25hbWVfNTI5IiwidGFpbF81NDQiLCJmaWVsZF9zZXhwXzUzMCQxMCIsImZpZWxkX3NleHBfNTMwIiwieF81NDUiLCJmaWVsZF9zZXhwXzUzMCQwIiwiZnZhbHVlXzUzMiIsImZpZWxkX3NleHBfNTMwJDEiLCJmdmFsdWVfNTQxIiwiZmllbGRfc2V4cF81MzAkMiIsImZ2YWx1ZV81MzMiLCJmaWVsZF9zZXhwXzUzMCQzIiwiZnZhbHVlXzUzNSIsImZpZWxkX3NleHBfNTMwJDQiLCJmdmFsdWVfNTM3IiwiZmllbGRfc2V4cF81MzAkNSIsImZ2YWx1ZV81MzYiLCJmaWVsZF9zZXhwXzUzMCQ2IiwiZnZhbHVlXzUzOSIsImZpZWxkX3NleHBfNTMwJDciLCJmdmFsdWVfNTM4IiwiZmllbGRfc2V4cF81MzAkOCIsImZ2YWx1ZV81MzQiLCJmaWVsZF9zZXhwXzUzMCQ5IiwiZnZhbHVlXzU0MCIsInR5XzUyNiIsInN0YXR1c181MjQiLCJjbHNfNTIyIiwic2VsZl81MjAiLCJtb2RlXzUxOCIsInByZXZfc3luc3dpdGNoXzUxNiIsImNvX2N0eF81MTQiLCJjdHhfNTEyIiwiYW5jZXN0b3JzXzUxMCIsInRlcm1fNTA4IiwidHlfNTY1Iiwic3RhdHVzXzU2MyIsImNsc181NjEiLCJzZWxmXzU1OSIsIm1vZGVfNTU3IiwicHJldl9zeW5zd2l0Y2hfNTU1IiwiY29fY3R4XzU1MyIsImN0eF81NTEiLCJhbmNlc3RvcnNfNTQ5IiwidGVybV81NDciLCJhcmdfNTY2IiwiYm5kc181NDYiLCJhcmdfNTY0IiwiYm5kc181NDYkMCIsImFyZ181NjIiLCJibmRzXzU0NiQxIiwiYXJnXzU2MCIsImJuZHNfNTQ2JDIiLCJhcmdfNTU4IiwiYm5kc181NDYkMyIsImFyZ181NTYiLCJibmRzXzU0NiQ0IiwiYXJnXzU1NCIsImJuZHNfNTQ2JDUiLCJhcmdfNTUyIiwiYm5kc181NDYkNiIsImFyZ181NTAiLCJibmRzXzU0NiQ3IiwiYXJnXzU0OCIsImJuZHNfNTQ2JDgiLCJwcmV2X3N5bnN3aXRjaF9maWVsZCIsImZ2YWx1ZSQ4IiwicHJldl9zeW5zd2l0Y2hfdmFsdWUiLCJ2X3ByZXZfc3luc3dpdGNoIiwiYXJnJDgiLCJibmRzJDgiLCJwcF90eXAiLCJzaG93X3R5cCIsIl80JDMiLCJfMyQ1IiwiXzIkOCIsIl8xJDE3IiwiXzAkMjAiLCJ0eXBfb2Zfc2V4cCIsInNleHBfNTY4IiwiZmllbGRfc2V4cHNfNTY5IiwidGVybV81NzAiLCJhbmNlc3RvcnNfNTcyIiwiY3R4XzU3NCIsImV4cGVjdHNfNTc2IiwiY2xzXzU3OCIsInN0YXR1c181ODAiLCJ0eV81ODIiLCJkdXBsaWNhdGVzXzU4NCIsImV4dHJhXzU4NSIsIml0ZXJfNTk3Iiwic2V4cF81NjgkMCIsImZpZWxkX3NleHBzXzU4OCIsImZpZWxkX25hbWVfNTg2IiwidGFpbF81OTgiLCJmaWVsZF9zZXhwXzU4NyQ3IiwiZmllbGRfc2V4cF81ODciLCJ4XzU5OSIsImZpZWxkX3NleHBfNTg3JDAiLCJmdmFsdWVfNTg5IiwiZmllbGRfc2V4cF81ODckMSIsImZ2YWx1ZV81OTUiLCJmaWVsZF9zZXhwXzU4NyQyIiwiZnZhbHVlXzU5MCIsImZpZWxkX3NleHBfNTg3JDMiLCJmdmFsdWVfNTkyIiwiZmllbGRfc2V4cF81ODckNCIsImZ2YWx1ZV81OTMiLCJmaWVsZF9zZXhwXzU4NyQ1IiwiZnZhbHVlXzU5MSIsImZpZWxkX3NleHBfNTg3JDYiLCJmdmFsdWVfNTk0IiwidHlfNTgzIiwic3RhdHVzXzU4MSIsImNsc181NzkiLCJleHBlY3RzXzU3NyIsImN0eF81NzUiLCJhbmNlc3RvcnNfNTczIiwidGVybV81NzEiLCJzZXhwX29mX3R5cCIsInR5XzYxMyIsInN0YXR1c182MTEiLCJjbHNfNjA5IiwiZXhwZWN0c182MDciLCJjdHhfNjA1IiwiYW5jZXN0b3JzXzYwMyIsInRlcm1fNjAxIiwiYXJnXzYxNCIsImJuZHNfNjAwIiwiYXJnXzYxMiIsImJuZHNfNjAwJDAiLCJhcmdfNjEwIiwiYm5kc182MDAkMSIsImFyZ182MDgiLCJibmRzXzYwMCQyIiwiYXJnXzYwNiIsImJuZHNfNjAwJDMiLCJhcmdfNjA0IiwiYm5kc182MDAkNCIsImFyZ182MDIiLCJibmRzXzYwMCQ1IiwidHlwX29mX3lvanNvbiIsImV4cGVjdHNfZmllbGQiLCJleHBlY3RzX3ZhbHVlIiwieW9qc29uX29mX3R5cCIsInZfZXhwZWN0cyIsInBwX3RwYXQiLCJzaG93X3RwYXQiLCJfNCQ0IiwiXzMkNiIsIl8yJDkiLCJfMSQxOCIsIl8wJDIxIiwidHBhdF9vZl9zZXhwIiwic2V4cF82MTYiLCJmaWVsZF9zZXhwc182MTciLCJ0ZXJtXzYxOCIsImFuY2VzdG9yc182MjAiLCJjdHhfNjIyIiwiY2xzXzYyNCIsInN0YXR1c182MjYiLCJkdXBsaWNhdGVzXzYyOCIsImV4dHJhXzYyOSIsIml0ZXJfNjM5Iiwic2V4cF82MTYkMCIsImZpZWxkX3NleHBzXzYzMiIsImZpZWxkX25hbWVfNjMwIiwidGFpbF82NDAiLCJmaWVsZF9zZXhwXzYzMSQ1IiwiZmllbGRfc2V4cF82MzEiLCJ4XzY0MSIsImZpZWxkX3NleHBfNjMxJDAiLCJmdmFsdWVfNjM3IiwiZmllbGRfc2V4cF82MzEkMSIsImZ2YWx1ZV82MzMiLCJmaWVsZF9zZXhwXzYzMSQyIiwiZnZhbHVlXzYzNSIsImZpZWxkX3NleHBfNjMxJDMiLCJmdmFsdWVfNjM0IiwiZmllbGRfc2V4cF82MzEkNCIsImZ2YWx1ZV82MzYiLCJzdGF0dXNfNjI3IiwiY2xzXzYyNSIsImN0eF82MjMiLCJhbmNlc3RvcnNfNjIxIiwidGVybV82MTkiLCJzZXhwX29mX3RwYXQiLCJzdGF0dXNfNjUxIiwiY2xzXzY0OSIsImN0eF82NDciLCJhbmNlc3RvcnNfNjQ1IiwidGVybV82NDMiLCJhcmdfNjUyIiwiYm5kc182NDIiLCJhcmdfNjUwIiwiYm5kc182NDIkMCIsImFyZ182NDgiLCJibmRzXzY0MiQxIiwiYXJnXzY0NiIsImJuZHNfNjQyJDIiLCJhcmdfNjQ0IiwiYm5kc182NDIkMyIsInRwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3RwYXQiLCJwcF9zZWNvbmRhcnkiLCJzaG93X3NlY29uZGFyeSIsIl8zJDciLCJfMiQxMCIsIl8xJDE5IiwiXzAkMjIiLCJzZWNvbmRhcnlfb2Zfc2V4cCIsInNleHBfNjU0IiwiZmllbGRfc2V4cHNfNjU1IiwiaWRfNjU2IiwiY2xzXzY1OCIsInNvcnRfNjYwIiwiY3R4XzY2MiIsImR1cGxpY2F0ZXNfNjY0IiwiZXh0cmFfNjY1IiwiaXRlcl82NzQiLCJzZXhwXzY1NCQwIiwiZmllbGRfc2V4cHNfNjY4IiwiZmllbGRfbmFtZV82NjYiLCJ0YWlsXzY3NSIsImZpZWxkX3NleHBfNjY3JDQiLCJmaWVsZF9zZXhwXzY2NyIsInhfNjc2IiwiZmllbGRfc2V4cF82NjckMCIsImZ2YWx1ZV82NzAiLCJmaWVsZF9zZXhwXzY2NyQxIiwiZnZhbHVlXzY3MiIsImZpZWxkX3NleHBfNjY3JDIiLCJmdmFsdWVfNjY5IiwiZmllbGRfc2V4cF82NjckMyIsImZ2YWx1ZV82NzEiLCJjdHhfNjYzIiwic29ydF82NjEiLCJjbHNfNjU5IiwiaWRfNjU3Iiwic2V4cF9vZl9zZWNvbmRhcnkiLCJjdHhfNjg0Iiwic29ydF82ODIiLCJjbHNfNjgwIiwiaWRfNjc4IiwiYXJnXzY4NSIsImJuZHNfNjc3IiwiYXJnXzY4MyIsImJuZHNfNjc3JDAiLCJhcmdfNjgxIiwiYm5kc182NzckMSIsImFyZ182NzkiLCJibmRzXzY3NyQyIiwic2Vjb25kYXJ5X29mX3lvanNvbiIsInlvanNvbl9vZl9zZWNvbmRhcnkiLCJfNCQ1IiwiXzMkOCIsIl8yJDExIiwiXzEkMjAiLCJfMCQyMyIsInNleHBfNjkwIiwidGFnXzY5MSIsInNleHBfYXJnc182OTIiLCJhcmcwXzY5MyIsInJlczBfNjk0Iiwic2V4cF9hcmdzXzY5NyIsImFyZzBfNjk4IiwicmVzMF82OTkiLCJzZXhwX2FyZ3NfNzA3IiwiYXJnMF83MDgiLCJyZXMwXzcwOSIsInNleHBfYXJnc183MDIiLCJhcmcwXzcwMyIsInJlczBfNzA0Iiwic2V4cF9hcmdzXzcxMiIsImFyZzBfNzEzIiwicmVzMF83MTQiLCJhcmcwXzcxNSIsInJlczBfNzE2IiwiYXJnMF83MTciLCJyZXMwXzcxOCIsImFyZzBfNzIxIiwicmVzMF83MjIiLCJhcmcwXzcyMyIsInJlczBfNzI0IiwicHBfZXJyb3IiLCJzaG93X2Vycm9yIiwiXzMkOSIsIl8yJDEyIiwiXzEkMjEiLCJfMCQyNCIsImVycm9yX29mX3NleHAiLCJzZXhwXzcyOSIsInRhZ183MzAiLCJzZXhwX2FyZ3NfNzQxIiwiYXJnMF83NDIiLCJyZXMwXzc0MyIsInNleHBfYXJnc183NDYiLCJhcmcwXzc0NyIsInJlczBfNzQ4Iiwic2V4cF9hcmdzXzczNiIsInNleHBfYXJnc183MzEiLCJhcmcwXzczMiIsInJlczBfNzMzIiwic2V4cF9vZl9lcnJvciIsImFyZzBfNzQ5IiwicmVzMF83NTAiLCJhcmcwXzc1MSIsInJlczBfNzUyIiwiYXJnMF83NTMiLCJhcmcwXzc1NSIsInJlczBfNzU2IiwiZXJyb3Jfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yIiwic29ydF9vZiIsImN0eF9vZiIsImFuY2VzdG9yc19vZiIsImkkMCIsImkkMSIsImkkMiIsImVycm9yX29mIiwiZXJyJDAiLCJlcnIkMSIsImVyciQyIiwiZXhwX2NvX2N0eCIsImV4cF90eSIsInBhdF9jdHgiLCJwYXRfdHkiLCJzdGF0dXNfY29tbW9uIiwic2VsZiQwIiwic3luIiwiYW5hJDAiLCJzeW4kMCIsImFuYV90eSIsInNlbGYkMSIsInN5bl90eSQwIiwic2VsZiQyIiwic3RhdHVzX3BhdCIsInNlbGZfcGF0IiwiZXJyX3BhdCIsIm9rX2V4cCIsInN0YXR1c19leHAiLCJzdGF0dXNfdHlwIiwiZXhwZWN0cyIsInN1bV90eSIsInR5X3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudCIsInN0YXR1c190cGF0Iiwic3JjIiwiaXNfZXJyb3IiLCJjaSIsImN0eCQyIiwiZml4ZWRfdHlwX29rIiwiZml4ZWRfdHlwX2Vycl9jb21tb24iLCJmaXhlZF90eXBfZXJyIiwiZml4ZWRfdHlwX2Vycl9wYXQiLCJmaXhlZF90eXBfcGF0Iiwib2siLCJmaXhlZF90eXBfZXhwIiwiZGVyaXZlZF9leHAiLCJ1ZXhwIiwic3RhdHVzIiwiZGVyaXZlZF9wYXQiLCJ1cGF0IiwicHJldl9zeW5zd2l0Y2giLCJkZXJpdmVkX3R5cCIsImRlcml2ZWRfdHBhdCIsImdldF9iaW5kaW5nX3NpdGUiLCJ0eXBfaXNfY29uc3RydWN0b3JfZXhwZWN0ZWQiLCJyYW5nZSIsInJhbmdlX2hhc2giLCJyb290X2wiLCJyb290X3IiLCJ1bmljaGlsZF9tYXAiLCJtYXBfbCIsImwkMiIsIm1hcF9yIiwiciQyIiwidW5pY2hpbGRfbWFwJDAiLCJyYW5nZSQwIiwiYmV0d2Vlbl9jaGlsZF9tYXAiLCJtayQwIiwicmVzIiwiZXJyb3JfaWRzIiwidGVybV9yYW5nZXMiLCJpbmZvX21hcCIsIm1hcF9tIiwiYWRkX2luZm8iLCJpc19hcnJvd19saWtlIiwiaXNfcmVjdXJzaXZlIiwiZGVmIiwibnVtX2ZucyIsIm51bV92YXJzIiwibm9ybSIsInN5bnMiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdCIsInR5cF9leHBfYmlub3BfYmluX3N0cmluZyIsInR5cF9leHBfYmlub3AiLCJ0eXBfZXhwX3Vub3AiLCJhbnlfdG9faW5mb19tYXAiLCJhbnkiLCJ1ZXhwX3RvX2luZm9fbWFwIiwibSQxIiwidXBhdF90b19pbmZvX21hcCIsInV0eXBfdG9faW5mb19tYXAiLCJ1dHBhdF90b19pbmZvX21hcCIsIm11bHRpIiwiY29fY3R4cyIsImN0eF9kZWYiLCJpc19pbl9maWx0ZXIiLCJhZGQiLCJ1ZXhwX3RvX2luZm9fbWFwJDAiLCJpc19pbl9maWx0ZXIkMCIsImdvJDAiLCJtYXBfbV9nbyIsImdvX3BhdCIsImF0b21pYyIsInBvc2l0aW9uIiwibW9kZXMiLCJtJDMiLCJlcyQwIiwibW9kZV9ib2R5IiwibW9kZV9wYXQiLCJtJDQiLCJtJDUiLCJib2R5JDEiLCJtb2RlX2JvZHkkMSIsIm0kOCIsImN0eF9ib2R5IiwibSQ5IiwiYm9keSQyIiwibW9kZV9ib2R5JDAiLCJtJDYiLCJtJDciLCJlcyQxIiwibW9kZXMkMCIsIm0kMTAiLCJlcyQyIiwiYm9keSQzIiwicF9zeW4iLCJkZWZfYmFzZSIsInR5X3BfYW5hIiwicF9hbmEiLCJwX2FuYV9jdHgiLCJkZWZfYmFzZTIiLCJhbmFfdHlfZm4iLCJ0eV9wIiwidHlfZm4yIiwidHlfZm4xIiwidHlfcHMiLCJ0eV9mbnMyIiwidHlfZm5zMSIsInR5cyQwIiwibSQxMSIsImRlZiQwIiwidHlfcF9hbmEkMCIsIm0kMTIiLCJwX2FuYV9jdHgkMCIsImRlZiQxIiwibSQxNSIsImRlZiQyIiwidHlfcF9hbmEkMSIsInBfYW5hJDEiLCJtJDEzIiwiYm9keSQ0IiwibSQxNCIsInBfYW5hJDAiLCJwJDMiLCJwJDQiLCJtJDE2IiwibSQxNyIsInAkNSIsImJvZHkkNSIsInR5cGF0IiwibSQxOCIsInR5X3ByZSIsInR5X3JlYyIsImN0eF9kZWYkMSIsImN0eF9ib2R5JDEiLCJjdHhfZGVmJDAiLCJ0eV9kZWYkMCIsInR5X2RlZiIsImN0eF9ib2R5JDAiLCJjdHhfYm9keSQyIiwibSQyMSIsImNvX2N0eCQwIiwidHlfZXNjYXBlIiwibSQyMiIsIm0kMTkiLCJtJDIwIiwiZm5fbW9kZSIsIm0kMjMiLCJmbiQwIiwibSQyNCIsImZuJDEiLCJ0eXBmbl9tb2RlIiwibSQyNSIsImZuJDIiLCJtJDI2IiwidHlfYm9keSQxIiwib3B0aW9uX25hbWUiLCJuYW1lJDIiLCJmbiQzIiwiZm5fbW9kZSQwIiwibSQyNyIsImZuJDQiLCJ0eV9vdXQkMCIsInR5X2luJDAiLCJudW1fYXJncyIsIm1vZGVzJDEiLCJtJDI4IiwiYXJncyQwIiwiYXJnX2NvX2N0eCIsImUwIiwiYnJhbmNoX2lkcyIsIm0kMjkiLCJjb25kIiwibSQzMCIsIm0kMzEiLCJhbHQiLCJtJDMyIiwibSQzMyIsIm0kMzQiLCJib2R5JDYiLCJjb25kJDAiLCJtJDM1IiwiY29uZCQxIiwibSQzNiIsImJvZHkkNyIsImJvZHkkOCIsIm0kMzciLCJib2R5JDkiLCJtJDM4IiwibSQzOSIsIm0kNDAiLCJtb2RlJDEiLCJpZHMkMSIsIm0kNDEiLCJtJDQyIiwidHlfaW4kMSIsInR5X291dCQxIiwibSQ0MyIsImUkMTQiLCJ0eV9vdXQkMiIsInR5X2luJDIiLCJtJDQ0IiwiZSQxNSIsInR5X291dCQzIiwibSQ0NSIsIm0kNDYiLCJzdHJpbmciLCJydWxlcyIsIm0kNDciLCJzY3J1dCQwIiwiZXMkMyIsImJyYW5jaF9pZHMkMCIsInBzJDAiLCJwX2N0eHMiLCJtJDQ4IiwiZXMkNCIsImVfdHlzIiwiZV9jb19jdHhzIiwibSQ0OSIsIm0kMiIsImlzX3N5bnN3aXRjaCIsInByZXZfc3luc3dpdGNoJDAiLCJ1bmtub3duIiwiY3R4X2ZvbGQiLCJjdHhfdHlwIiwiYW5uJDAiLCJ0eV9zdW0iLCJ2YXJpYW50X3RvX2luZm9fbWFwIiwidDFfbW9kZSIsImJvZHlfY3R4IiwiYm9keV9jdHgkMCIsInV0eSIsInV0eSQwIiwicGFyYW0kMCIsInBhcmFtX3R5IiwiZ2V0X2Vycm9yX2F0IiwiZXJyX2luZm8iLCJnZXRfcGF0X2Vycm9yX2F0IiwiY29sbGVjdF9lcnJvcnMiLCJiaW5kc192YXIiLCJkcCIsImRwJDAiLCJkX2xpc3QiLCJuZXdfbGlzdCIsImRwMiIsImRwMSIsImRwcyIsImRwJDEiLCJib3VuZF92YXJzIiwiZHBzJDAiLCJkcDEkMCIsImdyb3VuZF9jYXNlc19vZl9zZXhwIiwic2V4cF9vZl9ncm91bmRfY2FzZXMiLCJncm91bmRlZF9BcnJvdyIsImdyb3VuZGVkX0ZvcmFsbCIsImdyb3VuZGVkX1Byb2QiLCJncm91bmRlZF9TdW0iLCJncm91bmRlZF9MaXN0IiwiZ3JvdW5kX2Nhc2VzX29mIiwidHJhbnNpdGlvbiIsInJlY3Vyc2l2ZSIsInQxX2dyb3VuZGVkIiwidDJfZ3JvdW5kZWQiLCJpbm5lcl9jYXN0IiwiZDEkMSIsImlubmVyX2Nhc3QkMCIsInRyYW5zaXRpb25fbXVsdGlwbGUiLCJwYXR0ZXJuX2ZpeHVwIiwidW53cmFwX2Nhc3RzIiwicmV3cmFwX2Nhc3RzIiwiZXJyb3Jfc291cmNlXzA4MiIsInNob3dfY2FzZV9jbGF1c2VzXzAwNCIsInNob3dfZm5fYm9kaWVzXzAwNiIsInNob3dfZml4cG9pbnRzXzAwOCIsInNob3dfY2FzdHNfMDEwIiwic2hvd19sb29rdXBfc3RlcHNfMDEyIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfMDE0Iiwic3RlcHBlcl9oaXN0b3J5XzAxNiIsInNob3dfc2V0dGluZ3NfMDE4Iiwic2hvd19oaWRkZW5fc3RlcHNfMDIwIiwiZHVwbGljYXRlc18wMjIiLCJleHRyYV8wMjMiLCJmaWVsZF9zZXhwc18wMjYiLCJmaWVsZF9uYW1lXzAyNCIsImZpZWxkX3NleHBfMDI1JDkiLCJmaWVsZF9zZXhwXzAyNSIsImZpZWxkX3NleHBfMDI1JDAiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjUkMSIsImZpZWxkX3NleHBfMDI1JDIiLCJmaWVsZF9zZXhwXzAyNSQzIiwiZmllbGRfc2V4cF8wMjUkNCIsImZpZWxkX3NleHBfMDI1JDUiLCJmaWVsZF9zZXhwXzAyNSQ2IiwiZmllbGRfc2V4cF8wMjUkNyIsImZpZWxkX3NleHBfMDI1JDgiLCJzaG93X2hpZGRlbl9zdGVwc18wMjEiLCJzaG93X3NldHRpbmdzXzAxOSIsInN0ZXBwZXJfaGlzdG9yeV8wMTciLCJzaG93X3N0ZXBwZXJfZmlsdGVyc18wMTUiLCJzaG93X2xvb2t1cF9zdGVwc18wMTMiLCJzaG93X2Nhc3RzXzAxMSIsInNob3dfZml4cG9pbnRzXzAwOSIsInNob3dfZm5fYm9kaWVzXzAwNyIsInNob3dfY2FzZV9jbGF1c2VzXzAwNSIsInNob3dfaGlkZGVuX3N0ZXBzXzA1NyIsInNob3dfc2V0dGluZ3NfMDU1Iiwic3RlcHBlcl9oaXN0b3J5XzA1MyIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzA1MSIsInNob3dfbG9va3VwX3N0ZXBzXzA0OSIsInNob3dfY2FzdHNfMDQ3Iiwic2hvd19maXhwb2ludHNfMDQ1Iiwic2hvd19mbl9ib2RpZXNfMDQzIiwic2hvd19jYXNlX2NsYXVzZXNfMDQxIiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImJuZHNfMDQwJDMiLCJibmRzXzA0MCQ0IiwiYm5kc18wNDAkNSIsImJuZHNfMDQwJDYiLCJibmRzXzA0MCQ3Iiwic2hvd19jYXNlX2NsYXVzZXNfZmllbGQiLCJzaG93X2ZuX2JvZGllc19maWVsZCIsInNob3dfZml4cG9pbnRzX2ZpZWxkIiwic2hvd19jYXN0c19maWVsZCIsInNob3dfbG9va3VwX3N0ZXBzX2ZpZWxkIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfZmllbGQiLCJzdGVwcGVyX2hpc3RvcnlfZmllbGQiLCJzaG93X3NldHRpbmdzX2ZpZWxkIiwic2hvd19oaWRkZW5fc3RlcHNfZmllbGQiLCJzaG93X2hpZGRlbl9zdGVwc192YWx1ZSIsInNob3dfc2V0dGluZ3NfdmFsdWUiLCJzdGVwcGVyX2hpc3RvcnlfdmFsdWUiLCJzaG93X3N0ZXBwZXJfZmlsdGVyc192YWx1ZSIsInNob3dfbG9va3VwX3N0ZXBzX3ZhbHVlIiwic2hvd19jYXN0c192YWx1ZSIsInNob3dfZml4cG9pbnRzX3ZhbHVlIiwic2hvd19mbl9ib2RpZXNfdmFsdWUiLCJzaG93X2Nhc2VfY2xhdXNlc192YWx1ZSIsInZfc2hvd19oaWRkZW5fc3RlcHMiLCJ2X3Nob3dfc2V0dGluZ3MiLCJ2X3N0ZXBwZXJfaGlzdG9yeSIsInZfc2hvd19zdGVwcGVyX2ZpbHRlcnMiLCJ2X3Nob3dfbG9va3VwX3N0ZXBzIiwidl9zaG93X2Nhc3RzIiwidl9zaG93X2ZpeHBvaW50cyIsInZfc2hvd19mbl9ib2RpZXMiLCJ2X3Nob3dfY2FzZV9jbGF1c2VzIiwic2V4cF8wNjAiLCJmaWVsZF9zZXhwc18wNjEiLCJzdGF0aWNzXzA2MiIsImVsYWJvcmF0ZV8wNjQiLCJhc3Npc3RfMDY2IiwiZHluYW1pY3NfMDY4IiwiZXZhbHVhdGlvbl8wNzAiLCJkdXBsaWNhdGVzXzA3MiIsImV4dHJhXzA3MyIsIml0ZXJfMDgzIiwic2V4cF8wNjAkMCIsImZpZWxkX3NleHBzXzA3NiIsImZpZWxkX25hbWVfMDc0IiwidGFpbF8wODQiLCJmaWVsZF9zZXhwXzA3NSQ1IiwiZmllbGRfc2V4cF8wNzUiLCJ4XzA4NSIsImZpZWxkX3NleHBfMDc1JDAiLCJmdmFsdWVfMDgxIiwiZmllbGRfc2V4cF8wNzUkMSIsImZ2YWx1ZV8wNzciLCJmaWVsZF9zZXhwXzA3NSQyIiwiZmllbGRfc2V4cF8wNzUkMyIsImZ2YWx1ZV8wNzgiLCJmaWVsZF9zZXhwXzA3NSQ0IiwiZXZhbHVhdGlvbl8wNzEiLCJkeW5hbWljc18wNjkiLCJhc3Npc3RfMDY3IiwiZWxhYm9yYXRlXzA2NSIsInN0YXRpY3NfMDYzIiwiZXZhbHVhdGlvbl8wOTUiLCJkeW5hbWljc18wOTMiLCJhc3Npc3RfMDkxIiwiZWxhYm9yYXRlXzA4OSIsInN0YXRpY3NfMDg3IiwiYXJnXzA5NiIsImJuZHNfMDg2IiwiYXJnXzA5NCIsImJuZHNfMDg2JDAiLCJhcmdfMDkyIiwiYm5kc18wODYkMSIsImFyZ18wOTAiLCJibmRzXzA4NiQyIiwiYm5kc18wODYkMyIsInN0YXRpY3NfZmllbGQiLCJlbGFib3JhdGVfZmllbGQiLCJhc3Npc3RfZmllbGQiLCJkeW5hbWljc19maWVsZCIsImV2YWx1YXRpb25fZmllbGQiLCJldmFsdWF0aW9uX3ZhbHVlIiwiZHluYW1pY3NfdmFsdWUiLCJhc3Npc3RfdmFsdWUiLCJlbGFib3JhdGVfdmFsdWUiLCJzdGF0aWNzX3ZhbHVlIiwidl9ldmFsdWF0aW9uIiwidl9keW5hbWljcyIsInZfYXNzaXN0Iiwidl9lbGFib3JhdGUiLCJ2X3N0YXRpY3MiLCJvZmYiLCJvbiIsImVycm9yX3NvdXJjZV8zMDMiLCJfODYiLCJfODUiLCJfODQiLCJfODMiLCJfODIiLCJfODEiLCJfODAiLCJfNzkiLCJfNzgiLCJfNzciLCJfNzYiLCJfNzUiLCJfNzQiLCJfNzMiLCJfNzIiLCJfNzEiLCJfNzAiLCJfNjkiLCJfNjgiLCJfNjciLCJfNjYiLCJfNjUiLCJfNjQiLCJfNjMiLCJfNjIiLCJfNjEiLCJfNjAiLCJfNTkiLCJfNTgiLCJfNTciLCJfNTYiLCJfNTUiLCJhMiQ5IiwiYTIkMTAiLCJhMSQxOSIsImExJDIwIiwiYTEkMjEiLCJhMSQyMiIsImExJDIzIiwiYTEkMjQiLCJhMiQxMSIsImExJDI1IiwiYTIkMTIiLCJhMSQyNiIsImExJDI3IiwiYTEkMjgiLCJhMyQwIiwiYTIkMTMiLCJhMSQyOSIsImFpZHMiLCJhdGVybSIsInNleHBfYXJnc18xMjgiLCJhcmcyXzEzMSIsImFyZzFfMTMwIiwiYXJnMF8xMjkiLCJyZXMwXzEzMiIsInJlczFfMTMzIiwicmVzMl8xMzQiLCJzZXhwX2FyZ3NfMjY1IiwiYXJnMV8yNzIiLCJhcmcwXzI3MSIsInJlczBfMjczIiwiYXJnMV8yNjciLCJhcmcwXzI2NiIsInJlczBfMjY4IiwicmVzMV8yNjkiLCJyZXMxXzI3NCIsInJlczBfMjA4IiwiYXJnMV8yMDIiLCJyZXMwXzIwMyIsInJlczFfMjA0IiwicmVzMV8yMDkiLCJzZXhwX2FyZ3NfMDIxIiwicmVzMV8wMjUiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzEiLCJhcmcxXzE3OCIsImFyZzBfMTc3IiwicmVzMF8xNzkiLCJhcmcxXzE3MyIsImFyZzBfMTcyIiwicmVzMF8xNzQiLCJyZXMxXzE3NSIsInJlczFfMTgwIiwic2V4cF9hcmdzXzA3MyIsImFyZzFfMDc1IiwicmVzMV8wNzciLCJzZXhwX2FyZ3NfMTQ2IiwiYXJnMV8xNDgiLCJhcmcwXzE0NyIsInJlczBfMTQ5IiwicmVzMV8xNTAiLCJzZXhwX2FyZ3NfMTM3IiwiYXJnMl8xNDAiLCJhcmcxXzEzOSIsImFyZzBfMTM4IiwicmVzMF8xNDEiLCJyZXMxXzE0MiIsInJlczJfMTQzIiwiYXJnMl8wMzgiLCJhcmcxXzAzNyIsInJlczJfMDQxIiwic2V4cF9hcmdzXzA0NCIsInNleHBfYXJnc18xODgiLCJhcmcxXzE5NSIsImFyZzBfMTk0IiwicmVzMF8xOTYiLCJhcmcxXzE5MCIsImFyZzBfMTg5IiwicmVzMV8xOTIiLCJyZXMxXzE5NyIsImFyZzNfMjk2IiwicmVzMF8yOTciLCJyZXMxXzI5OCIsInJlczJfMjk5IiwiYXJnMV8yODkiLCJhcmcwXzI4OCIsInNleHBfMjgyIiwicmVzMF8yOTAiLCJzZXhwXzI4NyIsImFyZzFfMjg0IiwiYXJnMF8yODMiLCJyZXMwXzI4NSIsInJlczFfMjg2IiwicmVzMV8yOTEiLCJyZXMzXzMwMCIsImFyZzFfMTAwIiwicmVzMF8xMDEiLCJyZXMxXzEwMiIsImFyZzJfMTEzIiwiYXJnMV8xMTIiLCJyZXMxXzExNSIsImFyZzFfMTA3IiwicmVzMF8xMDgiLCJyZXMxXzEwOSIsInJlczJfMTE2Iiwic2V4cF9hcmdzXzI1OCIsImFyZzFfMjYwIiwiYXJnMF8yNTkiLCJyZXMwXzI2MSIsInJlczFfMjYyIiwic2V4cF9hcmdzXzI0OSIsImFyZzJfMjUyIiwiYXJnMV8yNTEiLCJhcmcwXzI1MCIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMyXzI1NSIsImFyZzJfMDY3IiwiYXJnMV8wNjYiLCJyZXMxXzA2OSIsInJlczJfMDcwIiwic2V4cF9hcmdzXzA1MyIsImFyZzNfMDU3IiwiYXJnMl8wNTYiLCJyZXMyXzA2MCIsInJlczNfMDYxIiwic2V4cF9hcmdzXzExOSIsImFyZzJfMTIyIiwiYXJnMV8xMjEiLCJhcmcwXzEyMCIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJyZXMyXzEyNSIsImFyZzJfMDgzIiwiYXJnMV8wODIiLCJyZXMxXzA4NSIsInJlczJfMDg2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzJfMDkyIiwiYXJnMV8wOTEiLCJyZXMxXzA5NCIsInJlczJfMDk1Iiwic2V4cF9hcmdzXzE1MyIsImFyZzJfMTU2IiwiYXJnMV8xNTUiLCJhcmcwXzE1NCIsInJlczBfMTU3IiwicmVzMV8xNTgiLCJyZXMyXzE1OSIsInNleHBfYXJnc18xNjIiLCJhcmcyXzE2NSIsImFyZzFfMTY0IiwiYXJnMF8xNjMiLCJyZXMwXzE2NiIsInJlczFfMTY3IiwicmVzMl8xNjgiLCJhcmcyXzI0MyIsImFyZzFfMjQyIiwicmVzMV8yNDUiLCJyZXMyXzI0NiIsInNleHBfYXJnc18yMTIiLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImFyZzFfMjIxIiwicmVzMF8yMjIiLCJyZXMxXzIyMyIsInNleHBfMzA2IiwiZmllbGRfc2V4cHNfMzA1IiwidGVybV8zMDgiLCJpZHNfMzEwIiwiZHVwbGljYXRlc18zMTIiLCJleHRyYV8zMTMiLCJpdGVyXzMxOSIsInNleHBfMzA2JDAiLCJmaWVsZF9zZXhwc18zMTYiLCJmaWVsZF9uYW1lXzMxNCIsInRhaWxfMzIwIiwiZmllbGRfc2V4cF8zMTUkMiIsImZpZWxkX3NleHBfMzE1IiwieF8zMjEiLCJmaWVsZF9zZXhwXzMxNSQwIiwiZnZhbHVlXzMxOCIsImZpZWxkX3NleHBfMzE1JDEiLCJmdmFsdWVfMzE3IiwiaWRzXzMxMSIsInRlcm1fMzA5IiwiYXJnMV8zMjMiLCJhcmcwXzMyMiIsInJlczFfMzI1IiwiYXJnMV8zMjciLCJhcmcwXzMyNiIsInJlczFfMzI5IiwiYXJnMV8zMzEiLCJhcmcwXzMzMCIsInJlczBfMzMyIiwicmVzMV8zMzMiLCJhcmcxXzMzNSIsImFyZzBfMzM0IiwicmVzMF8zMzYiLCJyZXMxXzMzNyIsImFyZzJfMzQwIiwiYXJnMV8zMzkiLCJhcmcwXzMzOCIsInJlczBfMzQxIiwicmVzMV8zNDIiLCJyZXMyXzM0MyIsImFyZzJfMzQ2IiwiYXJnMV8zNDUiLCJhcmcwXzM0NCIsInJlczBfMzQ3IiwicmVzMV8zNDgiLCJyZXMyXzM0OSIsImFyZzNfMzUzIiwiYXJnMl8zNTIiLCJhcmcxXzM1MSIsImFyZzBfMzUwIiwicmVzMF8zNTQiLCJyZXMxXzM1NSIsInJlczJfMzU2IiwicmVzM18zNTciLCJhcmcyXzM2MCIsImFyZzFfMzU5IiwiYXJnMF8zNTgiLCJyZXMwXzM2MSIsInJlczFfMzYyIiwicmVzMl8zNjMiLCJhcmcxXzM2NSIsImFyZzBfMzY0IiwicmVzMF8zNjYiLCJyZXMxXzM2NyIsImFyZzJfMzcwIiwiYXJnMV8zNjkiLCJhcmcwXzM2OCIsInJlczBfMzcxIiwicmVzMV8zNzIiLCJyZXMyXzM3MyIsImFyZzJfMzc2IiwiYXJnMV8zNzUiLCJhcmcwXzM3NCIsInJlczJfMzc5IiwiYXJnMV8zODEiLCJhcmcwXzM4MCIsImFyZzJfMzkwIiwiYXJnMV8zODkiLCJhcmcwXzM4OCIsInJlczBfMzkxIiwicmVzMV8zOTIiLCJhcmcxXzM4NSIsImFyZzBfMzg0IiwicmVzMV8zODciLCJyZXMyXzM5MyIsImFyZzJfMzk2IiwiYXJnMV8zOTUiLCJhcmcwXzM5NCIsInJlczJfMzk5IiwiYXJnMl80MDIiLCJhcmcxXzQwMSIsImFyZzBfNDAwIiwicmVzMl80MDUiLCJhcmcyXzQwOCIsImFyZzFfNDA3IiwiYXJnMF80MDYiLCJyZXMwXzQwOSIsInJlczFfNDEwIiwicmVzMl80MTEiLCJhcmcxXzQxMyIsImFyZzBfNDEyIiwicmVzMF80MTQiLCJyZXMxXzQxNSIsImFyZzJfNDE4IiwiYXJnMV80MTciLCJhcmcwXzQxNiIsInJlczBfNDE5IiwicmVzMV80MjAiLCJyZXMyXzQyMSIsImFyZzJfNDI0IiwiYXJnMV80MjMiLCJhcmcwXzQyMiIsInJlczFfNDI2IiwicmVzMl80MjciLCJhcmcxXzQzMyIsImFyZzBfNDMyIiwicmVzMF80MzQiLCJhcmcxXzQyOSIsImFyZzBfNDI4IiwicmVzMF80MzAiLCJyZXMxXzQzMSIsInJlczFfNDM1IiwiYXJnMF80MzYiLCJyZXMwXzQzNyIsImFyZzFfNDQzIiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJyZXMxXzQ0NSIsImFyZzFfNDUxIiwiYXJnMF80NTAiLCJyZXMwXzQ1MiIsImFyZzFfNDQ3IiwiYXJnMF80NDYiLCJyZXMwXzQ0OCIsInJlczFfNDQ5IiwicmVzMV80NTMiLCJhcmcxXzQ1NSIsImFyZzBfNDU0IiwicmVzMF80NTYiLCJyZXMxXzQ1NyIsImFyZzFfNDU5IiwicmVzMF80NjAiLCJyZXMxXzQ2MSIsImFyZzFfNDYzIiwiYXJnMF80NjIiLCJyZXMxXzQ2NSIsImFyZzFfNDY3IiwiYXJnMF80NjYiLCJyZXMwXzQ2OCIsInJlczFfNDY5IiwiYXJnMl80NzIiLCJhcmcxXzQ3MSIsImFyZzBfNDcwIiwicmVzMF80NzMiLCJyZXMxXzQ3NCIsInJlczJfNDc1IiwiYXJnMl80NzgiLCJhcmcxXzQ3NyIsImFyZzBfNDc2IiwicmVzMV80ODAiLCJyZXMyXzQ4MSIsImFyZzFfNDgzIiwiYXJnMF80ODIiLCJyZXMwXzQ4NCIsInJlczFfNDg1IiwiYXJnMV80OTEiLCJyZXMwXzQ5MiIsImFyZzFfNDg3IiwiYXJnMF80ODYiLCJyZXMwXzQ4OCIsInJlczFfNDg5IiwicmVzMV80OTMiLCJhcmczXzUwOSIsImFyZzJfNTA4IiwiYXJnMV81MDciLCJhcmcwXzUwNiIsInJlczBfNTEwIiwicmVzMV81MTEiLCJyZXMyXzUxMiIsImFyZzFfNTAzIiwiYXJnMF81MDIiLCJhcmcxXzQ5NSIsImFyZzBfNDk0IiwicmVzMV80OTciLCJyZXMwXzUwNCIsImFyZzFfNDk5IiwiYXJnMF80OTgiLCJyZXMwXzUwMCIsInJlczFfNTAxIiwicmVzMV81MDUiLCJyZXMzXzUxMyIsImlkc181MTciLCJ0ZXJtXzUxNSIsImFyZ181MTgiLCJibmRzXzUxNCIsImFyZ181MTYiLCJibmRzXzUxNCQwIiwidjEkNTMiLCJ2MSQ1NCIsInYxJDQ5IiwidjEkNTAiLCJ2MSQ1MSIsInYxJDUyIiwidjEkNDciLCJ2MSQ0OCIsInYxJDQ1IiwidjEkNDYiLCJ2MSQ0MyIsInYxJDQ0IiwidjEkNDEiLCJ2MSQ0MiIsInYzJDEiLCJ2MSQzOSIsInYxJDQwIiwidjMkMiIsInYyJDI3IiwidjEkNjkiLCJ2MCQ3MSIsInYwJDcyIiwidjEkNzAiLCJ2MiQyOCIsInYyJDI1IiwidjEkNjciLCJ2MCQ2OSIsInYwJDcwIiwidjEkNjgiLCJ2MiQyNiIsInYyJDIzIiwidjEkNjUiLCJ2MCQ2NyIsInYwJDY4IiwidjEkNjYiLCJ2MiQyNCIsInYyJDIxIiwidjEkNjMiLCJ2MSQ2NCIsInYyJDIyIiwidjIkMTkiLCJ2MSQ2MSIsInYxJDYyIiwidjIkMjAiLCJ2MSQ1OSIsInYxJDYwIiwidjEkNTciLCJ2MSQ1OCIsInYxJDU1IiwidjEkNTYiLCJjb21wb3NlIiwiZmx0IiwiY3R4JDMiLCJkMiQxIiwiY3R4JDQiLCJjdHgkNSIsImQkMyIsImN0eCQ2IiwiZCQ0IiwiY3R4JDciLCJ2JDAiLCJkJDUiLCJjdHgkOCIsImQkNiIsImQyJDIiLCJjdHgkOSIsImRpciIsImQxJDIiLCJjdHgkMTAiLCJkMSQzIiwiZGlyJDAiLCJkMiQzIiwiZDJzIiwiY3R4JDExIiwiZDEkNCIsInJkIiwibGQiLCJjdHgkMTIiLCJkMSQ1IiwiZDIkNCIsImQyJDUiLCJjdHgkMTMiLCJkJDciLCJkMyQwIiwiY3R4JDE0IiwiZDEkNiIsImQkOCIsImN0eCQxNSIsImQyJDYiLCJkMSQ3IiwiZCQ5IiwiY3R4JDE2IiwiZDEkOCIsImQyJDciLCJjdHgkMTciLCJkMSQ5IiwiY3R4JDE4IiwiZDEkMTAiLCJkMiQ4IiwicmQkMCIsImxkJDAiLCJjdHgkMTkiLCJkJDEwIiwiY3R4JDIwIiwiZDEkMTEiLCJyZCQxIiwibGQkMSIsImN0eCQyMSIsImQkMTEiLCJyZCQyIiwibGQkMiIsImN0eCQyMiIsImQkMTIiLCJkMiQ5IiwiY3R4JDIzIiwiZDEkMTIiLCJjdHgkMjQiLCJkMSQxMyIsImQyJDEwIiwiZDIkMTEiLCJjdHgkMjUiLCJkMSQxNCIsImN0eCQyNiIsImQxJDE1IiwiZDIkMTIiLCJjdHgkMjciLCJkJDEzIiwiY3R4JDI4IiwiZCQxNCIsImN0eCQyOSIsImQkMTUiLCJjdHgkMzAiLCJkJDE2IiwicnIiLCJsciIsImN0eCQzMSIsInNjciIsImQkMTciLCJmaXh1cF9jYXN0IiwidW5ib3giLCJyZXF1ZXN0IiwiZXhwciIsImV4cHIkMCIsImN0MSIsImN0MiIsInQycyIsInQxcyIsIm5hbWUxIiwibmFtZTIiLCJuYW1lMSQwIiwibmFtZTIkMCIsImV4cHIkMSIsImNvbWJpbmVfcmVzdWx0IiwibWF0Y2hlcyIsImIkMCIsIm1feCIsIm1feHMiLCJkcCQyIiwicHBfaW5zdGFuY2VfcmVwb3J0Iiwic2hvd19pbnN0YW5jZV9yZXBvcnQiLCJpbnN0YW5jZV9yZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaW5zdGFuY2VfcmVwb3J0IiwiaW5zdGFuY2VfcmVwb3J0X29mX3lvanNvbiIsInlvanNvbl9vZl9pbnN0YW5jZV9yZXBvcnQiLCJqb2ludF9zdGF0dXMiLCJyZXBvcnRzIiwicHBfcmVwb3J0Iiwic2hvd19yZXBvcnQiLCJyZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfcmVwb3J0IiwiYXJnMV8wMjAiLCJyZXMxXzAyMiIsInJlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVwb3J0IiwibG9va3VwX2FuZF9qb2luIiwidGVzdF9tYXAiLCJyZXBvcnQiLCJjb3VudF9zdGF0dXMiLCJpbnN0YW5jZXMiLCJwcF9zdGVwX2tpbmQiLCJzaG93X3N0ZXBfa2luZCIsInN0ZXBfa2luZF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwX2tpbmQiLCJzdGVwX2tpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBfa2luZCIsImV2YWx1YXRlX2V4dGVuZF9lbnYiLCJuZXdfYmluZGluZ3MiLCJ0b19leHRlbmQiLCJsZXRfdW5ib3giLCJzdGF0ZV91cGRhdGUiLCJsZXRfbWF0Y2giLCJtYXRjaF9yZXN1bHQiLCJyZXEiLCJzdGF0ZSIsIndyYXBfY3R4IiwiZHMkMCIsImJpbmRpbmciLCJzdWJzdGl0dXRpb25zIiwiZDJfaXNfdmFsdWUiLCJkNHMiLCJuX2FyZ3MiLCJkZWZlcnJlZCIsImRlZmVycmVkJDEiLCJkZWZlcnJlZCQwIiwibmV3X2FyZ3MiLCJpZGVudCIsImJ1aWx0aW4iLCJkMyQxIiwidGF1IiwidGZib2R5IiwiZHMkMSIsImlzX3ZhbHVlIiwiZHMxIiwiZHMyIiwiZDEkMTYiLCJkMSQxNyIsIm5leHRfcnVsZSIsInNob3VsZF9oaWRlX3N0ZXAiLCJzZXR0aW5ncyIsImNvbWJpbmUiLCJiMiQwIiwicmVxX3ZhbHVlIiwidmMiLCJyZXFfYWxsX3ZhbHVlIiwicmVxX2ZpbmFsIiwicmVxX2FsbF9maW5hbCIsInJlcV9maW5hbF9vcl92YWx1ZSIsIm90aGVyd2lzZSIsInJ1bGUiLCJ1cGRhdGVfdGVzdCIsImNoZWNrX3ZhbHVlIiwiY2hlY2tfdmFsdWVfbW9kX2N0eCIsImVycm9yX3NvdXJjZV8wNTQiLCJlcnJvcl9zb3VyY2VfMDgwIiwiZXJyb3Jfc291cmNlXzEwNSIsImVycm9yX3NvdXJjZV8xNzkiLCJwcF9waWVjZV9nb2FsIiwic2hvd19waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGllY2VfZ29hbCIsIm9mX3BpZWNlX2dvYWwiLCJwcF9nb2FsIiwic2hvd19nb2FsIiwiZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9nb2FsIiwiYXJnMV8wMjQiLCJnb2FsX29mX3lvanNvbiIsInlvanNvbl9vZl9nb2FsIiwicHBfbW92ZSIsInNob3dfbW92ZSIsIm1vdmVfb2Zfc2V4cCIsInNleHBfMDMxIiwidGFnXzAzMiIsInNleHBfYXJnc18wMzgiLCJzZXhwX2FyZ3NfMDQzIiwic2V4cF9hcmdzXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJzZXhwX29mX21vdmUiLCJtb3ZlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZlIiwicHBfanVtcF90YXJnZXQiLCJzaG93X2p1bXBfdGFyZ2V0IiwianVtcF90YXJnZXRfb2Zfc2V4cCIsInNleHBfMDU2IiwidGFnXzA1NyIsInNleHBfYXJnc18wNTgiLCJhcmcwXzA1OSIsInJlczBfMDYwIiwic2V4cF9vZl9qdW1wX3RhcmdldCIsImp1bXBfdGFyZ2V0X29mX3lvanNvbiIsInlvanNvbl9vZl9qdW1wX3RhcmdldCIsInBwX3JlbCIsInNob3dfcmVsIiwicmVsX29mX3NleHAiLCJzZXhwXzA2NyIsInRhZ18wNjgiLCJhcmcxXzA3MSIsInJlczFfMDczIiwic2V4cF9vZl9yZWwiLCJyZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX3JlbCIsInBwX3NlbGVjdCIsInNob3dfc2VsZWN0Iiwic2VsZWN0X29mX3NleHAiLCJzZXhwXzA4MiIsInRhZ18wODMiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMF8wOTUiLCJzZXhwX29mX3NlbGVjdCIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJzZWxlY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdCIsInNleHBfMTA3IiwidGFnXzEwOCIsInNleHBfYXJnc18xMjQiLCJhcmcwXzEyNSIsInJlczBfMTI2Iiwic2V4cF9hcmdzXzE1NCIsImFyZzBfMTU1IiwicmVzMF8xNTYiLCJzZXhwX2FyZ3NfMTI5Iiwic2V4cF9hcmdzXzEzNCIsImFyZzBfMTM1IiwicmVzMF8xMzYiLCJzZXhwX2FyZ3NfMTM5IiwiYXJnMF8xNDAiLCJyZXMwXzEyMSIsInNleHBfYXJnc18xMDkiLCJzZXhwX2FyZ3NfMTQ0IiwiYXJnMF8xNDUiLCJyZXMwXzE0NiIsInNleHBfYXJnc18xMTQiLCJzZXhwX2FyZ3NfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzBfMTU3IiwicmVzMF8xNTgiLCJhcmcwXzE1OSIsInJlczBfMTYwIiwiYXJnMF8xNjEiLCJyZXMwXzE2MiIsInJlczBfMTY0IiwiYXJnMF8xNjciLCJhcmcwXzE2OSIsInJlczBfMTcwIiwiYXJnMF8xNzEiLCJyZXMwXzE3MiIsImFyZzBfMTczIiwiYXJnMF8xNzUiLCJyZXMwXzE3NiIsImlzX2VkaXQiLCJpc19leHBhbmRlcl90b2siLCJ0cmltX2xhc3QiLCJpc19leHBhbmRlciIsIm1hcmsiLCJjb21wbGV0aW9uIiwiZXJyb3Jfc291cmNlXzAzMiIsImVycm9yX3NvdXJjZV8wNDMiLCJlcnJvcl9zb3VyY2VfMDYxIiwiZXJyb3Jfc291cmNlXzEwOSIsInBwX3N0cmF0ZWd5X2FsbCIsInNob3dfc3RyYXRlZ3lfYWxsIiwic3RyYXRlZ3lfYWxsX29mX3NleHAiLCJzZXhwX29mX3N0cmF0ZWd5X2FsbCIsInN0cmF0ZWd5X2FsbF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfYWxsIiwicHBfc3RyYXRlZ3lfY29tbW9uIiwic2hvd19zdHJhdGVneV9jb21tb24iLCJzdHJhdGVneV9jb21tb25fb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfY29tbW9uIiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInN0cmF0ZWd5X2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfY29tbW9uIiwicHBfc3RyYXRlZ3lfZXhwIiwic2hvd19zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2Zfc2V4cCIsInNleHBfMDM0IiwidGFnXzAzNSIsInNleHBfYXJnc18wMzYiLCJzZXhwX29mX3N0cmF0ZWd5X2V4cCIsInN0cmF0ZWd5X2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfZXhwIiwicHBfc3RyYXRlZ3lfcGF0Iiwic2hvd19zdHJhdGVneV9wYXQiLCJzdHJhdGVneV9wYXRfb2Zfc2V4cCIsInNleHBfMDQ1IiwidGFnXzA0NiIsInNleHBfb2Zfc3RyYXRlZ3lfcGF0IiwiYXJnMF8wNTUiLCJhcmcwXzA1NyIsInN0cmF0ZWd5X3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfcGF0IiwicHBfc3RyYXRlZ3lfdHlwIiwic2hvd19zdHJhdGVneV90eXAiLCJzdHJhdGVneV90eXBfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfdHlwIiwic3RyYXRlZ3lfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV90eXAiLCJwcF9zdHJhdGVneSIsInNob3dfc3RyYXRlZ3kiLCJzdHJhdGVneV9vZl9zZXhwIiwic2V4cF9vZl9zdHJhdGVneSIsImFyZzBfMDkzIiwicmVzMF8wOTQiLCJzdHJhdGVneV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3kiLCJzZXhwXzA5NiIsImZpZWxkX3NleHBzXzA5NyIsImNvbnRlbnRfMDk4Iiwic3RyYXRlZ3lfMTAwIiwiZHVwbGljYXRlc18xMDIiLCJleHRyYV8xMDMiLCJpdGVyXzExMCIsInNleHBfMDk2JDAiLCJmaWVsZF9zZXhwc18xMDYiLCJmaWVsZF9uYW1lXzEwNCIsInRhaWxfMTExIiwiZmllbGRfc2V4cF8xMDUkMiIsImZpZWxkX3NleHBfMTA1IiwieF8xMTIiLCJmaWVsZF9zZXhwXzEwNSQwIiwiZnZhbHVlXzEwNyIsImZpZWxkX3NleHBfMTA1JDEiLCJmdmFsdWVfMTA4Iiwic3RyYXRlZ3lfMTAxIiwiY29udGVudF8wOTkiLCJzdHJhdGVneV8xMTYiLCJjb250ZW50XzExNCIsImFyZ18xMTciLCJibmRzXzExMyIsImFyZ18xMTUiLCJibmRzXzExMyQwIiwic3RyYXRlZ3lfZmllbGQiLCJzdHJhdGVneV92YWx1ZSIsInZfc3RyYXRlZ3kiLCJleHBhbmRlciIsImpvaW50X3VzZV90eXAiLCJib3VuZF92YXJpYWJsZXMiLCJ0eV9leHBlY3QiLCJib3VuZF9jb25zdHJ1Y3RvcnMiLCJib3VuZF9hcHMiLCJ0eV9hcnIiLCJib3VuZF9jb25zdHJ1Y3Rvcl9hcHMiLCJ0eXBfY29udGV4dF9lbnRyaWVzIiwic3VnZ2VzdF92YXJpYWJsZSIsInN1Z2dlc3RfbG9va2FoZWFkX3ZhcmlhYmxlIiwicmVzdHJhdGVnaXplIiwic3VmZml4Iiwic3RyYXRlZ3kiLCJleHBfcmVmcyIsImV4cF9hcHMiLCJjb21tYXMiLCJwYXRfcmVmcyIsInBhdF9hcHMiLCJjb21tYXMkMCIsImxlYWRpbmdfZXhwYW5kZXIiLCJ1bmsiLCJvZl9jb25zdF9tb25vX2RlbGltIiwib2ZfbGVhZGluZ19kZWxpbSIsIm9mX2luZml4X2RlbGltIiwiZmlsdGVyX2J5Iiwic2VsZl90eXMiLCJkZWxpbSIsInNlbGZfdHkiLCJkZWxheWVkX2xlYWRpbmciLCJkZWxhdGVkX2xlYWRpbmdfZXhwIiwiZGVsYXRlZF9sZWFkaW5nX3BhdCIsImRlbGF0ZWRfbGVhZGluZ190eXAiLCJkZWxheWVkX2xlYWRpbmckMCIsImluZml4IiwiaW5maXhfZXhwIiwiaW5maXhfcGF0IiwiaW5maXhfdHlwIiwiaW5maXgkMCIsImNvbnN0X21vbm8iLCJjb25zdF9tb25vX2V4cCIsImNvbnN0X21vbm9fcGF0IiwiY29uc3RfbW9ub190eXAiLCJjb25zdF9tb25vJDAiLCJzdWdnZXN0X2Zvcm0iLCJ0eV9tYXAiLCJkZWxpbXNfb2Zfc29ydCIsImZpbHRlcmVkIiwic3VnZ2VzdF9vcGVyYXRvciIsInN1Z2dlc3Rfb3BlcmFuZCIsInN1Z2dlc3RfbGVhZGluZyIsImVycm9yX3NvdXJjZV8wMTMiLCJob2xlX3NvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaG9sZV9zb3J0IiwiYXJnMl8wMDgiLCJhcmcxXzAwNyIsImFyZzBfMDA2IiwicmVzMV8wMTAiLCJyZXMyXzAxMSIsImFkZF9hbGwiLCJ0b2tlbnMiLCJwcF90aWxlcyIsInNob3dfdGlsZXMiLCJ0aWxlc19vZl9zZXhwIiwic2V4cF9vZl90aWxlcyIsInRpbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl90aWxlcyIsInNpbmdsZSIsInBwX3Vuc29ydGVkIiwic2hvd191bnNvcnRlZCIsInVuc29ydGVkX29mX3NleHAiLCJzZXhwXzAxOSIsInRhZ18wMjAiLCJhcmcxXzAzNSIsInJlczFfMDM3IiwiYXJnMl8wNDMiLCJyZXMxXzA0NSIsInJlczJfMDQ2Iiwic2V4cF9vZl91bnNvcnRlZCIsImFyZzBfMDQ3IiwiYXJnMV8wNTQiLCJyZXMxXzA1NiIsImFyZzJfMDU5IiwiYXJnMV8wNTgiLCJyZXMxXzA2MSIsInJlczJfMDYyIiwidW5zb3J0ZWRfb2ZfeW9qc29uIiwieW9qc29uX29mX3Vuc29ydGVkIiwiaXNfbmFyeSIsImlzX3NvcnQiLCJpc190dXBsZV9leHAiLCJpc190dXBsZV9wYXQiLCJpc190dXBsZV90eXAiLCJpc190eXBfYnN1bSIsImlzX3J1bGVzIiwiY2xhdXNlcyIsImNsYXVzZSIsImlkc19vZl90aWxlcyIsImtpZHNfb2ZfdGlsZSIsImtpZHNfb2ZfdGlsZXMiLCJraWRzX29mX3Vuc29ydGVkIiwidGlsZXMkMCIsInRpbGVzJDEiLCJ0aWxlcyQyIiwicmV0dXJuJDAiLCJwYXJzZV9zdW1fdGVybSIsImlkc19jdHIiLCJnb19zIiwiZXhwX3Rlcm0iLCJwYXRfdGVybSIsInR5cF90ZXJtIiwidHBhdF90ZXJtIiwicnVsIiwidW5zb3J0ZWQiLCJpbm5lcl9pZHMiLCJyZXQiLCJ0cGF0JDAiLCJjb25zZXEiLCJmaWx0ZXIkMSIsImZpbHRlciQyIiwidCQyIiwidXNlX2RlZmVycmFsIiwiYmV0d2Vlbl9raWRzIiwidCQzIiwicmV0JDAiLCJyZXQkMSIsImhvbGUkMSIsImJldHdlZW5fa2lkcyQwIiwicmV0JDIiLCJob2xlJDIiLCJsYXN0X2NsYXVzZSIsImxlYWRpbmdfY2xhdXNlcyIsInRpbGVfa2lkcyIsInBfciIsInBfbCIsImZyb21femlwIiwiZnJvbV96aXBfZm9yX3ZpZXciLCJmcm9tX3ppcF9mb3Jfc2VtIiwiZXJyb3Jfc291cmNlXzAzMCIsInVuc2VsZWN0ZWQiLCJ0ZXJtcyIsInZpZXdfdGVybSIsIm1vZHVsZV9vZl90IiwiY29sX3RhcmdldCIsIm5leHQiLCJlZmZlY3RzIiwibWVhc3VyZWQkMCIsImNvbF90YXJnZXQkMCIsInRlcm1zJDAiLCJ2aWV3X3Rlcm0kMCIsInppcHBlcl8wMDQiLCJtZXRhXzAwNiIsIm1ldGFfMDA3IiwiemlwcGVyXzAwNSIsIm1ldGFfMDIyIiwiemlwcGVyXzAyMCIsInppcHBlcl9maWVsZCIsIm1ldGFfZmllbGQiLCJtZXRhX3ZhbHVlIiwiemlwcGVyX3ZhbHVlIiwidl9tZXRhIiwidl96aXBwZXIiLCJpbml0JDAiLCJuZXh0JDAiLCJwcF9hZmZpeCIsInNob3dfYWZmaXgiLCJhZmZpeF9vZl9zZXhwIiwieF8wMzEiLCJzZXhwXzAyOSIsInJlczFfMDI4Iiwic2V4cF9vZl9hZmZpeCIsImFmZml4X29mX3lvanNvbiIsInlvanNvbl9vZl9hZmZpeCIsInNleHBfMDQyIiwiYXJnMV8wMzkiLCJyZXMxXzA0MSIsImFyZzFfMDQ1IiwicmVzMV8wNDciLCJzZXhwXzA0OSIsImZpZWxkX3NleHBzXzA1MCIsInN0YXRlXzA1MSIsImhpc3RvcnlfMDUzIiwicmVhZF9vbmx5XzA1NSIsImR1cGxpY2F0ZXNfMDU3IiwiZXh0cmFfMDU4IiwiaXRlcl8wNjYiLCJzZXhwXzA0OSQwIiwiZmllbGRfbmFtZV8wNTkiLCJ0YWlsXzA2NyIsImZpZWxkX3NleHBfMDYwJDMiLCJmaWVsZF9zZXhwXzA2MCIsInhfMDY4IiwiZmllbGRfc2V4cF8wNjAkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA2MCQxIiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDYwJDIiLCJmdmFsdWVfMDYzIiwicmVhZF9vbmx5XzA1NiIsImhpc3RvcnlfMDU0Iiwic3RhdGVfMDUyIiwicmVhZF9vbmx5XzA3NCIsImhpc3RvcnlfMDcyIiwic3RhdGVfMDcwIiwiYXJnXzA3NSIsImJuZHNfMDY5IiwiYXJnXzA3MyIsImJuZHNfMDY5JDAiLCJhcmdfMDcxIiwiYm5kc18wNjkkMSIsInN0YXRlX2ZpZWxkIiwiaGlzdG9yeV9maWVsZCIsInJlYWRfb25seV9maWVsZCIsInJlYWRfb25seV92YWx1ZSIsImhpc3RvcnlfdmFsdWUiLCJzdGF0ZV92YWx1ZSIsInZfcmVhZF9vbmx5Iiwidl9oaXN0b3J5Iiwidl9zdGF0ZSIsInJlYWRfb25seSIsInVwZGF0ZV96IiwiZWQiLCJwdXRfeiIsInVwZGF0ZV96X29wdCIsIm5ld19zdGF0ZSIsImhpc3RvcnkiLCJ1bmRvIiwiYWZ0ZXIiLCJiZWZvcmUiLCJyZWRvIiwiY2FuX3VuZG8iLCJjYW5fcmVkbyIsInNldF9yZWFkX29ubHkiLCJ0cmFpbGluZ19ob2xlX2N0eCIsImluZm8kMCIsImVycm9yX3NvdXJjZV8wMTIiLCJlcnJvcl9zb3VyY2VfMDIxIiwiZF8wMDQiLCJkdXBsaWNhdGVzXzAwNiIsImV4dHJhXzAwNyIsIml0ZXJfMDEzIiwiZmllbGRfc2V4cHNfMDEwIiwiZmllbGRfbmFtZV8wMDgiLCJ0YWlsXzAxNCIsImZpZWxkX3NleHBfMDA5JDEiLCJmaWVsZF9zZXhwXzAwOSIsImZpZWxkX3NleHBfMDA5JDAiLCJmdmFsdWVfMDExIiwiZF8wMDUiLCJkXzAxNyIsImFyZ18wMTgiLCJibmRzXzAxNiIsImRfZmllbGQiLCJkX3ZhbHVlIiwidl9kIiwidGFnXzAyNCIsInNleHBfYXJnc18wMjUiLCJhcmcyXzAyOCIsImFyZzFfMDI3IiwicmVzMl8wMzEiLCJhcmcyXzAzNCIsInJlczFfMDM2IiwicmVzMl8wMzciLCJmcmVzaF9jYXN0IiwiZnJlc2hfcGF0X2Nhc3QiLCJlbGFib3JhdGVkX3R5cGUiLCJlbGFiX3R5IiwiZWxhYm9yYXRlZF9wYXRfdHlwZSIsImVsYWJvcmF0ZV9wYXR0ZXJuIiwiY2FzdF9mcm9tIiwiZHBhdCIsImlubmVyX3R5cGUiLCJ0eTJfaW5uZXIiLCJ0eV9pbm5lciIsInBzJDEiLCJwcyQyIiwicDIkMiIsInAxJDIiLCJwMSQzIiwicDIkMyIsInR5MXIiLCJ0eTFsIiwicDEkNCIsInAyJDQiLCJlbGFib3JhdGUiLCJlbGFib3JhdGVkX3R5cGUkMCIsInN0dWZmIiwiZGhleHAiLCJ0eWUiLCJ0eWUkMCIsImFkZF9uYW1lIiwiZml4ZiIsImRlZiQzIiwidHllJDEiLCJ0eWUkMiIsInR5ZiIsInR5YSIsInR5ZjIiLCJ0eWYxIiwidXQiLCJ0eWUkMyIsInR5ZSQ0IiwidXQkMCIsInR5ZSQ1IiwiZiQyIiwidHlmJDAiLCJmJDMiLCJ0eXMkMSIsInR5ZjIkMCIsInR5ZjEkMCIsInR5X2ZhcmdzIiwiZiQ0IiwiYXJncyQxIiwicmVtYWluaW5nX2FyZ3MiLCJyZW1haW5pbmdfYXJnX3R5IiwiZiQ1IiwidHljIiwiYyQxIiwidHl0IiwidHlmJDEiLCJmJDYiLCJjJDIiLCJmJDciLCJraW5kIiwiZSQxNiIsImtpbmQkMCIsImUkMTciLCJ0JDQiLCJlJDE4IiwidHlfaW5uZXIxIiwidHlfaW5uZXIyIiwidHlfaW5uZXIkMCIsImUkMTkiLCJlJDIwIiwidCQ1IiwiZSQyMSIsImUkMjIiLCJ0JDYiLCJlJDIzIiwiY2FzZXMiLCJlJDI0IiwidCQ3IiwiZSQyNSIsInB0eXMiLCJqb2luZWRfcHR5IiwiZSQyNiIsImV0eXMiLCJqb2luZWRfZXR5IiwiY29udCIsImZpeF90eXBfaWRzIiwidWV4cF9lbGFiIiwiaW5pdGlhbCIsInN0ZXBfMDA0Iiwic3RlcF8wMDUiLCJzdGVwXzAxNyIsInN0ZXBfZmllbGQiLCJzdGVwX3ZhbHVlIiwidl9zdGVwIiwidGFrZV9zdGVwIiwic3RlcCIsImdldF9zdGVwIiwicHV0X3N0ZXAiLCJzdGF0c18wMDQiLCJ0ZXN0c18wMDYiLCJ0ZXN0c18wMDciLCJzdGF0c18wMDUiLCJ0ZXN0c18wMjIiLCJzdGF0c18wMjAiLCJzdGF0c19maWVsZCIsInRlc3RzX2ZpZWxkIiwidGVzdHNfdmFsdWUiLCJzdGF0c192YWx1ZSIsInZfdGVzdHMiLCJ2X3N0YXRzIiwic3RhdHMiLCJhZGRfdGVzdCIsInRlc3RzIiwidGVzdHMkMCIsImdldF90ZXN0cyIsInB1dF90ZXN0cyIsInN5bWJvbCIsInN0YXRlX3VwZGF0ZSQwIiwic3RhdGVfdXBkYXRlJDEiLCJldmFsdWF0ZSIsInJlc3VsdCQwIiwicHJldHR5MiIsInByZXR0eTEiLCJwaWVjZTEiLCJwaWVjZTIiLCJwX29yIiwicF9vcmlmIiwicF9qdXN0IiwicF9jb25jYXQiLCJwcmV0dGllcyIsInByZXR0eSIsImxldCQxIiwiYW5kJDAiLCJzaG91bGRfYWRkX3NwYWNlIiwidGV4dF90b19wcmV0dHkiLCJta19mb3JtIiwiZm9ybV9uYW1lIiwiZm9ybSIsImxzcGFjZSIsInJzcGFjZSIsImNoaWxkcmVuJDAiLCJwYWRfaWRzIiwic2VnMSIsInNlZzIiLCJleHBfdG9fcHJldHR5IiwiaW5saW5lIiwiaW5saW5lJDAiLCJhbnlfdG9fcHJldHR5IiwicGF0X3RvX3ByZXR0eSIsImlkJDIiLCJ0cGF0X3RvX3ByZXR0eSIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsInR5cF90b19wcmV0dHkiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwiaWQkMTAiLCJpZCQxMSIsImlkJDEyIiwiaWQkMTMiLCJpZCQxNCIsImlkJDE1IiwiaWQkMTYiLCJpZCQxNyIsImlkJDE4IiwiZ29fY29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImV4dGVybmFsX3ByZWNlZGVuY2UiLCJleHAkMCIsImV4cCQxIiwiZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQiLCJleHRlcmFsX3ByZWNlZGVuY2VfdHlwIiwicGFyZW5fYXQiLCJpbnRlcm5hbF9wcmVjZWRlbmNlIiwicGFyZW5fYXNzb2NfYXQiLCJwYXJlbl9wYXRfYXQiLCJwYXJlbl9wYXRfYXNzb2NfYXQiLCJwYXJlbl90eXBfYXQiLCJwYXJlbl90eXBfYXNzb2NfYXQiLCJwYXJlbnRoZXNpemUiLCJwYXJlbnRoZXNpemVfcGF0IiwidHAkMSIsInBhcmVudGhlc2l6ZV90eXAiLCJleHBfdG9fZWRpdG9yIiwicGllY2UiLCJub193cyIsImlnbiIsInBhcmVudCQwIiwicGFyZW50JDEiLCJwaWVjZSQwIiwic2hhcmRfaW5kZXgiLCJyZWxhdGlvbiIsImJlZm9yZSQwIiwiY2lfb2YiLCJwcm94eV9pZCIsInNsIiwic3IiLCJwcF9pbm5lciIsInNob3dfaW5uZXIiLCJpbm5lcl9vZl9zZXhwIiwicmVzdWx0XzAwNCIsImVkaXRvcl8wMDYiLCJzdGF0ZV8wMDgiLCJzdGF0ZV8wMDkiLCJlZGl0b3JfMDA3IiwicmVzdWx0XzAwNSIsInNleHBfb2ZfaW5uZXIiLCJzdGF0ZV8wMjciLCJlZGl0b3JfMDI1IiwicmVzdWx0XzAyMyIsImlubmVyX29mX3lvanNvbiIsInJlc3VsdF9maWVsZCIsImVkaXRvcl9maWVsZCIsImVkaXRvcl92YWx1ZSIsInJlc3VsdF92YWx1ZSIsInlvanNvbl9vZl9pbm5lciIsInZfZWRpdG9yIiwidl9yZXN1bHQiLCJzZXhwXzA1MSIsInRhZ18wNTIiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJhcmcwXzA2OCIsInJlczBfMDY5IiwiZ2V0X2RoZXhwIiwiZ2V0X3N0YXRlIiwibWtfbWFwIiwibWtfbWFwJDAiLCJjb3JlIiwibWtfbWFwX2FuZF9pbmZvX2N0eCIsIm1rX21hcF9jdHgiLCJkaF9lcnIiLCJlcnJvciIsImV4biQwIiwiZXhuIiwicmVhc29uIiwiZXZhbF96Iiwic3VnZ2VzdF9iYWNrcGFjayIsInRva2VuX3RvX2xlZnQiLCJ0b2tfdG9fbGVmdCIsIm1rX3VucGFyc2VkX2J1ZmZlciIsInN1ZmZpeF9vZiIsImNhbmRpZGF0ZSIsImNhbmRpZGF0ZV9zdWZmaXgiLCJ6X3RvX2NpIiwiZ2V0X2J1ZmZlciIsInN1Z2dlc3QiLCJzdWdnZXN0aW9ucyIsInN1Z2dlc3Rpb25zJDAiLCJ0b3Bfc3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb25fc3VmZml4IiwidGVzdF9tYXBfMDA0Iiwic3RhdHVzZXNfMDA2IiwiZGVzY3JpcHRpb25zXzAwOCIsInRvdGFsXzAxMCIsInBhc3NpbmdfMDEyIiwiZmFpbGluZ18wMTQiLCJ1bmZpbmlzaGVkXzAxNiIsImR1cGxpY2F0ZXNfMDE4IiwiZXh0cmFfMDE5IiwiaXRlcl8wMzEiLCJmaWVsZF9uYW1lXzAyMCIsInRhaWxfMDMyIiwiZmllbGRfc2V4cF8wMjEkNyIsImZpZWxkX3NleHBfMDIxIiwiZmllbGRfc2V4cF8wMjEkMCIsImZ2YWx1ZV8wMjMiLCJmaWVsZF9zZXhwXzAyMSQxIiwiZmllbGRfc2V4cF8wMjEkMiIsImZpZWxkX3NleHBfMDIxJDMiLCJmaWVsZF9zZXhwXzAyMSQ0IiwiZmllbGRfc2V4cF8wMjEkNSIsImZpZWxkX3NleHBfMDIxJDYiLCJ1bmZpbmlzaGVkXzAxNyIsImZhaWxpbmdfMDE1IiwicGFzc2luZ18wMTMiLCJ0b3RhbF8wMTEiLCJkZXNjcmlwdGlvbnNfMDA5Iiwic3RhdHVzZXNfMDA3IiwidGVzdF9tYXBfMDA1IiwidW5maW5pc2hlZF8wNDciLCJmYWlsaW5nXzA0NSIsInBhc3NpbmdfMDQzIiwidG90YWxfMDQxIiwiZGVzY3JpcHRpb25zXzAzOSIsInN0YXR1c2VzXzAzNyIsInRlc3RfbWFwXzAzNSIsImJuZHNfMDM0IiwiYm5kc18wMzQkMCIsImJuZHNfMDM0JDEiLCJibmRzXzAzNCQyIiwiYXJnXzA0MCIsImJuZHNfMDM0JDMiLCJhcmdfMDM4IiwiYm5kc18wMzQkNCIsImFyZ18wMzYiLCJibmRzXzAzNCQ1IiwidGVzdF9tYXBfZmllbGQiLCJzdGF0dXNlc19maWVsZCIsImRlc2NyaXB0aW9uc19maWVsZCIsInRvdGFsX2ZpZWxkIiwicGFzc2luZ19maWVsZCIsImZhaWxpbmdfZmllbGQiLCJ1bmZpbmlzaGVkX2ZpZWxkIiwidW5maW5pc2hlZF92YWx1ZSIsImZhaWxpbmdfdmFsdWUiLCJwYXNzaW5nX3ZhbHVlIiwidG90YWxfdmFsdWUiLCJkZXNjcmlwdGlvbnNfdmFsdWUiLCJzdGF0dXNlc192YWx1ZSIsInRlc3RfbWFwX3ZhbHVlIiwidl91bmZpbmlzaGVkIiwidl9mYWlsaW5nIiwidl9wYXNzaW5nIiwidl90b3RhbCIsInZfZGVzY3JpcHRpb25zIiwidl9zdGF0dXNlcyIsInZfdGVzdF9tYXAiLCJta19yZXN1bHRzIiwiZGVzY3JpcHRpb25zIiwicmVzdWx0X3N1bW1hcnlfc3RyIiwibl9zdHIiLCJuc19zdHIiLCJwX3N0ciIsInFfc3RyIiwicl9zdHIiLCJvbmVfcCIsIm9uZV9xIiwibW55X3AiLCJtbnlfcSIsIm9mX24iLCJ0ZXN0X3N1bW1hcnlfc3RyIiwidGVzdF9yZXN1bHRzIiwic3Vic3RfdmFyIiwic3Vic3RfdmFyX2VudiIsImQ0IiwiZDMkMiIsImQzJDMiLCJkNCQwIiwiZDMkNCIsImVudiQyIiwiZDMkNSIsImQ0JDEiLCJkNCQyIiwiZDQkMyIsImQzJDYiLCJkMyQ3IiwiZDQkNCIsImQzJDgiLCJkMyQ5IiwiZDMkMTAiLCJkMyQxMSIsImQ0cyQwIiwiZDYiLCJkNSIsImQ0JDUiLCJkNCQ2IiwiZDUkMCIsImQ2JDAiLCJkNCQ3IiwiZDMkMTIiLCJkMyQxMyIsImQ0JDgiLCJkMyQxNCIsImRib2R5IiwiZGJvZHkkMCIsInN1YnN0X3Zhcl9maWx0ZXIiLCJkMyQxNSIsImVudiQzIiwiZW52JDQiLCJkMyQxNiIsImQ0JDkiLCJkNCQxMCIsImQ0JDExIiwiZDMkMTciLCJkMyQxOCIsImQ0JDEyIiwiZDQkMTMiLCJkMyQxOSIsImQzJDIwIiwiZDQkMTQiLCJkMyQyMSIsImQzJDIyIiwiZDQkMTUiLCJkMyQyMyIsImQzJDI0IiwiZDQkMTYiLCJkcyQyIiwicnVsZXMkMCIsInhkIiwicHBfc3RhdGljcyIsInNob3dfc3RhdGljcyIsInN0YXRpY3Nfb2Zfc2V4cCIsInRlcm1fMDA0IiwiaW5mb19tYXBfMDA2IiwiZXJyb3JfaWRzXzAwOCIsImVycm9yX2lkc18wMDkiLCJpbmZvX21hcF8wMDciLCJ0ZXJtXzAwNSIsInNleHBfb2Zfc3RhdGljcyIsImVycm9yX2lkc18wMjciLCJpbmZvX21hcF8wMjUiLCJ0ZXJtXzAyMyIsInN0YXRpY3Nfb2ZfeW9qc29uIiwiaW5mb19tYXBfZmllbGQiLCJlcnJvcl9pZHNfZmllbGQiLCJlcnJvcl9pZHNfdmFsdWUiLCJpbmZvX21hcF92YWx1ZSIsInlvanNvbl9vZl9zdGF0aWNzIiwidl9lcnJvcl9pZHMiLCJ2X2luZm9fbWFwIiwic3RhdGljc19vZl90ZXJtIiwiZWRpdG9yIiwiZW1wdHlfc3RhdGljcyIsInJlc3VsdHMiLCJzdGF0aWNzIiwiZXJyb3Jfc291cmNlXzA2NCIsInN0YXRlXzAwNiIsImRfbG9jXzAwOCIsImRfbG9jXzAxMCIsImN0eF8wMTIiLCJrbmRfMDE0IiwiZHVwbGljYXRlc18wMTYiLCJleHRyYV8wMTciLCJpdGVyXzAyOCIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmaWVsZF9zZXhwXzAxOSQxIiwiZmllbGRfc2V4cF8wMTkkMiIsImZpZWxkX3NleHBfMDE5JDMiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZmllbGRfc2V4cF8wMTkkNSIsImZ2YWx1ZV8wMjIiLCJrbmRfMDE1IiwiY3R4XzAxMyIsImRfbG9jXzAxMSIsImRfbG9jXzAwOSIsInN0YXRlXzAwNyIsImtuZF8wNDIiLCJjdHhfMDQwIiwiZF9sb2NfMDM4IiwiZF9sb2NfMDM2Iiwic3RhdGVfMDM0IiwiZF8wMzIiLCJibmRzXzAzMSIsImJuZHNfMDMxJDAiLCJibmRzXzAzMSQxIiwiYm5kc18wMzEkMiIsImJuZHNfMDMxJDMiLCJhcmdfMDMzIiwiYm5kc18wMzEkNCIsImRfbG9jX2ZpZWxkIiwiZF9sb2NfZmllbGQkMCIsImtuZF9maWVsZCIsImtuZF92YWx1ZSIsImRfbG9jX3ZhbHVlIiwiZF9sb2NfdmFsdWUkMCIsInZfa25kIiwidl9kX2xvYyIsInZfZF9sb2MkMCIsImZpZWxkX3NleHBzXzA0NiIsImVudl8wNDciLCJkX2xvY18wNDkiLCJjdHhfMDUxIiwia25kXzA1MyIsImR1cGxpY2F0ZXNfMDU1IiwiZXh0cmFfMDU2IiwiaXRlcl8wNjUiLCJzZXhwXzA0NSQwIiwiZmllbGRfc2V4cHNfMDU5IiwiZmllbGRfbmFtZV8wNTciLCJ0YWlsXzA2NiIsImZpZWxkX3NleHBfMDU4JDQiLCJmaWVsZF9zZXhwXzA1OCIsInhfMDY3IiwiZmllbGRfc2V4cF8wNTgkMCIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQxIiwiZmllbGRfc2V4cF8wNTgkMiIsImZpZWxkX3NleHBfMDU4JDMiLCJmdmFsdWVfMDYxIiwia25kXzA1NCIsImN0eF8wNTIiLCJkX2xvY18wNTAiLCJlbnZfMDQ4Iiwia25kXzA3NSIsImN0eF8wNzMiLCJkX2xvY18wNzEiLCJlbnZfMDY5IiwiYXJnXzA3NiIsImJuZHNfMDY4IiwiYXJnXzA3NCIsImJuZHNfMDY4JDAiLCJhcmdfMDcyIiwiYm5kc18wNjgkMSIsImFyZ18wNzAiLCJibmRzXzA2OCQyIiwiZW52X2ZpZWxkIiwiZW52X3ZhbHVlIiwidl9lbnYiLCJkX2xvYyIsImtuZCIsImdldF9jdHgiLCJvYmoiLCJnZXRfa2luZCIsIm9ianMiLCJ3ciIsInNzMSIsInNzMiIsInZzIiwicmVxX2FsbF92YWx1ZSQwIiwicmVxX2FsbF9maW5hbCQwIiwicnEiLCJybCIsInZhbCIsIm8iLCJkZWNvbXBvc2UiLCJyZXFfdmFsdWUkMCIsInJlcV9hbGxfdmFsdWUkMSIsInJlcV9maW5hbCQwIiwicmVxX2FsbF9maW5hbCQxIiwicmVxX2ZpbmFsX29yX3ZhbHVlJDAiLCJvdGhlcndpc2UkMCIsInVwZGF0ZV90ZXN0JDAiLCJ0YWtlX3N0ZXAkMCIsImRlY29tcG9zZSQwIiwiZXZhbHVhdGVfd2l0aF9oaXN0b3J5IiwiZXh0ZW5kcyQwIiwibWF0Y2hlc19leHAiLCJmdiIsImR2IiwiZnYkMCIsImR2JDAiLCJmdiQxIiwiZHYkMSIsImZ2JDIiLCJkdiQyIiwiZnYkMyIsImR2JDMiLCJmbmFtZTEiLCJmcDEiLCJkbmFtZTEiLCJtYXRjaGVzX3BhdCIsInBhdDIiLCJwYXQxIiwibWF0Y2hlc191dHBhdCIsImZ2JDQiLCJkdiQ0IiwiZngkMCIsImR4JDAiLCJmcCIsImZwJDAiLCJmZCIsImZ1dCIsImZ0cCIsImRkIiwiZHV0IiwiZHRwIiwiZjEkMiIsIm1hdGNoZXNfdHlwIiwiZjEkMyIsImYzIiwiZjIkMiIsImYxJDQiLCJmMiQzIiwiZjEkNSIsImYyJDQiLCJmZCQwIiwiZmYiLCJkZCQwIiwiZGYiLCJmMiQ1IiwiZjEkNiIsImYyJDYiLCJmMSQ3IiwiZjEkOCIsImZfb3AiLCJkX29wIiwiZjIkNyIsImYxJDkiLCJmX29wJDAiLCJkX29wJDAiLCJkbiIsImZydWxlIiwiZnNjcnV0IiwiZHJ1bGUiLCJkc2NydXQiLCJmayIsImRrIiwicmVzJDAiLCJkdCIsImR4IiwiZngiLCJkbCIsImZsIiwiZGwkMCIsImZsJDAiLCJtYXRjaGVzX3J1bCIsImwxIiwiZmx0X2VudiIsImZsdF9lbnYkMCIsImlkeCQwIiwiZmx0X2VudiQxIiwiaWR4JDEiLCJwcF9zdGVwcGVyX3N0YXRlIiwic2hvd19zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl9zZXhwIiwic2V4cF9vZl9zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcHBlcl9zdGF0ZSIsInBwX2EiLCJzaG93X2EiLCJhX29mX3NleHAiLCJhcmcyXzAyMiIsInJlczJfMDI1Iiwic2V4cF9vZl9hIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsInJlczJfMDMzIiwiYV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYSIsInBwX2hpc3RvcnkiLCJzaG93X2hpc3RvcnkiLCJoaXN0b3J5X29mX3NleHAiLCJzZXhwX29mX2hpc3RvcnkiLCJoaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9oaXN0b3J5Iiwic2V4cF8wMzgiLCJoaXN0b3J5XzA0MCIsIm5leHRfb3B0aW9uc18wNDIiLCJzdGVwcGVyX3N0YXRlXzA0NCIsImR1cGxpY2F0ZXNfMDQ2IiwiZXh0cmFfMDQ3IiwiaXRlcl8wNTUiLCJzZXhwXzAzOCQwIiwiZmllbGRfbmFtZV8wNDgiLCJ0YWlsXzA1NiIsImZpZWxkX3NleHBfMDQ5JDMiLCJmaWVsZF9zZXhwXzA0OSIsInhfMDU3IiwiZmllbGRfc2V4cF8wNDkkMCIsImZ2YWx1ZV8wNTEiLCJmaWVsZF9zZXhwXzA0OSQxIiwiZnZhbHVlXzA1MiIsImZpZWxkX3NleHBfMDQ5JDIiLCJmdmFsdWVfMDUzIiwic3RlcHBlcl9zdGF0ZV8wNDUiLCJuZXh0X29wdGlvbnNfMDQzIiwiaGlzdG9yeV8wNDEiLCJzdGVwcGVyX3N0YXRlXzA2MyIsIm5leHRfb3B0aW9uc18wNjEiLCJoaXN0b3J5XzA1OSIsImJuZHNfMDU4JDEiLCJuZXh0X29wdGlvbnNfZmllbGQiLCJzdGVwcGVyX3N0YXRlX2ZpZWxkIiwic3RlcHBlcl9zdGF0ZV92YWx1ZSIsIm5leHRfb3B0aW9uc192YWx1ZSIsInZfc3RlcHBlcl9zdGF0ZSIsInZfbmV4dF9vcHRpb25zIiwicGFjdCIsInBpZHgiLCJjb21wb3NlZCIsIm1pZHgiLCJtYWN0IiwicmN0eCIsInJpZHgiLCJyYWN0IiwiZmx0JDAiLCJmbHQkMSIsInJjdHgkMCIsInJpZHgkMCIsInJhY3QkMCIsImRyIiwiY3R4JDMyIiwic2hvdWxkX2hpZGVfZXZhbF9vYmoiLCJnZXRfZWxhYiIsImdldF9uZXh0X3N0ZXBzIiwiY3VycmVudF9leHByIiwiY3VycmVudF9zdGF0ZSIsInN0ZXBfcGVuZGluZyIsInN0ZXBwZXIiLCJldmFsdWF0ZV9wZW5kaW5nIiwiZW8iLCJzdGF0ZV9yZWYiLCJuZXdfc3RlcCIsImV2YWx1YXRlX2Z1bGwiLCJ0aW1lb3V0IiwidHJ1bmNhdGVfaGlzdG9yeSIsImFzIiwiYnMiLCJicyQwIiwic3RlcF9iYWNrd2FyZCIsImgiLCJzdCIsImdldF9qdXN0aWZpY2F0aW9uIiwiZ2V0X2hpc3RvcnkiLCJzaG91bGRfc2tpcF9zdGVwIiwiZ3JvdXBlZF9zdGVwcyIsInJlcGxhY2VfaWQiLCJ0cmFja19pZHMiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX2hpc3RvcnkiLCJjaG9zZW5fc3RlcCIsImhzIiwiaGgiLCJyZXBsYWNlbWVudCIsImhpZGRlbl9oaXN0b3J5JDAiLCJwcmV2aW91c19zdGVwJDAiLCJwYWRkZWQiLCJoaWRkZW5fc3RlcHNfb2ZfaW5mbyIsInBwX3BlcnNpc3RlbnRfaGlzdG9yeSIsInNob3dfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3NleHAiLCJ4XzA3MiIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJzZXhwX29mX3BlcnNpc3RlbnRfaGlzdG9yeSIsInhfMDc3IiwiYXJnMV8wNzQiLCJhcmcwXzA3MyIsInJlczFfMDc2IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X2hpc3RvcnkiLCJwcF9wZXJzaXN0ZW50Iiwic2hvd19wZXJzaXN0ZW50IiwicGVyc2lzdGVudF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDgxIiwiZHVwbGljYXRlc18wODMiLCJleHRyYV8wODQiLCJpdGVyXzA5MCIsInNleHBfMDc5JDAiLCJmaWVsZF9zZXhwc18wODciLCJmaWVsZF9uYW1lXzA4NSIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODYkMSIsImZpZWxkX3NleHBfMDg2IiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4NiQwIiwiZnZhbHVlXzA4OCIsInBlcnNpc3RlbnRfaGlzdG9yeV8wODIiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDk0IiwiYXJnXzA5NSIsImJuZHNfMDkzIiwicGVyc2lzdGVudF9vZl95b2pzb24iLCJwZXJzaXN0ZW50X2hpc3RvcnlfZmllbGQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfdmFsdWUiLCJ5b2pzb25fb2ZfcGVyc2lzdGVudCIsInZfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9vZl9zZXhwJDAiLCJzZXhwX29mX3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2Zfc2V4cCQxIiwic2V4cF9vZl9wZXJzaXN0ZW50JDEiLCJ0b19wZXJzaXN0ZW50X2hpc3RvcnkiLCJ0b19wZXJzaXN0ZW50IiwiZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkiLCJmcm9tX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnkiLCJnZXRfc2VsZWN0ZWRfZWRpdG9yIiwicHV0X3NlbGVjdGVkX2VkaXRvciIsInBwX21vdmFiaWxpdHkiLCJzaG93X21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZhYmlsaXR5IiwibW92YWJpbGl0eSIsImNodW5raW5lc3MiLCJkZWxpbV9pZHgiLCJjaGFyX21heCIsIm5laWdoYm9yX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5JDAiLCJsX2tpZHMiLCJzdXBlcm5oYnJfciQwIiwic3VwZXJuaGJyX2wiLCJyX25oYnIiLCJsX25oYnIiLCJ3JDAiLCJjb250ZW50X3N0cmluZyQwIiwiY29udGVudF9zdHJpbmciLCJwb3Bfb3V0IiwicG9wX21vdmUiLCJpbm5lcl9pbmNyIiwiaW5uZXJfZGVjciIsImlubmVyX3N0YXJ0IiwiZF9pbml0IiwiaW5uZXJfZW5kIiwiY19tYXgiLCJwcmltYXJ5IiwiY19tYXgkMCIsImRsbSIsImlzX2F0X3NpZGVfb2Zfcm93IiwiY29scCIsInJvd3AiLCJkb190b3dhcmRzIiwiYW5jaG9yIiwiZ29hbCIsImN1cnIkMCIsImN1cnJfcCIsImRfY3VyciIsImRfcHJldiIsImFuY2hvciQwIiwiYW5jaG9yX2QiLCJkb192ZXJ0aWNhbCIsImN1cl9wIiwiZG9fZXh0cmVtZSIsInRvX3N0YXJ0IiwidG9fZW5kIiwidG9fZWRnZSIsImRvX3VudGlsIiwibW92ZV9maXJzdCIsInBpZWNlX3AiLCJkb191bnRpbF93cmFwIiwianVtcF90b19pZCIsInZlcnRpY2FsIiwidGFyZ2V0c193aXRoaW5fcm93IiwidG9fYmFja3BhY2tfdGFyZ2V0IiwiZG9uZV9vcl90cnlfYWdhaW4iLCJ6MSIsInoyIiwiZGlzdDEiLCJkaXN0MiIsInpzIiwiY2h1bmsiLCJjaHVuayQwIiwiYmFyZiIsImRlbGF5ZWRfZXhwYW5kIiwibmV3X2xhYmVsIiwiZXhwYW5kX29yX2JhcmZfbGVmdF9uZWlnaGJvciIsImV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yIiwiZ2V0X2R1b19zaGFyZCIsIm5laWdoYm9yX2Nhbl9kdW9tZXJnZSIsIm1vbm9fbGJsIiwidGlsZSQwIiwibWFrZV9uZXdfdGlsZSIsImxibCQwIiwiZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfIiwicmVwbGFjZV90aWxlIiwicHBfYXBwZW5kYWJpbGl0eSIsInNob3dfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2Zfc2V4cCIsInNleHBfb2ZfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2ZfeW9qc29uIiwieW9qc29uX29mX2FwcGVuZGFiaWxpdHkiLCJzaWJsaW5nX2FwcGVuZGFiaWxpdHkiLCJpbnNlcnRfb3V0ZXIiLCJpbnNlcnRfZHVvIiwiaW5zZXJ0X21vbm9zIiwib3B0X3JlZ3JvbGQiLCJtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW0iLCJjbG9zaW5nX3N0cmluZ2xpdF9vcl9jb21tZW50IiwiZF9pZHgiLCJjYXJldCQwIiwiY2FyZXRfc3RyIiwiY29kZV9maWVsZCIsImNvZGVfdmFsdWUiLCJ2X2NvZGUiLCJzZWdfb2ZfemlwIiwib2ZfcGllY2UiLCJvZl9kZWxpbSIsInRvX3N0cmluZ19iYXNpYyIsImxpbmVzX3RvX2xpc3QiLCJ0b19yb3dzIiwiaW5kZW50X29mIiwibWtfaW5kZW50IiwiY2FyZXRfcm93IiwiY2FyZXRfcm93JDAiLCJ0b19zdHJpbmdfZWRpdG9yIiwidG9fc3RyaW5nX3NlbGVjdGlvbiIsInRvX2xvZyIsInRvX2xvZ19mbGF0IiwiY29kZSIsInppcHBlcl9vZl9zdHJpbmciLCJ6aXBwZXJfaW5pdCIsImluc2VydCIsImJhY2t1cF90ZXh0XzAwNiIsImJhY2t1cF90ZXh0XzAwNyIsImJhY2t1cF90ZXh0XzAyMiIsImJhY2t1cF90ZXh0X2ZpZWxkIiwiYmFja3VwX3RleHRfdmFsdWUiLCJ2X2JhY2t1cF90ZXh0IiwicGVyc2lzdCIsInVucGVyc2lzdCIsInBlcnNpc3RlZCIsImxhc3RfaW5uZXJfcG9zIiwiZGVsZXRlX3JpZ2h0IiwiZGVsZXRlX2xlZnQiLCJjb25zdHJ1Y3RfcmlnaHQiLCJjb25zdHJ1Y3RfbGVmdCIsImNfaWR4IiwiY19pZHgkMCIsInBhcmVudF9kdW9tZXJnZXMiLCJpc193cml0ZV9hY3Rpb24iLCJnb196IiwibWV0YSQwIiwibWV0YSQxIiwic2VsZWN0X3Rlcm1fY3VycmVudCQwIiwic2VsZWN0X3Rlcm1fY3VycmVudCIsImp1bXBfdGFyZ2V0IiwiYmluZGluZ19pZCIsInokNyIsInokOCIsInokOSIsInokMTAiLCJ6JDExIiwieiQ1IiwidGlsZV9pc190ZXJtIiwic3RhdGljcyQwIiwieiQ2IiwieiQxMiIsImNsaXBib2FyZCIsInokMTMiLCJvcmllbnQiLCJvcmllbnQkMCIsImVycm9yX3NvdXJjZV8wNzMiLCJwcF9ldmFsX3Jlc3VsdCIsInNob3dfZXZhbF9yZXN1bHQiLCJldmFsX3Jlc3VsdF9vZl9zZXhwIiwiZWxhYl8wMDQiLCJldmFsdWF0aW9uXzAwNiIsInByZXZpb3VzXzAwOCIsInByZXZpb3VzXzAwOSIsImV2YWx1YXRpb25fMDA3IiwiZWxhYl8wMDUiLCJzZXhwX29mX2V2YWxfcmVzdWx0IiwicHJldmlvdXNfMDI3IiwiZXZhbHVhdGlvbl8wMjUiLCJlbGFiXzAyMyIsImV2YWxfcmVzdWx0X29mX3lvanNvbiIsImVsYWJfZmllbGQiLCJwcmV2aW91c19maWVsZCIsInByZXZpb3VzX3ZhbHVlIiwiZWxhYl92YWx1ZSIsInlvanNvbl9vZl9ldmFsX3Jlc3VsdCIsInZfcHJldmlvdXMiLCJ2X2VsYWIiLCJpbml0X2V2YWwiLCJlbGFiIiwidXBkYXRlX2VsYWIiLCJldmFsdWF0aW9uIiwidXBkYXRlX3N0ZXBwZXIiLCJwYXJhbSIsInN0ZXBfZm9yd2FyZCIsIm1yIiwicnVuX3BlbmRpbmciLCJwcmV2aW91cyIsInVwZGF0ZV9ldmFsdWF0aW9uIiwiZXZhbCQwIiwidG9nZ2xlX3N0ZXBwZXIiLCJwciIsIm9mX3BlcnNpc3RlbnQiLCJwcF9zZWxlY3Rpb24iLCJzaG93X3NlbGVjdGlvbiIsInNlbGVjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdGlvbiIsInNlbGVjdGlvbl8wNjIiLCJhY3Rpb25fMDY0IiwiZHVwbGljYXRlc18wNjYiLCJleHRyYV8wNjciLCJpdGVyXzA3NCIsImZpZWxkX3NleHBzXzA3MCIsImZpZWxkX25hbWVfMDY4IiwidGFpbF8wNzUiLCJmaWVsZF9zZXhwXzA2OSQyIiwiZmllbGRfc2V4cF8wNjkiLCJ4XzA3NiIsImZpZWxkX3NleHBfMDY5JDAiLCJmdmFsdWVfMDcyIiwiZmllbGRfc2V4cF8wNjkkMSIsImZ2YWx1ZV8wNzEiLCJhY3Rpb25fMDY1Iiwic2VsZWN0aW9uXzA2MyIsImFjdGlvbl8wODAiLCJzZWxlY3Rpb25fMDc4IiwiYXJnXzA4MSIsImJuZHNfMDc3IiwiYXJnXzA3OSIsImJuZHNfMDc3JDAiLCJhY3Rpb25fZmllbGQiLCJhY3Rpb25fdmFsdWUiLCJ2X2FjdGlvbiIsImVkaXRvciQwIiwicHIkMCIsImdldF9lbGFib3JhdGlvbiIsInBlcmZvcm0iLCJhY3Rpb24iLCJ4XzAwNCIsInVwZGF0ZV9lbGFicyIsInRpbWVvdXRfYWxsIiwiYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0Iiwic3RlcHBlcl9yZXN1bHRfb3B0IiwidG9fZXZhbHVhdGUiLCJlbGFicyIsInRvX3N0ZXAiLCJwdXRfcmVzdWx0IiwiY2xlYXIiLCJlZGl0b3Jfb2ZfY29kZSIsImVkaXRvcnNfZm9yIiwiYWNjX3pzIiwic3oiLCJlZGl0b3JzX29mX3N0cmluZ3MiLCJhZXMiLCJvZSIsImFwcGVuZF9leHAiLCJlYm9keSIsImVkZWYiLCJlYm9keSQwIiwiZWJvZHkkMSIsInRkZWYiLCJlYm9keSQyIiwiZTEyIiwiZTExIiwiZTEyJDAiLCJlYm9keSQzIiwiZWJvZHkkNCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsImVtcHR5Iiwic2luZ2xldG9uIiwicG9zIiwieCIsInVuaW9uIiwiZiIsInQxIiwidDIiLCJ4czIiLCJ4MiIsInAyIiwieHMxIiwieDEiLCJwMSIsIm1hcCIsInJlc3QiLCJtYXBpIiwibWFwayIsImZvbGRfbGVmdCIsInokMCIsImVycm9yX3NvdXJjZV8wMTUiLCJ6ZXJvIiwidF9vZl9zZXhwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfMDA0IiwiY29sXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfMDA3Iiwicm93XzAwNSIsInNleHBfb2ZfdCIsImNvbF8wMjIiLCJyb3dfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJjb21wYXJlIiwicG9zMSIsInBvczIiLCJlcnJvcl9zb3VyY2VfMDA0Iiwib2ZfYW5ub3RfMDAxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJzZXhwX2FyZ3NfMDEzIiwiYXJnMV8wMTUiLCJhcmcwXzAxNCIsInJlczBfMDE2IiwicmVzMV8wMTciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsIm9mX2Fubm90XzAzMSIsImFyZzBfMDMyIiwicmVzMF8wMzMiLCJhcmcxXzAzNSIsImFyZzBfMDM0IiwicmVzMF8wMzYiLCJyZXMxXzAzNyIsImFyZzBfMDM4IiwicmVzMF8wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsImFsaWduIiwibCIsImFubm90IiwicmVtb3ZlX2Fubm90cyIsImxheW91dCIsImxheW91dCQwIiwic3RyaW5nIiwibDIiLCJsMSIsImxheW91dCQxIiwibWtfb2ZfbGF5b3V0IiwidGV4dCIsImNvbHVtbiIsImdvIiwiaW5kZW50IiwiaW5kZW50JDAiLCJpbXAxIiwiaW1wMiIsImluZGVudCQxIiwic3RyaW5nX29mX2xheW91dCIsImltcCIsInMxIiwiczIiLCJyZWNvcmQiLCJzdHJpbmdzX29mX2xheW91dCIsInJlc3QyIiwiZmlyc3Rfc3RyaW5nXzIiLCJmaXJzdF9pbmRlbnRfMiIsInJlc3QxIiwibGFzdF9zdHJpbmdfMSIsImxhc3RfaW5kZW50XzEiLCJzcGxpdF9maXJzdCIsInhzIiwidHJhaWxpbmciLCJmaXJzdCIsInNwbGl0X2xhc3Rfb3B0IiwieXMiLCJ5Iiwic3BsaXRfbGFzdCIsInIiLCJib3giLCJlcnJvcl9zb3VyY2VfMDM5IiwiZXJyb3Jfc291cmNlXzA0NiIsImJveF9vZl9zZXhwIiwiaGVpZ2h0XzAwNCIsIndpZHRoXzAwNiIsIndpZHRoXzAwNyIsImhlaWdodF8wMDUiLCJzZXhwX29mX2JveCIsIndpZHRoXzAyMiIsImhlaWdodF8wMjAiLCJ0X29mX3NleHAkMCIsIm9mX2Fubm90XzAyNCIsInNleHBfMDI2IiwiZmllbGRfc2V4cHNfMDI3IiwibGF5b3V0XzAyOCIsIm1ldHJpY3NfMDMwIiwiZHVwbGljYXRlc18wMzIiLCJleHRyYV8wMzMiLCJzZXhwXzAyNiQwIiwiZmllbGRfc2V4cHNfMDM2IiwiZmllbGRfbmFtZV8wMzQiLCJ0YWlsXzA0MSIsImZpZWxkX3NleHBfMDM1JDIiLCJmaWVsZF9zZXhwXzAzNSIsInhfMDQyIiwiZmllbGRfc2V4cF8wMzUkMCIsImZ2YWx1ZV8wMzciLCJmaWVsZF9zZXhwXzAzNSQxIiwiZnZhbHVlXzAzOCIsIm1ldHJpY3NfMDMxIiwibGF5b3V0XzAyOSIsIm9mX2Fubm90XzA0MyIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJhcmcwXzA1NiIsInJlczBfMDU3Iiwic2V4cF9hcmdzXzA2NyIsImFyZzFfMDY5IiwiYXJnMF8wNjgiLCJyZXMwXzA3MCIsInJlczFfMDcxIiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzA1MCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJvZl9hbm5vdF8wNzMiLCJtZXRyaWNzXzA3NyIsImxheW91dF8wNzUiLCJhcmdfMDc4IiwiYm5kc18wNzQiLCJhcmdfMDc2Iiwic2V4cF9vZl90JDAiLCJibmRzXzA3NCQwIiwib2ZfYW5ub3RfMDc5IiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsImFyZzFfMDg5IiwiYXJnMF8wODgiLCJyZXMwXzA5MCIsInJlczFfMDkxIiwiaGVpZ2h0IiwibSIsIndpZHRoIiwib3B0Iiwic3RoIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJjb2wiLCJyb3ciLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsInN0aCQwIiwibWlkIiwidGFibGUiLCJtayIsIm1pZF9ib3giLCJsJDAiLCJidyIsImJoIiwiYm91bmRpbmdfYm94IiwibCQxIiwibSQyIiwib3ZlcmZsb3dfY29zdCIsImhlaWdodF9jb3N0IiwibWtfaGVpZ2h0IiwibWtfb3ZlcmZsb3ciLCJpbmYiLCJhZGQiLCJjMSIsImMyIiwiZXEiLCJsdCIsImxlcSIsImVycm9yX3NvdXJjZV8wMTYiLCJlcnJvcl9zb3VyY2VfMDIzIiwiZXJyb3Jfc291cmNlXzA5NiIsImVycm9yX3NvdXJjZV8xMDMiLCJoYXNoIiwiZXF1YWwiLCJ3MiIsIncxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJtZW1fMDA1IiwiZG9jXzAwNyIsImR1cGxpY2F0ZXNfMDA5IiwiZXh0cmFfMDEwIiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxMyIsImZpZWxkX25hbWVfMDExIiwidGFpbF8wMTgiLCJmaWVsZF9zZXhwXzAxMiQyIiwiZmllbGRfc2V4cF8wMTIiLCJ4XzAxOSIsImZpZWxkX3NleHBfMDEyJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTIkMSIsImRvY18wMDgiLCJtZW1fMDA2Iiwib2ZfYW5ub3RfMDIwIiwic2V4cF8wMjUiLCJ0YWdfMDI2Iiwic2V4cF9hcmdzXzAzOSIsInJlczBfMDQxIiwic2V4cF9hcmdzXzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4Iiwic2V4cF9hcmdzXzAzMiIsImFyZzFfMDM0IiwiYXJnMF8wMzMiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJ0X29mX3NleHAkMSIsInRfb2Zfc2V4cCQyIiwib2ZfYW5ub3RfMDgxIiwic2V4cF8wODMiLCJmaWVsZF9zZXhwc18wODQiLCJtZW1fMDg1IiwiZG9jXzA4NyIsImR1cGxpY2F0ZXNfMDg5IiwiZXh0cmFfMDkwIiwic2V4cF8wODMkMCIsImZpZWxkX3NleHBzXzA5MyIsImZpZWxkX25hbWVfMDkxIiwidGFpbF8wOTgiLCJmaWVsZF9zZXhwXzA5MiQyIiwiZmllbGRfc2V4cF8wOTIiLCJ4XzA5OSIsImZpZWxkX3NleHBfMDkyJDAiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTIkMSIsImZ2YWx1ZV8wOTQiLCJkb2NfMDg4IiwibWVtXzA4NiIsIm9mX2Fubm90XzEwMCIsInNleHBfMTA1IiwidGFnXzEwNiIsInNleHBfYXJnc18xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwic2V4cF9hcmdzXzEyNCIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4Iiwic2V4cF9hcmdzXzExMiIsImFyZzFfMTE0IiwiYXJnMF8xMTMiLCJyZXMwXzExNSIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzEzMSIsImFyZzFfMTMzIiwiYXJnMF8xMzIiLCJyZXMwXzEzNCIsInJlczFfMTM1Iiwic2V4cF9hcmdzXzEwNyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJvZl9hbm5vdF8xMzciLCJkb2NfMTQxIiwibWVtXzEzOSIsImFyZ18xNDIiLCJibmRzXzEzOCIsImFyZ18xNDAiLCJibmRzXzEzOCQwIiwib2ZfYW5ub3RfMTQzIiwiYXJnMF8xNDQiLCJyZXMwXzE0NSIsImFyZzFfMTQ3IiwiYXJnMF8xNDYiLCJyZXMwXzE0OCIsInJlczFfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzFfMTUzIiwiYXJnMF8xNTIiLCJyZXMwXzE1NCIsInJlczFfMTU1IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU4IiwicmVzMV8xNTkiLCJ0X29mX3QiLCJ0IiwiZG9jIiwiZmFpbCIsInNwYWNlIiwiaW5kZW50X2FuZF9hbGlnbiIsImhjYXQiLCJoY2F0cyIsImRvY3MiLCJoc2VwIiwiaHNlcHMiLCJ2c2VwIiwidnNlcHMiLCJjaG9pY2UiLCJjaG9pY2VzIiwibWFwX3QiLCJkIiwibWFwX2Fubm90IiwiZDIiLCJkMSIsImQkMCIsImQkMSIsImQyJDAiLCJkMSQwIiwiYWxsIiwibHMxIiwibHMyIiwibV91bmlvbiIsImNvc3RfdW5pb24iLCJjb3N0MiIsImNvc3QxIiwibGF5b3V0X29mX2RvYyIsImgiLCJwb3MkMCIsImtleSIsInZhbHVlIiwidmFsdWUkMCIsImNvc3QiLCJvdmVyZmxvdyIsInoiLCJsYXlvdXQxIiwibGF5b3V0MiIsImxheW91dHMiLCJwIiwiYyIsImwxJDAiLCJsYXlvdXRfb2ZfZG9jJDAiLCJ4X2Nvc3QiLCJ4X3BvcyIsInNleHBfYXJnc18wMTgiLCJhcmcwXzAxOSIsInJlczBfMDIwIiwicmVzMF8wMTUiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJvZl9hbm5vdF8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhbm5vdCQwIiwiYm94ZXMiLCJib3hlczEiLCJsZWFkaW5nJDAiLCJib3hlczIiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwicHBfc3ludGF4X3Jlc3VsdCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzaG93X3N5bnRheF9yZXN1bHQiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJlc3VsdHNfMDA0IiwicGVyY2VudGFnZV8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsInNleHBfb2Zfc3ludGF4X3Jlc3VsdCIsInBlcmNlbnRhZ2VfMDIyIiwicmVzdWx0c18wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInN5bnRheF9yZXN1bHRfb2ZfeW9qc29uIiwieW9qc29uIiwiZmllbGRfeW9qc29ucyIsInJlc3VsdHNfZmllbGQiLCJwZXJjZW50YWdlX2ZpZWxkIiwiZHVwbGljYXRlcyIsImV4dHJhIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInBlcmNlbnRhZ2VfdmFsdWUiLCJyZXN1bHRzX3ZhbHVlIiwieW9qc29uX29mX3N5bnRheF9yZXN1bHQiLCJ2X3BlcmNlbnRhZ2UiLCJ2X3Jlc3VsdHMiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJmaW5kX3Zhcl91cGF0IiwibmFtZSIsInVwYXQiLCJ1cGF0JDAiLCJ1cGF0JDEiLCJ1cDEiLCJ1cGF0JDIiLCJ1cGF0JDMiLCJ1cDEkMCIsInVwYXQkNCIsImwiLCJhY2MiLCJ1cCIsImZpbmRfaW5fbGV0IiwiZGVmIiwiZGVmJDAiLCJ1bCIsInBsIiwidWUiLCJkZWYkMiIsImRlZiQxIiwiZmluZF9mbiIsInVleHAiLCJ1ZXhwJDAiLCJsJDAiLCJib2R5JDAiLCJsJDEiLCJ1ZXhwJDEiLCJhcmdzIiwiZm4iLCJ1IiwidWV4cCQzIiwidTIiLCJ1MSQwIiwibCQyIiwidWwkMCIsInUxJDEiLCJ1MSIsInVleHAkMiIsImJvZHkiLCJsJDMiLCJ2YXJfbWVudGlvbl91cGF0IiwidmFyX21lbnRpb24iLCJwIiwiYm9keSQxIiwiYXJncyQwIiwidXMiLCJ1ZXhwJDUiLCJ1ZXhwJDYiLCJnIiwicGUiLCJlIiwidWV4cCQ3IiwidWV4cCQ0IiwidmFyX2FwcGxpZWQiLCJ4JDEiLCJ1MSQyIiwiaXNfcmVjdXJzaXZlIiwiZm5fYm9kaWVzIiwidGFpbF9jaGVjayIsInUyJDAiLCJ1MiQxIiwiaXNfdGFpbF9yZWN1cnNpdmUiLCJjaGVjayIsInByZWRpY2F0ZXMiLCJwcmVkIiwicmVzdWx0cyIsImxlbmd0aCIsInJlcyIsInBhc3NpbmciLCJwcF9wcmVkaWNhdGUiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsInNob3dfcHJlZGljYXRlIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDMwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInNleHBfYXJnc18wNDUiLCJhcmcwXzA0NiIsInJlczBfMDQ3Iiwic2V4cF9hcmdzXzAzNSIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwX2FyZ3NfMDQwIiwiYXJnMF8wNDEiLCJyZXMwXzA0MiIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wNDgiLCJyZXMwXzA0OSIsImFyZzBfMDUwIiwicmVzMF8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDE2IiwiZXJyb3Jfc291cmNlXzA0MSIsImVycm9yX3NvdXJjZV8wNTgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wODQiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8xMTMiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8yMDUiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8yMTIiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8yNDEiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8yNTQiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8yNzgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwicHBfd3JvbmdfaW1wbCIsInBvbHlfY29kZSIsInNob3dfd3JvbmdfaW1wbCIsIndyb25nX2ltcGxfb2Zfc2V4cCIsIm9mX2NvZGVfMDAxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJpbXBsXzAwNSIsImhpbnRfMDA3IiwiZHVwbGljYXRlc18wMDkiLCJleHRyYV8wMTAiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDEzIiwiZmllbGRfbmFtZV8wMTEiLCJ0YWlsXzAxOCIsImZpZWxkX3NleHBfMDEyJDIiLCJmaWVsZF9zZXhwXzAxMiIsInhfMDE5IiwiZmllbGRfc2V4cF8wMTIkMCIsImZ2YWx1ZV8wMTUiLCJmaWVsZF9zZXhwXzAxMiQxIiwiaGludF8wMDgiLCJpbXBsXzAwNiIsInNleHBfb2Zfd3JvbmdfaW1wbCIsIm9mX2NvZGVfMDIwIiwiaGludF8wMjQiLCJpbXBsXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImJuZHNfMDIxJDAiLCJ3cm9uZ19pbXBsX29mX3lvanNvbiIsIm9mX2NvZGUiLCJpbXBsX2ZpZWxkIiwiaGludF9maWVsZCIsImhpbnRfdmFsdWUiLCJpbXBsX3ZhbHVlIiwieW9qc29uX29mX3dyb25nX2ltcGwiLCJ2X2hpbnQiLCJ2X2ltcGwiLCJwcF9oaWRkZW5fdGVzdHMiLCJzaG93X2hpZGRlbl90ZXN0cyIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMjYiLCJmaWVsZF9zZXhwc18wMjkiLCJ0ZXN0c18wMzAiLCJoaW50c18wMzIiLCJkdXBsaWNhdGVzXzAzNCIsImV4dHJhXzAzNSIsInNleHBfMDI4JDAiLCJmaWVsZF9zZXhwc18wMzgiLCJmaWVsZF9uYW1lXzAzNiIsInRhaWxfMDQzIiwiZmllbGRfc2V4cF8wMzckMiIsImZpZWxkX3NleHBfMDM3IiwieF8wNDQiLCJmaWVsZF9zZXhwXzAzNyQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM3JDEiLCJmdmFsdWVfMDM5IiwiaGludHNfMDMzIiwidGVzdHNfMDMxIiwic2V4cF9vZl9oaWRkZW5fdGVzdHMiLCJvZl9jb2RlXzA0NSIsImhpbnRzXzA0OSIsInRlc3RzXzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwiaGlkZGVuX3Rlc3RzX29mX3lvanNvbiIsInRlc3RzX2ZpZWxkIiwiaGludHNfZmllbGQiLCJoaW50c192YWx1ZSIsInRlc3RzX3ZhbHVlIiwieW9qc29uX29mX2hpZGRlbl90ZXN0cyIsInZfaGludHMiLCJ2X3Rlc3RzIiwicHBfaGludCIsInNob3dfaGludCIsImhpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaGludCIsImhpbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpbnQiLCJwcF9zeW50YXhfdGVzdCIsInNob3dfc3ludGF4X3Rlc3QiLCJhMSIsInN5bnRheF90ZXN0X29mX3NleHAiLCJzZXhwXzA1NyIsImFyZzFfMDU0IiwiYXJnMF8wNTMiLCJyZXMxXzA1NiIsInNleHBfb2Zfc3ludGF4X3Rlc3QiLCJhcmcxXzA2MCIsImFyZzBfMDU5IiwicmVzMF8wNjEiLCJyZXMxXzA2MiIsInN5bnRheF90ZXN0X29mX3lvanNvbiIsInYxIiwidjEkMCIsInlvanNvbl9vZl9zeW50YXhfdGVzdCIsInBwX3N5bnRheF90ZXN0cyIsInNob3dfc3ludGF4X3Rlc3RzIiwic3ludGF4X3Rlc3RzX29mX3NleHAiLCJ4XzA2NCIsInNleHBfb2Zfc3ludGF4X3Rlc3RzIiwieF8wNjUiLCJzeW50YXhfdGVzdHNfb2ZfeW9qc29uIiwidCIsInlvanNvbl9vZl9zeW50YXhfdGVzdHMiLCJ2IiwicHBfeW91cl90ZXN0cyIsInNob3dfeW91cl90ZXN0cyIsInlvdXJfdGVzdHNfb2Zfc2V4cCIsIm9mX2NvZGVfMDY2Iiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJ0ZXN0c18wNzAiLCJyZXF1aXJlZF8wNzIiLCJwcm92aWRlZF8wNzQiLCJkdXBsaWNhdGVzXzA3NiIsImV4dHJhXzA3NyIsInNleHBfMDY4JDAiLCJmaWVsZF9zZXhwc18wODAiLCJmaWVsZF9uYW1lXzA3OCIsInRhaWxfMDg2IiwiZmllbGRfc2V4cF8wNzkkMyIsImZpZWxkX3NleHBfMDc5IiwieF8wODciLCJmaWVsZF9zZXhwXzA3OSQwIiwiZnZhbHVlXzA4MyIsImZpZWxkX3NleHBfMDc5JDEiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMiIsImZ2YWx1ZV8wODEiLCJwcm92aWRlZF8wNzUiLCJyZXF1aXJlZF8wNzMiLCJ0ZXN0c18wNzEiLCJzZXhwX29mX3lvdXJfdGVzdHMiLCJvZl9jb2RlXzA4OCIsInByb3ZpZGVkXzA5NCIsInJlcXVpcmVkXzA5MiIsInRlc3RzXzA5MCIsImFyZ18wOTUiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJ5b3VyX3Rlc3RzX29mX3lvanNvbiIsInJlcXVpcmVkX2ZpZWxkIiwicHJvdmlkZWRfZmllbGQiLCJmdmFsdWUkMSIsInByb3ZpZGVkX3ZhbHVlIiwicmVxdWlyZWRfdmFsdWUiLCJ5b2pzb25fb2ZfeW91cl90ZXN0cyIsInZfcHJvdmlkZWQiLCJ2X3JlcXVpcmVkIiwiYXJnJDEiLCJibmRzJDEiLCJwcF9wb2ludF9kaXN0cmlidXRpb24iLCJzaG93X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwic2V4cF8wOTciLCJmaWVsZF9zZXhwc18wOTgiLCJ0ZXN0X3ZhbGlkYXRpb25fMDk5IiwibXV0YXRpb25fdGVzdGluZ18xMDEiLCJpbXBsX2dyYWRpbmdfMTAzIiwiZHVwbGljYXRlc18xMDUiLCJleHRyYV8xMDYiLCJzZXhwXzA5NyQwIiwiZmllbGRfc2V4cHNfMTA5IiwiZmllbGRfbmFtZV8xMDciLCJ0YWlsXzExNSIsImZpZWxkX3NleHBfMTA4JDMiLCJmaWVsZF9zZXhwXzEwOCIsInhfMTE2IiwiZmllbGRfc2V4cF8xMDgkMCIsImZ2YWx1ZV8xMTIiLCJmaWVsZF9zZXhwXzEwOCQxIiwiZnZhbHVlXzExMSIsImZpZWxkX3NleHBfMTA4JDIiLCJmdmFsdWVfMTEwIiwiaW1wbF9ncmFkaW5nXzEwNCIsIm11dGF0aW9uX3Rlc3RpbmdfMTAyIiwidGVzdF92YWxpZGF0aW9uXzEwMCIsInNleHBfb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwiaW1wbF9ncmFkaW5nXzEyMiIsIm11dGF0aW9uX3Rlc3RpbmdfMTIwIiwidGVzdF92YWxpZGF0aW9uXzExOCIsImFyZ18xMjMiLCJibmRzXzExNyIsImFyZ18xMjEiLCJibmRzXzExNyQwIiwiYXJnXzExOSIsImJuZHNfMTE3JDEiLCJwb2ludF9kaXN0cmlidXRpb25fb2ZfeW9qc29uIiwidGVzdF92YWxpZGF0aW9uX2ZpZWxkIiwibXV0YXRpb25fdGVzdGluZ19maWVsZCIsImltcGxfZ3JhZGluZ19maWVsZCIsImltcGxfZ3JhZGluZ192YWx1ZSIsIm11dGF0aW9uX3Rlc3RpbmdfdmFsdWUiLCJ0ZXN0X3ZhbGlkYXRpb25fdmFsdWUiLCJ5b2pzb25fb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwidl9pbXBsX2dyYWRpbmciLCJ2X211dGF0aW9uX3Rlc3RpbmciLCJ2X3Rlc3RfdmFsaWRhdGlvbiIsInZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiIsImltcGxfZ3JhZGluZyIsIm11dGF0aW9uX3Rlc3RpbmciLCJ0ZXN0X3ZhbGlkYXRpb24iLCJwcF9wIiwic2hvd19wIiwicF9vZl9zZXhwIiwib2ZfY29kZV8xMjQiLCJzZXhwXzEyNiIsImZpZWxkX3NleHBzXzEyNyIsInRpdGxlXzEyOCIsInZlcnNpb25fMTMwIiwibW9kdWxlX25hbWVfMTMyIiwicHJvbXB0XzEzNCIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xMzYiLCJwcmVsdWRlXzEzOCIsImNvcnJlY3RfaW1wbF8xNDAiLCJ5b3VyX3Rlc3RzXzE0MiIsInlvdXJfaW1wbF8xNDQiLCJoaWRkZW5fYnVnc18xNDYiLCJoaWRkZW5fdGVzdHNfMTQ4Iiwic3ludGF4X3Rlc3RzXzE1MCIsImR1cGxpY2F0ZXNfMTUyIiwiZXh0cmFfMTUzIiwiaXRlcl8xNzAiLCJzZXhwXzEyNiQwIiwiZmllbGRfc2V4cHNfMTU2IiwiZmllbGRfbmFtZV8xNTQiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTU1JDEyIiwiZmllbGRfc2V4cF8xNTUiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTU1JDAiLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTUkMSIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1NSQyIiwiZnZhbHVlXzE2NyIsImZpZWxkX3NleHBfMTU1JDMiLCJmdmFsdWVfMTY4IiwiZmllbGRfc2V4cF8xNTUkNCIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NSQ1IiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU1JDYiLCJmdmFsdWVfMTYzIiwiZmllbGRfc2V4cF8xNTUkNyIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NSQ4IiwiZnZhbHVlXzE2NiIsImZpZWxkX3NleHBfMTU1JDkiLCJmdmFsdWVfMTU4IiwiZmllbGRfc2V4cF8xNTUkMTAiLCJmdmFsdWVfMTU5IiwiZmllbGRfc2V4cF8xNTUkMTEiLCJmdmFsdWVfMTYyIiwic3ludGF4X3Rlc3RzXzE1MSIsImhpZGRlbl90ZXN0c18xNDkiLCJoaWRkZW5fYnVnc18xNDciLCJ5b3VyX2ltcGxfMTQ1IiwieW91cl90ZXN0c18xNDMiLCJjb3JyZWN0X2ltcGxfMTQxIiwicHJlbHVkZV8xMzkiLCJwb2ludF9kaXN0cmlidXRpb25fMTM3IiwicHJvbXB0XzEzNSIsIm1vZHVsZV9uYW1lXzEzMyIsInZlcnNpb25fMTMxIiwidGl0bGVfMTI5Iiwic2V4cF9vZl9wIiwib2ZfY29kZV8xNzMiLCJzeW50YXhfdGVzdHNfMTk3IiwiaGlkZGVuX3Rlc3RzXzE5NSIsImhpZGRlbl9idWdzXzE5MyIsInlvdXJfaW1wbF8xOTEiLCJ5b3VyX3Rlc3RzXzE4OSIsImNvcnJlY3RfaW1wbF8xODciLCJwcmVsdWRlXzE4NSIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xODMiLCJwcm9tcHRfMTgxIiwibW9kdWxlX25hbWVfMTc5IiwidmVyc2lvbl8xNzciLCJ0aXRsZV8xNzUiLCJhcmdfMTk4IiwiYm5kc18xNzQiLCJhcmdfMTk2IiwiYm5kc18xNzQkMCIsImFyZ18xOTQiLCJibmRzXzE3NCQxIiwiYXJnXzE5MiIsImJuZHNfMTc0JDIiLCJhcmdfMTkwIiwiYm5kc18xNzQkMyIsImFyZ18xODgiLCJibmRzXzE3NCQ0IiwiYXJnXzE4NiIsImJuZHNfMTc0JDUiLCJhcmdfMTg0IiwiYm5kc18xNzQkNiIsImFyZ18xODIiLCJibmRzXzE3NCQ3IiwiYXJnXzE4MCIsImJuZHNfMTc0JDgiLCJhcmdfMTc4IiwiYm5kc18xNzQkOSIsImFyZ18xNzYiLCJibmRzXzE3NCQxMCIsInBfb2ZfeW9qc29uIiwidGl0bGVfZmllbGQiLCJ2ZXJzaW9uX2ZpZWxkIiwibW9kdWxlX25hbWVfZmllbGQiLCJwcm9tcHRfZmllbGQiLCJwb2ludF9kaXN0cmlidXRpb25fZmllbGQiLCJwcmVsdWRlX2ZpZWxkIiwiY29ycmVjdF9pbXBsX2ZpZWxkIiwieW91cl90ZXN0c19maWVsZCIsInlvdXJfaW1wbF9maWVsZCIsImhpZGRlbl9idWdzX2ZpZWxkIiwiaGlkZGVuX3Rlc3RzX2ZpZWxkIiwic3ludGF4X3Rlc3RzX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJmdmFsdWUkOSIsImZ2YWx1ZSQxMCIsInN5bnRheF90ZXN0c192YWx1ZSIsImhpZGRlbl90ZXN0c192YWx1ZSIsImhpZGRlbl9idWdzX3ZhbHVlIiwieW91cl9pbXBsX3ZhbHVlIiwieW91cl90ZXN0c192YWx1ZSIsImNvcnJlY3RfaW1wbF92YWx1ZSIsInByZWx1ZGVfdmFsdWUiLCJwb2ludF9kaXN0cmlidXRpb25fdmFsdWUiLCJwcm9tcHRfdmFsdWUiLCJtb2R1bGVfbmFtZV92YWx1ZSIsInZlcnNpb25fdmFsdWUiLCJ0aXRsZV92YWx1ZSIsInlvanNvbl9vZl9wIiwidl9zeW50YXhfdGVzdHMiLCJ2X2hpZGRlbl90ZXN0cyIsInZfaGlkZGVuX2J1Z3MiLCJ2X3lvdXJfaW1wbCIsInZfeW91cl90ZXN0cyIsInZfY29ycmVjdF9pbXBsIiwidl9wcmVsdWRlIiwidl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X3Byb21wdCIsInZfbW9kdWxlX25hbWUiLCJ2X3ZlcnNpb24iLCJ2X3RpdGxlIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiYXJnJDgiLCJibmRzJDgiLCJhcmckOSIsImJuZHMkOSIsImFyZyQxMCIsImJuZHMkMTAiLCJwcF9rZXkiLCJzaG93X2tleSIsImtleV9vZl9zZXhwIiwic2V4cF8yMDQiLCJhcmcxXzIwMSIsImFyZzBfMjAwIiwicmVzMF8yMDIiLCJyZXMxXzIwMyIsInNleHBfb2Zfa2V5IiwiYXJnMV8yMDciLCJhcmcwXzIwNiIsInJlczBfMjA4IiwicmVzMV8yMDkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBwX3BvcyIsInNob3dfcG9zIiwicG9zX29mX3NleHAiLCJzZXhwXzIxNCIsInRhZ18yMTUiLCJzZXhwX2FyZ3NfMjE2IiwiYXJnMF8yMTciLCJyZXMwXzIxOCIsInNleHBfb2ZfcG9zIiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsInBvc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9zIiwicHBfc3BlYyIsInNob3dfc3BlYyIsInNwZWNfb2Zfc2V4cCIsInhfMjIyIiwic2V4cF9vZl9zcGVjIiwieF8yMjMiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwicHBfdHJhbnNpdGlvbmFyeV9zcGVjIiwic2hvd190cmFuc2l0aW9uYXJ5X3NwZWMiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2Zfc2V4cCIsInhfMjI1Iiwic2V4cF9vZl90cmFuc2l0aW9uYXJ5X3NwZWMiLCJ4XzIyNiIsInRyYW5zaXRpb25hcnlfc3BlY19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwibWFwIiwiZiIsIndyb25nX2ltcGwiLCJwcF9lZHMiLCJzaG93X2VkcyIsImVkc19vZl9zZXhwIiwieF8yMjgiLCJzZXhwX29mX2VkcyIsInhfMjI5IiwiZWRzX29mX3lvanNvbiIsInlvanNvbl9vZl9lZHMiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF8yMzEiLCJmaWVsZF9zZXhwc18yMzIiLCJlZHNfMjMzIiwiZHVwbGljYXRlc18yMzUiLCJleHRyYV8yMzYiLCJzZXhwXzIzMSQwIiwiZmllbGRfc2V4cHNfMjM5IiwiZmllbGRfbmFtZV8yMzciLCJ0YWlsXzI0MyIsInhfMjQ0IiwiZmllbGRfc2V4cF8yMzgiLCJmdmFsdWVfMjQwIiwiZWRzXzIzNCIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMjQ2IiwiYXJnXzI0NyIsImJuZHNfMjQ1Iiwic3RhdGVfb2ZfeW9qc29uIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJrZXlfb2Zfc3RhdGUiLCJlZHMiLCJwcF9wZXJzaXN0ZW50X3N0YXRlIiwic2hvd19wZXJzaXN0ZW50X3N0YXRlIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwieF8yNTUiLCJzZXhwXzI1MyIsImFyZzFfMjUwIiwiYXJnMF8yNDkiLCJyZXMwXzI1MSIsInJlczFfMjUyIiwic2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlIiwieF8yNjAiLCJhcmcxXzI1NyIsImFyZzBfMjU2IiwicmVzMF8yNTgiLCJyZXMxXzI1OSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJtYWluX2VkaXRvcl9vZl9zdGF0ZSIsInNlbGVjdGlvbiIsImkiLCJwdXRfbWFpbl9lZGl0b3IiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJzdGF0ZSIsImlkeF9vZl9wb3MiLCJwb3MiLCJwb3Nfb2ZfaWR4IiwiaWR4IiwiemlwcGVyX29mX2NvZGUiLCJjb2RlIiwiemlwcGVyIiwidHJhbnNpdGlvbiIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInRlc3RzIiwieW91cl90ZXN0cyQwIiwieW91cl9pbXBsJDAiLCJoaW50IiwiaW1wbCIsImltcGwkMCIsImhpZGRlbl9idWdzJDAiLCJoaW50cyIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiIsImVkc19vZl9zcGVjIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsImluc3RydWN0b3JfbW9kZSIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwid3JhcCIsInRlcm1fb2YiLCJzdGl0Y2gzIiwiZWQxIiwiZWQyIiwiZWQzIiwic3RpdGNoX3Rlcm0iLCJpbnN0cnVjdG9yIiwieW91cl9pbXBsX3Rlcm0iLCJwcmVsdWRlX3Rlcm0iLCJ1c2VyX2ltcGxfdGVybSIsInRlc3RfdmFsaWRhdGlvbl90ZXJtIiwidXNlcl90ZXN0c190ZXJtIiwiaGlkZGVuX3Rlc3RzX3Rlcm0iLCJzdGl0Y2hfdGVybSQwIiwic3RpdGNoX3N0YXRpYyIsInNldHRpbmdzIiwibWsiLCJ0ZXJtX3JhbmdlcyIsImluZm9fbWFwIiwic3RpdGNoX3N0YXRpYyQwIiwiaGlkZGVuX2J1Z3Nfa2V5Iiwia2V5X2Zvcl9zdGF0aWNzIiwic3BsaWNlZF9lbGFicyIsInVzZXJfdGVzdHMiLCJ1c2VyX2ltcGwiLCJlbGFiIiwicyIsImhpZGRlbl9idWciLCJta19zdGF0aWNzIiwic3RpdGNoZWQiLCJlbXB0eSIsInN0YXRpY3Nfb25seSIsInN0aXRjaF9keW5hbWljIiwicmVzdWx0X29mIiwicmVzdWx0cyQwIiwidGVzdF92YWxpZGF0aW9uJDAiLCJ1c2VyX2ltcGwkMCIsInVzZXJfdGVzdHMkMCIsImluc3RydWN0b3IkMCIsInN0YXRpY3NfaXRlbSIsInN0aXRjaF9keW5hbWljJDAiLCJlZGl0b3JfcHAiLCJzZXJpYWxpemF0aW9uIiwiZXhwb3J0X21vZHVsZSIsInJlY29yZCIsImRhdGEiLCJ0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCIsImV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSIsImV4cG9ydF9ncmFkaW5nX21vZHVsZSIsImhlYWRlciIsImJsYW5rX3NwZWMiLCJyZXF1aXJlZF90ZXN0cyIsInByb3ZpZGVkX3Rlc3RzIiwibnVtX3dyb25nX2ltcGxzIiwicHBfZXhlcmNpc2VfZXhwb3J0Iiwic2hvd19leGVyY2lzZV9leHBvcnQiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInNleHBfMjYyIiwiZmllbGRfc2V4cHNfMjYzIiwiY3VyX2V4ZXJjaXNlXzI2NCIsImV4ZXJjaXNlX2RhdGFfMjY2IiwiZHVwbGljYXRlc18yNjgiLCJleHRyYV8yNjkiLCJzZXhwXzI2MiQwIiwiZmllbGRfc2V4cHNfMjcyIiwiZmllbGRfbmFtZV8yNzAiLCJ0YWlsXzI4MiIsImZpZWxkX3NleHBfMjcxJDIiLCJmaWVsZF9zZXhwXzI3MSIsInhfMjgzIiwiZmllbGRfc2V4cF8yNzEkMCIsInNleHBfMjc3IiwiYXJnMV8yNzQiLCJhcmcwXzI3MyIsInJlczBfMjc1IiwicmVzMV8yNzYiLCJmdmFsdWVfMjc5IiwiZmllbGRfc2V4cF8yNzEkMSIsImZ2YWx1ZV8yODAiLCJleGVyY2lzZV9kYXRhXzI2NyIsImN1cl9leGVyY2lzZV8yNjUiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMjg3IiwiY3VyX2V4ZXJjaXNlXzI4NSIsImJuZHNfMjg0IiwiYXJnMV8yOTAiLCJhcmcwXzI4OSIsInJlczBfMjkxIiwicmVzMV8yOTIiLCJhcmdfMjg4IiwiYm5kc18yODQkMCIsImFyZ18yODYiLCJibmRzXzI4NCQxIiwiZXhlcmNpc2VfZXhwb3J0X29mX3lvanNvbiIsImN1cl9leGVyY2lzZV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfZmllbGQiLCJleGVyY2lzZV9kYXRhX3ZhbHVlIiwiY3VyX2V4ZXJjaXNlX3ZhbHVlIiwieW9qc29uX29mX2V4ZXJjaXNlX2V4cG9ydCIsInZfZXhlcmNpc2VfZGF0YSIsInZfY3VyX2V4ZXJjaXNlIiwic2VyaWFsaXplX2V4ZXJjaXNlIiwiZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwcF9wZXJjZW50YWdlIiwic2hvd19wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl9zZXhwIiwic2V4cF9vZl9wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyY2VudGFnZSIsInBwX3BvaW50cyIsInNob3dfcG9pbnRzIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwicHBfc2NvcmUiLCJzaG93X3Njb3JlIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJwZXJjZW50YWdlIiwicmVwb3J0IiwibnVtX3Rlc3RzIiwicmVxdWlyZWQiLCJwcm92aWRlZCIsIm51bV9wYXNzaW5nIiwidGVzdF9zdW1tYXJ5X3N0ciIsImhpZGRlbl9idWdfc3RhdHVzIiwidGVzdF92YWxpZGF0aW9uX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEkMCIsInRlc3RfdmFsaWRhdGlvbl9kYXRhJDAiLCJ2YWxpZGF0aW9uX3Rlc3RfbWFwIiwiaGlkZGVuX2J1Z190ZXN0X21hcCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwiZm91bmQiLCJtayQwIiwiaGlkZGVuX2J1Z3Nfc3RhdGUiLCJwZXJjZW50YWdlJDAiLCJudW1fcGFzc2VkIiwic3VtbWFyeV9zdHIiLCJ0b3RhbCIsIm1rJDEiLCJoIiwic3ludGF4X3Jlc3VsdHMiLCJyIiwibWskMiIsInRlc3RfcmVzdWx0cyQwIiwic3RhdHVzZXMiLCJoaW50ZWRfcmVzdWx0cyIsInBlcmNlbnRhZ2UkMSIsInN5bnRheF9yZXBvcnQiLCJ0ZXN0X3N1bW1hcnlfc3RyJDAiLCJtayQzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJvdmVyYWxsX3Njb3JlIiwiaW1wbF9ncmFkaW5nX3JlcG9ydCIsIm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0IiwidGVzdF92YWxpZGF0aW9uX3JlcG9ydCIsInR2X21heCIsInR2X3BvaW50cyIsIm10X21heCIsIm10X3BvaW50cyIsImlnX21heCIsImlnX3BvaW50cyIsInRvdGFsX3BvaW50cyIsIm91dHB1dF9oZWFkZXIiLCJERUJVRyIsIk9NRF9ERUJVRyIsImRlYnVnIiwid2FybiIsIm9wdCIsIm1zZyIsInN0aCIsIndlIiwidHJhY2tmaXgiLCJyYWlzZSIsImUiLCJvZl9saXN0IiwibCIsInIiLCJmc3BsaXRfcmV2IiwiZXhjbCIsImFjY3UiLCJsJDAiLCJ0bCIsInJpZ2h0IiwibGVmdCQwIiwidGwkMCIsImxlZnQiLCJyaWdodCQwIiwibGVmdCQyIiwidGwkMSIsImxlZnQkMSIsImZzcGxpdCIsImYiLCJyZXYiLCJpZF9vZl9zdHJpbmciLCJpZHMiLCJzIiwibiIsIm91dCIsInN0YXJ0ZWQiLCJpIiwiYyIsImkkMiIsImkkMCIsImkkMSIsInMkMCIsImkkNCIsImxhc3RfdHJhaWxpbmciLCJpJDMiLCJodG1sZW50aXRpZXMiLCJtZCIsImIiLCJqJDEiLCJqIiwiaiQwIiwiaiQ0IiwiaiQyIiwiaiQzIiwibWluaW1hbGl6ZV9ibGFua3MiLCJmJDAiLCJlYXQiLCJleHRyYWN0X2h0bWxfYXR0cmlidXRlcyIsImh0bWwiLCJodG1sJDAiLCJjdXRfb25fY2hhcl9mcm9tIiwicmVtb3ZlX3ByZWZpeF9zcGFjZXMiLCJodG1sJDIiLCJyZXMiLCJhZnRlcl9lcSIsIm5hbWUiLCJuYW1lJDAiLCJhZnRlcl9lcSQwIiwicmVzdCIsInZhbHVlIiwibmV3X3MiLCJhIiwicmVzJDAiLCJodG1sJDEiLCJleHRyYWN0X2lubmVyX2h0bWwiLCJwIiwiaHRtbF92b2lkX2VsZW1lbnRzIiwic3ltYm9sIiwibDEiLCJsMiIsInNlbGZfMSIsImxuIiwidGl0bGUiLCJ1cmwiLCJsb29zZV9jb21wYXJlIiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwiZTEiLCJ0bDIkMCIsImUyJDAiLCJ0bDEkMCIsImUxJDAiLCJ0bDIiLCJlMiIsInRsMSIsInRsMiQxIiwiZTIkMSIsInRsMSQxIiwiZTEkMSIsInRsMSQyIiwiYzEiLCJ0bDIkMiIsImMyIiwiaSQ1IiwidGwxJDMiLCJ0aXRsZTEiLCJ0MSQxIiwiaHJlZjEiLCJ0bDIkMyIsInRpdGxlMiIsInQyJDEiLCJocmVmMiIsImkkNiIsImkkNyIsImkkOCIsInRsMiQ0IiwiZmFsbGJhY2syIiwieDIiLCJuYW1lMiIsInJlZl9jb250YWluZXIyIiwidGwxJDQiLCJmYWxsYmFjazEiLCJ4MSIsIm5hbWUxIiwicmVmX2NvbnRhaW5lcjEiLCJlMSQyIiwidGwyJDUiLCJlMiQyIiwidGwxJDUiLCJpJDExIiwiaSQxMiIsImkkOSIsImNmZiIsImkkMTAiLCJsMSQwIiwibDIkMCIsInRsMiQ2IiwiZTIkMyIsInRsMSQ2IiwiZTEkMyIsImkkMTMiLCJzZWxmXzIiLCJlbXB0eV9leHRlbnNpb24iLCJub3JtYWxpc2VfbWQiLCJsb29wIiwidiIsInRsJDIiLCJ2JDAiLCJ0bCQzIiwidiQxIiwidGwkNCIsInYkMiIsInRsJDUiLCJ2JDMiLCJ0bCQ2IiwidiQ0IiwidGwkNyIsInYkNSIsInRsJDEwIiwidGwkOSIsInRsJDgiLCJ0bCQxMSIsInRsJDEyIiwidiQ2IiwidGwkMTMiLCJ2JDciLCJ0bCQxNCIsInYkOCIsInRsJDE1IiwidiQ5IiwidGwkMTYiLCJ2JDEwIiwidGwkMTciLCJ2JDExIiwidGwkMTgiLCJ2JDEyIiwiaHJlZiIsInRsJDE5IiwidiQxMyIsInNlbGZfMyIsInZpc2l0IiwibCQxIiwibCQyIiwibCQzIiwibCQ0IiwibCQ1IiwibCQ2IiwibCQ3IiwibCQ4IiwibCQ5IiwibCQxMCIsImwkMTEiLCJsJDEyIiwibCQxMyIsImwkMTQiLCJsJDE1IiwibCQxNiIsImwkMTciLCJsJDE4IiwibCQxOSIsInRsJDIwIiwibCQyMCIsInRsJDIxIiwibCQyMSIsInRsJDIyIiwibCQyMiIsInRsJDIzIiwibCQyMyIsInRsJDI0IiwibCQyNCIsInRsJDI1IiwibCQyNSIsInRsJDI2IiwibCQyNiIsInRsJDI3IiwibCQyNyIsInRsJDI4IiwibCQyOCIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJ0ZXh0X29mX21kIiwibWQkMCIsInQiLCJtZCQxIiwibWQkMiIsImMkMCIsImJvZHkiLCJib2R5JDAiLCJ0JDAiLCJ0JDEiLCJxIiwiYWx0IiwiaXRlbSIsImRlZmF1bHRfY29kZV9zdHlsaXN0IiwibGFuZyIsImNvZGUiLCJmaWx0ZXJfdGV4dF9vbWRfcmV2IiwicmVtb3ZlX2xpbmtzIiwiaHRtbF9hbmRfaGVhZGVyc19vZl9tZCIsInN0cmluZ19vZl9hdHRycyIsImh0bWxfb2ZfbWQiLCJoZWFkZXJzX29mX21kIiwicmVtb3ZlX2hlYWRlcl9saW5rcyIsInN0aCQwIiwib3ZlcnJpZGUiLCJzdGgkMSIsInBpbmRlbnQiLCJzdGgkMiIsIm5sMmJyIiwic3RoJDMiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJtZCQzIiwibWQkNCIsImUkMiIsIm1kJDUiLCJlJDMiLCJzJDMiLCJpaCQwIiwiaWQkMCIsIm1kJDYiLCJtZCQ3IiwiZSQ0IiwibWQkOCIsImUkNSIsInMkNCIsImloJDEiLCJpZCQxIiwibWQkOSIsIm1kJDEwIiwiZSQ2IiwibWQkMTEiLCJlJDciLCJzJDUiLCJpaCQyIiwiaWQkMiIsIm1kJDEyIiwibWQkMTMiLCJlJDgiLCJtZCQxNCIsImUkOSIsInMkNiIsImloJDMiLCJpZCQzIiwibWQkMTUiLCJtZCQxNiIsImUkMTAiLCJtZCQxNyIsImUkMTEiLCJzJDciLCJpaCQ0IiwiaWQkNCIsIm1kJDE4IiwicyQ4IiwicyQ5IiwicyQxMCIsIm1kJDE5IiwicyQxMSIsIm1kJDIwIiwicyQxMiIsInMkMTQiLCJuZXdfYyIsImxhbmckMCIsInMkMTUiLCJuZXdfYyQwIiwicyQxNiIsInMkMTciLCJzJDE4IiwiZmFsbGJhY2siLCJ0ZXh0IiwicmMiLCJzJDE5IiwidGl0bGUkMCIsImhyZWYkMCIsImZhbGxiYWNrJDAiLCJyYyQwIiwicyQyMCIsInRpdGxlJDEiLCJzcmMiLCJ0YWduYW1lIiwiYXR0cnMkMSIsImF0dHJzJDIiLCJzJDIyIiwiYXR0cnMiLCJhdHRycyQwIiwicyQyMSIsImF0dHJzJDMiLCJ0YWduYW1lJDAiLCJhdHRycyQ0IiwicyQyMyIsInMkMjQiLCJzJDI1IiwicyQyNiIsInMkMjciLCJzJDI4IiwicyQyOSIsInMkMzAiLCJ0aXRsZSQyIiwic3JjJDAiLCJhbHQkMCIsInMkMzEiLCJ4IiwicyQzMiIsInMkMzMiLCJzJDEzIiwibGkiLCJjcyIsInNleHByX29mX21kIiwidGwkMjkiLCJ0bCQzMCIsImVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIiwibWFya2Rvd25fb2ZfbWQiLCJhZGRfc3BhY2VzIiwicmVmZXJlbmNlcyIsImxpc3RfaW5kZW50IiwiZnN0X3BfaW5fbGkiLCJpc19pbl9saXN0IiwibG9vcCQwIiwiZnN0X3BfaW5fbGkkMCIsImlzX2luX2xpc3QkMCIsImMkMSIsImMkMiIsImZpbHRlciIsImIkMSIsImIkMiIsIngkMCIsImhkIiwiYyQzIiwiZmlsdGVyJDAiLCJiJDMiLCJiJDQiLCJoZCQwIiwibiQwIiwib3V0cHV0X2luZGVudGVkX2Jsb2NrIiwicCQwIiwicCQxIiwibmVlZHNfbmV3bGluZXMiLCJhJDAiLCJiJDAiLCJubCIsIngkMSIsInN0cmluZ19vZl90b2tlbiIsIm4kMSIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJuJDE0IiwibiQxNSIsIm4kMTYiLCJuJDE3IiwibiQxOCIsIm4kMTkiLCJuJDIwIiwibiQyMSIsIm4kMjIiLCJuJDIzIiwibiQyNCIsIm4kMjUiLCJuJDI2IiwibiQyNyIsIm4kMjgiLCJuJDI5IiwibiQzMCIsIm4kMzEiLCJuJDMyIiwibiQzMyIsIm8iLCJsZW5ndGgiLCJzcGxpdF9maXJzdCIsImxleCIsInJlc3VsdCIsIndvcmQiLCJzdGFydCIsIm5fb2NjIiwiciQwIiwicm4iLCJ3IiwiZ2V0IiwibGVuZ3RoJDAiLCJzdWIiLCJhcnIiLCJwb3MiLCJsZW4iLCJsZXhfYmlnYXJyYXkiLCJtYWtlX3NwYWNlIiwic3RyaW5nX29mX3Rva2VucyIsImRlc3RyaW5nX29mX3Rva2VucyIsInRsaXN0IiwibGltaXQiLCJ0bGlzdCQwIiwidGxpc3QkMSIsInByZXZpb3VzIiwicHJldmlvdXMkMTEiLCJwcmV2aW91cyQxMCIsInByZXZpb3VzJDEzIiwicHJldmlvdXMkMTIiLCJwcmV2aW91cyQxNSIsInByZXZpb3VzJDE0IiwicHJldmlvdXMkMTciLCJwcmV2aW91cyQxNiIsInByZXZpb3VzJDE5IiwicHJldmlvdXMkMTgiLCJwcmV2aW91cyQyMSIsInByZXZpb3VzJDIwIiwicHJldmlvdXMkMjMiLCJwcmV2aW91cyQyMiIsInByZXZpb3VzJDI1IiwicHJldmlvdXMkMjQiLCJwcmV2aW91cyQyNyIsInByZXZpb3VzJDI2IiwicHJldmlvdXMkMjkiLCJwcmV2aW91cyQyOCIsInByZXZpb3VzJDMxIiwicHJldmlvdXMkMzAiLCJwcmV2aW91cyQzMyIsInByZXZpb3VzJDMyIiwicHJldmlvdXMkMzUiLCJwcmV2aW91cyQzNCIsInByZXZpb3VzJDM3IiwicHJldmlvdXMkMzYiLCJwcmV2aW91cyQzOSIsInByZXZpb3VzJDM4IiwicHJldmlvdXMkNDEiLCJwcmV2aW91cyQ0MCIsInByZXZpb3VzJDQzIiwicHJldmlvdXMkNDIiLCJwcmV2aW91cyQ5IiwicHJldmlvdXMkNDQiLCJwcmV2aW91cyQ0OCIsInByZXZpb3VzJDQ5IiwicHJldmlvdXMkNyIsInByZXZpb3VzJDYiLCJwcmV2aW91cyQ4IiwicHJldmlvdXMkNSIsInByZXZpb3VzJDQiLCJwcmV2aW91cyQzIiwicHJldmlvdXMkMiIsInByZXZpb3VzJDAiLCJwcmV2aW91cyQxIiwicHJldmlvdXMkNDciLCJwcmV2aW91cyQ0NiIsInByZXZpb3VzJDQ1IiwiaW5kZW50cyQxIiwiaW5kZW50cyQwIiwiaW5kZW50cyQyIiwiaW5kZW50cyIsImRlZmF1bHRfbGFuZyIsImV4dGVuc2lvbnMiLCJnaF91ZW1waF9vcl9ib2xkX3N0eWxlIiwiYmxpbmRfaHRtbCIsInN0cmljdF9odG1sIiwid2Fybl9lcnJvciIsImh0bWxjb2Rlc19zZXQiLCJpbmxpbmVfaHRtbHRhZ3Nfc2V0Iiwibm90aW5ib2R5dGFncyIsImh0bWx0YWdzX3NldCIsImZpeCIsImFjY3UkMCIsInRsJDMxIiwidGwkMzIiLCJ0bCQzMyIsInRsJDM0IiwidGwkMzUiLCJ0bCQzNiIsInRsJDM3IiwidGwkMzgiLCJ0bCQzOSIsInRsJDQwIiwidGwkNDEiLCJ0bCQ0MiIsInRsJDQzIiwidGwkNDQiLCJ0bCQ0NSIsInRsJDQ2IiwidGwkNDciLCJ0bCQ0OCIsInRsJDQ5IiwidGwkNTAiLCJ0bCQ1MSIsInRsJDUyIiwidGwkNTMiLCJ0bCQ1NCIsInRsJDU1IiwidGwkNTYiLCJ0bCQ1NyIsInRsJDU4IiwidGwkNTkiLCJ0bCQ2MCIsInRsJDYxIiwidGwkNjIiLCJ0bCQ2MyIsInRsJDY0IiwidGwkNjUiLCJ0bCQ2NiIsInRsJDY3IiwidGwkNjgiLCJ0bCQ2OSIsIm4kMzQiLCJ0bCQ3MCIsInRsJDcxIiwibiQzNSIsInRsJDcyIiwidGwkNzMiLCJuJDM2IiwidGwkNzQiLCJ0bCQ3NSIsIm4kMzciLCJ0bCQ3NiIsInRsJDc3IiwibiQzOCIsInRsJDc4IiwidGwkNzkiLCJuJDM5IiwidGwkODAiLCJ0bCQ4MSIsIm4kNDAiLCJ0bCQ4MiIsInRsJDgzIiwiYiQ1IiwibiQ0MSIsInRsJDg0IiwidGwkODUiLCJiJDYiLCJuJDQyIiwidGwkODYiLCJ0bCQ4NyIsImIkNyIsIm4kNDMiLCJ0bCQ4OCIsInRsJDg5IiwiYiQ4IiwibiQ0NCIsInRsJDkwIiwidGwkOTEiLCJiJDkiLCJuJDQ1IiwidGwkOTIiLCJ0bCQ5MyIsImIkMTAiLCJuJDQ2IiwidGwkOTQiLCJ0bCQ5NSIsImIkMTEiLCJuJDQ3IiwidGwkOTYiLCJ0bCQ5NyIsImIkMTIiLCJuJDQ4IiwidGwkOTgiLCJ0bCQ5OSIsImIkMTMiLCJuJDQ5IiwidGwkMTAwIiwidGwkMTAxIiwiYiQxNCIsIm4kNTAiLCJ0bCQxMDIiLCJ0bCQxMDMiLCJiJDE1IiwibiQ1MSIsInRsJDEwNCIsInRsJDEwNSIsImIkMTYiLCJuJDUyIiwidGwkMTA2IiwidGwkMTA3IiwiYiQxNyIsIm4kNTMiLCJ0bCQxMDgiLCJ0bCQxMDkiLCJiJDE4IiwibiQ1NCIsInRsJDExMCIsInRsJDExMSIsImIkMTkiLCJuJDU1IiwidGwkMTEyIiwidGwkMTEzIiwiYiQyMCIsIm4kNTYiLCJ0bCQxMTQiLCJ0bCQxMTUiLCJiJDIxIiwibiQ1NyIsInRsJDExNiIsInRsJDExNyIsImIkMjIiLCJuJDU4IiwidGwkMTE4IiwidGwkMTE5IiwiYiQyMyIsIm4kNTkiLCJ0bCQxMjAiLCJ0bCQxMjEiLCJiJDI0IiwibiQ2MCIsInRsJDEyMiIsInRsJDEyMyIsImIkMjUiLCJuJDYxIiwidGwkMTI0IiwidGwkMTI1IiwiYiQyNiIsIm4kNjIiLCJ0bCQxMjYiLCJ0bCQxMjciLCJiJDI3IiwibiQ2MyIsInRsJDEyOCIsInRsJDEyOSIsImIkMjgiLCJuJDY0IiwidGwkMTMwIiwidGwkMTMxIiwiYiQyOSIsIm4kNjUiLCJ0bCQxMzIiLCJ0bCQxMzMiLCJiJDMwIiwibiQ2NiIsInRsJDEzNCIsInRsJDEzNSIsImIkMzEiLCJuJDY3IiwidGwkMTM2IiwidGwkMTM3IiwiYiQzMiIsIm4kNjgiLCJ0bCQxMzgiLCJ0bCQxMzkiLCJiJDMzIiwicmVtb3ZlX2luaXRpYWxfbmV3bGluZXMiLCJtYWtlX3BhcmFncmFwaHMiLCJjcCQwIiwiY3AkNSIsImFjY3UkMTciLCJiMSIsImIyIiwiY2xlYW5fcGFyYWdyYXBocyIsImFzc2VydF93ZWxsX2Zvcm1lZCIsImV4dHJhY3RfZmFsbGJhY2siLCJtYWluX2xvb3AiLCJyZW1haW5zIiwiciQxIiwiYWNjdSQyIiwiciQyIiwibSIsImFjY3UkMyIsInVuaW5kZW50X3JldiIsImxleGVtZXMiLCJjbCQwIiwieSIsInVuaW5kZW50Iiwic25kIiwiZnN0IiwiaXNfYmxhbmsiLCJzZW1waF9vcl9ib2xkIiwic21fdWVtcGhfb3JfYm9sZCIsImdoX3VlbXBoX29yX2JvbGQiLCJ1ZW1waF9vcl9ib2xkIiwiZWF0X2JsYW5rIiwic2V0ZXh0X3RpdGxlIiwiZGV0ZWN0X2JhbGFuY2VkX2JxcyIsInIkMyIsInIkNCIsInIkNSIsInIkNiIsInIkNyIsImJsIiwiYmwkMCIsInRhZ19tYXliZV9oMSIsInRhZ19tYXliZV9oMiIsInRhZ19tZCIsInNlbGZfNCIsInRhZ19zZXRleHQiLCJwbCQwIiwicmxlZnQkMCIsInJpZ2h0JDEiLCJyaWdodCQyIiwicmxlZnQiLCJocl9tIiwiaHJfcyIsImhyIiwiYmNvZGUiLCJkZWZhdWx0X2xhbmckMCIsImFjY3UkMSIsImNiIiwiY29kZSQwIiwiY29kZSQyIiwiY29kZSQzIiwiY29kZSQxIiwiY2xlYW5fYmNvZGUiLCJjb2RlJDQiLCJyZWFkX3VudGlsX2d0IiwiYnEiLCJub19ubCIsImFjY3UkMTkiLCJhY2N1JDIwIiwieCQyIiwicmVhZF91bnRpbF9sdCIsImFjY3UkMTYiLCJyZWFkX3VudGlsX2NwYXJlbnRoIiwicmVhZF91bnRpbF9vcGFyZW50aCIsInJlYWRfdW50aWxfZHEiLCJyZWFkX3VudGlsX3EiLCJyZWFkX3VudGlsX29icmFja2V0IiwicmVhZF91bnRpbF9jYnJhY2tldCIsInJlYWRfdW50aWxfc3BhY2UiLCJyZWFkX3VudGlsX25ld2xpbmUiLCJyZWFkX3RpdGxlIiwiaCIsImgkMCIsIm1heWJlX2V4dGVuc2lvbiIsIm5wIiwibnIiLCJrIiwiZW1haWxzdHlsZV9xdW90aW5nIiwiYmxvY2skMCIsImNsJDIiLCJibG9jayIsIm1heWJlX3JlZmVyZW5jZSIsIm1heWJlX2RlZiIsInJlbWFpbnMkMCIsInJlbWFpbnMkMSIsInJlbWFpbnMkMiIsInVybCQwIiwidXJsJDEiLCJibGFuayIsImZsYWciLCJyZW1haW5zJDMiLCJ0ZXh0JDAiLCJmYWxsYmFjayQxIiwibWF5YmVfbGluayIsInJlYWRfdXJsIiwicl9jcCIsImxfY3AiLCJyX2RxIiwibF9kcSIsInJlc3QkMCIsImhhc19wYXJhZ3JhcGhzIiwicGFyc2VfbGlzdCIsImVuZF9vZl9pdGVtIiwic2VsZl82Iiwic2VsZl81IiwiYmxvY2skNSIsInJlc3QkNiIsImJsb2NrJDYiLCJyZXN0JDciLCJibG9jayQ3IiwicmVzdCQ1IiwiYmxvY2skOCIsInJlc3QkOSIsImJsb2NrJDkiLCJyZXN0JDEwIiwiYmxvY2skMTAiLCJyZXN0JDgiLCJyZXN0JDEiLCJibG9jayQxIiwiYmxvY2skMiIsInJlc3QkMyIsImJsb2NrJDMiLCJyZXN0JDQiLCJibG9jayQ0IiwicmVzdCQyIiwicmV2X3RvX3QiLCJhZGQiLCJzdWJsaXN0IiwiaXRlbXMiLCJpdGVtJDAiLCJtYWtlX3VwIiwiaXRlbXMkMCIsImxpc3RfaXRlbXMiLCJpbmRlbnRzJDMiLCJpbmRlbnRzJDQiLCJuZXdfaXRlbSQwIiwicCQyIiwiaXRlbXMkNSIsIml0ZW1zJDMiLCJpdGVtcyQ0IiwibmV3X2l0ZW0kMSIsInAkMyIsIml0ZW1zJDgiLCJpdGVtcyQ2Iiwic3VibGlzdCQwIiwiaXRlbXMkNyIsIm5ld19pdGVtIiwiaXRlbXMkMSIsIml0ZW1zJDIiLCJuZXdfaXRlbSQyIiwicCQ0IiwiaXRlbXMkOSIsIml0ZW1zJDEwIiwibmV3X2l0ZW0kMyIsInAkNSIsIml0ZW1zJDExIiwic3VibGlzdCQxIiwiaXRlbXMkMTIiLCJpdGVtcyQxMyIsImluZGVudHMkNSIsIm5ld19pdGVtJDQiLCJwJDYiLCJpdGVtcyQxNCIsInN1Ymxpc3QkMiIsIml0ZW1zJDE1IiwiaXRlbXMkMTYiLCJpbmRlbnRzJDYiLCJzdHJpbmdfb2ZfaXRlbXMiLCJpbmRlbnQkMCIsInJwIiwiaWNvZGUiLCJzZWxmXzciLCJkdW1teV90YWciLCJzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUiLCJzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW4iLCJuZXdsaW5lcyIsIm1heWJlX2F1dG9lbWFpbCIsImRvbWFpbiIsImVtYWlsIiwiaXNfaGV4IiwibWVkaWF0eXBldGV4dG9tZCIsIm1haW5faW1wbF9yZXYiLCJwcmV2aW91cyQ1MCIsInByZXZpb3VzJDUxIiwibGV4ZW1lcyQwIiwibGV4ZW1lcyQxIiwibGV4ZW1lcyQyIiwicHJldmlvdXMkNTIiLCJsZXhlbWVzJDMiLCJwcmV2aW91cyQ1MyIsImxleGVtZXMkNCIsInByZXZpb3VzJDU0IiwidyQwIiwibGV4ZW1lcyQ1IiwicHJldmlvdXMkNTUiLCJsZXhlbWVzJDYiLCJwcmV2aW91cyQ1NiIsInIkOCIsImxleGVtZXMkNyIsInByZXZpb3VzJDU3IiwiciQ5IiwidyQxIiwibGV4ZW1lcyQ4IiwiciQxMyIsInByZXZpb3VzJDU4IiwiciQxMCIsImxleGVtZXMkOSIsInByZXZpb3VzJDU5IiwiciQxMSIsImxleGVtZXMkMTAiLCJwcmV2aW91cyQ2MCIsInIkMTIiLCJsZXhlbWVzJDYxIiwiciQxMTYiLCJ0JDMiLCJsZXhlbWVzJDYyIiwicHJldmlvdXMkMTA3IiwiciQ2NSIsImxleGVtZXMkNjMiLCJwcmV2aW91cyQxMDgiLCJyJDY2IiwibGV4ZW1lcyQ2NCIsInByZXZpb3VzJDEwOSIsInIkNjciLCJsZXhlbWVzJDY1IiwicHJldmlvdXMkMTEwIiwiciQ2OCIsImxleGVtZXMkNjYiLCJwcmV2aW91cyQxMTEiLCJyJDY5IiwibGV4ZW1lcyQ2NyIsInByZXZpb3VzJDExMiIsInIkNzAiLCJsZXhlbWVzJDY4IiwicHJldmlvdXMkMTEzIiwiciQ3MSIsImxleGVtZXMkNjkiLCJwcmV2aW91cyQxMTQiLCJyJDcyIiwibGV4ZW1lcyQ3MCIsInByZXZpb3VzJDExNSIsInIkNzMiLCJsZXhlbWVzJDcxIiwicHJldmlvdXMkMTE2IiwiciQ3NCIsImxleGVtZXMkNzIiLCJwcmV2aW91cyQxMTciLCJyJDc1IiwibGV4ZW1lcyQ3MyIsInByZXZpb3VzJDExOCIsInIkNzYiLCJsZXhlbWVzJDc0IiwicHJldmlvdXMkMTE5IiwiciQ3NyIsImxleGVtZXMkNzUiLCJwcmV2aW91cyQxMjAiLCJyJDc4IiwibGV4ZW1lcyQ3NiIsInByZXZpb3VzJDEyMSIsInIkNzkiLCJsZXhlbWVzJDc3IiwicHJldmlvdXMkMTIyIiwiciQ4MCIsImxleGVtZXMkNzgiLCJwcmV2aW91cyQxMjMiLCJyJDgxIiwibGV4ZW1lcyQ3OSIsInIkODIiLCJsZXhlbWVzJDgwIiwiciQ4MyIsImxleGVtZXMkODEiLCJyJDg0IiwibGV4ZW1lcyQ4MiIsInIkODUiLCJsZXhlbWVzJDgzIiwiciQ4NiIsImxleGVtZXMkODQiLCJyJDg3IiwibGV4ZW1lcyQ4NSIsInIkODgiLCJsZXhlbWVzJDg2IiwiciQ4OSIsImxleGVtZXMkODciLCJyJDkwIiwibGV4ZW1lcyQ4OCIsInIkOTEiLCJsZXhlbWVzJDg5IiwiciQ5MiIsImxleGVtZXMkOTAiLCJyJDkzIiwibGV4ZW1lcyQ5MSIsInIkOTQiLCJsZXhlbWVzJDkyIiwiciQ5NSIsImxleGVtZXMkOTMiLCJyJDk2IiwibGV4ZW1lcyQ5NCIsInIkOTciLCJsZXhlbWVzJDk1IiwiciQ5OCIsImxleGVtZXMkOTYiLCJyJDk5IiwibGV4ZW1lcyQ5NyIsInIkMTAwIiwibGV4ZW1lcyQ5OCIsInIkMTAxIiwibGV4ZW1lcyQ5OSIsInIkMTAyIiwibGV4ZW1lcyQxMDAiLCJyJDEwMyIsImxleGVtZXMkMTAxIiwiciQxMDQiLCJsZXhlbWVzJDEwMiIsInIkMTA1IiwibGV4ZW1lcyQxMDMiLCJyJDEwNiIsImxleGVtZXMkMTA0IiwiciQxMDciLCJsZXhlbWVzJDEwNSIsInIkMTA4IiwibGV4ZW1lcyQxMDYiLCJyJDEwOSIsImxleGVtZXMkMTA3IiwiciQxMTAiLCJsZXhlbWVzJDEwOCIsInIkMTExIiwibGV4ZW1lcyQxMDkiLCJyJDExMiIsImxleGVtZXMkMTEwIiwiciQxMTMiLCJsZXhlbWVzJDExMSIsInIkMTE0IiwibGV4ZW1lcyQxMTIiLCJyJDExNSIsInIkNjQiLCJsZXhlbWVzJDExMyIsImxleGVtZXMkMTE0IiwicHJldmlvdXMkMTI0IiwiciQxMTciLCJwcmV2aW91cyQxMjUiLCJyJDExOCIsImxleGVtZXMkMTE5IiwiZyIsImxleGVtZXMkMTIzIiwiY29tbWVudHMiLCJyJDEzMiIsImxleGVtZXMkMTI0IiwicHJldmlvdXMkMTMyIiwiciQxMzMiLCJwcmV2aW91cyQxMzMiLCJyJDEzNCIsInckNSIsInckNiIsImxleGVtZXMkMTI1IiwiZyQwIiwibGV4ZW1lcyQxMjYiLCJyJDEzNiIsImxleGVtZXMkMTI3IiwiciQxMzciLCJyJDEzNSIsImxleGVtZXMkMTI4IiwiciQxMzgiLCJsZXhlbWVzJDEyOSIsImxleGVtZXMkMTMwIiwicHJldmlvdXMkMTM0IiwiciQxMzkiLCJsZXhlbWVzJDEzMSIsInByZXZpb3VzJDEzNSIsInIkMTQwIiwibGV4ZW1lcyQxMzIiLCJwcmV2aW91cyQxMzYiLCJyJDE0MSIsInByZXZpb3VzJDEzNyIsInIkMTQyIiwibGV4ZW1lcyQxMzMiLCJsZXhlbWVzJDEzNCIsIngkMyIsInByZXZpb3VzJDEzOCIsInIkMTQzIiwibWFpbl9pbXBsIiwibGV4ZW1lcyQxMzUiLCJwcmV2aW91cyQxMzkiLCJyJDE0NCIsInByZXZpb3VzJDE0MCIsInIkMTQ1IiwibGV4ZW1lcyQxMzYiLCJyJDE0NiIsImxleGVtZXMkMTM3IiwiciQxNDciLCJsZXhlbWVzJDEzOCIsInByZXZpb3VzJDE0MSIsInIkMTQ4IiwibGV4ZW1lcyQxMzkiLCJwcmV2aW91cyQxNDIiLCJyJDE0OSIsImxleGVtZXMkMTQwIiwicHJldmlvdXMkMTQzIiwiciQxNTAiLCJsZXhlbWVzJDE0MSIsInIkMTUxIiwibGV4ZW1lcyQxNDIiLCJsZXhlbWVzJDE0MyIsIngkNCIsInByZXZpb3VzJDE0NCIsInIkMTUyIiwicHJldmlvdXMkMTQ1IiwiciQxNTMiLCJsZXhlbWVzJDE0NCIsInByZXZpb3VzJDE0NiIsInIkMTU0IiwicHJldmlvdXMkMTQ3IiwiciQxNTUiLCJsZXhlbWVzJDE0NSIsInckNyIsInByZXZpb3VzJDE0OCIsInIkMTU2IiwibGV4ZW1lcyQxNDYiLCJsZXhlbWVzJDE0NyIsInByZXZpb3VzJDE0OSIsInIkMTU3IiwibGV4ZW1lcyQ1OCIsImxleGVtZXMkNTkiLCJwcmV2aW91cyQxMDQiLCJyJDYxIiwibGV4ZW1lcyQ2MCIsInByZXZpb3VzJDEwNSIsInIkNjIiLCJwcmV2aW91cyQxMDYiLCJyJDYzIiwidyQ0IiwibGV4ZW1lcyQxMjAiLCJ1cmwkMiIsImxleGVtZXMkMTIyIiwicHJldmlvdXMkMTMwIiwiciQxMzAiLCJwcmV2aW91cyQxMzEiLCJyJDEzMSIsImxleGVtZXMkMTIxIiwidXJsJDMiLCJyJDEyOCIsInIkMTI5IiwibGV4ZW1lcyQxMTUiLCJsZXhlbWVzJDExNiIsInIkMTIxIiwidGxzIiwibGV4ZW1lcyQxMTciLCJwcmV2aW91cyQxMjYiLCJyJDExOSIsInByZXZpb3VzJDEyNyIsInIkMTIwIiwibnRsJDAiLCJudGwkMSIsImFsdCQyIiwiYWx0JDEiLCJyJDEyNyIsIm50bCIsInBhdGhfdGl0bGUiLCJwYXRoIiwibm90aGluZyIsInIkMTI1IiwicGF0aCQwIiwidGl0bGUkMyIsInIkMTI0IiwiciQxMjYiLCJsZXhlbWVzJDExOCIsInByZXZpb3VzJDEyOCIsInIkMTIyIiwicHJldmlvdXMkMTI5IiwiciQxMjMiLCJzcCIsImxleGVtZXMkMzciLCJwcmV2aW91cyQ4OCIsInIkNDMiLCJsZXhlbWVzJDM4IiwicHJldmlvdXMkODkiLCJyJDQ0IiwibGV4ZW1lcyQ0NSIsInByZXZpb3VzJDk1IiwibGV4ZW1lcyQ0NyIsImxleGVtZXMkNTEiLCJyJDU2IiwibGV4ZW1lcyQ1MiIsInByZXZpb3VzJDk5IiwibGV4ZW1lcyQ0OCIsInIkNTIiLCJsZXhlbWVzJDQ5IiwicHJldmlvdXMkOTYiLCJyJDUzIiwibGV4ZW1lcyQ1MCIsInByZXZpb3VzJDk3IiwiciQ1NCIsInByZXZpb3VzJDk4IiwiciQ1NSIsImxleGVtZXMkNTMiLCJ0dGwiLCJsZXhlbWVzJDU0IiwicHJldmlvdXMkMTAwIiwiciQ1NyIsInByZXZpb3VzJDEwMSIsInIkNTgiLCJsZXhlbWVzJDU1IiwicHJldmlvdXMkMTAyIiwiciQ1OSIsImxleGVtZXMkNTYiLCJwcmV2aW91cyQxMDMiLCJsZXhlbWVzJDU3IiwiciQ2MCIsImxleGVtZXMkMzkiLCJsZXhlbWVzJDQyIiwiciQ0OCIsImxleGVtZXMkNDMiLCJwcmV2aW91cyQ5MiIsImxleGVtZXMkNDQiLCJwcmV2aW91cyQ5MyIsInIkNDkiLCJwcmV2aW91cyQ5NCIsInIkNTAiLCJsZXhlbWVzJDQwIiwiciQ0NSIsImxleGVtZXMkNDEiLCJwcmV2aW91cyQ5MCIsInIkNDYiLCJwcmV2aW91cyQ5MSIsInIkNDciLCJmb28kMSIsImxleGVtZXMkNDYiLCJmb28kMCIsImZvbyIsIm5ld19yIiwiciQ1MSIsImxleGVtZXMkMzUiLCJyJDQxIiwibGV4ZW1lcyQzNiIsInByZXZpb3VzJDg3IiwiciQ0MiIsInRrIiwibGV4ZW1lcyQzMCIsImxleGVtZXMkMzEiLCJwcmV2aW91cyQ4MSIsInIkMzUiLCJwcmV2aW91cyQ4MiIsInIkMzYiLCJsZXhlbWVzJDMyIiwibGV4ZW1lcyQzMyIsInByZXZpb3VzJDgzIiwiciQzNyIsInByZXZpb3VzJDg0IiwiciQzOCIsImxleGVtZXMkMzQiLCJwcmV2aW91cyQ4NSIsInIkMzkiLCJwcmV2aW91cyQ4NiIsInIkNDAiLCJsZXhlbWVzJDI4IiwicHJldmlvdXMkNzkiLCJyJDMzIiwidGtzIiwidGswIiwidGV4dCQxIiwibGV4ZW1lcyQyOSIsInByZXZpb3VzJDgwIiwiciQzNCIsImxleGVtZXMkMjUiLCJsZXhlbWVzJDI2IiwicHJldmlvdXMkNzYiLCJyJDMwIiwibGV4ZW1lcyQyNyIsInByZXZpb3VzJDc3IiwiciQzMSIsInByZXZpb3VzJDc4IiwiciQzMiIsImxleGVtZXMkMjAiLCJsZXhlbWVzJDIxIiwicHJldmlvdXMkNzEiLCJyJDI1IiwicHJldmlvdXMkNzIiLCJyJDI2IiwibGV4ZW1lcyQyMiIsImxleGVtZXMkMjMiLCJwcmV2aW91cyQ3MyIsInIkMjciLCJwcmV2aW91cyQ3NCIsInIkMjgiLCJsZXhlbWVzJDI0IiwicHJldmlvdXMkNzUiLCJyJDI5IiwibGV4ZW1lcyQxMSIsInckMiIsImh0bWxfc3R1ZmYiLCJ0YWduYW1ldG9wIiwibWRfb2ZfaW50ZXJtX2xpc3QiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwibG9vcCQyIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsIm1kX29mX2ludGVybV9saXN0JDEiLCJtZF9vZl9pbnRlcm1fbGlzdCQwIiwic3RyaW5nX29mX3RhZ3N0YXR1cyQwIiwiYWRkX3Rva2VuX3RvX2JvZHkiLCJsb29wJDEiLCJ0JDYiLCJkZWxpbWl0ZXIiLCJiZWZvcmUiLCJ0YWduYW1lJDIiLCJsZXhlbWVzJDE4IiwiaCQxIiwicHJldmlvdXMkNjciLCJyJDIxIiwicHJldmlvdXMkNjgiLCJyJDIyIiwibGV4ZW1lcyQxMiIsImxleGVtZXMkMTMiLCJwcmV2aW91cyQ2MSIsInIkMTQiLCJsZXhlbWVzJDE0IiwicHJldmlvdXMkNjIiLCJyJDE1IiwicHJldmlvdXMkNjMiLCJyJDE2IiwibWFpbl9sb29wX3JldiIsIm1haW5fcGFyc2UiLCJwYXJzZSIsImRlZmF1bHRfcGFyc2UiLCJkIiwid2FybmluZyIsImxleF9mcm9tX2luY2hhbm5lbCIsImljIiwiaWNfY29udGVudCIsInRvX3N0cmluZyIsInBwIiwiYXR0cmlidXRlcyIsIm5vZGVuYW1lIiwib2ZfaW5wdXQiLCJvZl9zdHJpbmciLCJvZl9iaWdhcnJheSIsInNldF9kZWZhdWx0X2xhbmciLCJ0JDciLCJ0JDgiLCJ0JDkiLCJ0JDEwIiwidCQxMSIsInQkMTIiLCJ0JDEzIiwiZmluZF9zdGFydCQwIiwibGV2ZWwiLCJudW1iZXIiLCJzdWJzZWN0aW9ucyIsImRlYWxfd2l0aF9oZWFkZXIiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJmaW5kX3N0YXJ0IiwibWFrZV90b2MkMCIsIm1pbl9sZXZlbCIsIm1heF9sZXZlbCIsInRvY19lbnRyeSIsIm1ha2VfdG9jIiwic3ViX3RvYyIsInRvYyIsInN1Yl90b2MkMCIsInRvYyQwIiwiZGVwdGgiLCJoZWFkZXJzJDAiLCJlcnJvcl9zb3VyY2VfMDA5IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyMiIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAzNSIsInRwX2xvYyQxIiwia2V5X29mX3NleHAiLCJzZXhwX29mX2tleSIsImtleV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfa2V5IiwicHBfdmFsdWUiLCJzaG93X3ZhbHVlIiwiZm10IiwieCIsInZhbHVlX29mX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwidmFsdWVfb2ZfeW9qc29uIiwieW9qc29uX29mX3ZhbHVlIiwicHAiLCJzaG93Iiwic2VwIiwiYTEiLCJhMCIsInRfb2Zfc2V4cCIsInhfMDEwIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsInNleHBfb2ZfdCIsInhfMDE1IiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDEzIiwicmVzMV8wMTQiLCJ0X29mX3lvanNvbiIsInQiLCJ5b2pzb24iLCJ2MSIsInYwIiwidjAkMCIsInYxJDAiLCJ5b2pzb25fb2ZfdCIsInYiLCJzZXJpYWxpemUiLCJwcm9ncmFtIiwiZGVzZXJpYWxpemUiLCJzZXhwIiwicHBfdmFsdWUkMCIsInNob3dfdmFsdWUkMCIsInZhbHVlX29mX3NleHAkMCIsInhfMDIzIiwic2V4cF8wMjEiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMF8wMTkiLCJyZXMxXzAyMCIsInNleHBfb2ZfdmFsdWUkMCIsInhfMDI4IiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJ2YWx1ZV9vZl95b2pzb24kMCIsInlvanNvbl9vZl92YWx1ZSQwIiwicHAkMCIsInNob3ckMCIsInRfb2Zfc2V4cCQwIiwieF8wMzYiLCJzZXhwXzAzNCIsImFyZzFfMDMxIiwiYXJnMF8wMzAiLCJyZXMwXzAzMiIsInJlczFfMDMzIiwic2V4cF9vZl90JDAiLCJ4XzA0MSIsImFyZzFfMDM4IiwiYXJnMF8wMzciLCJyZXMwXzAzOSIsInJlczFfMDQwIiwidF9vZl95b2pzb24kMCIsInlvanNvbl9vZl90JDAiLCJzZXJpYWxpemUkMCIsInIiLCJkZXNlcmlhbGl6ZSQwIiwid29yayIsInJlcyIsImV4biQwIiwiZXhuIiwicmVhc29uIiwicmVzdWx0Iiwic3RhdGUiLCJvbl9yZXF1ZXN0IiwicmVxIiwiayIsInN0YXJ0IiwibmFtZSIsInRpbWVvdXREdXJhdGlvbiIsImluaXRXb3JrZXIiLCJ3b3JrZXJSZWYiLCJ0aW1lb3V0SWQiLCJyZXN0YXJ0X3dvcmtlciIsInJlcXVlc3QiLCJyZXEiLCJoYW5kbGVyIiwidGltZW91dCIsInNldHVwV29ya2VyTWVzc2FnZUhhbmRsZXIiLCJldnQiLCJpZCIsIm9uVGltZW91dCIsImJ1dHRvbiIsIm9wdCIsImljb24iLCJhY3Rpb24iLCJzdGgiLCJ0b29sdGlwIiwiYnV0dG9uX25hbWVkIiwiYnV0dG9uX2QiLCJsaW5rIiwidXJsIiwidG9nZ2xlIiwibGFiZWwiLCJhY3RpdmUiLCJ0b2dnbGVfbmFtZWQiLCJmaWxlX3NlbGVjdF9idXR0b24iLCJvbl9pbnB1dCIsImZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZCIsIm1rIiwiYyIsIm1rJDAiLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW0iLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24iLCJ4IiwibWskMSIsImdldCIsInQiLCJrIiwibWFwIiwic2V0IiwidiIsIm1rX3NlY29uZGFyeSIsImNvbnRlbnQiLCJta190aWxlIiwiZm9ybSIsImNoaWxkcmVuIiwiaSIsIm1rX2FuY2VzdG9yIiwibCIsIm1rX21vbm90aWxlIiwiaW50JDAiLCJuIiwiZXhwIiwicGF0IiwibWtfZnVuIiwibWtfZnVuX2FuY2VzdG9yIiwibWtfcGFyZW5zX2FuY2VzdG9yIiwibWtfbGV0X2FuY2VzdG9yIiwicGx1cyIsImxfc2libGluZyIsInJfc2libGluZyIsImFuY2VzdG9ycyIsImJhY2twYWNrIiwiemlwcGVyIiwiY29uc19leHAiLCJsaXN0X2NvbmNhdF9leHAiLCJjb25zX3BhdCIsInNlcSIsImV4cCQwIiwicGF0JDAiLCJ0eXAiLCJ0cGF0IiwidHlwX3BhdF92YXIiLCJta19wYXJlbnNfZXhwIiwibWtfcGFyZW5zX3BhdCIsIm1rX3BhcmVuc190eXAiLCJta19saXN0X2V4cCIsIm1rX2xpc3RfcGF0IiwibWtfbGlzdF90eXAiLCJta19mb3JhbGwiLCJta19yZWMiLCJhcnJvdyIsInVuYXJ5X21pbnVzIiwidW5hcnlfbm90IiwicGx1cyQwIiwibWludXMiLCJ0aW1lcyIsInBvd2VyIiwiZGl2aWRlIiwiZXF1YWxzIiwibm90X2VxdWFscyIsImx0IiwibHRlIiwiZ3QiLCJndGUiLCJmcGx1cyIsImZtaW51cyIsImZ0aW1lcyIsImZwb3dlciIsImZkaXZpZGUiLCJmZXF1YWxzIiwiZm5vdF9lcXVhbHMiLCJmbHQiLCJmbHRlIiwiZmd0IiwiZmd0ZSIsInNlcXVhbHMiLCJzY29uY2F0IiwibG9naWNhbF9hbmQiLCJsb2dpY2FsX29yIiwiY29tbWFfZXhwIiwiY29tbWFfcGF0IiwiY29tbWFfdHlwIiwicGlwZWxpbmUiLCJuaWwiLCJkZWZlcnJhbCIsInR5cGVhbm4iLCJta190eXBmdW4iLCJta19mdW4kMCIsIm1rX2FwX2V4cF90eXAiLCJta19maXgiLCJta19hcF9leHAiLCJta19hcF9wYXQiLCJta19sZXQiLCJta190eWFsaWFzIiwibWtfaWYiLCJta190ZXN0IiwibWtfY2FzZSIsIm1rX3J1bGUiLCJta19oaWRlIiwibWtfZXZhbCIsIm1rX3BhdXNlIiwibWtfZGVidWciLCJta191bnF1b3RlIiwibGluZWJyZWFrIiwic3BhY2UiLCJta19leGFtcGxlIiwic3RyIiwieiIsImFiYnJldmlhdGUiLCJlcnJvcl9zb3VyY2VfMDAzIiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAwNyIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAxMSIsInRwX2xvYyQxIiwiZXJyb3Jfc291cmNlXzAxNSIsInRwX2xvYyQyIiwiZXJyb3Jfc291cmNlXzAxOSIsInRwX2xvYyQzIiwiZXJyb3Jfc291cmNlXzAyMyIsInRwX2xvYyQ0IiwiZXJyb3Jfc291cmNlXzA4NCIsInRwX2xvYyQ1IiwiZXJyb3Jfc291cmNlXzA5NyIsInRwX2xvYyQ2IiwiZXJyb3Jfc291cmNlXzEwMSIsInRwX2xvYyQ3IiwiZXJyb3Jfc291cmNlXzE2MyIsInRwX2xvYyQ4IiwiZXJyb3Jfc291cmNlXzE4NyIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzIzOCIsInRwX2xvYyQxMCIsImVycm9yX3NvdXJjZV8yNzIiLCJ0cF9sb2MkMTEiLCJwcF9saXN0X2V4YW1wbGVzIiwiZm10Iiwic2hvd19saXN0X2V4YW1wbGVzIiwibGlzdF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX2xpc3RfZXhhbXBsZXMiLCJsaXN0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbiIsInlvanNvbl9vZl9saXN0X2V4YW1wbGVzIiwicHBfdHlwZnVuX2V4YW1wbGVzIiwic2hvd190eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl90eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGZ1bl9leGFtcGxlcyIsInBwX2Z1bl9leGFtcGxlcyIsInNob3dfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAxMiIsInNleHBfb2ZfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9mdW5fZXhhbXBsZXMiLCJwcF9sZXRfZXhhbXBsZXMiLCJzaG93X2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfbGV0X2V4YW1wbGVzIiwicHBfbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMiLCJzaG93X251bWVyaWNfYmluX29wX2V4YW1wbGVzIiwibnVtZXJpY19iaW5fb3BfZXhhbXBsZXNfb2Zfc2V4Iiwic2V4cF8wMjAiLCJzZXhwX29mX251bWVyaWNfYmluX29wX2V4YW1wbGUiLCJudW1lcmljX2Jpbl9vcF9leGFtcGxlc19vZl95b2oiLCJ5b2pzb25fb2ZfbnVtZXJpY19iaW5fb3BfZXhhbXAiLCJwcF9leGFtcGxlX2lkIiwic2hvd19leGFtcGxlX2lkIiwiYTAiLCJhMCQwIiwiYTAkMSIsImEwJDIiLCJhMCQzIiwiYTAkNCIsImV4YW1wbGVfaWRfb2Zfc2V4cCIsInNleHBfMDI1IiwidGFnXzAyNiIsInNleHBfYXJnc18wMzIiLCJhcmcwXzAzMyIsInJlczBfMDM0Iiwic2V4cF9hcmdzXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJzZXhwX2FyZ3NfMDQyIiwiYXJnMF8wNDMiLCJyZXMwXzA0NCIsInNleHBfYXJnc18wMjciLCJhcmcwXzAyOCIsInJlczBfMDI5Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsInNleHBfb2ZfZXhhbXBsZV9pZCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4IiwiYXJnMF8wNTkiLCJyZXMwXzA2MCIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2MyIsInJlczBfMDY0IiwiYXJnMF8wNjUiLCJyZXMwXzA2NiIsImV4YW1wbGVfaWRfb2ZfeW9qc29uIiwidGFnIiwieW9qc29uX2FyZ3MiLCJ2MCIsInYwJDAiLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX2V4YW1wbGVfaWQiLCJwcF9leGFtcGxlIiwic2hvd19leGFtcGxlIiwiZXhhbXBsZV9vZl9zZXhwIiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJzdWJfaWRfMDcwIiwidGVybV8wNzIiLCJtZXNzYWdlXzA3NCIsImR1cGxpY2F0ZXNfMDc2IiwiZXh0cmFfMDc3Iiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA4MCIsImZpZWxkX25hbWVfMDc4IiwidGFpbF8wODYiLCJmaWVsZF9zZXhwXzA3OSQzIiwiZmllbGRfc2V4cF8wNzkiLCJ4XzA4NyIsImZpZWxkX3NleHBfMDc5JDAiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMSIsImZ2YWx1ZV8wODMiLCJmaWVsZF9zZXhwXzA3OSQyIiwiZnZhbHVlXzA4MSIsIm1lc3NhZ2VfMDc1IiwidGVybV8wNzMiLCJzdWJfaWRfMDcxIiwic2V4cF9vZl9leGFtcGxlIiwibWVzc2FnZV8wOTMiLCJ0ZXJtXzA5MSIsInN1Yl9pZF8wODkiLCJhcmdfMDk0IiwiYm5kc18wODgiLCJhcmdfMDkyIiwiYm5kc18wODgkMCIsImFyZ18wOTAiLCJibmRzXzA4OCQxIiwiZXhhbXBsZV9vZl95b2pzb24iLCJmaWVsZF95b2pzb25zIiwic3ViX2lkX2ZpZWxkIiwidGVybV9maWVsZCIsIm1lc3NhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwiZnZhbHVlJDEiLCJtZXNzYWdlX3ZhbHVlIiwidGVybV92YWx1ZSIsInN1Yl9pZF92YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlIiwidl9tZXNzYWdlIiwidl90ZXJtIiwidl9zdWJfaWQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsInBwX3BhdF9zdWJfZm9ybV9pZCIsInNob3dfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3NleHAiLCJzZXhwXzA5OCIsInNleHBfb2ZfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3lvanNvbiIsInlvanNvbl9vZl9wYXRfc3ViX2Zvcm1faWQiLCJwcF9mb3JtX2lkIiwic2hvd19mb3JtX2lkIiwiZm9ybV9pZF9vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEyMCIsImFyZzBfMTIxIiwicmVzMF8xMjIiLCJzZXhwX2FyZ3NfMTA1IiwiYXJnMF8xMDYiLCJyZXMwXzEwNyIsInNleHBfYXJnc18xMTAiLCJhcmcwXzExMSIsInJlczBfMTEyIiwic2V4cF9hcmdzXzExNSIsImFyZzBfMTE2IiwicmVzMF8xMTciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnMF8xMjYiLCJyZXMwXzEyNyIsInNleHBfb2ZfZm9ybV9pZCIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwiYXJnMF8xMzIiLCJyZXMwXzEzMyIsImFyZzBfMTM0IiwicmVzMF8xMzUiLCJhcmcwXzEzNiIsInJlczBfMTM3IiwiZm9ybV9pZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZm9ybV9pZCIsInBwX2Zvcm0iLCJzaG93X2Zvcm0iLCJ4JDAiLCJhMSIsIngkMSIsInNlcCIsImZvcm1fb2Zfc2V4cCIsInNleHBfMTM5IiwiZmllbGRfc2V4cHNfMTQwIiwiaWRfMTQxIiwic3ludGFjdGljX2Zvcm1fMTQzIiwiZXhwYW5kYWJsZV9pZF8xNDUiLCJleHBsYW5hdGlvbl8xNDciLCJleGFtcGxlc18xNDkiLCJkdXBsaWNhdGVzXzE1MSIsImV4dHJhXzE1MiIsInNleHBfMTM5JDAiLCJmaWVsZF9zZXhwc18xNTUiLCJmaWVsZF9uYW1lXzE1MyIsInRhaWxfMTY4IiwiZmllbGRfc2V4cF8xNTQkNSIsImZpZWxkX3NleHBfMTU0IiwieF8xNjkiLCJmaWVsZF9zZXhwXzE1NCQwIiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU0JDEiLCJmdmFsdWVfMTY2IiwiZmllbGRfc2V4cF8xNTQkMiIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NCQzIiwic2V4cF8xNjIiLCJhcmcxXzE1OSIsImFyZzBfMTU4IiwicmVzMF8xNjAiLCJyZXMxXzE2MSIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NCQ0IiwiZnZhbHVlXzE1NiIsImV4YW1wbGVzXzE1MCIsImV4cGxhbmF0aW9uXzE0OCIsImV4cGFuZGFibGVfaWRfMTQ2Iiwic3ludGFjdGljX2Zvcm1fMTQ0IiwiaWRfMTQyIiwic2V4cF9vZl9mb3JtIiwiZXhhbXBsZXNfMTgzIiwiZXhwbGFuYXRpb25fMTgxIiwiZXhwYW5kYWJsZV9pZF8xNzUiLCJzeW50YWN0aWNfZm9ybV8xNzMiLCJpZF8xNzEiLCJhcmdfMTg0IiwiYm5kc18xNzAiLCJhcmdfMTgyIiwiYm5kc18xNzAkMCIsImFyZzFfMTc4IiwiYXJnMF8xNzciLCJyZXMwXzE3OSIsInJlczFfMTgwIiwiYXJnXzE3NiIsImJuZHNfMTcwJDEiLCJhcmdfMTc0IiwiYm5kc18xNzAkMiIsImFyZ18xNzIiLCJibmRzXzE3MCQzIiwiZm9ybV9vZl95b2pzb24iLCJpZF9maWVsZCIsInN5bnRhY3RpY19mb3JtX2ZpZWxkIiwiZXhwYW5kYWJsZV9pZF9maWVsZCIsImV4cGxhbmF0aW9uX2ZpZWxkIiwiZXhhbXBsZXNfZmllbGQiLCJ2MSIsInYxJDAiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZXhhbXBsZXNfdmFsdWUiLCJleHBsYW5hdGlvbl92YWx1ZSIsImV4cGFuZGFibGVfaWRfdmFsdWUiLCJzeW50YWN0aWNfZm9ybV92YWx1ZSIsImlkX3ZhbHVlIiwieW9qc29uX29mX2Zvcm0iLCJ2X2V4YW1wbGVzIiwidl9leHBsYW5hdGlvbiIsInZfZXhwYW5kYWJsZV9pZCIsInZfc3ludGFjdGljX2Zvcm0iLCJ2X2lkIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsInBwX2dyb3VwX2lkIiwic2hvd19ncm91cF9pZCIsImdyb3VwX2lkX29mX3NleHAiLCJzZXhwXzE4OSIsInRhZ18xOTAiLCJzZXhwX2FyZ3NfMjA2IiwiYXJnMF8yMDciLCJyZXMwXzIwOCIsInNleHBfYXJnc18xOTEiLCJhcmcwXzE5MiIsInJlczBfMTkzIiwic2V4cF9hcmdzXzE5NiIsImFyZzBfMTk3IiwicmVzMF8xOTgiLCJzZXhwX2FyZ3NfMjAxIiwiYXJnMF8yMDIiLCJyZXMwXzIwMyIsInNleHBfYXJnc18yMTEiLCJhcmcwXzIxMiIsInJlczBfMjEzIiwic2V4cF9vZl9ncm91cF9pZCIsImFyZzBfMjE0IiwicmVzMF8yMTUiLCJhcmcwXzIxNiIsInJlczBfMjE3IiwiYXJnMF8yMTgiLCJyZXMwXzIxOSIsImFyZzBfMjIwIiwicmVzMF8yMjEiLCJhcmcwXzIyMiIsInJlczBfMjIzIiwiZ3JvdXBfaWRfb2ZfeW9qc29uIiwieW9qc29uX29mX2dyb3VwX2lkIiwicHBfZ3JvdXAiLCJzaG93X2dyb3VwIiwiZ3JvdXBfb2Zfc2V4cCIsInNleHBfMjI1IiwiZmllbGRfc2V4cHNfMjI2IiwiaWRfMjI3IiwiZm9ybXNfMjI5IiwiZHVwbGljYXRlc18yMzEiLCJleHRyYV8yMzIiLCJzZXhwXzIyNSQwIiwiZmllbGRfc2V4cHNfMjM1IiwiZmllbGRfbmFtZV8yMzMiLCJ0YWlsXzI0MCIsImZpZWxkX3NleHBfMjM0JDIiLCJmaWVsZF9zZXhwXzIzNCIsInhfMjQxIiwiZmllbGRfc2V4cF8yMzQkMCIsImZ2YWx1ZV8yMzciLCJmaWVsZF9zZXhwXzIzNCQxIiwiZnZhbHVlXzIzNiIsImZvcm1zXzIzMCIsImlkXzIyOCIsInNleHBfb2ZfZ3JvdXAiLCJmb3Jtc18yNDUiLCJpZF8yNDMiLCJhcmdfMjQ2IiwiYm5kc18yNDIiLCJhcmdfMjQ0IiwiYm5kc18yNDIkMCIsImdyb3VwX29mX3lvanNvbiIsImZvcm1zX2ZpZWxkIiwiZm9ybXNfdmFsdWUiLCJ5b2pzb25fb2ZfZ3JvdXAiLCJ2X2Zvcm1zIiwicHAiLCJzaG93IiwidF9vZl9zZXhwIiwic2V4cF8yNDgiLCJmaWVsZF9zZXhwc18yNDkiLCJncm91cF9pZF8yNTAiLCJmb3JtX2lkXzI1MiIsImFic3RyYWN0XzI1NCIsImV4cGxhbmF0aW9uXzI1NiIsImV4YW1wbGVzXzI1OCIsImR1cGxpY2F0ZXNfMjYwIiwiZXh0cmFfMjYxIiwic2V4cF8yNDgkMCIsImZpZWxkX3NleHBzXzI2NCIsImZpZWxkX25hbWVfMjYyIiwidGFpbF8yODIiLCJmaWVsZF9zZXhwXzI2MyQ1IiwiZmllbGRfc2V4cF8yNjMiLCJ4XzI4MyIsImZpZWxkX3NleHBfMjYzJDAiLCJmdmFsdWVfMjgwIiwiZmllbGRfc2V4cF8yNjMkMSIsImZ2YWx1ZV8yNzkiLCJmaWVsZF9zZXhwXzI2MyQyIiwiZnZhbHVlXzI2NiIsImZpZWxkX3NleHBfMjYzJDMiLCJmdmFsdWVfMjY1IiwiZmllbGRfc2V4cF8yNjMkNCIsImFyZzFfMjc0IiwiYXJnMF8yNzMiLCJyZXMwXzI3NSIsInNleHBfMjcxIiwiYXJnMV8yNjgiLCJhcmcwXzI2NyIsInJlczBfMjY5IiwicmVzMV8yNzAiLCJyZXMxXzI3NiIsImZ2YWx1ZV8yNzgiLCJleGFtcGxlc18yNTkiLCJleHBsYW5hdGlvbl8yNTciLCJhYnN0cmFjdF8yNTUiLCJmb3JtX2lkXzI1MyIsImdyb3VwX2lkXzI1MSIsInNleHBfb2ZfdCIsImV4YW1wbGVzXzMwMSIsImV4cGxhbmF0aW9uXzI5OSIsImFic3RyYWN0XzI4OSIsImZvcm1faWRfMjg3IiwiZ3JvdXBfaWRfMjg1IiwiYXJnXzMwMiIsImJuZHNfMjg0IiwiYXJnXzMwMCIsImJuZHNfMjg0JDAiLCJhcmcxXzI5NiIsImFyZzBfMjk1IiwicmVzMF8yOTciLCJhcmcxXzI5MiIsImFyZzBfMjkxIiwicmVzMF8yOTMiLCJyZXMxXzI5NCIsInJlczFfMjk4IiwiYXJnXzI5MCIsImJuZHNfMjg0JDEiLCJhcmdfMjg4IiwiYm5kc18yODQkMiIsImFyZ18yODYiLCJibmRzXzI4NCQzIiwidF9vZl95b2pzb24iLCJncm91cF9pZF9maWVsZCIsImZvcm1faWRfZmllbGQiLCJhYnN0cmFjdF9maWVsZCIsImFic3RyYWN0X3ZhbHVlIiwiZm9ybV9pZF92YWx1ZSIsImdyb3VwX2lkX3ZhbHVlIiwieW9qc29uX29mX3QiLCJ2X2Fic3RyYWN0Iiwidl9mb3JtX2lkIiwidl9ncm91cF9pZCIsInRvX2dyb3VwIiwiZXhhbXBsZXMiLCJleHBsYW5hdGlvbiIsImNvbG9yaW5ncyIsInN5bnRhY3RpY19mb3JtIiwiZm9ybV9pZCIsImdyb3VwX2lkIiwibWtfMSIsIm1rX2Zvcm0iLCJwIiwibWtfMiIsImlkXzIiLCJuMiIsImlkXzEiLCJuMSIsInAyIiwicDEiLCJta18zIiwiaWRfMyIsIm4zIiwicDMiLCJ2YXJfdHlwX3BhdCIsInZhcl90eXBfcGF0cyIsImNvZGUiLCJlcXVpdiIsInByb21wdCIsImRlZmF1bHQkMCIsIm91dHB1dF9oZWFkZXIiLCJtb2R1bGVfbmFtZSIsImV4ZXJjaXNlIiwiZmlsZW5hbWUiLCJleGVyY2lzZXMiLCJlcnJvcl9zb3VyY2VfMDQ4IiwiZXJyb3Jfc291cmNlXzA3NSIsImVycm9yX3NvdXJjZV8xMTQiLCJlcnJvcl9zb3VyY2VfMTQwIiwiZXJyb3Jfc291cmNlXzE1MyIsImVycm9yX3NvdXJjZV8xNjQiLCJpbml0IiwiaW5pdCQwIiwicHBfZmVlZGJhY2tfb3B0aW9uIiwic2hvd19mZWVkYmFja19vcHRpb24iLCJmZWVkYmFja19vcHRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZmVlZGJhY2tfb3B0aW9uIiwiZmVlZGJhY2tfb3B0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9mZWVkYmFja19vcHRpb24iLCJwcF9leGFtcGxlX21vZGVsIiwic2hvd19leGFtcGxlX21vZGVsIiwiZXhhbXBsZV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJzdWJfaWRfMDA4IiwiZmVlZGJhY2tfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJzZXhwXzAwNiQwIiwiZmllbGRfc2V4cHNfMDE2IiwiZmllbGRfbmFtZV8wMTQiLCJ0YWlsXzAyMSIsImZpZWxkX3NleHBfMDE1JDIiLCJmaWVsZF9zZXhwXzAxNSIsInhfMDIyIiwiZmllbGRfc2V4cF8wMTUkMCIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNSQxIiwiZnZhbHVlXzAxNyIsImZlZWRiYWNrXzAxMSIsInN1Yl9pZF8wMDkiLCJzZXhwX29mX2V4YW1wbGVfbW9kZWwiLCJmZWVkYmFja18wMjYiLCJzdWJfaWRfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDIzIiwiYXJnXzAyNSIsImJuZHNfMDIzJDAiLCJleGFtcGxlX21vZGVsX29mX3lvanNvbiIsImZlZWRiYWNrX2ZpZWxkIiwiZmVlZGJhY2tfdmFsdWUiLCJ5b2pzb25fb2ZfZXhhbXBsZV9tb2RlbCIsInZfZmVlZGJhY2siLCJwcF9mb3JtX21vZGVsIiwic2hvd19mb3JtX21vZGVsIiwiZm9ybV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMjkiLCJmaWVsZF9zZXhwc18wMzAiLCJncm91cF8wMzEiLCJmb3JtXzAzMyIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzAzNSIsImV4YW1wbGVzXzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMjkkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNTAiLCJmaWVsZF9zZXhwXzA0MiQ0IiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA1MSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ3IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDYiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZnZhbHVlXzA0NSIsImZpZWxkX3NleHBfMDQyJDMiLCJmdmFsdWVfMDQ0IiwiZXhhbXBsZXNfMDM4IiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfMDM2IiwiZm9ybV8wMzQiLCJncm91cF8wMzIiLCJzZXhwX29mX2Zvcm1fbW9kZWwiLCJleGFtcGxlc18wNTkiLCJleHBsYW5hdGlvbl9mZWVkYmFja18wNTciLCJmb3JtXzA1NSIsImdyb3VwXzA1MyIsImFyZ18wNjAiLCJibmRzXzA1MiIsImFyZ18wNTgiLCJibmRzXzA1MiQwIiwiYXJnXzA1NiIsImJuZHNfMDUyJDEiLCJhcmdfMDU0IiwiYm5kc18wNTIkMiIsImZvcm1fbW9kZWxfb2ZfeW9qc29uIiwiZ3JvdXBfZmllbGQiLCJmb3JtX2ZpZWxkIiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfZmllbGQiLCJleHBsYW5hdGlvbl9mZWVkYmFja192YWx1ZSIsImZvcm1fdmFsdWUiLCJncm91cF92YWx1ZSIsInlvanNvbl9vZl9mb3JtX21vZGVsIiwidl9leHBsYW5hdGlvbl9mZWVkYmFjayIsInZfZm9ybSIsInZfZ3JvdXAiLCJwcF9ncm91cF9tb2RlbCIsInNob3dfZ3JvdXBfbW9kZWwiLCJncm91cF9tb2RlbF9vZl9zZXhwIiwic2V4cF8wNjIiLCJmaWVsZF9zZXhwc18wNjMiLCJncm91cF8wNjQiLCJzZWxlY3RlZF8wNjYiLCJkdXBsaWNhdGVzXzA2OCIsImV4dHJhXzA2OSIsInNleHBfMDYyJDAiLCJmaWVsZF9zZXhwc18wNzIiLCJmaWVsZF9uYW1lXzA3MCIsInRhaWxfMDc3IiwiZmllbGRfc2V4cF8wNzEkMiIsImZpZWxkX3NleHBfMDcxIiwieF8wNzgiLCJmaWVsZF9zZXhwXzA3MSQwIiwiZnZhbHVlXzA3MyIsImZpZWxkX3NleHBfMDcxJDEiLCJmdmFsdWVfMDc0Iiwic2VsZWN0ZWRfMDY3IiwiZ3JvdXBfMDY1Iiwic2V4cF9vZl9ncm91cF9tb2RlbCIsInNlbGVjdGVkXzA4MiIsImdyb3VwXzA4MCIsImFyZ18wODMiLCJibmRzXzA3OSIsImFyZ18wODEiLCJibmRzXzA3OSQwIiwiZ3JvdXBfbW9kZWxfb2ZfeW9qc29uIiwic2VsZWN0ZWRfZmllbGQiLCJzZWxlY3RlZF92YWx1ZSIsInlvanNvbl9vZl9ncm91cF9tb2RlbCIsInZfc2VsZWN0ZWQiLCJzZXhwXzA4NSIsImZpZWxkX3NleHBzXzA4NiIsInNwZWNpZmljaXR5X29wZW5fMDg3IiwiZm9ybXNfMDg5IiwiZ3JvdXBzXzA5MSIsImR1cGxpY2F0ZXNfMDkzIiwiZXh0cmFfMDk0Iiwic2V4cF8wODUkMCIsImZpZWxkX3NleHBzXzA5NyIsImZpZWxkX25hbWVfMDk1IiwidGFpbF8xMDMiLCJmaWVsZF9zZXhwXzA5NiQzIiwiZmllbGRfc2V4cF8wOTYiLCJ4XzEwNCIsImZpZWxkX3NleHBfMDk2JDAiLCJmdmFsdWVfMTAwIiwiZmllbGRfc2V4cF8wOTYkMSIsImZ2YWx1ZV8wOTgiLCJmaWVsZF9zZXhwXzA5NiQyIiwiZnZhbHVlXzA5OSIsImdyb3Vwc18wOTIiLCJmb3Jtc18wOTAiLCJzcGVjaWZpY2l0eV9vcGVuXzA4OCIsImdyb3Vwc18xMTAiLCJmb3Jtc18xMDgiLCJzcGVjaWZpY2l0eV9vcGVuXzEwNiIsImFyZ18xMTEiLCJibmRzXzEwNSIsImFyZ18xMDkiLCJibmRzXzEwNSQwIiwiYXJnXzEwNyIsImJuZHNfMTA1JDEiLCJzcGVjaWZpY2l0eV9vcGVuX2ZpZWxkIiwiZ3JvdXBzX2ZpZWxkIiwiZ3JvdXBzX3ZhbHVlIiwic3BlY2lmaWNpdHlfb3Blbl92YWx1ZSIsInZfZ3JvdXBzIiwidl9zcGVjaWZpY2l0eV9vcGVuIiwicHBfaGlnaGxpZ2h0Iiwic2hvd19oaWdobGlnaHQiLCJoaWdobGlnaHRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwic2V4cF9vZl9oaWdobGlnaHQiLCJoaWdobGlnaHRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodCIsInBwJDAiLCJzaG93JDAiLCJ0X29mX3NleHAkMCIsInNleHBfMTI0IiwiZmllbGRfc2V4cHNfMTI1Iiwic2hvd18xMjYiLCJzaG93X2ZlZWRiYWNrXzEyOCIsImhpZ2hsaWdodF8xMzAiLCJkdXBsaWNhdGVzXzEzMiIsImV4dHJhXzEzMyIsInNleHBfMTI0JDAiLCJmaWVsZF9zZXhwc18xMzYiLCJmaWVsZF9uYW1lXzEzNCIsInRhaWxfMTQyIiwiZmllbGRfc2V4cF8xMzUkMyIsImZpZWxkX3NleHBfMTM1IiwieF8xNDMiLCJmaWVsZF9zZXhwXzEzNSQwIiwiZnZhbHVlXzEzOCIsImZpZWxkX3NleHBfMTM1JDEiLCJmdmFsdWVfMTM5IiwiZmllbGRfc2V4cF8xMzUkMiIsImZ2YWx1ZV8xMzciLCJoaWdobGlnaHRfMTMxIiwic2hvd19mZWVkYmFja18xMjkiLCJzaG93XzEyNyIsInNleHBfb2ZfdCQwIiwiaGlnaGxpZ2h0XzE0OSIsInNob3dfZmVlZGJhY2tfMTQ3Iiwic2hvd18xNDUiLCJhcmdfMTUwIiwiYm5kc18xNDQiLCJhcmdfMTQ4IiwiYm5kc18xNDQkMCIsImFyZ18xNDYiLCJibmRzXzE0NCQxIiwidF9vZl95b2pzb24kMCIsInNob3dfZmllbGQiLCJzaG93X2ZlZWRiYWNrX2ZpZWxkIiwiaGlnaGxpZ2h0X2ZpZWxkIiwiaGlnaGxpZ2h0X3ZhbHVlIiwic2hvd19mZWVkYmFja192YWx1ZSIsInNob3dfdmFsdWUiLCJ5b2pzb25fb2ZfdCQwIiwidl9oaWdobGlnaHQiLCJ2X3Nob3dfZmVlZGJhY2siLCJ2X3Nob3ciLCJwcF9oaWdobGlnaHRfYWN0aW9uIiwic2hvd19oaWdobGlnaHRfYWN0aW9uIiwiaGlnaGxpZ2h0X2FjdGlvbl9vZl9zZXhwIiwic2V4cF8xNTUiLCJ0YWdfMTU2Iiwic2V4cF9hcmdzXzE1NyIsInJlczBfMTU5Iiwic2V4cF9vZl9oaWdobGlnaHRfYWN0aW9uIiwiYXJnMF8xNjAiLCJyZXMwXzE2MSIsImhpZ2hsaWdodF9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodF9hY3Rpb24iLCJwcF9hY3Rpb24iLCJzaG93X2FjdGlvbiIsImFjdGlvbl9vZl9zZXhwIiwic2V4cF8xNjYiLCJ0YWdfMTY3Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJzZXhwX29mX2FjdGlvbiIsImFyZzBfMTcxIiwicmVzMF8xNzIiLCJhY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FjdGlvbiIsImdldF9leHBsYW5hdGlvbl9mZWVkYmFjayIsIm1vZGVsIiwiZm9ybXMiLCJnZXRfZXhhbXBsZV9mZWVkYmFjayIsImV4YW1wbGVfaWQiLCJleGFtcGxlIiwiZ2V0X2Zvcm1faW5fZ3JvdXAiLCJncm91cCIsImdldF9zZWxlY3RlZF9vcHRpb24iLCJncm91cCQwIiwic2VsZWN0ZWQiLCJzZWxlY3RlZCQwIiwiZ2V0X29wdGlvbnMiLCJnZXRfZm9ybV9hbmRfb3B0aW9ucyIsImVycm9yX3NvdXJjZV8wNDAiLCJwcF9tb2RlIiwic2hvd19tb2RlIiwibW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tb2RlIiwibW9kZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfbW9kZSIsIm1vZGVfb2Zfc3RyaW5nIiwicyIsImNhcHRpb25zXzAwOCIsInNlY29uZGFyeV9pY29uc18wMTAiLCJjb3JlXzAxMiIsImFzeW5jX2V2YWx1YXRpb25fMDE0IiwiY29udGV4dF9pbnNwZWN0b3JfMDE2IiwiaW5zdHJ1Y3Rvcl9tb2RlXzAxOCIsImJlbmNobWFya18wMjAiLCJleHBsYWluVGhpc18wMjIiLCJtb2RlXzAyNCIsImR1cGxpY2F0ZXNfMDI2IiwiZXh0cmFfMDI3IiwiZmllbGRfbmFtZV8wMjgiLCJ0YWlsXzA0MiIsImZpZWxkX3NleHBfMDI5JDkiLCJmaWVsZF9zZXhwXzAyOSIsInhfMDQzIiwiZmllbGRfc2V4cF8wMjkkMCIsImZ2YWx1ZV8wMzgiLCJmaWVsZF9zZXhwXzAyOSQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDI5JDIiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMjkkMyIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAyOSQ0IiwiZnZhbHVlXzAzNyIsImZpZWxkX3NleHBfMDI5JDUiLCJmdmFsdWVfMDM1IiwiZmllbGRfc2V4cF8wMjkkNiIsImZ2YWx1ZV8wMzkiLCJmaWVsZF9zZXhwXzAyOSQ3IiwiZnZhbHVlXzAzMyIsImZpZWxkX3NleHBfMDI5JDgiLCJmdmFsdWVfMDM2IiwibW9kZV8wMjUiLCJleHBsYWluVGhpc18wMjMiLCJiZW5jaG1hcmtfMDIxIiwiaW5zdHJ1Y3Rvcl9tb2RlXzAxOSIsImNvbnRleHRfaW5zcGVjdG9yXzAxNyIsImFzeW5jX2V2YWx1YXRpb25fMDE1IiwiY29yZV8wMTMiLCJzZWNvbmRhcnlfaWNvbnNfMDExIiwiY2FwdGlvbnNfMDA5IiwibW9kZV8wNjEiLCJleHBsYWluVGhpc18wNTkiLCJiZW5jaG1hcmtfMDU3IiwiaW5zdHJ1Y3Rvcl9tb2RlXzA1NSIsImNvbnRleHRfaW5zcGVjdG9yXzA1MyIsImFzeW5jX2V2YWx1YXRpb25fMDUxIiwiY29yZV8wNDkiLCJzZWNvbmRhcnlfaWNvbnNfMDQ3IiwiY2FwdGlvbnNfMDQ1IiwiYXJnXzA2MiIsImJuZHNfMDQ0IiwiYm5kc18wNDQkMCIsImJuZHNfMDQ0JDEiLCJibmRzXzA0NCQyIiwiYm5kc18wNDQkMyIsImFyZ18wNTIiLCJibmRzXzA0NCQ0IiwiYXJnXzA1MCIsImJuZHNfMDQ0JDUiLCJhcmdfMDQ4IiwiYm5kc18wNDQkNiIsImFyZ18wNDYiLCJibmRzXzA0NCQ3IiwiY2FwdGlvbnNfZmllbGQiLCJzZWNvbmRhcnlfaWNvbnNfZmllbGQiLCJjb3JlX2ZpZWxkIiwiYXN5bmNfZXZhbHVhdGlvbl9maWVsZCIsImNvbnRleHRfaW5zcGVjdG9yX2ZpZWxkIiwiaW5zdHJ1Y3Rvcl9tb2RlX2ZpZWxkIiwiYmVuY2htYXJrX2ZpZWxkIiwiZXhwbGFpblRoaXNfZmllbGQiLCJtb2RlX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJtb2RlX3ZhbHVlIiwiZXhwbGFpblRoaXNfdmFsdWUiLCJiZW5jaG1hcmtfdmFsdWUiLCJpbnN0cnVjdG9yX21vZGVfdmFsdWUiLCJjb250ZXh0X2luc3BlY3Rvcl92YWx1ZSIsImFzeW5jX2V2YWx1YXRpb25fdmFsdWUiLCJjb3JlX3ZhbHVlIiwic2Vjb25kYXJ5X2ljb25zX3ZhbHVlIiwiY2FwdGlvbnNfdmFsdWUiLCJ2X21vZGUiLCJ2X2V4cGxhaW5UaGlzIiwidl9iZW5jaG1hcmsiLCJ2X2luc3RydWN0b3JfbW9kZSIsInZfY29udGV4dF9pbnNwZWN0b3IiLCJ2X2FzeW5jX2V2YWx1YXRpb24iLCJ2X2NvcmUiLCJ2X3NlY29uZGFyeV9pY29ucyIsInZfY2FwdGlvbnMiLCJhcmckNCIsImJuZHMkNCIsImFyZyQ1IiwiYm5kcyQ1IiwiYXJnJDYiLCJibmRzJDYiLCJhcmckNyIsImJuZHMkNyIsImZpeF9pbnN0cnVjdG9yX21vZGUiLCJzZXR0aW5ncyIsInBwX3N0YXRlIiwic2hvd19zdGF0ZSIsInN0YXRlX29mX3NleHAiLCJzZXhwX29mX3N0YXRlIiwic3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0YXRlIiwicHBfcGVyc2lzdGVudF9zdGF0ZSIsInNob3dfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCIsInNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJzY3JhdGNoX2tleSIsInBlcnNpc3QiLCJlZGl0b3IiLCJ1bnBlcnNpc3QiLCJ6aXBwZXIkMCIsInNlcmlhbGl6ZSIsInN0YXRlIiwiZGVzZXJpYWxpemUiLCJkYXRhIiwiZGVzZXJpYWxpemVfb3B0Iiwic2V4cCIsImV4cG9ydCQwIiwiaW1wb3J0JDAiLCJleHBvcnRfaW5pdCIsIm1rX3N0YXRpY3MiLCJjdHhfaW5pdCIsInRlcm0iLCJpbmZvX21hcCIsImVycm9yX2lkcyIsImVycm9yX3NvdXJjZV8wMzEiLCJwcF9zY3JhdGNoIiwic2hvd19zY3JhdGNoIiwiYTIiLCJzY3JhdGNoX29mX3NleHAiLCJzZXhwXzAxNCIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJhcmcxXzAwMyIsImFyZzBfMDAyIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDEzIiwic2V4cF9vZl9zY3JhdGNoIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5IiwicmVzMF8wMjIiLCJyZXMxXzAyMyIsImFyZzFfMDE2IiwiYXJnMF8wMTUiLCJyZXMwXzAxNyIsInJlczFfMDE4IiwicmVzMl8wMjQiLCJzY3JhdGNoX29mX3lvanNvbiIsInYyIiwidjIkMCIsInlvanNvbl9vZl9zY3JhdGNoIiwicHBfZG9jdW1lbnRhdGlvbiIsInNob3dfZG9jdW1lbnRhdGlvbiIsImRvY3VtZW50YXRpb25fb2Zfc2V4cCIsInNleHBfMDQzIiwiYXJnMl8wMzkiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wNDAiLCJzZXhwXzAzMCIsImFyZzFfMDI3IiwiYXJnMF8wMjYiLCJyZXMwXzAyOCIsInJlczFfMDI5IiwicmVzMV8wNDEiLCJzZXhwXzAzNiIsImFyZzFfMDMzIiwiYXJnMF8wMzIiLCJyZXMxXzAzNSIsInJlczJfMDQyIiwic2V4cF9vZl9kb2N1bWVudGF0aW9uIiwiYXJnMl8wNTQiLCJhcmcxXzA1MyIsImFyZzBfMDUyIiwicmVzMF8wNTUiLCJhcmcxXzA0NSIsImFyZzBfMDQ0IiwicmVzMF8wNDYiLCJyZXMxXzA0NyIsInJlczFfMDU2IiwiYXJnMV8wNDkiLCJyZXMwXzA1MCIsInJlczFfMDUxIiwicmVzMl8wNTciLCJkb2N1bWVudGF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9kb2N1bWVudGF0aW9uIiwic2V4cF8wNTkiLCJmaWVsZF9zZXhwc18wNjAiLCJzZXR0aW5nc18wNjEiLCJzY3JhdGNoXzA2MyIsImRvY3VtZW50YXRpb25fMDY1IiwiZHVwbGljYXRlc18wNjciLCJleHRyYV8wNjgiLCJzZXhwXzA1OSQwIiwiZmllbGRfc2V4cHNfMDcxIiwiZmllbGRfbmFtZV8wNjkiLCJmaWVsZF9zZXhwXzA3MCQzIiwiZmllbGRfc2V4cF8wNzAiLCJmaWVsZF9zZXhwXzA3MCQwIiwiZmllbGRfc2V4cF8wNzAkMSIsImZpZWxkX3NleHBfMDcwJDIiLCJmdmFsdWVfMDcyIiwiZG9jdW1lbnRhdGlvbl8wNjYiLCJzY3JhdGNoXzA2NCIsInNldHRpbmdzXzA2MiIsImRvY3VtZW50YXRpb25fMDg0Iiwic2NyYXRjaF8wODIiLCJzZXR0aW5nc18wODAiLCJhcmdfMDg1IiwiYm5kc18wNzkkMSIsInNldHRpbmdzX2ZpZWxkIiwic2NyYXRjaF9maWVsZCIsImRvY3VtZW50YXRpb25fZmllbGQiLCJkb2N1bWVudGF0aW9uX3ZhbHVlIiwic2NyYXRjaF92YWx1ZSIsInNldHRpbmdzX3ZhbHVlIiwidl9kb2N1bWVudGF0aW9uIiwidl9zY3JhdGNoIiwidl9zZXR0aW5ncyIsImVycm9yX3NvdXJjZV8wMTQiLCJlcnJvcl9zb3VyY2VfMDQzIiwiZXJyb3Jfc291cmNlXzA2MSIsImVycm9yX3NvdXJjZV8wOTAiLCJwcF9jZWxsIiwic2hvd19jZWxsIiwiY2VsbF9vZl9zZXhwIiwic2V4cF8wMDUiLCJ0YWdfMDA2Iiwic2V4cF9hcmdzXzAwNyIsInJlczBfMDA5Iiwic2V4cF9vZl9jZWxsIiwiYXJnMF8wMTAiLCJjZWxsX29mX3lvanNvbiIsInlvanNvbl9vZl9jZWxsIiwidGFnXzAxNyIsInNleHBfYXJnc18wMTgiLCJyZXMwXzAyMCIsInNleHBfYXJnc18wMjgiLCJhcmcxXzAzMCIsImFyZzBfMDI5IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInNleHBfYXJnc18wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInJlczFfMDQwIiwicHBfY2VsbCQwIiwic2hvd19jZWxsJDAiLCJjZWxsX29mX3NleHAkMCIsInNleHBfMDQ1IiwidGFnXzA0NiIsInNleHBfb2ZfY2VsbCQwIiwiY2VsbF9vZl95b2pzb24kMCIsInlvanNvbl9vZl9jZWxsJDAiLCJzZXhwXzA2MyIsInRhZ18wNjQiLCJzZXhwX2FyZ3NfMDY1IiwiYXJnMF8wNjYiLCJyZXMwXzA2NyIsInNleHBfYXJnc18wNzUiLCJhcmcxXzA3NyIsImFyZzBfMDc2IiwicmVzMF8wNzgiLCJyZXMxXzA3OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsInBwJDEiLCJzaG93JDEiLCJhMSQwIiwiYTEkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wOTIiLCJ0YWdfMDkzIiwic2V4cF9hcmdzXzA5NCIsImFyZzFfMDk2IiwiYXJnMF8wOTUiLCJyZXMwXzA5NyIsInJlczFfMDk4Iiwic2V4cF9hcmdzXzExMyIsImFyZzJfMTE2IiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczFfMTE4IiwicmVzMl8xMTkiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5Iiwic2V4cF8xMDYiLCJhcmcxXzEwMyIsImFyZzBfMTAyIiwicmVzMF8xMDQiLCJyZXMxXzEwNSIsInJlczFfMTEwIiwic2V4cF9vZl90JDEiLCJhcmcxXzEyMSIsImFyZzBfMTIwIiwicmVzMV8xMjMiLCJhcmcxXzEyOSIsInJlczBfMTMwIiwiYXJnMV8xMjUiLCJhcmcwXzEyNCIsInJlczBfMTI2IiwicmVzMV8xMjciLCJyZXMxXzEzMSIsImFyZzJfMTM0IiwiYXJnMV8xMzMiLCJyZXMxXzEzNiIsInJlczJfMTM3IiwidF9vZl95b2pzb24kMSIsInYxJDMiLCJ2MSQ0IiwidjEkMSIsInYxJDIiLCJ5b2pzb25fb2ZfdCQxIiwidXBkYXRlX3NjcmF0Y2hfc3RhdGUiLCJmIiwiZWRpdG9ycyIsInNsaWRlcyIsInNsaWRlcyQwIiwiZ2V0X2N0eF9pbml0IiwiZ2V0X2Vudl9pbml0IiwiaWR4Iiwia2V5Iiwia2V5JDAiLCJlZGl0b3IkMCIsImxvb2t1cF9zdGF0aWNzIiwic2VsZWN0aW9uIiwic3RhdGljcyIsInBvcyIsImtleSQxIiwiZ2V0X3NwbGljZWRfZWxhYnMiLCJkIiwiaW5mb19tYXAkMCIsInRlcm0kMCIsImQkMCIsInNldF9pbnN0cnVjdG9yX21vZGUiLCJpbnN0cnVjdG9yX21vZGUiLCJzcGVjcyIsInJlc2V0X250aF9zbGlkZSIsImluaXRfZWRpdG9ycyIsImluaXRfbnRoIiwicmVzZXRfbmFtZWRfc2xpZGUiLCJpbml0X25hbWUiLCJyZXNldF9jdXJyZW50IiwibiQwIiwiaW1wb3J0X2N1cnJlbnQiLCJkYXRhJDAiLCJzd2l0Y2hfZXhhbXBsZV9zbGlkZSIsImN1ciIsImdldF9zZWxlY3RlZF9lZGl0b3IiLCJtb2RlbF9yZXN1bHRzIiwic2VsZWN0aW9uJDAiLCJyZXN1bHQiLCJzZWxlY3Rpb24kMSIsInNlbGVjdGlvbiQyIiwic2VsZWN0aW9uJDMiLCJwdXRfc2VsZWN0ZWRfZWRpdG9yIiwicmVzdWx0JDAiLCJyZXN1bHRzIiwicmVzdWx0cyQwIiwic2xpZGVzJDEiLCJzbGlkZXMkMiIsInJlc3VsdHMkMSIsInJlc3VsdHMkMiIsInNwZWMiLCJleGVyY2lzZSQwIiwicmVzdWx0cyQzIiwicmVzdWx0cyQ0IiwidXBkYXRlX3NlbGVjdGVkX2VkaXRvciIsImVkaXRvcnMkMCIsImUiLCJnZXRfY3Vyc29yX2luZm8iLCJzdGF0aWNzJDAiLCJwcF91cGRhdGUiLCJzaG93X3VwZGF0ZSIsImEzIiwiYTIkMCIsInVwZGF0ZV9vZl9zZXhwIiwiYXJnMV8wMzQiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzAxMiIsImFyZzJfMDE1IiwiYXJnMV8wMTQiLCJhcmcwXzAxMyIsInJlczBfMDE2IiwicmVzMV8wMTciLCJyZXMyXzAxOCIsInNleHBfYXJnc18wMjEiLCJhcmczXzAyNSIsImFyZzJfMDI0IiwiYXJnMV8wMjMiLCJhcmcwXzAyMiIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsInJlczNfMDI5Iiwic2V4cF9vZl91cGRhdGUiLCJyZXMwXzAzOCIsImFyZzJfMDQxIiwiYXJnMV8wNDAiLCJhcmcwXzAzOSIsInJlczBfMDQyIiwicmVzMV8wNDMiLCJyZXMyXzA0NCIsImFyZzNfMDQ4IiwiYXJnMl8wNDciLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNTAiLCJyZXMyXzA1MSIsInJlczNfMDUyIiwiYXJnMV8wNTQiLCJ1cGRhdGVfb2ZfeW9qc29uIiwidjMiLCJ2MiQxIiwidjIkMiIsInYzJDAiLCJ5b2pzb25fb2ZfdXBkYXRlIiwic2V0X3VwZGF0ZSIsImV4cGxhaW5UaGlzTW9kZWwiLCJ1IiwiYiIsImZlZWRiYWNrX29wdGlvbiIsInBvc3QiLCJwcmUiLCJmb3JtJDAiLCJmZWVkYmFjayIsImZvcm0kMSIsImZlZWRiYWNrX29wdGlvbiQwIiwiZm9ybV9pZCQwIiwiZ3JvdXBfaWQkMCIsInBvc3RfZm9ybSIsImZvcm0kMiIsInByZV9mb3JtIiwiZm9ybSQzIiwicG9zdF9leGFtcGxlIiwicHJlX2V4YW1wbGUiLCJleGFtcGxlJDAiLCJmb3JtJDQiLCJmb3JtX2lkJDEiLCJncm91cF9pZCQxIiwiZyIsInBvc3RfZ3JvdXAiLCJwcmVfZ3JvdXAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJvd19oZWlnaHRfMDA0IiwiY29sX3dpZHRoXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfd2lkdGhfMDA3Iiwicm93X2hlaWdodF8wMDUiLCJjb2xfd2lkdGhfMDIyIiwicm93X2hlaWdodF8wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInJvd19oZWlnaHRfZmllbGQiLCJjb2xfd2lkdGhfZmllbGQiLCJjb2xfd2lkdGhfdmFsdWUiLCJyb3dfaGVpZ2h0X3ZhbHVlIiwidl9jb2xfd2lkdGgiLCJ2X3Jvd19oZWlnaHQiLCJjbGlwYm9hcmRfc2hpbV9pZCIsImdldF9lbGVtX2J5X2lkIiwiZG9jIiwiZ2V0X2NoaWxkX3dpdGhfY2xhc3MiLCJjbGFzc05hbWUiLCJzaWJsaW5nJDEiLCJzaWJsaW5nJDAiLCJkYXRlX25vdyIsInRpbWVzdGFtcCIsImdldF9rZXkiLCJjdHJsX2hlbGQiLCJzaGlmdF9oZWxkIiwiYWx0X2hlbGQiLCJtZXRhX2hlbGQiLCJudW1fY2xpY2tzIiwiaXNfZG91YmxlX2NsaWNrIiwiZG93bmxvYWRfc3RyaW5nX2ZpbGUiLCJjb250ZW50X3R5cGUiLCJjb250ZW50cyIsImJsb2IiLCJkb3dubG9hZF9qc29uIiwicmVhZF9maWxlIiwiZmlsZSIsIm9wdGlvbiIsInNldF9sb2NhbHN0b3JlIiwibG9jYWxfc3RvcmUiLCJnZXRfbG9jYWxzdG9yZSIsImNsZWFyX2xvY2Fsc3RvcmUiLCJjb25maXJtIiwibWVzc2FnZSIsImxvZyIsImZvY3VzX2NsaXBib2FyZF9zaGltIiwiY2xpcGJvYXJkX3NoaW0iLCJjb3B5Iiwic2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlIiwiY2FyZXRfZWxlbSIsIm1haW4iLCJzZXRfY3VycmVudCIsImZyYWciLCJmcmFnJDAiLCJoaXN0b3J5IiwiZ2V0X2N1cnJlbnQiLCJmcmFnbWVudF9vZl91cmwiLCJwcmVmaXgiLCJzYXZlX3NldHRpbmdzX2tleSIsInNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkiLCJzYXZlX3NjcmF0Y2hfa2V5Iiwic2F2ZV9kb2N1bWVudGF0aW9uX2tleSIsImN1cl9leGVyY2lzZV9rZXkiLCJmdWxsX2tleSIsInNhdmUiLCJ2YWx1ZSIsImxvYWQiLCJzYXZlJDAiLCJsb2FkJDAiLCJzZXJpYWxpemUkMCIsImRlc2VyaWFsaXplJDAiLCJzYXZlJDEiLCJsb2FkJDEiLCJleHBvcnQkMSIsImltcG9ydCQxIiwicHBfcGVyc2lzdGVudCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsInNleHBfb2ZfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnQiLCJ0b19wZXJzaXN0ZW50Iiwib2ZfcGVyc2lzdGVudCIsInNlcmlhbGl6ZSQxIiwic2NyYXRjaCIsImRlc2VyaWFsaXplJDEiLCJzYXZlJDIiLCJpbml0JDEiLCJsb2FkJDIiLCJleHBvcnQkMiIsImltcG9ydCQyIiwicHBfcGVyc2lzdGVudCQwIiwic2hvd19wZXJzaXN0ZW50JDAiLCJwZXJzaXN0ZW50X29mX3NleHAkMCIsInNleHBfb2ZfcGVyc2lzdGVudCQwIiwicGVyc2lzdGVudF9vZl95b2pzb24kMCIsInlvanNvbl9vZl9wZXJzaXN0ZW50JDAiLCJ0b19wZXJzaXN0ZW50JDAiLCJzdHJpbmciLCJvZl9wZXJzaXN0ZW50JDAiLCJzZXJpYWxpemUkMiIsImRlc2VyaWFsaXplJDIiLCJzYXZlJDMiLCJpbml0JDIiLCJkb2N1bWVudGF0aW9uIiwibG9hZCQzIiwiZXhwb3J0JDMiLCJpbXBvcnQkMyIsImtleXN0cmluZ19vZl9rZXkiLCJrZXlzdHJpbmdfb2YiLCJrZXlfb2Zfa2V5c3RyaW5nIiwia2V5c3RyaW5nIiwic2F2ZV9leGVyY2lzZV9rZXkiLCJzYXZlX2V4ZXJjaXNlIiwiaW5pdF9leGVyY2lzZSIsImxvYWRfZXhlcmNpc2UiLCJzYXZlJDQiLCJpbml0JDMiLCJsb2FkJDQiLCJmaXJzdF9zcGVjIiwiZmlyc3Rfa2V5IiwicHJlcF9leGVyY2lzZV9leHBvcnQiLCJzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0IiwiZXhwb3J0JDQiLCJpbXBvcnQkNCIsImV4ZXJjaXNlX2V4cG9ydCIsInBlcnNpc3RlbnRfc3RhdGUiLCJzcGVjJDAiLCJlcnJvcl9zb3VyY2VfMDIyIiwicHBfdGltZXN0YW1wIiwic2hvd190aW1lc3RhbXAiLCJ0aW1lc3RhbXBfb2ZfeW9qc29uIiwieW9qc29uX29mX3RpbWVzdGFtcCIsInRpbWVzdGFtcF9vZl9zZXhwIiwic2V4cF9vZl90aW1lc3RhbXAiLCJwcF91aV9zdGF0ZSIsInNob3dfdWlfc3RhdGUiLCJ1aV9zdGF0ZV9vZl95b2pzb24iLCJmb250X21ldHJpY3NfZmllbGQiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfZmllbGQiLCJtb3VzZWRvd25fZmllbGQiLCJhY3RpdmVfZWRpdG9yX2ZpZWxkIiwiYWN0aXZlX2VkaXRvcl92YWx1ZSIsIm1vdXNlZG93bl92YWx1ZSIsInNob3dfYmFja3BhY2tfdGFyZ2V0c192YWx1ZSIsImZvbnRfbWV0cmljc192YWx1ZSIsInlvanNvbl9vZl91aV9zdGF0ZSIsInZfYWN0aXZlX2VkaXRvciIsInZfbW91c2Vkb3duIiwidl9zaG93X2JhY2twYWNrX3RhcmdldHMiLCJ2X2ZvbnRfbWV0cmljcyIsInVpX3N0YXRlX29mX3NleHAiLCJzZXhwXzAwMyIsImZpZWxkX3NleHBzXzAwNCIsImZvbnRfbWV0cmljc18wMDUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfMDA3IiwibW91c2Vkb3duXzAwOSIsImFjdGl2ZV9lZGl0b3JfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDE3IiwiZmllbGRfbmFtZV8wMTUiLCJ0YWlsXzAyNCIsImZpZWxkX3NleHBfMDE2JDQiLCJmaWVsZF9zZXhwXzAxNiIsInhfMDI1IiwiZmllbGRfc2V4cF8wMTYkMCIsImZ2YWx1ZV8wMjAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZnZhbHVlXzAxOSIsImZpZWxkX3NleHBfMDE2JDIiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMyIsImFjdGl2ZV9lZGl0b3JfMDEyIiwibW91c2Vkb3duXzAxMCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wMDgiLCJmb250X21ldHJpY3NfMDA2Iiwic2V4cF9vZl91aV9zdGF0ZSIsImFjdGl2ZV9lZGl0b3JfMDMzIiwibW91c2Vkb3duXzAzMSIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wMjkiLCJmb250X21ldHJpY3NfMDI3IiwiYXJnXzAzNCIsImJuZHNfMDI2IiwiYXJnXzAzMiIsImJuZHNfMDI2JDAiLCJhcmdfMDMwIiwiYm5kc18wMjYkMSIsImFyZ18wMjgiLCJibmRzXzAyNiQyIiwidWlfc3RhdGVfaW5pdCIsImN1dG9mZiIsImJsYW5rIiwibG9hZF9lZGl0b3JzIiwic2F2ZV9lZGl0b3JzIiwiaW5pdF9tb2RlbCIsInVpX3N0YXRlIiwic2F2ZV9hbmRfcmV0dXJuIiwicmVzZXQiLCJuZXdfbW9kZWwiLCJlcnJvcl9zb3VyY2VfMDMyIiwiZXJyb3Jfc291cmNlXzA0NyIsImVycm9yX3NvdXJjZV8wNTgiLCJlcnJvcl9zb3VyY2VfMDc2IiwiZXJyb3Jfc291cmNlXzA4MCIsImVycm9yX3NvdXJjZV8wOTEiLCJlcnJvcl9zb3VyY2VfMTA5IiwiZXJyb3Jfc291cmNlXzI1MCIsInBwX2V2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uIiwic2hvd19ldmFsdWF0aW9uX3NldHRpbmdzX2FjdGlvIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfIiwic2V4cF9vZl9ldmFsdWF0aW9uX3NldHRpbmdzX2FjIiwiZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb25fb2ZfJDAiLCJ5b2pzb25fb2ZfZXZhbHVhdGlvbl9zZXR0aW5nc18iLCJwcF9zZXR0aW5nc19hY3Rpb24iLCJzaG93X3NldHRpbmdzX2FjdGlvbiIsInNldHRpbmdzX2FjdGlvbl9vZl9zZXhwIiwic2V4cF8wMDkiLCJ0YWdfMDEwIiwic2V4cF9hcmdzXzAxMSIsImFyZzBfMDEyIiwicmVzMF8wMTMiLCJzZXhwX2FyZ3NfMDE2IiwiYXJnMF8wMTciLCJyZXMwXzAxOCIsInJlczBfMDIzIiwic2V4cF9vZl9zZXR0aW5nc19hY3Rpb24iLCJyZXMwXzAyNyIsInNldHRpbmdzX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2V0dGluZ3NfYWN0aW9uIiwicHBfc3RlcHBlcl9hY3Rpb24iLCJzaG93X3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2Zfc2V4cCIsInNleHBfMDM0IiwidGFnXzAzNSIsInNleHBfYXJnc18wMzYiLCJzZXhwX29mX3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBwZXJfYWN0aW9uIiwicHBfYWdlbnQiLCJzaG93X2FnZW50IiwiYWdlbnRfb2Zfc2V4cCIsInNleHBfMDQ0Iiwic2V4cF9vZl9hZ2VudCIsImFnZW50X29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudCIsInBwX2FnZW50X2FjdGlvbiIsInNob3dfYWdlbnRfYWN0aW9uIiwiYWdlbnRfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA0OSIsInRhZ18wNTAiLCJzZXhwX2FyZ3NfMDUxIiwicmVzMF8wNTMiLCJzZXhwX29mX2FnZW50X2FjdGlvbiIsImFyZzBfMDU0IiwiYWdlbnRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudF9hY3Rpb24iLCJwcF9zZXRfbWV0YSIsInNob3dfc2V0X21ldGEiLCJzZXRfbWV0YV9vZl9zZXhwIiwic2V4cF8wNjAiLCJ0YWdfMDYxIiwic2V4cF9hcmdzXzA2MiIsInNleHBfYXJnc18wNjciLCJhcmcwXzA2OCIsInJlczBfMDY5Iiwic2V4cF9vZl9zZXRfbWV0YSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V0X21ldGFfb2ZfeW9qc29uIiwieW9qc29uX29mX3NldF9tZXRhIiwicHBfYmVuY2htYXJrX2FjdGlvbiIsInNob3dfYmVuY2htYXJrX2FjdGlvbiIsImJlbmNobWFya19hY3Rpb25fb2Zfc2V4cCIsInNleHBfMDc3Iiwic2V4cF9vZl9iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYmVuY2htYXJrX2FjdGlvbiIsInBwX2VkaXRvcl9hY3Rpb24iLCJzaG93X2VkaXRvcl9hY3Rpb24iLCJlZGl0b3JfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA4MiIsInRhZ18wODMiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMF8wODUiLCJzZXhwX29mX2VkaXRvcl9hY3Rpb24iLCJhcmcwXzA4NyIsInJlczBfMDg4IiwiZWRpdG9yX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZWRpdG9yX2FjdGlvbiIsInBwX2NlbGxfYWN0aW9uIiwic2hvd19jZWxsX2FjdGlvbiIsImNlbGxfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA5MyIsInRhZ18wOTQiLCJzZXhwX2FyZ3NfMDk1IiwiYXJnMF8wOTYiLCJzZXhwX2FyZ3NfMTAwIiwiYXJnMF8xMDEiLCJyZXMwXzEwMiIsInNleHBfb2ZfY2VsbF9hY3Rpb24iLCJhcmcwXzEwMyIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJjZWxsX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2VsbF9hY3Rpb24iLCJhMCQ1IiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTAkOSIsImEwJDEwIiwiYTAkMTEiLCJhMCQxMiIsImEwJDEzIiwiYTAkMTQiLCJhMCQxNSIsInNleHBfMTExIiwidGFnXzExMiIsInNleHBfYXJnc18xNjMiLCJhcmcwXzE2NCIsInJlczBfMTY1Iiwic2V4cF9hcmdzXzE4OCIsImFyZzBfMTg5IiwicmVzMF8xOTAiLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsInNleHBfYXJnc18xMjMiLCJyZXMwXzEyNSIsInNleHBfYXJnc18yMDUiLCJhcmcwXzIwNiIsInJlczBfMjA3IiwicmVzMF8xMTUiLCJzZXhwX2FyZ3NfMTkzIiwiYXJnMV8xOTUiLCJhcmcwXzE5NCIsInJlczBfMTk2IiwicmVzMV8xOTciLCJzZXhwX2FyZ3NfMTQ4IiwiYXJnMF8xNDkiLCJyZXMwXzE1MCIsInNleHBfYXJnc18xNTgiLCJhcmcwXzE1OSIsInNleHBfYXJnc18xMzMiLCJzZXhwX2FyZ3NfMTUzIiwiYXJnMF8xNTQiLCJyZXMwXzE1NSIsInNleHBfYXJnc18xNDMiLCJhcmcwXzE0NCIsInJlczBfMTQ1Iiwic2V4cF9hcmdzXzE3MyIsImFyZzBfMTc0IiwicmVzMF8xNzUiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzgiLCJhcmcwXzE3OSIsInJlczBfMTgwIiwic2V4cF9hcmdzXzEyOCIsImFyZzBfMTI5Iiwic2V4cF9hcmdzXzEzOCIsImFyZzBfMTM5IiwicmVzMF8xNDAiLCJhcmcwXzIwOCIsInJlczBfMjA5IiwiYXJnMF8yMTAiLCJyZXMwXzIxMSIsImFyZzBfMjI0IiwicmVzMF8yMjUiLCJhcmcwXzIyNiIsInJlczBfMjI3IiwiYXJnMF8yMjgiLCJyZXMwXzIyOSIsImFyZzBfMjMwIiwicmVzMF8yMzEiLCJhcmcwXzIzMiIsInJlczBfMjMzIiwiYXJnMF8yMzQiLCJyZXMwXzIzNSIsImFyZzBfMjM2IiwicmVzMF8yMzciLCJhcmcwXzIzOCIsInJlczBfMjM5IiwiYXJnMV8yNDEiLCJhcmcwXzI0MCIsInJlczBfMjQyIiwicmVzMV8yNDMiLCJhcmcwXzI0NCIsInJlczBfMjQ1IiwiYXJnMF8yNDYiLCJyZXMwXzI0NyIsInlvanNvbl9hcmdzJDciLCJ2MCQxNSIsInYwJDE2IiwieW9qc29uX2FyZ3MkNiIsInYwJDEzIiwidjAkMTQiLCJ5b2pzb25fYXJncyQ1IiwidjAkMTEiLCJ2MCQxMiIsInlvanNvbl9hcmdzJDEzIiwidjAkMjciLCJ2MCQyOCIsInlvanNvbl9hcmdzJDEyIiwidjAkMjUiLCJ2MCQyNiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjAkMjEiLCJ2MCQyMiIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQxNyIsInYwJDM1IiwidjAkMzYiLCJ5b2pzb25fYXJncyQxNiIsInYwJDMzIiwidjAkMzQiLCJ5b2pzb25fYXJncyQxNSIsInYwJDMxIiwidjAkMzIiLCJ5b2pzb25fYXJncyQxNCIsInYwJDI5IiwidjAkMzAiLCJzZXhwXzI1MiIsInRhZ18yNTMiLCJzZXhwX2FyZ3NfMjU5IiwiYXJnMF8yNjAiLCJyZXMwXzI2MSIsInNleHBfYXJnc18yNTQiLCJhcmcwXzI1NSIsInJlczBfMjU2IiwiYXJnMF8yNjIiLCJyZXMwXzI2MyIsImFyZzBfMjY0IiwicmVzMF8yNjUiLCJpc19lZGl0Iiwic19hY3Rpb24iLCJhIiwicmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSIsInNob3VsZF9zY3JvbGxfdG9fY2FyZXQiLCJtZXRhX2FjdGlvbiIsImFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdCIsImFnZW50X2FjdGlvbiIsInN1Z2dlc3Rpb24iLCJjb21wbGV0aW9uIiwic3RhcnQiLCJzYW1wbGVfMSIsInN0cl90b19pbnNlcnRzIiwiYyQwIiwiYWN0aW9uc18xIiwidGltZSIsImZpbmlzaCIsImVsYXBzZWQiLCJwcmludCIsImFjdGl2ZV9lZGl0b3IiLCJhY3RpdmVfZWRpdG9yJDAiLCJlbnZfaW5pdCIsImluZGV4IiwiaW5kZXgkMCIsImNpIiwiZGJfbmFtZSIsInRhYmxlX25hbWUiLCJpc19hY3Rpb25fbG9nZ2VkIiwia3Zfc3RvcmUiLCJkYiIsIndpdGhfZGIiLCJlcnJvciIsInVwZ3JhZGUiLCJhZGQiLCJnZXRfYWxsIiwiY2xlYXJfYW5kIiwiY2FsbGJhY2siLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfcyIsInNob3dfcyIsInNfb2ZfeW9qc29uIiwieW9qc29uX29mX3MiLCJzX29mX3NleHAiLCJ4XzAxMyIsInNleHBfb2ZfcyIsInhfMDE0IiwidXBkYXRlIiwidHMiLCJnZXRfYW5kIiwiZW50cmllcyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDY0IiwicHBfYWxsIiwic2hvd19hbGwiLCJhbGxfb2Zfc2V4cCIsInNldHRpbmdzXzAwNCIsImV4cGxhaW5UaGlzTW9kZWxfMDA2Iiwic2NyYXRjaF8wMDgiLCJleGVyY2lzZV8wMTAiLCJkb2N1bWVudGF0aW9uXzAxMiIsImxvZ18wMTQiLCJkdXBsaWNhdGVzXzAxNiIsImV4dHJhXzAxNyIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmdmFsdWVfMDI2IiwiZmllbGRfc2V4cF8wMTkkMSIsImZ2YWx1ZV8wMjQiLCJmaWVsZF9zZXhwXzAxOSQyIiwiZmllbGRfc2V4cF8wMTkkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE5JDUiLCJmdmFsdWVfMDIyIiwibG9nXzAxNSIsImRvY3VtZW50YXRpb25fMDEzIiwiZXhlcmNpc2VfMDExIiwic2NyYXRjaF8wMDkiLCJleHBsYWluVGhpc01vZGVsXzAwNyIsInNldHRpbmdzXzAwNSIsInNleHBfb2ZfYWxsIiwibG9nXzA0MiIsImRvY3VtZW50YXRpb25fMDQwIiwiZXhlcmNpc2VfMDM4Iiwic2NyYXRjaF8wMzYiLCJleHBsYWluVGhpc01vZGVsXzAzNCIsInNldHRpbmdzXzAzMiIsImFyZ18wNDMiLCJibmRzXzAzMSIsImFyZ18wNDEiLCJibmRzXzAzMSQwIiwiYXJnXzAzOSIsImJuZHNfMDMxJDEiLCJhcmdfMDM3IiwiYm5kc18wMzEkMiIsImFyZ18wMzUiLCJibmRzXzAzMSQzIiwiYXJnXzAzMyIsImJuZHNfMDMxJDQiLCJhbGxfb2ZfeW9qc29uIiwiZXhwbGFpblRoaXNNb2RlbF9maWVsZCIsImV4ZXJjaXNlX2ZpZWxkIiwibG9nX2ZpZWxkIiwibG9nX3ZhbHVlIiwiZXhlcmNpc2VfdmFsdWUiLCJleHBsYWluVGhpc01vZGVsX3ZhbHVlIiwieW9qc29uX29mX2FsbCIsInZfbG9nIiwidl9leGVyY2lzZSIsInZfZXhwbGFpblRoaXNNb2RlbCIsInBwX2FsbF9mMjIiLCJzaG93X2FsbF9mMjIiLCJhbGxfZjIyX29mX3NleHAiLCJmaWVsZF9zZXhwc18wNDYiLCJzZXR0aW5nc18wNDciLCJzY3JhdGNoXzA0OSIsImV4ZXJjaXNlXzA1MSIsImxvZ18wNTMiLCJkdXBsaWNhdGVzXzA1NSIsImV4dHJhXzA1NiIsInNleHBfMDQ1JDAiLCJmaWVsZF9zZXhwc18wNTkiLCJmaWVsZF9uYW1lXzA1NyIsInRhaWxfMDY2IiwiZmllbGRfc2V4cF8wNTgkNCIsImZpZWxkX3NleHBfMDU4IiwieF8wNjciLCJmaWVsZF9zZXhwXzA1OCQwIiwiZnZhbHVlXzA2MyIsImZpZWxkX3NleHBfMDU4JDEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTgkMiIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQzIiwiZnZhbHVlXzA2MSIsImxvZ18wNTQiLCJleGVyY2lzZV8wNTIiLCJzY3JhdGNoXzA1MCIsInNldHRpbmdzXzA0OCIsInNleHBfb2ZfYWxsX2YyMiIsImxvZ18wNzUiLCJleGVyY2lzZV8wNzMiLCJzY3JhdGNoXzA3MSIsInNldHRpbmdzXzA2OSIsImFyZ18wNzYiLCJibmRzXzA2OCIsImFyZ18wNzQiLCJibmRzXzA2OCQwIiwiYXJnXzA3MiIsImJuZHNfMDY4JDEiLCJhcmdfMDcwIiwiYm5kc18wNjgkMiIsImFsbF9mMjJfb2ZfeW9qc29uIiwieW9qc29uX29mX2FsbF9mMjIiLCJta19hbGwiLCJleHBvcnRfYWxsIiwiaW1wb3J0X2FsbCIsImFsbCIsImFsbF9mMjIiLCJ1cGRhdGVfc2V0dGluZ3MiLCJuZXdfbW9kZSIsImV2YWx1YXRpb24iLCJldmFsdWF0aW9uJDAiLCJleHBsYWluVGhpcyIsInNldHRpbmdzJDAiLCJleHBsYWluVGhpcyQwIiwic2V0dGluZ3MkMSIsImEkMCIsImhpZ2hsaWdodCIsImV4cGxhaW5UaGlzJDEiLCJzZXR0aW5ncyQyIiwibW9kZSIsInNjaGVkdWxlX2V2YWx1YXRpb24iLCJzY2hlZHVsZV9hY3Rpb24iLCJlbGFicyIsImV2YWxfcnMiLCJycXMiLCJycyIsIm5ld19ycyIsInN0ZXBfcnMiLCJuZXdfcnMkMCIsInVwZGF0ZV9jYWNoZWRfZGF0YSIsIm0iLCJ1cGRhdGVfc3RhdGljcyIsInVwZGF0ZV9keW5hbWljcyIsInVwZGF0ZV9zdGF0aWNzJDAiLCJtJDAiLCJwZXJmb3JtX2FjdGlvbiIsImVkIiwibW9kZWwkMCIsImVyciIsInBlcmZvcm1fYWN0aW9ucyIsImFzIiwibW9kZWwkMSIsInN3aXRjaF9zY3JhdGNoX3NsaWRlIiwic3BlY3MkMCIsImV4cG9ydF9wZXJzaXN0ZW50X2RhdGEiLCJ1aV9zdGF0ZV91cGRhdGUiLCJmb250X21ldHJpY3MiLCJhcHBseSIsImVkJDAiLCJ6aXBwZXJfaW5pdCIsImVkX3N0ciIsInokMCIsImVkaXRvcnMkMSIsImVkaXRvcnMkMiIsImUkMCIsImVkaXRvcnMkMyIsImZpbGUkMCIsImRhdGEkMSIsImVkaXRvcnMkNCIsImluc3RydWN0b3JfbW9kZSQwIiwiZWRpdG9ycyQ1IiwiYWN0aW9uJDAiLCJyIiwiciQwIiwiZXZhbHMiLCJldmFsJDAiLCJsYW0iLCJ1cF9hcnJvdyIsImRvd25fYXJyb3ciLCJsZWZ0X2Fycm93IiwicmlnaHRfYXJyb3ciLCJuYnNwIiwiendzcCIsInR5cGVBcnJvd1N5bSIsImNhc3RBcnJvd1N5bSIsImVsbGlwc2lzIiwibGVuZ3RoIiwic3RvcCIsImNvdW50IiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInRwYXRfdmlldyIsInR5X3ZpZXciLCJjbHMiLCJhbGlhc192aWV3Iiwidmlld190eSIsIm9wdCQwIiwic3RyaXBfb3V0ZXJfcGFyZW5zIiwicHJvdiIsInQyIiwidDEiLCJwYXJlbl92aWV3IiwidDAiLCJ0cyQwIiwiY3RyX3ZpZXciLCJ0c192aWV3cyIsInQwJDAiLCJ0cyQxIiwidCQwIiwibmFtZSQwIiwidCQxIiwibmFtZSQxIiwidHlwJDAiLCJjdHIiLCJ2aWV3IiwidHkiLCJwb2x5X2lkX2V4IiwidHAiLCJ0eXBmdW5fdmFyIiwidHlwZV9mdW5jdGlvbnNfYmFzaWMiLCJ0eXBmdW5hcHBfZXhwX2V4IiwiZXhwX3RmdW4iLCJ0eXBmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsImZfaWQiLCJ0eXBfaWQiLCJ0eXBmdW5hcHBfZXhwIiwidHlwZnVuYXBzIiwidHlwYW5uX3BhdF9jb2xvcmluZ19pZHMiLCJwYXRfaWQiLCJ0eXBhbm5fcGF0IiwidHlwYW5uIiwidHlwX2RlZiIsInR5YWxpYXNfYmFzZV9leHBfY29sb3JpbmdfaWRzIiwidHBhdF9pZCIsImRlZl9pZCIsInR5YWxpYXNfZXhwIiwidHlhbGlhc19leHBzIiwiZXhwbGFuYXRpb24kMCIsImV4cGxhbmF0aW9uJDEiLCJleHBsYW5hdGlvbiQyIiwiY29tbWEiLCJ0dXBsZV90eXAiLCJ0dXBsZTBfdHlwIiwidHlwX2VsZW0xIiwidHlwX2VsZW0yIiwidHVwbGUyX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtMV9pZCIsImVsZW0yX2lkIiwiY29tbWEkMCIsInR1cGxlMl90eXAiLCJ0eXBfZWxlbTEkMCIsInR5cF9lbGVtMiQwIiwidHlwX2VsZW0zIiwidHVwbGUzX3R5cF9jb2xvcmluZ19pZHMiLCJlbGVtM19pZCIsImNvbW1hJDEiLCJ0dXBsZTNfdHlwIiwidHVwbGUiLCJ0dXBsZTAiLCJ0dXBsZTIiLCJ0dXBsZTMiLCJ0dXBsZV9wYXQiLCJwYXQxIiwicGF0MiIsInR1cGxlX3BhdF9zaXplMl9jb2xvcmluZ19pZHMiLCJ0dXBsZV9wYXRfc2l6ZTIiLCJwYXQxJDAiLCJwYXQyJDAiLCJwYXQzIiwidHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyIsInR1cGxlX3BhdF9zaXplMyIsInR1cGxlX2V4YW1wbGVfMSIsInR1cGxlX2V4YW1wbGVfMiIsInR1cGxlX2V4cCIsImV4cDEiLCJleHAyIiwidHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyIsImV4cDFfaWQiLCJleHAyX2lkIiwidHVwbGVfZXhwX3NpemUyIiwiZXhwMSQwIiwiZXhwMiQwIiwiZXhwMyIsInR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMiLCJleHAzX2lkIiwidHVwbGVfZXhwX3NpemUzIiwidHVwbGVzIiwidHVwbGVzMiIsInR1cGxlczMiLCJqdW1wX3RvX3Rlc3QiLCJpbmplY3QiLCJlZmZlY3QxIiwiZWZmZWN0MiIsInJlc3VsdDEiLCJ0ZXN0X2Jhcl9zZWdtZW50IiwicmVwb3J0cyIsInN0YXR1cyIsInRlc3RfYmFyIiwidGVzdF9yZXN1bHRzIiwicGVyY2VudF92aWV3IiwicGVyY2VudGFnZSIsInRlc3RfcGVyY2VudGFnZSIsInRlc3RfdGV4dCIsInRlc3Rfc3VtbWFyeSIsInRlc3RfcmVzdWx0cyQwIiwidmlld19vZl9tYWluX3RpdGxlX2JhciIsInRpdGxlX3RleHQiLCJ0ZXN0X3RydWVfZXgiLCJ0ZXN0X2ZhbHNlX2V4IiwiZXhwX2JvZHkiLCJ0ZXN0X2V4cF9jb2xvcmluZ19pZHMiLCJib2R5X2lkIiwidGVzdF9leHAiLCJ0ZXN0cyIsImV4cGxhbmF0aW9uJDMiLCJpbnRfdHlwIiwiZmxvYXRfdHlwIiwiYm9vbF90eXAiLCJzdHJfdHlwIiwidmFyX3R5cCIsImZsb2F0JDAiLCJib29sIiwidmFyJDAiLCJleHBsYW5hdGlvbiQ2IiwiZXhwbGFuYXRpb24kNSIsImV4cGxhbmF0aW9uJDQiLCJ3aWxkX3BhdCIsImludGxpdF9wYXQiLCJmbG9hdGxpdF9wYXQiLCJib29sbGl0X3BhdCIsInN0cmxpdF9wYXQiLCJ0cml2X3BhdCIsInZhcl9wYXQiLCJjdHJfcGF0Iiwid2lsZCIsImludGxpdCIsImZsb2F0bGl0IiwiYm9vbGxpdCIsInN0cmxpdCIsInRyaXYiLCJ0cml2X2V4cCIsInRyaXZfZXhwcyIsImRlZmVycmFsX2V4cF9leCIsImRlZmVycmFsX2V4cCIsImRlZmVycmFsX2V4cHMiLCJib29sX2V4cCIsImJvb2xfZXhwcyIsImludF9leHAiLCJpbnRfZXhwcyIsImZsb2F0X2V4cCIsImZsb2F0X2V4cHMiLCJzdHJpbmdfZXhwIiwic3RyaW5nX2V4cHMiLCJ2YXJfZXhwIiwidmFyX2V4cHMiLCJjdHJfZXhwIiwidmFsdWVzIiwic29ydGVkX3ZhbHVlcyIsInkiLCJvcmRpbmFscyIsInZhbHVlcyQwIiwibWtfbm9kZSIsInNoYXBlIiwibWlkIiwicGVyZm9ybSIsIm9wIiwidHJlZSIsImdvIiwiaW50ZXJ2YWwiLCJub2RlIiwiYiQwIiwibm9kZSQwIiwibCQwIiwibCQxIiwiciQxIiwibmV3X3Jvb3QiLCJtc2ciLCJpbnNlcnQiLCJkZWxldGUkMCIsImNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uIiwic3RhY2siLCJyZXN0IiwiYiQxIiwiYSQxIiwic3RhY2skMCIsIm9yZGluYWwyIiwib3JkaW5hbDEiLCJvMiIsIm8xIiwiY21kZnVkZ2UiLCJzdGgkMCIsInkkMCIsInkkMSIsIngkMiIsInkkMiIsImR4IiwiZHkiLCJoIiwiaCQwIiwidiQwIiwic2NhbGVfY21kIiwic2NhbGVfeCIsInNjYWxlX3kiLCJkeSQwIiwiZHgkMCIsImR4JDEiLCJkeSQxIiwic2NhbGUiLCJyZXZlcnNlIiwidHJhbnNsYXRlX2NtZCIsImNtZCIsInRyYW5zbGF0ZSIsInN0cmluZ19vZl9mbGFnIiwic3RyaW5nX29mX2NvbW1hbmQiLCJkeSQyIiwiZHgkMiIsInN3ZWVwX2ZsYWciLCJsYXJnZV9hcmNfZmxhZyIsInhfYXhpc19yb3RhdGlvbiIsInJ5IiwicngiLCJhdHRycyIsInBhdGgiLCJidWZmZXIiLCJsaW5rZWRfZWRnZV9lcSIsImUxIiwiZTIiLCJjbWRfb2ZfbGlua2VkX2VkZ2UiLCJlZGdlIiwic3JjIiwiZHN0Iiwicm91bmRfY29ybmVycyIsIm1heF9yYWRpaSIsInJ4X21pbiIsInJ5X21pbiIsImNtZDIiLCJjbWQxIiwicnkkMCIsInJ4JDAiLCJjbG9ja3dpc2UiLCJyeSQxIiwicngkMSIsImNsb2Nrd2lzZSQwIiwiaXNfbGVmdF9zaWRlIiwibWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlIiwiZWRnZXMiLCJyaWdodF9lZGdlcyIsImxlZnRfZWRnZXMiLCJ0bCIsImhkIiwibWVyZ2VkX2xlZnRfZWRnZXMiLCJtZXJnZWRfcmlnaHRfZWRnZXMiLCJ2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzIiwicmVjdHMiLCJoZWlnaHQiLCJ3aWR0aCIsIm1pbiIsIm1heF94IiwibWF4X3kiLCJtYXgiLCJtaW5fbWF4IiwibWF4X21pbiIsImlzX2xlZnQxIiwiaXNfbGVmdDIiLCJzb3J0ZWRfdmVydGljYWxfc2lkZXMiLCJzZWdtZW50X3RyZWUiLCJ5cyIsIm1rX2NvbnRvdXJfZWRnZSIsInlfZHN0IiwieV9zcmMiLCJuZXdfY29udG91cl9lZGdlcyIsInVwZGF0ZWRfdHJlZSIsInVwZGF0ZWRfdHJlZSQwIiwibmV3X2NvbnRvdXJfZWRnZXMkMCIsImNvcm5lcl9yYWRpaSIsInZlcnRpY2FsX2NvbnRvdXJfZWRnZXMkMCIsImlzX3NyYzIiLCJpc19zcmMxIiwicHQxIiwicHQyIiwibmV4dCIsInByZXYiLCJ4X2RzdCIsInhfc3JjIiwieF9kc3QkMCIsInhfc3JjJDAiLCJidWlsZF9wYXRoIiwiZGl2aWRlciIsImxhYmVsbGVkX3N1bV90eXAiLCJzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZiIsInN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZSIsImxhYmVsbGVkX3N1bV90eXBzIiwic3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzIiwic3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlJDAiLCJzdmciLCJyYWlzZWRfc2hhZG93X2R4IiwicmFpc2VkX3NoYWRvd19keSIsImZ6ZXJvIiwidGlwX3dpZHRoIiwiY29uY2F2ZV9hZGoiLCJjb252ZXhfYWRqIiwic2hhZG93X2FkaiIsImNhcmV0X2FkanVzdCIsInNpZGUiLCJjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIiwic2hvcnRfdGlwX2hlaWdodCIsInN0cmV0Y2hfZHgiLCJleHRyYV90YWlsIiwiamFnZ2VkX2VkZ2VfaCIsImphZ2dlZF9lZGdlX3ciLCJzaG9ydF90aXBfd2lkdGgiLCJwb3Nfc3RyIiwiZnVkZ2UiLCJjb2RlX3N2Z19zaXplZCIsImxhc3QiLCJvcmlnaW4iLCJiYXNlX2NscyIsInBhdGhfY2xzIiwic3RoJDEiLCJhdHRyIiwic3RoJDIiLCJ0b3AiLCJsZWZ0Iiwic3R5bGUiLCJwb3NpdGlvbiIsImxlZnRfZnVkZ2UiLCJ0b3BfZnVkZ2UiLCJ3aWR0aF9mdWRnZSIsInN0aCQzIiwiaGVpZ2h0X2Z1ZGdlIiwic3RoJDQiLCJhYnNfcG9zaXRpb24iLCJjb2RlX3N2ZyIsInN0aCQ1Iiwic3RoJDYiLCJzdGgkNyIsImFic19wb3MiLCJyYWlzZWRfc2hhZG93X2ZpbHRlciIsInNvcnQiLCJzaGFkb3dfZmlsdGVyIiwiZmlsdGVycyIsInBwX3RpcF9zaGFwZSIsInNob3dfdGlwX3NoYXBlIiwidGlwX3NoYXBlX29mX3NleHAiLCJzZXhwX29mX3RpcF9zaGFwZSIsInRpcF9zaGFwZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfdGlwX3NoYXBlIiwidHJfYmwiLCJ3aXRoX2NoaWxkX2JvcmRlciIsInN0cmV0Y2hfeCIsInN0cmV0Y2hfeSIsImp1bmN0aW9uJDAiLCJkaWFnIiwianVuY3Rpb24kMSIsImRpYWckMCIsImJsX3RyIiwiaGVtaSIsInRsX2JyIiwianVuY3Rpb24iLCJicl90bCIsImxlZnRfdGlwX3BhdGgiLCJzX3giLCJzX3kiLCJqYWciLCJib3R0b21faGFsZiIsInRvcF9oYWxmIiwicmlnaHRfdGlwX3BhdGgiLCJ0aXBfbCIsInRpcF9yIiwib2Zmc2V0IiwibW9sZCIsIm1lYXN1cmVtZW50IiwiY19jbHMiLCJ0aXBfciQwIiwidGlwX2wkMCIsImlzX2NvbXBsZXRlIiwiaXNfY29uc2lzdGVudCIsImlzX2luX2J1ZmZlciIsInBsdXJhbGl0eSIsImxhYmVsJDAiLCJvZl9kZWxpbSIsIm9mX2RlbGltJDAiLCJvZl9ncm91dCIsImluZGVudCIsInNlY29uZGFyeV9pY29ucyIsInN0ciQwIiwib2Zfc2Vjb25kYXJ5Iiwib2Zfc2VnbWVudCIsImJ1ZmZlcl9pZHMiLCJub19zb3J0cyIsInNlZyIsImV4cGVjdGVkX3NvcnRzIiwib2ZfcGllY2UiLCJleHBlY3RlZF9zb3J0Iiwib2ZfdGlsZSIsImNoaWxkIiwiY2hpbGRyZW5fYW5kX3NvcnRzIiwiaG9sZXMiLCJzaW1wbGVfdmlldyIsInVuc2VsZWN0ZWQiLCJob2xlcyQwIiwib2ZfaG9sZSIsIm1lYXN1cmVkIiwiYmFja3BhY2tfc2VsX3ZpZXciLCJ4X29mZiIsInlfb2ZmIiwib3BhY2l0eSIsImhlaWdodF9oZWFkIiwiY2FuX3B1dF9kb3duIiwic2lkZSQwIiwiY2FyZXRfYWRqIiwiY2FyZXRfYWRqX3B4IiwibWF4X2Rpc3AiLCJ2ZXJ0aWNhbF9kaXNwIiwic2VsZWN0aW9uc19zdHlsZSIsInNjYWxlX2ZuIiwiaW5pdF9vcGFjaXR5IiwiaW5pdF9pZHgiLCJkeV9mbiIsImJhc2VfaGVpZ2h0IiwiaW5pdF95X29mZnNldCIsInZzIiwieV9vZmZzZXQiLCJ4X29mZnNldCIsIm5ld195X29mZnNldCIsIm5ld19pZHgiLCJuZXdfb3BhY2l0eSIsInNlbGVjdGlvbnMiLCJzZWxlY3Rpb25zX3ZpZXciLCJoZCQwIiwiam9pbmVyX3N0eWxlIiwiam9pbmVyIiwiZ2VuaWVfdmlldyIsImdlbmllX3N0eWxlIiwiY2FyZXRfYmVuZCIsImNhcmV0X3dpZHRoX3N0cmFpZ2h0IiwiY2FyZXRfd2lkdGhfYmVudCIsImNhcmV0X3BhdGgiLCJjYXJldF9iZW5kX3BhcmFtIiwiY2FyZXRfd2lkdGhfcGFyYW0iLCJsX2FkaiIsImNhcmV0X3Bvc2l0aW9uX3JhZGlpIiwicl95Iiwicl94IiwiY2hpbGRfY29sb3JzIiwiZW1wdHkiLCJnZXRfY29sb3IiLCJtYXBwaW5nIiwiY29sb3IiLCJjb2xvciQwIiwibWFwcGluZyQwIiwidG9fbGlzdCIsImJhc2VfY2xzJDIiLCJiYXNlX2NscyQxIiwiYmFzZV9jbHMkMCIsInJ1biIsImFkaiIsImxfaG9vayIsInJfaG9vayIsInNpbXBsZV9zaGFyZF9wYXRoIiwic2ltcGxlX3NoYXJkIiwic2hhcGVzIiwic2ltcGxlX3NoYXJkX3NlbGVjdGVkIiwic2ltcGxlX3NoYXJkX2luZGljYXRlZCIsImhhc19jYXJldCIsInNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkIiwiY2FyZXQiLCJzaGFyZHMiLCJuZXh0X3N0ZXBfaW5kaWNhdGVkIiwibmV4dF9zdGVwX3NoYXJkc19pbmRpY2F0ZWQiLCJ0YWtlbl9zdGVwX2luZGljYXRlZCIsInRha2VuX3N0ZXBfc2hhcmRzX2luZGljYXRlZCIsInNoYWRvd2Z1ZGdlIiwic2hhcmRzX29mX3RpbGVzIiwidGlsZXMiLCJtMiIsIm0xIiwiYmlfbGluZXMiLCJyb3dzIiwic2hhcmRfcm93cyIsImludHJhX2xpbmVzIiwicm93X3NoYXJkcyIsInJvd19zaGFyZHMkMCIsIm9yaWdpbiQwIiwidl9kZWx0YSIsImludGVyX2xpbmVzIiwiY2xzcyIsInVuaV9saW5lcyIsIm1fZmlyc3QiLCJyb3ciLCJtX2xhc3Rfb2ZfZmlyc3QiLCJsX2xpbmUiLCJtYXhfY29sIiwibV9sYXN0IiwiaG9vayIsInJfbGluZSIsIm1pbl9jb2wiLCJzaGFyZF9yb3dzJDAiLCJyb3ckMCIsIm1fZmxhc3QiLCJpbmRpY2F0ZWQiLCJyYW5nZSIsInNob3dfYmFja3BhY2tfdGFyZ2V0cyIsInRlcm1zIiwidGVybV9yYW5nZXMiLCJ0aWxlIiwic2VsX3NoYXJkX3N2ZyIsInN0YXJ0X3NoYXBlIiwic2VsX29mX3BpZWNlIiwic2hhcmRfZGF0YSIsInNlbF9vZl90aWxlIiwidyIsInN0YXJ0X3NoYXBlJDAiLCJ0aWxlX3NoYXJkcyIsInNlbF9vZl9zZWdtZW50IiwiY2hpbGRyZW5fc2hhcmRzIiwic2VsZWN0ZWRfcGllY2VzIiwicjIiLCJsMSIsImluZGljYXRlZF9waWVjZV9kZWNvIiwibmliIiwicF9yIiwicF9sIiwicmFuZ2UkMCIsInRhcmdldHMiLCJjb250YWluZXJfc2hhcmRzIiwiYnAiLCJzaWJzIiwic3VmIiwic2licyQwIiwicCQwIiwicHJvZmlsZSIsInJvb3RfdGFyZ2V0cyIsInRhcmdldHMkMCIsInRlcm1fZGVjb3JhdGlvbiIsImRlY28iLCJyX2VkZ2UiLCJsX2VkZ2UiLCJ0ZXJtX2hpZ2hsaWdodCIsImNvbG9yX2hpZ2hsaWdodHMiLCJlcnJfaG9sZXMiLCJuZXh0X3N0ZXBzIiwidGlsZXMkMCIsInRha2VuX3N0ZXAiLCJlaCIsInNlbF9zZWciLCJjYWxjdWxhdGUiLCJzdGl0Y2giLCJvdmVybGF5cyIsImNvZGVfdGV4dF92aWV3Iiwic3RhdGljc19kZWNvcyIsImdldF9nb2FsIiwidGV4dF9ib3giLCJnb2FsX3giLCJnb2FsX3kiLCJtb3VzZWRvd25fb3ZlcmxheSIsInNpZ25hbCIsImdvYWwiLCJtb3VzZWRvd25faGFuZGxlciIsImhpZ2hsaWdodHMiLCJjb2xvck1hcCIsImVkaXRfZGVjb3MiLCJvdmVybGF5cyQwIiwiY29kZV92aWV3IiwibW91c2Vkb3duX292ZXJsYXkkMCIsIm9uX21vdXNlZG93biIsInZpZXckMCIsImltZyIsInNsaWRlIiwiaGVhZGVyIiwiZW0iLCJnZXRfY29udGVudCIsImljb25fc2l6ZSIsInNpbXBsZV9pY29uIiwidHJhbnNmb3JtIiwiZHMiLCJnZWFyIiwiaW5mbyIsInN0YXIiLCJib21iIiwidW5kbyIsInJlZG8iLCJjaXJjbGVfcXVlc3Rpb24iLCJnaXRodWIiLCJiYWNrIiwiZm9yd2FyZCIsImV5ZSIsInRyYXNoIiwiaGF6ZWxudXQiLCJtYWduaWZ5IiwiY2hlc3QiLCJzcHJvdXQiLCJzZXR0aW5nIiwiY3VycmVudCIsInNlcV9iYXNpY19leHBfZXgiLCJzZXFfdGVzdF9leHBfZXgiLCJzZXFfZXhwX2NvbG9yaW5nX2lkcyIsInNlcV9leHAiLCJzZXFzIiwiZmlsbGVkX3NsaWRlcyIsIm51bV9lbXB0eSIsImluaXRfZGF0YSIsIm5hcnJhdGl2ZV9jZWxsIiwic2ltcGxlX2NlbGxfaXRlbSIsImNhcHRpb24iLCJib2xkZWQiLCJzaW1wbGVfY2VsbF92aWV3IiwiaXRlbXMiLCJyZXBvcnRfZm9vdGVyX3ZpZXciLCJ0ZXN0X3JlcG9ydF9mb290ZXJfdmlldyIsInBhbmVsIiwiY2xhc3NlcyIsInRpdGxlX2NlbGwiLCJ0aXRsZSIsInNleHBfYXJnc18wMTQiLCJhcmcxXzAxOCIsInJlczBfMDE5IiwicmVzMV8wMjAiLCJhcmcwXzAyMSIsInN0ZXBwZXJfYWN0aW9uIiwiaWR4JDAiLCJlcnJvcl9tc2ciLCJlcnIkMCIsInN0YXR1c19vZiIsInN0ZXBwZXJfdmlldyIsImluamVjdF9nbG9iYWwiLCJyZWFkX29ubHkiLCJzdGVwcGVyIiwiYnV0dG9uX2JhY2siLCJidXR0b25faGlkZV9zdGVwcGVyIiwidG9nZ2xlX3Nob3dfaGlzdG9yeSIsImV2YWxfc2V0dGluZ3MiLCJjdXJyZW50X21vZGVsIiwic3RlcCIsInN0ZXBzIiwiaGlkZGVuIiwiY2hvc2VuX3N0ZXAiLCJsaXZlX2V2YWwiLCJsb2NrZWQiLCJyZXMiLCJyZXMkMCIsImV4bl92aWV3IiwiZm9vdGVyIiwidGVzdF9zdGF0dXNfaWNvbl92aWV3IiwiaW5zdHMiLCJtcyIsInRlc3RfcmVzdWx0X2xheWVyIiwicmVzdWx0X2tpbmQiLCJ0ZXN0X292ZXJsYXkiLCJ0ZXN0X292ZXJsYXkkMCIsImVsYWIiLCJzZWxlY3QiLCJyZXN1bHRfa2V5IiwiZXhwb3J0X2J1dHRvbiIsImpzb25fZGF0YSIsImltcG9ydF9idXR0b24iLCJyZXNldF9idXR0b24iLCJjb25maXJtZWQiLCJ0eXBfYXJnIiwicmVjX3R5cF9jb2xvcmluZ19pZHMiLCJ0Ym9keV9pZCIsInBlYW5vX2V4IiwicmVjX3R5cCIsInJlYyIsInNpbmdsZSIsImFyZ19pZCIsImZuX2lkIiwiZV9hcmciLCJlX2ZuIiwiZnVuYXBwX2V4cF9leCIsImNvbmFwcF9leHBfZXgiLCJkZWZlcnJlZF9mdW5hcHBfZXhwX2V4IiwiZXhwX2Z1biIsImV4cF9hcmciLCJmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsInhfaWQiLCJmdW5hcHBfZXhwIiwiZXhwX2NvbiIsImV4cF9hcmckMCIsImNvbmFwcF9leHBfY29sb3JpbmdfaWRzIiwiY29uYXBwX2V4cCIsImV4cF9mdW4kMCIsImV4cF9kZWZlcnJhbCIsImRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaSIsImRlZmVycmVkX2lkIiwiZGVmZXJyZWRfZnVuYXBwX2V4cCIsImZ1bmFwcyIsImNvbmFwcyIsImRlZmVycmVkYXBzIiwicGF0X2NvbiIsInBhdF9hcmciLCJhcF9wYXRfY29sb3JpbmdfaWRzIiwiY29uX2lkIiwiYXBfcGF0IiwiYXAiLCJ0eXBfb3V0IiwiYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyIsInJlc3VsdF9pZCIsImFycm93X3R5cCIsInR5cF9hcmcxIiwidHlwX2FyZzIiLCJ0eXBfb3V0JDAiLCJhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyIsImFyZzFfaWQiLCJhcmcyX2lkIiwiYXJyb3cyIiwiYXJyb3czX3R5cCIsImFycm93MyIsImNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSIsImNhc2VfZXhhbXBsZV93aWxkX3R1cGxlIiwiY2FzZV9leGFtcGxlX2ludCIsImNhc2VfZXhhbXBsZV9ib29sIiwiZXhwX3NjcnV0IiwiY2FzZV9leHBfY29sb3JpbmdfaWRzIiwic2NydXRfaWQiLCJjYXNlJDAiLCJjYXNlX2V4cCIsImNhc2UkMSIsImtpbmQiLCJqdW1wX3RvIiwiZW50cnkiLCJjb250ZXh0X2VudHJ5X3ZpZXciLCJkaXZfbmFtZSIsImN0eF92aWV3IiwiY3R4IiwiY3R4X3NvcnRzX3ZpZXciLCJlcnJjIiwib2tjIiwiZGl2X2VyciIsImRpdl9vayIsImNvZGVfZXJyIiwiZXhwbGFpbl90aGlzX3RvZ2dsZSIsInNob3dfZXhwbGFpbl90aGlzIiwidG9nZ2xlX2V4cGxhaW5fdGhpcyIsImNsc192aWV3IiwiY3R4X3RvZ2dsZSIsImNvbnRleHRfaW5zcGVjdG9yIiwidGVybV92aWV3IiwiZWxlbWVudHNfbm91biIsImNvbW1vbl9lcnJfdmlldyIsInN5biIsImFuYSIsInR5cyIsInRva2VuIiwiY29tbW9uX29rX3ZpZXciLCJvayIsImFuYSQyIiwiYW5hJDMiLCJhbmEkMSIsInN5biQwIiwic3luJDEiLCJhbmEkMCIsInR5cF9va192aWV3Iiwic3VtX3R5Iiwic3VtX3R5JDAiLCJ0eV9sb29rdXAiLCJ0eXBfZXJyX3ZpZXciLCJleHBfdmlldyIsImFjdHVhbCIsImV4cGVjdGVkIiwicGF0X3ZpZXciLCJ0eXBfdmlldyIsInNlY29uZGFyeV92aWV3Iiwidmlld19vZl9pbmZvIiwid3JhcHBlciIsInN0YXR1c192aWV3Iiwic3RhdHVzJDAiLCJjbHMkMCIsInN0YXR1cyQxIiwiY2xzJDEiLCJzdGF0dXMkMiIsImNscyQyIiwiaW5zcGVjdG9yX3ZpZXciLCJlcnJjJDAiLCJjdXJzb3JfaW5mbyIsImJhcl92aWV3Iiwib3B0aW9uX3ZpZXciLCJtb2RlX21lbnUiLCJzbGlkZV9zZWxlY3QiLCJjdXJfc2xpZGUiLCJudW1fc2xpZGVzIiwibmV4dF9lZCIsInByZXZfZWQiLCJzY3JhdGNoX3ZpZXciLCJkb2N1bWVudGF0aW9uX3ZpZXciLCJlZGl0b3JfbmFtZXMiLCJwcmV2JDAiLCJuZXh0JDAiLCJpbnN0cnVjdG9yX3RvZ2dsZSIsImV4ZXJjaXNlc192aWV3IiwiY3VyX3NsaWRlJDAiLCJzY29yZV92aWV3IiwiZWFybmVkIiwicGVyY2VudGFnZV92aWV3IiwidGV4dHVhbF9zdW1tYXJ5IiwicmVwb3J0IiwidG90YWxfdGVzdHMiLCJyZXF1aXJlZCIsIm51bV90ZXN0c19tZXNzYWdlIiwibWF4X3BvaW50cyIsInN1bW1hcnlfbWVzc2FnZSIsInNjb3JlIiwidG90YWwiLCJmb3VuZCIsImJhciIsImluc3RhbmNlcyIsInN1bW1hcnkiLCJzdGF0dXNfY2xhc3MiLCJpbmRpdmlkdWFsX3JlcG9ydCIsImhpbnQiLCJpbmRpdmlkdWFsX3JlcG9ydHMiLCJjb3ZlcmFnZV9yZXN1bHRzIiwiaW5kaXZpZHVhbF9yZXBvcnQkMCIsInJlc3VsdF9zdHJpbmciLCJpbmRpdmlkdWFsX3JlcG9ydHMkMCIsImhpbnRlZF9yZXN1bHRzIiwidmlldyQxIiwic3ludGF4X3JlcG9ydCIsInRleHR1YWxfc3VtbWFyeSQwIiwiaW5kaXZpZHVhbF9yZXBvcnQkMSIsImluZGl2aWR1YWxfcmVwb3J0cyQxIiwidmlldyQyIiwidmlld19vdmVyYWxsX3Njb3JlIiwiY29udGVudF90eXBlJDEiLCJjb250ZW50X3R5cGUkMCIsInJlbmRlcl9jZWxscyIsInZpcyIsImVkcyIsInN0aXRjaGVkX2R5bmFtaWNzIiwiaGlkZGVuX2J1Z3MiLCJpbnN0cnVjdG9yIiwicHJlbHVkZSIsInVzZXJfdGVzdHMiLCJ1c2VyX2ltcGwiLCJ0ZXN0X3ZhbGlkYXRpb24iLCJncmFkaW5nX3JlcG9ydCIsImVkaXRvcl92aWV3Iiwic3ViY2FwdGlvbiIsImRpIiwidGl0bGVfdmlldyIsInByb21wdF92aWV3IiwicHJlbHVkZV92aWV3IiwiY29ycmVjdF9pbXBsX3ZpZXciLCJjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgiLCJwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4IiwicHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCQwIiwiY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4JDAiLCJzcGVjaWZpY19jdHgiLCJzcGVjaWZpY19jdHgkMCIsImV4cF9jdHhfdmlldyIsImNvcnJlY3RfaW1wbF9jdHhfdmlldyIsInlvdXJfdGVzdHNfdmlldyIsImltcGwiLCJ3cm9uZ19pbXBsX3ZpZXdzIiwibXV0YXRpb25fdGVzdGluZ192aWV3IiwieW91cl9pbXBsX3ZpZXciLCJzeW50YXhfZ3JhZGluZ192aWV3IiwiaW1wbF92YWxpZGF0aW9uX3ZpZXciLCJoaWRkZW5fdGVzdHNfdmlldyIsImltcGxfZ3JhZGluZ192aWV3IiwiaW5zdHJ1Y3Rvcl9leHBvcnQiLCJpbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3IiLCJpbnN0cnVjdG9yX2dyYWRpbmdfZXhwb3J0IiwiZG93bmxvYWRfZWRpdG9yX3N0YXRlIiwiZXhwb3J0X3N1Ym1pc3Npb24iLCJpbXBvcnRfc3VibWlzc2lvbiIsImZpbHRlcl9wYXVzZSIsInBfaWQiLCJlX2JvZHkiLCJmaWx0ZXJfZXZhbCIsImZpbHRlcl9oaWRlIiwiZmlsdGVyX2RlYnVnIiwidW5xdW90ZSIsInNlbF9pZCIsInNlbCIsImZvcmFsbF90eXBfY29sb3JpbmdfaWRzIiwiZm9yYWxsX3R5cCIsImZvcmFsbCIsImV4cGxhbmF0aW9uJDciLCJleHBsYW5hdGlvbiQ4IiwiZXhwbGFuYXRpb24kOSIsImV4cGxhbmF0aW9uJDEwIiwiZXhwbGFuYXRpb24kMTEiLCJleHBsYW5hdGlvbiQxMiIsImV4cGxhbmF0aW9uJDEzIiwiZXhwbGFuYXRpb24kMTQiLCJleHBsYW5hdGlvbiQxNSIsImV4cGxhbmF0aW9uJDE2IiwiYmFzaWNfZnVuX2V4Iiwid2lsZF9mdW5fZXgiLCJpbnRsaXRfZnVuX2V4IiwiZmxvYXRsaXRfZnVuX2V4IiwiYm9vbGxpdF9mdW5fZXgiLCJzdHJsaXRfZnVuX2V4IiwidHJpdl9mdW5fZXgiLCJsaXN0bmlsX2Z1bl9leCIsImxpc3RsaXRfZnVuX2V4IiwiY29uc19oZF9mdW5fZXgiLCJjb25zX3NuZF9mdW5fZXgiLCJ2YXJfaW5jcl9mdW5fZXgiLCJ2YXJfYW5kX2Z1bl9leCIsInR1cGxlMl9mdW5fZXgiLCJ0dXBsZTNfZnVuX2V4IiwiY3RyX2Z1bl9leCIsImFwX2Z1bl9leCIsInBhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZyIsInNmX3BhdF9pZCIsInNmX2JvZHlfaWQiLCJmdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzIiwiZnVuY3Rpb25fZXhwIiwiZnVuY3Rpb25fZW1wdHlfaG9sZV9leHBfY29sb3JpIiwiZnVuY3Rpb25fZW1wdHlfaG9sZV9leHAiLCJwYXQkMSIsImV4cCQxIiwiZnVuY3Rpb25fbXVsdGlfaG9sZV9leHBfY29sb3JpIiwiZnVuY3Rpb25fbXVsdGlfaG9sZV9leHAiLCJleHAkMiIsImZ1bmN0aW9uX3dpbGRfZXhwX2NvbG9yaW5nX2lkcyIsInBhdCQyIiwiZnVuY3Rpb25fd2lsZF9leHAiLCJwYXQkMyIsImV4cCQzIiwiZnVuY3Rpb25faW50bGl0X2V4cF9jb2xvcmluZ19pIiwiZnVuY3Rpb25faW50bGl0X2V4cCIsInBhdCQ0IiwiZXhwJDQiLCJmdW5jdGlvbl9mbG9hdGxpdF9leHBfY29sb3JpbmciLCJmdW5jdGlvbl9mbG9hdGxpdF9leHAiLCJwYXQkNSIsImV4cCQ1IiwiZnVuY3Rpb25fYm9vbGxpdF9leHBfY29sb3JpbmdfIiwiZm9ybSQ1IiwiZnVuY3Rpb25fYm9vbGxpdF9leHAiLCJwYXQkNiIsImV4cCQ2IiwiZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pIiwiZm9ybSQ2IiwiZnVuY3Rpb25fc3RybGl0X2V4cCIsInBhdCQ3IiwiZXhwJDciLCJmdW5jdGlvbl90cml2X2V4cF9jb2xvcmluZ19pZHMiLCJmb3JtJDciLCJmdW5jdGlvbl90cml2X2V4cCIsInBhdCQ4IiwiZXhwJDgiLCJmdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ18iLCJmb3JtJDgiLCJmdW5jdGlvbl9saXN0bmlsX2V4cCIsInBhdCQ5IiwiZXhwJDkiLCJmdW5jdGlvbl9saXN0bGl0X2V4cF9jb2xvcmluZ18iLCJmb3JtJDkiLCJmdW5jdGlvbl9saXN0bGl0X2V4cCIsInBhdF9oZCIsInBhdF90bCIsImV4cCQxMCIsImZ1bmN0aW9uX2NvbnNfZXhwX2NvbG9yaW5nX2lkcyIsImhkX2lkIiwidGxfaWQiLCJjb25zIiwiZm9ybSQxMCIsImZ1bmN0aW9uX2NvbnNfZXhwIiwicGF0JDEwIiwiZXhwJDExIiwiZnVuY3Rpb25fdmFyX2V4cF9jb2xvcmluZ19pZHMiLCJmb3JtJDExIiwiZnVuY3Rpb25fdmFyX2V4cCIsImV4cCQxMiIsImZ1bmN0aW9uX3R1cGxlX2V4cF9jb2xvcmluZ19pZCIsImZvcm0kMTIiLCJmdW5jdGlvbl90dXBsZV9leHAiLCJleHAkMTMiLCJmdW5jdGlvbl90dXBsZTJfZXhwX2NvbG9yaW5nX2kiLCJwYXQxX2lkIiwicGF0Ml9pZCIsImZvcm0kMTMiLCJmdW5jdGlvbl90dXBsZTJfZXhwIiwiZXhwJDE0IiwiZnVuY3Rpb25fdHVwbGUzX2V4cF9jb2xvcmluZ19pIiwicGF0M19pZCIsImZvcm0kMTQiLCJmdW5jdGlvbl90dXBsZTNfZXhwIiwicGF0JDExIiwiZXhwJDE1IiwiZnVuY3Rpb25fY3RyX2V4cF9jb2xvcmluZ19pZHMiLCJmb3JtJDE1IiwiZnVuY3Rpb25fY3RyX2V4cCIsImV4cCQxNiIsImZ1bmN0aW9uX2FwX2V4cF9jb2xvcmluZ19pZHMiLCJmb3JtJDE2IiwiZnVuY3Rpb25fYXBfZXhwIiwiZnVuY3Rpb25zIiwiZnVuY3Rpb25zX2VtcHR5X2hvbGUiLCJmdW5jdGlvbnNfbXVsdGlfaG9sZSIsImZ1bmN0aW9uc193aWxkIiwiZnVuY3Rpb25zX2ludCIsImZ1bmN0aW9uc19mbG9hdCIsImZ1bmN0aW9uc19ib29sIiwiZnVuY3Rpb25zX3N0ciIsImZ1bmN0aW9uc190cml2IiwiZnVuY3Rpb25zX2xpc3RuaWwiLCJmdW5jdGlvbnNfbGlzdGxpdCIsImZ1bmN0aW9uc19jb25zIiwiZnVuY3Rpb25zX3ZhciIsImZ1bmN0aW9uc190dXBsZSIsImZ1bmN0aW9uc190dXBsZTIiLCJmdW5jdGlvbnNfdHVwbGUzIiwiZnVuY3Rpb25zX2N0ciIsImZ1bmN0aW9uc19hcCIsImVtcHR5X2hvbGVfdGVtcGxhdGUiLCJtdWx0aV9ob2xlX3RlbXBsYXRlIiwiZW1wdHlfaG9sZV9leHAiLCJlbXB0eV9ob2xlX2V4cHMiLCJtdWx0aV9ob2xlX2V4cCIsIm11bHRpX2hvbGVfZXhwcyIsImVtcHR5X2hvbGVfcGF0IiwibXVsdGlfaG9sZV9wYXQiLCJlbXB0eV9ob2xlIiwibXVsdGlfaG9sZSIsImVtcHR5X2hvbGVfdHBhdCIsImVtcHR5X2hvbGVfdHBhdHMiLCJtdWx0aV9ob2xlX3RwYXQiLCJtdWx0aV9ob2xlX3RwYXRzIiwiZW1wdHlfaG9sZV90eXAiLCJtdWx0aV9ob2xlX3R5cCIsImlmX2Jhc2ljMV9leHBfZXgiLCJpZl9iYXNpYzJfZXhwX2V4IiwiZXhwX2NvbmQiLCJleHBfdGhlbiIsImV4cF9lbHNlIiwiaWZfZXhwX2NvbG9yaW5nX2lkcyIsImNvbmRfaWQiLCJ0aGVuX2lkIiwiZWxzZV9pZCIsImlmX2V4cCIsImlmcyIsImxldF9iYXNlX2V4IiwibGV0X3dpbGRfZXgiLCJsZXRfaW50X2V4IiwibGV0X2Zsb2F0X2V4IiwibGV0X2Jvb2xfZXgiLCJsZXRfc3RyX2V4IiwibGV0X3RyaXZfZXgiLCJsZXRfbGlzdGxpdF9leCIsImxldF9saXN0bmlsX2V4IiwibGV0X2NvbnNfaGRfZXgiLCJsZXRfY29uc19zbmRfZXgiLCJsZXRfdmFyX2V4IiwibGV0X3R1cGxlMl9leCIsImxldF90dXBsZTNfZXgiLCJsZXRfY3RyX2V4IiwibGV0X2FwX2V4IiwicGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfIiwic2ZfZGVmX2lkIiwicGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyIsImV4cF9kZWYiLCJsZXRfYmFzZV9leHBfY29sb3JpbmdfaWRzIiwibGV0X2Jhc2VfZXhwIiwiZXhwX2RlZiQwIiwibGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkIiwibGV0X2VtcHR5X2hvbGVfZXhwIiwiZXhwX2RlZiQxIiwibGV0X211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkIiwibGV0X211bHRpX2hvbGVfZXhwIiwiZXhwX2RlZiQyIiwibGV0X3dpbGRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF93aWxkX2V4cCIsImV4cF9kZWYkMyIsImV4cF9ib2R5JDAiLCJsZXRfaW50X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfaW50X2V4cCIsImV4cF9kZWYkNCIsImV4cF9ib2R5JDEiLCJsZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9mbG9hdF9leHAiLCJleHBfZGVmJDUiLCJleHBfYm9keSQyIiwibGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9ib29sX2V4cCIsImV4cF9kZWYkNiIsImV4cF9ib2R5JDMiLCJsZXRfc3RyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfc3RyX2V4cCIsImV4cF9kZWYkNyIsImV4cF9ib2R5JDQiLCJsZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3RyaXZfZXhwIiwiZXhwX2RlZiQ4IiwibGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9saXN0bGl0X2V4cCIsImV4cF9kZWYkOSIsImV4cF9ib2R5JDUiLCJsZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2xpc3RuaWxfZXhwIiwiZXhwX2RlZiQxMCIsImxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfY29uc19leHAiLCJleHBfZGVmJDExIiwiZXhwX2JvZHkkNiIsImxldF92YXJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF92YXJfZXhwIiwiZXhwX2RlZiQxMiIsImxldF90dXBsZV9leHBfY29sb3JpbmdfaWRzIiwibGV0X3R1cGxlX2V4cCIsImV4cF9kZWYkMTMiLCJsZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHVwbGUyX2V4cCIsImV4cF9kZWYkMTQiLCJsZXRfdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHVwbGUzX2V4cCIsImV4cF9kZWYkMTUiLCJleHBfYm9keSQ3IiwibGV0X2N0cl9leHBfY29sb3JpbmdfaWRzIiwibGV0X2N0cl9leHAiLCJleHBfZGVmJDE2IiwibGV0X2FwX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfYXBfZXhwIiwibGV0c19lbXB0eWhvbGUiLCJsZXRzX211dGxpaG9sZSIsImxldHNfd2lsZCIsImxldHNfaW50IiwibGV0c19mbG9hdCIsImxldHNfYm9vbCIsImxldHNfc3RyIiwibGV0c190cml2IiwibGV0c19saXN0bGl0IiwibGV0c19saXN0bmlsIiwibGV0c19jb25zIiwibGV0c192YXIiLCJsZXRzX3R1cGxlIiwibGV0c190dXBsZTIiLCJsZXRzX3R1cGxlMyIsImxldHNfY3RyIiwibGV0c19hcCIsImludF9saXN0IiwidHVwbGVfbGlzdCIsImxpc3RfZXhwIiwiY29uczFfZXgiLCJjb25zMl9leCIsImV4cF9oZCIsImV4cF90bCIsImNvbnNfZXhwX2NvbG9yaW5nX2lkcyIsImV4cF94cyIsImV4cF95cyIsImNvbmNhdF9leHBfY29sb3JpbmdfaWRzIiwieHNfaWQiLCJ5c19pZCIsImxpc3RsaXRzIiwibGlzdGNvbnMiLCJsaXN0Y29uY2F0cyIsImxpc3RsaXRfcGF0IiwibGlzdG5pbF9wYXQiLCJjb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyIsImNvbnNfYmFzZV9wYXQiLCJwYXRfZnN0IiwicGF0X3NuZCIsInBhdF90bCQwIiwiY29uczJfcGF0X2NvbG9yaW5nX2lkcyIsImZzdF9pZCIsInNuZF9pZCIsImNvbnMyX3BhdCIsImxpc3RsaXQiLCJsaXN0bmlsIiwiY29uczIiLCJ0eXBfZWxlbSIsImxpc3RfdHlwX2NvbG9yaW5nX2lkcyIsImVsZW1faWQiLCJsaXN0X3R5cCIsImxpc3QiLCJleHBsYW5hdGlvbiQxNyIsImV4cGxhbmF0aW9uJDE4IiwiZXhwbGFuYXRpb24kMTkiLCJleHBsYW5hdGlvbiQyMCIsImV4cGxhbmF0aW9uJDIxIiwiZXhwbGFuYXRpb24kMjIiLCJleHBsYW5hdGlvbiQyMyIsImV4cGxhbmF0aW9uJDI0IiwiZXhwbGFuYXRpb24kMjUiLCJleHBsYW5hdGlvbiQyNiIsImludF91bmFyeV9taW51c19leCIsImludF9wbHVzX2V4IiwiaW50X21pbnVzX2V4IiwiaW50X3RpbWVzX2V4IiwiaW50X3Bvd2VyX2V4IiwiaW50X2RpdmlkZV9leCIsImludF9sdDFfZXgiLCJpbnRfbHQyX2V4IiwiaW50X2x0ZTFfZXgiLCJpbnRfbHRlMl9leCIsImludF9sdGUzX2V4IiwiaW50X2d0MV9leCIsImludF9ndDJfZXgiLCJpbnRfZ3RlMV9leCIsImludF9ndGUyX2V4IiwiaW50X2d0ZTNfZXgiLCJpbnRfZXExX2V4IiwiaW50X2VxMl9leCIsImZsb2F0X3BsdXNfZXgiLCJmbG9hdF9taW51c19leCIsImZsb2F0X3RpbWVzX2V4IiwiZmxvYXRfcG93ZXJfZXgiLCJmbG9hdF9kaXZpZGVfZXgiLCJmbG9hdF9sdDFfZXgiLCJmbG9hdF9sdDJfZXgiLCJmbG9hdF9sdGUxX2V4IiwiZmxvYXRfbHRlMl9leCIsImZsb2F0X2x0ZTNfZXgiLCJmbG9hdF9ndDFfZXgiLCJmbG9hdF9ndDJfZXgiLCJmbG9hdF9ndGUxX2V4IiwiZmxvYXRfZ3RlMl9leCIsImZsb2F0X2d0ZTNfZXgiLCJmbG9hdF9lcTFfZXgiLCJmbG9hdF9lcTJfZXgiLCJib29sX2FuZDFfZXgiLCJib29sX2FuZDJfZXgiLCJib29sX29yMV9leCIsImJvb2xfb3IyX2V4Iiwic3RyX2VxMV9leCIsInN0cl9lcTJfZXgiLCJ1bm9wX2V4cF9jb2xvcmluZ19pZHMiLCJzZl9leHBfaWQiLCJleHBfaWQiLCJib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWQiLCJib29sX3VuYXJ5X25vdF9leHAiLCJpbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2kiLCJpbnRfdW5hcnlfbWludXNfZXhwIiwiYmlub3BfZXhwX2NvbG9yaW5nX2lkcyIsInNmX2xlZnRfaWQiLCJzZl9yaWdodF9pZCIsImxlZnRfaWQiLCJyaWdodF9pZCIsImludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfcGx1c19leHAiLCJpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyIsImludF9taW51c19leHAiLCJleHAxJDEiLCJleHAyJDEiLCJpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyIsImludF90aW1lc19leHAiLCJpbnRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyIsImludF9wb3dlcl9leHAiLCJleHAxJDIiLCJleHAyJDIiLCJpbnRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZGl2aWRlX2V4cCIsImV4cDEkMyIsImV4cDIkMyIsImludF9sdF9leHBfY29sb3JpbmdfaWRzIiwiaW50X2x0X2V4cCIsImV4cDEkNCIsImV4cDIkNCIsImludF9sdGVfZXhwX2NvbG9yaW5nX2lkcyIsImludF9sdGVfZXhwIiwiZXhwMSQ1IiwiZXhwMiQ1IiwiaW50X2d0X2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZ3RfZXhwIiwiZXhwMSQ2IiwiZXhwMiQ2IiwiaW50X2d0ZV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2d0ZV9leHAiLCJleHAxJDciLCJleHAyJDciLCJpbnRfZXFfZXhwX2NvbG9yaW5nX2lkcyIsImludF9lcV9leHAiLCJleHAxJDgiLCJleHAyJDgiLCJpbnRfbmVxX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbmVxX2V4cCIsImV4cDEkOSIsImV4cDIkOSIsImZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X3BsdXNfZXhwIiwiZXhwMSQxMCIsImV4cDIkMTAiLCJmbG9hdF9taW51c19leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbWludXNfZXhwIiwiZXhwMSQxMSIsImV4cDIkMTEiLCJmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfdGltZXNfZXhwIiwiZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X3Bvd2VyX2V4cCIsImV4cDEkMTIiLCJleHAyJDEyIiwiZmxvYXRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9kaXZpZGVfZXhwIiwiZXhwMSQxMyIsImV4cDIkMTMiLCJmbG9hdF9sdF9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbHRfZXhwIiwiZXhwMSQxNCIsImV4cDIkMTQiLCJmbG9hdF9sdGVfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2x0ZV9leHAiLCJleHAxJDE1IiwiZXhwMiQxNSIsImZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9ndF9leHAiLCJleHAxJDE2IiwiZXhwMiQxNiIsImZsb2F0X2d0ZV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZ3RlX2V4cCIsImV4cDEkMTciLCJleHAyJDE3IiwiZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2VxX2V4cCIsImV4cDEkMTgiLCJleHAyJDE4IiwiZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9uZXFfZXhwIiwiZXhwMSQxOSIsImV4cDIkMTkiLCJib29sX2FuZF9leHBfY29sb3JpbmdfaWRzIiwiYm9vbF9hbmRfZXhwIiwiZXhwMSQyMCIsImV4cDIkMjAiLCJib29sX29yX2V4cF9jb2xvcmluZ19pZHMiLCJib29sX29yX2V4cCIsImV4cDEkMjEiLCJleHAyJDIxIiwic3RyX2VxX2V4cF9jb2xvcmluZ19pZHMiLCJzdHJfZXFfZXhwIiwiZXhwMSQyMiIsImV4cDIkMjIiLCJzdHJfY29uY2F0X2V4cF9jb2xvcmluZ19pZHMiLCJzdHJfY29uY2F0X2V4cCIsImJvb2xfdW5fbm90IiwiaW50X3VuX21pbnVzIiwiaW50X3BsdXMiLCJpbnRfbWludXMiLCJpbnRfdGltZXMiLCJpbnRfcG93ZXIiLCJpbnRfZGl2aWRlIiwiaW50X2xlc3NfdGhhbiIsImludF9sZXNzX3RoYW5fZXF1YWwiLCJpbnRfZ3JlYXRlcl90aGFuIiwiaW50X2dyZWF0ZXJfdGhhbl9lcXVhbCIsImludF9lcXVhbCIsImludF9ub3RfZXF1YWwiLCJmbG9hdF9wbHVzIiwiZmxvYXRfbWludXMiLCJmbG9hdF90aW1lcyIsImZsb2F0X3Bvd2VyIiwiZmxvYXRfZGl2aWRlIiwiZmxvYXRfbGVzc190aGFuIiwiZmxvYXRfbGVzc190aGFuX2VxdWFsIiwiZmxvYXRfZ3JlYXRlcl90aGFuIiwiZmxvYXRfZ3JlYXRlcl90aGFuX2VxdWFsIiwiZmxvYXRfZXF1YWwiLCJmbG9hdF9ub3RfZXF1YWwiLCJib29sX2FuZCIsImJvb2xfb3IiLCJzdHJpbmdfZXF1YWwiLCJzdHJpbmdfY29uY2F0IiwiZmVlZGJhY2tfdmlldyIsInVwX2FjdGl2ZSIsInVwX2FjdGlvbiIsImRvd25fYWN0aXZlIiwiZG93bl9hY3Rpb24iLCJleHBsYW5hdGlvbl9mZWVkYmFja192aWV3IiwiZXhhbXBsZV9mZWVkYmFja192aWV3IiwiY29kZV9ub2RlIiwidGV4dCIsImluamVjdCQwIiwibWtfdHJhbnNsYXRpb24iLCJvbWQiLCJlbGVtIiwiZCQxIiwibm9kZXMiLCJtYXBwaW5nJDEiLCJidWxsZXRzIiwiZCQyIiwibWFwcGluZyQyIiwiZCQzIiwiaWQkMCIsImlkJDEiLCJtYXBwaW5nJDMiLCJpbm5lcl9tc2ciLCJta19leHBsYW5hdGlvbiIsImNvbG9yX21hcCIsImV4cGFuZGVyX2RlY28iLCJkb2NzIiwib3B0aW9ucyIsImV4cGFuZGFibGUiLCJzcGVjaWZpY2l0eV9wb3MiLCJzcGVjaWZpY2l0eV9zdHlsZSIsImdldF9jbHNzIiwic2VnbWVudCIsInVwZGF0ZV9ncm91cF9zZWxlY3Rpb24iLCJzcGVjaWZpY2l0eV9tZW51IiwiZXhwYW5kX2Fycm93X3N0eWxlIiwiZXhwYW5kX2Fycm93IiwiZXhwYW5kYWJsZV9kZWNvIiwiZXhhbXBsZV92aWV3Iiwic3ViX2lkIiwiYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0IiwiYnlwYXNzX3BhcmVuc19wYXQiLCJieXBhc3NfcGFyZW5zX2V4cCIsImJ5cGFzc19wYXJlbnNfdHlwIiwidHlwJDEiLCJwcF9tZXNzYWdlX21vZGUiLCJzaG93X21lc3NhZ2VfbW9kZSIsIm1lc3NhZ2VfbW9kZV9vZl9zZXhwIiwic2V4cF9vZl9tZXNzYWdlX21vZGUiLCJhcmcyXzAxNiIsImFyZzFfMDE1IiwicmVzMl8wMTkiLCJtZXNzYWdlX21vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21lc3NhZ2VfbW9kZSIsImdldF9kb2MiLCJzaW1wbGUiLCJnZXRfc3BlY2lmaWNpdHlfbGV2ZWwiLCJnZXRfbWVzc2FnZSIsImZvcm1hdCIsImV4cGxhbmF0aW9uX21zZyIsImNvbG9yX21hcCQwIiwiY29kZV9pZCIsInN5bnRhY3RpY19mb3JtX2lkIiwiZXhwYW5kZXJfZGVjbyQwIiwiaGlnaGxpZ2h0cyQwIiwiaGlnaGxpZ2h0X2RlY28iLCJzeW50YWN0aWNfZm9ybV92aWV3IiwiZXhhbXBsZV92aWV3JDAiLCJtZXNzYWdlX3NpbmdsZSIsImdldF9tZXNzYWdlX2V4cCIsImJvZHkiLCJiYXNpYyIsImkkMCIsImYkMCIsInMkMCIsImVsZW1lbnRzIiwicGF0X2lkJDAiLCJib2R5X2lkJDAiLCJlbGVtZW50cyQwIiwicGF0X2lkJDEiLCJib2R5X2lkJDEiLCJiYXNpY190dXBsZSIsImRvY19pZCIsImRvY19pZCQwIiwicGF0MV9pZCQwIiwicGF0Ml9pZCQwIiwiY29uIiwiYm9keSQwIiwiYm9keV9pZCQyIiwidGVybXMkMCIsImJhc2ljJDAiLCJleHAxX2lkJDAiLCJleHAyX2lkJDAiLCJib2R5JDEiLCJkZWYiLCJwYXRfaWQkMiIsImJvZHlfaWQkMyIsImJhc2ljJDEiLCJpJDEiLCJmJDEiLCJzJDEiLCJlbGVtZW50cyQxIiwidiQxIiwidGwkMCIsImhkX2lkJDAiLCJ0bF9pZCQwIiwidmFyJDEiLCJlbGVtZW50cyQyIiwiYmFzaWNfdHVwbGUkMCIsImRvY19pZCQxIiwicGF0MV9pZCQxIiwicGF0Ml9pZCQxIiwiZG9jX2lkJDIiLCJwYXQxX2lkJDIiLCJwYXQyX2lkJDIiLCJwYXQzX2lkJDAiLCJjb24kMCIsImNvbl9pZCQwIiwiYXJnX2lkJDAiLCJib2R5JDIiLCJ0eV9kZWYiLCJ0eV9wYXQiLCJ0cGF0X2lkJDAiLCJkZWZfaWQkMCIsImZuIiwiYXJnX2lkJDEiLCJiYXNpYyQyIiwiY29sb3JpbmdfaWRzIiwidiQyIiwiZiQyIiwiYXJncyIsInhfaWQkMCIsInN1cHBsaWVkX2lkIiwiY29sb3JfZm4iLCJjb2xvcl9zdXBwbGllZCIsImNvbG9yX2RlZmVycmVkIiwiY29sb3JfZGVmZXJyZWQkMCIsImVsc2UkMCIsInRoZW4iLCJjb25kIiwicmlnaHQiLCJleHAxX2lkJDEiLCJleHAyX2lkJDEiLCJib2R5JDMiLCJib2R5X2lkJDQiLCJib2R5JDQiLCJib2R5JDUiLCJib2R5JDYiLCJib2R5JDciLCJ0ZXJtJDEiLCJ0ZXJtJDIiLCJ0bCQxIiwiaGQkMSIsImhkX2lkJDEiLCJ0bF9pZCQxIiwieHMiLCJleHBfaWQkMCIsInJpZ2h0JDAiLCJsZWZ0JDAiLCJvcCQwIiwiY29sb3JpbmdfaWRzJDAiLCJjb2xvcmluZ19pZHMkMSIsImdyb3VwJDEiLCJzY3J1dCIsInRsMiIsImhkMiIsImhkMl9pZCIsInRsMl9pZCIsImVsZW0xX2lkJDAiLCJlbGVtMl9pZCQwIiwidHlwX2luZm8iLCJyZXN1bHQyIiwiYXJnMiIsInJlc3VsdDJfaWQiLCJlbGVtMV9pZCQxIiwiZWxlbTJfaWQkMSIsImVsZW0xX2lkJDIiLCJlbGVtMl9pZCQyIiwiZWxlbTNfaWQkMCIsInRwYXQkMCIsInRib2R5X2lkJDAiLCJpbmZvJDAiLCJzZWN0aW9uIiwic2VjdGlvbl9jbHNzIiwiZ2V0X2NvbG9yX21hcCIsInN5bl9mb3JtIiwiaXNfbWFjIiwicHBfZGlyIiwic2hvd19kaXIiLCJkaXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2RpciIsInBwX2tleSIsInNob3dfa2V5Iiwia2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9rZXkiLCJwcF9zeXMiLCJzaG93X3N5cyIsInN5c19vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3lzIiwicHBfaGVsZCIsInNob3dfaGVsZCIsImhlbGRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hlbGQiLCJrZXlfZmllbGQiLCJzeXNfZmllbGQiLCJzaGlmdF9maWVsZCIsIm1ldGFfZmllbGQiLCJjdHJsX2ZpZWxkIiwiYWx0X2ZpZWxkIiwiYWx0X3ZhbHVlIiwiY3RybF92YWx1ZSIsIm1ldGFfdmFsdWUiLCJzaGlmdF92YWx1ZSIsInN5c192YWx1ZSIsImtleV92YWx1ZSIsInZfYWx0Iiwidl9jdHJsIiwidl9tZXRhIiwidl9zaGlmdCIsInZfc3lzIiwidl9rZXkiLCJrZXlfb2YiLCJkaXIiLCJ0b19oZWxkIiwibW9kaWZpZXJfc3RyaW5nIiwibW9kaWZpZXJzX3N0cmluZyIsImtleV9kaXJfc3RyaW5nIiwidG9fc3RyaW5nIiwiaXNfZGlnaXQiLCJpc19mX2tleSIsImhhbmRsZV9rZXlfZXZlbnQiLCJub3ciLCJzaGlmdCIsInJlc2V0X2hhemVsIiwicmVwYXJzZSIsInNldHRpbmdzX21lbnUiLCJiZW5jaG1hcmsiLCJjb3JlIiwiZXhwb3J0X21lbnUiLCJzbGlkZV9pZHgiLCJzdGF0ZSQwIiwiaW1wb3J0X21lbnUiLCJzdWJtZW51IiwibWVudSIsImhhbmRsZXJzIiwia2V5X2hhbmRsZXIiLCJwYXN0ZWRfdGV4dCIsIm1haW5fdmlldyIsImFlIiwidG9wX2JhciIsImJvdHRvbV9iYXIiLCJzaWRlYmFyIiwic3MiLCJlZGl0b3JzX3ZpZXciLCJzcyQwIiwicmVzdWx0X2tleSQwIiwic3RhdGljcyQxIiwibWVtb2l6ZSIsInRhYmxlIiwiZXJyb3Jfc291cmNlXzAyNiIsInBwX3JlYXNvbiIsInNob3dfcmVhc29uIiwicmVhc29uX29mX3NleHAiLCJzZXhwX29mX3JlYXNvbiIsInJlYXNvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVhc29uIiwic2V4cF8wMTMiLCJmaWVsZF9zZXhwc18wMTQiLCJyZWFzb25fMDE1IiwicHJpb3JfYXR0ZW1wdHNfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZpZWxkX3NleHBfMDIyJDEiLCJwcmlvcl9hdHRlbXB0c18wMTgiLCJyZWFzb25fMDE2IiwicHJpb3JfYXR0ZW1wdHNfMDMzIiwicmVhc29uXzAzMSIsImJuZHNfMDMwIiwiYm5kc18wMzAkMCIsInJlYXNvbl9maWVsZCIsInByaW9yX2F0dGVtcHRzX2ZpZWxkIiwicHJpb3JfYXR0ZW1wdHNfdmFsdWUiLCJyZWFzb25fdmFsdWUiLCJ2X3ByaW9yX2F0dGVtcHRzIiwidl9yZWFzb24iLCJyZWFzb24iLCJwcmlvcl9hdHRlbXB0cyIsInJlcGxhY2Vfb3JfaW5jcmVtZW50X2F0dGVtcHRzIiwiZmFpbGVkX2lucHV0IiwiYnRuIiwib25fc3RhcnR1cCIsImNyZWF0ZSIsImZzdHIiLCJjeCIsImN5Iiwic3Ryb2tlX3dpZHRoIiwidmVjdG9yX2VmZmVjdCIsImZpbHRlciIsInN0b3BfY29sb3IiLCJzdG9wX29wYWNpdHkiLCJpZCIsInNjcm9sbF90b19jYXJldCIsImVkaXRfYWN0aW9uX2FwcGxpZWQiLCJsYXN0X2VkaXRfYWN0aW9uIiwib25fc3RhcnR1cCIsInNjaGVkdWxlX2FjdGlvbiIsIm0iLCJlbnRyaWVzIiwiZm0iLCJzdGF0ZSIsImNyZWF0ZSIsIm1vZGVsIiwiaW5qZWN0IiwiYWN0aW9uIiwibmV3X21vZGVsIiwiZXhjJDAiLCJleGMiLCJtb2RlbCQwIiwiZXJyIiwiZXJyJDAiXSwic291cmNlcyI6WyIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdHJmdGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS92aXJ0dWFsZG9tLmNvbXBpbGVkLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2hvb2tzLmpzIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK21sQnl0ZXMuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rc3lzLmpzIiwiL2J1aWx0aW4vK2JhY2t0cmFjZS5qcyIsIi9idWlsdGluLytqc2xpYi5qcyIsIi9idWlsdGluLytmb3JtYXQuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rZWZmZWN0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytydW50aW1lX2V2ZW50cy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytjb21wYXJlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2JpZ3N0cmluZ2FmL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMvcnVudGltZS5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvcnVudGltZS5qcyIsIi9idWlsdGluLytwcm5nLmpzIiwiL2J1aWx0aW4vK3pzdGQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2pzL29qc19ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3RpbWVfbm93L3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0QmFzaWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0ZGxpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3lzLm1sLmluIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL29iai5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9hdG9taWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NlcS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC91Y2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvdW5pdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9tYXJzaGFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcGFyc2luZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zZW1hcGhvcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZG9tYWluLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYXJnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3ByaW50ZXhjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZWZmZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zeXMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXJyYXkwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY2hhcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tb25hZF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbW9uYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcHBsaWNhdGl2ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J5dGVzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9laXRoZXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZmllbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zdHJpbmcwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlzdDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jb250YWluZXJfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NvbnRhaW5lci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3JhbmRvbV9yZXByLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXJyYXlfcGVybXV0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ZuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JkZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW52YXJpYW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zaWduMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdW5pdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmxpdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcHhfZW51bWVyYXRlX2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J5dGVzX3RyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RhZ2VkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oZXhfbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnRfY29udmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wb3dfb3ZlcmZsb3dfYm91bmRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50X21hdGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wb3Bjb3VudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS91Y2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2lnbl9vcl9uYW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21hcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL25vdGhpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saW5rZWRfcXVldWUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQ2M19lbXVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDBfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDBfNDE0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTRfNTAwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzQxMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEzXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMl80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDExLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDExLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTFfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEwXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MDkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDA4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDhfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwNy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA3XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNl80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDVfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwM180MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDJfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIva2V5d29yZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdGxpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L3N0ZGxpYjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9hc3RfaGVscGVyX2xpdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC92ZXJzaW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L3dhcm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9hc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdC9sb2NhdGlvbl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC1jb21waWxlci1saWJzL3NoYWRvdy9vY2FtbF9zaGFkb3cubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3ByaW50X2RpZmYvcHB4bGliX3ByaW50X2RpZmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2Rlcml2ZXJzL3BweF9kZXJpdmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvdHJhdmVyc2VfYnVpbHRpbnMvcHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9zdGRwcHgvc3RkcHB4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X3BhdHRlcm4wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfYnVpbGRlcl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfYnVpbGRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY2FsbGVyX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9zcGVsbGNoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9uYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuX2dlbmVyYXRlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X3BhdHRlcm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2F0dHJpYnV0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29kZV9wYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9leHBhbnNpb25fY29udGV4dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X3RyYXZlcnNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9za2lwX2hhc2hfYmFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvZGVfbWF0Y2hlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZXh0ZW5zaW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb250ZXh0X2ZyZWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3JlY29uY2lsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcXVvdGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9tZXJsaW5faGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9jYXRpb25fY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2RyaXZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvaWdub3JlX3VudXNlZF93YXJuaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9kZXJpdmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3BweGxpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnYvZXhwYW5kZXIvYXR0cnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2xhYmVsX3dpdGhfbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnYvZXhwYW5kZXIvcHB4X3lvanNvbl9jb252X2V4cGFuZGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvanNfb2Zfb2NhbWxfXy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3R5cGVkX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZm9ybS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC93b3JrZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvd2ViU29ja2V0cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC93ZWJHTC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9yZWdleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvdXJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3N5c19qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9yZXNpemVPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9wZXJmb3JtYW5jZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL211dGF0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvanN0YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qc29uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2NTUy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb21fZXZlbnRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbV9zdmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZXZlbnRTb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZmlyZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9nZW9sb2NhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9pbnRlcnNlY3Rpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9pbnRsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL3Byb21pc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vbG9nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2JpZ0ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19pZGIvZXpqc19pZGIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3Qvd3JpdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvcmVhZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9zaGFwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9zaXplLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3R5cGVfY2xhc3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvYmluYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9zdGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvbWQ1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L2Jsb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2lubGluZV90ZXN0L2NvbmZpZy9pbmxpbmVfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdGltZV9ub3cvdGltZV9ub3cubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3RkaW8vaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zdGRpby9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfbW9kdWxlX3RpbWVyL3J1bnRpbWUvcHB4X21vZHVsZV90aW1lcl9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZV9lcXVhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdmFyaWFudF9hbmRfcmVjb3JkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC9zdGRfaW50ZXJuYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlcmVwX29iai5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfZ2VuZXJpY19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvbWFrZV90eXBlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVfYWJzdHJhY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZmlsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29tbW9uL2V4cGVjdGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29tbW9uL2V4cGVjdF90ZXN0X2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZ190eXBlcy9leHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZ190eXBlcy9leHBlY3RfdGVzdF9jb25maWdfdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9leHBlY3RfdGVzdF9jb2xsZWN0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb25maWcvZXhwZWN0X3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcG9zaXRpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvY3N0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX3N0YXRlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2VfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fYWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvb2xkX3BhcnNlcl9jb250X3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uX3RhYmxlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL29mX3NleHBfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zcmNfcG9zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvdHlwZV93aXRoX2xheW91dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3BhcnNlcl93aXRoX2xheW91dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcHJlX3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9zZXhwX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3BhdGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9leG5fbWFnaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3BsaXR0YWJsZV9yYW5kb20vc3BsaXR0YWJsZV9yYW5kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50NjQubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iaWdhcnJheV9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9vYnNlcnZlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL2dlbmVyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Nocmlua2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay90ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9vYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svYmFzZV9xdWlja2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2ludF9yZXByL2ludF9yZXByLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfYmlnc3RyaW5nL2Jhc2VfYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmFzZV9mb3JfdGVzdHMvdGVzdF9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmFzZV9mb3JfdGVzdHMvdGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3ZhbGlkYXRlL3ZhbGlkYXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V4cGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaW5hYmxlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3ByaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3Blcm1zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3RfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RlcHJlY2F0ZV9waXBlX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NvdXJjZV9jb2RlX3Bvc2l0aW9uMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29yX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcXVpY2tjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcXVpY2tjaGVja2FibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaF9zZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21heWJlX2JvdW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21wYXJhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaW9uX2ZpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kb3VibHlfbGlua2VkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2hfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNoYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hleGR1bXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbmV2ZXJfcmV0dXJucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29yZGVyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGRfaW50ZXJuYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlX3VuaXRzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvcmVfYmluX3Byb3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tZDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaW5hYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvem9uZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3ZhbGlkYXRlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3R5cGVfZXF1YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bml2X21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXRfb2ZfdGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXF1ZV9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3R5cGVfaW1tZWRpYWN5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdHVwbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kYXlfb2Zfd2Vlay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RpZ2l0X3N0cmluZ19oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbW9udGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kYXRlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29mZGF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGVfaW50ZXJuYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9mbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9wZXJjZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Bhbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3Bhbl9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29mZGF5X2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWVfZmxvYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZV9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zcGFuX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb2ZkYXlfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFrZV9zdWJzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdWJzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9hcmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21tYW5kX2Vudl92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ob3N0X2FuZF9wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZmRlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZnF1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2V0X29uY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21tYW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RyaW5nX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JsYW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZV91bml0cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3ByaW50ZXhjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGF6eS5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ub19wb2x5bW9ycGhpY19jb21wYXJlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWVtby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Rlcml2aW5nX2hhc2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9kZXF1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29yZV9zeXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iYWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaWdidWZmZXJfaW50ZXJuYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaWdidWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlcy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iaWdzdWJzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ib3VuZGVkX2luZGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS91aV9lZmZlY3QvdWlfZWZmZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3Rva2VuaXplci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfZ2VuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29qcy9vanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2pzL29qc19leG4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3N0YWNrX29yX2NvdW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3Rocm90dGxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9jeWNsZV9ob29rLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19rZXJuZWxfc2NoZWR1bGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9jbG9ja19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9jbG9ja19ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWVtby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX29yX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3BpcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL212YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2xhenlfZGVmZXJyZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2NvbmRpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC9wZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3Byb3RvY29sX3ZlcnNpb25faGVhZGVyL2tub3duX3Byb3RvY29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3Byb3RvY29sX3ZlcnNpb25faGVhZGVyL2xpc3Rfd2l0aF9tYXhfbGVuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3Byb3RvY29sX3ZlcnNpb25faGVhZGVyL3Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvbmF0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3dyaXRlcl93aXRoX2xlbmd0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2Rlc2NyaXB0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3RyYW5zcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvb25fZXhjZXB0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvaW1wbGVtZW50YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdXRpbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2Nvbm5lY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC92ZXJzaW9uZWRfcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGlwZV90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9wZXJzaXN0ZW50X2Nvbm5lY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9hc3luY19ycGNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3N0cmluZ2V4dC9zdHJpbmdleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmlnc3RyaW5nYWYvYmlnc3RyaW5nYWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vZXhwb3J0ZWRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vaW5wdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2J1ZmZlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9hbmdzdHJvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91cmkvdXJpLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VyaS1zZXhwL3VyaV9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9wZXJzaXN0ZW50X2Nvbm5lY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvaHR0cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9hc3luY19qczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvYXN5bmNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvYmFsYW5jZWRfcmVkdWNlci9iYWxhbmNlZF9yZWR1Y2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24vaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC93ZWFrX2FycmF5L3dlYWtfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvd2Vha19wb2ludGVyL3dlYWtfcG9pbnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC93ZWFrX2hhc2h0Ymwvd2Vha19oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2JlZm9yZV9vcl9hZnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvY3V0b2ZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2RvdF91c2VyX2luZm8ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvbm9kZV9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zdGFiaWxpemF0aW9uX251bS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9vbl91cGRhdGVfaGFuZGxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9yYWlzZWRfZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC91bm9yZGVyZWRfYXJyYXlfZm9sZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zdGVwX2Z1bmN0aW9uX25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYXJyYXlfZm9sZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hdF9pbnRlcnZhbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYmluZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9leHBlcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc2NvcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZnJlZXplLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2lmX3RoZW5fZWxzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9qb2luLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2tpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvbm9kZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9yZWNvbXB1dGVfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hZGp1c3RfaGVpZ2h0c19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FsYXJtX3ZhbHVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pbnRlcm5hbF9vYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9vYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9leHBlcnQxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3JlZHVjZV9iYWxhbmNlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hYnN0cmFjdF9hbGdlYnJhL2Fic3RyYWN0X2FsZ2VicmEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1dlYi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9UdXBsZVV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvVGltZVV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvU3RyaW5nVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9Nb25hZHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvU3RhdGVNb25hZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9SZXN1bHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvUGFpclV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvT3B0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9NYXBVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0xpc3RVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0RpcmVjdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9MaXN0RnJhbWUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvSW50VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9JbnRNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvRWl0aGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0FiYS5yZSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9jYXRlZ29yeS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9mbXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wbWFyay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9hdXRvbWF0YS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9jb2xvcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZ3JvdXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9lbWFjcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9zdHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvZ2xvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wZXJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3BjcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcG9zaXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1VuaW9uRmluZE92ZXJTdG9yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kQmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlTWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZVJlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVUcmFuc2FjdGlvbmFsUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZVZlY3Rvci5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0lkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9PcGVyYXRvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL1ByZWNlZGVuY2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL1NvcnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9OaWIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Hcm91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1Rva2VuLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvTGFiZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9OaWJzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvTW9sZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvRm9ybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1NlY29uZGFyeS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0Jhc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0VmZmVjdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvTW9sZHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9UaWxlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvUGllY2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Ta2VsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvU2VnbWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9TaWJsaW5ncy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9BbmNlc3Rvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9BbmNlc3RvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvVGltZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9Ub3VjaGVkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL01lYXN1cmVkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1NlbGVjdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9CYWNrcGFjay5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9SZWxhdGl2ZXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvWmlwcGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvVmFyTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFyRXJyU3RhdHVzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Db25zdHJ1Y3Rvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ29uc3RydWN0b3JNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJBY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL3Rlcm0vSWRUYWdnZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9JbnZhbGlkT3BlcmF0aW9uRXJyb3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9TdHJ1Y3R1cmVTaGFyZVNleHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1Zhci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckJzdE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVGVybUJhc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL3Rlcm0vVFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy90ZXJtL1R5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhckN0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVGVybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0RIRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yRXJyb3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9CdWlsdGlucy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvdGVybS9DbHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Nb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TZWxmLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9JbmZvLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvVGVybVJhbmdlcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvU3RhdGljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0RIUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvQ2FzdHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL0NvcmVTZXR0aW5ncy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWxDdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9VbmJveGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1BhdHRlcm5NYXRjaC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1Rlc3RTdGF0dXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0TWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVHJhbnNpdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1ZhbHVlQ2hlY2tlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vQWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L0Fzc2lzdGFudEV4cGFuZGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L1N1Z2dlc3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50Q3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L0Fzc2lzdGFudEZvcm1zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRGVsdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UZXJtTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvVGlsZU1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvTWFrZVRlcm0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvRWRpdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRWxhYm9yYXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0YXRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RhdGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcmV0dHkvUHJldHR5U2VnbWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ByZXR0eS9FeHBUb1NlZ21lbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0luZGljYXRlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvUHJvZ3JhbVJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvSW50ZXJmYWNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvYXNzaXN0YW50L1R5RGkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UZXN0UmVzdWx0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1N1YnN0aXR1dGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvQ2FjaGVkU3RhdGljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvclN0ZXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9GaWx0ZXJFbnZpcm9ubWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ZpbHRlck1hdGNoZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9TdGVwcGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9Nb3ZlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9TZWxlY3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0luc2VydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9QcmludGVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1BlcnNpc3RlbnRaaXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL0Rlc3RydWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9QZXJmb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL09yaWVudGF0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9Nb2RlbFJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvTW9kZWxSZXN1bHRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0luY29tcGxldGVCaWRlbGltLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvQ29kZVN0cmluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9FZGl0b3JVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1dvcmtlclNlcnZlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Xb3JrZXJDbGllbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvV2lkZ2V0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9XZWFrTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9FeGFtcGxlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9FeHBsYWluVGhpc0Zvcm0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVmFyVFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhlcmNpc2VVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvRXhfT2RkbHlSZWN1cnNpdmVfcHJvbXB0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X09kZGx5UmVjdXJzaXZlLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvRXhfUmVjdXJzaXZlRmlib25hY2NpX3Byb21wdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhlcmNpc2VzL0V4X1JlY3Vyc2l2ZUZpYm9uYWNjaS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhlcmNpc2VTZXR0aW5nc19iYXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9FeHBsYWluVGhpc01vZGVsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TZXR0aW5ncy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2NyYXRjaFNsaWRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9QZXJzaXN0ZW50RGF0YS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRWRpdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvRXhwbGFpblRoaXNVcGRhdGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0ZvbnRNZXRyaWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL0pzVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU3RvcmUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL01vZGVsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9VcGRhdGVBY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYXNzaXN0YW50L1VwZGF0ZUFzc2lzdGFudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvQmVuY2htYXJrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9EZWJ1Z0NvbnNvbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0xvZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhwb3J0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVHlwZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeXBGdW5jdGlvbkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeXBBcHBFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwQW5uUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R5QWxpYXNFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVGVzdFZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVGVzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9TZWdtZW50VHJlZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9TdmdVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1N1bVR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Ob2RlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRGVjVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRGlhZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRW1wdHlIb2xlRGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0NvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQmFja3BhY2tWaWV3LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9DYXJldERlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvQ2FyZXRQb3NEZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0NvbG9yU3RlcHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL1BpZWNlRGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0RlY28ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZWRpdG9yL1JlYWRPbmx5RWRpdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9Db2RlRWRpdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9TdGVwcGVyRWRpdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TbGlkZUNvbnRlbnQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvSWNvbnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvU2V0dGluZ3NNb2RhbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9TZXFFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZXNJbml0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9DZWxsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9DZWxsUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9DZWxsRWRpdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1NjcmF0Y2hNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1JlY1R5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9QaXBlbGluZUV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9BcHBFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQXBwUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0Fycm93VHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0Nhc2VFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvS2luZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9DdHhJbnNwZWN0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ3Vyc29ySW5zcGVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0VkaXRvck1vZGVWaWV3LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9HcmFkaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0V4ZXJjaXNlTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9GaWx0ZXJFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRml4RkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Gb3JhbGxUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRnVuY3Rpb25FeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVRlbXBsYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0lmRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xldEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MaXN0RXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xpc3RQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGlzdFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9PcEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FeHBsYWluVGhpcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9Gb250U3BlY2ltZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL09zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL0tleS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvS2V5Ym9hcmQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvTnV0TWVudS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9QYWdlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL01lbW8ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0xvZ0VudHJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9GYWlsZWRJbnB1dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9EZWJ1Z01vZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9CbGFua1RlbXBsYXRlLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL0F0dHJVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9NYWluLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxz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QUEsVUFBQXMrQzs7O0dBT0o7Ozs7T0FqU2I4aEM7T0FDQUM7T0FDQUM7T0FxTkUxdkU7T0FuTkY0dkU7T0FDQUM7T0FDQUM7T0F1TkVPO09BdE5GTjtPQXdPRVM7T0FTQUU7T0FMQUQ7T0F0T0ZOO09BQ0FDO09BZkFiO09BOFFFMkI7T0FVQUM7T0FaQUY7T0FEQUQ7T0FqUUZmO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QVNEQztJQUlBQztJQUlBQztJQVVBQztJQUlBQztJQUlDQztJQVVEQztJQUNBQztJQUVBQztJQUlBQztJQUlDQztJQVFEQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUNBQztJQUNBQztJQUNDQztJQU1EQztJQUNBQztJQUVDQztJQUtBQztJQUtEQztJQUNBQztJQUNDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEwQ0RobUc7SUFZQTJiO0lBQ0FFO0lBT0FuWDtJQUNBRTtJQUNBcWhHO0lBSUFDOzs7O0dBZ0JHOzs7Ozs7T0FqaUJMOXVHO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BMEpFaWtHO09BQ0FDO09BRUFDO09BSUFDO09BSUNDO09BVURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BTUFDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUFDO09BVUFDO09BSUFDO09BSUNDO09BU0RDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BVUFDO09BSUFDO09BSUNDO09BVURDO09BQ0FDO09BRUFDO09BSUFDO09BSUNDO09BUURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRGhtRztPQVlBMmI7T0FDQUU7T0FPQW5YO09BQ0FFO09BQ0FxaEc7T0FJQUM7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNO0ksTTtJLE07SSxzQjtJLE07SSxNO0ksTTtJLG9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLFc7Szs7USxRO3NDO1E7TztLO087O0ssTTtLLE07SyxZO0ssTTtLLE07SyxRO0ssTTs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEksTzs7Ozs7STtLLEksTzs7Ozs7Ozs7O0csSTs7O0k7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7b0Isc0I7RyxxQixzQjtHLHNCLHNCO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7O3lCLE87O3lCLE87O3lCLE87Ozs7OztLLE87O0k7SSxPO0c7O0ksWTtnQjs7STs7OzsyQjttQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGdCO0ksTztHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNLEk7O0k7STtHOztJOzs7O0s7SSxPOzs7SSxJLGdCOzs7MkIsTzs7O0k7SyxpQjtLO087Ozs7O0s7Szs7Ozs7TTs7Ozs7O0k7Rzs7O0ssWTs7SztJO0ksVTtJLE8sVztHOztJOztLLGdEO0s7NEM7O0ssTTtJO0ksWTtJLEksVTs7Ozs7Szs7STtHOzs7SyxZOzs7O3lDOztLOztRO0ssTztJO0k7SztNLE07TSxNOzs7OzJCOzs7YztJOzs7O0s7Tzs7Ozt1QztJLFc7Rzs7STtnQjs7STtHOzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLE87Szt5QixNLDRDO0ksTztHOzZCLE8sbUM7O0k7OztrQyxPO0k7Ozt5QyxPO0ksSSxhOztLOztNLFU7SyxJOztNOztPLFk7TTs7TSxNOztLOztLLE07O0ksSSx1Qjs7Szs7TSxjO0s7O0ssTTs7Rzs7SSxTO0k7O0ksTTtHOzt5QixtRDtJLE87RztHO3lCLGtCLG9CO0ksYTtJO3lCLHdCO0ksTztHOztJLFM7SSw0QjtJLFc7Rzs7SSxZO0ksa0MsTTtJOzs7STtJOzs7Tzs7Ozs7USxPO08sVzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7Rzs7STtJOzs7Tzs7Ozs7USxPO08sVzs7Ozs7cUI7Szs7Rzs7STtJO2dCLFc7OztNLE07Szs7O00sSTtNOzs7OztHOztJO0k7ZSxXOztpQjtLLDhCOztHOztJO0k7bUIsVzs7TSxNO0s7OztNO007Ozs7O0c7O0k7STs7O2dCO0ssa0MsTztLLFc7OztHOztJO0k7OztNLEc7TztROzs7Ozs7O0ssVzs7Rzs7SSxRLE87O0ksTztHO0c7O0k7O0s7O0k7aUI7SyxHLHFDO0ssSTs7Rzs7STtJO2lCO0ssSyw0QjtLLEk7O0c7O0k7Szs7O1MsWTs7UztRO00sVztLOzs7OzRCOzs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7OztNLFcsYztNOzs7OztHOzRCLE8sc0M7O0ksSztLLEcsNEI7SyxNOzs7STtpQixNO0s7OztNLFc7SyxHLGdDOzs7Rzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7O0ksSSxRO0k7aUIsTTtLOzs7TSxXO00sWTtLLEcsaUM7SyxHLGdDOzs7Rzs7STtLO00sTztNLGM7Szs7OztnQzs7O0c7O0ksMEM7Szs7UTtLLE87O0k7Rzs7OztJOztjOztHOztJLFU7O0s7SyxPO0k7STtJO0c7O0ksVztJO0ssUTtLLFk7Szs7Rzs7SSxJLE87STtnQjtLO00sTztNLEk7SyxZLE07Szs7O0c7O0k7SyxJO0ssTztJO0ssUTtLLFksTztLOztHOztJO0k7SyxPO0ssVztLO087OztJLEksVTs7O0s7SztLLE07O0k7SSxJLGtEOzs7SztLLE07O0c7O0ksYzt5QixPLHVCO0ksK0IsNkI7STtpQyxPLGdDOzs7RztvQix3Qzs7STtHOztJLG9CO0c7O0ksWTtHOztJOzs7Ozs7OztHOztJOzs7Ozs7Ozs7Ozs7O0c7O0ksOEM7SyxPO21CLHNCO0ksTztHOztJO0kscUM7Rzs7STtJLHFDO0c7O0k7O0c7O0k7SSxxQztHOztJO0ssVTtLLFc7STtLO00sTTtNLGE7OztNO1E7Vzt1Qjs7Szs7Ozs0Qjs7O0c7O0k7STt5Qzs7TSxNO0ssVztRO00sSTs7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7USxJOzs7O007TztPLFk7Ozs7O0ssSTs7Rzt1Qix3QixTOztJLFk7Z0I7Ozs7RzswQzswQzswQzswQzswQzswQzswQzs7STs7SyxNO0s7Szs7OztNLFc7TTtNOzs7OztJO0s7SyxPO0k7STtHOztJOztLO0ssTzs7Rzs7STs7O0ksTztHOztJOzs7SSxPO0c7O0ksd0I7Ozs7TTtNOzs7Ozs7Rzs7SSx3Qjs7OztNLHlCO007Ozs7OztHOztJOzs7O007TTtNOzs7Ozs7Rzs7STs7SztjO0s7OztJO0ksTztHOztJO0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7STs7O0ssTztLLFc7a0IscUM7STtTO0k7STs7OztNO007Ozs7O0k7Ozs7TTtNOzs7OztJOzs7O007TyxPO08sTzs7OztRO1MsTztnQjtTO1M7UztTOzs7OztTO1M7O1M7O29CO1MsTzs7OztVLFc7YTtXLFc7VyxHO1k7YTthO2E7Ozs7O3NCOzs7Ozs7O1E7UTs7Ozs7TTs7Ozs7STs7O0c7O0k7Ozs7OzBCLE8scUM7STtLLFE7SztJO0s7aUI7SyxxQjs7Ozs7SSxPO0c7O0k7SSxjO2tCO0k7Szs7OztLLE87SSxPO0c7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7O0k7O087O087O087O087O087O087O087ZTs7Rzs7STs7SyxrQjtLLE87O0ksb0I7SSxPO0c7O0k7O007TyxPO2M7Ozs7Ozs7SSxXO0ksTztHO0c7STtJOzhCLHFCOzBCLDRCOztJOzs7Ozs7dUIsTTs7STtHO0c7O0k7SyxZOzs7O0k7SztNOztNOzs7OzZCLE87Ozs7STs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7Ozs7STtJO0k7RztHO0k7STs7Ozs7RztJOztPLEksSSxPOzs7Ozs7TyxXO087UTtTLE87UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHO0c7O0k7SyxJOztLOzs7O2dCO08sVztPOztNOzs7OztJLE87Rzs7STs7SyxNOzs7STs7O00sUTs7TztPO1E7Ozs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7OztPO087UTs7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7Ozs7O0ssTzs7Rzs7STtJOztLO0ssTyxnQztJO0k7SyxtQjtLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STs7Szs4QjttRDtLLE87Ozs7Ozs7O0k7STtJLE87OztJO0ksTztHOztJLFk7Z0IsTzs7STtJLE87RztHLEksaUI7O0k7OztLLEksa0I7Ozs7OztLLFk7Ozs7OzhCOzs7Rzs7SSxnQjtJO2dCOzs7SyxlO0s7Ozs7TSxPO00sTztLLFc7STtJLE87Rzs7SSxZO0k7RztHO3NCLGlCO0c7SSxNO0ksTTtzQixpQjtHO0ksTTtJLE07SSxZOztJOzs7Ozs7eUI7MEQ7MEQ7MEQ7MEQ7Ozs7Ozs7MEQ7OzJEOzJEOzJEOzJEOzs7OztNOztLOztJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Ozs7OztHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7O0c7O0k7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7O0ssdUI7SyxPOztJLHlCO0ksTztHO0csSTs7STs7Ozs7Ozs7O0k7O087O0ksTztHOztJO0s7TTtROzs7UztVO1UsTztTLE87a0I7UTtLLE87Ozs7STtLLGE7SztPO0s7Z0I7O0ksSSxjO2dCO0k7Rzs7SSxhO0ksSTs7Ozs7SSxhO0c7O0kseUM7SSxPOzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7SyxHLHVDO0s7TTtNLE07TTtROzs7OztLLE87OztJLEcseUM7STtLO0ssUTtLO087Ozs7O0ksTztHOztJO0k7Szs7UTtVO0s7O2UsTTs7Rzs7STtLOzs7O007TTtNO007SyxPOztJOzs7Ozs7SztLO0ksTztHOzs7SSxHO0s7STs7OztJOzZDO0k7O0ssTztLO3lCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtNLE87SztLLE87STs7SyxPOzs7ZTt1Qzs7O2UsTzs7Ozs7bUI7Ozs7Ozs7Ozs7MEI7ZSxPO2M7OztJOztLLE87OztlOzs0QjtlO2M7OztJO2dDLDJCOzs7TTs7O1EsVzs7Ozs7O007SztLLE87STs7SyxJLFUsd0I7Ozs0Qjs7O0k7O0ssVTs7TTtNLFc7SztLLGU7STs7O00sTzs7O2dCLE87O2U7O0s7SyxPO0k7OztLO0ssTzs7c0MsTyw2Qjs7O0k7O0ssVTt1QjtLLE87STs7MEIsTyxtQix1QjtLLE87STs7SyxPOztnQyxPLHlCOzs7STs7SyxPOzs7ZTs7Z0IsSSxZOzs7OzsyQjs7OzBCOztlLE87Yzs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7O3VCLE8sK0M7O1MsTztROzs7VSxPOzs7b0IsTzttQjs7UztTLE87UTs7UyxPO1E7O1M7O29CLE87UyxjLE07OEIsTyx3QjtTLE87UTs7UyxVO1MsZTtRO1E7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1MsTzs7O21CO2tCOzs7UTs7UyxROztVO1UsTztTO1M7UztROzJCLGlEOztTLFEsbUI7NEIsTywyQjtTO1M7UTs7UyxJLFUsNEI7Ozs7VSxRO1U7VTs7UTs7UztTLGM7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLGlCOzBCLE8seUM7b0IsUzt3Qix1Qjs7Ozs7Ozs7Ozs7Ozs7O0k7STtJLE87Rzt5QixPLDhCO0c7STs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7Rzs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7STtXO2M7O0ksTztHO3dCLFM7OzRCLE8seUM7c0IsTyxrQzswQixzQjtHOzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEIseUM7O1M7UTs7Uzs7O1UsTTtTO1E7O1M7UTs7UztROztTLFU7UztRO1E7Ozs7UyxVO1Msa0I7UztVLFMsVzs7O1UsSSxhOzs7O1csSSxZOzs7WSxNOztXOztVLGE7OztZLE07Ozs7O1csVTtXLEksWTs7O1ksTTs7Vzs7Yzs7Ozs7VyxJLGM7OztZLE07O1c7O1UsTTtTO1MsYTs7O1E7O1MsSTs7Ozs7VTs7VyxNO1csTTtVO1UsTzs7UztROztTLEk7Ozs7OztVOztTO1E7O1M7VSxjO1U7Ozs7OzswQztVO1csYztXOzs7Ozs7OztROzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztJOzs7Ozs0QiwwQjs7STtLLE07OztLOztlOzs7Ozs7STtJLE87Rzs7eUIsTyx5QjtJO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Szs7TSxnQjs7O0s7STtJLFk7O0k7Rzs7STtLLE07OztLOzs7STtJOzt5QixpQztLOzs7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJLFE7SSxjOzs7Ozs7OztvQixZO3VCLFk7O0ksTztrQjs7Rzs7SSxXOztLLE8sa0I7bUI7O0k7SSxPO0c7O0k7SztNLE07TSxNOzs7Ozs7OztJLGlCO0c7RyxXOztJLE07RztHOztJLG1CO0ssTTtJO0k7Ozs7Rzt1QiwyQzs7STtHOztJOztLLFM7SztLLFU7SyxPO0k7SSxPO0c7O0k7YztJOzs7Rzs7SSxtQjtLLE07O29CLE8sd0M7STtLLFc7aUI7Ozs7O1U7Ozs7O0c7O0ksbUI7SyxNOzs7SyxTO1k7TTtLO00sUTtNLFU7O2U7O0k7STs7O0c7eUIsd0I7O0ksbUI7SyxNO0k7Yzs7Rzs7SSxPLGtCO0c7RyxhOztJOzs7O2M7dUIsbUI7O0c7RyxnQjtHOzs7Ozs7Ozs7O0ssVzs7TTtNO0s7SztLOztJLFk7Z0IsTTs7STs7O0ksbUI7SyxNO0k7Ozs7aUI7OztNLEksMEI7O0s7Ozs7O00sTzs7O0c7O0ksbUI7SyxNO0k7Ozs7TztRLE07Yzs7O00sSSwwQjs7Szs7Ozs7SyxlO0ssTzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ksc0I7SSxVO0ksTztHOztJO0c7RztJO0k7O0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7STtHO0c7O0k7STtVO0k7VTtJLHVCO0ksd0I7SSx1QjtJLHlCO0ksMkI7SSwyQjtJLDZCO0ksd0I7SSx1QjtJO0k7STtJO0k7Ozs7Ozs7Ozs7STs7STtLOzs7O0s7O2U7OztLLFU7Yzs7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0k7STtJO0k7STtJO0k7STtJO0k7Ozs7RztHO0k7STs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0k7STs7SSxHOztJLE07Rzs7SSxVO0k7Szs7TSxvQjtNLG1CO007Ozs7Ozs7RztHLEkseUIsbUI7O0k7O087O087ZTs7RztHO0k7OztROzs7Ozs7Tzs7OztJO3VCLDBDO0c7STs7O1E7OztPOzs7O0k7eUIsTyxzQzs7STs7Tzs7Tzs7TztlOztHOztJOzs7Ozs7Ozs7Rzs7STs7Tzs7Tzs7TztlOztHO3VDLFM7cUMsMkI7O0k7Szs7TTtNO0s7O0k7SyxNLFc7SyxNLFc7SSxPLFc7Rzs7STtJLE87Rzs7SSxZLE87STtJLE87Rzs7STtLLE07SyxVO0k7Szs7O1M7VTtVLFE7Ozs7ZTttQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0ksa0I7STtLLGU7Szs7O0c7RyxJLG1COztJOzs7Rzs7O0s7SztNLFc7TTtNO00sVTtNOzs7OztvQjs7Tzs7O0k7SSxPO0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLO0s7SSxXO0c7RzswQixRLDRCOztJOzs7OztHOzRCLE8sb0M7RyxJLDhCOztJOzs7Rzs7STtJLEksK0I7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7STs7Szs7O1M7UztVO1U7O1MsTzs7Ozs7UTtJLE87Rzs7STsrQyxPLGlCO0c7O0k7SyxPO0k7O0s7SyxPO0k7O0ssTztJO0k7RztrQyx1QztHO0k7SztLLFk7SyxRO0ssZTs7SyxrQjtJLE87RztHOztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO08sTzs7Ozs7OztLO0k7STtHOztJOzBCLHlCO0ksUTs7Szs7STtJLFc7Ozs7SztNO007TTs7O1MsbUI7OztRO0s7OztROztJOztLOzs7Ozs7TTs7OztrQjtNLFE7OztNOztLO0k7SSxPO0c7O0ksYzs7Ozs7O0k7SztLOzs7Szs7O0ssd0Isa0Isc0I7O007OytCOzs7OytCOzs7TTtNOzs2QjtLO0ssVztJO0k7Ozs7OzBDOzs7SSxXO0k7OztNO00sTzs7O2UsNkI7SztLO0ssTzs7STtJO0s7O00sZSxpQjtNOztXLGlCO1c7Szs7SSxhOzs7O007O087TTtPLGdDO007SztLO0ssTzs7STs7OztNO0s7SztNLE0sVztNLFE7OztxQixTO0ssRztNLFU7TTs7SyxVO3VCO0ssTzs7c0I7SSxPO0c7cUI7RztJLGU7SSxNO0ksYztxQjtHO0ksYzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksSSxJLE07Ozs7OztJO007UyxzQztLO0k7Rzs7SSxXO0k7Rzs7STtpQjtHOztJO2lCO0c7O0k7STtJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO0s7Szs7SSxVOztLLE07STtHO2lDLGtCLFM7O29CLE8sZ0M7STtLLFE7SyxTO0ssSTs7ZTtLOztVOztLOztJO0ssUTs7O29CLE8seUM7STtJO3dCLE8sbUM7STtJLE87Rzs7b0IsTyxnQztJLFk7b0IsTyw4QjtJLFk7STtHOztJLFk7O0ksTztHOztJOzs7UTtNO087UTtVOzs7TztPO1EsTTtRLE07Ozs7Ozs7Ozs7OztNOzhCOzs7Ozs7STtLLE07SyxNO0ssTTtLLE07Syw4QjtLLE07SyxNOzs7SyxxQjs7Ozs4Qjs7Ozs7Ozs7O1E7Ozs7STs7O1M7Ozs7Ozs7Ozs7Ozs7SSxHO0ssUTtLO00sWTtNLEcsNEI7TztNO08sVTtPOzs7Z0IsMkI7O0k7Rzs7STtJLHFCO0ksb0I7O0s7SyxlOzs7SyxNO0k7STthOztHOzs7Szs7Ozs7OztXLEssNkM7VztZO1k7Yzs7Ozs7WSxNO1ksVTtXLEksVSxtQzs7O2tDOzs7VTttQixXOztNOzs7VTs7O2E7dUI7VztZO2M7Ozs7OzhCLHlCO1csTzs7VTtTO087cUIsVztPLCtCO08sTTs7Uzs7O007TztPLE07TyxNO08sOEI7TyxNOzs7Ozs7Ozs7Ozs7O1UsTTs7OztTOzs7SztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Z0Msb0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTs7STs7SyxPO0k7SSxPO0c7Rzs4QixPLG9DOztJOztLLE07OztPLHVCLDZDO087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO0k7OztRO1E7OztJOztJLE87RzswQixrQjt1Qix5Qjs7STs7SztNOzs7O0k7Rzs7STs7SztNOzs7O0k7Rzs7STtJO0ksSSxRLGtCLGU7OztLO0ssTTs7Rzs7STtJLDRCO0c7O0k7SztNOzs7O2dCOzs7STs7Ozs7Ozs7Rzs7STs7SyxZOztNLE07O0s7TSxRO00sVTs7O087UTsyQixvQiwwQjtPLGtCLE87O087Ozs7Ozs7VTtXOzs7VyxzQjtVO1csTzs7VTs7UztVOzs7VSxzQjtTLGtCLE87O1M7Ozs7VTtXOzs7VyxzQjtVO1csTzs7VTs7UztVOzs7VSxzQjtTLGtCLE87O1M7O0ssTTs7STs7SztLOztPLFk7Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7TyxNOztNLFM7TTtNLGtCLE87O007O0k7cUI7STtHOztJLEkseUI7STtHOztJO0ssUTtLLFM7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SztNLGdDLEs7TTs7OztNO087TyxzQjtNLE87O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007Szs4QjtLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7TyxXO08sTztNO007O1M7TSwwQjtLOztNO087OztrQjs7a0I7Ozs7OztRLE87O087USxZOztPLE87O00sTztLO0s7O00sMkIsc0IsVztNLE87TTtROztLO0k7STs7OztLOzs7WTs7O0s7TTtRO00sVTtNOzs7O087Ozs7Ozs7Ozs7VTs7Ozs7Ozs7O1U7Ozs7Ozs7STs7STtHO0c7Rzs7RyxvQjtHOztJLE87Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7TyxXO08sTzs7OztRLE07O1E7UyxPO1MsTztRLE87O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOzs7O2lCOzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87TyxPOzs7TyxPOzs7TyxPOzsyQjs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7TyxvQixPO08sTzs7Ozs7VSxXO1UsTzs7VTtrQjtVLE87O1U7O2E7VSxPOzs7Tzs7OztRO1EsTztRLE87Tzs7VSxPOztVLE87OztVLE87Ozs7OztROztTLE87UyxPO1EsTzs7O1EsTTtPO1EsTztRLE87USxPO1EsTztPLE87Ozs7UTs7OztTO1c7O1MsTztTLE87UyxPO1EsTzs7OztRLE07Tzs7UTtVO1EsTztRLE87TyxPOztPOztRLE87TyxPOztPOztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLE87USxhO08sTzs7OztRLE87O08sTzs7O087Ozs7TyxrQjtPLE87OztPLE87OztPLE87OztPLE87O087O1EsUztPO1EsTTs7O1E7UyxTO1MsTztTLE87NEI7O1E7UyxPO1MsTzs0QjtPLE87Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7Rzs7SSxtQjtJO0ksSSxvQixtQixlO3lCLG1EO0ksWTs7Ozs7O2tDOzs7O2dCOztJO0c7O0k7Ozs7OztnQjs7O2tCOzs7Ozs7OztROzs7STtJLGM7Ozs7Ozs7Ozs7Ozs7STtHO0c7K0IseUI7O0k7OztJLE07Rzs7O0s7Ozs7O0s7TTs7TyxPO2M7Ozs7TTs7Ozs7TSxPO0s7SyxPOztJO0k7STs7O0ssSSxJLCtCOzs7TztRLE87USxPO1EsTztPOzs7TyxjLE87Tzs7SzttQixPOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OzsrQixPLGtDO1E7O1M7O1M7OztTO1UsUTs7O1UsTTtTO1UsTTs7UztROztTLEkseUM7Ozs7VyxPOzs7UTs7UyxJLHlDOzs7O1csTTs7O1E7O1MsTztROztTLE87UTs7UyxJLE0sZ0Q7O1U7VztrQjtZO1c7Ozs7aUM7OztTO1MsTztROztTOztVO1c7a0I7WSxNO1c7Ozs7O1ksTzs7O1M7UyxPO1E7O1M7O1U7VyxVOzs7UztTOzs7VTtXLEs7Vzs7UztTLE87UTs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVLFM7VSxXO1UsSTsyQjtTO1UsUTtVO1U7VTs7OztXLG1CO3FCO1c7Ozs7Ozs7VTs7VyxJLEksTTs7OztvQjs7VztVO1UsTztTO1M7VSxnQjs7VSxTO1UsUTtVOztVO29CO1U7VTtVOztVOzs7UztTLDBCOzs7O1c7Vzs7Ozs7Uzs7O1UsYTs7O1c7O1c7VTtVLE87UztTO1M7VSxXO1UsYTtVOztVO29CO1U7O1U7VTtVLE87UztTOzs7O1c7O1k7OztXOzs7OztTOztVLDhCO1Usa0I7O1U7Ozs7O1U7VztXOztXO1csTztVO1U7VztVO1M7UztTOztZOztVO1csTTs7O1c7WTs7NkIsK0M7VyxlOztVO1c7VztXO2E7OztVO1M7UyxPO1E7O1M7MkI7UyxPO1E7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DOzs7SyxNOzs7O1Esa0Q7USxPO087O3dCLFM7d0IsUzs7b0IsYzswQixPLDRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsUzswQixTO3NCLGM7O0ksTztHOzs7O3lCO3lCO3lCO3lCOzhCOzhCOzhCOzhCOzhCOzhCOzs7OzhCOzhCOzs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7NkI7K0I7K0I7K0I7K0I7K0I7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDhCOzs7Tzs7OztXLFE7VyxPO1U7UTtVOztRLE07TyxPOzs7TyxPOzsyQixPOztHO0c7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQixJO0ssTzs7Rzs7STtJOzJCO0ssUTtXO0ssSTs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7a0I7Szs7STtHOzs7SztpQztJO0k7Rzs7Ozs7MEIsNEI7eUIsTyx1Qzs7Ozs7OztrQjtLOztJO0c7OztJOztjO2MsTzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO08sRztRLE07TyxVOzs7Ozs7Ozs7OztRLE07Z0Q7O087O1E7UTtRO087O1EsTTtPO1E7OztZLHlCOztROztRO1M7Ozs7UyxNOzs7aUQ7Ozs7TztROzs7WTt3Qjs7OztXOztZO1k7O1k7O1k7O1k7O1c7Ozs7OztVO1EsYTtROztROzs7OztTO1M7Uzs7O1k7YTs7O2E7OzthO2U7MEI7YTs7WTtXO3FCOzs7Tzs7Ozs7Ozs7WTs7OztrQjtrQixPO2lCOzt3Qjs7WTtvQjs7c0I7aUM7Vzs7OEI7Tzs7OztZO1ksTztXO1csTzs7Tzs7Ozs7TTtNO087TyxJOzs7Ozs7Ozs7O08sVTs7Ozs7Ozs7OztRO1M7UztTO1M7UztTO1M7USxHOzs7UztVO2dDO1U7Uzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVOzs7YTs7YztjOzs7YztjOztjOzs7OztjOzs7OzthOzs7Ozs7OztZO1UsVztTOzs7VTtXOzs7OztjO2M7Ozs7Ozs7O2E7d0I7O1E7Ozs7VSxNO1M7O1U7O1c7VztXOzs7Yzs7ZTs7ZTs7ZTtjO2E7O3FCOzs7Ozs7UTtTOztZO3dCO1k7Ozs7YTtlOzs7WSxXOztTOztZO1ksTzs7UTs7TyxNOzJDOztNLE07MkM7OztJLE07Rzs7STtLO00sSzs0QixhOzRCLE8sMkI7TSxJOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7Tzs7TztlOztHOztJLGtDO0k7STtJLE87Ozt3QixPLG1DO3dCLE8sbUM7O0k7O087O087O087ZTs7Rzs7Ozs7Ozs7K0IsNEM7OzJCLHlCO1MsTzs7OztROzsyQix5QjtTLE87Ozs7UTs7UztROztTO1E7O1M7UTswQix1Qjs7UztTO1M7UztROztTO1U7VTtTO1M7Ozs7UTs7UztVO1U7O1U7Ozs7Vyx1Qjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVLEk7O1E7Ozs7O1k7YTthLE07YTtZOzs7OztxQjs7VztXO1U7VTtTOzs7O1k7YTthLE07YTtZOzs7OztxQjs7VztXO1U7VTtTOzs7VyxPOzs7OztzQjtzQjs4Qjs7cUI7cUI7b0I7VTtVLGdCLGM7VTtXO1c7VSxnQixjO1U7VztXOzs7O2EsWTs7O2M7OzthO1k7WSxPO1c7VyxPO1U7VTtXLFM7VztXOztXOzs7OztZLFE7VztVO1U7Vzs7YTs7Ozs7OztjO2dCOzs7YTs7Ozs7O1c7VTtVO21COztTOztVLHdCOzs7OztzQjtVO1M7O1U7OztXO2E7O1c7YTs7Ozs7Vzs7Yzs7Ozs7O1U7O1U7VztZO1k7WTs7WTs7OzthLGtCOzs7Ozs7O29CO3FCOzs7OztnQzs7O2U7ZTs7Ozs7YTs7Ozs7O2dFO1c7Ozs7OztrQjttQjs7O2lCO2lCLE87Z0I7Z0IsTztlOzs7O1k7WTtZO1k7Ozs7YTs7OztlO2U7Ozs7O2E7Ozs7Ozs7UztTOzs7O3NCOzs7OztVO1csUTs7O1c7VTtTOzs7VTtVO1M7Ozs7OztVO1csUTs7OztVO1M7OztVO1U7Uzs7Ozs7OztrQixVO2tCO2lCOzs7a0I7a0I7aUI7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsNEI7SSxPO0c7O0k7Ozs7Ozs7STtLLFU7Szt1QixPLHNDO0ssTztJO0k7Ozs7O08sTzs7O08sTzs7O0ksTztHOztJLE87Rzs7Ozs7Ozs7O1EsSTs7OztrQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7O21COztrQjtpQjs7a0I7MEM7OzBDO2tCLFk7Ozs7Ozs7O2lDOzs7OztrQjtpQjs7a0I7bUI7bUI7O21CLE07bUIsTTttQixVOzs7Ozs7O21COztzQjs7dUI7dUIsTTt1QixvQjs7b0M7OztzQjs7dUIsTTt1Qjt1QixvQjs7b0M7Ozs7O3NCOzs7dUIsSzt1QixLO3VCO3lCOzs7dUI7dUIsb0I7aUM7O21CLFc7Ozs7cUI7Ozs7Ozs7OzttQjs7Ozs7c0Isb0I7OztzQjs7c0I7Ozs7dUIsSzt1QixLO3VCO3VCLFE7Ozs7Ozt5Qjs7Ozs7Ozs7MEIsVTswQixVOzs7Ozs7Ozs7OztvQzs7Ozs7Ozs7Ozs7OztrQjtrQixPO2lCOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCLE8sb0I7eUIsc0M7Z0MsMkM7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7STtHOzRCLHFCO3lCLHNCO0c7STtJO0k7STtJO3lCLCtCOztJOzs7Rzs7STtHOztJLFk7Z0I7O0ksTztHOztJLEc7SztNLE87a0M7OztJO0s7SztNO08sTztPLE07TSxHLDZCO00sSztPLEc7UTtRLE87O087TyxPOzs7O0k7STtHOztJO0c7O0k7SSxPO0c7O0k7STtLLE87Ozs7O0s7STtLLGlDO0k7O0ssYTtLLE87STtJOzs7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0k7Ozs2QixPLHlDO0ksTztHOzs7Szs7O00sTztNLGM7SztJO0ksTztHOztJO0s7O2tCLE07SyxJOzs7O2lCO087Ozs7O0ssVzswQixNO0s7SztLO0s7Syx1Qzs7OztrQjs7OztZLHFCLGlDOzs7TyxHO1E7Ozs7WSxxQixpQzs7O08sRztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7O0k7dUIscUI7SSxPO0c7O0k7OztLOztLO00sTztNLGM7OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLLEksb0I7O007O087TTtLO0ssZ0I7O007Ozs7Ozs7TSxPOzs7SztLO00sTztNLE87O007TSxtQiwyQjtNO00sTztLO0ssVSxXOztNO007O1E7O087OztPLE07O3dCOztNO0s7SztNLFE7OztLO00sTTtLLFc7Ozs7TTtPLE87TyxPO3lCO21COzs7TTs7Ozs7Ozs7OztNLFc7O007TztRLE07UTs7VyxJLGUsOEI7OztvQzs7O1U7UTs7a0M7TztPOzs7O2tDOzs7SztLLEk7Ozs7Ozs7UTtTO1MscUIsdUI7OztZLFc7aUM7WSxRO1k7WTtXO1M7Ozs7Ozs7MkMscUI7TztRO1M7NEIsNEI7OztZLHNCO1ksUTtZO1k7Vzs7Ozs7Ozs7OztNOzs7OEI7O087Ozs7Ozs7TyxHLGdDO1E7TyxHLGdDO1E7TztNO00sWTs7Ozs7TTtLO0ssWSxXOztNOzs7OztNLFc7O21CO007O087TTtLO0s7TSxVOzs7Ozs7Ozs7O1c7VztVO2U7Ozs7OztNOzs7OztNOztjOztLO0ssYyxXO0s7Ozs7Ozs7O1E7UTs7Ozs7WTs7YTthLE87WTtxQjthO1k7YTs7O2M7O2M7O2E7YSxPO1k7NkI7MEI7VztRO1E7Ozs7O007OztVOztXO1U7VSxhO1U7UztPLE87TSxXOzs7SyxPO0k7SSxPOztHO0c7SSxPO0c7O0k7SSxvQjs7SztLOzs7TyxPOztNLFU7TyxJOzs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt3QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7Rzs7SyxXO0ssTztJO0ksTztHO0c7STs7O0ssTztLLE87SSxPOztHO0k7O0c7Ryw4Qyx3QjtHOzs7Ozs7Ozs7Ozs7O0s7OzBCLG9CLFc7SztNLFc7TTtNO1E7SztLLE87STtJLDhDLFM7STtLOztlOztJO0k7Ozs7Ozs7OztHOztJLGdDOzs7O0s7O0k7Rzs7SSxPOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7O0k7O0ksb0I7SSxPOzs7STtJO0k7Ozs7YyxPO2E7Rzs7STtJO0ksdUMsTyx1QjtHOztJO2lCO0c7O0ksWTtrQzs7Ozs7OztJO0ssTztJO0k7SyxPO0sseUI7O0s7Syx5QjtJO0ksVTtJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHOztJLE87Rzs7STtnQjs7STtHOztJO0c7O0k7STtJO0c7O0k7Rzs7STtLLFU7Szs7O1E7OztJO0c7O0k7SztPO0s7OztROzs7STtHO0c7cUMsa0M7OztJLG9DOztJO2lCO0ssbUMsUTtxQzs7O0c7Rzs7TSw0Qjs7TTtjOzJCO0s7O0k7STtLLEk7OztNOzs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7O0k7OztLLE07STtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7UTs7O1M7Ozs7Z0IsTzs7Rzs7STs7eUI7OzJCO2UsTzs7Rzs7STtLO00sTTtNO00sVTtLOzs7OztNO2M7Ozs7Ozs7O0c7O0ksUTtJLDBCO3VCLGlCO0ksVztHOztJO2dCOztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7Ozs7SSxXO0ksVztJLFc7O0s7O1EsTzs7UTtvQzs7STtJLE87RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOzs7STs7O007TSxPOzs7STtHO0c7STs7OztJOztLO0s7SztJO0c7O3dCLG1EO0k7SyxPO0ssTTtJLE87Rzs7STtJO2lCOzswRDs7O0c7O0k7O2lCLE87Ozs7Ozs7TSxJOzs7Rzs7cUIsK0M7SSxPO0c7RyxnQjs7STtpQjtHOztJO0ssVTtLO0s7Szs7OzsyQjs7O0c7O0k7SyxVO0s7Szs7OzsyQjs7O0c7RyxpQjs7STtpQjtHOztJO0ssVTtLO0s7Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0cscUI7O0k7aUI7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxzQjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0csdUI7O0k7O2M7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksd0I7SSx3QjtHOztJO0ssSztLLEs7STs7YTthOztHOztJLGM7SSxzQjtHOztJLGM7SSxzQjtHOztJLGdCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLFU7SSwyQjtHOztJLGdCO0c7O0kscUI7Rzs7SSxZO0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksMEI7Rzs7SSwyQjtHOztJLDRDO0k7Ozs7STs7YTthOzs7O0k7STtHOztJOzthO2E7O0c7OztJO0k7STs7O0k7STtJO0c7a0Msd0I7K0Isd0I7b0MsMEI7O0ksMkI7Rzs0QixxQjtpQywwQjs7SSwyQjtHOzhDO0c7NkM7RztzQywrQjt1QyxnQzs7STtJO0k7STtJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7O0c7Ozs7STtJO3FDLGtCLFM7O0ksTTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7Ozs7SSxPO0c7K0Isc0I7O0ksVztHOztJO0ksVztHOztJO0ksVztHOztJO0ksVztHOytCLHNCO3NCLGM7O0k7STtHOztJO0k7RztHOztJO0k7STtHOztJLFc7STtHO21DLDJCO2lDLGdDO3VDLHNDO2lDLGdDO3FDLG1DO3FDLG1DO3NDLG1DO29DLG1DOztJO0c7bUMsbUM7O0k7RztxQyxpQzs7STtrRDtJO0c7O0k7SyxXO0s7TSxNO0s7STtxQixZO0ksa0I7O0s7Ozs7Ozs7Uzs7OztTOzs7O1U7Ozs7OztxQjs7Ozs7Ozs7VyxHOzs7O2lDOzs7Ozs7OztxQjs7Ozs7O2tDOzs7O1M7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7NkIsK0M7Uzs7Ozs7Ozs7OzthO2E7WTs7aUM7Ozs7Ozs7OztLO0k7O0s7Ozs7OzttQzs7O0s7STs7Szs7Ozs7SztJO0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO3FDLDJCO2lDLGdDO3NDLG1DO29DLGdDO3VDLG1DO21DLGdDO3dDLG1DO3dDLG1DO3FDLG1DO2lDLGdDO2lDLG1DO3lDLG9DO2dDLGlDO2dDLGlDO2tDLGlDO21DLG9DO3FDLGlDO3VDLGlDO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOztJO0c7c0MsZ0M7b0MsbUM7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0Msb0M7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOztJO0k7STtHOztJLFc7STtHO21DLGdDO21DLGdDO3FDLGdDO3NDLG1DO3FDLG1DO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RzttQyxnQztxQyxnQzs2QztHO3dDLHFDOzZDO0c7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7OztJO0k7RzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7STtJO0c7OEIsMEI7OztLLE8scUI7STtJLFk7O0ssVztLLHFCO0k7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7STtJO0c7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7O0k7STtHO2dDLDBCOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7dUMsZ0M7cUMsbUM7Rzs7OztJO0k7STs7OztJLG1CO0c7bUMsbUM7O0k7Rzs7STtHOztJO0c7dUMsbUM7Z0MsK0I7OztLLE8scUI7STtJLFk7O0ssVztLLHVCO0k7SSxPO0c7O0ksVztJO0c7O0k7STtJOzs7O0ksbUI7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3VDLG9DO3VDLG9DO2dDLGdDOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHO3dCLGU7MkIsaUI7O0ksVztJO0c7O0k7STtJOzs7O0k7SSw0QjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksdUI7RztHOztJO0k7STtJO0ksZ0M7RztHOztJO0k7STtJLHVCO0c7Rzs7STtJO0k7STtJLFU7SSxzQjtHO0c7O0k7STtJO0k7STtJO0ksVTtJOzs7Ozs7WTtHO0c7O0k7STtJO0k7STtJO0k7STtJLFU7STs7Ozs7OztZOztHOztJO0k7STtJO0k7STs7Ozs7O1k7Rzs7STtJO0k7STtJLGdDO0c7Rzs7STtJO0k7STtJO0k7Ozs7OztZO0c7O0k7STtJO0ksNkI7Rzs7STtJO0k7STtJLFU7SSw0QjtHOztJO0k7STtJO0k7STtJLFU7STs7OztZO0c7O0k7STtJO0k7SSxVO0ksZ0M7RztHO2dDLHlCO0c7Z0MseUI7Rzs7STtJO0k7Rzs7STtHOytCLDhCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0M7SSxHO0s7SSxXO0ksRztLO0ksVztJLEc7SztJLFUsdUI7Ozs7O3lCOzswQjs7MkI7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7Ozs7SSxTOzs7Ozt3Qjs7MEI7OzJCOztTO1UsTzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7SyxPO0ssYztJO0c7O0k7SyxPO0s7O1U7Ozs7OztJO0c7O0k7Ozs7OztJOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7OztNO08sVztPLFc7TyxXO08sTzs7Ozs7STtHOztJO0k7Rzs7STtHOztJO0ksTztHOzRCLDJCOztJOzs7OzsrQzs7Z0Q7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7YTs7Ozs7Ozs7OzswQjs7Ozt3Qjs7O087OzttQjs7STtHOztJOzs7Ozs7Szs7STtHO0c7NkIsZ0M7O0k7OzthO2lDLE87STs7OztNLE07O29CLHdCLE87O0s7Szs7O0c7O0k7O0ksUTs7STtJO0ksTztHOztJO0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7O087OztRO08sTzs7Ozs7Ozs7O08sTzs7Ozs7SSxPO0c7O0k7Ozs7UTs7Uzs7O1k7WSxPO1c7UTs7OEIsTyx1QjtPOzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7O21DLGU7bUMsbUI7NEIsWSwyQjsrQixnQix1Qjs7SSxlLHlCOzttQyxtQjtrQyxPLDBCOztJLDJDO0ssTztJLE87Rzs4Qix3Qjs4QixPLDBCOztJLFE7SSwwQjtJLEk7SSxPOzs7OztjOzs7Ozs7SSw4QjtJOztLLE87Ozs7O21DOzs7O0ksTzs7Ozs7a0M7Ozs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7Uzs7OztVLDRCO1U7UyxPOzs7OzttQjs7Ozs7OztTLE87Ozs7dUM7Ozs7Ozs7VTs7Vyw0QjtVLE87Ozs7O29CLE87Ozs7OzhCLFE7OzhCLE87Ozs7O3dDOzs7NkI7O21COzs7Ozs7OztLLE87Ozs7bUM7OztHOztJLGU7O2tDLE87Ozt5Qjs7Tzs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7O1k7OzthO2EsNEI7YSw0QjtZLE87OztXLE87Ozs7eUM7O1U7OztXOzJCLDBCOzs7OztPLE87Ozs7O2lCOzs7Ozs7Tzs7O1EsNEI7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7Ozs7O1c7O1k7OzthO2EsNEI7OztnQixRO2dCLDBCO2dCLEk7Z0IsTzs7Ozs7MEI7OztlO1ksTzs7Ozs7O3NCOzs7Ozs7Ozs7VztVOzs7Vzs7OzthLE87Ozs7O3VCOzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7Ozs7Ozs7Ozs7OztXLE87Ozs7Ozt5Qzs7O08sWSxPOztPLE87Ozs7Ozs7aUI7Ozs7eUI7O087Ozs7cUM7Ozs7Rzs7STtLOztNLDRCO007SyxPOzs7O21DOzs7Ozs7O0ssZ0M7SyxPOzs7O21DOzs7Ozs7STs7Ozs7TTs7O087Ozs7O0s7O007Tyw0QjtPOztNLE87Ozs7O2dCOzs7OztLO00sTzs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7cUM7Ozs7Ozs7Szs7O0s7TSxPOztLOzs7Ozs7Ozs7Ozs7OztTO1UsTzs7Uzs7O1EsRztTLE87aUIsTzs7O1M7O1U7aUM7OztTLE87Ozs7Ozs7bUI7Ozs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7O21COzs7Ozs7STtLLE87O0k7Rzs7STtLO00sTzs7Szs7O2tDLE87Ozs4Qjs7eUIsTzs7O08sTzs7Tzs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7Ozs7Ozt1QixPOzs7Ozs7USxPOzs7Ozs7Ozs7VyxpQzs7Ozs7OzthLEc7YyxPOzs7O1csTzs7Ozs7O3lDOzs7Tzs7USxPOzs7OztrQjs7Ozs7O08sTzs7Ozs7aUI7Ozs7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7OzBCLE87OztPLE87Ozs7cUM7Ozs7cUIsTzs7TyxPOzs7TyxPOzs7O3FDOzs7eUI7O08sb0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7STs7O0k7Ozs7STtLLE87Ozs7bUM7O0k7SyxnQjs7Ozs7TSxHLDZCLE87OztLLE87Ozs7O21DOzs7SSxpQjs7Ozs7SyxLO2UsTzs7SyxPOzs7OzttQzs7OztLLE87Ozs7O21DOzs7SSwwQjtJLE87Ozs7O2tDOzs7Ozs7SSxlOzs7Ozs7Ozs7OzhCLDZDO00sSztNOzs7Ozs7Ozs7Ozs7O1csWTs7VyxPOztVOztZOzthO29DOzs7YTthOztnQjs7WTs7OzttQzs7Ozs7Ozs7OztZOzs7O1c7OztZO1k7O2U7O1c7Ozs7a0M7Ozs7Ozs7O1c7O1U7OzZCO08sUTs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7Ozs7OztZOzs7YSxXO2E7YTs7Z0I7OztZOzs7OztpQjs7O2tCO2lCOzs7OytDOzs7Ozs7Z0I7OztpQjtnQjs7Ozs4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7O21EOzs7Ozs7Ozs7OztxQjs7Ozs7c0I7cUI7Ozs7bUQ7Ozs7Ozs7Ozs7bUI7Ozs7b0I7bUI7Ozs7aUQ7Ozs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7bUMsTzs7Ozs7Uzs7O1U7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7Ozs7O2U7OzttQjs7ZSxPOzs7Ozt5Qjs7Ozs7Ozs7OztXO1k7O2U7O1k7OztZOztlOztXLE87Ozs7eUM7Ozs7Ozs7OztZLEc7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Vzs7OzthLE87Ozs7OzJDOzs7O1c7WTs7ZTs7WTs7O1k7O2U7O1csTzs7Ozt5Qzs7Ozs7O1M7UyxPOzs7OzttQjttQjtvQjs7bUIsSTttQjtvQjs7bUIsTzs7OztpRDs7OztrQjs7Ozs7O1M7Uzs7O1csTzs7Ozs7O3lDOzs7OztVOzs7O3dDOzs7O1MsTTs7Ozs7UyxPOzs7Ozt1Qzs7O1M7Ozs7VSw0QjtTLE87Ozs7dUM7Ozs7Ozs7O1MsTzs7Uzs7O1UsNEI7UyxPOzs7Ozs7O2EsMEI7YSxPOzs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7O1M7O1UsNEI7UyxPOzs7O3VDOzs7Ozs4Qjs7Ozs7Ozs7VTs7Ozt3Qzs7Ozs7Ozs7Ozs7Uzs7Ozt1Qzs7Ozs7Ozs7O1UsTzs7Ozt3Qzs7O1U7Ozs7O1csNEI7VztVLE87Ozs7d0M7Ozs7O1U7OztXLDRCO1UsTzs7Ozt3Qzs7Ozs7VTs7O1csNEI7VSxPOzs7O3dDOzs7OztVOzs7O1csNEI7VztrQztVLE87Ozs7bUI7Ozs7OztVOzs7Vyw0QjtVLE87Ozs7O29COzs7Ozs7VTs7O1csNEI7VSxPOztVOzs7Vyw0Qjs7Vyw0QjtVLE87OztVOzs7OztXLDRCO1csNEI7Vzs7Vzs7Yzs7VSxPOzs7O3dDOzs7Ozs7Ozs7Vzs7Ozt5Qzs7Ozs7O2E7Ozs7YztjO3FDO2EsTzs7Ozs7Ozs7O3VCLFM7dUIsZTt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7O2U7OztnQjs7Ozs7YztlLE07ZTtlLDRCO2U7O2MsTzs7Ozs7d0I7Ozs7Ozs7TTs7OztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7TyxPOzs7OztpQjs7OztNO08sTzs7TTs7O0c7O0k7Ozs7OztTLE87Ozs7dUM7Ozs7O1Msa0M7UyxPOzs7O3VDOzs7O0s7TSxPOztLOztJLGtCLE87O0k7Rzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7O1E7O1MsNEI7Uzs7USxPOzs7OztrQjs7OztRO1M7O2tDLE87b0MsTzs7Ozs7Vzs7WTtZLDRCO1k7O1csTzs7Ozs7cUI7Ozs7OztXOzs7UyxNOzs7Ozs7UyxPOzs7O1E7Ozs7O1ksaUM7Ozs7O2EsRztjLE87OztZLE87Ozs7OzswQzs7Ozs7Uzs7WTs7Uyw0Qjs7USxPOzs7OztrQjs7Ozs7O1E7O1M7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7OztTLDRCO1EsTzs7OztzQzs7Ozs7UTs7Ozs7O1Msa0M7USxPOzs7O3NDOzs7Ozs7Ozs7OztROzs7Uyw0QjtRLE87Ozs7c0M7Ozs7O1E7Ozs7Uyw0QjtTLDRCO1M7Z0M7USxPOzs7O3NDOzs7Ozs7OztRLE87Ozs7c0M7OztJOzs7O2tDOzs7Rzs0Qjs7STs7O0k7OztJOztLLDBCO0ssTzs7SSxPO0c7O0k7O0ssMEI7SyxPOztJLE87Rzs7STtJLDBCO0ksTztHOzs7Szs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7OztrQzs7OztHOzs7SSwwQjtJLE87Ozs7SSwwQjtJLE87OztJO0ksMEI7O0ksTzs7Ozs7Yzs7Ozs7Rzs7STs7O087O1E7USw0QjtPLE87Ozs7cUM7Ozs7O087Ozs7OztRO1EsNEI7USw0QjtPLE87Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRO1EsNEI7USw0QjtPLE87Ozs7Ozs7Ozs7Ozs7O087Ozs7UTtRLDRCO1EsNEI7TyxPOzs7O3FDOzs7Ozs7O3lCOzs7Tzs7O0c7O0k7OztPOzs7UTtRLDRCO08sTzs7Ozs7aUIsUTtpQjtrQjs7aUIsSTtpQixPOzs7OzsyQjs7O2dCOzs7Ozs7O087Ozs7UTsrQjtROztROztXOztPOzs7OztVLHlDO1UsTzs7Ozt3Qzs7Uzs7Ozs7O087Ozs7USw0QjtRO08sTzs7Ozs7aUI7Ozs7Ozs7Tzs7O087OztRLDRCOztPLE87OztHOzs7Syw4QjtLLDBCOztLLDBCO0ssMEI7SyxPOzs7Ozs7Ozs7Ozs7OztJO0ksUTs7ZTs7STtLOztJLEk7STtLOztJLE87Ozs7O2M7Ozs7O0c7O0k7OztPOzs7O1E7USw0Qjs7O1csUzs7VyxPO1U7USw0QjtPLE87Ozs7O1E7O1M7UztnQztTLDRCO1EsTzs7O087OztRO1EsNEI7USw0Qjs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7UTs7UztTO2dDO1MsNEI7USxPOzs7Ozs7Ozs7Ozs7Tzs7Ozs7Vzs7OztVO1E7USw0Qjs7O1c7Ozs7OzthOztjLDRCO2MsNEI7YSxPOzs7WTs7O1U7TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRO1EsNEI7USw0QjtPLE87Ozs7cUM7Ozs7Ozs7Tzs7UTtRLDRCO08sTzs7OztxQzs7Ozs7eUI7OztPOzs7Rzs7O0ksMEI7SSxJO0k7Szs7SSxPOzs7OztjOzs7OzswQjs7OztnRDs7MEI7Ozs7Z0Q7O2E7Ozs7OztJOzs7OztRLE87Ozs7O2tCOztrQjttQjs7a0IsSTtrQixPOzs7Ozs0Qjs7O2lCOzs7OzsyQjs7UTs7Ozs7Uyw0QjtTO1EsTzs7OztzQzs7Ozs7UTs7O1M7O1k7O1M7OztTOztZOztRLE87Ozs7c0M7Ozs7O1E7Ozs7Uyw0QjtTO1EsTzs7OztzQzs7Ozs7UTs7O1MsNEI7USxPOzs7O3NDOzs7Ozs0Qjs7UTs7O1MsNEI7O1EsTzs7Ozs7SSwwQjtJO0ksTzs7OztrQzs7OztHOztJO0k7O007O08sNEI7TztNLE87Ozs7b0M7Ozs7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1M7O1UsNEI7UyxPOzs7Ozt1Qzs7Ozs7UTtxQztRLE87Ozs7c0M7Ozs7Ozs7Uzs7VTs7YTs7Z0I7Ozs7aUI7O29COztnQixPOzs7OzhDOzs7Ozs7OztnQixPOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7Ozs7OEM7OztnQjs7OztpQjs7b0I7O2dCLE87Ozs7OEM7Ozs7Ozs7O2dCLE87Ozs7VTs7VTs7YTs7UyxPOzs7O3VDOzs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7Ozs7MkIsTzs7UTs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7STs7OztrQzs7O0c7O0k7OztPOzs7UTtRLDRCO1E7K0I7TyxPOzs7Ozs7Ozs7Ozs7O087OzJCOzswQjs7MEI7Ozs7UTs7UztTO2dDO1EsTzs7OztpQjs7Ozs7O087UTtRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7O087O1E7USw0QjtPLE87Ozs7Tzs7USxVOztRO1M7O1U7aUM7O1UsNEI7Uzs7OztXOzs7Ozs7O1M7O1U7aUM7O1UsNEI7Uzs7OztXOzs7Ozs7Ozs7O087Ozs7O1EsNEI7OztXLFM7O1c7VyxPOzs7O3lDOztVO08sTzs7Ozs7OztPO1EsTTtPOztRLDRCO1EsNEI7TyxPOztPOztRO1EsNEI7O08sTzs7O087O1E7USw0Qjs7TyxPOzs7O3FDOzs7Ozs7Ozs7Vyw4QjtXO1k7OztXLDBCO1c7WTs7VyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztROztXOztPLE87Ozs7O2lCOzs7Ozs7MkI7O3lCOzs7TztPOztHOztJO0s7O00sNEI7TTtLLE87Ozs7bUM7Ozs7Ozs7OzBCLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7O1E7Ozs7Uyw0QjtTLDRCO1EsTzs7OztpQjs7Ozs7OztPLE87Ozs7cUM7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7O087OztRLDRCO08sTzs7OztxQzs7Ozs7O08sTzs7OztxQzs7bUM7O0c7O0k7Ozs7a0M7OztHOztJOzs7Ozs7Uzs7O1U7aUM7UyxPOzs7O3VDOzs7Ozs7Tzs7O087Tzs7O087Tzs7Ozs7UTtRO1E7UTs7TztPOzs7Ozs7SztNLE87Ozs7b0M7Ozs7Ozs7UztVLE87Ozs7O29COzs7OztTO1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7SyxPOzs7O21DOztJO0k7c0IsWTtLLE87STs7Ozs7Ozs7OztRO1MsNEI7Uyw0QjtRLE87Ozs7O2tCOzs7Ozs7Ozs7Ozs7SyxnQztLLE87Ozs7bUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7O007Ozs7Ozs7OztPO00sRztPLFU7TyxHOzs7Ozs7Ozs7Ozs7O007Ozs7Tyw0QjtPLDRCO087Ozs7Tzs7VTs7TSxPOzs7O29DOzs7Ozs7Ozs7Szs7O00sNEI7TSw0QjtLLE87Ozs7bUM7Ozs7Ozs7Ozs7Ozs7USxPOzs7OztrQjs7Ozs7OztRLGlDOzs7O1M7VSw0QjtVLDRCO1MsTzs7Ozs7bUI7Ozs7Ozs7O1E7Uyw0QjtTLDRCO1EsTzs7Ozs7a0I7Ozs7Ozs7O0ksMEI7SSxPOzs7O2tDOzs7Ozs7OztLO0ssMEI7SyxPOzs7Ozs7O21DOzs7O0k7SSxROztlOztJLDBCO0ksSTtJO0s7O0ksTzs7OztrQzs7Ozs7O0k7Ozs7Ozs7Ozs7TSxHO08sTzs7Ozs7SSwwQjtJLDBCO0ksTztHOztJOzs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OztPLGlDO08sTzs7OztxQzs7O087O1E7USw0QjtROytCO08sTzs7Ozs7USxNOztPOzswQjs7MEI7O087OztRLDRCOzs7O1c7Vzs7OzthO2M7OztlO3NDO2M7Ozs7Z0I7Ozs7O2M7Ozs7WTs7OztjOztzQztjLE87Ozs7NEM7Ozs7OztZLE87Ozs7MEM7OztVO08sTzs7OztnQjs7Ozs7Ozs7Ozs7O1k7OzthO2E7b0M7YTtvQzthO29DO1ksTzs7OztxQjs7Ozs7Ozs7VztXO1k7OztXLDBCO1csTzs7OztvQjs7Ozs7O087USxNOzs7UTs7Ozs7O1ksb0I7WSxPO1c7O1M7Z0M7Uyw0QjtTLDRCO1EsTzs7OztpQjs7Ozs7Ozs7OztPOzs7O1csb0I7VyxPO1U7O1EsNEI7O1EsNEI7TyxPOzs7O2dCOzs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87O087O1E7USw0Qjs7USw0QjtPLE87Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7VztXO1k7O1csMEI7O1c7WTs7VywwQjtXLEk7VztZOztXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLFU7O29CO087O1E7O1c7O1E7O1E7O1c7O08sTzs7Ozs7aUI7Ozs7OzsyQjs7Tzs7UTtRLDRCOztPLE87Ozs7cUM7Ozs7O3lCOzs7TztPOztHOzs7SSwwQjs7Ozs7Ozs7O0ksTzs7O0ksUTtJLDBCO0ksTzs7Ozs7Yzs7Ozs7OztLOzs7OztLO0ssMEI7SywwQjs7SyxPOzs7Ozs7O21DOzs7Ozs7OztJO0ksUSxNOztlOztJLDBCO0ksSTtJO0s7O0ksTzs7OztrQzs7Ozs7OztLO0ssMEI7O0ssMEI7SyxPOzs7Ozs7Ozs7OztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0s7O007TSwwQjtNLE87Ozs7b0M7Ozs7SztLLE87STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7STtJLDBCOztJO0s7OztJLE87Ozs7O2MsUTtjLDBCO2MsTzs7Ozs7d0I7OzthOzs7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7SyxTOztLLE87Ozs7O2U7OztJO0k7Szs7TSw0QjtLLE87Ozs7Ozs7O2U7Z0I7O2lCO3dDO2dCLE87Ozs7OzBCOzs7Ozs7OztlLDBCO2UsMEI7ZSxJO2UsTzs7Ozs7eUI7Ozs7O2M7Ozs7O0ksMEI7SSxPOzs7Ozs7Yzs7ZSxPOzs7Ozt5Qjs7Ozs7c0I7YywwQjtjLEk7YyxPOzs7Ozt3Qjs7O2E7Ozs7OztJOzs7Szs7SSxtQjtJLDBCO0ksTztHOzs7Szs7OztNO0ssMEI7SywwQjtLO0ssMEI7SyxPOzs7O21DOzs7Ozs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7O3FDOzs7O0ksTztjO2M7Ozs7O29DOzs7O0k7Ozt5QixPOzs7cUIsTzs7TyxPOzswQixPOzs7TyxPLHdCOztHOztJO0s7O007NkI7TTs7O0ssTzs7Ozs7ZTs7Ozs7Z0IsTzs7SSxPO0c7O0ksTzs7OztrQzs7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87RztHLGlDO0csK0I7RyxpQztHLGlDO0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHLCtCO0csK0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxpQzs7O0k7Rzs7STtJO21CO2dCO0ssb0I7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7OztJLGE7O0ssWTtrQjtrQjtLLE87STtJLE87Rzs7O0ssWTtLLE87STtJLE87Rzs7eUIscUIsWTt5Qix1QixjO3lCLHNCLGE7STtLO0c7O3VDLGdDO0k7SztHO0c7STtJO0k7STs7STs7Ozs7OztHOztJOztLLE07O0ssd0IsTztLLE87O0k7OztLLE87SyxPO0ksTztHOztJOztLLE07O0k7Rzs7STtJOzs7YSxZO2E7YTtZO0c7O0k7STs7O2E7YyxTOzs7YTthO1k7Rzs7STs7O0s7OztJO0ssVztLOzs7OytCOzs7OztxQix3QjtJLE87Rzs7STtLLEk7SyxJOzs7O0k7Z0IsTztLLEksaUIsSSw4Qjs7Ozs7OztNO00sSTs7O0s7TSxzQjs7Ozs7Rzs7STttQztJO0ssTztLLE87SyxPO0ksTztHO0c7OztJOztLLEk7O0k7Z0IsTztLLEksaUIsSTtLO21CLE07TTs7O087USxNOzs7Tzs7O3VCLE07TTtPO1M7VztPLE87TTs7Ozs7O007Ozs7O0c7O0k7STtHOztJO0ssSTtLLE87SyxPO0k7SSxhO0k7Rzs7STs7O0c7Ozs7Ozs7OztJLFMsTztJOztLOzs7SSxPOztvQixjLDZCOztJLFUsTTtJLGtCOzs7Szs7TyxjO087Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJLHNCOztLOztNOzs7Ozs7Ozs7OztLLE87STtJLFE7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7SyxJO2tCOztJO0c7O0ksZ0M7Ozs7UTs7UTtTLEk7MkI7O1E7O1E7UyxNOzZCOztROztRLE87OztnQjtpQjs7OztLLE07O2dCO2E7OzthOzs7YTs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7OztPO1E7Ozs7Ozs7STtJLFc7O0s7O0k7STtJLEksZSxzQjs7Szs7O007Tzs7Ozs7Ozs7VTs7OztZLE07O1c7VyxLLGtDOzs7Ozs7Ozs7Ozs7TztPLEk7Ozs7Ozs7Ozs7Ozs7O087Tzs7Ozs7OztNOzs7STtJO0k7Rzs7OztLOzs7TTs7SyxNOztJLE07OztJOzs7SyxXOzs7O0ksc0I7O0s7O0s7STtJLEksUSw4Qzs7SyxNO0ksSSxZOztLO00saUI7O087OztROzs7O087Ozs7O0k7SSxXO0k7RztrRDs7STs7SztLO0k7OztJLFc7SSxPO0c7Ozs7SztLOztJLE07OztJO0ssTyxxQjtJLE07Rzs7OztLO0s7Szs7SSxNOzs7SSxZO0k7SSxXO0c7O0ksVztJLG1DO0c7OztJLG9CO0k7NEI7Ozs7RyxJLG1CO3VCLFc7RztJOzs7OzJCLFM7Ozs7Ozs7UztTO3NCO1U7VyxTOzs7OztROztTO1MsTTtRO3FDLHlCLFM7b0MseUIsUzs7UztTO21CO21CO1E7Z0MsMkI7O1M7UTs7Uzs7VTtXOzs7VSxlLE87O1UsTzs7O3FCLE87UyxNO1E7O1M7UztROztTO1E7O1M7UztTLE07UTs7O1M7UztROztTOztVO1U7O29CLFM7O3lDLFM7O3FCO29COzs7OztxRSxTOzs7O21COztTO1M7OzBDLCtCOzs7UTs7O1M7bUI7O1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVO1MsTztROztTO29CO1M7O1U7O1U7UyxPOztROztTLGU7UTs7UyxlO1E7O1M7bUI7O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLG9CO1M7aUM7OztTO1UsTTs7UzttQjttQjtROztTO1MsRyxXO1U7UyxNO1E7O1MsRyxXO1U7UyxNO1E7O1M7UztROztTO1M7UTs7Uzs7OzZCOztVOzs7OEI7O1M7UTttRCx5Qjs7Uzs7Ozs7VTtTOzs7UztVO1U7VTtTO1E7O1M7UyxPO1E7O1M7UyxPO1E7NkIsdUM7O1M7VTtVO1MsTztROztTO1UsTTs7UTs7UztTO1E7O1MsSSxlO1M7UTs7Uzs7Ozs7O1M7UTs7UztTO3dCO1U7VyxTOzs7OztROztTO1M7Ozs7bUIsTyxjO2tCOztROztTO1M7Ozs7bUI7OzZCLGM7a0I7O1E7O1MsTztRO21DLHVCOytCLHVCOztTO1U7O1c7Ozs7YztjO2E7VSxPOzs7Ozs7Ozs7O1M7O1U7O1UsUTtxQjtTOztVO1M7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VztXOzs7OzJCOztXO1c7OztROztTLG9CLFc7UyxPO1E7Ozs7Ozs7UyxJLFEsd0IsVTs7O1U7VTtVLE87O1M7UTs7Uzs7UTs7UyxtQyxPO1M7UztTLGlCOzs7MEMsa0M7d0MsaUM7O1M7UyxZOztVOztXLE87VyxPO1U7VTtVLFc7VSxPOztTOztROztTO1M7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTs7OztVO1c7OztjOzs7Yzs7OztlLE07YztlOztrQiwyQjtrQixxQjtvQztrQjtrQjs7ZTs7a0IsUTs7Ozs7ZTs7a0IsRyw4QjsyQjs7OzttQjs7a0IsTTs7O2MsTzs7O1UsTztTOztVO1csUTtXOztVO1M7O1U7VTs7Ozs7VztZLE07Vzs7YztlLFM7ZSxlO2U7Ozs7O3VDOztjO2U7ZTs7Ozs7Uzs7VSwwQjtVOzs7b0I7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Z0I7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Z0I7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Z0I7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsMkI7O1UsbUI7Ozs7Uzs7VTs7VztZLE07a0I7OztVO1M7O1U7Uzs7O1U7OztVOzRCLFM7a0MsUztVLE87Uzs7VTtTOztVLG1COztTOztVLEs7VyxPO1UsRztXLE07VTtXLFE7VyxVO1U7UztvQyxnQjs7VTtVO3lCO1c7dUI7VyxzQjs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7Rzs7STtLO007OztPOzs7TztPO007O0s7SyxnQztHOytCLGdDOzs7STsrQjs7O0ssTTs7STs7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7Rzs7OztJLHNCLG1CLG9COztHOztJOzs7SztLO0s7OztLO087Ozs7OztJOzs7O0k7OztJOztLOztJO0c7Rzs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztnQyxzQztJLE87Rzs7STs7O0k7Ozs7OztlO0c7O0k7Szs7O0ssTztLO0ksVTs7O0c7O0k7Szs7O0ssTztLO0ksVTs7STtHOztJLHFDO2M7O0k7OztJLHFDO2M7STs7SztLO0ksTzs7O0k7Ozs7OztLLFM7SztJOzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7SyxPO0ssTzt1Qix3QjtJLE87Rzs7STtLO00sYTtNLGM7TSxPO00sTztNLE87SyxPOztJO0ssTztLLGdCO0ssTztLLE87SSxPO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7YyxXO2lDLHdCO2MsTzthOztHOztJO0ssTztLLE87STtHOztJOzs7O0s7cUM7STs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7O0k7Ozt3Qjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCO21DOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7OztLLEs7SztLO0s7SyxLO0ssTztLO0k7OztJOztLOzs7Ozs7O0ssSztLLEs7SztJO0c7O0k7O0s7Ozs7O0s7SztPOztVOzs7O0k7Rzs7STs7Szs7Ozs7SztLO087O1U7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLLE07SztLO0s7STtHOztJOztLOzs7OztJO0c7O0ksTTtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SztLO0ssTztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SyxPO0ssUTtLO0ssSTtJOzs7STs7Szs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7SyxJO0k7OztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssUTtLO0ssTztLO087SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0ssUTtLLE87SztPOztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssTztLO0ssUTtLO087O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0k7STtLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLOzs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SyxPO0ssZ0I7SztLO0k7Rzs7STs7Szs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0ssVztLLE87SztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SyxLO0s7SztLLEs7STtJO0ssTztLO0k7OztJOztLOzs7OztLLEs7SyxLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0s7OztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SyxPO0ssVztLO087SyxRO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7Ozs7SztJO0k7SztLO0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0s7SyxLO0ssSztLO0s7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLO0s7SyxLO0ssSztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7O0s7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLO0s7SyxLO0ssSztLO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7STtJO0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLOztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLOztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0ssVztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0ssaUI7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7OztLOztLO0k7Rzs7STs7Szs7Ozs7O0s7O0ssUTtJO0c7O0k7O0s7Ozs7OztLOztLLFE7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87SztPO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087O0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxPO0s7SztLO0ssUTtLO0ssTztLO087O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0k7STtLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssTztLLFE7Szs7UTs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLOzs7STtLLE07STtLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLLHlCO0k7Rzs7STs7Szs7Ozs7SyxRO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLO0ssTztLLFc7SztPOzs7Ozs7Ozs7O0ssUTtJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7Szs7OztLLEk7SSxJLHVCO0k7OztJOztLOzs7Ozs7Ozs7SztLOzs7O0ssSTtJLEksdUI7STtHOztJOztLOzs7Ozs7OztLO0s7Ozs7SyxJO0ksSSx1QjtJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7SztLO0ssSTtJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLLEk7STtHOztJOzs7Ozs7Ozs7SyxPO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SyxXO0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SyxXO0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7Szs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJOzs7STs7Szs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7Rzs7STs7Ozs7Ozs7OztLLE87SyxPO0ssTztLLEk7STs7O0k7O0s7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7OztJOztLOzs7Ozs7OztLLE87SyxPO0ssTztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLOztROzs7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0ssSztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLLGU7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7Ozs7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7STtJO0ssTztLLE87SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztJO0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssUTtLO0ssTztLOztROzs7STs7O0k7O0s7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7OztJO0c7Ozs7Ozs7Ozs7Ozs7OztLO0s7STtJO0ssTztLLE87SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7O0s7Szs7STtJLE07Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7Ozs7OztLO0s7Szs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7OztLO0s7Szs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7SztLO0ssTztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLLE87SyxRO0s7SyxPO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0ssTztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssbUI7OzJCO0ssTztLLFE7SztLLE87SztJOzs7STs7Ozs7Ozs7OztLO0s7SyxPO0s7O0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssbUI7OzJCO0ssTztLLFE7SztLLE87Szs7SztJOzs7STs7Ozs7Ozs7O0s7SztLLE87SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7SyxJO0k7OztJOzs7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLOztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7OztJO0k7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0ssSTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SyxJO0s7STs7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLE87SyxPO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLE87SyxPO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssSTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLLEs7STtJO0s7SyxJO0s7STs7O0k7O0s7Ozs7OztLO0ssSTtLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssSTtLO0k7Rzs7STs7Szs7Ozs7O0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLLE87SztPOzs7Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLOzs7SyxPO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SyxPO0s7SyxPO0s7Tzs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLLFE7SyxPO0ssTztLO087Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SyxPO0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLOztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SyxRO0s7STs7O0k7Ozs7Ozs7Ozs7OztLO0s7STs7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7Ozs7OztNLE07OztJO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLOzs7OztJOzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7O0s7SztJOzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SyxtQjs7MkI7SyxXO0s7SztPOztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7SztLLE87SztLO087Ozs7Ozs7O0k7OztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLOzs7SyxPO0ssUTtLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLOzs7SyxPO0ssUTtLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssUTtLO0s7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7OztLLE87SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0ssTztLO0s7STs7O0k7Ozs7Ozs7Ozs7SyxLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLLEs7SztJOzs7STs7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLOzs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7OztJO0c7O0k7Ozs7Ozs7OztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtJO0s7SyxJO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLE87SztLO087O0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxPO0s7SztPOztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SyxPO0s7SztLO0k7OztJOzs7Ozs7Ozs7Szs7O0s7O0k7STtLLFc7SztLLE87SztJO0c7O0k7O0s7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7OztJLEksa0M7STtHOztJOztLOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7OztJLEksa0M7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7SztLO0s7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLOzs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLLEs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLLEs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0ssSTtJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztLLE07SztJO0c7O0k7O0s7Ozs7O0s7SyxNO0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7O0s7STtHOztJOzs7Ozs7OztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7O0s7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SyxLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztLLEs7SztLO0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Szs7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7O0s7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0k7Rzs7STs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLOzs7SztLO0s7STtHOztJOzs7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLOzs7SztLO0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87SztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7O0s7Szs7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7O0s7Szs7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Szs7O0s7O0k7SSxlOztLLE07STtLLE87SztJO0c7O0k7O0s7Ozs7Ozs7O0ssTztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7SztLO0ssSTtJO0c7O0k7Ozs7Ozs7OztLLE87SyxPO0s7SyxJO0k7Rzs7STs7Szs7Ozs7SztLLEk7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLLEs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0ssTTtLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7Szs7SztLOztLLDRCO0k7Ozs7STs7O0k7O0s7Ozs7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7O0s7SyxRO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7RztHO0k7OztROztTOzs7O1E7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO0c7O0ksTztHOztJLE87Rzs7SSxvQjtHO0csSSxxQzs4QiwwQztHOzZCLHVCO0c7O0k7Rzs7STs7O0s7Szs7Ozs7O0k7OztJO0k7OzswQjtJLGM7OztJO0k7Rzs7SSxnQjs7STtJLEksVSw2QjtJO0k7Rzs7SSxNOzBCO0c7O0ksTTtHOztJOzs7O00sVTs7Ozs7Ozs7OztPLE07OztPLE07O007Ozs7OztHOztJOzs7O1M7O1M7O1M7OztzQjtJO0c7O0ksZ0I7SSxNOzhCO0c7O0k7MkIsTztJOztxQztHOztJOzJCLE87STs7cUM7Rzs7STtJLE87Rzs7SSxXO0k7Rzs7STtJOzs7Ozs7O0c7RyxJLHVCOztJLFc7SSxPOztHO0csSSw0Qjs7STs7Rzs7STtHOztJLHVCOzs7O2lCOztNO08sVTtjOzs7O1E7O1MsTztnQjs7O1E7OztTOztZLGtCOztZLE87VztnQjs7O1E7OztTOztZLG9COztZLE87VztnQjs7O21COztROztTLGU7Z0I7Ozs7O2dCOzs7OztnQjs7O1E7OztTOztZLG9COztZLE87VztnQjs7STtHO0c7O0ksYTtJO0k7SyxPOztJO0c7O0k7STtLOztROzs7Ozs7O1U7O1U7O2E7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VSxtQjtVOzs7O1MsUztxQztTO1M7VSxPOztTOztTLGdDOztTO1UsTzs7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTO21CO1M7VSxXO1U7Ozs7aUM7Ozs7UzttQjtTO1M7O1M7bUI7Uzs7UzttQjtTO1M7O1M7Z0I7Uzs7UztVO1k7O1UsUTtTOztTO2tCO1M7O1M7VTtZOztVLFU7Uzs7Uzs7WTtTOztTO1U7OztTOztTO1U7WTs7VTs7NkI7OztTOztTO1U7WTs7VSxXO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1M7VTtZOztVLGE7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UyxnQzs7UyxRO1M7O1MsVTtTOztTOztTOztTOztTOztZOztTOztTOztTO1U7OztTOztTO1U7Ozs7d0I7NEI7O1M7VTtZOztVOzs7ZSxhO2U7Yzs7OztTOzs7VSxXO1U7O1M7VTs7O1M7O1M7O1k7O1MsMkI7VSxXO1UsWTs7Uyx5Qjs7UyxZO1M7Ozs7Uzs7UztTLHNCO1M7dUI7O1U7O1U7Vzs7Yzs7Ozs7O1c7OztVO1c7VztXLE07VztXO1csUztXO1csWTs7O1csSSxlOzs7Ozs7O2tCOzs7O1c7OztVOzs7O29DOzs7O1M7O1M7O1M7O1M7O1M7O1M7O1M7O1M7O1M7aUI7OztLOzs7RzswQjs7STtrQjs7SztNOztTOzs7TTs7Ozs7O21DO1E7Ozs7O1MsTTs7O1MsTzs7OztROzs7OEI7UTs7O1k7Ozs7OztXLHdCOztZLE07Vzs7WSxPO1ksUTs7Vzs7Ozs7OztROzs7UTs7UztTLFE7OEI7UTs7O1k7Ozs7OztXLDRCOztZLE07Vzs7WSxPO1ksVTs7Vzs7Ozs7OztRO1E7UTs7O1E7O1EsZ0M7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1EsZ0M7O1E7Z0I7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7O1E7O1M7UyxRO1E7USxrQjs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7OztTLFU7Uzs7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxnQzs7NkI7O1E7O1c7O1EsRztROzs7USxRO1E7OztHOztJO0k7Szs7UTs7Ozs7Uzs7UztpQjs7Szs7O0c7O0k7Yzs7SSxPO0c7O0ksZTs7SztLO007Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1U7VyxNO1csTTtXLFU7VTtVLEcsa0I7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0k7Rzs7STtLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Rzs7STs7c0U7STtHOztJO0s7SztLLFU7SztLOztLOzs7Ozs7OztPLEs7TztPLE07Ozs7OztPLFU7TyxHO1E7TyxNOztNLEc7TztPLE07Ozs7O0c7O0csNkI7RztHLDBCO0c7Ryw4QjtHO0csdUI7RztHLHdCO0c7Ryx5QjtHO0csc0I7RztHLDBCO0c7RywwQjtHO0csd0I7RztHLHdCO0c7RywyQjtHO0csbUM7RztHLGlDO0c7Ryx5Qjs7SSw4Qjs7OztPOzs7OztROztlO2M7Ozs7OztjOzs7Ozs7Yzs7O2lDOzs7Ozs7O1U7Ozs7aUM7Ozs7OztjOzs7Ozs7Yzs7O2lDOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Rzs7SSxxQjtJO0ssYTs7SSwwQjs7SSwwQjtJOztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0ksTztHOztJOzs7Ozs7OztHOztJO0c7O0ksaUIsTzs7Rzs7SSxZLE87O0ksTzs7O0k7OztPLE87O3FCLE87Ozs7USxPOztPLE87Ozs7TyxPOzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxXO0k7SSxPO0c7O0ksUTtJO0ksVztJO0k7Rzs7SSxROztJO0ksTztHOztJLE87Rzs4QixPLGlDOztJLE87Rzs7SSxPO0c7O0ksOEI7OztLLE87OztJLE87Ozs7SztJO0ksTztHOztJO0k7O0s7SztLLEksbUI7bUM7OzswQixPOzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTs7O1E7UTtTOzs7WTs7O2E7YTthOzs7WTtZO1c7USxPOzs7UTtROzs7UTs7Ozs7UTtRO1E7OztrQjttQjtpQjs7Ozs7UTs7Ozs7UTtROzs7Ozs7O1E7UTtTLE87O1E7OztHOztJO0k7O0s7SztLLEksbUI7bUM7Ozs7USxPOzs7UTs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7UTs7O2tCO2tCO2tCO2lCOzs7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7O1E7UTtRO1MsTzs7UTs7O1E7UTs7O1E7Ozs7O1EsTzs7O1E7Ozs7Ozs7OztRO1E7UyxPOztROzs7UTs7OztHOztJO0k7O0s7SztLLEksbUI7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1E7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzt5Qjs7MkI7OztPO1EsTzs7Tzs7Ozs7UTtROztRO1MsTzs7UTs7TztRLE87O087Ozs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7MEIsc0I7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7USxPOzs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7MEIsc0I7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7O0k7OztJOzs7STs7O0k7OztJOzs7O0k7STs7O0k7STtJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7O0c7O0k7O0s7SztLO0k7SSxPO0c7O0k7STtJLEk7STtJO0k7STtJOzs7Rzs7STtJO0k7STtJO0k7Rzs7STtJO0k7SSxJO0k7STtJLGdCOzs7SztLLE87OztJO2dCO0k7STtHOztJO0k7O0s7SztLLEksbUI7Ozs7UTtROzs7UTtRO1E7Ozs7UTtRO1E7Ozs7O1E7UTs7O1E7Ozs7Ozs7OztHOztJO0k7STtJOzs7OztPO087Ozs7Ozs7OztPOzs7Ozs7O087Ozs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7Ozs7Ozs7TztPOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtRO1E7Ozs7O1E7UTtROzs7UTtROzs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7OztHOzs7STtJO0k7OztJO0k7STtJOzs7OztPO087Tzs7Ozs7OztPO087Tzs7Ozs7OztPO087Tzs7O087TztPOzs7TztPOzt5Qjs7Ozs7OztPO087O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7RztpQyx1Qzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7RztpQyx1Qzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO087OztPO087OztPO087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJO0k7O0c7O0k7STs7Rzs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7STs7O0k7STtJOztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7OzthLE87Ozs4QztXLE87O1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7TyxnQyxPO08sTzs7O087Ozs7UTs7Vzs7OztZLE07WSxRO1c7WTs7OzthLE87YSxPOzs7NEM7VyxPOztRLE87TyxPOzs7Tzs7O1EsTztRLHNCO1EsTztPLE87OztPOzs7O1EsTztRLHNCO1Esc0I7USxPO1E7TyxPOzs7TyxpQixPO08sTzs7OztJOzs7Ozs7Ozs7SyxNO0ssUTtLO0ssZTtLLFc7SyxLO0ssSztLLEs7SztJO0s7Ozs7TSxPO00sTztLLFc7O0k7SyxXO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0s7SyxPO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7STs7OztLLE07SyxRO0ssTztJLE87OztJOzs7OztLLE07SyxROztLOzs7O00sZTtNO00sc0I7aUI7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7OztRLE87USxPO1EsZTtPLE87Ozs7Ozs7OztPOzs7USxPO1Esc0I7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRLHNCO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRLHNCO1EsTztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YSxvQjthLFc7WTs7UTtPLE87OztPOzs7USxlO08sTzs7O087OztRLE87USxzQjtRLHNCO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxtQjtPLE87O08sbUIsTztPLE87O08sbUI7TyxPOztPLG1CLE87TyxPOztPLGlCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7OztRLE87USxPO1EsZTtPLE87Ozs7Ozs7OztPOzs7USxPO1Esc0I7USxPO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7O0k7Ozs7OztLLE87SztLLFc7SyxXO0ksTzs7Rzs7STs7Ozs7SyxPO0ssTztLLFc7SyxXO0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STs7eUIsVzs7MkIsVzs7MkIsVzs7Tzs7O1EsZTtPLFc7O0c7O0k7Ozs7O0s7SyxXO0ssVztJLE87O0c7O0k7Ozs7O0ssTztLLFc7SyxXO0ksTzs7Rzs7STs7Ozs7SztLLGU7SyxXO0ssVztJLE87Rzs7STs7Ozs7SztLO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0ssTztLO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0ssTztLO0ssVztLLFc7SSxPO0c7MkIsUzs7STs7Ozs7O0ssTztLO0ssVztLLFc7SSxPOztHOztJOzs7O0ssTztLLFc7SyxXO0ksTztHOztJOzs7O0ssTztLLFc7SyxXO0ksTztHOztJLGdDLE87STtHOztJOzs7Ozs7O0s7SyxlO0s7SSxvQjtJO0ssVztLLFc7SyxXO0ksTztHOztJLFc7SSxzQjtHOztJLFc7SSxzQjtHOztJLFc7SSxzQjtHOztJLFc7SSxPO0c7O0k7Ozs7SyxPO0ssZTtJLFc7Rzs7SSxXO0ksTztHO0c7Ozs7UTtTLE87UyxPO1E7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTTs7STtLLE87STs7Szs7TTtNLE87TSxlO0ssTzs7Ozs7STtJO0ssTzs7SztLLE87SyxlO0k7OztJO0ssTztLLGU7SSxPOztHO0c7O0k7SyxlO0s7Ozs7NEI7OztHOztJLGE7O0c7Rzs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STtLLE87Szs7O1U7OztXO1UsTzs7O0k7Rzs7STtLO0ssTztLLGU7STtHOztJOztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLLDhCOztLOztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7UTs7Ozs7SSxPO0c7OztLOzBCOzs7TTs7Ozs7OztPOztNLE87Szs7TTs7Ozs7Ozs7O1E7OztPOztNLE87Szs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7USxtQztRLFc7Ozs7TSxPOzs7OztPOzs7OztPOzs7Ozs7Ozs7Tzs7Ozs7Tzs7Ozs7Tzs7Ozs7TztPLGM7Ozs7O087UTs7Ozs7Ozs7Ozs7O2M7O2EsTzs7Ozs7O1c7VyxPO1U7b0I7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21COzs7Ozs7Tzs7Ozs7TztROztXLG1CLE07VztXLE87VTtRO08sTzs7O087Ozs7O0s7STtJLE87Rzs7O0s7O007SztJO0k7SyxXO0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTzs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJLE87O2M7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O2lELE87aUQsTzs7O0k7SSxPOzs7SSxZOztJLE87Ozs7SSxPOzs7O0k7STs7SyxzQixPO0ssTzs7O0ksTzs7OztJO0k7OztLLE87OztJLE87Ozs7STtJOzs7OztRO1EsTzs7USxtQixPO1EsTzs7O1E7USxXO1EsTzs7UTs7UyxzQjtRLE87OztRO1EsVztRLE87O3lCLE87O1Esa0Isc0I7USxPOzsyQixPOzs7UTtRO1MsTztTLHNCO1Msc0I7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJLG9CO0k7STtLLEs7SyxLO0ssSztJOztLO0s7SyxPOztJO0k7SSxTO0k7SSxPOzs7STs7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7O0k7SyxrQixPO0ssTzs7SSxvQixPO0ksTzs7Ozs7Ozs7O0k7SSxXO0k7SSxXO0ksb0I7STtJO0ksTzs7Ozs7OztJO0k7SSxPOzs7Ozs7OztJOztLOzs7O00sc0I7SztLO0ssUzs7Z0M7STtJLE87Ozs7STtJOzs7O087TyxXO08sTzs7d0IsTzs7O087TyxPOzswQixPOzs7TztPLE87Ozs7O0k7STs7O3lCLE87OzJCLE87OzZCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJO0ksVztJLE87OztJLFk7O0k7SSxPOzs7O0k7STs7O3dCOzt5QixPOzs7TztPLE87OztPO08sVztPLE87O3lCLE87O3dCLE87a0M7Ozs7STs7O087TyxPOzs7TztPOzs7TztPLE87OztPO08sTzs7O087TyxPOzs7TztPOzs7OztJOzs7eUIsTzs7Ozs7O3lCLE87O3lCLE87O3dCLE87OzBCLE87O08sbUIsTztPLE87OzBCLE87OzBCLE87O08sbUIsTztPLE87O08sbUIsTztPLE87OzBCLE87OztPO08sTztrQyxPOztJLFc7SSxPOzs7O0k7STs7O3dCOzswQixPOzs7TztPLE87OztPO08sTzs7O087TyxPOzt3QixPO2tDLE87Ozs7O0k7Ozs7TztPLE87O08sbUIsTztPLE87O3lCLE87O08saUIsTztPLE87O3lCLE87O3lCLE87OzBCLE87O08sbUIsTztPLE87OzBCLE87OzBCLE87O08sbUIsTztPLE87O08sbUIsTztPLE87OzBCLE87OzBCLE87OztPO08sTzs7Ozs7STtJO2lDOzs7d0I7O087O08sZ0MsTTtPO08sTzs7MEIsTzs7O08sUztPO08sTzs7O087TztRLE87USxzQjtPLE87OztPO08sTzs7O087TyxPOztPLGtCLE87TyxPOzs7TztPLGdCOzt5QixnQjs7Tzs7O1EsTztRLHNCO1Esc0I7TztPLGdCOzs7TztPOzs7TztPO08sTzs7TyxvQixPO08sTzs7O087TztPLGdCOzs7TztPLE87OztPO08sTzs7O087TztPO08sTzs7O087TyxPOzs7TztPLFM7TyxPOzswQixPOzs0Qjs7O087TyxPOztPOztRLE87USxzQjtRLHNCO08sTzs7O087TztPLE87OztPO08sTzs7MkIsTzs7MkIsTzs7O087TyxnQjs7MEIsTzs7MkIsTzs7MkIsTzs7O087TyxPOzs7Ozs7O087TyxXO087TyxPO2tDLE87Ozs7Ozs7OztJO0k7STtJLE87Ozs7STtJO2lDOzs7d0I7OztPO087O087O087O08sa0IsTTtPLE87OztPO087O2lCO2lCLGtCO2lCO2lCLE87Z0I7OzswQixnQjs7Tzs7USxNO1Esb0I7USxvQjtPLE87O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TztRLE07USxvQjtPLE87O08sbUMsTTtPO08sTzs7O087TyxPOzt3QixPOzs7TztPLE87Ozs7SSxxQyxPOztJLE87Ozs7STtJOzs7eUIsTzs7O087Tzs7O087Tzs7O087TyxPOzt3QixPOzt3QixPO2tDLE87Ozs7O0k7SSxVO0ksTzs7O0k7Ozs7OztLLE07SSxrQjtJO0k7STtJO0ksTzs7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87Rzs7SSxVO0ksTztHOztJLFU7SSxPO0c7O0k7O3lCLE87OzJCLE87OzJCLE87OztPO08sZ0I7O0c7O0k7Ozs7STtJO0ksTztHOztJOzs7O0k7STtJLE87Rzs7STs7Ozs7STtJLFM7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87RzsyQixTOztJOzs7OztJO0k7STtJLE87Rzs7STs7OztJO0k7SSxPO0c7O0k7Ozs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7Ozs7Ozs7STtJLGtCO0k7STtJLFM7STtJLE87Rzs7SSxVO0kscUI7Rzs7SSxVO0kscUI7Rzs7SSxVO0kscUI7Rzs7SSxVO0ksTztHOztJO0k7SSxTO0ksTztHOztJLFU7SSxPO0c7RztJOzs7UTtROztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7Ozs7OztvQix1RDtJLFk7Z0I7OytDOzs7SyxNOztJLE07O0c7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7dUI7O1E7Ozs7O0k7Rzs7STtnQjs7STtHOztJLEk7Ozs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7Ozs7WTs7cUIsTztvQjs7Ozs7OztZOztxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7O2U7O3dCLE87dUI7Ozs7OztXOztvQixPO21COzs7USxNO08sTzs7Ozs7Ozs7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7STtHOztJLEcsc0M7SSxXO0ksTztHOztJOzs7Ozt5RDs7Szs7STtnQjs7STtHOzJCLE8sMkM7O0ksSTs7Szs7TTs7MEM7O007SztLLE87STtJLE87Rzs7STs7SztLLE87STtJLE87Rzs7SSxJLDhCOztLLGM7ZTtLO0ssTztJO0ksTztHOztJO0k7bUI7Ozs7OztLOztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7STs7SztLLE87STtJLE87Rzs7SSxPO0c7O0k7O0s7O007O0s7TTtPLE07TyxNO08sTTtNOzs7Ozs7TTs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7O1E7Ozs7Ozs7Ozs7Ozs7O1csYyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztTLEksVSw0Qjs7Ozs7O1U7Ozs7OztLOzs7Ozs7a0U7OztJLFc7STtLO00sTTtNO0s7SyxVO0s7Szs7OztLO0ssTTs7Rzs7STs7OztLO0k7RztHLDhCOztJOzs7O0s7STtHO0cscUI7O0k7Ozs7SztJO0c7RyxnQjs7STs7OztLO0k7RztHLGtCO3dCLE8sd0M7O0ksa0I7SSxPO0c7O0ksa0I7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJO0k7Ozs7Ozs7O0s7ZTs7SyxPOztHOzs7STtJLGlCOztLO0k7Rzs7STtJLGlCOzs7O21EOzs7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7UTs7MkI7OztxQjs7OzJCLG1CLDRCO1EsTzs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OzRCOzs0Qjs7OztROzs7cUI7OzsyQixtQiw0QjtRLE87Ozs7Ozs7Ozs7Szs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OzswQjs7c0I7O0k7Rzs7STs7dUI7O0k7RztHO0ksTztHOztJO2tCOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7O29COztvQjs7STtHOztJO0ksaUI7OztvQjs7O1EsTzs7O0k7Rzs7STs7Ozs7OztnQjtHOztJOzs7Ozs7O2dCO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0k7STs7STtJLFc7Rzt5QixrQzs7O0ksb0I7SSxXO0ksVzs7Ozs7SztLLE87STtJLE87OztJLFEsTTtJOzs7SyxROzs7SSxJLGtDOzs7NEI7OztHOztJOzt1QixPOztPLDhCO08sTztlLE07O0c7Rzs7STtLOztHOzs7O0s7Szs7O1EsSSxJOzs7O29COztROztROzs7Uzs7Ozs7O1E7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJOzs7O0s7SSxXO0ksTTtHOztJO0k7O21DOzs7UTs7O1E7Ozs7USxtQixzQjtRLE87OztRO1EsMEI7USxPOzs7Ozs7WTtZOzthOzs7WTtXO1EsTzs7O1E7USwwQjtRLE87Ozs7Ozs7O1k7WTthOztjLHNCO2EsTzs7O1k7VztRLE87Ozs7O1E7UTtnQyxrQixTO1MsTztTLHNCO1EsTztrQzs7O0c7O0ksWTs7SSxPOzs7STtLLGtCLHNCO0ssTzs7O3FCLDBCO0ksTzs7O0k7O0s7SztLO0k7STtJO0k7OztLOztNOztTOztTLG9CO1MsTzs7SyxPOzs7dUIsNEI7SSxPO0c7O0k7OztLO0ssMEI7SyxPOzs7STtHOztJOztJLG9CO0ksTztHOztJO0c7Rzs7STtJOzttQzs7O1E7Ozs7USxtQixzQjtRLE87OztRO1E7cUMsa0Isa0I7Ozs7MkI7Ozs7OztZO1k7WTtXO1EsTzs7USxxQixzQjtRLE87OztROzs7OztRO1E7OzJCOzs7O1E7O1M7OztZO2E7O1c7USxPOzs7OzBCOztROzs7Uzs7OztnQjs7O0c7O0k7STs7Rzs7STtJOzttQzs7OzBCOztROztROzs7O1M7Ozs7OzhCOzs7UTtRLEk7Ozs7UTs7K0Isa0IseUI7USxPOzs7UTtROzs7UTtROztROztTLHFCO1EsTzs7O1E7UTs7K0I7Ozs7Ozs7WTtZO1k7VztRO1E7OztRO1E7OztRO1E7Ozs7UTs7UyxxQjtRLE87OztRO1E7UTs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7Ozs7MkI7Ozs7OzsrQixrQix5QjtRLE87O1E7Ozs7UztTOzs7O2lCOzs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1MscUI7USxPOzs7OztRO1MsTzs7UTs7UTs7O1M7Ozs7O1E7Ozs7O1M7Uzs7YTtjOzs7UyxPOzs7Ozs7Ozs7Ozs7Ozs7O1csbUI7Ozs7Ozs7YTs7O1c7Ozs7UTs7O0c7O0k7STs7OzswQjs7MEI7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7UTs7OztZOztrQzs7bUM7O21DOztxQzs7b0M7O3FDOztXO1EsTzs7O1E7UyxPOztROzswQjtvQzs7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7UTs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs4Qjs7STs7O0k7OztJO0s7Ozs7TTtLO0s7O0ksTztHOzt3Qiw2QjtJO0ssTztLO29CLDRCO0k7STtHOztJOztHOztJO0k7SSxJLGdDOzs7OzswQztLO0s7O0c7O0k7Ozt5Qjs7NEI7O3lCO2Usc0I7O0c7a0MsK0IsUzs7SSxPOzs7Rzs7SSxpQzs7OzBCLHFCOzs7Ozs7MEIsNEI7OzRCLDhCOztPOztROzs7Vzt1Qjs7VyxPO1U7UTtPOztPOztRO1EsUTtRLE07TyxXOztPOzs7O1c7dUI7O1csTztVO1EsUTtRLE87USxNOzRCLGlDO087Tzs7MEI7O087O1E7OztPO087USxRO1EsTTtPLFc7O087O1Esb0I7TztPOztPOztRLG9CO087Tzs7Tzs7eUIscUI7O08sa0I7eUM7Tzs7SSxrQjtJO0k7OztJLEk7STtJLE87Rzs7SSxJO0k7SSxPO0c7O0k7Ozt5Qjs7eUI7ZSwyQjs7Rzs7STtJOzs7OztRO1Esd0I7USxPOzs7UTtROzs7Ozs7bUM7O3FDOzt1Qzs7O2U7ZTs7ZTt5Qzs7O1EsTzs7O1E7Ozs7MEI7O1E7OztTOzs7OztHOzZDO0c7a0Q7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOztPOztRLG9CO087Tzs7MEIsNEI7OzRCLDhCOztPOztROzs7Vzt1Qjs7VyxPO1U7UTtPOztPOzs7O1c7dUI7O1csTztVO1EsUTtRLE87USxNOzBCLG1DO087Tzs7TyxvQjt5QztPOzswQjs7Tzs7USxxQjtPO087O087O1Esb0I7TztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USx3QjtRLE87O1E7Ozs7UztTLG9CO1EsTzs7O1E7USxJOzs7O1E7OytCLGtCLHlCO1EsTzs7UTs7OztTOzs7Ozs7UTtROzswQjs7UTs7O1M7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7STtHOzZCLGtCLDhCO2lDLGM7d0IscUIsWTs7SSxjLE87O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7SSxPO0c7O0k7Ozs7Ozs7Ozs7UyxPOzs7OztLOzs7Rzs7STs7Tzs7NkI7OztHO0c7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7STs7O0k7Rzs7STs7Ozs7TTs7cUI7O08sMkM7Tzs7O0ssTTs7MkI7OztLOztvQjs7TTs7Ozs7O087TTs7O0ksTTtHOztJLFk7STs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7OztLLEk7STs7TTs7O0s7Ozs7a0M7YTthOztJO2lCLE07OytCOzs7Ozs7O21CLE07Szs7OztNLEk7SztNOzs7bUIsTTs7Tzs7Ozs7Ozs7Ozs7bUIsTTtLOzs7O00sSTtLLFk7Ozs7O0ksWTtJLGtCO0k7Rzs7OzttQjtLOzs7O00sSTtLLFkseUI7Ozs7Ozs7O007Ozs7TyxTO087Ozs7O29COzs7Ozs7Ozs7STtJO3lCLGlDO0c7O0ksUTtJLGM7SSxPO0c7O0k7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7SyxxQixPOztLO0ssNEI7Rzs7STs7Ozt1Qjs7USxpQjs7Ozs7VyxtQjs7O21COzs7Ozs7Ozs7MkIsTzttQjs7Ozs7Ozs7OztXOzs7O0s7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7VSxPOzs7Ozs7VTs7O1csTTtVLFU7Ozs7Ozs7O1Usb0M7VSxVOzs7Ozs7Ozs7Rzs7STtJO3VCOzs7Ozs7OztVLE87Ozs7OztVLGtDO1UsaUI7Ozs7OztTLG9DO1MsYzs7Ozt3Qjs7Szs7Rzs7Ozs7O1EscUIsTTtRLE87Ozs7USxzQztnQjs7OztnQyxxQzs7STtJOzs7NkIsTzs7OztROzs7UztTO1EsTzs7RzswQixTOztJO0k7OzBCLE87OztPLEc7UTtTLE07ZTs7a0I7TztPLE87O087OztRO1EsTTtRLE07UTtPLE87Ozs7STs7MEIsTzs7O08sTzs7O08sTzs7OztJO0k7Ozs2Qjs7OztRLE07O0c7O0k7Ozs7MkI7O1E7OztTOzs7O2dCOztHOztJO0s7Szs7OzBCOzs7O1M7OztVOzs7O0k7STtHOztJO0k7Ozs2QixPOzs0Qjs7O0c7O0ksRztpQjtJLE07Rzs7STs7O08sYSw0Qjs7OztPO1E7OztJO0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSx5QztJO0c7O0ksNkM7STtHOztJLDRDO0k7Rzs7STtHOztJO0c7O0k7O1k7Ozs7O0c7O0k7SyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSx3QjtJO0s7TSxNO007Ozs7WSxNOzs7OztLLE07STtJO0s7OztLOztJLFU7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O29CLHVCO0ksRyx5QztJLE07Rzs7STs7Tzs7O0k7SyxVO0ssYTtJO0k7SztLOztLOzs7OztLOzs7Uzs7Ozs7STtJO0s7SyxNO0ssYTtLO0k7Rzs7SSxPO0c7eUIsWTs7STs7Ozs7Ozs7O0s7O0k7Rzs7STs7OzZDLFU7O2lELFU7d0QsVTs7O2dDOztJO0c7O0k7SztLLE07SyxtQjs7Rzs7STs7TyxPOztPLE87ZSxPOztHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLE8sa0M7O0k7SyxPOzs7eUIsTzs7O08sTzs7O08sTzs7OztJLFU7STtHO0c7Ozs7Ozs7Ozs7OztJOzBCLHFCOzZCLFMsZ0M7O0ksTztLLFc7Szs7SSxXO0c7O0ksTztLLFc7Szs7SSxXO0c7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7OzBCLG9CO3NCLFcsOEI7cUIsVyw4Qjt1QixXLDhCOzRCLFcsOEI7O0ksVztHO3dCLFcsOEI7MkIsVyw4Qjs7STs7O0ssTztJLE87Ozs7O0s7STtJLG9COzs7SztNLFc7TSxPOztLOzs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7OzthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7SSxPO0c7O0k7SSxZO0k7RztHLGdDOzJCLDhCO2tDLGtDOzBCLDBCO3NCLHdCOztJO2tDO3VCOztJLEksVyxrQzs7OzRCOzs7Rzs2Qiw2Qjs7STs7O0s7O0k7Rzs7a0Msb0M7O0s7TSxZO007Ozs7O00sVTtNO007O0k7O0s7OztNLE87SztJOztLO0ssbUI7SztJOzs7SywwQixzQjtLLDhCLHNCOzs7TTs7Syx3Qix1QjtxQjs7bUM7Ozs7USxJLFU7Ozs7UyxJLFU7OztnQzs7O1MsTzs7OztrQjs7UTs7UTs7O1M7UTs7UTs7O1M7Uzs7Uzs7OztVO1U7Ozs7O1U7OztRO1E7O1E7O1Msb0I7UyxNO1E7O1E7OztTO2lDLGtDO1M7OztTLEksUzs7O2dDOzs7Uzs7O1E7O1EsMEIsVTtzQjs7UTs7OztLLGtCO0s7STs7SztLO0k7OzhCLDBCOzs7TTs7O0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OztROzt5QjtpQzs7STs7SztNO00sb0I7TSx1QjtNO007Ozs7Ozs7O0k7STs7RzttQyxTOztJLE07Rzs7Z0MsNEM7Rzs7O0s7OzJCLE87OztROztRLGtDO1E7O0k7SSxxQjtHOztJLHNDO0c7b0Msc0M7O2dDLE8scUM7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7STtJLE87Rzs7SSxJLG1CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx3QjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7O0k7STtlO0c7O0k7SSxxQjtHO0c7STtJOzs7Ozs7STtJO0c7eUIsaUM7eUIscUIsMkI7O0ksSSxpQixpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7O0c7cUMsbUIsVTtHO3FCO0csWTs7STs7OztHOztJO0k7Ozs7Ozs7O0s7O0c7O0k7O0c7O2lDLGM7O0k7STs7OztHOzs2QixjOzs7Ozs7Ozs7O1M7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00sRyx1Qzs7O0s7O0s7O0c7O0ksSSxnQztJO0c7O0ksSSwwQjtJO0c7O0k7Ozs7Ozs7O087OztRLE07Ozs7TSxJLE87OzswQjs7Ozs7a0M7eUM7O0k7Rzs7STtJOzs7dUM7Ozs7SyxPOztHOzRCLGdCOzs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7b0IsMEI7SSxPO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0c7Z0Msc0M7O0k7OzJDOzsrQzs7OEM7OzhDOzs7Ozs7Ozs7OztHO0csb0I7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7SyxJOzs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7OztVOzs7Ozs0Qjs7O1U7UztNLE87OztNLHFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyxjO0c7O0ksTyxjO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RyxxQjtHLHFCO0csMkI7O0ksb0I7SSxPO0c7O0ksVztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQiwwQjt1QiwwQjs0QiwwQjs7SSxvQjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7SSxzQjtHOztJLFc7SSxzQjtHOztJLG9CO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLFcseUM7O0k7O0c7O0ksa0MsTztJLFc7OztJO0ksTzs7ZTs7OztHOztJO0ksTztHOztJLFc7O0ssa0MsTztLLE8sa0I7STtJLE8sVztHO0c7STs7O1EsTTtPO0k7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STs7Ozs7O3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7O0ksUTtVO0ksSSxLLDRCLFE7Ozs7MEI7O1E7OztRLE07O0k7RzswQixPLG1DOztJO0c7O0ksVztJLFc7SSxXOztLLGtCLFE7cUQ7SztJO0ksTztHOztJLEksd0Q7Ozs7TSxXOztNOzs7Ozs7O0c7O0ksWTs7Ozs7UTtTLGM7eUM7Ozs7Ozs7WTs7WSxNOzs7Ozs7USxzQixPOzs7STtHOztJLFk7Ozs7O1E7UyxjOztTOzs7NEIsTzs7STtHOztJOztHOztJOzs7OztVO1c7O0k7Rzs7SSxZOzs7Ozs7USxnQixtQjs7OzRCOzs7STtHOztJO2dCO0ksbUIsVTs7O0s7TSxZO00sTzs7O0k7Rzs7SSxXOztLLG1CLFE7Ozs7TyxPOzs7dUMsTzs7SztJO0k7SyxTO0ssTztLLFE7Ozs7Ozs7O1EsTTs7SSxXOztLO0ssTztJO0ksYztrQjs7STtHOztJO0ksbUMsTyxpQjtHOztJLFk7a0M7OztPOztPLG9DLFM7TyxPOzt5QixPOzsyQixPOzs7a0IsTztPLG9CLFc7TyxPOztPOzs7USxXO08sTzs7TyxvQjtPLE8sd0I7O087O087OztRLFc7TyxPOzs7Ozs7VztXLE87VTtPLE87ZSxNOztHOztJO0k7Z0MsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7OztJOztLLE87OztxQixPLG9CO0ksTzs7O0k7O0ssVzs7OztLLDJDLE87SztJO0ksVzs7O0k7OzZDLE8sb0I7SyxPOzs7O0s7SyxPO0k7SSxPOzs7SSxXO0ksTztHOztJOzswQixPOzswQixPOzs0QixPOzswQixPOzsyQixPOzswQixPO21DLE87Ozs7STtHOztJLGtCLE87STtJLGtCLE87STs7Rzs7STtJLGtCLE87STs7SSx5QjtJLGtCLE87SSxPO0c7MEM7Rzs7SSxtQixPO0ksTztHOztJLGtCLE87STtJO0ksa0IsTztJOztHOztJLG1CLE87STtJOztHOztJLFk7O0ksTzs7O0k7OzBCLE87OztPO08sTztpQyxPOzs7O0k7OztPO08sVztPO08sTzs7O087Tzs7Ozs7VztXLE87VTtPOzs7OztXO1csTztVO08sTzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztROztTLE87OzJCLGtCLE8sc0I7USxPOzs7Ozs7SyxPOztJO0c7dUIsUzs7STtLLFE7Ozs7OztLLGlDLFE7Ozs7TTs7TyxPO2M7O007Ozs7TztPO08sTztjO0s7STtJLGE7STs7Ozs7MkI7OztJO0ksTztHOztJO0k7O0ssNkI7Szs7OztROzs7OztTLE8scUM7UyxPO1EsYzs7eUIsVzs7O1EsZ0I7OzttQixXO1E7Ozs7Uyx3QjtRLFc7O1E7Ozs7O1MsTztTLE87USxnQjs7UTs7UyxPOzs7OztRLE07O1EsTTs7UTs7UTs7O1MsUTtRLFk7Ozs7Ozs7WTtZLGM7VztRLGlCOzs7Rzs7SSxXOztJLE87Rzs7SSxJLGdCLE07O0s7SyxPO0k7STtJO0c7Rzs7OztxQzs7Ozs7TSxXLDZCOzs7Ozs7O0csVzs7STt3QixzQjtJOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7Ozs0Qjs7O0c7Rzs7SSxZOztJLGdEO0k7Rzs7SSw4Qjs7STtHOztJLDhCOzs7SyxPOzs7SSxPO0c7O0k7O2lCOztLLEc7TTswQztLLEk7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7Rzs7STtJOzs7OztROzs7O0c7O0ksaUI7O0k7RzsyQix1QzsrQix1Qzs7SSxJO2tDLG9CO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJOztLO0ssWTtJO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJLEk7aUMsb0I7SSxPO0c7O0ksSTs7SztLO0k7SSxPO0c7O0k7O0s7SyxZO0k7SSxPO0c7O0ksSSxVOzs7O00sTTs7OztJO0c7O0ksSSxVOzs7O00sTTs7OztJO0c7O0ksdUI7Rzs7SSxXO0ksTztHOztJLHdCOztHOztJLEksMkI7STtHOztJO0s7SztJO0c7O0k7STtHO2lDLHFDOztJO0ksYTtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVTs7RzttQyx1QjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7OzJCLGtCLHNCO0k7OzJCLGtCLHNCO0ksTztHOztJLE87Rzs7SSxZO3NFO0ksTTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7Yzs7O0k7OztPLE87Ozs7Ozs7Ozs7TztPO087bUM7OztHOztJLFc7STs7OztLOztPLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxTLEk7Ozs7Ozs7OztJO0c7O0k7YztjO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7SyxJOztHOztJLFU7STttQjtHOzs7Szs7Ozs7OztXLE87Ozs7Ozs7O1U7OztjOztVLE87Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7OztLOzs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7UywwQzs7O1MsMEM7OztVO1U7VSxPOzs7O0s7OztLO00sTTs7O1E7O1M7O1k7O1EsTzs7O1EsTzs7MEM7OztRLG1CO1EsTzs7O1EsTzs7O1EsTzs7O1EsTzs7O1EsTzs7UTs7Uzs7WTs7USxPOzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7aUI7O2E7Ozs7O1MsNEI7USxPOzs7UTtTOztVLFc7OztlOztTO1U7O1UsYzs7VyxvQixVOzs7Ozs7VTtXO1k7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7WSxROztZLCtDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlLFc7OztlOztrQjs7O2UsVzs7OztjOzs7Ozt1Qjs7Vzs7O1c7Ozs7d0I7Uzs7Ozs7VSxPOzs7OzJCLE87O1E7O1M7O1k7O1EsTzs7OztTLE87OztLLDBCO0ssTzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7OztJO0k7RztHOzs7O21COztzQixPOztLO0s7Ozs7cUIsTyx5Qzt3QixPLDRDO0csZ0M7RztxQixPLHlDO0csNkI7O0k7Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7O0k7OztJOztLO0ssRztNO007O0s7SztLO0s7SyxPOztJOzs7STtLOztNOztTOztLLE87O0k7OztJOzs7O1EsTzs7Ozs7Ozs7Ozs7UTtRO1E7USxPOztROzs7Uyw0QjtRLE87OzBCOzt1QixPOztROzs7UyxjO1EsTzs7UTs7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRO1E7Uzs7O1k7Ozs7WSxPOztXO1E7USxPOzs7USxPOzs7OztRO1E7UTtRO1EsTzs7STs7O0k7OztrQjs7TTtNOzs7O0ksTztHOzs7OztpQjtNLHVCO00sTzs7OztNOzs7Tyw0QjtNLE87Ozs7SztjOzs7Ozs7O0s7ZTs7O2lCO2lCO0k7STtLOztJLE87Ozs7O21COztzQixPOztLO0s7Szs7Ozs7SSxVOztLO0s7SztLO0s7SyxPOzs7STtJLE87Ozs7Ozs7O0ksTzs7O0csSSxrQzs7SSxPO2M7YztHOzs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0ksVTt1QixPLDBDO0k7Szs7SSxPOzs7STs7Ozs7OztXLFU7O1c7WTs7VyxPOztPLE87OztPOzs7O1E7VTthOztPLE87Ozs7Ozs7Ozs7Tzs7O1E7O1csWTs7VyxPOzs7d0IsTywwQztROztXOztPLE87Ozs7O0k7OztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7O0c7STtJOzs7USxPO087STs7dUIsTywrQztJOzs7USxPO087STs7O1EsTztPO0k7OztRLE87TztnRDtHOztJOzs7TTs7Tzs7Ozs7SyxhO0ssTzs7Ozs7Ozs7O0c7OztLLFksTztLOzs7TSxPO0ssTzs7OztLLDRCOzs7Ozs7TyxPOzs7Ozs7Ozs7O0s7TSxROzs7Szs7Ozs7O1M7OztVOzs7Ozs7O007TyxPO087Uzs7TSxPOzs7O0k7Rzs7SSxtQzs7O08sTzs7Ozs7Ozs7TyxPOzs7TztpQjs7aUI7OztPLE87Ozs7SSxZOzttQixPOzs7O0s7OztNOzs7Szs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNLE87Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJO0ssTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7UTtRLE87OztPOzs7Vzs7OztZOzs7OztnQixPO2U7YTs7Z0I7Ozs7O1csTzs7Ozs7OztVO1E7O08sTzs7Ozs7Ozs7Ozs7USxPOztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7Vzs7WTtZLE87Ozs7Ozs7O1c7VyxPO1U7OztXOzs7WSxPOzs7Ozs7Ozs7WSxPO1c7VztZOzs7VTtROztXOztZLE87O1c7Ozs7Vzs7Ozs7Ozs7VTtROzs7Ozs7TztROztXLG1COztROztXOztjOztjLE87c0IsTzs7VTtROztXLGU7VTs7O1c7Ozs7Ozs7O2MsTzs7Ozs7Ozs7Ozs7OztrQjttQixPOzttQixPO2tCO2tCO21COztrQixPOztpQjtjLE87Ozs7Ozs7OztjLE87Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztPOzs7UTs7VyxZOztXOztZLE87VztXLE87O1E7Ozs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0k7O0s7TSxPOzs7Ozs7O0s7OztTOztLLE87Ozs7Ozs7Ozs7YyxPO0k7Szs7SSxPO0c7OztLOzs7TSxPOzs7Ozs7Ozt3QixPLDBDO0s7TTs7O0k7STt1QixPLDBDO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7O0ksWTs7O0s7OztNOzs7Szs7Ozs7OztROzs7Uzs7Ozs7O007TyxPO087TTs7O2dCOzs7Ozs7STs7Szs7OztLOzs7Yzs7OztJOzs7TyxPOzs7Ozs7Ozs7OztpQjs7Ozs7USxPOzZCLE87O1EsTztPLFk7O1EsTzs7TyxPOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJO0k7WTs7Ozs7RzsrQixvQzs7STtJO1k7Ozs7O0c7O0k7Ozs7SyxPO0k7RztpQyxzQzs7SSw4QixPO0k7RzttQyx3QzswQixzQztnQyw2Qzs7STtnQztrQztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsbUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7Uzs7OztHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7cUIsTzs7STtHOztJLEksVTs7Ozs7O1M7O3VDO2lCLE87Ozs7O0ssTTs7STtHOztJLFk7OzsyQjs7O087O087OztPOztHOztJLEksVTs7OzRCOzs7O0c7RyxhO29DLHlCOztJOztHOztJOzs7Ozs7O0k7RztHOzs7O1EsTTtPOztJLFc7STtLOzs7UTs7OztXO29COztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVLHNCO1UsUzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZLHNCO1ksTzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTs7O1csc0I7VyxRO1csVTs7Vzs7OztZOzs7O3VCOzs7Ozs7OztTOzs7OzthO2E7WTtVLE87Ozs7SztNLHNCO2U7O0k7STtHOzs4QixpQztJLE87Rzs7STs7SztLO0s7STtHOztJO0s7O00sc0I7SyxXOzs7SSxvQjtJLFc7OztJOzs7O0s7Szs7Szs7Ozs7Ozs7Ozs7O0s7OztNLHNCO2lCOztLOzs7TTs7Uzs7VTtVOztTLG9CO1M7VSxPO1U7Uzs7aUI7O0ksb0I7STtZOzs7Ozs7Ozs7Ozs7OztHOzs4Qiw2QztJLE87Rzs7STs7Tzs7OztRO1Esc0I7USxRO1E7Tzs7Tzs7Ozs7VztXO1U7USxPOzs7O1c7VztVO1EsTztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJO0s7Szs7SSxvQjtJO1k7Ozs7Ozs7O0c7OzhCLDhDO0ksTztHOztJOztLO0s7O0s7Szs7SSxvQjtJO1k7Ozs7Ozs7Rzs7OEIsK0M7SSxPO0c7OzhCLCtCO0ksTztHOztJOztLO0s7O0k7Rzs7OEIsK0M7SSxPO0c7O0k7O0s7Ozs7SSxvQjtJO0ssTztLOztJLG9CO0ksVztJO0c7OztLO0k7SSxPO0c7OztLLFc7SyxPO0k7SSxPO0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7STs7SztLOztJLG9CO0ksVztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxPO1ksTztXLE87VTs7Ozs7O1MsVztTLE87UTs7Ozs7OztVO1c7O1UsVztTO00sTzs7Ozs7UTs7Ozs7UyxPO1M7Ozs7O1E7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7O1MsTztTOzs7OztROzs7Ozs7O1MsTztTO1M7Ozs7OztROzs7OztTLE87UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7Ozs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7O087OztPOzs7Tzs7Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7Ozs7Ozs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJO0c7O0ksb0I7d0I7STs7Ozs7Ozs7O0s7O3dCOzs7Szs7d0I7OztJOzs7ZTs7Z0I7Ozs7Z0IsbUI7Z0I7aUIsVztpQjtnQjtlO2UsTzs7Ozs7Ozs7Rzs7O0s7STtJLE87Rzs2QixPLHVDOztJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOztJO0s7SztLO00sTTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O0s7OztpQyxTO0s7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTztJOztLO00sTTtNLE07TSxVO0ssTzs7OztJO0ksMEIsdUI7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7OztTOztTO1E7Ozs7Ozs7O0s7OztTO1M7UTs7Ozs7Ozs7Ozs7Ozs7OztLO087Ozs7WTs7Ozs7SyxNO0ssTTtLO087SztPOztLO087Ozs7WTs7Ozs7SyxNO0ssTTtLLE07SyxNO0s7TztJLE87Ozs7Z0I7Ozs7OztvQixXLCtCO0c7SSxpQjtJLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztLO0s7TSxVO00sVTtNLFk7Ozs7bUI7OztVO1UsYztvQjtVO1csTTtXLFU7Z0Y7VSxJLE87OztNLE87O0k7STtJOztHOztJLE87Rzs7STs7Ozs7d0IsWTtZO0k7Szs7TSw0QjtNO00sTTtxQjs7O0k7Rzs7STtLOzs7SSx5QztJOztLLDhCO0ssYztLLFE7SyxNOzs7SyxNO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0k7Ozs7Rzs7STs7Ozs7STtLOzs7Ozs7Szs7Ozs7SyxNO0k7WTs7Ozs7Ozs7Ozs7Ozs7RztHO0ksTztJOztJOzs7STs7aUIsTTs7OztNLEcsaUM7Ozs7Ozs7O1U7Ozs7Ozs7Szs7Rzs7STs7Szs7O007TTtNOzs7UztTLE87OztRO0s7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxROzs7SyxPO0ssUTtJO0c7O0ksUztJO0s7ZTtLLEs7TTtNO007O0s7Szs7TSxNO0s7O087UztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7O08sTzs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7SSx1Qjs7SSxXO0c7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STt1QixNLGdEO0c7STs7O1E7UztVLE07VSxXOzs7OytCOzs7USx5QjtPO0k7O0k7SyxNO0s7SztJLFc7Rzs7STs7Ozs7O0k7OztJOztJO0c7OzsrQixzQztJO0s7TztLLE07SSxPOzs7O3dCOzs7Ozs7Szs7Ozs7SSxJLFU7OzsyQjs7O2M7O0k7OztJOzs7SyxXOztLO0ssTzs7SSxPO0c7Z0Msa0I7NkMsK0I7O0ksVTt3QixPLGlCO0ksVTtJO0k7Rzs7OztLLFU7O0ssTztJO0ksTzs7O0k7OztLO0s7SztLO0ksRztLOzs7Syw4Qjs7OztJO0k7O0ssSTs7Ozs7O007OztJO0k7Rzs7STtJLEc7SyxNO0ksSSxVOzs7OzZCLE07SyxZOzs7TTtNO08sSztPO007O0s7SyxNOztjLE07O0k7Rzs7STtJO0ssTTtLO0ssSztJO0k7RztnQyw2Qzs7STs7SyxVOztLO0ssVTtLOzs7O1UsSSxvQyxhOzs7O1k7WSxPOzs7WTs7YSxNO2E7WSxPOzs7O1c7Ozs7Ozs7aUI7Ozs7Ozs7OztjLE07Ozs7dUI7O1c7VyxPOztTO00sTzs7Ozs7O0k7Rzs7STtJLEksVzs7OztNLE07OztJLFcsTTs7STtHOztJOzs7SyxNO0ksTzs7OztJLE87Ozs7SSxPOzs7O0ksTzs7O0k7Ozs7O0ssUTtLO0k7Rzs7STs7SztLO00sTztLO0s7TSxNO007Ozs7TTtLOzs7O007OztLO0s7SztLO0k7SSw4QixPLCtCO0ksTztHOztJO0s7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztRLE87Ozs7OztNO0c7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJLHFCO0ksb0I7SSxzQjtJLGE7O0ksTztHO3NDLHFCOztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07OztHOzJCLFM7O0k7O0s7Ozs7O007TTs7O00sSSxhOzs7Ozs7O007OztVOzs7OztlLFcsTzs7ZSxPO2M7OztVO1M7TyxPO2dCOzs7Ozs7SSxXO3lCLHFCLDBCO0ksVztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7Rzs7OztLO007TyxVOzs7TztNOzs7Ozs7b0MsTTs7Tzs7O1E7OztPLGM7Ozs7Ozs7TTtPO1E7VSxpQjtROzs7OztTLEk7Ozs7VTs7OztTOzs7Tzs7Ozs7Ozs7OztJOzs7OztLO007TztTLGlCO087Ozs7Ozs7Ozs7O0s7OztNOzs7UztTLGM7UTthO0ksVzs7SztLO0k7SSxXO0ksTztHOztJO0k7Szs7OztVO1csTyxjLDRDOzs7TSxRO007bUM7O007Ozs7OztXO1ksTzttRCx5Qjs7O087UyxXOzs7Ozs7Ozs7O1c7VyxPLDhCO1U7Ozs7Ozs7O0c7O0k7STs7Ozs7VTtXLE8sc0M7OztLOzttQzs7Ozs7Ozs7VztZO2EsYTthLHlCO1ksTyxjLDRDOzs7TTs7Ozs7Ozs7OztXO1csTyw0QjtVOzs7Ozs7O0c7O0k7STtLOztzQyxvQjtNLFE7TTs7Ozs7VSxJLHVCLGM7OztrQzs7O1M7TSxPOzs7O0c7RztJOzs7Ozs7Ozs7OztJOzt1QixNLGdEO3dDLGlDO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7Ozs7Ozs7Ozs7Ozs7STs7O0s7TSxPOztJOzs7Ozs7Ozs7Ozs7O0c7aUMsbUM7O0ksVztHOztJO2tEO0k7Rzs7STtLO0s7SyxPOzs7OztJO0s7O3NDLG9CO00sUTtNOztNOzs7VSxJOzs7Ozs7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTO08sTztPLE87TztNLE87Ozs7Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO3dCLGlEOztJO0ssbUIsTztLLE87OztJLE87O0c7aUMsdUI7Z0MsaUM7cUIsTyx5Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7OztLLDhCOztLO0k7STtLLFM7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjtJOztJLE87Rzs7STtHOztJLE87Rzs7SSxPOztHOztJLE87O0c7O0ksTztHOztJLE87Rzs7STtJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOzs7Rzs7STt1QixNOztJO0c7O0k7dUIsTTs7STtHOztJOztPLGtCLG1DOztPOzs7UTtRLFM7Tzs7Tzs7O1E7UTtPLE87O0c7O0k7SztLLE07SSxPO0c7O0k7O08sa0I7MEIsTTs7Tzs7Tyw4QjtPLE87ZSxNOztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHOztJO0ksTztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHOztJOzt5Qjs7Tyw4QjtPLE87ZSxNOztHO2tDLHFDO2tDLHFDOzRDLGdDO3NDLDZCOzs7O0ssTTtJLHFCLE87d0I7SSxJLFMseUM7OztLO0s7O0ksTTs7O0ksWTs7OztPLEksVzs7OytCOzs7TztPOzs7TyxJOzs7O1MsTTs7O08sSSxZOzs7O1MsTTs7O08sVzs7O1E7O08sTTs7O08sSTs7OztTLE07OztPOzs7TyxJOzs7O1MsTTs7O087OztRO1M7Z0MsTyxnQztVLFM7Ozs7O1UsTTs7O1E7O08sTTs7Rzs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTztRLE87O087O087OztRO1EsUztRLFE7TztlLE07O0c7O0k7Szs7UTsyQixNOztROztROztRLEk7OztTLHdCO1UsVztVLE87Ozs7O1MsVztTLE87OztTLE07O1E7O1E7O1E7O1E7Z0I7OztJLE87Rzs7SSxZLE87O0k7O0csdUI7MEMsa0M7d0MsMkI7O0ksVztJOzs7TTs7TyxPO2tCOzs7Ozs7Ozs7O0c7O0k7OztPLFUsMkI7Tzs7Tyw4Qjs7Ozs7Tzs7O1E7UTs7UTtPOzs7O0k7OztNLHNCOzs7TztRLE87USxPO087UTtTLE87b0I7OztnQjs7Ozs7OztLOzs7Ozs7TTs7cUM7Ozs7O007Ozs7Rzs7SSxJLCtDOzs7OztNLE07O0s7O0c7O0k7O087O08sOEI7O2UsTTs7Rzs7STs7Tzs7Ozs7USxHO1MsVztTLEs7Ozs7Ozs7O2UsTTs7Rzs7STtJO0s7OztNLEk7Ozs7Ozs7Ozs7O0s7O0c7O0k7O08sa0I7TyxPOztPOzs7UTtRLFM7TyxPOztPLGdDO087O0c7O0k7Rzs7SSxJLDZCOzs7O0ssdUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7O2dCOztHOztJLFc7STtLLG1CO0s7O007Ozs7OztLO007TyxPO08sTzs7Ozs7O007TyxLO08sTztNOzs7SztLO0k7SSxJLGdCO0k7Szs7Ozs7Ozs7Ozs7O3NCO0c7Rzs7SSxpQjs7STs7SyxHO00sVztNLEsseUQ7OztJO0s7Szs7Ozs0Qjs7O0c7O0k7cUIsTyxpQjtJO0ksVzs7STtHOzs7SztLLE87STtJO0s7SyxvQyx1Qjs7O08sWTs7Ozs7TyxZO087NEI7Tyx3QjsyQixpRDtPOzs7UTtPO08sTztNOzs7Szs7Szs7O2U7ZTtnQjtpQixVO2lCO21COzRCOztnQjs7ZSxtQjs7ZTtjOztHOztJOzs7O0c7O0k7MkIsTyxxQztJLE87Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7OztXO1csK0Q7VztVO08sTzs7Tzs7O1E7K0IsZ0I7UTt5QjtRLE07TyxPO2U7O0c7OzBCLGdCOzs7Tzs7UTt5Qzs7O087OztRO1E7O1c7O1EsTTtlOzs7O3dCO0ksTztHOztJOzs7TztRO1E7Ozs7K0I7Ozs7O087UTtROzs7OytCOzs7O2tCOztPLE87O0c7O0ksSSxJLE87Ozs7OztJLE87Rzs7STs7SyxPO0ksTztHOzJELE87Rzt1RCxPO0c7O0ksZSxPOzs7SyxNOztJLE87Rzs7STs7Ozs7OztLOzs7Tzs7Tzs7UTs7Ozs7Ozs7OztRLEs7Ozs7OztTO1Usb0I7VTtVOzs7YTthO2EsTztZOzs7YTthOztnQjs7O2lCLFM7aUI7Ozs7NkI7Ozs7O2dCO2lCLE87aUIsWTtpQjtpQjtpQixPO3VCOzs7Z0I7OztpQixhO2lCLE87Z0I7Ozs7O2lCOztrQixPO3dDO2tCLE87OztxQjs7b0I7aUI7Ozs7aUI7O2tCO2tCLE87d0M7a0IsUTs7O3FCO3NCLFk7c0I7OztvQjtpQjs7O2dCO2lCLE87aUIsWTtpQjtpQjtpQixPO3VCO2dCOztpQjs7O2lCOzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7aUIsUTtpQjtpQixRO2lCO2lCLE87aUIsWTtpQjtpQjtrQzs7O2dCOzs7O2lCLFc7aUIsTztnQjs7O2tCLE07Ozs7MkI7Ozs7Z0I7aUIsUztpQixPO2lCLFE7aUI7Ozs7Ozs7Ozs7aUI7aUI7aUIsTzt1Qjs7Ozs7Z0I7OztpQixXO2lCO21CO2lCLE87aUIsVTtpQjtpQjtpQixPO3VCOzs7O2dCOzs7aUIsUztpQjtpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7O2dCOzs7aUIsUztpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7O1k7UztTOzs7OztXOzs7WSxpQjtZOzs7OztXOzs7Ozs7WSxtQjtZLGtCO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7Ozs7WSxtQjtZLGtCO1k7Ozs7Ozs7Vzs7Ozs7WSxtQjtZO2M7WTs7Ozs7OztXOzs7Ozs7WSxtQjtZLGtCO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7Ozs7Tzs7O1EsYztRLE87USxPO1EsTztRLE87O1E7OztTLE87NkI7OztPO21DOzs7O0k7O0ssVztLO007TyxPO2M7Ozs7OztJO0ssVztLLEcsd0M7SyxJLGUsdUIsc0I7SztLLFc7Szs7OztxQjs4Qjs7Ozs7O1U7O1UsVztVLE87UztNLE87Ozs7Ozs7Rzs7STs7SyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxnRDs7OztpQiwwQjtPOzs7Ozs7Ozs7O0c7O0k7SSxpQjs7SztJO0k7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO3lELGU7Szs7SSxJLHFCOzs7Ozs7O0s7O00sUzs7O1M7Ozs7eUI7OztTO1U7VyxVO1c7VztXO1c7VztpQjtXO1k7WTs7ZTs7Ozs7Ozs7Ozs7O1c7VyxXO1c7Ozs7MkI7b0M7Ozs7O2dCOzs7Ozs7Ozs7Ozs7Ozs7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7Uzs7Ozs7Ozs7OztVO1M7Ozs7Ozs7Ozs7Ozs7UTtNLFE7NEI7O21COztLOztNO00sZTs7O1M7Ozs7eUI7OztTO1U7VyxVO1c7VztXO1c7aUI7VztZO1ksc0I7VztXO1ksTztZLHVCOzs7OztnQjs7aUI7OzJCOztnQjtnQixPO2U7WTs7OztTO1UsWTs7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCO00sZTs7O0k7Szs7O0s7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SztLLE87SztJOzBDOzs7STtLOztNLGU7TTtNO1k7TTtPO08sc0I7TTs7OztVOztXOztxQjs7O1U7VSxPO1M7TTs7O0k7OztLOzs7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7OztJOztLO0k7STtJO0ssUztLOzs7SztJO0s7TSxPOzs7O0k7Ozs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Ozs7STtJO0s7TSxPOzs7O0k7Ozs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJO0s7OztLOztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0M7Ozs7SyxJLHNCOzs7Ozs7a0I7Ozs7OztLO007TSxXO00sTTtNLE87TSxPO00sTztLO0s7TSxZO00sUTtNLE87TTs7Ozs7Ozs7OztLO0s7O0c7Ozs7STs7O0s7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtLO0s7STtHOztJOzs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJO0c7O0k7SztLLFE7Szs7O0k7Rzs7STtJLDRCO0c7O0ksWTtJO0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7Rzs7STtJO0c7O0ksb0IsTztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtCO0ksTztHOztJO0ssSztLO0s7MEM7STtHOztJO0ssSztLLGdDO0k7Rzs7STtLLEs7SztLLFE7SztJO0c7O0ksUztJOzs7Rzs7STtLLEs7SyxRO0ssNkI7STtHOztJO0ssSztLO0ssb0M7STtHOztJO0ssSztLLCtCO0k7Rzs7STtHOzs7OztLLFc7Ozs7Ozs7VSxnQjtVOztXLFE7VSxXO1M7Ozs7Szs7UTs7O1MsbUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7OztTLHFCOzs7Ozs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7OztTLHFCOzs7Ozs7Ozs7Ozs7OztJO0ssTztLOzs7STtHOztJO0s7OztJO0c7K0U7Rzs7OztLOzs7O0k7Szs7OztJO0s7O0c7RztJOztHO0c7STs7RztHO0k7OztJO0k7Rzs7STtLLEs7OztLOzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJO0ssSzs7O0s7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLEk7Ozs0Qjs7O3FCOzt1Qjs7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STs7Szs7Ozs0QixPLGlCLHFCOzs7SztJO0k7Szs7Syw0Qix5QjtLOztLLDJCLHdCO0s7O0sseUIsMEI7Szs7Syx3Qix5QjtLOztLLDJCLHlCO0s7O0ssMEIsMEI7Szs7SywwQix5QjtLOztLLDBCLDBCO0k7Ozs7Ozs7Ozs7Ozs7O0c7OztLO00sTTswQjs7SyxHLDhCO0ssTTtJO0ksSTs7OzRCOzs7O0s7OztNLEc7O08sVzs7O0ssTTtJOztLOzs7TSxHOztPLFc7OztLLE07STtJOzs7O0s7SztLO0s7SztLO0s7STs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjs7SyxNO0k7Rzs7STtJO0k7STtLOztlO2U7SyxjO0ssaUI7SyxpQjs7OztLOzs7O1U7O3VDOztTO007O0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7VTs7aUI7Ozs7Ozs7OztXOzs7Ozs7UTtLOztJO0c7O0k7SztPOzs7Ozs7SyxLO0s7O0ssTTs7STtHOztJOzs7Ozs7Ozs7Ozs7OztLOztJO0c7O0ksd0I7SztJO0ssTztLLE87SSxPOzs7Rzs7STtLLE87SyxPO0s7TyxXO0ksTztHOzs7STtJO0k7SyxPO0ssTztLO087O1M7OztJO0k7Rzs7STsyQixXO0c7OzsrQiw0QztJOztHO0csYztHOzs7O0c7STtJLFU7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSTs7OzRCOzs7STtHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLE87Rzs7SSxXO0ksVztJO0s7TSxPOzs7Ozs7OEI7O3lCLE8sMEI7SSxPO0c7O0ksa0I7SSxNO0c7O0ksVTs7STs7O0s7TTtROztXO00sTztNLE87SyxPO0k7SSxPO0c7O0ksVTs7STtJLFc7SSxPO0c7O0ksVTs7STtJLFc7SSxPO0c7O0ksVTtJLFc7SSxPO0c7O0ksVTtJLG9COzs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0ksVTs7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7STs7O00sWTs7O087OztRLEksVzs7Ozs7O1E7O087O087Ozs7O00sTTs7OztJO0c7O0ksVTtJLGM7STs7O0s7TSxXOzs7Ozs7O0s7OztHOztJO0c7O0k7OztTLEk7OztNO08sSSxXOzs7Ozs7Ozs7Ozs7O0k7SyxrQjs7Szs7OztLOztLOztJLEk7Ozs7TTs7O0k7STtHOztJO2dCOztLOztNO00sTztLO0s7STtJLE87Rzs7STs7Tzs7UTs7O087O087OztROzs7Tzs7TztROzs7O1E7VTs7Tzs7Rzs7STtLOzs7Szs7OztNOztLOzs7a0I7O0k7Rzs7STs7O0s7OztNOzs7TTs7Ozs7SztLO0k7STtLLGtCO0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCO2tCOzs7O1c7O1k7WSxPO1c7VztVO08sTzs7Ozs7Ozs7USxJLGE7Ozs7Ozs7Ozs7O2M7YTthO1k7UyxPOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJOzs7Tzs7OztROzs7OztRLEksWTs7Ozs7Ozs7Ozs7YzthO2E7WTtTLE87OztPOztPLE07O0c7O0k7O0ssTTs7STtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0ksVTtJO0c7O0k7Ozs7OztRO087OztPOztPO1E7OztPOztHOztJO0k7Rzs7STtJLGlCO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0ksSTs7Ozs7OztPOzs7OztJO0c7O0k7O0ksc0I7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7O1U7UztTO1E7SyxPOztJO0c7O0k7SSxJOzs7Ozs7O087Ozs7O0k7Rzs7STs7SSxzQjtHOztJO0ksSTs7OzRCOzs7Ozs7OztpQyw0QztTO1E7SyxPOztJO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7OztTOztTO2lCOztLOztJLG9CLGU7OztLO0s7O0k7Rzs7SSxJOzs7O0ssYTtLLEk7Ozs2Qjs7O0s7O0k7Rzs7SSxJLHlCOzs7NEI7OztJO0c7O0ksdUMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7STtLLFc7Szs7O2U7ZSxPO2M7Ozs7STs7Szs7O0s7eUI7SSxvQixPOztLLE8sNEI7STtJLE87Rzs7STtLOzs7TTswQjtLOztNLE87OztTLFk7O1MsTztRO0ssTzs7SSxZOzRCLE8seUI7O0k7Szs7NkIsc0Isc0I7TSxRO007Z0I7Szs7Ozs0Qix3QztNO1EsVzs7OztHOztJOztLOzs7ZTtlO2dCOzttQjs0QjtnQixvQixLO2dCLE87O2UsbUI7ZTs7Z0IsTztlLE87Yzs7OztJOztLOzs7Szt5Qjs7O0ssUztLLE87STtJLE87Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7Szs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsdUM7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7Ozs7SyxJLEs7SyxXO0k7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7STtJOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0ksYztJOzs7Ozs7Ozs7Ozs7O0c7RztJOzs7USxNO087STs7O1EsTTtPOzs7SyxXO0ssTztJO0k7OzhDLHFCO08sTzs7Ozs7K0IsNEI7TyxPO2U7O0c7OztLLFc7SyxPO0k7SSxPO0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7OEMsc0I7Ozs7Rzs7STtJLDZDLHlCOztHOztJO0ksdUMseUI7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJO0k7K0Msc0I7O0c7O0ksSTtJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7O087TztrQjtxQztPLE87Ozs7Ozs7OztPO087OztPO087OztPO087OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7OztPO08sTzs7Ozs7Ozs7Ozs7O0k7OztPO08sRztRLFc7UTs7O1E7UyxPO1MsTztROztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7TyxPOzs7Tzs7OztJLHVCO0k7O0s7SztPOztVO0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztpQyxxQjs7STtjO2M7O2tDLG1COztJLEksTSxxQixXO0k7Rzt5Qix1Qjs7STs7Ozs7K0I7Ozs7O0k7Rzs7SSxZO0k7aUI7O2UsTztLLG1CLEk7Vzs7O0c7O0k7Szs7d0I7Ozs7O1MsbUI7Ozs7Szs7SSxPO0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJO0c7MEIsTyx5Qzs7STtLLE07STtHOztJO0ssTTtJO0c7O0k7SyxNO0k7RzswQzs7STtLLE07STtHOztJLHNDO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Rzs7SSw4Qjs7O087O087O087O087O087O087O087O087O087O087O087O08sa0M7Tzs7O0c7a0MscUM7O0k7OzswQixPOzs2QixPOzs7USxPOzs0QixPOzs7OzsyQixvQixPLHNCO1EsTzs7O1EsTzs7NEIsTzs7NEIsTzs7NEIsTzs7O1E7USxPOztJO0c7O0k7Ozs7USxXOzt5QixXOzs7USxtQjs7Ozs7UyxtQjs7Ozs7Ozs7O1k7WSxtQjtXO1EsVzs7O1EsVzs7eUIsVzs7c0IsVzs7d0IsWTs7USx5QyxNO1EsWTs7STtHOztJOztJOzZCLGtDO0c7O0k7O3VCLGlDLGlCO0kscUI7Rzs7STs7Szs7O1MsRyxxQixNO1M7UTs7Ozs7dUI7OztJO0c7O0k7O3VCLGlDLGlCO0kscUI7Rzs7STtJOzs7OztrQyxPOzs7UztTLE87Ozs7Szs4QiwrQjs7Rzs7STtJO0s7O0k7STs7Rzs7d0IsbUIsVTtJLE87Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtxQixxQztJOztHOztJO0ksTztHOztJO0c7K0IsTyxxQzs7STs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1Esd0M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7Ozs7Ozs7Ozs7O08sTTs7O0k7Rzs7STs7Ozs7Ozs7ZTs7STtHOztJO0ssa0I7SyxtQjtJOzs7O0s7TTs7cUI7TyxNOztNOzs7O087O007Ozs7TyxNO00sSztNLEk7OztNLEk7TTtPO3FCO087Ozs7UTs7USxJOzs7Tzs7OztJLGlCO0k7RzttQixPLG9DOztJO0ksTztHOztJO0ksTztHOztJOztJO0s7aUI7Szs7OztNOzs7O0s7Ozs7O1csVTtXLE87VTs7OztNO007OztPLFU7O007TztTOzs7O0s7TTs7OztJOzs7Ozs7SyxNO0ssUTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0ksUztJO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0c7O0kscUI7STs7O2tCO0c7O0k7O3FCLE87OztPLE87Ozs7TyxPOzs7Ozs7Ozs7Rzs7STtHOzs7SSxZLE87O0ksTzs7O0k7OztPLE87OztPLE87OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7cUIsTzs7cUIsTzs7OztRLE87O08sTzs7O3VCLE87O3VCLE87O3VCLE87O3VCLE87O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7OztLO0k7SSxPO0c7O0k7STs7Rzs7STs7SztLO0ssTztJO0ksTztHOztJO0k7O0s7SztLLEksbUI7bUM7OzswQixPOzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTs7O1E7UTtTOzs7WTtZOzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7Ozs7Ozs7YSxPO1k7WSxPO1c7UTs7Ozs7UTtROzs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNO087Tzs7Vzs7WTthOzs7Z0I7Z0I7Z0I7OztnQjtnQjs7O2dCO2dCOztZO1k7OztNOzs7bUM7Ozs7USxPOzs7UTs7Ozs7USxPOzs7UTtROzs7UTtRO1E7OztrQjs7bUI7O29CLE87b0IsTzttQixPO2tCO2tCO21CLFE7bUIsTztrQjtrQjtpQjs7Ozs7UTtROzs7UTtROzs7UTtROzs7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtROzs7O0c7O0k7STs7SztLO0ssSSxtQjs7TTtNO087Tzs7Vzs7WTs7O2U7ZTtlOzs7ZTtlO2U7ZTs7O2U7ZTtlOzs7ZTtlOzs7O007OzttQzs7OztRLE87OztRLE87OztRO1E7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtROzs7UTtROzs7UTtROzs7Ozs7UTtRO1E7UTs7Uzs7UztTOztVOzs7Z0M7O2E7YTs7UztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7UTtROzs7UTtRO1E7UTs7O1E7UTs7Ozs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7OztXOzs7OztXOzs7OztXOzs7Ozs7USxPOzs7USxPOzs7UTs7Ozs7UTtROzs7UTtROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7O1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1EsTzs7O1E7UTtROzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7OztTOzs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7USxPOzs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7Ozs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7Ozs7UztTO1M7VSxPOztTOzs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7STtJOzs7SztLOzs7STtLLE87O0k7Rzs7STs7O0k7OztJOzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7O0k7OztJO0k7STtJO0k7STtJO0k7STtJLGdCOzttQiwyQjs7O0s7Szs7OztLO0s7OztJO0k7O0c7O0k7STtJLEk7STtJO0k7STtJOzs7Rzs7STtJO0k7STtJO0k7Rzs7STtJO0k7SSxJO0k7STtJLGdCOzs7SztLLE87OztJO2dCO0k7STtHOztJO0k7O0s7SztLLEksbUI7Ozs7UTtROzs7UTs7UTtRO1E7OztRO1E7UTs7Ozs7UTs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7Ozs7O1M7UztTOzs7Ozs7UTs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEksaUI7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Tzs7O087TztPOzs7TztPOzs7TztPOzt5Qjs7Rzs7STtJO0k7O0c7O0k7STtJOztHOztJLFk7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztrQyxtQixVO087Ozs7Z0I7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7STtJO0k7O0c7OztJO0k7Ozs7STtJO1k7O0k7Ozs7STtJOzs7STs7Szs7OztNLE87O0s7SztLOzs7STtJO0c7Z0MsMEM7bUMsMEM7OztJOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztPLE07O08sTTtlLE07O0c7MEMsa0M7aUMsMEM7Rzs7O3lCLG9COzZCLGlDOztJLE07Rzs7SSxNO0c7Rzs7SSxzQjtJOzs7SyxXO0ksVztHO0c7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYzs7STs7Ozs7Rzs7STs7Ozs7RztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7Ozs7Rzs7STs7OztHOztJO0ssUTs7O3FCOzs7O0c7O0k7O0c7O0k7O0c7O0k7O0k7RztxQywrQjs7STs7Z0M7OztlLE07O2tCO0c7Rzs7STs7SztNLE87TTs7eUM7Ozs7STtHOztJOztHOztJLEkscUMsSTtJO0k7RztHOztJOzs7O0s7STtHO3dCLE8sOEM7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RzsyQixrQztpQyxxQztHO0k7STtJO0k7STs7STtHOztJLE87Ozs7Ozs7Ozs7RztxQyw4Qjs7STsyQztJO0c7O0ksWTsyRTtJLE07Rzs7STtJO0ssWTs7TTs7Ozs7Tzs7Ozs7Ozs7UztTLE87UTtLLFc7O0c7OztLO0ssTztJO0ksTztHOztJOzs7O007TyxPO08sTztPLE87TSxXOzs7TTs7TyxPO08sTztPLE87TSxXOzs7Ozs7Ozs7Ozs7OztLLEc7TTtPOzs7YTtNLEk7O007Ozs7Tzs7OztHOztJO0k7SyxZOzs7Ozs7OztLOztHOztJLEksdUIsUTs7NEM7STtHOztJLEksdUIsUTtvRDtJO0c7O0ksYzs7OztROzs7UTtTLFk7Ozs7YSxPOzs7OztTLE07OztJLE87Rzs7SSxZOzs7O1E7OzJCLE87O0ksTztHOztJO0ksTztHO0csc0I7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPO1E7Ozs7YztPLEk7O08sSTs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7RztJO0k7STs7STtJO0ssVztLLFc7SyxJLE87Ozs7Ozs7O1U7c0I7Yzs7Ozs7OztVOztXLHNCO1UsTzs7Ozs7OztTOzs7O1M7O1U7VTs7YyxzQjs7O1M7UyxlO29CO1MsSSxPOzs7SyxjLHNCO0ssTzs7Rzs7STs7STs7OztJO0c7O0k7d0I7SSxTO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7OzsyQyx5QjtNOzs7Ozs7O1U7VSxXOzs7VyxPOzs7MkIseUI7VSxPO1M7TTs7O3dDO0s7SztLOzs7Ozs7SztLOztHOztJO0s7a0I7SztLO0s7Ozs7OztLO0s7O0c7Rzs7STtJO0k7Ozs7O1M7O1MsSSw0Qjs7Ozs7VSxNOzs7UTtLO0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztROzs7Uzs7Ozs7Ozs7Ozs7O007TSxPOzs7Ozs7STtHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTtXOztXLE87Ozs7O1U7Ozs7O1U7Ozs2QixtQiw0QjtVLE87O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7SyxJOztHOztJO0k7SztNLGE7TSxPO0ssVztnQiw2QjtLLFk7Ozs7O29CO1UsSSxXOzs7c0M7Ozs7Ozs7OztvQjtVO1UsRywrQjtVO1csTzs7Ozs7O0ssMEI7SyxPOztHOztJLFc7STtLO0ssVztLOzs7Ozs7SztLLE07O0c7O0ksVzs7USxtQztLOzs7TSwwQjtNLE87Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7OzttQyxvQjt1Qjs7VTs7Ozs7O2U7Z0IsTztnQixzQjtlO2M7MkI7VTs7WSxNO1csVztXO1c7Vzs7Ozs7O1c7VywwQjtXLE87Ozs7Ozs7O3FCO1c7Ozs7Ozs7O1c7c0I7VTs7O1Msb0IsVTs7OztxQjtXLGU7Vzs7OztTO1MsMEI7UyxPOzs7b0I7VTtVLEcsK0I7VTs7Ozs7SztLLDBCO0ssTzs7Rzs7SSxtQjtlO0ksVztJLEksd0I7Ozs7SztLOztHOztJLEksOEI7Ozs7O0s7O0c7O0ksdUI7Ozs7TTtPLE87TyxjOzs7Ozs7OztLLEk7Ozs7SSxpQjtJLFc7STtJO0s7O0ksWTs7Ozt3Qjs7O1E7UTs7O3VCOzs7UztVLE07Ozs7Ozs7OztTO1U7aUMsb0I7O3FCOztROztTLHNCO1EsRyw2Qzs7Ozs7YSxPOzt1Qjs7OztZO1ksTztXO1EscUI7USxJLFc7OztvQzs7O1E7Ozs7Z0MsbUIsd0I7USxPOztJLG9CO0ksTztHOztJO0ksdUI7Rzs7STtJLFc7STtHOzs7Ozs7O1E7Ozs7O1E7UTs7Ozs7WTtZLE87VztROzs7OztZO1ksTztXO1EsTzs7O1E7Ozs7O0k7Rzs7STtHOytCLDBCOztJO0ssUTtLO0s7O0ssWTs7OztxQjtvQjs7Ozs7Ozs7Szs7O3FCO0s7SztLO0ssb0I7SyxPO0k7O0ssSSxNOztNO2lCO007TSxZOztPOztRLE87USxLOzs7O3FCOzs7Ozs7SztJO0k7STtPO0ssYyxzQjtLOztJOztLOzs7TSxPOztJO0ksTztHOztJOzRCO0c7O0k7SyxZO2dCOzs7Ozs7O0s7SztLO007TSxzQjtLLE87O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7a0I7Tzs7USxzQjtlOzs7O007Ozs7O00sZTtNO007O08sc0I7TSxPOztJOztLLFc7SztJO0k7STtLO00sVztNOzs7Ozs7TTtHOztJO0ssVztLLFc7SztRO00sTTtLO0ssTztJO0ksSSxTLEk7Ozs7OztJO0k7RztHOztJLHNCO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Uzs7VSxPO1UsUTs7O1U7Ozs7WTs7Ozs7VTtXO1csTzs7Ozs7O1k7Ozs7Ozs7Ozs7OztZLE07Ozs7VSxjOzs7OztZLEs7YTtjLFU7Ozs7OztnQjs7Ozs7Ozs7Ozs7O2E7O2M7Z0I7Yzs7aUIsa0IsUTtpRTtpQjs7YyxTO2E7ZSxrQztjLFc7YztnQjtxQjtlO2dCLE87d0I7Ozs7Ozs7Ozs7O1U7O3NCOzs7OztrQjs7STtJOzs7STs7Ozt5QixzQztJLE87Rzs7STs7STs7STtHOzs7c0IsNEI7SyxPO0k7SSxPO0c7Rzs7STs7Rzs7STtLO00sTzs7Ozs7Ozs7O0s7STs7O087aUI7SztJLE87Rzs7STs7Ozs7Ozs7O0s7TTs7O0ksVztJOzs7Ozs7Ozs7Ozs7OztZO0c7O0ksWTs7OztNOztPLE87TyxPO00sTzs7OztHOzs7Szs7Ozs7O1U7VztXOztXO1csUTs7OztVO1c7VztVLEs7VyxNO1U7VTtTOzs7Ozs7d0I7SztNLFE7TTtNOzs7SyxvQjtLLGM7SztJO0ksTztHOzs7c0IscUM7SztNLFU7TTtLO0k7SSxPO0c7OztLO0ssb0I7SztNLFU7OztLLG9CO0s7TSxTO007SztJO0ksTztHOztJOzs7Ozs7O1M7Ozs7VSxPO1M7UTtLLFc7Ozs7Szs7OztNLE87TSxPO0s7STtJLFc7Ozs7Szs7Ozs7Ozs7Ozs7OztLLG9CO0s7TSxPOzs7OztNO2dDOzs7OztLLG9CO0s7YTs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1Msc0I7UyxRO1M7UTs7UTs7Uzs7O1k7WTtXO1MsTzs7OztZO1k7VztTLE87UztROztROzs7O1M7UTs7OztLO0ssb0I7SztNLFc7TTtLO0k7SSxPO0c7O0ksYzthLE87O0k7RztHOzs7SSxjOztTO0ssZ0I7SztNO08sTztPLFE7OztPLFU7OztPO1EsUTs7O1csVztXLE87VTtlOzs7TSxTLE07TTs7Ozs7TTtPLGM7TyxPOzs7TztROzs7VyxNOzs7Ozs7OztzQjs7Ozs7Ozs7VTtXOzs7OztPO1E7O1c7Ozs7O1k7WTs0Qjs7O1c7O1ksTztZLE87Vzs7O29COzs7VztXO1k7YSxPO2Esa0I7OztXO1k7WSxROzs7O1c7OzsrQixhLHlCO1ksTztZLFU7OztlLFc7YztZLE87WSxZO1k7Ozs7O08sSSw2Qjs7TTtNOzs7STtPLG9DO0ksSSxZLDRCOzs7OztRO1EsTzs7O0k7Ozs7SyxZOzs7TTs7SyxNO0k7SSxXO3dCLFcscUM7SSxZOztJO0s7O0s7Ozs7Ozs7STs7STtHOztJOztLO0k7SSxPO0c7OztLLFk7Ozs7Ozs7Ozs7OztNLEk7O0s7SztJO0ksTztHO0c7Ozs7USxNO087O0ksVztPO0ssTTs7O0k7OztLO00saUIsUTs7Tzs7O1E7Tzs7OzBCLE8sc0M7OztNLE07O3VDLE87OztJO0s7Ozs7STtLO0ssVztLOztLOzs7Ozs7SztLLE07O0c7O0k7SztLOzs7OztNLE07OztHOztHLCtCOztHOztJO0s7OztJLFk7O0s7Ozs7TSxRO00sUTtNO00sVTs7TSxJLFU7Ozs7TyxhO08sRztRLE07TyxPOzs7TTtPO1E7Ozs7Ozs7O007TyxPO08sVTtNO007TTs7OztNLEk7Ozs7O0ssSTs7Ozs7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7OztJO0k7SyxZOzs7OztTLEksVzs7O2lDOzs7MkI7UyxJOzs7cUM7OztTOzs7Uzs7Ozs7Uzs7O1MsTTs7Szs7Rzs7STtHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkseUM7Ozs7SztLLE07O0c7O0ksSSwwRDs7OztnQzs7O0c7O0k7SyxJLEk7Ozs7TTtNLFM7TTtPO1E7Ozs7Ozs7O007Ozs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7O2E7O1UsTztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SztNLFk7TTs7Uzs7SyxPOztJO0c7Rzt3Qix1Qjs7STs7Ozs7OztJO0k7OzthO087NEIsMEI7Ozs7O0s7SyxNOztHOztJLEksb0I7Ozt3Qjs7O0c7O0ksSSxvQixjOzs7d0I7OztHOztJO0ssTztLLFc7O0ssWTs7Ozs7UyxHO1UsTTtTLHNEO1Msb0I7UztVOzs7Ozs7Ozs7VTs7Ozs7O1UsSSxJLE87Ozs7Ozs7OztjLDZCO2M7YTtVLE87Ozs7UyxhOztLOztNO08sZ0I7O087d0I7TSxPOzs7Ozs7STtHOzs7OztNLE07Szs7Ozs7TTs7UztVOzs7YztjLE87YTtlO1c7VTs7OztpQzs7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0k7STs7SyxXO0ssVztLLEc7TTtNO08sTzs7TTs7SztNO08sVTtPLFc7O08sdUIsTztvQjs7Ozs7TTs7Ozs7bUI7TTtPLE87O007O0k7O0ssWTs7Ozs7d0I7O1M7VTtXLEs7Vzs7O2M7OztvQjt3Qjs7YTtXLE87VTs7Ozs7OztVLDBCO1UsTzs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssb0I7SyxPO0k7O0s7OztLOzt5QixrQztJO0s7SywyQixpQztJLE87Rzs7SSxJLDRCLGM7Ozs0Qjs7O0c7O0ksSSw0QixjOzs7NEI7OztHOztJLEksMEI7Ozs7O0s7O0c7O0k7SSxPO0c7RyxrQjs7STs7O0s7Ozs7bUI7OztVO1UsTztTO1MsTzttQjs7O00sSTtlO0k7O0s7SztNLEcsMkM7bUI7TSxZOzs7Ozt5Qjs7VTtXO1ksSztZOzs7ZSxlOztjO1ksTztXOzs7OztZLE87Ozs7VSxXO1U7Ozs7OzhCLE8sb0M7VSxHLHlDOzs7O00sTzs7STtJO0c7O0k7O0s7SyxPO0k7SSxvQjtxQixPLDJDO0ksRztLO3FCLE8sMkM7SSxHO0s7cUIsc0I7SSxVO3FCLHNCO0ksVTs7eUIsTyxzQjtJO0s7SywyQix3QztJLE87Rzs7STtLO0s7Ozs7OztLOztHO0c7O0ksb0I7SSxhO0ksb0I7SSxhOztLO00sWTs7O1U7UTtRO1E7OztNOztLO00sTztNO00sTztNLE87TSxPO00sVztLO0k7SSxPO0c7O0ksSTtJO0c7O0k7STtzQzs7TTs7O08sTztNLFM7Ozs7TSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLG9CO0ksVztHOztJLFc7Rzs7O0s7TSxPO00sZTtvQjtLLFc7SyxHO00sTTtLLE87STtJLEksZSwyQixjOzs7O0s7Szs7RztHOztJOztLLE07O0k7Rzs7STs7SztnQzs7O0s7TTs7TTtNLFE7OztNO00sSTs7SztJO0k7O0ssRywwQztrQjtLLFk7Ozs7Uzs7VSxRO1U7OztTOzs7OztTO1U7VSxPOzs7Ozs7Z0I7VSxLO1c7WSxJO1ksVTs7WTs7YSxVO2E7OzthO2EsTzthLE87YSxNO2EsTztZOzthOzs7VyxNOztVLFM7O1MsTzs7SyxPO0k7STtHOztJO0s7TSxPOzs7Ozs7Ozs7Ozs7NEI7OztHOztJLEksNkI7O0c7O0k7SyxJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7a0I7bUI7b0IsUztvQixTO29CLE87OztvQjs7O3FCO3NCLE87c0IsYztxQjs7O3NCLFc7c0I7Ozs7Ozs7OzttQjtvQjtxQjtzQixPO3NCLE87c0IsTzs7Ozs7Ozs7NkMsUzs0Qjs7b0I7cUIsTzs7O3dCO3dCO3VCOzRCOzs7b0I7cUIsTTs7Ozs7Ozs7Ozs7Ozs7MEIsSzswQjs7Ozs7Ozs7Ozs7O3lCOzt5Qjs7Ozs7Ozs7Ozs7Ozs7OytCOzs7Ozs2QixNOzs7Ozs7Ozs7K0I7Ozs7Ozs7OytCOzs7OzZCLE07OzRCLFc7NEIsSyxrQjs2QixNOzs7Ozs7MEIsTTs7Ozs7Ozt3Qjs7Ozs7Ozs7OztzQjs7OztxQixNOzs7O21COzs7OzBDOzs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7O21CLE87bUI7c0M7Ozs7bUI7O3NCLGtCLFE7c0U7c0I7O21CLE87bUI7NEI7a0I7OzttQjtvQixPO29COzZCO2tCLFMsTTs7OztzQjs7O3VCLFE7dUIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs0Qjs7NkI7OEM7NEIsTzs7Ozs7Ozs7Ozs7Ozs0Qjs7NkI7OEM7NEIsTzs7Ozs7Ozs7Ozs7Ozs7O3VCLE07O3NCO3FCO2tCLE87Ozs7Ozs7aUI7a0I7a0I7Ozs7O21CLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7bUI7Ozs7Ozs7Ozs7eUI7O21COzs7OztvQixNOzs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7OztTOzs7OztRLHFDOztPOzs7O1E7Ozs7Ozs7OztNO087USxPO1E7UTtPLFMsTTtPOzs7OzhCOzs7O0ssTTs7OztJLFc7TztLLE07SSwwQjtJLE87Rzs7STtLO0s7O0ssTTtJO0s7OztLOzs7Szs7OztJO0s7a0I7STtJLGtCO0k7SSxXO0k7SztNO21COzs7Ozs7SyxXO0s7TTtPO29COzs7O2EsTTs7Szs7Ozs7TSxPO00sTzs7O007Ozs7Ozs7TSxNOztLO0k7SSxPO0c7OztLO0s7Ozs7UTtRLFc7O1Usa0I7Ozs7O1EsTTs7O3FCO00sTTs7STtJO0c7O0ksVztHOztJLEksb0I7OzsrQjs7O0c7O0k7STtLLFc7SyxXO0ssWTs7SztLLE87STtJO0k7O0c7O0ksTztHOztJO0s7Ozs7Ozs7O0k7O0s7O3NCOztLLEk7Ozs7Ozs7SSxXO0k7SztLO0ssTztLLGtCO0s7YTtJLE87RztHLG1COztJLFc7VztHOztJLFc7SSxTO0k7SztLO0ksTztHO0c7STs7O1EsTTtPO0k7OztRLE07TztJOzs7STtLOzswQjs7O1E7OztRO007Rzs7STtJO0ssTTtLLFE7O0s7SztrQjs7OztPLEc7USxXO1E7OztNLHNCO00sSSxVOzs7Ozs7Ozs7Ozs7O1M7VSxTOzs7Ozs7Vzs7Ozs7Ozs7OzZCLE07Ozs7Uzs7Ozs7TSxNOztJO0ksSSw4Qjs7OzRCLE07OztHOztJO0s7Szt3QjtJLFc7d0I7SSx1Qjs7O0s7TztVOztLLE07O0k7RztHOztJLFc7STs7OztNO00sTzs7OztJO0c7O0ksSztLLE07STtJLEk7OztrRDs7O0k7SyxrQjtLLGE7Ozs7OztLOztJO0k7Rzs7STs7SyxNOztJLE87Rzs7STtJLEk7Ozs7TTtNO007TTs7Ozs7O0ksTztHOztJLHFCO0k7STs7SyxJLFEsMEIsVTs7Ozs7Ozs7O1c7O3dEO1c7Vzs7Ozs7Ozs7OztnQixrQzs7Ozs7OztpQjttQjs7Ozs7a0IsVztrQjtrQixvQjtrQjs7O2lCO21COztrQjttQjs7b0I7O29COzs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxXO2M7YyxvQjtjOzs7Ozs7OztRO1E7Ozs7TTs7SztLOzs7Ozs7SztLOztHOztJO0k7STtLO0s7SyxPO0ssTztLLEs7SyxPO0ssTztLLFE7STtJO0k7STtJLHlCOzs7Ozs7O00sWTs7Ozs7O00sYzs7Ozs7Ozs7Ozs7STtLLEkscUM7Ozs7O00sMEI7O0k7Rzs7STtLLE07SztLLEs7SyxXOzs7O0s7TTs7Uzs7Ozs7WTs7Ozs7Ozs7O1k7WSxPOzs7Ozs7O007OztLO0s7O1MsZ0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7O2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O3FDLHFDO2tCOzs7Ozs7O2lCO2tCO21COzttQjtvQztrQixLO21CO29CO3FCLE87cUIsTztxQixPOzs7Ozs7Ozs0QyxTOzJCOzttQjtvQixPOzs7dUI7dUIsTTs7d0IsVzt3QixJLDZCOzs7Ozt5Qjt5Qjt5Qjs7dUI7dUI7O3NCO21COzs7O2lCOzs7Z0I7Ozs7Ozs7O2M7Ozs7ZSxXO3lCOzs7O2U7ZTs7OzthO2M7YztjOzs7Ozs7Ozs7Ozs7OztnQjtnQixjOzs7Ozs7O21CLHFCLFU7Ozs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2lCLFc7aUIsSTs7Ozs7a0I7a0I7a0I7a0I7bUI7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7O2lCOzs7a0IsNEI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQjtpQjtrQixPO2tCLE87a0I7eUM7aUI7Ozs7OztvQztpQjtrQixPOztvQyxtQixzQjtpQjs7Ozs7Ozs7OztVOzs7O1c7VztXOzs7Ozs7Ozs7UTtRO1E7UTtROzs7OztRLEssOEI7UztzQjtTLFM7OztRLEc7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSwwQjtJLE87Rzs7STtLOzs7Szs7O0s7Ozs7SyxLO0ssSzs7O0ssUTtJO0ssWTs7TSxPO0s7STtJO0ssUTtLLFU7Ozs7Ozs7Ozs7O1U7VyxPO3FCOzs7OztRLFM7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7STtLO3FDO0ssTTtLLE07Szs7STtLLFM7SyxnQjs7OztTOzs7Ozs7UztTOztXLFc7VztXLG9COztVO1U7Ozs7Ozs7VTswQjs7UTtLO0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksdUI7STtLOzs7Ozs7O0s7TSxPO00sSzs7O1Msa0IsTztTLE87UTtLOzs7O1M7UztVLFc7VSxNOytCOzs7O2lDOzs7UTtLOztJO0ssUztLLFM7STs7TTtPLE87Yzs7Ozs7O0s7TSxPO00sTztNLE87YTtJO0ssUTtLO0k7O007OztPLFE7OztvQjs2Qjs7SztLLE87STtJOztNO21CO0s7SyxPO0k7STtLLEksa0I7O00sSSxrQjs7Ozs7Vzs7O3lCO2tDOztVO2U7Ozs7Ozs7OztJLFM7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7TTtNOztvQyxtQjs7Ozs7Ozs7Szs7bUM7TSxROzs7OztPLGU7UTs7OztROytCO1MsYTtROzs7Ozs7O3FCO00sUzs7SyxTOztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7Szs7OztTO1M7VTs7VTs7Ozs7OztVOztRO0s7SyxHO00sUztNLEc7TztRLE87USxPO087OztLOzs7O0s7SztLLE07Ozs7STtLOzs7O1MsWSxPO1Msb0I7Uzs7TTtNOzs7Ozs7bUI7SztNLFE7TSxVOztzQzs7Tzs7Z0MsTyw4Qjs7Ozs7Ozs7OzBDOzs7O1M7OzttQixRO21CO21CLFc7bUI7bUIsb0I7bUI7b0I7cUIsc0I7cUIsTztvQjs7OztvQjtvQixNOztrQjs7Ozs7OzBCOzs7Uzs7a0MsTyw4Qjs7Ozs7O1E7O2lDLE8sOEI7Ozs7O1EsRywrQjtRLEk7UTtTLFc7WTtVLFE7VTtVO1UsZ0M7VSxPOzs7UTs7Ozs7Ozs7Ozt3QjtpQzs7Ozs7UyxjOzs7VSxXOzs7O2U7Z0Isb0I7Z0IsTyxzQzs7O2tCOzs7Ozs7OztRO1E7Uzs7O2EsVzthLFc7WTtZLE87VztTLFE7UyxROztTLHNCO1MsVTs7OztTLHNCO1MsVTs7Ozs7Uzs7O1c7O1ksTztZLHNCO1c7Ozs7OztTOzs7Ozs7YSxXO2E7YSwyQjtZO1ksTztXO1E7UTtRO1MsTztTLE87UTtRLE87Ozs7Uzs7a0MsTyw4Qjs7Ozs7O1M7OzttQixRO21CO21CLFc7bUI7bUIsb0I7bUI7b0I7eUMsMEI7cUIsTztvQjs7OztvQjtvQixNOztrQjs7Ozs7Szs7OztJLFc7SSxJLCtCOzs7OztLO0ssTTs7O0c7O0k7OztLLG9CO0s7Ozs7dUIsMEI7O0s7Szs7Ozs7SztLLE07O0c7O0ksRywrQjtJLEksUSwwQixVOztLO007SztLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzs7STtJO0c7aUMsMEM7O0k7SztLO0k7STtHO0c7Ozs7O0s7TTtNO00sSTtLO0k7SSxJOzs7OzZDO0ssTTs7Ozs7OztJLFk7Ozs7UTtTLHdCOzs7O1E7UTs7OzthO1Msa0M7O1MsTTs7O1E7O0ksTTtHO0c7Ozs7STtJOzs7O1M7VTtVO1UsSztTO1E7SyxJOzs7O007O08sUTs7TSxNOzs7Ozs7OztLLFk7Ozs7UztVLFU7VTs7O1M7Uzs7O1MsRztVO1U7Ozs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7Rzs7OztJLEksNkIsUTs7SyxHO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPLEc7O1E7O087USxVO1E7Ozs7USxRO087ZSxNOztHOztJLEksb0I7STtHOztJO0s7OztJOzs7RztHOzs7Ozs7O1MsWTs7OztNLEk7Ozs7USxNOzs7O00sSTs7Ozs7TyxNOzs7Ozs7OztLOztNO2M7O1U7OztVLE07Ozs7Ozs7Ozs7SztLLEk7Ozs7O00sTTs7OztJO2U7Ozs7Rzs7OztJOzs7SyxJLFU7Ozs7Ozs7Szs7OztNO0s7Ozs7TyxNOzs7TSxJOzs7OztPLE07Ozs7OztJLGE7OztHO0c7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7OztLO0s7O00sUztPLE07Ozs7O0ssSTs7Ozs7TSxzQjtNLE07OztLO0k7STs7O0s7SyxJOzs7OztNLHNCO00sTTs7O0s7STtJLE87Rzs7STtLO0s7OztLOztLOzs7Ozs7O0ssRztNO0ssSSxVOzs7O2E7O1M7VSxVO1U7Ozs7O1M7VSxVO1U7Ozs7Ozs7TTs7Szs7OztNLFE7O007TyxVO087Ozs7O0s7STtJO0ssVTs7Ozs7O0k7Rzs7STtLOzs7SztZLDhCO0k7SSxPO0c7O0k7SztLOztJO0ssSSw2QixRO21DOzs7UTtTLFE7UyxPO1E7UTs7O1EsRyxtQzs7OztRLE07OztHOztJOytCLGtCLDRCO0k7O0s7SztJO0ksZ0I7O0s7SztJO0k7OztHOzs7SyxTO3FCO1E7TSxNO0ssVztLLGM7STtJLEksVzs7OztLO0s7O0k7STtHOztJLFk7STs7O0c7O0ksRywrQjtJO0ssSSxRLDBCLFU7Ozs7OztVO1csbUI7VyxvQjtXO3NCOzs7Ozs7OztXLEs7Ozs7OztNLEksNkI7TSxHOzs7TyxlOztRO1E7UyxVO1MsVTs7Ozs7Ozs7OzthO2MsbUI7YyxvQjt5Qjs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7OztlLFU7Ozs7ZSxVOzs7OztjLEc7OztlO2dCLE87Z0I7Z0IsMEI7Z0I7Ozs7O2dCO2lCOzs7Ozs4Qjs7OzBCOzs7aUI7ZTtnQixNO2dCLFU7Ozs7Ozs7O2tCOzs7O2lCLEc7O2tCO21COztzQjttQixNO2tCLG1CO2tCLG9CO2tCOzs7Ozs7OztrQjs7O2lCOzs7Z0I7O2U7Z0I7OztvQjtrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7c0I7Ozs7Ozs7eUIsTzs7Ozs7O3lCOzBCOzJCOzJCOzs7K0I7OEI7NEIsTzsyQjs7Ozs7OzsyQjs7Ozt1Qjs7O3NCO3VCLGU7OztpQzt3QixXO3dCO3dCLFc7MkI7eUI7MEI7OzZCOztpQzs7Ozs7OzZCOzRCO2lDOzs7Ozs7Ozs7dUI7Ozs7Ozs7dUI7OztrQyxPOztvQjttQjtpQixPOzs7OztnQjtnQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQixPO2dCOzs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7OztLOzs7O0ksVztPLDBDO0k7Szs7SSxPO0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3Qjs7Szs7Ozs7O00sUTtNLFU7Ozs7O3lCOzs7O1ksTTs7Ozs7OztNLE07O0ssSSx1RDs7Ozs7TTtzQjs7STtJLE87Rzs7STtJO0c7O0k7O0ksSSxtQzs7STs7SztNOzs4QjtNOzs7Ozs7O007TSxNOzs7STtJO0s7SywyQix1QztJLE87Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTLDBCO1M7UyxlO29CO1MsSSxPOzs7SywwQjtLLE87O0c7O0k7STtJOztHOztJOztLO0ssTzs7OztpQjtlO0k7SSxPO0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0k7O0s7OztNLFM7TSxTOzBCOzhCO0s7STtJLE87Ozs7O2M7Rzs7SSxHLCtCO0k7SyxJLFEsMEIsVTs7Ozs7Ozs7Ozs7OztXLEs7Ozs7OztNO087TztNLEc7OztPLGU7O1E7UTtTLFU7UyxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTtnQjtpQiw4QjtpQixVOzs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7Ozs7O2dDO2tCO21CLFE7bUIsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCO3dCO3dCOzs7Ozs7O3dCOzs7Ozs7bUU7O3FCOzs7Ozs7Ozs7Ozs7O3lCOzBCOzBCLFc7NkI7MkI7NEI7OytCOzttQzs7MkI7OzsrQjs7MkI7Ozs7K0I7OEI7bUM7OzBCOzs7Ozs7OzBCOzs7Ozs7Ozs7dUM7Ozs7cUI7Ozs7bUI7O2tCOztzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0IsTztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7OztLOzs7O0ksVztPLDBDO0k7Szs7SSxPO0c7Ozs7SztNOzs7TTs7O00sTztNO2dCO0ssYTtLO007TSxVOztLO007Ozs7SztvQztzQzs7OztTOzs7Ozs7VSxPO1UsTzs7OztVOzthOzs7O1U7OztTO1U7VTs7Ozs7OztVOzBCOztRO0ssTzs7OztJO0ksVzs7SztJO0k7SztLLDJCLE8sNEI7SSxPO0c7O0k7Rzs7STtJO0s7OztrQjtLOzs7Ozs7SyxNOzs7Rzs7SSxJOzs7OEI7OztJO0c7O0k7STtLO00sVztNLGM7Ozs7O00sSTs7O2tDLE07Ozs7OztLOztHO0c7O0ksSTs7SztLLEksVTs7OzZCOzs7O0s7MkI7O21CO3NCO0s7STtJLEksUzs7SztLLEcseUM7O0s7STtJO0ssVzs7O0s7SyxJLFU7Ozs2Qjs7Ozt3QjtzQjtLO0k7STtLLFc7OztLO0ssaUI7TTtLO0k7SSxPO0c7O0k7Ozs7Ozs7O1U7Ozs7Ozs7O2E7O2M7OztpQjtpQixJLFU7Ozs7bUIsTTs7Ozs7aUIsSTs7Ozs7O2tCLE07Ozs7Ozs7O2lCO2dCO2E7Ozs7O2lCO2lCLEksVTs7OzttQixNOzs7OztpQixJOzs7Ozs7a0IsTTs7Ozs7Ozs7aUI7Z0I7YTs7Ozs7Ozs7Ozs7O2EsRztjLEk7Ozs7OztlLE07Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STtJO0ssUTtLLFE7SztJLFc7OztJOztLLE87O0k7O0ssYTtLLFU7SyxVO0s7SztLO0s7STtJOzs7SyxJOzs7Ozs7TTs7Ozs7OztJOzs7O0k7SyxRO0ssUTtLO0ksVztJO0s7TTtNLGE7TTtNO007TTtLO0s7SztNLEs7TSxLOztNLE07Ozs7UyxJLG9EOzs7Ozs7VSxNOzs7Ozs7OztRO0s7Szs7Ozs7VTtVLEksVTs7OztZLE07Ozs7VSxJOzs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1M7TTs7Ozs7VTtVLEksVTs7OztZLE07Ozs7VSxJOzs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1M7TTs7Ozs7OztLO00seUIsMEI7TSxjO00sTztNOztxQjtLOzs7Ozs7Szs7O0c7NEIseUM7O0k7O2lDOztLOztJO0c7O0k7NkIsbUIsMEI7SSxPO0c7O0k7STtlOztpRTs7O0c7O0ksTztHOztJLEksVSw2Qjs7SyxNO0ksbUIsVTs7Ozs7TSxHLDZCOzs7SSxNO0c7O0k7SSxPO0c7O0ksWTs7YyxzQjs7Szs7OztrQjtPO1E7UyxPO1MsTTs7UTtROzs7OytCOzs7O087Ozs7USxLO08sMkI7TztRO1E7OztROzs7UTtPOztPLHNCLE87Tyw2QjtPO1E7UTs7Vzs7USxVO1E7TyxhO2lDO08scUI7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YSwwQjthLEc7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztROzs7O1k7YSxROzs7WTs7Ozs7OztXO1MsTztTO1E7O2dDOzs2Qjs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCOzs7WSw4QixROzs7OzttQzs7YTs7Yzs7Ozs7O3lCOzs7d0I7O2E7O1ksTTtXO1MsVztTOzhCO1M7UzsrQjtTLE87UyxRO1E7O087O087OztROzs7Tzs7O08sTTtlOzs7O0k7O0k7RztHLGU7O0k7SyxVO0s7SSxNOzs7YTs7Rzs7OztLLEcsbUM7SyxHLG9EO0s7SztNLFU7TSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0I7a0I7Ozt1QiwrQjs7OztpQjtrQjs7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87b0I7a0I7Ozs7cUI7O29CO2lCLE87Ozs7Ozs7Ozs7Ozs7Ozs7a0IsRyxpQzs7Ozs7Ozs7Ozs7Ozs7O2lCLHNCO2lCLEc7a0I7a0IsRzttQjs7OztpQjtrQjs7O2tCOzs7a0I7Ozs7aUIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCO3NDOzs7O2lCOzs7a0I7O21COzs7Ozs7dUI7c0M7Ozs7OztxQjtxQjs7b0I7aUIsTzs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7Ozs7NEI7Ozs2QixROzZCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7OzZCOzs0QixNOzJCO2dDOzs7Ozs7Ozs7Ozt5Qjs7OzBCLFE7MEIsVTt1RDs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7OzsyQjs7eUIsTTt3Qjs2Qjs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7Ozs7Ozs7Ozs7d0I7dUI7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQjs7b0M7bUI7Ozs7O3VCOzs7OztzQixrQztzQjs7OEI7OztxQjttQixVOzs7bUI7b0IsYTs7O3FCOzs7OzBCOzBCO3lCO3NCOzs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7UyxJOzs7Ozs7O087USxJOzs7Ozs7OztRLEc7UztVO1csTztXLE87Ozs7Yzs7O2UsUTs7O2M7Ozs7OztlOztjOztlLE87ZSxPO2UsTztjOzs7dUI7Ozs7YTtXLE87VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7TztRLFc7USxJLDhCLEk7Ozs7O1M7OztRO1MsSTs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXOztNO00sSSxpRDs7OztRLGtDOzs7SztLLE8sd0M7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHO0c7STtJOztJO0k7SyxHLDRDO2tCO0ssWTs7OztTO1k7VSxNOzs7O1M7VTtXLHNCO1csTztVOzs7OztVOztXOzs7O1c7Ozs7O1ksTTs7Ozs7O2tCLDRCOzs7O1M7O1Usc0I7UztTLGU7b0I7UyxJLE87OztLLDBCO0ssTzs7Rzs7STtJO0s7O0s7Szs7Ozs7O0s7O0c7O0k7SSxvQjtJLFc7SSxTOztJOzs7UTs7UztTLHNCO1EsTzs7USxxQjtROzs7UztTOzs7VTs7OztjO2M7YTtXLE87VTs7Ozs7ZTtlO2M7VyxPOzs7OztROztRLG1DO1EsUzs7O0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7Ozs7O2EsZ0MsUTs7Ozs7Ozs7aUI7Ozs7a0I7Ozs7c0I7cUI7cUIsTzs7O29CO2tCLFE7a0IsTztvQjtrQjttQixPOzBCOzs7Ozs7Ozs7O2E7WTtVLFc7OzthOzBCO1k7VSxPOzs7YTthLE87WTtVLFc7VTtnQjtTOzs7O0ksb0I7SSxPO0c7O0k7RztHO0ksYztJLGtCOztJO0ksTztHOztJOzs7O0ksWTtrRTtJLEksVywyQzs7OztLLEksTywyQixPO0s7SyxXOzs7Ozs7O1U7VyxjOzs7WSxNOztXO1k7O1k7NkI7WSxjOzs7Ozs7O1c7WTthLE87YSxJOzs7OzthOzs7Ozs7YSxNOzs7Ozs7O1Usa0M7OztXLEc7OztZOzthOzhCO2lDOzs7Ozs7OztVLG1CLE87VTtXLFU7VztXLEk7Ozs7O1c7VztZLFc7WTs7aUI7Ozs7O1k7NkI7WSxRO1ksVTs7Ozs7YSxHOzZCOzs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLFU7OztZLE07Ozs7Ozs7ZTs7O3dCOzs7OztNOztPLHNCO2dCOztLO0s7O0c7O0k7SztLO0s7Ozs7OztLO0ssTTs7Rzs7O0k7Szs7O00sc0I7TSxTOzs7TTs7O087OzBCOzs7Ozs7Ozs7Ozs7O007Tzs7UTs7Ozs7OztRO1E7Uzs7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O08sRzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07Ozs7STtLLFk7Ozs7Tzs7USxLO1E7USxVOzs7OztPLE07O007OztPLHNCO08sZ0I7Ozs7Szs7O00sc0I7TSxPO007O00sc0I7TSxXO0s7Szs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOztHOzs7Ozs7O1EsSztTOzs7VTs7VSxzQjtTLGM7Ozs7O1E7Ozs7O1k7WTtXO1MsTzs7OztZO1k7VztTLE87UztROzs7UTs7OztTO1E7Ozs7SSxHO0ssTTs7Ozs7Ozs7Ozs7STs7Szs7O0ksb0I7STs7O1E7Ozs7Ozs7O0k7STtHOztJLEc7SyxNO0k7Ozs7OztLOzs7SSxvQjtJOzs7UTs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7Szs7TSxPOzs7UyxtQixROzs7Ozs7WTs7YSxzQjtZLE87Ozs7UztRO0s7SywwQjtLLE87O0ksb0I7SSxPO0c7O0k7SSxvQjtJLE87Rzs7STtLO0s7SyxRO0ssVTs7Ozs7SyxPOztJO0c7OztJLFk7Ozs7O1E7UyxJLFksNkI7Uzs7OztnQzs7Ozs7USxHO1M7VSxPOzs7YSxrQixROzs7Ozs7O2M7O2E7WTtTLEsseUM7O1E7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3lCLE87OztPLE87OztPLE87Ozs7O3NCLGM7cUIsWTs2Qix3QjtHOztJO0c7O0ksVztJLE87Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJO0ksTztHOztJLHVCO0c7O0k7STs7O21DOzttQzs7bUM7O21DOzttQzs7O0s7Szs7Ozs0Qjs7O0c7Rzs7STtLO0ssWTtLLFc7O0s7O007O087O087Ozs7Ozs7STtHOztJLGlCOzs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7SSxXO3dCO0ksVyxXO0ksTyxXO0c7O0k7SyxPO0k7STtLO0ssUTs7O0k7SztJO0ssTztJO0k7SyxPO0k7cUIsdUI7STtLLGE7SyxvQjtLLFU7O0s7O007TTtNO0s7SztJO0k7STtLLFk7OztNLE87O3lCO0s7TSxPO00sTztLLE87Ozs7Ozs7Ozs7O0ksTztHOztJLFc7RztHO3NCLHlCOzs7eUIsc0I7cUI7SSxtQjtHOztJLEksZSx5Qzs7OzRCOzs7Rzs2QixPLHlDO0csVTs7STtJO0c7O0k7STtJO0c7RyxJLHVDOztJO0ssVztLLE87STtJOzs7OztTOztJLE87Rzs7STs7O007O08sTztjOzs7SztNLFc7TTtPO1E7USxNOzs7OztPLEksZTs7b0I7Tzs7OztTOztVOzs7UztTOzBCO1M7OztTLEcsaUM7Uzs7VTs7O1U7OztTO1M7VTs7O2E7YTtZO1M7Uzs7c0I7Uzs7O1MsUztTO1U7OztVOztzQjtTOzs7O0ksVztHOztJLFc7O087OztLOzs7UztVO2dDOzs7UztVO2dDOzs7UztVO2dDOzs7UztVO2dDOzs7UztVO2dDOzs7Ozs0QixNLDBDOztNOzs7Ozs7Ozs7O21DO0k7Rzs7O0s7SztLO0k7O0c7O0k7SSxPO0c7RyxtQjs7STtJOzRCO0ssVSxnQztNO0ssSTs7Rzs7STs7Tzs7USxPO1E7cUI7Tzs7UTtVOzs7OztRLE87USxxQjtPLEksWTs7OytCOzs7O087OztTLEksVTs7Ozs7Ozs7O1UsdUIsTztVOzs7Ozs7UTs7OzZDOztPLHNDO087O0c7bUQ7Rzs7STs7NkI7Ozs7Ozs7O1U7OztXLE87VTtjLDRCOzs7Ozs7O3NDOzs7Ozs7Tzs7O1M7VTtXO1csTTs7Ozs7VSxJLGU7MkI7Ozs7Ozs7O1k7OzthOzs7WTtZO1k7O3lCOzs7Ozs7OztROzs7O1E7UyxXO1MsSztVOzs7O087O08sb0M7Tzs7OztJO0c7O0k7SSxPO0c7O0ksTztHOztJO0ksb0I7STtLLFE7SyxPO0ksTztHOzs7SSxzQixpQixrQjs7Rzs7SSxZLE87OztzQixPLGdEO0ssTztJO0ksTzs7Rzs7STtJO3FDOzs7TTs7OztHOztJLFksTzs7SSxPOzs7SSw4Qjt5Qzs7SSxPO0c7Rzs7STtJO0ssSSxLOzs7O00sRztNLEk7OztLLE87Ozs7Ozs7Ozs7Ozs7OztHOztJLHNCO0c7O0k7SyxPOzs7O08sTzs7Tzs7Ozs7USxPO1E7TyxPOzs7Ozs7Ozs7Ozs7TyxPOztPOzs7O1E7USw0QjtPLE87Ozs7Ozs7Ozs7Ozs7Ozs7VztzQixPOztXLE87O1U7TyxPOzs7Yzs7Ozs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7USxPOztPLE87OztPOztRLFU7Ozs7Ozs7O1csYSxPOztXLE87O1U7OztXO1csTztVO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Ozs7Ozs7O087Ozs4QjtRLE87TyxPOzs7OztJLFksTzs7OztlO2U7OztLLE87OztJLE87Ozs7O00sUSxPOztNLE87SztLLE87O0k7eUIsTyx5Qzs7SyxZLE87O0ssTztJO0ksTztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7O0ksUSxNOztJLE87Rzs7STtJO0s7TSxROzs7TSxVOzs7O087OztRLE87OztRO1U7YTs7OztRO1MsVztTLEc7Ozs7O3dCO1k7O2E7OztjLFc7Ozs7Ozs7OztVO1c7WSxzQjtZLEs7WTs7Ozs7O3NDOztZOzthLE87d0I7Ozs7Ozs7Ozs7Ozs7Szs7Ozs0QixXOzs7Rzs7STs7Tzs7USxTO1EsSTs7O1EsRyx5Qzs7O087O08sa0I7Tzs7Tzs7O1E7OztPOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7O1M7O1U7Ozs7O1M7VTtXLEk7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1E7TSxPOzs7O0k7Rzs7STtJO0k7O0ssMkIsZ0M7SSxPO0c7O0ksWTtJLG9CO0ksTztHOztJOzswQixXOzt3Qzs7TyxvQztPOztHOztJLCtCO3VCO0k7Szs7OztLLFE7Szs7MkM7O2MsTTs7Ozs7VTs7VyxvQjtXLEcsa0Q7O1U7O1csSTtXLE87VyxPOzs7Vzs7OzthOzs7OzRCLDJDO2M7OztpQjtpQixPO2dCO2MsTzthOzs7YztlO2tDLE8sK0I7ZSxPO2M7ZTtnQixPO3VCOzs7Ozs7Ozs7Ozs7VTs7UztNOztJOzs7Ozs7Ozs7Ozs7OztNO087USxPOzhCOzBCOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7O0ssa0IsUTs7TSxnQyxPO007O3dCOzs7Ozs7SztJO0ksTztHOztJLFk7Ozs7UTs7OztTO1EsTzs7USxrQzs7UyxvQixPO1MsTzs7O2tCOzs7WTs7OzBCOzBCO1c7USxPOzs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7RztJO0k7STtJO0k7STtJO0k7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7Ozs7UztTLE87UTtNLE87Szs7OztJO0c7O0k7O007TyxPO08sTztPLE87Yzs7TTtPLE87YztLO0ssaUM7O0c7O0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw0Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZLHVCLDRCOzs7Ozs7aUI7aUIsTztnQjthLEs7YSxXOytCOzs7Ozs7a0I7O00sRzs7TTs7O0c7O0ksSSxRLDhDOztLO0ssVztJO2U7O0c7O0ksMEI7OztJOztLOzs7Uzs7O1E7SSxPO0c7O0k7STtHO0c7STtJO0k7STs7STtLLFc7OztHOztJO0c7O0k7Szs7O0c7MEIsa0M7O0k7OztHO2tDLDBDOztJLFk7Ozs7MEI7Ozs7UTs7STtHOztJO0k7SztLLEc7TTtLO00sTTtNO007Ozs7O1M7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STtHOztJO0k7STtHOztJO0ksTztHO0c7O0k7STtNO1c7SztNO21DO007Szs7O0ssSSxNLDhCOzs7O1M7VTtVOzs4Qjs7Uzs7Ozs7VSwwQjs7O1MsRztVLGM7Ozs7Ozs7YSxHOzs7Ozs7Ozs7Ozs7Uzs7NkI7O1M7OztVOzs7VTs7VSw0QjtTO1M7OztTOztTLE87O1M7O1M7O1UsVTs7OztTOzs7O2M7MkI7YTtzQjs7O1M7OzthLGtCLFE7NkQ7YTtZO1UsVTtVLE87VSxjO1M7O1U7VztZOzs7WTtZO1k7NEI7cUM7VyxpQztXOzs7O21DO3dCO1c7OztTOzs7O29DO1U7O2EsZ0MsUTsyQzs7Ozs7OztlOzs7Ozs7O2U7OzthOztVLFc7Uzs7OztpQzt3QjtTOztTOzs7d0I7O1MsZ0I7UztVLFE7VTtTO1M7VSxzQjtVLEs7VTtTOztTOztTOzs7OzthOzs7YztjLE87YSxXO1k7VSxPO1M7O0s7STtJLEc7Szs7TSxzQjtrQjs7STtLO0s7Szs7STtHOztJLG9CO0ksTztHOztJO0s7TSxVOzs7Ozs7UztzQjtRO00saUI7OztTO1MsTztRO00sZ0I7TTs7O0s7OztnQixPO0k7Ozs7SztLO0s7OztJLFk7SSxNO0c7O0k7Szs7Ozs7TTtNOzs7Szs7SSxjOzs7Ozs7Ozs7OzZCOztJOzs7STtJLE87Rzt3QywwQjs7STtJO0c7O0k7STtJO0c7O0k7STtHOztJO0k7Rzs7STtLOzs7SztLO0ksTztHOztJO0k7Rzs7STs7SyxJLE8sNEI7NEI7SztLO0k7SSxPO0c7O0k7O0ssVztLLE87bUI7O0k7SSxhO0ksTztHOztJOztLLE87OztxQiwwQjtJLE87Rzs7SSxxQzs7SSxlO0c7O0ksVzt3Qiw0QztJO2dCOztJOztjLEksOEI7YzthO0c7O0ksSTtJLFc7Rzs7STtJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7O0k7STtJLEksaUM7O0s7O00sTzs7O1MsVyxXO1M7VTtXLE87a0I7OztTLGM7UTtLOztJO0k7STs7O0ssdUIsVTs7OztPLHNCLFU7Ozs7Ozs7VSxHO1c7WSxXO21COzs7Ozs7Ozs7Ozs7Szs7Ozs7STs7Ozs0QywwQjtLOzs7Ozs7O1M7O1E7Szs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsMkI7Yzs7O0ksSTs7SyxhO0ssc0I7OztNLFc7TTs7Ozs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7O0s7TSxVOzs7TTs7SztJO0ksVzs7Szs7Ozs7O0s7STtJO0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O2M7OztLOzs7OztNOztjOzs7O0k7Ozs7OzthOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7O0ksbUI7O0k7O2M7ZTtlO2M7YTtHOztJO0k7SyxVO0s7STtJO0k7STtJOztLO3lFO0s7STtJO0ssYztLLE87Szs7O0s7STs7Ozs7OztJO0c7O0k7SSxPO0c7O0k7STtJO0k7SyxPO0s7OztJLE87Ozs7OztHOztJO0ssTztLO0s7Szs7OzsrQjs7Ozs7STtHOztJO0ksTztHOztJLFk7OztLOztJO0c7OztJOzs7Ozs7O1E7OztTLE07UztTO1E7O1U7YTtTLFc7UyxLO1UsTzs7Ozs7USx1QjtRLEc7Uzs7Ozs7O2lDLGtCLHdCO1E7Ozs7UTs7Ozs7Ozs7O1E7Ozs7UyxNO1M7UztROztVO2E7Ozs7O1M7Uzs7Ozs7UTs7UztTOzs7Uzs7O1k7WTtXO1MsUztTOzs7O1k7WTtXO1MsVztTLGE7OztZO1k7Ozs7Ozs7VztTLFM7Uzs7OztZO1k7VztTLFk7UyxjOzs7WTs7Ozs7YTs7O2E7WSxhOztZO1c7UyxTO1Esb0I7Ozs7O1MsMEI7OztRLEc7UyxZOzs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7O1E7Ozs7STtJO0k7SSxPO0c7O0k7SyxPO0s7Ozs7OztJO0c7O0k7SztLO087VTs7STtHO0cscUI7O0k7STtJO0k7SSxlO0k7STtJLHlCO0k7O0s7SztLLE87SyxPO0kscUI7Rzs7STtJLE87Rzs7STtJO0k7STtJLGU7STtJO0kseUI7SSxJLE8sOEI7O0s7O0k7STtLLG1CO0s7OztLOztJO0k7SyxvQjtLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUI7SSxvQjtJOzs7ZSxjO2dCLFc7Z0IsTzs7ZTtjO2MsTzs7OztHOztJLFc7SSxPO0c7O0k7STs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7O1E7UTs7Z0M7TzttQzs7Ozs7Szs7TTswQjtNLE87SztLLE87STtJLDhCLFc7Rzs7STtLLE87SyxhOztLOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7OztXOzs7Yzs7OEM7O2M7YTtXLFc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087TTtNO08sUTtPOztPLGtCO087Ozs7TztrRDs7TztNO007TyxNO087Ozs7WSxPO1c7TSxXO0s7SztNLE07TTtNOzs7VTtTO00sUTs7O0s7SztJO0k7SSxPO0c7O0k7Ozs7O0ksVztHOztJLEksd0I7SSxXO0c7O0ksWSxzQjs7O0s7OztNO00sTztLLE87O0k7O0s7SyxPO0ksTzs7O0ksUzs7c0Isa0Q7STs7SyxPO0ssc0I7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Syx1QjtLLFc7SyxXOztJO0s7Tzs7Ozs7Ozs7O0k7STtJOztLOztNLG9COztLLE87O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtJO0s7SyxPO0s7STtLO00sWTtNLE87SztLOztJLE87Rzs7SSxXO0k7OztLLEksUSwyQixVOzs7O007Ozs7O087OztPOzs7OztPOzs7O3VCOzs7Ozs7TyxHO1E7UztTO1MsTztTLE87O2tCOzs7O007Ozs7STtHOzs7STtJO0k7SztLOztJO0k7SztpQztLO0s7SSxPOzs7STs7SyxPOzs7SSxPOzs7Ozs7Ozs7O0ksb0I7SSxXO0ksTztHOzs7SSxHLCtCO0k7STs7O0k7O0ssTzs7O0ksTzs7Ozs7Ozs7OztJLFk7O2dCOztJLDBCO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7RztJOzs0QixPLHlDO0ksaUI7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OzJCLE8sMEM7O0ksTztHO0csaUI7O0k7SyxPO0ssUTs7O0ssTzs7STtHOztJLFc7SSxJLHNDLEk7Ozs7OztJO0k7Rzs7SSxZLE87O0ksTzs7OztLOztROzs7O1M7O1MsUTtTLFU7OztTO1U7O21CLE87a0I7Ozs7UztVOzttQixPO2tCOztROzs7O1MsVzs7O3lCLFc7O1c7OztrQztZLE87VzttQjs7Ozs7Ozs7O2dEOzs7OztrQjtpQzs7O1k7OztlOzs7Ozs7Ozs7WTs7YTthLE87O2U7O1c7bUI7OztXOzs7O1ksTztXO21COzs7Ozs7Ozs7VyxrQixPO1c7bUI7Ozs7Ozs7Ozs7O1MsVzs7O1M7aUI7OztRLFc7Ozs7OztTOzs7WTs7Ozs7Ozs7Ozs7O1c7Vzs7O2M7Ozs7Ozs7Ozs7O2tDOzs7O3VCOzs7OztXLFc7OztXO1c7bUI7Ozs7Ozs7O1csVzs7O1c7VzttQjs7Ozs7Ozs7OztRLFc7OztRO1E7USxjOzs7OztZOztxQjtxQjtxQjtxQixPOzs7Ozs7OztvQjs7USwwQjs7STtJLE87Rzs7SSxVOztJLE87Rzs7SSxZOzs7SyxJLDZCOzs7O08sTzs7OztJO0c7OztJO0k7OztxRCxTO0k7Ozs7Yzs7ZTtlO2M7YztlLFU7OztlOzs7Z0IsTztlLFc7YztjLFc7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7OztnQjs7aUI7O29COzs7cUIsUTs7Ozs7cUMsbUI7O29COzs0Qjs7O2U7Z0IsTztnQixPOztnQjs7aUI7a0M7aUIsTTs7bUI7Ozs7Ozs7Ozs7Z0Q7ZTtnQixPO2dCLHNCOzs7Ozs7OztlO2dCO2dCO3VDO2U7Ozs7Ozs7OztrQjs7Z0I7Z0I7O2U7Ozs7Ozs7O2UsTTs7YTtHOzs7STtLOzs7STs7OztLOztJO0s7OztJLGM7STtLOzs7STs7Szs7O0k7OztJO0k7Rzs7STtJOztNOzs7TyxhO08sTztPLE87TyxPLFc7TyxPOzs7Ozs7Ozs7TTs7Ozs7Ozs7Ozs7SyxNOztHOztHLDhDOzs7SSxZOztJOzs7STs7O0ksbUI7SSxxQjtJLG9CO0ksVztHOztJLHFCO0ksb0I7SSxXO0c7OztJOzs7O2M7YztlOzs7bUI7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7YztlOzs7Ozs7Ozs7Yzs7ZSxPO2M7OzttQjtjLG9COztjO2U7Ozs7Ozs7OztjLE87Ozs7Ozs7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxVO0k7OztHOztJO3lCOztHOztJO0ssTzs7O08sTzs7Tzs7O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87O087Ozs7USxvQixPLHlDOzt3QixPLDhDO08sTzs7Tzs7OztRLG9CLE8seUM7OztXLE87VTtPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87OztPLE87Ozs7SSxZOzs7O00sdUI7TSxPO0s7SyxPO0k7SSx1QjtJLE87Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0ksSSw0Qiw4Qjs7Ozs0Qjs7O0c7O0ksaUI7SSxnQjtJLE87Rzs7SSxPO0c7O0k7OztPOztRLE87UTtPLFc7Ozs7Ozs7O1UsWTtVOzs7Ozs7OztVO1csTztXLFU7VTs7Ozs7Ozs7STtHOzs7O2dCOzs7OztROzs7O1MscUIsTztTLEc7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7OztROztROzs7Ozs7O1M7O3dDO1MsUTtROzs7Ozs7Ozs7OztTOzs7Ozs7OzRCOzs7OztRLFk7UTs7Ozs7UTs7O1E7Ozs7O0k7cUI7a0I7O0k7Rzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTLHNCO1MsWTtROzs7OztTOzs7Ozs7O1M7VTtvQjtVO1U7Uzs7O1E7O1Esb0IsVTtzQjs7USxJLGtCOzs7O1UsTTs7O1EsSTs7Rzs7STtHOztJOzs7Ozs7Ozs7O087OztnQjs7Ozs7Ozs7Tzs7ZTs7Ozs7TyxpQjs7Tzs7Ozs7O1E7OztPOzs7TztROzs7Ozs7UyxzQjtTOzs7Z0I7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzRCOzs7aUM7STtLLE87SyxVO0ssTztLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtLOzs7UTs7OzhCOzs7Ozs7Ozs7Ozs7OztROzs7OzsrQjs7Ozs7O2dCOzs7SSxXO0c7O0k7OztPOzswQjs7TztlOztHOztJO0k7Z0I7Ozs7UTs7O1M7USxrQjs7UTs7Ozs7Uzs7YTs7UywrQjtRLE87O1E7Ozs7UyxROzs7Ozs7O0c7O0ksUztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1Esb0M7O1E7O1E7Ozs7O1M7USxVO1E7UyxROzs7Ozs7UTs7OztHO3FDLHVDOzs7Ozs7O1E7UyxZO3FCLE07UyxvQjtTOzs7OztVLE07Ozs7UTs7Uzs7WTs7Ozs7Ozs7Ozs7dUM7Ozs7YSxNOztZOztRLE8sVzs7O2dCOzs7O0ksSSxlLGE7OzsyQjs7O0c7O0k7SSxrQjtJLE87Rzs7STtJOzs7Ozs7O1E7OztTO1M7UyxNO1M7UyxNO1EsTzs7Rzs7STtJO0ssSSxjLHVDOzs7O3VCO00sNkI7TSxHLCtCO00sSTs7Rzs7STs7O0k7SztNLG1DOzs7Ozs7OztJLE87Rzs7STtLO0ssUTs7Ozs7Ozs7TztRLFE7UTtVOzs7Ozs7OztHOztJLFM7Ozs7Ozs7Ozs7Ozs7Ozs7UyxHOzs7Ozs7Ozs7Ozs7Tzs7O1k7Tzs7Ozs7Tzs7O2lCOzt3Qjs7Rzs7O0ssSSw2QixhOzs7NEI7OztJOztJO0c7O0k7SztNO007TTs7O1Msb0I7b0I7O1E7OztTOzs7Ozs7Ozs7aUIsbUI7aUI7O2tCO2tCLG1COzRCOztnQjthLE87OzsyQjs7OztTO1E7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7UztTLE87UTtNLE87TSwwQixPLGtDO00sOEIsVzs7Szs7OztLOztNO087USxLO1E7Tzs7Ozs2Qjs7OztnQjs7SztJOztJO0c7OztLLFk7O007TyxROzs7bUI7O0ssTztJO0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0ksWTs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtLLFU7Szs7Ozs7Ozs7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7OztVO1UsUztVLFE7OztXLE07VSxNOzs7Ozs7Ozs7Ozs7O1UsRztXO1k7WSxNO2tCOzs7O1MsTTs7Uzs7O1U7OzthO2MsTTtjLE07YSxPO1k7Z0I7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7OztJLE87OztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ksSTs7Ozs7SyxNOztJLEk7Ozs7OztTO08sRzs7O1EsRztTLEc7Ozs7Ozs7VTs7O2EsTTs7Ozs7O1ksTTs7VyxLO1csSTs7Ozs7Ozs7Ozs7O29COztNLE07O0s7Szs7O0ssTTtJO0c7O0ksWTs7SztNLE87TSxVOzt3QztLOztJO0c7dUMsNEI7O0k7Rzs7dUIsTyx5QztJO2dDOztLOztNLHFCLE8seUM7MkIsTyx5QztLLE87OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNO007TSxPO0ssTzs7SSxrQixPO0ksTztHOztJLG1CLE8seUM7dUIsTyx5QztJLE87Rzs7STs7OztRLE87O087Ozs7UTs7Vzs7WTs7Vzs7WTtZO1ksTztXLE87O08sTzs7Ozs7Ozs7Ozs7OztPLE87OztPLE87OztPLFc7TyxPOzs7TyxXO08sTzs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87O087Ozs7UTs7Vzs7O08sTzs7Ozs7Ozs7Ozs7OztPLE87OztPLE87Ozs7Ozs7Ozs7TyxXO08sTzs7O08sVztPLE87OztHOztxQixPLHlDO0ksVTs7STtLOztJO0ssTztLLE87SSxPO0c7O3VCLE8seUM7STs7OztROztRO2dCOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87OztPO087OzZCOzs7OzJCLE8seUM7TztROztXOzs7WTtXLE87OztXLE87O2tDLE87OztXOztPLFc7TyxPOzs7Tzs7USxPLFc7OztPOzs7Tzs7UTs7O08sb0I7TyxPO2dCOzs7Ozs7Tzs7O08sc0I7TyxPOzs7Tzs7USxVO087aUI7aUI7O0c7O0k7O0s7O0k7SyxNO0ssTTtJLEk7Ozs7O0s7O0k7Rzs7STs7Ozs7STs7O087Ozs7O1EsTztPLEcscUIsc0M7TyxXO087OytEO087UTtROzs7Ozs7OzswQjtLOztHO0csSTs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLLEc7OztNOztLO2lCOztLOztJLE87Ozs7O0c7OztJOzt1QjtLLHNCLE87USw2QztLO007TyxPO08sTztNOzs7Ozs7TTs7Szs7O3NCO0k7O0s7Ozs7MkIsb0I7SSxPO0c7OztJOzs7Ozs7ZTs7SSxJOzs7OztLOztJOztHO0csSTtnQyxVOztJOztPOztPOztPOzs7O0c7O0k7SyxRO0ssUTtLLFU7SyxVOzs7Ozs7UyxrQjtVO1csVTs7O3FCO1U7O1k7O1csTTtVO1csVTs7O1U7Ozs7OztXOzs7ZTtlO2M7WSxPO1ksVTs7O1c7WTthLE87YSxPO1k7Ozs7Ozs7Ozs7Ozs7eUI7O1U7Ozs7Ozs7UyxrQjtVLGU7VSxLO1csTTtVO1csTztXLE87VyxROzs7O1csYztXLGM7OztXO1csYzs7Ozs7Ozs7Ozs7OztXOzs7ZSxrQixROytEO2U7YztZLFU7Vzs7OztXOztZOzthOzs7Ozs7YyxVO2MsVTs7Ozs7Ozs7Ozs7Z0IsVzttQjtpQjtrQixRO2tCLFE7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2lCOzs7a0I7a0I7Ozs7Ozs7Ozs7OztjOztnQjs7O2lCO2lCOzs7Ozs7Ozs7Ozs7OztZLEk7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7Ozs7TSxjOzs7Ozs7OztzQzs7Ozs7c0M7Ozs7Ozs7Ozs7STs7TTs7TTtPLE87TyxPO007Ozs7Ozs7Szs7STtHOztJO0k7Ozs7Ozs7OzhCOzs7Ozs7OztROzt1Qjs7O1M7O1UsUTtVLFU7Ozs7YSxxQixPO2EsRzs7O2Esc0IsTzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7Ozs7Ozs7Ozs7OztNOztPLFE7OztPLEk7Ozs7Ozs7OztRLEk7Ozs7Ozs7Ozs7Ozs7OztLLEk7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TztRO1M7O1ksVztZLE87Vzs7UTtxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLE07Ozs7Ozs7Ozs7O1E7Uzs7Ozs7Ozs7OztPO1E7Uzs7WSxXO1ksTztXOztRO3FCOztPOzs7USxPO1EsTzs7Ozs7WTthLE87YTtlLDBCO1k7YSxXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztZO1c7Z0I7OztPOzs7UTtTLGtCLG1DO1M7O1k7Ozs7OzthLFE7YSxRO1ksRzs7Ozs7OzthOztZOzs7O3dCOztZOzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7O0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87OztLO0ssbUIsZ0Q7SztNLFE7OztNLFU7Ozs7O00sSSxzQjs7TSxtQjs7Ozs7Z0I7SztNLFU7Ozs7O00sVTs7Ozs7TTtLO007TTtPLEksb0I7Ozs7OztLO0k7SSxPOzs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SyxPO0k7SSxPOzs7STs7SztLLE87STtJOztHOztJLHlCLE87SSxPOzs7O0ksTzs7NkMsUzs7O0ksTzs7O0ksd0I7Rzs7SSx3QjtHOzs7STs7OzhCLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTztPLE87OzRCLE87OzZCLE87Ozs7OztXO1csTztVO08sTzs7Ozs7O1c7VyxPO1U7TyxPOzs7TyxxQjtlOzs7c0Msc0M7OztJLE87OztJO0ssa0IsTztLLE87OztJLG9CO0ksTzs7O0k7O0s7O007OztTO1MsVztTLE87O0ssTzs7O0ksb0I7SSxPOzs7Ozs7Ozs7SztLO0ssTztJO0k7STtJLFc7STs7SztLLE87STtJLE87OztJLHFCLE07SSxPOzs7O3dCLGtCLE8sNEI7STtJLFU7SSxPOzs7O0ksTzs7OztJLHNCOztJO0ksVTtJLE87OztJO0k7STs7SywwQjtLOzt1QixPOztRO2dDLE87OztJO3FDOzs7Tzs7NEIsTzs7Tzs7TyxxQixNO08sTzs7Tzs7O1EsTTtPOzs7O1c7VyxPO1U7TyxPOztPLHNCLE07TyxPOzs7Ozs7VztXLE87VTtPLE87O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7Rzs7OztLOzs7d0IsTzs7USw4QixNO1E7USxPOztRLGdCLE07USxPO2dCOztJO0k7STtxQzs7O087O087OztPO08sTzs7Tyx5QixNO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7O087TyxVO08sTzs7O087TyxVO08sTzs7TywwQixNO08sTzs7Tyx3QixNO08sTzs7Tyx3QixNO08sTzs7Ozs7OztXOzhCOztXLE87VTtPO08sVTtPLE87O2dDLE87OztPO08sTzs7TywwQixNO08sTzs7O087TztPLFU7TyxPOzs7TztPLE87OztPO08sTzs7O087TztPLE87O2dDLE87O087O087O2dDLE87Ozs7OztXO1csTztVO08sTzs7O087TyxPOzs7TztPLE87O2dDLE87O2dDLE87OzZCLE87O2tDLE87OztPO08sVTtPO08sTzs7Tzs7O087TyxPOzs7Ozt3QixrQixPLDRCO0ksTzs7OztJLE87Ozs7STtJLFU7SSxPOzs7O0k7Ozs0QixPOzs7TyxPOzsrQixPOzs2QixPOzs4QixPOzs0QixPOzs4QixPOztPLDBCLE07TyxPOzs4QixPOzs4QixPOzs2QixPOzs7TyxxQjs7TywwQixNO08sTzs7TywwQixNO08sTztlOzs7O0ksd0I7Rzs7SSxZOztJLE87Ozs7STs7O087OzZCLE87OztPO08sTzs7O087Ozs7VztXLE87VTtPLE87O2dDLE87ZTs7OztJOzs0QixPOztPOztPOzs4QixPOztPO2U7Ozs7O0ksTzs7OztJO0ksTzs7O0ksOEI7Ozs7Ozs7O1c7VyxPO1U7Tzs7OztXO1csTztVO08sTzs7O087TyxPOztpQyxPOzs7TztPLE87Ozs7O0k7OztPOzs2QixPOzs7TztPLE87OztPO087TyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7SSxPOzs7O0k7OztPLHNCLE07TyxPOzsrQixPOzs7Tzs7OztXO1csTztVO087TyxPOzs7Tzs7OztXLGtCLE07VyxPO1U7TyxPOzs7Ozs7O087Ozs7VztXLE87VTtPO08sTzs7O087TyxVO08sTzs7O087TyxPOzs7OztJOzs7TywwQixNO08sTzs7Z0MsTzs7O087TyxPOzs7TztPLE87Ozs7O0k7SSxVO0ksTzs7OztJOzs2QixPOztrQyxPOztrQyxPOzs7TztPLE87ZTs7Ozs7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7TywyQixNO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzt3QyxPOzs7OztJO0ksVTtJLE87Ozs7STtLLHVCLE07SyxPOzs7SSxPOzs7O0k7O0ssTzs7O0ksTzs7O0k7O0ssTzs7O0ksTzs7OztJOzs0QixPOzsyQjs7NkI7OztPO08sTzs7NkIsTztlOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7STtJLE87OzRCLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O2tCLFM7O0ksZ0MsTztJLFc7OztJOzs7O0ssTztLLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7O0ssTzs7Ozs7OztLLE87SSxvQjtJLFc7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SyxXO0k7Rzs7SSxjO0k7RzswQyxTOztJO0ksVztHOztJLHdCO0c7O0ksd0I7Rzs7STs7OztLLFk7STs7Ozs7eUI7OztPOzs7USxROzs7Ozs7NkM7OztPOzs7USxVOzs7Ozs7OEM7OzsrQzs7OzhDOzs7Tzs7USxPO3lCOzs7NkM7Ozs4Qzs7O087O1EsTztRLHNCOzBCOzs7Tzs7USxPO1Esc0I7MEI7Ozs7O3dDOzs7O0k7OztJLGU7STtHOztJLGM7STtHOztJO0ssa0IsTztLLFc7OztJLG9CO0ksVzs7O0k7O0s7O007O1M7VTtVO1UsTztVLFM7Uzs7SyxXOzs7SSxvQjtJLFc7OztJOztLLE87SyxPO0ksb0I7STtLLFk7SyxXO0s7SyxPO0ssZTtLO0ssTztJLG9CO0ksaUI7STs7Ozs7Ozs7Ozs7Rzs7SSwwQyxPO0kscUI7OztJLGlCLE87SSxvQjtJO0ssZTtLO0ssTztLLHFCO0k7Rzs7SSx3QjtJO0c7O0k7O0s7Ozs7TSxPO00sTzs7OztJO0c7O0ksSSxVLGdDO0k7Szs7O3dCLFc7OztTLHNCOztLOztJLG9CO0ksSSxZLHlDOzs7Ozs7Ozs7O3lCOzs7Uzs7VSxPO3lCOzs7Uzs7Ozs7OzthO2EsZTtZO1UsUTtVLE87O3lCOzs7Uzs7OztVLE87OEI7OztTOzs7VSxPO1Usc0I7eUI7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0k7Rzs7O0s7O3dCLFc7O1E7OztTLE87UyxPO1EsVzs7USxnQixPO1EsVztnQjs7STtJO0ksb0I7STtLLFk7SyxVO0s7Ozs7OztROzs7O1MsUTs7OzRDOzs7UTs7Ozs7UyxPO1MsVTs7OztROzs7UyxPO1MsTztTLHNCO1MsTzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87aUM7OztROzs7UyxPOzJCOzs7UTs7Ozs7O1k7OzthOzs7WSwyQjtXO1MsVztTLE87Ozs7O1k7Ozs7Ozs7eUI7OztROzs7OztTLE87eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7OzZDOzs7UTs7O1MsTztTLHNCOytCOzs7UTs7Ozs7O1MsTzt3Qzs7O1E7OztTLE87eUI7OzswQzs7OzBDOzs7Ozs7eUI7Ozs7O3lCOzs7UTs7Ozs7O1MsTztTLE87UyxPOzs7WTs7Ozs7Ozs7O1E7OztTLE87eUI7Ozs7Ozs7STtHOztJLGlCLE87SSxvQjtJLGtCO0k7Rzs7SSxpQixPO0k7Rzs7STtLLGdCO0s7SyxPO0ssWTtJO0c7O0ksSSxVLGdDOzs7b0M7O087OztRLFE7Ozs7Ozs7O2lCOzs7O3FDOztzQzs7c0M7O3NDOztPOztRLE87dUI7OztzQzs7c0M7O3NDOzs7O3NDOzs7Tzs7USxPO3dCOzs7Tzs7USxPO3dCOzs7O0k7Rzs7SSx3QjtHOztJLFk7O0ksa0I7OztJLEksVSxnQzs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRLE87dUI7Ozt3Qzs7OztJO0c7O0k7O3dCLFc7O3VCLFc7OzBCLFc7O3lCLFc7ZTs7OztJLGdDLE87STtHOztJOzs7SyxNOzs7SSxXO0c7O0ksOEI7OztPOzs7OztXO1csYztVO1EsTzs7O1c7VyxrQjtVO1EsTztPOztPLGtDLE07TyxXOztPLGdDLE07Tzs7Tzs7OztRLE07TyxXOzs7O0ksSSxVLGdDOzs7OztxQzs7Tzs7O1EsTTs7OztPOzs7O1EsTTtRLE07dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0k7Rzs7SSxjO0k7Rzs7SSxJLFMsZ0M7OztPOzs7O1EsTTtpQzs7OzJDOzs7Tzs7Ozs7O1EsTTtRLE07USxvQjtRLE07NkI7OztPOzs7USxNO1EsTTtRLG9CO1EsTTtzQjs7O087Ozs7O1EsVTs7O1EsTTtRLE07USxvQjs7Ozs7Vzs7OztPOzs7Ozs7USxNO1EsTTtzQjs7O087OztRLE07c0I7O0k7Rzs7SSxJLFksZ0M7OztPOzs7O1EsTTtvQzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJO0c7O0k7SyxZO0s7SyxNO0ssYztJO0c7O0k7OztxQzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7O0k7Rzs7SSxJLFcsZ0M7Ozs7OztTOzs7O1UsTTtpQzs7O1M7O1UsTTswQjs7O1M7Ozs7VSxNO3FDOzs7Uzs7O1UsTTswQjs7O1M7Ozs7VSxNOzsrQjs7Ozs7OzBCOzs7Uzs7OztVLE07O2dCOzs7Ozs7OEI7OzswQzs7Ozs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOztLOzs7O00sTTs4Qjs7c0M7STtHOztJOzs7OzsyQjs7d0M7STtHOztJOztLLFc7OztJLGdCOzs7STs7Ozs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztRLE07c0I7OztxQzs7O0k7Rzs7SSwwQyxNO0kscUI7OztJOzs7O0ssTTtLLE07SyxNO0ksVztHOztJO0ssUztLLFU7STtHO3dCLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7SSxPO0c7O0k7O3NCOztzQjs7c0I7O3NCOztzQjtnQzs7RztHLEksc0I7O0k7Ozs7O0c7O0k7Ozs7Rzs7STs7Rzs7STtJO0c7O0ksRztLLE87STtJLFU7STtJO0k7STtJO0k7O0c7O0k7STs7Rzs7STtZOztJO0c7O0k7O0ssSTt3QixpQztLO00sSzs7Ozs7Szs7O087O1E7O1c7Ozs7Ozs7OztjLEc7ZTtlOztjOzs7Ozs7OztjO2M7Yzs7O2MsRztlO2U7O2M7O2U7ZTtlOzs7O2U7ZTtlO2U7ZTs7OztlO2U7ZTtlO2U7O2M7YztzQjs7VyxHO1k7WTs7VztXOzs7OztjOzs7OztZOzs7O2dCLE87ZTtZO1k7WSxRO1k7WTtZOzs7TztPOzs7O00sSTs7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLE8sbUM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3lCLFc7OzJCLFc7O3lCLFc7OztPLHFCOzswQixXOzsyQixXOzsyQixXOzsyQixXOztHO0c7MEIsTywyQjs7SSxTOztLO0ssRzs7O00sSztPLE07TSxZO007TztPLEc7USxJOzs7Ozs7OztLO0k7STtLO0ssMEIsTywyQjtJLE87Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7O0k7Ozs7O1M7Ozs7aUI7OztTO1U7WTtVLE07VSxNO1UsTTs7O2U7O1UsTTtVLE07VSxNOztVLE07Ozs7Ozs7Ozt3Qjs7Ozs7d0I7Ozs7O3dCOzs7Ozt3Qjs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87UTtLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxtQixPLDhCO0c7O0k7b0IsZTtJLE87Rzs7O0s7SztNLG9COzs7SztJO0ksTztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7OztTOztVLFk7VSxvQjtTO1U7VyxPO1c7Ozs7Ozs7OztTOzs7OztVOzs7O1U7Ozs7Ozs0Qjs7OztTOzs7VTtVLE07Uzs7OztNOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7O1E7O1M7UyxvQjtROzs7SztLLE87STtJLGdDLHFDO0k7SztLO2tCOztNOzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt1QixPOzt1QixPOzt1QixPOzt1QixPOzt1QixPOzt1QixPOzt1QixPOytCLE87O0c7O0k7b0M7OztJO0k7OztPO08sTzs7Tzs7USxvQjtPO08sTztlOztHOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7VTtXOztJO0c7O0k7OzBCLFc7O3VDOztPLGtDO087O0c7OztJLGdCOzs7SSxZOzs7Ozs7O087OztROzs7Tzs7Ozs7SyxZO0s7SztJO0k7STtHOztJOzt5QixXOzt5Qjs7dUQ7O3lCOzsyQixXOzsyQixXOzs7TyxXOztHOztJO0k7Rzs7SSxXO0ksTztHOztJLG1CLE87SSxPO0c7O0k7SyxNO0ssUTs7O0c7O0k7SyxNO0ssUTtLLE87SSxPOztHOztJLEksTSxtQzs7Ozs7O21COzs7Tzs7O1EsTzs2Qjs7O3FDOztPOzs7USxPOytCOzs7d0M7OztzQzs7cUM7O087O1EsTzttQjs7O3NDOztxQzs7Ozs7O1c7VyxPO1U7b0I7Ozs7Ozs7VztXLE87VTtvQjs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7OztLOzs7O00sTztNLE87SyxXO0k7SSxJLFc7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7Ozs7Rzs7STs7SyxrQixPO0ssVzs7SSxvQixPO0ksVztHOztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssTTtLLFE7Szs7SyxPO0ssTztLO0ksTzs7Ozs7Ozs7O0c7O0k7SyxNO0ssUTtLLE87SztJLE87Ozs7Ozs7O0c7O0k7SyxRO0s7SyxPO0ssTztLO0s7O0ksb0I7SSxlO0ksTzs7Rzs7STtLLFE7SyxPO0ksTztHOztJO0ssTTtLLFE7Szs7Szs7OztNLE87TSxPOzs7O0k7SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1ksTzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLHdCOzs7Ozs7Ozs7OztXLEc7Ozs7c0I7Ozs7Ozs7Uzs7VSxPO3FCOzs7O1M7VTs7Ozs7O2M7YyxXO2E7VyxPOytCOzs7Uzs7VztZLE87WSxPO3VCOzsyQzs7Ozs7OztVOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7Ozs7OztTOzs7VSxPOzRCOzs7Ozs7OzthOzs7YyxPO2E7WTtxQjs7O1M7O1UsTztxQjs7O3VDOztvQzs7eUM7OztTOzs7VSxPO3FCOzs7O0ksTztHOztJOzs7O0ssTztLLE87SyxPO0ksVztHOztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7O1c7OztZLE87cUM7Ozs7O1U7O1csTztzQjs7VSwwQztVO1c7WSxPO1ksTztXLEs7VyxJOztVO1csTztXLE87VzthO1csTzs7Ozs7Yzs7Ozs7OztROzs7Ozs7WTtZLFc7O1ksc0I7VztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7OztTLE87UyxPO29COzs7UTs7UyxPO29COzs7O1E7O1U7VyxPO1csTztzQjs7d0M7Ozs7Ozs7O1E7OztTLE87NEI7OztROzs7Uzs7O1k7K0I7O1ksb0I7VztTLFM7UyxPOzs7O1k7OztROzs7UztxQjs7O1E7Ozs7UyxPO1M7cUI7OztROztTLE87cUI7OztROzs7O1MsTztTLE87UyxPO3FCOzs7UTs7O1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7Ozs7UyxPO1MsTzs7d0I7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2EsTztZO1c7cUI7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJO0ssTzs7STtLOzs7O00sUTtNLFU7Szs7OEM7OztROzs7UyxPO1MsTzsyQjs7O1E7O1MsTzsyQjs7Ozs7cUI7O0ssTzs7SSxPO0c7O0k7O0ssVztLLFc7SztJO0c7O0k7O0s7SyxjO0k7SSxXO0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLOztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE87Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixPO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7Ozs7USxNO087O1EsTTttQjs7OEM7O0ksTztHOztJO0ssTTtLLFE7Szs7O08sTTs7d0M7OztPOzs7O1EsTTs2Qjs7O087Ozs7OztXO1csVzs7VyxzQjtVO1EsTTttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7MkIsTyxrQztTLFM7NEI7Ozt3Qzs7SSxPO0c7O0k7O0ssTTtLLE07OztJOzs7OztNLG1DOzs7O0ssVzs7Rzs7STs7OztLLE07SyxRO0k7Szs7OztNLE07OEI7O3FDO0ksTzs7O0k7Ozs7SyxNO0ssUTtJOzs7O3dCOzt1QztJLE87OztJOzs7SyxrQzs7STtHOztJO0ssTTtLLFE7Szs7O087Ozs7MEIsTyxrQztRLE07d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qzs7Ozs7Tzs7O1EsTTt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCOzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0Isb0I7O0k7O087O087O087ZTs7RztpQywwQjs7STtJLFc7STtLLFU7SyxPO0s7Tzs7Z0I7O0k7Rzs7SSxJLFE7Ozs0Qjs7O0k7Rzs7STs7OztXO1c7Ozs7NEI7OztJO0c7O0k7O087O087O087O087O087O087O087ZTs7RztpQyxXLGlDOzs7OztJOztPLGlDO087O08scUM7Tzs7Tzs7O1EsTztRO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O08scUM7Tzs7Rzs7STs7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7OztrQjs7cUIsTzs7TTtNOzs7O0ksTztHOztxQixPLHlDO0ksMEI7STs7Tzs7O1E7O1c7O1E7O1c7O08sTzs7O08sTzs7Tzs7OztROztPLE87OztPLE87O0c7OztJLE87OztJOzs7O0ssTztJLE87Ozs7SSxXO0ksUztJO0ssTztLLE87SyxPO0ksTztHOztJOzs7O1EsZ0I7b0IsVzs7OztRLFc7O1E7OztTOzs7OztRLGtCOztTLFc7OztHOzt5QixxQjtJLE87Rzs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7O1M7O1UsTztVLE87VSxPO1MsRyxpQztTO1U7VTs7Ozs7Ozs7O1M7Ozs7O1k7O2E7Ozs0Qjs7WTs7WTs7Ozs7Ozs7WTs7O2E7Ozs7OzthLFU7Ozs7Ozs7OzthO2MsVzs7O2MsYzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7ZTs7Ozs7Ozs7Ozs7b0I7Yzs7Ozs7Ozs7ZTs7Z0I7OztnQjs7O2dCOzs7O2U7Ozs7OzthOztZO2E7OzthOzs7YTs7OztZOzs7Ozs7OztVLEcsZ0M7VSxXO1U7OztXO1ksTztZLE87WSxPO21CO1U7O1MsSSxXOzs7Ozs7O1k7Ozs7O1M7c0Q7Uzs7VTs7Ozs7Ozs7Ozs7O3dCOztTOzs7Tzs7USxPO1EsTztROzsyQjtPO1E7UTtPOzs7SztNO007TTtLOzs7O0k7O007Ozs7O08sUztPOzs7Ozs7Ozs7UTs7UyxVOztpQjs7OztpQjs7O087O1EsUTtRLFU7O2dCOzs7TTs7O3NCO0k7Ozs7STs7Syw0Qzs7SSxhO0k7Rzs7STtLLE87SyxVOztLOzs7TTs7SztLO0k7O21COzs7Ozs7Ozs7Szs7OztROzs7TTtPOzs7TyxNOzs7Ozs7OztLOzs7YTtNO0s7STtJO0ssVTs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7O0s7O3dCOzt3Qjs7d0I7Ozs7SztNOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCLEk7Ozs7Ozs7OztNO007OztJOzs7OztJLGE7STs7Ozs7O0s7Ozs7Ozs7UztTLDBCO1MsVTtTO1U7VyxPO1c7aUI7Ozs7Ozs7OztTO2lDLHFCO1UsTztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7eUI7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07OztnQyx1QjtzQjs7Ozs7Ozs7Ozs7UztVOzs7Ozs7Ozs7O1M7Ozs7VSxPO1M7Ozs7Ozs7O1M7VSxVO1U7Ozs7Ozs7Ozs7Ozs7O1U7O1c7Ozs7Uzs7OztTO1U7WTtVOzs7Ozs7Ozs7O1M7Ozs7VSxVO1UsVzs7O1U7WTtVOzs7Ozs7Ozs7O1M7Ozs7VSxRO1UsUzs7VTtVO1k7Ozs7Ozs7O0ssTTs7O0k7Szs7TTs7OztJOzs7O0k7Szs7Ozs7Ozs7Ozs7OztLLE87SyxPOzs7STtZOzs7Ozs7O0k7STs7O0s7TTs7STs7Ozs7O087OztLOzs7Ozs7Ozs7Szs7OzswQzs7STtHOztJO0k7Ozs7Ozs7O0ssc0I7Szs7RztHO0k7STs7STtLO0s7Ozt3QjtJLE8sVztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLFk7TTttQjtPOztRLFE7Tzs7OztPOztRLFE7USxRO087O00sWTtNOztLOztJO0ssUTtLLE07STtHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0csSTs7STs7Tzs7Tzs7Tzs7O1E7UTtxQyxZOzs7O1M7OztVLE07VSxNO1MsRyx3Qzs7a0I7O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7TTs7Tzs7O1U7VyxRO1csUTtVLE87UztPLFE7TyxRO007O3NCO0s7O00sUTtNLE07TTtNLE07TSxNO0s7O0k7Rzs7STtLOzs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7OztLOztJOztLLFM7SyxXO0s7SztJLE87Rzs7STs7O0s7OztJLE07Rzs7STs2Qzs7SSxNO0c7O0k7Ozs2Qzs7SSxNO0c7O0k7O3VCOzs7SyxNOztJLE07O0c7OztJOzs7OztNOzs7SztNLE07OztnRDs7SSxNO0c7O0k7O0ssTTs7O0k7Rzs7STt1Qjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O007OztPOzs7O3FCOzs7USxNO087OztRLG1COzs7Ozs7SSxNO0c7O0ksWSxPOzs7OztPLE87Ozs7TyxPOzs7Ozs7Ozs7TyxvQztPLE87OztPLHNDO08sTzs7Ozs7STtLLE87STs7O0k7Ozs7USxnQztRLE87OztRLG9DO1EsTzs7O0ksTzs7O0ksWTs7Z0I7O0ksTztHOztJLGM7eUIsOEI7SSxLO0ssTztJO0ksTztHOztJLGM7eUIsOEI7SSxLO0ssTztJO0ksTztHOztJLFE7bUI7Rzs7SSw4Qjs7O087O1E7USxzQjs7Tzs7Ozs4Qjs7O21CLGU7Ozs7Ozs7O087OztRO1Esc0I7UTtPOytCOzs7O2UsTTs7Rzs7OzttQjs7O007OztPO08sc0I7TztNOzhCOzs7OztLLG9COzs7Ozs7bUIsTTs7SyxHO29COzs7Ozs7OztJO0ksTztHOztJOzs7SyxPO0ssTztJLE87Ozs7STtLO2lCLE07Ozs7Ozs7OztLOzs7OztVO1csUTtXO1c7VzthOzs7Ozs7Ozs7O1U7Ozs7VTs7O1c7O1csTTtVOzs7VztXOzs7Ozs7Ozs7Ozs7OztXOzs7WTs7Ozs7Ozs7OztXOzs7WTs7Ozs7Ozs7O1MsZSxVO3VCLE07Ozs7TSxNOzs7Ozs0QixPOzs7O0c7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7WSxPO0k7SSxpRDtJOzs7O0s7SSxPO0c7O0k7OztLLHFCLE8sZ0M7O1ksTztJO0k7Rzs7STt3QztJO0c7OztLOzs7TSxPO00sTTtNO00sTztLLE87Ozs7Ozs7Ozt3QjtJO0ssTztLLFMsVztJLE87Rzs7O0s7O1E7Ozs7O0s7STtJO0c7O0k7SyxJLFM7Szs7Ozs7Yzs7Ozs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxPO0ksTztHOztJLCtDO3lCLG1EO0k7SyxPOztLLGdCO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLOzs7Ozt3QixPLDRDO00sTztLO2E7Ozs7O2lCOzs7TTs7TzsrQix5QztNLE87O0s7O007Ozs7Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7Szs7Ozs7OzttQjtNO087TyxJOzs7Ozs7Ozs7STtjO3NDO0c7O0ksUTtJLFc7MEIsTyxzQjtJLFc7SSxPO0c7O0k7O087O1E7UTs7USxPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7UTs7UTtVOzs7Ozs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7OztRLEs7USxLO1E7USxPO08sTzs7Ozs7Ozs7Ozs7Rzs7STtLLFE7Ozs7STtLOztJLHdCLE87SSxPOztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7OztLLE87O0ssTztJLE87Ozs7STtHOztJO0ssTzs7SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7O0k7O08scUI7bUI7O08sVzs7O087Ozs7O1E7OztPO1EsTzs7OztPOzs7Tzs7USxVO087OztPO1EsTzs7OztPOzs7OztJOzs7OztJOzs7Ozs7Ozs7O2U7O0ssZTs7SztJO0k7SztLO0ssTztLO0s7O0ksTzs7OztLOzs7TTtNO08sTztPLE87TztNLE87OztNLE07O0s7OztROztROztTOzs7OztjOzs7ZSxPOztlLE87YyxPOzs7O1M7Uzs7Ozs7WSxNO1csc0I7Vzs7OzswQzs7OztXOztZLGU7Vzs7Ozs7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7UTs7O0k7SSxPO0c7O0k7O08sb0I7TyxPOzs2Qjs7TyxnQyxpQjtPLE87Ozs7OztrQjtrQjs7Tzs7UTtRO1E7USxzQjtPLE87O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7USxzQjtPLE87O0c7OztJOztLOztROztTLFE7Ozs7Ozs7Ozs7OztXOztZO1k7WTs7OztxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7b0I7OztRLG1COztTLE07OztvQjs7SyxhO2tCLHNCOzs0QixPLHNCO00sTztLO0s7STtJLE87Ozs7SztNOztPO08sVztNLFc7O3FDOzs7Ozs7OztNO08sYzs7TyxPO007Ozs2QjtNOzs7Ozs7VSxpQjtVLE87Ozs7Uyx1Qzs7OztrQjtTO1U7VSxzQjtVO1UsTztTLE87Ozs7TTtPLGU7O087TTtNO087TztPO08sTTtNLE87Ozs7Ozs7O0s7SyxXO0k7SSxPO0c7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087STs7O1EsTTtPOzs7O0s7SyxHO00sTTtLLE87STtJO0ssTTtLLE87O0s7OztNOzs7TSxPO007O1M7Ozs7Ozs7O0ssTzs7Ozs7STtJLGdCOztHO0k7STtJO0k7O0k7STs7O0c7O0k7SSxXO0c7OztJOzs7OztJLFE7O0ksRztLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLLFc7Szs7Ozs7SyxlO0ssTTs7Rzs7STtLLE87SyxxQjs7Rzs7O0ssbUI7O007TTs7O00sTTs7Szs7TyxnQjtPLE07O007TSxNOzs7OztNOztPO007O0k7SSxPO0c7O0k7O0k7Rzs7d0IsdUM7SSxPO0c7O3lCLGtCLE8seUI7SSxXOztLOzs7TSxJO00sUTs7O1M7TztPOzs7SyxNO0k7SSxPLFc7Rzs7STs7SyxZOzs7TSxPOztLLE07STtJLFc7STtHOzt5QiwwQztJLE87Rzs7OztLO0k7STs7Ozs7O08sTTs7O0s7Ozs7OztRLGdCO1EsTTs7TztRO1MsTztTLE87Ozs7OztRO1M7VSxPO1UsTzs7Ozs7Ozs7OztVOzs7Ozs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087USxzQjtRLE87OEIsZTtRLFc7USxPO087O087OztRLFU7Ozs7O1E7Ozs7O2tDLFM7bUI7Ozs7OztPO1U7USxXO1EsTTs7O087USxzQjtRLE87USxTO1E7Ozs7O2dCOzs7O087USxPOzs7VztXO1ksVztZOzs7OztZLGtCLFE7WSxNOzs7VTtPO087OEIsZTtRLE87USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7Ozs7O2dCO3NDO2U7YTtlO2E7WTs7O1c7O1EsZ0I7UTtrQywwQjtRLFc7UTs7O2E7OztXO1csTztVO1EsUTtPLG1DOzs7OztRO1MsVTs7Ozs7OztTOzt3QixNO1UsdUIsVTs7OzthOztjLFM7Ozs7Ozs7OztTLEc7VTs7VTs7Ozs7USxNOzs7OztROzs7OzJDOzs7Ozs7MkI7OytCOztTO1UsVTs7O1M7Ozs7OztTO1MsTTs7OztVO1EsVztRLE07OztPO1Esc0I7USxTO1EsVztRLE87OztXO1csSSxXLHdDOzs7OztZLGtCLFE7WSxNOzs7VTtPO087OEIsZTtRLFU7USxPO1EsTztRLFU7Ozs7O3FDOzs7OztXOztZLE87OztlOzs7Z0IsUTs7OzsyQzs7Ozs7ZTtjO1ksVztZO1k7Yzs7bUI7Ozs7UTs7TyxNOzs7Tzs7UztVLE87Ozs7OztTO1UsTztnQjs7UTtRLEk7Ozs7O1Msc0IsUTtTLE07Ozs7Ozs7OzJCO1E7O1M7O1E7USxJOzs7O1Msa0IsUTtTLE07Ozs7UztTOztRO1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WSxHO2EsTTs7WSxJLG9CO1ksRzs7O2EsSSxJLE87Ozs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Vyx1QiwwQjs7OzthOztjO2M7YyxVOzs7Ozs7Ozs7Ozs7YTsyQjs7YTtjLE87YyxVOzs7Ozs7a0IsTTs7Ozs7O2lCLEc7a0I7bUIsSzs7O3NCOzs7dUI7O3dCLEs7eUIsWTs7b0Q7Ozt5QixNOzs7Ozs7c0I7cUI7a0I7Ozs7OzthLE07Ozs7O1k7OztnQixvQjtnQixPO2U7YSxLOzs7YTs7YyxLO2U7cUMsYztnQixRO29COzs7Ozt5Qjs7O2MsTTs7O2tDOztzQjs7WTs7O1c7VTtRLFU7UTtxQyxpQjtRLE87USxXO087Ozs7O1ksZTs7YSxNOztZO1c7UTs7Tzs7OztXLE87O1U7UTtRO1U7YTs7UTtRLE87Tzs7Tzs7OzJCLFk7USxTO087TyxJLHlDO29CO08sSSx3Qzs7TztPO087UTsyQixPLGdDO1EsWTtRLFE7UTtPO087O087Ozs7UTs7O1E7USxRO087Tzs7O1c7VztVO1EsTztRLFM7OztXO1c7VTtRLG9CO1EsUTtPOzs7TyxNO2tDOzs7O0ksVztJLFc7SSxZOztLOztNLFU7Ozs7O00sTztLLFc7Szs7O1Msd0IsUTs7O1UsYzs7UztRO00sVztNOztTO0s7SyxPOztJLE87Rzs7STtJLE87Rzs7RztJOzs7SSxJLFk7O0s7OztNO00sTztLLEksbUMsSTtpQjtnQjtLOzs7O29COzs7Ozs7Ozt5QjtNO08sTTt3Qzs7TTs7O087OztJO0k7O0k7Szs7TTtNLEksVyxvQzs7Ozs7TyxNOztLO0ssTyx3QztHOztJOzs7SSwwQjtJO0k7STtHOztJOzs7STtJLEksaUM7OztLO00sTztNOzs7O2E7Ozs7STtJO0k7STtJOzs7SyxZOzs7UztPO087OztLO0k7SSxZO0k7STs7OztLLE87SyxPO0k7Rzs7STs7STtJO0k7STtJO0k7SSxnQjtHOztJOzs7O0s7Szt5QixZO00sUztNO007SztLO0s7Szs7STtJO0k7STtJO0c7O0k7SyxPOzs7Tzs7UTs7VyxPOzt5QjtVO1E7VTs4QixPLGtDO08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7Tzs7USxvQixPLHlDOzRCLE8seUM7TyxPOzt5QixPOzs7TyxPOzs7Ozs7O1c7VztZLE07O1ksTztXLE87Ozs7Ozs7Ozs7VTtPLE87OztPO08sWTs7OztTOztVOzRCLFcscUM7UyxPOzs7Tzs7O08sTzs7Ozs7Ozs7O08sTzs7O087TyxHO1E7ZTtROztRO08sTzs7O08sTzs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7VTtPLE87Ozs7OztXLFksTzs7VyxPO1U7TyxPOzs7TyxPOzs7O0k7Szs7OztNLHlCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztxQixPOzt1QixPOztxQixPOztxQixPOzt1QixPOzt1QixPOytCLE87O0c7O0k7O0s7OztNOztLO00sTztLOztRLE87O1EsTzs7USxPOzs7OztLLE87OztPLG9CLE87TyxPOzs7TyxPOzs7TyxvQjtPLE87O087O1EsNEI7TyxPOzs7Ozs7USxPOzs7Tzs7OztROzs7OztTLE87Ozs7Ozs7Ozs7O1E7cUM7USxPOzs7O1E7NEIsbUM7UyxPO1MsNEI7UyxPO1EsTzs7O087b0M7TyxPOzs7cUIsTzs7TyxPOztPOzs7MEIsK0M7USxlO08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7OztPOztRLDRCO08sTzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksdUI7SSxPOzs7O0ksWTs7OztLLE87Ozs7Ozs7Ozs7O0ksTzs7OztJLE87Rzs7STtJLFU7SSxPO0c7OztLO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7STtJLE87Rzs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0k7Ozs7c0IsaUQ7O3dCLGE7SSxPO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7Szs7Rzs7STs7Ozs7Ozs7OzsyQjs7OztPOzs4QixvQixXO1EsTzs4QixvQixXO1EsTzs7Ozs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLE07VyxRO21GO1UsTTtTOzs7Ozs7Ozs7OztJO0c7O0k7Ozs7eUI7O087O3lCLE87OytCO2lDOztHOztzQix5QztJOzs7Ozs7UTs7Uzs7Ozs7Ozs7UTs7OztZO1k7VztTLE07Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7RztHOzs7Ozs7SSxNO0kseUI7O0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7OztZOztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLO0k7STtLOzs7UztnRDtTO1E7TSxZOzs7OzRCOzs7SSxvQjtJLE87Rzs7eUIsd0IsWTtJLE87Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7UTtTO1M7Ozs7O1E7UztTOzs7OztRO1M7Uzs7Ozs7OztPO1E7UTs7Ozs7Ozs7TyxXO08sVzs7TTs7O087Tzs7Ozs7O0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzs7Ozs7Ozs7Ozs7Ozs7aUI7OztrQixPO2lCOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUIsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQjs7O2lCOzs7Ozs7Ozs7Ozs7OztpQjs7a0IsTztrQixPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7UyxnQztTLFM7Ozs7OztRLGtDO1EsUzs7Ozs7TTs7STs7Szs7O08sa0IsTzs7Tzs7O21CO0s7STswQjs7SztLOzs7UTs7Ozs7UztRLFc7Ozs7O3NCO007O0k7STs7MEIsMkM7Rzs7OztJOztJO1c7O2M7Rzs7STtLO0ssTztLLFE7eUU7SSxNO0c7O0k7Ozs7Ozs7Ozs7OztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7Ozs7OztXLE87Ozs7Ozs7Ozs7Ozs7aUI7Ozs4Qzs7STtHOztJO2tEO2lEO0ksTztHOztJOzs7Ozs7Ozs7O2tDLE87O2tDLE87Ozs7eUMsTzs7Tzs7TTs7Ozs7O1E7O1E7O1MsTTtTOzs7WTtZO2E7OztpQjs7Z0I7YyxNOzs7Ozs7OztZO1c7USxPOztJO0c7O0ksWSxrQzs7Ozs7OztrQjtNLDRDOzs7Ozs7O1U7O1c7OzsrQiwrQjtjLE87YTtXLFM7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7OztZO1k7O3NCOztZO1c7UTs7O21COzs7Ozs7UTs7Uzs7O1E7O2dCLE87O1E7O2dCLE87O0k7RzsyQiw0Qjt5Qyw0Qjs7O0s7SztNO08sTztPLE87O087Ozs7UTs7Ozs7TSxPOztlOzs7Ozs7STtJO0c7O0ksWTs7O0ssTTs7SSw4QiwwQjtJO0c7OztLO0s7b0I7Ozs7Ozs7O007TztPO2U7Ozs7OztJO0k7Rzs7O0ssVTtLO0k7O0ssWTs7Szs7Ozs7O007TTtLO0ssTztJOzs7Ozs7Ozs7Ozs7Ozs7OztNO08sWTtPO1M7OztVO1Usa0I7UztPLFUsVztNOztLOzs7Ozs7O007SztNO087Ozs7O0s7TTs7OztHO0c7O0ksbUI7SSx1Qzs7SztNLE07O29CLFc7O0s7STs7Z0IsVzs7STtHO0csbUI7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7Ozs7YSxrQjtpRjthLE07WTtVLFM7VSxNO1MsZ0I7VTtXLE87OztjOzs7ZSxROzs7O2UsTzs7YzthO1UsTzs7UyxXO1MsVztTO1UsTzs7O2E7OzsyQjtrQztZO1MsTzs7OztNOzs7TSxNOztJO0c7O0k7Ozs7OztLLE87STtnQjs7Ozs7O0c7O0k7SyxNOzttQjtJLG1CO0k7Rzs7SSxZOzs7SztNO08sVTtPLFU7Ozs7O1E7Uzs7eUM7O21COzs7TTs7Ozs7TyxPOzs7O0ksTztHOztJO0c7OztJOztLO0ssaUI7O0ssVztJO0ksYTt5Qiw4QjtJO0ssUTs7O0ksTztHOztJOzs7bUQ7SztNOzs7Ozs7Ozs7O1M7MkU7UyxPO1E7TSxlO007TSxTO0ssZ0IsTTtLLDBCO0ssa0I7O0k7Rzs7eUIsa0IsTyx1QjtJLEksTTtJO0ssSzs7TSxnQjs7SyxJLE07O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7O2tDLGtCLFM7VSxxQjs7OztVLGtDO1UsUzs7Ozs7Ozs7Tzs7Ozs7Szs7Rzs7STtJO21CO0ssc0M7SyxXOzs7Rzs7STtJO2lCO2dCO0s7OztNLE87TSxPOztNO00sd0M7TTtPO087OztNOzs7O1csa0M7c0I7VztXLHdCO1U7TyxPOzs7Ozs7O087Ozs7UTtPLFM7TyxJOzs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTOzJCLGtCO1MsTztRO007Ozs7Ozs7OztVO1UscUI7VTtXO1c7MEM7VyxNO1Usb0I7VSxPO1M7UyxXO1MsTztRO0ssMkI7OztNO087TztNLE87O0s7Ozs7Szs7OztNO007SyxPOzs7O0ssb0I7O0k7SztLLFU7OztLO0ksaUQ7STtLO0s7SyxPO0s7OztLLE87SSxvQjtJLE87Rzs7STtJO3dDLFU7Szs7O00sTztNLE87O007Tzs7VTs7OztZOzs7VTtTO087Ozs7TTs7OztPO00sUztNLEk7OztNO087TyxVOzs7TztPLE87Tzs7OztHOztJO0ssVztLLE87OztlO2U7STs7O0ssTzs7SztNOztPOzRCLHFCO00sTzs7Szs7TSxXO00sTztLO0ssTztJO0ksTyxXO0c7O0k7SSx3QztJO0s7Szs7O0s7O2tDLHVCO00sTztNLE87TSxPOzs7Uzs7Ozs7VSx1QjtVO1c7Vzs0QjtXLE07VyxzQjtVLE87O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOztpQjs7O3lCOzs7Ozs7ZTs7Z0I7ZSxHOzs7Ozs7a0I7eUM7bUI7c0MsbUI7Ozs7d0I7OzhEOzt3QixNOzt1Qjs7Ozs7Ozs7a0I7OztzQixrQjs7OzREOztzQixNOztxQjttQixZO21CLE87Ozs7Ozs7O3lDO2tCOzs7Ozs7O29COztxQjs7dUIsTTtzQixTO3NCLEs7dUIsSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7eUM7bUI7OztzQjtzQjtrQztxQjs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7Ozs7Ozs7O2tCO3NDLGM7bUI7O2lDLGUsNEI7Ozs7d0I7Ozs7MEIsTzs7O3dCLE07O3VCOzs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7O3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7Ozs7O3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7OztlOzs7OzttQixrQjt1RjttQixNOztrQjtnQixPOzs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCOzs7bUI7bUIsRyx3QzttQixZO2lEOzs7b0I7OzttQjtrQjtnQixVOzs7Ozs7O29CO21CO3VCOzs7ZSxHOzs7O2dCO2lCLEs7aUI7a0IsUTs7Ozs7OztlOzs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsYzs7ZTtnQixLOzs7O3FDOzs7Z0IsSTs7Ozs7Ozs7Ozs7NkIsTzs7OzZCLHNCO1MsTztRO0ssTyxXOztJO0s7SyxPO3VCLHNCO0ksTztHOztJOztLLDBDO0ssTTtJO0ksTyxXO0c7Ozs7aUI7b0I7SztLLHdDO0s7TTtNOzs7Ozs7OztXLFk7Vzs7O1k7WTtZO1c7VTs7OztNO087O087Tzs7O1E7UyxPOzs7Ozs7USx5Qzs7O1MsMkIsTTs7YztVO1csUTs7Ozs7O1c7OztjOzs7O2UsUTs7OzswQjtjO2E7VyxVOzs7VztXOztXOzt5QiwwQjtZLFc7WSxPO1c7Ozs7Ozs7O087Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix3Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OzsyQixpQjtRLEk7OEIsaUI7USxPO2U7Ozs7OytCLFM7ZTs7OztVLGlDOzs7OztXOzs7Ozs7Ozs7WSxNOztXOzs7WTtZO1k7WTtZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7OzswQjs7Ozs7Ozs7O2MsVzs7eUI7OztZOztXOztVLE07UztNLE87O0s7OztNLE87TSxPOzs7OztVOztXLE07VTs7VyxPO1csTzsyRDtVO1M7TSxHO087UTtRLE07Ozs7TztRO1E7Ozs7Ozs7OztRO1M7Uzs7Ozs7TztRO1EsUTs7Ozs7OztRLHNCOztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztRO1E7OzthLFc7YTtZOzs7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs7OztjOzs7ZSxPO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7OztpQixPO2dCLFc7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7O1U7Ozs7Ozs7O2M7O2U7OztjOzs7Ozs7Ozs7O2M7O2UsTztlLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7STtJOztNOzs7OztPO00sVzs7OztLOztHOzs7OztvQjs7Ozs7cUIsb0IsTyxzQjtNLEc7OztPLEk7OztJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixnQzs7Ozs7Ozs7Ozs7Ozs7O2dCLG1CO2dCOzs7Ozs7Ozs7Ozs7Ozs7Z0IsSztnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQixLO2lCO2lCOzs7Ozs7Ozs7Ozs7Ozs7Z0IsRyw2Qjs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7O29CLFM7NkI7Ozs7Ozs7Ozs7Ozs7cUI7O3FCO29CO29CO21CO2lCO2dCOzs7Ozs7Ozs7Ozs7OztnQixxQixPO21CO2dCO2dCOzs7Ozs7Ozs7Ozs7OztnQixvQjtnQjs7Ozs7Ozs7O1E7Ozs7OztRO1MsTzs7UTs7Tzs7OztPO1EsTzs7Tzs7O0ssTTs7Rzs7STtLO0s7TTs7Ozs7O087Ozs7Ozs7O0s7Ozs7O0ssa0IsTzs7Szs7RztzQjs7STtLOzs7OztNO0s7O0k7Rzs7cUIsNkI7SSxnQjtJO0c7O0k7SyxZOztLO0k7O0s7OztNLFE7OztNO0s7STtJO0ssUTs7O0k7STtHOztJO0k7bUI7Ozs7TTs7OztHOztJO0k7bUI7Ozs7TTs7OztHO3dCLE8seUM7Rzs7STs7STtLLE87SyxPO0ksTztHOztJO0ssVTtLLFM7O0s7Szs7Ozs7OztXOzs7Ozs0QixpQjs7O1UsaUI7O1U7Ozs7VztXO1U7VSxZOzs7Ozs7Ozs7O1U7O1U7OztXLFE7VTs7VTs7OztjLGtDO2M7YztjLFc7YTtXLFM7VTs7O1UsaUI7OzhCOztVLGtDO1U7O007O0k7STtJO0c7O0k7SyxLO0ssUTs7Ozs7Ozs7Ozs7bUIsbUI7Ozs7Ozs7UyxJLFU7Ozs7Ozs7Ozs7Vzs7OztlLFc7YztZLFM7Ozs7O1UsTzttQyxhO1csSzs7VTtXO1csc0I7a0I7Ozs7Ozs7O2U7O2lEOztLO007Ozs7Szs7STtLOzs7O0k7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7Ozs7YztjO2E7VSxPOzs7O1U7OztXOzs7Ozs7Ozs7TyxPOzs7OztLOztHOztJLFc7STs7Ozt5Qiw2QjthO0ksVzs7O2lCO0s7Ozs7OztNO0s7TTtPLE87Tzs7Vzs7Ozs7b0IsVztPO087NEI7Ozs7Ozs7Ozs7Ozs7OytCOzs7Tzs7O1E7UTs7O1M7OzthLDBDO2EsTTtZO1UsUTtVO1U7Ozs7VTs7O1U7YyxrRTs7Ozs7Ozs7Z0I7Ozs7OzRCLE8sa0M7UTs7Ozs7Ozs7TSxNOzs7TSxJOzs7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7Ozs7ZTs7YztXLE87O1csb0M7VyxXOzs7OztXOzs7K0IsZTtRLE87Ozs7O007O0k7STtHOztJLEksNkI7O0s7O00seUI7TTs7UztVOzs7O1MsTzs7TSxtQixXO00sUTs7O00sRztPO1E7UyxNO1MsTTtRO1E7Uzs7OztZOzs7O2E7O1k7VztRLEc7UztRLEksTzs7O087Ozs7Ozs7O0ssWTtNOzs7OzttQjtJO0s7OzRCLHVDO00sTzs7Ozs7O1U7O3NDO2EsMEI7VSxlO1UsTztTO007OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O3dCO0k7SyxjO0s7O0s7TztJLE87Rzs7SSxVO0k7Ozs7Uzt1QjtTLHNCOztVOzs7O1k7O2EsTzs7O2dCLFM7O2U7WTs7O1c7Ozs7VyxPO1U7VSxXO1UsVzs7Ozs7Ozs7Ozs7YSxLO2MsTTs7O2MsSzt3Qjs7OzthOzs7O1UsTTtTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOztVLE87VSxPO1UsTTtnQjtVO1c7aUMsc0I7VztnQzs7Vzs7WSxZO2tCO1k7YSxPO2EsTSxXO2E7WTs7OztTO1E7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztLO0ssTztJO0ksSSxRO0k7Szs7O1M7UyxlO1E7TSxZOzs7Uzs7VSxPO1M7UyxPO1E7TSxVO00sTTs7O1U7Vzs7OztZLFc7VyxPLHdDOzs7TSxZO0ssRzs7OztVO1UsTztTO007TTs7OztHOzt3QixTO0ksVTtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7O0ksSSxXLDBDOzs7Ozs7Rzs7O0s7SyxHLHdDO0ssYTtrQjtLLDRCO0ssWTs7OztTOzs7VSxJOzs7VTs7WTtpQjttQjs7UztTOzs7UyxPOzs7UyxlO1M7VTtXLE87VyxvQixPLHFDO1c7Ozs2QixPLGdDO2MsSSxpQjtjOzs7ZTtnQjtnQjtnQjtjLFc7YztlLEs7ZSxPO2UsSztlLE87ZSxPO2UsTztlLE87ZSxPO2UsTztlLE87ZSxLO2U7YztlLEksYzs7O2M7OztlO2dCO2dCO2dCO2MsUztjO2E7VyxPO1U7Ozs7O1U7O1csc0I7VSxPOzs7OEI7OztTO1M7O1MsTTs7Uzs7VSxPOzs7YSxrQixROzs7ZTs7OztpQyxPLGtDO2dCLFE7Z0IsSTtnQixzQjtlLE87OzsrQzs7YTtZO1M7UyxvQjs7OEI7Ozs7O1U7O1k7aUI7Ozs7OzthO2E7WTtTLE87O0s7STtJO0c7O0k7SyxPO0ssTztLLE87SSxPO0c7RyxnQjs7Ozs7OztLOzs7O007b0I7SztJO0k7SyxhO0s7Szs7Szs7OztLO0k7STs7Ozs7UyxLO1U7VSxLO1c7WTs7O2U7ZTtnQixHLDRDOzZCO2dCO2dCLEcsb0M7Z0IsWTs7OztvQixNOzs7b0I7cUIsVztxQjs7Ozs7OztxQixXO3FCLEc7c0IsTTs7Ozs7Z0IsTzs7YztXO1k7WTtZOzs7O21DOzs7OztTO1E7Szs7O0s7TTs7O1M7UztTO1U7VSxROzs7VSxLO1UsTztTOzs7Ozs7Ozs7VSxNOzs7Ozs7O1E7SztLO00sTztNLE07OztTLFc7UyxXO1E7TSxRO0s7TTtPOzs7VTtVLEcsMkI7Ozs7O2dCO1U7UztNO007Tzs7O1UsRywwQztVLGdCOztVO1c7VyxPO1c7OztXLE87cUI7O1U7VSxTO1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1UsVztVLEs7VyxPOzs7Ozs7OztVLE07OztTOzhCLG1CLG1CO007Ozs7Szs7OztNO007Ozs7TSxlOzs7Szs7TTtNLE07OztNO1EscUM7TSxHOzs7Ozs7O2E7Yzs7OzttQztLLFc7SyxPO0k7SSxPOztvQixrQjtHLGdCOztJLHFDLE87OztLO0s7STtJLE87Rzs7Ozs7OztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0MsUTs7Szs7TSxNO00sTTtNOzs7UztTO1UsTTtTLGlDOztVO1csTztXLFE7Ozs7WTthLE07YSxNO21COzs7Ozs7Ozs7UyxRLE07UztRO0s7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7Ozs7Ozs7OztVOzs7Ozs7O1M7TSxPOzs7OztJOztLOztLOzs7O1M7UztRO00sTTtLO3NDOzs7b0IsMEI7SSxHO0s7d0Isd0I7TSxNO00sTTtLO3NDOzt3QixtQiwrQjtJLFc7b0IsdUI7STtLLE07SyxRO0k7Szs7SSxjOztLLE07STs7O0ssTTtLLE87O0ssRyxtQzs7SztJO0ksTzs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7STt3QixvQjtJLE87RztHLGlDLHVDO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7SyxJO2U7d0I7STs7O0c7Rzs7Ozs7Ozs7Ozs7STs7O3NCO0ksVTtJLE87RztxQyxvQzs7SSxlO0ksTztHOzs7Szs7Ozs7O0s7OztJO0k7SyxROzs7SztPOztLOzs7OztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7STtrQjtLO00sTztNLFE7OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2QixPLGlDO08sTzs7TSxjO29COztNLE87Ozs7O00sTzs7O0k7Rzs7RyxnQyxnQjtHLHlCLFM7RyxtQywrQjtHO0k7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtLLGtCO0ssUTt1Qjs7SSxNO0c7Rzs7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7NEIsOEM7OytCLFcsOEI7RyxJLFM7O0k7STtLLFk7bUM7d0I7Szs7O007Ozs7Rzs7SSxXOztLLFk7OztNLGlCOztLLE07STtJLE8sVztHO0c7O0k7O0k7O0k7Rzs7O0ssSSxtQjtLLFc7STtJLE87Rzs7Ozs7OztJOzs7SSxJLFUsbUM7Ozs7OztHOzs7SztLO00sSSw2QixVOztPOztRLE07cUI7OztNOzs7Ozs7O1c7VyxPO1U7Ozs7TSxHO087OzhCLE8scUM7UTtPLE87O007TyxNO08sUTs7TztPO08sVTs7Ozs7Ozs7Ozs7Ozs7WSxNOztZLE07Ozs7Ozs7Ozs7WTs7YSxpQjtZLE87O1k7OzthLE87Ozs7Z0I7Ozs7OzttQjs7OztvQjs7Ozs7Ozs7OztnQixPOzs7YSxNO1ksTzs7Ozs7Ozs7TyxZOzs7Ozs7Ozs7Ozs7O1kseUM7Ozs7Ozs7OztZO2E7OztpQixtQixROzs7O21CLE87OzttRDs7aUI7O2MsTTtjLFE7YyxRO2MsVTs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJO3dCLFM7SSxPO0c7Ozs7SztNLEksVSx5Qzs7OzZCOzs7SztLO00sTztLO0ssWTs7TTs7TyxrQjtPO007O0s7SyxvQjtLLE87Ozs7ZTs7STtLO087Ozs7SyxpQjs7SztNLE07TSxZOztNLE07SztJO0k7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozt1QjtrQjs4QyxTO0ssTzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUIsTywwQztJLE87Rzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHdDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STs7SztLLEc7TSxNO3FCOztJO0k7Ozs7Ozs7OztNO08sUTtPLE07TSxXO0s7SyxPOztJLGE7O0ssbUIsUTs7Ozs7O0ssSSxPLHlCLE87SztJO0ksYTtJO0c7O0k7Szs7TSxPO00sTTtNO3lCLFk7SyxlOztJOztLOzs7STs7OztJO0s7TTs7O0s7O0ksZ0MsSTtJOztLO0s7TTt5QixZO00sTzs7b0I7Ozs7STtLOzs7SyxZO0s7SyxVOzs7SyxHOzs7TztPO087TztPOzs7VyxXO1csTztVO087Tzs7TTtNOzs7STtLLE87SyxZO0ssZ0I7SSxNO0c7OztJO0k7STt5QixvQixjO0ksSSxTLDRDOztLOzs7O00sTztLLFc7STtJO0ssUTtLLFU7SyxRO0k7O00sTTs7Ozs7OztLOzs7UyxNO1E7TTs7O087O087OztNOzs7UTs7Ozs7O3NCOzs7VTs7Ozs7OztXOzJCOzs7VTs7Ozs7Tzs7OztNOzs7UTt3Qjs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TyxvQjtPLFU7Ozs7Ozs7Ozs7Ozs7NEIsNkI7UTs7TTs7SztNOzs7UztTLEc7VSxNOzswQjs7UTtLO0s7TTswQixPLGtDO00sTztlO00sTTtLO007OztVO1csTztXOzs7Ozs7O1c7Ozs7Ozs7OztXLE87VyxPO1c7VTtTO1MsTztRO007TSxPO00sVTs7Ozs7OztLOztNOzs7Szs7O007OztVLGlCLFE7c0I7VSxtQixVOzs7VyxPOztVO1M7TyxRO0s7TTtNOzs7Ozs7Szs7TTtNLE07Ozs7O0k7SyxROzs7O0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7OztNO007SyxJLFcsc0M7Ozs7O00sTTs7STtJO0k7STtLO007TyxPO08sVztPLFU7Ozs7O08sTTs7OztLOztJOzs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7Uzs7O2E7O1MsTzs7Ozs7aUI7Ozs7Szs7dUI7SyxPOztHOzs7Szs7O00sUzs7OztPLE07O00sRztPOzs7STtJLE87Rzs7Ozs7Ozs7TSxtQixVOzs7TztRO1MsUztTLE87O1c7OztTLEk7Ozs7Ozs7UztVLE87VSxPO1UsTzs7WTs7Ozs7UyxNOzs7Ozs7O1MsTTs7OztNLE07OztJOzs7STs7SyxHO00sWTs7OztpQzs7Ozs7O08sTTttQztNLE07a0M7OztNLFc7TSxHOzs7TztRLE87UTs7Ozs7Ozs7O2M7SyxjOzs7Ozs7VTs7Vzt5Qjs7Ozs7Ozs7O0ssZ0I7Szs7TTs7Z0M7TyxzQjtNO00sSTs7Ozs7OztLLGM7Ozs7TSxzQjtNLEc7aUM7Tzs7O087O1Esc0I7Tzs7TTtPO1EsTztRLFE7USxvQjtPOzs7OztpQztPLE87Ozt5QjtLLE87STtJLFc7STtLOztNLHNCO00sTztLOzs7OzhCLE87OztHOztJLEk7O0s7TTtJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VTs7O2M7OztVLE87Ozs7O2tCOzs7O007OztVOztNLE87O0k7OztLO00sUTs7Ozs7SyxvQjtLO0s7STtJLE87Rzs7STs7Ozs7TTtPO1EsTztRLE87USxPO08sSyxpQztPO1E7USxPO1EsTztPO087Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7O0ssRztNLE87OztJO0c7OztLO0s7STtJLE87Rzs7STtJLGtCOztLOztNO00sTztNLGE7TTtNO0s7Ozs7Ozs7OztJO0k7SyxPO0ssZTtLLFE7O0ssSSxPLHlCLE87SyxXO0k7SSxlO0k7STs7Szs7Ozs7Ozs7OztXOztZLE07O1U7Tzs7O007TyxPO2dCOztLLFk7SyxhO0s7Ozs7TSxPO00sTzs7Ozs0Qjs7OzswQixPLDJCO0s7OztTOzs7Ozs7Ozs7Ozs7OztLOztJO0s7TztLO0ssYzs7OztNO087TyxLOzs7VTs7Ozs7O1UsVztVO1UsTztTO007TTs7Szs7Ozs7O007SztLLE87O0k7SyxPO0s7Tzt5QiwrQjtJLFk7O0k7SyxTO0ssVTs7Szs7Ozs7OztVO1c7WSxPO1k7Yzs7OztXOzs7OztZLE87Ozs7UztNLE87Ozs7TTtNO087USxPO1E7VTs7Tzs7Ozs7USxPOzs7SztLLE87STtJO0k7STs7OztTOztVO1U7VSxPO1U7cUI7UyxtQjs4QixPLDRCO1MsYTtTO1U7VyxPO1csTztVOzs7Ozs7VSxNOzs7UTtLOztJO3lCLHFCLDZCO0k7Z0MsbUIseUI7STttQjs7Szs7O007TSxNO3VCOzswQixPLDRCO0s7TSxPO00sTztLO2tDO0k7STs7SyxtQjs7SyxPO0k7O0s7Szs7Yzs7OztJO0k7STtLLHFCO0s7OztjOzs7OztJOztLLHFCLFE7aUI7O0ssTTtJO0k7STtLOztNO007OztNO007SztLOzs7Ozs7USxrQjs7O1M7OztRLE07O08sb0I7O1E7O1M7O1ksTztXO1M7Vzs7O1k7WTthO2MsTztjLFE7Ozs7O2MsTTs7Ozs7O2E7Ozs7Ozs7bUI7a0I7ZTs7Ozs7Ozs7ZTs7OzthLE07Ozs7YTs7WTtXO1E7OztPLE07Ozs7O21CO0sscUI7O00sTTs7Szs7STtJO0s7OztTO1M7UTtNLE87TTtRO1U7TSxPLFc7TTtRLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7Szs7STs7SztLOzs7Ozs7Ozs7OztJO0ksa0I7STtHOztJLEksSzs7OztNOztPO08sUztPLFU7Ozs7TztRLFM7USxNO1EsaUI7Ozs7TztRLFE7OztNLEk7Ozs7O08sTTs7OztPO1EsTztRLE87OztXLFcsbUI7VztZO2EsTztvQjs7O1csYztVO087O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztJOzs7OztLO0k7SSxPO0c7MkIsK0I7OztLLFk7SztLO0s7O00sUTs7O007Ozs7TztROztnQyxpQztTLE07Ozs7Ozs7O08sTTs7O007Ozs7VTtXLFE7OztVO1M7TyxnQjtPLE87Ozs7TztRLE87OztXOzs7OztZO1k7Ozs7OztVO1EsTTtNOztPLE07OztNO087OEIsb0IsYztPLGM7TyxPO08sTztNO007Ozs7Tzs7VTs7O08sZTtNO007Ozs7VTs7UztNOzs7O1UsWTtzQjs7VSxNOztTO007Ozs7VTtXOztjOzs7Ozs7Vzs7Ozs7OztXLE07O1M7TTtNOzs7VTtVLE87UztPLFM7Tzs7Ozs7Ozs7O007O0ssTTtJO0ksTztHOztJLFk7STtJO0k7O0k7STtJO0ksWTs7O0ssTTs7O0k7SztLLFM7STtHOztJO3lCLG1DO0k7SyxROzs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7Szs7Ozs7Ozs7Ozs7SztpQixPOztLLE07O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7a0I7STs7SyxPO0ssUTs7Ozs7O08sRzs7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7OztLLEksTSwwQzs7TTs7Ozs7TTtPOzs7O087Uzs7O087USxPO1EsdUI7Ozs7TyxNOzs7OztzQjs7O007TyxNO007OztVLFc7VTtXLFk7Ozs7YTs7YyxTO2tDOzs7Ozs7Vzs7OztrQzs7O1M7TztTO087OztVLGdCO1UsTztTO007TTtPLE87TyxPOzs7O00sSztPLE07TTtPLE87TyxPOzs7Szs7TSx1QixlO00sVTs7O007SztJO0ksTztHOzs7STtJO0k7SSxJLGdCO3lCLG9CLGM7STtLLFM7SyxRO0s7O0s7Ozs7TSxNO00sUTtLO0k7STtLLGM7Szs7O0s7O00sTTs7Ozs7STtLLGE7O0k7Ozs7O1M7UztVLFc7VTs7Ozs7O1UsTTs7O1E7Szs7O0s7SztNLFc7TTs7Ozs7O00sTTs7STtJOzs7Ozs7OztJOzs7Ozs7YTs7Ozs7Ozs7O0k7SyxPO0ssTzs7O0s7Ozs7Ozs7O1E7Ozs7Ozs7OztLO0k7STtJLGM7OztLLE07OztJO0s7SyxXO0k7Szs7UTs7Ozs7OztLLE07O0k7O087STtLOztROzs7Ozs7O0ssTTs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Ozs7Ozs7Ozs7Ozs7STtLLFc7SztLLFc7STtJO0k7Ozs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksWTs7Szs7TTtzQztLLFc7STtJLE87Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7OztTLFc7UyxPO1E7TSxLO00sTTtNLFc7SztLO0s7Ozs7NEI7OztHOztJOzs7Ozs7O2M7ZSxPO2U7ZSxPO2MsTzs7YTtHOztJLHNDOztxQixZO0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOztRLE87Z0IsTzs7Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O1EsTzs7Ozs7Ozs7Tzs7UTtVOztPLE87Ozs7Ozs7Ozs7OztPOzs7d0IsTywwQzs7d0IsTywwQztPO08sTzs7O087Ozt3QixPLDBDOzt3QixPLDBDO087TyxPOztPOzs7UTt3QixPLDBDOzt3QixPLDBDO08sTzs7Tzs7Ozs7UTs7O1csTzs7Ozs7Ozs7O1E7O1csTztVOzs7VyxPO29COzs7VTtPO087O1E7UyxPOztTLE87O1MsTztRLE87Ozs7Ozs7Ozs7OztPO1EsTzs7USxPOztRLE87TyxPOzs7O087Ozs7O1M7Ozs7YSxxQixXO2E7Ozs7a0MsUzs7O1k7VSxROzs7Ozs7Yzs7ZSxVOzs7YyxHLGlDO2M7OztrQjtrQixPO2lCO2M7Ozs7Z0Msa0IsUzs7Ozs7YyxvQixPO2MsRyxtQztjO2U7O2tCOzttQixPO2tCLE87aUI7OztrQixrQixROzs7OzZEOztvQixPOzs7bUQ7O2tCLE87aUI7YzsyQjs7O1U7Ozs7Ozs7Ozs7WSxXO1ksTztXO1E7dUMsWTs7Ozs7OztZOzs7Ozs7OztXO1E7Ozs7O1c7VyxPO1U7Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7OztRO1U7Ozs7OztRLE87TyxPOzs7Ozs7Ozs7O087Ozs7UTt3QixPLDBDOzs7VyxPO1U7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O1EsTzs7Ozs7OztPOzs7O1E7O1c7Ozs7WTtXOzt1Qjt1Qjs7dUI7dUI7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7O1c7Ozs7Ozs7O1EsZ0IsTztROzs7Ozs7Ozs7d0M7TyxJLHFCO08sTzs7O08sTzs7O087TztROytCLGE7TztzQyxTO08sTzs7O2lCO2lCOztPLHFCO08sTzs7Tzs7UTs7OztPLE87OztPOztROztXLFksTzs7VyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTs7SztNLE07TSxPO00sVTs7O00sSSxVOzs7NkI7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Vzs7O1U7Ozs7Z0M7OztROzs7UTs7Ozs7USxNOztJO0c7O0ksSSwyQixJOzs7OytCOzs7Ozs7Ozs7O08sRzs7O1c7Ozs7O21COzs7O2Esb0M7O0k7Rzs0Qix1QztvQyx1Qzs7STs7Ozs7OztPO1M7VztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Z0I7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7Szs7STtHOztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7STs7Ozs7dUI7OztJO0c7cUMsd0I7O0k7STs7Ozs7OzsyQjs7UyxJLFcsaUM7OztpQzs7OztTOzs7Ozs7Yzs7ZSxtQjtlLE87O2M7YTs7OztVO1k7Ozs7OztrRixlOztTLE87Ozs7OztTOzs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Szs7RztHOzhCOztJOztPOztPOztPOztPO2U7O0c7O0k7O0c7O0k7Ozs7b0IsZ0I7O29CLGdCOzs7Ozs7STtHO0c7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7Ozs7SyxJLHFCO0ssTztJO0ksTztHOztJLE87Rzs7SSxvQjtJLE87Rzs7O0s7SztJO0ksTztHOzs7MkIsTywwQjtJLE87Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7OzZCLG1CLHdCO0ksTztHOztxQix3QjtJLGlCO0c7MkIsYTs7SSxPO0c7O0ksTyx5QjtHOztJO2tDOzs7MkI7O087O087Ozs7UTtROztXOztPLHNCOztPOztRLDBCLHVCOztRLHNCO08sc0I7Ozs7Ozs7Ozs7O1E7USxJLFU7USxzQjs7Tzs7Ozs7VyxzQjs7UTtVO1E7a0M7UTtRLHNCO08sc0I7OztPO3lCLHVCO1E7UyxPO1MsUTs7O1MsTztTO1EsdUM7O087OztRLDRCLHVCOzs7NkI7UTtPLHNCOztPOzs7USxzQjtPLHNCOztPLHlDOzs7O1M7OztVOzsyQjs7Ozs7Tzs7O1Esc0I7UTs7OzhCO08sc0I7O087OztRLHNCO08sc0I7Ozs7O1E7Uzs7Ozs7Tzs7UTtRLHNCO2tDO1E7OztZO1k7Ozs7WTtXO1csTzs7UTs2QjtPLHNCOztPLDhCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7USxVOztRLHNCO08sc0I7O087Ozs7Ozs2Qjs7O1E7USwwQjtPLHNCOztPOzs7OztRO1EsMEI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztPOzs7OztRO1E7a0M7O1E7a0M7O1E7USwwQjtPLHNCOztPOzs7UTtRO1EsMEI7TyxzQjs7TyxnQztPLHNCOztPOzs7OztRO1EsMEI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztPOzs7USw0Qzs7UTtRLHNCO2tDOztRO1EsMEI7TyxzQjs7Tzs7OztRO1E7USw0QjtPLHNCOztPLDBDO08sbUIsTzs7Tyw4QjtPLHNCOztPLG9CLFU7Ozs7OztPO08sc0I7O2dDOzs7TyxrQixPOztPOztPOzs7OztRO1EsbUI7a0M7O1E7USxzQjtRLDBCO08sc0I7O08sZ0M7TyxzQjs7Tzs7O1E7USw0QjtPLHNCOztHOztJOzs7MkI7OztPOzs7Uzs7OzhCOzs7WTs7WTs7WTs7WTs7b0MsbUIsVTthLFU7YTtZOztZLHVCLE87WTs7O1k7O1k7Ozs7Z0I7Z0I7ZTthLGE7bUM7YSxPOzs7O2dCO2lCOztrQjtrQjtrQjswQzs7aUI7a0I7a0I7MEM7Z0I7O2E7WTs7K0I7O1k7O2EsaUQ7YSxZOzs7O2dCOzthO1k7O1k7Ozs7YSxlO2E7WTtvQjs7UTtRLE87O08sNEI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOzs7Ozs7O1c7VyxzQjtVOzs7TztzQzs7O1c7Ozs7Ozs7O2dCO2dCLHNCO2U7Ozs7Ozs7bUI7Ozs7OztPO1EsTzs7Tzs7Rzs0Qjt5Qjs7SSx1QztJLHNCO0c7O0k7SSxzQjtHOztJOzs7Tyw2QjtPLHNCOzsyQjs7NkI7O087O08sNEI7TyxzQjtlOztHOztJLGlCO0ksMEI7SSxzQjtHOztJOzs7TyxzQjs7Tyx5QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O0c7O0k7O0s7O00sTTtNO007TTtNLHVCOzs7O0s7O007TSx5Qjs7O0k7Rzs7STs7O0s7SyxZO0s7STtHOztJO0k7Ozs7USw2QjtRLHFCOzsyQjs7UTs7OzZCO1MsTTtTO1M7USxtQjs7UTs7Ozs7O1kscUI7OztTO1Msb0I7aUM7O1M7Uyx3QjtRLHFCOztROzs7O1M7Uzs7WTs7USxxQjs7Ozs7O0c7O0k7dUI7O0k7Rzs7cUIsYTtJO0ssaUI7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7SztNOzs7O1c7OztzQjtVOzs7O08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7OztJLGtCO0ksNEI7STtLLDBCO0ssd0M7Rzs7STtLO0ssTTtxQixxQjtJO0ssTSxXO0ssUSxXO0k7Rzs7STtJOzttQzs7O1E7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7OztROztRLG9DO1EsUTs7OztHOztJO2dEOztLOzs7SSxJOzs7OztTO1M7UTtrQjs7OztHOzs7SztLOzs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7STs7Rzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLHdDOzhCLDJDO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7RztHO0k7STtJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO3FCLHNDLFk7cUIseUMsWTt5Qyw0Qjs2Qix3Qjs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87O0c7O0k7Ozs7USxJLG1CLDhCOzs7bUM7Ozs7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7OztZLEksbUIsOEI7Ozt1Qzs7Ozs7O1EsSSxtQiw4Qjs7O21DOzs7Tzs7MkI7OztPOzs7bUI7O087O0c7O0k7eUM7O0ksTTtHOztJLE87Rzs7STtHOztJLFk7SSxpQjtHOztJO0ssUTtLOztLO0k7aUI7Ozs7Rzs7STtLLE87SyxROzs7OztNLEcsdUM7OztJLE07Rzs7SSxPLDJCO0c7O0k7SSxPO0c7O0k7NEM7Ozs7O007OztJO0c7O0k7NEM7Ozs7d0I7Ozs7TTs7O0k7Rzs7STs7OztpQzs7Rzs7SSxJLFcsNkM7Ozs7O00sTTs7Ozs7SyxNOzs7RztHOztJOztLLE07O0k7RztHLHNCOztJO0k7O007O087YztVOztLOzs7Ozs7TSxNOzs7OztLLE07OztHOztJO0k7Rzs7STtLO0s7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Rzs7STs7OztTO3VEO1M7UTtJLE87Rzs7STs7OztTOztVOzs7O1csTztXLFE7Ozs7VztZLEk7WSxVOzJDOzs7O2EscUI7YyxXO2MsTzs7Ozs7OztjLEs7ZSxXO2U7O2dCLE07ZTs7Z0I7Z0I7O2dCLHNCO2UsTzs7OztZLG1CO2EsVzthLE87OztXOztVLE07O1M7UTtJLE87RztHO0k7STtJO0k7O0k7Ozs7O0c7O0k7STs7OztJOztLLHNCO0ssTyxrQjtJO0ksRztLLE07O0ksUzs7Ozs7TSxNOzs7STtHOzs7SywrQixPO0ssTyw0QjtJO0ksTztHOztJO0s7O0k7Ozs7Ozs7O1M7O1Usc0I7VSxNO2tCOzs7Ozs7Ozs7Ozs7OztTO1M7VSxzQjtVLFE7VSxVOzs7VSxPOzs7YTs7O2M7YzthLHNCO1k7Uzs7OztTOzs7VSxzQjtVLEs7VSxvQjtVLE87VSxXO2tCOzs7Uzs7VSxPO1UsTTs7UztVLE87OzthO2E7WTtVLE07OzthO2MsUTs7O2E7Ozs7Ozs7YyxXO2M7ZSxjOzs7Ozs7Ozs7Ozs7O2E7YztlLE07OztlO2M7Ozs7OzthO2MsVTs7O2E7YTtZO1M7Ozs7O1M7VTs7VyxVOzs7O1csTztXLFc7bUI7OztTLEksa0M7Uzs7Ozs7OztJOztLO0s7O007TSxTO007TTtNO08sTztPLE87TTtNOztLO0k7SSxPO0c7O0k7STtLLEksSSxXOzs7Ozs7Szs7O08sbUIsVTs7TyxNOzs7SyxVO0ssRywrQjs7O0c7O0ksSSxpQztJLE87RztHOzs7O0ksWTtzRTtJLE07Rzs7O0ssNEI7STs7SztNLFM7TTt3QixNOztLO007OztVO1UsTyxrQjtTO08sTTs7Ozs7TTs7eUIsbUIsTyx3QjtPLGM7TSxNOzs7Ozs7OztLO0s7STs7OztvQixPO00sc0MsTztNLEc7OztPLEk7Ozs7SzswQixvQiwwQjtLO00sVztNO007OytCOzs7K0I7O007TSxPO0s7SyxPO0k7O0ssa0IsTTs7O00sb0I7TTs7SyxPO0k7O0ssRztNO007TztPLFk7O087O21CO08sTzs7OztJOztLO00sTztNLE87TSxXO0ssTztJOztLLFc7SyxXOzBCLE8sK0I7SztNLFM7TSx3QjtLLE87STs7Szs7dUQ7O0ssZ0I7SyxPO0k7O0ssd0M7O0ssTztJOzs7SztLOzs7O0s7Ozs7Ozs7O08sSTs7OztRLEk7Ozs7UztpQjtVOzs7YTs7YztjO2E7WTtVLE07UyxNOzs7USxHLDBCOzBCOzs7OztPOzs7Uzs7VSxVOzs7O1csTTtVOzs7VztVO1c7O1c7OztVOzs7Uzs7Ozs7O00sYzs7Ozs7Ozs7Ozs7UztTOzs7Ozs7Ozs7TyxNOzs7O0ssRztNO0s7O0k7OztJLEksVyxrQjs7Ozs7O0ssTTs7O0c7OzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7OztJO3NCLE8sYyxnQzs7SyxPLDZCLE8sMEI7STtJLE87Rzs7O0k7Ozs7OztPLEc7Ozs7WSxrQzs7YSxNOztZLGdCO1c7d0I7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7OztVLGtDOzZCOztVO1M7c0I7OztLOzs7UztTLE87UTtNLE07TTtNO007TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPO1E7OztTOzs7VSxRO1M7O1c7O1ksTztZOztZLE87VztXO1csVztXLE87OztXLG9CO1c7Ozs7O29CO1c7O1UsYTt1QjtVLGU7OztTOzs7Ozs7Ozs7Ozs7UTtNLGE7O007O00sVTs7Tzs7Ozs7O1c7VztVO1EsUTtRLE87USx5QztRLE87USxzQjtPLEc7USxnQjtROzs7Ozs7WTtZLE87VztROzs7OztNLFc7TTs7Ozs7Szs7STtJLG1CO0k7Rzs7NkIsZTs2QixlOztJLFE7VTtJLFc7O0s7OztTOytDOztRO0ssTzs7STtHOzRCLFM7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7NEIsa0IsOEI7UyxPOztTLGtDO1MsUzs7Ozs7Ozs7UyxPOzs7Uzs7Ozs7Ozs7Ozs7Szs7Rzs7SSxJLFcsdUM7Ozs7Szs7TSxnQjtLLE07c0M7OztHO0c7STtJOztJLG1CLE87SSxXO0c7O0k7STs7O0c7O0k7STs7OztNLEksMEM7Ozs7Ozs7OztLLE87O0c7O0ksWTs7STtHOztJLGtCO0c7O0ksd0I7Rzs7O0s7O0k7SSxPO0c7Ozs7Szs7SztNOztJLEksYTs7SywrQjtLO0k7O0s7O2tCOzs7STtJLG9CLE8sdUI7dUIsTyx1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1M7Uzs7Ozs7O21COzs7UTtLLFc7O0ssd0I7SyxlOzttQjtNLE07Ozs7Ozs7Szs7TyxNOzs7OztLO0s7Ozs7Tzs7USxPO1E7VTthOztPOzs7TztRLE07Ozs7VztXO1c7VztXO1c7OztVO087O087O1E7UTs7Ozs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7Ozs7TyxNOzs7TyxPO1EsTTtPOytCLE8sMkI7USxlO1EsTztRLGM7TztPO1EsVTs7O1c7NEIsWTtXLGU7Vzs7Ozs7O3FCOzs7VTtPOztpQixnQztpQjs7O2dCOzs7O087OztROzs7UztVO1U7UyxNOzs7Ozs7Ozs7Tzs7Ozs7UyxLO1UsTTtzQjs7O1E7UyxhOzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1EsTTs7O1E7O1MsTztTLE07UztRLE07Ozs7Ozs7Ozs7Ozs7OztTLE07Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozt1Qjs7Ozs7O1csdUI7Ozs7Ozs7Ozs7Ozs7O08sRztRO29COzs7Uzs7OztVO1EsVztRLE07Ozs7UTtTLE87UyxPO1MsTztTLE87UyxLO1E7O087TztRLGdCOzs7Vzs7Ozs7Vzs7VTtROztROzs7O1M7O1MsVTs7OztTO1M7OztZO2EsTzthO2U7Ozs7WTtXO1MsTTtRO1E7UyxVOzs7O1E7UTs7UTtTLE07UyxNO1E7UyxNOzs7O1UsVztVO1U7VyxPO1csVTs7VSxNOzs7Uzs7OztTOzZCLFk7VSxROzs7YSxZOzs7OztlLEc7Z0IsTzs7O2EsTTs7WTtVLE07O1UsTTs7O1E7Uzs7Ozs7OztRO1MsVTs7O1M7Ozs7OztRO087TztPO087OztROzs7OzthO2E7YTthO2MsTztjLGM7Yzt3QjthOztnQjs7YTthLE07WTtTOzs7Ozs7Ozs7OztXO1c7Ozs7Ozs7O2dCOzs7O2dCLE07OztZOztVOztROzs7O1k7WTtXO1E7O087OztXO1c7Ozs7OztxQjs7O1U7USxPO087O2lCLGdDO2lCOzs7Z0I7Ozs7O08sRzs7O1MsTTs7Tzs7c0M7UTt1QjtRO3lCLE8sNkM7USxlO1EsZ0I7TyxHO1E7Ozs7VTs7TztRLFc7USxpQjs7O1c7Ozs7Ozs7OztVOztROzs7UyxtQixtQjtROztPOzs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7Ozs7Ozs7VztXO1ksUTs7O1c7WTs7Ozs7Yzs7Ozs7Ozs7YyxNOzs7Ozs7O1c7VztXOztZLE87VztXOzs7O1c7O1k7O2E7YSxVOzs7Z0Isc0I7Z0I7aUIsTTs7O2dCO2dCOztZOzs7MkI7WTthO2M7O2M7Ozs7Ozs7O2U7Ozs7OztjO2UsTztlLEk7Yzs7Ozs7O1c7Ozs7bUI7OztVOzRCLG1DO087Ozs7a0MsMEM7UTs7Ozs7Ozs7Ozs7O087Ozs7O21COzs7Ozs7Ozs7Ozs7O087O1EsUztRLGdCO087Z0M7Ozs7VztXOzs7Ozs7cUI7OztVO087O2lCO2lCOzs7Z0I7Ozs7O087UTs7UztTO1MsYTtRO1EsVTs7UTs7O1ksaUIsUztZO1c7UztTO1M7Uzs7O1EsSSxvQjtROzs7Ozs7WTtZO1c7UTs7OztZO1k7VztRO1E7O1M7Uzs7O1k7WTthOzs7c0Msc0IsYTtpQixPO2dCO2E7Ozs7Ozs7Ozs7ZSxLO2dCO2lCLE87aUI7bUI7c0I7OztnQixNOzs7Ozs7O2U7Z0IsVztnQjtnQjs7Ozs7OztnQixNOzs7ZTs7OztnQzthLE07OztXO1M7UyxPOzs7O1E7Ozs7OztrQjs7OztPOztRO1E7OztXOztxQjtxQjtvQjs7VTtPLGU7Tzs7O1c7OzthLE07Ozs7O1c7WTtnQyxTO2E7Ozs7Ozt3QztzQzs7O1c7VTtRO1E7OztROzs7OztZLE07Ozs7Ozs7Ozs7O1M7VSxNO1M7Ozs7UyxrQjtTOzs7Ozs7bUI7Ozs7OztPOzs7Ozs7OztTO1UsTTtTO1UsUTs7OztTOzs7OztXOztTLGM7OztVO1U7cUI7VTtVO1U7Ozs7Ozs7Ozs7UyxNOzs7OztPO1EsTTtPO087USxVOzs7O087O087TyxXO087c0M7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxPO1U7Tzs7O087USxNO087O1EsVTs7O1E7K0IsTyw0QjtRLFE7USxPO1EsTztRLFU7OztRLEc7UztVLE87OzthOzs7OztjLFE7Ozs7ZTs7Z0IsTTtlOzs7O2MsVTtjOzthO1k7VSxVOzs7VSxXO1U7OzthLE87WTtVLHNCO1UsTztVO1UsdUI7OzthO2E7WTtVLFM7UztVLE07O1M7Ozs7O2E7WTtVLEk7VTtTLE87Ozs7Ozs7Ozs7Ozs7O08sTTs7O087O1EsSztRLE87TztnQzs7OztXO1c7Ozs7OztxQjs7O1U7Tzs7O087USxNO08sSSxJLHlDOztROzs7Tzs7UTtRO087Ozs7Ozs7Ozs7Tzs7OztXO3dCLE87VyxNO1U7UTtPOzs7TyxNO2tDOzs7TztRLE07TztRLFc7Ozs7Ozs7VyxzQixROztZLE07OztXLE87Ozs7Ozs7OztVO087Ozs7O0k7STs7O2U7O0s7Ozs7Ozs7MEIsUztJO0ksTzs7Rzs7O0k7STtLO0s7SztJO0s7SztLO0s7Szs7Ozs7O0s7Szs7Rzs7STs7O2U7OztJO0k7Szs7O0ksTztHOztJOzs7ZTs7Szs7OztNO08sTTs7O0s7STtJLE87Rzs7O0s7SyxPO0k7SSxPO0c7OztLOzs7Ozs7TTtNLE87TTsrQztLLE87STtJLE87Rzs7STtJO0ssSztLO0k7SztLOztJLFc7cUIsTyxpQjtJO0ksRztLLDRDO0ksSTs7Szs7Ozs7Ozs7O0ssa0IscUM7SztNLEs7TSxPO00sVTtNO1E7Ozs7OztNO1E7Ozs7OztLO0k7STtLLFE7Ozs7STtHOztJO0ssaUI7SyxTO0k7STtLLEs7SztLLE87cUIsTyxpQjtJOzs7STtHO0c7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87O0s7SztLLE87STtJO0k7STtJLE87Rzs7STtJOzs7Ozs7OztVOzs7K0IsOEI7VyxPO1UsVzs7Ozs7Ozs7WSxrQjtZLFc7WTttQzthLE87WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxzQztVLFc7Ozs7Yzs7OztlO2M7ZTtlO2dCO2lCOzs7cUI7b0U7cUI7b0I7NEI7Ozs7OztjO2E7VSxPOzs7VSxPOzs7VSxPOzs7VTtXLE87O1U7O1U7Ozs7O2M7Yyx3Qjs7O2E7VyxPO1UsVzs7Ozs7Ozs7Ozs7VSx1QztVLFc7Ozs7Ozs7OztxQjs7Ozs7Ozs7VTs7OztXOzs7Yzs7O2lCOzs7a0Q7O2lCO2lCOztpQjs7aUI7O3FDO3lCOzthO1csTztVO1c7Ozs7ZTtlOzs7YztZLE87WTs7Ozs7O1U7VyxPOztVOzs7Ozs7Ozs7TztPLFc7Ozs7TTs7Szs7Rzs7STtJOzs7O1E7O1M7OztZOzs7OztvQyw4QjtlLE87O2U7O2dCO3VDLGlDO2UsTzs7Ozs7Ozs7OzttQjttQjtrQjtlLE87O2U7O2U7Ozs7dUI7O1k7VztRLE87O1E7Ozs7O1E7UyxPOztRO2dCOzs7Rzs7SSxZOztJO0ssTzs7STtHOztJOzs7STs7O0k7OytCLDhCOztJLFU7O0s7O00sVzs7TSxNO0s7STtJLE87Rzs7O0ssZTs7TSxNO0s7STtJLE87Rzs7STs7Ozs7TSxPOzs7STtHOztJO0k7Ozs7O1M7OztVO1k7MkI7ZTtVO1U7UyxPOztTOztVLHNCO1UsVztTLE87O1M7OztVLFU7OztVO1k7VSxPO1M7VSxzQjtVLE07UyxPOzs7O0ssTzs7Rzs7STtJOzs7Ozs7Ozs7VTs7O1c7VyxjO1UsTzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Ozs7Ozs7Uzs7VSxzQjtVLFc7UyxPOzs7Ozs7Uzs7O1U7VTtTLEksdUM7Ozs7O1UsTTs7OztTOzs7O1U7Ozs7c0I7UztTLEkseUM7Ozs7OztVLE07Ozs7SyxPOztHOztJO0k7O0s7TSxTO00sRztPLFc7TSxZOztPOzs7UTtRLFk7Ozs7OztNLFc7TSxXOzs7SSxPO0c7OztJO0k7STtJLFU7STtJLFk7O0s7OztXO00sVTs7O0s7SztLO0s7SztNLFU7OztNO2dCO0s7TSxjO00sVztNLGtCO0ssTTs7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7TTs4QixpQztPLFE7O00sTzs7STs7SztNLE87TSxLO0s7Ozs7Ozs7Ozs7bUMsaUM7VyxHO1k7Ozs7Ozs7Ozs7a0Msc0Isb0I7ZSxPOzs7ZTs7O2tDLHNCLG9CO2UsTzs7Ozs7ZTs7Ozs7Ozs7Ozs7OztlLE87Ozs7OztXOzs7TTs7SztJO0k7SyxPO0ssSztJLDBDO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHOztJOztLLEcsb0IsTTs7Ozs7OzZCLE87Ozs7NkIsTzs7OztpQyxrQixlO1MsTzs7OEIsTzs7O1M7UyxrQixPOztTOzs7Ozs7Ozs7O00sa0IsTzs7TTs7SztJO3FCO0ksSTs7O3dCOzs7STtHOztJOztjOzsrQztjO2E7O0c7O0k7O2M7NEQ7YzthOztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztxQixZO0ksK0I7Rzs7STtJOzs7Ozs7OztLO007TTs7Ozs7Ozs7OztRLE07Ozs7Ozs7Rzs7STtJOzs7Ozs7O1Usd0M7VSxXOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Szs7Rzs7SSxZOzs7O0ssZ0MsVTs7Ozs7O00sYzs7OztPLHNDLE87TztRLFc7UTtTLFc7UztVLFc7VTtXLFc7VyxTLE87Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxrQixPOztJLEksa0I7Ozs7Ozs7OztPO087TyxNOzs7OztHOztJO3VDO0c7O0ksMkI7O0s7O0k7SSxVO0k7STtHOztJO0k7Szs7SztJO0s7OztLOztRLFc7UTtPO0s7STtJOzs7Szs2Qjs7OztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7b0MsdUI7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7Ozs7VTs7Vzs7Ozs7OzswQjs7Ozs7Ozs7O087OztROzs7aUI7UTs7Ozs7UTswQjtPOzs7Ozs7Ozs7O087Ozs7Ozs7Ozs7O1E7OztTLFc7UTs7Ozs7Ozs7OztPLEs7USxNO087O1EsTztRLE87bUI7USxPO1EsTztRLE87UTtxQjtRLE87USxPO1EsYTtRO1EsTztRLE87USxTO1EsTztRLE07UTtjO1EsTztRLGU7UTtVO1EsVztPOzs7Ozs7Ozs7O087USxNO087OztXOzhCO1c7O1k7WTs7VyxTO1c7O1c7O1k7YSxTO2EsRyxzQzthLFk7OztjO2UsVztlOzs7OztnQixNOzs7O2M7ZSxTOzs7OzthOzs7VztXO1U7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7VztXO1k7Ozs7Ozs7Ozs7Ozs7OztVO1c7WTs7Ozs7Ozs7OztPO087UTs7O1k7WSxPO1c7VyxPO1U7UTtROzs7Vzs7Ozs7WSxXO1ksSzs7Ozs7ZTtnQixLO2dCLEs7Z0IsTztnQixlOzt3QjtlO2dCLHdCO2dCLE87ZTs7Ozs7O29CO2dCLG9DOzs7Ozs7Ozs7OztnQjtnQixHO2lCLGdDO2dCO2U7WTs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXLGU7VyxNOzs7UTtPOzs7UTtTOzs7Uzs7Uzs2QixXLHlCO1UsUztVLE87VSxPOztVO2tDLHlDO1csTztVO1c7K0IsdUI7WSxPO1c7WTthLHNCO2EsTzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7O1E7OztVLHVCO1U7O1ksVztZO1ksSTs7Ozs7Ozs7OztVO1c7WSxPO1ksVzs7O1k7Vzs7Ozs7O1E7O1MsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzs7bUI7K0I7O21CLGtCO2tCO2tCO21CLFM7bUI7bUIsWTtrQjtpQjs7Ozs7YTthO2MsVztjLFc7YyxPO2MsVzs7Ozs7Ozs7Ozs7O2EsSzthO2MsSzs7OztrQjs7Ozs7Ozs7NEM7O2lCOzs7O2MsUztjLFc7Ozs7a0I7O21CLGlCO29COzs7O3dCO3dCOzs7O3VCOzs7Ozs7dUI7c0I7O2tCO2lCOzs7Ozs7O2tCOzs7a0I7OzJCOzJCLHdCOzBCO2lCOzs7Ozs7OztlLE07Ozs7Ozs7bUIsMEI7Ozs7OztxQjtzQjtzQixPLHdCLDBCOzs7Z0IsSzs7OztxQjtvQjtpQixHOzs7Ozs7OztlLE07Ozs7Ozs7OztjLGU7Ozs7Ozs7O2UsYTs7OzhCO2U7Z0IsZ0I7Z0I7Ozs7Ozs7OztnQixlO2dCOzs7Ozs7OzthO2M7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO08sdUIsTztPO087TyxJLHFCOzs7Ozs7O2tDLHlDO1UsTzs7Ozs7OztPO087TztPLHlCO087TztROzs7OztRO087Ozs7O2lCOzs7O087OztROzs7OztPOzs7TyxPO1EsTTtPOytCLE8sMkI7USxXO1EsVztPOztVO3VDO1M7Tzs7NkIsZ0Q7USxPO1E7MkIsWTtRLFc7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxXO1UsTztVLFc7Ozs7Ozs7OztZOzthO2E7OztZOzs7O1MsTTs7USxNOzs7OztROztTLHNCO1MsUTs4QixjO1MsVztTLE87UyxvQjtTLE07UztROzs7OztrQjs7Ozs7O087USxNOzs7MkI7UTs7UztTOzs7Ozs7Tzs7O1M7UyxNOzs7Ozs7Ozs7TztROztTOzs7VTtVLE07Ozs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7NEM7OztRLDZCLE87UTtRO1MsTztTLGM7UTtROzs7Tzs7MkIsUzs7O1csTztVO1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztPOztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7OztPO2M7UTs7O1k7O1c7VyxPO1U7TztROztTLFc7OztZO2EsUTs7O1k7WSxJOzs7OzthO2MsVTs7O2E7YTs7Z0I7bUM7ZTthOzs7WTtXO1Msb0I7Ozs7OztROzs7O1ksSTs7Ozs7YTtxQyxvQixjO2M7Z0I7Yzs7YyxNO2E7O2lDLFk7YyxjO2M7Ozs7Z0M7O2tCLEs7bUI7a0IsSTs7O2M7YSxNOzs7O1k7VztTLHNCOzs7O1EsTTs7Ozs7OzthOztnQjtPO21COzs7b0MsdUI7UTtVO1E7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztRLFc7OztPO087OztPOzs7O1E7Ozs7UTtrQztROzs7Ozs7Tzs7USxNOzs7Tzs7Ozs7aUI7Ozs7Tzs7USxPO1EsYTtPOztVO3lDO1M7Tzs7eUIsa0Q7USxPO1E7Tzs7Ozs7aUI7Ozs7Tzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087Tzs7Tzs7O1E7UTtPOztPOzs7UTtRO1E7Tzs7Ozs7aUI7Ozs7Tzs7Ozs7O1E7UTs7O2tDOzs7UyxNO1E7O1MsTztTLE87UyxXO1MsdUIsZTs7Ozs7OztPLEksbUQ7Tzs7Ozs7aUI7Ozs7O087TyxJLE0seUM7TztPO087USxPO1E7O3FDO087Ozs7Ozs7Ozs7OztRO1E7UyxXOzs7O1MsVzs7OztRO1E7UTtRO1M7VSxPO1UsTztVLFU7UztTO1M7Ozs7OztTLE07OztRO1M7UyxPOzs7Ozs7c0M7OztRO1MsVzs7OztRO1E7UTtRO1MsSztTO1Msb0I7UTtROzs7UyxXOzs7Ozs7Ozs7Ozs7OztZLEs7O1k7Ozs7OztTO2lCO29CO1U7VztZLE87bUI7VztZO1k7WSxJOzs7Ozs7WTs7Ozs7VTtXLGM7VztXOztvQjs7Ozs7Ozs7VyxNOzs7O1M7VSxXOzs7UztTLEk7Ozs7O1U7O1csVztVLE07Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7MEI7TyxJOzs7Ozs7Ozs7Ozs7YyxJLFc7Ozs7O2U7Z0I7aUQscUI7Z0I7a0I7ZSxNOzs7YztlLFE7Ozs7OztjLEksVzs7Ozs7ZTtnQixPO2dCLFE7O2dCO2U7ZTs7OztjO2UsUTs7Ozs7Ozs7Ozs7YSxJLFc7Ozs7O2M7ZTtnRCxxQjtlO2lCO2MsTTs7O2E7YyxRO2MsVzs0Qjs7Ozs7O1EsSSxVOzs7Ozs7UztVO1csTztXLFc7Ozs7WTs7d0I7YTs7O2dCLGE7Ozs7O21COzs7Ozs7Ozs7OztTLE07O1EsSTs7O1E7UTs7TyxlOzs7OztXO1ksUTtZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087UTs7c0M7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7Ozs7OztXOzRCLE8sZ0M7VyxHO1ksTTs7VztVO087TztRO1MsVztTLE87Ozs7O1MsTTs7Ozs7UTs7Ozs7Ozs7WTthO2MsSztjLEs7Yzs7Ozs7MkM7YTs7Ozs7O2E7YztnRCxzQjtjLFM7YSxNOzs7O1MsUztROzs7TyxNOztPOzs7O1EsUTtPO087USxVO1EsVzs7O1E7USxPO087Tzs7USxRO1EsTztRLE87UTs7O1E7O1M7Vzs7Ozs7Ozs7TztPOztPO087Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087O1E7UTs7Ozs7NEY7dUI7O087O087O1EsUTtRLGE7Tzs7VTt5QztTO08sSSxvRDtPOzs7OztpQjs7Ozs7MEI7O1E7O1MsUTtTLFE7Ozs7UTtTOzs7O1E7UTs7O1E7O1csVztXOzhCO1U7TztRLE87USxXOzs7OztXO1k7OztZLE87WTtXOzs7Ozs7O1k7K0I7WTthLFc7Ozs7YTthOztZO1k7WTs7WTs7O2EsTzs7OztZO2E7OzthLE87Ozs7OztROzs7Ozs7Ozs7TyxNOztPOztRLFc7OztPOzs7Tzs7O1E7VTthO2E7TztPO1EsUztRLFU7USxXOzs7UTtRLE87OztXLFc7VyxHLDJDO1csVztXO1csWTs7Ozs7NkIsTzs7O1csTztVO1EsTTtPO087Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsTztRLFc7OztRO087Tzs7Ozs7OzswQjtPOztROzs7USxVO1EsVzs7Ozs7Tzs7UTs7O1MsUTs7UztTO1c7Ozs7O1MsUzs7Ozs7TztRLGlCO1E7VTtRLFk7USxjO1E7UTs7OztXOztRLFE7TyxJOzs7OztRLE07Ozs7UTtRO1E7UTtROztPOzs7O1c7WTs7Ozs7Ozs7OzhCO1c7WTs7O1ksVTtZLFM7WSxVO1ksWTtZO2M7WTtjO1csSTs7Ozs7WSxNOzs7O1k7WTtZO1k7O1c7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7OztZLE07OztXO1c7O1E7NEI7OztRLE87USxRO1E7Ozs7Ozs7Ozs7Ozs7UTs7UztTO1M7UztTLE87UTs7TyxNOzs7Ozs7USxNO21DOzs7Ozs7Ozs7Ozs7Vzs7WSxPO1k7O1ksMEI7WTs7Ozs7c0I7Ozs7VyxNOzs7OztPLE07Ozs7STtJO0ssUTs7O0ssVTs7OztzQzs7Ozs7SSxjOzs7Ozs7Ozs7Ozs7OztLLE07O0k7Rzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7Ozs7Ozs7OztLO00sVzs7O2tEO0ksYTtJO0s7TSxPO00sUTs7Ozs7O0s7Ozs7Ozs7Ozs7OztLLE07OztJLEc7SyxTO0ssSSw0Qjs7Ozs7TyxNOzs7Ozs7O0k7SztLO0s7O0k7Szs7Ozs7Ozs7Ozs7O0ssTztJO0s7TTs7O00sc0I7TSxPO007Ozs7STtnQjtLOztJO0s7SyxPO0k7Ozs7O2M7Ozs7O0ksbUI7STs7SztLOztJLHdCOzs7TTtNLE07Ozs7Ozs7OztJO0ssUzs7OztLOzs7Ozs7Ozs7STtHOzs7STtrRDtJLGEsMEI7STtLLFE7Ozs7STtLO0s7Szs7STtLO00sTztNLE87Szs7Ozs7O0ssTTs7O0ksZTtJLGEsMEI7OztNLE07O0ssTTs7O0k7aUM7Szs7b0M7STtJOzs7O00seUI7TTs7TTs7O08sTzs7Ozs7OztLO0s7TTtNO007TTtNO007TTs7O08sTztPO00sc0I7TTtNOztNOzs7TyxPO087Ozs7Ozs7O1EsTTs7TSxNOzs7STs7Ozs7SztNOzs7TTtnQjs7SyxvQjtLLE87STtJOzs7O1M7VSxLO1UsUTs7OztVLHdCLE87VTs7UztRO0ssRztNO08sTztPO08sMkIsTyw0QjtjOzs7Ozs7O0k7Szs7O0s7Szs7O3VCO0k7O0s7Szs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7O3NCO0s7OztTO1UsSztVLE87VSxPO1U7VSxVOztVOzswQjs7Ozs7OztTOzswQjs7Ozs7OztRO007Ozs7d0Isa0IsTyw0QjtNLFk7SztjO0s7TTs7Ozs7Ozs7Ozs7TTs7OztVOzs7Ozs7TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7a0Q7SSxhLDBCO0k7SyxVOzs7SztJO0s7SztLOzs7UTtTLE87OztTLE87UTs7TztLO0s7Szs7SSxjOztLLE07STs7O0s7O0ssdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNLE07Ozs7SSxXOztLO0s7STtJLFc7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7STtJO0k7SyxLO0ssSztLLE87STtLO00sTztvQjs7OztLLGlCO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7O0ssa0I7Szs7dUIsMEM7Szs7STtJO0k7Rzs7STtLO0ksSSxLLDZCOztLO0s7SztNLFU7TSxPO00sTztNLE87TSxROzs7TTtNLE87SztLOztNLFE7TTtNO1E7Ozs7SztLO0k7STtLLFE7OztLO0s7SztLLE87SyxxQjs7SztLO0s7Szs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7eUIsa0IsUztJO0ssVztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXO1ksTzs7O2Usa0IsUTs7Z0IsTTtlO2M7Vzs7VSxPOztTLE87UTtLO007TTtNLEk7Ozs7O007Ozs7Ozs7STs7Tzs7Ozs7OztzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7SSxrQjtJLHdCO0k7SyxNO0s7STtJOztLO3dCO0s7SyxrQjtLO0s7SztLO007TTtNLE07TSxVO00sUTs7MEI7O007TTtNOzs7TyxPOzs7OztLO0s7TTtNOzs7VTt1RjtVO1M7Szs7Ozs7OzthO0k7SSx1Qjt5QiwwQixpQjtJLFc7eUIsOEIscUI7STt5Qjs7OztNO08sa0I7O2tCOzs7SztNLDhCLFc7Ozs7SSxlOzs7TTtNO0s7SyxPO0k7STtJLEc7SztNLHNCO00sTztLO0s7OztxQixPLGlCO0k7O0ssVzs7SztLLE87OztpQixXO2lCLE87Z0I7O0k7STtJO0k7O0s7SyxPO0k7STtJO0s7YTtLLFc7dUI7O0s7Ozs7Ozs7OztNO3dCO00sdUIsZTtNOzswQixlOztNLHFDLE87TSxzQjtLO0ssZ0I7Ozs7eUI7Ozs7O0s7Ozs7Ozs7O0s7Ozs7Ozs7O0s7Ozs7STtJLFk7dUI7STtJO0s7TSxPO3FCOzs7O0s7TTs7UyxZOztTOzs7O1M7Ozs7O1UsUTs7O1UsTTtTLG1CO1M7UTtNLE87Ozs7Ozs7O2EsTTs7Ozs7Ozs7TTs7O087Tzs7O1c7O1k7Ozs7YTthLE87OztnQjs7O2lCLE87aUIsb0I7O2U7O2lCO2E7O2U7b0I7OzsyQzs7O2E7Yzs7OztrQjs7YyxPO2MsUTtjLE87OztjLE87YTs7Ozs7O1k7O1c7VTtNLE8sVztLO0s7aUIsMEI7SztLO2lCO0s7SyxPO0k7STtLLGtDLHVCOztLOztLO0ssb0M7O0k7Ozs7STs7OzZCLGU7STs7O29DLGU7STt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7SztJO0ksWTt5QixPLDRCO0ksbUI7STtJLEk7Ozs7TTs7SztLLE87O0k7SyxXO0ssTTtLLE87O0sscUMsTztLLHNCO0k7STtLLFU7SztLLFE7d0I7STtLLGE7O0k7Ozs7UyxZOzs7O1c7Ozs7O1ksTzs7Ozs7O1M7UTtLOzs7SztLO2dCOzs7O0k7STs7SztLOzs7O1M7Uzs7O1UsTztTO1E7bUI7Ozs7cUIsTyxpQjtJO0k7SyxxQjtpRTtLOztJOztZOztNLE07Ozs7O1Msc0IsTztTLE87O21CO1E7Z0I7Ozs7SSxJLHVCOzs7TTtPLE87TyxPO007OztPO1EsTztRLE87Tzs7Ozs7OztNO0s7SyxPO0k7STs7Tzs7O00saUM7TTtPO087TyxPOztPO1EsSztRLE87UTtRLE87Tzs7Ozt1QjtnQzs7UTs7Vzs7Vzs7WSxPO1csTztVOztROzs7Ozs7O1EsVztROzs7O087TyxPO007TTtNO0s7SyxPO0k7STtxQjs7Szs7Ozs7SztLLFk7Ozt5QjtNO08sVTs7OztPO087O007OztVOzs7UztPLFE7TTs7O007OztLO0ssVTtLO0k7STs7Tzs7OztLO00sUTs7O00sdUIsTyx5QztLOzs7SztLO0k7SSxXOztLOztNO007TTtLO0ssTztJO0k7O0s7Ozs7TSxPO0s7STtJLFk7STs7SyxvQjtLO0k7STtJOztLO0s7O0sseUI7Szs7STtJO0ksUTs7SztLO0k7SSxVO0k7Ozs7UyxvQjs7OzthOztnRDs7UyxNO1E7Szs7O0s7cUM7OztNO29EO007SztLLGU7O0k7STtJOzs7STtJOzs7Syx1QixlO0s7O3lCLGU7Ozs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtJO0k7STtJLHlCO0k7OztLOztNO2E7Szs7STtHOzs7SyxPO0k7SSxPO0c7OztJO0ssa0I7O0s7STtJLE87Rzs7SSxZO0ksbUIsUTs7Ozs7NEM7Ozs7O3lCOzs7Ozt5Qjs7Ozs7eUI7Ozs7Szs7UTs7Vzs7O2E7OztlOzs7TSxXOztLOztJOzs7SSxXOzs7SyxPO0k7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Szs7Ozs7Ozs7STtJLE87Rzs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87O2dCOzs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087O3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7OztPLE87Ozs7Ozs7O1csVztXO1csVztXLHVCO1U7TyxPOztPOzs7O1E7Ozs7Ozs7Ozs7Ozs7O087UTt3QixPLDBDOzt3QixPLDBDO087Ozs7Ozs7a0I7Ozs7O08sb0IsVTs7USxPOzs7Ozs7OztPLE87Ozs7Ozs7OztPOzs7O1E7O1c7WSxPO1csVztXLE87O1E7MkI7TyxPOzs7Ozs7Ozs7OztPLE87O087O1E7OztZLFc7WSxPO1c7VyxPO1U7TyxPOzs7O08sTzs7Ozs7Ozs7Ozs7Ozs7WTtZLEc7YTs7Ozs7Ozs7YTs7O2MsTztjOztpQjs7YTs7Ozs7Ozs7Ozs7OztZO1c7VyxPO1U7TyxPOztPOzs7OztRLFk7USxTO1E7Ozs7WSxPOztXOztZLE87Ozs7Ozs7O1c7O1ksTzs7Ozs7Ozs7VztXLE87O1U7TyxPOzs7TyxPOzs7Ozs7OztXO1c7VTtPLE87Ozs7Ozs7Ozs7WTtnQzs7WTtXO1csTztVO08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7OztXO1c7VTtPLE87OztPLE87Ozs7Ozs7VyxPOztVO08sTzs7O08sTzs7Ozs7Ozs7OztZLE87Vzs7WTthLFc7YSxPO1ksTztXO1c7O3FCOzs7Ozs7OztVO08sTzs7Tzs7O1E7O1c7O08sTzs7O087OztROztXOztPLE87OztPOzs7OztROztXLDBCO1c7WSxPOztXLE87Ozs7Ozs7TztROztRO1E7O1c7O08sTzs7Ozs7Ozs7Ozs7OztPLE87Ozs7TyxPOztPOzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7OztPLE87OztPOzs7Ozs7Ozs7Ozs7Ozs7TztROzs7WSxPO3lCO1c7UyxVOzs7OztTLE87Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7OztPLE87OztPLE87O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87Z0I7OztPOztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7O1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztXOztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7eUIsMkI7SSxPO0c7O0k7O0s7O21DOztJO0c7Rzs7OztJO0c7K0IsMkI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0ksb0I7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7O0c7O0k7STs7Ozs7UTs7UTs7Ozs7UztRLE87O0c7O0k7SyxNOzs7SSxNOztHOztJOztLLE07Ozs7SSxNOztHOztJLEksMEQ7Ozs7O0s7O0c7OztJO0s7Szs7Ozs7O0s7O0c7O0ksWTs7SyxNOztJLEksbUQ7Ozs7Ozs7O1EsTTs7OztROzs7UTs7O0c7O0k7SyxNO0s7SyxRO0s7SSxJOzs7OztLLE07O0k7Rzs7cUIsTyxrQztJO0ssWTtLO0ssTztLLE87SSxPO0c7Rzs7OytCLDZDO0s7OztROzs7UyxVOzs7USxHO1MsTTs7UTtTLFU7OztTLE87UTtRLFc7VztTO1UsTztVLE87UyxNOzs7UTs7O1ksSSxNLHlDO1ksSSxzQzs7Ozs7O2EsTTs7O1c7UyxPO1M7UTtROztROzs7OztTLE87UTtRO1MsVztTO1EsSTs7OztVLE07Ozs7UTs7O1k7O2tDLDhCOzttQyxhLGtCO2MsTzthO2E7Ozs7Z0I7OzBCOzBCOzBCOzBCO3lCOzs7Ozs7OztnQjs7MEI7MkIsTTsyQjswQjswQjt5Qjs7Ozs7Ozs7Z0I7OzBCOzJCLE07MkI7Ozs7MkI7OzRCLGM7MkI7MkI7NEIsTTs0Qjs0Qjs7OytCLEksTSxxQzsrQixJOzs7Ozs7Z0MsTTs7Ozs7OzhCOztnQzsyQjs7MEI7MkIsTTsyQjswQjswQjt5Qjs7Ozs7O2dCOzswQjsyQjs7OzBCO3lCOzs7Z0I7Z0I7OztnQixNOzJDOzs7O1ksTztXO1MsUztRO1EsSSxxQztROztROzs7O1MsTTtTO1M7VztjOztTO1M7UTs7O1EsTTttQzs7UTs7O1MsVTs7O1M7UTs7STtJLE87Rzs7STtJO0s7SyxPOzs7Ozs7O0k7O0k7Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxJLFU7Ozs7TSxNOzs7STs7O0s7SyxPO0ssaUM7SSxPO0c7OztJOzs7SztLO0ssTztJLFk7STtLLFE7OztLOztLOzs7O00sTztNO007SztJO0k7SyxVOzs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7OztLO007Ozs7Ozs7OztPO087TTtPLE87TTtNOzs7O1M7O21COzs7bUI7bUI7bUI7b0IsYztvQixxQjtvQixvQjtvQjtzQjtvQjtzQjttQjs7OytDOzs7MkI7cUI7O3VDO3FCOzsyQjtxQjs0QztxQjs7OztvQjtxQixPO3FCLGM7b0I7cUIsTTs7O21CO29CO3NCO29CO3NCO29COzs7b0I7Ozs7O3FCO3FCO3FCLEs7cUI7cUIsUztvQjttQjttQjtvQixVOzs7Ozs7O29CLHNCO21CO21COztzQjs7b0I7O3FCO3FCOzs7Ozs7Ozs7bUI7b0I7Ozs7Ozs7OztvQjttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7O29CLG1CO29CO3FCLE07cUI7O3FCO3FCOztvQjs7Ozt5QixXOzs7OztzQjs7dUI7dUI7dUIsSzt1QixTOzs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7OztxQjtvQjs7Ozs7Ozs7O21COzs7Uzs7bUIsRztvQixNOzs7Ozs7O21CLEc7O3FCOzs7b0IsTTs7Ozs7OztzQzttQjtpQzs7b0I7b0I7O21COzs7O3dCLFc7Ozs7O3FCOztzQjtzQjtzQixLO3NCLFM7Ozs7Ozs7Ozs7Ozs7OzttQjtvQjs7Ozs7Ozs7OztvQjtvQjtzQjtvQjtzQjttQjs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7VTs7b0I7cUIsUTtxQixNO3FCO29CO29CO3FCO3FCO29COzs7Ozs7Ozs7bUI7OztTOzttQixHO29CLE07OzttQixHOztxQjs7O29CLE07Ozs7Ozs7Ozt1Qjs7bUI7OztvQjtxQjs7c0IsUTtzQixNOzs7OEI7b0I7OztxQixjOzs7Ozt5QjswQixPOzBCLE87eUI7eUIsVzt5Qjs7O3lCOzs7a0M7MEIsTTt5Qjs7Ozs7O3FCLE07Ozs7Ozs7O3FCLE07Ozs7Ozs7O29CO3FCO3FCLGdCO3FCOzs7Ozs7Ozs7cUI7cUI7dUI7cUI7dUI7b0I7Ozs7Ozs7Ozs7bUIsTTs7a0I7OztTOzttQjtvQjs7O29CO29CO21COzs7Ozs7Ozs7a0I7OztTOzttQjtvQjtvQixnQjtvQjtvQjttQjs7Ozs7Ozs7O2tCOzs7UztTO1U7VTtTOzs7Ozs7Ozs7OztTLE07b0M7Ozs7SyxPO0k7STtLLE07SztLLFM7O0k7STs7O0ssVztLLE87STtJLFk7d0I7SyxNOztJOzs7Szs7Ozs7Ozs7dUIsZTt1QixlO007TSxPO007Ozs7OztTO0ssTztJO0k7SyxZO0s7O0s7Szs7UTs7Ozs7Ozs7OztZO1k7O1c7UztXO1E7Uzs7Ozs7YTthLE87WTtVLFE7VSxLO1U7VSxvQixlO1U7VSxPO1UsaUM7c0I7Ozs7UTtTOzs7O1E7Ozs7Ozs7O1M7Ozs7O1M7Uzs7OztROzs7Ozs7Ozs7Uzs7Ozs7UztTOzs7O1E7Ozs7OztTO1M7Ozs7Ozs7Ozs7Ozs7O1k7YSxLO2E7YSxPO2EsWTtZO1k7O2U7WTtZO2E7YTtZO1c7aUI7OztROzs7OztTOzs7Ozs7Ozs7OztZO1k7YSxZO2E7YTtlO2EsWTthLE87WTtZO1k7VztpQjs7O1E7Ozs7Uzs7OztLO0k7STtlO0ssVztJOzs7OztJOzs7O0s7STtJLE87Rzs7Ozs7Tzs7O1EsVTs7O08sRztRLE07O087O3dCLE8sNEM7USxNO1EsVTs7O1EsUztRLE87TztPLFc7VTtRO1MsTztTLE87USxNOzs7Ozs7VztXO1ksVztZOzs7Ozs7WSxNOzs7VTtPO087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7OzswQjtPO1EsVTs7Ozs7O1E7UTs7OztZLE87O1E7O087OztXOzs7WTtZLEs7WSxPOztZLFc7Vzs7OzhCOzs7Ozs7VTtRLE87USxPO1EsUTtRO1U7Ozs7Ozs7TztPOzs7TztPLFc7Tzs7Ozs7O1U7Ozs7Ozs7Ozs7Ozs7O08sUztPOzs7USxjO087Ozs7Ozs7OztPO1EsTTswQjtPOzs7UTtROzs7Ozs7O1E7OztTLEc7OztVLEk7O1E7UyxPO1MsTzs7UztpQyx5QztVLE87UztVOzhCLHVCO1csTztVO1c7WSxzQjtZLE87WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7OztjOztlLGlCO2dCO2lCLE87aUIsUTtpQixNO3dCOzs7MEI7O2M7YTs7Ozs7OztjLFc7YTs7Ozs7OztXLE07Ozs7Ozs7ZSx3Qjs7Ozs7O2lCO2tCO2tCLE8sd0IsMEI7OztZLEs7Ozs7O1csTTs7Ozs7O1UsYzs7Vzs7Ozs7WTswQjtXO1ksZ0I7WTs7Ozs7Ozs7O1k7YztpQjs7Ozs7Ozs7O1M7O1U7Ozs7Ozs7Ozs7UTs7O1k7WTtXO1MsUTtTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1E7USxPOzs7Vzs7OztZO1ksSztXO1c7WSxPOztZLFc7WTs7eUI7Ozs7OztXO1c7VztZO1ksTztZLE87Vzs7bUI7VTtRLFc7OztROzswQjtPOzs7Ozs7Ozs7TztPO1EsVTtRO087TztPO1EsWTtRO087TztPO08sb0IsTztPO08sc0IsTztPO08sWTs7USxNOztPO1E7Ozs7USxPO1EsTztPO087Ozs7Ozs7OztPLE07a0M7O087OztRO1E7VTs7OztVO1E7O087OztHO0ksTTtJLGE7O0k7STs7OztROzs7UztXO2M7YztTO1M7USxPOzs7OztnQixPOzs7Rzs7STt1QixPO0k7OztLO087VTtVO0s7SztJLE87Rzs7SSxJLGlCOzs7OztzQjtNOzs7OztJO0ssTztLLEs7O0ssTztLLE87SztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7SyxJLGUsd0M7Ozs7TyxNOzs7O0ksZ0I7eUIsb0IsYztJO0ssUztLO0k7O0s7TSxRO00sTzs7Ozs7O0ssTTs7SSxxQyxPO0k7SSxXO0k7STtJO0ssUTs7O0ssUztLLE07SyxPO0k7STtLLFc7Szs7Ozs7Szs7NkI7SyxNOztJLFM7SSxJOzs7O0ssMkI7SyxNOztJLFc7STtJO0ssVTs7O0ssTztJO0ssVztLOzs7OztLO00sTztNLG1CO0ssTTs7SSxJOzs7O0ssZTtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7Szs7O0k7MkI7SyxRO0ssUTtLLFk7SyxVOzs7Szs7O0s7OztROzs7Ozs7Ozs7d0I7Szs7SyxVO0s7OztLLE87Szs7Ozs7OztROzs7Ozs7Ozs7SyxPO0ssVTs7O0k7STtLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0ksWTs7SztNLE87TSxPO00sTztNLE87TSxPO00sTztLOzthOzs7OztJO0ksWTtJO0k7STtLOzs7Ozs7Ozs7TSxRO007Ozs7TTs7Ozt3QjtLLGtCOztNO007O0s7TSxnQjtNOzs7O007O007dUI7TTtROzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJO0ssVTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7OztLLEk7Ozs7O00sTTs7O0s7SztLO0s7SztLO0s7SyxHO00sTTs7SztNLE87TSxROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztNOzt5QixPLHdDO3lCLE8sMkM7SyxNOzs7STtLLFE7SyxRO0ksSSxjOzs7Ozs7SyxNOztJLFk7STs7Ozs7Ozs7Ozs7TTtPLE87Yzs7O0s7TSxPO00sTztNLE87TSxPO00sTztLLE87O0ksWTtJOzs7Ozs7Ozs7Ozs7Ozs7OztNLGtCOztPOzs7USxVOzs7USxVOzs7USxPO087TyxJOzs7OztRLE07OztjO1EsTTs7OztNLE07O0s7Ozs7Ozs7Ozs7Ozs7O0ksWTtJO0c7Rzs7STtJO0ssYTtLOztTOzs7Ozs7STtJO0c7O0k7SyxhO0s7STtJO0c7O0k7Szs7O3NCLDZCO0k7SyxPO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7OztLOzs7Ozs7Ozs7STtJLFc7Rzs7STtJOztLOztTOzs7Ozs7OztJO0ksWTtJO0c7OztJO0ssTztLLE87SyxPO0k7Rzs7STttQjs7Rzs7STs7Tzs7TztlOztHOztJO0ssTzs7OztPOzs2QixPLHlDOzZCLE8seUM7TztPLE87O087Ozs7USxxQixPLHlDOzs7VyxPO1U7TyxPOzs7TyxPOzs7TyxPOztPLE87Ozs7OztRO1MsTztnQjtPLE87OztPLE87Ozs7Ozs7OztPLE87OztPLE87OztPO087USxPOztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087OztRLHFCLE8seUM7O3dCLE8sNEM7TyxPOztPOzs7O1E7UTs7OztRLE87UTtVOztPLE87Ozs7Ozs7Ozs7Tzs7O1E7UTtVOztPLE87OztPLE87Ozs7Ozs7OztPOztRLHFCLE8seUM7NkIsTyx5QztPLE87OztPO087USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOzs7UTs7Vzs7Ozs7WSxtQjtXO1c7VztZLE87O1ksTztXLE87Ozs7Ozs7Ozs7TyxPOzs7Tzs7O1EsTztPLE87OztPLE87O087Ozs7OztXO1ksTztXOztZLE87VztXLE87VTtRLE87TyxPOztPOztRLHFCLE8seUM7NkIsTyx5QztPLE87Ozs7Ozs7TyxPOzs7O1EsTzs7O08sTzs7O08sTzs7O08sTzs7Ozt5QiwwQjtJLE87Rzs7STtLOzs7O00sNEI7SyxXOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7d0Isc0I7O2lDO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07ZSxNOztHOztJLFk7OzswQjs7O08sTTs7TyxNOztHOztJO0ssTztLO087NkM7SSxTO0k7SSxNO0c7O0k7O0s7TSxTO00sTztLO0ssVTtLO0k7STs7TSxXO00sTztLO0ssTztJO0k7SyxPO0ssUTs7O0s7OztPLEs7UTtTOzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7OztLO0k7STtLLFE7OztLO0k7RztHOzs7O1EsTTtPOzt3QjtJLGlCOztLOzs7TSxPOztNLFc7TSxPO0s7SyxPO0k7SSxPO0c7O0k7SyxXO0s7SyxNOztLOztNLG1CO00sUTs7Ozs7STtLLFk7SyxTO0ssTztLLE87SyxRO0k7OztjOzs7SSxZO0k7SSxPOzs7STtJOzs7UTs7Ozs7UTtRO1EsTzs7Rzs7STtLLFE7SyxVOzs7O0s7Ozs7Ozs7TSxPO0ssVzs7Szs7O21CO007OztPLE87TSxXOzs7O0k7Rzs7STtLO0s7Ozs7Ozs7SyxpQixPO0ssdUM7Szs7TTs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7O0s7OztJOzs7Ozs7Ozs7OztJOzs7O2M7Ozs7Ozs7Ozs7Ozs7aUIsTzs7Yzs7O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7O0ssWTs7TTs7TyxPO08sVTtvQixPO007O08sTzs7Ozs7Ozs7OztNLE07O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7OztNOzs7O087OztNOzs7STtHOztJO0s7Ozs7NEIsUztJOzs7Ozs7Ozs7Ozs7OztLOzs7Uzs7VTs7Ozs7Ozs7Ozs7O2MsTzs7OztzQjs7O1c7Ozs7WTs7O1c7Ozs7YTs7Ozs7Ozs7WTs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksTTs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOzs7STtJO21CO0ssc0MsUTs7TSxXO00sUzs7OztLOztHOztJOzs7Ozs7O0ksSSxtQjtJO0s7TSxPOzs7O2tCOzs7O08sRyxrQjtROztNOztPOzs7O0k7Ozs7TTtNO0s7SztLOzs7Ozs7Ozs7Ozs7WTs7Ozs7O2dCLGtCO21CO2E7YyxRO2MsTztjLE87OztjLE87Yzs7Ozs7OztpQjs7Ozs7Ozs7aUI7Ozs7a0IsTztrQixPO2tCLE87aUIsTztnQjtjLE87Yzs7OztxQyxPLDJCO2M7O2lCOzs7Ozs7Ozs7Ozs7OztjLE87YyxTO2M7Z0I7YyxZO2M7Z0I7Ozs7Ozs7O2M7Yzs7OzthOzs7Ozs7OzthO2M7Ozs7Ozs7Ozs7Ozs7Ozs7YztjO2dCOzs7O2E7Ozs7Ozs7Ozs7O1MsRyxrQjtVO1csVTtXO2E7O1c7O1c7Ozs7VyxXO1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHLGtCO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHLGtCO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7O1MsRyxrQjtVO1csWTtXO1c7Ozs7O1c7Ozs7OztXO1k7OztVOzs7Ozs7Ozs7Ozs7O1UsRyxrQjtXO1ksWTtZOzs7WTs7O1c7WTthLE87YSxPO2E7WTs7Ozs7Vzs7OztXOzs7Ozs7Szs7O0s7TTs7SyxZOztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7WTs7Ozt1QjtzQjtzQixXOzs7dUI7Ozs7Ozs7Ozt3Qjt5QixjO3lCLFU7eUIsUTs7OzswQjs7MkI7NkI7Ozs7MkIsTTs7Ozs7Ozs7Ozs7O3dCLE07Ozs7O3NCO3FCO1c7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7Ozs7a0I7aUI7YyxHO2U7Z0I7Ozs7Ozs7Ozs7ZSxNOzs7O1ksTztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztROztTLG9CLG9COzs7OztPO08sVzs7Ozs7OztRO1MsTTs7Ozs7Ozs7Vzs7O1ksTztjO1c7Ozs7O2dCLGtCOzs7Ozs7a0IsRywyQjs7Ozs7Z0IsTTtlO1k7Ozs7Ozs7Ozs7Ozs7Ozs7UyxJLGM7Ozs7VyxNOzs7Ozs7O2EsTztZOzs7UztVLE87O1M7VSxNOzs7OzthLE87WTs7UTtTLE07UztXO2dCOzs7UTs7UyxRO1M7OzZCLE8seUM7UyxRO2dCOzs7UTs7UyxxQixPLG9DO1MsUTtTLFE7Z0I7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O087OztROzs7Vzs7O2M7Yzs7O2M7YztzQjs7VTtPO087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7OztZOzthO2EsVztZO1ksTztXO1MsVTs7O1k7WSxPO1c7UyxXO1M7UTs7a0I7a0I7aUI7Ozs7UTs7UztTLFU7UyxVOzs7UTs7UTs7UztTLFU7b0I7Ozs7Ozs7Ozs7OztROztTO1M7UyxVO1M7UyxVOzs7UztRLE87OztROztTLFU7UztTO1M7OztjOzs7OzthOzs7USxPOzs7O0c7O0k7SSxvQjtJLFc7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0ksSSx1Qjs7SztNOzs7Ozs7STtJLE87Rzs7STs7OztJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJO0s7TSxPO00sTTt5QjtLLFk7O007Ozs7O007SztLLE87O0ksTztHOztJOztLO0ssTztJO0ksb0I7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOzs7OztLLEcsZ0Q7Ozs7YTtPO1Esb0IsZTtRLE87NEIsZTtRLFE7UTs7O087TyxXOzt3Qjs7SztNO087USxPOzs7Ozs7Tzs7USxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7SztJO0ksTztHOztJLHFCO0k7RztvRCxPO0c7O0k7STtJO0c7O0k7STtJO0c7OztLLG1COzs7UTs7UztROztRLG9CO1E7Ozs7Uzs7O1U7OztVOztXLFE7VyxPO1csTztXO1csVTs7Ozs7Ozs7Ozs7Ozs7UTtROztROzs7UztTO1M7O1M7Uzs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Ozs7O2U7OztnQjs7Ozs7ZTs7O2dCOzs7Ozs7Ozs7Ozs7ZTs7O2dCLFU7OztnQjs7OztZO2E7OztZOztTLFU7OztTLFU7UztTLE87UTsyQjs7Ozs7O1E7O1MsUTtTLFU7OztROzs7USxNO21DOztROztTO1MsTztROztJO0ksTztHOztJO0s7Ozs7SyxPO0k7Rzs7STs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtRO1M7Ozs7UztROztROzs7UyxVOzs7OztZO1k7YSxPO2EsVzs7VztRO1E7Uzs7OztTOzs7OEIsZ0M7OztROzs7OztROztTLFU7Ozs7O1k7Ozs7Ozs7O2EsTTs7WTthLE07WTs7YSxPO2EsUTthO1k7O1c7UTtRO1M7Ozs7UTs7Ozs7UTs7UyxVOzs7Uzs7O1k7O1c7UTtRO1M7Ozs7Uzs7K0Isa0M7OztROzs7OztROztTLFU7OztTO1E7UTtRO1M7Ozs7UztROztROztTLFE7Z0MsbUM7UyxPOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1E7Uzs7Ozs7Ozs7UTs7Ozs7Ozs7OztROztTLFU7UyxXOzs7UyxnQjtRO1M7VSxPO1UsTzs7OztROztTO1c7OztTLHVCO1E7UTtRO1M7Ozs7UTs7Ozs7Ozs7OztROztTOzs7OztZLG1DO3dCOztZO1c7UyxVOzs7WTtZOztXO1E7UTtTOzs7O1M7OztjOzs7O2U7YzthOzs7Z0MsbUIsVTtROzs7dUI7Ozs7O1E7O1M7Ozs7UTtRO1E7Uzs7OztTO1E7O1E7O1M7Ozs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1E7Uzs7OztROzs7OztROztTOzs7Uzs7OztROztROztTO2dDLGlDO1MsUztTO1MsVTtTO1MsVzs7Ozs7UzswQjtRO1E7UztTOzs7O1MsTztROzs7OztROztTLFc7Ozs7O1k7WTtZO1k7WTs7VztRO1E7Uzs7OztTO1M7OztjOzs7Ozs7O2E7OztTLE87K0IsZ0I7Uzs7dUI7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTs7VztRO1E7Uzs7OztTO1M7OztjOzs7OzthOzs7UyxPOytCLGU7Uzs7O21COztROzs7UTtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCOztLO00sbUI7Ozs7TTtNO0s7SztJO0ksTztHOzs7Szs7Ozs7TSxPO0ssb0I7SztNLE87TSxPO00sTztzQixZO0s7TTs7Uzs7OztNLFE7TSxROzs7TTtLO0k7SSxPO0c7Ozs7TTs7TztPLE87TTtNLE87SztLLE87STs7O007MkIscUM7TTtPLE87TztNO0s7SyxPO0k7STs7TTsyQixtQixtQjtNLE87SztLLE87STtJLFk7O0ssb0IsTztLLE87STtJLFU7OztNLFc7TSxPO0s7SyxPO0k7SSxpQjs7SztNLE87TSxTOzs7OzBCLDZCO0ssYTt1QixlLGtDO0ssZTtLO0k7STtLLE87Szt5Qiw4QjtJLEksTywrQjtJO0ksSSwrQjtJOztLOzs7OztNOzs7eUI7Szs7O1M7Ozs7Ozt5QjtLLFc7SztJO0ksYTtJO0c7Rzs7STtJOzs7OzBCOzs7O1M7Uzs7Ozs7O0ssTTs7Rzs7SSxJLHNDOzs7NkI7OztHOzs7Ozs7UTs7UTs7UyxRO1M7O1k7OztlLE87O2tDO3VCOzs7USxPOzs7OztTOzs7OztvQjs7Ozs7Ozs7Z0I7Ozs7STtLOztRLHNCLE87UTtTLE07O1E7O1Esc0I7UTtTLE07O1E7Z0I7OztJLE87RztvQixlO0csdUI7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07Ozs7OztXOzs7O2U7Ozs7Z0IsVztlLEc7Z0I7aUIsVztpQixLO2dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7Ozs7ZTs7a0I7a0I7aUM7Ozs7OztxQixHLHFCO3NCOzs7OztpQjs7OztlO2U7Ozs7OztjOztXO1U7TyxXO2UsTTs7Rzs7O0ssZ0MsTztLLFc7STtJOzs7MkI7SSxPO0c7Ozs7TTttQjtLO0ssVztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7OztJO0k7Szs7UTs7Ozs7O0ssTTs7O0k7OztHOztJO29CO2dCOztJO0c7O0k7O0s7STtJLE87Rzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7UyxXO1M7Ozs7Ozs7YztjOzs7Uzs7VTtXO1ksTztZLFE7Ozs7Ozs7Ozs7Ozs7OztPOztPOztROzs7Ozs7UTtRO1EsTztjOzs7Ozs7O1E7OztTO1MsUTs7O1M7O1UsTztVLFM7VTtVLEs7VSxVO1U7WTs7Ozs7UyxJOzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1EsTztPOzs7Ozs7Ozs7O087OztROzs7Uzs7O1M7Uzs7Ozs7WTs7OztTOzs7O087Ozs7WTs7Vzt3Qjs7O087UTs7O1E7UTs7Vzs7O1ksYzs7Ozs7OztnQixNOzs7OztxQjs7ZTtnQixNOztlLFc7ZTs7Ozs7Ozs7Ozs7OztjO2U7O2tCOzs7Ozs7Ozs7Ozs7ZTtnQjtrQjtnQjtlLE07OztjOztlLHVCLFE7ZTs7O3lCOzs7OzJCOzs7O2dCOztpQjttQjtnQjs7Ozs7Z0I7aUI7a0IsTzs7Ozs7Ozs7aUI7aUIsTTs7Ozs7Ozs7Z0I7aUI7O29COzs7Ozs7O2lCOzs7O2lCOzs7O2M7O2MsVztjOzs7Ozs7Ozs7O2MsTTs7O2M7ZSxPO2U7YyxNOzs7O08sTzs7Tzs7O1E7OztRO1E7Ozs7O087Ozs7OzBCO08sVTs7UTtROztPO1EsTztRLFU7Ozs7VyxNOzs7Ozs7OztlOzRCO2M7VyxHO1ksTTs7Ozs7O3FCOztvQjtXO1k7WSxvQjtXO1ksTTtXOzs7O08sTTs7OztPLE07a0M7Ozs7O0s7O007O087OztPO087TTs7SztNOzs7TSxRO007TSxVOzs7Ozs7OztLLG9CO0s7O007OzJDOzs7Uzs7O1M7OztTOzs7Uzs7O1M7OztTOztLO0s7TSxPO007SztJO0ksTztHOztJO0k7OztLOztROzs7OzJCLE8sdUM7UyxPO1E7O1E7OztTLFE7OzsyQjtRO1MsTztTOzs7WTs7Ozs7WTtZLFM7WTtZOztvQjtXO1MsVTs7O1E7O2dCOzs7O1E7O1MsVTs7O1E7UTtRO2dCO1E7Ozs7OztROzs7UyxVOzs7NkIsMEM7UTtROztTOzs7Z0Msb0M7Ozs7O1k7YSxNO1k7OzthLE87WSxPOzt1Qjs7O1c7UyxjOzs7Ozs7YTs7O2MsYztjLFM7YSxPO1k7aUI7OztROztROztTLFU7OztTOzs7WTtZOztXO1M7Vzs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7UztRO1E7UTs7Vzs7UTs7Ozs7O1E7Ozs7OztTLGM7UyxVOzs7WTs7Ozs7Ozs7Ozs7O1k7VztTLFU7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7UTs7O1M7O1U7WTs7OztTOzs7Ozs7Ozs7Ozs7Ozt3Qjs7O1E7Ozs7OztROzs7O1k7O2EsTTs7Ozs7Ozs7WTtXO1MsVTs7O1k7Ozs7O1k7VztTOztxQjs7Ozs7WSxtQjtZLG9CO1ksTztXO1E7UTs7O1k7Ozs7Ozs7Ozs7YTs7OztzQjs7O1k7WTthLFU7OzthO1k7VztTLGM7OztZOzs7Ozs7O1ksYTtZLG9CO1ksTztXO1MsVztTOztZLFk7WSxTO1ksa0IsTztZLE87VztTO1MsTTs7Ozs7UTtTLFk7UztVOzs7Yzs7Ozs7Ozs7OztlLGE7ZTs7YztlOztrQjs7Ozs7Ozs7Ozs7Ozs7ZSxNOzs7Yzs7O2U7Ozs7Ozs7ZTtjOztXO2E7OztjOzs7O2U7Z0MsK0I7YyxPO2E7VyxNOzs7Yzs7Ozs7YztjLE87YTtXLGM7O1c7OztnQjtnQjtlOzs7a0MsbUIsVTtVO3NCOzs7OztTOzs7YztlOztnQixXO2dCLGU7ZTtlLFU7ZSxtQzs7O1UsWTs7O2M7ZTtlLFU7ZTs7OztnQjs7OztlLE87NEU7OztVLFE7VTs7O2E7YSxVOzthLE87WTtVLE07Ozs7Ozs7OztROztTOzs7O1E7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7OztZO1k7WTtZO1k7WTs7YTtZO1k7YTs7OztXO1MsYzs7Uzs7O2M7Ozs7Ozs7YTs7O1MsTzs4Qiw2QjtRO3FCOzs7OztROztTLFc7Ozs7O1k7WTtZO1k7WTs7YTtZO1k7YTs7O1c7UyxjOztTOzs7Yzs7Ozs7YTs7O1MsTzs2QixnQztRO3FCOzs7OztROztTOzs7WTtXO1MsVzs7O1MsVTtTO1M7Vzs7Ozs7UyxzQjtRO1E7UTs7O1E7UTs7O1EsTTttQzs7OztJO0ssVztLOzs7TSx1QjtNOzs7OztNO0s7SztNOzs7OztLOzthOzs7STtJLDJCOztLO007Ozs7O007SztLOzs7O2E7O0k7SSwyQjtHOztJO0k7Rzs7RztJOzs7RztJOztHLEk7RztJOzs7SSxPO0c7O0k7OzhCLE87OztPOzs7OEI7OzttQjs7O2U7O0c7O0k7SztLOztLOztNLFU7Ozs7OztJLFU7STtLLE07STtHOztJOzswQjs7O087ZSxNOztHOztJO0k7SyxVOztLLFE7STs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztROzs7Vzs7Yzs7ZTs7ZSxPO2UsVTtjOztjOztlOztlLE87ZTtpQjtjO3NCOztVO1EsUTs7O1E7O1c7OztjLFc7OztjOztjLE07O1U7Ozs7Vzs7O2MsVzs7O2M7O2MsTTs7VTs7O007TywyQjs7OztLO007OztTO1MsSTs7O2lDOzs7UyxJLFc7OztpQzs7O3lCO1MsUTtTO1E7TSxPOzs7Ozs7STs7OztLO0s7TTtPLE87TyxPO007Ozs7O08sTTs7OztJO0k7STtLLE87SyxPOztLO0k7SztpQjs7Ozs7O0ssTTs7O0k7OztJO0c7O0k7Rzs7STtHOzs7Ozs7STtLOzs7Ozs7OztJLGU7SSxPO0c7OztJOztLO0s7d0I7SztNOzs7Ozs7TSxPO00sTztNLFU7TTs7TTtNO08sVTs7O1UsVztVLE87Ozs7OztTO007TTtNOztLOztNLE87TSxhO0ssNkI7TSxXO007TTtPO1M7Ozs7Ozs7Ozs7O007TTtNO00sYzs7TztRLFM7USxPO1EsTTtRO1EsTztPOzs7Ozs7Ozs7Tzs7TTs7Ozs7O007TztRLE87USxPOzs7Ozs7TztPLE07OztnQjs7Ozs7SztNLFM7TTtROzs7Ozs7Ozs7OztLO0s7TSxVO007TSxPO0s7Ozs7Ozs7OztLO0s7O0k7Ozs7UztVLE87VSxhO1UsTztTOzs7Ozs7Ozs7UztRO0ksTztHOzs7SSxXO0ksTzs7Ozs7Ozs7O0c7cUMsa0M7OztLO00sTztNLE87TSxVO00sTztNLEs7TSxPO00sa0I7O00sTTs7SyxXO0ssb0I7STtJLFk7STs7Szs7O00sUTtNLFE7SztJO0k7SyxpQjtLOztLO0ssTztJO0ksWTs7Szs7O00sTztNLE87TSxPO007SztJO0k7SyxLO0ssUztLLE87SyxXOzs7Szs7TSxLO00sTztLLE87STtJO0ssTztLLFEsVztLLFU7SSxHO1k7TTtNLE07OztlOzs7OztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Ozs7Ozs7O0s7O3dCO0k7SyxhO0ssTzs7SztLLFc7STtJLGM7O0s7TSxPO007UTs7TTtNLE87Szs7Ozs7Ozs7OztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPO2dCLE87Ozs7O08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7O1EsUztPLE87OztPOzs7O1EsUztRLE87TyxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztPLE87OztPLE87OztPLE87OztPLE87Ozs7TyxPOzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOzs7OztROzs7Ozs7OztTLHVCO1M7UyxPO1MsTzs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7O1EscUI7UTtRLE87USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O08sb0IsTztPLE87O087OztRO1EsTztPLE87Ozs7eUIsMEI7SSxPO0c7O0k7O0s7O21DOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7O0k7OztLLFk7Ozs7Ozs7Ozs7O007TyxNO2E7Ozs7Ozs7SSxhO0kscUIsTTtJLE87Rzs7STtJO0c7O0ksOEI7Rzs7SSw4QjtHOztJLDhCO0c7O0k7Ozs7O0k7Rzs7SSxZOztJO0c7O0ksTztHOztJLFk7O0k7Rzs7SSxZOztJO0c7OzJCLHFCOztJLFU7O0s7STtJO0ssUTtLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7Rzs7STs7SyxPO0k7SSxPO0c7O0k7STs7OztTOztTLFU7Uzs7O1E7SyxVOztrQjs7SztLOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O3lDOzs2QztvRDs7Ozs7O00sTzs7O0k7Rzs7STs7Ozs7Ozs7Ozs7O007Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7O0k7Rzs7STs7ZTs7bUI7MEI7O0k7Rzt5QixtQjtHOzZCLHlDOztJO087SztJLE07RztHO0k7STs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVOzs7O2E7YTtZO1UsTzs7Ozs7YTthO1k7VSxPO1U7Uzs7Uzs7Ozs7VTs7O2E7YTtZO1UsTztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxvQjtLLE87STs7SyxZOztLOztJLEksc0M7Ozs2Qjs7O0c7O0ksa0MsTztJLFc7SSxpQztHOzs7Ozs7TyxPLGU7OztPLHdCLEs7Tzs7TTs7Tzs7Ozs7STtHOztJLFk7O0ksTzs7O0k7OztPO08sTzs7K0IsTzs7Ozs7OztPOzsrQixvQixPLG1CO08sTzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPOzs7OztXO1csTztVO087Ozs7O1c7VyxPO1U7Tzs7OztPOzs7MEIsb0IsTyxzQjtPO087OzhCLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOzt5QixPOzs7TyxPOzsyQixPOzsyQixPO2U7O0k7SSxPOzt3Qyw2Qjs7STtJOzs7Ozs7UTs7UTs7OzsrQjtTLE87UyxPO1M7USxPOzs7Ozs7UTs7OytCO1MsTztTOytCO1MsTztTLE87USxPOzs7UTs7UTs7O1M7K0I7UyxPOzsrQjtTLE87Uzs7O1M7c0I7USw2QjtRLE87O1E7Ozs7K0I7UyxPO1M7USxnQjtRLDhCO1EsTzs7O1E7O1E7Ozs7UzsrQjtTLE87UyxPO1M7UyxPO1EsTzs7UTs7OztTO1M7UyxPO1EsTzs7UTs7OztTO1M7UztTLE87USxPOztROzs7UztTO1EsTzs7UTs7O1M7UztRLE87O1E7Ozs7O1M7UztTLFE7UztTLE87USxPOztRLHVDO1EsTzs7UTs7OztTO1M7UTtpQjs7Ozs7cUMsTzs7SztNO00sTztNO0ssTzs7Rzs7O0s7SyxPO0k7SSxPO0c7RztvQyx3Qzs7STtJOzs7Ozs7eUQ7Ozs7O0s7O0c7O0k7Ozs7Ozs7O087Ozs7O1E7Ozs7O087O0ksTzs7O0k7O0ssTzs7O0k7OztJLEksVzs7OztLO00sTztNLE87SyxPOztJO0c7O0k7Rzs7STtHO2tEO0c7O0k7Rzs7STtLLE87SyxNO0s7SSxJLFU7Ozs7SztNLE87TSxPO0ssTzs7O0k7Rzs7STs7bUIsTztJLG9CLE07STs7O0k7Ozs7STtLLHFDO0ssaUI7STtJO0s7O007Ozs7O087OztNO0s7SyxPO0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O1E7O1M7Ozs7O1M7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7O1M7OztTO1E7O1E7OztTOzs7UztTOzs7WTs7USxXOzs7UTs7UTs7OztTOztTLHNCO1MsTzs7O1Msc0I7UyxPO1M7UTs7UTs7Ozs7UztTOzs7WTs7UyxPO1E7OztROztROzs7Ozs7Uzs7O1M7UTs7UTs7OztTOzs7UztROztROzs7O1M7UztROztRLGtDO1E7O1Esa0M7UTs7UTs7Ozs7O1M7OztTO1M7UTs7O1EsRztTLE07USxJLEksTzs7Ozs7O1E7O1E7Ozs7OztTO1M7UTs7UTs7O1M7Uzt3QixPLHNDOzs7WTs7Ozt3QixJOzs7Z0Q7Ozt3QixPOzs7O1ksTzs7Ozt1QixJOzs7K0M7Ozt1QixPOztXO1MsYzswQyxPLHdCO1MsVTtTO1E7OztRLEksSSxPOzs7Ozs7UTs7STs7SyxrQjtLLE87STs7O0s7OztLLFk7O0s7O0k7Rzs7O0ssWTtLLE87STt5QixtQjtJLFE7STtHOztJO0ksdUMsVztHOztJOztPOzs7Ozs7OztRLE07Tzs7Z0I7Ozs7Ozs7Ozs7Ozs7OztPLHVDOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPOzs7USxNOzs7VztXLGM7VTtPLFc7OztPLGM7O087Ozs7USxNOzs7O1c7VyxjO1U7USxNOzs7OztXO1csYztVO1EsTTtRO08sVzs7Tzs7Ozs7USxNOzs7VztXLGM7VTtRLE07TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OztzQix3QztpQyxnQjtTLFc7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7OztZLE87VztXLE87VTtPLE87Ozs7Ozs7Ozs7O3FCLE87Tzs7O1E7OztZLE87VztXLE87VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7SSxPO0c7O0k7O2U7ZTs7OztpQjtpQjs7cUIsTzs7O08sTzs7Rzs7STs7O007O08sc0I7TSxHLHNDOzs7TyxjO087Ozs7VztXLE87VTtPO08sTzs7TTtNLE87OztJO0c7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Z0IsTzs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7NkI7OzZCOzs2Qjs7NkI7OzhCOzs4Qjs7Ozs7Vzs7Vzs7Vzs7Vzs7VzttQjs7OztROzs7UTs7O1EsTzs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7OztRO2tCO2tCOzs7OztPLE87OztPLE87Ozs7O1EsTzs7OztPLE87OztPOzs7O1E7TyxPOztPOzs7O1E7Tzs7Ozs7OztPLE87O087OztRO087Ozs7Ozs7TyxPOzs7TyxPOzs7Tzs7Ozs7OztPLE87OztPLE87OztPLE87O08sa0IsTztPLE87OztpQjtpQjs7O2lCO2lCOzsyQjs7TyxtQjtPLE87OztPLE87OztPLE87OzZCOzs7O1E7USxPOztPO08sTzs7OztRO1EsTzs7TztPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7NEI7OzRCOztPOzs7UTtRO08sTzs7NEI7OzRCOzs0Qjs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7OztROzs7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLFM7YTs7Ozs7UTs7UTs7UTs7MkI7OztPOztPOzs7O087O087O2E7c0I7Rzs7STs7O2dCO2dCOzs7O0k7OztRLE87O1EsTzs7USxPO2dCOzs7SSxPOzs7STs7TyxPOztPLE87ZTs7Ozs7Ozs7eUIsTzs7O1EsTzs7MEI7O1E7O1M7OzthLE87WTtZLE87VztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZO2E7YTtjOzs7aUI7Ozs7a0I7aUI7aUI7Z0I7YTthLE87OzthO2EsTzs7Ozs7Ozs7WTtZLE87VztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztZOzthOztjOzs7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7O1E7OztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7UTs7O1M7O1ksSSxjOzthOztjOzs7YSxPO1k7WTs7O2E7O2M7OzthLE87WTtZOzt3Qjs7O2E7OztZLE87Vzs7USxPOzs7Ozs7Ozs7WTs7YTs7Yzs7O2EsVzthLE87WTtZOzRCOzs7YTs7O1ksTztXO1EsTzs7O1E7OztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7OzthO2EsTzs7WTtZLE87VztRLE87Ozs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztROzs7OztTOzs7YSxPO1k7WSxPO1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7Ozs7OzttQjtROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztNOzs7TTtLOztNLFk7a0I7O007TztRLFU7Ozs4QjtPOzs7OztPO2U7Tzs7Szs7TTsyQixvQixXO00sVztNLE87Szs7TTs7TztPO007TTtPLE87TyxPO087O087TztPOzBCOztPO087TTtNO007Szs7SywwQjtLO0s7OztrQzs7STtJOzs7O0s7SztJO0k7O0s7STs7Ozs7Ozs7O0s7OztLOzs7STs7Szs7TSxPO0ssYztJOztLOzs7O007UTs7TSxLOzs7Szs7Ozs7TTs7Tzs7OztPOzs7O00sRztPO1E7VTs7UTtROzs7O1M7UztTOzs7Ozs7UTtTOzs7Ozs7Ozs7Ozs7O087TztPLHlCOzs7O1M7O1U7UztTOzs7Ozs7OztPO1EsTTtRO1E7Ozs7UztTO1M7Ozs7O087TztPLHlCOzs7O1MsMkI7UztTOzs7Ozs7OztPO1EsTTtRO1E7Ozs7UztTO1M7Ozs7O087Tyx5Qjs7OztTLDJCO1M7Uzs7Ozs7Ozs7a0I7O0s7OzthOztJO0ksSSxJLHNDOztLLEksZTs7Ozs7OztRO1E7Ozs7Ozs7TyxHLHVCOzs7OztNLE87OztLOztNLFU7TTtPOzs7OztPO087O007TTtLO0s7O007Ozs7TTtNO0ssSSxXLHVDOzs7OztNO08sTTtNOztPO087Ozs7OztROztTLEksdUIsTztTOzs7Ozs7OztNOzs7OztPOztROzs7Ozs7OztRLEc7UztVOzs7Ozs7Ozs7Ozs7VTs7VTtTO1M7UztVOztVOzs7Ozs7O1E7Uzs7O087UTs7Ozs7O007TTs7STs7Szs7O007OztNO007Ozs7Ozs7SztLO0sseUIsd0I7SztJOztLOztNO007TTtNOzs7O087UTs7O1E7UTs7Ozs7OztPO087Tyx5Qix3QjtPO2dCOzs7O087Ozs7Ozs7TTtPO087TztPO087Ozs7Ozs7O1U7Vzs7Ozs7Ozs7Ozs7O1c7O1c7VTtVO1U7Vzs7VztVOzs7OztVOzs7OztROzs7Ozs7Ozs7Ozs7OztNO087TztPO087Tzs7OztRO1M7Ozs7OztTOzs7Ozs7O1U7VTtTO1M7UztVOztVO1M7Ozs7OztROzs7Ozs7Ozs7O0ssSSwrQjtLO0s7OztLO00sb0I7TSxPO0ssTztJOztLLFc7SyxPO0k7O0ssVztLLE87STs7SyxrQztLO00sTTs7TTtNLE87OztLO007TSxPOztLO007OztPOzs7Ozs7OztPO1E7UztTOzs7UTs7TztRO1E7OztPOztNOztnQyx1QztnQyxzQzs7OztRLEkscUI7USxxQjs7Tzs7O1c7WTtZO1k7VyxxQjtVO1EsTztPLE87OztpQyxzQztpQyx1Qzs7OztPLEksdUI7TyxzQjs7TTs7O1U7VztXO1c7VSxzQjtTO08sTztNLE87O0s7O007Ozs7OztNO007Ozs7Ozs7UztVO1U7O1UsTztTLE87OztPO1E7UTs7USxPO08sTzs7O0s7TTtPO087Ozs7Ozs7SztNO007Ozs7Ozs7O0s7OztNO00sTTtrQjs7Z0M7Szs7TSxlO00sSTtLO007SztLLEk7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs7MkI7Ozs7OztXO1k7Ozs7OztZOzs7Ozs7Ozs7OzBCOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztTO1U7Vzs7Ozs7VTtVO1U7O1M7Ozs7O087Ozs7O0s7O007TTtNLEk7TSxNO007TTtNO007OztLO007O087UTs7OztPLGM7Ozs7O1E7UTs7Ozs7YztlLCtDOzs7UTs7O087OztPOzs7OztRLE07USxNO1E7Ozs7UztVOzs7O1M7VSxJLE07Ozs7OztVO1U7Ozs7Ozs7VztXOzs7OztTOzs7OztPO1E7USxPOzs7WTthO2E7YSxTOzs7Tzs7Ozs7WTthLE87O2EsTztZO1ksVTtZLE87Vzs7Ozs7Tzs7TztPOzs7TztROztXLE07VTtRLFM7OztXO1c7VztVO087TztPOztNLEksbUI7Ozs7SywrQixTOztNO087O1EsUTs7O1E7bUMsTyxjLHFCO08sTzs7O007SztLLGdCO0s7STs7SztNLE07SztNLFk7TTs7O0ssTztJOztLO00sTTtLO00sWTtNOzs7TTs7Z0M7OEIsVztLLG1CO0ssTztJOzs7Ozs2QixZOzs7O2tDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVyxPOzs7SztLLFc7STtJLFE7O0s7SztLO0k7STtJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksb0I7SSxPO0c7OztJOzs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O1E7OztTO1E7O1E7Ozs7UztTO1EsTzs7OztnQjs7STtHO0c7O29CLE8saUM7O3NCLDRCO0ksTztHOztJLFc7YSxNO0k7OztLOzs7STtHO0c7O0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxTO0ssUTs7O3dCLE8sa0M7SSxtQixNLHdDO3NCLDBCO0ksSTs7b0I7cUM7aUI7Ozs7Ozs7OztTLGE7O1E7Ozs7Ozs0Qjs7UTs7Ozs7Ozs7UTs7Ozs7UyxzQixPO1MsYTs7UTs7Ozs7Uzs7O1UsTztVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7O0ksVztJO0c7OztJO0ssTTs7STs7OztJO0ssTTs7STs7OztJLFcsTTs7STs7OztJLFcsTTs7SSxlOzs7cUIsa0IsZ0M7NEIscUI7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0k7Szs7O007OztLLG1COztJLE87RzsyQixPLDBDOztJO0s7aUIsTzs7SztJO0ksWTs7SztLO29CO007Ozs7OztPLE07Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtNLEk7Ozs7Ozs7TSxpQjtNOztJO0k7Rzs7O0s7SyxZLE87O0s7TSw2QjtNOzs7OytCOzs7STtJLE87Rzs7SSxXO0ksTztHOztJO0k7Ozs7Ozs7OEI7O1M7OztVOzs7OztpQixPOztLLFc7O0c7O0k7O0ssaUM7SyxPO0k7SSxPO0c7OztJO0c7OztLO0s7b0I7Ozs7Tzs7TTs7O087O1U7VyxNOztVO1M7TyxROzs7VTtVO3lCO1c7Ozs7O1ksTTtZOzs7Ozs7Yzs7ZTtlLE87Ozs7Ozs7OzthLEksOEI7Ozs7OztnQixvQztnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTTs7O2UsTTs7Ozs7O2E7YSxPOzs7Ozs7Ozs7OztXO1csSSxrQjs7Ozs7OztXLFc7YztZO1csTTs7UztvQyxzQztPOzs7OztJO0k7Rzs7SSwwQjtJLG9CO0c7O0ksWTs7STtHOztJLFU7O0ksRyxrQjtJLEcscUI7SSxJO0k7OztJLFk7O0ksRyxrQjs7STs7OzhCLHFCOzhCLCtDOztJLFc7ZTs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7OztNLHFEO007OztJO0c7OztLO0ssYztJO0ksTztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7O0s7Ozs7O00sUTtNLFU7Ozs7c0Q7Ozs7O0s7OztNO08sVztrQiw0QjtLO0k7SSxPOzs7SSxvQjs7OztNOzs7Ozs7OztXOzs7O1U7Ozs7Ozs7Vzs7O1U7Ozs7TztxQzs7OztROzs7O1M7MkI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7O1E7OztNOzs7STtHOztJO0k7O0s7OztNO007O0s7O0c7RyxhOztJLHNCOzs7Ozs7OztROzs7Tzs7Ozs7Ozs7O1ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7STtJOzs7Ozs7O1Msa0M7UyxTOzs7O2lCOztLOztHOztJO0ksdUM7STtHOztJLFc7STtHOztJLFE7O0ksa0IsdUI7STtLOzs7STtHOzJCLFcsNkI7O0ksbUMsVzs7Ozs7SztLLFc7STtJLFc7SSxPO0c7Ozs7Ozs7Ozs7TztRLEs7USxRO1EsTTs7UTtTOzs7Ozs7UyxPO1M7Ozs7O21CO087OztXLFk7Vzs7Ozs7OztZOztZO2EsTTthOzs7OztnQixHLDRCO2lCO2dCLE07ZTthOzthLE07WTs7OztnQjtnQjtlO2E7Ozs7aUI7Ozs7YTs7O2dCLG9CLE87Z0IsTztlO2EsUTthLE87OztnQjtnQixPO2U7YSxPLFc7OztnQjtnQixlO2U7YTtlLFc7YSxTO2EsVzttQzthO2U7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7O29COzs7Ozs7Ozs7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7dUI7Ozs7Ozt3QjsyQyxPLGtDOzs7Ozs7OzsyQjs7NEI7NkM7a0Q7Ozs7OzswQjs7OzsyQjs7OzhCOzs7OztrQzs7MEI7OzJCOzRDOzs0Qzs7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs4Qjs7O3lCOzs7OzswQjsyQzs7Ozs7Ozs4Qjs7O3VCO3dCO3dCLE87MkMsYzt3Qjt1Qzt1Qjs7O3NCLEc7Ozs7O3lCOzBCLE87MEI7MEI7Ozs7O3lCOzs7O3VCO3dCOzs7Ozt1Qjt3QixXO3dCO3dCOzs7Ozs7aUI7Ozs7ZTthOzs7Z0I7Z0I7ZTthLFksVzthOzthOzs7WTtvQjs7O1c7WTs7O1c7Ozs7Ozs7O1E7OztRLHFCO1EsVztPOzs7OztNO087Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7UTtTO1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztZLEk7WSxNOzs7Ozs7O1c7WTtvQjt1Qjs7WTtZLEk7OztXLEk7Ozs7Ozs7OztROzs7O2E7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YyxTOzs7UyxPO1E7Ozs7YztlO2UsbUIsc0I7OztpQjs7O1E7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7O087UTs7Ozs7STtHOzs7Szs7Ozs7OztPO1EsUTtRLEs7Tzs7Ozs7Tzs7O2tDO1EsSTs7Ozs7TTtPLEk7Ozs7Ozs7Ozs7OztNOztRLE07TyxVO087O00sSTs7STs7Szs7Ozs7Ozs7O0ssUztLO007Ozs7OztNLE87Szs7Ozs7STtJO0c7O0ksVyxNOzs7Ozs7MEI7TTtPOzs7VTtVO1csTTtVLEk7OztTO08sVTtPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7Uzs7O1U7OztXO1Usc0I7UztPLE87Tzs7O1U7VTtTO08sUztNOzs7STtHOztJO0c7O0k7Szs7O0k7Rzs7SSxZLE87STs7O0s7SyxPO0s7STs7O0k7eUIsa0IsTywyQjtJLFk7Ozs7Ozs7SyxhOzs7O0k7Rzs7O0s7Ozs7O007TSxNO00sVztNLE87O0s7O2U7Ozs7Ozs7SSxPO0c7OztLOzs7OztNLE07TSxrQjs7Szs7OztLOzs7TTtvQjs7Z0I7SSxXO0ksaUI7RztpQyxXOzBDLFc7O0k7O3lFO0s7SztLLE07O0k7OztjLGE7YTs7Ozs7Rzs7STt5RTtJLE07Rzs7STs7O0ssTzs7SSxNO0c7O0k7O0c7O0k7a0M7O0ssTTs7STtHO0csbUI7O0k7O2E7YyxZO2MsTTtjLFE7O2M7ZSxPO2UsTztjLE87OzthLEksVTs7Ozs7YztlLE87ZSxPO2UsTztlLE87YyxPOzs7YSxPOztHO0c7STs7STs7STs7Ozs7Ozs7Ozs7STs7Rzs7STs7TTtPLFU7TztPOztPO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7TSxRO007TSxNOzs7UztRO007O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSSw4Qjs7Ozs7Ozs7STtHOztJLFc7O0s7SztLO0k7STtJLE87Rzs7STs7O0ssTzs7SSxNO0c7O0k7OztLLE87O0ksTTtHO0c7STtVO0k7VTs7SSxpQixPO0ksUztJLDBCO0c7O0ksUyxNOztJLFc7STtLOzs7O0k7Rzs7SSxVOztLO007Ozs7OztLOzs7ZTtnQjtnQjtlOzs7O2M7Ozs7OztNLE07OztJOzs7O2U7ZTs7Ozs7OztjO2MsTzthO0c7O0k7Szs7O2U7Yzs7STs7OztlO2M7d0M7YyxVO2M7YTtHOztJLHlCLFM7O0s7TTs7Tzs7O087NEIsUyxzQjtNOzs7SztJO0k7Rzs7SSxZO0k7K0I7Ozs7SztLLGdCO0k7STtLLE87SyxPO0s7OztLLFM7STs7Ozs7SztLO0k7SSxXO0k7Rzs7STtJOzs7OztPLFM7UTtPLEk7Ozs7Szs7Rzs7O0s7SyxPO0k7SSxVO0k7Rzs7SSxZOztJOzs7Ozs7SSxZLE87Ozs7Szs7Ozs7O0k7OztJO0s7Szs7Ozs7SyxRO007Tzs7Vzs7OztPO087TTs7Ozs7NEI7Ozs7O2tCOztLO0k7SSxPO0c7K0IsdUI7O0k7Rzs7STs7O0s7TSxXOzs7SSxXO0ksTztHOzBCLHdCOytCLHVDOzhCLDhDOztJO0c7NkIsVzt1QywrQjs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTyw2QjtJO0ksTztHOztJO0k7Szs7TSxRO007MkIsUSw4QixTOzs7Ozs7Ozs7OztVOzs7OztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7O0s7TSxNOztNOzs7OztPO087Ozs7Ozs7OztvQjs7O0s7TSxVOzs7Ozt3QjtVOzs7OztXLFk7O1c7Ozs7OztlLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0ksWTtJO2dCOztJO0c7O0k7SyxZO0s7Ozs7O007OztLO007Szs7NkI7OztROztRLE07O0k7STtLOzs7SztJO0c7O0ksUTtJOzs7Ozs7O0c7O0k7Ozs7Ozs7OztROztROzs7UTtROztRO1E7UyxPO1MsTztRLE87O0k7RztHOztJOztpQjtLOzs7Ozs7O007Ozs7VTtXOzs7WTs7O1csSSxZOzs7cUM7OztXLGU7O1UsTztTOzs7O00sTztNLE07SyxJLFU7Ozs7TSxJOzs7Szs7O00sUTs7Ozs7TztRO1EsMEI7USxPO087ZTs7Ozs7O007TztPOzs7YSxzQjs7OztPO087Ozs7O0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUIsSTs7Ozs7UTs7Ozs7Ozs7TTtPLEksVTs7Ozs7OztPOzs7UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7Ozs4Qiw4QjtRLE87Ozs7OEIsOEI7USxPOztLOzs7O0k7Ozs7UTtrQjs7Ozs7Ozs7O1M7VTs7OztXO1U7Ozs7Ozs7Ozs7OztTO1U7O1c7VTs7Ozs7O087Ozs7UTtRO1E7Tzs7O1EsVzs7TyxPOztJLE87Rzs7STtnQixPOztJO0c7OztJO0k7O00sTztLLEksWTs7OzswQixNOzs7Ozs7Ozs7Ozs7Ozs7a0I7TTs7Ozs7Tzs7O007Ozs7TyxJLFU7Ozs7UTtTOzs7Ozs7Tzs7O1E7UTs7Ozs7OztHOztJOzs7OztNLEs7TztNO087OztNO2lDOzs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7O1EsMEM7Ozs7Ozs7Ozs7O2lCOzs7Ozs7STs7O0s7SztJLG9CO0k7SyxRO0s7Szs7O0k7Ozs7Ozs7Ozs7O0k7Ozs7Szs7O1U7Ozs7Ozs7Ozs7VTs7OztZO0k7OztJOzs7Ozs7Ozs7Ozs7O1U7Ozs7VztXOzs7Ozs7Ozs7Ozs7Ozs7USxNOzs7Tzs7aUI7Ozs7Ozs7Tzs7UTs7OztPOztPLGlCOztRLE07Tzs7O1EsUztRO1E7Ozs7Ozs7O29CO3FCLG9CO3FCOztvQjs0Qzs7Ozs7Ozs7Ozs7Ozs7VTs7O1c7Ozs7OztjOztlOztjOztlO2dCOzs7Z0I7a0I7Z0I7O21CLFk7bUI7Ozs7O29COzs7bUI7Ozs7OzttQixNOztrQjtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07Ozs7Ozs7Ozs7Z0I7aUIsTTs7O29COzs7cUIsTTtvQjs7OzttQjtpQjttQjs7Ozs7ZTs7O21COzs7b0IsTTttQjs7OztrQjtnQjtrQjtlOztjO2UsUzs7Ozs7O2U7OzttQjttQjtrQjtnQjtrQjs7Z0IsTTtlOztnQixtQyxtQjtnQjs7bUIsTzs7Ozs7Ozs7O2tCO2dCLE87Z0IsTztnQixZO2dCO2tCO2dCO3NDLCtCO2lCLFk7Ozs7Z0I7aUI7OztpQjs7Ozs7Ozs7c0I7dUI7O3dCOzBDLE8sZ0M7d0IsTzt1Qjt1QixPLHlDOzs7a0IsVTs7O2lCO2tCO3lDO21COzZCOzs7Ozs7O2dCO2lCOzs7b0I7Ozs7O3FCOztxQjtvQjtvQjtxQixVO3FCOztxQixVOztxQixPOzsrQjs7OztvQjtvQjtvQjttQjtpQixVOzs7Ozs7Z0I7aUI7Ozs7Ozs7Ozs7OztjO2U7aUI7ZTs7bUI7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7Ozs7cUI7Ozs7Ozs7OztnQjs7Ozs7Ozs7OztpQjs7O2tCLFE7Ozs7Z0M7OztpQjs7O3FCO3FCLGM7b0I7a0IsUzs7O3FCO3FCLGM7b0I7a0IsUztrQixPO2tCOzs7a0IsUztpQjs7Ozs7O2lCOzs7cUI7cUI7b0I7a0IsTzs7O3FCO3FCO29CO2tCOzs7cUI7Ozs7Ozs7O2tCO21CLEk7OztzQixrQjtrQzs7c0I7dUIsSSxPOzs7Ozs7OztzQixPOztrQjtrQjtrQjttQjttQjs7O3NCOzs7O3FCO2tCOzttQjs7Ozt1QixvQjttQzs7O3NCO29CLFM7b0I7b0IsTzs7b0IsTzs7Ozs7NEI7Ozs7OztjOztXOzs7ZTtjO2M7O3dCLG9COzs7Ozs7aUM7O3dCOzs7OzBCOzs7Ozt5Qjt5Qjt3QjsyQzs7Ozs7Ozs7Ozs7Ozs7O1U7O29COzs7Ozs7OztVOztXOztjOzs7ZTs7O2M7O2lCOzs7cUI7O3NCLE07OztxQjtvQjtrQjtvQjs7Ozs7Ozs7Ozs7aUI7OztxQjs7c0IsTTs7O3FCO29CO2tCO29COzs7Ozs7aUI7a0I7OztxQjtxQjtzQixNOzs7cUI7b0I7a0IsSztrQjs7Ozs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7O1U7O29COzs7Ozs7OztVOzs7b0IsWTtvQjs7O3NCLFc7c0IsTzs7O3NCLE07OztxQixPOztvQjtxQjs7c0I7c0IsUTs7c0I7Ozs7O3FCO3FCOztvQjs0Qzs7Ozs7Ozs7Ozs7Ozs7O1csTTs7VTs7O29CO3FCOztvQjs7O3NCO3NCLE87OztzQixNOztxQjs7c0I7cUIsTzs7b0I7cUI7O3NCO3NCOzs7O3VCOzt3Qjs7OzJCOzJCOzRCOzRCLE07NEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCOzBCO3VCOzs7cUIsTTs7O29COzRDOzs7Ozs7Ozs7Ozs7O1U7OztXOztjOzs7ZTtjLEc7ZTtnQixPOzs7bUIsa0IsUTs7Ozs7OzttQjtrQjtlOzs7OztlO2M7YztlO2U7aUI7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7O2lCOzs7Ozs7a0IsTTtpQjs7Ozs7Ozs7OztpQjs7OztpQjs7Ozs7Ozs7OztlO2dCOzs7Ozs7OztnQjs7Ozs7O2M7OztXOzs7O2UsWTtlOzs7Ozs7O2dCOztnQjs7OztpQjtpQjtpQixPO2dCLFMsNkI7Z0IsVTtnQjtpQjs7a0I7a0I7O2tCOztxQixvQjtxQjs7aUI7OzJCOzs7Ozs7O2dCO2lCO2lCOztnQjs7MEI7Ozs7Ozs7ZSxNOztjOztVOztvQjs7Ozs7Ozs7VTtXLE87Vzs7Yzs7O2U7OztlLFM7ZTs7O2U7aUI7Ozs7OztjOztXOzt3QztjOzt3QixvQjs7eUI7OzBCOzs7NkI7Ozs7Ozs7NEI7eUI7O3dCLE07Ozs7Ozs7OztVOztvQjs7Ozs7Ozs7O0c7OztJO0ssUTs7O0s7OztJO0c7O0k7a0Q7STtHO3dCLE8seUM7O0k7Ozs7NkIsMEM7SyxPOztJO0c7O0ksTztHOztJLFk7Ozs7O1M7OztVLE87UztVLFc7VTs7Ozs7UztRO0ssSyxpRDs7STs7O0k7SztHOzs7STtLO007TSxVOzs7SyxzQjtLLE07O0k7SyxZO0s7Z0I7SztJLEksVTs7OztNLE07Ozs7SSx3Qjs7OztLO00sTztNLE87TSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7OztJO0s7SztLO087bUMsbUI7STs7Ozs7Ozs7Yzs7YTtHOztJOztHOztJOztHOztJOztHOztJOzs7OztROzs7UTs7c0M7Ozs7OztROzs7Ozs7O2E7YTtZO1ksTztXOztTLHNCO1MsTztTOztTO1E7O1E7Ozs7O1Msc0I7UyxPOzs7WTtZO1c7UTs7Z0I7Ozs7USx3QztROztRLDJDO1E7O1E7Ozs7UztROztzQzs7bUM7Ozs7Szs7SSxPOzs7STtrQzs7SyxtQixJO0s7O0k7SztLLFM7SyxZOztLO0ssZTtJO0kscUI7eUIsbUIsVTtJO0ssYztLOzs7O1c7Ozs7Ozs7Ozs7OzBDLGtDO2dCLE87Ozs7Ozs7OztnQixPOzs7OztXLGM7NkIsZSwyQjtXLGdCO1c7OztvQjs7O1U7VTtXO1csYztVOztXLE87O1U7O1csTzs7VTtpQjtVLHVCLFcsZ0M7VTs7MEI7OztXOztVLE87Ozs7OztHOztJO0ssTzs7O1M7Ozs7c0IsdUI7SSxJLE87Ozs7Ozs7OztjOzs7OzZCOzthO0c7O0k7a0MsTzt1QixNOztJO0c7O0k7O0s7SztJO0ksSSxPOztLO2lCLE87OztvQjs7OztNLFc7TTs7TTtPLE07aUI7OztNLE07O0s7STtJLFc7Rzs7STs7Tzs7Ozs7UTs7O1c7O1EsTztPOztPLE07Z0M7O0c7O0k7SyxXOztJO0c7OztJLFM7O0ksTzs7O0ksZTt5QixrQixjO0k7SyxXO0ssTztLO0s7SztLO08sbUMsaUI7Szs7Ozs7Ozs7Ozs7VTtVLG9CO1U7VyxlO1c7OztXLE87O1csbUIsTzs7VztVO1UsVTs0Qix1QjtVO1csTztXOztXO1c7VTtVO1csYTtXO1c7OztnQjtpQjs7OztrQjs7OztpQjs7MkI7Ozs7Ozs7O2dCOzs7Ozs7OztXLE87VTtrQjs7UztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJLFU7SSxTOzs7Ozs7Ozs7STs7SztNLEksYywyQzs7Ozs7TyxTO087Tzs7O0k7RztHO0k7STtJO0k7O0k7STtJO0c7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHLHFCOztJLEksUTs4QixtQztJLGE7STtJO0c7O0k7SyxNOztLLE07O0ksVzs7OztLOztNOzs7Ozs7Ozs7OztNOzs7STtLO2lELDJCOzs7STtHOztJLHFCOztLLE07SSxzQjs7SSxJLFE7Ozs7Ozs7Ozs7Ozs7STs2Qix5QjtHO0c7STtJO0k7STs7STtJO0c7O0k7Ozs7Uzs7O1MsSSxTLGtCOztVOzs7Ozs7Ozs7UztTLGU7UztRO0ssTzs7OzBCLE87d0IsTyxpQjtJLE87Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztLO0k7Rzs7STs7Ozs7Ozs7OztxQjs7Szs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7Ozs7b0I7O0k7Rzs7STs7OztLO0k7Rzs7STtHOztxQiwyQjtJO0ssUTs7O0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8scUQ7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7O2dDOzs7Szs7STtHOztJO0s7OztJOzs7Ozs7Ozs7Ozs7OztJLE87Rzs7O0ssUTtLLGdCLE87SztNLE0sVztNLE0sVztNLE0sVztLOztJO0k7dUI7O2tCO0kscUIsVTtrQjs7STtHOztJLFc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7O0ksVTtJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7a0Q7Ozs7TTs7OztPOztNOzs7TTtNO007OztJO0k7Rzs7STt3Qjs7OztzQjtNOzs7TTs7O0k7STtHOztJO21COzs7O3NCO007OztNO007TTs7O0k7STtHOztJO0s7OztLO0k7Rzs7O0s7TTs7O007OztNOzs7OztPOzs7Ozs7OztNO087Ozs7OztLOzs7Ozs7OztJO0k7Rzs7STtLOzs7SztJO0c7O0k7Szs7OztNO0s7STtJO0ssUTs7O0k7Ozs7Ozs7O0s7O007O0s7Ozs7Ozs7VTs7Ozs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxPOzs7aUQ7SyxPOztJOzs7Ozs7Ozt1RDs7SyxPOzsrQjs7O0k7SztLO0s7O0s7Ozs7TTtLO0k7SSxHOzs7c0I7TTs7Tzs7O1U7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7c0I7TTs7Ozs7Ozs7OztNO007TTs7O007OztJO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0k7b0Msc0I7SSxPO0c7Rzs7SSxnQjtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2tDLHlCO2EsUztZOzs7WTs7OzthLFU7Ozs7dUI7OztZOzs7Ozs7Ozs7Ozs7bUI7Ozs7OztZOzs7O2EsK0I7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7WTs7OzthO21DOzs7Ozs7OztZOzs7OzthLFU7OzsyQjtZOzs7OztZOzs7OzthLFU7OzsrQjtZOzs7WSx1QixVOzs7O3lCOzs7WTs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7VSxTOztTOztXOzs7WTtxQjtVLE87O29COzs7c0I7Ozt3Qjs7OzBCOzs7NEI7Ozs7Uzs7OztJO0c7RztJLGE7SSxvQjtJLG1CO0ksZ0I7STtNO0k7TTtJLGlCO0k7TTtJO007SSxnQjtJO007STtNO0ksb0I7STtNO0k7TTtJLG1CO0k7TTtJO007SSxlO0k7TTtJO007O0k7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7Ozs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjs7O0c7O0k7SyxNO0s7SyxROzs7O0s7Tzs7VTs7STs7Tzs7Tzs7TztRLFc7USxPO08sRztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STt5QixtQixlO0k7SyxPO0s7STtjOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOzs7STs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztRLE07TztJO1U7OztLLFc7SyxPO0k7STtLLFM7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7Rzs7SSxtQixNOztJO0c7O0k7OzBDOztJLE87Rzs7O0s7Ozs7Ozs7Ozs7Ozs7OztLO0k7SSxPO0c7O0k7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTtjO2M7Ozs7Ozs7Ozs7Ozs7OztXO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7UTtROzs7O007TztRLFE7UTtRLE07USxPO1E7OztXLFc7O1EsVTs7Ozs7Ozs7UTs7Ozs2Qjs7Ozs7Ozs7Ozs7OztROzs7Ozs7Tzs7OzRCOzs7Ozs7Ozs7OztLOzs7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7TTtNLFE7OztNO0s7Ozs7a0I7O0ksTztHOztJO0ssTztLO0ssUTs7OztLLFE7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksWTtZLE87STs7O0s7OztJO0c7O0k7STs7Ozs7NEIsTzs7O1M7Ozs7Szs7Rzs7STs7Ozs7USxPOztRLE87O1EsTTsyQjs7SSxPO0c7O0k7STtLLE87O0k7Rzs7SSxpQixPO0k7Ozs7Ozs7O0k7Szs0QjtLLE87O0k7SyxPOzs7STtHOzs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7O1EsbUM7UTs7Ozs7YTs7O2MsYzthOztZOzs7Ozs7O1EsUTtRO1U7O08sTzs7Ozs7OztTOzs7OztVO29COzs7NkIsNkM7VSxHO1c7WTs7Ozs7ZTs7Z0IsTTs7ZTtjO1ksVztZO1k7O1ksTztZO2M7Ozs7Ozs7Ozs7VyxxQjtXO1ksVTs7O1ksVTs7O1ksVTs7O1k7Vzs7Ozs7Ozs7OztzQjs7Ozs7OztPOztRLFU7OztRLFU7OztRLFU7OztRO1EsTztPOzs7Ozs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7Ozs4QjtXO1ksUTs7O1c7O2EsTTtZOzthOztZOzs7O1k7WTs7O1c7WSxNO1csVTtXOzhCLGU7WSxpQjtXO1csZTtnQyxtQixVO1csVTs7WTtZLGU7VztXO1ksWTtZLE87WSxPO1ksTztXOztZO1c7VztZO1k7a0MseUM7WSxNO1k7Vzs7Ozs7UTtVOzs7O1Esa0I7USxZO1EsWTs7OytCO1c7WSxPO1ksSztZLHNCO1c7Ozs7b0I7OztVO1E7Ozs7OztVOzs7YyxXO2MsVzthO1csVTtrQyxtQixlO1csUTtXO2E7Ozs7O1csTTtVO1c7O2E7Ozs7OztTO2dDO1UsTztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7Ozs7OztXOzs7O1c7VTtPLE87O087OztRLEs7MkIsNkI7USxVO1Esc0I7USxPO1EsTztPOztPOztROzs7TztROzJCO1E7Ozs7O1M7OztpQjs7OztPOzs7UTs7Ozs7Ozs7aUMsVzs7O1k7YTs7OzBCO2E7Ozs7O2M7OztzQjs7OztZOzs7O2EsTzthLFE7WTs7Ozs7c0I7OytDO1EsTTs7OEM7TyxNOztPLG9DLE07TyxZLFc7TyxzQjtPO1E7O1Msc0I7UTs7Ozs7USxXO1E7O3dCOzs7O087Ozs7Ozs7UTs7UTtTLFU7Ozs7WSx3Qjs7OzthO2M7OztjOztpQixNOzs7aUI7a0IsTzs7OzthO2MsTzs7O1ksVztZOzs7Ozs7O1E7UyxNO1E7O1M7VztTLE87UTs7Ozs7Ozs7OztPO1EsVTs7O1c7VztZOzthLGU7WTs7Vzs7O1ksYTs7O1k7YTs7O2E7O2dCLE07Ozs7a0M7OztnQzs7Vzs7OztvQjs7VTtRLEs7USxPO1EsVzs7OzswQixnRDtRLE07TztzQixNO1EsVztRO1M7Ozs7dUI7O1M7OztZLE07Ozs7b0IsTTs7Ozs7OztRLGE7UTtTOzs7Ozs7Uzs7O1ksTTs7Ozs7OztZOzthLE87Ozs7OztPLDBCOztPOztPOzs7UTtROzs7UyxXO1M7Ozs7OztXOztXO1ksTzs7WSxPO1c7O087USxPOztRLE87Tzs7Tzs7OztROzs7Ozs7Ozs7WSxNOztZO2EsTzs7OztRO1MsTzs7O087USxPOztPOztPOztRLE87UTtPO1c7UyxNOzs7UyxJLFM7Ozs7VztZOzs7O2U7Ozs7O2U7Ozs7O1MsVyxNOzs7O3VCOzs7Ozs7YTs7UTs7Ozs7Uzs7O2lCOzs7Ozs7UTs7UztTO1E7O087O1E7Tzs7Tzs7O1E7Tzs7Tzs7O1E7Tzs7Tzs7Ozs7O1E7UTtPOztPOzs7USxRO087O1U7O1c7VyxXOzs7Vzs7OztVOztXOzs7O1U7OztXLE87OztPOztPOzs7USxRO1E7Tzs7OztxQjs7Ozs7Ozs7Tzs7O1EsUTtRLFM7USxRO087O087Ozs7USxRO1EsUztRLFE7Tzs7Tzs7O1EsUTtRLFM7USxNO1E7OztXO1c7OztVO1EsTztPOzs7Ozs7aUI7Ozs7Ozs7Ozs7O1M7Ozs7O1UsYTtVO1U7O2E7Ozs7VTtpQjtTOzs7O1E7Ozs7UyxRO1M7UTs7OztpQjs7OztPO1EsTzs7Tzs7Tzs7O1E7UTtPOzs7Ozs7UTs7MEI7TyxJLGlDO087O08sb0IsVzs7O1M7VSxPO1UsTztVO1M7Ozs7O1E7UyxPOztROzs7UTtTLE87O1E7OztRO1MsTztTO1E7O087USxPO1E7UTtRLGU7USxLO1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7Ozs7VyxZO1c7OztZLFU7WSxXOzs7O1k7O2dCOzs7OztZO1k7Ozs7O2dCOzs7O1ksTTtZO1csTzs7Ozs7UTs7WTs7Ozs7UTtRLGM7OztXOzs7Ozs7OztVO1E7Ozs7Ozs7USxTO1E7VTs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7O1c7Vzs7Ozs7Ozs7cUI7OztVO2lCO087Ozs7ZTs7Ozs7STs7O0k7OztJOzs7STtJOzs7O1E7OztnQjs7O0c7O0ksb0I7SSxPO0c7OztLLFk7SztJO0ksVztJLE87Rzs7STtJLFk7O0k7O0c7OztJOzs7O0k7O0s7STtJO0s7SywyQiw0QztJLE87OztJO0k7STs7Ozs7Szs7UTs7Ozs7UyxPO1E7OztRLDJCOzs7Ozs7Ozs7Uzs7OztpQjs7Ozs7SztJOzs7OztpQztPLG1COzs7O087OztRO1E7O1c7OztjOztjLFM7O2M7O1U7K0Isb0IsVztPLEc7Ozs7Ozs7OytCOzZCO087UTs7O1c7VyxvQjtXLFc7VTtRLE07USxTO1E7Ozs7Ozs7VTs7Ozs7O1csTzthOzs7Yzs7Ozs7Ozs7Ozs7Ozs7Vzs7O087UTs7O1c7VztVO08sTzs7TTs7OztPOzs7Ozs7SyxnQyxPO0ssb0I7SyxXO0k7SSwyQjtHOzs7SSxnQjs7Szs7Ozs7Ozs7Ozs7Ozs7OztRLEc7UztVLE87VSxjO1U7Ozs7Ozs7Ozs7Ozs7Uzs7aUI7Ozs7Ozs7OztvQjtROzs7OztLOzs7STtHOzs7STs7Ozs7O08sVTtVO1E7UztVLE87OzthO2EsVztZO1UsaUI7UztVLE07Uzs7OzhCLDhDO1UsbUI7OzthOztjLFU7YyxPO2E7YSxPO1k7VSxROzs7YSxXO1k7VSxVOzhCO1UsUztnQyw0QztVLGlCOzs7YTthO1k7VSxNO1U7OzthO1M7Ozs7O1U7Ozs7Ozs7O0k7Ozs7O0k7Szs7O00sTTs7O1Msb0IsTTtTLE87UTthOzs7b0IsNkI7SSxZO0ksa0I7SSxVO0k7O1k7O0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOztJO0k7Szs7O1Msb0I7Ozs7Z0M7O3NFOzs7UyxNO1E7TSxTOzs7Uzs7Ozs7VTtVLFE7Uzs7TTtRO0ssc0IsMEI7OztLLFksc0IsWTtLOzs7Ozs7O007TSxRO007SztNO00sTyx5RDtJO0k7Rzs7STtJLGU7Rzs7STtjO2M7OztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOzs7O007Ozs7O08sTztPLE87VTtPLFc7TyxPOzs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO3VCLGdCO0ksa0I7SSxPO0c7O0k7Ozs7eUI7SSxlO0c7OztLOzs7TTs7Szs7Ozt3Qjs7STtJLE87Rzs7OztLO0s7STtJOzs7OzthOzs7STs7OzsyQjs7NkI7O0ksTztHOzs7STtJOzs7O1E7O1MsYTtTOztROzs7Ozs7a0I7Ozs7OztRO1MsTTtTLFc7UTs7Ozs7bUI7O1E7O1MsTTtTLHFCOzs7O1k7Ozs7YTs7O2U7O2dCOzs7Ozs7O29DLGtCOzs7O2U7Ozs7O2dCOzs7Ozs7O2U7O1k7VztTLFU7Ozs7OztZO1k7O1c7UyxhO1EsRztTO1U7OztTOzs0Qjs7UTs7Ozs7Z0I7OztROzs7Ozs7OztvQjs7OztROzs7OztTOzs7OzthOzs7Ozs7OztZO2E7YSxPO2E7YTtlOzs7Ozs7OztZLE87Ozs7Ozs7O1c7OztTOzs7Ozs7Ozs7UTs7UTs7O1M7Ozs7O1E7O2dCOzs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7O1E7O2dCOzs7Ozs7OztHOztJLGM7Ozs7Szs7O2lCOzs7O0k7OztnQjs7O0c7O0ksWSxNOztJLE87O3FEOzs7Ozs7Ozs7UyxNO1E7Ozs7O1M7O1E7Ozs7Ozs7Ozs7UTs7UztTOzs7O1k7Ozs7O2E7OztlOzs7O2dCOztnQjs7O21CO21CO29CO3FCOzs7Z0M7cUI7Ozs7O29DOztvQjs7OzsyQzs7O2tCO2dCOzs7Ozs7O3FCOzs7Ozs7OztlOztlOzs7O2dCO2U7Ozs7Z0I7O2lCLFc7aUI7bUI7Z0M7OztpQjs7NEI7a0I7bUIsTzttQixNOzs7Ozs7O3VCOzs7Ozs7O2dCOzs7d0I7O2dCOzs7d0I7Ozs7O2U7O2dCOzs7bUI7Z0M7ZTs7Ozs4Qjs7Ozs7ZTs7WTtXO1MsVTs7Ozs7Uzs7UztzQyw2QjtTLFE7UyxNO1MsUTs7OztVO1c7O2M7Yzs7Ozs7NEI7OztrQjs7Ozs7OztTLEksTSxnQzs7OztVO1c7aUM7Vzs7K0I7Ozs7UztVLE87OzthO2E7YTtZO1UsTzs7Z0M7VTs7OzsrQjs7VSxPOzs7Ozs7d0I7OztROztROzs7Uzs7Ozs7UyxTO1E7Ozs7UTs7O1M7Ozs7O1MsUztROztROzs7Ozs7O1ksVztXO1MsYTtTLGdCOzs7Uzs7O1E7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7O1MsSztVLE07UztVLE07VSxNOzs7OzthO2E7Ozs7OztZO1UsWTs7O2E7YTs7Ozs7O1k7VSxZO1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLOzs7O007OztLOzs7YztjLE87O2E7O0ksaUIsUztJO0c7O0k7STs7Ozs7O1M7bUI7VyxNOzs7OztXLE07OztRO1MsUztTLFc7UTs7USxNOztROzs7O1M7Ozs7OztZO2E7YSxPO2E7YTtlOzs7Ozs7OztZLE87Ozs7Ozs7O1c7OztTOzs7Ozs7Ozs7UTs7UTs7O1M7Ozs7UTs7O2dCOzs7UTs7OztTOzs7O1E7OztnQjs7O1E7O1M7Ozs7O1E7Ozs7WSxHO2E7Ozs7O1MsTTs7Ozs7Rzs7STs7Szs7OztNOzs7Szs7O2E7O0k7Szs7O0k7Rzs7STtJO0s7TTs7O1M7VTs7O2EsVzs7YTs7OztjOztlLEs7a0MsVywrQjtjLE87Ozs7VTs7Uzs7TTs7OztVLGtCOzs7Ozs7Ozs7Ozs7OztpQixHO2tCOztpRDs7Ozs7Ozs7Ozs7OztpQixHO2tCOzs7Ozs7Ozs7ZSxHO2dCOzs7OztVLE07Uzs7OztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjtxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VSxJOzs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztNOztPOzs2QixtQjtrQjs7Ozs7O0s7TSxPO00sTztNOztLO007Ozs7Ozs7YSxROztZO1MsTzs7Ozs7Ozs7OzthO3FCOztZO1MsTzs7Ozs7O2E7cUI7O1k7UyxPOzs7aUI7OzsrQjs7Ozs7O21COzs7O1M7aUI7O2M7O0s7SztLO00sTztNLE87O0s7TTtRO00sTztNLE87b0I7SyxJLHFCOztNO007TSxPO0s7SyxPO0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTs7SyxXO0ssTyx5QjtJO0k7SyxjO0ssTztLLFU7O0s7TSxTO00sTztLO00sTTs7SztJO0k7O0s7Szs7Ozt3Qjs7STs7SztLOzs7Ozs7Ozs7OztxQjs7Ozs7O0s7TTs7VTs7Ozs7Ozs7TSxLOzBCLFcsZ0M7SyxHO007Tzt5Qjs7TTs7Tzs7Ozs7Tzs7OzthOzs7Ozs7Ozs7Ozs7Szs7O0s7TTs7OztTOzs7Szs7STtLLFM7SyxTOzs7Ozs7Ozs7SztNOzswQixlO3NCOzs7O0s7TTs7MEIsZTs7MkI7SSxXOztLO0s7STtJLGdCOztLO0s7Ozs7d0I7O0k7O0sscUIsTztLLE87STtJLGdCOztLO0s7STtJLGU7O0s7STtJO0s7TTtNOzs7O1k7Ozs7Ozs7SztNOzs7O007bUI7O007Ozs7OztTOzs7Szs7TTs7Ozs7VTs7Ozs7Ozs7Ozs7O0k7OztLOzs7Ozs7Ozs7Ozs7O0k7O0s7Ozs7Ozs7Ozs7YTs7O0k7OztJLGtCO0ksTztHOztJO0c7Ozs7SSxPOzs7O0ksdUI7O0ksVztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLHNCOztJLFc7O0k7Rzs7SSxXOztJLGtCO0c7O0k7O0s7TTtNLE07SztJO0ksTztHOztJLDhCOzs7Ozs7Ozs7WTs7O1c7Vzs7WTs7Vzs7dUI7VztVO08sTzs7Tzs7O1EsUTtRO1E7UTs7OztPOztTOzs7VSxVO1U7VTtVOzs7Ozs7Ozs7WTs7YTthOzs7Ozs7OzttQjs7Ozs7YSxPOztXO1EsTzs7Ozs7Ozs7TyxPOztPOzs7O1EsTTsrQix1QztPLE87O0c7O0ksSSxLLDZCOztLOzs7Ozs7SyxLLGlDO0s7TSxPO00sTztNLE87Szs7Ozs7d0M7OztJO0k7SyxROzs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLOzs7Z0I7Ozs7aUI7OztnQjtlO2EsUzthLE87OztnQjs0RDtnQjs7aUI7OztnQjtlO1ksVzs7Ozs7Ozs7OztZOzs7YTtZOzs7OztnQzs7O007OztJLE87RztHOztJOzs7Szs7OztJO0c7RztJLFc7STs7OztLOzs7Ozs7VSxZOzs7O2E7O2EsTTs7O2EsTTs7O1M7OztVO1U7c0I7Ozs7Ozs7Ozs7ZTs7O2dCLE87Z0IsVTs7Ozs7Z0M7OzttQixLO2dDOzs7O2dCOztlO2UsTTs7OztlLE07Ozs7Yzs7OztlLFE7Ozs7OztjLE07Ozs7O2U7OztnQjs7b0I7ZTs7Yzs7O2UsUTs7Ozs7Yzs7OztlLFE7Ozs7O2MscUI7YyxXOzs7O1M7TTtPO1E7O1EsUTs7OzttQjtROzs7Ozs7OzttQjs7Ozs7Ozs7Ozs7OztNO08sUTtPOzs7SyxXO0s7STtJLGlCO3lCLG1CLFU7STtLLE87SyxLO3lCLG9CLFc7STtLLE87SyxNO3lCLHFCLFk7STtLLE87SyxPO3lCLG9CLFc7STtLLE87SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1MsSTs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7OztJOztLO0s7b0I7Ozs7O1E7Ozs7O1M7UTs7O2tCOzs7Ozs7Ozs7Ozs7OztJO0k7Rzs7eUIsbUIsYTtJLFU7O0s7Ozs7OztLOzthO0k7SSxnQjtHOztJO0k7SyxzQixPO0s7SztNLE07TTs7OztROzs7O2lCOzs7UTs7UTtTOzs7WTs7Ozs7O1k7YTs7YTs7O2MscUI7Ozs7Ozs7Ozs7Ozs7O2EsWTs7Ozs7Ozs7O2U7Z0IsTzs7Ozs7NEI7YTs7Z0I7O2MsTTtpQzthOztjOzs7Ozs7O1ksTzthLE07WTs7OzthOzs7Ozs7YyxVO2M7YztjO2E7WTtZO2E7ZTs7O1ksTzs7Ozs7Ozs7VztRLE87O1E7Ozs7UyxVOzs7UztTOzs7Ozs7Ozs7O1M7MEI7USxPOztROzs7Uzs7Ozs7O1E7bUM7OztHOzs7STs7Ozs7Ozs7O087USxTO1EsTzs0QixlOzswQjs7Tzs7O1EsTztRLEk7UTs7Vzs7O1U7USxROzs7VztXO1k7Ozs7O2EsTztZLE87O1c7VTtRLGlCOzs7VztXLFc7VTtRLGdCO1EsVTtROzs7Ozs7Ozs7Ozs7Ozs7O007O0sseUM7OztROztTOzs7O1EsZ0I7O1E7OztTO1c7UyxPO1MsYTtTOzs7OztRLFc7OztROzs7Ozs7UTs7Uzs4QixjO1MsTTtTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VSxzQjtVOzs0QjtVO1k7Ozs7O1M7VTs7OztTO1U7Ozs7O29COzs7Uzs7O1U7Ozs7Yzs7OztTOztrQjs7Ozs7OztRLEksYyxPO1E7USxxQixPO1E7Ozs7UTs7NkIsYTtTLE87UyxlO1M7Ozs7O1M7Ozs7YyxTO2M7O2U7ZTs7bUI7ZTtjOzs7dUI7Ozs7YTs7O1E7O1EsbUIsTzs7UTtTLFE7UyxNOzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1E7Ozs7UTs7Uzs7O1M7Ozs7YTs7Ozs7OztROztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJO0k7Szs7Ozs7b0I7Ozs7SztJO0k7OztLLGdCLHdDO0ssTztJO0k7SyxPOzs7SyxrQjtJO0k7SyxXO0ssTztLLGE7STtJO0k7Rzs7O0k7O0k7STtLLFk7SyxTOztLO0k7STtLLFE7OztJOzs7STs7O0s7SztJOzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7Z0MsbUIsYTtTLE87USxPOzs7O1E7O1M7UyxPO1EsTzs7OztHOztJO0k7bUI7Syx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxJLHlCO1MsTzs7Ozs7Ozs7O1EsbUI7NkI7USx3QjtRLE87Ozs7Ozs7Ozs7VTs7VztXO1UsTzs7Ozs7Ozs7Rzs7STtJO21CO0sseUM7Ozs7O1E7O1M7UyxPO1EsTzs7Ozs7O1E7O1M7OzhCLGM7UyxPO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTOzZCLGE7UyxPO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7Ozs7Ozs7VTs7O1c7VztXLE87VyxPO1UsTzs7O1EsSSx3QixPO1EsTzs7OztHO0c7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7aUI7STs7Ozs7Szs7Ozs7O0s7Ozs7Tzs7UyxNO1E7UyxPOzs7MkMsVztRLE87Ozs7Syx5QyxXOzs7Ozs7USxPOztPLHlDOzs7VTs7VztXLE87VTtrQjs7O1U7OztXLE07VztXO2E7O1c7OztVO2tCOzs7O1U7Ozs7OztVOztXO2dDLGM7VyxRO1c7Vzs7Vzs7O1U7a0I7OztVOzs7VztXLE07VyxRO1c7OztXO1U7Ozs7O21COzs7Ozs7Ozs7O2U7Ozs7Z0IsTztlO2U7Z0IsUTs7O2dCO2dCOztvQjs7Ozs7Z0I7Z0I7OztnQjtnQjtvQyxlO2dCOzJCO2U7Ozs7Ozt3Qjs7Ozs7OztpQjs7Ozs7a0IsTztpQjtpQjtrQixROzs7a0I7a0I7O3NCOzs7OztrQjtrQjtrQjs7O2tCO2tCOzZCO2lCOzs7Ozs7MEI7Ozs7OztZOzs7YTthOztpQjthO2U7YTs7O2E7OzRCOztZOzs7O29COzs7OztXOzs7OztZO1k7YztZO1ksTztXOzs7O3FCOzs7OztVLGtCLE87VTtVLHFCLE87VTs7OztVOzsrQixhO1csUTtXOzs7VztVOzs7b0I7cUI7O3NCOzs7MEI7OztvQixPO21COzs7Ozs7Vzs7WTs7WSxRO1k7WSxRO1ksTztZOzs7ZTs7O2U7OztnQjtnQjtlOzs7Ozs7O1k7Vzs7bUI7O1UsVzs7VTtXLFE7VyxNO1csUTs7O2M7OztjOzs7ZTtjOzs7Ozs7O1c7VztVOzs7O2tCOzs7VTs7Vzs7O1c7Vzs7O1U7a0I7Ozs7Ozs7OzthOzs7Ozs7YyxPO2E7YTtjO2M7Yzs7a0I7YyxTOzs7aUI7O21COzs7OztvQjtvQjs7bUM7O29CO21COzs7OzJCOzs7Ozs7Ozs7OztpQixNOztnQjthOzs7O1U7VyxRO1c7VyxRO1c7OztjOzs7Yzs7O2U7ZTs7OEI7O2M7Ozs7Ozs7dUI7OztXO1c7VTs7OztrQjs7Ozs7OztNO087USxROzs7UTtROzs7OztPOzs7OztPO1EsTztRLE87TyxPOztLOztNLG9CO00sTztLOztNO087USxROzs7Ozs7Vzs7Ozs7OztTLE07OztPOzs7OztRLE07OztLOztNLDBCO00sTztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7O0ksOEIsTzt3Qjs7Rzs7SSxJLFcsOEM7Ozs0QixPOzs7Rzs7STtJOzs7Ozs7Ozs7OztHO29DLHFDOztJO0k7O0k7O007OztPOzs7Ozs7Ozs7Ozs7O1U7O1csUztXLE07O2E7Ozs7O1U7Ozs7VTs7VztnQyxjO1csVztVO1U7VyxPOzs7OztVO1U7VyxPOzs7Ozs7OztZO1k7YTs7aUI7Ozs7Ozs7Ozs7OztVLGtCLE87VTtVLHFCLE87VTs7OztVOzsrQixhO1csVztXLE87Ozs7O2dCLFM7O2dCO3lCOzs7O2U7Ozs7O1UsbUIsTzs7VTtXLE07VyxNOzs7YyxZO2M7OztlO2M7Ozs7O1c7Ozs7VTs7Vzs7O1U7Ozs7O2M7OztVOztXLFE7VztXLFE7OztjLFk7Yzs7O2U7Yzs7Ozs7Vzs7Ozs7a0I7O007SztLO1k7TSxNOztNO007Ozs7Ozs7Ozs7Ozs7Ozs7SztLLE87O0ksTztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7O007OztXOzs7O1U7OztLLFc7OztLLE07STs7Szs7O1E7O0ssTTtLO0s7OztVOzs7Ozs7Uzs7O0s7SSxXO0c7O0k7SyxrQixNO0ssTzs7STtLLE87STtJO0ssTTtLLE07SyxNO0ksTzs7Rzs7O0k7SyxNOzs7SztNLE07TSxNO00sVTtLLE87STtJOztPOztPOztPO2U7Ozs7SSxZLE87STs7SyxVO0ksTzs7OztJLHVCOztJO0c7Rzs7STs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SyxhLFc7STtHO0c7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7OztLOztLLFM7SztNLE87TSxJO0s7STtJO0ssTyxXO0ssUTs7O0ssTzs7SyxjOztLO0k7SSxPO0c7OzZCLHdCO0k7SyxNOzs7O0k7RztHLGEsdUMsUzs4QixPLCtCOztJO0k7O2EsYyxPOzs7Ozt1QixXO3VCO3NCO1k7O0c7c0Isd0I7O0ksSTt5QixTO0k7STs7O2M7YTs7Ozs7O0c7c0IsTyxvQjs4Qiw0Qjs7STs7O0s7Szs7O0ssTzs7SyxXO0ssVztJOztJOzs7YyxXO2MsVzthOzs7Ozs7O0c7Ozs7SSxtQyxTOztJO3lCLE8sYyxxQjs7STs7O2MsTyxjO2E7Ozs7OztHO3dCLHlCOztJLFEscUMsUzs7SSxxQixpQyxrQjtJO0c7OztLO0s7STtJLE87Rzs7SSx1RDtJO0c7O0ksc0M7Z0I7STs7SyxRO0ssTztLLE87SyxTO0s7SztJLFc7OztJOztPOzs7Ozs7UTs7O1E7Tzs7Tzs7O1E7OztPOztPLDBCO08sTzs7OztJO0s7SztJO0c7O0ksWTtJLG9CO0ksaUI7STtHOztJLHNDO2dCO0k7O0ssVTs7Szs7Szs7USxvQjs7Ozt3QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxXO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCO1U7VTs7O2EsMEM7YTs7WTtVOzs7O2dCOzs7aUI7OztnQjs7Ozs7Ozs7ZTs7Ozs7Uzs7Ozs7Ozs7Ozs7UztVOzs7Ozs7OztVOzs7O2lDLDZCO1M7OztROzs7Ozs7Uzs7OzhCLHFDO1E7O1E7Ozs7O1M7OEIscUM7UTs7UTs7O1M7OztTLHFCLDZCO1E7Ozs7Ozs7Ozs7Ozt5Qjs7WSx3QixnQztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZO2E7OztnQjtlO1k7OztTOzs7O1U7VSxzQjtVLFU7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjO2U7Ozs7WTs0Qix3QjtVLG9CO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNO1k7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7Ozs7d0M7O2E7WTs7O3NCLGU7O3VCO3FDOzt3Qjs7Ozs7Ozs7O3dCLE87dUI7O3NCOztxQjs7Ozs7OztZOzs7OzhCLDZDO2E7Ozs7O1k7Ozt1QixpQixpQjt1Qjs7OzsyQjt1QixNOzs7Z0M7OztzQjs7Ozs7OztRO1E7O1E7Ozs7UyxVOzs7UyxVOzs7Uzs7O1k7Ozs7O2EsWTthLFk7YTtZO1c7Uzs7UTs7UTs7Ozs7UyxVOzs7Uzs7O1k7OzthLFE7WTtXO1M7UTs7USwwQjtROztROzs7O1M7O1k7WTtXO1M7UTs7UTs7OztTOzRCLDRCO1E7O1E7Ozs7UztTOztZO1k7VztTO1E7O1E7OztTO1MsbUIsc0I7UTs7UTs7O1Msb0Isc0I7UTs7USw0QixvQixvQjtRO2dCLDRCOztJOztLLGtCO0ssWTtJOztLLGtCO0ssVTtlLHFDLFM7O0ssNEIsYztJOzs7SyxVO0s7O0k7Ozs7OztLO0s7TztLO0ssUztLLFE7Szs7O0s7O0s7Tzs7Ozs7Ozs7SyxRO0s7STs7O0ksa0I7SSxPO0c7dUIsNEIsd0I7O0ksdUI7OztLOztNOztTLE87O1E7TTs7UyxVO1MsTztRO3dCLFk7TSxNLFc7TSxNOzJCLGU7TSxNLFc7TSxTLFc7SzthOzs7STtLLE87O0k7STtLLFU7SyxPO0k7b0IsWTtJO0ssTSxXO0ssTTtLLFcsVztJO1k7O0c7Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7O0k7OztPLEc7USxNO087O087Ozs7Ozs7USxzQjtRLE87Tzs7TyxXO08sRztRLE07Tzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOztPOzs7UTs7O1c7VztVO08sVzs7Ozs7Ozs7Ozs7O2MsRyxnQzs7Ozs7Ozs7Ozs7Ozs7ZSxHO2dCOzs7Ozs7Ozs7Ozs7YSxHO2M7Ozs7O087OztRLHNCO08sYzs7Tzs7Ozs7USxzQjtRLE87Ozs7VztXO1U7USxPOzs7OztXO1c7VTtRLE87UTtPOztPOzs7OztRLHNCO1EsTzs7O1c7VztVO1EsTztPOztPOzs7USxzQjtPLGU7O087Ozs7UTtPOztPOzs7O1E7Tzs7Tzs7OztRO1E7Tzs7TyxrQztPOztPLGtDO087O087Ozs7OztRO1E7Tzs7O087O087Ozs7OztRLHNCO1EsTztRO087O29DOzs7TztlOzs7O0k7OztLLFE7SSxPOzs7O0s7SztJO0ksTztHOztJO0k7OztROztROztROztRLHNCOzs7O1UsVztVOzs7UTs7Ozs7Ozs7Ozs7Ozs7OztZO1k7VztROzs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7UTs7UyxzQjtRLE87OztROzs7O1k7WTtXO1E7USwwQjtRLE87OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7Ozs7Ozs7UTtRO1EsTzs7Ozs7Szs7O0c7O3FCLGdDLGtCO0ksTztHOztJLG9CO0ksTztHOzs7O0s7Ozs7Ozs7Ozs7OztXO2E7ZTs7YzttQjtZO2E7OztZOzs7Ozs7OzttQixNO0ssUzs7TSxtQixPO00sUyxNO007SztLO0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SzswQixrQix5QjtLO00sTztNO3lCO0s7TSxPO00sZTtNLFU7OztNLE87SztLO00sUTtNLFM7dUIsa0I7SztNLE87TSxZO0s7O0k7SztNOzs7O007Ozs7VTs7Szs7Ozs7TTs7O2U7Ozs7Rzs4QjtHO0k7OztJO0ssUTtLLFk7SyxXO0s7STtLOztLLFc7SyxPO0k7O0s7O3lCLE87Ozs7Uzs7O1UsVTs7Ozs7VTtXOzs7O1c7Ozs7OztTLE87Ozs7O1E7USxPOzs7O1M7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1U7VTtVO1UsYzs7OztZOzthLEs7O1k7WTs7OztVOzs7Ozs7SyxPO0k7MkIsNEI7O0s7O0s7OztJO0k7O0s7Ozs7Ozs7VSxHO1c7WSxLO1ksTztZOztZLE07OzsyQjs7Ozs7OztTLEc7OztnQjs7SyxXOztNLGtDO007SztLLE87STtJLGE7Rzs7STs7OytCOzs7OztJLEksb0IsUTtJO0ssSSxXLHlDOzs7NkI7OztJOztLLFk7Ozs7YTs7O0s7SyxPO0k7Ozs7Ozs7UztTOztVLHNCO1MsTzs7Ozs7Ozs7Ozs7OzRCLGtCLDJCO1M7Ozs7Uzs7VSxzQjtTLE87Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7Uzs7Ozs0QixrQiwyQjtTOzs7OzRCLGtCLDJCO1MsTzs7O1M7Ozs0QixrQiwyQjtTO2lCOzs7VTs7Ozs7Ozs7UztTLDBCO1MsTzs7Ozs7OztXO1c7WTtZLE87Vzs7OztTOzs7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7Ozs7Uzs7OztVO1Usc0I7UyxPOzs7OztpQjs7TTs7OztJO0ksWTs7Ozs7O1M7Ozs7Ozs7VSxzQjtVLE87Uzs7O1M7Ozs7Ozs7O1U7UyxPOzs7Uzs7Ozs7O1U7Uzs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7Uzs7OztVLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhOztVLHNCO1UsVztTOzs7OztTOzs7OztVLHNCO1UsTzs7O2E7YTtZO1UsTztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VSxzQjtVLE87UztVO1csVTs7Ozs7YztjLFc7YTtXLEs7Ozs7YztjLE87YTtXLE07VyxPOzs7YztjO2E7VyxPO1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1Usc0I7VSxPO1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7Ozs7O2M7YyxvQjtjLE87YTs7OztTOztVO1c7eUI7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7O1U7VztXOzs7O1M7Ozs7Ozs7OztTOzs7Ozs7Ozs7YztlO2Usc0I7OztTOzs7O1M7O1Usc0I7UyxPOzs7OztVOztXLFU7VyxVOztXO1c7Ozs7VyxNO1U7O1M7OztpQyxrQix3QjtTOzs7aUMsa0Isd0I7UyxPOzs7Uzs7OztjO2U7ZSxzQjs7O1M7aUI7OzZCOzs7O1M7O1Usc0I7UyxPOzs7Uzs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7OztTOzs7O1U7VSxzQjtTLE87Ozs7Ozs7Ozs7OztJO0ksYztJO0s7O00sZSw2Qjs7SztJO0k7Szs7TSxlLDZCOztLO0k7Ozs7Ozs7UyxJLFUsMkM7OztnQzs7Ozs7Ozs7Ozs7Yzs7Ozs7ZSxPO2M7YTs7OztTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7O1U7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YztjLEksMkI7Yzs7Ozs7Ozs7O2lCLE07Ozs7O2U7OztlOzs7OztnQjs7Ozs7O1k7Ozs7O2E7WTs7WTs7Ozs7YTs7O2M7Yzs7OzthO2E7Ozs7Ozs7YTthOzs7Ozs7Uzs7Ozs7VTtTOztTOzs7VTs7O2E7YTtZO1MsVzs7O1MsYzs7Uzs7OztVOzs7O2E7YTtZO1UsYTs7OzthO2E7WTtVLGE7VSxXO1M7Ozs7O1M7Ozs7O1UsTTs7O2E7YTtZO1UsTTtTOzs7UyxlOztTOzs7Ozs7VTtTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7OztVLG1CO1U7OztTO1U7VTs7Ozs7UyxrQztTOztTOzs7Ozs7VTtVO1M7O3lDOztTOzs7Ozs7VSxNO1U7Uzs7d0M7OztTLHlCOzs7aUI7OztJO0s7SyxRO0s7SyxhO0ksUTtJO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STtJOzs7SSx1Qjs7O0c7O0ksVTs7Ozs7Rzs7SSxVOztLO0s7SyxPO0k7STtJLFU7STtJOzs7RztHOzs7O0ksa0I7STtJO0ssZTtLO08sMkI7SSxHO0ssTTtJOztJOzs7O007TyxPO08sTTs7TTs7Ozs7O0c7dUIsb0Q7O0k7O2U7bUI7Ozs7aUIsTTs7SyxHO007TTs7OztHOztJO0ksTztHOztJO0ksTztHOztJOytCLDJDO0k7SyxNO2U7YTtHOztJOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxtQjs7SSxPO0c7RyxJLHNCOztJLGlCOztHOztJO29CLFcscUM7cUI7O0c7O0ksRztLLE87STs7O087UztLOztROztLLE87O0k7Rzs7STtLLFc7SztNO08sYTtPO1M7WTs7Ozs7Ozs7O0s7Z0I7Ozs7TyxJLFk7Ozs7UTs7UyxNO1MsTTtlOzs7Ozs7TyxZOzs7O1E7O1MsTTtTLE07UyxNO2U7Ozs7Ozs7Ozs7O0ksTztHOztJOzs7O0c7O0k7O2lCOzs7O00sRyx1QztNLEk7OztNOzs7TyxPO007O21DO087O00sSTs7O0c7Rzs7STs7SSxpQjs7SSxNO0c7O0k7STtLO00sTTtNLEs7Szs7O3FCOzs7Ozs7TTs7Ozs7Ozs7Rzs7SSxJLFE7OzsyQjs7O0ksTztHOztJOztLO3FCOztHOztJO0s7SyxNO0ssTTtLO3FCO0k7SyxNO0ssTTtzQixnQjtxQjs7OztHOztJOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7STtHOztJLEkseUQ7Ozs7TSxNOzZCOzs7Rzs7STtHO0c7O0k7STtHOztJLEkseUQ7Ozs7Ozs7OztROztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7bUI7O0k7Rzs7STtLLE87OztLO0s7STtJO0k7Rzs7STtLO0ssSTs7Szs7OztNO007TTtNOzs7OztJLE87Rzs7STtJLE87Rzs7SSxJLDBEOzs7O007TTtNOzs7OztJO0k7SSxvQzs7OztNO007TTs7Ozs7STtJO0ksb0M7Ozs7TTtNO007Ozs7O0ksTztHOztJOztLLEksSSxPOzs7O2U7O0s7TTtNOzs7Ozs7OztJO0k7O0ssUzs7TSxJLFEsZTs7OytCOzs7SztLO007TSwyQixPLDJCO0ssTztJOzs7O0ssTztJLGU7O0s7O1E7O2M7TSxNO0s7STtJO0s7SywyQixPLCtCO0ksTztHOztJO0k7STs7Rzs7O0s7OztROzs7Uzs7UTs7O1E7OztROzs7UTs7STtJLE87Rzs7STs7Ozs7NEI7OzRCOzs0Qjs7NEIsTzs7OEI7OzhCO3NDOzs7Tzs7O1E7VSw0QjtROzs7VztXOzs7VTtPO087O087O1E7VSwrQjs7O1csTywrQjtVO087TzttQzs7Rzs7SSxJLE8sdUM7O0sscUM7SztLO0k7STs7STtHOztJO0c7bUMsdUI7O0k7TztLO0ksSSxPLHlCOztLLHFDO0s7SztJO0k7OztHOztJO0s7TTtPLFc7TyxzQixPOzt3QixPLDRDO087O3lCLE8sNEM7Ozs7Ozs7O00sUztNO007NkIsTywyQjtPLE07a0I7O3VCO0ssWTs7Szs7O00sUTtNO1E7OztLLEksSSxNOzs7Ozs7SztLLEksSSxNOzs7Ozs7SztLOzs7Ozs7SyxPOztHO29DLDhCOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCOztLO0k7SSxPO0c7O0k7O0s7d0I7Szs7TSxVOzs7TSxNOzZCO0s7STtJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7SSxJLDJCOztLO00sTTtNOzt3Qjs7O0k7STtJO0c7O0k7Rzs7STtHOzs7STs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztJLHVCOztJLFc7RztHOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksa0I7SSxPO0c7O0ksd0I7RztpQyx1Qzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUzs7SztNO00sUywyQjtLLEs7TSxNO0ssVTs7SyxPO0k7STtLO0s7OztTOztRO0ksTztHOztJLFM7STtJLFU7STtLO007TSxTO00sTTtNLE07TSxPO2lCO0s7O007TSxNOztZO00sTTtLLFM7SztNO08sTTs7Ozs7Ozs7SztLLEssNkM7SztLLE07O0ksVztJO0c7O0k7STtlO0k7OztrQixXO0ssUSxXO0k7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STs7O0c7Rzs7O0ksUztJO0s7ZTtLLEc7OztNLFU7TSxHLGtCO08sTTs7Ozs7Ozs7OztXOzs7O0k7Rzs7SSxjLCtCO0c7O0k7SztLOzs7STs7TSxVOzs7TyxVO087O00sVTsrQjs7OztNO00sYTtNOzs7NkIsTyw4QjtlOzs7OztLO0ssTTs7STt3QixvRDtJLE87Rzs7STs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7STtJOzs7TTtLO0ssTyxXO0k7STtLO0ssMEIsc0M7SSxPO0c7O0k7SSxrQjtJO0c7O0k7SSxrQjtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7O0ksTztHOztJO0k7STtJO0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7SSxNO0c7O0ksWTs7STtHOztJLFk7O0k7RztHO0k7STtJO0k7STtJO0k7STtJOztJO0ssRztNLE07YTtNLE07SyxnRDs7OztPLFk7Ozs7Uzs7Ozs7Ozs7Ozs7UTs7Ozs7TyxNOzs7SztLOzs7OzRCOzs7Rzs7STtlO0ksVztJLE87Rzs7SSxlO0k7SztNLE07TSxPOzs7Ozs7OztJLGE7STtJO0c7Rzs7SSxPOztHOztJOzs7TyxNOzs7OztLO3lCLE8sOEI7TSxPO0s7Ozs7O0ssMEI7SyxPOztHOztJLGdCOztLLDBCO0ssTzs7Rzs7SSxxQzt5QztJLG9CO0k7STtHOztJO0ssUztLLE87SyxRO2tDLE87SSxXO0ksb0I7STtJO0c7Rzs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsMEI7UyxPOzs7OzswQjs7OztVOztVOztVOztVOztTOzswQjs7Ozs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2EsVTthLG9CO2E7YTtZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O1EsMEI7USxPOzs7UTs7UTs7UTs7Ozs7Ozs7O1U7O1U7O1U7O1U7O1U7O1M7OztTOztTOztTOztTOztROzt5Qjs7OztTOztTOztTOztTOztVLE87VSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7O1M7OztROzs7TTtPLFE7Tzs7Ozs7O3dCOzs7O1EsTzs7Ozs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7Ozs7Uzs7OztTLE87Ozs7OztTLE87Ozs7OztTLE87Ozs7OztTLE87Ozs7OztTLE87Ozs7Ozs7Ozs7O1M7O1M7O1M7O1M7O1MsYzt1QjtTOztVLE87VSxzQjtTLE87OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOzs7Ozs7Uzs7VSxzQjtTLE87Ozs7Ozs7Ozs7Ozs7MEM7Uzs7VSxPO1UsTzs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Uzs7Ozs7O1UsYzs7Ozs7O1U7O1csc0I7VSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCOztROztROztRLE87O1E7O1E7Ozs7Ozs7Ozs7OztRO1E7Ozs7O2tCO2tCOzs7O1E7UTs7Ozs7a0I7a0I7a0I7Ozs7UTs7UTs7OztJLGU7ZTs7SSxvQjtJLE87Rzs7STs7OztJOztPOztJLEc7SyxJLFM7O007O08sTztPLFc7TyxPO00sVztNLE07O0s7TSxNOzs7O0s7TTtPO1E7O1c7O1c7VTtRLE87OztNO087TyxlO087Ozs7Ozs7O007O087bUQ7TztPLE87TSxXO007TSxNOztLOzs7Ozs7Ozt3QixxRDtpQjs7Szs7TTs7O1MsYztTOztVLGE7VSxZO1MsTzs7aUI7O0s7SztJO0k7STtLLFE7SyxHOzs7Tzs7O1EsUTs7Ozs7Ozs7O3FCOzs7UztVLE87aUI7Ozs7O087Ozs7OztVLEksYzs7OztZLE07OztxQjs7OztVO1csSTs7VztZOzs7Ozs7VTtXLE07Ozs7Ozs7TztRLE07O087USxPO1EsTzs7Ozs7Ozs7Tzs7Ozs7Ozs7Ozs7VTtVO1M7TTs7Ozs7OztJLFc7O0ksVzs7O0c7O0k7STtLLE07SyxNO0ksTztHO0c7O0k7SztLLE07SyxNO0ksTztHO0c7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7NEIsNEI7TSxNO1k7TTs7Ozs7Ozs7UyxtQjs7UyxPO1E7WTs7O0ksUTtJLFU7STs7Ozs7Ozs7TTtNO007TTs7TyxVOzs7SztLOzs4Qjs7O1E7UTtROzs7Uzs7VSxVOzs7Ozs7Ozs7UTs7Ozs7OztpQjtTLE07Ozs7O1E7O1U7ZTs7VztTOztXO2dCO1U7OztlOzs7O1UsYzs7OztXOztVOzthO1UsTTs7Ozs7Ozs7O1E7O1MsTTs7OztROztTLE07Ozs7O0k7Ozs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Rzs7STtJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0IsK0M7O0ksOEI7Rzs7STtHOztJO0c7O0k7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O3lCLFM7SSxpQjtJOzs7O0c7O0k7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STs7O1k7Rzs7SSx3QztHOztJO0c7O0k7O0s7Tzs7STs7O1k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7SSxXO0ksVztHOztHO0k7O0c7RztJOztHO0c7STs7RztHO0k7O0c7RztJOzs7STs7O1k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7Rzs7OzsyQixTOzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RzsyQiw2Qzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJLE07O0c7Rzs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7OztLLGE7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOztTLE07O1E7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0ssc0Q7O007OztpQyxpQzs7bUM7TTtPO2tCOztNO2tDLFcsYztNOzs7Uyx1QixrQixpQjs7O1M7O2tCO2tCLHVCO2lCOzs7UywyQixZLGlCOzs7UywyQixZLGlCOzs7Uzs2QixvQiwwQjs7O1MsdUIsWSwwQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7cUI7Uzs7O1U7VSxzQjtVLE87Uzs7O1M7OzZCLG9CLDBCOzs7Uzs7a0I7MkQ7a0I7aUI7OztTOztrQjtrQjtrQixPO2lCO29DOztLO0s7STtJLE87RzswQixtQjs0QixtQjs7Ryx1QjtHLEk7RywwQjtHO0cseUI7RztHLHNCO0c7Ryw2QjtHO0csNEI7RztHLDRCO0c7RywyQjtHO0csaUM7RztHLGtDO0c7RyxnQztHO0csd0I7RztHLHdCO0c7Ryx3QjtHO0cscUI7b0Isa0Q7O0cseUI7RztHLHdCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCO0c7Ryx3Qjs0QixPLGtDOztJLE87O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7RzttQyw4Qjs7RywwQjtHO0csNkI7RztHLHVCO0c7RyxtQztHO0csOEM7RztHLHlDOztJO0k7SSxPO0c7O0k7STtJO0ksTztHOztHLHVDO3NCLG1DOztHLDhCO3FDLDhCOztHLHVCOztHLGlCO0c7RyxxQjtHLEk7Ryx3QjtHO0csaUI7a0Isa0M7O0ksZTtJLE87RztxQixrRDt3QixrQzs7NEIsdUM7NEIsaUM7O0csOEI7d0IsbUM7d0Isa0M7O0csaUI7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7RztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csd0I7RztHLDRCO3lCLFM7O0k7SSxNO0c7O0k7SSxNO0c7MEIsUzs7RyxzQjs4Qiw4Qjs7Ryw4Qjs7STtLLE07Ozs7Rzs7Ryx5Qjs7STtJO0c7O0csMEI7O0ksTztHOzBCLG1EO3FCLE8saUQ7dUIsUzswQixTOzBCLFM7NkIsNEI7b0Isa0M7cUIsa0Q7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxtQixNO0k7SSxPO0c7O0k7Ozs7STtJOztLLE07SyxNO0ssUztLLE07SyxXO0ssTTtLLE07O0ssUztJO0ksTztHOztJO0k7STs7SyxNO0ssTTtJLE87Rzs7O0k7SyxZLGtCOzs7O2dCO0s7Ozs7MkI7Ozs7O0k7SSxVO0k7SztNLE07WTs7O0k7STtJO0c7O0ksRyxtQztJLGU7STtJO0c7O0k7SyxVO0s7OztjO2MsTzthO0k7OztLOztNLE0sVztLLGU7SztNLE07Vzs7Ozs7O0s7TSxNO29COzs7O0s7TSwwQjtNOzs7d0IsTyx3QjtJLE87Rzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCLGdDO0c7K0IsZ0M7O0k7SyxZO0s7TTtPLE87Ozs7OztNLEksSSxPOzs7OztPO087OztnQjs7O0s7Szs7Ozs7O0s7Szs7Rzs7SSwrQztLO0k7STtHOzs7STtLO00sTzsyQixPLHFDO00sUTtNLFE7TSxPOzJCLE8sbUM7TSxTOztLO2tCLE07Ozs7Ozs7Ozs7O1E7O1M7UyxHO1MsRztTLEk7Ozs7Ozs7Ozs7Szs7TTtROztXO00sVztNLFc7TSxXO007OztTLE8scUI7UTtNLGE7TTs7O1MsTyxxQjtRO00sWTtLOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7TztROzt3QjtNOzs7OztPLE87a0I7O0s7Ozs7NEI7Ozs7O0k7SyxHOzs7OzBCLHlCO2M7Ozs7O0ksSztLLE87O0k7O0ssVTtNLEk7O00sSTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7OztNLDBCO00sSTs7O0c7O0k7O0ssaUI7Szs7O0k7O0s7Szs7O0k7O0s7Ozs7TTtLO0k7O0s7STtJO0k7STs7STtJLE87Rzs7SSxPO0c7NEIsUSw0Qjs7O0k7O0k7SyxpQjtLO007TztTOztPLE87Ozs7VTtXLFM7VyxPO1U7VSxVO1UsTztTO08sYTtPLEk7TTtNOzs7O007TSxNOztLOzs7O0s7O007TTs7O0ssUztLO007O00sYTtNO007Tzs7UTtTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YyxjOztjOzs7Ozs7Ozs7Ozs7OzthOztjLE87Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7Ozs7OztNO007OztLOztHOzs7Ozs7OztLO0s7Ozs7Uzs7VSxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLDRCOztRO0s7SyxPOzs7SztNLGE7O00sNEI7O1E7TSxPO0s7a0I7O0k7SyxXO0ssbUI7OztpQjsyQjs7OEI7STtLLHFCOztLLFc7OztLLE8scUI7STtJLEc7Ozs7O0s7O007Ozs7SSwwQjtJO0s7Tzs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0s7TSxPO00sTztLLE87STs7Ozs7Ozs7O0c7O0k7Ozs7OztHOztJOztJOztLLE87SyxPO0ssTztJOztJO0s7O1E7Vzs7Szs7aUQsZTtHOztJOztLLE87SSxHO0s7STs7SyxPO0ksTzs7O0c7OztLOzs7TSxJO0ssRztNO08sTztPLDRCO00sTzs7SyxXO0ssTztJO0ksTztHOztHO0k7OztHO0k7OztJOzs7SztNOzs7Ozs7Ozs7SztNLE87TSxPO00sVTtLLEc7TTtjO007O0ssUzs7TTtPLE87Tyw0Qjs7O1UsVztVLE87UztNOztLO00sTztNLE87O007Ozs7O0s7Ozs7SztNOzs7Uzs7O0s7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0s7MkI7O0k7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7Ozs7OzBCLGtDOzs7Ozs7OzBCLDZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7Ozs7OzZCOzs7Ozs7OzZCOzs7d0IsYzs7Ozs7NkI7Ozt5QixtQjs7Ozs7NkI7Ozt5QixtQjs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs4Qjs7O0s7Ozs7Ozs7Ozs7Ozs7OztLO007TSxVO3lCLGlCO00sc0I7SztLLGU7SztLOztNOztPLEk7Tzs7O1U7Ozs7O1csTztXLE87VyxVO1c7VztVOztVO1M7TyxVOzs7VTs7Ozs7VTtXOztVOztXO1ksRzthO1ksVztZOztXLEc7WTtXLFc7VztVO1U7OztXLFc7VyxTOzs7OztVO1M7TTtNOzs7Ozs7Ozs7O1c7WSxROzs7WTs7O1k7YSxPO2E7O1c7Vzs7Ozs7cUI7cUI7O1U7Tzs7O087YztPLFc7TztROztxQyx3QztPO087Ozs7VztXLE87VTtRLGM7OztXO1c7OztZOzs7YTtZLE87O1c7VztXO1csTztVO087Tzs7TTs7O00sVztNOztLO0s7Ozs7K0M7SztLOztHOztJO0ksTztHOztJO007O0s7Szs7STs7O2U7SztLLGM7SyxPO0s7STtJO0ksTztHOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLE8sc0M7bUIsTyx5QzttQixPLHNDO3FCLE8sd0M7OztJO0ksa0I7STtJO0ssTTtLO087O0ssTzs7Ozs7Ozs7OztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7OztLO00sTSxXO007UTtVO007Ozs7O1UsVTtVLE87bUI7Ozs7UztNOztLO0s7SztLO0k7SSxPLFc7Rzs7STtLLFM7SyxNO0ssSztJLE87O0c7OztLO0ssRyw2QjtLLEk7O0k7SSxPLFc7Rzs7STtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVzs7SztLLE87STtJLE8sVztHOzs7O007O08sVTtPLE87TTtNLE87Szs7TTtNLEs7TztPLEssNkI7O00sTztLO0ssTztJO0ksTyxXO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHZ0dqakJNOzs7O0lBQUE7SUFzSE07SUFNWjQ0SDtJQUVBQztJQTVCTyxrQkEwQlBELFNBRUFDO0lBNEJKO0dBRVE7R0FFZSxTQUFuQkMsVyxVO0dBUEE7SUFBQTs7T0FPQUE7Ozs7SUFTMEI7SUFvQ1g7SUFsQkE7SUFpQ047Ozs7O0U7Ozs7Ozs7Ozs7OztHRXhNRDs7Ozs7SUFBQTtZQW1DUkMsSUFBS0MsR0FBU0MsR0FBSSxPQUFKQSxLQUFURCxJQUFBQSxJQUFTQyxFQUEyQjtZQUV6Q0MsSUFBS0YsR0FBU0MsR0FBSSxPQUFiRCxLQUFTQyxJQUFURCxJQUFTQyxFQUEyQjtHQW5CTjtJQUFBLHFDQWlCbkNGLEtBRUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTUFDO0lBSFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1ZBOzs7Ozs7WUFNQUMsUUFBT0osR0FBV0MsR0FBWSxPQUF2QkQsTUFBV0MsVUFBMEI7R0FIcEM7SUFBQTs7Ozs7OztPQUdSRztJQWRBQztJQUVBQzs7OERBRkFELE9BRUFDOzs7RTs7Ozs7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QyxTQUNBQzs7O09BalFGbkY7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7O0k7Ozs7Ozs7Szs7STtHO0csVzs4QixPLG1DOztJLFc7SSxPLCtCO0c7eUIsdUIsVyxTOztJLEksSTs7SyxXO0sscUI7SztrQjs7O0c7O0ksSSxJOztLLEksTyx1QixPO0sscUI7SztrQjs7O0c7O0k7OztNLFc7Z0I7TyxNOzttQixjOzs7Ozs7NEI7OztHOztJOztLLFE7Ozs7O1EsZTtPOzs7OztLOzs7O0c7O0k7STs7TztPOzs7Ozs7Ozs7Ozs7OztPO007O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEIsTzs7UTs7O1EsTzs7USxzQztRLFE7Ozs7UTs7OztROzs7Z0I7OztHOztJO0k7Ozs7Ozs7Ozs7OzRCOzs7USxPOzs0Qjs7O1E7OztRLGtCLE87O1E7O1Esc0M7UTs7Ozs7Ozs7Ozs7O0c7O0k7STs7Ozs7O1MsbUM7Uzs7UyxtQztTOztTLGtCLE87O1M7Ozs7Rzt5Qjs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHLEksSTs7SSxzQztJOzs7O0c7SSxrQjs7OztJO0ssVztLO0s7SztLO0s7O0s7TTs7O1EsWTtROzs7Ozs7O0ssSTtLOzs7STs7SztLO0s7STs7SztLO0s7STs7SyxJLFUsd0M7Ozs7O2lCOztNOztJOztLLHFCOztpQjs7SztJOztLOzs7Uzs7UztpQjs7Ozs7UTs7OztRLGtCLFE7d0I7Ozs7a0Q7dUM7UTtTLFE7UztTO1M7Uzs7Ozs7Ozs7O3VCOzs7OztROzs7UztTO1E7MkM7OztRO3VCOzs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7Ozs7OztpQix1QjtpQjtpQjs7Ozs7Ozs7O1M7Ozs7O1Esa0M7UTtRLEksNkI7UTs7UTtROztROztTO1M7dUI7UTt1QjtROztROztROztTO1M7UTt5QjtRO3lCO1E7O1E7O1Esb0I7UTs7UTs7O1E7UTtRO3VCOzs7O1E7dUI7OztJOztLLGtCO0s7SztJO0k7STtJLEksbUI7SSxHOzs7SyxRO0ssaUIsTyx3QjtpQzs7SSxJLGUsb0M7O0s7SztJO0k7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7O1UsSSxtQjs7VSxJLG1COzs7Ozs7OztTOzs7UTs7Ozs7O007TSxlOztJOztLLEk7SztxQjtnQix3QyxxQjtNLFM7TTs7O2dCO21CO08sUzs7OztTLE87Uzs7Ozs7TyxJOzs7TTtNLEk7O0k7SSxJOzs7YztHO3NCLDRCO2dDLDRCOztJOztLLE07SztLO0s7Ozs7TSxJLEksdUI7Ozs7OztTOzs7Ozs7UTtROzs7O087OztNOzs7OztJLE87Rzs2QiwwQjt1QywwQjt1QixXO0csNkI7O0ksVTtJOztHOztJLFU7STs7Rzs7SSxVO0k7NkIsTTtJO0c7O0ksVTtJOzZCLE07STtHOztJO0s7Tzs7O0s7SyxlLE07Szs7SSxPO0c7O0k7SztPOzs7SztNO007SyxlLE07Szs7SSxPO0c7O0k7SztPOzs7SztNO007TTtLLGEsTTtLLE87O0ksTztHO21DLDBCOzZCLG9CO2dDLDZCOztJOztPO0ksTztHOztJO0s7TTs7Z0I7TTtNLE07Szs7OzsyQjs7O0c7O0ksSSwyQzs7OzJCOzs7Rzs7STtJOztROzs7TTs7Tzs7UTtRLFk7O1E7Ozs7WTs7Ozs7Ozs7O0ssVTtLLE87O0c7O0k7aUM7Rzs7STtpQztHOztJO2dCOzs7Ozs7OztHOztJO0s7Ozs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOzhCLG9DOztJLEcsZ0M7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHQzVFVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHUnVEO0lBSFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1JBOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHRWtCTjs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7WUFFSUMsZUFBZ0JDLFNBQVNDLEtBQUtDLE9BQU1DLEtBQUlDO0lBQzFDLEdBRGtCSjtLQUlBO01BQVRLLElBSlNMO01BSUEsTUFBQSwyQkFKb0JHO01BQ2xDRyxZQUdVLHNCQUFMRDs7U0FITEMsWUFEa0NIO0lBTXRDO0tBQUE7T0FOZ0NEOzs7OztvRUFBQUE7OztLQVMxQixNQUFBLCtDQVRxQkQ7S0FNdkJNLFdBQ1Esc0JBUDhCSDtJQXFCMUMsY0FwQklFLFdBS0FDO0dBZWE7WUFPZkMsVUFBV1AsS0FBS1EsV0FBV0MsTUFBTVYsU0FBUVcsV0FBVUM7SUFDOUMsY0FBQSxXQURvQ0QsV0FBVUM7O0tBRTdDLE1BQUE7YUE5Qk5iO2VBNEJpQ0M7ZUFBdEJDO2VBQWdCUzs7b0NBSEcsV0FHZEQsV0FBbUNHOztJQUM5QztHQUNpRDtHQUVLLElBQTNEQztZQUNBQyxrQkFBa0JDLEdBRGxCRixZQUNrQkUsWUFBZTtZQWNqQ0Msa0JBQW1CUCxXQUFXUSxZQUFZQyxPQUFPQyxVQUFRQztJQUMzRCxHQUQ0Q0Y7U0FJbkNILElBSm1DRyxVQUN4Q0csT0FHVSxXQUFMTixHQUprREssT0FBUkQ7O1NBQy9DRSxhQUVRLFdBSG9CSixZQUEyQkcsT0FBUkQ7SUFNbkQsR0FMSUUsTUFNQztJQWxCSztLQUFOQyxNQUFNLFdBV1diLFdBQXNDVztLQVZ2REcsU0FBUyxXQVVRZCxXQUE4QlU7S0FUbkQsUUFORU47O0tBU1k7TUFEUFc7TUFDREMsT0FBUSw0QkFKVkY7TUFLRUcsS0FBUSw0QkFOVko7S0FPRixXQUhLRSxNQUNEQyxNQUNBQzs7SUFHTiwwQkFSSUgsUUFEQUQ7R0FtQmlEO1lBU25ESyxRQUFTMUIsS0FBS1EsV0FBV1EsWUFBWVAsTUFBTVYsU0FBU2tCLE9BQU1VLElBQUdDO0lBQ3pELFlBbEJKYixrQkFpQmNQLFdBQVdRLFlBQTJCQyxPQUFNVSxJQUFHQztrQ0FFcEQ7NEJBVG9DQyxtQkFBSkM7SUFVakIsTUFBQTtZQW5FeEJoQztjQWdFMkNDO2NBQWxDQztjQUE0QlM7O2tCQVBJcUIsbUJBQUlEOztHQVVvQjtZQVFqREU7SUFBYS9CLEtBQUtRLFdBQVdRLFlBQVlQLE1BQU1WLFNBQVNrQixPQUFPSyxRQUFRRDtJQUNuRixZQTdCSk4sa0JBNEJrQ1AsV0FBV1EsWUFBMkJDLE9BQU9LLFFBQVFEO2tDQUU5RTs0QkFSNENGLG9CQUFSRDtJQVNoQixNQUFBO1lBOUU3QnBCO2NBMkUrREM7Y0FBbENDO2NBQTRCUzs7O2dDQU5aUztvQ0FBUUM7O0dBUzBCOzs7VUFsRC9FWixXQW9DQW1CLFNBV2dCSyxhQTFDaEJsQjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MzRE07OztJQVNKbUI7Ozs7OztJQVRBQztJQVVBQyxrQkFEQUY7WUFFQUcsSUFBSUMsS0FESkYsaUJBQ0lFLGNBQXdCO1lBQzVCQyxhQUZBSCxpQkFEQUYsaUJBRzhCO0dBSzFCLElBQUpNO1lBRUFDLGVBRkFELE9BRWtCLDJCQUZsQkEsZ0JBRTRCO1lBbUM1QkUsUUFBUUMsSUFBR0MsSUFBSyxnQ0FBUkQsT0FBR0MsT0FBc0M7WUFJakRDLG9CQUFvQkw7SUFDdEIsSUFBSUYsTUFEa0JFLE1BRWxCTSxNQUFKLDhCQURJUixNQUVTUztJQUNYO1NBRFdBLGFBRFRELEtBT0c7S0FIQSxHQUFBLGtCQUFBLDhCQUxIUixLQUVTUztNQUlKO2NBQUs7bUNBTlZULEtBRVNTLFlBRFRELE1BQ1NDO0tBS0osSUFMSUMsTUFBQUQsV0FBQUEsSUFBQUM7O0dBUVA7WUFHSkMsZUFBZVQsR0FBRVU7SUFBWTtZQUFkVjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFFVTtZQUFGVjtHQUFrQztPQVEvQyxJQUFBLE1BQUEsc0NBREZXOzs7O1FBQUFBOztHQUlKO0lBTEVDLHNCQUtGLGtCQUpJRDtJQVVGRSxrQkFBcUQ7WUFFckRDLGVBQWdCQztJQUNsQjtLQUFJLFVBQUEsOEJBSEZGLGlCQUVnQkU7S0FDZDs7OzsyQkFDVzs7O0dBQUU7WUFHZkMsV0FBWUQ7SUFBbUIsVUFML0JELGVBS1lDO0lBQW1CLE9BQUE7R0FBeUI7T0FNaEQscUNBQ1IsSUFBQSxTQUxBRTs7OztRQUFBQTs7WUFVQUMsZ0JBQWMsT0FWZEQsb0NBVXNEO1lBRXZDRTtJQUNHQyxNQUNBQyxNQUNBQyxVQUNBQyxnQkFDQUMsTUFDQUMsVUFDQUMsUUFDRGhCO0lBRW5CLGVBWkVRLGFBYVc7UUFFUEgsVUFqSEZuQixnQkFjQStCLEtBUEEzQjtPQU9BMkI7S0FBOEI7TUFBQSxNQUFBLDJCQUE5QkE7Z0JBQVc7OztJQXhCWGhDO0lBNkhBO0tBREVpQzs7UUE1SEZqQztRQWdIZ0IwQjtRQUVBRTtRQUhBSDtRQUVBRTtRQUVBRTtRQUNBQztRQUNBQztRQUNEaEI7O0tBbUJtQixVQWJoQ2tCLE9BakNKZCxlQWdDSUM7SUFjZ0MsT0FBQSw4QkFoRHBDRixpQkFrQ0lFO0dBY2tFO1lBR3ZEYyxpQkFDR1Qsc0NBT0RVO0lBRW5CLGVBMUNFWixhQTJDVztJQXRJVGxCLFdBNEhnQm9CLE1BNUhoQnBCO0lBeUlGLElBRUcsV0FSYzhCLE9BU2QsVUExSUQ3QixZQTBJQztVQUVBOEI7U0FBQUMseUJBQUFEO0tBNUlEOUI7S0E4SUMsTUFBQSw0QkFGQStCOztHQUVTOzs7O1dBdEpWbkMsS0FDQUU7V0E0REFVLGdCQWxCQVAsU0FJQUc7T0FvQkZPO09Ba0JBSTtPQWNlRztPQThCQVU7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MxSVA7Ozs7O0lBQVJJLFFBQVE7O1lBQ1JDLEtBQUtDLEdBQ1AsT0FBRywwQkFESUEsR0FETEYsU0FBQUEsUUFDS0UsRUFJSjtHQUVTLElBQVZDLGdDQUVBQztZQUVBQyxVQUFVSCxHQUFJLE9BQUpBLEVBQUs7WUFDZkksY0FBY0o7SUFBSSxpQ0FBSkEsV0FBdUMsT0FYckRELEtBV2NDO0lBQUksTUFBQTtHQUF5QztPQUczREs7WUFDQUMsV0FBV04sR0FBSSxPQWZmRCxLQWVvQiw4QkFBVEMsSUFBNEI7WUFFdkNPLE9BQU9QLEdBQUksT0FqQlhELEtBaUJnQiw2QkFBVEMsSUFBMEI7WUFFakNRLE1BQU1SLEdBQUksT0FuQlZELEtBbUJlLDZCQUFUQyxJQUF5QjtZQUUvQlMsU0FBU0QsT0FBT0UsS0FBS0M7SUFBTSxPQXJCM0JaLEtBcUJnQyw2QkFBdkJTLE9BQU9FLEtBQUtDO0dBQTBDOzs7O09BZi9EVjtPQUVBQztPQUVBQztPQUNBQztPQVhBTDtPQWNBTTtPQUNBQztPQUVBQztPQUVBQztPQUVBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ09GRztJQW1FQUM7SUFtT0VDOzs7Ozs7Ozs7Ozs7OztJQ3JUSUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lESEpDLFVBQVVDLEtBQUlDO2tCQUNLQztLQUFLOzs7OzswQkFBMEJDO1dBQUEsT0FBQSxXQ0U5Q1YsV0RGOENVO1VBQWlCOzs7TUFBbEMsT0FBQSxpQ0FEdkJILEtBQ1NFO0tBQWMsT0FBQTtJQUF5QztJQUE1RSxPQUFBLGlDQURnQkQ7R0FDaUU7WUFHL0VHLGFBQWFDLE9BQU1DLEdBQUVDO0lBQ3ZCLEdBRHFCRDtRQUFFQyxPQUlSQyxJQUpRRCxNQUloQkUsSUFKY0gsTUFJRCxPQUFBLFdBSkxELE9BSVJJLEdBQVFEOztjQUpRRCxHQUdQO0lBRGlCO0dBRUo7WUE4QnpCRyxPQUFPVixLQUFLVyxJQUFHQztJQUNqQjtLQUFnQyxJQUFjQyxjQUFSQztLQUFrQixPQUFBLDRCQUFsQkEsSUFBUUQ7SUFBK0I7SUFBaEUsSUFBVEUsU0FBUywwQkFESUg7T0FDYkc7S0FKeUI7TUFBWEMsT0FJZEQ7Z0JBQUFBO01BSklFO01BQUxDO01BQTBCLGdCQUExQkEsWUFBS0Q7TUFWS0U7TUFBS0MsV0FVZkY7TUFWeUJHLGFBVXBCSjtjQUFVRDs7O2dDQVRKLDBCQURERzs7OztPQUVPRzs7T0FBVkM7T0FBTEM7TUFDVSxHQUFBLDRCQUhHSixVQUViSTtPQUdJLEtBQUEsV0FRS2IsSUFiY1UsWUFFbEJFO3VDQUFMQzs7O21CQUFlRjs7O09BSU47UUFBQSxnQkFKVEUsWUFBS0QsZUFGR0o7UUFBQUE7UUFBS0MsV0FFYkk7UUFGdUJILGFBRWxCRTtnQkFBVUQ7Ozs7O2dDQWNkRyx1QkFBVSxXQUFWQTtRQUNNdkI7SUFDVixPQUFBLFdBM0NGSCxVQXNDU0MsV0FJR0U7R0FDdUU7WUFJakZ3QixJQUFJQyxHQUFHQzs7S0FBb0MsSUFBU0MsY0FBSEM7S0FBUyxXQUFUQSxHQUFZLFdBQXRERixHQUE2Q0M7SUFBYTtJQUF0RCxXQUFXLDBCQUFsQkY7R0FBK0Q7Ozs7Ozs7WUFtQm5FSSxPQUFPSixHQUFJLE9BQUpBLEVBQUs7WUFDWkssT0FBT0wsR0FBSSxPQUFKQSxFQUFLO1lBQ1pNLFlBQVVOO0lBQUksV0FBQSxtQkFBSkE7SUFBSSxPQUFBO0dBQTZCO1lBQzNDTyxZQUFVaEM7SUFBSSxPQUFBLHVCQUFBLHNCQUFKQTtHQUFxQztZQUMvQ2lDLEtBQUtDLEdBQUksT0FBTyxtQkFBQSxXQ25FZHZDLGFEbUVHdUMsSUFBNkI7WUFDbENDLE1BQUk1QixHQUFJLE9BQU8sbUJBQUEseUJBQVhBLElBQTRCO1lBQ2hDNkIsS0FBSzdCLEdBQUVEO0lBQUksSUFBc0IsT0FBQSxzQkFBMUJBLElBQVksT0FBQSxzQkFBZEM7SUFBYSxPQUFBLG1CQUFBO0dBQTJCO1lBQzdDOEIsS0FBS0M7SUFBa0MsV0FBQSwwQkFBbENBO0lBQVcsT0FBQSxtQkFBQTtHQUFpRDtZQUNqRUMsWUFBWXZDLEdBQUVzQztJQUFnQixXQUFBLHNCQUQ5QkQsS0FDY0M7SUFBVyxPQUFBLG1CQUFBLHNCQUFidEM7R0FBcUM7WUFXckR3QyxZQUFLQyxVQUFMQztJQUFBOztjQUFBQTs7Y0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQUFBLE9BQUE7b0RBQUF2RCxrQkFBQXVEOzthQUFBLE9BQUE7bURBQUF2RCxrQkFBQXVEOztZQUFBLE9BQUE7a0RBQUF2RCxrQkFBQXVEOztXQUFBLE9BQUE7aURBQUF2RCxrQkFBQXVEOztVQUFBLE9BQUE7Z0RBQUF2RCxrQkFBQXVEOztTQUFBLE9BQUE7K0NBQUF2RCxrQkFBQXVEOztRQUFBLE9BQUE7OENBQUF2RCxrQkFBQXVEOztPQUFBLE9BQUE7NkNBQUF2RCxrQkFBQXVEOztNQUFBLE9BQUE7NENBQUF2RCxrQkFBQXVEOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQXZELGtCQUFBdUQ7OztNQUFBLE9BQUE7NENBQUF2RCxrQkFBQXVEOztNQUFBQztpQ0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUNBQUFBO3lDQUFBQTt5Q0FBQUE7O3lDQUFBQTt5Q0FBQUE7eUNBQUFBO3lDQUFBQTt1Q0FBQUE7Ozs7MENBQUFBO3dDQUFBQTt3Q0FBQUE7d0NBQUFBO3dDQUFBQTt3Q0FBQUE7d0NBQUFBO3dDQUFBQTtzQ0FBQUE7OztpQkFBQUM7YUFBQSxHQUFBQTt5QkFBQUE7O2VBQUE7Z0JBQUFDO2dCQUFBQyxXQUFBRjtnQkFBQUcsV0FBQSxXQ2xGTXZELFdEa0ZOc0Q7Z0JBQUFFLFdBQUEsV0FBS1AsVUFBTEk7ZUFBQSxXQUFBRSxVQUFBQzs7O2FBQUEsT0FBQTs7c0JBQUE3RDtzQkFBQXdEO3NCQUFBRDs7Z0JBQUFPO1lBQUEsR0FBQUE7d0JBQUFBOztjQUFBO2VBQUFDO2VBQUFDLFdBQUFGO2VBQUFHLFdBQUEsV0FBS1gsVUFBTFU7ZUFBQUUsV0FBQSxzQkFBS1osVUFBTFM7Y0FBQSxXQUFBRSxVQUFBQzs7O1lBQUEsT0FBQTs7cUJBQUFsRTtxQkFBQXdEO3FCQUFBRDs7ZUFBQVk7V0FBQSxHQUFBQTt1QkFBQUE7O2FBQUE7Y0FBQUM7Y0FBQUMsV0FBQUY7Y0FBQUcsV0FBQSxXQ2xGTWpFLFdEa0ZOZ0U7Y0FBQUUsV0FBQSxzQkFBS2pCLFVBQUxjO2FBQUEsV0FBQUUsVUFBQUM7OztXQUFBLE9BQUE7O29CQUFBdkU7b0JBQUF3RDtvQkFBQUQ7O2NBQUFpQjthQUFBQSxtQkFBQUE7V0FPb0I7WUExRXBCQyxXQW1FQUQ7WUFuRUtFLFdBMEVlLHNCQVBmcEI7b0JBbkVMbUI7O2FBbUVBRTtlQW5FQTsrQ0FBQTVFLGtCQUFBMEU7O1lBQUE7YUFBQUcsa0JBQUFIO2FBQWNJO2FBQWRDO2FBQUFDOzs7Ozs7Ozs7MkJBQUFIO2VBQUE7O29CQUFBSTt5QkFBQUE7MkJBQUFBOzs7O29CQUFBQywyQkFBQUM7bUJBQUFELG1CQUFBQTtvQkFBQUU7d0NBQUFEOztrQkFBQUgsbUJBQUFHLGdCQUFBSDs7d0JBQWNGO2lCQUFkQyx3QkFBQUksZ0JBQUFKOztvQkFBQUc7cUJBQUFBO21CQUFBLE1BQUE7O3NCQUFBRyxRQUFBSCxvQkFBQUksaUJBQUFEOzs7O21CQUFBQztxQkFBQTtxREFBQXRGLGtCQUFBMEU7aUJBQWM7OzZCQUFVYTtxQkFBRCxTQUFDQTtpQ0FBQUE7Ozs7d0JBQUE7eUJBQUFDO3lCQUFBQzt5QkFBQUMsV0FBQSxzQkFBQUQ7eUJBQUFFLFdBQUEsV0FBbkJoQixVQUFtQmE7d0JBQUEsV0FBQUUsVUFBQUM7Ozs7cUJBQUEsT0FBQTsyREFBeEIzRixxQkFBd0J1RjtvQkFBaUI7a0JBQTNCSyxhQUFBLDRCQUFkTjtpQkFBY1Isb0JBQUFjOzs0QkFBZFI7Ozs7OzthQUFBOzZDQUFBcEYsa0JBQUFpRjs7ZUFBQUY7O2NBbUVBSDtnQkFuRUE7O2tCQUFBNUU7a0JBQUErRTtrQkFBQUw7b0JBQUFNOztjQW1FQUo7Z0JBbkVBOztrQkFBQTVFO2tCQUFBZ0Y7a0JBQUFOOzt5QkFBY0k7O2tCQUFBZSx1QkFtRWRqQixlQW5FY2lCOzs7ZUFtRWRqQjtpQkFuRUE7O21CQUFBNUU7bUJBQUEwRTtpQ0FBY0k7OztXQW1FZCxXQUFBRjs7VUFBQSxPQUFBOzttQkFBQTNFO21CQUFBd0Q7bUJBQUFEOzthQUFBc0M7U0FBQSxHQUFBQTtxQkFBQUE7O1dBQUE7WUFBQUM7WUFBQUMsV0FBQUY7WUFBQUcsV0FBQSxzQkFBQUQ7WUFBQUUsV0FBQSxzQkFBSzNDLFVBQUx3QztXQUFBLFdBQUFFLFVBQUFDOzs7U0FBQSxPQUFBOztrQkFBQWpHO2tCQUFBd0Q7a0JBQUFEOztZQUFBMkM7V0FBQUEsbUJBQUFBO1NBQUE7VUFBQUMsV0FBQUQ7O3FCQUllRTthQUFELFNBQUNBO3lCQUFBQTs7OztnQkFBQTtpQkFBQUM7aUJBQUFDO2lCQUFBQyxXQUFBLHNCQUFBRDtpQkFBQUUsV0FBQSxXQUpWbEQsVUFJVStDO2dCQUFBLFdBQUFFLFVBQUFDOzs7O2FBQUEsT0FBQTttREFKZnhHLHFCQUllb0c7WUFBaUI7VUFKaENLLFdBQUEsNEJBQUFOO1NBQUEsV0FBQU07O1FBQUEsT0FBQTs7aUJBQUF6RztpQkFBQXdEO2lCQUFBRDs7V0FBQW1EO1VBQUFBLG1CQUFBQTtRQUFBO1NBQUFDLFdBQUFEO1NBQUFFLFdBQUEsc0JBQUt0RCxVQUFMcUQ7UUFBQSxXQUFBQzs7T0FBQSxPQUFBOztnQkFBQTVHO2dCQUFBd0Q7Z0JBQUFEOztVQUFBc0Q7U0FBQUEsbUJBQUFBO09BQUE7UUFBQUMsV0FBQUQ7UUFBQUUsV0FBQSxzQkFBQUQ7T0FBQSxXQUFBQzs7TUFBQSxPQUFBOztlQUFBL0c7ZUFBQXdEO2VBQUFEOztTQUFBeUQ7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7O2tCQUtnQkU7VUFBRCxTQUFDQTtzQkFBQUE7Ozs7YUFBQTtjQUFBQztjQUFBQztjQUFBQyxXQUFBLHNCQUFBRDtjQUFBRSxXQUFBLHNCQUxYaEUsVUFLVzZEO2FBQUEsV0FBQUUsVUFBQUM7Ozs7VUFBQSxPQUFBO2dEQUxoQnRILHFCQUtnQmtIO1NBQXNCO09BTHRDSyxXQUFBLDRCQUFBTjtNQUFBLFdBQUFNOztLQUFBLE9BQUE7O2NBQUF2SDtjQUFBd0Q7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQXZELGtCQUFBdUQ7R0FpQjBCO1lBakIxQmlFLFlBQUtDO0lBQUw7O09BQ0U7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQ25GSXRILGFEbUZKcUg7UUFBQUUsV0FBQSxXQURHSixVQUNIQztPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQyxXQUFBLFdDcEZJMUgsYURvRkp5SDtRQUFBRSxXQUFBLHNCQUZHUixVQUVISztPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQyxXQUFBLHNCQUhHVixVQUdIUztPQUFBLHdCQUFBQzs7T0FDQTtRQUFBQzs7OztZQUFhQztZQUFBQztZQUFBQyxpQ0FBQUQ7WUFBQUUsc0JBSlZmLFVBSVVZOzBCQUFBRSxjQUFBQzs7UUFBYkMsV0FBQSw0QkFBQUw7T0FBQSx3QkFBQUs7O09BQ0E7UUFBQUM7Ozs7WUFBY0M7WUFBQUM7WUFBQUMsaUNBQUFEO1lBQUFFLGlDQUxYckIsVUFLV2tCOzBCQUFBRSxjQUFBQzs7UUFBZEMsV0FBQSw0QkFBQUw7T0FBQSx3QkFBQUs7O09BeEVZO1FBMEVaQztRQTFFR0MsaUNBbUVBeEI7UUFuRVN5QixhQTBFWkY7UUExRUZHOzs7O1lBQXdCQztZQUFBQztZQUFBQyxpQ0FBQUQ7WUFBQUUsc0JBQW5CTixVQUFtQkc7MEJBQUFFLGNBQUFDOztRQUFWQyxVQUFBLDRCQUFBTjtRQUFkTyxrQ0FBY0QsZUFBZEw7UUEwRUVPLGVBMUVGRDtPQTBFRSx3QkFBQUM7O09BT0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQWRHcEMsVUFjSG1DO1FBQUFFLFdBQUEsc0JBZEdyQyxVQWNIa0M7T0FBQSx3QkFBQUUsY0FBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxzQkFBQUQ7UUFBQUUsV0FBQSxzQkFmR3pDLFVBZUhzQztPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQSxJQUFBQyxxQkFBQUMsV0FBQSxzQkFBQUQ7T0FBQSx3QkFBQUM7O0dBQ3dCO1lBRXRCQyxNQUFJakosR0FBR21CO0lBQ1QsT0FETW5COztXQUVTa0osTUFGVGxKLE1BRU0yQixJQUZOM0IsTUFFZSxXQUFUMkIsR0FBc0IsV0FGekJSLEdBRU0rSDs7V0FDSnJJLEtBSExiLE1BR0VQLElBSEZPO09BR1ksV0FBVlAsR0FBbUIsMEJBQWhCb0IsSUFIRk07O1dBSURaLE9BSkZQLE1BSVEsV0FBTSwwQkFBWk8sTUFKQ1k7O09BS0s7UUFBTFksSUFMSC9CO1FBS1E7O1dBQXNCLElBQVNBLGNBQUhQO1dBQVMsV0FBVEEsR0FBWSxXQUw3QzBCLEdBS29DbkI7VUFBYTtPQUE1QyxXQUFPLDBCQUFaK0I7O09BQ007UUFBTG9ILE1BTkpuSjtRQU1TOztXQUF1QixJQUFTYSxlQUFIcEI7V0FBVSxXQUFWQSxHQUFhLDBCQUFWb0IsSUFOdENNO1VBTStEO09BQXpELFdBQVEsMEJBQWJnSTs7V0FDS2pJLElBUFRsQjtPQU9jLFdBaEVsQmlCLElBZ0VhQyxrQkFBSyxPQUFBLHVCQVBYQzs7T0FRaUMsSUFBeEJpSSxNQVJacEosTUFRU3FKLE1BUlRySixNQVFvQyxPQUFBLDBCQUF4Qm9KLEtBUlRqSTtPQVFlLFdBQWEsV0FSNUJBLEdBUU1rSTs7V0FDREMsTUFUUnRKLE1BU0t1SixNQVRMdko7T0FTYyxXQUFUdUosS0FBcUIsMEJBQWxCRCxLQVRMbkk7bUJBVUhDLElBVkFwQixNQVVLLFdBQUxvQjs7R0FBVTtZQUdkb0ksWUFBVXRJO0lBQW1CLFdBaENqQ2tGLDRCQWdDc0QsV0FBVSxHQUFsRGxGO0lBQW1CLE9BQUE7R0FBbUM7WUFRaEV1STtJQUFlOztXQUN3QnpKLGNBQUgyQjtPQUNOLE9BckQ5QkssOEJBSkFOLEtBd0RvQ0MsUUFBRzNCOztXQUU5QitCLGNBQUgySCwyQkF2RE41SCxLQXVEU0M7T0FBZ0MsT0F0RHpDQywwQkFKQU4sS0EwRE1nSTs7V0FDQVAsZ0JBQWdDLE9BdkR0Q25ILDJCQURBRixLQXdETXFIOzs7UUFDQ0M7Ozs7V0FHd0IsSUFBU2xJLGNBQUh6QjtXQUFTLE9BN0Q5Q29DLEtBNkQwRCxtQkFBckJwQyxJQUFHeUI7VUFBc0M7T0FBNUUsT0EzREZjOztvQkFEQUYsS0E0RGdCLDBCQUhUc0g7OztRQUlDRTs7OztXQUlhLElBQVN2SCxjQUFIdEMsY0FBdUMsT0FqRWxFcUMsS0FpRThCQztXQUFvQyxPQWxFbEVGLEtBa0VnRCxtQkFBckJwQztVQUF1RDtPQURoRixPQS9ERnVDOztvQkFEQUYsS0FpRU0sMEJBSkV3SDs7O1FBTUtLOzs7O1dBSWtDLElBQVM1SixjQUFIbUo7Y0FBR25KO2dCQWxFbkRDLElBa0VtREQsYUF0RXhEaUMsMEJBSUtoQzs7dUJBSkxnQztXQXVFdUMsT0F6RXZDSCxLQXlFcUIsbUJBRGdDcUg7VUFDSTtPQUZ2RCxPQXJFRmxIOztvQkFEQUYsS0F1RU0sMEJBSk82SDs7V0FPR0MsZ0JBQUhWO09BQTBDLE9BekV2RGxILGlDQXlFYWtILFNBMUVicEgsS0EwRWdCOEg7O1dBQ0pDLGdCQUFIQyx5QkEzRVRoSSxLQTJFWStIO09BQW1DLE9BMUUvQzdILDZCQUhBSixNQTZFU2tJOztXQUNMQyxnQkFBOEIsT0EzRWxDL0gseUJBSEFKLE1BOEVJbUk7O0dBQThDO1lBb0RsREMscUJBQXFCaEssY0FBSyxPQUFMQTtZQVluQmlLLFlBQW9Caks7SUFDdEIsT0FEc0JBOztXQUlQa0osTUFKT2xKLE1BSWMsT0E1RnBDeUosaUJBNEZlUDs7V0FEUUcsTUFIRHJKLFNBR08sT0FBTnFKO21CQURkYSxNQUZhbEssTUFFUixPQUFMa0s7O0dBRTJDO1lBR2xEdEssTUFBZ0JJLEdBQVVEO0lBQ0MsV0FSM0JrSyxZQU8wQmxLO2lCQUM1QixzQkFSRWtLLFlBT2dCaks7R0FDNEI7WUFHNUNtSyxPQUFPbkssR0FBSSxXQVhYaUssWUFXT2pLLElBQXdCO1lBRS9Cb0ssU0FBT3BLO0lBQ1QsSUFBSWtKLE1BM0hKRCxNQTBIU2pKLEdBYlBpSyxjQWVFSSxPQS9HSmIsWUE4R0lOO0lBRUosT0FGSUE7O09BU0YsZUFSRW1CLE1BdkdKWixhQXNHSVA7O09BSVEsZUFIUm1CLE1BdkdKWixhQXNHSVA7O1dBR3FDbkgsSUFIckNtSCxRQUcwQyxXQUFMbkg7O09BV3ZDLGVBYkVzSSxNQXZHSlosYUFzR0lQOztPQW9DRixlQW5DRW1CLE1BdkdKWixhQXNHSVA7ZUFzQ0YsZUFyQ0VtQixNQXZHSlosYUFzR0lQOztHQXNDd0M7WUFHMUNvQixNQUFJdEssR0FBSSxPQTFDUm9LLGFBMENJcEssSUFBa0I7WUFDdEJ1SyxNQUFNQyxLQUFJekksR0FBSSxPQTNDZHFJLGFBMkNNSSxLQUFJekksSUFBaUM7WUFDM0MwSSxRQUFRQyxLQUFJM0ksR0FBSSxPQTVDaEJxSSxhQTRDUU0sS0FBSTNJLElBQTZCO1lBRXpDNEksaUJBQWtCM0s7SUFDcEIsU0FEb0JBLFVBRUFxSyxPQUZBckssU0FFWSxXQUFacUs7UUFDTHRJLElBSEsvQjtrQkFHNENBLEdBQUssV0FBTEEsR0FBYTtJQUF6RCxXQXBPcEJpQixJQW9PZWMsa0JBQTRDLE9BQUE7R0FBdUI7R0FJekU7WUFLUDZJLFNBQVNqSixHQUFFM0IsR0FBSSxPQTFEZm9LLGFBMERTekksR0FBRTNCLElBQWlDO1lBQzVDNkssU0FBU2xKLEdBQUVJLEdBQUksT0EzRGZxSSxhQTJEU3pJLEdBQUVJLElBQTZCO1lBQ3hDK0ksTUFBTS9JLEdBQUksT0E1RFZxSSxhQTRETXJJLElBQXlCO1lBRS9CZ0osYUFBYXhMLEtBQUl3QztJQUNuQixPQS9ERXFJOztjQTVMRm5LO2dCQTBQZVY7cUMsT0E1UmpCSSxhQXdOSUM7Z0JBb0VpQm1DO0dBQ2lFO1lBR2xGaUosTUFBSWhMLEdBQUksT0FsRVJvSyxhQWtFSXBLLElBQXVCO1lBQzNCaUwsUUFBTWpMLEdBQUUrQixHQUFJLE9BbkVacUksYUFtRU1wSyxHQUFFK0IsSUFBb0M7WUFDNUNtSixVQUFRaEssR0FBRWEsR0FBSSxPQXBFZHFJLGFBb0VRbEosR0FBRWEsSUFBZ0M7WUFDMUNvSixPQUFPbkwsR0FBSSxPQUFKQSxFQUFLO1lBQ1pvTCxPQUFPckosR0FBSSxPQXRFWHFJLGFBc0VPckksSUFBMEI7WUFDakNzSixRQUFRdEosR0FBSSxPQXZFWnFJLGFBdUVRckksSUFBMkI7WUFDbkN1SixTQUFPQyxHQUFJLFdBckZYdEIsWUFxRk9zQixJQUFnQztHQXBHVDs7O09BR2hDdkI7V0FtRUVNLE9BRUFHLFNBREFGLE9BN0NBSixRQWdEQVE7OztRQVlBQztRQUNBQztRQUNBQztRQUVBQztRQUlBQztRQUVBRTtRQURBRDtRQUVBRTtRQUNBQztRQUNBQztRQUNBQztZQUtORSxXQVNFQyxPQUFBQztJQUFBLEdBQUEsK0JBQUFELE9BQUFDLFFBQUE7UUFuT0ZDLFFBbU9FRCxVQW5PRkUsUUFtT0VIO2FBbk9GSSxNQW1PbUJDLE9BQUFDLE9BQUEsT0FUbkJQLFdBU21CTSxPQUFBQyxPQUFFO0lBbk9yQixHQUFBLCtCQUFBSCxPQUFBRCxRQUFBOzs7Ozs7Ozs7Ozs7O2lCQUFBQzs7aUJBQ0VJLFFBREZKO3NCQUFBRCxVQUNFO2FBQWM7Y0FBZE0sUUFERk47Y0FDRU8sUUFERlA7Y0FDRVEsUUFERlA7Y0FDZ0I5QixJQUFBLFdDbkZWekssU0RtRkoyTSxPQUFBRTswQkFBY3BDLElBRGhCK0IsTUFDRU0sT0FBQUYsU0FBY25DOztpQkFDZHNDLFFBRkZSLFVBRUVTLFFBRkZUO29CQUFBRDs7OztnQkFFWTtpQkFBVlcsUUFGRlg7aUJBRUVZLFFBRkZaO2lCQUVZNUIsTUFBQSxXQ3BGTjFLLFNEb0ZKZ04sT0FBQUU7eUJBQVV4QyxLQUFBLE9BQUFBOztpQ0FBU3lDLE9BQUFDLE9BQUEsT0FGckJaLE1BRXFCVyxPQUFBQyxPQUFFO2dCQUFDLE9BQUEsNEJBQXRCTCxPQUFBRTt3QkFBQTs7O2lCQUNBSSxRQUhGZDtvQkFBQUQ7Ozs7Ozs7aUJBR0VnQixRQUhGaEI7aUNBR2FpQixPQUFBQyxPQUFBLE9BSGJoQixNQUdhZSxPQUFBQyxPQUFFO2dCQUFDLE9BQUEsNEJBQWRILE9BQUFDO3dCQUFBOzs7aUJBQ0FHLFFBSkZsQjtvQkFBQUQ7Ozs7Ozs7OztpQkFJRW9CLFFBSkZwQjs7NEJBSWVxQixPQUFBQztvQkFBQTtxQkFBQUMsUUFBQUY7cUJBQUFHLFFBQUFIO3FCQUFBSSxRQUFBSDtxQkFBQUksUUFBQUo7cUJBQUFuRCxJQUFBLHNCQUFBcUQsT0FBQUU7aUNBQUF2RCxJQUpmK0IsTUFJZXFCLE9BQUFFLFNBQUF0RDttQkFBVztnQkFBRSxPQUFBLDRCQUExQmdELE9BQUFDO3dCQUFBOzs7aUJBQ0FPLFFBTEYxQjtvQkFBQUQ7Ozs7Ozs7Ozs7O2lCQUtFNEIsUUFMRjVCOzs0QkFLZ0I2QixPQUFBQztvQkFBQTtxQkFBQUMsUUFBQUY7cUJBQUFHLFFBQUFIO3FCQUFBSSxRQUFBSDtxQkFBQUksUUFBQUo7cUJBQUEzRCxJQUFBLHNCQUFBNkQsT0FBQUU7NkJBQUEvRCxHQUFBLE9BQUFBO2tDQUFTZ0UsT0FBQUMsT0FBQSxPQUx6QmxDLE1BS3lCaUMsT0FBQUMsT0FBRTtvQkFBQyxPQUFBLDRCQUFaTCxPQUFBRTttQkFBZ0I7Z0JBQUUsT0FBQSw0QkFBaENOLE9BQUFDO3dCQUFBOzs7aUJBRUFTLFFBUEZwQztvQkFBQUQ7Ozs7Ozs7Ozs7OztvQkFuRUFzQyxRQW1FQXRDO2dCQW5FcUMsR0FBQSwrQkEwRW5DcUMsT0ExRUZDLFFBQXFDOzt3QkFBckNBO3dCQTBFRUQ7OzRCQTFFc0JFLE9BQUFDO29CQUFBO3FCQTBFSkMsUUExRUlGO3FCQUFBRyxRQUFBSDtxQkEwRUpJLFFBMUVJSDtxQkFBQUksUUFBQUo7cUJBQUFyRSxJQUFBLHNCQUFBdUUsT0FBQUU7NkJBQUF6RSxHQUFBLE9BQUFBO2tDQTBFSjBFLE9BQUFDLE9BQUEsT0FQcEI1QyxNQU9vQjJDLE9BQUFDLE9BQUU7b0JBQUMsT0FBQSw0QkFBSEwsT0FBQUU7bUJBMUVlOzt3QkEwRWpDOzs7aUJBT0FJLFFBZEY5QyxVQWNFK0MsUUFkRi9DO29CQUFBRDs7Ozs7Ozs7Ozs7Ozs7Z0JBY21CO2lCQUFqQmlELFFBZEZqRDtpQkFjRWtELFFBZEZsRDtpQkFjbUJtRCxNQWRuQmpELE1BY0U4QyxPQUFBRTt5QkFBaUJDLEtBQUEsT0FBQUE7O2lDQUFLQyxPQUFBQyxPQUFBLE9BZHhCbkQsTUFjd0JrRCxPQUFBQyxPQUFFO2dCQUFDLE9BQUEsNEJBQXpCTixPQUFBRTt3QkFBQTs7O2lCQUNBSyxRQWZGckQsVUFlRXNELFFBZkZ0RDtvQkFBQUQ7Ozs7Ozs7Ozs7Ozs7OztnQkFlZTtpQkFBYndELFFBZkZ4RDtpQkFlRXlELFFBZkZ6RDtpQkFlZTBELE1BQUEsc0JBQWJILE9BQUFFO3lCQUFhQyxLQUFBLE9BQUFBOztpQ0FBTUMsT0FBQUMsT0FBQSxPQWZyQjFELE1BZXFCeUQsT0FBQUMsT0FBRTtnQkFBQyxPQUFBLDRCQUF0Qk4sT0FBQUU7d0JBQUE7Ozs7aUJBQ0FLLFFBaEJGNUQ7b0JBQUFEOzs7Ozs7Ozs7Ozs7Ozs7Z0JBZUU7O29CQUNBOEQsUUFoQkY5RDtnQkFnQlcsT0FBQSxzQkFBVDZELE9BQUFDOzs7VUFGQTs7U0FQQTs7UUFGQTs7T0FEQTs7TUFEQTs7S0FEQTs7SUFEQTtHQWtPMEU7T0FUNUVDOztLQUFBQTtjQVNFQztNQUFBOztnQkFBQUE7bUJBQUFBOzs7OztRQUFBLE9BQUE7OENBQUE5USxrQkFBQThROztrQkFBQUE7O1FBQUEsT0FBQTs4Q0FBQTlRLGtCQUFBOFE7OztRQUFBLE9BQUE7OENBQUE5USxrQkFBQThRO1dBQUFDOzs4QkFBQUE7aUNBQUFBOztXQUFBQztVQUFBQSxtQkFBQUE7UUFBQTtTQUFBQyxXQUFBRDtTQUFBRSxXQW5PRjlOLFlBME5BeU4sWUFTRUk7UUFBQSxXQUFBQzs7T0FBQSxPQUFBOztnQkFBQWxSO2dCQUFBK1E7Z0JBQUFEOztNQUFBLE9BQUE7NENBQUE5USxrQkFBQThRO0tBQTBFO1lBVDVFSztJQVNFLElBQVVDLHFCQUFBQyxXQW5PWjlKLFlBME5BNEosWUFTWUM7SUFBQSx3QkFBQUM7R0FBZ0U7WUFFdEVDLFNBQVNuUSxHQUFFRCxHQUFJLGFBWHJCeUwsV0FXZXhMLEdBQUVELFdBQXNCO1lBSWpDcVEsTUFBSXBRLEdBQUksZUFBSkEsSUFBeUM7WUFDN0NxUSxRQUFNQyxHQUFFelAsSUFBSyxlQUFQeVAsR0FBRXpQLEtBQXdEO1lBQ2hFMFAsVUFBUUMsR0FBRTNQLElBQUssZUFBUDJQLEdBQUUzUCxLQUFvRDtZQVE5RDRQO0lBQW1CLElBRWZDO2FBQUFBLE9BQU0sV0FyTlpsSCxZQXFOTWtIO1FBRGNDLE1BQ2REO0lBRHNCLFdBQVJDO0dBQ3NDO1lBR3hEQyxTQUFPMVAsR0FBSSxPQUFKQSxFQUFLO1lBRVIyUDtJQUFZLElBQ1p0RjtJQUFxQixPQW5OM0I5QixhQXJCQVIsTUF3T01zQyxHQURBc0Y7R0FDbUU7WUEvQnJFQyxZQTJDTXZGLEdBQUksT0FiUnNGLFlBYUl0RixHQUFvQjtZQUc1QndGLFdBQVNwUCxHQUFFM0IsR0FBSSxlQUFOMkIsR0FBRTNCLElBQThCO1lBQ3pDZ1IsV0FBU3JQLEdBQUVkLElBQUssZUFBUGMsR0FBRWQsS0FBNEI7WUFDdkNvUSxRQUFNcFEsSUFBSyxlQUFMQSxLQUF3QjtZQUM5QnFRLGVBQWEzUixLQUFJc0I7SUFBSzs7YUE1VHhCWjtlQTRUZVY7O2dCLE9BOVZqQkksYUFzVEl3UTs7ZUF3Q2lCdFA7R0FBNkI7WUFDOUNzUSxNQUFJckgsR0FBSSxlQUFKQSxJQUFvQjtZQUN4QnNILFVBQVFaLEdBQUUzUCxJQUFLLE9BcENmMFAsVUFvQ1FDLEdBQUUzUCxJQUFzQjtZQUNoQ3dRLFFBQU1mLEdBQUV6UCxJQUFLLE9BdENid1AsUUFzQ01DLEdBQUV6UCxJQUFvQjtZQUM1QnlRLFNBQU90UixHQUFJLE9BQUpBLEVBQUs7WUFDWnVSLFNBQU8xUSxJQUFLLGVBQUxBLEtBQXlCO1lBQ2hDMlEsVUFBUTNRLElBQUssZUFBTEEsS0FBMEI7WUFDbEM0USxTQUFPQyxLQUFNLE9BQU5BLElBQVM7R0FYTjs7O09BQ1ZYO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO1lBdERORSxjQXlEa0J6UTtJQUF1QixXQTdEekM4TyxXQTZEa0I5TztJQUF1QixPQUFBO0dBQWE7R0F4RGxEOztJQUFBLFdBVUVrUCxPQUVBRyxXQURBRixTQWNBTyxVQUxBSDtJQ3JVQW1CO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBMlhSQztJQTNYUUM7SUFBQUM7SUFBQUM7SUFBQUM7SUQ4WE5DO0lBQUFDO0lBRUkvQjtZQWdFQWdDLFNBbENTalQsS0FBSWtUO0lBQ2IsSUFBSUMsTUEvQkpsQztJQUFBQSxXQStCSWtDO0lBQ0o7S0FBZ0MsSUFBYXhSLGNBQUp5UixlQUFIM1M7S0FBYSxXQUFiQSxPQUFHMlMsSUFBSXpSO0lBQWlCO0lBQWhELElBQVYwUixVQUFVLDBCQUZESDtJQUdiLFdBRklDLEtBREtuVCxLQUVMcVQ7R0FDaUI7WUFLbkJDLE9BQU9DLEdBQUVwSTtJQUNMLFlBQUEsOEJBREdvSSxNQ3RhUGYsUURzYVNySDtrQkFFSnFJLG1CQUFVLE9BQVZBO0lBRUw7S0FBQTs7Ozs7Ozs7MEJBRUdDO1dBQUEsT0FBQSxXQzVhSGxCLGFENGFHa0I7VUFBMkQ7OztJQUY5RCxPQUFBLFdBN2FKMVQsVUF5YVd3VCxhQUFFcEk7R0FRTDtHQUlWLFNBQUF1SSxXQUFBQyxJQUFBQyxJQUFBLFdBQUFELElBQUFDLElBVThCO1lBWTFCQyxXQXRCSkYsSUFBQUMsSUFBQSxXQUFBRCxJQUFBQyxJQVU4QjtZQVY5QkUsU0FBQUgsSUFBQSxXQUFBQSxJQVU4QjtZQVY5QkksVUFBQUosSUFBQSxXQUFBQSxJQVU4QjtZQVY5QkssUUFBQUwsSUFBQSxXQUFBQSxJQVU4QjtZQVY5Qk0sUUFBQU4sSUFBQUMsSUFBQSxXQUFBRCxJQUFBQyxJQVU4QjtZQVY5Qk0sUUFBQVAsSUFBQUMsSUFBQU8sSUFBQSxXQUFBUixJQUFBQyxJQUFBTyxJQVU4QjtZQXJDdkJDO0lBMkJQOztPQUNFO1FBQUFDO1FBQUFDO1FBQUFDLFdBQUEsV0NuYkk1VSxhRG1iSjJVO1FBQUFFLFdBNUJLSixZQTRCTEM7T0FBQSx3QkFBQUUsY0FBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQ3BiSWhWLGFEb2JKK1U7UUFBQUUsV0FBQSxzQkE3QktSLGFBNkJMSztPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQzs7OztZQUFhQztZQUFBQztZQUFBQyxpQ0FBQUQ7WUFBQUUsV0E5QlJiLFlBOEJRVTswQkFBQUUsY0FBQUM7O1FBQWJDLFdBQUEsNEJBQUFMO09BQUEsd0JBQUFLOztPQUNBO1FBQUFDOzs7O1lBQWNDO1lBQUFDO1lBQUFDLGlDQUFBRDtZQUFBRSxpQ0EvQlRuQixhQStCU2dCOzBCQUFBRSxjQUFBQzs7UUFBZEMsV0FBQSw0QkFBQUw7T0FBQSx3QkFBQUs7O09BQ0E7UUFBQUM7UUFBQUMsV0FBQSxzQkFoQ0t0QixhQWdDTHFCO09BQUEsd0JBQUFDOztPQUNBO1FBQUFDO1FBQW1CQyxXQUFuQkQ7UUFBbUJFLFdBQW5CRjtRQUFtQkcsc0JDeGJmdlcsV0R3YmVzVzs7O1c7O2FBN0NuQkU7YUFBYUMsV0FBYkQ7YUFBYUUsV0FBYkY7YUFBYUcsaUNBQUFEO2FBQUFFLGlDQVlSL0IsYUFaUTRCOzRDQUFBRSxjQUFBQzs7O1lBQWJDO1lBQ2NDLFdBRGREO1lBQ2NFLFdBRGRGO1lBQ2NHLHNCQzVZVmhYLFdENFlVK1c7WUFBQUUsV0FXVHBDLFlBWFNpQzsyQ0FBQUUsY0FBQUM7O1FBNENLQyx1Q0FBQWI7UUFBbkJjLG1CQUFtQlosY0FBQVc7T0FBbkIsd0JBQUFDOztPQUNBO1FBQUFDO1FBQVVDLFdBQVZEO1FBQVVFLFdBQVZGO1FBQVVHLHNCQ3piTnZYLFdEeWJNc1g7UUFBQUUsc0JDemJOcEUsYUR5Yk1pRTtRQUFWSSxtQkFBVUYsY0FBQUM7T0FBVix3QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQzFiSTlFLGFEMGJKNkU7UUFBQUUsV0FBQSxzQkFuQ0toRCxhQW1DTDZDO09BQUEsd0JBQUFFLGNBQUFDOztPQWhDSTtRQWlDSkM7UUFBQUM7UUFBQUM7UUFqQ0lDLGNBaUNKRDtRQWxDSUUsVUFrQ0pGO1FBbkNJRyxVQW1DSkg7UUFwQ0FJOzs7O1lBR2VDO1lBQUFDO1lBQUFDLHNCQzFaWHpGLGFEMFpXd0Y7WUFBU0UsV0FBVEg7WUFBU0ksV0FBVEo7WUFBU0ssaUNDMVpwQnRGLGFEMFpvQnFGO1lBQUFFLFdBSG5COUQsWUFHbUIyRDtZQUFUSSxtQkFBU0YsY0FBQUM7MEJBQVRKLGNBQUFLOztRQUFYQyxVQUFBLDRCQUFBWjtRQUhKYSxrQ0FHSUQsZUFISlQ7UUFFSVcsVUFBQSxXQ3paQS9ZLFdEeVpBa1k7UUFGSmMsa0NBRUlELGVBRkpEO1FBQ0lHLFVBQUEsV0ExQk54RixhQTBCTTBFO1FBREplLGtDQUNJRCxlQURKRDtRQW9DQUcsZUFwQ0FEO1FBb0NBRSxXQUFBLFdDM2JJdEcsYUQyYkppRjtRQUFBc0IsV0FBQSxzQkFwQ0t4RSxhQW9DTGlEO09BQUEsd0JBQUFxQixjQUFBQyxjQUFBQzs7R0FDNEI7WUFRMUJDLE9BQU8zWSxHQUFFeUIsR0FBSSwwQkFBTnpCLEdBQUV5QixJQUFrQjtZQUMzQm1YLFFBQVM5WSxLQUFJMkIsR0FBSSwwQkFBUjNCLEtBQUkyQixJQUFxQjtZQUNsQ29YLE1BQUkvWSxLQUFJMkIsR0FBSSxlQUFSM0IsS0FBSTJCLElBQWdCO1lBQ3hCcVgsZUFBYWhaLEtBQUlzQixJQUFLLGVBQVR0QixLQUFJc0IsS0FBMkI7WUFLNUMyWCxZQUFjQyxRQUNaQyxPQUFNaE87SUFDQSxJQUFOaU87YUFDQUMsUUFBUWxPO0tBQU0sZ0NBRGRpTyxRQUNRak8sS0NwRmhCdUg7SURvRndEO2FBRTVDNEc7S0FBTztLQUFBOzs7YUFFRTNYLDBCQUFBQTs7YUFDSjRYOzthQVFGalk7U0FBTSxLQWhCRDRYLFFBZ0I0RDtvQ0FBNUIsSUFBU3ZYLGNBQU0sT0FYdkQyWCxLQVdpRDNYLEdBQWE7U0FBdEIsT0FBQSx5QkFBckNMOzthQUNDTjtTQUNSLEtBbEJZa1ksUUFrQjhEOzs7O2FBQTNDLElBQVNLO2FBQU8sT0FBQSx5QkFBUEEsSUFicENEO1lBYWdFO1NBQXJDLE9BQUEseUJBRHZCdFk7O2FBVEN1WTs7U0FHVDtVQURpQkM7VUFDakI7O2FBQWdCO2tCQUdJeFA7Y0FBTSxPQVR0QnNQLEtBU2dCdFA7Ozt5QkFGSztpQkFDSnJJO2FBQU0sT0FSdkIyWCxLQVFpQjNYO1lBQ1k7U0FIakIsT0FBQSx5QkFEQzZYOztTQVVSOzthQUVLQyxtQkFBTHRPO1NBQ04sS0FwQkhrTyxRQW1CU2xPLE1BcEJUaU8sYUFvQlNqTyxLQXBCVGlPLFNBMkJBTSxTQVBTdk87eUNBQUtzTyxNQWpCVkg7cUJBR0tDOztNQUF1QyxPQUFBLHlCQUF2Q0EsSUFITEQ7O0lBdUJnQjthQUNwQkksU0FBU3ZPO0tBQ1gsSUFBT3dPLE9BcEVMckcsT0F1Q0E2RixPQTRCU2hPO0tBRVgsT0ExQk1tTyxLQXlCQ0s7SUFDRTtJQUZQRCxTQTVCTXZPO0lBaUNBLElBQU55TyxNQS9CQVAsUUFGTWxPO0lBb0NWLE9BSEl5TztHQUdEO0dBR1csYUFBQTs7SUFtQkosMEJBQUEsTUFBQSw0QkN2Z0JOOUc7aUJEd2dCUW5SO0tBQUwsSUFBV0UsY0FBSEM7S0FBUyxPQUFBLHlCQUFaSCxHQUFHRyxHQUFHRDtJQUErQjthQUg3Q25CLGFBR0csT0FBQTthQUdIbVosU0FBT2xZLEdBQUVHLEdBQUksT0FBQSx5QkFBTkgsR0FBRUcsR0FBZ0I7SUFUekIsZUFTQStYLFVBTkFuWjthQTJCQVosUUFBQWdhLE9BQUFDO0tBQVM7TUFBQUMsUUFBVEY7TUFBU0csUUFBVEg7TUFBU0ksUUFBVEg7TUFBU0ksUUFBVEo7TUFBU3hQLElBQUEsV0FsS2Z3SSxXQWtLZWtILE9BQUFFO2tCQUFBNVAsSUFBUSxXQ2hpQmpCa0ksV0RnaUJTdUgsT0FBQUUsU0FBQTNQO0lBQWE7YUFBdEJoTDtLQUFBO01BQVM2YTtNQUFBQztNQUFBQyxzQkFsS2Z0SCxhQWtLZXFIO01BQUFFLHNCQ2hpQlRsSSxhRGdpQlMrSDtvQkFBQUUsY0FBQUM7SUFBMkM7SUFEM0M7S0FBQSxRQUNUemEsU0FBQVA7OzthQVVBaWIsS0FBSzdZLEdBQUVHLEdBQUksT0FBQSx5QkFBTkgsR0FBRUcsR0FBZ0I7SUFDZixJQUFSMlksUUFBUTthQUNSQyxPQUFPL1ksR0FBRUcsR0FBRUQsR0FBSSxPQUFBLHlCQUFSRixHQUFFRyxHQUFFRCxHQUE0QjtJQWZ2QyxlQWFBMlksTUFDQUMsT0FDQUM7YUFnQkFDLFNBQU9sYSxVQUFXbWEsTUFBUSxPQUFuQm5hLEVBQW9CO2FBRTNCb2EsS0FBS2xaLEdBQUVDLEdBQUdrWixPQUFNRjtLQUNWLElBQUpuYSxJQUFJLFdBRERrQixHQUFLbVosT0FBTUY7S0FFbEIsT0FBQSxXQUFBLFdBRlNoWixHQUNMbkIsSUFEUXFhLE9BQU1GO0lBRUQ7YUFHZkcsU0FBU0MsWUFBYUo7S0FDWCxJQUFUSyw0QkFEb0JMLE1BQWJJO0tBRVgscUJBQWMsSUFBdUJ2YSxjQUFNLFdBQU5BLEdBQWtDO0tBQXpELE9BQUEsNEJBRFZ3YTtJQUMwRTthQUc1RUMsZUFBZUYsS0FBSUcsT0FBT0wsT0FBTUY7S0FDbEM7TUFDT1Esd0JBRnFCTjtNQUdyQk8sNEJBSDJCVCxNQUFqQkksS0FFVkk7S0FEUCxXQUdHLFdBSmtCRCxPQUFPTCxlQUdyQk87SUFDMEI7YUFHL0JDLEtBQUszWixHQUFJLGtCQUFKQSxlQUF5QjtJQXRCOUI7S0FBQSxlQUdBZ1osVUFFQUUsTUFLQUUsVUFLQUcsZ0JBT0FJO0tBS0ZDO0tBQ0FDO2FBRUFDLGtCQUNFbmEsSUFBSU07Y0FDQThaLEtBQUtDO007T0FFRTtRQUFOcmE7UUFBTGI7d0JBQXVCRCxHQUFLLE9BRnhCa2IsU0FFbUJsYixHQUZkbWIsU0FFSnJhLElBQTRDO1FBQXRDLE9BQUEsV0FIUE0sR0FHSm5CO09BQW1COztlQVByQjhhOztNQU1lLFdBQUEsMEJBREpJO01BQ0k7O2NBTGZIOztLQVFGLE9BSlFFLFFBREpwYTtJQUtNO2lCQXFCTjZYLE9BQU15QyxNQUFLamE7S0FDYixPQURhQTs7UUFlWDtTQURhcUksTUFkRnJJO1NBY0R6QixJQWRDeUI7O29CQWVlRTtZQUFZLFdBQUEsNEJBRDVCM0IsR0FDZ0IyQjtZQUFZOztvQkE1Q3hDMlo7V0E0Q3VFO1NBQXJFLFdBZkFyQyxPQUFNeUMsTUFjTzVSO1FBQ1M7O2dCQTdDeEJ1Ujs7UUErQ0U7U0FEU2hDLEtBaEJFNVg7U0FnQkxrYSxNQWhCS2xhOztvQkFpQnFCeVI7WUFBYSxXQUFBLDRCQUR2Q3lJLEtBQzBCekk7WUFBYTs7b0JBOUMvQ29JO1dBOEMrRTtTQUE3RSxPQWNGTSxVQS9CRTNDLE9BQU15QyxNQWdCR3JDO1FBQ21COztnQkEvQzlCZ0M7O1FBaUNFO1NBRE9RLFFBRklwYTs7b0JBS0hvYTtZQUFnQixXQUFBLDRCQUFoQkE7WUFBZ0I7O29CQWxDMUJQO1dBa0N5RDtTQUZ2RDtXQTlCRkM7YUE2QlNNOztjQUNvQixJQUFTdGIsY0FBSFA7NEJBQ0xNO2VBQVksZUFEUE4sR0FDTE07ZUFBWTs7dUJBakMxQ2diO2NBaUNnRDtjQUE1QyxlQUpGckMsT0FBTXlDLE1BRzhCbmI7Y0FDWjs7c0JBbEMxQjhhO2FBa0NpRDtRQUMzQzs7Z0JBbkNOQTs7UUFxQ0U7U0FEUVMsT0FOR3JhOztvQkFTSHFhO1lBQWUsV0FBQSw2QkFBZkE7WUFBZTs7b0JBdEN6QlI7V0FzQ3dEO1NBRnREO1dBbENGQzthQWlDVU87O2NBQ2tCLElBQVMxYSxlQUFIcEI7NEJBQ0UrYjtlQUFhLGVBRGYvYixHQUNFK2I7ZUFBYTs7dUJBckNqRFQ7Y0FxQ3dEO2NBQXBELFdBdUJKTSxVQS9CRTNDLE9BQU15QyxNQU82QnRhO2NBQ0w7O3NCQXRDaENpYTthQXNDeUQ7UUFDbkQ7O2dCQXZDTkE7O1FBZ0RjO1NBQU45QixPQWxCSzlYOztvQkFrQmlDeVI7WUFBYSxXQUFBLDRCQUFiQTtZQUFhOztvQkEvQzNEb0k7V0ErQ3NGO1NBQXhFLE9BYWRNLFVBL0JFM0MsT0FBTXlDLE1Ba0JBbkM7UUFBa0M7O2dCQWhEMUM4Qjs7UUEwREU7aUJBNUJXNVo7U0EyQlE2WDtTQUFMeFo7O29CQUVOa2M7WUFBTzthQUEwQyxPQUFBLDJCQUFqREE7YUFBYyxPQUFBLDRCQUZSbGM7WUFFUTs7b0JBMUR4QndiO1dBMEQ2RTtTQUQzRTtXQXZERkM7YUFzRHFCakMsbUIsT0FPckIyQyxpQkFsQ0VoRCxPQUFNeUM7UUE2QkY7O2dCQTNETkw7O1FBeUNTO21CQVhJNVo7U0FVRHlhO1NBQUxDO1NBQ0UsNkJBWERULE1BVUlROzthQUVGM2I7U0FBSzs7aUJBekNmK2EsU0F5Q1UvYTs7UUFDRyxJQUFBO1FBQUEsT0FBQTtpQkFsb0JmVjttQkErbkJTc2M7Ozs7OztzQ0FHcUJDO3VCQUFBLE9BQUEsV0MvbkIxQnpKLGFEK25CMEJ5SjtzQkFBNkI7OztpQkFIN0NGOzs7UUFnQlY7U0FEY0csT0F6Qkg1YTtTQXlCRndKLE1BekJFeEo7eUJBMEJ1QjRhLE1BQVEsT0FrQzVDQyxTQTVERXJELE9BeUJTaE8sS0FDeUJvUixNQUErQjtTQUFqRSxPQUtGVCxVQS9CRTNDLE9BQU15QyxNQXlCUVc7UUFDZ0I7O2dCQXhEaENoQjs7UUFrREU7U0FEd0JrQixTQW5CYjlhO1NBbUJRK2EsUUFuQlIvYTtTQW1CRmdiLFdBbkJFaGI7eUJBcUJINGEsTUFFUixPQXFDRkMsU0F6Q1dHLFVBQVVELE9BRVhILE1BRWtCO1NBSDFCLE9BV0ZULFVBL0JFM0MsT0FBTXlDLE1BbUJrQmE7UUFFcEI7O2dCQW5ETmxCOztJQTJENkU7YUFFN0VPLFVBQ0UzQyxPQUFNeUMsTUFBS3JDO0tBQU0sT0EzRG5Ca0M7Y0EyRGFsQyxtQixXQUFYSixPQUFNeUM7SUFBb0Q7YUFFNURPLGlCQUlFaEQsT0FBTXlDLE1BQUtnQjtLQUNiLGVBRGFBO01BTVg7aUJBTldBO09BS0k1UztPQUFMaEs7O2tCQUVGNkI7VUFDRCxZQUFBLDRCQURDQTs7V0FFWSxJQUFkdVAsZ0JBQWMsT0FBZEE7V0FBYzs7bUJBNUV0Qm9LOztjQTZFVzFRO1VBQ04sT0FBQSxXQXRxQlAvSyxVQWdxQmNDLFdBS0Q4SztTQUtEO09BVFIsV0FOQXFPLE9BQU15QyxNQUtTNVI7TUFFWDs7Y0EzRU51Ujs7Z0JBb0VhcUIsdUJBRUYxYzs7TUFFVDtPQURpQnlCOztrQkFDU0U7VUFBWSxtQkFGN0IzQixPQUV1Qyw0QkFBdEIyQjtVQUFZOztrQkF2RXhDMlo7U0F1RTZFO09BQTNFLFdBSkFyQyxPQUFNeUMsTUFHV2phO01BQ0s7O2NBeEV4QjRaOztLQXNFOEIsbUJBQW5CcmI7S0FBbUI7O2FBckU5QnNiO0lBa0ZVO2FBRVZxQixnQkFDRTFELE9BQU0yRCxTQUFRbkQ7bUJBQ2tDb0QsR0FBRXRjLEdBQUssV0FBTEEsR0FBUSw0QkFBVnNjLElBQThCO0tBQXpEO01BQUEsT0FBQSwwQkFEZkQ7TUFDSmxCO21CQUN5Qi9aO01BQVksV0FBQSw0QkFBWkE7TUFBWTs7Y0F2RnpDMlo7S0F1Rm9FO0tBQXBFLGVBRkVyQyxPQUNFeUMsTUFEWWpDO0tBRVM7O2FBeEZ6QjRCO0lBd0ZvRTthQUVwRWlCLFNBQ0VyRCxPQUFNaE8sS0FBSW9SO0tBQ1o7TUFBSXBKLE1BREZnRztNQUVrQixRQTNRbEI3RixPQXlRQTZGLE9BQU1oTztNQUVLd087TUFBVG1EO0tBQ0osT0FEYW5EOzs7WUFDVHFEO29CQUFBQTs7O01BTUFDLFNBNU9KaEUsaUJBbU9FRSxPQUFNaE87TUFVSitSLGVBN09KakUsaUJBbU9FRSxPQUFNaE87OztNQVNLLEdBTlQ2Uiw0QkFNQUM7V0FDQUM7T0FhTSxjQUFBLDBCQXJCTkosU0FGUVA7O1lBd0JIOWIsZ0JBRkhtYiwwQkFFR25iOztZQUZIbWIsT0FHbUI7T0FFdkIsV0EzQkF6QyxPQXNCSXlDLE1BcEJPakM7Ozs7TUFnQlA7T0FDMEIsSUFBWjFJLGNBQVksT0FBQSw0QkFBWkEsR0FuQlJzTDtPQW1Cb0I7O2VBN0doQ2Y7O01BOEc2QixJQUFkdlEsZ0JBQWMsT0FBQSw0QkFBZEEsS0FwQkhzUjtNQW9CaUI7O2NBOUc3QmY7S0E4RzREOztNQU50RDtXQUNLdFE7T0FBVzs7ZUF6R3RCc1EsU0F5R1d0UTs7TUFFOEI7T0FBQSxPQXZCekMyUixnQkFNRTFELE9BRUUyRCxTQUFTbkQ7T0FlaUIsV0FoQjFCeEcsS0FESWhJOztNQWlCaUM7OztLQUFxQztLQUoxRCxJQUFBLFVBWmhCZ0ksS0FESWhJO0tBYU47Ozs7S0FBQTs7YUF4R0ZvUTs7S0E2R007O2FBN0dOQTtJQXNIdUI7YUFJdkI0QixPQUNFeGI7S0FDRjtNQUFJd1gsUUFoUkpsRyxTQWdSa0IsV0NodEJoQnpUO01EaXRCRW9jO01BQ2tCLFVBRmxCekMsT0FDQXlDLE1BRkZqYTtNQUdFRTtLQUNKLE9BQUEsNkJBRElBO0lBQ3FCO0lBek5hLGlDQW9OdENzYjs7R0FZUztJQUFBOzZCQTVhTDVMO0lBZ2FKNEw7O1lBcUJGQyxlQUFlakw7SUFBbUMsOENBQW5DQTtJQUFtQyxPQUFBO0dBQStCO1lBQ2pGa0wsc0JBQXNCbEw7SUFBTSxPQUFjLG1CQUQxQ2lMLGVBQ3NCakw7R0FBd0M7R0FHaEU7Ozs7STs7d0NBaFZPaUM7Ozs7WUFrVkhrSixzQkFBc0IzYjtJQUN4QixTQUR3QkEsTUFHakIsTUFBQSw2Q0FIaUJBO1FBRWhCNFgsS0FGZ0I1WDtJQUVWLE9BQU40WDtHQUNvQjs7OztPQXJWdkJuRjtXQ3ZaRDlCO1dBQUFNO1dBQUFwVDtXQUFBSTtPRGdjRnFUO09BZEplO09BQUFGO09BQUFDO09Ba0JJOEU7T0FDQUM7T0FFQUU7T0FyQkovRTtPQUFBQztPQW9CSTZFO09BRUFsRjtPQXRCSkg7c0JBaFhJeFIsYUFEQUQscUJBRkFGLFFBQ0FDOztRQTRPSmlLO1FBQUF3RTtRQUlBMkI7UUFGUWI7Ozs7Ozs7Ozs7Ozs7OztPQWdhSjRMO09BcUJGQztPQUNBQztXQUtFQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHRXB2Qk47O0lBZ05NQztJQXZDQUM7SUFuQkFDO0lBdkNBQzs7Ozs7OztJQS9HTkM7SUFJQTtJQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUE4Qk1DO0lBQVk7OztRQUNBOztRQUNBOztRQUNJOztRQUNIOztRQUNJOztRQUNIOztRQUNBOztRQUNJOztRQUNMOztRQUNBOztRQUNFOztRQUNJOztRQUNKOztRQUNHO2dCQUVFOzs7O1dBRENDLG9CQUFMQztPQUFrQixPQUFBLGdDQUFsQkEsS0FBS0Q7O1dBRWJILGdCQUFPLE9BQUEsbUNBQVBBOztXQUNBRCxrQkFBTyxPQUFBLG1DQUFQQTs7V0FDT0Q7T0FBTyxPQUFBLDBDQUFQQTs7V0FDSUQ7T0FBTyxPQUFBLDhDQUFQQTs7V0FDUlE7T0FBTyxPQUFBLHNDQUFQQTs7V0FDQUM7T0FBTyxPQUFBLHNDQUFQQTs7R0FBNEI7R0FNN0M7OztJOztJQUhvQjs7S0FBSkM7S0FBSSxlQXpCZEwsVUF5QlVLOzJCQTVEaEJOOzs7O0dBZ0VBO0lBQUE7O0lBQ0E7WUFFSU8saUJBQWlCQyxLQUFJQztJQUFNLE1BQUEsNENBQVZELEtBQUlDO0dBQW1DO1lBRXhEQyx5QkFBeUJDLE1BQUtGO0lBQ2hDLE1BQUEsZ0RBRDJCRSxPQUFLRjtHQUMyQjtZQUd6REcsOEJBQThCYjtJQUFlLFVBQUEsc0JBQWZBO0lBQWUsT0FBQTtHQUFtQztZQUNoRmM7SUFBdUIsT0FBQTtHQUFpQztZQU94REMsV0FBV0M7SUFBSSxPQUFBOzs7O2FBQUpBO0dBQTBDO09BQ3JEQztZQUNBQyxXQUFXUjtJQUFNLFVBQU5BO2lCQVRYSTtHQVNxRDtZQUNyREssVUFBV0MsS0FBV1Y7SUFBTSxVQUFVLGNBQTNCVSxRQUFXVjtZQUFvQyxNQUFBOztHQUFrQjtZQUU1RVcsYUFBYUQsS0FBSUU7SUFDbkIsSUFBSVosTUFEZVk7SUFGakJILFVBRWFDLEtBQ1hWO0lBQ0osT0FESUE7R0FFRDtZQUdEYSxXQUFZSCxLQUFXSTtJQUFPLFVBQVUsY0FBNUJKLE9BQVdJO1lBQXFDLE1BQUE7O0dBQWtCO1lBRTlFQyxZQUFhekIsS0FBSzBCO0ksWUFJVjtRQUhIaEI7T0FBQUE7S0FDdUIsVUFBQSxnQ0FGZlYsS0FBSzBCO0tBRUY7O0lBQUEsT0FEWGhCOztZQWVMaUIsU0FBVUMsU0FBU0MsS0FBS0MsU0FBU0MsS0FBSTNCO0lBQ3ZDO0tBQ0k0QixZQWxCRlAsWUFpQkV6QixrQkFEUTRCO0tBR1JLLFlBbkJGUixZQWlCRXpCLGtCQURzQjhCO0lBSTFCLE9BSnVDMUIsS0FLbEMsT0FBQTthQUxrQ0E7WUFZZixjQVpIeUIsUUFFakJHLFlBRm1DNUI7ZUFhbEM7ZUFDbUI7aUJBZFcyQjtrQkFHL0JFLFlBSG1DN0I7aUJBZWxDO2lCQUNBO2tCQWRENEIsV0FGaUJILEtBR2pCSSxXQUgrQkYsS0FBSTNCO09BUXhCLGNBUk15QixPQUVqQkc7S0FPRztjQUNRLGNBVm9CRCxPQUcvQkU7aUJBUUc7R0FLOEM7WUF1Qm5EQyxnQkFBaUJOLFNBQVFPLEtBQUtMLFNBQVFWLEtBQUtoQjtJQUM3QztLQUNJNEIsWUF6REZQLFlBd0RFMUIsc0JBRGU2QjtLQUdmSyxZQTFERlIsWUF3REUxQixzQkFENEIrQjtJQUloQyxPQUo2QzFCO0tBS3hDLE9BQUE7YUFMd0NBO2tDQUFsQitCLFFBRXZCSCxZQUZ5QzVCO2VBYXhDO2VBQ21CO2lCQWRnQmdCO2tCQUdwQ2EsWUFIeUM3QjtpQkFleEM7aUJBQ0E7a0JBZEQ0QixXQUZ1QkcsS0FHdkJGLFdBSG9DYixLQUFLaEI7NkJBQWxCK0IsT0FFdkJIO0tBT0c7Y0FDUSxjQVZ5QlosT0FHcENhO2lCQVFHO0dBS21EO1lBR3hERyxlQUFnQlIsU0FBUU8sS0FBS0wsU0FBUVYsS0FBS2hCO0lBQzVDO0tBQ0k0QixZQTVFRlAsWUEyRUUzQixzQkFEYzhCO0tBR2RLLFlBN0VGUixZQTJFRTNCLHNCQUQyQmdDO0lBSS9CLE9BSjRDMUI7S0FLdkMsT0FBQTthQUx1Q0E7aUNBQWxCK0IsUUFFdEJILFlBRndDNUI7ZUFhdkM7ZUFDbUI7aUJBZGVnQjtrQkFHbkNhLFlBSHdDN0I7aUJBZXZDO2lCQUNBO2tCQWRENEIsV0FGc0JHLEtBR3RCRixXQUhtQ2IsS0FBS2hCOzRCQUFsQitCLE9BRXRCSDtLQU9HO2NBQ1EsY0FWd0JaLE9BR25DYTtpQkFRRztHQUtrRDtZQXVCdkRJLGVBQWdCVCxTQUFRUixLQUFLVSxTQUFRSyxLQUFLL0I7SUFDNUM7S0FDSTRCLFlBbkhGUCxZQWtIRTVCLHNCQURjK0I7S0FHZEssWUFwSEZSLFlBa0hFNUIsc0JBRDJCaUM7SUFJL0IsT0FKNEMxQjtLQUt2QyxPQUFBO2FBTHVDQTtZQVlwQixjQVpFZ0IsUUFFdEJZLFlBRndDNUI7ZUFhdkM7O2lCQWJrQytCO2tCQUduQ0YsWUFId0M3QjtpQkFldkM7aUJBQ0E7a0JBZEQ0QixXQUZzQlosS0FHdEJhLFdBSG1DRSxLQUFLL0I7T0FRN0IsY0FSV2dCLE9BRXRCWTtLQU9HO21DQVRnQ0csT0FHbkNGO2lCQVFHO0dBS2tEO1lBT25ESyxlQUFlQzs7O21CQUNiLE9BRGFBO1NBRVRDLHVDQUFOQyxjQUFIQztLQUNELDhCQUhtQkgsTUFFbEJHLEdBQUdEO21CQUFNRDs7O1lBMERWRyxpQjs7OztPQWpOQTVCO09BQ0FFO09BQ0FDO09BQ0FDO09BUUFJO09BTkFGO09BK0RBYTtPQW1CQUU7T0F1Q0FDO09BQUFBO09BakdBVjs7O1dBM0VFekI7Ozs7T0FnQ0ZNO09BRUFHO09BSUFFO09BQ0FDO09BNEpJd0I7T0E0REpLOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7SUV4UUFFO0lBQ0FDOzs7Ozs7O0lBRUFDO01BRkFEOzs7U0FLTzFCLEtBQUlWLEtBQUlzQztTQUFLLG9CQUFiNUIsS0FBSVYsa0JBQUlzQztTQUFLO1FBQWdDO0lBR3BEQztNQVJBSDs7O1NBV08xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLEtBQThCLGlCQUExQnNDO1NBQUs7UUFBZ0M7SUFHcERFO01BZEFKOzs7U0FpQk8xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLEtBQThCLGlCQUExQnNDO1NBQUs7UUFBZ0M7SUFHcERHO01BcEJBTDs7U0FzQk8xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLGtCQUFJc0M7U0FBSztRQUFnQzs7SUFJcERJO01BMUJBTjs7U0E0Qk8xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLEtBQThCLGlCQUExQnNDO1NBQUs7UUFBZ0M7O0lBSXBESztNQWhDQVA7O1NBa0NPMUIsS0FBSVYsS0FBSXNDO1NBQUssb0JBQWI1QixLQUFJVixLQUE4QixpQkFBMUJzQztTQUFLO1FBQWdDOztZQUlwRE0sZUFBZWxDLEtBQUtWO0lBQ3RCLCtCQURzQkE7SUFFdEIsK0JBRmlCVSxLQUFLVjtJQUd0QixjQUhpQlUsS0FBS1Y7SUFHdEIsT0FBQSxnQ0FIc0JBO0dBSWY7WUFHTDZDLGVBQWVuQyxLQUFLVixLQUFJOEM7SUFDMUIsK0JBRHNCOUM7SUFFdEIsK0JBRmlCVSxLQUFLVjtjQUFJOEM7SUFHMUIsY0FIaUJwQyxLQUFLVjtJQUd0QixPQUFBLGdDQUhzQkE7R0FJZjtZQUdMK0Msd0JBQXdCckMsS0FBSVYsS0FBSU07SUFDbEMsK0JBRDBCSSxLQUFJVjtJQUU5QixjQUYwQlUsS0FBSVYsS0FBSU07SUFFbEMsT0FBQSxnQ0FGOEJOO0dBR3ZCO1lBV0xnRCxvQkFBb0J0QyxLQUFJVixLQUFJTTtJQUNuQixJQUFQUSxPQUFPLGdDQURlZDtJQUUxQiwrQkFGc0JVLEtBQ2xCSTtJQUVKLGNBSHNCSixLQUFJVjtJQTlDeEJ5QyxlQThDb0IvQixLQUlILGdDQUpPVixTQUFJTTtJQUk5QixPQUhJUTtHQUlBO1lBR0ZtQyxvQkFBb0J2QyxLQUFJVixLQUFJTTtJQUNuQixJQUFQUSxPQUFPLGdDQURlZDtJQUUxQiwrQkFGc0JVLEtBQ2xCSTtJQUVKLGNBSHNCSixLQUFJVjtJQWhEeEIwQyxlQWdEb0JoQyxLQUlILGdDQUpPVixTQUFJTTtJQUk5QixPQUhJUTtHQUlBO1lBSUZvQyxvQkFBb0J4QyxLQUFJVixLQUFJTTtJQUNuQixJQUFQUSxPQUFPLGdDQURlZDtJQUUxQiwrQkFGc0JVLEtBQ2xCSTtJQUVKLGNBSHNCSixLQUFJVjtJQW5EeEIyQyxlQW1Eb0JqQyxLQUlILGdDQUpPVixTQUFJTTtJQUk5QixPQUhJUTtHQUlBO1lBSUZxQyxlQUFlekMsS0FBS1YsS0FBSW9EO0lBQzFCLCtCQURzQnBEO0lBRXRCLCtCQUZpQlUsS0FBS1Y7SUFHdEIsY0FIaUJVLEtBQUtWLEtBQUlvRDtJQUcxQixPQUFBLGdDQUhzQnBEO0dBSWY7WUFHTHFELGNBQWMzQyxLQUFLVixLQUFJTTtJQUN6QiwrQkFEcUJOO1lBQUlNO2NBQUFBLEdBS2xCLE9BcERMeUMsd0JBK0NjckMsS0FBS1YsS0FBSU07Z0JBQUFBLEdBT2xCLE9BeENMMEMsb0JBaUNjdEMsS0FBS1YsS0FBSU07UUFwR3ZCNkIsaUNBb0d1QjdCO01BU1UsT0F6QmpDNEMsb0JBZ0JjeEMsS0FBS1YsS0FTYyxvQkFUVk07S0FVVSxPQW5DakMyQyxvQkF5QmN2QyxLQUFLVixLQUFJTTs7ZUFBQUE7S0F4Q2QsSUFBUFEsT0FBTyxnQ0F3Q1VkO0tBdkNyQiwrQkF1Q2dCVSxLQXhDWkk7S0FFSixjQXNDZ0JKLEtBQUtWO0tBckNyQixjQXFDZ0JVLEtBckNBLGdDQXFDS1YsU0FBSU07S0FyQ3pCLE9BSElROztpQkF3Q3FCUixHQWNwQixPQS9DSDBDLG9CQWlDY3RDLEtBQUtWLEtBQUlNO09BcEd2QjZCLGtCQW9HdUI3QjtLQWdCUSxPQWhDL0I0QyxvQkFnQmN4QyxLQUFLVixLQWdCWSxvQkFoQlJNO0lBaUJRLE9BMUMvQjJDLG9CQXlCY3ZDLEtBQUtWLEtBQUlNO0dBaUJ3QjtZQUcvQ2dELGVBQWU1QyxLQUFLVixLQUVsQnVEO0lBREosK0JBRHNCdkQ7SUFHdEIsU0FESXVELE1BRUMsT0F2RUhSLHdCQW1FZXJDLEtBQUtWLEtBRWxCdUQ7ZUFBQUEsTUFJQyxPQTNESFAsb0JBcURldEMsS0FBS1YsS0FFbEJ1RDtPQTFIRnBCLHVCQTBIRW9CO0tBTTZCLE9BNUMvQkwsb0JBb0NleEMsS0FBS1YsS0FRVyxvQkFON0J1RDtJQU82QixPQXREL0JOLG9CQTZDZXZDLEtBQUtWLEtBRWxCdUQ7R0FPNkM7WUFHL0NDLGlCQUFpQjlDLEtBQUtWLEtBQUl5QjtJQUM1QjtLQUFJL0IsNEJBRHdCK0I7S0FHeEJnQyxVQWZGSCxlQVlpQjVDLEtBQUtWLEtBQ3BCTjtLQUdBb0IsT0FBTyxnQ0FEUDJDLFNBRkEvRDtJQUlKLCtCQUxtQmdCLEtBSWZJO0lBR0oseUNBUDRCVyxLQUd4QmdDLFNBSGUvQyxLQUNmaEI7SUFNSixPQUhJb0I7R0FJQTtZQUdGNEMsZ0JBQWdCaEQsS0FBS1YsS0FBSXlCO0lBQzNCO0tBQUkvQixtQ0FEdUIrQjtLQUd2QmdDLFVBMUJGSCxlQXVCZ0I1QyxLQUFLVixLQUNuQk47S0FHQW9CLE9BQU8sZ0NBRFAyQyxTQUZBL0Q7SUFJSiwrQkFMa0JnQixLQUlkSTtJQUdKLHdDQVAyQlcsS0FHdkJnQyxTQUhjL0MsS0FDZGhCO0lBTUosT0FISW9CO0dBSUE7WUFHRjZDLGdCQUFnQmpELEtBQUtWLEtBQUlzQztJQUMzQiwrQkFEdUJ0QztJQUVaLElBQVBjLE9BQU8sZ0NBRllkO0lBR3ZCLCtCQUhrQlUsS0FFZEk7SUEzSEY2QixlQXlIZ0JqQyxLQUFLVixLQUlBLGlDQUpJc0M7SUFJM0IsT0FGSXhCO0dBR0E7O0lBSUY4QztNQW5LQXpCO2tCQXFLaUJ6QixLQUFLVixLQUFJTSxHQUFLLE9BakUvQitDLGNBaUVpQjNDLEtBQUtWLEtBQUlNLEdBQTRDOztTQUV4REksS0FBS1YsS0FBSU07U0FDckIsS0FBRyxrQkFEa0JBLGVBQ0UsY0FERkE7VUFLaEIsT0F4RVArQyxjQW1FYzNDLEtBQUtWLEtBQUlNO1NBR25CLCtCQUhlTjtTQUdmLE9BL0ZKaUQsb0JBNEZjdkMsS0FBS1YsS0FBSU07UUFLdUI7WUFHOUN1RCxnQkFBZ0JuRCxLQUFLVixLQUFJTTtJQUMzQixLQUFHLGtCQUR3QkEsYUFDSixjQURJQTtRQS9LekI2QjtNQXVLQSxPQW5FQWtCLGNBMkVnQjNDLEtBQUtWLHlCQUFJTTtLQU9DLEtBQXBCLGtCQVBtQkEsYUFPQyxjQVBEQTtNQVJ6QixPQW5FQStDLGNBMkVnQjNDLEtBQUtWLHlCQUFJTTtLQVN6QiwrQkFUcUJOO0tBVU8sT0E5RzVCaUQsb0JBb0dnQnZDLEtBQUtWLEtBVU8sb0JBVkhNOztJQUd6QiwrQkFIcUJOO0lBR3JCLE9BOUZBa0Qsb0JBMkZnQnhDLEtBQUtWLEtBQUlNO0dBV2lCO1lBSTFDd0Qsb0JBQW9CcEQsS0FBS1YsS0FBSU07SUFDL0I7T0EvTEU2QjtLQWlNSztTQURILGtCQUYyQjdCLHFCQUd4QixjQUh3QkE7O0tBSzdCLCtCQUx5Qk47S0FNRyxPQWhINUJrRCxvQkEwR29CeEMsS0FBS1YsS0FNRyxvQkFOQ007Ozs7S0FPRSxLQXJNL0I2QixrQkFxTStCLGtCQVBGN0I7S0FPbUIsS0FBQSxjQVBuQkEsWUFXMUIsT0FyR0grQyxjQTBGb0IzQyxLQUFLVixLQUFJTTs7SUFTN0IsK0JBVHlCTjtJQVVHLE9BN0g1QmlELG9CQW1Ib0J2QyxLQUFLVixLQUFJTTtHQVdpQjtZQUk5Q3lELGNBQWNDLGNBQWF0RCxLQUFLVixLQUFJaUUsR0FBSSxrQkFBMUJELGNBQWF0RCxLQUFLVixLQUFJaUU7R0FBNEI7WUFFaEVDLGVBQWVGLGNBQWF0RCxLQUFLVixLQUFJbUU7SUFDdkMsK0JBRHVDQTs7O1NBQ25DcEMsSUFEbUNvQzs7d0NBQ25DcEMsSUFEbUNvQztTQUNuQ3BDLG9DQURtQ29DOztJQUV2QyxPQUFBLFdBRmlCSCxjQUFhdEQsS0FBS1YsS0FDL0IrQjtHQUNtQjtZQUdyQnFDLGlCQUFpQkosY0FBYXRELEtBQUtWO0ksWUFDM0IsT0F2S1I2QyxlQXNLOEJuQyxLQUFLVjtJQUd4QixJQUROK0IsY0FDRGpCLE9BektKK0IsZUFzSzhCbkMsS0FBS1Y7SUFJbkMsT0FBQSxXQUppQmdFLGNBQWF0RCxLQUcxQkksTUFEQ2lCOztZQUtMc0MsZUFBZUMsYUFBWUMsYUFBWTdELEtBQUtWO0lBQ25DO0tBRDJDOEM7S0FBSDBCO0tBQy9DMUQsT0FBTyxXQURNd0QsYUFBd0I1RCxLQUFLVixLQUFLd0U7SUFFbkQsT0FBQSxXQUY2QkQsYUFBWTdELEtBQ3JDSSxNQURrRGdDOztZQUtwRDJCO0lBQWlCSCxhQUFZQyxhQUFZRyxhQUFZaEUsS0FBS1Y7SUFDaEQ7S0FEMkRvRDtLQUFITjtLQUFIMEI7S0FDN0RHLFFBQVEsV0FET0wsYUFBb0M1RCxLQUFLVixLQUFLd0U7S0FFN0RJLFFBQVEsV0FGbUJMLGFBQXdCN0QsS0FDbkRpRSxPQURnRTdCO0lBR3BFLE9BQUEsV0FIMkM0QixhQUFZaEUsS0FFbkRrRSxPQUZtRXhCOztZQU1yRXlCLGVBUUViLGNBQWF0RCxLQUFLVixLQUFJOEU7SUFDeEI7S0FBSXBGLE1BQXlCLDJCQURMb0Y7S0FQT0MsWUEvRy9CekIsZUFzSGU1QyxLQUFLVixLQUNoQk47S0FSMkJzRixVQUFBRDtLQUFRRSxNQU9mSDtJQU54QjtVQUR1Q0csS0FFL0IsT0FGdUJEO0tBSVg7TUFKbUJFLFFBQUFEO01BR3JDRSxLQUhxQ0Y7TUFBUkcsY0FJWCxXQUdsQnBCLGNBQWF0RCxLQVBnQnNFLFNBRzdCRztNQUg2QkgsVUFBQUk7TUFBUUgsTUFBQUM7O0dBVUg7WUFHcEJHLDBCQUEyQkMsUUFBUUMsTUFBSzdFLEtBQUtWLEtBQUl3RTtJQUNuRTtLQUFJOUUsTUFBTSxXQURtQzRGLFFBQXNCZDtLQUcvRGdCLFFBL0hGbEMsZUE0SHdENUMsS0FBS1YsS0FDM0ROO0tBR0ErRixPQUhBL0Y7S0FJQW9CLE9BQU8sZ0NBRlAwRSxPQUNBQztJQUVKLCtCQU4wRC9FLEtBS3RESTtJQUVKLFdBUHFEeUUsU0FBY2YsR0FHL0RnQixPQUhzRDlFLEtBQ3REaEI7SUFNSixPQUZJb0I7R0FHQTtZQUdGNEUscUJBQXFCaEYsS0FBS1YsS0FBSXdFOztLOzs7SUFDaEMsT0Faa0JhLG9EQVdLM0UsS0FBS1YsS0FBSXdFO0dBTTdCO1lBR0RtQixzQkFBc0JqRixLQUFLVixLQUFJd0U7O0s7OztJQUNqQyxPQXJCa0JhOzJCLDhCQW9CTTNFLEtBQUtWLEtBQUl3RTtHQU05QjtZQUdEb0IscUJBQXFCNUIsY0FBYXRELEtBQUtzRSxTQUFTMUUsR0FBRXVGO0lBQ3BELElBQUlDLGtCQURxQ2QsVUFFekMsTUFGa0QxRSxXQUNoQzs7U0FDbEJ5Rjs7TUFESUQ7T0FFYSxXQUhNOUIsY0FBYXRELEtBQ2hDb0YsZ0JBRGdERCxPQUVwREU7TUFBQSxVQUFBQTtpQkFBQUE7VUFBQUE7OztXQURJRDtHQUlRO1lBR1ZFLGdCQUF5QmhDLGNBQWF0RCxLQUFLVixLQUFJNkY7SUFDakQsR0FEMkI3QixpQkEvSHpCTDtLQWlJRyxPQW5CSGdDLHNCQWlCc0NqRixLQUFLVixLQUFJNkY7SUFNakMsSUFGVnZGLElBSjJDdUYsZUFNM0NiLFVBdktKMUIsZUFpS3NDNUMsS0FBS1YsS0FJdkNNO0lBR0osT0FmQXNGLHFCQVF5QjVCLGNBQWF0RCxLQU1sQ3NFLFNBRkExRSxHQUoyQ3VGO0dBT007WUFHckRJLGtCQUFrQkMsZUFBY0MsZUFBY3pGLEtBQUtWLEtBQUk2QjtJQUN6RDtLQUNJdUUsT0FETSwrQkFEK0N2RTtLQUdyRG1ELFVBOUtGMUIsZUEySzhDNUMsS0FBS1YsS0FFakRvRztLQUVBQzthQUNBQyxVQUFVdEUsR0FBRUQsR0FBRWlEO0tBRGRxQjtLQUdnQixJQUFkakIsY0FBYyxXQVBBYyxlQUE0QnhGLEtBSzlCc0UsU0FBSmhEO0tBR1osT0FBQSxXQVJnQ21FLGVBQWN6RixLQU8xQzBFLGFBRlVyRDtJQUdzQjtJQUV4QixJQUFWd0UsVUFBVSwrQkFMVkQsV0FMcUR6RSxNQUdyRG1EO09BQ0FxQixlQUZBRDtLQVNvQjtJQUFBLE9BRHBCRztHQUVHO1lBUUxDLHNCQUFzQjlGLEtBQUtWLEtBQUkrQjtJQUNqQztLQUFJckMsTUFBTSxjQUR1QnFDO0tBRzdCeUQsUUFsTUZsQyxlQStMc0I1QyxLQUFLVixLQUN6Qk47S0FHQStGLE9BSEEvRjtLQUlBb0IsT0FBTyxnQ0FGUDBFLE9BQ0FDO0lBRUosK0JBTndCL0UsS0FLcEJJO0lBRUosa0NBUGlDaUIsR0FHN0J5RCxPQUhvQjlFLEtBSXBCK0U7SUFHSixPQUZJM0U7R0FHQTtZQUdGMkYsc0JBQXNCL0YsS0FBS1YsS0FBSStCO0lBQ2pDO0tBQUlyQyxNQUFNLGNBRHVCcUM7S0FHN0J5RCxRQTdNRmxDLGVBME1zQjVDLEtBQUtWLEtBQ3pCTjtLQUdBK0YsT0FIQS9GO0tBSUFvQixPQUFPLGdDQUZQMEUsT0FDQUM7SUFFSiwrQkFOd0IvRSxLQUtwQkk7SUFFSixrQ0FQaUNpQixHQUc3QnlELE9BSG9COUUsS0FJcEIrRTtJQUdKLE9BRkkzRTtHQUdBO1lBS0Y0RixzQkFBc0JoRyxLQUFLVixLQUFJMkc7SUFDakM7S0FBSUMsT0FBTyxjQURzQkQ7S0FFN0JFLE9BQU8sY0FGc0JGO0tBRzdCbkIsUUExTkZsQyxlQXVOc0I1QyxLQUFLVixLQUN6QjRHO0tBR0FFLFFBM05GeEQsZUF1TnNCNUMsS0FHcEI4RSxPQURBcUI7S0FHQXBCLGdCQUpBbUIsTUFDQUM7S0FJQS9GLE9BQU8sZ0NBRlBnRyxPQUNBckI7SUFFSiwrQkFQd0IvRSxLQU1wQkk7SUFFSixrQ0FSaUM2RixHQUk3QkcsT0FKb0JwRyxLQUtwQitFO0lBR0osT0FGSTNFO0dBR0E7WUFHRmlHLHNCQUFzQnJHLEtBQUtWLEtBQUkyRztJQUNqQztLQUFJQyxPQUFPLGNBRHNCRDtLQUU3QkUsT0FBTyxjQUZzQkY7S0FHN0JuQixRQXRPRmxDLGVBbU9zQjVDLEtBQUtWLEtBQ3pCNEc7S0FHQUUsUUF2T0Z4RCxlQW1Pc0I1QyxLQUdwQjhFLE9BREFxQjtLQUdBcEIsZ0JBSkFtQixNQUNBQztLQUlBL0YsT0FBTyxnQ0FGUGdHLE9BQ0FyQjtJQUVKLCtCQVB3Qi9FLEtBTXBCSTtJQUVKLGtDQVJpQzZGLEdBSTdCRyxPQUpvQnBHLEtBS3BCK0U7SUFHSixPQUZJM0U7R0FHQTtZQUtGa0csb0JBQW9CdEcsS0FBS1YsS0FBSWlIO0lBQy9CO0tBQUl2SCxNQUFNLGNBRHFCdUg7S0FHM0J6QixRQXBQRmxDLGVBaVBvQjVDLEtBQUtWLEtBQ3ZCTjtLQUdBb0IsT0FBTyxnQ0FEUDBFLE9BRkE5RjtJQUlKLCtCQUxzQmdCLEtBSWxCSTtJQUVKLGtDQU4rQm1HLEdBRzNCekIsT0FIa0I5RSxLQUNsQmhCO0lBS0osT0FGSW9CO0dBR0E7WUFHRm9HLHNCQUFzQnhHLEtBQUtWLEtBQUlzQztJQUNqQywrQkFENkJ0QztJQUVsQixJQUFQYyxPQUFPLGdDQUZrQmQ7SUFHN0IsK0JBSHdCVSxLQUVwQkk7SUExVkY0QixlQXdWc0JoQyxLQUFLVixLQUFJc0M7SUFJakMsT0FGSXhCO0dBR0E7WUFHRnFHLG1CQUFtQnpHLEtBQUtWLEtBQUlNO0lBQzlCLCtCQUQwQk47SUFFMUIsK0JBRnFCVSxLQUFLVjtJQUcxQixjQUhxQlUsS0FBS1YsS0FBSU07SUFHOUIsT0FBQSxnQ0FIMEJOO0dBSW5CO1lBR0xvSCxvQkFBb0IxRyxLQUFLVixLQUFJTTtJQUMvQiwrQkFEMkJOO0lBRWhCLElBQVBjLE9BQU8sZ0NBRmdCZDtJQUczQiwrQkFIc0JVLEtBRWxCSTtJQS9XRjJCLGVBNldvQi9CLEtBQUtWLEtBQUlNO0lBSS9CLE9BRklRO0dBR0E7WUFHRnVHLG9CQUFvQjNHLEtBQUtWLEtBQUlNO0lBQy9CLCtCQUQyQk47SUFFaEIsSUFBUGMsT0FBTyxnQ0FGZ0JkO0lBRzNCLCtCQUhzQlUsS0FFbEJJO0lBalhGNEIsZUErV29CaEMsS0FBS1YsS0FBSU07SUFJL0IsT0FGSVE7R0FHQTtZQUdGd0csb0JBQW9CNUcsS0FBS1YsS0FBSU07SUFDL0IsK0JBRDJCTjtJQUVoQixJQUFQYyxPQUFPLGdDQUZnQmQ7SUFHM0IsK0JBSHNCVSxLQUVsQkk7SUFuWEY2QixlQWlYb0JqQyxLQUFLVixLQUlKLG9CQUpRTTtJQUkvQixPQUZJUTtHQUdBO1lBR0Z5RyxxQkFBcUI3RyxLQUFLVixLQUFJTTtJQUNoQywrQkFENEJOO0lBRWpCLElBQVBjLE9BQU8sZ0NBRmlCZDtJQUc1QiwrQkFIdUJVLEtBRW5CSTtJQTNYRjZCLGVBeVhxQmpDLEtBQUtWLEtBQUlNO0lBSWhDLE9BRklRO0dBR0E7WUFHRjBHLHdCQUF3QjlHLEtBQUtWLEtBQUlNO0lBQ25DLCtCQUQrQk47SUFFcEIsSUFBUGMsT0FBTyxnQ0FGb0JkO0lBRy9CLCtCQUgwQlUsS0FFdEJJO0lBamFGdUIsZUErWndCM0IsS0FBS1YsS0FBSU07SUFJbkMsT0FGSVE7R0FHQTtZQUdGMkcsd0JBQXdCL0csS0FBS1YsS0FBSU07SUFDbkMsK0JBRCtCTjtJQUVwQixJQUFQYyxPQUFPLGdDQUZvQmQ7SUFHL0IsK0JBSDBCVSxLQUV0Qkk7SUFuYUZ5QixlQWlhd0I3QixLQUFLVixLQUFJTTtJQUluQyxPQUZJUTtHQUdBO1lBR0Y0RywwQkFBMEJoSCxLQUFLVixLQUFJTTtJQUNyQywrQkFEaUNOO0lBRXRCLElBQVBjLE9BQU8sZ0NBRnNCZDtJQUdqQywrQkFINEJVLEtBRXhCSTtJQTNhRnlCLGVBeWEwQjdCLEtBQUtWLEtBQUlNO0lBSXJDLE9BRklRO0dBR0E7WUFHRjZHLHdCQUF3QmpILEtBQUtWLEtBQUlNO0lBQ25DLCtCQUQrQk47SUFFcEIsSUFBUGMsT0FBTyxnQ0FGb0JkO0lBRy9CLCtCQUgwQlUsS0FFdEJJO0lBN2FGMEIsZUEyYXdCOUIsS0FBS1YsS0FJUixvQkFKWU07SUFJbkMsT0FGSVE7R0FHQTtZQUdGOEcsMEJBQTBCbEgsS0FBS1YsS0FBSU07SUFDckMsK0JBRGlDTjtJQUV0QixJQUFQYyxPQUFPLGdDQUZzQmQ7SUFHakMsK0JBSDRCVSxLQUV4Qkk7SUFyYkYwQixlQW1iMEI5QixLQUFLVixLQUFJTTtJQUlyQyxPQUZJUTtHQUdBO1lBR0YrRywwQkFBMEI3RCxjQUFhdEQsS0FBS1YsS0FBSTZGO0lBQ2xELE9BMUxFRCxxQkF5TDBCNUIsY0FBYXRELEtBQUtWLEtBQUk2RixlQUFBQTtHQUN3QjtZQU14RWlDLGNBQWNwSCxLQUFLVixLQUFJc0M7SUFDakIsSUFBSnlGLE1BQUksdUJBRGlCekY7Y0FFekIsc0JBREl5RjtLQUNKLE1BQUE7SUFDQSwrQkFIcUIvSDtJQUlWLElBQVBjLE9BQU8sZ0NBSlVkO0lBS3JCLCtCQUxnQlUsS0FJWkk7T0FyZEZxQjtLQXlkUSxJQUFKcUMsSUFBSSxrQkFQTnVELFNBUUVqRixJQUFJLGtCQVJOaUY7S0FTRixvQkFWY3JILEtBQUtWLEtBUWZ3RTtLQUdKLG9CQVhjOUQsS0FXRyxnQ0FYRVYsU0FTZjhDOzs7S0FJSTtNQUFKa0YsTUFBSSxrQkFaTkQ7TUFhRUUsTUFBSSxrQkFiTkY7TUFjRTNFLElBQUksa0JBZE4yRTtNQWVFRyxJQUFJLGtCQWZOSDtLQWdCRixvQkFqQmNySCxLQUFLVixLQWFmZ0k7S0FLSixvQkFsQmN0SCxLQWtCRyxnQ0FsQkVWLFNBY2ZpSTtLQUtKLG9CQW5CY3ZILEtBbUJHLGdDQW5CRVYsU0FlZm9EO0tBS0osb0JBcEJjMUMsS0FvQkcsZ0NBcEJFVixVQWdCZmtJOztJQUtOLE9BakJJcEg7R0FpQkE7Ozs7T0EvYkY4QjtPQU9BQztPQXNGQVc7T0FXQUU7T0FsREFQO09BT0FFO09Bb0JBQztPQWtDQUs7T0FTQUM7T0FZQUM7T0FlQUM7T0FlQUM7T0FFQUc7T0FLQUU7T0FPQUM7T0FLQUk7T0FNQUk7T0FtREFtQjtPQVVBQztPQW9CQU87T0FXQUM7T0FBQUE7T0FhQUM7T0FZQUs7T0FBQUE7T0FjQUM7T0ExR0F0QjtPQVNBQztPQXlNQW1DO09BOUZBWjtPQVFBQztPQU9BQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MvY2dCOzs7Ozs7Ozs7Ozs7Ozs7O0lBSmhCMUY7SUFDQUM7OztJQUNBK0YsZ0JBRkFoRztJQUdBaUcsZ0JBSEFqRztJQUlBa0csZ0JBQWdCO0lBQ2hCQyxnQkFBZ0I7WUFFQUMsa0JBQWtCdkksS0FBSXNDO0lBQ3hDLEdBUkVILGdCQVNHLE9BRm1DRztJQUdWO01BQXRCLGtCQUhnQ0EsR0FKdEM4RixrQkFPNEIsZUFIVTlGLEdBTHRDNkY7S0FTRyxPQUptQzdGO0lBS25DLE9BQUEsbUNBTCtCdEM7R0FLWTtZQUc5QndJLGtCQUFrQnhJLEtBQUlzQztJQUN4QztNQUFHLGtCQURxQ0EsR0FWdENnRyxrQkFXdUIsZUFEZWhHLEdBWHRDK0Y7Z0NBV3NDL0Y7SUFHbkMsT0FBQSxtQ0FIK0J0QztHQUdZOztJQUc5Q3lJO01BckJBdEc7a0JBdUJPbkMsS0FBS3NDLEdBQUssT0FBQSxvQkFBTEEsR0FBeUI7O1NBRWhCdEMsS0FBSXNDO1NBQ3ZCO1dBQUcsa0JBRG9CQSxHQUNmO2NBQ0wsZUFGb0JBLEdBRWY7VUFDSCxPQUFBLG9CQUhrQkE7U0FJbEIsT0FBQSxtQ0FKY3RDO1FBSTZCO0lBVWxEMEk7TUF0Q0F0Rzs7O1NBdUM0QzFCLEtBQUlWO1NBQU8sT0FBQSxhQUFBLG9CQUFYVSxLQUFJVjtRQUFzQztJQUd0RjJJO01BMUNBdkc7OztTQTJDNEMxQixLQUFJVjtTQUFPLE9BQUEsaUJBQUEsb0JBQVhVLEtBQUlWO1FBQXNDO0lBR3RGNEk7TUE5Q0F4Rzs7O1NBK0M0QzFCLEtBQUlWO1NBQU8sT0FBQSxpQkFBQSxvQkFBWFUsS0FBSVY7UUFBc0M7SUFHdEY2STtNQWxEQXpHOztTQW1EMEIxQixLQUFJVjtTQUFPLE9BQUEsYUFBQSxvQkFBWFUsS0FBSVY7UUFBc0M7O0lBR3BFOEk7TUF0REExRzs7U0F1RDBCMUIsS0FBSVY7U0FBTyxPQUFBLGlCQUFBLG9CQUFYVSxLQUFJVjtRQUFzQzs7SUFHcEUrSTtNQTFEQTNHOztTQTJEMEIxQixLQUFJVjtTQUFPLE9BQUEsaUJBQUEsb0JBQVhVLEtBQUlWO1FBQXNDOztZQVFwRWdKLGNBQWN0SSxLQUFLRTtJQUNYLElBQU5aLE1BQU0sK0JBRE1VLEtBQUtFO0lBRXJCLCtCQURJWjtJQUVELGFBQUEsY0FIYVUsS0FDWlY7ZUFEaUJZLGFBSUwsZ0NBSFpaO2NBSUMsbUNBSkRBO0dBSXlDO1lBRzNDaUosY0FBY3ZJLEtBQUtFO0lBQ1gsSUFBTlosTUFBTSwrQkFETVUsS0FBS0U7SUFFckIsK0JBRElaO0lBRUUsWUFBQSxjQUhVVSxLQUNaVjs7ZUFEaUJZLGFBUVIsZ0NBUFRaOztnQkFTRyxtQ0FUSEE7aUJBRGlCWSxhQUtSLGdDQUpUWjtHQVMyQztZQUc3Q2tKLHVCQUF1QnhJLEtBQUtFLFNBQVNaO0lBQzVCLElBQVBjLE9BQU8sZ0NBRDRCZDtJQUV2QywrQkFGeUJVLEtBQ3JCSTtJQWhHSSxJQUFKc0MsSUFBSSxjQStGaUIxQyxLQUFjVixNQUduQ00sV0FsR0E4QyxJQUFBQSxjQUFBQTtZQWtHQTlDLEdBQ1csbUNBSmVNO0lBQUFBLGFBQzFCRTtJQUtKLE9BSElSO0dBR0g7WUFHQzZJLG9CQUFvQnpJLEtBQUtFLFNBQVNaO0lBQ3pCLElBQVBjLE9BQU8sZ0NBRHlCZDtJQUVwQywrQkFGc0JVLEtBQ2xCSTtJQUR1QkYsYUFDdkJFO0lBbkNJLElBQUp3QixJQWJGdUcsd0JBK0NvQm5JLEtBQWNWO0lBakNwQyxlQURJc0MsSUFBQUEsZ0JBQUFBO0dBd0N5QjtNQXhHM0JIOztLQWdMSWlIO0tBSEpDO2dCQUlJM0ksS0FBS0UsU0FBU1o7UUFDTCxJQUFQYyxPQUFPLGdDQURLZDtRQUVoQiwrQkFGRVUsS0FDRUk7UUFER0YsYUFDSEU7UUFHaUIsSUFBakJSLElBOUhOd0ksZUEwSElwSSxLQUFjVjtRQUtoQixZQURJTSxJQUFBQSxJQUFBQSxJQUxGOEk7T0FVc0M7OztLQWIxQ0M7Z0JBZUkzSSxLQUFLRSxTQUFTWjtRQUNMLElBQVBjLE9BQU8sZ0NBREtkO1FBRWhCLCtCQUZFVSxLQUNFSTtRQUVJLElBQUpSLElBeElOd0ksZUFxSUlwSSxLQUFjVjtRQUlGLEdBQVgsa0JBRENNLFNBQ1UsZUFEVkEsR0E3TE42SCxnQkEwTFN2SCxhQUNIRSxNQU9GLE9BTEVSO2tEQUhHTTtPQVMrQztZQWV4RDBJLGNBQWM1SSxLQUFLRTtJQUNYLElBQU5aLE1BQU0sK0JBRE1VLEtBQUtFO0lBRXJCLCtCQURJWjtJQUVFLElBQ0p1SixLQURJLGNBSFU3SSxLQUNaVjthQUdGdUo7S0FKbUIzSSxhQUtSLGdDQUpUWjtLQUtGLE9BRkF1Sjs7Y0FBQUE7WUFBQUE7O2FBeE5BcEgsZ0JBbU9FLE9BQUEsbUNBZEFuQztRQVl3QztTQXpCTndGLFFBeUJNLGdDQVp4Q3hGO1NBWkF3SixTQUFPLGdDQUQyQmhFO1FBRXRDLCtCQVVnQjlFLEtBWFo4STtRQUVJLElBQUpsSixJQWhKRnlJLGVBeUpjckksS0Fac0I4RTtRQUl4QixHQUFYLGtCQURDbEYsV0FDVSxlQURWQSxHQXZNRitIO2FBME1Jb0IsMEJBSEZuSjtTQVNpQk0sYUFYakI0STtTQU9GLE9BRklDOztrREFNZTdJOztRQVVxQixPQWpEeEN5STtpQkF1Q2MzSSxLQUFLRSxTQVVxQixnQ0FUdENaOztRQU9zQztTQXRESjhHLFFBc0RJLGdDQVB0QzlHO1NBOUNBYyxPQUFPLGdDQUQyQmdHO1FBRXRDLCtCQTRDZ0JwRyxLQTdDWkk7UUE2Q2lCRixhQTdDakJFO1FBR0osT0F2SEUrSCx3QkFpS2NuSSxLQTlDc0JvRzs7SUErRHBDLE9BQUEsbUNBaEJFOUc7R0FnQnNDO1lBR3hDMEosZUFBZWhKLEtBQUtFO0lBQ3RCLElBQUkrSSxZQURrQi9JLFlBRWxCbEIsTUF0QkY0SixjQW9CZTVJLEtBQUtFO3dCQUVsQmxCLEtBQ2dDLG9DQUZoQ2lLO0lBSU8sSUFEUDNKLE1BSmtCWSxZQUtsQkUsT0FBTyxnQ0FEUGQsS0FGQU47SUFJSiwrQkFOaUJnQixLQUtiSTtJQUxrQkYsYUFLbEJFO0lBR00sSUFBTlcsTUFBTSxrQkFOTi9CO0lBT0oscUNBTElNLEtBSmFVLFFBUWJlLEtBTkEvQjtJQU9KLE9BREkrQjtHQUVEO1lBR0RtSSxnQkFBZ0JsSixLQUFLRTtJQUNiLElBQU5hLE1BZEZpSSxlQWFnQmhKLEtBQUtFO0lBRXZCLE9BQUEsNkJBRElhO0dBQ3NCO1lBR3hCb0ksY0FBY25KLEtBQUtFO0lBQ1gsSUFBTlosTUFBTSwrQkFETVUsS0FBS0U7SUFFckIsK0JBRElaO0lBRGlCWSxhQUdWLGdDQUZQWjtJQUdKLE9BQUEsY0FKZ0JVLEtBQ1pWO0dBR2M7WUFHaEI4SixhQUFhcEosS0FBS0U7SUFDVixJQUFOWixNQUFNLCtCQURLVSxLQUFLRTtJQUVwQiwrQkFESVo7SUFFRSxJQUNKdUosS0FESSxjQUhTN0ksS0FDWFY7YUFHRnVKO0tBSmtCM0ksYUFLUCxnQ0FKVFo7S0FLRixPQUZBdUo7O2FBQUFBLElBZUEsT0FBQSxtQ0FsQkV2SjtXQUdGdUo7O1lBclFBcEgsZ0JBa1JFLE9BQUEsbUNBaEJBbkM7T0FjNkM7UUE1SU53RixRQTRJTSxnQ0FkN0N4RjtRQTdIQXdKLFNBQU8sZ0NBRGdDaEU7T0FFM0MsK0JBMkhlOUUsS0E1SFg4STtPQUVJO1FBQUpPLE1BNUVGaEIsZUFzTWFySSxLQTdINEI4RTtRQUl2Q3dFLE1BekhjeEIsa0JBa1BFNUgsWUExSGhCbUo7T0EwSGdCbkosYUE1SGhCNEk7T0FLSixPQUZJUTs7T0FxSTJDO1FBbEpKbEQsUUFrSkksZ0NBWDNDOUc7UUF0SUFjLE9BQU8sZ0NBRGdDZ0c7T0FFM0MsK0JBb0llcEcsS0FySVhJO09BRUk7UUFBSlIsSUF2RUZ3SSxlQTBNYXBJLEtBdEk0Qm9HO1FBSXZDMkMsTUF4SGNsQixrQkEwUEUzSCxZQW5JaEJOO09BbUlnQk0sYUFySWhCRTtPQUtKLE9BRkkySTs7T0E0SW9DLE9Bekt0Q047Z0JBK0phekksS0FBS0UsU0FVb0IsZ0NBVHBDWjs7T0FPdUMsT0FoTHpDa0o7Z0JBd0theEksS0FBS0UsU0FRdUIsZ0NBUHZDWjs7R0FrQnFDO1lBR3ZDaUssZUFBZXZKLEtBQUtFO0lBQ1osSUFBTlosTUFBTSwrQkFET1UsS0FBS0U7SUFFdEIsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKaUJVLEtBR2JJO0lBSGtCRixhQUdsQkU7SUFJSixPQUFBLGlDQW5PRWlJLGVBNE5lckksS0FDYlY7R0FNd0M7WUFHMUNrSyxlQUFleEosS0FBS0U7SUFDWixJQUFOWixNQUFNLCtCQURPVSxLQUFLRTtJQUV0QiwrQkFESVo7SUFFRSxJQUNKdUosS0FESSxjQUhXN0ksS0FDYlY7YUFHRnVKO0tBSm9CM0ksYUFLVCxnQ0FKVFo7S0FLRixPQUZBdUo7O2NBQUFBO1lBQUFBOztRQVFzQztTQWxNSi9ELFFBa01JLGdDQVhwQ3hGO1NBdExBYyxPQUFPLGdDQUR5QjBFO1FBRXBDLCtCQW9MaUI5RSxLQXJMYkk7UUFxTGtCRixhQXJMbEJFO1FBSUosT0F6REVnSSxlQTBPZXBJLEtBdExtQjhFOztRQWdNbEMsT0F6TUEyRDtpQkErTGV6SSxLQUFLRSxTQVVnQyxnQ0FUbERaOztRQU9GLE9BaE5Ba0o7aUJBd01leEksS0FBS0UsU0FRbUMsZ0NBUHJEWjs7SUFhRixPQUFBLG1DQWJFQTtHQWF1QztZQUd6Q21LLGVBQWV6SixLQUFLRTtJQUNaLElBQU5aLE1BQU0sK0JBRE9VLEtBQUtFO0lBRXRCLCtCQURJWjtJQUVFLElBQ0p1SixLQURJLGNBSFc3SSxLQUNiVjthQUdGdUo7S0FKb0IzSSxhQUtULGdDQUpUWjtLQUtGLE9BQUEsb0JBRkF1Sjs7Y0FBQUE7WUFBQUE7O1FBVXNDO1NBN01KL0QsUUE2TUksZ0NBYnBDeEY7U0EvTEFjLE9BQU8sZ0NBRHlCMEU7UUFFcEMsK0JBNkxpQjlFLEtBOUxiSTtRQThMa0JGLGFBOUxsQkU7UUFJSixPQTdERWlJLGVBdVBlckksS0EvTG1COEU7O1FBMk1hO1NBakxKc0IsUUFpTEksZ0NBWDdDOUc7U0FyS0F3SixTQUFPLGdDQURrQzFDO1FBRTdDLCtCQW1LaUJwRyxLQXBLYjhJO1FBb0trQjVJLGFBcEtsQjRJO1FBR0ksSUFBSmxKLElBMUZGd0ksZUEyUGVwSSxLQXJLNEJvRztRQUs3QyxPQUFBLG9CQURJeEc7O1FBMktGLE9BQUE7aUJBMU5BNkk7bUJBZ05lekksS0FBS0UsU0FVZ0MsZ0NBVGxEWjs7UUFPRixPQUFBO2lCQWpPQWtKO21CQXlOZXhJLEtBQUtFLFNBUW1DLGdDQVByRFo7O0lBZUYsT0FBQSxtQ0FmRUE7R0FldUM7WUFHekNvSyxtQkFBbUIxSixLQUFLRTtJQUNoQixJQUFOWixNQUFNLCtCQURXVSxLQUFLRTtJQUUxQiwrQkFESVo7SUFFRSxJQUNKdUosS0FESSxjQUhlN0ksS0FDakJWO2FBR0Z1SjtLQUp3QjNJLGFBS2IsZ0NBSlRaO0tBS0YsT0FGQXVKOztjQUFBQTtZQUFBQTs7V0F6VUFwSDtTQW1WbUQ7VUF0TEpxRCxRQXNMSSxnQ0FiakR4RjtVQXhLQXdKLFNBQU8sZ0NBRHNDaEU7U0FFakQsK0JBc0txQjlFLEtBdktqQjhJO1NBRUk7VUFBSkMsTUFyR0ZWLGVBMFFtQnJJLEtBeEs0QjhFO1VBSTdDdUUsTUE1SUZ0Qix3QkF3SStDakQsT0FHN0NpRTtTQXFLc0I3SSxhQXZLdEI0STtTQUtKLE9BRklPOzs7O1FBZ0xpRDtTQTVMSmpELFFBNExJLGdDQVhqRDlHO1NBaExBYyxPQUFPLGdDQURzQ2dHO1FBRWpELCtCQThLcUJwRyxLQS9LakJJO1FBK0tzQkYsYUEvS3RCRTtRQUdJLElBQUpSLElBbEdGd0ksZUE4UW1CcEksS0FoTDRCb0c7UUFLakQsT0FESXhHOztRQXNMRixPQTdPQTZJO2lCQW1PbUJ6SSxLQUFLRSxTQVVnQyxnQ0FUdERaOztRQU9GLE9BcFBBa0o7aUJBNE9tQnhJLEtBQUtFLFNBUW1DLGdDQVB6RFo7O0lBZUYsT0FBQSxtQ0FmRUE7R0FlMkM7WUFHN0NxSyxhQUFhQyxhQUFZNUosS0FBS0U7SUFDdkIsSUFBTDJKLEtBQUssV0FETUQsYUFBWTVKLEtBQUtFO0lBRWhDLFdBREkySjtHQUNFO1lBR0pDLGNBQWNGLGFBQVk1SixLQUFLRTtJQUN4QixJQUFMMkosS0FBSyxXQURPRCxhQUFZNUosS0FBS0U7SUFFakMsT0FBQSwyQkFESTJKO0dBQ1k7WUFHZEUsZ0JBQWdCSCxhQUFZNUosS0FBS0U7SUFDekIsSUFBTlosTUFBTSwrQkFEb0JVLEtBQUtFO0lBRW5DLCtCQURJWjtJQUVFLFlBQUEsY0FId0JVLEtBQzFCVjs7O2VBVUcsb0NBVkhBO2dCQUQrQlksYUFLdEIsZ0NBSlRaO0lBRCtCWSxhQVF0QixnQ0FQVFo7SUFRTyxJQUFMdUssS0FBSyxXQVRPRCxhQUFZNUosS0FBS0U7SUFVakMsV0FESTJKO0dBRTJDO1lBRy9DRyxjQUFjQyxZQUFXQyxZQUFXbEssS0FBS0U7SUFDM0M7S0FBSTRELElBQUksV0FEUW1HLFlBQXNCakssS0FBS0U7S0FFdkNrQyxJQUFJLFdBRm1COEgsWUFBV2xLLEtBQUtFO0lBRzNDLFdBRkk0RCxHQUNBMUI7R0FDQTtZQUdGK0gsZ0JBQWdCRixZQUFXQyxZQUFXRSxZQUFXcEssS0FBS0U7SUFDeEQ7S0FBSTRELElBQUksV0FEVW1HLFlBQWlDakssS0FBS0U7S0FFcERrQyxJQUFJLFdBRnFCOEgsWUFBc0JsSyxLQUFLRTtLQUdwRHdDLElBQUksV0FIZ0MwSCxZQUFXcEssS0FBS0U7SUFJeEQsV0FISTRELEdBQ0ExQixHQUNBTTtHQUNHO1lBR0wySCxvQkFBb0JULGFBQVk1SixLQUFLRSxTQUMxQmxCO0lBQWIsSUFBYVksSUFBQVosS0FBRXNMO0lBQ2I7Y0FEVzFLLEdBQ0csT0FERDBLO0tBQ3VCO01BRHZCQyxZQUN3QixXQUZqQlgsYUFBWTVKLEtBQUtFLFVBQ3hCb0s7TUFBRnZCLE1BQUFuSjtNQUFBQSxJQUFBbUo7TUFBRXVCLE1BQUFDOztHQUdKO1lBR1RDLDJCQUE0QnpMLFNBQVE2SyxhQUFZNUosS0FBS0U7SUFDNUMsSUFBUGxCLE1BakxGNEosY0FnTGdENUksS0FBS0U7T0FBekJuQixVQUMxQkM7S0FDa0Isb0NBRGxCQSxLQUQwQkQsVUFBeUJtQjtJQUd6QyxJQUFWdUssVUFWRkosb0JBT29DVCxhQUFZNUosS0FBS0UsU0FDbkRsQjtJQUdKLE9BQUEsMkJBREl5TDtHQUNZO1lBR2RDLGNBQWNkLGFBQVk1SixLQUFLRTtJQUNqQyxPQVJFc0ssdUNBT2NaLGFBQVk1SixLQUFLRTtHQUNtQztHQUdoRCxJQUFsQnlLLGtCQUFrQjtHQUNOLDhCQURaQTs7SUFHQUM7TUFsWkFuSjtZQXNaZ0JvSix5QkFBMEJDLFFBQVFqRyxNQUFLN0UsS0FBS0U7SUFDOUQsSUFBSVosTUFEMERZLFlBRTFEbEIsTUFwTUY0SixjQWtNdUQ1SSxLQUFLRTtPQUo1RDBLLHlCQU1FNUwsS0FDaUMsb0NBRmpDTTtJQUlKO0tBREl5RixPQUZBL0Y7S0FHQThGLFFBTDBENUU7S0FNMURFLE9BQU8sZ0NBRFAwRSxPQURBQztJQUdKLCtCQVB5RC9FLEtBTXJESTtJQUVNLElBQU4ySyxNQUFNLFdBUmtDRCxRQUV4QzlMO0lBT0osV0FUb0Q2RixNQUtoREMsT0FMcUQ5RSxRQVFyRCtLLEtBTkEvTDtJQUYwRGtCLGFBTTFERTtJQUtKLE9BSEkySztHQUdEO1lBR0RDLG9CQUFvQmhMLEtBQUtFOztLOzs7SUFDM0IsT0Fma0IySyxtREFjSTdLLEtBQUtFO0dBS2pCO1lBR1IrSyxxQkFBcUJqTCxLQUFLRTtJQUM1QixPQXZCa0IySzs7O2M7OzthQXNCSzdLO2FBQUtFO0dBS2xCO1lBR1JnTCxlQUF3QnRCLGFBQVk1SixLQUFLRTtJQUMzQyxHQUQwQjBKLGdCQTdKeEJMO0tBK0pJLE9BVkowQixxQkFRb0NqTCxLQUFLRTtJQUs5QixJQURQK0ksWUFKcUMvSSxZQUtyQ2xCLE1Bck9KNEosY0FnT29DNUksS0FBS0U7SUFNekMsU0FESWxCLEtBRUM7T0EzYkx5Qzt5QkF5Ykl6QyxLQU9LLG9DQVJMaUs7O3VDQUNBaks7S0FTRztNQUdVO09BQUxtTSxPQUFLLFdBakJPdkIsYUFyQ3hCZTtPQXVEUSxVQURJUTtPQUZKQzs7b0JBQUFBO0tBT0osR0FQSUE7TUFZQztPQURFQyxPQVhIRDs7T0FZQyxNQUFBLHFCQURFQztPQUNGLCtCQXRCTHJNO2NBdUJPLG9DQXhCUGlLOzs4QkFDQWpLO01Bb0JPLG9DQXJCUGlLOztJQXlCVTtLQUFScUMsUUFBUSxXQTdCVTFCLGFBQVk1SixLQUFLRTtLQThCbkNxTCxNQUFNLHVCQXpCUnZNLEtBd0JFc007S0FFSixNQTFCRXRNO0tBeUJROztTQUNWcUc7O01BQ1csSUFBTHdFLEtBQUssV0FoQ1dELGFBQVk1SixLQUFLRTtNQThCbkNxTCxRQUNKbEcsS0FDTXdFO01BRE4sVUFBQXhFO2lCQUFBQTtVQUFBQTs7O0lBSUEsT0FMSWtHO0dBS0M7WUFHUEMsaUJBQWlCQyxjQUFhQyxjQUFhMUwsS0FBS0U7SUFDbEQ7S0FBSWxCLE1BdlFGNEosY0FzUTJDNUksS0FBS0U7S0FFOUNpQixPQUFPLGlDQURQbkM7SUFFZSxTQUFmMk07SyxPQTdHRjNCLGNBMEdpQnlCLGNBQWFDOztJQUl0QixJQUFORSxNQWpHRnZCLG9CQWdHRXNCLGNBSHlDM0wsS0FBS0UsU0FDOUNsQjtJQUlKLE9BQUEsZ0NBSEltQyxNQUVBeUs7R0FDbUI7WUFRckJDLHFCQUFxQjdMLEtBQUtFO0lBQzVCO0tBQUlsQixNQXBSRjRKLGNBbVJxQjVJLEtBQUtFO0tBRXhCNkUsT0FEQS9GO0tBRUFNLE1BSHdCWTtLQUl4QkUsT0FBTyxnQ0FEUGQsS0FEQXlGO0lBR0osK0JBTHVCL0UsS0FJbkJJO0lBRU07S0FBTjBMO09BQU07MEVBTE45TTtJQU1KLCtCQUpJTSxLQUhtQlUsUUFNbkI4TCxLQUpBL0c7SUFGd0I3RSxhQUl4QkU7SUFLSixPQUhJMEw7R0FHRDtZQUdEQyxxQkFBcUIvTCxLQUFLRTtJQUM1QjtLQUFJbEIsTUFoU0Y0SixjQStScUI1SSxLQUFLRTtLQUV4QjZFLE9BREEvRjtLQUVBTSxNQUh3Qlk7S0FJeEJFLE9BQU8sZ0NBRFBkLEtBREF5RjtJQUdKLCtCQUx1Qi9FLEtBSW5CSTtJQUVNO0tBQU4wTDtPQUFNOzBFQUxOOU07SUFNSiwrQkFKSU0sS0FIbUJVLFFBTW5COEwsS0FKQS9HO0lBRndCN0UsYUFJeEJFO0lBS0osT0FISTBMO0dBR0Q7WUFLREUscUJBQXFCaE0sS0FBS0U7SUFDNUI7S0FBSWdHLE9BOVNGMEMsY0E2U3FCNUksS0FBS0U7S0FFeEJpRyxPQS9TRnlDLGNBNlNxQjVJLEtBQUtFO0tBR3hCNkUsZ0JBRkFtQixNQUNBQztLQUVBN0csTUFKd0JZO0tBS3hCRSxPQUFPLGdDQURQZCxLQURBeUY7SUFHSiwrQkFOdUIvRSxLQUtuQkk7SUFFTTtLQUFONkw7T0FBTTs7OztTQU5OL0Y7U0FDQUM7SUFNSiwrQkFKSTdHLEtBSm1CVSxRQU9uQmlNLEtBSkFsSDtJQUh3QjdFLGFBS3hCRTtJQUtKLE9BSEk2TDtHQUdEO1lBR0RDLHFCQUFxQmxNLEtBQUtFO0lBQzVCO0tBQUlnRyxPQTNURjBDLGNBMFRxQjVJLEtBQUtFO0tBRXhCaUcsT0E1VEZ5QyxjQTBUcUI1SSxLQUFLRTtLQUd4QjZFLGdCQUZBbUIsTUFDQUM7S0FFQTdHLE1BSndCWTtLQUt4QkUsT0FBTyxnQ0FEUGQsS0FEQXlGO0lBR0osK0JBTnVCL0UsS0FLbkJJO0lBRU07S0FBTjZMO09BQU07Ozs7U0FOTi9GO1NBQ0FDO0lBTUosK0JBSkk3RyxLQUptQlUsUUFPbkJpTSxLQUpBbEg7SUFId0I3RSxhQUt4QkU7SUFLSixPQUhJNkw7R0FHRDtZQUtERSxtQkFBbUJuTSxLQUFLRTtJQUMxQjtLQUFJbEIsTUExVUY0SixjQXlVbUI1SSxLQUFLRTtLQUV0QlosTUFGc0JZO0tBR3RCRSxPQUFPLGdDQURQZCxLQURBTjtJQUdKLCtCQUpxQmdCLEtBR2pCSTtJQUVNLElBQU5XLE1BQU0sK0JBSk4vQjtJQUtKLCtCQUpJTSxLQUZpQlUsUUFLakJlLEtBSkEvQjtJQURzQmtCLGFBR3RCRTtJQUtKLE9BSElXO0dBR0Q7WUFHRHFMLHFCQUFxQnBNLEtBQUtFO0lBQzVCLElBQUlaLE1BRHdCWTtJQUU1QiwrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUp1QlUsS0FHbkJJO0lBRUksSUFBSlIsSUF0ZkZ3SSxlQWlmcUJwSSxLQUNuQlY7SUFNRCxHQUFBLG1CQUZDTTtLQUdDLE1BQUEseURBUEROO0lBRHdCWSxhQUd4QkU7SUFTVyxPQVBYUjtHQU9tQztZQUdyQ3lNLGtCQUFrQnJNLEtBQUtFO0lBQ2YsSUFBTlosTUFBTSwrQkFEVVUsS0FBS0U7SUFFekIsK0JBRElaO0lBRHFCWSxhQUdkLGdDQUZQWjtJQUdKLE9BQUEsY0FKb0JVLEtBQ2hCVjtHQUdlO1lBR2pCZ04sbUJBQW1CdE0sS0FBS0U7SUFDMUIsSUFBSVosTUFEc0JZO0lBRTFCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnFCVSxLQUdqQkk7SUFIc0JGLGFBR3RCRTtJQUdKLE9BamhCRStILHdCQTJnQm1CbkksS0FDakJWO0dBSzJCO1lBRzdCaU4sbUJBQW1Cdk0sS0FBS0U7SUFDMUIsSUFBSVosTUFEc0JZO0lBRTFCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnFCVSxLQUdqQkk7SUFIc0JGLGFBR3RCRTtJQUdJLElBQUpSLElBdGhCRndJLGVBZ2hCbUJwSSxLQUNqQlY7SUFNSixPQXZrQmtCdUksa0JBaWtCZHZJLEtBS0FNO0dBQ21CO1lBR3JCNE0sbUJBQW1CeE0sS0FBS0U7SUFDMUIsSUFBSVosTUFEc0JZO0lBRTFCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnFCVSxLQUdqQkk7SUFIc0JGLGFBR3RCRTtJQUdJLElBQUpSLElBNWhCRnlJLGVBc2hCbUJySSxLQUNqQlY7SUFNSixPQXprQmtCd0ksa0JBbWtCZHhJLEtBS0FNO0dBQ21CO1lBR3JCNk0sb0JBQW9Cek0sS0FBS0U7SUFDM0IsSUFBSVosTUFEdUJZO0lBRTNCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnNCVSxLQUdsQkk7SUFIdUJGLGFBR3ZCRTtJQUdKLE9BdGlCRWlJLGVBZ2lCb0JySSxLQUNsQlY7R0FLa0I7WUFHcEJvTix1QkFBdUIxTSxLQUFLRTtJQUM5QixJQUFJWixNQUQwQlk7SUFFOUIsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKeUJVLEtBR3JCSTtJQUgwQkYsYUFHMUJFO0lBR0osT0Fua0JFNEgsd0JBNmpCdUJoSSxLQUNyQlY7R0FLMkI7WUFHN0JxTix1QkFBdUIzTSxLQUFLRTtJQUM5QixJQUFJWixNQUQwQlk7SUFFOUIsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKeUJVLEtBR3JCSTtJQUgwQkYsYUFHMUJFO0lBR0ksSUFBSlIsSUF4a0JGcUksZUFra0J1QmpJLEtBQ3JCVjtJQU1KLE9BN21Ca0J1SSxrQkF1bUJkdkksS0FLQU07R0FDbUI7WUFHckJnTix5QkFBeUI1TSxLQUFLRTtJQUNoQyxJQUFJWixNQUQ0Qlk7SUFFaEMsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKMkJVLEtBR3ZCSTtJQUg0QkYsYUFHNUJFO0lBR0osT0FsbEJFNkgsZUE0a0J5QmpJLEtBQ3ZCVjtHQUtrQjtZQUdwQnVOLHVCQUF1QjdNLEtBQUtFO0lBQzlCLElBQUlaLE1BRDBCWTtJQUU5QiwrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUp5QlUsS0FHckJJO0lBSDBCRixhQUcxQkU7SUFHSSxJQUFKUixJQXZsQkZzSSxlQWlsQnVCbEksS0FDckJWO0lBTUosT0F4bkJrQndJLGtCQWtuQmR4SSxLQUtBTTtHQUNtQjtZQUdyQmtOLHlCQUF5QjlNLEtBQUtFO0lBQ2hDLElBQUlaLE1BRDRCWTtJQUVoQywrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUoyQlUsS0FHdkJJO0lBSDRCRixhQUc1QkU7SUFHSixPQWptQkU4SCxlQTJsQnlCbEksS0FDdkJWO0dBS2tCO1lBZXBCeU4sYUFBYS9NLEtBQUtFO0lBQ3BCLElBQUlaLE1BRGdCWTtJQUVwQiwrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUplVSxLQUdYSTtJQUhnQkYsYUFHaEJFO0lBR00sSUFBTm1MLE1BQU07SUFDVixHQXRxQkU5SjtLQXdxQlE7TUFBSnFDLElBQUksb0JBVEs5RCxLQUNYVjtNQVNFOEMsSUFBSSxvQkFWS3BDLEtBVVksZ0NBVHZCVjtLQVVGLGlCQUxFaU0sUUFHRXpIO0tBR0osaUJBTkV5SCxRQUlFbko7OztLQUlJO01BQUprRixNQUFJLG9CQWRLdEgsS0FDWFY7TUFjRWlJLE1BQUksb0JBZkt2SCxLQWVZLGdDQWR2QlY7TUFlRW9ELElBQUksb0JBaEJLMUMsS0FnQlksZ0NBZnZCVjtNQWdCRWtJLElBQUksb0JBakJLeEgsS0FpQlksZ0NBaEJ2QlY7S0FpQkYsaUJBWkVpTSxRQVFFakU7S0FLSixpQkFiRWlFLFFBU0VoRTtLQUtKLGlCQWRFZ0UsUUFVRTdJO0tBS0osaUJBZkU2SSxTQVdFL0Q7O0lBS21CLFVBQUEsNkJBaEJyQitEO0lBZ0JxQixPQUFBO0dBQTRCOzs7O09Bam5CbkRqRDtPQVFBQztPQXlLQVc7T0FiQUY7T0FrQkFHO09BT0FDO09BN0NBUjtPQW1FQVc7T0FVQUM7T0FpQkFDO09BbUJBQztPQW1CQUM7T0FLQUc7T0FLQUM7T0FjQUM7T0FNQUc7T0FxQkFPO09BeUNBUTtPQXNDQU07T0FhQUs7T0FZQUU7T0FBQUE7T0FjQUM7T0FhQUU7T0FBQUE7T0FlQUM7T0F6SEFuQjtPQVFBQztPQTRIQW1CO09BZUFDO09BT0FDO09BU0FDO09BVUFDO09BVUFDO09BU0FDO09BU0FDO09BVUFDO09BU0FDO09BVUFDO09BcUJBQztPQTNSQXZDOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0N4WmlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFqQndDLGlCQUFpQixxQkFBUztJQUMxQkMsaUJBQWlCLHFCQUFTO0lBQzFCQyxtQkFBbUIscUJBQVM7SUFDNUJDLGtCQUFrQixxQkFBUztJQUMzQkMsaUJBQWlCLHFCQUFTO0lBQzFCQyxrQkFBa0IscUJBQVM7SUFDM0JDLGdCQUFnQixxQkFBUztJQUN6QkMsa0JBQWtCLHFCQUFTO0lBQzNCQyxrQkFBa0IscUJBQVM7SUFDM0JDLGtCQUFrQixxQkFBUztJQUMzQkM7TUFBc0IscUJBQVM7SUFDL0JDLGlCQUFpQixxQkFBUztJQUMxQkMsbUJBQW1CLHFCQUFTO0lBQzVCQztNQUF3QixxQkFBUztJQUNqQ0M7TUFBd0IscUJBQVM7SUFDakNDLGdCQUFnQixxQkFBUztJQUN6QkM7TUFBd0IscUJBQVM7SUFDakNDO01BQXdCLHFCQUFTO0lBQ2pDQyxnQkFBZ0IscUJBQVM7SUFDekJDO01BQXNCLHFCQUFTO0lBQy9CQztNQUF1QixxQkFBUztJQUNoQ0M7TUFBd0IscUJBQVM7SUFDakNDO01BQXFCLHFCQUFTO0lBQzlCQztNQUFzQixxQkFBUztJQUMvQkM7TUFBc0IscUJBQVM7SUFDL0JDO01BQXNCLHFCQUFTO0lBQy9CQztNQUF1QixxQkFBUztJQUNoQ0M7TUFBMEIscUJBQVM7SUFDbkNDO01BQTBCLHFCQUFTO0lBQ25DQztNQUE0QixxQkFBUztJQUNyQ0M7TUFBMEIscUJBQVM7SUFDbkNDO01BQTRCLHFCQUFTOzs7Ozs7WUFHckNDLGNBQWNwTjtJQUFJLE9BQWdDLHFCQUF2QixrQ0FBYkE7R0FBeUM7WUFDdkRxTixpQkFBaUJyTjtJQUFJLE9BQW1DLHFCQUExQixxQ0FBYkE7R0FBNEM7WUFDN0RzTixlQUFldE47SUFBSSxPQUFpQyxxQkFBeEIsbUNBQWJBO0dBQTBDO1lBQ3pEdU4sZ0JBQWdCdk47SUFBSSxPQUFrQyxxQkFBekIsb0NBQWJBO0dBQTJDO1lBQzNEd04sa0JBQWtCeE4sR0FBRXlOO0lBQUksT0FBb0M7dUJBQTNCLHNDQUFmek4sT0FBRXlOO0dBQWdEO0dBRzVDLElBQXhCQyx3QkFKQUgsZ0JBaENBOUI7WUEyQ0FrQyxlQUFlM04sR0FBSSxPQUFKQSxFQUFLO1lBQ3BCNE4sZUFBZTVOLEdBQUV5TixHQUFJLE9BQU0sc0JBQVp6TixPQUFFeU4sUUFBa0I7WUFDbkNJLGlCQUFpQjdOLEdBQUV5TixHQUFFSztJQUFJLE9BQU0sc0JBQWQ5TixPQUFFeU4sT0FBRUs7R0FBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWxEMUMxQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUdBRTtPQU9BQztPQUNBQztPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDdENpQjs7Ozs7Ozs7SUFYakJoTzs7Ozs7O0lBS0VrTztJQUNBQztJQUNBQztJQUNBQztJQUNBQyxvQkFURnRPO0lBVUV1Tyx3QkFWRnZPO0lBV0V3TztNQUFlLHVCQUZmRixtQkFDQUM7SUEyQkFFLGlCQUFlO0lBU2ZDLGdCQUFnQjtJQUNFLE1BQUE7SUFBbEJDLGtCQUFrQjtJQVVsQkMsZUFBZTtJQW5CZkM7SUF6QkFDO0lBQ0FDO0lBaURBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQXZDQUM7SUFRQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFvQ0ZDLHVCQUFtQixTQUFDO1lBQ3BCQyx1QkFBa0IsU0FBQztZQXNCbkJDLHVCQUFrQixTQUFDO1lBQ25CQyxlQUFhaFM7SUFBSSxRQUFKQTtjQUFBQSxHQW5CVjtnQkFtQlVBLEdBakJWO1FBeEZINkIsaUNBeUdhN0IsR0FmVjtLQUNBOztlQWNVQSxHQVRWO2lCQVNVQSxHQVBWO09BbEdINkIsa0JBeUdhN0IsaUJBTFY7SUFDQTtHQUk2RTtZQUVoRmlTLGdCQUNFaFA7SUFBSixTQUFJQSxNQUVDO2VBRkRBLE1BSUM7T0FoSEhwQix1QkE0R0VvQixNQU1DO0lBQ0E7R0FBQztZQUdKaVAseUJBQXlCOVM7SUFFWixJQUFYK1MsV0FiRkYsZ0JBV3lCN1M7SUFHM0IsT0FBQSxnQ0FESStTLFVBRnVCL1M7R0FHYjtZQUdaZ1QsZ0JBQWdCalI7SUFBTSxPQU50QitRLHVEQU1nQi9RO0dBQWtEO1lBQ2xFa1IsZUFBZWxSO0lBQU0sT0FQckIrUSxzREFPZS9RO0dBQWlEO1lBQ2hFbVIsc0JBQWlCLFVBQUU7WUFFbkJDLGlCQUFlQyxHQU1qQixTQUNDOztJQUdDQztNQTFJQTVRO2tCQTRJTzdCLEdBQUssT0FuQ1pnUyxlQW1DT2hTLEdBQWtDOztTQUVyQ0E7U0FDRixLQUFHLGtCQUREQSxlQUNxQixjQURyQkE7VUFDa0QsT0F0Q3REZ1MsZUFxQ0loUztTQUMyQztRQUFvQztJQUduRjBTO01BbEpBN1E7O1NBcUpJN0I7U0FDRixLQUFHLGtCQUREQSxhQUNxQixjQURyQkE7VUFBSixPQTVDQWdTLG1DQTRDSWhTO1NBQzJDO1FBQW9DOztTQUUvRUE7U0FDRixLQUFHLGtCQUREQSxhQUNxQixjQURyQkE7VUFDaUUsT0FmckV5UyxpQkFlcUUsb0JBRGpFelM7U0FDMkM7UUFBd0M7SUFHdkYyUztNQTVKQTlRO2tCQThKTzdCLEdBQUssT0FaWjBTLGlCQVkyQiw0QkFBcEIxUyxJQUEwQztrQkFDMUNBLEdBQUssT0FyQlp5UyxpQkFxQk96UyxHQUEwQztZQUdqRDRTLGVBQWFDLGFBQVlsUCxHQUFJLGtCQUFoQmtQLGFBQVlsUDtHQUFrQjtZQUMzQ21QLGtCQUFnQkQsYUFBWWhQO0lBQUssK0JBQUxBOzs7ZUFBQUE7OzhDQUFBQTsrQ0FBQUE7O0lBQWlCLE9BQUEsV0FBN0JnUDtHQUE0QztZQUc1REUsa0JBQWdCRjtJLFlBQ1I7SUFDTSxJQUFUcFIsY0FBUyxNQUFBLFdBRkVvUixhQUVYcFI7SUFBUyxPQUFBOztZQUdkdVIsZ0JBQWNDLFlBQVdDO0lBQW1DO0tBQXBCMVE7S0FBSDBCO0tBQXVCLE1BQUEsV0FBbkNnUCxZQUFlMVE7S0FBSyxNQUFBLFdBQS9CeVEsWUFBdUIvTztJQUF1QixPQUFBOztZQUU1RGlQLGtCQUFnQkYsWUFBV0MsWUFBV0U7SUFDVjtLQUQ0QnRRO0tBQUhOO0tBQUgwQjtLQUN0QixNQUFBLFdBRFVrUCxZQUFrQnRRO0tBQzNDLE1BQUEsV0FEY29RLFlBQTBCMVE7S0FDdkQsTUFBQSxXQURrQnlRLFlBQWtDL087S0FDcEQsTUFBQTtJQUE4QixPQUFBOztZQUc1Qm1QLGNBT0VSLGFBQVlyTztJQUFPLElBTkk4TyxjQUFVQyxhQUFRNU8sTUFNN0JIO0lBTGQ7VUFEMkNHO01BRXhCLFVBekVuQnNOLGdCQXVFbUNzQjtNQUVoQixPQUFBLGdDQUZNRDs7S0FJMEM7TUFKeEIxTyxRQUFBRDtNQUd6Q0UsS0FIeUNGO01BQVI2TyxZQUlnQyxnQ0FKaENEO01BSU8sTUFBQSxXQUV4Q1YsYUFIQWhPO01BSHVCNE8sYUFJSyxnQ0FKTEg7TUFBQUEsV0FBQUc7TUFBVUYsVUFBQUM7TUFBUTdPLE1BQUFDOztHQU1zQjtZQUdqRThPLGFBQWF0VSxLQUNmLE9BakZFNlMsZ0JBZ0ZhN1MsS0FFRztZQUdoQnVVLG9CQUFvQnBPO0lBQ3RCLElBQUluRyxNQUFNLGdDQURZbUcsS0FFdEIsTUFQRW1PLGFBTUV0VTtJQUNKLE9BQUEseUNBRElBO0dBQ3dCO1lBRzFCd1UscUJBQXFCck87SUFDdkIsSUFBSW5HLE1BRG1CbUcsZUFFdkIsTUFaRW1PLGFBV0V0VTtJQUNKLE9BQUEseUNBRElBO0dBQ3dCO1lBRzFCeVUsb0JBQW9CaEIsYUFBWXROLElBQUl1TyxXQUFXOVQ7SUFDakQsSUFBSStULG9CQURrQ0QsWUFFdEMsTUFGaUQ5VCxXQUM3Qjs7U0FDcEJ5Rjs7TUFDVyxJQUFMd0UsS0FINEIxRSxPQUVsQ0UsSUFFb0MsTUFBQSxXQUpkb04sYUFHaEI1STtNQUZGOEo7T0FHZSxnQ0FIZkE7TUFDSixVQUFBdE87aUJBQUFBO1VBQUFBOzs7V0FESXNPO0dBS1U7WUFHWkMsZUFBd0JuQixhQUFZdE47SUFDdEMsR0FEMEJzTixnQkFuRnhCTixrQkFxRkcsT0FoQkhxQixxQkFjb0NyTztJQUtwQixJQURadkYsSUFKZ0N1RixlQUtoQ3VPLFlBN0JKSixhQTRCSTFUO0lBRUosT0FmQTZULG9CQVN3QmhCLGFBQVl0TixJQUtoQ3VPLFdBREE5VDtHQUU2QztZQUdqRGlVLGlCQUFpQkMsY0FBYUMsY0FBYTVTO0lBQy9CLElBQVZ3RTthQUNBQyxVQUFVdEUsR0FBRUQsR0FBRXFTO0tBRGQvTjtLQUcyQjtNQUFBLE1BQUEsV0FKQ29PLGNBRWhCMVM7TUFFRixNQUFBLFdBSkt5UyxjQUVMeFM7TUFFWixNQUFBLGdDQUZnQm9TO0tBRWEsT0FBQTtJQUFjO0lBRW5DO0tBQU4xVSxNQUFNLCtCQU5tQ21DO0tBT0QsTUF4QzFDbVMsYUF1Q0V0VTtLQUNBMFUsWUFBWSwrQkFMWjlOLFdBRnlDekU7T0FDekN3RSxlQUtBM0c7S0FFb0I7SUFBQSxPQURwQjBVO0dBRUs7WUFHUE0saUJBQWlCbEksS0FBSW1JO0lBQ3ZCLElBQUlqVixNQUFNLGNBRFM4TSxNQUVuQixNQS9DRXdILGFBOENFdFU7SUFDSixPQUFBLDhDQUZ1QmlWLFlBQ25CalY7R0FDaUM7WUFHbkNrVixxQkFBcUJwSSxLQUFNLE9BTDNCa0ksaUJBS3FCbEksUUFBNEI7WUFDakRxSSxxQkFBcUJySSxLQUFNLE9BTjNCa0ksaUJBTXFCbEksUUFBNEI7WUFHakRzSSxpQkFBaUJuSSxLQUFJZ0k7SUFDdkI7S0FBSUksT0FBTyxjQURRcEk7S0FFZnFJLE9BQU8sc0JBRlFySTtLQUdmbEgsZ0JBRkFzUCxNQUNBQztLQUVnQixNQTFEbEJoQixhQXdERWdCO0tBRUosTUExREVoQixhQXVERWU7S0FHSixNQUFBO0lBQUEsT0FBQSw4Q0FKdUJKLFlBR25CbFA7R0FDdUQ7WUFHekR3UCxxQkFBcUJ0SSxLQUFNLE9BUDNCbUksaUJBT3FCbkksUUFBNEI7WUFDakR1SSxxQkFBcUJ2SSxLQUFNLE9BUjNCbUksaUJBUXFCbkksUUFBNEI7WUFFakR3SSxtQkFBbUJ6VSxLQUFNLE9BbkJ6QmdVLGlCQW1CbUJoVSxRQUE0QjtZQUMvQzBVLDhCQUF5QixTQUFDO1lBQzFCQywyQkFBc0IsU0FBQztZQUN2QkMsNEJBQXVCLFNBQUM7WUFDeEJDLDRCQUF1QixTQUFDO1lBQ3hCQyw0QkFBdUIsU0FBQztZQUN4QkMsNkJBQXdCLFNBQUM7WUFDekJDLGdDQUEyQixTQUFDO1lBQzVCQyxnQ0FBMkIsU0FBQztZQUM1QkMsa0NBQTZCLFNBQUM7WUFDOUJDLGdDQUEyQixTQUFDO1lBQzVCQyxrQ0FBNkIsU0FBQztZQUU5QkMseUJBQXlCNUMsYUFBWXROO0lBQ3ZDLE9BL0RFc08sb0JBOER5QmhCLGFBQVl0TixPQUFBQTtHQUM2Qjs7OztPQXhMbEVzTTtPQUNBQztPQTBDQU07T0FDQUM7T0FyQkFOO09BQ0FDO09BdUJBTztPQVVBRTtPQVFBQztPQVVBQztPQWpEQVY7T0F1REFXO09BQ0FFO09BQUFBO09BR0FDO09BS0FDO09BRUFHO09BSUFFO09Ba0NBVztPQVNBQztPQWlCQUs7T0FDQUM7T0FBQUE7T0FVQUk7T0FDQUM7T0FBQUE7T0FFQUM7T0EzREFsQjtPQUtBQztPQXVEQWtCO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BMUlBbkQ7O1FBekhFdkM7UUFDQUM7UUFDQUM7UUFDQUM7UUFHQUc7UUEyQkFLO1FBekJBQztRQUNBQztRQUhBUDtRQUZBRjtRQXNEQVU7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7O1FBcEVBeEI7UUFDQUM7UUFvQ0F5QjtRQUFBQTtRQW5DQXhCO1FBMkJBdUI7UUFHQWxCO1FBQ0FJO1FBREFKO1FBQUFBO1FBQUFBO1FBS0FtQjtRQUNBQztRQUNBQztRQUNBQztRQUNBckI7UUFDQUM7UUFMQWlCO1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBO1FBZUFoQjtRQUFBQTtRQUFBQTtRQWZBZ0I7UUFBQUE7UUFBQUE7UUFxQkFaO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0N2RE07Ozs7Ozs7SUFBQTtJQU1BO0lBTUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFNUm1FLG1CQUFtQjlWLE1BQUtRLEtBQU1FLFNBQVEwQjtJQUN4Qyx1Q0FEcUJwQyxNQUFXVTtHQUNhO0dBS3pCLElBQWxCcVY7R0FDMkQ7SSxPQVAzREQ7O0dBT2tCO0lBQWxCRTtJQUNBeEk7SUFFQXlJLGVBRkF6SSxnQkFGQXVJLGlCQUNBQztJQVFBRTtHQUMyRDtJLE9BaEIzREo7O0dBZ0JrQjtJQUFsQks7SUFDQTFJO0lBRUEySSxlQUZBM0ksZ0JBRkF5SSxpQkFDQUM7SUFRQUU7R0FHeUM7SSxPQTNCekNQOztHQTJCRjtJQURFUTtJQUlBNUk7SUFFQTZJLGlCQUZBN0ksa0JBTkEySSxtQkFFQUM7SUFXQUU7R0FHd0M7SSxPQXhDeENWOztHQXdDRjtJQURFVztJQUlBOUk7SUFFQStJLGdCQUZBL0ksaUJBTkE2SSxrQkFFQUM7SUFXQUU7R0FDMkQ7SSxPQW5EM0RiOztHQW1Ea0I7SUFBbEJjO0lBQ0FoSjtJQUVBaUosZUFGQWpKLGdCQUZBK0ksaUJBQ0FDO0lBUUFFO0dBQ3lEO0ksT0E1RHpEaEI7O0dBNERpQjtJQUFqQmlCO0lBQ0FqSjtJQUNBa0osY0FEQWxKLGVBRkFnSixnQkFDQUM7SUFLQUU7R0FHd0M7SSxPQXBFeENuQjs7R0FvRUY7SUFERW9CO0lBSUFySjtJQUVBc0osZ0JBRkF0SixpQkFOQW9KLGtCQUVBQztJQVdBRTtHQUd3QztJLE9BakZ4Q3RCOztHQWlGRjtJQURFdUI7SUFJQXRKO0lBRUF1SixnQkFGQXZKLGlCQU5BcUosa0JBRUFDO0lBV0FFO0dBR3dDO0ksT0E5RnhDekI7O0dBOEZGO0lBREUwQjtJQUlBdko7SUFFQXdKLGdCQUZBeEosaUJBTkFzSixrQkFFQUM7SUFXQUU7R0FLNEM7SSxPQTdHNUM1Qjs7R0E2R0Y7SUFERTZCO0lBSUF6SjtJQUVBMEo7VUFGQTFKLHFCQVJBd0osc0JBSUFDO0lBY0FFO0dBQzJEO0ksT0EzSDNEL0I7O0dBMkhrQjtJQUFsQmdDO0lBQ0EzSjtJQUVBNEosZUFGQTVKLGdCQUZBMEosaUJBQ0FDO1lBUUFFLGVBQWVDO2tCQUVGelgsS0FBS1YsS0FBSStCO0tBQUssT0FBQSwrQkFGWm9XLGtCQUVGelgsS0FBS1YsS0FBSStCO0lBQXVEO0lBRC9FO3FCQUFjQTthQUFLLE9BQUEsOEJBREZvVyxrQkFDSHBXO1lBQTJDOztHQUV4RDtZQUdDcVcsZUFBZUM7SUFFSDtLLE9BM0lackM7O0lBMElGO3FCQUFjdFYsS0FBS0U7YUFBVyxPQUFBO3lDQURieVgsa0JBQ0gzWCxLQUFLRTtZQUE0RDs7R0FFOUU7WUFHQzhPLGNBQWM0SSxJQUFLLE9BQUEsK0JBQUxBLElBQTJCO1lBRXpDQyxRQUFRQztJQUNWLElBRVcsT0FYVEosZUFRUUksWUFFQyxPQWhCVE4sZUFjUU07SUFDVixXQUhFOUksY0FFUThJO0dBSVQ7WUFJQ0MsZ0JBQWdCTjtrQkFFSHpYLEtBQUtWLEtBQUkrQjtLQUFLLE9BQUEsK0JBRlhvVyxrQkFFSHpYLEtBQUtWLEtBQUkrQjtJQUF3RDtJQURoRjtxQkFBY0E7YUFBSyxPQUFBLDhCQUREb1csa0JBQ0pwVztZQUE0Qzs7R0FFekQ7WUFHQzJXLGdCQUFnQkw7SUFFSjtLLE9BaktackM7O0lBZ0tGO3FCQUFjdFYsS0FBS0U7YUFBVyxPQUFBO3lDQURaeVgsa0JBQ0ozWCxLQUFLRTtZQUE2RDs7R0FFL0U7WUFHQ3FQLGVBQWVxSSxJQUFLLE9BQUEsK0JBQUxBLElBQTRCO1lBRTNDSyxTQUFTSDtJQUNYLElBRVcsT0FYVEUsZ0JBUVNGLFlBRUEsT0FoQlRDLGdCQWNTRDtJQUNYLFdBSEV2SSxlQUVTdUk7R0FJVjtZQUlDSSxrQkFBa0JUO2tCQUVMelgsS0FBS1YsS0FBSStCO0tBQUssT0FBQSwrQkFGVG9XLGtCQUVMelgsS0FBS1YsS0FBSStCO0lBQTBEO0lBRGxGO3FCQUFjQTthQUFLLE9BQUEsOEJBRENvVyxrQkFDTnBXO1lBQThDOztHQUUzRDtZQUdDOFcsa0JBQWtCUjtJQUVOO0ssT0F2TFpyQzs7SUFzTEY7cUJBQWN0VixLQUFLRTthQUFXLE9BQUE7eUNBRFZ5WCxrQkFDTjNYLEtBQUtFO1lBQStEOztHQUVqRjtZQUdDK08saUJBQWlCMkksSUFBSyxPQUFBLCtCQUFMQSxJQUE4QjtZQUUvQ1EsV0FBV047SUFDYjtLQUVXLE9BWFRLLGtCQVFXTDtLQUVGLE9BaEJUSSxrQkFjV0o7SUFDYixXQUhFN0ksaUJBRVc2STtHQUlaO1lBSUNPLGdCQUFnQkMsZ0JBQWVDO2tCQUd4QnZZLEtBQUtWLEtBQUkrQjtLQUNYLE9BQUE7O2NBSldpWDtjQUFlQztjQUd4QnZZO2NBQUtWO2NBQUkrQjtJQUM4RDtJQUhoRjtxQkFBY0E7YUFBSyxPQUFBO3lDQUREaVgsbUJBQWVDLG1CQUNuQmxYO1lBQWlFOztHQUk5RTtZQUdDbVgsZ0JBQWdCQyxnQkFBZUM7SUFJbkI7SyxPQWpOWnBEOztJQThNRjtxQkFDU3RWLEtBQUtFO2FBQ1AsT0FBQTs7c0JBSFd1WTtzQkFBZUM7c0JBRXhCMVk7c0JBQUtFO1lBQ2dFOztHQUU3RTtZQUtDeVksU0FBU0MsU0FBUUM7SUFDbkI7S0FFVyxPQWJUTCxnQkFVU0ksWUFBUUM7S0FFUixPQXBCVFIsZ0JBa0JTTyxZQUFRQztLQUZDQyxLQUVERDtLQUZGakIsS0FFTmdCO0lBQ1gsV0FIeUIsK0JBQVJoQixJQUFHa0I7R0FNbkI7WUFJQ0Msa0JBQWtCVCxnQkFBZUMsZ0JBQWVTO2tCQUt6Q2haLEtBQUtWLEtBQUkrQjtLQUNYLE9BQUE7O2NBTmFpWDtjQUFlQztjQUFlUztjQUt6Q2haO2NBQUtWO2NBQUkrQjtJQU9SO0lBWFY7cUJBQ1NBO2FBQ0YsT0FBQTs7c0JBSGFpWDtzQkFBZUM7c0JBQWVTO3NCQUV6QzNYO1lBQ2dGOztHQVV4RjtZQUdDNFgsa0JBQWtCUixnQkFBZUMsZ0JBQWVRO0lBU3BDO0ssT0F4UFo1RDs7SUFnUEY7cUJBQ1N0VixLQUFLRTthQUNQLE9BQUE7O3NCQUhhdVk7c0JBQWVDO3NCQUFlUTtzQkFFekNsWjtzQkFBS0U7WUFNRzs7R0FFaEI7WUFLQ2laLFdBQVdQLFNBQVFDLFNBQVFPO0lBQzdCO0tBRVcsT0FsQlRILGtCQWVXTCxZQUFRQyxZQUFRTztLQUVsQixPQWpDVEwsa0JBK0JXSCxZQUFRQyxZQUFRTztLQUZKQyxLQUVJRDtLQUZQTixLQUVERDtLQUZGakIsS0FFTmdCO0lBQ2IsV0FIOEIsK0JBQVhoQixJQUFHa0IsSUFBR087R0FNeEI7WUFJQ0MsZ0JBQWdCN0I7a0JBRUh6WCxLQUFLVixLQUFJK0I7S0FBSyxPQUFBLCtCQUZYb1csa0JBRUh6WCxLQUFLVixLQUFJK0I7SUFBd0Q7SUFEaEY7cUJBQWNBO2FBQUssT0FBQSw4QkFERG9XLGtCQUNKcFc7WUFBNEM7O0dBRXpEO1lBR0NrWSxnQkFBZ0I1QjtJQUVKO0ssT0E5UVpyQzs7SUE2UUY7cUJBQWN0VixLQUFLRTthQUFXLE9BQUE7eUNBRFp5WCxrQkFDSjNYLEtBQUtFO1lBQTZEOztHQUUvRTtZQUdDZ1AsZUFBZTBJLElBQUssT0FBQSwrQkFBTEEsSUFBNEI7WUFFM0M0QixTQUFTMUI7SUFDWCxJQUVXLE9BWFR5QixnQkFRU3pCLFlBRUEsT0FoQlR3QixnQkFjU3hCO0lBQ1gsV0FIRTVJLGVBRVM0STtHQUlWO1lBSUMyQixpQkFBaUJoQztrQkFFSnpYLEtBQUtWLEtBQUkrQjtLQUFLLE9BQUEsK0JBRlZvVyxrQkFFSnpYLEtBQUtWLEtBQUkrQjtJQUF5RDtJQURqRjtxQkFBY0E7YUFBSyxPQUFBLDhCQURBb1csa0JBQ0xwVztZQUE2Qzs7R0FFMUQ7WUFHQ3FZLGlCQUFpQi9CO0lBRUw7SyxPQXBTWnJDOztJQW1TRjtxQkFBY3RWLEtBQUtFO2FBQVcsT0FBQTt5Q0FEWHlYLGtCQUNMM1gsS0FBS0U7WUFBOEQ7O0dBRWhGO1lBR0NpUCxnQkFBZ0J5SSxJQUFLLE9BQUEsK0JBQUxBLElBQTZCO1lBRTdDK0IsVUFBVTdCO0lBQ1o7S0FFVyxPQVhUNEIsaUJBUVU1QjtLQUVELE9BaEJUMkIsaUJBY1UzQjtJQUNaLFdBSEUzSSxnQkFFVTJJO0dBSVg7WUFJQzhCLG1CQUFtQnRCLGdCQUFlQztrQkFHM0J2WSxLQUFLVixLQUFJK0I7S0FDWCxPQUFBOztjQUpjaVg7Y0FBZUM7Y0FHM0J2WTtjQUFLVjtjQUFJK0I7SUFDaUU7SUFIbkY7cUJBQWNBO2FBQUssT0FBQTt5Q0FERWlYLG1CQUFlQyxtQkFDdEJsWDtZQUFvRTs7R0FJakY7WUFHQ3dZLG1CQUFtQnBCLGdCQUFlQztJQUl0QjtLLE9BOVRacEQ7O0lBMlRGO3FCQUNTdFYsS0FBS0U7YUFDUCxPQUFBOztzQkFIY3VZO3NCQUFlQztzQkFFM0IxWTtzQkFBS0U7WUFDbUU7O0dBRWhGO1lBR0NrUCxrQkFBa0J3SSxJQUFHa0I7SUFBSyxPQUFBLCtCQUFSbEIsSUFBR2tCO0dBQWtDO1lBRXZEZ0IsWUFBWWxCLFNBQVFDO0lBQ3RCO0tBRVcsT0FiVGdCLG1CQVVZakIsWUFBUUM7S0FFWCxPQXBCVGUsbUJBa0JZaEIsWUFBUUM7SUFDdEIsV0FIRXpKLGtCQUVZd0osWUFBUUM7R0FJckI7R0FLRCxJQURFa0I7R0FLOEM7SSxPQWpWOUN6RTs7R0FpVkY7SUFERTBFO0lBSUFuTTtJQUVBb007O09BRkFwTTtPQVJBa007T0FJQUM7SUFjQUU7R0FLOEM7SSxPQW5XOUM1RTs7R0FtV0Y7SUFERTZFO0lBSUFyTTtJQUVBc007O09BRkF0TTtPQVJBb007T0FJQUM7SUFjQUU7R0FDeUQ7SSxPQWpYekQvRTs7R0FpWGlCO0lBQWpCZ0Y7SUFDQXZNO0lBQ0F3TSxjQURBeE0sZUFGQXNNLGdCQUNBQztJQUtBRTtHQUs4QztJLE9BM1g5Q2xGOztHQTJYRjtJQURFbUY7SUFJQXpNO0lBRUEwTTs7T0FGQTFNO09BUkF3TTtPQUlBQztJQWNBRTtHQUs4QztJLE9BN1k5Q3JGOztHQTZZRjtJQURFc0Y7SUFJQTNNO0lBRUE0TTs7T0FGQTVNO09BUkEwTTtPQUlBQztJQWNBRTtHQUN5RDtJLE9BM1p6RHhGOztHQTJaaUI7SUFBakJ5RjtJQUNBN007SUFDQThNLGNBREE5TSxlQUZBNE0sZ0JBQ0FDO0lBS0FFO0dBSzRDO0ksT0FyYTVDM0Y7O0dBcWFGO0lBREU0RjtJQUlBL007SUFFQWdOO1VBRkFoTixxQkFSQThNLHNCQUlBQztJQWNBRTtHQUs2QztJLE9BdmI3QzlGOztHQXViRjtJQURFK0Y7SUFJQWpOO0lBRUFrTjtVQUZBbE4sc0JBUkFnTix1QkFJQUM7SUFtQkVFO0dBSzhDO0ksT0E5Y2hEakc7O0dBOGNBO0lBREVrRztJQUlBbE07SUFFQW1NOztPQUZBbk07T0FSQWlNO09BSUFDO0lBZ0JGRTtHQUs4QztJLE9BbGU5Q3BHOztHQWtlRjtJQURFcUc7SUFJQXROO0lBRUF1Tjs7T0FGQXZOO09BUkFxTjtPQUlBQztJQWNBRTtHQUsyQztJLE9BcGYzQ3ZHOztHQW9mRjtJQURFd0c7SUFJQXhOO0lBRUF5TjtVQUZBek4sb0JBUkF1TixxQkFJQUM7SUFjQUU7R0FLNEM7SSxPQXRnQjVDMUc7O0dBc2dCRjtJQURFMkc7SUFJQTFOO0lBRUEyTjtVQUZBM04scUJBUkF5TixzQkFJQUM7SUFjQUU7R0FLNEM7SSxPQXhoQjVDN0c7O0dBd2hCRjtJQURFOEc7SUFJQTVOO0lBRUE2TjtVQUZBN04scUJBUkEyTixzQkFJQUM7SUFjQUU7R0FLNEM7SSxPQTFpQjVDaEg7O0dBMGlCRjtJQURFaUg7SUFJQTlOO0lBRUErTjtVQUZBL04scUJBUkE2TixzQkFJQUM7SUFjQUU7R0FLNkM7SSxPQTVqQjdDbkg7O0dBNGpCRjtJQURFb0g7SUFJQWhPO0lBRUFpTztVQUZBak8sc0JBUkErTix1QkFJQUM7SUFjQUU7R0FLZ0Q7SSxPQTlrQmhEdEg7O0dBOGtCRjtJQURFdUg7SUFJQWxPO0lBRUFtTzs7T0FGQW5PO09BUkFpTztPQUlBQztJQWNBRTtHQUtnRDtJLE9BaG1CaER6SDs7R0FnbUJGO0lBREUwSDtJQUlBcE87SUFFQXFPOztPQUZBck87T0FSQW1PO09BSUFDO0lBY0FFO0dBTVk7SSxPQW5uQlo1SDs7R0FrbkJGO0lBREU2SDtJQU1BdE87SUFFQXVPOztPQUZBdk87T0FWQXFPO09BSUFDO0lBZ0JBRTtHQUtnRDtJLE9BdG9CaEQvSDs7R0Fzb0JGO0lBREVnSTtJQUlBeE87SUFFQXlPOztPQUZBek87T0FSQXVPO09BSUFDO0lBY0FFO0dBTVk7SSxPQXpwQlpsSTs7R0F3cEJGO0lBREVtSTtJQU1BMU87SUFFQTJPOztPQUZBM087T0FWQXlPO09BSUFDO1lBZ0JBRSwyQkFBMkJsRztpQkFHcEJ6WCxLQUFLVixLQUFJK0I7S0FDWCxPQUFBLCtCQUpzQm9XLGtCQUdwQnpYLEtBQUtWLEtBQUkrQjtJQUNxRTtJQUh2RjtxQkFBY0E7YUFBSyxPQUFBLDhCQURVb1csa0JBQ2ZwVztZQUF5RTs7R0FJdEY7WUFLQ3VjLFdBQVdDLEtBQUlDO2lCQUVGOWQsS0FBS1YsS0FBSStCO0tBQTZCLFVBQUEsV0FGeEN3YyxLQUVXeGM7S0FBNkIsT0FBQSxXQUZwQ3ljLGFBRUY5ZCxLQUFLVjtJQUF3QztJQUQ1RDtxQkFBYytCO2FBQW1CLFVBQUEsV0FEcEJ3YyxLQUNDeGM7YUFBbUIsT0FBQSxXQURoQnljO1lBQ3VCOztHQUV2QztZQUdDQyxXQUFXRixLQUFJQztpQkFFRTlkLEtBQUtFLFNBQVE4ZDtLQUFRLE9BQUksV0FGL0JILEtBRStCLFdBRjNCQyxhQUVFOWQsS0FBS0UsU0FBUThkO0lBQWtEO0lBRGxGO3FCQUFjaGUsS0FBS0U7YUFBVyxPQUFJLFdBRHJCMmQsS0FDcUIsV0FEakJDLGFBQ0g5ZCxLQUFLRTtZQUEyQzs7R0FFN0Q7WUFHQzJkLElBQUlJLFdBQVVDLFlBQVdDLFlBQVdMO0lBQ3RDO0tBRVcsTUFUVEMsV0FNeUJJLFlBQVdMO0tBRTNCLE1BZFRGLFdBWWNNLFlBQXNCSjtJQUN0QyxXQUFVLFdBREpHLFdBQWdDSDtHQUlyQzs7Ozs7OztPQTNyQkN2STtPQUNBQztPQUNBeEk7T0FFQXlJO09BS0FDO09BQ0FDO09BQ0ExSTtPQUVBMkk7T0FLQUM7T0FFQUM7T0FJQTVJO09BRUE2STtPQUtBQztPQUVBQztPQUlBOUk7T0FFQStJO09BS0FDO09BQ0FDO09BQ0FoSjtPQUVBaUo7T0FLQUM7T0FDQUM7T0FDQWpKO09BQ0FrSjtPQUdBQztPQUVBQztPQUlBcko7T0FFQXNKO09BS0FDO09BRUFDO09BSUF0SjtPQUVBdUo7T0FLQUM7T0FFQUM7T0FJQXZKO09BRUF3SjtPQUtBQztPQUlBQztPQUlBeko7T0FFQTBKO09BUUFDO09BQ0FDO09BQ0EzSjtPQUVBNEo7T0FLQUM7T0FNQUU7T0FNQTFJO09BRUE2STtPQVFBRTtPQU1BQztPQU1Bekk7T0FFQTBJO09BUUFDO09BTUFDO09BTUFsSjtPQUVBbUo7T0FRQUM7T0FRQUc7T0FVQUc7T0FRQUk7T0FnQkFFO09BZUFFO09BUUFHO09BTUFDO09BTUFySztPQUVBc0s7T0FRQUM7T0FNQUM7T0FNQXZLO09BRUF3SztPQVFBQztPQVFBQztPQVFBeks7T0FFQTBLO09BUUFDO09BSUFDO09BSUFuTTtPQUVBb007T0FRQUM7T0FJQUM7T0FJQXJNO09BRUFzTTtPQVFBQztPQUNBQztPQUNBdk07T0FDQXdNO09BR0FDO09BSUFDO09BSUF6TTtPQUVBME07T0FRQUM7T0FJQUM7T0FJQTNNO09BRUE0TTtPQVFBQztPQUNBQztPQUNBN007T0FDQThNO09BR0FDO09BSUFDO09BSUEvTTtPQUVBZ047T0FRQUM7T0FJQUM7T0FJQWpOO09BRUFrTjtPQWFFQztPQUlBQztPQUlBbE07T0FFQW1NO09BVUZDO09BSUFDO09BTUFDO09BUUFDO09BSUFDO09BSUF4TjtPQUVBeU47T0FRQUM7T0FJQUM7T0FJQTFOO09BRUEyTjtPQVFBQztPQUlBQztPQUlBNU47T0FFQTZOO09BUUFDO09BSUFDO09BSUE5TjtPQUVBK047T0FRQUM7T0FJQUM7T0FJQWhPO09BRUFpTztPQVFBQztPQUlBQztPQUlBbE87T0FFQW1PO09BUUFDO09BSUFDO09BSUFwTztPQUVBcU87T0FRQUM7T0FJQUM7T0FNQXRPO09BRUF1TztPQVFBQztPQUlBQztPQUlBeE87T0FFQXlPO09BUUFDO09BSUFDO09BTUExTztPQUVBMk87T0FRQUM7T0FVQUM7T0FNQUc7T0FNQUY7Ozs7RTs7Ozs7O0dDN3BCYTs7SUFBQTs7OztFOzs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0lDaEViTztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRkFDO1lBSUFDLFNBQVdDLEtBQWdCQyxRQUFPcGQ7SUFDcEMsR0FEYW1kLFNBQVNFLE1BQVRGLFFBQUFHLFNBQVNELGNBQVRDO0lBRUMsSUFEQUMsVUFDQSxXQUZlSCxXQUFPcGQ7SUFHbEMsR0FIV3NkO0tBS0s7TUFBVkUsVUFBVSxnQ0FKSkQsU0FMWk47TUFVTXRlLE1BQU0sK0JBRE42ZTtNQUVBdmYsTUFBTSxXQVZaOGUsdUJBU01wZSxRQUxNNGU7TUFBQUUsWUFPQSxnQ0FETnhmLEtBTk1zZjtNQUFMOVosUUFNRHhGO01BTkp5ZixRQUtJL2U7O0tBSU07TUFUVmdmLFFBU1UsK0JBVEFKO01BQUFFLFlBQUFGO01BQUw5WjtNQUFMaWEsUUFBQUM7SUFZTSxJQUFONVksUUFBTSxXQWJtQnFZLFdBQ3pCTSxPQUFLamEsT0FEMkJ6RDtXQWFoQytFLFVBWlUwWTtjQUFWQztjQWVDO0dBQStEO1lBS2xFRSxnQkFBaUJDLFVBQVVDLE1BQUtDO0lBQ3hCLElBQU5wZixNQUFNLCtCQTFCUnNlO0lBMkJGLFdBRjZCYSxNQUN6Qm5mLFFBMUJGc2U7SUE0Qlk7S0FBVnBlO0tBQ0FsQixNQUFNLFdBM0JScWYsc0JBd0JFcmUsS0FFQUU7SUFFSixHQUxtQmdmO1NBTVpHLGFBTllIO1FBTVpHLGFBRkhyZ0I7TUFJQSxXQUFBLGtDQUpBQSxLQUVHcWdCO01BRUgsT0FBQTs7O1FBS0VOLFlBVEYvZixNQVN5QywrQkFUekNBLE9BSEFnQjtJQWFGLFdBZDJCbWYsTUFhdkJKLFVBVEYvZjtJQURBa0I7SUFhUSxJQUFOcUwsTUFBTSxXQWhCc0I2VCxXQWE1QkwsT0FWRjdlO09BQUFBLGVBQ0FsQixLQWNHLE9BRkR1TTtJQUtBLElBREUrVCxNQUNGLGtDQWpCRnRnQixLQURBa0I7SUF3QkEsT0FBQSxzQkFQSW9mO0dBT1M7O0lBUUU7Ozs7OztLQUFmQztLQUNBQztLQUNBQyx5QkFGQUYsY0FDQUM7SUFKcUU7Ozs7OztZQUdyRUQ7WUFDQUM7WUFDQUM7O1lBR0ZDLHFCQUFxQkMsWUFBV0M7SUFDbEMsS0FEdUJELFlBRWIsT0FGd0JDO1FBRzNCQyxPQUhnQkY7SUFHUixPQUFBLCtCQUFSRSxNQUgyQkQ7R0FHTTs7SUFjbEIsY0FBZEUsY0FqQk5KO2FBa0JNSyxXQUFXQztLQUFpQixXQUFBLGlCQUFqQkE7S0FBaUIsT0FBQTtJQUFnQjthQUM1Q0MsWUFBWWpnQixLQUFLVixLQUFJMGdCO0tBQTJCLFdBQUEsaUJBQTNCQTtLQUEyQixPQUFBLGlCQUFwQ2hnQixLQUFLVjtJQUErQzthQUNoRTRnQixXQUFXbGdCLEtBQUtFO0tBQXVCLFdBQUEsaUJBQTVCRixLQUFLRTtLQUF1QixPQUFBO0lBQTJCO2FBQ2xFaWdCLGFBQWVuZ0IsS0FBS0UsU0FBUU47S0FBaUIsV0FBQSxpQkFBOUJJLEtBQUtFLFNBQVFOO0tBQWlCLE9BQUE7SUFBaUM7Ozs7YUFKOUVrZ0IsYUFDQUMsWUFDQUUsYUFDQUMsWUFDQUM7S0E3QmtDQztLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBakI7S0FBQUM7S0FBQUM7SUFtQjVDO1lBbkI0Q1c7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQWpCO1lBQUFDO1lBQUFDOzs7O2FBeUN0Q0ssWUFBWVc7S0FDK0IsV0FBQSxpQkFEL0JBO0tBQytCLE9BbEM3Q2Y7SUFrQ3lFO2FBR3ZFSyxXQUFXdE4sYUFBWXVOO0tBQTZCLFdBQUEsaUJBQTdCQTtLQUE2QixPQUFBLGlCQUF6Q3ZOO0lBQXlEO2FBRXBFd04sWUFBWTNjLGNBQWF0RCxLQUFLVixLQUFJMGdCO0tBQ0EsV0FBQSxpQkFEQUE7S0FDQSxPQUFBLGlCQUR0QjFjLGNBQWF0RCxLQUFLVjtJQUNvQjthQUdsRDRnQixXQUFXdFcsYUFBWTVKLEtBQUtFO0tBQ2pCLFdBQUEsaUJBREEwSixhQUFZNUosS0FBS0U7S0FDakIsT0FBQTtJQUF1QzthQUdsRGlnQixhQUFldlcsYUFBWTVKLEtBQUtFLFNBQVFOO0tBQzdCLFdBQUEsaUJBRElnSyxhQUFZNUosS0FBS0UsU0FBUU47S0FDN0IsT0FBQTtJQUE2QzthQUd4RDJmLGFBQWFtQjttQkFFQTFnQixLQUFLVixLQUFJK0I7TUFBSyxPQWQzQjRlLFlBWWFTLGVBRUExZ0IsS0FBS1YsS0FBSStCO0tBQTRDO0tBRHBFLG9CQUFjQSxHQUFLLE9BZmpCMGUsV0FjYVcsZUFDRHJmLEdBQWlDO0lBRTlDO2FBR0NtZSxhQUFhbUI7S0FDZixjQUVTM2dCLEtBQU1FLFNBQVFOO01BQ2hCOzs7ZUFEUU07S0FDcUU7S0FIcEY7c0JBQWNGLEtBQUtFO2NBQVcsT0FmNUJnZ0IsV0FjYVMsZUFDRDNnQixLQUFLRTthQUFrRDs7SUFJcEU7YUFHQ3VmLE1BQU1tQjtLQUNSO01BRVcsT0FYVHBCLGFBUU1vQjtNQUVHLE9BaEJUckIsYUFjTXFCO0tBQ1IsV0FqQ0VkLFlBZ0NNYztJQUlQO0lBdkNMOztZQUdNZDtZQUlBQztZQUVBRTtZQUlBQztZQUlBQztZQUlBWjtZQU1BQztZQVFBQzs7OzthQWdCQUssWUFBWWUsZUFBY0M7S0FHMUIsV0FBQSxpQkFIWUQsZUFBY0M7S0FHMUIsT0FwRkZwQjtJQW9GNkM7YUFHM0NLLFdBQVdnQixjQUFhQyxjQUFhaEI7S0FDQSxXQUFBLGlCQURBQTtLQUNBLE9BQUEsaUJBRDFCZSxjQUFhQztJQUM2QjthQUdyRGYsWUFBWWdCLGVBQWNDLGVBQWNsaEIsS0FBS1YsS0FBSTBnQjtLQUNBLFdBQUEsaUJBREFBO0tBQ0EsT0FBQSxpQkFEckNpQixlQUFjQyxlQUFjbGhCLEtBQUtWO0lBQ29CO2FBR2pFNGdCLFdBQVdpQixjQUFhQyxjQUFhcGhCLEtBQUtFO0tBQy9CLFdBQUEsaUJBREFpaEIsY0FBYUMsY0FBYXBoQixLQUFLRTtLQUMvQixPQUFBO0lBQXFEO2FBR2hFaWdCLGFBQWVnQixjQUFhQyxjQUFhcGhCLEtBQUtFLFNBQVFOO0tBQzNDLFdBQUEsaUJBREl1aEIsY0FBYUMsY0FBYXBoQixLQUFLRSxTQUFRTjtLQUMzQyxPQUFBO0lBQTJEO2FBR3RFMmYsYUFBYThCLGFBQVlDO21CQUdsQnRoQixLQUFLVixLQUFJK0I7TUFBSyxPQWZyQjRlLFlBWWFvQixnQkFBWUMsZ0JBR2xCdGhCLEtBQUtWLEtBQUkrQjtLQUErRDtLQUZqRjtzQkFBY0E7Y0FBSyxPQWpCakIwZSxXQWdCYXNCLGdCQUFZQyxnQkFDYmpnQjthQUFtRDs7SUFHaEU7YUFHQ21lLGFBQWErQixhQUFZQztLQUMzQixjQUdTeGhCLEtBQU1FLFNBQVFOO01BQ2hCOzs7ZUFEUU07S0FDcUU7S0FKcEY7c0JBQ1NGLEtBQUtFO2NBQVcsT0FqQnZCZ2dCLFdBZWFxQixnQkFBWUMsZ0JBRWxCeGhCLEtBQUtFO2FBQW9FOztJQUlqRjthQUdDdWYsTUFBTWdDLGFBQVlDO0tBQ3BCO01BRVcsT0FaVGxDLGFBU01pQyxnQkFBWUM7TUFFVCxPQWxCVG5DLGFBZ0JNa0MsZ0JBQVlDO0tBQ3BCLFdBdkNFNUIsWUFzQ00yQixnQkFBWUM7SUFJbkI7SUE3Q0w7O1lBR001QjtZQU1BQztZQUlBRTtZQUlBQztZQUlBQztZQUlBWjtZQU9BQztZQVNBQzs7OzthQWdCQUssWUFBWWUsZUFBY0MsZUFBY2E7S0FHeEMsV0FBQSxpQkFIWWQsZUFBY0MsZUFBY2E7S0FHeEMsT0ExSUZqQztJQTBJMkQ7YUFHekRLLFdBQVdnQixjQUFhQyxjQUFhWSxjQUFhNUI7S0FDQSxXQUFBLGlCQURBQTtLQUNBLE9BQUEsaUJBRHZDZSxjQUFhQyxjQUFhWTtJQUM2QjthQUdsRTNCO0tBQVlnQixlQUFjQyxlQUFjVyxlQUFjN2hCLEtBQUtWLEtBQUkwZ0I7S0FDQSxXQUFBLGlCQURBQTtLQUNBLE9BQUE7O2NBRG5EaUI7Y0FBY0M7Y0FBY1c7Y0FBYzdoQjtjQUFLVjs7SUFDb0I7YUFHL0U0Z0I7S0FBV2lCLGNBQWFDLGNBQWFVLGNBQWE5aEIsS0FBS0U7S0FDNUM7O1FBQUE7Z0JBREFpaEIsY0FBYUMsY0FBYVUsY0FBYTloQixLQUFLRTtLQUM1QyxPQUFBO0lBQWtFO2FBRzdFaWdCO0tBQWVnQixjQUFhQyxjQUFhVSxjQUFhOWhCLEtBQUtFLFNBQVFOO0tBQ3hEOztRQUFBO2dCQURJdWhCLGNBQWFDLGNBQWFVLGNBQWE5aEIsS0FBS0UsU0FBUU47S0FDeEQsT0FBQTtJQUF3RTthQUduRjJmLGFBQWE4QixhQUFZQyxhQUFZUzttQkFHOUIvaEIsS0FBS1YsS0FBSStCO01BQ1gsT0FoQkw0ZTtlQVlhb0IsZ0JBQVlDLGdCQUFZUyxnQkFHOUIvaEIsS0FBS1YsS0FBSStCO0tBQ2lFO0tBSG5GO3NCQUFjQTtjQUFLLE9BakJqQjBlO3VCQWdCYXNCLGdCQUFZQyxnQkFBWVMsZ0JBQ3pCMWdCO2FBQW9FOztJQUlqRjthQUdDbWUsYUFBYStCLGFBQVlDLGFBQVlRO0tBQ3ZDLGNBSVNoaUIsS0FBTUUsU0FBUU47TUFDaEI7OztlQURRTTtLQUNxRTtLQUxwRjtzQkFDU0YsS0FBS0U7Y0FDUCxPQW5CTGdnQjt1QkFnQmFxQjt1QkFBWUM7dUJBQVlRO3VCQUU5QmhpQjt1QkFBS0U7YUFDbUU7O0lBSWhGO2FBR0N1ZixNQUFNZ0MsYUFBWUMsYUFBWU87S0FDaEM7TUFFVyxPQWJUekMsYUFVTWlDLGdCQUFZQyxnQkFBWU87TUFFckIsT0FwQlQxQyxhQWtCTWtDLGdCQUFZQyxnQkFBWU87S0FDaEM7YUF6Q0VuQyxZQXdDTTJCLGdCQUFZQyxnQkFBWU87OztJQUkvQjtJQS9DTDs7WUFHTW5DO1lBTUFDO1lBSUFFO1lBSUFDO1lBSUFDO1lBSUFaO1lBUUFDO1lBVUFDOzs7SUFXMEI7Ozs7S0FBeEJ5QztJQUg0RTtrREFHNUVBOzs7O0lBeUJZOztZQWdDaEJDLGlCQUFpQi9QLEdBQUdnUSxhQUFZQztJQUNsQyxLQURzQkQsYUFFWixPQUFBLFdBRlNoUSxHQUFlaVE7UUFHM0JDLGdCQUhlRjtJQUdBLE9BQUEsOEJBSEhoUSxRQUdaa1EsZUFIMkJEO0dBR3VDOztHQUd2QyxTQUFoQzVpQiwwQyxPQU5BMGlCOztHQVVBLFVBQUE7R0FERixTQURFSTtJLE9BUkFKOztHQWNlLFVBQUE7R0FBakIsU0FERUssa0MsT0FiQUw7OzthQTZFRXJDLFlBQVlFO0tBQ2Q7TUFLUSxXQUFFLGlCQU5JQTtNQUtOLE9BQUE7TUFESixXQUFFO0tBQUYsT0FBQTtJQUdFO2FBR0pELFdBQVdsTixZQUFXbU47S0FDeEIsSUFBSXlDLG1CQUNBOWM7bUJBQ1drRTtNQUNXLFdBQUEsaUJBSmJnSixZQUdFaEo7TUFGWDRZLGNBR1UsZ0NBSFZBO01BQ0E5Yzs7S0FHVTtLQUZkLGlCQUh3QnFhO0tBTWQsSUFBTmhoQixNQUFNLGlCQU5jZ2hCO1FBRXBCcmEsZUFJQTNHO01BR0MsT0ExRkxTO0tBeUZLLFdBUERnakIsYUFPQyxPQUFBLDhCQUZEempCO0tBRUMsT0FBQTtJQUN1RDthQUcxRGloQixZQUFZcmMsYUFBWTVELEtBQUtWLEtBQUkwZ0I7S0FDbkM7TUFDSXRhLE9BRE0saUJBRHlCc2E7TUFHL0I5ZixjQUFjLDhCQUhRRixLQUFLVixLQUUzQm9HO01BRUFDO21CQUNXa0U7TUFGWDNKLGFBR1MsaUJBTkMwRCxhQUFZNUQsS0FHdEJFLFlBRVcySjtNQURYbEU7O0tBR1U7S0FGZCxpQkFMbUNxYTtZQUkvQnJhLGVBRkFEO2VBQ0F4RjtlQWhHSlQ7SUF1RzZEO2FBRzNEeWdCLFdBQVdqVyxZQUFXakssS0FBS0U7S0FDN0IsSUFBSWxCLE1BQU8sNkJBRGFnQixLQUFLRSxVQUV6QndpQjtjQUNBdGlCO01BQ0YsR0FIRXBCLE9BQ0EwakIsUUExR0pIO01BMEdJRzs4QkFGU3pZLFlBQVdqSyxLQUFLRTtLQU1RO0tBRXhCLElBQVR5aUIsU0FBUyxpQkFQVDNqQixLQUVBb0I7UUFEQXNpQixTQURBMWpCLEtBcEdKd2pCO0tBNEdtQixPQURmRztJQUVFO2FBR0p4QyxhQUFlbFcsWUFBWWpLLEtBQU1FLFNBQVFOO0tBQUssZ0RBQWJNO0lBQWtEO2FBRW5GcWYsYUFBYW1CO21CQUVBMWdCLEtBQUtWLEtBQUkrQjtNQUFLLE9BOUIzQjRlLFlBNEJhUyxlQUVBMWdCLEtBQUtWLEtBQUkrQjtLQUE0QztLQURwRSxvQkFBY0EsR0FBSyxPQXpDakIwZSxXQXdDYVcsZUFDRHJmLEdBQWlDO0lBRTlDO2FBR0NtZSxhQUFhbUI7bUJBRUkzZ0IsS0FBS0UsU0FBUU47TUFBTSxPQVZwQ3VnQixhQVFhUSxlQUVJM2dCLEtBQUtFLFNBQVFOO0tBQW9EO0tBRHBGO3NCQUFjSSxLQUFLRTtjQUFXLE9BdEI1QmdnQixXQXFCYVMsZUFDRDNnQixLQUFLRTthQUFrRDs7SUFFcEU7YUFHQ3VmLE1BQU1tQjtLQUNSLElBRVcsTUFUVHBCLGFBTU1vQixnQkFFRyxNQWRUckIsYUFZTXFCO0tBQ1IsV0EvREVkLFlBOERNYztJQUlQO0lBckU2RDtZQUc1RGQ7WUFVQUM7WUFZQUU7WUFhQUM7WUFhQUM7WUFFQVo7WUFNQUM7WUFNQUM7OzthQVdBSyxZQUFZOEMsSUFBR0M7S0FDakI7TUFLUSxVQUFFLGlCQU5JRCxJQUFHQztNQUtULE1BQUE7TUFESixVQUFFO0tBQUYsT0FBQTtJQUdFO2FBR0o5QyxXQUFXbE4sWUFBV0MsWUFBV2tOO0tBQ25DLElBQUl5QyxtQkFDQTljO2tCQUNXa0U7TUFDVyxVQUFBLGlCQUpiZ0osWUFBV0MsWUFHVGpKO01BRlg0WSxjQUdVLGdDQUhWQTtNQUNBOWM7O0tBR1U7S0FGZCxpQkFIbUNxYTtLQU16QixJQUFOaGhCLE1BQU0saUJBTnlCZ2hCO1FBRS9CcmEsZUFJQTNHO01BR0MsT0FuS0xTO0tBa0tLLFVBUERnakIsYUFPQyxNQUFBLDhCQUZEempCO0tBRUMsT0FBQTtJQUN1RDthQUcxRGloQixZQUFZcmMsYUFBWUMsYUFBWTdELEtBQUtWLEtBQUkwZ0I7S0FDL0M7TUFDSXRhLE9BRE0saUJBRHFDc2E7TUFHM0M5ZixjQUFjLDhCQUhvQkYsS0FBS1YsS0FFdkNvRztNQUVBQztrQkFDV2tFO01BRlgzSjtPQUdTLGlCQU5DMEQsYUFBWUMsYUFBWTdELEtBR2xDRSxZQUVXMko7TUFEWGxFOztLQUdVO0tBRmQsaUJBTCtDcWE7WUFJM0NyYSxlQUZBRDtlQUNBeEY7ZUF6S0pUO0lBZ0w2RDthQUczRHlnQixXQUFXalcsWUFBV0MsWUFBV2xLLEtBQUtFO0tBQ3hDLElBQUlsQixNQUFPLDZCQUR3QmdCLEtBQUtFLFVBRXBDd2lCO2NBQ0F0aUI7TUFDRixHQUhFcEIsT0FDQTBqQixRQW5MSkg7TUFtTElHOzhCQUZTelksWUFBV0MsWUFBV2xLLEtBQUtFO0tBTVE7S0FFbkMsSUFBVHlpQixTQUFTLGlCQVBUM2pCLEtBRUFvQjtRQURBc2lCLFNBREExakIsS0E3S0p3akI7S0FxTG1CLE9BRGZHO0lBRUU7YUFHSnhDLGFBQWVsVyxZQUFZQyxZQUFZbEssS0FBTUUsU0FBUU4sR0FDdkQsZ0RBRCtDTTtJQUNWO2FBR25DcWYsYUFBYThCLGFBQVlDO2tCQUdsQnRoQixLQUFLVixLQUFJK0I7TUFBSyxPQWpDckI0ZSxZQThCYW9CLGdCQUFZQyxnQkFHbEJ0aEIsS0FBS1YsS0FBSStCO0tBQStEO0tBRmpGO3NCQUFjQTtjQUFLLE9BM0NqQjBlLFdBMENhc0IsZ0JBQVlDLGdCQUNiamdCO2FBQW1EOztJQUdoRTthQUdDbWUsYUFBYStCLGFBQVlDO2tCQUlsQnhoQixLQUFLRSxTQUFRTjtNQUNmLE9BaEJMdWdCLGFBV2FvQixnQkFBWUMsZ0JBSWxCeGhCLEtBQUtFLFNBQVFOO0tBQ2dEO0tBSnRFO3NCQUNTSSxLQUFLRTtjQUFXLE9BMUJ2QmdnQixXQXdCYXFCLGdCQUFZQyxnQkFFbEJ4aEIsS0FBS0U7YUFBb0U7O0lBSWpGO2FBR0N1ZixNQUFNZ0MsYUFBWUM7S0FDcEI7TUFFVyxNQVpUbEMsYUFTTWlDLGdCQUFZQztNQUVULE1BbEJUbkMsYUFnQk1rQyxnQkFBWUM7S0FDcEIsV0FyRUU1QixZQW9FTTJCLGdCQUFZQztJQUluQjtJQTNFNkQ7WUFHNUQ1QjtZQVVBQztZQVlBRTtZQWFBQztZQWFBQztZQUlBWjtZQU9BQztZQVNBQzs7O2FBV0FLLFlBQVk4QyxJQUFHQyxJQUFHQztLQUNwQjtNQUtRLFVBQUUsaUJBTklGLElBQUdDLElBQUdDO01BS1osTUFBQTtNQURKLFVBQUU7S0FBRixPQUFBO0lBR0U7YUFHSi9DLFdBQVdsTixZQUFXQyxZQUFXRSxZQUFXZ047S0FDOUMsSUFBSXlDLG1CQUNBOWM7a0JBQ1drRTtNQUNXLFVBQUEsaUJBSmJnSixZQUFXQyxZQUFXRSxZQUdwQm5KO01BRlg0WSxjQUdVLGdDQUhWQTtNQUNBOWM7O0tBR1U7S0FGZCxpQkFIOENxYTtLQU1wQyxJQUFOaGhCLE1BQU0saUJBTm9DZ2hCO1FBRTFDcmEsZUFJQTNHO01BR0MsT0FsUExTO0tBaVBLLFVBUERnakIsYUFPQyxNQUFBLDhCQUZEempCO0tBRUMsT0FBQTtJQUN1RDthQUcxRGloQixZQUFZcmMsYUFBWUMsYUFBWUcsYUFBWWhFLEtBQUtWLEtBQUkwZ0I7S0FDM0Q7TUFDSXRhLE9BRE0saUJBRGlEc2E7TUFHdkQ5ZixjQUFjLDhCQUhnQ0YsS0FBS1YsS0FFbkRvRztNQUVBQztrQkFDV2tFO01BRlgzSjtPQUdTO2VBTkMwRCxhQUFZQyxhQUFZRyxhQUFZaEUsS0FHOUNFLFlBRVcySjtNQURYbEU7O0tBR1U7S0FGZCxpQkFMMkRxYTtZQUl2RHJhLGVBRkFEO2VBQ0F4RjtlQXhQSlQ7SUErUDZEO2FBRzNEeWdCLFdBQVdqVyxZQUFXQyxZQUFXRSxZQUFXcEssS0FBS0U7S0FDbkQsSUFBSWxCLE1BQU8sNkJBRG1DZ0IsS0FBS0UsVUFFL0N3aUI7Y0FDQXRpQjtNQUNGLEdBSEVwQixPQUNBMGpCLFFBbFFKSDtNQWtRSUc7O3FCQUZTelksWUFBV0MsWUFBV0UsWUFBV3BLLEtBQUtFO0tBTVE7S0FFOUMsSUFBVHlpQixTQUFTLGlCQVBUM2pCLEtBRUFvQjtRQURBc2lCLFNBREExakIsS0E1UEp3akI7S0FvUW1CLE9BRGZHO0lBRUU7YUFHSnhDLGFBQWVsVyxZQUFZQyxZQUFZRSxZQUFZcEssS0FBTUUsU0FBUU4sR0FDbkUsZ0RBRDJETTtJQUN0QjthQUduQ3FmLGFBQWE4QixhQUFZQyxhQUFZUztrQkFHOUIvaEIsS0FBS1YsS0FBSStCO01BQ1gsT0FsQ0w0ZTtlQThCYW9CLGdCQUFZQyxnQkFBWVMsZ0JBRzlCL2hCLEtBQUtWLEtBQUkrQjtLQUNpRTtLQUhuRjtzQkFBY0E7Y0FBSyxPQTNDakIwZTt1QkEwQ2FzQixnQkFBWUMsZ0JBQVlTLGdCQUN6QjFnQjthQUFvRTs7SUFJakY7YUFHQ21lLGFBQWErQixhQUFZQyxhQUFZUTtrQkFLOUJoaUIsS0FBS0UsU0FBUU47TUFDZixPQWxCTHVnQjtlQVlhb0I7ZUFBWUM7ZUFBWVE7ZUFLOUJoaUI7ZUFBS0U7ZUFBUU47S0FDaUU7S0FMdkY7c0JBQ1NJLEtBQUtFO2NBQ1AsT0E1QkxnZ0I7dUJBeUJhcUI7dUJBQVlDO3VCQUFZUTt1QkFFOUJoaUI7dUJBQUtFO2FBQ21FOztJQUloRjthQUdDdWYsTUFBTWdDLGFBQVlDLGFBQVlPO0tBQ2hDO01BRVcsTUFiVHpDLGFBVU1pQyxnQkFBWUMsZ0JBQVlPO01BRXJCLE1BcEJUMUMsYUFrQk1rQyxnQkFBWUMsZ0JBQVlPO0tBQ2hDO2FBdkVFbkMsWUFzRU0yQixnQkFBWUMsZ0JBQVlPOzs7SUFJL0I7SUE3RTZEO1lBRzVEbkM7WUFVQUM7WUFZQUU7WUFhQUM7WUFhQUM7WUFJQVo7WUFRQUM7WUFVQUM7OztJQWpSTTtLQUFBO0tBREEsTUFBQTtLQURKLFVBQUU7S0FKSkssY0FFQTthQVFBQyxXQUFXQztLQUNiLElBQUl5QyxtQkFDQTljO2tCQUNXa0U7TUFDVyxVQUFBLGlCQURYQTtNQUZYNFksY0FHVSxnQ0FIVkE7TUFDQTljOztLQUdVO0tBRmQsaUJBSGFxYTtLQU1ILElBQU5oaEIsTUFBTSxpQkFOR2doQjtRQUVUcmEsZUFJQTNHO01BR0MsT0FqQ0xTO0tBZ0NLLFVBUERnakIsYUFPQyxNQUFBLDhCQUZEempCO0tBRUMsT0FBQTtJQUN1RDthQUcxRGloQixZQUFZamdCLEtBQUtWLEtBQUkwZ0I7S0FDdkI7TUFDSXRhLE9BRE0saUJBRGFzYTtNQUduQjlmLGNBQWMsOEJBSEpGLEtBQUtWLEtBRWZvRztNQUVBQztrQkFDV2tFO01BRlgzSixhQUdTLGlCQU5DRixLQUdWRSxZQUVXMko7TUFEWGxFOztLQUdVO0tBRmQsaUJBTHVCcWE7WUFJbkJyYSxlQUZBRDtlQUNBeEY7ZUF2Q0pUO0lBOEM2RDthQUczRHlnQixXQUFXbGdCLEtBQUtFO0tBQ2xCLElBQUlsQixNQUFPLDZCQURFZ0IsS0FBS0UsVUFFZHdpQjtjQUNBdGlCO01BQ0YsR0FIRXBCLE9BQ0EwakIsUUFqREpIO01BaURJRzs4QkFGUzFpQixLQUFLRTtLQU1RO0tBRWIsSUFBVHlpQixTQUFTLGlCQVBUM2pCLEtBRUFvQjtRQURBc2lCLFNBREExakIsS0EzQ0p3akI7S0FtRG1CLE9BRGZHO0lBRUU7YUFHSnhDLGFBQWVuZ0IsS0FBTUUsU0FBUU47S0FBSyw4Q0FBYk07SUFBa0Q7SUFDeEQ7S0FBZnFmLG1CQXZDQVEsWUFZQUU7S0E0QkFULG1CQWZBVSxZQWFBQztLQUdBVixZQW5EQUssYUFpREFQLGNBQ0FDOztZQXhDQU87WUFZQUU7WUFhQUM7WUFhQUM7WUFoREFMO1lBaURBUDtZQUNBQztZQUNBQzs7O0lBbEZlOzs7O0tBQUE7Ozs7SUFQQTs7OztLQUFBOzs7O0lBUEE7Ozs7S0FBQTs7OztJQVhXOzs7O0tBQXhCeUM7S0FIYTs7OENBR2JBOzs7O0lBUHdCOzs7O0tBQXhCQTtLQUhhOzs4Q0FHYkE7Ozs7OztPQXpRSjVEO09BRUFEO09BREFEO09BR0FHO09BcUJBVTs7OztRQXlPNEI7Ozs7U0FBeEJpRDtTQUhhOztrREFHYkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbFFKek07SUFDQXpJO0lBQ0F1STtJQUNBclQ7SUFDQXNUO0lBQ0FsTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRUF5YSxnQkFBa0IvaUIsS0FBTUUsU0FBUThpQjtJQUNsQyxpREFEMEI5aUI7R0FDcUI7O0lBRzdDMFY7SUFDQTNJO0lBQ0F5STtJQUNBdlQ7SUFDQXdUO0lBQ0FwTjtZQUVBMGEsZ0JBQWtCampCLEtBQU1FLFNBQVE4aUI7SUFDbEMsaURBRDBCOWlCO0dBQ3FCOztJQUc3QzZWO0lBQ0E3STtJQUNBMkk7SUFDQS9TO0lBQ0FnVDtJQUNBNU07WUFFQWdhLGtCQUFvQmxqQixLQUFNRSxTQUFROGlCO0lBQ3BDLG1EQUQ0QjlpQjtHQUNxQjs7SUFHL0NnVztJQUNBL0k7SUFDQTZJO0lBQ0FoVDtJQUNBaVQ7SUFDQWpOO1lBRUFtYSxpQkFBbUJuakIsS0FBTUUsU0FBUThpQjtJQUNuQyxrREFEMkI5aUI7R0FDcUI7O0lBRzlDbVc7SUFDQWpKO0lBQ0ErSTtJQUNBMVQ7SUFDQTJUO0lBQ0FqTjtZQUVBaWEsZ0JBQWtCcGpCLEtBQU1FLFNBQVE4aUI7SUFDbEMsaURBRDBCOWlCO0dBQ3FCOztJQUc3Q3NXO0lBQ0FsSjtJQUNBZ0o7SUFDQTNUO0lBQ0E0VDtJQUNBbk47WUFDQWlhLGVBQWlCcmpCLEtBQU1FLFNBQVE4aUI7SUFBUSxnREFBaEI5aUI7R0FBOEQ7O0lBQ3JGeVc7SUFDQXRKO0lBQ0FvSjtJQUNBeFQ7SUFDQXlUO0lBQ0FuTjtZQUVBK1osaUJBQW1CdGpCLEtBQU1FLFNBQVE4aUI7SUFDbkMsa0RBRDJCOWlCO0dBQ3FCOztJQUc5Q29iO0lBQ0FsTjtJQUNBZ047SUFDQXBXO0lBQ0FxVztJQUNBclE7WUFFQXVZLHNCQUF3QnZqQixLQUFNRSxTQUFROGlCO0lBQ3hDLHVEQURnQzlpQjtHQUNxQjs7SUFPakRvUDtJQU9BaU07SUFPQXRXO0lBT0F1VztJQVFBdlE7WUFXQXVZLHVCQUp5QnhqQixLQUFNRSxTQUFROGlCO0lBQ3pDLHdEQURpQzlpQjtHQUNxQjs7SUFXdEQ0VztJQUNBdko7SUFDQXFKO0lBQ0ExVDtJQUNBMlQ7SUFDQXJOO1lBRUFpYSxpQkFBbUJ6akIsS0FBTUUsU0FBUThpQjtJQUNuQyxrREFEMkI5aUI7R0FDcUI7O0lBRzlDK1c7SUFDQXhKO0lBQ0FzSjtJQUNBNVQ7SUFDQTZUO0lBQ0F2TjtZQUVBaWEsaUJBQW1CMWpCLEtBQU1FLFNBQVE4aUI7SUFDbkMsa0RBRDJCOWlCO0dBQ3FCOztJQUc5Q2tYO0lBQ0ExSjtJQUNBd0o7SUFDQTlUO0lBQ0ErVDtJQUNBek47WUFFQWlhLHFCQUF1QjNqQixLQUFNRSxTQUFROGlCO0lBQ3ZDLHNEQUQrQjlpQjtHQUNxQjs7SUFHbEQyWDtJQUNBN0k7SUFDQXdJO0lBQ0FuVTtJQUNBcVU7SUFDQS9OO1lBRUFpYSxlQUFpQnhSLEdBQUdwUyxLQUFNRSxTQUFROGlCO0lBQ3BDLGdEQUQ0QjlpQjtHQUNrQjs7SUFHNUMyakI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsa0JBQW9CL1IsR0FBR3BTLEtBQU1FLFNBQVE4aUI7SUFDdkMsaURBRCtCOWlCO0dBQ2dCOztJQUc3QytYO0lBQ0ExSTtJQUNBd0k7SUFDQXZVO0lBQ0F3VTtJQUNBbE87WUFFQXNhLGdCQUFrQmhTLEdBQUdwUyxLQUFNRSxTQUFROGlCO0lBQ3JDLG1EQUQ2QjlpQjtHQUNrQjs7SUFHN0NrWTtJQUNBbko7SUFDQWlKO0lBQ0F4VTtJQUNBeVU7SUFDQXBPO1lBRUFzYSxrQkFBb0JqUyxHQUFHcFMsS0FBTUUsU0FBUThpQjtJQUN2QyxtREFEK0I5aUI7R0FDa0I7O0lBRy9Dc1o7SUFDQXRLO0lBQ0FvSztJQUNBblY7SUFDQW9WO0lBQ0E3TztZQUVBNFosZ0JBQWtCbFMsR0FBR3BTLEtBQU1FLFNBQVE4aUI7SUFDckMsaURBRDZCOWlCO0dBQ2tCOztJQUc3Q3laO0lBQ0F4SztJQUNBc0s7SUFDQW5VO0lBQ0FvVTtJQUNBeE87WUFFQXFaLGlCQUFtQm5TLEdBQUdwUyxLQUFNRSxTQUFROGlCO0lBQ3RDLGtEQUQ4QjlpQjtHQUNrQjs7SUFHOUM0WjtJQUNBMUs7SUFDQXdLO0lBQ0FyVTtJQUNBc1U7SUFDQXJPO1lBRUFnWixtQkFBcUJwUyxHQUFHcVMsR0FBR3prQixLQUFNRSxTQUFROGlCO0lBQzNDLG9EQURtQzlpQjtHQUNlOztJQUdoRGliO0lBQ0FoTjtJQUNBOE07SUFDQTNVO0lBQ0E0VTtJQUNBL087WUFFQXVZLHFCQUF1QjFrQixLQUFNRSxTQUFROGlCO0lBQ3ZDLHNEQUQrQjlpQjtHQUNxQjs7SUFHbEQ4YTtJQUNBOU07SUFDQTRNO0lBQ0E2SjtJQUNBNUo7SUFDQTZKO1lBQ0FDLGVBQWlCN2tCLEtBQU1FLFNBQVE4aUI7SUFBUSxnREFBaEI5aUI7R0FBOEQ7O0lBQ3JGd2E7SUFDQTFNO0lBQ0F3TTtJQUNBeFU7SUFDQXlVO0lBQ0F6TztZQUVBOFksdUJBQXlCOWtCLEtBQU1FLFNBQVE4aUI7SUFDekMsd0RBRGlDOWlCO0dBQ3FCOztJQUdwRDJhO0lBQ0E1TTtJQUNBME07SUFDQXRVO0lBQ0F1VTtJQUNBMU87WUFFQTZZLHVCQUF5Qi9rQixLQUFNRSxTQUFROGlCO0lBQ3pDLHdEQURpQzlpQjtHQUNxQjs7SUFHcERxYTtJQUNBeE07SUFDQXNNO0lBQ0EySztJQUNBMUs7SUFDQTJLO1lBQ0FDLGVBQWlCbGxCLEtBQU1FLFNBQVE4aUI7SUFBUSxnREFBaEI5aUI7R0FBOEQ7O0lBQ3JGK1o7SUFDQXBNO0lBQ0FrTTtJQUNBalU7SUFDQWtVO0lBQ0FuTztZQUVBc1osdUJBQXlCbmxCLEtBQU1FLFNBQVE4aUI7SUFDekMsd0RBRGlDOWlCO0dBQ3FCOztJQUdwRGthO0lBQ0F0TTtJQUNBb007SUFDQW5VO0lBQ0FvVTtJQUNBcE87WUFFQXFaLHVCQUF5QnBsQixLQUFNRSxTQUFROGlCO0lBQ3pDLHdEQURpQzlpQjtHQUNxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeFRwRHVWO09BQ0F6STtPQUNBdUk7T0FDQXJUO09BQ0FzVDtPQUNBbE47T0FFQXlhO09BSUFuTjtPQUNBM0k7T0FDQXlJO09BQ0F2VDtPQUNBd1Q7T0FDQXBOO09BRUEwYTtPQUlBbE47T0FDQTdJO09BQ0EySTtPQUNBL1M7T0FDQWdUO09BQ0E1TTtPQUVBZ2E7T0FJQWhOO09BQ0EvSTtPQUNBNkk7T0FDQWhUO09BQ0FpVDtPQUNBak47T0FFQW1hO09BSUE5TTtPQUNBako7T0FDQStJO09BQ0ExVDtPQUNBMlQ7T0FDQWpOO09BRUFpYTtPQUlBNU07T0FDQWxKO09BQ0FnSjtPQUNBM1Q7T0FDQTRUO09BQ0FuTjtPQUNBaWE7T0FDQTFNO09BQ0F0SjtPQUNBb0o7T0FDQXhUO09BQ0F5VDtPQUNBbk47T0FFQStaO09BSUFoSTtPQUNBbE47T0FDQWdOO09BQ0FwVztPQUNBcVc7T0FDQXJRO09BRUF1WTtPQVFFalU7T0FPQWlNO09BT0F0VztPQU9BdVc7T0FRQXZRO09BV0F1WTtPQVFGMU07T0FDQXZKO09BQ0FxSjtPQUNBMVQ7T0FDQTJUO09BQ0FyTjtPQUVBaWE7T0FJQXhNO09BQ0F4SjtPQUNBc0o7T0FDQTVUO09BQ0E2VDtPQUNBdk47T0FFQWlhO09BSUF0TTtPQUNBMUo7T0FDQXdKO09BQ0E5VDtPQUNBK1Q7T0FDQXpOO09BRUFpYTtPQUlBOUw7T0FDQTdJO09BQ0F3STtPQUNBblU7T0FDQXFVO09BQ0EvTjtPQUVBaWE7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FJQWxNO09BQ0ExSTtPQUNBd0k7T0FDQXZVO09BQ0F3VTtPQUNBbE87T0FFQXNhO09BSUFoTTtPQUNBbko7T0FDQWlKO09BQ0F4VTtPQUNBeVU7T0FDQXBPO09BRUFzYTtPQUlBN0s7T0FDQXRLO09BQ0FvSztPQUNBblY7T0FDQW9WO09BQ0E3TztPQUVBNFo7T0FJQTNLO09BQ0F4SztPQUNBc0s7T0FDQW5VO09BQ0FvVTtPQUNBeE87T0FFQXFaO09BSUF6SztPQUNBMUs7T0FDQXdLO09BQ0FyVTtPQUNBc1U7T0FDQXJPO09BRUFnWjtPQUlBcko7T0FDQWhOO09BQ0E4TTtPQUNBM1U7T0FDQTRVO09BQ0EvTztPQUVBdVk7T0FJQTFKO09BQ0E5TTtPQUNBNE07T0FDQTZKO09BQ0E1SjtPQUNBNko7T0FDQUM7T0FDQW5LO09BQ0ExTTtPQUNBd007T0FDQXhVO09BQ0F5VTtPQUNBek87T0FFQThZO09BSUFqSztPQUNBNU07T0FDQTBNO09BQ0F0VTtPQUNBdVU7T0FDQTFPO09BRUE2WTtPQUlBeEs7T0FDQXhNO09BQ0FzTTtPQUNBMks7T0FDQTFLO09BQ0EySztPQUNBQztPQUNBakw7T0FDQXBNO09BQ0FrTTtPQUNBalU7T0FDQWtVO09BQ0FuTztPQUVBc1o7T0FJQS9LO09BQ0F0TTtPQUNBb007T0FDQW5VO09BQ0FvVTtPQUNBcE87T0FFQXFaOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MzVGE7Ozs7Ozs7Ozs7Ozs7O0lBQUE7TUFBQTtJQURidEYsY0FDRjtJQUdFQztJQUNBRTtJQUNBQzs7WUFFQUMsYUFBZW5nQixLQUFNRSxTQUFRbWxCO0lBQy9CLHdEQUR1Qm5sQjtHQUMrQjs7OztPQVRwRDRmO09BSUFDO09BQ0FFO09BQ0FDO09BRUFDOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztZRU5BeUgsbUI7Z0NBQUFBOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7WUMwQkFDO0lBQ00sSUFBSkMsSUFBSTtJQUNMLE9BQUEsMkJBRENBO2NBQUFBO2NBVHlCO0dBVTZCO3NCQUZ4REQ7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQzhCRUU7O0lBa1BGQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXJTRUM7SUFBWTs7T0FDRDs7T0FDQTtlQUNBOztHQUFPO1lBR2xCQyxRQUFRQyxJQUFHQztJQUNiOztZQURVRDs7YUFBR0MsSUFFZ0I7Ozs7Y0FGaEJBLElBSWdCOztJQURBO0dBQ087WUFHbENDLFlBQVlDO0lBQUssT0FBQSw0QkFQakJKLFlBT1lJO0dBQXNDO0dBWWpDO0lBQW5CQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQXFFRUM7O0lBRVU7SUFBK0MsSUFBQSxVQUR6REM7Ozs7O1FBQUFBOztZQUdBQyxXQU1GLE9BVEVELDBCQURBRCxVQVlVO0dBV0osSUFBQSxNQUFBLHNDQUNORztZQUNBQztJQUNGO0tBQUcsT0FBQSxxQkFGREQ7S0FFQyxrQkFBc0IsbUNBRnZCQTtrQkFHQSxtQ0FIQUE7R0FHMkI7WUFFM0JFO0lBQWEsWUFDTDtRQUNIQztJQUFLLE9BQUEsa0JBQUxBLEdBUExIO0dBT3NCO0dBcUJGLElBQXBCSTtZQWNBQztJQUFtQixJQWpCWkMsSUFHUEY7a0JBSHNDRyxHQUFLLE9BQUxBLEtBQVc7SUFBMUIsV0FBQSxrQ0FBaEJEO0lBQWdCLE9BQUE7R0FpQlk7R0FHM0I7SUFBVkU7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7SUFFQUM7SUFFQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUM7Ozs7U0FBc0JDOzswQ0FBQUE7U0FBQUE7O29CQUFPQyxVQUFTQyxNQUFLQyxXQUFVQztLQUdqRDs7UUFBQSxrQkFIa0JKOztXQUdNLDhCQUhOQTtLQUdNLE9BQUE7cUNBSENDLFVBQVNDLE1BQUtDLFdBQVVDLGVBR1o7O0dBV3JDLDRCQUFBLFFBQUE7Ozs7O1NBQ0pDOzs7O1dBQXVDQyxtQkFBUEM7O1FBR2xCO1NBQVJDO1NBQ0FDO1NBQ0FDO1NBQ0FDLG9CQTFKSmpEO1NBMkpJa0Q7U0E5TGNDO1dBOFBoQjtvQ0F2RUpSLDhCQUFnQ0U7U0F2TGRPO29CQTJQUkM7WUFDTixrQ0FyRUpWLE1Bb0VVVTtZQUNOLE9BQUE7V0FDTTtTQUZMOzs7OztpQkFyRkxqQjs7Ozs7MkJBbUZ5Q2tCLEdBcEZ6Q25CLDBCQW9GeUNtQixhQUErQjs7Ozs7a0NBdkZ4RXRCOzttQ0FDQUM7Ozs7NEJBa0ZpQ3FCLEdBakZqQ3BCLHNCQWlGaUNvQixhQUEyQjs7Ozs7Ozs7dUJBOUIxQkM7ZUFDNUI7Z0JBM0NKOzs0QkFDYUMsTUFBS2hCLE1BQUtDLFdBQVdDLFNBQVksV0FBakNjLFVBQUtoQjttQkFBMkM7aUJBRDdELFdBQUssNEJBMEMyQmU7Ozs7Z0JBdkNwQztpQkFBSTtrQ0FBb0RDLE1BQUtoQixNQUFRLFdBQWJnQixVQUFLaEIsT0FBdUI7a0JBQWhGLFdBQUssNEJBdUMyQmU7Ozs7aUJBckNwQztrQkFBSTttQ0FBMENDLE1BQVEsV0FBUkEsU0FBa0I7bUJBQTVELFdBQUssNEJBcUMyQkQ7Ozs7Ozs7OztpQkFHWkU7aUJBQU5EO2lCQUZJRSxVQUVFRDtpQkFGWmxCLFdBRU1pQjt1QkFFSCw4QkFMcUJEO2dCQU1kO2lCQUFKSSxJQUFJLDhCQU5jSjtpQkFPbEJLLGFBQVcsOEJBUE9MLFFBTWxCSTtpQkFFQUU7bUJBQWU7O3FCQVJHTjtxQkFNbEJJOzRDQU5rQkosT0FNbEJJO2dCQUdKO2lCQUNNO2tCQUFBLE9BQUEsMkJBRkZFO2tCQUNBQzs7Ozs7O2lCQUdBLGtDQVprQlA7cUJBU2xCTyxVQUtBOztvQkFiSUosY0FRSkksVUFSTnZCLFdBTU1xQjs7O29CQU5JRixhQUFWbkIsV0FEd0JnQjtlQTdCNUJULG1CQThCSVAsVUFBVW1CLGtCQTlCZFo7O2NBaUQrQzs7Ozs7Ozs7dUJBdEJwQlEsR0F2QjNCSixxQkF1QjJCSSxHQXZCM0JKLDBCQXVCZ0U7Ozs7Ozs7O3VCQUhsQ2E7ZUFDOUIsSUF6S0l6QyxJQW1KSjJCLHlCQW5KSTNCO2VBQ21CLG9CLDRCQXVLT3lDO2VBdktuQixXQUFBO2VBa0pYZCwyQkFxQjhCYyxLQXhLMUJ6Qzs7Y0F5S21EOzs7Ozs7Ozt1QkFKNUJ5QztlQUMzQixJQTNLQ3pDLElBd0pEMkIsa0JBdkpXLFdBeUtnQmMsS0ExSzFCekMsY0FBQUE7ZUFFdUIsb0IsNEJBd0tHeUM7ZUFsQjNCZDtvQkF0Slk7O2NBeUt3Qzs7Ozs7aUNBekQxRHpCOzs7O2tCQUtBSzs7O2tDQUpBSjs7OztvQkFDQUM7Ozs7Ozs7bUJBbURNLElBQUs7O21CQTlDWEksYUErQ2tCOztrQkFBNkI7Ozs7Ozs7MEJBVGI2QixHQVI1QlgsbUJBUTRCVyxhQUF3Qjs7Ozs7OztpQ0FUcERaLGlDQU82RDs7O1NBSFo7Ozs7OztlQXJDdkRwQjtlQUhBSDs7Y0F5Q29GOzs7U0FoTXBFd0MsSUErTDRCO1NBL0xqQ0MsT0ErTEUsaUNBUmJ0QixNQUF1Q0M7UUF0THpDLElBQ0UsNkJBRldxQixNQUFLRCxHQUFFWixHQUFFRDs7OztjQUlaZTtVQUFPLGtDQUFQQTtVQUFPOzs7OztjQUNOQztVQUFPLGtDQUFQQTtVQUFPOzs7UUEwUEg7ZUFwRVBwQixrREFDQUM7U0E1RkFvQjs7O29CQXVGMEJ2QixLQUcxQkMsVUFJQUksZ0JBREFEO1FBM0dKcEMsWUFjSXVEOzs7Ozs7O09BZ0xOQyx3QkExTEV0RDs7O1FBdU1FOzs7Ozs7TUFHSixJQUFNLFVBQUE7Ozs7Ozs7OztTQUpOdUQ7OztRQUFBQTs7O0lBU0FDLFVBckJBRix1QkFZQUM7WUFpQkFFLDBCQUNGLE9BQUEsMkJBQXdDO0dBR1I7SUFBOUJDOzs7UUFDOEM7U0FBQSxPQUFBO1NBQWQsT0FBQTtRQUFBLE9BQUE7O1lBRWhDQywrQkFBb0N0QjtJQUN0QixJQUFadUIsWUFSRkg7SUFTRixJQVdNLElBQUEsV0FBRyxXQWI2QnBCLFFBRWxDd0I7VUFZR0M7O01BQUFDLDBCQUFBRDtNQVpIRCxjQVlHRSxLQUFtQjs7SUFFRjtLQUFBLE9BdkJ0Qk47S0F1QnNCLE9BQUEsaUNBZnBCRztJQXJKRjVDLGNBb0tzQjtJQUN4QixPQWZJNkM7R0FlRDtHQUc4QjtJQUEvQkc7OztRQUF5RCxPQUFBOztJQUN6REM7OztRQUF1RCxPQUFBOztZQVl2REM7SUFDRixJQXBOWTNELElBSVJGO2tCQUowQkcsR0FBSyxPQUFMQSxLQUFZO0lBQTFCLFdBQUEsa0NBQUpEO2tCQXFOSWdDO0tBQUs7TUFBOEIsT0FBQSw4QkFBbkNBO01BQW1DLE9BQUE7TUFBakIsT0FBQTtLQUFBLE9BQUE7SUFBbUQ7SUFEcEUsV0FBQTtJQUFBLE9BQUE7R0FHaEI7WUE0QkM0QjtJQUNJLElBRUpDLG1CQUZJLDJCQTNOSnZEO1NBNk5BdUQsa0JBRE07SUFFb0IsV0FBQTtJQUExQjtrQkFDZUMsU0FDYixPQUFBLGtDQURhQSxTQUNnQjtJQUYvQixPQUFBLGtDQURBRDtHQUlnQjtZQUVoQkUsaUJBQWlCQztrQkFDRWhDO0tBQ25CLEdBek9BOUI7TUFJQUksd0JBb09tQjBCLEdBcE9uQjFCOztNQXNPSyxrQ0FGYzBCO2dCQW5PbkJ6QjtvQkF5TkFxRCx5QkFjRTtJQUVDO0lBTkwsT0FBQSxvQ0FEbUJJO0dBUWQ7WUFFSEMsVUFBV0M7SSxnQkFBcUJwQyxVQUN4QixXQURHb0MsVUFDSCxPQUFBLFdBRHdCcEMsTUFDQTs7WUFFaENxQyxjQUFjQztJQUNoQjtLQUNBLE9BQUEsNEJBRmdCQTtLQUVoQjtLQUVzQjtPQUFBOzs7a0JBQUtuQztVQUN6Qix3QkEvRkFrQjs7O3NCQUFBQTs7O3VCQUFBQTs7O3NEQUFBQTs7VUErRkksV0FBQSxxQ0FEcUJsQjtTQUM2QztLQUh4RTtLQUllO09BQUE7OztrQkFBS0E7VUFBYyxXQUFBLHNCQUFkQTtVQUFjLE9BQUE7U0FBVTtJQUo1QyxPQUFBO0dBS2dCO1lBRUNvQztJQUFZQztJQUFRdEQ7SUFBT3VEO0lBQWVDO0lBQTBCQztJQUNqRXREO0lBQVdDO0lBQVFVO0lBQUU0QztJQUNuQyxZQWhVRmpGO2tDQWlVUztJQUVIOztLQUQ2RWtGOztLQUEzQkM7S0FBWWhEO0tBQWhDaUQ7S0FBVEM7S0FDckIsT0FqQlJiLFVBWTJCSztJQUtuQixTQTlFb0JTLHVDQTBFU2pEO0lBS3BCO0tBQWJrRDs7O1NBQUosT0FsUEFqRSxnQkE0T21DQztrQkFBc0J3RCxjQUEwQkMsaUJBQ2pFdEQsV0FBV0M7O0tBTUYsT0F2UXpCckI7S0FsRzBCa0YsZ0JBeVdSLHVCQVBzQlY7S0FTeEMsT0FBQSxlQUwyQk8sVUEzWTdCeEY7SUFnWkU7UUFMb0N1Rjs7OztVQTVENUI7V0FBaUNLO1dBQWpCQztXQUFWbEU7V0FDWm1FO21DQXVEcURaO2VBdkR6RCxzQkFEZ0J2RDs7dUJBQ1ptRTs7V0FLQTtZQURFQztjQUNGOztnQkFrRHFEYjtnQkF2RHJEWTtzQ0FEWW5FO1lBU2QsT0FBQSxrQkFKSW9FLHFCQUxVcEU7V0FTZDs7MEJBUkVtRTs7Ozs7O21CQVN3QjtxQkE4QzZCWixjQXZEckRZOzs7O2dCQURzQkQ7O2VBYWZHLGNBYmVIO3NCQWFBLFdBMkN5RFYsaUJBM0N4RWE7Ozs7Ozs7O2VBVlBDOzs7ZUFBQUE7VUFZSixHQVpJQSxPQUh1Q0w7VUFnQjNDLE9BYklLO1NBY0w7Y0FqQkQsa0NBNER3Q1Y7Ozs7TUFyV3RDO2NBcVcwREQ7O2tCQXJXekNZO1VBQU8sV0FBSSw0QkFBWEEsS0FEV1A7U0FDbUI7T0FBL0MsT0FBQTtNQUFBOzs7O2VBcVcwREw7O21CQXBXdENhO1dBQVcsbUNBQVhBLFNBRlFSO1VBRXdCO2VBQXJDO01BOFdOOzsrQkFSTEQ7OztZQTNDMkJVLFVBMkMzQlY7OzZDQTNDMkJVLFVBMkMzQlY7WUEzQzJCVSwwQ0EyQzNCVjs7VUFGa0VwRDs7O29CQXJDckQrRDtZQUFhLE9BQUEsNEJBSkNELFNBSWRDO1dBQXNEO2dCQUF2RSxrQ0FxQ3NFL0Q7OztXQUlsRWdFOzs7V0FBQUE7OztVQUFBQTs7O1NBQUFBO0lBU0osR0FUSUE7ZUFKaUZqQix5QkFlN0QsT0E1VHRCaEY7S0E4VEssSUFEWStCLFlBaEJrRWlELGVBaUI5RSxPQTFUTC9FLFdBeVRpQjhCO0tBQ1o7OEJBZkhzRDs7O1dBZ0JNYSxVQWhCTmI7OzRDQWdCTWEsVUFoQk5iO1dBZ0JNYSwwQ0FoQk5iOztNQS9ZSjVGO29CQW1KQW9COztPQWdSb0QsSUFBdkNzRixpQkFBdUMsT0F6RnBEbkM7T0F5Rm1CLDZCQUFObUMsU0FKSEQ7O1NBblJWM0YsWUF5UnVCLGtDQU5iMkY7U0FoUlZ4RjtXQXlSVTBGOztPQXZHWTtRQUFwQkMsb0JBQW9CO1FBQ3BCQyxvQkFBb0I7NEJBTHRCeEM7OzttQkFBQUE7OztvQkFBQUE7OzttREFBQUE7O09BTUY7K0JBTEVDOzs7bUJBQUFBOzs7b0JBQUFBOzs7bURBQUFBOztPQU1GO09BQ2EsSUFBVHdDLFNBNUJGOUMsK0JBdUI0QjJCO09BTTlCLDhCQUxJaUI7T0FNSiw0QkFMSUM7V0FzR1FGLFdBTUEsNkJBcEM2QnJCLFdBckVyQ3dCOztTQXpMRmhHLFlBcVN1QixrQ0E1UnZCTztlQW1SVXNGO3FCQUFBQSxhQWdCVTNCLHdCQUFMWjtPQXZiZm5FO09BeWJ3QjtRQUFaOEcsY0ExRFpoQyxjQXdEb0JDO1FBR1JnQyxVQUFVLG1DQUhQNUM7UUFJSDZDLE1BQVMsOEJBRFREO1FBR1EsT0FwSHBCekM7T0FvSG9CLE9BQUE7Z0JBM0VwQkk7Z0JBNENVOEI7Z0JBNkJFUTtnQkFEQUQ7Z0JBREFEOzs7U0FsQkZKLGFBV1M7TUFsYm5CMUc7TUFzYlUsV0E3R1ZzRTtNQTZHVSxPQUFBLFdBcEVWSSx1QkE0Q1U4Qjs7Ozs7Z0JBZE5EO0lBYUc7O1lBb0NQVSxzQkFBc0JDLFlBQVc3RTtJQUNuQyxHQWpjRXBDLGdCQXFjQTtJQXJjQUEscUJBZ2NzQmlIO0lBUWhCLFlBL1hKOUc7a0NBZ1lXO0lBRVI7O0tBRHVCa0Y7S0FBYjZCO0tBQ1YsT0FBQSxrQkFEVUEsZ0JBVk9EO0lBV2pCLFdBQUE7OztlQUR1QjVCLDZCQUFBQSxtQkFFcEI4QjtTQUFBQTs7T0FLRCxrQkFqQjBCL0Usc0JBWXpCK0U7S0FNQyxPQUFBO0lBclhQL0csYUFtVytCZ0M7O0dBcUI1QjtZQUVMZ0YsVUFBVUg7SUFDWixZQXhkRWpIO2dCQTZkQTtJQUVHO0tBREVpQztLQUNGLE9BQUEsa0JBREVBLEtBUEtnRjtLQVFQLGVBL2RIakg7O0dBK2Q0QztZQUU1Q3FIO0lBQU1yQyxRQUFRdEQsT0FBT3VELE1BQU10RCxVQUFVcUUsYUFBYW5FLFdBQVdDLFNBQVFVO0lBQ3ZFLE9BM0ZpQnVDO2FBMEZUQzthQUFRdEQ7YUFBT3VEO2FBQU10RDthQUFVcUU7YUFBYW5FO2FBQVdDO2FBQVFVO3NCQUU5RDhFLEdBQUssT0FBTEEsRUFBTTtHQUFDO1lBRWRDO0lBQVd2QyxRQUFRdEQsT0FBT3VELE1BQU10RCxVQUFVcUUsYUFBYW5FLFdBQVdDLFNBQVFVO0lBQzVFLE9BL0ZpQnVDO2FBOEZKQzthQUFRdEQ7YUFBT3VEO2FBQU10RDthQUFVcUU7YUFBYW5FO2FBQVdDO2FBQVFVOzZCQUU3RCxTQUFJO0dBQUM7WUFFSGdGO0lBQWF4QyxRQUFRdEQsT0FBT3VELE1BQWVDLGNBQTBCQyxpQkFDbEV0RCxXQUFXQyxTQUFRVTtJQUNqQyxZQWxhRnJDO2tDQW1hUztJQUVIOztLQURxRmtGOztLQUFkQztLQUFsREU7S0FDckIsT0FuSFJiLFVBOEc0Qks7SUFLcEIsU0FBSlMsdUNBSmlDakQ7SUFNWDtLQUFBLE9Beld4Qi9CO0tBckd1Q2dILGVBOGN0Qix1QkFQd0J4QztLQVN6QyxPQUFBLGVBTDJCTyxVQTdlN0J4RjtJQWtmRTs7YUFMNkVzRjs7aUJBMWM5RGE7U0FBVyxtQ0FBWEEsU0FEd0JzQjtRQUNRO01BOGM3Q25CLGlCQTljUTs7U0E4Y1JBO0lBWUosR0FaSUE7ZUFKeUZqQix5QkFrQnJFLE9BamF0QmhGO0tBbWFLLElBRFkrQixZQW5CMEVpRCxlQW9CdEYsT0EvWkwvRSxXQThaaUI4QjtLQUNaO01BcmdCUHhDO01BbWZBO09Bb0JVOEY7U0F4V1ZqRSxnQkE4VW9DQztXQUFzQndELGNBQTBCQyxpQkFDbEV0RCxXQUFXQztPQTlXekI0RixPQUhGbEg7TUFBQUEsdUJBMFlRa0YsU0ExQmlDVCxPQTdXdkN5QztNQUVKLElBc1lNLElBcllBQyxJQXdLTjdELCtCQXVNSTJCLE1BclhGakYsZUFHRWtIO1lBTUNFO1dBQUFDLHdCQUFBRDtPQVRIcEgsZUFHRWtIO09BUUYsTUFBQSw0QkFGR0c7O2VBSENGLE1BbVpXO29CQW5aWEEsTUFvWmM3Qyx3QkFBTFo7TUF0aEJmckU7TUF3aEJ3QjtPQUFaZ0gsY0F2SlpoQyxjQXFKb0JDO09BR1JnQyxVQUFVLG1DQUhQNUM7T0FJSDZDLE1BQVMsOEJBRFREO09BR3NELE9Bak5sRXpDO09BaU5VLE9BQUEsOEJBdEJBcUI7TUFzQndELE9BQUE7ZUF4S2xFakIsaUJBdUt5Qjs7ZUFEYnNDO2VBREFEO2VBREFEOzs7Ozs7Z0JBcENSUDtJQWdCRzs7WUE0QlB3QjtJQUNJLFlBcmRGM0g7OzBCQWtlMEMrRzs7TUFwYzVDO09BQUE7dUJBQ3FCYSxVQUFLQyxLQUFPLFdBQVpELEdBQUtDLEtBQWU7T0FBdkMsT0FBQTtPQUFBLE9BQUE7T0FpY1EsT0FBQTtNQUFWO01BQUE7O21CQXhaQTlHO3FCQTZaU3NGLGlCQUFNLHVCQUFOQTtLQXRNVGxDO1NBd09JMkQsUUFqbEJKbEksaUJBaWxCV21JLHFCQW5sQlhySTtjQW1sQklvSSxlQUFPQztTQXBjWHBIO09BdWEyQixrQ0FyakIzQmhCLGNBRkFGO01BNGpCVTtjQWJrQ3NIOzhCQWF0QixJQUFZdEIsNEJBQUFBLFFBQW1CO09BRHpDdUMsZUFDRjtPQUZBQyxTQUNFRCxtQkFBQUE7TUFPTixHQVJJQztXQVNHbEcsUUFUSGtHO09BVUY7Ozs7V0FDVSxJQUFnQnZDLDRCQUFWbEU7V0FDZCxLQUR3QmtFO1lBRWQsT0FBQSxrQ0FGSWxFO2VBR1BxRSxjQUhpQkg7V0FHRixPQUFBLGtDQUhSbEUsVUFHUHFFO1VBQ1I7T0FKRCxrQ0FGSzlEO09BT0w7T0FBQTs7ZUF4a0JScEMsZ0JBNklBZTtPQStiVTtPQUFBOztNQUVPOztjQUlOcUg7OztNQUVrRDtPQUFBLE9BQUE7Y0FBZixtQ0FGbkNBO0tBQ1Asa0NBREFELE9BbGxCSm5JO0tBbWxCSTs7OztLQWpERCxHQUFBO01BQXNDO01BQWxCO1FBQUE7VUFBQSxtRUFDckI7O0tBR0E7O0lBQUE7R0FnREM7R0FRVTtJQU5idUksY0FqY0FqSDtJQWtjQWtILGFBamNBakg7SUFrY0FrSCxpQkFqY0FqSDtJQWtjQWtILHFCQWpjQWpIO0lBa2NBa0gsMEJBamNBakg7SUFtY0FrSCxxQkEvREFaO1lBZ0VBYSxjQUFlbkcsR0FEZmtHLG9CQUNlbEcsR0FEZmtHLHlCQUNpRDtZQUNqREU7SUFDdUIsV0FBQSwyQkFIdkJGO2tCQUdZbEcsR0FBSyxPQUFBLFdBQUxBLE1BQVM7V0EvbUJuQjlDLFlBK21CSjs7Ozs7OztJQUFBLE9BQUE7R0FHTzs7OztXQXpuQkhILFNBT0FHLGFBYkFKO09BNmRGMEg7T0F1QkFJO09BVUFDO09BSUFFO09BSWVDO09Bak5mN0Q7T0E4VEEwRTtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQTNVQS9FO09BUEFyRTtPQXFWQXNKO09BQ0FDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3puQkVDOzs7Ozs7Ozs7O1lBUEZDLE1BQU9DLElBQVFDLElBQUssT0FBQSxzQkFBYkQsSUFBUUMsSUFBcUI7O0lBQ3BDQztJQUNBQztJQUNBQztJQUNBQztZQUVBQyxPQUFTQyxLQUFlQztJQUMxQixHQURXRCxTQUFTRSxNQUFURixRQUFBRyxTQUFTRCxjQUFUQztJQUVYLElBQUlDLFVBRk9ELGdCQUNQWixTQUFBQTtJQUVKLE9BQUEscUJBRElhLFlBRnNCSDtHQUdPO09BRy9CSTtZQUNBQyxVQUFXSCxRQUFPRixNQUFNTTtJQUFpQixVQVB6Q1IsT0FPV0ksUUFBT0Y7b0NBQU1NLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2YsS0FBS2dCO0lBQU0sT0FBQSxxQkFBbkJGLEdBQUdDLEtBQUtmLEtBQUtnQjtHQUE4QjtZQUNqREMsYUFBYUgsR0FBR0MsS0FBS2YsS0FBS2dCO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQixxQkFBbkJFLEdBQUdDLEtBQUtmLEtBQUtnQixLQUF3RDtHQUFDO1lBQ25GRSxpQkFBaUJKLEdBQUdDLEtBQUtmLEtBQUtnQjtJQUFNLE9BQUEscUJBQW5CRixHQUFHQyxLQUFLZixLQUFLZ0I7R0FBcUM7WUFDbkVHLFdBQVdMO0lBQUksT0FSZkYsd0JBUWtDLE9BQW5CLHFCQUFKRSxHQUF3QztHQUFDO1lBQ3BETSxXQUFXTjtJQUFJLE9BVGZGLHdCQVNrQyxPQUFuQixxQkFBSkUsR0FBd0M7R0FBQztZQUNwRE8saUJBQWlCUDtJQUFJLE9BVnJCRix3QkFVd0MsT0FBbkIscUJBQUpFLEdBQThDO0dBQUM7WUFDaEVRLG1CQUFtQlI7SUFBSSxPQVh2QkYsd0JBVzBDLE9BQW5CLHFCQUFKRSxHQUF5QztHQUFDO1lBQzdEUyxhQUFhVCxHQUFFQyxLQUFLQztJQUFNLE9BWjFCSjs7Y0FZNkMsT0FBbkIsOEJBQVhHLEtBQUZELEdBQU9FO2FBQTBEO0dBQUM7T0FDL0VRO1lBRUFDLFVBQVVYO0lBRVosSUFDSVksU0FBUyxtQ0FEVEM7SUFNSixJQUhFLFFBQUEsOEJBRkVELFFBSFFaLEdBRVJhOzs7NEJBT2EsT0FBQSwyQkFOYkQ7OztHQU1tQztZQUdyQ0UsS0FBTUMsYUFBWUM7SUFDcEIsS0FEUUQsYUFPSCxPQVBlQztRQUdkZCxvQ0FIY2M7SUFJbEIsT0FESWQ7S0FDcUIsVUFBQSx3QkFKUGMsTUFHZGQ7S0FDVSxHQUFBO01BQ1QsT0FBQSwyQkFMYWMsU0FHZGQ7O0lBR0MsT0FOYWM7R0FPWDtZQUdQQyxXQUFhM0IsS0FBb0JVO0lBQ25DLEdBRGVWLFNBQWNFLE1BQWRGLFFBQUF5QixjQUFjdkIsY0FBZHVCO0lBQ1QsWUF0Q0pqQix3QkFzQ3VCLE9BQXpCLHFCQURtQ0UsR0FDTztnQkFDaEM7UUFDSGdCO0lBQVEsV0FiYkYsS0FVYUMsYUFHUkM7R0FBcUM7WUFHMUNFLGVBQWlCNUIsS0FBb0JVO0lBQ3ZDLEdBRG1CVixTQUFjRSxNQUFkRixRQUFBeUIsY0FBY3ZCLGNBQWR1QjtJQUNSLElBQVBDLE9BQU8scUJBRDRCaEI7SUFFdkMsT0FsQkVjLEtBZ0JpQkMsYUFDZkM7R0FDa0I7WUFHcEJHLFdBQVlKLGFBQVlmLEdBQ2JvQixNQURzQnZCO0lBQ25DLElBQWF3QixLQUFBRDtJQUNYO0tBQU0sWUFiTkgsV0FXWUYsYUFBWWY7aUJBR2QsT0FGQ3FCO0tBR1MsSUFBYkwsaUJBSElNLE9BR1MsV0FKYXpCLEdBQ3RCd0IsSUFHSkwsT0FISUssS0FBQUM7O0dBS0o7WUFHUEMsWUFBYVIsYUFBWWY7SUFDbEI7O09BVlBtQjtTQVNhSixhQUFZZixlQUMwQndCLE9BQU1SLE1BQVEsV0FBUkEsTUFBTlEsT0FBMkI7SUFBdkUsT0FBQTtHQUF5RTtZQUdoRkMsV0FBWVYsYUFBWWYsR0FBR0g7SUFDN0IsT0FkRXNCO2FBYVlKO2FBQVlmOzs2QkFDb0JnQixNQUFRLE9BQUEsV0FEekJuQixHQUNpQm1CLE1BQWM7R0FBQztZQUczRFUsV0FBWVgsYUFBWVk7SUFBUSxPQW5FaEMvQjtnQkFtRXdCK0IscUIsT0FSeEJKLFlBUVlSO0dBQWlFO1lBQzdFYSxTQUFTRCxPQUFRLE9BcEVqQi9CLGFBb0VTK0IsT0FuRFRoQixXQW1ENkM7Ozs7T0FqRjdDN0I7T0FJQU07T0FFQUM7T0FPQU87T0FEQUQ7T0FRQUk7T0FDQUk7T0FDQUM7T0FFQUU7T0FEQUQ7T0FFQUU7T0FDQUM7T0FDQUM7T0FHQUU7T0FzQkFNO09BTUFDO09BS0FDO09BU0FJO09BSUFFO09BM0VBeEM7T0FDQUM7T0FDQUM7T0F5QkF1QjtPQW9EQWdCO09BQ0FFOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUN4REUvQzs7Ozs7Ozs7OztZQXpCRkMsTUFBT0MsSUFBUUMsSUFBSyxPQUFBLHNCQUFiRCxJQUFRQyxJQUFxQjs7SUFDcENDO0lBQ0FDO0lBQ0FDO0lBQ0EwQztJQUNBQztZQUVBQyxVQUFVL0I7SUFDWixPQUFHLHNCQURTQSxHQUZWOEI7O2NBS00sc0JBSEk5QixHQUhWNkI7R0FROEI7WUFNOUJ4QyxPQUNJQyxvQkFJRkM7SUFFSixHQU5NRCxTQUFTRSxNQUFURixRQUFBRyxTQUFTRCxjQUFUQztJQU1OLFlBTGV1QyxnQkFBVEMsU0FBU0QsZ0JBQVRDO0lBS047U0FKdUJDLGdCQUFqQkMsaUJBQWlCRDs7U0FBakJDO0lBSU4sWUFIYUMsZ0JBQVBDLE9BQU9ELGdCQUFQQztJQUlNO1dBUE41QztLQU9GQyxtQkFEQWI7V0FMRW9EO0tBT0ZLLG1CQURBNUM7S0FFQTZDLFVBUEVKLHdCQU1GRyxXQUFBQTtJQUVKLE9BQUEscUJBRElDLFNBTkVGLE1BQ0Y5QztHQU02Qjs7SUFHL0JtQjtJQUNBOEI7SUFDQTdDO0lBQ0E4QztZQUNBQyxPQUFPMUMsR0FBR0MsS0FBS2YsS0FBS2dCO0lBQU0sT0FBQSxxQkFBbkJGLEdBQUdDLEtBQUtmLEtBQUtnQjtHQUErQjtZQUNuRHlDLGlCQUFpQjNDLEdBQUdDLEtBQUtmLEtBQUtnQjtJQUFNLE9BQUEscUJBQW5CRixHQUFHQyxLQUFLZixLQUFLZ0I7R0FBeUM7O0lBQ3ZFMEM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFDQUMsUUFBUW5ELEdBQUksT0FBQSxXQVBaNEMsZUFPUTVDLFFBQXdCO1lBRWhDb0QsYUFBYXBELEdBQUV3QjtpQkFDT1IsTUFDdEIsV0FYQTRCLGVBU2E1QyxHQUNTZ0IsT0FBeEIsT0FIRW1DLFFBRWFuRCxHQUdKO0lBRlEsT0FBQSx5QkFERndCO0dBR0w7O0lBR1Y2QjtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztZQUVBQyxRQUFTQyxNQUFLQztJQUNoQjs7T0FEV0Q7VUFHSyx5QkFIQUM7VUFJSCw0QkFKR0E7SUFJSCxPQUFBLFdBUFhKO0dBT21DO1lBR25DSyxTQUFVRixNQUFLQztJQUNqQjs7T0FEWUQ7VUFHSSx5QkFIQ0M7VUFJSiw0QkFKSUE7SUFJSixPQUFBLFdBYlhIO0dBYW1DO1lBR25DL0QsVUFBV0gsUUFBUXdDLFFBQVFFLGdCQUFnQkUsTUFBSzlDLE1BQU1NO0lBQzNDLFVBMURYUixPQXlEV0ksUUFBUXdDLFFBQVFFLGdCQUFnQkUsTUFBSzlDO29DQUFNTSxRQXpDdERGO0dBMENnRjtZQUdoRnFFLFlBQVl6RSxNQUFLaUM7SUFBUSxPQUp6QjVCO3lCQUlZTCxlQUFvQ1MsR0FBSyxPQWhDckRvRCxhQWdDZ0RwRCxHQUEvQndCLE9BQXdEO0dBQUM7WUFDMUV5QyxVQUFVMUUsTUFBTTJFO0lBQU8sT0FMdkJ0RTs7Ozs7YUFLVUw7c0JBQW9DUyxHQUFLLE9BQTVCLFdBMUN2QjRDLGVBMEM4QzVDLEdBQTlCa0UsTUFBdUQ7R0FBQzs7OztPQXpFeEVuQztPQVBBakQ7T0FJQStDO09BQ0FDO09BYUF6QztPQXlEQU87T0F6Q0FEO09BQ0E4QztPQUhBL0I7T0FDQThCO09BR0FFO09BRUFFO09BREFEO09BRUFFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BUUFHO09BRkFGO09BUUFPO09BT0FHO09BZEFUO09BRUFFO09BQ0FDO09BQ0FDO09BQ0FDO09BMURBMUU7T0FDQUM7T0FDQUM7T0E0RUE2RTtPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7SUMvRUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSUYsSUFBTSxJQUNKQyxRQURJO21CQUtKQztRQUFBQSx5QkFKQUQ7O0dBS2UsSUFBZkUsZUFBZSw0QkFEZkQ7WUFNRUUsZUFBZUMsR0FBSSxPQUFKQSxFQUFLO1lBQ3BCQyxlQUFlRCxHQUFJLE9BQUpBLEVBQUs7WUFRbEJFLFVBQVVDO0lBQVMsVUFBQSw2QkFBVEE7SUFBUyxPQUFBO0dBQTZEO1lBQ2hGQyxVQUFVQztJQUFRLFVBQUEsMkJBQVJBO0lBQVEsT0FBQTtHQUE0QjtZQUM5Q0MseUJBQXlCQztJQUFPLGlDQUFQQSxNQUR6Qkg7R0FDMEQ7R0FHbkQsSUFBVEksaUJBTEVOLFdBRUFJO1lBMENGRyxPQUFRQztJQUdxQixVQUFBO0lBRi9CLHFDQURVQTtHQU1UO1lBV0NDLGFBQWFYLEdBQUVZO0lBQ2pCLEdBNUVBZDtLQThFUyxLQUFBLDJCQUhNRTtNQUdiLE1BQUE7S0FIYUEsT0FBRVk7S0FBRlosT0FLbUI7S0FMbkJBLE9BT3FCOzs7O2VBbEZwQ0Y7O0dBa0Y2RTtZQUczRWUsYUFBYWIsR0FBRVk7SUFDakIsS0F0RkFkLGNBQWUsT0FBZkE7SUF5RmM7S0FBUmdCLFFBQVE7S0FDUkMsUUFMU2Y7S0FNVGdCLGlCQUFpQjtLQUNqQkMsa0JBUFNqQjtLQVFUa0IsVUFBVSwyQkFKVkosT0FDQUM7SUFJRyxLQUFBLDZCQVRNZixNQUFFWTtLQVNmLE1BQUE7SUFFRTtLQURFTzs7UUFKQUgsb0JBQ0FDO1FBREFELG9CQUNBQztRQURBRCxxQkFDQUM7S0FXSixVQWxCYWpCOzs7TUFxQkpvQjtNQUhMQyx1QkFHZSwwQkFBVkQ7O1NBSExDO0lBTUY7S0FERUMsbUJBdkJXVixhQVFYTSxTQUVBQyxXQVFBRTtJQWxCU3JCLFdBdUJUc0IsY0F2QlN0QjtJQUFBQTtJQUFBQTtnQkFBQUE7Z0JBZEw7UUFDSHVCO0lBQUFBOztHQXlDRztHQUlTO0lBQW5CQyxtQkEzREVmO0lBNERGZ0IsZUE1REVoQixXQTJERmU7WUFFQUUsZUFBYUM7SUFBYyxPQTVDekJoQixhQTJDRmMsY0FDYUU7R0FBeUQ7WUFDdEVDLGVBQWFEO0lBQWMsT0FuQ3pCZCxhQWlDRlksY0FFYUU7R0FBeUQ7WUFDdEVFLHdCQUF3QkM7SUFBTSxPQTlDNUJuQixhQTBDRmEsa0JBSXdCTTtHQUE2QztZQUNyRUMsd0JBQXdCRDtJQUFNLE9BckM1QmpCLGFBZ0NGVyxrQkFLd0JNO0dBQTZDO1lBd0JqRUUseUJBQXlCekIsTUFBTTBCO0lBQ3JDLGFBQ3lCWCxjQUFrQyxPQUFsQ0EsZ0JBQXNEO0lBQTdFO0tBMUgyQm5CLFNBMEgzQiwwQkFGNkJJO0tBdkh6QjJCLFNBUkYxQjtLQWdJQTJCLDhCQXhIRUQsV0FEdUIvQjtLQTZIekJpQyxTQUFTLDRCQUx3Qkg7aUJBUzNCSTtLQUFMO01BQTREaEI7TUFBWEY7TUFBYlA7S0FFaEMsYUFNaUIwQixNQUFRLE9BQUEsNkJBQVJBLE1BQW1CO0tBRDNCO01BQUEsTUFoQlpOLHlCQVMyRFgsc0JBVDVCWTtNQWV0QixNQUFBO01BREYsTUFBQTtNQW5DZ0NNLGNBOEJTcEI7TUE5QjVCcUIsb0JBOEI0QnJCO01BOUIvQ3NCLG9CQThCK0N0QjtLQTVCdEQsU0FBSXVCLFFBQVE5QixhQUFZK0I7TUFDdEIsU0FEc0JBLE9BQ0o7TUFBZ0M7T0FBQSxNQUFBLDZCQUR4Qy9CO09BQ2tCLE1BQUEseUJBRE4rQjtNQUNJLFdBQUU7S0FBeUM7S0FLbkU7TUFBQSxNQU5BRCx5QkFGeUNIO01BT3pDLE1BTEFHLCtCQUZzQkY7TUFPdEIsTUFBQTtNQURGLE1BSkVFLCtCQUZHRDtNQUtIRyxVQUNGO0tBSUMsR0FBQSx5QkFMQ0E7OztNQUs2QztPQUFBLE1BQUEsaUNBTDdDQTthQUs2QztLQXdCcEMsVUFBQTtLQUZKLFdBRkNQLGlCQUdDLHNCQUg4QnpCO0lBUVM7SUFYbEQsSUFkbUNpQyxTQWNuQywwQkFMSVYsa0JBRDJCNUI7SUFQL0IsYUFDaUN1QztLQUFMLElBQVlDO0tBQVksT0FBQTs0QkFBbkJELE9BQW1CLDhCQUFaQztJQUErQztJQUFyRixJQURFQyxvQkFDRiwwQkFGaUNIO0lBSW5DO0tBQWlCLElBQVlJLGtCQUFORjtLQUNyQixPQUFBLGdDQUpFQyxtQkFHbUJELE1BQU1FO0lBQzBCO0lBRHRDLElBQUEsTUFBQSwwQkFKa0JKLGNBY25DO0lBYWUsT0FBQTs7O3NCQUFLUCxNQUFRLE9BQUEsc0JBZHhCRixRQWNnQkUsTUFBcUI7R0FBQztZQUl0Q25CLFVBQVUrQjtJQUNaO0tBRW9CLFlBQUEsc0JBSFJBO0tBRWMsWUFBQSxzQkFGZEE7S0FDYyxZQUFBLHNCQURkQTtJQUNaO0dBR0M7R0FHRDtJQVJBQzs7O3FCQVFzQkQ7U0FDbkIsU0FJUSxzQkFMV0E7OztzQkFPY0U7Y0FDeEI7ZUFFYyxNQWpCeEJqQyxVQWNrQ2lDO2VBRVosTUFBQSxrQ0FGWUE7Y0FDeEI7c0JBQWdCLGdDQURRQTs7OzthQUt2QjtpQkFMSCwyQkFQWUY7OztTQUdMO1VBQUEsTUFWZi9CLFVBT29CK0I7VUFFUCxNQUFBLGtDQUZPQTtTQUNuQixXQUFnQixnQ0FER0E7UUFjbEI7UUFkYSxPQUFBOztNQWhMakJwRDs7OztRQWtPSSxJQWpDeUJ1RCxrQkFpQ3pCLDBCQTVHSjVCO1FBNEVGLFNBQUk2QjtTQUNGLE9BQUE7UUFBZ0Y7UUFHMUUsSUFqTE1uRCxTQWlMTixxQ0F2TU5OOzt3Q0FzQllNO1NBc0xWLFFBckxFK0IsU0FIRjFCLFdBeUxHK0Msc0JBdExEckIsV0FEUS9COzt3QkFnTFZxRCxnQkFKMkJIO1NBQzNCQzs7O3FCQVltQ0csT0FBT25DO2FBQ3JDO2NBQW1DLE1BQUEsMkJBRExtQztjQUMxQnZDLFVBQVUsMkJBSGhCcUM7YUFJRSxhQUdZRSxPQUFNQztjQUNaO2VBQW1DLE1BQUEsMkJBRDdCRDtlQUNGdkMsVUFBVSwyQkFSdEJxQztjQVNRO3NCQUZZRztzQkFDUnhDO3NCQURRd0M7c0JBQUFBO2FBRXdCO2FBSnhDO2NBREVyQztnQkFDRiwwQkFIbUNDO2FBU3JDO3FCQVRxQ0E7cUJBQ2pDSjtxQkFEaUNJO3FCQUVqQ0Q7WUFPK0M7VUFsQnhEbUMsZ0JBU0csMEJBYndCSDs7O1NBQzNCQzt3Q0ExQkZIOzs7b0JBQUFBOzs7cUJBQUFBOzs7b0RBQUFBOzthQTZCRUs7O2tCQW5ERXhCLHlCQW1ERndCO1FBcUJKLE9BQUE7T0FRMEU7SUFGeEU7Ozs7O09BaE9BMUQ7T0FWQUg7V0FlRUksZ0JBQ0FFLGdCQWFBTztPQW9HRmtCO09BQ0FFO09BQ0FDO09BQ0FFOzs7O0U7Ozs7Ozs7Ozs7OzBDQ3RJQTRCO1lBQ0FDLFlBQTRDQyxHQUFLLE9BQUxBLEVBQU07NkJBTWhEQyxZQUFvRCxTQUFDLEVBRDNELFdBQ01BO29DQU5GRixNQURBRDs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDOEJFSSxRQUFRQyxHQUFFQyxHQUFJLGdDQUFORCxNQUFFQyxNQUFpQztZQUMzQ0MsTUFBTUYsR0FBRUMsR0FBSSxPQUFORCxTQUFFQyxhQUEyQjtHQUM3QixJQUFORTtZQUVBQyxLQUFLQyxNQUNQLElBQUlDLE9BSEZILFFBQUFBLFVBS0YsV0FGSUcsTUFER0QsTUFHTztZQUdaRSxLQUFLUCxHQUFJLHNDQUFKQSxNQUF1QjtZQUM1QkssS0FBS0wsR0FBSSxPQUFKQSxLQUFVO0dBQ04sSUFBVFEsV0FSQUo7WUFqQ1FLLFVBa0RJQyxJQUFHQztJQUNqQixHQURjRCxPQUFHQyxJQUVaO0lBRU8sSUFBTkMsTUF6QkpiLFFBcUJZVyxPQUFHQztJQUtmLFNBRElDLEtBQ2EsT0FEYkE7UUFyRFNDLE1BaURFRixPQWpESkcsTUFpRENKLE9BakREVixJQUFBYyxLQUFFYixJQUFBWTtJQUNiO1VBRFdiLFVBQUVDO1VBQUFBLEdBSUY7S0FFRCxJQU5HYyxLQUFBZCxNQUtGZSxJQUxFZixNQUFGZ0IsS0FBQWpCLE1BS1RILElBTFNHLE1BTUxrQixJQVBFVCxVQU1OWixHQUFTbUI7S0FFVCxTQURJRSxHQUMwQixPQUQxQkE7U0FOS2xCLElBQUFpQixJQUFFaEIsSUFBQWM7O0dBc0RzRDtZQUduRUksUUFBTW5CLEdBQUVDLEdBQUksYUExREpRLFVBMERGVCxHQUFFQyxXQUFtQjtHQUVsQixJQURUbUIsNkJBVUZDLGVBNUJFYjtZQXlCRmMsSUFBSUMsR0FBSSxPQUFKQSxFQUFLO1lBQ1RDLE1BQUlELEdBQUksT0FBSkEsS0FBYTtZQUNqQkUsT0FBS0YsR0FBSSxPQUFKQSxRQUFzQjtZQUUzQkcsT0FBU0M7SUFBK0IsR0FBL0JBLFNBQU9DLE1BQVBELFFBQUF0QixPQUFPdUIsY0FBUHZCO0lBQStCLFdBckN0Q0QsS0FxQ09DO0dBQXVFO1lBSzlFd0IsS0FBaUJDLEtBQVlDLEtBQWEsYUEzRWxDdEIsVUEyRVNxQixLQUFZQyxhQUFvQztZQUVqRUMsYUFBeUJGLEtBQVlDO0lBQ3ZDLGFBOUVVdEIsVUE2RWlCcUIsS0FBWUM7R0FHOUI7WUFHUEUsaUJBQTZCSCxLQUFZQztJQUMzQyxhQXBGVXRCLFVBbUZxQnFCLEtBQVlDOztjQUd0QztHQUFvQztzREE1QnZDWixTQUNBQzs7YUFxSEFNLE9BQU9RLE9BQU0sT0FBQSx5QkFBTkEsT0FBMEI7YUFDakNDLElBQUlDLE9BQU0vQixNQUFPLE9BQW9CLDBCQUFqQytCLE9BQU0vQixNQUFxQzthQUMvQ2dDLElBQUlELE9BQU0vQixNQUFLaUM7S0FBTyxPQUFtQywwQkFBckRGLE9BQU0vQixVQUFBQSxNQUFLaUM7SUFBNkQ7YUFFNUVDLEtBQWNILE9BQU8vQjtLQUN2QixJQUNNLElBQUEsVUFBSyx5QkFGSytCLE9BQU8vQixRQUNuQmlDOzs7OztVQUFBQTs7S0FJSixLQUpJQSxNQUtNO2lCQUxOQSxTQU9rQ0UsbUJBQXJCZjtLQXpHZlEsaUJBeUdlUixRQVJNcEI7S0FVbEIsV0FGaUNtQztJQUk5QjtJQXBCWixXQUlNZCxRQUNBUyxLQUNBRSxLQUVBRTs7WUFnQkZFLEtBQUtDLE9BQU1DO0lBRVgsSUFERUMsTUFDRixrQ0FGS0YsVUFBTUM7SUFJYixPQUFBLHNCQUhJQztHQUdROztJQU9FO0tBQVJGLFFBQVksaUJBMUloQnJCO0tBMklJc0IsUUFBWSxpQkEzSWhCdEI7S0F5SUV3QjtPQWhMQTNDLE1BaUxFd0MsT0FDQUM7O1VBWkpGLEtBV0lDLE9BQ0FDO0lBTHNDLFdBR3hDRTs7O0lBV1U7S0FBUkgsUUFBWSxpQkFwSmhCckIsVUFBQUE7S0FxSklzQixRQUFZLGlCQXJKaEJ0QixVQUFBQTtLQW1KRXdCO09BMUxBM0MsTUEyTEV3QyxPQUNBQzs7VUF0QkpGLEtBcUJJQyxPQUNBQztJQUxzQyxXQUd4Q0U7OztJQVdVO0tBQVJILFFBQVksaUJBOUpoQnJCLFVBQUFBLFVBQUFBO0tBK0pJc0IsUUFBWSxpQkEvSmhCdEIsVUFBQUEsVUFBQUE7S0E2SkV3QjtPQXBNQTNDLE1BcU1Fd0MsT0FDQUM7O1VBaENKRixLQStCSUMsT0FDQUM7SUFMc0MsV0FHeENFOzs7SUFXVTtLQUFSSCxRQUFZLGlCQXhLaEJyQixVQUFBQSxVQUFBQSxVQUFBQTtLQXlLSXNCLFFBQVksaUJBektoQnRCLFVBQUFBLFVBQUFBLFVBQUFBO0tBdUtFd0I7T0E5TUEzQyxNQStNRXdDLE9BQ0FDOztVQTFDSkYsS0F5Q0lDLE9BQ0FDO0lBTHNDLFdBR3hDRTs7O0lBY1U7S0FBUkg7T0FBWSxpQkFyTGhCckIsVUFBQUEsVUFBQUEsVUFBQUEsVUFBQUE7S0FzTElzQjtPQUFZLGlCQXRMaEJ0QixVQUFBQSxVQUFBQSxVQUFBQSxVQUFBQTtLQW9MRXdCO09BM05BM0MsTUE0TkV3QyxPQUNBQzs7VUF2REpGLEtBc0RJQyxPQUNBQztJQVJzQyxXQU14Q0U7OztJQXRGTSxJQUFOMUMsTUFsSUFDO2FBbUlBMEMsY0FBYzlDLEdBQUVDLEdBQUU4QyxHQUFFQyxHQUFFQztLQUFJLFdBRDFCOUMsU0FDY0gsT0FBRUMsT0FBRThDLE9BQUVDLE9BQUVDO0lBQTJDO2VBQWpFSDs7O0lBTk0sSUFBTjNDLE1BN0hBQzthQThIQTBDLGNBQWM5QyxHQUFFQyxHQUFFOEMsR0FBRUM7S0FBSSxXQUR4QjdDLFNBQ2NILE9BQUVDLE9BQUU4QyxPQUFFQztJQUF3QztlQUE1REY7OztJQU5NLElBQU4zQyxNQXhIQUM7YUF5SEEwQyxjQUFjOUMsR0FBRUMsR0FBRThDO0tBQUksV0FEdEI1QyxTQUNjSCxPQUFFQyxPQUFFOEM7SUFBcUM7ZUFBdkREOzs7SUFOTSxJQUFOM0MsTUFuSEFDO2FBb0hBMEMsY0FBYzlDLEdBQUVDLEdBQUksV0FEcEJFLFNBQ2NILE9BQUVDLFFBQWtDO2VBQWxENkM7OztJQU5NLElBQU4zQyxNQTlHQUM7YUErR0EwQyxjQUFjOUMsR0FBSSxXQURsQkcsU0FDY0gsT0FBK0I7ZUFBN0M4Qzs7Ozs7T0ExRUZwQjtPQURBTDtPQU1FUTtPQUVBRztPQU1BQztXQW5GUXhCLFdBMERSVSxTQUNBQztPQU9GRTtXQXJDRXZCLFNBQ0FHLE9BU0FLLE1BQ0FGO09BMkJGbUI7T0FDQUM7O1FBc0VRLElBQU50QixNQXpHQUMsWUEwR0EwQyxvQkFEQTNDO21CQUNBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7Ozs7Ozs7SUNsSGtCO2FBK0xoQkksTUFBTTNCLEdBQUksT0FBSkEsS0FBVzthQUNqQjRCLE1BQU01QixHQUFJLE9BQUpBLEtBQVc7YUFDakI2QixZQUFZN0IsR0FBSSxPQUFKQSxLQUFpQjthQUM3QjhCLE1BQU05QixHQUFJLE9BQUpBLEtBQVc7YUFDakIrQixXQUFXL0IsR0FBSSxPQUFKQSxLQUFnQjthQUMzQkcsT0FBT0gsR0FBSSxPQUFKQSxLQUFZO2FBQ25CZ0MsS0FBS2hDLEdBQUksT0FBSkEsS0FBVTthQUNmaUMsU0FBU2pDLEdBQUksT0FBSkEsS0FBUzthQUNsQmtDLGtCQUFrQmxDLEdBQUksT0FBSkEsRUFBSztJQVh2QjtLQUFBOztRQUdBMkI7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQTVCO1FBQ0E2QjtRQUNBQztRQUNBQztLQUdvQjthQXVFcEJYLGNBQWN2QixHQUFJLE9BQUpBLEtBQWM7YUFDNUJtQyxPQUFPbkMsR0FBSSxPQUFKQSxnQkFBdUI7YUFDOUJvQyxJQUFJcEMsR0FBRThCLE9BQVEsd0JBQVY5QixNQUFFOEIsV0FBQUEsT0FBc0I7YUFDNUJPLGVBQWVyQyxHQUFJLE9BQUpBLEtBQWlCO2FBQ2hDc0MsTUFBTXRDLEdBQUksT0FBSkEsS0FBVzthQUNqQnVDLEtBQUt2QyxHQUFHd0MsTUFBTUM7S0FBSSxvQ0FBSkEsR0FBTkQsTUFBSHhDO0lBQTBDO2FBQy9DMEMsb0JBQWtCMUMsR0FBSSxPQUFKQSxFQUFLO0lBVHZCO0tBQUE7O1FBR0F1QjtRQUNBWTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBRztLQUdrQjthQTZFbEJDLFFBQU0zQyxHQUFJLE9BQUpBLEtBQVc7YUFDakI0QyxRQUFNNUMsR0FBSSxPQUFKQSxLQUFXO2FBQ2pCNkMsSUFBSTdDLEdBQUksT0FBSkEsS0FBUzthQUNiOEMsV0FBVzlDLEdBQUksT0FBSkEsS0FBZ0I7YUFDM0IrQyxPQUFLL0MsR0FBSSxPQUFKQSxLQUFVO2FBQ2ZnRCxXQUFTaEQsR0FBSSxPQUFKQSxLQUFTO2FBQ2xCaUQsb0JBQWtCakQsR0FBSSxPQUFKQSxFQUFLO0lBVHZCO0tBQUE7O1FBR0EyQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztLQUdtQjthQTZFbkJDLGdCQUFjbEQsR0FBSSxPQUFKQSxLQUFjO2FBQzVCbUQsU0FBT25ELEdBQUksT0FBSkEsZ0JBQXlCO2FBQ2hDb0QsTUFBTXBELEdBQUU4QixPQUFRLHdCQUFWOUIsTUFBRThCLFdBQUFBLE9BQXdCO2FBQ2hDdUIscUJBQXFCckQsR0FBSSxPQUFKQSxLQUEwQjthQUMvQ3NELFNBQU90RCxHQUFJLE9BQUpBLEtBQVk7YUFDbkJ1RCxPQUFLdkQsR0FBR3dDLE1BQU1DO0tBQUksb0NBQUpBLEdBQU5ELE1BQUh4QztJQUE0QzthQUNqRHdELG9CQUFrQnhELEdBQUksT0FBSkEsRUFBSztJQVR2Qjs7O1FBR0FrRDtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztJQTFjUjs7Ozs7Ozs7O0dBc0JLOzs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lDdENPMUU7SUFXQW9CO0lBV0F1RDtJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVNGQztJQVFBQztJQVFBQztJQVFBQztJQVFBQztJQVFBQztJQVVBQztJQVFBQztJQVFBQztJQVFBQztJQVFBQzs7Ozs7Ozs7SUFuTUpDLDJEQUtNOUY7SUFNTitGLDZEQUtNM0U7SUFNTjRFLDZEQUtNckI7SUFNTnNCOytDQUtNckI7SUFNTnNCLDREQUtNckI7SUFNTnNCLDZEQUtNckI7SUFNTnNCLDhEQUtNckI7SUFNTnNCLDZEQUtNckI7SUFNTnNCLDREQUtNckI7SUFNTnNCLDREQUtNckI7d0RBU0ZDO0lBR0pxQjtzREFLSXBCO0lBR0pxQjt1REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjtxREFLSXBCO0lBR0pxQjswREFLSXBCO0lBR0pxQjt3REFPSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFrWEVwRTtJQUFROztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBO2VBQ0E7O0dBQUM7WUFHVEw7SUFBYzs7V0FDWDBFLHVCQUFBQTs7V0FHQUMseUJBQUFBOztXQUdBQyx5QkFBQUE7O1dBR0FDLHlCQUFBQTs7V0FHQUMseUJBQUFBO21CQUdBQyx5QkFBQUE7O0dBRVk7WUFHZkMsUUFBS047SUFBTTtLQUFnQyxNQXJCM0MxRSxjQXFCSzBFO0tBQXdCLE1BQUE7SUFBQSxPQUFBO0dBQWtDO0dBOUt0RCxnQkFnSlRyRSxPQVNBTCxlQXFCQWdGO1lBZ0JBQztJQUFBOztPQUNzQjs7T0FDQTs7T0FDQTtlQUNBOztHQUFDO1lBR3ZCdEQ7SUFBQTs7T0FFcUQ7O1FBRDlDeEU7UUFBSEQ7UUFDaUQsTUFBQSx3QkFEOUNDO09BQzhDLE9BQUEsV0FqY3ZEbUgsb0JBaWM2Qix3QkFEdkJwSDs7T0FNRjs7UUFKUStDO1FBQUhsQztRQUFIQztRQUlGLE1BQUEsd0JBSlFpQztRQUdSLE1BQUEsd0JBSEtsQztPQUlMLE9BQUE7Z0JBOWJKd0csb0JBNGJJLHdCQUZFdkc7O09BVUY7O1FBTFdrQztRQUFIZ0Y7UUFBSEM7UUFBSEM7UUFLRixNQUFBLHdCQUxXbEY7UUFJWCxNQUFBLHdCQUpRZ0Y7UUFHUixNQUFBLHdCQUhLQztPQUtMLE9BQUE7Z0JBNWJKWDtnQkF5Ykksd0JBRkVZOzs7OztPQVlGOztRQU5jakY7UUFBSGtGO1FBQUhDO1FBQUhDO1FBQUhDO1FBTUYsTUFBQSx3QkFOY3JGO1FBS2QsTUFBQSx3QkFMV2tGO1FBSVgsTUFBQSx3QkFKUUM7UUFHUixNQUFBLHdCQUhLQztPQU1MLE9BQUE7Z0JBM2JKZDtnQkF1Ykksd0JBRkVlOzs7Ozs7R0FNdUI7R0F4Q2xCO0lBQUEsWUFhVFAsU0FPQXREOzs7Ozs7Ozs7O1lBNkJFOEQ7SUFBQTs7O2VBMW9CSnBDOztlQVdBQzs7ZUFXQUM7O2VBV0FDOztlQVdBQzs7ZUFXQUM7O2VBV0FDOztlQVdBQzs7ZUFXQUM7dUJBV0FDOzs7O1dBa2pCT1k7T0FBa0MsT0FBQSxXQWppQnpDWCxvQkFzaEJJMEIsZ0JBV0dmOztXQUNGQztPQUFnQyxPQUFBLFdBMWhCckNYLGtCQThnQkl5QixnQkFZQ2Q7O1dBQ0NDO09BQWlDLE9BQUEsV0FuaEJ2Q1gsbUJBc2dCSXdCLGdCQWFFYjs7V0FDREM7T0FBa0MsT0FBQSxXQTVnQnZDWCxvQkE4Zkl1QixnQkFjQ1o7O1dBQ0RDO09BQStCLE9BQUEsV0FyZ0JuQ1gsaUJBc2ZJc0IsZ0JBZUFYOztPQUU2Qzs7UUFEbENZO1FBQUxDO1FBQ3VDLE1BakI3Q0YsZ0JBZ0JXQztPQUNrQyxPQUFBLFdBL2ZqRHRCLHNCQThlSXFCLGdCQWdCTUU7O1dBRUpaLGtCQUFPLE9BQUEsMEJBQVBBOztXQUNDYSxrQkFBTyxPQUFBLDJCQUFQQTs7V0FDQ0Msa0JBQU8sT0FBQSwwQkFBUEE7bUJBQ0R0SSxvQkFBWSxPQUFBLHFCQUFaQTs7R0FBb0M7WUFHdkMyQixhQUNGNEcsSUFBR0M7SUFDTCxJQURFQyxPQUFBRixJQUFHRyxPQUFBRjtJQUNMOzs7Z0JBREVDO2NBQUFBOztvQkFBR0MsNEJBQUFBLE1Bc0JTO21CQXRCVEE7OztvQkFBQUEsNEJBQUFBLE1BdUJhO21CQXZCYkE7OztvQkFBQUEsNEJBQUFBLE1Bd0JhO21CQXhCYkE7OztvQkFBQUEsNEJBQUFBLE1BeUJxQjttQkF6QnJCQTs7O29CQUFBQSw0QkFBQUEsTUEwQlc7bUJBMUJYQTs7O29CQUFBQSw0QkFBQUEsTUEyQmE7bUJBM0JiQTs7O29CQUFBQSw0QkFBQUEsTUE0QmU7bUJBNUJmQTs7O29CQUFBQSw0QkFBQUEsTUE2QmE7bUJBN0JiQTs7O29CQUFBQSw0QkFBQUEsTUE4Qlc7bUJBOUJYQTs7O29CQUFBQSw0QkFBQUEsTUErQlc7bUJBL0JYQTs7OztjQUFIRDs7Y0FnQ09FLEtBaENQRjtvQkFBR0M7a0JBQUFBOztjQWlDSSxJQURXRSxPQWhDZkYsU0FrQ0FsSixJQW5DRG1DLGFBaUNLZ0gsSUFBV0M7cUJBRWZwSixJQUFBQSxJQUFBQTs7Ozs7O2NBRUVxSixPQXBDTEo7b0JBQUdDO2tCQUFBQTs7Y0FxQ0ksSUFET0ksT0FwQ1hKLFNBc0NBSyxNQXZDRHBILGFBcUNHa0gsTUFBU0M7cUJBRVhDLE1BQUFBLE1BQUFBOzs7Ozs7Y0FFR0MsT0F4Q05QO29CQUFHQztrQkFBQUE7O2NBeUNJLElBRFNPLE9BeENiUCxTQTBDQVEsTUEzQ0R2SCxhQXlDSXFILE1BQVVDO3FCQUViQyxNQUFBQSxNQUFBQTs7Ozs7O2NBRUVDLE9BNUNMVjtvQkFBR0M7a0JBQUFBOztjQTZDSSxJQURPVSxPQTVDWFYsU0E4Q0FXLE1BL0NEMUgsYUE2Q0d3SCxNQUFTQztxQkFFWEMsTUFBQUEsTUFBQUE7Ozs7OztjQUVDQyxPQWhESmI7b0JBQUdDO2tCQUFBQTs7Y0FpREksSUFES2EsT0FoRFRiLFNBa0RBYyxNQW5ERDdILGFBaURFMkgsTUFBUUM7cUJBRVRDLE1BQUFBLE1BQUFBOzs7Ozs7b0JBbERIZixTQW9EZ0JnQixlQUFOQztvQkFwRFBoQjtrQkFBQUE7O2NBcURJO3VCQXJESkE7ZUFvRG9DaUI7ZUFBTkM7ZUFDMUIsVUF0RExqSSxhQXFEUStILE1BQXVCRTtlQUNGLFVBdEQ3QmpJLGFBcURjOEgsTUFBdUJFO3FDQUVkO2NBQ0Q7Ozs7OztjQUNsQkUsT0F4RE5wQjtvQkFBR0M7a0JBQUFBOztrQkF3RGFvQixPQXhEYnBCO3FCQXdER21COzsyQkFBQUE7MEJBQVVDLFNBK0JBO2lCQTNCTjs0QkFKTUE7a0JBR1lDO2tCQUFKQztrQkFBWEM7a0JBQUpDO2tCQUNDLFVBN0RSdkksYUE0RE91SSxJQUFlRjtrQkFDTSxVQTdENUJySSxhQTREV3NJLElBQWVGO3dDQUVBO2lCQUNEOzsyQkFOckJGOzBCQUFVQyxTQWdDQTtpQkF4Qk47NEJBUk1BO2tCQU9vQks7a0JBQUpDO2tCQUFKQztrQkFBWEM7a0JBQUpDO2tCQUFKQztrQkFDQyxVQWpFUjdJLGFBZ0VPNkksTUFBbUJIO2tCQUNFLFVBakU1QjFJLGFBZ0VXNEksTUFBbUJIO2tCQUNrQixVQWpFaER6SSxhQWdFZTJJLElBQW1CSDttREFFRTtpQkFDUTs7MkJBVnhDTjswQkFBVUMsU0FpQ0E7aUJBcEJWOzRCQWJVQTtrQkFXNEJXO2tCQUFKQztrQkFBSkM7a0JBQUpDO2tCQUFYQztrQkFBSkM7a0JBQUpDO2tCQUFKQztrQkFFSCxXQXRFSnJKLGFBb0VPcUosTUFBdUJKO2tCQUVOLFdBdEV4QmpKLGFBb0VXb0osTUFBdUJKO2tCQUVVLFdBdEU1Q2hKLGFBb0VlbUosTUFBdUJKO2tCQUUwQixXQXRFaEUvSSxhQW9FbUJrSixJQUF1Qko7a0VBSUk7aUJBQ3VCOzsyQkFoQmpFWjswQkFBVUMsU0FrQ0E7aUJBZlI7NkJBbkJRQTtrQkFpQm9DbUI7a0JBQUpDO2tCQUFKQztrQkFBSkM7a0JBQUpDO2tCQUFYQztrQkFBSkM7a0JBQUpDO2tCQUFKQztrQkFBSkM7a0JBRUQsV0E1RU4vSixhQTBFTytKLE1BQTJCTDtrQkFHNUIsV0E3RU4xSixhQTBFVzhKLE1BQTJCTDtrQkFJaEMsV0E5RU56SixhQTBFZTZKLE1BQTJCTDtrQkFLcEMsV0EvRU54SixhQTBFbUI0SixNQUEyQkw7a0JBTXhDLFdBaEZOdkosYUEwRXVCMkosSUFBMkJMOztrQkFRTTtpQkFLaEM7Ozs7Ozs7Y0FLbkJVLE9BM0ZQbEQ7b0JBQUdDO2tCQUFBQTs7Y0E4RkQ7ZUFIZ0JrRCxPQTNGZmxEO2VBOEZELE1BQUEsMkJBSGdCa0Q7ZUFFaEIsTUFBQSwyQkFGS0Q7Y0FHTCxPQUFBOzs7Ozs7Y0FDTUUsT0EvRlJwRDtvQkFBR0M7a0JBQUFBOztjQWtHRDtlQUhrQm9ELE9BL0ZqQnBEO2VBa0dELE1BQUEsMEJBSGtCb0Q7ZUFFbEIsTUFBQSwwQkFGTUQ7Y0FHTixPQUFBOzs7Ozs7eUJBbEdGcEQsU0FHT3NEO29CQUhKckQsMkJBQUFBO1dBS2tEO3VCQUxsREE7WUFHOEJzRDtZQUFQQztZQUFaQztZQUV1QyxNQUFBLHFCQUYzQkQ7WUFFRCxNQUFBLHFCQUZsQkY7WUFJSkksTUFGQTtjQUVBQSxLQUFpQixPQUFqQkE7Y0FKV0Q7c0JBQUFBOzs7aUJBSGRFOztnREFBQUE7aUJBQUFBOztpQkFHaUNKLFVBSGpDdkQsT0FBQTJEO3NCQUdpQ0o7OztpQkFIOUJLOztnREFBQUE7aUJBQUFBOztnQkFBSDVELE9BQUEyRCxNQUFHMUQsT0FBQTJEOzs7Z0JBRzhCTCxNQVViO3FCQVZhQTs7O2dCQUg5Qk07OytDQUFBQTtnQkFBQUE7O2VBQUE1RCxPQUFBNEQ7OztjQWNPQztVQUNWLEtBRFVBLE1BR0M7b0JBSERBOzs7ZUFkVkM7OzhDQUFBQTtlQUFBQTs7Y0FBQS9ELE9BQUErRDs7O1VBa0JjQyxLQWxCWC9EO01BbUJILEtBRGMrRCxJQUdIO2dCQUhHQTs7O1dBbEJYQzs7MENBQUFBO1dBQUFBOztVQUFBaEUsT0FBQWdFOzs7ZUFBSGpFO2FBQUFBOzs7U0FvR1k7O1NBQ0E7O1NBQ0k7O1NBQ0w7O1NBQ0M7O1NBQ0M7O1NBQ0Q7O1NBQ0Q7aUJBQ0E7OzthQTVHWEE7OztTQTZHZTs7U0FDRjs7U0FDQzs7U0FDRDs7U0FDRDs7U0FDSzs7U0FDSDs7U0FDQztpQkFDQzs7S0FsQk47O0dBa0JVO1lBR3RCakgsS0FBSzdCLEdBQUVDLEdBQUksYUF6SFArQixhQXlIQ2hDLEdBQUVDLFdBQTRCO1lBRW5DZ0MsaUJBQWlCakMsR0FBRUM7SUFDZixZQTVIQStCLGFBMkhhaEMsR0FBRUM7O0tBR1gsTUFBQTtRQURIK007SUFBUyxPQUFUQTtHQUNlO1lBR2hCQztJQUFPLElBRVhDO0lBRlc7ZUFFWEEsMEJBQUFBO2dCQUFBQTs7Ozs7WUFENkJDOzsyQ0FBQUE7WUFBQUE7O1dBQzdCRCxNQUQ2QkM7Ozs7S0FDeEIsT0FBTEQ7O0dBQU07Ozs7Ozs7Ozs7Ozs7Ozs7TUFWTnJMO01BekhJRztNQTJISkM7TUFuSklzRztNQXlKQTBFOztJQU1ORztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztZQUNBQyxrQkFBa0J0RyxLQUFNLFdBQU5BLEtBQXdCO1lBQzFDdUcsZ0JBQWdCdkcsS0FBTSxXQUFOQSxLQUFzQjtZQUN0Q3dHLGlCQUFpQnhHLEtBQU0sV0FBTkEsS0FBdUI7WUFDeEN5RyxrQkFBa0J6RyxLQUFNLFdBQU5BLEtBQXNCO1lBQ3hDMEcsZUFBZTFHLEtBQU0sV0FBTkEsS0FBcUI7WUFDcEMyRyxvQkFBb0IxRixLQUFJRCxLQUFNLGVBQVZDLEtBQUlELE1BQWlDO09BQ3pENEY7WUFDQUMsa0JBQWtCck8sR0FBRUMsR0FBSSxtQkFBTkQsR0FBRUMsS0FBMkM7WUFDL0RxTyxrQkFBa0J0TyxHQUFFQyxHQUFFOEMsR0FBSSxtQkFBUi9DLEdBQUVDLEdBQUU4QyxLQUE4QztZQUNwRXdMLGtCQUFrQnZPLEdBQUVDLEdBQUU4QyxHQUFFQyxHQUFJLG1CQUFWaEQsR0FBRUMsR0FBRThDLEdBQUVDLEtBQWlEO1lBQ3pFd0wsa0JBQWtCeE8sR0FBRUMsR0FBRThDLEdBQUVDLEdBQUVDLEdBQUksbUJBQVpqRCxHQUFFQyxHQUFFOEMsR0FBRUMsR0FBRUM7R0FBb0Q7O0lBSTlFd0w7OzthQXRCQW5CLGtCQXJ4QkVqSDthQW14QkYrRyxnQkF6eUJFakg7SUFtMEJnQnVJO0lBQWxCQzs7OztPQTFCQXZCO09BQ0FDO09BQ0FDO09BQ0FDO09BdUJBb0I7T0F0QkFuQjtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQWVBWTtPQWRBWDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQTd6QkVySTtPQVdBQztPQVdBQztPQVdBQztPQWt5QmdCb0k7T0F2eEJoQm5JO09BV0FDO09BV0FDO09BV0FDO09BV0FDO09BV0FDO09BaUJBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVVBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDdE1GcUgscUJBRUVDO0lBQUosVUFBSUEsc0JBRUMsT0FGREE7UUFJRUMsT0FKRkQ7SUFLRixTQURJQztLQUNKLE1BQUE7SUFDVyxJQUFQQyxPQU5GRjtjQU1FRSxtQkFFSixPQUZJQTtJQUNKLE1BQUE7R0FDYTtZQUdiQyxhQUFhQztJQUNmO0tBQUlDO3lDQURXRDtLQUNKOztTQUNYRTs7TUFDb0MsVUFBQSx3QkFIckJGLEdBRWZFO01BRElELGlCQUFBQTtNQUNKLFVBQUFDO2lCQUFBQTtVQUFBQTs7O0lBRElELFVBQUFBO3dCQUFBQSxVQUFBQSwyQkFBQUE7R0FPb0Q7R0FLSCxVQWJuREY7TUFiQUo7SUEwQkssTUFBQTtHQUNxQyxVQWQxQ0k7TUFiQUo7SUEyQkssTUFBQTtPQUNMUTtZQUNBeEsscUJBQXFCNUU7SUFBMkIsVUFBQSxxQkFBM0JBOztHQUErQztHQWN2RDtJQUFUcVAsaUJBZkpELG9CQUFBQTtJQWdCSUUsYUFoQkpGLG9CQUFBQTtHQW1CSyxLQWxCTHhLLHFCQWNJeUs7SUFJTixNQUFBO0dBQ1ksR0FuQlZ6SyxxQkFlSTBLO0lBSU4sTUFBQTs7OztPQWhERVY7T0FhQUk7T0FlQUk7T0FDQXhLOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7S0crSEU5QjthQUVBMlEsTUFBNEJnQyxPQUFNQyxPQUFNQyxPQUFNQyxPQUFNQztLQUN0RDtNQU1JLE1BQUEsNENBUGtEQTtNQU1sRCxNQUFBLDRDQU40Q0Q7TUFLNUMsTUFBQSw0Q0FMc0NEO01BSXRDLE1BQUEsNENBSmdDRDtNQUdoQyxNQUFBLDRDQUgwQkQ7TUFtQ3RCM1MsZ0JBakNOO01BZ0NNZ1Q7TUFFQWpUO0tBM0JSOztjQVQ4QjRTO2NBQU1DO2NBQU1DO2NBQU1DO2NBQU1DO2NBa0M5Q0M7Y0FDQWhUO2NBQ0FEO0lBRW1DO2VBdEN6QzRRLE9BRkEzUTs7Ozs7S0ExQ0FBO2FBRUEyUSxNQUF5QmdDLE9BQU1DLE9BQU1DLE9BQU1DO0tBQzdDO01BS0ksTUFBQSw0Q0FOeUNBO01BS3pDLE1BQUEsNENBTG1DRDtNQUluQyxNQUFBLDRDQUo2QkQ7TUFHN0IsTUFBQSw0Q0FIdUJEO01BOEJuQjNTLGdCQTVCTjtNQTJCTWdUO01BRUFqVDtLQXZCUjs7Y0FSMkI0UztjQUFNQztjQUFNQztjQUFNQztjQTZCckNFO2NBQ0FoVDtjQUNBRDtJQUUrQjtlQWpDckM0USxPQUZBM1E7Ozs7O0tBckNBQTthQUVBMlEsTUFBc0JnQyxPQUFNQyxPQUFNQztLQUNwQztNQUlJLE1BQUEsNENBTGdDQTtNQUloQyxNQUFBLDRDQUowQkQ7TUFHMUIsTUFBQSw0Q0FIb0JEO01BeUJoQjNTLGdCQXZCTjtNQXNCTWdUO01BRUFqVDtLQW5CUjs7Y0FQd0I0UztjQUFNQztjQUFNQztjQXdCNUJHO2NBQ0FoVDtjQUNBRDtJQUUyQjtlQTVCakM0USxPQUZBM1E7Ozs7O0tBOUJBQTthQUVBMlEsTUFBbUJnQyxPQUFNQztLQUMzQjtNQUN3RCxNQUFBLDRDQUY3QkE7TUFFRCxNQUFBLDRDQUZMRDtNQWtCYjNTLGdCQWhCTjtNQWVNZ1Q7TUFFQWpUO0tBZlIsZUFKcUI0UyxPQUFNQyxPQWlCbkJJLG1CQUNBaFQsZUFDQUQ7SUFFdUI7ZUFyQjdCNFEsT0FGQTNROzs7OztLQXhCQUE7YUFFQTJRLE1BQWdCZ0M7S0FDbEI7TUFBNEMsTUFBQSw0Q0FEMUJBO01BWVYzUyxnQkFYWTtNQVVaZ1Q7TUFFQWpUO0tBWFIsZUFGa0I0UyxPQVdWSyxtQkFDQWhULGVBQ0FEO0lBRWlCO2VBZnZCNFEsT0FGQTNROzs7Ozs7UUFoQkY7O1NBSEVBO1NBUU1nVDtTQUVBalQ7U0FSTjRRLGdCQU1NcUMsbUJBUk5oVCxlQVVNRDttQkFSTjRRLE9BRkEzUTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUVnREtrVDs7Ozs7Ozs7O0lDcENIQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQTJYUkM7Ozs7Ozs7Ozs7Ozs7Ozs7WUR0WE1DLFlBQWFDLEtBQUlDO0lBQ25CLE9BQU8sK0JBRFlBO2NBQ2dDLCtCQURwQ0QsS0FBSUM7Y0FBQUE7R0FDNEQ7R0FKN0U7OztPQUdBRjtPQ0xFdkI7cUI7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0EyWFJZO09BM1hRWDtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7O1FEWUUsSUFDSkssSUFESTtVQUVNQztTQUFBQywwQkFBQUQsUUFIVkUsNEJBR1VEOzs7UUFIVkMsMEJBRUFIOztHQUdKLFNBTkVJO0lBT0EsY0FORUQ7U0FRS0QsTUFSTEM7S0FRWSxNQUFBLDRCQUFQRDs7UUFEREYsSUFQSkc7SUFPUyxPQUFMSDtHQUNpQjtZQWdCbkJLLFlBR0NDO0lBREYsU0FDRUE7S0FnSkEsT0FBQTs0Q0FsSkVqQyxrQkFFRmlDO0lBQ3FCO0tBREZDLGtCQUFuQkQ7S0FDSUU7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7Ozs7Ozs7OzttQkFQZVA7T0FRRTs7WUF1RWpCUTtpQkFBQUE7a0JBQUFBOzs7O1lBcEVNQywwQkFEZ0JDO1dBQ2hCRCxtQkFBQUE7O1NBQ0hFO1NBQ0NDO29CQUZFSDtxQkFFRkk7YUFDRixLQUhJSjtjQVpaLE9BQUE7cURBREkzQyxrQkFFRmlDO2dCQVdVVTtjQVNHLE1BQUE7aUJBTEhLLFFBSkFMO2FBSWEsT0FBYks7WUFLZTttQkFQakJEOztTQUFBQSxpQkFBQUQsaUJBRkVIO2dDQURnQkM7aUNBQUFBO2tDQUFBQTttQ0FBQUE7b0NBQUFBOztjQUh0QkgsbUJBR3NCRyxnQkFIdEJIOztvQkFIQUg7YUFFQUUsd0JBSXNCSSxnQkFKdEJKOzthQWtEOEI7Y0FBcEJTLG1CQTNDTkY7Y0E0Q01HLGFBQWUsc0JBRGZEO2FBcERWWCx1QkFxRFVZOzttQkF0RFZiO1lBR0FHLHdCQUlzQkksZ0JBSnRCSjs7WUF3QzhCO2FBQXBCVyxtQkFqQ05KO2FBa0NNSyxhQUFlLHNCQURmRDtZQTNDVmQsd0JBNENVZTs7a0JBN0NWaEI7V0FJQUksd0JBSXNCSSxnQkFKdEJKOztXQThCOEI7WUFBcEJhLG1CQXZCTk47WUF3Qk1PLGFBQWUsc0JBRGZEO1dBbENWakIseUJBbUNVa0I7O2lCQXBDVm5CO1VBS0FLLHdCQUlzQkksZ0JBSnRCSjs7VUFvQjhCO1dBQXBCZSxtQkFiTlI7V0FjTVMsYUFBZSxvQkFEZkQ7VUF6QlZwQixzQkEwQlVxQjs7Z0JBdEJWakI7U0FDQUMsd0JBSXNCSSxnQkFKdEJKOztTQTREOEI7VUFBcEJpQixtQkFyRE5WO1VBc0RNVyxhQUFlLHNCQURmRDtTQTdEVmxCLHFCQThEVW1COztvQkF2RFBiOzs7Ozs7S0FvRUgseUNBbEZGN0Msa0JBaUZFMEM7O09BekVBRjtLQWtGRCxPQUFBOztjQTFGRHhDO2NBUUV3QztjQU5KUDtPQU9JUTtLQXdGRSxPQUFBOztjQWpHSnpDO2NBU0V5QztjQVBKUjs7V0FDSUU7V0FDQUM7V0FDQUM7V0FDQUM7YUFDQUM7OztNQTBHMEJvQjtNQURBQztNQURBQztNQURBQztNQURBQztLQUtyQjthQUxxQkE7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7O0lBV25CLE9BQUE7O2FBNUhUM0Q7YUFFRmlDOzt3QkFDSUU7O3lCQUNBQzs7MEJBQ0FDOzsyQkFDQUM7K0JBQ0FDO0dBMkkyRTtZQU1oRnlCO0lBQ0Q7S0FJZ0JDO0tBREVDO0tBRENDO0tBRENDO0tBREhDO0tBUVZDLFVBQVksc0JBSkhMO0tBR1hNLGdDQUNFRDtLQUlBRSxVQUFZLHNCQVRETjtLQVFiTyxrQ0FDRUQsZUFMRkQ7S0FTRUcsVUFBWSxzQkFkQVA7S0FhZFEsa0NBQ0VELGVBTEZEO0tBU0VHLFVBQVksc0JBbkJDUjtLQWtCZlMsa0NBQ0VELGVBTEZEO0tBVUVHLFVBQVksb0JBekJGVDtLQXdCWlUsa0NBQ0VELGVBTkZEO0lBU0osV0FKSUU7R0FJeUI7WUFNN0JDLFVBQ0dDLE9BQVFDO0lBQ1YsR0FBRyxvQ0FEREQsT0FBUUMsUUFFTDtJQUVHLElBV0pDLElBWEkscUJBSk5GLFVBQVFDO2FBZU5DLEdBQUssT0FBTEE7SUFUTyxJQVFKQyxNQVJJLHNCQU5USCxVQUFRQzthQWNIRSxLQUFLLE9BQUxBO0lBTk8sSUFLSkMsTUFMSSxzQkFSWkosVUFBUUM7YUFhQUcsS0FBSyxPQUFMQTtJQUhPLElBRUpDLE1BRkksc0JBVmZMLFVBQVFDO2lCQVlHSSw0QkFaWEwsVUFBUUMsWUFZR0k7R0FHRjs7a0RBaEJaTixXQW5DQWhCOzs7Ozs7Ozs7Ozs7Ozs7OztZQStERnVCLGtCQUFrQkMsVUFDcEIsV0FEb0JBLHNCQUNxRDtZQUd2RUMsd0JBQXlCQztJQUMzQjtXQUQyQkE7V0FBQUE7V0FBQUE7V0FBQUE7S0FDQyxNQUFBLGdDQUREQTtJQUMzQixXQUFhO0dBS1o7R0F1QkssSUFDSkMseUJBRUFDO1lBS0FDLFlBQVVuRSxHQUFJLE9BQUpBLEVBQUs7WUFFZm9FLFlBQVVDO0lBQ1osaUNBRFlBO0tBR1A7UUFDTEM7O0tBQ1EsWUFBQSx3QkFMSUQsR0FJWkM7Ozs7Ozs7Ozs7O01BR1M7O0tBSkosVUFDTEE7ZUFBQUEsR0FLQSxPQVRZRDtTQUlaQzs7R0FLQzs7Ozs7T0FyU0RqRTs7UUF5QklDO1FBeUpBZ0M7UUErREZ1QjtRQUlBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7V0E4QkFFLGFBRUFDLFdBT0FFLGFBRkFEOzs7O0U7Ozs7Ozs7Ozs7OztHSXJUMkI7O0lBQUE7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Ozs7O0lDUTNCZ0Q7Ozs7Ozs7Ozs7OztZQUVBQyxzQkFBaUIscUNBRW1CO1lBR3BDQywrQkFBNENDO0lBUTVDLFVBYkFGLGVBSzRDRTtJQVE1QyxPQUFBO0dBQWtCO0dBbEJTO0lBQUE7VUFHM0JILE9BRUFDLGdCQUtBQzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lDZkZFOzs7Ozs7Ozs7Ozs7Ozs7SSxJQTJLV0MsUyxvQ0Fma0JDO0lBQy9CO0tBQU07TUFEeUJDO1FBQ3pCOzZCQTdKSkgsa0JBNEo2QkUsaUJBZWxCRDtjQWZrQkUsbUI7Y0FBQUE7S0FZUixXQUdWRixXQUFBQTtTQWZrQkMsa0JBQUFDOztJQWdCOUI7U0FDbUNDO0tBQ3BDO01BQU07T0FEOEJDO1NBQzlCOzhCQTlLSkwsa0JBNktrQ0ksbUJBRnZCSDtjQUV1Qkk7TUFpQmIsV0FuQlZKLFdBQUFBO1VBRXVCRyxvQkFBQUM7O1lBQUFBOztROztnQjs7O0c7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQzFLaEI7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0lBYWxCQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFQUMsUUFBU0MsV0FBU0M7SUFDcEIsSUFBTSxJQUNKQyxJQURJLFdBRGNEO1VBS1JFO1NBQUFDLHdCQUFBRDtLQUNWLFdBTlNIO0tBT1QsTUFBQSw0QkFGVUk7O0lBRlYsV0FIU0o7SUFHVCxPQURBRTtHQUtPO0dBSUssSUFBVkc7WUFFQUMsSUFBS0M7SUFDUCxPQUhFRjtjQUtVO2VBTFZBLGlCQUVLRTtHQUdzRDtZQUczREM7SUFDRixPQVRFSDtlQUFBQTtjQVdRO0dBQStDO1lBZ0N2REk7SUFBa0IsT0FBQTtHQUFjO1lBU2hDQyxrQkFBa0JDO0lBQUksVUFBSkEsTUFBK0IsTUFBQTtJQUFBLE9BQUE7R0FBZ0M7WUFFakZDLFFBQVFDLE9BQU9aO0lBQ1IsSUFBTGEsS0FBSyx1QkFEQ0Q7d0JBRTZDLE9BQXZELFdBRmlCWixHQUNiYSxJQUN1RDtJQUFmLE9BbkU1Q2Ysd0JBbUU0QixPQUFnQix1QkFEeENlLElBQ21DO0dBQXFCO0dBR1IsSUFBbERDO1lBRUFDO0lBQ0YsVUFIRUQ7Y0FLUSxPQUFBO1FBRENKO0lBQU0sT0FBTkE7R0FDMkU7WUFRcEZNLCtCQUFxQ04sR0FBRU87SUFDekMsSUFBSUMsTUE5QkZWLGlCQStCRixNQUZ1Q0U7O1NBSy9CUyxzQkFISkMsYUFHSUQ7O1NBSEpDO0lBRm1DVixlQUFFTyxVQUNyQ0MsTUFEbUNSO0lBUXZDLHVCQVJ1Q0E7UUFTbkNXLE1BUkFILE1BQ0FFO2lCQVFrQ1A7S0FDcEMsdUJBRG9DQSxJQVJsQ087S0FRSixPQUFBLHVCQUFzQ1AsSUFEbENRO0lBR3dCO0lBRkssT0E1Qi9CVixRQUZBRixrQkFvQnFDQztHQVlWO1lBSTdCWTtJQUNGO0lBQ0E7SUFDQTtJQUFBLE9BQUE7R0FDMEI7WUFHeEJDLHVCQUF1Qk47SUFDVixJQUFYTyxXQW5DQVQ7SUEyQkZPO0lBU0YsT0F6QklOLCtCQXdCQVEsVUFEcUJQO0dBR3NDO1lBa003RFE7SUFFRix3Q0FuVEU1QjtHQW1UaUI7O2NBcFNmUSxLQU1BRTs7Ozs7aUJBOEZBbUIsWUFBUWhCLEdBQUVWLEdBQUksT0FBQSxvQkFBTlUsR0FBRVYsR0FBd0I7O1NBQ2xDMkI7Ozs7OztpQkFLRUMsYUFwQkpOLGdCQXFCRSxPQUFBLHVCQUNvQjtpQkFrQmxCTyw0QkFBNEJoQixJQUFHUTtTQUN6QixJQUFKUyxJQUFJLHFCQUFBLHVCQURzQmpCLElBQUdRO1NBRTFCLEtBQUEsOENBREhTLElBRUMsT0FGREE7U0FJRjs7WUFBQTs7U0FBQSxPQUFBLDRCQUpFQTtRQU9DO2lCQUdIQyx3QkFBd0JyQjtTQUNYLElBQVhzQixXQWpHSnhCO1NBa0dBO1NBQ0EsdUJBSDBCRTtTQUlkLElBQVJFLFFBM0ZKSCxrQkF1RjBCQzs7VUFRdEIsT0E3RkpDO21CQXlGSUM7NEJBSXNCQztvQkFHaEIsVUFBQSxpQ0FYZ0JIOztxQkFhYjtzQkFBc0J1QjtzQkFBTEM7c0JBQU5DO3NCQUFMQztzQkFDSE4sSUF6QmRELDRCQW1Cd0JoQixJQUtTb0IsV0FBaEJHO3FCQUVQLFdBRnVCSCxrQkFBTEMsS0FDZEosSUFEUUs7b0JBRWM7b0JBTDlCO3FCQUFBLFFBQUE7cUJBRE9FO3FCQUFMRDtxQkFRQUU7dUJBNUJSVCw0QkFtQndCaEIsSUFQdEJtQixXQVFNSTtvQkFTSjs0QkFBQSxpQ0FUU0M7NEJBUUxDO21CQUM2QjtTQUFDO1NBWG5DLE9BN0pQeEM7a0NBNEp3QixPQUFBLHdCQUZsQmMsT0FFa0M7O1FBWUc7aUJBbUZ6QzJCLFlBaEZjdEI7U0FDTixJQTlGa0JQLElBTjFCSzs7VUFPUSxJQUFORyxNQXpCRlY7VUF3QjBCRSxlQTZGWk8sVUE1RlpDLE1BRHdCUjtVQWlHMUIsT0FBQSxXQTdEQWlCO1NBOERTO1NBRkwsT0E3REpELFlBTUVFO1FBeURPO2lCQTRFVEwsdUJBekV5Qk47U0FDakIsSUFBSlAsSUE1R0pLOztVQTZHeUIsT0FBTzttQkFuRWhDWSxVQS9CQVgsK0JBaUdJTixHQURxQk87U0FFd0Q7U0FBbEUsT0FwRWZTLFlBTUVFO1FBOEQrRTs7U0FLL0UsVUFwSEZkO21CQXFIWTtTQUVlOztVQURaSjtVQUFMd0I7VUFDaUIsVUF2Q3pCSCx3QkFzQ2FyQjtVQUNDOEI7VUFBUkM7Z0JBREVQLFNBQUFBO2dCQUFBQSxTQUFBQTtnQkFBQUE7VUFPSixNQUFBLDBDQVBJQTtTQUVOOztVQVNvQixJQUFTSjtVQUFNLE9BQUEsa0NBQU5BO1NBQThCO1NBQTNELHVDQVZJVztTQVVKLE9BQUEsa0NBVllEO1FBV2tCO1FBZmxDO2lCQWtCTUUsWUFBY0MsS0FBV0M7U0FDL0IsR0FEb0JELFNBQVFFLE1BQVJGLFFBQUFHLFFBQVFELGNBQVJDO2FBQ2hCQzs7VUFHSixPQUFHO29CQUNFLFdBTDBCSDtvQkFBWEU7O3NCQVVkO3VCQVZ5QkYsR0FVekIsa0NBVEZHO3NCQURFTCxnQkFBY0ksZ0JBQVdGO1NBZU07U0FaakMsT0E3RkpsQixZQU1FRTtRQW1HbUM7aUJBb0NyQ29CO1NBakNRQztTQUFhaEM7U0FvQ0FpQztTQUNsQkM7U0FDQUM7U0F0QzRCQztTQUFjQztTQXlDMUNDO1NBekNvRXZEOztVQXlEcEUsWUEzUUhJOztlQWdCS29ELGVBMlBFQyx3QkEzUEZEOzs7WUEyUEVDO2NBMVBDO1VBMlBGLEdBQUEsNkJBdEJlUCxZQXFCZE87V0FHRixPQUFBOzs7O29CQXhCZ0JQO29CQXBDQWpDO29CQXlEZHdDO1VBYUY7OzthQUFtQyxVQTVLdEM3QjthQTRLc0MsT0FBQTtZQUFZO1VBMU92QztXQUFYOEI7YUFBVztXQUNYQyxPQUFPLHVCQURQRDtVQUVKO1lBRElDO1VBRUo7V0FrS01qRDtvQkFwS0ZpRCxNQUVlLDBDQUhmRDtVQWFGNUMsMEJBdUpxQkcsVUFDakJQO21CQUVBWCxVQUFRNkQ7V0FDVixPQUFNOzs7cUJBRUY7O3dCQXhCQWxCOzttQ0F3Qm1CbUI7MkJBN0p6Qi9DOzJCQStKNkM7NEJBQUEsUUEvRTNDaUIsd0JBd0VFckI7NEJBT3VCNEI7NEJBQWR3Qjs0QkFDSixNQXhPWGpFOzJCQUFBQTs7OzhCQStOVW9EOzhCQUFhaEM7OEJBQVVvQzs4QkFBY0M7OEJBUWhDUTs4QkFPbUIsdUJBUEx4QixpQkFGRnVCOzs4QkFIYkQ7OzJCQWlCSCxPQUFBLFdBL0hUakM7MEJBK0hrQjtxQkFkWixPQUFBO29CQWNjO1VBQUM7OztXQUVyQixJQUFNLGdCQXRCaUUzQjtpQkF3QjNEK0Q7WUFDRDthQURDQywwQkFBQUQ7YUFDTkUsS0FBSztZQXRCUGxFLGtCQXFCUWlFLEtBQ05DOzs7V0F0QkZsRTs7VUFvRUM7U0FNSztTQXpCQTtnQkFwRFdrQixjQUFBQTtnQkFBQUEsY0FBQUE7Z0JBQUFBO1VBb0RYLE1BQUEsMENBcERXQTtVQWdEakI7OztjLEtBWERrQyxhQVlZO2tCQUNIckIsSUFiVHFCO2NBYWMsT0FBTHJCOztTQU1aLE9BQUE7O2tCQWZHeUI7O2tCQUhBSDs7Ozs7O1FBdUNRO21CQS9DWGIsYUFDQWhCLHdCQUVBeUI7O09BcEpGekI7T0FxTUFFOzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O1lDOVRFeUMsU0FBT0MsR0FBSSxPQUFKQSxFQUFLO1lBQ1pDLEtBQUtDLEdBQUdDLEdBQUksT0FBQSxXQUFKQSxHQUFIRCxHQUFVO1lBTWZFLE9BQU9GLEdBQUksT0FBSkEsRUFBSztHQUhBLG1CQUpaSCxVQUNBRSxNQU1BRztZQUdGQyxTQUFTQyxHQUFJLE9BQUpBLEVBQUs7WUFDZEMsSUFBSUosR0FBSSxPQUFBLFdBQUpBLE1BQVE7WUFDWkssZUFBYSxTQUFJOytDQURqQkQsS0FDQUMsU0FGQUg7OztFOzs7Ozs7Ozs7Ozs7R0NidUI7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUMrRnZCSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBdEJBQztJQUNEO0tBQW1EQztLQUFwQkM7S0FBbEJDO0tBR0xDLFVBQVksK0JBSCtCSDtLQUU3Q0ksZ0NBQ0VEO0tBSUFFLFVBQVksK0JBUFdKO0tBTXpCSyxrQ0FDRUQsZUFMRkQ7S0FTRUcsVUFBWSwrQkFYUEw7S0FVUE0sa0NBQ0VELGVBTEZEO0lBUUosV0FKSUU7R0FJeUI7T0FNOUJDO1lBRUFDLFVBQVVDLEtBQUtDO0lBQU8sV0FBWkQsUUFBQUEsU0FBS0MsVUFBTEQsU0FBS0M7R0FBb0U7WUFRbkZDO0lBQ0Q7S0FBNkNDO0tBQTNCQztLQUdWQyxVQW5DUGpCLFlBZ0M0Q2U7S0FFdkNHLGdDQUNFRDtLQUlBRSxVQXZDUG5CLFlBZ0NpQmdCO0tBTVpJLGtDQUNFRCxlQUxGRDtJQVFKLFdBSklFO0dBSXlCO09BTTlCQztZQUVBQyxnQkFBaUJDLFdBQVdDO0lBQzlCLFdBRG1CRCxXQTNCakJaLFVBMkI0QmE7R0FDcUI7WUE4RGpEQzs7OztTQUFnQ0M7O3dDQUFBQTtTQUFBQTs7SUFFbEM7O1NBUWlCQzs7O01BSFIsTUFBQTtTQUdRQTs7O0tBQ1hDLDJCQURXRCx5QkFBQUE7S0FEYkUsY0FFRUQ7Ozs7Y0FlRjtnQkFBQSxpQ0ExQjhCRixPQVM5Qkc7O2FBQ2FGOztZQTRDYkcsT0FBU0M7SUFDWCxHQURXQTtTQUFjQyxNQUFkRCxRQUFBRSxjQUFjRDs7U0FBZEMsY0FqSlhsQztJQWtKQSxXQUFVLDZCQURDa0Msc0JBQUFBO0dBUVY7WUFHQ0MsTUFBTVIsR0FBR2Q7SUFBSGMsT0FHRztJQUhIQTtJQUFBQTtJQUFBQSxPQUFHZDtJQUFIYztJQUFBQTtJQUFBQSxPQUFHZDs7R0FTUztZQVNsQnVCLFdBQVdULEdBQUVFO0lBQ2YsR0FEYUY7S0FBQUEsV0FBQUEsTUFBQUE7S0FBQUEsT0FKRjtLQUlFQTs7SUFDc0IseUJBRHRCQSxNQUFBQSxNQUFFRTtJQUNvQjtHQUNHO1lBR3BDUSxTQUFTVixHQUFFRSxHQUFHUztJQUNoQixJQUFJQyxVQURPWixRQUFLVyxXQUFIVCxHQUVUVyxhQUZPYixPQUFLVztJQUFMWCxPQUNQWTthQUNBQztLQUlDLElBQ0NDLGFBTEZEO0tBRk9iLE9BT0xjO0tBWkpMLFdBS1NULEdBQ1BZLFlBTUVFO0tBUEtkLE9BQUFBOzs7SUFBQUEsT0FFUGE7O0dBVXNCO1lBR3hCRSxTQUFTZjtJQXBCVFMsV0FvQlNULEdBQUFBO0lBR007S0FBYmdCLGlCQUhPaEIsTUFBQUE7S0FJUGlCLFlBSk9qQjtLQUtQa0IsYUFMT2xCO0tBTVBPLGNBTk9QO0lBUVQ7Ozs7a0JBQ2dCLGlDQU5kZ0I7O2tCQUNBQzs7YUFJRjtxQkFBVyxpQ0FMVEQ7O3FCQUVBRTtxQkFDQVg7O0dBTUQ7WUFtQmVZLFFBQVFuQixHQUFHb0IsUUFBUUMsT0FBT0M7SUFDNUMsSUFSaUNDLE1BT0pILFNBQUhwQjtJQUFBQSxPQUFHb0I7WUFQSUc7YUFBQUE7YUF2Qy9CYjtlQThDd0JWO3NCQVBPdUIsZ0JBT1dELGFBQVBEO21CQUFPQzs7aUJBUFhDO1NBYTNCWixZQWIyQlksWUFPV0Q7S0FPMUMsT0FyREFaO2NBOEN3QlY7c0JBQWtCc0IsYUFBUEQsZ0JBTS9CVjtjQUFBQTs7T0FiMkJZLFNBb0RqQjtJQTVEUixJQUFKckIsUUFRNkJxQjs7YUFSN0JyQixNQVNKLE9BeENFUSxTQThDd0JWLEdBQVdxQixPQUFPQztLQTlDMUNaLFNBOEN3QlYsU0FmdEJFO0tBQUFBLE9BQUFBOztHQTZEaUM7WUFHbkNzQixJQUFJeEIsR0FBR29CLFFBQVMsT0FqREFELFFBaURabkIsR0FBR29CLGNBQW1EO1lBQzFESyxVQUFVekIsR0FBR29CLFFBQVMsT0FsRE5ELFFBa0RObkIsR0FBR29CLGVBQXNEO1lBQ25FTSxZQUFZMUIsR0FBR29CLFFBQVMsT0FuRFJELFFBbURKbkIsR0FBR29CLGVBQXNEO1lBZ0NyRU87Ozs7U0FBY0M7O3dDQUFBQTtTQUFBQTs7SUFDaEIsWUFEZ0JBOztLQUVSLE1BQUE7UUFDR0MsbUJBQVRDO0lBQ0E7WUFEQUE7WUFBU0Q7WUFIS0Q7WUFBQUE7O1lBQUFBO1lBQUFBO1lBQUFBLFVBQUFBOzs7OztHQWtCbEI7WUFFSUcsZUFBYSxjQUFxQjtZQXNCbENDLHNCQUFzQmhDLEdBQUdXO0lBQzNCLEdBRHdCWCxRQUFHVztRQUFIWCxPQUFBQSxNQXRCdEIrQjtRQXNCc0IvQjtrQkFBQUE7O09BbEJoQixNQUFBO1VBQ0c2QixtQkFBVEM7TUFpQnNCOUI7TUFBQUEsT0FBQUE7TUFBQUEsT0FqQnRCOEI7TUFpQnNCOUIsT0FqQmI2Qjs7S0FVSDtNQUFKSSxJQUFJLHlCQU9nQmpDLE1BQUFBO01BTnBCa0MsYUFNb0JsQyxTQUFBQSxPQUFBQTtLQUFBQSxPQUFBQSxRQU5wQmtDLGFBREFELFdBQ0FDO0tBTW9CbEMsUUFBQUEsUUFOcEJrQztLQU1vQmxDLE9BQUFBO1FBQUFBLFFBQUdXLFVBdEJ6Qm9COztRQTJCRTdCLEtBTG9CRixVQUFBQSxRQUFHVyw0QkFBQUE7SUFBSFgsUUFBQUEsUUFBR1c7SUFPM0IsT0FGSVQ7R0FFSDtZQUtLaUMsUUFBUW5DLEdBQUdvQyxNQUFNQyxjQUFjQztJQUNyQztLQURpQkMsU0FBQUg7S0FBTUksaUJBQUFIO0tBQWNJLDBCQUFBSDtJQUNyQztjQWJFTixzQkFZWWhDO1VBSVJvQixTQUpRcEIsT0FBU3dDO01BQVR4QyxPQUlSb0I7ZUFKV21CLFFBT1YsV0FQT3ZDLE1BSVJvQixTQUpRcEIsVUFJUm9COztPQUpXc0IsU0FBQUg7T0FBQUEsU0FBQUc7T0FBTUY7T0FBY0M7O21CQVpuQ1Qsc0JBWVloQztNQUFBQSxRQUFBQSxPQUFTd0M7VUFBQUEsb0JBQWNDOzttQkFabkNULHNCQVlZaEM7TUFtQkU7T0FBSkUsSUEvQlY4QixzQkFZWWhDO09Bb0JGMkMsdUJBcEJ5QkYsOEJBQWREO09BQWNJLDBCQUFBSDtPQUFkSSxpQkFvQlhGLGtCQURBekMsS0FuQnlCdUM7T0FBZEQsaUJBQUFLO09BQWNKLDBCQUFBRzttQkFabkNaLHNCQVlZaEM7TUFBQUEsUUFBQUEsT0FBU3dDO01BQVR4QyxPQUFBQTtNQUFBQSxPQUFBQTtVQUFTd0Msb0JBQWNDOzs7VUFvQ3RCSyxXQXBDRDlDLE9BQVN3QztNQUFUeEMsT0FvQ0M4QztjQXBDRVA7T0F3Q00sSUFBTnJELFVBeENIYyxNQW9DQzhDLFdBcENEOUMsVUFvQ0M4QztnQkFwQ0VQLFFBQUh2QyxZQXdDR2Q7T0FFSixPQUZJQTs7O09BeENBNkQsU0FBQVI7T0FBQUEsU0FBQVE7T0FBTVA7T0FBY0M7O0dBMkNpRDtZQUdwRk8sWUFBWWhELEdBQUdvQztJQUNqQixZQURjcEM7Z0JBT0osT0FyREptQyxRQThDUW5DLEdBQUdvQztRQUVWbEQ7SUFGT2M7aUJBQUdvQyxPQUVWbEQsTUFoRERpRCxRQThDUW5DLEdBQUdvQztHQU9pRDtHQTVIaEUsbUJBaUJBVCxtQkFvR0FxQjtZQVdGQyxLQUFLakQsR0FBRWtELEdBQUVDO0lBQ1gsVUFEU0QsNkJBQUVDLEtBQUZEO1lBQ2U7SUFDYixJQUFQRSxPQUFPLHdCQUZKcEQ7SUFHUDtLQUNrQjtNQUFaSCxZQUFZLHdCQUZkdUQsTUFGS0Y7TUFLSHBELFdBQVcsd0JBSGJzRCxPQUZPRCxJQUFGRDtNQU1QLE1BN1lBdEQsZ0JBMllJQyxXQUNBQztLQUNKOzs7OztNQUVvQixPQUFBOzs7R0FBZ0M7WUFHaER1RCxlQUFnQkM7SUFDdEIsU0FEc0JBLFNBRVY7SUFDQSxJQUFMQyxJQUhlRCxTQUdWO2lCQUFpQ0UsS0FBSUMsR0FBSyxPQUFURCxNQUh2Q0gsZUFHMkNJLE9BQTJCO0lBQWhFLE9BQUEsNENBQUxGO0dBQXNFO0dBSTdFO1lBRVFHLEtBQU1DLEtBQUlDLE9BQU9OO0lBQ3ZCLEdBRHVCQSxTQUFYSyxLQUVQLGlCQUZXQzthQUFPTixTQUtULE9BTEVNO0lBT0EsSUFEUEwsSUFOY0QsU0FPZk8sVUFHTkMsVUFWVUgsS0FBSUMsZUFNUEw7SUFDTyxPQUFSTTtHQUNNO1lBRVpDLFVBQVdILEtBQUlDLE9BQU9HO0lBQ1ksdUIsT0FYOUJMLEtBVU9DO0lBQ2IsT0FBQSx1Q0FEaUJDLE9BQU9HO0dBQ3VCO1lBRzdDQyxTQUFTaEUsR0FBRzJELEtBQUlUO0lBQ2xCLElBQUlDLEtBRGNELEtBdkJkRyxlQXVCVU07SUFFZCxXQXBDQVYsS0FrQ1dqRCxHQUFPa0QsR0FDZEM7R0FDYTtZQWdCakJjLG1CQWJxQmpFLEdBQUVzRCxNQUFNSztJQUM3QixJQXBCTUQsS0FtQnVCQyxRQUFOTDs7OztTQUdMcEQ7S0FBSyxPQVJyQjhELFNBS21CaEUsR0FBUTJELEtBR1h6RDs7SUFESDtHQUN5QjtZQVd4Q2dFLDJCQVI2QmxFLEdBQUUrRCxPQUFPSjtJQUN0QyxJQWhCRUcsVUFlb0NILFFBQVBJOzs7O1NBR2I3RDtLQUFLLE9BZHJCOEQsU0FXMkJoRSxHQUFTMkQsS0FHcEJ6RDs7SUFESDtHQUN5QjtZQU94Q2lFLFFBQVFuRTtJQUNWLElBQUlvRCxPQUFPLHdCQUREcEQsSUFFR3dEO0lBQ1g7S0FBQSxJQUFNLElBRUp0RSxNQUZJLHdCQUZKa0U7Ozs4QkFHOEIsT0FBQSxpQ0FGckJJOzs7S0FHRyxJQUhIWSxZQUdUbEYsS0FIU3NFLE1BQUFBLE1BQUFZOztHQUtOO1lBR0xDLFNBQVNyRTtJQUFJLFVBVmJtRSxRQVVTbkU7SUFBSSxPQUFBO0dBQTBCO1lBQ3ZDc0UsUUFBUUMsSUFBR0M7SUFBZ0MsVUFEM0NILFNBQ1dHO0lBQUssT0FBQSxhQURoQkgsU0FDUUU7R0FBZ0Q7WUFDeERFLFVBQVV6RTtJQUE4QixVQUZ4Q3FFLFNBRVVyRTtJQUE4QixPQUFBLCtCQTVmeEMxQjtHQTRmb0Q7Ozs7T0FBcERtRztPQURBSDtPQTNmQWhHO09BcUJBVTtPQUNBWDtPQUNBWTtPQVFBRztPQWlCQU87T0FFQUM7V0FxSEVRLFFBaUlBb0IsS0FDQUMsV0FDQUMsYUFsRkFYLFVBdENBUDtPQThURjJEO09BVUFFO09BakVBcEI7T0FvREFnQjtPQUNBQztPQTdYQW5FOzs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7SUU1S0V1SDtZQUVBQyxTQU1FQztJQUFTLElBTEFoRSxpQkFLVGdFOzttQ0FKUyxPQURBaEU7O01BR3FCLE9BQUE7S0FERTtNQUFmaUU7TUFBSHpIO01BQWtCLFlBQWxCQSxHQUZMd0Q7TUFBQUE7Y0FFUWlFOztHQUdLO0dBbkJiLElBQUEsY0FXWEgsT0FFQUMsV0FVa0IseUJBV3BCRztZQUVBQztJQUFhOzs2REFDUHJFLGlCQUFnQixPQUFoQkE7SUFDRCxPQUFBO0dBQXFDO1lBRzFDc0UsV0FNRUo7SUFBUyxJQUxBaEUsaUJBS1RnRTs7bUNBSlMsT0FEQWhFOztNQUVDLE9BQUE7S0FDaUI7TUFBZmlFO01BQU5uRTtNQUFxQixZQUFyQkEsTUFIR0U7TUFBQUE7Y0FHR2lFOztHQUVVOzs7bUNBYnhCQyxTQUVBQyxZQUtBQzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0dDMUNhOzs7SUFBQTtJQU1BO0lBUUg7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHQ1RWOzs7O0lBYUFDO0lBQ0FDO1lBSUExSCxPQUFTQyxLQUEyQzBILE1BQUtDO0lBQzNELEdBRFczSDtTQUFjQyxNQUFkRCxRQWpCRkUsY0FpQmdCRDs7U0FqQmhCQzs7V0FBQUEsaUJBQUFBO1dBQUFBO1dBQUFBOztXQWlCa0R5SDs7aUJBZjVDLHlDQUZOekg7Ozs7O2lCQUlnQix5Q0FKaEJBOzs7T0FRUDtRQUFBO2tCQUFpQjs7SUFVbkI7WUFORXNIO1lBS3lERzs7Ozs7WUFPM0M7O1lBUHNDRDs7Ozs7R0FjckQ7WUFHQ0EsS0FBSy9ILEdBQUksT0FBSkEsS0FBVTtZQUNmaUksVUFBVWpJLEdBQUksNENBQUpBLE1BQTJDO1lBQ3JEa0ksWUFBWWxJLEdBQUksT0FBSkEsS0FBaUI7WUFDN0JvQixPQUFPK0csT0FBUSxPQUFSQSxVQUFvQjtZQUMzQkMsS0FBS0QsT0FBUSxPQUFSQSxVQUF5QjtZQUM5QkUsT0FBT0YsT0FBUSxPQUFSQSxZQUFBQSxjQUF1QztZQUM5Q0csU0FBU3RJO0lBQUksSUFBb0QsTUFBeERBLE9BQXNCLE1BRC9CcUksT0FDU3JJO0lBQUksV0FBSkE7R0FBa0U7WUFXM0VRLE1BQVFILEtBQW1DTDtJQUM3QyxHQURVSyxTQUFNQyxNQUFORCxRQUFBbkIsTUFBTW9CLGNBQU5wQjtJQUFtQ2M7SUFBQUEsT0F2QzNDNkg7SUF1QzJDN0g7SUFBQUE7SUFBQUE7SUFBQUE7SUFBQUEsUUFBbkNkO0lBQW1DYyxRQUFuQ2Q7SUFBbUNjLFFBQW5DZCxTQUFBQTtXQUFtQ2M7O09BTk8sVUFMbERzSSxTQVcyQ3RJO09BTk8scUNBTVBBOzs7O09BSmlCLFVBUDVEc0ksU0FXMkN0STtPQUppQixxQ0FJakJBOzs0Q0FBQUE7O3dDQUFBQTtHQVduQjtZQUd4QnVJLFFBQVFKLE9BQ1YsT0FEVUEsaUJBR0U7WUFHVkssbUJBQW1CTCxPQUFRLFdBQVJBLGlCQUF1QjtZQUMxQ00sZ0JBQWdCTixPQUFBQSxXQTNEaEJMLHNCQTJENEQ7WUFDNURZLGdCQUFnQlAsT0FBUSxPQUFSQSxTQUE2Qjs7OztPQXhEN0MvSDtPQWtDQUk7T0FoQkF5SDtPQURBRjtPQUdBM0c7T0FDQWdIO09BQ0FDO09BZ0NBRztPQUNBQztPQXBDQVA7T0FxQ0FRO09BUkFIOzs7O0U7Ozs7OztHQ3ZFWTs7SUFBQTs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ09aOUQ7O0tBQXNCa0U7S0FBVkw7OzRCQUdhLDhCQUhISztJQUN4Qjs7OEJBQzRCLGlDQUZkTDs7O1lBT1pBLFNBQVN0SSxHQUFJLE9BQUpBLEtBQWM7WUFDdkIySSxRQUFRM0ksR0FBSSxPQUFKQSxLQUFhO1lBQ3JCNEksZUFBZTVJLEdBQUksT0FBSkEsS0FBb0I7WUFFbkM2SSxPQUFPQyxLQUFLQyxVQUFTL0k7SUFDdkIsSUFBSWQsTUFEbUJjLE1BRW5CZ0osTUFGbUJoSjtJQUd2QixPQUFBO2lDQUhTOEksVUFBS0MsVUFDVjdKLFFBQUFBLFFBQ0E4SjtHQU9DO0dBR1A7Ozs7SUFHNEU7S0FJakUsTUFBQTtJQUZZLElBRExDLHFCQUNSQyxXQTVCTnpFLFVBMkJjd0U7SUFFWix3QkFESUM7R0FFYztHQUp0QjtZQVNFQyxNQUFPQyxRQUFtQmQsVUFBVWUsUUFBUW5CO0lBQzlDLE9BRFNrQjs7V0FDTFQsVUE2QjRCOzs7T0FUWjtRQUFBLE1BQUEsNkJBckIwQlQ7UUFDMUNTO1VBb0JHOzs7OztXQXBCSEE7O1dBQUFBOzs7UUFBQUE7VUFEa0NVOzs7OztXQUNsQ1Y7O1dBQUFBOztXQUFBQTs7V0FBQUE7O1dBQUFBOztXQUFBQTs7V0FBQUE7bUJBQUFBOzs7O2VBREtTLFlBQTZCQztlQUE3QkQ7T0FvQ2EsVUFBQSw2QkFwQ3dCbEI7T0FvQ3JDLEdBQUEsNENBSkxVOzs7VUFBQUE7OztTQUFBQTs7SUFPSixNQUFBO2lDQXZDNEJOLFVBQ3hCSyxTQStCQUM7R0FPcUQ7R0FHMUM7SUFBQSxjQXBFYkEsZ0JBMEJBTzs7VUFuQ0ExRSxXQU9BNkQsVUFDQUssU0FHQUU7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ2hCQVMsWUFDRW5CLE9BQU9rQixRQUFPRDtJQUNsQix1Q0FESWpCOzs7YUFBY2lCO2lCQUFkakIsV0FBQUEsWUFBQUEsZUFBQUE7YUFBT2tCO2FBQVBsQjtHQVM0QjtHQVY5QjtJQWlCQUk7SUFJVTtJQU9FO0lBSEM7WUFRYmdCLFlBQWNsSixLQUFXOEg7SUFDM0IsR0FEZ0I5SCxTQUFRQyxNQUFSRCxRQUFBbUosUUFBUWxKLGNBQVJrSjtRQUNacEksU0FEdUIrRyxZQUFYcUI7SUFFaEIsV0FGMkJyQixXQUN2Qi9HLFNBRHVCK0csZUFDdkIvRztHQUNpRTtZQUduRXFJLG9CQUFvQnRCLE9BQU0xRSxHQUFOMEUsV0FBTTFFLFlBQThCO1lBQ3hEdEIsUUFBUWdHLE9BQUFBLFlBQUFBLDRCQUF3QztZQUVoRHVCLFlBQ0V2QjtJQUNKLElBQUl3QixpQkFEQXhCO0lBQUFBLFlBQ0F3QjtJQURBeEIsWUFBQUE7SUFBQUEsWUFBQUE7Y0FBQUE7Ozs7UUFNVyxPQUFBLHFDQU5YQSxVQUNBd0I7O1FBT0YsT0FBQSxxQ0FSRXhCLFVBQ0F3Qjs7SUFRRztHQUFFO1lBR1BDLG9CQUFvQnpCLE9BQVEsT0FBUkEsU0FBaUM7WUFFckQwQixlQUNFMUIsT0FBTTJCLFFBQUtyQztJQUNmLFlBRElVO2VBR0YsOEJBSEVBLGFBQU0yQixTQUFLckM7Y0FBQUE7R0FLSDtZQUdWc0MsY0FBYzVCLE9BQU02QixHQUFFdkM7SUFDeEIsOEJBRGdCVSxVQUFNNkI7SUFDdEIsT0FEd0J2QztHQUVuQjtZQUdId0MscUJBQXFCOUIsT0FBTTZCLEdBQUV2QztJQUMvQiw4QkFEdUJVLFVBQU02QjtJQUM3QixPQWZFSCxlQWNxQjFCLE9BQU02QixHQUFFdkM7R0FFSDtZQUcxQnlDLFlBQVkvQixPQUNkLE9BQU0sV0EzREpJLFNBMERZSixlQUdRO1lBR3BCZ0MsZ0JBQWdCaEMsT0FBUSxXQU54QitCLFlBTWdCL0IsT0FBK0I7WUFFL0NpQyx1QkFBdUJqQztJQUN6QixVQUR5QkE7Ozs4Q0FDckJrQztTQUFBQTs7SUFLSixHQUxJQTs7Z0JBRHFCbEM7a0JBRnZCZ0MsZ0JBRXVCaEM7O2VBQ3JCa0M7SUFLb0MsYUF6RnRDZixZQW1GdUJuQjtHQU8wQjtZQUdqRG1DLFFBQVFuQyxPQUFPcUI7SUFDakI7dUNBRFVyQixVQUFBQSxZQUFPcUI7R0FDb0Q7WUFHbkVlLGVBQ0VwQyxPQUFNMkIsUUFBS3JDO0lBZmIyQyx1QkFlRWpDO0lBRUosOEJBRklBLFVBQU0yQjtJQUVWLE9BRmVyQztHQVFWO1lBR0grQyx3QkFDRXJDLE9BQU1WO0lBM0JSMkMsdUJBMkJFakM7SUFFSiw4QkFGSUE7SUFFSixPQUZVVjtHQUdMO1lBR0hnRCxvQkFDRXRDLE9BQU0yQixRQUFNckM7SUFsQ2QyQyx1QkFrQ0VqQztXQUFBQTs7T0FJQyxHQXhDSGdDLGdCQW9DRWhDLFFBeEJGbUMsUUF3QkVuQyxXQUk0QixPQUpoQlY7O09BYU4sT0FiTUE7O09BT1gsR0EzQ0gwQyxnQkFvQ0VoQyxRQXhCRm1DLFFBd0JFbkMsV0FPNEIsT0FQaEJWOztPQVVzQixVQTlGcEM4QixlQW9GRXBCO09BQUFBO09BV0YsOEJBWEVBO09BV0YsT0FYY1Y7O0dBYUQ7WUFHYmlELFlBQVl2QyxPQUFNNkIsR0FBRXZDO0lBQ3RCLFVBRG9CdUM7Ozs7Ozs7O1FBQ3BCOzs7Ozs7Ozs7Ozs7Ozs7WUFBSVc7Ozs7O1VBQUFBLE1BRGdCWDs7O0tBU2hCLDhCQVRVN0I7U0FDVndDLE1BRGdCWDs7SUFZcEIsOEJBWmM3QixVQUNWd0M7SUFXSixPQXpGRWQsZUE2RVkxQixPQUFNNkIsR0FBRXZDO0dBYU07WUFHMUJtRCxtQkFBbUJ6QyxPQUFNVjtJQUMzQiw4QkFEcUJVO0lBQ3JCLE9BRDJCVjtHQUV0QjtZQUtIb0QsUUFBUWI7SUFDVixTQURVQTthQUFBQSxzQkFBQUE7O2tCQUFBQSxVQUFBQTtZQUFBQTtHQUk2QjtZQUdyQ2Msb0JBQW9CM0MsT0FBTTZCLEdBQUV2QztJQUFSVSxZQUFBQSxzQkFBTTZCO0lBRTVCLE9BN0dFSCxlQTJHb0IxQixPQUFNNkIsR0FBRXZDO0dBRUY7WUFHMUJzRCx5QkFBeUI1QyxPQUFNNkIsR0FBRXZDO0lBQ25DLElBQUl1RCxTQUR1QjdDLHNCQUFNNkI7SUFBTjdCO2FBQ3ZCNkMsT0F6S0YxQixZQXdLeUJuQjtJQUlPLFVBQUEsMkJBSDlCNkM7SUFHSiw4QkFKMkI3QztJQUkzQixPQXBIRTBCLGVBZ0h5QjFCLE9BQU02QixHQUFFdkM7R0FLUDtZQUcxQndELCtCQUFpQzlDLE9BQU02QixHQUFFdkM7SUFDM0MsSUFBSXVELFNBRCtCN0Msc0JBQU02QjtJQUFON0I7YUFDL0I2QyxPQWpMRjFCLFlBZ0xpQ25CO0lBR2YsT0EzSGxCMEIsZUF3SGlDMUIsT0FBTTZCLEdBQUV2QztHQUlmO1lBRzFCeUQsb0JBQW9CL0MsT0FBTTZCLEdBQUV2QztJQUN5QixVQTVCckRvRCxRQTJCMEJiO0lBQU43QixXQUFBQTtJQUV0QixPQWpJRTBCLGVBK0hvQjFCLE9BQU02QixHQUFFdkM7R0FFRjtZQUcxQjBELHlCQUF5QmhELE9BQU02QixHQUFFdkM7SUFDbkMsSUFBNEMsTUFqQzFDb0QsUUFnQytCYixJQUM3QmdCLFFBRHVCN0M7SUFBQUE7SUFHTyxVQUFBLDJCQUY5QjZDO0lBRUosOEJBSDJCN0M7SUFHM0IsT0F2SUUwQixlQW9JeUIxQixPQUFNNkIsR0FBRXZDO0dBSVA7WUFHMUIyRCxRQUNFakQsT0FBTTJCLFFBQU1yQztJQWpIZDJDLHVCQWlIRWpDO0lBQUFBLFdBQUFBO1dBQUFBOztPQUtDLEdBeEhIZ0MsZ0JBbUhFaEMsUUF2R0ZtQyxRQXVHRW5DLFdBSzRCLE9BTGhCVjs7T0FPSCxPQTFIWDBDLGdCQW1IRWhDLGFBQVlWLFNBQUFBOztPQVNYLE9BNUhIMEMsZ0JBbUhFaEMsVUF2R0ZtQyxRQXVHRW5DLGVBQVlWLFVBQUFBO2VBY1AsV0FqTFA4QixlQW1LRXBCLFFBQVlWOztHQWN3QjtZQUd0QzRELG1CQUFtQmxEO0lBQ3JCLE9BRUU7O2FBSG1CQTtpQkFBQUEsV0FBQUEsWUFBQUEsZUFBQUE7R0FNbEI7WUFZRG1ELCtCQUErQm5ELE9BQU1WLE9BQU8rQjtJQUM5QyxZQURpQ3JCO2tDQUVkLE9BRm9CVjtJQU1yQyxJQUhtQjhELGNBR2ZDLGVBTjJCckQ7SUFBQUEsWUFBQUEsWUFBYXFCO1FBUXhDaUMsbUJBUjJCdEQ7SUFTL0IsSUFBTyxJQUlKWCxVQUpJLFdBTlkrRCxHQUhZcEQsT0FBTVY7VUFVeEJpRTtTQUFBQyx3QkFBQUQ7S0FDVix1Q0FYNEJ2RDtLQVk1QixNQUFBLDRCQUZVd0Q7OztNQVZrQnhELGVBTTNCcUQsZUFOd0NoQztTQUFickIsY0FRM0JzRDtLQVIyQnRELFlBTTNCcUQ7WUFOMkJyRDs7UUFsQi9Ca0QsbUJBa0IrQmxEOzs7UUFsQi9Ca0QsbUJBa0IrQmxEOztLQWtCNUIsT0FMQVg7O0lBR0EsTUFBQTtHQUdNO1lBR1RvRSxhQUFhekQ7SUFBUTtLQUFBLE1BNUtyQmdDLGdCQTRLYWhDO0tBQVEsa0JBQVJBOztHQUFnRDtZQUU3RDBELDJCQUEyQjFELE9BQU1WLE9BQU8rQjtJQUMxQyxPQUhFb0MsYUFFMkJ6RDtjQXhCM0JtRCwrQkF3QjJCbkQsT0FBTVYsT0FBTytCO2NBQVAvQjtHQUNvRDtZQWFyRnFFLFdBQ0UzRCxPQUFNVixPQUFPK0I7SUFDakIsWUFESXJCOzs7O1VBUEY0RDtTQU9FNUQsV0FQRjREO1dBUUVDLGFBL1FGMUMsWUE4UUVuQjs7O1VBUHFCOEQ7U0FBdkJGLHdCQU9FNUQ7T0FBQUEsV0FQcUI4RDtXQVFyQkQ7Ozs7U0FBQUE7O0lBQ0QsS0FuQkRKLGFBaUJFekQsUUFZQyxPQVpLVjtXQUNOdUUsWUFEQTdELFlBQUFBO09BQ0E2RCwyQkFEQTdELDRCQVdHLE9BWEdWO0lBVUgsT0FqREw2RCwrQkF1Q0VuRCxPQUFNVixPQUFPK0I7R0FZUDtZQUdKMEM7UUFBVTlIOzs7TUFDTCxNQUFBOztVQUNKcUQ7TUFBUyxlQUZBckQsUUFFVHFEOztLQUMyQjtNQUFwQkQ7TUFBTmxFO01BQTBCLFlBQTFCQSxNQUhRYztNQUFBQTtnQkFHRm9EOzs7WUFHWjJFLHlCQUF5QkMsU0FBUzNFO0lBR3BDLFVBSG9DQSw0QkFBQUE7S0FLbEIsV0FMa0JBLGNBQVQyRSxTQUFTM0UsV0FBQUE7SUFNN0IsZUFOb0IyRSxVQUFTM0U7R0FNUTtZQUcxQzRFLHNCQUFzQi9JLE1BT3BCbUU7SSxVQUFBQSw0QkFBQUE7S0FIZTtNQUZnQ0QsVUFLL0NDO01BTGlDNkUsZUFLakM3RTtNQUxrQjhFLGdCQUtsQjlFO01BSkkyRTs7U0FEY0c7U0FFeUIsaUNBRlZEO1NBRmJoSjtLQU1wQixPQWZGNkkseUJBWU1DLFNBRDJDNUU7O0lBS3RDLGVBUFdsRSxPQU9wQm1FOztZQVlGK0UsUUFDRXJFLE9BQU0yQixRQUFNMkM7SUFDaEIsUUFESXRFLFVBc0JDLE9BdFZIbUIsWUFnVUVuQjtXQUFBQTs7T0FTSyxHQXhQUGdDLGdCQStPRWhDLFFBbk9GbUMsUUFtT0VuQztXQUdFdUUsVUFIVUQ7OztPQVdDLElBUlhDLFVBbFBKdkMsZ0JBK09FaEMsU0FuQ0UrRCxhQW1DVU8sV0FBQUE7OztPQWFQO1FBVkhDO1VBbFBKdkMsZ0JBK09FaEM7Y0FuT0ZtQyxRQW1PRW5DLFdBbkNFK0QsYUFtQ1VPO2FBQUFBOzs7T0FrQlcsSUE1QlBFLFVBclJsQnBELGlCQStSRXBCLFFBVndCM0UsaUJBVVppSjs7Ozs7O1lBUnFDO2FBQWhDaEY7YUFBSHpIO2FBQW1DLFlBQW5DQSxHQUZVd0Q7YUFBQUE7cUJBRVBpRTs7O1lBRU87YUFEUEQ7YUFBWDNIO2FBQ0Z5RCxlQURFekQsV0FIVThNLFVBQVFuSjthQWF0QmtKLFVBdkJKTCxzQkFjTS9JLE1BRGFrRTs7O1FBR1ksTUFBQTs7O0lBSTdCVyxXQUFBQTtJQXFCRixPQXhFQTJELFdBbURFM0QsT0FHRXVFO0dBbUIwRDtZQUc5REUsU0FBV3ZNO0ksR0FBQUEsU0FBUUMsTUFBUkQsUUFBQW1KLFFBQVFsSixjQUFSa0o7SUFHNkMsVUEzVHhERCxnQkF3VFdDO0lBR2I7O1lBS0VxRCx3QkFBd0IxRSxPQUFPM0I7SUFDakMsSUFBSXNHLDRCQUQ2QnRHO0lBRWpDLGFBRElzRzs7eUNBRHNCM0UsVUFBQUE7ZUFwUXhCbUMsUUFvUXdCbkMsU0FDdEIyRSxVQXJRRnhDLFFBb1F3Qm5DO0dBTUU7WUFHMUI0RSxjQUNFNUUsT0FBTVY7SUFDQSxJQUFOdUYsTUFBTSw2QkFETjdFO0lBRUosNkJBRklBO1dBQUFBOztPQU1HLEdBaFNMZ0MsZ0JBMFJFaEMsUUFWRjBFLHdCQVVFMUUsT0FDQTZFO1dBRUF4RixVQUhNQzs7O09BUUssSUFMWEQsVUE3UkYyQyxnQkEwUkVoQyxpQkFDQTZFLE1BRE12RixTQUFBQTs7O09BVUg7UUFQSEQ7VUE3UkYyQyxnQkEwUkVoQztjQVZGMEUsd0JBVUUxRSxPQUNBNkUsY0FBQUEsTUFETXZGO2FBQUFBOzs7T0FrQlE7UUFBQSxNQTVWaEI4QixpQkEwVUVwQjtRQWdCSThFO2NBMVZOMUQsd0NBMlVFeUQsV0FEQTdFO1FBcUJJN0UsV0FMQTJKLEtBZkpELFNBQUFBO1FBRUF4RixVQWxFRjZFLHNCQW9GTS9JLE1BckJFbUU7O0lBd0JWLE9BdEhFcUUsV0E4RkUzRCxPQUdBWDtHQXFCMkI7WUFHN0IwRixpQkFDRS9FLE9BQU0yQixRQUFNckM7SUFDTixJQUFOdUYsTUFBTSw2QkFETjdFO0lBRUosNkJBRklBO1dBQUFBOztPQU1HLEdBNVRMZ0MsZ0JBc1RFaEMsUUExU0ZtQyxRQTBTRW5DO1dBR0FYLFVBSFlDOzs7T0FRRCxJQUxYRCxVQXpURjJDLGdCQXNURWhDLGlCQUNBNkUsTUFEWXZGLFNBQUFBOzs7T0FVVDtRQVBIRDtVQXpURjJDLGdCQXNURWhDO2NBMVNGbUMsUUEwU0VuQyxtQkFDQTZFLE1BRFl2RjthQUFBQTs7O1dBZ0JSMEYsTUFoQkpoRjtPQWlCQSw4QkFESWdGO09BRUksSUFBSkMsSUFBSSw2QkFGSkQ7T0FHSiw2QkFISUE7T0FLRztRQURIN0osV0FsRU5zSixjQThDRXpFLFFBQ0E2RSxTQWlCSUk7UUFmSjVGLFVBOUZGNkUsc0JBK0dNL0ksTUFwQlFtRTs7SUF5QmhCLE9BbkpFcUUsV0EwSEUzRCxPQUdBWDtHQXNCMkI7WUFHN0I2RixtQkFDRWxGLE9BQU0yQixRQUFNckM7SUFBWlUsZUFBQUEsVUFBQUE7Z0JBQUFBLGVBbllGb0IsaUJBbVlFcEIsV0FBWVYsU0FBQUE7R0FNSjtZQUdWNkYsb0JBQ0VuRixPQUFNMkIsUUFBS3JDO0lBQVhVLFdBQUFBO1dBQUFBOztPQUdXLE9BSEFWOztPQUlMLE9BSktBOztPQUtVLE9BTFZBOztnQkFBWFU7UUFTb0MsVUF0WnRDb0IsaUJBNllFcEI7UUFBQUE7UUFVQSw4QkFWQUE7O09BV0YsOEJBWEVBLGFBQU0yQjtPQVdSLE9BWGFyQzs7R0FZUjtZQUdMOEYsa0JBQ0VwRixPQUFNMkIsUUFBS3JDO0lBQVhVLFdBQUFBO1dBQUFBOztPQUdXLE9BSEFWOztPQUlMLE9BSktBOztPQUtVLE9BTFZBOztXQU9UMEYsTUFQRmhGO09BUUYsOEJBRElnRixLQVBJckQ7Z0JBQU4zQixVQWtCRyxPQWxCUVY7T0FXSCxJQUFKMkYsSUFBSSw2QkFKTkQ7T0FLRiw2QkFMRUE7T0FPYztRQURaZixjQWxITlEsY0FxR0V6RSxRQVdJaUY7UUFLQTVGLFVBM0tOMkUseUJBd0tNQyxTQWJPM0U7T0FpQlgsT0FoTkZvRSwyQkErTEUxRCxPQWdCSVg7O0dBRUk7WUFHVmdHLG1CQUNFckYsT0FBTTJCLFFBQUtyQztJQUNmLE9BRElVLFVBTUcsT0FOUVY7SUFHdUIsVUF0YnBDOEIsZUFtYkVwQjtJQUFBQTtJQUlGLDhCQUpFQSxhQUFNMkI7SUFJUixPQUphckM7R0FNSDtZQUdWZ0csaUJBQ0V0RixPQUFNVjtJQUNWLE9BRElVOztPQUVXLE9BRkxWOztPQUdBLE9BSEFBOztPQUllLE9BSmZBOztPQU9BLElBREowRixNQU5GaEYsYUFPRWlGLElBQUksNkJBREpEO09BRUosNkJBRklBO09BR3NDO1FBQXRDZixjQTlJSlEsWUFxSUV6RSxRQU9FaUY7UUFHQTVGLFVBck1KMkUseUJBb01JQyxTQVRJM0U7T0FXUixPQTFPQW9FLDJCQStORTFELE9BVUVYOztHQUMyQztZQUcvQ2tHLGNBQ0V2RixPQUFNVjtJQUNWLE9BRElVLFVBN2VGbUIsWUE2ZUVuQjtJQUVELEdBcGFEK0IsWUFrYUUvQixRQTdlRm1CLFlBNmVFbkI7YUFBQUE7ZUFBQUE7Ozs7Ozs7OztNQTdlRm1CLFlBNmVFbkI7OztJQVNKLE9BVFVWO0dBU0w7Ozs7T0F0Zkg2QjtPQWlCQWY7T0FxQkFrQjtPQUNBdEg7T0FFQXVIO09BYUFFOzs7T0FXQUc7T0FLQUU7T0ErREFTO09BOEJBSTtPQUtBQztPQVFBRTtPQU9BQztPQUtBQztPQXVPQWtDO09BbFVBOUM7T0FtQkFFO09BNURBWjtPQTJJQXVCO09BNEhBb0I7T0F1RUFVO09BdUNBSTtPQWdCQUM7T0FzQkFDO09BVUFDO09BbkhBVjtPQTdQQXZDO09BK1hBa0Q7T0F2VkE5Qzs7OztFOzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7WUM5SUFuRztJQUNEOztPQUNrQzs7T0FDRjs7T0FDYjs7T0FDQTs7T0FDUTtlQUNDOztHQUEwQztZQU1yRWtKLFVBQVUzTjtJQUNOLFlBZEp5RSxVQWFVekU7O0tBR0EsT0FBQTtRQURMb047SUFBSyxPQUFMQTtHQUNvRDsyQ0FoQnpEM0ksV0FhQWtKOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDdEJBeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQU1BeUUsUUFBUXpGLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHFHLFFBQVExRixPQUFNMkIsUUFBTXJDO0lBQ3RCLHdDQURVVTtJQUVWLHdDQUZVQTtJQUVWLE9BRnNCVjtHQUdqQjtZQUtIcUcsUUFBUTNGLE9BQU0yQixRQUFNckM7SUFDdEIsd0NBRFVVO0lBRVYsd0NBRlVBO0lBRVYsT0FGc0JWO0dBR2pCO1lBS0hzRyxRQUFRNUYsT0FBTTJCLFFBQU1yQztJQUN0Qix3Q0FEVVU7SUFFVix3Q0FGVUE7SUFFVixPQUZzQlY7R0FHakI7WUFLSHVHLFFBQVE3RixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0h5RyxRQUFROUYsT0FBTTJCLFFBQU1yQztJQUN0Qix3Q0FEVVU7SUFFVix3Q0FGVUE7SUFFVixPQUZzQlY7R0FHakI7WUFLSHlHLFFBQVEvRixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0gyRyxRQUFRaEcsT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtINEcsUUFBUWpHLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSDZHLFFBQVFsRyxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBSUg4RyxRQUFRbkcsT0FBTzJCLFFBQU1yQztJQUFTLE9BQUEsV0EzRjlCMEIsT0EyRlFoQjtHQUF5RTtZQUVqRm9HLFFBQVFwRyxPQUFPMkIsUUFBTXJDO0lBQVMsT0FBQSxXQTdGOUIwQixPQTZGUWhCO0dBQThFO1lBR3RGcUcsUUFBUXJHLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHdDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSGlILFFBQVF0RyxPQUFNMkIsUUFBTXJDO0lBQ1YsSUFBUkQsVUFBUSx5Q0FERlcsT0FBWVY7SUFFdEIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIa0gsUUFBUXZHLE9BQU0yQixRQUFNckM7SUFDVixJQUFSRCxVQUFRLHlDQURGVyxPQUFZVjtJQUV0Qix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0htSCxRQUFReEcsT0FBTTJCLFFBQU1yQztJQUNWLElBQVJELFVBQVEseUNBREZXLE9BQVlWO0lBRXRCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSG9ILFFBQVF6RyxPQUFNMkIsUUFBS3JDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZXLE9BQVdWO0tBRWpCZ0Y7T0FBUSx5Q0FGRnRFLE9BQU0yQixRQUNadEM7SUFFSix3Q0FIVVc7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIb0MsUUFBUTFHLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHdDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHNILFFBQVEzRyxPQUFNMkIsUUFBS3JDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZXLE9BQVdWO0tBRWpCZ0Y7T0FBUSx5Q0FGRnRFLE9BQU0yQixRQUNadEM7SUFFSix3Q0FIVVc7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIc0MsUUFBUTVHLE9BQU0yQixRQUFLckM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlcsT0FBV1Y7S0FFakJnRjtPQUFRLHlDQUZGdEUsT0FBTTJCLFFBQ1p0QztJQUVKLHdDQUhVVztJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0h1QyxRQUFRN0csT0FBTTJCLFFBQUtyQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVyxPQUFXVjtLQUVqQmdGO09BQVEseUNBRkZ0RSxPQUFNMkIsUUFDWnRDO0lBRUosd0NBSFVXO0lBSVYsd0NBSlVBO0lBSVYsT0FGSXNFO0dBR0M7WUFLSHdDLFFBQVE5RyxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx3Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0gwSCxRQUFRL0csT0FBTzJCLFFBQU1yQztJQUN2QixPQUFBLFdBL0xFMEIsT0E4TFFoQjtHQUMrQztZQUt2RGdILFFBQVFoSCxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0g0SCxRQUFRakgsT0FBTTJCLFFBQU1yQztJQUNWLElBQVJELFVBQVEseUNBREZXLE9BQVlWO0lBRXRCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSDZILFFBQVFsSCxPQUFNMkIsUUFBTXJDO0lBQ1YsSUFBUkQsVUFBUSx5Q0FERlcsT0FBWVY7SUFFdEIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIOEgsUUFBUW5ILE9BQU0yQixRQUFLckM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlcsT0FBV1Y7S0FFakJnRixVQUFRLHdDQUZGdEUsT0FBTTJCLFFBQ1p0QztJQUVKLHdDQUhVVztJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0g4QyxRQUFRcEgsT0FBTTJCLFFBQU1yQztJQUN0QjtLQUFJRCxVQUFRLHlDQURGVyxPQUFZVjtLQUVsQmdGLFVBQVEseUNBRkZ0RSxPQUNOWDtJQUVKLHdDQUhVVztJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0grQyxRQUFRckgsT0FBTTJCLFFBQU1yQztJQUN0QjtLQUFJRCxVQUFRLHlDQURGVyxPQUFZVjtLQUVsQmdGLFVBQVEseUNBRkZ0RSxPQUNOWDtJQUVKLHdDQUhVVztJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0hnRCxRQUFRdEgsT0FBTTJCLFFBQU1yQztJQUN0QjtLQUFJRCxVQUFRLHlDQURGVyxPQUFZVjtLQUVsQmdGLFVBQVEseUNBRkZ0RSxPQUNOWDtJQUVKLHdDQUhVVztJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0hpRCxRQUFRdkgsT0FBTTJCLFFBQUtyQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVyxPQUFXVjtLQUVqQmdGLFVBQVEseUNBRkZ0RSxPQUNOWDtLQUVBa0Y7T0FBUSx5Q0FIRnZFLE9BQU0yQixRQUVaMkM7SUFFSix3Q0FKVXRFO0lBS1Ysd0NBTFVBO0lBS1YsT0FGSXVFO0dBR0M7WUFLSGlELFFBQVF4SCxPQUFNMkIsUUFBS3JDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZXLE9BQVdWO0tBRWpCZ0YsVUFBUSx3Q0FGRnRFLE9BQU0yQixRQUNadEM7SUFFSix3Q0FIVVc7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIbUQsUUFBUXpILE9BQU0yQixRQUFLckM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlcsT0FBV1Y7S0FFakJnRixVQUFRLHlDQUZGdEUsT0FDTlg7S0FFQWtGO09BQVEseUNBSEZ2RSxPQUFNMkIsUUFFWjJDO0lBRUosd0NBSlV0RTtJQUtWLHdDQUxVQTtJQUtWLE9BRkl1RTtHQUdDO1lBS0htRCxRQUFRMUgsT0FBTTJCLFFBQUtyQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVyxPQUFXVjtLQUVqQmdGLFVBQVEseUNBRkZ0RSxPQUNOWDtLQUVBa0Y7T0FBUSx5Q0FIRnZFLE9BQU0yQixRQUVaMkM7SUFFSix3Q0FKVXRFO0lBS1Ysd0NBTFVBO0lBS1YsT0FGSXVFO0dBR0M7WUFLSG9ELFFBQVEzSCxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0h1SSxRQUFRNUgsT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtId0ksUUFBUTdILE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHlJLFFBQVE5SCxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0gwSSxRQUFRL0gsT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIMkksUUFBUWhJLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSDRJLFFBQVFqSSxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0g2SSxRQUFRbEksT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIOEksUUFBUW5JLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSCtJLFFBQVFwSSxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0hnSixRQUFRckksT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIaUosUUFBUXRJLE9BQU0yQixRQUFLckM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlcsT0FBV1Y7S0FFakJnRjtPQUFRLHlDQUZGdEUsT0FBTTJCLFFBQ1p0QztJQUVKLHdDQUhVVztJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0hpRSxRQUFRdkksT0FBTTJCLFFBQUtyQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVyxPQUFXVjtLQUVqQmdGO09BQVEseUNBRkZ0RSxPQUFNMkIsUUFDWnRDO0lBRUosd0NBSFVXO0lBSVYsd0NBSlVBO0lBSVYsT0FGSXNFO0dBR0M7WUFLSGtFLFFBQVF4SSxPQUFNMkIsUUFBS3JDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZXLE9BQVdWO0tBRWpCZ0Y7T0FBUSx5Q0FGRnRFLE9BQU0yQixRQUNadEM7SUFFSix3Q0FIVVc7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIbUUsUUFBUXpJLE9BQU8yQixRQUFNckM7SUFDdkIsT0FBQSxXQXBiRTBCLE9BbWJRaEI7R0FDbUQ7WUFLM0QwSSxRQUFRMUksT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIc0osUUFBUTNJLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHVKLFFBQVE1SSxPQUFPMkIsUUFBTXJDO0lBQ3ZCLE9BQUEsV0E1Y0UwQixPQTJjUWhCO0dBQ21EO1lBSzNENkksUUFBUTdJLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHlKLFFBQVE5SSxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0gwSixRQUFRL0ksT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIMkosUUFBUWhKLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSDRKLFFBQVFqSixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0g2SixRQUFRbEosT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIOEosUUFBUW5KLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSCtKLFFBQVFwSixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0hnSyxRQUFRckosT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIaUssUUFBUXRKLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSGtLLFFBQVF2SixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0htSyxRQUFReEosT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIb0ssUUFBUXpKLE9BQU0yQixRQUFLckM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztLQUVTLFlBQUEsd0NBRnBCVTtJQUVWLHdDQUZVQTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHFLLFFBQVExSixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0hzSyxRQUFRM0osT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIdUssUUFBUTVKLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSHdLLFFBQVE3SixPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0h5SyxRQUFROUosT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIMEssUUFBUS9KLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSDJLLFFBQVFoSyxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0g0SyxRQUFRakssT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtINkssUUFBUWxLLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSDhLLFFBQVFuSyxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0grSyxRQUFRcEssT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUtIZ0wsUUFBUXJLLE9BQU0yQixRQUFLckM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVyxPQUFNMkIsUUFBS3JDO0lBRXJCLHdDQUZVVTtJQUdWLHdDQUhVQTtJQUdWLE9BRklYO0dBR0M7WUFLSGlMLFFBQVF0SyxPQUFNMkIsUUFBS3JDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlcsT0FBTTJCLFFBQUtyQztJQUVyQix3Q0FGVVU7SUFHVix3Q0FIVUE7SUFHVixPQUZJWDtHQUdDO1lBS0hrTCxRQUFRdkssT0FBTTJCLFFBQUtyQztJQUNUO0tBQVJELFVBQVEseUNBREZXLE9BQU0yQixRQUFLckM7SUFFckIsd0NBRlVVO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVg7R0FHQztZQUlIbUwsWUFBWXhLLE9BQU1WO0lBQVEsT0FBQSx5Q0FBZFUsT0FBTVY7R0FBaUM7WUFFbkRtTCxZQUFZekssT0FBTVYsT0FBUyxPQUFBLFdBcnNCM0IwQixPQXFzQlloQixhQUFnRTtZQUU1RTBLLFlBQVkxSyxPQUFNVixPQUFTLE9BQUEsV0F2c0IzQjBCLE9BdXNCWWhCLGFBQXFFO1lBR2pGMkssWUFBWTNLLE9BQU1WO0lBQ1IsSUFBUkQsVUFBUSx5Q0FERVcsT0FBTVY7SUFFcEIsT0FBQSx5Q0FGY1UsT0FDVlg7R0FDcUI7WUFLdkJ1TCxZQUFZNUssT0FBTVY7SUFDUixJQUFSRCxVQUFRLHlDQURFVyxPQUFNVjtJQUVwQixPQUFBLHlDQUZjVSxPQUNWWDtHQUNxQjtZQUt2QndMLFlBQVk3SyxPQUFNVjtJQUNwQjtLQUFJRCxVQUFRLHlDQURFVyxPQUFNVjtLQUVoQmdGLFVBQVEseUNBRkV0RSxPQUNWWDtJQUVKLE9BQUEseUNBSGNXLE9BRVZzRTtHQUNxQjtZQUl2QndHLFlBQVk5SyxPQUFNVixPQUFTLE9BQUEsV0EvdEIzQjBCLE9BK3RCWWhCLGFBQWtFO1lBRTlFK0ssWUFBWS9LLE9BQU1WLE9BQVMsT0FBQSxXQWp1QjNCMEIsT0FpdUJZaEIsYUFBa0U7R0FJaEY7SUFERWdMOztPQTl0QkF2RjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVFBQztPQWpCQUY7T0FTQUM7T0FnQkFFO09BekJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQWlDQUk7T0FTQUM7T0ExQ0FMO09BQUFBO09BQUFBO09BQUFBO09Ba0RBTTtPQVNBQztPQTNEQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvRUFRO09BcEVBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZFQVM7T0E3RUFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXRFQVQ7T0FzRUFTO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BR0FDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4RkFVO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0EwREFNO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9HQVc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FVQUM7T0FwQkFGO09BVUFDO09Bb0JBRTtPQTlCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0F3Q0FJO09BV0FDO09BbkRBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQTZEQU07T0FXQUM7T0F4RUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbUZBUTtPQW5GQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E0RkFTO09BNUZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFHQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9CQUU7T0FwQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0EyQkFHO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FyTkF4QjtPQXFOQXdCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbEJBRjtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BQUFBO09BK0RBTztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3RUFRO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BeEVBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlGQVM7T0FqRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMEZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F6TUF2QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9PQTBCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcE9BMUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2T0EyQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTdPQTNCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlMQW9CO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQVNBQztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO0lBNDJOQWlCOztPQXJ5TkFUO09BRUFDO09BRUFDO09BR0FDO09BQUFBO09BQUFBO09BT0FDO09BT0FDO09BT0FDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO0lBc3lOQUc7O1VBbnlOQUYsYUFvd05BQyxpQkErQkFDOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDcmdQQUMsS0FBaUJuTCxPQUFrQzJCLFFBQU1yQztJQUMzRCxJQUFJOEwsTUFBTyw0QkFEUXBMLGNBQWtDMkI7SUFFckQsT0FBQTsyREFESXlKLFNBQUFBO2FBRGVwTDthQUFrQzJCO2FBQU1yQztHQUVOO1lBSW5EK0wsU0FBcUJyTCxPQUFtQ1Y7SUFDMUQ7S0FBOEMsTUFBQSw0QkFEdkJVO0tBQ25CWDtPQUFROztTQURXVztTQUFtQ1Y7SUFFMUQsNEJBRnVCVTtJQUV2QixPQURJWDtHQUVDO1lBR0hpTSxzQkFBc0J0TDtJQUN4QixLQUFNLG9CQURrQkEsUUFFTjtJQUdxQztLQUFBLE1BQUEsNEJBTC9CQTtLQVNuQmlGO0tBSEUsUUFBQSwrQkFOaUJqRjtTQVNuQmlGLFlBRHFDO0lBQzdCLE9BQVJBO0dBQVU7WUFHVHNHLHNCQUFzQjFHLEtBQUk3RSxPQUFNVixPQUFNa00sR0FBRUM7SUFDOUMsSUFEc0NwTSxVQUFBQyxPQUFNb00sTUFBQUY7SUFDNUM7UUFENENFLE9BQUVELE1BTXpDLE9BTmlDcE07S0FJeEI7TUFEUndDLG1DQUhzQmdELEtBQWdCNkc7TUFBTnBILFVBeEJwQzZHLEtBd0I4Qm5MLE9BRzFCNkIsR0FIZ0N4QztNQUFNc00sTUFBQUQ7TUFBTnJNLFVBQUFpRjtNQUFNb0gsTUFBQUM7O0dBTWxDO1lBR0pDLHFCQUFxQi9HLEtBQUk3RSxPQUFNVixPQUFNa00sR0FBRUM7SUFDN0MsSUFEcUNwTSxVQUFBQyxPQUFNb00sTUFBQUY7SUFDM0M7UUFEMkNFLE9BQUVELE1BTXhDLE9BTmdDcE07S0FJdkI7TUFEUndDLGtDQUhxQmdELEtBQWdCNkc7TUFBTnBILFVBakNuQzZHLEtBaUM2Qm5MLE9BR3pCNkIsR0FIK0J4QztNQUFNc00sTUFBQUQ7TUFBTnJNLFVBQUFpRjtNQUFNb0gsTUFBQUM7O0dBTWpDO1lBR1JFLGVBQWU3TCxPQUFNNkUsS0FBSzlOLEtBQUs0TixLQUFJckY7SUFDckMsSUFBSXdNLGdDQURtQmpILFlBQUs5Tjs7Ozs7WUFBSzROO3FCQUM3Qm1ILFVBRDZCbkgsV0FBTDVOO1lBRXNCO1dBcEI1Q3dVLHNCQWtCaUIxRyxLQUFON0UsT0FBb0JWLE9BQVR2SSxLQUFBQSxNQUFLNE47R0FHb0I7WUFHbkRvSCxjQUFjL0wsT0FBTTZFLEtBQUs5TixLQUFLNE4sS0FBSXJGO0lBQ3BDLElBQUl3TSwrQkFEa0JqSCxZQUFLOU47Ozs7O1lBQUs0TjtxQkFDNUJtSCxVQUQ0Qm5ILFdBQUw1TjtZQUV1QjtXQWpCNUM2VSxxQkFlZ0IvRyxLQUFON0UsT0FBb0JWLE9BQVR2SSxLQUFBQSxNQUFLNE47R0FHb0I7WUFHbERxSCxZQUFZaE0sT0FBTTZFLEtBQUl2RjtJQUN4QixPQS9CTWlNO2FBOEJjMUcsS0FBTjdFLE9BQVVWLGdDQUFKdUY7R0FDdUM7WUFHekRvSCxXQUFXak0sT0FBTTZFLEtBQUl2RjtJQUFRLE9BekJ6QnNNO2FBeUJhL0csS0FBTjdFLE9BQVVWLCtCQUFKdUY7R0FBcUU7WUFTdEZxSCxhQUF5QnRNLE1BQXVCQyxNQUFzQm9GLEdBQUdsTyxLQUFLNE47SUFDcEUsSUFBUjNFLFFBQVEsc0JBRGVKLE1BQXVCQztXQUFBQTs7Ozs7Ozs7O0lBRXRDLElBQVJQLFFBM0JGdU0sZUEwQkU3TCxPQURvRWlGLEdBQUdsTyxLQUFLNE47SUFHaEYsV0FGSTNFLE9BQ0FWO0dBQ1E7Ozs7Ozs7Ozs7Ozs7Ozs7T0FaVjJNO09BSkFEO09BTkFEO09BTkFGO09BMUNBVjtPQU1BRTtPQU1BQztPQXVEQVk7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzlEQTVQO0lBQ0Q7S0FBdUU2UDtLQUEzQkM7S0FBM0JDO0tBR1Q5VjtPQUFZLHFEQUhtRDRWO0tBRWpFM1YsZ0NBQ0VEO0tBSUFFLFVBQVksNkJBUHdCMlY7S0FNdEMxVixrQ0FDRUQsZUFMRkQ7S0FTRUcsVUFBWSwrQkFYSDBWO0tBVVh6VixrQ0FDRUQsZUFMRkQ7SUFRSixXQUpJRTtHQUl5QjtZQU05QjBWLFNBQVN6VSxHQUFJLE9BQUpBLEtBQWM7WUFDdkIwVSxTQUFTMVUsR0FBSSxPQUFKQSxLQUFjO1lBQ3ZCMlUsU0FBUzNVLEdBQUksT0FBSkEsS0FBYztZQUV2QjZJLE9BQU9DLEtBQUtDLFVBQVMvSTtJQUN2QixVQUR1QkE7Ozs7TUFJRDJNO01BQVg5TTtNQUhNK1QsUUFHTi9ULGVBQVc4TSxrQkFBWDlNO01BSEQrVSxRQUdDL1U7TUFIUHVJLE9BR092STs7U0FITStULFVBQVBnQixXQUFOeE07SUFlRixVQUFBLG1DQWhCcUJwSTtJQWdCckIsT0FBQTtpQ0FoQk84SSxVQUFLQyxVQUNWWCxNQUFNd00sT0FBT2hCO0dBZXFDO0dBR3hEOzs7O0lBRzhFO0tBS25FLE1BQUE7SUFIWSxJQURIaUIscUJBQ1ZDLFdBakROclEsVUFnRGdCb1E7SUFFZCx3QkFESUM7R0FHYztHQUx0QjtZQVVFM0wsTUFBT3NMLFVBQVVDLFVBQVVDO0lBQzdCLE1BQUE7bUNBRFNGLFVBQVVDLFVBQVVDO0dBQ3lCOzs7O09BMURwRGxRO09BcUJBZ1E7T0FDQUM7T0FDQUM7T0FFQTlMOztPQWdDQU07Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O1lFOURBOEwsY0FJZ0JqTjtJQUNsQixPQURrQkE7Ozs7T0FFQTs7T0FFZTtlQUNoQjs7R0FBb0Q7WUFHbkVrTixLQUFxQ2xOLE1BQUtELE1BQUtvTjtJQU0zQixZQWxCcEJGLGNBWXFDak47YUFXL0I1SCxPQUFRbEI7S0FBUyxPQUxILGlDQUtOQSxLQVg0QjZJLE1BQUxDO0lBV3FCOztLQUNwRHhIO0tBQ0FZO0tBQ0FnSDtLQUNBQzthQUVBQyxTQUFTdEk7S0FDWCxJQUFXLE1BQUEsV0FMVG9CLFFBSVNwQixJQUMrQixNQUFBLFdBSHhDcUksUUFFU3JJO0tBQ1gsV0FBNEIsV0FKMUJvSSxNQUdTcEk7SUFDeUM7YUFHbEQ0VCxLQUFLekwsT0FBUSxPQUFBLGlDQUFSQSxPQUErQjtJQWIzQjtLQUFBLFlBR1QvSCxRQUNBSSxPQUNBWSxRQUNBZ0gsTUFDQUMsUUFFQUMsVUFJQXNMO0tBR0ZOO2FBQ0FFLFNBQVNyTCxPQUFNVjtLQUFRLE9BQWlCO2NBekJHME47Y0F5QmxDaE47Y0FBK0Isa0NBQS9CQSxPQUFNVjtJQUFpRDs7S0FDaEV1TTtLQUNBRztLQUNBRDtLQUNBRTthQUVBZ0IsaUJBQWlCcEk7S0FDUCxJQUFSN0UsUUFBUTtLQUNHLE9BUmJxTCxTQU9FckwsT0FDVyxXQU5iZ00sYUFLRWhNLE9BRGU2RTtJQUUrQjthQUdoRHFJLGFBQWFySTtLQUNmLElBQU0sSUFDSnZKLElBUEEyUixpQkFLYXBJOzs7OztVQUdxQnJCO01BQUssV0FBTEE7O0tBRDdCLFdBQUxsSTtJQUM4QztJQXBDNUM7OztZQXFCRjZQO1lBQ0FFO1lBRUFXO1lBREFIO1lBR0FJO1lBREFGO1lBUUFtQjtZQUxBRDtHQVVGO1lBR0ZFLFdBQTJDdE4sTUFBS21OO0lBTTVCO0tBQUEsUUE5RHBCRixjQXdEMkNqTjtLQVluQzVHO0tBQ0FnSDtLQUNBQzthQUVBQyxTQUFTdEk7S0FDWCxJQUFXLE1BQUEsV0FMVG9CLFFBSVNwQixJQUMrQixNQUFBLFdBSHhDcUksUUFFU3JJO0tBQ1gsV0FBNEIsV0FKMUJvSSxNQUdTcEk7SUFDeUM7SUFSckM7S0FBQSxnQkFHYm9CLFFBQ0FnSCxNQUNBQyxRQUVBQztLQUpBeEY7S0FDQXlTO0tBQ0FDO0tBRUFDO2FBT0ZyVixPQUFRbEIsS0FBTW1CLEtBQTBCa0w7S0FDMUMsR0FEZ0JsTDtVQUFtQkMsTUFBbkJELFFBQUFxVixtQkFBbUJwVjs7VUFBbkJvVjtjQUNaQyxTQUFTeE4sT0FBTVY7TUFDRSxJQUFmbU8sZUFBZSxXQXpCdUJULFlBd0IvQmhOLE9BQU1WO01BRWpCLFdBSHdDOEQsR0FDN0JwRCxPQUNQeU47O0tBRU87S0FFYixPQUFBOztjQU5VMVc7a0JBQ055VyxVQURZRDtjQXZCdUIxTjtJQTZCOEI7UUFHbkV4SDthQUNBb1QsS0FBSzVULEdBQUksT0FBQSxpQ0FBSkEsR0FBdUI7YUFDNUJ5VCxzQkFBc0J6VDtLQUFJLE9BQUEsa0NBQUpBO0lBQXFDO1FBRzdEc1Q7YUFDQUUsU0FBU3JMLE9BQU1WO0tBQWdCLGtDQUF0QlUsT0FBTVY7S0FBZ0I7SUFBaUM7SUFTbEU7S0FSRXVNO0tBQ0FHO0tBQ0FEO0tBQ0FFO0tBS0Y7YUFFSXVCLFNBQVN4TixPQUFNeU47S0FDakIsb0JBRGlCQSxjQUNzQixXQWxDbkNILFlBaUNPdE47SUFDa0Q7YUFHM0R4RyxnQkFBWSxPQTlCWnZCLGFBMEJBdVYsVUFJaUM7YUFPakNFLGNBQWVDLFFBQXlCNVc7S0FDMUMsSUFBSTBDLElBRHNDMUMsU0FBekI0VztLQUFBQSxZQUNibFU7S0FEYWtVLFlBQ2JsVTtLQURha1UsaUJBQUFBLGVBQXlCNVcsUUFBQUEsU0FBQUEsWUFBQUE7O0lBU3RDO2FBcUJGNlcsVUFBVS9WLEdBQUc4VjtLQUNmLElBbkNJbFUsSUFrQ1drVTtLQUNmO3FDQW5DSWxVLE1BQUFBLE9BQUFBLFVBQUFBLFFBa0NRNUI7S0FDWjtVQW5CNkN5TSxvQkFBQWhGLFFBQUFnRjtNQUM3QztPQUNFO1FBRjJDakY7VUFFM0M7WUFqQ0YwTTtZQWlEWWxVO1lBQUc4VjtZQUFBQTtZQUFBQSxZQUFBQTtZQWxCOEJyTztPQWtCOUJxTyxZQUFBQTtPQUFBQSxZQUFBQTtVQUFBQSxXQXBEZnRDLFNBb0RZeFQsR0FsQmlDd0g7T0FhM0MsV0FLYXNPLFdBQUFBO1dBbEI4QnJPLFFBQUFEOzs7V0EyQmpDd087VUFBQUMsMEJBQUFEO1NBQUFDO1dBSHdCL1csTUFHeEIrVyxRQUhVTCxlQUdWSztPQXZDVkosY0E4QmFDLFFBTXFCNVc7T0FFbEMsV0FGb0IwVzs7TUFwQ3BCQyxjQThCYUMsUUFVUSxXQXBGbkJMLFlBMEVRelY7TUFXVixNQUFBLDRCQUZVaVc7O0tBdkNWSixjQThCYUMsUUFJUSxXQTlFbkJMLFlBMEVRelY7S0FJVjtJQU9TO2FBR1RrVyxxQkFBcUJsVyxHQUFFeUQ7S0FDbkIsSUFDRTBTLFFBREYsaUNBRGlCblc7ZUFFZm1XO01BQ0QsTUFBQTtLQURDQSxXQUZpQjFTOztJQUdOO2FBR2pCMlMsTUFBTXBXLEdBQUU4VjtLQU5SSSxxQkFNTWxXO0tBRUYsWUF0QkorVixVQW9CTS9WLEdBQUU4VjtpQkFJQSxPQUFBO1NBREhyUztLQUFLLE9BQUxBO0lBQ3FDO2FBRzFDNFMsVUFBVXJXLEdBQUU4VjtLQWJaSSxxQkFhVWxXO0tBQ1osT0E1QkUrVixVQTJCVS9WLEdBQUU4VjtJQUVJO0lBcEhoQjs7YUE2QkF0VjthQXBCRXNDO2FBQ0F5UzthQUNBQzthQUVBQzthQWlCRjdCOzthQVZBeFQ7YUFXQXFUOztZQUdGSDtZQUNBRTtZQUVBVztZQURBSDtZQUdBSTtZQURBRjtnQkFZRXZTLFVBeURBeVUsT0FPQUM7OzRCQWpLTm5CLE1BNENBSTs7O0U7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O2lCQ3BERWdCLFFBQVFyTyxXQUFVMk4sY0FBY2pTLEtBQUk4UTtTQUN2QixJQUFYRSxXQUFXLG9CQURMMU0sV0FBVTJOLGNBQWNqUztTQUVsQyxPQUFBLHFDQUZzQzhRLFVBQUo5USxLQUM5QmdSO1FBQ2lEO2lCQUduRFMsaUJBQWlCcEksS0FBSXpCO1NBQ0osSUFBZnFLLGVBQWUsNEJBREE1STtTQUVuQixJQUFNLElBQ0p2SixJQURJLG9CQURGbVMsY0FEbUJySyxJQUdoQixPQUFMOUg7Ozs7O1VBRWdCO1dBRG1CRTtXQUFMc1M7V0FDMUJoTyxZQUFZLGlDQUxDK0U7VUFNakIsT0FYQXNKLFFBVUlyTyxXQUpGMk4sY0FHaUNqUyxLQUFMc1M7O1FBRVM7aUJBR3ZDWixhQUFhckksS0FBSXpCO1NBQ25CLElBQU0sSUFDSjlILElBWEEyUixpQkFTYXBJLEtBQUl6Qjs7O29EQUdpQkksWUFBSyxlQUFMQTs7O2NBQ0lEO1VBQUssZUFBTEE7O1NBRmpDLFdBQUxqSTtRQUVrRTtpQkFHbEU4UyxnQkFBbUNoTDthQUFYdEQsc0JBQWQyTjtTQUNaLElBQU0sSUFDSm5TLElBREksb0JBRE1tUyxjQUF5QnJLLElBRTlCLE9BQUw5SDs7Ozs7Y0FDbUNFLGNBQUxzUztVQUFhLE9BeEIzQ0ssUUFxQndCck8sV0FBZDJOLGNBR3lCalMsS0FBTHNTOzs7aUJBRzlCTyxLQUFLL1MsR0FBRThIO1NBQ1QsSUFBTSxJQUNKa0wsTUFSQUYsU0FNSzlTLEdBQUU4SDs7Ozs7Y0FHK0JJO1VBQUssV0FBTEE7O1NBRGpDLFdBQUw4SztRQUNrRDtpQkFHbERDLGFBQWFDLFFBQU9wTDtTQUN0QixTQURlb0wsZUFFUGpMLE1BRk9pTCxXQUVGLGVBQUxqTDtTQUVDLElBREpqSSxJQUhVa1QsV0FLVkMsSUFYSEosS0FTRy9TLEdBSGlCOEg7a0JBS2pCcUwsTUFBYSxPQUFiQTthQUNNakwsSUFETmlMO1NBQ1csZUFBTGpMO1FBQTZCOztnQkF6QnRDMEo7Z0JBVEFEO2dCQXNCQW9CO2dCQU5BRDtnQkFZQUc7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ3RCdUMsa0I7R0FBeEI7SUFBQSxTQUFBO0lBQUE7R0FDb0Isa0I7R0FBdEI7SUFBQSxPQUFBO0lBQUE7R0FDd0Isa0I7R0FBdkIsWUFBQTtZQUVoQkcsa0JBQWtCQyxVQUFTM08sT0FBTVY7SUFBd0IsVUFBQSxpQ0FBOUJVO0lBQWMsV0FBQSxXQUF2QjJPLFVBQWVyUDtHQUF5QztZQUUxRXNQLGNBQWNoUCxNQUFLK087SUFDZ0IsdUIsT0FIbkNELGtCQUVtQkM7SUFDZ0IsT0FBQSxpQ0FEckIvTztHQUNpRDtHQUdoQztJQUFBLHVCQUovQmdQO0lBSzZCLHFCQUw3QkE7SUFLNkI7R0FLeEIsdUIsT0FaTEY7R0FVRywwQkFBQTtZQUlIRyxtQkFBbUI3TztJQUFXLE9BQUEsaUNBQVhBO0dBQTRCO1lBQy9DOE8sZUFBZWxQO0lBQU8sd0NBQVBBLE1BRGZpUDtHQUNtRTtHQUVuQztJQUFBLHdCQUZoQ0M7SUFHOEIsc0JBSDlCQTtJQUkrQjtNQUFBLGlDQUwvQkQ7SUFPU3pMO0lBQUx4RDtHQUE4QixrQixPQUF6QndEO0dBQXlCLGVBQUEsaUNBQTlCeEQ7dUJBSzRCTjtJQUN6QixZQUFBLDBDQUR5QkE7Z0NBRTNCbkUsaUJBQVUsT0FBVkE7SUFDRyxNQUFBO0dBQVk7R0FIakIsZ0JBQUE7WUFlRzRULFFBQVF6VCxHQUFHOEgsR0FBSSxPQUFBLFdBQUpBLEdBQUg5SCxHQUFVOztJQUNsQlI7OzttREFEQWlVLFNBQ0FqVTs7WUFZQWtVLFVBQVExVCxHQUFHOEg7SUFBYSxVQUFBLGtDQUFiQSxHQUFIOUg7SUFBZ0IsT0FBQTtHQUFtQjs7SUFDM0MyVDs7O21EQURBRCxXQUNBQzs7WUFZQUMsVUFBUTVULEdBQUc4SCxHQUFJLE9BQUEsV0FBSkEsR0FBSDlILEdBQVU7R0FNWDtJQUxQNlQ7OzttREFEQUQsV0FDQUM7O0lBS087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7OztJQy9EWEM7SUFNQUM7OztZQXBCQUM7UUFBaUJDLGdCQUFMQztJQUFhLFdBQVUsa0NBQXZCQSxLQUFLRDs7WUFDakJFLElBQUlDLElBQUdDLElBQUssV0FBUkQsUUFBR0MsV0FBSEQsUUFBR0MsV0FBcUQ7WUFDNURDLElBQUlGLElBQUdDLElBQUssV0FBUkQsUUFBR0MsV0FBSEQsUUFBR0MsV0FBcUQ7WUFNNURFLElBQUlILElBQUdDO0lBQUs7S0FKcUNHLEtBSTFDSDtLQUpnQ0ksS0FJaENKO0tBSm1CSyxLQUl0Qk47S0FKWU8sS0FJWlA7V0FKWU8sT0FBdUJGLEtBQWJDLEtBQXVCRixTQUFqQ0csS0FBdUJGOztHQUlUO1lBYzlCRztRQUE2QkMscUJBQVVDLG9CQUEzQkM7SUFDZCxXQURjQSxXQUFpQkYsV0FBVUM7Ozs7O1dBdEJ2Q2QsV0FjQUYsTUFiQUssS0FDQUc7V0FGQU4sV0FvQkFELFFBRUFhLFdBcEJBTixLQURBSCxLQUNBRyxLQU1BQzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDeEJBUyxJQUFJQyxHQUFHQztJQUFhLFVBQUEsNEJBQWJBLEdBQUhEO0lBQWdCLE9BQUE7R0FBa0I7O1FBcURwQ0U7YUFFQUMsUUFBUUMsTUFBS0MsSUFBSyxXQXZEcEJOLElBdURlTSxJQUFMRCxPQUF5QzthQU83Q0U7S0FBTzs7T0FHR0M7T0FBSkM7T0FBSkM7aUJBQytELFdBYnJFUCxRQVljSztpQkFWZEosUUFhQU8saUJBSFVGO01BQ1Ysd0JBQThCLFdBYjlCTixRQVlNTzs7U0FGUUUsZUFBSkMsZUFBSkM7UUFBUUYsUUFMVEcsSUFLU0gseUJBTFRHO0tBTUw7OztrQkFBOEIsV0FYOUJaLFFBVU1XLGFBQUlEO0lBR3NFO2FBRWhGRjtLQUFrQjtVQUNiVjtNQUFLLHdCQVBOTSxLQU9DTjs7U0FDR2U7S0FBSyx3QkFFYkMsV0FGUUQ7SUFBb0Q7YUFFNURDO0tBQWE7VUFDTUosZUFBSkM7TUFDZix3QkFBdUMsV0FyQnZDWCxRQW9CZVcsYUFBSUQ7OztNQUVHRDtNQUFKSDtNQUFKQztnQkFiVkgsS0Fha0JLO2dCQXBCdEJSLFFBaUJBYSxZQUdrQlI7S0FDbEIsd0JBQXNDLFdBdkJ0Q04sUUFzQmNPO0lBQ21FO0lBMUJqRjtLQUFBLGNBWUlILE1BVUpVLFlBSkFOO0tBWUYzQjtLQUNBa0M7S0FDQUM7SUExRU4sZUF3RU1uQyxXQUNBa0MsaUJBQ0FDOzs7O0lBRkFuQztJQUNBa0M7SUFDQUM7O1lBT0FDLElBQUtDLFNBQVFDO0lBQUksT0FBQSxrQ0FBSkEsR0FBUkQ7R0FBMkM7WUFDNUNFLE1BQU9GO0k7U0FDVUcsaUJBQUhDLGNBQUxDO0tBQWlCLFdBRjlCTixJQUNXQyxTQUNFSyxNQUFLRCxHQUFHRDs7SUFLakI7S0FKMEJHO0tBQU5DO0tBQVhDO0tBSVQsTUFQSlQsSUFDV0MsU0FFbUJNO0tBRzFCLE1BL0ZKM0IsSUE0RndCNEIsZUFHRUUsS0FBTyxPQUVqQ0MsUUFMYUYsV0FHYUMsS0FBcUM7SUFGL0QsV0FKQVYsSUFDV0MsU0FFRVE7O1lBS2JFLFFBQVNWO0ksdUJBQ0dwQixjQUFLLFdBUmJzQixNQU9LRixTQUNHcEI7UUFDR2U7SUFBSyxXQUNwQmdCLE1BSFNYLFNBRU1MOztZQUNmZ0IsTUFBT1g7STtTQUNvQlksZ0JBQUxQO0tBQWEsV0FabkNOLElBV09DLFNBQ2VLLE1BQUtPOztJQUdzQztLQUZuQ2hDO0tBQUppQztLQUFMQztLQUU0QyxNQWQ3RFosTUFVR0YsU0FFdUJwQjtLQUVULE1BeEdyQkQsSUFzRzBCa0MsYUFFZWxCLEdBQUssT0FKOUNnQixNQUFPWCxTQUlrQ0wsR0FBcUI7SUFEOUQsV0FkQUksSUFXT0MsU0FFY2M7O1lBZHZCQyxXQWtCRU4sS0FBTyxPQVRQQywrQkFTQUQsS0FBbUQ7Ozs7O3FCOztPQTFCbkQ5QztPQUNBa0M7T0FDQUM7T0FNRmlCOzs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0M5RGlCOzs7SUFJakJDOztJQU1BQzs7SUFNQUM7O0lBT0FDO0lBR0FDOztJQU9BQzs7SUFPQUM7SUFJQUM7O0lBc0NBQzs7SUFzQ0FDO0lBT0FDOzs7OztJQXRJQUM7SUFPQUM7Ozs7Ozs7OztJQTJDQUM7Z0JBNFBHQztJQUEyQyxVQUFBLCtCQUEzQ0E7SUFBcUIsTUFBQTtHQUE2RDtnQkFGbEZBO0lBQTJDLFVBQUEsK0JBQTNDQTtJQUFxQixNQUFBO0dBQTZEO2dCQUZsRkE7SUFBMkMsVUFBQSwrQkFBM0NBO0lBQXFCLE1BQUE7R0FBNkQ7Z0JBRmxGQTtJQUEyQyxVQUFBLCtCQUEzQ0E7SUFBcUIsTUFBQTtHQUE2RDtnQkFQbEZBLGlCQUNILFNBSXlCO2dCQVp0QkE7SUFDTyxJQUFOQyxLQUFNLCtCQURQRDtJQUVILE9BQUEsMkJBRElDO0dBS3FCO2dCQVp0QkQsaUJBQ0gsU0FJeUI7Z0JBWnRCQTtJQUNPLElBQU5DLEtBQU0sK0JBRFBEO0lBRUgsT0FESUM7R0FLcUI7Z0JBZHRCRDtJQUNPLElBQU5DLEtBQU0sK0JBRFBEO0lBRU8sK0JBRlBBO0lBR0gsT0FGSUM7R0FNd0I7Z0JBZnpCRDtJQUNIO0tBQUlDLEtBQU0sK0JBRFBEO0tBRUNFLEtBQU0sK0JBRlBGO0ksV0FFQ0UsSUFEQUQ7R0FNd0I7Z0JBZHpCRDtJQUNPLCtCQURQQTtJQUVIO0dBSTRCO2dCQWJ6QkE7SUFDTyxJQUFOQyxLQUFNLCtCQURQRDtJLFdBQ0NDO0dBS3dCO2dCQWJ6QkQ7SUFDTywrQkFEUEE7SUFFSDtHQUkyQjtnQkFaeEJBLGlCQUNILFNBSTJCO2dCQWJ4QkE7SUFDTywrQkFEUEE7SUFFTyxJQUFORSxLQUFNLCtCQUZQRjtJLFdBRUNFO0dBS3VCO2dCQWR4QkY7SUFDTyxJQUFOQyxLQUFNLCtCQURQRDtJLFdBQ0NDO0dBS3VCO2dCQWR4QkQ7SUFDTywrQkFEUEE7SUFFTywrQkFGUEE7SUFHSDtHQUk0QjtnQkFkekJBO0lBQ08sK0JBRFBBO0lBRUg7R0FJNEI7Z0JBZHpCQTtJQUNPLCtCQURQQTtJQUVPLCtCQUZQQTtJQUdIO0dBSTJCO2dCQWR4QkE7SUFDTywrQkFEUEE7SUFFSDtHQUkyQjtnQkFaeEJBO0lBQ0g7SyxNO0s7TztJLE87R0FJa0M7Z0JBWi9CQTtJQUNPLElBQU5FLEtBQU0sK0JBRFBGO0ksVywyQkFDQ0U7R0FLOEI7Z0JBWi9CRixpQkFDSCxXQUlrQztnQkFaL0JBO0lBQ08sSUFBTkMsS0FBTSwrQkFEUEQ7SSxXQUNDQztHQUs4QjtnQkFiL0JEO0lBQ08sSUFBTkMsS0FBTSwrQkFEUEQ7SUFFSCxPQURJQztHQUtnQjtnQkFkakJEO0lBQ08sK0JBRFBBO0lBRU8sSUFBTkUsS0FBTSwrQkFGUEY7SUFHSCxPQURJRTtHQUtnQjtHQVRaO0lBQVJDOzt1QkFDUSxPQUFBLGtDQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBcUt6QkM7O09BdEtBRDtPQTFJQU47T0FPQUM7T0FJQVo7T0FNQUM7T0FNQUM7T0FPQUM7T0FHQUM7T0FPQUM7T0FPQUM7T0FHQU87T0FDQU47T0FzQ0FDOztPQXNDQUM7T0FPQUM7WUEyTEFTLEtBQU1DLFFBQWtDQztJQUN4QyxPQUFBLCtCQWxCQUgsYUFpQk1FLFFBQWtDQztHQUNBO1lBQ3hDQyxTQUFVRixRQUFrQ0M7SUFDNUMsT0FBQSwrQkFwQkFILGFBbUJVRSxRQUFrQ0M7R0FDSjtZQUN4Q0UsTUFBT0gsUUFBa0NDO0lBQ3pDLE9BQUEsK0JBdEJBSCxhQXFCT0UsUUFBa0NDO0dBQ0Q7WUFDeENHLFVBQVdKLFFBQWtDQztJQUM3QyxPQUFBLCtCQXhCQUgsYUF1QldFLFFBQWtDQztHQUNMOzRCQVB4Q0YsTUFFQUcsVUFFQUMsT0FFQUM7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDcFJBeEI7O0lBTUFDOztJQU1BQzs7SUFPQUM7O0lBSUFDOztJQU9BQzs7SUFPQUM7O0lBS0FDOztJQXVDQUM7O0lBdUNBQztJQU9BQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPLG1CO0c7R0FwSWlCO0lBUGpCQztJQU9BQztJQThDQUM7Z0JBdVBHQztJQUEyQyxVQUFBLCtCQUEzQ0E7SUFBcUIsTUFBQTtHQUE2RDtnQkFGbEZBO0lBQTJDLFVBQUEsK0JBQTNDQTtJQUFxQixNQUFBO0dBQTZEO2dCQUZsRkE7SUFBMkMsVUFBQSwrQkFBM0NBO0lBQXFCLE1BQUE7R0FBNkQ7Z0JBRmxGQTtJQUEyQyxVQUFBLCtCQUEzQ0E7SUFBcUIsTUFBQTtHQUE2RDtnQkFGbEZBO0lBQTJDLFVBQUEsK0JBQTNDQTtJQUFxQixNQUFBO0dBQTZEO2dCQVJsRkE7SUFDTyxJQUFOQyxLQUFNLCtCQURQRDtJQUVILE9BQUEsMkJBRElDO0dBS21EO2dCQVpwREQsaUJBQ0gsU0FJZ0Q7Z0JBWjdDQTtJQUNPLElBQU5DLEtBQU0sK0JBRFBEO0lBRUgsT0FBQSwyQkFESUM7R0FLNEM7Z0JBWjdDRCxpQkFDSCxTQUlnRDtnQkFaN0NBO0lBQ08sSUFBTkMsS0FBTSwrQkFEUEQ7SUFFSCxPQURJQztHQUs0QztnQkFkN0NEO0lBQ0g7S0FBSUMsS0FBTSwrQkFEUEQ7S0FFQ0UsS0FBTSwrQkFGUEY7SSxXQUVDRSxJQURBRDtHQU13QjtnQkFkekJEO0lBQ08sSUFBTkMsS0FBTSwrQkFEUEQ7SSxXQUNDQztHQUt3QjtnQkFaekJELGlCQUNILFNBSWtEO2dCQVovQ0E7SUFDTyxJQUFOQyxLQUFNLCtCQURQRDtJLFdBQ0NDO0dBSzhDO2dCQWIvQ0Q7SUFDTyxJQUFOQyxLQUFNLCtCQURQRDtJQUVILE9BQUEsd0NBRElDO0dBS3VDO2dCQWR4Q0Q7SUFDSDtLQUFJQyxLQUFNLCtCQURQRDtLQUVDRSxLQUFNLCtCQUZQRjtJLFdBRUNFLElBREFEO0dBTXdCO2dCQWJ6QkQsaUJBQ0gsU0FJNEI7Z0JBWnpCQTtJQUNPLElBQU5DLEtBQU0sK0JBRFBEO0lBRUgsV0FESUM7R0FLbUI7Z0JBYnBCRDtJQUNPLElBQU5DLEtBQU0sK0JBRFBEO0lBRUgsV0FESUM7R0FLbUI7Z0JBZHBCRDtJQUNIO0tBQUlDLEtBQU0sK0JBRFBEO0tBRUNFLEtBQU0sK0JBRlBGO0ksV0FFQ0UsSUFEQUQ7R0FNMkI7Z0JBYjVCRCxpQkFDSCxTQUkrQjtnQkFiNUJBO0lBQ0g7S0FBSUUsS0FBTSwrQkFEUEY7S0FFTyxLQUFBLCtCQUZQQTtLLEssMkJBQ0NFO0k7R0FNc0I7Z0JBZHZCRjtJQUNIO0tBQUlDLEtBQU0sK0JBRFBEO2VBQ0NDO1NBQUFBO0k7bUM7OztJO0dBS3NCO2dCQVp2QkQ7SUFDSDtLLE07SztPO0ksTztHQUlzQztnQkFabkNBO0lBQ0g7S0FBSUUsS0FBTSwrQkFEUEY7SyxLLDJCQUNDRTtLLEk7SyxNO0k7R0FLa0M7Z0JBYm5DRjtJQUNIO0tBQUlDLEtBQU0sK0JBRFBEO1NBQ0NDO1NBQUFBOztLOzs7O007O2M7O0ssSSxjO0k7R0FLa0M7R0FSOUI7SUFBUkU7O3VCQUNRLE9BQUEsa0NBQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE2SnpCQzs7T0E5SkFEO09BaEpBTjtPQU9BQztPQUtBWjtPQU1BQztPQU1BQztPQU9BQztPQUlBQztPQU9BQztPQU9BQztPQUlBTztPQUNBTjtPQXVDQUM7O09BdUNBQztPQU9BQztZQW9MQVMsS0FBTUMsUUFBa0NDO0lBQ3hDLE9BQUEsK0JBbEJBSCxhQWlCTUUsUUFBa0NDO0dBQ0E7WUFDeENDLFNBQVVGLFFBQWtDQztJQUM1QyxPQUFBLCtCQXBCQUgsYUFtQlVFLFFBQWtDQztHQUNKO1lBQ3hDRSxNQUFPSCxRQUFrQ0M7SUFDekMsT0FBQSwrQkF0QkFILGFBcUJPRSxRQUFrQ0M7R0FDRDtZQUN4Q0ksVUFBV0wsUUFBa0NDO0lBQzdDLE9BQUEsK0JBeEJBSCxhQXVCV0UsUUFBa0NDO0dBQ0w7WUFDeENHLFVBQVdKLFFBQWtDQztJQUM3QyxPQUFBLCtCQTFCQUgsYUF5QldFLFFBQWtDQztHQUNMOzs7VUFUeENGLE1BRUFHLFVBRUFDLE9BRUFFLFdBRUFEOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7O0lDbFRBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0s7Ozs7OztZOzs7Ozs7O0k7SyxROzs7O0s7Tzs7SSxPO0c7O2lCQXFnQm1CQyxLQUFTTjtLQS9PN0I7VUFDaUNPO01BQ2xDO09BQU07UUFENEJDO1VBQzVCOytCQXhSSkgsa0JBdVJnQ0UsaUJBOE9KUDtnQkE5T0lRO09BdUZYLFdBdUpPUixXQUFBQTtXQTlPSU8sa0JBQUFDOzthQUFBQTs7UyxjQThPSlI7OztTQTVOOUI7aUJBQUEsOEJBNE44QkEsUUFBQUEsV0FBQUE7UyxPLCtCQUFUTSxLQUFTTjs7Ozs7O1MsVSw4QkFBQUE7UyxvQkFBVE0sS0FBU047U0FwSjVCUyxZQW9KbUJILFVBQVNOO1MsVSx5QkFBVE07UyxvQkFBQUE7Uzs7OztTLFksOEJBQVNOO1Msb0JBQVRNLEtBQVNOO1MsSUFBTFUsc0JBRWdCQyxTQUZoQkQ7U0FDeEI7Y0FDb0RFO1VBQ3JEO1dBQU07WUFEK0NDO2NBQy9DOztnQkF4Z0JKUjtnQkF1Z0JtRE87Z0JBRnZCWjttQkFFdUJhO1dBNkQ5QixXQS9ET2IsV0FBQUE7ZUFFdUJZLG9CQUFBQzs7aUJBQUFBOzthLG9CQUZoQ1AsS0FBU047YSxjQUFBQTs7O2Esb0JBQVRNLEtBQVNOOzthLG9CQUFUTSxLQUFTTjthO2MsTSw4QkFBQUE7YzthQXBKNUJTLFlBb0ptQkgsWUFBU047OzthLG9CQUFUTSxLQUFTTjthO2MsUSw4QkFBQUE7YztjQUFMYyxzQkFFZ0JIO2NBQUFBLFNBRmhCRzs7O2Esb0JBQUpSLEtBQVNOO2tCQUVXVztjLE07aUJBRmhCSSxTQUVnQko7Z0JBRmhCSSxZQUVnQkosU0FGaEJJOzs7a0JBRWdCSjtjLE07YTtzQkFBQUE7Ozs7YztnQjs7YTs7VSxZLGdDQUZwQkwsS0FBU047VSxvQkFBVE07VTs7O1Msb0JBQVNOOztTLG9CQUFBQTs7U0FqSzlCO2dCQUFBLDhCQWlLOEJBLFFBQUFBLFdBQUFBO1MsTzs7OztJQS9PSTthQTJGaENTLFlBQVlILEtBRW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtXQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7OzZCLGM7O0ksVztHO2tELE87Rzs2QyxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7Rzs7K0Isc0I7O0k7OztLLG1CO0ksZTs7OztJLGU7O2dELHlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJQ3NQOUNDO0lBcU1BQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWgzQkFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7O0lBT0FD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Q0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQ0FDOztTQUlSQztTQUlBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUdBQztTQUlBQztTQUNBQztTQXNCQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FJUUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FJUkM7U0FJQUM7U0FDQUM7U0FNQUM7U0FNQUM7U0FFQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FPQUM7U0FHQUM7U0FJQUM7U0FDQUM7U0FJQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FNQUM7U0FtREFDO1NBR0FDO1NBR0FDO1NBR0FDO1NBSUFDO1NBSUFDO1NBSUFDO1NBR0FDO1NBR0FDO1NBR0FDO1NBTUFDO1NBTUFDOztTQTNHRXZMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQXZJRnNMO0lBSVFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FDOztJQUlSQztJQUtBQztJQUNBQztJQW9DQUM7SUF5QlFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBUVJDO0lBQ0FDO0lBTUFDO0lBTUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBT0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBQztJQUdBQztJQU9BQztJQUlBQztJQUlBQztJQUdBQztJQUdBQztJQUdBQztJQU1BQztJQU1BQzs7SUMxUkFDO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7O1NEb0NBMUU7U0FJUUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7Ozs7Ozs7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FDQUM7O1NBSVJDO1NDbkRBMEM7U0R3REF6QztTQUNBQzs7OztTQ3RFQXFDOzs7U0FlQUs7U0FEQUQ7O1NENEZBeEM7U0MxRkEwQzs7OztTQU5BTDs7O1NEeUhRcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0N4SFJpQztTRGdJQWhDO1NBQ0FDO1NBTUFDO1NBTUFDO1NBRUFDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBT0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBTUFDO1NBbURBQztTQUdBQztTQUdBQzs7U0FPQUM7U0FJQUM7U0FJQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FNQUM7U0FNQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQS9JRXRRO0lBdkZGOFE7SUFJUUM7SUFBQUM7SUFDQUM7SUFBQUM7SUFDQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFDQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFDQUM7O0lBSVJDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBc0JBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUdBQztJQUlRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUlSQztJQUlBQztJQUNBQztJQU1BQztJQU1BQztJQUVBQztJQUNBQztJQUNBQztJQUdBQztJQU9BQztJQUdBQztJQUlBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU1BQztJQW1EQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFJQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFNQUM7SUFNQUM7Ozs7O1NBdE9BNUY7U0FJUUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FDQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FDQUM7O1NBSVJDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBc0JBQztTQUNBQztTQUNBQztTQUNBQztTQUdBQztTQUdBQztTQUdBQztTQUdBQztTQUdBQztTQUdBQztTQUdBQztTQUlRQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUlSQztTQUlBQztTQUNBQztTQU1BQztTQU1BQztTQUVBQztTQUNBQztTQUNBQztTQUdBQztTQU9BQztTQUdBQztTQUlBQztTQUNBQztTQUlBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQU1BQztTQW1EQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FJQUM7U0FJQUM7U0FJQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FNQUM7U0FNQUM7O1NBckdFOVY7SUFtS0UrVjtJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7V0EzUUF2WCxRQXhEQWxCLFFBc0VBcUIsU0FqRUFuQixNQXdEQWlCO09BZUZJO09Bb0VBVztPQU1BRztPQVlBRTtPQWhEQWI7T0EwQ0FZO09BK0NBSztPQVhBRDtXQStIRTJWLE9BQ0FDLFNBQ0FDLFNBQ0FDLFNBQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O1lFcFdBQyxjQUFBLHFCQUVzQjtHQUxaLGlCQUdWQTtZQVNBQyxNQUFNQyxHQUFHQztJQUNYO0tBQTJCLE1BQUEsZUFEbkJEO0tBQ0pGLFNBQVM7S0FDQSxNQUFBLGNBRkxFO0tBQ0s7O1NBQ2JFOztNQUNFLFdBSFNELEdBRVhDLElBRElKLFlBRWEsY0FIVEUsR0FFUkUsSUFESUo7TUFFRixVQURGSTtpQkFBQUE7VUFBQUE7Ozs7R0FFSTtZQUdGQyxLQUFpQkMsTUFBK0JDLFFBQU9DLEtBQUtMO0lBQ3RELElBQUpELElBQUksbUNBRFdJLE1BQStCQyxRQUFPQztJQVB2RFA7TUFRRUM7ZUFDWUU7T0FBZSxPQUFBLHNCQUQzQkYsR0FDWUUsR0FBd0IsV0FGc0JELEdBRTlDQztNQUEyQjtJQUEzQyxPQURJRjtHQUVIO1lBR0NPLEtBQWlCUCxHQUFvQkcsTUFBTUY7SUFDbEMsSUFBUE8sYUFEbUNMO0lBYnJDSjtNQWFpQkM7ZUFFSEU7T0FBK0IsVUFBQSxjQUY1QkYsR0FFSEU7T0FEWk0sWUFDbUMsV0FGTVAsR0FDekNPOztNQUNnRDtXQURoREE7R0FFQztZQUdIQyxTQUFTVDtJQUNYLElBQTJCLE1BQUEsZUFEaEJBLElBQ1BGLFNBQVM7aUJBQzhCSSxHQUFLLE9BQUEsY0FGckNGLEdBRWdDRSxJQUR2Q0osWUFDMEQ7SUFBbkQsVUFBQSxjQUZBRTtJQUUyQixPQUFBO0dBQXlCO1lBRzdEVSxVQUFVQyxhQUFZQyxjQUFjQyxnQkFBZ0JiO0lBQzlDLElBQWFjLFFBTm5CTCxTQUtvRFQ7Z0NBQTFDVyxhQUNTRzs7WUFHbkJDLFVBQVVDLGVBQWNDLE9BQU1qQjtJQUNoQyxJQUFnQyxNQUFBLGNBREFBLElBQzVCa0IsVUFBUSxzQkFEY0Q7SUFFMUIsT0FqQkVWLEtBZThCUCxHQUM1QmtCLFNBRFFGO0dBRXVCO1lBT2pDRyxRQUFNbkIsR0FBR0M7SUFDWDtLQUEyQixNQUFBLGVBRG5CRDtLQUNKRixTQUFTO0tBQ0EsTUFBQSxjQUZMRTtLQUNLOztTQUNiRTs7TUFDZSxJQUFBLE1BQUEsY0FIUEYsWUFHTjs7V0FBQW9COztRQUNFO1VBSk9uQjtVQUVYQyxJQURJSjtVQUVGc0IsSUFGRXRCO1VBRzRCLGNBSnhCRSxHQUVSRSxJQURJSixZQUVGc0IsSUFGRXRCO1FBR0EsVUFERnNCO21CQUFBQTtZQUFBQTs7O01BREYsVUFBQWxCO2lCQUFBQTtVQUFBQTs7OztHQUlJO1lBR0ZNLE9BQWlCSixNQUErQkMsUUFBT2dCLE1BQUtDLE1BQU1yQjtJQUM1RCxJQUFKRCxJQUFJLG1DQURXSSxNQUErQkMsUUFBT2dCLE1BQUtDO0lBVDVESDtNQVVFbkI7ZUFDWUUsR0FBRWtCO09BQWUsT0FBQSxzQkFEN0JwQixHQUNZRSxHQUFFa0IsR0FBMkIsV0FGdUJuQixHQUVwREMsR0FBRWtCO01BQWdDO0lBQWxELE9BRElwQjtHQUVIO1lBR0N1QixPQUFpQnZCLEdBQW9CRyxNQUFNRjtJQUNsQyxJQUFQTyxhQURtQ0w7SUFmckNnQjtNQWVpQm5COzJCQUVpQndCO09BRGhDaEIsWUFDK0MsV0FGTlAsR0FDekNPLFdBQ2dDZ0I7O01BQTBCO1dBRDFEaEI7R0FFQztZQUdIaUIsV0FBU3pCO0lBQ1gsSUFBMkIsTUFBQSxlQURoQkEsSUFDUEYsU0FBUztpQkFDK0JJO2tCQUNFa0IsR0FBSyxPQUFBLGNBSHhDcEIsR0FFaUNFLElBRHhDSixZQUUwQ3NCLElBRjFDdEIsWUFFeUU7S0FBaEUsVUFBQSxjQUhGRTtLQUc4QixPQUFBO0lBQXFDO0lBRG5FLFVBQUEsY0FGQUE7SUFFNEIsT0FBQTtHQUN3QztZQUc3RTBCLFlBQVVmLGFBQVlDLGNBQWNDLGdCQUFnQmI7SUFDOUMsSUFBYTJCLFFBUG5CRixXQU1vRHpCLCtCQUExQ1c7cUNBQ1NnQjs7WUFHbkJDLFlBQVVaLGVBQWNDLE9BQU1qQjtJQUNoQztLQUFnQyxNQUFBLGNBREFBO0tBQzVCa0IsVUFBUSxzQkFEY0Q7S0FFTSxNQUFBLGNBRkFqQjtLQUU1QjZCLFVBQVEsc0JBRFJYO0lBRUosT0FuQkVLLE9BZ0I4QnZCLEdBRTVCNkIsU0FGUWI7R0FHdUI7Ozs7O1dBL0NqQ04sV0FqQkFQLE1BUEFKLE9BYUFRLE1BTUFFLFVBU0FNO1dBb0NBVyxhQWxCQWxCLFFBVEFXLFNBZUFJLFFBTUFFLFlBVUFHOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztZQzlFRkUsT0FBTzdCLEdBQVUsT0FBVkEsRUFBVztZQUVsQjhCLFFBQVMvQixHQUFTZ0MsR0FBR0MsTUFBTUM7SUFDN0IsUUFEdUJELE1BR2xCLE9BQUEsV0FITWpDLEdBQVNnQyxHQUFHQyxNQUFNQzs7c0RBQU5EOzs7Ozs7O0dBR0g7WUFHbEJFLG1CQUFrQkQsTUFBTyxPQUFQQSxLQUFXO3VDQUE3QkMsUUFSQUwsUUFFQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDREZELE9BS1c3QixHQUFVLE9BQUEsMkJBQVZBLEdBQXdCO1lBSm5DbUMsU0FNY3BDLEdBQVVpQyxNQUFNSTtJQUM1QixRQURzQkosTUFHakIsT0FBQSwyQkFIT2pDLEdBQVVpQyxNQUFNSTs7dURBQU5KOzs7Ozs7O0dBR2E7R0FNNUIsSUFBUEEsT0FoQkZILGdCQWdCc0JHLGFBQWtCLE9BQWxCQSxLQUFzQjtZQUUxQ0ssR0FBR0MsS0FBSUM7SUFDVCxPQW5CQVY7c0JBbUJhRyxNQUFNSTtjQUNKLElBQVRJLFdBQVMsb0NBRElKO2NBRWpCLGdCQUFJTDtlQUNGO2dCQUErQyxPQUFBO2dCQUEzQ0U7a0JBQU8seUNBSlZLLEtBR0NQLEdBRk9DO2dCQUlMSSxTQUFTLG9DQUhYSTtnQkFJcUMsT0FBQSx5QkFGbkNQO2VBRUosb0NBRElHO2VBQ0osT0F2QkpELFNBaUJTSSxLQUNJUCxNQUlMSSxRQUVzQjthQUFBO0dBQUM7WUFHN0JLLFVBQVUxQyxHQUFHaUM7SUFBTyxPQTVCdEJILHVCQTRCMkNPLFFBQVUsT0EzQnJERCxTQTJCWXBDLEdBQUdpQyxNQUE0QkksUUFBa0M7R0FBQztZQUU1RU0sUUFBUTNDLEdBQUU0QztJQUNaLE9BL0JBZDtzQkErQmFHLE1BQU1JO2NBQ2pCLG9DQURpQkEsUUFEUE87Y0FFVixPQS9CRlIsU0E2QlVwQyxHQUNHaUMsTUFBTUk7YUFFTztHQUFDO1lBR3pCUSxXQUFXN0MsR0FBR0M7YUFDUjZDLEtBQU1iLE1BQU1JO0tBQ2xCLElBRFlVLFNBQUFkO0tBQ1o7TUFBUSxJQUFKRCxJQXJDTkksU0FtQ2FwQyxHQUNDK0MsUUFBTVYsU0FFWixRQUFBLFdBSFFwQyxHQUVWK0I7b0JBRUdnQixjQUFLLE9BQUxBO1VBSEtDLFNBQUFGLGdCQUFBQSxTQUFBRTs7SUFJMkI7SUFFekMsT0EzQ0FuQixPQXFDUWdCO0dBTUc7WUFHVEksT0FBT2xELEdBQUdDO0lBQUksT0FWZDRDLFdBVU83QyxZQUE0QmdDLEdBQUssT0FBRyxXQUFqQy9CLEdBQXlCK0IsU0FBQUEsT0FBaUM7R0FBQztZQUNyRW1CLFNBQU9uQixHQUFJLE9BL0NiRiw2QkErQzhDLE9BQXJDRSxFQUFzQyxHQUFDO1lBQzlDb0IsSUFBSXBELEdBQUdDO0lBQUksT0FoRGI2QjtzQkFnRDBCRyxNQUFNSTtjQUFVLE9BQUUsV0FBbkNwQyxHQS9DVG1DLFNBK0NNcEMsR0FBb0JpQyxNQUFNSTthQUFzQztHQUFDO1lBRXJFZ0IsTUFBTUMsSUFBR0M7SUFDWCxPQW5EQXpCO3NCQW1EYUcsTUFBTUk7Y0FDakI7ZUFBSXBDLElBbkRObUMsU0FpRFFrQixJQUNLckIsTUFBTUk7ZUFFYkwsSUFwRE5JLFNBaURXbUIsSUFDRXRCLE1BQU1JO2NBR2pCLE9BQUEsV0FGSXBDLEdBQ0ErQjthQUNEO0dBQUM7WUFHSndCLEtBQUt4RCxHQUFHQztJQUNWLE9BMURBNkI7c0JBMERhRyxNQUFNSTtjQUNULElBQUpMLElBMUROSSxTQXdET3BDLEdBQ01pQyxNQUFNSTtjQUVqQixPQTNERkQsU0EyRFcsV0FIRG5DLEdBRUorQixJQURPQyxNQUFNSTthQUVXO0dBQUM7WUFHN0JvQixJQUFJQztJQUFPLE9BL0RiNUI7c0JBK0QwQkcsTUFBTUk7a0NBQVUsT0E5RDFDRCxlQThEMEJILE1BQU1JO2NBQTJCLE9BQUEsMEJBQXJEcUI7YUFBNkU7R0FBQztZQUVsRkMsU0FBU0Q7SUFDWCxPQWxFQTVCO3NCQWtFYUcsTUFBTUk7a0NBQVUsT0FqRTdCRCxlQWlFYUgsTUFBTUk7Y0FBNEIsT0FBQSx5QkFEcENxQjthQUM0RDtHQUFDO0dBUTVEO0lBQU5FLHdCQTFCSlI7OzBDQURBRCxVQUdBRSxPQXdCSU87SUFHSkM7SUFDQUM7SUFDQUM7Ozs7O0lBVUlDLHdCQXpDSlo7OENBU0FJLE1BVkFMLFVBMENJYTtJQUdKQztJQUNBQzs7OztZQU9BQyxRQUFRVDtJQUNWLEdBQUcseUJBRE9BOzs7O0tBRUw7O0lBQ087S0FBUlUsUUFBUSwyQkFIRlY7S0FLTlcsS0FGQUQ7S0FDQUU7SUFFRyxPQTFHUHhDOzZCQTBHcUJPO2NBQ1AsSUFBUmtDLFFBQVEsaUNBRE9sQyxRQUZqQmlDLElBQ0FEO2NBR0Ysd0JBTEVELE9BSUVHLFdBQUFBO2FBQ1M7R0FBQztZQUdkQyxNQUFNZCxNQUFPLE9BQUssV0FsQmxCUSxNQU9BQyxRQVdNVCxPQUEwQjtZQUVoQ2UsaUJBQWlCQztJQUNuQixHQUFHLHlCQURnQkE7Ozs7S0FFZDs7SUFDaUI7S0FBQSxRQUFBLDBCQUhIQTtLQUdOQztLQUFUQztLQUNBQyxjQUFjLDJCQURMRjtJQUViLHFCQUNpRSxVQUFFO0lBQXJELElBRElQLFFBQ0osMkJBRlZTO0lBR0YsY0FDc0NOLE9BQU1PLEtBQUlDO0tBQzVDLE9BQU8sMkJBRHFDQTs7eURBQUFBOzs7Ozs7TUFHMUM7O0tBSUMsR0FBQSwyQkFQeUNBOzt5REFBQUE7Ozs7OztNQVMxQzs7S0FJZSxJQUFiQyxhQUFhLHNCQWJ1QkYsS0FBSUM7S0FjNUMsdUJBakJZWCxPQUdzQkcsT0FhOUJTO0tBQ0osT0FESUE7SUFFTTtJQWZaLElBSEFDLE1BR0EsMEJBTEFMO0lBc0JDLEdBQUEsMkJBcEJESzs7OztLQXNCQTs7SUFJRyxPQWhKUG5EOzZCQWdKcUJPO2NBQ25CO2VBQUk2QyxTQUFTLGlDQURNN0MsWUExQmpCNEM7ZUE2QkE7aUJBQUE7Ozs7bUJBN0JjYjs7O21CQTJCWmM7O2VBU00sTUFBQTtrQkFESFg7Y0FBUyx3QkFwQ2RNLGFBb0NLTixXQUFBQTthQUNlO0dBQUM7WUFHdkJZLGVBQWVUO0lBQVEsT0FBSyxXQWhFNUJSLE1Bb0JBTyxpQkE0Q2VDO0dBQXFDO1lBQ3BEVSxRQUFRQztJQUFTLE9BOUpuQnZEO3NCQThKZ0NHLE1BQU1JO2NBQVUsd0JBQXRDZ0Q7OzswQkFBQUE7OzJEQUFBQTswREFBQUE7O2NBQXNDLE9BN0poRGpELGVBNkpnQ0gsTUFBTUk7YUFBK0M7R0FBQztZQUVwRmlELFlBQVlDO0lBQ2QsSUFBUUY7O01BQUFBOzt1QkFBNEIsT0FBQSxXQUR0QkUsY0FGWkgsUUFHTUM7NEJBQUFBOzRCQUFBQTtxQ0FDUixPQURRQTtJQUNSLE9BQUEsZ0NBRFFBO0dBQ0k7WUFHVkcseUJBQXlCQyxhQUFheEY7SUFDeEMsT0FORXFGO3NCQU1lSTs7ZUFFUSxJQUFTMUYsY0FBSDJGOzZCQUVkQyxHQUNULE9BL0lObEQsVUE0SWdDMUMsR0FFakI0RixXQUNnQjtlQUYzQixXQUR5QkQsbUNBeEo3QjFEO2NBMkprQztjQUh2QjtlQUFBLE9BQUEsV0FIMkJoQyxHQUN2QnlGO2VBQ1hHLFdBQ0Y7ZUFLQyxPQUFBLHlCQVJzQko7ZUFRdEIsZUFBNkIseUJBTjVCSTtjQU00Qjs7Ozs7ZUFFOUI7O2NBR2U7ZUFBYkMsYUFyQkpYLGVBUXlCTTtlQWNyQk07aUJBdEJKWixlQXNCNkIsc0JBZEpNLGFBRXJCSTttQyxxQkFXQUMsYUFDQUM7cURBbktKOUQ7YUFzS2M7R0FBQztZQUdmK0QsZ0JBQWdCUCxhQUFheEY7SUFDL0IsU0FBSWdHLFNBQVN2QztLQUFPLGNBQXNCMUQsR0FBSyxlQUFMQSxHQUFVO0tBQWYsT0FBQSwwQkFBeEIwRDtJQUF3QztrQkFDR2dDLE1BQVEsT0FENURPLFNBQ3FFLFdBRjFDaEcsR0FFeUJ5RixPQUF5QjtJQUE5QixPQXRCakRGLHlCQXFCRVMsU0FEY1I7R0FFZ0U7WUFHaEZTLE1BQVFDO0lBQ1YsR0FEVUEsU0FBYUMsTUFBYkQsUUFBQUUsYUFBYUQsY0FBYkM7SUFDVjtTQUR5Q0MsaUJBQWJDLGFBQWFEOztTQUFiQztJQUNyQixPQS9MUHpFO3NCQStMYUcsTUFBTUk7Y0FDakIsR0FGUWdFLGFBQWtCRTtlQUUxQixNQUFBO2NBUVU7ZUFQTkMsY0FISUgsYUFDR3BFO2VBR1B3RTtpQkFKSUosY0FHSkc7b0JBR0csc0JBTm1CRCxZQUd0QkM7b0JBSHNCRDtlQVV0Qkc7aUJBQU07NkNBVE9yRSxRQURUZ0UsWUFJSkk7Y0FTSixTQUhJQyxLQUlDO2NBQ0EscUJBQ3FDLFNBQUM7Y0FBN0I7ZUFBUlIsUUFBUSwyQkFOVlE7ZUFPRUMsWUFoQksxRSxRQVNQeUUsTUFWSUw7ZUFrQkZPLFlBUkZGOztpQkFPRUM7OztnQkFJVTtpQkFBUnBDO21CQUFRLHFDQXBCQ2xDLFdBaUJYdUU7Z0JBRkFWLFVBS0UzQjtrQ0FMRjJCLE9BS0UzQixXQUFBQTtnQkFGTjttQkFGSW9DOzs7O2NBUEksSUFBQSxPQVFKQyxtQkFPSjs7bUJBQUExRzs7Z0JBQ1U7aUJBQUprQixJQUFJLGlDQXpCS2lCLFFBd0JmbkMsR0FQSTBHO2dCQVNGLDJCQVhFVixPQVNKaEcsR0FDTWtCO2dCQUROLFdBQUFsQjs0QkFBQUE7b0JBQUFBOzs7eUJBZkV3RyxNQVZJTDtrQzt3Qzs7aUJBNkJFOzJEQWJKSDs7O29CQWZLakU7ZUE2QlQsT0FBQSwyQkFkSWlFO2NBYUosTUFBQTthQUNvQjtHQUFDO0dBR2hCO0lBQVBXLE9BQU87SUFDUEM7TUFoT0ZoRjt3QkFnTzhCTztTQUFVLE9BQUEsaUNBQVZBO1FBQXVDO1lBQ25FMEUsT0FBT0M7SUFBVSxlQWpMakI1RCxJQWlMTzREO0lBQWdCLE9BbEh2QnhDLFVBa0h5QjtHQUEyQztZQUNwRXlDLE9BQU9DLE9BQU1DO0lBQVEsZUFsTHJCL0QsSUFrTGErRDtJQUFjLE9BbkgzQjNDLFVBL0RBcEIsSUFrTE84RDtHQUE2RTtZQUVwRkUsT0FBT0MsTUFBS0M7SUFDZDtLQUEyQix1QkFDakJDLGVBQU0sV0FBTkE7U0FDQ0M7S0FBTyxXQUFQQTtJQUFpQjtJQUZELE9Bckx6QnBFLElBa0xBNkQsT0FFT0ksTUFBS0M7R0FHYztZQUcxQkcsYUFBY3BCLFlBQVlFLFlBQVdtQjtrQkFDOUJ4QjttQkFDY2pFLE1BQVEsT0FoTjdCUyxVQThNcUNnRixTQUVoQnpGLE1BQStCO0tBQXRELE9BN0tFd0IsSUE2S0YsMEJBRFN5QztJQUNxRDtJQUQ3QyxXQTdDZkEsTUE0Q2NHLFlBQVlFOzs7WUFLMUI3QyxLQUFLZ0UsU0FBVSxPQUxmRCxtQkFLS0MsU0FBOEI7WUFDbkNDLGVBQWVELFNBQVUsT0FOekJELHFCQU1lQyxTQUE0QztZQUUzREUsaUJBQWlCRixTQUFTRztJQUM1QixPQVRFSixpQkFRMEJJLGFBQUFBLFNBQVRIO0dBQ3VDO1lBR3hESSxjQUFjQztJQUNoQjtLQUFJQyxTQUFPLDJCQURLRDtLQUVaRSxrQkFEQUQ7SUFFRyxPQXpQUGxHOzZCQXlQcUJPO2NBQ0k7ZUFBbkI2RjtpQkFBbUIsaUNBREo3RixXQURqQjRGO2NBR0Ysb0JBQUE7Y0FBYztlQUFWRSxVQUFVLDJCQUhaRjtlQUtGLE9BSElDO2VBQ1U7O21CQUVkaEk7O2dCQUNVO2lCQUFKa0I7bUJBQUk7MkNBTFNpQixRQUluQm5DLEdBTEUrSDtnQkFPQSwyQkFKRUUsU0FFSmpJLEdBQ01rQjtnQkFETixXQUFBbEI7NEJBQUFBO29CQUFBQTs7O2NBS0E7OztvQkFSSWdJO2dCQUNBQzs7NEJBUytCakk7ZUFBVyw0QkFUMUNpSSxTQVMrQmpJLE9BQUFBO2VBQUssd0JBYnRDOEg7Y0Fhd0Q7Y0FBNUIsT0FBQSwyQkFWMUJFO2FBVXVEO0dBQUM7WUFHNURFLGtCQUFrQjFFO0lBQ3BCLE9BeFFBNUI7NkJBd1FxQk87Y0FDbkI7ZUFBSStCLFFBQVEsMkJBRk1WO3NCQUVkVTtlQUFROzttQkFDWmxFOztnQkFDVSxJQUFKa0IsSUFBSSxpQ0FIU2lCLFdBRW5CbkM7Z0JBRUUsMkJBSEVrRSxPQUNKbEUsR0FDTWtCO2dCQUROLFdBQUFsQjs0QkFBQUE7b0JBQUFBOzs7Y0FJQSxPQUFBLDJCQUxJa0U7YUFLZTtHQUFDO1lBR3BCQSxNQUFNcEUsR0FBSSwyQkFBQSxPQWpPVm9ELElBK0xBTSxLQWtDTTFELFVBQWlDO1lBQ3ZDcUksSUFBSXJJLEdBQUksT0FsT1JvRCxJQWtPSXBELGtCQUFhLG9CQUFVO1lBQzNCcUYsT0FBT3JGLEdBQUksT0FuT1hvRCxJQW1PT3BELGtCQUEwQjtZQUVqQ3NJLHVCQUF1QmhFLElBQUdEO0lBQzVCLE9BdFJBdkM7NkJBc1JxQk87Y0FDbkI7ZUFBc0QsT0FBQSwwQkFGNUJnQztlQUVPLE9BQUEsMEJBRlZDO2VBRXZCLE9BQUEsaUNBRG1CakM7Y0FDbkIsT0FBQTthQUNxQjtHQUFDO0dBR0w7SUFBakJrRyxpQkFOQUQ7SUFPQUUsaUJBUEFGO0lBUUFHLGFBUkFIO0lBU0FJLHFCQVRBSjtJQVVBSyxlQVZBTDtJQVdBTSxhQWpMQXBFLFVBNktBZ0Usb0JBREFEO0lBT0FNO01BcklBMUQsNEJBbUlBeUQsMEJBSEFIO0lBYUFLO01BdE1BM0UsUUFzTTBCO0lBQzFCNEU7TUE5SUE1RDtxQkFxSUEwRCw0QkFKQUg7c0JBb0JNO0lBTE5NO01BaEpBN0Q7O21CQThJQTREOzttQkFaQUo7c0JBa0JNO1lBT05NLFVBQVdDO0lBQ2IsT0F6VEFwSDtzQkF5VGFHLE1BQU1JO2NBQ2pCO2VBQUk4RyxjQUZPRDtlQUdQMUMsY0FGT3ZFO2VBR1BtSDtpQkFDRjs7bUJBSmUvRzs7bUJBRWJtRSxjQURBMkM7ZUFLQUUsZ0JBSkE3QyxjQUNBNEM7Y0FJSixPQURJQzthQUNTO0dBQUM7R0FHZTtJQUE3QkMsNkJBWEFMO0lBWUFNLDhCQVpBTjs7YUFzQkVPLGtCQUFrQmxGLElBQUdEO0tBQ3ZCLE9BL1VGdkM7OEJBK1V1Qk87ZUFBVSxPQUEvQix3QkFBcUJBLFFBRERpQyxJQUFHRDtjQUNzQztJQUFDO2FBRzVEb0Ysc0JBQXNCbkYsSUFBR0Q7S0FDM0IsT0FuVkZ2Qzs4QkFtVnVCTztlQUFVLE9BQS9CLHdCQUFxQkEsUUFER2lDLElBQUdEO2NBQ3NDO0lBQUM7YUFHaEVxRixZQUFZekosR0FBRXFFLElBQUdEO0tBQ25COzBCQUF3RCxXQUQxQ3BFLEdBQUVxRSxJQUFHRDsyQkFDcUIsNkJBRHJCQTtLQUNKLE9BMUxmYzs0QkEwTHVCLDZCQURQYjtJQUNpRDtJQUduRCxTQUFacUY7SyxPQUpBRCxZQVJBRjs7SUFhZ0IsU0FBaEJJO0ssT0FMQUYsWUFKQUQ7O0lBVWM7S0FBZEksY0FkQUw7S0FtQklNLGlCQU5KRjs7U0FNSUcsc0JBREFDO0tBRUosT0FGSUEsV0FFYSx3QkFEYkQsYUFBQUE7Ozs0Q0FqSU5qRCxNQWlJTWdEO0tBSEpyRztJQWpCMkM7WUFDM0MrRjtZQUlBQzs7WUFRQUU7WUFDQUM7WUFDQUM7WUFFQXBHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVdFd0c7SUFDQUM7NEI7NEI7NEI7OzRCOzRCOzRCOztzQjs7NEI7NEI7NEI7NEI7NEI7NEI7O3NCOzs0QjtHQUpzQjs7OzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCOzRCOzRCOzRCOzRCOzRCOztzQjtzQjs7NEI7NEI7NEI7NEI7NEI7NEI7NEI7R0FxRUo7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBbEVsQkQ7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtJQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN0WUZDO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEMlhNQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0MvWE5MOzs7Ozs7U0FiQUg7OztTQWVBSztTQURBRDs7O1NBRUFFOzs7O1NBTkFMOzs7Ozs7OztTQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTRGdZTUs7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtJQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDLHNCQUFzQjtJQUN0QkMsc0JBQXNCO0lBRXRCQztNQUNGO0lBR0VDLDJCQUEyQjtJQUMzQkMsK0JBQStCO0lBQy9CQztNQUErQiw0QkFOL0JIO0lBT0FJO0lBMEI2QkMsNEJBekJEO0lBb0JZQztNQW5CWiw0QkFGNUJGO0lBR0FHO01BQTRCLDRCQUg1Qkg7SUFJQUkscUJBQXFCO0lBQ3JCQyxxQkFBcUI7SUFDckJDLHFCQUFxQjtJQUNyQkMseUJBQXlCLDJCQUZ6QkY7SUFJQUc7Z0JBS09DO2tCQUNEQztLQUdSLGtDQUhRQSxXQURDRDtJQUl5RDtJQUZyQjtLQUFBLE9BQUEsMkNBRnBDQTtLQUV3QixPQUFBO0tBQS9COzs7R0FGa0I7SUFBQSwrQkFMbEJEO0lBSUFHO0lBYXlDOUUsY0FPNUI7SUFBQTtnQkFYUHJKLFFBQ1IsT0FHMkNxSixjQUpuQ3JKLFdBQ29CO0dBRFg7SUFBQTsrQkFEeUIwTiw0QkFLQ3JFOztpQkFDbkNySixRQUNSLE9BRjJDcUosY0FDbkNySixXQUNvQjtHQURYO0lBQUE7K0JBRDBCcUosY0FBWm9FO0lBTTdCVztNQXRXQTFKO2lCQStXTXdGO0lBQ1IsT0FuRHdCOzthQWtEaEJBO2FBbkROZ0Q7YUFDQUM7R0FzRDZCO0dBS2hCO0lBVmJrQiw2Q0E3UEFySDtJQXVRRXNILGlCQUFXLDZCQXJEYmpCO0lBc0RFa0I7O2NBckRGakIsOEJBQ0FDOzs7O0tBb0RFaUI7S0FEQUM7S0FESXZFO0lBS1IsT0FBQSw0QkFMUUEsVUFDSnVFLFVBQ0FEOzs7MkNBREFGLGdCQUNBQzsyQ0F4UUZ2SDtJQXFRQTBIOzs7O0tBWUVGO0tBREFDO0tBREl2RTtJQUdSLE9BQUEsNEJBSFFBLFVBQ0p1RSxVQUNBRDs7OztzQ0E1QkZKLGdCQW5CQUQ7MkNBbE9Bbkg7SUE4UUEySDtpQkFRTXpFO0lBQ1IsT0E3RHVCOzthQTREZkE7YUE3RE4wRDthQUNBQztHQWdFNEI7R0FLZjtJQVZiZSxpREFyUkE1SDtJQStSRTZILGlCQUFXLDZCQXBFYmY7SUFxRUVnQjs7Y0FwRUZmLHdCQUpBSjs7OztLQXdFRWE7S0FEQUM7S0FESXZFO0lBR1IsT0FBQSw0QkFIUUEsVUFDSnVFLFVBQ0FEOzs7MkNBREFLLGdCQUNBQzsyQ0FoU0Y5SDtJQTZSQStIO1lBT0FDLGVBQWVDO0lBQ2pCLE9BRGlCQTs7Y0FmZkw7O2NBUUFHOztjQWZBSjs7Y0FUQUQ7c0JBUkFMOztHQTZDZ0I7WUFZaEJhLHVCQUF1QjlMO2tCQUNlNkw7S0FDdEMsS0FBRyxXQUZvQjdMLFFBQ2U2TCxJQUNpQztLQUF2QixXQXBCaERELGVBbUJzQ0M7WUFBQUE7Ozs7Ozs7Ozs7O0tBQ3JCO0lBQTBEO0lBRDdFLE9BMVhFNUo7YUEwWEY7R0FFaUI7R0FJakI7SUFERThKO01BTkFELHVDQU9xQiwwQkFFSztJQUcxQkU7TUFaQUYsdUNBYXFCLDJCQUVOO0lBR2ZHLFVBbEJBSCx1Q0FrQnlDLFNBQUk7SUFFN0NJO01BcEJBSjt3QkFxQnFCLG1DQUVZO2lCQUkzQmhQLEdBQ1IsT0FBQSw0QkFEUUEsR0FDRzs7SUFGVHFQO3NDQU5BRDtpQkFZTXBQO0lBQ0wsV0FBQSw0QkFES0E7SUFDTCxPQUFBO0dBQWE7O0lBRmRzUDtzQ0FYQUY7aUJBaUJNcFAsR0FDUixPQUFBLDRCQURRQSxHQUNHOztJQUZUdVA7c0NBOUJBTjtpQkFvQ01qUDtJQUNMLFdBQUEsNEJBREtBO0lBQ0wsT0FBQTtHQUFhOztJQUZkd1A7c0NBbkNBUDtZQXdDQVEsd0JBQXdCdEcsYUFBWTNDO0lBQ3RDO0tBQ1EsV0FBQSwyQkFGa0IyQztLQUVsQixtQkFBc0MsMkJBRlIzQzs7OztvREFBQUE7O29EQUFaMkM7Ozs7OztLQUl4Qjs7SUFLb0I7S0FBbEJ1RyxrQkFBa0Isa0NBVEl2RztLQVV0QndHLGtCQUFrQixzQ0FWZ0JuSjtJQVduQyxHQUFBLGdDQUZDa0osaUJBQ0FDOzs7b0RBVmtDbko7O29EQUFaMkM7Ozs7OztLQWF4Qjs7SUFLSyxPQXRsQlBySDs2QkFzbEJxQk87Y0FDbkIsT0FOQTs7dUJBS21CQTt1QkFUakJxTjt1QkFDQUM7YUFTb0U7R0FBQztZQUd2RUMsZ0JBQWdCekcsYUFBWTNDO0lBQzlCLEdBQUcsMkJBRGUyQyxhQUFZM0M7S0FFekIsT0FBQSw2QkFGYTJDO0lBR0UsV0FBQSxrQ0FIRkE7SUFHVixHQUFBLGlDQUhzQjNDO29CQUlHLDZCQUpIQTtLQUluQixPQS9lVGhDLFVBK2VXLDZCQUpLMkU7Ozs7b0JBdEJoQnNHLHdCQXNCZ0J0RyxhQUFZM0M7MEJBUWxCLDZCQVJrQkE7SUFPMUIsT0FwY0ZyQjsyQkFvY1UsNkJBUE1nRTtHQVViO1lBR0gwRyxzQkFBc0JDLFVBQVVqSTtJQUNsQyxXQXRYRUQsaUJBcVhzQmtJLFVBQVVqSTtJQUNsQyxPQXhqQkV6RTtHQXdqQjZEO1lBRzdEMk0sVUFBVUQ7SUFDWixPQW5qQkV0TTthQTBRQThGO3NCQXlTc0N6QixRQUN0QyxPQU5BZ0ksc0JBSVVDLFVBQzRCakksUUFDQTtHQUFDO1lBR3ZDbUksb0JBQW9CRjtJQUN0QixPQXhqQkV0TTthQTJRQStGO3NCQTZTdUMxQixRQUN2QyxPQVhBZ0ksc0JBU29CQyxVQUNtQmpJLFFBQ0Q7R0FBQztHQUc5QjtJQUFUb0ksU0FWQUYsVUE5VEEvRztJQXlVQWtILG1CQU5BRixvQkFuVUFoSDtZQTBVQW1ILG1CQUFvQnRJO0lBQVMsT0FoQjdCZ0ksc0JBMVRBN0csUUEwVW9CbkI7R0FBMkM7R0FDdkQsSUFBUnVJLFFBeGtCQWhOLElBcWtCQTZNO1lBS0FJLFFBQVFDO0lBQ1YsT0EzZEVoTDtzQkEyZGVJOzRCQUNOekQ7O2dCO3FDQU1DcU8sTUFDUixXQURRQSxNQUNNO3dEQVRSQTs7OEJBWUU1TSxNQUNSLFdBRFFBLE1BQ007Z0JBREMsV0F2WmpCQSxLQTRZZWdDOzs7ZUFJSixvQ0FIRnpEOzs7cURBNW1CVEE7O0dBdW5CaUI7R0FHVixJQUFQc08sT0FoQkFGLFFBTEFKO1lBdUJBTywwQkFBMkJDLFlBQVdDLFNBQVFDO2tCQUN2Q0M7S0FDRSxJQUFQQyxTQUFPLDJCQURGRCxNQURvQkg7bUJBR3BCSztNQUNUO09BQTJELE9BQUEsMEJBRnZERCxRQUNLQztPQUNGLE9BQUEsZ0NBSnNCTDtNQUl0QixPQUFBO0tBQTZFO0tBRHBFLFdBN1pkN0ksaUJBMFo4QytJLFVBR0UseUJBRDlDRTs7SUFFZ0Y7SUFIcEUsV0E5WmRuTixLQTZac0NnTjs7O1lBT3RDSywwQkFBMkJOLFlBQVcvSTtJQUNsQixXQUFBLGdDQURPK0k7SUFDUCxPQXBtQnBCck4sSUErTEFNLEtBb2FzQ2dFO0dBQzZCO1lBVW5Fc0osUUFBUUMsR0FBRVAsU0FBUUM7SUFDcEI7S0FBSUYsYUFETVE7S0FFVixPQXBCRVQsMEJBbUJFQyxZQURRQyxTQUFRQztJQUdWLE9Bam5CUnZOLFVBaW5CUSw4QkFGTnFOO0dBRWdEO1lBR2xEUyxRQUFRRCxHQUFFdko7SUFDWjtLQUFJK0ksYUFETVE7S0FFVixPQW5CRUYsMEJBa0JFTixZQURRL0k7SUFHRixPQXZuQlJ0RSxVQXVuQlEsNkJBRk5xTjtHQUVnRDtZQUdsRFUsVUFBVW5SLEdBQUVJLE1BQUtDO2tCQUNYMEg7S0FDUjtNQUFJQyxTQUFPLDJCQURIRDtNQUVKekgsTUFEQTBIO01BRUFsSSxTQUFTLGlEQUpNTzttQkFLa0NIO01BQUssV0FBTEEsSUFEakRKO01BQ3NELHdCQUh0RGtJO0tBR3VFO0tBQTNCLE9BQUE7b0RBTGxDNUgsTUFBS0MsUUFHZkM7SUFFd0U7SUFKN0QsV0E1YmJvRCxLQTJiVTFEOzs7R0FRRTtJQUFab1IsWUFSQUQsVUE3WEFuSTtJQXNZQXFJLGNBVEFGLFVBbElBaEM7SUE0SUFtQyxjQVZBSCxVQWxJQWhDO2lCQWlKQW9DO0ksU0FBQUEsZ0JBREssT0FBQTtrQkFFSUM7bUJBS0FDOzJCLG1CQUxBRCxHQUtBQyxTQUFBQSxHQUxBRDs2Q0ExZFQxSzs7U0FrZU00SyxpQkFUTkgsZ0JBQ1NDO21CQVNDRyxnQkFDUixPQUZJRCxRQUNJQyxtQkFDYztLQURHO01BQUEsT0FqVjNCbkgsNkJBZ1ZNa0g7Ozs7SUFMSixXQTNVRmxILDZCQXVVQStHOzs7T0FIQUssZ0RBdHFCQTNQO1lBMHJCQTRQLFVBQVU3UixHQUFFSSxNQUFLQzs7U0FDSmlCLGlCQUFORDttQkFDRDBHO01BQ1I7T0FBSUMsU0FBTywyQkFESEQ7T0FFSmpJLFNBQVMsaURBSk1PO29CQUt3Q0gsR0FBRWtCO09BQzNELFdBRDJEQSxJQUR6RHRCLG1CQUN1REksSUFEdkRKO09BRUYseUNBSEVrSTs7TUFHNEI7TUFEc0IsT0FBQTs7ZUFMeEM1SDtlQUFLQztlQUNWZ0I7ZUFBTUM7O0tBS2tCO0tBSmxCLFdBMWRic0csaUJBQUFBLGlCQXdkVTVILEdBQ0dzQixPQUFORDs7OzJDQXJCUHVROztHQTZCYztJQUFkRSxjQVRBRCxVQWxLQTFDO0lBNEtBNEMsY0FWQUYsVUFsS0ExQztZQStLRTZDLFNBRVVDO0ksZ0JBQ1JDO0tBRUosY0FHVUMsUUFBT0M7TUFDYjtPQUEyQixZQUNmO1dBQ0hDO09BQVEsT0FBUkE7TUFBaUI7TUFGQyxPQUFBLHlCQURyQkYsUUFBT0M7S0FHYTtLQUp0QixXQUFBLHdCQUxJSDtLQU1QLE9BQUEsNkJBTERDLG9CQVEyQjs7WUFHN0JJLFFBQVF0UyxHQUFHQztJQUNiLE9BdHJCQW1ELElBcXJCVXBELFlBQ0lvUyxPQUNaLFdBRlduUyxHQUNDbVMsUUFDWixPQURZQSxNQUVQO0dBQUM7R0FsQkc7SUFBQSxZQUNUSixVQWNBTTs7O09BdGdCRnpMO09BQ0FDO09BNkVBa0M7T0F3VUFpSDtPQUdBRztPQTNRQWpHO09BY0FRO09BY0FRO09BY0FlO09BY0FRO09BbUlBeUM7T0FrR0FvQjtPQXphQXhKO09BY0FyRDtPQWtDQVU7T0FDQWlFO09BQ0FoRDtPQWpEQTRCO09BRUFHO09BOGNBZ0s7T0FDQUM7T0FDQUM7T0ErQkFRO09BQ0FDO09BbHNCQXpQO09BNG9CQTBPO09BTUFFO09BeEJBVjtPQU9BTztPQS9pQkE1TTtPQVdBSztPQWxDQVg7Ozs7T0EzQkFSO09BNEJBUztPQUNBQzs7Ozs7T0F0QkFQO09BVkFMO09BQ0FDO09BNkNBYztPQURBRDtPQTdCQVI7T0FFQUU7O09BakRBMUI7T0FZQVM7T0FrS0F3RDtPQWhKQWhEO09BVkFMO09BcUpBbUQ7T0F6QkFWO09BRkFGO09BN0NBWDtPQTRDQVU7T0FRQUs7T0E4SkE4RDtPQUNBQztPQTBDQWE7T0FjQVE7T0FjQVE7T0FjQWU7T0FjQVE7T0F2REF0QztPQWNBUTtPQWNBUTtPQWNBZTtPQWNBUTtPQXZEQXRDO09BY0FRO09BY0FRO09BY0FlO09BY0FRO09BdERBckM7T0FjQVE7T0FjQVE7T0FjQWU7T0FjQVE7T0F6REF4QztPQWNBUTtPQWNBUTtPQWNBZTtPQWNBUTtPQWlMQThDO09BdEJBSDtPQWxDQVA7T0FOQUQ7T0FvQkFJO09BS0FDO09BS0FDO09BS0FDO09BM0RBVjtPQXhPQXRHO09BREFEO09BRUFFO09BR0FHO09BRUFDO09BUUFDO09BQ0FDO09BdEJBVDtPQWlXQTRIO09BQ0FDO09BWkFKO09BS0FDO09BVEFIO09BbUJBUTtPQTFZQTFJO09BRUFDO09BSUFFO09BaUJBTTtPQXpPQXpGO09BOUJGYjtPQUNBTTs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUVEQW1RLGNBTWUseUJBQWM7WUFMN0J6USxhO1lBQ0EwUSxhO1lBV0VwUCxJQUFJcEQsR0FBR0MsR0FBR3dTO0lBQVksZ0JBQVl6UTtLQUFxQixXQUFBLFdBQW5EaEMsR0FBNkQsV0FBdkR5UyxXQUF3QnpRO0tBQXFCLE9BQUEsb0NBQWhEL0IsR0FBd0U7R0FBQztZQUNoRmlELE9BQU9sRCxHQUFHQztJQUFJLGdCQUFZK0I7S0FBd0IsV0FBQSxXQUEzQ2hDLEdBQW1CZ0M7S0FBWixPQUFBLG9DQUFKL0IsR0FBb0Q7R0FBQztZQUUvRDRDLFdBQVc3QyxHQUFHQyxHQUFHd1M7SUFDbkIsZ0JBQVl6UTtLQUE0QixXQUFBLFdBRDNCaEMsR0FDcUMsV0FEL0J5UyxXQUNQelE7S0FBNEIsT0FBQSxvQ0FEeEIvQixHQUNnRDtHQUFDO1lBRy9EbUYsUUFBUUM7SUFBUyxnQkFBWXJEO0tBQTRCOzs7O2tDQUFqRHFEOzs7c0JBQUFBOzt1REFBQUE7c0RBQUFBOztVQUEwQixPQUFBLGlCQUFMckQ7O0tBQTRCLE9BQUEscUNBQTBCO0dBQUM7WUFFcEZzRCxZQUFZb047SUFDZCxJQUFRck47O01BQUFBOzRCQUEyQixPQUFBLFdBRHJCcU4sYUFGWnROLFFBR01DO0lBQ1IsT0FKRUQsUUFHTUM7R0FDTTtZQUdaeEIsS0FBS3FELE9BQU1DO0lBQ2I7S0FBTyxJQUFXd0wsZ0JBQUxDO21CQUdpQ0QsS0FBTyxXQUh4Q0MsS0FHaUNELEtBQWU7S0FBMUM7TUFBQSxPQUFBLFdBSk54TCxPQUNLd0w7aUJBR1o7bUJBRHdDQyxLQUFPLFdBQVBBLEtBRjVCRCxLQUUyQztLQUExQztNQUFBLE9BQUEsV0FIWnpMLE9BQ00wTDtNQUVULFdBQUU7S0FBRixPQUFBLG9DQUVFO0dBQUE7WUE2Qkp2QixZQWhCVXdCO0lBQ0YsSUFBTnZTLE1BQU0sY0FERXVTO0lBRVosU0FESXZTLEtBRUc7SUFFTTtLQUFQRixPQUFPLGFBTER5UztLQU1OeFMsU0FBUyxlQU5Id1M7S0FPTi9TLFNBQVMsaURBRFRPO2tCQUVzQnlTO0tBQ3hCLElBQUlDLFlBRG9CRCxVQUR0QmhUO21CQUd5REk7TUFDekQsSUFEeUQ4UyxNQUFBOVMsSUFEdkQ2UyxZQUN1RDdTLElBQUFBO01BQ3pELE9BQUEsc0JBWE0yUyxLQVVtREc7S0FDbkI7S0FEYyxPQUFBOztjQUxwRDVTO2NBQ0FDO2NBTEZDOztJQVV5QztJQUh0QixPQUFBLDhCQVBuQkE7R0FVMEM7R0FTNUMsU0FFSWdCLEtBQUEyUixHQUFBLE9BQUFBLEtBQUk7WUFESjVSLEtBQUE0UixHQUFBLE9BQUFBLEtBQUk7Z0JBQ0pBLEdBQUFDLEdBQUEsV0FBQUQsTUFBQUMsR0FBSTtHQUFKOztJQUFBQyw2QkFBQSxTQUFJLGtCQUFKN1I7Z0JBREEyUixHQUFBQyxHQUFBLFdBQUFBLEdBQUFELE1BQUk7R0FBSjs7SUFBQUcsNkJBQUEsU0FBSSxrQkFBSi9SO1lBUUZnUyxTQUFPQyxPQUFNVDtJQUNmO0tBSnVELE9BQUEsc0JBR3hDQTtLQUNYVSxXQUpvQyxjQUd6QlY7YUFFVCwwQkFGR1MsT0FDTEMsT0FFRztJQUVNO0tBQVBuVCxPQUFPLGFBTEV5UztLQU1UeFMsU0FBUyxlQU5Bd1M7S0FPVC9TLFNBQVMsaURBRFRPO0tBRTRCLFFBQUEsMEJBUnpCaVQsT0FDTEM7S0FPV2pTO0tBQU5EO2tCQUNzQ3lSO0tBQzNDLElBQUlDLFlBRHVDRCxVQUZ6Q2hUO0tBSUYsU0FBSTBULEtBQUt0VCxHQUFJLE9BQUpBLElBREw2UyxZQUNLN1MsSUFBQUEsVUFBb0M7bUJBQ2NtQixNQUFLQztNQUM5RDtPQUFnQyxRQUFBLDBCQWI3QmdTLFdBWXNEalMsTUFBS0MsT0FENURrUztPQUVXTDtPQUFOQztNQUNQLE9BQUEsc0JBZFNQLEtBYUZPLFFBQU1EO0tBQ0c7S0FGb0MsT0FBQTs7Y0FQcEQvUztjQUNBQztjQUVHZ0I7Y0FBTUM7O0lBTVE7SUFMUCxXQUFBLDBCQVRQZ1MsT0FDTEM7SUFRc0MsT0FBQTtHQUtsQjtZQU94QnpCLFlBTEVlO0lBQ0Y7Z0JBakJFUSxTQVBFRixRQXVCRk47S0FDbUIsV0FqQm5CUSxTQVJFRCxRQXdCRlA7SUFDbUIsT0FBQTtHQUE0RDtZQU1qRjlMLE9BQU9DO0lBQ1Q7S0FBTyxZQUNLO0tBSXlCO01BSDVCb0w7O01BRzRCLE1BQUEsV0FONUJwTCxTQUdBb0w7TUFHSCxNQUFBO01BREEsTUFBQTtLQUNBLE9BQUEsd0NBQXVEO0dBQUE7WUFHM0QxTyxLQUFLK1A7SUFDUCxPQXJGRW5PO3NCQXFGZW9PO2NBQ2Y7ZUFBTyxZQUNHO21CQUNFQyxpQkFBUkM7NEJBSThDRCxNQUFRLFdBSnREQyxNQUk4Q0QsTUFBb0I7ZUFBakQ7Z0JBQUEsTUFBQSxXQVBORCxRQUdIQzswQkFJSjs0QkFEeUNDLE1BQVEsV0FBUkEsTUFIckNELE1BR3lEO2VBQWhEO2dCQUFBLE1BQUEsV0FQaEJGLE9BSURHOzBCQUdJO2dCQURGLFVBQUUsOEJBRklEO2VBRU4sT0FBQSxtQ0FHRTthQUFBO0dBQUM7R0FHQTs7O0lBQVQxRCxTQXpHQTdNLElBNkZBTSxLQTFHRjZPO0lBdUhFbkMsUUExR0FoTixJQXlHQTZNO1lBRUE3TCxNQUFNcEU7SUFBSSxJQUFBO0lBQUEsT0EzR1ZvRCxJQTZGQU0sS0FjTTFEO0dBQTBEO1lBQ2hFcUksSUFBSXJJO0lBQUksa0I7SUFBK0IsT0E1R3ZDb0QsSUE0R0lwRCxpQkFBYTtHQUErQjtZQUNoRHFGLE9BQU9yRjtJQUFJOzs7b0NBQUE7S0FBQSxPQUFBOztJQUFrQyxPQTdHN0NvRCxJQTZHT3BEO0dBQWdEO0dBR3pEO0lBREV1UTtNQXRHQWpMO2lCQXVHZXVPO1NBQ2Y7VUFBTyxtQkFDWTtVQUdiO1dBRlFDO1dBRVIsTUF4Qk5wUSxLQW1CZW1RLFVBR0RDO1dBRVI7V0FERUMsY0FDMEMsOEJBQUtELEdBQUssV0FBTEEsR0FBZ0I7V0FFL0RFLGNBQWMsK0JBSlJGO1VBS1csT0FBQTswQ0FKakJDLGlCQUdBQyxrQkFDOEM7UUFBQTtZQUd0RC9NLE9BQU9DLE9BQU1DO0lBQ2YsZ0JBQVlGO0tBQ1YsU0FEVUE7TUFFa0I7T0FBcEIyTCxNQUZFM0w7O09BRWtCLE1BQUEsV0FIckJDLE9BR0MwTDtNQUFPLE9BQUE7O0tBQ2MsSUFBcEJELE1BSEMxTCxrQ0FHbUIsTUFBQSxXQUpoQkUsT0FJSndMO0tBQU8sT0FBQSx3Q0FBZ0Q7R0FBQztZQUdqRXZMLE9BQU9DLE1BQUtDO0lBQ2Q7S0FLYSx1QkFDSkMsZUFBTSxXQUFOQTtTQUNHQztLQUFPLFdBQVBBO0lBQWtCOztLQUx6Qix1QkFDT0QsZUFBTSxXQUFOQTtTQUNDQztLQUFPLFdBQVBBO0lBQWlCO0lBQ2pCLE9BeElYcEUsSUEySEE2RCxPQU9PSSxNQUFLQztHQVFnQjtZQUc1QmtKLDBCQUEyQkMsWUFBV3dELE9BQU1DO0lBQzlDLGdCQUFZQztLQUNFLElBQVJ6UCxRQUFRLG9DQURGeVA7O01BR2lDLElBQU1DO01BQzdDLE9BQUEsaUNBTHVCM0QsWUFDakIwRCxNQUd1Q0M7S0FDTztLQUR6QztNQUFBLE1BQUEsK0JBRlgxUDtNQUNBMlAsWUFDRjs7TUFLcUI7T0FBV3ZEO09BQUx3RDtPQUNsQkMsU0FBTyxpQ0FWUzlELFlBQ2pCMEQsTUFRbUJHO21CQUV5QkU7T0FFM0M7O1VBQUE7a0NBYmdCL0QsWUFVaEI4RCxRQUMyQ0MsYUFGcEIxRDtxQ0FPVDtXQURWcUQ7T0FBUSxXQUFSQTtNQUNjO01BTEYsVUFBQSxXQVhXRixPQVNUSztNQUVvQixPQUFBO0tBS2xCO0tBUDNCO01BQUEsTUFBQSwwQkFQQTVQO01BS0ErUCxjQUNGOztNQVlxQixJQUFXM0QsaUJBQUx3RDttQkFDb0JJO09BQ3hDLE9BQUE7c0NBdEJrQmpFLFlBQ2pCMEQsTUFtQm1CRyxLQUNvQkk7TUFDOEI7TUFEM0QsVUFBQSxXQXJCd0JSLFFBb0JWcEQ7TUFDVSxPQUFBO0tBQ3FDO0tBRjdFO01BQUEsTUFBQSwwQkFsQkFwTTtNQWdCQWlRLGNBQ0Y7S0FLbUIsT0FBQTs7a0JBckJqQk4sZUFJQUksaUJBV0FFLG1CQU13RDtHQUFDO1lBRzdENUQsMEJBQTJCTixZQUFXZ0Q7SUFDeEMsZ0JBQVlVO0tBQ0MsSUFBUHpRLE9BQU8sZ0NBRER5UTtrQkFHcUMzUztNQUMzQyxPQUFBLGdDQUx1QmlQLFlBQ2pCMEQsTUFHcUMzUztLQUNVO0tBRDFDO01BQUEsTUFBQSwrQkFGWGtDO01BQ0FrUixZQUNGO2tCQUt5QnBUO01BQ1QsSUFBUCtTLFNBQU8sZ0NBVlM5RCxZQUNqQjBELE1BUWlCM1M7bUJBRTJCcVQ7T0FDN0MsT0FBTSxnQ0FaWXBFLFlBVWhCOEQsUUFDMkNNOzs7aUJBSXRDO3dDQWZXcEUsWUFVaEI4RCxRQUMyQ007TUFJc0I7TUFKakQsVUFBQSxXQVhXcEIsT0FTWGpTO01BRXNCLE9BQUE7S0FJNEI7S0FOekU7TUFBQSxNQUFBLDBCQVBBa0M7TUFLQW9SLGNBQ0Y7S0FTbUIsT0FBQSxrQ0FkakJGLGVBSUFFLGtCQVUyQztHQUFDO1lBR2hEQyxNQUFNZCxPQUFNQztJQUNkLGdCQUFZYTtLQUNWO01BQUl0RSxhQUFhLHdCQURQc0U7TUFFVjtNQUdPLE1BQUEsOEJBSkh0RTtNQUNBelEsSUEvTEpvRCxJQTZJQW9OLDBCQWlESUMsWUFGRXdELE9BQU1DO0tBU1osT0FOSWxVLEVBRk0rVSxPQVFJO0dBQUM7WUFHZkMsTUFBTXZCO0lBQ1IsZ0JBQVl1QjtLQUNWO01BQUl2RSxhQUFhLHdCQURQdUU7TUFFVjtNQUdPLE1BQUEsNkJBSkh2RTtNQUNBelEsSUEzTUpvRCxJQXdLQTJOLDBCQWtDSU4sWUFGRWdEO0tBU04sT0FOSXpULEVBRk1nVixPQVFJO0dBQUM7Ozs7T0E5TmpCekM7T0FBQUE7T0FBQUE7T0FBQUE7T0FzSEV0QztPQUNBRztPQXZIRm1DO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNEhFaEM7T0EzQkF4SjtPQVNBckQ7T0FjQVU7T0FDQWlFO09BQ0FoRDtPQS9GQXhCO09BNkdBb0Q7T0FPQUc7T0FsRkFpSztPQUFBQTtPQUFBQTtPQWtDQVM7T0FBQUE7T0EwR0FpRDtPQVlBQztPQTNEQXhFO09BMkJBTztPQXhLQTNOO09BQ0FGO09BRUFMO09BTUF5QztPQUZBRjtPQW5CRnREO09BQ0EwUTs7OztFOzs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNtQkt5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXJCSCxTQUFBdlU7SUFBQSxZQUNFO0lBQ0EsSUFBQXdVLHFCQUFBQyxXQUFBLHNCQUFBRDtJQUFBLHdCQUFBQztHQUNrQjtHQUpSLGVBQ1p6VTtHQXFCRixTQUlJd0YsTUFBQStNLEdBQUEsT0FBQUEsS0FBSztZQURMbUMsYUFBQW5DLEdBQUEsT0FBQUEsS0FBWTtZQURab0MsV0FBQXBDLEdBQUEsT0FBQUEsS0FBVTtZQURWcUMsS0FBQXJDLEdBQUEsT0FBQUEsS0FBSTtnQkFHSkEsR0FBQUMsR0FBQSxXQUFBRCxNQUFBQSxNQUFBQSxNQUFBQyxHQUFLO0dBQUw7O0lBQUFxQyw4QkFBQSxTQUFLLG1CQUFMclA7Z0JBREErTSxHQUFBQyxHQUFBLFdBQUFELE1BQUFBLE1BQUFDLEdBQUFELE1BQVk7R0FBWjs7SUFBQXVDOzt1QkFBQSxTQUFZOzs7T0FBWko7O2dCQURBbkMsR0FBQUMsR0FBQSxXQUFBRCxNQUFBQyxHQUFBRCxNQUFBQSxNQUFVO0dBQVY7O0lBQUF3QzswQkFBQSxTQUFVLHdCQUFWSjtnQkFEQXBDLEdBQUFDLEdBQUEsV0FBQUEsR0FBQUQsTUFBQUEsTUFBQUEsTUFBSTtHQUFKOztJQUFBeUMsNkJBQUEsU0FBSSxrQkFBSko7WUFEQ0s7SUFBQUMsVUFBQUMsZ0JBQUFDLGtCQUFBQyxXQUFBQztJQUFBO0tBQUEsUUFBQSxXQUFBSixVQUNERixRQURDTTtLQUFBQztLQUFBQztLQUFBLFVBQUEsV0FBQUwsZ0JBRURKLGNBRkNRO0tBQUFFO0tBQUFDO0tBQUEsVUFBQSxXQUFBTixrQkFHRE4sZ0JBSENXO0tBQUFFO0tBQUFDO0tBQUEsVUFBQSxXQUFBUCxXQUlEUixTQUpDYztLQUFBRTtLQUFBQztJQUFBO3FCQUFBMVI7YUFBQTtjQUFBd1EsT0FBQSxXQUFBWSxVQUFBcFI7Y0FBQXVRLGFBQUEsV0FBQWUsZ0JBQUF0UjtjQUFBc1EsZUFBQSxXQUFBa0Isa0JBQUF4UjtjQUFBb0IsUUFBQSxXQUFBc1EsV0FBQTFSO2FBQUEsV0FBQXdRLE1BQUFELFlBQUFELGNBQUFsUDtZQUFDO1lBQURxUTtHQUFDO1lBQUR6VSxPQUFBd1QsTUFBQUQsWUFBQUQsY0FBQWxQLE9BQUEsV0FBQW9QLE1BQUFELFlBQUFELGNBQUFsUDtHQUFDO1lBQUQ5QyxJQUFBd1MsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBQSxXQUlEUjtLQUpDLE9BQUEsV0FBQU8sa0JBR0ROO0tBSEMsT0FBQSxXQUFBSyxnQkFFREo7SUFGQyxXQUFBLFdBQUFHLFVBQ0RGO0dBREU7WUFBRGUsS0FBQWIsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBLFdBQUFILFVBQ0RGO0lBREMsV0FBQUcsZ0JBRURKO0lBRkMsV0FBQUssa0JBR0ROO0lBQ0EsT0FBQSxXQUpDTyxXQUlEUjtHQUpFO1lBQURoVixLQUFBSixNQUFBeVYsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBLE9BSUQ7YUFKQ0E7YUFBQTtlQUFBRDtlQUFBO2lCQUFBRDtpQkFBQSxXQUFBRCxVQUFBelYsTUFDRHVWO2lCQUNBRDtlQUNBRDthQUNBRDtHQUpFO1lBQURtQixTQUFBQztJQUFBO0tBQUEsV0FBQSxXQUFBQSxXQUlEcEI7S0FKQyxXQUFBLFdBQUFvQixXQUdEbkI7S0FIQyxXQUFBLFdBQUFtQixXQUVEbEI7SUFGQyxXQUFBLFdBQUFrQixXQUNEakI7R0FERTtZQUFEa0IsUUFBQWhCLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQUgsVUFDREY7S0FEQyxjQUFBLFdBQUFHLGdCQUVESjtLQUZDLGNBQUEsV0FBQUssa0JBR0ROO0lBSEMsY0FJRCxXQUpDTyxXQUlEUjtHQUpFO1lBQURzQixPQUFBakIsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBSCxVQUNERjtLQURDLGVBQUEsV0FBQUcsZ0JBRURKO0tBRkMsZUFBQSxXQUFBSyxrQkFHRE47SUFIQyxxQkFJRCxXQUpDTyxXQUlEUjtHQUpFO1lBQUR1QixRQUFBbEIsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsV0FBQSxXQUFBQSxXQUlEUjtLQUpDLFdBQUEsV0FBQU8sa0JBR0ROO0tBSEMsV0FBQSxXQUFBSyxnQkFFREo7SUFGQyxXQUFBLFdBQUFHLFVBQ0RGO0dBREU7WUFBRHFCO0lBQUFKLFFBQUFmLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQSxXQUFBSCxVQUNERixRQURDaUIsUUFBQUE7SUFBQSxXQUFBZCxnQkFFREosY0FGQ2tCLFFBQUFBO0lBQUEsV0FBQWIsa0JBR0ROLGdCQUhDbUIsUUFBQUE7SUFJRCxPQUFBLFdBSkNaLFdBSURSLFNBSkNvQixRQUFBQTtHQUFDO1lBQURwVjtJQUFBb1YsUUFBQXhXLE1BQUF5VixVQUFBQyxnQkFBQUMsa0JBQUFDO2VBQUFZLGtCQUFBQSxrQkFBQUE7SUFBQSxPQUFBO2FBQUFaO2FBQUE7ZUFBQUQ7ZUFBQTtpQkFBQUQ7aUJBQUEsV0FBQUQsVUFBQXpWLE1BQ0R1VixRQURDaUIsUUFBQUE7aUJBRURsQjtpQkFGQ2tCOztlQUdEbkI7ZUFIQ21COzthQUlEcEI7YUFKQ29COzs7WUFBQUs7SUFBQUwsUUFBQWYsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBSCxVQUNERixRQURDaUIsUUFBQUE7S0FBQTs7VUFBQSxXQUFBZCxnQkFFREosY0FGQ2tCLFFBQUFBOztLQUFBOztVQUFBLFdBQUFiLGtCQUdETixnQkFIQ21CLFFBQUFBOztJQUFBLGNBSUQsV0FKQ1osV0FJRFIsU0FKQ29CLFFBQUFBO0dBQUM7WUFBRE07SUFBQU4sUUFBQWYsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBSCxVQUNERixRQURDaUIsUUFBQUE7S0FBQTtlQUFBLFdBQUFkLGdCQUVESixjQUZDa0IsUUFBQUE7S0FBQTtlQUFBLFdBQUFiLGtCQUdETixnQkFIQ21CLFFBQUFBO0lBQUEscUJBSUQsV0FKQ1osV0FJRFIsU0FKQ29CLFFBQUFBO0dBQUM7WUFBRE87SUFBQVAsUUFBQWYsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsV0FBQSxXQUFBQSxXQUlEUixTQUpDb0IsUUFBQUE7S0FBQTs7UUFBQSxXQUFBYixrQkFHRE4sZ0JBSENtQixRQUFBQTs7S0FBQTtXQUFBLFdBQUFkLGdCQUVESixjQUZDa0IsUUFBQUE7SUFBQSxXQUFBLFdBQUFmLFVBQ0RGLFFBRENpQixRQUFBQTtHQUFDO1lBQUQvUztJQUFBK1MsUUFBQWYsVUFBQUMsZ0JBQUFDLGtCQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBQSxXQUlEUixTQUpDb0IsUUFBQUE7S0FBQSxPQUFBLFdBQUFiLGtCQUdETixnQkFIQ21CLFFBQUFBO0tBQUEsT0FBQSxXQUFBZCxnQkFFREosY0FGQ2tCLFFBQUFBO0lBQUE7WUFBQSxXQUFBZixVQUNERixRQURDaUIsUUFBQUE7Ozs7R0FBQztZQUFEUSx1QkFBQVI7SUFBQSw2QkFBQUE7SUFBQTtHQUFDO0dBQUQ7OztPQUFBSTtPQUFBeFY7T0FBQXlWO09BQUFDO09BQUFDO09BQUF0VDtPQUFBdVQ7WUFBTHpWO0lBQUE7S0FaNEIwVjtLQWV4QkM7S0FEQUM7S0FEQUM7S0FiWTVXO0tBQ1MsUUFBQSw4QkFER3lXO0tBQ1pJO0tBQVJDO0tBQ0FDLFdBQVMsMEJBRFRELFFBRFE5VztLQVloQmdYO0tBVFFDO09BQ0ksNkJBSElKOzs7S0FlWkssY0FSVSxzQkFOTkgsVUFDQUU7S0FTUkUsa0NBSUlELGVBSkpGO0tBR0lJLFVBQUEsc0JBQUFWO0tBSEpXLGtDQUdJRCxlQUhKRDtLQUVJRyxVQUFBLHNCQUFBWDtLQUZKWSxrQ0FFSUQsZUFGSkQ7S0FDSUcsVUFBQSxvQkFBQVo7S0FESmEsa0NBQ0lELGVBREpEO0lBQUEsV0FBQUU7R0FNNEI7R0FPTTtJQUFBLE1BQUE7SUFKaENDOzZCQUlRO0lBSVJDOzBCO1lBb0RBQyxZQUFhdFksR0FBSWtHLFVBQTBDcVM7SUFDN0QsR0FEbUJyUyxTQUFTQyxNQUFURCxRQUFBc1MsU0FBU3JTLGNBQVRxUyxTQTVEakJKO0lBNkRGLFlBRHlEL1IsZ0JBUi9Cb1MsV0FRK0JwUyxnQkFSL0JvUztJQXpDcEIsWUFpRGFEOztLQS9Dc0M7TUFBekN4STtNQUF5QyxNQUFBLHlCQUF6Q0E7TUF3Q1o1TixTQXhDcUQ7O29DQUx2RGlXOzs7Z0JBQUFBOzs7aUJBQUFBOzs7Z0RBQUFBOztTQTZDRWpXLFNBekNpRDs7O0tBS1YsSUFBYXNXLGtDQUFQelM7UUEyQzlCdVMsYUEzQ3FDRSx1QkFFNUM7S0FFRCxZQUFBLDhCQUpzQ3pTOzs4QkFLOUIwUyw4QkFBTjNXO01BQ047a0JBRE1BLFVBQU0yVyxpQkFMcUNEOzs7OztnREFBQUE7O3VEQTJDckNGOzs7Ozs7O0lBL0IwQjtJQVpGO0tBQUEsTUFBQSxrQ0EyQ3hCQTtLQUpoQjtLQUNtQjtPQUFBOzs7a0JBQUt4VztVQUFRLE9BSnRCO21EQU9nRHVXLFdBSGxDdlcsTUFKdkJJO1NBSXlFO0tBRjNFLE1BQUEsK0JBSHdCcVc7S0FTdEJHLFdBTEY7SUFNRixPQUFBLFdBRmU1WSxHQUNYNFk7R0FDTTtZQUdSelIsT0FBaUJuSCxHQUFJa0csVUFBMEM4SztJQUNqRSxHQUR1QjlLLFNBQVNDLE1BQVRELFFBQUFzUyxTQUFTclMsY0FBVHFTLFNBakVyQko7SUFrRUYsWUFENkQvUixnQkFBWG9TLFdBQVdwUyxnQkFBWG9TO0lBRU4sVUFGcUJ6SCxNQUVyQixVQUZNeUgsV0FFZCxVQUZiRDtXQUxyQkY7c0JBTzJETTtrQ0FFUEM7ZUFDMUMsWUFBQSxXQUxPN1ksR0FJbUM2WTtrQ0FFckM7bUJBQ0hDO2VBQVMsZUFIK0JELE9BR3hDQztjQUE2QjtjQUh2QyxjQUFBLDZCQUZ5REY7bUNBT2hEO2NBRVQ7O2VBM0N5Q0c7ZUFBTkM7ZUFEdkJwRixXQWlDaUQ1QztlQWhDbkRpSSxpQkFnQ1NUO2VBaENLVTtpQkFlWCx5Q0FoQkR0RixVQUN1Qm9GO2VBQXpCN0QsZUFBQThEO2VBQWNFLGFBQUFEO2VBNENwQkwsUUE1QytCRztlQTRDeEJGLFFBNUM4QkM7Y0FDM0M7d0JBRFk1RDtnQkFJVjtpQkFBSUksaUJBSk1KO2lCQUtILFFBQUEsOEJBTGlCZ0U7O2lCQVFkOztrQkFSY0M7a0JBQVdDO2tCQVF6QixVQUFBLFdBd0JLclosR0FoQ29CcVo7OzttQkFBekJsRSxlQUlOSTttQkFKb0I0RCxhQUFBQzs7O2lCQVdEO2tCQVhrQkU7a0JBQWpCQztvQkFXRDtvREFaWDNGLFVBQ3VCeUY7a0JBQXpCbEUsZUFJTkk7a0JBSm9CNEQsYUFBQUk7a0JBNENwQlYsUUE1QytCUTtrQkE0Q3hCUCxRQTVDOEJROzs7O2VBNkN6QyxlQURJVCxPQUFPQzs7YUFDUzs7OztHQUFDO1lBR3ZCVSxJQUFjeFosR0FBR3dZLFFBQVFDLFVBQWlCZ0I7YUFDeENDLElBQUUzWDt5QkFDeUUsT0FBN0UsV0FGYy9CLEdBQ1YrQixHQUM0RTtLQUE5QyxjQUFBO0tBQWdDLE9BQUE7SUFBZTtJQUU3RSxZQXBCSm9GLE9BaUJFdVMsS0FEZWxCLFFBQVFDLFVBQWlCZ0I7dUJBS2pDOzs7S0FDS1g7S0FBUEQ7MERBQU9DOzJDQU40QlcsTUFNbkNaOzs7Ozs7OztZQUtQYyxnQkFBaUIzWixHQUFHd1ksUUFBUUMsVUFBU0Y7YUFDbkNtQixJQUFFM1g7eUJBQWlDLE9BQTdCLFdBRFMvQixHQUNiK0IsR0FBb0M7S0FBZCxPQUFBO0lBQWU7SUFDM0MsVUFsQ0V1VyxZQWlDRW9CLEtBRGtCbEIsUUFBUUMsVUFBU0Y7SUFFdkMsT0FBQTtHQUE2RDtZQUczRHFCLFFBQVM1WixHQUFHd1ksUUFBUUMsVUFBU29CO2FBQzNCSCxJQUFFM1g7eUJBQ29FLE9BQXhFLFdBRlMvQixHQUNMK0IsR0FDdUU7S0FBOUMsY0FBQTtLQUFnQyxPQUFBO0lBQWU7SUFFOUUsVUFwQkV5WCxJQWlCRUUsS0FEVWxCLFFBQVFDLFVBQVNvQjtJQUkvQixPQUFBO0dBQW9EOzs7Ozs7UUExR2hENVQ7UUFEQWtQO1FBREFDO1FBREFDOztTQURDTDtTQUlETTtTQURBQztTQURBQztTQURBQztTQURDblY7U0FBQW9WO1NBQUE3VDtTQUFBc0I7U0FBQXFUO1NBQUFHO1NBQUFDO1NBQUFDO1NBQUFKOztRQUFMaFY7T0FTRTJXO09BaUZBb0I7T0FnQkFJO09BaENBelM7T0FMQW1SO09BZ0NBcUI7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDNUhBRyxNQUFNL1osR0FBR0M7SUFBSSxPQUFPOztzQkFBSytCLEdBQUdDLE1BQU1DO2NBQVEsT0FBQSxvQkFBcENsQyxHQUE4QyxXQUEzQ0MsR0FBZ0IrQixJQUFHQyxNQUFNQzthQUFtQztHQUFDO1lBQ3RFOFgsYUFBYS9aO0lBQUksT0FBTzs4QkFBSytCLFVBQVdFLE1BQVEsT0FBQSxXQUFuQ2pDLEdBQTJCaUMsTUFBWEYsR0FBMkI7R0FBQztZQUN6RG9ELFFBQVFDO0lBQVMsT0FBTzs7c0JBQUtyRCxHQUFHQyxNQUFNQztjQUFRLHVCQUF0Q21EOzs7eUJBQUFBOzt3REFBQUE7eURBQUFBOztjQUFzQyxPQUFBLHlCQUFqQnJELEdBQUdDLE1BQU1DO2FBQTRDO0dBQUM7WUFFbkZvRCxZQUFZMlU7SUFDZCxJQUFRNVU7O01BQUFBOzRCQUFvQixPQUFBLFdBRGQ0VSxNQUZaN1UsUUFHTUM7SUFDUixPQUpFRCxRQUdNQztHQUNNO0dBSUw7SUFBUHlCLE9BVEFrVDtJQVVBaFIsU0FWQWdSO0lBV0E3UCxRQVhBNlA7SUFZQXJQLFFBWkFxUDtJQWFBN08sUUFiQTZPO0lBY0E5TixRQWRBOE47SUFlQXROLFlBZkFzTjtJQWdCQTdLLFVBaEJBNks7SUFpQkEvSixTQWpCQStKO0lBa0JBekosT0FsQkF5SjtJQW1CQTVJO01BbkJBNEk7UUFtQnlCO0lBQ3pCM0k7TUFwQkEySTtRQW9CMkI7SUFDM0IxSTtNQXJCQTBJO1FBcUIyQjtJQUMzQmxJO01BdEJBa0k7UUFzQjJCO0lBQzNCakk7TUF2QkFpSTtRQXVCMkI7SUFDM0I1SixRQXpCQTJKLE1Ba0JBOUo7WUFTQWhKLE9BQU9DLE9BQU1DO0lBQ2YsT0FBTzs7c0JBQUtGLFFBQVFoRixNQUFNQztjQUN4QixTQURVK0U7bUJBRUYyTCxNQUZFM0w7ZUFFbUMsT0FBQTtpQ0FIdENDLE9BR0MwTCxLQUZVM1EsTUFFMkIsc0JBRnJCQzs7a0JBR2Z5USxNQUhDMUw7Y0FHb0MsT0FBQTtnQ0FKakNFLE9BSUp3TCxLQUhTMVEsTUFHNEIsc0JBSHRCQzthQUc0QztHQUFDO1lBR3JFa0YsT0FBT0MsTUFBS0M7SUFDZDtLQUE2Qix1QkFDdEJDLGVBQU0sV0FBTkE7U0FDR0M7S0FBTyxXQUFQQTtJQUFrQjtJQUZDLE9BbkMzQnVTLE1BMkJBOVMsT0FPT0ksTUFBS0M7R0FHYztZQUcxQnpELEtBQUtxRCxPQUFNQztJQUNiLE9BQU87OzZCQUFpQmxGLE1BQU1DO2NBQXZCO2VBQVd5UTtlQUFMQztlQUNQc0gsU0FBTyxvQkFGTmhULE9BQ00wTCxLQUFXM1EsTUFBTUM7ZUFFeEJpWSxTQUFPLG9CQUhBaFQsT0FDS3dMLEtBQU0xUSxNQUNsQmlZO2NBRUosT0FESUM7YUFDQztHQUFBO1lBR0xwVCxPQUFPQztJQUNUO0tBQWlDLFlBQ3JCO1NBQ0hvTDtLQUFTLFdBQVRBO0lBQXNCO0lBRkUsT0FoRC9CMkgsTUEyQkE5UyxlQW9CT0Q7R0FHc0I7WUFHN0J0RCxLQUFLK1A7SUFDUCxPQUFPOztzQkFBSy9QLE1BQU16QixNQUFNQztjQUN0QjtlQUE0QyxNQUFBLHlCQUR0QkE7ZUFDbEJHLFNBQVM7ZUFDVHdGLFNBQVMseUJBRkhuRTtlQUlSO2lCQUFBO3NEQUZFbUUsYUFBQUE7ZUFDQTNCO2lCQUZTLGdEQURHakUsTUFDWkk7MkJBTTJESCxNQUFLVixLQUFJUztlQUN0RSxPQUE4QjtpQ0FUM0J3UixPQVErRGpTLEtBQUlTLE1BQ3hDLHNCQUQrQkM7Y0FDVDtjQUR0QixVQUFBLHNCQVBWQTtjQU9vQyxPQUFBLDBCQVBoRHdCLE1BR053QzthQUttRDtHQUFDO1lBR3hEOUIsTUFBTXBFLEdBQUksMEJBQUEsT0FqRVYrWixNQXFEQXJXLEtBWU0xRCxTQUFtQztZQUN6Q3FJLElBQUlySSxHQUFJLE9BbEVSK1osTUFrRUkvWixpQixpQkFBd0I7WUFDNUJxRixPQUFPckY7SUFBSSxPQW5FWCtaO2FBbUVPL1o7Ozs7NkNBQUk7Y0FBQSxPQUFBOztHQUFxQjtZQUVoQ3NDLEdBQUdDLEtBQUlDO0lBQ1QsT0FBTzs7c0JBQUt2QyxHQUFHZ0MsTUFBTUM7Y0FDbkI7ZUFBNEMsTUFBQSx5QkFEekJBO2VBQ2ZHLFNBQVM7ZUFJUSxNQUFBO2VBSGpCNkQ7aUJBR0Y7d0RBTFdqRSxjQUNUSTsyQkFNK0JILE1BQUtEO2VBQzlCO2dCQUFKRDtrQkFBSTtvREFUUE8sS0FRcUNOLE1BTnBDSTtlQVFGLE9BQUEsb0JBVktHLEtBVU8sV0FUSnZDLEdBUUorQixJQURrQ0MsTUFBTEM7Y0FFSjtjQUZELE9BQUEsMEJBTDFCZ0UsT0FGZWhFO2FBU2E7R0FBQztZQUdqQ2tZLFNBQVNDLFNBQVFDO0lBQ25CO3NCO1dBbkZFUCxNQXFEQXJXLEtBYkFHLEtBMENTd1csU0FBUUM7R0FDdUQ7WUFHeEVDLFNBQVNDO0lBQVU7SUFBTSxPQXRGekJULE1BcURBclcsS0FpQ1M4VztHQUFtRTtZQUU1RXpGLE1BQU1zRixTQUFRQztJQUNoQjtJQUFNLE9BekZKUCxNQWtGQUssU0FNTUMsU0FBUUM7R0FDaUQ7WUFHL0R0RixNQUFNd0Y7SUFBVTtJQUFNLE9BNUZ0QlQsTUFzRkFRLFNBTU1DO0dBQWtFOzs7Ozs7T0FsRnhFMVQ7T0FDQWtDO09BT0FpSDtPQU9BRztPQWJBakc7T0FDQVE7T0FDQVE7T0FDQWU7T0FDQVE7T0FDQXlDO09BRUFvQjtPQTRCQXhKO09BTUFyRDtPQVlBVTtPQUNBaUU7T0FDQWhEO09BM0JBeEI7T0FiQW9EO09BT0FHO09BZEFnSztPQUNBQztPQUNBQztPQUNBUTtPQUNBQztPQTZDQXpQO09BbUJBeVM7T0FJQUM7T0FWQW9GO09BSUFHO09BckZBUDtPQURBRDtPQUlBelU7T0FGQUY7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7OztHQ09hOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDNEhYcVY7SUF1RkFDO0lBOEZBQztJQXNGQUM7SUFxSklDO0lBa0ZBQztJQWtIQUM7SUF3REFDO0lBb0lKQztJQXdEQUM7SUFrR0FDO0lBNkNBQzs7SUFLQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTFsQ0ZDLGtCQUFtQmIsVUFBVWMsV0FBVUM7SUFDekM7S0FBdUUsT0FBQSxXQUR4Q0QsV0FBVUM7O0tBQ2xCLE9BQUEsdUJBREZmOzs7R0FDZ0U7WUFJbkZnQixlQUNHQyxNQUFNQyxRQUFRQyxNQUFLSjtJQUFLLE9BQUssV0FBN0JFLE1BQTZCLFdBQXZCQyxRQUFhSCxHQUFMSTtHQUE4QjtZQUkvQ0MsYUFXR0gsTUFBTUMsUUFBUUMsTUFBTUUsT0FBT3JCLFVBQVVjLFdBQVVDO0lBQzVDLElBQUpPLElBakJGTiw4QixlQWdCU0UsUUFBUUMsTUFBaUNKO0lBRWpELE9BQUEsV0FGc0JNLE9BQTJCTixHQUNoRE87Y0FDYyxXQUZiTCxNQUNESztjQXRCRlQsa0JBcUI4QmIsVUFBVWMsV0FBVUM7R0FFa0I7WUFJcEVRLGFBSUdDLFlBQVlDLGFBQWFDLE9BQU1YO0lBQUssT0FBQSxXQUF4QlUsYUFBb0MsV0FBaERELFlBQStCVCxHQUFOVyxRQUFBQTtHQUFpRDtZQUk3RUM7SUFXR0gsWUFBWUMsYUFBYUMsT0FBT0wsT0FBT3JCLFVBQVVjLFdBQVVDO0lBQ3hELElBQUpPLElBcEJGQyxhQW1CR0MsWUFBWUMsYUFBYUMsT0FBa0NYO0lBRTdELE9BQUEsV0FGa0NNLE9BQTJCTixHQUM1RE87Y0FBQUE7Y0EvQ0ZULGtCQThDMENiLFVBQVVjLFdBQVVDO0dBRUM7WUFHL0RhLHFCQUFzQkMsZUFBZUMsTUFBTTlCLFVBQVVjLFdBQVVDO0lBQ2pFLE9BQUcsV0FEcUJjLGVBQXlDZCxHQUExQmU7Y0FBMEJmO2NBbkQvREYsa0JBbUQyQ2IsVUFBVWMsV0FBVUM7R0FDVztZQUkxRWdCLGNBQWNDLE1BQUtDO0lBQ3JCLE1BQUE7dURBRGdCRCxPQUFLQztHQUN3Qzs7OztZQU16REMsU0FBVW5CLEdBQ1osY0FEWUEsSUFFRyw0QkFGSEEsR0FHUTtZQUlsQm9CLFNBQVVwQjtJQUNaLGNBRW1CLG9CQUhQQSxLQUVHLG9CQUZIQTtHQUc0QjtHQWlCMUMsSUFLUXFCLHdCQUxSQywyQkFBQUM7R0FBQSxTQUFBQyxLQUFBeEIsR0FBQSxPQUFBLFdBQUF1QixNQUFBdkIsR0FBeUU7O0lBQXpFeUI7SUFBQUM7b0RBS1FMLFNBTFJLOzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBYjtJQU1BTjtJQUNBQztJQUNBQztJQUVBWjtJQVRBOEI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFRQUMsTUFBTWxDLEdBQUksT0F2RlpRLGFBZ0ZFQyxZQUNBQyxhQUNBQyxPQUtNWCxHQUFrRDtZQUV4RG1DLElBQUluQztJQUFJLE9BakZWWTthQXdFRUgsWUFDQUMsYUFDQUMsY0FDQTFCLFVBQ0FjLFdBS0lDO0dBQTRFO1lBS2hGb0Msa0JBQWtCcEMsR0FBSSxPQVB0QmtDLE1BT2tCbEMsR0FBVztZQUM3QnFDLGdCQUFnQnJDLEdBQUksT0FOcEJtQyxJQU1nQm5DLEdBQVM7WUFDekJzQyxZQUFZdEMsR0FBSSxPQUFKQSxFQUFLO1lBR2pCdUMsZUFBZXZDLEdBQUksT0FabkJrQyxNQVllbEMsR0FBVztZQUMxQndDLGFBQWF4QyxHQUFJLE9BWGpCbUMsSUFXYW5DLEdBQVM7WUFFdEJ5QyxlQUFlekM7SUFBbUMsV0FsRWxEbUIsU0FrRWVuQjtJQUFVLE9BZnpCa0MsTUFleUI7R0FBNkM7WUFJdEVRLGFBQWExQztJQUErQixXQXRFNUNtQixTQXNFYW5CO0lBQVEsT0FqQnJCbUMsSUFpQnFCO0dBQTJDO1lBQ2hFUSxlQUFlM0MsR0FBSSxPQXBCbkJrQyxNQW9CeUIsNEJBQVZsQyxJQUFxQztZQUNwRDRDLGFBQWE1QyxHQUFJLE9BbkJqQm1DLElBbUJxQiwwQkFBUm5DLElBQWlDO1lBQzlDNkMsZUFBZTdDLEdBQUksT0F0Qm5Ca0MsMEJBc0JlbEMsSUFBcUM7WUFDcEQ4QyxhQUFhOUMsR0FBSSxPQXJCakJtQyxJQXFCcUIsMEJBQVJuQyxJQUFpQztZQUc5QytDLGNBQWMvQyxHQUFJLE9BMUJsQmtDLE1BMEJjbEMsR0FBVztZQUN6QmdELGFBQWFoRCxHQUFJLE9BekJqQm1DLElBeUJhbkMsR0FBUztHQUdDO0lBQXZCaUQ7TUFBdUIsMENBMUN2QnBCLFdBQ0FDO0lBMkNBb0I7TUFDRjttRUFqQ0VoQjtnQkFxQ21FbEMsR0FDbkUsT0FBUSxrQkFEMkRBLEdBckNuRWtDLE1BcUNtRWxDLElBQ2xEO0dBRG5CO0lBREVtRDtNQUNGOztZQUtJQyxxQjtZQUNBQyxxQjtZQUNBQyxxQjtZQUNBQyxxQjtZQUNBQyxxQjtZQUNBQyxzQjtZQUdFQyxVQUFNMUQsR0FBRU8sR0FBSSxPQWxEaEIyQixNQWtEVWxDLElBQUVPLE9BQThCO1lBQ3RDb0QsVUFBTTNELEdBQUVPLEdBQUksT0FuRGhCMkIsTUFtRFVsQyxJQUFFTyxPQUE4QjtZQUN0Q3FELFVBQU01RCxHQUFFTyxHQUFJLE9BcERoQjJCLGVBb0RVbEMsR0FBRU8sSUFBOEI7WUFDdENzRCxVQUFNN0QsR0FBRU8sR0FBSSxPQXJEaEIyQixlQXFEVWxDLEdBQUVPLElBQThCO0dBSjlCO0lBQUEsV0FDUm1ELFdBQ0FDLFdBQ0FDLFdBQ0FDO0lBWkcsUUFDTFQsVUFDQUMsVUFDQUMsVUFDQUMsVUFDQUMsVUFDQUM7SUFpQkVLO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsT0FBQWpFLEdBQUEsT0FBQSxXQUFBZ0UsUUFBQWhFLEdBQXlFOztJQUF6RWtFO0lBQUFDO29EQUtRTCxXQUxSSzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBQztJQUNBQztJQUtBckU7SUFKQXNFO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBRUF4RSxtQjtHQUdTO0lBRlR5RTtJQUVBQyxTQUFTO0lBQ1RDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBTkE3RTtZQVNBOEUsUUFBTWxGO0lBQUksT0FyTVpDLDhCLGVBMExFRSxRQUVBQyxNQVNNSjtHQUErQztZQUVyRG1GLE1BQUluRjtJQUFJLE9BbE1WSzs0QjthQXFMRUY7YUFFQUM7YUFFQTBFO2FBRUE1RjthQUNBOEY7YUFNSWhGO0dBQXlFO1lBSTdFb0YsUUFBUXBGLEdBQUksT0EzTWRDLGVBeUxFQyxNQUVBMEUsVUFFQUMsUUFjUTdFLEdBQXdEO1lBRWhFcUYsTUFBTXJGO0lBQ1IsT0F6TUFLO2FBb0xFSCxNQUVBMEUsVUFFQUMsUUFFQUUsU0FDQTdGLFlBRUErRixhQVdNakY7R0FRTDtZQUtEc0Ysb0JBQWtCdEYsR0FBSSxPQXJCdEJrRixRQXFCa0JsRixHQUFXO1lBQzdCdUYsa0JBQWdCdkYsR0FBSSxPQXBCcEJtRixNQW9CZ0JuRixHQUFTO1lBQ3pCd0YsY0FBWXhGLEdBQUksT0FBSkEsRUFBSztZQUdqQnlGLGdCQUFnQnpGLEdBQUksT0ExQnBCa0YsUUEwQmdCbEYsR0FBVztZQUMzQjBGLGNBQWMxRixHQUFJLE9BekJsQm1GLE1BeUJjbkYsR0FBUztZQUN2QjJGLGdCQUFnQjNGLEdBQUksT0F0QnBCb0YsUUExSUFoRSxTQWdLZ0JwQixJQUErQjtZQUMvQzRGLGNBQWM1RixHQUFJLE9BckJsQnFGLE1BNUlBakUsU0FpS2NwQixJQUE2QjtZQUMzQzZGLGdCQUFnQjdGLEdBQUksT0F4QnBCb0YsUUF3QjRCLDJCQUFacEYsSUFBbUM7WUFDbkQ4RixjQUFjOUYsR0FBSSxPQXZCbEJxRixNQXVCd0IsMkJBQVZyRixJQUFpQztZQUMvQytGLGdCQUFnQi9GLEdBQUksT0ExQnBCb0YsUUEwQmdCcEYsR0FBYTtZQUM3QmdHLGNBQWNoRyxHQUFJLE9BekJsQnFGLE1BeUJjckYsR0FBVztZQUd6QmlHLGFBQWFqRyxHQUFJLE9BcENqQmtGLFFBb0NhbEYsR0FBVztZQUN4QmtHLFlBQVlsRyxHQUFJLE9BbkNoQm1GLE1BbUNZbkYsR0FBUztHQUdFO0lBQXZCbUc7TUFBdUIsMENBekR2QjVCLGFBQ0FDO0lBMERBNEI7TUFDRjttRUEzQ0VsQjtnQkErQ21FbEYsR0FDbkUsT0FBUSxXQXZEUjhFLFNBc0RtRTlFLEdBL0NuRWtGLFFBK0NtRWxGLElBQ2xEO0dBRG5CO0lBREVxRztNQUNGOztZQUtJQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUdFQyxVQUFNNUcsR0FBRU8sR0FBSSxPQTVEaEIyRSxRQTREVWxGLElBQUVPLE9BQThCO1lBQ3RDc0csVUFBTTdHLEdBQUVPLEdBQUksT0E3RGhCMkUsUUE2RFVsRixJQUFFTyxPQUE4QjtZQUN0Q3VHLFVBQU05RyxHQUFFTyxHQUFJLE9BOURoQjJFLGlCQThEVWxGLEdBQUVPLElBQThCO1lBQ3RDd0csVUFBTS9HLEdBQUVPLEdBQUksT0EvRGhCMkUsaUJBK0RVbEYsR0FBRU8sSUFBOEI7R0FKOUI7SUFBQSxhQUNScUcsV0FDQUMsV0FDQUMsV0FDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O0lBaUJFSztJQUxSQztJQUFBQztHQUFBLFNBQUFDLE9BQUFuSCxHQUFBLE9BQUEsV0FBQWtILFFBQUFsSCxHQUF5RTs7SUFBekVvSDtJQUFBQztvREFLUUwsV0FMUks7Ozs7Ozs7Ozs7O0lBU0lDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBQ0FDO0lBQ0FDO0lBRUFDO0lBVEFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBUUFDLFFBQU1sSTtJQUFJLE9BNVFaUSxhQXFRRWlILGNBQ0FDLGVBQ0FDLFNBS00zSDtHQUFrRDtZQUV4RG1JLE1BQUluSTtJQUFJLE9BdFFWWTthQTZQRTZHO2FBQ0FDO2FBQ0FDOzthQUNBeEk7YUFDQXlJO2FBS0k1SDtHQUE0RTtZQUtoRm9JLG9CQUFrQnBJLEdBQUksT0FQdEJrSSxRQU9rQmxJLEdBQVc7WUFDN0JxSSxrQkFBZ0JySSxHQUFJLE9BTnBCbUksTUFNZ0JuSSxHQUFTO1lBQ3pCc0ksY0FBWXRJLEdBQUksT0FBSkEsRUFBSztZQUdqQnVJLFFBQVF2SSxHQUFJLE9BQUpBLEVBQUs7WUFFYndJLGlCQUFleEk7SUFBbUMsV0F0UGxEbUIsU0FzUGVuQjtJQUFVLE9BZHpCa0ksUUFjeUI7R0FBNkM7WUFJdEVPLGVBQWF6STtJQUErQixXQTFQNUNtQixTQTBQYW5CO0lBQVEsT0FoQnJCbUksTUFnQnFCO0dBQTJDO1lBQ2hFTyxpQkFBZTFJO0lBQUksT0FuQm5Ca0ksUUFtQnlCLDRCQUFWbEk7R0FBcUM7WUFDcEQySSxlQUFhM0ksR0FBSSxPQWxCakJtSSxNQWtCcUIsMEJBQVJuSSxJQUFpQztZQUM5QzRJLGlCQUFlNUksR0FBSSxPQXJCbkJrSSw0QkFxQmVsSSxJQUFxQztZQUNwRDZJLGVBQWE3SSxHQUFJLE9BcEJqQm1JLE1Bb0JxQiwwQkFBUm5JLElBQWlDO1lBRzlDOEksZUFBZTlJLEdBQUksT0F6Qm5Ca0ksUUF5QmVsSSxHQUFXO1lBQzFCK0ksZ0JBQWMvSSxHQUFJLE9BeEJsQm1JLE1Bd0JjbkksR0FBUztHQUdBO0lBQXZCZ0o7TUFBdUIsMENBekN2Qm5CLGFBQ0FDO0lBMENBbUI7TUFDRjttRUFoQ0VmO2dCQW9DbUVsSSxHQUNuRSxPQUFRLG9CQUQyREEsR0FwQ25Fa0ksUUFvQ21FbEksSUFDbEQ7R0FEbkI7SUFERWtKO01BQ0Y7O1lBS0lDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBR0VDLFVBQU16SixHQUFFTyxHQUFJLE9BakRoQjJILFFBaURVbEksSUFBRU8sT0FBOEI7WUFDdENtSixVQUFNMUosR0FBRU8sR0FBSSxPQWxEaEIySCxRQWtEVWxJLElBQUVPLE9BQThCO1lBQ3RDb0osVUFBTTNKLEdBQUVPLEdBQUksT0FuRGhCMkgsaUJBbURVbEksR0FBRU8sSUFBOEI7WUFDdENxSixVQUFNNUosR0FBRU8sR0FBSSxPQXBEaEIySCxpQkFvRFVsSSxHQUFFTyxJQUE4QjtHQUo5QjtJQUFBLGFBQ1JrSixXQUNBQyxXQUNBQyxXQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7SUFpQkVLO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsT0FBQWhLLEdBQUEsT0FBQSxXQUFBK0osUUFBQS9KLEdBQXlFOztJQUF6RWlLO0lBQUFDO29EQUtRTCxXQUxSSzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBQztJQUNBQztJQUtBQztJQUpBQztJQUNBQztJQUNBQztJQUNBQztZQUVBQyxxQjtHQUdTO0lBRlRDO0lBRUFDLFdBQVM7SUFDVEM7SUFDQUM7SUFFQUM7SUFDQUM7SUFOQUM7WUFTQUMsUUFBTXBMO0lBQUksT0F6WFpDLDhCLGVBOFdFMkssVUFFQU8sUUFTTW5MO0dBQStDO1lBRXJEcUwsTUFBSXJMO0lBQUksT0F0WFZLOzRCO2FBeVdFdUs7YUFFQU87YUFFQUo7YUFFQTNMO2FBQ0E2TDthQU1Jakw7R0FBeUU7WUFJN0VzTCxVQUFRdEw7SUFBSSxPQS9YZEMsZUE2V0VzSyxRQUVBTSxZQUVBQyxVQWNROUs7R0FBd0Q7WUFFaEV1TCxRQUFNdkw7SUFDUixPQTdYQUs7YUF3V0VrSzthQUVBTTthQUVBQzthQUVBRTthQUNBNUw7YUFFQThMO2FBV01sTDtHQVFMO1lBS0R3TCxvQkFBa0J4TCxHQUFJLE9BckJ0Qm9MLFFBcUJrQnBMLEdBQVc7WUFDN0J5TCxrQkFBZ0J6TCxHQUFJLE9BcEJwQnFMLE1Bb0JnQnJMLEdBQVM7WUFDekIwTCxjQUFZMUwsR0FBSSxPQUFKQSxFQUFLO1lBR2pCMkwsU0FBUzNMLEdBQUksT0FBSkEsRUFBSztZQUNkNEwsa0JBQWdCNUwsR0FBSSxPQXJCcEJzTCxVQTlUQWxLLFNBbVZnQnBCLElBQStCO1lBQy9DNkwsZ0JBQWM3TCxHQUFJLE9BcEJsQnVMLFFBaFVBbkssU0FvVmNwQixJQUE2QjtZQUMzQzhMLGtCQUFnQjlMO0lBQUksT0F2QnBCc0wsVUF1QjRCLDJCQUFadEw7R0FBbUM7WUFDbkQrTCxnQkFBYy9MLEdBQUksT0F0QmxCdUwsUUFzQndCLDJCQUFWdkwsSUFBaUM7WUFDL0NnTSxrQkFBZ0JoTSxHQUFJLE9BekJwQnNMLFVBeUJnQnRMLEdBQWE7WUFDN0JpTSxnQkFBY2pNLEdBQUksT0F4QmxCdUwsUUF3QmN2TCxHQUFXO1lBR3pCa00sY0FBY2xNLEdBQUksT0FuQ2xCb0wsUUFtQ2NwTCxHQUFXO1lBQ3pCbU0sZUFBYW5NLEdBQUksT0FsQ2pCcUwsTUFrQ2FyTCxHQUFTO0dBR0M7SUFBdkJvTTtNQUF1QiwwQ0F4RHZCOUIsYUFDQUU7SUF5REE2QjtNQUNGO21FQTFDRWpCO2dCQThDbUVwTCxHQUNuRSxPQUFRLFdBdERSK0ssU0FxRG1FL0ssR0E5Q25Fb0wsUUE4Q21FcEwsSUFDbEQ7R0FEbkI7SUFERXNNO01BQ0Y7O1lBS0lDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBR0VDLFVBQU03TSxHQUFFTyxHQUFJLE9BM0RoQjZLLFFBMkRVcEwsSUFBRU8sT0FBOEI7WUFDdEN1TSxVQUFNOU0sR0FBRU8sR0FBSSxPQTVEaEI2SyxRQTREVXBMLElBQUVPLE9BQThCO1lBQ3RDd00sVUFBTS9NLEdBQUVPLEdBQUksT0E3RGhCNkssaUJBNkRVcEwsR0FBRU8sSUFBOEI7WUFDdEN5TSxVQUFNaE4sR0FBRU8sR0FBSSxPQTlEaEI2SyxpQkE4RFVwTCxHQUFFTyxJQUE4QjtHQUo5QjtJQUFBLGFBQ1JzTSxXQUNBQyxXQUNBQyxXQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7SUF5RU1LO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsT0FBQXBOLEdBQUEsT0FBQSxXQUFBbU4sUUFBQW5OLEdBQXlFO0dBWXpEO0lBWmhCcU47SUFBQUM7b0RBS1FMLFdBTFJLOzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBQztJQUNBQyxjQUFZO0lBQ1pDLGNBQVk7SUFJWkM7SUFDQUM7SUFDQUM7SUFFQUM7SUFQQUM7SUFDQUM7SUFDQUM7WUFRQUMsUUFBTW5PO0lBQUksT0F2ZmhCUSxhQWdmTW9OLGNBQ0FDLGVBQ0FDLFNBS005TjtHQUFrRDtZQUV4RG9PLE1BQUlwTztJQUFJLE9BamZkWTthQXdlTWdOO2FBQ0FDO2FBQ0FDOzthQUNBek87YUFDQTBPO2FBS0kvTjtHQUE0RTtZQUtoRnFPLGNBQWNyTyxHQUFJLE9BQUEsNEJBQUpBLEdBQTZCO1lBQzNDc08sY0FBY3RPLEdBQUksT0FBQSw0QkFBSkEsR0FBNkI7WUFHM0N1TyxVQUFRdk8sR0FBSyxPQUFMQSxFQUFNO1lBQ2R3TyxTQUFTeE8sR0FBSyxPQUFMQSxFQUFNO1lBQ2Z5TyxpQkFBZXpPO0lBQUksT0FibkJtTyxRQWF5Qiw0QkFBVm5PO0dBQXFDO1lBQ3BEME8sZUFBYTFPLEdBQUksT0FaakJvTyxNQVlxQiwwQkFBUnBPLElBQWlDO1lBQzlDMk8saUJBQWUzTyxHQUFJLE9BZm5CbU8sNEJBZWVuTyxJQUFxQztZQUNwRDRPLGVBQWE1TyxHQUFJLE9BZGpCb08sTUFjcUIsMEJBQVJwTyxJQUFpQztZQUc5QzZPLGVBQWU3TyxHQUFJLE9BbkJuQm1PLFFBbUJlbk8sR0FBVztZQUMxQjhPLGdCQUFjOU8sR0FBSSxPQWxCbEJvTyxNQWtCY3BPLEdBQVM7R0FJekI7SUFERStPO01BQ0YsMENBcENFckIsYUFDQUM7SUFzQ0FxQjtNQUNGO21FQTVCRWI7Z0JBZ0NtRW5PLEdBQ25FLE9BQVEsb0JBRDJEQSxHQWhDbkVtTyxRQWdDbUVuTyxJQUNsRDtHQURuQjtJQURFaVA7TUFDRjs7WUFLSUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFHRUMsVUFBTXhQLEdBQUVPLEdBQUksT0E3Q2hCNE4sUUE2Q1VuTyxJQUFFTyxPQUE4QjtZQUN0Q2tQLFVBQU16UCxHQUFFTyxHQUFJLE9BOUNoQjROLFFBOENVbk8sSUFBRU8sT0FBOEI7WUFDdENtUCxVQUFNMVAsR0FBRU8sR0FBSSxPQS9DaEI0TixpQkErQ1VuTyxHQUFFTyxJQUE4QjtZQUN0Q29QLFVBQU0zUCxHQUFFTyxHQUFJLE9BaERoQjROLGlCQWdEVW5PLEdBQUVPLElBQThCO0dBSjlCO0lBQUEsYUFDUmlQLFdBQ0FDLFdBQ0FDLFdBQ0FDO0lBWkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztJQWlCRUs7SUFMUkM7SUFBQUM7R0FBQSxTQUFBQyxPQUFBL1AsR0FBQSxPQUFBLFdBQUE4UCxRQUFBOVAsR0FBeUU7O0lBQXpFZ1E7SUFBQUM7b0RBS1FMLFdBTFJLOzs7Ozs7Ozs7O0lBU0lDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBSUFDO0lBSEFDO0lBQ0FDO0lBQ0FDO1lBRUFDLHFCO0dBR1M7SUFGVEM7SUFDQUM7SUFDQUMsV0FBUyxvQkFEVEQ7SUFFQUU7SUFDQUM7SUFFQUM7SUFDQUM7WUFHQUMsUUFBTW5SO0lBQUksT0FobUJoQkMsOEIsZUFxbEJNMFEsVUFFQUUsUUFTTTdRO0dBQStDO1lBRXJEb1IsTUFBSXBSO0lBQUksT0E3bEJkSzs0QjthQWdsQk1zUTthQUVBRTthQUVBRTthQUVBelI7YUFDQTJSO2FBTUlqUjtHQUF5RTtZQUk3RXFSLFVBQVFyUjtJQUFJLE9BdG1CbEJDLGVBb2xCTXNRLFFBRUFLLFlBRUFFLFVBY1E5UTtHQUF3RDtZQUloRXNSLFFBQU10UjtJQUNSLE9BdG1CSks7YUEra0JNa1E7YUFFQUs7YUFFQUU7YUFFQUU7YUFDQTFSO2FBRUE0UjthQWFNbFI7R0FRTDtZQUtEdVIsb0JBQW9CdlI7SUFDdEIsT0FBd0I7YUFBQSxlQUFVLG9CQURaQSxJQS9CcEI4UTtHQWdDK0Q7WUFJL0RVLGtCQUFrQnhSO0lBQUksT0ExQnRCb1IsTUEwQjBCLDRCQUFScFI7R0FBbUM7WUFDckR5UixvQkFBb0J6UixHQUFJLE9BQUpBLEVBQTZCO1lBRWpEMFIsa0JBQWtCMVI7SUFDcEIsT0FEb0JBO2NBRWYsNEJBRmVBO2NBcG9CeEJGLGtCQWdtQk1SLDBCQW9Da0JVO0dBRzRDO1lBSTlEMlIsb0JBQW9CM1IsR0FBSSxPQWhDeEJxUixVQWdDb0JyUixHQUFhO1lBQ2pDNFIsa0JBQWtCNVIsR0FBSSxPQTdCdEJzUixRQTZCa0J0UixHQUFXO1lBQzdCNlIsY0FBYzdSLEdBQUksT0FBQSx5QkFBSkEsR0FBdUI7WUFDckM4UixnQkFBZ0I5UixHQUFJLE9BQUpBLEVBQUs7WUFHckIrUixXQUFTL1IsR0FBSyxPQUFMQSxFQUFNO1lBQ2ZnUyxVQUFVaFMsR0FBSyxPQUFMQSxFQUFNO1lBQ2hCaVMsa0JBQWdCalM7SUFBSSxPQXhDcEJxUixVQXdDNEIsMkJBQVpyUjtHQUFtQztZQUNuRGtTLGdCQUFjbFMsR0FBSSxPQXJDbEJzUixRQXFDd0IsMkJBQVZ0UixJQUFpQztZQUMvQ21TLGtCQUFnQm5TLEdBQUksT0ExQ3BCcVIsVUEwQ2dCclIsR0FBYTtZQUM3Qm9TLGdCQUFjcFMsR0FBSSxPQXZDbEJzUixRQXVDY3RSLEdBQVc7WUFHekJxUyxjQUFjclMsR0FBSSxPQXBEbEJtUixRQW9EY25SLEdBQVc7WUFDekJzUyxlQUFhdFMsR0FBSSxPQW5EakJvUixNQW1EYXBSLEdBQVM7R0FJeEI7SUFERXVTO01BQ0YsMENBMUVFbEMsYUFDQUM7SUE0RUFrQztNQUNGO21FQTdERXJCO2dCQWlFbUVuUixHQUNuRSxPQUFRLFdBekVSK1EsU0F3RW1FL1EsR0FqRW5FbVIsUUFpRW1FblIsSUFDbEQ7R0FEbkI7SUFERXlTO01BQ0Y7O1lBS0lDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHFCO1lBR0VDLFVBQU1oVCxHQUFFTyxHQUFJLE9BOUVoQjRRLFFBOEVVblIsSUFBRU8sT0FBOEI7WUFDdEMwUyxVQUFNalQsR0FBRU8sR0FBSSxPQS9FaEI0USxRQStFVW5SLElBQUVPLE9BQThCO1lBQ3RDMlMsVUFBTWxULEdBQUVPLEdBQUksT0FoRmhCNFEsaUJBZ0ZVblIsR0FBRU8sSUFBOEI7WUFDdEM0UyxVQUFNblQsR0FBRU8sR0FBSSxPQWpGaEI0USxpQkFpRlVuUixHQUFFTyxJQUE4QjtHQUo5QjtJQUFBLGFBQ1J5UyxXQUNBQyxXQUNBQyxXQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7SUFtQkVLO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsT0FBQXZULEdBQUEsT0FBQSxXQUFBc1QsUUFBQXRULEdBQTZEOztJQUE3RHdUO0lBQUFDO29EQUtRTCxZQUxSSzs7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFLQW5UO0lBQ0FvVDtJQUxBQztJQUNBQztJQUNBQztZQU1BQyxnQkFBY3RVLEdBQUksT0FBSkEsRUFBSztZQUNuQnVVLGdCQUFjdlUsR0FBSSxPQUFKQSxFQUFLO1lBR25Cd1UsVUFBUXhVLEdBQUksT0FBQSw0QkFBSkEsR0FBK0M7WUFDdkR5VSxXQUFTelUsR0FBSSxPQUFBLDRCQUFKQSxHQUFnRDtZQUN6RDBVLGlCQUFlMVUsR0FBSSxPQUFBLDRCQUFKQSxHQUErQjtZQUM5QzJVLGVBQWEzVSxHQUFJLE9BQUEsMkJBQUpBLEdBQTZCO09BQzFDNFU7WUFDQUMsZUFBYTdVLEdBQUksT0FBQSwyQkFBSkEsR0FBNkI7WUFHMUM4VSxpQkFBZTlVLEdBQUksT0FBSkEsRUFBSztZQUVwQitVLGdCQUFjL1U7SUFDaEIsT0FuckJKYTthQWdxQk1DLGVBUEFpVCxRQU1BeFUsWUFFQTJVLGFBaUJjbFU7R0FDZ0Q7R0FZbEQ7SUFQVmdWO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBR0VDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBSlEsYUFDUkgsWUFDQUMsWUFDQUMsWUFDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O0lBWU5LO0lBQUFDO0dBQUEsU0FBQUMsT0FBQTVWLEdBQUEsT0FBQSxXQUFBMlYsUUFBQTNWLEdBQThDOztJQUUxQzZWO0lBQ0FDO0lBQ0FDO1lBa0dJQyxXQWpHSWhXLEdBQUVPLEdBQUksT0FBQSw2QkFBTlAsR0FBRU8sR0FBcUM7O0lBQy9DMFY7SUFDQUM7SUFDQUM7SUFDQUM7SUFNQUM7SUFDQUM7SUFOQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFNQUMsc0JBQW9CM1csR0FBSSxPQUFKQSxFQUFLO1lBRXpCNFcsb0JBQWtCNVc7SUFDcEIsT0EvdEJKYTthQXd0Qk13VixpQkFQQUYsUUFNQTNXLFlBRUE4VyxhQUtrQnRXO0dBQzRDO1lBSTlENlcsc0JBQW9CN1csR0FBSSxPQUFKQSxFQUFLO1lBRXpCOFcsb0JBQWtCOVc7SUFDcEIsT0F0dUJKYTthQXd0Qk13VixpQkFQQUYsUUFNQTNXLFlBRUE4VyxhQVlrQnRXO0dBQzRDO1lBSTlEK1csc0JBQW9CL1csR0FBSSxPQUFBLDRCQUFKQSxHQUErQjtZQUVuRGdYLG9CQUFrQmhYO0lBQ3BCLEdBQUcsa0JBRGlCQSxXQUNTLGVBRFRBO0tBRWYsT0FBQSxvQkFGZUE7SUFHZixPQWx5QlRGLGtCQTB3Qk1OLDRCQXFCa0JRO0dBRzhDO1lBSWhFaVgsZ0JBQWNqWDtJQUFJLE9BQUEsZUFBb0IsMkJBQXhCQTtHQUEyRDtZQUl6RWtYLGtCQUFnQmxYO0lBQ2xCOztPQXh2QkphO1NBd3RCTXdWLGlCQVBBRixRQU1BM1csWUFFQThXLGFBOEJnQnRXO0lBQ2xCLE9BQUE7R0FDd0I7WUFLdEJtWCxXQUFTblgsR0FBSSxPQUFBLDRCQUFKQSxHQUFnRDtZQUN6RG9YLFlBQVVwWCxHQUFJLE9BQUEsNEJBQUpBLEdBQWlEO1lBRTNEcVgsa0JBQWdCclg7SUFBSSxPQXZCcEIrVyxzQkF1QndDLDJCQUF4Qi9XO0dBQStDO1lBSS9Ec1gsZ0JBQWN0WDtJQUFJLE9BekJsQmdYLG9CQXlCb0MsMkJBQXRCaFg7R0FBNkM7WUFDM0R1WCxrQkFBZ0J2WCxHQUFJLE9BNUJwQitXLHNCQTRCZ0IvVyxHQUF5QjtZQUN6Q3dYLGdCQUFjeFgsR0FBSSxPQTNCbEJnWCxvQkEyQmNoWCxHQUF1QjtZQUdyQ3lYLGdCQUFjelgsR0FBSSxPQUFKQSxFQUFLO1lBRW5CMFgsZUFBYTFYO0lBQ2YsT0E3d0JKYTthQXd0Qk13VixpQkFQQUYsUUFNQTNXLFlBRUE4VyxhQW1EYXRXO0dBQ2lEO1lBSzlEMlgsWUFBVTNYLEdBQUksV0FBZSxrQ0FBbkJBLElBQWtEO1lBRTVENFgsWUFBVTFXO0lBQ1osU0FEWUE7S0FFVSxPQWp4QjFCRixnREErd0JnQkU7UUFHSzJXLElBSEwzVztJQUlWO0tBQUs7MEI7TUFBQSxNQUFBLDRCQURVMlc7S0FDVjs7ZUFDRyxPQXB4QmQ3Vyw4Q0Erd0JnQkU7R0FLa0U7WUFJMUU0VyxXQUFPOVgsR0FBRU8sR0FBSSxZQWtCWHlWLFdBbEJLaFcsR0FBRU8sV0FBb0I7WUFDN0J3WCxXQUFPL1gsR0FBRU8sR0FBSSxPQWlCWHlWLFdBakJLaFcsR0FBRU8sZ0JBQW9CO1lBQzdCeVgsV0FBTWhZLEdBQUVPLEdBQUksYUFnQlZ5VixXQWhCSWhXLEdBQUVPLFdBQW1CO1lBQzNCMFgsV0FBTWpZLEdBQUVPLEdBQUksV0FlVnlWLFdBZkloVyxHQUFFTyxXQUFtQjtZQUMzQjJYLFdBQU1sWSxHQUFFTyxHQUFJLE9BY1Z5VixXQWRJaFcsR0FBRU8sZUFBbUI7WUFDM0I0WCxXQUFPblksR0FBRU8sR0FBSSxhQWFYeVYsV0FiS2hXLEdBQUVPLFdBQW9CO0dBRW5CO0lBQ1I2WDtJQUNBQztJQUNBQztJQUNBQztJQUpRLGFBQ1JILFlBQ0FDLFlBQ0FDLFlBQ0FDO0lBWkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztvREFhRW5DLFlBN0JKMkI7Ozs7Ozs7Ozs7O0lBbUNKYTs7OztVQWpLSTlFO1VBQ0FDO1VBQ0FDO1VBWEpKO1VBQUFDO1VBWUlJO1VBQ0FDO1VBSUFLO1VBQ0FDO1VBQ0FDO1VBTEFOO1VBQ0FDO1VBQ0FDO1VBaEJKWjtVQUFBRTs7Ozs7Ozs7Ozs7O1VBeUJJZTtVQUNBQztVQUdBQztVQUNBQztVQUNBQztVQUNBQztVQUNBQztVQUNBQztVQUdBQztVQUVBQzs7VUF5QkFjO1VBQ0FDO1VBQ0FDO1VBdUVBNkI7VUFGQUQ7VUFuRUExQjtVQUNBQztVQUlBTTtVQUNBQztVQUNBQztVQUxBUDtVQUNBQztVQUNBRztVQVZKYjtVQUFBRTs7Ozs7Ozs7Ozs7O1VBbUJJZTtVQUVBQztVQUtBQztVQUVBQztVQUtBQztVQUVBQztVQU9BQztVQUlBQztVQU9BQztVQUNBQztVQUVBQztVQUlBQztVQUNBQztVQUNBQztVQUdBQztVQUVBQzs7O1VBdFJBM0k7VUFJQUM7VUFJQUM7VUF2REo1QjtVQUFBQztVQVNJQztVQUNBQztVQUlBUTtVQUNBQztVQUNBQztVQUxBVDtVQUNBQztVQUNBQztVQWJKVDtVQUFBRTs7Ozs7Ozs7Ozs7O1VBK0JJaUI7VUFDQUM7VUFHQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFHQUM7VUFDQUM7O1VBdUhBeUQ7VUFJQUM7VUFJQUM7VUE3Rkp6QztVQUFBQztVQVNJQztVQUNBQztVQUlBSztVQUNBQztVQUNBQztVQUxBTjtVQUNBQztVQUNBQztVQWJKVDtVQUFBRTs7Ozs7OztVQXNCSWdCOzs7OztVQThCQVE7VUFLQUM7VUFDQUM7VUFFQUM7VUFPQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFHQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFHQUM7VUFDQUM7Z0JBOE1Ka0c7SUFuYU1DO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUdSQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztnQkFtWkVuQztJQTdZTW9DO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUdSQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztJQThZTUM7SUFMUkM7SUFBQUM7R0FBQSxTQUFBQyxPQUFBeGQsR0FBQSxPQUFBLFdBQUF1ZCxRQUFBdmQsR0FBNkU7O0lBQTdFeWQ7SUFBQUM7cURBS1FMLFlBTFJLOzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUtBQztJQUNBQztJQUxBQztJQUNBQztJQUNBQztZQU1BQyxVQUFReGUsR0FBSSxPQUFBLDJCQUFKQSxHQUF1QjtZQUMvQnllLFdBQVN6ZSxHQUFJLE9BQUEsMkJBQUpBLEdBQXVCO1lBQ2hDMGUsU0FBUzFlO0lBQXdCLFVBNWNuQ21hLGdCQTRjV25hO0lBQXdCLE9BQUE7R0FBdUI7WUFDeEQyZSxpQkFBZTNlLEdBQUksT0FBQSw0QkFBSkEsR0FBK0I7WUFDOUM0ZSxlQUFhNWUsR0FBSSxPQUFBLDJCQUFKQSxHQUE2QjtZQUcxQzZlLGVBQWU3ZSxHQUFJLE9BQUpBLEVBQUs7WUFFcEI4ZSxnQkFBYzllO0lBQUksT0F6MkJwQmE7YUE0MUJFc2QsaUJBUEFILFFBTUF2ZSxZQUVBMmUsYUFZY3BlO0dBQW9FO0dBWXRFO0lBUFYrZTtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdFQztJQUNBQztJQUNBQztJQUNBQztJQUpRLGFBQ1JILFlBQ0FDLFlBQ0FDLFlBQ0FDO0lBWkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztJQVlOSztJQUFBQztHQUFBLFNBQUFDLFFBQUEzZixHQUFBLE9BQUEsV0FBQTBmLFFBQUExZixHQUE4Qzs7SUFFMUM0ZjtJQUNBQztJQUNBQztZQXdGSUMsV0F0RkkvZixHQUFFTztJQUVaO0tBQXNELE1BQUEsMkJBRjFDQTtLQUVrQixNQUFBLDJCQUZwQlA7SUFFNEMsT0FBQTtHQUF1QjtHQU8vRDtJQUpaZ2dCO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDLGVBQVk7SUFJWkM7SUFFQUM7SUFMQUM7SUFDQUM7SUFDQUM7WUFXQUMsc0JBQW9CMWdCLEdBQUksT0FBQSw0QkFBSkEsR0FBK0I7WUFFbkQyZ0Isb0JBQWtCM2dCO0lBQ3BCLE9BQUcsa0JBRGlCQTtjQUVmLDRCQUZlQTtjQWo5QnBCRixrQkFzOEJFSiw0QkFXa0JNO0dBRzhDO1lBSWhFNGdCLGdCQUFjNWdCO0lBQUksT0FBQSxlQUFvQiwyQkFBeEJBO0dBQW1FO1lBS2pGNmdCLFdBQVM3Z0IsR0FBSSxPQUFBLDJCQUFKQSxHQUF1QjtZQUNoQzhnQixZQUFVOWdCLEdBQUksT0FBQSwyQkFBSkEsR0FBdUI7WUFDakMrZ0IsVUFBVS9nQjtJQUE4QixVQTNmMUMyYyxnQkEyZlkzYztJQUE4QixPQUFBO0dBQXdCO1lBQ2hFZ2hCLGtCQUFnQmhoQixHQUFJLE9BQUEsNEJBQUpBLEdBQStCO1lBRS9DaWhCLGdCQUFlamhCO0lBQ2pCLE9BQUcsa0JBRGNBO2NBRVosNEJBRllBO2NBbCtCakJGLGtCQXM4QkVKLDRCQTRCZU07R0FHaUQ7WUFLaEVraEIsY0FBY2xoQixHQUFJLE9BQUpBLEVBQUs7WUFDbkJtaEIsZUFBYW5oQjtJQUFJLE9BeDdCbkJhO2FBazVCRXdmLGlCQU5BSCxTQU9BeGdCLFlBQ0E0Z0IsYUFvQ2F0Z0I7R0FBUztZQUd0Qm9oQixhQUFVcGhCO0lBQWdELFVBdEIxRDRnQixnQkFzQlU1Z0I7SUFBSSxXQUFlO0dBQStDO1lBRTVFcWhCLGFBQVVuZ0I7SUFDWixTQURZQTtLQUVVLE9BMTdCdEJGLGdEQXc3QllFO1FBR0syVyxJQUhMM1c7SUFJVjtLQUFLLFVBQUEsNEJBRFUyVyxRQWxDZjhJO0tBbUNLOztlQUNHLE9BNzdCVjNmLDhDQXc3QllFO0dBS2tFO1lBSTFFb2dCLFdBQU90aEIsR0FBRU8sR0FBSSxZQXFCWHdmLFdBckJLL2YsR0FBRU8sV0FBb0I7WUFDN0JnaEIsV0FBT3ZoQixHQUFFTyxHQUFJLE9Bb0JYd2YsV0FwQksvZixHQUFFTyxnQkFBb0I7WUFDN0JpaEIsV0FBTXhoQixHQUFFTyxHQUFJLGFBbUJWd2YsV0FuQkkvZixHQUFFTyxXQUFtQjtZQUMzQmtoQixXQUFNemhCLEdBQUVPLEdBQUksV0FrQlZ3ZixXQWxCSS9mLEdBQUVPLFdBQW1CO1lBQzNCbWhCLFdBQU0xaEIsR0FBRU8sR0FBSSxPQWlCVndmLFdBakJJL2YsR0FBRU8sZUFBbUI7WUFDM0JvaEIsV0FBTzNoQixHQUFFTyxHQUFJLGFBZ0JYd2YsV0FoQksvZixHQUFFTyxXQUFvQjs7SUFHM0JxaEI7SUFDQUM7SUFDQUM7WUFFQUMsV0FBTS9oQixHQUFFTztJQUM4QyxVQTlDMURxZ0IsZ0JBNkNZcmdCO0lBQ1UsT0F2RHRCbWdCLHNCQXVEc0IsZUE5Q3RCRSxnQkE2Q1U1Z0I7R0FDa0U7R0FOaEU7SUFBQSxhQUNSNGhCLFlBQ0FDLFlBQ0FDLFlBRUFDO0lBYkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOzs7MENBZ0JFNUIsWUFoQ0pxQjs7Ozs7Ozs7Ozs7SUEyQ0lZO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsUUFBQW5pQixHQUFBLE9BQUEsV0FBQWtpQixRQUFBbGlCLEdBQTZEO0dBcUJ6QztJQXJCcEJvaUI7SUFBQUM7OzBDQUtRTCxZQUxSSzs7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFLQUM7SUFDQUM7SUFHQUM7SUFDQUM7SUFUQUM7SUFDQUM7SUFDQUM7WUFRQUMsV0FBU3JqQixHQUFJLE9BQUEsb0JBdG1CZm1hLGdCQXNtQlduYSxJQUErQztZQUN4RHNqQixTQUFTdGpCLEdBQUksT0FBQSwyQkFBSkEsR0FBeUI7WUFHbEN1akIsZUFBZXZqQixHQUFJLE9BQUpBLEVBQUs7WUFFcEJ3akIsZ0JBQWN4akI7SUFBSSxPQWxnQ3BCYTthQXMvQkVpaUIsaUJBUEFILFNBTUFoakIsWUFFQW9qQixhQVdjL2lCO0dBQW9FO0dBWXRFO0lBUFZ5akI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHRUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFKUSxhQUNSSCxZQUNBQyxZQUNBQyxZQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7SUFZTks7SUFBQUM7R0FBQSxTQUFBQyxRQUFBcmtCLEdBQUEsT0FBQSxXQUFBb2tCLFNBQUFwa0IsR0FBOEM7O0lBRTFDc2tCO0lBQ0FDO0lBQ0FDO0lBcUVJQztJQW5FSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFLQUM7SUFFQUM7SUFMQUM7SUFDQUM7SUFDQUM7WUFNQUMsTUFBSW5sQjtJQUFJLE9BM2lDVmE7YUFzaUNFaWtCLGlCQU5BRixTQU9BL2tCLGFBQ0FrbEIsY0FHSS9rQjtHQUFvRTtZQUt4RW9sQixzQkFBb0JwbEIsR0FBSSxPQUFKQSxFQUFLO1lBQ3pCcWxCLG9CQUFrQnJsQixHQUFJLE9BTnRCbWxCLE1BTWtCbmxCLEdBQVM7WUFDM0JzbEIsb0JBQW9CdGxCLEdBQUksT0FBSkEsRUFBSztZQUN6QnVsQixrQkFBa0J2bEIsR0FBSSxPQVJ0Qm1sQixNQVFrQm5sQixHQUFTO09BRzNCd2xCLGtDQUNBQztZQUNBQyxZQUFVMWxCLEdBQUksT0F2b0JoQjJjLGdCQXVvQlkzYyxHQUEwQjtZQUVwQzJsQixVQUFXM2xCO0lBQ2IsT0FBQSxlQUFvQiwyQkFEUEE7R0FDa0Q7WUFLN0Q0bEIsY0FBYzVsQixHQUFJLE9BQUpBLEVBQUs7WUFDbkI2bEIsZUFBYTdsQixHQUFJLE9BdEJqQm1sQixNQXNCYW5sQixHQUFTO1lBR3RCOGxCLGFBQVU5bEIsR0FBSSxXQUFlLGtDQUFuQkEsSUFBa0Q7WUFFNUQrbEIsYUFBVTdrQjtJQUNaLFNBRFlBO0tBRVUsT0Fua0N0QkYsZ0RBaWtDWUU7UUFHSzJXLElBSEwzVztJQUlWO0tBQUs7MEI7TUFBQSxNQUFBLDRCQURVMlc7S0FDVjs7ZUFDRyxPQXRrQ1Y3Vyw4Q0Fpa0NZRTtHQUtrRTtZQUkxRThrQixXQUFPaG1CLEdBQUVPO0lBQUksWUFBQSxXQWtCWGtrQixZQWxCS3prQixHQUFFTztHQUFvQjtZQUM3QjBsQixXQUFPam1CLEdBQUVPO0lBQUksT0FBQSxXQWlCWGtrQixZQWpCS3prQixHQUFFTztHQUFvQjtZQUM3QjJsQixXQUFNbG1CLEdBQUVPO0lBQUksYUFBQSxXQWdCVmtrQixZQWhCSXprQixHQUFFTztHQUFtQjtZQUMzQjRsQixXQUFNbm1CLEdBQUVPLEdBQUksV0FBQSxXQWVWa2tCLFlBZkl6a0IsR0FBRU8sV0FBbUI7WUFDM0I2bEIsV0FBTXBtQixHQUFFTyxHQUFJLE9BQUEsV0FjVmtrQixZQWRJemtCLEdBQUVPLGVBQW1CO1lBQzNCOGxCLFdBQU9ybUIsR0FBRU87SUFBSSxhQUFBLFdBYVhra0IsWUFiS3prQixHQUFFTztHQUFvQjtHQUtuQjtJQUZSK2xCO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBSlEsY0FDUkgsWUFDQUMsWUFDQUMsWUFDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7OzswQ0FhRTVCLFlBN0JKcUI7Ozs7Ozs7Ozs7OzthQWlKQVksU0FBU0MsR0FBR0M7S0FBTSxPQS9vQ2xCeGtCLGtCQStvQ3lDLGlCQUFoQ3VrQixHQUFHQztJQUFnRDthQUk1REMsVUFBVUYsR0FBR0M7S0FBTSxPQTdpQ25CdGhCLG9CQTZpQzJDLGlCQUFqQ3FoQixHQUFHQztJQUFpRDthQUk5REUsYUFBYUgsR0FBR0M7S0FDbEI7TUFBSTVtQixJQUFJLGlCQURPMm1CLEdBQUdDO01BRWxCLG9DQURJNW1CLEtBQUFBO1lBbitCRm9JO0lBbytCOEQ7YUFHOUQyZSxhQUFhSixHQUFHQztLQUNsQjtNQUFJNW1CLElBQUksaUJBRE8ybUIsR0FBR0M7TUFDZEksdUJBQUFobkIsaUJBQUFBO0tBQzRDLE9BeitCOUNvSSxvQkF3K0JFNGU7SUFDNEQ7YUFLOURDLGNBQWNOLEdBQUdDO0tBQ25CO01BQUk1bUIsSUFBSSxpQkFEUTJtQixHQUFHQztNQUVuQixvQ0FESTVtQixLQUFBQTtZQTE0QkZ3TDtJQTI0QitEO2FBRy9EMGIsY0FBY1AsR0FBR0M7S0FDbkI7TUFBSTVtQixJQUFJLGlCQURRMm1CLEdBQUdDO01BQ2ZJLHVCQUFBaG5CLGlCQUFBQTtLQUM2QyxPQWg1Qi9Dd0wsb0JBKzRCRXdiO0lBQzZEO2FBSy9ERyxhQUFhUixHQUFHQztLQUNsQjtNQUFJNW1CLElBQUksaUJBRE8ybUIsR0FBR0M7TUFFbEIsdUJBQTRDLGlCQUR4QzVtQixLQUFBQTtLQUN3QyxPQWwyQjVDa2E7SUFrMkI0RDthQUcxRGtOLGFBQWFULEdBQUdDO0tBQ2xCO01BQUk1bUIsSUFBSSxpQkFETzJtQixHQUFHQztNQUNkSSx1QkFBQWhuQixJQUMrQyxpQkFEL0NBO0tBQytDLE9BdjJCbkRrYSxnQkFzMkJJOE07SUFDd0Q7YUFLMURLLGNBQWNWLEdBQUdDO0tBQ25CO01BQUk1bUIsSUFBSSxpQkFEUTJtQixHQUFHQztNQUVuQix1QkFBbUQsaUJBRC9DNW1CLEtBQUFBO0tBQytDLE9BeDFCbkRxYztJQXcxQm1FO2FBR2pFaUwsY0FBY1gsR0FBR0M7S0FDbkI7TUFBSTVtQixJQUFJLGlCQURRMm1CLEdBQUdDO01BQ2ZJLHVCQUFBaG5CLElBQ3NELGlCQUR0REE7S0FDc0QsT0E3MUIxRHFjLHNCQTQxQkkySztJQUMrRDthQUtqRU8sYUFBYVosR0FBR0M7S0FDVixJQUFKNW1CLElBQUksaUJBRE8ybUIsR0FBR0M7S0FFbEIsd0JBQXVCLGlCQURuQjVtQixLQUFBQTtJQUNrQzthQUdwQ3duQixhQUFhYixHQUFHQztLQUNWLElBQUo1bUIsSUFBSSxpQkFETzJtQixHQUFHQztLQUVsQix3QkFESTVtQixJQUMwQixpQkFEMUJBO0lBQ2tDO2FBS3BDeW5CLGNBQWNkLEdBQUdDO0tBQ25CO01BQUk1bUIsSUFBSSxpQkFEUTJtQixHQUFHQztNQUVuQix1QkFBbUQsaUJBRC9DNW1CLEtBQUFBO0tBQytDO0lBQWdCO2FBR2pFMG5CLGNBQWNmLEdBQUdDO0tBQ25CO01BQUk1bUIsSUFBSSxpQkFEUTJtQixHQUFHQztNQUNmSSx1QkFBQWhuQixJQUNzRCxpQkFEdERBO0tBQ3NELE9BRHREZ25CO0lBQytEO0lBOUVSO1lBR3pETjtZQUlBRztZQUlBQztZQUtBQztZQU9BRTtZQUtBQztZQU9BQztZQUtBQztZQU9BQztZQUtBQztZQU9BQztZQUtBQztZQU9BQztZQUtBQzs7O2FBVUFDLFVBQVVoQixHQUFHQyxLQUFJNW1CLEdBQUksT0FBQSxpQkFBWDJtQixHQUFHQyxLQUFJNW1CLEdBQXVCO2FBSXhDNG5CLFNBQVNqQixHQUFHQyxLQUFJNW1CLEdBQUksT0FKcEIybkIsVUFJU2hCLEdBQUdDLEtBam5DWjNnQixhQWluQ2dCakcsSUFBMkM7YUFJM0Q2bkIsY0FBY2xCLEdBQUdDLEtBQUk1bUI7S0FDdkIsSUFBSWduQixvQ0FEbUJobkIsS0FBQUE7S0FFdkIsT0FBQSxpQkFGZ0IybUIsR0FBR0MsS0FDZkk7SUFDbUI7YUFHckJjLGNBQWNuQixHQUFHQyxLQUFJNW1CO0tBQ3ZCLElBQUlnbkIsdUJBRG1CaG5CLGlCQUFBQTtLQUV2QixPQUFBLGlCQUZnQjJtQixHQUFHQyxLQUNmSTtJQUNtQjthQUtyQmUsYUFBYXBCLEdBQUdDLEtBQUk1bUI7S0FBSSxPQVp4QjZuQixjQVlhbEIsR0FBR0MsS0E5OEJoQjFhLGNBODhCb0JsTTtJQUFpRDthQUNyRWdvQixhQUFhckIsR0FBR0MsS0FBSTVtQjtLQUFJLE9BUnhCOG5CLGNBUWFuQixHQUFHQyxLQS84QmhCMWEsY0ErOEJvQmxNO0lBQWlEO2FBSXJFaW9CLGFBQWF0QixHQUFHQyxLQUFJNW1CO0tBQ3RCO01BQUlnbkIsTUE1NkJKN00sZ0JBMjZCc0JuYTtNQUVsQmtvQix1QkFBMkIsaUJBRDNCbEIsT0FBQUE7S0FFSixPQUFBLGlCQUhlTCxHQUFHQyxLQUVkc0I7SUFDa0I7YUFHcEJDLGFBQWF4QixHQUFHQyxLQUFJNW1CO0tBQ3RCO01BQUlnbkIsTUFsN0JKN00sZ0JBaTdCc0JuYTtNQUVsQmtvQix1QkFEQWxCLE1BQ2tDLGlCQURsQ0E7S0FFSixPQUFBLGlCQUhlTCxHQUFHQyxLQUVkc0I7SUFDa0I7YUFLcEJFLGNBQWN6QixHQUFHQyxLQUFJNW1CO0tBQUksT0FkekJpb0IsYUFjY3RCLEdBQUdDLEtBOTZCbkJsTSxpQkE4NkJ1QjFhO0lBQWdEO2FBQ3JFcW9CLGNBQWMxQixHQUFHQyxLQUFJNW1CO0tBQUksT0FUekJtb0IsYUFTY3hCLEdBQUdDLEtBLzZCbkJsTSxpQkErNkJ1QjFhO0lBQWdEO2FBSXJFc29CLGFBQWEzQixHQUFHQyxLQUFJNW1CO0tBQ3RCLElBQUlnbkIsdUJBQTJCLGlCQURUaG5CLEtBQUFBO0tBRXRCLE9BQUEsaUJBRmUybUIsR0FBR0MsS0FDZEk7SUFDa0I7YUFHcEJ1QixhQUFhNUIsR0FBR0MsS0FBSTVtQjtLQUN0QixJQUFJZ25CLHVCQURrQmhuQixJQUNnQixpQkFEaEJBO0tBRXRCLE9BQUEsaUJBRmUybUIsR0FBR0MsS0FDZEk7SUFDa0I7YUFLcEJ3QixjQUFjN0IsR0FBR0MsS0FBSTVtQixHQUFJLE9BWnpCc29CLGFBWWMzQixHQUFHQyxLQUFJNW1CLEdBQWdEO2FBQ3JFeW9CLGNBQWM5QixHQUFHQyxLQUFJNW1CLEdBQUksT0FSekJ1b0IsYUFRYzVCLEdBQUdDLEtBQUk1bUIsR0FBZ0Q7SUE1RFo7WUFPekQ0bkI7WUFKQUQ7WUFvQkFJO1lBQ0FDO1lBYkFIO1lBS0FDO1lBWUFHO1lBTUFFO1lBUUFDO1lBQ0FDO1lBSUFDO1lBS0FDO1lBT0FDO1lBQ0FDOztHQXFCWTs7Ozs7Ozs7SUFwS29CL0I7SUFBQUc7SUFBQUM7SUFBQUM7SUFBQUU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7O0lBbUZBRTtJQUFBRDtJQUFBSTtJQUFBQztJQUFBSDtJQUFBQztJQUFBRztJQUFBRTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7SUFuRkFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7OztVOzs7Ozs7SUFtRkFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBaUZwQjs7T0FwS29CM0I7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FtRkFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO0lBNkV2Qjs7T0FoS3VCM0Q7T0FBQUc7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FtRkFFO09BQUFEO09BQUFJO09BQUFDO09BQUFIO09BQUFDO09BQUFHO09BQUFFO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7Ozs7Ozs7SUFuRkE2QjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUErTHBCOztPQS9Mb0JiO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO0lBNEx0Qjs7T0E1THNCM0I7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7Ozs7Ozs7Ozs7UUFybkNoQ2xvQjtRQUVBQztRQUlBQztRQTVESjFCO1FBQUFDO1FBU0lDO1FBQ0FDO1FBSUFHO1FBQ0FDO1FBQ0FDO1FBTEFsQjtRQUNBYztRQUNBQztRQWJKUjtRQUFBRTs7Ozs7Ozs7Ozs7O1FBK0JJWTtRQUNBQztRQUNBQztRQUdBQztRQUNBQztRQUVBQztRQUlBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUdBQztRQUNBQzs7UUFxR0FtRDtRQUVBQztRQUlBQztRQTNFSm5DO1FBQUFDO1FBU0lDO1FBQ0FDO1FBSUFJO1FBQ0FDO1FBQ0FDO1FBTEFMO1FBQ0FDO1FBQ0FDO1FBYkpUO1FBQUFFOzs7Ozs7O1FBc0JJYTs7Ozs7UUE0QkFRO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDOztRQXFGQThDO1FBRUFDO1FBSUFDO1FBM0RKOUI7UUFBQUM7UUFTSUM7UUFDQUM7UUFJQVE7UUFDQUM7UUFDQUM7UUFMQVQ7UUFDQUs7UUFDQUM7UUFiSmI7UUFBQUU7Ozs7Ozs7Ozs7OztRQStCSWlCO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBRUFDO1FBSUFDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDOztRQW9HQXFEO1FBRUFDO1FBSUFDO1FBMUVKckM7UUFBQUM7UUFTSUM7UUFDQUM7UUFJQUs7UUFDQUM7UUFDQUM7UUFMQU47UUFDQUM7UUFDQUU7UUFiSlY7UUFBQUU7Ozs7Ozs7UUFzQkllOzs7OztRQTRCQVM7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7O1FBbUNNc007UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7O1FBR1JDO1FBQ0FDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDOztRQU1RQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQzs7UUFHUkM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7O1FBa1pFTztRQUNBQztRQUNBQztRQVhKSjtRQUFBQztRQVlJSTtRQUNBQztRQUlBTTtRQUNBQztRQUNBQztRQUxBUDtRQUNBQztRQUNBQztRQWhCSlo7UUFBQUU7Ozs7Ozs7Ozs7OztRQXlCSWdCO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBRUFDOztRQXdCQWM7UUFDQUM7UUFDQUM7UUEwREF1QjtRQUZBRDtRQWpEQXBCO1FBQ0FDO1FBSUFNO1FBQ0FDO1FBQ0FDO1FBTEFQO1FBQ0FDO1FBQ0FDO1FBZkpYO1FBQUFFOzs7Ozs7Ozs7Ozs7UUE2QkllO1FBRUFDO1FBT0FDO1FBS0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBUUFDO1FBQ0FDOztRQWtEQW1CO1FBQ0FDO1FBQ0FDO1FBWEpKO1FBQUFDO1FBWUlJO1FBQ0FDO1FBSUFRO1FBQ0FDO1FBQ0FDO1FBTEFUO1FBQ0FDO1FBQ0FDO1FBaEJKWjtRQUFBRTs7Ozs7Ozs7Ozs7O1FBeUJJYTtRQUNBQztRQUNBSTtRQUNBQztRQUdBQztRQUVBQzs7UUF3QkFjO1FBQ0FDO1FBQ0FDO1FBMENBdUI7UUFGQUQ7UUF0Q0FwQjtRQUNBQztRQUlBSztRQUNBQztRQUNBQztRQUxBTjtRQUNBQztRQUNBamxCO1FBVkp1a0I7UUFBQUU7Ozs7Ozs7Ozs7OztRQXdCSWU7UUFDQUM7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7UUFDQUM7UUFFQUM7UUFNQUM7UUFDQUM7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDbHlCa0JxRztJQUxDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FyV0w7SUFBQTtJQXNCaEJDO0lBR0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUVBQyxPQUFRQyw2QkFBNEJDO0lBRXBDO0tBREVDO09BQ0YsNEJBRlFGO09BQTRCQztLQU1ULFdBQUEsV0FiM0JOLGNBT29DTTtLQU1yQjs7SUFDakIsT0FBQSx3QkFOSUMsK0JBRGtDRDtHQU9PO09BRzNDRTtZQUlBQyxLQUFLQyxHQUFHQztJQUNWLElBQUlDLElBZkZSLFVBY0tNLElBRVAsT0FGT0EsV0FDQzs7U0FDUkc7O01BQ0UsY0FGRUQsR0FDSkMsR0FDVyxXQUhERixHQUVWRTtNQUNFLFdBREZBO2tCQUFBQTtVQUFBQTs7O0lBR0EsT0FKSUQ7R0FJSDtZQUdDRSxXQUFZZixLQUFLZ0IsS0FBS0MsS0FBS0M7SUFDN0IsR0FEbUJGO0tBQ1MsV0FBQSxzQkFEZGhCO0tBQ0U7O09BRFFpQjtLQUVJLFdBQUEsc0JBRmRqQjtLQUVFOztJQUNEO0tBQVhtQixXQUFXLGNBSGNEO2FBR3pCQyxXQUhlSCxXQUFLQzs7SUFPUCxXQUFBLFdBcENmaEIsY0E2QllEO0lBT0csT0FBQTtHQUFzRDtZQUdyRW9CLFlBQVlGLE1BQU1GO0ksWUFFVixPQUFBLGNBRklFLFFBQU1GO1FBQ2JDO0lBQU8sT0FBUEE7O1lBdUJISSxTQUFRSixLQUFNLE9BeERoQlosVUF3RFVZLEtBQWdCO1lBT3hCSyxTQUFRTCxLQUFNLE9BQUEsMkJBQU5BLEtBQXNCO09BQzlCTTtZQU1FQztJOztHQU1IOzJDQWxFRGYsUUE4Q0VZLFVBY0VHOzs7Ozs7SUFNSDs7T0FsRURmO09BOENFWTs7UTs7O3lEQVFBRTtJQTZCRDs7T0E3QkNBO09BREFEOztROzs7dURBckRGYjtJQXNHTWdCO0lBRUw7O09BeEdEaEI7T0E4Q0VZOztROzs7MERBd0RJSTs7Ozs7OztJQWdCUztJQUtmQztJQUNBQztJQUNBQztJQUNBQztZQTZHSkMsaUJBNUdjakIsR0FBSSxXQUFVLFdBRnhCZSxpQkFFVWYsSUFBMkI7WUE0R3pDa0IsaUJBeEdJQztJQUYwQixTQUUxQkE7S0FDQSxPQUFBO3NFQURBQTtRQURLQyxNQUNMRDtJQURZLE9BQUEsV0FQWk4saUJBT0tPO0dBRWlFO1lBR3RFQyxLQUFLckIsR0FBUSxPQUFrQixnQkFBMUJBLE1BQTBCLGNBQTFCQSxJQUFvQztZQUd2Q3NCLE9BQVFDLEtBQUtDLEtBQUtDO0lBQ3BCLElBQUlyQixNQUFNLGNBREFtQixNQUdORyxVQUhnQkQ7SUFJcEIsaUJBSlVGLFFBQUtDLEtBR1hFLFNBRkF0QjtJQURnQnFCLGlCQUdoQkMsVUFGQXRCOztHQUl3QjtZQU41QnVCLE9BUUdDLEtBQUlDO0lBQ1AsS0FET0EsTUFFQyxPQTdKUnJDO0lBK0ppQjtLQURQc0MsT0FISEQ7S0FHTEUsT0FIS0Y7S0FJREcsV0FBVyxjQURmRDtLQUVJRSxVQUFVLDRCQUxiTCxRQWpKSGhDO0tBdUpNc0MsYUFBYSx5QkFIVEo7NkI7SUFPRTtLQUhOMUI7UUFIQTRCLDRCQUNBQyxTQUNBQztTQUVrQyxrREFMOUJKLE1BcEpWbEM7O0tBMkpNNEIsTUFyS05oQyxVQWtLTVk7S0FJQXFCO0lBbEJKSCxPQVVBUyxNQU9JUCxLQUNBQztrQkFFbUJGO0tBQ3JCLEdBZERLLFNBZ0JTTyxRQWhCVFAsUUFQRE4sT0F1QlVhLE9BTk5YLEtBQ0FDO0tBQ0osT0FuQkFILE9Bb0J1QkMsS0FIbkJDLEtBQ0FDO0lBTTJCO0lBSi9CLHlCQVZRSztPQVFKTCxtQkFKQXJCLEtBWUosT0FUSW9CO0lBUUosTUFBQTtHQUNHO1lBTUxZLE9BQU9wQyxHQUFHRyxLQUFLQyxLQUFJaUM7SUFDK0MsVUFBQSxjQUQzRHJDO0lBQ1QsOENBRFlHLEtBQUtDO0lBRWpCLE9BQUEsOEJBRlNKLEdBQUdHLEtBQUtDLEtBQUlpQztHQUVNO1lBZXpCQyxPQUFPQyxJQUFJQyxNQUFLQyxJQUFJQyxNQUFNdEM7SUFDNkMsVUFBQSxjQURoRW1DO0lBQ1QsOENBRGFDLE1BQWVwQztJQUU2QyxVQUFBLGNBRnZEcUM7SUFFbEIsOENBRnNCQyxNQUFNdEM7SUFHNUIsT0FBQSw4QkFIU21DLElBQUlDLE1BQUtDLElBQUlDLE1BQU10QztHQUdRO1lBYWxDdUMsYUFBYUosSUFBSUMsTUFBS0ksT0FBT0YsTUFBTXRDO0lBQ29DLFVBQUEsY0FEMURtQztJQUNmLDhDQURtQkMsTUFBa0JwQztJQUVyQzs7TUFGK0JzQztNQUFNdEM7MkJBQWJ3QztJQU14QixPQUFBLG9DQU5lTCxJQUFJQyxNQUFLSSxPQUFPRixNQUFNdEM7R0FNUTtZQTBCL0N5QyxpQkF2QllOLElBQUdFO0lBQ2IsR0FBRyxzQkFET0YsSUFBR0UsS0FFUjtJQUVRO0tBQVBLLE9BQU8sY0FKSFA7S0FLSlEsT0FBTyxjQUxBTjtLQU1QckMsTUFBTSx5QkFGTjBDLE1BQ0FDO0tBSUZqRCxJQUZJLDhCQVBFeUMsT0FBR0UsT0FNUHJDO2lCQUdGTixJQUxFZ0QsT0FDQUMsWUFBQUEsT0FEQUQsZUFLRmhEO0dBQU87WUFjYmtEO0k7O0dBRlcsSUFBUEMsT0FBTywwQkFFWEQ7R0FBQSxTQUFBRSxjQUFBQyxHQUFBLE9BQUEsV0FGSUYsTUFFSkUsR0FBa0Q7WUFFOUNDLE1BQU1iLElBQUdFO0lBQ1gsR0FBRyxzQkFES0YsSUFBR0UsS0FFTjtJQUVRO0tBQVBLLE9BQU8sY0FKTFA7S0FLRlEsT0FBTyxjQUxGTjtLQU1ULE1BQUEseUJBRklLLE1BQ0FDO0lBQ0osVUFBQTtJQUFpQyxVQUFBLDhCQU4zQlIsT0FBR0UsT0FJTEs7SUFFNkIsT0FBQTtHQUFrRDtZQVFuRk8sS0FBT0MsS0FBVWxELEtBQUltRCxLQUFJbEQ7SUFDM0IsR0FEU2lELFNBQU1FLE1BQU5GLFFBQUFuRCxNQUFNcUQsY0FBTnJEO0lBQ0MsSUFBTnNELFFBdE9GbEQsWUFxT3lCRixNQUFsQkYsS0FBVUM7SUEvT2pCRixxQkErT09DLEtBQ0xzRCxPQUR1QnBEO0lBR2pCLElBQU5xRCxNQUFNLHVCQUhpQnJELE1BQUprRCxLQUFkcEQsS0FDTHNEO0lBR0osWUFESUMsVUFBQUE7R0FDOEI7WUFxQmhDQyxPQUFRM0QsR0FBUUc7SUF4UWhCRCx1QkF3UWdCQyxRQUFSSDtJQUVWLE9BQUEsb0JBRlVBLEdBQVFHO0dBRUM7WUFHakJ5RCxPQUFRNUQsR0FBUUc7SUE3UWhCRCx1QkE2UWdCQyxRQUFSSDtJQUVWLE9BQUEsb0JBRlVBLEdBQVFHO0dBRUM7WUFHakIwRCxPQUFRN0QsR0FBUUc7SUFsUmhCRCx1QkFrUmdCQyxRQUFSSDtJQUVWLE9BQUEsb0JBRlVBLEdBQVFHO0dBRUM7WUFHakIyRCxhQUFjOUQsR0FBUUcsS0FBWTREO0lBdlJsQzdELHVCQXVSc0JDLFFBQVJIO0lBRWhCLE9BQUEsb0JBRmdCQSxHQUFRRyxLQUFZNEQ7R0FFZjtZQUduQkMsT0FBUWhFLEdBQVFHLEtBQVk0RDtJQTVSNUI3RCx1QkE0UmdCQyxRQUFSSDtJQUVWLE9BQUEsb0JBRlVBLEdBQVFHLEtBQVk0RDtHQUVUO1lBR25CRSxPQUFRakUsR0FBUUcsS0FBWTREO0lBalM1QjdELHVCQWlTZ0JDLFFBQVJIO0lBRVYsT0FBQSxvQkFGVUEsR0FBUUcsS0FBWTREO0dBRVQ7WUFHbkJHLGVBQWVDO0lBQUksT0FBSkE7R0FBdUQ7WUFFdEVDLG1CQUFtQmpCLEdBQUdoRTtJQUN4QixVQURxQmdFLHFDQUFBQTs7SUFFSixVQUFBLFdBdlVmL0QsY0FxVXNCRCxLQUFIZ0U7SUFFSixPQUFBO0dBQStEO1lBRzlFa0Isa0JBQWtCbEIsR0FBR2hFO0lBQ3ZCLFVBRG9CZ0UsMENBQUFBOztJQUVILFVBQUEsV0E1VWYvRCxjQTBVcUJELEtBQUhnRTtJQUVILE9BQUE7R0FBK0Q7R0FpQjlFO0lBSkFtQjtNQXRWQWpGOztTQTBWSThELEdBQUdoRTtTQUNMLGtCQURFZ0UsS0FBQUEsaUJBRUc7U0FDWSxVQUFBLFdBaFduQi9ELGNBNlZPRCxLQUFIZ0U7U0FHZSxPQUFBO1FBQStEOzhCQUwvRCxPQUFFO0lBUXJCb0I7TUFoV0FsRjs7U0F3V0k4RCxHQUFHaEU7U0FDTCxRQURFZ0UsS0FBQUEsT0FFRztTQUNZLFVBQUEsV0E5V25CL0QsY0EyV09ELEtBQUhnRTtTQUdlLE9BQUE7UUFBK0Q7O1NBUjlFQSxHQUFHaEU7U0FDTCxRQURFZ0UsR0FFRztTQUNZLFVBQUEsV0F6V25CL0QsY0FzV09ELEtBQUhnRTtTQUdlLE9BQUE7UUFBK0Q7WUFRbEZxQixtQkFBbUJyQixHQUFHaEU7SUFDeEIsUUFEcUJnRSxHQUVoQjtJQUNZLFVBQUEsV0FwWGYvRCxjQWlYc0JELEtBQUhnRTtJQUdKLE9BQUE7R0FBK0Q7WUFHOUVzQixrQkFBa0J6RSxHQUFHRztJQUFNLE9BcEQzQitELGVBb0QwQyxvQkFBeEJsRSxHQUFHRztHQUEwQztZQUMvRHVFLHVCQUF1QjFFLEdBQUdHO0lBQU0sT0FyRGhDK0QsZUFxRHVELGFBQUEsb0JBQWhDbEUsR0FBR0c7R0FBbUQ7T0FDN0V3RTtZQUNBQyx3QkFBd0I1RSxHQUFHRyxLQUFJZ0Q7SUFBSSxPQUFBLG9CQUFYbkQsR0FBR0csa0JBQUlnRDtHQUFrQztZQUNqRTBCLFdBQVc3RSxHQUFHRyxLQUFNLE9BeERwQitELGVBOUJBUCxPQXNGVzNELEdBQUdHLE1BQW1DO1lBQ2pEMkUsZ0JBQWdCOUUsR0FBR0c7SUFBTSxPQXpEekIrRCxlQXlEZ0QsYUF2RmhEUCxPQXVGZ0IzRCxHQUFHRztHQUE0QztZQUUvRDRFLGdCQUFnQi9FLEdBQUdHLEtBQUlnRDtJQXBEdkJrQixrQkFvRHVCbEI7SUFDekIsT0EzRUVXLGFBMEVnQjlELEdBQUdHLEtBQUlnRDtHQUVMO1lBR2xCNkIscUJBQXFCaEYsR0FBR0csS0FBSWdEO0lBekQ1QmtCLGtCQXlENEJsQjtXQS9FNUJXLGFBK0VxQjlELEdBQUdHLGtCQUFJZ0Q7R0FHRDtPQUczQjhCO1lBQ0FDLHdCQUF3QmxGLEdBQUdHO0lBQU0sT0FBTyxhQUFBLG9CQUFoQkgsR0FBR0c7R0FBa0M7T0FDN0RnRjtZQUNBQyx5QkFBeUJwRixHQUFHRyxLQUFJZ0Q7SUFBSSxPQUFBLG9CQUFYbkQsR0FBR0csa0JBQUlnRDtHQUFrQztZQUNsRWtDLFlBQVlyRixHQUFHRyxLQUFNLE9BeEdyQndELE9Bd0dZM0QsR0FBR0csS0FBa0I7WUFDakNtRixpQkFBaUJ0RixHQUFHRyxLQUFNLE9BQU8sYUF6R2pDd0QsT0F5R2lCM0QsR0FBR0csTUFBMkI7WUFFL0NvRixpQkFBaUJ2RixHQUFHRyxLQUFJZ0Q7SUEzRXhCaUIsbUJBMkV3QmpCO0lBQzFCLE9BN0ZFVyxhQTRGaUI5RCxHQUFHRyxLQUFJZ0Q7R0FFTjtZQUdsQnFDLHNCQUFzQnhGLEdBQUdHLEtBQUlnRDtJQWhGN0JpQixtQkFnRjZCakI7V0FqRzdCVyxhQWlHc0I5RCxHQUFHRyxrQkFBSWdEO0dBR0Y7T0FHM0JzQztZQUNBQywyQkFBMkIxRixHQUFHRztJQUFNLE9BQWEsaUJBQVEsb0JBQTlCSCxHQUFHRztHQUFpRDtPQUMvRXdGO1lBQ0FDLHVCQUF1QjVGLEdBQUdHO0lBQU0sT0FBQSxpQkFBTyxvQkFBaEJILEdBQUdHO0dBQWtDO09BQzVEMEY7WUFDQUMsd0JBQXdCOUYsR0FBR0csS0FBSWdEO0lBQUksT0FBQSxvQkFBWG5ELEdBQUdHLEtBQTRCLGlCQUF4QmdEO0dBQWtDO09BQ2pFNEM7WUFDQUMsNEJBQTRCaEcsR0FBR0csS0FBSWdEO0lBQUksT0FBQSxvQkFBWG5ELEdBQUdHLEtBQTRCLGlCQUF4QmdEO0dBQWlEO1lBQ3BGOEMsZUFBZWpHLEdBQUdHLEtBQU0sT0F6SHhCeUQsT0F5SGU1RCxHQUFHRyxLQUFpQztZQUNuRCtGLG9CQUFvQmxHLEdBQUdHO0lBQU0sT0FBYSxpQkExSDFDeUQsT0EwSG9CNUQsR0FBR0c7R0FBMEM7WUFDakVnRyxXQUFXbkcsR0FBR0csS0FBTSxPQTNIcEJ5RCxPQTJIVzVELEdBQUdHLEtBQWtCO1lBQ2hDaUcsZ0JBQWdCcEcsR0FBR0csS0FBTSxPQUFBLGlCQTVIekJ5RCxPQTRIZ0I1RCxHQUFHRyxNQUEyQjtZQUM5Q2tHLFlBQVlyRyxHQUFHRyxLQUFJZ0QsR0FBSSxPQTlHdkJhLE9BOEdZaEUsR0FBR0csS0FBSWdELEdBQWtCO1lBQ3JDbUQsaUJBQWlCdEcsR0FBR0csS0FBSWdEO0lBQUksT0EvRzVCYSxPQStHaUJoRSxHQUFHRyxLQUFxQixpQkFBakJnRDtHQUEyQjtZQUVuRG9ELG9CQUFvQnZHLEdBQUdHLEtBQUlnRDtJQWpGM0JtQixrQkFpRjJCbkI7SUFFaEIsT0FuSFhhLE9BaUhvQmhFLEdBQUdHLEtBQUlnRDtHQUVBO1lBRzNCcUQseUJBQXlCeEcsR0FBR0csS0FBSWdEO0lBdEZoQ21CLGtCQXNGZ0NuQjtJQUdyQixPQXpIWGEsT0FzSHlCaEUsR0FBR0csS0FHakIsaUJBSHFCZ0Q7R0FHSTtZQUdwQnNELHNCQUFzQnpHLEdBQUdHO0lBQU0sT0FBYSxvQkFBQSxvQkFBdEJILEdBQUdHO0dBQXdDO1lBRWpFdUcsMkJBQTJCMUcsR0FBR0c7SUFDaEQsT0FBYSxvQkFBQSxpQkFBUSxvQkFEd0JILEdBQUdHO0dBQ0w7T0FHekJ3RztZQUNBQyx1QkFBdUI1RyxHQUFHRztJQUFNLE9BQUEsaUJBQU8sb0JBQWhCSCxHQUFHRztHQUFrQztPQUM1RDBHO1lBQ0FDLHdCQUF3QjlHLEdBQUdHLEtBQUlnRDtJQUFJLE9BQUEsb0JBQVhuRCxHQUFHRyxLQUE0QixpQkFBeEJnRDtHQUFrQztZQUNqRTRELHVCQUF1Qi9HLEdBQUdHLEtBQUlnRDtJQUFJLE9BQUEsb0JBQVhuRCxHQUFHRyxLQUE0QixvQkFBeEJnRDtHQUF3QztZQUV0RTZELDRCQUE0QmhILEdBQUdHLEtBQUlnRDtJQUNyRCxPQUFBO2FBRDhDbkQsR0FBR0csS0FDN0IsaUJBQVEsb0JBRHlCZ0Q7R0FDUjtZQUczQjhELGVBQWVqSCxHQUFHRztJQUFNLE9BQWEsb0JBdEpyRDBELE9Bc0orQjdELEdBQUdHO0dBQWlDO1lBQ25EK0csb0JBQW9CbEgsR0FBR0c7SUFBTSxPQUFhLG9CQUFBLGlCQXZKMUQwRCxPQXVKb0M3RCxHQUFHRztHQUEwQztZQUNqRWdILFdBQVduSCxHQUFHRyxLQUFNLE9BeEpwQzBELE9Bd0oyQjdELEdBQUdHLEtBQWtCO1lBQ2hDaUgsZ0JBQWdCcEgsR0FBR0csS0FBTSxPQUFBLGlCQXpKekMwRCxPQXlKZ0M3RCxHQUFHRyxNQUEyQjtZQUM5RGtILFlBQVlySCxHQUFHRyxLQUFJZ0QsR0FBSSxPQTNJdkJjLE9BMklZakUsR0FBR0csS0FBSWdELEdBQWtCO1lBQ3JDbUUsaUJBQWlCdEgsR0FBR0csS0FBSWdEO0lBQUksT0E1STVCYyxPQTRJaUJqRSxHQUFHRyxLQUFxQixpQkFBakJnRDtHQUEyQjtZQUNuRG9FLGdCQUFnQnZILEdBQUdHLEtBQUlnRDtJQUFJLE9BN0kzQmMsT0E2SWdCakUsR0FBR0csS0FBcUIsb0JBQWpCZ0Q7R0FBaUM7WUFDeERxRSxxQkFBcUJ4SCxHQUFHRyxLQUFJZ0Q7SUFBSSxPQTlJaENjLE9BOElxQmpFLEdBQUdHLEtBQXFCLGlCQUFRLG9CQUF6QmdEO0dBQTBDOztJQUV0RXNFO01BMWNBbkksa0JBbVhBbUYsb0JBQ0FDO0lBMEZBZ0Q7TUE5Y0FwSSxrQkFvWEFvRix5QkFEQUQ7SUErRkFrRDtNQWxkQXJJLGtCQXFZQTJGLHFCQUNBQztJQWdGQTBDO01BdGRBdEksa0JBc1lBNEYsMEJBREFEO0lBcUZBNEMsZUExZEF2SSxrQkF1WEF1RixhQUNBQztJQW1HQWdELG9CQTNkQXhJLGtCQXdYQXdGLGtCQURBRDtJQXFHQWtELGdCQTVkQXpJLGtCQXlZQStGLGNBQ0FDO0lBbUZBMEMscUJBN2RBMUksa0JBMFlBZ0csbUJBREFEO0lBc0ZBNEM7TUEvZEEzSSxrQkFxWEFxRixxQkFDQUM7SUE2R0FzRDtNQW5lQTVJLGtCQXNYQXNGLDBCQURBRDtJQWtIQXdEO01BdmVBN0ksa0JBdVlBNkYsc0JBQ0FDO0lBbUdBZ0Q7TUEzZUE5SSxrQkF3WUE4RiwyQkFEQUQ7SUF3R0FrRDtNQS9lQS9JLGtCQTBYQXlGLGtCQUtBQztJQWlIQXNEO01BaGZBaEosa0JBK1hBMEYsdUJBTEFEO0lBd0hBd0Q7TUFsZkFqSixrQkE0WUFpRyxtQkFLQUM7SUFxR0FnRDtNQXRmQWxKLGtCQWlaQWtHLHdCQUxBRDtJQThHQWtEO01BMWZBbkosa0JBeVpBcUcsb0JBQ0FDO0lBb0dBOEM7TUE5ZkFwSixrQkEwWkFzRyx5QkFEQUQ7SUF5R0FnRDtNQWxnQkFySixrQkEyWkF1RyxxQkFDQUM7SUEwR0E4QztNQXRnQkF0SixrQkE0WkF3RywwQkFEQUQ7SUErR0FnRCxpQkExZ0JBdkosa0JBaWFBNkcsYUFDQUM7SUF5R0EwQyxvQkEzZ0JBeEosa0JBa2FBOEcsa0JBREFEO0lBMkdBNEMsaUJBNWdCQXpKLGtCQW1hQStHLGNBQ0FDO0lBeUdBMEMscUJBN2dCQTFKLGtCQW9hQWdILG1CQURBRDtJQTRHQTRDO01BL2dCQTNKLGtCQXVaQW1HLHdCQUNBQztJQTJIQXdEO01BbmhCQTVKLGtCQXdaQW9HLDZCQURBRDtJQWdJQTBEO01BdmhCQTdKLGtCQTZaQXlHLHlCQUNBQztJQTZIQW9EO01BM2hCQTlKLGtCQThaQTBHLDhCQURBRDtJQWtJQXNELG1CQS9oQkEvSixrQkErWkEyRyxpQkFDQUM7SUFnSUFvRDtNQWhpQkFoSyxrQkFnYUE0RyxzQkFEQUQ7SUFtSUFzRDtNQWxpQkFqSyxrQkFzYUFpSCxzQkFLQUM7SUEySEFnRDtNQXRpQkFsSyxrQkEyYUFrSCwyQkFMQUQ7SUFvSUFrRDtNQTFpQkFuSyxrQkFpYmdCbUgsd0JBRUFDO0lBMkhoQmdEO01BOWlCQXBLLGtCQW1iZ0JvSCw2QkFGQUQ7SUFpSWhCa0Q7TUFsakJBckssa0JBMmJnQnlILHlCQUVBQztJQXlIaEI0QztNQXRqQkF0SyxrQkE2YmdCMEgsOEJBRkFEO0lBK0hoQjhDO01BMWpCQXZLLGtCQWljZ0IySCxpQkFDQUM7SUF5SGhCNEM7TUEzakJBeEssa0JBa2NnQjRILHNCQURBRDtJQTJIaEI4QztNQTVqQkF6SyxrQkF1Y0FpSSxrQkFDQUM7SUFxSEF3QztNQTdqQkExSyxrQkF3Y0FrSSx1QkFEQUQ7SUF3SEEwQztNQS9qQkEzSyxrQkF1YmdCcUgsb0JBQ0FDO0lBMkloQnNEO01BbmtCQTVLLGtCQXdiZ0JzSCx5QkFEQUQ7SUFnSmhCd0Q7TUF2a0JBN0ssa0JBeWJnQnVILHFCQUNBQztJQWlKaEJzRDtNQTNrQkE5SyxrQkEwYmdCd0gsMEJBREFEO0lBc0poQndELGlCQS9rQkEvSyxrQkFtY2dCNkgsYUFDQUM7SUE0SWhCa0Qsb0JBaGxCQWhMLGtCQW9jZ0I4SCxrQkFEQUQ7SUE4SWhCb0QsaUJBamxCQWpMLGtCQXFjQStILGNBQ0FDO0lBNElBa0QsaUJBbGxCQWxMLGtCQXNjQWdJLG1CQURBRDtZQStJQW9EO0lBQ0YsT0FBQTtHQUFrRTtZQUdoRUM7SUFDRixPQUFBO0dBQW1FO1lBSWpEQyxpQkFBaUI3SztJQUNuQyxHQS9sQkVUO0tBaW1CeUMsR0FBaEMsa0JBSHdCUyxXQUdRLGNBSFJBO2lDQUFBQTtLQUs1QixPQWRMMks7O0lBZTRDLEdBQWhDLGtCQU5xQjNLLFdBTVcsY0FOWEE7Z0NBQUFBO0lBUTlCLE9BakJIMks7R0FpQnNCO1lBR05HLGtCQUFrQjlLO0lBQ3BDLEdBMW1CRVQ7S0E0bUJvQixHQUFYLGtCQUh5QlMsV0FHZCxjQUhjQTtpQ0FBQUE7S0FLN0IsT0FyQkw0Szs7SUFzQnVCLEdBQVgsa0JBTnNCNUssV0FNWCxjQU5XQTtnQ0FBQUE7SUFRL0IsT0F4Qkg0SztHQXdCdUI7WUFHZEcsd0JBQXdCN0ssR0FBR0c7SUFDdEMsT0F2QmtCd0ssaUJBOUJoQlYsc0JBb0RpQ2pLLEdBQUdHO0dBQ1M7WUFHcEMySyx3QkFBd0I5SyxHQUFHRztJQUN0QyxPQTNCa0J3SyxpQkExQmhCVCx5QkFvRGlDbEssR0FBR0c7R0FDUztZQUc3QzRLLGlCQUFpQi9LLEdBQUdHO0lBQU0sT0E5QlZ3SyxpQkFkaEJOLGVBNENpQnJLLEdBQUdHO0dBQThDO1lBQ2xFNkssaUJBQWlCaEwsR0FBR0c7SUFBTSxPQS9CVndLLGlCQWJoQkwsa0JBNENpQnRLLEdBQUdHO0dBQThDO1lBRXpEOEsseUJBQXlCakwsR0FBR0c7SUFDdkMsT0F2QmtCeUssa0JBekNoQlgsc0JBK0RrQ2pLLEdBQUdHO0dBQ1M7WUFHckMrSyx5QkFBeUJsTCxHQUFHRztJQUN2QyxPQTNCa0J5SyxrQkFyQ2hCVix5QkErRGtDbEssR0FBR0c7R0FDUztZQUc5Q2dMLGtCQUFrQm5MLEdBQUdHO0lBQU0sT0E5Qlh5SyxrQkF6QmhCUCxlQXVEa0JySyxHQUFHRztHQUErQztZQUNwRWlMLGtCQUFrQnBMLEdBQUdHO0lBQU0sT0EvQlh5SyxrQkF4QmhCTixrQkF1RGtCdEssR0FBR0c7R0FBK0M7WUFJcEVrTCxrQkFBa0JyTCxHQUFHRyxLQUFJTDtJQTlSekIwRSxtQkE4UnlCMUU7SUFDM0IsT0FoRkVpSyxrQkErRWtCL0osR0FBR0csS0FBSUw7R0FFTjtZQUduQndMLGtCQUFrQnRMLEdBQUdHLEtBQUlMO0lBblN6QjBFLG1CQW1TeUIxRTtJQUMzQixPQXBGRWtLLHVCQW1Ga0JoSyxHQUFHRyxLQUFJTDtHQUVOO1lBUW5CeUwsaUJBQWtCdkwsR0FBUUcsS0FBSUw7SUFBSSxPQUFBLGNBQWhCRSxHQUFRRyxLQUFnQywwQkFBNUJMO0dBQWtEO1lBRWhGMEwsZ0JBQWlCeEwsR0FBUUcsS0FBSUw7SUFJL0IsSUFBSTJMLFdBSjJCM0wsSUFBQUEsSUFBQUE7SUFLL0IsT0FBQSxjQUxtQkUsR0FBUUcsS0FLSCwwQkFEcEJzTDtHQUMwQztZQUc1Q0MsaUJBQWtCMUwsR0FBUUc7SUFBa0IsVUFBQSxjQUExQkgsR0FBUUc7SUFBa0IsT0FBQTtHQUF5QjtZQUVyRXdMLGdCQUFpQjNMLEdBQVFHO0lBQzNCLElBQW9CLE1BQUEsY0FEREgsR0FBUUcsTUFDdkJMLElBQUk7SUFDUixjQURJQSxJQUFBQSxjQUFBQTtHQUMyQjtZQUc3QjhMLGNBQWU1TCxHQUFRRyxLQUFJTDtJQUM3QixVQUQ2QkEsbUNBQUFBOztLQTlWWixVQUFBLFdBalZmVixjQStVcUJELEtBZ1dNVztLQTlWWjs7SUFnV2pCLE9BQUEsY0FGaUJFLEdBQVFHLEtBRVIsMEJBRllMO0dBRVU7WUFHckMrTCxhQUFjN0wsR0FBUUcsS0FBSUw7SUFDNUIsVUFENEJBLHNDQUFBQTs7S0E5VlgsVUFBQSxXQXRWZlYsY0FvVm9CRixPQWdXTVk7S0E5Vlg7O1FBZ1diMkwsV0FGd0IzTCxJQUFBQSxJQUFBQTtJQUc1QixPQUFBLGNBSGdCRSxHQUFRRyxLQUdQLDBCQURic0w7R0FDbUM7WUFHckNLLFVBQVc5TCxHQUFRRztJQUFrQixVQUFBLGNBQTFCSCxHQUFRRztJQUFrQixPQUFBO0dBQWtCO1lBRXZENEwsU0FBVS9MLEdBQVFHO0lBQ3BCLElBQW9CLE1BQUEsY0FEUkgsR0FBUUcsTUFDaEJMLElBQUk7SUFDUixjQURJQSxJQUFBQSxjQUFBQTtHQUMyQjtZQUtia00sa0JBQWtCbE0sR0FDcEMsT0EvckJFUCxlQThyQmtDTyxRQUFBQSxFQUtqQjtZQUdSbU0scUJBQXFCak0sR0FBR0csS0FBSUw7SUFBSSxPQWpNekM4SSwwQkFpTThCNUksR0FBR0csS0FBSUw7R0FBaUQ7WUFDN0VvTSxxQkFBcUJsTSxHQUFHRyxLQUFJTDtJQUFJLE9BdE16QzZJLHNCQXNNOEIzSSxHQUFHRyxLQUFJTDtHQUFpRDtZQUU3RXFNLHFCQUFxQm5NLEdBQUdHO0lBQ25DLE9BWmtCNkwsa0JBak1oQnRELHlCQTRNOEIxSSxHQUFHRztHQUNhO1lBR3JDaU0scUJBQXFCcE0sR0FBR0c7SUFDbkMsT0FoQmtCNkwsa0JBck1oQnZELHNCQW9OOEJ6SSxHQUFHRztHQUNhO1lBRzlDa00sa0JBQWtCck0sR0FBR0csS0FBSUw7SUFuWHpCeUUsbUJBbVh5QnpFOzs7UUFqdEJ6QlAsK0JBaXRCeUJPLE9BRXZCMkwsTUFGdUIzTDtTQUV2QjJMLE1BRnVCM0w7O0lBRzNCLE9BL0tFMEosMkJBNEtrQnhKLEdBQUdHLEtBRW5Cc0w7R0FDcUI7WUFHdkJhLGtCQUFrQnRNLEdBQUdHLEtBQUlMO0lBelh6QnlFLG1CQXlYeUJ6RTs7O1FBdnRCekJQLCtCQXV0QnlCTyxPQUV2QjJMLE1BRnVCM0w7U0FFdkIyTCxNQUZ1QjNMOztJQUczQixPQXpMRXlKLHNCQXNMa0J2SixHQUFHRyxLQUVuQnNMO0dBQ3FCO1lBR3ZCYyxjQUFjdk0sR0FBR0c7SUFBTSxPQS9CUDZMLGtCQXBMaEJsRCxrQkFtTmM5SSxHQUFHRztHQUErQztZQUNoRXFNLGNBQWN4TSxHQUFHRztJQUFNLE9BaENQNkwsa0JBckxoQm5ELGVBcU5jN0ksR0FBR0c7R0FBK0M7WUFNNURzTSxZQUFVek0sR0FBRUcsS0FBTSxPQS9DdEIyTCxVQStDYzlMLEdBQUVHLEtBQXNCO1lBQ2xDdU0sVUFBVTFNLEdBQUVHLEtBQUlnRDtJQUFJLE9BQUEsY0FBVm5ELEdBQUVHLEtBQXlCLDBCQUFyQmdEO0dBQTJDO1lBQzNEd0osY0FBYzNNLEdBQUVHLEtBQU0sT0F0YzFCd0QsT0FzY2tCM0QsR0FBRUcsS0FBa0I7WUFDbEN5TSxjQUFjNU0sR0FBRUcsS0FBSWdELEdBQUksT0F4YjVCVyxhQXdia0I5RCxHQUFFRyxLQUFJZ0QsR0FBd0I7WUFDNUMwSixhQUFhN00sR0FBRUcsS0FBTSxPQW5jekJ5RCxPQW1jaUI1RCxHQUFFRyxLQUFrQjtZQUNqQzJNLGFBQWE5TSxHQUFFRyxLQUFJZ0QsR0FBSSxPQXJiM0JhLE9BcWJpQmhFLEdBQUVHLEtBQUlnRCxHQUFrQjtZQUNyQzRKLGFBQWEvTSxHQUFFRyxLQUFNLE9BaGN6QjBELE9BZ2NpQjdELEdBQUVHLEtBQWtCO1lBQ2pDNk0sYUFBYWhOLEdBQUVHLEtBQUlnRCxHQUFJLE9BbGIzQmMsT0FrYmlCakUsR0FBRUcsS0FBSWdELEdBQWtCOzs7OztZQVByQ3NKLGFBRUFFLGVBRUFFLGNBRUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFMQUwsV0FFQUUsZUFFQUUsY0FFQUU7Ozs7Ozs7Ozs7Ozs7OztZQVVFQyxZQUFVak4sR0FBRUcsS0FBTSxPQWxGeEJ1TCxpQkFrRmdCMUwsR0FBRUcsS0FBNkI7WUFDekMrTSxZQUFVbE4sR0FBRUcsS0FBSWdELEdBQUksT0E3RjFCb0ksaUJBNkZnQnZMLEdBQUVHLEtBQUlnRCxHQUE2QjtHQWN0QztJQWJQZ0s7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7WUFQQVAsYUFFQUUsaUJBRUFFLGdCQUVBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBTEFMLGFBRUFFLGlCQUVBRSxnQkFFQUU7Ozs7Ozs7Ozs7Ozs7OztJQVFPLGNBdGNidEo7Ozs7Ozs7O09BdkVKckI7T0FBQTNCO09BQUFEO09BQUE0QjtPQUFBRztPQUFBRTtPQUFBakM7T0FBQUM7T0FFSWtDO09BdlBBNUQ7T0FjQUs7T0F1SEFnQjtPQUNBQztPQUNBQztPQUNBQztPQVdBVztPQTdIQXpCO09BVUFLO09BdEJBWDs7Ozs7O09BdUlBeUI7Ozs7O09BbUNBZTtPQWlCQUU7T0FnQkFLO09BZ0RBVTtPQWdiQTBJO09BUkFGO09BTUFDO09BWEFGO09BTEFEO09BVkFIO09BUUFFO09BVkFIO09BL0xBekQ7T0FEQUQ7T0FzQkFTO09BREFEO09BakNBWDtPQUpBRDtPQXlCQVM7T0FKQUQ7T0FGQUQ7T0FEQUQ7T0EwQkFTO09BSkFEO09BNUJBWDtPQUpBRDtPQXlCQVM7T0FKQUQ7T0F5REFtQjtPQURBRDtPQU9BRztPQUpBRDtPQWZBTDtPQUpBRDtPQVlBRztPQUpBRDtPQXVNQW9EO09BQ0FDO09BYkFIO09BTUFDO09BZFNIO09BSUFDO09BUEFIO09BQ0FDO09BNUVUbEI7T0FEQUQ7T0FoRUFqQjtPQURBRDtPQUdBRztPQURBRDtPQTJEU2U7T0FKQUQ7T0FyRVRuQjtPQUpBRDtPQVlBRztPQUpBRDtPQW9GQXdCO09BQ0FDO09BU0FFO09BTEFEO09BYlNKO09BSUFDO09BNUVUdEI7T0FKQUQ7T0F2Q0FiO09BREFEO09BR0FHO09BREFEO09BZEFMO09BSkFEO09BWUFHO09BSkFEO09BOEVBMkI7T0FEQUQ7T0FHQUc7T0FEQUQ7T0FkQUw7T0FKQUQ7T0FZQUc7T0FKQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0lDaGlCUztLQUFQc0QsT0FBTztLQUNQQyxPQUFPO0lBQ1UsR0FBQSw0QkFGakJELE1BQ0FDO0tBQ0ssTUFBQTtJQWRYOzs7SUEwSEssSUFkT0MsNEJBY1A7YUFiT0MsYTtJQUpPO0tBQUEsVUFHUEQsT0FDQUM7S0FSSUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FrQkpDLG9EO0tBSE8sVUFmSEosUUFBQUMsYUFBQUMsS0FBQUMsS0FrQkpDOzs7O0lBdUJQO0tBaEJXSjtLQUFBQztLQUFBQztLQUFBQztLQWdCWDtLQUhPQyxvRDtLQUhPLFVBVkhKLFFBQUFDLGFBQUFDLEtBQUFDLEtBYUpDOzs7O1FBUU5OLGdCQUNBQztJQUoyQixXQUczQkQsT0FDQUM7OztJQThCRDtLQUFBOztLQVpPQztLQUNBRTtLQUNBQztLQUNBRjtLQU1BRyxvRDs7OztrQkFUQUosUUFHQUMsYUFGQUMsS0FDQUM7a0JBRkFILFFBR0FDLGFBRkFDLEtBQ0FDLEtBT0FDOzs7O0lBdUNQO0tBQUE7O0tBbEJPSjtLQUNBRTtLQUNBQztLQUNBRjtLQVFBSTtLQUNBQztLQUNBQztLQUNBQzs7OztrQkFkQVIsUUFHQUMsYUFGQUMsS0FDQUM7a0JBU0FFLFVBR0FHLGVBRkFGLE9BQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJCc0I7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7MEI7O0k7Ozs7OzsrQjs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7Ozs7OztvQkNpQjJCO3FCQVVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsVDNERTtZQUVBQyxNQUFNQyxTQUFRQyxHQUFFQztJQUNsQjttQkFBdUIsaUNBRGZGLFNBQVFDLEdBQUVDOztHQUN5QztZQUd6REMsS0FBS0g7SUFBVSxrQkFBdUIsMkJBQWpDQTtHQUE0RDtZQUNqRUksTUFBTUMsUUFBUyxPQUFBLDJCQURmRixNQUNNRSxRQUFvQztZQUMxQ0MsT0FBT0M7SUFBTyxrQkFBdUIsMkJBQTlCQTtHQUFxRDtZQUM1REMsUUFBUUMsSUFBR0MsSUFBSyxPQUFBLHNCQUFSRCxJQUFHQyxJQUFZO09BQ3ZCQztZQUVBQyxLQUFLQSxNQUFLQztJQUNaLEtBRFlBLEdBRUo7O0tBQ2EsSUFBYUMsa0JBQU5DO0tBQWlCLGVBSHRDSCxNQUdxQkcsT0FBTUQ7SUFBMEM7SUFBdkQsT0FBQSwwQkFIVEQ7R0FHZ0U7WUFHMUVHLFVBQVVDLEdBQUVDLEdBQUksT0FOaEJOLEtBTVVLLEdBQWEsV0FSdkJOLFNBUVlPLElBQXNCO1lBQ2xDQyxRQUFRbkIsZ0JBQVksT0FicEJHLEtBYVFILFNBQXdCO1lBQ2hDb0IsaUJBQXVCLE9BcEJ2QnRCLEtBb0IyQjtZQUMzQnVCLGlCQUF1QixPQXJCdkJ2QixLQXFCMkI7WUFFM0J3QixRQUFRQyxHQUFFQztJQUNaLElBQUksVUFBQSxXQURNRCxHQUFFQyxJQUNSO1VBQ0ZDO0tBQzBEO01BRDFEQywwQkFBQUQ7TUFDMEQscUJBQU0sc0JBRGhFQztLQUNPLE9BbEJQcEI7Y0FrQk87O0dBQTJFO1lBR2xGcUIsU0FBU0o7SUFDWDtJQUFBLE9BUEVELHdCQVNHLFdBSE1DLGNBN0JUekIsS0FpQ087R0FDTDtZQUdGOEIsWUFBWWIsTUFBTyxPQUFBLGlDQUFQQSxNQUFrQztZQUU5Q2MsT0FBT2hCOztLQUNLO01BQWFDO01BQU5DO01BQ3VCLE1BSjFDYSxZQUdtQmI7TUFDQyxNQUFBLDJCQURLRDtLQUNMLE9BQUE7SUFBMEM7SUFEbEQsT0FBQSwwQkFETEQ7R0FFdUQ7WUFhOURpQixPQUFPakI7SUFBSSxHQUFHLHlCQUFQQSxJQUE0QjtJQVRyQyxhQUdha0I7OztPQUFDQztPQUFBQztPQUFBQyxpQ0FBQUQ7T0FBQUUscUNBQUFIO3FCQUFBRSxjQUFBQzs7MENBQURKOzs7S0FESSxJQUFhakIsa0JBQU5DO0tBQWlCLFdBVnZDYSxZQVVzQmIsT0FBTUQ7SUFBbUM7SUFBL0QsVUFBQSwwQkFPT0Q7OztHQUFvRDtZQUUzRHVCLFlBQVl2QjtJQUFvQixVQUZoQ2lCLE9BRVlqQjtJQUFvQixPQUFBO0dBQVU7WUFDMUN3QixlQUFlQyxPQUFNQzt3QkFBMEQsT0FBMURBLEVBQTJEO0lBQTFDLFVBSHRDVCxPQS9CQVIsUUFrQ2VnQixPQUFNQztJQUErQyxPQUFBO0dBQWE7WUFFakZDLGFBQWFGLE9BQU1HLEtBQUlDLFFBQVFsQjtJQUNwQixJQUFUTSxTQXJDRlIsUUFvQ2FnQixPQUFrQmQ7SUFFakMsT0FqREVaLEtBaURHLDBCQUZnQjZCLE1BQ2pCWDtHQUN3QjtZQUcxQmEsTUFBTUwsT0FBTUksUUFBT0Q7SUFDYixJQUFKakIsSUFBSSwwQkFEYWlCLEtBQVBDO0lBRWQsT0FQRUYsYUFLTUYsT0FBYUcsS0FBUEMsUUFDVmxCO0dBQzJCO1lBRzdCb0IsYUFBYU4sT0FBTUk7SUFDckIsZ0JBQ0lHLEtBQUlKLEtBQU8sV0FQYkUsTUFLYUwsT0FBTUksUUFFYkQsTUFBSkksS0FBd0M7R0FBQTtZQUcxQ0Msb0JBQW9CUjtpQkFDSk8sS0FBSUosS0FBSUMsUUFBT2xCO0tBQ3pCLElBRUpNLFNBbkJGVSxhQWVvQkYsT0FDQUcsS0FBSUMsUUFBT2xCO1lBRzdCTSxhQUFBQSxRQUhjZSxPQUFBQTtJQUdTO0lBSGQsT0FBQTtHQUdlO1lBRzFCRSxJQUNXQyxRQUFPeEI7SUFBcEIsSUFBYXlCLFdBQUFELFFBQVNFO0lBQ3BCO1VBRFdEO01BUUwsT0FBQSxXQWhGTnRDLFNBZ0ZNLDBCQVJjdUM7S0FJWCxJQUpFQyxXQUFBRixhQUdUWCxRQUhTVyxhQU1ORyxNQWpFTDlCLFFBOERFZ0IsT0FIZ0JkO1FBTWI0QjtNQUFxQixJQU5OQyxhQU1mRCxLQU5lRixPQUFURCxXQUFBRSxVQUFTRCxPQUFBRzs7VUFBVEosV0FBQUU7O0dBUXdCO1lBR25DRyxVQUFVL0I7aUJBQ0NDO0tBQ0wsWUFBQSxXQUZJRCxHQUNDQzsrQkE5RlgxQjtTQWlHUWdCO0tBQVMsT0EzRmpCWCxLQTJGUVc7SUFBbUI7SUFIckIscUIsT0F2RU5RO0dBMEU0QjtZQUc1QmlDLFNBQVNoQztpQkFDRUM7S0FDTCxZQUFBLFdBRkdELEdBQ0VDOytCQXJHWDFCO1NBd0dRZ0I7S0FBUyxrQkFBVEE7SUFBaUM7SUFIbkMscUIsT0E5RU5RO0dBaUYwQztZQUcxQ2tDLFNBQVNqQyxHQUFHa0M7aUJBQXdCakMsR0FBSyxPQUFHLFdBQW5DRCxHQUEyQkMsS0EzR3BDMUIsT0FNQUssS0FxR1lzRCxVQUFnRTtJQUE3QyxxQixPQXBGL0JuQztHQW9GNkU7WUFFN0VvQyxLQUFNQyxLQUFLQzs7S0FBZ0JDO0tBQVhDO2VBakdoQmxELGNBV0FVLFFBc0ZXc0MsS0FBZ0JDO0lBQ3JCLE9BQUE7YUFwR05sRCxhQUVBQyxjQVdBVSxRQXNGTXFDLEtBQVVHOztZQUloQkMsYUFBYXpCLE9BQU0wQjtpQkFDRUMsR0FBRUM7S0FBbUMsVUEzRjFENUMsUUEwRmFnQixPQUNVNEI7S0FBbUMsT0F0RzFEdEQsS0FzR2tDLHlCQUFicUQ7SUFBdUQ7SUFBOUUsT0FBQSxXQXhHRXRELFNBd0dGLDBCQURxQnFEO0dBRVg7WUFHUkEsS0FBV0csY0FBYTdCLE9BQU0wQjtpQkFDVkU7S0FDZCxJQUVKckQsSUFuR0ZTLFFBK0Z3QmdCLE9BQ0o0QjtZQUdsQnJEO2VBbkdGUzt5QkFxR2VULEdBQUssT0FoSHBCRCxLQWdIeUIsV0FOZHVELGNBQ1NELEtBS0xyRCxHQUE2QixHQUYxQ0E7O0lBRTZDO0lBTGpELE9BQUEsV0E3R0VGLFNBNkdGLDBCQURnQ3FEO0dBT3RCO1lBR1JJLE1BQU94RCxNQUFLVyxHQUFFOEM7d0JBQWEsSUFBUzlCLGNBQU0sT0FBQSxXQUE5QmhCLEdBQXdCZ0IsR0FBVTtJQUF4QixPQVZ0QnlCOztjQVUyRCxJQUFNTTtjQUFXLE9BQUEsV0FBckUxRCxNQUEwRDBEO2FBQW9COzthQUF2RUQ7R0FBdUU7WUFDckZFLGNBQWM5RCxJQUFHQztJQUFLLE9BQUcseUJBQVhELE1BQUdDLEtBQUhEO0dBQTJDO1lBRXpEK0Q7SUFBZSxtQkFuSWYxRTtRQXFJS2dCO0lBQVMsT0EvSGRYLEtBK0hLVztHQUFtQjtZQUd4QjJELFFBQVM3RCxNQUFNOEQsT0FBT0MsT0FBT0MsU0FBUXJDO0lBQ3ZDLE9BQU0saUNBRFdtQyxPQUFPQyxPQUFlcEMsR0FBUnFDOztpQkFBZEY7UUFLQyxNQUFBO2dCQUxEQTtRQU1xRDtTQUE1REcsT0FOT0g7U0FNcUQsTUFBQSxXQU4zRDlELE1BTURpRTtTQUFtRCxNQUFBLFdBTmxEakUsTUFBNEIyQjtRQU1oQixPQXhJckJwQyxLQXdJcUI7O09BQ2dEO1FBQTdEMkUsT0FQT0o7UUFPc0QsTUFBQSxXQVA1RDlELE1BT0RrRTtRQUFvRCxNQUFBLFdBUG5EbEUsTUFBNEIyQjtPQU9oQixPQXpJckJwQyxLQXlJcUI7O2NBL0lyQkw7O2lCQXdJc0I2RTtRQVVOLE1BQUE7Z0JBVk1BO1FBVzhDO1NBQTVESSxTQVhjSjtTQVc4QyxNQUFBLFdBWDNEL0QsTUFXRG1FO1NBQW1ELE1BQUEsV0FYbERuRSxNQUE0QjJCO1FBV2hCLE9BN0lyQnBDLEtBNklxQjs7T0FDZ0Q7UUFBN0Q2RSxTQVpjTDtRQVkrQyxNQUFBLFdBWjVEL0QsTUFZRG9FO1FBQW9ELE1BQUEsV0FabkRwRSxNQUE0QjJCO09BWWhCLE9BOUlyQnBDLEtBOElxQjs7R0FBNkQ7WUFJaEY4RSxPQUFPeEUsSUFBR0MsSUFBSyxPQS9JakJGLFFBK0lTQyxJQUFHQyxJQUFrQjtHQURuQixnQkFDVHVFOzs7Ozs7OztPQXhKRm5GO09BTUFLO09BSkFKO09BTUFPO09BREFGO09BRUFJO09BQ0FHO09BRUFDO09BTUFJO09BQ0FHO09BQ0FDO09BQ0FDO09BRUFDO09BTUFLO09BeUJBRztPQWZBRDtPQWlCQU87T0FDQUM7T0FPQU07T0FMQUg7T0FVQUk7T0FLQUU7T0FPQUM7T0FZQU87T0FPQUM7T0FPQUM7T0FFQUU7T0FJQUs7T0FLQUM7T0FXQU87T0FFQUM7T0FIQUo7T0FRQUs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDMUVGUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBVkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFsQkFDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBQ0FDO0lBQUFDO0lBTUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDOztJQUlBQztJQUNBQzs7OztJQVlRLFVBQUE7SUFBUjs7V0FBUTs7SUFBUixNQUFBO0lBQUFDLFFBQUE7Ozs7O0dBQVEsU0FFVkMsc0JBRlVDO0lBQVIsVUFBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQUYsaUJBQVFFO0dBQTREO1lBRXRFQyxxQkFGT0MsVyxPQUFBQTtZQUVQQyxzQkFGT0MsUyxPQUFBQTtZQUVQQyx1QkFGT0M7aUJBQUxDLEdBQUEsT0FBQSxXQUFLRCxpQkFBTEMsR0FBb0U7SUFBcEUsb0JBQUFBLEdBQUEsT0FBQSxXQUFLRCxpQkFBTEMsR0FBb0U7R0FBQTtZQUV0RUMscUJBRk9DLE1BQWlCQyxLQUFBQyxTQUFBQztJLDRDQUFBRDs7WUFFeEJFLHVCQUZPSixNLE9BQUFBO1lBRVBLLHVCQUZPQztpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUVGUixxQkFGT08saUJBQUxMLEtBQUFDLFNBQUFLO0lBQW9FO0lBQXBFO3FCQUFBTixLQUFBQzthQUFBLE9BQUEsV0FBS0ksaUJBQUxMLEtBQUFDO1lBQW9FOztHQUFBO1lBRXRFTSxnQkFGRUM7SUFBQTtLQUFBLE1BRUZKLHVCQUZFSTtLQUFBLE1BRUZiLHVCQUZFYTtJQUFBLFdBRUZuQixzQkFGRW1CO0dBQW9FO1lBRXRFQyxvQkFGRUMsT0FBQUMsT0FBQUMsT0FBc0IsT0FBQSxXQUF0QkYsT0FBQUMsT0FBQUM7R0FBd0I7WUFFMUJDLHNCQUZFQyxhQUFBQyxLQUFBQyxLLGtCQUFBRixhQUFBQyxLQUFBQzs7OzttREFBQXpDO0lBRUYwQztZQUFBQyx1QkFGRW5CO0lBQUEsSUFBQW9CLHNCQUFBLHVDQUFBcEI7SUFBQSxlQUFBb0IseUJBQUFwQjtHQUFvRTs7SUFTbEVxQjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQU9BQztJQUNBQzs7SUFJUTtJQUNSLElBQUEsU0FIQUM7Ozs7O1FBQUFBOztHQVdlOzs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMURqQjNGO09BQUFDO09BQ0FDO09BQUFDO09BQ0FDO09BQUFDO09BTUFDO09BQ0FDO09BQ0FDO09BQ0FDOztPQUlBQztPQUNBQztPQWNGRTtPQUFBRTtPQUFBRTtPQUFBRTtPQUFBUTtPQUFBTDtPQUFBTTtPQUFBRztPQUFBRTtPQUFBSTtPQUFBSztPQUFBRDtPQU9JK0M7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FB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QUFsQkg7YUFBQUM7R0FBbUM7Ozs7Ozs7O09BakI5QjFIO09BQUxDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFFO09BQUFEO09BQ0tHO09BQUxDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFFO09BQUFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQUtVRztRQUFSQztRQUFBQztRQUFBRztRQUFBRDtRQUFBRDtRQUFBRztRQUFBQztRQUFBQztRQVdGTztRQUFBVTtRQUFBVDtRQUFBQTs7UUFKS2U7UUFBTEM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUQ7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUU7UUFBQUQ7UUFDQUU7UUFBQUM7UUFBQUU7UUFBQUU7UUFBQUQ7UUFDS0c7UUFBTEM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUQ7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUU7UUFBQUQ7UUFDS0c7UUFBTEM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUQ7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUU7UUFBQUQ7UUFDUUc7UUFBUkM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUQ7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQTNFO1FBQUFVO1FBQUFUOzs7U0FqQks5QztTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUNLRztTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtVRztVQUFSQztVQUFBQztVQUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHSW5EQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQWxP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QUE7SUFBQSxVQUFBbWU7SUFBQW1DOzt1QkFBQSxTQUFxQjs7O09BQXJCcEM7O2dCQURBbGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUFxZTtJQUFBa0M7MEJBQUEsU0FBUSxzQkFBUm5DO2dCQURBcGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUF1ZTtJQUFBaUM7MEJBQUEsU0FBVyx5QkFBWGxDO2dCQURBdGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTs7R0FBQTtJQUFBLFVBQUF5ZTtJQUFBZ0M7MEJBQUEsU0FBVyx5QkFBWGpDO2dCQURBeGUsR0FBQUU7SUFBQTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBRTtZQUFBRjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ2ZKLFNBQUFFLFVBQU1DLFVBQUlDO0lBQVY7S0FFSUM7S0FEQUM7S0FESkM7c0I7SUFHWTtLQUFBQztLQUhaQyxrQ0FHWUQsZUFIWkQ7S0FFSUc7T0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7UTs7OztZO1k7VztTLE87USxzQjs7TyxnQixPO08sc0I7Ozs7NEM7OzttQjs7Tzs7OztJO0c7O0k7SSxPO0c7O0k7STs7O0c7O0k7SSxJLDJEOzs7O00sUTs7O087Ozs7Ozs7Ozs7YTs7YTs7YTs7YTs7YTs7YTs7Ozs7Ozs7Ozs7O087TztPO087TztPOzs7TTs7Ozs7STtLOzs7Ozs7Ozs7Szs7Ozs7O0ssTTs7SSxPO0c7O0ksUztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7SSxZOztJO0k7SyxJO0ssTztJLE87Rzs7STs7OztnQjtpQjtHOztJOzs7OztPLFk7Ozs7Ozs7USxNOzs7Ozs7O0s7Szs7Ozs0Qjs7O0c7O0ksWTs7O0ssTzs7bUIsTztJO0ssSzs7Tzs7VTtJO0k7SSxjO0c7O0k7O2E7Ozs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjt3Qjs7STtJO0ksYztHOztJLFk7OztlOzs7SSxPO0c7O0ksWTs7Ozs7OztLLE87OztLLE87STtLLEs7O087O1U7STtJO0ksYztHOztJLFk7OztlOzs7Ozs7O0ksTztHOzs7SSxjOztJOzs7aUI7O0s7Szs7OztzQixPLHNDOztJLDBCOzs7MEM7OzRDOztNOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7OztLO0s7Szs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7STtJOzs7SztLOztJLE87Rzs7SSwwQjs7OzBDOzs7Ozs7OztXO1c7Vzs7TztPO08sTzs7O007TTtNLE87O3lDOztLOzs7eUM7O0s7Ozs7SyxPOzs7STtHOztJO0k7SSxPO0c7O0ksUTs7STtJO0k7STtJLE87Rzs7STtJO0ksUSw0QjtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCO0k7STtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFc7STs7O007OztJLE87Rzs7STtJLFM7STtLO0ssVztLOzs7O0s7SyxNOztHOztJO0k7SSxvQjtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCOztLO0s7SyxPO0k7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STs7OztPLGMsTztPLHNCOzs7Tzs7OztXO1c7VTtRLE87USxNOzs7VztXLE87VTtPLHNCOzs7Ozs7TywrQjs7Ozs7TSxnQixPO00sc0I7OztJO0c7OztLLE87STtJLE87Rzs7STs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STtJOztNLE87Ozs7O1Esa0IsTztRLE87OztPO1EsVztRO2tCOzs7USxTO1E7a0I7O08sTzs7OztPLE87O00sa0I7TSxPOzs7O007bUIsTzswQjtPOztRLDRCO1EsNEI7Tzs7cUI7O00sSTs7Ozs7O2tCLE87MkI7UTtTOzs7WSwwQjtZO1ksTzs7UztnQztROztzQjs7O2lCLE87MEI7TyxHO1E7O1MsNEI7UztnQztROzs7UTs7Uyw0QjtTO2dDO1E7OztxQjs7OztPLE87Ozs7O087UTtTOztTLDRCO1EsTzs7TztRO1E7Ozs7O1E7USxPOztPLEk7Ozs7Rzs7STs7SSwwQjtJLE87Rzs7STtLLE87Ozs7O007TTs7Ozs7VSxRO1U7VTtTO007TTtNLE87Ozs7O087Tzs7Ozs7VztXLFE7VztXO1c7VztXO1c7VTtPO087TyxPOzs7TTtNOzs7OztVLFE7VTtVO1M7TTtNO00sTzs7OztNO007TSxPOzs7SztLO0s7Szs7O007TTtNOzs7TTtLO0ssTzs7Ozs7TTtNO00sTzs7O0s7SztLLE87Ozs7SztLO0ssTzs7O0k7STtJLE87O29CLE8sOEM7O0k7STs7OztPOzs7Ozs7Ozs7O1M7OztVOzthO2EsTztZO1UsTztVLE87UztVOzs7Yzs7Ozs7cUI7OzthO1csVztVOzs7O29DOzs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7Ozs7Ozs7OztjLDBCOzs7Ozs7OzBCO1M7Ozs7OztPO1EsYTtROzs7O2tDOzs7Ozs7OztTLE87Ozs7Z0gsTzs7Ozs7O1MsTzs7Ozs7OztRLE87OztLOztHO3NDLHVCOztJLDBCO0ksTztHOztJLFU7SSwwQjtJLE87Rzs7Ozs7Ozs7STs7Ozs7OztJLE07Rzs7STs7Szs7SyxPO0s7O21DOzs7STs7O1U7VTtLLE07SSxPO0c7O0ksVztJO2E7Rzs7STtLLE87SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7O0k7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7OztJLE07Rzs7STs7SztLO0s7Szs7Ozt3QixNO00sVzs7TTs7Ozs7aUIsTTs7Rzs7STs7O0c7O0k7SSxPO0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTtROztRO1M7Uzs7Ozs7VSx1Qjs7OztRO1M7Uzs7Ozs7VSx1Qjs7OztROztnQixxQjs7UTtRO1M7UztTO1M7UztTOzs7O1U7VTtVO1U7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtRO1E7OztROztROzs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7OztROztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7OztRLGMsTztRLE8sYzs7UTs7UTtnQjs7O0c7O0k7STtLOztROztLOzs7OztPLFE7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TztRLEk7USxJO1EsTTtRLEk7UTtRO1E7Ozs7UTtTOztZOztTOzs7OztXO1ksTTtZLE07WSxNO1ksTTtZO1k7WTs7O1ksTztXOztXOztXOzs7TyxPOztPO2U7O0c7O0k7STtLOztROzs7O1M7O1UsSTtTO1M7UyxPOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1Msb0M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1MsSSx5Qzs7OztXOzs7O1MsSSx5Qzs7OztXOzs7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxtQjtVOztxQjs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLHFCO1U7O3FCOztTO1M7UyxJLFcseUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7UyxPLHFCOztTO1M7UyxJLFcseUI7Ozs7Ozs7Ozs7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTLFE7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7OztTLE87O2tCOzs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtpQjs7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTs7cUI7O1M7UztTOztzQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPLEksYztPO1E7UTtpQjs7O1M7UztTO2tCOzs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O2lCO1MsTTs7aUIsTTtTO2lCOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7aUI7UyxNOztpQixNO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtRLGlCO1E7UTtRO2lCOztTO1M7UztTLG1CO1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtTO1M7UztTO1M7UztTO1M7VTtVO1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7OztROztROzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztTO1M7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1E7UTtROztRO1M7O1k7O1M7Ozs7O1c7VztXOztXO1k7O2U7Ozs7Z0IsTzs7Z0I7O2dCOztZOzs7OztXLE87O1c7O1c7Ozs7UTs7UTtROzs7USx5Qzs7UTs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsMEI7O1E7UTs7O1EseUM7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTLE87O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsTzs7UTs7USx5QztnQjs7O0c7O0k7MkIsTztJO0c7O0k7SSxPO0c7O0k7WTtJOzs7SyxNO0ssSTtLO0s7Ozs7TSxXO007YTtNOzs7OztJO0c7O0k7SztHOzs7STtJO0k7SyxNO0k7O0s7O007O0k7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7O0k7OzsrQixPOztLLEksbUQ7OztpQyxvQjtNLEk7OztPLE07O00sTTs7STtJO0c7O0ksUTtJLDZCO0c7O0k7SyxTO0ssSTtJO0c7O0ksUztJLG9CLE8sMkI7STtLO0ssUztLLEk7STtHOztJOzs7K0IsTztJO0ksdUI7O0s7TTtPLE87TztPLHNCO087Ozs7TTs7OzsyQixvQjtNO00sMkM7O0k7SSxzQjtHOztJLFM7SSxvQixPLDJCO0k7STtHOztJO0c7O0k7RztHOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs0QjtHO0c7O0k7O0ssSSxXLHdDOzs7NkI7Ozs7SSxXO0ksYzs7O0k7STtlOzs7O00sSSxZOzs7OEI7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7OztHOztJO0k7YSxPOzs7TTs7TyxROzs7Ozs7O0c7O0k7O2M7O2U7Z0IsZTtnQjs7MkI7O2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2M7O2U7Z0IsZTtnQjs7MkI7O2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLHdFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2M7O3NEOzBEOztjO2E7O0c7O0k7O2MsMkU7YzthOztHOztJO3lCLG9CLFc7SSxPLFc7Rzs7STt5QixzQixhO0ksTyxXO0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNyRkFDLHNCQUF3QixpQkFBSztZQUM3QkMsZUFBZUMsR0FBUSxzQkFBUkEsR0FBZTtZQUM5QkMsaUJBQWlCQyxLQUFVLHVCQUFWQSxLQUFxQjtZQUN0Q0MsZ0JBQWdCQztJQUFZLHVCQUFRLGtDQUFwQkE7R0FBMkM7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QUV0QixPQUZPSCxTQUFlRyxHQUVNO1lBRTFCVSxJQUFLYixHQUFlRyxHQUFjRixHQWxCbEM0QixNQWtCSzdCLEdBQWVHLElBQWZILFNBQWVHLEtBQWNGLEdBRXBDLFNBQThCO1lBRTVCTyxHQUFLUixHQUFlRyxHQUFjQyxHQXRCbEN5QixNQXNCSzdCLEdBQWVHLElBdEJwQjBCLE1Bc0JLN0IsR0FBNkJJLFdBQWRELE1BQWNDLFVBRy9CO21DQTFFSFAsV0FPQUMsTUFpREFDLE1BT0FVLEtBSUFJLEtBSUFMOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7dUIsdUM7STs7OztLO0ssSTtJO0k7STs7SztLO0s7Szs7STtJO0k7STtJO0ssSTtLO0s7SztLO0s7SztLO0s7SztLOztLOzs7Ozs7Tzs7USxNO1EsTTtRLE07USxNO087Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7UyxNOzs7Tzs7UTtTO1M7UztTO1M7UztROzs7TztROztROzs7Ozs7Tzs7Ozs7Ozs7O007Ozs7O0ksUTs7SztLO0s7SztLO0k7STtJO0k7STtJO0ksTzs7O0k7SyxNLG1CO0ssTTtLLEk7a0M7K0I7SSxPO0c7c0IsK0I7c0IsaUM7O0k7SyxJO2U7Z0I7STtJO0ksTztHOzJCLE8sb0M7RyxVO0csMkI7O0k7SyxLO0ssSztLLEs7SyxLO0ssSztLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJLHFCO0ksdUIsb0M7Rzs7SSw4Qjs7O0s7OztJO0c7MEIsYSxvQzs7d0IsUzs7STtJLFU7NkI7Z0M7SSxXO0c7O0k7SyxRO0sscUI7SztLO0k7SSxRO0k7STtJO0k7SSxPO0c7cUMsc0I7O0k7Z0I7O0k7RzsrQixTOytCLFM7O0k7SSxVO0k7OztjOztlOztnQjttQjtLO007TyxJO087TztPOztVLFcsTTtzQjtxQixNO3NCO3FCLE07c0IsTTtVO1M7Tzs7VSxlO3NCO1M7OztPO087Ozs7Ozs7TztPOzs7Ozs7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QTZ6RDtJQUFBM3pEO0lBbUxBNHpEO0lBQUExekQ7SUEyRUEyekQ7SUFBQXp6RDtJQXlOQTB6RDtJQUFBQztJQU1BQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXQvSjttREE0Q007WUE1Q051L0o7bURBQUEsT0FBQXYvSjttREE0Q007WUE1Q053L0o7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUExL0o7bURBNENNO1lBNUNOMi9KO21EQUFBLE9BQUEzL0o7bURBNENNO1lBNUNONC9KO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBOS9KO21EQTRDTTtZQTVDTisvSjttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQWpnSzttREE0Q007WUE1Q05rZ0s7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFwZ0s7bURBNENNO1lBNUNOcStEO21EQUFBLE9BQUFyK0Q7bURBNENNO1lBNUNOcytEO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBeCtEO21EQTRDTTtZQTVDTnkrRDttREFBQSxPQUFBeitEO21EQTRDTTtZQTVDTjArRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQTcrRDttREE0Q007WUE1Q044K0Q7bURBQUE7O21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQS8rRDttREE0Q007WUE1Q05nL0Q7bURBQUE7O21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQWovRDttREE0Q007WUE1Q05rL0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXIvRDttREE0Q007WUE1Q05zL0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXovRDttREE0Q007WUE1Q04wL0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUE1L0Q7bURBNENNO1lBNUNONi9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBLy9EO21EQTRDTTtZQTVDTmdnRTttREFBQSxPQUFBaGdFO21EQTRDTTtZQTVDTmlnRTttREFBQTttREE0Q007WUE1Q05DO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXBnRTttREE0Q007WUE1Q05xZ0U7bURBQUE7O21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBdmdFO21EQTRDTTtZQTVDTndnRTttREFBQTs7bURBNENNO1lBNUNOQzttREFBQSxPQUFBemdFO21EQTRDTTtZQTVDTjBnRTttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7O21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQTdnRTttREE0Q007WUE1Q044Z0U7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBL2dFO21EQTRDTTtZQTVDTmdoRTttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBbmhFO21EQTRDTTtZQTVDTncwQjttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUF6MEI7bURBNENNO1lBNUNOMDBCO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOL3FCO21EQUFBLE9BQUE1SjttREE0Q007WUE1Q05zSDttREFBQSxPQUFBdEg7bURBNENNO1lBNUNOdUg7bURBQUE7OzttREE0Q007WUE1Q05DO21EQUFBLE9BQUF4SDttREE0Q007O0tBNUNOaStEO2NBQ0EzN0Q7cURBQUE7O2FBREFxVixlQUFBbFE7d0RBQ0EsK0NBQUE7K0JBQUFuRjt3REFEQTs0REFFWSx1REFBQTt3Q0FEWkE7MkRB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QWtCOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDbFZVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBK3VGdUJLO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQzs7Ozs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7OztJQUFBQzs7O0lBQUFDOzs7Ozs7O0lBdlZYQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7OztJQW41RXBCQzs7Ozs7Ozs7Ozs7Ozs7SUFMUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDMUlKQztJQUFBQztJQU9BQztJQUFBQztJQU9BQztJQUFBQztJQW9CQUM7SUFBQUM7SUFtQkFDO0lBQUFDO0lBb0JBQztJQUFBQztJQTBDQUM7SUFBQUM7SUFPQUM7SUFBQUM7SUFxQkFDO0lBQUFDO0lBaUZBQztJQUFBQztJQVdBQztJQUFBQztJQWlGQUM7SUFBQUM7SUFPRUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBcFVGQyxpQkFDQUM7SUFBQTs7T0FBQSxPQUFBLDhCQUFBQTs7T0FBQSxPQUFBLDhCQUFBQTs7T0FBQSxPQUFBLDhCQUFBQTtlQUFBLE9BQUEsOEJBQUFBOztHQUlTO1lBTFRDLG1CQUNBdkk7SUFBQSxPQUFBLG9DQURBcUks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O1VBQ0EsK0JBQUF6QztVQURBLFdBQUEsb0NBQ0FBLE1BREF5QztVQUFBLE9BQUEsK0JBQ0F6Qzs7Y0FEQTBDO1VBQ0EsK0JBQUExQztVQURBLFdBQUEsb0NBQ0FBLE1BREEwQztVQUFBLE9BQUEsK0JBQ0ExQzs7Ozs7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQTtzQ0FBQUE7O1VBQUEsT0FBQTtzQ0FBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7Ozs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tIQUFBQTs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOztnSEFBQUE7OEdBQUFBOzs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7NkdBQUFBOzs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs0R0FBQUE7Ozs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBOztnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7OEdBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTs7Ozt5RkFBQUE7Ozs7NEdBQUFBOzsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7Ozs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7NEdBQUFBOzs7OztrSEFBQUE7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTtnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7O2dIQUFBQTs4R0FBQUE7Ozs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7Ozs4R0FBQUE7OEdBQUFBOzs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs0R0FBQUE7Ozs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBOztnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7OEdBQUFBOzs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzs7Ozt5RkFBQUE7Ozs7O3lGQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7NEdBQUFBOzs7O2tGQUFBLE9BQUE7d0hBQUF2TCxrQkFBQXNMOztpRkFBQSxPQUFBO3VIQUFBdEwsa0JBQUFzTDs7Z0ZBQUEsT0FBQTtzSEFBQXRMLGtCQUFBc0w7OytFQUFBLE9BQUE7cUhBQUF0TCxrQkFBQXNMOzs4RUFBQSxPQUFBO29IQUFBdEwsa0JBQUFzTDs7aUZBQUFFO2dGQUFBQSxtQkFBQUE7OEVBQUE7K0VBQUFDLFdBQUFEOytFQUFBRSxXQUFBLG9DQUFBRDs4RUFBQSxXQUFBQzs7NkVBQUEsT0FBQTs7c0ZBQUExTDtzRkFBQXVMO3NGQUFBRDs7NEVBQUEsT0FBQTtrSEFBQXRMLGtCQUFBc0w7OzJFQUFBLE9BQUE7aUhBQUF0TCxrQkFBQXNMOzswRUFBQSxPQUFBO2dIQUFBdEwsa0JBQUFzTDs7eUVBQUEsT0FBQTsrR0FBQXRMLGtCQUFBc0w7O3dFQUFBLE9BQUE7OEdBQUF0TCxrQkFBQXNMOzt1RUFBQSxPQUFBOzZHQUFBdEwsa0JBQUFzTDs7c0VBQUEsT0FBQTs0R0FBQXRMLGtCQUFBc0w7O3FFQUFBLE9BQUE7MkdBQUF0TCxrQkFBQXNMOztvRUFBQSxPQUFBOzBHQUFBdEwsa0JBQUFzTDs7bUVBQUEsT0FBQTt5R0FBQXRMLGtCQUFBc0w7O2tFQUFBLE9BQUE7d0dBQUF0TCxrQkFBQXNMOztpRUFBQSxPQUFBO3VHQUFBdEwsa0JBQUFzTDs7Z0VBQUEsT0FBQTtzR0FBQXRMLGtCQUFBc0w7OytEQUFBLE9BQUE7cUdBQUF0TCxrQkFBQXNMOzs4REFBQSxPQUFBO29HQUFBdEwsa0JBQUFzTDs7NkRBQUEsT0FBQTttR0FBQXRMLGtCQUFBc0w7OzREQUFBLE9BQUE7a0dBQUF0TCxrQkFBQXNMOzsyREFBQSxPQUFBO2lHQUFBdEwsa0JBQUFzTDs7MERBQUEsT0FBQTtnR0FBQXRMLGtCQUFBc0w7O3lEQUFBLE9BQUE7K0ZBQUF0TCxrQkFBQXNMOzt3REFBQSxPQUFBOzhGQUFBdEwsa0JBQUFzTDs7dURBQUEsT0FBQTs2RkFBQXRMLGtCQUFBc0w7O3NEQUFBLE9BQUE7NEZBQUF0TCxrQkFBQXNMOztxREFBQSxPQUFBOzJGQUFBdEwsa0JBQUFzTDs7b0RBQUEsT0FBQTswRkFBQXRMLGtCQUFBc0w7O21EQUFBLE9BQUE7eUZBQUF0TCxrQkFBQXNMOztrREFBQSxPQUFBO3dGQUFBdEwsa0JBQUFzTDs7aURBQUEsT0FBQTt1RkFBQXRMLGtCQUFBc0w7O2dEQUFBLE9BQUE7c0ZBQUF0TCxrQkFBQXNMOzsrQ0FBQSxPQUFBO3FGQUFBdEwsa0JBQUFzTDs7OENBQUEsT0FBQTtvRkFBQXRMLGtCQUFBc0w7OzZDQUFBLE9BQUE7bUZBQUF0TCxrQkFBQXNMOzs0Q0FBQSxPQUFBO2tGQUFBdEwsa0JBQUFzTDs7MkNBQUEsT0FBQTtpRkFBQXRMLGtCQUFBc0w7OzBDQUFBLE9BQUE7Z0ZBQUF0TCxrQkFBQXNMOzt5Q0FBQSxPQUFBOytFQUFBdEwsa0JBQUFzTDs7NENBQUFLOzJDQUFBQSxtQkFBQUE7eUNBQUE7MENBQUFDLFdBQUFEOzBDQUFBRSxXQXJCQWYsd0JBcUJBYzt5Q0FBQSxXQUFBQzs7d0NBQUEsT0FBQTs7aURBQUE3TDtpREFBQXVMO2lEQUFBRDs7dUNBQUEsT0FBQTs2RUFBQXRMLGtCQUFBc0w7O3NDQUFBLE9BQUE7NEVBQUF0TCxrQkFBQXNMOztxQ0FBQSxPQUFBOzJFQUFBdEwsa0JBQUFzTDs7b0NBQUEsT0FBQTswRUFBQXRMLGtCQUFBc0w7O21DQUFBLE9BQUE7eUVBQUF0TCxrQkFBQXNMOztzQ0FBQVE7cUNBQUFBLG1CQUFBQTttQ0FBQTtvQ0FBQUMsV0FBQUQ7b0NBQUFFLFdBckJBbEIsd0JBcUJBaUI7bUNBQUEsV0FBQUM7O2tDQUFBLE9BQUE7OzJDQUFBaE07MkNBQUF1TDsyQ0FBQUQ7O2lDQUFBLE9BQUE7dUVBQUF0TCxrQkFBQXNMOztnQ0FBQSxPQUFBO3NFQUFBdEwsa0JBQUFzTDs7K0JBQUEsT0FBQTtxRUFBQXRMLGtCQUFBc0w7OzhCQUFBLE9BQUE7b0VBQUF0TCxrQkFBQXNMOzs2QkFBQSxPQUFBO21FQUFBdEwsa0JBQUFzTDs7NEJBQUEsT0FBQTtrRUFBQXRMLGtCQUFBc0w7OytCQUFBVzs4QkFBQUEsbUJBQUFBOzRCQUFBOzZCQUFBQyxXQUFBRDs2QkFBQUUsV0FyQkFyQix3QkFxQkFvQjs0QkFBQSxXQUFBQzs7MkJBQUEsT0FBQTs7b0NBQUFuTTtvQ0FBQXVMO29DQUFBRDs7MEJBQUEsT0FBQTtnRUFBQXRMLGtCQUFBc0w7O3lCQUFBLE9BQUE7K0RBQUF0TCxrQkFBQXNMOzt3QkFBQSxPQUFBOzhEQUFBdEwsa0JBQUFzTDs7dUJBQUEsT0FBQTs2REFBQXRMLGtCQUFBc0w7O3NCQUFBLE9BQUE7NERBQUF0TCxrQkFBQXNMOztxQkFBQSxPQUFBOzJEQUFBdEwsa0JBQUFzTDs7b0JBQUEsT0FBQTswREFBQXRMLGtCQUFBc0w7O21CQUFBLE9BQUE7eURBQUF0TCxrQkFBQXNMOztrQkFBQSxPQUFBO3dEQUFBdEwsa0JBQUFzTDs7aUJBQUEsT0FBQTt1REFBQXRMLGtCQUFBc0w7O2dCQUFBLE9BQUE7c0RBQUF0TCxrQkFBQXNMOztlQUFBLE9BQUE7cURBQUF0TCxrQkFBQXNMOztjQUFBLE9BQUE7b0RBQUF0TCxrQkFBQXNMOzthQUFBLE9BQUE7bURBQUF0TCxrQkFBQXNMOztZQUFBLE9BQUE7a0RBQUF0TCxrQkFBQXNMOztXQUFBLE9BQUE7aURBQUF0TCxrQkFBQXNMOztjQUFBYzthQUFBQSxtQkFBQUE7V0FBQTtZQUFBQyxXQUFBRDtZQUFBRSxXQUFBLG9DQUFBRDtXQUFBLFdBQUFDOztVQUFBLE9BQUE7O21CQUFBdE07bUJBQUF1TDttQkFBQUQ7O1NBQUEsT0FBQTsrQ0FBQXRMLGtCQUFBc0w7O1FBQUEsT0FBQTs4Q0FBQXRMLGtCQUFBc0w7O09BQUEsT0FBQTs2Q0FBQXRMLGtCQUFBc0w7O01BQUEsT0FBQTs0Q0FBQXRMLGtCQUFBc0w7O0tBQUEsT0FBQTsyQ0FBQXRMLGtCQUFBc0w7O0lBQUEsT0FBQSx3Q0FBQXRMLGtCQUFBc0w7R0E4RWtCO1lBOUVsQmlCO0lBQUE7OztRQWVJLElBQUFDLHFCQUFBQyxXQXBDSnpCLHdCQW9DSXdCO1FBQUEseUJBQUFDOztRQUlBLElBQUFDLHFCQUFBQyxXQXhDSjNCLHdCQXdDSTBCO1FBQUEseUJBQUFDOztRQUNBLElBQUFDLHFCQUFBQyxXQXpDSjdCLHdCQXlDSTRCO1FBQUEseUJBQUFDOztRQVFBO1NBQUFDO1NBQUFDLFdBQUEsb0NBQUFEO1FBQUEseUJBQUFDOztRQUNBO1NBQUFDO1NBQUFDLFdBQUEsb0NBQUFEO1FBQUEseUJBQUFDOzs7Ozs7UUFjQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTtnQkFDQTs7OztPQTdFQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FFQTs7T0FDQTs7T0FDQTs7T0FHQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FHQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQW9DYztZQTlFbEJDLGtCQUFBak07SUFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7Ozs7Ozs7T0FBQSxPQUFBLDhDQUFBaEIsVUFBQWdCOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFoQixVQUFBZ0I7Ozs7O1lBQUF5RSw4Q0FBQUE7Ozs7b0JBQUE7d0RBQUF6RixVQUFBZ0I7OzRDQUFBeUU7Ozs7cUJBQUE7eURBQUF6RixVQUFBZ0I7OzZDQUFBeUU7Ozs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTtnQkFBQUM7ZUFBQUEsaUJBQUFBO2FBQUE7Y0FBQUMsS0FBQUQ7Y0FBQUUsT0FBQSxvQ0FBQUQ7YUFBQSxXQUFBQzs7WUFBQSxPQUFBO3dEQUFBNUYsVUFBQXlGLEtBQUF6RTs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOzs7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7Ozs7OzZDQUFBeUU7Ozs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7Ozs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7Ozs7OzRDQUFBeUU7Ozs7cUJBQUE7eURBQUF6RixVQUFBZ0I7OzZDQUFBeUU7Ozs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFO2dCQUFBTztlQUFBQSxtQkFBQUE7YUFBQTtjQUFBQyxPQUFBRDtjQUFBRSxPQXJCQThFLDBCQXFCQS9FO2FBQUEsV0FBQUM7O1lBQUEsT0FBQTt3REFBQWxHLFVBQUF5RixLQUFBekU7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTtnQkFBQVU7ZUFBQUEsbUJBQUFBO2FBQUE7Y0FBQUMsT0FBQUQ7Y0FBQUUsT0FyQkEyRSwwQkFxQkE1RTthQUFBLFdBQUFDOztZQUFBLE9BQUE7d0RBQUFyRyxVQUFBeUYsS0FBQXpFOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7OztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7Z0JBQUFJO2VBQUFBLG1CQUFBQTthQUFBO2NBQUFDLE9BQUFEO2NBQUFFLE9BckJBaUYsMEJBcUJBbEY7YUFBQSxXQUFBQzs7WUFBQSxPQUFBO3dEQUFBL0YsVUFBQXlGLEtBQUF6RTs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7Ozs7NkNBQUF5RTs7OztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7OztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFO2dCQUFBZ0I7ZUFBQUEsbUJBQUFBO2FBQUE7Y0FBQUMsT0FBQUQ7Y0FBQUUsT0FBQSxvQ0FBQUQ7YUFBQSxXQUFBQzs7WUFBQSxPQUFBO3dEQUFBM0csVUFBQXlGLEtBQUF6RTs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOzs7Ozs7O1FBQUEsT0FBQSw4Q0FBQWhCLFVBQUFnQjs7OztJQUFBLE9BQUEsOENBQUFoQixVQUFBZ0I7R0E4RWtCO1lBOUVsQmtNO0lBQUE7OztRQWVJLElBQUF2SCxlQUFBQyxPQXBDSnFGLDBCQW9DSXRGO1FBQUEsb0NBQUFDOztRQUlBLElBQUFRLGlCQUFBQyxPQXhDSjRFLDBCQXdDSTdFO1FBQUEsb0NBQUFDOztRQUNBLElBQUFKLGlCQUFBQyxPQXpDSitFLDBCQXlDSWhGO1FBQUEsb0NBQUFDOztRQVFBLElBQUFKLGlCQUFBQyxPQUFBLG9DQUFBRDtRQUFBLG9DQUFBQzs7UUFDQSxJQUFBVyxpQkFBQUMsT0FBQSxvQ0FBQUQ7UUFBQSxvQ0FBQUM7Ozs7OztRQWNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBO2dCQUNBOzs7O09BN0VBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUVBOztPQUNBOztPQUNBOztPQUdBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUdBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBO2VBQ0E7O0dBb0NjOztJQUVsQndHO0lBQUFDOztLQUFBRDtjQUNBek0sS0FBQXRJO01BQUEsK0JBQUFzSTtNQUFBLCtCQUFBQTtpQkFBQXRJO01BQUEsV0FEQSxXQWpGQThTLFlBa0ZBeEs7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBREEsaUNBQ0FzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtrQkFBQXRJOztXQUdpQmlWO09BQUEsOEJBSGpCM007V0FEQTRNLEtBSWlCRCxRQUpqQnJLLEtBSWlCcUs7T0FBTywrQkFIeEIzTTtPQURBLFdBQUEsNEJBQ0FBLE1BREFzQztPQUl3QiwrQkFIeEJ0QztPQURBLFdBQUEsaUNBQ0FBLE1BREE0TTtPQUFBLCtCQUNBNU07T0FHaUIsOEJBSGpCQTs7O09BR2lCLDhCQUhqQkE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBSWUsK0JBSmZzSTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtNQUFBLCtCQUFBQTtVQUtZNk0sTUFMWm5WO01BS1ksK0JBTFpzSTs7b0JBS1k4TSxLQUFBcFY7T0FBQSxHQUFBb1YsS0FBQSwrQkFMWjlNO09BS1ksV0FOWixXQTdHQW1HLFlBOEdBbkcsTUFLWXRJO09BQUE7TUFBYTtNQUFiLHdDQUFBbVY7TUFBQSwrQkFMWjdNO01BQUEsK0JBQUFBO01BQUEsT0FBQSwrQkFBQUE7S0FNQzs7S0FQRDBNO2NBQ0FoVixHQUFBLE9BQUEscUNBREErVSxTQUNBL1UsR0FNQztZQU5EcVYsYUFBQUM7SUFBQSxTQUFBQTtLQUFBLE9BQUE7NENBQUF6TixrQkFBQXlOO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0VFO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBTEZDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFQO09BQUE7O1lBQUFRO2lCQUFBQTttQkFBQUE7Ozs7WUFBQUMsMkJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQW5PLGtCQUFBeU47Z0JBQUFVO2NBQUEsTUFBQTtpQkFBQUssUUFBQUw7YUFBQSxPQUFBSztZQU1DO21CQU5ERDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBO2tDQUFBQTttQ0FBQUE7b0NBQUFBOztjQUFBSCxtQkFBQUcsZ0JBQUFIOztvQkFFRUw7YUFGRkksd0JBQUFJLGdCQUFBSjs7YUFFRTtjQUZGUyxtQkFBQUY7Y0FFRUcsYUFBQSxpQ0FGRkQ7YUFFRWIsNEJBQUFjOzttQkFEQWY7WUFERkssd0JBQUFJLGdCQUFBSjs7WUFDRTthQURGVyxtQkFBQUo7YUFDRUssYUFsRkZ6RCxnQkFpRkF3RDtZQUNFaEIsZ0JBQUFpQjs7a0JBR0FkO1dBSkZFLHdCQUFBSSxnQkFBQUo7O1dBSUU7WUFKRmEsbUJBQUFOO1lBSUVPLGFBQUEsNEJBSkZEO1dBSUVmLHlCQUFBZ0I7O2lCQURBakI7VUFIRkcsd0JBQUFJLGdCQUFBSjs7VUFHRTtXQUhGZSxtQkFBQVI7O3NCQUd3QlM7Y0FBUCxTQUFPQTswQkFBQUE7Ozs7aUJBQUE7a0JBQUFDO2tCQUFBQztrQkFBQUMsV0FBQSw0QkFBQUQ7a0JBQUFFLFdBQUEsaUNBQUFIO2lCQUFBLFdBQUFFLFVBQUFDOzs7O2NBQUEsT0FBQTtvREFIeEJwUCxxQkFHd0JnUDthQUFrQjtXQUF4Q0ssYUFBQSxrQ0FIRk47VUFHRWxCLDJCQUFBd0I7O2dCQUVBdEI7U0FMRkMsd0JBQUFJLGdCQUFBSjs7U0FLRTtVQUxGc0IsbUJBQUFmO1VBS0VnQjtZQUFBLDRCQWxIRnpJLGlCQTZHQXdJO1NBS0V2QixzQkFBQXdCOztvQkFMRmxCOzs7Ozs7S0FBQSx5Q0FBQXJPLGtCQUFBa087O09BQUFGO0tBQUEsT0FBQTs7Y0FBQWhPO2NBQUFnTztjQUFBUDtPQUFBUTtLQUFBLE9BQUE7O2NBQUFqTztjQUFBaU87Y0FBQVI7O1lBQ0VFO1lBQ0FDO1lBQ0FDO1lBQ0FDO2FBQ0FDOzs7TUFBQXlCO01BREFDO01BREFDO01BREFDO01BREFDO0tBREY7YUFDRUE7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7O0lBTEYsT0FBQTs7YUFBQXhQO2FBQUF5Tjs7d0JBQ0VFOzt5QkFDQUM7OzBCQUNBQzs7MkJBQ0FDOytCQUNBQztHQUNEO1lBTkQ4QjtJQUFBO0tBS0VDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBSUFDLFVBQUEsNEJBbEhGN0gsaUJBa0hFd0g7S0FMRk0saUNBS0VEO0tBREFFLFVBQUEsMkJBQUFOO0tBSkZPLG1DQUlFRCxlQUpGRDs7O01BR3dCRztNQUFBQztNQUFBQyx1Q0FBQUQ7TUFBQUUsNENBQUFIO29CQUFBRSxjQUFBQzs7SUFBdEI7S0FBQUMsVUFBQSxrQ0FBQVg7S0FIRlksbUNBR0VELGVBSEZMO0tBRUVPLFVBQUEsaUNBQUFaO0tBRkZhLG1DQUVFRCxlQUZGRDtLQUNFRyxVQWxGRjFFLGdCQWtGRTZEO0tBREZjLG1DQUNFRCxlQURGRDtJQUFBLFdBQUFFO0dBTUM7WUFOREMsZUFBQWxRO0ksVUFBQUEscUNBQUFBO0tBQ0U7TUFERmtJLGdCQUFBbEk7TUFDRW1RO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BTEZqSTtNQUFBQztjQUFBTDtLQUFBOzs7T0FBQU07O09BQUFDO09BQUFDOzhCQUFBQTsrQkFBQUE7Z0NBQUFBO2lDQUFBQTtrQ0FBQUE7V0FBQTthQUFBOztZQUFBSDtpQkFBQUcsWUFBQSxtQ0FBQUg7O2tCQUVFLG1DQUFBNkg7V0FGRjlIO2dCQUFBSSxZQUVFLG1DQUZGSjs7V0FFRSxJQUFBSyxTQUFBLGlDQUZGRjtXQUVFMkgsOEJBQUF6SDs7aUJBREEsbUNBQUF3SDtVQURGN0g7ZUFBQUksWUFDRSxtQ0FERko7O1VBQ0UsSUFBQU0sV0FsRkZxRCxrQkFpRkF4RDtVQUNFMEgsa0JBQUF2SDs7Z0JBR0EsbUNBQUEwSDtTQUpGaEk7Y0FBQUksWUFJRSxtQ0FKRko7O1NBSUU7VUFBQU87WUFBQSxxREFKRko7U0FJRTZILDJCQUFBekg7O2VBREEsbUNBQUF3SDtRQUhGL0g7YUFBQUksWUFHRSxtQ0FIRko7Ozs7b0JBR3dCdEk7WSxVQUFBQSxxQ0FBQUE7d0JBQUFBOzs7OztnQkFBQXdRO2dCQUFBN0w7Z0JBQUFDLG1DQUFBRDtnQkFBQThMLHdDQUFBRDswQkFBQTVMLE1BQUE2TDs7Ozs7d0RBSHhCdlIsYUFHd0JjOztTQUF0QjBROzs2REFIRmpJO1FBR0U0SCw2QkFBQUs7O2NBRUEsbUNBQUFIO09BTEZqSTtZQUFBSSxZQUtFLG1DQUxGSjs7O1FBS0VxSTs7O1lBbEhGMUk7WUE2R0FRO09BS0U4SCx3QkFBQUk7O2tCQUxGbkk7O1FBQUEsbUNBQUFGO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBcEosZ0JBQUFjOztRQUFBLG1DQUFBdUk7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUFySixnQkFBQWM7O0tBQ0U7TUFBQSxVQUFBLG1DQUFBbVE7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQzs7O09BQUFLO09BREFDO09BREFDO09BREFDO09BREFDO01BREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7O0tBTEY7TUFBQTs7O2dCQUtFLG1DQUFBTDs7O01BTEY7OztnQkFJRSxtQ0FBQUQ7OztNQUpGOzs7Z0JBR0UsbUNBQUFEOzs7OztNQUhGOzs7Z0JBRUUsbUNBQUFEOzs7OztNQUZGOzs7Z0JBQ0UsbUNBQUFEOzs7S0FERixPQUFBO2tEQUFBalIsVUFBQWM7O0lBQUEsT0FBQSwrQ0FBQWQsVUFBQWM7O1lBQUFpUjtJQUFBO0tBS0VDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBSUFqSTs7O1NBbEhGSjtTQWtIRWlJO0tBQUE1SCwrQkFBQUQ7S0FEQUU7MkRBQUE0SDtLQUFBM0gsb0NBQUFELFFBQ0FEOzs7TUFGc0JrSDtNQUFBN0w7TUFBQUMsbUNBQUFEO01BQUE4TCx3Q0FBQUQ7K0JBQUE1TCxVQUFBNkw7OztLQUF0QmhIOzt5REFBQTJIO0tBQUExSCxzQ0FBQUQsUUFDQUQ7S0FGQStILHlDQUFBRjtLQUFBRyx1Q0FBQUQsUUFDQTdIO0tBRkErSCxRQWxGRnZGLGtCQWtGRW9GO0tBQUFJLDJCQUFBRCxRQUNBRDtJQUZGLHNCQUNFRTtHQUtEOztJQUlEQztJQUFBQzs7S0FBQUQ7Y0FDQWpTO01BQUE7OztjQURBc0M7VUFDQSwrQkFBQXRDO1VBbEhBaUssbUJBa0hBakssS0FEQXNDO1VBQUEsT0FBQSwrQkFDQXRDOztjQURBdUM7VUFDQSwrQkFBQXZDO1VBbEhBaUssbUJBa0hBakssS0FEQXVDO1VBQUEsT0FBQSwrQkFDQXZDOztjQURBd0M7VUFDQSwrQkFBQXhDO1VBbEhBaUssbUJBa0hBakssS0FEQXdDO1VBQUEsT0FBQSwrQkFDQXhDOztjQURBeUM7VUFDQSwrQkFBQXpDO1VBREEsV0FBQSxvQ0FDQUEsTUFEQXlDO1VBQUEsT0FBQSwrQkFDQXpDOztjQURBMEM7VUFDQSwrQkFBQTFDO1VBREEsV0FBQSxvQ0FDQUEsTUFEQTBDO1VBQUEsT0FBQSwrQkFDQTFDOzs7Ozs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBO3NDQUFBQTs7VUFBQSxPQUFBO3NDQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7VUFBQSxPQUFBLDhCQUFBQTs7OztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJBQUFBOztTQUFBLE9BQUEsOEJB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R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzRHQUFBQTs7OzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7O2dIQUFBQTs7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTs4R0FBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzs7O3lGQUFBQTs7Ozs0R0FBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7OzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs0R0FBQUE7Ozs7O2tIQUFBQTs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBO2dIQUFBQTs7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTs7Z0hBQUFBOzhHQUFBQTs7OzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7bUhBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7NkdBQUFBOzs7OzhHQUFBQTs4R0FBQUE7OzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzRHQUFBQTs7OzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7O2dIQUFBQTs7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTs4R0FBQUE7OzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7NkdBQUFBOzs7bUhBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7Ozs7O3lGQUFBQTs7Ozs7eUZBQUFBOzsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FB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O3NCQUdhOzs7OztTQWZWOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFOVTs7Ozs7U0FkQTs7Ozs7O3NCQUhBOzs7OztTQWRBOzs7Ozs7c0JBSEE7SUEzQkg7Ozs7O1VBSWE7Ozs7Ozs7Ozs7O1NBaEJWOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQU5iO3NCQUdhOzs7OztTQWZWOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFOVTs7Ozs7U0FkQTs7Ozs7O3NCQUhBOzs7OztTQWRBOzs7Ozs7c0JBSEE7SUEzQkg7Ozs7O1VBSWE7Ozs7Ozs7Ozs7O1NBaEJWOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQU5iO3NCQUdhOzs7OztTQWZWOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFOVTs7Ozs7U0FkQTs7Ozs7O3NCQUhBOzs7OztTQWRBOzs7Ozs7c0JBSEE7SUEzQkg7Ozs7O1VBSWE7Ozs7Ozs7Ozs7O1NBaEJWOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQU5iO3NCQUdhOzs7OztTQWZWOzs7Ozs7c0JBSEE7Ozs7O1NBZEE7Ozs7OztzQkFOVTs7Ozs7U0FkQTs7Ozs7O3NCQUhBOzs7OztTQWRBOzs7Ozs7dUJBSEE7SUEzQkg7Ozs7O1VBSWE7Ozs7Ozs7Ozs7O1NBaEJWOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQU5iO3NCQUdhOzs7OztTQWZWOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFOVTs7Ozs7U0FkQTs7Ozs7O3VCQUhBOzs7OztTQWRBOzs7Ozs7dUJBSEE7SUEzQkg7Ozs7O1VBSWE7Ozs7Ozs7Ozs7O1NBaEJWOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQU5iO3NCQUdhOzs7OztTQWZWOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFOVTs7Ozs7U0FkQTs7Ozs7O3VCQUhBOzs7OztTQWRBOzs7Ozs7dUJBSEE7SUEzQkg7Ozs7O1VBSWE7Ozs7Ozs7Ozs7O1NBaEJWOzs7Ozs7Ozs7O1NBZkE7Ozs7OztJQU5iO3NCQUdhOzs7OztTQWZWOzs7Ozs7dUJBSEE7Ozs7O1NBZEE7Ozs7Ozt1QkFOVTs7Ozs7U0Fk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QVZBO2NBTUdDO29CQUFBQSwwQkFBQUE7V0FIUTtZQUZRQyxRQUtoQkQ7WUFIUSxNQUFBLHVDQUZRQztXQUV0QjtXQUFBLE9BMkNRUjs7VUF2Q00sVUFBQSxtQ0FEUk87VUFDTjtVQUFBLE9BdUNRUDs7S0FNTixPQUFBLGlEQU5NQTtJQXNCTjsrQ0EzQkVBO0dBNEJMO0dBR0ksWUFBQTs7O21FQUNZO0lBR1A7S0FBQTs7Ozs7UUEzRE5QO1FBc0JBTTtLQXdDYSxNQUFBO0lBSmpCOzs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDdkhNO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIHN0cmZ0aW1lXG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL3N0cmZ0aW1lXG4vLyBAX3Nqc1xuLy9cbi8vIENvcHlyaWdodCAyMDEwIC0gMjAxNSBTYW1pIFNhbWh1cmkgPHNhbWlAc2FtaHVyaS5uZXQ+XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vIGh0dHA6Ly9zanMubWl0LWxpY2Vuc2Uub3JnXG4vL1xuXG47KGZ1bmN0aW9uKCkge1xuXG4gICAgdmFyIERlZmF1bHRMb2NhbGUgPSB7XG4gICAgICAgICAgICBkYXlzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sXG4gICAgICAgICAgICBzaG9ydERheXM6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgICAgICAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgICAgICAgICAgc2hvcnRNb250aHM6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgICAgIEFNOiAnQU0nLFxuICAgICAgICAgICAgUE06ICdQTScsXG4gICAgICAgICAgICBhbTogJ2FtJyxcbiAgICAgICAgICAgIHBtOiAncG0nLFxuICAgICAgICAgICAgZm9ybWF0czoge1xuICAgICAgICAgICAgICAgIEQ6ICclbS8lZC8leScsXG4gICAgICAgICAgICAgICAgRjogJyVZLSVtLSVkJyxcbiAgICAgICAgICAgICAgICBSOiAnJUg6JU0nLFxuICAgICAgICAgICAgICAgIFQ6ICclSDolTTolUycsXG4gICAgICAgICAgICAgICAgWDogJyVUJyxcbiAgICAgICAgICAgICAgICBjOiAnJWEgJWIgJWQgJVggJVknLFxuICAgICAgICAgICAgICAgIHI6ICclSTolTTolUyAlcCcsXG4gICAgICAgICAgICAgICAgdjogJyVlLSViLSVZJyxcbiAgICAgICAgICAgICAgICB4OiAnJUQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRTdHJmdGltZSA9IG5ldyBTdHJmdGltZShEZWZhdWx0TG9jYWxlLCAwLCBmYWxzZSksXG4gICAgICAgIGlzQ29tbW9uSlMgPSB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgbmFtZXNwYWNlO1xuXG4gICAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICAgIGlmIChpc0NvbW1vbkpTKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IG1vZHVsZS5leHBvcnRzID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWU7XG4gICAgICAgIGlmKGpvb19nbG9iYWxfb2JqZWN0KSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG4gICAgLy8gQnJvd3NlcnMgYW5kIG90aGVyIGVudmlyb25tZW50c1xuICAgIGVsc2Uge1xuICAgICAgICAvLyBHZXQgdGhlIGdsb2JhbCBvYmplY3QuIFdvcmtzIGluIEVTMywgRVM1LCBhbmQgRVM1IHN0cmljdCBtb2RlLlxuICAgICAgICBuYW1lc3BhY2UgPSBqb29fZ2xvYmFsX29iamVjdCB8fCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIHx8ICgxLGV2YWwpKCd0aGlzJyk7IH0oKSk7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG5cbiAgICAvLyBEZXByZWNhdGVkIEFQSSwgdG8gYmUgcmVtb3ZlZCBpbiB2MS4wXG4gICAgdmFyIF9yZXF1aXJlID0gaXNDb21tb25KUyA/IFwicmVxdWlyZSgnc3RyZnRpbWUnKVwiIDogXCJzdHJmdGltZVwiO1xuICAgIHZhciBfZGVwcmVjYXRpb25XYXJuaW5ncyA9IHt9O1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0aW9uV2FybmluZyhuYW1lLCBpbnN0ZWFkKSB7XG4gICAgICAgIGlmICghX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0pIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIFwiICsgbmFtZSArIFwiIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEuMC4gSW5zdGVhZCwgdXNlIGBcIiArIGluc3RlYWQgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVFogPSBkZXByZWNhdGVkU3RyZnRpbWVUWjtcbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVVVEMgPSBkZXByZWNhdGVkU3RyZnRpbWVVVEM7XG4gICAgbmFtZXNwYWNlLmxvY2FsaXplZFN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkO1xuXG4gICAgLy8gQWRhcHQgdGhlIG9sZCBBUEkgd2hpbGUgcHJlc2VydmluZyB0aGUgbmV3IEFQSS5cbiAgICBmdW5jdGlvbiBhZGFwdEZvcndhcmRzKGZuKSB7XG4gICAgICAgIGZuLmxvY2FsaXplID0gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udGltZXpvbmUgPSBkZWZhdWx0U3RyZnRpbWUudGltZXpvbmUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi51dGMgPSBkZWZhdWx0U3RyZnRpbWUudXRjLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGFkYXB0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gYWRhcHRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIGQgYW5kIGxvY2FsZSBhcmUgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICBpZiAoZCAmJiBkLmRheXMpIHtcbiAgICAgICAgICAgIGxvY2FsZSA9IGQ7XG4gICAgICAgICAgICBkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhkZXByZWNhdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdKWBcIiwgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVRaKGZtdCwgZCwgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgICAgICAvLyBsb2NhbGUgaXMgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgZGF0ZSwgdGltZXpvbmUpXG4gICAgICAgIGlmICgodHlwZW9mIGxvY2FsZSA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbG9jYWxlID09ICdzdHJpbmcnKSAmJiB0aW1lem9uZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lem9uZSA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYHZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSAobG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWUpLnRpbWV6b25lKHRpbWV6b25lKTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgdmFyIHV0Y1N0cmZ0aW1lID0gZGVmYXVsdFN0cmZ0aW1lLnV0YygpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVVUQyhmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgZGF0ZSwgbG9jYWxlKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBbZGF0ZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyB1dGNTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogdXRjU3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZChsb2NhbGUpIHtcbiAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZWRTdHJmdGltZShsb2NhbGUpYFwiLCBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSlcIik7XG4gICAgICAgIHJldHVybiBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKTtcbiAgICB9XG4gICAgLy8gRW5kIG9mIGRlcHJlY2F0ZWQgQVBJXG5cbiAgICAvLyBQb2x5ZmlsbCBEYXRlLm5vdyBmb3Igb2xkIGJyb3dzZXJzLlxuICAgIGlmICh0eXBlb2YgRGF0ZS5ub3cgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgRGF0ZS5ub3cgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU3RyZnRpbWUobG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjVGltZXpvbmUpIHtcbiAgICAgICAgdmFyIF9sb2NhbGUgPSBsb2NhbGUgfHwgRGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIF9jdXN0b21UaW1lem9uZU9mZnNldCA9IGN1c3RvbVRpbWV6b25lT2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBfdXNlVXRjQmFzZWREYXRlID0gdXNlVXRjVGltZXpvbmUgfHwgZmFsc2UsXG5cbiAgICAgICAgICAgIC8vIHdlIHN0b3JlIHVuaXggdGltZXN0YW1wIHZhbHVlIGhlcmUgdG8gbm90IGNyZWF0ZSBuZXcgRGF0ZSgpIGVhY2ggaXRlcmF0aW9uIChlYWNoIG1pbGxpc2Vjb25kKVxuICAgICAgICAgICAgLy8gRGF0ZS5ub3coKSBpcyAyIHRpbWVzIGZhc3RlciB0aGFuIG5ldyBEYXRlKClcbiAgICAgICAgICAgIC8vIHdoaWxlIG1pbGxpc2Vjb25kIHByZWNpc2UgaXMgZW5vdWdoIGhlcmVcbiAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgdmVyeSBoZWxwZnVsIHdoZW4gc3RyZnRpbWUgdHJpZ2dlcmVkIGEgbG90IG9mIHRpbWVzIG9uZSBieSBvbmVcbiAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gMCxcbiAgICAgICAgICAgIF9jYWNoZWREYXRlO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9zdHJmdGltZShmb3JtYXQsIGRhdGUpIHtcbiAgICAgICAgICAgIHZhciB0aW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWVzdGFtcCA+IF9jYWNoZWREYXRlVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gY3VycmVudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gX2NhY2hlZERhdGVUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvdyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBkYXRlIGluc3RhbnRpYXRpb24gZm9yIHV0YyBoZXJlP1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdGllZCB0byBnZXRUaW1lem9uZU9mZnNldCBvZiB0aGUgY3VycmVudCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoX2NhY2hlZERhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRlID0gX2NhY2hlZERhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIF9sb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gZm9ybWF0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhckNvZGUgPSBmb3JtYXQuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0luU2NvcGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0nXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnXydcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA5NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzonXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kZWRUWikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIGRldGVjdGVkIHVzZSBvZiB1bnN1cHBvcnRlZCAlOjogb3IgJTo6OiBtb2RpZmllcnMgdG8gc3RyZnRpbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50Q2hhckNvZGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgZm9yIG5ldyBEYXRlKDApIGluIEdNVFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1cnNkYXknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5kYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFudWFyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLm1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gMTAwKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMS8wMS83MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MC0wMS0wMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoTWF0aC5mbG9vcih0aW1lc3RhbXAgJSAxMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNaW51dGVzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnYW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdQJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLmFtIDogbG9jYWxlLnBtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldFNlY29uZHMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuVCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ3N1bmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdtb25kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxNjowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuWCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnR01UJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gXCJHTVRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeG1lIG9wdGltaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0elN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5tYXRjaCgvXFwoKFtcXHdcXHNdKylcXCkvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHR6U3RyaW5nICYmIHR6U3RyaW5nWzFdIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0RGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdjJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLmMsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VGltZSgpIC0geS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoZGF5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNb250aCgpICsgMSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXG4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICduJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzFzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZyhkYXRlLmdldERhdGUoKSkgKyBvcmRpbmFsKGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0FNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuQU0gOiBsb2NhbGUuUE07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMjowMDowMCBBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBNYXRoLmZsb29yKHRpbWVzdGFtcCAvIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFx0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMSAtIDcsIE1vbmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxLUphbi0xOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMudiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDAgLSA2LCBTdW5kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMi8zMS82OSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLngsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gKCcnICsgZGF0ZS5nZXRGdWxsWWVhcigpKS5zbGljZSgyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyswMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGV4dGVuZGVkVFogPyBcIiswMDowMFwiIDogXCIrMDAwMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9mZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jdXN0b21UaW1lem9uZU9mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0IC8gKDYwICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gb2ZmIDwgMCA/ICctJyA6ICcrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcCA9IGV4dGVuZGVkVFogPyAnOicgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihNYXRoLmFicyhvZmYgLyA2MCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlucyA9IE1hdGguYWJzKG9mZiAlIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHNpZ24gKyBwYWRUaWxsMihob3VycykgKyBzZXAgKyBwYWRUaWxsMihtaW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gJyUnXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gMzcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IF9zdHJmdGltZTtcblxuICAgICAgICBzdHJmdGltZS5sb2NhbGl6ZSA9IGZ1bmN0aW9uKGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShsb2NhbGUgfHwgX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCBfdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS50aW1lem9uZSA9IGZ1bmN0aW9uKHRpbWV6b25lKSB7XG4gICAgICAgICAgICB2YXIgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdXNlVXRjQmFzZWREYXRlID0gX3VzZVV0Y0Jhc2VkRGF0ZTtcblxuICAgICAgICAgICAgdmFyIHRpbWV6b25lVHlwZSA9IHR5cGVvZiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInIHx8IHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB1c2VVdGNCYXNlZERhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gSVNPIDg2MDEgZm9ybWF0IHRpbWV6b25lIHN0cmluZywgWy0rXUhITU1cbiAgICAgICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IHRpbWV6b25lWzBdID09PSAnLScgPyAtMSA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDEsIDMpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMywgNSksIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHNpZ24gKiAoKDYwICogaG91cnMpICsgbWludXRlcykgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluIG1pbnV0ZXM6IDQyMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gdGltZXpvbmUgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnV0YyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIHRydWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzdHJmdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMihudW1iZXJUb1BhZCwgcGFkZGluZ0NoYXIpIHtcbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09PSAnJyB8fCBudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFkZGluZ0NoYXIgPSAnMCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZGRpbmdDaGFyICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDMobnVtYmVyVG9QYWQpIHtcbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOTkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnICsgbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwMCcgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBob3VyczEyKGhvdXIpIHtcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIC0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgLy8gZmlyc3RXZWVrZGF5OiAnc3VuZGF5JyBvciAnbW9uZGF5JywgZGVmYXVsdCBpcyAnc3VuZGF5J1xuICAgIC8vXG4gICAgLy8gUGlsZmVyZWQgJiBwb3J0ZWQgZnJvbSBSdWJ5J3Mgc3RyZnRpbWUgaW1wbGVtZW50YXRpb24uXG4gICAgZnVuY3Rpb24gd2Vla051bWJlcihkYXRlLCBmaXJzdFdlZWtkYXkpIHtcbiAgICAgICAgZmlyc3RXZWVrZGF5ID0gZmlyc3RXZWVrZGF5IHx8ICdzdW5kYXknO1xuXG4gICAgICAgIC8vIFRoaXMgd29ya3MgYnkgc2hpZnRpbmcgdGhlIHdlZWtkYXkgYmFjayBieSBvbmUgZGF5IGlmIHdlXG4gICAgICAgIC8vIGFyZSB0cmVhdGluZyBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgdmFyIHdlZWtkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICBpZiAoZmlyc3RXZWVrZGF5ID09PSAnbW9uZGF5Jykge1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPT09IDApIC8vIFN1bmRheVxuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHdlZWtkYXktLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXJzdERheU9mWWVhclV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSksXG4gICAgICAgICAgICBkYXRlVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSxcbiAgICAgICAgICAgIHlkYXkgPSBNYXRoLmZsb29yKChkYXRlVXRjIC0gZmlyc3REYXlPZlllYXJVdGMpIC8gODY0MDAwMDApLFxuICAgICAgICAgICAgd2Vla051bSA9ICh5ZGF5ICsgNyAtIHdlZWtkYXkpIC8gNztcblxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrTnVtKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG9yZGluYWwgc3VmZml4IGZvciBhIG51bWJlcjogc3QsIG5kLCByZCwgb3IgdGhcbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICB2YXIgaSA9IG51bWJlciAlIDEwO1xuICAgICAgICB2YXIgaWkgPSBudW1iZXIgJSAxMDA7XG5cbiAgICAgICAgaWYgKChpaSA+PSAxMSAmJiBpaSA8PSAxMykgfHwgaSA9PT0gMCB8fCBpID49IDQpIHtcbiAgICAgICAgICAgIHJldHVybiAndGgnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gJ3N0JztcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICduZCc7XG4gICAgICAgICAgICBjYXNlIDM6IHJldHVybiAncmQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkge1xuICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxufSgpKTtcbiIsIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlZpcnR1YWxEb20gPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoXCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbn0se1wiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCI6MjR9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkaWZmID0gcmVxdWlyZShcIi4vdnRyZWUvZGlmZi5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxufSx7XCIuL3Z0cmVlL2RpZmYuanNcIjo0N31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLyohXG4gKiBDcm9zcy1Ccm93c2VyIFNwbGl0IDEuMS4xXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDEyIFN0ZXZlbiBMZXZpdGhhbiA8c3RldmVubGV2aXRoYW4uY29tPlxuICogQXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogRUNNQVNjcmlwdCBjb21wbGlhbnQsIHVuaWZvcm0gY3Jvc3MtYnJvd3NlciBzcGxpdCBtZXRob2RcbiAqL1xuXG4vKipcbiAqIFNwbGl0cyBhIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNpbmcgYSByZWdleCBvciBzdHJpbmcgc2VwYXJhdG9yLiBNYXRjaGVzIG9mIHRoZVxuICogc2VwYXJhdG9yIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBhcnJheS4gSG93ZXZlciwgaWYgYHNlcGFyYXRvcmAgaXMgYSByZWdleCB0aGF0IGNvbnRhaW5zXG4gKiBjYXB0dXJpbmcgZ3JvdXBzLCBiYWNrcmVmZXJlbmNlcyBhcmUgc3BsaWNlZCBpbnRvIHRoZSByZXN1bHQgZWFjaCB0aW1lIGBzZXBhcmF0b3JgIGlzIG1hdGNoZWQuXG4gKiBGaXhlcyBicm93c2VyIGJ1Z3MgY29tcGFyZWQgdG8gdGhlIG5hdGl2ZSBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgYW5kIGNhbiBiZSB1c2VkIHJlbGlhYmx5XG4gKiBjcm9zcy1icm93c2VyLlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBTdHJpbmcgdG8gc3BsaXQuXG4gKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd9IHNlcGFyYXRvciBSZWdleCBvciBzdHJpbmcgdG8gdXNlIGZvciBzZXBhcmF0aW5nIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge051bWJlcn0gW2xpbWl0XSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlIGluIHRoZSByZXN1bHQgYXJyYXkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEFycmF5IG9mIHN1YnN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEJhc2ljIHVzZVxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcpO1xuICogLy8gLT4gWydhJywgJ2InLCAnYycsICdkJ11cbiAqXG4gKiAvLyBXaXRoIGxpbWl0XG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJywgMik7XG4gKiAvLyAtPiBbJ2EnLCAnYiddXG4gKlxuICogLy8gQmFja3JlZmVyZW5jZXMgaW4gcmVzdWx0IGFycmF5XG4gKiBzcGxpdCgnLi53b3JkMSB3b3JkMi4uJywgLyhbYS16XSspKFxcZCspL2kpO1xuICogLy8gLT4gWycuLicsICd3b3JkJywgJzEnLCAnICcsICd3b3JkJywgJzInLCAnLi4nXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiBzcGxpdCh1bmRlZikge1xuXG4gIHZhciBuYXRpdmVTcGxpdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQsXG4gICAgY29tcGxpYW50RXhlY05wY2cgPSAvKCk/Py8uZXhlYyhcIlwiKVsxXSA9PT0gdW5kZWYsXG4gICAgLy8gTlBDRzogbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICBzZWxmO1xuXG4gIHNlbGYgPSBmdW5jdGlvbihzdHIsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIGBuYXRpdmVTcGxpdGBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlcGFyYXRvcikgIT09IFwiW29iamVjdCBSZWdFeHBdXCIpIHtcbiAgICAgIHJldHVybiBuYXRpdmVTcGxpdC5jYWxsKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuICAgIHZhciBvdXRwdXQgPSBbXSxcbiAgICAgIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gXCJpXCIgOiBcIlwiKSArIChzZXBhcmF0b3IubXVsdGlsaW5lID8gXCJtXCIgOiBcIlwiKSArIChzZXBhcmF0b3IuZXh0ZW5kZWQgPyBcInhcIiA6IFwiXCIpICsgLy8gUHJvcG9zZWQgZm9yIEVTNlxuICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyBcInlcIiA6IFwiXCIpLFxuICAgICAgLy8gRmlyZWZveCAzK1xuICAgICAgbGFzdExhc3RJbmRleCA9IDAsXG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgc2VwYXJhdG9yID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArIFwiZ1wiKSxcbiAgICAgIHNlcGFyYXRvcjIsIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGg7XG4gICAgc3RyICs9IFwiXCI7IC8vIFR5cGUtY29udmVydFxuICAgIGlmICghY29tcGxpYW50RXhlY05wY2cpIHtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoXCJeXCIgKyBzZXBhcmF0b3Iuc291cmNlICsgXCIkKD8hXFxcXHMpXCIsIGZsYWdzKTtcbiAgICB9XG4gICAgLyogVmFsdWVzIGZvciBgbGltaXRgLCBwZXIgdGhlIHNwZWM6XG4gICAgICogSWYgdW5kZWZpbmVkOiA0Mjk0OTY3Mjk1IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICAgKiBJZiAwLCBJbmZpbml0eSwgb3IgTmFOOiAwXG4gICAgICogSWYgcG9zaXRpdmUgbnVtYmVyOiBsaW1pdCA9IE1hdGguZmxvb3IobGltaXQpOyBpZiAobGltaXQgPiA0Mjk0OTY3Mjk1KSBsaW1pdCAtPSA0Mjk0OTY3Mjk2O1xuICAgICAqIElmIG5lZ2F0aXZlIG51bWJlcjogNDI5NDk2NzI5NiAtIE1hdGguZmxvb3IoTWF0aC5hYnMobGltaXQpKVxuICAgICAqIElmIG90aGVyOiBUeXBlLWNvbnZlcnQsIHRoZW4gdXNlIHRoZSBhYm92ZSBydWxlc1xuICAgICAqL1xuICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmID8gLTEgPj4+IDAgOiAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgbGltaXQgPj4+IDA7IC8vIFRvVWludDMyKGxpbWl0KVxuICAgIHdoaWxlIChtYXRjaCA9IHNlcGFyYXRvci5leGVjKHN0cikpIHtcbiAgICAgIC8vIGBzZXBhcmF0b3IubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yXG4gICAgICAgIC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3Vwc1xuICAgICAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hbaV0gPSB1bmRlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgIGlmIChvdXRwdXQubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZXBhcmF0b3IubGFzdEluZGV4ID09PSBtYXRjaC5pbmRleCkge1xuICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3IudGVzdChcIlwiKSkge1xuICAgICAgICBvdXRwdXQucHVzaChcIlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5sZW5ndGggPiBsaW1pdCA/IG91dHB1dC5zbGljZSgwLCBsaW1pdCkgOiBvdXRwdXQ7XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59KSgpO1xuXG59LHt9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIE9uZVZlcnNpb25Db25zdHJhaW50ID0gcmVxdWlyZSgnaW5kaXZpZHVhbC9vbmUtdmVyc2lvbicpO1xuXG52YXIgTVlfVkVSU0lPTiA9ICc3Jztcbk9uZVZlcnNpb25Db25zdHJhaW50KCdldi1zdG9yZScsIE1ZX1ZFUlNJT04pO1xuXG52YXIgaGFzaEtleSA9ICdfX0VWX1NUT1JFX0tFWUAnICsgTVlfVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBFdlN0b3JlO1xuXG5mdW5jdGlvbiBFdlN0b3JlKGVsZW0pIHtcbiAgICB2YXIgaGFzaCA9IGVsZW1baGFzaEtleV07XG5cbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgaGFzaCA9IGVsZW1baGFzaEtleV0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbn1cblxufSx7XCJpbmRpdmlkdWFsL29uZS12ZXJzaW9uXCI6Nn1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuXG4vKmdsb2JhbCB3aW5kb3csIGdsb2JhbCovXG5cbnZhciByb290ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID9cbiAgICBnbG9iYWwgOiB7fTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbmRpdmlkdWFsO1xuXG5mdW5jdGlvbiBJbmRpdmlkdWFsKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJvb3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Rba2V5XTtcbiAgICB9XG5cbiAgICByb290W2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHt9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEluZGl2aWR1YWwgPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT25lVmVyc2lvbjtcblxuZnVuY3Rpb24gT25lVmVyc2lvbihtb2R1bGVOYW1lLCB2ZXJzaW9uLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIga2V5ID0gJ19fSU5ESVZJRFVBTF9PTkVfVkVSU0lPTl8nICsgbW9kdWxlTmFtZTtcbiAgICB2YXIgZW5mb3JjZUtleSA9IGtleSArICdfRU5GT1JDRV9TSU5HTEVUT04nO1xuXG4gICAgdmFyIHZlcnNpb25WYWx1ZSA9IEluZGl2aWR1YWwoZW5mb3JjZUtleSwgdmVyc2lvbik7XG5cbiAgICBpZiAodmVyc2lvblZhbHVlICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgaGF2ZSBvbmUgY29weSBvZiAnICtcbiAgICAgICAgICAgIG1vZHVsZU5hbWUgKyAnLlxcbicgK1xuICAgICAgICAgICAgJ1lvdSBhbHJlYWR5IGhhdmUgdmVyc2lvbiAnICsgdmVyc2lvblZhbHVlICtcbiAgICAgICAgICAgICcgaW5zdGFsbGVkLlxcbicgK1xuICAgICAgICAgICAgJ1RoaXMgbWVhbnMgeW91IGNhbm5vdCBpbnN0YWxsIHZlcnNpb24gJyArIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBJbmRpdmlkdWFsKGtleSwgZGVmYXVsdFZhbHVlKTtcbn1cblxufSx7XCIuL2luZGV4LmpzXCI6NX1dLDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHRvcExldmVsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge31cbnZhciBtaW5Eb2MgPSByZXF1aXJlKCdtaW4tZG9jdW1lbnQnKTtcblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50O1xufSBlbHNlIHtcbiAgICB2YXIgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddO1xuXG4gICAgaWYgKCFkb2NjeSkge1xuICAgICAgICBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J10gPSBtaW5Eb2M7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2NjeTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcIm1pbi1kb2N1bWVudFwiOjE3fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxuXG52YXIgQ29tbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1jb21tZW50LmpzXCIpXG52YXIgRE9NVGV4dCA9IHJlcXVpcmUoXCIuL2RvbS10ZXh0LmpzXCIpXG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG52YXIgRG9jdW1lbnRGcmFnbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1mcmFnbWVudC5qc1wiKVxudmFyIEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQuanNcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50O1xuXG5mdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIpXG4gICAgdGhpcy5ib2R5ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiYm9keVwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaHRtbFwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZClcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJvZHkpXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW3RoaXMuZG9jdW1lbnRFbGVtZW50XVxuICAgIHRoaXMubm9kZVR5cGUgPSA5XG59XG5cbnZhciBwcm90byA9IERvY3VtZW50LnByb3RvdHlwZTtcbnByb3RvLmNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnROUyA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IG51bGwgPyBudWxsIDogU3RyaW5nKG5hbWVzcGFjZSlcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcywgbnMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUpIHtcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQoZmFtaWx5KSB7XG4gICAgcmV0dXJuIG5ldyBFdmVudChmYW1pbHkpXG59XG5cbnByb3RvLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgdGhpcylcbn1cblxucHJvdG8uZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIGlkID0gU3RyaW5nKGlkKVxuXG4gICAgdmFyIHJlc3VsdCA9IGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAoU3RyaW5nKG5vZGUuaWQpID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0IHx8IG51bGxcbn1cblxucHJvdG8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWVcbnByb3RvLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVcbnByb3RvLmNvbnRhaW5zID0gRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnNcblxucHJvdG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbnByb3RvLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5wcm90by5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG59LHtcIi4vZG9tLWNvbW1lbnQuanNcIjo5LFwiLi9kb20tZWxlbWVudC5qc1wiOjEwLFwiLi9kb20tZnJhZ21lbnQuanNcIjoxMSxcIi4vZG9tLXRleHQuanNcIjoxMixcIi4vZXZlbnQuanNcIjoxMyxcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiZG9tLXdhbGtcIjoxOH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBDb21tZW50XG5cbmZ1bmN0aW9uIENvbW1lbnQoZGF0YSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIG93bmVyKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLm5vZGVWYWx1ZSA9IGRhdGFcbiAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Db21tZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDhcbkNvbW1lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjY29tbWVudFwiXG5cbkNvbW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0NvbW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBDb21tZW50XVwiXG59XG5cbn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciBzZXJpYWxpemVOb2RlID0gcmVxdWlyZShcIi4vc2VyaWFsaXplLmpzXCIpXG5cbnZhciBodG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUVsZW1lbnRcblxuZnVuY3Rpb24gRE9NRWxlbWVudCh0YWdOYW1lLCBvd25lciwgbmFtZXNwYWNlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lKVxuICAgIH1cblxuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gaHRtbG5zIDogKG5hbWVzcGFjZSB8fCBudWxsKVxuXG4gICAgdGhpcy50YWdOYW1lID0gbnMgPT09IGh0bWxucyA/IFN0cmluZyh0YWdOYW1lKS50b1VwcGVyQ2FzZSgpIDogdGFnTmFtZVxuICAgIHRoaXMubm9kZU5hbWUgPSB0aGlzLnRhZ05hbWVcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCJcbiAgICB0aGlzLmRhdGFzZXQgPSB7fVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMuc3R5bGUgPSB7fVxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbiAgICB0aGlzLm5hbWVzcGFjZVVSSSA9IG5zXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHt9XG5cbiAgICBpZiAodGhpcy50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnR5cGUgPSAndGV4dCdcbiAgICB9XG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRPTUVsZW1lbnRcIlxuRE9NRWxlbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxXG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfYXBwZW5kQ2hpbGQoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSkge1xuICAgICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKVxuICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICByZXR1cm4gY2hpbGRcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZXBsYWNlQ2hpbGQoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgbmVlZGxlLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBuZWVkbGUucGFyZW50Tm9kZSA9IG51bGxcbiAgICAgICAgdGhpcy5jaGlsZE5vZGVzW2luZGV4XSA9IGVsZW1cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgICAgIHJldHVybiBuZWVkbGVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQ2hpbGQoZWxlbSkge1xuICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgZWxlbS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihlbGVtKVxuICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICBlbGVtLnBhcmVudE5vZGUgPSBudWxsXG4gICAgcmV0dXJuIGVsZW1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9pbnNlcnRCZWZvcmUoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgcmVmZXJlbmNlRWxlbWVudCBpcyBhIGRvbSBub2RlXG4gICAgICAgIC8vIGFuZCBwYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSBuZWVkbGUgPT09IG51bGwgfHwgbmVlZGxlID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBlbGVtKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcbiAgICAgICAgcmV0dXJuIGVsZW1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBwcmVmaXggPSBudWxsXG4gICAgICAgIHZhciBsb2NhbE5hbWUgPSBuYW1lXG4gICAgICAgIHZhciBjb2xvblBvc2l0aW9uID0gbmFtZS5pbmRleE9mKFwiOlwiKVxuICAgICAgICBpZiAoY29sb25Qb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cigwLCBjb2xvblBvc2l0aW9uKVxuICAgICAgICAgICAgbG9jYWxOYW1lID0gbmFtZS5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gfHwgKHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSA9IHt9KVxuICAgICAgICBhdHRyaWJ1dGVzW2xvY2FsTmFtZV0gPSB7dmFsdWU6IHZhbHVlLCBwcmVmaXg6IHByZWZpeH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlc1tuYW1lXSAmJiBhdHRyaWJ1dGVzW25hbWVdLnZhbHVlXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBkZWxldGUgYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICB9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdXG4gICAgICAgIHJldHVybiAhIWF0dHJpYnV0ZXMgJiYgbmFtZSBpbiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSwgdmFsdWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxuLy8gVW4taW1wbGVtZW50ZWRcbkRPTUVsZW1lbnQucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gX0VsZW1lbnRfZm9jdXMoKSB7XG4gICAgcmV0dXJuIHZvaWQgMFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9FbGVtZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBzZXJpYWxpemVOb2RlKHRoaXMpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZXMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IGNsYXNzTmFtZXMuc3BsaXQoXCIgXCIpO1xuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzTmFtZSA9IG5vZGUuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NlcyA9IG5vZGVDbGFzc05hbWUuc3BsaXQoXCIgXCIpXG5cbiAgICAgICAgICAgIGlmIChjbGFzc2VzLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVDbGFzc2VzLmluZGV4T2YoaXRlbSkgIT09IC0xXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRhZ05hbWUgPT09ICcqJyB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZSkpIHtcbiAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBfRWxlbWVudF9jb250YWlucyhlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IG5vZGVcbiAgICB9KSB8fCBmYWxzZVxufVxuXG59LHtcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiLi9zZXJpYWxpemUuanNcIjoxOSxcImRvbS13YWxrXCI6MTh9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnRGcmFnbWVudFxuXG5mdW5jdGlvbiBEb2N1bWVudEZyYWdtZW50KG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCgpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50eXBlID0gXCJEb2N1bWVudEZyYWdtZW50XCJcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMTFcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjZG9jdW1lbnQtZnJhZ21lbnRcIlxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZFxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50b1N0cmluZyA9XG4gICAgZnVuY3Rpb24gX0RvY3VtZW50RnJhZ21lbnRfdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG5vZGUpXG4gICAgICAgIH0pLmpvaW4oXCJcIilcbiAgICB9XG5cbn0se1wiLi9kb20tZWxlbWVudC5qc1wiOjEwfV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBET01UZXh0XG5cbmZ1bmN0aW9uIERPTVRleHQodmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTVRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSlcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSB2YWx1ZSB8fCBcIlwiXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5ET01UZXh0LnByb3RvdHlwZS50eXBlID0gXCJET01UZXh0Tm9kZVwiXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlVHlwZSA9IDNcbkRPTVRleHQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjdGV4dFwiXG5cbkRPTVRleHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX1RleHRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVxufVxuXG5ET01UZXh0LnByb3RvdHlwZS5yZXBsYWNlRGF0YSA9IGZ1bmN0aW9uIHJlcGxhY2VEYXRhKGluZGV4LCBsZW5ndGgsIHZhbHVlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmRhdGFcbiAgICB2YXIgbGVmdCA9IGN1cnJlbnQuc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgIHZhciByaWdodCA9IGN1cnJlbnQuc3Vic3RyaW5nKGluZGV4ICsgbGVuZ3RoLCBjdXJyZW50Lmxlbmd0aClcbiAgICB0aGlzLmRhdGEgPSBsZWZ0ICsgdmFsdWUgKyByaWdodFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxufVxuXG59LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50XG5cbmZ1bmN0aW9uIEV2ZW50KGZhbWlseSkge31cblxuRXZlbnQucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uIF9FdmVudF9pbml0RXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgICB0aGlzLmJ1YmJsZXMgPSBidWJibGVzXG4gICAgdGhpcy5jYW5jZWxhYmxlID0gY2FuY2VsYWJsZVxufVxuXG5FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiBfRXZlbnRfcHJldmVudERlZmF1bHQoKSB7XG4gICAgXG59XG5cbn0se31dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gYWRkRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdID0gW11cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5saXN0ZW5lcnNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikgPT09IC0xKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpXG4gICAgfVxufVxuXG59LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGRpc3BhdGNoRXZlbnRcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuICAgIHZhciB0eXBlID0gZXYudHlwZVxuXG4gICAgaWYgKCFldi50YXJnZXQpIHtcbiAgICAgICAgZXYudGFyZ2V0ID0gZWxlbVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuXG4gICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBldi5jdXJyZW50VGFyZ2V0ID0gZWxlbVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGV2KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5oYW5kbGVFdmVudChldilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZS5kaXNwYXRjaEV2ZW50KGV2KVxuICAgIH1cbn1cblxufSx7fV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbGlzdCA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG4gICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKGxpc3RlbmVyKVxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxufVxuXG59LHt9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRG9jdW1lbnQgPSByZXF1aXJlKCcuL2RvY3VtZW50LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IERvY3VtZW50KCk7XG5cbn0se1wiLi9kb2N1bWVudC5qc1wiOjh9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRpdmVseVdhbGtcblxuZnVuY3Rpb24gaXRlcmF0aXZlbHlXYWxrKG5vZGVzLCBjYikge1xuICAgIGlmICghKCdsZW5ndGgnIGluIG5vZGVzKSkge1xuICAgICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9XG4gICAgXG4gICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGVzKVxuXG4gICAgd2hpbGUobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXMuc2hpZnQoKSxcbiAgICAgICAgICAgIHJldCA9IGNiKG5vZGUpXG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcyAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZS5jaGlsZE5vZGVzKS5jb25jYXQobm9kZXMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0se31dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gc2VyaWFsaXplTm9kZVxuXG52YXIgdm9pZEVsZW1lbnRzID0gL2FyZWF8YmFzZXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGtleWdlbnxsaW5rfG1lbnVpdGVtfG1ldGF8cGFyYW18c291cmNlfHRyYWNrfHdici9pO1xuXG5mdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUpIHtcbiAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVRleHQobm9kZS5kYXRhKVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gXCI8IS0tXCIgKyBub2RlLmRhdGEgKyBcIi0tPlwiXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRWxlbWVudChub2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChlbGVtKSB7XG4gICAgdmFyIHN0cmluZ3MgPSBbXVxuXG4gICAgdmFyIHRhZ25hbWUgPSBlbGVtLnRhZ05hbWVcblxuICAgIGlmIChlbGVtLm5hbWVzcGFjZVVSSSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpIHtcbiAgICAgICAgdGFnbmFtZSA9IHRhZ25hbWUudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHN0cmluZ3MucHVzaChcIjxcIiArIHRhZ25hbWUgKyBwcm9wZXJ0aWVzKGVsZW0pICsgZGF0YXNldGlmeShlbGVtKSlcblxuICAgIGlmICh2b2lkRWxlbWVudHMudGVzdCh0YWduYW1lKSkge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCIgLz5cIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCI+XCIpXG5cbiAgICAgICAgaWYgKGVsZW0uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaC5hcHBseShzdHJpbmdzLCBlbGVtLmNoaWxkTm9kZXMubWFwKHNlcmlhbGl6ZU5vZGUpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlc2NhcGVUZXh0KGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZWxlbS5pbm5lckhUTUwpXG4gICAgICAgIH1cblxuICAgICAgICBzdHJpbmdzLnB1c2goXCI8L1wiICsgdGFnbmFtZSArIFwiPlwiKVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdzLmpvaW4oXCJcIilcbn1cblxuZnVuY3Rpb24gaXNQcm9wZXJ0eShlbGVtLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBlbGVtW2tleV1cblxuICAgIGlmIChrZXkgPT09IFwic3R5bGVcIiAmJiBPYmplY3Qua2V5cyhlbGVtLnN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgKHR5cGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgfHwgdHlwZSA9PT0gXCJudW1iZXJcIikgJiZcbiAgICAgICAga2V5ICE9PSBcIm5vZGVOYW1lXCIgJiYga2V5ICE9PSBcImNsYXNzTmFtZVwiICYmIGtleSAhPT0gXCJ0YWdOYW1lXCIgJiZcbiAgICAgICAga2V5ICE9PSBcInRleHRDb250ZW50XCIgJiYga2V5ICE9PSBcImlubmVyVGV4dFwiICYmIGtleSAhPT0gXCJuYW1lc3BhY2VVUklcIiAmJiAga2V5ICE9PSBcImlubmVySFRNTFwiXG59XG5cbmZ1bmN0aW9uIHN0eWxpZnkoc3R5bGVzKSB7XG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09ICdzdHJpbmcnKSByZXR1cm4gc3R5bGVzXG4gICAgdmFyIGF0dHIgPSBcIlwiXG4gICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzW2tleV1cbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi1cIiArIGMudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSlcbiAgICAgICAgYXR0ciArPSBrZXkgKyBcIjpcIiArIHZhbHVlICsgXCI7XCJcbiAgICB9KVxuICAgIHJldHVybiBhdHRyXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRpZnkoZWxlbSkge1xuICAgIHZhciBkcyA9IGVsZW0uZGF0YXNldFxuICAgIHZhciBwcm9wcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZHMpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiZGF0YS1cIiArIGtleSwgdmFsdWU6IGRzW2tleV0gfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGxpc3QpIHtcbiAgICB2YXIgYXR0cmlidXRlcyA9IFtdXG4gICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh0dXBsZSkge1xuICAgICAgICB2YXIgbmFtZSA9IHR1cGxlLm5hbWVcbiAgICAgICAgdmFyIHZhbHVlID0gdHVwbGUudmFsdWVcblxuICAgICAgICBpZiAobmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN0eWxpZnkodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmFtZSArIFwiPVwiICsgXCJcXFwiXCIgKyBlc2NhcGVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSkgKyBcIlxcXCJcIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMubGVuZ3RoID8gXCIgXCIgKyBhdHRyaWJ1dGVzLmpvaW4oXCIgXCIpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzKGVsZW0pIHtcbiAgICB2YXIgcHJvcHMgPSBbXVxuICAgIGZvciAodmFyIGtleSBpbiBlbGVtKSB7XG4gICAgICAgIGlmIChpc1Byb3BlcnR5KGVsZW0sIGtleSkpIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBrZXksIHZhbHVlOiBlbGVtW2tleV0gfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIG5zIGluIGVsZW0uX2F0dHJpYnV0ZXMpIHtcbiAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiBlbGVtLl9hdHRyaWJ1dGVzW25zXSkge1xuICAgICAgICB2YXIgcHJvcCA9IGVsZW0uX2F0dHJpYnV0ZXNbbnNdW2F0dHJpYnV0ZV1cbiAgICAgICAgdmFyIG5hbWUgPSAocHJvcC5wcmVmaXggPyBwcm9wLnByZWZpeCArIFwiOlwiIDogXCJcIikgKyBhdHRyaWJ1dGVcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiBwcm9wLnZhbHVlIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVsZW0uY2xhc3NOYW1lKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImNsYXNzXCIsIHZhbHVlOiBlbGVtLmNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0KHMpIHtcbiAgICB2YXIgc3RyID0gJyc7XG5cbiAgICBpZiAodHlwZW9mKHMpID09PSAnc3RyaW5nJykgeyBcbiAgICAgICAgc3RyID0gczsgXG4gICAgfSBlbHNlIGlmIChzKSB7XG4gICAgICAgIHN0ciA9IHMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxufVxuXG5mdW5jdGlvbiBlc2NhcGVBdHRyaWJ1dGVWYWx1ZShzdHIpIHtcbiAgICByZXR1cm4gZXNjYXBlVGV4dChzdHIpLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG59XG5cbn0se31dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzT2JqZWN0KHgpIHtcblx0cmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59O1xuXG59LHt9XSwyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXlcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJc0FycmF5IHx8IGlzQXJyYXlcblxuZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgQXJyYXldXCJcbn1cblxufSx7fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHBhdGNoID0gcmVxdWlyZShcIi4vdmRvbS9wYXRjaC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbn0se1wiLi92ZG9tL3BhdGNoLmpzXCI6Mjd9XSwyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQcm9wZXJ0aWVzXG5cbmZ1bmN0aW9uIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcywgcHJldmlvdXMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKVxuICAgICAgICAgICAgaWYgKHByb3BWYWx1ZS5ob29rKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlLmhvb2sobm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cykge1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmICghaXNIb29rKHByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zdHlsZVtpXSA9IFwiXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2aW91c1ZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBcIlwiXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzVmFsdWUudW5ob29rKSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnVuaG9vayhub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkXG5cbiAgICAvLyBTZXQgYXR0cmlidXRlc1xuICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgYXR0clZhbHVlID0gcHJvcFZhbHVlW2F0dHJOYW1lXVxuXG4gICAgICAgICAgICBpZiAoYXR0clZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmKHByZXZpb3VzVmFsdWUgJiYgaXNPYmplY3QocHJldmlvdXNWYWx1ZSkgJiZcbiAgICAgICAgZ2V0UHJvdG90eXBlKHByZXZpb3VzVmFsdWUpICE9PSBnZXRQcm90b3R5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KG5vZGVbcHJvcE5hbWVdKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHt9XG4gICAgfVxuXG4gICAgdmFyIHJlcGxhY2VyID0gcHJvcE5hbWUgPT09IFwic3R5bGVcIiA/IFwiXCIgOiB1bmRlZmluZWRcblxuICAgIGZvciAodmFyIGsgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BWYWx1ZVtrXVxuICAgICAgICBub2RlW3Byb3BOYW1lXVtrXSA9ICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHJlcGxhY2VyIDogdmFsdWVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgICAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rLmpzXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcblxudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHZub2RlLCBvcHRzKSB7XG4gICAgdmFyIGRvYyA9IG9wdHMgPyBvcHRzLmRvY3VtZW50IHx8IGRvY3VtZW50IDogZG9jdW1lbnRcbiAgICB2YXIgd2FybiA9IG9wdHMgPyBvcHRzLndhcm4gOiBudWxsXG5cbiAgICB2bm9kZSA9IGhhbmRsZVRodW5rKHZub2RlKS5hXG5cbiAgICBpZiAoaXNXaWRnZXQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiB2bm9kZS5pbml0KClcbiAgICB9IGVsc2UgaWYgKGlzVlRleHQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBkb2MuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dClcbiAgICB9IGVsc2UgaWYgKCFpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgICBpZiAod2Fybikge1xuICAgICAgICAgICAgd2FybihcIkl0ZW0gaXMgbm90IGEgdmFsaWQgdmlydHVhbCBkb20gbm9kZVwiLCB2bm9kZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBub2RlID0gKHZub2RlLm5hbWVzcGFjZSA9PT0gbnVsbCkgP1xuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCh2bm9kZS50YWdOYW1lKSA6XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50TlModm5vZGUubmFtZXNwYWNlLCB2bm9kZS50YWdOYW1lKVxuXG4gICAgdmFyIHByb3BzID0gdm5vZGUucHJvcGVydGllc1xuICAgIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcylcblxuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBjcmVhdGVFbGVtZW50KGNoaWxkcmVuW2ldLCBvcHRzKVxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKGNoaWxkTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlXG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCI6MzYsXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCJnbG9iYWwvZG9jdW1lbnRcIjo3fV0sMjU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLy8gTWFwcyBhIHZpcnR1YWwgRE9NIHRyZWUgb250byBhIHJlYWwgRE9NIHRyZWUgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cbi8vIFdlIGRvbid0IHdhbnQgdG8gcmVhZCBhbGwgb2YgdGhlIERPTSBub2RlcyBpbiB0aGUgdHJlZSBzbyB3ZSB1c2Vcbi8vIHRoZSBpbi1vcmRlciB0cmVlIGluZGV4aW5nIHRvIGVsaW1pbmF0ZSByZWN1cnNpb24gZG93biBjZXJ0YWluIGJyYW5jaGVzLlxuLy8gV2Ugb25seSByZWN1cnNlIGludG8gYSBET00gbm9kZSBpZiB3ZSBrbm93IHRoYXQgaXQgY29udGFpbnMgYSBjaGlsZCBvZlxuLy8gaW50ZXJlc3QuXG5cbnZhciBub0NoaWxkID0ge31cblxubW9kdWxlLmV4cG9ydHMgPSBkb21JbmRleFxuXG5mdW5jdGlvbiBkb21JbmRleChyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMpIHtcbiAgICBpZiAoIWluZGljZXMgfHwgaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kaWNlcy5zb3J0KGFzY2VuZGluZylcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCAwKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleCkge1xuICAgIG5vZGVzID0gbm9kZXMgfHwge31cblxuXG4gICAgaWYgKHJvb3ROb2RlKSB7XG4gICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCByb290SW5kZXgpKSB7XG4gICAgICAgICAgICBub2Rlc1tyb290SW5kZXhdID0gcm9vdE5vZGVcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2Q2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuXG5cbiAgICAgICAgaWYgKHZDaGlsZHJlbikge1xuXG4gICAgICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHJvb3ROb2RlLmNoaWxkTm9kZXNcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHZhciB2Q2hpbGQgPSB2Q2hpbGRyZW5baV0gfHwgbm9DaGlsZFxuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSByb290SW5kZXggKyAodkNoaWxkLmNvdW50IHx8IDApXG5cbiAgICAgICAgICAgICAgICAvLyBza2lwIHJlY3Vyc2lvbiBkb3duIHRoZSB0cmVlIGlmIHRoZXJlIGFyZSBubyBub2RlcyBkb3duIGhlcmVcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgbmV4dEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICByZWN1cnNlKGNoaWxkTm9kZXNbaV0sIHZDaGlsZCwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb290SW5kZXggPSBuZXh0SW5kZXhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2Rlc1xufVxuXG4vLyBCaW5hcnkgc2VhcmNoIGZvciBhbiBpbmRleCBpbiB0aGUgaW50ZXJ2YWwgW2xlZnQsIHJpZ2h0XVxuZnVuY3Rpb24gaW5kZXhJblJhbmdlKGluZGljZXMsIGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBtaW5JbmRleCA9IDBcbiAgICB2YXIgbWF4SW5kZXggPSBpbmRpY2VzLmxlbmd0aCAtIDFcbiAgICB2YXIgY3VycmVudEluZGV4XG4gICAgdmFyIGN1cnJlbnRJdGVtXG5cbiAgICB3aGlsZSAobWluSW5kZXggPD0gbWF4SW5kZXgpIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gKChtYXhJbmRleCArIG1pbkluZGV4KSAvIDIpID4+IDBcbiAgICAgICAgY3VycmVudEl0ZW0gPSBpbmRpY2VzW2N1cnJlbnRJbmRleF1cblxuICAgICAgICBpZiAobWluSW5kZXggPT09IG1heEluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW0gPj0gbGVmdCAmJiBjdXJyZW50SXRlbSA8PSByaWdodFxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJdGVtIDwgbGVmdCkge1xuICAgICAgICAgICAgbWluSW5kZXggPSBjdXJyZW50SW5kZXggKyAxXG4gICAgICAgIH0gZWxzZSAgaWYgKGN1cnJlbnRJdGVtID4gcmlnaHQpIHtcbiAgICAgICAgICAgIG1heEluZGV4ID0gY3VycmVudEluZGV4IC0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogLTFcbn1cblxufSx7fV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2guanNcIilcblxudmFyIHVwZGF0ZVdpZGdldCA9IHJlcXVpcmUoXCIuL3VwZGF0ZS13aWRnZXRcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVBhdGNoXG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2godnBhdGNoLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHR5cGUgPSB2cGF0Y2gudHlwZVxuICAgIHZhciB2Tm9kZSA9IHZwYXRjaC52Tm9kZVxuICAgIHZhciBwYXRjaCA9IHZwYXRjaC5wYXRjaFxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVlBhdGNoLlJFTU9WRTpcbiAgICAgICAgICAgIHJldHVybiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKVxuICAgICAgICBjYXNlIFZQYXRjaC5JTlNFUlQ6XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZShkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVlRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5XSURHRVQ6XG4gICAgICAgICAgICByZXR1cm4gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WTk9ERTpcbiAgICAgICAgICAgIHJldHVybiB2Tm9kZVBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guT1JERVI6XG4gICAgICAgICAgICByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgcGF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5QUk9QUzpcbiAgICAgICAgICAgIGFwcGx5UHJvcGVydGllcyhkb21Ob2RlLCBwYXRjaCwgdk5vZGUucHJvcGVydGllcylcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlRIVU5LOlxuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VSb290KGRvbU5vZGUsXG4gICAgICAgICAgICAgICAgcmVuZGVyT3B0aW9ucy5wYXRjaChkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucykpXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvbU5vZGUpXG4gICAgfVxuXG4gICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCB2Tm9kZSk7XG5cbiAgICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBpbnNlcnROb2RlKHBhcmVudE5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobmV3Tm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBzdHJpbmdQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZUZXh0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChkb21Ob2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGRvbU5vZGUucmVwbGFjZURhdGEoMCwgZG9tTm9kZS5sZW5ndGgsIHZUZXh0LnRleHQpXG4gICAgICAgIG5ld05vZGUgPSBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZUZXh0LCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB3aWRnZXRQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHdpZGdldCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB1cGRhdGluZyA9IHVwZGF0ZVdpZGdldChsZWZ0Vk5vZGUsIHdpZGdldClcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKHVwZGF0aW5nKSB7XG4gICAgICAgIG5ld05vZGUgPSB3aWRnZXQudXBkYXRlKGxlZnRWTm9kZSwgZG9tTm9kZSkgfHwgZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih3aWRnZXQsIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0aW5nKSB7XG4gICAgICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgbGVmdFZOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHZOb2RlUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHcpIHtcbiAgICBpZiAodHlwZW9mIHcuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiICYmIGlzV2lkZ2V0KHcpKSB7XG4gICAgICAgIHcuZGVzdHJveShkb21Ob2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIG1vdmVzKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBkb21Ob2RlLmNoaWxkTm9kZXNcbiAgICB2YXIga2V5TWFwID0ge31cbiAgICB2YXIgbm9kZVxuICAgIHZhciByZW1vdmVcbiAgICB2YXIgaW5zZXJ0XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdmVzLnJlbW92ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVtb3ZlID0gbW92ZXMucmVtb3Zlc1tpXVxuICAgICAgICBub2RlID0gY2hpbGROb2Rlc1tyZW1vdmUuZnJvbV1cbiAgICAgICAgaWYgKHJlbW92ZS5rZXkpIHtcbiAgICAgICAgICAgIGtleU1hcFtyZW1vdmUua2V5XSA9IG5vZGVcbiAgICAgICAgfVxuICAgICAgICBkb21Ob2RlLnJlbW92ZUNoaWxkKG5vZGUpXG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb3Zlcy5pbnNlcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGluc2VydCA9IG1vdmVzLmluc2VydHNbal1cbiAgICAgICAgbm9kZSA9IGtleU1hcFtpbnNlcnQua2V5XVxuICAgICAgICAvLyB0aGlzIGlzIHRoZSB3ZWlyZGVzdCBidWcgaSd2ZSBldmVyIHNlZW4gaW4gd2Via2l0XG4gICAgICAgIGRvbU5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIGluc2VydC50byA+PSBsZW5ndGgrKyA/IG51bGwgOiBjaGlsZE5vZGVzW2luc2VydC50b10pXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUm9vdChvbGRSb290LCBuZXdSb290KSB7XG4gICAgaWYgKG9sZFJvb3QgJiYgbmV3Um9vdCAmJiBvbGRSb290ICE9PSBuZXdSb290ICYmIG9sZFJvb3QucGFyZW50Tm9kZSkge1xuICAgICAgICBvbGRSb290LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1Jvb3QsIG9sZFJvb3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1Jvb3Q7XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuLi92bm9kZS92cGF0Y2guanNcIjo0NCxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiLi91cGRhdGUtd2lkZ2V0XCI6Mjh9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciByZW5kZXIgPSByZXF1aXJlKFwiLi9jcmVhdGUtZWxlbWVudFwiKVxudmFyIGRvbUluZGV4ID0gcmVxdWlyZShcIi4vZG9tLWluZGV4XCIpXG52YXIgcGF0Y2hPcCA9IHJlcXVpcmUoXCIuL3BhdGNoLW9wXCIpXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbmZ1bmN0aW9uIHBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgcmVuZGVyT3B0aW9ucyA9IHJlbmRlck9wdGlvbnMgfHwge31cbiAgICByZW5kZXJPcHRpb25zLnBhdGNoID0gcmVuZGVyT3B0aW9ucy5wYXRjaCAmJiByZW5kZXJPcHRpb25zLnBhdGNoICE9PSBwYXRjaFxuICAgICAgICA/IHJlbmRlck9wdGlvbnMucGF0Y2hcbiAgICAgICAgOiBwYXRjaFJlY3Vyc2l2ZVxuICAgIHJlbmRlck9wdGlvbnMucmVuZGVyID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIgfHwgcmVuZGVyXG5cbiAgICByZXR1cm4gcmVuZGVyT3B0aW9ucy5wYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucylcbn1cblxuZnVuY3Rpb24gcGF0Y2hSZWN1cnNpdmUocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IHBhdGNoSW5kaWNlcyhwYXRjaGVzKVxuXG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGRvbUluZGV4KHJvb3ROb2RlLCBwYXRjaGVzLmEsIGluZGljZXMpXG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSByb290Tm9kZS5vd25lckRvY3VtZW50XG5cbiAgICBpZiAoIXJlbmRlck9wdGlvbnMuZG9jdW1lbnQgJiYgb3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgcmVuZGVyT3B0aW9ucy5kb2N1bWVudCA9IG93bmVyRG9jdW1lbnRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGVJbmRleCA9IGluZGljZXNbaV1cbiAgICAgICAgcm9vdE5vZGUgPSBhcHBseVBhdGNoKHJvb3ROb2RlLFxuICAgICAgICAgICAgaW5kZXhbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHBhdGNoZXNbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2gocm9vdE5vZGUsIGRvbU5vZGUsIHBhdGNoTGlzdCwgcmVuZGVyT3B0aW9ucykge1xuICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGlzQXJyYXkocGF0Y2hMaXN0KSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGNoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0W2ldLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIHBhdGNoSW5kaWNlcyhwYXRjaGVzKSB7XG4gICAgdmFyIGluZGljZXMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIHBhdGNoZXMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIGluZGljZXMucHVzaChOdW1iZXIoa2V5KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRpY2VzXG59XG5cbn0se1wiLi9jcmVhdGUtZWxlbWVudFwiOjI0LFwiLi9kb20taW5kZXhcIjoyNSxcIi4vcGF0Y2gtb3BcIjoyNixcImdsb2JhbC9kb2N1bWVudFwiOjcsXCJ4LWlzLWFycmF5XCI6MjF9XSwyODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gdXBkYXRlV2lkZ2V0XG5cbmZ1bmN0aW9uIHVwZGF0ZVdpZGdldChhLCBiKSB7XG4gICAgaWYgKGlzV2lkZ2V0KGEpICYmIGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmIChcIm5hbWVcIiBpbiBhICYmIFwibmFtZVwiIGluIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09PSBiLmlkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbml0ID09PSBiLmluaXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF0dHJpYnV0ZUhvb2s7XG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBBdHRyaWJ1dGVIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIHByZXYpIHtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBwcmV2LnZhbHVlID09PSB0aGlzLnZhbHVlICYmXG4gICAgICAgIHByZXYubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgcHJvcCwgdGhpcy52YWx1ZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgbmV4dCkge1xuICAgIGlmIChuZXh0ICYmIG5leHQudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIG5leHQubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbG9uUG9zaXRpb24gPSBwcm9wLmluZGV4T2YoJzonKTtcbiAgICB2YXIgbG9jYWxOYW1lID0gY29sb25Qb3NpdGlvbiA+IC0xID8gcHJvcC5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpIDogcHJvcDtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBsb2NhbE5hbWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudHlwZSA9ICdBdHRyaWJ1dGVIb29rJztcblxufSx7fV0sMzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZTdG9yZSA9IHJlcXVpcmUoJ2V2LXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRXZIb29rO1xuXG5mdW5jdGlvbiBFdkhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRXZIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEV2SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Fdkhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdGhpcy52YWx1ZTtcbn07XG5cbkV2SG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24obm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdW5kZWZpbmVkO1xufTtcblxufSx7XCJldi1zdG9yZVwiOjR9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gU29mdFNldEhvb2s7XG5cbmZ1bmN0aW9uIFNvZnRTZXRIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cblNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG59LHt9XSwzMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS92bm9kZS5qcycpO1xudmFyIFZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvdnRleHQuanMnKTtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdm5vZGUnKTtcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdnRleHQnKTtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXdpZGdldCcpO1xudmFyIGlzSG9vayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZob29rJyk7XG52YXIgaXNWVGh1bmsgPSByZXF1aXJlKCcuLi92bm9kZS9pcy10aHVuaycpO1xuXG52YXIgcGFyc2VUYWcgPSByZXF1aXJlKCcuL3BhcnNlLXRhZy5qcycpO1xudmFyIHNvZnRTZXRIb29rID0gcmVxdWlyZSgnLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzJyk7XG52YXIgZXZIb29rID0gcmVxdWlyZSgnLi9ob29rcy9ldi1ob29rLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaDtcblxuZnVuY3Rpb24gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIHZhciBjaGlsZE5vZGVzID0gW107XG4gICAgdmFyIHRhZywgcHJvcHMsIGtleSwgbmFtZXNwYWNlO1xuXG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wcyA9IHByb3BzIHx8IHByb3BlcnRpZXMgfHwge307XG4gICAgdGFnID0gcGFyc2VUYWcodGFnTmFtZSwgcHJvcHMpO1xuXG4gICAgLy8gc3VwcG9ydCBrZXlzXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCdrZXknKSkge1xuICAgICAgICBrZXkgPSBwcm9wcy5rZXk7XG4gICAgICAgIHByb3BzLmtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG5hbWVzcGFjZVxuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnbmFtZXNwYWNlJykpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgICAgICBwcm9wcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZml4IGN1cnNvciBidWdcbiAgICBpZiAodGFnID09PSAnSU5QVVQnICYmXG4gICAgICAgICFuYW1lc3BhY2UgJiZcbiAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcbiAgICAgICAgcHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNIb29rKHByb3BzLnZhbHVlKVxuICAgICkge1xuICAgICAgICBwcm9wcy52YWx1ZSA9IHNvZnRTZXRIb29rKHByb3BzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKTtcblxuICAgIGlmIChjaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIGNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICAgIGFkZENoaWxkKGNoaWxkcmVuLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICB9XG5cblxuICAgIHJldHVybiBuZXcgVk5vZGUodGFnLCBwcm9wcywgY2hpbGROb2Rlcywga2V5LCBuYW1lc3BhY2UpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChjLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKSB7XG4gICAgaWYgKHR5cGVvZiBjID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KGMpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjID09PSAnbnVtYmVyJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KFN0cmluZyhjKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNDaGlsZChjKSkge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goYyk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGMpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRkQ2hpbGQoY1tpXSwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgfHwgYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoe1xuICAgICAgICAgICAgZm9yZWlnbk9iamVjdDogYyxcbiAgICAgICAgICAgIHBhcmVudFZub2RlOiB7XG4gICAgICAgICAgICAgICAgdGFnTmFtZTogdGFnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblxuICAgICAgICAgICAgaWYgKGlzSG9vayh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BOYW1lLnN1YnN0cigwLCAzKSA9PT0gJ2V2LScpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXYtZm9vIHN1cHBvcnRcbiAgICAgICAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBldkhvb2sodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NoaWxkKHgpIHtcbiAgICByZXR1cm4gaXNWTm9kZSh4KSB8fCBpc1ZUZXh0KHgpIHx8IGlzV2lkZ2V0KHgpIHx8IGlzVlRodW5rKHgpO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCkgfHwgaXNDaGlsZCh4KTtcbn1cblxuZnVuY3Rpb24gVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KGRhdGEpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG5cbiAgICBlcnIudHlwZSA9ICd2aXJ0dWFsLWh5cGVyc2NyaXB0LnVuZXhwZWN0ZWQudmlydHVhbC1lbGVtZW50JztcbiAgICBlcnIubWVzc2FnZSA9ICdVbmV4cGVjdGVkIHZpcnR1YWwgY2hpbGQgcGFzc2VkIHRvIGgoKS5cXG4nICtcbiAgICAgICAgJ0V4cGVjdGVkIGEgVk5vZGUgLyBWdGh1bmsgLyBWV2lkZ2V0IC8gc3RyaW5nIGJ1dDpcXG4nICtcbiAgICAgICAgJ2dvdDpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5mb3JlaWduT2JqZWN0KSArXG4gICAgICAgICcuXFxuJyArXG4gICAgICAgICdUaGUgcGFyZW50IHZub2RlIGlzOlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLnBhcmVudFZub2RlKVxuICAgICAgICAnXFxuJyArXG4gICAgICAgICdTdWdnZXN0ZWQgZml4OiBjaGFuZ2UgeW91ciBgaCguLi4sIFsgLi4uIF0pYCBjYWxsc2l0ZS4nO1xuICAgIGVyci5mb3JlaWduT2JqZWN0ID0gZGF0YS5mb3JlaWduT2JqZWN0O1xuICAgIGVyci5wYXJlbnRWbm9kZSA9IGRhdGEucGFyZW50Vm5vZGU7XG5cbiAgICByZXR1cm4gZXJyO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmluZyhvYmopIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAnICAgICcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopO1xuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92bm9kZS5qc1wiOjQzLFwiLi4vdm5vZGUvdnRleHQuanNcIjo0NSxcIi4vaG9va3MvZXYtaG9vay5qc1wiOjMwLFwiLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzXCI6MzEsXCIuL3BhcnNlLXRhZy5qc1wiOjMzLFwieC1pcy1hcnJheVwiOjIxfV0sMzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3BsaXQgPSByZXF1aXJlKCdicm93c2VyLXNwbGl0Jyk7XG5cbnZhciBjbGFzc0lkU3BsaXQgPSAvKFtcXC4jXT9bYS16QS1aMC05XFx1MDA3Ri1cXHVGRkZGXzotXSspLztcbnZhciBub3RDbGFzc0lkID0gL15cXC58Iy87XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VUYWc7XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZywgcHJvcHMpIHtcbiAgICBpZiAoIXRhZykge1xuICAgICAgICByZXR1cm4gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIG5vSWQgPSAhKHByb3BzLmhhc093blByb3BlcnR5KCdpZCcpKTtcblxuICAgIHZhciB0YWdQYXJ0cyA9IHNwbGl0KHRhZywgY2xhc3NJZFNwbGl0KTtcbiAgICB2YXIgdGFnTmFtZSA9IG51bGw7XG5cbiAgICBpZiAobm90Q2xhc3NJZC50ZXN0KHRhZ1BhcnRzWzFdKSkge1xuICAgICAgICB0YWdOYW1lID0gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzZXMsIHBhcnQsIHR5cGUsIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgdGFnUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydCA9IHRhZ1BhcnRzW2ldO1xuXG4gICAgICAgIGlmICghcGFydCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlID0gcGFydC5jaGFyQXQoMCk7XG5cbiAgICAgICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcGFydDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnLicpIHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJyMnICYmIG5vSWQpIHtcbiAgICAgICAgICAgIHByb3BzLmlkID0gcGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgaWYgKHByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHByb3BzLmNsYXNzTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubmFtZXNwYWNlID8gdGFnTmFtZSA6IHRhZ05hbWUudG9VcHBlckNhc2UoKTtcbn1cblxufSx7XCJicm93c2VyLXNwbGl0XCI6M31dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIERFRkFVTFRfTkFNRVNQQUNFID0gbnVsbDtcbnZhciBFVl9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzJztcbnZhciBYTElOS19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG52YXIgWE1MX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnO1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkdUaW55MTIvYXR0cmlidXRlVGFibGUuaHRtbFxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2F0dGluZGV4Lmh0bWxcbnZhciBTVkdfUFJPUEVSVElFUyA9IHtcbiAgICAnYWJvdXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjZW50LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2N1bXVsYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FkZGl0aXZlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FsaWdubWVudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FtcGxpdHVkZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhcmFiaWMtZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlTmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F6aW11dGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFuZHdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VGcmVxdWVuY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZVByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZWxpbmUtc2hpZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmJveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiaWFzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhbGNNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhcC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xhc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXBhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXBQYXRoVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U2NyaXB0VHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U3R5bGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N1cnNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RhdGF0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RlZmF1bHRBY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaWZmdXNlQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlyZWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpc3BsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGl2aXNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkb21pbmFudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRnZU1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRpdGFibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWxldmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuYWJsZS1iYWNrZ3JvdW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdldjpldmVudCc6IEVWX05BTUVTUEFDRSxcbiAgICAnZXZlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzSGlnaGxpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzYWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LWZhbWlseSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplLWFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0cmV0Y2gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXZhcmlhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC13ZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9ybWF0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zyb20nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoUmVmJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZGxlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1hZHYteCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luaXRpYWxWaXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ludGVyY2VwdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2sxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2syJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2szJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2s0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbE1hdHJpeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxVbml0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5pbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5UG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVNwbGluZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5VGltZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGFuZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZW5ndGhBZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGlnaHRpbmctY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGltaXRpbmdDb25lQW5nbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbG9jYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLWVuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItbWlkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1zdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJIZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyV2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFzayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ2hhcmFjdGVyRW5jb2RpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDb250ZW50RW5jb2RpbmdzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhU2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbmV4dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcHJldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdudW1PY3RhdmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29ic2VydmVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wZXJhdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnRhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmlnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmZsb3cnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGFub3NlLTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoTGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGhhc2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGxheWJhY2tPcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludGVyLWV2ZW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFonOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBbHBoYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByaW1pdGl2ZVVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BhZ2F0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wZXJ0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JhZGl1cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbmRlcmluZy1pbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0Q291bnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0RHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRXh0ZW5zaW9ucyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9udHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb3JtYXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc291cmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvdGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzZWVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NoYXBlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbG9wZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbmFwc2hvdFRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3ByZWFkTWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0YXJ0T2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZERldmlhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtdic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGl0Y2hUaWxlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3Atb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaG9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWNhcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWpvaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW1pdGVybGltaXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLXdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N1cmZhY2VTY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jTWFzdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZURlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFibGVWYWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWFuY2hvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWRlY29yYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aW1lbGluZUJlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpdGxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm1CZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGVvZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtYmlkaSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLXJhbmdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaXRzLXBlci1lbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWFscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1oYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1tYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnNpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1hZHYteSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld0JveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3VGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Zpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGhzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dvcmQtc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3cml0aW5nLW1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFjdHVhdGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFyY3JvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmhyZWYnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnJvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnNob3cnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnRpdGxlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0eXBlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bWw6YmFzZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDppZCc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpsYW5nJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOnNwYWNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3onOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnem9vbUFuZFBhbic6IERFRkFVTFRfTkFNRVNQQUNFXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZTtcblxuZnVuY3Rpb24gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKHZhbHVlKSB7XG4gIGlmIChTVkdfUFJPUEVSVElFUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU1ZHX1BST1BFUlRJRVNbdmFsdWVdO1xuICB9XG59XG5cbn0se31dLDM1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBoID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5cbnZhciBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UgPSByZXF1aXJlKCcuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlJyk7XG52YXIgYXR0cmlidXRlSG9vayA9IHJlcXVpcmUoJy4vaG9va3MvYXR0cmlidXRlLWhvb2snKTtcblxudmFyIFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2ZztcblxuZnVuY3Rpb24gc3ZnKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcGVydGllcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgLy8gc2V0IG5hbWVzcGFjZSBmb3Igc3ZnXG4gICAgcHJvcGVydGllcy5uYW1lc3BhY2UgPSBTVkdfTkFNRVNQQUNFO1xuXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgfHwgKHByb3BlcnRpZXMuYXR0cmlidXRlcyA9IHt9KTtcblxuICAgIGZvciAodmFyIGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2Uoa2V5KTtcblxuICAgICAgICBpZiAobmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGEgc3ZnIGF0dHJpYnV0ZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZXNwYWNlICE9PSBudWxsKSB7IC8vIG5hbWVzcGFjZWQgYXR0cmlidXRlXG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSBhdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZVxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KTtcbn1cblxufSx7XCIuL2hvb2tzL2F0dHJpYnV0ZS1ob29rXCI6MjksXCIuL2luZGV4LmpzXCI6MzIsXCIuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlXCI6MzQsXCJ4LWlzLWFycmF5XCI6MjF9XSwzNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcblxubW9kdWxlLmV4cG9ydHMgPSBoYW5kbGVUaHVua1xuXG5mdW5jdGlvbiBoYW5kbGVUaHVuayhhLCBiKSB7XG4gICAgdmFyIHJlbmRlcmVkQSA9IGFcbiAgICB2YXIgcmVuZGVyZWRCID0gYlxuXG4gICAgaWYgKGlzVGh1bmsoYikpIHtcbiAgICAgICAgcmVuZGVyZWRCID0gcmVuZGVyVGh1bmsoYiwgYSlcbiAgICB9XG5cbiAgICBpZiAoaXNUaHVuayhhKSkge1xuICAgICAgICByZW5kZXJlZEEgPSByZW5kZXJUaHVuayhhLCBudWxsKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGE6IHJlbmRlcmVkQSxcbiAgICAgICAgYjogcmVuZGVyZWRCXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJUaHVuayh0aHVuaywgcHJldmlvdXMpIHtcbiAgICB2YXIgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlXG5cbiAgICBpZiAoIXJlbmRlcmVkVGh1bmspIHtcbiAgICAgICAgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlID0gdGh1bmsucmVuZGVyKHByZXZpb3VzKVxuICAgIH1cblxuICAgIGlmICghKGlzVk5vZGUocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzVlRleHQocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzV2lkZ2V0KHJlbmRlcmVkVGh1bmspKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aHVuayBkaWQgbm90IHJldHVybiBhIHZhbGlkIG5vZGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmVkVGh1bmtcbn1cblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXZ0ZXh0XCI6NDAsXCIuL2lzLXdpZGdldFwiOjQxfV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1RodW5rXHJcblxyXG5mdW5jdGlvbiBpc1RodW5rKHQpIHtcclxuICAgIHJldHVybiB0ICYmIHQudHlwZSA9PT0gXCJUaHVua1wiXHJcbn1cclxuXG59LHt9XSwzODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9va1xuXG5mdW5jdGlvbiBpc0hvb2soaG9vaykge1xuICAgIHJldHVybiBob29rICYmXG4gICAgICAodHlwZW9mIGhvb2suaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwiaG9va1wiKSB8fFxuICAgICAgIHR5cGVvZiBob29rLnVuaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwidW5ob29rXCIpKVxufVxuXG59LHt9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxOb2RlXG5cbmZ1bmN0aW9uIGlzVmlydHVhbE5vZGUoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsTm9kZVwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxUZXh0KHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbFRleHRcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNXaWRnZXRcblxuZnVuY3Rpb24gaXNXaWRnZXQodykge1xuICAgIHJldHVybiB3ICYmIHcudHlwZSA9PT0gXCJXaWRnZXRcIlxufVxuXG59LHt9XSw0MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IFwiMlwiXG5cbn0se31dLDQzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG52YXIgaXNWSG9vayA9IHJlcXVpcmUoXCIuL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbE5vZGVcblxudmFyIG5vUHJvcGVydGllcyA9IHt9XG52YXIgbm9DaGlsZHJlbiA9IFtdXG5cbmZ1bmN0aW9uIFZpcnR1YWxOb2RlKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuLCBrZXksIG5hbWVzcGFjZSkge1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWVcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IG5vUHJvcGVydGllc1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBub0NoaWxkcmVuXG4gICAgdGhpcy5rZXkgPSBrZXkgIT0gbnVsbCA/IFN0cmluZyhrZXkpIDogdW5kZWZpbmVkXG4gICAgdGhpcy5uYW1lc3BhY2UgPSAodHlwZW9mIG5hbWVzcGFjZSA9PT0gXCJzdHJpbmdcIikgPyBuYW1lc3BhY2UgOiBudWxsXG5cbiAgICB2YXIgY291bnQgPSAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB8fCAwXG4gICAgdmFyIGRlc2NlbmRhbnRzID0gMFxuICAgIHZhciBoYXNXaWRnZXRzID0gZmFsc2VcbiAgICB2YXIgaGFzVGh1bmtzID0gZmFsc2VcbiAgICB2YXIgZGVzY2VuZGFudEhvb2tzID0gZmFsc2VcbiAgICB2YXIgaG9va3NcblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3Byb3BOYW1lXVxuICAgICAgICAgICAgaWYgKGlzVkhvb2socHJvcGVydHkpICYmIHByb3BlcnR5LnVuaG9vaykge1xuICAgICAgICAgICAgICAgIGlmICghaG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MgPSB7fVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGhvb2tzW3Byb3BOYW1lXSA9IHByb3BlcnR5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XG4gICAgICAgICAgICBkZXNjZW5kYW50cyArPSBjaGlsZC5jb3VudCB8fCAwXG5cbiAgICAgICAgICAgIGlmICghaGFzV2lkZ2V0cyAmJiBjaGlsZC5oYXNXaWRnZXRzKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNUaHVua3MgJiYgY2hpbGQuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWRlc2NlbmRhbnRIb29rcyAmJiAoY2hpbGQuaG9va3MgfHwgY2hpbGQuZGVzY2VuZGFudEhvb2tzKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRIb29rcyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzV2lkZ2V0cyAmJiBpc1dpZGdldChjaGlsZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzVGh1bmtzICYmIGlzVGh1bmsoY2hpbGQpKSB7XG4gICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50ICsgZGVzY2VuZGFudHNcbiAgICB0aGlzLmhhc1dpZGdldHMgPSBoYXNXaWRnZXRzXG4gICAgdGhpcy5oYXNUaHVua3MgPSBoYXNUaHVua3NcbiAgICB0aGlzLmhvb2tzID0gaG9va3NcbiAgICB0aGlzLmRlc2NlbmRhbnRIb29rcyA9IGRlc2NlbmRhbnRIb29rc1xufVxuXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxOb2RlLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsTm9kZVwiXG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12aG9va1wiOjM4LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy13aWRnZXRcIjo0MSxcIi4vdmVyc2lvblwiOjQyfV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cblZpcnR1YWxQYXRjaC5OT05FID0gMFxuVmlydHVhbFBhdGNoLlZURVhUID0gMVxuVmlydHVhbFBhdGNoLlZOT0RFID0gMlxuVmlydHVhbFBhdGNoLldJREdFVCA9IDNcblZpcnR1YWxQYXRjaC5QUk9QUyA9IDRcblZpcnR1YWxQYXRjaC5PUkRFUiA9IDVcblZpcnR1YWxQYXRjaC5JTlNFUlQgPSA2XG5WaXJ0dWFsUGF0Y2guUkVNT1ZFID0gN1xuVmlydHVhbFBhdGNoLlRIVU5LID0gOFxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxQYXRjaFxuXG5mdW5jdGlvbiBWaXJ0dWFsUGF0Y2godHlwZSwgdk5vZGUsIHBhdGNoKSB7XG4gICAgdGhpcy50eXBlID0gTnVtYmVyKHR5cGUpXG4gICAgdGhpcy52Tm9kZSA9IHZOb2RlXG4gICAgdGhpcy5wYXRjaCA9IHBhdGNoXG59XG5cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFBhdGNoXCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIFZpcnR1YWxUZXh0KHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSBTdHJpbmcodGV4dClcbn1cblxuVmlydHVhbFRleHQucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFRleHRcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZQcm9wc1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoYSwgYikge1xuICAgIHZhciBkaWZmXG5cbiAgICBmb3IgKHZhciBhS2V5IGluIGEpIHtcbiAgICAgICAgaWYgKCEoYUtleSBpbiBiKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhVmFsdWUgPSBhW2FLZXldXG4gICAgICAgIHZhciBiVmFsdWUgPSBiW2FLZXldXG5cbiAgICAgICAgaWYgKGFWYWx1ZSA9PT0gYlZhbHVlKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGFWYWx1ZSkgJiYgaXNPYmplY3QoYlZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZShiVmFsdWUpICE9PSBnZXRQcm90b3R5cGUoYVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hvb2soYlZhbHVlKSkge1xuICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBvYmplY3REaWZmID0gZGlmZlByb3BzKGFWYWx1ZSwgYlZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChvYmplY3REaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBvYmplY3REaWZmXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGJLZXkgaW4gYikge1xuICAgICAgICBpZiAoIShiS2V5IGluIGEpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZltiS2V5XSA9IGJbYktleV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWZmXG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSw0NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXRodW5rXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCIpXG5cbnZhciBkaWZmUHJvcHMgPSByZXF1aXJlKFwiLi9kaWZmLXByb3BzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG5mdW5jdGlvbiBkaWZmKGEsIGIpIHtcbiAgICB2YXIgcGF0Y2ggPSB7IGE6IGEgfVxuICAgIHdhbGsoYSwgYiwgcGF0Y2gsIDApXG4gICAgcmV0dXJuIHBhdGNoXG59XG5cbmZ1bmN0aW9uIHdhbGsoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgdmFyIGFwcGx5Q2xlYXIgPSBmYWxzZVxuXG4gICAgaWYgKGlzVGh1bmsoYSkgfHwgaXNUaHVuayhiKSkge1xuICAgICAgICB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KVxuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG5cbiAgICAgICAgLy8gSWYgYSBpcyBhIHdpZGdldCB3ZSB3aWxsIGFkZCBhIHJlbW92ZSBwYXRjaCBmb3IgaXRcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFueSBjaGlsZCB3aWRnZXRzL2hvb2tzIG11c3QgYmUgZGVzdHJveWVkLlxuICAgICAgICAvLyBUaGlzIHByZXZlbnRzIGFkZGluZyB0d28gcmVtb3ZlIHBhdGNoZXMgZm9yIGEgd2lkZ2V0LlxuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICAgICAgICAgIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIGEsIGIpKVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZShiKSkge1xuICAgICAgICBpZiAoaXNWTm9kZShhKSkge1xuICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PT0gYi50YWdOYW1lICYmXG4gICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgPT09IGIubmFtZXNwYWNlICYmXG4gICAgICAgICAgICAgICAgYS5rZXkgPT09IGIua2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzUGF0Y2ggPSBkaWZmUHJvcHMoYS5wcm9wZXJ0aWVzLCBiLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzUGF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlBST1BTLCBhLCBwcm9wc1BhdGNoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KGIpKSB7XG4gICAgICAgIGlmICghaXNWVGV4dChhKSkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChhLnRleHQgIT09IGIudGV4dCkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guV0lER0VULCBhLCBiKSlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwbHlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHlDbGVhcikge1xuICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KSB7XG4gICAgdmFyIGFDaGlsZHJlbiA9IGEuY2hpbGRyZW5cbiAgICB2YXIgb3JkZXJlZFNldCA9IHJlb3JkZXIoYUNoaWxkcmVuLCBiLmNoaWxkcmVuKVxuICAgIHZhciBiQ2hpbGRyZW4gPSBvcmRlcmVkU2V0LmNoaWxkcmVuXG5cbiAgICB2YXIgYUxlbiA9IGFDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgYkxlbiA9IGJDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgbGVuID0gYUxlbiA+IGJMZW4gPyBhTGVuIDogYkxlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgbGVmdE5vZGUgPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIHJpZ2h0Tm9kZSA9IGJDaGlsZHJlbltpXVxuICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgaWYgKCFsZWZ0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHJpZ2h0Tm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIEV4Y2VzcyBub2RlcyBpbiBiIG5lZWQgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5JTlNFUlQsIG51bGwsIHJpZ2h0Tm9kZSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3YWxrKGxlZnROb2RlLCByaWdodE5vZGUsIHBhdGNoLCBpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1ZOb2RlKGxlZnROb2RlKSAmJiBsZWZ0Tm9kZS5jb3VudCkge1xuICAgICAgICAgICAgaW5kZXggKz0gbGVmdE5vZGUuY291bnRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcmRlcmVkU2V0Lm1vdmVzKSB7XG4gICAgICAgIC8vIFJlb3JkZXIgbm9kZXMgbGFzdFxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgVlBhdGNoLk9SREVSLFxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIG9yZGVyZWRTZXQubW92ZXNcbiAgICAgICAgKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlcbn1cblxuZnVuY3Rpb24gY2xlYXJTdGF0ZSh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGEgc2luZ2xlIHdhbGssIG5vdCB0d29cbiAgICB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleClcbiAgICBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxufVxuXG4vLyBQYXRjaCByZWNvcmRzIGZvciBhbGwgZGVzdHJveWVkIHdpZGdldHMgbXVzdCBiZSBhZGRlZCBiZWNhdXNlIHdlIG5lZWRcbi8vIGEgRE9NIG5vZGUgcmVmZXJlbmNlIGZvciB0aGUgZGVzdHJveSBmdW5jdGlvblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1dpZGdldCh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2Tm9kZS5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIHZOb2RlLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKHZOb2RlKSAmJiAodk5vZGUuaGFzV2lkZ2V0cyB8fCB2Tm9kZS5oYXNUaHVua3MpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgZGVzdHJveVdpZGdldHMoY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBzdWItcGF0Y2ggZm9yIHRodW5rc1xuZnVuY3Rpb24gdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIHZhciBub2RlcyA9IGhhbmRsZVRodW5rKGEsIGIpXG4gICAgdmFyIHRodW5rUGF0Y2ggPSBkaWZmKG5vZGVzLmEsIG5vZGVzLmIpXG4gICAgaWYgKGhhc1BhdGNoZXModGh1bmtQYXRjaCkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gbmV3IFZQYXRjaChWUGF0Y2guVEhVTkssIG51bGwsIHRodW5rUGF0Y2gpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBoYXNQYXRjaGVzKHBhdGNoKSB7XG4gICAgZm9yICh2YXIgaW5kZXggaW4gcGF0Y2gpIHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBcImFcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG4vLyBFeGVjdXRlIGhvb2tzIHdoZW4gdHdvIG5vZGVzIGFyZSBpZGVudGljYWxcbmZ1bmN0aW9uIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzVk5vZGUodk5vZGUpKSB7XG4gICAgICAgIGlmICh2Tm9kZS5ob29rcykge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICAgICAgICAgIFZQYXRjaC5QUk9QUyxcbiAgICAgICAgICAgICAgICAgICAgdk5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZEtleXModk5vZGUuaG9va3MpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZOb2RlLmRlc2NlbmRhbnRIb29rcyB8fCB2Tm9kZS5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB1bmhvb2soY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiB1bmRlZmluZWRLZXlzKG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fVxuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLy8gTGlzdCBkaWZmLCBuYWl2ZSBsZWZ0IHRvIHJpZ2h0IHJlb3JkZXJpbmdcbmZ1bmN0aW9uIHJlb3JkZXIoYUNoaWxkcmVuLCBiQ2hpbGRyZW4pIHtcbiAgICAvLyBPKE0pIHRpbWUsIE8oTSkgbWVtb3J5XG4gICAgdmFyIGJDaGlsZEluZGV4ID0ga2V5SW5kZXgoYkNoaWxkcmVuKVxuICAgIHZhciBiS2V5cyA9IGJDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYkZyZWUgPSBiQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYkZyZWUubGVuZ3RoID09PSBiQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTikgdGltZSwgTyhOKSBtZW1vcnlcbiAgICB2YXIgYUNoaWxkSW5kZXggPSBrZXlJbmRleChhQ2hpbGRyZW4pXG4gICAgdmFyIGFLZXlzID0gYUNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBhRnJlZSA9IGFDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChhRnJlZS5sZW5ndGggPT09IGFDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhNQVgoTiwgTSkpIG1lbW9yeVxuICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdXG5cbiAgICB2YXIgZnJlZUluZGV4ID0gMFxuICAgIHZhciBmcmVlQ291bnQgPSBiRnJlZS5sZW5ndGhcbiAgICB2YXIgZGVsZXRlZEl0ZW1zID0gMFxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGEgYW5kIG1hdGNoIGEgbm9kZSBpbiBiXG4gICAgLy8gTyhOKSB0aW1lLFxuICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IGFDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYUl0ZW0gPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIGl0ZW1JbmRleFxuXG4gICAgICAgIGlmIChhSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmIChiS2V5cy5oYXNPd25Qcm9wZXJ0eShhSXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gTWF0Y2ggdXAgdGhlIG9sZCBrZXlzXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYktleXNbYUl0ZW0ua2V5XVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9sZCBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBpdGVtIGluIGEgd2l0aCB0aGUgbmV4dCBmcmVlIGl0ZW0gaW4gYlxuICAgICAgICAgICAgaWYgKGZyZWVJbmRleCA8IGZyZWVDb3VudCkge1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJGcmVlW2ZyZWVJbmRleCsrXVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBmcmVlIGl0ZW1zIGluIGIgdG8gbWF0Y2ggd2l0aFxuICAgICAgICAgICAgICAgIC8vIHRoZSBmcmVlIGl0ZW1zIGluIGEsIHNvIHRoZSBleHRyYSBmcmVlIG5vZGVzXG4gICAgICAgICAgICAgICAgLy8gYXJlIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3RGcmVlSW5kZXggPSBmcmVlSW5kZXggPj0gYkZyZWUubGVuZ3RoID9cbiAgICAgICAgYkNoaWxkcmVuLmxlbmd0aCA6XG4gICAgICAgIGJGcmVlW2ZyZWVJbmRleF1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBiIGFuZCBhcHBlbmQgYW55IG5ldyBrZXlzXG4gICAgLy8gTyhNKSB0aW1lXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBiQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5ld0l0ZW0gPSBiQ2hpbGRyZW5bal1cblxuICAgICAgICBpZiAobmV3SXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmICghYUtleXMuaGFzT3duUHJvcGVydHkobmV3SXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkIGFueSBuZXcga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWRkaW5nIG5ldyBpdGVtcyB0byB0aGUgZW5kIGFuZCB0aGVuIHNvcnRpbmcgdGhlbVxuICAgICAgICAgICAgICAgIC8vIGluIHBsYWNlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIGluc2VydCBuZXcgaXRlbXMgaW4gcGxhY2UuXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGogPj0gbGFzdEZyZWVJbmRleCkge1xuICAgICAgICAgICAgLy8gQWRkIGFueSBsZWZ0b3ZlciBub24ta2V5ZWQgaXRlbXNcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaW11bGF0ZSA9IG5ld0NoaWxkcmVuLnNsaWNlKClcbiAgICB2YXIgc2ltdWxhdGVJbmRleCA9IDBcbiAgICB2YXIgcmVtb3ZlcyA9IFtdXG4gICAgdmFyIGluc2VydHMgPSBbXVxuICAgIHZhciBzaW11bGF0ZUl0ZW1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYkNoaWxkcmVuLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHdhbnRlZEl0ZW0gPSBiQ2hpbGRyZW5ba11cbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cblxuICAgICAgICAvLyByZW1vdmUgaXRlbXNcbiAgICAgICAgd2hpbGUgKHNpbXVsYXRlSXRlbSA9PT0gbnVsbCAmJiBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIG51bGwpKVxuICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAvLyBpZiB3ZSBuZWVkIGEga2V5IGluIHRoaXMgcG9zaXRpb24uLi5cbiAgICAgICAgICAgIGlmICh3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBpbnNlcnQgZG9lc24ndCBwdXQgdGhpcyBrZXkgaW4gcGxhY2UsIGl0IG5lZWRzIHRvIG1vdmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJLZXlzW3NpbXVsYXRlSXRlbS5rZXldICE9PSBrICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJlbW92ZSBkaWRuJ3QgcHV0IHRoZSB3YW50ZWQgaXRlbSBpbiBwbGFjZSwgd2UgbmVlZCB0byBpbnNlcnQgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVtcyBhcmUgbWF0Y2hpbmcsIHNvIHNraXAgYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrKytcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGEga2V5IGluIHNpbXVsYXRlIGhhcyBubyBtYXRjaGluZyB3YW50ZWQga2V5LCByZW1vdmUgaXRcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgIGsrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCB0aGUgcmVtYWluaW5nIG5vZGVzIGZyb20gc2ltdWxhdGVcbiAgICB3aGlsZShzaW11bGF0ZUluZGV4IDwgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBtb3ZlcyB3ZSBoYXZlIGFyZSBkZWxldGVzIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAvLyBsZXQgdGhlIGRlbGV0ZSBwYXRjaCByZW1vdmUgdGhlc2UgaXRlbXMuXG4gICAgaWYgKHJlbW92ZXMubGVuZ3RoID09PSBkZWxldGVkSXRlbXMgJiYgIWluc2VydHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICBtb3Zlczoge1xuICAgICAgICAgICAgcmVtb3ZlczogcmVtb3ZlcyxcbiAgICAgICAgICAgIGluc2VydHM6IGluc2VydHNcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlKGFyciwgaW5kZXgsIGtleSkge1xuICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBpbmRleCxcbiAgICAgICAga2V5OiBrZXlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGtleUluZGV4KGNoaWxkcmVuKSB7XG4gICAgdmFyIGtleXMgPSB7fVxuICAgIHZhciBmcmVlID0gW11cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG5cbiAgICAgICAgaWYgKGNoaWxkLmtleSkge1xuICAgICAgICAgICAga2V5c1tjaGlsZC5rZXldID0gaVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJlZS5wdXNoKGkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXlzOiBrZXlzLCAgICAgLy8gQSBoYXNoIG9mIGtleSBuYW1lIHRvIGluZGV4XG4gICAgICAgIGZyZWU6IGZyZWUgICAgICAvLyBBbiBhcnJheSBvZiB1bmtleWVkIGl0ZW0gaW5kaWNlc1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXBwZW5kUGF0Y2goYXBwbHksIHBhdGNoKSB7XG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFwcGx5KSkge1xuICAgICAgICAgICAgYXBwbHkucHVzaChwYXRjaClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gW2FwcGx5LCBwYXRjaF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcHBseVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRjaFxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIjozNixcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdnBhdGNoXCI6NDQsXCIuL2RpZmYtcHJvcHNcIjo0NixcIngtaXMtYXJyYXlcIjoyMX1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB2ZG9tID0ge1xuICBWTm9kZTogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdm5vZGUnKSxcbiAgVlRleHQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0JyksXG4gIGRpZmY6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2RpZmYnKSxcbiAgcGF0Y2g6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3BhdGNoJyksXG4gIGNyZWF0ZUVsZW1lbnQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50JyksXG4gIHN2ZzogcmVxdWlyZShcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCIpLFxufTtcblxuZ2xvYmFsLlZpcnR1YWxEb20gPSB2ZG9tO1xubW9kdWxlLmV4cG9ydHMgPSB2ZG9tO1xuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1widmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnRcIjoxLFwidmlydHVhbC1kb20vZGlmZlwiOjIsXCJ2aXJ0dWFsLWRvbS9wYXRjaFwiOjIyLFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIjozNSxcInZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlXCI6NDMsXCJ2aXJ0dWFsLWRvbS92bm9kZS92dGV4dFwiOjQ1fV19LHt9LFs0OF0pKDQ4KVxufSk7XG4iLCIvLyBVc2VkIGJ5IHdvcmthcm91bmQgZm9yIGlucHV0IGVsZW1lbnQgdmFsdWUgZmllbGRcbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaG9va3Mvc29mdC1zZXQtaG9vay5qc1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vayA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxuXG52YXIgR2VuZXJpY0hvb2sgPSBmdW5jdGlvbiAoaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR2VuZXJpY0hvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0hvb2soaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdCA9IGluaXQ7XG4gICAgdGhpcy51cGRhdGUgPSB1cGRhdGU7XG4gICAgdGhpcy5kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5leHRyYSA9IGV4dHJhO1xufTtcblxudmFyIGhvb2tfc3RhdGVfa2V5ID0gXCJ2ZG9tX2hvb2tfc3RhdGVfa2V5XCI7XG5cbmlmICh0aGlzLlN5bWJvbCkge1xuICAgIGhvb2tfc3RhdGVfa2V5ID0gU3ltYm9sKGhvb2tfc3RhdGVfa2V5KTtcbn1cblxuR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHN0YXRlKSB7XG4gICAgaWYgKCFub2RlW2hvb2tfc3RhdGVfa2V5XSkge1xuICAgICAgICBub2RlW2hvb2tfc3RhdGVfa2V5XSA9IHt9O1xuICAgIH1cbiAgICBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV0gPSBzdGF0ZTtcbn1cblxuR2VuZXJpY0hvb2sucmVhZF9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIHJldHVybiBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIGRlbGV0ZSBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICByZXR1cm4gZnJvbSBpbnN0YW5jZW9mIHRoaXMgJiYgdG8gaW5zdGFuY2VvZiB0aGlzICYmIGZyb20uaWQgPT09IHRvLmlkICYmIHRvLnVwZGF0ZTtcbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBwcmV2KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24ocHJldiwgdGhpcykpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHN0YXRlID0gdGhpcy51cGRhdGUoc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuaW5pdChub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBuZXh0KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24odGhpcywgbmV4dCkpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZywgdGhlIGltcGVuZGluZyBbaG9va10gd2lsbCBoYW5kbGUgdGhlIGNhbGwgdG8gdXBkYXRlLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3koc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay5yZW1vdmVfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgIH1cbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LkdlbmVyaWNIb29rID0gR2VuZXJpY0hvb2s7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICB2YXIgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgaWYobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCeXRlcy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsMCxhLmxlbmd0aCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5IChhKSB7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIGEgPSBuZXcgVWludDhBcnJheShhKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL0FsaWFzOiBjYW1sX2ZpbGxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyh0b2MpIHtcbiAgdmFyIHN5bWI7XG4gIHdoaWxlKHRvYykge1xuICAgIGlmKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHRvY1sxXVsxXSkgPT0gXCJTWUpTXCIpIHtcbiAgICAgIHN5bWIgPSB0b2NbMV1bMl07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZWxzZSB0b2MgPSB0b2NbMl1cbiAgfVxuICB2YXIgciA9IHt9O1xuICBpZihzeW1iKSB7XG4gICAgZm9yKHZhciBpID0gMTsgaSA8IHN5bWIubGVuZ3RoOyBpKyspe1xuICAgICAgcltjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzeW1iW2ldWzFdKV0gPSBzeW1iW2ldWzJdXG4gICAgfVxuICB9XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9jYWxsYmFjaywgY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZihnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpIHtcbiAgICAgIG4gPSBjYW1sX2NhbGxiYWNrKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYywgW25hbWVdKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2FtbF9nbG9iYWxfZGF0YS50b2MpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEudG9jKVxuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9sc1tuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvKlxuVG8gZGVhbCB3aXRoIGVmZmVjdHMsIHRoZSBleGVjdXRpb24gY29udGV4dCBpcyBpbnR1aXRpdmVseSBjb21wb3NlZCBvZlxuYSBzdGFjayBvZiBmaWJlcnMuIEVhY2ggZmliZXIgaGFzIGEgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4ob25lLWFyZ3VtZW50IEphdmFTY3JpcHQgZnVuY3Rpb24pLCBhIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmRcbmEgdHJpcGxlIG9mIGhhbmRsZXJzLCB3aGljaCBhcmUgaW52b2tlZCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzXG4oZWl0aGVyIHdpdGggYSB2YWx1ZSBvciBhbiBleGNlcHRpb24pIG9yIHdoZW4gYW4gZWZmZWN0IGlzIHBlcmZvcm1lZC5cblRoZSBsb3ctbGV2ZWwgY29udGludWF0aW9uIG9mIHRoZSB0b3Btb3N0IGZpYmVyICh3aGljaCBpcyBjdXJyZW50bHlcbmV4ZWN1dGluZykgaXMgcGFzc2VkIGZyb20gZnVuY3Rpb24gdG8gZnVuY3Rpb24gYXMgYW4gYWRkaXRpb25hbFxuYXJndW1lbnQuIEl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgaXMgc3RvcmVkIGluXG5bY2FtbF9leG5fc3RhY2tdLiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlIHB1c2hlZCBpbnRvIHRoaXMgc3RhY2sgd2hlblxuZW50ZXJpbmcgYSBbdHJ5IC4uLiB3aXRoIC4uLl0gYW5kIHBvcHBlZCBvbiBleGl0LiBUaGVuLCBoYW5kbGVycyBhbmRcbnRoZSByZW1haW5pbmcgZmliZXJzIGFyZSBzdG9yZWQgaW4gW2NhbWxfZmliZXJfc3RhY2tdLiBUbyBpbnN0YWxsIGFuXG5lZmZlY3QgaGFuZGxlciwgd2UgcHVzaCBhIG5ldyBmaWJlciBpbnRvIHRoZSBleGVjdXRpb24gY29udGV4dC5cblxuV2UgaGF2ZSBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyB0eXBlIGZvciByZWlmaWVkIGNvbnRpbnVhdGlvbnMgKHR5cGVcbltjb250aW51YXRpb25dIGluIG1vZHVsZSBbRWZmZWN0XSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSk6XG5cbiAgdHlwZSAoJ2EsICdiKSBjb250aW51YXRpb24gPSAoJ2EsICdiKSBzdGFjayByZWZcblxuICBhbmQgKF8sIF8pIHN0YWNrID1cbiAgICAgIENvbnMgOiAoJ2IgLT4gdW5pdCkgKiAgICAgICAgICAgICAoKiBsb3ctbGV2ZWwgY29udGludWF0aW9uICopXG4gICAgICAgICAgICAgKGV4biAtPiB1bml0KSBsaXN0ICogICAgICAgKCogZXhjZXB0aW9uIGhhbmRsZXJzICopXG4gICAgICAgICAgICAgKCdiLCAnYykgaGFuZGxlciAqXG4gICAgICAgICAgICAgKCdhLCAnYikgc3RhY2tcbiAgICAgICAgICAgICAtPiAoJ2EsICdjKSBzdGFja1xuICAgIHwgRW1wdHkgOiAoJ2EsICdhKSBzdGFja1xuXG4gIGFuZCAoJ2EsJ2IpIGhhbmRsZXIgPSAgICgqIEFzIGluIG1vZHVsZSBFZmZlY3QgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyBFZmZlY3QudCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbkNvbnRpbnVhdGlvbnMgYXJlIG9uZS1zaG90LiBBIGNvbnRpbnVhdGlvbiBbcmVmIEVtcHR5XSBoYXMgYWxyZWFkeVxuYmVlbiByZXN1bWVkLlxuXG5BIGNvbnRpbnVhdGlvbiBpcyBiYXNpY2FsbHkgY29tcG9zZWQgb2YgYSBsaXN0IG9mIGZpYmVycywgd2hpY2ggZWFjaFxuaGFzIGl0cyBsb3ctbGV2ZWwgY29udGludWF0aW9uLCBpdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZCBhXG50cmlwbGUgb2YgaGFuZGxlcnMgdG8gZGVhbCB3aXRoIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXMgb3IgYW5cbmVmZmVjdCBpcyBwZXJmb3JtZWQuIFdoZW4gcmVzdW1pbmcgYSBjb250aW51YXRpb24sIHRoZSBpbm5lcm1vc3QgZmliZXJcbmlzIHJlc3VtZWQgZmlyc3QuXG5cblRoZSBoYW5kbGVycyBhcmUgQ1BTLXRyYW5zZm9ybWVkIGZ1bmN0aW9uczogdGhleSBhY3R1YWxseSB0YWtlIGFuXG5hZGRpdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uLlxuKi9cblxuLy9Qcm92aWRlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaXMgYW4gT0NhbWwgbGlzdCBvZiBleGNlcHRpb24gaGFuZGxlcnNcbnZhciBjYW1sX2V4bl9zdGFjayA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVzaF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2V4bl9zdGFjaz1bMCxoYW5kbGVyLGNhbWxfZXhuX3N0YWNrXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX3RyYXAoKSB7XG4gIGlmICghY2FtbF9leG5fc3RhY2spIHJldHVybiBmdW5jdGlvbih4KXt0aHJvdyB4O31cbiAgdmFyIGggPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgY2FtbF9leG5fc3RhY2s9Y2FtbF9leG5fc3RhY2tbMl07XG4gIHJldHVybiBoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aCwgcjp7aywgeCwgZX19IHdoZXJlIGggaXMgYSB0cmlwbGUgb2YgaGFuZGxlcnNcbi8vIChzZWUgZWZmZWN0LmpzKSBhbmQgaywgeCBhbmQgZSBhcmUgdGhlIHNhdmVkIGNvbnRpbnVhdGlvbixcbi8vIGV4Y2VwdGlvbiBzdGFjayBhbmQgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2ZpYmVyX3N0YWNrO1xuXG4vL1Byb3ZpZGVzOmNhbWxfcmVzdW1lX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9yZXN1bWVfc3RhY2soc3RhY2ssIGspIHtcbiAgaWYgKCFzdGFjaykgY2FtbF9yYWlzZV9jb25zdGFudFxuICAgICAgICAgICAgICAgICAoY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCIpKTtcbiAgLy8gVXBkYXRlIHRoZSBleGVjdXRpb24gY29udGV4dCB3aXRoIHRoZSBzdGFjayBvZiBmaWJlcnMgaW4gW3N0YWNrXSBpblxuICAvLyBvcmRlciB0byByZXN1bWUgdGhlIGNvbnRpbnVhdGlvblxuICBkbyB7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpzdGFja1szXSwgcjp7azprLCB4OmNhbWxfZXhuX3N0YWNrLCBlOmNhbWxfZmliZXJfc3RhY2t9fTtcbiAgICBrID0gc3RhY2tbMV07XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzdGFja1syXTtcbiAgICBzdGFjayA9IHN0YWNrWzRdO1xuICB9IHdoaWxlIChzdGFjaylcbiAgcmV0dXJuIGs7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfZmliZXIoKSB7XG4gIC8vIE1vdmUgdG8gdGhlIHBhcmVudCBmaWJlciwgcmV0dXJuaW5nIHRoZSBwYXJlbnQncyBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4gIHZhciByZW0gPSBjYW1sX2ZpYmVyX3N0YWNrLnI7XG4gIGNhbWxfZXhuX3N0YWNrID0gcmVtLng7XG4gIGNhbWxfZmliZXJfc3RhY2sgPSByZW0uZTtcbiAgcmV0dXJuIHJlbS5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BlcmZvcm1fZWZmZWN0XG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVybiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcGVyZm9ybV9lZmZlY3QoZWZmLCBjb250LCBrMCkge1xuICAvLyBBbGxvY2F0ZSBhIGNvbnRpbnVhdGlvbiBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICghY29udCkgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgMF07XG4gIC8vIEdldCBjdXJyZW50IGVmZmVjdCBoYW5kbGVyXG4gIHZhciBoYW5kbGVyID0gY2FtbF9maWJlcl9zdGFjay5oWzNdO1xuICAvLyBDb25zIHRoZSBjdXJyZW50IGZpYmVyIG9udG8gdGhlIGNvbnRpbnVhdGlvbjpcbiAgLy8gICBjb250IDo9IENvbnMgKGssIGV4bl9zdGFjaywgaGFuZGxlcnMsICFjb250KVxuICBjb250WzFdID0gWzAsazAsY2FtbF9leG5fc3RhY2ssY2FtbF9maWJlcl9zdGFjay5oLGNvbnRbMV1dO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9oYW5kbGVyKGVmZixjb250LGsxLGsxKVxuICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oaGFuZGxlcixbZWZmLGNvbnQsazEsazFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICBmdW5jdGlvbiBjYWxsKGksIHgpIHtcbiAgICB2YXIgZj1jYW1sX2ZpYmVyX3N0YWNrLmhbaV07XG4gICAgdmFyIGFyZ3MgPSBbeCwgY2FtbF9wb3BfZmliZXIoKV07XG4gICAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9jYW1sX2NhbGxfZ2VuKGYsYXJncylcbiAgICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKTtcbiAgfVxuICBmdW5jdGlvbiBodmFsKHgpIHtcbiAgICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDEsIHgpO1xuICB9XG4gIGZ1bmN0aW9uIGhleG4oZSkge1xuICAgIC8vIENhbGwgW2h4XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMiwgZSk7XG4gIH1cbiAgcmV0dXJuIFswLCBodmFsLCBbMCwgaGV4biwgMF0sIFswLCBodiwgaHgsIGhmXSwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpIHtcbiAgdmFyIHN0YWNrPWNvbnRbMV07XG4gIGNvbnRbMV09MDtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoY29udCwgaHZhbCwgaGV4biwgaGVmZikge1xuICB2YXIgc3RhY2sgPSBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCk7XG4gIHN0YWNrWzNdID0gWzAsIGh2YWwsIGhleG4sIGhlZmZdO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbmZ1bmN0aW9uIGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX25ld1xuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fbmV3KHVuaXQpe1xuICAgIHJldHVybiB7Y29uZGl0aW9uOjF9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl93YWl0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KHQsbXV0ZXh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsKHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyFJZjogZWZmZWN0c1xuZnVuY3Rpb24ganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgTWxGYWtlRmQsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpICYmICF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG5cbiAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gIHZhciBjID0gZmFsc2U7XG4gIHZhciBpID0gMDtcbiAgcmV0dXJuIHsgcmVhZFN5bmMgOiAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaSA9PSBhLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICBpKys7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkgfVxuICB9KVxuICAgICwgY2xvc2VTeW5jOiAoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYyA9IHRydWU7XG4gICAgICBhID0gW107XG4gICAgfSlcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVnaXN0ZXI9IGZ1bmN0aW9uIChuYW1lLGNvbnRlbnQpe1xuICB2YXIgZmlsZTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVdKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICBpZihjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjb250ZW50KTtcbiAgaWYoY2FtbF9pc19tbF9zdHJpbmcoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50IGluc3RhbmNlb2YgQXJyYXkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICBlbHNlIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQudG9TdHJpbmcpIHtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2J5dGVzX29mX3N0cmluZyhjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjb250ZW50LnRvU3RyaW5nKCkpKTtcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoYnl0ZXMpO1xuICB9XG4gIGlmKGZpbGUpe1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gZmlsZTtcbiAgfVxuICBlbHNlIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCB0aGlzLmRhdGEsIG9mZnNldCwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgbGVuID0gY2xlbiAtIG9mZnNldDtcbiAgfVxuICBpZihsZW4pIHtcbiAgICB2YXIgZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGRhdGEsIDAsIGxlbik7XG4gICAgYnVmLnNldChjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGRhdGEpLCBwb3MpO1xuICB9XG4gIHJldHVybiBsZW5cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZF9vdXQoZmQsZmxhZ3MpIHtcbiAgTWxGYWtlRmlsZS5jYWxsKHRoaXMsIGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgdGhpcy5sb2cgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIDAgfSk7XG4gIGlmKGZkID09IDEgJiYgdHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICBlbHNlIGlmKGZkID09IDIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5lcnJvcjtcbiAgZWxzZSBpZih0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2dcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgfVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5sb2cpIHtcbiAgICBpZihsZW4gPiAwXG4gICAgICAgJiYgcG9zID49IDBcbiAgICAgICAmJiBwb3MrbGVuIDw9IGJ1Zi5sZW5ndGhcbiAgICAgICAmJiBidWZbcG9zK2xlbi0xXSA9PSAxMClcbiAgICAgIGxlbiAtLTtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICB2YXIgc3JjID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHNyYywgMCwgbGVuKTtcbiAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBpcyB3cml0ZSBvbmx5XCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZChuYW1lLCBmaWxlLGZsYWdzKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cblxuTWxGYWtlRmQucHJvdG90eXBlLmVycl9jbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubmFtZSAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUubGVuZ3RoICgpXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LGJ1Zixwb3MsbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUucmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBJbnQzMkFycmF5KHgpO1xuICAvLyBGb3IgbnVtIDwgMS41XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuXG4gIC8vIFdlIGFkZCArMiB0byB0aGUgYXJyYXkgbGVuZ3RoOlxuICAvLyAtICsxIGZvciB0aGUgdGFnXG4gIC8vIC0gKzEgZm9yIHRoZSBjdXN0b21fb3BzIHNsb3RcbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogbGVuZ3RoX25hdFxuZnVuY3Rpb24gbGVuZ3RoX25hdCh4KSB7XG4gIHJldHVybiB4LmRhdGEubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+PTE2OyB9XG4gIGlmKGEgJiAweEZGMDApICAgICB7IGIgKz0gODsgYSA+Pj49IDg7IH1cbiAgaWYoYSAmIDB4RjApICAgICAgIHsgYiArPSA0OyBhID4+Pj0gNDsgfVxuICBpZihhICYgMTIpICAgICAgICAgeyBiICs9IDI7IGEgPj4+PSAyOyB9XG4gIGlmKGEgJiAyKSAgICAgICAgICB7IGIgKz0gMTsgYSA+Pj49IDE7IH1cbiAgaWYoYSAmIDEpICAgICAgICAgIHsgYiArPSAxOyB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF96ZXJvXG5mdW5jdGlvbiBpc19kaWdpdF96ZXJvKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gPT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9vZGRcbmZ1bmN0aW9uIGlzX2RpZ2l0X29kZChuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoeCB8IDApO1xuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5jcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMraV0gPj4+IDApO1xuICB9XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vL1Byb3ZpZGVzOiBkZWNyX25hdFxuZnVuY3Rpb24gZGVjcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+MCkgLSBib3Jyb3c7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAoYm9ycm93ID09IDEpID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSAtIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgLSBib3Jyb3c7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgKGJvcnJvdz09MSk/MDoxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gKG5hdDMuZGF0YVtvZnMzXSA+Pj4gMCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeDEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhICYgMHgwMDAwRkZGRikgKyBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgPj4+IDE2KTtcbiAgICBjYXJyeSA9IE1hdGguZmxvb3IoeDIvNjU1MzYpO1xuICAgIHZhciB4MyA9IHgxICsgKHgyICUgNjU1MzYpICogNjU1MzY7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzLzQyOTQ5NjcyOTYpO1xuICB9XG5cbiAgaWYobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgbmF0X29mX2FycmF5KFtjYXJyeV0pLCAwLCAxLCAwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2Fycnk7XG4gIH1cbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1xuLy8gbGVuMSA+PSBsZW4yICsgbGVuMy5cbi8vUHJvdmlkZXM6IG11bHRfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X2RpZ2l0X25hdFxuZnVuY3Rpb24gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMywgbGVuMykge1xuICB2YXIgY2FycnkgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMzsgaSsrKSB7XG4gICAgY2FycnkgKz0gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMStpLCBsZW4xLWksIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMraSk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfbGVmdF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgIHZhciBhID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiPj4+MTYpO1xuICB2YXIgeSA9IE1hdGguZmxvb3IoeC9jKSAqIDY1NTM2O1xuICB2YXIgeiA9ICh4ICUgYykgKiA2NTUzNjtcbiAgdmFyIHcgPSB6ICsgKGIgJiAweDAwMDBGRkZGKTtcbiAgcmV0dXJuIFt5ICsgTWF0aC5mbG9vcih3L2MpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IChuYXQxLmRhdGFbb2ZzMStsZW4tMV0gPj4+MCk7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvcih2YXIgaSA9IGxlbi0yOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQyLmRhdGFbb2ZzMl0gPj4+IDApKTtcbiAgICBuYXRxLmRhdGFbb2ZzcStpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZihsZW4yID09IDEpIHtcbiAgICBkaXZfZGlnaXRfbmF0KG5hdDEsIG9mczErMSwgbmF0MSwgb2ZzMSwgbmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMik7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgcyA9IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQyLCBvZnMyK2xlbjItMSk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuXG4gIHZhciBkID0gKG5hdDIuZGF0YVtvZnMyK2xlbjItMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIrMSk7XG4gIGZvciAodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSBsZW4yOyBpLS0pIHtcbiAgICAvLyBEZWNlbnQgbG93ZXIgYm91bmQgb24gcXVvXG4gICAgdmFyIHF1byA9IGQgPT0gNDI5NDk2NzI5NiA/IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgOiBkaXZfaGVscGVyKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQxLmRhdGFbb2ZzMStpLTFdID4+PjApLCBkKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMisxKTtcbiAgICBtdWx0X2RpZ2l0X25hdChhLCAwLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbcXVvXSksIDApO1xuICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgYSwgMCwgbGVuMisxLCAxKTtcblxuICAgIHdoaWxlIChuYXQxLmRhdGFbb2ZzMStpXSAhPSAwIHx8IGNvbXBhcmVfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKSA+PSAwKSB7XG4gICAgICBxdW8gPSBxdW8gKyAxO1xuICAgICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCAxKTtcbiAgICB9XG5cbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfcmlnaHRfbmF0XG5mdW5jdGlvbiBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSBsZW4xLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMDtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhID4+PiBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhIDw8ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPiBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAxO1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZihhID4gYikgcmV0dXJuIDE7XG4gIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gIGZvcih2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApID4gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIDE7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPCAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnbG9iYWxUaGlzLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbnZhciBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlclxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUoZXZlbnQsIGV2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBVSW50OEFycmF5UmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IHM7IHRoaXMuaSA9IGk7IH1cblVJbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK10gPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCA4KSB8IHNbaSArIDFdXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAgICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM107XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHZhciBzID0gdGhpcy5zO1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0KGkpO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5kYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG4gIHZhciBtYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHN3aXRjaChtYWdpYyl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAwO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSBkYXRhX2xlbjtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gcmVhZGVyLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDE7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIpO1xuICAgIGJyZWFrXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWs7XG4gIH1cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZihjb21wcmVzc2VkKSB7XG4gICAgaWYoY2FtbF9kZWNvbXByZXNzX2lucHV0KSB7XG4gICAgICB2YXIgZGF0YSA9IHJlYWRlci5yZWFkdWludDhhcnJheShkYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkodW5jb21wcmVzc2VkX2RhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBjYW1sX2RlY29tcHJlc3NfaW5wdXQoZGF0YSwgcmVzKTtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgVUludDhBcnJheVJlYWRlcihyZXMsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNvbXByZXNzZWQgb2JqZWN0LCBjYW5ub3QgZGVjb21wcmVzc1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAyMFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNlxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIHZhciByID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKSwgb2ZzKTtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICBzd2l0Y2goci5yZWFkMzJ1KCkpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgIGJyZWFrO1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWtcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5NYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiBwb2x5ZmlsbCAodXNpbmcgbGluZWFyIHNlYXJjaCkgKi9cbiAgICBmdW5jdGlvbiBOYWl2ZUxvb2t1cChvYmpzKSB7IHRoaXMub2JqcyA9IG9ianM7IH1cbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24odikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9ianMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub2Jqc1tpXSA9PT0gdikgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEbyBub3RoaW5nIGhlcmUuIFtNbE9iamVjdFRhYmxlLnN0b3JlXSB3aWxsIHB1c2ggdG8gW3RoaXMub2Jqc10gZGlyZWN0bHkuXG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IE5haXZlTG9va3VwKHRoaXMub2Jqcyk7XG4gICAgfTtcbiAgfSgpO1xufVxuZWxzZSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBnbG9iYWxUaGlzLk1hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGNvbnNvbGUud2FybihcImluIGNhbWxfb3V0cHV0X3ZhbDogZmxhZyBNYXJzaGFsLkNsb3N1cmVzIGlzIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXG4gICAgdmFyIHdyaXRlciA9IG5ldyBXcml0ZXIgKCk7XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGludGVybl9vYmpfdGFibGUgPSBub19zaGFyaW5nID8gbnVsbCA6IG5ldyBNbE9iamVjdFRhYmxlKCk7XG5cbiAgICBmdW5jdGlvbiBtZW1vKHYpIHtcbiAgICAgIGlmIChub19zaGFyaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICB2YXIgZXhpc3Rpbmdfb2Zmc2V0ID0gaW50ZXJuX29ial90YWJsZS5yZWNhbGwodik7XG4gICAgICBpZiAoZXhpc3Rpbmdfb2Zmc2V0KSB7IHdyaXRlci53cml0ZV9zaGFyZWQoZXhpc3Rpbmdfb2Zmc2V0KTsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGVsc2UgeyBpbnRlcm5fb2JqX3RhYmxlLnN0b3JlKHYpOyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlcm5fcmVjICh2KSB7XG4gICAgICBpZiAodi5jYW1sX2N1c3RvbSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbmFtZSA9IHYuY2FtbF9jdXN0b207XG4gICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbbmFtZV07XG4gICAgICAgIHZhciBzel8zMl82NCA9IFswLDBdO1xuICAgICAgICBpZighb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZihvcHMuZml4ZWRfbGVuZ3RoID09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE4IC8qY3N0LkNPREVfQ1VTVE9NX0xFTiovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBoZWFkZXJfcG9zID0gd3JpdGVyLnBvcyAoKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zLCAzMiwgc3pfMzJfNjRbMF0pO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgNCwgMzIsIDApOyAvLyB6ZXJvXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA4LCAzMiwgc3pfMzJfNjRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBvbGRfcG9zID0gd3JpdGVyLnBvcygpO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgaWYgKG9wcy5maXhlZF9sZW5ndGggIT0gd3JpdGVyLnBvcygpIC0gb2xkX3BvcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGluY29ycmVjdCBmaXhlZCBzaXplcyBzcGVjaWZpZWQgYnkgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAyICsgKChzel8zMl82NFswXSArIDMpID4+IDIpO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyICsgKChzel8zMl82NFsxXSArIDcpID4+IDMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICAgIGlmICh2WzBdID09IDI1MSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChBYnN0cmFjdClcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSAmJiBtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIGlmICh2WzBdIDwgMTYgJiYgdi5sZW5ndGggLSAxIDwgOClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8gKyB2WzBdICsgKCh2Lmxlbmd0aCAtIDEpPDw0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwOCAvKmNzdC5DT0RFX0JMT0NLMzIqLywgKCh2Lmxlbmd0aC0xKSA8PCAxMCkgfCB2WzBdKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gdi5sZW5ndGg7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IHYubGVuZ3RoO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxKSBzdGFjay5wdXNoICh2LCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgICBpZighKGNhbWxfaXNfbWxfYnl0ZXMoY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKSkpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogW0J5dGVzLnRdIGNhbm5vdCBzYWZlbHkgYmUgbWFyc2hhbGVkIHdpdGggWy0tZW5hYmxlIHVzZS1qcy1zdHJpbmddXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT0gKHZ8MCkpe1xuICAgICAgICAgIHZhciB0eXBlX29mX3YgPSB0eXBlb2YgdjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIElmIGEgZmxvYXQgaGFwcGVucyB0byBiZSBhbiBpbnRlZ2VyIGl0IGlzIHNlcmlhbGl6ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgIC8vIChKc19vZl9vY2FtbCBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuIGludGVnZXIgbnVtYmVyIGlzXG4gICAgICAgICAgLy8gZmxvYXQgb3IgaW50ZWdlci4pIFRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNyYXNoZXMgd2hlblxuICAgICAgICAgIC8vIHVubWFyc2hhbGxpbmcgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bnRpbWUuIEl0IHNlZW1zIGJldHRlciB0b1xuICAgICAgICAgIC8vIHN5c3RlbWF0aWNhbGx5IGZhaWwgb24gbWFyc2hhbGxpbmcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgICAgICAgICBpZih0eXBlX29mX3YgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyAgICAgICAgICB2YXIgdCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHYpKTtcbiAgICAgICAgICAvLyAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MEIgLypjc3QuQ09ERV9ET1VCTEVfQklHKi8pO1xuICAgICAgICAgIC8vICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGk8ODsgaSsrKXt3cml0ZXIud3JpdGUoOCx0W2ldKX1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ID49IDAgJiYgdiA8IDB4NDApIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDBYNDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAoMSA8PCA3KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDAgLypjc3QuQ09ERV9JTlQ4Ki8sIHYpO1xuICAgICAgICAgIGVsc2UgaWYgKHYgPj0gLSgxIDw8IDE1KSAmJiB2IDwgKDEgPDwgMTUpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMTYsIDB4MDEgLypjc3QuQ09ERV9JTlQxNiovLCB2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwMiAvKmNzdC5DT0RFX0lOVDMyKi8sIHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV4dGVybl9yZWMgKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIHZhciB2ID0gc3RhY2sucG9wICgpO1xuICAgICAgaWYgKGkgKyAxIDwgdi5sZW5ndGgpIHN0YWNrLnB1c2ggKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWMgKHZbaV0pO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgd3JpdGVyLm9ial9jb3VudGVyID0gaW50ZXJuX29ial90YWJsZS5vYmpzLmxlbmd0aDtcbiAgICB3cml0ZXIuZmluYWxpemUoKTtcbiAgICByZXR1cm4gd3JpdGVyLmNodW5rO1xuICB9XG59ICgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfYmxpdF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIChzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKTtcbiAgaWYgKHQubGVuZ3RoID4gbGVuKSBjYW1sX2ZhaWx3aXRoIChcIk1hcnNoYWwudG9fYnVmZmVyOiBidWZmZXIgb3ZlcmZsb3dcIik7XG4gIGNhbWxfYmxpdF9ieXRlcyh0LCAwLCBzLCBvZnMsIHQubGVuZ3RoKTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIElvXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Zkc1xudmFyIGNhbWxfc3lzX2ZkcyA9IG5ldyBBcnJheSgzKTtcblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlKSBmaWxlLmNsb3NlKCk7XG4gIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLGlkeCkge1xuICBpZihpZHggPT0gdW5kZWZpbmVkKXtcbiAgICBpZHggPSBjYW1sX3N5c19mZHMubGVuZ3RoO1xuICB9XG4gIGNhbWxfc3lzX2Zkc1tpZHhdID0gZmlsZTtcbiAgcmV0dXJuIGlkeCB8IDA7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCAoZmlsZSwgdW5kZWZpbmVkKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGZpbGUoZmQsIGZsYWdzKSB7XG4gICAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIG5ldyBNbEZha2VGZF9vdXQoZmQsIGZsYWdzKVxuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgwLHtyZG9ubHk6MSxhbHRuYW1lOlwiL2Rldi9zdGRpblwiLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMCk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgxLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMSk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgyLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMik7XG59KSgpXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xudmFyIGNhbWxfbWxfY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9JbnB1dCBmcm9tIGluX2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jbG9zZV9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jbG9zZVxuZnVuY3Rpb24gY2FtbF9tbF9jbG9zZV9jaGFubmVsIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmxlbmd0aCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGggKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQoY2hhbmlkLGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub3V0cHV0ID0gKGZ1bmN0aW9uIChzKSB7ZihzKX0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCxmKSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5yZWZpbGwgPSBmO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVmaWxsIChjaGFuKSB7XG4gIGlmKGNoYW4ucmVmaWxsICE9IG51bGwpe1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjaGFuLnJlZmlsbCA9IG51bGxcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlci5sZW5ndGggPCBjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpe1xuICAgICAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCk7XG4gICAgICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICAgICAgY2hhbi5idWZmZXIgPSBiO1xuICAgICAgfVxuICAgICAgY2hhbi5idWZmZXIuc2V0KHN0cl9hLGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbnJlYWQgPSBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIGNoYW4uYnVmZmVyX21heCwgY2hhbi5idWZmZXIubGVuZ3RoIC0gY2hhbi5idWZmZXJfbWF4KTtcbiAgICBjaGFuLm9mZnNldCArPSBucmVhZDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gbnJlYWQ7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dCAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmlnYXJyYXkgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9ibG9jayAoY2hhbmlkLCBiYSwgaSwgbCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIG4gPSBsO1xuICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBpZihsIDw9IGF2YWlsKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH1cbiAgZWxzZSBpZihhdmFpbCA+IDApIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgYXZhaWwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGF2YWlsO1xuICAgIG4gPSBhdmFpbDtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgaWYobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIG4pLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IG47XG4gIH1cbiAgcmV0dXJuIG4gfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZShyIDwgbil7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgICAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICAgICAgYnJlYWs7XG4gICAgICBidWZmZXJbb2Zmc2V0K3JdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZihyID09IDApXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoaGVhZGVyKSwgMCk7XG4gIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4gKyBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBidWYuc2V0KGhlYWRlciwwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKVxuICBpZihyIDwgbGVuKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXBcbi8vUmVxdWlyZXM6IGNhbWxfaW5wdXRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgfVxuICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgcmVzID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfY2hhciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA0OyBpKyspe1xuICAgIHJlcyA9IChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcykge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBpZihwb3MgPj0gY2hhbi5vZmZzZXQgLSBjaGFuLmJ1ZmZlcl9tYXhcbiAgICAgJiYgcG9zIDw9IGNoYW4ub2Zmc2V0XG4gICAgICYmIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkpIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gY2hhbi5idWZmZXJfbWF4IC0gKGNoYW4ub2Zmc2V0IC0gcG9zKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCxwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfcG9zX2luKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0IC0gKGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbihjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX2luKGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX2luKGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X3NjYW5fbGluZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZihwID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+IDApIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIpLDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmKGNoYW4uYnVmZmVyX21heCA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgICB2YXIgcHJldl9tYXggPSBjaGFuLmJ1ZmZlcl9tYXg7XG4gICAgICBjYW1sX3JlZmlsbCAoY2hhbik7XG4gICAgICBpZihwcmV2X21heCA9PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChjaGFuLmJ1ZmZlcltwKytdICE9IDEwKTtcbiAgcmV0dXJuIChwIC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2ZsdXNoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09IDApIHJldHVybiAwO1xuICBpZihjaGFuLm91dHB1dCkge1xuICAgIGNoYW4ub3V0cHV0KGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3VycikpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCA+IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGgpO1xuICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICBjaGFuLmJ1ZmZlciA9IGJcbiAgfVxuICBzd2l0Y2goY2hhbi5idWZmZXJlZCl7XG4gIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrXG4gIGNhc2UgMTogLy8gQnVmZmVyZWQgKHRoZSBkZWZhdWx0KVxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMjogLy8gQnVmZmVyZWQgKG9ubHkgZm9yIHN0ZG91dCBhbmQgc3RkZXJyKVxuICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMClcbiAgICBpZihpZCA8IDApIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gaWQgKyAxO1xuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGggLSBpZCAtIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF9iYV90b190eXBlZF9hcnJheShidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9wb3Nfb3V0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0ICsgY2hhbi5idWZmZXJfY3VyclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3Nfb3V0KGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0IChjYW1sX3Bvc19vdXQoY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPyAxIDogMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLHYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID0gdjtcbiAgaWYoIXYpIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIDBcbn1cbiIsIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKHRydWUpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY29tcGFjdGlvblxuZnVuY3Rpb24gY2FtbF9nY19jb21wYWN0aW9uKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb3VudGVyc1xuZnVuY3Rpb24gY2FtbF9nY19jb3VudGVycygpIHsgcmV0dXJuIFsyNTQsMCwwLDBdIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgLy8gQSBmaWVsZCB3YXMgYWRkZWQgaW4gT0NhbWwgNC4xMi4gSXQgaXMgdW5saWtlbHkgdG8gYmUgYW4gaXNzdWUgdG9cbiAgLy8gcmV0dXJuIHRvbyBtYW55IGZpZWxkcyBpbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbC5cbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vLy8vLy8vLyBDT1JFXG5cbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjb3JlX3RpbWVfbnNfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjb3JlX3RpbWVfbnNfZm9ybWF0KHRpbWUsZm9ybWF0KXtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0aW1lICogMTAwMCk7XG4gIHZhciBmb3JtYXRqcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm9ybWF0KTtcbiAgdmFyIGpzdHJpbmcgPSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZShmb3JtYXRqcywgZCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzdHJpbmcpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2djX2NvbXBhY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX2NvbXBhY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX2NodW5rc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX2NodW5rcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19wcm9tb3RlZF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19wcm9tb3RlZF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfdG9wX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrc1xuZnVuY3Rpb24gY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3MgKCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXG5mdW5jdGlvbiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayh4KXtcbiAgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTtcbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZmRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luLCBjYW1sX21kNV9jaGFuLCBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbmZ1bmN0aW9uIGNvcmVfbWQ1X2ZkKGZkKXtcbiAgICB2YXIgaWMgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNhbWxfbWQ1X2NoYW4oaWMsIC0xKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW1sX21sX2Nsb3NlX2NoYW5uZWwoaWMpO1xuICAgIH1cbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX2JsaXRfc3RyaW5nLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nKGJ1Ziwgb2ZzLCBsZW4sIHJlcyl7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihidWYsIG9mcywgYnl0ZXMsIDAsIGxlbik7XG4gICAgdmFyIHJlczIgPSBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpLCAwLCBsZW4pO1xuICAgIGNhbWxfYmxpdF9zdHJpbmcocmVzMiwgMCwgcmVzLCAwLCAxNik7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vQmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1Yih2X2JzdHIpIHtcbiAgaWYgKHZfYnN0ci5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX2Rlc3Ryb3k6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICB9XG4gIC8vIE11dGF0ZSB0aGUgb3JpZ2luYWwgYmlnc3RyaW5nIGluLXBsYWNlLCB0byBzaW11bGF0ZSB3aGF0IHRoZSBDIHZlcnNpb24gZG9lc1xuICB2X2JzdHIuX19pc19kZWFsbG9jYXRlZCA9IHRydWU7XG4gIHZfYnN0ci5kYXRhID0gbmV3IHZfYnN0ci5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcigwKTtcbiAgdl9ic3RyLmRpbXMgPSBbIDAgXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19yZWFsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX3JlYWxsb2MoYmlnc3RyaW5nLCBzaXplKSB7XG4gICAgaWYgKGJpZ3N0cmluZy5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19yZWFsbG9jOiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3X2RhdGEgPSBuZXcgYmlnc3RyaW5nLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKHNpemUpO1xuICAgIG5ld19kYXRhLnNldChiaWdzdHJpbmcuZGF0YS5zbGljZSgwLCBzaXplKSk7XG4gICAgdmFyIG5ld19iaWdzdHJpbmcgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmlnc3RyaW5nLmtpbmQsIGJpZ3N0cmluZy5sYXlvdXQsIFtzaXplXSwgbmV3X2RhdGEpO1xuICAgIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIoYmlnc3RyaW5nKTtcblxuICAgIHJldHVybiBuZXdfYmlnc3RyaW5nO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX29mZixkc3QsZHN0X29mZixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmcoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2ludF9jb21wYXJlXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nKGJhMSwgYmExX29mZiwgYmEyLCBiYTJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhMSwgYmExX29mZiArIGkpLCBjYW1sX2JhX2dldF8xKGJhMiwgYmEyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nKGJhLCBiYV9vZmYsIHN0ciwgc3RyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYSwgYmFfb2ZmICsgaSksIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQoc3RyLCBzdHJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNoclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY2hyKGJhLCBiYV9vZmYsIGNociwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoY2FtbF9iYV9nZXRfMShiYSwgYmFfb2ZmICsgaSkgPT0gY2hyKSB7XG4gICAgICByZXR1cm4gKGJhX29mZiArIGkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlXG5mdW5jdGlvbiBiaWdzdHJpbmdfYWxsb2MoXyxzaXplKXtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlKDEyLCAwLCBbMCxzaXplXSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIoeCl7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHViKHMxLCBpMSwgczIsIGkyLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzMSxpMSxzMixpMixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbXNldF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtc2V0X3N0dWIoYmlnc3RyaW5nLCB2X3Bvcywgdl9sZW4sIHZfY2hhcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICBjYW1sX2JhX3NldF8xKGJpZ3N0cmluZywgdl9wb3MgKyBpLCB2X2NoYXIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSx2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMSh2X3MyLHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2J5dGVzX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsIHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2J5dGVzX2dldCh2X3MyLCB2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xudmFyIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyA9IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19maW5kXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfZmluZChicywgY2hyLCBwb3MsIGxlbil7XG4gIHdoaWxlKGxlbiA+IDApe1xuICAgIGlmKGNhbWxfYmFfZ2V0XzEoYnMscG9zKSA9PSBjaHIpIHJldHVybiBwb3M7XG4gICAgcG9zKys7XG4gICAgbGVuLS07XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCBcbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0ICh2b3V0cHV0LCB2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl07XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdO1xuICB2YXIgb3V0cHV0ID0gY2FtbF9tbF9jaGFubmVsc1t2b3V0cHV0XTtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IG91dHB1dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IG91dHB1dDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdCAodnN0ZG91dCwgdnN0ZGVycil7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVycjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkKGNoYW4pe1xuICB2YXIgaW5mbyA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbl07XG4gIHJldHVybiBpbmZvLm9mZnNldFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvLy8vLy8vLy8gQklOX1BST1RcblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGJpZ3N0cmluZywgaSl7XG4gIGlmIChpID4+PiAwID49IGJpZ3N0cmluZy5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zKTsgLy8gZmlyc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MrbGVuLTEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MpOyAgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgdmFyIHZpZXcgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KGxlbik7XG4gIHZhciBidWZmZXIgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheSh2aWV3LmJ1ZmZlcik7XG4gIGJ1ZmZlci5zZXQoc3JjLmRhdGEuc3ViYXJyYXkoc3JjX3Bvcywgc3JjX3BvcyArIChsZW4gKiA4KSkpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMCBcbiAgICBkc3RbZHN0X3BvcytpKzFdID0gdmlld1tpXTtcbiAgfVxuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YihzcmNfcG9zLHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDAgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3Bvcyk7IC8vIGZpcnN0IHBvcyBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zICsgbGVuIC0gMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3Bvcyk7IC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMFxuICBzcmNfcG9zID0gc3JjX3BvcyArIDFcbiAgdmFyIGZsb2F0NjQgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KHNyYy5zbGljZShzcmNfcG9zLHNyY19wb3MgKyBsZW4pKTtcbiAgdmFyIGZsb2F0NjRfdWludDggPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheShmbG9hdDY0LmJ1ZmZlcik7XG4gIHZhciB2aWV3ID0gZHN0LmRhdGEuc3ViYXJyYXkoZHN0X3BvcywgZHN0X3BvcyArIChsZW4gKiA4KSk7XG4gIHZpZXcuc2V0KGZsb2F0NjRfdWludDgpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEsIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIC8vIFtiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXSBpcyB1c2VkIHdpdGggbWl4ZWQgYmlnYXJyYXkga2luZHMuXG4gIC8vIENvbnZlcnRlciBldmVyeXRoaW5nIHRvIGJpZ2FycmF5IG9mIGNoYXIgYmVmb3JlIHRoZSBibGl0LlxuICBpZihzcmMua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIHNyYyA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShzcmMuZGF0YSk7XG4gIGlmKGRzdC5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgZHN0ID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGRzdC5kYXRhKTtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2dldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2Rscztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19sb2FkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19sb2FkKHJlZil7XG4gIHJldHVybiByZWZbMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuZnVuY3Rpb24gY2FtbF9hdG9taWNfY2FzKHJlZixvLG4pIHtcbiAgaWYocmVmWzFdID09PSBvKXtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2ZldGNoX2FkZChyZWYsIGkpIHtcbiAgdmFyIG9sZCA9IHJlZlsxXTtcbiAgcmVmWzFdICs9IGk7XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG5mdW5jdGlvbiBjYW1sX2F0b21pY19leGNoYW5nZShyZWYsIHYpIHtcbiAgdmFyIHIgPSByZWZbMV07XG4gIHJlZlsxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQoYSkge1xuICByZXR1cm4gWzAsIGFdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxudmFyIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8gPSBbMF1cbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbih1bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fc2V0X25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3NldF9uYW1lKF9uYW1lKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuZnVuY3Rpb24gY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQodW5pdCkgeyByZXR1cm4gMSB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbnZhciBjYW1sX2RvbWFpbl9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsdGVybV9zeW5jKXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gICAgLy9UT0RPOiBmaXggZXhuIGNhc2VcbiAgICB0ZXJtX3N5bmNbMV0gPSBbMCwgWzAsIHJlc11dO1xuICAgIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLG11dGV4KXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKG11dGV4KTtcbiAgICByZXR1cm4gaWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9pZCh1bml0KXtcbiAgICByZXR1cm4gY2FtbF9kb21haW5faWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgodW5pdCl7XG4gICAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIE1sTXV0ZXgoKSB7XG4gIHRoaXMubG9ja2VkID0gZmFsc2Vcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9uZXdcbi8vUmVxdWlyZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbmV3KHVuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYodC5sb2NrZWQpXG4gICAgY2FtbF9mYWlsd2l0aChcIk11dGV4LmxvY2s6IG11dGV4IGFscmVhZHkgbG9ja2VkLiBDYW5ub3Qgd2FpdC5cIik7XG4gIGVsc2UgdC5sb2NrZWQgPSB0cnVlO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF90cnlfbG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF90cnlfbG9jayh0KSB7XG4gIGlmKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUElcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdLnJlZ2lzdGVyKSB4WzFdLnJlZ2lzdGVyKHYsIHVuZGVmaW5lZCwgdik7XG4gICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgfVxuICBlbHNlIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbMV0udW5yZWdpc3Rlcikge1xuICAgIHZhciBvbGQgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0uZGVyZWYoKTtcbiAgICBpZihvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvdW50ID0gMFxuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZil7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKClcbiAgICAgICAgICBpZihrZXkgPT09IG9sZCkgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoY291bnQgPT0gMSkgeFsxXS51bnJlZ2lzdGVyKG9sZCk7XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDBcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlLCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jcmVhdGUgKG4pIHtcbiAgdmFyIHggPSBjYW1sX3dlYWtfY3JlYXRlKG4pO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2tleSwgY2FtbF9lcGhlX3Vuc2V0X2tleVxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKHYgPT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2tleSh4LGkpXG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCxpLHZbMV0pXG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIHJldHVybiAod2Vhaz09PXVuZGVmaW5lZCk/MDpbMCwgd2Vha107XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2tleSxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRfY29weVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXlfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19jaGVja1xuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2tleSh4LCBpKSB7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgaWYod2Vhaz09PXVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19ibGl0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9rZXkoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9zZXRfZGF0YSwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICB2YXIgbiA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICBpZihuID09PSB1bmRlZmluZWQpIGNhbWxfZXBoZV91bnNldF9kYXRhKGRzdCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKGRzdCwgbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKCEgKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KSkge1xuICAgICAgeFsxXSA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICgpIHsgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCkgfSk7XG4gICAgICAvL3JlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnJlZ2lzdGVyKGtleSwgdW5kZWZpbmVkLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpe1xuICAgICAgLy91bnJlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnVucmVnaXN0ZXIoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIi8vUHJvdmlkZXM6IGpzX3BlcmZvcm1hbmNlXG52YXIganNfcGVyZm9ybWFuY2UgPSB7bWFyazogKGZ1bmN0aW9uICgpIHt9KSwgbWVhc3VyZTogKGZ1bmN0aW9uICgpIHt9KSB9O1xuaWYgKHR5cGVvZiBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlO1xufSBlbHNlIHtcbiAgdHJ5IHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKS5wZXJmb3JtYW5jZTtcbiAgfSBjYXRjaCAoX2UpIHtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oXCJjb3VsZG4ndCBsb2FkIHBlcmZvcm1hbmNlIGhvb2tzXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWFya1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tYXJrKG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tYXJrKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tZWFzdXJlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21lYXN1cmUobmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1lYXN1cmUoXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RhcnQpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoZW5kKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21hcmtzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21hcmtzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWFya3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy9Qcm92aWRlczogY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpKGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vanNfaXRlcmF0ZV9wcm9wZXJ0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzX3RvX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vanNfaXRlcmF0ZV9wcm9wZXJ0aWVzKG8sIGYpIHtcbiAgdmFyIG5hbWU7XG4gIGZvcihuYW1lIGluIG8pIHtcbiAgICBpZihvLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBmKG5hbWUpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXQgcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgaGQgOjogdGwgLT4gaGQgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG4oKiBmb3IgYXRfZXhpdCAqKVxudHlwZSAnYSBhdG9taWNfdFxuZXh0ZXJuYWwgYXRvbWljX21ha2UgOiAnYSAtPiAnYSBhdG9taWNfdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIGF0b21pY19nZXQgOiAnYSBhdG9taWNfdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGF0b21pY19jb21wYXJlX2FuZF9zZXQgOiAnYSBhdG9taWNfdCAtPiAnYSAtPiAnYSAtPiBib29sXG4gID0gXCIlYXRvbWljX2Nhc1wiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gYXRvbWljX21ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBhdG9taWNfbWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIGF0b21pY19jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IGF0b21pY19jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICAoIWRvX2RvbWFpbl9sb2NhbF9hdF9leGl0KSAoKTtcbiAgKGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgICAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICAgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgICAgPSBDb21wbGV4XG5tb2R1bGUgQ29uZGl0aW9uICAgICAgPSBDb25kaXRpb25cbm1vZHVsZSBEaWdlc3QgICAgICAgICA9IERpZ2VzdFxubW9kdWxlIERvbWFpbiAgICAgICAgID0gRG9tYWluXG5tb2R1bGUgRWZmZWN0ICAgICAgICAgPSBFZmZlY3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgICAgPSBHY1xubW9kdWxlIEhhc2h0YmwgICAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuXG5leHRlcm5hbCBmaWxlX2V4aXN0czogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2ZpbGVfZXhpc3RzXCJcbmV4dGVybmFsIGlzX2RpcmVjdG9yeSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19kaXJlY3RvcnlcIlxuZXh0ZXJuYWwgcmVtb3ZlOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVtb3ZlXCJcbmV4dGVybmFsIHJlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVuYW1lXCJcbmV4dGVybmFsIGdldGVudjogc3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0ZW52XCJcblxubGV0IGdldGVudl9vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKGdldGVudiBzKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5sZXQgaW50ZXJhY3RpdmUgPSByZWYgZmFsc2VcblxudHlwZSBzaWduYWxfYmVoYXZpb3IgPVxuICAgIFNpZ25hbF9kZWZhdWx0XG4gIHwgU2lnbmFsX2lnbm9yZVxuICB8IFNpZ25hbF9oYW5kbGUgb2YgKGludCAtPiB1bml0KVxuXG5leHRlcm5hbCBzaWduYWwgOiBpbnQgLT4gc2lnbmFsX2JlaGF2aW9yIC0+IHNpZ25hbF9iZWhhdmlvclxuICAgICAgICAgICAgICAgID0gXCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXJcIlxuXG5sZXQgc2V0X3NpZ25hbCBzaWdfbnVtIHNpZ19iZWggPSBpZ25vcmUoc2lnbmFsIHNpZ19udW0gc2lnX2JlaClcblxubGV0IHNpZ2FicnQgPSAtMVxubGV0IHNpZ2Fscm0gPSAtMlxubGV0IHNpZ2ZwZSA9IC0zXG5sZXQgc2lnaHVwID0gLTRcbmxldCBzaWdpbGwgPSAtNVxubGV0IHNpZ2ludCA9IC02XG5sZXQgc2lna2lsbCA9IC03XG5sZXQgc2lncGlwZSA9IC04XG5sZXQgc2lncXVpdCA9IC05XG5sZXQgc2lnc2VndiA9IC0xMFxubGV0IHNpZ3Rlcm0gPSAtMTFcbmxldCBzaWd1c3IxID0gLTEyXG5sZXQgc2lndXNyMiA9IC0xM1xubGV0IHNpZ2NobGQgPSAtMTRcbmxldCBzaWdjb250ID0gLTE1XG5sZXQgc2lnc3RvcCA9IC0xNlxubGV0IHNpZ3RzdHAgPSAtMTdcbmxldCBzaWd0dGluID0gLTE4XG5sZXQgc2lndHRvdSA9IC0xOVxubGV0IHNpZ3Z0YWxybSA9IC0yMFxubGV0IHNpZ3Byb2YgPSAtMjFcbmxldCBzaWdidXMgPSAtMjJcbmxldCBzaWdwb2xsID0gLTIzXG5sZXQgc2lnc3lzID0gLTI0XG5sZXQgc2lndHJhcCA9IC0yNVxubGV0IHNpZ3VyZyA9IC0yNlxubGV0IHNpZ3hjcHUgPSAtMjdcbmxldCBzaWd4ZnN6ID0gLTI4XG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3N3YXBfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHQgLT4gYm9vbFxuICA9IFwiY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFwiXG5leHRlcm5hbCBpc19zaGFyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfb2JqX2lzX3NoYXJlZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgQ2xvc3VyZSA9IHN0cnVjdFxuICB0eXBlIGluZm8gPSB7XG4gICAgYXJpdHk6IGludDtcbiAgICBzdGFydF9lbnY6IGludDtcbiAgfVxuXG4gIGxldCBpbmZvX29mX3JhdyAoaW5mbyA6IG5hdGl2ZWludCkgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludCBpblxuICAgIGxldCBhcml0eSA9XG4gICAgICAoKiBzaWduZWQ6IG5lZ2F0aXZlIGZvciB0dXBsZWQgZnVuY3Rpb25zICopXG4gICAgICBpZiBTeXMud29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gNTYpXG4gICAgICBlbHNlXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyAyNClcbiAgICBpblxuICAgIGxldCBzdGFydF9lbnYgPVxuICAgICAgKCogc3RhcnRfZW52IGlzIHVuc2lnbmVkLCBidXQgd2Uga25vdyBpdCBjYW4gYWx3YXlzIGZpdCBhbiBPQ2FtbFxuICAgICAgICAgaW50ZWdlciBzbyB3ZSB1c2UgW3RvX2ludF0gaW5zdGVhZCBvZiBbdW5zaWduZWRfdG9faW50XS4gKilcbiAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHRfbG9naWNhbCAoc2hpZnRfbGVmdCBpbmZvIDgpIDkpIGluXG4gICAgeyBhcml0eTsgc3RhcnRfZW52IH1cblxuICAoKiBub3RlOiB3ZSBleHBlY3QgYSBjbG9zdXJlLCBub3QgYW4gaW5maXggcG9pbnRlciAqKVxuICBsZXQgaW5mbyAob2JqIDogdCkgPVxuICAgIGFzc2VydCAodGFnIG9iaiA9IGNsb3N1cmVfdGFnKTtcbiAgICBpbmZvX29mX3JhdyAocmF3X2ZpZWxkIG9iaiAxKVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNy0yMDE4IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLiAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIG1ha2UgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGV4Y2hhbmdlIDogJ2EgdCAtPiAnYSAtPiAnYSA9IFwiJWF0b21pY19leGNoYW5nZVwiXG5leHRlcm5hbCBjb21wYXJlX2FuZF9zZXQgOiAnYSB0IC0+ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVhdG9taWNfY2FzXCJcbmV4dGVybmFsIGZldGNoX2FuZF9hZGQgOiBpbnQgdCAtPiBpbnQgLT4gaW50ID0gXCIlYXRvbWljX2ZldGNoX2FkZFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0IHNldCByIHggPSBpZ25vcmUgKGV4Y2hhbmdlIHIgeClcbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG4oKiBbdXBkYXRlX3RvX2ZvcmNpbmcgYmxrXSB0cmllcyB0byB1cGRhdGUgYSBbYmxrXSB3aXRoIFtsYXp5X3RhZ10gdG9cbiAgIFtmb3JjaW5nX3RhZ10gdXNpbmcgY29tcGFyZS1hbmQtc3dhcCAoQ0FTKSwgdGFraW5nIGNhcmUgdG8gaGFuZGxlIGNvbmN1cnJlbnRcbiAgIG1hcmtpbmcgb2YgdGhlIGhlYWRlciB3b3JkIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuIFJldHVybnMgWzBdIGlmIHRoZVxuICAgQ0FTIGlzIHN1Y2Nlc3NmdWwuIElmIHRoZSBDQVMgZmFpbHMsIHRoZW4gdGhlIHRhZyB3YXMgb2JzZXJ2ZWQgdG8gYmVcbiAgIHNvbWV0aGluZyBvdGhlciB0aGFuIFtsYXp5X3RhZ10gZHVlIHRvIGEgY29uY3VycmVudCBtdXRhdG9yLiBJbiB0aGlzIGNhc2UsXG4gICB0aGUgZnVuY3Rpb24gcmV0dXJucyBbMV0uICopXG5leHRlcm5hbCB1cGRhdGVfdG9fZm9yY2luZyA6IE9iai50IC0+IGludCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXCIgW0BAbm9hbGxvY11cblxuKCogW3Jlc2V0X3RvX2xhenkgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aCBbT2JqLmZvcmNpbmdfdGFnXVxuICAgYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmxhenlfdGFnXSwgdGFraW5nIGNhcmUgdG8gaGFuZGxlIGNvbmN1cnJlbnRcbiAgIG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gKilcbmV4dGVybmFsIHJlc2V0X3RvX2xhenkgOiBPYmoudCAtPiB1bml0ID0gXCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVwiIFtAQG5vYWxsb2NdXG5cbigqIFt1cGRhdGVfdG9fZm9yd2FyZCBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoXG4gICBbT2JqLmZvcmNpbmdfdGFnXSBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmouZm9yd2FyZF90YWddLCB0YWtpbmcgY2FyZSB0b1xuICAgaGFuZGxlIGNvbmN1cnJlbnQgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLlxuICopXG5leHRlcm5hbCB1cGRhdGVfdG9fZm9yd2FyZCA6IE9iai50IC0+IHVuaXQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFwiIFtAQG5vYWxsb2NdXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfYmxvY2sgYmxrID1cbiAgbGV0IGIgPSBPYmoucmVwciBibGsgaW5cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIGIgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoKSk7ICgqIFJlbGVhc2UgdGhlIGNsb3N1cmUgKilcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmVzZXRfdG9fbGF6eSBiO1xuICAgIHJhaXNlIGVcblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV92YWxfYmxvY2sgYmxrID1cbiAgbGV0IGIgPSBPYmoucmVwciBibGsgaW5cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIGIgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoKSk7ICgqIFJlbGVhc2UgdGhlIGNsb3N1cmUgKilcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gIHJlc3VsdFxuXG4oKiBDYWxsZWQgYnkgW2ZvcmNlX2dlbl0gKilcbmxldCBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWwgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFdlIGV4cGVjdCB0aGUgdGFnIHRvIGJlIFtsYXp5X3RhZ10sIGJ1dCBtYXkgYmUgb3RoZXIgdGFncyBkdWUgdG9cbiAgICAgY29uY3VycmVudCBmb3JjaW5nIG9mIGxhenkgdmFsdWVzLiAqKVxuICBtYXRjaCB1cGRhdGVfdG9fZm9yY2luZyAoT2JqLnJlcHIgYmxrKSB3aXRoXG4gIHwgMCB3aGVuIG9ubHlfdmFsIC0+IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGtcbiAgfCAwIC0+IGRvX2ZvcmNlX2Jsb2NrIGJsa1xuICB8IF8gLT4gcmFpc2UgVW5kZWZpbmVkXG5cbigqIHVzZWQgaW4gdGhlICVsYXp5X2ZvcmNlIHByaW1pdGl2ZSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgYmxrID0gZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsOmZhbHNlIGJsa1xuXG4oKiBbZm9yY2VfZ2VuIH5vbmx5X3ZhbDpmYWxzZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpc1xuICAgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmUgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzXG4gICBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5sZXQgZm9yY2VfZ2VuIH5vbmx5X3ZhbCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXQgY291bGQgaGF2ZSBiZWVuXG4gICAgICAgc2hvcnRjdXQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSkuIFRoaXMgaXMgbm90IGFuIGlzc3VlIGhlcmUgYXQgdGhlIG1vbWVudCBzaW5jZVxuICAgICAgIFtPYmoudGFnXSBpcyBub3Qgc2ltcGxpZmllZCBieSB0aGUgY29tcGlsZXIsIGFuZCBHUFIjNzEzIGFsc29cbiAgICAgICBlbnN1cmVzIHRoYXQgbm8gdmFsdWUgd2lsbCBiZSBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgKCogU1RBUlQgbm8gc2FmZSBwb2ludHMuIElmIGEgR0Mgb2NjdXJzIGhlcmUsIHRoZW4gdGhlIG9iamVjdCBbeF0gbWF5IGJlXG4gICAgIHNob3J0LWNpcmN1aXRlZCwgYW5kIGdldHRpbmcgdGhlIGZpcnN0IGZpZWxkIG9mIFt4XSB3b3VsZCBnZXQgdXMgdGhlIHdyb25nXG4gICAgIHZhbHVlLiBMdWNraWx5LCB0aGUgY29tcGlsZXIgZG9lcyBub3QgaW5zZXJ0IEdDIHNhZmUgcG9pbnRzIGF0IHRoaXMgcGxhY2UsXG4gICAgIHNvIGl0IGlzIG9rLiAqKVxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW5cbiAgICAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKVxuICAoKiBFTkQgbm8gc2FmZSBwb2ludHMgKilcbiAgZWxzZSBpZiB0ID0gT2JqLmZvcmNpbmdfdGFnIHRoZW4gcmFpc2UgVW5kZWZpbmVkXG4gIGVsc2UgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWwgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcbmV4dGVybmFsIGZvcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgZm9yY2VfdmFsIGwgPSBDYW1saW50ZXJuYWxMYXp5LmZvcmNlX2dlbiB+b25seV92YWw6dHJ1ZSBsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8XG4gICAgIHQgPSBPYmouZm9yY2luZ190YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGZvbGRfbGVmdCBmIGFjYyBuZXh0XG5cbmxldCByZWMgaXRlciBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgaXRlciBmIG5leHRcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IE5pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBDb25zICh4LCB1bmZvbGQgZiB1JylcblxubGV0IGlzX2VtcHR5IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoXywgXykgLT5cbiAgICAgIGZhbHNlXG5cbmxldCB1bmNvbnMgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIFNvbWUgKHgsIHhzKVxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuXG5cblxubGV0IHJlYyBsZW5ndGhfYXV4IGFjY3UgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxlbmd0aF9hdXggKGFjY3UgKyAxKSB4c1xuXG5sZXRbQGlubGluZV0gbGVuZ3RoIHhzID1cbiAgbGVuZ3RoX2F1eCAwIHhzXG5cbmxldCByZWMgaXRlcmlfYXV4IGYgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGYgaSB4O1xuICAgICAgaXRlcmlfYXV4IGYgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGl0ZXJpIGYgeHMgPVxuICBpdGVyaV9hdXggZiAwIHhzXG5cbmxldCByZWMgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGkgeCBpblxuICAgICAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBmb2xkX2xlZnRpIGYgYWNjdSB4cyA9XG4gIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAwIHhzXG5cbmxldCByZWMgZm9yX2FsbCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggJiYgZm9yX2FsbCBwIHhzXG5cbmxldCByZWMgZXhpc3RzIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggfHwgZXhpc3RzIHAgeHNcblxubGV0IHJlYyBmaW5kIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmQgcCB4c1xuXG5sZXQgcmVjIGZpbmRfbWFwIGYgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBmaW5kX21hcCBmIHhzXG4gICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXN1bHRcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldCByZWMgaW5pdF90YWlscmVjX2F1eCBhY2MgaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBhY2NcbiAgZWxzZSBpbml0X3RhaWxyZWNfYXV4IChmIGkgOjogYWNjKSAoaSsxKSBuIGZcblxubGV0IHJlYyBpbml0X2F1eCBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgciA9IGYgaSBpblxuICAgIHIgOjogaW5pdF9hdXggKGkrMSkgbiBmXG5cbmxldCByZXZfaW5pdF90aHJlc2hvbGQgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDEwXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzXG4gICAgIHNtYWxsLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpZiBsZW4gPiByZXZfaW5pdF90aHJlc2hvbGQgdGhlbiByZXYgKGluaXRfdGFpbHJlY19hdXggW10gMCBsZW4gZilcbiAgZWxzZSBpbml0X2F1eCAwIGxlbiBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBhIGluIHIgOjogbWFwIGYgbFxuXG5sZXQgcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGkgYSBpbiByIDo6IG1hcGkgKGkgKyAxKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXQgcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gbGV0IHIgPSBmIGExIGEyIGluIHIgOjogbWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9hbGwgcCA9XG4gIGxldCByZWMgZmluZCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjdVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBmaW5kICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIGFjY3UgbCBpblxuICBmaW5kIFtdXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXQgZmlsdGVyaSBwIGwgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY1xuICB8IHg6OmwgLT4gYXV4IChpICsgMSkgKGlmIHAgaSB4IHRoZW4geDo6YWNjIGVsc2UgYWNjKSBsXG4gIGluXG4gIGF1eCAwIFtdIGxcblxubGV0IGZpbHRlcl9tYXAgZiA9XG4gIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGFjY3UgbFxuICAgICAgICB8IFNvbWUgdiAtPiBhdXggKHYgOjogYWNjdSkgbFxuICBpblxuICBhdXggW11cblxubGV0IGNvbmNhdF9tYXAgZiBsID1cbiAgbGV0IHJlYyBhdXggZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgbGV0IHhzID0gZiB4IGluXG4gICAgICAgYXV4IGYgKHJldl9hcHBlbmQgeHMgYWNjKSBsXG4gIGluIGF1eCBmIFtdIGxcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSBsaXN0IG9mIGxlbmd0aCBiZXR3ZWVuIGFib3V0IDEwMDAwMCAoZGVwZW5kaW5nIG9uIHRoZSBtaW5vclxuICAgaGVhcCBzaXplIGFuZCB0aGUgdHlwZSBvZiB0aGUgbGlzdCkgYW5kIFN5cy5tYXhfYXJyYXlfc2l6ZSwgaXQgaXNcbiAgIGFjdHVhbGx5IGZhc3RlciB0byB1c2UgdGhlIGZvbGxvd2luZywgYnV0IGl0IG1pZ2h0IGFsc28gdXNlIG1vcmUgbWVtb3J5XG4gICBiZWNhdXNlIHRoZSBhcmd1bWVudCBsaXN0IGNhbm5vdCBiZSBkZWFsbG9jYXRlZCBpbmNyZW1lbnRhbGx5LlxuXG4gICBBbHNvLCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBpbiB0aGlzIGNvZGUgb3IgaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBvYmpfdHJ1bmNhdGUuXG5cbmV4dGVybmFsIG9ial90cnVuY2F0ZSA6ICdhIGFycmF5IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5cbmxldCBhcnJheV90b19saXN0X2luX3BsYWNlIGEgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBhY2N1IG4gcCA9XG4gICAgaWYgcCA8PSAwIHRoZW4gYWNjdSBlbHNlIGJlZ2luXG4gICAgICBpZiBwID0gbiB0aGVuIGJlZ2luXG4gICAgICAgIG9ial90cnVuY2F0ZSBhIHA7XG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgKG4tMTAwMCkgKHAtMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxvb3AgKGEuKHAtMSkgOjogYWNjdSkgbiAocC0xKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgW10gKGwtMTAwMCkgbFxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gIEFycmF5LnN0YWJsZV9zb3J0IGNtcCBhO1xuICBhcnJheV90b19saXN0X2luX3BsYWNlIGFcblxuKilcblxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCB1bnNhZmVfZXNjYXBlIHMgPVxuICAoKiBXZSBwZXJmb3JtIHR3byBwYXNzZXMgb24gdGhlIGlucHV0IHNlcXVlbmNlLCBvbmUgdG8gY29tcHV0ZSB0aGVcbiAgICAgcmVzdWx0IHNpemUgYW5kIG9uZSB0byB3cml0ZSB0aGUgcmVzdWx0LlxuXG4gICAgICMxMTUwOCwgIzExNTA5OiBUaGlzIGxvZ2ljIHdvdWxkIGJlIGluY29ycmVjdCBpbiBwcmVzZW5jZSBvZlxuICAgICBjb25jdXJyZW50IG1vZGlmaWNhdGlvbiB0byB0aGUgaW5wdXQsIG1ha2luZyB0aGUgdXNlIG9mXG4gICAgIFt1bnNhZmVfc2V0XSBiZWxvdyBtZW1vcnktdW5zYWZlLlxuXG4gICAgIFByZWNvbmRpdGlvbjogVGhpcyBmdW5jdGlvbiBtYXkgYmUgc2FmZWx5IGNhbGxlZCBvbjpcbiAgICAgLSBhbiBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZVxuICAgICAtIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSAodGhlIGZ1bmN0aW9uIHRha2VzIG93bmVyc2hpcClcblxuICAgICBJbiBlaXRoZXIgY2FzZSB3ZSByZXR1cm4gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlLlxuICAqKVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIHNcbiAgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBlc2NhcGVkIGIgPVxuICBsZXQgYiA9IGNvcHkgYiBpblxuICAoKiBXZSBjb3B5IG91ciBpbnB1dCB0byBvYnRhaW4gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlIFtiXVxuICAgICB0byBzYXRpc2Z5IFt1bnNhZmVfZXNjYXBlXSdzIHByZWNvbmRpdGlvbiAqKVxuICB1bnNhZmVfZXNjYXBlIGJcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG4gIGVsc2Ugc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHggZWxzZVxuICB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcblxuKCogVVRGIGNvZGVjcyBhbmQgdmFsaWRhdGlvbnMgKilcblxubGV0IGRlY19pbnZhbGlkID0gVWNoYXIudXRmX2RlY29kZV9pbnZhbGlkXG5sZXRbQGlubGluZV0gZGVjX3JldCBuIHUgPSBVY2hhci51dGZfZGVjb2RlIG4gKFVjaGFyLnVuc2FmZV9vZl9pbnQgdSlcblxuKCogSW4gY2FzZSBvZiBkZWNvZGluZyBlcnJvciwgaWYgd2UgZXJyb3Igb24gdGhlIGZpcnN0IGJ5dGUsIHdlXG4gICBjb25zdW1lIHRoZSBieXRlLCBvdGhlcndpc2Ugd2UgY29uc3VtZSB0aGUgW25dIGJ5dGVzIHByZWNlZGluZ1xuICAgdGhlIGVycm9yaW5nIGJ5dGUuXG5cbiAgIFRoaXMgbWVhbnMgdGhhdCBpZiBhIGNsaWVudCB1c2VzIGRlY29kZXMgd2l0aG91dCBjYXJpbmcgYWJvdXRcbiAgIHZhbGlkaXR5IGl0IG5hdHVyYWxseSByZXBsYWNlIGJvZ3VzIGRhdGEgd2l0aCBVY2hhci5yZXAgYWNjb3JkaW5nXG4gICB0byB0aGUgV0hBVFdHIEVuY29kaW5nIHN0YW5kYXJkLiBPdGhlciBzY2hlbWVzIGFyZSBwb3NzaWJsZSBieVxuICAgY29uc3VsdGluZyB0aGUgbnVtYmVyIG9mIHVzZWQgYnl0ZXMgb24gaW52YWxpZCBkZWNvZGVzLiBGb3IgbW9yZVxuICAgZGV0YWlscyBzZWUgaHR0cHM6Ly9oc2l2b25lbi5maS9icm9rZW4tdXRmLTgvXG5cbiAgIEZvciB0aGlzIHJlYXNvbiBpbiBbZ2V0X3V0Zl84X3VjaGFyXSB3ZSBncmFkdWFsbHkgY2hlY2sgdGhlIG5leHRcbiAgIGJ5dGUgaXMgYXZhaWxhYmxlIHJhdGhlciB0aGFuIGRvaW5nIGl0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxuICAgZmlyc3QgYnl0ZS4gQ29udHJhc3Qgd2l0aCBbaXNfdmFsaWRfdXRmXzhdLiAqKVxuXG4oKiBVVEYtOCAqKVxuXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194QkYgYiA9IGIgbHNyIDYgPD4gMGIxMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94QTBfdG9feEJGIGIgPSBiIGxzciA1IDw+IDBiMTAxXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OUYgYiA9IGIgbHNyIDUgPD4gMGIxMDBcbmxldFtAaW5saW5lXSBub3RfaW5feDkwX3RvX3hCRiBiID0gYiA8IDB4OTAgfHwgMHhCRiA8IGJcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g4RiBiID0gYiBsc3IgNCA8PiAweDhcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzIgYjAgYjEgPVxuICAoKGIwIGxhbmQgMHgxRikgbHNsIDYpIGxvclxuICAoKGIxIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8zIGIwIGIxIGIyID1cbiAgKChiMCBsYW5kIDB4MEYpIGxzbCAxMikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMgPVxuICAoKGIwIGxhbmQgMHgwNykgbHNsIDE4KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCAxMikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjMgbGFuZCAweDNGKSlcblxubGV0IGdldF91dGZfOF91Y2hhciBiIGkgPVxuICBsZXQgYjAgPSBnZXRfdWludDggYiBpIGluICgqIHJhaXNlcyBpZiBbaV0gaXMgbm90IGEgdmFsaWQgaW5kZXguICopXG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIGIwIHdpdGggKCogU2VlIFRoZSBVbmljb2RlIFN0YW5kYXJkLCBUYWJsZSAzLjcgKilcbiAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gZGVjX3JldCAxIGIwXG4gIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGRlY19yZXQgMiAodXRmXzhfdWNoYXJfMiBiMCBiMSlcbiAgfCAnXFx4RTAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3hBMF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RUQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OUYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhGMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDkwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OEYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgXyAtPiBkZWNfaW52YWxpZCAxXG5cbmxldCBzZXRfdXRmXzhfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgICBzZXRfdWludDggYiBpIHU7XG4gICAgICAxXG4gIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhDMCBsb3IgKHUgbHNyIDYpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAyKVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RTAgbG9yICh1IGxzciAxMikpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMylcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RjAgbG9yICh1IGxzciAxOCkpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIChpICsgMikgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgNClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzggYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgKGdldCBiIGkpIHdpdGhcbiAgICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBsb29wIG1heCBiIChpICsgMSlcbiAgICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94QTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFRCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDlGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g5MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g4RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkJFICopXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2YmVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkxFICopXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2bGVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IGIgPSBib3MgcyBpblxuICAoKiBXZSBzYXRpc2Z5IFt1bnNhZmVfZXNjYXBlXSdzIHByZWNvbmRpdGlvbiBieSBwYXNzaW5nIGFuXG4gICAgIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlIFtiXS4gKilcbiAgYnRzIChCLnVuc2FmZV9lc2NhcGUgYilcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+IGludCAtPiBmbG9hdCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IGFwcGVuZCBhMSBhMiA9XG4gICAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gICAgbGV0IGwyID0gbGVuZ3RoIGEyIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgICB1bnNhZmVfYmxpdCBhMSAwIHJlc3VsdCAwIGwxO1xuICAgIHVuc2FmZV9ibGl0IGEyIDAgcmVzdWx0IGwxIGwyO1xuICAgIHJlc3VsdFxuXG4gICgqIG5leHQgMyBmdW5jdGlvbnM6IG1vZGlmaWVkIGNvcHkgb2YgY29kZSBmcm9tIHN0cmluZy5tbCAqKVxuICBsZXQgZW5zdXJlX2dlICh4OmludCkgeSA9XG4gICAgaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuY29uY2F0XCJcblxuICBsZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIGFjYykgYWNjKSB0bFxuXG4gIGxldCBjb25jYXQgbCA9XG4gICAgbGV0IGxlbiA9IHN1bV9sZW5ndGhzIDAgbCBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGwgaSA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gbGVuKVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQgaGxlbiA9IGxlbmd0aCBoZCBpblxuICAgICAgICB1bnNhZmVfYmxpdCBoZCAwIHJlc3VsdCBpIGhsZW47XG4gICAgICAgIGxvb3AgdGwgKGkgKyBobGVuKVxuICAgIGluXG4gICAgbG9vcCBsIDA7XG4gICAgcmVzdWx0XG5cbiAgbGV0IHN1YiBhIG9mcyBsZW4gPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LnN1YlwiO1xuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgYSBvZnMgcmVzdWx0IDAgbGVuO1xuICAgIHJlc3VsdFxuXG4gIGxldCBjb3B5IGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGwgaW5cbiAgICB1bnNhZmVfYmxpdCBhIDAgcmVzdWx0IDAgbDtcbiAgICByZXN1bHRcblxuICBsZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuZmlsbFwiO1xuICAgIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbiAgbGV0IGJsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuID1cbiAgICBjaGVjayBzcmMgc29mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgY2hlY2sgZHN0IGRvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIHVuc2FmZV9ibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlblxuXG4gIGxldCB0b19saXN0IGEgPVxuICAgIExpc3QuaW5pdCAobGVuZ3RoIGEpICh1bnNhZmVfZ2V0IGEpXG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiByZXN1bHRcbiAgICAgIHwgaCA6OiB0IC0+IHVuc2FmZV9zZXQgcmVzdWx0IGkgaDsgZmlsbCAoaSArIDEpIHRcbiAgICBpblxuICAgIGZpbGwgMCBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcjIgZiBhIGIgPVxuICAgIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgbWFwOiAoZWx0IC0+IGVsdCkgLT4gdCAtPiB0XG4gICAgdmFsIGZvbGQ6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICAgIHZhbCBmaW5kOiBlbHQgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9vcHQ6IGVsdCAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06ICBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBjb3B5ID1cbiAgbGV0IHJlYyBjb3B5IHFfcmVzIHByZXYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gcV9yZXMubGFzdCA8LSBwcmV2OyBxX3Jlc1xuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IHJlcyA9IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gaW5cbiAgICAgIGJlZ2luIG1hdGNoIHByZXYgd2l0aFxuICAgICAgfCBOaWwgLT4gcV9yZXMuZmlyc3QgPC0gcmVzXG4gICAgICB8IENvbnMgcCAtPiBwLm5leHQgPC0gcmVzXG4gICAgICBlbmQ7XG4gICAgICBjb3B5IHFfcmVzIHJlcyBuZXh0XG4gIGluXG4gIGZ1biBxIC0+IGNvcHkgeyBsZW5ndGggPSBxLmxlbmd0aDsgZmlyc3QgPSBOaWw7IGxhc3QgPSBOaWwgfSBOaWwgcS5maXJzdFxuXG5sZXQgaXNfZW1wdHkgcSA9XG4gIHEubGVuZ3RoID0gMFxuXG5sZXQgbGVuZ3RoIHEgPVxuICBxLmxlbmd0aFxuXG5sZXQgaXRlciA9XG4gIGxldCByZWMgaXRlciBmIGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBmIGNvbnRlbnQ7XG4gICAgICBpdGVyIGYgbmV4dFxuICBpblxuICBmdW4gZiBxIC0+IGl0ZXIgZiBxLmZpcnN0XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBmb2xkIGYgYWNjdSBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBhY2N1XG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBjb250ZW50IGluXG4gICAgICBmb2xkIGYgYWNjdSBuZXh0XG4gIGluXG4gIGZ1biBmIGFjY3UgcSAtPiBmb2xkIGYgYWNjdSBxLmZpcnN0XG5cbmxldCB0cmFuc2ZlciBxMSBxMiA9XG4gIGlmIHExLmxlbmd0aCA+IDAgdGhlblxuICAgIG1hdGNoIHEyLmxhc3Qgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTEubGVuZ3RoO1xuICAgICAgcTIuZmlyc3QgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuICAgIHwgQ29ucyBsYXN0IC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTIubGVuZ3RoICsgcTEubGVuZ3RoO1xuICAgICAgbGFzdC5uZXh0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBxID1cbiAgbGV0IHJlYyBhdXggYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgIHwgTmlsIC0+IFNlcS5OaWxcbiAgICB8IENvbnMgeyBjb250ZW50PXg7IG5leHQ7IH0gLT4gU2VxLkNvbnMgKHgsIGF1eCBuZXh0KVxuICBpblxuICBhdXggcS5maXJzdFxuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHEgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHEgZztcbiAgcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxuKCogVGhlIFtpbm5lcl9idWZmZXJdIHR5cGUgZW5zdXJlcyB0aGF0IHRoZSBbbGVuZ3RoXSBhbmQgW2J1ZmZlcl0gZmllbGRzIGFyZVxuICAgYWx3YXlzIHN5bmNocm9uaXplZCwgW2xlbmd0aCA9IEJ5dGVzLmxlbmd0aCBidWZmZXJdLCBldmVuIGluIHByZXNlbmNlXG4gICBvZiBkYXRhIHJhY2VzLlxuKilcbnR5cGUgaW5uZXJfYnVmZmVyID0ge1xuICBidWZmZXI6IGJ5dGVzO1xuICBsZW5ndGg6IGludDtcbn1cblxudHlwZSB0ID1cbiB7bXV0YWJsZSBpbm5lciA6IGlubmVyX2J1ZmZlcjtcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbaW5uZXIubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGlubmVyLmJ1ZmZlcl1cbiAgIEluIGFic2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgYWxzbyBoYXZlXG4gICAtIFswIDw9IGIucG9zaXRpb24gPD0gYi5pbm5lci5sZW5ndGhdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5pbm5lci5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4geyBpbm5lciA9IHsgYnVmZmVyID0gczsgbGVuZ3RoID0gbn07IHBvc2l0aW9uID0gMDsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMuYmxpdCBzcmMuaW5uZXIuYnVmZmVyIHNyY29mZiBkc3QgZHN0b2ZmIGxlblxuXG5cbmxldCBudGggYiBvZnMgPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IHBvc2l0aW9uIHx8IHBvc2l0aW9uID4gbGVuZ3RoIHRoZW5cbiAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2UgQnl0ZXMudW5zYWZlX2dldCBidWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgbGV0IGlubmVyID1cbiAgICB7IGJ1ZmZlciA9IGIuaW5pdGlhbF9idWZmZXI7IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBiLmluaXRpYWxfYnVmZmVyIH1cbiAgaW5cbiAgYi5pbm5lciA8LSBpbm5lclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmlubmVyLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5pbm5lcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmlubmVyLmxlbmd0aF0uXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmlubmVyLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5pbm5lci5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5pbm5lciA8LSB7IGJ1ZmZlciA9IG5ld19idWZmZXI7IGxlbmd0aCA9ICFuZXdfbGVuIH1cblxuKCogTm90ZTpcbiAgICBTb21lIG9mIHRoZSBmdW5jdGlvbnMgYmVsb3cgaGF2ZSBhIGZhc3QgcGF0aCB3aGVuIHRoZSBpbm5lclxuICBidWZmZXIgZG9lc24ndCBuZWVkIHRvIGJlIGV4dGVuZGVkLlxuICAgIEluIHRoaXMgY2FzZSwgaXQgaXMgcG9zc2libGUgdG8gdXNlIHVuc2FmZSBhY2Nlc3NlcyBvbiB0aGVcbiAgY29udGVudHMgb2YgdGhlIFtpbm5lcl0gZmllbGQgc2luY2UgaXRzIGZpZWxkcyBhcmUgaW1tdXRhYmxlLlxuICBJbiBwcmVzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBtYXkgYWNjZXNzIHRoZSB3cm9uZyBpbm5lciBidWZmZXIsIGJ1dCB3ZVxuICB3aWxsIHVzZSB0aGlzIGJ1ZmZlciBzYWZlbHkuXG4gIEFzIHNvb24gYXMgd2UgbmVlZCB0byByZXNpemUgdGhlIGJ1ZmZlciwgd2UgZmFsbCBiYWNrIHRvIHNhZmUgYWNjZXNzZXMuXG4qKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgcG9zID49IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIEJ5dGVzLnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGNcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX3NldCBidWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG5sZXQgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4ID0gNFxubGV0IHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXggPSA0XG5cbmxldCByZWMgYWRkX3V0Zl84X3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzhfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzhfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmJlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZiZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2bGVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyOyBsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgMCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgQ29sbMOoZ2UgZGUgRnJhbmNlIGFuZCBJTlJJQSBQYXJpcyAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBTZW1hcGhvcmVzICopXG5cbnR5cGUgc2VtID0ge1xuICBtdXQ6IE11dGV4LnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICgqIHByb3RlY3RzIFt2XSAqKVxuICBtdXRhYmxlIHY6IGludDsgICAgICAgICAgICAgICAgICAgICAgICgqIHRoZSBjdXJyZW50IHZhbHVlICopXG4gIG5vbnplcm86IENvbmRpdGlvbi50ICAgICAgICAgICAgICAgICAgKCogc2lnbmFsZWQgd2hlbiBbdiA+IDBdICopXG59XG5cbm1vZHVsZSBDb3VudGluZyA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgdiA9XG4gIGlmIHYgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZW1hcGhvcmUuQ291bnRpbmcuaW5pdDogd3JvbmcgaW5pdGlhbCB2YWx1ZVwiO1xuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpOyB2OyBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGlmIHMudiA8IG1heF9pbnQgdGhlbiBiZWdpblxuICAgIHMudiA8LSBzLnYgKyAxO1xuICAgIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICAgIE11dGV4LnVubG9jayBzLm11dFxuICBlbmQgZWxzZSBiZWdpblxuICAgIE11dGV4LnVubG9jayBzLm11dDtcbiAgICByYWlzZSAoU3lzX2Vycm9yIFwiU2VtYXBob3JlLkNvdW50aW5nLnJlbGVhc2U6IG92ZXJmbG93XCIpXG4gIGVuZFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIHMudiAtIDE7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIHMudiAtIDE7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmxldCBnZXRfdmFsdWUgcyA9IHMudlxuXG5lbmRcblxubW9kdWxlIEJpbmFyeSA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgYiA9XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7XG4gICAgdiA9IGlmIGIgdGhlbiAxIGVsc2UgMDtcbiAgICBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHMudiA8LSAxO1xuICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gMDtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gMDsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBUb20gS2VsbHksIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgTHRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgKCogTG93LWxldmVsIHByaW1pdGl2ZXMgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgKilcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgZXh0ZXJuYWwgc3Bhd24gOiAodW5pdCAtPiB1bml0KSAtPiBNdXRleC50IC0+IHRcbiAgICA9IFwiY2FtbF9kb21haW5fc3Bhd25cIlxuICBleHRlcm5hbCBzZWxmIDogdW5pdCAtPiB0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2lkXCJcbiAgZXh0ZXJuYWwgY3B1X3JlbGF4IDogdW5pdCAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFwiXG4gIGV4dGVybmFsIGdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQ6IHVuaXQgLT4gaW50XG4gICAgPSBcImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XCIgW0BAbm9hbGxvY11cbmVuZFxuXG5sZXQgY3B1X3JlbGF4ICgpID0gUmF3LmNwdV9yZWxheCAoKVxuXG50eXBlIGlkID0gUmF3LnRcblxudHlwZSAnYSBzdGF0ZSA9XG58IFJ1bm5pbmdcbnwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX211dGV4OiBNdXRleC50O1xuICB0ZXJtX2NvbmRpdGlvbjogQ29uZGl0aW9uLnQ7XG4gIHRlcm1fc3RhdGU6ICdhIHN0YXRlIHJlZiAoKiBwcm90ZWN0ZWQgYnkgW3Rlcm1fbXV0ZXhdICopXG59XG5cbm1vZHVsZSBETFMgPSBzdHJ1Y3RcblxuICB0eXBlIGRsc19zdGF0ZSA9IE9iai50IGFycmF5XG5cbiAgbGV0IHVuaXF1ZV92YWx1ZSA9IE9iai5yZXByIChyZWYgMClcblxuICBleHRlcm5hbCBnZXRfZGxzX3N0YXRlIDogdW5pdCAtPiBkbHNfc3RhdGUgPSBcIiVkbHNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXRfZGxzX3N0YXRlIDogZGxzX3N0YXRlIC0+IHVuaXQgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCB1bmlxdWVfdmFsdWUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IG1heWJlX2dyb3cgaWR4ID1cbiAgICBsZXQgc3QgPSBnZXRfZGxzX3N0YXRlICgpIGluXG4gICAgbGV0IHN6ID0gQXJyYXkubGVuZ3RoIHN0IGluXG4gICAgaWYgaWR4IDwgc3ogdGhlbiBzdFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgY29tcHV0ZV9uZXdfc2l6ZSBzID1cbiAgICAgICAgaWYgaWR4IDwgcyB0aGVuIHMgZWxzZSBjb21wdXRlX25ld19zaXplICgyICogcylcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N6ID0gY29tcHV0ZV9uZXdfc2l6ZSBzeiBpblxuICAgICAgbGV0IG5ld19zdCA9IEFycmF5Lm1ha2UgbmV3X3N6IHVuaXF1ZV92YWx1ZSBpblxuICAgICAgQXJyYXkuYmxpdCBzdCAwIG5ld19zdCAwIHN6O1xuICAgICAgc2V0X2Rsc19zdGF0ZSBuZXdfc3Q7XG4gICAgICBuZXdfc3RcbiAgICBlbmRcblxuICBsZXQgc2V0IChpZHgsIF9pbml0KSB4ID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgICgqIFtTeXMub3BhcXVlX2lkZW50aXR5XSBlbnN1cmVzIHRoYXQgZmxhbWJkYSBkb2VzIG5vdCBsb29rIGF0IHRoZSB0eXBlIG9mXG4gICAgICogW3hdLCB3aGljaCBtYXkgYmUgYSBbZmxvYXRdIGFuZCBjb25jbHVkZSB0aGF0IHRoZSBbc3RdIGlzIGEgZmxvYXQgYXJyYXkuXG4gICAgICogV2UgZG8gbm90IHdhbnQgT0NhbWwncyBmbG9hdCBhcnJheSBvcHRpbWlzYXRpb24ga2lja2luZyBpbiBoZXJlLiAqKVxuICAgIHN0LihpZHgpIDwtIE9iai5yZXByIChTeXMub3BhcXVlX2lkZW50aXR5IHgpXG5cbiAgbGV0IGdldCAoaWR4LCBpbml0KSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICBsZXQgdiA9IHN0LihpZHgpIGluXG4gICAgaWYgdiA9PSB1bmlxdWVfdmFsdWUgdGhlblxuICAgICAgbGV0IHYnID0gT2JqLnJlcHIgKGluaXQgKCkpIGluXG4gICAgICBzdC4oaWR4KSA8LSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2Jyk7XG4gICAgICBPYmoubWFnaWMgdidcbiAgICBlbHNlIE9iai5tYWdpYyB2XG5cbiAgbGV0IGdldF9pbml0aWFsX2tleXMgKCkgOiAoaW50ICogT2JqLnQpIGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChLSSAoKGlkeCwgXykgYXMgaywgc3BsaXQpKSAtPlxuICAgICAgICAgICAoaWR4LCBPYmoucmVwciAoc3BsaXQgKGdldCBrKSkpKVxuICAgICAgKEF0b21pYy5nZXQgcGFyZW50X2tleXMpXG5cbiAgbGV0IHNldF9pbml0aWFsX2tleXMgKGw6IChpbnQgKiBPYmoudCkgbGlzdCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaWR4LCB2KSAtPlxuICAgICAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpbiBzdC4oaWR4KSA8LSB2KVxuICAgICAgbFxuXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbigqKioqKioqKiBDYWxsYmFja3MgKioqKioqKioqKilcblxuKCogZmlyc3Qgc3Bhd24sIGRvbWFpbiBzdGFydHVwIGFuZCBhdCBleGl0IGZ1bmN0aW9uYWxpdHkgKilcbmxldCBmaXJzdF9kb21haW5fc3Bhd25lZCA9IEF0b21pYy5tYWtlIGZhbHNlXG5cbmxldCBmaXJzdF9zcGF3bl9mdW5jdGlvbiA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgYmVmb3JlX2ZpcnN0X3NwYXduIGYgPVxuICBpZiBBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpcnN0IGRvbWFpbiBhbHJlYWR5IHNwYXduZWRcIilcbiAgZWxzZSBiZWdpblxuICAgIGxldCBvbGRfZiA9ICFmaXJzdF9zcGF3bl9mdW5jdGlvbiBpblxuICAgIGxldCBuZXdfZiAoKSA9IG9sZF9mICgpOyBmICgpIGluXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gbmV3X2ZcbiAgZW5kXG5cbmxldCBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCkgPVxuICBpZiBub3QgKEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQpIHRoZW4gYmVnaW5cbiAgICBBdG9taWMuc2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRydWU7XG4gICAgIWZpcnN0X3NwYXduX2Z1bmN0aW9uKCk7XG4gICAgKCogUmVsZWFzZSB0aGUgb2xkIGZ1bmN0aW9uICopXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gKGZ1biAoKSAtPiAoKSlcbiAgZW5kXG5cbmxldCBhdF9leGl0X2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBhdF9leGl0IGYgPVxuICBsZXQgb2xkX2V4aXQgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgKCogVGhlIGRvbWFpbiB0ZXJtaW5hdGlvbiBjYWxsYmFja3MgKFthdF9leGl0XSkgYXJlIHJ1biBpblxuICAgICAgIGxhc3QtaW4tZmlyc3Qtb3V0IChMSUZPKSBvcmRlciBpbiBvcmRlciB0byBiZSBzeW1tZXRyaWMgd2l0aCB0aGUgZG9tYWluXG4gICAgICAgY3JlYXRpb24gY2FsbGJhY2tzIChbYXRfZWFjaF9zcGF3bl0pIHdoaWNoIHJ1biBpbiBmaXJzdC1pbi1maXNydC1vdXRcbiAgICAgICAoRklGTykgb3JkZXIuICopXG4gICAgZiAoKTsgb2xkX2V4aXQgKClcbiAgaW5cbiAgRExTLnNldCBhdF9leGl0X2tleSBuZXdfZXhpdFxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gIGxldCBmIDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBmICgpXG5cbmxldCBfID0gU3RkbGliLmRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IDo9IGRvX2F0X2V4aXRcblxuKCoqKioqKiogQ3JlYXRpb24gYW5kIFRlcm1pbmF0aW9uICoqKioqKioqKVxuXG5sZXQgc3Bhd24gZiA9XG4gIGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKTtcbiAgbGV0IHBrID0gRExTLmdldF9pbml0aWFsX2tleXMgKCkgaW5cblxuICAoKiBUaGUgW3Rlcm1fbXV0ZXhdIGFuZCBbdGVybV9jb25kaXRpb25dIGFyZSB1c2VkIHRvXG4gICAgIHN5bmNocm9uaXplIHdpdGggdGhlIGpvaW5pbmcgZG9tYWlucyAqKVxuICBsZXQgdGVybV9tdXRleCA9IE11dGV4LmNyZWF0ZSAoKSBpblxuICBsZXQgdGVybV9jb25kaXRpb24gPSBDb25kaXRpb24uY3JlYXRlICgpIGluXG4gIGxldCB0ZXJtX3N0YXRlID0gcmVmIFJ1bm5pbmcgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaFxuICAgICAgICBETFMuY3JlYXRlX2RscyAoKTtcbiAgICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICAgIGxldCByZXMgPSBmICgpIGluXG4gICAgICAgIHJlc1xuICAgICAgd2l0aFxuICAgICAgfCB4IC0+IE9rIHhcbiAgICAgIHwgZXhjZXB0aW9uIGV4IC0+IEVycm9yIGV4XG4gICAgaW5cblxuICAgIGxldCByZXN1bHQnID1cbiAgICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgICB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGV4Y2VwdGlvbmFsbHkuICopXG4gICAgICBtYXRjaCBkb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgKCkgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBleCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBfIC0+XG4gICAgICAgICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgIEVycm9yIGV4XG4gICAgICAgICAgfCBFcnJvciBfIC0+XG4gICAgICAgICAgICAgICgqIElmIGJvdGggdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBhbmQgdGhlIFthdF9leGl0XSBjYWxsYmFja3NcbiAgICAgICAgICAgICAgICAgcmFpc2VkIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgIGVuZFxuICAgIGluXG5cbiAgICAoKiBTeW5jaHJvbml6ZSB3aXRoIGpvaW5pbmcgZG9tYWlucyAqKVxuICAgIE11dGV4LmxvY2sgdGVybV9tdXRleDtcbiAgICBtYXRjaCAhdGVybV9zdGF0ZSB3aXRoXG4gICAgfCBSdW5uaW5nIC0+XG4gICAgICAgIHRlcm1fc3RhdGUgOj0gRmluaXNoZWQgcmVzdWx0JztcbiAgICAgICAgQ29uZGl0aW9uLmJyb2FkY2FzdCB0ZXJtX2NvbmRpdGlvbjtcbiAgICB8IEZpbmlzaGVkIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJpbnRlcm5hbCBlcnJvcjogQW0gSSBhbHJlYWR5IGZpbmlzaGVkP1wiXG4gICAgKCogW3Rlcm1fbXV0ZXhdIGlzIHVubG9ja2VkIGluIHRoZSBydW50aW1lIGFmdGVyIHRoZSBjbGVhbnVwIGZ1bmN0aW9ucyBvblxuICAgICAgIHRoZSBDIHNpZGUgYXJlIGZpbmlzaGVkLiAqKVxuICBpblxuICB7IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fbXV0ZXg7XG4gICAgdGVybV9tdXRleDtcbiAgICB0ZXJtX2NvbmRpdGlvbjtcbiAgICB0ZXJtX3N0YXRlIH1cblxubGV0IGpvaW4geyB0ZXJtX211dGV4OyB0ZXJtX2NvbmRpdGlvbjsgdGVybV9zdGF0ZTsgXyB9ID1cbiAgTXV0ZXgubG9jayB0ZXJtX211dGV4O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hdGNoICF0ZXJtX3N0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9jb25kaXRpb24gdGVybV9tdXRleDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIE11dGV4LnVubG9jayB0ZXJtX211dGV4O1xuICAgICAgICByZXNcbiAgaW5cbiAgbWF0Y2ggbG9vcCAoKSB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pbmVcbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdC4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHggPVxuICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgKChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKSwgTm9uZSlcbiAgZWxzZVxuICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgIChjb25zdHJ1Y3RvciwgU29tZSAoZmllbGRzIHgpKVxuXG5sZXQgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB0ID1cbiAgbGV0IGNvbnN0cnVjdG9yLCBmaWVsZHNfb3B0ID0gZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHQgaW5cbiAgbWF0Y2ggZmllbGRzX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBjb25zdHJ1Y3RvclxuICB8IFNvbWUgZiAtPiBjb25zdHJ1Y3RvciBeIGZcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgKE9iai5yZXByIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG50eXBlIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgICA6IHN0cmluZztcbiAgICAgIGxpbmVfbnVtYmVyIDogaW50O1xuICAgICAgc3RhcnRfY2hhciAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgICA6IGludDtcbiAgICAgIGlzX2lubGluZSAgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuKCogdG8gYXZvaWQgd2FybmluZyAqKVxubGV0IF8gPSBbS25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlOyBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gMDsgc3RhcnRfY2hhciA9IDA7IGVuZF9jaGFyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5saW5lID0gZmFsc2U7IGRlZm5hbWUgPSBcIlwiIH07XG4gICAgICAgICBVbmtub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZSB9XVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbC5saW5lX251bWJlciBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5saW5lX251bWJlcjtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgdmVyYm9zZSA6IGludDtcbiAgbWF4X292ZXJoZWFkIDogaW50O1xuICBzdGFja19saW1pdCA6IGludDtcbiAgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuXG5sZXQgZXZlbnRsb2dfcGF1c2UgKCkgPSAoKVxubGV0IGV2ZW50bG9nX3Jlc3VtZSAoKSA9ICgpXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCBBdG9taWMudFxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgQXRvbWljLmdldCBhcmVjLmFjdGl2ZSB0aGVuIGJlZ2luXG4gICAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICAgIGFyZWMuZiAoKTtcbiAgZW5kXG5cblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IEF0b21pYy5tYWtlIHRydWU7IGYgPSBmIH0gaW5cbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IEF0b21pYy5zZXQgYSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgICBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ2FtYml1bSwgQ29sbGVnZSBkZSBGcmFuY2UgYW5kIElucmlhICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIG9wZW4gQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgZXh0ZXJuYWwgbmV4dDogdCAtPiAoaW50NjRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbHhtX25leHRcIiBcImNhbWxfbHhtX25leHRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPVxuICAgIEFycmF5MS5jcmVhdGUgSW50NjQgQ19sYXlvdXQgNFxuXG4gIGxldCBzZXQgcyBpMSBpMiBpMyBpNCA9XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAwIChJbnQ2NC5sb2dvciBpMSAxTCk7ICgqIG11c3QgYmUgb2RkICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAxIGkyO1xuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMiAoaWYgaTMgPD4gMEwgdGhlbiBpMyBlbHNlIDFMKTsgKCogbXVzdCBub3QgYmUgMCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMyAoaWYgaTQgPD4gMEwgdGhlbiBpNCBlbHNlIDJMKSAoKiBtdXN0IG5vdCBiZSAwICopXG5cbiAgbGV0IG1rIGkxIGkyIGkzIGk0ID1cbiAgICBsZXQgcyA9IGNyZWF0ZSAoKSBpblxuICAgIHNldCBzIGkxIGkyIGkzIGk0OyBzXG5cbiAgbGV0IGFzc2lnbiAoZHN0OiB0KSAoc3JjOiB0KSA9XG4gICAgQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCBzJyA9IGNyZWF0ZSgpIGluIGFzc2lnbiBzJyBzOyBzJ1xuXG4gICgqIFRoZSBzZWVkIGlzIGFuIGFycmF5IG9mIGludGVnZXJzLiAgSXQgY2FuIGJlIGp1c3Qgb25lIGludGVnZXIsXG4gICAgIGJ1dCBpdCBjYW4gYWxzbyBiZSAxMiBvciBtb3JlIGJ5dGVzLiAgVG8gaGlkZSB0aGUgZGlmZmVyZW5jZSxcbiAgICAgd2Ugc2VyaWFsaXplIHRoZSBhcnJheSBhcyBhIHNlcXVlbmNlIG9mIGJ5dGVzLCB0aGVuIGhhc2ggdGhlXG4gICAgIHNlcXVlbmNlIHdpdGggTUQ1IChEaWdlc3QuYnl0ZXMpLiAgTUQ1IGdpdmVzIG9ubHkgMTI4IGJpdHMgd2hpbGVcbiAgICAgd2UgbmVlZCAyNTYgYml0cywgc28gd2UgaGFzaCB0d2ljZSB3aXRoIGRpZmZlcmVudCBzdWZmaXhlcy4gKilcbiAgbGV0IHJlaW5pdCBzIHNlZWQgPVxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSAobiAqIDggKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG9cbiAgICAgIEJ5dGVzLnNldF9pbnQ2NF9sZSBiIChpICogOCkgKEludDY0Lm9mX2ludCBzZWVkLihpKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnNldCBiIChuICogOCkgJ1xceDAxJztcbiAgICBsZXQgZDEgPSBEaWdlc3QuYnl0ZXMgYiBpblxuICAgIEJ5dGVzLnNldCBiIChuICogOCkgJ1xceDAyJztcbiAgICBsZXQgZDIgPSBEaWdlc3QuYnl0ZXMgYiBpblxuICAgIHNldCBzIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgOClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDgpXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHMgPSBjcmVhdGUoKSBpbiByZWluaXQgcyBzZWVkOyBzXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID1cbiAgICBtYWtlIChyYW5kb21fc2VlZCAoKSlcblxuICAoKiBSZXR1cm4gMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIDB4M0ZGRl9GRkZGXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKSAqKVxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IHJlYyBpbnQ2M2F1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludCBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gbWF4X2ludCAtIG4gKyAxIHRoZW4gaW50NjNhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBmdWxsX2ludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmZ1bGxfaW50XCJcbiAgICBlbHNlIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB0aGVuXG4gICAgICBpbnQ2M2F1eCBzIGJvdW5kXG4gICAgZWxzZVxuICAgICAgaW50YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gNjQgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDY0XSAqKVxuICBsZXQgYml0czY0IHMgPVxuICAgIG5leHQgc1xuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgciA9IEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJpdHM2NCBzKSAxIGluXG4gICAgbGV0IHYgPSBJbnQ2NC5yZW0gciBuIGluXG4gICAgaWYgSW50NjQuKHN1YiByIHYgPiBhZGQgKHN1YiBtYXhfaW50IG4pIDFMKVxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIDMyIG9yIDY0IHJhbmRvbSBiaXRzIGFzIGEgW25hdGl2ZWludF0gKilcbiAgbGV0IG5hdGl2ZWJpdHMgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoYml0czMyIHMpXG4gICAgZWxzZSBmdW4gcyAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGJpdHM2NCBzKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzY2FsZVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHMzMiAoKSA9IFN0YXRlLmJpdHMzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzNjQgKCkgPSBTdGF0ZS5iaXRzNjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgbmF0aXZlYml0cyAoKSA9IFN0YXRlLm5hdGl2ZWJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLnJlaW5pdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBTcGxpdHRpbmcgKilcblxubGV0IHNwbGl0ICgpID0gU3RhdGUuc3BsaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSlcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXJcbiAqICAgIC0gTGlua1xuICogICAgLSBEYXRhICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyICgqIENBTUxfRVBIRV9GSVJTVF9LRVkgaW4gd2Vhay5oICopXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2J5dGVzIHYgPSBwcF9wcmludF9ieXRlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ludCB2ID0gcHBfcHJpbnRfaW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfZmxvYXQgdiA9IHBwX3ByaW50X2Zsb2F0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfY2hhciB2ID0gcHBfcHJpbnRfY2hhciAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Jvb2wgdiA9IHBwX3ByaW50X2Jvb2wgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9icmVhayB2IHcgPSBwcF9wcmludF9icmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfY3V0IHYgPSBwcF9wcmludF9jdXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9zcGFjZSB2ID0gcHBfcHJpbnRfc3BhY2UgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBmb3JjZV9uZXdsaW5lIHYgPSBwcF9mb3JjZV9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfZmx1c2ggdiA9IHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfbmV3bGluZSB2ID0gcHBfcHJpbnRfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2lmX25ld2xpbmUgdiA9IHBwX3ByaW50X2lmX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIG9wZW5fdGJveCB2ID0gcHBfb3Blbl90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfdGJveCB2ID0gcHBfY2xvc2VfdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3RicmVhayB2IHcgPSBwcF9wcmludF90YnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuXG5hbmQgc2V0X3RhYiB2ID0gcHBfc2V0X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3RhYiB2ID0gcHBfcHJpbnRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWFyZ2luIHYgPSBwcF9zZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmdpbiB2ID0gcHBfZ2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9pbmRlbnQgdiA9IHBwX3NldF9tYXhfaW5kZW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9pbmRlbnQgdiA9IHBwX2dldF9tYXhfaW5kZW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgfm1heF9pbmRlbnQgfm1hcmdpblxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zYWZlX3NldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgfm1heF9pbmRlbnQgfm1hcmdpblxuYW5kIGdldF9nZW9tZXRyeSB2ID0gcHBfZ2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgdXBkYXRlX2dlb21ldHJ5IHYgPSBwcF91cGRhdGVfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfYm94ZXMgdiA9IHBwX3NldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2JveGVzIHYgPSBwcF9nZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Zlcl9tYXhfYm94ZXMgdiA9IHBwX292ZXJfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCB2ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCB2ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyB2IHcgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF9wcmludF90YWdzIHYgPVxuICBwcF9zZXRfcHJpbnRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9wcmludF90YWdzIHYgPVxuICBwcF9nZXRfcHJpbnRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX3NldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFya190YWdzIHYgPVxuICBwcF9nZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3RhZ3MgdiA9XG4gIHBwX3NldF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2Vfc3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5cbmxldCBwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZXByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG5sZXQgKCkgPSBEb21haW4uYmVmb3JlX2ZpcnN0X3NwYXduIChmdW4gKCkgLT5cbiAgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKTtcbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleX07XG5cbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleX07XG4pXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGluXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lcl9vcHQgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2Qgb3B0aW9uLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbmxldCBrc2NhbmZfZ2VuIGliIGVmIGFmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlIGFzIGV4YykgLT5cbiAgICAgICAgZWYgaWIgZXhjXG4gICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB8IGFyZ3MgLT5cbiAgICAgICAgYWYgKGFwcGx5IGYgYXJncylcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG5sZXQga3NjYW5mIGliIGVmIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgZWYgKGZ1biB4IC0+IHgpIGZtdFxuXG5sZXQga3NjYW5mX29wdCBpYiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIChmdW4gXyBfIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBic2NhbmZfb3B0IGliIGZtdCA9IGtzY2FuZl9vcHQgaWIgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNzY2FuZl9vcHQgcyBmbXQgPSBrc2NhbmZfb3B0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpbiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc2NhbmZfb3B0IGZtdCA9IGtzY2FuZl9vcHQgU2Nhbm5pbmcuc3RkaW4gZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBPYmpcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAobWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBtYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gb2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIG1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gbWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBtYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBtYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gbWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgcmVwciBpbml0IHxdO1xuICAgICBtYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IHJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgbWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gbWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleSBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleSBlcGgga2V5O1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5ID1cbiAgICBtYXRjaCBnZXRfa2V5IGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5IC0+IGdldF9kYXRhIGVwaFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCA9IEguc2VlZGVkX2hhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLnNlZWRlZF9oYXNoIHNlZWQgazEgKyBIMi5zZWVkZWRfaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnazEsICdrMiwgJ2QpIHQgPSAoJ2sxLCAnazIsICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsyX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgazEgazIgZCA9IGIgOj0gazJfbWFrZSBrMSBrMiBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsxIGsyIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleTEgZSwgZ2V0X2tleTIgZSB3aXRoXG4gICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgd2hlbiB4MSA9PSBrMSAmJiB4MiA9PSBrMiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrMSBrMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrMSBrMiBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrMSBrMiA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgazEgazIpICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguc2VlZGVkX2hhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJ1xcXCInIHx8IFN0cmluZy5jb250YWlucyBmICclJyB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBcIlxcXCJcIiBeIGYgXiBcIlxcXCJcIlxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmFuZG9tX3N0YXRlID0gRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkgaW5cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyByYW5kb21fc3RhdGUpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OkZ1bi5pZCAoZnVuICgpIC0+IHRlbXBfZGlyX25hbWUpXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gRG9tYWluLkRMUy5zZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lIHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9IEZsb2F0Lmh5cG90IHgucmUgeC5pbVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbl9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9pbl9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9pblxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5faW5fZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgaWMgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2VfaW5fbm9lcnIgaWMpXG4gICAgKGZ1biAoKSAtPiBmIGljKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW5fYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luIHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX2luXG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2VfaW5fbm9lcnJcblxubGV0IGlucHV0X2NoYXIgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gIHwgYyAtPiBTb21lIGNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfYnl0ZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9ieXRlIGljIHdpdGhcbiAgfCBuIC0+IFNvbWUgblxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9saW5lIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0ID0gU3RkbGliLmlucHV0XG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICBLQyBTaXZhcmFtYWtyaXNobmFuLCBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAuLlxuZXh0ZXJuYWwgcGVyZm9ybSA6ICdhIHQgLT4gJ2EgPSBcIiVwZXJmb3JtXCJcblxudHlwZSBleG4gKz0gVW5oYW5kbGVkOiAnYSB0IC0+IGV4blxuZXhjZXB0aW9uIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxubGV0ICgpID1cbiAgbGV0IHByaW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVW5oYW5kbGVkIHggLT5cbiAgICAgICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiU3RkbGliLkVmZmVjdC5VbmhhbmRsZWQoJXMpXCJcbiAgICAgICAgICAgIChQcmludGV4Yy5zdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEBAIE9iai5yZXByIHgpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgbXNnXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBwcmludGVyXG5cbigqIFJlZ2lzdGVyIHRoZSBleGNlcHRpb25zIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIGFjY2VzcyBpdCAqKVxudHlwZSBfIHQgKz0gU2hvdWxkX25vdF9zZWVfdGhpc19fIDogdW5pdCB0XG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5VbmhhbmRsZWRcIlxuICAgICAgICAgIChVbmhhbmRsZWQgU2hvdWxkX25vdF9zZWVfdGhpc19fKVxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiXG4gICAgICAgICAgQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG50eXBlICgnYSwgJ2IpIHN0YWNrXG5cbmV4dGVybmFsIHJlc3VtZSA6ICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gJ2IgPSBcIiVyZXN1bWVcIlxuZXh0ZXJuYWwgcnVuc3RhY2sgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcnVuc3RhY2tcIlxuXG5tb2R1bGUgRGVlcCA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cbiAgdHlwZSBsYXN0X2ZpYmVyXG5cbiAgZXh0ZXJuYWwgdGFrZV9jb250X25vZXhjIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+ICgnYSwgJ2IpIHN0YWNrID1cbiAgICBcImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1wiIFtAQG5vYWxsb2NdXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cbiAgbGV0IGNvbnRpbnVlIGsgdiA9IHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4geCAtPiB4KSB2XG5cbiAgbGV0IGRpc2NvbnRpbnVlIGsgZSA9IHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiByYWlzZSBlKSBlXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgZSBidCA9IHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPlxuICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYnQpIGVcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHJlcGVyZm9ybSA6XG4gICAgJ2EgdCAtPiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYiA9IFwiJXJlcGVyZm9ybVwiXG5cbiAgbGV0IG1hdGNoX3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICB0eXBlICdhIGVmZmVjdF9oYW5kbGVyID1cbiAgICB7IGVmZmM6ICdiLiAnYiB0IC0+ICgoJ2IsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYSkgb3B0aW9uIH1cblxuICBsZXQgdHJ5X3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMnIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPiBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayAoZnVuIHggLT4geCkgKGZ1biBlIC0+IHJhaXNlIGUpIGVmZmMnIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG5cbm1vZHVsZSBTaGFsbG93ID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuICB0eXBlIGxhc3RfZmliZXJcblxuICBleHRlcm5hbCBhbGxvY19zdGFjayA6XG4gICAgKCdhIC0+ICdiKSAtPlxuICAgIChleG4gLT4gJ2IpIC0+XG4gICAgKCdjIHQgLT4gKCdjLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgc3RhY2sgPSBcImNhbWxfYWxsb2Nfc3RhY2tcIlxuXG5cbiAgbGV0IGZpYmVyIDogdHlwZSBhIGIuIChhIC0+IGIpIC0+IChhLCBiKSBjb250aW51YXRpb24gPSBmdW4gZiAtPlxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdCB0eXBlIF8gdCArPSBJbml0aWFsX3NldHVwX18gOiBhIHQgZW5kIGluXG4gICAgbGV0IGV4Y2VwdGlvbiBFIG9mIChhLGIpIGNvbnRpbnVhdGlvbiBpblxuICAgIGxldCBmJyAoKSA9IGYgKHBlcmZvcm0gTS5Jbml0aWFsX3NldHVwX18pIGluXG4gICAgbGV0IGVycm9yIF8gPSBmYWlsd2l0aCBcImltcG9zc2libGVcIiBpblxuICAgIGxldCBlZmZjIGVmZiBrIF9sYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGVmZiB3aXRoXG4gICAgICB8IE0uSW5pdGlhbF9zZXR1cF9fIC0+IHJhaXNlX25vdHJhY2UgKEUgaylcbiAgICAgIHwgXyAtPiBlcnJvciAoKVxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBlcnJvciBlcnJvciBlZmZjIGluXG4gICAgbWF0Y2ggcnVuc3RhY2sgcyBmJyAoKSB3aXRoXG4gICAgfCBleGNlcHRpb24gRSBrIC0+IGtcbiAgICB8IF8gLT4gZXJyb3IgKClcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYSkgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHVwZGF0ZV9oYW5kbGVyIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPlxuICAgICgnYiAtPiAnYykgLT5cbiAgICAoZXhuIC0+ICdjKSAtPlxuICAgICgnZCB0IC0+ICgnZCwnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MpIC0+XG4gICAgKCdhLCdjKSBzdGFjayA9IFwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1wiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgY29udGludWVfZ2VuIGsgcmVzdW1lX2Z1biB2IGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPiBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHN0YWNrID0gdXBkYXRlX2hhbmRsZXIgayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICByZXN1bWUgc3RhY2sgcmVzdW1lX2Z1biB2XG5cbiAgbGV0IGNvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4geCAtPiB4KSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biBlIC0+IHJhaXNlIGUpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIHYgYnQgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biBlIC0+IFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYnQpIHYgaGFuZGxlclxuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG4iLCJbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqIGJsaXRfc3RyaW5nIGRvZXNuJ3QgZXhpc3QgaW4gW1N0ZExhYmVscy5CeXRlc10uLi4gICopXG5sZXQgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBCeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbjs7XG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIEZvcm1hdFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcblxubGV0IHNleHBfb2ZfdCB0ID0gdFxubGV0IHRfb2Zfc2V4cCB0ID0gdFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgcmVzID0gY29tcGFyZSB4IHkgaW5cbiAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCB4cyB5c1xuXG5hbmQgY29tcGFyZSBhIGIgPVxuICBpZiBhID09IGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgQXRvbSBhLCBBdG9tIGIgLT4gU3RyaW5nLmNvbXBhcmUgYSBiXG4gICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgfCBMaXN0IGEsIExpc3QgYiAtPiBjb21wYXJlX2xpc3QgYSBiKVxuOztcblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3Mgb2YgdFxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgZXhuICogdFxuXG5tb2R1bGUgUHJpbnRpbmcgPSBzdHJ1Y3RcbiAgKCogRGVmYXVsdCBpbmRlbnRhdGlvbiBsZXZlbCBmb3IgaHVtYW4tcmVhZGFibGUgY29udmVyc2lvbnMgKilcblxuICBsZXQgZGVmYXVsdF9pbmRlbnQgPSByZWYgMVxuXG4gICgqIEVzY2FwaW5nIG9mIHN0cmluZ3MgdXNlZCBhcyBhdG9tcyBpbiBTLWV4cHJlc3Npb25zICopXG5cbiAgbGV0IG11c3RfZXNjYXBlIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGVuID0gMFxuICAgIHx8XG4gICAgbGV0IHJlYyBsb29wIHN0ciBpeCA9XG4gICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICB8ICdcIicgfCAnKCcgfCAnKScgfCAnOycgfCAnXFxcXCcgLT4gdHJ1ZVxuICAgICAgfCAnfCcgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnIycgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnIycgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnfCcgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnXFwwMDAnIC4uICdcXDAzMicgfCAnXFwxMjcnIC4uICdcXDI1NScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGl4ID4gMCAmJiBsb29wIHN0ciAoaXggLSAxKVxuICAgIGluXG4gICAgbG9vcCBzdHIgKGxlbiAtIDEpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZWQgcyA9XG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBuXG4gICAgICA6PSAhblxuICAgICAgICAgK1xuICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICAgIHwgXyAtPiA0XG4gICAgZG9uZTtcbiAgICBpZiAhbiA9IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHMnID0gQnl0ZXMuY3JlYXRlICFuIGluXG4gICAgICBuIDo9IDA7XG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgICAgIHwgJyAnIC4uICd+JyBhcyBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgIGxldCBhID0gQ2hhci5jb2RlIGMgaW5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMDApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMCBtb2QgMTApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgbW9kIDEwKSkpKTtcbiAgICAgICAgaW5jciBuXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzJylcbiAgOztcblxuICBsZXQgZXNjX3N0ciBzdHIgPVxuICAgIGxldCBlc3RyID0gZXNjYXBlZCBzdHIgaW5cbiAgICBsZXQgZWxlbiA9IFN0cmluZy5sZW5ndGggZXN0ciBpblxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKGVsZW4gKyAyKSBpblxuICAgIGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmM6ZXN0ciB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjEgfmxlbjplbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIDAgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAoZWxlbiArIDEpICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgOztcblxuICBsZXQgaW5kZXhfb2ZfbmV3bGluZSBzdHIgc3RhcnQgPVxuICAgIHRyeSBTb21lIChTdHJpbmcuaW5kZXhfZnJvbSBzdHIgc3RhcnQgJ1xcbicpIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IGVuZF9wb3Nfb3B0ID1cbiAgICBsZXQgZW5kX3BvcyA9XG4gICAgICBtYXRjaCBlbmRfcG9zX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgIHwgU29tZSBlbmRfcG9zIC0+IGVuZF9wb3NcbiAgICBpblxuICAgIFN0cmluZy5zdWIgc3RyIH5wb3M6aW5kZXggfmxlbjooZW5kX3BvcyAtIGluZGV4KVxuICA7O1xuXG4gIGxldCBpc19vbmVfbGluZSBzdHIgPVxuICAgIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGluZGV4IC0+IGluZGV4ICsgMSA9IFN0cmluZy5sZW5ndGggc3RyXG4gIDs7XG5cbiAgbGV0IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHIgPVxuICAgIGlmIG5vdCAobXVzdF9lc2NhcGUgc3RyKVxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHJcbiAgICBlbHNlIGlmIGlzX29uZV9saW5lIHN0clxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjX3N0ciBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaW5kZXggPVxuICAgICAgICBsZXQgbmV4dF9uZXdsaW5lID0gaW5kZXhfb2ZfbmV3bGluZSBzdHIgaW5kZXggaW5cbiAgICAgICAgbGV0IG5leHRfbGluZSA9IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IG5leHRfbmV3bGluZSBpblxuICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIChlc2NhcGVkIG5leHRfbGluZSk7XG4gICAgICAgIG1hdGNoIG5leHRfbmV3bGluZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbmV3bGluZV9pbmRleCAtPlxuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcXCI7XG4gICAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxuXCI7XG4gICAgICAgICAgbG9vcCAobmV3bGluZV9pbmRleCArIDEpXG4gICAgICBpblxuICAgICAgcHBfb3Blbl9ib3ggcHBmIDA7XG4gICAgICAoKiB0aGUgbGVhZGluZyBzcGFjZSBpcyB0byBsaW5lIHVwIHRoZSBsaW5lcyAqKVxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcXFwiXCI7XG4gICAgICBsb29wIDA7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcIlwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKSlcbiAgOztcblxuICBsZXQgbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciA9IGlmIG11c3RfZXNjYXBlIHN0ciB0aGVuIGVzY19zdHIgc3RyIGVsc2Ugc3RyXG5cbiAgKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZm9ybWF0dGVycyAqKVxuXG4gIGxldCByZWMgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHJcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX29wZW5fYm94IHBwZiBpbmRlbnQ7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IExpc3QgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCJcblxuICBhbmQgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIHBwX3ByaW50X3NwYWNlIHBwZiAoKTtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgOztcblxuICBsZXQgcmVjIHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+XG4gICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcIjtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyJztcbiAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdDtcbiAgICAgIGZhbHNlXG4gICAgfCBMaXN0IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIjtcbiAgICAgIGZhbHNlXG5cbiAgYW5kIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHRcbiAgICB8IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCJcbiAgOztcblxuICBsZXQgcHBfaHVtIHBwZiBzZXhwID0gcHBfaHVtX2luZGVudCAhZGVmYXVsdF9pbmRlbnQgcHBmIHNleHBcbiAgbGV0IHBwX21hY2ggcHBmIHNleHAgPSBpZ25vcmUgKHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIHNleHApXG4gIGxldCBwcCA9IHBwX21hY2hcblxuICAoKiBTZXhwIHNpemUgKilcblxuICBsZXQgcmVjIHNpemVfbG9vcCAoKHYsIGMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gdiArIDEsIGMgKyBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHwgTGlzdCBsc3QgLT4gTGlzdC5mb2xkX2xlZnQgbHN0IH5pbml0OmFjYyB+ZjpzaXplX2xvb3BcbiAgOztcblxuICBsZXQgc2l6ZSBzZXhwID0gc2l6ZV9sb29wICgwLCAwKSBzZXhwXG5cbiAgKCogQnVmZmVyIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX2J1ZmZlcl9odW0gfmJ1ZiA/KGluZGVudCA9ICFkZWZhdWx0X2luZGVudCkgc2V4cCA9XG4gICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhQD9cIiAocHBfaHVtX2luZGVudCBpbmRlbnQpIHNleHBcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyX21hY2ggfmJ1ZiBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyID0gdG9fYnVmZmVyX21hY2hcblxuICBsZXQgdG9fYnVmZmVyX2dlbiB+YnVmIH5hZGRfY2hhciB+YWRkX3N0cmluZyBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIGFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgKCogVGhlIG1heGltdW0gc2l6ZSBvZiBhIHRoaW5nIG9uIHRoZSBtaW5vciBoZWFwIGlzIDI1NiB3b3Jkcy5cbiAgICAgUHJldmlvdXNseSwgdGhpcyBzaXplIG9mIHRoZSByZXR1cm5lZCBidWZmZXIgaGVyZSB3YXMgNDA5NiBieXRlcywgd2hpY2hcbiAgICAgY2F1c2VkIHRoZSBCdWZmZXIgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSAqbWFqb3IqIGhlYXAgZXZlcnkgdGltZS5cblxuICAgICBBY2NvcmRpbmcgdG8gYSBzaW1wbGUgYmVuY2htYXJrIGJ5IFJvbiwgd2UgY2FuIGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yXG4gICAgIHNtYWxsIHMtZXhwcmVzc2lvbnMgYnkgYSBmYWN0b3Igb2YgfjQgaWYgd2Ugb25seSBhbGxvY2F0ZSAxMDI0IGJ5dGVzXG4gICAgICgxMjggd29yZHMgKyBzb21lIHNtYWxsIG92ZXJoZWFkKSB3b3J0aCBvZiBidWZmZXIgaW5pdGlhbGx5LiAgQW5kIG9uZVxuICAgICBjYW4gYXJndWUgdGhhdCBpZiBpdCdzIGZyZWUgdG8gYWxsb2NhdGUgc3RyaW5ncyBzbWFsbGVyIHRoYW4gMjU2IHdvcmRzLFxuICAgICBsYXJnZSBzLWV4cHJlc3Npb25zIHJlcXVpcmluZyBsYXJnZXIgZXhwZW5zaXZlIGJ1ZmZlcnMgd29uJ3Qgbm90aWNlXG4gICAgIHRoZSBleHRyYSB0d28gZG91YmxpbmdzIGZyb20gMTAyNCBieXRlcyB0byAyMDQ4IGFuZCA0MDk2LiBBbmQgZXNwZWNpYWxseVxuICAgICBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXBwbGljYXRpb25zIHRvIGFsd2F5cyBwYXNzIGluIGEgbGFyZ2VyIGJ1ZmZlciB0b1xuICAgICB1c2UuICopXG4gIGxldCBidWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIDEwMjRcblxuICAoKiBTdHJpbmcgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/aW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyXG4gICAgICB3aGVuIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgXyAtPiBmYWxzZSAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfaHVtID9pbmRlbnQgc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfbWFjaCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfbWFjaCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19tYWNoXG5lbmRcblxuaW5jbHVkZSBQcmludGluZ1xuXG5sZXQgb2ZfZmxvYXRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcbmxldCBvZl9pbnRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmludGluZ1xuZW5kXG5cbmxldCBtZXNzYWdlIG5hbWUgZmllbGRzID1cbiAgbGV0IHJlYyBjb252X2ZpZWxkcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKGZuYW1lLCBmc2V4cCkgOjogcmVzdCAtPlxuICAgICAgKG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICB8IFwiXCIgLT4gZnNleHAgOjogY29udl9maWVsZHMgcmVzdFxuICAgICAgIHwgXyAtPiBMaXN0IFsgQXRvbSBmbmFtZTsgZnNleHAgXSA6OiBjb252X2ZpZWxkcyByZXN0KVxuICBpblxuICBMaXN0IChBdG9tIG5hbWUgOjogY29udl9maWVsZHMgZmllbGRzKVxuOztcbiIsIigqKiBSZXByZXNlbnRhdGlvbiBvZiBTLWV4cHJlc3Npb24gZ3JhbW1hcnMgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSByZXByZXNlbnRhdGlvbiBmb3Igcy1leHByZXNzaW9uIGdyYW1tYXJzLiBVc2luZyBwcHhfc2V4cF9jb252XG4gICAgYW5kIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSBwcm9kdWNlcyBhIGdyYW1tYXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGRlcml2ZWRcbiAgICBbb2Zfc2V4cF0gZm9yIGEgZ2l2ZW4gdHlwZS5cblxuICAgIEFzIHdpdGggb3RoZXIgZGVyaXZlZCBkZWZpbml0aW9ucywgcG9seW1vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhXG4gICAgZ3JhbW1hciBmb3IgZWFjaCB0eXBlIGFyZ3VtZW50IGFuZCBwcm9kdWNlcyBhIGdyYW1tYXIgZm9yIHRoZSBtb25vbW9ycGhpemVkIHR5cGUuXG5cbiAgICBNb25vbW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBncmFtbWFyIGRpcmVjdGx5LiBUbyBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLFxuICAgIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSB3cmFwcyBncmFtbWFycyBpbiB0aGUgW0xhenldIGNvbnN0cnVjdG9yIGFzIG5lZWRlZC5cblxuICAgIFRoaXMgdHlwZSBtYXkgY2hhbmdlIG92ZXIgdGltZSBhcyBvdXIgbmVlZHMgZm9yIGV4cHJlc3NpdmUgZ3JhbW1hcnMgY2hhbmdlLiBXZSB3aWxsXG4gICAgYXR0ZW1wdCB0byBtYWtlIGNoYW5nZXMgYmFja3dhcmQtY29tcGF0aWJsZSwgb3IgYXQgbGVhc3QgcHJvdmlkZSBhIHJlYXNvbmFibGUgdXBncmFkZVxuICAgIHBhdGguICopXG5cbltAQEB3YXJuaW5nIFwiLTMwXCJdICgqIGFsbG93IGR1cGxpY2F0ZSBmaWVsZCBuYW1lcyAqKVxuXG4oKiogR3JhbW1hciBvZiBhIHNleHAuICopXG50eXBlIGdyYW1tYXIgPVxuICB8IEFueSBvZiBzdHJpbmcgKCoqIGFjY2VwdHMgYW55IHNleHA7IHN0cmluZyBpcyBhIHR5cGUgbmFtZSBmb3IgaHVtYW4gcmVhZGFiaWxpdHkgKilcbiAgfCBCb29sICgqKiBhY2NlcHRzIHRoZSBhdG9tcyBcInRydWVcIiBvciBcImZhbHNlXCIsIG1vZHVsbyBjYXBpdGFsaXphdGlvbiAqKVxuICB8IENoYXIgKCoqIGFjY2VwdHMgYW55IHNpbmdsZS1jaGFyYWN0ZXIgYXRvbSAqKVxuICB8IEludGVnZXIgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgaW50ZWdlciBzeW50YXgsIHJlZ2FyZGxlc3Mgb2YgYml0IHdpZHRoICopXG4gIHwgRmxvYXQgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgZmxvYXQgc3ludGF4ICopXG4gIHwgU3RyaW5nICgqKiBhY2NlcHRzIGFueSBhdG9tICopXG4gIHwgT3B0aW9uIG9mIGdyYW1tYXIgKCoqIGFjY2VwdHMgYW4gb3B0aW9uLCBib3RoIFtOb25lXSB2cyBbU29tZSBfXSBhbmQgWygpXSB2cyBbKF8pXS4gKilcbiAgfCBMaXN0IG9mIGxpc3RfZ3JhbW1hciAoKiogYWNjZXB0cyBhIGxpc3QgKilcbiAgfCBWYXJpYW50IG9mIHZhcmlhbnQgKCoqIGFjY2VwdHMgY2xhdXNlcyBrZXllZCBieSBhIGxlYWRpbmcgb3Igc29sZSBhdG9tICopXG4gIHwgVW5pb24gb2YgZ3JhbW1hciBsaXN0ICgqKiBhY2NlcHRzIGEgc2V4cCBpZiBhbnkgb2YgdGhlIGxpc3RlZCBncmFtbWFycyBhY2NlcHRzIGl0ICopXG4gIHwgVGFnZ2VkIG9mIGdyYW1tYXIgd2l0aF90YWdcbiAgKCoqIGFubm90YXRlcyBhIGdyYW1tYXIgd2l0aCBhIGNsaWVudC1zcGVjaWZpYyBrZXkvdmFsdWUgcGFpciAqKVxuICB8IFR5dmFyIG9mIHN0cmluZ1xuICAoKiogTmFtZSBvZiBhIHR5cGUgdmFyaWFibGUsIGUuZy4gW1R5dmFyIFwiYVwiXSBmb3IgWydhXS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGJvZHkgb2ZcbiAgICAgIHRoZSBpbm5lcm1vc3QgZW5jbG9zaW5nIFtkZWZuXSBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIHZhcmlhYmxlLiAqKVxuICB8IFR5Y29uIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gRm9yIGV4YW1wbGUsIFtUeWNvbiAoXCJsaXN0XCIsIFsgSW50ZWdlciBdKV1cbiAgICAgIHJlcHJlc2VudHMgW2ludCBsaXN0XS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW1JlY3Vyc2l2ZV1cbiAgICAgIGdyYW1tYXIgZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWN1cnNpdmUgb2YgZ3JhbW1hciAqIGRlZm4gbGlzdFxuICAoKiogW1JlY3Vyc2l2ZSAoZ3JhbW1hciwgZGVmaW5pdGlvbnMpXSBhbGxvd3MgW2dyYW1tYXJdIHRvIHJlZmVyIHRvIHR5cGUgY29uc3RydWN0b3JzXG4gICAgICBmcm9tIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgW2RlZmluaXRpb25zXS4gVGhlIGRlZmluaXRpb25zIG1heSBhbHNvIHJlZmVyIHRvIGVhY2hcbiAgICAgIG90aGVycycgdHlwZSBjb25zdHJ1Y3RvcnMuXG5cbiAgICAgIE9yZGluYXJpbHksIFtncmFtbWFyXSBpdHNlbGYgaXMganVzdCBhIFtUeWNvbl0gYXJndW1lbnQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGl0IGNhblxuICAgICAgYmUgYW55IGdyYW1tYXIuXG5cbiAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGRlZmluZSBhIGJpbmFyeSB0cmVlIHBhcmFtZXRlcml6ZWQgYnkgYSB0eXBlXG4gICAgICBzdG9yZWQgYXQgaXRzIGxlYXZlcy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IGRlZm5zID1cbiAgICAgICAgICBbIHsgdHljb24gPSBcInRyZWVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIlRyZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFR5Y29uIFwidHJlZVwiLCBbVHl2YXIgXCJhXCJdKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcImxlYWZcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBbVHl2YXIgXCJhXCJdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA7O1xuICAgICAgXX1cblxuICAgICAgTm9ybWFsbHksIHRoZSB0eXBlIG9mIGEgdHJlZSBzdG9yaW5nIGludGVnZXJzIHdvdWxkIGJlIHdyaXR0ZW4gbGlrZSB0aGlzOlxuXG4gICAgICB7W1xuICAgICAgICBSZWN1cnNpdmUgKFR5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0pLCBkZWZucylcbiAgICAgIF19XG5cbiAgICAgIEl0IGlzIGVxdWl2YWxlbnQsIHRob3VnaCBuZWVkbGVzc2x5IHZlcmJvc2UsIHRvIHJlcGxhY2UgdGhlIFtUeWNvbl0gcmVmZXJlbmNlIHdpdGhcbiAgICAgIHRoZSBncmFtbWFyIG9mIFtcInRyZWVcIl0sIHN1YnN0aXR1dGluZyBbSW50ZWdlcl0gZm9yIFtUeXZhciBcImFcIl06XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZVxuICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAsIGRlZm5zIClcbiAgICAgIF19XG4gICopXG4gIHwgTGF6eSBvZiBncmFtbWFyIGxhenlfdFxuICAoKiogTGF6aWx5IGNvbXB1dGVkIGdyYW1tYXIuIFVzZSBbTGF6eV0gdG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cy4gVG8gZGVmaW5lXG4gICAgICByZWN1cnNpdmUgZ3JhbW1hcnMsIHVzZSBbUmVjdXJzaXZlXSBpbnN0ZWFkLiAqKVxuXG4oKiogR3JhbW1hciBvZiBhIGxpc3Qgb2Ygc2V4cHMuICopXG5hbmQgbGlzdF9ncmFtbWFyID1cbiAgfCBFbXB0eSAoKiogYWNjZXB0cyBhbiBlbXB0eSBsaXN0IG9mIHNleHBzICopXG4gIHwgQ29ucyBvZiBncmFtbWFyICogbGlzdF9ncmFtbWFyXG4gICgqKiBhY2NlcHRzIGEgbm9uLWVtcHR5IGxpc3Qgd2l0aCBoZWFkIGFuZCB0YWlsIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFycyAqKVxuICB8IE1hbnkgb2YgZ3JhbW1hciAoKiogYWNjZXB0cyB6ZXJvIG9yIG1vcmUgc2V4cHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXIgKilcbiAgfCBGaWVsZHMgb2YgcmVjb3JkICgqKiBhY2NlcHRzIHNleHBzIHJlcHJlc2VudGluZyBmaWVsZHMgb2YgYSByZWNvcmQgKilcblxuKCoqIENhc2Ugc2Vuc2l0aXZpdHkgb3B0aW9ucyBmb3IgbmFtZXMgb2YgdmFyaWFudCBjb25zdHJ1Y3RvcnMuICopXG5hbmQgY2FzZV9zZW5zaXRpdml0eSA9XG4gIHwgQ2FzZV9pbnNlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc2VkIGZvciBjdXN0b20gcGFyc2Vycy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS4gVXNlZCBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjYXNlIHNlbnNpdGl2ZSBhZnRlcndhcmQuXG4gICAgICBVc2VkIGZvciByZWd1bGFyIHZhcmlhbnRzLiAqKVxuXG4oKiogR3JhbW1hciBvZiB2YXJpYW50cy4gQWNjZXB0cyBhbnkgc2V4cCBtYXRjaGluZyBvbmUgb2YgdGhlIGNsYXVzZXMuICopXG5hbmQgdmFyaWFudCA9XG4gIHsgY2FzZV9zZW5zaXRpdml0eSA6IGNhc2Vfc2Vuc2l0aXZpdHlcbiAgOyBjbGF1c2VzIDogY2xhdXNlIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlLiBBY2NlcHRzIHNleHBzIGJhc2VkIG9uIHRoZSBbY2xhdXNlX2tpbmRdLiAqKVxuYW5kIGNsYXVzZSA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IGNsYXVzZV9raW5kIDogY2xhdXNlX2tpbmRcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZSdzIGNvbnRlbnRzLiBbQXRvbV9jbGF1c2VdIGFjY2VwdHMgYW4gYXRvbSBtYXRjaGluZ1xuICAgIHRoZSBjbGF1c2UncyBuYW1lLiBbTGlzdF9jbGF1c2VdIGFjY2VwdHMgYSBsaXN0IHdob3NlIGhlYWQgaXMgYW4gYXRvbSBtYXRjaGluZyB0aGVcbiAgICBjbGF1c2UncyBuYW1lIGFuZCB3aG9zZSB0YWlsIG1hdGNoZXMgW2FyZ3NdLiBUaGUgY2xhdXNlJ3MgbmFtZSBpcyBtYXRjaGVkIG1vZHVsbyB0aGVcbiAgICB2YXJpYW50J3MgW25hbWVfa2luZF0uICopXG5hbmQgY2xhdXNlX2tpbmQgPVxuICB8IEF0b21fY2xhdXNlXG4gIHwgTGlzdF9jbGF1c2Ugb2YgeyBhcmdzIDogbGlzdF9ncmFtbWFyIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQuIEFjY2VwdHMgYW55IGxpc3Qgb2Ygc2V4cHMgc3BlY2lmeWluZyBlYWNoIG9mIHRoZSBmaWVsZHMsXG4gICAgcmVnYXJkbGVzcyBvZiBvcmRlci4gSWYgW2FsbG93X2V4dHJhX2ZpZWxkc10gaXMgc3BlY2lmaWVkLCBpZ25vcmVzIHNleHBzIHdpdGggbmFtZXNcbiAgICBub3QgZm91bmQgaW4gW2ZpZWxkc10uICopXG5hbmQgcmVjb3JkID1cbiAgeyBhbGxvd19leHRyYV9maWVsZHMgOiBib29sXG4gIDsgZmllbGRzIDogZmllbGQgd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQgZmllbGQuIEEgZmllbGQgbXVzdCBzaG93IHVwIGV4YWN0bHkgb25jZSBpbiBhIHJlY29yZCBpZlxuICAgIFtyZXF1aXJlZF0sIG9yIGF0IG1vc3Qgb25jZSBvdGhlcndpc2UuIEFjY2VwdHMgYSBsaXN0IGhlYWRlZCBieSBbbmFtZV0gYXMgYW4gYXRvbSxcbiAgICBmb2xsb3dlZCBieSBzZXhwcyBtYXRjaGluZyBbYXJnc10uICopXG5hbmQgZmllbGQgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyByZXF1aXJlZCA6IGJvb2xcbiAgOyBhcmdzIDogbGlzdF9ncmFtbWFyXG4gIH1cblxuKCoqIEdyYW1tYXIgdGFnZ2VkIHdpdGggY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyLiAqKVxuYW5kICdhIHdpdGhfdGFnID1cbiAgeyBrZXkgOiBzdHJpbmdcbiAgOyB2YWx1ZSA6IFNleHAudFxuICA7IGdyYW1tYXIgOiAnYVxuICB9XG5cbmFuZCAnYSB3aXRoX3RhZ19saXN0ID1cbiAgfCBUYWcgb2YgJ2Egd2l0aF90YWdfbGlzdCB3aXRoX3RhZ1xuICB8IE5vX3RhZyBvZiAnYVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY3Vyc2l2ZSB0eXBlIGRlZmluaXRpb24uIE5hbWVzIHRoZSBbdHljb25dIGJlaW5nIGRlZmluZWQsIGFuZCB0aGVcbiAgICBbdHl2YXJzXSBpdCB0YWtlcyBhcyBwYXJhbWV0ZXJzLiBTcGVjaWZpZXMgdGhlIFtncmFtbWFyXSBvZiB0aGUgW3R5Y29uXS4gVGhlIGdyYW1tYXJcbiAgICBtYXkgcmVmZXIgdG8gYW55IG9mIHRoZSBbdHl2YXJzXSwgYW5kIHRvIGFueSBvZiB0aGUgW3R5Y29uXXMgZnJvbSB0aGUgc2FtZSBzZXQgb2ZcbiAgICBbUmVjdXJzaXZlXSBkZWZpbml0aW9ucy4gKilcbmFuZCBkZWZuID1cbiAgeyB0eWNvbiA6IHN0cmluZ1xuICA7IHR5dmFycyA6IHN0cmluZyBsaXN0XG4gIDsgZ3JhbW1hciA6IGdyYW1tYXJcbiAgfVxuXG4oKiogVG9wLWxldmVsIGdyYW1tYXIgdHlwZS4gSGFzIGEgcGhhbnRvbSB0eXBlIHBhcmFtZXRlciB0byBhc3NvY2lhdGUgZWFjaCBncmFtbWFyIHdpdGhcbiAgICB0aGUgdHlwZSBpdHMgc2V4cHMgcmVwcmVzZW50LiBUaGlzIG1ha2VzIGl0IGhhcmRlciB0byBhcHBseSBncmFtbWFycyB0byB0aGUgd3JvbmdcbiAgICB0eXBlLCB3aGlsZSBncmFtbWFycyBjYW4gc3RpbGwgYmUgZWFzaWx5IGNvZXJjZWQgdG8gYSBuZXcgdHlwZSBpZiBuZWVkZWQuICopXG50eXBlIF8gdCA9IHsgdW50eXBlZCA6IGdyYW1tYXIgfSBbQEB1bmJveGVkXVxuXG5sZXQgY29lcmNlICh0eXBlIGEgYikgKHsgdW50eXBlZCA9IF8gfSBhcyB0IDogYSB0KSA6IGIgdCA9IHRcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGlzIHVzZWQgZm9yIGFsbCB0YWdzIGdlbmVyYXRlZCBmcm9tIGRvYyBjb21tZW50cy4gKilcbmxldCBkb2NfY29tbWVudF90YWcgPSBcInNleHBfZ3JhbW1hci5kb2NfY29tbWVudFwiXG4iLCJsZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwiKCoqIFByaW1pdGl2ZXMgZm9yIHBvbHltb3JwaGljIGNvbXBhcmUuICopXG5cbigqXyBQb2x5bW9ycGhpYyBjb21waWxlciBwcmltaXRpdmVzIGNhbid0IGJlIGFsaWFzZXMgYXMgdGhpcyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gIGlubGluaW5nLiAoSWYgYWxpYXNlZCB3aXRob3V0IGEgdHlwZSBhbm5vdGF0aW9uLCB0aGUgY29tcGlsZXIgd291bGQgaW1wbGVtZW50IHRoZW1cbiAgdXNpbmcgdGhlIGdlbmVyaWMgY29kZSBkb2luZyBhIEMgY2FsbCwgYW5kIGl0J3MgdGhpcyBjb2RlIHRoYXQgd291bGQgYmUgaW5saW5lZC4pIEFzIGFcbiAgcmVzdWx0IHdlIGhhdmUgdG8gY29weSB0aGUgW2V4dGVybmFsIC4uLl0gZGVjbGFyYXRpb24gaGVyZS4gKilcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgYXNjZW5kaW5nIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG5sZXQgbWF4ID0gQ2FtbC5tYXhcbmxldCBtaW4gPSBDYW1sLm1pblxuIiwiKCogVGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gW0ltcG9ydF0uICBJdCBpcyBhaW1lZCBhdCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzdGFuZGFyZFxuICAgY29tYmluYXRvcnMgZm9yIFtzZXhwX29mXSwgW29mX3NleHBdLCBbY29tcGFyZV0gYW5kIFtoYXNoXSBhbmQgYXJlIGluY2x1ZGVkIGluXG4gICBbSW1wb3J0XS4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgKCogVGhlc2UgbW9kdWxlcyBhcmUgcmVkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxudHlwZSAnYSByZWYgPSAnYSBDYW1sLnJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuKCogUmVzaHVmZmxlIFtDYW1sXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgQ2FtbCA9IHN0cnVjdFxuXG4gIGluY2x1ZGUgQ2FtbFxuXG4gIG1vZHVsZSBBcmcgPSBDYW1sLkFyZyAoKiogQGNhbm9uaWNhbCBDYW1sLkFyZyAqKVxuXG4gIG1vZHVsZSBBcnJheSA9IENhbWwuU3RkTGFiZWxzLkFycmF5ICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkFycmF5ICopXG5cbiAgbW9kdWxlIEJvb2wgPSBDYW1sLkJvb2wgKCoqIEBjYW5vbmljYWwgQ2FtbC5Cb29sICopXG5cbiAgbW9kdWxlIEJ1ZmZlciA9IENhbWwuQnVmZmVyICgqKiBAY2Fub25pY2FsIENhbWwuQnVmZmVyICopXG5cbiAgbW9kdWxlIEJ5dGVzID0gQ2FtbC5TdGRMYWJlbHMuQnl0ZXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQnl0ZXMgKilcblxuICBtb2R1bGUgQ2hhciA9IENhbWwuQ2hhciAoKiogQGNhbm9uaWNhbCBDYW1sLkNoYXIgKilcblxuICBtb2R1bGUgRXBoZW1lcm9uID0gQ2FtbC5FcGhlbWVyb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5FcGhlbWVyb24gKilcblxuICBtb2R1bGUgRmxvYXQgPSBDYW1sLkZsb2F0ICgqKiBAY2Fub25pY2FsIENhbWwuRmxvYXQgKilcblxuICBtb2R1bGUgRm9ybWF0ID0gQ2FtbC5Gb3JtYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Gb3JtYXQgKilcblxuICBtb2R1bGUgRnVuID0gQ2FtbC5GdW4gKCoqIEBjYW5vbmljYWwgQ2FtbC5GdW4gKilcblxuICBtb2R1bGUgR2MgPSBDYW1sLkdjICgqKiBAY2Fub25pY2FsIENhbWwuR2MgKilcblxuICBtb2R1bGUgSGFzaHRibCA9IENhbWwuTW9yZUxhYmVscy5IYXNodGJsICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5IYXNodGJsICopXG5cbiAgbW9kdWxlIEludDMyID0gQ2FtbC5JbnQzMiAoKiogQGNhbm9uaWNhbCBDYW1sLkludDMyICopXG5cbiAgbW9kdWxlIEludCA9IENhbWwuSW50ICgqKiBAY2Fub25pY2FsIENhbWwuSW50ICopXG5cbiAgbW9kdWxlIEludDY0ID0gQ2FtbC5JbnQ2NCAoKiogQGNhbm9uaWNhbCBDYW1sLkludDY0ICopXG5cbiAgbW9kdWxlIExhenkgPSBDYW1sLkxhenkgKCoqIEBjYW5vbmljYWwgQ2FtbC5MYXp5ICopXG5cbiAgbW9kdWxlIExleGluZyA9IENhbWwuTGV4aW5nICgqKiBAY2Fub25pY2FsIENhbWwuTGV4aW5nICopXG5cbiAgbW9kdWxlIExpc3QgPSBDYW1sLlN0ZExhYmVscy5MaXN0ICgqKiBAY2Fub25pY2FsIENhbWwuU3RkTGFiZWxzLkxpc3QgKilcblxuICBtb2R1bGUgTWFwID0gQ2FtbC5Nb3JlTGFiZWxzLk1hcCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuTWFwICopXG5cbiAgbW9kdWxlIE5hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50ICgqKiBAY2Fub25pY2FsIENhbWwuTmF0aXZlaW50ICopXG5cbiAgbW9kdWxlIE9iaiA9IENhbWwuT2JqICgqKiBAY2Fub25pY2FsIENhbWwuT2JqICopXG5cbiAgbW9kdWxlIE9wdGlvbiA9IENhbWwuT3B0aW9uICgqKiBAY2Fub25pY2FsIENhbWwuT3B0aW9uICopXG5cbiAgbW9kdWxlIFBhcnNpbmcgPSBDYW1sLlBhcnNpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5QYXJzaW5nICopXG5cbiAgbW9kdWxlIFByaW50ZXhjID0gQ2FtbC5QcmludGV4YyAoKiogQGNhbm9uaWNhbCBDYW1sLlByaW50ZXhjICopXG5cbiAgbW9kdWxlIFByaW50ZiA9IENhbWwuUHJpbnRmICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRmICopXG5cbiAgbW9kdWxlIFF1ZXVlID0gQ2FtbC5RdWV1ZSAoKiogQGNhbm9uaWNhbCBDYW1sLlF1ZXVlICopXG5cbiAgbW9kdWxlIFJhbmRvbSA9IENhbWwuUmFuZG9tICgqKiBAY2Fub25pY2FsIENhbWwuUmFuZG9tICopXG5cbiAgbW9kdWxlIFJlc3VsdCA9IENhbWwuUmVzdWx0ICgqKiBAY2Fub25pY2FsIENhbWwuUmVzdWx0ICopXG5cbiAgbW9kdWxlIFNjYW5mID0gQ2FtbC5TY2FuZiAoKiogQGNhbm9uaWNhbCBDYW1sLlNjYW5mICopXG5cbiAgbW9kdWxlIFNlcSA9IENhbWwuU2VxICgqKiBAY2Fub25pY2FsIENhbWwuU2VxICopXG5cbiAgbW9kdWxlIFNldCA9IENhbWwuTW9yZUxhYmVscy5TZXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLlNldCAqKVxuXG4gIG1vZHVsZSBTdGFjayA9IENhbWwuU3RhY2sgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGFjayAqKVxuXG4gIG1vZHVsZSBTdHJpbmcgPSBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuU3RyaW5nICopXG5cbiAgbW9kdWxlIFN5cyA9IENhbWwuU3lzICgqKiBAY2Fub25pY2FsIENhbWwuU3lzICopXG5cbiAgbW9kdWxlIFVjaGFyID0gQ2FtbC5VY2hhciAoKiogQGNhbm9uaWNhbCBDYW1sLlVjaGFyICopXG5cbiAgbW9kdWxlIFVuaXQgPSBDYW1sLlVuaXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5Vbml0ICopXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZCA9IENhbWwuTm90X2ZvdW5kXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IENhbWwuT2JqLm1hZ2ljIHhcblxuKCogVGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseSAqKVxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0ICggIT0gKSA9IENhbWwuKCAhPSApXG5sZXQgKCAqICkgPSBDYW1sLiggKiApXG5sZXQgKCAqKiApID0gQ2FtbC4oICoqIClcbmxldCAoICouICkgPSBDYW1sLiggKi4gKVxubGV0ICggKyApID0gQ2FtbC4oICsgKVxubGV0ICggKy4gKSA9IENhbWwuKCArLiApXG5sZXQgKCAtICkgPSBDYW1sLiggLSApXG5sZXQgKCAtLiApID0gQ2FtbC4oIC0uIClcbmxldCAoIC8gKSA9IENhbWwuKCAvIClcbmxldCAoIC8uICkgPSBDYW1sLiggLy4gKVxuXG5tb2R1bGUgUG9seSA9IFBvbHkwICgqKiBAY2Fub25pY2FsIEJhc2UuUG9seSAqKVxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50MzIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50NjQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLkludDY0LnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYm9vbCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBjaGFyKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGNoYXIpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgaSB4ID0gQ2FtbC5VY2hhci50b19pbnQgeFxuICBsZXQgKCA8ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPSApICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPiApIChpIHgpIChpIHkpXG4gIGxldCAoID49ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSAoaSB4KSAoaSB5KVxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBDYW1sLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZGVzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBjb21wYXJlICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIChpIHgpIChpIHkpXG4gIGxldCBlcXVhbCAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogZmxvYXQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGZsb2F0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGZsb2F0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGZsb2F0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBzdHJpbmcpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYnl0ZXMpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJ5dGVzKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJ5dGVzKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBUaGlzIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIHNwZWNpYWxpemUgaXQgYXMgYVxuICAgZGlyZWN0IHNldCBvciBjYW1sX21vZGlmeSAqKVxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3b24ndCB1bmJveFxuICAgcmVmZXJlbmNlcyAqKVxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuXG5sZXQgKCBAICkgPSBDYW1sLiggQCApXG5sZXQgKCBeICkgPSBDYW1sLiggXiApXG5sZXQgKCB+LSApID0gQ2FtbC4oIH4tIClcbmxldCAoIH4tLiApID0gQ2FtbC4oIH4tLiApXG5sZXQgKCBhc3IgKSA9IENhbWwuKCBhc3IgKVxubGV0ICggbGFuZCApID0gQ2FtbC4oIGxhbmQgKVxubGV0IGxub3QgPSBDYW1sLmxub3RcbmxldCAoIGxvciApID0gQ2FtbC4oIGxvciApXG5sZXQgKCBsc2wgKSA9IENhbWwuKCBsc2wgKVxubGV0ICggbHNyICkgPSBDYW1sLiggbHNyIClcbmxldCAoIGx4b3IgKSA9IENhbWwuKCBseG9yIClcbmxldCAoIG1vZCApID0gQ2FtbC4oIG1vZCApXG5sZXQgYWJzID0gQ2FtbC5hYnNcbmxldCBmYWlsd2l0aCA9IENhbWwuZmFpbHdpdGhcbmxldCBmc3QgPSBDYW1sLmZzdFxubGV0IGludmFsaWRfYXJnID0gQ2FtbC5pbnZhbGlkX2FyZ1xubGV0IHNuZCA9IENhbWwuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBDYW1sLiggPT0gKVxubGV0IGRlY3IgPSBDYW1sLmRlY3JcbmxldCBpbmNyID0gQ2FtbC5pbmNyXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IENhbWwuZmxvYXRfb2Zfc3RyaW5nXG5cbigqIFthbV90ZXN0aW5nXSBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiBpbiB0ZXN0aW5nIG1vZGUsIHN1Y2hcbiAgIGFzIGluIFtyYW5kb20ubWxdLiAgW2FtX3Rlc3RpbmddIGlzIGltcGxlbWVudGVkIHVzaW5nIFtCYXNlX2FtX3Rlc3RpbmddLCBhIHdlYWsgQy9qc1xuICAgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbZmFsc2VdLCBidXQgd2hlbiBsaW5raW5nIGFuIGlubGluZS10ZXN0LXJ1bm5lciBleGVjdXRhYmxlLCBpc1xuICAgb3ZlcnJpZGRlbiBieSBhbm90aGVyIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW3RydWVdLiAqKVxuZXh0ZXJuYWwgYW1fdGVzdGluZyA6IHVuaXQgLT4gYm9vbCA9IFwiQmFzZV9hbV90ZXN0aW5nXCJcblxubGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nICgpXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIENhbWwuUHJpbnRmXG5cbigqKiBmYWlsd2l0aCwgaW52YWxpZF9hcmcsIGFuZCBleGl0IGFjY2VwdGluZyBwcmludGYncyBmb3JtYXQuICopXG5cbmxldCBmYWlsd2l0aGYgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGZhaWx3aXRoIHMpIGZtdFxubGV0IGludmFsaWRfYXJnZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gaW52YWxpZF9hcmcgcykgZm10XG4iLCIoKiBbU3lzMF0gZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN5c10uICBbU3lzMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbQ2FtbC5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtDYW1sLlN5c10uIFtTeXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZVxuICAgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSB0aGVzZVxuICAgZnVuY3Rpb25zIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TeXNdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBTeXMgPSBTeXMwXS4gIERlZmluaW5nIFttb2R1bGUgU3lzID0gU3lzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZVxuICAgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TeXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbnR5cGUgYmFja2VuZF90eXBlID0gQ2FtbC5TeXMuYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuXG5sZXQgYmFja2VuZF90eXBlID0gQ2FtbC5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBDYW1sLlN5cy5pbnRlcmFjdGl2ZVxubGV0IG9zX3R5cGUgPSBDYW1sLlN5cy5vc190eXBlXG5sZXQgdW5peCA9IENhbWwuU3lzLnVuaXhcbmxldCB3aW4zMiA9IENhbWwuU3lzLndpbjMyXG5sZXQgY3lnd2luID0gQ2FtbC5TeXMuY3lnd2luXG5sZXQgd29yZF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gQ2FtbC5TeXMuaW50X3NpemVcbmxldCBiaWdfZW5kaWFuID0gQ2FtbC5TeXMuYmlnX2VuZGlhblxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gQ2FtbC5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gQ2FtbC5TeXMubWF4X2FycmF5X2xlbmd0aFxubGV0IHJ1bnRpbWVfdmFyaWFudCA9IENhbWwuU3lzLnJ1bnRpbWVfdmFyaWFudFxubGV0IHJ1bnRpbWVfcGFyYW1ldGVycyA9IENhbWwuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBDYW1sLlN5cy5hcmd2XG5sZXQgZ2V0X2FyZ3YgKCkgPSBDYW1sLlN5cy5hcmd2XG5sZXQgb2NhbWxfdmVyc2lvbiA9IENhbWwuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IENhbWwuU3lzLmVuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG5sZXQgcnVudGltZV93YXJuaW5nc19lbmFibGVkID0gQ2FtbC5TeXMucnVudGltZV93YXJuaW5nc19lbmFibGVkXG5cbmxldCBnZXRlbnZfZXhuIHZhciA9XG4gIHRyeSBDYW1sLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBDYW1sLk5vdF9mb3VuZCAtPlxuICAgIFByaW50Zi5mYWlsd2l0aGYgXCJTeXMuZ2V0ZW52X2V4bjogZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgaXMgbm90IHNldFwiIHZhciAoKVxuOztcblxubGV0IGdldGVudiB2YXIgPVxuICBtYXRjaCBDYW1sLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbmV4Y2VwdGlvbiBCcmVhayA9IENhbWwuU3lzLkJyZWFrXG4iLCIoKiBbQXJyYXkwXSBkZWZpbmVzIGFycmF5IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtc1xuICAgb2YgW0NhbWwuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkFycmF5XVxuICAgdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBhcnJheTAubWwgc2hvdWxkIHVzZSBbQ2FtbC5BcnJheV0uXG4gICBbQXJyYXkwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBhcnJheXMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkFycmF5XSBpbiBidWlsZCBvcmRlciBzaG91bGRcbiAgIGRvIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdLiAgVGhpcyBpbmNsdWRlcyB1c2VzIG9mIHN1YnNjcmlwdCBzeW50YXggKFt4LihpKV0sIFt4LihpKSA8LVxuICAgZV0pLCB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW0FycmF5LmdldF0gYW5kIFtBcnJheS5zZXRdLlxuICAgRGVmaW5pbmcgW21vZHVsZSBBcnJheSA9IEFycmF5MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tXG4gICBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5BcnJheV0uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbiAgZXh0ZXJuYWwgZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBzZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzonYSBhcnJheVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OidhIGFycmF5XG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZW5kXG5cbmluY2x1ZGUgQXJyYXlcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gIHRyeSBjcmVhdGUgbGVuIHggd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGUgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuID1cbiAgdHJ5IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIGxlbiB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBhcHBlbmQgPSBDYW1sLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBDYW1sLkFycmF5LmJsaXRcbmxldCBjb25jYXQgPSBDYW1sLkFycmF5LmNvbmNhdFxubGV0IGNvcHkgPSBDYW1sLkFycmF5LmNvcHlcbmxldCBmaWxsID0gQ2FtbC5BcnJheS5maWxsXG5sZXQgaW5pdCA9IENhbWwuQXJyYXkuaW5pdFxubGV0IG1ha2VfbWF0cml4ID0gQ2FtbC5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBDYW1sLkFycmF5Lm9mX2xpc3RcbmxldCBzdWIgPSBDYW1sLkFycmF5LnN1YlxubGV0IHRvX2xpc3QgPSBDYW1sLkFycmF5LnRvX2xpc3RcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5BcnJheS5mb2xkX2xlZnQgdCB+aW5pdCB+ZlxubGV0IGZvbGRfcmlnaHQgdCB+ZiB+aW5pdCA9IENhbWwuQXJyYXkuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5sZXQgaXRlciB0IH5mID0gQ2FtbC5BcnJheS5pdGVyIHQgfmZcbmxldCBpdGVyaSB0IH5mID0gQ2FtbC5BcnJheS5pdGVyaSB0IH5mXG5sZXQgbWFwIHQgfmYgPSBDYW1sLkFycmF5Lm1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gQ2FtbC5BcnJheS5tYXBpIHQgfmZcbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gQ2FtbC5BcnJheS5zdGFibGVfc29ydCB0IH5jbXA6Y29tcGFyZVxuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBlbHRfaSA9IHQuKGkpIGluXG4gIGxldCBlbHRfaiA9IHQuKGopIGluXG4gIHVuc2FmZV9zZXQgdCBpIGVsdF9qO1xuICB1bnNhZmVfc2V0IHQgaiBlbHRfaVxuOztcbiIsIigqIFtDaGFyMF0gZGVmaW5lcyBjaGFyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW0NhbWwuQ2hhcl0uICBbQ2hhcjBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbQ2FtbC5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtDYW1sLkNoYXJdLlxuICAgW0NoYXIwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBjaGFycyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQ2hhcl0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIENoYXIgPSBDaGFyMF0uICBEZWZpbmluZyBbbW9kdWxlIENoYXIgPSBDaGFyMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5DaGFyXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxubGV0IGVzY2FwZWQgPSBDYW1sLkNoYXIuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBDYW1sLkNoYXIuY29kZVxubGV0IHVuc2FmZV9vZl9pbnQgPSBDYW1sLkNoYXIudW5zYWZlX2NoclxubGV0IHVwcGVyY2FzZSA9IENhbWwuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW0NhbWwuQ2hhci5jaHJdIGJlY2F1c2UgaXQncyBzaW1wbGUgYW5kIGl0IHNhdmVzIHVzIGEgZnVuY3Rpb24gY2FsbFxuICAgYW5kIHRoZSB0cnktd2l0aCAoZXhjZXB0aW9ucyBjb3N0LCBlc3BlY2lhbGx5IGluIHRoZSB3b3JsZCB3aXRoIGJhY2t0cmFjZXMpLiAqKVxubGV0IGludF9pc19vayBpID0gMCA8PSBpICYmIGkgPD0gMjU1XG5sZXQgbWluX3ZhbHVlID0gdW5zYWZlX29mX2ludCAwXG5sZXQgbWF4X3ZhbHVlID0gdW5zYWZlX29mX2ludCAyNTVcbmxldCBvZl9pbnQgaSA9IGlmIGludF9pc19vayBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX2ludF9leG4gaSA9XG4gIGlmIGludF9pc19vayBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5vZl9pbnRfZXhuIGdvdCBpbnRlZ2VyIG91dCBvZiByYW5nZTogJWRcIiBpICgpXG47O1xuXG5sZXQgZXF1YWwgKHQxIDogY2hhcikgdDIgPSBQb2x5LmVxdWFsIHQxIHQyXG4iLCIoKiBbSW50MF0gZGVmaW5lcyBpbnRlZ2VyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW0NhbWxdLiBbSW50MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZVxuICAgcGFydCBvZiBbQ2FtbF0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbQ2FtbF0uIFtJbnQwXSBoYXNcbiAgIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGludHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkludF0gaW4gYnVpbGRcbiAgIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEludCAgPSBJbnQwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEludCA9IEludDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXBcbiAgIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuSW50XS4gKilcblxubGV0IHRvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2ludFxubGV0IG9mX3N0cmluZyA9IENhbWwuaW50X29mX3N0cmluZ1xubGV0IHRvX2Zsb2F0ID0gQ2FtbC5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IENhbWwuaW50X29mX2Zsb2F0XG5sZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gQ2FtbC5taW5faW50XG5sZXQgc3VjYyA9IENhbWwuc3VjY1xuIiwiKCogW0xpc3QwXSBkZWZpbmVzIGxpc3QgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkxpc3RdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGxpc3QwLm1sIHNob3VsZCB1c2UgW0NhbWwuTGlzdF0uXG4gICBbTGlzdDBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGxpc3RzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5MaXN0XSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgTGlzdCA9IExpc3QwXS4gIERlZmluaW5nIFttb2R1bGUgTGlzdCA9IExpc3QwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkxpc3RdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBDYW1sLkxpc3QuaGRcbmxldCBsZW5ndGggPSBDYW1sLkxpc3QubGVuZ3RoXG5sZXQgcmV2X2FwcGVuZCA9IENhbWwuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gQ2FtbC5MaXN0LnRsXG5sZXQgdW56aXAgPSBDYW1sLkxpc3Quc3BsaXRcblxuKCogVGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5sZXQgZXhpc3RzIHQgfmYgPSBDYW1sLkxpc3QuZXhpc3RzIHQgfmZcbmxldCBleGlzdHMyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LmV4aXN0czIgbDEgbDIgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkxpc3QuZm9sZF9sZWZ0IHQgfmYgfmluaXRcbmxldCBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQyIGwxIGwyIH5pbml0IH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gQ2FtbC5MaXN0LmZvcl9hbGwgdCB+ZlxubGV0IGZvcl9hbGwyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LmZvcl9hbGwyIGwxIGwyIH5mXG5sZXQgaXRlciB0IH5mID0gQ2FtbC5MaXN0Lml0ZXIgdCB+ZlxubGV0IGl0ZXIyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0Lml0ZXIyIGwxIGwyIH5mXG5sZXQgbm9udGFpbF9tYXAgdCB+ZiA9IENhbWwuTGlzdC5tYXAgdCB+ZlxubGV0IG5vbnRhaWxfbWFwaSB0IH5mID0gQ2FtbC5MaXN0Lm1hcGkgdCB+ZlxubGV0IHBhcnRpdGlvbiB0IH5mID0gQ2FtbC5MaXN0LnBhcnRpdGlvbiB0IH5mXG5sZXQgcmV2X21hcCB0IH5mID0gQ2FtbC5MaXN0LnJldl9tYXAgdCB+ZlxubGV0IHJldl9tYXAyX29rIGwxIGwyIH5mID0gQ2FtbC5MaXN0LnJldl9tYXAyIGwxIGwyIH5mXG5sZXQgc29ydCBsIH5jb21wYXJlID0gQ2FtbC5MaXN0LnNvcnQgbCB+Y21wOmNvbXBhcmVcbmxldCBzdGFibGVfc29ydCBsIH5jb21wYXJlID0gQ2FtbC5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mIH5pbml0ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXyAtPiBmb2xkIH5mOihmdW4gYSBiIC0+IGYgYiBhKSB+aW5pdCAocmV2IGwpXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBDYW1sLkludDMyLnRvX2ludFxuICBsZXQgaGFzaF9mb2xkX2NoYXIgPSBhc19pbnQgQ2hhci50b19pbnRcblxuICBsZXQgaGFzaF9mb2xkX2Jvb2wgPVxuICAgIGFzX2ludCAoZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiAxXG4gICAgICB8IGZhbHNlIC0+IDApXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9uYXRpdmVpbnQgcyB4ID0gaGFzaF9mb2xkX2ludDY0IHMgKENhbWwuSW50NjQub2ZfbmF0aXZlaW50IHgpXG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gaGFzaF9mb2xkX2VsZW0gcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGhhc2hfZm9sZF9pbnQgcyAwXG4gICAgfCBTb21lIHggLT4gaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9pbnQgcyAxKSB4XG4gIDs7XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCB4IDo6IHhzIC0+IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgeCkgeHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICAoKiBUaGUgW2xlbmd0aF0gb2YgdGhlIGxpc3QgbXVzdCBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaGFzaC1zdGF0ZSBzbyB2YWx1ZXMgb2ZcbiAgICAgICB0eXBlcyBzdWNoIGFzIFt1bml0IGxpc3RdIC0gKFtdLCBbKCldLCBbKCk7KCldLC4uKSBhcmUgaGFzaGVkIGRpZmZlcmVudGx5LiAqKVxuICAgICgqIFRoZSBbbGVuZ3RoXSBtdXN0IGNvbWUgYmVmb3JlIHRoZSBlbGVtZW50cyB0byBhdm9pZCBhIHZpb2xhdGlvbiBvZiB0aGUgcnVsZVxuICAgICAgIGVuZm9yY2VkIGJ5IFBlcmZlY3RfaGFzaC4gKilcbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9pbnQgcyAoTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0IGluXG4gICAgc1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGF6eV90IGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgKENhbWwuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgcGh5c19lcXVhbCA9IHBoeXNfZXF1YWxcblxuZXh0ZXJuYWwgcG9seW1vcnBoaWNfY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgcG9seW1vcnBoaWNfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcblxubGV0IGNvbXBhcmVfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiQ29tcGFyZSBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG5sZXQgZXF1YWxfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiRXF1YWwgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxudHlwZSAnYSBjb21wYXJlID0gJ2EgLT4gJ2EgLT4gaW50XG50eXBlICdhIGVxdWFsID0gJ2EgLT4gJ2EgLT4gYm9vbFxuXG5tb2R1bGUgQ29tcGFyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY29tcGFyZSA6IHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdhIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gKCdhLCAnYikgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gJ2MgY29tcGFyZSAtPiAoJ2EsICdiLCAnYykgdCBjb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFcXVhbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAoJ2EsICdiKSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gJ2MgZXF1YWwgLT4gKCdhLCAnYiwgJ2MpIHQgZXF1YWxcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmVfYm9vbCA6IGJvb2wgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9jaGFyIDogY2hhciBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2Zsb2F0IDogZmxvYXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQgOiBpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQzMiA6IGludDMyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50NjQgOiBpbnQ2NCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA6IG5hdGl2ZWludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3N0cmluZyA6IHN0cmluZyBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3VuaXQgOiB1bml0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgY29tcGFyZV9hcnJheSBjb21wYXJlX2VsdCBhIGIgPVxuICAgIGlmIHBoeXNfZXF1YWwgYSBiXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICAgIGlmIHJldCA8PiAwXG4gICAgICB0aGVuIHJldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgMCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBbXSwgXyAtPiAtMVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IHggeSBpblxuICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgY29tcGFyZV9vcHRpb24gY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgIHwgTm9uZSwgU29tZSBfIC0+IC0xXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gMVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gY29tcGFyZV9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfcmVmIGNvbXBhcmVfZWx0IGEgYiA9IGNvbXBhcmVfZWx0ICFhICFiXG4gIGxldCBlcXVhbF9ib29sIDogYm9vbCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2NoYXIgOiBjaGFyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50IDogaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50MzIgOiBpbnQzMiBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDY0IDogaW50NjQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9zdHJpbmcgOiBzdHJpbmcgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF91bml0IDogdW5pdCBlcXVhbCA9IFBvbHkuZXF1YWxcblxuICAoKiBbUG9seS5lcXVhbF0gaXMgSUVFRSBjb21wbGlhbnQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgaGVyZS4gKilcbiAgbGV0IGVxdWFsX2Zsb2F0IHggeSA9IGVxdWFsX2ludCAoY29tcGFyZV9mbG9hdCB4IHkpIDBcblxuICBsZXQgZXF1YWxfYXJyYXkgZXF1YWxfZWx0IGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fFxuICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgIGVxdWFsIGxlbl9hIGxlbl9iXG4gICAgJiZcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpID0gbGVuX2FcbiAgICAgIHx8XG4gICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIGVxdWFsX2VsdCBsIHIgJiYgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgcmVjIGVxdWFsX2xpc3QgZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiBlcXVhbF9lbHQgeCB5ICYmIGVxdWFsX2xpc3QgZXF1YWxfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBlcXVhbF9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGVxdWFsX3JlZiBlcXVhbF9lbHQgYSBiID0gZXF1YWxfZWx0ICFhICFiXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyBmb3IgdXNlIGJ5IHBweF9oYXNoLCBhbmQgaXMgdGh1cyBub3QgaW4gdGhlIGludGVyZmFjZSBvZiBCYXNlLiAqKVxubW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgSGFzaCA9IEhhc2ggKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoICopXG5lbmRcblxudHlwZSAnYSBoYXNoX2ZvbGQgPSBTdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBTdGQuSGFzaC5zdGF0ZVxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogdCBoYXNoX2ZvbGRcbiAgICB2YWwgaGFzaCA6IHQgLT4gU3RkLkhhc2guaGFzaF92YWx1ZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdhIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2IgaGFzaF9mb2xkIC0+ICgnYSwgJ2IpIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90XG4gICAgICA6ICAnYSBoYXNoX2ZvbGRcbiAgICAgIC0+ICdiIGhhc2hfZm9sZFxuICAgICAgLT4gJ2MgaGFzaF9mb2xkXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBoYXNoX2ZvbGRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gSGFzaC5CdWlsdGluXG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIFNleHBsaWIwLlNleHBcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID0gU2V4cGxpYjAuU2V4cC50ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxubGV0IHJlYyBjb21wYXJlID1cbiAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAxXyBiX18wMDJfXG4gICAgIHRoZW4gMFxuICAgICBlbHNlIChcbiAgICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgICB8IEF0b20gX2FfXzAwM18sIEF0b20gX2JfXzAwNF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwM18gX2JfXzAwNF9cbiAgICAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICAgICB8IExpc3QgX2FfXzAwNV8sIExpc3QgX2JfXzAwNl8gLT4gY29tcGFyZV9saXN0IGNvbXBhcmUgX2FfXzAwNV8gX2JfXzAwNl8pXG4gICAgICAgOiB0IC0+IHQgLT4gaW50KVxuOztcblxubGV0IHJlYyAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQXRvbSBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IF9hMFxuICAgICB8IExpc3QgX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfdCBoc3YgX2EwXG4gICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG5cbmFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9jb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmxldCBvZl9zdHJpbmcgPSAoKVxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID1cbiAgfCBXMzJcbiAgfCBXNjRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBXMzIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzMyXCJcbiAgICB8IFc2NCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXNjRcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbnVtX2JpdHMgPSBmdW5jdGlvblxuICB8IFczMiAtPiAzMlxuICB8IFc2NCAtPiA2NFxuOztcblxubGV0IHdvcmRfc2l6ZSA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemVfaW5fYml0cyB3aXRoXG4gIHwgMzIgLT4gVzMyXG4gIHwgNjQgLT4gVzY0XG4gIHwgXyAtPiBmYWlsd2l0aCBcInVua25vd24gd29yZCBzaXplXCJcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHIgPSByZWYgWyBcIkJhc2UuU2V4cC5wcF9odW1cIiBdXG5sZXQgYWxsICgpID0gIXJcbmxldCByZWdpc3RlciBwID0gciA6PSBwIDo6ICFyXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHBwIDogRm9ybWF0dGVyLnQgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX3BwIChNIDogc2lnXG4gICAgaW5jbHVkZSBTXG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgbGV0ICgpID0gcmVnaXN0ZXIgKE0ubW9kdWxlX25hbWUgXiBcIi5wcFwiKVxuZW5kXG5cbm1vZHVsZSBSZWdpc3RlciAoTSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuICBSZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBsZXQgcHAgZm9ybWF0dGVyIHQgPSBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gQ2FtbC5leGl0XG5cbmV4Y2VwdGlvbiBGaW5hbGx5IG9mIHQgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmluYWxseV0gKGZ1bmN0aW9uXG4gICAgfCBGaW5hbGx5IChhcmcwX18wMDFfLCBhcmcxX18wMDJfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3QgYXJnMF9fMDAxX1xuICAgICAgYW5kIHJlczFfXzAwNF8gPSBzZXhwX29mX3QgYXJnMV9fMDAyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLkZpbmFsbHlcIjsgcmVzMF9fMDAzXzsgcmVzMV9fMDA0XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBSZXJhaXNlZCBvZiBzdHJpbmcgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUmVyYWlzZWRdIChmdW5jdGlvblxuICAgIHwgUmVyYWlzZWQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDA3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwNV9cbiAgICAgIGFuZCByZXMxX18wMDhfID0gc2V4cF9vZl90IGFyZzFfXzAwNl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5SZXJhaXNlZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50XG5cbigqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2U6XG5cbiAgIHtbXG4gICAgIGV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cbiAgICAgKCogLi4uICopXG4gICAgIFtAQEBlbmRdXG4gICBdfVxuXG4gICB0byBlbGltaW5hdGUgdGhlIGV4dHJhIHdyYXBwaW5nIG9mIFsoU2V4cCAuLi4pXS4gKilcbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXhwXSAoZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gU2V4cCBzZXhwXG5cbmxldCByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSB0IGJhY2t0cmFjZSA9XG4gIENhbWwuUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgdCBiYWNrdHJhY2Vcbjs7XG5cbmV4dGVybmFsIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgOiB0IC0+IGJvb2wgPSBcIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuXCJcblxubGV0IHJlcmFpc2UgZXhuIHN0ciA9XG4gIGxldCBleG4nID0gUmVyYWlzZWQgKHN0ciwgZXhuKSBpblxuICBpZiBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4blxuICB0aGVuIChcbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIChtYXRjaCBmaW5hbGx5IHggd2l0aFxuICAgICB8ICgpIC0+IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBidFxuICAgICB8IGV4Y2VwdGlvbiBmaW5hbF9leG4gLT5cbiAgICAgICAoKiBVbmZvcnR1bmF0ZWx5LCB0aGUgYmFja3RyYWNlIG9mIHRoZSBbZmluYWxfZXhuXSBpcyBkaXNjYXJkZWQgaGVyZS4gKilcbiAgICAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRmluYWxseSAoZXhuLCBmaW5hbF9leG4pKSBidClcbjs7XG5cbmxldCBwcm90ZWN0IH5mIH5maW5hbGx5ID0gcHJvdGVjdHggfmYgKCkgfmZpbmFsbHlcblxubGV0IGRvZXNfcmFpc2UgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgdHJ5XG4gICAgaWdub3JlIChmICgpIDogYSk7XG4gICAgZmFsc2VcbiAgd2l0aFxuICB8IF8gLT4gdHJ1ZVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSB0ID0gZXhuXG5cbiAgICBsZXQgcHAgcHBmIHQgPVxuICAgICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IHQgd2l0aFxuICAgICAgfCBTb21lIHNleHAgLT4gU2V4cC5wcF9odW0gcHBmIHNleHBcbiAgICAgIHwgTm9uZSAtPiBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChDYW1sLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBDYW1sLkZvcm1hdC5lcHJpbnRmIFwiQFs8Mj5VbmNhdWdodCBleGNlcHRpb246QFxcbkBcXG5AWyVhQF1AXUBcXG5ALlwiIHBwIGV4YztcbiAgaWYgQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzICgpXG4gIHRoZW4gQ2FtbC5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIENhbWwuc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIENhbWwuZmx1c2ggQ2FtbC5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBDYW1sLlByaW50ZXhjLnNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBwcmludF93aXRoX2JhY2t0cmFjZVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hdXggfmRvX2F0X2V4aXQgfmV4aXQgZiA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleGMgLT5cbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAoKiBPbmUgcmVhc29uIHRvIHJ1biBbZG9fYXRfZXhpdF0gaGFuZGxlcnMgYmVmb3JlIHByaW50aW5nIG91dCB0aGUgZXJyb3IgbWVzc2FnZSBpc1xuICAgICAgIHRoYXQgaXQgaGVscHMgY3Vyc2VzIGFwcGxpY2F0aW9ucyBicmluZyB0aGUgdGVybWluYWwgaW4gYSBnb29kIHN0YXRlLCBvdGhlcndpc2UgdGhlXG4gICAgICAgZXJyb3IgbWVzc2FnZSBtaWdodCBnZXQgY29ycnVwdGVkLiAgQWxzbywgdGhlIE9DYW1sIHRvcC1sZXZlbCB1bmNhdWdodCBleGNlcHRpb25cbiAgICAgICBoYW5kbGVyIGRvZXMgdGhlIHNhbWUuICopXG4gICAgaWYgZG9fYXRfZXhpdFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IENhbWwuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgQ2FtbC5QcmludGYuZXByaW50ZiBcIkV4bi5oYW5kbGVfdW5jYXVnaHQgY291bGQgbm90IHByaW50OyBleGl0aW5nIGFueXdheVxcbiUhXCJcbiAgICAgICAgd2l0aFxuICAgICAgICB8IF8gLT4gKCkpKTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9IGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdCB+ZG9fYXRfZXhpdDp0cnVlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHQgfmV4aXQ6bXVzdF9leGl0IGYgPVxuICBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQ6KGlmIG11c3RfZXhpdCB0aGVuIGV4aXQgZWxzZSBpZ25vcmUpIH5kb19hdF9leGl0Om11c3RfZXhpdFxuOztcblxubGV0IHJlcmFpc2VfdW5jYXVnaHQgc3RyIGZ1bmMgPVxuICB0cnkgZnVuYyAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgbGV0IGJ0ID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChSZXJhaXNlZCAoc3RyLCBleG4pKSBidFxuOztcblxuZXh0ZXJuYWwgY2xlYXJfYmFja3RyYWNlIDogdW5pdCAtPiB1bml0ID0gXCJCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvc1wiIFtAQG5vYWxsb2NdXG5cbmxldCByYWlzZV93aXRob3V0X2JhY2t0cmFjZSBlID1cbiAgKCogV2UgY2xlYXIgdGhlIGJhY2t0cmFjZSB0byByZWR1Y2UgY29uZnVzaW9uLCBzbyB0aGF0IHBlb3BsZSBkb24ndCB0aGluayB3aGF0ZXZlclxuICAgICBpcyBzdG9yZWQgY29ycmVzcG9uZHMgdG8gdGhpcyByYWlzZS4gKilcbiAgY2xlYXJfYmFja3RyYWNlICgpO1xuICBDYW1sLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSlcbjs7XG5cbmxldCBwcmVwZW5kIHsgcmV0dXJuIH0gfmYgPSB7IHJldHVybiA9IChmdW4geCAtPiByZXR1cm4gKGYgeCkpIH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBCYXNpYyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFt0ID4+fCBmXSBpcyBbdCA+Pj0gKGZ1biBhIC0+IHJldHVybiAoZiBhKSldLiAqKVxuICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4ID0gc2lnXG4gICgqKiBPcGVuaW5nIGEgbW9kdWxlIG9mIHRoaXMgdHlwZSBhbGxvd3Mgb25lIHRvIHVzZSB0aGUgWyViaW5kXSBhbmQgWyVtYXBdIHN5bnRheFxuICAgICAgZXh0ZW5zaW9ucyBkZWZpbmVkIGJ5IHBweF9sZXQsIGFuZCBicmluZ3MgW3JldHVybl0gaW50byBzY29wZS4gKilcblxuICB0eXBlICdhIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgIHZhbCBib3RoIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbYmluZCB0IH5mXSA9IFt0ID4+PSBmXSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICgqKiBbcmV0dXJuIHZdIHJldHVybnMgdGhlICh0cml2aWFsKSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgdi4gKilcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogW21hcCB0IH5mXSBpcyB0ID4+fCBmLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuXG4gICgqKiBbam9pbiB0XSBpcyBbdCA+Pj0gKGZ1biB0JyAtPiB0JyldLiAqKVxuICB2YWwgam9pbiA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFtpZ25vcmVfbSB0XSBpcyBbbWFwIHQgfmY6KGZ1biBfIC0+ICgpKV0uICBbaWdub3JlX21dIHVzZWQgdG8gYmUgY2FsbGVkIFtpZ25vcmVdLFxuICAgICAgYnV0IHdlIGRlY2lkZWQgdGhhdCB3YXMgYSBiYWQgbmFtZSwgYmVjYXVzZSBpdCBzaGFkb3dlZCB0aGUgd2lkZWx5IHVzZWRcbiAgICAgIFtDYW1sLmlnbm9yZV0uICBTb21lIG1vbmFkcyBzdGlsbCBkbyBbbGV0IGlnbm9yZSA9IGlnbm9yZV9tXSBmb3IgaGlzdG9yaWNhbFxuICAgICAgcmVhc29ucy4gKilcbiAgdmFsIGlnbm9yZV9tIDogJ2EgdCAtPiB1bml0IHRcblxuICB2YWwgYWxsIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gICgqKiBMaWtlIFthbGxdLCBidXQgZW5zdXJlcyB0aGF0IGV2ZXJ5IG1vbmFkaWMgdmFsdWUgaW4gdGhlIGxpc3QgcHJvZHVjZXMgYSB1bml0IHZhbHVlLFxuICAgICAgYWxsIG9mIHdoaWNoIGFyZSBkaXNjYXJkZWQgcmF0aGVyIHRoYW4gYmVpbmcgY29sbGVjdGVkIGludG8gYSBsaXN0LiAqKVxuICB2YWwgYWxsX3VuaXQgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzIgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2V0cyB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlIGNvbXB1dGF0aW9uLlxuICAgICAgVGhpcyBpcyB1c2VkIHRvIGVuY29kZSBtb25hZHMgd29ya2luZyBvbiBhIG11bHRpIHBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBsaWtlXG4gICAgICAoWygnYSwnYikgcmVzdWx0XSkuICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0IF1cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2UpIHQpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2UpIHQgLT4gKCdiLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2UpIHQsICdlKSB0IC0+ICgnYSwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdlKSB0IC0+ICh1bml0LCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzMgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBnZXQgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZVxuICAgICAgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MyA9IHNpZ1xuICAoKiogU2FtZSBhcyBJbmZpeCwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZVxuICAgICAgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXgzID0gc2lnXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYiwgJ2QsICdlKSB0IC0+ICgnYSAqICdiLCAnZCwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZFxuICAgICAgYW5kIHRoaXJkIGFyZSBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIGluY2x1ZGUgU3ludGF4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdkLCAnZSkgdCwgJ2QsICdlKSB0IC0+ICgnYSwgJ2QsICdlKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnZCwgJ2UpIHQgLT4gKHVuaXQsICdkLCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZCwgJ2UpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IHNpZ1xuICAoKiogSW5kZXhlZCBtb25hZCwgaW4gdGhlIHN0eWxlIG9mIEF0a2V5LiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGFyZSBjb21wb3NlZFxuICAgICAgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gVG8gc2VlIHRoaXMgbW9yZSBjbGVhcmx5LCB5b3UgY2FuIGxvb2sgYXQgdGhlIHR5cGUgb2YgYmluZDpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIF19XG5cbiAgICAgIGFuZCBpc29sYXRlIHNvbWUgb2YgdGhlIHR5cGUgdmFyaWFibGVzIHRvIHNlZSB0aGVpciBpbmRpdmlkdWFsIGJlaGF2aW9yczpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAnYSAgICAgICAgICAgICAtPiBmOignYSAtPiAgJ2IgICAgICAgICAgICkgLT4gICdiXG4gICAgICAgIHZhbCBiaW5kIDogICAgICAnaSwgJ2ogICAgLT4gICAgICAgICAgICAgICAnaiwgJ2sgICAgIC0+ICAgICAnaSwgJ2tcbiAgICAgIF19XG5cbiAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEF0a2V5LXN0eWxlIGluZGV4ZWQgbW9uYWRzLCBzZWU6XG5cbiAgICAgIHt2XG4gICAgICAgIFBhcmFtZXRlcmlzZWQgTm90aW9ucyBvZiBDb21wdXRhdGlvblxuICAgICAgICBSb2JlcnQgQXRrZXlcbiAgICAgICAgaHR0cDovL2JlbnRuaWIub3JnL3BhcmFtbm90aW9ucy1qZnAucGRmXG4gICAgICB2fSAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBzaWdcbiAgKCoqIFNhbWUgYXMgeyFJbmZpeH0sIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcblxuICAgIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYiwgJ2osICdrKSB0IC0+ICgnYSAqICdiLCAnaSwgJ2spIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2luZGV4ZWQgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBpbmNsdWRlIFN5bnRheF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2osICdrKSB0LCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2spIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdpLCAnaikgdCAtPiAodW5pdCwgJ2ksICdqKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdpLCAnaSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnaSwgJ2kpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdpLCAnaSkgdCBsaXN0IC0+ICh1bml0LCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgU190b19TX2luZGV4ZWQgKFggOiBTKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChYIDogUzIpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFNfaW5kZXhlZF90b19TMiAoWCA6IFNfaW5kZXhlZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnQgPVxuc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNb25hZCA9IHNpZ1xuICAoKiogQSBtb25hZCBpcyBhbiBhYnN0cmFjdGlvbiBvZiB0aGUgY29uY2VwdCBvZiBzZXF1ZW5jaW5nIG9mIGNvbXB1dGF0aW9ucy4gIEEgdmFsdWUgb2ZcbiAgICAgIHR5cGUgWydhIG1vbmFkXSByZXByZXNlbnRzIGEgY29tcHV0YXRpb24gdGhhdCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSBbJ2FdLiAqKVxuXG4gIG1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNcbiAgbW9kdWxlIHR5cGUgQmFzaWMyID0gQmFzaWMyXG4gIG1vZHVsZSB0eXBlIEJhc2ljMyA9IEJhc2ljM1xuICBtb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gQmFzaWNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4XG4gIG1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4MlxuICBtb2R1bGUgdHlwZSBJbmZpeDMgPSBJbmZpeDNcbiAgbW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IEluZml4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU3ludGF4ID0gU3ludGF4XG4gIG1vZHVsZSB0eXBlIFN5bnRheDIgPSBTeW50YXgyXG4gIG1vZHVsZSB0eXBlIFN5bnRheDMgPSBTeW50YXgzXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gU3ludGF4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IFNfd2l0aG91dF9zeW50YXhcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICBtb2R1bGUgdHlwZSBTMyA9IFMzXG4gIG1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IFNfaW5kZXhlZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnRcbiAgbW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudFxuICBtb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9pbmRleGVkIChYIDogQmFzaWNfaW5kZXhlZCkgOlxuICAgIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gICgqKiBEZWZpbmUgYSBtb25hZCB0aHJvdWdoIGFuIGlzb21vcnBoaXNtIHdpdGggYW4gZXhpc3RpbmcgbW9uYWQuIEZvciBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlICdhIHQgPSB7IHZhbHVlIDogJ2EgfVxuXG4gICAgICAgIGluY2x1ZGUgTW9uYWQuT2ZfbW9uYWQgKE1vbmFkLklkZW50KSAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgICAgICBsZXQgdG9fbW9uYWQgeyB2YWx1ZSB9ID0gdmFsdWVcbiAgICAgICAgICAgIGxldCBvZl9tb25hZCB2YWx1ZSA9IHsgdmFsdWUgfVxuICAgICAgICAgIGVuZClcbiAgICAgIF19ICopXG4gIG1vZHVsZSBPZl9tb25hZFxuICAgICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDJcbiAgICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQzXG4gICAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udFxuXG4gIG1vZHVsZSBJZGVudCA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTW9uYWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW5lcmFsID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kXG4gICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuZXJhbCAoTSA6IEJhc2ljX2dlbmVyYWwpID0gc3RydWN0XG4gIGxldCBiaW5kID0gTS5iaW5kXG4gIGxldCByZXR1cm4gPSBNLnJldHVyblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSlcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIGEgYiA9IGEgPj49IGZ1biBhIC0+IGIgPj58IGZ1biBiIC0+IGEsIGJcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgam9pbiB0ID0gdCA+Pj0gZnVuIHQnIC0+IHQnXG4gIGxldCBpZ25vcmVfbSB0ID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKVxuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaW5kZXhlZCAoTSA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTMgKE0gOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBNLnQgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMiAoTSA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA6PSAoJ2EsICdkKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKE0gOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfZ2VuZXJhbCAoTW9uYWQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBiaW5kXG4gICAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2osICdkLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBNLm9mX21vbmFkIChNb25hZC5yZXR1cm4gYSlcbiAgICBsZXQgYmluZCB0IH5mID0gTS5vZl9tb25hZCAoTW9uYWQuYmluZCAoTS50b19tb25hZCB0KSB+ZjooZnVuIGEgLT4gTS50b19tb25hZCAoZiBhKSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gKGZ1biB0IH5mIC0+IE0ub2ZfbW9uYWQgKE1vbmFkLm1hcCAoTS50b19tb25hZCB0KSB+ZikpXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkM1xuICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkMlxuICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRcbiAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgYmluZCBhIH5mID0gZiBhXG4gICAgICBsZXQgcmV0dXJuIGEgPSBhXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIGEgfmYgLT4gZiBhKVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxuKCoqIFRoaXMgbW9kdWxlIHNlcnZlcyBtb3N0bHkgYXMgYSBwYXJ0aWFsIGNoZWNrIHRoYXQgW1MyXSBhbmQgW1NdIGFyZSBpbiBzeW5jLCBidXRcbiAgICBhY3R1YWxseSBjYWxsaW5nIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwuICopXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW0NhbWwuQnl0ZXNdLiBbQnl0ZXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3NcbiAgIHRoZSBwYXJ0IG9mIFtDYW1sLkJ5dGVzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBieXRlczAubWwgc2hvdWxkIHVzZSBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuXG4gICgqIFt1bnNhZmVfYmxpdF9zdHJpbmddIGlzIG5vdCBleHBvcnRlZCBpbiB0aGUgW3N0ZGxpYl0gc28gd2UgZXhwb3J0IGl0IGhlcmUgKilcbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgOiAgc3JjOnN0cmluZ1xuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OmJ5dGVzXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IENhbWwuQnl0ZXMuYmxpdFxubGV0IGJsaXRfc3RyaW5nID0gQ2FtbC5CeXRlcy5ibGl0X3N0cmluZ1xubGV0IGNvbXBhcmUgPSBDYW1sLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gQ2FtbC5CeXRlcy5jb3B5XG5sZXQgY3JlYXRlID0gQ2FtbC5CeXRlcy5jcmVhdGVcbmxldCBmaWxsID0gQ2FtbC5CeXRlcy5maWxsXG5sZXQgbWFrZSA9IENhbWwuQnl0ZXMubWFrZVxubGV0IG1hcCA9IENhbWwuQnl0ZXMubWFwXG5sZXQgbWFwaSA9IENhbWwuQnl0ZXMubWFwaVxubGV0IHN1YiA9IENhbWwuQnl0ZXMuc3ViXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLkJ5dGVzLnVuc2FmZV9ibGl0XG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5CeXRlcy50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBDYW1sLkJ5dGVzLm9mX3N0cmluZ1xubGV0IHVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cyA9IENhbWwuQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5sZXQgdW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211dGF0aW9uID0gQ2FtbC5CeXRlcy51bnNhZmVfb2Zfc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID1cbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gIH1cblxudHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhIHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfZmMgPSBzaWdcbiAgdHlwZSBjb21wYXJhYmxlX3RcblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gY29tcGFyYWJsZV90XG5lbmRcblxubW9kdWxlIE1vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYilcbmVuZFxuXG5sZXQgbWFrZSAodHlwZSB0KSB+Y29tcGFyZSB+c2V4cF9vZl90ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIGNvbXBhcmFibGVfdCA9IHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZCA6IFNfZmNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZV90ID0gdClcbjs7XG5cbm1vZHVsZSBTX3RvX1MxIChTIDogUykgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gUy50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gUy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBvcGVuIFNcblxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAnYSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCJfXCJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZF9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXApIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCBfKSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2EsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcF9hIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdmLCAncykgdCA9XG4gIHwgRmlyc3Qgb2YgJ2ZcbiAgfCBTZWNvbmQgb2YgJ3NcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDpcbiAgJ2YgJ3MuICgnZiAtPiAnZiAtPiBpbnQpIC0+ICgncyAtPiAncyAtPiBpbnQpIC0+ICgnZiwgJ3MpIHQgLT4gKCdmLCAncykgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fZiBfY21wX19zIGFfXzAwMV8gYl9fMDAyXyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAnZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAncyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAtPiAoJ2YsICdzKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbQ2FtbC5TdHJpbmddLiBbU3RyaW5nMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbQ2FtbC5TdHJpbmddIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3RyaW5nMC5tbCBzaG91bGRcbiAgIHVzZSBbQ2FtbC5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4XG4gICBbeC4oaSldIG9yIFt4LihpKSA8LSBlXSB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG9cbiAgIFtTdHJpbmddLCBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuU3RyaW5nXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cblxuICAge1tcbiAgICAgbW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgU3RyaW5nID0gU3RyaW5nMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TdHJpbmddLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgICAgICAgIDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmVuZFxuXG5pbmNsdWRlIFN0cmluZ1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0ICggXiApID0gKCBeIClcbmxldCBjYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IGNvbXBhcmUgPSBDYW1sLlN0cmluZy5jb21wYXJlXG5cbmxldCBjb3B5IHggPVxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6XG4gICAgICAoQnl0ZXMub2Zfc3RyaW5nIHgpXG47O1xuXG5sZXQgZXNjYXBlZCA9IENhbWwuU3RyaW5nLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBDYW1sLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBtYWtlID0gQ2FtbC5TdHJpbmcubWFrZVxubGV0IHN1YiA9IENhbWwuU3RyaW5nLnN1YlxubGV0IHVuY2FwaXRhbGl6ZSA9IENhbWwuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IHVuc2FmZV9ibGl0ID0gQ2FtbC5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBDYW1sLlN0cmluZy51cHBlcmNhc2VfYXNjaWlcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBDYW1sLlN0cmluZy5jb25jYXQgfnNlcCBsXG47O1xuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBpdGVyIHQgfmYgPSBDYW1sLlN0cmluZy5pdGVyIHQgfmZcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbWwuTGV4aW5nLnBvc2l0aW9uID1cbiAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICA7IHBvc19ib2wgOiBpbnRcbiAgICA7IHBvc19jbnVtIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9pbnQgcG9zX2NudW1fXzAxMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2ZfaW50IHBvc19ib2xfXzAwOF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgcG9zX2xudW1fXzAwNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIHBvc19mbmFtZV9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDNfXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBQcHhfaGVyZS5saWZ0X3Bvc2l0aW9uX2FzX3N0cmluZy4gKilcbmxldCBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2wgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgWyBwb3NfZm5hbWU7IFwiOlwiOyBJbnQudG9fc3RyaW5nIHBvc19sbnVtOyBcIjpcIjsgSW50LnRvX3N0cmluZyAocG9zX2NudW0gLSBwb3NfYm9sKSBdXG47O1xuXG5sZXQgdG9fc3RyaW5nIHsgQ2FtbC5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgfSA9XG4gIG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbFxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaXN0MFxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCAoZiB4IDogXyBFaXRoZXIwLnQpIHdpdGhcbiAgICAgICB8IEZpcnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kXG4gICAgICAgfCBTZWNvbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQ2FtbC5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDI3XyBiX18wMjhfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMjdfLCBiX18wMjhfIHdpdGhcbiAgICB8IE9rIF9hX18wMjlfLCBPayBfYl9fMDMwXyAtPiBfY21wX19hIF9hX18wMjlfIF9iX18wMzBfXG4gICAgfCBPayBfLCBfIC0+IC0xXG4gICAgfCBfLCBPayBfIC0+IDFcbiAgICB8IEVycm9yIF9hX18wMzFfLCBFcnJvciBfYl9fMDMyXyAtPiBfY21wX19iIF9hX18wMzFfIF9iX18wMzJfKVxuOztcblxubGV0IGVxdWFsIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAzM18gYl9fMDM0XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMzNfIGJfXzAzNF9cbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAzM18sIGJfXzAzNF8gd2l0aFxuICAgIHwgT2sgX2FfXzAzNV8sIE9rIF9iX18wMzZfIC0+IF9jbXBfX2EgX2FfXzAzNV8gX2JfXzAzNl9cbiAgICB8IE9rIF8sIF8gLT4gZmFsc2VcbiAgICB8IF8sIE9rIF8gLT4gZmFsc2VcbiAgICB8IEVycm9yIF9hX18wMzdfLCBFcnJvciBfYl9fMDM4XyAtPiBfY21wX19iIF9hX18wMzdfIF9iX18wMzhfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBhIGIuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChhLCBiKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IE9rIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgfCBFcnJvciBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG47O1xuXG5bQEBAZW5kXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCByZXR1cm4geCA9IE9rIHhcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGNoZWNrX29rIGNoZWNrX2Vycm9yIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBvayAtPiBjaGVja19vayBva1xuICB8IEVycm9yIGVycm9yIC0+IGNoZWNrX2Vycm9yIGVycm9yXG47O1xuXG5sZXQgZmFpbCB4ID0gRXJyb3IgeFxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxuXG5sZXQgbWFwX2Vycm9yIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBfIGFzIHggLT4geFxuICB8IEVycm9yIHggLT4gRXJyb3IgKGYgeClcbjs7XG5cbm1vZHVsZSBFcnJvciA9IE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT2sgXyBhcyBvayAtPiBva1xuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBfZXJyb3JcbiAgICBsZXQgcmV0dXJuIGUgPSBFcnJvciBlXG4gIGVuZClcblxubGV0IGlzX29rID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gZmFsc2VcbiAgfCBFcnJvciBfIC0+IHRydWVcbjs7XG5cbmxldCBvayA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBTb21lIHhcbiAgfCBFcnJvciBfIC0+IE5vbmVcbjs7XG5cbmxldCBlcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBOb25lXG4gIHwgRXJyb3IgeCAtPiBTb21lIHhcbjs7XG5cbmxldCBvZl9vcHRpb24gb3B0IH5lcnJvciA9XG4gIG1hdGNoIG9wdCB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+IEVycm9yIGVycm9yXG47O1xuXG5sZXQgaXRlciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgeCAtPiBmIHhcbiAgfCBFcnJvciBfIC0+ICgpXG47O1xuXG5sZXQgaXRlcl9lcnJvciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgXyAtPiAoKVxuICB8IEVycm9yIHggLT4gZiB4XG47O1xuXG5sZXQgdG9fZWl0aGVyIDogXyB0IC0+IF8gRWl0aGVyLnQgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gRmlyc3QgeFxuICB8IEVycm9yIHggLT4gU2Vjb25kIHhcbjs7XG5cbmxldCBvZl9laXRoZXIgOiBfIEVpdGhlci50IC0+IF8gdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBPayB4XG4gIHwgU2Vjb25kIHggLT4gRXJyb3IgeFxuOztcblxubGV0IG9rX2lmX3RydWUgYm9vbCB+ZXJyb3IgPSBpZiBib29sIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvclxuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbmxldCBva19vcl9mYWlsd2l0aCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3Igc3RyIC0+IGZhaWx3aXRoIHN0clxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnb2ssICdlcnIpIF9yZXN1bHQgPSAoJ29rLCAnZXJyKSB0ID1cbiAgICB8IE9rIG9mICdva1xuICAgIHwgRXJyb3Igb2YgJ2VyclxuXG4gIGxldCBpc19lcnJvciA9IGlzX2Vycm9yXG4gIGxldCBpc19vayA9IGlzX29rXG5lbmRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IE9rIF8sIEVycm9yIGUgfCBFcnJvciBlLCBPayBfIC0+IEVycm9yIGVcbiAgfCBPayBvazEsIE9rIG9rMiAtPiBPayAob2sgb2sxIG9rMilcbiAgfCBFcnJvciBlcnIxLCBFcnJvciBlcnIyIC0+IEVycm9yIChlcnIgZXJyMSBlcnIyKVxuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0MS5wYXJ0aXRpb25fbWFwIGwgfmY6dG9fZWl0aGVyIGluXG4gIG1hdGNoIGVycnMgd2l0aFxuICB8IFtdIC0+IE9rIG9rXG4gIHwgXyA6OiBfIC0+IEVycm9yIGVycnNcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBtYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmcgZm9yIGV4cG9ydCBvbmx5ICopXG5sZXQgb2tfZnN0ID0gdG9fZWl0aGVyXG4iLCIoKiogUHJvdmlkZXMgZ2VuZXJpYyBzaWduYXR1cmVzIGZvciBjb250YWluZXIgZGF0YSBzdHJ1Y3R1cmVzLlxuXG4gICAgVGhlc2Ugc2lnbmF0dXJlcyBpbmNsdWRlIGZ1bmN0aW9ucyAoW2l0ZXJdLCBbZm9sZF0sIFtleGlzdHNdLCBbZm9yX2FsbF0sIC4uLikgdGhhdFxuICAgIHlvdSB3b3VsZCBleHBlY3QgdG8gZmluZCBpbiBhbnkgY29udGFpbmVyLiBVc2VkIGJ5IGluY2x1ZGluZyBbQ29udGFpbmVyLlMwXSBvclxuICAgIFtDb250YWluZXIuUzFdIGluIHRoZSBzaWduYXR1cmUgZm9yIGV2ZXJ5IGNvbnRhaW5lci1saWtlIGRhdGEgc3RydWN0dXJlIChbQXJyYXldLFxuICAgIFtMaXN0XSwgW1N0cmluZ10sIC4uLikgdG8gZW5zdXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqKiBbQ29udGludWVfb3Jfc3RvcC50XSBpcyB1c2VkIGJ5IHRoZSBbZl0gYXJndW1lbnQgdG8gW2ZvbGRfdW50aWxdIGluIG9yZGVyIHRvXG4gICAgICBpbmRpY2F0ZSB3aGV0aGVyIGZvbGRpbmcgc2hvdWxkIGNvbnRpbnVlLCBvciBzdG9wIGVhcmx5LlxuXG4gICAgICBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3BcbiAgKilcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgfCBDb250aW51ZSBvZiAnYVxuICAgICAgfCBTdG9wIG9mICdiXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLlN1bW1hYmxlICopXG5tb2R1bGUgdHlwZSBTdW1tYWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiogVGhlIHJlc3VsdCBvZiBzdW1taW5nIG5vIHZhbHVlcy4gKilcbiAgdmFsIHplcm8gOiB0XG5cbiAgKCoqIEFuIG9wZXJhdGlvbiB0aGF0IGNvbWJpbmVzIHR3byBbdF0ncyBhbmQgaGFuZGxlcyBbemVybyArIHhdIGJ5IGp1c3QgcmV0dXJuaW5nIFt4XSxcbiAgICAgIGFzIHdlbGwgYXMgaW4gdGhlIHN5bW1ldHJpYyBjYXNlLiAqKVxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lciAtIGEgY29udGFpbmVyIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgdHlwZSwgZS5nLixcbiAgICBzdHJpbmcsIHdoaWNoIGlzIGEgY29udGFpbmVyIG9mIGNoYXJhY3RlcnMgKFt0eXBlIGVsdCA9IGNoYXJdKSBhbmQgbmV2ZXIgb2YgYW55dGhpbmdcbiAgICBlbHNlLiAqKVxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgZWx0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gICgqKiBbaXRlcl0gbXVzdCBhbGxvdyBleGNlcHRpb25zIHJhaXNlZCBpbiBbZl0gdG8gZXNjYXBlLCB0ZXJtaW5hdGluZyB0aGUgaXRlcmF0aW9uXG4gICAgICBjbGVhbmx5LiAgVGhlIHNhbWUgaG9sZHMgZm9yIGFsbCBmdW5jdGlvbnMgYmVsb3cgdGFraW5nIGFuIFtmXS4gKilcbiAgdmFsIGl0ZXIgOiB0IC0+IGY6KGVsdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogdCAtPiBmOihlbHQgLT4gJ2Egb3B0aW9uKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF9waGFudG9tID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogXyB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiBfIHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBfIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IF8gdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuIFRoZSBvcmRlciBpbiB3aGljaCB0aGVcbiAgICAgIGVsZW1lbnRzIHdpbGwgYmUgc3VtbWVkIGlzIHVuc3BlY2lmaWVkLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IF8gdCAtPiBmOihlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogXyB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IF8gdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAgSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgIGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuICopXG4gIHZhbCBtaW5fZWx0IDogXyB0IC0+IGNvbXBhcmU6KGVsdCAtPiBlbHQgLT4gaW50KSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0gICopXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b21faW52YXJpYW50ID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICgnYSwgXykgdCAtPiBmOignYSAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eVxuICAgICAgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMV9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCArJ3BoYW50b20pIHRcblxuICBpbmNsdWRlIFMxX3BoYW50b21faW52YXJpYW50IHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+ICdhIHQgLT4gZjooJ2EgZWx0IC0+ICdzdW0pIC0+ICdzdW1cbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGVsdCBhcnJheVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpY19waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSBlbHQgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gZjooJ2EgZWx0IC0+IHVuaXQpIC0+IHVuaXQgXVxuXG4gICgqKiBUaGUgW2xlbmd0aF0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtsZW5ndGhdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lXG4gICAgICBbbGVuZ3RoXSB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGxlbmd0aCB0IH5mID0gQ29udGFpbmVyLmxlbmd0aCB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtsZW5ndGhdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2xlbmd0aF0gd2lsbCBpbXByb3ZlIHRoZWlyXG4gICAgICBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBsZW5ndGggOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBpbnQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgTW9uYWQuSWRlbnQudFxuXG5tb2R1bGUgdHlwZSBNYWtlMF9hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIHQgOj0gdCBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb250YWluZXIgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cG9ydFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IFMwXG4gIG1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBTMF9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBTMV9waGFudG9tX2ludmFyaWFudFxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tID0gUzFfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBHZW5lcmljID0gR2VuZXJpY1xuICBtb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBHZW5lcmljX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgU3VtbWFibGUgPSBTdW1tYWJsZVxuXG4gICgqKiBHZW5lcmljIGRlZmluaXRpb25zIG9mIGNvbnRhaW5lciBvcGVyYXRpb25zIGluIHRlcm1zIG9mIFtmb2xkXS5cblxuICAgICAgRS5nLjogW2l0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKV0uICopXG5cbiAgdHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPSAndCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cbiAgdHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB0eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG4gIHZhbCBpdGVyIDogZm9sZDooJ3QsICdhLCB1bml0KSBmb2xkIC0+ICgndCwgJ2EpIGl0ZXJcbiAgdmFsIGNvdW50IDogZm9sZDooJ3QsICdhLCBpbnQpIGZvbGQgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbGVuZ3RoIDogZm9sZDooJ3QsIF8sIGludCkgZm9sZCAtPiAndCAtPiBpbnRcbiAgdmFsIHRvX2xpc3QgOiBmb2xkOigndCwgJ2EsICdhIGxpc3QpIGZvbGQgLT4gJ3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBzdW1cbiAgICA6ICBmb2xkOigndCwgJ2EsICdzdW0pIGZvbGRcbiAgICAtPiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAndFxuICAgIC0+IGY6KCdhIC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2IpIGZvbGRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2IsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICd0XG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2l0ZXJdIGFuZCBbbGVuZ3RoXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGJvb2xcblxuICB2YWwgZXhpc3RzIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmluZCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgQ29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPSAndCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cbnR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSlcbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKVxuXG5sZXQgc3VtICh0eXBlIGEpIH5mb2xkIChtb2R1bGUgTSA6IFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDpNLnplcm8gfmY6KGZ1biBuIGEgLT4gTS4oICsgKSBuIChmIGEpKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBSZXN1bHQuT2tcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IFJlc3VsdC5PayB4IC0+IHhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IHJldHVybiBlKSkpXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKVxuOztcblxubGV0IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1pbiAtPiBpZiBjb21wYXJlIG1pbiBlbHQgPiAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpXG47O1xuXG5sZXQgbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWF4IC0+IGlmIGNvbXBhcmUgbWF4IGVsdCA8IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBmb3JfYWxsIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIG5vdCAoZiB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IGZpbmRfbWFwIH5pdGVyIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgdG9fbGlzdCB+Zm9sZCBjID0gTGlzdC5yZXYgKGZvbGQgYyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IC0+IHggOjogYWNjKSlcblxubGV0IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgYyA9XG4gIGxldCBhcnJheSA9IHJlZiBbfHxdIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgaXRlciBjIH5mOihmdW4geCAtPlxuICAgIGlmICFpID0gMCB0aGVuIGFycmF5IDo9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggYykgeDtcbiAgICAhYXJyYXkuKCFpKSA8LSB4O1xuICAgIGluY3IgaSk7XG4gICFhcnJheVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6IHNpZ1xuICBpbmNsdWRlIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSlcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgJ2EgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBlbHQgPSBleGlzdHMgdCB+ZjooVC5FbHQuZXF1YWwgZWx0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ2FtbC5MYXp5XG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGF6eV90X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xhenlfdFxuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsYXp5X3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9IGxhenkgKGYgKGZvcmNlIHQpKVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gMCBlbHNlIGNvbXBhcmVfYSAoZm9yY2UgdDEpIChmb3JjZSB0Milcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID0gaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIHRydWUgZWxzZSBlcXVhbF9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxubGV0IGhhc2hfZm9sZF90ID0gSGFzaC5CdWlsdGluLmhhc2hfZm9sZF9sYXp5X3RcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuOztcblxubGV0IGdldF9wb3NfbGVuX2V4biA/KHBvcyA9IDApID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGkgLT4gaVxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIHBvcywgbGVuXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biA9IHNsb3dfY2hlY2tfcG9zX2xlbl9leG5cbmVuZFxuIiwiXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICBvcGVuIENhbWwuQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgbGV0IG9mX3N0YXRlIDogQ2FtbC5SYW5kb20uU3RhdGUudCAtPiB0ID0gQ2FtbC5PYmoubWFnaWNcbmVuZFxuXG5sZXQgYXNzaWduIGRzdCBzcmMgPVxuICBsZXQgZHN0ID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBkc3QpIGluXG4gIGxldCBzcmMgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIHNyYykgaW5cbiAgQ2FtbC5CaWdhcnJheS5BcnJheTEuYmxpdCBzcmMgZHN0XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9XG4gIGxldCBzcGxpdF9mcm9tX3BhcmVudCB2ID1cbiAgICBDYW1sLkxhenkubWFwX3ZhbCBDYW1sLlJhbmRvbS5TdGF0ZS5zcGxpdCB2XG4gIGluXG4gIENhbWwuRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudCAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBnZXRfc3RhdGUgcmFuZG9tX2tleSA9IENhbWwuRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIENoYXIgPSBDaGFyMFxuXG4oKiBVbmZvcnR1bmF0ZWx5LCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXMgbm90IGV4cG9zZVxuICAgW0NhbWwuUmFuZG9tLlN0YXRlLmRlZmF1bHRdLCB3ZSBoYXZlIHRvIGNvbnN0cnVjdCBvdXIgb3duLiAgV2UgdGhlbiBidWlsZCB0aGVcbiAgIFtDYW1sLlJhbmRvbS5pbnRdLCBbQ2FtbC5SYW5kb20uYm9vbF0gZnVuY3Rpb25zIGFuZCBmcmllbmRzIHVzaW5nIHRoYXQgZGVmYXVsdCBzdGF0ZSBpblxuICAgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkuXG5cbiAgIE9uZSBvdGhlciB0cmlja2luZXNzIGlzIHRoYXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIHVuZXhwb3NlZCBbQ2FtbC5SYW5kb20uU3RhdGUuYXNzaWduXVxuICAgZnVuY3Rpb24sIHdoaWNoIGFjY2Vzc2VzIHRoZSB1bmV4cG9zZWQgc3RhdGUgcmVwcmVzZW50YXRpb24uICBTbywgd2UgY29weSB0aGVcbiAgIFtTdGF0ZS5yZXByXSB0eXBlIGRlZmluaXRpb24gYW5kIFthc3NpZ25dIGZ1bmN0aW9uIHRvIGhlcmUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSxcbiAgIGFuZCB1c2UgW09iai5tYWdpY10gdG8gZ2V0IGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbi4gKilcblxuKCogUmVncmVzc2lvbiB0ZXN0cyBvdWdodCB0byBiZSBkZXRlcm1pbmlzdGljIGJlY2F1c2UgdGhhdCB3YXkgYW55b25lIHdobyBicmVha3MgdGhlIHRlc3RcbiAgIGtub3dzIHRoYXQgaXQncyB0aGVpciBjb2RlIHRoYXQgYnJva2UgdGhlIHRlc3QuICBJZiB0ZXN0cyBhcmUgbm9uZGV0ZXJtaW5pc3RpYywgYSB0ZXN0XG4gICBmYWlsdXJlIG1heSBpbnN0ZWFkIGhhcHBlbiBiZWNhdXNlIHRoZSB0ZXN0IHJ1bm5lciBnb3QgdW5sdWNreSBhbmQgdW5jb3ZlcmVkIGFuXG4gICBleGlzdGluZyBidWcgaW4gdGhlIGNvZGUgc3VwcG9zZWRseSBiZWluZyBcInByb3RlY3RlZFwiIGJ5IHRoZSB0ZXN0IGluIHF1ZXN0aW9uLiAqKVxubGV0IGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHMgPVxuICBpZiBhbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIGFsbG93X2luX3Rlc3RzIHdpdGhcbiAgICB8IFNvbWUgdHJ1ZSAtPiAoKVxuICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIFwiaW5pdGlhbGl6aW5nIFJhbmRvbSB3aXRoIGEgbm9uZGV0ZXJtaW5pc3RpYyBzZWVkIGlzIGZvcmJpZGRlbiBpbiBpbmxpbmUgdGVzdHNcIilcbjs7XG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkIDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubGV0IHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gIHJhbmRvbV9zZWVkICgpXG47O1xuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogV2UgYWxsb3cgbGF6aW5lc3Mgb25seSBmb3IgdGhlIGRlZmluaXRpb24gb2YgW2RlZmF1bHRdLCBiZWxvdywgd2hpY2ggbWF5IGxhemlseSBjYWxsXG4gICAgIFttYWtlX3NlbGZfaW5pdF0uIEZvciBhbGwgb3RoZXIgcHVycG9zZXMsIHdlIGNyZWF0ZSBhbmQgdXNlIFt0XSBlYWdlcmx5LiAqKVxuICB0eXBlIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHQpXG4gIGxldCBib29sIHQgPSBDYW1sLlJhbmRvbS5TdGF0ZS5ib29sIChMYXp5LmZvcmNlIHQpXG4gIGxldCBpbnQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludDMyIChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDY0IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLmludDY0IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG5hdGl2ZWludCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUubWFrZSBzZWVkKVxuICBsZXQgY29weSB0ID0gTGF6eS5mcm9tX3ZhbCAoQ2FtbC5SYW5kb20uU3RhdGUuY29weSAoTGF6eS5mb3JjZSB0KSlcbiAgbGV0IGNoYXIgdCA9IGludCB0IDI1NiB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcbiAgbGV0IGFzY2lpIHQgPSBpbnQgdCAxMjggfD4gQ2hhci51bnNhZmVfb2ZfaW50XG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gICAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgICBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG5cbiAgbGV0IGZ1bGxfaW5pdCB0IHNlZWQgPSBhc3NpZ24gdCAobWFrZSBzZWVkKVxuXG4gIGxldCBkZWZhdWx0ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBkZWZpbmUgQmFzZSdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlIGFzIGEgY29weSBvZiBPQ2FtbCdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlLlxuICAgICAgICAgVGhpcyBtZWFucyB0aGF0IHByb2dyYW1zIHRoYXQgdXNlIEJhc2UuUmFuZG9tIHdpbGwgc2VlIHRoZSBzYW1lIHNlcXVlbmNlIG9mXG4gICAgICAgICByYW5kb20gYml0cyBhcyBpZiB0aGV5IGhhZCB1c2VkIENhbWwuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBDYW1sLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgICAgIENhbWwuUmFuZG9tLmluaXQgMTM3O1xuICAgICAgTGF6eS5mcm9tX3ZhbCB0KVxuICAgIGVsc2VcbiAgICAgIGxhenlcbiAgICAgICAgKCogT3V0c2lkZSBvZiB0ZXN0cywgd2UgaW5pdGlhbGl6ZSByYW5kb20gc3RhdGUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkgYW5kIGxhemlseS5cbiAgICAgICAgICAgV2UgZm9yY2UgdGhlIHJhbmRvbSBpbml0aWFsaXphdGlvbiB0byBiZSBsYXp5IHNvIHRoYXQgd2UgZG8gbm90IHBheSBhbnkgY29zdFxuICAgICAgICAgICBmb3IgaXQgaW4gcHJvZ3JhbXMgdGhhdCBkbyBub3QgdXNlIHJhbmRvbW5lc3MuICopXG4gICAgICAgIChMYXp5LmZvcmNlIChtYWtlX3NlbGZfaW5pdCAoKSkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl82NGJpdHMgdCBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIENhbWwuSW50NjQudG9faW50IChpbnQ2NCB0IChDYW1sLkludDY0Lm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl8zMmJpdHMgdCBib3VuZCA9XG4gICAgKCogTm90IGFsd2F5cyB0cnVlIHdpdGggdGhlIEphdmFTY3JpcHQgYmFja2VuZC4gKilcbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgQ2FtbC5JbnQzMi50b19pbnQgKGludDMyIHQgKENhbWwuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBDYW1sLkludDY0IGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+XG4gICAgICBsb2d4b3JcbiAgICAgICAgKGJpdHMgc3RhdGUpXG4gICAgICAgIChsb2d4b3IgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgNjApKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDMyID1cbiAgICBsZXQgb3BlbiBDYW1sLkludDMyIGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+IGxvZ3hvciAoYml0cyBzdGF0ZSkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMgc3RhdGUgPSBDYW1sLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IENhbWwuSW50MzIudG9faW50IChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuXG4gIGxldCBmdWxsX3JhbmdlX2ludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyBzdGF0ZSA9XG4gICAgQ2FtbC5JbnQ2NC50b19uYXRpdmVpbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyBzdGF0ZSA9XG4gICAgQ2FtbC5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBDYW1sLkludDMyIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQzMlwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwbFxuICAgICAgdGhlbiBhZGQgbG8gKGludDMyIHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfaW5jbCA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuTmF0aXZlaW50IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJuYXRpdmVpbnRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBuXG4gICAgICB0aGVuIGFkZCBsbyAobmF0aXZlaW50IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQ2NF9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDY0IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IENhbWwuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByMiA9IENhbWwuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByZXN1bHQgPSAoKHIxICouIHNjYWxlKSArLiByMikgKi4gc2NhbGUgaW5cbiAgICAoKiBXaXRoIHZlcnkgc21hbGwgcHJvYmFiaWxpdHksIHJlc3VsdCBjYW4gcm91bmQgdXAgdG8gMS4wLCBzbyBpbiB0aGF0IGNhc2UsIHdlIGp1c3RcbiAgICAgICB0cnkgYWdhaW4uICopXG4gICAgaWYgcmVzdWx0IDwgMS4wIHRoZW4gcmVzdWx0IGVsc2UgcmF3ZmxvYXQgc3RhdGVcbiAgOztcblxuICBsZXQgZmxvYXQgc3RhdGUgaGkgPSByYXdmbG9hdCBzdGF0ZSAqLiBoaVxuXG4gIGxldCBmbG9hdF9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiZmxvYXRcIiBsbyBoaSBDYW1sLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGludCB4ID0gU3RhdGUuaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDMyIHggPSBTdGF0ZS5pbnQzMiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBuYXRpdmVpbnQgeCA9IFN0YXRlLm5hdGl2ZWludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQ2NCB4ID0gU3RhdGUuaW50NjQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgZmxvYXQgeCA9IFN0YXRlLmZsb2F0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludF9pbmNsIHggeSA9IFN0YXRlLmludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50MzJfaW5jbCB4IHkgPSBTdGF0ZS5pbnQzMl9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgbmF0aXZlaW50X2luY2wgeCB5ID0gU3RhdGUubmF0aXZlaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQ2NF9pbmNsIHggeSA9IFN0YXRlLmludDY0X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBmbG9hdF9yYW5nZSB4IHkgPSBTdGF0ZS5mbG9hdF9yYW5nZSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBjaGFyICgpID0gU3RhdGUuY2hhciAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgYXNjaWkgKCkgPSBTdGF0ZS5hc2NpaSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzXG4iLCIoKiogQW4gaW50ZXJuYWwtb25seSBtb2R1bGUgZmFjdG9yZWQgb3V0IGR1ZSB0byBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb3JlX2FycmF5XG4gICAgYW5kIGNvcmVfbGlzdC4gIENvbnRhaW5zIGNvZGUgZm9yIHBlcm11dGluZyBhbiBhcnJheS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSA/KHBvcyA9IDApID9sZW4gdCA9XG4gICgqIENvcGllZCBmcm9tIFtPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMF0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY29tcGlsaW5nXG4gICAgIHdpdGhvdXQgZmxhbWJkYS4gKilcbiAgbGV0IHRvdGFsX2xlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAuY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGxldCBudW1fc3dhcHMgPSBsZW4gLSAxIGluXG4gIGZvciBpID0gbnVtX3N3YXBzIGRvd250byAxIGRvXG4gICAgbGV0IHRoaXNfaSA9IHBvcyArIGkgaW5cbiAgICAoKiBbcmFuZG9tX2ldIGlzIGRyYXduIGZyb20gW3Bvcyx0aGlzX2ldICopXG4gICAgbGV0IHJhbmRvbV9pID0gcG9zICsgUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGkgKyAxKSBpblxuICAgIHN3YXAgdCB0aGlzX2kgcmFuZG9tX2lcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiB0aGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBbQ2FtbC5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTGVzcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBFcXVhbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBHcmVhdGVyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBMZXNzOyBFcXVhbDsgR3JlYXRlciBdIDogdCBsaXN0KVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcIm9yZGVyaW5nLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSAtPiBMZXNzXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSAtPiBFcXVhbFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIC0+IEdyZWF0ZXJcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBMZXNzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkxlc3NcIlxuICAgIHwgRXF1YWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXF1YWxcIlxuICAgIHwgR3JlYXRlciAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJHcmVhdGVyXCJcbiAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTGVzc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiRXF1YWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkdyZWF0ZXJcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgX29yZGVyaW5nID0gdCA9XG4gICAgfCBMZXNzXG4gICAgfCBFcXVhbFxuICAgIHwgR3JlYXRlclxuZW5kXG5cbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTGVzcyBlbHNlIGlmIG4gPSAwIHRoZW4gRXF1YWwgZWxzZSBHcmVhdGVyXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IExlc3MgLT4gLTFcbiAgfCBFcXVhbCAtPiAwXG4gIHwgR3JlYXRlciAtPiAxXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cblxuaW5jbHVkZSBMaXN0MVxuXG4oKiBUaGlzIGl0c2VsZiBpbmNsdWRlcyBbTGlzdDBdLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsaXN0X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgT3JfdW5lcXVhbF9sZW5ndGhzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgVW5lcXVhbF9sZW5ndGhzXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNl8gYl9fMDA3XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwNl8gYl9fMDA3X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA2XywgYl9fMDA3XyB3aXRoXG4gICAgICB8IE9rIF9hX18wMDhfLCBPayBfYl9fMDA5XyAtPiBfY21wX19hIF9hX18wMDhfIF9iX18wMDlfXG4gICAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICAgIHwgXywgT2sgXyAtPiAxXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocywgVW5lcXVhbF9sZW5ndGhzIC0+IDApXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAxM18pIDogKChhX18wMTNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDEzXyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDExXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMTBfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDEyXyBdXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsX2xlbmd0aHNcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5sZXQgb2ZfbGlzdCB0ID0gdFxuXG5sZXQgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGUgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgbGV0IG5leHRfaSA9IHN0cmlkZSBzdGFydF9pIGluXG4gIGxldCBvcmRlciB4IHkgPSBPcmRlcmluZy5vZl9pbnQgKGNvbXBhcmUgeCB5KSBpblxuICBsZXQgcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKSA9XG4gICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWVcIlxuICBpblxuICBsZXQgaW5pdGlhbF9zdHJpZGVfb3JkZXIgPVxuICAgIG1hdGNoIG9yZGVyIHN0YXJ0X2kgbmV4dF9pIHdpdGhcbiAgICB8IEVxdWFsIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICB8IExlc3MgLT4gYExlc3NcbiAgICB8IEdyZWF0ZXIgLT4gYEdyZWF0ZXJcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGxldCBpX3RvX3N0b3Bfb3JkZXIgPSBvcmRlciBpIHN0b3BfaSBpblxuICAgIG1hdGNoIGlfdG9fc3RvcF9vcmRlciwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPlxuICAgICAgKCogaGF2ZW4ndCB5ZXQgcmVhY2hlZCBbc3RvcF9pXS4gQ29udGludWUuICopXG4gICAgICBsZXQgbmV4dF9pID0gc3RyaWRlIGkgaW5cbiAgICAgIChtYXRjaCBvcmRlciBpIG5leHRfaSwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgICAgIHwgRXF1YWwsIF8gLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCBjaGFuZ2UgZGlyZWN0aW9uXCJcbiAgICAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT4gbG9vcCBuZXh0X2kgKGkgOjogYWNjdW0pKVxuICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgKCogc3RlcHBlZCBwYXN0IFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICBhY2N1bVxuICAgIHwgRXF1YWwsIF8gLT5cbiAgICAgICgqIHJlYWNoZWQgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIChtYXRjaCBzdG9wIHdpdGhcbiAgICAgICB8IGBpbmNsdXNpdmUgLT4gaSA6OiBhY2N1bVxuICAgICAgIHwgYGV4Y2x1c2l2ZSAtPiBhY2N1bSlcbiAgaW5cbiAgbGV0IHN0YXJ0X2kgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfaVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBuZXh0X2lcbiAgaW5cbiAgcmV2IChsb29wIHN0YXJ0X2kgW10pXG47O1xuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBpZiBzdHJpZGUgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlOiBzdHJpZGUgbXVzdCBiZSBub24temVyb1wiO1xuICByYW5nZScgfmNvbXBhcmUgfnN0cmlkZTooZnVuIHggLT4geCArIHN0cmlkZSkgfnN0YXJ0IH5zdG9wIHN0YXJ0X2kgc3RvcF9pXG47O1xuXG5sZXQgaGQgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IF8gLT4gU29tZSB4XG47O1xuXG5sZXQgdGwgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IHQnIC0+IFNvbWUgdCdcbjs7XG5cbmxldCBudGggdCBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbnRoX2F1eCB0IG4gPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYSA6OiB0IC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCB0IChuIC0gMSlcbiAgICBpblxuICAgIG50aF9hdXggdCBuKVxuOztcblxubGV0IG50aF9leG4gdCBuID1cbiAgbWF0Y2ggbnRoIHQgbiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJMaXN0Lm50aF9leG4gJWQgY2FsbGVkIG9uIGxpc3Qgb2YgbGVuZ3RoICVkXCIgbiAobGVuZ3RoIHQpICgpXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB1bm9yZGVyZWRfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbCB8IGwsIFtdIC0+IGxcbiAgfCBfIC0+IHJldl9hcHBlbmQgbDEgbDJcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiAtPiBsb29wIGEgYiAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfIHwgXywgW10gLT4gVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYiB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSBsMSBsMiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYiB9IC0+XG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIlxuICAgICAgbmFtZVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hKVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iKVxuICAgICAgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgyIGwxIGwyIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9jIDogJ2MgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiBsMyA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBjIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiwgYyB3aXRoXG4gICAgICB8IFtdLCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiwgXyA6OiBjIC0+IGxvb3AgYSBiIGMgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXywgXyB8IF8sIFtdLCBfIHwgXywgXywgW10gLT5cbiAgICAgICAgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYjsgdGFpbF9vZl9jID0gYyB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIGwzIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoM19leG4gbmFtZSBsMSBsMiBsMyA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYjsgdGFpbF9vZl9jIH0gLT5cbiAgICBsZXQgbjEgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSBpblxuICAgIGxldCBuMiA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iIGluXG4gICAgbGV0IG4zID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2MgaW5cbiAgICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkIHx8ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiBuMiBuMyAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMiBsMylcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbmxldCBpdGVyMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGl0ZXIyX29rIH5mKVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKVxuXG5sZXQgcmV2X21hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJyZXZfbWFwMl9leG5cIiBsMSBsMjtcbiAgcmV2X21hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBmb2xkMiBsMSBsMiB+aW5pdCB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGQyX29rIH5pbml0IH5mKVxuXG5sZXQgZm9sZDJfZXhuIGwxIGwyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb2xkMl9leG5cIiBsMSBsMjtcbiAgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmZcbjs7XG5cbmxldCBmb3JfYWxsMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvcl9hbGwyX29rIH5mKVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZilcblxubGV0IGV4aXN0czJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJleGlzdHMyX2V4blwiIGwxIGwyO1xuICBleGlzdHMyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgZXF1YWwgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgYiA6OiBicyAtPiBlcXVhbCBhIGIgfHwgbG9vcCBlcXVhbCBhIGJzXG4gIGluXG4gIGxvb3AgZXF1YWwgYSB0XG47O1xuXG4oKiBUaGlzIGlzIGEgY29weSBvZiB0aGUgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIGFuIGV4dHJhIGV0YS1leHBhbnNpb24gdG9cbiAgIGF2b2lkIGNyZWF0aW5nIHBhcnRpYWwgY2xvc3VyZXMgKHNob3dlZCB1cCBmb3IgW2ZpbHRlcl0pIGluIHByb2ZpbGluZykuICopXG5sZXQgcmV2X2ZpbHRlciB0IH5mID1cbiAgbGV0IHJlYyBmaW5kIH5mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIGZpbmQgfmYgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgfmYgYWNjdSBsXG4gIGluXG4gIGZpbmQgfmYgW10gdFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gcmV2IChyZXZfZmlsdGVyIHQgfmYpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgbFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBsb29wIGxcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG5sZXQgZmluZGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGZpbmRpX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgbClcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCAmJiBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0XG47O1xuXG4oKiogRm9yIHRoZSBjb250YWluZXIgaW50ZXJmYWNlLiAqKVxubGV0IGZvbGRfbGVmdCA9IGZvbGRcblxubGV0IHRvX2FycmF5ID0gQXJyYXkub2ZfbGlzdFxubGV0IHRvX2xpc3QgdCA9IHRcblxubGV0IG1heF9ub25fdGFpbGNhbGwgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDFfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3Mgc21hbGwuIFRoaXNcbiAgICAgbnVtYmVyIHdhcyB0YWtlbiBmcm9tIG9jYW1sI3N0ZGxpYi9saXN0Lm1sIHdoaWNoIGlzIGFsc28gZXF1YWwgdG8gdGhlIGRlZmF1bHQgbGltaXRcbiAgICAgb2YgcmVjdXJzaXZlIGNhbGwgaW4gdGhlIGpzX29mX29jYW1sIGNvbXBpbGVyIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdHJhbXBvbGluZS4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuOztcblxuKCoqIFRhaWwgcmVjdXJzaXZlIHZlcnNpb25zIG9mIHN0YW5kYXJkIFtMaXN0XSBtb2R1bGUgKilcblxubGV0IHRhaWxfYXBwZW5kIGwxIGwyID0gcmV2X2FwcGVuZCAocmV2IGwxKSBsMlxuXG4oKiBUaGVyZSBhcmUgYSBmZXcgb3B0aW1pemVkIGxpc3Qgb3BlcmF0aW9ucyBoZXJlLCBpbmNsdWRpbmcgYXBwZW5kIGFuZCBtYXAuICBUaGVyZSBhcmVcbiAgIGJhc2ljYWxseSB0d28gb3B0aW1pemF0aW9ucyBpbiBwbGF5OiBsb29wIHVucm9sbGluZywgYW5kIGR5bmFtaWMgc3dpdGNoaW5nIGJldHdlZW5cbiAgIHN0YWNrIGFuZCBoZWFwIGFsbG9jYXRpb24uXG5cbiAgIFRoZSBsb29wLXVucm9sbGluZyBpcyBzdHJhaWdodGZvcndhcmQsIHdlIGp1c3QgdW5yb2xsIDUgbGV2ZWxzIG9mIHRoZSBsb29wLiAgVGhpcyBtYWtlc1xuICAgZWFjaCBpdGVyYXRpb24gZmFzdGVyLCBhbmQgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIGNvbnN1bWVkIHBlciBsaXN0XG4gICBlbGVtZW50LlxuXG4gICBUaGUgZHluYW1pYyBzd2l0Y2hpbmcgaXMgZG9uZSBieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcywgYW5kIHRoZW5cbiAgIHN3aXRjaGluZyB0byB0aGUgXCJzbG93XCIgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSBleGNlZWQgYSBnaXZlbiBsaW1pdC4gIFRoaXMgbWVhbnMgdGhhdFxuICAgc2hvcnQgbGlzdHMgdXNlIHRoZSBmYXN0IHN0YWNrLWFsbG9jYXRpb24gbWV0aG9kLCBhbmQgbG9uZyBsaXN0cyB1c2UgYSBzbG93ZXIgb25lIHRoYXRcbiAgIGRvZXNuJ3QgcmVxdWlyZSBzdGFjayBzcGFjZS4gKilcbmxldCByZWMgY291bnRfYXBwZW5kIGwxIGwyIGNvdW50ID1cbiAgbWF0Y2ggbDIgd2l0aFxuICB8IFtdIC0+IGwxXG4gIHwgXyAtPlxuICAgIChtYXRjaCBsMSB3aXRoXG4gICAgIHwgW10gLT4gbDJcbiAgICAgfCBbIHgxIF0gLT4geDEgOjogbDJcbiAgICAgfCBbIHgxOyB4MiBdIC0+IHgxIDo6IHgyIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzIF0gLT4geDEgOjogeDIgOjogeDMgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT4geDEgOjogeDIgOjogeDMgOjogeDQgOjogbDJcbiAgICAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgICAgIHgxXG4gICAgICAgOjogeDJcbiAgICAgICA6OiB4M1xuICAgICAgIDo6IHg0XG4gICAgICAgOjogeDVcbiAgICAgICA6OlxuICAgICAgIChpZiBjb3VudCA+IG1heF9ub25fdGFpbGNhbGxcbiAgICAgICAgdGhlbiB0YWlsX2FwcGVuZCB0bCBsMlxuICAgICAgICBlbHNlIGNvdW50X2FwcGVuZCB0bCBsMiAoY291bnQgKyAxKSkpXG47O1xuXG5sZXQgYXBwZW5kIGwxIGwyID0gY291bnRfYXBwZW5kIGwxIGwyIDBcblxuKCogQW4gb3JkaW5hcnkgdGFpbCByZWN1cnNpdmUgbWFwIGJ1aWxkcyB1cCBhbiBpbnRlcm1lZGlhdGUgKHJldmVyc2VkKSByZXByZXNlbnRhdGlvbixcbiAgIHdpdGggb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCBwZXIgZWxlbWVudC4gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGNodW5rc1xuICAgOSBvYmplY3RzIGludG8gb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCwgcmVkdWNpbmcgYWxsb2NhdGlvbiBhbmQgcGVyZm9ybWFuY2UgY29zdHNcbiAgIGFjY29yZGluZ2x5LiBOb3RlIHRoYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0IGlzIGRvbmUgYnkgdGhlIHN0ZGxpYidzIG1hcFxuICAgZnVuY3Rpb24uICopXG5sZXQgdGFpbF9tYXAgeHMgfmYgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGRpdmUgW10geHNcbjs7XG5cbmxldCByZWMgY291bnRfbWFwIH5mIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgKCA+PnwgKSBsIGYgPSBtYXAgbCB+ZlxubGV0IG1hcDJfb2sgbDEgbDIgfmYgPSByZXYgKHJldl9tYXAyX29rIGwxIGwyIH5mKVxubGV0IG1hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihtYXAyX29rIH5mKVxuXG5sZXQgbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIm1hcDJfZXhuXCIgbDEgbDI7XG4gIG1hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwM19vayBsMSBsMiBsMyB+ZiA9XG4gIGxldCByZWMgbG9vcCBsMSBsMiBsMyBhYyA9XG4gICAgbWF0Y2ggbDEsIGwyLCBsMyB3aXRoXG4gICAgfCBbXSwgW10sIFtdIC0+IGFjXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIsIHgzIDo6IGwzIC0+IGxvb3AgbDEgbDIgbDMgKGYgeDEgeDIgeDMgOjogYWMpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsb29wIGwxIGwyIGwzIFtdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZilcblxubGV0IHJldl9tYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwicmV2X21hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIHJldl9tYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgbWFwM19vayBsMSBsMiBsMyB+ZiA9IHJldiAocmV2X21hcDNfb2sgbDEgbDIgbDMgfmYpXG5sZXQgbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KG1hcDNfb2sgfmYpXG5cbmxldCBtYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwibWFwM19leG5cIiBsMSBsMiBsMztcbiAgbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZCBsMSBsMiB+ZiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCB+ZiB0IChmIGggOjogbDIpXG47O1xuXG5sZXQgdW56aXAgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMlxuICAgIHwgKHgsIHkpIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW11cbjs7XG5cbmxldCB1bnppcDMgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyIGwzID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMiwgbDNcbiAgICB8ICh4LCB5LCB6KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMikgKHogOjogbDMpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXSBbXVxuOztcblxubGV0IHppcF9leG4gbDEgbDIgPVxuICB0cnkgbWFwMl9vayB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMiB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gemlwX2V4bjogJWQgPD4gJWRcIiAobGVuZ3RoIGwxKSAobGVuZ3RoIGwyKSAoKVxuOztcblxubGV0IHppcCBsMSBsMiA9IG1hcDIgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDJcblxuKCoqIEFkZGl0aW9uYWwgbGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZXZfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiB0IC0+IGxvb3AgKGkgKyAxKSAoZiBpIGggOjogYWNjKSB0XG4gIGluXG4gIGxvb3AgMCBbXSBsXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBpdGVyaSBsIH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgbCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBzbmQgKGZvbGQgdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB2IC0+IGkgKyAxLCBmIGkgYWNjIHYpKVxuOztcblxubGV0IGZpbHRlcmkgbCB+ZiA9XG4gIHJldiAoZm9sZGkgbCB+ZjooZnVuIHBvcyBhY2MgeCAtPiBpZiBmIHBvcyB4IHRoZW4geCA6OiBhY2MgZWxzZSBhY2MpIH5pbml0OltdKVxuOztcblxubGV0IHJlZHVjZSBsIH5mID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGhkIDo6IHRsIC0+IFNvbWUgKGZvbGQgfmluaXQ6aGQgfmYgdGwpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkIGwgfmYgPVxuICAoKiBDYWxsIHRoZSBcInNpemVcIiBvZiBhIHZhbHVlIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvXG4gICAgIGl0IHZpYSBjYWxscyB0byBbZl0uICBXZSBwcm9jZWVkIGJ5IHVzaW5nIFtmXSB0byBjb21iaW5lIGVsZW1lbnRzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgICBvZiB0aGUgc2FtZSBzaXplIHVudGlsIHdlIGNhbid0IGNvbWJpbmUgYW55IG1vcmUsIHRoZW4gZ2V0dGluZyBhIG5ldyBlbGVtZW50IGZyb20gdGhlXG4gICAgIGlucHV0IGxpc3QgYW5kIHJlcGVhdGluZy5cblxuICAgICBXaXRoIHRoaXMgc3RyYXRlZ3ksIGluIHRoZSBhY2N1bXVsYXRvcjpcbiAgICAgLSB3ZSBvbmx5IGV2ZXIgaGF2ZSBlbGVtZW50cyBvZiBzaXplcyBhIHBvd2VyIG9mIHR3b1xuICAgICAtIHdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9mIGVhY2ggc2l6ZVxuICAgICAtIHRoZSBzdW0gb2YgYWxsIHRoZSBlbGVtZW50IHNpemVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWRcblxuICAgICBUaGVzZSBjb25kaXRpb25zIGVuZm9yY2UgdGhhdCBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggc2l6ZSBpcyBwcmVjaXNlbHkgdGhlIGJpbmFyeVxuICAgICBleHBhbnNpb24gb2YgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZDogaWYgeW91J3ZlIGNvbnN1bWVkIDEzID0gMGIxMTAxXG4gICAgIGVsZW1lbnRzLCB5b3UgaGF2ZSBvbmUgZWxlbWVudCBvZiBzaXplIDgsIG9uZSBvZiBzaXplIDQsIGFuZCBvbmUgb2Ygc2l6ZSAxLiAgSGVuY2VcbiAgICAgd2hlbiBhIG5ldyBlbGVtZW50IGNvbWVzIGFsb25nLCB0aGUgbnVtYmVyIG9mIGNvbWJpbmluZ3MgeW91IG5lZWQgdG8gZG8gaXMgdGhlIG51bWJlclxuICAgICBvZiB0cmFpbGluZyAxcyBpbiB0aGUgYmluYXJ5IGV4cGFuc2lvbiBvZiBbbnVtXSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGhhdmVcbiAgICAgYWxyZWFkeSBnb25lIGludG8gdGhlIGFjY3VtdWxhdG9yLiAgVGhlIGFjY3VtdWxhdG9yIGlzIGluIGFzY2VuZGluZyBvcmRlciBvZiBzaXplLCBzb1xuICAgICB0aGUgbmV4dCBlbGVtZW50IHRvIGNvbWJpbmUgd2l0aCBpcyBhbHdheXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICopXG4gIGxldCByZWMgc3RlcF9hY2N1bSBudW0gYWNjIHggPVxuICAgIGlmIG51bSBsYW5kIDEgPSAwXG4gICAgdGhlbiB4IDo6IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBOZXcgZWxlbWVudHMgZnJvbSBsYXRlciBpbiB0aGUgaW5wdXQgbGlzdCBnbyBvbiB0aGUgZnJvbnQgb2YgdGhlIGFjY3VtdWxhdG9yLCBzb1xuICAgICAgICAgdGhlIGFjY3VtdWxhdG9yIGlzIGluIHJldmVyc2Ugb3JkZXIgd3J0IHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyLCBoZW5jZSBbZiB5IHhdXG4gICAgICAgICBpbnN0ZWFkIG9mIFtmIHggeV0uICopXG4gICAgICB8IHkgOjogeXMgLT4gc3RlcF9hY2N1bSAobnVtIGFzciAxKSB5cyAoZiB5IHgpKVxuICBpblxuICAoKiBFeHBlcmltZW50YWxseSwgaW5saW5pbmcgW2ZvbGRpXSBhbmQgdW5yb2xsaW5nIHRoaXMgbG9vcCBhIGZldyB0aW1lcyBjYW4gcmVkdWNlXG4gICAgIHJ1bnRpbWUgZG93biB0byBhIHRoaXJkIGFuZCBhbGxvY2F0aW9uIHRvIDEvMTZ0aCBvciBzbyBpbiB0aGUgbWljcm9iZW5jaG1hcmtzIGJlbG93LlxuICAgICBIb3dldmVyLCBpbiBtb3N0IHVzZSBjYXNlcyBbZl0gaXMgbGlrZWx5IHRvIGJlIGV4cGVuc2l2ZSAob3RoZXJ3aXNlIHdoeSBkbyB5b3UgY2FyZVxuICAgICBhYm91dCB0aGUgb3JkZXIgb2YgcmVkdWN0aW9uPykgc28gdGhlIG92ZXJoZWFkIG9mIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGRvZXNuJ3QgcmVhbGx5XG4gICAgIG1hdHRlci4gSWYgeW91IGNvbWUgdXAgd2l0aCBhIHVzZS1jYXNlIHdoZXJlIGl0IGRvZXMsIHRoZW4gdGhhdCdzIHNvbWV0aGluZyB5b3UgbWlnaHRcbiAgICAgd2FudCB0byB0cnk6IHNlZSBoZyBsb2cgLXByIDQ5ZWYwNjVmNDI5ZC4gKilcbiAgbWF0Y2ggZm9sZGkgbCB+aW5pdDpbXSB+ZjpzdGVwX2FjY3VtIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBTb21lIChmb2xkIHhzIH5pbml0OnggfmY6KGZ1biB4IHkgLT4gZiB5IHgpKVxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZF9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZV9iYWxhbmNlZCBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfYmFsYW5jZWRfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IGdyb3VwaSBsIH5icmVhayA9XG4gIGxldCBncm91cHMgPVxuICAgIGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyB4IC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbIFsgeCBdIF1cbiAgICAgIHwgY3VycmVudF9ncm91cCA6OiB0bCAtPlxuICAgICAgICBpZiBicmVhayBpIChoZF9leG4gY3VycmVudF9ncm91cCkgeFxuICAgICAgICB0aGVuIFsgeCBdIDo6IGN1cnJlbnRfZ3JvdXAgOjogdGwgKCogc3RhcnQgbmV3IGdyb3VwICopXG4gICAgICAgIGVsc2UgKHggOjogY3VycmVudF9ncm91cCkgOjogdGwpXG4gICAgKCogZXh0ZW5kIGN1cnJlbnQgZ3JvdXAgKilcbiAgaW5cbiAgbWF0Y2ggZ3JvdXBzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGwgLT4gcmV2X21hcCBsIH5mOnJldlxuOztcblxubGV0IGdyb3VwIGwgfmJyZWFrID0gZ3JvdXBpIGwgfmJyZWFrOihmdW4gXyB4IHkgLT4gYnJlYWsgeCB5KVxuXG5sZXQgc29ydF9hbmRfZ3JvdXAgbCB+Y29tcGFyZSA9XG4gIGwgfD4gc3RhYmxlX3NvcnQgfmNvbXBhcmUgfD4gZ3JvdXAgfmJyZWFrOihmdW4geCB5IC0+IGNvbXBhcmUgeCB5IDw+IDApXG47O1xuXG5sZXQgY29uY2F0X21hcCBsIH5mID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAocmV2X2FwcGVuZCAoZiBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggW10gbFxuOztcblxubGV0IGNvbmNhdF9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBjb250IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKGNvbnQgKyAxKSAocmV2X2FwcGVuZCAoZiBjb250IGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCAwIFtdIGxcbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2FydGVzaWFuX3Byb2R1Y3QgPSBzdHJ1Y3RcbiAgKCogV2UgYXJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2UgZXhwb3J0IGZyb20gZnVuY3RvcnMgc28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHlcbiAgICAgcmViaW5kIG1vcmUgZWZmaWNpZW50IGxpc3Qtc3BlY2lmaWMgZnVuY3Rpb25zLiAqKVxuXG4gIGxldCBiaW5kID0gY29uY2F0X21hcFxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXAyIGEgYiB+ZiA9IGNvbmNhdF9tYXAgYSB+ZjooZnVuIHggLT4gbWFwIGIgfmY6KGZ1biB5IC0+IGYgeCB5KSlcbiAgbGV0IHJldHVybiB4ID0gWyB4IF1cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuXG4gIG9wZW4gc3RydWN0XG4gICAgbW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZV91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBtYXAyID0gbWFwMlxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIE1vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbGV0IGFsbCA9IE1vbmFkLmFsbFxuICBsZXQgYWxsX3VuaXQgPSBNb25hZC5hbGxfdW5pdFxuICBsZXQgaWdub3JlX20gPSBNb25hZC5pZ25vcmVfbVxuICBsZXQgam9pbiA9IE1vbmFkLmpvaW5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcbiAgZW5kXG5cbiAgbGV0IGFwcGx5ID0gQXBwbGljYXRpdmUuYXBwbHlcbiAgbGV0IGJvdGggPSBBcHBsaWNhdGl2ZS5ib3RoXG4gIGxldCBtYXAzID0gQXBwbGljYXRpdmUubWFwM1xuICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gICAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICAgIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChDYXJ0ZXNpYW5fcHJvZHVjdCA6IE1vbmFkLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuKCoqIHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3RfZXhuIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0X2V4biB0bFxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiTGlzdC5sYXN0XCJcbjs7XG5cbigqKiBvcHRpb25hbGx5IHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3QgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IFNvbWUgeFxuICB8IF8gOjogdGwgLT4gbGFzdCB0bFxuICB8IFtdIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgaXNfcHJlZml4IGxpc3QgfnByZWZpeCB+ZXF1YWwgPVxuICBtYXRjaCBwcmVmaXggd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBoZCA6OiB0bCAtPlxuICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgfCBbXSAtPiBmYWxzZVxuICAgICB8IGhkJyA6OiB0bCcgLT4gZXF1YWwgaGQgaGQnICYmIGlzX3ByZWZpeCB0bCcgfnByZWZpeDp0bCB+ZXF1YWwpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgYTEgOjogdCAtPlxuICAgIGxldCByZWMgbG9vcCBhMSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEyIDo6IHQgLT4gaWYgZXF1YWwgYTEgYTIgdGhlbiBTb21lIChhMSwgYTIpIGVsc2UgbG9vcCBhMiB0XG4gICAgaW5cbiAgICBsb29wIGExIHRcbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZFxuOztcblxubGV0IGZpbmRfYV9kdXAgbCB+Y29tcGFyZSA9XG4gIGxldCBzb3J0ZWQgPSBzb3J0IGwgfmNvbXBhcmUgaW5cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiBOb25lXG4gICAgfCBoZDEgOjogKGhkMiA6OiBfIGFzIHRsKSAtPiBpZiBjb21wYXJlIGhkMSBoZDIgPSAwIHRoZW4gU29tZSBoZDEgZWxzZSBsb29wIHRsXG4gIGluXG4gIGxvb3Agc29ydGVkXG47O1xuXG5sZXQgY29udGFpbnNfZHVwIGxzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgbHN0IH5jb21wYXJlIHdpdGhcbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaW5kX2FsbF9kdXBzIGwgfmNvbXBhcmUgPVxuICAoKiBXZSBhZGQgdGhpcyByZXZlcnNhbCwgc28gd2UgY2FuIHNraXAgYSBbcmV2XSBhdCB0aGUgZW5kLiBXZSBjb3VsZCBza2lwXG4gICAgIFtyZXZdIGFueXdheSBzaW5jZSB3ZSBkb24gbm90IGdpdmUgYW55IG9yZGVyaW5nIGd1YXJhbnRlZXMsIGJ1dCBpdCBpc1xuICAgICBuaWNlIHRvIGdldCByZXN1bHRzIGluIG5hdHVyYWwgb3JkZXIuICopXG4gIGxldCBjb21wYXJlIGEgYiA9IC0xICogY29tcGFyZSBhIGIgaW5cbiAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbCBpblxuICAoKiBXYWxrIHRoZSBsaXN0IGFuZCByZWNvcmQgdGhlIGZpcnN0IG9mIGVhY2ggY29uc2VjdXRpdmUgcnVuIG9mIGlkZW50aWNhbCBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGxvb3Agc29ydGVkIHByZXYgfmFscmVhZHlfcmVjb3JkZWQgYWNjID1cbiAgICBtYXRjaCBzb3J0ZWQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgY29tcGFyZSBwcmV2IGhkIDw+IDBcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBhY2NcbiAgICAgIGVsc2UgaWYgYWxyZWFkeV9yZWNvcmRlZFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgYWNjXG4gICAgICBlbHNlIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSAoaGQgOjogYWNjKVxuICBpblxuICBtYXRjaCBzb3J0ZWQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBbXVxuOztcblxubGV0IHJlYyBhbGxfZXF1YWxfdG8gdCB2IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCB4IDo6IHhzIC0+IGVxdWFsIHggdiAmJiBhbGxfZXF1YWxfdG8geHMgdiB+ZXF1YWxcbjs7XG5cbmxldCBhbGxfZXF1YWwgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBpZiBhbGxfZXF1YWxfdG8geHMgeCB+ZXF1YWwgdGhlbiBTb21lIHggZWxzZSBOb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXVxuOztcblxubGV0IHJldl9maWx0ZXJfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIHRsIGFjY3VtKVxuICBpblxuICBsb29wIGwgW11cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwIGwgfmYpXG5cbmxldCByZXZfZmlsdGVyX21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBpIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIChpICsgMSkgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCAwIGwgW11cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgZiB4IDogXyBFaXRoZXIudCA9IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCBpblxuICBwYXJ0aXRpb25fbWFwIHQgfmZcbjs7XG5cbmxldCBwYXJ0aXRpb25fcmVzdWx0IHQgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlclxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMjJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDE0XyBfb2ZfYl9fMDE1XyB4X18wMjNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMTdfOyBhcmcxX18wMThfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMTlfID0gX29mX2FfXzAxNF8gYXJnMF9fMDE3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAyMF8gPSBfb2ZfYl9fMDE1XyBhcmcxX18wMThfIGluXG4gICAgICAgICAgICByZXMwX18wMTlfLCByZXMxX18wMjBfXG4gICAgICAgICAgfCBzZXhwX18wMjFfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDIyX1xuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIHNleHBfXzAyMV8pXG4gICAgICAgIHhfXzAyM19cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2FfXzAyNF8gX29mX2JfXzAyNV8geF9fMDMwXyAtPlxuICAgICAgc2V4cF9vZl9saXN0XG4gICAgICAgIChmdW4gKGFyZzBfXzAyNl8sIGFyZzFfXzAyN18pIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2FfXzAyNF8gYXJnMF9fMDI2X1xuICAgICAgICAgICBhbmQgcmVzMV9fMDI5XyA9IF9vZl9iX18wMjVfIGFyZzFfXzAyN18gaW5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDI4XzsgcmVzMV9fMDI5XyBdKVxuICAgICAgICB4X18wMzBfXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgbGlzdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExpc3QgKENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkpKVxuICAgICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcGFpcl9vZl9ncm91cCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChrLCBfKSA6OiBfIGFzIGxpc3QgLT4gaywgbWFwIGxpc3QgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdyb3VwIGFsaXN0IH5lcXVhbCA9XG4gICAgZ3JvdXAgYWxpc3QgfmJyZWFrOihmdW4gKHgsIF8pICh5LCBfKSAtPiBub3QgKGVxdWFsIHggeSkpIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlID1cbiAgICBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZTooZnVuICh4LCBfKSAoeSwgXykgLT4gY29tcGFyZSB4IHkpXG4gICAgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgZmluZCB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBlcXVhbCBrZXkga2V5Jykgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSAoc25kIHgpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LkFzc29jLmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgICBsZXQgZmluZF9leG4gdCB+ZXF1YWwga2V5ID1cbiAgICAgIG1hdGNoIGZpbmQgdCBrZXkgfmVxdWFsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZXF1YWwga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgXyAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IH5lcXVhbCBrZXkgPSBmaWx0ZXIgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBub3QgKGVxdWFsIGtleSBrZXknKSlcblxuICBsZXQgYWRkIHQgfmVxdWFsIGtleSB2YWx1ZSA9XG4gICAgKCogdGhlIHJlbW92ZSBkb2Vzbid0IGNoYW5nZSB0aGUgbWFwIHNlbWFudGljcywgYnV0IGtlZXBzIHRoZSBsaXN0IHNtYWxsICopXG4gICAgKGtleSwgdmFsdWUpIDo6IHJlbW92ZSB0IH5lcXVhbCBrZXlcbiAgOztcblxuICBsZXQgaW52ZXJzZSB0ID0gbWFwIHQgfmY6KGZ1biAoeCwgeSkgLT4geSwgeClcbiAgbGV0IG1hcCB0IH5mID0gbWFwIHQgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgLT4ga2V5LCBmIHZhbHVlKVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfd2hpbGVdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2Vfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCBfIC0+IHJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSB4c1xuOztcblxubGV0IHJlYyBkcm9wX3doaWxlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gZHJvcF93aGlsZSB0bCB+ZlxuICB8IHQgLT4gdFxuOztcblxubGV0IGRyb3BfbGFzdCB0ID1cbiAgbWF0Y2ggcmV2IHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IGxzdCAtPiBTb21lIChyZXYgbHN0KVxuOztcblxubGV0IGRyb3BfbGFzdF9leG4gdCA9XG4gIG1hdGNoIGRyb3BfbGFzdCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTGlzdC5kcm9wX2xhc3RfZXhuOiBlbXB0eSBsaXN0XCJcbiAgfCBTb21lIGxzdCAtPiBsc3Rcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBsaXN0MSBsaXN0MiA9XG4gIGlmIGlzX2VtcHR5IGxpc3QyXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGwxIGwyIGFjY3VtID1cbiAgICAgIG1hdGNoIGwxIHdpdGhcbiAgICAgIHwgW10gLT4gYWNjdW1cbiAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBsMiAocmV2X2FwcGVuZCAobWFwIH5mOihmdW4geCAtPiBoZCwgeCkgbDIpIGFjY3VtKVxuICAgIGluXG4gICAgcmV2IChsb29wIGxpc3QxIGxpc3QyIFtdKSlcbjs7XG5cbmxldCBjb25jYXQgbCA9IGZvbGRfcmlnaHQgbCB+aW5pdDpbXSB+ZjphcHBlbmRcbmxldCBjb25jYXRfbm9fb3JkZXIgbCA9IGZvbGQgbCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBsIC0+IHJldl9hcHBlbmQgbCBhY2MpXG5sZXQgY29ucyB4IGwgPSB4IDo6IGxcblxubGV0IGlzX3NvcnRlZCBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDw9IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICAoKiBzcGVjaWFsIGNhc2VzIHRvIHNwZWVkIHRoaW5ncyB1cCBpbiB0cml2aWFsIGNhc2VzICopXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0XG4gIHwgWyB4OyB5IF0gLT4gaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlIHRoZW4gWyB5OyB4IF0gZWxzZSBsaXN0XG4gIHwgXyAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBBcnJheV9wZXJtdXRlLnBlcm11dGUgYXJyIH5yYW5kb21fc3RhdGU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIGlmIGlzX2VtcHR5IGxpc3RcbiAgdGhlbiBmYWlsd2l0aCBcIkxpc3QucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBsaXN0XCJcbiAgZWxzZSBudGhfZXhuIGxpc3QgKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggbGlzdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSBsaXN0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCBuID0gY21wIHggeSBpblxuICAgIGlmIG4gPSAwIHRoZW4gY29tcGFyZSBjbXAgeHMgeXMgZWxzZSBuXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfbGlzdFxuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPVxuICBsZXQgcmVjIGxvb3AgfmVxdWFsIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IHgxIDo6IHQxLCB4MiA6OiB0MiAtPiBlcXVhbCB4MSB4MiAmJiBsb29wIH5lcXVhbCB0MSB0MlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIH5lcXVhbCB0MSB0MlxuOztcblxubGV0IHRyYW5zcG9zZSA9XG4gIGxldCByZWMgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0IGNvbHVtbl9hY2MgdHJpbW1lZCBmb3VuZF9lbXB0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW5fYWNjLCB0cmltbWVkLCBmb3VuZF9lbXB0eVxuICAgIHwgW10gOjogdGwgLT4gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCBjb2x1bW5fYWNjIHRyaW1tZWQgdHJ1ZVxuICAgIHwgKHggOjogeHMpIDo6IHRsIC0+XG4gICAgICBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsICh4IDo6IGNvbHVtbl9hY2MpICh4cyA6OiB0cmltbWVkKSBmb3VuZF9lbXB0eVxuICBpblxuICBsZXQgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzID0gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIFtdIFtdIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCByb3dzIGNvbHVtbnMgZG9fcmV2ID1cbiAgICBtYXRjaCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3Mgd2l0aFxuICAgIHwgW10sIFtdLCBfIC0+IFNvbWUgKHJldiBjb2x1bW5zKVxuICAgIHwgY29sdW1uLCB0cmltbWVkX3Jvd3MsIGZvdW5kX2VtcHR5IC0+XG4gICAgICBpZiBmb3VuZF9lbXB0eVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGlmIGRvX3JldiB0aGVuIHJldiBjb2x1bW4gZWxzZSBjb2x1bW4gaW5cbiAgICAgICAgbG9vcCB0cmltbWVkX3Jvd3MgKGNvbHVtbiA6OiBjb2x1bW5zKSAobm90IGRvX3JldikpXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXSB0cnVlXG47O1xuXG5leGNlcHRpb24gVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBvZiBpbnQgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc11cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBhcmcwX18wMzFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfaW50IGFyZzBfXzAzMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaXN0Lm1sLlRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNcIlxuICAgICAgICAgIDsgcmVzMF9fMDMyX1xuICAgICAgICAgIF1cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdHJhbnNwb3NlX2V4biBsID1cbiAgbWF0Y2ggdHJhbnNwb3NlIGwgd2l0aFxuICB8IFNvbWUgbCAtPiBsXG4gIHwgTm9uZSAtPiByYWlzZSAoVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyAobWFwIGwgfmY6bGVuZ3RoKSlcbjs7XG5cbmxldCBpbnRlcnNwZXJzZSB0IH5zZXAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4geCA6OiBmb2xkX3JpZ2h0IHhzIH5pbml0OltdIH5mOihmdW4geSBhY2MgLT4gc2VwIDo6IHkgOjogYWNjKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOmVxdWFsX2VsdCA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuICYmIGVxdWFsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgU2V4cC5BdG9tIGJhY2t0cmFjZSBdIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT4gU29tZSAoQ2FtbC5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gQ2FtbC5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nX2h1bSB0KVxuICBlbmQpXG5cbm1vZHVsZSBJbnRlcm5hbF9yZXByID0gTWVzc2FnZVxuXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtFcnJvcl0gYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcy4gIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3XG4gICBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvXG5cbmxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJFcnJvci50XCIgfVxubGV0IHJhaXNlIHQgPSByYWlzZSAodG9fZXhuIHQpXG5sZXQgcmFpc2VfcyBzZXhwID0gcmFpc2UgKGNyZWF0ZV9zIHNleHApXG5sZXQgdG9faW5mbyB0ID0gdFxubGV0IG9mX2luZm8gdCA9IHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FcnJvclwiXG4gICAgbGV0IHBwID0gcHBcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludmFyaWFudF9pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5sZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA6IHVuaXQgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJcIiwgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlXG4gICAgICAgICA7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4blxuICAgICAgICAgOyBcIlwiLCBzZXhwX29mX3QgdFxuICAgICAgICAgXSlcbjs7XG5cbmxldCBjaGVja19maWVsZCB0IGYgZmllbGQgPVxuICB0cnkgZiAoRmllbGQuZ2V0IGZpZWxkIHQpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcInByb2JsZW0gd2l0aCBmaWVsZFwiXG4gICAgICAgICBbIFwiZmllbGRcIiwgc2V4cF9vZl9zdHJpbmcgKEZpZWxkLm5hbWUgZmllbGQpOyBcImV4blwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIFJlc3VsdCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBSZXN1bHRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIEVycm9yIDo9IFJlc3VsdC5FcnJvcilcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT4gUmVzdWx0LmNvbXBhcmUgX2NtcF9fYSBFcnJvci5jb21wYXJlIGFfXzAwMV8gYl9fMDAyX1xuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPiBSZXN1bHQuZXF1YWwgX2NtcF9fYSBFcnJvci5lcXVhbCBhX18wMDdfIGJfXzAwOF9cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA6XG4gICdhLlxuICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gIC0+ICdhIHRcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBoc3YgYXJnIC0+IFJlc3VsdC5oYXNoX2ZvbGRfdCBfaGFzaF9mb2xkX2EgRXJyb3IuaGFzaF9mb2xkX3QgaHN2IGFyZ1xuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDEzXyB4X18wMTVfIC0+IFJlc3VsdC50X29mX3NleHAgX29mX2FfXzAxM18gRXJyb3IudF9vZl9zZXhwIHhfXzAxNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxNl8geF9fMDE3XyAtPiBSZXN1bHQuc2V4cF9vZl90IF9vZl9hX18wMTZfIEVycm9yLnNleHBfb2ZfdCB4X18wMTdfXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZXN1bHQudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hciBFcnJvci50X3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IuaW52YXJpYW50IGVycm9yXG47O1xuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIFJlc3VsdC5jb21iaW5lIGYgeCB+b2s6KGZ1biBmIHggLT4gZiB4KSB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxubGV0IG9rID0gUmVzdWx0Lm9rXG5sZXQgaXNfb2sgPSBSZXN1bHQuaXNfb2tcbmxldCBpc19lcnJvciA9IFJlc3VsdC5pc19lcnJvclxuXG5sZXQgdHJ5X3dpdGggPyhiYWNrdHJhY2UgPSBmYWxzZSkgZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4biA/YmFja3RyYWNlOihpZiBiYWNrdHJhY2UgdGhlbiBTb21lIGBHZXQgZWxzZSBOb25lKSlcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9iYWNrdHJhY2UgZiA9IGpvaW4gKHRyeV93aXRoID9iYWNrdHJhY2UgZilcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXJyIC0+IEVycm9yLnJhaXNlIGVyclxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IEVycm9yIChFcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5cbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgPSBmdW5jdGlvblxuICB8IE9rIF8gYXMgeiAtPiB6XG4gIHwgRXJyb3IgZXhuIC0+IG9mX2V4biA/YmFja3RyYWNlIGV4blxuOztcblxubGV0IGVycm9yID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIEVycm9yIChFcnJvci5jcmVhdGUgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGVycm9yX3Mgc2V4cCA9IEVycm9yIChFcnJvci5jcmVhdGVfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtZXNzYWdlID0gRXJyb3IgKEVycm9yLm9mX3N0cmluZyBtZXNzYWdlKVxubGV0IGVycm9yZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KGZ1biBlIC0+IEVycm9yLnRhZ19hcmcgZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgcyA9IGVycm9yIFwidW5pbXBsZW1lbnRlZFwiIHMgc2V4cF9vZl9zdHJpbmdcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gUmVzdWx0Lm1hcF9lcnJvciAoUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGwpIH5mOkVycm9yLm9mX2xpc3RcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBSZXN1bHQubWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QucGFydGl0aW9uX21hcCBsIH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgbWF0Y2ggb2sgd2l0aFxuICB8IFtdIC0+IEVycm9yIChFcnJvci5vZl9saXN0IGVycnMpXG4gIHwgXyAtPiBPayBva1xuOztcblxubGV0IGZpbmRfb2sgbCA9XG4gIG1hdGNoIExpc3QuZmluZF9tYXAgbCB+ZjpSZXN1bHQub2sgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE9rIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSlcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICAgICAgfCBPayBfIGFzIHggLT4gcmV0dXJuIHhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKSlcbjs7XG5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgaXRlciA9IFJlc3VsdC5pdGVyXG5sZXQgaXRlcl9lcnJvciA9IFJlc3VsdC5pdGVyX2Vycm9yXG4iLCIoKiBUaGlzIGlzIGJyb2tlbiBvZmYgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFNpZ24gYW5kIENvbXBhcmFibGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5lZ1xuICB8IFplcm9cbiAgfCBQb3NcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduMC5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBzZXhwX18wMDJfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvcyBdIDogdCBsaXN0KVxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxubGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTFcbiAgfCBaZXJvIC0+IDBcbiAgfCBQb3MgLT4gMVxuOztcblxubGV0IF8gPSBoYXNoXG5cbigqIElnbm9yZSB0aGUgaGFzaCBmdW5jdGlvbiBwcm9kdWNlZCBieSBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaF0gKilcbmxldCBoYXNoID0gdG9faW50XG5sZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnblwiXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIE5lZyBlbHNlIGlmIG4gPSAwIHRoZW4gWmVybyBlbHNlIFBvc1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUXG5cbiAgbGV0IGlzX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+IDBcbiAgbGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPj0gMFxuICBsZXQgaXNfbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDwgMFxuICBsZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8PSAwXG4gIGxldCBzaWduIHQgPSBTaWduMC5vZl9pbnQgKGNvbXBhcmUgdCB6ZXJvKVxuZW5kXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgUG9seVxuICBlbmRcblxuICBpbmNsdWRlIFBvbHlcblxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcblxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuZW5kXG5cbmxldCBndCBjbXAgYSBiID0gY21wIGEgYiA+IDBcbmxldCBsdCBjbXAgYSBiID0gY21wIGEgYiA8IDBcbmxldCBnZXEgY21wIGEgYiA9IGNtcCBhIGIgPj0gMFxubGV0IGxlcSBjbXAgYSBiID0gY21wIGEgYiA8PSAwXG5sZXQgZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPSAwXG5sZXQgbm90X2VxdWFsIGNtcCBhIGIgPSBjbXAgYSBiIDw+IDBcbmxldCBtaW4gY21wIHQgdCcgPSBpZiBsZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcbmxldCBtYXggY21wIHQgdCcgPSBpZiBnZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcblxubW9kdWxlIEluZml4IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBJbmZpeCB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbGV0ICggPiApIGEgYiA9IGd0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPCApIGEgYiA9IGx0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPj0gKSBhIGIgPSBnZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PSApIGEgYiA9IGxlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoID0gKSBhIGIgPSBlcXVhbCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw+ICkgYSBiID0gbm90X2VxdWFsIFQuY29tcGFyZSBhIGJcbmVuZFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeCAoVClcblxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgbWluIHQgdCcgPSBtaW4gY29tcGFyZSB0IHQnXG4gIGxldCBtYXggdCB0JyA9IG1heCBjb21wYXJlIHQgdCdcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyYXRvci5jb21wYXJlXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUG9seW1vcnBoaWNfY29tcGFyZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICAgICAgW0BAQGVuZF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG4oKiBjb21wYXJlIFt4XSBhbmQgW3ldIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGZ1bmN0aW9ucyBpbiB0aGUgbGlzdCBbY21wc10gKilcbmxldCBsZXhpY29ncmFwaGljIGNtcHMgeCB5ID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IGNtcCA6OiBjbXBzIC0+XG4gICAgICBsZXQgcmVzID0gY21wIHggeSBpblxuICAgICAgaWYgcmVzID0gMCB0aGVuIGxvb3AgY21wcyBlbHNlIHJlc1xuICAgIHwgW10gLT4gMFxuICBpblxuICBsb29wIGNtcHNcbjs7XG5cbmxldCBsaWZ0IGNtcCB+ZiB4IHkgPSBjbXAgKGYgeCkgKGYgeSlcbmxldCByZXZlcnNlIGNtcCB4IHkgPSBjbXAgeSB4XG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoYWJsZS5LZXkgKilcbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuXG4gICgqKiBWYWx1ZXMgcmV0dXJuZWQgYnkgW2hhc2hdIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGluIHRoZVxuICAgICAgY2FzZSB0aGF0IFtoYXNoXSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICopXG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICAoKiogVGhpcyBmdW5jdGlvbiBpcyBzb3VuZCBidXQgbm90IGNvbXBsZXRlLCBtZWFuaW5nIHRoYXQgaWYgaXQgcmV0dXJucyBbdHJ1ZV0gdGhlbiBpdCdzXG4gICAgICBzYWZlIHRvIHVzZSB0aGUgdHdvIGludGVyY2hhbmdlYWJseS4gIElmIGl0J3MgW2ZhbHNlXSwgeW91IGhhdmUgbm8gZ3VhcmFudGVlcy4gIEZvclxuICAgICAgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgPiB1dG9wXG4gICAgICAgIG9wZW4gQ29yZTs7XG4gICAgICAgIGxldCBlcXVhbCAoYSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KSBiID1cbiAgICAgICAgICBwaHlzX2VxdWFsIGEgYlxuICAgICAgICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gICAgICAgIDs7XG4gICAgICAgIGxldCBhID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgbGV0IGIgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBlcXVhbCBhIGI7OyAgKCogZmFsc2U/ISAqKVxuICAgICAgXX1cbiAgKilcbiAgbGV0IGVxdWFsIGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBoYXNoX3BhcmFtID0gQ2FtbC5IYXNodGJsLmhhc2hfcGFyYW1cbiAgbGV0IGhhc2ggPSBDYW1sLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgYWxsID0gKFsgKCkgXSA6IHQgbGlzdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB+cG9zIH5sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KEZuLm5vbiBwcmVkKSB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgKCogVGhpcyBtZWFucyB0aGF0IGFsbCBlbGVtZW50cyBzYXRpc2Z5IHByZWQuXG4gICAgICAgVGhlcmUgaXMgYXQgbGVhc3QgYW4gZWxlbWVudCBhcyAobGVuID4gMCkgKilcbiAgICB8IFNvbWUgaSB3aGVuIGkgPSBwb3MgLT4gTm9uZSAoKiBubyBlbGVtZW50IHNhdGlzZmllcyBwcmVkICopXG4gICAgfCBTb21lIGkgLT4gU29tZSAoaSAtIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIGhvdyB2ID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMClcbiAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgaXNfbGVmdCB4ID1cbiAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gIGluXG4gIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdFxuICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX3JpZ2h0XG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCdlbHQgLT4gJ2tleSAtPiBpbnQpXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9rZXkudFxuICAtPiAna2V5XG4gIC0+IGludCBvcHRpb25cblxudHlwZSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gc2VnbWVudF9vZjooJ2VsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgLT4gaW50IG9wdGlvblxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICh0LCBlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICh0LCBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhKSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJpbmFyeV9zZWFyY2hhYmxlID0gc2lnXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gSW5kZXhhYmxlXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBJbmRleGFibGUxXG5cbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBXaGljaF90YXJnZXRfYnlfa2V5XG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50XG5cbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID0gKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgd2l0aCB0eXBlIGVsdCA6PSBULmVsdFxuICBtb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIGVsdFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgbGV0IGdldCA9IFQuZ2V0XG4gIGxldCBsZW5ndGggPSBULmxlbmd0aFxuXG4gIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5jb21wYXJlIGhvdyB2XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgdHlwZSAnYSBlbHQgPSBULmVsdFxuICAgIHR5cGUgJ2EgdCA9IFQudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBnZXQgPSBULmdldFxuICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlblxuICAgIChTcmMgOiBTZXF1ZW5jZV9nZW4pIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSBTcmMudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIFNyYy50LCAnYSB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCB1bnNhZmVfYmxpdCA9IERzdC51bnNhZmVfYmxpdFxuXG4gIGxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOnNyY19wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOmRzdF9wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KERzdC5sZW5ndGggZHN0KTtcbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgOztcblxuICBsZXQgYmxpdG9cbiAgICAgICAgfnNyY1xuICAgICAgICA/KHNyY19wb3MgPSAwKVxuICAgICAgICA/KHNyY19sZW4gPSBTcmMubGVuZ3RoIHNyYyAtIHNyY19wb3MpXG4gICAgICAgIH5kc3RcbiAgICAgICAgPyhkc3RfcG9zID0gMClcbiAgICAgICAgKClcbiAgICA9XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW46c3JjX2xlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgKCogW3N1Yl0gYW5kIFtzdWJvXSBlbnN1cmUgdGhhdCBldmVyeSBwb3NpdGlvbiBvZiB0aGUgY3JlYXRlZCBzZXF1ZW5jZSBpcyBwb3B1bGF0ZWQgYnlcbiAgICAgYW4gZWxlbWVudCBvZiB0aGUgc291cmNlIGFycmF5LiAgVGh1cyBldmVyeSBlbGVtZW50IG9mIFtkc3RdIGJlbG93IGlzIHdlbGxcbiAgICAgZGVmaW5lZC4gKilcbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgbGV0IGRzdCA9IERzdC5jcmVhdGVfbGlrZSB+bGVuIHNyYyBpblxuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgICBzdWJcbiAgICAgIHNyY1xuICAgICAgfnBvc1xuICAgICAgfmxlbjpcbiAgICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICB8IE5vbmUgLT4gU3JjLmxlbmd0aCBzcmMgLSBwb3MpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBibGl0XG4gIGVuZCkgPVxuICBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlIDogU2VxdWVuY2UxKSA9IE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gU2VxdWVuY2UudFxuXG4gICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RcbiAgICAoU3JjIDogU2VxdWVuY2UpIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKFNyYy50LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gU3JjLnRcblxuICAgICAgb3BlbiBTcmNcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBEc3QudFxuXG4gICAgICBvcGVuIERzdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gICAgZW5kKVxuXG5tb2R1bGUgTWFrZV90b19zdHJpbmcgKFQgOiBzaWdcbiAgICB0eXBlIHRcbiAgZW5kKVxuICAgIChUb19ieXRlcyA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBULnQgd2l0aCB0eXBlIGRzdCA6PSBieXRlcykgPVxuc3RydWN0XG4gIG9wZW4gVG9fYnl0ZXNcblxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWIgc3JjIH5wb3MgfmxlbilcbiAgOztcblxuICBsZXQgc3VibyA/cG9zID9sZW4gc3JjID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3VibyA/cG9zID9sZW4gc3JjKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGhhc2hfZm9sZF90IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGhhc2hfZm9sZF9vcHRpb25cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgICBvcHRpb25fb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIHNleHBfb2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbmxldCBhcHBseSBmIHggPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGYgLT4gbWFwIH5mIHhcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBhcHBseSA9IGFwcGx5XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChNb25hZF9hcmcpXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKE1vbmFkX2FyZylcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZVxuXG5tb2R1bGUgT2Zfc2V4cGFibGVcbiAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTFcbiAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUyXG4gICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlM1xuICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3N0cmluZ2FibGUgKE0gOiBTdHJpbmdhYmxlLlMpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBFaXRoZXJfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBFaXRoZXIwXG5cbmxldCBzd2FwID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IFNlY29uZCB4XG4gIHwgU2Vjb25kIHggLT4gRmlyc3QgeFxuOztcblxubGV0IGlzX2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IHRydWVcbiAgfCBTZWNvbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NlY29uZCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiBmYWxzZVxuICB8IFNlY29uZCBfIC0+IHRydWVcbjs7XG5cbmxldCB2YWx1ZSAoRmlyc3QgeCB8IFNlY29uZCB4KSA9IHhcblxubGV0IHZhbHVlX21hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBmaXJzdCB4XG4gIHwgU2Vjb25kIHggLT4gc2Vjb25kIHhcbjs7XG5cbmxldCBpdGVyID0gdmFsdWVfbWFwXG5cbmxldCBtYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gRmlyc3QgKGZpcnN0IHgpXG4gIHwgU2Vjb25kIHggLT4gU2Vjb25kIChzZWNvbmQgeClcbjs7XG5cbmxldCBmaXJzdCB4ID0gRmlyc3QgeFxubGV0IHNlY29uZCB4ID0gU2Vjb25kIHhcblxubGV0IGVxdWFsIGVxMSBlcTIgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gZXExIHggeVxuICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBlcTIgeCB5XG4gIHwgRmlyc3QgXywgU2Vjb25kIF8gfCBTZWNvbmQgXywgRmlyc3QgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCBmIHMgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gZiB4XG4gIHwgU2Vjb25kIHkgLT4gcyB5XG47O1xuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZWl0aGVyIDogKCdhLCAnYikgdCAtPiByZXR1cm46KCdhIC0+ICdjKSAtPiBvdGhlcjooJ2IgLT4gJ2MpIC0+ICdjXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgICAtPiBvdGhlcjooJ2QgLT4gJ2QgLT4gJ2QpXG4gICAgICAtPiAoJ2MsICdkKSB0XG5cbiAgICB2YWwgYmluZCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2EgLT4gKCdjLCAnYikgdCkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKVxuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBhcHBseSB0MSB0MiA9IGJpbmQgdDEgfmY6KGZ1biBmIC0+IGJpbmQgdDIgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSkpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4gXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuIHggLT4gcmV0dXJuX2xvb3AgZiAoeCA6OiBhY2MpIHRzKVxuICAgICAgICAgIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXJcbiAgICAgICAgICB0XG4gICAgICAgICAgfnJldHVybjooZnVuICgpIC0+IG90aGVyX2xvb3AgZiBhY2MgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8pIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyIHQgfnJldHVybjooZnVuICgpIC0+IHJldHVybl9sb29wIGYgdHMpIH5vdGhlcjooZnVuIG8gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiB0c1xuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9IGVpdGhlciB0IH5yZXR1cm46T3B0aW9uLnNvbWUgfm90aGVyOihmdW4gXyAtPiBOb25lKVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGVpdGhlciB0IH5yZXR1cm46Rm4uaWQgfm90aGVyOihmdW4gXyAtPiBkZWZhdWx0KVxuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpcnN0ID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IHJldHVybiA9IGZpcnN0XG4gICAgbGV0IG90aGVyID0gc2Vjb25kXG5cbiAgICBsZXQgZWl0aGVyIHQgfnJldHVybiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gcmV0dXJuIHhcbiAgICAgIHwgU2Vjb25kIHkgLT4gb3RoZXIgeVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGVpdGhlciB0IH5yZXR1cm4gfm90aGVyID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeSAtPiByZXR1cm4geVxuICAgICAgfCBGaXJzdCB4IC0+IG90aGVyIHhcbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKGYgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChvdGhlciB4IHkpXG4gICAgICB8IEZpcnN0IHgsIF8gfCBfLCBGaXJzdCB4IC0+IEZpcnN0IHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbiwgbGlrZSBbRmlyc3QuYmluZF0gYWJvdmUuICopXG4gICAgICB8IEZpcnN0IF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdmLCAncykgX2VpdGhlciA9ICgnZiwgJ3MpIHQgPVxuICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICB8IFNlY29uZCBvZiAnc1xuZW5kXG4iLCJpbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYylcbjs7XG5cbmxldCBjb3VudGkgfmZvbGRpIHQgfmYgPSBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIG4gYSAtPiBpZiBmIGkgYSB0aGVuIG4gKyAxIGVsc2UgbilcblxubGV0IGV4aXN0c2kgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpXG47O1xuXG5sZXQgZm9yX2FsbGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIG5vdCAoZiBpIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmRpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIChTb21lIChpLCB4KSkpO1xuICAgIE5vbmUpXG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBzaWdcbiAgICBpbmNsdWRlIENvbnRhaW5lcl9pbnRmLk1ha2VfZ2VuX2FyZ1xuXG4gICAgdmFsIGl0ZXJpIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICgnYSB0LCAnYSBlbHQpIGl0ZXJpIF1cbiAgICB2YWwgZm9sZGkgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhIHQsICdhIGVsdCwgXykgZm9sZGkgXVxuICBlbmQpIDogR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9IHN0cnVjdFxuICBpbmNsdWRlIENvbnRhaW5lci5NYWtlX2dlbiAoVClcblxuICBsZXQgaXRlcmkgPVxuICAgIG1hdGNoIFQuaXRlcmkgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyaSAtPiBpdGVyaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXJpIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgZm9sZGkgPVxuICAgIG1hdGNoIFQuZm9sZGkgd2l0aFxuICAgIHwgYEN1c3RvbSBmb2xkaSAtPiBmb2xkaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5pbml0IH5mIC0+IGZvbGRpIH5mb2xkIHQgfmluaXQgfmZcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPSBjb3VudGkgfmZvbGRpIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IGV4aXN0c2kgfml0ZXJpIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBmb3JfYWxsaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZF9tYXBpIHQgfmYgPSBmaW5kX21hcGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRpIHQgfmYgPSBmaW5kaSB+aXRlcmkgdCB+ZlxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKFQpXG5cbiAgKCogTm90IHBhcnQgb2YgW0NvbnRhaW5lci5HZW5lcmljXS4gKilcbiAgbGV0IG1lbSA9IEMubWVtXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZTAgKFQpXG5cbiAgKCogTm90IHBhcnQgb2YgW0NvbnRhaW5lci5HZW5lcmljXS4gKilcbiAgbGV0IG1lbSA9IEMubWVtXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb250YWluZXJfaW50Zi5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICAoKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2ZcbiAgICAgdGhlIHNlcXVlbmNlICopXG4gIHR5cGUgKCdhLCAncykgdCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mICdzXG4gICAgfCBZaWVsZCBvZiAnYSAqICdzXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdzLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdzKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfIHNfXzAxMF8pXG4gICAgICAgIDogICgoYV9fMDA5XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMTBfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wMDlfLCBzX18wMTBfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2Zfc19fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IERvbmUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRG9uZVwiXG4gICAgICAgIHwgU2tpcCBhcmcwX18wMDNfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBfb2Zfc19fMDAyXyBhcmcwX18wMDNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2tpcFwiOyByZXMwX18wMDRfIF1cbiAgICAgICAgfCBZaWVsZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDA3XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNV9cbiAgICAgICAgICBhbmQgcmVzMV9fMDA4XyA9IF9vZl9zX18wMDJfIGFyZzFfXzAwNl8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm9wZW4gU3RlcFxuXG4oKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBzZXF1ZW5jZSAqKVxudHlwZSArXyB0ID0gU2VxdWVuY2UgOiAncyAqICgncyAtPiAoJ2EsICdzKSBTdGVwLnQpIC0+ICdhIHRcbnR5cGUgJ2Egc2VxdWVuY2UgPSAnYSB0XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IG5leHRfc3RlcCAoU2VxdWVuY2UgKHMsIGYpKSA9XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBmKSlcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgU2VxdWVuY2UgKHMsIGYpKVxuICA7O1xuXG4gIGxldCBkZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgbG9vcCBzIG5leHQgZmluaXNoIGYgYWNjID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgICAgfCBTa2lwIHMgLT4gZiBhY2MgTm9uZSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBmIGFjYyAoU29tZSBhKSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dCBmaW5pc2ggZiBpbml0XG4gIDs7XG5lbmRcblxubGV0IHVuZm9sZF9zdGVwIH5pbml0IH5mID0gU2VxdWVuY2UgKGluaXQsIGYpXG5cbmxldCB1bmZvbGQgfmluaXQgfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjooZnVuIHMgLT5cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGVwLkRvbmVcbiAgICB8IFNvbWUgKGEsIHMpIC0+IFN0ZXAuWWllbGQgKGEsIHMpKVxuOztcblxubGV0IHVuZm9sZF93aXRoIHMgfmluaXQgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoaW5pdCwgcylcbiAgICAgICwgZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChzZWVkLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgICAgIChtYXRjaCBmIHNlZWQgYSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzZWVkIC0+IFNraXAgKHNlZWQsIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHNlZWQpIC0+IFlpZWxkIChhLCAoc2VlZCwgcykpKSApXG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgLCBmdW4gc3RhdGUgLT5cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgaW5uZXJfc3RhdGUgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gU2tpcCAoYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkpXG4gICAgICAgICAgIHwgU2tpcCBpbm5lcl9zdGF0ZSAtPiBTa2lwIChgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSlcbiAgICAgICAgICAgfCBZaWVsZCAoeCwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgfCBTa2lwIHN0YXRlIC0+IFNraXAgKGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKVxuICAgICAgICAgICAgICB8IFlpZWxkICh5LCBzdGF0ZSkgLT4gWWllbGQgKHksIGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKSkpXG4gICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgKG1hdGNoIGZpbmlzaGluZ19zdGVwIHN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHN0YXRlIC0+IFNraXAgKGBJbm5lcl9maW5pc2hlZCBzdGF0ZSlcbiAgICAgICAgICAgfCBZaWVsZCAoeSwgc3RhdGUpIC0+IFlpZWxkICh5LCBgSW5uZXJfZmluaXNoZWQgc3RhdGUpKSApXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6bCB+ZjooZnVuY3Rpb25cbiAgICB8IFtdIC0+IERvbmVcbiAgICB8IHggOjogbCAtPiBZaWVsZCAoeCwgbCkpXG47O1xuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgKGEsIHMpIC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIGluaXQgbmV4dCBmXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpXG5cblxubGV0IHRvX2xpc3QgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICBsZXQgc2FmZV90b19saXN0IHQgPSBMaXN0LnJldiAodG9fbGlzdF9yZXYgdCkgaW5cbiAgbGV0IHJlYyB0b19saXN0IHMgbmV4dCBpID1cbiAgICBpZiBpID0gMFxuICAgIHRoZW4gc2FmZV90b19saXN0IChTZXF1ZW5jZSAocywgbmV4dCkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgcyAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGluY2x1c2l2ZSAtPiBmdW4gaSAtPiBpZiBpIDwgc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGV4Y2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID49IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgICB8IGBleGNsdXNpdmUgLT4gZnVuIGkgLT4gaWYgaSA8PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X3ZcbiAgICB8IGBleGNsdXNpdmUgLT4gc3RhcnRfdiArIHN0cmlkZVxuICBpblxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjpzdGVwXG47O1xuXG5sZXQgb2ZfbGF6eSB0X2xhenkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDp0X2xhenkgfmY6KGZ1biB0X2xhenkgLT5cbiAgICBsZXQgKFNlcXVlbmNlIChzLCBuZXh0KSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPlxuICAgICAgU2tpcFxuICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSAocywgbmV4dCkgaW5cbiAgICAgICAgIGxhenkgdilcbiAgICB8IFlpZWxkICh4LCBzKSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgKCB4XG4gICAgICAgICwgbGV0IHYgPSBTZXF1ZW5jZSAocywgbmV4dCkgaW5cbiAgICAgICAgICBsYXp5IHYgKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNlZWRcbiAgICAgICwgZnVuIHNlZWQgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChmIGEsIHMpIClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoZiBpIGEsIChpICsgMSwgcykpIClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCAoeCwgYWNjKSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCAoeCwgKGkgKyAxLCBhY2MpKSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNlZWRcbiAgICAgICwgZnVuIHNlZWQgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFlpZWxkIChhLCBzKVxuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIHMgKVxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIG1hcCB+ZjpzbmQgKGZpbHRlciAobWFwaSB0IH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGlcbiAgICB8IFNraXAgcyAtPiBsb29wIGkgcyBuZXh0XG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCAoaSArIDEpIHMgbmV4dFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGYgaSBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBub3QgKGYgaSBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gKClcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBmXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIGYgYTtcbiAgICAgIGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCBfIC0+IGZhbHNlXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGIsIF8pIHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIChfLCBzKSB8IFNraXAgcyAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBhXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSAoKCksIGZ1biAoKSAtPiBEb25lKVxuXG5sZXQgYmluZCB0IH5mID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpLCByZXN0IC0+XG4gICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgfCBEb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGVtcHR5LCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gICAgICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBTa2lwIChmIGEsIFNlcXVlbmNlIChzLCBuZXh0KSkpKVxuICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIG5leHQpLCByZXN0KVxuICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIChTZXF1ZW5jZSAocywgbmV4dCksIHJlc3QpKSkpXG4gICAgfmluaXQ6KGVtcHR5LCB0KVxuOztcblxubGV0IHJldHVybiB4ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6KFNvbWUgeCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IERvbmVcbiAgICB8IFNvbWUgeCAtPiBZaWVsZCAoeCwgTm9uZSkpXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZClcblxubGV0IG50aCBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTm9uZVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBpIHMgbmV4dFxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gaWYgcGh5c19lcXVhbCBpIDAgdGhlbiBTb21lIGEgZWxzZSBsb29wIChpIC0gMSkgcyBuZXh0XG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxMV8gYl9fMDEyXyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAxMV8gYl9fMDEyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDExXywgYl9fMDEyXyB3aXRoXG4gICAgICB8IExlZnQgX2FfXzAxM18sIExlZnQgX2JfXzAxNF8gLT4gX2NtcF9fYSBfYV9fMDEzXyBfYl9fMDE0X1xuICAgICAgfCBMZWZ0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgTGVmdCBfIC0+IDFcbiAgICAgIHwgUmlnaHQgX2FfXzAxNV8sIFJpZ2h0IF9iX18wMTZfIC0+IF9jbXBfX2IgX2FfXzAxNV8gX2JfXzAxNl9cbiAgICAgIHwgUmlnaHQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBSaWdodCBfIC0+IDFcbiAgICAgIHwgQm90aCAoX2FfXzAxN18sIF9hX18wMTlfKSwgQm90aCAoX2JfXzAxOF8sIF9iX18wMjBfKSAtPlxuICAgICAgICAobWF0Y2ggX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fYiBfYV9fMDE5XyBfYl9fMDIwX1xuICAgICAgICAgfCBuIC0+IG4pKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdFxuICAgIDogdHlwZSBhIGIuXG4gICAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgICAgLT4gKGEsIGIpIHRcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgfCBMZWZ0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgIHwgUmlnaHQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuICAgICAgfCBCb3RoIChfYTAsIF9hMSkgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMiBpblxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgICAgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTFcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDQ0XyBiX18wNDVfKVxuICAgICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wNDRfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzA0NV8pXG4gICAgICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKGFfXzA0NF8sIGJfXzA0NV8pIHQpIC0+XG4gICAgICBsZXQgZXJyb3Jfc291cmNlX18wMjVfID0gXCJzZXF1ZW5jZS5tbC5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50XCIgaW5cbiAgICAgIGZ1biBfb2ZfYV9fMDIxXyBfb2ZfYl9fMDIyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIF90YWdfXzAyOF8pIDo6IHNleHBfYXJnc19fMDI5XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDI3XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyOV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDMwXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBfb2ZfYV9fMDIxXyBhcmcwX18wMzBfIGluXG4gICAgICAgICAgICAgTGVmdCByZXMwX18wMzFfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDI4X1xuICAgICAgICAgICAgICAgX3NleHBfXzAyN18pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBfdGFnX18wMzNfKSA6OiBzZXhwX2FyZ3NfXzAzNF8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzMl8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzRfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzNV8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzZfID0gX29mX2JfXzAyMl8gYXJnMF9fMDM1XyBpblxuICAgICAgICAgICAgIFJpZ2h0IHJlczBfXzAzNl9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMzNfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDMyXylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBfdGFnX18wMzhfKSA6OiBzZXhwX2FyZ3NfXzAzOV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzN18gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzlfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzA0MF87IGFyZzFfXzA0MV8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wNDJfID0gX29mX2FfXzAyMV8gYXJnMF9fMDQwX1xuICAgICAgICAgICAgIGFuZCByZXMxX18wNDNfID0gX29mX2JfXzAyMl8gYXJnMV9fMDQxXyBpblxuICAgICAgICAgICAgIEJvdGggKHJlczBfXzA0Ml8sIHJlczFfXzA0M18pXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI1X1xuICAgICAgICAgICAgICAgX3RhZ19fMDM4X1xuICAgICAgICAgICAgICAgX3NleHBfXzAzN18pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjRfXG4gICAgICAgIHwgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDU2XyBiX18wNTdfKVxuICAgICAgICA6ICAoKGFfXzA1Nl8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDU3XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDU2XywgYl9fMDU3XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzA0Nl8gX29mX2JfXzA0N18gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBMZWZ0IGFyZzBfXzA0OF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDQ5XyA9IF9vZl9hX18wNDZfIGFyZzBfXzA0OF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IHJlczBfXzA0OV8gXVxuICAgICAgICB8IFJpZ2h0IGFyZzBfXzA1MF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUxXyA9IF9vZl9iX18wNDdfIGFyZzBfXzA1MF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyByZXMwX18wNTFfIF1cbiAgICAgICAgfCBCb3RoIChhcmcwX18wNTJfLCBhcmcxX18wNTNfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX2FfXzA0Nl8gYXJnMF9fMDUyX1xuICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX2JfXzA0N18gYXJnMV9fMDUzXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIjsgcmVzMF9fMDU0XzsgcmVzMV9fMDU1XyBdXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJCb3RoXCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1lcmdlX3dpdGhfZHVwbGljYXRlcyAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgfmNvbXBhcmUgPVxuICBsZXQgdW5zaGFkb3dlZF9jb21wYXJlID0gY29tcGFyZSBpblxuICBsZXQgb3BlbiBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCBpblxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCAoWWllbGQgKGEsIHMxJykgYXMgczEpLCAoWWllbGQgKGIsIHMyJykgYXMgczIpIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IHVuc2hhZG93ZWRfY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPCAwXG4gICAgICB0aGVuIFlpZWxkIChMZWZ0IGEsIChTa2lwIHMxJywgczIpKVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlbiBZaWVsZCAoQm90aCAoYSwgYiksIChTa2lwIHMxJywgU2tpcCBzMicpKVxuICAgICAgZWxzZSBZaWVsZCAoUmlnaHQgYiwgKHMxLCBTa2lwIHMyJykpXG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKExlZnQgYSwgKFNraXAgczEsIERvbmUpKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoUmlnaHQgYiwgKERvbmUsIFNraXAgczIpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZCBzMSBzMiB+Y29tcGFyZSA9XG4gIG1hcCAobWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIHMxIHMyIH5jb21wYXJlKSB+ZjooZnVuY3Rpb25cbiAgICB8IExlZnQgeCB8IFJpZ2h0IHggfCBCb3RoICh4LCBfKSAtPiB4KVxuOztcblxubGV0IChtZXJnZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDIxLTA3XSBGb3IgaWRlbnRpY2FsIGJlaGF2aW9yLCB1c2UgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZF0sIGJ1dCBjb25zaWRlciB1c2luZyBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2Vfc29ydGVkXSBpbnN0ZWFkLlwiXSlcbiAgPVxuICBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRcbjs7XG5cbmxldCBtZXJnZV9zb3J0ZWQgKFNlcXVlbmNlIChzMSwgbmV4dDEpKSAoU2VxdWVuY2UgKHMyLCBuZXh0MikpIH5jb21wYXJlID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgKFlpZWxkIChhLCBzMScpIGFzIHMxKSwgKFlpZWxkIChiLCBzMicpIGFzIHMyKSAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwIHRoZW4gWWllbGQgKGEsIChTa2lwIHMxJywgczIpKSBlbHNlIFlpZWxkIChiLCAoczEsIFNraXAgczInKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoYSwgKFNraXAgczEsIERvbmUpKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYiwgKERvbmUsIFNraXAgczIpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IGhkIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChhLCBfKSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgaGRfZXhuIHMgPVxuICBtYXRjaCBoZCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiaGRfZXhuXCJcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHRsIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChfLCBhKSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgKHMsIG5leHQpKSlcbjs7XG5cbmxldCB0bF9lYWdlcmx5X2V4biBzID1cbiAgbWF0Y2ggdGwgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRsX2V4blwiXG4gIHwgU29tZSBzIC0+IHNcbjs7XG5cbmxldCBsaWZ0X2lkZW50aXR5IG5leHQgcyA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgRG9uZSAtPiBEb25lXG4gIHwgU2tpcCBzIC0+IFNraXAgKGBJZGVudGl0eSBzKVxuICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYElkZW50aXR5IHMpXG47O1xuXG5sZXQgbmV4dCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCAoYSwgcykgLT4gU29tZSAoYSwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBmaWx0ZXJfb3B0IHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzXG4gICAgICAsIGZ1biBzIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChOb25lLCBzKSAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoU29tZSBhLCBzKSAtPiBZaWVsZCAoYSwgcykgKVxuOztcblxubGV0IGZpbHRlcl9tYXAgcyB+ZiA9IGZpbHRlcl9vcHQgKG1hcCBzIH5mKVxubGV0IGZpbHRlcl9tYXBpIHMgfmYgPSBmaWx0ZXJfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgc3BsaXRfbiBzIG4gPVxuICBsZXQgcmVjIGxvb3AgcyBpIGFjY3VtIG5leHQgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gTGlzdC5yZXYgYWNjdW0sIFNlcXVlbmNlIChzLCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG4gW10gbmV4dFxuOztcblxubGV0IGNodW5rc19leG4gdCBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jaHVua3NfZXhuXCJcbiAgZWxzZVxuICAgIHVuZm9sZF9zdGVwIH5pbml0OnQgfmY6KGZ1biB0IC0+XG4gICAgICBtYXRjaCBzcGxpdF9uIHQgbiB3aXRoXG4gICAgICB8IFtdLCBfZW1wdHkgLT4gRG9uZVxuICAgICAgfCAoXyA6OiBfIGFzIHhzKSwgdCAtPiBZaWVsZCAoeHMsIHQpKVxuOztcblxubGV0IGZpbmRpIHMgfmYgPSBmaW5kIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgKHMxLCBuZXh0MSksIFNlcXVlbmNlIChzMiwgbmV4dDIpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYEZpcnN0X2xpc3QgczFcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgRmlyc3RfbGlzdCBzMSAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIChgU2Vjb25kX2xpc3QgczIpXG4gICAgICAgICAgIHwgU2tpcCBzMSAtPiBTa2lwIChgRmlyc3RfbGlzdCBzMSlcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgczEpIC0+IFlpZWxkIChhLCBgRmlyc3RfbGlzdCBzMSkpXG4gICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQyIHMyIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMyIC0+IFNraXAgKGBTZWNvbmRfbGlzdCBzMilcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgczIpIC0+IFlpZWxkIChhLCBgU2Vjb25kX2xpc3QgczIpKSApXG47O1xuXG5sZXQgY29uY2F0X21hcCBzIH5mID0gYmluZCBzIH5mXG5sZXQgY29uY2F0IHMgPSBjb25jYXRfbWFwIHMgfmY6Rm4uaWRcbmxldCBjb25jYXRfbWFwaSBzIH5mID0gY29uY2F0X21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHppcCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCAoYSwgczEpLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkICgoYSwgYiksIChTa2lwIHMxLCBTa2lwIHMyKSlcbiAgICB8IERvbmUsIF8gfCBfLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgaW5cbiAgU2VxdWVuY2UgKChTa2lwIHMxLCBTa2lwIHMyKSwgbmV4dClcbjs7XG5cbmxldCB6aXBfZnVsbCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCAoYSwgczEpLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChgQm90aCAoYSwgYiksIChTa2lwIHMxLCBTa2lwIHMyKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICAgIHwgRG9uZSwgWWllbGQgKGIsIHMyKSAtPiBZaWVsZCAoYFJpZ2h0IGIsIChEb25lLCBuZXh0MiBzMikpXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChgTGVmdCBhLCAobmV4dDEgczEsIERvbmUpKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IGJvdW5kZWRfbGVuZ3RoIChTZXF1ZW5jZSAoc2VlZCwgbmV4dCkpIH5hdF9tb3N0ID1cbiAgbGV0IHJlYyBsb29wIGkgc2VlZCBuZXh0ID1cbiAgICBpZiBpID4gYXRfbW9zdFxuICAgIHRoZW4gYEdyZWF0ZXJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICB8IERvbmUgLT4gYElzIGlcbiAgICAgIHwgU2tpcCBzZWVkIC0+IGxvb3AgaSBzZWVkIG5leHRcbiAgICAgIHwgWWllbGQgKF8sIHNlZWQpIC0+IGxvb3AgKGkgKyAxKSBzZWVkIG5leHQpXG4gIGluXG4gIGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCBsZW5ndGhfaXNfYm91bmRlZF9ieSA/KG1pbiA9IC0xKSA/bWF4IHQgPVxuICBsZXQgbGVuZ3RoX2lzX2F0X2xlYXN0IChTZXF1ZW5jZSAocywgbmV4dCkpID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IGZvbGRpIHMgfmluaXQgfmYgPVxuICBmb2xkIH5pbml0IChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gYWNjIChpLCBzKSAtPiBmIGkgYWNjIHMpXG47O1xuXG5sZXQgcmVkdWNlIHMgfmYgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGEsIHMpIC0+IFNvbWUgKGZvbGQgcyB+aW5pdDphIH5mKVxuOztcblxubGV0IHJlZHVjZV9leG4gcyB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UucmVkdWNlX2V4blwiXG4gIHwgU29tZSByZXMgLT4gcmVzXG47O1xuXG5sZXQgZ3JvdXAgKFNlcXVlbmNlIChzLCBuZXh0KSkgfmJyZWFrID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDooU29tZSAoW10sIHMpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgIHwgU29tZSAoYWNjLCBzKSAtPlxuICAgICAgICAobWF0Y2ggYWNjLCBuZXh0IHMgd2l0aFxuICAgICAgICAgfCBfLCBTa2lwIHMgLT4gU2tpcCAoU29tZSAoYWNjLCBzKSlcbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgKExpc3QucmV2IGFjYywgTm9uZSlcbiAgICAgICAgIHwgW10sIFlpZWxkIChjdXIsIHMpIC0+IFNraXAgKFNvbWUgKFsgY3VyIF0sIHMpKVxuICAgICAgICAgfCAocHJldiA6OiBfIGFzIGFjYyksIFlpZWxkIChjdXIsIHMpIC0+XG4gICAgICAgICAgIGlmIGJyZWFrIHByZXYgY3VyXG4gICAgICAgICAgIHRoZW4gWWllbGQgKExpc3QucmV2IGFjYywgU29tZSAoWyBjdXIgXSwgcykpXG4gICAgICAgICAgIGVsc2UgU2tpcCAoU29tZSAoY3VyIDo6IGFjYywgcykpKSlcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSAoU2VxdWVuY2UgKHMsIG5leHQpKSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHNcbjs7XG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyBzIH5lcXVhbCA9XG4gIHVuZm9sZF93aXRoIHMgfmluaXQ6Tm9uZSB+ZjooZnVuIHByZXYgYSAtPlxuICAgIG1hdGNoIHByZXYgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNraXAgKFNvbWUgYSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgKGEsIFNvbWUgYSkpXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGxlbmd0aCAoZmlsdGVyIHMgfmYpXG5sZXQgY291bnRpIHQgfmYgPSBsZW5ndGggKGZpbHRlcmkgdCB+ZilcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT4gaWYgaSA+PSBuIHRoZW4gRG9uZSBlbHNlIFlpZWxkIChmIGksIGkgKyAxKSlcbjs7XG5cbmxldCBzdWIgcyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnN1YlwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBpID49IHBvcyAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSlcbiAgICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIChpICsgMSwgcykpIClcbjs7XG5cbmxldCB0YWtlIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UudGFrZVwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBpZiBpID49IGxlblxuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIChpICsgMSwgcykpKSApXG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggKDAsIHMpXG4gICAgICAsIGZ1biAoaSwgcykgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBpID49IGxlbiAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSlcbiAgICAgICAgfCBZaWVsZCAoXywgcykgLT4gU2tpcCAoaSArIDEsIHMpIClcbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBzXG4gICAgICAsIGZ1biBzIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBZaWVsZCAoYSwgcylcbiAgICAgICAgfCBZaWVsZCAoXywgXykgLT4gRG9uZSApXG47O1xuXG5sZXQgZHJvcF93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYERyb3BwaW5nIHNcbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgRHJvcHBpbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gU2tpcCAoYERyb3BwaW5nIHMpXG4gICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgSWRlbnRpdHkgcykpXG4gICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMgKVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0IHMgeCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIGBDb25zaW5nIChzZWVkLCB4KVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCAoeCwgYElkZW50aXR5IHNlZWQpXG4gICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMgKVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYEluaXQgc1xuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBJbml0IHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYEluaXQgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBSdW5uaW5nIHMpKVxuICAgICAgICB8IGBSdW5uaW5nIHMgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoYFJ1bm5pbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKHNlcCwgYFB1dHRpbmcgKGEsIHMpKSlcbiAgICAgICAgfCBgUHV0dGluZyAoYSwgcykgLT4gWWllbGQgKGEsIGBSdW5uaW5nIHMpIClcbjs7XG5cbmxldCByZXBlYXQgeCA9IHVuZm9sZF9zdGVwIH5pbml0OnggfmY6KGZ1biB4IC0+IFlpZWxkICh4LCB4KSlcblxubGV0IGN5Y2xlX2xpc3RfZXhuIHhzID1cbiAgaWYgTGlzdC5pc19lbXB0eSB4cyB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY3ljbGVfbGlzdF9leG5cIjtcbiAgbGV0IHMgPSBvZl9saXN0IHhzIGluXG4gIGNvbmNhdF9tYXAgfmY6KGZ1biAoKSAtPiBzKSAocmVwZWF0ICgpKVxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHNhIHNiID0gY29uY2F0X21hcCBzYSB+ZjooZnVuIGEgLT4gemlwIChyZXBlYXQgYSkgc2IpXG5sZXQgc2luZ2xldG9uIHggPSByZXR1cm4geFxuXG5sZXQgZGVsYXllZF9mb2xkIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5maW5pc2ggfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gayBhY2NcbiAgICB8IFNvbWUgYSAtPiBmIGFjYyBhIH5rKVxuOztcblxubGV0IGZvbGRfbSB+YmluZCB+cmV0dXJuIHQgfmluaXQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuIGFjYykgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhY2MgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGl0ZXJfbSB+YmluZCB+cmV0dXJuIHQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXQ6KClcbiAgICB+ZjooZnVuICgpIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gKCkpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGZvbGRfdW50aWwgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6ICgnYSwgJ2IpIENvbnRpbnVlX29yX3N0b3AudCkgd2l0aFxuICAgICAgIHwgU3RvcCB4IC0+IHhcbiAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHMgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBSZXN1bHQucmV0dXJuIGFjY1xuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6IChfLCBfKSBSZXN1bHQudCkgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICB8IE9rIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvcmNlX2VhZ2VybHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcblxubGV0IG1lbW9pemUgKHR5cGUgYSkgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgcyAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBtZW1vaXplIHMpXG4gIGluXG4gIFNlcXVlbmNlIChtZW1vaXplIHMsIGZ1biAoTS5UIGwpIC0+IExhenkuZm9yY2UgbClcbjs7XG5cbmxldCBkcm9wX2VhZ2VybHkgcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaSB+bGVuIHMgbmV4dCA9XG4gICAgaWYgaSA+PSBsZW5cbiAgICB0aGVuIFNlcXVlbmNlIChzLCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBlbXB0eVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBpIH5sZW4gcyBuZXh0XG4gICAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIChpICsgMSkgfmxlbiBzIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgKHMsIG5leHQpKSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzXG4gICAgfCBZaWVsZCAoeCwgcykgLT4gaWYgZiB4IHRoZW4gbG9vcCBzIGVsc2UgU29tZSAoeCwgU2VxdWVuY2UgKHMsIG5leHQpKVxuICBpblxuICBsb29wIHNcbjs7XG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgXyAtPiByLnJldHVybiAxXG4gICAgICB8IGBSaWdodCBfIC0+IHIucmV0dXJuICgtMSlcbiAgICAgIHwgYEJvdGggKHYxLCB2MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2EgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA8PiAwIHRoZW4gci5yZXR1cm4gYyk7XG4gICAgMClcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID1cbiAgZm9yX2FsbCAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgIHwgYEJvdGggKGExLCBhMikgLT4gZXF1YWxfYSBhMSBhMlxuICAgIHwgYExlZnQgXyB8IGBSaWdodCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHJvdW5kX3JvYmluIGxpc3QgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIGYpIDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmIHMgd2l0aFxuICAgICAgIHwgWWllbGQgKHgsIHMpIC0+IFlpZWxkICh4LCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMsIGYpIDo6IGRvbmVfc3RhY2spKVxuICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKFNlcXVlbmNlIChzLCBmKSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrKVxuICAgICAgIHwgRG9uZSAtPiBTa2lwICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSlcbiAgICB8IFtdIC0+IGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gbGlzdCwgW10gaW5cbiAgU2VxdWVuY2UgKHN0YXRlLCBuZXh0KVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIChzMSwgZjEpKSA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMyLCBmMikgOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYyIHMyIHdpdGhcbiAgICAgICB8IFlpZWxkICh4LCBzMikgLT4gWWllbGQgKHgsICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAoczIsIGYyKSA6OiBkb25lX3N0YWNrLCBzMSkpXG4gICAgICAgfCBTa2lwIHMyIC0+IFNraXAgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzMiwgZjIpIDo6IGRvbmVfc3RhY2ssIHMxKVxuICAgICAgIHwgRG9uZSAtPiBTa2lwICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIGYxIHMxLCBkb25lX3N0YWNrIHdpdGhcbiAgICAgICB8IFlpZWxkICh0LCBzMSksIF8gLT4gU2tpcCAoTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSlcbiAgICAgICB8IFNraXAgczEsIF8gLT4gU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxKVxuICAgICAgIHwgRG9uZSwgXyA6OiBfIC0+IFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSlcbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgKHN0YXRlLCBuZXh0KVxuOztcblxubGV0IGludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0IHMxIHMyID1cbiAgbWFwIHMxIH5mOihmdW4geDEgLT4gbWFwIHMyIH5mOihmdW4geDIgLT4geDEsIHgyKSkgfD4gaW50ZXJsZWF2ZVxuOztcblxubGV0IG9mX3NlcSAoc2VxIDogXyBDYW1sLlNlcS50KSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnNlcSB+ZjooZnVuIHNlcSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gRG9uZVxuICAgIHwgQ29ucyAoaGQsIHRsKSAtPiBZaWVsZCAoaGQsIHRsKSlcbjs7XG5cbmxldCB0b19zZXEgKFNlcXVlbmNlIChzdGF0ZSwgbmV4dCkpID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gQ2FtbC5TZXEuTmlsXG4gICAgfCBTa2lwIHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIChoZCwgc3RhdGUpIC0+IENhbWwuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgKGUsIGspKVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgKHgsIGZ1biAoKSAtPiBrICgpIGYpKSlcbiAgICAgIH5maW5pc2g6cmV0dXJuXG4gIDs7XG5cbiAgbGV0IHJ1biB0ID1cbiAgICBsZXQgaW5pdCAoKSA9IHRvX3N0ZXBzIHQgaW5cbiAgICBsZXQgZiB0aHVuayA9IHVud3JhcCAodGh1bmsgKCkpIGluXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQgfmZcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9hcnJheVxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGFycmF5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbmV3IGluLXBsYWNlLCBjb25zdGFudCBoZWFwIHNvcnRpbmcgYWxnb3JpdGhtIHRvIHJlcGxhY2UgdGhlXG4gICBvbmUgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyaWVzLiAgSXRzIG9ubHkgcHVycG9zZSBpcyB0byBiZSBmYXN0ZXIgKGhvcGVmdWxseVxuICAgc3RyaWN0bHkgZmFzdGVyKSB0aGFuIHRoZSBiYXNlIHNvcnQgYW5kIHN0YWJsZV9zb3J0LlxuXG4gICBBdCBhIGhpZ2ggbGV2ZWwgdGhlIGFsZ29yaXRobSBpczpcbiAgIC0gcGljayB0d28gcGl2b3QgcG9pbnRzIGJ5OlxuICAgLSBwaWNrIDUgYXJiaXRyYXJ5IGVsZW1lbnRzIGZyb20gdGhlIGFycmF5XG4gICAtIHNvcnQgdGhlbSB3aXRoaW4gdGhlIGFycmF5XG4gICAtIHRha2UgdGhlIGVsZW1lbnRzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBtaWRkbGUgZWxlbWVudCBvZiB0aGUgc29ydCBhcyB0aGUgcGl2b3RzXG4gICAtIHNvcnQgdGhlIGFycmF5IHdpdGg6XG4gICAtIGFsbCBlbGVtZW50cyBsZXNzIHRoYW4gcGl2b3QxIHRvIHRoZSBsZWZ0IChyYW5nZSAxKVxuICAgLSBhbGwgZWxlbWVudHMgPj0gcGl2b3QxIGFuZCA8PSBwaXZvdDIgaW4gdGhlIG1pZGRsZSAocmFuZ2UgMilcbiAgIC0gYWxsIGVsZW1lbnRzID4gcGl2b3QyIHRvIHRoZSByaWdodCAocmFuZ2UgMylcbiAgIC0gaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIGVxdWFsLCB0aGVuIHRoZSBtaWRkbGUgcmFuZ2UgaXMgc29ydGVkLCBzbyBpZ25vcmUgaXRcbiAgIC0gcmVjdXJzZSBpbnRvIHJhbmdlIDEsIDIgKGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSB1bmVxdWFsKSwgYW5kIDNcbiAgIC0gZHVyaW5nIHJlY3Vyc2lvbiB0aGVyZSBhcmUgdHdvIGluZmxlY3Rpb24gcG9pbnRzOlxuICAgLSBpZiB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCByYW5nZSBpcyBzbWFsbCwgdXNlIGluc2VydGlvbiBzb3J0IHRvIHNvcnQgaXRcbiAgIC0gaWYgdGhlIHN0YWNrIGRlcHRoIGlzIGxhcmdlLCBzb3J0IHRoZSByYW5nZSB3aXRoIGhlYXAtc29ydCB0byBhdm9pZCBuXjIgd29yc3QtY2FzZVxuICAgICBiZWhhdmlvclxuXG4gICBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgIC0gXCJEdWFsLVBpdm90IFF1aWNrc29ydFwiIGJ5IFZsYWRpbWlyIFlhcm9zbGF2c2tpeS5cbiAgICAgQXZhaWxhYmxlIGF0XG4gICAgIGh0dHA6Ly93d3cua3JpY2hlLmNvbS5hci9yb290L3Byb2dyYW1taW5nL3NwYWNlVGltZUNvbXBsZXhpdHkvRHVhbFBpdm90UXVpY2tzb3J0LnBkZlxuICAgLSBcIlF1aWNrc29ydCBpcyBPcHRpbWFsXCIgYnkgU2VkZ2V3aWNrIGFuZCBCZW50bGV5LlxuICAgICBTbGlkZXMgYXQgaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35ycy90YWxrcy9RdWlja3NvcnRJc09wdGltYWwucGRmXG4gICAtIGh0dHA6Ly93d3cuc29ydGluZy1hbGdvcml0aG1zLmNvbS9xdWljay1zb3J0LTMtd2F5ICopXG5cbm1vZHVsZSBTb3J0ID0gc3RydWN0XG4gICgqIEZvciB0aGUgc2FrZSBvZiBzcGVlZCB3ZSBjb3VsZCB1c2UgdW5zYWZlIGdldC9zZXQgdGhyb3VnaG91dCwgYnV0IHNwZWVkIHRlc3RzIGRvbid0XG4gICAgIHNob3cgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudC4gKilcbiAgbGV0IGdldCA9IGdldFxuICBsZXQgc2V0ID0gc2V0XG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiBsZWZ0OmludCAoKiBsZWZ0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gcmlnaHQ6aW50ICgqIHJpZ2h0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gdW5pdFxuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luc2VydGlvbl9zb3J0ICopXG4gIG1vZHVsZSBJbnNlcnRpb25fc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgICAgW2Fycl0gaXMgc29ydGVkIGZyb20gW2xlZnRdIHRvIFtwb3MgLSAxXSwgaW5jbHVzaXZlICopXG4gICAgICBmb3IgcG9zID0gbGVmdCArIDEgdG8gcmlnaHQgZG9cbiAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uIGktMV0gaXMgc29ydGVkXG4gICAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLiBwb3NdIGlzIHNvcnRlZCBhbmQgY29udGFpbnMgb25seSBlbGVtZW50cyA+IHZcbiAgICAgICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcblxuICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhbGxvY2F0ZSBhIGNsb3N1cmUsIGJ1dCBpcyBsZWZ0IGluIHRoZSBmb3JcbiAgICAgICAgICAgbG9vcCBmb3IgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBkb2N1bWVudGF0aW9uLiAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICAgICAgbGV0IGlfbmV4dCA9IGkgLSAxIGluXG4gICAgICAgICAgaWYgaV9uZXh0ID49IGxlZnQgJiYgY29tcGFyZSAoZ2V0IGFyciBpX25leHQpIHYgPiAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBzZXQgYXJyIGkgKGdldCBhcnIgaV9uZXh0KTtcbiAgICAgICAgICAgIGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGlfbmV4dCB2KVxuICAgICAgICAgIGVsc2UgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgdiA9IGdldCBhcnIgcG9zIGluXG4gICAgICAgIGxldCBmaW5hbF9wb3MgPSBsb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTVcbiAgICA7O1xuXG4gICAgKCogY2hvb3NlIHBpdm90cyBmb3IgdGhlIGFycmF5IGJ5IHNvcnRpbmcgNSBlbGVtZW50cyBhbmQgZXhhbWluaW5nIHRoZSBjZW50ZXIgdGhyZWVcbiAgICAgICBlbGVtZW50cy4gIFRoZSBnb2FsIGlzIHRvIGNob29zZSB0d28gcGl2b3RzIHRoYXQgd2lsbCBlaXRoZXI6XG4gICAgICAgLSBicmVhayB0aGUgcmFuZ2UgdXAgaW50byAzIGV2ZW4gcGFydGl0aW9uc1xuICAgICAgICAgb3JcbiAgICAgICAtIGVsaW1pbmF0ZSBhIGNvbW1vbmx5IGFwcGVhcmluZyBlbGVtZW50IGJ5IHNvcnRpbmcgaXQgaW50byB0aGUgY2VudGVyIHBhcnRpdGlvblxuICAgICAgICAgYnkgaXRzZWxmXG4gICAgICAgICBUbyB0aGlzIGVuZCB3ZSBsb29rIGF0IHRoZSBjZW50ZXIgMyBlbGVtZW50cyBvZiB0aGUgNSBhbmQgcmV0dXJuIHBhaXJzIG9mIGVxdWFsXG4gICAgICAgICBlbGVtZW50cyBvciB0aGUgd2lkZXN0IHJhbmdlICopXG4gICAgbGV0IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgc2l4dGggPSAocmlnaHQgLSBsZWZ0KSAvIDYgaW5cbiAgICAgIGxldCBtMSA9IGxlZnQgKyBzaXh0aCBpblxuICAgICAgbGV0IG0yID0gbTEgKyBzaXh0aCBpblxuICAgICAgbGV0IG0zID0gbTIgKyBzaXh0aCBpblxuICAgICAgbGV0IG00ID0gbTMgKyBzaXh0aCBpblxuICAgICAgbGV0IG01ID0gbTQgKyBzaXh0aCBpblxuICAgICAgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01O1xuICAgICAgbGV0IG0yX3ZhbCA9IGdldCBhcnIgbTIgaW5cbiAgICAgIGxldCBtM192YWwgPSBnZXQgYXJyIG0zIGluXG4gICAgICBsZXQgbTRfdmFsID0gZ2V0IGFyciBtNCBpblxuICAgICAgaWYgY29tcGFyZSBtMl92YWwgbTNfdmFsID0gMFxuICAgICAgdGhlbiBtMl92YWwsIG0zX3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBpZiBjb21wYXJlIG0zX3ZhbCBtNF92YWwgPSAwXG4gICAgICB0aGVuIG0zX3ZhbCwgbTRfdmFsLCB0cnVlXG4gICAgICBlbHNlIG0yX3ZhbCwgbTRfdmFsLCBmYWxzZVxuICAgIDs7XG5cbiAgICBsZXQgZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZSA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gIGluXG4gIFNvcnQuSW50cm9fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdDpwb3MgfnJpZ2h0Oihwb3MgKyBsZW4gLSAxKVxuOztcblxubGV0IHRvX2FycmF5IHQgPSB0XG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaXNfc29ydGVkIHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID49IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZXJnZSBhMSBhMiB+Y29tcGFyZSA9XG4gIGxldCBsMSA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBsZXQgbDIgPSBBcnJheS5sZW5ndGggYTIgaW5cbiAgaWYgbDEgPSAwXG4gIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGwyID0gMFxuICB0aGVuIGNvcHkgYTFcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEyIDApICh1bnNhZmVfZ2V0IGExIChsMSAtIDEpKSA+PSAwXG4gIHRoZW4gYXBwZW5kIGExIGEyXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMSAwKSAodW5zYWZlX2dldCBhMiAobDIgLSAxKSkgPiAwXG4gIHRoZW4gYXBwZW5kIGEyIGExXG4gIGVsc2UgKFxuICAgIGxldCBsZW4gPSBsMSArIGwyIGluXG4gICAgbGV0IG1lcmdlZCA9IGNyZWF0ZSB+bGVuICh1bnNhZmVfZ2V0IGExIDApIGluXG4gICAgbGV0IGExX2luZGV4ID0gcmVmIDAgaW5cbiAgICBsZXQgYTJfaW5kZXggPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgdXNlX2ExID1cbiAgICAgICAgaWYgbDEgPSAhYTFfaW5kZXhcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGlmIGwyID0gIWEyX2luZGV4XG4gICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICBlbHNlIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpIDw9IDBcbiAgICAgIGluXG4gICAgICBpZiB1c2VfYTFcbiAgICAgIHRoZW4gKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCk7XG4gICAgICAgIGExX2luZGV4IDo9ICFhMV9pbmRleCArIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpO1xuICAgICAgICBhMl9pbmRleCA6PSAhYTJfaW5kZXggKyAxKVxuICAgIGRvbmU7XG4gICAgbWVyZ2VkKVxuOztcblxubGV0IGNvcHlfbWF0cml4ID0gbWFwIH5mOmNvcHlcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbjs7XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcCB+ZiB0KSlcbmxldCBjb25jYXRfbWFwaSB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXBpIH5mIHQpKVxuXG5sZXQgcmV2X2lucGxhY2UgdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgd2hpbGUgIWkgPCAhaiBkb1xuICAgIHN3YXAgdCAhaSAhajtcbiAgICBpbmNyIGk7XG4gICAgZGVjciBqXG4gIGRvbmVcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCB0ID0gY29weSB0IGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3JldiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGEgOjogbCAtPlxuICAgIGxldCBsZW4gPSAxICsgTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICAoKiBXZSBzdGFydCBhdCBbbGVuIC0gMl0gYmVjYXVzZSB3ZSBhbHJlYWR5IHB1dCBbYV0gYXQgW3QuKGxlbiAtIDEpXS4gKilcbiAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICB0LihpKSA8LSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHRcbjs7XG5cbigqIFtvZl9saXN0X21hcF0gYW5kIFtvZl9saXN0X3Jldl9tYXBdIGFyZSBiYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgT0NhbWxcbiAgIGRpc3RyaWJ1dGlvbi4gKilcblxubGV0IG9mX2xpc3RfbWFwIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGhkKTtcbiAgICAgICAgZmlsbCAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIDEgdGxcbjs7XG5cbmxldCBvZl9saXN0X21hcGkgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiAwIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBhIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgaGQpO1xuICAgICAgICBmaWxsIGEgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCBhIDEgdGxcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfb3B0IHQgPSBmaWx0ZXJfbWFwIHQgfmY6Rm4uaWRcblxubGV0IHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yID1cbiAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSB0MSB0MiA9XG4gIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMlxuOztcblxubGV0IGl0ZXIyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuaXRlcjJfZXhuXCIgdDEgdDI7XG4gIGl0ZXJpIHQxIH5mOihmdW4gaSB4MSAtPiBmIHgxICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5tYXAyX2V4blwiIHQxIHQyO1xuICBpbml0IChsZW5ndGggdDEpIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbmxldCBmaWx0ZXJpIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSlcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIChsZW5ndGggLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICFpICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmV4aXN0czJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb3JfYWxsMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID0gbGVuZ3RoIHQxID0gbGVuZ3RoIHQyICYmIGZvcl9hbGwyX2V4biB0MSB0MiB+ZjplcXVhbFxuXG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluZGlfaW50ZXJuYWwgdCB+ZiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gaWZfbm90X2ZvdW5kICgpXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlIChub3QgIWZvdW5kKSAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBmICFpIHZhbHVlXG4gICAgICB0aGVuIChcbiAgICAgICAgdmFsdWVfZm91bmQgOj0gdmFsdWU7XG4gICAgICAgIGZvdW5kIDo9IHRydWUpXG4gICAgICBlbHNlIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgIWZvdW5kIHRoZW4gaWZfZm91bmQgfmk6IWkgfnZhbHVlOiF2YWx1ZV9mb3VuZCBlbHNlIGlmX25vdF9mb3VuZCAoKSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gU29tZSAoaSwgdmFsdWUpKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiBOb25lKVxuOztcblxubGV0IGZpbmRpX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gaSwgdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmY6KGZ1biBfaSB4IC0+IGYgeClcbiAgICB+aWZfZm91bmQ6KGZ1biB+aTpfIH52YWx1ZSAtPiB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9leG46IG5vdCBmb3VuZFwiKSkpXG47O1xuXG5sZXQgZmluZCB0IH5mID0gT3B0aW9uLm1hcCAoZmluZGkgdCB+ZjooZnVuIF9pIHggLT4gZiB4KSkgfmY6KGZ1biAoX2ksIHgpIC0+IHgpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmICFpIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPD0gMVxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGkgPSByZWYgMSBpblxuICAgIGxldCBwcmV2ID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjdXIgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGVxdWFsIGN1ciAhcHJldlxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlc3VsdCA6PSBTb21lICghcHJldiwgY3VyKTtcbiAgICAgICAgaSA6PSBuKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHByZXYgOj0gY3VyO1xuICAgICAgICBpbmNyIGkpXG4gICAgZG9uZTtcbiAgICAhcmVzdWx0KVxuOztcblxubGV0IHJlZHVjZSB0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgciA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgICBkb25lO1xuICAgIFNvbWUgIXIpXG47O1xuXG5sZXQgcmVkdWNlX2V4biB0IH5mID1cbiAgbWF0Y2ggcmVkdWNlIHQgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHBlcm11dGUgPSBBcnJheV9wZXJtdXRlLnBlcm11dGVcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBhcnJheVwiXG4gIGVsc2UgdC4oUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCB0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB6aXAgdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyIHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKSlcbjs7XG5cbmxldCB6aXBfZXhuIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MlxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkuemlwX2V4blwiXG4gIGVsc2UgbWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG47O1xuXG5sZXQgdW56aXAgdCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB4LCB5ID0gdC4oMCkgaW5cbiAgICBsZXQgcmVzMSA9IGNyZWF0ZSB+bGVuOm4geCBpblxuICAgIGxldCByZXMyID0gY3JlYXRlIH5sZW46biB5IGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgeCwgeSA9IHQuKGkpIGluXG4gICAgICByZXMxLihpKSA8LSB4O1xuICAgICAgcmVzMi4oaSkgPC0geVxuICAgIGRvbmU7XG4gICAgcmVzMSwgcmVzMilcbjs7XG5cbmxldCBzb3J0ZWRfY29weSB0IH5jb21wYXJlID1cbiAgbGV0IHQxID0gY29weSB0IGluXG4gIHNvcnQgdDEgfmNvbXBhcmU7XG4gIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IGJvdGggPSBtYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBFaXRoZXIuRmlyc3QgeCBlbHNlIEVpdGhlci5TZWNvbmQgeCkgaW5cbiAgbGV0IHRydWVzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IHggLT4gU29tZSB4XG4gICAgICB8IFNlY29uZCBfIC0+IE5vbmUpXG4gIGluXG4gIGxldCBmYWxzZXMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgdHJ1ZXMsIGZhbHNlc1xuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gX2kgeCAtPiBmIHgpXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdCB0aGVuIFNlcXVlbmNlLlN0ZXAuRG9uZSBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKHQuKGkpLCBpICsgMSkpXG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX3NlcXVlbmNlX211dGFibGUgKGNvcHkgdClcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHQxIHQyID1cbiAgaWYgaXNfZW1wdHkgdDEgfHwgaXNfZW1wdHkgdDJcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW46KG4xICogbjIpICh0MS4oMCksIHQyLigwKSkgaW5cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgZm9yIGkxID0gMCB0byBuMSAtIDEgZG9cbiAgICAgIGZvciBpMiA9IDAgdG8gbjIgLSAxIGRvXG4gICAgICAgIHQuKCFyKSA8LSB0MS4oaTEpLCB0Mi4oaTIpO1xuICAgICAgICBpbmNyIHJcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgdHJhbnNwb3NlIHR0ID1cbiAgaWYgbGVuZ3RoIHR0ID0gMFxuICB0aGVuIFNvbWUgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgd2lkdGggPSBsZW5ndGggdHQgaW5cbiAgICBsZXQgZGVwdGggPSBsZW5ndGggdHQuKDApIGluXG4gICAgaWYgZXhpc3RzIHR0IH5mOihmdW4gdCAtPiBsZW5ndGggdCA8PiBkZXB0aClcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKGluaXQgZGVwdGggfmY6KGZ1biBkIC0+IGluaXQgd2lkdGggfmY6KGZ1biB3IC0+IHR0Lih3KS4oZCkpKSkpXG47O1xuXG5sZXQgdHJhbnNwb3NlX2V4biB0dCA9XG4gIG1hdGNoIHRyYW5zcG9zZSB0dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnRyYW5zcG9zZV9leG5cIlxuICB8IFNvbWUgdHQnIC0+IHR0J1xuOztcblxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIFt8fF1cbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIHQuKDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRfYVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgU29ydCA9IFNvcnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gQ2FtbC5PYmoudCBhcnJheVxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKENhbWwuT2JqLnRhZyAoQ2FtbC5PYmoucmVwciB0KSA8PiBDYW1sLk9iai5kb3VibGVfYXJyYXlfdGFnKVxubGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCAoKiB3b3VsZCBjaGVjayBmb3IgZmxvYXQgYXJyYXlzIGluIDMyIGJpdCwgYnV0IHdoYXRldmVyICopXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIFNleHAuQXRvbVxuICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIFwiPE9ial9hcnJheS50IG9mIGxlbmd0aCBcIjsgSW50LnRvX3N0cmluZyAobGVuZ3RoIHQpOyBcIj5cIiBdKVxuOztcblxubGV0IHplcm9fb2JqID0gQ2FtbC5PYmoucmVwciAoMCA6IGludClcblxuKCogV2UgY2FsbCBbQXJyYXkuY3JlYXRlXSB3aXRoIGEgdmFsdWUgdGhhdCBpcyBub3QgYSBmbG9hdCBzbyB0aGF0IHRoZSBhcnJheSBkb2Vzbid0IGdldFxuICAgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxubGV0IGNyZWF0ZV96ZXJvIH5sZW4gPSBBcnJheS5jcmVhdGUgfmxlbiB6ZXJvX29ialxubGV0IGVtcHR5ID0gW3x8XVxuXG50eXBlIG5vdF9hX2Zsb2F0ID1cbiAgfCBOb3RfYV9mbG9hdF8wXG4gIHwgTm90X2FfZmxvYXRfMSBvZiBpbnRcblxubGV0IF9ub3RfYV9mbG9hdF8wID0gTm90X2FfZmxvYXRfMFxubGV0IF9ub3RfYV9mbG9hdF8xID0gTm90X2FfZmxvYXRfMSA0MlxuXG5sZXQgZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAgSXQgaXMgTk9UIG9rIHRvIHVzZSBbaW50IGFycmF5XSBzaW5jZSAoaWZcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBpbmxpbmVkIGFuZCB0aGUgYXJyYXkgY29udGFpbnMgaW4taGVhcCBib3hlZCB2YWx1ZXMpIHdyb25nIHJlZ2lzdGVyXG4gICAgIHR5cGluZyBtYXkgcmVzdWx0LCBsZWFkaW5nIHRvIGEgZmFpbHVyZSB0byByZWdpc3RlciBuZWNlc3NhcnkgR0Mgcm9vdHMuICopXG4gIENhbWwuT2JqLnJlcHIgKChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpLihpKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBDYW1sLk9iai5yZXByXG4gICAgKEFycmF5LnVuc2FmZV9nZXQgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkgaSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIFNhbWUgY29tbWVudCBhcyBbdW5zYWZlX2dldF0uIFN5cy5vcGFxdWVfaWRlbnRpdHkgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb21cbiAgICAgcG90ZW50aWFsbHkgd3JvbmdseSBndWVzc2luZyB0aGUgdHlwZSBvZiB0aGUgYXJyYXkgYmFzZWQgb24gdGhlIHR5cGUgb2YgZWxlbWVudCwgdGhhdFxuICAgICBpcyBwcmV2ZW50IHRoZSBpbXBsaWNhdGlvbjogKE9iai50YWcgb2JqID0gT2JqLmRvdWJsZV90YWcpID0+IChPYmoudGFnIHQgPVxuICAgICBPYmouZG91YmxlX2FycmF5X3RhZykgd2hpY2ggZmxhbWJkYSBoYXMgdHJpZWQgaW4gdGhlIHBhc3QgKGF0IGxlYXN0IHRoYXQncyBhc3N1bWluZ1xuICAgICB0aGUgY29tcGlsZXIgcmVzcGVjdHMgU3lzLm9wYXF1ZV9pZGVudGl0eSwgd2hpY2ggaXMgbm90IGFsd2F5cyB0aGUgY2FzZSkuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KVxuICAgIGlcbiAgICAoQ2FtbC5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpLihpKVxuICA8LSAoQ2FtbC5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50ID1cbiAgKCogVGhpcyBza2lwcyBbY2FtbF9tb2RpZnldLCB3aGljaCBpcyBPSyBpZiBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGludGVnZXJzLiAqKVxuICBBcnJheS51bnNhZmVfc2V0IChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogaW50IGFycmF5KSBpIChTeXMub3BhcXVlX2lkZW50aXR5IGludClcbjs7XG5cbigqIEZvciBbc2V0XSBhbmQgW3Vuc2FmZV9zZXRdLCBpZiBhIHBvaW50ZXIgaXMgaW52b2x2ZWQsIHdlIGZpcnN0IGRvIGEgcGh5c2ljYWwtZXF1YWxpdHlcbiAgIHRlc3QgdG8gc2VlIGlmIHRoZSBwb2ludGVyIGlzIGNoYW5naW5nLiAgSWYgbm90LCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoZSBbc2V0XSwgd2hpY2hcbiAgIHNhdmVzIGEgY2FsbCB0byBbY2FtbF9tb2RpZnldLiAgV2UgdGhpbmsgdGhpcyBwaHlzaWNhbC1lcXVhbGl0eSB0ZXN0IGlzIHdvcnRoIGl0XG4gICBiZWNhdXNlIGl0IGlzIHZlcnkgY2hlYXAgKGJvdGggdmFsdWVzIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSBmcm9tIHRoZSBbaXNfaW50XSB0ZXN0KVxuICAgYW5kIGJlY2F1c2UgW2NhbWxfbW9kaWZ5XSBpcyBleHBlbnNpdmUuICopXG5cbmxldCBzZXQgdCBpIG9iaiA9XG4gICgqIFdlIHVzZSBbZ2V0XSBmaXJzdCBidXQgdGhlbiB3ZSB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIHNpbmNlIHdlIGtub3cgdGhhdCBbaV0gaXNcbiAgICAgdmFsaWQuICopXG4gIGxldCBvbGRfb2JqID0gZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXQgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmogJiYgQ2FtbC5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChDYW1sLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGEgPSBnZXQgdCBpIGluXG4gIGxldCBiID0gZ2V0IHQgaiBpblxuICB1bnNhZmVfc2V0IHQgaSBiO1xuICB1bnNhZmVfc2V0IHQgaiBhXG47O1xuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gICgqIElmIHdlIGNhbiwgdXNlIFtBcnJheS5jcmVhdGVdIGRpcmVjdGx5LiAqKVxuICBpZiBDYW1sLk9iai50YWcgeCA8PiBDYW1sLk9iai5kb3VibGVfdGFnXG4gIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4geFxuICBlbHNlIChcbiAgICAoKiBPdGhlcndpc2UgdXNlIFtjcmVhdGVfemVyb10gYW5kIHNldCB0aGUgY29udGVudHMgKilcbiAgICBsZXQgdCA9IGNyZWF0ZV96ZXJvIH5sZW4gaW5cbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHhcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIG9iaiA9IGNyZWF0ZSB+bGVuOjEgb2JqXG5cbigqIFByZS1jb25kaXRpb246IHQuKGkpIGlzIGFuIGludGVnZXIuICopXG5sZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBvYmogPVxuICBpZiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50XG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciBpbnQpXG47O1xuXG5sZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCBpID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBub3QgKENhbWwuT2JqLmlzX2ludCBvbGRfb2JqKSB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgMClcbjs7XG5cbigqKiBbdW5zYWZlX2JsaXRdIGlzIGxpa2UgW0FycmF5LmJsaXRdLCBleGNlcHQgaXQgdXNlcyBvdXIgb3duIGZvci1sb29wIHRvIGF2b2lkXG4gICAgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZS4gIEl0cyBwZXJmb3JtYW5jZSBpcyBzdGlsbCBub3QgY29tcGFyYWJsZSB0byBhIG1lbWNweS4gKilcbmxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICgqIFdoZW4gW3BoeXNfZXF1YWwgc3JjIGRzdF0sIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBbZHN0X3BvcyA8IHNyY19wb3NdIGFuZCBoYXZlIHRoZVxuICAgICBmb3IgbG9vcCBnbyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcndyaXRlIGRhdGEgdGhhdCB3ZSBzdGlsbCBuZWVkXG4gICAgIHRvIHJlYWQuICBXaGVuIFtub3QgKHBoeXNfZXF1YWwgc3JjIGRzdCldLCBkb2luZyB0aGlzIGlzIGhhcm1sZXNzLiAgRnJvbSBhXG4gICAgIG1lbW9yeS1wZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBvbmUgbG9vcHMgdXAgb3IgZG93bi5cbiAgICAgQ29uc3RhbnQtc3RyaWRlIGFjY2VzcywgZm9yd2FyZCBvciBiYWNrd2FyZCwgc2hvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIChhdCBsZWFzdCBvblxuICAgICBhbiBpbnRlbCBpNykuICBTbywgd2UgZG9uJ3QgZG8gYSBjaGVjayBmb3IgW3BoeXNfZXF1YWwgc3JjIGRzdF0gYW5kIGFsd2F5cyBsb29wIHVwIGluXG4gICAgIHRoYXQgY2FzZS4gKilcbiAgaWYgZHN0X3BvcyA8IHNyY19wb3NcbiAgdGhlblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG47O1xuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVfemVyb1xuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGVfemVybyB+bGVuOihsZW5ndGggc3JjKSBpblxuICBibGl0byB+c3JjIH5kc3QgKCk7XG4gIGRzdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBXQVJOSU5HOlxuICAgV2UgdXNlIG5vbi1tZW1vcnktc2FmZSB0aGluZ3MgdGhyb3VnaG91dCB0aGUgW1RydXN0ZWRdIG1vZHVsZS5cbiAgIE1vc3Qgb2YgaXQgaXMgb25seSBzYWZlIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgc2lnbmF0dXJlIChlLmcuIGV4cG9zaW5nXG4gICBbdmFsIGNvcHkgOiAnYSB0IC0+ICdiIHRdIHdvdWxkIGJlIGEgYmlnIG1pc3Rha2UpLiAqKVxubW9kdWxlIFRydXN0ZWQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfb2JqX2FycmF5IDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzd2FwIDogXyB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHNpbmdsZXRvbiB4ID0gT2JqX2FycmF5LnNpbmdsZXRvbiAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgc3dhcCB0IGkgaiA9IE9ial9hcnJheS5zd2FwIHQgaSBqXG4gIGxldCBnZXQgYXJyIGkgPSBDYW1sLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9nZXQgYXJyIGkgPSBDYW1sLk9iai5vYmogKE9ial9hcnJheS51bnNhZmVfZ2V0IGFyciBpKVxuICBsZXQgdW5zYWZlX3NldCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gT2JqX2FycmF5Lmxlbmd0aFxuICBsZXQgdW5zYWZlX2JsaXQgPSBPYmpfYXJyYXkudW5zYWZlX2JsaXRcbiAgbGV0IGNvcHkgPSBPYmpfYXJyYXkuY29weVxuXG4gIGxldCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgPSBPYmpfYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXJcbmVuZFxuXG5pbmNsdWRlIFRydXN0ZWRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChDYW1sLk9iai50YWcgKENhbWwuT2JqLnJlcHIgdCkgPD4gQ2FtbC5PYmouZG91YmxlX2FycmF5X3RhZylcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycilcbmxldCBtYXAgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKVxubGV0IG1hcGkgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgaSAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSlcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChncmFtbWFyIDogZWx0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGVsdCB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmluY2x1ZGVcbiAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgKEFycmF5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIGVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiAoZ2V0IHQgMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcHB4X2NvbXBhcmUgW2NvbXBhcmVfYXJyYXldIGJ1dCB1c2VzIG91ciBbdW5zYWZlX2dldF0gYW5kIFtsZW5ndGhdLiAqKVxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgYSBiID1cbiAgaWYgcGh5c19lcXVhbCBhIGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgIGlmIHJldCA8PiAwXG4gICAgdGhlbiByZXRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbCA9IHVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgYW5kIHIgPSB1bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIDApKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGNlaWwgPSBDYW1sLmNlaWxcbmxldCBmbG9vciA9IENhbWwuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBDYW1sLm1vZF9mbG9hdFxubGV0IG1vZGYgPSBDYW1sLm1vZGZcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBDYW1sLmZsb2F0X29mX3N0cmluZ1xubGV0IG5hbiA9IENhbWwubmFuXG5sZXQgaW5maW5pdHkgPSBDYW1sLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gQ2FtbC5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gQ2FtbC5tYXhfZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gQ2FtbC5lcHNpbG9uX2Zsb2F0XG5sZXQgY2xhc3NpZnlfZmxvYXQgPSBDYW1sLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gQ2FtbC5hYnNfZmxvYXRcbmxldCBpc19pbnRlZ2VyID0gQ2FtbC5GbG9hdC5pc19pbnRlZ2VyXG5sZXQgKCAqKiApID0gQ2FtbC4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IENhbWwubW9kX2Zsb2F0IGEgYiBpblxuICAoKiBQcm9kdWNlIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdCBpbiBhbmFsb2d5IHdpdGggSW50LiggJSApLiAqKVxuICBpZiBtIDwgMC4gdGhlbiBtICsuIGIgZWxzZSBtXG47O1xuXG4oKiBUaGUgYml0cyBvZiBJTlJJQSdzIFtQZXJ2YXNpdmVzXSB0aGF0IHdlIGp1c3Qgd2FudCB0byBleHBvc2UgaW4gW0Zsb2F0XS4gTW9zdCBhcmVcbiAgIGFscmVhZHkgZGVwcmVjYXRlZCBpbiBbUGVydmFzaXZlc10sIGFuZCBldmVudHVhbGx5IGFsbCBvZiB0aGVtIHNob3VsZCBiZS4gKilcbmluY2x1ZGUgKFxuICBDYW1sIDpcbiAgc2lnXG4gICAgZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5cbiAgICBleHRlcm5hbCBsZGV4cFxuICAgICAgOiAgKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICAgIC0+IChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCJcbiAgICBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgZW5kKVxuXG4oKiBXZSBuZWVkIHRoaXMgaW5kaXJlY3Rpb24gYmVjYXVzZSB0aGVzZSBhcmUgZXhwb3NlZCBhcyBcInZhbFwiIGluc3RlYWQgb2YgXCJleHRlcm5hbFwiICopXG5sZXQgZnJleHAgPSBmcmV4cFxubGV0IGxkZXhwID0gbGRleHBcbmxldCBpc19uYW4geCA9ICh4IDogZmxvYXQpIDw+IHhcblxuKCogQW4gb3JkZXItcHJlc2VydmluZyBiaWplY3Rpb24gYmV0d2VlbiBhbGwgZmxvYXRzIGV4Y2VwdCBmb3IgTmFOcywgYW5kIDk5Ljk1JSBvZlxuICAgaW50NjRzLlxuXG4gICBOb3RlIHdlIGRvbid0IGRpc3Rpbmd1aXNoIDAuIGFuZCAtMC4gYXMgc2VwYXJhdGUgdmFsdWVzIGhlcmUsIHRoZXkgYm90aCBtYXAgdG8gMEwsIHdoaWNoXG4gICBtYXBzIGJhY2sgdG8gMC5cblxuICAgVGhpcyBzaG91bGQgd29yayBib3RoIG9uIGxpdHRsZS1lbmRpYW4gYW5kIGhpZ2gtZW5kaWFuIENQVXMuICBXaWtpcGVkaWEgc2F5czogXCJvblxuICAgbW9kZXJuIHN0YW5kYXJkIGNvbXB1dGVycyAoaS5lLiwgaW1wbGVtZW50aW5nIElFRUUgNzU0KSwgb25lIG1heSBpbiBwcmFjdGljZSBzYWZlbHlcbiAgIGFzc3VtZSB0aGF0IHRoZSBlbmRpYW5uZXNzIGlzIHRoZSBzYW1lIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFzIGZvciBpbnRlZ2Vyc1wiXG4gICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbmRpYW5uZXNzI0Zsb2F0aW5nLXBvaW50X2FuZF9lbmRpYW5uZXNzKS5cbiopXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCA9XG4gIGlmIGlzX25hbiB0XG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuICgqIGFsc28gaW5jbHVkZXMgLTAuICopXG4gICAgU29tZSAwTFxuICBlbHNlIGlmIHQgPiAwLlxuICB0aGVuIFNvbWUgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKENhbWwuSW50NjQubmVnIChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgKC0udCkpKVxuOztcblxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyX2V4biB4ID0gT3B0aW9uLnZhbHVlX2V4biAodG9faW50NjRfcHJlc2VydmVfb3JkZXIgeClcblxubGV0IG9mX2ludDY0X3ByZXNlcnZlX29yZGVyIHggPVxuICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIHggMExcbiAgdGhlbiBDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgKENhbWwuSW50NjQubmVnIHgpKVxuOztcblxubGV0IG9uZV91bHAgZGlyIHQgPVxuICBtYXRjaCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0IHdpdGhcbiAgfCBOb25lIC0+IENhbWwubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChDYW1sLkludDY0LmFkZFxuICAgICAgICAgeFxuICAgICAgICAgKG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgfCBgVXAgLT4gMUxcbiAgICAgICAgICB8IGBEb3duIC0+IC0xTCkpXG47O1xuXG4oKiBbdXBwZXJfYm91bmRfZm9yX2ludF0gYW5kIFtsb3dlcl9ib3VuZF9mb3JfaW50XSBhcmUgZm9yIGNhbGN1bGF0aW5nIHRoZSBtYXgvbWluIGZsb2F0XG4gICB0aGF0IGZpdHMgaW4gYSBnaXZlbi1zaXplIGludGVnZXIgd2hlbiByb3VuZGVkIHRvd2FyZHMgMCAodXNpbmcgW2ludF9vZl9mbG9hdF0pLlxuXG4gICBtYXhfaW50L21pbl9pbnQgZGVwZW5kIG9uIFtudW1fYml0c10sIGUuZy4gKy8tIDJeMzAsICsvLSAyXjYyIGlmIDMxLWJpdCwgNjMtYml0XG4gICAocmVzcGVjdGl2ZWx5KSB3aGlsZSBmbG9hdCBpcyBJRUVFIHN0YW5kYXJkIGZvciBkb3VibGUgKDUyIHNpZ25pZmljYW50IGJpdHMpLlxuXG4gICBJbiBhbGwgY2FzZXMsIHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoYXRcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IDw9IHggPD0gdXBwZXJfYm91bmRfZm9yX2ludF1cbiAgIGlmZiBbaW50X29mX2Zsb2F0IHhdIGZpdHMgaW4gYW4gaW50IHdpdGggW251bV9iaXRzXSBiaXRzLlxuXG4gICBbMiAqKiAobnVtX2JpdHMgLSAxKV0gaXMgdGhlIGZpcnN0IGZsb2F0IGdyZWF0ZXIgdGhhdCBtYXhfaW50LCB3ZSB1c2UgdGhlIHByZWNlZGluZ1xuICAgZmxvYXQgYXMgdXBwZXIgYm91bmQuXG5cbiAgIFstICgyICoqIChudW1fYml0cyAtIDEpKV0gaXMgZXF1YWwgdG8gbWluX2ludC5cbiAgIEZvciBsb3dlciBib3VuZCB3ZSBsb29rIGZvciB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0gc28gdGhhdFxuICAgW2ZdIHJvdW5kcyB0b3dhcmQgemVybyB0byBbbWluX2ludF1cblxuICAgU28gaW4gcGFydGljdWxhciB3ZSB3aWxsIGhhdmU6XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCB4IDw9IC0gKDIgKiogKDEteCkpXVxuICAgW3VwcGVyX2JvdW5kX2Zvcl9pbnQgeCAgPCAgICAyICoqICgxLXgpIF1cbiopXG5sZXQgdXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBDYW1sLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBvbmVfdWxwIGBEb3duICgyLiAqKiBleHApXG47O1xuXG5sZXQgaXNfeF9taW51c19vbmVfZXhhY3QgeCA9XG4gICgqIFt4ID0geCAtLiAxLl0gZG9lcyBub3Qgd29yayB3aXRoIHg4NyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGJhY2tlbmQgKHdoaWNoIGlzIHVzZWRcbiAgICAgb24gMzItYml0IG9jYW1sKSBiZWNhdXNlIG9mIDgwLWJpdCByZWdpc3RlciBwcmVjaXNpb24gb2YgaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9ucy5cblxuICAgICBBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgY29tcHV0aW5nIHRoaXM6IFt4IC0uIG9uZV91bHAgYERvd24geCA8PSAxLl0gaXMgYWxzbyBwcm9uZSB0b1xuICAgICB0aGUgc2FtZSBwcmVjaXNpb24gaXNzdWVzOiB5b3UgbmVlZCB0byBtYWtlIHN1cmUgW3hdIGlzIDY0LWJpdC5cbiAgKilcbiAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIG5vdCAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgKHggLS4gMS4pKVxuOztcblxubGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gQ2FtbC5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgbGV0IG1pbl9pbnRfYXNfZmxvYXQgPSB+LS4oMi4gKiogZXhwKSBpblxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG51bV9iaXRzIC0gMSA8IDUzICgqIDUzID0gI2JpdHMgaW4gdGhlIGZsb2F0J3MgbWFudGlzc2Egd2l0aCBzaWduIGluY2x1ZGVkICopXG4gIHRoZW4gKFxuICAgICgqIFRoZSBzbWFsbGVzdCBmbG9hdCB0aGF0IHJvdW5kcyB0b3dhcmRzIHplcm8gdG8gW21pbl9pbnRdIGlzXG4gICAgICAgW21pbl9pbnQgLSAxICsgZXBzaWxvbl0gKilcbiAgICBhc3NlcnQgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpO1xuICAgIG9uZV91bHAgYFVwIChtaW5faW50X2FzX2Zsb2F0IC0uIDEuKSlcbiAgZWxzZSAoXG4gICAgKCogW21pbl9pbnRfYXNfZmxvYXRdIGlzIGFscmVhZHkgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdLiAqKVxuICAgIGFzc2VydCAobm90IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KSk7XG4gICAgbWluX2ludF9hc19mbG9hdClcbjs7XG5cbigqIEZsb2F0IGNsYW1waW5nIGlzIHN0cnVjdHVyZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBjbGFtcGluZyBmb3Igb3RoZXIgdHlwZXMsIHNvXG4gICB0aGF0IHdlIGdldCB0aGUgYmVoYXZpb3Igb2YgW2NsYW1wX3VuY2hlY2tlZCBuYW4gfm1pbiB+bWF4ID0gbmFuXSAoZm9yIGFueSBbbWluXSBhbmRcbiAgIFttYXhdKSBmb3IgZnJlZS5cbiopXG5sZXQgY2xhbXBfdW5jaGVja2VkICh0IDogZmxvYXQpIH5taW4gfm1heCA9XG4gIGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiBtYXggPCB0IHRoZW4gbWF4IGVsc2UgdFxuOztcblxubGV0IGJveCA9XG4gICgqIFByZXZlbnQgcG90ZW50aWFsIGNvbnN0YW50IGZvbGRpbmcgb2YgWysuIDAuXSBpbiB0aGUgbmVhciBvY2FtbG9wdCBmdXR1cmUuICopXG4gIGxldCB4ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHkgMC4gaW5cbiAgZnVuIGYgLT4gZiArLiB4XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbmluY2x1ZGUgQ2hhcjBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5tYWtlIDEgdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBzIHdpdGhcbiAgICB8IDEgLT4gcy5bMF1cbiAgICB8IF8gLT4gZmFpbHdpdGhmIFwiQ2hhci5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5DaGFyXCJcbiAgZW5kKVxuXG5sZXQgcHAgZm10IGMgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbmluY2x1ZGUgU3RyaW5nMFxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG4oKiBUaGlzIGFsaWFzIGlzIG5lY2Vzc2FyeSBkZXNwaXRlIFtTdHJpbmcwXSBkZWZpbmluZyBbQnl0ZXMgPSBCeXRlczBdLCBpbiBvcmRlciB0b1xuICAgY29udmluY2Ugb2NhbWxkZXAgdGhhdCB0aGlzIGZpbGUgZG9lc24ndCBkZXBlbmQgb24gYnl0ZXMubWwuICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3N0cmluZ1xuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfc3RyaW5nIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxudHlwZSBlbHQgPSBjaGFyXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbigqIFRoaXMgaXMgY29waWVkL2FkYXB0ZWQgZnJvbSAnYmxpdC5tbCcuXG4gICBbc3ViXSwgW3N1Ym9dIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtCbGl0Lk1ha2UoQnl0ZXMpXSBwbHVzIHVuc2FmZSBjYXN0cyB0by9mcm9tXG4gICBzdHJpbmcgYnV0IHdlcmUgaW5saW5lZCBoZXJlIHRvIGF2b2lkIHVzaW5nIFtCeXRlcy51bnNhZmVfb2Zfc3RyaW5nXSBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuKilcbmxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA9IDAgJiYgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmNcbiAgdGhlbiBzcmNcbiAgZWxzZSAoXG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHNyYyk7XG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KSlcbjs7XG5cbmxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICBzdWJcbiAgICBzcmNcbiAgICB+cG9zXG4gICAgfmxlbjpcbiAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICB8IE5vbmUgLT4gbGVuZ3RoIHNyYyAtIHBvcylcbjs7XG5cbmxldCByZWMgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXyBjaGFyID1cbiAgcG9zIDwgZW5kX1xuICAmJiAoQ2hhci5lcXVhbCAodW5zYWZlX2dldCB0IHBvcykgY2hhciB8fCBjb250YWluc191bnNhZmUgdCB+cG9zOihwb3MgKyAxKSB+ZW5kXyBjaGFyKVxuOztcblxubGV0IGNvbnRhaW5zID8ocG9zID0gMCkgP2xlbiB0IGNoYXIgPVxuICBsZXQgdG90YWxfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGxldCBsZW4gPSBPcHRpb24udmFsdWUgbGVuIH5kZWZhdWx0Oih0b3RhbF9sZW5ndGggLSBwb3MpIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF86KHBvcyArIGxlbikgY2hhclxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IHJlYyBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA+PSBsZW5cbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zICsgMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCkgfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9leG4gdCBjaGFyID0gaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZXhuXG47O1xuXG5sZXQgaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgcmVjIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA8IDBcbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOihsZW4gLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZXhuIHQgY2hhciA9IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZXhuXG47O1xuXG5sZXQgcmluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgLTEgfHwgcG9zID49IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCBpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDJfIGJfXzAwM18gLT5cbiAgICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMl8gYl9fMDAzX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgICAoZXF1YWxfc3RyaW5nIGFfXzAwMl8ucGF0dGVybiBiX18wMDNfLnBhdHRlcm4pXG4gICAgICAgICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgICAgICAoZXF1YWxfYm9vbCBhX18wMDJfLmNhc2Vfc2Vuc2l0aXZlIGJfXzAwM18uY2FzZV9zZW5zaXRpdmUpXG4gICAgICAgICAgICAgICAgKGVxdWFsX2FycmF5IGVxdWFsX2ludCBhX18wMDJfLmttcF9hcnJheSBiX18wMDNfLmttcF9hcnJheSkpXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGJvb2wpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IHBhdHRlcm4gPSBwYXR0ZXJuX18wMDdfXG4gICAgICAgICAgIDsgY2FzZV9zZW5zaXRpdmUgPSBjYXNlX3NlbnNpdGl2ZV9fMDA5X1xuICAgICAgICAgICA7IGttcF9hcnJheSA9IGttcF9hcnJheV9fMDExX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDZfID0gW10gaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfaW50IGttcF9hcnJheV9fMDExXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImttcF9hcnJheVwiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMDlfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA3XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhdHRlcm5cIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA2X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHJlcHJlc2VudGF0aW9uID0gRm4uaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuX2hlbHBlciA9IHN0cnVjdFxuICBtb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBTZWFyY2hfcGF0dGVybjBcbmVuZFxuXG5vcGVuIFNlYXJjaF9wYXR0ZXJuX2hlbHBlclxuXG5sZXQgc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXggP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfZXhuID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfm1heV9vdmVybGFwIH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfYWxsXG4gICAgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybilcbiAgICB+bWF5X292ZXJsYXBcbiAgICB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfZmlyc3QgP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9hbGwgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+c3Vic3RyaW5nID1cbiAgT3B0aW9uLmlzX3NvbWUgKHN1YnN0cl9pbmRleF9nZW4gdCB+cGF0dGVybjpzdWJzdHJpbmcgfmNhc2Vfc2Vuc2l0aXZlKVxuOztcblxubGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5cbmxldCBpc19zdWJzdHJpbmdfYXRfZ2VuID1cbiAgbGV0IHJlYyBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvcyB+c3ViX2xlbiB+Y2hhcl9lcXVhbCA9XG4gICAgaWYgc3ViX3BvcyA9IHN1Yl9sZW5cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGlmIGNoYXJfZXF1YWwgKHVuc2FmZV9nZXQgc3RyIHN0cl9wb3MpICh1bnNhZmVfZ2V0IHN1YiBzdWJfcG9zKVxuICAgIHRoZW4gbG9vcCB+c3RyIH5zdHJfcG9zOihzdHJfcG9zICsgMSkgfnN1YiB+c3ViX3Bvczooc3ViX3BvcyArIDEpIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG4gICAgZWxzZSBmYWxzZVxuICBpblxuICBmdW4gc3RyIH5wb3M6c3RyX3BvcyB+c3Vic3RyaW5nOnN1YiB+Y2hhcl9lcXVhbCAtPlxuICAgIGxldCBzdHJfbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCBzdWJfbGVuID0gbGVuZ3RoIHN1YiBpblxuICAgIGlmIHN0cl9wb3MgPCAwIHx8IHN0cl9wb3MgPiBzdHJfbGVuXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiU3RyaW5nLmlzX3N1YnN0cmluZ19hdDogaW52YWxpZCBpbmRleCAlZCBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICAgIHN0cl9wb3NcbiAgICAgICAgc3RyX2xlblxuICAgICAgICAoKTtcbiAgICBzdHJfcG9zICsgc3ViX2xlbiA8PSBzdHJfbGVuXG4gICAgJiYgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3M6MCB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3N1ZmZpeF9nZW4gc3RyaW5nIH5zdWZmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIHN0cmluZ19sZW4gPj0gc3VmZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuXG4gICAgICAgc3RyaW5nXG4gICAgICAgfnBvczooc3RyaW5nX2xlbiAtIHN1ZmZpeF9sZW4pXG4gICAgICAgfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3ByZWZpeF9nZW4gc3RyaW5nIH5wcmVmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHByZWZpeF9sZW4gPSBsZW5ndGggcHJlZml4IGluXG4gIHN0cmluZ19sZW4gPj0gcHJlZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuIHN0cmluZyB+cG9zOjAgfnN1YnN0cmluZzpwcmVmaXggfmNoYXJfZXF1YWxcbjs7XG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJfY29tcGFyZV9jYXNlbGVzcyBjMSBjMiA9IENoYXIuY29tcGFyZSAoQ2hhci5sb3dlcmNhc2UgYzEpIChDaGFyLmxvd2VyY2FzZSBjMilcblxuICAgIGxldCByZWMgY29tcGFyZV9sb29wIH5wb3MgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjIgPVxuICAgICAgaWYgcG9zID0gbGVuMVxuICAgICAgdGhlbiBpZiBwb3MgPSBsZW4yIHRoZW4gMCBlbHNlIC0xXG4gICAgICBlbHNlIGlmIHBvcyA9IGxlbjJcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjID0gY2hhcl9jb21wYXJlX2Nhc2VsZXNzICh1bnNhZmVfZ2V0IHN0cmluZzEgcG9zKSAodW5zYWZlX2dldCBzdHJpbmcyIHBvcykgaW5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xvb3AgfnBvczoocG9zICsgMSkgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjJcbiAgICAgICAgfCBfIC0+IGMpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIHN0cmluZzEgc3RyaW5nMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHN0cmluZzEgc3RyaW5nMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXBhcmVfbG9vcFxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5zdHJpbmcxXG4gICAgICAgICAgfmxlbjE6KFN0cmluZy5sZW5ndGggc3RyaW5nMSlcbiAgICAgICAgICB+c3RyaW5nMlxuICAgICAgICAgIH5sZW4yOihTdHJpbmcubGVuZ3RoIHN0cmluZzIpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID1cbiAgICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgICAgbGV0IHN0YXRlID0gcmVmIChoYXNoX2ZvbGRfaW50IHN0YXRlIGxlbikgaW5cbiAgICAgIGZvciBwb3MgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgc3RhdGUgOj0gaGFzaF9mb2xkX2NoYXIgIXN0YXRlIChDaGFyLmxvd2VyY2FzZSAodW5zYWZlX2dldCB0IHBvcykpXG4gICAgICBkb25lO1xuICAgICAgIXN0YXRlXG4gICAgOztcblxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gICAgbGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nX2F0ID0gaXNfc3Vic3RyaW5nX2F0X2dlbiB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRm4uaWRcbmxldCB0b19zdHJpbmcgPSBGbi5pZFxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpIDwgMCB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgLSAxKSBpblxuICBsb29wIFtdIChsZW5ndGggcyAtIDEpXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpID0gbGVuIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSArIDEpIGluXG4gIGxvb3AgW10gMFxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCByZXMgaSAodW5zYWZlX2dldCB0IChsZW4gLSAxIC0gaSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzXG47O1xuXG4oKiogRWZmaWNpZW50IHN0cmluZyBzcGxpdHRpbmcgKilcblxubGV0IGxzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmxzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGxzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGxzcGxpdDJfZXhuXG47O1xuXG5sZXQgcnNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucnNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcnNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSByaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJzcGxpdDJfZXhuXG47O1xuXG5sZXQgbHNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChsc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcnNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChyc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+IFNvbWUgdC5baV1cbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG5cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGYgdC5baV0gd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5sZXQgcmZpbmRpID9wb3MgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA8IDAgdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSAtIDEpIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgICB8IE5vbmUgLT4gbGVuZ3RoIHQgLSAxXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKVxuXG5sZXQgcnN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuOztcblxubGV0IGZpcnN0X25vbl9kcm9wIH5kcm9wIHQgPSBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpXG5cbmxldCBsc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSAwIC0+IHRcbiAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG47O1xuXG4oKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG5sZXQgc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIGkgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChsZW5ndGggcykgfmY6KGZ1biBpIC0+IHMuW2ldKVxuXG5sZXQgZXhpc3RzID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA8IGxlbiAmJiAoZiBzLltpXSB8fCBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb3JfYWxsID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA9IGxlbiB8fCAoZiBzLltpXSAmJiBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBpIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0ID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdFxubGV0IG1heF9lbHQgdCA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHRcbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZmluZF9tYXBpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kX21hcGkgfml0ZXJpIHQgfmZcbmxldCBmaW5kaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZGkgfml0ZXJpIHQgfmZcbmxldCBjb3VudGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmNvdW50aSB+Zm9sZGkgdCB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5mb3JfYWxsaSB+aXRlcmkgdCB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmV4aXN0c2kgfml0ZXJpIHQgfmZcblxubGV0IG1lbSA9XG4gIGxldCByZWMgbG9vcCB0IGMgfnBvczppIH5sZW4gPVxuICAgIGkgPCBsZW4gJiYgKENoYXIuZXF1YWwgYyAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCBjIH5wb3M6KGkgKyAxKSB+bGVuKVxuICBpblxuICBmdW4gdCBjIC0+IGxvb3AgdCBjIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgaWYgQ2hhci5lcXVhbCB0YXJnZXQgcmVwbGFjZW1lbnRcbiAgdGhlbiBzXG4gIGVsc2UgaWYgbWVtIHMgdGFyZ2V0XG4gIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IGlmIENoYXIuZXF1YWwgYyB0YXJnZXQgdGhlbiByZXBsYWNlbWVudCBlbHNlIGMpXG4gIGVsc2Ugc1xuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgaXNfZW1wdHkgdGFyZ2V0XG4gIHRoZW4gc3RhZ2UgRm4uaWRcbiAgZWxzZSBpZiBpc19lbXB0eSByZXBsYWNlbWVudFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGkgcmVwbGFjZW1lbnQgaXMgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIEZuLmlkXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGlmIGV4aXN0cyBzIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICh1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpKVxuICAgICAgICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiB1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpXG4gICAgICAgIGVsc2UgcykpXG47O1xuXG4oKiBmYXN0IHZlcnNpb24sIGlmIHdlIGV2ZXIgbmVlZCBpdDpcbiAgIHtbXG4gICAgIGxldCBjb25jYXRfYXJyYXkgfnNlcCBhciA9XG4gICAgICAgbGV0IGFyX2xlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgICAgIGlmIGFyX2xlbiA9IDAgdGhlbiBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgbGV0IHNlcF9sZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICBsZXQgcmVzX2xlbl9yZWYgPSByZWYgKHNlcF9sZW4gKiAoYXJfbGVuIC0gMSkpIGluXG4gICAgICAgICBmb3IgaSA9IDAgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICByZXNfbGVuX3JlZiA6PSAhcmVzX2xlbl9yZWYgKyBsZW5ndGggYXIuKGkpXG4gICAgICAgICBkb25lO1xuICAgICAgICAgbGV0IHJlcyA9IGNyZWF0ZSAhcmVzX2xlbl9yZWYgaW5cbiAgICAgICAgIGxldCBzdHJfMCA9IGFyLigwKSBpblxuICAgICAgICAgbGV0IGxlbl8wID0gbGVuZ3RoIHN0cl8wIGluXG4gICAgICAgICBibGl0IH5zcmM6c3RyXzAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczowIH5sZW46bGVuXzA7XG4gICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBsZW5fMCBpblxuICAgICAgICAgZm9yIGkgPSAxIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzZXAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3Bvczpwb3MgfmxlbjpzZXBfbGVuO1xuICAgICAgICAgICBsZXQgbmV3X3BvcyA9IHBvcyArIHNlcF9sZW4gaW5cbiAgICAgICAgICAgbGV0IHN0cl9pID0gYXIuKGkpIGluXG4gICAgICAgICAgIGxldCBsZW5faSA9IGxlbmd0aCBzdHJfaSBpblxuICAgICAgICAgICBibGl0IH5zcmM6c3RyX2kgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczpuZXdfcG9zIH5sZW46bGVuX2k7XG4gICAgICAgICAgIHBvc19yZWYgOj0gbmV3X3BvcyArIGxlbl9pXG4gICAgICAgICBkb25lO1xuICAgICAgICAgcmVzXG4gICBdfSAqKVxuXG5sZXQgY29uY2F0X2FycmF5ID9zZXAgYXIgPSBjb25jYXQgP3NlcCAoQXJyYXkudG9fbGlzdCBhcilcbmxldCBjb25jYXRfbWFwID9zZXAgcyB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXAgKHRvX2FycmF5IHMpIH5mKVxuXG4oKiBbZmlsdGVyIHQgZl0gaXMgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0uXG5cbiAgIExldCBbbiA9IGxlbmd0aCB0XS5cblxuICAgMS4gRmluZCB0aGUgbG93ZXN0IFtpXSBzdWNoIHRoYXQgW25vdCAoZiB0LltpXSldLlxuXG4gICAyLiBJZiB0aGVyZSBpcyBubyBzdWNoIFtpXSwgdGhlbiByZXR1cm4gW3RdLlxuXG4gICAzLiBJZiB0aGVyZSBpcyBzdWNoIGFuIFtpXSwgYWxsb2NhdGUgYSBzdHJpbmcsIFtvdXRdLCB0byBob2xkIHRoZSByZXN1bHQuICBbb3V0XSBoYXNcbiAgIGxlbmd0aCBbbiAtIDFdLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwb3NzaWJsZSBvdXRwdXQgc2l6ZSBnaXZlbiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0XG4gICBvbmUgY2hhcmFjdGVyIG5vdCBzYXRpc2Z5aW5nIFtmXS5cblxuICAgNC4gQ29weSBjaGFyYWN0ZXJzIGF0IGluZGljZXMgMCAuLi4gW2kgLSAxXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNS4gV2FsayB0aHJvdWdoIGNoYXJhY3RlcnMgYXQgaW5kaWNlcyBbaSsxXSAuLi4gW24tMV0gb2YgW3RdLCBjb3B5aW5nIHRob3NlIHRoYXRcbiAgIHNhdGlzZnkgW2ZdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA2LiBJZiB3ZSBjb21wbGV0ZWx5IGZpbGxlZCBbb3V0XSwgdGhlbiByZXR1cm4gaXQuICBJZiBub3QsIHJldHVybiB0aGUgcHJlZml4IG9mIFtvdXRdXG4gICB0aGF0IHdlIGRpZCBmaWxsIGluLlxuXG4gICBUaGlzIGFsZ29yaXRobSBoYXMgdGhlIHByb3BlcnR5IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSBhIG5ldyBzdHJpbmcgaWYgdGhlcmUnc1xuICAgbm90aGluZyB0byBmaWx0ZXIsIHdoaWNoIGlzIGEgY29tbW9uIGNhc2UuICopXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiAhaSB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiAhaSBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gU29tZSAoZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3BfcHJlZml4X2lmX2V4aXN0cyBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfZXhuIHMgfnByZWZpeCA9XG4gIG1hdGNoIGNob3BfcHJlZml4IHMgfnByZWZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9wcmVmaXhfZXhuICVTICVTXCIgcyBwcmVmaXggKClcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gU29tZSAoZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3Bfc3VmZml4X2lmX2V4aXN0cyBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfZXhuIHMgfnN1ZmZpeCA9XG4gIG1hdGNoIGNob3Bfc3VmZml4IHMgfnN1ZmZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9zdWZmaXhfZXhuICVTICVTXCIgcyBzdWZmaXggKClcbjs7XG5cbm1vZHVsZSBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4ID0gc3RydWN0XG4gICgqIFdoZW4gdGFraW5nIGEgc3RyaW5nIHByZWZpeCBvciBzdWZmaXgsIHdlIGV4dHJhY3QgZnJvbSB0aGUgc2hvcnRlc3QgaW5wdXQgYXZhaWxhYmxlXG4gICAgIGluIGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJuIG9uZSBvZiBvdXIgaW5wdXRzIHdpdGhvdXQgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcuICopXG5cbiAgbGV0IHNob3J0ZXIgYSBiID0gaWYgbGVuZ3RoIGEgPD0gbGVuZ3RoIGIgdGhlbiBhIGVsc2UgYlxuXG4gIGxldCBzaG9ydGVzdCBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6Zmlyc3QgfmY6c2hvcnRlclxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyBmb3IgY29tbW9uIHByZWZpeC9zdWZmaXggYWJzdHJhY3Qgb3ZlciBbZ2V0X3Bvc10sIHdoaWNoIGlzXG4gICAgIGVpdGhlciBbcG9zX2Zyb21fbGVmdF0gb3IgW3Bvc19mcm9tX3JpZ2h0XS4gKilcblxuICBsZXQgcG9zX2Zyb21fbGVmdCAoXyA6IHQpIChpIDogaW50KSA9IGlcbiAgbGV0IHBvc19mcm9tX3JpZ2h0IHQgaSA9IGxlbmd0aCB0IC0gaSAtIDFcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXIgPVxuICAgIGlmIGxlbl9zb19mYXIgPj0gbWF4X2xlblxuICAgIHRoZW4gbWF4X2xlblxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbFxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBhIChnZXRfcG9zIGEgbGVuX3NvX2ZhcikpXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGIgKGdldF9wb3MgYiBsZW5fc29fZmFyKSlcbiAgICB0aGVuIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6KGxlbl9zb19mYXIgKyAxKVxuICAgIGVsc2UgbGVuX3NvX2ZhclxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyA9XG4gICAgbGV0IG1heF9sZW4gPSBtaW4gKGxlbmd0aCBhKSAobGVuZ3RoIGIpIGluXG4gICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCBsaXN0IH5nZXRfcG9zIH5tYXhfbGVuID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IG1heF9sZW5cbiAgICB8IHNlY29uZCA6OiByZXN0IC0+XG4gICAgICBsZXQgbWF4X2xlbiA9XG4gICAgICAgICgqIFdlIGNhbGwgW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW4gW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhdIHNvXG4gICAgICAgICAgIHRoYXQgW21heF9sZW5dIGxpbWl0cyBvdXIgdHJhdmVyc2FsIG9mIFtmaXJzdF0gYW5kIFtzZWNvbmRdLiAqKVxuICAgICAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgZmlyc3Qgc2Vjb25kIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgICAgIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBzZWNvbmQgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3BvcyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiAwXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBQcmVjb21wdXRpbmcgW21heF9sZW5dIGJhc2VkIG9uIFtzaG9ydGVzdCBsaXN0XSBzYXZlcyB1cyB3b3JrIGluIGxvbmdlciBzdHJpbmdzLFxuICAgICAgICAgYXQgdGhlIGNvc3Qgb2YgYW4gZXh0cmEgcGFzcyBvdmVyIHRoZSBzcGluZSBvZiBbbGlzdF0uXG5cbiAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UncmUgbG9va2luZyBmb3IgdGhlIGxvbmdlc3QgcHJlZml4IG9mIHRoZSBzdHJpbmdzOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgbGV0IGxvbmdfYSA9IExpc3QuaW5pdCAxMDAwIH5mOihGbi5jb25zdCAnYScpXG4gICAgICAgICAgICBbIGxvbmdfYTsgbG9uZ19hOyAnYWEnIF1cbiAgICAgICAgIHZ9XG5cbiAgICAgICAgIHRoZSBhcHByb2FjaCBiZWxvdyB3aWxsIGp1c3QgY2hlY2sgdGhlIGZpcnN0IHR3byBjaGFyYWN0ZXJzIG9mIGFsbCB0aGUgc3RyaW5ncy5cbiAgICAgICopXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCAoc2hvcnRlc3QgbGlzdCkgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgdGhhdCBwcm9kdWNlIGEgc3RyaW5nIGFic3RyYWN0IG92ZXIgW3Rha2VdLCB3aGljaCBpcyBlaXRoZXJcbiAgICAgW3ByZWZpeF0gb3IgW3N1ZmZpeF0uICopXG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMiBhIGIgfmdldF9wb3MgfnRha2UgPVxuICAgIGxldCBsZW4gPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyBpblxuICAgICgqIFVzZSB0aGUgc2hvcnRlciBvZiB0aGUgdHdvIHN0cmluZ3MsIHNvIHRoYXQgaWYgdGhlIHNob3J0ZXIgb25lIGlzIHRoZSBzaGFyZWRcbiAgICAgICBwcmVmaXgsIFt0YWtlXSB3b24ndCBhbGxvY2F0ZSBhbm90aGVyIHN0cmluZy4gKilcbiAgICB0YWtlIChzaG9ydGVyIGEgYikgbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljIGxpc3QgfmdldF9wb3MgfnRha2UgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogQXMgd2l0aCBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSwgd2UgYmFzZSBbbWF4X2xlbl0gb24gW3Nob3J0ZXN0IGxpc3RdLiBXZSBhbHNvXG4gICAgICAgICB1c2UgdGhpcyByZXN1bHQgZm9yIFt0YWtlXSwgYmVsb3csIHRvIHBvdGVudGlhbGx5IGF2b2lkIGFsbG9jYXRpbmcgYSBzdHJpbmcuICopXG4gICAgICBsZXQgcyA9IHNob3J0ZXN0IGxpc3QgaW5cbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIHMgaW5cbiAgICAgIGlmIG1heF9sZW4gPSAwXG4gICAgICB0aGVuIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAoKiBXZSBjYWxsIGRpcmVjdGx5IGludG8gW2NvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhblxuICAgICAgICAgICAgIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdIHRvIGF2b2lkIHJlY29tcHV0aW5nIFtzaG9ydGVzdCBsaXN0XS4gKilcbiAgICAgICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gICAgICAgIGluXG4gICAgICAgIHRha2UgcyBsZW4pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4XG5cbiAgbGV0IGNvbW1vbl9wcmVmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuZW5kXG5cbigqIFRoZXJlIHVzZWQgdG8gYmUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gdGhhdCB3YXMgZmFzdGVyIGZvciB2ZXJ5IHNob3J0IHN0cmluZ3NcbiAgIChwZWFraW5nIGF0IDQwJSBmYXN0ZXIgZm9yIDQtNiBjaGFyIGxvbmcgc3RyaW5ncykuXG4gICBUaGlzIG5ldyBmdW5jdGlvbiBpcyBhcm91bmQgMjAlIGZhc3RlciB0aGFuIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24sIGJ1dCBzbG93ZXJcbiAgIHRoYW4gdGhlIHByZXZpb3VzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgdGhlIG5ldyBPQ2FtbCBmdW5jdGlvbiBpcyB3ZWxsXG4gICBiZWhhdmVkLCBhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBsZXNzIGxpa2VseSB0byBkaXZlcmdlIGZyb20gdGhlIGRlZmF1bHQgT0NhbWxcbiAgIGltcGxlbWVudGF0aW9uIGRvZXMsIHdoaWNoIGlzIGEgZGVzaXJhYmxlIHByb3BlcnR5LiAoVGhlIG9ubHkgd2F5IHRvIGF2b2lkIHRoZVxuICAgZGl2ZXJnZW5jZSBpcyB0byBleHBvc2UgdGhlIG1hY3JvIHJlZGVmaW5lZCBpbiBoYXNoX3N0dWJzLmMgaW4gdGhlIGhhc2guaCBoZWFkZXIgb2ZcbiAgIHRoZSBPQ2FtbCBjb21waWxlci4pICopXG5tb2R1bGUgSGFzaCA9IHN0cnVjdFxuICBleHRlcm5hbCBoYXNoIDogc3RyaW5nIC0+IGludCA9IFwiQmFzZV9oYXNoX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5lbmRcblxuKCogW2luY2x1ZGUgSGFzaF0gdG8gbWFrZSB0aGUgW2V4dGVybmFsXSB2ZXJzaW9uIG92ZXJyaWRlIHRoZSBbaGFzaF0gZnJvbVxuICAgW0hhc2hhYmxlLk1ha2VfYmluYWJsZV0sIHNvIHRoYXQgd2UgZ2V0IGEgbGl0dGxlIGJpdCBvZiBhIHNwZWVkdXAgYnkgZXhwb3NpbmcgaXQgYXNcbiAgIGV4dGVybmFsIGluIHRoZSBtbGkuICopXG5sZXQgXyA9IGhhc2hcblxuaW5jbHVkZSBIYXNoXG5cbigqIGZvciBpbnRlcmFjdGl2ZSB0b3AtbGV2ZWxzIC0tIG1vZHVsZXMgZGVyaXZpbmcgZnJvbSBTdHJpbmcgc2hvdWxkIGhhdmUgU3RyaW5nJ3MgcHJldHR5XG4gICBwcmludGVyLiAqKVxubGV0IHBwIHBwZiBzdHJpbmcgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbm1vZHVsZSBFc2NhcGluZyA9IHN0cnVjdFxuICAoKiBJZiB0aGlzIGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0byB1cGRhdGUgW2VzY2FwZV0sIHdoaWNoIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgdGhlXG4gICAgIGludmFyaWFudHMgY2hlY2tlZCBoZXJlLiAgKilcbiAgbGV0IGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgZnVuYyA9XG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgaWYgTGlzdC5Bc3NvYy5tZW0gZXNjYXBld29ydGh5X21hcCB+ZXF1YWw6Q2hhci5lcXVhbCBlc2NhcGVfY2hhclxuICAgICAgdGhlbiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICBlbHNlIChlc2NhcGVfY2hhciwgZXNjYXBlX2NoYXIpIDo6IGVzY2FwZXdvcnRoeV9tYXBcbiAgICBpblxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgKC0xKSBpblxuICAgIGxldCB2YWxzID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2IGZhbHNlIGluXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gT2sgYXJyXG4gICAgICB8IChjX2Zyb20sIGNfdG8pIDo6IGwgLT5cbiAgICAgICAgbGV0IGssIHYgPVxuICAgICAgICAgIG1hdGNoIGZ1bmMgd2l0aFxuICAgICAgICAgIHwgYEVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX2Zyb20sIGNfdG9cbiAgICAgICAgICB8IGBVbmVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX3RvLCBjX2Zyb21cbiAgICAgICAgaW5cbiAgICAgICAgaWYgYXJyLihrKSA8PiAtMSB8fCB2YWxzLihDaGFyLnRvX2ludCB2KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgICAgXCJlc2NhcGV3b3J0aHlfbWFwIG5vdCBvbmUtdG8tb25lXCJcbiAgICAgICAgICAgICAgIFsgXCJjX2Zyb21cIiwgc2V4cF9vZl9jaGFyIGNfZnJvbVxuICAgICAgICAgICAgICAgOyBcImNfdG9cIiwgc2V4cF9vZl9jaGFyIGNfdG9cbiAgICAgICAgICAgICAgIDsgKCBcImVzY2FwZXdvcnRoeV9tYXBcIlxuICAgICAgICAgICAgICAgICAsIHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2ZfY2hhciBzZXhwX29mX2NoYXIpIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYXJyLihrKSA8LSBDaGFyLnRvX2ludCB2O1xuICAgICAgICAgIHZhbHMuKENoYXIudG9faW50IHYpIDwtIHRydWU7XG4gICAgICAgICAgbG9vcCBsKVxuICAgIGluXG4gICAgbG9vcCBlc2NhcGV3b3J0aHlfbWFwXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBFc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogY2FsY3VsYXRlIGEgbGlzdCBvZiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpIGZpcnN0LCB0aGUgb3JkZXJcbiAgICAgICAgICAgICAgaXMgZnJvbSB0YWlsIHRvIGhlYWQgKilcbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZV9sZW4gPSByZWYgMCBpblxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlID1cbiAgICAgICAgICAgICBmb2xkaSBzcmMgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBjIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IGMpIHdpdGhcbiAgICAgICAgICAgICAgIHwgLTEgLT4gYWNjXG4gICAgICAgICAgICAgICB8IG4gLT5cbiAgICAgICAgICAgICAgICAgKCogKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSAqKVxuICAgICAgICAgICAgICAgICBpbmNyIHRvX2VzY2FwZV9sZW47XG4gICAgICAgICAgICAgICAgIChpLCBDaGFyLnVuc2FmZV9vZl9pbnQgbikgOjogYWNjKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b19lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAoKiBbdG9fZXNjYXBlXSBkaXZpZGUgW3NyY10gdG8gW0xpc3QubGVuZ3RoIHRvX2VzY2FwZSArIDFdIHBpZWNlcyBzZXBhcmF0ZWQgYnlcbiAgICAgICAgICAgICAgICB0aGUgY2hhcnMgdG8gZXNjYXBlLlxuXG4gICAgICAgICAgICAgICAgTGV0cyB0YWtlXG4gICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgIGVzY2FwZV9nZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGV3b3J0aHlfbWFwOlsoJ2EnLCAnQScpOyAoJ2InLCAnQicpOyAoJ2MnLCAnQycpXVxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBlX2NoYXI6J18nXG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgYW5kIGFzc3VtZSB0aGUgc3RyaW5nIHRvIGVzY2FwZSBpc1xuXG4gICAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgICAgdGhlbiBbdG9fZXNjYXBlXSBpcyBbKDExLCAnQycpOyAoNywgJ0InKTsgKDMsICdBJyldLlxuXG4gICAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBbZHN0XSBvZiBsZW5ndGggW2xlbmd0aCBzcmMgKyAzXSB0byBzdG9yZSB0aGVcbiAgICAgICAgICAgICAgICByZXN1bHQsIGNvcHkgcGllY2UgXCIzMzNcIiB0byBbZHN0XSBkaXJlY3RseSwgdGhlbiBjb3B5ICdfJyBhbmQgJ0MnIHRvIFtkc3RdO1xuICAgICAgICAgICAgICAgIHRoZW4gbW92ZSBvbiB0byBuZXh0OyBhZnRlciAzIGl0ZXJhdGlvbnMsIGNvcHkgcGllY2UgXCIwMDBcIiBhbmQgd2UgYXJlIGRvbmUuXG5cbiAgICAgICAgICAgICAgICBGaW5hbGx5IHRoZSByZXN1bHQgd2lsbCBiZVxuXG4gICAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIiAqKVxuICAgICAgICAgICAgIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgICAgICAgICAgIGxldCBkc3RfbGVuID0gc3JjX2xlbiArICF0b19lc2NhcGVfbGVuIGluXG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBkc3RfbGVuIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCAoaWR4LCBlc2NhcGVkX2NoYXIpIDo6IHRvX2VzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKltpZHhdID0gdGhlIGNoYXIgdG8gZXNjYXBlKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSBmaXJzdCBpdGVyYXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICAgICAgICAgICAgICAgKCogY2FsY3VsYXRlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAxIGJlY2F1c2Ugd2UgZG9uJ3QgY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMSBpblxuICAgICAgICAgICAgICAgICAoKiBzZXQgdGhlIGRzdF9wb3MgdG8gY29weSB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIsIHNldCBbc3JjX3Bvc10gdG8gW2lkeCArIDFdIHRvIHNraXAgJ2MnICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDEpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMiB0byBjb3B5ICdfJyBhbmQgJ0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDIgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCBkc3RfcG9zIGVzY2FwZV9jaGFyO1xuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IChkc3RfcG9zICsgMSkgZXNjYXBlZF9jaGFyO1xuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX2VzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gZmlyc3QgKilcbiAgICAgICAgICAgICBsb29wIHNyY19sZW4gZHN0X2xlbiB0b19lc2NhcGU7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgZXNjYXBlIH5lc2NhcGV3b3J0aHkgfmVzY2FwZV9jaGFyID1cbiAgICAoKiBGb3IgW2VzY2FwZV9nZW5fZXhuXSwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZml4IGludmFsaWQgZXNjYXBld29ydGh5X21hcCBzbyB3ZSBoYXZlXG4gICAgICAgdG8gcmFpc2UgZXhjZXB0aW9uOyBidXQgaW4gdGhpcyBjYXNlLCB3ZSBrbm93IGhvdyB0byBmaXggZHVwbGljYXRlZCBlbGVtZW50cyBpblxuICAgICAgIGVzY2FwZXdvcnRoeSBsaXN0LCBzbyB3ZSBqdXN0IGZpeCBpdCBpbnN0ZWFkIG9mIHJhaXNpbmcgZXhjZXB0aW9uIHRvIG1ha2UgdGhpc1xuICAgICAgIGZ1bmN0aW9uIGVhc2llciB0byB1c2UuICAqKVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGVzY2FwZXdvcnRoeVxuICAgICAgfD4gTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpDaGFyLmNvbXBhcmVcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gYyAtPiBjLCBjKVxuICAgIGluXG4gICAgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBVbmVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBDb250aW51ZSB0aGUgZXhhbXBsZSBpbiBbZXNjYXBlX2dlbl9leG5dLCBub3cgd2UgdW5lc2NhcGVcblxuICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiXG5cbiAgICAgICAgICAgICAgYmFjayB0b1xuXG4gICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICBUaGVuIFt0b191bmVzY2FwZV0gaXMgWzE0OyA5OyA0XSwgd2hpY2ggaXMgaW5kZXhlcyBvZiAnXydzLlxuXG4gICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgc3RyaW5nIFtkc3RdIHRvIHN0b3JlIHRoZSByZXN1bHQsIGNvcHkgXCIzMzNcIiB0byBpdCwgdGhlbiBjb3B5XG4gICAgICAgICAgICAgICdjJywgdGhlbiBtb3ZlIG9uIHRvIG5leHQgaXRlcmF0aW9uLiBBZnRlciAzIGl0ZXJhdGlvbnMgY29weSBcIjAwMFwiIGFuZCB3ZSBhcmVcbiAgICAgICAgICAgICAgZG9uZS4gICopXG4gICAgICAgICAgICgqIGluZGV4ZXMgb2YgZXNjYXBlIGNoYXJzICopXG4gICAgICAgICAgIGxldCB0b191bmVzY2FwZSA9XG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzIGFjYyA9XG4gICAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCBzcmNcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHNyYyB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMgaW5cbiAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBpbmcgLT4gaSA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGFjYykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsb29wIDAgYExpdGVyYWwgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fdW5lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZScgLT5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5ndGggc3JjIC0gTGlzdC5sZW5ndGggdG9fdW5lc2NhcGUpIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCogW2lkeF0gPSBpbmRleCBvZiBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgMXN0IGl0ZXJhdGlvbiBhcyBleGFtcGxlLCBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAyIHRvXG4gICAgICAgICAgICAgICAgICAgIHNraXAgJ19DJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAyIGluXG4gICAgICAgICAgICAgICAgICgqIHBvaW50IFtkc3RfcG9zXSB0byB0aGUgcG9zaXRpb24gdG8gY29weSBcIjMzM1wiIHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAyKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDEgdG8gY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMSBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXRcbiAgICAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgICAgICAgICBkc3RfcG9zXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgc3JjLltpZHggKyAxXSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IC0xIC0+IHNyYy5baWR4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IENoYXIudW5zYWZlX29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICAgKCogdXBkYXRlIFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdICopXG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIGlkeCA8IGxlbmd0aCBzcmMgLSAxXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICgqIGZvciBlc2NhcGVkIHN0cmluZyBlbmRpbmcgd2l0aCBhbiBlc2NhcGluZyBjaGFyIGxpa2UgXCIwMDBfXCIsIGp1c3QgaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGUgbGFzdCBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjIC0gMSkgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlJztcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAodW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgdW5lc2NhcGUgfmVzY2FwZV9jaGFyID0gdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcDpbXSB+ZXNjYXBlX2NoYXJcblxuICBsZXQgcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IHJlYyBsb29wIHAgY250ID1cbiAgICAgIGlmIHAgPCAwIHx8IENoYXIuKCA8PiApIHN0ci5bcF0gZXNjYXBlX2NoYXIgdGhlbiBjbnQgZWxzZSBsb29wIChwIC0gMSkgKGNudCArIDEpXG4gICAgaW5cbiAgICBsb29wIChwb3MgLSAxKSAwXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgb2RkID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBtb2QgMiA9IDEgaW5cbiAgICBtYXRjaCBvZGQsIENoYXIuZXF1YWwgc3RyLltwb3NdIGVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IHRydWUsICh0cnVlIHwgZmFsc2UpIC0+IGBFc2NhcGVkXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBgRXNjYXBpbmdcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBjaGVja19ib3VuZCBzdHIgcG9zIGZ1bmN0aW9uX25hbWUgPVxuICAgIGlmIHBvcyA+PSBsZW5ndGggc3RyIHx8IHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCIlczogb3V0IG9mIGJvdW5kc1wiIGZ1bmN0aW9uX25hbWUgKClcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGluZyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBpbmdcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGluZyAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBlZCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBlZFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwZWQgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwaW5nIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9saXRlcmFsIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9saXRlcmFsXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpbmRleF9mcm9tXCI7XG4gICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzID1cbiAgICAgIGlmIGkgPj0gcG9zXG4gICAgICAmJiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgJiYgQ2hhci5lcXVhbCBzdHIuW2ldIGNoYXJcbiAgICAgIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGkgPSBpICsgMSBpblxuICAgICAgICBpZiBpID49IGxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgbG9vcCBpICh1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgc3RhdHVzKSlcbiAgICBpblxuICAgIGxvb3AgcG9zIChlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zKVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuICBsZXQgaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG5cbiAgbGV0IHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJyaW5kZXhfZnJvbVwiO1xuICAgICgqIGlmIHRoZSB0YXJnZXQgY2hhciBpcyB0aGUgc2FtZSBhcyBbZXNjYXBlX2NoYXJdLCB3ZSBoYXZlIG5vIHdheSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICBlc2NhcGVfY2hhciBpcyBsaXRlcmFsLCBzbyBqdXN0IHJldHVybiBOb25lICopXG4gICAgaWYgQ2hhci5lcXVhbCBjaGFyIGVzY2FwZV9jaGFyXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMFxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVzY2FwZV9jaGFycyA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgaW5cbiAgICAgICAgICBpZiBlc2NhcGVfY2hhcnMgbW9kIDIgPSAwICYmIENoYXIuZXF1YWwgc3RyLltwb3NdIGNoYXJcbiAgICAgICAgICB0aGVuIFNvbWUgcG9zXG4gICAgICAgICAgZWxzZSBsb29wIChwb3MgLSBlc2NhcGVfY2hhcnMgLSAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIHBvcylcbiAgOztcblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwicmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIGlmIGlzX2VtcHR5IHN0ciB0aGVuIE5vbmUgZWxzZSByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gIGxldCByaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgKCogW3NwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbl0gd29ya3Mgc2ltaWxhcmx5IHRvIFtTdHJpbmcuc3BsaXRfZ2VuXSwgd2l0aCBhblxuICAgICBhZGRpdGlvbmFsIHJlcXVpcmVtZW50OiBvbmx5IHNwbGl0IG9uIGxpdGVyYWwgY2hhcnMsIG5vdCBlc2NhcGluZyBvciBlc2NhcGVkICopXG4gIGxldCBzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b24gPVxuICAgIGxldCBpc19kZWxpbSA9XG4gICAgICBtYXRjaCBvbiB3aXRoXG4gICAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgICBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgcG9zID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBMaXN0LnJldiAoc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KGxlbiAtIGxhc3RfcG9zKSA6OiBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHN0YXR1cyBpblxuICAgICAgICBpZiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgICAmJiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoocG9zIC0gbGFzdF9wb3MpIGluXG4gICAgICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHN0YXR1cyAocG9zICsgMSkgKHBvcyArIDEpKVxuICAgICAgICBlbHNlIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyAocG9zICsgMSkpXG4gICAgaW5cbiAgICBsb29wIFtdIGBMaXRlcmFsIDAgMFxuICA7O1xuXG4gIGxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxuICBsZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG4gIGxldCBzcGxpdF9hdCBzdHIgcG9zID1cbiAgICBzdWIgc3RyIH5wb3M6MCB+bGVuOnBvcywgc3ViIHN0ciB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggc3RyIC0gcG9zIC0gMSlcbiAgOztcblxuICBsZXQgbHNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAoaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCByc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChyaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCBsc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAoaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG4gIGxldCByc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAocmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuXG4gICgqIFtsYXN0X25vbl9kcm9wX2xpdGVyYWxdIGFuZCBbZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYXJlIGVpdGhlciBib3RoIFtOb25lXSBvciBib3RoXG4gICAgIFtTb21lXS4gSWYgW1NvbWVdLCB0aGVuIHRoZSBmb3JtZXIgaXMgPj0gdGhlIGxhdHRlci4gKilcbiAgbGV0IGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgcmZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKVxuICA7O1xuXG4gIGxldCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICBsZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChieXRlc19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ieXRlcyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBieXRlc19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQnl0ZXMwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJ5dGVzXCJcbiAgbGV0IHBwIGZtdCB0ID0gQ2FtbC5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gQ2FtbC5JbnQzMi5taW5faW50XG5sZXQgbWF4X2ludDMyID0gQ2FtbC5JbnQzMi5tYXhfaW50XG5sZXQgbWluX2ludDY0ID0gQ2FtbC5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gQ2FtbC5JbnQ2NC5tYXhfaW50XG5sZXQgbWluX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm1pbl9pbnRcbmxldCBtYXhfbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBDYW1sLnN0cmluZ19vZl9pbnRcbmxldCBpbnQzMl90b19zdHJpbmcgPSBDYW1sLkludDMyLnRvX3N0cmluZ1xubGV0IGludDY0X3RvX3N0cmluZyA9IENhbWwuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IENhbWwuTmF0aXZlaW50LnRvX3N0cmluZ1xuXG4oKiBpbnQgPC0+IGludDMyICopXG5cbmxldCBpbnRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnRcIiBcImludDMyXCIgaW50X3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDMyXCIgXCJpbnRcIiBpbnQzMl90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfdHJ1bmMgPSBDYW1sLkludDMyLnRvX2ludFxubGV0IGludF90b19pbnQzMl90cnVuYyA9IENhbWwuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfaW50XG5sZXQgaW50NjRfdG9faW50X3RydW5jID0gQ2FtbC5JbnQ2NC50b19pbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgbGV0IG1pbiA9IGludF90b19pbnQ2NCBJbnQubWluX3ZhbHVlIGluXG4gIGxldCBtYXggPSBpbnRfdG9faW50NjQgSW50Lm1heF92YWx1ZSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQ2NF90b19pbnRfdHJ1bmMgeCBlbHNlIGludDY0X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnRcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50X3RvX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBDYW1sLk5hdGl2ZWludC50b19pbnRcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9fbmF0aXZlaW50IEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX25hdGl2ZWludCBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50X3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQzMlwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludDMyX3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9pbnQzMlxubGV0IGludDY0X3RvX2ludDMyX3RydW5jID0gQ2FtbC5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IENhbWwuTmF0aXZlaW50Lm9mX2ludDMyXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX3RydW5jID0gQ2FtbC5OYXRpdmVpbnQudG9faW50MzJcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9fbmF0aXZlaW50IG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19uYXRpdmVpbnQgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMiB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwibmF0aXZlaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDY0ID49IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgPSBDYW1sLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfbmF0aXZlaW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCA9XG4gIGlmIG51bV9iaXRzX2ludDY0IDw9IG51bV9iaXRzX25hdGl2ZWludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IG5hdGl2ZWludF90b19pbnQ2NCBtaW5fbmF0aXZlaW50IGluXG4gICAgbGV0IG1heCA9IG5hdGl2ZWludF90b19pbnQ2NCBtYXhfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBTb21lIChpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IGludDYzICopXG5cbmxldCBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQ2M1wiIGludDY0X3RvX3N0cmluZ1xuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyA9XG4gIGxldCBtaW4gPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IG1pbl9pbnQ2NCAxIGluXG4gIGxldCBtYXggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gQ2FtbC5MZXhpbmcuZnJvbV9zdHJpbmcgc3RyIGluXG4gICAgICBsZXQgcmVzdWx0ID0gT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTC5wYXJzZV9oZXggbGV4KSBpblxuICAgICAgaWYgbGV4LmxleF9jdXJyX3BvcyA9IGxleC5sZXhfYnVmZmVyX2xlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkIHN0clxuICAgICAgICB8IFNvbWUgKE5lZyBib2R5KSAtPiBJLm5lZyAob2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICAgIHwgU29tZSAoUG9zIGJvZHkpIC0+IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgZWxzZSBpbnZhbGlkIHN0clxuICAgIDs7XG5cbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGV4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBUX2hleFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVF9oZXgpXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgd2FzIGF1dG9nZW5lcmF0ZWQgYnkgLi4vZ2VuZXJhdGUvZ2VuZXJhdGVfcG93X292ZXJmbG93X2JvdW5kcy5leGUgKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBoYXZlIHRvIHVzZSBJbnQ2NC50b19pbnRfZXhuIGluc3RlYWQgb2YgaW50IGNvbnN0YW50cyB0byBtYWtlXG4gICBzdXJlIHRoYXQgZmlsZSBjYW4gYmUgcHJlcHJvY2Vzc2VkIG9uIDMyLWJpdCBtYWNoaW5lcy4gKilcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQzMl92YWx1ZSA6IGludDMyID1cbiAgMjE0NzQ4MzY0N2xcblxubGV0IGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDMyIGFycmF5ID1cbiAgW3wgMjE0NzQ4MzY0N2xcbiAgOyAgMjE0NzQ4MzY0N2xcbiAgOyAgNDYzNDBsXG4gIDsgIDEyOTBsXG4gIDsgIDIxNWxcbiAgOyAgNzNsXG4gIDsgIDM1bFxuICA7ICAyMWxcbiAgOyAgMTRsXG4gIDsgIDEwbFxuICA7ICA4bFxuICA7ICA3bFxuICA7ICA1bFxuICA7ICA1bFxuICA7ICA0bFxuICA7ICA0bFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludF92YWx1ZSA6IGludCA9XG4gICgtMSkgbHNyIDFcblxubGV0IGludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQgYXJyYXkgPVxuICBtYXRjaCBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50IHdpdGhcbiAgfCAzMiAtPiBBcnJheS5tYXAgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIH5mOkNhbWwuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBDYW1sLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIENhbWwuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgQ2FtbC5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW1sLkludDY0XG5cbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZW5kXG5cbigqIHdlIGRvbid0IGRvIFthYnNdIGluIGludDY0IGNhc2UgdG8gYXZvaWQgYWxsb2NhdGlvbiAqKVxubGV0IGludDY0X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIChiYXNlID4gMUwgfHwgYmFzZSA8IC0xTClcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCAoYmFzZSA+PSAwTFxuICAgICAgICAgICYmIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICAgICAgKVxuICAgICAgfHwgKGJhc2UgPCAwTFxuICAgICAgICAgICYmIGJhc2UgPCBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICAgICAgKSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbmxldCBpbnQ2M19wb3dfb25faW50NjQgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFMXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgYWJzIGJhc2VcbiAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBGbG9hdGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCB+LSApIDogdCAtPiB0XG5cbiAgaW5jbHVkZSBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChYIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG9wZW4gWFxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IFgucmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0IG9uZSA9IG9mX2ludF9leG4gMVxuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICAoKiogZmxvYXQgZGl2aXNpb24gb2YgaW50ZWdlcnMgKilcbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBsZXQgcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID0gaSAtIChpICUgbW9kdWx1cylcblxuICBsZXQgcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgaWYgcmVtYWluZGVyID0gemVybyB0aGVuIGkgZWxzZSBpICsgbW9kdWx1cyAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIGlmIGkgPSB6ZXJvXG4gICAgdGhlbiB6ZXJvXG4gICAgZWxzZSBpZiBpID4gemVyb1xuICAgIHRoZW4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIGVsc2Ugcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcblxuICBsZXQgcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBsZXQgbW9kdWx1c19taW51c19yZW1haW5kZXIgPSBtb2R1bHVzIC0gcmVtYWluZGVyIGluXG4gICAgaWYgbW9kdWx1c19taW51c19yZW1haW5kZXIgPD0gcmVtYWluZGVyXG4gICAgdGhlbiBpICsgbW9kdWx1c19taW51c19yZW1haW5kZXJcbiAgICBlbHNlIGkgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgbGV0ICggKyApID0gYWRkIGluXG4gIGxldCAoIC0gKSA9IHN1YiBpblxuICBsZXQgKCAqICkgPSBtdWwgaW5cbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsIGluXG4gIGxldCAoIGxhbmQgKSA9IGxvZ2FuZCBpblxuICBsZXQgbTEgPSAweDU1NTU1NTU1NTU1NTU1NTVMIGluXG4gICgqIDBiMDEwMTAxMDEuLi4gKilcbiAgbGV0IG0yID0gMHgzMzMzMzMzMzMzMzMzMzMzTCBpblxuICAoKiAwYjAwMTEwMDExLi4uICopXG4gIGxldCBtNCA9IDB4MGYwZjBmMGYwZjBmMGYwZkwgaW5cbiAgKCogMGIwMDAwMTExMS4uLiAqKVxuICBsZXQgaDAxID0gMHgwMTAxMDEwMTAxMDEwMTAxTCBpblxuICAoKiAxIGJpdCBzZXQgcGVyIGJ5dGUgKilcbiAgZnVuIFtAaW5saW5lXSB4IC0+XG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IHBhaXIgb2YgYml0cyAqKVxuICAgIGxldCB4ID0geCAtICgoeCBsc3IgMSkgbGFuZCBtMSkgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgNCBiaXRzICopXG4gICAgbGV0IHggPSAoeCBsYW5kIG0yKSArICgoeCBsc3IgMikgbGFuZCBtMikgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgYnl0ZSAqKVxuICAgIGxldCB4ID0gKHggKyAoeCBsc3IgNCkpIGxhbmQgbTQgaW5cbiAgICAoKiBzdW0gdGhlIGJpdCBjb3VudHMgaW4gdGhlIHRvcCBieXRlIGFuZCBzaGlmdCBpdCBkb3duICopXG4gICAgdG9faW50ICgoeCAqIGgwMSkgbHNyIDU2KVxuOztcblxubGV0IGludDMyX3BvcGNvdW50ID1cbiAgKCogT24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXMgZmFzdGVyIHRoYW4gaW1wbGVtZW50aW5nIHVzaW5nIFtpbnQzMl0gYXJpdGhtZXRpYy4gKilcbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZkwgaW5cbiAgZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChDYW1sLkludDY0LmxvZ2FuZCAoQ2FtbC5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIENhbWwuTmF0aXZlaW50LnNpemUgd2l0aFxuICB8IDMyIC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQzMl9wb3Bjb3VudCAoQ2FtbC5OYXRpdmVpbnQudG9faW50MzIgeClcbiAgfCA2NCAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKENhbWwuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSB4IHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgeCB5XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgIHwgXyAtPiBQcmludGYuZmFpbHdpdGhmIFwiSW50Lm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuZW5kXG5cbmxldCBudW1fYml0cyA9IEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHRvX2Zsb2F0ID0gQ2FtbC5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBDYW1sLmludF9vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBDYW1sLmludF9vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiV4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyX3RydW5jIDogaW50MzIgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcblxubGV0IHByZWQgaSA9IGkgLSAxXG5sZXQgc3VjYyBpID0gaSArIDFcbmxldCB0b19pbnQgaSA9IGlcbmxldCB0b19pbnRfZXhuID0gdG9faW50XG5sZXQgb2ZfaW50IGkgPSBpXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IG1heF92YWx1ZSA9IENhbWwubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IENhbWwubWluX2ludFxubGV0IG1heF92YWx1ZV8zMF9iaXRzID0gMHgzRkZGX0ZGRkZcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgb2ZfaW50MzJfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50MzIgPSBDb252LmludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCB0b19pbnQ2NCA9IENvbnYuaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgYWJzIHggPSBhYnMgeFxuXG4oKiBub3RlIHRoYXQgcmVtIGlzIG5vdCBzYW1lIGFzICUgKilcbmxldCByZW0gYSBiID0gYSBtb2QgYlxubGV0IGluY3IgPSBDYW1sLmluY3JcbmxldCBkZWNyID0gQ2FtbC5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG4gIGV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuICBleHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG4gIGV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogdCAtPiB0ID0gXCIlbmVnaW50XCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIG1vZHVsZSBGID0gSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBGXG5cbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuICBleHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG4gIGV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG4gIGV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG4gIGV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IENhbWwuU2NhbmYuc3NjYW5mIHMgXCJVKyVYXCIgKGZ1biBpIC0+IFVjaGFyMC5vZl9pbnQgaSkgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG9mIHRoZSBmb3JtIFUrWFhYWCBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGludF9pc19zY2FsYXIgPSBpc192YWxpZFxuXG5sZXQgc3VjY19leG4gYyA9XG4gIHRyeSBVY2hhcjAuc3VjYyBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5zdWNjX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBzdWNjIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnN1Y2MgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgcHJlZF9leG4gYyA9XG4gIHRyeSBVY2hhcjAucHJlZCBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5wcmVkX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBwcmVkIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnByZWQgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgb2Zfc2NhbGFyIGkgPSBpZiBpbnRfaXNfc2NhbGFyIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2Zfc2NhbGFyX2V4biBpID1cbiAgaWYgaW50X2lzX3NjYWxhciBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIub2ZfaW50X2V4biBnb3QgYSBpbnZhbGlkIFVuaWNvZGUgc2NhbGFyIHZhbHVlOiAlMDRYXCIgaSAoKVxuOztcblxubGV0IHRvX3NjYWxhciB0ID0gVWNoYXIwLnRvX2ludCB0XG5sZXQgdG9fY2hhciBjID0gaWYgaXNfY2hhciBjIHRoZW4gU29tZSAodW5zYWZlX3RvX2NoYXIgYykgZWxzZSBOb25lXG5cbmxldCB0b19jaGFyX2V4biBjID1cbiAgaWYgaXNfY2hhciBjXG4gIHRoZW4gdW5zYWZlX3RvX2NoYXIgY1xuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLnRvX2NoYXJfZXhuIGdvdCBhIG5vbiBsYXRpbi0xIGNoYXJhY3RlcjogVSslMDRYXCIgKHRvX2ludCBjKSAoKVxuOztcblxubGV0IHV0ZjhfYnl0ZV9sZW5ndGggdWNoYXIgPVxuICBsZXQgY29kZXBvaW50ID0gdG9fc2NhbGFyIHVjaGFyIGluXG4gIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODAwXG4gIHRoZW4gMlxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHgxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSA0XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2EpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDAzXyBiX18wMDRfKVxuICAgICAgOiAgKChhX18wMDNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMDNfLCBiX18wMDRfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gVCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJUXCJcbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IHN5bSAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGIsIGEpIHQgPSBUXG5sZXQgdHJhbnMgKHR5cGUgYSBiIGMpIChUIDogKGEsIGIpIHQpIChUIDogKGIsIGMpIHQpIDogKGEsIGMpIHQgPSBUXG5sZXQgY29udiAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIChhIDogYSkgOiBiID0gYVxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuXG5tb2R1bGUgTGlmdDIgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpXG4gICAgOiAoKGExLCBhMikgWC50LCAoYjEsIGIyKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbm1vZHVsZSBMaWZ0MyAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIgYTMgYjMpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSAoVCA6IChhMywgYjMpIHQpXG4gICAgOiAoKGExLCBhMiwgYTMpIFgudCwgKGIxLCBiMiwgYjMpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubGV0IGRldHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSAqIGEyLCBiMSAqIGIyKSB0KSA6IChhMSwgYjEpIHQgKiAoYTIsIGIyKSB0ID1cbiAgVCwgVFxuOztcblxubGV0IHR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIDogKGExICogYTIsIGIxICogYjIpIHQgPSBUXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgc3RyaXAgOiAoJ2EgdCwgJ2IgdCkgZXF1YWwgLT4gKCdhLCAnYikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0XG5cbiAgdmFsIHN0cmlwIDogKCgnYTEsICdhMikgdCwgKCdiMSwgJ2IyKSB0KSBlcXVhbCAtPiAoJ2ExLCAnYjEpIGVxdWFsICogKCdhMiwgJ2IyKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSBDb21wb3NpdGlvbl9wcmVzZXJ2ZXNfaW5qZWN0aXZpdHkgKE0xIDogSW5qZWN0aXZlKSAoTTIgOiBJbmplY3RpdmUpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE0xLnQgTTIudFxuXG4gIGxldCBzdHJpcCBlID0gTTEuc3RyaXAgKE0yLnN0cmlwIGUpXG5lbmRcblxubW9kdWxlIElkID0gc3RydWN0XG4gIG1vZHVsZSBVaWQgPSBJbnRcblxuICBtb2R1bGUgV2l0bmVzcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gLi5cbiAgICAgIHR5cGUgdHlwZV93aXRuZXNzX2ludCA9IFsgYHR5cGVfd2l0bmVzcyBvZiBpbnQgXSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgbGV0IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludCA9XG4gICAgICAgIChmdW4gKGB0eXBlX3dpdG5lc3Mgdl9fMDA1XykgLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidHlwZV93aXRuZXNzXCI7IHNleHBfb2ZfaW50IHZfXzAwNV8gXVxuICAgICAgICAgICA6IHR5cGVfd2l0bmVzc19pbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgOztcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCBfc2V4cF9vZl9hIHQgPVxuICAgICAgICBgdHlwZV93aXRuZXNzXG4gICAgICAgICAgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KSlcbiAgICAgICAgfD4gc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgc2V4cF9vZl90ICh0eXBlIGEpIHNleHBfb2ZfYSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgTS5LZXkgfD4gS2V5LnNleHBfb2ZfdCBzZXhwX29mX2FcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSB0KSAoKSA9XG4gICAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdWlkICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoQ2FtbC5PYmoubWFnaWMgYiA6IGEpXG5cbiAgbW9kdWxlIFQwIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbm9uZSA6IF8gdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBpc19ub25lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfc29tZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgdmFsdWVfdW5zYWZlIDogJ2EgdCAtPiAnYVxuICAgIHZhbCBpdGVyX3NvbWUgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID0gQ2FtbC5PYmoub2JqIChDYW1sLk9iai5uZXdfYmxvY2sgQ2FtbC5PYmouYWJzdHJhY3RfdGFnIDEpXG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIENhbWwuT2JqLm1hZ2ljIGB4NmU4ZWUzNDc4ZTFkNzQ0OVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCB4IG5vbmVcbiAgICBsZXQgaXNfc29tZSB4ID0gbm90IChwaHlzX2VxdWFsIHggbm9uZSlcblxuICAgIGxldCBzb21lICh0eXBlIGEpICh4IDogYSkgOiBhIHQgPVxuICAgICAgaWYgcGh5c19zYW1lIHggbm9uZSB0aGVuIG5vbmVfc3Vic3RpdHV0ZSBlbHNlIENhbWwuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX3Vuc2FmZSAodHlwZSBhKSAoeCA6IGEgdCkgOiBhID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgeCBub25lX3N1YnN0aXR1dGUgdGhlbiBDYW1sLk9iai5tYWdpYyBub25lIGVsc2UgQ2FtbC5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfZXhuIHggPVxuICAgICAgaWYgaXNfc29tZSB4XG4gICAgICB0aGVuIHZhbHVlX3Vuc2FmZSB4XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bjogdGhlIGVsZW1lbnQgaXMgW05vbmVdXCJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJfc29tZSB0IH5mID0gaWYgaXNfc29tZSB0IHRoZW4gZiAodmFsdWVfdW5zYWZlIHQpXG4gIGVuZFxuXG4gIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcblxuICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgIHwgU29tZSB4IC0+IHNvbWUgeFxuICAgIDs7XG5cbiAgICBsZXRbQGlubGluZV0gdG9fb3B0aW9uIHggPSBpZiBpc19zb21lIHggdGhlbiBTb21lICh2YWx1ZV91bnNhZmUgeCkgZWxzZSBOb25lXG4gICAgbGV0IHRvX3NleHBhYmxlID0gdG9fb3B0aW9uXG4gICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfb3B0aW9uXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKE9wdGlvbi50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVDFcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEgKE9wdGlvbikgKFQxKVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIENoZWFwX29wdGlvbi50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMDFfIHhfXzAwM18gLT5cbiAgVW5pZm9ybV9hcnJheS50X29mX3NleHAgKENoZWFwX29wdGlvbi50X29mX3NleHAgX29mX2FfXzAwMV8pIHhfXzAwM19cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwNF8geF9fMDA1XyAtPlxuICBVbmlmb3JtX2FycmF5LnNleHBfb2ZfdCAoQ2hlYXBfb3B0aW9uLnNleHBfb2ZfdCBfb2ZfYV9fMDA0XykgeF9fMDA1X1xuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgVW5pZm9ybV9hcnJheS50X3NleHBfZ3JhbW1hciAoQ2hlYXBfb3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZW1wdHkgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG5sZXQgY3JlYXRlIH5sZW4gPSBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuIENoZWFwX29wdGlvbi5ub25lXG5sZXQgaW5pdCBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5vZl9vcHRpb24gKGYgaSkpXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcbmxldFtAaW5saW5lXSBnZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGdldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfbm9uZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBzZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCBzZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCBzZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBzd2FwIHQgaSBqID0gVW5pZm9ybV9hcnJheS5zd2FwIHQgaSBqXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9nZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcblxubGV0IHVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQgaSA9XG4gIENoZWFwX29wdGlvbi52YWx1ZV91bnNhZmUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG47O1xuXG5sZXQgdW5zYWZlX2lzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCB1bnNhZmVfc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHVuc2FmZV9zZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5cbmxldCBjbGVhciB0ID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXRfbm9uZSB0IGlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGlucHV0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBpbnB1dCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgaW5wdXQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXIgaW5wdXQgfmYgPSBpdGVyaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSB4IC0+IGYgeClcblxubGV0IGZvbGRpIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IGFjYyA6PSBmIGkgIWFjYyBlbGVtKTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGQgaW5wdXQgfmluaXQgfmYgPSBmb2xkaSBpbnB1dCB+aW5pdCB+ZjooZnVuIChfIDogaW50KSBhY2MgeCAtPiBmIGFjYyB4KVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2Egb3B0aW9uXG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSlcblxubGV0IG1hcF9zb21lIGlucHV0IH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW4gaW5cbiAgbGV0ICgpID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IG9wdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBpbnB1dCBpIGluXG4gICAgICBDaGVhcF9vcHRpb24uaXRlcl9zb21lIG9wdCB+ZjooZnVuIHggLT4gdW5zYWZlX3NldF9zb21lIG91dHB1dCBpIChmIHgpKVxuICAgIGRvbmVcbiAgaW5cbiAgb3V0cHV0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPSBpbml0IChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG5cbmxldCBvZl9hcnJheV9zb21lIGFycmF5ID1cbiAgaW5pdF9zb21lIChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMV9nZW5lcmljIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSA9IFVuaWZvcm1fYXJyYXkuY29weVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZV9jaGVhcF9vcHRpb24gPSBDaGVhcF9vcHRpb25cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWNrX2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byBbRGVxdWVdIGluIHRoYXQgaXQgdXNlcyBhbiBhcnJheSBvZiBbJ2FdIGFuZFxuICAgYSBtdXRhYmxlIFtpbnRdIHRvIGluZGljYXRlIHdoYXQgaW4gdGhlIGFycmF5IGlzIHVzZWQuICBXZSBjaG9vc2UgdG8gaW1wbGVtZW50IFtTdGFja11cbiAgIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9uIHRvcCBvZiBbRGVxdWVdIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgRS5nLiBhIHNpbXBsZVxuICAgbWljcm9iZW5jaG1hcmsgc2hvd3MgdGhhdCBwdXNoL3BvcCBpcyBhYm91dCAyMCUgZmFzdGVyLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfIHsgbGVuZ3RoID0gbGVuZ3RoX18wMDNfOyBlbHRzID0gZWx0c19fMDA1XyB9IC0+XG4gIGxldCBibmRzX18wMDJfID0gW10gaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAwNV8gaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICBpblxuICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IHNleHBfb2ZfdCA9IGBSZWJvdW5kX2xhdGVyXG5sZXQgXyA9IHNleHBfb2ZfdFxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hICh7IGxlbmd0aDsgZWx0cyB9IGFzIHQpIDogdW5pdCA9XG4gIHRyeVxuICAgIGFzc2VydCAoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICAgIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgaSlcbiAgICBkb25lO1xuICAgICgqIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB1bnVzZWQgZWxlbWVudHMgYXJlIHVuc2V0IHRvIGF2b2lkIGEgc3BhY2VcbiAgICAgICBsZWFrLiAqKVxuICAgIGZvciBpID0gbGVuZ3RoIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyAtIDEgZG9cbiAgICAgIGFzc2VydCAobm90IChPcHRpb25fYXJyYXkuaXNfc29tZSBlbHRzIGkpKVxuICAgIGRvbmVcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiU3RhY2suaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiZXhuXCIsIGV4biB8PiBFeG4uc2V4cF9vZl90OyBcInN0YWNrXCIsIHQgfD4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2Zfb3BhcXVlIF0pXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0geyBsZW5ndGggPSAwOyBlbHRzID0gT3B0aW9uX2FycmF5LmVtcHR5IH1cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBUaGUgb3JkZXIgaW4gd2hpY2ggZWxlbWVudHMgYXJlIHZpc2l0ZWQgaGFzIGJlZW4gY2hvc2VuIHNvIGFzIHRvIGJlIGJhY2t3YXJkc1xuICAgY29tcGF0aWJsZSB3aXRoIFtDYW1sLlN0YWNrXSAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgIXIgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBmIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9saXN0ICh0eXBlIGEpIChsIDogYSBsaXN0KSA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbFxuICB0aGVuIGNyZWF0ZSAoKVxuICBlbHNlIChcbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOigyICogbGVuZ3RoKSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZWx0cyBpIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgeyBsZW5ndGg7IGVsdHMgfSlcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgcmVzaXplIHQgc2l6ZSA9XG4gIGxldCBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOnQuZWx0cyB+ZHN0OmFyciB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjp0Lmxlbmd0aDtcbiAgdC5lbHRzIDwtIGFyclxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IG5ld19jYXBhY2l0eSA9XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggbmV3X2NhcGFjaXR5IChsZW5ndGggdCkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHQgdGhlbiByZXNpemUgdCBuZXdfY2FwYWNpdHlcbjs7XG5cbmxldCBwdXNoIHQgYSA9XG4gIGlmIHQubGVuZ3RoID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgdGhlbiByZXNpemUgdCAoMiAqICh0Lmxlbmd0aCArIDEpKTtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuZWx0cyB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3Bfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gdC5sZW5ndGggLSAxIGluXG4gIGxldCByZXN1bHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaTtcbiAgdC5sZW5ndGggPC0gaTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgcG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sucG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCBwb3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX25vbmVtcHR5IHQpXG5sZXQgcG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHBvcF9lcnJvciBlbHNlIHBvcF9ub25lbXB0eSB0XG5sZXQgdG9wX25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyAodC5sZW5ndGggLSAxKVxubGV0IHRvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnRvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgdG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9ub25lbXB0eSB0KVxubGV0IHRvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSB0b3BfZXJyb3IgZWxzZSB0b3Bfbm9uZW1wdHkgdFxubGV0IGNvcHkgeyBsZW5ndGg7IGVsdHMgfSA9IHsgbGVuZ3RoOyBlbHRzID0gT3B0aW9uX2FycmF5LmNvcHkgZWx0cyB9XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMClcbjs7XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgZiAocG9wX25vbmVtcHR5IHQpO1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgQ2FtbC5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSA9XG4gIFN0cmluZy5oYXNoIHBvc19mbmFtZVxuICBseG9yIEludC5oYXNoIHBvc19sbnVtXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2JvbFxuICBseG9yIEludC5oYXNoIHBvc19jbnVtXG47O1xuXG5tb2R1bGUgTSA9IHN0cnVjdFxuICBpbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuXG4gIGxldCBoYXNoID0gaGFzaF9vdmVycmlkZVxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoTSlcblxubGV0IG9mX3BvcyAocG9zX2ZuYW1lLCBwb3NfbG51bSwgcG9zX2NudW0sIF8pID1cbiAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCA9IDAgfVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnXG4gICAgfCBaZXJvXG4gICAgfCBQb3NcbiAgICB8IE5hblxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ25fb3JfbmFuLm1sLlQudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICB8IE5hbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDNcbiAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3M7IE5hbiBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduX29yX25hblwiXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogVC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogVC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogVC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogVC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBULnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBvZl9zaWduID0gZnVuY3Rpb25cbiAgfCBTaWduLk5lZyAtPiBOZWdcbiAgfCBTaWduLlplcm8gLT4gWmVyb1xuICB8IFNpZ24uUG9zIC0+IFBvc1xuOztcblxubGV0IHRvX3NpZ25fZXhuID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gU2lnbi5OZWdcbiAgfCBaZXJvIC0+IFNpZ24uWmVyb1xuICB8IFBvcyAtPiBTaWduLlBvc1xuICB8IE5hbiAtPiBpbnZhbGlkX2FyZyBcIkJhc2UuU2lnbl9vcl9uYW4udG9fc2lnbl9leG46IE5hblwiXG47O1xuXG5sZXQgb2ZfaW50IG4gPSBvZl9zaWduIChTaWduLm9mX2ludCBuKVxubGV0IHRvX2ludF9leG4gdCA9IFNpZ24udG9faW50ICh0b19zaWduX2V4biB0KVxuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbiAgfCBOYW4gLT4gTmFuXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOYW4sIF8gfCBfLCBOYW4gLT4gTmFuXG4gIHwgXyAtPiBvZl9zaWduIChTaWduLiggKiApICh0b19zaWduX2V4biB0KSAodG9fc2lnbl9leG4gdCcpKVxuOztcblxuKCogSW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBhbnkgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdFxuICAgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBhbGwgOiAnYS4gJ2EgbGlzdCAtPiAnYSB0IGxpc3QgPVxuICBmdW4gX2FsbF9vZl9hIC0+XG4gIFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgIHwgZW51bWVyYXRlX18wMDFfIDo6IGwgLT4gbWFwIGwgKEluY2wgZW51bWVyYXRlX18wMDFfIDo6IGFjYylcbiAgICAgaW5cbiAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAoUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgICAgfCBlbnVtZXJhdGVfXzAwMl8gOjogbCAtPiBtYXAgbCAoRXhjbCBlbnVtZXJhdGVfXzAwMl8gOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgICAgIFsgVW5ib3VuZGVkIF0pXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuICh0eXBlIGFfXzAxOF8pIDogKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8gdCkgLT5cbiAgbGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwibWF5YmVfYm91bmQubWwudFwiIGluXG4gIGZ1biBfb2ZfYV9fMDAzXyAtPiBmdW5jdGlvblxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBfdGFnX18wMDlfKSA6OiBzZXhwX2FyZ3NfXzAxMF8pIGFzXG4gICAgICBfc2V4cF9fMDA4XyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDEwXyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxMV8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTFfIGluXG4gICAgICAgICBJbmNsIHJlczBfXzAxMl9cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAwOV9cbiAgICAgICAgICAgX3NleHBfXzAwOF8pXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgIEV4Y2wgcmVzMF9fMDE3X1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIC0+IFVuYm91bmRlZFxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgOjogXykgYXNcbiAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkluY2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkV4Y2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJVbmJvdW5kZWRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxudHlwZSBpbnRlcnZhbF9jb21wYXJpc29uID1cbiAgfCBCZWxvd19sb3dlcl9ib3VuZFxuICB8IEluX3JhbmdlXG4gIHwgQWJvdmVfdXBwZXJfYm91bmRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG5cbmxldCBpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwibWF5YmVfYm91bmQubWwuaW50ZXJ2YWxfY29tcGFyaXNvblwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgLT4gQmVsb3dfbG93ZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIC0+IEluX3JhbmdlXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSAtPiBBYm92ZV91cHBlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBzZXhwX18wMjZfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiBpbnRlcnZhbF9jb21wYXJpc29uKVxuOztcblxubGV0IHNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChmdW5jdGlvblxuICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQmVsb3dfbG93ZXJfYm91bmRcIlxuICAgIHwgSW5fcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5fcmFuZ2VcIlxuICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQWJvdmVfdXBwZXJfYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAoaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tYXIgOiBpbnRlcnZhbF9jb21wYXJpc29uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiQmVsb3dfbG93ZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkluX3JhbmdlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJBYm92ZV91cHBlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlXG4gICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnQpXG47O1xuXG5sZXQgKGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIDpcbiAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgSW5fcmFuZ2UgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IEluY2wgKGYgaW5jbClcbiAgfCBFeGNsIGV4Y2wgLT4gRXhjbCAoZiBleGNsKVxuICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbjs7XG5cbmxldCBpc19sb3dlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGluY2wgYSA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgZXhjbCBhIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfdXBwZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBhIGluY2wgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGEgZXhjbCA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBtYXRjaCBsb3dlciB3aXRoXG4gIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gIHwgSW5jbCBsb3dlciB8IEV4Y2wgbG93ZXIgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICAgICB8IEluY2wgdXBwZXIgfCBFeGNsIHVwcGVyIC0+IGNvbXBhcmUgbG93ZXIgdXBwZXIgPiAwKVxuOztcblxubGV0IGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgaWYgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZVxuICB0aGVuIGZhaWx3aXRoIFwiTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG46IGxvd2VyIGJvdW5kID4gdXBwZXIgYm91bmRcIlxuOztcblxubGV0IGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlO1xuICBpZiBub3QgKGlzX2xvd2VyX2JvdW5kIGxvd2VyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBCZWxvd19sb3dlcl9ib3VuZFxuICBlbHNlIGlmIG5vdCAoaXNfdXBwZXJfYm91bmQgdXBwZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEFib3ZlX3VwcGVyX2JvdW5kXG4gIGVsc2UgSW5fcmFuZ2Vcbjs7XG5cbmxldCBpbnRlcnZhbF9jb250YWluc19leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgbWF0Y2ggY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlIHdpdGhcbiAgfCBJbl9yYW5nZSAtPiB0cnVlXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBEdXBsaWNhdGVcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA1XyBiX18wMDZfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wMDVfLCBiX18wMDZfIHdpdGhcbiAgICAgICAgfCBgT2sgX2xlZnRfXzAwN18sIGBPayBfcmlnaHRfXzAwOF8gLT4gX2NtcF9fYSBfbGVmdF9fMDA3XyBfcmlnaHRfXzAwOF9cbiAgICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IHRydWVcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMDlfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBPayB2X18wMTBfIC0+IFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IF9vZl9hX18wMDlfIHZfXzAxMF8gXVxuICAgICAgfCBgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkR1cGxpY2F0ZVwiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gY29tcGFyYXRvcjooJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gKCdrZXksICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdrICd2LiAoJ2sgLT4gJ2sgLT4gaW50KSAtPiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgbGV0IHRfXzAxM18sIHRfXzAxNF8gPSBhX18wMTFfIGluXG4gICAgbGV0IHRfXzAxNV8sIHRfXzAxNl8gPSBiX18wMTJfIGluXG4gICAgbWF0Y2ggX2NtcF9fayB0X18wMTNfIHRfXzAxNV8gd2l0aFxuICAgIHwgMCAtPlxuICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgdF9fMDE0XyB0X18wMTZfXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0X18wMTRfLCB0X18wMTZfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDE3XywgYExlZnQgX3JpZ2h0X18wMThfIC0+IF9jbXBfX3YgX2xlZnRfXzAxN18gX3JpZ2h0X18wMThfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMTlfLCBgUmlnaHQgX3JpZ2h0X18wMjBfIC0+IF9jbXBfX3YgX2xlZnRfXzAxOV8gX3JpZ2h0X18wMjBfXG4gICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAyMV8sIGBVbmVxdWFsIF9yaWdodF9fMDIyXyAtPlxuICAgICAgICAgIGxldCB0X18wMjNfLCB0X18wMjRfID0gX2xlZnRfXzAyMV8gaW5cbiAgICAgICAgICBsZXQgdF9fMDI1XywgdF9fMDI2XyA9IF9yaWdodF9fMDIyXyBpblxuICAgICAgICAgIChtYXRjaCBfY21wX192IHRfXzAyM18gdF9fMDI1XyB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBfY21wX192IHRfXzAyNF8gdF9fMDI2X1xuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIHggeSlcbiAgICB8IG4gLT4gblxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+ICdrIC0+IGJvb2wpIC0+ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAyN18gYl9fMDI4XyAtPlxuICAgICAgbGV0IHRfXzAyOV8sIHRfXzAzMF8gPSBhX18wMjdfIGluXG4gICAgICBsZXQgdF9fMDMxXywgdF9fMDMyXyA9IGJfXzAyOF8gaW5cbiAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgKF9jbXBfX2sgdF9fMDI5XyB0X18wMzFfKVxuICAgICAgICAoaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8na19zZXhwX2dyYW1tYXIgXyd2X3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgKCBfJ2tfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiVW5lcXVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDg1XyBiX18wODZfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDg1XyBiX18wODZfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wODVfLCBiX18wODZfIHdpdGhcbiAgICAgIHwgYExlZnQgX2xlZnRfXzA4N18sIGBMZWZ0IF9yaWdodF9fMDg4XyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wODdfIF9yaWdodF9fMDg4X1xuICAgICAgfCBgUmlnaHQgX2xlZnRfXzA4OV8sIGBSaWdodCBfcmlnaHRfXzA5MF8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzA4OV8gX3JpZ2h0X18wOTBfXG4gICAgICB8IGBCb3RoIF9sZWZ0X18wOTFfLCBgQm90aCBfcmlnaHRfXzA5Ml8gLT5cbiAgICAgICAgbGV0IHRfXzA5M18sIHRfXzA5NF8gPSBfbGVmdF9fMDkxXyBpblxuICAgICAgICBsZXQgdF9fMDk1XywgdF9fMDk2XyA9IF9yaWdodF9fMDkyXyBpblxuICAgICAgICAobWF0Y2ggX2NtcF9fbGVmdCB0X18wOTNfIHRfXzA5NV8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX3JpZ2h0IHRfXzA5NF8gdF9fMDk2X1xuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDk3XyBiX18wOThfIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFBweF9jb21wYXJlX2xpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzZXRcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YgbGlzdCkgb3B0aW9uc1xuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigndiBvcHRpb24gLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbmQgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IG9wdGlvbikgb3B0aW9uc1xuICB2YWwgZmluZF9leG4gOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2KSBvcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG1lbSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooJ2sga2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gIHZhbCBmb2xkIDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYSAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfa2V5c1xuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCdrIGtleSAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICgnaywgJ2NtcCwgKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCkgb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBrZXkgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sga2V5ICogJ3YpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOihrZXk6J2sga2V5IC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+IGluaXQ6J2FcbiAgICAgIC0+IGY6KCdhIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sga2V5ICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGFwcGVuZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbWluOidrIGtleVxuICAgICAgLT4gbWF4OidrIGtleVxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sga2V5IC0+IG1heDonayBrZXkgLT4gKCdrIGtleSAqICd2KSBsaXN0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG50aCA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIHJhbmsgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gaW50IG9wdGlvbikgb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrIGtleSwgJ3YsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGtleVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0XG4gIHZhbCBzZXQgOiAnYSB0IC0+IGtleTprZXkgLT4gZGF0YTonYSAtPiAnYSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIGxpc3QgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogJ2EgbGlzdCB0IC0+IGtleSAtPiAnYSBsaXN0IHRcbiAgdmFsIGZpbmRfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4ga2V5IC0+IGY6KCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4ga2V5IC0+IGY6KCdhIG9wdGlvbiAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgdFxuICB2YWwgbWVtIDogXyB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiBfIHQgLT4gZjooa2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMiA6ICdhIHQgLT4gJ2IgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6KCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2MgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZDJcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6KCdhLCAnYikgTWVyZ2VfZWxlbWVudC50IC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogJ2EgdCAtPiBmOihrZXkgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX21hcGkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAoJ2IsICdjKSBFaXRoZXIudCkgLT4gJ2IgdCAqICdjIHRcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2MpIEVpdGhlci50KSAtPiAnYiB0ICogJ2MgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICdhIE9yX2Vycm9yLnQgdCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiBfIHQgLT4ga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FsaXN0IDogP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdiIHQgLT4gZjooa2V5OmtleSAtPiAoJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Mgb3B0aW9uKSAtPiAnYyB0XG4gIHZhbCBtZXJnZV9za2V3ZWQgOiAndiB0IC0+ICd2IHQgLT4gY29tYmluZTooa2V5OmtleSAtPiAndiAtPiAndiAtPiAndikgLT4gJ3YgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoa2V5LCAnYSkgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKGtleSwgJ2EpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAnYSB0IC0+IGtleSAqICdhXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAnYSB0IC0+IGtleSAqICdhXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgc3BsaXQgOiAnYSB0IC0+IGtleSAtPiAnYSB0ICogKGtleSAqICdhKSBvcHRpb24gKiAnYSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6J2EgdFxuICAgIC0+IHVwcGVyX3BhcnQ6J2EgdFxuICAgIC0+IFsgYE9rIG9mICdhIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGxvd2VyX2JvdW5kOmtleSBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6a2V5IE1heWJlX2JvdW5kLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgJ2EgdFxuICAgIC0+IG1pbjprZXlcbiAgICAtPiBtYXg6a2V5XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYilcbiAgICAtPiAnYlxuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICdhIHQgLT4gbWluOmtleSAtPiBtYXg6a2V5IC0+IChrZXkgKiAnYSkgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICdhIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4ga2V5XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgbnRoIDogJ2EgdCAtPiBpbnQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAnYSB0IC0+IGludCAtPiBrZXkgKiAnYVxuICB2YWwgcmFuayA6IF8gdCAtPiBrZXkgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICdhIHQgLT4gJ2EgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzprZXlcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOmtleVxuICAgIC0+ICdhIHRcbiAgICAtPiAoa2V5ICogJ2EpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgJ2EgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTprZXkgLT4gZGF0YTonYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+IChrZXkgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdFxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSAtPiAnYiBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYlxuICB2YWwgcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBtZW0gOiAoJ2EsICdiKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYykgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYikgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICB2YWwgcGFydGl0aW9uX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnYSwgJ2IgT3JfZXJyb3IudCkgdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG4gIHZhbCB0b19hbGlzdCA6ID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gLT4gKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IpIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gKCdhLCAnYikgdCAqICgnYSAqICdiKSBvcHRpb24gKiAoJ2EsICdiKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdhLCAnYikgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdhLCAnYikgdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+IG1pbjonYSAtPiBtYXg6J2EgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6ICgnYSwgXykgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndikgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG4gIHZhbCBhZGQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIHNldCA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+IGtleTonYSAtPiBkYXRhOidiIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBsaXN0XG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaW5kIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYlxuICB2YWwgcmVtb3ZlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBtZW0gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXywgJ2NtcCkgdCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdCAqICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2EsICdiIE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBrZXlzIDogKCdhLCBfLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IsIF8pIHQgLT4gJ2IgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiAoJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2Qgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2QsICdjbXApIHRcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgbWluX2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIG1heF9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiLCBfKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2EsICdiLCBfKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdhLCAnYiwgXykgdCAtPiBtaW46J2EgLT4gbWF4OidhIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdhLCAnYiwgXykgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAnYVxuICAgIC0+ICgnYSAqICdiKSBvcHRpb25cblxuICB2YWwgbnRoIDogKCdhLCAnYiwgXykgdCAtPiBpbnQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnYSwgJ2IsIF8pIHQgLT4gaW50IC0+ICdhICogJ2JcbiAgdmFsIHJhbmsgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgLT4gaW50IG9wdGlvblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBzZWdtZW50X29mOihrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGlzX2VtcHR5IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludFxuXG4gIHZhbCBhZGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHNldFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgYWRkX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+IGtleTonYVxuICAgIC0+IGRhdGE6J2JcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIGZpbmRfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAnYiBsaXN0XG5cbiAgdmFsIGNoYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgdXBkYXRlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+IGY6KCdiIG9wdGlvbiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbmQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYlxuXG4gIHZhbCByZW1vdmVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBtZW0gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfLCAnY21wKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgbWFwaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MpIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICgnYSwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2EgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCAnYiwgXykgdCAtPiBpbml0OidjIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2RcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTooJ2IsICdjKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2QgLT4gJ2QpXG4gICAgLT4gJ2RcblxuICB2YWwgZmlsdGVyX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIE9yX2Vycm9yLnQsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwga2V5cyA6ICgnYSwgXywgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiLCBfKSB0IC0+ICdiIGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdhLCAnYiwgXykgdFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EgKiAnYikgb3B0aW9uICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbG93ZXJfcGFydDooJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYSBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbWluOidhXG4gICAgLT4gbWF4OidhXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzIChNIDogQWNjZXNzb3JzMykgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuICB0eXBlICgnaywgJ3YsICdjbXApIHRyZWVcbiAgdHlwZSAnayBrZXlcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgICAtPiBmOignazEga2V5IC0+ICdrMiBrZXkpXG4gICAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCdrMSBrZXkgLT4gJ2syIGtleSkgLT4gKCdrMiwgJ3YsICdjbXAyKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgbGVuOmludCAtPiBmOihpbnQgLT4gJ2sga2V5ICogJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBsaXN0IC0+IGluaXQ6J3YyIC0+IGY6KCd2MiAtPiAndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigndiAtPiAndiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdXG4gICAgICApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIFNlcXVlbmNlLnRcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigndjIgLT4gJ3YxIC0+ICd2MilcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooJ3YgLT4gJ3YgLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KGY6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2ssICdjbXAsICgnayBrZXksICd2LCAnY21wKSB0cmVlIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGtleVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IF8gdFxuICB2YWwgc2luZ2xldG9uIDoga2V5IC0+ICdhIC0+ICdhIHRcbiAgdmFsIG1hcF9rZXlzIDogJ3YgdCAtPiBmOihrZXkgLT4ga2V5KSAtPiBbIGBPayBvZiAndiB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG1hcF9rZXlzX2V4biA6ICd2IHQgLT4gZjooa2V5IC0+IGtleSkgLT4gJ3YgdFxuICB2YWwgb2ZfYWxpc3QgOiAoa2V5ICogJ2EpIGxpc3QgLT4gWyBgT2sgb2YgJ2EgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvciA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX2FsaXN0X2V4biA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG9mX2FsaXN0X2ZvbGQgOiAoa2V5ICogJ2EpIGxpc3QgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlIDogKGtleSAqICdhKSBsaXN0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoa2V5ICogJ2EpIGFycmF5IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6IChrZXkgKiAnYSkgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiBrZXkgKiAnYSkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICdhIHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGkgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2EgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGl0ZXJpOihmOihrZXk6a2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAndiB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuIDogaXRlcmk6KGY6KGtleTprZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KSAtPiAndiB0XG4gIHZhbCBvZl90cmVlIDogJ2EgdHJlZSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiAoXywgXykgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2IgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogICgnazEsICd2KSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgdmFsIG1hcF9rZXlzX2V4biA6ICgnazEsICd2KSB0IC0+IGY6KCdrMSAtPiAnazIpIC0+ICgnazIsICd2KSB0XG4gIHZhbCBvZl9hbGlzdCA6ICgnYSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvciA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiIGxpc3QpIHRcbiAgdmFsIG9mX2FsaXN0X2ZvbGQgOiAoJ2EgKiAnYikgbGlzdCAtPiBpbml0OidjIC0+IGY6KCdjIC0+ICdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2UgOiAoJ2EgKiAnYikgbGlzdCAtPiBmOignYiAtPiAnYiAtPiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhICogJ2IpIGFycmF5IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSAqICdiKSBhcnJheSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhICogJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zZXF1ZW5jZV9leG4gOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiBmOignYiAtPiAnYiAtPiAnYikgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogIGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4biA6IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl90cmVlIDogKCdhLCAnYikgdHJlZSAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsIF8sICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EgKiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3RyZWVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczFcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGtleSA6PSBrZXlcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMyXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190XG4gICAgOiAgKG1vZHVsZSBDb21wYXJlX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGludClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoSGFzaC5zdGF0ZSAtPiAndiAtPiBIYXNoLnN0YXRlKVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICAoKiogW01hcF0gaXMgYSBmdW5jdGlvbmFsIGRhdGEgc3RydWN0dXJlIChiYWxhbmNlZCBiaW5hcnkgdHJlZSkgaW1wbGVtZW50aW5nIGZpbml0ZSBtYXBzXG4gICAgICBvdmVyIGEgdG90YWxseS1vcmRlcmVkIGRvbWFpbiwgY2FsbGVkIGEgXCJrZXlcIi4gKilcblxuICB0eXBlICgna2V5LCArJ3ZhbHVlLCAnY21wKSB0XG5cbiAgbW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE9yX2R1cGxpY2F0ZVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxuICBtb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IFVuZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfZW51bWVyYXRlX2xpYi5FbnVtZXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIE1hcHMgW0NvbnRpbnVlXSB0byBbRmluaXNoZWRdIGFuZCBbU3RvcF0gdG8gW1VuZmluaXNoZWRdLiAqKVxuICAgIHZhbCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHRcblxuICAgICgqKiBNYXBzIFtGaW5pc2hlZF0gdG8gW0NvbnRpbnVlXSBhbmQgW1VuZmluaXNoZWRdIHRvIFtTdG9wXS4gKilcbiAgICB2YWwgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50XG4gIGVuZFxuXG4gIG1vZHVsZSBNZXJnZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gYm9vbFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCBsZWZ0IDogKCdsZWZ0LCBfKSB0IC0+ICdsZWZ0IG9wdGlvblxuICAgIHZhbCByaWdodCA6IChfLCAncmlnaHQpIHQgLT4gJ3JpZ2h0IG9wdGlvblxuICAgIHZhbCBsZWZ0X3ZhbHVlIDogKCdsZWZ0LCBfKSB0IC0+IGRlZmF1bHQ6J2xlZnQgLT4gJ2xlZnRcbiAgICB2YWwgcmlnaHRfdmFsdWUgOiAoXywgJ3JpZ2h0KSB0IC0+IGRlZmF1bHQ6J3JpZ2h0IC0+ICdyaWdodFxuXG4gICAgdmFsIHZhbHVlc1xuICAgICAgOiAgKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGxlZnRfZGVmYXVsdDonbGVmdFxuICAgICAgLT4gcmlnaHRfZGVmYXVsdDoncmlnaHRcbiAgICAgIC0+ICdsZWZ0ICogJ3JpZ2h0XG4gIGVuZFxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3QgaWYgdGhlIGludmFyaWFudHMgb2YgdGhlIGludGVybmFsIEFWTCBzZWFyY2ggdHJlZSBob2xkLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjLlxuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBUaGUgZW1wdHkgbWFwLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBBIG1hcCB3aXRoIG9uZSAoa2V5LCBkYXRhKSBwYWlyLiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICdiIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuIFRoZSBhY2N1bXVsYXRvciBpcyBwZXIta2V5LlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICAjIGxldCBtYXAgPSBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGRcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiYVwiLCAxOyBcImFcIiwgMTA7IFwiYlwiLCAyOyBcImJcIiwgMjA7IFwiYlwiLCAyMDAgXVxuICAgICAgICAgICAgICAgICAgICAgIH5pbml0OkludC5TZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICB+ZjpTZXQuYWRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9zIFslc2V4cCAobWFwIDogSW50LlNldC50IFN0cmluZy5NYXAudCldOztcbiAgICAgICAgKChhICgxIDEwKSkgKGIgKDIgMjAgMjAwKSkpXG4gICAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIF19XG4gICopXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogTGlrZSBbb2ZfaXRlcmldIGV4Y2VwdCB0aGF0IGl0IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhIHNvcnRlZCBhcnJheSBvZiBrZXktZGF0YSBwYWlycy4gVGhlIGlucHV0IGFycmF5IG11c3QgYmUgc29ydGVkXG4gICAgICAoZWl0aGVyIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyKSwgYXMgZ2l2ZW4gYnkgdGhlIHJlbGV2YW50IGNvbXBhcmF0b3IsIGFuZFxuICAgICAgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGUga2V5cy4gSWYgZWl0aGVyIG9mIHRoZXNlIGNvbmRpdGlvbnMgZG9lcyBub3QgaG9sZCxcbiAgICAgIGFuIGVycm9yIGlzIHJldHVybmVkLiAgKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBMaWtlIFtvZl9zb3J0ZWRfYXJyYXldIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgYSBtYXAgd2l0aCBicm9rZW4gaW52YXJpYW50cyB3aGVuIGFuXG4gICAgICBbRXJyb3JdIHdvdWxkIGhhdmUgYmVlbiByZXR1cm5lZC4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhICogJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXkgYyAoU2VxdWVuY2UudG9fYXJyYXlcbiAgICAgIHNlcSldLCBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBhcnJheS5cblxuICAgICAgVGhlIHNlcXVlbmNlIHdpbGwgYmUgZm9sZGVkIG92ZXIgb25jZSwgYW5kIHRoZSBhZGRpdGlvbmFsIHRpbWUgY29tcGxleGl0eSBpcyB7ZSBPKG4pfS5cbiAgKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0IGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG5cbiAgICAgIElmIHlvdXIgc2VxdWVuY2UgaXMgaW5jcmVhc2luZywgdXNlIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXS5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX29yX2Vycm9yIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X29yX2Vycm9yIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9leG4gYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC5cblxuICAgICAgW29mX3NlcXVlbmNlX211bHRpIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX2ZvbGQgYyBzZXEgfmluaXQgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZm9sZCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmluaXQgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBUZXN0cyB3aGV0aGVyIGEgbWFwIGlzIGVtcHR5LiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFtsZW5ndGggbWFwXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW21hcF0uICBPKDEpLCBidXQgW1RyZWUubGVuZ3RoXSBpc1xuICAgICAgTyhuKS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQgbmV3IGJpbmRpbmc7IGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgYm91bmQsIGl0c1xuICAgICAgcHJldmlvdXMgYmluZGluZyBkaXNhcHBlYXJzLiAqKVxuICB2YWwgc2V0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthZGQgdCB+a2V5IH5kYXRhXSBhZGRzIGEgbmV3IGVudHJ5IHRvIFt0XSBtYXBwaW5nIFtrZXldIHRvIFtkYXRhXSBhbmQgcmV0dXJucyBbYE9rXVxuICAgICAgd2l0aCB0aGUgbmV3IG1hcCwgb3IgaWYgW2tleV0gaXMgYWxyZWFkeSBwcmVzZW50IGluIFt0XSwgcmV0dXJucyBbYER1cGxpY2F0ZV0uICopXG4gIHZhbCBhZGQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBJZiBba2V5XSBpcyBub3QgcHJlc2VudCB0aGVuIGFkZCBhIHNpbmdsZXRvbiBsaXN0LCBvdGhlcndpc2UsIGNvbnMgZGF0YSBvbnRvIHRoZVxuICAgICAgaGVhZCBvZiB0aGUgZXhpc3RpbmcgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogSWYgdGhlIGtleSBpcyBwcmVzZW50LCB0aGVuIHJlbW92ZSBpdHMgaGVhZCBlbGVtZW50OyBpZiB0aGUgcmVzdWx0IGlzIGVtcHR5LCByZW1vdmVcbiAgICAgIHRoZSBrZXkuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIHRoZSBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vbmUuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICd2IGxpc3RcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gcmV0dXJucyBhIG5ldyBtYXAgW21dIHRoYXQgaXMgdGhlIHNhbWUgYXMgW3RdIG9uIGFsbCBrZXlzIGV4Y2VwdFxuICAgICAgZm9yIFtrZXldLCBhbmQgd2hvc2UgdmFsdWUgZm9yIFtrZXldIGlzIGRlZmluZWQgYnkgW2ZdLCBpLmUuLCBbZmluZCBtIGtleSA9IGYgKGZpbmRcbiAgICAgIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCd2IG9wdGlvbiAtPiAndiBvcHRpb24pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigndiBvcHRpb24gLT4gJ3YpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuXG4gICgqKiBSZXR1cm5zIFtTb21lIHZhbHVlXSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciBbTm9uZV0gaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndiBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgcmFpc2luZyBbQ2FtbC5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOignayAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCd2IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gICgqKiBJdGVyYXRlcyB0d28gbWFwcyBzaWRlIGJ5IHNpZGUuIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgTyhNICsgTikuICBJZiB0d29cbiAgICAgIGlucHV0cyBhcmUgW1soMCwgYSk7ICgxLCBhKV1dIGFuZCBbWygxLCBiKTsgKDIsIGIpXV0sIFtmXSB3aWxsIGJlIGNhbGxlZCB3aXRoIFtbKDAsXG4gICAgICBgTGVmdCBhKTsgKDEsIGBCb3RoIChhLCBiKSk7ICgyLCBgUmlnaHQgYildXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyByZXBsYWNlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiopXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigndjEgLT4gJ3YyKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIENvbnZlcnQgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHRvIGEgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHVzaW5nIFtmXS4gKilcbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XSwgdW50aWwgdGhlIGZpcnN0XG4gICAgICB0aW1lIHRoYXQgW2ZdIHJldHVybnMgW1N0b3AgX10uIElmIFtmXSByZXR1cm5zIFtTdG9wIGZpbmFsXSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gICAgICBpbW1lZGlhdGVseSB3aXRoIHRoZSB2YWx1ZSBbZmluYWxdLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgYW5kIHRoZSBmaW5hbFxuICAgICAgY2FsbCB0byBbZl0gcmV0dXJucyBbQ29udGludWUgbGFzdF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBbZmluaXNoIGxhc3RdLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpIC0+ICdhXG5cbiAgKCoqIEZvbGRzIG92ZXIgdHdvIG1hcHMgc2lkZSBieSBzaWRlLCBsaWtlIFtpdGVyMl0uICopXG4gIHZhbCBmb2xkMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2EgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl9tYXBpXSBydW4gaW4gTyhuICogbGdcbiAgICAgIG4pIHRpbWU7IHRoZXkgc2ltcGx5IGFjY3VtdWxhdGUgZWFjaCBrZXkgJiBkYXRhIHBhaXIgcmV0YWluZWQgYnkgW2ZdIGludG8gYSBuZXcgbWFwXG4gICAgICB1c2luZyBbYWRkXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOignayAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyaSA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyBmaWx0ZXJlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzXG4gICAgICBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXBpIHQgfmZdIHJldHVybnMgdHdvIG5ldyBbdF1zLCB3aXRoIGVhY2gga2V5IGluIFt0XSBhcHBlYXJpbmcgaW5cbiAgICAgIGV4YWN0bHkgb25lIG9mIHRoZSByZXN1bHRpbmcgbWFwcyBkZXBlbmRpbmcgb24gaXRzIG1hcHBpbmcgaW4gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKipcbiAgICAge1tcbiAgICAgICBwYXJ0aXRpb25pX3RmIHQgfmZcbiAgICAgICA9XG4gICAgICAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIGlmIGYgfmtleSB+ZGF0YVxuICAgICAgICAgdGhlbiBGaXJzdCBkYXRhXG4gICAgICAgICBlbHNlIFNlY29uZCBkYXRhKVxuICAgICBdfSAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBBIHNwZWNpYWwgY2FzZSBvZiBbbWVyZ2VdLCBbbWVyZ2Vfc2tld2VkIHQxIHQyXSBpcyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGVcbiAgICAgIGJpbmRpbmdzIG9mIFt0MV0gYW5kIFt0Ml0uIEJpbmRpbmdzIHRoYXQgYXBwZWFyIGluIGJvdGggW3QxXSBhbmQgW3QyXSBhcmVcbiAgICAgIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgdmFsdWUgdXNpbmcgdGhlIFtjb21iaW5lXSBmdW5jdGlvbi4gSW4gYSBjYWxsXG4gICAgICBbY29tYmluZSB+a2V5IHYxIHYyXSwgdGhlIHZhbHVlIFt2MV0gY29tZXMgZnJvbSBbdDFdIGFuZCBbdjJdIGZyb20gW3QyXS5cblxuICAgICAgVGhlIHJ1bnRpbWUgb2YgW21lcmdlX3NrZXdlZF0gaXMgW08obWluKGwxLCBsMikgKiBsb2cobWF4KGwxLCBsMikpKV0sIHdoZXJlIFtsMV0gaXNcbiAgICAgIHRoZSBsZW5ndGggb2YgW3QxXSBhbmQgW2wyXSB0aGUgbGVuZ3RoIG9mIFt0Ml0uIFRoaXMgaXMgbGlrZWx5IHRvIGJlIGZhc3RlciB0aGFuXG4gICAgICBbbWVyZ2VdIHdoZW4gb25lIG9mIHRoZSBtYXBzIGlzIGEgbG90IHNtYWxsZXIsIG9yIHdoZW4geW91IG1lcmdlIGEgbGlzdCBvZiBtYXBzLiAqKVxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOihrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICAgIDogICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gcmV0dXJucyBhIGxpc3Qgb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uXG4gICAgICBJdCBpcyBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudFxuICAgICAgb2Ygc3RydWN0dXJlLiBUaGUga2V5cyBpbiB0aGUgb3V0cHV0IHNlcXVlbmNlIHdpbGwgYmUgaW4gc29ydGVkIG9yZGVyLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2RhdGFfZXF1YWxdIGlzIGF0IGxlYXN0IGFzIGVxdWF0aW5nIGFzIHBoeXNpY2FsIGVxdWFsaXR5OiB0aGF0XG4gICAgICBbcGh5c19lcXVhbCB4IHldIGltcGxpZXMgW2RhdGFfZXF1YWwgeCB5XS4gT3RoZXJ3aXNlLCBbc3ltbWV0cmljX2RpZmZdIG1heSBiZWhhdmUgaW5cbiAgICAgIHVuZXhwZWN0ZWQgd2F5cy4gRm9yIGV4YW1wbGUsIHdpdGggW35kYXRhX2VxdWFsOihmdW4gXyBfIC0+IGZhbHNlKV0gaXQgaXMgTk9UXG4gICAgICBuZWNlc3NhcmlseSB0aGUgY2FzZSB0aGUgcmVzdWx0aW5nIGNoYW5nZSBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gYW4gZWxlbWVudFxuICAgICAgWyhrLCBgVW5lcXVhbCBfKV0gZm9yIGV2ZXJ5IGtleSBba10gc2hhcmVkIGJ5IGJvdGggbWFwcy5cblxuICAgICAgV2FybmluZzogRmxvYXQgZXF1YWxpdHkgdmlvbGF0ZXMgdGhpcyBwcm9wZXJ0eSEgW3BoeXNfZXF1YWwgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXNcbiAgICAgIHRydWUsIGJ1dCBbRmxvYXQuKD0pIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzIGZhbHNlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW2ZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIGZvbGRzIGFjcm9zcyBhbiBpbXBsaWNpdCBzZXF1ZW5jZSBvZiBjaGFuZ2VzXG4gICAgICBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0sIGluIHNvcnRlZCBvcmRlciBieSBrZXlzLiBFcXVpdmFsZW50IHRvXG4gICAgICBbU2VxdWVuY2UuZm9sZCAoc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwpXSwgYW5kIG1vcmUgZWZmaWNpZW50LiAqKVxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooJ2EgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc2ltaWxhciBmdW5jdGlvbnMgaW4gW0xpc3RdLiAqKVxuXG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGludFxuXG5cbiAgKCoqIFtzcGxpdCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSwgdGhlIG1hcHBpbmcgb2YgW2tleV0gaWZcbiAgICAgIGFueSwgYW5kIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIG9uIHRoZSBib3VuZGFyeSBvZiB0aGVcbiAgICAgIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlXG4gICAgICBsZWZ0IHNlZ21lbnQsIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC5cbiAgICAgIEl0IHJldHVybnMgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc3VicmFuZ2VdIHRha2VzIGEgW2NvbXBhcmVdIGZ1bmN0aW9uIHRoYXQgZGl2aWRlcyBbdF0gaW50byB0aHJlZVxuICAgICAgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50cyB3aXRoIHJlc3BlY3QgdG8gW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXTpcblxuICAgICAge3ZcbiAgICAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEluX3JhbmdlIHwgQWJvdmVfdXBwZXJfYm91bmQgfFxuICAgICAgdn1cblxuICAgICAgYW5kIHJldHVybnMgYSBtYXAgb2YgdGhlIFtJbl9yYW5nZV0gc2VnbWVudC5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBtICsgbikgd2hlcmUgW21dIGlzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1hcCBhbmQgW25dIGlzIHRoZVxuICAgICAgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuIFRoZSBsaW5lYXIgdGVybSBpbiBbbl0gaXMgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBbY29tcGFyZV0gZG9lcyBub3Qgc2VnbWVudCBbdF0gYXMgc2hvd24gYWJvdmUsIG9yIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBpdHMgaW5wdXRzLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXywgXykgdFxuXG4gICAgICAoKiogW0J1aWxkX2luY3JlYXNpbmddIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIG1hcCBpbmNyZW1lbnRhbGx5IGZyb20gYVxuICAgICAgICAgIHNlcXVlbmNlIHRoYXQgaXMga25vd24gdG8gYmUgaW5jcmVhc2luZy5cblxuICAgICAgICAgIFRoZSB0b3RhbCB0aW1lIGNvbXBsZXhpdHkgb2YgY29uc3RydWN0aW5nIGEgbWFwIHRoaXMgd2F5IGlzIE8obiksIHdoaWNoIGlzIG1vcmVcbiAgICAgICAgICBlZmZpY2llbnQgdGhhbiB1c2luZyBbTWFwLmFkZF0gYnkgYSBsb2dhcml0aG1pYyBmYWN0b3IuXG5cbiAgICAgICAgICBUaGlzIGludGVyZmFjZSBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIGR1YWwgb2YgW3RvX3NlcXVlbmNlXSwgYnV0IHdlIGRvbid0IGhhdmVcbiAgICAgICAgICBhbiBlcXVhbGx5IG5lYXQgaWRpb20gZm9yIHRoZSBkdWFscyBvZiBzZXF1ZW5jZXMgKFtvZl9zZXF1ZW5jZV0gaXMgbXVjaCBsZXNzXG4gICAgICAgICAgZ2VuZXJhbCBiZWNhdXNlIGl0IGRvZXMgbm90IGFsbG93IHRoZSBzZXF1ZW5jZSB0byBiZSBwcm9kdWNlZCBhc3luY2hyb25vdXNseSkuICopXG4gICAgICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA6IHNpZ1xuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHR5cGUgKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICB2YWwgZW1wdHkgOiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgb2YgW2FkZF9leG5dIGlzIGFtb3J0aXplZCBjb25zdGFudC10aW1lIChpZiBbdF0gaXMgdXNlZFxuICAgICAgICAgICAgbGluZWFybHkpLCB3aXRoIGEgd29yc3QtY2FzZSBPKGxvZyhuKSkgdGltZS4gKilcbiAgICAgICAgdmFsIGFkZF9leG5cbiAgICAgICAgICA6ICAoJ2ssICd2LCAndykgdFxuICAgICAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAndykgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4ga2V5OidrXG4gICAgICAgICAgLT4gZGF0YTondlxuICAgICAgICAgIC0+ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBpcyBPKGxvZyhuKSkuICopXG4gICAgICAgIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ3cpIHQgLT4gKCdrLCAndiwgJ3cpIHRyZWVcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzM1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0XG4gICAgICA6ICAnayBIYXNoLmZvbGRlclxuICAgICAgLT4gJ3YgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgICgqKiBUbyBnZXQgYXJvdW5kIHRoZSB2YWx1ZSByZXN0cmljdGlvbiwgYXBwbHkgdGhlIGZ1bmN0b3IgYW5kIGluY2x1ZGUgaXQuIFlvdVxuICAgICAgICBjYW4gc2VlIGFuIGV4YW1wbGUgb2YgdGhpcyBpbiB0aGUgW1BvbHldIHN1Ym1vZHVsZSBiZWxvdy4gKilcbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgTWFwLiAqKVxuICBtb2R1bGUgUG9seSA6XG4gICAgU19wb2x5XG4gICAgd2l0aCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0ID0gKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgICBhbmQgdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdHJlZSA9XG4gICAgICAgICAgICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAoKiogQ3JlYXRlIGEgbWFwIGZyb20gYSB0cmVlIHVzaW5nIHRoZSBnaXZlbiBjb21wYXJhdG9yLiAqKVxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBFeHRyYWN0IGEgdHJlZSBmcm9tIGEgbWFwLiAqKVxuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbTWFwXX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IEFjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IEFjY2Vzc29yczJcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMyA9IEFjY2Vzc29yczNcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IENyZWF0b3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBDcmVhdG9yczJcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID1cbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLkdlbmVyaWNfcGhhbnRvbVxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgKCoqIFRoZSBbb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyIGFcbiAgICAgIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcblxuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG5cbiAgKCoqIG92ZXJyaWRlIFtDb250YWluZXJdJ3MgW21lbV0gKilcbiAgdmFsIG1lbSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiBib29sKSBvcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2EgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIG9wdGlvbnNcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSBuYW1lZCAtPiBvZl86KCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgbmFtZWQgLT4gKCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnQpIG9wdGlvbnNcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgZWx0IC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgZWx0IC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiBmOihbIGBMZWZ0IG9mICdhIGVsdCB8IGBSaWdodCBvZiAnYSBlbHQgfCBgQm90aCBvZiAnYSBlbHQgKiAnYSBlbHQgXSAtPiB1bml0KVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAnYSBlbHQgb3B0aW9uICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBncm91cF9ieVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgZWx0IC0+ICdhIGVsdCAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICdhIGVsdCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2tleSAtPiBpbnQpXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOignYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhIGVsdCwgJ2EgZWx0KSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMwXG5cbiAgdHlwZSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IHQgLT4gZWx0IC0+IHRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZWx0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiB0IC0+IHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6IHQgLT4gb2ZfOnQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogdCAtPiB0IC0+IGJvb2xcblxuICB0eXBlIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6IG5hbWVkIC0+IG9mXzpuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiBuYW1lZCAtPiBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+IGVsdCAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6IHQgLT4gaW5pdDonYiAtPiBmOihlbHQgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgdFxuICAgIC0+IHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mIGVsdCB8IGBSaWdodCBvZiBlbHQgfCBgQm90aCBvZiBlbHQgKiBlbHQgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gdFxuICB2YWwgcGFydGl0aW9uX3RmIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gdCAqIHRcbiAgdmFsIGVsZW1lbnRzIDogdCAtPiBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiB0IC0+IGVsdFxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiB0IC0+IGVsdFxuICB2YWwgY2hvb3NlIDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogdCAtPiBlbHRcbiAgdmFsIHNwbGl0IDogdCAtPiBlbHQgLT4gdCAqIGVsdCBvcHRpb24gKiB0XG4gIHZhbCBncm91cF9ieSA6IHQgLT4gZXF1aXY6KGVsdCAtPiBlbHQgLT4gYm9vbCkgLT4gdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdFxuICB2YWwgbnRoIDogdCAtPiBpbnQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdG9fdHJlZSA6IHQgLT4gdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOmVsdFxuICAgIC0+IHRcbiAgICAtPiBlbHQgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgdFxuICAgIC0+IGNvbXBhcmU6KGVsdCAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIHRcbiAgICAtPiBzZWdtZW50X29mOihlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gdFxuICAgIC0+IHRcbiAgICAtPiAoZWx0LCBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMVxuXG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogXyB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGludGVyIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAnYSB0IC0+ICdhIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiAnYSB0IC0+IG9mXzonYSB0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgdHlwZSAnYSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiAnYSBuYW1lZCAtPiBvZl86J2EgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGVxdWFsIDogJ2EgbmFtZWQgLT4gJ2EgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdiIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgZWxlbWVudHMgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogJ2EgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBzcGxpdCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgdmFsIGdyb3VwX2J5IDogJ2EgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgdG9fdHJlZSA6ICdhIHQgLT4gJ2EgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAnYSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzFfcGhhbnRvbV9pbnZhcmlhbnRcblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSBuYW1lZCAtPiBvZl86KCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIG5hbWVkIC0+ICgnYSwgJ2NtcCkgbmFtZWQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2IgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIHNwbGl0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuICB2YWwgZ3JvdXBfYnkgOiAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMV9waGFudG9tX2ludmFyaWFudFxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG4gIHZhbCBtZW0gOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHJlbW92ZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCB1bmlvblxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgaW50ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIGRpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaXNfc3Vic2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IG9mXzooJ2EsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGFyZV9kaXNqb2ludFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdHlwZSAoJ2EsICdjbXApIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gb2ZfOignYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhIC0+ICdhY2N1bSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gIHZhbCBpdGVyMlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gIHZhbCByZW1vdmVfaW5kZXhcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gaW50XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChOYW1lZCA6IFQyKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMwIChNIDogQWNjZXNzb3JzMCkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wLCAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXAsICdhIGVsdCBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2EsICdjbXAsIGxlbjppbnQgLT4gZjooaW50IC0+ICdhIGVsdCkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfLCAnYSBlbHQgbGlzdCAtPiAnYSBlbHQgbGlzdCkgb3B0aW9uc1xuXG4gICgqKiBUaGUgdHlwZXMgb2YgW21hcF0gYW5kIFtmaWx0ZXJfbWFwXSBhcmUgc3VidGxlLiAgVGhlIGlucHV0IHNldCwgWygnYSwgXykgc2V0XSxcbiAgICAgIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlc2UgZnVuY3Rpb25zIHRha2UgYSBzZXQgb2YgKmFueSogdHlwZSwgd2l0aCBhbnlcbiAgICAgIGNvbXBhcmF0b3IsIHdoaWxlIHRoZSBvdXRwdXQgc2V0LCBbKCdiLCAnY21wKSB0XSwgcmVmbGVjdHMgdGhhdCB0aGUgb3V0cHV0IHNldCBoYXNcbiAgICAgIHRoZSBwYXJ0aWN1bGFyIFsnY21wXSBvZiB0aGUgY3JlYXRpb24gZnVuY3Rpb24uICBUaGUgY29tcGFyYXRvciBjYW4gY29tZSBpbiBvbmUgb2ZcbiAgICAgIHRocmVlIHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBzZXQgbW9kdWxlIGlzIHVzZWRcblxuICAgICAgLSBbU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBjb21lcyBhcyBhbiBhcmd1bWVudFxuICAgICAgLSBbU2V0LlBvbHkubWFwXSAtLSBjb21wYXJhdG9yIGlzIHBvbHltb3JwaGljIGNvbXBhcmlzb25cbiAgICAgIC0gW0Zvby5TZXQubWFwXSAtLSBjb21wYXJhdG9yIGlzIFtGb28uY29tcGFyYXRvcl0gKilcbiAgdmFsIG1hcCA6ICgnYiwgJ2NtcCwgKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2IgZWx0KSAtPiAoJ2IsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBlbHQgb3B0aW9uKSAtPiAoJ2IsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlIHRcbiAgdHlwZSB0cmVlXG4gIHR5cGUgZWx0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIHVuaW9uX2xpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogZWx0IFNlcXVlbmNlLnQgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogZWx0IGFycmF5IC0+IHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6IGVsdCBhcnJheSAtPiB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+IGVsdCkgLT4gdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiBlbHQgbGlzdCAtPiBlbHQgbGlzdFxuICB2YWwgbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gZWx0KSAtPiB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gZWx0IG9wdGlvbikgLT4gdFxuICB2YWwgb2ZfdHJlZSA6IHRyZWUgLT4gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYSB0XG4gIHZhbCB1bmlvbl9saXN0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogJ2EgU2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICdhIGFycmF5IC0+ICdhIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogJ2EgbGlzdCAtPiAnYSBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgb2ZfdHJlZSA6ICdhIHRyZWUgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+ICdhKSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogJ2EgbGlzdCAtPiAnYSBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAoJ2IsICdjbXApIHRcbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGVtcHR5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCB1bmlvbl9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooaW50IC0+ICdhKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgdmFsIG1hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdiLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIHNldFxuICAgIC0+IGY6KCdhIC0+ICdiKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2IsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgc2V0XG4gICAgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl90cmVlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczAgKE0gOiBDcmVhdG9yczApID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMwXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IHRyZWVcbiAgICB3aXRoIHR5cGUgZWx0IDo9IGVsdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMxXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICgnZWx0LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0IDo9ICgnZWx0LCAnY21wKSB0XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0cyBpbnRlcm5hbCBpbnZhcmlhbnRzIG9mIHRoZSBzZXQgZGF0YSBzdHJ1Y3R1cmUuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Y1xuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBDcmVhdGVzIGFuIGVtcHR5IHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvci4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yIHRoYXQgY29udGFpbnMgb25seSB0aGUgcHJvdmlkZWRcbiAgICAgIGVsZW1lbnQuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSBzZXQuIFtPKDEpXS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuXG4gICgqKiBbaXNfZW1wdHkgdF0gaXMgW3RydWVdIGlmZiBbdF0gaXMgZW1wdHkuICBbTygxKV0uICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW21lbSB0IGFdIHJldHVybnMgW3RydWVdIGlmZiBbYV0gaXMgaW4gW3RdLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBib29sXG5cbiAgKCoqIFthZGQgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSBhZGRlZCB0byBbdF0sIG9yIHJldHVybnMgW3RdIGlmIFttZW0gdCBhXS5cbiAgICAgIFtPKGxvZyBuKV0uICopXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtyZW1vdmUgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSByZW1vdmVkIGZyb20gW3RdIGlmIFttZW0gdCBhXSwgb3IgcmV0dXJucyBbdF1cbiAgICAgIG90aGVyd2lzZS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiB0MSB0Ml0gcmV0dXJucyB0aGUgdW5pb24gb2YgdGhlIHR3byBzZXRzLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiBjIGxpc3RdIHJldHVybnMgdGhlIHVuaW9uIG9mIGFsbCB0aGUgc2V0cyBpbiBbbGlzdF0uICBUaGVcbiAgICAgIFtjb21wYXJhdG9yXSBhcmd1bWVudCBpcyByZXF1aXJlZCBmb3IgdGhlIGNhc2Ugd2hlcmUgW2xpc3RdIGlzIGVtcHR5LlxuICAgICAgW08obWF4KExpc3QubGVuZ3RoIGxpc3QsIG4gbG9nIG4pKV0sIHdoZXJlIFtuXSBpcyB0aGUgc3VtIG9mIHNpemVzIG9mIHRoZSBpbnB1dCBzZXRzLiAqKVxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ludGVyIHQxIHQyXSBjb21wdXRlcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHNldHMgW3QxXSBhbmQgW3QyXS4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2RpZmYgdDEgdDJdIGNvbXB1dGVzIHRoZSBzZXQgZGlmZmVyZW5jZSBbdDEgLSB0Ml0sIGkuZS4sIHRoZSBzZXQgY29udGFpbmluZyBhbGxcbiAgICAgIGVsZW1lbnRzIGluIFt0MV0gdGhhdCBhcmUgbm90IGluIFt0Ml0uICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDJdIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS4gSXQgaXNcbiAgICAgIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50IG9mXG4gICAgICBzdHJ1Y3R1cmUuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gICgqKiBbY29tcGFyZV9kaXJlY3QgdDEgdDJdIGNvbXBhcmVzIHRoZSBzZXRzIFt0MV0gYW5kIFt0Ml0uICBJdCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdFxuICAgICAgYXMgW2NvbXBhcmVdLCBidXQgdW5saWtlIGNvbXBhcmUsIGRvZXNuJ3QgcmVxdWlyZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIGZvciB0aGVcbiAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgc2V0LiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBzZXRzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIHMpLmNvbXBhcmVdIG9mIHRoZSBzZXQgW3NdIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2EgSGFzaC5mb2xkZXIgLT4gKCdhLCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZSB0d28gc2V0cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildICopXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbZXhpc3RzIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiB0aGVyZSBleGlzdHMgYW4gW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYV0uICBbTyhuKV0sXG4gICAgICBidXQgcmV0dXJucyBhcyBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW2YgYV0uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBbZm9yX2FsbCB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgZm9yIGFsbCBbYV0gaW4gW3RdLCBbZiBhXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXNcbiAgICAgIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbbm90IChmIGEpXS4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFtzdW0gdF0gcmV0dXJucyB0aGUgc3VtIG9mIFtmIHRdIGZvciBlYWNoIFt0XSBpbiB0aGUgc2V0LlxuICAgICAgW08obildLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIC0+ICdzdW0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBbZmluZCB0IGZdIHJldHVybnMgYW4gZWxlbWVudCBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIHRydWUsIHdpdGggbm8gZ3VhcmFudGVlIGFzXG4gICAgICB0byB3aGljaCBlbGVtZW50IGlzIHJldHVybmVkLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGUgZWxlbWVudCBpc1xuICAgICAgZm91bmQuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gICgqKiBMaWtlIFtmaW5kXSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG5cbiAgKCoqIFtudGggdCBpXSByZXR1cm5zIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IG9mIFt0XSwgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlXG4gICAgICBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbTm9uZV0gaWYgW2kgPCAwXSBvciBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gICgqKiBbcmVtb3ZlX2luZGV4IHQgaV0gcmV0dXJucyBhIHZlcnNpb24gb2YgW3RdIHdpdGggdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgcmVtb3ZlZCxcbiAgICAgIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZSBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbdF0gaWYgW2kgPCAwXSBvclxuICAgICAgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIHRydWUgaWZmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXS4gKilcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2FyZV9kaXNqb2ludCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIFtpc19lbXB0eSAoaW50ZXIgdDEgdDIpXSwgYnV0IGlzIG1vcmVcbiAgICAgIGVmZmljaWVudC4gKilcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbTmFtZWRdIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBvZiBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzZXRzLiAgQVxuICAgICAgW05hbWVkLnRdIGlzIGEgcmVjb3JkIG9mIGEgc2V0IGFuZCBhIG5hbWUsIHdoZXJlIHRoZSBuYW1lIGlzIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMsXG4gICAgICBhbmQgW05hbWVkLmlzX3N1YnNldF0gYW5kIFtOYW1lZC5lcXVhbF0gdmFsaWRhdGUgc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzXG4gICAgICByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGZvciwgZS5nLixcbiAgICAgIHtbXG4gICAgICAgIE5hbWVkLmlzX3N1YnNldCB7IHNldCA9IHNldDE7IG5hbWUgPSBcInNldDFcIiB9IH5vZl86e3NldCA9IHNldDI7IG5hbWUgPSBcInNldDJcIiB9XG4gICAgICBdfVxuXG4gICAgICBsb29rcyBsaWtlXG4gICAgICB7dlxuICAgICAgICAoXCJzZXQxIGlzIG5vdCBhIHN1YnNldCBvZiBzZXQyXCIgKGludmFsaWRfZWxlbWVudHMgKC4uLmVsZW1lbnRzIG9mIHNldDEgLSBzZXQyLi4uKSkpXG4gICAgIHZ9XG5cbiAgICAgIHNvIFtuYW1lXSBzaG91bGQgYmUgYSBub3VuIHBocmFzZSB0aGF0IGRvZXNuJ3Qgc291bmQgYXdrd2FyZCBpbiB0aGUgYWJvdmUgZXJyb3JcbiAgICAgIG1lc3NhZ2UuICBFdmVuIHRob3VnaCBpdCBhZGRzIHZlcmJvc2l0eSwgY2hvb3NpbmcgW25hbWVdcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHBocmFzZVxuICAgICAgXCJ0aGUgc2V0IG9mXCIgb2Z0ZW4gbWFrZXMgdGhlIGVycm9yIG1lc3NhZ2Ugc291bmQgbW9yZSBuYXR1cmFsLlxuICAqKVxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyBzZXQgOiAoJ2EsICdjbXApIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXSBhbmQgYVxuICAgICAgICBodW1hbi1yZWFkYWJsZSBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGVxdWFsIHRvIFt0Ml0gYW5kIGEgaHVtYW4tcmVhZGFibGVcbiAgICAgICAgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzdGFibGVfZGVkdXBfbGlzdF0gaXMgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgW0xpc3RdIG1vZHVsZSBiZWNhdXNlIHRoZVxuICAgICAgaW1wbGVtZW50YXRpb24gcmVsaWVzIGNydWNpYWxseSBvbiBzZXRzLCBhbmQgYmVjYXVzZSBkb2luZyBzbyBhbGxvd3Mgb25lIHRvIGF2b2lkIHVzZXNcbiAgICAgIG9mIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYnkgaW5zdGFudGlhdGluZyB0aGUgZnVuY3RvciBhdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuICAgICAgb2YgW0NvbXBhcmF0b3JdIGFuZCB1c2luZyB0aGUgcmVzdWx0aW5nIFtzdGFibGVfZGVkdXBfbGlzdF0uICopXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXykgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAoKiogW21hcCBjIHQgfmZdIHJldHVybnMgYSBuZXcgc2V0IGNyZWF0ZWQgYnkgYXBwbHlpbmcgW2ZdIHRvIGV2ZXJ5IGVsZW1lbnQgaW5cbiAgICAgIFt0XS4gIFRoZSByZXR1cm5lZCBzZXQgaXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIFtjb21wYXJhdG9yXS4gIFtPKG4gbG9nIG4pXS4gKilcbiAgdmFsIG1hcCA6ICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIHshbWFwfSwgZXhjZXB0IGVsZW1lbnRzIGZvciB3aGljaCBbZl0gcmV0dXJucyBbTm9uZV0gd2lsbCBiZSBkcm9wcGVkLiAgKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOignYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3QuICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG5cbiAgKCoqIExpa2UgeyFmb2xkfSwgZXhjZXB0IHRoYXQgaXQgZ29lcyBmcm9tIHRoZSBsYXJnZXN0IHRvIHRoZSBzbWFsbGVzdCBlbGVtZW50LiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYSAtPiAnYWNjdW0gLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogW2l0ZXIgdCB+Zl0gY2FsbHMgW2ZdIG9uIGV2ZXJ5IGVsZW1lbnQgb2YgW3RdLCBnb2luZyBpbiBvcmRlciBmcm9tIHRoZSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdC4gICopXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZSB0d28gc2V0cyBzaWRlIGJ5IHNpZGUuICBDb21wbGV4aXR5IGlzIFtPKG0rbildIHdoZXJlIFttXSBhbmQgW25dIGFyZSB0aGUgc2l6ZXNcbiAgICAgIG9mIHRoZSB0d28gaW5wdXQgc2V0cy4gIEFzIGFuIGV4YW1wbGUsIHdpdGggdGhlIGlucHV0cyBbMDsgMV0gYW5kIFsxOyAyXSwgW2ZdIHdpbGwgYmVcbiAgICAgIGNhbGxlZCB3aXRoIFtgTGVmdCAwXTsgW2BCb3RoICgxLCAxKV07IGFuZCBbYFJpZ2h0IDJdLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFNhbWUgYXMgeyF0b19saXN0fS4gKilcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtaW5fZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBSZXR1cm5zIHRoZSBsYXJnZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICAqKVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1heF9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIHJldHVybnMgYW4gYXJiaXRyYXJ5IGVsZW1lbnQsIG9yIFtOb25lXSBpZiB0aGUgc2V0IGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshY2hvb3NlfSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBbc3BsaXQgdCB4XSBwcm9kdWNlcyBhIHRyaXBsZSBbKHQxLCBtYXliZV94LCB0MildIHdoZXJlIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50c1xuICAgICAgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSwgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsXG4gICAgICB0byBbeF0sIGFuZCBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIGlmIFtlcXVpdl0gaXMgYW4gZXF1aXZhbGVuY2UgcHJlZGljYXRlLCB0aGVuIFtncm91cF9ieSBzZXQgfmVxdWl2XSBwcm9kdWNlcyBhIGxpc3RcbiAgICAgIG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMgKGkuZS4sIGEgc2V0LXRoZW9yZXRpYyBxdW90aWVudCkuICBFLmcuLFxuXG4gICAgICB7W1xuICAgICAgICBsZXQgY2hhcnMgPSBTZXQub2ZfbGlzdCBbJ0EnOyAnYSc7ICdiJzsgJ2MnXSBpblxuICAgICAgICBsZXQgZXF1aXYgYyBjJyA9IENoYXIuZXF1YWwgKENoYXIudXBwZXJjYXNlIGMpIChDaGFyLnVwcGVyY2FzZSBjJykgaW5cbiAgICAgICAgZ3JvdXBfYnkgY2hhcnMgfmVxdWl2XG4gICAgICBdfVxuXG4gICAgICBwcm9kdWNlczpcblxuICAgICAge1tcbiAgICAgICAgW1NldC5vZl9saXN0IFsnQSc7J2EnXTsgU2V0LnNpbmdsZXRvbiAnYic7IFNldC5zaW5nbGV0b24gJ2MnXVxuICAgICAgXX1cblxuICAgICAgW2dyb3VwX2J5XSBydW5zIGluIE8obl4yKSB0aW1lLCBzbyBpZiB5b3UgaGF2ZSBhIGNvbXBhcmlzb24gZnVuY3Rpb24sIGl0J3MgdXN1YWxseVxuICAgICAgbXVjaCBmYXN0ZXIgdG8gdXNlIFtTZXQub2ZfbGlzdF0uICopXG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiB0aGUgc2VnbWVudHMgYXNcbiAgICAgIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGxlZnQgc2VnbWVudCxcbiAgICAgIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC4gIEl0IHJldHVybnNcbiAgICAgIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBQcm9kdWNlcyB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBzZXRzIGJldHdlZW4gW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2xlc3Nfb3JfZXF1YWxfdG9dIGluIFtvcmRlcl0sIG5vdGluZyB3aGV0aGVyIGVhY2ggZWxlbWVudCBhcHBlYXJzIGluIHRoZSBsZWZ0IHNldCxcbiAgICAgIHRoZSByaWdodCBzZXQsIG9yIGJvdGguICBJbiB0aGUgYm90aCBjYXNlLCBib3RoIGVsZW1lbnRzIGFyZSByZXR1cm5lZCwgaW4gY2FzZSB0aGVcbiAgICAgIGNhbGxlciBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0byB0aGUgc2V0cycgY29tcGFyYXRvci4gIFJ1bnNcbiAgICAgIGluIE8obGVuZ3RoIHQgKyBsZW5ndGggdCcpLiAqKVxuICBtb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgICAgfCBMZWZ0IG9mICdhXG4gICAgICB8IFJpZ2h0IG9mICdiXG4gICAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSBTZXQuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IChTdHJpbmcudCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtTZXQuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzLFxuICAgICAgaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS4gKilcbiAgbW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBTZXQuICopXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICgqKiBVc2luZyBjb21wYXJhdG9yIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtTZXRdLCBleGNlcHQgdGhlIGZ1bmN0aW9uc1xuICAgICAgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XSB3aGVyZSB0aGUgZnVuY3Rpb25zIGF0IHRoZSB0b3BsZXZlbCBvZlxuICAgICAgW1NldF0gdGFrZXMgYSBbKCdlbHQsICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2VsdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgICgqKiBBIFtUcmVlLnRdIGNvbnRhaW5zIGp1c3QgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBhIHNldCBpcyBiYXNlZCBvbiwgd2l0aG91dFxuICAgICAgICAgIGluY2x1ZGluZyB0aGUgY29tcGFyYXRvci4gIEFjY29yZGluZ2x5LCBhbnkgb3BlcmF0aW9uIG9uIGEgW1RyZWUudF0gbXVzdCBhbHNvIHRha2VcbiAgICAgICAgICBhcyBhbiBhcmd1bWVudCB0aGUgY29ycmVzcG9uZGluZyBjb21wYXJhdG9yLiAqKVxuICAgICAgdHlwZSAoJ2EsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICAgICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgICAgICB7IHRyZWUgOiAoJ2EsICdjbXApIHRcbiAgICAgICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgICB9XG5cbiAgICAgICAgdmFsIGlzX3N1YnNldFxuICAgICAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiBvZl86KCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgICAgdmFsIGVxdWFsXG4gICAgICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcbiAgICAgICAgd2l0aCBtb2R1bGUgTmFtZWQgOj0gTmFtZWRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXykgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzMlxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnZWx0IEhhc2guZm9sZGVyIC0+ICgnZWx0LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW1NldF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBBY2Nlc3NvcnMwXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBBY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBBY2Nlc3NvcnMyXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yczAgPSBDcmVhdG9yczBcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gQ3JlYXRvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IENyZWF0b3JzMlxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMlxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9XG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCkpXG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gIGxldCBiYWwgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgobCk+aChyKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIGxydiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBsbCk7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBFbXB0eSkgbHJ2IChjcmVhdGUgRW1wdHkgdiByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChyKT5oKGwpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgcmx2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IHJyKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBFbXB0eSkgcmx2IChjcmVhdGUgRW1wdHkgcnYgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgaWYgaCA9IDEgdGhlbiBMZWFmIHYgZWxzZSBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgZXhjZXB0aW9uIFNhbWVcblxuICBsZXQgYWRkIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIHJhaXNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGNyZWF0ZSAoTGVhZiB4KSB2IEVtcHR5XG4gICAgICAgIGVsc2UgY3JlYXRlIEVtcHR5IHYgKExlYWYgeClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByYWlzZSBTYW1lIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmRcbiAgICAgci4gKilcbiAgbGV0IHJlYyBqb2luIGwgdiByIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBhZGQgciB2IH5jb21wYXJlX2VsdFxuICAgIHwgXywgRW1wdHkgLT4gYWRkIGwgdiB+Y29tcGFyZV9lbHRcbiAgICB8IExlYWYgbHYsIF8gLT4gYWRkIChhZGQgciB2IH5jb21wYXJlX2VsdCkgbHYgfmNvbXBhcmVfZWx0XG4gICAgfCBfLCBMZWFmIHJ2IC0+IGFkZCAoYWRkIGwgdiB+Y29tcGFyZV9lbHQpIHJ2IH5jb21wYXJlX2VsdFxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgbGgsIF8pLCBOb2RlIChybCwgcnYsIHJyLCByaCwgXykgLT5cbiAgICAgIGlmIGxoID4gcmggKyAyXG4gICAgICB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIgfmNvbXBhcmVfZWx0KVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsIH5jb21wYXJlX2VsdCkgcnYgcnJcbiAgICAgIGVsc2UgY3JlYXRlIGwgdiByXG4gIDs7XG5cbiAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKEVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGFjYyA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AuQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgdmFsdWUgLT4gZiBhY2MgdmFsdWVcbiAgICAgIHwgTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgbGVmdCBhY2Mgd2l0aFxuICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgYWNjIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgICAgIHwgQ29udGludWUgYSAtPiBmb2xkX3VudGlsX2hlbHBlciB+ZiByaWdodCBhKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgaW5pdCB3aXRoXG4gICAgfCBDb250aW51ZSB4IC0+IGZpbmlzaCB4XG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGpvaW4gdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpIH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHNwbGl0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgU29tZSB2LCBFbXB0eVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gRW1wdHksIE5vbmUsIExlYWYgdlxuICAgICAgICBlbHNlIExlYWYgdiwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBsLCBTb21lIHYsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbGwsIG1heWJlX2VsdCwgcmwgPSBzcGxpdCBsIGluXG4gICAgICAgICAgbGwsIG1heWJlX2VsdCwgam9pbiBybCB2IHIgfmNvbXBhcmVfZWx0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIgfmNvbXBhcmVfZWx0LCBtYXliZV9lbHQsIHJyKVxuICAgIGluXG4gICAgc3BsaXQgdFxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgU2FtZVxuICAgICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID0gMCB0aGVuIEVtcHR5IGVsc2UgcmFpc2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgciBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0Ol8gPVxuICAgIGxldCByZWMgYXV4IHQgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIHJhaXNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsIGkpIHYgclxuICAgICAgICBlbHNlIGJhbCBsIHYgKGF1eCByIChpIC0gbF9zaXplIC0gMSkpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgaSB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgdW5pb24gczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgICAgICB8IExlYWYgdjEsIF8gLT4gdW5pb24gKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSBzMlxuICAgICAgICB8IF8sIExlYWYgdjIgLT4gdW5pb24gczEgKE5vZGUgKEVtcHR5LCB2MiwgRW1wdHksIDEsIDEpKVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIGgxLCBfKSwgTm9kZSAobDIsIHYyLCByMiwgaDIsIF8pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDJcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDFcbiAgICAgICAgICAgIHRoZW4gYWRkIHMxIHYyIH5jb21wYXJlX2VsdFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBsMiwgXywgcjIgPSBzcGxpdCBzMiB2MSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMikgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgdW5pb24gczEgczJcbiAgOztcblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSB4cyA9XG4gICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBMaXN0LmZvbGQgeHMgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhYyB4IC0+IHVuaW9uIGFjICh0b190cmVlIHgpIH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgaW50ZXIgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSAtPlxuICAgICAgICAgIGlmIG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdCB0aGVuIHNpbmdsZXRvbiBlbHNlIEVtcHR5XG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMikgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgIHwgbDIsIFNvbWUgdjEsIHIyIC0+IGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgfCBsMiwgU29tZSBfLCByMiAtPiBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKSB+Y29tcGFyZV9lbHQpKVxuICAgIGluXG4gICAgZGlmZiBzMSBzMlxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnYSwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdhICogJ2EgdHJlZSAqICgnYSwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHMgKGUgOiAoXywgaW5jcmVhc2luZykgdCkgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCBzIChlIDogKF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V0IHMgOiAoXywgaW5jcmVhc2luZykgdCA9IGNvbnMgcyBFbmRcbiAgICBsZXQgb2Zfc2V0X3JpZ2h0IHMgOiAoXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgcyBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgciwgXywgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgZTEgZTIgPVxuICAgICAgbGV0IHJlYyBsb29wIGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgdGhlbiBsb29wIGUxIGUyXG4gICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIGUxIGUyXG4gICAgOztcblxuICAgIGxldCByZWMgaXRlciB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiAoKVxuICAgICAgfCBNb3JlIChhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBmIGE7XG4gICAgICAgIGl0ZXIgKGNvbnMgdHJlZSBlbnVtKSB+ZlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcjIgY29tcGFyZV9lbHQgdDEgdDIgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAoKVxuICAgICAgICB8IEVuZCwgXyAtPiBpdGVyIHQyIH5mOihmdW4gYSAtPiBmIChgUmlnaHQgYSkpXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKVxuICAgICAgICB8IE1vcmUgKGExLCB0cmVlMSwgZW51bTEpLCBNb3JlIChhMiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgQm90aCAoYTEsIGEyKSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBMZWZ0IGExKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgZiAoYFJpZ2h0IGEyKTtcbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA6ICgoXywgXykgRWl0aGVyLnQsIF8pIFNlcXVlbmNlLlN0ZXAudCA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBEb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChlbHQsIHRyZWUsIGVudW0pIC0+IFlpZWxkIChTZWNvbmQgZWx0LCAoRW5kLCBjb25zIHRyZWUgZW51bSkpXG4gICAgICAgIHwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSwgRW5kIC0+IFlpZWxkIChGaXJzdCBlbHQsIChjb25zIHRyZWUgZW51bSwgRW5kKSlcbiAgICAgICAgfCAoTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChhMiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNraXAgbmV4dF9zdGF0ZSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gWWllbGQgKEZpcnN0IGExLCAoY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQpKVxuICAgICAgICAgIGVsc2UgWWllbGQgKFNlY29uZCBhMiwgKGxlZnQsIGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKGssIEVudW0uY29ucyB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIChrLCBFbnVtLmNvbnNfcmlnaHQgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMClcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB4ID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgICAgIHQnXG4gICAgPVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQpXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCcpXG4gICAgICB+Y29tcGFyZTpcbiAgICAgICAgKG1hdGNoIG9yZGVyIHdpdGhcbiAgICAgICAgIHwgYEluY3JlYXNpbmcgLT4gY29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB8IGBEZWNyZWFzaW5nIC0+IEZuLmZsaXAgY29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHMxIHMyIH5jb21wYXJlX2VsdCA9IEVudW0uaXRlcjIgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IHJlYyBmb2xkIHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiBhY2N1IHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpIHYpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfZWxlbSBzdGF0ZSB0ID1cbiAgICBmb2xkIHQgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSkgfmY6aGFzaF9mb2xkX2VsZW1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIHYgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIHYgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZvcl9hbGwgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiAmJiBmb3JfYWxsIH5mOnAgbCAmJiBmb3JfYWxsIH5mOnAgclxuICA7O1xuXG4gIGxldCByZWMgZXhpc3RzIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2IHx8IGV4aXN0cyB+ZjpwIGwgfHwgZXhpc3RzIH5mOnAgclxuICA7O1xuXG4gIGxldCBmaWx0ZXIgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPiBpZiBwIHYgdGhlbiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdCBlbHNlIGFjY3VcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdCAoZmlsdCAoaWYgcCB2IHRoZW4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQgZWxzZSBhY2N1KSBsKSByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHNcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0XG4gICAgICAgICAgKGZpbHRcbiAgICAgICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHNcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT4gaWYgcCB2IHRoZW4gYWRkIHQgdiB+Y29tcGFyZV9lbHQsIGYgZWxzZSB0LCBhZGQgZiB2IH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBwYXJ0IChwYXJ0IChpZiBwIHYgdGhlbiBhZGQgdCB2IH5jb21wYXJlX2VsdCwgZiBlbHNlIHQsIGFkZCBmIHYgfmNvbXBhcmVfZWx0KSBsKSByXG4gICAgaW5cbiAgICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcbiAgOztcblxuICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiB2IDo6IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG4gIDs7XG5cbiAgbGV0IGVsZW1lbnRzIHMgPSBlbGVtZW50c19hdXggW10gc1xuXG4gIGxldCBjaG9vc2UgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgY2hvb3NlX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU2V0LmNob29zZV9leG46IGVtcHR5IHNldFwiKSBpblxuICAgIGxldCBjaG9vc2VfZXhuIHQgPVxuICAgICAgbWF0Y2ggY2hvb3NlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGNob29zZV9leG5cbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsc3QgfmNvbXBhcmVfZWx0ID1cbiAgICBMaXN0LmZvbGQgbHN0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSB+Y29tcGFyZV9lbHQgPVxuICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgcyA9IGVsZW1lbnRzIHNcblxuICBsZXQgb2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQgPVxuICAgIEFycmF5LmZvbGQgYSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICAoKiBmYXN0ZXIgYnV0IGVxdWl2YWxlbnQgdG8gW0FycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdCldICopXG4gIGxldCB0b19hcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBbfHxdXG4gICAgfCBMZWFmIHYgLT4gW3wgdiB8XVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGxldCByZXMgPSBBcnJheS5jcmVhdGUgfmxlbjpzIHYgaW5cbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgICgqIEludmFyaWFudDogb24gZW50cnkgYW5kIG9uIGV4aXQgdG8gW2xvb3BdLCAhcG9zX3JlZiBpcyB0aGUgbmV4dFxuICAgICAgICAgICBhdmFpbGFibGUgY2VsbCBpbiB0aGUgYXJyYXkuICopXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZlxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgICAgbG9vcCBsO1xuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgICAgIGxvb3AgclxuICAgICAgaW5cbiAgICAgIGxvb3AgbDtcbiAgICAgICgqIHJlcy4oIXBvc19yZWYpIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKGJ5IEFycmF5LmNyZWF0ZSB+bGVuOmFib3ZlKS4gKilcbiAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgIGxvb3AgcjtcbiAgICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiB+Y29tcGFyZV9lbHQgPSBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgKGYgeCkgfmNvbXBhcmVfZWx0KVxuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBsb29wIHNldCBlcXVpdl9jbGFzc2VzID1cbiAgICAgIGlmIGlzX2VtcHR5IHNldFxuICAgICAgdGhlbiBlcXVpdl9jbGFzc2VzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHggPSBjaG9vc2VfZXhuIHNldCBpblxuICAgICAgICBsZXQgZXF1aXZfeCwgbm90X2VxdWl2X3ggPVxuICAgICAgICAgIHBhcnRpdGlvbl90ZiBzZXQgfmY6KGZ1biBlbHQgLT4gcGh5c19lcXVhbCB4IGVsdCB8fCBlcXVpdiB4IGVsdCkgfmNvbXBhcmVfZWx0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Agbm90X2VxdWl2X3ggKGVxdWl2X3ggOjogZXF1aXZfY2xhc3NlcykpXG4gICAgaW5cbiAgICBsb29wIHNldCBbXVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIFNvbWUgdlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGZpbmQgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kIHIgfmZcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICA7O1xuXG4gIGxldCByZWMgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgKG1hdGNoIGYgdiB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggZmluZF9tYXAgbCB+ZiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIHIgfmZcbiAgICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNldC5maW5kX2V4biBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGVsZW1lbnRcIlxuICAgIHwgU29tZSBlIC0+IGVcbiAgOztcblxuICBsZXQgcmVjIG50aCB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGkgPSAwIHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGlmIGkgPj0gc1xuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gbnRoIGwgaSBlbHNlIGlmIGMgPSAwIHRoZW4gU29tZSB2IGVsc2UgbnRoIHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgbGVmdG92ZXJzIGFscmVhZHlfc2VlbiA9XG4gICAgICBtYXRjaCB4cyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGxlZnRvdmVyc1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBtZW0gYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdFxuICAgICAgICB0aGVuIGxvb3AgdGwgbGVmdG92ZXJzIGFscmVhZHlfc2VlblxuICAgICAgICBlbHNlIGxvb3AgdGwgKGhkIDo6IGxlZnRvdmVycykgKGFkZCBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0KVxuICAgIGluXG4gICAgbG9vcCB4cyBbXSBlbXB0eVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgbHN0IC0+XG4gICAgICBsZXQgZWx0X2xzdCA9IExpc3QubWFwIGxzdCB+ZjphX29mX3NleHAgaW5cbiAgICAgIGxldCBzZXQgPSBvZl9saXN0IGVsdF9sc3QgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBsZW5ndGggc2V0ID0gTGlzdC5sZW5ndGggbHN0XG4gICAgICB0aGVuIHNldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZXQgPSByZWYgZW1wdHkgaW5cbiAgICAgICAgTGlzdC5pdGVyMl9leG4gbHN0IGVsdF9sc3QgfmY6KGZ1biBlbF9zZXhwIGVsIC0+XG4gICAgICAgICAgaWYgbWVtICFzZXQgZWwgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCIgZWxfc2V4cFxuICAgICAgICAgIGVsc2Ugc2V0IDo9IGFkZCAhc2V0IGVsIH5jb21wYXJlX2VsdCk7XG4gICAgICAgIGFzc2VydCBmYWxzZSlcbiAgICB8IHNleHAgLT4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gZWwgYWNjIC0+IHNleHBfb2ZfYSBlbCA6OiBhY2MpKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHRyZWUgOiAnYSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgIGxldCBpc19zdWJzZXQgKHN1YnNldCA6IF8gdCkgfm9mXzooc3VwZXJzZXQgOiBfIHQpIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IGludmFsaWRfZWxlbWVudHMgPSBkaWZmIHN1YnNldC50cmVlIHN1cGVyc2V0LnRyZWUgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxubGV0IGNvbXBhcmVfZWx0IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdC50cmVlXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdC50cmVlXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHQudHJlZVxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0LnRyZWVcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdC50cmVlXG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdC50cmVlXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBhZGQgdCBhID0gbGlrZSB0IChUcmVlMC5hZGQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHJlbW92ZSB0IGEgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgdW5pb24gdDEgdDIgPSBsaWtlIHQxIChUcmVlMC51bmlvbiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBpbnRlciB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmludGVyIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfZWx0IHQxKSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQudHJlZSB+b2ZfOm9mXy50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcblxuICBsZXQgYXJlX2Rpc2pvaW50IHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgc2V0IDogKCdhLCAnY21wKSB0XG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgIGxldCB0b19uYW1lZF90cmVlIHsgc2V0OyBuYW1lIH0gPSB7IFRyZWUwLk5hbWVkLnRyZWUgPSBzZXQudHJlZTsgbmFtZSB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IChzdWJzZXQgOiAoXywgXykgdCkgfm9mXzooc3VwZXJzZXQgOiAoXywgXykgdCkgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZV90LCBsaWtlIHQgdHJlZV9mXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCBiLCB0cmVlMiA9IFRyZWUwLnNwbGl0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGIsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9XG4gICAgTGlzdC5tYXAgKFRyZWUwLmdyb3VwX2J5IHQudHJlZSB+ZXF1aXYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSkgfmY6KGxpa2UgdClcbiAgOztcblxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+aW5pdCB+ZlxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBmaWx0ZXIgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBwYXJ0aXRpb25fdGYgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB+Y29tcGFyYXRvciB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcblxubW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBlbHQgY21wKVxuICAgICAgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvciBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpXG4gIDogKGVsdCwgXykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBlbHQpIHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGVcbjs7XG5cbmxldCBoYXNoX21fX3QgZm9sZGVyIHQgPVxuICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfbV9fdCBmb2xkZXIgKEhhc2guY3JlYXRlICgpKSB0IGluXG4gIEhhc2guZ2V0X2hhc2hfdmFsdWUgc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgc2V0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdHJlZSA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgdHlwZSBub25yZWMgJ2VsdCBuYW1lZCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IHVuaW9uX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvciBhXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX3NlcXVlbmNlIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG1hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9yZWZcbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9IGVxdWFsX3JlZlxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gcmVmX29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfcmVmXG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gJ2EgdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSB0IC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IFtdIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEyXyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDExXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2ZfaW50IG1hc2tfXzAwN18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hc2tcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDAyX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA2XyA9IHNleHBfb2ZfaW50IGZyb250X18wMDVfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibnVtX211dGF0aW9uc1wiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubW9kdWxlIHR5cGUgUyA9IFF1ZXVlX2ludGYuU1xuXG5sZXQgaW5jX251bV9tdXRhdGlvbnMgdCA9IHQubnVtX211dGF0aW9ucyA8LSB0Lm51bV9tdXRhdGlvbnMgKyAxXG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcbmxldCBlbHRzX2luZGV4IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2tcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX2lzX3NldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2lzX3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSBhID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKSBhXG5sZXQgdW5zYWZlX3Vuc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcblxubGV0IGNoZWNrX2luZGV4X2V4biB0IGkgPVxuICBpZiBpIDwgMCB8fCBpID49IHQubGVuZ3RoXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlF1ZXVlIGluZGV4IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgWyBcImluZGV4XCIsIGkgfD4gSW50LnNleHBfb2ZfdDsgXCJsZW5ndGhcIiwgdC5sZW5ndGggfD4gSW50LnNleHBfb2ZfdCBdKVxuOztcblxubGV0IGdldCB0IGkgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICB1bnNhZmVfZ2V0IHQgaVxuOztcblxubGV0IHNldCB0IGkgYSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIHVuc2FmZV9zZXQgdCBpIGFcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5sZXQgbGVuZ3RoIHsgbGVuZ3RoOyBfIH0gPSBsZW5ndGhcblxubGV0IGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMgPVxuICBpZiB0Lm51bV9tdXRhdGlvbnMgPD4gbnVtX211dGF0aW9uc1xuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJtdXRhdGlvbiBvZiBxdWV1ZSBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgICAgIFsgXCJcIiwgdCB8PiBzZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgXSlcbjs7XG5cbmxldCBjb21wYXJlID1cbiAgbGV0IHJlYyB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IHBvcyB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyID1cbiAgICBtYXRjaCBwb3MgPSBsZW4xLCBwb3MgPSBsZW4yIHdpdGhcbiAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgbGV0IHggPSBjb21wYXJlX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgfCAwIC0+IHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgKHBvcyArIDEpIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDJcbiAgICAgICB8IG4gLT4gbilcbiAgaW5cbiAgZnVuIGNvbXBhcmVfZWx0IHQxIHQyIC0+XG4gICAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICAgIHRoZW4gMFxuICAgIGVsc2VcbiAgICAgIHVuc2FmZV9jb21wYXJlX2Zyb21cbiAgICAgICAgY29tcGFyZV9lbHRcbiAgICAgICAgMFxuICAgICAgICB+dDFcbiAgICAgICAgfnQyXG4gICAgICAgIH5sZW4xOnQxLmxlbmd0aFxuICAgICAgICB+bGVuMjp0Mi5sZW5ndGhcbiAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgZXF1YWwgPVxuICBsZXQgcmVjIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCBwb3MgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuID1cbiAgICBwb3MgPSBsZW5cbiAgICB8fFxuICAgIGxldCBiID0gZXF1YWxfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgIGIgJiYgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW5cbiAgaW5cbiAgZnVuIGVxdWFsX2VsdCB0MSB0MiAtPlxuICAgIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB8fFxuICAgIGxldCBsZW4xID0gdDEubGVuZ3RoIGluXG4gICAgbGV0IGxlbjIgPSB0Mi5sZW5ndGggaW5cbiAgICBsZW4xID0gbGVuMlxuICAgICYmIHVuc2FmZV9lcXVhbF9mcm9tXG4gICAgICAgICBlcXVhbF9lbHRcbiAgICAgICAgIDBcbiAgICAgICAgIH50MVxuICAgICAgICAgfnQyXG4gICAgICAgICB+bGVuOmxlbjFcbiAgICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCB7IG51bV9tdXRhdGlvbnM7IG1hc2sgPSBfOyBlbHRzOyBmcm9udDsgbGVuZ3RoIH0gPSB0IGluXG4gIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gIGFzc2VydCAoZnJvbnQgPCBjYXBhY2l0eSB0KTtcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBhc3NlcnQgKGNhcGFjaXR5ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgYXNzZXJ0IChjYXBhY2l0eSA+PSAxKTtcbiAgYXNzZXJ0IChJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gIGFzc2VydCAobGVuZ3RoID49IDApO1xuICBhc3NlcnQgKGxlbmd0aCA8PSBjYXBhY2l0eSk7XG4gIGZvciBpID0gMCB0byBjYXBhY2l0eSAtIDEgZG9cbiAgICBpZiBpIDwgdC5sZW5ndGhcbiAgICB0aGVuIChcbiAgICAgIGludmFyaWFudF9hICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zKVxuICAgIGVsc2UgYXNzZXJ0IChub3QgKHVuc2FmZV9pc19zZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSA/Y2FwYWNpdHkgKCkgOiBhIHQgPVxuICBsZXQgY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gMVxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJjYW5ub3QgaGF2ZSBxdWV1ZSB3aXRoIG5lZ2F0aXZlIGNhcGFjaXR5XCJcbiAgICAgICAgICAgICBbIFwiY2FwYWNpdHlcIiwgY2FwYWNpdHkgfD4gSW50LnNleHBfb2ZfdCBdKVxuICAgICAgZWxzZSBpZiBjYXBhY2l0eSA9IDBcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSBJbnQuY2VpbF9wb3cyIGNhcGFjaXR5XG4gIGluXG4gIHsgbnVtX211dGF0aW9ucyA9IDBcbiAgOyBmcm9udCA9IDBcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgbGVuZ3RoID0gMFxuICA7IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46Y2FwYWNpdHlcbiAgfVxuOztcblxubGV0IGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QgPVxuICBhc3NlcnQgKHNyYy5sZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBkc3QpO1xuICBsZXQgZnJvbnRfbGVuID0gSW50Lm1pbiBzcmMubGVuZ3RoIChjYXBhY2l0eSBzcmMgLSBzcmMuZnJvbnQpIGluXG4gIGxldCByZXN0X2xlbiA9IHNyYy5sZW5ndGggLSBmcm9udF9sZW4gaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpmcm9udF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczpzcmMuZnJvbnQgfmRzdCB+ZHN0X3BvczowO1xuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOnJlc3RfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmZyb250X2xlblxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IGRlc2lyZWRfY2FwYWNpdHkgPVxuICAoKiBXZSBhbGxvdyBhcmd1bWVudHMgbGVzcyB0aGFuIDEgdG8gW3NldF9jYXBhY2l0eV0sIGJ1dCB0cmFuc2xhdGUgdGhlbSB0byAxIHRvIHNpbXBsaWZ5XG4gICAgIHRoZSBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZSBhcnJheSBsZW5ndGggYmVpbmcgYSBwb3dlciBvZiAyLiAqKVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgbmV3X2NhcGFjaXR5ID0gSW50LmNlaWxfcG93MiAobWF4IDEgKG1heCBkZXNpcmVkX2NhcGFjaXR5IHQubGVuZ3RoKSkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHRcbiAgdGhlbiAoXG4gICAgbGV0IGRzdCA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gICAgdC5mcm9udCA8LSAwO1xuICAgIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICAgIHQuZWx0cyA8LSBkc3QpXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHkgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBkZXF1ZXVlX25vbmVtcHR5IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfbm9uZW1wdHkgdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgZnJvbnRfbm9uZW1wdHkgdFxubGV0IGxhc3QgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAobGFzdF9ub25lbXB0eSB0KVxubGV0IGxhc3RfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGxhc3Rfbm9uZW1wdHkgdFxuXG5sZXQgY2xlYXIgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICB1bnNhZmVfdW5zZXQgdCBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwO1xuICAgIHQuZnJvbnQgPC0gMClcbjs7XG5cbmxldCBibGl0X3RyYW5zZmVyIH5zcmMgfmRzdCA/bGVuICgpID1cbiAgaW5jX251bV9tdXRhdGlvbnMgc3JjO1xuICBpbmNfbnVtX211dGF0aW9ucyBkc3Q7XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IHNyYy5sZW5ndGhcbiAgICB8IFNvbWUgbGVuIC0+XG4gICAgICBpZiBsZW4gPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJRdWV1ZS5ibGl0X3RyYW5zZmVyOiBuZWdhdGl2ZSBsZW5ndGhcIlxuICAgICAgICAgICAgIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gICAgICBtaW4gbGVuIHNyYy5sZW5ndGhcbiAgaW5cbiAgaWYgbGVuID4gMFxuICB0aGVuIChcbiAgICBzZXRfY2FwYWNpdHkgZHN0IChtYXggKGNhcGFjaXR5IGRzdCkgKGRzdC5sZW5ndGggKyBsZW4pKTtcbiAgICBsZXQgZHN0X3N0YXJ0ID0gZHN0LmZyb250ICsgZHN0Lmxlbmd0aCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAoKiBUaGlzIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gc2ltcGx5IFtlbnF1ZXVlIGRzdCAoZGVxdWV1ZV9ub25lbXB0eSBzcmMpXSAqKVxuICAgICAgbGV0IHNyY19pID0gKHNyYy5mcm9udCArIGkpIGxhbmQgc3JjLm1hc2sgaW5cbiAgICAgIGxldCBkc3RfaSA9IChkc3Rfc3RhcnQgKyBpKSBsYW5kIGRzdC5tYXNrIGluXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lXG4gICAgICAgIGRzdC5lbHRzXG4gICAgICAgIGRzdF9pXG4gICAgICAgIChPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biBzcmMuZWx0cyBzcmNfaSk7XG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHNyYy5lbHRzIHNyY19pXG4gICAgZG9uZTtcbiAgICBkc3QubGVuZ3RoIDwtIGRzdC5sZW5ndGggKyBsZW47XG4gICAgc3JjLmZyb250IDwtIChzcmMuZnJvbnQgKyBsZW4pIGxhbmQgc3JjLm1hc2s7XG4gICAgc3JjLmxlbmd0aCA8LSBzcmMubGVuZ3RoIC0gbGVuKVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBzZXRfY2FwYWNpdHkgdCAoSW50Lm1heCAoY2FwYWNpdHkgdCkgKHQubGVuZ3RoICsgTGlzdC5sZW5ndGggbCkpO1xuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgICBkb25lO1xuICAgICFyKVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBhIC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IHg7XG4gIHRcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0b19saXN0IHQgfD4gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgfD4gb2ZfbGlzdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gfFxuXG4gIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gZnVuY3Rpb25cbiAgICB8IChfIDogdCkgLT4gLlxuICA7O1xuXG4gIGxldCBhbGwgPSBbXVxuICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X3R5cGUgXCJCYXNlLk5vdGhpbmcudFwiIHNleHBcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxuICBsZXQgdG9fc3RyaW5nID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgb2Zfc3RyaW5nIChfIDogc3RyaW5nKSA9IGZhaWx3aXRoIFwiQmFzZS5Ob3RoaW5nLm9mX3N0cmluZzogbm90IHN1cHBvcnRlZFwiXG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5vdGhpbmdcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuTmF0aXZlaW50XG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAobmF0aXZlaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX25hdGl2ZWludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9uYXRpdmVpbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVueFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJW54XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVtX2JpdHMgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiTmF0aXZlaW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLk5hdGl2ZWludC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuTmF0aXZlaW50LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiAoeCA6IG5hdGl2ZWludCkgPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuTmF0aXZlaW50LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIENhbWwuTmF0aXZlaW50LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIGlmIENhbWwuTmF0aXZlaW50LmVxdWFsIGkgQ2FtbC5OYXRpdmVpbnQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5OYXRpdmVpbnQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX25hdGl2ZWludCB0ID0gdFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgdCA9IHRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5uYXRpdmVpbnRfcG9wY291bnRcbmxldCBvZl9pbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgdG9faW50MzJfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW05hdGl2ZWludF0gYW5kIFtOYXRpdmVpbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5leHRlcm5hbCBic3dhcCA6IHQgLT4gdCA9IFwiJWJzd2FwX25hdGl2ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNYXBfaW50ZlxuXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxuICAoKiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0ZXN0ZWQgaW4gW3Rlc3RfbWFwLm1sXSB0byBtYWtlIHN1cmUgb3VyIHVzZSBvZlxuICAgICBbQ2FtbC5PYmoubWFnaWNdIGlzIGNvcnJlY3QgYW5kIHNhZmUuICopXG4gIGxldCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gQ2FtbC5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLk1lcmdlX2VsZW1lbnRcblxuICBsZXQgbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IFNvbWUgbGVmdFxuICA7O1xuXG4gIGxldCByaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gU29tZSByaWdodFxuICA7O1xuXG4gIGxldCBsZWZ0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYFJpZ2h0IF8gLT4gZGVmYXVsdFxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgXyAtPiBkZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHZhbHVlcyB0IH5sZWZ0X2RlZmF1bHQgfnJpZ2h0X2RlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgbGVmdCAtPiBsZWZ0LCByaWdodF9kZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgLT4gbGVmdF9kZWZhdWx0LCByaWdodFxuICAgIHwgYEJvdGggKGxlZnQsIHJpZ2h0KSAtPiBsZWZ0LCByaWdodFxuICA7O1xuZW5kXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGUgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBEdXBsaWNhdGVdIChmdW5jdGlvblxuICAgIHwgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5EdXBsaWNhdGVcIlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBMZWFmIG9mICdrICogJ3ZcbiAgICB8IE5vZGUgb2YgKCdrLCAndikgdCAqICdrICogJ3YgKiAoJ2ssICd2KSB0ICogaW50XG5cbiAgdHlwZSAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgdFxuXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIGgpIC0+IGhcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGsgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2tleSBsb3dlciBrIDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfa2V5IGsgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIChrLCBfKSAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICB8IE5vZGUgKGwsIGssIF8sIHIsIGgpIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgaykgY29tcGFyZV9rZXkgbFxuICAgICAgICAmJiBsb29wIChTb21lIGspIHVwcGVyIGNvbXBhcmVfa2V5IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2tleSAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2tleSB0XG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAyICopXG4gIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID0gMCAmJiBociA9IDBcbiAgICB0aGVuIExlYWYgKHgsIGQpXG4gICAgZWxzZSBOb2RlIChsLCB4LCBkLCByLCBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSlcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID0gTGVhZiAoa2V5LCBkYXRhKVxuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLk1hcCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgOiAoXywgXykgdCA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrLCB2ID0gZiBpIGluXG4gICAgICAgIExlYWYgKGssIHYpXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBFbXB0eSwgMilcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciwgdnIgPSBmIChpICsgMikgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgTGVhZiAoa3IsIHZyKSwgMilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayB2IHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMlxuICAgICAgICAgfHxcbiAgICAgICAgIGxldCBrMCwgXyA9IGFycmF5LigwKSBpblxuICAgICAgICAgbGV0IGsxLCBfID0gYXJyYXkuKDEpIGluXG4gICAgICAgICBjb21wYXJlX2tleSBrMCBrMSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQsIGFycmF5X2xlbmd0aFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LigwKSkgKGZzdCBhcnJheS4oMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKGkpKSAoZnN0IGFycmF5LihpICsgMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuXG4gIGxldCByZWMgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgICAgfmtleTp4XG4gICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgICAgIH4oYWRkX29yX3NldCA6IEFkZF9vcl9zZXQudClcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmICh4LCBkYXRhKSwgbGVuZ3RoICsgMVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZVxuICAgICAgICB8IEFkZF9leG4gLT4gcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5XG4gICAgICAgIHwgU2V0IC0+IExlYWYgKHgsIGRhdGEpLCBsZW5ndGgpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIE5vZGUgKExlYWYgKHgsIGRhdGEpLCB2LCBkLCBFbXB0eSwgMiksIGxlbmd0aCArIDFcbiAgICAgIGVsc2UgTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKHgsIGRhdGEpLCAyKSwgbGVuZ3RoICsgMVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZVxuICAgICAgICB8IEFkZF9leG4gLT4gcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5XG4gICAgICAgIHwgU2V0IC0+IE5vZGUgKGwsIHgsIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGwsIGxlbmd0aCA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSBsIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgciwgbGVuZ3RoID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIHIgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldDpBZGRfZXhuXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgdFxuICAgICAgfmxlbmd0aFxuICAgICAgfmtleVxuICAgICAgfmRhdGFcbiAgICAgIH5jb21wYXJlX2tleVxuICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgIHRcbiAgICAgIH5sZW5ndGhcbiAgICAgIH5rZXlcbiAgICAgIH5kYXRhXG4gICAgICB+Y29tcGFyZV9rZXlcbiAgICAgIH5zZXhwX29mX2tleTooZnVuIF8gLT4gTGlzdCBbXSlcbiAgICAgIH5hZGRfb3Jfc2V0OlNldFxuICA7O1xuXG4gIGxldCBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5ID0gZnN0IChzZXQgdCB+bGVuZ3RoOjAgfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkpXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBsZXQgYnVpbGRlciwgbGVuZ3RoID1cbiAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgIHNlcVxuICAgICAgICAgIH5pbml0OihCdWlsZF9pbmNyZWFzaW5nLmVtcHR5LCAwKVxuICAgICAgICAgIH5mOihmdW4gKGJ1aWxkZXIsIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSBidWlsZGVyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmVfa2V5IHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgICAgICAgIHwgXyAtPiBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhLCBsZW5ndGggKyAxKVxuICAgICAgaW5cbiAgICAgIE9rIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIsIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gc2V0JyByIGsgZCB+Y29tcGFyZV9rZXlcbiAgICB8IF8sIEVtcHR5IC0+IHNldCcgbCBrIGQgfmNvbXBhcmVfa2V5XG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldCcgKHNldCcgciBrIGQgfmNvbXBhcmVfa2V5KSBsayBsZCB+Y29tcGFyZV9rZXlcbiAgICB8IF8sIExlYWYgKHJrLCByZCkgLT4gc2V0JyAoc2V0JyBsIGsgZCB+Y29tcGFyZV9rZXkpIHJrIHJkIH5jb21wYXJlX2tleVxuICAgIHwgTm9kZSAobGwsIGxrLCBsZCwgbHIsIGxoKSwgTm9kZSAocmwsIHJrLCByZCwgcnIsIHJoKSAtPlxuICAgICAgKCogW2JhbF0gcmVxdWlyZXMgaGVpZ2h0IGRpZmZlcmVuY2UgPD0gMy4gKilcbiAgICAgIGlmIGxoID4gcmggKyAzXG4gICAgICAoKiBbaGVpZ2h0IGxyID49IGhlaWdodCByXSxcbiAgICAgICAgIHRoZXJlZm9yZSBbaGVpZ2h0IChqb2luIGxyIGsgZCByIC4uLildIGlzIFtoZWlnaHQgcmwgKyAxXSBvciBbaGVpZ2h0IHJsXVxuICAgICAgICAgdGhlcmVmb3JlIHRoZSBoZWlnaHQgZGlmZmVyZW5jZSB3aXRoIFtsbF0gd2lsbCBiZSA8PSAzICopXG4gICAgICB0aGVuIGJhbCBsbCBsayBsZCAoam9pbiBsciBrIGQgciB+Y29tcGFyZV9rZXkpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAzXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIGsgZCBybCB+Y29tcGFyZV9rZXkpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSB4IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gRW1wdHksIFNvbWUgKGssIGQpLCBFbXB0eVxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIEVtcHR5LCBOb25lLCB0XG4gICAgICBlbHNlIHQsIE5vbmUsIEVtcHR5XG4gICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IHggayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdCBsIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGxsLCBtYXliZSwgam9pbiBsciBrIGQgciB+Y29tcGFyZV9rZXkpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdCByIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGpvaW4gbCBrIGQgcmwgfmNvbXBhcmVfa2V5LCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIHggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGVmdCwgYm91bmRhcnlfb3B0LCByaWdodCA9IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICBtYXRjaCBib3VuZGFyeV9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsZWZ0LCByaWdodFxuICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPlxuICAgICAgbGV0IGluc2VydF9pbnRvIHRyZWUgPSBmc3QgKHNldCB0cmVlIH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleSkgaW5cbiAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICB8IGBMZWZ0IC0+IGluc2VydF9pbnRvIGxlZnQsIHJpZ2h0XG4gICAgICAgfCBgUmlnaHQgLT4gbGVmdCwgaW5zZXJ0X2ludG8gcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfihsb3dlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH4odXBwZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICA9XG4gICAgaWYgTWF5YmVfYm91bmQuYm91bmRzX2Nyb3NzZWRcbiAgICAgICAgIH5jb21wYXJlOmNvbXBhcmVfa2V5XG4gICAgICAgICB+bG93ZXI6bG93ZXJfYm91bmRcbiAgICAgICAgIH51cHBlcjp1cHBlcl9ib3VuZFxuICAgIHRoZW4gZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxlZnQsIG1pZF9hbmRfcmlnaHQgPVxuICAgICAgICBtYXRjaCBsb3dlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IGVtcHR5LCB0XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZXQgbWlkLCByaWdodCA9XG4gICAgICAgIG1hdGNoIHVwcGVyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gbWlkX2FuZF9yaWdodCwgZW1wdHlcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT5cbiAgICAgICAgICBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGVmdCwgbWlkLCByaWdodClcbiAgOztcblxuICBsZXQgcmVjIGZpbmQgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gU29tZSBkIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZCBlbHNlIGZpbmQgKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBkYXRhID0gZGF0YSA6OiBPcHRpb24udmFsdWUgKGZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5KSB+ZGVmYXVsdDpbXSBpblxuICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSBsIC0+IGxcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBpZl9ub3RfZm91bmQga2V5IH5zZXhwX29mX2tleSA9XG4gICAgICByYWlzZSAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiTWFwLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgc2V4cF9vZl9rZXkga2V5IF0pKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaW5kX2V4biB0IHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBkIGVsc2UgaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gZCBlbHNlIGZpbmRfZXhuIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXlcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB4IH5jb21wYXJlX2tleSA9IE9wdGlvbi5pc19zb21lIChmaW5kIHQgeCB+Y29tcGFyZV9rZXkpXG5cbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChFbXB0eSwgaywgZCwgXywgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgaywgZCwgRW1wdHksIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBfLCBfLCByLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgXywgciwgXykgLT4gclxuICAgIHwgTm9kZSAobCwgeCwgZCwgciwgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB4IGQgclxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBtYXhfZWx0IGxvd2VyX3BhcnQsIG1pbl9lbHQgdXBwZXJfcGFydCB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGBPayB1cHBlcl9wYXJ0XG4gICAgfCBfLCBOb25lIC0+IGBPayBsb3dlcl9wYXJ0XG4gICAgfCBTb21lIChtYXhfbG93ZXIsIF8pLCBTb21lIChtaW5fdXBwZXIsIHYpIHdoZW4gY29tcGFyZV9rZXkgbWF4X2xvd2VyIG1pbl91cHBlciA8IDAgLT5cbiAgICAgIGxldCB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluID0gcmVtb3ZlX21pbl9lbHQgdXBwZXJfcGFydCBpblxuICAgICAgYE9rIChqb2luIH5jb21wYXJlX2tleSBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBjb25jYXRfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcFxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIGxlbmd0aCAtIDFcbiAgICAgICAgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gY29uY2F0X3VuY2hlY2tlZCBsIHIsIGxlbmd0aCAtIDFcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHIsIGxlbmd0aCA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB0cnkgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IFJlbW92ZV9ub19vcCAtPiB0LCBsZW5ndGhcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHJhaXNlIENoYW5nZV9ub19vcCAoKiBlcXVpdmFsZW50IHRvIHJldHVybmluZzogRW1wdHkgKilcbiAgICAgICAgIHwgU29tZSBkYXRhIC0+IExlYWYgKGtleSwgZGF0YSksIGxlbmd0aCArIDEpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5LCBsZW5ndGggLSAxXG4gICAgICAgICAgfCBTb21lIGQnIC0+IExlYWYgKHYsIGQnKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCBFbXB0eSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgRW1wdHkgdiBkIHIsIGxlbmd0aClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0X3VuY2hlY2tlZCBsIHIsIGxlbmd0aCAtIDFcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB0cnkgY2hhbmdlX2NvcmUgdCBrZXkgZiB3aXRoXG4gICAgfCBDaGFuZ2Vfbm9fb3AgLT4gdCwgbGVuZ3RoXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICBMZWFmIChrZXksIGRhdGEpLCBsZW5ndGggKyAxXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgIExlYWYgKHYsIGQnKSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCBFbXB0eSwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICBiYWwgRW1wdHkgdiBkIHIsIGxlbmd0aClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZGF0YSA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICBOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgaW5cbiAgICB1cGRhdGVfY29yZSB0IGtleSBmXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgY2hhbmdlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIHwgU29tZSAoW10gfCBbIF8gXSkgLT4gTm9uZVxuICAgICAgfCBTb21lIChfIDo6IChfIDo6IF8gYXMgbm9uX2VtcHR5X3RhaWwpKSAtPiBTb21lIG5vbl9lbXB0eV90YWlsKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjY1xuICAgIHwgU3RvcCBzdG9wIC0+IHN0b3BcbiAgOztcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIGtleSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cblxuICBsZXQgZmlsdGVyIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYgZGF0YSB0aGVuIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgYWNjdSB+Y29tcGFyZV9rZXkgZWxzZSBhY2N1LCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiB+a2V5IH5kYXRhIHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBtYXRjaCBmIGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY3UsIGxlbmd0aFxuICAgICAgfCBTb21lIGIgLT4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YTpiIGFjY3UgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY3UsIGxlbmd0aFxuICAgICAgfCBTb21lIGIgLT4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YTpiIGFjY3UgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZFxuICAgICAgdFxuICAgICAgfmluaXQ6KChFbXB0eSwgMCksIChFbXB0eSwgMCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKHBhaXIxLCBwYWlyMikgLT5cbiAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCB4IC0+XG4gICAgICAgICAgbGV0IHQsIGxlbmd0aCA9IHBhaXIxIGluXG4gICAgICAgICAgc2V0IHQgfmtleSB+ZGF0YTp4IH5jb21wYXJlX2tleSB+bGVuZ3RoLCBwYWlyMlxuICAgICAgICB8IFNlY29uZCB5IC0+XG4gICAgICAgICAgbGV0IHQsIGxlbmd0aCA9IHBhaXIyIGluXG4gICAgICAgICAgcGFpcjEsIHNldCB0IH5rZXkgfmRhdGE6eSB+Y29tcGFyZV9rZXkgfmxlbmd0aClcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgcGFydGl0aW9uX21hcGkgdCB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgaWYgZiBkYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBjID0gY29tcGFyZV9kYXRhIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGRhdGFfZXF1YWwgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiB0cnVlXG4gICAgICAgIHwgRW5kLCBfIHwgXywgRW5kIC0+IGZhbHNlXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBjb21wYXJlX2tleSB2MSB2MiA9IDBcbiAgICAgICAgICAmJiBkYXRhX2VxdWFsIGQxIGQyXG4gICAgICAgICAgJiYgaWYgcGh5c19lcXVhbCByMSByMiB0aGVuIGxvb3AgZTEgZTIgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCByZWMgZm9sZCB+aW5pdCB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiBpbml0XG4gICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgbGV0IG5leHQgPSBmIH5rZXkgfmRhdGEgaW5pdCBpblxuICAgICAgICBmb2xkIChjb25zIHRyZWUgZW51bSkgfmluaXQ6bmV4dCB+ZlxuICAgIDs7XG5cbiAgICBsZXQgZm9sZDIgY29tcGFyZV9rZXkgdDEgdDIgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyIGN1cnIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IGN1cnJcbiAgICAgICAgfCBFbmQsIF8gLT5cbiAgICAgICAgICBmb2xkIHQyIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBSaWdodCBkYXRhKSBhY2MpXG4gICAgICAgIHwgXywgRW5kIC0+XG4gICAgICAgICAgZm9sZCB0MSB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgTGVmdCBkYXRhKSBhY2MpXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXRcbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkICgoa2V5LCBgUmlnaHQgZGF0YSksIChFbmQsIGNvbnMgdHJlZSBlbnVtKSlcbiAgICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkICgoa2V5LCBgTGVmdCBkYXRhKSwgKGNvbnMgdHJlZSBlbnVtLCBFbmQpKVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBkYXRhX2VxdWFsIHYxIHYyXG4gICAgICAgICAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuU2tpcCBuZXh0X3N0YXRlXG4gICAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMSwgYFVuZXF1YWwgKHYxLCB2MikpLCBuZXh0X3N0YXRlKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsxLCBgTGVmdCB2MSksIChjb25zIHRyZWUxIGVudW0xLCByaWdodCkpXG4gICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazIsIGBSaWdodCB2MiksIChsZWZ0LCBjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2ZfdHJlZSB0MSwgb2ZfdHJlZSB0MikgfmY6c3RlcFxuICAgIDs7XG5cbiAgICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGVmdCByaWdodCBhY2MgPVxuICAgICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICAgIHwgRW5kLCBlbnVtIC0+IGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IGVudW0sIEVuZCAtPiBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICB0aGVuIGxvb3AgZW51bTEgZW51bTIgYWNjXG4gICAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAob2ZfdHJlZSB0MSkgKG9mX3RyZWUgdDIpIGluaXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoaywgdiksIEVudW0uY29ucyB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlIHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGssIHYpLCBFbnVtLmNvbnNfcmlnaHQgdCBlKVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MilcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSlcbiAgOztcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyIGNvbXBhcmVfa2V5IChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpIH5mIH5pbml0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgKCogW0VudW0uZm9sZF9kaWZmc10gaXMgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBpcyBjb25zaWRlcmFibHlcbiAgICAgICBzbG93ZXIsIGFzIHdlIGhhdmUgdG8gYWxsb2NhdGUgcXVpdGUgYSBsb3Qgb2Ygc3RhdGUgdG8gdHJhY2sgZW51bWVyYXRpb24gb2YgYSB0cmVlLlxuICAgICAgIEF2b2lkIGlmIHdlIGNhbi5cbiAgICAqKVxuICAgIGxldCBzbG93IHggeSB+aW5pdCA9IEVudW0uZm9sZF9zeW1tZXRyaWNfZGlmZiB4IHkgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5mIH5pbml0IGluXG4gICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgIGxldCBkZWx0YSBhY2MgayB2IHYnID0gaWYgZGF0YV9lcXVhbCB2IHYnIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGssIGBVbmVxdWFsICh2LCB2JykpIGluXG4gICAgKCogSWYgdHdvIHRyZWVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGF0IHRoZSByb290IChhbmQgdGhlIHNhbWUga2V5LCBpZiB0aGV5J3JlXG4gICAgICAgW05vZGVdcykgd2UgY2FuIHRyaXZpYWxseSBkaWZmIGVhY2ggc3VicGFydCBpbiBvYnZpb3VzIHdheXMuICopXG4gICAgbGV0IHJlYyBsb29wIHQgdCcgYWNjID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCB0J1xuICAgICAgdGhlbiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0LCB0JyB3aXRoXG4gICAgICAgIHwgRW1wdHksIG5ld192YWxzIC0+XG4gICAgICAgICAgZm9sZCBuZXdfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IG9sZF92YWxzLCBFbXB0eSAtPlxuICAgICAgICAgIGZvbGQgb2xkX3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSlcbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdFxuICA7O1xuXG4gIGxldCByZWMgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChsLCBfLCBfLCByLCBfKSAtPiBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHN0YXRlIC0+IGhhc2hfZm9sZF9kYXRhIChoYXNoX2ZvbGRfa2V5IHN0YXRlIGtleSkgZGF0YSlcbiAgOztcblxuICBsZXQga2V5cyB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6XyBsaXN0IC0+IGtleSA6OiBsaXN0KSB0IH5pbml0OltdXG4gIGxldCBkYXRhIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB0IH5pbml0OltdXG5cbiAgbW9kdWxlIHR5cGUgRm9sZGFibGUgPSBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2JcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2ZvbGRhYmxlIChNIDogRm9sZGFibGUpID0gc3RydWN0XG4gICAgbGV0IG9mX2ZvbGRhYmxlX2ZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKGFjY3VtLCBsZW5ndGgpIChrZXksIGRhdGEpIC0+XG4gICAgICAgIGxldCBwcmV2X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluaXRcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkYXRhID0gZiBwcmV2X2RhdGEgZGF0YSBpblxuICAgICAgICBzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX3JlZHVjZSBmb2xkYWJsZSB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAoYWNjdW0sIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IG5ld19kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gZiBwcmV2IGRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkpXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIE0uZm9sZCBmb2xkYWJsZSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gKHQsIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIGxldCAoKF8sIGxlbmd0aCcpIGFzIGFjYykgPSBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICBpZiBsZW5ndGggPSBsZW5ndGgnIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkgZWxzZSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGBPayBtYXApXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9vcl9lcnJvciBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiKVxuICAgICAgICAgIGtleVxuICAgICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9leG4gZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4geFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX2V4bjogZHVwbGljYXRlIGtleVwiKSBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cblxuICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgaW5zdGFuY2Ugb2YgZWFjaCBrZXkgZnJvbSB0aGUgaW5wdXQgbGlzdC4gVGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIGVhY2hcbiAgICAgb3V0cHV0IGxpc3QgaXMgdGhlIHNhbWUgYXMgaW4gdGhlIGlucHV0IGxpc3QuICopXG4gIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Zm9sZCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhbGlzdCA9IGZvbGQgZm9sZGFibGUgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSBpblxuICAgIG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5ID1cbiAgICBvZl9mb2xkYWJsZV9tdWx0aSBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIE9mX3NlcXVlbmNlID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcInNlcXVlbmNlXCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgICBsZXQgZm9sZCA9IFNlcXVlbmNlLmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX3NlcXVlbmNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2V4blxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXF1ZW5jZSB+Y29tcGFyZV9rZXkgPVxuICAgIG9mX2ZvbGRhYmxlX211bHRpIHNlcXVlbmNlIH5mb2xkOlNlcXVlbmNlLmZvbGQgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIG5vdCAoZiBkYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBmIGRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSlcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG4gIDs7XG5cbiAgbGV0IHRvX2FsaXN0ID8oa2V5X29yZGVyID0gYEluY3JlYXNpbmcpIHQgPVxuICAgIG1hdGNoIGtleV9vcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPiBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgICB8IGBEZWNyZWFzaW5nIC0+IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBlbHRzID0gVW5pZm9ybV9hcnJheS51bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjoobGVuZ3RoIHQxICsgbGVuZ3RoIHQyKSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyMiB0MSB0MiB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5IH5kYXRhOnZhbHVlcyAtPlxuICAgICAgbWF0Y2ggZiB+a2V5IHZhbHVlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgVW5pZm9ybV9hcnJheS5zZXQgZWx0cyAhaSAoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGluY3IgaVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICBsZXQgbGVuID0gIWkgaW5cbiAgICBsZXQgZ2V0IGkgPSBVbmlmb3JtX2FycmF5LmdldCBlbHRzIGkgaW5cbiAgICBsZXQgdHJlZSA9IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmY6Z2V0IGluXG4gICAgdHJlZSwgbGVuXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGQgdF9zbWFsbCB+aW5pdDoodF9sYXJnZSwgbGVuZ3RoX2xhcmdlKSB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgKHQsIGxlbmd0aCkgLT5cbiAgICAgICAgdXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpKVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMClcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgfmtleSB+ZGF0YSA9IG5vdCAoaXNfbGVmdCB+a2V5IH5kYXRhKSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0XG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cbiAgdHlwZSAoJ2ssICd2KSBhY2MgPVxuICAgIHsgbXV0YWJsZSBiYWRfa2V5IDogJ2sgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG1hcF9sZW5ndGggOiAoJ2ssICd2KSB0ICogaW50XG4gICAgfVxuXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYWNjID0geyBiYWRfa2V5ID0gTm9uZTsgbWFwX2xlbmd0aCA9IGVtcHR5LCAwIH0gaW5cbiAgICBpdGVyaSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCBtYXAsIGxlbmd0aCA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKChfLCBsZW5ndGgnKSBhcyBwYWlyKSA9IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleSBpblxuICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJyAmJiBPcHRpb24uaXNfbm9uZSBhY2MuYmFkX2tleVxuICAgICAgdGhlbiBhY2MuYmFkX2tleSA8LSBTb21lIGtleVxuICAgICAgZWxzZSBhY2MubWFwX2xlbmd0aCA8LSBwYWlyKTtcbiAgICBtYXRjaCBhY2MuYmFkX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IGBPayBhY2MubWFwX2xlbmd0aFxuICAgIHwgU29tZSBrZXkgLT4gYER1cGxpY2F0ZV9rZXkga2V5XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9pdGVyaV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3Qga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCBzZXhwIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCkgc2V4cCBpblxuICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIG1hdGNoIG9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgICAgTGlzdC5pdGVyMl9vayBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgazIgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIk1hcC50X29mX3NleHBfZGlyZWN0OiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICBsZXQgZiB+a2V5IH5kYXRhIGFjYyA9IFNleHAuTGlzdCBbIHNleHBfb2Zfa2V5IGtleTsgc2V4cF9vZl92YWx1ZSBkYXRhIF0gOjogYWNjIGluXG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IH5mIHQgfmluaXQ6W10pXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgbGV0IG9rcywgKGVycm9yX3RyZWUsIF8pID0gcGFydGl0aW9uX21hcCB0IH5jb21wYXJlX2tleSB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JfdHJlZVxuICAgIHRoZW4gT2sgb2tzXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvcl9zIChzZXhwX29mX3Qgc2V4cF9vZl9rZXkgRXJyb3Iuc2V4cF9vZl90IGVycm9yX3RyZWUpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzXG4gICAgICAgIHQxXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yOih7IGNvbXBhcmUgPSBjb21wYXJlX2tleTsgc2V4cF9vZl90ID0gc2V4cF9vZl9rZXkgfSA6IF8gQ29tcGFyYXRvci50KVxuICAgID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGBPa1xuICAgICAgICAoZm9sZCB0MSB+aW5pdDooZW1wdHksIDApIH5mOihmdW4gfmtleSB+ZGF0YSAodDIsIGxlbmd0aCkgLT5cbiAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgIHRyeSBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHdpdGhcbiAgICAgICAgICAgfCBEdXBsaWNhdGUgLT4gcmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayByZXN1bHQgLT4gcmVzdWx0XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIk1hcC5tYXBfa2V5c19leG46IGR1cGxpY2F0ZSBrZXlcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuZW5kXG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnaywgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAoJ2ssICd2KSBUcmVlMC50XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcblxubGV0IGNvbXBhcmVfa2V5IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cblxubGV0IGxpa2UgeyB0cmVlID0gXzsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9ICh0cmVlLCBsZW5ndGgpID1cbiAgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGxpa2UyIHggKHksIHopID0gbGlrZSB4IHksIGxpa2UgeCB6XG5cbmxldCBsaWtlX21heWJlX25vX29wICh7IHRyZWUgPSBvbGRfdHJlZTsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9IGFzIG9sZF90KSAodHJlZSwgbGVuZ3RoKVxuICA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IHdpdGhfc2FtZV9sZW5ndGggeyB0cmVlID0gXzsgY29tcGFyYXRvcjsgbGVuZ3RoIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cbmxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuKCogRXhwb3NpbmcgdGhpcyBmdW5jdGlvbiB3b3VsZCBtYWtlIGl0IHZlcnkgZWFzeSBmb3IgdGhlIGludmFyaWFudHNcbiAgIG9mIHRoaXMgbW9kdWxlIHRvIGJlIGJyb2tlbi4gKilcbmxldCBvZl90cmVlX3Vuc2FmZSB+Y29tcGFyYXRvciB+bGVuZ3RoIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5cbiAgbGV0IGludmFyaWFudHMgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSAmJiBUcmVlMC5sZW5ndGggdC50cmVlID0gdC5sZW5ndGhcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlIHQgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IHJlc3VsdCAtPiBgT2sgcmVzdWx0XG4gICAgfCBleGNlcHRpb24gRHVwbGljYXRlIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZSB0IChUcmVlMC5yZW1vdmVfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGgga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2UgdCAoVHJlZTAuY2hhbmdlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2UgdCAoVHJlZTAudXBkYXRlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBtZW0gdCBrZXkgPSBUcmVlMC5tZW0gdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdC50cmVlIH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdC50cmVlIH5mXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiA9IFRyZWUwLml0ZXIyIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICBsZXQgbWFwIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcCB0LnRyZWUgfmYpXG4gIGxldCBtYXBpIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcGkgdC50cmVlIH5mKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5mIH5pbml0XG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwaSB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsaWtlMiB0IChUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGxpa2UgdClcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9yc1xuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIFRoaXMgaXMgb25seSBhIG5vLW9wIGluIHRoZSBjYXNlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWFwcyBpcyBlbXB0eS4gKilcbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICAoaWYgdDIubGVuZ3RoIDw9IHQxLmxlbmd0aCB0aGVuIHQxIGVsc2UgdDIpXG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MS50cmVlXG4gICAgICAgICB0Mi50cmVlXG4gICAgICAgICB+bGVuZ3RoMTp0MS5sZW5ndGhcbiAgICAgICAgIH5sZW5ndGgyOnQyLmxlbmd0aFxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdC50cmVlIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0LnRyZWUgfmZcblxuICBsZXQgc3BsaXQgdCBrID1cbiAgICBsZXQgbCwgbWF5YmUsIHIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IGJvdGhfbGVuID0gaWYgT3B0aW9uLmlzX3NvbWUgbWF5YmUgdGhlbiB0Lmxlbmd0aCAtIDEgZWxzZSB0Lmxlbmd0aCBpblxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBtYXliZSwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIHIpLCBtYXliZSwgcilcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKEVtcHR5LCAwKVxuICA7O1xuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBmc3QgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvciB8PiBPcl9lcnJvci5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IGZzdCAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIGZzdCAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPSBmc3QgKFRyZWUwLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6ZnN0XG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayAodHJlZSwgX3NpemUpIC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9IGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fdHJlZSB0ID0gdFxuXG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcblxuICBsZXQgc2V0IH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgZnN0IChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBmc3RcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0XG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmxlbmd0aDowXG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgdHJ5IGBPayAoYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEpIHdpdGhcbiAgICB8IF8gLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBUcmVlMC5hZGRfbXVsdGkgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBmc3RcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB8PiBmc3RcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9tdWx0aSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBmc3QgKFRyZWUwLmNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0XG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLmZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgZnN0IChUcmVlMC5yZW1vdmUgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfa2V5cyB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fbWFwaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGxldCAoYSwgXyksIChiLCBfKSA9XG4gICAgICBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgfmNvbXBhcmF0b3IgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjpmc3RcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9yc1xuICAgICAgICAgdFxuICAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIGZzdCAoVHJlZTAubWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgfmNvbXBhcmF0b3IgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIExlbmd0aCBjb21wdXRhdGlvbiBtYWtlcyB0aGlzIHNpZ25pZmljYW50bHkgc2xvd2VyIHRoYW4gW21lcmdlX3NrZXdlZF0gb24gYSBtYXBcbiAgICAgICB3aXRoIGEgW2xlbmd0aF0gZmllbGQsIGJ1dCBkb2VzIHByZXNlcnZlIGFtb3VudCBvZiBhbGxvY2F0aW9uLiAqKVxuICAgIGZzdFxuICAgICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgICAgdDFcbiAgICAgICAgIHQyXG4gICAgICAgICB+bGVuZ3RoMToobGVuZ3RoIHQxKVxuICAgICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICAgIH5jb21iaW5lXG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQgfmZcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgayA9IFRyZWUwLnNwbGl0IHQgayB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgYXBwZW5kIH5jb21wYXJhdG9yIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBUcmVlMC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IF8sIHJldCwgXyA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH5sb3dlcl9ib3VuZFxuICAgICAgICB+dXBwZXJfYm91bmRcbiAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICByZXRcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICB0XG4gICAgICB+bWluXG4gICAgICB+bWF4XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB+Y29tcGFyYXRvciB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IH5jb21wYXJhdG9yIHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdCBkaXIga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLnJhbmsgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBmc3QgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgd2l0aFxuICAgIHwgYE9rICh0LCBfKSAtPiBgT2sgdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID0gZnN0IChUcmVlMC5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZilcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuICBsZXQgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHRyZWUsIGxlbmd0aCkgPSB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSBvZl90cmVlMCB+Y29tcGFyYXRvciAodHJlZSwgVHJlZTAubGVuZ3RoIHRyZWUpXG4gIGxldCB0b190cmVlID0gdG9fdHJlZVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBsZW5ndGgpIC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+aXRlcmkgd2l0aFxuICAgIHwgYE9rIHRyZWVfbGVuZ3RoIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZV9sZW5ndGgpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSlcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYsIGxlbilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX3RyZWUwIH5jb21wYXJhdG9yKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayAodHJlZSwgbGVuZ3RoKSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcGFpciAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHBhaXIpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5tYXBfa2V5c19leG4gdC50cmVlIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvciA9IEsuY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGVuZFxuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfdHJlZSAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSB0cmVlID1cbiAgb2ZfdHJlZSB+Y29tcGFyYXRvcjpNLmNvbXBhcmF0b3IgdHJlZVxuOztcblxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2FsaXN0X2V4biBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3RfbXVsdGkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9mb2xkIG0gYSB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5pbml0IH5mXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVkdWNlIG0gYSB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9pdGVyaSBtIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5cbmxldCBvZl9pdGVyaV9leG4gbSB+aXRlcmkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIG0gc2VxID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNlcVxuOztcblxubGV0IG9mX3NlcXVlbmNlIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZXhuIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX211bHRpIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2ZvbGQgbSBzIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgbSBzIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+ZlxuOztcblxubGV0IG1hcF9rZXlzIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IG1hcF9rZXlzX2V4biBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5cbm1vZHVsZSBNIChLIDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGsgY21wKVxuICAgICAgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICB2X29mX3NleHBcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6Sy5jb21wYXJhdG9yIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGspXG4gICAgICAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspXG4gICAgICAodl9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIExpc3RcbiAgICAgICAgKE1hbnkgKExpc3QgKENvbnMgKEsudF9zZXhwX2dyYW1tYXIudW50eXBlZCwgQ29ucyAodl9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSkpKSlcbiAgfVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIGNvbXBhcmVfdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfdiB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gaykgaGFzaF9mb2xkX3Ygc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEsuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX3Ygc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhIH5pbml0IH5mXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGEgfmZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3IgcyB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG5lbmRcbiIsIm9wZW4hIEltcG9ydDBcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbC5RdWV1ZS50XG5cbmxldCBjcmVhdGUgPSBDYW1sLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gQ2FtbC5RdWV1ZS5jbGVhclxubGV0IGNvcHkgPSBDYW1sLlF1ZXVlLmNvcHlcbmxldCBpc19lbXB0eSA9IENhbWwuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBDYW1sLlF1ZXVlLmxlbmd0aFxubGV0IHBlZWsgPSBDYW1sLlF1ZXVlLnBlZWtcbmxldCBwb3AgPSBDYW1sLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBDYW1sLlF1ZXVlLnB1c2hcbmxldCB0cmFuc2ZlciA9IENhbWwuUXVldWUudHJhbnNmZXJcbmxldCBpdGVyIHQgfmYgPSBDYW1sLlF1ZXVlLml0ZXIgZiB0XG5sZXQgZm9sZCB0IH5pbml0IH5mID0gQ2FtbC5RdWV1ZS5mb2xkIGYgaW5pdCB0XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucGVlayB0KVxubGV0IHBlZWtfZXhuID0gTGlua2VkX3F1ZXVlMC5wZWVrXG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGl0ZXJpID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9sZGkgPSBDLmZvbGRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5sZXQgaXRlcmkgPSBDLml0ZXJpXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID0gTGlua2VkX3F1ZXVlMC50cmFuc2ZlciBzcmMgZHN0XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBlbnF1ZXVlIHJlcyAoZiBhKSk7XG4gIHJlc1xuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBlbnF1ZXVlIHJlcyAoZiBpIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlciBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXJpIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGxpc3QgPSBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBBcnJheS5pdGVyIGFycmF5IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBpbml0IGxlbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgZW5xdWV1ZSB0IChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggbGVuZ3RoIHQgd2l0aFxuICB8IDAgLT4gW3x8XVxuICB8IGxlbiAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbiAocGVla19leG4gdCkgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gdiAtPlxuICAgICAgYXJyLighaSkgPC0gdjtcbiAgICAgIGluY3IgaSk7XG4gICAgYXJyXG47O1xuXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAobGlzdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgc2luZ2xldG9uIGEgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgYTtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDY0XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50NjRfcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gQ2FtbC5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBDYW1sLkludDY0Lm9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDY0IDogdCAtPiB0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSA0OFxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMzIgeCA9XG4gICgqIFRoaXMgaXMgc3RyaWN0bHkgYmV0dGVyIHRoYW4gY29lcmNpbmcgdG8gYW4gaW50MzIgdG8gcGVyZm9ybSBieXRlc3dhcC4gQ29lcmNpbmdcbiAgICAgZnJvbSBhbiBpbnQzMiB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBzaGlmdCBvcGVyYXRpb25zIHRvIHNpZ24gZXh0ZW5kIHRoZSBudW1iZXJcbiAgICAgYXBwcm9wcmlhdGVseS5cbiAgKilcbiAgQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDMyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwNDggeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRcbmxldCB0b19pbnQ2NCB0ID0gdFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50NjRfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxuZXh0ZXJuYWwgdG9faW50X3RydW5jIDogdCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuYyA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuSW50NjQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLkludDY0LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5JbnQ2NC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5JbnQ2NC5wcmVkIHggPSBDYW1sLkludDY0Lnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgaWYgQ2FtbC5JbnQ2NC5lcXVhbCBpIENhbWwuSW50NjQub25lIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NFwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9hZGRcIlxuICBleHRlcm5hbCAoIC0gKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfc3ViXCJcbiAgZXh0ZXJuYWwgKCAqICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X211bFwiXG4gIGV4dGVybmFsICggLyApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9kaXZcIlxuICBleHRlcm5hbCAoIH4tICkgOiB0IC0+IHQgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiB0IC0+IHQgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfYW5kXCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfb3JcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfeG9yXCJcblxuICBsZXQgbG5vdCA9IGJpdF9ub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2xzbFwiXG4gIGV4dGVybmFsICggYXNyICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfYXNyXCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9sc3JcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjRdIGFuZCBbSW50NjQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBBIDYzYml0IGludGVnZXIgaXMgYSA2NGJpdCBpbnRlZ2VyIHdpdGggaXRzIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgYW5kIGl0cyBsb3dlc3QgYml0IHNldCB0byAwLlxuICAgVGhpcyBpcyB0aGUgc2FtZSBraW5kIG9mIGVuY29kaW5nIGFzIE9DYW1sIGludCBvbiA2NGJpdCBhcmNoaXRlY3R1cmUuXG4gICBUaGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBsb3dlc3QgYml0IChpbW1lZGlhdGUgYml0KSBzZXQgdG8gMS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5cbm1vZHVsZSBUMCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubW9kdWxlIFcgOiBzaWdcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcbiAgZW5kXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICB2YWwgd3JhcF9leG4gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgd3JhcF9tb2R1bG8gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBDYW1sLkludDY0LnRcblxuICAoKiogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSBpbnQ2NCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dCBpbnQ2MyBtb2R1bG8gMl42My4gKilcbiAgdmFsIHVud3JhcF91bnNpZ25lZCA6IHQgLT4gQ2FtbC5JbnQ2NC50XG5cbiAgdmFsIGludmFyaWFudCA6IHQgLT4gdW5pdFxuICB2YWwgYWRkIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN1YiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgc3VjYyA6IHQgLT4gdFxuICB2YWwgcHJlZCA6IHQgLT4gdFxuICB2YWwgbXVsIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdyA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXYgOiB0IC0+IHQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvcGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIGJpdF9ub3QgOiB0IC0+IHRcbiAgdmFsIGJpdF94b3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X29yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9hbmQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc2hpZnRfbGVmdCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIG1pbl92YWx1ZSA6IHRcbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludDY0IDogdCAtPiBDYW1sLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogQ2FtbC5JbnQ2NC50IC0+IHQgb3B0aW9uXG4gIHZhbCBvZl9pbnQ2NF9leG4gOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBDYW1sLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIENhbWwuSW50NjQubXVsIHggMkxcbiAgOztcblxuICBsZXQgd3JhcCB4ID1cbiAgICBpZiBDb252LmludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuIFNvbWUgKENhbWwuSW50NjQubXVsIHggMkwpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB3cmFwX21vZHVsbyB4ID0gQ2FtbC5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IHggMVxuICBsZXQgdW53cmFwX3Vuc2lnbmVkIHggPSBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAxXG5cbiAgKCogVGhpcyBkb2VzIG5vdCB1c2Ugd3JhcCBvciB1bndyYXAgdG8gYXZvaWQgZ2VuZXJhdGluZyBleGNlcHRpb25zIGluIHRoZSBjYXNlIG9mXG4gICAgIG92ZXJmbG93cy4gVGhpcyBpcyB0byBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIGludCB0eXBlIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmUuICopXG4gIGxldCBmMiBmIGEgYiA9XG4gICAgQ2FtbC5JbnQ2NC5tdWwgKGYgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYSAxKSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpKSAyTFxuICA7O1xuXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZfZmZmZl9mZmZlTFxuICBsZXQgbSB4ID0gQ2FtbC5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBDYW1sLkludDY0LmFkZCB4IHlcbiAgbGV0IHN1YiB4IHkgPSBDYW1sLkludDY0LnN1YiB4IHlcbiAgbGV0IG5lZyB4ID0gQ2FtbC5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBDYW1sLkludDY0LmFicyB4XG4gIGxldCBvbmUgPSB3cmFwX2V4biAxTFxuICBsZXQgc3VjYyBhID0gYWRkIGEgb25lXG4gIGxldCBwcmVkIGEgPSBzdWIgYSBvbmVcbiAgbGV0IG1pbl92YWx1ZSA9IG0gQ2FtbC5JbnQ2NC5taW5faW50XG4gIGxldCBtYXhfdmFsdWUgPSBtIENhbWwuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoQ2FtbC5JbnQ2NC5sb2dub3QgeClcbiAgbGV0IGJpdF9hbmQgPSBDYW1sLkludDY0LmxvZ2FuZFxuICBsZXQgYml0X3hvciA9IENhbWwuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBDYW1sLkludDY0LmxvZ29yXG4gIGxldCBzaGlmdF9sZWZ0IHggaSA9IENhbWwuSW50NjQuc2hpZnRfbGVmdCB4IGlcbiAgbGV0IHNoaWZ0X3JpZ2h0IHggaSA9IG0gKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpKVxuICBsZXQgcG93ID0gZjIgSW50X21hdGguUHJpdmF0ZS5pbnQ2M19wb3dfb25faW50NjRcbiAgbGV0IG11bCBhIGIgPSBDYW1sLkludDY0Lm11bCBhIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5kaXYgYSBiKVxuICBsZXQgcmVtIGEgYiA9IENhbWwuSW50NjQucmVtIGEgYlxuICBsZXQgcG9wY291bnQgeCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50IHhcbiAgbGV0IHRvX2ludDY0IHQgPSB1bndyYXAgdFxuICBsZXQgb2ZfaW50NjQgdCA9IHdyYXAgdFxuICBsZXQgb2ZfaW50NjRfZXhuIHQgPSB3cmFwX2V4biB0XG4gIGxldCBvZl9pbnQ2NF90cnVuYyB0ID0gd3JhcF9tb2R1bG8gdFxuICBsZXQgdF9vZl9zZXhwIHggPSB3cmFwX2V4biAoaW50NjRfb2Zfc2V4cCB4KVxuICBsZXQgc2V4cF9vZl90IHggPSBzZXhwX29mX2ludDY0ICh1bndyYXAgeClcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGlzX3BvdzIgeCA9IEludDY0LmlzX3BvdzIgKHVud3JhcCB4KVxuXG4gIGxldCBjbHogeCA9XG4gICAgKCogV2UgcnVuIEludDY0LmNseiBkaXJlY3RseSBvbiB0aGUgd3JhcHBlZCBpbnQ2MyB2YWx1ZS4gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2UgdGhlXG4gICAgICAgYml0cyBvZiB0aGUgaW50NjNfZW11bCBhcmUgbGVmdC1hbGlnbmVkIGluIHRoZSBJbnQ2NC4gKilcbiAgICBJbnQ2NC5jbHogeFxuICA7O1xuXG4gIGxldCBjdHogeCA9IEludDY0LmN0eiAodW53cmFwIHgpXG4gIGxldCBmbG9vcl9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGNlaWxfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBmbG9vcl9sb2cyIHggPSBJbnQ2NC5mbG9vcl9sb2cyICh1bndyYXAgeClcbiAgbGV0IGNlaWxfbG9nMiB4ID0gSW50NjQuY2VpbF9sb2cyICh1bndyYXAgeClcbmVuZFxuXG5vcGVuIFdcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVy50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gQ2FtbC5IYXNodGJsLmhhc2ggeFxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBpbnZhbGlkX3N0ciB4ID0gUHJpbnRmLmZhaWx3aXRoZiBcIkludDYzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIHggKClcblxuICAoKlxuICAgICBcInNpZ25cIiByZWZlcnMgdG8gd2hldGhlciB0aGUgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgJy0nXG4gICAgIFwic2lnbmVkbmVzcyA9IGZhbHNlXCIgbWVhbnMgdGhlIHJlc3Qgb2YgdGhlIG51bWJlciBpcyBwYXJzZWQgYXMgdW5zaWduZWQgYW5kIHRoZW4gY2FzdFxuICAgICB0byBzaWduZWQgd2l0aCB3cmFwLWFyb3VuZCBtb2R1bG8gMl5pXG4gICAgIFwic2lnbmVkbmVzcyA9IHRydWVcIiBtZWFucyBubyBzdWNoIGNyYXppbmVzcyBoYXBwZW5zXG5cbiAgICAgVGhlIHRlcm1pbm9sb2d5IGFuZCB0aGUgbG9naWMgaXMgZHVlIHRvIHRoZSBjb2RlIGluIGJ5dGVydW4vaW50cy5jIGluIG9jYW1sIDQuMDNcbiAgICAgKFtwYXJzZV9zaWduX2FuZF9iYXNlXSBmdW5jdGlvbikuXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgdHJ1ZSBmb3IgcGxhaW4gZGVjaW1hbCBudW1iZXIgKGUuZy4gMTIzNSwgLTY3ODkpXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgZmFsc2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgLSBbMHhmZmZmXSwgWy0weGZmZmZdIChoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMGIwMTAxXSwgWy0wYjAxMDFdIChiaW5hcnkgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBvMTIzN10sIFstMG8xMjM3XSAob2N0YWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzB1OTgxMl0sIFstMHU5ODEyXSAodW5zaWduZWQgZGVjaW1hbCByZXByZXNlbnRhdGlvbiAtIGF2YWlsYWJsZSBmcm9tIE9DYW1sIDQuMDMpICopXG4gIGxldCBzaWduX2FuZF9zaWduZWRuZXNzIHggPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHBvcywgc2lnbiA9XG4gICAgICBpZiAwIDwgbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggeC5bMF0gd2l0aFxuICAgICAgICB8ICctJyAtPiAxLCBgTmVnXG4gICAgICAgIHwgJysnIC0+IDEsIGBQb3NcbiAgICAgICAgfCBfIC0+IDAsIGBQb3MpXG4gICAgICBlbHNlIDAsIGBQb3NcbiAgICBpblxuICAgIGlmIHBvcyArIDIgPCBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBjMSA9IHguW3Bvc10gaW5cbiAgICAgIGxldCBjMiA9IHguW3BvcyArIDFdIGluXG4gICAgICBtYXRjaCBjMSwgYzIgd2l0aFxuICAgICAgfCAnMCcsICcwJyAuLiAnOScgLT4gc2lnbiwgdHJ1ZVxuICAgICAgfCAnMCcsIF8gLT4gc2lnbiwgZmFsc2VcbiAgICAgIHwgXyAtPiBzaWduLCB0cnVlKVxuICAgIGVsc2Ugc2lnbiwgdHJ1ZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9IENhbWwuSW50NjQudG9fc3RyaW5nICh1bndyYXAgeClcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgdHJ5XG4gICAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgICBpZiBzaWduZWRuZXNzXG4gICAgICB0aGVuIG9mX2ludDY0X2V4biAoQ2FtbC5JbnQ2NC5vZl9zdHJpbmcgc3RyKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgICB8IGBOZWcgLT4gU3RyaW5nLnN1YiBzdHIgfnBvczoxIH5sZW46KFN0cmluZy5sZW5ndGggc3RyIC0gMSlcbiAgICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnQ2NCA9IENhbWwuSW50NjQub2Zfc3RyaW5nIHBvc19zdHIgaW5cbiAgICAgICAgKCogdW5zaWduZWQgNjMtYml0IGludCBtdXN0IHBhcnNlIGFzIGEgcG9zaXRpdmUgc2lnbmVkIDY0LWJpdCBpbnQgKilcbiAgICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgICBsZXQgaW50NjMgPSB3cmFwX21vZHVsbyBpbnQ2NCBpblxuICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgICB8IGBQb3MgLT4gaW50NjMpXG4gICAgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgYnN3YXAxNiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMTYgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwMzIgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDMyICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDQ4IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXA0OCAodW53cmFwIHQpKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbnVtX2JpdHMgPSA2M1xubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gYml0X25vdFxubGV0IGJpdF94b3IgPSBiaXRfeG9yXG5sZXQgYml0X29yID0gYml0X29yXG5sZXQgYml0X2FuZCA9IGJpdF9hbmRcbmxldCBwb3Bjb3VudCA9IHBvcGNvdW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IHBvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZVxubGV0IG1pbnVzX29uZSA9IHdyYXBfZXhuIENhbWwuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC5vbmVcbmxldCB6ZXJvID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC56ZXJvXG5sZXQgaXNfcG93MiA9IGlzX3BvdzJcbmxldCBmbG9vcl9wb3cyID0gZmxvb3JfcG93MlxubGV0IGNlaWxfcG93MiA9IGNlaWxfcG93MlxubGV0IGZsb29yX2xvZzIgPSBmbG9vcl9sb2cyXG5sZXQgY2VpbF9sb2cyID0gY2VpbF9sb2cyXG5sZXQgY2x6ID0gY2x6XG5sZXQgY3R6ID0gY3R6XG5sZXQgdG9fZmxvYXQgeCA9IENhbWwuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQub2ZfZmxvYXQgeClcblxubGV0IG9mX2Zsb2F0IHQgPVxuICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgdCA+PSBmbG9hdF9sb3dlcl9ib3VuZCAmJiB0IDw9IGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gd3JhcF9tb2R1bG8gKENhbWwuSW50NjQub2ZfZmxvYXQgdClcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjMub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBvZl9pbnQ2NCA9IG9mX2ludDY0XG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBvZl9pbnQ2NF90cnVuY1xubGV0IHRvX2ludDY0ID0gdG9faW50NjRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5cbigqIFdlIGNhbiByZXVzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZyb20vdG8gaW50NjQgaGVyZS4gKilcbmxldCBvZl9pbnQgeCA9IHdyYXBfZXhuIChDb252LmludF90b19pbnQ2NCB4KVxubGV0IG9mX2ludF9leG4geCA9IG9mX2ludCB4XG5sZXQgdG9faW50IHggPSBDb252LmludDY0X3RvX2ludCAodW53cmFwIHgpXG5sZXQgdG9faW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50X3RydW5jICh1bndyYXAgeClcbmxldCBvZl9pbnQzMiB4ID0gd3JhcF9leG4gKENvbnYuaW50MzJfdG9faW50NjQgeClcbmxldCBvZl9pbnQzMl9leG4geCA9IG9mX2ludDMyIHhcbmxldCB0b19pbnQzMiB4ID0gQ29udi5pbnQ2NF90b19pbnQzMiAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfZXhuIHggPSBDb252LmludDY0X3RvX2ludDMyX2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX25hdGl2ZWludCB4ID0gb2ZfaW50NjQgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X2V4biB4ID0gd3JhcF9leG4gKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jIHggPSBvZl9pbnQ2NF90cnVuYyAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCB0b19uYXRpdmVpbnQgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50ICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfZXhuIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgKHVud3JhcCB4KVxuXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChULmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgVC5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBULmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG5cbiAgICBsZXQgdG9fc3RyaW5nIGkgPVxuICAgICAgKCogdGhlIHVzZSBvZiBbdW53cmFwX3Vuc2lnbmVkXSBoZXJlIGlzIGltcG9ydGFudCBmb3IgdGhlIGNhc2Ugb2YgW21pbl92YWx1ZV0gKilcbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgKHVud3JhcF91bnNpZ25lZCBpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBvZl9zdHJpbmcgKFwiMHhcIiBeIHMpXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZyB4XG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2M10gYW5kIFtJbnQ2My5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIHR5cGUgZW11bGF0ZWQgPSB0XG5cbiAgdHlwZSAoJ3VuZGVybHlpbmdfdHlwZSwgJ2ludGVybWVkaWF0ZV90eXBlKSB0ID1cbiAgICB8IEludCA6IChpbnQsIGludCkgdFxuICAgIHwgSW50NjQgOiAoaW50NjQsIGVtdWxhdGVkKSB0XG5lbmRcblxubGV0IHJlcHIgPSBSZXByLkludDY0XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2Jvb2wgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgZmFsc2U7IHRydWUgXSA6IHQgbGlzdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2Jvb2xcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Cb29sXCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IHRvX2ludCB4ID0gYm9vbF90b19pbnQgeFxuXG5tb2R1bGUgTm9uX3Nob3J0X2NpcmN1aXRpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZG9uJ3QgZXhwb3NlIHRoaXMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGludmFyaWFudCBtZW50aW9uZWQgYmVsb3cgb2ZcbiAgICAgKHRvX2ludCB0cnVlID0gMSkgYW5kICh0b19pbnQgZmFsc2UgPSAwKS4gKilcbiAgbGV0IHVuc2FmZV9vZl9pbnQgKHggOiBpbnQpIDogYm9vbCA9IENhbWwuT2JqLm1hZ2ljIHhcbiAgbGV0ICggfHwgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsb3IgdG9faW50IGIpXG4gIGxldCAoICYmICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbGFuZCB0b19pbnQgYilcbmVuZFxuXG4oKiBXZSBkbyB0aGlzIGFzIGEgZGlyZWN0IGFzc2VydCBvbiB0aGUgdGhlb3J5IHRoYXQgaXQncyBhIGNoZWFwIHRoaW5nIHRvIHRlc3QgYW5kIGFcbiAgIHJlYWxseSBjb3JlIGludmFyaWFudCB0aGF0IHdlIG5ldmVyIGV4cGVjdCB0byBicmVhaywgYW5kIHdlIHNob3VsZCBiZSBoYXBweSBmb3IgYVxuICAgcHJvZ3JhbSB0byBmYWlsIGltbWVkaWF0ZWx5IGlmIHRoaXMgaXMgdmlvbGF0ZWQuICopXG5sZXQgKCkgPSBhc3NlcnQgKFBvbHkuKCA9ICkgKHRvX2ludCB0cnVlKSAxICYmIFBvbHkuKCA9ICkgKHRvX2ludCBmYWxzZSkgMClcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIENhbWwuSW50MzJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50MzJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50MzIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50MzJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6IHQgLT4gdCA9IFwiJWJzd2FwX2ludDMyXCJcblxubGV0IGJzd2FwMTYgeCA9IENhbWwuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLkludDMyLmxvZ29yXG4gIGxldCAoIGxzciApID0gQ2FtbC5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IENhbWwuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gQ2FtbC5JbnQzMi5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIENhbWwuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIENhbWwuSW50MzIuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIENhbWwuSW50MzIucHJlZCB4ID0gQ2FtbC5JbnQzMi56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50MzIgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBDYW1sLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQzMi5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgKCogVGhlIFtpID0gMV0gY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgY2x6KDApIGlzIHVuZGVmaW5lZCAqKVxuICAgIGlmIENhbWwuSW50MzIuZXF1YWwgaSBDYW1sLkludDMyLm9uZSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoQ2FtbC5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVseFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzJcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChDb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQzMl0gYW5kIFtJbnQzMi5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBSZXByID0gSW50NjNfZW11bC5SZXByXG5cbigqIEluIGEgd29ybGQgd2hlcmUgdGhlIGNvbXBpbGVyIHdvdWxkIHVuZGVyc3RhbmQgW0BAaW1tZWRpYXRlNjRdIGF0dHJpYnV0ZXMgb24gdHlwZVxuICAgZGVjbGFyYXRpb25zLCB0aGlzIG1vZHVsZSBpcyBob3cgb25lIHdvdWxkIHByb2R1Y2UgYSBbdHlwZSB0XSB3aXRoIHRoaXMgYXR0cmlidXRlLiAqKVxubW9kdWxlIEltbWVkaWF0ZTY0IDogc2lnXG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICB2YWwgcmVwciA6IHQgcmVwclxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgbGV0IHJlcHIgPVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAoQ2FtbC5PYmoubWFnaWMgSW1tZWRpYXRlIDogdCByZXByKVxuICAgICAgfCBXMzIgLT4gKENhbWwuT2JqLm1hZ2ljIE5vbl9pbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBJbW1lZGlhdGU2NC5NYWtlIChJbnQpIChJbnQ2M19lbXVsKVxuXG5tb2R1bGUgQmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIEludF9pbnRmLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50IG9wdGlvblxuICAgIHZhbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludFxuICAgIHZhbCBvZl9pbnQzMiA6IGludDMyIC0+IHRcbiAgICB2YWwgdG9faW50MzIgOiB0IC0+IEludDMyLnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBJbnQzMi50XG4gICAgdmFsIG9mX2ludDY0IDogSW50NjQudCAtPiB0IG9wdGlvblxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IEludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCBvcHRpb25cbiAgICB2YWwgdG9fbmF0aXZlaW50IDogdCAtPiBuYXRpdmVpbnQgb3B0aW9uXG4gICAgdmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0XG4gICAgdmFsIHRvX25hdGl2ZWludF90cnVuYyA6IHQgLT4gbmF0aXZlaW50XG4gICAgdmFsIG9mX2Zsb2F0X3VuY2hlY2tlZCA6IGZsb2F0IC0+IHRcbiAgICB2YWwgcmVwciA6ICh0LCB0KSBJbnQ2M19lbXVsLlJlcHIudFxuICAgIHZhbCBic3dhcDE2IDogdCAtPiB0XG4gICAgdmFsIGJzd2FwMzIgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXA0OCA6IHQgLT4gdFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBOYXRpdmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHRvX2ludCB4ID0gU29tZSB4XG4gICAgbGV0IHRvX2ludF90cnVuYyB4ID0geFxuXG4gICAgKCogW29mX2ludDMyX2V4bl0gaXMgYSBzYWZlIG9wZXJhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aCA2NC1iaXQgd29yZCBzaXplcy4gKilcbiAgICBsZXQgb2ZfaW50MzIgPSBvZl9pbnQzMl9leG5cbiAgICBsZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSB0b19uYXRpdmVpbnQgeFxuICAgIGxldCB0b19uYXRpdmVpbnQgeCA9IFNvbWUgKHRvX25hdGl2ZWludCB4KVxuICAgIGxldCByZXByID0gSW50NjNfZW11bC5SZXByLkludFxuICAgIGxldCBic3dhcDMyIHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwMzIgKEludDY0Lm9mX2ludCB0KSlcbiAgICBsZXQgYnN3YXA0OCB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDQ4IChJbnQ2NC5vZl9pbnQgdCkpXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBTKSA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBOYXRpdmUgOiBTKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIEludDYzX2VtdWwgOiBTKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgKHZhbCBCYWNrZW5kLmltcGwgOiBCYWNrZW5kLlMpXG5cbm1vZHVsZSBPdmVyZmxvd19leG4gPSBzdHJ1Y3RcbiAgbGV0ICggKyApIHQgdSA9XG4gICAgbGV0IHN1bSA9IHQgKyB1IGluXG4gICAgaWYgYml0X29yIChiaXRfeG9yIHQgdSkgKGJpdF94b3IgdCAoYml0X25vdCBzdW0pKSA8IHplcm9cbiAgICB0aGVuIHN1bVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJzdW1cIiwgc2V4cF9vZl90IHN1bSBdKVxuICA7O1xuXG4gIGxldCAoIC0gKSB0IHUgPVxuICAgIGxldCBkaWZmID0gdCAtIHUgaW5cbiAgICBsZXQgcG9zX2RpZmYgPSB0ID4gdSBpblxuICAgIGlmIHQgPD4gdSAmJiBCb29sLiggPD4gKSBwb3NfZGlmZiAoaXNfcG9zaXRpdmUgZGlmZilcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC0gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwiZGlmZlwiLCBzZXhwX29mX3QgZGlmZiBdKVxuICAgIGVsc2UgZGlmZlxuICA7O1xuXG4gIGxldCBuZWdhdGl2ZV9vbmUgPSBvZl9pbnQgKC0xKVxuICBsZXQgZGl2X3dvdWxkX292ZXJmbG93IHQgdSA9IHQgPSBtaW5fdmFsdWUgJiYgdSA9IG5lZ2F0aXZlX29uZVxuXG4gIGxldCAoICogKSB0IHUgPVxuICAgIGxldCBwcm9kdWN0ID0gdCAqIHUgaW5cbiAgICBpZiB1IDw+IHplcm8gJiYgKGRpdl93b3VsZF9vdmVyZmxvdyBwcm9kdWN0IHUgfHwgcHJvZHVjdCAvIHUgPD4gdClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICogKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgcHJvZHVjdCBdKVxuICAgIGVsc2UgcHJvZHVjdFxuICA7O1xuXG4gIGxldCAoIC8gKSB0IHUgPVxuICAgIGlmIGRpdl93b3VsZF9vdmVyZmxvdyB0IHVcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC8gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgKHQgLyB1KSBdKVxuICAgIGVsc2UgdCAvIHVcbiAgOztcblxuICBsZXQgYWJzIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJhYnMgb3ZlcmZsb3dcIiBlbHNlIGFicyB0XG4gIGxldCBuZWcgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcIm5lZyBvdmVyZmxvd1wiIGVsc2UgbmVnIHRcbmVuZFxuXG5sZXQgKCkgPSBhc3NlcnQgKEludC4oID0gKSBudW1fYml0cyA2MylcblxubGV0IHJhbmRvbV9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludCBzdGF0ZSAodG9faW50X2V4biBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NCBzdGF0ZSAodG9faW50NjQgYm91bmQpKVxuOztcblxubGV0IHJhbmRvbSA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21fb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9vZl9pbnQ2NFxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50X2luY2wgc3RhdGUgKHRvX2ludF9leG4gbG8pICh0b19pbnRfZXhuIGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjRfaW5jbCBzdGF0ZSAodG9faW50NjQgbG8pICh0b19pbnQ2NCBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2wgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX2luY2xfb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9pbmNsX29mX2ludDY0XG47O1xuXG5sZXQgZmxvb3JfbG9nMiB0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHQgfD4gdG9faW50X2V4biB8PiBJbnQuZmxvb3JfbG9nMlxuICB8IFczMiAtPlxuICAgIGlmIHQgPD0gemVyb1xuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSk7XG4gICAgbGV0IGZsb29yX2xvZzIgPSByZWYgKEludC4oIC0gKSBudW1fYml0cyAyKSBpblxuICAgIHdoaWxlIGVxdWFsIHplcm8gKGJpdF9hbmQgdCAoc2hpZnRfbGVmdCBvbmUgIWZsb29yX2xvZzIpKSBkb1xuICAgICAgZmxvb3JfbG9nMiA6PSBJbnQuKCAtICkgIWZsb29yX2xvZzIgMVxuICAgIGRvbmU7XG4gICAgIWZsb29yX2xvZzJcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZXByID0gUmVwclxuXG4gIGxldCByZXByID0gcmVwclxuXG4gIG1vZHVsZSBFbXVsID0gSW50NjNfZW11bFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLktleSAqKVxubW9kdWxlIEtleSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBUd28gW3RdcyB0aGF0IFtjb21wYXJlXSBlcXVhbCBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzIGZvciB0aGUgaGFzaHRhYmxlXG4gICAgICAgIHRvIGJlaGF2ZSBwcm9wZXJseS4gKilcbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5NZXJnZV9pbnRvX2FjdGlvbiAqKVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSZW1vdmVcbiAgICB8IFNldF90byBvZiAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IHNpZ1xuICAoKiogezIgQWNjZXNzb3JzfSAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gIHZhbCBzZXhwX29mX2tleSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gU2V4cC50XG4gIHZhbCBjbGVhciA6IChfLCBfKSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQXR0ZW1wdGluZyB0byBtb2RpZnkgKFtzZXRdLCBbcmVtb3ZlXSwgZXRjLikgdGhlIGhhc2h0YWJsZSBkdXJpbmcgaXRlcmF0aW9uIChbZm9sZF0sXG4gICAgICBbaXRlcl0sIFtpdGVyX2tleXNdLCBbaXRlcmldKSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIC0+ICdjKSAtPiAnY1xuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooJ2Ega2V5IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyBvdmVyIGJvdGgga2V5cyBhbmQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5pdGVyaSBoIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBwcmludF9lbmRsaW5lIChQcmludGYuc3ByaW50ZiBcIiVkLSVkXCIga2V5IGRhdGEpKTs7XG4gICAgICAxLTRcbiAgICAgIDUtNlxuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn0gKilcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gYm9vbFxuICB2YWwgcmVtb3ZlIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgKiAnYlxuXG4gICgqKiBTZXRzIHRoZSBnaXZlbiBba2V5XSB0byBbZGF0YV0uICopXG4gIHZhbCBzZXQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFthZGRdIGFuZCBbYWRkX2V4bl0gbGVhdmUgdGhlIHRhYmxlIHVuY2hhbmdlZCBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IHByZXNlbnQuICopXG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBbIGBPayB8IGBEdXBsaWNhdGUgXVxuXG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSBjaGFuZ2VzIFt0XSdzIHZhbHVlIGZvciBba2V5XSB0byBiZSBbZiAoZmluZCB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKSAtPiAnYlxuXG4gICgqKiBbbWFwIHQgZl0gcmV0dXJucyBhIG5ldyB0YWJsZSB3aXRoIHZhbHVlcyByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIFtmXVxuICAgICAgdG8gdGhlIGN1cnJlbnQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgbGV0IGgnID0gSGFzaHRibC5tYXAgaCB+ZjooZnVuIHggLT4geCAqIDIpIGluXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGgnOztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCAxMik7ICgxLCA4KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IHRhYmxlIGJ5IGZpbHRlcmluZyB0aGUgZ2l2ZW4gdGFibGUncyB2YWx1ZXMgYnkgW2ZdOiB0aGUga2V5cyBmb3Igd2hpY2hcbiAgICAgIFtmXSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHZhbHVlIHJldHVybnMgW1NvbWVdIGFyZSBrZXB0LCBhbmQgdGhvc2UgZm9yIHdoaWNoIGl0XG4gICAgICByZXR1cm5zIFtOb25lXSBhcmUgZGlzY2FyZGVkLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5maWx0ZXJfbWFwIGggfmY6KGZ1biB4IC0+IGlmIHggPiA1IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDYpXVxuICAgICAgdn0gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCdhIGtleSAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIFJldHVybnMgbmV3IHRhYmxlcyB3aXRoIGJvdW5kIHZhbHVlcyBwYXJ0aXRpb25lZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmRcbiAgICAgIHZhbHVlcy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KSAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIFJldHVybnMgYSBwYWlyIG9mIHRhYmxlcyBbKHQxLCB0MildLCB3aGVyZSBbdDFdIGNvbnRhaW5zIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlXG4gICAgICBpbml0aWFsIHRhYmxlIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0sIGFuZCBbdDJdIGNvbnRhaW5zIHRoZSByZXN0LiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIFtmaW5kX29yX2FkZCB0IGsgfmRlZmF1bHRdIHJldHVybnMgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGtleSBba10gaWYgaXQgaXMgaW4gdGhlXG4gICAgICB0YWJsZSBbdF0sIGFuZCBvdGhlcndpc2UgYXNzaWducyBba10gdGhlIHZhbHVlIHJldHVybmVkIGJ5IFtkZWZhdWx0ICgpXS4gKilcbiAgdmFsIGZpbmRfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDoodW5pdCAtPiAnYikgLT4gJ2JcblxuICAoKiogTGlrZSBbZmluZF9vcl9hZGRdIGJ1dCBbZGVmYXVsdF0gdGFrZXMgdGhlIGtleSBhcyBhbiBhcmd1bWVudC4gKilcbiAgdmFsIGZpbmRpX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCdhIGtleSAtPiAnYikgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtDYW1sLk5vdF9mb3VuZF1cbiAgICAgIG9yIFtOb3RfZm91bmRfc10gaWYgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2JcblxuICAoKiogW2ZpbmRfYW5kX2NhbGwgdCBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXVxuXG4gICAgICBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICBbbWF0Y2ggZmluZCB0IGsgd2l0aCBTb21lIHYgLT4gaWZfZm91bmQgdiB8IE5vbmUgLT4gaWZfbm90X2ZvdW5kIGtdXG5cbiAgICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgdGhlIG9wdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgKCoqIEp1c3QgbGlrZSBbZmluZF9hbmRfY2FsbF0sIGJ1dCB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCB3aGljaCBpcyBwYXNzZWQgdG8gW2lmX2ZvdW5kXVxuICAgICAgYW5kIFtpZl9ub3RfZm91bmRdLCBzbyB0aGF0IHRoZSBjbGllbnQgY29kZSBjYW4gYXZvaWQgYWxsb2NhdGluZyBjbG9zdXJlcyBvciB1c2luZ1xuICAgICAgcmVmcyB0byBwYXNzIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgaW4gY29kZVxuICAgICAgd2hpY2ggdHJpZXMgdG8gbWluaW1pemUgaGVhcCBhbGxvY2F0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnZCAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOignYiAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnYylcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCdhIGtleSAtPiAnZCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgKCoqIFtmaW5kX2FuZF9yZW1vdmUgdCBrXSByZXR1cm5zIFNvbWUgKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIGsgaW4gdCBhbmQgcmVtb3ZlcyBpdCxcbiAgICAgIG9yIE5vbmUgaXMgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfYW5kX3JlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBNZXJnZXMgdHdvIGhhc2h0YWJsZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgW21lcmdlIGYgaDEgaDJdIGhhcyBhcyBrZXlzIHRoZSBzZXQgb2YgYWxsIFtrXSBpbiB0aGUgdW5pb24gb2YgdGhlXG4gICAgICBzZXRzIG9mIGtleXMgb2YgW2gxXSBhbmQgW2gyXSBmb3Igd2hpY2ggW2QoayldIGlzIG5vdCBOb25lLCB3aGVyZTpcblxuICAgICAgZChrKSA9XG4gICAgICAtIFtmIH5rZXk6ayAoYExlZnQgZDEpXVxuICAgICAgICBpZiBba10gaW4gW2gxXSBtYXBzIHRvIGQxLCBhbmQgW2gyXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBSaWdodCBkMildXG4gICAgICAgIGlmIFtrXSBpbiBbaDJdIG1hcHMgdG8gZDIsIGFuZCBbaDFdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYEJvdGggKGQxLCBkMikpXVxuICAgICAgICBvdGhlcndpc2UsIHdoZXJlIFtrXSBpbiBbaDFdIG1hcHMgdG8gW2QxXSBhbmQgW2tdIGluIFtoMl0gbWFwcyB0byBbZDJdLlxuXG4gICAgICBFYWNoIGtleSBba10gaXMgbWFwcGVkIHRvIGEgc2luZ2xlIHBpZWNlIG9mIGRhdGEgW3hdLCB3aGVyZSBbZChrKSA9IFNvbWUgeF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fSAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICdhKSB0XG4gICAgLT4gKCdrLCAnYikgdFxuICAgIC0+IGY6KGtleTonayBrZXkgLT4gWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYiB8IGBCb3RoIG9mICdhICogJ2IgXSAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdrLCAnYykgdFxuXG5cbiAgKCoqIEV2ZXJ5IFtrZXldIGluIFtzcmNdIHdpbGwgYmUgcmVtb3ZlZCBvciBzZXQgaW4gW2RzdF0gYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIG9mIFtmXS4gKilcbiAgdmFsIG1lcmdlX2ludG9cbiAgICA6ICBzcmM6KCdrLCAnYSkgdFxuICAgIC0+IGRzdDooJ2ssICdiKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooJ2Ega2V5IC0+IGJvb2wpIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gdW5pdFxuICB2YWwgZmlsdGVyaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gJ2IpIC0+IHVuaXRcblxuICB2YWwgbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2IpIC0+IHVuaXRcblxuICAoKiogW2ZpbHRlcl9tYXBfaW5wbGFjZV0gY29tYmluZXMgdGhlIGVmZmVjdHMgb2YgW21hcF9pbnBsYWNlXSBhbmQgW2ZpbHRlcl9pbnBsYWNlXS4gKilcbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiAnYiBvcHRpb24pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gICgqKiBbZXF1YWwgZiB0MSB0Ml0gYW5kIFtzaW1pbGFyIGYgdDEgdDJdIGJvdGggcmV0dXJuIHRydWUgaWZmIFt0MV0gYW5kIFt0Ml0gaGF2ZSB0aGVcbiAgICAgIHNhbWUga2V5cyBhbmQgZm9yIGFsbCBrZXlzIFtrXSwgW2YgKGZpbmRfZXhuIHQxIGspIChmaW5kX2V4biB0MiBrKV0uICBbZXF1YWxdIGFuZFxuICAgICAgW3NpbWlsYXJdIG9ubHkgZGlmZmVyIGluIHRoZWlyIHR5cGVzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcblxuICB2YWwgc2ltaWxhciA6ICgnYjEgLT4gJ2IyIC0+IGJvb2wpIC0+ICgnYSwgJ2IxKSB0IC0+ICgnYSwgJ2IyKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgKGtleSwgZGF0YSkgcGFpcnMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIHRvX2FsaXN0IDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIGxpc3RcblxuXG4gICgqKiBbcmVtb3ZlX2lmX3plcm9dJ3MgZGVmYXVsdCBpcyBbZmFsc2VdLiAqKVxuICB2YWwgaW5jciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICB2YWwgZGVjciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNdWx0aSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICAoKiogW2FkZF9tdWx0aSB0IH5rZXkgfmRhdGFdIGlmIFtrZXldIGlzIHByZXNlbnQgaW4gdGhlIHRhYmxlIHRoZW4gY29uc1xuICAgICAgW2RhdGFdIG9uIHRoZSBsaXN0LCBvdGhlcndpc2UgYWRkIFtrZXldIHdpdGggYSBzaW5nbGUgZWxlbWVudCBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtyZW1vdmVfbXVsdGkgdCBrZXldIHVwZGF0ZXMgdGhlIHRhYmxlLCByZW1vdmluZyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBib3VuZCB0b1xuICAgICAgW2tleV0uIElmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50IChvciBpcyBlbXB0eSkgdGhlbiB0aGUgYmluZGluZyBpc1xuICAgICAgcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgXyBsaXN0KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIFtmaW5kX211bHRpIHQga2V5XSByZXR1cm5zIHRoZSBlbXB0eSBsaXN0IGlmIFtrZXldIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZSxcbiAgICAgIHJldHVybnMgW3RdJ3MgdmFsdWVzIGZvciBba2V5XSBvdGhlcndpc2UuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIGtleSAtPiAnYiBsaXN0XG5lbmRcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICdrZXkgS2V5LnRcbiAgLT4gJ3pcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICd6XG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlIDogKCdhIGtleSwgJ2IsIHVuaXQgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdhIGtleSwgJ2IgbGlzdCwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KVxuICAgICAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCdhIGtleSwgJ3IsIGdldF9rZXk6KCdyIC0+ICdhIGtleSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIGdyb3VwXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAgICAgLT4gY29tYmluZTooJ2IgLT4gJ2IgLT4gJ2IpXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gKCdhLCAnYikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgKCoqIHsyIENyZWF0b3JzfSAqKVxuXG4gICgqKiBUaGUgbW9kdWxlIHlvdSBwYXNzIHRvIFtjcmVhdGVdIG11c3QgaGF2ZSBhIHR5cGUgdGhhdCBpcyBoYXNoYWJsZSwgc2V4cGFibGUsIGFuZFxuICAgICAgY29tcGFyYWJsZS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpOztcbiAgICAgICAgLSA6IChpbnQsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPjs7XG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygzLCBcInNvbWV0aGluZ1wiKTsgKDIsIFwid2hhdGV2ZXJcIildXG4gICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIFdoZXJlYXMgW29mX2FsaXN0XSB3aWxsIHJlcG9ydCBbRHVwbGljYXRlX2tleV0gbm8gbWF0dGVyIGhvdyBtYW55IGR1cHMgdGhlcmUgYXJlIGluXG4gICAgICB5b3VyIGxpc3QsIFtvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNdIHdpbGwgcmVwb3J0IGVhY2ggYW5kIGV2ZXJ5IGR1cGxpY2F0ZSBlbnRyeS5cblxuICAgICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleSAxXG5cbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleXMgWzE7IDJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBDcmVhdGVzIGEge3shTXVsdGl9IFwibXVsdGlcIn0gaGFzaHRhYmxlLCBpLmUuLCBhIGhhc2h0YWJsZSB3aGVyZSBlYWNoIGtleSBwb2ludHMgdG8gYVxuICAgICAgbGlzdCBwb3RlbnRpYWxseSBjb250YWluaW5nIG11bHRpcGxlIHZhbHVlcy4gU28gaW5zdGVhZCBvZiBzaG9ydC1jaXJjdWl0aW5nIHdpdGggYVxuICAgICAgW2BEdXBsaWNhdGVfa2V5XSB2YXJpYW50IG9uIGR1cGxpY2F0ZXMsIGFzIGluIFtvZl9hbGlzdF0sIFtvZl9hbGlzdF9tdWx0aV0gZm9sZHNcbiAgICAgIHRob3NlIHZhbHVlcyBpbnRvIGEgbGlzdCBmb3IgdGhlIGdpdmVuIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIEludCkgWygxLCBcImFcIik7ICgxLCBcImJcIik7ICgyLCBcImNcIik7ICgyLCBcImRcIildOztcbiAgICAgIHZhbCBoIDogKGludCwgc3RyaW5nIGxpc3QpIEhhc2h0YmwudCA9IDxhYnN0cj5cblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgLSA6IHN0cmluZyBsaXN0ID0gW1wiYlwiOyBcImFcIl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgKCoqIEFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnciBsaXN0XSB0byBjcmVhdGUgdGhlXG4gICAgICBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUuXG5cbiAgICAgIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dXG4gICAgICBdfVxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgSGFzaHRibC5jcmVhdGVfbWFwcGVkIChtb2R1bGUgSW50KVxuICAgICAgICAgICAgfmdldF9rZXk6KGZ1biB4IC0+IHgpXG4gICAgICAgICAgICB+Z2V0X2RhdGE6KGZ1biB4IC0+IHggKyAxKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiBnZXRfZGF0YTooJ3IgLT4gJ2IpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHRcblxuICAoKiogTGlrZSBbY3JlYXRlX21hcHBlZF0sIGFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnclxuICAgICAgbGlzdF0gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUgLS1cbiAgICAgIGFuZCB0aGVuLCBsaWtlIFthZGRfbXVsdGldLCBmb2xkcyB0b2dldGhlciB2YWx1ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGtleXMuIEhlcmUsXG4gICAgICB0aG91Z2gsIHRoZSBmdW5jdGlvbiB1c2VkIGZvciB0aGUgZm9sZGluZyBpcyBnaXZlbiBieSBbY29tYmluZV0gKGluc3RlYWQgb2YganVzdFxuICAgICAgYmVpbmcgYSBbY29uc10pLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5ncm91cCAobW9kdWxlIEludClcbiAgICAgICAgICAgfmdldF9rZXk6KGZ1biB4IC0+IHggLyAyKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KGZ1biB4IC0+IHgpXG4gICAgICAgICAgIH5jb21iaW5lOihmdW4geCB5IC0+IHggKiB5KVxuICAgICAgICAgICAgWyAxOyAyOyAzOyA0XVxuICAgICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoMiwgNCk7ICgxLCA2KTsgKDAsIDEpXVxuICAgICAgIHZ9ICopXG4gIHZhbCBncm91cFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAtPiBjb21iaW5lOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gc2lnXG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcblxuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogV2UgcHJvdmlkZSBhIFtzZXhwX29mX3RdIGJ1dCBub3QgYSBbdF9vZl9zZXhwXSBmb3IgdGhpcyB0eXBlIGJlY2F1c2Ugb25lIG5lZWRzIHRvIGJlXG4gICAgICBleHBsaWNpdCBhYm91dCB0aGUgaGFzaCBhbmQgY29tcGFyaXNvbiBmdW5jdGlvbnMgdXNlZCB3aGVuIGNyZWF0aW5nIGEgaGFzaHRhYmxlLlxuICAgICAgTm90ZSB0aGF0IFtIYXNodGJsLlBvbHkudF0gZG9lcyBoYXZlIFtbQEBkZXJpdmluZyBzZXhwXV0sIGFuZCB1c2VzIE9DYW1sJ3MgYnVpbHQtaW5cbiAgICAgIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYW5kIGFuZCBwb2x5bW9ycGhpYyBoYXNoaW5nLiAqKVxuICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwLnRcblxuICBpbmNsdWRlIENyZWF0b3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgKCoqIEBpbmxpbmUgKilcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAoKiogQGlubGluZSAqKVxuXG5cbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICgqKiBAaW5saW5lICopXG5cbiAgdmFsIGhhc2hhYmxlX3MgOiAoJ2tleSwgXykgdCAtPiAna2V5IEtleS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIGhhc2hhYmxlIDogJ2EgSGFzaGFibGUudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2ssICd2KSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2h0YmwgPSBzaWdcbiAgKCoqIEEgaGFzaCB0YWJsZSBpcyBhIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgaW1wbGVtZW50aW5nIGEgbWFwIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzLlxuICAgICAgSXQgc3VwcG9ydHMgY29uc3RhbnQtdGltZSBsb29rdXAgYW5kIGluLXBsYWNlIG1vZGlmaWNhdGlvbi5cblxuICAgICAgezEgVXNhZ2V9XG5cbiAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIHdlJ2xsIGNyZWF0ZSBhIGhhc2ggdGFibGUgd2l0aCBzdHJpbmcga2V5cyB1c2luZyB0aGVcbiAgICAgIHt7IWNyZWF0ZX1bY3JlYXRlXX0gY29uc3RydWN0b3IsIHdoaWNoIGV4cGVjdHMgYSBtb2R1bGUgZGVmaW5pbmcgdGhlIGtleSdzIHR5cGU6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBoID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBTdHJpbmcpOztcbiAgICAgICAgdmFsIGggOiAoc3RyaW5nLCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj5cbiAgICAgIF19XG5cbiAgICAgIFdlIGNhbiBzZXQgdGhlIHZhbHVlcyBvZiBpbmRpdmlkdWFsIGtleXMgd2l0aCB7eyFzZXR9W3NldF19LiBJZiB0aGUga2V5IGFscmVhZHkgaGFzXG4gICAgICBhIHZhbHVlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6NTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJiYXJcIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9XG5cbiAgICAgIFdlIGNhbiBhY2Nlc3MgdmFsdWVzIGJ5IGtleSwgb3IgZHVtcCBhbGwgb2YgdGhlIGhhc2ggdGFibGUncyBkYXRhOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5maW5kIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50IG9wdGlvbiA9IFNvbWUgNlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50ID0gNlxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDYpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG4gICAgICB7eyFjaGFuZ2V9W2NoYW5nZV19IGxldHMgdXMgY2hhbmdlIGEga2V5J3MgdmFsdWUgYnkgYXBwbHlpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5jaGFuZ2UgaCBcImZvb1wiIChmdW4geCAtPlxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IFNvbWUgKHggKiAyKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICApOztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCAxMik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cblxuICAgICAgV2UgY2FuIHVzZSB7eyFtZXJnZX1bbWVyZ2VdfSB0byBtZXJnZSB0d28gaGFzaHRhYmxlcyB3aXRoIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXJcbiAgICAgIGhvdyB3ZSBjaG9vc2UgdmFsdWVzIHdoZW4gYSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZmlyc3QgKFwibGVmdFwiKSBoYXNodGFibGUsIHRoZVxuICAgICAgc2Vjb25kIChcInJpZ2h0XCIpLCBvciBib3RoLiBIZXJlLCB3ZSdsbCBjb25zIHRoZSB2YWx1ZXMgd2hlbiBib3RoIGhhc2h0YWJsZXMgaGF2ZSBhXG4gICAgICBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fVxuXG4gICAgICB7MSBJbnRlcmZhY2V9ICopXG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3VibW9kdWxlcyAoKiogQGlubGluZSAqKVxuXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IEFjY2Vzc29yc1xuICBtb2R1bGUgdHlwZSBDcmVhdG9ycyA9IENyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIE11bHRpID0gTXVsdGlcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gU193aXRob3V0X3N1Ym1vZHVsZXNcbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBNZXJnZV9pbnRvX2FjdGlvblxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID0gKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICBtb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuICBlbmRcblxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSBpbnQgSGFzaHRibC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gKFN0cmluZy50LCBpbnQpIEhhc2h0YmwudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBIYXNodGJsLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kXG4gICAgICBzeW50YXggZG9lc24ndCAoYmVjYXVzZSBbdF9vZl9zZXhwXSBkb2Vzbid0IGtub3cgd2hhdCBjb21wYXJpc29uL2hhc2ggZnVuY3Rpb24gdG9cbiAgICAgIHVzZSkuICopXG4gIG1vZHVsZSBNIChLIDogVC5UKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBTZWUgdGhlIEphbmUgU3RyZWV0IFN0eWxlIEd1aWRlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBbUHJpdmF0ZV0gc3VibW9kdWxlczpcblxuICAgIGh0dHBzOi8vb3BlbnNvdXJjZS5qYW5lc3RyZWV0LmNvbS9zdGFuZGFyZHMvI3ByaXZhdGUtc3VibW9kdWxlcyAqKVxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5cbiAgICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogKCdrZXksIF8pIHQgLT4gJ2tleSBIYXNoYWJsZS50XG4gIGVuZFxuZW5kXG4iLCIoKiBBIGZldyBzbWFsbCB0aGluZ3MgY29waWVkIGZyb20gb3RoZXIgcGFydHMgb2YgQmFzZSBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHVzLCBzbyB3ZVxuICAgY2FuJ3QgdXNlIHRoZW0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBJdHMgaW1wb3J0YW50IHRoYXQgRW1wdHkgaGF2ZSBubyBhcmdzLiBJdCdzIHRlbXB0aW5nIHRvIG1ha2UgdGhpcyB0eXBlIGEgcmVjb3JkXG4gICAoZS5nLiB0byBob2xkIHRoZSBjb21wYXJlIGZ1bmN0aW9uKSwgYnV0IGEgbG90IG9mIG1lbW9yeSBpcyBzYXZlZCBieSBFbXB0eSBiZWluZyBhblxuICAgaW1tZWRpYXRlLCBzaW5jZSBhbGwgdW51c2VkIGJ1Y2tldHMgaW4gdGhlIGhhc2h0YmwgZG9uJ3QgdXNlIGFueSBtZW1vcnkgKGJlc2lkZXMgdGhlXG4gICBhcnJheSBjZWxsKSAqKVxudHlwZSAoJ2ssICd2KSB0ID1cbiAgfCBFbXB0eVxuICB8IE5vZGUgb2ZcbiAgICAgIHsgbXV0YWJsZSBsZWZ0IDogKCdrLCAndikgdFxuICAgICAgOyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSByaWdodCA6ICgnaywgJ3YpIHRcbiAgICAgIH1cbiAgfCBMZWFmIG9mXG4gICAgICB7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgfVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQ7IHJpZ2h0ID0gXyB9IC0+IGhlaWdodFxuOztcblxubGV0IGludmFyaWFudCBjb21wYXJlID1cbiAgbGV0IGxlZ2FsX2xlZnRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIGxlZnRfa2V5IGtleSA8IDApXG4gIGluXG4gIGxldCBsZWdhbF9yaWdodF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSByaWdodF9rZXkga2V5ID4gMClcbiAgaW5cbiAgbGV0IHJlYyBpbnYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gKClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrOyB2YWx1ZSA9IF87IGhlaWdodCA9IGg7IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBobCwgaHIgPSBoZWlnaHQgbGVmdCwgaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpbnYgbGVmdDtcbiAgICAgIGludiByaWdodDtcbiAgICAgIGxlZ2FsX2xlZnRfa2V5IGsgbGVmdDtcbiAgICAgIGxlZ2FsX3JpZ2h0X2tleSBrIHJpZ2h0O1xuICAgICAgYXNzZXJ0IChoID0gSW50Lm1heCBobCBociArIDEpO1xuICAgICAgYXNzZXJ0IChhYnMgKGhsIC0gaHIpIDw9IDIpXG4gIGluXG4gIGludlxuOztcblxubGV0IGludmFyaWFudCB0IH5jb21wYXJlID0gaW52YXJpYW50IGNvbXBhcmUgdFxuXG4oKiBJbiB0aGUgZm9sbG93aW5nIGNvbW1lbnRzLFxuICAgJ3QgaXMgYmFsYW5jZWQnIG1lYW5zIHRoYXQgJ2ludmFyaWFudCB0JyBkb2VzIG5vdFxuICAgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhpcyBpbXBsaWVzIG9mIGNvdXJzZSB0aGF0IGVhY2ggbm9kZSdzIGhlaWdodCBmaWVsZCBpc1xuICAgY29ycmVjdC5cbiAgICd0IGlzIGJhbGFuY2VhYmxlJyBtZWFucyB0aGF0IGhlaWdodCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgb2YgdFxuICAgZGlmZmVyIGJ5IGF0IG1vc3QgMy4gKilcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgaGF2ZSBjb3JyZWN0IGhlaWdodHNcbiAgIEBwb3N0OiBvdXRwdXQgaGFzIHRoZSBjb3JyZWN0IGhlaWdodCAqKVxubGV0IHVwZGF0ZV9oZWlnaHQgPSBmdW5jdGlvblxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBvbGRfaGVpZ2h0OyByaWdodCB9IGFzIHgpIC0+XG4gICAgbGV0IG5ld19oZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgbGVmdCkgKGhlaWdodCByaWdodCkgKyAxIGluXG4gICAgaWYgbmV3X2hlaWdodCA8PiBvbGRfaGVpZ2h0IHRoZW4geC5oZWlnaHQgPC0gbmV3X2hlaWdodFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgYXJlIGJhbGFuY2VkXG4gICBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcG9zdDogb3V0cHV0IGlzIGJhbGFuY2VkIChpbiBwYXJ0aWN1bGFyLCBoZWlnaHQgaXMgY29ycmVjdCkgKilcbmxldCBiYWxhbmNlIHRyZWUgPVxuICBtYXRjaCB0cmVlIHdpdGhcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiB0cmVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcm9vdF9ub2RlKSAtPlxuICAgIGxldCBobCA9IGhlaWdodCBsZWZ0XG4gICAgYW5kIGhyID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgKCogKyAyIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50LCBsb3dlcmluZyBpdCB0byAxIHdpbGwgYnJlYWsgdGhlIExlYWZcbiAgICAgICBhc3N1bXB0aW9ucyBpbiB0aGUgY29kZSBiZWxvdywgYW5kIHdpbGwgZm9yY2UgdXMgdG8gcHJvbW90ZSBsZWFmIG5vZGVzIGluXG4gICAgICAgdGhlIGJhbGFuY2Ugcm91dGluZS4gSXQncyBhbHNvIGZhc3Rlciwgc2luY2UgaXQgd2lsbCBiYWxhbmNlIGxlc3Mgb2Z0ZW4uXG4gICAgICAgTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSBpcyBkZWxpY2F0ZS4gIFRoZSB1cGRhdGVfaGVpZ2h0IGNhbGxzIG11c3RcbiAgICAgICBvY2N1ciBpbiB0aGUgY29ycmVjdCBvcmRlciwgc2luY2UgdXBkYXRlX2hlaWdodCBhc3N1bWVzIGl0cyBjaGlsZHJlbiBoYXZlXG4gICAgICAgdGhlIGNvcnJlY3QgaGVpZ2h0cy4gICopXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgKCogSXQgY2Fubm90IGJlIGEgbGVhZiwgYmVjYXVzZSBldmVuIGlmIHJpZ2h0IGlzIGVtcHR5LCBhIGxlYWZcbiAgICAgICAgIGlzIG9ubHkgaGVpZ2h0IDEgKilcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gbGVmdF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgbGVmdF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGVmdF9ub2RlX2xlZnQgPj0gaGVpZ2h0IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUubGVmdCA8LSBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICBsZWZ0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBpZiByaWdodCBpcyBhIGxlYWYsIHRoZW4gbGVmdCBtdXN0IGJlIGVtcHR5LiBUaGF0IG1lYW5zXG4gICAgICAgICAgICAgaGVpZ2h0IGlzIDIuIEV2ZW4gaWYgaHIgaXMgZW1wdHkgd2Ugc3RpbGwgY2FuJ3QgZ2V0IGhlcmUuICopXG4gICAgICAgICAgbWF0Y2ggbGVmdF9ub2RlX3JpZ2h0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gbHJfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IGxyX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIGxyX25vZGUpIC0+XG4gICAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gbHJfbGVmdDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxyX3JpZ2h0O1xuICAgICAgICAgICAgbHJfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgICAgbHJfbm9kZS5sZWZ0IDwtIGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICAgIGxlZnRfbm9kZV9yaWdodCkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgcmlnaHQgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gcmlnaHRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIHJpZ2h0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCByaWdodF9ub2RlX3JpZ2h0ID49IGhlaWdodCByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICByaWdodClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICAgICAgbWF0Y2ggcmlnaHRfbm9kZV9sZWZ0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gcmxfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHJsX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIHJsX25vZGUpIC0+XG4gICAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gcmxfcmlnaHQ7XG4gICAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmxfbGVmdDtcbiAgICAgICAgICAgIHJsX25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgICAgcmxfbm9kZS5yaWdodCA8LSByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICAgIHJpZ2h0X25vZGVfbGVmdCkpXG4gICAgZWxzZSAoXG4gICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICB0cmVlKVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9sZWZ0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgbGVmdCB0cmVlIHRoZW4gKCkgZWxzZSByLmxlZnQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKGxlZnQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfcmlnaHQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCByaWdodCB0cmVlIHRoZW4gKCkgZWxzZSByLnJpZ2h0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHQgaXMgYmFsYW5jZWQuXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VkLCB3aXRoIG5ldyBub2RlIGluc2VydGVkXG4gICBAcG9zdDogIWFkZGVkID0gdHJ1ZSBpZmYgdGhlIHNoYXBlIG9mIHRoZSBpbnB1dCB0cmVlIGNoYW5nZWQuICAqKVxubGV0IGFkZCA9XG4gIGxldCByZWMgYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTGVhZiAoeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrJyBrIGluXG4gICAgICAoKiBUaGlzIGNvbXBhcmUgaXMgcmV2ZXJzZWQgb24gcHVycG9zZSwgd2UgYXJlIHByZXRlbmRpbmdcbiAgICAgICAgIHRoYXQgdGhlIGxlYWYgd2FzIGp1c3QgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5XG4gICAgICAgICByb3VuZCwgdGhhdCB3YXkgd2Ugb25seSBhbGxvY2F0ZSBvbmUgbm9kZS4gKilcbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHY7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBOb2RlIHsgbGVmdCA9IHQ7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSBFbXB0eSB9XG4gICAgICAgIGVsc2UgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IHQgfSlcbiAgICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHYpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIHNldF9sZWZ0IHQgKGFkZCBsZWZ0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpXG4gICAgICBlbHNlIHNldF9yaWdodCB0IChhZGQgcmlnaHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdik7XG4gICAgICB0XG4gIGluXG4gIGZ1biB0IH5yZXBsYWNlIH5jb21wYXJlIH5hZGRlZCB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IHQgPSBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUga2V5IGRhdGEgaW5cbiAgICBpZiAhYWRkZWQgdGhlbiBiYWxhbmNlIHQgZWxzZSB0XG47O1xuXG5sZXQgcmVjIGZpcnN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gbDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBmaXJzdCBsXG47O1xuXG5sZXQgcmVjIGxhc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gciB9IC0+IGxhc3QgclxuOztcblxuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYyBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfbm90X2ZvdW5kXG4gID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZSBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZVxuICAgICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAoaWYgYyA8IDAgdGhlbiBsZWZ0IGVsc2UgcmlnaHQpXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIGtcbiAgICAgICAgYXJnMVxuICAgICAgICBhcmcyXG4gICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhICgpICgpID0gaWZfZm91bmQgZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhICgpICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnICgpID0gaWZfZm91bmQgZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSA9XG4gIGxldCBpZl9mb3VuZCBfID0gdHJ1ZSBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBmYWxzZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgcmVtb3ZlID1cbiAgbGV0IHJlYyBtaW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgXyAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IG1pbl9lbHQgbGVmdFxuICBpblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBMZWFmIF8gLT4gRW1wdHkgKCogVGhpcyBtdXN0IGJlIHRoZSByb290ICopXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT4gcmlnaHRcbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPlxuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIEVtcHR5O1xuICAgICAgdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSAocmVtb3ZlX21pbl9lbHQgbGVmdCk7XG4gICAgICB0cmVlXG4gIGluXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB0cmVlID0gbWluX2VsdCB0MiBpblxuICAgICAgKG1hdGNoIHRyZWUgd2l0aFxuICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICAgICAgIGxldCB0MiA9IGJhbGFuY2UgKHJlbW92ZV9taW5fZWx0IHQyKSBpblxuICAgICAgICAgTm9kZVxuICAgICAgICAgICB7IGxlZnQgPSB0MVxuICAgICAgICAgICA7IGtleSA9IGtcbiAgICAgICAgICAgOyB2YWx1ZSA9IHZcbiAgICAgICAgICAgOyBoZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgdDEpIChoZWlnaHQgdDIpICsgMVxuICAgICAgICAgICA7IHJpZ2h0ID0gdDJcbiAgICAgICAgICAgfVxuICAgICAgIHwgTm9kZSBfIGFzIG5vZGUgLT5cbiAgICAgICAgIHNldF9yaWdodCBub2RlIChyZW1vdmVfbWluX2VsdCB0Mik7XG4gICAgICAgICBzZXRfbGVmdCBub2RlIHQxO1xuICAgICAgICAgbm9kZSlcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgayA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgIEVtcHR5XG4gICAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gXyB9IC0+XG4gICAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBFbXB0eSlcbiAgICAgIGVsc2UgKFxuICAgICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgICB0KVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgbWVyZ2UgbGVmdCByaWdodClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXRfbGVmdCB0IChyZW1vdmUgbGVmdCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgc2V0X3JpZ2h0IHQgKHJlbW92ZSByaWdodCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gIGluXG4gIGZ1biB0IH5yZW1vdmVkIH5jb21wYXJlIGsgLT4gYmFsYW5jZSAocmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGspXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGluaXRcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGEgaW5pdFxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IEVtcHR5XG4gICAgICB9IC0+IGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBFbXB0eVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH0gfVxuICAgIC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfTsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH1cbiAgICAtPiBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKSB+ZlxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSkgfmZcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBpdGVyIGxlZnQgfmY7XG4gICAgZiB+a2V5IH5kYXRhO1xuICAgIGl0ZXIgcmlnaHQgfmZcbjs7XG5cbmxldCByZWMgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKHsga2V5OyB2YWx1ZSB9IGFzIHQpIC0+IHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXk7IHZhbHVlOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHQpIC0+XG4gICAgbWFwaV9pbnBsYWNlIH5mIGxlZnQ7XG4gICAgdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWU7XG4gICAgbWFwaV9pbnBsYWNlIH5mIHJpZ2h0XG47O1xuXG5sZXQgY2hvb3NlX2V4biA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0F2bHRyZWUuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlOyBfIH0gfCBOb2RlIHsga2V5OyB2YWx1ZTsgXyB9IC0+IGtleSwgdmFsdWVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaHRibF9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleS5TXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgaGFzaF9wYXJhbSA9IEhhc2hhYmxlLmhhc2hfcGFyYW1cbmxldCBoYXNoID0gSGFzaGFibGUuaGFzaFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbnR5cGUgKCdrLCAndikgdCA9XG4gIHsgbXV0YWJsZSB0YWJsZSA6ICgnaywgJ3YpIEF2bHRyZWUudCBhcnJheVxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtyZWNlbnRseV9hZGRlZF0gaXMgdGhlIHJlZmVyZW5jZSBwYXNzZWQgdG8gW0F2bHRyZWUuYWRkXS4gV2UgcHV0IGl0IGluIHRoZSBoYXNoXG4gICAgIHRhYmxlIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgYXQgZXZlcnkgW3NldF0uICopXG4gIDsgcmVjZW50bHlfYWRkZWQgOiBib29sIHJlZlxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgcmVjZW50bHlfYWRkZWQgPSByZWYgZmFsc2VcbiAgOyBoYXNoYWJsZVxuICA7IG11dGF0aW9uX2FsbG93ZWQgPSB0cnVlXG4gIH1cbjs7XG5cbigqKiBTdXBwbGVtZW50YWwgaGFzaC4gVGhpcyBtYXkgbm90IGJlIG5lY2Vzc2FyeSwgaXQgaXMgaW50ZW5kZWQgYXMgYSBkZWZlbnNlIGFnYWluc3QgcG9vclxuICAgIGhhc2ggZnVuY3Rpb25zLCBmb3Igd2hpY2ggdGhlIHBvd2VyIG9mIDIgc2l6ZWQgdGFibGUgd2lsbCBiZSBlc3BlY2lhbGx5IHNlbnNpdGl2ZS5cbiAgICBXaXRoIHNvbWUgdGVzdGluZyB3ZSBtYXkgY2hvb3NlIHRvIGFkZCBpdCwgYnV0IHRoaXMgdGFibGUgaXMgZGVzaWduZWQgdG8gYmUgcm9idXN0IHRvXG4gICAgY29sbGlzaW9ucywgYW5kIGluIG1vc3Qgb2YgbXkgdGVzdGluZyB0aGlzIGRlZ3JhZGVzIHBlcmZvcm1hbmNlLiAqKVxubGV0IF9zdXBwbGVtZW50YWxfaGFzaCBoID1cbiAgbGV0IGggPSBoIGx4b3IgKChoIGxzciAyMCkgbHhvciAoaCBsc3IgMTIpKSBpblxuICBoIGx4b3IgKGggbHNyIDcpIGx4b3IgKGggbHNyIDQpXG47O1xuXG5sZXQgc2xvdCB0IGtleSA9XG4gIGxldCBoYXNoID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5oYXNoIGtleSBpblxuICAoKiB0aGlzIGlzIGFsd2F5cyBub24tbmVnYXRpdmUgYmVjYXVzZSB3ZSBkbyBbbGFuZF0gd2l0aCBub24tbmVnYXRpdmUgbnVtYmVyICopXG4gIGhhc2ggbGFuZCAoQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxKVxuOztcblxubGV0IGFkZF93b3JrZXIgdCB+cmVwbGFjZSB+a2V5IH5kYXRhID1cbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkID0gdC5yZWNlbnRseV9hZGRlZCBpblxuICBhZGRlZCA6PSBmYWxzZTtcbiAgbGV0IG5ld19yb290ID1cbiAgICAoKiBUaGUgYXZsIHRyZWUgbWlnaHQgcmVwbGFjZSB0aGUgdmFsdWUgW3JlcGxhY2U9dHJ1ZV0gb3IgZG8gbm90aGluZyBbcmVwbGFjZT1mYWxzZV1cbiAgICAgICB0byB0aGUgZW50cnksIGluIHRoYXQgY2FzZSB0aGUgdGFibGUgZGlkIG5vdCBnZXQgYmlnZ2VyLCBzbyB3ZSBzaG91bGQgbm90XG4gICAgICAgaW5jcmVtZW50IGxlbmd0aCwgd2UgcGFzcyBpbiB0aGUgYm9vbCByZWYgdC5hZGRlZCBzbyB0aGF0IGl0IGNhbiB0ZWxsIHVzIHdoZXRoZXJcbiAgICAgICBpdCBhZGRlZCBvciByZXBsYWNlZC4gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbi4gU2luY2UgdGhlIGJvb2xcbiAgICAgICBpcyBhbiBpbW1lZGlhdGUgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgd3JpdGUgYmFycmllci4gKilcbiAgICBBdmx0cmVlLmFkZCB+cmVwbGFjZSByb290IH5jb21wYXJlOihjb21wYXJlX2tleSB0KSB+YWRkZWQgfmtleSB+ZGF0YVxuICBpblxuICBpZiAhYWRkZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICgqIFRoaXMgbGl0dGxlIG9wdGltaXphdGlvbiBzYXZlcyBhIGNhbWxfbW9kaWZ5IHdoZW4gdGhlIHRyZWVcbiAgICAgaGFzbid0IGJlZW4gcmViYWxhbmNlZC4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIG5ld19yb290IHJvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Rcbjs7XG5cbmxldCBtYXliZV9yZXNpemVfdGFibGUgdCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICBsZXQgc2hvdWxkX2dyb3cgPSB0Lmxlbmd0aCA+IGxlbiBpblxuICBpZiBzaG91bGRfZ3JvdyAmJiB0Lmdyb3d0aF9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyYXlfbGVuZ3RoID0gSW50Lm1pbiAobGVuICogMikgbWF4X3RhYmxlX2xlbmd0aCBpblxuICAgIGlmIG5ld19hcnJheV9sZW5ndGggPiBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpuZXdfYXJyYXlfbGVuZ3RoIEF2bHRyZWUuZW1wdHkgaW5cbiAgICAgIGxldCBvbGRfdGFibGUgPSB0LnRhYmxlIGluXG4gICAgICB0LnRhYmxlIDwtIG5ld190YWJsZTtcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgZiB+a2V5IH5kYXRhID0gYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvbGRfdGFibGUgLSAxIGRvXG4gICAgICAgIEF2bHRyZWUuaXRlciBvbGRfdGFibGUuKGkpIH5mXG4gICAgICBkb25lKSlcbjs7XG5cbmxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGE7XG4gIGlmICEodC5yZWNlbnRseV9hZGRlZClcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9IHQucmVjZW50bHlfYWRkZWQgaW5cbiAgYWRkZWRfb3JfcmVtb3ZlZCA6PSBmYWxzZTtcbiAgbGV0IG5ld19yb290ID1cbiAgICBBdmx0cmVlLnJlbW92ZSByb290IH5yZW1vdmVkOmFkZGVkX29yX3JlbW92ZWQgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuICBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgcm9vdCBuZXdfcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgaWYgIWFkZGVkX29yX3JlbW92ZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBhY2MgOj0gZiB+a2V5IH5kYXRhICFhY2NcbiAgICAgICAgfCBidWNrZXQgLT4gYWNjIDo9IEF2bHRyZWUuZm9sZCBidWNrZXQgfmluaXQ6IWFjYyB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgICFhY2NcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgICAgICAgfCBidWNrZXQgLT4gQXZsdHJlZS5pdGVyIGJ1Y2tldCB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+IHQubXV0YXRpb25fYWxsb3dlZCA8LSBtXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBpdGVyX2tleXMgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IHRhYmxlLihpKSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKGkgKyAxKVxuICBlbHNlIEF2bHRyZWUuY2hvb3NlX2V4biBhdmx0cmVlXG47O1xuXG5sZXQgY2hvb3NlX2V4biB0ID1cbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMFxuOztcblxubGV0IGNob29zZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgaW52YXJpYW50X2RhdGEgdCA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICBBdmx0cmVlLmludmFyaWFudCB0LnRhYmxlLihpKSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgZG9uZTtcbiAgbGV0IHJlYWxfbGVuID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgaSAtPlxuICAgICAgaW52YXJpYW50X2tleSBrZXk7XG4gICAgICBpbnZhcmlhbnRfZGF0YSBkYXRhO1xuICAgICAgaSArIDEpXG4gIGluXG4gIGFzc2VydCAocmVhbF9sZW4gPSB0Lmxlbmd0aClcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBpZl9mb3VuZCB2IF8gPSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgayB0ID1cbiAgICByYWlzZVxuICAgICAgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIkhhc2h0YmwuZmluZF9leG46IG5vdCBmb3VuZFwiOyB0Lmhhc2hhYmxlLnNleHBfb2ZfdCBrIF0pKVxuICBpblxuICBsZXQgZmluZF9leG4gdCBrZXkgPSBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YTp0IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxubGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IG5vdCAoZiBkYXRhKSkpXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6KGYgfmtleSB+ZGF0YSkpO1xuICBuZXdfdFxuOztcblxubGV0IG1hcCB0IH5mID0gbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDAgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBsZXQgdDEgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBuZXdfZGF0YSAtPiBzZXQgdDAgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgU2Vjb25kIG5ld19kYXRhIC0+IHNldCB0MSB+a2V5IH5kYXRhOm5ld19kYXRhKTtcbiAgdDAsIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmluZF9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGwyXG4gICAgdFxuICAgIGlkXG4gICAgfmE6dFxuICAgIH5iOmRlZmF1bHRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIF8gXyAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgdCBkZWZhdWx0IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQgKCkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsMlxuICAgIHRcbiAgICBpZFxuICAgIH5hOnRcbiAgICB+YjpkZWZhdWx0XG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSBfIF8gLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IHQgZGVmYXVsdCAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0IGtleSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdClcbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKVxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIHJvd3MgPVxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgYWRkX3RvX2dyb3VwcyByZXMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzO1xuICByZXNcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YTpGbi5pZCByb3dzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIG1hdGNoIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3Mgd2l0aFxuICB8IGBPayB0IC0+IFJlc3VsdC5PayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGtleXMgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkhhc2h0YmwuY3JlYXRlX3dpdGhfa2V5OiBkdXBsaWNhdGUga2V5c1wiXG4gICAgICAgICBbIFwia2V5c1wiLCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9rZXkga2V5cyBdKVxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgT3JfZXJyb3Iub2tfZXhuIChjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzKVxuOztcblxubGV0IG1lcmdlID1cbiAgbGV0IG1heWJlX3NldCB0IH5rZXkgfmYgZCA9XG4gICAgbWF0Y2ggZiB+a2V5IGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IHNldCB0IH5rZXkgfmRhdGE6dlxuICBpblxuICBmdW4gdF9sZWZ0IHRfcmlnaHQgfmYgLT5cbiAgICBpZiBub3QgKEhhc2hhYmxlLmVxdWFsIHRfbGVmdC5oYXNoYWJsZSB0X3JpZ2h0Lmhhc2hhYmxlKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJIYXNodGJsLm1lcmdlOiBkaWZmZXJlbnQgJ2hhc2hhYmxlJyB2YWx1ZXNcIjtcbiAgICBsZXQgbmV3X3QgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5ncm93dGhfYWxsb3dlZDp0X2xlZnQuZ3Jvd3RoX2FsbG93ZWRcbiAgICAgICAgfmhhc2hhYmxlOnRfbGVmdC5oYXNoYWJsZVxuICAgICAgICB+c2l6ZTp0X2xlZnQubGVuZ3RoXG4gICAgICAgICgpXG4gICAgaW5cbiAgICB3aXRob3V0X211dGF0aW5nIHRfbGVmdCAoZnVuICgpIC0+XG4gICAgICB3aXRob3V0X211dGF0aW5nIHRfcmlnaHQgKGZ1biAoKSAtPlxuICAgICAgICBpdGVyaSB0X2xlZnQgfmY6KGZ1biB+a2V5IH5kYXRhOmxlZnQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfcmlnaHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBMZWZ0IGxlZnQpXG4gICAgICAgICAgfCBTb21lIHJpZ2h0IC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgQm90aCAobGVmdCwgcmlnaHQpKSk7XG4gICAgICAgIGl0ZXJpIHRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOnJpZ2h0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X2xlZnQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBSaWdodCByaWdodClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgICgqIGFscmVhZHkgZG9uZSBhYm92ZSAqKSkpKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmaWx0ZXJfa2V5c19pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCBtYXBfcmVzdWx0cyA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gKGtleSwgZiB+a2V5IH5kYXRhKSA6OiBhYykgaW5cbiAgTGlzdC5pdGVyIG1hcF9yZXN1bHRzIH5mOihmdW4gKGtleSwgcmVzdWx0KSAtPlxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbW92ZSB0IGtleVxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICB3aXRob3V0X211dGF0aW5nIHQgKGZ1biAoKSAtPiBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdCcgKGZ1biAoKSAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbWF0Y2ggZmluZCB0JyBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gci5yZXR1cm4gZmFsc2VcbiAgICAgICAgfCBTb21lIGRhdGEnIC0+IGlmIG5vdCAoZXF1YWwgZGF0YSBkYXRhJykgdGhlbiByLnJldHVybiBmYWxzZSkpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXAgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gU29tZSBhIGVsc2UgTm9uZSlcbiAgbGV0IGFkZCB0IGsgPSBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKVxuXG4gIGxldCBzdHJpY3RfYWRkIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiZWxlbWVudCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgZWxzZSAoXG4gICAgICBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKTtcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgOztcblxuICBsZXQgc3RyaWN0X2FkZF9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfYWRkIHQgaylcbiAgbGV0IHJlbW92ZSA9IEhhc2h0YmwucmVtb3ZlXG5cbiAgbGV0IHN0cmljdF9yZW1vdmUgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmUgdCBrO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3IgXCJlbGVtZW50IG5vdCBpbiBzZXRcIiBrIChIYXNodGJsLnNleHBfb2Zfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9yZW1vdmVfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X3JlbW92ZSB0IGspXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBIYXNodGJsLmZvbGQgdCB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgYWNjIC0+IGYgYWNjIGtleSlcbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IHRvX2xpc3QgPSBIYXNodGJsLmtleXNcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZSB0ID1cbiAgICBzZXhwX29mX2xpc3Qgc2V4cF9vZl9lICh0b19saXN0IHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihoYXNoYWJsZSB0KS5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgaW5kZXggPSByZWYgKGxlbiAtIDEpIGluXG4gICAgZm9sZCB0IH5pbml0Olt8fF0gfmY6KGZ1biBhY2Mga2V5IC0+XG4gICAgICBpZiBBcnJheS5sZW5ndGggYWNjID0gMFxuICAgICAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiBrZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBpbmRleCA6PSAhaW5kZXggLSAxO1xuICAgICAgICBhY2MuKCFpbmRleCkgPC0ga2V5O1xuICAgICAgICBhY2MpKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9IEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IG5vdCAoZiBrZXkpKSlcbiAgbGV0IGVxdWFsIHQxIHQyID0gSGFzaHRibC5lcXVhbCAoZnVuICgpICgpIC0+IHRydWUpIHQxIHQyXG4gIGxldCBjb3B5IHQgPSBIYXNodGJsLmNvcHkgdFxuICBsZXQgZmlsdGVyIHQgfmYgPSBIYXNodGJsLmZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IEhhc2h0YmwubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gXyAtPiBTb21lICgpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGZpbHRlciB0MSB+ZjooZnVuIGtleSAtPiBub3QgKEhhc2h0YmwubWVtIHQyIGtleSkpXG5cbiAgbGV0IGludGVyIHQxIHQyID1cbiAgICBsZXQgc21hbGxlciwgbGFyZ2VyID0gaWYgbGVuZ3RoIHQxID4gbGVuZ3RoIHQyIHRoZW4gdDIsIHQxIGVsc2UgdDEsIHQyIGluXG4gICAgSGFzaHRibC5maWx0ZXJpIHNtYWxsZXIgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IEhhc2h0YmwubWVtIGxhcmdlciBrZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICAgIGxldCB0b19yZW1vdmUgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyB4IC0+IGlmIGYgeCB0aGVuIGFjIGVsc2UgeCA6OiBhYykgaW5cbiAgICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4geCAtPiByZW1vdmUgdCB4KVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaGFzaHRibCA9IEhhc2h0YmwubWFwIGhhc2h0YmwgfmY6aWdub3JlXG4gIGxldCB0b19oYXNodGJsIHQgfmYgPSBIYXNodGJsLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Zsb2F0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9mbG9hdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoZmxvYXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZmxvYXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gZmxvYXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IHRvX2Zsb2F0IHggPSB4XG5sZXQgb2ZfZmxvYXQgeCA9IHhcblxubGV0IG9mX3N0cmluZyBzID1cbiAgdHJ5IGZsb2F0X29mX3N0cmluZyBzIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcIkZsb2F0Lm9mX3N0cmluZyAlc1wiIHMgKClcbjs7XG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0uICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBpIGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxuKCogTGV0IFt5XSBiZSBhIHBvd2VyIG9mIDIuICBUaGVuIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQgaXM6XG4gICBbeiA9IHkgKiAoMSArIDIgKiogLTUyKV1cbiAgIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzXG4gICBbeCA9IHkgKiAoMSAtIDIgKiogLTUzKV1cblxuICAgSW4gZ2VuZXJhbCwgZXZlcnkgdHdvIGFkamFjZW50IGZsb2F0cyBhcmUgd2l0aGluIGEgZmFjdG9yIG9mIGJldHdlZW4gWzEgKyAyKiotNTNdXG4gICBhbmQgWzEgKyAyKiotNTJdIGZyb20gZWFjaCBvdGhlciwgdGhhdCBpcyB3aXRoaW4gWzEgKyAxLjFlLTE2XSBhbmQgWzEgKyAyLjNlLTE2XS5cblxuICAgU28gaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCBzdGFydHMgd2l0aCBcIjFcIiwgdGhlbiBpdHMgYWRqYWNlbnQgZmxvYXRzXG4gICB3aWxsIHVzdWFsbHkgZGlmZmVyIGZyb20gaXQgYnkgMSwgYW5kIHNvbWV0aW1lcyBieSAyLCBhdCB0aGUgMTd0aCBzaWduaWZpY2FudCBkaWdpdFxuICAgKGNvdW50aW5nIGZyb20gMSkuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBzdGFydHMgd2l0aCBcIjlcIiwgdGhlbiB0aGUgYWRqYWNlbnRcbiAgIGZsb2F0cyB3aWxsIGJlIG9mZiBieSBubyBtb3JlIHRoYW4gMjMgYXQgdGhlIDE2dGggYW5kIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRzLlxuXG4gICBFLmcuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5OVwiXG4gICB2fVxuICAgUHJpbnRpbmcgYSBjb3VwbGUgb2YgZXh0cmEgZGlnaXRzIHJldmVhbHMgdGhhdCB0aGUgZGlmZmVyZW5jZSBpbmRlZWQgaXMgcm91Z2hseSAxMSBhdFxuICAgZGlnaXRzIDE3dGggYW5kIDE4dGggKHRoYXQgaXMsIDEzdGggYW5kIDE0dGggYWZ0ZXIgXCIuXCIpOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTg4NlwiXG4gICB2fVxuXG4gICBUaGUgdWxwICh0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkamFjZW50IGZsb2F0cykgaXMgdHdpY2UgYXMgYmlnIG9uIHRoZSBvdGhlciBzaWRlIG9mXG4gICAxMDI0LjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuICsuIDIuKiogKC01Mi4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyNC4wMDAwMDAwMDAwMDAyMjdcIlxuICAgdn1cblxuICAgTm93IHRha2UgYSBwb3dlciBvZiAyIHdoaWNoIHN0YXJ0cyB3aXRoIDk5OlxuXG4gICB7dlxuICAgICAjIDIuKio5My4gOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAxIDIzNDU2Nzg5MDEyMzQ1Njc4XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQyMmUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuICsuIDIuKiogKC01Mi4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQ0NGUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuIC0uIDIuKiogKC01My4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQxMWUrMjdcbiAgIHZ9XG5cbiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMioqOTMgYW5kIGl0cyB0d28gbmVpZ2hib3JzIGlzIHNsaWdodGx5IG1vcmUgdGhhbiwgcmVzcGVjdGl2ZWx5LFxuICAgMSBhbmQgMiBhdCBzaWduaWZpY2FudCBkaWdpdCAxNi5cblxuICAgVGhvc2UgZXhhbXBsZXMgc2hvdyB0aGF0OlxuICAgLSAxNyBzaWduaWZpY2FudCBkaWdpdHMgaXMgYWx3YXlzIHN1ZmZpY2llbnQgdG8gcmVwcmVzZW50IGEgZmxvYXQgd2l0aG91dCBhbWJpZ3VpdHlcbiAgIC0gMTV0aCBzaWduaWZpY2FudCBkaWdpdCBjYW4gYWx3YXlzIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHlcbiAgIC0gY29udmVydGluZyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIGl0cyBuZWFyZXN0IGZsb2F0IGFuZCBiYWNrXG4gICAgIGNhbiBjaGFuZ2UgdGhlIGxhc3QgZGVjaW1hbCBkaWdpdCBieSBubyBtb3JlIHRoYW4gMVxuXG4gICBUbyBtYWtlIHN1cmUgdGhhdCBmbG9hdHMgb2J0YWluZWQgYnkgY29udmVyc2lvbiBmcm9tIGRlY2ltYWwgZnJhY3Rpb25zIChlLmcuIFwiMy4xNFwiKVxuICAgYXJlIHByaW50ZWQgd2l0aG91dCB0cmFpbGluZyBub24temVybyBkaWdpdHMsIG9uZSBzaG91bGQgY2hvb3NlIHRoZSBmaXJzdCBhbW9uZyB0aGVcbiAgICclLjE1ZycsICclLjE2ZycsIGFuZCAnJS4xN2cnIHJlcHJlc2VudGF0aW9ucyB3aGljaCBkb2VzIHJvdW5kLXRyaXA6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIiAgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lICopXG5cbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjhcIiAgICAgICAgICAgICAgICAgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1kb2VzIG5vdCByb3VuZC10cmlwICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMlwiICAgICAgICAoKiBwcmVmZXIgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAxOFwiICAgICAgICgqIHRoaXMgb25lIGhhcyBvbmUgZGlnaXQgb2YganVuayBhdCB0aGUgZW5kICopXG4gICB2fVxuXG4gICBTa2lwcGluZyB0aGUgJyUuMTZnJyBpbiB0aGUgYWJvdmUgcHJvY2VkdXJlIHNhdmVzIHVzIHNvbWUgdGltZSwgYnV0IGl0IG1lYW5zIHRoYXQsIGFzXG4gICBzZWVuIGluIHRoZSBzZWNvbmQgZXhhbXBsZSBhYm92ZSwgb2NjYXNpb25hbGx5IG51bWJlcnMgd2l0aCBleGFjdGx5IDE2IHNpZ25pZmljYW50XG4gICBkaWdpdHMgd2lsbCBoYXZlIGFuIGVycm9yIGludHJvZHVjZWQgYXQgdGhlIDE3dGggZGlnaXQuICBUaGF0IGlzIHByb2JhYmx5IE9LIGZvclxuICAgdHlwaWNhbCB1c2UsIGJlY2F1c2UgYSBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaXMgXCJ1Z2x5XCIgYWxyZWFkeS4gIEFkZGluZyBvbmVcbiAgIG1vcmUgZG9lc24ndCBtYWtlIGl0IG11Y2ggd29yc2UgZm9yIGEgaHVtYW4gcmVhZGVyLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgY2Fubm90IHNraXAgJyUuMTVnJyBhbmQgb25seSBsb29rIGF0ICclLjE2ZycgYW5kICclLjE3ZycsIHNpbmNlXG4gICB0aGUgaW5hY2N1cmFjeSBhdCB0aGUgMTZ0aCBkaWdpdCBtaWdodCBpbnRyb2R1Y2UgdGhlIG5vaXNlIHdlIHdhbnQgdG8gYXZvaWQ6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MlwiICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMVwiICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tanVuayBhdCB0aGUgZW5kICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMDlcIlxuICAgdn1cbiopXG5sZXQgdG9fc3RyaW5nIHggPVxuICB2YWxpZF9mbG9hdF9sZXhlbVxuICAgIChsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVnXCIgeCBpblxuICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN2dcIiB4KVxuOztcblxubGV0IG1heF92YWx1ZSA9IGluZmluaXR5XG5sZXQgbWluX3ZhbHVlID0gbmVnX2luZmluaXR5XG5sZXQgbWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDc0LlxubGV0IG1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTAyMi5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IHBpID0gMHgzLjI0M0Y2QTg4ODVBMzA4RDMxMzE5OEEyRTAzNzA3M1xubGV0IHNxcnRfcGkgPSAweDEuQzVCRjg5MUI0RUY2QUE3OUMzQjA1MjBENURCOTM4XG5sZXQgc3FydF8ycGkgPSAweDIuODFCMjYzRkVDNEUwQjJDQUY5NDgzRjVDRTQ1OURDXG5sZXQgZXVsZXIgPSAweDAuOTNDNDY3RTM3REIwQzdBNEQxQkUzRjgxMDE1MkNCXG5sZXQgb2ZfaW50ID0gSW50LnRvX2Zsb2F0XG5sZXQgdG9faW50ID0gSW50Lm9mX2Zsb2F0XG5sZXQgb2ZfaW50NjMgaSA9IEludDYzLnRvX2Zsb2F0IGlcbmxldCBvZl9pbnQ2NCBpID0gQ2FtbC5JbnQ2NC50b19mbG9hdCBpXG5sZXQgdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgIHwgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgUG9seS4oYml0cyA8IENhbWwuSW50NjQuemVybylcbjs7XG5cbmxldCBleHBvbmVudF9iaXRzID0gMTFcbmxldCBtYW50aXNzYV9iaXRzID0gNTJcbmxldCBleHBvbmVudF9tYXNrNjQgPSBJbnQ2NC4oc2hpZnRfbGVmdCBvbmUgZXhwb25lbnRfYml0cyAtIG9uZSlcbmxldCBleHBvbmVudF9tYXNrID0gSW50NjQudG9faW50X2V4biBleHBvbmVudF9tYXNrNjRcbmxldCBtYW50aXNzYV9tYXNrID0gSW50NjMuKHNoaWZ0X2xlZnQgb25lIG1hbnRpc3NhX2JpdHMgLSBvbmUpXG5sZXQgbWFudGlzc2FfbWFzazY0ID0gSW50NjMudG9faW50NjQgbWFudGlzc2FfbWFza1xuXG5sZXQgaWVlZV9leHBvbmVudCB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gQ2FtbC5JbnQ2NC50b19pbnRcbjs7XG5cbmxldCBpZWVlX21hbnRpc3NhIHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDYzLm9mX2ludDY0X2V4biBDYW1sLkludDY0Lihsb2dhbmQgYml0cyBtYW50aXNzYV9tYXNrNjQpXG47O1xuXG5sZXQgY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgaWYgSW50LihiaXRfYW5kIGV4cG9uZW50IGV4cG9uZW50X21hc2sgPD4gZXhwb25lbnQpXG4gIHRoZW4gZmFpbHdpdGhmIFwiZXhwb25lbnQgJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBleHBvbmVudCBleHBvbmVudF9tYXNrICgpXG4gIGVsc2UgaWYgSW50NjMuKGJpdF9hbmQgbWFudGlzc2EgbWFudGlzc2FfbWFzayA8PiBtYW50aXNzYSlcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJtYW50aXNzYSAlcyBvdXQgb2YgcmFuZ2UgWzAsICVzXVwiXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhKVxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYV9tYXNrKVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHNpZ25fYml0cyA9IGlmIG5lZ2F0aXZlIHRoZW4gQ2FtbC5JbnQ2NC5taW5faW50IGVsc2UgQ2FtbC5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9IENhbWwuSW50NjQuc2hpZnRfbGVmdCAoQ2FtbC5JbnQ2NC5vZl9pbnQgZXhwb25lbnQpIG1hbnRpc3NhX2JpdHMgaW5cbiAgICBsZXQgbWFudF9iaXRzID0gSW50NjMudG9faW50NjQgbWFudGlzc2EgaW5cbiAgICBsZXQgYml0cyA9IENhbWwuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgQ2FtbC5JbnQ2NC5mbG9hdF9vZl9iaXRzIGJpdHMpXG47O1xuXG5sZXQgY3JlYXRlX2llZWUgfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSlcbjs7XG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRvX3N0cmluZyB4ID0gUHJpbnRmLnNwcmludGYgXCIlLjhHXCIgeFxuICBsZXQgc2V4cF9vZl90IHggPSBTZXhwLkF0b20gKHRvX3N0cmluZyB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9zdHJpbmcgeFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogVGhlc2UgYXJlIHBhcnRseSBoZXJlIGFzIGEgcGVyZm9ybWFuY2UgaGFjayB0byBhdm9pZCBzb21lIGJveGluZyB3ZSdyZSBnZXR0aW5nIHdpdGhcbiAgIHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXS4gIFRoZXkgYWxzbyBtYWtlIFtGbG9hdC5pc19uZWdhdGl2ZSBuYW5dIGFuZFxuICAgW0Zsb2F0LmlzX25vbl9wb3NpdGl2ZSBuYW5dIHJldHVybiBbZmFsc2VdOyB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10gcmV0dXJuXG4gICBbdHJ1ZV0uICopXG5sZXQgaXNfcG9zaXRpdmUgdCA9IHQgPiAwLlxubGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gdCA+PSAwLlxubGV0IGlzX25lZ2F0aXZlIHQgPSB0IDwgMC5cbmxldCBpc19ub25fcG9zaXRpdmUgdCA9IHQgPD0gMC5cblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRmxvYXRcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCAlICkgPSAoICUgKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludCA9IG9mX2ludFxuICBsZXQgb2ZfZmxvYXQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgT19kb3QgPSBzdHJ1Y3RcbiAgbGV0ICggKi4gKSA9ICggKiApXG4gIGxldCAoICsuICkgPSAoICsgKVxuICBsZXQgKCAtLiApID0gKCAtIClcbiAgbGV0ICggLy4gKSA9ICggLyApXG4gIGxldCAoICUuICkgPSAoICUgKVxuICBsZXQgKCB+LS4gKSA9ICggfi0gKVxuICBsZXQgKCAqKi4gKSA9ICggKiogKVxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBib3ggPSBib3hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCA9IGNsYW1wX3VuY2hlY2tlZFxuICBsZXQgbG93ZXJfYm91bmRfZm9yX2ludCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgPSB1cHBlcl9ib3VuZF9mb3JfaW50XG4gIGxldCBzcGVjaWFsaXplZF9oYXNoID0gaGFzaF9mbG9hdFxuICBsZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgbGV0IGlyb3VuZF9uZWFyZXN0X2V4bl82NCA9IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogVGhlc2UgZnVuY3Rpb25zIHNwZWNpZmljYWxseSByZXBsYWNlIGRlZmF1bHRzIGluIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5cblxuICAgVGhlIGRlc2lyZWQgYmVoYXZpb3IgaGVyZSBpcyB0byBwcm9wYWdhdGUgYSBuYW4gaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbi4gQmVjYXVzZSB0aGVcbiAgIGZpcnN0IGNvbXBhcmlzb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4sIGl0IHN1ZmZpY2VzIHRvXG4gICBjaGVjayBpZiB4IGlzIG5hbi4gVGhlbiwgd2hlbiB4IGlzIG5hbiBvciBib3RoIHggYW5kIHkgYXJlIG5hbiwgd2UgcmV0dXJuIHggPSBuYW47IGFuZFxuICAgd2hlbiB5IGlzIG5hbiBidXQgbm90IHgsIHdlIHJldHVybiB5ID0gbmFuLlxuXG4gICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMuICBUaGUgYmVuY2htYXJrIGJlbG93IHNob3dzIGEgZmV3XG4gICBkaWZmZXJlbnQgdmVyc2lvbnMuICBUaGlzIGJlbmNobWFyayB3YXMgcnVuIG92ZXIgYW4gYXJyYXkgb2YgcmFuZG9tIGZsb2F0cyAobm9uZSBvZlxuICAgd2hpY2ggYXJlIG5hbikuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjQydXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAyLjAydXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjg4dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcblxuICAgVGhlIGJlbmNobWFyayBiZWxvdyB3YXMgcnVuIHdoZW4geCA+IHkgaXMgYWx3YXlzIHRydWUgKGFnYWluLCBubyBuYW4gdmFsdWVzKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuODN1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuOTd1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuNTZ1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuKilcbmxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxubGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQnVmZmVyX2ludGZcbmluY2x1ZGUgQ2FtbC5CdWZmZXJcblxubGV0IGNvbnRlbnRzX2J5dGVzID0gdG9fYnl0ZXNcbmxldCBhZGRfc3Vic3RyaW5nIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3Vic3RyaW5nIHQgcyBwb3MgbGVuXG5sZXQgYWRkX3N1YmJ5dGVzIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3ViYnl0ZXMgdCBzIHBvcyBsZW5cbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2Zfc3RyaW5nIChjb250ZW50cyB0KVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJ5dGVzLnRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBDYW1sLkJ1ZmZlci5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChDYW1sLkJ1ZmZlcikgKFRvX2J5dGVzKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgQ2FtbC5QcmludGV4Yy5nZXRfY2FsbHN0YWNrIGF0X21vc3RfbnVtX2ZyYW1lc1xuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgaWYgIWVsaWRlIHRoZW4gZWxpZGVkX21lc3NhZ2UgZWxzZSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHRcbjs7XG5cbmxldCB0b19zdHJpbmdfbGlzdCB0ID0gU3RyaW5nLnNwbGl0X2xpbmVzICh0b19zdHJpbmcgdClcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuTGlzdCAoTGlzdC5tYXAgKHRvX3N0cmluZ19saXN0IHQpIH5mOihmdW4geCAtPiBTZXhwLkF0b20geCkpXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHNldF9yZWNvcmRpbmcgPSBDYW1sLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IENhbWwuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuICBsZXQgbW9zdF9yZWNlbnQgKCkgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpXG5cbiAgbGV0IG1vc3RfcmVjZW50X2Zvcl9leG4gZXhuID1cbiAgICBpZiBFeG4uaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG4gdGhlbiBTb21lIChtb3N0X3JlY2VudCAoKSkgZWxzZSBOb25lXG4gIDs7XG5cbiAgKCogV2UgdHVybiBvbiBiYWNrdHJhY2VzIGJ5IGRlZmF1bHQgaWYgT0NBTUxSVU5QQVJBTSBkb2Vzbid0IGV4cGxpY2l0bHkgbWVudGlvbiB0aGVtLiAqKVxuICBsZXQgbWF5YmVfc2V0X3JlY29yZGluZyAoKSA9XG4gICAgbGV0IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyA9XG4gICAgICBtYXRjaCBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHggLT4gTGlzdC5leGlzdHMgKFN0cmluZy5zcGxpdCB4IH5vbjonLCcpIH5mOihTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCJiXCIpXG4gICAgaW5cbiAgICBpZiBub3Qgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzIHRoZW4gc2V0X3JlY29yZGluZyB0cnVlXG4gIDs7XG5cbiAgKCogdGhlIGNhbGxlciBzZXQgc29tZXRoaW5nLCB0aGV5IGFyZSByZXNwb25zaWJsZSAqKVxuXG4gIGxldCB3aXRoX3JlY29yZGluZyBiIH5mID1cbiAgICBsZXQgc2F2ZWQgPSBhbV9yZWNvcmRpbmcgKCkgaW5cbiAgICBzZXRfcmVjb3JkaW5nIGI7XG4gICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBzZXRfcmVjb3JkaW5nIHNhdmVkKVxuICA7O1xuZW5kXG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IEV4bi5tYXliZV9zZXRfcmVjb3JkaW5nICgpXG4iLCIoKiogVGhpcyBtb2R1bGUgaXMgdGhlIHRvcGxldmVsIG9mIHRoZSBCYXNlIGxpYnJhcnk7IGl0J3Mgd2hhdCB5b3UgZ2V0IHdoZW4geW91IHdyaXRlXG4gICAgW29wZW4gQmFzZV0uXG5cbiAgICBUaGUgZ29hbCBvZiBCYXNlIGlzIGJvdGggdG8gYmUgYSBtb3JlIGNvbXBsZXRlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggcmljaGVyIEFQSXMsXG4gICAgYW5kIHRvIGJlIG1vcmUgY29uc2lzdGVudCBpbiBpdHMgZGVzaWduLiBGb3IgaW5zdGFuY2UsIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5XG4gICAgc29tZSB0aGluZ3MgaGF2ZSBtb2R1bGVzIGFuZCBvdGhlcnMgZG9uJ3Q7IGluIEJhc2UsIGV2ZXJ5dGhpbmcgaXMgYSBtb2R1bGUuXG5cbiAgICBCYXNlIGV4dGVuZHMgc29tZSBtb2R1bGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgbGlrZSBbQXJyYXldLFxuICAgIFtCdWZmZXJdLCBbQnl0ZXNdLCBbQ2hhcl0sIFtIYXNodGJsXSwgW0ludDMyXSwgW0ludDY0XSwgW0xhenldLCBbTGlzdF0sIFtNYXBdLFxuICAgIFtOYXRpdmVpbnRdLCBbUHJpbnRmXSwgW1JhbmRvbV0sIFtTZXRdLCBbU3RyaW5nXSwgW1N5c10sIGFuZCBbVWNoYXJdLiBPbmUga2V5XG4gICAgZGlmZmVyZW5jZSBpcyB0aGF0IEJhc2UgZG9lc24ndCB1c2UgZXhjZXB0aW9ucyBhcyBtdWNoIGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFuZFxuICAgIGluc3RlYWQgbWFrZXMgaGVhdnkgdXNlIG9mIHRoZSBbUmVzdWx0XSB0eXBlLCBhcyBpbjpcblxuICAgIHtbIHR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiIF19XG5cbiAgICBCYXNlIGFsc28gYWRkcyBlbnRpcmVseSBuZXcgbW9kdWxlcywgbW9zdCBub3RhYmx5OlxuXG4gICAgLSBbQ29tcGFyYWJsZV0sIFtDb21wYXJhdG9yXSwgYW5kIFtDb21wYXJpc29uc10gaW4gbGlldSBvZiBwb2x5bW9ycGhpYyBjb21wYXJlLlxuICAgIC0gW0NvbnRhaW5lcl0sIHdoaWNoIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgYWNyb3NzIGNvbnRhaW5lci1saWtlIGRhdGFcbiAgICAgIHN0cnVjdHVyZXMgKGFycmF5cywgbGlzdHMsIHN0cmluZ3MpLlxuICAgIC0gW1Jlc3VsdF0sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdLCBzdXBwb3J0aW5nIHRoZSBvci1lcnJvciBwYXR0ZXJuLlxuKilcblxuKCpfIFdlIGhpZGUgdGhpcyBmcm9tIHRoZSB3ZWIgZG9jcyBiZWNhdXNlIHRoZSBsaW5lIHdyYXBwaW5nIGlzIGJhZCwgbWFraW5nIGl0XG4gIHByZXR0eSBtdWNoIGluc2NydXRhYmxlLiAqKVxuKCoqLyoqKVxuXG4oKiBUaGUgaW50ZW50IGlzIHRvIHNoYWRvdyBhbGwgb2YgSU5SSUEncyBzdGFuZGFyZCBsaWJyYXJ5LiAgTW9kdWxlcyBiZWxvdyB3b3VsZCBjYXVzZVxuICAgY29tcGlsYXRpb24gZXJyb3JzIHdpdGhvdXQgYmVpbmcgcmVtb3ZlZCBmcm9tIFtTaGFkb3dfc3RkbGliXSBiZWZvcmUgaW5jbHVzaW9uLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICAoKiBNb2R1bGVzIGRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbl9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuSW5fY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIE91dF9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuT3V0X2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgUHJpbnRmIDo9IFNoYWRvd19zdGRsaWIuUHJpbnRmXG4gIHdpdGggbW9kdWxlIFF1ZXVlIDo9IFNoYWRvd19zdGRsaWIuUXVldWVcbiAgd2l0aCBtb2R1bGUgUmFuZG9tIDo9IFNoYWRvd19zdGRsaWIuUmFuZG9tXG4gIHdpdGggbW9kdWxlIFJlc3VsdCA6PSBTaGFkb3dfc3RkbGliLlJlc3VsdFxuICB3aXRoIG1vZHVsZSBTZXQgOj0gU2hhZG93X3N0ZGxpYi5TZXRcbiAgd2l0aCBtb2R1bGUgU3RhY2sgOj0gU2hhZG93X3N0ZGxpYi5TdGFja1xuICB3aXRoIG1vZHVsZSBTdHJpbmcgOj0gU2hhZG93X3N0ZGxpYi5TdHJpbmdcbiAgd2l0aCBtb2R1bGUgU3lzIDo9IFNoYWRvd19zdGRsaWIuU3lzXG4gIHdpdGggbW9kdWxlIFVjaGFyIDo9IFNoYWRvd19zdGRsaWIuVWNoYXJcbiAgd2l0aCBtb2R1bGUgVW5pdCA6PSBTaGFkb3dfc3RkbGliLlVuaXRcbiAgKCogU3VwcG9ydCBmb3IgZ2VuZXJhdGVkIGxleGVycyAqKVxuICB3aXRoIG1vZHVsZSBMZXhpbmcgOj0gU2hhZG93X3N0ZGxpYi5MZXhpbmdcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWYpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqKi8qKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gRXhuXG5tb2R1bGUgRmllbGQgPSBGaWVsZFxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2hlciA9IEhhc2hlclxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmRcbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmdcbm1vZHVsZSBPcHRpb24gPSBPcHRpb25cbm1vZHVsZSBPcHRpb25fYXJyYXkgPSBPcHRpb25fYXJyYXlcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgUG9seSA9IFBvbHlcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gUG9seSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTFdIHVzZSBbUG9seV0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgUG9wY291bnQgPSBQb3Bjb3VudFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gdGhlIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tID0gUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IFN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gU3lzXG5tb2R1bGUgVCA9IFRcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbigqIEF2b2lkIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHVzZXMgb2YgdGhlIHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBbVF0uICopXG5pbmNsdWRlIFRcblxuKCogVGhpcyBpcyBhIGhhY2sgc28gdGhhdCBvZG9jIGNyZWF0ZXMgYmV0dGVyIGRvY3VtZW50YXRpb24uICopXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBfd2l0aF9jb21wYXJhYmxlICgqKiBAaW5saW5lICopXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpZWxkc2xpYiA9IEZpZWxkc2xpYlxuICBtb2R1bGUgUHB4X2hhc2hfbGliID0gUHB4X2hhc2hfbGliXG4gIG1vZHVsZSBWYXJpYW50c2xpYiA9IFZhcmlhbnRzbGliXG4gIG1vZHVsZSBQcHhfY29tcGFyZV9saWIgPSBQcHhfY29tcGFyZV9saWJcbiAgbW9kdWxlIFBweF9lbnVtZXJhdGVfbGliID0gUHB4X2VudW1lcmF0ZV9saWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBpbnQgPSBBcnJheS5jb21wYXJlXG4gIGxldCBlcXVhbF9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gYm9vbCA9IEFycmF5LmVxdWFsXG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAoYXJyYXlfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGFycmF5IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYm9vbCA9IChCb29sLmNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50KVxuICBsZXQgZXF1YWxfYm9vbCA9IChCb29sLmVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfY2hhciA9IChDaGFyLmNvbXBhcmUgOiBjaGFyIC0+IGNoYXIgLT4gaW50KVxuICBsZXQgZXF1YWxfY2hhciA9IChDaGFyLmVxdWFsIDogY2hhciAtPiBjaGFyIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Zsb2F0ID0gKEZsb2F0LmNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG4gIGxldCBlcXVhbF9mbG9hdCA9IChGbG9hdC5lcXVhbCA6IGZsb2F0IC0+IGZsb2F0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludCA9IChJbnQuY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50ID0gKEludC5lcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDMyID0gKEludDMyLmNvbXBhcmUgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQzMiA9IChJbnQzMi5lcXVhbCA6IGludDMyIC0+IGludDMyIC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQ2NCA9IChJbnQ2NC5jb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50NjQgPSAoSW50NjQuZXF1YWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGludCA9IExpc3QuY29tcGFyZVxuICBsZXQgZXF1YWxfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGJvb2wgPSBMaXN0LmVxdWFsXG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChsaXN0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGxpc3QgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5jb21wYXJlIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmVxdWFsIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gaW50ID1cbiAgICBPcHRpb24uY29tcGFyZVxuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gYm9vbCA9XG4gICAgT3B0aW9uLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChvcHRpb25fc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIG9wdGlvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gaW50ID0gUmVmLmNvbXBhcmVcbiAgbGV0IGVxdWFsX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBib29sID0gUmVmLmVxdWFsXG5cbiAgbGV0IHJlZl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSByZWYgPVxuICAgIFJlZi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9yZWYgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgcmVmIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgUmVmLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCAocmVmX3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHJlZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlZi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9zdHJpbmcgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFN0cmluZy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9zdHJpbmcgOiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFN0cmluZy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHN0cmluZ19vZl9zZXhwID0gKFN0cmluZy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gc3RyaW5nKVxuICBsZXQgc2V4cF9vZl9zdHJpbmcgPSAoU3RyaW5nLnNleHBfb2ZfdCA6IHN0cmluZyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfdW5pdCA9IChVbml0LmNvbXBhcmUgOiB1bml0IC0+IHVuaXQgLT4gaW50KVxuICBsZXQgZXF1YWxfdW5pdCA9IChVbml0LmVxdWFsIDogdW5pdCAtPiB1bml0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbiAgKCoqIEFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbZyBAQCBmIEBAIHhdIGlzIGVxdWl2YWxlbnQgdG8gW2cgKGYgKHgpKV0uICopXG4gIGV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbiAgKCoqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG4gICgqIFRoZXNlIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gZ2V0IHRoZSBsYXp5IGJlaGF2aW9yICopXG4gIGV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIGV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbiAgKCogVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseS4gKilcbiAgZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuICAoKiogQ29tbW9uIHN0cmluZyBvcGVyYXRpb25zICopXG4gIGxldCAoIF4gKSA9IFN0cmluZy4oIF4gKVxuXG4gICgqKiBSZWZlcmVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZSBhbmRcbiAgICAgdG8ga2VlcCByZWZlcmVuY2UgdW5ib3hpbmcgd29ya2luZyAqKVxuICBleHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbiAgZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4gICgqKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuICBsZXQgZnN0ID0gZnN0XG4gIGxldCBzbmQgPSBzbmRcblxuICAoKiogRXhjZXB0aW9ucyBzdHVmZiAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHNvIHRoYXQgdGhlIGNvbXBpbGVyIG1heSByZXdyaXRlICclcmFpc2UnIGFzICclcmVyYWlzZScuICopXG4gIGV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbiAgbGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbiAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgKCoqIE1pc2MgKilcblxuICBsZXQgcGh5c19lcXVhbCA9IHBoeXNfZXF1YWxcblxuICBleHRlcm5hbCBmb3JjZSA6ICdhIExhenkudCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbmluY2x1ZGUgQ29udGFpbmVyX2ludGYuRXhwb3J0ICgqKiBAaW5saW5lICopXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IE5vdF9mb3VuZF9zXG5cbigqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgIFtCYXNlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQmFzZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIFtCYXNlXTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgW0Jhc2UuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEJhY2t0cmFjZS5pbml0aWFsaXplX21vZHVsZSAoKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9jYXRpb25cblxubGV0IHNldF9pbnB1dF9uYW1lIG5hbWUgPSBpbnB1dF9uYW1lIDo9IG5hbWVcblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSBvbGRfdCAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgPSB7XG4gICAgbG9jOiB0O1xuICAgIG1zZzogc3RyaW5nO1xuICAgIHN1Yjogb2xkX3QgbGlzdDtcbiAgICBpZl9oaWdobGlnaHQ6IHN0cmluZztcbiAgfVxuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0X2tpbmQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0X2tpbmQgKikgPVxuICB8IFJlcG9ydF9lcnJvclxuICB8IFJlcG9ydF93YXJuaW5nIG9mIHN0cmluZ1xuICB8IFJlcG9ydF93YXJuaW5nX2FzX2Vycm9yIG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydCBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnRfYXNfZXJyb3Igb2Ygc3RyaW5nXG5cbiAgdHlwZSBsb2NhdGlvbl9tc2cgPSAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSBsb2NcblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnQgKikgPSB7XG4gICAga2luZCA6IGxvY2F0aW9uX3JlcG9ydF9raW5kO1xuICAgIG1haW4gOiBsb2NhdGlvbl9tc2c7XG4gICAgc3ViIDogbG9jYXRpb25fbXNnIGxpc3Q7XG4gIH1cblxuICB0eXBlIHQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gb2xkX3QgKilcbiAgKCoqIE9uIG9jYW1sID49IDQuMDg6IFt0XSBpcyBhIFtsb2NhdGlvbl9yZXBvcnRdIGZvciB3aGljaCBbbG9jYXRpb25fcmVwb3J0X2tpbmRdIG11c3QgYmUgW1JlcG9ydF9lcnJvcl0uICopXG5cbiAgdHlwZSB2ZXJzaW9uX3NwZWNpZmljX3QgPSBbYE5ld19lcnJvciBvZiBsb2NhdGlvbl9yZXBvcnQgfCBgT2xkX2Vycm9yIG9mIG9sZF90XVxuXG4gIGxldCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCA6IHQgLT4gdmVyc2lvbl9zcGVjaWZpY190ID0gZnVuIHggLT5cbiAgICAoKklGX0FUX0xFQVNUIDQwOCBgTmV3X2Vycm9yIHggKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggYE9sZF9lcnJvciB4ICopXG5cbiAgbGV0IGlzX3dlbGxfZm9ybWVkIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsga2luZCA9IFJlcG9ydF9lcnJvcjsgXyB9IC0+IHRydWVcbiAgICB8IGBOZXdfZXJyb3IgXyAtPiBmYWxzZVxuICAgIHwgYE9sZF9lcnJvciBfIC0+IHRydWVcblxuICBsZXQgc3RyaW5nX29mX2xvY2F0aW9uX21zZyAobXNnIDogbG9jYXRpb25fbXNnKSA9IEZvcm1hdC5hc3ByaW50ZiBcIiV0XCIgbXNnLnR4dFxuXG4gIGxldCBtYWluX21zZyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IG1haW47IF8gfSAtPlxuICAgICAgICB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgbWFpbjsgbG9jID0gbWFpbi5sb2MgfVxuICAgIHwgYE9sZF9lcnJvciB7IG1zZzsgbG9jOyBfIH0gLT4geyB0eHQgPSBtc2c7IGxvYyB9XG5cbiAgbGV0IHN1Yl9tc2dzIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGVyciAtPiB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgZXJyOyBsb2MgPSBlcnIubG9jIH0pXG4gICAgICAgICAgc3ViXG4gICAgfCBgT2xkX2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgbGV0IHJlYyBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICB8IHsgbG9jOyBtc2c7IHN1YjsgXyB9IDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyAoeyB0eHQgPSBtc2c7IGxvYyB9IDo6IGFjYykgKHN1YiBAIHRhaWwpXG4gICAgICAgIGluXG4gICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgW10gc3ViXG5cbiAgbGV0IG9mX2V4biBleG4gPVxuICAgICgqSUZfQVRfTEVBU1QgNDA2IG1hdGNoIGVycm9yX29mX2V4biBleG4gd2l0aCB8IFNvbWUgKGBPayBlKSAtPiBTb21lIGUgfCBOb25lIHwgU29tZSBgQWxyZWFkeV9kaXNwbGF5ZWQgLT4gTm9uZSAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwNiBlcnJvcl9vZl9leG4gZXhuKilcblxuICBsZXQgX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnID0geyBlcnJvciB3aXRoIG1zZyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyA9XG4gICAgbGV0IHR4dCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBtc2cgaW5cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIHR4dCB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9tc2cgZXJyb3IgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cqKVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IHN1YiA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHsgbG9jOyB0eHQgfSAtPiB7IGxvYzsgbXNnID0gdHh0OyBzdWIgPSBbXTsgaWZfaGlnaGxpZ2h0ID0gdHh0IH0pXG4gICAgICAgIHN1YlxuICAgIGluXG4gICAgeyBsb2M7IG1zZyA9IHR4dDsgc3ViOyBpZl9oaWdobGlnaHQgPSB0eHQgfVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IG1rX3R4dCB4IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIHggaW5cbiAgICBsZXQgbWsgbG9jIHggPSB7IGxvYzsgdHh0ID0gbWtfdHh0IHggfSBpblxuICAgIHtcbiAgICAgIGtpbmQgPSBSZXBvcnRfZXJyb3I7XG4gICAgICBtYWluID0gbWsgbG9jIHR4dDtcbiAgICAgIHN1YiA9IExpc3QubWFwIChmdW4geyBsb2M7IHR4dCB9IC0+IG1rIGxvYyB0eHQpIHN1YjtcbiAgICB9XG5cbiAgbGV0IG1ha2UgfnN1YiBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiBtc2cqKVxuXG4gIGxldCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MgPSB7IGVycm9yIHdpdGggbG9jIH1cblxuICBsZXQgX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jID1cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIGxvYyB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9sb2MgZXJyb3IgbG9jID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MqKVxuZW5kXG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBtc2cgPSByYWlzZV9lcnJvcmYgP2xvYyBtc2dcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuXG5sZXQgcGFyc2UgcyA9XG4gICgqSUZfTk9UX0FUX0xFQVNUIDQxMSBwYXJzZSBzICopXG4gICgqSUZfQVRfTEVBU1QgNDExIE9jYW1sX2NvbW1vbi5QYXJzZS5sb25naWRlbnQgQEAgTGV4aW5nLmZyb21fc3RyaW5nIEBAIHMgKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgIFRob21hcyBHYXphZ25haXJlLCBPQ2FtbFBybyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEZhYnJpY2UgTGUgRmVzc2FudCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgSG9uZ2JvIFpoYW5nLCBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3JpZ2luYWwgQ29kZSBmcm9tIEJlci1tZXRhb2NhbWwsIG1vZGlmaWVkIGZvciAzLjEyLjAgYW5kIGZpeGVkICopXG4oKiBQcmludGluZyBjb2RlIGV4cHJlc3Npb25zICopXG4oKiBBdXRob3JzOiAgRWQgUGl6emksIEZhYnJpY2UgTGUgRmVzc2FudCAqKVxuKCogRXh0ZW5zaXZlIFJld3JpdGU6IEhvbmdibyBaaGFuZzogVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgKilcbigqIFRPRE8gbW9yZSBmaW5lLWdyYWluZWQgcHJlY2VkZW5jZSBwcmV0dHktcHJpbnRpbmcgKilcblxub3BlbiBBc3RfNDE0XG5vcGVuIEFzdHR5cGVzXG5vcGVuIEZvcm1hdFxub3BlbiBMb2NhdGlvblxub3BlbiBMb25naWRlbnRcbm9wZW4gUGFyc2V0cmVlXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbmVuZFxuXG5sZXQgdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgaW5cbiAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBsZXQgZGVzYyA9XG4gICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSkgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lc1xuICAgICAgICAtPlxuICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT4gUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgIGluXG4gICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgbGV0IHByZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICBpblxuICBsb29wIHRcblxubGV0IHByZWZpeF9zeW1ib2xzID0gWyAnISc7ICc/JzsgJ34nIF1cblxubGV0IGluZml4X3N5bWJvbHMgPVxuICBbICc9JzsgJzwnOyAnPic7ICdAJzsgJ14nOyAnfCc7ICcmJzsgJysnOyAnLSc7ICcqJzsgJy8nOyAnJCc7ICclJzsgJyMnIF1cblxuKCogdHlwZSBmaXhpdHkgPSBJbmZpeHwgUHJlZml4ICAqKVxubGV0IHNwZWNpYWxfaW5maXhfc3RyaW5ncyA9XG4gIFsgXCJhc3JcIjsgXCJsYW5kXCI7IFwibG9yXCI7IFwibHNsXCI7IFwibHNyXCI7IFwibHhvclwiOyBcIm1vZFwiOyBcIm9yXCI7IFwiOj1cIjsgXCIhPVwiOyBcIjo6XCIgXVxuXG5sZXQgbGV0b3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnbCdcbiAgJiYgcy5bMV0gPSAnZSdcbiAgJiYgcy5bMl0gPSAndCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG5sZXQgYW5kb3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnYSdcbiAgJiYgcy5bMV0gPSAnbidcbiAgJiYgcy5bMl0gPSAnZCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG4oKiBkZXRlcm1pbmVzIGlmIHRoZSBzdHJpbmcgaXMgYW4gaW5maXggc3RyaW5nLlxuICAgY2hlY2tzIGJhY2t3YXJkcywgZmlyc3QgYWxsb3dpbmcgYSByZW5hbWluZyBwb3N0Zml4IChcIl8xMDJcIikgd2hpY2hcbiAgIG1heSBoYXZlIHJlc3VsdGVkIGZyb20gUGV4cCAtPiBUZXhwIC0+IFBleHAgdHJhbnNsYXRpb24sIHRoZW4gY2hlY2tpbmdcbiAgIGlmIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJlIHZhbGlkIGluZml4XG4gICBjaGFyYWN0ZXJzLiAqKVxubGV0IGZpeGl0eV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gYE5vcm1hbFxuICB8IHMgd2hlbiBMaXN0Lm1lbSBzIHNwZWNpYWxfaW5maXhfc3RyaW5ncyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBpbmZpeF9zeW1ib2xzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIHByZWZpeF9zeW1ib2xzIC0+IGBQcmVmaXggc1xuICB8IHMgd2hlbiBzLlswXSA9ICcuJyAtPiBgTWl4Zml4IHNcbiAgfCBzIHdoZW4gbGV0b3AgcyAtPiBgTGV0b3Agc1xuICB8IHMgd2hlbiBhbmRvcCBzIC0+IGBBbmRvcCBzXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCB2aWV3X2ZpeGl0eV9vZl9leHAgPSBmdW5jdGlvblxuICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgIGZpeGl0eV9vZl9zdHJpbmcgbFxuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgaXNfaW5maXggPSBmdW5jdGlvbiBgSW5maXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX21peGZpeCA9IGZ1bmN0aW9uIGBNaXhmaXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX2t3ZG9wID0gZnVuY3Rpb24gYExldG9wIF8gfCBgQW5kb3AgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGZpcnN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLlswXSA9IGNcbmxldCBsYXN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLltTdHJpbmcubGVuZ3RoIHN0ciAtIDFdID0gY1xubGV0IGZpcnN0X2lzX2luIGNzIHN0ciA9IHN0ciA8PiBcIlwiICYmIExpc3QubWVtIHN0ci5bMF0gY3NcblxuKCogd2hpY2ggaWRlbnRpZmllcnMgYXJlIGluIGZhY3Qgb3BlcmF0b3JzIG5lZWRpbmcgcGFyZW50aGVzZXMgKilcbmxldCBuZWVkc19wYXJlbnMgdHh0ID1cbiAgbGV0IGZpeCA9IGZpeGl0eV9vZl9zdHJpbmcgdHh0IGluXG4gIGlzX2luZml4IGZpeCB8fCBpc19taXhmaXggZml4IHx8IGlzX2t3ZG9wIGZpeFxuICB8fCBmaXJzdF9pc19pbiBwcmVmaXhfc3ltYm9scyB0eHRcblxuKCogc29tZSBpbmZpeGVzIG5lZWQgc3BhY2VzIGFyb3VuZCBwYXJlbnMgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIGNvbW1lbnRcbiAgIHN5bnRheCAqKVxubGV0IG5lZWRzX3NwYWNlcyB0eHQgPSBmaXJzdF9pcyAnKicgdHh0IHx8IGxhc3RfaXMgJyonIHR4dFxubGV0IHN0cmluZ19sb2MgcHBmIHggPSBmcHJpbnRmIHBwZiBcIiVzXCIgeC50eHRcblxuKCogYWRkIHBhcmVudGhlc2VzIHRvIGJpbmRlcnMgd2hlbiB0aGV5IGFyZSBpbiBmYWN0IGluZml4IG9yIHByZWZpeCBvcGVyYXRvcnMgKilcbmxldCBwcm90ZWN0X2lkZW50IHBwZiB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiKEA7JXNAOylcIlxuICAgIGVsc2UgXCIoJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHR4dFxuXG5sZXQgcHJvdGVjdF9sb25naWRlbnQgcHBmIHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlYS4lc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIlYS4oQDslc0A7KVwiXG4gICAgZWxzZSBcIiVhLiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0XG5cbnR5cGUgc3BhY2VfZm9ybWF0dGVyID0gKHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdFxuXG5sZXQgb3ZlcnJpZGUgPSBmdW5jdGlvbiBPdmVycmlkZSAtPiBcIiFcIiB8IEZyZXNoIC0+IFwiXCJcblxuKCogdmFyaWFuY2UgZW5jb2Rpbmc6IG5lZWQgdG8gc3luYyB1cCB3aXRoIHRoZSBbcGFyc2VyLm1seV0gKilcbmxldCB0eXBlX3ZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBOb1ZhcmlhbmNlIC0+IFwiXCJcbiAgfCBDb3ZhcmlhbnQgLT4gXCIrXCJcbiAgfCBDb250cmF2YXJpYW50IC0+IFwiLVwiXG5cbmxldCB0eXBlX2luamVjdGl2aXR5ID0gZnVuY3Rpb24gTm9JbmplY3Rpdml0eSAtPiBcIlwiIHwgSW5qZWN0aXZlIC0+IFwiIVwiXG5cbnR5cGUgY29uc3RydWN0ID1cbiAgWyBgY29ucyBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbGlzdCBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbmlsXG4gIHwgYG5vcm1hbFxuICB8IGBzaW1wbGUgb2YgTG9uZ2lkZW50LnRcbiAgfCBgdHVwbGUgXVxuXG5sZXQgdmlld19leHByIHggPVxuICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiKClcIjsgXyB9LCBfKSAtPiBgdHVwbGVcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGBuaWxcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgXykgLT5cbiAgICAgIGxldCByZWMgbG9vcCBleHAgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwIHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICAgU29tZSB7IHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBlMTsgZTIgXTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgICAgICk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgbG9vcCBlMiAoZTEgOjogYWNjKVxuICAgICAgICB8IGUgLT4gKExpc3QucmV2IChlIDo6IGFjYyksIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBscywgYiA9IGxvb3AgeCBbXSBpblxuICAgICAgaWYgYiB0aGVuIGBsaXN0IGxzIGVsc2UgYGNvbnMgbHNcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeCwgTm9uZSkgLT4gYHNpbXBsZSB4LnR4dFxuICB8IF8gLT4gYG5vcm1hbFxuXG5sZXQgaXNfc2ltcGxlX2NvbnN0cnVjdCA6IGNvbnN0cnVjdCAtPiBib29sID0gZnVuY3Rpb25cbiAgfCBgbmlsIHwgYHR1cGxlIHwgYGxpc3QgXyB8IGBzaW1wbGUgXyAtPiB0cnVlXG4gIHwgYGNvbnMgXyB8IGBub3JtYWwgLT4gZmFsc2VcblxubGV0IHBwID0gZnByaW50ZlxuXG50eXBlIGN0eHQgPSB7IHBpcGUgOiBib29sOyBzZW1pIDogYm9vbDsgaWZ0aGVuZWxzZSA6IGJvb2wgfVxuXG5sZXQgcmVzZXRfY3R4dCA9IHsgcGlwZSA9IGZhbHNlOyBzZW1pID0gZmFsc2U7IGlmdGhlbmVsc2UgPSBmYWxzZSB9XG5sZXQgdW5kZXJfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZSA9IHRydWUgfVxubGV0IHVuZGVyX3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWkgPSB0cnVlIH1cbmxldCB1bmRlcl9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlID0gdHJ1ZSB9XG4oKlxubGV0IHJlc2V0X3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWk9ZmFsc2UgfVxubGV0IHJlc2V0X2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2U9ZmFsc2UgfVxubGV0IHJlc2V0X3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGU9ZmFsc2UgfVxuKilcblxubGV0IGxpc3QgOlxuICAgICAgJ2EuXG4gICAgICA/c2VwOnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgbGlzdCAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9zZXAgP2ZpcnN0ID9sYXN0IGZ1IGYgeHMgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIHNlcCA9IG1hdGNoIHNlcCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJAIFwiIDogXyBmb3JtYXQ2KSBpblxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgIHwgeHMgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgICAgIGZ1IGYgeDtcbiAgICAgICAgICAgICAgcHAgZiBzZXA7XG4gICAgICAgICAgICAgIGxvb3AgZiB4c1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBmaXJzdDtcbiAgICAgICAgbG9vcCBmIHhzO1xuICAgICAgICBwcCBmIGxhc3RcbiAgaW5cbiAgYXV4IGYgeHNcblxubGV0IG9wdGlvbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIG9wdGlvbiAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9maXJzdCA/bGFzdCBmdSBmIGEgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NikgaW5cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgcHAgZiBmaXJzdDtcbiAgICAgIGZ1IGYgeDtcbiAgICAgIHBwIGYgbGFzdFxuXG5sZXQgcGFyZW4gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIGJvb2wgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSAtPlxuICAgICAgdW5pdCA9XG4gZnVuID8oZmlyc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpID8obGFzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgYiBmdSBmIHggLT5cbiAgaWYgYiB0aGVuIChcbiAgICBwcCBmIFwiKFwiO1xuICAgIHBwIGYgZmlyc3Q7XG4gICAgZnUgZiB4O1xuICAgIHBwIGYgbGFzdDtcbiAgICBwcCBmIFwiKVwiKVxuICBlbHNlIGZ1IGYgeFxuXG5sZXQgcmVjIGxvbmdpZGVudCBmID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBwcm90ZWN0X2lkZW50IGYgc1xuICB8IExkb3QgKHksIHMpIC0+IHByb3RlY3RfbG9uZ2lkZW50IGYgbG9uZ2lkZW50IHkgc1xuICB8IExhcHBseSAoeSwgcykgLT4gcHAgZiBcIiVhKCVhKVwiIGxvbmdpZGVudCB5IGxvbmdpZGVudCBzXG5cbmxldCBsb25naWRlbnRfbG9jIGYgeCA9IHBwIGYgXCIlYVwiIGxvbmdpZGVudCB4LnR4dFxuXG5sZXQgY29uc3RhbnQgZiA9IGZ1bmN0aW9uXG4gIHwgUGNvbnN0X2NoYXIgaSAtPiBwcCBmIFwiJUNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgTm9uZSkgLT4gcHAgZiBcIiVTXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIFNvbWUgZGVsaW0pIC0+IHBwIGYgXCJ7JXN8JXN8JXN9XCIgZGVsaW0gaSBkZWxpbVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcbiAgfCBQY29uc3RfZmxvYXQgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfZmxvYXQgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcblxuKCogdHJhaWxpbmcgc3BhY2UqKVxubGV0IG11dGFibGVfZmxhZyBmID0gZnVuY3Rpb24gSW1tdXRhYmxlIC0+ICgpIHwgTXV0YWJsZSAtPiBwcCBmIFwibXV0YWJsZUA7XCJcbmxldCB2aXJ0dWFsX2ZsYWcgZiA9IGZ1bmN0aW9uIENvbmNyZXRlIC0+ICgpIHwgVmlydHVhbCAtPiBwcCBmIFwidmlydHVhbEA7XCJcblxuKCogdHJhaWxpbmcgc3BhY2UgYWRkZWQgKilcbmxldCByZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gKCkgfCBSZWN1cnNpdmUgLT4gcHAgZiBcInJlYyBcIlxuXG5sZXQgbm9ucmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+IHBwIGYgXCJub25yZWMgXCIgfCBSZWN1cnNpdmUgLT4gKClcblxubGV0IGRpcmVjdGlvbl9mbGFnIGYgPSBmdW5jdGlvblxuICB8IFVwdG8gLT4gcHAgZiBcInRvQCBcIlxuICB8IERvd250byAtPiBwcCBmIFwiZG93bnRvQCBcIlxuXG5sZXQgcHJpdmF0ZV9mbGFnIGYgPSBmdW5jdGlvbiBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJwcml2YXRlQCBcIlxubGV0IGl0ZXJfbG9jIGYgY3R4dCB7IHR4dDsgbG9jID0gXyB9ID0gZiBjdHh0IHR4dFxubGV0IGNvbnN0YW50X3N0cmluZyBmIHMgPSBwcCBmIFwiJVNcIiBzXG5cbmxldCB0eXZhciBwcGYgcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIHMuWzFdID0gJ1xcJycgdGhlblxuICAgICgqIHdpdGhvdXQgdGhlIHNwYWNlLCB0aGlzIHdvdWxkIGJlIHBhcnNlZCBhc1xuICAgICAgIGEgY2hhcmFjdGVyIGxpdGVyYWwgKilcbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCInICVzXCIgc1xuICBlbHNlIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiclc1wiIHNcblxubGV0IHR5dmFyX2xvYyBmIHN0ciA9IHR5dmFyIGYgc3RyLnR4dFxubGV0IHN0cmluZ19xdW90IGYgeCA9IHBwIGYgXCJgJXNcIiB4XG5cbigqIGMgWydhLCdiXSAqKVxubGV0IHJlYyBjbGFzc19wYXJhbXNfZGVmIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCJbJWFdIFwiICgqIHNwYWNlICopIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5zZXA6XCIsXCIpIGxcblxuYW5kIHR5cGVfd2l0aF9sYWJlbCBjdHh0IGYgKGxhYmVsLCBjKSA9XG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGNvcmVfdHlwZTEgY3R4dCBmIGMgKCogb3RoZXJ3aXNlIHBhcmVudGhlc2l6ZSAqKVxuICB8IExhYmVsbGVkIHMgLT4gcHAgZiBcIiVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG4gIHwgT3B0aW9uYWwgcyAtPiBwcCBmIFwiPyVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG5cbmFuZCBjb3JlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYXJyb3cgKGwsIGN0MSwgY3QyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY3QxKSAoY29yZV90eXBlIGN0eHQpIGN0MlxuICAgIHwgUHR5cF9hbGlhcyAoY3QsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIGN0IHR5dmFyIHNcbiAgICB8IFB0eXBfcG9seSAoW10sIGN0KSAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgfCBQdHlwX3BvbHkgKHNsLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWElYUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhXCJcbiAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSBsKVxuICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHNsIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIHhcblxuYW5kIGNvcmVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGNvcmVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHR5cF92YXIgcyAtPiB0eXZhciBmIHNcbiAgICB8IFB0eXBfdHVwbGUgbCAtPiBwcCBmIFwiKCVhKVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgfCBQdHlwX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgKCogXCIlYSVhQDtcIiAqKSBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgWyB4IF0gLT4gcHAgZiBcIiVhQDtcIiAoY29yZV90eXBlMSBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT4gbGlzdCB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpQDtcIiAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsQDtcIiBmIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3ZhcmlhbnQgKGwsIGNsb3NlZCwgbG93KSAtPlxuICAgICAgICBsZXQgZmlyc3RfaXNfaW5oZXJpdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCB7IFBhcnNldHJlZS5wcmZfZGVzYyA9IFJpbmhlcml0IF8gfSA6OiBfIC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cGVfdmFyaWFudF9oZWxwZXIgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IFJ0YWcgKGwsIF8sIGN0bCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWElYUA7JWFAXVwiIChpdGVyX2xvYyBzdHJpbmdfcXVvdCkgbFxuICAgICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCImXCIpIGN0bClcbiAgICAgICAgICAgICAgICBjdGwgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcmZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgUmluaGVyaXQgY3QgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj5bJWElYV1AXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIChsLCBjbG9zZWQpIHdpdGhcbiAgICAgICAgICAgIHwgW10sIENsb3NlZCAtPiAoKVxuICAgICAgICAgICAgfCBbXSwgT3BlbiAtPiBwcCBmIFwiPlwiICgqIENmICM3MjAwOiBwcmludCBbPl0gY29ycmVjdGx5ICopXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJXNAOyVhXCJcbiAgICAgICAgICAgICAgICAgIChtYXRjaCAoY2xvc2VkLCBsb3cpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBOb25lIC0+IGlmIGZpcnN0X2lzX2luaGVyaXQgdGhlbiBcIiB8XCIgZWxzZSBcIlwiXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgU29tZSBfIC0+IFwiPFwiICgqIEZJWE1FIGRlc3VnYXIgdGhlIHN5bnRheCBzdWdhciopXG4gICAgICAgICAgICAgICAgICB8IE9wZW4sIF8gLT4gXCI+XCIpXG4gICAgICAgICAgICAgICAgICAobGlzdCB0eXBlX3ZhcmlhbnRfaGVscGVyIH5zZXA6XCJAOzwxIC0yPnwgXCIpXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIGxcbiAgICAgICAgICAoZnVuIGYgbG93IC0+XG4gICAgICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICAgICAgfCBTb21lIFtdIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHhzIC0+IHBwIGYgXCI+QCAlYVwiIChsaXN0IHN0cmluZ19xdW90KSB4cylcbiAgICAgICAgICBsb3dcbiAgICB8IFB0eXBfb2JqZWN0IChsLCBvKSAtPlxuICAgICAgICBsZXQgY29yZV9maWVsZF90eXBlIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBPdGFnIChsLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXM6ICVhQCAlYUAgQF1cIiBsLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wb2ZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgT2luaGVyaXQgY3QgLT4gcHAgZiBcIkBbPGhvdjI+JWFAIEBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZmllbGRfdmFyIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgQXN0dHlwZXMuQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgfCBBc3R0eXBlcy5PcGVuIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IHBwIGYgXCIuLlwiIHwgXyAtPiBwcCBmIFwiIDsuLlwiKVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj48QCAlYSVhQCA+IEBdXCJcbiAgICAgICAgICAobGlzdCBjb3JlX2ZpZWxkX3R5cGUgfnNlcDpcIjtcIilcbiAgICAgICAgICBsIGZpZWxkX3ZhciBvXG4gICAgICAgICgqIENmICM3MjAwICopXG4gICAgfCBQdHlwX2NsYXNzIChsaSwgbCkgLT5cbiAgICAgICAgKCpGSVhNRSopXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhIyVhQF1cIlxuICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3BhY2thZ2UgKGxpZCwgY3N0cnMpIC0+IChcbiAgICAgICAgbGV0IGF1eCBmIChzLCBjdCkgPVxuICAgICAgICAgIHBwIGYgXCJ0eXBlICVhQCA9QCAlYVwiIGxvbmdpZGVudF9sb2MgcyAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNzdHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWFAIHdpdGhAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAgICAgKGxpc3QgYXV4IH5zZXA6XCJAIGFuZEAgXCIpIGNzdHJzKVxuICAgIHwgUHR5cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoY29yZV90eXBlIGN0eHQpIGYgeFxuXG4oKioqKioqKioqKioqKioqKioqKipwYXR0ZXJuKioqKioqKioqKioqKioqKioqKiopXG4oKiBiZSBjYXV0aW91cyB3aGVuIHVzZSBbcGF0dGVybl0sIFtwYXR0ZXJuMV0gaXMgcHJlZmVycmVkICopXG5hbmQgcGF0dGVybiBjdHh0IGYgeCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAocGF0dGVybiBjdHh0KVxuICAgICAgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcGF0X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfYWxpYXMgKHAsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHAgcHJvdGVjdF9pZGVudCBzLnR4dFxuICAgIHwgXyAtPiBwYXR0ZXJuX29yIGN0eHQgZiB4XG5cbmFuZCBwYXR0ZXJuX29yIGN0eHQgZiB4ID1cbiAgbGV0IHJlYyBsZWZ0X2Fzc29jaWF0aXZlIHggYWNjID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9vciAocDEsIHAyKTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBsZWZ0X2Fzc29jaWF0aXZlIHAxIChwMiA6OiBhY2MpXG4gICAgfCB4IC0+IHggOjogYWNjXG4gIGluXG4gIG1hdGNoIGxlZnRfYXNzb2NpYXRpdmUgeCBbXSB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gcGF0dGVybjEgY3R4dCBmIHhcbiAgfCBvcnBhdHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IH5zZXA6XCJAIHwgXCIgKHBhdHRlcm4xIGN0eHQpKSBvcnBhdHNcblxuYW5kIHBhdHRlcm4xIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGxldCByZWMgcGF0dGVybl9saXN0X2hlbHBlciBmID0gZnVuY3Rpb25cbiAgICB8IHtcbiAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICBQcGF0X2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgU29tZSAoW10sIHsgcHBhdF9kZXNjID0gUHBhdF90dXBsZSBbIHBhdDE7IHBhdDIgXTsgXyB9KSApO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhOjolYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQxIHBhdHRlcm5fbGlzdF9oZWxwZXIgcGF0MiAoKlJBKilcbiAgICB8IHAgLT4gcGF0dGVybjEgY3R4dCBmIHBcbiAgaW5cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIFNvbWUgcCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIF8pIC0+XG4gICAgICAgIHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoKHsgdHh0OyBfIH0gYXMgbGkpLCBwbykgLT4gKFxuICAgICAgICBpZiAoKiBGSVhNRSBUaGUgdGhpcmQgZmllbGQgYWx3YXlzIGZhbHNlICopXG4gICAgICAgICAgIHR4dCA9IExpZGVudCBcIjo6XCIgdGhlbiBwcCBmIFwiJWFcIiBwYXR0ZXJuX2xpc3RfaGVscGVyIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHBvIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKFtdLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgU29tZSAodmwsIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUAgKHR5cGUgJWEpQDslYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAgICAgICAobGlzdCB+c2VwOlwiQCBcIiBzdHJpbmdfbG9jKVxuICAgICAgICAgICAgICAgIHZsIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGkpXG4gICAgfCBfIC0+IHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfcGF0dGVybiBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoKFwiKClcIiB8IFwiW11cIikgYXMgeCk7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgcHAgZiBcIiVzXCIgeFxuICAgIHwgUHBhdF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiBwcm90ZWN0X2lkZW50IGYgdHh0XG4gICAgfCBQcGF0X2FycmF5IGwgLT4gcHAgZiBcIkBbPDI+W3wlYXxdQF1cIiAobGlzdCAocGF0dGVybjEgY3R4dCkgfnNlcDpcIjtcIikgbFxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBOb25lIH0gLT4gcHAgZiBcIihtb2R1bGVAIF8pQCBcIlxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBTb21lIHMgfSAtPiBwcCBmIFwiKG1vZHVsZUAgJXMpQCBcIiBzXG4gICAgfCBQcGF0X3R5cGUgbGkgLT4gcHAgZiBcIiMlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBwYXRfcmVjb3JkIChsLCBjbG9zZWQpIC0+IChcbiAgICAgICAgbGV0IGxvbmdpZGVudF94X3BhdHRlcm4gZiAobGksIHApID1cbiAgICAgICAgICBtYXRjaCAobGksIHApIHdpdGhcbiAgICAgICAgICB8ICggeyB0eHQgPSBMaWRlbnQgczsgXyB9LFxuICAgICAgICAgICAgICB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0gKVxuICAgICAgICAgICAgd2hlbiBzID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAocGF0dGVybjEgY3R4dCkgcFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjbG9zZWQgd2l0aFxuICAgICAgICB8IENsb3NlZCAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPDI+e0A7JWFAO31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsXG4gICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj57QDslYTtffUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGwpXG4gICAgfCBQcGF0X3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDE+KCVhKUBdXCIgKGxpc3QgfnNlcDpcIixAO1wiIChwYXR0ZXJuMSBjdHh0KSkgbCAoKiBsZXZlbDEqKVxuICAgIHwgUHBhdF9jb25zdGFudCBjIC0+IHBwIGYgXCIlYVwiIGNvbnN0YW50IGNcbiAgICB8IFBwYXRfaW50ZXJ2YWwgKGMxLCBjMikgLT4gcHAgZiBcIiVhLi4lYVwiIGNvbnN0YW50IGMxIGNvbnN0YW50IGMyXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4oJWFAOzpAOyVhKUBdXCIgKHBhdHRlcm4xIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUHBhdF9sYXp5IHAgLT4gcHAgZiBcIkBbPDI+KGxhenlAOyVhKUBdXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfZXhjZXB0aW9uIHAgLT4gcHAgZiBcIkBbPDI+ZXhjZXB0aW9uQDslYUBdXCIgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQcGF0X29wZW4gKGxpZCwgcCkgLT5cbiAgICAgICAgbGV0IHdpdGhfcGFyZW4gPVxuICAgICAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBwYXRfYXJyYXkgXyB8IFBwYXRfcmVjb3JkIF9cbiAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBOb25lKSAtPlxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhIEBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAocGFyZW4gd2l0aF9wYXJlbiBAQCBwYXR0ZXJuMSBjdHh0KVxuICAgICAgICAgIHBcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAocGF0dGVybiBjdHh0KSBmIHhcblxuYW5kIGxhYmVsX2V4cCBjdHh0IGYgKGwsIG9wdCwgcCkgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+XG4gICAgICAoKiBzaW5nbGUgY2FzZSBwYXR0ZXJuIHBhcmVucyBuZWVkZWQgaGVyZSAqKVxuICAgICAgcHAgZiBcIiVhQCBcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICB8IE9wdGlvbmFsIHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICB3aGVuIHR4dCA9IHJlc3QgLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT4gcHAgZiBcIj8oJXM9QDslYSlAO1wiIHJlc3QgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzQCBcIiByZXN0KVxuICAgICAgfCBfIC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCI/JXM6KCVhPUA7JWEpQDtcIiByZXN0IChwYXR0ZXJuMSBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lczolYUA7XCIgcmVzdCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCkpXG4gIHwgTGFiZWxsZWQgbCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IHdoZW4gdHh0ID0gbFxuICAgICAgICAtPlxuICAgICAgICAgIHBwIGYgXCJ+JXNAO1wiIGxcbiAgICAgIHwgXyAtPiBwcCBmIFwifiVzOiVhQDtcIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKVxuXG5hbmQgc3VnYXJfZXhwciBjdHh0IGYgZSA9XG4gIGlmIGUucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZmFsc2VcbiAgZWxzZVxuICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfYXBwbHlcbiAgICAgICAgKCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBpZDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAgICAgIGFyZ3MgKVxuICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biAobGFiLCBfKSAtPiBsYWIgPSBOb2xhYmVsKSBhcmdzIC0+IChcbiAgICAgICAgbGV0IHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBzZXAgcmlnaHQgcHJpbnRfaW5kZXhcbiAgICAgICAgICAgIGluZGljZXMgcmVtX2FyZ3MgPVxuICAgICAgICAgIGxldCBwcmludF9wYXRoIHBwZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBtIC0+IHBwIHBwZiBcIi4lYVwiIGxvbmdpZGVudCBtXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCAoYXNzaWduLCByZW1fYXJncykgd2l0aFxuICAgICAgICAgIHwgZmFsc2UsIFtdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGggcGF0aF9wcmVmaXhcbiAgICAgICAgICAgICAgICBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHQ7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IHRydWUsIFsgdiBdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAIDwtQDs8MSAyPiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoXG4gICAgICAgICAgICAgICAgcGF0aF9wcmVmaXggbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0XG4gICAgICAgICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIHY7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGlkLCBMaXN0Lm1hcCBzbmQgYXJncykgd2l0aFxuICAgICAgICB8IExpZGVudCBcIiFcIiwgWyBlIF0gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3Y+ISVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTtcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgfCBMZG90IChwYXRoLCAoKFwiZ2V0XCIgfCBcInNldFwiKSBhcyBmdW5jKSksIGEgOjogb3RoZXJfYXJncyAtPiAoXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gZnVuYyA9IFwic2V0XCIgaW5cbiAgICAgICAgICAgIGxldCBwcmludCA9IHByaW50X2luZGV4b3AgYSBOb25lIGFzc2lnbiBpblxuICAgICAgICAgICAgbWF0Y2ggKHBhdGgsIG90aGVyX2FyZ3MpIHdpdGhcbiAgICAgICAgICAgIHwgTGlkZW50IFwiQXJyYXlcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuKFwiIFwiXCIgXCIpXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJTdHJpbmdcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuW1wiIFwiXCIgXCJdXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MVwiKSwgaTEgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTJcIiksIGkxIDo6IGkyIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5M1wiKSwgaTEgOjogaTIgOjogaTMgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTI7IGkzIF0gcmVzdFxuICAgICAgICAgICAgfCAoIExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiR2VuYXJyYXlcIiksXG4gICAgICAgICAgICAgICAgeyBwZXhwX2Rlc2MgPSBQZXhwX2FycmF5IGluZGV4ZXM7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gOjogcmVzdFxuICAgICAgICAgICAgICApIC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBpbmRleGVzIHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfCAoTGlkZW50IHMgfCBMZG90IChfLCBzKSksIGEgOjogaSA6OiByZXN0IHdoZW4gZmlyc3RfaXMgJy4nIHMgLT5cbiAgICAgICAgICAgICgqIGV4dHJhY3Qgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICBhc3NpZ25tZW50IG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldCBeIFwiPC1cIl0sXG4gICAgICAgICAgICAgICBhY2Nlc3Mgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0XSBkaXJlY3RseVxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIGxldCBtdWx0aV9pbmRpY2VzID0gU3RyaW5nLmNvbnRhaW5zIHMgJzsnIGluXG4gICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgIG1hdGNoIGkucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IGwgd2hlbiBtdWx0aV9pbmRpY2VzIC0+IGxcbiAgICAgICAgICAgICAgfCBfIC0+IFsgaSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGxhc3RfaXMgJy0nIHMgaW5cbiAgICAgICAgICAgIGxldCBraW5kID1cbiAgICAgICAgICAgICAgKCogZXh0cmFjdCB0aGUgcmlnaHQgZW5kIGJyYWNrZXQgKilcbiAgICAgICAgICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYXNzaWduIHRoZW4gcy5bbiAtIDNdIGVsc2Ugcy5bbiAtIDFdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgIHwgJyknIC0+ICgnKCcsIFwiKVwiKVxuICAgICAgICAgICAgICB8ICddJyAtPiAoJ1snLCBcIl1cIilcbiAgICAgICAgICAgICAgfCAnfScgLT4gKCd7JywgXCJ9XCIpXG4gICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcGF0aF9wcmVmaXggPVxuICAgICAgICAgICAgICBtYXRjaCBpZCB3aXRoIExkb3QgKG0sIF8pIC0+IFNvbWUgbSB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0ID0gU3RyaW5nLnN1YiBzIDAgKDEgKyBTdHJpbmcuaW5kZXggcyBsZWZ0KSBpblxuICAgICAgICAgICAgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IFwiO1wiIHJpZ2h0XG4gICAgICAgICAgICAgIChpZiBtdWx0aV9pbmRpY2VzIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGVsc2Ugc2ltcGxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgaSByZXN0XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxuYW5kIGV4cHJlc3Npb24gY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpQCwlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KVxuICAgICAgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wZXhwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZnVuY3Rpb24gXyB8IFBleHBfZnVuIF8gfCBQZXhwX21hdGNoIF8gfCBQZXhwX3RyeSBfIHwgUGV4cF9zZXF1ZW5jZSBfXG4gICAgfCBQZXhwX25ld3R5cGUgX1xuICAgICAgd2hlbiBjdHh0LnBpcGUgfHwgY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCAoUGV4cF9pZnRoZW5lbHNlIF8gfCBQZXhwX3NlcXVlbmNlIF8pIHdoZW4gY3R4dC5pZnRoZW5lbHNlIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2xldCBfIHwgUGV4cF9sZXRtb2R1bGUgXyB8IFBleHBfb3BlbiBfIHwgUGV4cF9sZXRleGNlcHRpb24gX1xuICAgIHwgUGV4cF9sZXRvcCBfXG4gICAgICB3aGVuIGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9mdW4gKGwsIGUwLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyVhLT5AOyVhQF1cIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlMCwgcClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX25ld3R5cGUgKGxpZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDsodHlwZUA7JXMpQDstPkA7JWFAXVwiIGxpZC50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9mdW5jdGlvbiBsIC0+IHBwIGYgXCJAWzxodj5mdW5jdGlvbiVhQF1cIiAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbWF0Y2ggKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYwPkBbPDI+bWF0Y2ggJWFAXUAgd2l0aEBdJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfdHJ5IChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzxodjI+dHJ5QCAlYUBdQCBAWzwwPndpdGglYUBdQF1cIlxuICAgICAgICAgICgqIFwidHJ5QDtAWzwyPiVhQF1AXFxud2l0aEBcXG4lYVwiKilcbiAgICAgICAgICAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX2xldCAocmYsIGwsIGUpIC0+XG4gICAgICAgICgqIHBwIGYgXCJAWzwyPmxldCAlYSVhIGluQDs8MSAtMj4lYUBdXCJcbiAgICAgICAgICAgKCpubyBpbmRlbnRhdGlvbiBoZXJlLCBhIG5ldyBsaW5lKikgKilcbiAgICAgICAgKCogICByZWNfZmxhZyByZiAqKVxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5ncyByZXNldF9jdHh0KSAocmYsIGwpXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hcHBseSAoZSwgbCkgLT4gKFxuICAgICAgICBpZiBub3QgKHN1Z2FyX2V4cHIgY3R4dCBmIHgpIHRoZW5cbiAgICAgICAgICBtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgZSB3aXRoXG4gICAgICAgICAgfCBgSW5maXggcyAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKChOb2xhYmVsLCBfKSBhcyBhcmcxKTsgKChOb2xhYmVsLCBfKSBhcyBhcmcyKSBdIC0+XG4gICAgICAgICAgICAgICAgICAoKiBGSVhNRSBhc3NvY2lhdGl2aXR5IGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSAqKVxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAOyVzQDslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcxIHNcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBgUHJlZml4IHMgLT4gKFxuICAgICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExpc3QubWVtIHMgWyBcIn4rXCI7IFwifi1cIjsgXCJ+Ky5cIjsgXCJ+LS5cIiBdXG4gICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAoKiBTZWUgIzcyMDA6IGF2b2lkIHR1cm5pbmcgKH4tIDEpIGludG8gKC0gMSkgd2hpY2ggaXNcbiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCBhcyBhbiBpbnQgbGl0ZXJhbCAqKVxuICAgICAgICAgICAgICAgICAgfCBbIChfLCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RhbnQgXyB9KSBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgICAgICAgICAgICAgZWxzZSBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKE5vbGFiZWwsIHgpIF0gLT4gcHAgZiBcIkBbPDI+JXNAOyVhQF1cIiBzIChzaW1wbGVfZXhwciBjdHh0KSB4XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIlxuICAgICAgICAgICAgICAgIChmdW4gZiAoZSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoZXhwcmVzc2lvbjIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAoKiByZXNldCBoZXJlIG9ubHkgYmVjYXVzZSBbZnVuY3Rpb24sbWF0Y2gsdHJ5LHNlcXVlbmNlXVxuICAgICAgICAgICAgICAgICAgICAgYXJlIGxvd2VyIHByaW9yaXR5ICopKVxuICAgICAgICAgICAgICAgIChlLCBsKSlcbiAgICB8IFBleHBfY29uc3RydWN0IChsaSwgU29tZSBlbykgd2hlbiBub3QgKGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSlcbiAgICAgIC0+IChcbiAgICAgICAgKCogTm90IGVmZmljaWVudCBGSVhNRSopXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgY29ucyBscyAtPiBsaXN0IChzaW1wbGVfZXhwciBjdHh0KSBmIGxzIH5zZXA6XCJAOzo6QDtcIlxuICAgICAgICB8IGBub3JtYWwgLT4gcHAgZiBcIkBbPDI+JWFAOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9zZXRmaWVsZCAoZTEsIGxpLCBlMikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWFAIDwtQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUxIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgZTJcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSAoZTEsIGUyLCBlbykgLT5cbiAgICAgICAgKCogQDtAWzwyPmVsc2VAICVhQF1AXSAqKVxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8Mj5pZkAgJWFAXUA7QFs8Mj50aGVuQCAlYUBdJWFAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgPSBleHByZXNzaW9uICh1bmRlcl9pZnRoZW5lbHNlIGN0eHQpIGluXG4gICAgICAgIHBwIGYgZm10IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMSBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTJcbiAgICAgICAgICAoZnVuIGYgZW8gLT5cbiAgICAgICAgICAgIG1hdGNoIGVvIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIkA7QFs8Mj5lbHNlQDslYUBdXCIgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgKCogcHAgZiBcIigpXCIgKikpXG4gICAgICAgICAgZW9cbiAgICB8IFBleHBfc2VxdWVuY2UgXyAtPlxuICAgICAgICBsZXQgcmVjIHNlcXVlbmNlX2hlbHBlciBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3NlcXVlbmNlIChlMSwgZTIpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIHNlcXVlbmNlX2hlbHBlciAoZTEgOjogYWNjKSBlMlxuICAgICAgICAgIHwgdiAtPiBMaXN0LnJldiAodiA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsc3QgPSBzZXF1ZW5jZV9oZWxwZXIgW10geCBpblxuICAgICAgICBwcCBmIFwiQFs8aHY+JWFAXVwiIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpIGxzdFxuICAgIHwgUGV4cF9uZXcgbGkgLT4gcHAgZiBcIkBbPGhvdjI+bmV3QCAlYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIChzLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPC1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX292ZXJyaWRlIGwgLT5cbiAgICAgICAgKCogRklYTUUgKilcbiAgICAgICAgbGV0IHN0cmluZ194X2V4cHJlc3Npb24gZiAocywgZSkgPVxuICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA9QCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj57PCVhPn1AXVwiIChsaXN0IHN0cmluZ194X2V4cHJlc3Npb24gfnNlcDpcIjtcIikgbFxuICAgIHwgUGV4cF9sZXRtb2R1bGUgKHMsIG1lLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIG1vZHVsZUAgJXNAID1AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX2V4cHIgcmVzZXRfY3R4dCkgbWUgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGNkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIGV4Y2VwdGlvbkAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgICAgICAgY2QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hc3NlcnQgZSAtPiBwcCBmIFwiQFs8aG92Mj5hc3NlcnRAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9sYXp5IGUgLT4gcHAgZiBcIkBbPGhvdjI+bGF6eUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgKCogUGV4cF9wb2x5OiBpbXBvc3NpYmxlIGJ1dCB3ZSBzaG91bGQgcHJpbnQgaXQgYW55d2F5LCByYXRoZXIgdGhhblxuICAgICAgIGFzc2VydCBmYWxzZSAqKVxuICAgIHwgUGV4cF9wb2x5IChlLCBOb25lKSAtPiBwcCBmIFwiQFs8aG92Mj4hcG9seSFAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oIXBvbHkhQCAlYUAgOiAlYSlAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgby5wb3Blbl9leHByIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfdmFyaWFudCAobCwgU29tZSBlbykgLT4gcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICB8IFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+QFs8dj4lYUAsJWFAXSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5nX29wIGN0eHQpIGxldF9cbiAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZ19vcCBjdHh0KSlcbiAgICAgICAgICBhbmRzIChleHByZXNzaW9uIGN0eHQpIGJvZHlcbiAgICB8IFBleHBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHBwIGYgXCIuXCJcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjEgY3R4dCBmIHhcblxuYW5kIGV4cHJlc3Npb24xIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX29iamVjdCBjcyAtPiBwcCBmIFwiJWFcIiAoY2xhc3Nfc3RydWN0dXJlIGN0eHQpIGNzXG4gICAgfCBfIC0+IGV4cHJlc3Npb24yIGN0eHQgZiB4XG4oKiB1c2VkIGluIFtQZXhwX2FwcGx5XSAqKVxuXG5hbmQgZXhwcmVzc2lvbjIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZmllbGQgKGUsIGxpKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYS4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZW5kIChlLCBzKSAtPiBwcCBmIFwiQFs8aG92Mj4lYSMlc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgcy50eHRcbiAgICB8IF8gLT4gc2ltcGxlX2V4cHIgY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBfIHdoZW4gaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpIC0+IChcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBuaWwgLT4gcHAgZiBcIltdXCJcbiAgICAgICAgfCBgdHVwbGUgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgfCBgbGlzdCB4cyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGh2MD5bJWFdQF1cIlxuICAgICAgICAgICAgICAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKVxuICAgICAgICAgICAgICB4c1xuICAgICAgICB8IGBzaW1wbGUgeCAtPiBsb25naWRlbnQgZiB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX2lkZW50IGxpIC0+IGxvbmdpZGVudF9sb2MgZiBsaVxuICAgICgqIChtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgeCB3aXRoICopXG4gICAgKCogfGBOb3JtYWwgLT4gbG9uZ2lkZW50X2xvYyBmIGxpICopXG4gICAgKCogfCBgUHJlZml4IF8gfCBgSW5maXggXyAtPiBwcCBmIFwiKCAlYSApXCIgbG9uZ2lkZW50X2xvYyBsaSkgKilcbiAgICB8IFBleHBfY29uc3RhbnQgYyAtPiBjb25zdGFudCBmIGNcbiAgICB8IFBleHBfcGFjayBtZSAtPiBwcCBmIFwiKG1vZHVsZUA7JWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQZXhwX3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhKUBdXCIgKGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIH5zZXA6XCIsQDtcIikgbFxuICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSA6ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9jb2VyY2UgKGUsIGN0bzEsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhJWEgOj4gJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIChvcHRpb24gKGNvcmVfdHlwZSBjdHh0KSB+Zmlyc3Q6XCIgOiBcIiB+bGFzdDpcIiBcIilcbiAgICAgICAgICBjdG8xXG4gICAgICAgICAgKCogbm8gc2VwIGhpbnQqKSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgY3RcbiAgICB8IFBleHBfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBleHBfcmVjb3JkIChsLCBlbykgLT5cbiAgICAgICAgbGV0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gZiAobGksIGUpID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9XG4gICAgICAgICAgICB3aGVuIGxpLnR4dCA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+e0A7JWElYUBdQDt9QF1cIiAoKiBcIkBbPGhvdjI+eyVhJWF9QF1cIiAqKVxuICAgICAgICAgIChvcHRpb24gfmxhc3Q6XCIgd2l0aEA7XCIgKHNpbXBsZV9leHByIGN0eHQpKVxuICAgICAgICAgIGVvXG4gICAgICAgICAgKGxpc3QgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF9hcnJheSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPDI+W3wlYXxdQF1AXVwiXG4gICAgICAgICAgKGxpc3QgKHNpbXBsZV9leHByICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfd2hpbGUgKGUxLCBlMikgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPSBcIkBbPDI+d2hpbGVAOyVhQDtkb0A7JWFAO2RvbmVAXVwiIGluXG4gICAgICAgIHBwIGYgZm10IChleHByZXNzaW9uIGN0eHQpIGUxIChleHByZXNzaW9uIGN0eHQpIGUyXG4gICAgfCBQZXhwX2ZvciAocywgZTEsIGUyLCBkZiwgZTMpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzxodjI+QFs8Mj5mb3IgJWEgPUA7JWFAOyVhJWFAO2RvQF1AOyVhQF1AO2RvbmVAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gZXhwcmVzc2lvbiBjdHh0IGluXG4gICAgICAgIHBwIGYgZm10IChwYXR0ZXJuIGN0eHQpIHMgZXhwcmVzc2lvbiBlMSBkaXJlY3Rpb25fZmxhZyBkZiBleHByZXNzaW9uIGUyXG4gICAgICAgICAgZXhwcmVzc2lvbiBlM1xuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChleHByZXNzaW9uIGN0eHQpIGYgeFxuXG5hbmQgYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoYXR0cmlidXRlIGN0eHQgZikgbFxuYW5kIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoaXRlbV9hdHRyaWJ1dGUgY3R4dCBmKSBsXG5cbmFuZCBhdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGl0ZW1fYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgZiB4ID1cbiAgKCogbm90ZTogdmFsdWVfZGVzY3JpcHRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgICAgICAgYnV0IHRoZXkncmUgYWxyZWFkeSBwcmludGVkIGJ5IHRoZSBjYWxsZXJzIHRoaXMgbWV0aG9kICopXG4gIHBwIGYgXCJAWzxob3YyPiVhJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgeC5wdmFsX3R5cGVcbiAgICAoZnVuIGYgeCAtPlxuICAgICAgaWYgeC5wdmFsX3ByaW0gPD4gW10gdGhlblxuICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChsaXN0IGNvbnN0YW50X3N0cmluZykgeC5wdmFsX3ByaW0pXG4gICAgeFxuXG5hbmQgZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPSBwcCBmIFwiQFs8Mj5bJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID1cbiAgcHAgZiBcIkBbPDI+WyUlJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICBwcCBmIFwiQFs8aG92Mj5leGNlcHRpb25AICVhQF0lYVwiXG4gICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgIHgucHR5ZXhuX2NvbnN0cnVjdG9yIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleG5fYXR0cmlidXRlc1xuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0Zl9kZXNjIHdpdGhcbiAgfCBQY3RmX2luaGVyaXQgY3QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVhQF0lYVwiIChjbGFzc190eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX3ZhbCAocywgbWYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCBAICVhJWElc0AgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX21ldGhvZCAocywgcGYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCAlYSAlYSVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnRAICVhQCA9QCAlYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY3RmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY3RmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgeyBwY3NpZ19zZWxmID0gY3Q7IHBjc2lnX2ZpZWxkcyA9IGw7IF8gfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdEBbPDE+JWFAXUAgJWFAXUAgZW5kQF1cIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYW55OyBwdHlwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+ICgpXG4gICAgICB8IGN0IC0+IHBwIGYgXCIgKCVhKVwiIChjb3JlX3R5cGUgY3R4dCkgY3QpXG4gICAgY3RcbiAgICAobGlzdCAoY2xhc3NfdHlwZV9maWVsZCBjdHh0KSB+c2VwOlwiQDtcIilcbiAgICBsXG5cbigqIGNhbGwgW2NsYXNzX3NpZ25hdHVyZV0gY2FsbGVkIGJ5IFtjbGFzc19zaWduYXR1cmVdICopXG5hbmQgY2xhc3NfdHlwZSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0eV9kZXNjIHdpdGhcbiAgfCBQY3R5X3NpZ25hdHVyZSBjcyAtPlxuICAgICAgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiBjcztcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgcHAgZiBcIiVhJWElYVwiXG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2Fycm93IChsLCBjbywgY2wpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGNvKSAoY2xhc3NfdHlwZSBjdHh0KSBjbFxuICB8IFBjdHlfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGV4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9vcGVuIChvLCBlKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfdHlwZSBjdHh0KSBlXG5cbigqIFtjbGFzcyB0eXBlIGEgPSBvYmplY3QgZW5kXSAqKVxuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbCA9XG4gIGxldCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGt3ZCBmIHggPVxuICAgIGxldCB7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gPSB4IGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQCA9QCAlYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIpXG4gICAgICAgIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgIHhzXG5cbmFuZCBjbGFzc19maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGNmX2Rlc2Mgd2l0aFxuICB8IFBjZl9pbmhlcml0IChvdmYsIGNlLCBzbykgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVzQCAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgICAgIChmdW4gZiBzbyAtPlxuICAgICAgICAgIG1hdGNoIHNvIHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgcyAtPiBwcCBmIFwiQCBhcyAlc1wiIHMudHh0KVxuICAgICAgICBzbyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsJXMgJWElcyA9QDslYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgdmlydHVhbCAlYSAlcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgdmlydHVhbCAlYSVzIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBsZXQgYmluZCBlID1cbiAgICAgICAgYmluZGluZyBjdHh0IGZcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIHM7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwdmJfZXhwciA9IGU7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCVzICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgcHJpdmF0ZV9mbGFnIHBmXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlcyA6QDslYT1AOyVhXCIgcy50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgTm9uZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgYmluZCBlXG4gICAgICAgICAgfCBfIC0+IGJpbmQgZSlcbiAgICAgICAgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50ICVhID1AOyVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9pbml0aWFsaXplciBlIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbml0aWFsaXplckAgJWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGNmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY2ZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiB7IHBjc3RyX3NlbGYgPSBwOyBwY3N0cl9maWVsZHMgPSBsIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3QlYUA7JWFAXUA7ZW5kQF1cIlxuICAgIChmdW4gZiBwIC0+XG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICB8IFBwYXRfY29uc3RyYWludCBfIC0+IHBwIGYgXCIgJWFcIiAocGF0dGVybiBjdHh0KSBwXG4gICAgICB8IF8gLT4gcHAgZiBcIiAoJWEpXCIgKHBhdHRlcm4gY3R4dCkgcClcbiAgICBwXG4gICAgKGxpc3QgKGNsYXNzX2ZpZWxkIGN0eHQpKVxuICAgIGxcblxuYW5kIGNsYXNzX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBjbF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBjbF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBjbF9kZXNjIHdpdGhcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgY3MgLT4gY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiBjc1xuICAgIHwgUGNsX2Z1biAobCwgZW8sIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5AICVhQCAtPkAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlbywgcCkgKGNsYXNzX2V4cHIgY3R4dCkgZVxuICAgIHwgUGNsX2xldCAocmYsIGwsIGNlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAIGluQCAlYVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgfCBQY2xfYXBwbHkgKGNlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiKCglYSlAICVhKVwiXG4gICAgICAgICAgKCogQ2Y6ICM3MjAwICopIChjbGFzc19leHByIGN0eHQpXG4gICAgICAgICAgY2VcbiAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgIGxcbiAgICB8IFBjbF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIGlmIGwgPD4gW10gdGhlbiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgKGNlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYUAgOkAgJWEpXCIgKGNsYXNzX2V4cHIgY3R4dCkgY2UgKGNsYXNzX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBjbF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBjbF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfZXhwciBjdHh0KSBlXG5cbmFuZCBtb2R1bGVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG10eV9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIG10MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvciAoKSAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKHMsIG10MSksIG10MikgLT4gKFxuICAgICAgICBtYXRjaCBzLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdDFcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvckAgKCVzQCA6QCAlYSlAIC0+QCAlYUBdXCIgbmFtZVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQxIChtb2R1bGVfdHlwZSBjdHh0KSBtdDIpXG4gICAgfCBQbXR5X3dpdGggKG10LCBbXSkgLT4gbW9kdWxlX3R5cGUgY3R4dCBmIG10XG4gICAgfCBQbXR5X3dpdGggKG10LCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgd2l0aEAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXRcbiAgICAgICAgICAobGlzdCAod2l0aF9jb25zdHJhaW50IGN0eHQpIH5zZXA6XCJAIGFuZEAgXCIpXG4gICAgICAgICAgbFxuICAgIHwgXyAtPiBtb2R1bGVfdHlwZTEgY3R4dCBmIHhcblxuYW5kIHdpdGhfY29uc3RyYWludCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFB3aXRoX3R5cGUgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhID1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHVsZSAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZSAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuICB8IFB3aXRoX3R5cGVzdWJzdCAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgOj1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHN1YnN0IChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuXG5hbmQgbW9kdWxlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBtb2R1bGVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X2FsaWFzIGxpIC0+IHBwIGYgXCIobW9kdWxlICVhKVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfc2lnbmF0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+c2lnQCAlYUBdQCBlbmRAXVwiICgqIFwiQFs8aG92PnNpZ0AgJWFAIGVuZEBdXCIgKilcbiAgICAgICAgICAobGlzdCAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkpXG4gICAgICAgICAgc1xuICAgICAgICAoKiBGSVhNRSB3cm9uZyBpbmRlbnRhdGlvbiopXG4gICAgfCBQbXR5X3R5cGVvZiBtZSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAIG9mQCAlYUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChtb2R1bGVfdHlwZSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmVfaXRlbSBjdHh0IGYgeCA6IHVuaXQgPVxuICBtYXRjaCB4LnBzaWdfZGVzYyB3aXRoXG4gIHwgUHNpZ190eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzaWdfdHlwZXN1YnN0IGwgLT5cbiAgICAgICgqIFBzaWdfdHlwZXN1YnN0IGlzIG5ldmVyIHJlY3Vyc2l2ZSwgYnV0IHdlIHNwZWNpZnkgW1JlY3Vyc2l2ZV0gaGVyZSB0b1xuICAgICAgICAgYXZvaWQgcHJpbnRpbmcgYSBbbm9ucmVjXSBmbGFnLCB3aGljaCB3b3VsZCBiZSByZWplY3RlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgKilcbiAgICAgIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChSZWN1cnNpdmUsIGZhbHNlLCBsKVxuICB8IFBzaWdfdmFsdWUgdmQgLT5cbiAgICAgIGxldCBpbnRybyA9IGlmIHZkLnB2YWxfcHJpbSA9IFtdIHRoZW4gXCJ2YWxcIiBlbHNlIFwiZXh0ZXJuYWxcIiBpblxuICAgICAgcHAgZiBcIkBbPDI+JXNAICVhQCA6QCAlYUBdJWFcIiBpbnRybyBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ190eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHNpZ19leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzaWdfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgY2xhc3NfZGVzY3JpcHRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQDs6QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHNpZ19tb2R1bGVcbiAgICAgICh7XG4gICAgICAgICBwbWRfdHlwZSA9IHsgcG10eV9kZXNjID0gUG10eV9hbGlhcyBhbGlhczsgcG10eV9hdHRyaWJ1dGVzID0gW107IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwbWQpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBhbGlhcyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdWxlIHBtZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHN1YnN0IHBtcyAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6PUAgJWFAXSVhXCIgcG1zLnBtc19uYW1lLnR4dCBsb25naWRlbnRfbG9jXG4gICAgICAgIHBtcy5wbXNfbWFuaWZlc3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbXMucG1zX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm9wZW4lc0AgJWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfbW9kdHlwZXN1YnN0IHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICAtPlxuICAgICAgbGV0IG1kID1cbiAgICAgICAgbWF0Y2ggbWQgd2l0aCBOb25lIC0+IGFzc2VydCBmYWxzZSAoKiBhc3QgaW52YXJpYW50ICopIHwgU29tZSBtdCAtPiBtdFxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXNAIDo9QCAlYUBdJWFcIiBzLnR4dCAobW9kdWxlX3R5cGUgY3R4dCkgbWRcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzaWdfcmVjbW9kdWxlIGRlY2xzIC0+XG4gICAgICBsZXQgcmVjIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiA/KGZpcnN0ID0gdHJ1ZSkgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgcG1kIDo6IHRsIC0+XG4gICAgICAgICAgICBpZiBub3QgZmlyc3QgdGhlblxuICAgICAgICAgICAgICBwcCBmIFwiQCBAWzxob3YyPmFuZEAgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgcmVjQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgfmZpcnN0OmZhbHNlIHRsXG4gICAgICBpblxuICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIGRlY2xzXG4gIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCBtb2R1bGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucG1vZF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG1vZF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjI+c3RydWN0QDtAWzwwPiVhQF1AOzwxIC0yPmVuZEBdXCJcbiAgICAgICAgICAobGlzdCAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgfnNlcDpcIkBcXG5cIilcbiAgICAgICAgICBzXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgKG1lLCBtdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhQCA6QCAlYSlAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSAobW9kdWxlX3R5cGUgY3R4dCkgbXRcbiAgICB8IFBtb2RfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBtZSkgLT4gcHAgZiBcImZ1bmN0b3IgKClAOy0+QDslYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAocywgbXQpLCBtZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bmN0b3JAICglc0AgOkAgJWEpQDstPkA7JWFcIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9hcHBseSAobWUxLCBtZTIpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEpKCVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZTEgKG1vZHVsZV9leHByIGN0eHQpIG1lMlxuICAgICAgICAoKiBDZjogIzcyMDAgKilcbiAgICB8IFBtb2RfdW5wYWNrIGUgLT4gcHAgZiBcIih2YWxAICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG5cbmFuZCBzdHJ1Y3R1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgcGF5bG9hZCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFBTdHIgWyB7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZSwgYXR0cnMpIH0gXSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUFN0ciB4IC0+IHN0cnVjdHVyZSBjdHh0IGYgeFxuICB8IFBUeXAgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgY29yZV90eXBlIGN0eHQgZiB4XG4gIHwgUFNpZyB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBzaWduYXR1cmUgY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBOb25lKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHg7XG4gICAgICBwcCBmIFwiIHdoZW4gXCI7XG4gICAgICBleHByZXNzaW9uIGN0eHQgZiBlXG5cbigqIHRyYW5zZm9ybSBbZiA9IGZ1biBnIGggLT4gLi5dIHRvIFtmIGcgaCA9IC4uLiBdIGNvdWxkIGJlIGltcHJvdmVkICopXG5hbmQgYmluZGluZyBjdHh0IGYgeyBwdmJfcGF0ID0gcDsgcHZiX2V4cHIgPSB4OyBfIH0gPVxuICAoKiAucHZiX2F0dHJpYnV0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyLCAjYmluZGluZ3MgKilcbiAgbGV0IHJlYyBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGYgeCA9XG4gICAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2Z1biAobGFiZWwsIGVvLCBwLCBlKSAtPlxuICAgICAgICAgIGlmIGxhYmVsID0gTm9sYWJlbCB0aGVuXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGxhYmVsLCBlbywgcCkgcHBfcHJpbnRfcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICBlXG4gICAgICB8IFBleHBfbmV3dHlwZSAoc3RyLCBlKSAtPlxuICAgICAgICAgIHBwIGYgXCIodHlwZUAgJXMpQCAlYVwiIHN0ci50eHQgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICB8IF8gLT4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBpblxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHR5dmFycyBpblxuICBsZXQgaXNfZGVzdWdhcmVkX2dhZHQgcCBlID1cbiAgICBsZXQgZ2FkdF9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBTb21lIChwYXQsIGFyZ3NfdHl2YXJzLCBydClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhZHRfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgZ2FkdF9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgZ2FkdF9leHAgPSBnYWR0X2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKGdhZHRfcGF0dGVybiwgZ2FkdF9leHApIHdpdGhcbiAgICB8IFNvbWUgKHAsIHB0X3R5dmFycywgcHRfY3QpLCBTb21lIChlX3R5dmFycywgZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuIFNvbWUgKHAsIHB0X3R5dmFycywgZV9jdCwgZSkgZWxzZSBOb25lXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwge1xuICAgICBwcGF0X2Rlc2MgPVxuICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXApICk7XG4gICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICBfO1xuICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQgKGNvcmVfdHlwZSBjdHh0KSB0eXBcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHhcbiAgZWxzZVxuICAgIG1hdGNoIGlzX2Rlc3VnYXJlZF9nYWR0IHAgeCB3aXRoXG4gICAgfCBTb21lIChwLCBbXSwgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgU29tZSAocCwgdHl2YXJzLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6IHR5cGVAOyVhLkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAobGlzdCBwcF9wcmludF9zdHJpbmcgfnNlcDpcIkA7XCIpXG4gICAgICAgICAgKHR5dmFyc19zdHIgdHl2YXJzKSAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocCwgdHkpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+IChcbiAgICAgICAgICAgICgqIHNwZWNpYWwgY2FzZSBmb3IgdGhlIGZpcnN0KilcbiAgICAgICAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgICAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgcHR5cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlYUA7OkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgICAgICAgICAgdHkgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglYUA7OkA7JWEpQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIHR5IChleHByZXNzaW9uIGN0eHQpIHgpXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiB4XG4gICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuXG4oKiBbaW5dIGlzIG5vdCBwcmludGVkICopXG5hbmQgYmluZGluZ3MgY3R4dCBmIChyZiwgbCkgPVxuICBsZXQgYmluZGluZyBrd2QgcmYgZiB4ID1cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhQF0lYVwiIGt3ZCByZWNfZmxhZyByZiAoYmluZGluZyBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHZiX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBiaW5kaW5nIFwibGV0XCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAoYmluZGluZyBcImxldFwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nIFwiYW5kXCIgTm9ucmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIGJpbmRpbmdfb3AgY3R4dCBmIHggPVxuICBtYXRjaCAoeC5wYm9wX3BhdCwgeC5wYm9wX2V4cCkgd2l0aFxuICB8ICggeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IHB2YXI7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgIHtcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBldmFyOyBfIH07XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBfO1xuICAgICAgfSApXG4gICAgd2hlbiBwdmFyID0gZXZhciAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJXNAXVwiIHgucGJvcF9vcC50eHQgZXZhclxuICB8IHBhdCwgZXhwIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlYUA7PUA7JWFAXVwiIHgucGJvcF9vcC50eHQgKHBhdHRlcm4gY3R4dCkgcGF0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGV4cFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gY3R4dCBmIHggPVxuICBtYXRjaCB4LnBzdHJfZGVzYyB3aXRoXG4gIHwgUHN0cl9ldmFsIChlLCBhdHRycykgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPjs7JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl90eXBlIChfLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgUHN0cl90eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzdHJfdmFsdWUgKHJmLCBsKSAtPlxuICAgICAgKCogcHAgZiBcIkBbPGhvdjI+bGV0ICVhJWFAXVwiICByZWNfZmxhZyByZiBiaW5kaW5ncyBsICopXG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbClcbiAgfCBQc3RyX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc3RyX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHN0cl9tb2R1bGUgeCAtPlxuICAgICAgbGV0IHJlYyBtb2R1bGVfaGVscGVyID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoYXJnX29wdCwgbWUnKTsgcG1vZF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgKG1hdGNoIGFyZ19vcHQgd2l0aFxuICAgICAgICAgICAgfCBVbml0IC0+IHBwIGYgXCIoKVwiXG4gICAgICAgICAgICB8IE5hbWVkIChzLCBtdCkgLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVzOiVhKVwiXG4gICAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10KTtcbiAgICAgICAgICAgIG1vZHVsZV9oZWxwZXIgbWUnXG4gICAgICAgIHwgbWUgLT4gbWVcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGUgJXMlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHgucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAoZnVuIGYgbWUgLT5cbiAgICAgICAgICBsZXQgbWUgPSBtb2R1bGVfaGVscGVyIG1lIGluXG4gICAgICAgICAgbWF0Y2ggbWUgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwbW9kX2Rlc2MgPVxuICAgICAgICAgICAgIFBtb2RfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKG1lJywgKHsgcG10eV9kZXNjID0gUG10eV9pZGVudCBfIHwgUG10eV9zaWduYXR1cmUgXzsgXyB9IGFzIG10KSk7XG4gICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiA6QDslYUA7PUA7JWFAO1wiIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgICBtZSdcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIiA9QCAlYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSlcbiAgICAgICAgeC5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucG1iX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm9wZW4lc0A7JWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGV4dHJhY3RfY2xhc3NfYXJncyBjbCA9XG4gICAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9mdW4gKGwsIGVvLCBwLCBjbCcpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgbG9vcCAoKGwsIGVvLCBwKSA6OiBhY2MpIGNsJ1xuICAgICAgICAgIHwgY2wgLT4gKExpc3QucmV2IGFjYywgY2wpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhcmdzLCBjbCA9IGxvb3AgW10gY2wgaW5cbiAgICAgICAgbGV0IGNvbnN0ciwgY2wgPVxuICAgICAgICAgIG1hdGNoIGNsIHdpdGhcbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfY29uc3RyYWludCAoY2wnLCBjdCk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAoU29tZSBjdCwgY2wnKVxuICAgICAgICAgIHwgXyAtPiAoTm9uZSwgY2wpXG4gICAgICAgIGluXG4gICAgICAgIChhcmdzLCBjb25zdHIsIGNsKVxuICAgICAgaW5cbiAgICAgIGxldCBjbGFzc19jb25zdHJhaW50IGYgY3QgPSBwcCBmIFwiOiBAWyVhQF0gXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgaW5cbiAgICAgIGxldCBjbGFzc19kZWNsYXJhdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBsZXQgYXJncywgY29uc3RyLCBjbCA9IGV4dHJhY3RfY2xhc3NfYXJncyB4LnBjaV9leHByIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyAlYSVhPUA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0XG4gICAgICAgICAgKGxpc3QgKGxhYmVsX2V4cCBjdHh0KSlcbiAgICAgICAgICBhcmdzIChvcHRpb24gY2xhc3NfY29uc3RyYWludCkgY29uc3RyIChjbGFzc19leHByIGN0eHQpIGNsXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc3RyX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc3RyX3ByaW1pdGl2ZSB2ZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+ZXh0ZXJuYWxAICVhQCA6QCAlYUBdJWFcIiBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfZXhwciBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzdHJfcmVjbW9kdWxlIGRlY2xzIC0+IChcbiAgICAgICgqIDMuMDcgKilcbiAgICAgIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlczolYUAgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgIHwgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGRlY2xzIHdpdGhcbiAgICAgIHwgKHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iKVxuICAgICAgICA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlczolYUAgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBwbWIgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXNAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCB0eXBlX3BhcmFtIGN0eHQgZiAoY3QsIChhLCBiKSkgPVxuICBwcCBmIFwiJXMlcyVhXCIgKHR5cGVfdmFyaWFuY2UgYSkgKHR5cGVfaW5qZWN0aXZpdHkgYikgKGNvcmVfdHlwZSBjdHh0KSBjdFxuXG5hbmQgdHlwZV9wYXJhbXMgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIiVhIFwiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLEA7XCIpIGxcblxuYW5kIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgZXhwb3J0ZWQsIGwpID1cbiAgbGV0IHR5cGVfZGVjbCBrd2QgcmYgZiB4ID1cbiAgICBsZXQgZXEgPVxuICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgJiYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiBcIlwiXG4gICAgICBlbHNlIGlmIGV4cG9ydGVkIHRoZW4gXCIgPVwiXG4gICAgICBlbHNlIFwiIDo9XCJcbiAgICBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyVzJWFAXSVhXCIga3dkIG5vbnJlY19mbGFnIHJmICh0eXBlX3BhcmFtcyBjdHh0KVxuICAgICAgeC5wdHlwZV9wYXJhbXMgeC5wdHlwZV9uYW1lLnR4dCBlcSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5cGVfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiB0eXBlX2RlY2wgXCJ0eXBlXCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAodHlwZV9kZWNsIFwidHlwZVwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiICh0eXBlX2RlY2wgXCJhbmRcIiBSZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgcmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQgZiBsYmxzID1cbiAgbGV0IHR5cGVfcmVjb3JkX2ZpZWxkIGYgcGxkID1cbiAgICBwcCBmIFwiQFs8Mj4lYSVzOkA7JWFAOyVhQF1cIiBtdXRhYmxlX2ZsYWcgcGxkLnBsZF9tdXRhYmxlIHBsZC5wbGRfbmFtZS50eHRcbiAgICAgIChjb3JlX3R5cGUgY3R4dCkgcGxkLnBsZF90eXBlIChhdHRyaWJ1dGVzIGN0eHQpIHBsZC5wbGRfYXR0cmlidXRlc1xuICBpblxuICBwcCBmIFwie0BcXG4lYX1cIiAobGlzdCB0eXBlX3JlY29yZF9maWVsZCB+c2VwOlwiO0BcXG5cIikgbGJsc1xuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gICgqIHR5cGVfZGVjbGFyYXRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgYnV0IGl0J3MgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgKilcbiAgbGV0IHByaXYgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9wcml2YXRlIHdpdGggUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwiQDtwcml2YXRlXCJcbiAgaW5cbiAgbGV0IG1hbmlmZXN0IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+XG4gICAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0IHRoZW5cbiAgICAgICAgICBwcCBmIFwiJXRAOyVhXCIgcHJpdiAoY29yZV90eXBlIGN0eHQpIHlcbiAgICAgICAgZWxzZSBwcCBmIFwiQDslYVwiIChjb3JlX3R5cGUgY3R4dCkgeVxuICBpblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gZiBwY2QgPVxuICAgIHBwIGYgXCJ8QDtcIjtcbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICggcGNkLnBjZF9uYW1lLnR4dCxcbiAgICAgICAgcGNkLnBjZF92YXJzLFxuICAgICAgICBwY2QucGNkX2FyZ3MsXG4gICAgICAgIHBjZC5wY2RfcmVzLFxuICAgICAgICBwY2QucGNkX2F0dHJpYnV0ZXMgKVxuICBpblxuICBsZXQgcmVwciBmID1cbiAgICBsZXQgaW50cm8gZiA9IGlmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gKCkgZWxzZSBwcCBmIFwiQDs9XCIgaW5cbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCB4cyAtPlxuICAgICAgICBsZXQgdmFyaWFudHMgZm10IHhzID1cbiAgICAgICAgICBpZiB4cyA9IFtdIHRoZW4gcHAgZm10IFwiIHxcIlxuICAgICAgICAgIGVsc2UgcHAgZm10IFwiQFxcbiVhXCIgKGxpc3QgfnNlcDpcIkBcXG5cIiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgeHNcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIiV0JXQlYVwiIGludHJvIHByaXYgdmFyaWFudHMgeHNcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgfCBQdHlwZV9yZWNvcmQgbCAtPiBwcCBmIFwiJXQldEA7JWFcIiBpbnRybyBwcml2IChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbFxuICAgIHwgUHR5cGVfb3BlbiAtPiBwcCBmIFwiJXQldEA7Li5cIiBpbnRybyBwcml2XG4gIGluXG4gIGxldCBjb25zdHJhaW50cyBmID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKGN0MSwgY3QyLCBfKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGNvbnN0cmFpbnRAICVhQCA9QCAlYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MilcbiAgICAgIHgucHR5cGVfY3N0cnNcbiAgaW5cbiAgcHAgZiBcIiV0JXQldFwiIG1hbmlmZXN0IHJlcHIgY29uc3RyYWludHNcblxuYW5kIHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB4ID1cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBmIHggPVxuICAgIHBwIGYgXCJAXFxufEA7JWFcIiAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpIHhcbiAgaW5cbiAgcHAgZiBcIkBbPDI+dHlwZSAlYSVhICs9ICVhQCAlYUBdJWFcIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgcHAgZiBcIiVhQDtcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixcIikgbClcbiAgICB4LnB0eWV4dF9wYXJhbXMgbG9uZ2lkZW50X2xvYyB4LnB0eWV4dF9wYXRoIHByaXZhdGVfZmxhZ1xuICAgIHgucHR5ZXh0X3ByaXZhdGUgKCogQ2Y6ICM3MjAwICopXG4gICAgKGxpc3QgfnNlcDpcIlwiIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGYgKG5hbWUsIHZhcnMsIGFyZ3MsIHJlcywgYXR0cnMpID1cbiAgbGV0IG5hbWUgPSBtYXRjaCBuYW1lIHdpdGggXCI6OlwiIC0+IFwiKDo6KVwiIHwgcyAtPiBzIGluXG4gIGxldCBwcF92YXJzIGYgdnMgPVxuICAgIG1hdGNoIHZzIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCB2cyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgdnNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBwcCBmIFwiJXMlYUA7JWFcIiBuYW1lXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gKClcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+IHBwIGYgXCJAO29mQDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbClcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFNvbWUgciAtPlxuICAgICAgcHAgZiBcIiVzOkA7JWElYUA7JWFcIiBuYW1lIHBwX3ZhcnMgdmFyc1xuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+IGNvcmVfdHlwZTEgY3R4dCBmIHJcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIlxuICAgICAgICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKVxuICAgICAgICAgICAgICAgIGwgKGNvcmVfdHlwZTEgY3R4dCkgclxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwgKGNvcmVfdHlwZTEgY3R4dCkgcilcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQgZiB4ID1cbiAgKCogQ2Y6ICM3MjAwICopXG4gIG1hdGNoIHgucGV4dF9raW5kIHdpdGhcbiAgfCBQZXh0X2RlY2wgKHYsIGwsIHIpIC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICAgKHgucGV4dF9uYW1lLnR4dCwgdiwgbCwgciwgeC5wZXh0X2F0dHJpYnV0ZXMpXG4gIHwgUGV4dF9yZWJpbmQgbGkgLT5cbiAgICAgIHBwIGYgXCIlc0A7PUA7JWElYVwiIHgucGV4dF9uYW1lLnR4dCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjYXNlX2xpc3QgY3R4dCBmIGwgOiB1bml0ID1cbiAgbGV0IGF1eCBmIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gPVxuICAgIHBwIGYgXCJAO3wgQFs8Mj4lYSVhQDstPkA7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHBjX2xoc1xuICAgICAgKG9wdGlvbiAoZXhwcmVzc2lvbiBjdHh0KSB+Zmlyc3Q6XCJAO3doZW5AO1wiKVxuICAgICAgcGNfZ3VhcmRcbiAgICAgIChleHByZXNzaW9uICh1bmRlcl9waXBlIGN0eHQpKVxuICAgICAgcGNfcmhzXG4gIGluXG4gIGxpc3QgYXV4IGYgbCB+c2VwOlwiXCJcblxuYW5kIGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0IGYgKGwsIGUpID1cbiAgbGV0IHNpbXBsZV9uYW1lID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgU29tZSBsXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBleHByZXNzaW9uMiBjdHh0IGYgZSAoKiBsZXZlbCAyKilcbiAgfCBPcHRpb25hbCBzdHIgLT5cbiAgICAgIGlmIFNvbWUgc3RyID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwiPyVzXCIgc3RyXG4gICAgICBlbHNlIHBwIGYgXCI/JXM6JWFcIiBzdHIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgfCBMYWJlbGxlZCBsYmwgLT5cbiAgICAgIGlmIFNvbWUgbGJsID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwifiVzXCIgbGJsXG4gICAgICBlbHNlIHBwIGYgXCJ+JXM6JWFcIiBsYmwgKHNpbXBsZV9leHByIGN0eHQpIGVcblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCBmIHggPVxuICBtYXRjaCB4LnBkaXJhX2Rlc2Mgd2l0aFxuICB8IFBkaXJfc3RyaW5nIHMgLT4gcHAgZiBcIkAgJVNcIiBzXG4gIHwgUGRpcl9pbnQgKG4sIE5vbmUpIC0+IHBwIGYgXCJAICVzXCIgblxuICB8IFBkaXJfaW50IChuLCBTb21lIG0pIC0+IHBwIGYgXCJAICVzJWNcIiBuIG1cbiAgfCBQZGlyX2lkZW50IGxpIC0+IHBwIGYgXCJAICVhXCIgbG9uZ2lkZW50IGxpXG4gIHwgUGRpcl9ib29sIGIgLT4gcHAgZiBcIkAgJXNcIiAoc3RyaW5nX29mX2Jvb2wgYilcblxubGV0IHRvcGxldmVsX3BocmFzZSBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBQdG9wX2RlZiBzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCAoc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dCkpIHNcbiAgKCogcHBfb3Blbl9odmJveCBmIDA7ICopXG4gICgqIHBwX3ByaW50X2xpc3Qgc3RydWN0dXJlX2l0ZW0gZiBzIDsgKilcbiAgKCogcHBfY2xvc2VfYm94IGYgKCk7ICopXG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gTm9uZTsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAXVwiIHBkaXJfbmFtZS50eHRcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBTb21lIHBkaXJfYXJnOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0AgJWFAXVwiIHBkaXJfbmFtZS50eHQgZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnXG5cbmxldCBleHByZXNzaW9uIGYgeCA9IHBwIGYgXCJAWyVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSB4XG5cbmxldCBzdHJpbmdfb2ZfZXhwcmVzc2lvbiB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIGV4cHJlc3Npb24gZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCBzdHJpbmdfb2Zfc3RydWN0dXJlIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgc3RydWN0dXJlIHJlc2V0X2N0eHQgZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCB0b3BfcGhyYXNlIGYgeCA9XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKTtcbiAgdG9wbGV2ZWxfcGhyYXNlIGYgeDtcbiAgcHAgZiBcIjs7XCI7XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKVxuXG5sZXQgY29yZV90eXBlID0gY29yZV90eXBlIHJlc2V0X2N0eHRcbmxldCBwYXR0ZXJuID0gcGF0dGVybiByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlID0gc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2V4cHIgPSBjbGFzc19leHByIHJlc2V0X2N0eHRcbmxldCBjbGFzc19maWVsZCA9IGNsYXNzX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlID0gY2xhc3NfdHlwZSByZXNldF9jdHh0XG5sZXQgY2xhc3Nfc2lnbmF0dXJlID0gY2xhc3Nfc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlX2ZpZWxkID0gY2xhc3NfdHlwZV9maWVsZCByZXNldF9jdHh0XG5sZXQgbW9kdWxlX2V4cHIgPSBtb2R1bGVfZXhwciByZXNldF9jdHh0XG5sZXQgbW9kdWxlX3R5cGUgPSBtb2R1bGVfdHlwZSByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlX2l0ZW0gPSBzaWduYXR1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlX2l0ZW0gPSBzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgdHlwZV9kZWNsYXJhdGlvbiA9IHR5cGVfZGVjbGFyYXRpb24gcmVzZXRfY3R4dFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbigqJCopXG5cbigqIE1hbnVhbCBtaWdyYXRpb24gYmV0d2VlbiB2ZXJzaW9ucyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4geCB5IC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB4IHkgeCB5O1xuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeSB4IHkgeClcbiopXG5tb2R1bGUgTWlncmF0ZV80MDJfNDAzID0gTWlncmF0ZV80MDJfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDNfNDAyID0gTWlncmF0ZV80MDNfNDAyXG5tb2R1bGUgTWlncmF0ZV80MDNfNDA0ID0gTWlncmF0ZV80MDNfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDRfNDAzID0gTWlncmF0ZV80MDRfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDRfNDA1ID0gTWlncmF0ZV80MDRfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA0ID0gTWlncmF0ZV80MDVfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA2ID0gTWlncmF0ZV80MDVfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA1ID0gTWlncmF0ZV80MDZfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA3ID0gTWlncmF0ZV80MDZfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA2ID0gTWlncmF0ZV80MDdfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA4ID0gTWlncmF0ZV80MDdfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA3ID0gTWlncmF0ZV80MDhfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA5ID0gTWlncmF0ZV80MDhfNDA5XG5tb2R1bGUgTWlncmF0ZV80MDlfNDA4ID0gTWlncmF0ZV80MDlfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDlfNDEwID0gTWlncmF0ZV80MDlfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTBfNDA5ID0gTWlncmF0ZV80MTBfNDA5XG5tb2R1bGUgTWlncmF0ZV80MTBfNDExID0gTWlncmF0ZV80MTBfNDExXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEwID0gTWlncmF0ZV80MTFfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEyID0gTWlncmF0ZV80MTFfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTJfNDExID0gTWlncmF0ZV80MTJfNDExXG5tb2R1bGUgTWlncmF0ZV80MTJfNDEzID0gTWlncmF0ZV80MTJfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTNfNDEyID0gTWlncmF0ZV80MTNfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTNfNDE0ID0gTWlncmF0ZV80MTNfNDE0XG5tb2R1bGUgTWlncmF0ZV80MTRfNDEzID0gTWlncmF0ZV80MTRfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTRfNTAwID0gTWlncmF0ZV80MTRfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDBfNDE0ID0gTWlncmF0ZV81MDBfNDE0XG5tb2R1bGUgTWlncmF0ZV81MDBfNTAxID0gTWlncmF0ZV81MDBfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAwID0gTWlncmF0ZV81MDFfNTAwXG4oKiQqKVxuXG4oKiBDb21waWxlciBtb2R1bGVzICopXG5tb2R1bGUgQXN0X21ldGFkYXRhID0gQXN0X21ldGFkYXRhXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgUGFyc2UgPSBQYXJzZVxubW9kdWxlIFBwcmludGFzdCA9IFBwcmludGFzdFxuXG5sZXQgaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCkgPVxuICAoKklGX0FUX0xFQVNUIDQwOCBPY2FtbF9jb21tb24uQ29tcG1pc2MucmVhZF9jbGZsYWdzX2Zyb21fZW52ICgpICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDQwOCAoKSAqKVxuKCoqIEFkanVzdCB0aGUgcmVwb3J0aW5nIHN0eWxlIG9mIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgT0NBTUxfQ09MT1IgYW5kIE9DQU1MX0VSUk9SX1NUWUxFLiAqKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPOiByZW1vdmUgdGhpcyBvcGVuICopXG5vcGVuIFN0ZGxpYjBcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcbm9wZW4gQXN0bGliLkFzdF81MDBcblxuW0BAQHdhcm5pbmcgXCItOVwiXVxuXG5vcGVuIEFzdHR5cGVzXG5vcGVuIFBhcnNldHJlZVxuXG50eXBlICdhIHdpdGhfbG9jID0gJ2EgTG9jYXRpb24ubG9jXG50eXBlIGxvYyA9IExvY2F0aW9uLnRcbnR5cGUgbGlkID0gTG9uZ2lkZW50LnQgd2l0aF9sb2NcbnR5cGUgc3RyID0gc3RyaW5nIHdpdGhfbG9jXG50eXBlIHN0cl9vcHQgPSBzdHJpbmcgb3B0aW9uIHdpdGhfbG9jXG50eXBlIGF0dHJzID0gYXR0cmlidXRlIGxpc3RcblxubGV0IGRlZmF1bHRfbG9jID0gcmVmIExvY2F0aW9uLm5vbmVcblxudHlwZSByZWZfYW5kX3ZhbHVlID0gUiA6ICdhIHJlZiAqICdhIC0+IHJlZl9hbmRfdmFsdWVcblxubGV0IHByb3RlY3RfcmVmID1cbiAgbGV0IHNldF9yZWYgKFIgKHIsIHYpKSA9IHIgOj0gdiBpblxuICBmdW4gcmVmIGYgLT5cbiAgICBsZXQgKFIgKHIsIF8pKSA9IHJlZiBpblxuICAgIGxldCBiYWNrdXAgPSBSIChyLCAhcikgaW5cbiAgICBzZXRfcmVmIHJlZjtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICByYWlzZSBlXG5cbmxldCB3aXRoX2RlZmF1bHRfbG9jIGwgZiA9IHByb3RlY3RfcmVmIChSIChkZWZhdWx0X2xvYywgbCkpIGZcblxubW9kdWxlIENvbnN0ID0gc3RydWN0XG4gIGxldCBpbnRlZ2VyID9zdWZmaXggaSA9IFBjb25zdF9pbnRlZ2VyIChpLCBzdWZmaXgpXG4gIGxldCBpbnQgP3N1ZmZpeCBpID0gaW50ZWdlciA/c3VmZml4IChJbnQudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQzMiA/KHN1ZmZpeCA9ICdsJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50MzIudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQ2NCA/KHN1ZmZpeCA9ICdMJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50NjQudG9fc3RyaW5nIGkpXG4gIGxldCBuYXRpdmVpbnQgPyhzdWZmaXggPSAnbicpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbiAgbGV0IGZsb2F0ID9zdWZmaXggZiA9IFBjb25zdF9mbG9hdCAoZiwgc3VmZml4KVxuICBsZXQgY2hhciBjID0gUGNvbnN0X2NoYXIgY1xuXG4gIGxldCBzdHJpbmcgP3F1b3RhdGlvbl9kZWxpbWl0ZXIgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIHMgPVxuICAgIFBjb25zdF9zdHJpbmcgKHMsIGxvYywgcXVvdGF0aW9uX2RlbGltaXRlcilcbmVuZFxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIG5hbWUgcGF5bG9hZCA9XG4gICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIFR5cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjID0gZDtcbiAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBkLnB0eXBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFB0eXBfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhciBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jb25zdHIgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9vYmplY3QgKGEsIGIpKVxuICBsZXQgY2xhc3NfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NsYXNzIChhLCBiKSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2FsaWFzIChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXJpYW50IChhLCBiLCBjKSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcG9seSAoYSwgYikpXG4gIGxldCBwYWNrYWdlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BhY2thZ2UgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF9leHRlbnNpb24gYSlcblxuICBsZXQgZm9yY2VfcG9seSB0ID1cbiAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IHQgfCBfIC0+IHBvbHkgfmxvYzp0LnB0eXBfbG9jIFtdIHRcbiAgKCogLT4gZ2hvc3Q/ICopXG5cbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICAgIGluXG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbmVuZFxuXG5tb2R1bGUgUGF0ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2MgPSBkO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGQucHBhdF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHBhdF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyIGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hbGlhcyAoYSwgYikpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RhbnQgYSlcbiAgbGV0IGludGVydmFsID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2ludGVydmFsIChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90dXBsZSBhKVxuXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID1cbiAgICBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJ1Y3QgKGEsIE9wdGlvbi5tYXAgKGZ1biBiIC0+IChbXSwgYikpIGIpKVxuXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3JlY29yZCAoYSwgYikpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYXJyYXkgYSlcbiAgbGV0IG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vciAoYSwgYikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IHR5cGVfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90eXBlIGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfbGF6eSBhKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF91bnBhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29wZW4gKGEsIGIpKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXhjZXB0aW9uIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYyA9IGQ7XG4gICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZC5wZXhwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWRlbnQgYSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdGFudCBhKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldCAoYSwgYiwgYykpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgZnVuY3Rpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW5jdGlvbiBhKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXBwbHkgKGEsIGIpKVxuICBsZXQgbWF0Y2hfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX21hdGNoIChhLCBiKSlcbiAgbGV0IHRyeV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHJ5IChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF90dXBsZSBhKVxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cnVjdCAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3JlY29yZCAoYSwgYikpXG4gIGxldCBmaWVsZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9maWVsZCAoYSwgYikpXG4gIGxldCBzZXRmaWVsZCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcnJheSBhKVxuICBsZXQgaWZ0aGVuZWxzZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpKVxuICBsZXQgc2VxdWVuY2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VxdWVuY2UgKGEsIGIpKVxuICBsZXQgd2hpbGVfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3doaWxlIChhLCBiKSlcbiAgbGV0IGZvcl8gP2xvYyA/YXR0cnMgYSBiIGMgZCBlID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgY29lcmNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29lcmNlIChhLCBiLCBjKSlcbiAgbGV0IHNlbmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VuZCAoYSwgYikpXG4gIGxldCBuZXdfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXcgYSlcbiAgbGV0IHNldGluc3R2YXIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0aW5zdHZhciAoYSwgYikpXG4gIGxldCBvdmVycmlkZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3ZlcnJpZGUgYSlcbiAgbGV0IGxldG1vZHVsZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykpXG4gIGxldCBsZXRleGNlcHRpb24gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSlcbiAgbGV0IGFzc2VydF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Fzc2VydCBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xhenkgYSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcG9seSAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vYmplY3QgYSlcbiAgbGV0IG5ld3R5cGUgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3dHlwZSAoYSwgYikpXG4gIGxldCBwYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vcGVuIChhLCBiKSlcblxuICBsZXQgbGV0b3AgP2xvYyA/YXR0cnMgbGV0XyBhbmRzIGJvZHkgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9KVxuXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2V4dGVuc2lvbiBhKVxuICBsZXQgdW5yZWFjaGFibGUgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQZXhwX3VucmVhY2hhYmxlXG4gIGxldCBjYXNlIGxocyA/Z3VhcmQgcmhzID0geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG5cbiAgbGV0IGJpbmRpbmdfb3Agb3AgcGF0IGV4cCBsb2MgPVxuICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXR5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtdHlfZGVzYyA9IGQ7IHBtdHlfbG9jID0gbG9jOyBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG10eV9hdHRyaWJ1dGVzID0gZC5wbXR5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfaWRlbnQgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9hbGlhcyBhKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9zaWduYXR1cmUgYSlcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2Z1bmN0b3IgKGEsIGIpKVxuICBsZXQgd2l0aF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfd2l0aCAoYSwgYikpXG4gIGxldCB0eXBlb2ZfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV90eXBlb2YgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIE1vZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbW9kX2Rlc2MgPSBkOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGQucG1vZF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2lkZW50IHgpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3N0cnVjdHVyZSB4KVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYXJnIGJvZHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9mdW5jdG9yIChhcmcsIGJvZHkpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgbTEgbTIgPSBtayA/bG9jID9hdHRycyAoUG1vZF9hcHBseSAobTEsIG0yKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIG0gbXR5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfY29uc3RyYWludCAobSwgbXR5KSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBlID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfdW5wYWNrIGUpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBTaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc2lnX2Rlc2MgPSBkOyBwc2lnX2xvYyA9IGxvYyB9XG4gIGxldCB2YWx1ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3ZhbHVlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc2lnX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBlc3Vic3QgYSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdWxlIGEpXG4gIGxldCBtb2Rfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2RzdWJzdCBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfb3BlbiBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19pbmNsdWRlIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzaWdfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgU3RyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHN0cl9kZXNjID0gZDsgcHN0cl9sb2MgPSBsb2MgfVxuICBsZXQgZXZhbCA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXZhbCAoYSwgYXR0cnMpKVxuICBsZXQgdmFsdWUgP2xvYyBhIGIgPSBtayA/bG9jIChQc3RyX3ZhbHVlIChhLCBiKSlcbiAgbGV0IHByaW1pdGl2ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3ByaW1pdGl2ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHN0cl90eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHVsZSBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfb3BlbiBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzc190eXBlIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2luY2x1ZGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgQ2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNsX2Rlc2MgPSBkOyBwY2xfbG9jID0gbG9jOyBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2xfYXR0cmlidXRlcyA9IGQucGNsX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHIgKGEsIGIpKVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX3N0cnVjdHVyZSBhKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9hcHBseSAoYSwgYikpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3R5X2Rlc2MgPSBkOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGQucGN0eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2NvbnN0ciAoYSwgYikpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X3NpZ25hdHVyZSBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGN0eV9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0ZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3RmX2Rlc2MgPSBkOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfaW5oZXJpdCBhKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfdmFsIChhLCBiLCBjLCBkKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX21ldGhvZCAoYSwgYiwgYywgZCkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGN0Zl9hdHRyaWJ1dGUgYSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gZC5wY3RmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIENmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjZl9kZXNjID0gZDsgcGNmX2xvYyA9IGxvYzsgcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbmhlcml0IChhLCBiLCBjKSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX3ZhbCAoYSwgYiwgYykpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9tZXRob2QgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGluaXRpYWxpemVyXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbml0aWFsaXplciBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjZl9hdHRyaWJ1dGUgYSlcbiAgbGV0IHZpcnR1YWxfIGN0ID0gQ2ZrX3ZpcnR1YWwgY3RcbiAgbGV0IGNvbmNyZXRlIG8gZSA9IENma19jb25jcmV0ZSAobywgZSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBkLnBjZl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBWYWwgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocHJpbSA9IFtdKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgIHB2YWxfdHlwZSA9IHR5cDtcbiAgICAgIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHZhbF9sb2MgPSBsb2M7XG4gICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgdHlwID1cbiAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXA7IHBtZF9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtZF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNcyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBzeW4gPVxuICAgIHtcbiAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgIHBtc19tYW5pZmVzdCA9IHN5bjtcbiAgICAgIHBtc19hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXNfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTXRkID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/dHlwIG5hbWUgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbXRkX3R5cGUgPSB0eXA7XG4gICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtdGRfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgZXhwciA9XG4gICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1iX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE9wbiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhvdmVycmlkZSA9IEZyZXNoKSBleHByID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBJbmNsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBtZXhwciA9XG4gICAgeyBwaW5jbF9tb2QgPSBtZXhwcjsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuZW5kXG5cbm1vZHVsZSBWYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgcGF0IGV4cHIgPVxuICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IGF0dHJzOyBwdmJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgQ2kgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmlydCA9IENvbmNyZXRlKSA/KHBhcmFtcyA9IFtdKVxuICAgICAgbmFtZSBleHByID1cbiAgICB7XG4gICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUeXBlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KGNzdHJzID0gW10pXG4gICAgICA/KGtpbmQgPSBQdHlwZV9hYnN0cmFjdCkgPyhwcml2ID0gUHVibGljKSA/bWFuaWZlc3QgbmFtZSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdHlwZV9sb2MgPSBsb2M7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGZpZWxkID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8obXV0ID0gSW1tdXRhYmxlKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgcGxkX211dGFibGUgPSBtdXQ7XG4gICAgICBwbGRfdHlwZSA9IHR5cDtcbiAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICBwbGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG4oKiogVHlwZSBleHRlbnNpb25zICopXG5tb2R1bGUgVGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8ocHJpdiA9IFB1YmxpYylcbiAgICAgIHBhdGggY29uc3RydWN0b3JzID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgbWtfZXhjZXB0aW9uID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGNvbnN0cnVjdG9yID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBraW5kID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBkZWNsID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfZGVjbCAodmFycywgYXJncywgcmVzKTtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCByZWJpbmQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBsaWQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X3JlYmluZCBsaWQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgQ3NpZyA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbm1vZHVsZSBDc3RyID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxuKCoqIFJvdyBmaWVsZHMgKilcbm1vZHVsZSBSZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwcmZfZGVzYyA9IGRlc2M7IHByZl9sb2MgPSBsb2M7IHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgY29uc3QgdHlzID1cbiAgICBtayA/bG9jID9hdHRycyAoUnRhZyAobGFiZWwsIGNvbnN0LCB0eXMpKVxuXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoUmluaGVyaXQgdHkpXG5lbmRcblxuKCoqIE9iamVjdCBmaWVsZHMgKilcbm1vZHVsZSBPZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwb2ZfZGVzYyA9IGRlc2M7IHBvZl9sb2MgPSBsb2M7IHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgdHkgPSBtayA/bG9jID9hdHRycyAoT3RhZyAobGFiZWwsIHR5KSlcbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChPaW5oZXJpdCB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQkVHSU4gb2YgQkxBQ0sgTUFHSUMgKilcbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxudHlwZSBfIHdpdG5lc3NlcyA9IC4uXG5cbnR5cGUgXyBtaWdyYXRpb24gPSAuLlxudHlwZSBfIG1pZ3JhdGlvbiArPSBVbmRlZmluZWQgOiBfIG1pZ3JhdGlvblxuXG50eXBlICdhIG1pZ3JhdGlvbl9pbmZvID0ge1xuICBtdXRhYmxlIG5leHRfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbiAgbXV0YWJsZSBwcmV2aW91c192ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xufVxuXG4oKiogQWJzdHJhY3QgdmlldyBvZiBhIHZlcnNpb24gb2YgYW4gT0NhbWwgQXN0ICopXG5tb2R1bGUgdHlwZSBBc3QgPSBzaWdcbiAgKCokIGZvcmVhY2hfbW9kdWxlIChmdW4gbSB0eXBlcyAtPlxuICAgICAgcHJpbnRmIFwiICBtb2R1bGUgJXMgOiBzaWdcXG5cIiBtO1xuICAgICAgTGlzdC5pdGVyIHR5cGVzIH5mOihwcmludGYgXCIgICAgdHlwZSAlc1xcblwiKTtcbiAgICAgIHByaW50ZiBcIiAgZW5kXFxuXCJcbiAgICApXG4gICopXG4gIG1vZHVsZSBQYXJzZXRyZWUgOiBzaWdcbiAgICB0eXBlIHN0cnVjdHVyZVxuICAgIHR5cGUgc2lnbmF0dXJlXG4gICAgdHlwZSB0b3BsZXZlbF9waHJhc2VcbiAgICB0eXBlIGNvcmVfdHlwZVxuICAgIHR5cGUgZXhwcmVzc2lvblxuICAgIHR5cGUgcGF0dGVyblxuICAgIHR5cGUgY2FzZVxuICAgIHR5cGUgdHlwZV9kZWNsYXJhdGlvblxuICAgIHR5cGUgdHlwZV9leHRlbnNpb25cbiAgICB0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgIHR5cGUgY2xhc3NfZXhwclxuICAgIHR5cGUgY2xhc3NfZmllbGRcbiAgICB0eXBlIGNsYXNzX3R5cGVcbiAgICB0eXBlIGNsYXNzX3NpZ25hdHVyZVxuICAgIHR5cGUgY2xhc3NfdHlwZV9maWVsZFxuICAgIHR5cGUgbW9kdWxlX2V4cHJcbiAgICB0eXBlIG1vZHVsZV90eXBlXG4gICAgdHlwZSBzaWduYXR1cmVfaXRlbVxuICAgIHR5cGUgc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG4oKiQqKVxuICBtb2R1bGUgQ29uZmlnIDogc2lnXG4gICAgdmFsIGFzdF9pbXBsX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICAgIHZhbCBhc3RfaW50Zl9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgZW5kXG5lbmRcblxuKCogU2hvcnRjdXRzIGZvciB0YWxraW5nIGFib3V0IGFzdCB0eXBlcyBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxudHlwZSAnYSBfdHlwZXMgPSAnYSBjb25zdHJhaW50ICdhXG4gID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogXztcXG5cIiBzKSAqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogXztcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBfO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IF87XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogXztcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBfO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IF87XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogXztcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBfO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IF87XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IF87XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogXztcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBfO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IF87XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBfO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IF87XG4oKiQqKVxuICA+XG47O1xuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgcHJpbnRmIFwidHlwZSAnYSBnZXRfJXMgPVxcblwiIHM7XG4gICAgcHJpbnRmIFwiICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgJXMgOiAneDsgLi4gPlxcblwiIHNcbiAgKSAqKVxudHlwZSAnYSBnZXRfc3RydWN0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3RvcGxldmVsX3BocmFzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0b3BsZXZlbF9waHJhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY29yZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNvcmVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHByZXNzaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4cHJlc3Npb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfcGF0dGVybiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBwYXR0ZXJuIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2Nhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2FzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2RlY2xhcmF0aW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZGVjbGFyYXRpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9leHRlbnNpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9leHRlbnNpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19zaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZV9maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV9leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV9leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZV9pdGVtIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZV9pdGVtIDogJ3g7IC4uID5cbigqJCopXG5cbm1vZHVsZSB0eXBlIE9DYW1sX3ZlcnNpb24gPSBzaWdcbiAgbW9kdWxlIEFzdCA6IEFzdFxuICB2YWwgdmVyc2lvbiA6IGludFxuICB2YWwgc3RyaW5nX3ZlcnNpb24gOiBzdHJpbmdcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICB2YWwgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mb1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdG5lc3MoQXN0IDogQXN0KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICBsZXQgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mbyA9XG4gICAgeyBuZXh0X3ZlcnNpb24gPSBVbmRlZmluZWQ7IHByZXZpb3VzX3ZlcnNpb24gPSBVbmRlZmluZWQgfVxuZW5kXG5cbnR5cGUgJ3R5cGVzIG9jYW1sX3ZlcnNpb24gPVxuICAobW9kdWxlIE9DYW1sX3ZlcnNpb25cbiAgICAoKiQgbGV0IHNlcCA9IHdpdGhfdGhlbl9hbmQgKCkgaW5cbiAgICAgIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIiAgICAldCB0eXBlIEFzdC4lcy4lcyA9ICd0eXBlcyBnZXRfJXNcXG5cIiBzZXAgbSBzIHMpICopXG4gICAgd2l0aCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgPSAndHlwZXMgZ2V0X3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9ICd0eXBlcyBnZXRfdG9wbGV2ZWxfcGhyYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY29yZV90eXBlID0gJ3R5cGVzIGdldF9jb3JlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHByZXNzaW9uID0gJ3R5cGVzIGdldF9leHByZXNzaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUucGF0dGVybiA9ICd0eXBlcyBnZXRfcGF0dGVyblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNhc2UgPSAndHlwZXMgZ2V0X2Nhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0gJ3R5cGVzIGdldF90eXBlX2RlY2xhcmF0aW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSAndHlwZXMgZ2V0X3R5cGVfZXh0ZW5zaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gJ3R5cGVzIGdldF9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19leHByID0gJ3R5cGVzIGdldF9jbGFzc19leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9ICd0eXBlcyBnZXRfY2xhc3Nfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZV9maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByID0gJ3R5cGVzIGdldF9tb2R1bGVfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlID0gJ3R5cGVzIGdldF9tb2R1bGVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zaWduYXR1cmVfaXRlbVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgKVxuXG50eXBlICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyVzOiAnZnJvbSBnZXRfJXMgLT4gJ3RvXyBnZXRfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlOiAnZnJvbSBnZXRfc3RydWN0dXJlIC0+ICd0b18gZ2V0X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmU6ICdmcm9tIGdldF9zaWduYXR1cmUgLT4gJ3RvXyBnZXRfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZTogJ2Zyb20gZ2V0X3RvcGxldmVsX3BocmFzZSAtPiAndG9fIGdldF90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlOiAnZnJvbSBnZXRfY29yZV90eXBlIC0+ICd0b18gZ2V0X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uOiAnZnJvbSBnZXRfZXhwcmVzc2lvbiAtPiAndG9fIGdldF9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm46ICdmcm9tIGdldF9wYXR0ZXJuIC0+ICd0b18gZ2V0X3BhdHRlcm47XG4gIGNvcHlfY2FzZTogJ2Zyb20gZ2V0X2Nhc2UgLT4gJ3RvXyBnZXRfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uOiAnZnJvbSBnZXRfdHlwZV9kZWNsYXJhdGlvbiAtPiAndG9fIGdldF90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uOiAnZnJvbSBnZXRfdHlwZV9leHRlbnNpb24gLT4gJ3RvXyBnZXRfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiAnZnJvbSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICd0b18gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByOiAnZnJvbSBnZXRfY2xhc3NfZXhwciAtPiAndG9fIGdldF9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZTogJ2Zyb20gZ2V0X2NsYXNzX3R5cGUgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmU6ICdmcm9tIGdldF9jbGFzc19zaWduYXR1cmUgLT4gJ3RvXyBnZXRfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ6ICdmcm9tIGdldF9jbGFzc190eXBlX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHI6ICdmcm9tIGdldF9tb2R1bGVfZXhwciAtPiAndG9fIGdldF9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZTogJ2Zyb20gZ2V0X21vZHVsZV90eXBlIC0+ICd0b18gZ2V0X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtOiAnZnJvbSBnZXRfc2lnbmF0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW06ICdmcm9tIGdldF9zdHJ1Y3R1cmVfaXRlbSAtPiAndG9fIGdldF9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbmxldCBpZCB4ID0geFxubGV0IG1pZ3JhdGlvbl9pZGVudGl0eSA6ICgnYSwgJ2EpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICBjb3B5XyVzID0gaWQ7XFxuXCIgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgPSBpZDtcbiAgY29weV9zaWduYXR1cmUgPSBpZDtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgPSBpZDtcbiAgY29weV9jb3JlX3R5cGUgPSBpZDtcbiAgY29weV9leHByZXNzaW9uID0gaWQ7XG4gIGNvcHlfcGF0dGVybiA9IGlkO1xuICBjb3B5X2Nhc2UgPSBpZDtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uID0gaWQ7XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gPSBpZDtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBpZDtcbiAgY29weV9jbGFzc19leHByID0gaWQ7XG4gIGNvcHlfY2xhc3NfZmllbGQgPSBpZDtcbiAgY29weV9jbGFzc190eXBlID0gaWQ7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA9IGlkO1xuICBjb3B5X21vZHVsZV9leHByID0gaWQ7XG4gIGNvcHlfbW9kdWxlX3R5cGUgPSBpZDtcbiAgY29weV9zaWduYXR1cmVfaXRlbSA9IGlkO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtID0gaWQ7XG4oKiQqKVxufVxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBtaWdyYXRpb25fY29tcG9zZSAoYWIgOiAoJ2EsICdiKSBtaWdyYXRpb25fZnVuY3Rpb25zKSAoYmMgOiAoJ2IsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zKSA6ICgnYSwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lLTIxcyA9IGNvbXBvc2UgYmMuY29weV8lLTIxcyBhYi5jb3B5XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgIGFiLmNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgYWIuY29weV9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2V4cHJlc3Npb24gICAgICAgICAgICBhYi5jb3B5X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3BhdHRlcm4gICAgICAgICAgICAgICBhYi5jb3B5X3BhdHRlcm47XG4gIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2Nhc2UgICAgICAgICAgICAgICAgICBhYi5jb3B5X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICBhYi5jb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICBhYi5jb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGNvbXBvc2UgYmMuY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgYWIuY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlICAgICAgICAgICAgYWIuY29weV9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgYWIuY29weV9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICBhYi5jb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV9leHByICAgICAgICAgICBhYi5jb3B5X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgYWIuY29weV9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxudHlwZSBfIG1pZ3JhdGlvbiArPSBNaWdyYXRpb24gOiAnZnJvbSBvY2FtbF92ZXJzaW9uICogKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uIC0+ICdmcm9tIG1pZ3JhdGlvblxuXG5tb2R1bGUgdHlwZSBNaWdyYXRlX21vZHVsZSA9IHNpZ1xuICBtb2R1bGUgRnJvbSA6IEFzdFxuICBtb2R1bGUgVG8gOiBBc3RcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgcHJpbnRmIFwiICB2YWwgY29weV8lLTIxczogRnJvbS4lcy4lcyAtPiBUby4lcy4lc1xcblwiIHMgbSBzIG0gcykgKilcbiAgdmFsIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZVxuICB2YWwgY29weV9zaWduYXR1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gIHZhbCBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgIDogRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgdmFsIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZVxuICB2YWwgY29weV9leHByZXNzaW9uICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgdmFsIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuXG4gIHZhbCBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZVxuICB2YWwgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgdmFsIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgdmFsIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICB2YWwgY29weV9jbGFzc19leHByICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgdmFsIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlXG4gIHZhbCBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gIHZhbCBjb3B5X21vZHVsZV9leHByICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gIHZhbCBjb3B5X21vZHVsZV90eXBlICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gIHZhbCBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4oKiQqKVxuZW5kXG5cbm1vZHVsZSBNaWdyYXRpb25fZnVuY3Rpb25zXG4gICAgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0IG1pZ3JhdGlvbl9mdW5jdGlvbnMgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbGV0IG9wZW4gQV90b19CIGluXG4gICAge1xuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICAgIGNvcHlfcGF0dGVybjtcbiAgICAgIGNvcHlfY2FzZTtcbiAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfbWlncmF0aW9uIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuICAgIChCX3RvX0EgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQi5Bc3QgYW5kIG1vZHVsZSBUbyA9IEEuQXN0KVxuPVxuc3RydWN0XG4gIGxldCAoKSA9IChcbiAgICBsZXQgaXNfdW5kZWZpbmVkIDogdHlwZSBhLiBhIG1pZ3JhdGlvbiAtPiBib29sID0gZnVuY3Rpb25cbiAgICAgIHwgVW5kZWZpbmVkIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgYXNzZXJ0IChBLnZlcnNpb24gPCBCLnZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24pO1xuICAgIGxldCBtb2R1bGUgQV90b19CX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQSkoQikoQV90b19CKSBpblxuICAgIGxldCBtb2R1bGUgQl90b19BX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQikoQSkoQl90b19BKSBpblxuICAgIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQSksIEFfdG9fQl9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBCKSk7XG4gICAgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQiksIEJfdG9fQV9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBBKSk7XG4gIClcbmVuZFxuXG50eXBlICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb24gPVxuICB8IE5vX21pZ3JhdGlvbiA6ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cbiAgfCBJbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgOiAgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uXG4gICAgICAtPiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG5cbmxldCBpbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMpXFxuXCIgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUpXG4gICAgKHR5cGUgc2lnbmF0dXJlKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZSlcbiAgICAodHlwZSBjb3JlX3R5cGUpXG4gICAgKHR5cGUgZXhwcmVzc2lvbilcbiAgICAodHlwZSBwYXR0ZXJuKVxuICAgICh0eXBlIGNhc2UpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgKHR5cGUgY2xhc3NfZXhwcilcbiAgICAodHlwZSBjbGFzc19maWVsZClcbiAgICAodHlwZSBjbGFzc190eXBlKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZSlcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkKVxuICAgICh0eXBlIG1vZHVsZV9leHByKVxuICAgICh0eXBlIG1vZHVsZV90eXBlKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgIFwiICAgICAlLTIxcyA6ICVzO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmU7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGU7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICBkaXJlY3Rpb25cbiAgPVxuICBsZXQgdmVyc2lvbiA9IG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgTmV4dCAtPiBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvblxuICAgIHwgYFByZXZpb3VzIC0+IEEubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvblxuICBpblxuICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgfCBVbmRlZmluZWQgLT4gTm9fbWlncmF0aW9uXG4gIHwgTWlncmF0aW9uIChfLCBmdW5zLCB0b18pIC0+IEltbWVkaWF0ZV9taWdyYXRpb24gKGZ1bnMsIHRvXylcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbWlncmF0ZVxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzMSkgKHR5cGUgJXMyKVxcblwiIHMgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUxKSAodHlwZSBzdHJ1Y3R1cmUyKVxuICAgICh0eXBlIHNpZ25hdHVyZTEpICh0eXBlIHNpZ25hdHVyZTIpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMSkgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMilcbiAgICAodHlwZSBjb3JlX3R5cGUxKSAodHlwZSBjb3JlX3R5cGUyKVxuICAgICh0eXBlIGV4cHJlc3Npb24xKSAodHlwZSBleHByZXNzaW9uMilcbiAgICAodHlwZSBwYXR0ZXJuMSkgKHR5cGUgcGF0dGVybjIpXG4gICAgKHR5cGUgY2FzZTEpICh0eXBlIGNhc2UyKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24xKSAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbjEpICh0eXBlIHR5cGVfZXh0ZW5zaW9uMilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IxKSAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IyKVxuICAgICh0eXBlIGNsYXNzX2V4cHIxKSAodHlwZSBjbGFzc19leHByMilcbiAgICAodHlwZSBjbGFzc19maWVsZDEpICh0eXBlIGNsYXNzX2ZpZWxkMilcbiAgICAodHlwZSBjbGFzc190eXBlMSkgKHR5cGUgY2xhc3NfdHlwZTIpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMSkgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMilcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkMSkgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDIpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIxKSAodHlwZSBtb2R1bGVfZXhwcjIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUxKSAodHlwZSBtb2R1bGVfdHlwZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0xKSAodHlwZSBzaWduYXR1cmVfaXRlbTIpXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0xKSAodHlwZSBzdHJ1Y3R1cmVfaXRlbTIpXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczE7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUxO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUxO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UxO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUxO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMTtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjE7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UxO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMTtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24xO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IxO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMTtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQxO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDE7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMTtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUxO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTE7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICAoKG1vZHVsZSBCKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMyO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMjtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMjtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMjtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMjtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjI7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4yO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMjtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjI7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMjtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTI7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTI7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQyO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMjtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0yO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTI7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgPVxuICBtYXRjaCBBLlZlcnNpb24gd2l0aFxuICB8IEIuVmVyc2lvbiAtPiBtaWdyYXRpb25faWRlbnRpdHlcbiAgfCBfIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9IGlmIEEudmVyc2lvbiA8IEIudmVyc2lvbiB0aGVuIGBOZXh0IGVsc2UgYFByZXZpb3VzIGluXG4gICAgbGV0IHJlYyBtaWdyYXRlIChtIDogQS50eXBlcyBpbW1lZGlhdGVfbWlncmF0aW9uKSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGYsIChtb2R1bGUgVG8pKSAtPlxuICAgICAgICBtYXRjaCBUby5WZXJzaW9uIHdpdGhcbiAgICAgICAgfCBCLlZlcnNpb24gLT4gZlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYXRjaCBpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgVG8pIGRpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChnLCB0bzIpIC0+XG4gICAgICAgICAgICBtaWdyYXRlIChJbW1lZGlhdGVfbWlncmF0aW9uIChtaWdyYXRpb25fY29tcG9zZSBmIGcsIHRvMikpXG4gICAgaW5cbiAgICBtaWdyYXRlIChpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgQSkgZGlyZWN0aW9uKVxuXG5tb2R1bGUgQ29udmVydCAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgbGV0IHtcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgY29weV9zaWduYXR1cmU7XG4gICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgY29weV9jb3JlX3R5cGU7XG4gICAgY29weV9leHByZXNzaW9uO1xuICAgIGNvcHlfcGF0dGVybjtcbiAgICBjb3B5X2Nhc2U7XG4gICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY29weV9jbGFzc19leHByO1xuICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgY29weV9jbGFzc190eXBlO1xuICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICBjb3B5X21vZHVsZV9leHByO1xuICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgfSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBtaWdyYXRlIChtb2R1bGUgQSkgKG1vZHVsZSBCKVxuZW5kXG5cbigqJCBmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIHZlcnNpb24gLT5cbiAgICBwcmludGYgXCJtb2R1bGUgT0NhbWxfJWQgPSBzdHJ1Y3RcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF8lZClcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHZlcnNpb24gPSAlZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgc3RyaW5nX3ZlcnNpb24gPSAlU1xcblwiIHZlcnNpb247XG4gICAgcHJpbnRmIFwiZW5kXFxuXCI7XG4gICAgcHJpbnRmIFwibGV0IG9jYW1sXyVkIDogT0NhbWxfJWQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfJWQpXFxuXCJcbiAgICAgIG4gbiBuO1xuICApXG4qKVxubW9kdWxlIE9DYW1sXzQwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDIpXG4gIGxldCB2ZXJzaW9uID0gNDAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wMlwiXG5lbmRcbmxldCBvY2FtbF80MDIgOiBPQ2FtbF80MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAyKVxubW9kdWxlIE9DYW1sXzQwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDMpXG4gIGxldCB2ZXJzaW9uID0gNDAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wM1wiXG5lbmRcbmxldCBvY2FtbF80MDMgOiBPQ2FtbF80MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAzKVxubW9kdWxlIE9DYW1sXzQwNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDQpXG4gIGxldCB2ZXJzaW9uID0gNDA0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNFwiXG5lbmRcbmxldCBvY2FtbF80MDQgOiBPQ2FtbF80MDQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA0KVxubW9kdWxlIE9DYW1sXzQwNSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDVcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDUpXG4gIGxldCB2ZXJzaW9uID0gNDA1XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNVwiXG5lbmRcbmxldCBvY2FtbF80MDUgOiBPQ2FtbF80MDUudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA1KVxubW9kdWxlIE9DYW1sXzQwNiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDZcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDYpXG4gIGxldCB2ZXJzaW9uID0gNDA2XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNlwiXG5lbmRcbmxldCBvY2FtbF80MDYgOiBPQ2FtbF80MDYudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA2KVxubW9kdWxlIE9DYW1sXzQwNyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDdcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDcpXG4gIGxldCB2ZXJzaW9uID0gNDA3XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wN1wiXG5lbmRcbmxldCBvY2FtbF80MDcgOiBPQ2FtbF80MDcudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA3KVxubW9kdWxlIE9DYW1sXzQwOCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDhcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDgpXG4gIGxldCB2ZXJzaW9uID0gNDA4XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOFwiXG5lbmRcbmxldCBvY2FtbF80MDggOiBPQ2FtbF80MDgudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA4KVxubW9kdWxlIE9DYW1sXzQwOSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDlcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDkpXG4gIGxldCB2ZXJzaW9uID0gNDA5XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOVwiXG5lbmRcbmxldCBvY2FtbF80MDkgOiBPQ2FtbF80MDkudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA5KVxubW9kdWxlIE9DYW1sXzQxMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTApXG4gIGxldCB2ZXJzaW9uID0gNDEwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMFwiXG5lbmRcbmxldCBvY2FtbF80MTAgOiBPQ2FtbF80MTAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEwKVxubW9kdWxlIE9DYW1sXzQxMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTEpXG4gIGxldCB2ZXJzaW9uID0gNDExXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMVwiXG5lbmRcbmxldCBvY2FtbF80MTEgOiBPQ2FtbF80MTEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDExKVxubW9kdWxlIE9DYW1sXzQxMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTIpXG4gIGxldCB2ZXJzaW9uID0gNDEyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMlwiXG5lbmRcbmxldCBvY2FtbF80MTIgOiBPQ2FtbF80MTIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEyKVxubW9kdWxlIE9DYW1sXzQxMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTMpXG4gIGxldCB2ZXJzaW9uID0gNDEzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xM1wiXG5lbmRcbmxldCBvY2FtbF80MTMgOiBPQ2FtbF80MTMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEzKVxubW9kdWxlIE9DYW1sXzQxNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTQpXG4gIGxldCB2ZXJzaW9uID0gNDE0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xNFwiXG5lbmRcbmxldCBvY2FtbF80MTQgOiBPQ2FtbF80MTQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDE0KVxubW9kdWxlIE9DYW1sXzUwMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDApXG4gIGxldCB2ZXJzaW9uID0gNTAwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4wXCJcbmVuZFxubGV0IG9jYW1sXzUwMCA6IE9DYW1sXzUwMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDApXG5tb2R1bGUgT0NhbWxfNTAxID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMSlcbiAgbGV0IHZlcnNpb24gPSA1MDFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjFcIlxuZW5kXG5sZXQgb2NhbWxfNTAxIDogT0NhbWxfNTAxLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMSlcbigqJCopXG5cbmxldCBhbGxfdmVyc2lvbnMgOiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIGxpc3QgPSBbXG4gICgqJGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gXyAtPlxuICAgICAgcHJpbnRmIFwiKG1vZHVsZSBPQ2FtbF8lZCA6IE9DYW1sX3ZlcnNpb24pO1xcblwiIG4pKilcbihtb2R1bGUgT0NhbWxfNDAyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA1IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDcgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA4IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDExIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDE0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDEgOiBPQ2FtbF92ZXJzaW9uKTtcbigqJCopXG5dXG5cbigqJGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4gYSBiIC0+XG4gICAgcHJpbnRmIFwiaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfJWQpKE9DYW1sXyVkKVxcblwiIGEgYjtcbiAgICBwcmludGYgXCIgICAgKEFzdGxpYi5NaWdyYXRlXyVkXyVkKShBc3RsaWIuTWlncmF0ZV8lZF8lZClcXG5cIiBhIGIgYiBhXG4gIClcbiopXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDIpKE9DYW1sXzQwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAyXzQwMykoQXN0bGliLk1pZ3JhdGVfNDAzXzQwMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMykoT0NhbWxfNDA0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDNfNDA0KShBc3RsaWIuTWlncmF0ZV80MDRfNDAzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA0KShPQ2FtbF80MDUpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNF80MDUpKEFzdGxpYi5NaWdyYXRlXzQwNV80MDQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDUpKE9DYW1sXzQwNilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNikoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNikoT0NhbWxfNDA3KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDZfNDA3KShBc3RsaWIuTWlncmF0ZV80MDdfNDA2KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA3KShPQ2FtbF80MDgpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwN180MDgpKEFzdGxpYi5NaWdyYXRlXzQwOF80MDcpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDgpKE9DYW1sXzQwOSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA4XzQwOSkoQXN0bGliLk1pZ3JhdGVfNDA5XzQwOClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOSkoT0NhbWxfNDEwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDlfNDEwKShBc3RsaWIuTWlncmF0ZV80MTBfNDA5KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEwKShPQ2FtbF80MTEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMF80MTEpKEFzdGxpYi5NaWdyYXRlXzQxMV80MTApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTEpKE9DYW1sXzQxMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDExXzQxMikoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMikoT0NhbWxfNDEzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTJfNDEzKShBc3RsaWIuTWlncmF0ZV80MTNfNDEyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEzKShPQ2FtbF80MTQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxM180MTQpKEFzdGxpYi5NaWdyYXRlXzQxNF80MTMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTQpKE9DYW1sXzUwMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDE0XzUwMCkoQXN0bGliLk1pZ3JhdGVfNTAwXzQxNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMCkoT0NhbWxfNTAxKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDBfNTAxKShBc3RsaWIuTWlncmF0ZV81MDFfNTAwKVxuKCokKilcblxubW9kdWxlIE9DYW1sX2N1cnJlbnQgPSBPQ2FtbF9PQ0FNTF9WRVJTSU9OXG5cbm1vZHVsZSBGaW5kX3ZlcnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW1wbCBvZiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIHwgSW50ZiBvZiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIHwgVW5rbm93blxuXG4gIGxldCBmcm9tX21hZ2ljIG1hZ2ljID1cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBVbmtub3duXG4gICAgICB8IChtb2R1bGUgVmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBWZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gbWFnaWMgdGhlblxuICAgICAgICAgICAgSW1wbCAobW9kdWxlIFZlcnNpb24pXG4gICAgICAgICAgZWxzZSBpZiBWZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gbWFnaWMgdGhlblxuICAgICAgICAgICAgSW50ZiAobW9kdWxlIFZlcnNpb24pXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9vcCB0YWlsXG4gICAgaW5cbiAgICAoKiBUcmF2ZXJzZSB0aGUgdmVyc2lvbnMgZnJvbSBsYXN0IHRvIGZpcnN0OlxuICAgICAgIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZW4ndCB1bmlxdWUgYW1vbmcgdmVyc2lvbnMsXG4gICAgICAgd2Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24gd2l0aCBhIG1hZ2ljIG51bWJlciBtYXRjaC5cbiAgICAgICBUaGUgc2l0dWF0aW9uIGluIG1pbmQgaXMgdHJ1bmsgc3VwcG9ydC4gKilcbiAgICAgIGxldCBhbGxfdmVyc2lvbnNfdG9wX2Rvd24gPSBMaXN0LnJldiBhbGxfdmVyc2lvbnMgaW5cbiAgICAgIGxvb3AgYWxsX3ZlcnNpb25zX3RvcF9kb3duXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGNvbnRyb2wgd2hhdCB3ZSB1c2UgZnJvbSB0aGUgY3VycmVudCBjb21waWxlciBhbmQgd2hhdCBpcyBlbWJlZCBpblxuICAgdGhpcyBsaWJyYXJ5LlxuXG4gICBJdCBtdXN0IGJlIG9wZW5lZCBpbiBhbGwgbW9kdWxlcywgZXNwZWNpYWxseSB0aGUgb25lcyBjb21pbmcgZnJvbSB0aGUgY29tcGlsZXIuXG4qKVxuXG4oKiQgb3BlbiBBc3RfY2luYXBzX2hlbHBlcnMgJCopXG5cbm1vZHVsZSBKcyA9IFZlcnNpb25zLk9DYW1sXzUwMFxubW9kdWxlIE9jYW1sID0gVmVyc2lvbnMuT0NhbWxfY3VycmVudFxuXG5tb2R1bGUgU2VsZWN0X2FzdCAoT2NhbWwgOiBWZXJzaW9ucy5PQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBpbmNsdWRlIEpzXG5cbiAgbW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnanMsICdvY2FtbCkgdCA9XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuJXMsXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuJXMgKVxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgdFxcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHMgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENvcmVfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHByZXNzaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgUGF0dGVyblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUucGF0dGVybiApXG4gICAgICAgICAgICB0XG4gICAgICB8IENhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jYXNlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9leHRlbnNpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19leHByXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19zaWduYXR1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV9leHByXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFN0cnVjdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuKCokKilcbiAgICAgIHwgTGlzdCA6ICgnYSwgJ2IpIHQgLT4gKCdhIGxpc3QsICdiIGxpc3QpIHRcbiAgICAgIHwgUGFpciA6ICgnYSwgJ2IpIHQgKiAoJ2MsICdkKSB0IC0+ICgnYSAqICdjLCAnYiAqICdkKSB0XG4gIGVuZFxuXG4gIG9wZW4gVHlwZVxuICBtb2R1bGUgT2Zfb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChPY2FtbCkgKEpzKVxuICBtb2R1bGUgVG9fb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChKcykgKE9jYW1sKVxuXG4gIGxldCByZWMgb2Zfb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4gb2NhbWwgLT4ganMgPVxuICAgIGxldCBvcGVuIE9mX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKG9mX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSBvZl9vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSBvZl9vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IHJlYyB0b19vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBqcyAtPiBvY2FtbCA9XG4gICAgbGV0IG9wZW4gVG9fb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAodG9fb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IHRvX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IHRvX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgb2Zfb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSB0b19vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IG9mX29jYW1sIGl0ZW1cbiAgbGV0IHRvX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gb2Zfb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiB0b19vY2FtbCBpdGVtXG5lbmRcblxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFNlbGVjdF9hc3QgKE9jYW1sKVxubW9kdWxlIEFzdF9oZWxwZXIgPSBBc3RfaGVscGVyX2xpdGVcblxuKCogTW9kdWxlcyBmcm9tIEFzdF88bj4gb2YgQXN0bGliLCB3aGVyZSA8bj4gaXMgdGhlIGNvbXBpbGVyIHZlcnNpb24gdGhlIHBweGxpYiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCAqKVxubW9kdWxlIFBhcnNldHJlZSA9IFNlbGVjdGVkX2FzdC5Bc3QuUGFyc2V0cmVlXG5tb2R1bGUgQXN0dHlwZXMgPSBTZWxlY3RlZF9hc3QuQXN0LkFzdHR5cGVzXG5cbigqIE90aGVyIEFzdGxpYiBtb2R1bGVzICopXG5tb2R1bGUgTG9jYXRpb24gPSBBc3RsaWIuTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBBc3RsaWIuTG9uZ2lkZW50XG5cbm1vZHVsZSBQYXJzZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdGxpYi5QYXJzZVxuICBtb2R1bGUgT2Zfb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChPY2FtbCkgKEpzKVxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbiBsZXhidWYgPSBpbXBsZW1lbnRhdGlvbiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zdHJ1Y3R1cmVcbiAgbGV0IGludGVyZmFjZSBsZXhidWYgPSBpbnRlcmZhY2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc2lnbmF0dXJlXG5cbiAgbGV0IHRvcGxldmVsX3BocmFzZSBsZXhidWYgPVxuICAgIHRvcGxldmVsX3BocmFzZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV90b3BsZXZlbF9waHJhc2VcblxuICBsZXQgdXNlX2ZpbGUgbGV4YnVmID1cbiAgICB1c2VfZmlsZSBsZXhidWYgfD4gTGlzdC5tYXAgT2Zfb2NhbWwuY29weV90b3BsZXZlbF9waHJhc2VcblxuICBsZXQgY29yZV90eXBlIGxleGJ1ZiA9IGNvcmVfdHlwZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9jb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gbGV4YnVmID0gZXhwcmVzc2lvbiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9leHByZXNzaW9uXG4gIGxldCBwYXR0ZXJuIGxleGJ1ZiA9IHBhdHRlcm4gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfcGF0dGVyblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGRlZmF1bHRfcHJpbnRfd2FybmluZyBfbG9jID0gKClcbmxldCBhYm91dF9pdGVfYnJhbmNoX3JlZiA9IHJlZiBkZWZhdWx0X3ByaW50X3dhcm5pbmdcbmxldCBjYXJlX2Fib3V0X2l0ZV9icmFuY2ggPSByZWYgZmFsc2VcbmxldCBhYm91dF9pdGVfYnJhbmNoIGxvYyA9ICFhYm91dF9pdGVfYnJhbmNoX3JlZiBsb2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIERlZmluaXRpb24gb2YgdGhlIE9DYW1sIEFTVCAqKVxuXG5vcGVuIEltcG9ydFxuXG4oKiBUaGlzIGZpbGUgaXMgb2J0YWluZWQgYnk6XG5cbiAgIC0gY29weWluZyBhIHN1YnNldCBvZiB0aGUgY29ycmVzcG9uZGluZyBhc3RfeHh4Lm1sIGZpbGUgZnJvbSBBc3RsaWJcbiAgIChzdWItbW9kdWxlcyBBc3R0eXBlcyBhbmQgUGFyc2V0cmVlKVxuICAgLSBhZGRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHBvc2l0aW9uLCBsb2NhdGlvbiwgbG9jIGFuZCBsb25naWRlbnRcbiAgIC0gZmxhdHRlbmluZyBhbGwgdGhlIG1vZHVsZXNcbiAgIC0gcmVtb3ZpbmcgQXN0dHlwZXMuY29uc3RhbnQgKHVudXNlZCBhbmQgY29uZmxpY3RzIHdpdGggUGFyc2V0cmVlLmNvbnN0YW50KVxuICAgLSByZW5hbWluZyBhIGZldyB0eXBlczpcbiAgIC0gLSBMb2NhdGlvbi50IC0+IGxvY2F0aW9uXG4gICAtIC0gTG9uZ2lkZW50LnQgLT4gbG9uZ2lkZW50XG4gICAtIGFkZGluZyBhIHR5cGUgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2MgYW5kIHJlcGxhY2luZyBhbGwgdGhlIG9jY3VycmVuY2VzIG9mIHRoZVxuICAgbGF0dGVyIGJ5IHRoZSBmb3JtZXIuIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gb3ZlcnJpZGUgaXRlcmF0aW9uIGFuIHRoZSBsZXZlbCBvZiBhXG4gICBsb25naWRlbnQgbG9jXG4gICAtIGFkZGluZyBhIHR5cGUgY2FzZXMgPSBjYXNlIGxpc3RcbiAgIC0gcmVwbGFjaW5nIGFsbCBvY2N1cmVuY2VzIG9mIFwiY2FzZSBsaXN0XCIgYnkgXCJjYXNlc1wiXG4gICAtIHJlcGxhY2luZyBhbGwgdGhlICgqSUZfQ1VSUkVOVCA9IEZvby5iYXIqKSBieTogPSBGb28uYmFyXG4gICAtIHJlbW92aW5nIHRoZSBleHRyYSB2YWx1ZXMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZVxuICAgLSByZXBsYWNpbmcgYXBwIFt0eXBlIC4uLl0gYnkgW2FuZCAuLi5dIHRvIG1ha2UgZXZlcnl0aGluZyBvbmUgcmVjdXJzaXZlIGJsb2NrXG4gICAtIGFkZGluZyBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdW0BAQGVuZF0gYXQgdGhlIGVuZFxuXG4gICBUbyB1cGRhdGUgaXQgdG8gYSBuZXdlciBPQ2FtbCB2ZXJzaW9uLCBjcmVhdGUgYSBuZXcgbW9kdWxlIHdpdGggdGhlIGFib3ZlIGZyb20gdGhlXG4gICBsYXRlc3QgY29tcGlsZXIgYW5kIGFkZCB0aGUgZm9sbG93aW5nIG1vZHVsZSBkZWZpbml0aW9ucyBhbmQgb3BlbnMgdG8gZ2V0IGl0IHRvXG4gICBjb21waWxlOlxuICAgW3tcbiAgICBtb2R1bGUgQXN0ID0gVmVyc2lvbnMuT0NhbWxfNHh4XG4gICAgb3BlbiBBc3QuQXN0XG4gICAgbW9kdWxlIExvY2F0aW9uICAgPSBPY2FtbF9jb21tb24uTG9jYXRpb25cbiAgICBtb2R1bGUgTG9uZ2lkZW50ID0gT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuICAgfV1cblxuICAgT25jZSB5b3UgaGF2ZSBnZW5lcmF0ZWQgdGhlIGlubGluZWQgZGVyaXZlZCB0cmF2ZXJzYWwgY2xhc3NlcyBieSBydW5uaW5nXG4gICBbeyBkdW5lIGJ1aWxkIEBsaW50IH1dIHlvdSBjYW4gcmVwbGFjZSB0aGUgYWJvdmUgbWVudGlvbmVkIG1vZHVsZSBkZWZpbml0aW9ucyBieSBhXG4gICBbb3BlbiBJbXBvcnRdIGFuZCB1cGRhdGUgW0ltcG9ydF0gc28gdGhhdCB0aGUgW0pzXSBtb2R1bGUgcG9pbnRzIHRvXG4gICBbVmVyc2lvbnMuT0NhbWxfNHh4XS5cbiopXG5cbigqIFNvdXJjZSBjb2RlIGxvY2F0aW9ucyAocmFuZ2VzIG9mIHBvc2l0aW9ucyksIHVzZWQgaW4gcGFyc2V0cmVlLiAqKVxuXG50eXBlIHBvc2l0aW9uID0gTGV4aW5nLnBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxuYW5kIGxvY2F0aW9uID0gTG9jYXRpb24udCA9IHtcbiAgbG9jX3N0YXJ0IDogcG9zaXRpb247XG4gIGxvY19lbmQgOiBwb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxuYW5kIGxvY2F0aW9uX3N0YWNrID0gbG9jYXRpb24gbGlzdFxuXG4oKiBOb3RlIG9uIHRoZSB1c2Ugb2YgTGV4aW5nLnBvc2l0aW9uIGluIHRoaXMgbW9kdWxlLlxuICAgSWYgW3Bvc19mbmFtZSA9IFwiXCJdLCB0aGVuIHVzZSBbIWlucHV0X25hbWVdIGluc3RlYWQuXG4gICBJZiBbcG9zX2xudW0gPSAtMV0sIHRoZW4gW3Bvc19ib2wgPSAwXS4gVXNlIFtwb3NfY251bV0gYW5kXG4gICByZS1wYXJzZSB0aGUgZmlsZSB0byBnZXQgdGhlIGxpbmUgYW5kIGNoYXJhY3RlciBudW1iZXJzLlxuICAgRWxzZSBhbGwgZmllbGRzIGFyZSBjb3JyZWN0LlxuKilcbmFuZCAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBsb2NhdGlvbiB9XG5cbigqIExvbmcgaWRlbnRpZmllcnMsIHVzZWQgaW4gcGFyc2V0cmVlLiAqKVxuYW5kIGxvbmdpZGVudCA9IExvbmdpZGVudC50ID1cbiAgfCBMaWRlbnQgb2Ygc3RyaW5nXG4gIHwgTGRvdCBvZiBsb25naWRlbnQgKiBzdHJpbmdcbiAgfCBMYXBwbHkgb2YgbG9uZ2lkZW50ICogbG9uZ2lkZW50XG5cbmFuZCBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvY1xuXG4oKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG5hbmQgcmVjX2ZsYWcgPSBBc3R0eXBlcy5yZWNfZmxhZyA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG5hbmQgZGlyZWN0aW9uX2ZsYWcgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IFVwdG8gfCBEb3dudG9cblxuKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG5hbmQgcHJpdmF0ZV9mbGFnID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gUHJpdmF0ZSB8IFB1YmxpY1xuYW5kIG11dGFibGVfZmxhZyA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyA9IEltbXV0YWJsZSB8IE11dGFibGVcbmFuZCB2aXJ0dWFsX2ZsYWcgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBWaXJ0dWFsIHwgQ29uY3JldGVcbmFuZCBvdmVycmlkZV9mbGFnID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IE92ZXJyaWRlIHwgRnJlc2hcbmFuZCBjbG9zZWRfZmxhZyA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnID0gQ2xvc2VkIHwgT3BlblxuYW5kIGxhYmVsID0gc3RyaW5nXG5cbmFuZCBhcmdfbGFiZWwgPSBBc3R0eXBlcy5hcmdfbGFiZWwgPVxuICB8IE5vbGFiZWxcbiAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuYW5kIHZhcmlhbmNlID0gQXN0dHlwZXMudmFyaWFuY2UgPSBDb3ZhcmlhbnQgfCBDb250cmF2YXJpYW50IHwgTm9WYXJpYW5jZVxuYW5kIGluamVjdGl2aXR5ID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBJbmplY3RpdmUgfCBOb0luamVjdGl2aXR5XG5cbigqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbmFuZCBjb25zdGFudCA9IFBhcnNldHJlZS5jb25zdGFudCA9XG4gIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci4gU3VmZml4ZXMgZXhjZXB0XG4gICAgICAgICAgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyICopXG4gIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogbG9jYXRpb24gKiBzdHJpbmcgb3B0aW9uXG4gICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLiAqKVxuICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci4gU3VmZml4ZXMgYXJlIHJlamVjdGVkXG4gICAgICAgICAgYnkgdGhlIHR5cGVjaGVja2VyLiAqKVxuXG4oKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuYW5kIGF0dHJpYnV0ZSA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgPSB7XG4gIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gIGF0dHJfbG9jIDogbG9jYXRpb247XG59XG4oKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbQGlkIEFSR11dIGFuZCBbW0BAaWQgQVJHXV0uXG5cbiAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuIFRoZSBjb21waWxlciBpZ25vcmVzXG4gICAgdW5rbm93biBhdHRyaWJ1dGVzLiAqKVxuXG5hbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbigqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLiAqKVxuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBwYXlsb2FkID0gUGFyc2V0cmVlLnBheWxvYWQgPVxuICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFs/IFBdIG9yIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4oKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgY29yZV90eXBlID0gUGFyc2V0cmVlLmNvcmVfdHlwZSA9IHtcbiAgcHR5cF9kZXNjIDogY29yZV90eXBlX2Rlc2M7XG4gIHB0eXBfbG9jIDogbG9jYXRpb247XG4gIHB0eXBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHB0eXBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29yZV90eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkXX0sXG4gICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsXX0uICopXG4gIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGVcbiAgICAgICAgICBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLiAqKVxuICB8IFB0eXBfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCB0Y29uc3RyXSB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfSBbQ2xvc2VkXX0sXG4gICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0uICopXG4gIHwgUHR5cF9jbGFzcyBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyN0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUICN0Y29uc3RyXSB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtbIGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtbPiBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LFxuICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS4gKilcbiAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9XG4gICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nIHRvIGEgY29uc3RyYWludCBvbiBhXG4gICAgICAgICAgICBsZXQtYmluZGluZzpcblxuICAgICAgICAgIHtbXG4gICAgICAgICAgICBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5cbiAgICAgICAgICBdfVxuICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1cbiAgICAgICAgICAgIFtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fSBbUGV4cF9wb2x5XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX0gW3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9IFtQdHlwX29iamVjdF19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfSBbcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uICopXG4gIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG5hbmQgcGFja2FnZV90eXBlID0gbG9uZ2lkZW50X2xvYyAqIChsb25naWRlbnRfbG9jICogY29yZV90eXBlKSBsaXN0XG4oKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcblxuICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXSByZXByZXNlbnRzXG4gICAgICBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS4gKilcblxuYW5kIHJvd19maWVsZCA9IFBhcnNldHJlZS5yb3dfZmllbGQgPSB7XG4gIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gIHByZl9sb2MgOiBsb2NhdGlvbjtcbiAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgcm93X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVF0gd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhIGNvbnN0YW50IChlbXB0eSlcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yIChzZWVcbiAgICAgICAgICAgIDQuMiBpbiB0aGUgbWFudWFsKSAqKVxuICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG5hbmQgb2JqZWN0X2ZpZWxkID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9IHtcbiAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgcG9mX2xvYyA6IGxvY2F0aW9uO1xuICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCBvYmplY3RfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG5hbmQgcGF0dGVybiA9IFBhcnNldHJlZS5wYXR0ZXJuID0ge1xuICBwcGF0X2Rlc2MgOiBwYXR0ZXJuX2Rlc2M7XG4gIHBwYXRfbG9jIDogbG9jYXRpb247XG4gIHBwYXRfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBwYXRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgcGF0dGVybl9kZXNjID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9XG4gIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyIGJ1dCByZWplY3RlZCBieVxuICAgICAgICAgIHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdICopXG4gIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgbG9uZ2lkZW50X2xvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtDXSB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldICopXG4gIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF0gKilcbiAgfCBQcGF0X3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfSBbQ2xvc2VkXX1cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICB8IFBwYXRfdHlwZSBvZiBsb25naWRlbnRfbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gIHwgUHBhdF9vcGVuIG9mIGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuYW5kIGV4cHJlc3Npb24gPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiA9IHtcbiAgcGV4cF9kZXNjIDogZXhwcmVzc2lvbl9kZXNjO1xuICBwZXhwX2xvYyA6IGxvY2F0aW9uO1xuICBwZXhwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwZXhwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGV4cHJlc3Npb25fZGVzYyA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICB8IFBleHBfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XSAqKVxuICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLFxuICAgICAgICAgIFsxbl0gKilcbiAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlcyAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXVxuXG4gICAgICAgICAgTm90ZXM6XG5cbiAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHkge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufSBbUGV4cF9mdW5dfS5cbiAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmcge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVxuICAgICAgICAgICAgW1BleHBfZnVuXX0uICopXG4gIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV0gcmVwcmVzZW50c1xuICAgICAgICAgIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgIFtsaV0gY2FuIGJlIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19IChub24gbGFiZWxlZFxuICAgICAgICAgIGFyZ3VtZW50KSwge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfSBbTGFiZWxsZWRdfSAobGFiZWxsZWRcbiAgICAgICAgICBhcmd1bWVudHMpIG9yIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsXX0gKG9wdGlvbmFsXG4gICAgICAgICAgYXJndW1lbnQpLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdICopXG4gIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtDXSB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXSAqKVxuICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSAqKVxuICB8IFBleHBfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIGxvbmdpZGVudF9sb2MgICgqKiBbRS5sXSAqKVxuICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uXG4gICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b30gW1VwdG9dfVxuICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b30gW0Rvd250b119ICopXG4gIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbKEUgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uICopXG4gIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gIHwgUGV4cF9uZXcgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX0gW0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICB2YWx1ZXMpLiAqKVxuICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbmFuZCBjYXNlID0gUGFyc2V0cmVlLmNhc2UgPSB7XG4gIHBjX2xocyA6IHBhdHRlcm47XG4gIHBjX2d1YXJkIDogZXhwcmVzc2lvbiBvcHRpb247XG4gIHBjX3JocyA6IGV4cHJlc3Npb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbmFuZCBsZXRvcCA9IFBhcnNldHJlZS5sZXRvcCA9IHtcbiAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gIGJvZHkgOiBleHByZXNzaW9uO1xufVxuXG5hbmQgYmluZGluZ19vcCA9IFBhcnNldHJlZS5iaW5kaW5nX29wID0ge1xuICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gIHBib3BfbG9jIDogbG9jYXRpb247XG59XG5cbigqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9IHtcbiAgcHZhbF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHZhbF90eXBlIDogY29yZV90eXBlO1xuICBwdmFsX3ByaW0gOiBzdHJpbmcgbGlzdDtcbiAgcHZhbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcHZhbF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuXG4gICAgLSBbdmFsIHg6IFRdLCB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX0gW3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVxuICAgICAgW3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dICopXG5cbigqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcHR5cGVfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB0eXBlX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICBwdHlwZV9jc3RycyA6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBsb2NhdGlvbikgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gIHB0eXBlX2tpbmQgOiB0eXBlX2tpbmQ7XG4gIHB0eXBlX3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICBwdHlwZV9tYW5pZmVzdCA6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICBwdHlwZV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcHR5cGVfbG9jIDogbG9jYXRpb247XG59XG4oKiogSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLCBmb3IgdmFyaW91c1xuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH0gW3B0eXBlX2tpbmRdfSBhbmRcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fSBbcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG5cbiAgICAtIFt0eXBlIHRdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1cbiAgICAgIFtQdHlwZV92YXJpYW50XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9IFtQdHlwZV92YXJpYW50XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVxuICAgICAgW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9IFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IC4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufSBbUHR5cGVfb3Blbl19LFxuICAgICAgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLiAqKVxuXG5hbmQgdHlwZV9raW5kID0gUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIHwgUHR5cGVfYWJzdHJhY3RcbiAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgfCBQdHlwZV9vcGVuXG5cbmFuZCBsYWJlbF9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9IHtcbiAgcGxkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbGRfbXV0YWJsZSA6IG11dGFibGVfZmxhZztcbiAgcGxkX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHBsZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGxkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbQGlkMV0gW0BpZDJdXSAqKVxufVxuKCoqIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV0gd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX0gW3BsZF9tdXRhYmxlXX1cbiAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9IFtJbW11dGFibGVdfSxcbiAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV0gd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1cbiAgICAgIFtwbGRfbXV0YWJsZV19IGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19LlxuXG4gICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSB7XG4gIHBjZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNkX3ZhcnMgOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIHBjZF9hcmdzIDogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICBwY2RfcmVzIDogY29yZV90eXBlIG9wdGlvbjtcbiAgcGNkX2xvYyA6IGxvY2F0aW9uO1xuICBwY2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn0gcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3JcbiAgICAgICAgICBhcmd1bWVudHMgb2Y6XG5cbiAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW4gW3JlcyA9IE5vbmVdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgIC0gW0M6IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgIC0gW0Mgb2Ygey4uLn1dIHdoZW4gW3JlcyA9IE5vbmVdLCBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgICAgICAgIC0gW0M6IHsuLi59IC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uICopXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9IHtcbiAgcHR5ZXh0X3BhdGggOiBsb25naWRlbnRfbG9jO1xuICBwdHlleHRfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICBwdHlleHRfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZztcbiAgcHR5ZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleHRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgIChbdHlwZSB0ICs9IC4uLl0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IHtcbiAgcGV4dF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gIHBleHRfbG9jIDogbG9jYXRpb247XG4gIHBleHRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCB0eXBlX2V4Y2VwdGlvbiA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9IHtcbiAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBwdHlleG5fbG9jIDogbG9jYXRpb247XG4gIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb25cbiAgICAgICAgICBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuXG4gICAgICAgICAge3VsXG4gICAgICAgICAgIHstIFtDIG9mIFQxICogLi4uICogVG5dXG4gICAgICAgICAgICAgIHdoZW46XG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtOb25lXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgfSAqKVxuICB8IFBleHRfcmViaW5kIG9mIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4oKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG5hbmQgY2xhc3NfdHlwZSA9IFBhcnNldHJlZS5jbGFzc190eXBlID0ge1xuICBwY3R5X2Rlc2MgOiBjbGFzc190eXBlX2Rlc2M7XG4gIHBjdHlfbG9jIDogbG9jYXRpb247XG4gIHBjdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIHwgUGN0eV9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogLSBbY11cbiAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAtIFs/bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0uICopXG4gIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPSB7XG4gIHBjc2lnX3NlbGYgOiBjb3JlX3R5cGU7XG4gIHBjc2lnX2ZpZWxkcyA6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfSBbcGNzaWdfc2VsZl19IGlzXG4gICAgICB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX0gW1B0eXBfYW55XX0gKilcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9IHtcbiAgcGN0Zl9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICBwY3RmX2xvYyA6IGxvY2F0aW9uO1xuICBwY3RmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcbiAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCAnYSBjbGFzc19pbmZvcyA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyA9IHtcbiAgcGNpX3ZpcnQgOiB2aXJ0dWFsX2ZsYWc7XG4gIHBjaV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwY2lfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjaV9leHByIDogJ2E7XG4gIHBjaV9sb2MgOiBsb2NhdGlvbjtcbiAgcGNpX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi4gKilcblxuYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG5hbmQgY2xhc3NfZXhwciA9IFBhcnNldHJlZS5jbGFzc19leHByID0ge1xuICBwY2xfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYztcbiAgcGNsX2xvYyA6IGxvY2F0aW9uO1xuICBwY2xfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZXhwcl9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIHwgUGNsX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdLiAqKVxuICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV0gcmVwcmVzZW50c1xuICAgICAgICAgIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3JcbiAgICAgICAgICBzdGFydCB3aXRoIFs/XSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID0ge1xuICBwY3N0cl9zZWxmIDogcGF0dGVybjtcbiAgcGNzdHJfZmllbGRzIDogY2xhc3NfZmllbGQgbGlzdDtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfSBbcGNzdHJfc2VsZl19IGlzXG4gICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9IFtQcGF0X2FueV19ICopXG5cbmFuZCBjbGFzc19maWVsZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCA9IHtcbiAgcGNmX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjO1xuICBwY2ZfbG9jIDogbG9jYXRpb247XG4gIHBjZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtpbmhlcml0IENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVxuICAgICAgICAgICAgW0ZyZXNoXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVxuICAgICAgICAgICAgW0ZyZXNoXX0gYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1cbiAgICAgICAgICAgIFtPdmVycmlkZV19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtTb21lIHhdICopXG4gIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbdmFsIHggPSBFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVxuICAgICAgICAgICAgW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9IFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzXG4gICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1cbiAgICAgICAgICAgIFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfSBhbmQgW2tpbmRdIGlzXG4gICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWwoVCldfSAqKVxuICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogLSBbbWV0aG9kIHggPSBFXSAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9XG4gICAgICAgICAgICBbUGV4cF9wb2x5XX0pXG4gICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF0gKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9XG4gICAgICAgICAgICBbUHR5cF9wb2x5XX0pICopXG4gIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCBjbGFzc19maWVsZF9raW5kID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG5hbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbigqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV90eXBlID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlID0ge1xuICBwbXR5X2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjO1xuICBwbXR5X2xvYyA6IGxvY2F0aW9uO1xuICBwbXR5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV90eXBlX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIHwgUG10eV9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQbXR5X2FsaWFzIG9mIGxvbmdpZGVudF9sb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuYW5kIGZ1bmN0b3JfcGFyYW1ldGVyID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgfCBVbml0ICAoKiogWygpXSAqKVxuICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuYW5kIHNpZ25hdHVyZV9pdGVtID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0ge1xuICBwc2lnX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICBwc2lnX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSAqKVxuICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gKilcbiAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCBtb2R1bGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID0ge1xuICBwbWRfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWRfdHlwZSA6IG1vZHVsZV90eXBlO1xuICBwbWRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbmFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPSB7XG4gIHBtc19uYW1lIDogc3RyaW5nIGxvYztcbiAgcG1zX21hbmlmZXN0IDogbG9uZ2lkZW50X2xvYztcbiAgcG1zX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXNfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwbXRkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXRkX3R5cGUgOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gIHBtdGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtdGRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbUyA9IE1UXSxcbiAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHdoZW5cbiAgICAgIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX0gW3BtdGRfdHlwZV19IGlzIFtOb25lXS4gKilcblxuYW5kICdhIG9wZW5faW5mb3MgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyA9IHtcbiAgcG9wZW5fZXhwciA6ICdhO1xuICBwb3Blbl9vdmVycmlkZSA6IG92ZXJyaWRlX2ZsYWc7XG4gIHBvcGVuX2xvYyA6IGxvY2F0aW9uO1xuICBwb3Blbl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IChzaWxlbmNlcyB0aGUgXCJ1c2VkXG4gICAgICBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH0gW0ZyZXNoXX0gKilcblxuYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBsb25naWRlbnRfbG9jIG9wZW5faW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4gTS5OXVxuICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG5hbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4gTS5OXVxuICAgIC0gW29wZW4gTShOKS5PXVxuICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbmFuZCAnYSBpbmNsdWRlX2luZm9zID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPSB7XG4gIHBpbmNsX21vZCA6ICdhO1xuICBwaW5jbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGluY2xfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG5hbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuYW5kIHdpdGhfY29uc3RyYWludCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICB8IFB3aXRoX3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2ggdGhlIG5hbWUgb2YgdGhlXG4gICAgICAgICAgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgfCBQd2l0aF9tb2R1bGUgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2MgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlIG9mIGxvbmdpZGVudF9sb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICB8IFB3aXRoX21vZHN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfZXhwciA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciA9IHtcbiAgcG1vZF9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYztcbiAgcG1vZF9sb2MgOiBsb2NhdGlvbjtcbiAgcG1vZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfZXhwcl9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICB8IFBtb2RfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtYXSAqKVxuICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuYW5kIHN0cnVjdHVyZV9pdGVtID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0ge1xuICBwc3RyX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICBwc3RyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCB2YWx1ZV9iaW5kaW5nID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPSB7XG4gIHB2Yl9wYXQgOiBwYXR0ZXJuO1xuICBwdmJfZXhwciA6IGV4cHJlc3Npb247XG4gIHB2Yl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgcHZiX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgbW9kdWxlX2JpbmRpbmcgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPSB7XG4gIHBtYl9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtYl9leHByIDogbW9kdWxlX2V4cHI7XG4gIHBtYl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgcG1iX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuKCoqIHsxIFRvcGxldmVsfSAqKVxuKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbmFuZCB0b3BsZXZlbF9waHJhc2UgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbmFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlID0ge1xuICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gIHBkaXJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID0ge1xuICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gIHBkaXJhX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gIHwgUGRpcl9pZGVudCBvZiBsb25naWRlbnRcbiAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5hbmQgY2FzZXMgPSBjYXNlIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVxuXG5jbGFzcyB2aXJ0dWFsIG1hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gY2hhclxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHBvc2l0aW9uID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGlkZW50IGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIE9wdGlvbmFsIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ID0gZnVuIHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGIgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUFR5cCBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHR5cF9vYmplY3QgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiByb3dfZmllbGQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IFBwYXRfYW55XG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHBhdF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBQcGF0X2ludGVydmFsIChhLCBiKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBQcGF0X3VucGFjayBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXhwX2lkZW50IGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGQgaW5cbiAgICAgICAgICAgIFBleHBfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF90cnkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUGV4cF9maWVsZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VxdWVuY2UgKGEsIGIpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4cF9jb2VyY2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXhwX25ldyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfb3ZlcnJpZGUgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hc3NlcnQgYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9uZXd0eXBlIChhLCBiKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX29wZW4gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgaW5cbiAgICAgICAgeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3JlY29yZCBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBQdHlwZV9vcGVuXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3R1cGxlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY3R5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYSBjbGFzc19pbmZvcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGQgaW5cbiAgICAgICAgICAgIFBjbF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBQY2ZfaW5oZXJpdCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfaW5pdGlhbGl6ZXIgYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIENma192aXJ0dWFsIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUG10eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBtdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIE5hbWVkIChhLCBiKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdmFsdWUgYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2luY2x1ZGUgYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgaW5cbiAgICAgICAgeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhIG9wZW5faW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2RzdWJzdCAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBtb2RfdW5wYWNrIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9XG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R0eXBlIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBQZGlyX2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIGl0ZXIgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxpc3QgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2Egb3B0aW9uIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdW5pdFxuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIHNlbGYjc3RyaW5nIHBvc19mbmFtZTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2xudW07XG4gICAgICAgIHNlbGYjaW50IHBvc19ib2w7XG4gICAgICAgIHNlbGYjaW50IHBvc19jbnVtXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX2VuZDtcbiAgICAgICAgc2VsZiNib29sIGxvY19naG9zdFxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsb2MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIF9hIHR4dDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBsb2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGJcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiB1bml0ID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gdW5pdCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPiBzZWxmI2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZTtcbiAgICAgICAgc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBhdHRyX2xvY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgc2VsZiNwYXlsb2FkIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBTaWcgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY1xuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgYlxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHJmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2Jvb2wgYjtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29uc3RhbnQgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RhbnQgYlxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPiBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBjO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGRcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGM7XG4gICAgICAgICAgICBzZWxmI2RpcmVjdGlvbl9mbGFnIGQ7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBiXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVjbGFyYXRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKClcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwY19saHM7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBjX3Joc1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgc2VsZiNiaW5kaW5nX29wIGxldF87XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcztcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIGJvZHlcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wO1xuICAgICAgICBzZWxmI3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwYm9wX2xvY1xuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW07XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHZhbF9sb2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGMpXG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgIHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKClcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZTtcbiAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHBsZF90eXBlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lO1xuICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycztcbiAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWU7XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3R5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBjXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPiBzZWxmI2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgYztcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgZClcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgYztcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgZClcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGNsYXNzX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHBjaV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lO1xuICAgICAgICBfYSBwY2lfZXhwcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2lfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2xfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBjO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGRcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGNcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYlxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjY2xhc3NfZmllbGRfa2luZCBjKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjY2xhc3NfZmllbGRfa2luZCBjKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYlxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKClcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHNpZ19sb2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1kX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZTtcbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtc19sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2Egb3Blbl9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBfYSBwb3Blbl9leHByO1xuICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBfYSBwaW5jbF9tb2Q7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGluY2xfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc3RyX2xvY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGJcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcHZiX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHB2Yl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHZiX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtYl9sb2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGRpcl9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbGlzdCAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcHRpb24gLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19jbnVtIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IGFjY1xuICAgICAgICB8IExhYmVsbGVkIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPiBzZWxmI2NoYXIgYSBhY2NcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBTaWcgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gYWNjXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gYWNjXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYSBhY2NcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhIGFjY1xuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IGFjY1xuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gYWNjXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IGFjY1xuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPiBzZWxmI2NsYXNzX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhIGFjY1xuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhIGFjY1xuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZF9tYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ2FjYyAtPiBib29sICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gY2hhciAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiBpbnQgKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbGlzdCAtPiAnYWNjIC0+ICdhIGxpc3QgKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBvcHRpb24gLT4gJ2FjYyAtPiAnYSBvcHRpb24gKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ2FjYyAtPiBzdHJpbmcgKiAnYWNjXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAnYWNjIC0+IHBvc2l0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lLCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBwb3NfbG51bSwgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBwb3NfYm9sLCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2NudW0sIGFjYyA9IHNlbGYjaW50IHBvc19jbnVtIGFjYyBpblxuICAgICAgICAoeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+IGxvY2F0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IGFjYyAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0LCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGxvY19lbmQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCwgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgKHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiBsb2NhdGlvbl9zdGFjayAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsb2MgLT4gJ2FjYyAtPiAnYSBsb2MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCB0eHQsIGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGxvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgICh7IHR4dDsgbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiBsb25naWRlbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGlkZW50IGEsIGFjYylcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChMZG90IChhLCBiKSwgYWNjKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGIgYWNjIGluXG4gICAgICAgICAgICAoTGFwcGx5IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gbG9uZ2lkZW50X2xvYyAqICdhY2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdhY2MgLT4gcmVjX2ZsYWcgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAnYWNjIC0+IGRpcmVjdGlvbl9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiBwcml2YXRlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAnYWNjIC0+IG11dGFibGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gdmlydHVhbF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+IG92ZXJyaWRlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiBjbG9zZWRfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+IGxhYmVsICogJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gYXJnX2xhYmVsICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoTm9sYWJlbCwgYWNjKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExhYmVsbGVkIGEsIGFjYylcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChPcHRpb25hbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAnYWNjIC0+IHZhcmlhbmNlICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ2FjYyAtPiBpbmplY3Rpdml0eSAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+IGNvbnN0YW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfaW50ZWdlciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjaGFyIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2NoYXIgYSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9mbG9hdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiBhdHRyaWJ1dGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQsIGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhdHRyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiBleHRlbnNpb24gKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAnYWNjIC0+IGF0dHJpYnV0ZXMgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gcGF5bG9hZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFN0ciBhLCBhY2MpXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU2lnIGEsIGFjYylcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBUeXAgYSwgYWNjKVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUFBhdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ2FjYyAtPiBjb3JlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYywgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gY29yZV90eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIGFjYylcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3ZhciBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfY2xhc3MgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BvbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcGFja2FnZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+IHBhY2thZ2VfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+IHJvd19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcmZfZGVzYywgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+IHJvd19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUnRhZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChSaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gb2JqZWN0X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjLCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG9mX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzY1xuICAgICAgICA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE90YWcgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoT2luaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gcGF0dGVybiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjLCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiBwYXR0ZXJuX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoUHBhdF9hbnksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhciBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2ludGVydmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RydWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXJpYW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9vciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9sYXp5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdW5wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gZXhwcmVzc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ2FjYyAtPiBleHByZXNzaW9uX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Nhc2VzIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW5jdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1biAoYSwgYiwgYywgZCksIGFjYylcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9tYXRjaCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90cnkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RydWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF92YXJpYW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZmllbGQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXF1ZW5jZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfd2hpbGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGFjYyBpblxuICAgICAgICAgICAgbGV0IGUsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlbmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbmV3IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0aW5zdHZhciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfb3ZlcnJpZGUgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hc3NlcnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sYXp5IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3BvbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vYmplY3QgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbmV3dHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3BhY2sgYSwgYWNjKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29wZW4gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsZXRvcCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0b3AgYSwgYWNjKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IChQZXhwX3VucmVhY2hhYmxlLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiBjYXNlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjX2xocywgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgYWNjIGluXG4gICAgICAgIGxldCBwY19yaHMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgICh7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+IGxldG9wICogJ2FjYyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gYWNjIC0+XG4gICAgICAgIGxldCBsZXRfLCBhY2MgPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBhY2MgaW5cbiAgICAgICAgbGV0IGFuZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBhY2MgaW5cbiAgICAgICAgbGV0IGJvZHksIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGFjYyBpblxuICAgICAgICAoeyBsZXRfOyBhbmRzOyBib2R5IH0sIGFjYylcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAnYWNjIC0+IGJpbmRpbmdfb3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBib3Bfb3AsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9leHAsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICAoeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0sIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gYWNjIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbG9jYXRpb24gYyBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCwgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCwgYWNjID1cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdhY2MgLT4gdHlwZV9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBhY2MpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV92YXJpYW50IGEsIGFjYylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfcmVjb3JkIGEsIGFjYylcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBhY2MpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGxkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGFjYyBpblxuICAgICAgICBsZXQgcGxkX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcGxkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzLCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfcmVjb3JkIGEsIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gdHlwZV9leHRlbnNpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCwgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ2FjYyAtPiB0eXBlX2V4Y2VwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yLCBhY2MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvciBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9kZWNsIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X3JlYmluZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ2FjYyAtPiBjbGFzc190eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYywgYWNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gY2xhc3Nfc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYsIGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgYWNjXG4gICAgICAgIGluXG4gICAgICAgICh7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYywgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2luaGVyaXQgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgZCksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl92YWwgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgZCksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX2NvbnN0cmFpbnQgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGFjYyBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9leHByLCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICggeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+IGNsYXNzX2V4cHIgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2Z1biAoYSwgYiwgYywgZCksIGFjYylcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNsX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdhY2MgLT4gY2xhc3Nfc3RydWN0dXJlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYsIGFjYyA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgICh7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5oZXJpdCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgYSwgYWNjKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX2NvbnN0cmFpbnQgYSwgYWNjKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaXRpYWxpemVyIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZFxuICAgICAgICA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX3ZpcnR1YWwgYSwgYWNjKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfY29uY3JldGUgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUG10eV93aXRoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV90eXBlb2YgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2FsaWFzIGEsIGFjYylcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdhY2MgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBhY2MpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChOYW1lZCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiBzaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MsIGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdmFsdWUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2RzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfcmVjbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19vcGVuIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfZXh0ZW5zaW9uIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1kX25hbWUsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbWRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtc19uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgYWNjIGluXG4gICAgICAgICh7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByLCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBvcGVuX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvblxuICAgICAgICA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBvcGVuX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kLCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAnYWNjIC0+IHdpdGhfY29uc3RyYWludCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2RzdWJzdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHIgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzY1xuICAgICAgICA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfdW5wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gc3RydWN0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjLCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdmFsdWUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ByaW1pdGl2ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl90eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcmVjbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHR5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9vcGVuIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXh0ZW5zaW9uIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gdmFsdWVfYmluZGluZyAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmJfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiBtb2R1bGVfYmluZGluZyAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1iX25hbWUsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbWJfZXhwciwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbWJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAnYWNjIC0+IHRvcGxldmVsX3BocmFzZSAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGVmIGEsIGFjYylcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RpciBhLCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZGlyX2FyZywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgYWNjIGluXG4gICAgICAgIGxldCBwZGlyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjLCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfc3RyaW5nIGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Jvb2wgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2Jvb2wgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ2FjYyAtPiBjYXNlcyAqICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAnY3R4IC0+IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhclxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvblxuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogJ2N0eCAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgTGlkZW50IGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiAnY3R4IC0+IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiAnY3R4IC0+IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID1cbiAgICAgIGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogJ2N0eCAtPiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6ICdjdHggLT4gb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID1cbiAgICAgIGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIE9wdGlvbmFsIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6ICdjdHggLT4gdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBjdHggYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiAnY3R4IC0+IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUFR5cCBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiAnY3R4IC0+IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogJ2N0eCAtPiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9vYmplY3QgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6ICdjdHggLT4gcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIGN0eCBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogJ2N0eCAtPiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiAnY3R4IC0+IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IFBwYXRfYW55XG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2ludGVydmFsIChhLCBiKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3VucGFjayBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uID1cbiAgICAgIGZ1biBjdHggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eCBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2lkZW50IGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGQgaW5cbiAgICAgICAgICAgIFBleHBfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF90cnkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9maWVsZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VxdWVuY2UgKGEsIGIpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9jb2VyY2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX25ldyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfb3ZlcnJpZGUgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9hc3NlcnQgYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9uZXd0eXBlIChhLCBiKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX29wZW4gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gY3R4IGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3JlY29yZCBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBQdHlwZV9vcGVuXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3R1cGxlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4gY3R4IHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBjdHggcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gPVxuICAgICAgZnVuIGN0eCB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogJ2N0eCAtPiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogJ2N0eCAtPiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogJ2N0eCAtPiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYSBjbGFzc19pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4XG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6ICdjdHggLT4gY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIGN0eCB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIGN0eCBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgIFBjbF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6ICdjdHggLT4gY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6ICdjdHggLT4gY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICBQY2ZfaW5oZXJpdCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfaW5pdGlhbGl6ZXIgYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIENma192aXJ0dWFsIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgY3R4IHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE5hbWVkIChhLCBiKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgY3R4IHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdmFsdWUgYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2luY2x1ZGUgYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtZF9sb2MgaW5cbiAgICAgICAgeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcGVuX2luZm9zIC0+ICdhIG9wZW5faW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIGN0eCBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6ICdjdHggLT4gb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiAnY3R4IC0+IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2RzdWJzdCAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIGN0eCB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgY3R4IHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfdW5wYWNrIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9XG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R0eXBlIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1iX2xvYyBpblxuICAgICAgICB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgY3R4IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIGN0eCBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogJ2N0eCAtPiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBvcHRpb24gLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgcG9zX2NudW0gaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgIChcInBvc19sbnVtXCIsIHBvc19sbnVtKTtcbiAgICAgICAgICAgIChcInBvc19ib2xcIiwgcG9zX2JvbCk7XG4gICAgICAgICAgICAoXCJwb3NfY251bVwiLCBwb3NfY251bSk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGxvY19naG9zdCBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBsb2Nfc3RhcnQpO1xuICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBsb2NfZW5kKTtcbiAgICAgICAgICAgIChcImxvY19naG9zdFwiLCBsb2NfZ2hvc3QpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgbG9jIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInR4dFwiLCB0eHQpOyAoXCJsb2NcIiwgbG9jKSBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMZG90XCIgWyBhOyBiIF1cbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYXBwbHlcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdyZXMgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25yZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJOb25yZWN1cnNpdmVcIiBbXVxuICAgICAgICB8IFJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIlJlY3Vyc2l2ZVwiIFtdXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVwdG8gLT4gc2VsZiNjb25zdHIgXCJVcHRvXCIgW11cbiAgICAgICAgfCBEb3dudG8gLT4gc2VsZiNjb25zdHIgXCJEb3dudG9cIiBbXVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFByaXZhdGUgLT4gc2VsZiNjb25zdHIgXCJQcml2YXRlXCIgW11cbiAgICAgICAgfCBQdWJsaWMgLT4gc2VsZiNjb25zdHIgXCJQdWJsaWNcIiBbXVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEltbXV0YWJsZSAtPiBzZWxmI2NvbnN0ciBcIkltbXV0YWJsZVwiIFtdXG4gICAgICAgIHwgTXV0YWJsZSAtPiBzZWxmI2NvbnN0ciBcIk11dGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFZpcnR1YWwgLT4gc2VsZiNjb25zdHIgXCJWaXJ0dWFsXCIgW11cbiAgICAgICAgfCBDb25jcmV0ZSAtPiBzZWxmI2NvbnN0ciBcIkNvbmNyZXRlXCIgW11cblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE92ZXJyaWRlIC0+IHNlbGYjY29uc3RyIFwiT3ZlcnJpZGVcIiBbXVxuICAgICAgICB8IEZyZXNoIC0+IHNlbGYjY29uc3RyIFwiRnJlc2hcIiBbXVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT4gc2VsZiNjb25zdHIgXCJDbG9zZWRcIiBbXVxuICAgICAgICB8IE9wZW4gLT4gc2VsZiNjb25zdHIgXCJPcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gc2VsZiNjb25zdHIgXCJOb2xhYmVsXCIgW11cbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFiZWxsZWRcIiBbIGEgXVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPcHRpb25hbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENvdmFyaWFudCAtPiBzZWxmI2NvbnN0ciBcIkNvdmFyaWFudFwiIFtdXG4gICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiBzZWxmI2NvbnN0ciBcIkNvbnRyYXZhcmlhbnRcIiBbXVxuICAgICAgICB8IE5vVmFyaWFuY2UgLT4gc2VsZiNjb25zdHIgXCJOb1ZhcmlhbmNlXCIgW11cblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW5qZWN0aXZlIC0+IHNlbGYjY29uc3RyIFwiSW5qZWN0aXZlXCIgW11cbiAgICAgICAgfCBOb0luamVjdGl2aXR5IC0+IHNlbGYjY29uc3RyIFwiTm9JbmplY3Rpdml0eVwiIFtdXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9pbnRlZ2VyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9jaGFyXCIgWyBhIF1cbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9zdHJpbmdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfZmxvYXRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBhdHRyX25hbWUpO1xuICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAoXCJhdHRyX2xvY1wiLCBhdHRyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGIgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBTdHJcIiBbIGEgXVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBTaWdcIiBbIGEgXVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBUeXBcIiBbIGEgXVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBQYXRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIHB0eXBfZGVzYyk7XG4gICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlwX2xvY19zdGFja1wiLCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgcHR5cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IHNlbGYjY29uc3RyIFwiUHR5cF9hbnlcIiBbXVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hcnJvd1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX29iamVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jbGFzc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYWxpYXNcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3ZhcmlhbnRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BhY2thZ2VcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBiXG4gICAgICAgIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInByZl9kZXNjXCIsIHByZl9kZXNjKTtcbiAgICAgICAgICAgIChcInByZl9sb2NcIiwgcHJmX2xvYyk7XG4gICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUnRhZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJpbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIHBvZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBvZl9sb2NcIiwgcG9mX2xvYyk7XG4gICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBwb2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPdGFnXCIgWyBhOyBiIF1cbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT2luaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcGF0X2xvY1wiLCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBwcGF0X2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQcGF0X2FueVwiIFtdXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYWxpYXNcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdGFudFwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2ludGVydmFsXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3JlY29yZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FycmF5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X29yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBwZXhwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdGFudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mdW5jdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGQgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbWF0Y2hcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF90cnlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3JlY29yZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9maWVsZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRmaWVsZFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FycmF5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfaWZ0aGVuZWxzZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXF1ZW5jZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF93aGlsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gZSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZvclwiIFsgYTsgYjsgYzsgZDsgZSBdXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvZXJjZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZW5kXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbmV3XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGluc3R2YXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vdmVycmlkZVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRtb2R1bGVcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0ZXhjZXB0aW9uXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXNzZXJ0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX29iamVjdFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbmV3dHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcGFja1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX29wZW5cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRvcFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHNlbGYjY29uc3RyIFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjX2xoc1wiLCBwY19saHMpOyAoXCJwY19ndWFyZFwiLCBwY19ndWFyZCk7IChcInBjX3Joc1wiLCBwY19yaHMpIF1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcImxldF9cIiwgbGV0Xyk7IChcImFuZHNcIiwgYW5kcyk7IChcImJvZHlcIiwgYm9keSkgXVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwYm9wX29wXCIsIHBib3Bfb3ApO1xuICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgcGJvcF9wYXQpO1xuICAgICAgICAgICAgKFwicGJvcF9leHBcIiwgcGJvcF9leHApO1xuICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgcGJvcF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3R5cGVcIiwgcHZhbF90eXBlKTtcbiAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBwdmFsX3ByaW0pO1xuICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdmFsX2xvY1wiLCBwdmFsX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgIChcInB0eXBlX3BhcmFtc1wiLCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgcHR5cGVfY3N0cnMpO1xuICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgIChcInB0eXBlX3ByaXZhdGVcIiwgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBwdHlwZV9tYW5pZmVzdCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHR5cGVfbG9jXCIsIHB0eXBlX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IHNlbGYjY29uc3RyIFwiUHR5cGVfYWJzdHJhY3RcIiBbXVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3ZhcmlhbnRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfcmVjb3JkXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IHNlbGYjY29uc3RyIFwiUHR5cGVfb3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgcGxkX25hbWUpO1xuICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgKFwicGxkX3R5cGVcIiwgcGxkX3R5cGUpO1xuICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBwbGRfbG9jKTtcbiAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIHBjZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBjZF92YXJzXCIsIHBjZF92YXJzKTtcbiAgICAgICAgICAgIChcInBjZF9hcmdzXCIsIHBjZF9hcmdzKTtcbiAgICAgICAgICAgIChcInBjZF9yZXNcIiwgcGNkX3Jlcyk7XG4gICAgICAgICAgICAoXCJwY2RfbG9jXCIsIHBjZF9sb2MpO1xuICAgICAgICAgICAgKFwicGNkX2F0dHJpYnV0ZXNcIiwgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjc3RyX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjc3RyX3JlY29yZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3BhcmFtc1wiLCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgcHR5ZXh0X2NvbnN0cnVjdG9ycyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAoXCJwdHlleHRfbG9jXCIsIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgcHR5ZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXh0X25hbWVcIiwgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBwZXh0X2tpbmQpO1xuICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgcGV4dF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4dF9hdHRyaWJ1dGVzXCIsIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4bl9jb25zdHJ1Y3RvclwiLCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBwdHlleG5fbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9kZWNsXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfcmViaW5kXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdHlfZGVzY1wiLCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgcGN0eV9sb2MpO1xuICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfc2lnbmF0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9hcnJvd1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzaWdfc2VsZlwiLCBwY3NpZ19zZWxmKTsgKFwicGNzaWdfZmllbGRzXCIsIHBjc2lnX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0Zl9kZXNjXCIsIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBwY3RmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9pbmhlcml0XCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYzsgZCBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYzsgZCBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfbWV0aG9kXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgKFwicGNpX3BhcmFtc1wiLCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIHBjaV9uYW1lKTtcbiAgICAgICAgICAgIChcInBjaV9leHByXCIsIHBjaV9leHByKTtcbiAgICAgICAgICAgIChcInBjaV9sb2NcIiwgcGNpX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBwY2lfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIHBjbF9kZXNjKTtcbiAgICAgICAgICAgIChcInBjbF9sb2NcIiwgcGNsX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBwY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGQgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3N0cl9zZWxmXCIsIHBjc3RyX3NlbGYpOyAoXCJwY3N0cl9maWVsZHNcIiwgcGNzdHJfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2ZfbG9jXCIsIHBjZl9sb2MpO1xuICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgcGNmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2luaGVyaXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfbWV0aG9kXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2luaXRpYWxpemVyXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJDZmtfdmlydHVhbFwiIFsgYSBdXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJDZmtfY29uY3JldGVcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIHBtdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAoXCJwbXR5X2F0dHJpYnV0ZXNcIiwgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfc2lnbmF0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3dpdGhcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfdHlwZW9mXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2FsaWFzXCIgWyBhIF1cblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBzZWxmI2NvbnN0ciBcIlVuaXRcIiBbXVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk5hbWVkXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHNpZ19kZXNjXCIsIHBzaWdfZGVzYyk7IChcInBzaWdfbG9jXCIsIHBzaWdfbG9jKSBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdmFsdWVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGV4dFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19yZWNtb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZXN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc1wiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbWRfdHlwZVwiLCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBwbWRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbWRfbG9jXCIsIHBtZF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgcG1zX25hbWUpO1xuICAgICAgICAgICAgKFwicG1zX21hbmlmZXN0XCIsIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBwbXNfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXNfbG9jXCIsIHBtc19sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG10ZF9uYW1lXCIsIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgcG10ZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG10ZF9sb2NcIiwgcG10ZF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIHBvcGVuX2V4cHIpO1xuICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgKFwicG9wZW5fbG9jXCIsIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIHBvcGVuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgKFwicGluY2xfbG9jXCIsIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIHBpbmNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHN1YnN0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtb2RfZGVzY1wiLCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgcG1vZF9sb2MpO1xuICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc3RyX2Rlc2NcIiwgcHN0cl9kZXNjKTsgKFwicHN0cl9sb2NcIiwgcHN0cl9sb2MpIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9ldmFsXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdmFsdWVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcHJpbWl0aXZlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGV4dFwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9yZWNtb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHR5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc1wiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcHZiX3BhdCk7XG4gICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBwdmJfZXhwcik7XG4gICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBwdmJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdmJfbG9jXCIsIHB2Yl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBwbWJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBwbWJfZXhwcik7XG4gICAgICAgICAgICAoXCJwbWJfYXR0cmlidXRlc1wiLCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbWJfbG9jXCIsIHBtYl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kZWZcIiBbIGEgXVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RpclwiIFsgYSBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgcGRpcl9uYW1lKTtcbiAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIHBkaXJfYXJnKTtcbiAgICAgICAgICAgIChcInBkaXJfbG9jXCIsIHBkaXJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicGRpcmFfZGVzY1wiLCBwZGlyYV9kZXNjKTsgKFwicGRpcmFfbG9jXCIsIHBkaXJhX2xvYykgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9zdHJpbmdcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2Jvb2xcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAnY3R4IC0+IGJvb2wgLT4gYm9vbCAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXIgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50ICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbGlzdCAtPiAnYSBsaXN0ICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogJ2N0eCAtPiBzdHJpbmcgLT4gc3RyaW5nICogJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9zX2ZuYW1lID0gU3RkbGliLmZzdCBwb3NfZm5hbWU7XG4gICAgICAgICAgICBwb3NfbG51bSA9IFN0ZGxpYi5mc3QgcG9zX2xudW07XG4gICAgICAgICAgICBwb3NfYm9sID0gU3RkbGliLmZzdCBwb3NfYm9sO1xuICAgICAgICAgICAgcG9zX2NudW0gPSBTdGRsaWIuZnN0IHBvc19jbnVtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBTdGRsaWIuc25kIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAgIChcInBvc19sbnVtXCIsIFN0ZGxpYi5zbmQgcG9zX2xudW0pO1xuICAgICAgICAgICAgICAoXCJwb3NfYm9sXCIsIFN0ZGxpYi5zbmQgcG9zX2JvbCk7XG4gICAgICAgICAgICAgIChcInBvc19jbnVtXCIsIFN0ZGxpYi5zbmQgcG9zX2NudW0pO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBsb2Nfc3RhcnQgPSBTdGRsaWIuZnN0IGxvY19zdGFydDtcbiAgICAgICAgICAgIGxvY19lbmQgPSBTdGRsaWIuZnN0IGxvY19lbmQ7XG4gICAgICAgICAgICBsb2NfZ2hvc3QgPSBTdGRsaWIuZnN0IGxvY19naG9zdDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgU3RkbGliLnNuZCBsb2Nfc3RhcnQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZW5kXCIsIFN0ZGxpYi5zbmQgbG9jX2VuZCk7XG4gICAgICAgICAgICAgIChcImxvY19naG9zdFwiLCBTdGRsaWIuc25kIGxvY19naG9zdCk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsb2MgLT4gJ2EgbG9jICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgICggeyB0eHQgPSBTdGRsaWIuZnN0IHR4dDsgbG9jID0gU3RkbGliLmZzdCBsb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHggWyAoXCJ0eHRcIiwgU3RkbGliLnNuZCB0eHQpOyAoXCJsb2NcIiwgU3RkbGliLnNuZCBsb2MpIF1cbiAgICAgICAgKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoTGlkZW50IChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJMaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIExkb3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGRvdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgKCBMYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgKiAncmVzID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiAnY3R4IC0+IHJlY19mbGFnIC0+IHJlY19mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiAnY3R4IC0+IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogJ2N0eCAtPiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6ICdjdHggLT4gb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsICogJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoTm9sYWJlbCwgc2VsZiNjb25zdHIgY3R4IFwiTm9sYWJlbFwiIFtdKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggTGFiZWxsZWQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhYmVsbGVkXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBPcHRpb25hbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT3B0aW9uYWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6ICdjdHggLT4gdmFyaWFuY2UgLT4gdmFyaWFuY2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9pbnRlZ2VyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9pbnRlZ2VyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBjdHggYSBpblxuICAgICAgICAgICAgKCBQY29uc3RfY2hhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2NoYXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjb25zdF9zdHJpbmcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3Rfc3RyaW5nXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2Zsb2F0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9mbG9hdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgYXR0cl9uYW1lID0gU3RkbGliLmZzdCBhdHRyX25hbWU7XG4gICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBTdGRsaWIuZnN0IGF0dHJfcGF5bG9hZDtcbiAgICAgICAgICAgIGF0dHJfbG9jID0gU3RkbGliLmZzdCBhdHRyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgU3RkbGliLnNuZCBhdHRyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgU3RkbGliLnNuZCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgICAoXCJhdHRyX2xvY1wiLCBTdGRsaWIuc25kIGF0dHJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiAnY3R4IC0+IHBheWxvYWQgLT4gcGF5bG9hZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKFBTdHIgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBTdHJcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKFBTaWcgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBTaWdcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKFBUeXAgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBUeXBcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUFBhdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQUGF0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiAnY3R4IC0+IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBTdGRsaWIuZnN0IHB0eXBfZGVzYztcbiAgICAgICAgICAgIHB0eXBfbG9jID0gU3RkbGliLmZzdCBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwdHlwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBTdGRsaWIuc25kIHB0eXBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogJ2N0eCAtPiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hbnlcIiBbXSlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFB0eXBfYXJyb3cgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2Fycm93XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX29iamVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NsYXNzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFB0eXBfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyaWFudFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9wb2x5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcG9seVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9wYWNrYWdlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BhY2thZ2VcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6ICdjdHggLT4gcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcmZfZGVzYyA9IFN0ZGxpYi5mc3QgcHJmX2Rlc2M7XG4gICAgICAgICAgICBwcmZfbG9jID0gU3RkbGliLmZzdCBwcmZfbG9jO1xuICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInByZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfbG9jXCIsIFN0ZGxpYi5zbmQgcHJmX2xvYyk7XG4gICAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFJ0YWcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSdGFnXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBSaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUmluaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIGN0eCBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvZl9kZXNjID0gU3RkbGliLmZzdCBwb2ZfZGVzYztcbiAgICAgICAgICAgIHBvZl9sb2MgPSBTdGRsaWIuZnN0IHBvZl9sb2M7XG4gICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgU3RkbGliLnNuZCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBvZl9sb2NcIiwgU3RkbGliLnNuZCBwb2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIE90YWcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT3RhZ1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBPaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT2luaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogJ2N0eCAtPiBwYXR0ZXJuIC0+IHBhdHRlcm4gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gU3RkbGliLmZzdCBwcGF0X2Rlc2M7XG4gICAgICAgICAgICBwcGF0X2xvYyA9IFN0ZGxpYi5mc3QgcHBhdF9sb2M7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgU3RkbGliLnNuZCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwcGF0X2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiAnY3R4IC0+IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoUHBhdF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYW55XCIgW10pXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0YW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0YW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfaW50ZXJ2YWwgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9pbnRlcnZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9vclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eCBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gU3RkbGliLmZzdCBwZXhwX2Rlc2M7XG4gICAgICAgICAgICBwZXhwX2xvYyA9IFN0ZGxpYi5mc3QgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgU3RkbGliLnNuZCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBTdGRsaWIuc25kIHBleHBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwZXhwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0YW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0YW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuY3Rpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZnVuY3Rpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGQgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZnVuXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdIClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGV4cF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX21hdGNoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbWF0Y2hcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3RyeSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3RyeVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9maWVsZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRmaWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0ZmllbGRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2lmdGhlbmVsc2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lmdGhlbmVsc2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VxdWVuY2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXF1ZW5jZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3doaWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfd2hpbGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgKCBQZXhwX2ZvclxuICAgICAgICAgICAgICAgICggU3RkbGliLmZzdCBhLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBiLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBjLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBkLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBlICksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZm9yXCJcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGE7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGI7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGM7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGQ7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGU7XG4gICAgICAgICAgICAgICAgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9jb2VyY2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvZXJjZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZW5kIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VuZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGluc3R2YXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGV4cF9vdmVycmlkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vdmVycmlkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0bW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0ZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0ZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hc3NlcnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXNzZXJ0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9wb2x5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcG9seVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX29iamVjdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX25ld3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXd0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfcGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0b3AgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0b3BcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgICAgICAgIChQZXhwX3VucmVhY2hhYmxlLCBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3VucmVhY2hhYmxlXCIgW10pXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNfbGhzID0gU3RkbGliLmZzdCBwY19saHM7XG4gICAgICAgICAgICBwY19ndWFyZCA9IFN0ZGxpYi5mc3QgcGNfZ3VhcmQ7XG4gICAgICAgICAgICBwY19yaHMgPSBTdGRsaWIuZnN0IHBjX3JocztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY19saHNcIiwgU3RkbGliLnNuZCBwY19saHMpO1xuICAgICAgICAgICAgICAoXCJwY19ndWFyZFwiLCBTdGRsaWIuc25kIHBjX2d1YXJkKTtcbiAgICAgICAgICAgICAgKFwicGNfcmhzXCIsIFN0ZGxpYi5zbmQgcGNfcmhzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBsZXRfID0gU3RkbGliLmZzdCBsZXRfO1xuICAgICAgICAgICAgYW5kcyA9IFN0ZGxpYi5mc3QgYW5kcztcbiAgICAgICAgICAgIGJvZHkgPSBTdGRsaWIuZnN0IGJvZHk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibGV0X1wiLCBTdGRsaWIuc25kIGxldF8pO1xuICAgICAgICAgICAgICAoXCJhbmRzXCIsIFN0ZGxpYi5zbmQgYW5kcyk7XG4gICAgICAgICAgICAgIChcImJvZHlcIiwgU3RkbGliLnNuZCBib2R5KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBib3Bfb3AgPSBTdGRsaWIuZnN0IHBib3Bfb3A7XG4gICAgICAgICAgICBwYm9wX3BhdCA9IFN0ZGxpYi5mc3QgcGJvcF9wYXQ7XG4gICAgICAgICAgICBwYm9wX2V4cCA9IFN0ZGxpYi5mc3QgcGJvcF9leHA7XG4gICAgICAgICAgICBwYm9wX2xvYyA9IFN0ZGxpYi5mc3QgcGJvcF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBTdGRsaWIuc25kIHBib3Bfb3ApO1xuICAgICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBTdGRsaWIuc25kIHBib3BfcGF0KTtcbiAgICAgICAgICAgICAgKFwicGJvcF9leHBcIiwgU3RkbGliLnNuZCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAgIChcInBib3BfbG9jXCIsIFN0ZGxpYi5zbmQgcGJvcF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmFsX25hbWUgPSBTdGRsaWIuZnN0IHB2YWxfbmFtZTtcbiAgICAgICAgICAgIHB2YWxfdHlwZSA9IFN0ZGxpYi5mc3QgcHZhbF90eXBlO1xuICAgICAgICAgICAgcHZhbF9wcmltID0gU3RkbGliLmZzdCBwdmFsX3ByaW07XG4gICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB2YWxfbG9jID0gU3RkbGliLmZzdCBwdmFsX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgU3RkbGliLnNuZCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdmFsX3R5cGVcIiwgU3RkbGliLnNuZCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgU3RkbGliLnNuZCBwdmFsX3ByaW0pO1xuICAgICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmFsX2xvY1wiLCBTdGRsaWIuc25kIHB2YWxfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gY3R4IGMgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lID0gU3RkbGliLmZzdCBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycyA9IFN0ZGxpYi5mc3QgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kID0gU3RkbGliLmZzdCBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2MgPSBTdGRsaWIuZnN0IHB0eXBlX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIFN0ZGxpYi5zbmQgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX3BhcmFtc1wiLCBTdGRsaWIuc25kIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfY3N0cnMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIFN0ZGxpYi5zbmQgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAgIChcInB0eXBlX3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwdHlwZV9tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5cGVfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfYWJzdHJhY3RcIiBbXSlcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfdmFyaWFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3Blbiwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfb3BlblwiIFtdKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbGRfbmFtZSA9IFN0ZGxpYi5mc3QgcGxkX25hbWU7XG4gICAgICAgICAgICBwbGRfbXV0YWJsZSA9IFN0ZGxpYi5mc3QgcGxkX211dGFibGU7XG4gICAgICAgICAgICBwbGRfdHlwZSA9IFN0ZGxpYi5mc3QgcGxkX3R5cGU7XG4gICAgICAgICAgICBwbGRfbG9jID0gU3RkbGliLmZzdCBwbGRfbG9jO1xuICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGxkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBTdGRsaWIuc25kIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgICAgKFwicGxkX3R5cGVcIiwgU3RkbGliLnNuZCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBsZF9sb2NcIiwgU3RkbGliLnNuZCBwbGRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2RfbmFtZSA9IFN0ZGxpYi5mc3QgcGNkX25hbWU7XG4gICAgICAgICAgICBwY2RfdmFycyA9IFN0ZGxpYi5mc3QgcGNkX3ZhcnM7XG4gICAgICAgICAgICBwY2RfYXJncyA9IFN0ZGxpYi5mc3QgcGNkX2FyZ3M7XG4gICAgICAgICAgICBwY2RfcmVzID0gU3RkbGliLmZzdCBwY2RfcmVzO1xuICAgICAgICAgICAgcGNkX2xvYyA9IFN0ZGxpYi5mc3QgcGNkX2xvYztcbiAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBTdGRsaWIuc25kIHBjZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgU3RkbGliLnNuZCBwY2RfdmFycyk7XG4gICAgICAgICAgICAgIChcInBjZF9hcmdzXCIsIFN0ZGxpYi5zbmQgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgICAoXCJwY2RfcmVzXCIsIFN0ZGxpYi5zbmQgcGNkX3Jlcyk7XG4gICAgICAgICAgICAgIChcInBjZF9sb2NcIiwgU3RkbGliLnNuZCBwY2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3N0cl90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3N0cl9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gU3RkbGliLmZzdCBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gU3RkbGliLmZzdCBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBTdGRsaWIuc25kIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhcmFtc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2NvbnN0cnVjdG9ycyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBjdHggcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHRfbmFtZSA9IFN0ZGxpYi5mc3QgcGV4dF9uYW1lO1xuICAgICAgICAgICAgcGV4dF9raW5kID0gU3RkbGliLmZzdCBwZXh0X2tpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IFN0ZGxpYi5mc3QgcGV4dF9sb2M7XG4gICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZXh0X25hbWVcIiwgU3RkbGliLnNuZCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgU3RkbGliLnNuZCBwZXh0X2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBTdGRsaWIuc25kIHBleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gU3RkbGliLmZzdCBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gU3RkbGliLmZzdCBwdHlleG5fbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4bl9jb25zdHJ1Y3RvclwiLCBTdGRsaWIuc25kIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgU3RkbGliLnNuZCBwdHlleG5fbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXh0X2RlY2wgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X2RlY2xcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXh0X3JlYmluZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9yZWJpbmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogJ2N0eCAtPiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSBTdGRsaWIuZnN0IHBjdHlfZGVzYztcbiAgICAgICAgICAgIHBjdHlfbG9jID0gU3RkbGliLmZzdCBwY3R5X2xvYztcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdHlfZGVzY1wiLCBTdGRsaWIuc25kIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0eV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogJ2N0eCAtPiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGN0eV9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjdHlfYXJyb3cgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2Fycm93XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGN0eV9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogJ2N0eCAtPiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNzaWdfc2VsZiA9IFN0ZGxpYi5mc3QgcGNzaWdfc2VsZjtcbiAgICAgICAgICAgIHBjc2lnX2ZpZWxkcyA9IFN0ZGxpYi5mc3QgcGNzaWdfZmllbGRzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjc2lnX3NlbGZcIiwgU3RkbGliLnNuZCBwY3NpZ19zZWxmKTtcbiAgICAgICAgICAgICAgKFwicGNzaWdfZmllbGRzXCIsIFN0ZGxpYi5zbmQgcGNzaWdfZmllbGRzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0Zl9kZXNjO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBTdGRsaWIuZnN0IHBjdGZfbG9jO1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0Zl9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgU3RkbGliLnNuZCBwY3RmX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2luaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl92YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfdmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfbWV0aG9kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfY29uc3RyYWludCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4XG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2lfdmlydCA9IFN0ZGxpYi5mc3QgcGNpX3ZpcnQ7XG4gICAgICAgICAgICBwY2lfcGFyYW1zID0gU3RkbGliLmZzdCBwY2lfcGFyYW1zO1xuICAgICAgICAgICAgcGNpX25hbWUgPSBTdGRsaWIuZnN0IHBjaV9uYW1lO1xuICAgICAgICAgICAgcGNpX2V4cHIgPSBTdGRsaWIuZnN0IHBjaV9leHByO1xuICAgICAgICAgICAgcGNpX2xvYyA9IFN0ZGxpYi5mc3QgcGNpX2xvYztcbiAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2lfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBTdGRsaWIuc25kIHBjaV92aXJ0KTtcbiAgICAgICAgICAgICAgKFwicGNpX3BhcmFtc1wiLCBTdGRsaWIuc25kIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBTdGRsaWIuc25kIHBjaV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgU3RkbGliLnNuZCBwY2lfZXhwcik7XG4gICAgICAgICAgICAgIChcInBjaV9sb2NcIiwgU3RkbGliLnNuZCBwY2lfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2lfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIGN0eCBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjbF9kZXNjID0gU3RkbGliLmZzdCBwY2xfZGVzYztcbiAgICAgICAgICAgIHBjbF9sb2MgPSBTdGRsaWIuZnN0IHBjbF9sb2M7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjbF9sb2NcIiwgU3RkbGliLnNuZCBwY2xfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9zdHJ1Y3R1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgKCBQY2xfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfZnVuXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdIClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2xfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjbF9sZXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6ICdjdHggLT4gY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNzdHJfc2VsZiA9IFN0ZGxpYi5mc3QgcGNzdHJfc2VsZjtcbiAgICAgICAgICAgIHBjc3RyX2ZpZWxkcyA9IFN0ZGxpYi5mc3QgcGNzdHJfZmllbGRzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjc3RyX3NlbGZcIiwgU3RkbGliLnNuZCBwY3N0cl9zZWxmKTtcbiAgICAgICAgICAgICAgKFwicGNzdHJfZmllbGRzXCIsIFN0ZGxpYi5zbmQgcGNzdHJfZmllbGRzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcGNmX2Rlc2M7XG4gICAgICAgICAgICBwY2ZfbG9jID0gU3RkbGliLmZzdCBwY2ZfbG9jO1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcGNmX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2ZfaW5oZXJpdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbmhlcml0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfdmFsXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2ZfbWV0aG9kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2ZfY29uc3RyYWludCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2luaXRpYWxpemVyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBDZmtfdmlydHVhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX3ZpcnR1YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggQ2ZrX2NvbmNyZXRlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma19jb25jcmV0ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgY3R4IHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSBTdGRsaWIuZnN0IHBtdHlfZGVzYztcbiAgICAgICAgICAgIHBtdHlfbG9jID0gU3RkbGliLmZzdCBwbXR5X2xvYztcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBTdGRsaWIuc25kIHBtdHlfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIFN0ZGxpYi5zbmQgcG10eV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X2Z1bmN0b3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9mdW5jdG9yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfd2l0aCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3dpdGhcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X3R5cGVvZiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV90eXBlb2ZcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9hbGlhcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9hbGlhc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIHNlbGYjY29uc3RyIGN0eCBcIlVuaXRcIiBbXSlcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIE5hbWVkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk5hbWVkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgY3R4IHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc2lnX2xvYyBpblxuICAgICAgICAoIHsgcHNpZ19kZXNjID0gU3RkbGliLmZzdCBwc2lnX2Rlc2M7IHBzaWdfbG9jID0gU3RkbGliLmZzdCBwc2lnX2xvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwc2lnX2Rlc2NcIiwgU3RkbGliLnNuZCBwc2lnX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwc2lnX2xvY1wiLCBTdGRsaWIuc25kIHBzaWdfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdmFsdWUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXh0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGV4dFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2RzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R0eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfb3BlbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19vcGVuXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfaW5jbHVkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19pbmNsdWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfY2xhc3MgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfY2xhc3NfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc190eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtZF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWRfbmFtZSA9IFN0ZGxpYi5mc3QgcG1kX25hbWU7XG4gICAgICAgICAgICBwbWRfdHlwZSA9IFN0ZGxpYi5mc3QgcG1kX3R5cGU7XG4gICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWRfbG9jID0gU3RkbGliLmZzdCBwbWRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1kX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWRfdHlwZVwiLCBTdGRsaWIuc25kIHBtZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtZF9sb2NcIiwgU3RkbGliLnNuZCBwbWRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1zX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtc19uYW1lID0gU3RkbGliLmZzdCBwbXNfbmFtZTtcbiAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcG1zX21hbmlmZXN0O1xuICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1zX2xvYyA9IFN0ZGxpYi5mc3QgcG1zX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBTdGRsaWIuc25kIHBtc19uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1zX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXNfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtc19sb2NcIiwgU3RkbGliLnNuZCBwbXNfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10ZF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBTdGRsaWIuZnN0IHBtdGRfbmFtZTtcbiAgICAgICAgICAgIHBtdGRfdHlwZSA9IFN0ZGxpYi5mc3QgcG10ZF90eXBlO1xuICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXRkX2xvYyA9IFN0ZGxpYi5mc3QgcG10ZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10ZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG10ZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG10ZF9sb2NcIiwgU3RkbGliLnNuZCBwbXRkX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIGN0eCBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBTdGRsaWIuZnN0IHBvcGVuX2V4cHI7XG4gICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IFN0ZGxpYi5mc3QgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBTdGRsaWIuZnN0IHBvcGVuX2xvYztcbiAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBTdGRsaWIuc25kIHBvcGVuX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBTdGRsaWIuc25kIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fbG9jXCIsIFN0ZGxpYi5zbmQgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvcGVuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGluY2xfbW9kID0gU3RkbGliLmZzdCBwaW5jbF9tb2Q7XG4gICAgICAgICAgICBwaW5jbF9sb2MgPSBTdGRsaWIuZnN0IHBpbmNsX2xvYztcbiAgICAgICAgICAgIHBpbmNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIFN0ZGxpYi5zbmQgcGluY2xfbW9kKTtcbiAgICAgICAgICAgICAgKFwicGluY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGluY2xfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBpbmNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiAnY3R4IC0+IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdHlwZXN1YnN0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgY3R4IHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBTdGRsaWIuZnN0IHBtb2RfZGVzYztcbiAgICAgICAgICAgIHBtb2RfbG9jID0gU3RkbGliLmZzdCBwbW9kX2xvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtb2RfZGVzY1wiLCBTdGRsaWIuc25kIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIFN0ZGxpYi5zbmQgcG1vZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzY1xuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2Z1bmN0b3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9mdW5jdG9yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICAoIHsgcHN0cl9kZXNjID0gU3RkbGliLmZzdCBwc3RyX2Rlc2M7IHBzdHJfbG9jID0gU3RkbGliLmZzdCBwc3RyX2xvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwc3RyX2Rlc2NcIiwgU3RkbGliLnNuZCBwc3RyX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwc3RyX2xvY1wiLCBTdGRsaWIuc25kIHBzdHJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V2YWwgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9ldmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl92YWx1ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9wcmltaXRpdmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcHJpbWl0aXZlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZXh0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGV4dFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfb3BlbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9vcGVuXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfY2xhc3MgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfY2xhc3NfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc190eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfaW5jbHVkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9pbmNsdWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZiX3BhdCA9IFN0ZGxpYi5mc3QgcHZiX3BhdDtcbiAgICAgICAgICAgIHB2Yl9leHByID0gU3RkbGliLmZzdCBwdmJfZXhwcjtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBTdGRsaWIuZnN0IHB2Yl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBTdGRsaWIuc25kIHB2Yl9wYXQpO1xuICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBTdGRsaWIuc25kIHB2Yl9leHByKTtcbiAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdmJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgU3RkbGliLnNuZCBwdmJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1iX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtYl9uYW1lID0gU3RkbGliLmZzdCBwbWJfbmFtZTtcbiAgICAgICAgICAgIHBtYl9leHByID0gU3RkbGliLmZzdCBwbWJfZXhwcjtcbiAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtYl9sb2MgPSBTdGRsaWIuZnN0IHBtYl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgU3RkbGliLnNuZCBwbWJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtYl9leHByXCIsIFN0ZGxpYi5zbmQgcG1iX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwbWJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBTdGRsaWIuc25kIHBtYl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RlZiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kZWZcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGlyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RpclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgY3R4IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcl9uYW1lID0gU3RkbGliLmZzdCBwZGlyX25hbWU7XG4gICAgICAgICAgICBwZGlyX2FyZyA9IFN0ZGxpYi5mc3QgcGRpcl9hcmc7XG4gICAgICAgICAgICBwZGlyX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIFN0ZGxpYi5zbmQgcGRpcl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgU3RkbGliLnNuZCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAgIChcInBkaXJfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIGN0eCBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyYV9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyYV9kZXNjID0gU3RkbGliLmZzdCBwZGlyYV9kZXNjO1xuICAgICAgICAgICAgcGRpcmFfbG9jID0gU3RkbGliLmZzdCBwZGlyYV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGRpcmFfZGVzY1wiLCBTdGRsaWIuc25kIHBkaXJhX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwZGlyYV9sb2NcIiwgU3RkbGliLnNuZCBwZGlyYV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX3N0cmluZyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9zdHJpbmdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBkaXJfaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2Jvb2wgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfYm9vbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNhc2VzIDogJ2N0eCAtPiBjYXNlcyAtPiBjYXNlcyAqICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5bQEBAZW5kXVxuW0BAQGVuZF1cbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50XG5cbmxldCB0b19leHRlbnNpb24gKGVycm9yIDogQXN0bGliLkxvY2F0aW9uLkVycm9yLnQpID1cbiAgbGV0IG9wZW4gQXN0bGliLkxvY2F0aW9uLkVycm9yIGluXG4gIGxldCBvcGVuIEFzdF9oZWxwZXIgaW5cbiAgaWYgbm90IChpc193ZWxsX2Zvcm1lZCBlcnJvcikgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwidG9fZXh0ZW5zaW9uOiBleHBlY3RlZCBraW5kIFJlcG9ydF9lcnJvclwiKTtcbiAgbGV0IHN1Yl9tc2dzID0gc3ViX21zZ3MgZXJyb3IgaW5cbiAgbGV0IG1haW5fbXNnID0gbWFpbl9tc2cgZXJyb3IgaW5cbiAgbGV0IGVycl9leHRlbnNpb25fbmFtZSBsb2MgPSB7IExvY2F0aW9uLmxvYzsgdHh0ID0gXCJvY2FtbC5lcnJvclwiIH0gaW5cbiAgbGV0IG1rX3N0cmluZ19jb25zdGFudCB4ID0gU3RyLmV2YWwgKEV4cC5jb25zdGFudCAoQ29uc3Quc3RyaW5nIHgpKSBpblxuICBsZXQgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgKHN1Yl9tc2cgOiBzdHJpbmcgTG9jYXRpb24ubG9jKSA9XG4gICAgU3RyLmV4dGVuc2lvblxuICAgICAgKGVycl9leHRlbnNpb25fbmFtZSBzdWJfbXNnLmxvYywgUFN0ciBbIG1rX3N0cmluZ19jb25zdGFudCBzdWJfbXNnLnR4dCBdKVxuICBpblxuICAoIGVycl9leHRlbnNpb25fbmFtZSBtYWluX21zZy5sb2MsXG4gICAgUGFyc2V0cmVlLlBTdHJcbiAgICAgIChta19zdHJpbmdfY29uc3RhbnQgbWFpbl9tc2cudHh0IDo6IExpc3QubWFwIGV4dGVuc2lvbl9vZl9zdWJfbXNnIHN1Yl9tc2dzKVxuICApXG5cbmxldCByZWdpc3Rlcl9lcnJvcl9vZl9leG4gPSBBc3RsaWIuTG9jYXRpb24ucmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuXG5cbmxldCBtZXNzYWdlIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLnR4dDsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIHR4dFxuXG5sZXQgc2V0X21lc3NhZ2UgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbXNnXG5cbmxldCBtYWtlIH5sb2MgdHh0IH5zdWIgPVxuICBsZXQgc3ViID0gTGlzdC5tYXAgKGZ1biAobG9jLCB0eHQpIC0+IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgdHh0IH0pIHN1YiBpblxuICBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFrZSB+c3ViIHsgbG9jOyB0eHQgfVxuXG5sZXQgdXBkYXRlX2xvYyA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9sb2NcblxubGV0IGdldF9sb2NhdGlvbiBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICBsb2NcblxubGV0IG9mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5vZl9leG5cbmxldCByYWlzZSBlcnJvciA9IHJhaXNlIChBc3RsaWIuTG9jYXRpb24uRXJyb3IgZXJyb3IpXG4iLCJtb2R1bGUgRG9fbm90X3VzZV9kaXJlY3RseSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBBZmxfaW5zdHJ1bWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BZmxfaW5zdHJ1bWVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxpYXNfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxpYXNfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEFsbG9jYXRlZF9jb25zdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGxvY2F0ZWRfY29uc3QgaW5zdGVhZFwiXVxubW9kdWxlIEFubm90ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBcmNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFyY2ggaW5zdGVhZFwiXVxubW9kdWxlIEFyZ19oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BcmdfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc21nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBBc21saWJyYXJpYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBBc21saW5rID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEFzbXBhY2thZ2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0dHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEF0dHJfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXR0cl9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIEJhY2tlbmRfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQmFja2VuZF92YXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQmFja2VuZF92YXIgaW5zdGVhZFwiXVxubW9kdWxlIEJpbnV0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQmludXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJyYW5jaF9yZWxheGF0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJyYW5jaF9yZWxheGF0aW9uX2ludGYgaW5zdGVhZFwiXVxubW9kdWxlIEJ0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX2V4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJ1aWxkX2V4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9wYXRoX3ByZWZpeF9tYXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsZF9wYXRoX3ByZWZpeF9tYXAgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWx0aW5fYXR0cmlidXRlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWx0aW5fYXR0cmlidXRlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaW5rIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVwYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXNlY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnl0ZXNlY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBDU0UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFIGluc3RlYWRcIl1cbm1vZHVsZSBDU0VnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDYW1saW50ZXJuYWxNZW5oaXJMaWIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DYW1saW50ZXJuYWxNZW5oaXJMaWIgaW5zdGVhZFwiXVxubW9kdWxlIENjb21wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2NvbXAgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xmbGFncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNsZmxhZ3MgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb25fYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2VsZW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9lbGVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfaWQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb2Zmc2V0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29mZnNldHMgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBDbWlfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ21pX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2hlbHBlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2hlbHBlcnMgaW5zdGVhZFwiXVxubW9kdWxlIENtbV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW5fc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuX3N0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBDbW9fZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXQyYW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXQyYW5ub3QgaW5zdGVhZFwiXVxubW9kdWxlIENtdF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXRfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbXhfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXhzX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29sb3JpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29sb3JpbmcgaW5zdGVhZFwiXVxubW9kdWxlIENvbWJhbGxvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21iYWxsb2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxhdGlvbl91bml0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGF0aW9uX3VuaXQgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGlsZV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBtaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcG1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbmZpZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnX2Jvb3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbmZpZ19tYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25zaXN0YmwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25zaXN0YmwgaW5zdGVhZFwiXVxubW9kdWxlIENvbnZlcnRfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db252ZXJ0X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEN0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ3R5cGUgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFmbG93ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRhdGFmbG93IGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhcmVwciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRhdGFyZXByIGluc3RlYWRcIl1cbm1vZHVsZSBEZWFkY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EZWFkY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVidWdpbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVidWdpbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBEZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nX3dpdGhfa2V5cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmdfd2l0aF9rZXlzIGluc3RlYWRcIl1cbm1vZHVsZSBEbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EbGwgaW5zdGVhZFwiXVxubW9kdWxlIERvY3N0cmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb2NzdHJpbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBEb21haW5zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvbWFpbnN0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBFZmZlY3RfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRWZmZWN0X2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXQgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdGF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVtaXRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnYgaW5zdGVhZFwiXVxubW9kdWxlIEVudmF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudmF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ydHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FcnJvcnRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2lkIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm9fZm9yX3BhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm9fZm9yX3BhY2sgaW5zdGVhZFwiXVxubW9kdWxlIEV4cHVuZ2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEV4dHJhY3RfcHJvamVjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXh0cmFjdF9wcm9qZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2l0ZXJhdG9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2l0ZXJhdG9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV90b19jbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdG9fY2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV91dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3V0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBGcmVzaGVuaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZyZXNoZW5pbmcgaW5zdGVhZFwiXVxubW9kdWxlIEdlbnByaW50dmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5HZW5wcmludHZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSWRfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50aWZpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50aWZpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW1wb3J0X2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbXBvcnRfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kX2Vycm9ycHJpbnRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2RfZXJyb3JwcmludGVyIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNvbnN0YW50X2lkZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmNvbnN0YW50X2lkZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Jbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnkgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnlfYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnlfYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19jb3N0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2Nvc3QgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2RlY2lzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHNfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3RyYW5zZm9ybXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfdHJhbnNmb3JtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5zdHJ1Y3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkluc3RydWN0IGluc3RlYWRcIl1cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVyZiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgaW5zdGVhZFwiXVxubW9kdWxlIEludGVydmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVydmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJbnZhcmlhbnRfcGFyYW1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludmFyaWFudF9wYXJhbXMgaW5zdGVhZFwiXVxubW9kdWxlIExhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGF6eV9iYWNrdHJhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYXp5X2JhY2t0cmFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgTGV4ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MZXhlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcl9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcml6ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJpemUgaW5zdGVhZFwiXVxubW9kdWxlIExpbmthZ2VfbmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5rYWdlX25hbWUgaW5zdGVhZFwiXVxubW9kdWxlIExpbnNjYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluc2NhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTGl2ZW5lc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGl2ZW5lc3MgaW5zdGVhZFwiXVxubW9kdWxlIExvYWRfcGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvYWRfcGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYWxfc3RvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhbF9zdG9yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9uZ2lkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBNYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIE1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE1haW5fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1haW5fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuTWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFrZWRlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ha2VkZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIE1hdGNoaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWF0Y2hpbmcgaW5zdGVhZFwiXVxubW9kdWxlIE1ldGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NZXRhIGluc3RlYWRcIl1cbm1vZHVsZSBNaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgTXR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTXV0YWJsZV92YXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NdXRhYmxlX3ZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBOdW1iZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTnVtYmVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3Bjb2RlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wY29kZXMgaW5zdGVhZFwiXVxubW9kdWxlIE9wcmludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wcmludCBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0Y29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRjb21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRlcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0ZXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBPcHRtYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdG1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE91dGNvbWV0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXJhbWV0ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFyYW1ldGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFzc193cmFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhc3Nfd3JhcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdGggaW5zdGVhZFwiXVxubW9kdWxlIFBhdHRlcm5zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0dGVybnMgaW5zdGVhZFwiXVxubW9kdWxlIFBlcnNpc3RlbnRfZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGVyc2lzdGVudF9lbnYgaW5zdGVhZFwiXVxubW9kdWxlIFBvbGxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUG9sbGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQcHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbWl0aXZlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbWl0aXZlIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbW0gaW5zdGVhZFwiXVxubW9kdWxlIFByaW50aW5zdHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLlByaW50aW5zdHIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludG1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRtYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHBhdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50cGF0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXBlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9jIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9maWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJvZmlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvamVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9qZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBSZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGUgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXJlX2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaGFyZV9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpZ25hdHVyZV9ncm91cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpZ25hdHVyZV9ncm91cCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxlX3ZhbHVlX2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGVfdmFsdWVfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2ltcGxpZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BpbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BpbGwgaW5zdGVhZFwiXVxubW9kdWxlIFNwbGl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwbGl0IGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUbWMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UbWMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGNvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BkaXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BkaXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BldmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BldmFsIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bob29rcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVG9wbG9vcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbG9vcCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbWFpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wc3RhcnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFRyYWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5UcmFjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsYXR0cmlidXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsYXR0cmlidXRlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xvYmogPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xvYmogaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbHByaW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xwcmltIGluc3RlYWRcIl1cbm1vZHVsZSBUcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3Byb3BlcnRpZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9wcm9wZXJ0aWVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9zZXBhcmFiaWxpdHkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9zZXBhcmFiaWxpdHkgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3VuYm94ZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF91bmJveGVkIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF92YXJpYW5jZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3ZhcmlhbmNlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZHRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZHRyZWUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlb3B0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW9wdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXRleHAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBldGV4cCBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5fYW5mID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuX2FuZiBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgIH5uYW1lICB+cGF5bG9hZCAgPVxuICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG4gICAgbGV0IGJpbmRpbmdfb3AgfmxvYyAgfm9wICB+cGF0ICB+ZXhwICA9XG4gICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG4gICAgbGV0IGNhc2UgfmxocyAgfmd1YXJkICB+cmhzICA9XG4gICAgICB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cbiAgICBsZXQgcGNsX2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBjbF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2xfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjbF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNmX2luaGVyaXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjZl92YWwgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgIH52aXJ0ICB+cGFyYW1zICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHtcbiAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgcGN0eV9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdGZfaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnZhcnMgIH5hcmdzICB+cmVzICA9XG4gICAgICB7XG4gICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfb2JqZWN0IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY2xhc3MgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXJpYW50IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BhY2thZ2UgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIH5sb2MgIHgwID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBkaXJfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIH5sb2MgIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB+bG9jICB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5sb2MgIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5sb2MgIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3MgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzaWdfZXh0ZW5zaW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX2V2YWwgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ZhbHVlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfcHJpbWl0aXZlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ByaW1pdGl2ZSB4MCkgfVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIH5sb2MgIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIH5sb2MgIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfmxvYyAgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfIFxuICAgICAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfmxvYyAgfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bG9jICB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxubW9kdWxlIE1ha2UoTG9jOnNpZyB2YWwgbG9jIDogTG9jYXRpb24udCBlbmQpID1cbiAgc3RydWN0XG4gICAgbGV0IGxvYyA9IExvYy5sb2NcbiAgICBsZXQgYXR0cmlidXRlIH5uYW1lICB+cGF5bG9hZCAgPVxuICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICB+cGF0ICB+ZXhwICA9XG4gICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG4gICAgbGV0IGNhc2UgfmxocyAgfmd1YXJkICB+cmhzICA9XG4gICAgICB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cbiAgICBsZXQgcGNsX2NvbnN0ciB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4geDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBjbF9hcHBseSB4MCB4MSA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2xfbGV0IHgwIHgxIHgyID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjbF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpIH1cbiAgICBsZXQgcGNmX2luaGVyaXQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjZl92YWwgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH52aXJ0ICB+cGFyYW1zICB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHtcbiAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgIH5maWVsZHMgID1cbiAgICAgIHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgcGN0eV9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBjdGZfaW5oZXJpdCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSAgfnZhcnMgIH5hcmdzICB+cmVzICA9XG4gICAgICB7XG4gICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hbnkgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXJpYW50IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9wb2x5IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BhY2thZ2UgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuY3Rpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXBwbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX21hdGNoIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90cnkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3RyeSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RydWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdmFyaWFudCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9yZWNvcmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9maWVsZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0ZmllbGQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3doaWxlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mb3IgeDAgeDEgeDIgeDMgeDQgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvZXJjZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZW5kIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRleGNlcHRpb24geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hc3NlcnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfb2JqZWN0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3dHlwZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3dHlwZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0b3AgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZSAgfmtpbmQgID1cbiAgICAgIHtcbiAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgbW9kXyA9XG4gICAgICB7IHBpbmNsX21vZCA9IG1vZF87IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWUgIH5tdXRhYmxlXyAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBsZXRvcCB+bGV0XyAgfmFuZHMgIH5ib2R5ICA9IHsgbGV0XzsgYW5kczsgYm9keSB9XG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgfmVuZF8gIH5naG9zdCAgPVxuICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH1cbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgIH5leHByICA9XG4gICAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IFtdOyBwbWJfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXBlXzsgcG1kX2F0dHJpYnV0ZXMgPSBbXTsgcG1kX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfYXBwbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgfm1hbmlmZXN0ICA9XG4gICAgICB7XG4gICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3dpdGggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfdHlwZW9mIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApIH1cbiAgICBsZXQgcG10eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9hbGlhcyB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfYWxpYXMgeDApIH1cbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IG90YWcgeDAgeDEgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9XG4gICAgbGV0IG9pbmhlcml0IHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+ZXhwciAgfm92ZXJyaWRlICA9XG4gICAgICB7XG4gICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FueSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyaWFudCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9yZWNvcmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHlwZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4geDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgfmxudW0gIH5ib2wgIH5jbnVtICA9XG4gICAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IGxudW07IHBvc19ib2wgPSBib2w7IHBvc19jbnVtID0gY251bSB9XG4gICAgbGV0IHJ0YWcgeDAgeDEgeDIgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSkgfVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24geDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24geDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzdHJfZXhjZXB0aW9uIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc3RyX21vZHVsZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4geDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzdHJfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICB+YXJnICA9XG4gICAgICB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9XG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWUgIH5wYXJhbXMgIH5jc3RycyAgfmtpbmQgIH5wcml2YXRlXyAgfm1hbmlmZXN0IFxuICAgICAgPVxuICAgICAge1xuICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoICB+cGFyYW1zICB+Y29uc3RydWN0b3JzICB+cHJpdmF0ZV8gID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfnBhdCAgfmV4cHIgID1cbiAgICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IFtdOyBwdmJfbG9jID0gbG9jIH1cbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgIH50eXBlXyAgfnByaW0gID1cbiAgICAgIHtcbiAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgfVxuICBlbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBMb2NhdGlvbi50IH1cblxubGV0IHR4dCB0ID0gdC50eHRcbmxldCBsb2MgdCA9IHQubG9jXG5sZXQgbWFrZSB+bG9jIHR4dCA9IHsgbG9jOyB0eHQgfVxubGV0IG1hcCB0IH5mID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbG9uZ2lkZW50ID0gTGlkZW50IG9mIHN0cmluZyB8IExkb3Qgb2YgdCAqIHN0cmluZyB8IExhcHBseSBvZiB0ICogdFxuXG4gIGxldCBjb21wYXJlIDogdCAtPiB0IC0+IGludCA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnRfY2hhciA9IGZ1bmN0aW9uXG4gICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnXycgfCAnXFwnJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBcImFzclwiIHwgXCJsYW5kXCIgfCBcImxvclwiIHwgXCJsc2xcIiB8IFwibHNyXCIgfCBcImx4b3JcIiB8IFwibW9kXCIgfCBcIm9yXCIgLT4gZmFsc2VcbiAgICB8IHN0cmluZyAtPiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6aXNfbm9ybWFsX2lkZW50X2NoYXJcblxuICBsZXQgc2hvcnRfbmFtZSBzdHJpbmcgPVxuICAgIGlmIGlzX25vcm1hbF9pZGVudCBzdHJpbmcgdGhlbiBzdHJpbmcgZWxzZSBcIiggXCIgXiBzdHJpbmcgXiBcIiApXCJcblxuICBsZXQgcmVjIG5hbWUgPSBmdW5jdGlvblxuICAgIHwgTGlkZW50IHMgLT4gc2hvcnRfbmFtZSBzXG4gICAgfCBMZG90IChhLCBiKSAtPiBuYW1lIGEgXiBcIi5cIiBeIHNob3J0X25hbWUgYlxuICAgIHwgTGFwcGx5IChhLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcIiVzKCVzKVwiIChuYW1lIGEpIChuYW1lIGIpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChuYW1lIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCByZWMgZmxhdCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzIDo6IGFjY3VcbiAgfCBMZG90IChsaWQsIHMpIC0+IGZsYXQgKHMgOjogYWNjdSkgbGlkXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCBmbGF0dGVuX2V4biBsaWQgPSBmbGF0IFtdIGxpZFxuXG5sZXQgbGFzdF9leG4gPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHNcbiAgfCBMZG90IChfLCBzKSAtPiBzXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCB1bmZsYXR0ZW4gfmluaXQgbCA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6KGZ1biBhY2MgcyAtPiBMZG90IChhY2MsIHMpKVxuXG4oKiBmb3IgY2FzZXMgd2l0aG91dCBkb3R0ZWQgb3BlcmF0b3JzIChlLmcuIFtwYXJzZSBcIkEuQi5DXCJdKSAqKVxubGV0IHBhcnNlX3NpbXBsZSBzID1cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicuJyB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgcyA6OiBsIC0+IHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGxcblxuKCogaGFuZGxlIFtcIkEuQi4oKy4rKVwiXSBvciBbXCJWZWMuKC4lLigpPC0pXCJdICopXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpbnZhbGlkICgpID1cbiAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJQcHhsaWIuTG9uZ2lkZW50LnBhcnNlOiAlU1wiIHMpXG4gIGluXG4gIGlmIFN0cmluZy5sZW5ndGggcyA8IDEgdGhlbiBpbnZhbGlkICgpO1xuICBsZXQgb3Blbl9wYXIgPSBTdHJpbmcuaW5kZXhfb3B0IHMgJygnIGluXG4gIGxldCBjbG9zZV9wYXIgPSBTdHJpbmcuaW5kZXhfb3B0IHMgJyknIGluXG4gIG1hdGNoIChzLlswXSwgb3Blbl9wYXIsIGNsb3NlX3Bhcikgd2l0aFxuICB8ICgnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICdfJyksIE5vbmUsIE5vbmUgLT4gcGFyc2Vfc2ltcGxlIHNcbiAgfCBfLCBOb25lLCBOb25lIC0+IExpZGVudCBzICgqIFRoaXMgaXMgYSByYXcgb3BlcmF0b3IsIG5vIG1vZHVsZSBwYXRoICopXG4gIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gaW52YWxpZCAoKVxuICB8IF8sIFNvbWUgbCwgU29tZSByIC0+IChcbiAgICAgIGlmIEludC4ociA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxKSB0aGVuIGludmFsaWQgKCk7XG4gICAgICBsZXQgZ3JvdXAgPVxuICAgICAgICBpZiBJbnQuKHIgPSBsICsgMSkgdGhlbiBcIigpXCJcbiAgICAgICAgZWxzZSBTdHJpbmcudHJpbSAoU3RyaW5nLnN1YiBzIH5wb3M6KGwgKyAxKSB+bGVuOihyIC0gbCAtIDEpKVxuICAgICAgaW5cbiAgICAgIGlmIEludC4obCA9IDApIHRoZW4gTGlkZW50IGdyb3VwXG4gICAgICBlbHNlIGlmIENoYXIuKHMuW2wgLSAxXSA8PiAnLicpIHRoZW4gaW52YWxpZCAoKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihsIC0gMSkgaW5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgYmVmb3JlIH5zZXA6Jy4nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBzIDo6IGwgLT4gTGRvdCAodW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbCwgZ3JvdXApKVxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2UgKFQpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFQpXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIERlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBMb2MudFxuXG4gICAgbGV0IGxvYyAoeCA6IF8gdCkgPSB4LmxvY1xuICAgIGxldCBtayB+bG9jIHggPSB7IGxvYzsgdHh0ID0geCB9XG4gICAgbGV0IG1hcCBmIHQgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiAgICBsZXQgbWFwX2xpZGVudCB4ID0gbWFwIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHhcbiAgICBsZXQgbGlkZW50IH5sb2MgeCA9IG1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB4KVxuICBlbmRcblxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gLS0tLS0qKVxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHZicyAtPiBbIHBzdHJfdmFsdWUgfmxvYyByZWNfZmxhZyB2YnMgXVxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jOl8gfm5hbWU6XyB+cGFyYW1zOl8gfmNzdHJzOl8gfmtpbmQ6X1xuICAgICAgfnByaXZhdGVfOl8gfm1hbmlmZXN0Ol8gPVxuICAgIGZhaWx3aXRoXG4gICAgICBcIlBweGxpYi5Bc3RfYnVpbGRlci5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbjogZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb25cIlxuXG4gIGxldCBlaW50IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBlY2hhciB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBlc3RyaW5nIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IGVmbG9hdCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IGVpbnQzMiB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IGVpbnQ2NCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IGVuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgcGludCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgcGNoYXIgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgcHN0cmluZyB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBwZmxvYXQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBwaW50MzIgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBwaW50NjQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBwbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IGVib29sIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgcGJvb2wgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBldmFyIH5sb2MgdiA9IHBleHBfaWRlbnQgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQucGFyc2UgdikpXG4gIGxldCBwdmFyIH5sb2MgdiA9IHBwYXRfdmFyIH5sb2MgKExvY2F0ZWQubWsgfmxvYyB2KVxuICBsZXQgZXVuaXQgfmxvYyA9IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwdW5pdCB+bG9jID0gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHBleHBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHR5cF90dXBsZSB+bG9jIGxcblxuICBsZXQgcGV4cF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwZXhwX3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHBhdF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwcGF0X3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHR5cF9wb2x5IH5sb2MgdmFycyB0eSA9XG4gICAgbWF0Y2ggdmFycyB3aXRoIFtdIC0+IHR5IHwgXyAtPiBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG5cbiAgbGV0IHBleHBfYXBwbHkgfmxvYyBlIGVsID1cbiAgICBtYXRjaCAoZSwgZWwpIHdpdGhcbiAgICB8IF8sIFtdIC0+IGVcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sIF8gLT5cbiAgICAgICAgeyBlIHdpdGggcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyBAIGVsKSB9XG4gICAgfCBfIC0+IHBleHBfYXBwbHkgfmxvYyBlIGVsXG5cbiAgbGV0IGVhcHBseSB+bG9jIGUgZWwgPVxuICAgIHBleHBfYXBwbHkgfmxvYyBlIChMaXN0Lm1hcCBlbCB+ZjooZnVuIGUgLT4gKEFzdHR5cGVzLk5vbGFiZWwsIGUpKSlcblxuICBsZXQgZWFic3RyYWN0IH5sb2MgcHMgZSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IHBzIH5pbml0OmUgfmY6KGZ1biBwIGUgLT5cbiAgICAgICAgcGV4cF9mdW4gfmxvYyBBc3R0eXBlcy5Ob2xhYmVsIE5vbmUgcCBlKVxuXG4gIGxldCBlc2VxdWVuY2UgfmxvYyBlbCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgZWwgd2l0aFxuICAgIHwgW10gLT4gZXVuaXQgfmxvY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgdGwgfmluaXQ6aGQgfmY6KGZ1biBhY2MgZSAtPiBwZXhwX3NlcXVlbmNlIH5sb2MgZSBhY2MpXG5cbiAgbGV0IHBjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IGVjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IHJlYyBlbGlzdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwZXhwX3R1cGxlIH5sb2MgWyB4OyBlbGlzdCB+bG9jIGwgXSkpXG5cbiAgbGV0IHJlYyBwbGlzdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwcGF0X3R1cGxlIH5sb2MgWyB4OyBwbGlzdCB+bG9jIGwgXSkpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgfmxvYyAoaWRlbnQgOiBMb25naWRlbnQudCkgfmYgPVxuICAgIG1hdGNoIGlkZW50IHdpdGhcbiAgICB8IExpZGVudCBuIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExpZGVudCAoZiBuKTsgbG9jIH1cbiAgICB8IExkb3QgKHBhdGgsIG4pIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExkb3QgKHBhdGgsIGYgbik7IGxvYyB9XG4gICAgfCBMYXBwbHkgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuZXhwZWN0ZWQgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlXCJcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiB+bG9jOmFwcGx5X2xvYyB7IExvYy5sb2M7IHR4dCA9IGxvbmdpZGVudCB9IH5mIGFyZ3MgPVxuICAgIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIChsb25naWRlbnQgOiBMb25naWRlbnQudCkgd2l0aFxuICAgIHwgTGlkZW50IF8gfCBMZG90ICgoTGlkZW50IF8gfCBMZG90IF8pLCBfKSB8IExhcHBseSBfIC0+IChcbiAgICAgICAgbGV0IGlkZW50ID1cbiAgICAgICAgICB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGxvbmdpZGVudCB+bG9jIH5mXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGlkZW50XG4gICAgICAgIHwgXyA6OiBfIC0+IGVhcHBseSB+bG9jOmFwcGx5X2xvYyBpZGVudCBhcmdzKVxuICAgIHwgTGRvdCAoKExhcHBseSBfIGFzIG1vZHVsZV9wYXRoKSwgbikgLT5cbiAgICAgICAgbGV0IHN1ZmZpeF9uIGZ1bmN0b3JfID0gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBmdW5jdG9yXyBeIFwiX19cIiBeIG4gaW5cbiAgICAgICAgbGV0IHJlYyBnYXRoZXJfbGFwcGx5IGZ1bmN0b3JfYXJncyA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ICogXyA9XG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IExhcHBseSAocmVzdCwgYXJnKSAtPiBnYXRoZXJfbGFwcGx5IChhcmcgOjogZnVuY3Rvcl9hcmdzKSByZXN0XG4gICAgICAgICAgfCBMaWRlbnQgZnVuY3Rvcl8gLT4gKExpZGVudCAoc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgICAgfCBMZG90IChmdW5jdG9yX3BhdGgsIGZ1bmN0b3JfKSAtPlxuICAgICAgICAgICAgICAoTGRvdCAoZnVuY3Rvcl9wYXRoLCBzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlkZW50LCBmdW5jdG9yX2FyZ3MgPSBnYXRoZXJfbGFwcGx5IFtdIG1vZHVsZV9wYXRoIGluXG4gICAgICAgIGVhcHBseSB+bG9jOmFwcGx5X2xvY1xuICAgICAgICAgICh1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGlkZW50IH5sb2MgfmYpXG4gICAgICAgICAgKExpc3QubWFwIGZ1bmN0b3JfYXJncyB+ZjooZnVuIHBhdGggLT5cbiAgICAgICAgICAgICAgIHBleHBfcGFjayB+bG9jIChwbW9kX2lkZW50IH5sb2MgeyB0eHQgPSBwYXRoOyBsb2MgfSkpXG4gICAgICAgICAgQCBhcmdzKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGxvbmdpZGVudCB+ZiA9XG4gICAgdHlwZV9jb25zdHJfY29udiBsb25naWRlbnQgfmxvYyB+ZiBbXVxuXG4gIGxldCBldGFfcmVkdWNlID1cbiAgICBsZXQgcmVjIGdhdGhlcl9wYXJhbXMgYWNjIGV4cHIgPVxuICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgUGV4cF9mdW4gKGxhYmVsLCBOb25lICgqIG5vIGRlZmF1bHQgZXhwcmVzc2lvbiAqKSwgc3VicGF0LCBib2R5KTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgfSAtPiAoXG4gICAgICAgICAgbWF0Y2ggc3VicGF0IHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBOb25lKSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgdHkgKTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgKCogV2UgcmVkdWNlIFtmdW4gKHggOiB0eSkgLT4gZiB4XSBieSByZXdyaXRpbmcgaXQgWyhmIDogdHkgLT4gXyldLiAqKVxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIFNvbWUgdHkpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKSlcbiAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKVxuICAgIGluXG4gICAgbGV0IGFubm90YXRlIH5sb2MgZXhwciBwYXJhbXMgPVxuICAgICAgaWYgTGlzdC5leGlzdHMgcGFyYW1zIH5mOihmdW4gKF8sIF8sIHR5KSAtPiBPcHRpb24uaXNfc29tZSB0eSkgdGhlblxuICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBwYXJhbXMgfmluaXQ6KHB0eXBfYW55IH5sb2MpXG4gICAgICAgICAgICB+ZjooZnVuIChwYXJhbV9sYWJlbCwgcGFyYW0sIHR5X29wdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBsb2MgPSBwYXJhbS5sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0eV9vcHQgd2l0aCBOb25lIC0+IHB0eXBfYW55IH5sb2MgfCBTb21lIHR5IC0+IHR5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHB0eXBfYXJyb3cgfmxvYyBwYXJhbV9sYWJlbCB0eSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIHBleHBfY29uc3RyYWludCB+bG9jIGV4cHIgdHlcbiAgICAgIGVsc2UgZXhwclxuICAgIGluXG4gICAgbGV0IHJlYyBnYXRoZXJfYXJncyBuIHggPVxuICAgICAgaWYgbiA9IDAgdGhlbiBTb21lICh4LCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoYm9keSwgYXJncyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggYXJncyA8PSBuIHRoZW5cbiAgICAgICAgICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKG4gLSBMaXN0Lmxlbmd0aCBhcmdzKSBib2R5IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChib2R5LCBhcmdzJykgLT4gU29tZSAoYm9keSwgYXJncycgQCBhcmdzKVxuICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBmdW4gZXhwciAtPlxuICAgICAgbGV0IHBhcmFtcywgYm9keSA9IGdhdGhlcl9wYXJhbXMgW10gZXhwciBpblxuICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKExpc3QubGVuZ3RoIHBhcmFtcykgYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSBhcyBmX2lkZW50KSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGwyIGFyZ3MgcGFyYW1zXG4gICAgICAgICAgICAgIH5mOihmdW4gKGFyZ19sYWJlbCwgYXJnKSAocGFyYW1fbGFiZWwsIHBhcmFtLCBfKSAtPlxuICAgICAgICAgICAgICAgIFBvbHkuKCA9ICkgKGFyZ19sYWJlbCA6IGFyZ19sYWJlbCkgcGFyYW1fbGFiZWxcbiAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbmFtZSc7IF8gfTtcbiAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nLiggPSApIG5hbWUnIHBhcmFtLnR4dFxuICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+IFNvbWUgKGFubm90YXRlIH5sb2M6ZXhwci5wZXhwX2xvYyBmX2lkZW50IHBhcmFtcykpXG4gICAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHIgPSBPcHRpb24udmFsdWUgKGV0YV9yZWR1Y2UgZXhwcikgfmRlZmF1bHQ6ZXhwclxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgZXhwciB+cmVjX2ZsYWcgPVxuICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICB8IFJlY3Vyc2l2ZSAtPiBleHByXG4gICAgfCBOb25yZWN1cnNpdmUgLT4gZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByXG5lbmRcblxubW9kdWxlIHR5cGUgTG9jID0gQXN0X2J1aWxkZXJfaW50Zi5Mb2NcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEFzdF9idWlsZGVyX2ludGYuU1xuXG4gIG1vZHVsZSBMYXRlc3QgOiBzaWdcbiAgICB2YWwgcHBhdF9jb25zdHJ1Y3QgOlxuICAgICAgbG9uZ2lkZW50IGxvYyAtPiAobGFiZWwgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb24gLT4gcGF0dGVyblxuXG4gICAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgICB2YXJzOmxhYmVsIGxvYyBsaXN0IC0+XG4gICAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGVuZFxuXG4gIHZhbCBwcGF0X2NvbnN0cnVjdCA6IGxvbmdpZGVudCBsb2MgLT4gcGF0dGVybiBvcHRpb24gLT4gcGF0dGVyblxuXG4gIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbmVuZFxuXG5tb2R1bGUgTWFrZSAoTG9jIDogc2lnXG4gIHZhbCBsb2MgOiBMb2NhdGlvbi50XG5lbmQpIDogUyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpIC0tLS0tKilcblxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCA9IERlZmF1bHQucHN0cl92YWx1ZV9saXN0XG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlXyB+bWFuaWZlc3QgPVxuICAgIERlZmF1bHQubm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV9cbiAgICAgIH5tYW5pZmVzdFxuXG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZWZhdWx0LkxvY2F0ZWRcblxuICAgIGxldCBsb2MgXyA9IExvYy5sb2NcbiAgICBsZXQgbWsgeCA9IG1rIH5sb2M6TG9jLmxvYyB4XG4gICAgbGV0IGxpZGVudCB4ID0gbGlkZW50IH5sb2M6TG9jLmxvYyB4XG4gIGVuZFxuXG4gIGxldCBwZXhwX3R1cGxlIGwgPSBEZWZhdWx0LnBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIGwgPSBEZWZhdWx0LnBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIGwgPSBEZWZhdWx0LnB0eXBfdHVwbGUgfmxvYyBsXG4gIGxldCBwZXhwX3R1cGxlX29wdCBsID0gRGVmYXVsdC5wZXhwX3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBwYXRfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHR5cF9wb2x5IHZhcnMgdHkgPSBEZWZhdWx0LnB0eXBfcG9seSB+bG9jIHZhcnMgdHlcbiAgbGV0IHBleHBfYXBwbHkgZSBlbCA9IERlZmF1bHQucGV4cF9hcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVpbnQgdCA9IERlZmF1bHQuZWludCB+bG9jIHRcbiAgbGV0IGVjaGFyIHQgPSBEZWZhdWx0LmVjaGFyIH5sb2MgdFxuICBsZXQgZXN0cmluZyB0ID0gRGVmYXVsdC5lc3RyaW5nIH5sb2MgdFxuICBsZXQgZWZsb2F0IHQgPSBEZWZhdWx0LmVmbG9hdCB+bG9jIHRcbiAgbGV0IGVpbnQzMiB0ID0gRGVmYXVsdC5laW50MzIgfmxvYyB0XG4gIGxldCBlaW50NjQgdCA9IERlZmF1bHQuZWludDY0IH5sb2MgdFxuICBsZXQgZW5hdGl2ZWludCB0ID0gRGVmYXVsdC5lbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgZWJvb2wgdCA9IERlZmF1bHQuZWJvb2wgfmxvYyB0XG4gIGxldCBldmFyIHQgPSBEZWZhdWx0LmV2YXIgfmxvYyB0XG4gIGxldCBwaW50IHQgPSBEZWZhdWx0LnBpbnQgfmxvYyB0XG4gIGxldCBwY2hhciB0ID0gRGVmYXVsdC5wY2hhciB+bG9jIHRcbiAgbGV0IHBzdHJpbmcgdCA9IERlZmF1bHQucHN0cmluZyB+bG9jIHRcbiAgbGV0IHBmbG9hdCB0ID0gRGVmYXVsdC5wZmxvYXQgfmxvYyB0XG4gIGxldCBwaW50MzIgdCA9IERlZmF1bHQucGludDMyIH5sb2MgdFxuICBsZXQgcGludDY0IHQgPSBEZWZhdWx0LnBpbnQ2NCB+bG9jIHRcbiAgbGV0IHBuYXRpdmVpbnQgdCA9IERlZmF1bHQucG5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IHBib29sIHQgPSBEZWZhdWx0LnBib29sIH5sb2MgdFxuICBsZXQgcHZhciB0ID0gRGVmYXVsdC5wdmFyIH5sb2MgdFxuICBsZXQgZXVuaXQgPSBEZWZhdWx0LmV1bml0IH5sb2NcbiAgbGV0IHB1bml0ID0gRGVmYXVsdC5wdW5pdCB+bG9jXG4gIGxldCBlY29uc3RydWN0ID0gRGVmYXVsdC5lY29uc3RydWN0XG4gIGxldCBwY29uc3RydWN0ID0gRGVmYXVsdC5wY29uc3RydWN0XG4gIGxldCBlYXBwbHkgZSBlbCA9IERlZmF1bHQuZWFwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWFic3RyYWN0IHBzIGUgPSBEZWZhdWx0LmVhYnN0cmFjdCB+bG9jIHBzIGVcbiAgbGV0IGVzZXF1ZW5jZSBlbCA9IERlZmF1bHQuZXNlcXVlbmNlIH5sb2MgZWxcbiAgbGV0IGVsaXN0IGwgPSBEZWZhdWx0LmVsaXN0IH5sb2MgbFxuICBsZXQgcGxpc3QgbCA9IERlZmF1bHQucGxpc3QgfmxvYyBsXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgYXJncyA9XG4gICAgRGVmYXVsdC50eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmYgYXJnc1xuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiA9XG4gICAgRGVmYXVsdC51bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPSBEZWZhdWx0LmV0YV9yZWR1Y2VcbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgPSBEZWZhdWx0LmV0YV9yZWR1Y2VfaWZfcG9zc2libGVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjID1cbiAgICBEZWZhdWx0LmV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuZW5kXG5cbmxldCBtYWtlIGxvYyA9XG4gIChtb2R1bGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGxvYyA9IGxvY1xuICBlbmQpIDogUylcbiIsIigqKiBTbWFsbCBoZWxwZXIgdG8gZmluZCBvdXQgd2hvIGlzIHRoZSBjYWxsZXIgb2YgYSBmdW5jdGlvbiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBQcmludGV4YyA9IFN0ZGxpYi5QcmludGV4Y1xuXG50eXBlIHQgPSBQcmludGV4Yy5sb2NhdGlvbiBvcHRpb25cblxubGV0IGdldCB+c2tpcCA9XG4gIGxldCBza2lwID0gX19GSUxFX18gOjogc2tpcCBpblxuICBsZXQgc3RhY2sgPSBQcmludGV4Yy5nZXRfY2FsbHN0YWNrIDE2IGluXG4gIGxldCBsZW4gPSBQcmludGV4Yy5yYXdfYmFja3RyYWNlX2xlbmd0aCBzdGFjayBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2hcbiAgICAgICAgUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCBzdGFjayBwb3NcbiAgICAgICAgfD4gUHJpbnRleGMuY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QgfD4gUHJpbnRleGMuU2xvdC5sb2NhdGlvblxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBsb2MgLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSB+c2V0OnNraXAgbG9jLmZpbGVuYW1lIHRoZW4gbG9vcCAocG9zICsgMSkgZWxzZSBTb21lIGxvY1xuICBpblxuICBsb29wIDBcbiIsIigqKiBIZWxwZXJzIHRvIHByb3ZpZGUgaGludHMgdG8gUFBYIHVzZXJzIGZvciB0eXBvcyBvciBzcGVsbGNoZWNrcy4gKilcblxub3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBDdXRvZmZfbWV0XG5cbigqIEFzIGZvdW5kIGhlcmUgaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0xldmVuc2h0ZWluX2Rpc3RhbmNlI09DYW1sICopXG5sZXQgbGV2ZW5zaHRlaW5fZGlzdGFuY2UgcyB0IGN1dG9mZiA9XG4gIGxldCBtID0gU3RyaW5nLmxlbmd0aCBzIGFuZCBuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGlmIGN1dG9mZiA9IDAgfHwgYWJzIChtIC0gbikgPj0gY3V0b2ZmIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgKCogZm9yIGFsbCBpIGFuZCBqLCBkLihpKS4oaikgd2lsbCBob2xkIHRoZSBMZXZlbnNodGVpbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZVxuICAgICAgIGZpcnN0IGkgY2hhcmFjdGVycyBvZiBzIGFuZCB0aGUgZmlyc3QgaiBjaGFyYWN0ZXJzIG9mIHQgKilcbiAgICBsZXQgZCA9IEFycmF5Lm1ha2VfbWF0cml4IH5kaW14OihtICsgMSkgfmRpbXk6KG4gKyAxKSAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG0gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgZmlyc3Qgc3RyaW5nIHRvIGFuIGVtcHR5IHNlY29uZCBzdHJpbmcgKilcbiAgICAgIGQuKGkpLigwKSA8LSBpXG4gICAgZG9uZTtcbiAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBzZWNvbmQgc3RyaW5nIHRvIGFuIGVtcHR5IGZpcnN0IHN0cmluZyAqKVxuICAgICAgZC4oMCkuKGopIDwtIGpcbiAgICBkb25lO1xuICAgICgqIHRoZSBtaW5pbXVtIG9mIGVhY2ggbGluZSB0b2dldGhlciB3aXRoIHRoZSBjb2x1bW4gaW5kZXggd2lsbCBiZSB1c2VkXG4gICAgICAgdG8gbm90aWNlIGN1dG9mZiBleGNlZWRpbmcgYW5kIHJldHVybiBlYXJseSBpbiB0aGF0IGNhc2UgKilcbiAgICBsZXQgbGluZV9taW4gPSByZWYgMCBpblxuICAgIGxldCBkaXN0YW5jZSA9XG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAxIHRvIG4gZG9cbiAgICAgICAgICBpZiAhbGluZV9taW4gPj0gY3V0b2ZmIC0gMSAmJiBqID49IGN1dG9mZiAtIDEgdGhlbiByYWlzZSBDdXRvZmZfbWV0O1xuICAgICAgICAgIGxpbmVfbWluIDo9IG1heCBtIG47XG4gICAgICAgICAgZm9yIGkgPSAxIHRvIG0gZG9cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgcy5baSAtIDFdIHQuW2ogLSAxXSB0aGVuIGQuKGkgLSAxKS4oaiAtIDEpXG4gICAgICAgICAgICAgICAgKCogbm8gb3BlcmF0aW9uIHJlcXVpcmVkICopXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtaW5cbiAgICAgICAgICAgICAgICAgIChkLihpIC0gMSkuKGopICsgMSkgKCogYSBkZWxldGlvbiAqKVxuICAgICAgICAgICAgICAgICAgKG1pblxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkpLihqIC0gMSkgKyAxKSAoKiBhbiBpbnNlcnRpb24gKilcbiAgICAgICAgICAgICAgICAgICAgIChkLihpIC0gMSkuKGogLSAxKSArIDEpICgqIGEgc3Vic3RpdHV0aW9uICopKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGQuKGkpLihqKSA8LSB2YWx1ZTtcbiAgICAgICAgICAgIGxpbmVfbWluIDo9IG1pbiAhbGluZV9taW4gdmFsdWVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmIGQuKG0pLihuKSA8IGN1dG9mZiB0aGVuIFNvbWUgZC4obSkuKG4pIGVsc2UgTm9uZVxuICAgICAgd2l0aCBDdXRvZmZfbWV0IC0+IE5vbmVcbiAgICBpblxuICAgIGRpc3RhbmNlXG5cbmxldCBzcGVsbGNoZWNrIG5hbWVzIG5hbWUgPVxuICBsZXQgY3V0b2ZmID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIG5hbWUgd2l0aFxuICAgIHwgMSB8IDIgLT4gMFxuICAgIHwgMyB8IDQgLT4gMVxuICAgIHwgNSB8IDYgLT4gMlxuICAgIHwgXyAtPiAzXG4gIGluXG4gIGxldCBfLCBzdWdnZXN0aW9ucyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgbmFtZXMgfmluaXQ6KEludC5tYXhfaW50LCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoKGJlc3RfZGlzdGFuY2UsIG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpIGFzIGFjYykgcmVnaXN0ZXJlZF9uYW1lIC0+XG4gICAgICAgIG1hdGNoIGxldmVuc2h0ZWluX2Rpc3RhbmNlIG5hbWUgcmVnaXN0ZXJlZF9uYW1lIGN1dG9mZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICAgIGlmIGRpc3QgPCBiZXN0X2Rpc3RhbmNlIHRoZW4gKGRpc3QsIFsgcmVnaXN0ZXJlZF9uYW1lIF0pXG4gICAgICAgICAgICBlbHNlIGlmIGRpc3QgPiBiZXN0X2Rpc3RhbmNlIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChkaXN0LCByZWdpc3RlcmVkX25hbWUgOjogbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkpXG4gIGluXG4gIG1hdGNoIExpc3QucmV2IHN1Z2dlc3Rpb25zIHw+IExpc3QuZmlsdGVyIH5mOihTdHJpbmcuKCA8PiApIG5hbWUpIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgbGFzdCA6OiByZXZfcmVzdCAtPlxuICAgICAgU29tZVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJIaW50OiBEaWQgeW91IG1lYW4gJXMlcyVzP1wiXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0LnJldiByZXZfcmVzdCkpXG4gICAgICAgICAgIChpZiBMaXN0LmlzX2VtcHR5IHJldl9yZXN0IHRoZW4gXCJcIiBlbHNlIFwiIG9yIFwiKVxuICAgICAgICAgICBsYXN0KVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphY2MgfmYgPVxuICBsZXQgcmVjIGNvbGxhcHNlX2FmdGVyX2F0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSBwYXJ0KSkgJiYgQ2hhci5lcXVhbCBwYXJ0LlswXSAnQCcgdGhlblxuICAgICAgICAgIFsgU3RyaW5nLmNvbmNhdCAoU3RyaW5nLmRyb3BfcHJlZml4IHBhcnQgMSA6OiBwYXJ0cykgfnNlcDpcIi5cIiBdXG4gICAgICAgIGVsc2UgcGFydCA6OiBjb2xsYXBzZV9hZnRlcl9hdCBwYXJ0c1xuICBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHBhcnRzID1cbiAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgbG9vcCAoZiAoU3RyaW5nLmNvbmNhdCAocGFydCA6OiBwYXJ0cykgfnNlcDpcIi5cIikgYWNjKSBwYXJ0c1xuICBpblxuICBTdHJpbmcuc3BsaXRfb25fY2hhciBuYW1lIH5zZXA6Jy4nIHw+IGNvbGxhcHNlX2FmdGVyX2F0IHw+IGxvb3AgYWNjXG5cbmxldCBkb3Rfc3VmZml4ZXMgbmFtZSA9XG4gIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6W10gfmY6KGZ1biB4IGFjYyAtPiB4IDo6IGFjYylcblxubGV0IHNwbGl0X3BhdGggPVxuICBsZXQgcmVjIGxvb3AgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBhbmQgYWZ0ZXJfZG90IHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ0EnIC4uICdaJyAtPiAoU3RyaW5nLnByZWZpeCBzIChpIC0gMSksIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCBzIGkpKVxuICAgICAgfCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKVxuICAgICAgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGluXG4gIGZ1biBzIC0+IGxvb3AgcyAwXG5cbm1vZHVsZSBQYXR0ZXJuID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbmFtZSA6IHN0cmluZzsgZG90X3N1ZmZpeGVzIDogU3RyaW5nLlNldC50IH1cblxuICBsZXQgbWFrZSBuYW1lID1cbiAgICB7IG5hbWU7IGRvdF9zdWZmaXhlcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoZG90X3N1ZmZpeGVzIG5hbWUpIH1cblxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBtYXRjaGVzIHQgbWF0Y2hlZCA9IFN0cmluZy5TZXQubWVtIG1hdGNoZWQgdC5kb3Rfc3VmZml4ZXNcbmVuZFxuXG4oKiBPbiB0aGUgbmFtZXNwYWNlIFwiYS5OQU1FU1BBQ0VcIiwgcmV0dXJuIHRoZSBwYWlyIChcImFcIiwgTkFNRVNQQUNFKSAqKVxubGV0IHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lID1cbiAgbWF0Y2ggU3RyaW5nLmluZGV4X29wdCBuYW1lICcuJyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggbmFtZSBpblxuICAgICAgbGV0IGJlZm9yZV9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczowIH5sZW46aSBpblxuICAgICAgbGV0IGFmdGVyX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOihpICsgMSkgfmxlbjoobiAtIGkgLSAxKSBpblxuICAgICAgU29tZSAoYmVmb3JlX2RvdCwgYWZ0ZXJfZG90KVxuXG5tb2R1bGUgQWxsb3dsaXN0ZWQgPSBzdHJ1Y3RcbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGFzIHdlbGwgYXMgYWxsIHRoZWlyIGRvdCBzdWZmaXhlcy5cblxuICAgICBTaW5jZSB0aGVzZSBhdHRyaWJ1dGVzIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG5cbiAgICAgU2FkbHksIHRoZSBjb21waWxlciBzaWxlbnRseSBpZ25vcmVzIHRoZW0gaWYgdGhleSBhcmUgbWlzcGxhY2VkLi4uXG4gICopXG4gIGxldCBjcmVhdGVfc2V0IGZ1bGx5X3F1YWxpZmllZF9uYW1lcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIH5mOihmdW4gYWNjIG5hbWUgLT5cbiAgICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphY2MgfmY6KGZ1biB4IGFjYyAtPiBTdHJpbmcuU2V0LmFkZCB4IGFjYykpXG4gICAgICB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IGZ1bGx5X3F1YWxpZmllZF9uYW1lc1xuXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBjcmVhdGVfc2V0XG4gICAgICBbXG4gICAgICAgIFwib2NhbWwuYWxlcnRcIjtcbiAgICAgICAgXCJvY2FtbC5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkX211dGFibGVcIjtcbiAgICAgICAgXCJvY2FtbC5kb2NcIjtcbiAgICAgICAgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIjtcbiAgICAgICAgXCJvY2FtbC5pbW1lZGlhdGVcIjtcbiAgICAgICAgXCJvY2FtbC5pbW1lZGlhdGU2NFwiO1xuICAgICAgICBcIm9jYW1sLmlubGluZVwiO1xuICAgICAgICBcIm9jYW1sLmlubGluZWRcIjtcbiAgICAgICAgXCJvY2FtbC5sb2NhbFwiO1xuICAgICAgICBcIm9jYW1sLm5vYWxsb2NcIjtcbiAgICAgICAgXCJvY2FtbC5wcHdhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC5yZW1vdmVfYWxpYXNlc1wiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlZFwiO1xuICAgICAgICBcIm9jYW1sLnRhaWxjYWxsXCI7XG4gICAgICAgIFwib2NhbWwudGV4dFwiO1xuICAgICAgICBcIm9jYW1sLnVuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnJvbGxcIjtcbiAgICAgICAgXCJvY2FtbC51bnJvbGxlZFwiO1xuICAgICAgICBcIm9jYW1sLnVudGFnZ2VkXCI7XG4gICAgICAgIFwib2NhbWwud2Fybl9vbl9saXRlcmFsX3BhdHRlcm5cIjtcbiAgICAgICAgXCJvY2FtbC53YXJuZXJyb3JcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwudG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgICAgXCJ0b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgXVxuXG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBleHRlbnNpb25zLlxuXG4gICAgIFNpbmNlIHRoZXNlIGV4dGVuc2lvbnMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cbiAgKilcbiAgbGV0IGV4dGVuc2lvbnMgPSBjcmVhdGVfc2V0IFsgXCJvY2FtbC5lcnJvclwiOyBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiIF1cblxuICBsZXQgaXNfYWxsb3dsaXN0ZWQgfmtpbmQgbmFtZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQXR0cmlidXRlIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgYXR0cmlidXRlc1xuICAgIHwgYEV4dGVuc2lvbiAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGV4dGVuc2lvbnNcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBhdHRyaWJ1dGVzXG4gIGxldCBnZXRfZXh0ZW5zaW9uX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGV4dGVuc2lvbnNcbmVuZFxuXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IHN0cnVjdFxuICB0eXBlIHJlc2VydmVkID0gKHN0cmluZywgc3ViX25hbWVzcGFjZXMpIEhhc2h0YmwudFxuICBhbmQgc3ViX25hbWVzcGFjZXMgPSBBbGwgfCBTdWJfbmFtZXNwYWNlcyBvZiByZXNlcnZlZFxuXG4gICgqIElmIFt0YmxdIGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIFwieFwiIHRvIFtBbGxdLCB0aGVuIFwieFwiIGFuZCBhbGwgcGF0aHMgdGhhdFxuICAgKiBzdGFydCB3aXRoIFwieC5cIiBhcmUgcmVzZXJ2ZWQgd2l0aCByZXNwZWN0IHRvIFt0YmxdXG4gICAqXG4gICAqIElmIFt0YmxdIGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIFwieFwiIHRvIFtTdWJfbmFtZXNwYWNlcyB0YmwnXSwgYW5kIFAgaXNcbiAgICogcmVzZXJ2ZWQgd2l0aCByZXNwZWN0IHRvIFt0YmwnXSwgdGhlbiBhbGwgcGF0aHMgXCJ4LlBcIiBhcmUgcmVzZXJ2ZWQgd2l0aFxuICAgKiByZXNwZWN0IHRvIFt0YmxdLlxuICAgKilcbiAgbGV0IGNyZWF0ZV9yZXNlcnZlZCAoKSA6IHJlc2VydmVkID0gSGFzaHRibC5jcmVhdGUgMTZcblxuICBsZXQgcmVjIHJlc2VydmUgbnMgdGJsID1cbiAgICBtYXRjaCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBIYXNodGJsLmFkZF9leG4gdGJsIH5rZXk6bnMgfmRhdGE6QWxsXG4gICAgfCBTb21lIChvdXRlcl9ucywgcmVzdF9ucykgLT4gKFxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdGJsIG91dGVyX25zIH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgU3ViX25hbWVzcGFjZXMgKGNyZWF0ZV9yZXNlcnZlZCAoKSkpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTdWJfbmFtZXNwYWNlcyByZXN0X3RibCAtPiByZXNlcnZlIHJlc3RfbnMgcmVzdF90YmxcbiAgICAgICAgfCBBbGwgLT4gKCkpXG5cbiAgbGV0IHJlYyBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsID1cbiAgICBtYXRjaCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSB3aXRoXG4gICAgfCBTb21lIChucywgcmVzdCkgLT4gKFxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHRibCBucyB3aXRoXG4gICAgICAgIHwgU29tZSAoU3ViX25hbWVzcGFjZXMgcmVzdF90YmwpIC0+XG4gICAgICAgICAgICBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIHJlc3QgcmVzdF90YmxcbiAgICAgICAgfCBTb21lIEFsbCAtPiB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHRibCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIEFsbCAtPiB0cnVlXG4gICAgICAgIHwgU29tZSAoU3ViX25hbWVzcGFjZXMgXykgfCBOb25lIC0+IGZhbHNlKVxuXG4gIGxldCB0YmwgPSBjcmVhdGVfcmVzZXJ2ZWQgKClcbiAgbGV0IHJlc2VydmUgbnMgPSByZXNlcnZlIG5zIHRibFxuICBsZXQgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lID0gaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibFxuICBsZXQgKCkgPSByZXNlcnZlIFwibWVybGluXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlYXNvblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWZtdFwiICgqIHJlYXNvbiAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibnNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVzXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1ldGFvY2FtbFwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJvY2FtbGZvcm1hdFwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJwcHhsaWIubWlncmF0aW9uXCJcblxuICBsZXQgY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWUgPVxuICAgIGxldCBraW5kLCBsaXN0ID1cbiAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgfCBgQXR0cmlidXRlIC0+IChcImF0dHJpYnV0ZVwiLCBBbGxvd2xpc3RlZC5hdHRyaWJ1dGVzKVxuICAgICAgfCBgRXh0ZW5zaW9uIC0+IChcImV4dGVuc2lvblwiLCBBbGxvd2xpc3RlZC5leHRlbnNpb25zKVxuICAgIGluXG4gICAgaWYgU3RyaW5nLlNldC5tZW0gbmFtZSBsaXN0IHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICBcIkNhbm5vdCByZWdpc3RlciAlcyB3aXRoIG5hbWUgJyVzJyBhcyBpdCBtYXRjaGVzIGFuICVzIHJlc2VydmVkIGJ5IHRoZSBcXFxuICAgICAgICAgY29tcGlsZXJcIlxuICAgICAgICBraW5kIG5hbWUga2luZFxuICAgIGVsc2UgaWYgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICBcIkNhbm5vdCByZWdpc3RlciAlcyB3aXRoIG5hbWUgJyVzJyBhcyBpdHMgbmFtZXNwYWNlIGlzIG1hcmtlZCBhcyBcXFxuICAgICAgICAgcmVzZXJ2ZWRcIlxuICAgICAgICBraW5kIG5hbWVcbmVuZFxuXG5sZXQgaWdub3JlX2NoZWNrcyBuYW1lID1cbiAgUmVzZXJ2ZWRfbmFtZXNwYWNlcy5pc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWVcbiAgfHwgU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6XCJfXCJcblxubW9kdWxlIFJlZ2lzdHJhciA9IHN0cnVjdFxuICB0eXBlIGVsZW1lbnQgPSB7IGZ1bGx5X3F1YWxpZmllZF9uYW1lIDogc3RyaW5nOyBkZWNsYXJlZF9hdCA6IENhbGxlcl9pZC50IH1cbiAgdHlwZSBhbGxfZm9yX2NvbnRleHQgPSB7IG11dGFibGUgYWxsIDogZWxlbWVudCBTdHJpbmcuTWFwLnQgfVxuXG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBhbGxfYnlfY29udGV4dCA6ICgnYSwgYWxsX2Zvcl9jb250ZXh0KSBIYXNodGJsLnQ7XG4gICAgc2tpcCA6IHN0cmluZyBsaXN0O1xuICAgIGtpbmQgOiBzdHJpbmc7XG4gICAgc3RyaW5nX29mX2NvbnRleHQgOiAnYSAtPiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+a2luZCB+Y3VycmVudF9maWxlIH5zdHJpbmdfb2ZfY29udGV4dCA9XG4gICAge1xuICAgICAgYWxsX2J5X2NvbnRleHQgPSBIYXNodGJsLmNyZWF0ZSAxNjtcbiAgICAgIHNraXAgPSBbIGN1cnJlbnRfZmlsZTsgX19GSUxFX18gXTtcbiAgICAgIGtpbmQ7XG4gICAgICBzdHJpbmdfb2ZfY29udGV4dDtcbiAgICB9XG5cbiAgbGV0IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0ID1cbiAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuYWxsX2J5X2NvbnRleHQgY29udGV4dCB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgIHsgYWxsID0gU3RyaW5nLk1hcC5lbXB0eSB9KVxuXG4gIGxldCBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgbmFtZSA9XG4gICAgbWF0Y2ggU3RyaW5nLk1hcC5maW5kX29wdCBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlIC0+XG4gICAgICAgIGxldCBkZWNsYXJlZF9hdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgKGxvYyA6IFN0ZGxpYi5QcmludGV4Yy5sb2NhdGlvbikgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCIgZGVjbGFyZWQgYXQgJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb250ZXh0ID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIHMgLT4gXCIgb24gXCIgXiBzIF4gXCJzXCJcbiAgICAgICAgaW5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgICAgXCJTb21lIHBweC1lcyB0cmllZCB0byByZWdpc3RlciBjb25mbGljdGluZyB0cmFuc2Zvcm1hdGlvbnM6ICVzIFxcXG4gICAgICAgICAgICclcyclcyVzIG1hdGNoZXMgJXMgJyVzJyVzXCJcbiAgICAgICAgICAoU3RyaW5nLmNhcGl0YWxpemVfYXNjaWkgdC5raW5kKVxuICAgICAgICAgIG5hbWUgY29udGV4dCAoZGVjbGFyZWRfYXQgY2FsbGVyKSB0LmtpbmQgZS5mdWxseV9xdWFsaWZpZWRfbmFtZVxuICAgICAgICAgIChkZWNsYXJlZF9hdCBlLmRlY2xhcmVkX2F0KVxuXG4gIGxldCBjaGVja19jb2xsaXNpb25zIHQgY29udGV4dCBuYW1lID1cbiAgICBsZXQgY2FsbGVyID0gQ2FsbGVyX2lkLmdldCB+c2tpcDp0LnNraXAgaW5cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgbmFtZVxuXG4gIGxldCByZWdpc3RlciB+a2luZCB0IGNvbnRleHQgbmFtZSA9XG4gICAgUmVzZXJ2ZWRfbmFtZXNwYWNlcy5jaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZTtcbiAgICBsZXQgY2FsbGVyID0gQ2FsbGVyX2lkLmdldCB+c2tpcDp0LnNraXAgaW5cbiAgICBsZXQgYWxsID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dDphbGwgdCBjb250ZXh0IG5hbWU7XG4gICAgbGV0IHQgPSB7IGZ1bGx5X3F1YWxpZmllZF9uYW1lID0gbmFtZTsgZGVjbGFyZWRfYXQgPSBjYWxsZXIgfSBpblxuICAgIGFsbC5hbGwgPC1cbiAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWxsLmFsbCB+ZjooZnVuIG5hbWUgYWNjIC0+XG4gICAgICAgICAgU3RyaW5nLk1hcC5hZGQgbmFtZSB0IGFjYylcblxuICBsZXQgc3BlbGxjaGVjayB0IGNvbnRleHQgPyhhbGxvd2xpc3QgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgbGV0IGFsbCA9XG4gICAgICBTdHJpbmcuTWFwLmZvbGQgKGZ1biBrZXkgXyBhY2MgLT4ga2V5IDo6IGFjYykgYWxsX2Zvcl9jb250ZXh0LmFsbCBbXVxuICAgIGluXG4gICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChhbGwgQCBhbGxvd2xpc3QpIG5hbWUgd2l0aFxuICAgIHwgU29tZSBfIGFzIHggLT4geFxuICAgIHwgTm9uZSB3aGVuIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCAtPiBOb25lXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbGV0IG90aGVyX2NvbnRleHRzID1cbiAgICAgICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgICAgIChmdW4gY3R4IGFsbF9mcm9tX2NvbnRleHQgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgUG9seS4oIDw+ICkgY29udGV4dCBjdHhcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mcm9tX2NvbnRleHQuYWxsXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGN0eCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+IChzIF4gXCJzXCIpIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlIGFjYylcbiAgICAgICAgICAgIHQuYWxsX2J5X2NvbnRleHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBwX3RleHQgPSBGb3JtYXQucHBfcHJpbnRfdGV4dCBpblxuICAgICAgICBsZXQgY3VycmVudF9jb250ZXh0IHBwZiA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICBsZXQgYV9vcl9hbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcy5bMF0gd2l0aFxuICAgICAgICAgICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIHwgJ3knIC0+IFwiYW5cIlxuICAgICAgICAgICAgICAgIHwgXyAtPiBcImFcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgICAgICAgICBcIkAgYnV0QCBpc0AgdXNlZEAgaGVyZUAgaW5AIHRoZUAgY29udGV4dEAgb2ZAICVzQCAlYVwiIGFfb3JfYW5cbiAgICAgICAgICAgICAgICBwcF90ZXh0IHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LnNvcnQgfmNtcDooZnVuIHggeSAtPiAtU3RyaW5nLmNvbXBhcmUgeCB5KSBvdGhlcl9jb250ZXh0c1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICB8IFsgYyBdIC0+XG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lIHBwX3RleHQgY1xuICAgICAgICAgICAgICAgICBjdXJyZW50X2NvbnRleHQpXG4gICAgICAgIHwgbGFzdCA6OiByZXZfb3RoZXJzIC0+XG4gICAgICAgICAgICBsZXQgb3RoZXJzID0gTGlzdC5yZXYgcmV2X290aGVycyBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYUAgYW5kQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZVxuICAgICAgICAgICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgcHBfdGV4dCB+cHBfc2VwOihmdW4gcHBmICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiLEAgXCIpKVxuICAgICAgICAgICAgICAgICBvdGhlcnMgcHBfdGV4dCBsYXN0IGN1cnJlbnRfY29udGV4dCkpXG5cbiAgbW9kdWxlIEVycm9yID0gc3RydWN0XG4gICAgKCogVE9ETzogaGludCBzcGVsbGluZyBlcnJvcnMgcmVnYXJkaW5nIHJlc2VydmVkIG5hbWVzcGFjZXMgbmFtZXMgYW5kIGFsbG93bGlzdGVkXG4gICAgICAgbmFtZXMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3B0aW9uYWwgW2FsbG93bGlzdF0gcGFyYW1ldGVyLiAqKVxuICAgIGxldCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgIChmdW4gbXNnIC0+XG4gICAgICAgICAgbWF0Y2ggc3BlbGxjaGVjayB0IGNvbnRleHQgbmFtZS50eHQgP2FsbG93bGlzdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzXCIgbXNnXG4gICAgICAgICAgfCBTb21lIHMgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXMuXFxuJXNcIiBtc2cgcylcbiAgICAgICAgZm10IG5hbWUudHh0XG5cbiAgICBsZXQgcmFpc2VfZXJyb3JmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IucmFpc2UgQEAgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgbmFtZVxuXG4gICAgbGV0IGVycm9yX2V4dGVuc2lvbmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gQEAgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgbmFtZVxuICBlbmRcblxuICBsZXQgcmFpc2VfZXJyb3JmID0gRXJyb3IucmFpc2VfZXJyb3JmXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQnVmZmVyID0gU3RkbGliLkJ1ZmZlclxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGxpZGVudCB4ID0gTG9uZ2lkZW50LkxpZGVudCB4XG5cbmxldCBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCA9XG4gIGxldCBsb2MgPSB0ZC5wdHlwZV9uYW1lLmxvYyBpblxuICBwdHlwX2NvbnN0ciB+bG9jXG4gICAgKExvY2F0ZWQubWFwIGxpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgIChMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6ZnN0KVxuXG5sZXQgc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggPVxuICBsZXQgY2hvcCBuIH5vcl9tb3JlIHN0cmluZyBwb3MgZiA9XG4gICAgbGV0IHRhcmdldCA9ICFwb3MgLSBuIGluXG4gICAgd2hpbGUgIXBvcyA+IDAgJiYgKG9yX21vcmUgfHwgIXBvcyA+IHRhcmdldCkgJiYgZiBzdHJpbmcuWyFwb3MgLSAxXSBkb1xuICAgICAgcG9zIDo9ICFwb3MgLSAxXG4gICAgZG9uZTtcbiAgICAhcG9zIDw9IHRhcmdldFxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgbGV0IHBvcyA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgaWZcbiAgICAgIGNob3AgMSB+b3JfbW9yZTpmYWxzZSBzdHJpbmcgcG9zIChDaGFyLmVxdWFsICdfJylcbiAgICAgICYmIGNob3AgMyB+b3JfbW9yZTp0cnVlIHN0cmluZyBwb3MgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIGNob3AgMiB+b3JfbW9yZTpmYWxzZSBzdHJpbmcgcG9zIChDaGFyLmVxdWFsICdfJylcbiAgICB0aGVuIFN0cmluZy5wcmVmaXggc3RyaW5nICFwb3NcbiAgICBlbHNlIHN0cmluZ1xuXG5sZXQgZ2VuX3N5bWJvbCA9XG4gIGxldCBjbnQgPSByZWYgMCBpblxuICBmdW4gPyhwcmVmaXggPSBcIl94XCIpICgpIC0+XG4gICAgY250IDo9ICFjbnQgKyAxO1xuICAgIGxldCBwcmVmaXggPSBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCBwcmVmaXggaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzX18lMDNpX1wiIHByZWZpeCAhY250XG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6XG4gICAgKHR5cGVfZGVjbGFyYXRpb24sIF8pIHJlc3VsdCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgcHJlZml4X3N0cmluZyBpID1cbiAgICAoKiBhLCBiLCAuLi4sIHksIHosIGFhLCBiYiwgLi4uICopXG4gICAgU3RyaW5nLm1ha2UgKChpIC8gMjYpICsgMSkgKENoYXIuY2hyIChDaGFyLmNvZGUgJ2EnICsgKGkgbW9kIDI2KSkpXG4gIGluXG4gIGxldCBuYW1lX3BhcmFtIGkgKHRwLCB2YXJpYW5jZSkgPVxuICAgIChtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gT2sgKFB0eXBfdmFyIChnZW5fc3ltYm9sIH5wcmVmaXg6KHByZWZpeF9zdHJpbmcgaSkgKCkpKVxuICAgIHwgUHR5cF92YXIgXyBhcyB2IC0+IE9rIHZcbiAgICB8IF8gLT5cbiAgICAgICAgRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzp0cC5wdHlwX2xvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIpKVxuICAgID4+fCBmdW4gcHR5cF9kZXNjIC0+ICh7IHRwIHdpdGggcHR5cF9kZXNjIH0sIHZhcmlhbmNlKVxuICBpblxuICBsZXQgcHR5cGVfcGFyYW1zLCBlcnJvcnMgPVxuICAgIHRkLnB0eXBlX3BhcmFtcyB8PiBMaXN0Lm1hcGkgfmY6bmFtZV9wYXJhbVxuICAgIHw+IExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb25cbiAgICAgICAgIHwgT2sgbyAtPiBFaXRoZXIuTGVmdCBvXG4gICAgICAgICB8IEVycm9yIGUgLT4gRWl0aGVyLlJpZ2h0IGUpXG4gIGluXG4gIG1hdGNoIGVycm9ycyB3aXRoIFtdIC0+IE9rIHsgdGQgd2l0aCBwdHlwZV9wYXJhbXMgfSB8IHQgOjogcSAtPiBFcnJvciAodCwgcSlcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgbWF0Y2ggbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgdGQgd2l0aFxuICB8IE9rIHJlcyAtPiByZXNcbiAgfCBFcnJvciAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mID1cbiAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICBsZXQgcmVzdWx0X3R5cGUgPVxuICAgIGYgfmxvYzp0ZC5wdHlwZV9uYW1lLmxvYyAoY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQpXG4gIGluXG4gIExpc3QuZm9sZF9yaWdodCB0ZC5wdHlwZV9wYXJhbXMgfmluaXQ6cmVzdWx0X3R5cGVcbiAgICB+ZjooZnVuICh0cCwgX3ZhcmlhbmNlKSBhY2MgLT5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgcHR5cF9hcnJvdyB+bG9jIE5vbGFiZWwgKGYgfmxvYyB0cCkgYWNjKVxuXG5sZXQgc3RyaW5nX29mX2NvcmVfdHlwZSBjdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIFBwcmludGFzdC5jb3JlX3R5cGUgcHBmIGN0O1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBnZXRfdHlwZV9wYXJhbV9uYW1lX3JlcyAodHksIF8pID1cbiAgbGV0IGxvYyA9IHR5LnB0eXBfbG9jIGluXG4gIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gIHwgUHR5cF92YXIgbmFtZSAtPiBPayAoTG9jYXRlZC5tayB+bG9jIG5hbWUpXG4gIHwgXyAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIiwgW10pXG5cbmxldCBnZXRfdHlwZV9wYXJhbV9uYW1lIHQgPVxuICBtYXRjaCBnZXRfdHlwZV9wYXJhbV9uYW1lX3JlcyB0IHdpdGhcbiAgfCBPayBlIC0+IGVcbiAgfCBFcnJvciAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxuZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlXG5cbmNsYXNzIHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuICAgIHZhbCB0eXBlX25hbWVzIDogc3RyaW5nIGxpc3QgPSBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dClcbiAgICBtZXRob2QgcmV0dXJuX3RydWUgKCkgPSByYWlzZV9ub3RyYWNlIFR5cGVfaXNfcmVjdXJzaXZlXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2Fycm93IF8gLT4gKClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBpZDsgXyB9LCBfKVxuICAgICAgICB3aGVuIExpc3QubWVtIH5zZXQ6dHlwZV9uYW1lcyBpZCAtPlxuICAgICAgICAgIHNlbGYjcmV0dXJuX3RydWUgKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgPVxuICAgICAgKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGNkLnBjZF9yZXMgKilcbiAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgIHwgUGNzdHJfdHVwbGUgYXJncyAtPiBMaXN0Lml0ZXIgYXJncyB+ZjpzZWxmI2NvcmVfdHlwZVxuICAgICAgfCBQY3N0cl9yZWNvcmQgZmllbGRzIC0+IExpc3QuaXRlciBmaWVsZHMgfmY6c2VsZiNsYWJlbF9kZWNsYXJhdGlvblxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGVzIF8gPSAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggYXR0cmlidXRlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKClcblxuICAgIG1ldGhvZCBnbyAoKSA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0Lml0ZXIgdGRzIH5mOnNlbGYjdHlwZV9kZWNsYXJhdGlvbiB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmUgLT4gUmVjdXJzaXZlXG4gICAgICAgICAgfCAoKSAtPiBOb25yZWN1cnNpdmUpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPSAobmV3IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcykjZ28gKClcbmxldCByZWMgbGFzdCB4IGwgPSBtYXRjaCBsIHdpdGggW10gLT4geCB8IHggOjogbCAtPiBsYXN0IHggbFxuXG5sZXQgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkID1cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0ciBbXSAtPiBuYW1lLmxvY1xuICB8IFBTdHIgKHggOjogbCkgLT4geyB4LnBzdHJfbG9jIHdpdGggbG9jX2VuZCA9IChsYXN0IHggbCkucHN0cl9sb2MubG9jX2VuZCB9XG4gIHwgUFNpZyBbXSAtPiBuYW1lLmxvY1xuICB8IFBTaWcgKHggOjogbCkgLT4geyB4LnBzaWdfbG9jIHdpdGggbG9jX2VuZCA9IChsYXN0IHggbCkucHNpZ19sb2MubG9jX2VuZCB9XG4gIHwgUFR5cCB0IC0+IHQucHR5cF9sb2NcbiAgfCBQUGF0ICh4LCBOb25lKSAtPiB4LnBwYXRfbG9jXG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPiB7IHgucHBhdF9sb2Mgd2l0aCBsb2NfZW5kID0gZS5wZXhwX2xvYy5sb2NfZW5kIH1cblxubGV0IGxvY19vZl9wYXlsb2FkIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZFxuXG5sZXQgbG9jX29mX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gICgqIFRPRE86IGZpeCB0aGlzIGluIHRoZSBjb21waWxlciwgYW5kIG1vdmUgdGhlIGxvZ2ljIHRvIG9tcCB3aGVuIGNvbnZlcnRpbmdcbiAgICAgZnJvbSBvbGRlciBhc3RzLiAqKVxuICAoKiBcIm9jYW1sLmRvY1wiIGF0dHJpYnV0ZXMgYXJlIGdlbmVyYXRlZCB3aXRoIFtMb2NhdGlvbi5ub25lXSwgd2hpY2ggaXMgbm90IGhlbHBmdWwgZm9yXG4gICAgIGVycm9yIG1lc3NhZ2VzLiAqKVxuICBpZiBQb2x5LiggPSApIGF0dHJfbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuXG4gICAgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZFxuICBlbHNlXG4gICAge1xuICAgICAgYXR0cl9uYW1lLmxvYyB3aXRoXG4gICAgICBsb2NfZW5kID0gKGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWQpLmxvY19lbmQ7XG4gICAgfVxuXG5sZXQgbG9jX29mX2V4dGVuc2lvbiAobmFtZSwgcGF5bG9hZCkgPVxuICBpZiBQb2x5LiggPSApIG5hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlbiBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWRcbiAgZWxzZVxuICAgIHsgbmFtZS5sb2Mgd2l0aCBsb2NfZW5kID0gKGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCkubG9jX2VuZCB9XG5cbmxldCBjdXJyeV9hcHBsaWNhdGlvbnMgZXhwciA9XG4gIGxldCBvcGVuIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2FwcGx5IChmLCBvcmlnX2ZvcndhcmRfYXJncykgLT5cbiAgICAgIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGZcbiAgICAgICAgfCBsYXN0X2FyZyA6OiByZXZfZnJvbnRfYXJncyAtPlxuICAgICAgICAgICAgcGV4cF9hcHBseSB+bG9jIChsb29wIHJldl9mcm9udF9hcmdzKSBbIGxhc3RfYXJnIF1cbiAgICAgIGluXG4gICAgICBsb29wIChMaXN0LnJldiBvcmlnX2ZvcndhcmRfYXJncylcbiAgfCBfIC0+IGV4cHJcblxubGV0IGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgTGlzdC5maWx0ZXJfbWFwIH5mOihmdW5jdGlvblxuICAgIHwgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX2xvYyA9IF87IGF0dHJfcGF5bG9hZCA9IF8gfVxuICAgICAgd2hlbiBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS5Mb2NhdGlvbi50eHQgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgYXR0ciAtPlxuICAgICAgICBsZXQgbG9jID0gbG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICAgIFNvbWUgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZXMgbm90IGFsbG93ZWQgaGVyZVwiKSlcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZFxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgYWNjID0gYXR0cmlidXRlc19lcnJvcnMgWyBhIF0gQCBhY2NcbiAgZW5kXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlcyBsID1cbiAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzX2luID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhID0gYXNzZXJ0X25vX2F0dHJpYnV0ZXMgWyBhIF1cbiAgZW5kXG5cbmxldCBhdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyA9XG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IGxvYzsgdHh0ID0gXCJvY2FtbC5wcHdhcm5pbmdcIiB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHMpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgPVxuICBsZXQgcmVjIGNoZWNrID0gZnVuY3Rpb25cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IF87IF8gfSAtPiBgRGVmaW5pdGVseVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzICh0eXAsIF8pOyBfIH0gLT4gY2hlY2sgdHlwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIF87IF8gfSAtPiBgTWF5YmVcbiAgICB8IF8gLT4gYFN1cmVseV9ub3RcbiAgICAoKiBUeXBlIHZhcnMgZ28gaGVyZSBldmVuIHRob3VnaCB0aGV5IGNvdWxkIGJlIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMsIGhvd2V2ZXIgd2UgZG9uJ3QgaGFuZGxlIGl0IGlmIHRoZXkgZ2V0IHN1YnN0aXR1dGVkXG4gICAgICAgYnkgYSBwb2x5bW9ycGhpYyB2YXJpYW50IHRoYXQgaXMgdGhlbiBpbmNsdWRlZC4gKilcbiAgaW5cbiAgZnVuIHRkIH5zaWdfIC0+XG4gICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9yZWNvcmQgXyB8IFB0eXBlX29wZW4gLT4gYFN1cmVseV9ub3RcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChcbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaWYgc2lnXyB0aGVuIGBNYXliZSBlbHNlIGBTdXJlbHlfbm90XG4gICAgICAgIHwgU29tZSB0eXAgLT4gY2hlY2sgdHlwKVxuXG5sZXQgbWtfbmFtZWRfc2lnIH5sb2MgfnNnX25hbWUgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50ID0gZnVuY3Rpb25cbiAgfCBbIHRkIF1cbiAgICB3aGVuIFN0cmluZy5lcXVhbCB0ZC5wdHlwZV9uYW1lLnR4dCBcInRcIiAmJiBMaXN0LmlzX2VtcHR5IHRkLnB0eXBlX2NzdHJzIC0+XG4gICAgICBpZlxuICAgICAgICAobm90IGhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50KVxuICAgICAgICAmJiBQb2x5LiggPSApIChpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUpIGBEZWZpbml0ZWx5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGFyaXR5ID0gTGlzdC5sZW5ndGggdGQucHR5cGVfcGFyYW1zIGluXG4gICAgICAgIGlmIGFyaXR5ID49IDQgdGhlbiBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbXR5ID1cbiAgICAgICAgICAgIGlmIGFyaXR5ID0gMCB0aGVuIHNnX25hbWUgZWxzZSBQcmludGYuc3ByaW50ZiBcIiVzJWRcIiBzZ19uYW1lIGFyaXR5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgICAgICAgbGV0IGZvcl9zdWJzdCA9XG4gICAgICAgICAgICBBc3RfaGVscGVyLlR5cGUubWsgfmxvYyB0ZC5wdHlwZV9uYW1lIH5wYXJhbXM6dGQucHR5cGVfcGFyYW1zXG4gICAgICAgICAgICAgIH5tYW5pZmVzdDpcbiAgICAgICAgICAgICAgICAocHR5cF9jb25zdHIgfmxvY1xuICAgICAgICAgICAgICAgICAgIChMb2NhdGVkLm1hcF9saWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6ZnN0IHRkLnB0eXBlX3BhcmFtcykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoaW5jbHVkZV9pbmZvcyB+bG9jXG4gICAgICAgICAgICAgICAocG10eV93aXRoIH5sb2NcbiAgICAgICAgICAgICAgICAgIChwbXR5X2lkZW50IH5sb2MgKExvY2F0ZWQubGlkZW50IG10eSB+bG9jKSlcbiAgICAgICAgICAgICAgICAgIFsgUHdpdGhfdHlwZXN1YnN0IChMb2NhdGVkLmxpZGVudCB+bG9jIFwidFwiLCBmb3Jfc3Vic3QpIF0pKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZXhuX3RvX2xvY19lcnJvciBleG4gPVxuICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGggU29tZSBlcnJvciAtPiBlcnJvciB8IE5vbmUgLT4gcmFpc2UgZXhuXG5cbm1vZHVsZSBXaXRoX2Vycm9ycyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdFxuXG4gIGxldCByZXR1cm4gZSA9IChlLCBbXSlcblxuICBsZXQgKCA+Pj0gKSAoeCwgZXJyb3JzMSkgZiA9XG4gICAgbGV0IHksIGVycm9yczIgPSBmIHggaW5cbiAgICAoeSwgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgbGV0ICggPj58ICkgKHgsIGVycm9ycykgZiA9IChmIHgsIGVycm9ycylcblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE9rIHggLT4gKHgsIFtdKVxuICAgIHwgRXJyb3IgZXJyb3JzIC0+IChkZWZhdWx0LCBOb25FbXB0eUxpc3QudG9fbGlzdCBlcnJvcnMpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIGxpc3QgPSAoTGlzdC5tYXAgbGlzdCB+Zjpmc3QsIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOnNuZClcbmVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X3BhdHRlcm4wXG5sZXQgbm9sYWJlbCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb2xhYmVsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb2xhYmVsXCIpXG5sZXQgbGFiZWxsZWQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExhYmVsbGVkIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMYWJlbGxlZFwiKVxubGV0IG9wdGlvbmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPcHRpb25hbCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3B0aW9uYWxcIilcbmxldCBhdHRyaWJ1dGUgfm5hbWU6KFQgbmFtZSkgIH5wYXlsb2FkOihUIHBheWxvYWQpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5hdHRyX25hbWUpLmxvYyAoeC5hdHRyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBwYXlsb2FkIGN0eCBsb2MgeC5hdHRyX3BheWxvYWQgayBpbiBrKVxubGV0IGJpbmRpbmdfb3Agfm9wOihUIG9wKSAgfnBhdDooVCBwYXQpICB+ZXhwOihUIGV4cCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG9wIGN0eCAoeC5wYm9wX29wKS5sb2MgKHgucGJvcF9vcCkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHBhdCBjdHggbG9jIHgucGJvcF9wYXQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZXhwIGN0eCBsb2MgeC5wYm9wX2V4cCBrIGluIGspXG5sZXQgY2FzZSB+bGhzOihUIGxocykgIH5ndWFyZDooVCBndWFyZCkgIH5yaHM6KFQgcmhzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gbGhzIGN0eCBsb2MgeC5wY19saHMgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZ3VhcmQgY3R4IGxvYyB4LnBjX2d1YXJkIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHJocyBjdHggbG9jIHgucGNfcmhzIGsgaW4gaylcbmxldCBwY2xfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfY29uc3RyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwY2xfc3RydWN0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG5sZXQgcGNsX2Z1biAoVCBmMCkgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG5sZXQgcGNsX2FwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwY2xfbGV0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG5sZXQgcGNsX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY2xfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcGNsX29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwY2ZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2ZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2ZfaW5oZXJpdCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG5sZXQgcGNmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxubGV0IHBjZl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbmxldCBwY2ZfY29uc3RyYWludCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGNmX2luaXRpYWxpemVyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaXRpYWxpemVyXCIpKVxubGV0IHBjZl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbmxldCBwY2ZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgY2ZrX3ZpcnR1YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENma192aXJ0dWFsIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2aXJ0dWFsXCIpXG5sZXQgY2ZrX2NvbmNyZXRlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25jcmV0ZVwiKVxubGV0IGNsYXNzX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjaV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2lfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY2xhc3NfaW5mb3MgfnZpcnQ6KFQgdmlydCkgIH5wYXJhbXM6KFQgcGFyYW1zKSAgfm5hbWU6KFQgbmFtZSkgIH5leHByOihUXG4gIGV4cHIpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gdmlydCBjdHggbG9jIHgucGNpX3ZpcnQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucGNpX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGNpX25hbWUpLmxvYyAoeC5wY2lfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wY2lfZXhwciBrIGluIGspKVxubGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZjooVCBzZWxmKSAgfmZpZWxkczooVCBmaWVsZHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3NpZ19zZWxmIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzaWdfZmllbGRzIGsgaW4gaylcbmxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGY6KFQgc2VsZikgIH5maWVsZHM6KFQgZmllbGRzKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc2VsZiBjdHggbG9jIHgucGNzdHJfc2VsZiBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc3RyX2ZpZWxkcyBrIGluIGspXG5sZXQgcGN0eV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0eV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwY3R5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbmxldCBwY3R5X2Fycm93IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbmxldCBwY3R5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwY3R5X29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG5sZXQgcGN0Zl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG5sZXQgcGN0Zl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG5sZXQgcGN0Zl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG5sZXQgcGN0Zl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGN0Zl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIikpXG5sZXQgcGN0Zl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgY2xvc2VkID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENsb3NlZCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ2xvc2VkXCIpXG5sZXQgb3Blbl8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgT3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3BlblwiKVxubGV0IHBjb25zdF9pbnRlZ2VyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVnZXJcIilcbmxldCBwY29uc3RfY2hhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2NoYXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNoYXJcIilcbmxldCBwY29uc3Rfc3RyaW5nIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxubGV0IHBjb25zdF9mbG9hdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmxvYXRcIilcbmxldCBwY3N0cl90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpXG5sZXQgcGNzdHJfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH52YXJzOihUIHZhcnMpICB+YXJnczooVCBhcmdzKSBcbiAgfnJlczooVCByZXMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGNkX25hbWUpLmxvYyAoeC5wY2RfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB2YXJzIGN0eCBsb2MgeC5wY2RfdmFycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gYXJncyBjdHggbG9jIHgucGNkX2FyZ3MgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHJlcyBjdHggbG9jIHgucGNkX3JlcyBrIGluIGspKVxubGV0IHB0eXBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxubGV0IHB0eXBfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxubGV0IHB0eXBfYXJyb3cgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxubGV0IHB0eXBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxubGV0IHB0eXBfY29uc3RyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG5sZXQgcHR5cF9vYmplY3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxubGV0IHB0eXBfY2xhc3MgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIikpXG5sZXQgcHR5cF9hbGlhcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxubGV0IHB0eXBfdmFyaWFudCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxubGV0IHB0eXBfcG9seSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbmxldCBwdHlwX3BhY2thZ2UgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja2FnZVwiKSlcbmxldCBwdHlwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCB1cHRvID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFVwdG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVwdG9cIilcbmxldCBkb3dudG9fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IERvd250byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRG93bnRvXCIpXG5sZXQgcGRpcmFfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBkaXJfc3RyaW5nIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX3N0cmluZyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG5sZXQgcGRpcl9pbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50XCIpXG5sZXQgcGRpcl9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIilcbmxldCBwZGlyX2Jvb2wgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfYm9vbCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYm9vbFwiKVxubGV0IHBleHBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwZXhwX2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbmxldCBwZXhwX2xldCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbmxldCBwZXhwX2Z1bmN0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdGlvblwiKSlcbmxldCBwZXhwX2Z1biAoVCBmMCkgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxubGV0IHBleHBfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwZXhwX21hdGNoIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWF0Y2hcIikpXG5sZXQgcGV4cF90cnkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ5XCIpKVxubGV0IHBleHBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxubGV0IHBleHBfY29uc3RydWN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG5sZXQgcGV4cF92YXJpYW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxubGV0IHBleHBfcmVjb3JkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbmxldCBwZXhwX2ZpZWxkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZpZWxkXCIpKVxubGV0IHBleHBfc2V0ZmllbGQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRmaWVsZFwiKSlcbmxldCBwZXhwX2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbmxldCBwZXhwX2lmdGhlbmVsc2UgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWZ0aGVuZWxzZVwiKSlcbmxldCBwZXhwX3NlcXVlbmNlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VxdWVuY2VcIikpXG5sZXQgcGV4cF93aGlsZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndoaWxlXCIpKVxubGV0IHBleHBfZm9yIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSAoVCBmNCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gbGV0IGsgPSBmNCBjdHggbG9jIHg0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZvclwiKSlcbmxldCBwZXhwX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcGV4cF9jb2VyY2UgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb2VyY2VcIikpXG5sZXQgcGV4cF9zZW5kIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VuZFwiKSlcbmxldCBwZXhwX25ldyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9uZXcgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXdcIikpXG5sZXQgcGV4cF9zZXRpbnN0dmFyIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0aW5zdHZhclwiKSlcbmxldCBwZXhwX292ZXJyaWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvdmVycmlkZVwiKSlcbmxldCBwZXhwX2xldG1vZHVsZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRtb2R1bGVcIikpXG5sZXQgcGV4cF9sZXRleGNlcHRpb24gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0ZXhjZXB0aW9uXCIpKVxubGV0IHBleHBfYXNzZXJ0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXNzZXJ0XCIpKVxubGV0IHBleHBfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxubGV0IHBleHBfcG9seSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbmxldCBwZXhwX29iamVjdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbmxldCBwZXhwX25ld3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXd0eXBlXCIpKVxubGV0IHBleHBfcGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrXCIpKVxubGV0IHBleHBfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwZXhwX2xldG9wIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xldG9wIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRvcFwiKSlcbmxldCBwZXhwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnJlYWNoYWJsZVwiKSlcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3JfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWU6KFQgbmFtZSkgIH5raW5kOihUIGtpbmQpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBleHRfbmFtZSkubG9jICh4LnBleHRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wZXh0X2tpbmQgayBpbiBrKSlcbmxldCBwZXh0X2RlY2wgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWNsXCIpXG5sZXQgcGV4dF9yZWJpbmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBleHRfcmViaW5kIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmViaW5kXCIpXG5sZXQgdW5pdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBVbml0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVbml0XCIpXG5sZXQgbmFtZWQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTmFtZWRcIilcbmxldCBpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBpbmNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgaW5jbHVkZV9pbmZvcyB+bW9kXzooVCBtb2RfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbW9kXyBjdHggbG9jIHgucGluY2xfbW9kIGsgaW4gaykpXG5sZXQgaW5qZWN0aXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEluamVjdGl2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW5qZWN0aXZlXCIpXG5sZXQgbm9pbmplY3Rpdml0eSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb0luamVjdGl2aXR5IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb0luamVjdGl2aXR5XCIpXG5sZXQgbGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGxkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBsZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfm11dGFibGVfOihUIG11dGFibGVfKSAgfnR5cGVfOihUXG4gIHR5cGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBsZF9uYW1lKS5sb2MgKHgucGxkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gbXV0YWJsZV8gY3R4IGxvYyB4LnBsZF9tdXRhYmxlIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucGxkX3R5cGUgayBpbiBrKSlcbmxldCBsZXRvcCB+bGV0XzooVCBsZXRfKSAgfmFuZHM6KFQgYW5kcykgIH5ib2R5OihUIGJvZHkpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBsZXRfIGN0eCBsb2MgeC5sZXRfIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGFuZHMgY3R4IGxvYyB4LmFuZHMgayBpblxuICAgICAgICAgICAgIGxldCBrID0gYm9keSBjdHggbG9jIHguYm9keSBrIGluIGspXG5sZXQgbG9jYXRpb24gfnN0YXJ0OihUIHN0YXJ0KSAgfmVuZF86KFQgZW5kXykgIH5naG9zdDooVCBnaG9zdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHN0YXJ0IGN0eCBsb2MgeC5sb2Nfc3RhcnQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZW5kXyBjdHggbG9jIHgubG9jX2VuZCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBnaG9zdCBjdHggbG9jIHgubG9jX2dob3N0IGsgaW4gaylcbmxldCBsaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExpZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGlkZW50XCIpXG5sZXQgbGRvdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExkb3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxkb3RcIilcbmxldCBsYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBMYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhcHBseVwiKVxubGV0IG1vZHVsZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtYl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWU6KFQgbmFtZSkgIH5leHByOihUIGV4cHIpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1iX25hbWUpLmxvYyAoeC5wbWJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wbWJfZXhwciBrIGluIGspKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnR5cGVfOihUIHR5cGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtZF9uYW1lKS5sb2MgKHgucG1kX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtZF90eXBlIGsgaW4gaykpXG5sZXQgcG1vZF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1vZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBtb2Rfc3RydWN0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxubGV0IHBtb2RfZnVuY3RvciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbmxldCBwbW9kX2FwcGx5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG5sZXQgcG1vZF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBtb2RfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxubGV0IHBtb2RfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1zX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtc19hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lOihUIG5hbWUpICB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtc19uYW1lKS5sb2MgKHgucG1zX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggKHgucG1zX21hbmlmZXN0KS5sb2MgKHgucG1zX21hbmlmZXN0KS50eHQgayBpblxuICAgICAgICAgICAgICBrKSlcbmxldCBwbXR5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXR5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcG10eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG5sZXQgcG10eV9mdW5jdG9yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxubGV0IHBtdHlfd2l0aCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2l0aFwiKSlcbmxldCBwbXR5X3R5cGVvZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV90eXBlb2YgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVvZlwiKSlcbmxldCBwbXR5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwbXR5X2FsaWFzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2FsaWFzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10ZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXRkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnR5cGVfOihUIHR5cGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXRkX25hbWUpLmxvYyAoeC5wbXRkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtdGRfdHlwZSBrIGluIGspKVxubGV0IGltbXV0YWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBJbW11dGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkltbXV0YWJsZVwiKVxubGV0IG11dGFibGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE11dGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk11dGFibGVcIilcbmxldCBwb2ZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwb2ZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvdGFnIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk90YWdcIikpXG5sZXQgb2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IE9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPaW5oZXJpdFwiKSlcbmxldCBvcGVuX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvcGVuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3Blbl9pbmZvcyB+ZXhwcjooVCBleHByKSAgfm92ZXJyaWRlOihUIG92ZXJyaWRlKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gZXhwciBjdHggbG9jIHgucG9wZW5fZXhwciBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gb3ZlcnJpZGUgY3R4IGxvYyB4LnBvcGVuX292ZXJyaWRlIGsgaW4gaykpXG5sZXQgb3ZlcnJpZGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgT3ZlcnJpZGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk92ZXJyaWRlXCIpXG5sZXQgZnJlc2ggPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgRnJlc2ggLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkZyZXNoXCIpXG5sZXQgcHBhdF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHBhdF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG5sZXQgcHBhdF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxubGV0IHBwYXRfYWxpYXMgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgcHBhdF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG5sZXQgcHBhdF9pbnRlcnZhbCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVydmFsXCIpKVxubGV0IHBwYXRfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxubGV0IHBwYXRfY29uc3RydWN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG5sZXQgcHBhdF92YXJpYW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxubGV0IHBwYXRfcmVjb3JkIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbmxldCBwcGF0X2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbmxldCBwcGF0X29yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3JcIikpXG5sZXQgcHBhdF9jb25zdHJhaW50IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBwYXRfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF90eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKSlcbmxldCBwcGF0X2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbmxldCBwcGF0X3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG5sZXQgcHBhdF9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIikpXG5sZXQgcHBhdF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgcHBhdF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwc3RyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQU3RyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU3RyXCIpXG5sZXQgcHNpZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFNpZyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFNpZ1wiKVxubGV0IHB0eXAgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBUeXAgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBUeXBcIilcbmxldCBwcGF0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFBhdFwiKVxubGV0IHBvc2l0aW9uIH5mbmFtZTooVCBmbmFtZSkgIH5sbnVtOihUIGxudW0pICB+Ym9sOihUIGJvbCkgIH5jbnVtOihUIGNudW0pIFxuICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBmbmFtZSBjdHggbG9jIHgucG9zX2ZuYW1lIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGxudW0gY3R4IGxvYyB4LnBvc19sbnVtIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGJvbCBjdHggbG9jIHgucG9zX2JvbCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBjbnVtIGN0eCBsb2MgeC5wb3NfY251bSBrIGluIGspXG5sZXQgcHJpdmF0ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHJpdmF0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHJpdmF0ZVwiKVxubGV0IHB1YmxpYyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdWJsaWMgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlB1YmxpY1wiKVxubGV0IG5vbnJlY3Vyc2l2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb25yZWN1cnNpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbnJlY3Vyc2l2ZVwiKVxubGV0IHJlY3Vyc2l2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBSZWN1cnNpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJlY3Vyc2l2ZVwiKVxubGV0IHByZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHByZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHJmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHJ0YWcgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSdGFnXCIpKVxubGV0IHJpbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmluaGVyaXRcIikpXG5sZXQgcHNpZ19sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc2lnX3ZhbHVlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbmxldCBwc2lnX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHNpZ190eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG5sZXQgcHNpZ190eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG5sZXQgcHNpZ19leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG5sZXQgcHNpZ19tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHNpZ19tb2RzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG5sZXQgcHNpZ19yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG5sZXQgcHNpZ19tb2R0eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG5sZXQgcHNpZ19tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG5sZXQgcHNpZ19vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgcHNpZ19pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG5sZXQgcHNpZ19jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG5sZXQgcHNpZ19jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG5sZXQgcHNpZ19hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG5sZXQgcHNpZ19leHRlbnNpb24gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxubGV0IHBzdHJfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHN0cl9ldmFsIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXZhbFwiKVxubGV0IHBzdHJfdmFsdWUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbmxldCBwc3RyX3ByaW1pdGl2ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwcmltaXRpdmVcIilcbmxldCBwc3RyX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHN0cl90eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG5sZXQgcHN0cl9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG5sZXQgcHN0cl9tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHN0cl9yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG5sZXQgcHN0cl9tb2R0eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG5sZXQgcHN0cl9vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgcHN0cl9jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG5sZXQgcHN0cl9jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG5sZXQgcHN0cl9pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG5sZXQgcHN0cl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG5sZXQgcHN0cl9leHRlbnNpb24gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxubGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZTooVCBuYW1lKSAgfmFyZzooVCBhcmcpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wZGlyX25hbWUpLmxvYyAoeC5wZGlyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBhcmcgY3R4IGxvYyB4LnBkaXJfYXJnIGsgaW4gaylcbmxldCBwdG9wX2RlZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHRvcF9kZWYgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlZlwiKVxubGV0IHB0b3BfZGlyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdG9wX2RpciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGlyXCIpXG5sZXQgdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwZV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgIH5wYXJhbXM6KFQgcGFyYW1zKSAgfmNzdHJzOihUIGNzdHJzKSBcbiAgfmtpbmQ6KFQga2luZCkgIH5wcml2YXRlXzooVCBwcml2YXRlXykgIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnB0eXBlX25hbWUpLmxvYyAoeC5wdHlwZV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5cGVfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBjc3RycyBjdHggbG9jIHgucHR5cGVfY3N0cnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnB0eXBlX2tpbmQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlwZV9wcml2YXRlIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBtYW5pZmVzdCBjdHggbG9jIHgucHR5cGVfbWFuaWZlc3QgayBpbiBrKSlcbmxldCB0eXBlX2V4Y2VwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleG5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXhjZXB0aW9uIH5jb25zdHJ1Y3RvcjooVCBjb25zdHJ1Y3RvcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBjb25zdHJ1Y3RvciBjdHggbG9jIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGsgaW4gaykpXG5sZXQgdHlwZV9leHRlbnNpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aDooVCBwYXRoKSAgfnBhcmFtczooVCBwYXJhbXMpICB+Y29uc3RydWN0b3JzOihUXG4gIGNvbnN0cnVjdG9ycykgIH5wcml2YXRlXzooVCBwcml2YXRlXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBwYXRoIGN0eCAoeC5wdHlleHRfcGF0aCkubG9jICh4LnB0eWV4dF9wYXRoKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5ZXh0X3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gY29uc3RydWN0b3JzIGN0eCBsb2MgeC5wdHlleHRfY29uc3RydWN0b3JzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5ZXh0X3ByaXZhdGUgayBpbiBrKSlcbmxldCBwdHlwZV9hYnN0cmFjdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWJzdHJhY3RcIilcbmxldCBwdHlwZV92YXJpYW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpXG5sZXQgcHR5cGVfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxubGV0IHB0eXBlX29wZW4gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxubGV0IHZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHZiX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2Yl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB2YWx1ZV9iaW5kaW5nIH5wYXQ6KFQgcGF0KSAgfmV4cHI6KFQgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBwYXQgY3R4IGxvYyB4LnB2Yl9wYXQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnB2Yl9leHByIGsgaW4gaykpXG5sZXQgdmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHZhbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmFsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZTooVCBuYW1lKSAgfnR5cGVfOihUIHR5cGVfKSAgfnByaW06KFQgcHJpbSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucHZhbF9uYW1lKS5sb2MgKHgucHZhbF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wdmFsX3R5cGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaW0gY3R4IGxvYyB4LnB2YWxfcHJpbSBrIGluIGspKVxubGV0IGNvdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb3ZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvdmFyaWFudFwiKVxubGV0IGNvbnRyYXZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29udHJhdmFyaWFudFwiKVxubGV0IG5vdmFyaWFuY2UgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTm9WYXJpYW5jZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9WYXJpYW5jZVwiKVxubGV0IHZpcnR1YWxfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFZpcnR1YWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlZpcnR1YWxcIilcbmxldCBjb25jcmV0ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb25jcmV0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29uY3JldGVcIilcbmxldCBwd2l0aF90eXBlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxubGV0IHB3aXRoX21vZHVsZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxubGV0IHB3aXRoX21vZHR5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG5sZXQgcHdpdGhfbW9kdHlwZXN1YnN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbmxldCBwd2l0aF90eXBlc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxubGV0IHB3aXRoX21vZHN1YnN0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFzdF9wYXR0ZXJuMFxuXG5sZXQgc2F2ZV9jb250ZXh0IGN0eCA9IGN0eC5tYXRjaGVkXG5sZXQgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXAgPSBjdHgubWF0Y2hlZCA8LSBiYWNrdXBcbmxldCBpbmNyX21hdGNoZWQgYyA9IGMubWF0Y2hlZCA8LSBjLm1hdGNoZWQgKyAxXG5cbmxldCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICB0cnkgT2sgKGYgeyBtYXRjaGVkID0gMCB9IGxvYyB4IGspXG4gIHdpdGggRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpIC0+IChcbiAgICBtYXRjaCBvbl9lcnJvciB3aXRoXG4gICAgfCBOb25lIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCIlcyBleHBlY3RlZFwiIGV4cGVjdGVkLCBbXSlcbiAgICB8IFNvbWUgZiAtPiBPayAoZiAoKSkpXG5cbmxldCBwYXJzZSAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIG1hdGNoIHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayB3aXRoXG4gIHwgT2sgciAtPiByXG4gIHwgRXJyb3IgKHIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIHJcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuMC50ICogJ2IgLT4gKCdhLCAnYykgdFxuXG4gIGxldCBjcmVhdGUgdCBmID0gVCAodCwgZilcbiAgbGV0IHBhcnNlX3JlcyAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2VfcmVzIHQgbG9jIHggZlxuICBsZXQgcGFyc2UgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlIHQgbG9jIHggZlxuZW5kXG5cbmxldCBfXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeClcblxubGV0IF9fJyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB7IGxvYzsgdHh0ID0geCB9KVxuXG5sZXQgZHJvcCA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIF8gayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGspXG5cbmxldCBhc19fIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeCAoayB4KSBpblxuICAgICAgaylcblxubGV0IGNzdCB+dG9fc3RyaW5nID8oZXF1YWwgPSBQb2x5LmVxdWFsKSB2ID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGlmIGVxdWFsIHggdiB0aGVuIChcbiAgICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgICAgaylcbiAgICAgIGVsc2UgZmFpbCBsb2MgKHRvX3N0cmluZyB2KSlcblxubGV0IGludCB2ID0gY3N0IH50b19zdHJpbmc6SW50LnRvX3N0cmluZyB2XG5sZXQgY2hhciB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJUNcIikgdlxubGV0IHN0cmluZyB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJVNcIikgdlxubGV0IGZsb2F0IHYgPSBjc3QgfnRvX3N0cmluZzpGbG9hdC50b19zdHJpbmcgdlxubGV0IGludDMyIHYgPSBjc3QgfnRvX3N0cmluZzpJbnQzMi50b19zdHJpbmcgdlxubGV0IGludDY0IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQ2NC50b19zdHJpbmcgdlxubGV0IG5hdGl2ZWludCB2ID0gY3N0IH50b19zdHJpbmc6TmF0aXZlaW50LnRvX3N0cmluZyB2XG5sZXQgYm9vbCB2ID0gY3N0IH50b19zdHJpbmc6Qm9vbC50b19zdHJpbmcgdlxuXG5sZXQgYm9vbCcgKFQgZnVuYykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFwidHJ1ZVwiIC0+IGZ1bmMgY3R4IGxvYyB0cnVlIGtcbiAgICAgIHwgXCJmYWxzZVwiIC0+IGZ1bmMgY3R4IGxvYyBmYWxzZSBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJCb29sXCIpXG5cbmxldCBmYWxzZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZhbHNlXCIpXG5cbmxldCB0cnVlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnVlXCIpXG5cbmxldCBuaWwgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIltdXCIpXG5cbmxldCAoIF46OiApIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHgwIDo6IHgxIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCI6OlwiKVxuXG5sZXQgbm9uZSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25lXCIpXG5cbmxldCBzb21lIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSB4MCAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlNvbWVcIilcblxubGV0IHBhaXIgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MikgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBrKVxuXG5sZXQgKCAqKiApID0gcGFpclxuXG5sZXQgdHJpcGxlIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyLCB4MykgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgaylcblxubGV0IGFsdCAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBiYWNrdXAgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICB0cnkgZjEgY3R4IGxvYyB4IGtcbiAgICAgIHdpdGggZTEgLT4gKFxuICAgICAgICBsZXQgbTEgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwO1xuICAgICAgICB0cnkgZjIgY3R4IGxvYyB4IGtcbiAgICAgICAgd2l0aCBlMiAtPlxuICAgICAgICAgIGxldCBtMiA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgICBpZiBtMSA+PSBtMiB0aGVuIChcbiAgICAgICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggbTE7XG4gICAgICAgICAgICByYWlzZSBlMSlcbiAgICAgICAgICBlbHNlIHJhaXNlIGUyKSlcblxubGV0ICggfHx8ICkgPSBhbHRcbmxldCBtYXAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgaykpXG5sZXQgbWFwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBsb2MgaykpXG5sZXQgbWFwX3Jlc3VsdCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIChmdW5jIGN0eCBsb2MgeCBrKSlcbmxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG5sZXQgbWFwMCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayBmKSlcbmxldCBtYXAxIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGEpKSlcblxubGV0IG1hcDIgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBhIGIpKSlcblxubGV0IG1hcDAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIChmIGxvYykpKVxuXG5sZXQgbWFwMScgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgbG9jIGEpKSlcblxubGV0IG1hcDInIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgbG9jIGEgYikpKVxuXG5sZXQgbWFwX3ZhbHVlIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiB4KSBrKVxubGV0IG1hcF92YWx1ZScgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIGxvYyB4KSBrKVxuXG5sZXQgYWx0X29wdGlvbiBzb21lIG5vbmUgPVxuICBhbHQgKG1hcDEgc29tZSB+ZjooZnVuIHggLT4gU29tZSB4KSkgKG1hcDAgbm9uZSB+ZjpOb25lKVxuXG5sZXQgbWFueSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgbCBrIC0+XG4gICAgICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBrIChMaXN0LnJldiBhY2N1KVxuICAgICAgICB8IHggOjogeHMgLT4gZiBjdHggbG9jIHggKGZ1biB4IC0+IGF1eCAoeCA6OiBhY2N1KSB4cylcbiAgICAgIGluXG4gICAgICBhdXggW10gbClcblxubGV0IGxvYyAoVCBmKSA9IFQgKGZ1biBjdHggX2xvYyAoeCA6IF8gTG9jLnQpIGsgLT4gZiBjdHggeC5sb2MgeC50eHQgaylcbmxldCBwYWNrMCB0ID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgKCkpXG5sZXQgcGFjazIgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgLT4gZiAoeCwgeSkpXG5sZXQgcGFjazMgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgeiAtPiBmICh4LCB5LCB6KSlcblxuaW5jbHVkZSBBc3RfcGF0dGVybl9nZW5lcmF0ZWRcblxubGV0IGVjaGFyIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IGVzdHJpbmcgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgZWZsb2F0IHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IHBjaGFyIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IHBzdHJpbmcgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgcGZsb2F0IHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IGludCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChpbnRfb2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50MzInIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50MzIub2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50NjQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50NjQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBuYXRpdmVpbnQnIChUIGYpID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoTmF0aXZlaW50Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgY29uc3RfaW50IHQgPSBwY29uc3RfaW50ZWdlciAoaW50JyB0KSBub25lXG5sZXQgY29uc3RfaW50MzIgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQzMicgdCkgKHNvbWUgKGNoYXIgJ2wnKSlcbmxldCBjb25zdF9pbnQ2NCB0ID0gcGNvbnN0X2ludGVnZXIgKGludDY0JyB0KSAoc29tZSAoY2hhciAnTCcpKVxubGV0IGNvbnN0X25hdGl2ZWludCB0ID0gcGNvbnN0X2ludGVnZXIgKG5hdGl2ZWludCcgdCkgKHNvbWUgKGNoYXIgJ24nKSlcbmxldCBlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBlaW50MzIgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgZWludDY0IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IGVuYXRpdmVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHBpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IHBpbnQzMiB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBwaW50NjQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgcG5hdGl2ZWludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgc2luZ2xlX2V4cHJfcGF5bG9hZCB0ID0gcHN0ciAocHN0cl9ldmFsIHQgbmlsIF46OiBuaWwpXG5sZXQgbm9fbGFiZWwgdCA9IGNzdCBBc3R0eXBlcy5Ob2xhYmVsIH50b19zdHJpbmc6KGZ1biBfIC0+IFwiTm9sYWJlbFwiKSAqKiB0XG5sZXQgZWJvb2wgdCA9IHBleHBfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5sZXQgcGJvb2wgdCA9IHBwYXRfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5cbmxldCBleHRlbnNpb24gKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKChuYW1lIDogXyBMb2MudCksIHBheWxvYWQpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IG5hbWUubG9jIG5hbWUudHh0IGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyBwYXlsb2FkIGsgaW5cbiAgICAgIGspXG5cbmxldCByZWMgcGFyc2VfZWxpc3QgKGUgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbikgYWNjID1cbiAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzO1xuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBOb25lKSAtPiBMaXN0LnJldiBhY2NcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgYXJnKSAtPiAoXG4gICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXJnLnBleHBfYXR0cmlidXRlcztcbiAgICAgIG1hdGNoIGFyZy5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX3R1cGxlIFsgaGQ7IHRsIF0gLT4gcGFyc2VfZWxpc3QgdGwgKGhkIDo6IGFjYylcbiAgICAgIHwgXyAtPiBmYWlsIGFyZy5wZXhwX2xvYyBcImxpc3RcIilcbiAgfCBfIC0+IGZhaWwgZS5wZXhwX2xvYyBcImxpc3RcIlxuXG5sZXQgZWxpc3QgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCBsID0gcGFyc2VfZWxpc3QgZSBbXSBpblxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgKExpc3QubWFwIGwgfmY6KGZ1biB4IC0+IGYgY3R4IHguUGFyc2V0cmVlLnBleHBfbG9jIHggKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBlc2VxdWVuY2UgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCByZWMgcGFyc2Vfc2VxIGV4cHIgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGV4cHIsIG5leHQpIC0+IHBhcnNlX3NlcSBuZXh0IChleHByIDo6IGFjYylcbiAgICAgICAgfCBfIC0+IGV4cHIgOjogYWNjXG4gICAgICBpblxuICAgICAga1xuICAgICAgICAoTGlzdC5yZXZfbWFwIChwYXJzZV9zZXEgZSBbXSkgfmY6KGZ1biBleHByIC0+XG4gICAgICAgICAgICAgZiBjdHggZXhwci5wZXhwX2xvYyBleHByIChmdW4geCAtPiB4KSkpKVxuXG5sZXQgb2ZfZnVuYyBmID0gVCBmXG5sZXQgdG9fZnVuYyAoVCBmKSA9IGZcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcG9seV9lcXVhbCBhIGIgPVxuICBsZXQgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogXyAtPiB0XG4gIGVuZCBpblxuICBTdGRwcHguUG9seS5lcXVhbCAoUG9seS5UIGEpIChQb2x5LlQgYilcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gdFxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIHRcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gdFxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENsYXNzX2luZm9zIDogXyBjbGFzc19pbmZvcyB0XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gdFxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gdFxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gdFxuICAgIHwgSW5jbHVkZV9pbmZvcyA6IF8gaW5jbHVkZV9pbmZvcyB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IFZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIHRcbiAgICB8IE1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgdFxuICAgIHwgUHN0cl9ldmFsIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHN0cl9leHRlbnNpb24gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc2lnX2V4dGVuc2lvbiA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFJ0YWcgOiByb3dfZmllbGQgdFxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgOiBvYmplY3RfZmllbGQgdFxuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbiA9IExhYmVsX2RlY2xhcmF0aW9uXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2RlY2xhcmF0aW9uID0gVHlwZV9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9leHRlbnNpb24gPSBUeXBlX2V4dGVuc2lvblxuICBsZXQgdHlwZV9leGNlcHRpb24gPSBUeXBlX2V4Y2VwdGlvblxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gPSBWYWx1ZV9kZXNjcmlwdGlvblxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjbGFzc19pbmZvcyA9IENsYXNzX2luZm9zXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uID0gTW9kdWxlX2RlY2xhcmF0aW9uXG4gIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gIGxldCBvcGVuX2Rlc2NyaXB0aW9uID0gT3Blbl9kZXNjcmlwdGlvblxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IEluY2x1ZGVfaW5mb3NcbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IHZhbHVlX2JpbmRpbmcgPSBWYWx1ZV9iaW5kaW5nXG4gIGxldCBtb2R1bGVfYmluZGluZyA9IE1vZHVsZV9iaW5kaW5nXG4gIGxldCBwc3RyX2V2YWwgPSBQc3RyX2V2YWxcbiAgbGV0IHBzdHJfZXh0ZW5zaW9uID0gUHN0cl9leHRlbnNpb25cbiAgbGV0IHBzaWdfZXh0ZW5zaW9uID0gUHNpZ19leHRlbnNpb25cbiAgbGV0IHJ0YWcgPSBSdGFnXG4gIGxldCBvYmplY3RfdHlwZV9maWVsZCA9IE9iamVjdF90eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9wc3RyX2V2YWwgc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V2YWwgKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V2YWxcIlxuXG4gIGxldCBnZXRfcHN0cl9leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X3BzaWdfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc2lnX2Rlc2Mgd2l0aFxuICAgIHwgUHNpZ19leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc2lnX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHgucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHgucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geC5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB4LnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB4LnB0eWV4bl9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geC5wZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFBhdHRlcm4gLT4geC5wcGF0X2F0dHJpYnV0ZXNcbiAgICB8IENvcmVfdHlwZSAtPiB4LnB0eXBfYXR0cmlidXRlc1xuICAgIHwgRXhwcmVzc2lvbiAtPiB4LnBleHBfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geC5wdmFsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGUgLT4geC5wY3R5X2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geC5wY3RmX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2luZm9zIC0+IHgucGNpX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2V4cHIgLT4geC5wY2xfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZmllbGQgLT4geC5wY2ZfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGUgLT4geC5wbXR5X2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB4LnBtZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB4LnBtdGRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB4LnBtc19hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geC5waW5jbF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZXhwciAtPiB4LnBtb2RfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfYmluZGluZyAtPiB4LnB2Yl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB4LnBtYl9hdHRyaWJ1dGVzXG4gICAgfCBQc3RyX2V2YWwgLT4gc25kIChnZXRfcHN0cl9ldmFsIHgpXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc3RyX2V4dGVuc2lvbiB4KVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gc25kIChnZXRfcHNpZ19leHRlbnNpb24geClcbiAgICB8IFJ0YWcgLT4geC5wcmZfYXR0cmlidXRlc1xuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geC5wb2ZfYXR0cmlidXRlc1xuXG4gIGxldCBzZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2luZm9zIC0+IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZXhwciAtPiB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBzdHJfZXZhbCAtPlxuICAgICAgICB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGdldF9wc3RyX2V2YWwgeCB8PiBmc3QsIGF0dHJzKSB9XG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGdldF9wc3RyX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGdldF9wc2lnX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBSdGFnIC0+IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4gXCJsYWJlbCBkZWNsYXJhdGlvblwiXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IFwidHlwZSBleHRlbnNpb25cIlxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4gXCJ0eXBlIGV4Y2VwdGlvblwiXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gXCJleHRlbnNpb24gY29uc3RydWN0b3JcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IFwidmFsdWVcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ2xhc3NfaW5mb3MgLT4gXCJjbGFzcyBkZWNsYXJhdGlvblwiXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBcIm1vZHVsZSBzdWJzdGl0dXRpb25cIlxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiBcImluY2x1ZGVcIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IFwidmFsdWUgYmluZGluZ1wiXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiBcIm1vZHVsZSBiaW5kaW5nXCJcbiAgICB8IFBzdHJfZXZhbCAtPiBcInRvcGxldmVsIGV4cHJlc3Npb25cIlxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBleHRlbnNpb25cIlxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBzaWduYXR1cmUgZXh0ZW5zaW9uXCJcbiAgICB8IFJ0YWcgLT4gXCJwb2x5bW9ycGhpYyB2YXJpYW50IHRhZ1wiXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiBcIm9iamVjdCB0eXBlIGZpZWxkXCJcblxuICAoKlxuICBsZXQgcGF0dGVybiA6IHR5cGUgYSBiIGMgZC4gYSB0XG4gICAgLT4gKGF0dHJpYnV0ZXMsIGIsIGMpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYywgZCkgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBiLCBkKSBBc3RfcGF0dGVybi50ID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uICAgICAgIC0+IEFzdF9wYXR0ZXJuLnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBBc3RfcGF0dGVybi5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gICAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAgIC0+IEFzdF9wYXR0ZXJuLnBleHRfYXR0cmlidXRlc1xuKilcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxubW9kdWxlIEZsb2F0aW5nX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcblxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGUgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgdCB4ID1cbiAgICBtYXRjaCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgdCB4IHdpdGhcbiAgICB8IFNvbWUgYSAtPiBhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZVwiXG5cbiAgbGV0IHJlcGxhY2VfYnlfZHVtbXkgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGEgPVxuICAgIGxldCBkdW1teV9leHQgPSAoeyB0eHQgPSBcIlwiOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sIFBTdHIgW10pIGluXG4gICAgZnVuIHQgeCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG50eXBlIHBhY2tlZF9jb250ZXh0ID1cbiAgfCBPbl9pdGVtIDogXyBDb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcbiAgfCBGbG9hdGluZyA6IF8gRmxvYXRpbmdfY29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG5cbnR5cGUgXyBwYXlsb2FkX3BhcnNlciA9XG4gIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgKHBheWxvYWQsICdhLCAnYikgQXN0X3BhdHRlcm4udFxuICAgICAgKiAoYXR0cl9sb2M6TG9jYXRpb24udCAtPiBuYW1lX2xvYzpMb2NhdGlvbi50IC0+ICdhKVxuICAgICAgLT4gJ2IgcGF5bG9hZF9wYXJzZXJcblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbn1cblxudHlwZSBwYWNrZWQgPSBUIDogKF8sIF8pIHQgLT4gcGFja2VkXG5cbmxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcbmxldCBjb250ZXh0IHQgPSB0LmNvbnRleHRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImF0dHJpYnV0ZVwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1bmN0aW9uXG4gICAgfCBPbl9pdGVtIHQgLT4gU29tZSAoQ29udGV4dC5kZXNjIHQpXG4gICAgfCBGbG9hdGluZyB0IC0+IFNvbWUgKEZsb2F0aW5nX2NvbnRleHQuZGVzYyB0IF4gXCIgKGZsb2F0aW5nKVwiKSlcblxubGV0IGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAge1xuICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgIGNvbnRleHQ7XG4gICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgfVxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gaylcblxubGV0IGRlY2xhcmVfd2l0aF9uYW1lX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jIC0+XG4gICAgICBrIH5uYW1lX2xvYylcblxubGV0IGRlY2xhcmVfd2l0aF9hdHRyX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jIH5uYW1lX2xvYzpfIC0+XG4gICAgICBrIH5hdHRyX2xvYylcblxudHlwZSAnYSBmbGFnID0gKCdhLCB1bml0KSB0XG5cbmxldCBkZWNsYXJlX2ZsYWcgbmFtZSBjb250ZXh0ID1cbiAgbGV0IHBheWxvYWRfcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgaW5cbiAgbGV0IGNvbnRpbnVhdGlvbiB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyA9ICgpIGluXG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF5bG9hZF9wYXR0ZXJuIGNvbnRpbnVhdGlvblxuXG5tb2R1bGUgQXR0cmlidXRlX3RhYmxlID0gU3RkbGliLkhhc2h0YmwuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsb2NcblxuICBsZXQgbm9ybWFsaXplIHQgPSB7IHQgd2l0aCBsb2MgPSB7IHQubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IH1cbiAgbGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCAobm9ybWFsaXplIHQpXG4gIGxldCBlcXVhbCB4IHkgPSBQb2x5LmVxdWFsIChub3JtYWxpemUgeCkgKG5vcm1hbGl6ZSB5KVxuZW5kKVxuXG5sZXQgbm90X3NlZW4gPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIDEyOFxubGV0IG1hcmtfYXNfc2VlbiB7IGF0dHJfbmFtZTsgXyB9ID0gQXR0cmlidXRlX3RhYmxlLnJlbW92ZSBub3Rfc2VlbiBhdHRyX25hbWVcbmxldCBtYXJrX2FzX2hhbmRsZWRfbWFudWFsbHkgPSBtYXJrX2FzX3NlZW5cblxubGV0IGV4cGxpY2l0bHlfZHJvcCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgPSBtYXJrX2FzX3NlZW5cbiAgZW5kXG5cbmxldCBnZXRfaW50ZXJuYWwgPVxuICBsZXQgcmVjIGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgbG9uZ2VzdF9tYXRjaCA9XG4gICAgbWF0Y2ggYXR0cmlidXRlcyB3aXRoXG4gICAgfCBbXSAtPiBPayBsb25nZXN0X21hdGNoXG4gICAgfCAoeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gYXMgYXR0cikgOjogcmVzdCAtPlxuICAgICAgICBpZiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQgdGhlblxuICAgICAgICAgIG1hdGNoIGxvbmdlc3RfbWF0Y2ggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgfCBTb21lIHsgYXR0cl9uYW1lID0gbmFtZSc7IF8gfSAtPlxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBuYW1lLnR4dCBpblxuICAgICAgICAgICAgICBsZXQgbGVuJyA9IFN0cmluZy5sZW5ndGggbmFtZScudHh0IGluXG4gICAgICAgICAgICAgIGlmIGxlbiA+IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgICAgIGVsc2UgaWYgbGVuIDwgbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiRHVwbGljYXRlZCBhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICBpblxuICBmdW4gdCBhdHRyaWJ1dGVzIC0+IGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgTm9uZVxuXG5sZXQgY29udmVydCA/KGRvX21hcmtfYXNfc2VlbiA9IHRydWUpIHBhdHRlcm4gYXR0ciA9XG4gIGlmIGRvX21hcmtfYXNfc2VlbiB0aGVuIG1hcmtfYXNfc2VlbiBhdHRyO1xuICBsZXQgKFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKSkgPSBwYXR0ZXJuIGluXG4gIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuXG4gICAgKENvbW1vbi5sb2Nfb2ZfcGF5bG9hZCBhdHRyKVxuICAgIGF0dHIuYXR0cl9wYXlsb2FkXG4gICAgKGsgfmF0dHJfbG9jOmF0dHIuYXR0cl9sb2Mgfm5hbWVfbG9jOmF0dHIuYXR0cl9uYW1lLmxvYylcblxubGV0IGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgP2RvX21hcmtfYXNfc2VlbiA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcblxubGV0IGdldCB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgbWF0Y2ggZ2V0X3JlcyA/bWFya19hc19zZWVuIHQgeCB3aXRoXG4gIHwgT2sgKFNvbWUgKCkpIC0+IE9rIHRydWVcbiAgfCBPayBOb25lIC0+IE9rIGZhbHNlXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcblxubGV0IGhhc19mbGFnIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBjb25zdW1lX3JlcyB0IHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgbGV0IGF0dHJzID0gTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKGF0dHIgPT0gYXR0cicpKSBpblxuICAgICAgbGV0IHggPSBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGF0dHJzIGluXG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSAoeCwgdmFsdWUpXG5cbmxldCBjb25zdW1lIHQgeCA9XG4gIGNvbnN1bWVfcmVzIHQgeFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcmVtb3ZlX3NlZW5fcmVzICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE9rIGFjY1xuICAgIHwgVCB0IDo6IHJlc3QgLT5cbiAgICAgICAgaWYgQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCB0aGVuXG4gICAgICAgICAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgICAgICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgfCBTb21lIGF0dHIgLT5cbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICAgICAgICBpZiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWUgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgbG9vcCAoYXR0ciA6OiBhY2MpIHJlc3RcbiAgICAgICAgZWxzZSBsb29wIGFjYyByZXN0XG4gIGluXG4gIGxvb3AgW10gcGFja2VkcyA+PnwgZnVuIG1hdGNoZWQgLT5cbiAgbGV0IGF0dHJzID1cbiAgICBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoTGlzdC5tZW1xIH5zZXQ6bWF0Y2hlZCBhdHRyJykpXG4gIGluXG4gIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzXG5cbmxldCByZW1vdmVfc2VlbiAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICByZW1vdmVfc2Vlbl9yZXMgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBwYXR0ZXJuX3JlcyB0IHAgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGYgPSBBc3RfcGF0dGVybi50b19mdW5jIHAgaW5cbiAgQXN0X3BhdHRlcm4ub2ZfZnVuYyAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBjb25zdW1lX3JlcyB0IHggPj58IGZ1biByZXMgLT5cbiAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZiBjdHggbG9jIHggKGsgTm9uZSlcbiAgICAgIHwgU29tZSAoeCwgdikgLT4gZiBjdHggbG9jIHggKGsgKFNvbWUgdikpKVxuXG5sZXQgcGF0dGVybiB0IHAgPVxuICBwYXR0ZXJuX3JlcyB0IHAgfD4gQXN0X3BhdHRlcm4udG9fZnVuY1xuICB8PiAoZnVuIGYgYSBiIGMgZCAtPlxuICAgICAgIGYgYSBiIGMgZFxuICAgICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpKVxuICB8PiBBc3RfcGF0dGVybi5vZl9mdW5jXG5cbm1vZHVsZSBGbG9hdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IEZsb2F0aW5nX2NvbnRleHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xuICB9XG5cbiAgbGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspO1xuICAgIH1cblxuICBsZXQgY29udmVydF9yZXMgdHMgeCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgbWF0Y2ggdHMgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgeyBjb250ZXh0OyBfIH0gOjogXyAtPiAoXG4gICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIHRzIH5mOihmdW4gdCAtPiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0KSk7XG4gICAgICAgIGxldCBhdHRyID0gQ29udGV4dC5nZXRfYXR0cmlidXRlIGNvbnRleHQgeCBpblxuICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICAgICAgfCBbIHQgXSAtPiBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICBcIk11bHRpcGxlIG1hdGNoIGZvciBmbG9hdGluZyBhdHRyaWJ1dGVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgICAgICBbXSApKVxuXG4gIGxldCBjb252ZXJ0IHRzIHggPVxuICAgIGNvbnZlcnRfcmVzIHRzIHhcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIGlmXG4gICAgKG5vdFxuICAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBBdHRyaWJ1dGUgbmFtZS50eHRcbiAgICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpKVxuICAgICYmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZVxuICB0aGVuXG4gICAgbGV0IGFsbG93bGlzdCA9IE5hbWUuQWxsb3dsaXN0ZWQuZ2V0X2F0dHJpYnV0ZV9saXN0ICgpIGluXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgY29udGV4dCB+YWxsb3dsaXN0XG4gICAgICAgIFwiQXR0cmlidXRlIGAlcycgd2FzIG5vdCB1c2VkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBfID1cbiAgICAgIFtcbiAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICBdXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLlxuICAgICAgICBhIENvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBhdHRyc1xuICAgICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0ZWRfZXJyb3JzKVxuICAgICAgICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXSwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfZmxvYXRpbmcgOiB0eXBlIGEuXG4gICAgICAgIGEgRmxvYXRpbmcuQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgY29udGV4dCBub2RlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBTb21lICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgIChGbG9hdGluZy5Db250ZXh0LnJlcGxhY2VfYnlfZHVtbXkgY29udGV4dCBub2RlLCBjb2xsZWN0ZWRfZXJyb3JzKVxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTGFiZWxfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leHRlbnNpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4Y2VwdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4Y2VwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHRlbnNpb25fY29uc3RydWN0b3IgeCBpblxuICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBQYXR0ZXJuIHggaW5cbiAgICAgIHN1cGVyI3BhdHRlcm4gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29yZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXhwcmVzc2lvbiB4IGluXG4gICAgICBzdXBlciNleHByZXNzaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZXhwciB4IGluXG4gICAgICBzdXBlciNjbGFzc19leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9leHByIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGggUnRhZyBfIC0+IHNlbGYjY2hlY2tfbm9kZSBSdGFnIHggfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNyb3dfZmllbGQgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpIC0+XG4gICAgICAgICAgICBsZXQgZmllbGRzLCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KHNlbGYjY2hlY2tfbm9kZSBPYmplY3RfdHlwZV9maWVsZClcbiAgICAgICAgICAgICAgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZyksIExpc3QuY29uY2F0IGVycm9ycylcbiAgICAgICAgfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFN0cnVjdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V2YWwgaXRlbVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTaWduYXR1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc2lnX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcbiAgZW5kXG5cbmxldCBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIG1hdGNoIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmFpc2VfaWZfbm9uX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLiBhIENvbnRleHQudCAtPiBhIC0+IGEgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gbm9kZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIExpc3QuaXRlciBhdHRyc1xuICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgICAgICAgICAgICBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyKTtcbiAgICAgICAgICAgIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2xhYmVsX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4dGVuc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXhjZXB0aW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3BhdHRlcm4geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHByZXNzaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZV9maWVsZCB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcm93X2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcbiAgZW5kXG5cbmxldCByZXNldF9jaGVja3MgKCkgPSBBdHRyaWJ1dGVfdGFibGUuY2xlYXIgbm90X3NlZW5cblxubGV0IGNvbGxlY3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpXG4gICAgICAgID1cbiAgICAgIGxldCBsb2MgPSBDb21tb24ubG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUuYWRkIG5vdF9zZWVuIG5hbWUgbG9jXG4gIGVuZFxuXG5sZXQgY29sbGVjdF91bnNlZW5fZXJyb3JzICgpID1cbiAgbGV0IGZhaWwgbmFtZSBsb2MgYWNjID1cbiAgICBsZXQgdHh0ID0gbmFtZS50eHQgaW5cbiAgICBpZiBub3QgKE5hbWUuaWdub3JlX2NoZWNrcyB0eHQpIHRoZW5cbiAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBzaWxlbnRseSBkcm9wcGVkXCIgdHh0XG4gICAgICA6OiBhY2NcbiAgICBlbHNlIGFjY1xuICBpblxuICBBdHRyaWJ1dGVfdGFibGUuZm9sZCBmYWlsIG5vdF9zZWVuIFtdXG5cbmxldCBjaGVja19hbGxfc2VlbiAoKSA9XG4gIG1hdGNoIGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gPVxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLnJlbW92ZSB0YWJsZSBuYW1lXG4gIGVuZFxuXG5sZXQgY29weV9vZl9ub3Rfc2VlbiAoKSA9XG4gIGxldCBjb3B5ID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAoQXR0cmlidXRlX3RhYmxlLmxlbmd0aCBub3Rfc2VlbikgaW5cbiAgQXR0cmlidXRlX3RhYmxlLml0ZXIgKEF0dHJpYnV0ZV90YWJsZS5hZGQgY29weSkgbm90X3NlZW47XG4gIGNvcHlcblxubGV0IGRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSBzdCA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3N0cnVjdHVyZSBzdDtcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cblxubGV0IGRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSBzZyA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3NpZ25hdHVyZSBzZztcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIGZpbGVfcGF0aCA6IHN0cmluZztcbiAgbWFpbl9tb2R1bGVfbmFtZSA6IHN0cmluZztcbiAgc3VibW9kdWxlX3BhdGggOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIGVuY2xvc2luZ19tb2R1bGUgOiBzdHJpbmc7XG4gIGVuY2xvc2luZ192YWx1ZSA6IHN0cmluZyBvcHRpb247XG4gIHZhbHVlIDogc3RyaW5nIGxvYyBvcHRpb247XG4gIGluX2V4cHIgOiBib29sO1xufVxuXG5sZXQgdG9wX2xldmVsIH5maWxlX3BhdGggPVxuICBsZXQgbWFpbl9tb2R1bGVfbmFtZSA9XG4gICAgZmlsZV9wYXRoIHw+IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSB8PiBTdGRsaWIuRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvblxuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICAgZmlsZS4gSWYgaXQgaXMgbm90LCB3ZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBhc1xuICAgICAgICAgIHNvdXJjZSBjb2RlLlxuXG4gICAgICAgICAgVGhlIGNvbXBpbGVyIGp1c3QgZG9lcyBbc2Vla19vbiAwXSBpbiB0aGlzIGNhc2UsIGhvd2V2ZXIgdGhpcyBkb2Vzbid0IHdvcmsgd2hlblxuICAgICAgICAgIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG5cbiAgICAgICAgICBXaGF0IHdlIGRvIGluc3RlYWQgaXMgY3JlYXRlIGEgbGV4aW5nIGJ1ZmZlciBmcm9tIHRoZSBpbnB1dCBjaGFubmVsIGFuZCBwcmUtZmlsbFxuICAgICAgICAgIGl0IHdpdGggd2hhdCB3ZSByZWFkIHRvIGRvIHRoZSB0ZXN0LiAqKVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHByZWZpeF9yZWFkX2Zyb21fc291cmNlIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnByZWZpeF9yZWFkX2Zyb21fc291cmNlIH5zcmNfcG9zOjBcbiAgICAgICAgfmRzdDpsZXhidWYubGV4X2J1ZmZlciB+ZHN0X3BvczowIH5sZW47XG4gICAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGVuO1xuICAgICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgICAgeyBwb3NfZm5hbWUgPSBpbnB1dF9uYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgZnJvbV9jaGFubmVsIGNoIH5pbnB1dF9raW5kID1cbiAgICBsZXQgaGFuZGxlX25vbl9iaW5hcnkgcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgPVxuICAgICAgbWF0Y2ggaW5wdXRfa2luZCB3aXRoXG4gICAgICB8IFBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgLT5cbiAgICAgICAgICBwYXJzZV9zb3VyY2VfY29kZSB+a2luZCB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgY2hcbiAgICAgIHwgTmVjZXNzYXJpbHlfYmluYXJ5IC0+IEVycm9yIE5vdF9hX2JpbmFyeV9hc3RcbiAgICBpblxuICAgICgqIE1hcnNoYWxsZWQgQVNUIG11c3QgYmUgcmVhZCBpbiBiaW5hcnkgbW9kZS4gRXZlbiB0aG91Z2ggd2UgZG9uJ3Qga25vd1xuICAgICAgIGJlZm9yZSByZWFkaW5nIHRoZSBtYWdpYyBudW1iZXIgd2hlbiB0aGUgZmlsZSBoYXMgYSBtYXJzaGFsbGVkIEFTVCxcbiAgICAgICBpdCBpcyBzYWZlIHRvIHJlYWQgc291cmNlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAqKVxuICAgIHNldF9iaW5hcnlfbW9kZV9pbiBjaCB0cnVlO1xuICAgIG1hdGNoIHJlYWRfbWFnaWMgY2ggd2l0aFxuICAgIHwgRXJyb3IgcyAtPiBoYW5kbGVfbm9uX2JpbmFyeSBzXG4gICAgfCBPayBzIC0+IChcbiAgICAgICAgbWF0Y2ggRmluZF92ZXJzaW9uLmZyb21fbWFnaWMgcyB3aXRoXG4gICAgICAgIHwgSW50ZiAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW50ZiAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc2lnbmF0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBJbXBsIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbXBsIChJbnB1dF90b19wcHhsaWIuY29weV9zdHJ1Y3R1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IFVua25vd24gLT5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICB8fCBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgIHRoZW4gRXJyb3IgKFVua25vd25fdmVyc2lvbiAocywgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKVxuICAgICAgICAgICAgZWxzZSBoYW5kbGVfbm9uX2JpbmFyeSBzKVxuXG4gIGxldCByZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBpbnB1dF9zb3VyY2Ugd2l0aFxuICAgICAgfCBTdGRpbiAtPlxuICAgICAgICAgIHNldF9iaW5hcnlfbW9kZV9pbiBzdGRpbiB0cnVlO1xuICAgICAgICAgIGZyb21fY2hhbm5lbCBzdGRpbiB+aW5wdXRfa2luZFxuICAgICAgfCBGaWxlIGZuIC0+IEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQpXG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IHdyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbik7IGFzdCB9XG4gICAgICB+YWRkX3BweF9jb250ZXh0ID1cbiAgICBsZXQgbW9kdWxlIFBweGxpYl90b19pbnB1dCA9IENvbnZlcnQgKEpzKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBsZXQgbW9kdWxlIE9jYW1sX3RvX2lucHV0ID0gQ29udmVydCAoQ29tcGlsZXJfdmVyc2lvbikgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbWF0Y2ggYXN0IHdpdGhcbiAgICB8IEludGYgc2cgLT5cbiAgICAgICAgbGV0IHNnID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zaWduYXR1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc2dcbiAgICB8IEltcGwgc3QgLT5cbiAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc3RcblxuICBtb2R1bGUgUmVhZF9iaW4gPSBzdHJ1Y3RcbiAgICB0eXBlIGFzdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcbiAgICB0eXBlIHQgPSB7IGFzdCA6IGFzdDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgICBsZXQgcmVhZF9iaW5hcnkgZm4gPVxuICAgICAgbWF0Y2hcbiAgICAgICAgSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZDpOZWNlc3NhcmlseV9iaW5hcnkpXG4gICAgICB3aXRoXG4gICAgICB8IE9rIHsgYXN0OyBpbnB1dF9uYW1lOyBfIH0gLT5cbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgICB8IEltcGwgc3RydWN0dXJlIC0+IEltcGwgc3RydWN0dXJlXG4gICAgICAgICAgICB8IEludGYgc2lnbmF0dXJlIC0+IEludGYgc2lnbmF0dXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IGFzdDsgaW5wdXRfbmFtZSB9XG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKHJlYWRfZXJyb3JfdG9fc3RyaW5nIGUpXG5cbiAgICBsZXQgZ2V0X2FzdCB0ID0gdC5hc3RcbiAgICBsZXQgZ2V0X2lucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3lzdGVtID0gc3RydWN0XG4gIGxldCBydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQgfm91dHB1dCA9XG4gICAgbGV0IGNvbW1hbmQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyA+ICVzXCIgcHBcbiAgICAgICAgKGlmIFN0cmluZy5lcXVhbCBpbnB1dCBcIi1cIiB0aGVuIFwiXCIgZWxzZSBTdGRsaWIuRmlsZW5hbWUucXVvdGUgaW5wdXQpXG4gICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgb3V0cHV0KVxuICAgIGluXG4gICAgaWYgU3RkbGliLlN5cy5jb21tYW5kIGNvbW1hbmQgPSAwIHRoZW4gT2sgKClcbiAgICBlbHNlIEVycm9yIChjb21tYW5kLCBBc3RfaW8uZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcbm1vZHVsZSBGaWxlbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZVxuXG4oKiBUT0RPOiBtYWtlIHRoZSBcImRlcml2aW5nLlwiIGRlcGVuZCBvbiB0aGUgbWF0Y2hpbmcgYXR0cmlidXRlIG5hbWUuICopXG5sZXQgZW5kX21hcmtlcl9zaWcgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFNpZ25hdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBlbmRfbWFya2VyX3N0ciA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU3RydWN0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgdHlwZSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGdldF9sb2MgOiB0IC0+IExvY2F0aW9uLnRcbiAgdmFsIGVuZF9tYXJrZXIgOiAodCwgdW5pdCkgQXR0cmlidXRlLkZsb2F0aW5nLnRcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpIDogc2lnXG4gICAgdmFsIGFwcGx5IDpcbiAgICAgIDwgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSBULnRcbiAgICAgIDsgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSBULnRcbiAgICAgIDsgLi4gPiAtPlxuICAgICAgdCBULnRcbiAgZW5kXG5cbiAgdmFsIHBhcnNlIDogTGV4aW5nLmxleGJ1ZiAtPiB0IGxpc3RcbiAgdmFsIHBwIDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3NleHAgOiB0IC0+IFNleHAudFxuZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGV4dHJhY3RfcHJlZml4IH5wb3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwicHB4bGliOiBbQEBAQEBAJXNdIGF0dHJpYnV0ZSBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICAoQXR0cmlidXRlLkZsb2F0aW5nLm5hbWUgTS5lbmRfbWFya2VyKSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5GbG9hdGluZy5jb252ZXJ0X3JlcyBbIE0uZW5kX21hcmtlciBdIHggd2l0aFxuICAgICAgICAgIHwgT2sgTm9uZSAtPiBsb29wICh4IDo6IGFjYykgbFxuICAgICAgICAgIHwgT2sgKFNvbWUgKCkpIC0+IE9rIChMaXN0LnJldiBhY2MsIChNLmdldF9sb2MgeCkubG9jX3N0YXJ0KVxuICAgICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgICAgICAgfCBleGNlcHRpb24gRmFpbHVyZSBfIC0+IGxvb3AgKHggOjogYWNjKSBsKVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cbiAgbGV0IHJlbW92ZV9sb2MgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgICBtZXRob2QhIGxvY2F0aW9uIF8gPSBMb2NhdGlvbi5ub25lXG4gICAgICBtZXRob2QhIGxvY2F0aW9uX3N0YWNrIF8gPSBbXVxuICAgIGVuZFxuXG4gIG1vZHVsZSBNX21hcCA9IE0uVHJhbnNmb3JtIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IHJlbW92ZV9sb2MgeCA9IE1fbWFwLmFwcGx5IHJlbW92ZV9sb2MgeFxuICBsZXQgcmVjIGxhc3QgcHJldiA9IGZ1bmN0aW9uIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgZGlmZl9hc3RzIH5nZW5lcmF0ZWQgfnJvdW5kX3RyaXAgPVxuICAgIGxldCB3aXRoX3RlbXBfZmlsZSBmID1cbiAgICAgIEV4bi5wcm90ZWN0eFxuICAgICAgICAoRmlsZW5hbWUudGVtcF9maWxlIFwicHB4bGliXCIgXCJcIilcbiAgICAgICAgfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmZcbiAgICBpblxuICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4xIC0+XG4gICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4yIC0+XG4gICAgICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgIGxldCBkdW1wIGZuIGFzdCA9XG4gICAgICAgICAgICAgICAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZ1biBvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgU2V4cC5wcF9odW0gcHBmIChNLnRvX3NleHAgYXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZHVtcCBmbjEgZ2VuZXJhdGVkO1xuICAgICAgICAgICAgICAgIGR1bXAgZm4yIHJvdW5kX3RyaXA7XG4gICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICBcInBhdGRpZmYgLWFzY2lpIC1hbHQtb2xkIGdlbmVyYXRlZCAtYWx0LW5ldyBcXFxuICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb2sgPVxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcImRpZmYgLS1sYWJlbCBnZW5lcmF0ZWQgLS1sYWJlbCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIG9rIHRoZW4gSW5fY2hhbm5lbC5yZWFkX2FsbCBvdXRcbiAgICAgICAgICAgICAgICBlbHNlIFwiPG5vIGRpZmZlcmVuY2VzIHByb2R1Y2VkIGJ5IGRpZmY+XCIpKSlcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHMgPVxuICAgIG1hdGNoIE0ucGFyc2UgKExleGluZy5mcm9tX3N0cmluZyBzKSB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCByZWMgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZSA9XG4gICAgbWF0Y2ggKGV4cGVjdGVkLCBzb3VyY2UpIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAoKVxuICAgIHwgW10sIHggOjogbCAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IChNLmdldF9sb2MgeCkgd2l0aCBsb2NfZW5kID0gKE0uZ2V0X2xvYyAobGFzdCB4IGwpKS5sb2NfZW5kIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgW11cbiAgICB8IF8sIFtdIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgTG9jYXRpb24ubG9jX2dob3N0ID0gZmFsc2U7IGxvY19zdGFydCA9IGVuZF9wb3M7IGxvY19lbmQgPSBlbmRfcG9zIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgZXhwZWN0ZWRcbiAgICB8IHggOjogZXhwZWN0ZWQsIHkgOjogc291cmNlIC0+XG4gICAgICAgIGxldCBsb2MgPSBNLmdldF9sb2MgeSBpblxuICAgICAgICBsZXQgeCA9IHJlbW92ZV9sb2MgeCBpblxuICAgICAgICBsZXQgeSA9IHJlbW92ZV9sb2MgeSBpblxuICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvdW5kX3RyaXAgPVxuICAgICAgICAgICAgcmVtb3ZlX2xvYyAocGFyc2Vfc3RyaW5nIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgTS5wcCB4KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIFBvbHkuKCA8PiApIHggcm91bmRfdHJpcCB0aGVuXG4gICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgICAgICAgICAgICBcInBweGxpYjogdGhlIGNvcnJlY3RlZCBjb2RlIGRvZXNuJ3Qgcm91bmQtdHJpcC5cXG5cXFxuICAgICAgICAgICAgICAgVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgT0NhbWwgcHJpbnRlcjpcXG5cXFxuICAgICAgICAgICAgICAgJXNcIlxuICAgICAgICAgICAgICAoZGlmZl9hc3RzIH5nZW5lcmF0ZWQ6eCB+cm91bmRfdHJpcCk7XG4gICAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgWyB4IF0pO1xuICAgICAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5cbiAgbGV0IGRvX21hdGNoIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIHNvdXJjZSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZXh0cmFjdF9wcmVmaXggfnBvcyBzb3VyY2UgPj58IGZ1biAoc291cmNlLCBlbmRfcG9zKSAtPlxuICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcbmVuZFxuXG4oKiQqKVxubW9kdWxlIFN0ciA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzdHJfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zdHJcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3N0cnVjdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmltcGxlbWVudGF0aW9uXG4gIGxldCBwcCA9IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZV9pdGVtXG5lbmQpXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbm1vZHVsZSBTaWcgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc2lnbmF0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc2lnX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc2lnXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzaWduYXR1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbnRlcmZhY2VcbiAgbGV0IHBwID0gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlX2l0ZW1cbmVuZClcblxuKCokKilcblxubGV0IG1hdGNoX3N0cnVjdHVyZV9yZXMgPSBTdHIuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3N0cnVjdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc3RydWN0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBtYXRjaF9zaWduYXR1cmVfcmVzID0gU2lnLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zaWduYXR1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3NpZ25hdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxuXG50eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQcHhfaW1wb3J0IDogdHlwZV9kZWNsYXJhdGlvbiB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgUHB4X2ltcG9ydCAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuXG4gIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICBmdW4gYSBiIC0+XG4gICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIENsYXNzX2V4cHIgLT4gRXFcbiAgICB8IENsYXNzX2ZpZWxkLCBDbGFzc19maWVsZCAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZSwgQ2xhc3NfdHlwZSAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgQ2xhc3NfdHlwZV9maWVsZCAtPiBFcVxuICAgIHwgQ29yZV90eXBlLCBDb3JlX3R5cGUgLT4gRXFcbiAgICB8IEV4cHJlc3Npb24sIEV4cHJlc3Npb24gLT4gRXFcbiAgICB8IE1vZHVsZV9leHByLCBNb2R1bGVfZXhwciAtPiBFcVxuICAgIHwgTW9kdWxlX3R5cGUsIE1vZHVsZV90eXBlIC0+IEVxXG4gICAgfCBQYXR0ZXJuLCBQYXR0ZXJuIC0+IEVxXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgU2lnbmF0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCBTdHJ1Y3R1cmVfaXRlbSAtPiBFcVxuICAgIHwgUHB4X2ltcG9ydCwgUHB4X2ltcG9ydCAtPiBFcVxuICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKFBvbHkuKCA8PiApIChUIGEpIChUIGIpKTtcbiAgICAgICAgTmVcblxuICBsZXQgZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbCA9XG4gICAgbWF0Y2ggdHlwZV9kZWNsIHdpdGhcbiAgICB8IHsgcHR5cGVfbWFuaWZlc3QgPSBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gKG5hbWUsIF8pOyBfIH07IF8gfVxuICAgICAgLT5cbiAgICAgICAgbGV0IHZpcnR1YWxfcGF5bG9hZCA9XG4gICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX3R5cGUgfmxvYzp0eXBlX2RlY2wucHR5cGVfbG9jIFJlY3Vyc2l2ZVxuICAgICAgICAgICAgWyB0eXBlX2RlY2wgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0ciA9IFtdIGluXG4gICAgICAgIFNvbWUgKChuYW1lLCBQU3RyIFsgdmlydHVhbF9wYXlsb2FkIF0pLCBhdHRyKVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9leHRlbnNpb24gOiB0eXBlIGEuIGEgdCAtPiBhIC0+IChleHRlbnNpb24gKiBhdHRyaWJ1dGVzKSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBDbGFzc19leHByLCB7IHBjbF9kZXNjID0gUGNsX2V4dGVuc2lvbiBlOyBwY2xfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGU7IHBjZl9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlLCB7IHBjdHlfZGVzYyA9IFBjdHlfZXh0ZW5zaW9uIGU7IHBjdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBlOyBwY3RmX2F0dHJpYnV0ZXMgPSBhOyBfIH1cbiAgICAgIC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDb3JlX3R5cGUsIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gZTsgcHR5cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBFeHByZXNzaW9uLCB7IHBleHBfZGVzYyA9IFBleHBfZXh0ZW5zaW9uIGU7IHBleHBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX2V4cHIsIHsgcG1vZF9kZXNjID0gUG1vZF9leHRlbnNpb24gZTsgcG1vZF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfdHlwZSwgeyBwbXR5X2Rlc2MgPSBQbXR5X2V4dGVuc2lvbiBlOyBwbXR5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFBhdHRlcm4sIHsgcHBhdF9kZXNjID0gUHBhdF9leHRlbnNpb24gZTsgcHBhdF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFBweF9pbXBvcnQsIHR5cGVfZGVjbCAtPiBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlc19yZXMgOlxuICAgICAgdHlwZSBhLlxuICAgICAgYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiAoYSwgTG9jYXRpb24uRXJyb3IudCBOb25FbXB0eUxpc3QudCkgcmVzdWx0ID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENsYXNzX2V4cHIgLT4gT2sgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSB4LnBjbF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4gT2sgeyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSB4LnBjZl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiBPayB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSB4LnBjdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT5cbiAgICAgICAgT2sgeyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0geC5wY3RmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4gT2sgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0geC5wdHlwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IE9rIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IHgucGV4cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4gT2sgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0geC5wbW9kX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiBPayB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSB4LnBtdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4gT2sgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0geC5wcGF0X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBQcHhfaW1wb3J0IC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtZXJnZV9hdHRyaWJ1dGVzX3JlcyB0IHggYXR0cnNcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJleHRlbnNpb25cIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW4gKENvbnRleHQuVCBjdHgpIC0+IFNvbWUgKENvbnRleHQuZGVzYyBjdHgpKVxuXG5tb2R1bGUgTWFrZSAoQ2FsbGJhY2sgOiBzaWdcbiAgdHlwZSAnYSB0XG5lbmQpID1cbnN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHBheWxvYWRfcGFyc2VyID1cbiAgICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgICAgKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQgKiAnYiBDYWxsYmFjay50XG4gICAgICAgIC0+ICgnYSwgJ2MpIHBheWxvYWRfcGFyc2VyXG5cbiAgdHlwZSAoJ2NvbnRleHQsICdwYXlsb2FkKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2NvbnRleHQgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAocGF5bG9hZCwgJ3BheWxvYWQpIHBheWxvYWRfcGFyc2VyO1xuICAgIHdpdGhfYXJnIDogYm9vbDtcbiAgfVxuXG4gIGxldCBkZWNsYXJlIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIHdpdGhfYXJnOmJvb2wgLT5cbiAgICAgIHN0cmluZyAtPlxuICAgICAgYSBDb250ZXh0LnQgLT5cbiAgICAgIChwYXlsb2FkLCAnYiwgJ3BheWxvYWQpIEFzdF9wYXR0ZXJuLnQgLT5cbiAgICAgICdiIENhbGxiYWNrLnQgLT5cbiAgICAgIChhLCAncGF5bG9hZCkgdCA9XG4gICBmdW4gfndpdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgLT5cbiAgICAoKiBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIGNvbGxpc2lvbnMgYmV0d2VlbiBwcHhfaW1wb3J0IGFuZCBjb3JlX3R5cGVcbiAgICAgICBleHRlbnNpb25zICopXG4gICAgKG1hdGNoIGNvbnRleHQgd2l0aFxuICAgIHwgQ29udGV4dC5QcHhfaW1wb3J0IC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgQ29yZV90eXBlKSBuYW1lXG4gICAgfCBDb250ZXh0LkNvcmVfdHlwZSAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIFBweF9pbXBvcnQpIG5hbWVcbiAgICB8IF8gLT4gKCkpO1xuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBFeHRlbnNpb24gcmVnaXN0cmFyIChDb250ZXh0LlQgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICAgICAgd2l0aF9hcmc7XG4gICAgfVxuXG4gIGxldCBmaW5kIHRzIChleHQgOiBleHRlbnNpb24pID1cbiAgICBsZXQgeyB0eHQgPSBuYW1lOyBsb2MgfSA9IGZzdCBleHQgaW5cbiAgICBsZXQgbmFtZSwgYXJnID0gTmFtZS5zcGxpdF9wYXRoIG5hbWUgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IF8gOjogXyA6OiBfIGFzIGwgLT5cbiAgICAgICAgRXJyb3JcbiAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIk11bHRpcGxlIG1hdGNoIGZvciBleHRlbnNpb25zOiAlc1wiXG4gICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICBbXSApXG4gICAgfCBbIHQgXSAtPlxuICAgICAgICBpZiAobm90IHQud2l0aF9hcmcpICYmIE9wdGlvbi5pc19zb21lIGFyZyB0aGVuXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgICAgICAgICAgXCJFeHRlbnNpb24gJXMgZG9lc24ndCBleHBlY3QgYSBwYXRoIGFyZ3VtZW50XCIgbmFtZSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGFyZyA9XG4gICAgICAgICAgICBPcHRpb24ubWFwIGFyZyB+ZjooZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2hpZnQgPSBTdHJpbmcubGVuZ3RoIG5hbWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gbG9jLmxvY19zdGFydCBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR4dCA9IExvbmdpZGVudC5wYXJzZSBzO1xuICAgICAgICAgICAgICAgICAgbG9jID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGxvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhcnQgd2l0aCBwb3NfY251bSA9IHN0YXJ0LnBvc19jbnVtICsgc2hpZnQgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgKFNvbWUgKHQsIGFyZykpXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY3R4IHBhdHQgZlxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjdHggcGF0dCAoZnVuIH5hcmc6XyAtPiBmKVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZmluZCB0cyBleHQgPj49IGZ1biByIC0+XG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+XG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmFyZykgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIFNvbWUgcGF5bG9hZFxuXG4gIGxldCBjb252ZXJ0IHRzIH5sb2MgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubW9kdWxlIE0gPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi50IC0+IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbmVuZClcblxudHlwZSAnYSBleHBhbmRlcl9yZXN1bHQgPSBTaW1wbGUgb2YgJ2EgfCBJbmxpbmUgb2YgJ2EgbGlzdFxuXG5tb2R1bGUgRm9yX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCAnYSBleHBhbmRlcl9yZXN1bHQpIE0udFxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gICAgICAgIHwgU2ltcGxlIHggLT4gU29tZSB4XG4gICAgICAgIHwgSW5saW5lIF8gLT4gZmFpbHdpdGggXCJFeHRlbnNpb24uY29udmVydFwiKVxuXG4gIGxldCBjb252ZXJ0IHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxuICBsZXQgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGggU2ltcGxlIHggLT4gU29tZSBbIHggXSB8IElubGluZSBsIC0+IFNvbWUgbClcblxuICBsZXQgY29udmVydF9pbmxpbmUgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG50eXBlIHQgPSBUIDogXyBGb3JfY29udGV4dC50IC0+IHRcblxubGV0IGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSA6IHR5cGUgYS4gZnVuYzpzdHJpbmcgLT4gYSBDb250ZXh0LnQgLT4gdW5pdCA9XG4gZnVuIH5mdW5jIGN0eCAtPlxuICBtYXRjaCBjdHggd2l0aFxuICB8IENvbnRleHQuQ2xhc3NfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LkNsYXNzX3R5cGVfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LlNpZ25hdHVyZV9pdGVtIC0+ICgpXG4gIHwgQ29udGV4dC5TdHJ1Y3R1cmVfaXRlbSAtPiAoKVxuICB8IGNvbnRleHQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIiVzOiAlcyBjYW4ndCBiZSBpbmxpbmVkXCIgZnVuY1xuICAgICAgICAoQ29udGV4dC5kZXNjIGNvbnRleHQpXG5cbmxldCByZWMgZmlsdGVyX2J5X2NvbnRleHQgOlxuICAgIHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gdCBsaXN0IC0+IGEgRm9yX2NvbnRleHQudCBsaXN0ID1cbiBmdW4gY29udGV4dCBleHBhbmRlcnMgLT5cbiAgbWF0Y2ggZXhwYW5kZXJzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFQgdCA6OiByZXN0IC0+IChcbiAgICAgIG1hdGNoIENvbnRleHQuZXEgY29udGV4dCB0LmNvbnRleHQgd2l0aFxuICAgICAgfCBFcSAtPiB0IDo6IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdFxuICAgICAgfCBOZSAtPiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3QpXG5cbmxldCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIGN0eCAobmFtZSwgXykgPVxuICBpZlxuICAgIG5vdFxuICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEV4dGVuc2lvbiBuYW1lLnR4dFxuICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KVxuICB0aGVuXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgKENvbnRleHQuVCBjdHgpXG4gICAgICAgIFwiRXh0ZW5zaW9uIGAlcycgd2FzIG5vdCB0cmFuc2xhdGVkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgYWNjID1cbiAgICAgIGFjY1xuICAgICAgQCBbXG4gICAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgICAgXVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ29yZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgUGF0dGVybiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBFeHByZXNzaW9uIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0Zl9leHRlbnNpb24gZXh0IC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNmX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFNpZ25hdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU3RydWN0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuICBlbmRcblxubGV0IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3BhdHRlcm5fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2V4cHJlc3Npb25fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cbiAgZW5kXG5cbm1vZHVsZSBWMyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHQgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5lbmRcblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgX19kZWNsYXJlX3BweF9pbXBvcnQgbmFtZSBleHBhbmQgPVxuICAoKiBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byB1bndyYXAgdGhlIHR5cGUgZGVjbGFyYXRpb24gZnJvbSB0aGUgcGF5bG9hZFxuICAgICBhc3NlbWJsZWQgYnkgW0NvbnRleHQuZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uXSAqKVxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX3R5cGUgcmVjdXJzaXZlIChfXyBeOjogbmlsKSBeOjogbmlsKSkgaW5cbiAgVjMuZGVjbGFyZSBuYW1lIENvbnRleHQuUHB4X2ltcG9ydCBwYXR0ZXJuIGV4cGFuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSA9IGRlY2xhcmVcbiAgbGV0IGRlY2xhcmVfaW5saW5lID0gZGVjbGFyZV9pbmxpbmVcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEUgPSBFeHRlbnNpb25cbm1vZHVsZSBFQyA9IEV4dGVuc2lvbi5Db250ZXh0XG5tb2R1bGUgQSA9IEF0dHJpYnV0ZVxubW9kdWxlIEFDID0gQXR0cmlidXRlLkNvbnRleHRcblxubW9kdWxlIFJ1bGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF0dHJfZ3JvdXBfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOlxuICAgICAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgICAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICAgICAnYiBsaXN0IC0+XG4gICAgICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgICAgICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIEF0dHJfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjaWFsX2Z1bmN0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGlkZW50IDogTG9uZ2lkZW50LnQ7XG4gICAgICBleHBhbmQgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbiBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnRfa2luZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEZsb2F0IHwgSW50ZWdlclxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdWZmaXggOiBjaGFyO1xuICAgICAga2luZCA6IENvbnN0YW50X2tpbmQudDtcbiAgICAgIGV4cGFuZCA6IExvY2F0aW9uLnQgLT4gc3RyaW5nIC0+IFBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRXh0ZW5zaW9uIDogRXh0ZW5zaW9uLnQgdFxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uIDogU3BlY2lhbF9mdW5jdGlvbi50IHRcbiAgICAgIHwgQ29uc3RhbnQgOiBDb25zdGFudC50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuXG4gICAgdHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxuICAgIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICAgIGZ1biBhIGIgLT5cbiAgICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgICB8IEV4dGVuc2lvbiwgRXh0ZW5zaW9uIC0+IEVxXG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24sIFNwZWNpYWxfZnVuY3Rpb24gLT4gRXFcbiAgICAgIHwgQ29uc3RhbnQsIENvbnN0YW50IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbCwgQXR0cl9zdHJfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbCwgQXR0cl9zaWdfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0LCBBdHRyX3N0cl90eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCwgQXR0cl9zaWdfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uLCBBdHRyX3N0cl9leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uLCBBdHRyX3NpZ19leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IF8gLT4gTmVcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhIEZpZWxkLnQgKiAnYSAtPiB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9ncm91cF9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAnYiBsaXN0IC0+XG4gICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAnYSBsaXN0KSAtPlxuICAgIHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgbGV0IHJlYyBmaWx0ZXIgOiB0eXBlIGEuIGEgRmllbGQudCAtPiB0IGxpc3QgLT4gYSBsaXN0ID1cbiAgIGZ1biBmaWVsZCBsIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgVCAoZmllbGQnLCB4KSA6OiBsIC0+IChcbiAgICAgICAgbWF0Y2ggRmllbGQuZXEgZmllbGQgZmllbGQnIHdpdGhcbiAgICAgICAgfCBGaWVsZC5FcSAtPiB4IDo6IGZpbHRlciBmaWVsZCBsXG4gICAgICAgIHwgRmllbGQuTmUgLT4gZmlsdGVyIGZpZWxkIGwpXG5cbiAgbGV0IGV4dGVuc2lvbiBleHQgPSBUIChFeHRlbnNpb24sIGV4dClcblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbiBpZCBmID1cbiAgICBUIChTcGVjaWFsX2Z1bmN0aW9uLCB7IG5hbWUgPSBpZDsgaWRlbnQgPSBMb25naWRlbnQucGFyc2UgaWQ7IGV4cGFuZCA9IGYgfSlcblxuICBsZXQgY29uc3RhbnQga2luZCBzdWZmaXggZXhwYW5kID0gVCAoQ29uc3RhbnQsIHsgc3VmZml4OyBraW5kOyBleHBhbmQgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHQgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHQgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuZW5kXG5cbm1vZHVsZSBHZW5lcmF0ZWRfY29kZV9ob29rID0gc3RydWN0XG4gIHR5cGUgJ2Egc2luZ2xlX29yX21hbnkgPSBTaW5nbGUgb2YgJ2EgfCBNYW55IG9mICdhIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgZiA6ICdhLiAnYSBFeHRlbnNpb24uQ29udGV4dC50IC0+IExvY2F0aW9uLnQgLT4gJ2Egc2luZ2xlX29yX21hbnkgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG4gIGxldCByZXBsYWNlIHQgY29udGV4dCBsb2MgeCA9IHQuZiBjb250ZXh0IGxvYyB4XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTWFueSBbXSAtPiAoKVxuICAgIHwgXyAtPiB0LmYgY29udGV4dCB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0geFxuZW5kXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKVxuICAgIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLlQgZ3JvdXApIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgaXRlbXMgPj49IGZ1biBnMSAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtcyA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZXMsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmdyb3VwLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGdyb3VwLmV4cGFuZCB+Y3R4dCByZiBleHBhbmRlZF9pdGVtcyB2YWx1ZXMgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoYWNjLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKSlcblxubGV0IGhhbmRsZV9hdHRyX2lubGluZSBhdHRycyB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHQgfmVtYmVkX2Vycm9yc1xuICAgID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKGFjYywgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSkpXG5cbm1vZHVsZSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZiA6ICdhLiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50IC0+IExvY2F0aW9uLnQgLT4gJ2EgbGlzdCAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbmVuZFxuXG5jbGFzcyBtYXBfdG9wX2Rvd24gPyhleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcClcbiAgPyhnZW5lcmF0ZWRfY29kZV9ob29rID0gR2VuZXJhdGVkX2NvZGVfaG9vay5ub3ApID8oZW1iZWRfZXJyb3JzID0gZmFsc2UpIHJ1bGVzXG4gID1cbiAgbGV0IGhvb2sgPSBnZW5lcmF0ZWRfY29kZV9ob29rIGluXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgICBSdWxlLmZpbHRlciBTcGVjaWFsX2Z1bmN0aW9uIHJ1bGVzIHw+IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zXG4gIGluXG4gIGxldCBjb25zdGFudHMgPVxuICAgIFJ1bGUuZmlsdGVyIENvbnN0YW50IHJ1bGVzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoYyA6IFJ1bGUuQ29uc3RhbnQudCkgLT4gKChjLnN1ZmZpeCwgYy5raW5kKSwgYy5leHBhbmQpKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3RfZXhuXG4gIGluXG4gIGxldCBleHRlbnNpb25zID0gUnVsZS5maWx0ZXIgRXh0ZW5zaW9uIHJ1bGVzIGluXG4gIGxldCBjbGFzc19leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc19leHByIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc19maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGVfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY29yZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jb3JlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgZXhwcmVzc2lvbiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuZXhwcmVzc2lvbiBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIHBhdHRlcm4gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnBhdHRlcm4gZXh0ZW5zaW9uc1xuICBhbmQgc2lnbmF0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnNpZ25hdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHN0cnVjdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zdHJ1Y3R1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBwcHhfaW1wb3J0ID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5QcHhfaW1wb3J0IGV4dGVuc2lvbnMgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNscywgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgfD4gUnVsZS5BdHRyX2dyb3VwX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNscywgYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgfD4gUnVsZS5BdHRyX2dyb3VwX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscywgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscywgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0cywgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9leHQgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0cywgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9leHQgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9ucywgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX2V4Y2VwdGlvbiBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9ucywgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX2V4Y2VwdGlvbiBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBtYXBfbm9kZSA9IG1hcF9ub2RlIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgPSBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfaW5saW5lID0gaGFuZGxlX2F0dHJfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyBhcyBzdXBlclxuXG4gICAgKCogTm8gcG9pbnQgcmVjdXJzaW5nIGludG8gZXZlcnkgbG9jYXRpb24gKilcbiAgICBtZXRob2QhIGxvY2F0aW9uIF8geCA9IHJldHVybiB4XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jb3JlX3R5cGUgY29yZV90eXBlIHN1cGVyI2NvcmVfdHlwZSB4LnB0eXBfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHBhdHRlcm4gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMucGF0dGVybiBwYXR0ZXJuIHN1cGVyI3BhdHRlcm4geC5wcGF0X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGJhc2VfY3R4dCBlID1cbiAgICAgIGxldCB3aXRoX2NvbnRleHQgPVxuICAgICAgICAoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBlIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+PSBmdW4gb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKGJhc2VfY3R4dCwgZSlcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBFeHByZXNzaW9uXG4gICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgXVxuICAgICAgICAgICAgICBlXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6ZVxuICAgICAgICAgICAgPj58IGZ1biBlIC0+XG4gICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBiYXNlX2N0eHQsIGUpXG4gICAgICBpblxuICAgICAgd2l0aF9jb250ZXh0ID4+PSBmdW4gKGJhc2VfY3R4dCwgZSkgLT5cbiAgICAgIGxldCBleHBhbmRlZCA9XG4gICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgICBtYXBfbm9kZSBFQy5leHByZXNzaW9uIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgKGZ1biBfIGUgLT4gcmV0dXJuIGUpXG4gICAgICAgICAgICAgIGUucGV4cF9sb2MgYmFzZV9jdHh0IGVcbiAgICAgICAgfCBfIC0+IHJldHVybiBlXG4gICAgICBpblxuICAgICAgZXhwYW5kZWQgPj49IGZ1biBlIC0+XG4gICAgICBsZXQgZXhwYW5kX2NvbnN0YW50IGtpbmQgY2hhciB0ZXh0ID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBjb25zdGFudHMgKGNoYXIsIGtpbmQpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgfCBTb21lIGV4cGFuZCAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IChleHBhbmQgZS5wZXhwX2xvYyB0ZXh0KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9hcHBseSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBpZDsgXyB9IGFzIGZ1bmMpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICAgIHwgU29tZSBwYXR0ZXJuIC0+IChcbiAgICAgICAgICAgICAgbGV0IGdlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgICAgICAgICB0cnkgcmV0dXJuIChwYXR0ZXJuIGUpXG4gICAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biBleHByIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuY1xuICAgICAgICAgICAgICAgICAgICBhcmdzXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfaWRlbnQgaWQgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICAgIHwgU29tZSBwYXR0ZXJuIC0+IChcbiAgICAgICAgICAgICAgbGV0IGdlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgICAgICAgICB0cnkgcmV0dXJuIChwYXR0ZXJuIGUpXG4gICAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biBleHByIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfaW50ZWdlciAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgSW50ZWdlciBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKSlcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG5cbiAgICAoKiBQcmUtY29uZGl0aW9uczpcbiAgICAgICAtIGUucGV4cF9kZXNjID0gUGV4cF9hcHBseShmdW5jLCBhcmdzKVxuICAgICAgIC0gZnVuYy5wZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF9cbiAgICAqKVxuICAgIG1ldGhvZCBwcml2YXRlIHBleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICA9XG4gICAgICBsZXQgeyBwZXhwX2Rlc2MgPSBfOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZSBpblxuICAgICAgbGV0IGZ1bmMgPVxuICAgICAgICBsZXQgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBmdW5jIGluXG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBwZXhwX2Rlc2M7XG4gICAgICAgICAgcGV4cF9sb2MgKCogbG9jYXRpb24gZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZCAqKTtcbiAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBmdW5jID4+PSBmdW4gZnVuYyAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gKGxhYiwgZXhwKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBleHAgPj58IGZ1biBleHAgLT4gKGxhYiwgZXhwKSlcbiAgICAgICAgfD4gY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBhcmdzID4+PSBmdW4gYXJncyAtPlxuICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZnVuYywgYXJncyk7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgfVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGUgY2xhc3NfdHlwZSBzdXBlciNjbGFzc190eXBlIHgucGN0eV9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICB4LnBjdGZfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZXhwciBjbGFzc19leHByIHN1cGVyI2NsYXNzX2V4cHIgeC5wY2xfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkIHgucGNmX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfdHlwZSBtb2R1bGVfdHlwZSBzdXBlciNtb2R1bGVfdHlwZSB4LnBtdHlfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgICgoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCB4KVxuICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBNb2R1bGVfZXhwclxuICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIF1cbiAgICAgICAgICAgICB4XG4gICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgID4+fCBmdW4geCAtPlxuICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgYmFzZV9jdHh0LCB4KSlcbiAgICAgID4+PSBmdW4gKGJhc2VfY3R4dCwgeCkgLT5cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV9leHByIG1vZHVsZV9leHByIHN1cGVyI21vZHVsZV9leHByIHgucG1vZF9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc3RydWN0dXJlX2l0ZW0gc3RydWN0dXJlX2l0ZW0gc3VwZXIjc3RydWN0dXJlX2l0ZW0geC5wc3RyX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zaWduYXR1cmVfaXRlbSBzaWduYXR1cmVfaXRlbSBzdXBlciNzaWduYXR1cmVfaXRlbSB4LnBzaWdfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3N0cnVjdHVyZSBiYXNlX2N0eHQgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSA9XG4gICAgICBzZWxmI3BhdHRlcm4gYmFzZV9jdHh0IHBjc3RyX3NlbGYgPj49IGZ1biBwY3N0cl9zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGNmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc3RyX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3N0cl9maWVsZHMgLT4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLlBweF9pbXBvcnQgcHB4X2ltcG9ydCBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHgucHR5cGVfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3NpZ25hdHVyZSBiYXNlX2N0eHQgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSA9XG4gICAgICBzZWxmI2NvcmVfdHlwZSBiYXNlX2N0eHQgcGNzaWdfc2VsZiA+Pj0gZnVuIHBjc2lnX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY3RmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc2lnX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3NpZ19maWVsZHMgLT4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgKCogVE9ETzogdHJ5IHRvIGZhY3Rvcml6ZSAjc3RydWN0dXJlIGFuZCAjc2lnbmF0dXJlIHdpdGhvdXQgbWV0YS1wcm9ncmFtbWluZyAqKVxuICAgICgqJCopXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgYmFzZV9jdHh0IHN0ID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU3RydWN0dXJlX2l0ZW0gaXRlbS5wc3RyX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzdHJfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zdHJ1Y3R1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU3RydWN0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc3RydWN0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHN0cl9sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzdHJfZGVzYywgZXhwYW5kZWRfaXRlbS5wc3RyX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZSAocmYsIHRkcyksIFBzdHJfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgbXRkLCBQc3RyX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGVjLCBQc3RyX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbiAgICBtZXRob2QhIHNpZ25hdHVyZSBiYXNlX2N0eHQgc2cgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTaWduYXR1cmVfaXRlbSBpdGVtLnBzaWdfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHNpZ19sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3NpZ25hdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTaWduYXR1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzZyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzaWdfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzaWduYXR1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc2lnX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSBtdGQsIFBzaWdfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB0ZSwgUHNpZ190eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19leGNlcHRpb24gZWMsIFBzaWdfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc3RydWN0dXJlIHN0XG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChCb29sICgoIDo9ICkgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICAgIH5kb2M6XCJfIEFsbG93IHBweCBkZXJpdmVycyB0byBlbmFibGUgdW51c2VkIGNvZGUgd2FybmluZ3NcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKCkgPSAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWYga2VlcF93MzJfaW50ZiAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIFtdIGVsc2UgWyAzMiBdXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ludGYgKClcbiAgICAgIHx8IChub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc2lnbmF0dXJlIHNnIGZhbHNlKSlcbiAgICAgIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgdGhlbiB3YXJuaW5nc1xuICAgIGVsc2UgNjAgOjogd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdyYXAsIHNnID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHNnKVxuICAgIGVsc2UgKHRydWUsIHBzaWdfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzZylcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc2lnIH5sb2MgfmhpZGUgc2cgZWxzZSBzZ1xuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3NpZ10gYWJvdmUgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBNYWluIGV4cGFuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgdHlwZXNfdXNlZF9ieV9kZXJpdmluZyAodGRzIDogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSA6IHN0cnVjdHVyZV9pdGVtIGxpc3QgPVxuICBpZiBrZWVwX3czMl9pbXBsICgpIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgKCogVE9ETzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIHVudXNlZCB3YXJuaW5nIGZvciB0eXBlcyB0aGVtc2VsdmVzLCB3ZVxuICAgICBzaG91bGQgYWRkIGEgdGFnIFtAQHVudXNlZF0uICopXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyBAIGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgcnVsZXMgfnR5cCB+ZXhwYW5kX3NpZyB+ZXhwYW5kX3N0ciB+cnVsZV9zdHIgfnJ1bGVfc2lnIH5ydWxlX3N0cl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0ID1cbiAgbGV0IHByZWZpeCA9IFwicHB4bGliLlwiIGluXG4gIGxldCBkZXJpdmluZ19hdHRyID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiXCIgfnByZWZpeCB0eXAgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHJfZXhwZWN0ID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiX2lubGluZVwiIH5wcmVmaXggdHlwIGluXG4gIFtcbiAgICBydWxlX3NpZyBkZXJpdmluZ19hdHRyIGV4cGFuZF9zaWc7XG4gICAgcnVsZV9zdHIgZGVyaXZpbmdfYXR0ciBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc3RyX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc2lnX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc2lnO1xuICBdXG5cbmxldCBydWxlc190eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOlR5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2RlY2xzXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2RlY2xzXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3RcblxubGV0IHJ1bGVzX3R5cGVfZXh0ID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4dGVuc2lvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZXh0XG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dF9leHBlY3RcblxubGV0IHJ1bGVzX2V4Y2VwdGlvbiA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leGNlcHRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9leGNlcHRpb25cbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25cbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0XG5cbmxldCBydWxlc19tb2R1bGVfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcblxubGV0ICgpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBbIHJ1bGVzX3R5cGVfZGVjbDsgcnVsZXNfdHlwZV9leHQ7IHJ1bGVzX2V4Y2VwdGlvbjsgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCBdXG4gICAgfD4gTGlzdC5jb25jYXRcbiAgaW5cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiZGVyaXZpbmdcIiB+YWxpYXNlczpbIFwidHlwZV9jb252XCIgXSB+cnVsZXNcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgYWZmaXggPVxuICB8IFByZWZpeCBvZiBzdHJpbmdcbiAgfCBTdWZmaXggb2Ygc3RyaW5nXG4gIHwgUHJlZml4U3VmZml4IG9mIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgbWFuZ2xlID8oZml4cG9pbnQgPSBcInRcIikgYWZmaXggbmFtZSA9XG4gIG1hdGNoIChTdHJpbmcuKG5hbWUgPSBmaXhwb2ludCksIGFmZml4KSB3aXRoXG4gIHwgdHJ1ZSwgKFByZWZpeCB4IHwgU3VmZml4IHgpIC0+IHhcbiAgfCB0cnVlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBuYW1lIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeCB4IC0+IHggXiBcIl9cIiBeIG5hbWVcbiAgfCBmYWxzZSwgU3VmZml4IHggLT4gbmFtZSBeIFwiX1wiIF4geFxuXG5sZXQgbWFuZ2xlX3R5cGVfZGVjbCA/Zml4cG9pbnQgYWZmaXggeyBwdHlwZV9uYW1lID0geyB0eHQgPSBuYW1lOyBfIH07IF8gfSA9XG4gIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggbmFtZVxuXG5sZXQgbWFuZ2xlX2xpZCA/Zml4cG9pbnQgYWZmaXggbGlkID1cbiAgbWF0Y2ggbGlkIHdpdGhcbiAgfCBMaWRlbnQgcyAtPiBMaWRlbnQgKG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMZG90IChwLCBzKSAtPiBMZG90IChwLCBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGFwcGx5IF8gLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuRXhwYW5zaW9uX2hlbHBlcnMubWFuZ2xlX2xpZDogTGFwcGx5XCJcblxubW9kdWxlIFF1b3RlciA9IFF1b3RlclxuIiwiKCoqIFN0YW5kYXJkIGxpYnJhcnkgZm9yIHBweCByZXdyaXRlcnMgKilcblxuKCoqIFtwcHhsaWJdIGlzIG1lYW50IHRvIGJlIG9wZW5lZCBnbG9iYWxseSBpbiB5b3VyIFBQWCBzb3VyY2UgZmlsZXMuXG5cbiAgICBPcGVuaW5nIGl0IGNvbWVzIHdpdGggdHdvIGFkdmFudGFnZXMuIEZpcnN0LCBpdCB3aWxsIHNoYWRvdyB0aGVcbiAgICBbY29tcGlsZXItbGlic10gbW9kdWxlcy4gVGhlIFtjb21waWxlci1saWJzXSBtb2R1bGVzIGFyZSB1bnN0YWJsZSBhbmQgYXJlbid0XG4gICAgbWVhbnQgdG8gYmUgdXNlZCwgc28gc2hhZG93aW5nIHRoZW0gaXMgYSBnb29kIHByb3RlY3Rpb24gbWVjaGFuaXNtLiBJbiBjYXNlXG4gICAgeW91IGRvbid0IHdhbnQgdG8gb3BlbiBbUHB4bGliXSwgeW91IGNhbiBvcGVuIFtPY2FtbF9zaGFkb3ddIHRvIGdldCB0aGUgc2FtZVxuICAgIHByb3RlY3Rpb24uIFNlY29uZCwgaXQgd2lsbCBicmluZyBzZXZlcmFsIG1vZHVsZXMgaW4gc2NvcGUsIHRoYXQgYXJlIHVzZWZ1bFxuICAgIHRvIGhhdmUgd2hlbiB3cml0aW5nIGEgcmV3cml0ZXI6XG5cbiAgICAtIFRoZSBtYWluIFtwcHhsaWJdIG1vZHVsZXMsIHN1Y2ggYXMgbW9kdWxlcyB0byBoZWxwIG1hbmlwdWxhdGUgdGhlIEFTVFxuICAgICAgKHshQXN0X2J1aWxkZXJ9LCB7IUFzdF9wYXR0ZXJufSksIGFuZCBhIGZldyBmdW5jdGlvbnMuXG4gICAgLSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzLCBzdWNoIGFzIHshQXN0X2hlbHBlcn0gb3IgeyFQcHJpbnRhc3R9LFxuICAgIC0gVGhlIHdob2xlIEFTVCB0eXBlcyAoYnkgW2luY2x1ZGluZ10gdGhlIHshQXN0fSBtb2R1bGUpLlxuXG4gICAgezEgVGhlIGNvcmUgW3BweGxpYl0gZW50cmllc30gKilcblxuKCoqIHsyIE1hbmlwdWxhdGluZyB0aGUgQVNUfSAqKVxuXG5tb2R1bGUgQXN0X2J1aWxkZXIgPSBBc3RfYnVpbGRlclxubW9kdWxlIEFzdF9wYXR0ZXJuID0gQXN0X3BhdHRlcm5cbm1vZHVsZSBBc3RfdHJhdmVyc2UgPSBBc3RfdHJhdmVyc2VcblxuKCoqIHsyIENvbnRleHQtZnJlZSByZXdyaXRpbmd9ICopXG5cbm1vZHVsZSBDb250ZXh0X2ZyZWUgPSBDb250ZXh0X2ZyZWVcbm1vZHVsZSBEZXJpdmluZyA9IERlcml2aW5nXG5tb2R1bGUgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uXG5tb2R1bGUgRXhwYW5zaW9uX2NvbnRleHQgPSBFeHBhbnNpb25fY29udGV4dFxubW9kdWxlIENvZGVfcGF0aCA9IENvZGVfcGF0aFxuXG4oKiogezIgT3RoZXIgaGVscGVyc30gKilcblxubW9kdWxlIEV4cGFuc2lvbl9oZWxwZXJzID0gRXhwYW5zaW9uX2hlbHBlcnNcbm1vZHVsZSBNZXJsaW5faGVscGVycyA9IE1lcmxpbl9oZWxwZXJzXG5tb2R1bGUgU3BlbGxjaGVjayA9IFNwZWxsY2hlY2tcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxuXG4oKiogezIgRHJpdmVyLXJlbGF0ZWQgbW9kdWxlc30gKilcblxubW9kdWxlIERyaXZlciA9IERyaXZlclxubW9kdWxlIENhbGxlcl9pZCA9IENhbGxlcl9pZFxubW9kdWxlIEFzdF9pbyA9IFV0aWxzLkFzdF9pby5SZWFkX2JpblxuXG4oKiogezIgQ2hlY2tzfSAqKVxuXG5tb2R1bGUgQXR0cmlidXRlID0gQXR0cmlidXRlXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlc1xuXG4oKiogezIgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnN9ICopXG5cbmluY2x1ZGUgQ29tbW9uXG5cbigqKiB7MSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzfVxuXG4gICAgRXhwb3NlIHNvbWUgbW9kdWxlcyBmcm9tIHshUHB4bGliX2FzdH0uICopXG5cbm1vZHVsZSBBc3QgPSBQcHhsaWJfYXN0LkFzdFxubW9kdWxlIEFzdF9oZWxwZXIgPSBQcHhsaWJfYXN0LkFzdF9oZWxwZXJcbm1vZHVsZSBBc3R0eXBlcyA9IFBweGxpYl9hc3QuQXN0dHlwZXNcbm1vZHVsZSBQYXJzZSA9IFBweGxpYl9hc3QuUGFyc2Vcbm1vZHVsZSBQYXJzZXRyZWUgPSBQcHhsaWJfYXN0LlBhcnNldHJlZVxubW9kdWxlIFBwcmludGFzdCA9IFBweGxpYl9hc3QuUHByaW50YXN0XG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Rcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgTG9jID0gTG9jXG5cbigqKiB7MSBUaGUgd2hvbGUgQVNUIHR5cGVzfSAqKVxuXG5pbmNsdWRlIEFzdFxuKCoqIEluY2x1ZGUgYWxsIHRoZSBBc3QgZGVmaW5pdGlvbnMgc2luY2Ugd2UgbmVlZCB0aGVtIGluIGV2ZXJ5IHNpbmdsZSBwcHhcblxuICAgIEBjbG9zZWQgKilcblxuKCoqIE1ha2Ugc3VyZSBjb2RlIHVzaW5nIFBweGxpYiBkb2Vzbid0IHJlZmVyIHRvIGNvbXBpbGVyLWxpYnMgd2l0aG91dCBiZWluZ1xuICAgIGV4cGxpY2l0IGFib3V0IGl0OlxuXG4gICAgQGNsb3NlZCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG9wZW4gT2NhbWxfc2hhZG93XG5cbiAgaW5jbHVkZSAoXG4gICAgT2NhbWxfc2hhZG93IDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE9jYW1sX3NoYWRvd1xuICAgICAgZW5kXG4gICAgICB3aXRoIG1vZHVsZSBBc3RfaGVscGVyIDo9IEFzdF9oZWxwZXJcbiAgICAgIHdpdGggbW9kdWxlIEFzdHR5cGVzIDo9IEFzdHR5cGVzXG4gICAgICB3aXRoIG1vZHVsZSBEb2NzdHJpbmdzIDo9IERvY3N0cmluZ3NcbiAgICAgIHdpdGggbW9kdWxlIElkZW50aWZpYWJsZSA6PSBJZGVudGlmaWFibGVcbiAgICAgIHdpdGggbW9kdWxlIExleGVyIDo9IExleGVyXG4gICAgICB3aXRoIG1vZHVsZSBMb2NhdGlvbiA6PSBMb2NhdGlvblxuICAgICAgd2l0aCBtb2R1bGUgTG9uZ2lkZW50IDo9IExvbmdpZGVudFxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2UgOj0gUGFyc2VcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNldHJlZSA6PSBQYXJzZXRyZWVcbiAgICAgIHdpdGggbW9kdWxlIFBwcmludGFzdCA6PSBQcHJpbnRhc3RcbiAgICAgIHdpdGggbW9kdWxlIFN5bnRheGVyciA6PSBTeW50YXhlcnIpXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBGb3IgdGVzdHMgYW5kIFBweF9jb3JlIGNvbXBhdGliaWxpdHkgbGF5ZXIgKilcbm1vZHVsZSBQcHhsaWJfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29tbW9uID0gQ29tbW9uXG4gIG1vZHVsZSBOYW1lID0gTmFtZVxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBQcHhsaWJcblxubGV0IGRlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmRlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChhbHRfb3B0aW9uIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpIG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2VxdWFsID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfY29tcGFyZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfeW9qc29uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9pZiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfaWZcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgb3BhcXVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJ5b2pzb24ub3BhcXVlXCIgQXR0cmlidXRlLkNvbnRleHQuY29yZV90eXBlIEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgKClcbjs7XG5cbmxldCBvcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm9wdGlvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfdGQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQudHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IHlvanNvbl9rZXkgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmtleVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQucnRhZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIGF0dHIgZGVzY3JpcHRpb24gPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICB+bG9jXG4gICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAJXNdIGlzIG9ubHkgYWxsb3dlZCBvbiB0eXBlIFslc10uXCJcbiAgICAoQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgICBkZXNjcmlwdGlvblxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkIHgpXG4gIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgIH5sb2NcbiAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiBpbmxpbmUgcmVjb3Jkcy5cIlxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkIHgpXG4gIHRoZW4gKFxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IGNkc1xuICAgICAgd2hlbiBMaXN0LmV4aXN0cyBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIF8gLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIG9ubHkgd29ya3Mgb24gcmVjb3Jkcy4gRm9yIGlubGluZSBcXFxuICAgICAgICAgcmVjb3JkcywgZG86IHR5cGUgdCA9IEEgb2YgeyBhIDogaW50IH0gW0BAYWxsb3dfZXh0cmFfZmllbGRzXSB8IEIgW0BAQEBkZXJpdmluZyBcXFxuICAgICAgICAgeW9qc29uXVwiXG4gICAgfCBfIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiByZWNvcmRzLlwiKVxuOztcblxubW9kdWxlIFJlY29yZF9maWVsZF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgY29tbW9uID0gWyBgeW9qc29uX29wdGlvbiBvZiBjb3JlX3R5cGUgXVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIGF0dHIgbGQgfmYgPVxuICAgIE9wdGlvbi5tYXAgKEF0dHJpYnV0ZS5nZXQgYXR0ciBsZCkgfmY6KGZ1biB4IC0+IGYgeCwgQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgOztcblxuICBsZXQgY3JlYXRlIH5sb2MgZ2V0dGVycyBsZCA9XG4gICAgbGV0IGNvbW1vbl9nZXR0ZXJzID1cbiAgICAgIFsgKGZ1biBsZCAtPlxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5nZXQgb3B0aW9uIGxkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICAgICAgfCBbJXR5cGU6IFsldD8gdHldIG9wdGlvbl0gLT4gU29tZSAoYHlvanNvbl9vcHRpb24gdHksIFwiW0B5b2pzb24ub3B0aW9uXVwiKVxuICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIG9wdGlvbiBcIl8gb3B0aW9uXCIpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICBdXG4gICAgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlcl9tYXAgKGdldHRlcnMgQCBjb21tb25fZ2V0dGVycykgfmY6KGZ1biBmIC0+IGYgbGQpIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgKHYsIF8pIF0gLT4gU29tZSB2XG4gICAgfCBfIDo6IF8gOjogXyBhcyBhdHRyaWJ1dGVzIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogJXNcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChMaXN0Lm1hcCBhdHRyaWJ1dGVzIH5mOnNuZCkpXG4gIDs7XG5cbiAgbW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZGVmYXVsdCBvZiBleHByZXNzaW9uXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlIH5sb2MgWyBnZXRfYXR0cmlidXRlIGRlZmF1bHQgfmY6KGZ1biBkZWZhdWx0IC0+IGBkZWZhdWx0IGRlZmF1bHQpIF0gbGRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgb2YgWyBgbm9fYXJnIHwgYGNvbXBhcmUgfCBgZXF1YWwgfCBgeW9qc29uIHwgYGZ1bmMgb2YgZXhwcmVzc2lvbiBdXG4gICAgICB8IGBkcm9wX2lmIG9mIGV4cHJlc3Npb25cbiAgICAgIHwgYGtlZXBcbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmxvY1xuICAgICAgICBbIGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IGBkcm9wX2RlZmF1bHQgYG5vX2FyZ1xuICAgICAgICAgICAgfCBTb21lIGUgLT4gYGRyb3BfZGVmYXVsdCAoYGZ1bmMgZSkpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfZXF1YWwgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBlcXVhbClcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9jb21wYXJlIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgY29tcGFyZSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF95b2pzb24gfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGB5b2pzb24pXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2lmIH5mOihmdW4geCAtPiBgZHJvcF9pZiB4KVxuICAgICAgICBdXG4gICAgICAgIGxkXG4gICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6YGtlZXBcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPVxuICB7IGxhYmVsIDogc3RyaW5nXG4gIDsgbmFtZV9vdmVycmlkZSA6IHN0cmluZyBvcHRpb25cbiAgfVxuXG5sZXQgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZSA9IHsgbGFiZWw7IG5hbWVfb3ZlcnJpZGUgfVxuXG5sZXQgb2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKGNkIDogUHB4bGliLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSA9XG4gIGxldCBsYWJlbCA9IGNkLnBjZF9uYW1lLnR4dCBpblxuICBsZXQgbmFtZV9vdmVycmlkZSA9IFBweGxpYi5BdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl92YXJpYW50X25hbWUgY2QgaW5cbiAgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZVxuOztcblxubGV0IGxhYmVsIHQgPSB0LmxhYmVsXG5sZXQgbmFtZSB0ID0gT3B0aW9uLnZhbHVlIHQubmFtZV9vdmVycmlkZSB+ZGVmYXVsdDp0LmxhYmVsXG4iLCJvcGVuIEJhc2Vcbm9wZW4gUHB4bGliXG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBBdHRycyA9IEF0dHJzXG5cbmxldCAoIC0tPiApIGxocyByaHMgPSBjYXNlIH5ndWFyZDpOb25lIH5saHMgfnJoc1xuXG4oKiBTaW1wbGlmaWVzIG1hdGNoIGNhc2VzLCBmb3IgcmVhZGFiaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCdzIG5vdCBvYnZpb3VzIHdlIGNhblxuICAgc3RpY2sgdGhpcyBpbiBwcHhfY29yZSwgYXMgKG1hdGNoIGUxIHdpdGggcCAtPiBlMikgYW5kIChsZXQgcCA9IGUxIGluIGUyKSBhcmUgbm90IHR5cGVkXG4gICBleGFjdGx5IHRoZSBzYW1lICh0eXBlIGluZmVyZW5jZSBnb2VzIGluIGRpZmZlcmVudCBvcmRlciwgbWVhbmluZyB0eXBlIGRpc2FtYmlndWF0aW9uXG4gICBkaWZmZXJzKS4gKilcbmxldCBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlcyA9XG4gIG1hdGNoIGNhc2VzIHdpdGhcbiAgfCBbIHsgcGNfbGhzOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyB9IF0gLT5cbiAgICAobWF0Y2ggcGNfbGhzLCBleHByIHdpdGhcbiAgICAgfCAoIHsgcHBhdF9hdHRyaWJ1dGVzID0gW107IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gaWRlbnQ7IF8gfTsgXyB9XG4gICAgICAgLCB7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGlkZW50JzsgXyB9OyBfIH0gKVxuICAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIGlkZW50IGlkZW50JyAtPiBwY19yaHNcbiAgICAgfCBfIC0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGNfbGhzIH5leHByIF0gcGNfcmhzKVxuICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXNcbjs7XG5cbm1vZHVsZSBGdW5fb3JfbWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZ1biBvZiBleHByZXNzaW9uXG4gICAgfCBNYXRjaCBvZiBjYXNlIGxpc3RcblxuICBsZXQgZXhwciB+bG9jIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZlxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIGNhc2VzXG4gIDs7XG5cbiAgbGV0IHVucm9sbCB+bG9jIGUgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBlYXBwbHkgfmxvYyBmIFsgZSBdXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX21hdGNoIH5sb2MgZSBjYXNlc1xuICA7O1xuXG4gIGxldCBtYXBfdG1wX3ZhcnMgfmxvYyB0cyA9XG4gICAgbGV0IHZhcnMgPSBMaXN0Lm1hcGkgdHMgfmY6KGZ1biBpIF8gLT4gXCJ2XCIgXiBJbnQudG9fc3RyaW5nIGkpIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIExpc3QubWFwMl9leG4gdmFycyB0cyB+ZjooZnVuIHZhciB0IC0+XG4gICAgICAgIGxldCBleHByID0gdW5yb2xsIH5sb2MgKGV2YXIgfmxvYyB2YXIpIHQgaW5cbiAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyB2YXIpIH5leHByKVxuICAgIGluXG4gICAgYmluZGluZ3MsIExpc3QubWFwIHZhcnMgfmY6KHB2YXIgfmxvYyksIExpc3QubWFwIHZhcnMgfmY6KGV2YXIgfmxvYylcbiAgOztcbmVuZFxuXG4oKiBBIHJlbmFtaW5nIGlzIGEgbWFwcGluZyBmcm9tIHR5cGUgdmFyaWFibGUgbmFtZSB0byB0eXBlIHZhcmlhYmxlIG5hbWUuXG4gICBJbiBkZWZpbml0aW9ucyBzdWNoIGFzOlxuXG4gICB0eXBlICdhIHQgPVxuICAgfCBBIDogPHR5cGU+IC0+ICdiIHRcbiAgIHwgQiBvZiAnYVxuXG4gICB3ZSBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4geW9qc29uX29mIHBhcmFtZXRlciBuYW1lZCBhZnRlciAnYSwgYnV0ICdhIGlzIG5vdCBpblxuICAgc2NvcGUgaW4gPHR5cGU+IHdoZW4gaGFuZGxpbmcgdGhlIGNvbnN0cnVjdG9yIEEgKGJlY2F1c2UgQSBpcyBhIGdhZHQgY29uc3RydWN0b3IpLlxuICAgSW5zdGVhZCB0aGUgdHlwZSB2YXJpYWJsZXMgaW4gc2NvcGUgYXJlIHRoZSBvbmVzIGRlZmluZWQgaW4gdGhlIHJldHVybiB0eXBlIG9mIEEsXG4gICBuYW1lbHkgJ2IuIFRoZXJlIGNvdWxkIGJlIGxlc3Mgb3IgbW9yZSB0eXBlIHZhcmlhYmxlIGluIGNhc2VzIHN1Y2ggYXM6XG5cbiAgIHR5cGUgXyBsZXNzID0gTGVzcyA6IGludCBsZXNzXG4gICB0eXBlIF8gbW9yZSA9IE1vcmUgOiAoJ2EgKiAnYSkgbW9yZVxuXG4gICBJZiBmb3IgaW5zdGFuY2UsIDx0eXBlPiBpcyBbJ2IgKiAnY10sIHdoZW4gd2UgZmluZCAnYiwgd2Ugd2lsbCBsb29rIGZvciBbJ2JdIGluIHRoZVxuICAgcmVuYW1pbmcgYW5kIGZpbmQgWydhXSAob25seSBpbiB0aGF0IGdhZHQgYnJhbmNoLCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBpbiBvdGhlclxuICAgYnJhbmNoZXMpLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gY2FsbCB0aGUgcHJldmlvdXNseSBib3VuZCB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkXG4gICBhZnRlciAnYS5cbiAgIElmIHdlIGNhbid0IGZpbmQgYSByZXN1bHRpbmcgbmFtZSwgbGlrZSB3aGVuIGxvb2tpbmcgdXAgWydjXSBpbiB0aGUgcmVuYW1pbmcsIHRoZW4gd2VcbiAgIGFzc3VtZSB0aGUgdmFyaWFibGUgaXMgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkIGFuZCB0cmVhdCBpdCBhcyBbX10gKHdoaWNoIGlzIG9rLFxuICAgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGNvbnN0cmFpbnRzKS4gKilcbm1vZHVsZSBSZW5hbWluZyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgaWRlbnRpdHkgOiB0XG4gIHZhbCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgOiB0IC0+IHN0cmluZyBsb2MgLT4gdFxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIHZhbCBiaW5kaW5nX2tpbmQgOiB0IC0+IHN0cmluZyAtPiBiaW5kaW5nX2tpbmRcbiAgdmFsIG9mX2dhZHQgOiBzdHJpbmcgbGlzdCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvciA9IHN0cmluZyBMb2MudFxuICB0eXBlIHQgPSAoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50IG9wdGlvblxuXG4gIGxldCBpZGVudGl0eSA9IE5vbmVcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICBsZXQgYWRkX3VuaXZlcnNhbGx5X2JvdW5kICh0IDogdCkgbmFtZSA6IHQgPVxuICAgIGxldCBuYW1lID0gbmFtZS50eHQgaW5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBtYXAgLT4gU29tZSAoTWFwLnNldCB+a2V5Om5hbWUgfmRhdGE6KE9rIG5hbWUpIG1hcClcbiAgOztcblxuICBsZXQgYmluZGluZ19raW5kIHQgdmFyID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFyXG4gICAgfCBTb21lIG1hcCAtPlxuICAgICAgKG1hdGNoIE1hcC5maW5kIG1hcCB2YXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBFeGlzdGVudGlhbGx5X2JvdW5kXG4gICAgICAgfCBTb21lIChPayB2YWx1ZSkgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFsdWVcbiAgICAgICB8IFNvbWUgKEVycm9yIHsgbG9jOyB0eHQgfSkgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCIlc1wiIHR4dClcbiAgOztcblxuICAoKiBSZXR1cm4gYSBtYXAgdHJhbnNsYXRpbmcgdHlwZSB2YXJpYWJsZXMgYXBwZWFyaW5nIGluIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdBRFRcbiAgICAgY29uc3RydWN0b3IgdG8gdGhlaXIgbmFtZSBpbiB0aGUgdHlwZSBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICBGb3IgaW5zdGFuY2U6XG5cbiAgICAge1tcbiAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSBYIDogJ3ggKiAneSAtPiAoJ3gsICd5KSB0XG4gICAgIF19XG5cbiAgICAgd2lsbCBwcm9kdWNlOlxuXG4gICAgIHtbXG4gICAgICAgXCJ4XCIgLT4gT2sgXCJhXCJcbiAgICAgICAgICAgICAgICBcInlcIiAtPiBPayBcImJcIlxuICAgICBdfVxuXG4gICAgIElmIGEgdmFyaWFibGUgYXBwZWFycyB0d2ljZSBpbiB0aGUgcmV0dXJuIHR5cGUgaXQgd2lsbCBtYXAgdG8gW0Vycm9yIF9dLiBJZiBhXG4gICAgIHZhcmlhYmxlIGNhbm5vdCBiZSBtYXBwZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgZGVjbGFyYXRpb24sIGl0IHdpbGwgbWFwIHRvXG4gICAgIFtFcnJvcl0gKGZvciBpbnN0YW5jZSBbQSA6ICdhIC0+ICdhIGxpc3QgdF0pLlxuXG4gICAgIEl0IHJldHVybnMgTm9uZSBvbiB1c2VyIGVycm9yLCB0byBsZXQgdGhlIHR5cGVyIGdpdmUgdGhlIGVycm9yIG1lc3NhZ2UgKilcbiAgbGV0IG9mX2dhZHQgPVxuICAgICgqIEFkZCBhbGwgdHlwZSB2YXJpYWJsZXMgb2YgYSB0eXBlIHRvIGEgbWFwLiAqKVxuICAgIGxldCBhZGRfdHlwZXZhcnMgPVxuICAgICAgb2JqZWN0XG4gICAgICAgIGluaGVyaXQgWyhzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgbWFwID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICB7IGxvYyA9IHR5LnB0eXBfbG9jXG4gICAgICAgICAgICAgIDsgdHh0ID1cbiAgICAgICAgICAgICAgICAgIFwicHB4X3lvanNvbl9jb252OiB2YXJpYWJsZSBpcyBub3QgYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgY29uc3RydWN0b3JcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGE6KEVycm9yIGVycm9yKVxuICAgICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgdHkgbWFwXG4gICAgICBlbmRcbiAgICBpblxuICAgIGxldCBhdXggbWFwIHRwX25hbWUgdHBfaW5fcmV0dXJuX3R5cGUgPVxuICAgICAgbWF0Y2ggdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICBpZiBNYXAubWVtIG1hcCB2YXJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2MgPSB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2xvYyBpblxuICAgICAgICAgICAgRXJyb3IgeyBsb2M7IHR4dCA9IFwicHB4X3lvanNvbl9jb252OiBkdXBsaWNhdGUgdmFyaWFibGVcIiB9KVxuICAgICAgICAgIGVsc2UgT2sgdHBfbmFtZVxuICAgICAgICBpblxuICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YVxuICAgICAgfCBfIC0+IGFkZF90eXBldmFycyNjb3JlX3R5cGUgdHBfaW5fcmV0dXJuX3R5cGUgbWFwXG4gICAgaW5cbiAgICBmdW4gdHBzIGNkIC0+XG4gICAgICBtYXRjaCBjZC5wY2RfcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgKG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICB8IFB0eXBfY29uc3RyIChfLCBwYXJhbXMpIC0+XG4gICAgICAgICAgIGlmIExpc3QubGVuZ3RoIHBhcmFtcyA8PiBMaXN0Lmxlbmd0aCB0cHNcbiAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoU3RkbGliLkxpc3RMYWJlbHMuZm9sZF9sZWZ0MlxuICAgICAgICAgICAgICAgICAgdHBzXG4gICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpKVxuICAgICAgICAgICAgICAgICAgfmY6YXV4KVxuICAgICAgICAgfCBfIC0+IE5vbmUpXG4gIDs7XG5lbmRcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgUHR5cF92YXIgXyAtPiBQdHlwX2FueVxuICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG5sZXQgcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB4ID1cbiAgbGV0IHByZWZpeCA9IFwicmlnaWRfXCIgaW5cbiAgaWYgU3RyaW5nLmVxdWFsIHggdHlwZV9uYW1lIHx8IFN0cmluZy5pc19wcmVmaXggeCB+cHJlZml4XG4gIHRoZW4gcHJlZml4IF4geCBeIFwiX29mX3R5cGVfXCIgXiB0eXBlX25hbWVcbiAgZWxzZSB4XG47O1xuXG5sZXQgbWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSA9XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciBzIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoTG9jYXRlZC5saWRlbnQgfmxvYzp0eS5wdHlwX2xvYyAocmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSBzKSwgW10pXG4gICAgICAgICAgfCBkZXNjIC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIGRlc2NcbiAgICAgICAgaW5cbiAgICAgICAgeyB0eSB3aXRoIHB0eXBfZGVzYyB9XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgcXVhbnRpZmllZCB0eXBlIFsgISAnYSAuLiAneiAuIChtYWtlX21vbm9fdHlwZSB0ICgnYSAuLiAneikpIF0gb3JcbiAgIFt0eXBlIGEgLi4gei4gbWFrZV9tb25vX3R5cGUgdCAoYSAuLiB6KV0gd2hlbiBbdXNlX3JpZ2lkX3ZhcmlhYmxlc10gaXMgdHJ1ZS5cbiAgIEFubm90YXRpb24gYXJlIG5lZWRlZCBmb3Igbm9uIHJlZ3VsYXIgcmVjdXJzaXZlIGRhdGF0eXBlcyBhbmQgZ2FkdCB3aGVuIHRoZSByZXR1cm4gdHlwZVxuICAgb2YgY29uc3RydWN0b3JzIGFyZSBjb25zdHJhaW5lZC4gVW5mb3J0dW5hdGVseSwgcHV0dGluZyByaWdpZCB2YXJpYWJsZXMgZXZlcnl3aGVyZSBkb2VzXG4gICBub3Qgd29yayBiZWNhdXNlIG9mIGNlcnRhaW5zIHR5cGVzIHdpdGggY29uc3RyYWludHMuIFdlIHRodXMgb25seSB1c2UgcmlnaWQgdmFyaWFibGVzXG4gICBmb3Igc3VtIHR5cGVzLCB3aGljaCBpbmNsdWRlcyBhbGwgR0FEVHMuICopXG5cbmxldCB0dmFyc19vZl9jb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gc3RyaW5nIGxpc3QgPVxuICBsZXQgdHZhcnMgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gaWYgTGlzdC5tZW0gYWNjIHggfmVxdWFsOlN0cmluZy5lcXVhbCB0aGVuIGFjYyBlbHNlIHggOjogYWNjXG4gICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgeCBhY2NcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHR5cCAtPiBMaXN0LnJldiAodHZhcnMjY29yZV90eXBlIHR5cCBbXSlcbjs7XG5cbmxldCBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nXG4gICAgICAoKiBwbGFjaW5nIGEgc3VpdGFibHkgcG9seW1vcnBoaWMgb3IgcmlnaWQgdHlwZSBjb25zdHJhaW50IG9uIHRoZSBwYXR0ZXJuIG9yIGJvZHkgKilcbiAgICAgIChsb2MgOiBMb2NhdGlvbi50KVxuICAgICAgKHRkIDogdHlwZV9kZWNsYXJhdGlvbilcbiAgICAgICh0eXAgOiBjb3JlX3R5cGUpXG4gICAgICB+KHRwcyA6IHN0cmluZyBsb2MgbGlzdClcbiAgICAgIH4oZnVuY19uYW1lIDogc3RyaW5nKVxuICAgICAgKGJvZHkgOiBleHByZXNzaW9uKVxuICA9XG4gIGxldCB2YXJzID0gdHZhcnNfb2ZfY29yZV90eXBlIHR5cCBpblxuICBsZXQgaGFzX3ZhcnMgPVxuICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IF8gOjogXyAtPiB0cnVlXG4gIGluXG4gIGxldCBwYXQgPVxuICAgIGxldCBwYXQgPSBwdmFyIH5sb2MgZnVuY19uYW1lIGluXG4gICAgaWYgbm90IGhhc192YXJzXG4gICAgdGhlbiBwYXRcbiAgICBlbHNlIChcbiAgICAgIGxldCB2YXJzID0gTGlzdC5tYXAgfmY6KGZ1biB0eHQgLT4geyB0eHQ7IGxvYyB9KSB2YXJzIGluXG4gICAgICBwcGF0X2NvbnN0cmFpbnQgfmxvYyBwYXQgKHB0eXBfcG9seSB+bG9jIHZhcnMgdHlwKSlcbiAgaW5cbiAgbGV0IGJvZHkgPVxuICAgIGxldCB1c2VfcmlnaWRfdmFyaWFibGVzID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV92YXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiB1c2VfcmlnaWRfdmFyaWFibGVzXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdHlwZV9uYW1lID0gdGQucHR5cGVfbmFtZS50eHQgaW5cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICB0cHNcbiAgICAgICAgfmY6KGZ1biB0cCBib2R5IC0+XG4gICAgICAgICAgcGV4cF9uZXd0eXBlIH5sb2MgeyB0eHQgPSByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHRwLnR4dDsgbG9jID0gdHAubG9jIH0gYm9keSlcbiAgICAgICAgfmluaXQ6KHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgKG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lIHR5cCkpKVxuICAgIGVsc2UgaWYgaGFzX3ZhcnNcbiAgICB0aGVuIGJvZHlcbiAgICBlbHNlIHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgdHlwXG4gIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0IH5leHByOmJvZHlcbjs7XG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIChvYmplY3RcbiAgICBpbmhlcml0IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUgd2l0aFxuICAgICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgfm1hcmtfYXNfc2VlbjpmYWxzZSBBdHRycy5vcGFxdWUgY3R5cGUpIC0+XG4gICAgICAgICgpXG4gICAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPiAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuICBlbmQpXG4gICNnb1xuICAgICgpXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIHRvIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX29mX3lvanNvbl9vZiB+bG9jIHQgPSBbJXR5cGU6IFsldCB0XSAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnRdXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl95b2pzb25fb2ZcblxuICBsZXQgbWtfc2lnIH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwICgoIF4gKSBcInlvanNvbl9vZl9cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOihta190eXBlIHRkKVxuICAgICAgICAgICB+cHJpbTpbXSkpXG4gIDs7XG5lbmRcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiBmcm9tIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX29mX29mX3lvanNvbiB+bG9jIHQgPSBbJXR5cGU6IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCAtPiBbJXQgdF1dXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl9vZl95b2pzb25cblxuICBsZXQgc2lnX29mX3RkIHdpdGhfcG9seSB0ZCA9XG4gICAgbGV0IG9mX3lvanNvbl90eXBlID0gbWtfdHlwZSB0ZCBpblxuICAgIGxldCBsb2MgPSB7IHRkLnB0eXBlX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBvZl95b2pzb25faXRlbSA9XG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBzIF4gXCJfb2ZfeW9qc29uXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICB+cHJpbTpbXSlcbiAgICBpblxuICAgIG1hdGNoIHdpdGhfcG9seSwgaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlIHdpdGhcbiAgICB8IHRydWUsIGBTdXJlbHlfbm90IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlNpZ19nZW5lcmF0ZV9vZl95b2pzb24uc2lnX29mX3RkOiB5b2pzb25fcG9seSBhbm5vdGF0aW9uIGJ1dCB0eXBlIGlzIHN1cmVseSBub3QgXFxcbiAgICAgICAgIGEgcG9seW1vcnBoaWMgdmFyaWFudFwiXG4gICAgfCBmYWxzZSwgKGBTdXJlbHlfbm90IHwgYE1heWJlKSAtPiBbIG9mX3lvanNvbl9pdGVtIF1cbiAgICB8ICh0cnVlIHwgZmFsc2UpLCBgRGVmaW5pdGVseSB8IHRydWUsIGBNYXliZSAtPlxuICAgICAgWyBvZl95b2pzb25faXRlbVxuICAgICAgOyBwc2lnX3ZhbHVlXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IFwiX19cIiBeIHMgXiBcIl9vZl95b2pzb25fX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICAgIH5wcmltOltdKVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBta19zaWcgfnBvbHkgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHNpZ19vZl90ZCBwb2x5KVxuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gICgqIEhhbmRsaW5nIG9mIHJlY29yZCBkZWZhdWx0cyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IH5sb2MgaWQgfmY6KGZ1biBzIC0+IFwieW9qc29uX29mX1wiIF4gcykgYXJnc1xuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB5b2pzb25fb2ZfdHlwZVxuICAgICAgICAgICAgfih0eXBldmFyX2hhbmRsaW5nIDogWyBgb2sgb2YgUmVuYW1pbmcudCB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciBdKVxuICAgICAgICAgICAgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IFsldHlwZTogX10gLT4gRnVuIFslZXhwciBmdW4gXyAtPiBgU3RyaW5nIFwiX1wiXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCBbIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkgXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSV5b2pzb25fb2Y6IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIlxuICAgICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYmluZGluZ19raW5kIHJlbmFtaW5nIHBhcm0gd2l0aFxuICAgICAgICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgcGFybSAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmQgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgWyV0eXBlOiBfXSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgICh5b2pzb25fb2ZfdHlwZV9jb25zdHJcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBpZFxuICAgICAgICAgICAoTGlzdC5tYXAgYXJncyB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSkpKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIF9mIC0+XG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9mdW4gUHB4X3lvanNvbl9jb252X2xpYi5pZ25vcmVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3ZhcmlhbnQgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFt5b2pzb25fb2ZdIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOihmdW4gdHAgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcHZhcnMsIGV2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBpbl9leHByID0gWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIGV2YXJzXV0gaW5cbiAgICBsZXQgZXhwciA9IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGluX2V4cHIgaW5cbiAgICBwcGF0X3R1cGxlIH5sb2MgcHZhcnMgLS0+IGV4cHJcblxuICAoKiBDb252ZXJzaW9uIG9mIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIHlvanNvbl9vZl92YXJpYW50XG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICgobG9jLCByb3dfZmllbGRzKSA6IExvY2F0aW9uLnQgKiByb3dfZmllbGQgbGlzdClcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBpdGVtIHJvdyA9XG4gICAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3cgaW5cbiAgICAgIG1hdGNoIHJvdy5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBdXVxuICAgICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV1dIGluXG4gICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9IExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZykgYXJncyBpblxuICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgfmxvYyAoU29tZSBwYXR0KVxuICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV1cbiAgICAgIHwgUmluaGVyaXQgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIFtdKTsgXyB9IC0+XG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKVxuICAgICAgICAtLT4geW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgWyBbJWV4cHIgdl0gXVxuICAgICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUnRhZy8mXCJcbiAgICAgIHwgUmluaGVyaXQgKHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBfIDo6IF8pOyBfIH0gYXMgdHlwKSAtPlxuICAgICAgICBsZXQgY2FsbCA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHR5cCkgaW5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpIC0tPiBbJWV4cHIgWyVlIGNhbGxdIHZdXG4gICAgICB8IFJpbmhlcml0IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUmluaGVyaXQvbm9uLWlkXCJcbiAgICAgICgqIGltcG9zc2libGU/KilcbiAgICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIE1hdGNoIChMaXN0Lm1hcCB+ZjppdGVtIHJvd19maWVsZHMpXG5cbiAgKCogUG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkcyAqKVxuICBhbmQgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAoKiBTaG91bGQgYmUgaW1wb3NzaWJsZSBiZWNhdXNlIFt5b2pzb25fb2ZfcG9seV0gaXMgb25seSBjYWxsZWQgb24gcG9seW1vcnBoaWMgcmVjb3JkXG4gICAgICAgICBmaWVsZHMgYW5kIHJlY29yZCB0eXBlIGRlZmluaXRpb25zIGNhbid0IG9jY3VyIGluIHR5cGUgZXhwcmVzc2lvbnMuICopXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBvbHltb3JwaGljIHR5cGUgaW4gYSB0eXBlIGV4cHJlc3Npb25cIlxuICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgICAgaW5cbiAgICAgIGxldCByZW5hbWluZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHBhcm1zIH5pbml0OnJlbmFtaW5nIH5mOlJlbmFtaW5nLmFkZF91bml2ZXJzYWxseV9ib3VuZFxuICAgICAgaW5cbiAgICAgIChtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgICAgTWF0Y2hcbiAgICAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgICAgIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICAgICBdKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgcmVjb3JkIHR5cGVzICopXG5cbiAgbGV0IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgPVxuICAgIGxldCBwID0gTG9jLm1ha2UgKExvbmdpZGVudC5MaWRlbnQgbmFtZSkgfmxvYywgcHZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgIHBhdHQgQCBbIHAgXVxuICA7O1xuXG4gIHR5cGUgaXNfZW1wdHlfZXhwciA9XG4gICAgfCBJbnNwZWN0X3ZhbHVlIG9mIChsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG4gICAgfCBJbnNwZWN0X3lvanNvbiBvZiAoY252X2V4cHI6ZXhwcmVzc2lvbiAtPiBsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG5cbiAgbGV0IHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHlfZXhwciBrZXkgPVxuICAgIGxldCBsb2MgPSB7IHRwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgIHwgRnVuIGV4cCAtPiBleHBcbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gZWwgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZWxdIG1hdGNoaW5nc11dXG4gICAgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbnZfZXhwclxuICAgICAgfCBTb21lIHlvanNvbl9vZiAtPiBbJWV4cHIgWyVlIHlvanNvbl9vZl0gWyVlIGNudl9leHByXV1cbiAgICBpblxuICAgIGxldCBleHByID1cbiAgICAgIGxldCB2X25hbWUgPSBcInZfXCIgXiBuYW1lIGluXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgbWF0Y2ggaXNfZW1wdHlfZXhwciB3aXRoXG4gICAgICAgICAgICB8IEluc3BlY3RfdmFsdWUgaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciBsb2MgKGV2YXIgfmxvYyB2X25hbWUpXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1cbiAgICAgICAgICAgIHwgSW5zcGVjdF95b2pzb24gaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciB+Y252X2V4cHIgbG9jIFslZXhwciBhcmddXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXVxuICAgICAgICBpblxuICAgICAgICBbJWUgZXhwcl1dXG4gICAgaW5cbiAgICBwYXR0LCBleHByXG4gIDs7XG5cbiAgbGV0IGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXMgfnR5cGVzX2JlaW5nX2RlZmluZWQgfmxvYyB+d2h5IHRwID1cbiAgICBsZXQgZGlzYWxsb3dfdmFyaWFibGVzID1cbiAgICAgIGxldCBpdGVyID1cbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgfCBQdHlwX3ZhciB2IC0+XG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgY29udGFpbnMgXFxcbiAgICAgICAgICAgICAgICAgYSB0eXBlIHZhcmlhYmxlOiAnJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbiBpcyBub3QgYXZhaWFibGUgZm9yIHR5cGUgdmFyaWFibGVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgbGV0IGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBmdW4gXyAtPiAoKVxuICAgICAgfCBgUmVjdXJzaXZlIHR5cGVzX2JlaW5nX2RlZmluZWQgLT5cbiAgICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyBsb2MgPSBfOyB0eHQgPSBMaWRlbnQgcyB9LCBfKSBhcyB0IC0+XG4gICAgICAgICAgICAgICAgaWYgU2V0Lm1lbSB0eXBlc19iZWluZ19kZWZpbmVkIHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdHlwZSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBibG9jazogJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IHN1cHBvcnRlZC5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBkaXNhbGxvd192YXJpYWJsZXMgdHA7XG4gICAgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIHRwXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgIGhvd1xuICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgcGF0dFxuICAgICAgICBleHByXG4gICAgICAgIG5hbWVcbiAgICAgICAgdHBcbiAgICAgICAgP3lvanNvbl9vZlxuICAgICAgICBkZWZhdWx0XG4gICAgICAgIGtleVxuICAgID1cbiAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHlvanNvbiAtPlxuICAgICAgICBJbnNwZWN0X3lvanNvblxuICAgICAgICAgIChmdW4gfmNudl9leHByIGxvYyB5b2pzb25fZXhwciAtPlxuICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIChbJWUgY252X2V4cHJdIFslZSBkZWZhdWx0XSkgWyVlIHlvanNvbl9leHByXV0pXG4gICAgICB8IChgbm9fYXJnIHwgYGZ1bmMgXyB8IGBjb21wYXJlIHwgYGVxdWFsKSBhcyBob3cgLT5cbiAgICAgICAgbGV0IGVxdWFsaXR5X2YgbG9jID1cbiAgICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgIHwgYG5vX2FyZyAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbQG9jYW1sLnBwd2FybmluZ1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0XSBpcyBkZXByZWNhdGVkOiBcXFxuICAgICAgICAgICAgICAgICBwbGVhc2UgdXNlIG9uZSBvZjpcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdCBmXSBhbmQgZ2l2ZSBhbiBcXFxuICAgICAgICAgICAgICAgICBleHBsaWNpdCBlcXVhbGl0eSBmdW5jdGlvbiAoW2YgPSBcXFxuICAgICAgICAgICAgICAgICBQb2x5Lig9KV0gY29ycmVzcG9uZHMgdG8gdGhlIG9sZCBcXFxuICAgICAgICAgICAgICAgICBiZWhhdmlvcilcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWNvbXBhcmVdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslZXF1YWxdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBpZiB5b3UgXFxcbiAgICAgICAgICAgICAgICAgd2FudCB0byBjb21wYXJlIHRoZSB5b2pzb24gXFxcbiAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zXFxuXCJdXVxuICAgICAgICAgIHwgYGZ1bmMgZiAtPiBmXG4gICAgICAgICAgfCBgY29tcGFyZSAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBjb21wYXJlXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVjb21wYXJlLmVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgICB8IGBlcXVhbCAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBlcXVhbFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICBpblxuICAgICAgICBJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSBlcXVhbGl0eV9mIGxvY10gWyVlIGRlZmF1bHRdIFslZSBleHByXV0pXG4gICAgaW5cbiAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5IGtleVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+cmVuYW1pbmcgbG9jIGZsZHMgfndyYXBfZXhwciA9XG4gICAgbGV0IGNvbGwgKChwYXR0IDogKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QpLCBleHByKSBsZCA9XG4gICAgICBsZXQgbmFtZSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBsZC5wbGRfbmFtZS5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLllvanNvbl9vZi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICB8IGB5b2pzb25fb3B0aW9uIHRwIC0+XG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBbJWV4cHIgdl0gaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpXSB3aXRoXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBibmRzXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICBibmQgOjogYm5kc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFslZSBleHByXV1cbiAgICAgICAgaW5cbiAgICAgICAgcGF0dCwgZXhwclxuICAgICAgfCBgZHJvcF9kZWZhdWx0IGhvdyAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICAobWF0Y2ggQXR0cmlidXRlLmdldCBBdHRycy5kZWZhdWx0IGxkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm5vIGRlZmF1bHQgdG8gZHJvcFwiXG4gICAgICAgICB8IFNvbWUgZGVmYXVsdCAtPlxuICAgICAgICAgICB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgaG93XG4gICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgcGF0dFxuICAgICAgICAgICAgIGV4cHJcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgdHBcbiAgICAgICAgICAgICBkZWZhdWx0XG4gICAgICAgICAgICAga2V5KVxuICAgICAgfCBgZHJvcF9pZiB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBwYXR0XG4gICAgICAgICAgZXhwclxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICB0cFxuICAgICAgICAgIChJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSB0ZXN0XSBbJWUgZXhwcl1dKSlcbiAgICAgICAgICBrZXlcbiAgICAgIHwgYGtlZXAgYXMgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IGBrZWVwIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICAgIHwgYG9taXRfbmlsIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGNudl9leHByXSB3aXRoXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gYm5kc1xuICAgICAgICAgICAgICB8IGFyZyAtPiAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgIGluXG4gICAgICAgICggcGF0dFxuICAgICAgICAsIFslZXhwclxuICAgICAgICAgIGxldCBibmRzID0gWyVlIGJuZHNdIGluXG4gICAgICAgICAgWyVlIGV4cHJdXSApXG4gICAgaW5cbiAgICBsZXQgaW5pdF9leHByID0gd3JhcF9leHByIFslZXhwciBibmRzXSBpblxuICAgIGxldCBwYXR0LCBleHByID0gTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDooW10sIGluaXRfZXhwcikgZmxkcyBpblxuICAgICggcHBhdF9yZWNvcmQgfmxvYyBwYXR0IENsb3NlZFxuICAgICwgWyVleHByXG4gICAgICBsZXQgYm5kcyA6IChzdHJpbmcgKiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQpIGxpc3QgPSBbXSBpblxuICAgICAgWyVlIGV4cHJdXSApXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiBzdW0gdHlwZXMgKilcblxuICBsZXQgYnJhbmNoX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCByZW5hbWluZyB+bG9jIGNvbnN0cl9saWQgY29uc3RyX3N0ciBhcmdzID1cbiAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IFBjc3RyX3JlY29yZCBsZHMgLT5cbiAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgbG9jXG4gICAgICAgICAgbGRzXG4gICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBMaXN0IFsgWyVlIGNuc3RyX2V4cHJdOyBgQXNzb2MgWyVlIGV4cHJdIF1dKVxuICAgICAgaW5cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KSAtLT4gZXhwclxuICAgIHwgUGNzdHJfdHVwbGUgcGNkX2FyZ3MgLT5cbiAgICAgIChtYXRjaCBwY2RfYXJncyB3aXRoXG4gICAgICAgfCBbXSAtPlxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIE5vbmUgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdIF1dXG4gICAgICAgfCBhcmdzIC0+XG4gICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPVxuICAgICAgICAgICBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykpIGFyZ3NcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICAgaW5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KVxuICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXSlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0cHMgY2RzID1cbiAgICBGdW5fb3JfbWF0Y2guTWF0Y2hcbiAgICAgIChMaXN0Lm1hcCBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcub2ZfZ2FkdCB0cHMgY2QgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbGlkID0gTG9jYXRlZC5tYXAgbGlkZW50IGNkLnBjZF9uYW1lIGluXG4gICAgICAgICBsZXQgY29uc3RyX25hbWUgPVxuICAgICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgaW5cbiAgICAgICAgICAgTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgfD4gZXN0cmluZyB+bG9jOmNkLnBjZF9uYW1lLmxvY1xuICAgICAgICAgaW5cbiAgICAgICAgIGJyYW5jaF9zdW1cbiAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgcmVuYW1pbmdcbiAgICAgICAgICAgfmxvYzpjZC5wY2RfbG9jXG4gICAgICAgICAgIGNvbnN0cl9saWRcbiAgICAgICAgICAgY29uc3RyX25hbWVcbiAgICAgICAgICAgY2QucGNkX2FyZ3MpKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IHlvanNvbl9vZl9uaWwgbG9jID0gRnVuX29yX21hdGNoLkZ1biBbJWV4cHIgZnVuIF92IC0+IGFzc2VydCBmYWxzZV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBjZHMgLT5cbiAgICAgICAgICB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIChMaXN0Lm1hcCB0cHMgfmY6KGZ1biB4IC0+IHgudHh0KSkgY2RzXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPlxuICAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLmlkZW50aXR5IGluXG4gICAgICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBsZHNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBBc3NvYyBbJWUgZXhwcl1dKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTWF0Y2ggWyBwYXR0IC0tPiBleHByIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4geW9qc29uX29mX25pbCBsb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgUmVuYW1pbmcuaWRlbnRpdHkpIHR5KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19wcml2YXRlX2FsaWFzID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCwgdGQucHR5cGVfbWFuaWZlc3QsIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0LCBTb21lIF8sIFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBpc19wcml2YXRlX2FsaWFzXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogUmVwbGFjZSBhbGwgdHlwZSB2YXJpYWJsZSBieSBfIHRvIGF2b2lkIGdlbmVyYWxpemF0aW9uIHByb2JsZW1zICopXG4gICAgICAgIGxldCB0eV9zcmMgPVxuICAgICAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtYW5pZmVzdCA9XG4gICAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgIHwgU29tZSBtYW5pZmVzdCAtPiBtYW5pZmVzdFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInlvanNvbl9vZl90ZC9uby1tYW5pZmVzdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eV9kc3QgPSByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBtYW5pZmVzdCBpblxuICAgICAgICBsZXQgY29lcmNpb24gPSBbJWV4cHIgKHYgOiBbJXQgdHlfc3JjXSA6PiBbJXQgdHlfZHN0XSldIGluXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgY29lcmNpb24gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIGNvZXJjaW9uIG1hdGNoaW5nc11dKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aCByZWN1cnNpdmUgdHlwZXMgYnlcbiAgICAgICAgICAgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHZdIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzKVxuICAgIGluXG4gICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfdHlwZSB0ZCBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgbGV0IHJlY19mbGFnID1cbiAgICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICAgIHwgYFJlY3Vyc2l2ZSBfIC0+IFJlY3Vyc2l2ZVxuICAgICAgICB8IGBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIFsgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5IF1cbiAgOztcblxuICBsZXQgeW9qc29uX29mX3RkcyB+bG9jIH5wYXRoOl8gKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgIGxldCB0eXBlc19iZWluZ19kZWZpbmVkID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IGBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGBSZWN1cnNpdmVcbiAgICAgICAgICAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dCkpKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkKSBpblxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGZsZHMgPVxuICAgIGxldCBjb2xsIGxkID1cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgZXN0cmluZyB+bG9jIGtleVxuICAgIGluXG4gICAgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6Y29sbCBmbGRzKVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPiB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGxkc1xuICAgICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9vcGVuIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IHlvanNvbl9maWVsZHMgb25seSB3b3JrcyBvbiByZWNvcmRzXCJcbiAgICBpblxuICAgIGxldCB0eXAgPSBbJXR5cGU6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9maWVsZHNfb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX2ZpZWxkc19vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGRzIH5sb2MgfnBhdGg6XyAoXywgdGRzKSA9XG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIChMaXN0Lm1hcCB0ZHMgfmY6eW9qc29uX2ZpZWxkc19vZl90ZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICAoKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuICAoKiBIYW5kbGUgYmFja3RyYWNraW5nIHdoZW4gdmFyaWFudHMgZG8gbm90IG1hdGNoICopXG4gIGxldCBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwciA9XG4gICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXSAtLT4gZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0byBnZW5lcmF0ZSBhIG1hdGNoIGZvciB0aGUgbGFzdFxuICAgICBjYXNlIG9mIG1hdGNoaW5nIGEgdmFyaWFudCAqKVxuICBsZXQgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hlcyA9XG4gICAgbWF0Y2ggbWF0Y2hfbGFzdCwgbWF0Y2hlcyB3aXRoXG4gICAgfCB0cnVlLCBbIHsgcGNfbGhzID0gXzsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXVxuICAgIHwgXywgWyB7IHBjX2xocyA9IFslcGF0PyBfXTsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXSAtPiBleHByXG4gICAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXRvbV0gbWF0Y2hlc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIG1hbGZvcm1lZCBZb2pzb25zICopXG4gIGxldCBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzIGNhbGwgPVxuICAgIGxldCBjb2xsX3N0cnVjdHMgYWNjIChsb2MsIGxhYmVsKSA9XG4gICAgICAocHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAtLT5cbiAgICAgICBtYXRjaCBjYWxsIHdpdGhcbiAgICAgICB8IGBwdGFnX25vX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfbm9fYXJncyBfdHBfbG9jIF95b2pzb25dXG4gICAgICAgfCBgcHRhZ190YWtlc19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyBfeW9qc29uXSlcbiAgICAgIDo6IGFjY1xuICAgIGluXG4gICAgbGV0IGV4Y19ub192YXJpYW50X21hdGNoID1cbiAgICAgIFslcGF0PyBfXSAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKV1cbiAgICBpblxuICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGxfc3RydWN0cyB+aW5pdDpbIGV4Y19ub192YXJpYW50X21hdGNoIF0gcmV2X2Vsc1xuICA7O1xuXG4gICgqIFNwbGl0IHRoZSByb3cgZmllbGRzIG9mIGEgdmFyaWFudCB0eXBlIGludG8gbGlzdHMgb2YgYXRvbWljIHZhcmlhbnRzLFxuICAgICBzdHJ1Y3R1cmVkIHZhcmlhbnRzLCBhdG9taWMgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLFxuICAgICBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMuICopXG4gIGxldCBzcGxpdF9yb3dfZmllbGQgfmxvYyAoYXRvbXMsIHN0cnVjdHMsIGFpbmhzLCBzaW5ocykgcm93X2ZpZWxkID1cbiAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3dfZmllbGQgaW5cbiAgICBtYXRjaCByb3dfZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgdHBsID0gbG9jLCBsYWJlbCBpblxuICAgICAgdHBsIDo6IGF0b21zLCBzdHJ1Y3RzLCBgQSB0cGwgOjogYWluaHMsIHNpbmhzXG4gICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBhdG9tcywgKGxvYywgbGFiZWwpIDo6IHN0cnVjdHMsIGFpbmhzLCBgUyAobG9jLCBsYWJlbCwgdHAsIHJvd19maWVsZCkgOjogc2luaHNcbiAgICB8IFJpbmhlcml0IGluaCAtPlxuICAgICAgbGV0IGlpbmggPSBgSSBpbmggaW5cbiAgICAgIGF0b21zLCBzdHJ1Y3RzLCBpaW5oIDo6IGFpbmhzLCBpaW5oIDo6IHNpbmhzXG4gICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwic3BsaXRfcm93X2ZpZWxkLyZcIlxuICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdHlwZV9jb25zdHJfb2ZfeW9qc29uID8oaW50ZXJuYWwgPSBmYWxzZSkgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGlkIGFyZ3MgfmxvYyB+ZjooZnVuIHMgLT5cbiAgICAgIGxldCBzID0gcyBeIFwiX29mX3lvanNvblwiIGluXG4gICAgICBpZiBpbnRlcm5hbCB0aGVuIFwiX19cIiBeIHMgXiBcIl9fXCIgZWxzZSBzKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlID8oaW50ZXJuYWwgPSBmYWxzZSkgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSB8IFsldHlwZTogX10gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoICh0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBvayAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSVvZl95b2pzb246IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIilcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biBhcmcgLT5cbiAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBhcmcpKVxuICAgICAgaW5cbiAgICAgIEZ1biAodHlwZV9jb25zdHJfb2ZfeW9qc29uIH5sb2MgfmludGVybmFsIGlkIGFyZ3MpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5mdW5fb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFtvZl95b2pzb25dIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGZwcyBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFslcCBwbGlzdCB+bG9jIHBhdHRzXV1cbiAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF90dXBsZSB+bG9jIHZhcnMpXG4gICAgOyBbJXBhdD8geW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICBbJWUgZWludCB+bG9jIG5dXG4gICAgICAgICAgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oID1cbiAgICBsZXQgbG9jID0gaW5oLnB0eXBfbG9jIGluXG4gICAgbGV0IGZ1bmNfZXhwciA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCBpblxuICAgIGxldCBhcHAgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgICBsZXQgZnVuX2V4cHIgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGZ1bmNfZXhwciBpblxuICAgICAgRnVuIFslZXhwciBbJWUgZnVuX2V4cHJdIF95b2pzb25dXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZXhjID1cbiAgICAgIGhhbmRsZV9ub192YXJpYW50X21hdGNoXG4gICAgICAgIGxvY1xuICAgICAgICAoaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcylcbiAgICBpblxuICAgIGxldCBuZXdfb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBbIFslcGF0PyBfXVxuICAgICAgICAtLT4gcGV4cF90cnlcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICAoWyVlIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgYXBwXVxuICAgICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgICAgIG1hdGNoX2V4Y1xuICAgICAgXVxuICAgIGluXG4gICAgbmV3X290aGVyX21hdGNoZXMsIHRydWVcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBhdG9taWMgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbSB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfYXRvbXNfaW5ocyB+cmV2X3N0cnVjdHMgPVxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBBIChsb2MsIGxhYmVsKSAtPlxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgICAgIC0tPiBwZXhwX3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPVxuICAgICAgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfc3RydWN0cyBgcHRhZ190YWtlc19hcmdzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfYXRvbXNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X2F0b21zX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX2F0b21zX2luaHNcblxuICAoKiBWYXJpYW50IGNvbnZlcnNpb25zICopXG5cbiAgKCogTWF0Y2ggYXJndW1lbnRzIG9mIGNvbnN0cnVjdG9ycyAodmFyaWFudHMgb3Igc3VtIHR5cGVzKSAqKVxuICBhbmQgbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50IGxhYmVsIHRwcyA9XG4gICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgbGV0IGNuc3RyIHZhcnNfZXhwciA9XG4gICAgICBpZiBpc192YXJpYW50XG4gICAgICB0aGVuIHBleHBfdmFyaWFudCB+bG9jIGNuc3RyX2xhYmVsIChTb21lIHZhcnNfZXhwcilcbiAgICAgIGVsc2UgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgdmFyc19leHByKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgICAgbGV0IGdvb2RfYXJnX21hdGNoID1cbiAgICAgICAgbGV0IHZhcnNfZXhwciA9XG4gICAgICAgICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgICAgICAgfCBbIHZhcl9leHByIF0gLT4gdmFyX2V4cHJcbiAgICAgICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHZhcnNcbiAgICAgICAgaW5cbiAgICAgICAgY25zdHIgdmFyc19leHByXG4gICAgICBpblxuICAgICAgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaFxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBtYXRjaCB5b2pzb25fYXJncyB3aXRoXG4gICAgICB8IFslcCBwbGlzdCB+bG9jIHBhdHRzXSAtPiBbJWUgcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZ29vZF9hcmdfbWF0Y2hdXG4gICAgICB8IF8gLT5cbiAgICAgICAgWyVlXG4gICAgICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBzdHJ1Y3R1cmVkIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICA9XG4gICAgbGV0IGhhc19zdHJ1Y3RzX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBTIChsb2MsIGxhYmVsLCB0cCwgX3JvdykgLT5cbiAgICAgICAgaGFzX3N0cnVjdHNfcmVmIDo9IHRydWU7XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbWtfY25zdHJfYXJnc19tYXRjaFxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5sb2M6dHAucHR5cF9sb2NcbiAgICAgICAgICAgIH5pc192YXJpYW50OnRydWVcbiAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIFslcGF0PyBbJXAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIGFzIF90YWddIC0tPiBleHByXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPSBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9hdG9tcyBgcHRhZ19ub19hcmdzIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdHNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X3N0cnVjdHNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfc3RydWN0c19pbmhzLCAhaGFzX3N0cnVjdHNfcmVmXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgYXRvbWljIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzIChpLmUuIG5vdFxuICAgICBpbmNsdWRlZCB2YXJpYW50IHR5cGVzKSAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkX2xpc3QgPVxuICAgIGxldCByZXZfYXRvbXMsIHJldl9zdHJ1Y3RzLCByZXZfYXRvbXNfaW5ocywgcmV2X3N0cnVjdHNfaW5ocyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjooc3BsaXRfcm93X2ZpZWxkIH5sb2MpIH5pbml0OihbXSwgW10sIFtdLCBbXSkgcm93X2ZpZWxkX2xpc3RcbiAgICBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3QsIGhhc19zdHJ1Y3RzID1cbiAgICAgIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgIGluXG4gICAgbGV0IG1heWJlX3lvanNvbl9hcmdzX3BhdHQgPSBpZiBoYXNfc3RydWN0cyB0aGVuIFslcGF0PyB5b2pzb25fYXJnc10gZWxzZSBbJXBhdD8gX10gaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgYXRvbSBdIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWtfdmFyaWFudF9tYXRjaF9hdG9tXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmdWxsX3R5cGVcbiAgICAgICAgICAgIH5yZXZfYXRvbXNfaW5oc1xuICAgICAgICAgICAgfnJldl9zdHJ1Y3RzXG4gICAgOyBbJXBhdD8gYExpc3QgKGBTdHJpbmcgYXRvbSA6OiBbJXAgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dF0pIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWF0Y2hfc3RydWN0XG4gICAgOyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgdmFyaWFudHMgKilcbiAgYW5kIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcykgPVxuICAgIGxldCBpc19jb250YWluZWQsIGZ1bGxfdHlwZSA9XG4gICAgICBtYXRjaCBmdWxsX3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIHB0eXBfdmFyaWFudCB+bG9jIHJvd19maWVsZHMgQ2xvc2VkIE5vbmVcbiAgICAgIHwgU29tZSBmdWxsX3R5cGUgLT4gZmFsc2UsIGZ1bGxfdHlwZVxuICAgIGluXG4gICAgbGV0IHRvcF9tYXRjaCA9XG4gICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgIHwgeyBwcmZfZGVzYyA9IFJpbmhlcml0IGluaDsgXyB9IDo6IHJlc3QgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGluaCByb3dfZmllbGRzID1cbiAgICAgICAgICBsZXQgY2FsbCA9XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgKFslZVxuICAgICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByXG4gICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oKV1cbiAgICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGNhbGxcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgICAgICBtYXRjaCBoLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCBpbmggLT4gbG9vcCBpbmggdFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcmZ0YWdfbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gcmZ0YWdfbWF0Y2hlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBleHBfdHJ5IH5sb2MgY2FsbCAoaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIpXG4gICAgICAgIGluXG4gICAgICAgIFsgWyVwYXQ/IHlvanNvbl0gLS0+IGxvb3AgaW5oIHJlc3QgXVxuICAgICAgfCBfIDo6IF8gLT4gaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGltcG9zc2libGUgKilcbiAgICBpblxuICAgIGlmIGlzX2NvbnRhaW5lZFxuICAgIHRoZW5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICB0cnkgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSB0b3BfbWF0Y2hdIHdpdGhcbiAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgZWxzZSBNYXRjaCB0b3BfbWF0Y2hcblxuICBhbmQgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgIH5sb2NcbiAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICBpblxuICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgIGluXG4gICAgbWF0Y2ggdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHAgd2l0aFxuICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgIE1hdGNoXG4gICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBleHRyYWN0aW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgPVxuICAgIGxldCByZWMgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpbml0cywgbm9fYXJncywgYXJnc1xuICAgICAgfCBsZCA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgbGV0IGtleSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpubSAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKSBpblxuICAgICAgICAobWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkLCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIHRwKSwgXyB8IChOb25lIHwgU29tZSAoYGRlZmF1bHQgXykpLCB0cCAtPlxuICAgICAgICAgICBsZXQgaW5pdHMgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZV0gOjogaW5pdHMgaW5cbiAgICAgICAgICAgbGV0IHVucm9sbGVkID1cbiAgICAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBbJWV4cHIgX2ZpZWxkX3lvanNvbl1cbiAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgICAgIChwc3RyaW5nIH5sb2Mga2V5XG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWUgPSBbJWUgdW5yb2xsZWRdIGluXG4gICAgICAgICAgICAgICAgICBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXVxuICAgICAgICAgICAgICAgICAgOj0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBmdmFsdWVcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcyA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlc10pXG4gICAgICAgICAgICAgOjogYXJnc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyBtb3JlX2ZsZHMpXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX2V4dHJhID1cbiAgICAgIFsgKFslcGF0PyBfXVxuICAgICAgICAgLS0+XG4gICAgICAgICBpZiBhbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgIHRoZW4gWyVleHByICgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICBpZiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApXG4gICAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICB0aGVuIGV4dHJhIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYVxuICAgICAgICAgICAgIGVsc2UgKCldKVxuICAgICAgXVxuICAgIGluXG4gICAgbG9vcCBbXSBoYW5kbGVfZXh0cmEgaGFuZGxlX2V4dHJhIChMaXN0LnJldiBmbGRzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGhhc19ub25vcHRfZmllbGRzID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMgPVxuICAgICAgbGV0IHJlYyBsb29wICgocmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBsb2MgfTsgXyB9IGFzIGxkKSA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgICBsZXQgZmxkID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1dIGluXG4gICAgICAgICAgbGV0IG1rX2RlZmF1bHQgbG9jID1cbiAgICAgICAgICAgIGJpX2xzdCwgWyVwYXQ/IFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXSA6OiBnb29kX3BhdHRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgXyB8IGB5b2pzb25fb3B0aW9uIF8pIC0+IG1rX2RlZmF1bHQgbG9jXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaGFzX25vbm9wdF9maWVsZHMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgKCBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgWyVlIGZsZF0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAsIFslZSBlc3RyaW5nIH5sb2Mgbm1dXVxuICAgICAgICAgICAgICAgIDo6IGJpX2xzdFxuICAgICAgICAgICAgICAsIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXVxuICAgICAgICAgICAgICAgIDo6IGdvb2RfcGF0dHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjYyA9IFslZXhwciBbJWUgZmxkXV0gOjogcmVzX3RwbHMsIG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzIGluXG4gICAgICAgICAgbG9vcCBhY2MgbW9yZV9mbGRzXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgbG9vcCAoW10sIFtdLCBbXSkgKExpc3QucmV2IGZsZHMpXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZ29vZF9leHByID1cbiAgICAgIGlmIGhhc19wb2x5XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNudnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IF8gfTsgXyB9IC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMgd2l0aFxuICAgICAgICB8IFsgbWF0Y2hfZ29vZF9leHByIF0gLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIHwgbWF0Y2hfZ29vZF9leHBycyAtPiBwZXhwX3R1cGxlIH5sb2MgbWF0Y2hfZ29vZF9leHBycylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY252dCBsZCA9XG4gICAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IGRlZmF1bHQpIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gWyVlIGRlZmF1bHRdXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT4gdl1cbiAgICAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gXykgfCBOb25lIC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBubSwgdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgd3JhcF9leHByIChwZXhwX3JlY29yZCB+bG9jIChMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMpIE5vbmUpKVxuICAgIGluXG4gICAgbGV0IGV4cHIsIHBhdHQgPVxuICAgICAgbWF0Y2ggcmVzX3RwbHMsIGdvb2RfcGF0dHMgd2l0aFxuICAgICAgfCBbIHJlc19leHByIF0sIFsgcmVzX3BhdHQgXSAtPiByZXNfZXhwciwgcmVzX3BhdHRcbiAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgcmVzX3RwbHMsIHBwYXRfdHVwbGUgfmxvYyBnb29kX3BhdHRzXG4gICAgaW5cbiAgICBpZiAhaGFzX25vbm9wdF9maWVsZHNcbiAgICB0aGVuXG4gICAgICBwZXhwX21hdGNoXG4gICAgICAgIH5sb2NcbiAgICAgICAgZXhwclxuICAgICAgICBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICA7IFslcGF0PyBfXVxuICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICBbJWUgZWxpc3QgfmxvYyBiaV9sc3RdXVxuICAgICAgICBdXG4gICAgZWxzZSBwZXhwX21hdGNoIH5sb2MgZXhwciBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgY29udmVydGluZyByZWNvcmQgZmllbGRzICopXG5cbiAgbGV0IG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgZXhwcl9yZWZfaW5pdHMsIF9tY19ub19hcmdzX2ZpZWxkcywgbWNfZmllbGRzX3dpdGhfYXJncyA9XG4gICAgICBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpXG4gICAgaW5cbiAgICBsZXQgZmllbGRfcmVmcyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAgIGZsZHNcbiAgICAgICAgZXhwcl9yZWZfaW5pdHNcbiAgICAgICAgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IGluaXQgLT5cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKG5hbWUgXiBcIl9maWVsZFwiKSlcbiAgICAgICAgICAgIH5leHByOlslZXhwciByZWYgWyVlIGluaXRdXSlcbiAgICBpblxuICAgIHBleHBfbGV0XG4gICAgICB+bG9jXG4gICAgICBOb25yZWN1cnNpdmVcbiAgICAgIChmaWVsZF9yZWZzXG4gICAgICAgQCBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBkdXBsaWNhdGVzXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgOyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZXh0cmFdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICBdKVxuICAgICAgWyVleHByXG4gICAgICAgIGxldCByZWMgaXRlciA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBwZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyBbJXBhdD8gKGZpZWxkX25hbWUsIF9maWVsZF95b2pzb24pIDo6IHRhaWxdXG4gICAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgICAgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZmllbGRfbmFtZV0gbWNfZmllbGRzX3dpdGhfYXJnc107XG4gICAgICAgICAgICAgICAgICBpdGVyIHRhaWxdXG4gICAgICAgICAgICAgIDsgWyVwYXQ/IFtdXSAtLT4gWyVleHByICgpXVxuICAgICAgICAgICAgICBdXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIGZpZWxkX3lvanNvbnM7XG4gICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcyB3aXRoXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcylcbiAgICAgICAgICAgIHlvanNvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgKG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEgd2l0aFxuICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEpXG4gICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgfCBbXSAtPiBbJWUgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwcl0pXVxuICA7O1xuXG4gIGxldCBpc19wb2x5IChfLCBmbGRzKSA9XG4gICAgTGlzdC5leGlzdHMgZmxkcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgeyBwbGRfdHlwZSA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfTsgXyB9IC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICBsb2NcbiAgICAgICAgZmxkc1xuICAgICAgICB+d3JhcF9leHByXG4gICAgPVxuICAgIGxldCBoYXNfcG9seSA9IGlzX3BvbHkgKGxvYywgZmxkcykgaW5cbiAgICBsZXQgY252X2ZpZWxkcyA9XG4gICAgICBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwclxuICAgIGluXG4gICAgaWYgaGFzX3BvbHlcbiAgICB0aGVuIChcbiAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgbGV0IHBhdHMgPVxuICAgICAgICAgIExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+IHB2YXIgfmxvYyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwYXRzIHdpdGhcbiAgICAgICAgfCBbIHBhdCBdIC0+IHBhdFxuICAgICAgICB8IHBhdHMgLT4gcHBhdF90dXBsZSB+bG9jIHBhdHNcbiAgICAgIGluXG4gICAgICBsZXQgcmVjb3JkX2RlZiA9XG4gICAgICAgIHdyYXBfZXhwclxuICAgICAgICAgIChwZXhwX3JlY29yZFxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAoTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT5cbiAgICAgICAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKSlcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgaW5cbiAgICAgIHBleHBfbGV0XG4gICAgICAgIH5sb2NcbiAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGF0dCB+ZXhwcjpjbnZfZmllbGRzIF1cbiAgICAgICAgcmVjb3JkX2RlZilcbiAgICBlbHNlIGNudl9maWVsZHNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciByZWNvcmRzICopXG4gIGxldCByZWNvcmRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgTWF0Y2hcbiAgICAgIFsgWyVwYXQ/IGBBc3NvYyBmaWVsZF95b2pzb25zIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGZsZHNcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIHggLT4geClcbiAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b21cbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIF1cbiAgOztcblxuICAoKiBTdW0gdHlwZSBjb252ZXJzaW9ucyAqKVxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB3ZWxsLWZvcm1lZCBZb2pzb25zIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3JlY29yZCBmaWVsZHM7IF8gfSAtPlxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX2NkIGNkKSlcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZSAtPlxuICAgICAgICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSBlKSlcbiAgICAgICAgaW5cbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZyk7IGBBc3NvYyBmaWVsZF95b2pzb25zIF1cbiAgICAgICAgICBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBleHByXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIF1dXG4gICAgICAgIC0tPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSBOb25lXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfIGFzIHRwcyk7IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgKGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZykgOjogeW9qc29uX2FyZ3MpIGFzXG4gICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgLS0+IG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudDpmYWxzZSBsYWJlbCB0cHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgbWFsZm9ybWVkIFlvanNvbnMgd2l0aCBnb29kIHRhZ3NcbiAgICAgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYExpc3QgKGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX25vX2FyZ3MgX3RwX2xvYyB5b2pzb25dXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfKSB8IFBjc3RyX3JlY29yZCBfOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyB5b2pzb25dKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHN1bSB0eXBlcyAqKVxuICBsZXQgc3VtX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBhbHRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBsZXQgYWx0cyA9XG4gICAgICBMaXN0Lm1hcCBhbHRzIH5mOihmdW4gY2QgLT4gY2QsIExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZClcbiAgICBpblxuICAgIE1hdGNoXG4gICAgICAoTGlzdC5jb25jYXRcbiAgICAgICAgIFsgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgYWx0cylcbiAgICAgICAgIDsgWyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW1cbiAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW1cbiAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgICAgICAgICBdXG4gICAgICAgICBdKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IG5pbF9vZl95b2pzb24gbG9jIDogRnVuX29yX21hdGNoLnQgPVxuICAgIEZ1blxuICAgICAgWyVleHByXG4gICAgICAgIGZ1biB5b2pzb24gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV90eXBlIF90cF9sb2MgeW9qc29uXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jOl8gfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgZnVsbF90eXBlID1cbiAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgaW5cbiAgICBsZXQgaXNfcHJpdmF0ZSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgIHwgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICB8IFB1YmxpYyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfcHJpdmF0ZVxuICAgIHRoZW4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJvZl95b2pzb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcHJpdmF0ZSB0eXBlXCI7XG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiA9XG4gICAgICBtYXRjaCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOmZhbHNlIHdpdGhcbiAgICAgIHwgYERlZmluaXRlbHkgLT4gdHJ1ZVxuICAgICAgfCBgTWF5YmUgLT4gcG9seVxuICAgICAgfCBgU3VyZWx5X25vdCAtPlxuICAgICAgICBpZiBwb2x5XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIFwieW9qc29uX3BvbHkgYW5ub3RhdGlvbiBvbiBhIHR5cGUgdGhhdCBpcyBzdXJlbHkgbm90IGEgcG9seW1vcnBoaWMgdmFyaWFudFwiO1xuICAgICAgICBmYWxzZVxuICAgIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGFsdHMgLT5cbiAgICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgdGQ7XG4gICAgICAgICAgc3VtX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAodGQucHR5cGVfbG9jLCBhbHRzKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBsYmxzIC0+XG4gICAgICAgICAgcmVjb3JkX29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfdGQgdGQpKVxuICAgICAgICAgICAgKGxvYywgbGJscylcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgdGQ7XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG5pbF9vZl95b2pzb24gdGQucHR5cGVfbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAgICAgIHR5cGVfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICB+ZnVsbF90eXBlXG4gICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICAgfmludGVybmFsOmNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICAgICAgICAgdHkpXG4gICAgICBpblxuICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aFxuICAgICAgICAgcmVjdXJzaXZlIHR5cGVzIGJ5IGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdCAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdF0gXV1dXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfbmFtZSA9IHR5cGVfbmFtZSBeIFwiX29mX3lvanNvblwiIGluXG4gICAgbGV0IGludGVybmFsX25hbWUgPSBcIl9fXCIgXiB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25fX1wiIGluXG4gICAgbGV0IGFyZ19wYXR0cywgYXJnX2V4cHJzID1cbiAgICAgIExpc3QudW56aXBcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICBsZXQgbmFtZSA9IFwiX29mX1wiIF4gdHAudHh0IGluXG4gICAgICAgICAgICAgcHZhciB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKVxuICAgICAgICAgICB0cHMpXG4gICAgaW5cbiAgICBsZXQgYmluZF90cF9sb2NfaW4gPVxuICAgICAgbGV0IGZ1bGxfdHlwZV9uYW1lID0gUHJpbnRmLnNwcmludGYgXCIlcy4lc1wiIHBhdGggdHlwZV9uYW1lIGluXG4gICAgICBmdW4gZSAtPlxuICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+XG4gICAgICAgICAgKCogd2UgZGVmaW5pdGVseSBkb24ndCB1c2UgdGhlIHN0cmluZywgc28gY2xlYW4gdXAgdGhlIGdlbmVyYXRlZCBjb2RlIGEgYml0ICopXG4gICAgICAgICAgZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBfdHBfbG9jID0gWyVlIGVzdHJpbmcgfmxvYyBmdWxsX3R5cGVfbmFtZV0gaW5cbiAgICAgICAgICAgIFslZSBlXV1cbiAgICBpblxuICAgIGxldCBpbnRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBpZiBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgIHRoZW5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChiaW5kX3RwX2xvY19pblxuICAgICAgICAgICAgIChldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keSkpKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgbGV0IG5lZWRfdHBfbG9jLCBib2R5X2JlbG93X2xhbWJkYXMgPVxuICAgICAgICBpZiBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5vX3ZhcmlhbnRfbWF0Y2hfbWMgPVxuICAgICAgICAgICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxfY2FsbCA9XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxfZXhwciA9IGV2YXIgfmxvYyBpbnRlcm5hbF9uYW1lIGluXG4gICAgICAgICAgICBlYXBwbHkgfmxvYyBpbnRlcm5hbF9leHByIChhcmdfZXhwcnMgQCBbIFslZXhwciB5b2pzb25dIF0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJ5X3dpdGggPSBwZXhwX3RyeSB+bG9jIGludGVybmFsX2NhbGwgbm9fdmFyaWFudF9tYXRjaF9tYyBpblxuICAgICAgICAgIGZhbHNlLCBiaW5kX3RwX2xvY19pbiBbJWV4cHIgZnVuIHlvanNvbiAtPiBbJWUgdHJ5X3dpdGhdXSlcbiAgICAgICAgZWxzZSB0cnVlLCBib2R5XG4gICAgICBpblxuICAgICAgbGV0IGJvZHlfd2l0aF9sYW1iZGFzID1cbiAgICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG4gICAgICAgICAgfnJlY19mbGFnXG4gICAgICAgICAgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5X2JlbG93X2xhbWJkYXMpXG4gICAgICBpblxuICAgICAgaWYgbmVlZF90cF9sb2MgdGhlbiBiaW5kX3RwX2xvY19pbiBib2R5X3dpdGhfbGFtYmRhcyBlbHNlIGJvZHlfd2l0aF9sYW1iZGFzXG4gICAgaW5cbiAgICBsZXQgbWtfYmluZGluZyBmdW5jX25hbWUgYm9keSA9XG4gICAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta190eXBlIHRkIGluXG4gICAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgICBpblxuICAgIGxldCBpbnRlcm5hbF9iaW5kaW5ncyA9XG4gICAgICBtYXRjaCBpbnRlcm5hbF9mdW5fYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBib2R5IC0+IFsgbWtfYmluZGluZyBpbnRlcm5hbF9uYW1lIGJvZHkgXVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2JpbmRpbmcgPSBta19iaW5kaW5nIGV4dGVybmFsX25hbWUgZXh0ZXJuYWxfZnVuX2JvZHkgaW5cbiAgICBpbnRlcm5hbF9iaW5kaW5ncywgWyBleHRlcm5hbF9iaW5kaW5nIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuICBsZXQgdGRzX29mX3lvanNvbiB+bG9jIH5wb2x5IH5wYXRoIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHR5cGV2YXJfaGFuZGxpbmcgPSBgb2sgaW5cbiAgICBsZXQgc2luZ2xldG9uID1cbiAgICAgIG1hdGNoIHRkcyB3aXRoXG4gICAgICB8IFsgXyBdIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgc2luZ2xldG9uXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGludGVybmFscyBAIGV4dGVybmFscylcbiAgICAgICAgaW5cbiAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgUmVjdXJzaXZlIGJpbmRpbmdzXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgaW50ZXJuYWxzXG4gICAgICAgICAgQCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgZXh0ZXJuYWxzKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfnBvbHkgfmxvYyB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGludGVybmFscyBAIGV4dGVybmFscylcbiAgICAgIGluXG4gICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5ncylcbiAgOztcblxuICBsZXQgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfnBhdGggY3R5cCA9XG4gICAgbGV0IGxvYyA9IHsgY3R5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBmcCA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGN0eXAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgWyVlIGZ1bl9leHByXSB5b2pzb25dXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gbWF0Y2hpbmdzXG4gICAgaW5cbiAgICBsZXQgZnVsbF90eXBlX25hbWUgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyBsaW5lICVpOiAlc1wiXG4gICAgICAgIHBhdGhcbiAgICAgICAgbG9jLmxvY19zdGFydC5wb3NfbG51bVxuICAgICAgICAoc3RyaW5nX29mX2NvcmVfdHlwZSBjdHlwKVxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgIGxldCBfdHBfbG9jID0gWyVlIGVzdHJpbmcgfmxvYyBmdWxsX3R5cGVfbmFtZV0gaW5cbiAgICAgICAgWyVlIGJvZHldXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLnR5cGVfb2ZfeW9qc29uX29mIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgdHkgPVxuICAgIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YueW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIHR5XG4gICAgfD4gRnVuX29yX21hdGNoLmV4cHIgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fb2YueW9qc29uX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBZb2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMueW9qc29uX2ZpZWxkc19vZl90ZHNcbmVuZFxuXG5tb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX29mX3lvanNvbiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlID1cbiAgICBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwclxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uLnRkc19vZl95b2pzb25cbmVuZFxuXG5tb2R1bGUgU2lnX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgbWtfc2lnIH5sb2MgfnBhdGggZGVjbHMgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgICBAIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnIH5wb2x5OmZhbHNlIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCB+bG9jIH5wYXRoICgoX3JmLCB0ZHMpIGFzIGRlY2xzKSA9XG4gICAgbWF0Y2hcbiAgICAgIG1rX25hbWVkX3NpZ1xuICAgICAgICB+bG9jXG4gICAgICAgIH5zZ19uYW1lOlwiUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25hYmxlLlNcIlxuICAgICAgICB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQ6ZmFsc2VcbiAgICAgICAgdGRzXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmNsdWRlX2luZm9zIC0+IFsgcHNpZ19pbmNsdWRlIH5sb2MgaW5jbHVkZV9pbmZvcyBdXG4gICAgfCBOb25lIC0+IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzb29fcnVudGltZS5SdW50aW1lX3ZlcnNpb24gKilcbm1vZHVsZSBSdW50aW1lX3ZlcnNpb24gPSBKc29vX3J1bnRpbWVfX1J1bnRpbWVfdmVyc2lvblxuXG5tb2R1bGUgSnNvb19ydW50aW1lX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcbmVuZFxuXG5tb2R1bGUgU3lzID0gc3RydWN0XG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAnYVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbiAgZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDogb3V0X2NoYW5uZWwgLT4gKGpzX3N0cmluZzpKcy50IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxuICBleHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOiBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuICBleHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbiAgbW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICAgIGV4dGVybmFsIHVzZV9qc19zdHJpbmcgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGVmZmVjdHMgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcbiAgZW5kXG5cbiAgbGV0IHZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uc1xuXG4gIGxldCBnaXRfdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5naXRfdmVyc2lvblxuZW5kXG5cbm1vZHVsZSBFcnJvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcmFpc2VfIDogdCAtPiAnYVxuXG4gIHZhbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuXG4gICgqKiBBdHRhY2ggYSBKYXZhc1NjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhc1NjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFzU2NyaXB0IGVycm9ycyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdoZW4gY29tcGlsaW5nIHdpdGhcbiAgICBbLS1lbmFibGUgd2l0aC1qcy1lcnJvcl0uICopXG5cbiAgdmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvblxuICAoKiogRXh0cmFjdCBhIEphdmFTY3JpcHQgZXJyb3IgYXR0YWNoZWQgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLCBpZiBhbnkuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgICAgaW5zcGVjdCBhbiBldmVudHVhbCBzdGFjayBzdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgbGV0IHJhaXNlXyA6IHQgLT4gJ2EgPSBKcy5qc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9udCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZXMgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5lbmRcblxubW9kdWxlIFR5cGVkX2FycmF5ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdHlwZWRBcnJheSA9IEpzLnRcblxuICB0eXBlIGFycmF5QnVmZmVyID0gSnMudFxuXG4gIHR5cGUgdWludDhBcnJheSA9IEpzLnRcblxuICBleHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gICAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheVxuICAgID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICAgKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICAgID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gICAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbiAgZW5kXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZV9pbnQ2NF9sb19taV9oaSA6IGludCAtPiBpbnQgLT4gaW50IC0+IEludDY0LnRcbiAgICA9IFwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcIlxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5DU1MgKilcbm1vZHVsZSBDU1MgPSBKc19vZl9vY2FtbF9fQ1NTXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbSAqKVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sX19Eb21cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2V2ZW50cyAqKVxubW9kdWxlIERvbV9ldmVudHMgPSBKc19vZl9vY2FtbF9fRG9tX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21faHRtbCAqKVxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWxfX0RvbV9odG1sXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9zdmcgKilcbm1vZHVsZSBEb21fc3ZnID0gSnNfb2Zfb2NhbWxfX0RvbV9zdmdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRXZlbnRTb3VyY2UgKilcbm1vZHVsZSBFdmVudFNvdXJjZSA9IEpzX29mX29jYW1sX19FdmVudFNvdXJjZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaWxlICopXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sX19GaWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpcmVidWcgKilcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWxfX0ZpcmVidWdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRm9ybSAqKVxubW9kdWxlIEZvcm0gPSBKc19vZl9vY2FtbF9fRm9ybVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5HZW9sb2NhdGlvbiAqKVxubW9kdWxlIEdlb2xvY2F0aW9uID0gSnNfb2Zfb2NhbWxfX0dlb2xvY2F0aW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRsICopXG5tb2R1bGUgSW50bCA9IEpzX29mX29jYW1sX19JbnRsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzICopXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbF9fSnNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnNvbiAqKVxubW9kdWxlIEpzb24gPSBKc19vZl9vY2FtbF9fSnNvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc3RhYmxlICopXG5tb2R1bGUgSnN0YWJsZSA9IEpzX29mX29jYW1sX19Kc3RhYmxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkxpYl92ZXJzaW9uICopXG5tb2R1bGUgTGliX3ZlcnNpb24gPSBKc19vZl9vY2FtbF9fTGliX3ZlcnNpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTXV0YXRpb25PYnNlcnZlciAqKVxubW9kdWxlIE11dGF0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fTXV0YXRpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5QZXJmb3JtYW5jZU9ic2VydmVyICopXG5tb2R1bGUgUGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzX29mX29jYW1sX19QZXJmb3JtYW5jZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlZ2V4cCAqKVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sX19SZWdleHBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVzaXplT2JzZXJ2ZXIgKilcbm1vZHVsZSBSZXNpemVPYnNlcnZlciA9IEpzX29mX29jYW1sX19SZXNpemVPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5TeXNfanMgKilcbm1vZHVsZSBTeXNfanMgPSBKc19vZl9vY2FtbF9fU3lzX2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlR5cGVkX2FycmF5ICopXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbF9fVHlwZWRfYXJyYXlcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVXJsICopXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWxfX1VybFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJHTCAqKVxubW9kdWxlIFdlYkdMID0gSnNfb2Zfb2NhbWxfX1dlYkdMXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYlNvY2tldHMgKilcbm1vZHVsZSBXZWJTb2NrZXRzID0gSnNfb2Zfb2NhbWxfX1dlYlNvY2tldHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV29ya2VyICopXG5tb2R1bGUgV29ya2VyID0gSnNfb2Zfb2NhbWxfX1dvcmtlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfX1htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgbG9jYWwgbW9kdWxlIFtKc10gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHBweF9qcyBleHRlbnNpb24gd29yayB3aXRoaW4gdGhhdCBmaWxlLiAqKVxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgKydhIHRcblxuICB0eXBlICgtJ2EsICsnYikgbWV0aF9jYWxsYmFja1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHRvcFxuXG4gICAgdHlwZSBhbnkgPSB0b3AgdFxuXG4gICAgdHlwZSBhbnlfanNfYXJyYXkgPSBhbnlcblxuICAgIGV4dGVybmFsIGluamVjdCA6ICdhIC0+IGFueSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGNvZXJjZSA6IF8gdCAtPiBfIHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBnZXQgOiAnYSAtPiAnYiAtPiAnYyA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0IDogJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gICAgZXh0ZXJuYWwgZGVsZXRlIDogJ2EgLT4gJ2IgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbCA6ICdhIC0+ICdiIC0+IGFueSBhcnJheSAtPiAnYyA9IFwiY2FtbF9qc19jYWxsXCJcblxuICAgIGV4dGVybmFsIGZ1bl9jYWxsIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbCA6ICdhIC0+IHN0cmluZyAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICAgIGV4dGVybmFsIG5ld19vYmogOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbmV3XCJcblxuICAgIGV4dGVybmFsIG5ld19vYmpfYXJyIDogJ2EgLT4gYW55X2pzX2FycmF5IC0+ICdiID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICAgIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiBhbnkpIGFycmF5IC0+ICdhID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICAgIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gICAgbGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgIChhbnlfanNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgYW55X2pzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKCdiIC0+IGFueV9qc19hcnJheSAtPiAnYSkgLT4gKCdiLCBhbnlfanNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgKCogREVQUkVDQVRFRCAqKVxuICAgIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2Egb3B0ID0gJ2FcblxuICB0eXBlICdhIG9wdGRlZiA9ICdhXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBsZXQgbnVsbCA6ICdhIG9wdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcblxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2Egb3B0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCB1bmRlZmluZWQgOiAnYSBvcHRkZWYgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSBvcHRkZWYgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIHR5cGUgT1BUID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZW1wdHkgOiAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAgIHZhbCB0ZXN0IDogJ2EgdCAtPiBib29sXG5cbiAgICB2YWwgaXRlciA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBjYXNlIDogJ2EgdCAtPiAodW5pdCAtPiAnYikgLT4gKCdhIC0+ICdiKSAtPiAnYlxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXG5cbiAgICB2YWwgb3B0aW9uIDogJ2Egb3B0aW9uIC0+ICdhIHRcblxuICAgIHZhbCB0b19vcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvblxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuICBlbmRcblxuICBtb2R1bGUgT3B0IDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0XG5cbiAgICBsZXQgZW1wdHkgPSBudWxsXG5cbiAgICBsZXQgcmV0dXJuID0gc29tZVxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKGVxdWFscyB4IG51bGwpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKGVxdWFscyB4IG51bGwpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGRlZiA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZlxuXG4gICAgbGV0IGVtcHR5ID0gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmV0dXJuID0gZGVmXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgbGV0IGNvZXJjZSB4IGYgZyA9IE9wdC5nZXQgKGYgeCkgKGZ1biAoKSAtPiBnIHgpXG5cbiAgbGV0IGNvZXJjZV9vcHQgeCBmIGcgPSBPcHQuZ2V0IChPcHQuYmluZCB4IGYpIChmdW4gKCkgLT4gZyB4KVxuXG4gICgqKioqKVxuXG4gIHR5cGUgKydhIG1ldGhcblxuICB0eXBlICsnYSBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcmVhZG9ubHlfcHJvcCA9IDwgZ2V0IDogJ2EgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egd3JpdGVvbmx5X3Byb3AgPSA8IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcHJvcCA9IDwgZ2V0IDogJ2EgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIG9wdGRlZl9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICsnYSBjb25zdHJcblxuICAoKioqKilcblxuICB0eXBlICdhIGNhbGxiYWNrID0gKHVuaXQsICdhKSBtZXRoX2NhbGxiYWNrXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5cbiAgKCoqKiopXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAoKioqKilcblxuICBsZXQgX3RydWUgPSBVbnNhZmUucHVyZV9qc19leHByIFwidHJ1ZVwiXG5cbiAgbGV0IF9mYWxzZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5cbiAgdHlwZSBtYXRjaF9yZXN1bHRfaGFuZGxlXG5cbiAgdHlwZSBzdHJpbmdfYXJyYXlcblxuICB0eXBlIG51bWJlcl90ID0gZmxvYXRcblxuICBjbGFzcyB0eXBlIG51bWJlciA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZ19yYWRpeCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9GaXhlZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsX2RpZ2l0cyA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9QcmVjaXNpb24gOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBlbmRcblxuICBhbmQganNfc3RyaW5nID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHZhbHVlT2YgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckF0IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQ29kZUF0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICAgICgqIFRoaXMgbWF5IHJldHVybiBOYU4uLi4gKilcbiAgICBtZXRob2QgY29uY2F0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8zIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF80IDpcbiAgICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxvY2FsZUNvbXBhcmUgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICBtZXRob2QgX21hdGNoIDogcmVnRXhwIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZV9mb3JtIDogbm9ybWFsaXphdGlvbiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlIDogcmVnRXhwIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2Vfc3RyaW5nIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNlYXJjaCA6IHJlZ0V4cCB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0IDoganNfc3RyaW5nIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X2xpbWl0ZWQgOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cCA6IHJlZ0V4cCB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHBMaW1pdGVkIDogcmVnRXhwIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmcgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmdfdG9FbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRyaW0gOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgYW5kIHJlZ0V4cCA9IG9iamVjdFxuICAgIG1ldGhvZCBleGVjIDoganNfc3RyaW5nIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2QgdGVzdCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc291cmNlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGdsb2JhbCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlQ2FzZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbXVsdGlsaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBsYXN0SW5kZXggOiBpbnQgcHJvcFxuICBlbmRcblxuICBhbmQgbm9ybWFsaXphdGlvbiA9IGpzX3N0cmluZ1xuXG4gICgqIHN0cmluZyBpcyB1c2VkIGJ5IHBweF9qcywgaXQgbmVlZHMgdG8gY29tZSBiZWZvcmUgYW55IHVzZSBvZiB0aGVcbiAgICAgbmV3IHN5bnRheCBpbiB0aGlzIGZpbGUgKilcbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgbGV0IG5mYyA9IHN0cmluZyBcIk5GQ1wiXG5cbiAgbGV0IG5mZCA9IHN0cmluZyBcIk5GRFwiXG5cbiAgbGV0IG5ma2MgPSBzdHJpbmcgXCJORktDXCJcblxuICBsZXQgbmZrZCA9IHN0cmluZyBcIk5GS0RcIlxuZW5kXG5cbmluY2x1ZGUgSnNcblxuY2xhc3MgdHlwZSBzdHJpbmdfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tQ2hhckNvZGUgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBzdHJpbmdfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9TdHJpbmdcblxubGV0IHJlZ0V4cCA9IFVuc2FmZS5nbG9iYWwjIy5fUmVnRXhwXG5cbmxldCByZWdFeHBfY29weSA9IHJlZ0V4cFxuXG5sZXQgcmVnRXhwX3dpdGhGbGFncyA9IHJlZ0V4cFxuXG5jbGFzcyB0eXBlIFsnYV0ganNfYXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgY29uY2F0IDogJ2EganNfYXJyYXkgdCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgam9pbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcG9wIDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgcHVzaCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHJldmVyc2UgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2hpZnQgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydCA6ICgnYSAtPiAnYSAtPiBudW1iZXJfdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnRfYXNTdHJpbmdzIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8xIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzIgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMyA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV80IDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNvbWUgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBldmVyeSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvckVhY2ggOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1hcCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGZpbHRlciA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VfaW5pdCA6ICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2UgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHRfaW5pdCA6XG4gICAgKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0IDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5lbmRcblxubGV0IG9iamVjdF9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBvYmplY3Rfa2V5cyBvIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IG9iamVjdF9jb25zdHJ1Y3RvciMja2V5cyBvXG5cbmxldCBhcnJheV9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fQXJyYXlcblxubGV0IGFycmF5X2VtcHR5ID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2xlbmd0aCA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9nZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gVW5zYWZlLmdldFxuXG5sZXQgYXJyYXlfc2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBVbnNhZmUuc2V0XG5cbmxldCBhcnJheV9tYXBfcG9seSA6XG4gICAgJ2EgI2pzX2FycmF5IHQgLT4gKCdhIC0+IGludCAtPiAnYSAjanNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgI2pzX2FycmF5IHQgPVxuIGZ1biBhIGNiIC0+IChVbnNhZmUuY29lcmNlIGEpIyNtYXAgY2JcblxubGV0IGFycmF5X21hcCBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBfaWR4IF8gLT4gZiB4KSlcblxubGV0IGFycmF5X21hcGkgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggaWR4IF8gLT4gZiBpZHggeCkpXG5cbmNsYXNzIHR5cGUgbWF0Y2hfcmVzdWx0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2pzX3N0cmluZyB0XSBqc19hcnJheVxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlucHV0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBzdHJfYXJyYXkgOiBzdHJpbmdfYXJyYXkgdCAtPiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gVW5zYWZlLmNvZXJjZVxuXG5sZXQgbWF0Y2hfcmVzdWx0IDogbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IC0+IG1hdGNoX3Jlc3VsdCB0ID0gVW5zYWZlLmNvZXJjZVxuXG5jbGFzcyB0eXBlIGRhdGUgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVUaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB2YWx1ZU9mIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0Z1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0U2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ1NlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lem9uZU9mZnNldCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZ1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0hvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDU2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRvVVRDU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0lTT1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9KU09OIDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZGF0ZV9jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21vbnRoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfZGF5IDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfaG91ciA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbWluIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfc2VjIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21zIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgbm93IDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBkYXRlX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRGF0ZVxuXG5sZXQgZGF0ZSA6IGRhdGVfY29uc3RyIHQgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ub3cgOiBkYXRlIHQgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZnJvbVRpbWVWYWx1ZSA6IChudW1iZXJfdCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21vbnRoIDogKGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9kYXkgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ob3VyIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21pbiA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfc2VjIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbXMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID1cbiAgZGF0ZV9jb25zdHJcblxuY2xhc3MgdHlwZSBtYXRoID0gb2JqZWN0XG4gIG1ldGhvZCBfRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMTAgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cyRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzEwRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BJIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDFfMl8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuMiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY2VpbCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBleHAgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGZsb29yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBsb2cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcG93IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByYW5kb20gOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJvdW5kIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNxcnQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgbWF0aCA9IFVuc2FmZS5nbG9iYWwjIy5fTWF0aFxuXG5jbGFzcyB0eXBlIGVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFjayA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBlcnJvcl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Vycm9yXG5cbm1vZHVsZSBKc19lcnJvciA9IHN0cnVjdFxuICB0eXBlIGVycm9yX3QgPSBlcnJvciB0XG5cbiAgaW5jbHVkZSBKc29vX3J1bnRpbWUuRXJyb3JcblxuICBleHRlcm5hbCBvZl9lcnJvciA6IGVycm9yX3QgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuICBleHRlcm5hbCB0b19lcnJvciA6IHQgLT4gZXJyb3JfdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgbmFtZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm5hbWVcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm1lc3NhZ2VcblxuICBsZXQgc3RhY2sgKGUgOiB0KSA6IHN0cmluZyBvcHRpb24gPVxuICAgIE9wdC50b19vcHRpb24gKE9wdC5tYXAgKHRvX2Vycm9yIGUpIyMuc3RhY2sgdG9fc3RyaW5nKVxuXG4gIGxldCB0b19zdHJpbmcgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjI3RvU3RyaW5nXG5lbmRcblxubW9kdWxlIE1hZ2ljID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBleGNlcHRpb24gRXJyb3Igb2YgZXJyb3IgdFxuICBlbmRcblxuICB0eXBlICgnYSwgJ2IpIGVxID0gRXEgOiAoJ2EsICdhKSBlcVxuXG4gIGxldCAoZXEgOiAoZXJyb3IgdCwgSnNfZXJyb3IudCkgZXEpID0gT2JqLm1hZ2ljIEVxXG5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGVxIHdpdGhcbiAgICB8IEVxIC0+XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgZXhjZXB0aW9uIEVycm9yID0gSnNfZXJyb3IuRXhuXG4gICAgICAgIGVuZCA6IFQpXG5cbiAgbW9kdWxlIEVycm9yID0gKHZhbCBtIDogVClcbmVuZFxuXG5pbmNsdWRlIE1hZ2ljLkVycm9yXG5cbmxldCByYWlzZV9qc19lcnJvciBlID0gSnNfZXJyb3IucmFpc2VfIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgc3RyaW5nX29mX2Vycm9yIGUgPSBKc19lcnJvci50b19zdHJpbmcgKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBleG5fd2l0aF9qc19iYWNrdHJhY2UgPSBKc19lcnJvci5hdHRhY2hfanNfYmFja3RyYWNlXG5cbmV4dGVybmFsIGpzX2Vycm9yX29mX2V4biA6IGV4biAtPiBlcnJvciB0IG9wdCA9IFwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cIlxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IF9KU09OIDoganNvbiB0ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBkZWNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZGVjb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IHVuZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnVuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5leHRlcm5hbCBib29sIDogYm9vbCAtPiBib29sIHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgdG9fYm9vbCA6IGJvb2wgdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG5leHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+ICdhIGpzX2FycmF5IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2FycmF5IDogJ2EganNfYXJyYXkgdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbmV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB0b19ieXRlc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuZXh0ZXJuYWwgZmxvYXQgOiBmbG9hdCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBudW1iZXJfdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IG51bWJlciB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiBudW1iZXIgdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIGludDMyIDogaW50MzIgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbmV4dGVybmFsIHRvX2ludDMyIDogbnVtYmVyX3QgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG5leHRlcm5hbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBudW1iZXJfdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdHlwZW9mIDogXyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbmV4dGVybmFsIGluc3RhbmNlb2YgOiBfIHQgLT4gXyBjb25zdHIgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxubGV0IGlzTmFOIChpIDogJ2EpIDogYm9vbCA9XG4gIHRvX2Jvb2wgKFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuaXNOYU4gW3wgVW5zYWZlLmluamVjdCBpIHxdKVxuXG5sZXQgcGFyc2VJbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBpbnQgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VJbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlSW50XCIgZWxzZSBzXG5cbmxldCBwYXJzZUZsb2F0IChzIDoganNfc3RyaW5nIHQpIDogbnVtYmVyX3QgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VGbG9hdCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VGbG9hdFwiIGVsc2Ugc1xuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEpzX2Vycm9yLkV4biBlIC0+IFNvbWUgKEpzX2Vycm9yLnRvX3N0cmluZyBlKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGUgLT5cbiAgICAgIGxldCBlIDogPCAuLiA+IHQgPSBPYmoubWFnaWMgZSBpblxuICAgICAgaWYgaW5zdGFuY2VvZiBlIGFycmF5X2NvbnN0cnVjdG9yIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX3N0cmluZyBlIyN0b1N0cmluZykpXG5cbmxldCBleHBvcnRfanMgKGZpZWxkIDoganNfc3RyaW5nIHQpIHggPVxuICBVbnNhZmUuc2V0XG4gICAgKFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJqc29vX2V4cG9ydHNcIilcbiAgICBmaWVsZFxuICAgIChpZiBTdHJpbmcuZXF1YWwgKEpzLnRvX3N0cmluZyAodHlwZW9mIChPYmoubWFnaWMgeCkpKSBcImZ1bmN0aW9uXCJcbiAgICAgICAgKCogZnVuY3Rpb24gd2l0aCBhcml0eS9sZW5ndGggZXF1YWwgdG8gemVybyBhcmUgYWxyZWFkeSB3cmFwcGVkICopXG4gICAgICAgICYmIFVuc2FmZS5nZXQgKE9iai5tYWdpYyB4KSAoSnMuc3RyaW5nIFwibGVuZ3RoXCIpID4gMFxuICAgICB0aGVuIE9iai5tYWdpYyAod3JhcF9jYWxsYmFjayAoT2JqLm1hZ2ljIHgpKVxuICAgICBlbHNlIHgpXG5cbmxldCBleHBvcnQgZmllbGQgeCA9IGV4cG9ydF9qcyAoc3RyaW5nIGZpZWxkKSB4XG5cbmxldCBleHBvcnRfYWxsIG9iaiA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgb2JqIGluXG4gIGtleXMjI2ZvckVhY2hcbiAgICAod3JhcF9jYWxsYmFjayAoZnVuIChrZXkgOiBqc19zdHJpbmcgdCkgXyBfIC0+IGV4cG9ydF9qcyBrZXkgKFVuc2FmZS5nZXQgb2JqIGtleSkpKVxuXG4oKioqKilcblxuKCogREVQUkVDQVRFRCAqKVxuXG50eXBlIGZsb2F0X3Byb3AgPSBudW1iZXJfdCBwcm9wXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydub2RlXSBub2RlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGxpc3Rfb2Zfbm9kZUxpc3QgKG5vZGVMaXN0IDogJ2Egbm9kZUxpc3QgdCkgPVxuICBsZXQgbGVuZ3RoID0gbm9kZUxpc3QjIy5sZW5ndGggaW5cbiAgbGV0IHJlYyBhZGRfaXRlbSBhY2MgaSA9XG4gICAgaWYgaSA8IGxlbmd0aFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKG5vZGVMaXN0IyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhZGRfaXRlbSBhY2MgKGkgKyAxKVxuICAgICAgfCBTb21lIGUgLT4gYWRkX2l0ZW0gKGUgOjogYWNjKSAoaSArIDEpXG4gICAgZWxzZSBMaXN0LnJldiBhY2NcbiAgaW5cbiAgYWRkX2l0ZW0gW10gMFxuXG50eXBlIG5vZGVUeXBlID1cbiAgfCBPVEhFUlxuICAoKiBXaWxsIG5vdCBoYXBwZW4gKilcbiAgfCBFTEVNRU5UXG4gIHwgQVRUUklCVVRFXG4gIHwgVEVYVFxuICB8IENEQVRBX1NFQ1RJT05cbiAgfCBFTlRJVFlfUkVGRVJFTkNFXG4gIHwgRU5USVRZXG4gIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTlxuICB8IENPTU1FTlRcbiAgfCBET0NVTUVOVFxuICB8IERPQ1VNRU5UX1RZUEVcbiAgfCBET0NVTUVOVF9GUkFHTUVOVFxuICB8IE5PVEFUSU9OXG5cbm1vZHVsZSBEb2N1bWVudFBvc2l0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIHR5cGUgbWFzayA9IGludFxuXG4gIGxldCBkaXNjb25uZWN0ZWQgPSAweDAxXG5cbiAgbGV0IHByZWNlZGluZyA9IDB4MDJcblxuICBsZXQgZm9sbG93aW5nID0gMHgwNFxuXG4gIGxldCBjb250YWlucyA9IDB4MDhcblxuICBsZXQgY29udGFpbmVkX2J5ID0gMHgxMFxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyA9IDB4MjBcblxuICBsZXQgaGFzIHQgbWFzayA9IHQgbGFuZCBtYXNrID0gbWFza1xuXG4gIGxldCBhZGQgeCB5ID0geCBsb3IgeVxuXG4gIGxldCAoICsgKSA9IGFkZFxuZW5kXG5cbmNsYXNzIHR5cGUgbm9kZSA9IG9iamVjdFxuICBtZXRob2Qgbm9kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVUeXBlIDogbm9kZVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBub2RlIG5vZGVMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0QmVmb3JlIDogbm9kZSB0IC0+IG5vZGUgdCBvcHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBoYXNDaGlsZE5vZGVzIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgY2xvbmVOb2RlIDogYm9vbCB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIDogbm9kZSB0IC0+IERvY3VtZW50UG9zaXRpb24udCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cE5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cFByZWZpeCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGFwcGVuZENoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjYXBwZW5kQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlbW92ZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjcmVtb3ZlQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlcGxhY2VDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0KSA9XG4gIGlnbm9yZSAocCMjcmVwbGFjZUNoaWxkIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0KSlcblxubGV0IGluc2VydEJlZm9yZSAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0IG9wdCkgPVxuICBpZ25vcmUgKHAjI2luc2VydEJlZm9yZSAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCBvcHQpKVxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbQXR0cl0gb2JqZWN0cy4gKilcbmNsYXNzIHR5cGUgYXR0ciA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlY2lmaWVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyRWxlbWVudCA6IGVsZW1lbnQgdCBwcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW05hbWVkTm9kZU1hcF0gb2JqZWN0cy4gKilcbmFuZCBbJ25vZGVdIG5hbWVkTm9kZU1hcCA9IG9iamVjdFxuICBtZXRob2QgZ2V0TmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXROYW1lZEl0ZW0gOiAnbm9kZSB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlTmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbRWxlbWVudF0gb2JqZWN0cy4gKilcbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCB0YWdOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGVOUyA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0ciBuYW1lZE5vZGVNYXAgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBjaGFyYWN0ZXJEYXRhID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJqc19zdHJpbmdEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZERhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0RGF0YSA6IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRGF0YSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGNvbW1lbnQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgdGV4dCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSBkb2N1bWVudEZyYWdtZW50ID0gbm9kZVxuXG5jbGFzcyB0eXBlIFsnZWxlbWVudF0gZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6ICdlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVEb2N1bWVudEZyYWdtZW50IDogZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50TlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dE5vZGUgOiBqc19zdHJpbmcgdCAtPiB0ZXh0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDb21tZW50IDoganNfc3RyaW5nIHQgLT4gY29tbWVudCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGltcG9ydE5vZGUgOiBlbGVtZW50IHQgLT4gYm9vbCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBhZG9wdE5vZGUgOiBlbGVtZW50IHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub2RlX3R5cGUgPVxuICB8IEVsZW1lbnQgb2YgZWxlbWVudCB0XG4gIHwgQXR0ciBvZiBhdHRyIHRcbiAgfCBUZXh0IG9mIHRleHQgdFxuICB8IE90aGVyIG9mIG5vZGUgdFxuXG5sZXQgbm9kZVR5cGUgZSA9XG4gIG1hdGNoIGUjIy5ub2RlVHlwZSB3aXRoXG4gIHwgRUxFTUVOVCAtPiBFbGVtZW50IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQVRUUklCVVRFIC0+IEF0dHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBDREFUQV9TRUNUSU9OIHwgVEVYVCAtPiBUZXh0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgXyAtPiBPdGhlciAoZSA6PiBub2RlIHQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgY2FzdCAoZSA6ICNub2RlIEpzLnQpIHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSB0IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgZWxlbWVudCBlIDogZWxlbWVudCBKcy50IEpzLm9wdCA9IGNhc3QgZSBFTEVNRU5UXG5cbiAgbGV0IHRleHQgZSA6IHRleHQgSnMudCBKcy5vcHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSBURVhUIHx8IGUjIy5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGF0dHIgZSA6IGF0dHIgSnMudCBKcy5vcHQgPSBjYXN0IGUgQVRUUklCVVRFXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IgLT4gYm9vbCB0KSBtZXRoX2NhbGxiYWNrIG9wdFxuKCoqIFRoZSB0eXBlIG9mIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9ucy4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlclxuICAgICAgWydhXSBpcyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdDsgdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIFsnYl0gaXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IG9iamVjdC4gKilcblxuY2xhc3MgdHlwZSBbJ2FdIGV2ZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gICgqIExlZ2FjeSBtZXRob2RzICopXG4gIG1ldGhvZCBzcmNFbGVtZW50IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6ICdiIEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IEpzLm51bGxcblxubGV0IHdpbmRvd19ldmVudCAoKSA6ICdhICNldmVudCB0ID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcImV2ZW50XCJcblxuKCogVGhlIGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0IG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgd2hlblxuICAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4uLiAqKVxubGV0IGhhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLmNhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZC4gKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGZ1bGxfaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUubWV0aF9jYWxsYmFjayAoZnVuIHRoaXMgZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZCAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGludm9rZV9oYW5kbGVyIChmIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIpICh0aGlzIDogJ2EpIChldmVudCA6ICdiKSA6IGJvb2wgdCA9XG4gIEpzLlVuc2FmZS5jYWxsIGYgdGhpcyBbfCBKcy5VbnNhZmUuaW5qZWN0IGV2ZW50IHxdXG5cbmxldCBldmVudFRhcmdldCAoZSA6ICg8IC4uID4gYXMgJ2EpICNldmVudCB0KSA6ICdhIHQgPVxuICBsZXQgdGFyZ2V0ID1cbiAgICBPcHQuZ2V0IGUjIy50YXJnZXQgKGZ1biAoKSAtPiBPcHQuZ2V0IGUjIy5zcmNFbGVtZW50IChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgaW5cbiAgaWYgSnMuaW5zdGFuY2VvZiB0YXJnZXQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Ob2RlXG4gIHRoZW5cbiAgICAoKiBXb3JrYXJvdW5kIGZvciBTYWZhcmkgYnVnICopXG4gICAgbGV0IHRhcmdldCcgOiBub2RlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlIHRhcmdldCBpblxuICAgIGlmIHRhcmdldCcjIy5ub2RlVHlwZSA9PSBURVhUXG4gICAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChPcHQuZ2V0IHRhcmdldCcjIy5wYXJlbnROb2RlIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICBlbHNlIHRhcmdldFxuICBlbHNlIHRhcmdldFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBtYWtlIHMgPSBKcy5zdHJpbmcgc1xuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSB1bml0IC0+IHVuaXRcblxuY2xhc3MgdHlwZSBldmVudF9saXN0ZW5lcl9vcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBjYXB0dXJlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2UgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGFzc2l2ZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5hZGRFdmVudExpc3RlbmVyKVxuICB0aGVuXG4gICAgbGV0IGV2ID0gKEpzLnN0cmluZyBcIm9uXCIpIyNjb25jYXQgdHlwIGluXG4gICAgbGV0IGNhbGxiYWNrIGUgPSBKcy5VbnNhZmUuY2FsbCAoaCwgZSwgW3x8XSkgaW5cbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYXR0YWNoRXZlbnQgZXYgY2FsbGJhY2sgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2RldGFjaEV2ZW50IGV2IGNhbGxiYWNrXG4gIGVsc2VcbiAgICBsZXQgb3B0cyA6IGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIGxldCBpdGVyIHQgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGIgLT4gZiBiXG4gICAgaW5cbiAgICBpdGVyIGNhcHR1cmUgKGZ1biBiIC0+IG9wdHMjIy5jYXB0dXJlIDo9IGIpO1xuICAgIGl0ZXIgb25jZSAoZnVuIGIgLT4gb3B0cyMjLm9uY2UgOj0gYik7XG4gICAgaXRlciBwYXNzaXZlIChmdW4gYiAtPiBvcHRzIyMucGFzc2l2ZSA6PSBiKTtcbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYWRkRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNyZW1vdmVFdmVudExpc3RlbmVyIHR5cCBoIG9wdHNcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgaCBjYXB0ID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgdHlwIH5jYXB0dXJlOmNhcHQgaFxuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBpZCA9IGlkICgpXG5cbmxldCBwcmV2ZW50RGVmYXVsdCBldiA9XG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnByZXZlbnREZWZhdWx0ICgqIElFIGhhY2sgKilcbiAgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBldikjI3ByZXZlbnREZWZhdWx0XG4gIGVsc2UgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucmV0dXJuVmFsdWUgOj0gSnMuYm9vbCBmYWxzZVxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgP2J1YmJsZXMgP2NhbmNlbGFibGUgP2RldGFpbCB0eXAgPVxuICBsZXQgb3B0X2l0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvcHRzID0gVW5zYWZlLm9iaiBbfHxdIGluXG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuYnViYmxlcyA6PSBib29sIHgpIGJ1YmJsZXM7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuY2FuY2VsYWJsZSA6PSBib29sIHgpIGNhbmNlbGFibGU7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuZGV0YWlsIDo9IHNvbWUgeCkgZGV0YWlsO1xuICBsZXQgY29uc3RyIDpcbiAgICAgICggICAoJ2EsICdiKSAjY3VzdG9tRXZlbnQgSnMudCBFdmVudC50eXBcbiAgICAgICAtPiA8IGRldGFpbCA6ICdiIG9wdCBwcm9wID4gdFxuICAgICAgIC0+ICgnYSwgJ2IpIGN1c3RvbUV2ZW50IHQpXG4gICAgICBjb25zdHIgPVxuICAgIFVuc2FmZS5nbG9iYWwjIy5fQ3VzdG9tRXZlbnRcbiAgaW5cbiAgbmV3JWpzIGNvbnN0ciB0eXAgb3B0c1xuXG4oKiBJRSA8IDkgKilcblxuY2xhc3MgdHlwZSBzdHJpbmdMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gSnNcblxudHlwZSB1aW50MzIgPSBmbG9hdFxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcbmVuZFxuXG5sZXQgYXJyYXlCdWZmZXIgOiAoaW50IC0+IGFycmF5QnVmZmVyIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fQXJyYXlCdWZmZXJcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlclZpZXcgPSBvYmplY3RcbiAgbWV0aG9kIGJ1ZmZlciA6IGFycmF5QnVmZmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB0eXBlZEFycmF5ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIF9CWVRFU19QRVJfRUxFTUVOVCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldF9mcm9tQXJyYXkgOiAnYSBqc19hcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0X2Zyb21UeXBlZEFycmF5IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXkgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5X3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gICgqIFRoaXMgZmFrZSBtZXRob2QgaXMgbmVlZGVkIGZvciB0eXBpbmcgcHVycG9zZXMuXG4gICAgIFdpdGhvdXQgaXQsIFsnYl0gd291bGQgbm90IGJlIGNvbnN0cmFpbmVkLiAqKVxuICBtZXRob2QgX2NvbnRlbnRfdHlwZV8gOiAnYiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgaW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDMyQXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQ2NEFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZWRBcnJheVxuXG5leHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHRcbiAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxubGV0IGludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfaW5CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfaW5CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCBpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21BcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2luQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9pbkJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCBpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21BcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2luQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9pbkJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21BcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2luQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21BcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2luQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBzZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPVxuIGZ1biBhIGkgdiAtPiBhcnJheV9zZXQgKFVuc2FmZS5jb2VyY2UgYSkgaSB2XG5cbmxldCBnZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxubGV0IHVuc2FmZV9nZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5jbGFzcyB0eXBlIGRhdGFWaWV3ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIGdldEludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzIgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyXyA6IGludCAtPiBib29sIHQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzJfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0XyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzJfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMiA6IGludCAtPiB1aW50MzIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMl8gOiBpbnQgLT4gdWludDMyIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMl8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0XyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGRhdGFWaWV3ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9EYXRhVmlld1xuXG5sZXQgZGF0YVZpZXdfaW5CdWZmZXIgPSBkYXRhVmlld1xuXG5tb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyIEpzLnQgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiaW5jbHVkZSBKc19vZl9vY2FtbC5Kc1xubW9kdWxlIFVybCA9IEpzX29mX29jYW1sLlVybFxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWwuRmlyZWJ1Z1xubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbC5GaWxlXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWwuRG9tXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbC5UeXBlZF9hcnJheVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sLlJlZ2V4cFxuXG50eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbnR5cGUgd2luZG93ID0gRG9tX2h0bWwud2luZG93XG5cbmxldCB0b19hcnJheWYgZiBhID0gQXJyYXkubWFwIGYgKHRvX2FycmF5IGEpXG5cbmxldCBvZl9hcnJheWYgZiBhID0gYXJyYXkgKEFycmF5Lm1hcCBmIGEpXG5cbmxldCB0b19saXN0IGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5IGFcblxubGV0IG9mX2xpc3QgbCA9IGFycmF5IEBAIEFycmF5Lm9mX2xpc3QgQEAgbFxuXG5sZXQgdG9fbGlzdGYgZiBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheWYgZiBhXG5cbmxldCBvZl9saXN0ZiBmIGEgPSBvZl9hcnJheWYgZiBAQCBBcnJheS5vZl9saXN0IGFcblxubGV0IG9wdGRlZiBmID0gZnVuY3Rpb24gTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHRkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHVub3B0ZGVmX2YgZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IGYgeFxuXG5sZXQgdW5vcHRkZWYgZGVmIHggPSBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiB4XG5cbmxldCBjb252ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBvcHQgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBjb252b3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBqc19sb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChzdHJpbmcgcylcblxubGV0IGxvZyBmbXQgPVxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF9mbXQgLT4ganNfbG9nIChzdHJpbmcgKEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSkpXG4gICAgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgZm10XG5cbmxldCBlcnJvcl9vZl9zdHJpbmcgcyA9IG5ldyVqcyBlcnJvcl9jb25zdHIgKHN0cmluZyBzKVxubGV0IGNhdGNoX2V4biBmID0gZnVuY3Rpb25cbiAgfCBKc19lcnJvci5FeG4gZSAtPiBmIChKc19lcnJvci50b19lcnJvciBlKVxuICB8IGV4biAtPiBmIEBAIGVycm9yX29mX3N0cmluZyBAQCBQcmludGV4Yy50b19zdHJpbmcgZXhuXG5cbm1vZHVsZSBBT3B0ID0gc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgbGV0IG51bGwgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IHVuZGVmaW5lZCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgY29lcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwganNfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuICBsZXQgaXNfbm9uZSAoeCA6ICdhIHQpIDogYm9vbCA9IHggPT0gdW5kZWZpbmVkIHx8IGpzX2VxdWFscyB4IG51bGxcbiAgbGV0IG1hcCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIHJldHVybiAoZiAoY29lcmNlIHgpKVxuICBsZXQgYmluZCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IgdCkgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgZiAoY29lcmNlIHgpXG4gIGxldCB0ZXN0ICh4IDogJ2EgdCkgOiBib29sID0gbm90IChpc19ub25lIHgpXG4gIGxldCBpdGVyICh4IDogJ2EgdCkgKGYgOiAnYSAtPiB1bml0KSA6IHVuaXQgPSBpZiBub3QgKGlzX25vbmUgeCkgdGhlbiBmIChjb2VyY2UgeClcbiAgbGV0IGNhc2UgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2IpIChnIDogJ2EgLT4gJ2IpIDogJ2IgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgZyAoY29lcmNlIHgpXG4gIGxldCBnZXQgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2EpIDogJ2EgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgKGNvZXJjZSB4KVxuICBsZXQgb3B0aW9uID8obm9uZT11bmRlZmluZWQpICh4IDogJ2Egb3B0aW9uKSA6ICdhIHQgPSBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gIGxldCB0b19vcHRpb24gKHggOiAnYSB0KSA6ICdhIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGxldCBhb3B0ID8obm9uZT0odW5kZWZpbmVkIDogJ2IgdCkpIChmIDogJ2EgLT4gJ2IpIDogJ2Egb3B0aW9uIC0+ICdiIHQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gIGxldCB0b19hb3B0IChmIDogJ2EgLT4gJ2IpICh4IDogJ2EgdCkgOiAnYiBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSAoZiB4KSlcbmVuZFxudHlwZSAnYSBhb3B0ID0gJ2EgQU9wdC50XG5cbnR5cGUgJ2EgY2FzZV9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgPiBnZW5fcHJvcFxuXG5sZXQgcmVjIGNob29zZV9jYXNlX29wdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgaCA6OiB0IC0+IG1hdGNoIE9wdGRlZi50b19vcHRpb24gaCB3aXRoIE5vbmUgLT4gY2hvb3NlX2Nhc2Vfb3B0IHQgfCBTb21lIF8gLT4gaFxuXG5sZXQgY2hvb3NlX2Nhc2UgbCA9IGNob29zZV9jYXNlX29wdCAoTGlzdC5tYXAgT3B0ZGVmLnJldHVybiBsKVxuXG5sZXQgb2JqZWN0X2NzID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcbmxldCBhc3NpZ24gKG8xIDogXyB0KSAobzIgOiBfIHQpID0gVW5zYWZlLmNvZXJjZSAob2JqZWN0X2NzIyNhc3NpZ24gbzEgbzIpXG5sZXQgYXNzaWduX2xpc3QgbCA9IFVuc2FmZS5jb2VyY2UgKFVuc2FmZS5tZXRoX2NhbGwgb2JqZWN0X2NzIFwiYXNzaWduXCIgKEFycmF5Lm9mX2xpc3QgbCkpXG5cbmxldCByZW1vdmVfdW5kZWZpbmVkIG8gPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG8gaW5cbiAga2V5cyMjZm9yRWFjaCAod3JhcF9jYWxsYmFjayAoZnVuIGsgXyBfIC0+XG4gICAgICBpZiBub3QgKE9wdGRlZi50ZXN0IChVbnNhZmUuZ2V0IG8gaykpIHRoZW4gVW5zYWZlLmRlbGV0ZSBvIGspKVxuIiwib3BlbiBKc1xuXG50eXBlIG5vbnJlYyAnYSB0ID0gPCA+IHRcblxubGV0IG9iaiA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpICh2IDogJ2EpID0gVW5zYWZlLnNldCB0IChzdHJpbmcgaykgdlxuXG5sZXQgYWRkX2xpc3QgKHQgOiAnYSB0KSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSBsXG5cbmxldCBhZGRfbGlzdGYgKHQgOiAnYiB0KSAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIChmIHYpKSBsXG5cbmxldCBtYWtlIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdCB0IGw7XG4gIHRcblxubGV0IG1ha2VmIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2IgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0ZiB0IGYgbDtcbiAgdFxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpID0gVW5zYWZlLmRlbGV0ZSB0IChzdHJpbmcgaylcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgOiAnYSBvcHRpb24gPVxuICBPcHRkZWYudG9fb3B0aW9uIChVbnNhZmUuZ2V0IHQgKHN0cmluZyBrKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IHN0cmluZyBsaXN0ID1cbiAgdG9fbGlzdGYgdG9fc3RyaW5nIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtcyAodCA6ICdhIHQpIDogKHN0cmluZyAqICdhKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zZiAoZiA6ICgnYSAtPiAnYikpICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2IpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIGYgQEAgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBsZW5ndGggKHQgOiAnYSB0KSA9IChvYmojI2tleXMgdCkjIy5sZW5ndGhcblxubGV0IG1lcmdlIChsIDogJ2EgdCBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIChpdGVtcyB4KSkgbDtcbiAgdFxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHByb21pc2UwID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRoZW5fIDogKCdhIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICAgIG1ldGhvZCBjYXRjaCA6ICgnYiAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9taXNlID0gWydhLCBlcnJvciB0XSBwcm9taXNlMFxuXG50eXBlICgnYSwgJ2IpIHByb21pc2VfY3MgPVxuICAoKCgnYSAtPiB1bml0KSAtPiAoJ2IgLT4gdW5pdCkgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdClcbiAgY29uc3RyXG5cbmxldCBwcm9taXNlIGYgPVxuICBsZXQgY3MgOiAoJ2EsICdiKSBwcm9taXNlX2NzID0gVW5zYWZlLmdsb2JhbCMjLl9Qcm9taXNlIGluXG4gIG5ldyVqcyBjcyAod3JhcF9jYWxsYmFjayBmKVxuXG5sZXQganRoZW4wID9lcnJvciAocHJvbSA6ICgnYSwgJ2IgdCkgcHJvbWlzZTAgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biAoZnVuIHggLT4gZWYgKFVuc2FmZS5jb2VyY2UgeCkpIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4gP2Vycm9yIChwcm9tIDogJ2EgcHJvbWlzZSB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPSBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biBlZiBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuMF9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4wIHByb20gZlxubGV0IGp0aGVuX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbiBwcm9tIGZcblxubGV0IHJ0aGVuIHByb20gZiA9XG4gIGp0aGVuIH5lcnJvcjooZnVuIGUgLT4gZiBAQCBFcnJvciBlKSBwcm9tIChmdW4geCAtPiBmIChPayB4KSlcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IGxvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgbzEgbzJcblxubGV0IGxvZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIG8xIG8yIG8zXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBsb2dfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGxvZ19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZGVidWcgbyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgb1xuXG5sZXQgZGVidWcyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIG8xIG8yXG5cbmxldCBkZWJ1ZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgbzEgbzIgbzNcblxubGV0IGRlYnVnX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBkZWJ1Z19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBkZWJ1Z19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCB3YXJuIG8gPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gb1xuXG5sZXQgd2FybjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiBvMSBvMlxuXG5sZXQgd2FybjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyBvMSBvMiBvM1xuXG5sZXQgd2Fybl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjd2FybiAoSnMuc3RyaW5nIHMpXG5cbmxldCB3YXJuX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgd2Fybl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGVycm9yIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIG9cblxubGV0IGVycm9yMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiBvMSBvMlxuXG5sZXQgZXJyb3IzIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIG8xIG8yIG8zXG5cbmxldCBlcnJvcl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKVxuXG5sZXQgZXJyb3Jfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZXJyb3Jfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIGJpZ0ludCA9IG9iamVjdFxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBvcHRkZWYgLT4gXyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHZhbHVlT2YgOiBiaWdJbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub25yZWMgdCA9IGJpZ0ludCB0XG5cbmxldCBiaWdJbnQgOiAoVW5zYWZlLmFueSAtPiB0KSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJCaWdJbnRcIlxuXG5sZXQgb2Zfc3RyaW5nIHMgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgc3RyaW5nIHMpXG5sZXQgb2ZfaW50IChpIDogaW50KSA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBpKVxubGV0IG9mX2ludDY0IChpIDogaW50NjQpID0gb2Zfc3RyaW5nIChJbnQ2NC50b19zdHJpbmcgaSlcbmxldCBvZl9uYXRpdmUgKGkgOiBuYXRpdmVpbnQpID0gb2Zfc3RyaW5nIChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfZmxvYXQgZiA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBudW1iZXJfb2ZfZmxvYXQgZilcblxubGV0IHRvX2xvY2FsZV9zdHJpbmcgP2ZtdCA/b3B0aW9ucyAobiA6IHQpID1cbiAgdG9fc3RyaW5nIChuIyN0b0xvY2FsZVN0cmluZyAob3B0ZGVmIHN0cmluZyBmbXQpIChPcHRkZWYub3B0aW9uIG9wdGlvbnMpKVxubGV0IHRvX3N0cmluZyAobiA6IHQpID0gdG9fc3RyaW5nIG4jI3RvU3RyaW5nXG4iLCJvcGVuIEpzXG5cbmxldCBzZXRJbm5lckh0bWwgZWx0IHMgPSBlbHQjIy5pbm5lckhUTUwgOj0gc3RyaW5nIHNcblxubGV0IHNldFRleHQgZWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgcyAtPlxuICAgICAgZWx0IyMudGV4dENvbnRlbnQgOj0gc29tZSAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjYWRkIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzZXMgZWx0IGwgPSBMaXN0Lml0ZXIgKGFkZENsYXNzIGVsdCkgbFxuXG5sZXQgcmVtb3ZlQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI3JlbW92ZSAoc3RyaW5nIHMpXG5cbmxldCBjb250YWluc0NsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNjb250YWlucyAoc3RyaW5nIHMpXG5cbmxldCBzZXRBdHRyaWJ1dGUgZWx0IGtleSB2YWx1ZSA9IGVsdCMjc2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSAoc3RyaW5nIHZhbHVlKVxuXG5sZXQgcmVtb3ZlQXR0cmlidXRlIGVsdCBrZXkgPSBlbHQjI3JlbW92ZUF0dHJpYnV0ZSAoc3RyaW5nIGtleSlcblxubGV0IGdldEF0dHJpYnV0ZSBlbHQga2V5ID0gT3B0LnRvX29wdGlvbiAoZWx0IyNnZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpKVxuXG5sZXQgc2V0Q1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhZGRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBsZXQgc3R5bGVzID1cbiAgICBtYXRjaCBnZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHN0eWxlc1xuICAgIHwgU29tZSBvbGRfc3R5bGVzIC0+XG4gICAgICAgIG9sZF9zdHlsZXMgXiBcIjsgXCIgXiBzdHlsZXNcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhcHBlbmRDaGlsZCA9IERvbS5hcHBlbmRDaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGQgPSBEb20ucmVtb3ZlQ2hpbGRcblxubGV0IGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9IExpc3QuaXRlciAoRG9tLmFwcGVuZENoaWxkIHBhcmVudCkgY2hpbGRyZW5cblxubGV0IGNoaWxkcmVuIHBhcmVudCA9IERvbS5saXN0X29mX25vZGVMaXN0IHBhcmVudCMjLmNoaWxkTm9kZXNcblxubGV0IHJlbW92ZUNoaWxkaSBwYXJlbnQgaSA9XG4gIG1hdGNoIExpc3QubnRoX29wdCAoY2hpbGRyZW4gcGFyZW50KSBpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgY2hpbGQgLT5cbiAgICAgIHJlbW92ZUNoaWxkIHBhcmVudCBjaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50ID0gTGlzdC5pdGVyIChyZW1vdmVDaGlsZCBwYXJlbnQpIChjaGlsZHJlbiBwYXJlbnQpXG5cbmxldCByZXBsYWNlQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID1cbiAgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50IDtcbiAgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuXG5cbmxldCBieV9pZCBzID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgc1xuXG5sZXQgYWRkTGlzdGVuZXIgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IGV2IGYgPVxuICBsZXQgY2FwdHVyZSA9IE9wdGlvbi5tYXAgYm9vbCBjYXB0dXJlIGluXG4gIGxldCBvbmNlID0gT3B0aW9uLm1hcCBib29sIG9uY2UgaW5cbiAgbGV0IHBhc3NpdmUgPSBPcHRpb24ubWFwIGJvb2wgcGFzc2l2ZSBpblxuICBpZ25vcmUgQEBcbiAgRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgKERvbS5FdmVudC5tYWtlIGV2KVxuICAgIChEb20uaGFuZGxlciAoZnVuIGUgLT4gYm9vbCAoZiBlKSkpXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oY2xhc3NlcyA9IFtdKSA/KHN0eWxlcyA9IFtdKSA/KGxpc3RlbiA9IFtdKSA/KGF0dHIgPSBbXSkgP3RleHQgZlxuICAgICAgY2hpbGRyZW4gPVxuICAgIGxldCBlbHQgPSBmIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgTGlzdC5pdGVyIChmdW4gKGV2LCBmKSAtPiBhZGRMaXN0ZW5lciBlbHQgZXYgZikgbGlzdGVuIDtcbiAgICBhZGRDbGFzc2VzIGVsdCBjbGFzc2VzIDtcbiAgICBzZXRDU1MgZWx0IHN0eWxlcyA7XG4gICAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IHNldEF0dHJpYnV0ZSBlbHQgayB2KSBhdHRyIDtcbiAgICBzZXRUZXh0IGVsdCB0ZXh0IDtcbiAgICBhcHBlbmRDaGlsZHJlbiBlbHQgY2hpbGRyZW4gO1xuICAgIGVsdFxuXG4gIGxldCBidXR0b24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUJ1dHRvbiBjaGlsZHJlblxuXG4gIGxldCBkaXYgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZURpdiBjaGlsZHJlblxuXG4gIGxldCBhID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVBIGNoaWxkcmVuXG5cbiAgbGV0IHNwYW4gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNwYW4gY2hpbGRyZW5cblxuICBsZXQgZm9ybSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRm9ybSBjaGlsZHJlblxuXG4gIGxldCBvcHRpb24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZU9wdGlvbiBjaGlsZHJlblxuXG4gIGxldCBzZWxlY3QgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNlbGVjdCBjaGlsZHJlblxuXG4gIGxldCBpbnB1dCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgKCkgPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW5wdXQgW11cblxuICBsZXQgaWZyYW1lID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJZnJhbWUgY2hpbGRyZW5cblxuICBsZXQgbGFiZWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxhYmVsIGNoaWxkcmVuXG5cbiAgbGV0IHVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVVbCBjaGlsZHJlblxuXG4gIGxldCBsaSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGkgY2hpbGRyZW5cblxuICBsZXQgaW1nID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbWcgY2hpbGRyZW5cblxuICBsZXQgc2NyaXB0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTY3JpcHQgY2hpbGRyZW5cblxuICBsZXQgdGFibGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRhYmxlIGNoaWxkcmVuXG5cbiAgbGV0IHRyID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUciBjaGlsZHJlblxuXG4gIGxldCB0aCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGggY2hpbGRyZW5cblxuICBsZXQgdGQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRkIGNoaWxkcmVuXG5lbmRcblxubGV0IGVuY2Fwc2UgcyA9IFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiXG5cbmxldCBzdHJpbmdzX3RvX2FycmF5IGwgPSBcIltcIiBeIFN0cmluZy5jb25jYXQgXCIsXCIgbCBeIFwiXVwiXG5cbmxldCBzdHJpbmdzX3RvX29iamVjdCBsID1cbiAgbGV0IHMgPVxuICAgIFwie1wiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBlbmNhcHNlIGsgXiBcIjpcIiBeIHYpIGwpXG4gICAgXiBcIn1cIlxuICBpblxuICB0cnkgX0pTT04jI3BhcnNlIChzdHJpbmcgcylcbiAgd2l0aCBfIC0+XG4gICAgbG9nX3N0ciAoXCJjYW5ub3QgcGFyc2UganNvbiBcIiBeIHMpIDtcbiAgICBVbnNhZmUub2JqIFt8fF1cbiIsIm9wZW4gRXpqc19taW5cblxubW9kdWxlIFR5cGVzID0gRXpqc19pZGJfdHlwZXNcbm9wZW4gVHlwZXNcblxudHlwZSBtb2RlID0gUkVBRE9OTFkgfCBSRUFEV1JJVEUgfCBWRVJTSU9OQ0hBTkdFXG50eXBlIGRpcmVjdGlvbiA9IE5FWFQgfCBQUkVWIHwgTkVYVFVOSVFVRSB8IFBSRVZVTklRVUVcblxudHlwZSBkYl9vcHRpb25zID0geyBrZXlfcGF0aCA6IHN0cmluZyBvcHRpb247IGF1dG9faW5jcmVtZW50IDogYm9vbCBvcHRpb24gfVxuXG50eXBlIGRiX3VwZ3JhZGUgPSB7IG9sZF92ZXJzaW9uIDogaW50OyBuZXdfdmVyc2lvbiA6IGludCB9XG5cbnR5cGUgaW5kZXhfb3B0aW9ucyA9IHsgdW5pcXVlIDogYm9vbCBvcHRpb247IG11bHRpX2VudHJ5IDogYm9vbCBvcHRpb247IGxvY2FsZSA6IGJvb2wgb3B0aW9uIH1cblxubW9kdWxlIHR5cGUgVHJfc2lnID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGpzXG4gIHZhbCB0b19qcyA6IHQgLT4ganNcbiAgdmFsIG9mX2pzIDoganMgLT4gdFxuZW5kXG5cbmxldCBzdHJfb2ZfbW9kZSA9IGZ1bmN0aW9uXG4gIHwgUkVBRE9OTFkgLT4gc3RyaW5nIFwicmVhZG9ubHlcIlxuICB8IFJFQURXUklURSAtPiBzdHJpbmcgXCJyZWFkd3JpdGVcIlxuICB8IFZFUlNJT05DSEFOR0UgLT4gc3RyaW5nIFwidmVyc2lvbmNoYW5nZVwiXG5cbmxldCBzdHJfb2ZfZGlyZWN0aW9uID0gZnVuY3Rpb25cbiAgfCBORVhUIC0+IHN0cmluZyBcIm5leHRcIlxuICB8IFBSRVYgLT4gc3RyaW5nIFwicHJldlwiXG4gIHwgTkVYVFVOSVFVRSAtPiBzdHJpbmcgXCJuZXh0dW5pcXVlXCJcbiAgfCBQUkVWVU5JUVVFIC0+IHN0cmluZyBcInByZXZ1bmlxdWVcIlxuXG5sZXQgaURCS2V5UmFuZ2UgOiBVbnNhZmUuYW55IGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiXG5sZXQgaW5kZXhlZERCIDoganNfc3RyaW5nIHQgaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiXG5cbmxldCByZXN1bHQgciA9IHIjIy5yZXN1bHRcblxubGV0IHdyYXAgP2Vycm9yID9jYWxsYmFjayByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgd3JhcGYgP2Vycm9yID9jYWxsYmFjayBnIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAoZyBAQCByZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IGRiX3VwZ3JhZGVfZXZlbnQgKGUgOiBpREJWZXJzaW9uQ2hhbmdlRXZlbnQgdCkgPSB7XG4gIG9sZF92ZXJzaW9uID0gZSMjLm9sZFZlcnNpb247XG4gIG5ld192ZXJzaW9uID0gZSMjLm5ld1ZlcnNpb247XG59XG5cbmxldCBvcGVuREIgP3VwZ3JhZGUgP2Vycm9yID92ZXJzaW9uIG5hbWUgY2FsbGJhY2sgPVxuICBsZXQgaW5kZXhlZERCIDogXyBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCIgaW5cbiAgbGV0IHIgPSBsYXp5IChpbmRleGVkREIjI19vcGVuIChzdHJpbmcgbmFtZSkgKEFPcHQub3B0aW9uIHZlcnNpb24pKSBpblxuICB3cmFwID9lcnJvciB+Y2FsbGJhY2sgcjtcbiAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgciMjLm9udXBncmFkZW5lZWRlZCA6PVxuICAgIEFPcHQuYW9wdCAoZnVuIHUgLT4gd3JhcF9jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgbGV0IHYgPSBkYl91cGdyYWRlX2V2ZW50IGUgaW5cbiAgICAgICAgbGV0IGRiID0gcmVzdWx0IHIgaW5cbiAgICAgICAgdSBkYiB2KSkgdXBncmFkZVxuXG5sZXQgdHJhbnNhY3Rpb24gciA6IGlEQlRyYW5zYWN0aW9uIHQgPSByIyMudHJhbnNhY3Rpb25cblxubGV0IGNyZWF0ZV9kYl9vcHRpb25zIHtrZXlfcGF0aDsgYXV0b19pbmNyZW1lbnR9IDogY3JlYXRlX2RiX29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICB2YWwga2V5UGF0aCA9IEFPcHQuYW9wdCBzdHJpbmcga2V5X3BhdGhcbiAgdmFsIGF1dG9JbmNyZW1lbnQgPSBBT3B0LmFvcHQgYm9vbCBhdXRvX2luY3JlbWVudFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcmUgP29wdGlvbnMgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA9XG4gIFVuc2FmZS5jb2VyY2UgQEBcbiAgZGIjI2NyZWF0ZU9iamVjdFN0b3JlIChzdHJpbmcgbmFtZSkgKEFPcHQuYW9wdCBjcmVhdGVfZGJfb3B0aW9ucyBvcHRpb25zKVxuXG5sZXQgZ2V0X3N0b3JlID9tb2RlIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgOiAoXywgXykgaURCT2JqZWN0U3RvcmUgdCA9XG4gIGxldCB0ciA9IGRiIyN0cmFuc2FjdGlvbiAoYXJyYXkgW3wgc3RyaW5nIG5hbWUgfF0pIChBT3B0LmFvcHQgc3RyX29mX21vZGUgbW9kZSkgaW5cbiAgVW5zYWZlLmNvZXJjZSBAQCB0ciMjb2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKVxuXG5tb2R1bGUgU3RvcmUoSyA6IFRyX3NpZykoRCA6IFRyX3NpZykgPSBzdHJ1Y3RcblxuICB0eXBlIHN0b3JlID0gKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHRcbiAgdHlwZSBrZXlzID0gSyBvZiBLLnQgfCBLUiBvZiBLLmpzIGlEQktleVJhbmdlIHRcblxuICBsZXQgY3JlYXRlID9vcHRpb25zIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgY3JlYXRlX3N0b3JlID9vcHRpb25zIGRiIG5hbWVcblxuICBsZXQgc3RvcmUgP21vZGUgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBnZXRfc3RvcmUgP21vZGUgZGIgbmFtZVxuXG4gIGxldCBhZGQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgSy5vZl9qcyBAQCBsYXp5IChzdCMjYWRkIChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCBwdXQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXAgP2NhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjcHV0IChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCByYW5nZSA/b2xvd2VyID9vdXBwZXIgP2xvd2VyID91cHBlciAoKSA9XG4gICAgbGV0IGlEQktleVJhbmdlIDogSy5qcyBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIiBpblxuICAgIG1hdGNoIGxvd2VyLCB1cHBlciB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBsb3dlciwgTm9uZSAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNsb3dlckJvdW5kIChLLnRvX2pzIGxvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSlcbiAgICB8IE5vbmUsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjdXBwZXJCb3VuZCAoSy50b19qcyB1cHBlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG4gICAgfCBTb21lIGxvd2VyLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2JvdW5kXG4gICAgICAgICAgICAoSy50b19qcyBsb3dlcikgKEsudG9fanMgdXBwZXIpXG4gICAgICAgICAgICAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcblxuICBsZXQgY291bnQgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpIChjYWxsYmFjayA6IGludCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCBBT3B0LnVuZGVmaW5lZClcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCAoQU9wdC5kZWYgKEsudG9fanMgaykpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudF9yYW5nZSAoQU9wdC5kZWYgcikpXG5cbiAgbGV0IGdldCA/ZXJyb3IgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChELm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGwgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGdldF9rZXkgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoSy5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsX2tleXMgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXNfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGRlbGV0ZSA/Y2FsbGJhY2sgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSA9IGZ1bmN0aW9uXG4gICAgfCBLIGtleSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGVfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGl0ZXIgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgayAoRC5vZl9qcyBjIyMudmFsdWUpO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKSAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBpdGVyX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGNsZWFyID9lcnJvciA/Y2FsbGJhY2sgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIChmdW4gXyAtPiAoKSkgQEAgbGF6eSBzdCMjY2xlYXJcblxuICBsZXQgY3JlYXRlX2luZGV4X29wdGlvbnMge3VuaXF1ZTsgbXVsdGlfZW50cnk7IGxvY2FsZX0gOiBjcmVhdGVfaW5kZXhfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gICAgdmFsIHVuaXF1ZSA9IEFPcHQuYW9wdCBib29sIHVuaXF1ZVxuICAgIHZhbCBtdWx0aUVudHJ5ID0gQU9wdC5hb3B0IGJvb2wgbXVsdGlfZW50cnlcbiAgICB2YWwgbG9jYWxlID0gQU9wdC5hb3B0IGJvb2wgbG9jYWxlXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfaW5kZXggP29wdGlvbnMgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUga2V5X3BhdGggPVxuICAgIGxldCBvcHRpb25zID0gQU9wdC5hb3B0IGNyZWF0ZV9pbmRleF9vcHRpb25zIG9wdGlvbnMgaW5cbiAgICBzdCMjY3JlYXRlSW5kZXggKHN0cmluZyBuYW1lKSAoc3RyaW5nIGtleV9wYXRoKSBvcHRpb25zXG5cbiAgbGV0IGRlbGV0ZV9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgaWdub3JlIEBAIHN0IyNkZWxldGVJbmRleCAoc3RyaW5nIG5hbWUpXG5cbiAgbGV0IGdldF9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgc3QjI2luZGV4IChzdHJpbmcgbmFtZSlcblxuZW5kXG5cbm1vZHVsZSBOb1RyKFMgOiBzaWcgdHlwZSB0IGVuZCkgOiBUcl9zaWcgd2l0aCB0eXBlIHQgPSBTLnQgYW5kIHR5cGUganMgPSBTLnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUy50XG4gIHR5cGUganMgPSBTLnRcbiAgbGV0IHRvX2pzIHggPSB4XG4gIGxldCBvZl9qcyB4ID0geFxuZW5kXG5cbm1vZHVsZSBJbnRUciA6IChUcl9zaWcgd2l0aCB0eXBlIGpzID0gaW50IGFuZCB0eXBlIHQgPSBpbnQpID0gTm9UcihzdHJ1Y3QgdHlwZSB0ID0gaW50IGVuZClcblxubW9kdWxlIFN0cmluZ1RyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGpzX3N0cmluZyB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGpzX3N0cmluZyB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IHN0cmluZyB4XG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgTnVtYmVyVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gbnVtYmVyIHQgYW5kIHR5cGUgdCA9IGZsb2F0ID0gc3RydWN0XG4gIHR5cGUganMgPSBudW1iZXIgdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdG9fanMgeCA9IG51bWJlcl9vZl9mbG9hdCB4XG4gIGxldCBvZl9qcyB4ID0gZmxvYXRfb2ZfbnVtYmVyIHhcbmVuZFxuXG5tb2R1bGUgRGF0ZVRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGRhdGUgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBkYXRlIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gbmV3JWpzIGRhdGVfZnJvbVRpbWVWYWx1ZSAoZGF0ZSMjcGFyc2UgKHN0cmluZyB4KSlcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeCMjdG9Mb2NhbGVTdHJpbmdcbmVuZFxuIiwibW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG5tb2R1bGUgU2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuIEJhc2VcblxudHlwZSAnYSB0ZXN0X3ByZWRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gKCdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X2VxXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ID9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfcmVzdWx0XG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ID9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgLT4gZXhwZWN0OidhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxuZXhjZXB0aW9uIEUgb2Ygc3RyaW5nICogU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWcgYm9keSA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBtYXRjaCBtZXNzYWdlIHdpdGhcbiAgICB8IE5vbmUgLT4gdGFnXG4gICAgfCBTb21lIHMgLT4gcyBeIFwiOiBcIiBeIHRhZ1xuICBpblxuICBsZXQgc2V4cCA9XG4gICAgU2V4cC5MaXN0IChcbiAgICAgIGJvZHlcbiAgICAgIEAgWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJMb2NcIjsgU2V4cC5BdG9tIHBvcyBdIF1cbiAgICAgIEAgYmVnaW4gbWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBfIC0+IFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiU3RhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBbJXNleHBfb2Y6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgbGlzdF0gaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBdXG4gICAgICBlbmRcbiAgICApXG4gIGluXG4gICgqIEhlcmUgYW5kIGluIG90aGVyIHBsYWNlcyB3ZSByZXR1cm4gZXhjZXB0aW9ucywgcmF0aGVyIHRoYW4gZGlyZWN0bHkgcmFpc2luZywgYW5kXG4gICAgIGluc3RlYWQgcmFpc2UgYXQgdGhlIGxhdGVzdCBtb21lbnQgcG9zc2libGUsIHNvIGJhY2t0cmFjZSBkb24ndCBpbmNsdWRlIG5vaXNlIGZyb21cbiAgICAgdGhlc2UgZnVuY3Rpb25zIHRoYXQgY29uc3RydWN0IGV4Y2VwdGlvbnMuICopXG4gIEUgKG1lc3NhZ2UsIHNleHApXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3ByZWQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+c2V4cGlmaWVyIHQgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJwcmVkaWNhdGUgZmFpbGVkXCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiVmFsdWVcIjsgc2V4cGlmaWVyIHRdXG4gIF1cblxubGV0IHRlc3RfcHJlZCB+cG9zIH5zZXhwaWZpZXIgfmhlcmUgP21lc3NhZ2UgcHJlZGljYXRlIHQgPVxuICBpZiBub3QgKHByZWRpY2F0ZSB0KSB0aGVuXG4gICAgcmFpc2UgKGV4bl90ZXN0X3ByZWQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+c2V4cGlmaWVyIHQpXG5cbmxldCByX2RpZmYgOiAoZnJvbV86c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdW5pdCkgb3B0aW9uIHJlZiA9IHJlZiAgIE5vbmVcbmxldCBzZXRfZGlmZl9mdW5jdGlvbiBmID0gcl9kaWZmIDo9IGZcblxubGV0IFtAY29sZF0gdGVzdF9yZXN1bHRfb3JfZXFfZmFpbGVkIH5zZXhwaWZpZXIgfmV4cGVjdCB+Z290ID1cbiAgbGV0IGdvdCA9IHNleHBpZmllciBnb3QgaW5cbiAgbGV0IGV4cGVjdCA9IHNleHBpZmllciBleHBlY3QgaW5cbiAgYmVnaW4gbWF0Y2ggIXJfZGlmZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGlmZiAtPlxuICAgIGxldCBmcm9tXyA9IFNleHAudG9fc3RyaW5nX2h1bSBleHBlY3QgaW5cbiAgICBsZXQgdG9fICAgPSBTZXhwLnRvX3N0cmluZ19odW0gZ290IGluXG4gICAgZGlmZiB+ZnJvbV8gfnRvX1xuICBlbmQ7XG4gIGBGYWlsIChleHBlY3QsIGdvdClcblxubGV0IHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCA9XG4gIGxldCBwYXNzID1cbiAgICBtYXRjaCBlcXVhbCB3aXRoXG4gICAgfCBOb25lIC0+IGNvbXBhcmF0b3IgZ290IGV4cGVjdCA9IDBcbiAgICB8IFNvbWUgZiAtPiBmIGdvdCBleHBlY3RcbiAgaW5cbiAgaWYgcGFzc1xuICB0aGVuIGBQYXNzXG4gIGVsc2UgdGVzdF9yZXN1bHRfb3JfZXFfZmFpbGVkIH5zZXhwaWZpZXIgfmV4cGVjdCB+Z290XG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MiA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImNvbXBhcmlzb24gZmFpbGVkXCIgW1xuICAgIHQxO1xuICAgIFNleHAuQXRvbSBcInZzXCI7XG4gICAgdDI7XG4gIF1cblxubGV0IHRlc3RfZXEgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB0MSB0MiA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3Q6dDEgfmdvdDp0MiB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAodDEsIHQyKSAtPiByYWlzZSAoZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJnb3QgdW5leHBlY3RlZCByZXN1bHRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJleHBlY3RlZFwiOyBleHBlY3RdO1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZ290XCI7IGdvdF07XG4gIF1cblxubGV0W0B3YXJuaW5nIFwiLTE2XCJdIHRlc3RfcmVzdWx0IH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290IHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsIChleHBlY3QsIGdvdCkgLT4gcmFpc2UgKGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdClcbiIsImxldCB1bmlxdWVfaWQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcblxuKCogVXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBsaWJuYW1lIGluIHN1Y2ggYSB3YXkgdGhhdCBmb3IgZnVuY3RvciBhcHBsaWNhdGlvbnMsIGl0IGlzXG4gICB0aGUgY2FsbGluZyBsaWJyYXJpZXMgbmFtZSB0aGF0IGdldHMgcmVnaXN0ZXJlZC4gKilcbm1vZHVsZSBDdXJyZW50X2xpYm5hbWUgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIjx1bmtub3duPlwiXG4gIGxldCBsaWJuYW1lX3JlZiA9IHJlZiBudWxsXG4gIGxldCBzZXQgc3RyID0gbGlibmFtZV9yZWYgOj0gc3RyXG4gIGxldCB1bnNldCAoKSA9IGxpYm5hbWVfcmVmIDo9IG51bGxcbiAgbGV0IGdldCAoKSA9ICFsaWJuYW1lX3JlZlxuZW5kXG5cbm1vZHVsZSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjayA9IHN0cnVjdFxuICBsZXQgdCA9IHJlZiBbXVxuICBsZXQgcHVzaCBzID0gdCA6PSBzIDo6ICF0XG4gIGxldCBwb3BfZXhuICgpID0gdCA6PSBMaXN0LnRsICF0XG5cbiAgbGV0IHRvX25hbWUgKCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG1zIC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIuXCIgKExpc3QucmV2IG1zKSlcbiAgOztcbmVuZFxuXG4oKiBUaGlzIGlzIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlIG9mIHRoaXMgbW9kdWxlLiBBbiBbRW50cnkudF0gcmVwcmVzZW50cyBhIGJlbmNobWFya1xuICAgYWxvbmcgd2l0aCBzb21lIG1ldGFkYXRhIGFib3V0IGlzIHBvc2l0aW9uLCBhcmd1bWVudHMgZXRjLiAqKVxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIHR5cGUgKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyA9XG4gICAgeyBhcmdfbmFtZSA6IHN0cmluZ1xuICAgIDsgcGFyYW1zIDogKHN0cmluZyAqICdwYXJhbSkgbGlzdFxuICAgIDsgdGh1bmsgOiAncGFyYW0gLT4gdW5pdCAtPiAnYVxuICAgIH1cblxuICB0eXBlIHRlc3Rfc3BlYyA9XG4gICAgfCBSZWd1bGFyX3RodW5rIDogKFsgYGluaXQgXSAtPiB1bml0IC0+ICdhKSAtPiB0ZXN0X3NwZWNcbiAgICB8IFBhcmFtZXRlcmlzZWRfdGh1bmsgOiAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjIC0+IHRlc3Rfc3BlY1xuXG4gIHR5cGUgdCA9XG4gICAgeyB1bmlxdWVfaWQgOiBpbnRcbiAgICA7IGNvZGUgOiBzdHJpbmdcbiAgICA7IHR5cGVfY29udl9wYXRoIDogc3RyaW5nXG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyBmaWxlbmFtZSA6IHN0cmluZ1xuICAgIDsgbGluZSA6IGludFxuICAgIDsgc3RhcnRwb3MgOiBpbnRcbiAgICA7IGVuZHBvcyA6IGludFxuICAgIDsgdGVzdF9zcGVjIDogdGVzdF9zcGVjXG4gICAgOyBiZW5jaF9tb2R1bGVfbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlIHQxLnVuaXF1ZV9pZCB0Mi51bmlxdWVfaWRcblxuICAoKiBFeHRyYWN0cyBtb2R1bGUgbmFtZSBmcm9tIFtcImZpbGVuYW1lLm1sLk1vZHVsZVwiXSwgd2hpY2ggaXMgdGhlIGZvcm1hdCBvZiBbZXh0X25hbWVdXG4gICAgIGFzIHNldCBieSBbdHlwZWNvbnZdLiAqKVxuICBsZXQgZ2V0X21vZHVsZV9uYW1lX29wdCB0ID1cbiAgICBsZXQgc3RyID0gdC50eXBlX2NvbnZfcGF0aCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgKyA0IDw9IGxlblxuICAgICAgdGhlblxuICAgICAgICBpZiBTdHJpbmcuc3ViIHN0ciBpIDQgPSBcIi5tbC5cIlxuICAgICAgICB0aGVuIFNvbWUgKFN0cmluZy5zdWIgc3RyIChpICsgNCkgKGxlbiAtIGkgLSA0KSlcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIDs7XG5cbiAgbGV0IHdpdGhfdGVzdF9zcGVjIHQgdGVzdF9zcGVjID0geyB0IHdpdGggdGVzdF9zcGVjIH1cbmVuZFxuXG4oKiBJbnNwZWN0IHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVjaWRlIGlmIGJlbmNobWFya3MgYXJlIGJlaW5nIHJ1bi4gVGhpcyBpc1xuICAgY2FsbGVkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgW3BhX2JlbmNoXSBzeW50YXggdG8gZGVjaWRlIGlmIHRoZSBnbG9iYWwgaGFzaHRhYmxlXG4gICBzaG91bGQgYmUgcG9wdWxhdGVkLiAqKVxubGV0IGFkZF9lbnZpcm9ubWVudF92YXIgPVxuICBsZXQgdiA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJCRU5DSE1BUktTX1JVTk5FUlwiIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBcIlwiXG4gIGluXG4gIHYgPSBcIlRSVUVcIlxuOztcblxuKCogVGhpcyBoYXNodGFibGUgY29udGFpbnMgYWxsIHRoZSBiZW5jaG1hcmtzIGZyb20gYWxsIHRoZSBvZiBsaWJyYXJpZXMgdGhhdCBoYXZlIGJlZW5cbiAgIGxvYWRlZC4gQXQgdGhlIHRpbWUgdGhlIGJlbmNobWFya3MgYXJlIHJlZ2lzdGVyaW5nIHRoZW1zZWx2ZXMgd2l0aCBbcHB4X2JlbmNoX2xpYl0gd2VcbiAgIGRvbid0IHlldCBrbm93IHdoaWNoIGxpYnJhcmllcyB3aWxsIG5lZWQgdG8gYmUgcnVuLiAgKilcbmxldCBsaWJzX3RvX2VudHJpZXMgOiAoc3RyaW5nLCBFbnRyeS50IGxpc3QpIEhhc2h0YmwudCA9IEhhc2h0YmwuY3JlYXRlIDEwXG5cbmxldCBsb29rdXBfcmV2X2xpYiB+bGlibmFtZSA9XG4gIHRyeSBIYXNodGJsLmZpbmQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBbXVxuOztcblxubGV0IGxvb2t1cF9saWIgfmxpYm5hbWUgPSBMaXN0LnJldiAobG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG5cbmxldCBmb3JjZV9kcm9wID1cbiAgKCogVXNlZnVsIGZvciBqc19vZl9vY2FtbCB0byBwZXJmb3JtIGRlYWRjb2RlIGVsaW1pbmF0aW9uLlxuICAgICBzZWUgcHB4L3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIFtBY3Rpb24uZ2V0XSBmb3IgbW9yZSBkZXRhaWxzICopXG4gIHRyeVxuICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfQkVOQ0hcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X21vZGUgKCkgPSBpZiBmb3JjZV9kcm9wIHRoZW4gYElnbm9yZSBlbHNlIGBDb2xsZWN0XG5cbmxldFtAaW5saW5lIG5ldmVyXSBhZGRfYmVuY2hcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZVxuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGhcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRwb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3NcbiAgICAgICAgICAgICAgICAgICAgIHRlc3Rfc3BlY1xuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICBsZXQgbGlibmFtZSA9IEN1cnJlbnRfbGlibmFtZS5nZXQgKCkgaW5cbiAgICBsZXQgZW50cnkgPVxuICAgICAgeyBFbnRyeS5jb2RlXG4gICAgICA7IHVuaXF1ZV9pZCA9IHVuaXF1ZV9pZCAoKVxuICAgICAgOyB0eXBlX2NvbnZfcGF0aFxuICAgICAgOyBiZW5jaF9tb2R1bGVfbmFtZSA9IEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnRvX25hbWUgKClcbiAgICAgIDsgbmFtZVxuICAgICAgOyBmaWxlbmFtZVxuICAgICAgOyBsaW5lXG4gICAgICA7IHN0YXJ0cG9zXG4gICAgICA7IGVuZHBvc1xuICAgICAgOyB0ZXN0X3NwZWNcbiAgICAgIH1cbiAgICBpblxuICAgIEhhc2h0YmwuYWRkIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIChlbnRyeSA6OiBsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBhZGRfYmVuY2hfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGU6X1xuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoOl9cbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpfXG4gICAgICAgICAgICAgICAgICAgICB+bGluZTpfXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvczpfXG4gICAgICAgICAgICAgICAgICAgICBmXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgICgqIFJ1bm5pbmcgZiByZWdpc3RlcnMgdGhlIGJlbmNobWFya3MgdXNpbmcgQkVOQ0ggKilcbiAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wdXNoIG5hbWU7XG4gICAgKHRyeVxuICAgICAgIGYgKCk7XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKVxuICAgICB3aXRoXG4gICAgIHwgZXggLT5cbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpO1xuICAgICAgIHJhaXNlIGV4KVxuOztcbiIsInR5cGUgdCA9IHN0cmluZ1xuXG4oKiBTaGFyZSB0aGUgZGlnZXN0IG9mIHRoZSBlbXB0eSBzdHJpbmcgKilcbmxldCBlbXB0eSA9IERpZ2VzdC5zdHJpbmcgXCJcIlxubGV0IG1ha2UgcyA9XG4gIGlmIHMgPSBlbXB0eSB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIHNcblxubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbmxldCBsZW5ndGggPSAxNlxuXG5sZXQgdG9fYmluYXJ5IHMgPSBzXG5sZXQgb2ZfYmluYXJ5X2V4biBzID0gYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHMgPSBsZW5ndGgpOyBtYWtlIHNcbmxldCB1bnNhZmVfb2ZfYmluYXJ5ID0gbWFrZVxuXG5sZXQgdG9faGV4ID0gRGlnZXN0LnRvX2hleFxubGV0IG9mX2hleF9leG4gcyA9IG1ha2UgKERpZ2VzdC5mcm9tX2hleCBzKVxuXG5sZXQgc3RyaW5nIHMgPSBtYWtlIChEaWdlc3Quc3RyaW5nIHMpXG5cbmxldCBieXRlcyBzID0gbWFrZSAoRGlnZXN0LmJ5dGVzIHMpXG5cbmxldCBzdWJieXRlcyBieXRlcyB+cG9zIH5sZW4gPSBtYWtlIChEaWdlc3Quc3ViYnl0ZXMgYnl0ZXMgcG9zIGxlbilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExvY2F0aW9uIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVdWlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbmxldCBldmFsX2ZhaWwgbG9jIGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmICFcIiV7TG9jYXRpb259OiAlc1wiIGxvYyBzKSkgZm10XG47O1xuXG5sZXQgZXF1YWxfb3B0aW9uIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFNvbWUgXywgTm9uZSB8IE5vbmUsIFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuOztcblxubW9kdWxlIFNvcnRlZF90YWJsZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0IC0+ICdhIHRcbiAgdmFsIGV4cG9zZSA6ICdhIHQgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0geyBzb3J0ZWQgOiAoc3RyaW5nICogJ2EpIGxpc3QgfSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtZXJnZV9jaGVja19hZGphY2VudF9kdXBzXG4gICAgOiAgZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgLT4gWyBgT2sgb2YgKHN0cmluZyAqICdhKSBsaXN0IHwgYE1pc21hdGNoIG9mIHN0cmluZyBdXG4gICAgPVxuICAgIGZ1biB+ZXEgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGBPayAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT5cbiAgICAgICAgaWYgU3RyaW5nLihsYXN0X2tleSA9IGtleSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIGVxIGxhc3RfdmFsdWUgdmFsdWUgdGhlbiBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgeHMgZWxzZSBgTWlzbWF0Y2gga2V5XG4gICAgICAgIGVsc2UgbG9vcCAoKGtleSwgdmFsdWUpIDo6IGFjYykgfmxhc3Rfa2V5OmtleSB+bGFzdF92YWx1ZTp2YWx1ZSB4c1xuICAgIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFtdIC0+IGBPayBbXVxuICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+IGxvb3AgWyBrZXksIHZhbHVlIF0gfmxhc3Rfa2V5OmtleSB+bGFzdF92YWx1ZTp2YWx1ZSB4c1xuICA7O1xuXG4gIGxldCBjcmVhdGUgbG9jIH5lcSB4cyA9XG4gICAgbGV0IHNvcnRlZCA9IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgeHMgaW5cbiAgICBtYXRjaCBtZXJnZV9jaGVja19hZGphY2VudF9kdXBzIH5lcSBzb3J0ZWQgd2l0aFxuICAgIHwgYE9rIHNvcnRlZCAtPiB7IHNvcnRlZCB9XG4gICAgfCBgTWlzbWF0Y2ggcyAtPlxuICAgICAgZXZhbF9mYWlsIGxvYyBcIkRpZmZlcmVudCBzaGFwZXMgZm9yIGR1cGxpY2F0ZWQgcG9seW1vcnBoaWMgY29uc3RydWN0b3I6IGAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgZXhwb3NlIHQgPSB0LnNvcnRlZFxuICBsZXQgbWFwIHQgfmYgPSB7IHNvcnRlZCA9IExpc3QubWFwIHQuc29ydGVkIH5mOihmdW4gKGssIHYpIC0+IGssIGYgdikgfVxuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0ID0gTWQ1X2xpYi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIHRvX21kNSA6IHQgLT4gTWQ1X2xpYi50XG4gIHZhbCBvZl9tZDUgOiBNZDVfbGliLnQgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIGNvbnN0cnVjdG9yIDogc3RyaW5nIC0+IHQgbGlzdCAtPiB0XG4gIHZhbCBsaXN0IDogdCBsaXN0IC0+IHRcbiAgdmFsIHBhaXIgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIHV1aWQgOiBVdWlkLnQgLT4gdFxuICB2YWwgaW50IDogaW50IC0+IHRcbiAgdmFsIG9wdGlvbiA6IHQgb3B0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1kNV9saWJcblxuICBsZXQgdG9fbWQ1IHQgPSB0XG4gIGxldCBvZl9tZDUgdCA9IHRcbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gc2V4cF9vZl9zdHJpbmdcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBzdHJpbmdfb2Zfc2V4cCB8PiBvZl9oZXhfZXhuXG4gIGxldCB1dWlkIHUgPSBzdHJpbmcgKFV1aWQudG9fc3RyaW5nIHUpXG4gIGxldCBpbnQgeCA9IHN0cmluZyAoSW50LnRvX3N0cmluZyB4KVxuICBsZXQgcGFpciB4IHkgPSBzdHJpbmcgKHRvX2JpbmFyeSB4IF4gdG9fYmluYXJ5IHkpXG4gIGxldCBsaXN0IGwgPSBzdHJpbmcgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChMaXN0Lm1hcCB+Zjp0b19iaW5hcnkgbCkpXG4gIGxldCBjb25zdHJ1Y3RvciBzIGwgPSBzdHJpbmcgKHMgXiB0b19iaW5hcnkgKGxpc3QgbCkpXG5cbiAgbGV0IG9wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGNvbnN0cnVjdG9yIFwibm9uZVwiIFtdXG4gICAgfCBTb21lIHggLT4gY29uc3RydWN0b3IgXCJzb21lXCIgWyB4IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IHN0cnVjdFxuICAoKiBbJ2EgdF0gaXMgYSBub24tcmVjdXJzaXZlIHR5cGUsIHVzZWQgdG8gcmVwcmVzZW50IDEtbGF5ZXIgb2YgZXhwcmVzc2lvbi4gIFRoZVxuICAgICByZWN1cnNpdmUga25vdCBpcyB0aWVkIGJlbG93IGluIFtDYW5vbmljYWxfZnVsbC5FeHAudF0uICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBbm5vdGF0ZSBvZiBVdWlkLnQgKiAnYVxuICAgIHwgQmFzZSBvZiBVdWlkLnQgKiAnYSBsaXN0XG4gICAgfCBUdXBsZSBvZiAnYSBsaXN0XG4gICAgfCBSZWNvcmQgb2YgKHN0cmluZyAqICdhKSBsaXN0XG4gICAgfCBWYXJpYW50IG9mIChzdHJpbmcgKiAnYSBsaXN0KSBsaXN0XG4gICAgKCogUG9seW1vcnBoaWMgdmFyaWFudHMgYXJlIGluc2Vuc2l0aXZlIHRvIHRoZSBvcmRlciB0aGUgY29uc3RydWN0b3JzIGFyZSBsaXN0ZWQgKilcbiAgICB8IFBvbHlfdmFyaWFudCBvZiAnYSBvcHRpb24gU29ydGVkX3RhYmxlLnRcbiAgICAoKiBMZWZ0LWhhbmQtc2lkZSBvZiBbQXBwbGljYXRpb25dIGlzIGEgcG90ZW50aWFsbHkgcmVjdXJzaXZlIGRlZmluaXRpb246IGl0XG4gICAgICAgY2FuIHJlZmVyIHRvIGl0c2VsZiB1c2luZyBbUmVjX2FwcCAoaSwgXyldIHdoZXJlIFtpXSBpcyB0aGUgZGVwdGggb2YgdGhpc1xuICAgICAgIGFwcGxpY2F0aW9uIG5vZGUgKGhvdyBtYW55IGFwcGxpY2F0aW9uIG5vZGVzIGFyZSBhYm92ZSBpdCkuXG4gICAgICAgSXQgYWxzbyBoYXMgaXRzIG93biBzY29wZSBvZiB0eXBlIHZhcmlhYmxlcyBzbyBpdCBjYW4gbm90IHJlZmVyIHRvIHR5cGUgdmFyaWFibGVzXG4gICAgICAgb2YgdGhlIGVuY2xvc2luZyBzY29wZS5cbiAgICAqKVxuICAgIHwgQXBwbGljYXRpb24gb2YgJ2EgKiAnYSBsaXN0XG4gICAgfCBSZWNfYXBwIG9mIGludCAqICdhIGxpc3RcbiAgICB8IFZhciBvZiBpbnRcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgbWFwIHggfmYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQW5ub3RhdGUgKHUsIHgpIC0+IEFubm90YXRlICh1LCBmIHgpXG4gICAgfCBCYXNlIChzLCB4cykgLT4gQmFzZSAocywgTGlzdC5tYXAgfmYgeHMpXG4gICAgfCBUdXBsZSB4cyAtPiBUdXBsZSAoTGlzdC5tYXAgfmYgeHMpXG4gICAgfCBSZWNvcmQgbCAtPiBSZWNvcmQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeCkgLT4gcywgZiB4KSlcbiAgICB8IFZhcmlhbnQgbCAtPiBWYXJpYW50IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHhzKSAtPiBzLCBMaXN0Lm1hcCB+ZiB4cykpXG4gICAgfCBQb2x5X3ZhcmlhbnQgdCAtPiBQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5tYXAgdCB+ZjooT3B0aW9uLm1hcCB+ZikpXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gQXBwbGljYXRpb24gKGYgeCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFJlY19hcHAgKHQsIGwpIC0+IFJlY19hcHAgKHQsIExpc3QubWFwIH5mIGwpXG4gICAgfCBWYXIgdiAtPiBWYXIgdlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biBfIC0+IEF0b20gXCIuLi5cIikgdClcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2RpZ2VzdCA6IHNpZ1xuICAoKiBEaWdlc3QgdmFyaW91cyBleHByZXNzaW9uIGZvcm1zICopXG5cbiAgdmFsIGRpZ2VzdF9sYXllciA6IERpZ2VzdC50IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCAtPiBEaWdlc3QudFxuZW5kID0gc3RydWN0XG4gIGxldCBkaWdlc3RfbGF5ZXIgPSBmdW5jdGlvblxuICAgIHwgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Bbm5vdGF0ZSAodSwgeCkgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvciBcImFubm90YXRlXCIgWyBEaWdlc3QudXVpZCB1OyB4IF1cbiAgICB8IEJhc2UgKHUsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImJhc2VcIiBbIERpZ2VzdC51dWlkIHU7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgVHVwbGUgbCAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ0dXBsZVwiIFsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBSZWNvcmQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicmVjb3JkXCJcbiAgICAgICAgWyBEaWdlc3QubGlzdCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB0KSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSB0KSkgXVxuICAgIHwgVmFyaWFudCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJ2YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biAocywgbCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgKERpZ2VzdC5saXN0IGwpKSlcbiAgICAgICAgXVxuICAgIHwgUG9seV92YXJpYW50IHRhYmxlIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJwb2x5X3ZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgKFNvcnRlZF90YWJsZS5leHBvc2UgdGFibGUpIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyB4KSAoRGlnZXN0Lm9wdGlvbiB5KSkpXG4gICAgICAgIF1cbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJhcHBsaWNhdGlvblwiIFsgeDsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBSZWNfYXBwIChuLCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJyZWNfYXBwXCIgWyBEaWdlc3QuaW50IG47IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgVmFyIG4gLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidmFyXCIgWyBEaWdlc3QuaW50IG4gXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWaXNpYmlsaXR5ID0gc3RydWN0XG4gIHR5cGUgdmlzaWJsZSA9IFZpc2libGVcbiAgdHlwZSBvcGFxdWUgPSBPcGFxdWVcblxuICBsZXQgXyA9IFZpc2libGVcbiAgbGV0IF8gPSBPcGFxdWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDYW5vbmljYWwgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2RpZ2VzdCA6IHQgLT4gRGlnZXN0LnRcblxuICBtb2R1bGUgRXhwMSA6IHNpZ1xuICAgIHR5cGUgXyB0XG5cbiAgICB2YWwgdmFyIDogaW50IC0+IF8gdFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gdCBsaXN0IC0+IF8gdFxuICAgIHZhbCBhcHBseSA6ICdhIHQgLT4gJ2EgdCBsaXN0IC0+IF8gdFxuICAgIHZhbCBvcGFxdWUgOiBfIHQgLT4gVmlzaWJpbGl0eS5vcGFxdWUgdFxuXG4gICAgdmFsIGdldF9wb2x5X3ZhcmlhbnRcbiAgICAgIDogIFZpc2liaWxpdHkudmlzaWJsZSB0XG4gICAgICAtPiAoVmlzaWJpbGl0eS5vcGFxdWUgdCBvcHRpb24gU29ydGVkX3RhYmxlLnQsIHN0cmluZykgUmVzdWx0LnRcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA6IHNpZ1xuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA6IHNpZ1xuICAgIHZhbCBhbm5vdGF0ZSA6IFV1aWQudCAtPiBfIEV4cDEudCAtPiBfIEV4cDEudFxuICAgIHZhbCBiYXNldHlwZSA6IFV1aWQudCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHR1cGxlIDogXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBwb2x5X3ZhcmlhbnQgOiBMb2NhdGlvbi50IC0+IChzdHJpbmcgKiBfIEV4cDEudCBvcHRpb24pIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyIDogaW50IC0+IF8gRXhwMS50XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBhcHBseSA6ICdhIEV4cDEudCAtPiAnYSBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBkZWZpbmUgOiBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50IC0+IERlZi50XG4gICAgdmFsIHJlY29yZCA6IChzdHJpbmcgKiBfIEV4cDEudCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXJpYW50IDogKHN0cmluZyAqIF8gRXhwMS50IGxpc3QpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgY3JlYXRlIDogXyBFeHAxLnQgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2RpZ2VzdCA6IENhbm9uaWNhbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBDYW5vbmljYWwgb2YgRGlnZXN0LnRcblxuICBsZXQgdG9fZGlnZXN0IChDYW5vbmljYWwgeCkgPSB4XG5cbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSBvcGFxdWUgPSBEaWdlc3QudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgUG9seV92YXJpYW50IG9mIG9wYXF1ZSBvcHRpb24gU29ydGVkX3RhYmxlLnRcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCBvZiAoc3RyaW5nICogb3BhcXVlKVxuICAgICAgfCBPcGFxdWUgOiBvcGFxdWUgLT4gVmlzaWJpbGl0eS5vcGFxdWUgdFxuXG4gICAgbGV0IHRvX2RpZ2VzdCAodHlwZSBhKSAoeCA6IGEgdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9wYXF1ZSB4IC0+IHhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoXywgeCkgLT4geFxuICAgICAgfCBQb2x5X3ZhcmlhbnQgeCAtPiBDRC5kaWdlc3RfbGF5ZXIgKFBvbHlfdmFyaWFudCB4KVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgKHR5cGUgYSkgKHggOiBhIHQpICh5IDogYSB0KSA9XG4gICAgICBEaWdlc3QuY29tcGFyZSAodG9fZGlnZXN0IHgpICh0b19kaWdlc3QgeSkgPSAwXG4gICAgOztcblxuICAgIGxldCBvcGFxdWUgeCA9IE9wYXF1ZSAodG9fZGlnZXN0IHgpXG5cbiAgICBsZXQgY3JlYXRlIHggPVxuICAgICAgbGV0IHggPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLm1hcCB+Zjp0b19kaWdlc3QgeCBpblxuICAgICAgbGV0IGRlc2MgPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnQgbCAtPiBQb2x5X3ZhcmlhbnQgbFxuICAgICAgfCBCYXNlIF8gLT4gTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFubm90YXRlIF8gLT5cbiAgICAgICAgKCogSXQncyB1bnNhZmUgdG8gdXNlIGRlcml2aW5nIGJpbl9pbyB3aGVuIGluaGVyaXRpbmcgZnJvbSBhIHBvbHltb3JwaGljIHZhcmlhbnRcbiAgICAgICAgICAgdGhhdCBoYXMgYSBjdXN0b20gYmluX2lvLiAgSWYgd2UgZm9yYmlkIHRoYXQsIHdlIGNhbiBoYXBwaWx5IHJlamVjdCBoZXJlXG4gICAgICAgICAgIGFueXRoaW5nIHRoYXQncyBhbm5vdGF0ZWQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBcHBsaWNhdGlvbiBfIC0+XG4gICAgICAgICgqIEFwcGxpY2F0aW9uIGNhbiByZWFsbHkgYmUgYSBwb2x5LXZhcmlhbnQgeW91IGNhbiBpbmhlcml0IGZyb20hICBCdXQgaXQncyBhXG4gICAgICAgICAgIHJhcmUgc2l0dWF0aW9uIHRoYXQgbW9zdGx5IChvbmx5PykgYXJpc2VzIHdpdGggaW5oZXJpdGFuY2UgZnJvbSByZWN1cnNpdmVcbiAgICAgICAgICAgcG9seW1vcnBpYyB2YXJpYW50cywgd2hpY2ggd2UndmUgbm90IHNlZW4gYW55d2hlcmUgeWV0LiAgU28gd2UgcmVqZWN0IGl0LiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgUmVjX2FwcCBfIC0+XG4gICAgICAgICgqIFlvdSBjYW4gb25seSBnZXQgdGhlIFtSZWNfYXBwXSBjb25zdHJ1Y3RvciBmb3IgdHlwZS1yZWZlcmVuY2VzIHdpdGhpbiB0aGVcbiAgICAgICAgICAgbXV0dWFsIGdyb3VwIGJlaW5nIGRlZmluZWQuIFJlZmVyZW5jZXMgd2hpY2hcbiAgICAgICAgICAgZm9sbG93IGFmdGVyIHRoZSBjdXJyZW50IGdyb3VwIHdpbGwgYWx3YXlzIGJlIFtBcHBsaWNhdGlvbl1zLlxuXG4gICAgICAgICAgIEFuZCBzaW5jZSBvY2FtbCByZWplY3RzIHJlZmVyZW5jZXMgaW4gYGluaGVyaXRhbmNlJyBwb3NpdGlvbiB0byB0eXBlcyB3aXRoaW5cbiAgICAgICAgICAgdGhlIGN1cnJlbnQgZ3JvdXAgKHNlZSBleGFtcGxlKSB3aXRoOlxuXG4gICAgICAgICAgIEVycm9yOiBUaGUgdHlwZSBjb25zdHJ1Y3RvciB0XG4gICAgICAgICAgIGlzIG5vdCB5ZXQgY29tcGxldGVseSBkZWZpbmVkXG5cbiAgICAgICAgICAgdGhlbiBpdHMgb2sgdG8gc2F5IHRoYXQgYSByZWMtYXBwIGlzIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIGluaGVyaXRlZCBmcm9tIGFuZFxuICAgICAgICAgICByZXR1cm4gW05vbl9wb2x5X3ZhcmlhbnRdLlxuXG4gICAgICAgICAgIEFuZCB1bmxpa2UgdGhlIFtBcHBsaWNhdGlvbl0gY2FzZSwgaXQgc2hvdWxkIG5ldmVyIGJlIHBvc3NpYmxlIHRvIHNlZVxuICAgICAgICAgICBhbiBlcnJvciBtZXNzYWdlIHdpdGggdGhlIFtkZXNjXSA9IFtSZWNfYXBwXS5cblxuICAgICAgICAgICBFeGFtcGxlOiBbdHlwZSB0ID0gW2BhIG9mIFsgfCB0XSBdXVxuICAgICAgICAgICBIZXJlLCBbfCB0XSB3b3VsZCBiZSBhbiBleGFtcGxlIG9mIGluaGVyaXRhbmNlIGZyb20gYSBSZWNfYXBwLCB3aGljaFxuICAgICAgICAgICBpcyByZWplY3RlZCBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBWYXIgXyB8IFR1cGxlIF8gfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPlxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICA7O1xuXG4gICAgbGV0IHZhciB4ID0gY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgZGVmIGwgPSBjcmVhdGUgKEFwcGxpY2F0aW9uIChkZWYsIGwpKVxuICAgIGxldCByZWN1cnNlIHRpZCBsID0gY3JlYXRlIChSZWNfYXBwICh0aWQsIGwpKVxuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgKHggOiBWaXNpYmlsaXR5LnZpc2libGUgdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIF8pIC0+IEVycm9yIGRlc2NcbiAgICAgIHwgUG9seV92YXJpYW50IGwgLT4gT2sgKFNvcnRlZF90YWJsZS5tYXAgfmY6KE9wdGlvbi5tYXAgfmY6KGZ1biB4IC0+IE9wYXF1ZSB4KSkgbClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGVmID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlID0gc3RydWN0XG4gICAgbGV0IGFubm90YXRlIHUgeCA9IEV4cDEuY3JlYXRlIChBbm5vdGF0ZSAodSwgeCkpXG4gICAgbGV0IGJhc2V0eXBlIHUgbCA9IEV4cDEuY3JlYXRlIChCYXNlICh1LCBsKSlcbiAgICBsZXQgdHVwbGUgbCA9IEV4cDEuY3JlYXRlIChUdXBsZSBsKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgbCA9XG4gICAgICBFeHAxLmNyZWF0ZSAoUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUuY3JlYXRlIGxvYyB+ZXE6KGVxdWFsX29wdGlvbiBFeHAxLmVxdWFsKSBsKSlcbiAgICA7O1xuXG4gICAgbGV0IHZhciB4ID0gRXhwMS5jcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSB4IGwgPSBFeHAxLmNyZWF0ZSAoQXBwbGljYXRpb24gKHgsIGwpKVxuICAgIGxldCByZWN1cnNlIHQgbCA9IEV4cDEuY3JlYXRlIChSZWNfYXBwICh0LCBsKSlcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCBsID0gRXhwMS5jcmVhdGUgKFJlY29yZCBsKVxuICAgIGxldCB2YXJpYW50IGwgPSBFeHAxLmNyZWF0ZSAoVmFyaWFudCBsKVxuICAgIGxldCBjcmVhdGUgZSA9IENhbm9uaWNhbCAoRXhwMS50b19kaWdlc3QgZSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9mdWxsIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGluY2x1ZGUgQ2Fub25pY2FsIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgdG9fc3RyaW5nX2h1bSA6IHQgLT4gc3RyaW5nXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSB0MCA9IEV4cCBvZiB0MCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbF90MCB4IHkgPSBjb21wYXJlX3QwIHggeSA9IDBcblxuICAgIHR5cGUgJ2EgdCA9IHQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgdmFyIHggPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuVmFyIHgpXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQXBwbGljYXRpb24gKGQsIHhzKSlcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlJlY19hcHAgKHIsIHhzKSlcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID1cbiAgICAgIEV4cFxuICAgICAgICAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnRcbiAgICAgICAgICAgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIGVxdWFsX3QwKSB4cykpXG4gICAgOztcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIChQb2x5X3ZhcmlhbnQgdGFiKSAtPiBPayB0YWJcbiAgICAgIHwgRXhwIGNjIC0+IEVycm9yIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyBjYylcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB0ID0gdFxuXG4gICAgbGV0IHJlYyB0b19kaWdlc3QgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgZSAtPiBDRC5kaWdlc3RfbGF5ZXIgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICAoKiBBIFtEZWYudF0gaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtYXkgYmUgYXBwbGllZCAqKVxuICAgIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgKCogQSBjYW5vbmljYWwgc2hhcGUgW3RdIGlzIGFuIFtFeHAxLnRdLiAqKVxuICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX2RpZ2VzdCBlID0gRXhwMS50b19kaWdlc3QgZVxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5FeHAgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSB4cyA9IEV4cDEuRXhwIChCYXNlICh1LCB4cykpXG4gICAgbGV0IHR1cGxlIHhzID0gRXhwMS5FeHAgKFR1cGxlIHhzKVxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gRXhwMS5wb2x5X3ZhcmlhbnQgbG9jIHhzXG4gICAgbGV0IHZhciBuID0gRXhwMS5FeHAgKFZhciBuKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAxLnJlY3Vyc2UgciB4c1xuICAgIGxldCBhcHBseSBkIHhzID0gRXhwMS5hcHBseSBkIHhzXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgeHMgPSBFeHAxLkV4cCAoUmVjb3JkIHhzKVxuICAgIGxldCB2YXJpYW50IHhzID0gRXhwMS5FeHAgKFZhcmlhbnQgeHMpXG4gICAgbGV0IGNyZWF0ZSBleHAgPSBleHBcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gdCA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IHQpXG5lbmRcblxubW9kdWxlIFRpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVmlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBHaWQgOiBzaWdcbiAgKCogdW5pcXVlIGdyb3VwLWlkLCB1c2VkIGFzIGtleSBmb3IgVGVudiBiZWxvdyAqKVxuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IHIgPSByZWYgMFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCB1ID0gIXIgaW5cbiAgICByIDo9IDEgKyB1O1xuICAgIHVcbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwcmVzc2lvbiA9IHN0cnVjdFxuICB0eXBlICd0IHBvbHlfY29uc3RyID1cbiAgICBbIGBDb25zdHIgb2Ygc3RyaW5nICogJ3Qgb3B0aW9uXG4gICAgfCBgSW5oZXJpdCBvZiBMb2NhdGlvbi50ICogJ3RcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiAoVGlkLnQgKiBWaWQudCBsaXN0ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBpZCA6ICdhIHQgLT4gR2lkLnRcbiAgICB2YWwgbG9va3VwIDogJ2EgdCAtPiBUaWQudCAtPiBWaWQudCBsaXN0ICogJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgZ2lkIDogR2lkLnRcbiAgICAgIDsgbG9jIDogTG9jYXRpb24udFxuICAgICAgOyBtZW1iZXJzIDogKFRpZC50ICogKFZpZC50IGxpc3QgKiAnYSkpIGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSBsb2MgdHJpcHMgPVxuICAgICAgbGV0IGdpZCA9IEdpZC5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBtZW1iZXJzID0gTGlzdC5tYXAgdHJpcHMgfmY6KGZ1biAoeCwgdnMsIHQpIC0+IHgsICh2cywgdCkpIGluXG4gICAgICB7IGdpZDsgbG9jOyBtZW1iZXJzIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIGcgPSBnLmdpZFxuXG4gICAgbGV0IGxvb2t1cCBnIHRpZCA9XG4gICAgICBtYXRjaCBMaXN0LkFzc29jLmZpbmQgZy5tZW1iZXJzIH5lcXVhbDpUaWQuKCA9ICkgdGlkIHdpdGhcbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgZy5sb2NcbiAgICAgICAgICAhXCJpbXBvc3NpYmxlOiBsb29rdXBfZ3JvdXAsIHVuYm91bmQgdHlwZS1pZGVudGlmaWVyOiAle1RpZH1cIlxuICAgICAgICAgIHRpZFxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqIHRcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogdCBsaXN0XG4gICAgfCBSZWNvcmQgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgbGlzdCkgbGlzdFxuICAgIHwgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgKExvY2F0aW9uLnQgKiB0IHBvbHlfY29uc3RyIGxpc3QpXG4gICAgfCBWYXIgb2YgKExvY2F0aW9uLnQgKiBWaWQudClcbiAgICB8IFJlY19hcHAgb2YgVGlkLnQgKiB0IGxpc3RcbiAgICB8IFRvcF9hcHAgb2YgdCBHcm91cC50ICogVGlkLnQgKiB0IGxpc3RcbiAgW0BAZGVyaXZpbmcgdmFyaWFudHMsIHNleHBfb2ZdXG5cbiAgdHlwZSBncm91cCA9IHQgR3JvdXAudFxuXG4gIGxldCBncm91cCA9IEdyb3VwLmNyZWF0ZVxuXG4gIHR5cGUgcG9seV92YXJpYW50X3JvdyA9IHQgcG9seV9jb25zdHJcblxuICBsZXQgY29uc3RyIHMgdCA9IGBDb25zdHIgKHMsIHQpXG4gIGxldCBpbmhlcml0XyBsb2MgdCA9IGBJbmhlcml0IChsb2MsIHQpXG4gIGxldCB2YXIgbG9jIHQgPSBWYXIgKGxvYywgdClcbiAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBQb2x5X3ZhcmlhbnQgKGxvYywgeHMpXG4gIGxldCBiYXNldHlwZSA9IGJhc2VcblxuICAoKiBcIlZSXCIgc3RhbmRzIGZvciBcInZhcmlhbnQgb3IgcmVjb3JkXCIgKilcblxuICBsZXQgaXNfY3ljbGljXzAgfih2aWFfVlIgOiBib29sKSA6IGdyb3VwIC0+IFRpZC50IC0+IGJvb2wgPVxuICAgIGZ1biBncm91cCB0aWQgLT5cbiAgICBsZXQgc2V0ID0gcmVmIFtdIGluXG4gICAgbGV0IHZpc2l0ZWQgdGlkID0gTGlzdC5tZW0gIXNldCB0aWQgfmVxdWFsOlRpZC5lcXVhbCBpblxuICAgIGxldCBhZGQgdGlkID0gc2V0IDo9IHRpZCA6OiAhc2V0IGluXG4gICAgbGV0IHJlYyB0cmF2ID0gZnVuY3Rpb25cbiAgICAgICgqIFdlIGxvb2sgZm9yIGN5Y2xlcyBieSB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdHlwZS1leHByZXNzaW9ucyAqKVxuICAgICAgfCBBbm5vdGF0ZSAoXywgdCkgLT4gdHJhdiB0XG4gICAgICB8IEJhc2UgKF8sIHRzKSB8IFR1cGxlIHRzIHwgVG9wX2FwcCAoXywgXywgdHMpIC0+IExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgICAoKiAuLmluY2x1ZGluZyBwb2x5LXZhcmlhbnRzICopXG4gICAgICB8IFBvbHlfdmFyaWFudCAoXywgY3MpIC0+XG4gICAgICAgIExpc3QuaXRlciBjcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IGBDb25zdHIgKF8sIE5vbmUpIC0+ICgpXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBTb21lIHQpIC0+IHRyYXYgdFxuICAgICAgICAgIHwgYEluaGVyaXQgKF9sb2MsIHQpIC0+IHRyYXYgdClcbiAgICAgICgqIC4uIGFuZCByZWNvcmRzICYgKG5vcm1hbCkgdmFyaWFudHMgKilcbiAgICAgIHwgUmVjb3JkIHhzIC0+IGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0KSAtPiB0cmF2IHQpIGVsc2UgKClcbiAgICAgIHwgVmFyaWFudCB4cyAtPlxuICAgICAgICBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdHMpIC0+IExpc3QuaXRlciB+Zjp0cmF2IHRzKSBlbHNlICgpXG4gICAgICAoKiBXZSBkb250IGZvbGxvdyB0eXBlLXZhcnMgKilcbiAgICAgIHwgVmFyIF8gLT4gKClcbiAgICAgICgqIHRyYXZlcnNlIChyZWN1cnNpdmUpIHR5cGUtYXBwcyB3aGVuIGZpcnN0IGVuY291bnRlcmVkICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgdHMpIC0+XG4gICAgICAgIGlmIHZpc2l0ZWQgdGlkXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYWRkIHRpZDtcbiAgICAgICAgICB0cmF2X3RpZCB0aWQpO1xuICAgICAgICBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgIGFuZCB0cmF2X3RpZCB0aWQgPVxuICAgICAgbGV0IF8sIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICB0cmF2IGJvZHlcbiAgICBpblxuICAgIHRyYXZfdGlkIHRpZDtcbiAgICBsZXQgcmVzID0gdmlzaXRlZCB0aWQgaW5cbiAgICAoKmxldCBfc3MgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKExpc3QubWFwICghc2V0KSB+Zjooc3ByaW50ZiAhXCIle1RpZH1cIikpIGluKilcbiAgICAoKlByaW50Zi5wcmludGYgIVwiaXNfY3lsaWM6ICV7VGlkfSAtLT4gKCVzKSAlYiAgLS0gJXMlIVwiIHRpZCBfc3MgcmVzIChHcm91cC5sb2MgZ3JvdXApOyopXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGlzX2N5Y2xpYyA9IGlzX2N5Y2xpY18wIH52aWFfVlI6dHJ1ZVxuICBsZXQgaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOmZhbHNlXG5lbmRcblxuaW5jbHVkZSBFeHByZXNzaW9uXG5cbm1vZHVsZSBFdmFsdWF0aW9uIChDYW5vbmljYWwgOiBDYW5vbmljYWwpID0gc3RydWN0XG4gICgqIFtWZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS12YXJzICopXG4gIG1vZHVsZSBWZW52IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbG9va3VwIDogdCAtPiBWaWQudCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb25cbiAgICB2YWwgY3JlYXRlIDogKFZpZC50ICogVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQpIGxpc3QgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBNYXAuTShWaWQpLnRcblxuICAgIGxldCBjcmVhdGUgPVxuICAgICAgTGlzdC5mb2xkXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBWaWQpKVxuICAgICAgICB+ZjooZnVuIHQgKGssIHYpIC0+IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgZW5kXG5cbiAgbW9kdWxlIEFwcGxpY2FuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnRcbiAgICAgIHwgRGVmaW5pdGlvbiBvZiBDYW5vbmljYWwuRGVmLnRcbiAgZW5kXG5cbiAgKCogW1RlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLWRlZmluaXRpb25zICopXG4gIG1vZHVsZSBUZW52IDogc2lnXG4gICAgdHlwZSBrZXkgPSBHaWQudCAqIFRpZC50XG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZmluZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBvcHRpb25cbiAgICB2YWwgZW1wdHkgOiB0XG4gICAgdmFsIGV4dGVuZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEdpZC50ICogVGlkLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgdHlwZSBrZXkgPSBLZXkudFxuICAgIHR5cGUgdCA9IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBNYXAuTShLZXkpLnRcblxuICAgIGxldCBmaW5kIHQgayA9IE1hcC5maW5kIHQga1xuICAgIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIEtleSlcbiAgICBsZXQgZXh0ZW5kIHQgayB2ID0gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0XG4gIGVuZFxuXG4gICgqIFtEZWZpbmluZy50XVxuICAgICBNb25hZCBmb3IgbWFuYWdpbmcgdW4tcm9sbGluZyBkZXB0aCwgYW5kIG1haW50YWluZyBhIFtUZW52LnRdICopXG4gIG1vZHVsZSBEZWZpbmluZyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgbG9va19lbnYgOiBUZW52LmtleSAtPiBBcHBsaWNhbmQudCBvcHRpb24gdFxuICAgIHZhbCBleHRlbmRfbmV3X3RpZCA6IFRlbnYua2V5IC0+IENhbm9uaWNhbC5EZWYudCB0IC0+IEFwcGxpY2FuZC50IHRcbiAgICB2YWwgZXhlYyA6ICdhIHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gZGVwdGg6aW50IC0+IFRlbnYudCAtPiAnYVxuXG4gICAgbGV0IHJldHVybiB4IH5kZXB0aDpfIF90ZW52ID0geFxuXG4gICAgbGV0IGJpbmQgdCBmIH5kZXB0aCB0ZW52ID1cbiAgICAgIGxldCB4ID0gdCB+ZGVwdGggdGVudiBpblxuICAgICAgKGYgeCkgfmRlcHRoIHRlbnZcbiAgICA7O1xuXG4gICAgbGV0IGxvb2tfZW52IGtleSB+ZGVwdGg6XyB0ZW52ID1cbiAgICAgIGxldCByZXN1bHQgPSBUZW52LmZpbmQgdGVudiBrZXkgaW5cbiAgICAgIE9wdGlvbi5tYXAgfmY6KGZ1biAoYFJlY3Vyc2lvbl9sZXZlbCB4KSAtPiBBcHBsaWNhbmQuUmVjdXJzaW9uX2xldmVsIHgpIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgZXh0ZW5kX25ld190aWQga2V5IGRlZl90IH5kZXB0aCB0ZW52ID1cbiAgICAgIEFwcGxpY2FuZC5EZWZpbml0aW9uXG4gICAgICAgIChsZXQgdmFsdWUgPSBgUmVjdXJzaW9uX2xldmVsIGRlcHRoIGluXG4gICAgICAgICBsZXQgdGVudiA9IFRlbnYuZXh0ZW5kIHRlbnYga2V5IHZhbHVlIGluXG4gICAgICAgICBkZWZfdCB+ZGVwdGg6KGRlcHRoICsgMSkgdGVudilcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgdCA9IHQgfmRlcHRoOjAgVGVudi5lbXB0eVxuICBlbmRcblxuICB0eXBlICdhIGRlZmluaW5nID0gJ2EgRGVmaW5pbmcudFxuXG4gIGxldCAoID4+PSApID0gRGVmaW5pbmcuYmluZFxuICBsZXQgcmV0dXJuID0gRGVmaW5pbmcucmV0dXJuXG5cbiAgbGV0IHNlcXVlbmNlX2RlZmluaW5nIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYiBkZWZpbmluZykgLT4gJ2IgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIHhzIH5mIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjY195cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjX3lzKVxuICAgICAgfCB4IDo6IHhzIC0+IGYgeCA+Pj0gZnVuIHkgLT4gbG9vcCAoeSA6OiBhY2NfeXMpIHhzXG4gICAgaW5cbiAgICBsb29wIFtdIHhzXG4gIDs7XG5cbiAgKCpcbiAgICAgU2hhcGUgZXZhbHVhdGlvbi5cblxuICAgICBTaGFwZXMgYXJlIGV2YWx1YXRlZCB0byBjYW5vbmljYWwtc2hhcGUgKGV4cHJlc3Npb25zKSwgd2l0aCBhZGRpdGlvbmFsIGRlZnMgY29sbGVjdGVkXG4gICAgIGluIHRoZSBbZGVmaW5pbmddIG1vbmFkLCB3aGljaCBhbHNvIG1hbmFnZXMgZ2VuZXJhdGlvbi9tYXBwaW5nIHRvIFtDYW5vbmljYWwuVGlkLnRdXG5cbiAgICAgVGhlcmUgaXMgZG93bndhcmRzIGNvbnRleHQgb2YgW2dyb3VwXSBhbmQgW1ZlbnYudF1cbiAgICAgVGhlIChjdXJyZW50KSBbZ3JvdXBdIGNoYW5nZXMgd2hlbiB0aGUgY2FzZSBmb3IgW1RvcF9hcHBdIGNhbGxzIFtldmFsX2FwcF0uXG5cbiAgICAgVGhlIGN1cnJlbnQgW1ZlbnYudF0gaXMgYWJhbmRvbmVkIHdoZW4gW2V2YWxfYXBwXSBpcyBjYWxsZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQgYWZ0ZXJcbiAgICAgdGhlIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgdG8gZWl0aGVyIGlubGluZSB0aGUgdHlwZS1hcHBsaWNhdGlvbiwgb3IgbWFrZSBhIHJlZmVyZW5jZVxuICAgICB0byBhIHR5cGUtZGVmaW5pdGlvbiwgd2hpY2ggaXMgY3JlYXRlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggKEdpZC50ICogVGlkLnQpLlxuXG4gICAgIFdlIG1ha2UgYSB0eXBlLWRlZmluaXRpb24gYWx3YXlzIGZvciBSZWNvcmRzIGFuZCBWYXJpYW50cywgYW5kIGluIGFkZGl0aW9uIGZvciBhbnlcbiAgICAgb3RoZXIgY3ljbGljIHR5cGUtZGVmaW5pdGlvbi5cbiAgKilcblxuICBsZXQgcmVjIGV2YWwgOiBncm91cCAtPiBWZW52LnQgLT4gdCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFJlY29yZCBiaW5kcyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBiaW5kcyB+ZjooZnVuIChzLCB4KSAtPlxuICAgICAgICAgIGV2YWwgZ3JvdXAgdmVudiB4ID4+PSBmdW4geSAtPiByZXR1cm4gKHMsIHkpKVxuICAgICAgICA+Pj0gZnVuIGJpbmRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5yZWNvcmQgYmluZHMpXG4gICAgICB8IFZhcmlhbnQgYWx0cyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBhbHRzIH5mOihmdW4gKHMsIHhzKSAtPlxuICAgICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHhzID4+PSBmdW4geXMgLT4gcmV0dXJuIChzLCB5cykpXG4gICAgICAgID4+PSBmdW4gYWx0cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudmFyaWFudCBhbHRzKVxuICAgICAgfCBWYXIgKGxvYywgdmlkKSAtPlxuICAgICAgICAobWF0Y2ggVmVudi5sb29rdXAgdmVudiB2aWQgd2l0aFxuICAgICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICAgICAgIHwgTm9uZSAtPiBldmFsX2ZhaWwgbG9jICFcIkZyZWUgdHlwZSB2YXJpYWJsZTogJyV7VmlkfVwiIHZpZCAoKSlcbiAgICAgIHwgQW5ub3RhdGUgKHMsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYW5ub3RhdGUgcyB2KVxuICAgICAgfCBCYXNlIChzLCB0cykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYmFzZXR5cGUgcyB2cylcbiAgICAgIHwgVHVwbGUgdHMgLT4gZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudHVwbGUgdnMpXG4gICAgICB8IFRvcF9hcHAgKGluX2dyb3VwLCB0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3NcbiAgICAgICAgPj49IGZ1biBhcmdzIC0+XG4gICAgICAgICgqIGFyZ3MgZXZhbHVhdGVkIGluIGN1cnJlbnQgZ3JvdXAgKilcbiAgICAgICAgZXZhbF9hcHAgaW5fZ3JvdXAgdGlkIGFyZ3NcbiAgICAgICgqIGdyb3VwIGNoYW5nZWQgaGVyZSAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3MgPj49IGZ1biBhcmdzIC0+IGV2YWxfYXBwIGdyb3VwIHRpZCBhcmdzXG4gICAgICB8IFBvbHlfdmFyaWFudCAobG9jLCBjcykgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgfmY6KGV2YWxfcG9seV9jb25zdHIgZ3JvdXAgdmVudikgY3NcbiAgICAgICAgPj49IGZ1biB4c3MgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnBvbHlfdmFyaWFudCBsb2MgKExpc3QuY29uY2F0IHhzcykpXG5cbiAgYW5kIGV2YWxfbGlzdCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHRzIC0+IHNlcXVlbmNlX2RlZmluaW5nIHRzIH5mOihldmFsIGdyb3VwIHZlbnYpXG5cbiAgYW5kIGV2YWxfcG9seV9jb25zdHJcbiAgICA6ICBncm91cCAtPiBWZW52LnQgLT4gdCBwb2x5X2NvbnN0clxuICAgICAgLT4gKHN0cmluZyAqIFZpc2liaWxpdHkub3BhcXVlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uKSBsaXN0IGRlZmluaW5nXG4gICAgPVxuICAgIGZ1biBncm91cCB2ZW52IGMgLT5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCBgQ29uc3RyIChzLCBOb25lKSAtPiByZXR1cm4gWyBzLCBOb25lIF1cbiAgICAgIHwgYENvbnN0ciAocywgU29tZSB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIFsgcywgU29tZSAoQ2Fub25pY2FsLkV4cDEub3BhcXVlIHYpIF1cbiAgICAgIHwgYEluaGVyaXQgKGxvYywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHRcbiAgICAgICAgPj49IGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBDYW5vbmljYWwuRXhwMS5nZXRfcG9seV92YXJpYW50IHYgd2l0aFxuICAgICAgICAgfCBPayB0YWIgLT4gcmV0dXJuIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYilcbiAgICAgICAgIHwgRXJyb3IgZGVzYyAtPlxuICAgICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICBcIlRoZSBzaGFwZSBmb3IgYW4gaW5oZXJpdGVkIHR5cGUgaXMgbm90IGRlc2NyaWJlZCBhcyBhIHBvbHltb3JwaGljLXZhcmlhbnQ6ICVzXCJcbiAgICAgICAgICAgICBkZXNjXG4gICAgICAgICAgICAgKCkpXG5cbiAgYW5kIGV2YWxfZGVmaW5pdGlvbiA6IGdyb3VwIC0+IFZpZC50IGxpc3QgLT4gdCAtPiBDYW5vbmljYWwuRGVmLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCBmb3JtYWxzIGJvZHkgLT5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgKExpc3QubWFwaSBmb3JtYWxzIH5mOihmdW4gaSB4IC0+IHgsIENhbm9uaWNhbC5FeHAxLnZhciBpKSkgaW5cbiAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuZGVmaW5lIHYpXG5cbiAgYW5kIGV2YWxfYXBwIDogZ3JvdXAgLT4gVGlkLnQgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdGlkIGFyZ3MgLT5cbiAgICAgIGxldCBnaWQgPSBHcm91cC5pZCBncm91cCBpblxuICAgICAgbGV0IGZvcm1hbHMsIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgcmVjb3JkX29yX25vcm1hbF92YXJpYW50ID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgICB8IFR1cGxlIF8gfCBBbm5vdGF0ZSBfIHwgQmFzZSBfIHwgUG9seV92YXJpYW50IF8gfCBWYXIgXyB8IFJlY19hcHAgXyB8IFRvcF9hcHAgXyAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGN5Y2xpYyA9IGlzX2N5Y2xpYyBncm91cCB0aWQgaW5cbiAgICAgIGxldCBjeWNsaWNfbm9fVlIgPSBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiBncm91cCB0aWQgaW5cbiAgICAgIGlmIChyZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgJiYgY3ljbGljKSB8fCBjeWNsaWNfbm9fVlJcbiAgICAgIHRoZW5cbiAgICAgICAgRGVmaW5pbmcubG9va19lbnYgKGdpZCwgdGlkKVxuICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHJlY3Vyc2UgLT4gcmV0dXJuIHJlY3Vyc2VcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIERlZmluaW5nLmV4dGVuZF9uZXdfdGlkIChnaWQsIHRpZCkgKGV2YWxfZGVmaW5pdGlvbiBncm91cCBmb3JtYWxzIGJvZHkpKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgciAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLnJlY3Vyc2UgciBhcmdzKVxuICAgICAgICB8IERlZmluaXRpb24gZGVmIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEuYXBwbHkgZGVmIGFyZ3MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHZlbnYgPVxuICAgICAgICAgIG1hdGNoIExpc3QuemlwIGZvcm1hbHMgYXJncyB3aXRoXG4gICAgICAgICAgfCBPayB4IC0+IFZlbnYuY3JlYXRlIHhcbiAgICAgICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBmYWlsd2l0aCBcImFwcGx5LCBpbmNvcnJlY3QgdHlwZSBhcHBsaWNhdGlvbiBhcml0eVwiXG4gICAgICAgIGluXG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5KVxuICA7O1xuXG4gICgqIHRvcCBsZXZlbCBlbnRyeSBwb2ludCBmb3IgZXZhbHVhdGlvbiAqKVxuICBsZXQgZXZhbCA6IHQgLT4gQ2Fub25pY2FsLnQgPVxuICAgIGZ1biB0IC0+XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cCAoTG9jYXRpb24ub2Zfc3RyaW5nIFwidG9wLWxldmVsXCIpIFtdIGluXG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIFtdIGluXG4gICAgICBsZXQgdiA9IERlZmluaW5nLmV4ZWMgKGV2YWwgZ3JvdXAgdmVudiB0KSBpblxuICAgICAgQ2Fub25pY2FsLkNyZWF0ZS5jcmVhdGUgdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW5vbmljYWxfZnVsbFxuXG4gIG1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsX2Z1bGwpXG5tb2R1bGUgQ2Fub25pY2FsX3NlbGVjdGVkID0gQ2Fub25pY2FsX2RpZ2VzdFxubW9kdWxlIEV2YWx1YXRpb25fdG9fZGlnZXN0ID0gRXZhbHVhdGlvbiAoQ2Fub25pY2FsX3NlbGVjdGVkKVxuXG5sZXQgZXZhbF90b19kaWdlc3QgZXhwID0gQ2Fub25pY2FsX3NlbGVjdGVkLnRvX2RpZ2VzdCAoRXZhbHVhdGlvbl90b19kaWdlc3QuZXZhbCBleHApXG5sZXQgZXZhbF90b19kaWdlc3Rfc3RyaW5nIGV4cCA9IERpZ2VzdC50b19oZXggKGV2YWxfdG9fZGlnZXN0IGV4cClcblxubW9kdWxlIEZvcl90eXBlcmVwID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBOb3RfYV90dXBsZSBvZiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGRlY29uc3RydWN0X3R1cGxlX2V4biB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFR1cGxlIHRzIC0+IHRzXG4gICAgfCBfIC0+IHJhaXNlIChOb3RfYV90dXBsZSB0KVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNC4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBjaGFyIC0+ICdhKSAtPiAnYSAtPiBzdHJpbmcgLT4gJ2FcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYSAtPiAnYSkgLT4gc3RyaW5nIC0+ICdhIC0+ICdhXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBbYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5dIGNvcGllcyBbbGVuXSBieXRlc1xuICAgIGZyb20gdGhlIHN0cmluZyBbc3JjXSwgc3RhcnRpbmcgYXQgaW5kZXggW3NyY19wb3NdLFxuICAgIHRvIGJ5dGUgc2VxdWVuY2UgW2RzdF0sIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBudW1iZXIgW2RzdF9wb3NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3NyY19wb3NdIGFuZCBbbGVuXSBkbyBub3RcbiAgICBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbc3JjXSwgb3IgaWYgW2RzdF9wb3NdIGFuZCBbbGVuXVxuICAgIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbZHN0XS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwiKCogQ29tbW9uOiBjb21tb24gZGVmaW5pdGlvbnMgdXNlZCBieSBiaW5hcnkgcHJvdG9jb2wgY29udmVydGVycyAqKVxuXG5vcGVuIEJhc2Vcbm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgcG9zID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIEVycm9ycyBhbmQgZXhjZXB0aW9ucyAqKVxuXG5leGNlcHRpb24gQnVmZmVyX3Nob3J0XG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5tb2R1bGUgUmVhZEVycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdfaW50OFxuICAgIHwgSW50X2NvZGVcbiAgICB8IEludF9vdmVyZmxvd1xuICAgIHwgTmF0MF9jb2RlXG4gICAgfCBOYXQwX292ZXJmbG93XG4gICAgfCBJbnQzMl9jb2RlXG4gICAgfCBJbnQ2NF9jb2RlXG4gICAgfCBOYXRpdmVpbnRfY29kZVxuICAgIHwgVW5pdF9jb2RlXG4gICAgfCBCb29sX2NvZGVcbiAgICB8IE9wdGlvbl9jb2RlXG4gICAgfCBTdHJpbmdfdG9vX2xvbmdcbiAgICB8IFZhcmlhbnRfdGFnXG4gICAgfCBBcnJheV90b29fbG9uZ1xuICAgIHwgTGlzdF90b29fbG9uZyBvZlxuICAgICAgICB7IGxlbiA6IGludFxuICAgICAgICA7IG1heF9sZW4gOiBpbnRcbiAgICAgICAgfVxuICAgIHwgSGFzaHRibF90b29fbG9uZ1xuICAgIHwgU3VtX3RhZyBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnQgb2Ygc3RyaW5nXG4gICAgfCBQb2x5X3JlY19ib3VuZCBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBvZiBzdHJpbmdcbiAgICB8IFNpbGx5X3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTmVnX2ludDggLT4gXCJOZWdfaW50OFwiXG4gICAgfCBJbnRfY29kZSAtPiBcIkludF9jb2RlXCJcbiAgICB8IEludF9vdmVyZmxvdyAtPiBcIkludF9vdmVyZmxvd1wiXG4gICAgfCBOYXQwX2NvZGUgLT4gXCJOYXQwX2NvZGVcIlxuICAgIHwgTmF0MF9vdmVyZmxvdyAtPiBcIk5hdDBfb3ZlcmZsb3dcIlxuICAgIHwgSW50MzJfY29kZSAtPiBcIkludDMyX2NvZGVcIlxuICAgIHwgSW50NjRfY29kZSAtPiBcIkludDY0X2NvZGVcIlxuICAgIHwgTmF0aXZlaW50X2NvZGUgLT4gXCJOYXRpdmVpbnRfY29kZVwiXG4gICAgfCBVbml0X2NvZGUgLT4gXCJVbml0X2NvZGVcIlxuICAgIHwgQm9vbF9jb2RlIC0+IFwiQm9vbF9jb2RlXCJcbiAgICB8IE9wdGlvbl9jb2RlIC0+IFwiT3B0aW9uX2NvZGVcIlxuICAgIHwgU3RyaW5nX3Rvb19sb25nIC0+IFwiU3RyaW5nX3Rvb19sb25nXCJcbiAgICB8IFZhcmlhbnRfdGFnIC0+IFwiVmFyaWFudF90YWdcIlxuICAgIHwgQXJyYXlfdG9vX2xvbmcgLT4gXCJBcnJheV90b29fbG9uZ1wiXG4gICAgfCBMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0gLT4gc3ByaW50ZiBcIkxpc3RfdG9vX2xvbmcgLyAlZCAobWF4ICVkKVwiIGxlbiBtYXhfbGVuXG4gICAgfCBIYXNodGJsX3Rvb19sb25nIC0+IFwiSGFzaHRibF90b29fbG9uZ1wiXG4gICAgfCBTdW1fdGFnIGxvYyAtPiBcIlN1bV90YWcgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudCBsb2MgLT4gXCJWYXJpYW50IC8gXCIgXiBsb2NcbiAgICB8IFBvbHlfcmVjX2JvdW5kIGxvYyAtPiBcIlBvbHlfcmVjX2JvdW5kIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBsb2MgLT4gXCJWYXJpYW50X3dyb25nX3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgU2lsbHlfdHlwZSBsb2MgLT4gXCJTaWxseV90eXBlIC8gXCIgXiBsb2NcbiAgICB8IEVtcHR5X3R5cGUgbG9jIC0+IFwiRW1wdHlfdHlwZSAvIFwiIF4gbG9jXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5leGNlcHRpb24gUmVhZF9lcnJvciBvZiBSZWFkRXJyb3IudCAqIHBvcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuZXhjZXB0aW9uIFBvbHlfcmVjX3dyaXRlIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbmxldCByYWlzZV9yZWFkX2Vycm9yIGVyciBwb3MgPSByYWlzZSAoUmVhZF9lcnJvciAoZXJyLCBwb3MpKVxuXG5sZXQgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgcG9zID1cbiAgcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3dyb25nX3R5cGUgbmFtZSwgcG9zKSlcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBsb2MgPSBmYWlsd2l0aCAobG9jIF4gXCI6IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uXCIpXG5sZXQgYXJyYXlfYm91bmRfZXJyb3IgKCkgPSBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIlxuXG4oKiBCdWZmZXJzICopXG5cbnR5cGUgcG9zX3JlZiA9IHBvcyByZWZcbnR5cGUgYnVmID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxubGV0IGNyZWF0ZV9idWYgbiA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBjX2xheW91dCBuXG5sZXQgYnVmX2xlbiBidWYgPSBBcnJheTEuZGltIGJ1ZlxubGV0IGFzc2VydF9wb3MgcG9zID0gaWYgcG9zIDwgMCB0aGVuIGFycmF5X2JvdW5kX2Vycm9yICgpXG5sZXQgY2hlY2tfcG9zIChidWYgOiBidWYpIHBvcyA9IGlmIHBvcyA+PSBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICBwb3Ncbjs7XG5cbmxldCBjaGVja19uZXh0IChidWYgOiBidWYpIG5leHQgPSBpZiBuZXh0ID4gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IGdldF9vcHRfcG9zIH5sb2MgfnZhciA9IGZ1bmN0aW9uXG4gIHwgU29tZSBwb3MgLT5cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaW5fcHJvdC5Db21tb24uJXM6ICVzIDwgMFwiIGxvYyB2YXIpO1xuICAgIHBvc1xuICB8IE5vbmUgLT4gMFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHNyYzpidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZHN0OmJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX3N0dWJcIlxuXG5sZXQgYmxpdF9idWYgP3NyY19wb3MgfnNyYyA/ZHN0X3BvcyB+ZHN0IGxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBzcmNcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zID4gc3JjX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGRzdFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgPiBkc3RfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gc3JjXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgKyBsZW4gPiBzcmNfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBkc3RcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyArIGxlbiA+IGRzdF9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1ZiB+c3JjX3BvcyB+c3JjIH5kc3RfcG9zIH5kc3QgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzdHJpbmdcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfc3RyaW5nX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X3N0cmluZ19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmxldCBibGl0X2J5dGVzX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J5dGVzX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9zdHJpbmdcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfYnl0ZXNcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9idWZfYnl0ZXMgP3NyY19wb3MgYnVmID9kc3RfcG9zIHN0ciB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZfc3RyaW5nXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBidWZfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IHN0cl9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBidWZfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3BvcyBidWYgfmRzdF9wb3Mgc3RyIH5sZW5cbjs7XG5cbmxldCBibGl0X2J1Zl9zdHJpbmcgPSBibGl0X2J1Zl9ieXRlc1xuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmxldCByZWMgY29weV9odGJsX2xpc3QgaHRibCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaHRibFxuICB8IChrLCB2KSA6OiByZXN0IC0+XG4gICAgQ2FtbC5IYXNodGJsLmFkZCBodGJsIGsgdjtcbiAgICBjb3B5X2h0YmxfbGlzdCBodGJsIHJlc3Rcbjs7XG5cbigqIEJpZ2FycmF5cyAqKVxuXG50eXBlIHZlYzMyID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYzY0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IHZlYzY0XG50eXBlIG1hdDMyID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdDY0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IG1hdDY0XG5cbigqIEZsb2F0IGFycmF5cyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mbG9hdF9hcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mbG9hdGFycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqKiopXG5cbmxldCAoICsgKSA9ICggKyApXG4iLCIoKiBOYXQwOiBuYXR1cmFsIG51bWJlcnMgKGluY2x1ZGluZyB6ZXJvKSAqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IG9mX2ludCBuID1cbiAgaWYgbiA8IDAgdGhlbiBmYWlsd2l0aCBcIkJpbl9wcm90Lk5hdDAub2ZfaW50OiBuIDwgMFwiO1xuICBuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG4iLCIoKiBXcml0ZV9tbDogd3JpdGluZyB2YWx1ZXMgdG8gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSB3cml0ZXIgPSBidWYgLT4gcG9zOnBvcyAtPiAnYSAtPiBwb3NcbnR5cGUgKCdhLCAnYikgd3JpdGVyMSA9ICdhIHdyaXRlciAtPiAnYiB3cml0ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlcjIgPSAnYSB3cml0ZXIgLT4gKCdiLCAnYykgd3JpdGVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlcjMgPSAnYSB3cml0ZXIgLT4gKCdiLCAnYywgJ2QpIHdyaXRlcjJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ1ZiAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDggOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDE2IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MzIgOiBidWYgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGNvZGVfTkVHX0lOVDggPSAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopICdcXHhmZicgKCokKilcblxubGV0IGNvZGVfSU5UMTYgPSAoKiQgQ29kZS5jaGFyIElOVDE2ICopICdcXHhmZScgKCokKilcblxubGV0IGNvZGVfSU5UMzIgPSAoKiQgQ29kZS5jaGFyIElOVDMyICopICdcXHhmZCcgKCokKilcblxubGV0IGNvZGVfSU5UNjQgPSAoKiQgQ29kZS5jaGFyIElOVDY0ICopICdcXHhmYycgKCokKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cblxubGV0IHVuc2FmZV9zZXQxNmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDE2XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDMyXG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDY0XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQxNmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXQxNlxuOztcblxubGV0IHVuc2FmZV9zZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuICBlbHNlIHVuc2FmZV9zZXQzMlxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuICBlbHNlIHVuc2FmZV9zZXQ2NFxuOztcblxubGV0IGJpbl93cml0ZV91bml0IGJ1ZiB+cG9zICgpID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xcMDAwJztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGIgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAoaWYgYiB0aGVuICdcXDAwMScgZWxzZSAnXFwwMDAnKTtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgbiA9XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9ORUdfSU5UODtcbiAgdW5zYWZlX3NldDggYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDMgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMTY7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA1IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDMyO1xuICB1bnNhZmVfc2V0MzJsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgOSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQ2NDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2NoYXIgYnVmIH5wb3MgYyA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIGM7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgbiA+PSAwXG4gIHRoZW5cbiAgICBpZiBuIDwgMHgwMDAwMDA4MFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzFcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gICAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAtKDEgbHNsIDMxKVxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBuYXQwID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMyXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9zdHJpbmcgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBzdHJpbmdzICopXG4gIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9ieXRlcyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgYnl0ZXMgKilcbiAgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQuYml0c19vZl9mbG9hdCB4KTtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGxcbiAgICAgIHRoZW4gKFxuICAgICAgICBhc3NlcnRfcG9zIHBvcztcbiAgICAgICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4pXG4gICAgICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NCBidWYgfnBvcyBuID1cbiAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuKVxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG4gIGVsc2UgaWYgbiA+PSAweDAwMDA4MDAwTCB8fCBuIDwgLTB4MDAwMDgwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50NjQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCBidWYgfnBvcyBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgJiYgKG4gPj0gKCogMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzFcbiAgICAgIHx8IG4gPCAoKiAtMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50Lm5lZyAoTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzEpKVxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX25hdGl2ZWludCBuKSlcbiAgZWxzZSBpZiAoKG5vdCBhcmNoX3NpeHR5Zm91cikgJiYgbiA+PSAweDgwMDBuKSB8fCBuIDwgLTB4ODAwMG5cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChOYXRpdmVpbnQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoTmF0aXZlaW50LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9yZWYgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHIgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgIXJcblxubGV0IGJpbl93cml0ZV9sYXp5IGJpbl93cml0ZV9lbCBidWYgfnBvcyBsdiA9XG4gIGxldCB2ID0gTGF6eS5mb3JjZSBsdiBpblxuICBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdlxuOztcblxubGV0IGJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGZhbHNlXG4gIHwgU29tZSB2IC0+XG4gICAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyB0cnVlIGluXG4gICAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOm5leHQgdlxuOztcblxubGV0IGJpbl93cml0ZV9wYWlyIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIChhLCBiKSA9XG4gIGxldCBuZXh0ID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0IGJcbjs7XG5cbmxldCBiaW5fd3JpdGVfdHJpcGxlIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIChhLCBiLCBjKSA9XG4gIGxldCBuZXh0MSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgbGV0IG5leHQyID0gYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dDEgYiBpblxuICBiaW5fd3JpdGVfYyBidWYgfnBvczpuZXh0MiBjXG47O1xuXG5sZXQgYmluX3dyaXRlX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IGVsc19wb3NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6ZWxzX3BvcyBoZCBpblxuICAgICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3M6bmV3X2Vsc19wb3MgdGxcbiAgaW5cbiAgZnVuIGJpbl93cml0ZV9lbCBidWYgfnBvcyBsc3QgLT5cbiAgICBsZXQgbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IChMaXN0Lmxlbmd0aCBsc3QpIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBsZW4gaW5cbiAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3Rcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlbiB+bGVuZ3RoIH5ibGl0IGJ1ZiB+cG9zIGEgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgYmxpdCB+c3JjX3BvczowIGEgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkZsb2F0LkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhciA9XG4gIGxldCBlbHNfcG9zX3JlZiA9IHJlZiBlbHNfcG9zIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGVsc19wb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohZWxzX3Bvc19yZWYgKEFycmF5LnVuc2FmZV9nZXQgYXIgaSlcbiAgZG9uZTtcbiAgIWVsc19wb3NfcmVmXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5ICh0eXBlIGEpIGJpbl93cml0ZV9lbCBidWYgfnBvcyBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl93cml0ZV9lbCA6IGEgd3JpdGVyKSA6IGZsb2F0IHdyaXRlcikgPT0gYmluX3dyaXRlX2Zsb2F0XG4gIHRoZW4gYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgcG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbiBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcG4gaW5cbiAgICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyKVxuOztcblxubGV0IGJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZV9rZXkgYmluX3dyaXRlX3ZhbCBidWYgfnBvcyBodGJsID1cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IGVsc19wb3MgPVxuICAgIGluY3IgY250X3JlZjtcbiAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfa2V5IGJ1ZiB+cG9zOmVsc19wb3MgayBpblxuICAgIGJpbl93cml0ZV92YWwgYnVmIH5wb3M6bmV3X2Vsc19wb3MgdlxuICBpblxuICBsZXQgcmVzX3BvcyA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCBlbHNfcG9zIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3dyaXRlX2hhc2h0YmxcIjtcbiAgcmVzX3Bvc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjMzIgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjNjQgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZlYyA9IGJpbl93cml0ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDMyIG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQ2NCBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbWF0ID0gYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nIGJ1ZiB+cG9zIHMgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSBzIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmFyaWFudF9pbnQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCB4KSAxKSAxbCk7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzhiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8xNmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzMyYml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfNjRiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0X2JpdHMgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9hcnJheV9ub19sZW5ndGggYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3Bvczpwb3Mgfm46KEFycmF5Lmxlbmd0aCBhcikgYXJcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmdfZ2V0MzIgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zdHJpbmdfZ2V0NjQgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcblxubGV0IGJpbl93cml0ZV9tZDUgYnVmIH5wb3MgeCA9XG4gIGxldCB4ID0gTWQ1X2xpYi50b19iaW5hcnkgeCBpblxuICBhc3NlcnQgKFN0cmluZy5sZW5ndGggeCA9IDE2KTtcbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDggaW5cbiAgICB1bnNhZmVfc2V0NjQgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQ2NCBidWYgKHBvcyArIDgpIGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA0IGluXG4gICAgbGV0IGMgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggOCBpblxuICAgIGxldCBkID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDEyIGluXG4gICAgdW5zYWZlX3NldDMyIGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA0KSBiO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDgpIGM7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgMTIpIGQpO1xuICBuZXh0XG47O1xuIiwiKCogUmVhZF9tbDogcmVhZGluZyB2YWx1ZXMgZnJvbSB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHJlYWRlciA9IGJ1ZiAtPiBwb3NfcmVmOnBvc19yZWYgLT4gJ2FcbnR5cGUgKCdhLCAnYikgcmVhZGVyMSA9ICdhIHJlYWRlciAtPiAnYiByZWFkZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlcjIgPSAnYSByZWFkZXIgLT4gKCdiLCAnYykgcmVhZGVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlcjMgPSAnYSByZWFkZXIgLT4gKCdiLCAnYywgJ2QpIHJlYWRlcjJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ1ZiAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbmxldCB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCBjID0gdW5zYWZlX2dldDggYnVmIHBvcyBpblxuICBpZiBjID49IDEyOCB0aGVuIGMgLSAyNTYgZWxzZSBjXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X2ludF9pbnQzMiA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gSW50MzIubWF4X2ludCBlbHNlIEludDMyLm9mX2ludCBtYXhfaW50XG5sZXQgbWluX2ludF9pbnQzMiA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gSW50MzIubWF4X2ludCBlbHNlIEludDMyLm9mX2ludCBtaW5faW50XG5sZXQgbWF4X2ludF9pbnQ2NCA9IEludDY0Lm9mX2ludCBtYXhfaW50XG5sZXQgbWluX2ludF9pbnQ2NCA9IEludDY0Lm9mX2ludCBtaW5faW50XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50MzIgcG9zIHggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIEludDMyLnRvX2ludCB4XG4gIGVsc2UgaWYgeCA+PSBtaW5faW50X2ludDMyICYmIHggPD0gbWF4X2ludF9pbnQzMlxuICB0aGVuIEludDMyLnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgeCA9XG4gIGlmIHggPj0gbWluX2ludF9pbnQ2NCAmJiB4IDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiBJbnQ2NC50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldCBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF9wb3MgeCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgeFxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lIGFsd2F5c10gcG9zIHggLT5cbiAgICAgIGlmIHggPj0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5taW5faW50XG4gICAgICAmJiB4IDw9IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWF4X2ludFxuICAgICAgdGhlbiBJbnQ2NC50b19uYXRpdmVpbnQgeFxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfZ2V0MTYgOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0MzIgOiBidWYgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDE2IGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDE2IGJ1ZiBwb3MgfD4gYnN3YXAxNlxuOztcblxubGV0IHVuc2FmZV9nZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDMyIGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgfD4gYnN3YXAzMlxuOztcblxubGV0IHVuc2FmZV9nZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDY0IGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgfD4gYnN3YXA2NFxuOztcblxubGV0IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDE2IGJ1ZiBwb3MgfD4gYnN3YXAxNiBlbHNlIHVuc2FmZV9nZXQxNlxuOztcblxubGV0IHVuc2FmZV9nZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgfD4gYnN3YXAzMiBlbHNlIHVuc2FmZV9nZXQzMlxuOztcblxubGV0IHVuc2FmZV9nZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgfD4gYnN3YXA2NCBlbHNlIHVuc2FmZV9nZXQ2NFxuOztcblxubGV0IHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IHggPSB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zIGluXG4gIGlmIHggPiAzMjc2NyB0aGVuIHggLSA2NTUzNiBlbHNlIHhcbjs7XG5cbmxldCBiaW5fcmVhZF91bml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGlmIHVuc2FmZV9nZXQgYnVmIHBvcyA9ICdcXDAwMCdcbiAgdGhlbiBwb3NfcmVmIDo9IHBvcyArIDFcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Vbml0X2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfYm9vbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgZmFsc2VcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIHRydWVcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkJvb2xfY29kZSBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAxIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmVnX2ludDggIXBvc19yZWY7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBDYW4gYmUgYWJvdmUgbmV4dCBsaW5lIChubyBlcnJvcnMgcG9zc2libGUgd2l0aCAxNmJpdCkuXG4gICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgdGhlIGdlbmVyYXRlZCBjb2RlLiAqKVxuICB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50MzIgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQ2NCAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgSW50NjQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIE5hdGl2ZWludC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgcG9zIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgTmF0MC51bnNhZmVfb2ZfaW50ICh1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zKVxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8zMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBtYXNrXzMyYml0ID0gSW50NjQudG9faW50IDB4ZmZmZl9mZmZmTCBpblxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgbGV0IG4gPSBJbnQzMi50b19pbnQgKHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MpIGluXG4gICAgICBpZiBuID49IDBcbiAgICAgIHRoZW4gTmF0MC51bnNhZmVfb2ZfaW50IG5cbiAgICAgIGVsc2VcbiAgICAgICAgKCogRXJhc2UgdGhlIHVwcGVyIGJpdHMgdGhhdCB3ZXJlIHNldCB0byAxIGR1cmluZyB0aGUgaW50MzIgLT4gaW50IGNvbnZlcnNpb24uICopXG4gICAgICAgIE5hdDAudW5zYWZlX29mX2ludCAobiBsYW5kIG1hc2tfMzJiaXQpKVxuICBlbHNlXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgICAgIGlmIG4gPj0gMGwgJiYgbiA8PSBtYXhfaW50X2ludDMyXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDMyLnRvX2ludCBuKSBpblxuICAgICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICAgIG4pXG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfNjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gKFxuICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQ2NC50b19pbnQgbikgaW5cbiAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgbilcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTmF0MC51bnNhZmVfb2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzMyIGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuXG4gICAgICBzYWZlX2Jpbl9yZWFkX25hdDBfNjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgPVxuICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlN0cmluZ190b29fbG9uZyBzdGFydF9wb3M7XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgc3RyID0gYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmIGluXG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfY2hhciBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgQ2hhci5jb2RlIGNoXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuXG4gICAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9mbG9hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIEludDY0LmZsb2F0X29mX2JpdHMgKHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDMyLm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQzMi5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQzMi5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQzMl9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50NjQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDY0Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDY0Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDY0X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX25hdGl2ZWludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgd2hlbiBhcmNoX3NpeHR5Zm91ciAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXRpdmVpbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfcmVmIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICByZWYgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9sYXp5IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICBMYXp5LmZyb21fdmFsIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOb25lXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICBTb21lIGVsXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5PcHRpb25fY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWYgPVxuICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBiID0gYmluX3JlYWRfYiBidWYgfnBvc19yZWYgaW5cbiAgYSwgYlxuOztcblxubGV0IGJpbl9yZWFkX3RyaXBsZSBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBiID0gYmluX3JlYWRfYiBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGMgPSBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiLCBjXG47O1xuXG5sZXQgYmluX3JlYWRfbl9yZXZfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbGVuID1cbiAgbGV0IHJlYyBsb29wIG4gYWNjID1cbiAgICBpZiBuID0gMCB0aGVuIGFjYyBlbHNlIGxvb3AgKG4gLSAxKSAoYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIDo6IGFjYylcbiAgaW5cbiAgbG9vcCBsZW4gW11cbjs7XG5cbmxldCBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gbWF4X2xlbiB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgKExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSkgIXBvc19yZWY7XG4gIGxldCByZXZfbHN0ID0gYmluX3JlYWRfbl9yZXZfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbGVuIGluXG4gIExpc3QucmV2IHJldl9sc3Rcbjs7XG5cbmxldCBiaW5fcmVhZF9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuOm1heF9pbnQgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG47O1xuXG5sZXQgZHVtbXlfZmxvYXRfYnVmID0gY3JlYXRlX2J1ZiA4XG5sZXQgKCkgPSBpZ25vcmUgKFdyaXRlLmJpbl93cml0ZV9mbG9hdCBkdW1teV9mbG9hdF9idWYgfnBvczowIDMuMSlcblxubGV0IG1heF9mbG9hdF9hcnJheV9sZW5ndGggPVxuICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2UgU3lzLm1heF9hcnJheV9sZW5ndGggLyAyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlbiB+Y3JlYXRlIH5ibGl0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHBvcztcbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IGFyciA9IGNyZWF0ZSBsZW4gaW5cbiAgYmxpdCB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgYXJyIH5sZW47XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgYXJyXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW5cbiAgICB+Y3JlYXRlOkZsb2F0LkFycmF5LmNyZWF0ZVxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW5cbiAgICB+Y3JlYXRlOkFycmF5LmNyZWF0ZV9mbG9hdFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfYXJyYXkgKHR5cGUgYSkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3JlYWRfZWwgOiBhIHJlYWRlcikgOiBmbG9hdCByZWFkZXIpID09IGJpbl9yZWFkX2Zsb2F0XG4gIHRoZW4gKE9iai5tYWdpYyAoYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmIDogZmxvYXQgYXJyYXkpIDogYSBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gW3x8XVxuICAgIGVsc2UgKFxuICAgICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3BvcylcbiAgICAgIGVsc2UgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGggLyAyXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IG1heWJlX2Zsb2F0ID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGR1bW15X2Zsb2F0X2J1ZiB+cG9zX3JlZjoocmVmIDApIGluXG4gICAgICAgICAgICBTb21lIGVsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIG1heWJlX2Zsb2F0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvc1xuICAgICAgICB8IFNvbWUgZWwgLT5cbiAgICAgICAgICBpZiBPYmoudGFnIChPYmoucmVwciBlbCkgPSBPYmouZG91YmxlX3RhZyB8fCBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKTtcbiAgICAgIGxldCBmaXJzdCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIGZpcnN0IGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgaSBlbFxuICAgICAgZG9uZTtcbiAgICAgIHJlcykpXG47O1xuXG5sZXQgYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZF9rZXkgYmluX3JlYWRfdmFsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIGxlbiBpblxuICBsZXQgcmVhZF9rdl9wYWlyID0gYmluX3JlYWRfcGFpciBiaW5fcmVhZF9rZXkgYmluX3JlYWRfdmFsIGluXG4gIGxldCBlbHMgPSBiaW5fcmVhZF9uX3Jldl9saXN0IHJlYWRfa3ZfcGFpciBidWYgfnBvc19yZWYgbGVuIGluXG4gIGNvcHlfaHRibF9saXN0IGh0YmwgZWxzXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX3ZlYyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA0IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dCBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfdmVjMzIgdmVjKSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB2ZWNcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdDY0X3ZlYyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfdmVjNjQgdmVjKSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB2ZWNcbjs7XG5cbmxldCBiaW5fcmVhZF92ZWMgPSBiaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0MzIgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdDY0X21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQ2NCBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX21hdCA9IGJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgc3RyID0gY3JlYXRlX2J1ZiBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OnN0ciB+ZHN0X3BvczowIH5sZW47XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfdmFyaWFudF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICgqIFtuXSBtdXN0IGNvbnRhaW4gYW4gaW50ZWdlciBhbHJlYWR5IGVuY29kZWQsIGkuZS4gW24gPSAyICogayArIDFdLiAqKVxuICBpZiBJbnQzMi5sb2dhbmQgbiAxbCA9IDBsXG4gIHRoZW4gcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3RhZywgcG9zKSlcbiAgZWxzZSAoXG4gICAgKCogV2Ugc2hpZnQgaXQgYnkgb25lIGJpdCB0byB0aGUgcmlnaHQgc2Ugd2UgZ2V0IGJhY2sgWzIgKiBrICsgMV0gaW4gdGhlIGVuZC4gKilcbiAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodCBuIDEpKVxuOztcblxubGV0IGJpbl9yZWFkX2ludF84Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldDggYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8xNmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMzJiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfNjRiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQ2NF9iaXRzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmsxNl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMyYmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDY0YmUgYnVmIHBvc1xuOztcblxuWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAwNywgMCldXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9zdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9zdHJpbmdfc2V0NjR1XCJcblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcblxuWyUlZW5kaWZdXG5cbmxldCBiaW5fcmVhZF9tZDUgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9nZXQ2NCBidWYgcG9zIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfZ2V0NjQgYnVmIChwb3MgKyA4KSBpblxuICAgIHVuc2FmZV9ieXRlc19zZXQ2NCByZXMgMCBhO1xuICAgIHVuc2FmZV9ieXRlc19zZXQ2NCByZXMgOCBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9nZXQzMiBidWYgcG9zIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA0KSBpblxuICAgIGxldCBjID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgOCkgaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDEyKSBpblxuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgMCBhO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgNCBiO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgOCBjO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgMTIgZCk7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMpXG47O1xuIiwiaW5jbHVkZSBCaW5fc2hhcGVfbGliLlN0ZC5TaGFwZVxuXG4oKiBuZXcgYmFzZSBzaGFwZXMgKilcbmxldCBiaW5fc2hhcGVfdW5pdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInVuaXRcIikgW11cbmxldCBiaW5fc2hhcGVfYm9vbCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJvb2xcIikgW11cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwic3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYnl0ZXNcIikgW11cbmxldCBiaW5fc2hhcGVfY2hhciA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImNoYXJcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2MyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDYzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0aXZlaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdDAgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXQwXCIpIFtdXG5sZXQgYmluX3NoYXBlX2RpZ2VzdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImRpZ2VzdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJtYXRcIikgW11cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYmlnc3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdGFycmF5XCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmFyaWFudF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfOGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMTZiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzMyYml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF82NGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRfYml0c1wiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazE2X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludDY0XCIpIFtdXG5cbigqIG5ldyBzaGFwZSBjb25zdHJ1Y3RvcnMgKilcbmxldCBiaW5fc2hhcGVfcmVmIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJyZWZcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJvcHRpb25cIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfbGlzdCB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibGlzdFwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9hcnJheSB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYXJyYXlcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4IHkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJoYXNodGJsXCIpIFsgeDsgeSBdXG5cbigqIHNoYXBlIGFsaWFzICopXG5sZXQgYmluX3NoYXBlX2Zsb2F0X2FycmF5ID0gYmluX3NoYXBlX2FycmF5IGJpbl9zaGFwZV9mbG9hdFxuW0BAb2NhbWwuZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgXFxcbiAgICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl1cbjs7XG5cbigqIHNoYXBlLWNvbnN0cnVjdG9yIGFsaWFzZXMgKilcbmxldCBiaW5fc2hhcGVfbGF6eSB4ID0geFxubGV0IGJpbl9zaGFwZV9wYWlyIHggeSA9IHR1cGxlIFsgeDsgeSBdXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4IHkgeiA9IHR1cGxlIFsgeDsgeTsgeiBdXG4iLCIoKiBTaXplOiBjb21wdXRlIHNpemUgb2YgdmFsdWVzIGluIHRoZSBiaW5hcnkgcHJvdG9jb2wuICopXG5cbm9wZW4gQmlnYXJyYXlcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5cbm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBNYXhpbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gMVxuICBsZXQgYmluX3NpemVfYm9vbCA9IDFcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSAxXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtYXggYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gNVxuICBsZXQgYmluX3NpemVfaW50NjQgPSA5XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSBiaW5fc2l6ZV9pbnRfbmF0MFxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IDJcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gMlxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSA4XG5lbmRcblxubW9kdWxlIE1pbmltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSBNYXhpbXVtLmJpbl9zaXplX3VuaXRcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSBNYXhpbXVtLmJpbl9zaXplX2Jvb2xcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSBNYXhpbXVtLmJpbl9zaXplX2NoYXJcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IDJcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1pbiBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gTWF4aW11bS5iaW5fc2l6ZV9mbG9hdFxuICBsZXQgYmluX3NpemVfaW50MzIgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9yZWYgPSAxXG4gIGxldCBiaW5fc2l6ZV9sYXp5X3QgPSAxXG4gIGxldCBiaW5fc2l6ZV9vcHRpb24gPSAxXG4gIGxldCBiaW5fc2l6ZV9wYWlyID0gMSArIDFcbiAgbGV0IGJpbl9zaXplX3RyaXBsZSA9IDEgKyAxICsgMVxuICBsZXQgYmluX3NpemVfbGVuID0gYmluX3NpemVfbmF0MFxuICBsZXQgYmluX3NpemVfbGlzdCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2hhc2h0YmwgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYnl0ZXMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9sZW4gKyBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfYmlnc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdGFycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX3ZhcmlhbnRfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzhiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzE2Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8zMmJpdFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfNjRiaXRcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSBNYXhpbXVtLmJpbl9zaXplX2ludDY0X2JpdHNcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmsxNl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludDMyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NFxuZW5kXG5cbnR5cGUgJ2Egc2l6ZXIgPSAnYSAtPiBpbnRcbnR5cGUgKCdhLCAnYikgc2l6ZXIxID0gJ2Egc2l6ZXIgLT4gJ2Igc2l6ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHNpemVyMiA9ICdhIHNpemVyIC0+ICgnYiwgJ2MpIHNpemVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNpemVyMyA9ICdhIHNpemVyIC0+ICgnYiwgJ2MsICdkKSBzaXplcjJcblxubGV0IGJpbl9zaXplX3VuaXQgKCkgPSAxXG5sZXQgYmluX3NpemVfYm9vbCBfID0gMVxuXG5sZXQgYmluX3NpemVfaW50X25hdDAgbiA9XG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHg4MDAwMDAwMCAqKSAxIGxzbCAzMVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfaW50X25lZ2F0aXZlIG4gPVxuICBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gMlxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8ICgqIC0weDgwMDAwMDAwICopIC0oMSBsc2wgMzEpXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9jaGFyIF8gPSAxXG5sZXQgYmluX3NpemVfaW50IG4gPSBpZiBuID49IDAgdGhlbiBiaW5fc2l6ZV9pbnRfbmF0MCBuIGVsc2UgYmluX3NpemVfaW50X25lZ2F0aXZlIG5cblxubGV0IGJpbl9zaXplX25hdDAgbmF0MCA9XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4MTAwMDAwMDAwICopIDEgbHNsIDMyXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBzaXplX2xlbiA9IGJpbl9zaXplX25hdDAgcGxlbiBpblxuICBzaXplX2xlbiArIGxlblxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKFN0cmluZy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX2J5dGVzIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoQnl0ZXMubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9tZDUgXyA9IDE2XG5cbmxldCBiaW5fc2l6ZV9mbG9hdCBmID1cbiAgKCogSWYgd2UganVzdCBpZ25vcmUgdGhlIGFyZ3VtZW50IHRoZSBjb21waWxlciB3aWxsIHN0aWxsIHJlcXVpcmUgaXQgdG8gZXhpc3QgYW5kIGJlXG4gICAgIGJveGVkLiBUaGlzIG1lYW5zIHRoYXQgaWYgZm9yIGluc3RhbmNlIHdlIGNhbGwgdGhpcyBmb3IgYSBmaWVsZCBvZiBhIGZsb2F0IHJlY29yZCxcbiAgICAgdGhlIGNvbXBpbGVyIHdpbGwgYWxsb2NhdGUgdGhlIGZsb2F0IGZvciBub3RoaW5nLlxuXG4gICAgIFdpdGggdGhpcyBsaW5lIHRoZSBjb21waWxlciByZWFsbHkgaWdub3JlcyB0aGUgZmxvYXQuICopXG4gIGlnbm9yZSAodHJ1bmNhdGUgZik7XG4gIDhcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGwgdGhlbiA1IGVsc2UgYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludCAoSW50NjQudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludDMyIChJbnQ2NC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX25hdGl2ZWludCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50NjQgKEludDY0Lm9mX25hdGl2ZWludCBuKVxuICBlbHNlIGZ1biBuIC0+IGJpbl9zaXplX2ludDMyIChOYXRpdmVpbnQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9yZWYgYmluX3NpemVfZWwgciA9IGJpbl9zaXplX2VsICFyXG5sZXQgYmluX3NpemVfbGF6eV90IGJpbl9zaXplX2VsIGx2ID0gYmluX3NpemVfZWwgKExhenkuZm9yY2UgbHYpXG5sZXQgYmluX3NpemVfbGF6eSA9IGJpbl9zaXplX2xhenlfdFxuXG5sZXQgYmluX3NpemVfb3B0aW9uIGJpbl9zaXplX2VsID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDFcbiAgfCBTb21lIHYgLT4gMSArIGJpbl9zaXplX2VsIHZcbjs7XG5cbmxldCBiaW5fc2l6ZV9wYWlyIGJpbl9zaXplX2EgYmluX3NpemVfYiAoYSwgYikgPSBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGJcblxubGV0IGJpbl9zaXplX3RyaXBsZSBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyAoYSwgYiwgYykgPVxuICBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGIgKyBiaW5fc2l6ZV9jIGNcbjs7XG5cbmxldCBiaW5fc2l6ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2Mgfmxlbl9hY2MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gc2l6ZV9hY2MgKyBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuX2FjYylcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6KHNpemVfYWNjICsgYmluX3NpemVfZWwgaGQpIH5sZW5fYWNjOihsZW5fYWNjICsgMSkgdGxcbiAgaW5cbiAgZnVuIGJpbl9zaXplX2VsIGxzdCAtPiBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6MCB+bGVuX2FjYzowIGxzdFxuOztcblxubGV0IGJpbl9zaXplX2xlbiBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgYmluX3NpemVfbmF0MCBwbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRhcnJheSBhciA9XG4gIGxldCBsZW4gPSBGbG9hdC5BcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5IGFyID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uID1cbiAgbGV0IHRvdGFsX2xlbl9yZWYgPSByZWYgdG90YWxfbGVuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGxldCBlbCA9IEFycmF5LnVuc2FmZV9nZXQgYXIgaSBpblxuICAgIHRvdGFsX2xlbl9yZWYgOj0gIXRvdGFsX2xlbl9yZWYgKyBiaW5fc2l6ZV9lbCBlbFxuICBkb25lO1xuICAhdG90YWxfbGVuX3JlZlxuOztcblxubGV0IGJpbl9zaXplX2FycmF5ICh0eXBlIGEpIGJpbl9zaXplX2VsIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3NpemVfZWwgOiBhIHNpemVyKSA6IGZsb2F0IHNpemVyKSA9PSBiaW5fc2l6ZV9mbG9hdFxuICB0aGVuIGJpbl9zaXplX2Zsb2F0X2FycmF5IChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgdG90YWxfbGVuID0gYmluX3NpemVfbGVuIG4gaW5cbiAgICBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4pXG47O1xuXG5sZXQgYmluX3NpemVfaGFzaHRibCBiaW5fc2l6ZV9rZXkgYmluX3NpemVfdmFsIGh0YmwgPVxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IHRvdGFsX2xlbiA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIHRvdGFsX2xlbiArIGJpbl9zaXplX2tleSBrICsgYmluX3NpemVfdmFsIHZcbiAgaW5cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCAoYmluX3NpemVfbGVuIGxlbikgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fc2l6ZV9oYXNodGJsXCI7XG4gIHRvdGFsX2xlblxuOztcblxubGV0IGJpbl9zaXplX2dlbl92ZWMgdmVjIG11bHRpcGxpZXIgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2ZWMgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArIChtdWx0aXBsaWVyICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA4XG5sZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9zaXplX2dlbl9tYXQgbWF0IG11bHRpcGxpZXIgPVxuICBsZXQgZGltMSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgZGltMiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgc2l6ZSA9IGRpbTEgKiBkaW0yIGluXG4gIGJpbl9zaXplX2xlbiBkaW0xICsgYmluX3NpemVfbGVuIGRpbTIgKyAobXVsdGlwbGllciAqIHNpemUpXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDhcbmxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9zaXplX2JpZ3N0cmluZyBidWYgPSBiaW5fc2l6ZV9nZW5fdmVjIGJ1ZiAxXG5sZXQgYmluX3NpemVfdmFyaWFudF9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfOGJpdCBfID0gMVxubGV0IGJpbl9zaXplX2ludF8xNmJpdCBfID0gMlxubGV0IGJpbl9zaXplX2ludF8zMmJpdCBfID0gNFxubGV0IGJpbl9zaXplX2ludF82NGJpdCBfID0gOFxubGV0IGJpbl9zaXplX2ludDY0X2JpdHMgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IF8gPSAyXG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludCBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgXyA9IDhcblxubGV0IGJpbl9zaXplX2FycmF5X25vX2xlbmd0aCBiaW5fc2l6ZV9lbCBhciA9XG4gIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbjowIH5uOihBcnJheS5sZW5ndGggYXIpXG47O1xuIiwiKCogVHBfY2xhc3M6IHNpemVycywgd3JpdGVycywgYW5kIHJlYWRlcnMgaW4gcmVjb3JkcyAqKVxuXG50eXBlICdhIHdyaXRlciA9XG4gIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICB9XG5cbnR5cGUgJ2EgcmVhZGVyID1cbiAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICB9XG5cbnR5cGUgJ2EgdCA9XG4gIHsgc2hhcGUgOiBTaGFwZS50XG4gIDsgd3JpdGVyIDogJ2Egd3JpdGVyXG4gIDsgcmVhZGVyIDogJ2EgcmVhZGVyXG4gIH1cblxudHlwZSAnYSB3cml0ZXIwID0gJ2Egd3JpdGVyXG50eXBlICdhIHJlYWRlcjAgPSAnYSByZWFkZXJcbnR5cGUgJ2EgdDAgPSAnYSB0XG5cbm1vZHVsZSBTMSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gJ2Igd3JpdGVyMFxuICB0eXBlICgnYSwgJ2IpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gJ2IgcmVhZGVyMFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSB0MCAtPiAnYiB0MFxuZW5kXG5cbm1vZHVsZSBTMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MpIFMxLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MpIFMxLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYykgUzEudFxuZW5kXG5cbm1vZHVsZSBTMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSB0MCAtPiAoJ2IsICdjLCAnZCkgUzIudFxuZW5kXG5cbmxldCB2YXJpYW50X3dyb25nX3R5cGUgbmFtZSBfYnVmIH5wb3NfcmVmIF94ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lICFwb3NfcmVmXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMuU3RyICopXG4oKiQgbWtfYmFzZSBcInVuaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfdW5pdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdW5pdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdCB9XG5sZXQgYmluX3JlYWRlcl91bml0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF91bml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgfVxubGV0IGJpbl9zaGFwZV91bml0ID0gU2hhcGUuYmluX3NoYXBlX3VuaXRcblxubGV0IGJpbl91bml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV91bml0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3VuaXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfdW5pdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJvb2xcIiAqKVxubGV0IGJpbl93cml0ZXJfYm9vbCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYm9vbDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbCB9XG5sZXQgYmluX3JlYWRlcl9ib29sID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9ib29sOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgfVxubGV0IGJpbl9zaGFwZV9ib29sID0gU2hhcGUuYmluX3NoYXBlX2Jvb2xcblxubGV0IGJpbl9ib29sID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ib29sOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Jvb2w7IHJlYWRlciA9IGJpbl9yZWFkZXJfYm9vbCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInN0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nIH1cblxubGV0IGJpbl9yZWFkZXJfc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9zdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX3N0cmluZ1xuXG5sZXQgYmluX3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfc3RyaW5nOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3N0cmluZzsgcmVhZGVyID0gYmluX3JlYWRlcl9zdHJpbmcgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJieXRlc1wiICopXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYnl0ZXM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzIH1cblxubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2J5dGVzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBTaGFwZS5iaW5fc2hhcGVfYnl0ZXNcblxubGV0IGJpbl9ieXRlcyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYnl0ZXM7IHdyaXRlciA9IGJpbl93cml0ZXJfYnl0ZXM7IHJlYWRlciA9IGJpbl9yZWFkZXJfYnl0ZXMgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJjaGFyXCIgKilcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2NoYXI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2NoYXIgfVxubGV0IGJpbl9yZWFkZXJfY2hhciA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfY2hhcjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiIH1cbmxldCBiaW5fc2hhcGVfY2hhciA9IFNoYXBlLmJpbl9zaGFwZV9jaGFyXG5cbmxldCBiaW5fY2hhciA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfY2hhcjsgd3JpdGVyID0gYmluX3dyaXRlcl9jaGFyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2NoYXIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludCB9XG5sZXQgYmluX3JlYWRlcl9pbnQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgfVxubGV0IGJpbl9zaGFwZV9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XG5sZXQgYmluX2ludCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQgfVxuXG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdFxuXG5sZXQgYmluX2Zsb2F0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDMyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzIgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50MzI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9pbnQzMlxuXG5sZXQgYmluX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQzMjsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQzMjsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQzMiB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjQgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NFxuXG5sZXQgYmluX2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdGl2ZWludFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdGl2ZWludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFNoYXBlLmJpbl9zaGFwZV9uYXRpdmVpbnRcblxubGV0IGJpbl9uYXRpdmVpbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdGl2ZWludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0aXZlaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXRpdmVpbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXQwXCIgKilcbmxldCBiaW5fd3JpdGVyX25hdDAgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdDA7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdDAgfVxubGV0IGJpbl9yZWFkZXJfbmF0MCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0MDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0MFwiIH1cbmxldCBiaW5fc2hhcGVfbmF0MCA9IFNoYXBlLmJpbl9zaGFwZV9uYXQwXG5cbmxldCBiaW5fbmF0MCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0MDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXQwOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdDAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwicmVmXCIgKilcbmxldCBiaW5fd3JpdGVyX3JlZiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcmVmIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9yZWYgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9yZWYgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfcmVmIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9yZWYgeDEgPSBTaGFwZS5iaW5fc2hhcGVfcmVmIHgxXG5cbmxldCBiaW5fcmVmIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcmVmIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcmVmIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3JlZiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxhenlcIiAqKVxubGV0IGJpbl93cml0ZXJfbGF6eSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGF6eSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xhenkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGF6eSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xhenkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGF6eSB4MVxuXG5sZXQgYmluX2xhenkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9sYXp5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGF6eSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9sYXp5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwib3B0aW9uXCIgKilcbmxldCBiaW5fd3JpdGVyX29wdGlvbiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfb3B0aW9uIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9vcHRpb24geDEgPSBTaGFwZS5iaW5fc2hhcGVfb3B0aW9uIHgxXG5cbmxldCBiaW5fb3B0aW9uIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfb3B0aW9uIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfb3B0aW9uIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX29wdGlvbiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcInBhaXJcIiAqKVxubGV0IGJpbl93cml0ZXJfcGFpciBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3BhaXIgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9wYWlyIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3BhaXIgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJwYWlyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9wYWlyIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX3BhaXIgeDEgeDJcblxubGV0IGJpbl9wYWlyIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcGFpciBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3BhaXIgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3BhaXIgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UzIFwidHJpcGxlXCIgKilcbmxldCBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiBiaW5fd3JpdGVyX2VsMyA9XG4gIHsgc2l6ZSA9XG4gICAgICAoZnVuIHYgLT5cbiAgICAgICAgIFNpemUuYmluX3NpemVfdHJpcGxlIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSBiaW5fd3JpdGVyX2VsMy5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfdHJpcGxlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwxLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwyLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwzLndyaXRlXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zXG4gICAgICAgICAgIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiBiaW5fcmVhZGVyX2VsMyA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF90cmlwbGVcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDEucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMi5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwzLnJlYWRcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInRyaXBsZVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzID0gU2hhcGUuYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4M1xuXG5sZXQgYmluX3RyaXBsZSBiaW5fZWwxIGJpbl9lbDIgYmluX2VsMyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdHJpcGxlIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZSBiaW5fZWwzLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl90cmlwbGUgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXIgYmluX2VsMy53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlciBiaW5fZWwzLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsaXN0XCIgKilcbmxldCBiaW5fd3JpdGVyX2xpc3QgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xpc3QgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xpc3QgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9saXN0IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xpc3QgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9saXN0IHgxID0gU2hhcGUuYmluX3NoYXBlX2xpc3QgeDFcblxubGV0IGJpbl9saXN0IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGlzdCBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xpc3QgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGlzdCBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2FycmF5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9hcnJheSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfYXJyYXkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9hcnJheSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9hcnJheSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9hcnJheSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9hcnJheSB4MVxuXG5sZXQgYmluX2FycmF5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYXJyYXkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9hcnJheSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9hcnJheSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcImhhc2h0YmxcIiAqKVxubGV0IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX2hhc2h0YmwgeDEgeDJcblxubGV0IGJpbl9oYXNodGJsIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaGFzaHRibCBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5cbmxldCBiaW5fZmxvYXQzMl92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJ2ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfdmVjID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZlYyB9XG5sZXQgYmluX3JlYWRlcl92ZWMgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgfVxubGV0IGJpbl9zaGFwZV92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3ZlYyA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdmVjOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZlYzsgcmVhZGVyID0gYmluX3JlYWRlcl92ZWMgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcblxubGV0IGJpbl9mbG9hdDMyX21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm1hdFwiICopXG5sZXQgYmluX3dyaXRlcl9tYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbWF0IH1cbmxldCBiaW5fcmVhZGVyX21hdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiB9XG5sZXQgYmluX3NoYXBlX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fbWF0ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9tYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfbWF0OyByZWFkZXIgPSBiaW5fcmVhZGVyX21hdCB9XG5cbigqJCBta19iYXNlIFwiYmlnc3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYmlnc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmcgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX2JpZ3N0cmluZ1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYmlnc3RyaW5nXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9iaWdzdHJpbmdcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2JpZ3N0cmluZ1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0YXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRhcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheSB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0YXJyYXlcblxubGV0IGJpbl9mbG9hdGFycmF5ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdGFycmF5XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdGFycmF5XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdGFycmF5XG4gIH1cbjs7XG5cbigqJCopXG5cbnR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiQgbWtfYmFzZSBcImZsb2F0X2FycmF5XCIgKilcbiAgbGV0IGJpbl93cml0ZXJfZmxvYXRfYXJyYXkgPVxuICAgIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRfYXJyYXk7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0X2FycmF5IH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl9mbG9hdF9hcnJheSA9XG4gICAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdF9hcnJheTsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRfYXJyYXlcIiB9XG4gIDs7XG5cbiAgbGV0IGJpbl9zaGFwZV9mbG9hdF9hcnJheSA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdF9hcnJheVxuXG4gIGxldCBiaW5fZmxvYXRfYXJyYXkgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXRfYXJyYXlcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXRfYXJyYXlcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXRfYXJyYXlcbiAgICB9XG4gIDs7XG4gICgqJCopXG5lbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbigqJCBta19iYXNlIFwidmFyaWFudF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfdmFyaWFudF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZhcmlhbnRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92YXJpYW50X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl92YXJpYW50X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmFyaWFudF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZhcmlhbnRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IFNoYXBlLmJpbl9zaGFwZV92YXJpYW50X2ludFxuXG5sZXQgYmluX3ZhcmlhbnRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV92YXJpYW50X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdmFyaWFudF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzhiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzhiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF84Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfOGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfOGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzhiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF84Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfOGJpdFxuXG5sZXQgYmluX2ludF84Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfOGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzhiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF84Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzE2Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8xNmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzE2Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMTZiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzE2Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMTZiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8xNmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8xNmJpdFxuXG5sZXQgYmluX2ludF8xNmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzE2Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMTZiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8xNmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8zMmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMzJiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8zMmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzMyYml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8zMmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzMyYml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMzJiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMzJiaXRcblxubGV0IGJpbl9pbnRfMzJiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8zMmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzMyYml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMzJiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfNjRiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzY0Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfNjRiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfNjRiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzY0Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzY0Yml0XG5cbmxldCBiaW5faW50XzY0Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfNjRiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF82NGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzY0Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRfYml0c1wiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NF9iaXRzID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NF9iaXRzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NF9iaXRzIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0X2JpdHMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0X2JpdHM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0X2JpdHNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRfYml0c1xuXG5sZXQgYmluX2ludDY0X2JpdHMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0X2JpdHNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0X2JpdHNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0X2JpdHNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMTZfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmsxNl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazE2X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazE2X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG5cbmxldCBiaW5fbmV0d29yazE2X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazE2X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazE2X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50MzJcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50MzJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG5cbmxldCBiaW5fbmV0d29yazY0X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDY0XG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludDY0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG5cbmxldCBiaW5fbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0XG4gIH1cbjs7XG5cbigqJCopXG5sZXQgYmluX3dyaXRlcl9hcnJheV9ub19sZW5ndGggYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiAoU2l6ZS5iaW5fc2l6ZV9hcnJheV9ub19sZW5ndGggW0B3YXJuaW5nIFwiLTNcIl0pIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgKFdyaXRlLmJpbl93cml0ZV9hcnJheV9ub19sZW5ndGggW0B3YXJuaW5nIFwiLTNcIl0pIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbmxldCBjbnZfd3JpdGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiB0cF9jbGFzcy5zaXplIChjbnYgdikpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gdHBfY2xhc3Mud3JpdGUgYnVmIH5wb3MgKGNudiB2KSlcbiAgfVxuOztcblxubGV0IGNudl9yZWFkZXIgY252IHRwX2NsYXNzID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gY252ICh0cF9jbGFzcy5yZWFkIGJ1ZiB+cG9zX3JlZikpXG4gIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgdnRhZyAtPiBjbnYgKHRwX2NsYXNzLnZ0YWdfcmVhZCBidWYgfnBvc19yZWYgdnRhZykpXG4gIH1cbjs7XG5cbmxldCBjbnYgZm9yX3NoYXBlIGZvcl93cml0ZXIgZm9yX3JlYWRlciB0cF9jbGFzcyA9XG4gIHsgc2hhcGUgPSBmb3Jfc2hhcGUgdHBfY2xhc3Muc2hhcGVcbiAgOyB3cml0ZXIgPSBjbnZfd3JpdGVyIGZvcl93cml0ZXIgdHBfY2xhc3Mud3JpdGVyXG4gIDsgcmVhZGVyID0gY252X3JlYWRlciBmb3JfcmVhZGVyIHRwX2NsYXNzLnJlYWRlclxuICB9XG47O1xuIiwiKCogQmluYWJsZTogc2lnbmF0dXJlcyBkZWZpbmluZyBnZW5lcmF0ZWQgZnVuY3Rpb25zIGZvciB0aGUgYmluYXJ5IHByb3RvY29sLlxuICAgW1MsIFMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyBzYXRpc2ZpZWQgYnkgdGhlIGdlbmVyYXRlZCBjb2RlIGFuZFxuICAgW01pbmltYWwuUywgTWluaW1hbC5TMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgdGhhdCBnZW5lcmF0ZWQgY29kZSB1c2VzLiAqKVxuXG4oKiB0aGUgc3Vic2V0IG9mIFMgY29udGFpbmluZyBvbmx5IGZ1bmN0aW9ucywgc28gdGhhdCBvbmUgY2FuIHJlY3Vyc2l2ZWx5IGRlZmluZSBtb2R1bGVzXG4gICBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2UgKilcbm1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX3QgOiB0IFJlYWQucmVhZGVyXG5cbiAgKCoqXG4gICAgIFRoaXMgZnVuY3Rpb24gb25seSBuZWVkcyBpbXBsZW1lbnRhdGlvbiBpZiBbdF0gZXhwb3NlZCB0byBiZSBhIHBvbHltb3JwaGljIHZhcmlhbnQuXG4gICAgIERlc3BpdGUgd2hhdCB0aGUgdHlwZSByZWFkcywgdGhpcyBkb2VzICpub3QqIHByb2R1Y2UgYSBmdW5jdGlvbiBhZnRlciByZWFkaW5nO1xuICAgICBpbnN0ZWFkIGl0IHRha2VzIHRoZSBjb25zdHJ1Y3RvciB0YWcgKGludCkgYmVmb3JlIHJlYWRpbmcgYW5kIHJlYWRzIHRoZSByZXN0IG9mIHRoZVxuICAgICB2YXJpYW50IFt0XSBhZnRlcndhcmRzLlxuICAqKVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgdmFsIGJpbl93cml0ZXJfdCA6IHQgVHlwZV9jbGFzcy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6IHQgVHlwZV9jbGFzcy5yZWFkZXJcbiAgdmFsIGJpbl90IDogdCBUeXBlX2NsYXNzLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdhIHQpIFNpemUuc2l6ZXIxXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgaW50IC0+ICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgV3JpdGUud3JpdGVyMlxuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi50XG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMudFxuZW5kXG5cbm1vZHVsZSBNaW5pbWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICAgIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiB0IFJlYWQucmVhZGVyXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdhIHQpIFNpemUuc2l6ZXIxXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgaW50IC0+ICdhIHQpIFJlYWQucmVhZGVyMVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgV3JpdGUud3JpdGVyMlxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIGVuZFxuZW5kXG4iLCIoKiBVdGlsczogdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHVzZXIgY29udmVuaWVuY2UgKilcblxub3BlbiBDb21tb25cbm9wZW4gU2l6ZVxub3BlbiBUeXBlX2NsYXNzXG5pbmNsdWRlIFV0aWxzX2ludGZcblxubGV0IHNpemVfaGVhZGVyX2xlbmd0aCA9IDhcbmxldCBiaW5fd3JpdGVfc2l6ZV9oZWFkZXIgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0XG5sZXQgYmluX3JlYWRfc2l6ZV9oZWFkZXIgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdFxuXG5sZXQgYmluX2R1bXAgPyhoZWFkZXIgPSBmYWxzZSkgd3JpdGVyIHYgPVxuICBsZXQgYnVmLCBwb3MsIHBvc19sZW4gPVxuICAgIGxldCB2X2xlbiA9IHdyaXRlci5zaXplIHYgaW5cbiAgICBpZiBoZWFkZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCB0b3RfbGVuID0gdl9sZW4gKyBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHRvdF9sZW4gaW5cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3M6MCB2X2xlbiBpblxuICAgICAgYnVmLCBwb3MsIHBvcyArIHZfbGVuKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgMCwgdl9sZW4pXG4gIGluXG4gIGxldCBwb3MgPSB3cml0ZXIud3JpdGUgYnVmIH5wb3MgdiBpblxuICBpZiBwb3MgPSBwb3NfbGVuXG4gIHRoZW4gYnVmXG4gIGVsc2UgZmFpbHdpdGggXCJCaW5fcHJvdC5VdGlscy5iaW5fZHVtcDogc2l6ZSBjaGFuZ2VkIGR1cmluZyB3cml0aW5nXCJcbjs7XG5cbigqIFJlYWRpbmcgZnJvbSBzdHJlYW1zICopXG5cbmxldCBiaW5fcmVhZF9zdHJlYW0gP21heF9zaXplIH5yZWFkIHJlYWRlciA9XG4gIGxldCBidWYgPSBjcmVhdGVfYnVmIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICByZWFkIGJ1ZiB+cG9zOjAgfmxlbjpzaXplX2hlYWRlcl9sZW5ndGg7XG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICBtYXRjaCBtYXhfc2l6ZSB3aXRoXG4gIHwgU29tZSBtYXhfc2l6ZSB3aGVuIGxlbiA+IG1heF9zaXplIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHNpemUgZXhjZWVkcyBtYXhfc2l6ZTogJWQgPiAlZFwiXG4gICAgICAgICBsZW5cbiAgICAgICAgIG1heF9zaXplKVxuICB8IF8gLT5cbiAgICBsZXQgYnVmID0gaWYgbGVuID4gc2l6ZV9oZWFkZXJfbGVuZ3RoIHRoZW4gY3JlYXRlX2J1ZiBsZW4gZWxzZSBidWYgaW5cbiAgICByZWFkIGJ1ZiB+cG9zOjAgfmxlbjtcbiAgICBwb3NfcmVmIDo9IDA7XG4gICAgbGV0IHJlcyA9IHJlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGlmICFwb3NfcmVmID0gbGVuXG4gICAgdGhlbiByZXNcbiAgICBlbHNlIChcbiAgICAgIGxldCBtc2cgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBwcm90b2NvbCBsaWVkIGFib3V0IGxlbmd0aCBvZiB2YWx1ZTogZXhwZWN0ZWQgXFxcbiAgICAgICAgICAgJWQsIHJlY2VpdmVkICVkXCJcbiAgICAgICAgICBsZW5cbiAgICAgICAgICAhcG9zX3JlZlxuICAgICAgaW5cbiAgICAgIGZhaWx3aXRoIG1zZylcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5tb2R1bGUgT2ZfbWluaW1hbCAoUyA6IEJpbmFibGUuTWluaW1hbC5TKSA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5sZXQgbWF5YmVfYW5ub3RhdGVfc2hhcGUgbWF5YmVfdXVpZCBzaGFwZSA9XG4gIG1hdGNoIG1heWJlX3V1aWQgd2l0aFxuICB8IE5vbmUgLT4gc2hhcGVcbiAgfCBTb21lIHV1aWQgLT4gU2hhcGUuYW5ub3RhdGUgdXVpZCBzaGFwZVxuOztcblxubW9kdWxlIE1ha2VfYmluYWJsZV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBPZl9taW5pbWFsIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgICAgIHR5cGUgdCA9IFMudFxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBtYXliZV9hbm5vdGF0ZV9zaGFwZSBTLm1heWJlX2NhbGxlcl9pZGVudGl0eSBCLmJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gQi5iaW5fc2l6ZV90IChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID0gQi5iaW5fd3JpdGVfdCBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPSBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBidWYgfnBvc19yZWYpXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gYnVmIH5wb3NfcmVmIG4gPSBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYnVmIH5wb3NfcmVmIG4pXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZSBTLm1heWJlX2NhbGxlcl9pZGVudGl0eSAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwgdCA9IEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbCAoUy50b19iaW5hYmxlIHQpXG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbCBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbCBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMS5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyIGJpbl9zaGFwZV9lbDMgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyIGJpbl9zaGFwZV9lbDMpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTMuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRoX3V1aWRfc3BlYykgPSBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgPSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkXG5tb2R1bGUgTWFrZV9iaW5hYmxlMSA9IE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkXG5tb2R1bGUgTWFrZV9iaW5hYmxlMiA9IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkXG5tb2R1bGUgTWFrZV9iaW5hYmxlMyA9IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkXG5cbmxldCB3aXRoX21vZHVsZV9uYW1lIGYgfm1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWUgPVxuICBtYXRjaCBtb2R1bGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBmIGZ1bmN0aW9uX25hbWVcbiAgfCBTb21lIG1vZHVsZV9uYW1lIC0+IFByaW50Zi5rc3ByaW50ZiBmIFwiJXMuJXNcIiBtb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lXG47O1xuXG5sZXQgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gPSB3aXRoX21vZHVsZV9uYW1lIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uXG5cbmxldCByYWlzZV9yZWFkX3Rvb19tdWNoID1cbiAgd2l0aF9tb2R1bGVfbmFtZVxuICAgIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogdHJpZWQgdG8gcmVhZCBtb3JlIGVsZW1lbnRzIHRoYW4gYXZhaWxhYmxlXCIpXG47O1xuXG5sZXQgcmFpc2VfcmVhZF9ub3RfZW5vdWdoID1cbiAgd2l0aF9tb2R1bGVfbmFtZSAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IGRpZG4ndCByZWFkIGFsbCBlbGVtZW50c1wiKVxuOztcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCI2NTkyMzcxYS00OTk0LTExZTYtOTIzYS03NzQ4ZTQxODI3NjRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTEgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYWM4YTlmZjQtNDk5NC0xMWU2LTlhMWItOWZiNGU5MzNiZDlkXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIF9uIC0+IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgX24pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTIgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImI0ZTU0YWQyLTQ5OTQtMTFlNi1iOGRmLTg3YzI5OTdmOWY1MlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYmluX3JlYWRfYiBfYnVmIH5wb3NfcmVmIF9uID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlM19zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgdDMgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJmMjExMmVkYS1lN2Q3LTExZTYtYmIzNi0wNzJlOWNlMTU5ZGJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgdDMgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYmluX3JlYWRfYiBfYmluX3JlYWRfYyBfYnVmIH5wb3NfcmVmIF9uID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcbiIsIigqKlxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBkZWZhdWx0IGNvbnZlcnRlcnMgZm9yIHRoZSB0eXBlcyBkZWZpbmVkIGluIHRoZSBPQ2FtbFxuICAgc3RhbmRhcmQgbGlicmFyeS5cbiopXG5cbmluY2x1ZGUgU2l6ZVxuXG5sZXQgYmluX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl91bml0XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV91bml0XG5sZXQgYmluX3dyaXRlcl91bml0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3VuaXRcbmxldCBiaW5fd3JpdGVfdW5pdCA9IFdyaXRlLmJpbl93cml0ZV91bml0XG5sZXQgYmluX3JlYWRlcl91bml0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3VuaXRcbmxldCBiaW5fcmVhZF91bml0ID0gUmVhZC5iaW5fcmVhZF91bml0XG5cbmxldCBfX2Jpbl9yZWFkX3VuaXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9ib29sID0gVHlwZV9jbGFzcy5iaW5fYm9vbFxubGV0IGJpbl9zaGFwZV9ib29sID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYm9vbFxubGV0IGJpbl93cml0ZXJfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ib29sXG5sZXQgYmluX3dyaXRlX2Jvb2wgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbFxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9ib29sXG5sZXQgYmluX3JlYWRfYm9vbCA9IFJlYWQuYmluX3JlYWRfYm9vbFxuXG5sZXQgX19iaW5fcmVhZF9ib29sX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc3RyaW5nXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3N0cmluZ1xubGV0IGJpbl93cml0ZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3N0cmluZ1xubGV0IGJpbl93cml0ZV9zdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfc3RyaW5nXG5sZXQgYmluX3JlYWRfc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9zdHJpbmdcblxubGV0IF9fYmluX3JlYWRfc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX2J5dGVzXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYnl0ZXNcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2J5dGVzXG5sZXQgYmluX3dyaXRlX2J5dGVzID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9ieXRlc1xubGV0IGJpbl9yZWFkX2J5dGVzID0gUmVhZC5iaW5fcmVhZF9ieXRlc1xuXG5sZXQgX19iaW5fcmVhZF9ieXRlc19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fY2hhclxubGV0IGJpbl9zaGFwZV9jaGFyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfY2hhclxubGV0IGJpbl93cml0ZXJfY2hhciA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9jaGFyXG5sZXQgYmluX3dyaXRlX2NoYXIgPSBXcml0ZS5iaW5fd3JpdGVfY2hhclxubGV0IGJpbl9yZWFkZXJfY2hhciA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9jaGFyXG5sZXQgYmluX3JlYWRfY2hhciA9IFJlYWQuYmluX3JlYWRfY2hhclxuXG5sZXQgX19iaW5fcmVhZF9jaGFyX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50ID0gVHlwZV9jbGFzcy5iaW5faW50XG5sZXQgYmluX3NoYXBlX2ludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludFxubGV0IGJpbl93cml0ZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludFxubGV0IGJpbl93cml0ZV9pbnQgPSBXcml0ZS5iaW5fd3JpdGVfaW50XG5sZXQgYmluX3JlYWRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50XG5sZXQgYmluX3JlYWRfaW50ID0gUmVhZC5iaW5fcmVhZF9pbnRcbmxldCBfX2Jpbl9yZWFkX2ludF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdFxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0XG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdFxubGV0IGJpbl93cml0ZV9mbG9hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRcbmxldCBiaW5fcmVhZF9mbG9hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0YXJyYXlcbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZV9mbG9hdGFycmF5ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXlcblxubGV0IF9fYmluX3JlYWRfZmxvYXRhcnJheV9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiICFwb3NfcmVmXG47O1xuXG5pbmNsdWRlIHN0cnVjdFxuICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXlcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA5XSBVc2UgW2Zsb2F0IGFycmF5XSBvciBbZmxvYXRhcnJheV0gaW5zdGVhZFwiXVxuXG4gIGxldCAoYmluX3NoYXBlX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl93cml0ZXJfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgXFxcbiAgICAgICAgICBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl93cml0ZV9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gXFxcbiAgICAgICAgICBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFdyaXRlLmJpbl93cml0ZV9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3JlYWRlcl9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnMgXFxcbiAgICAgICAgICBkaXJlY3RseVwiXSlcbiAgICA9XG4gICAgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fcmVhZF9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gXFxcbiAgICAgICAgICBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFJlYWQuYmluX3JlYWRfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9mbG9hdF9hcnJheV9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICAgIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdF9hcnJheVwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IChfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X18gW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgXFxcbiAgICAgICAgICBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSBmbG9hdGFycmF5IGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgX19iaW5fcmVhZF9mbG9hdF9hcnJheV9fXG4gIDs7XG5lbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbmxldCBiaW5faW50MzIgPSBUeXBlX2NsYXNzLmJpbl9pbnQzMlxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDMyXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQzMlxubGV0IGJpbl93cml0ZV9pbnQzMiA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMlxubGV0IGJpbl9yZWFkZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50MzJcbmxldCBiaW5fcmVhZF9pbnQzMiA9IFJlYWQuYmluX3JlYWRfaW50MzJcblxubGV0IF9fYmluX3JlYWRfaW50MzJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50NjQgPSBUeXBlX2NsYXNzLmJpbl9pbnQ2NFxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDY0XG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQ2NFxubGV0IGJpbl93cml0ZV9pbnQ2NCA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NFxubGV0IGJpbl9yZWFkZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50NjRcbmxldCBiaW5fcmVhZF9pbnQ2NCA9IFJlYWQuYmluX3JlYWRfaW50NjRcblxubGV0IF9fYmluX3JlYWRfaW50NjRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fbmF0aXZlaW50XG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX25hdGl2ZWludFxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdGl2ZWludFxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRfbmF0aXZlaW50ID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnRcblxubGV0IF9fYmluX3JlYWRfbmF0aXZlaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWZcbmxldCBiaW5fc2hhcGVfcmVmID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfcmVmXG5sZXQgYmluX3dyaXRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfcmVmXG5sZXQgYmluX3dyaXRlX3JlZiA9IFdyaXRlLmJpbl93cml0ZV9yZWZcbmxldCBiaW5fcmVhZGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9yZWZcbmxldCBiaW5fcmVhZF9yZWYgPSBSZWFkLmJpbl9yZWFkX3JlZlxuXG5sZXQgX19iaW5fcmVhZF9yZWZfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eV90ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eV90ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eSA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9vcHRpb25cbmxldCBiaW5fc2hhcGVfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfb3B0aW9uXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfb3B0aW9uXG5sZXQgYmluX3dyaXRlX29wdGlvbiA9IFdyaXRlLmJpbl93cml0ZV9vcHRpb25cbmxldCBiaW5fcmVhZGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9vcHRpb25cbmxldCBiaW5fcmVhZF9vcHRpb24gPSBSZWFkLmJpbl9yZWFkX29wdGlvblxuXG5sZXQgX19iaW5fcmVhZF9vcHRpb25fXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9saXN0XG5sZXQgYmluX3NoYXBlX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9saXN0XG5sZXQgYmluX3dyaXRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xpc3RcbmxldCBiaW5fd3JpdGVfbGlzdCA9IFdyaXRlLmJpbl93cml0ZV9saXN0XG5sZXQgYmluX3JlYWRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xpc3RcbmxldCBiaW5fcmVhZF9saXN0ID0gUmVhZC5iaW5fcmVhZF9saXN0XG5cbmxldCBfX2Jpbl9yZWFkX2xpc3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX2FycmF5XG5sZXQgYmluX3NoYXBlX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYXJyYXlcbmxldCBiaW5fd3JpdGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2FycmF5XG5sZXQgYmluX3dyaXRlX2FycmF5ID0gV3JpdGUuYmluX3dyaXRlX2FycmF5XG5sZXQgYmluX3JlYWRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9hcnJheVxubGV0IGJpbl9yZWFkX2FycmF5ID0gUmVhZC5iaW5fcmVhZF9hcnJheVxuXG5sZXQgX19iaW5fcmVhZF9hcnJheV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5faGFzaHRibFxubGV0IGJpbl9zaGFwZV9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaGFzaHRibFxubGV0IGJpbl93cml0ZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9oYXNodGJsXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgPSBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibFxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9oYXNodGJsXG5sZXQgYmluX3JlYWRfaGFzaHRibCA9IFJlYWQuYmluX3JlYWRfaGFzaHRibFxuXG5sZXQgX19iaW5fcmVhZF9oYXNodGJsX18gX2YgX2cgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fYmlnc3RyaW5nXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmdcblxubGV0IF9fYmluX3JlYWRfYmlnc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9tYXRcbmxldCBiaW5fc2hhcGVfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX3dyaXRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbWF0XG5sZXQgYmluX3dyaXRlX21hdCA9IFdyaXRlLmJpbl93cml0ZV9tYXRcbmxldCBiaW5fcmVhZGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9tYXRcbmxldCBiaW5fcmVhZF9tYXQgPSBSZWFkLmJpbl9yZWFkX21hdFxubGV0IF9fYmluX3JlYWRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl92ZWMgPSBUeXBlX2NsYXNzLmJpbl92ZWNcbmxldCBiaW5fc2hhcGVfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3dyaXRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdmVjXG5sZXQgYmluX3dyaXRlX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV92ZWNcbmxldCBiaW5fcmVhZGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl92ZWNcbmxldCBiaW5fcmVhZF92ZWMgPSBSZWFkLmJpbl9yZWFkX3ZlY1xubGV0IF9fYmluX3JlYWRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiAhcG9zX3JlZlxuOztcbiIsImluY2x1ZGUgTWQ1X2xpYlxuXG5sZXQgYmluX3NoYXBlX3QgPVxuICBTaGFwZS5iYXNldHlwZSAoU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmNmJkY2RkMC05Zjc1LTExZTYtOWE3ZS1kMzAyMDQyOGVmZWRcIikgW11cbjs7XG5cbmxldCBiaW5fc2l6ZV90ID0gU2l6ZS5iaW5fc2l6ZV9tZDVcbmxldCBiaW5fd3JpdGVfdCA9IFdyaXRlLmJpbl93cml0ZV9tZDVcbmxldCBiaW5fcmVhZF90ID0gUmVhZC5iaW5fcmVhZF9tZDVcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZkaWdlc3QgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiU2hhcGUuTWQ1LnRcIiAhcG9zX3JlZlxuOztcbiIsIm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWEyNTU3ZS00OTBhLTExZTYtOThhYy00Yjg5NTNkNTI1ZmVcIikgWyB0IF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBhID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYmluX3NpemVfYSBhXG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgPVxuICAgIGxldCBzdGFydF9hID0gcG9zICsgVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgbGV0IGVuZF9hID0gYmluX3dyaXRlX2EgYnVmIH5wb3M6c3RhcnRfYSBhIGluXG4gICAgbGV0IHNpemUgPSBlbmRfYSAtIHN0YXJ0X2EgaW5cbiAgICBsZXQgd3JpdHRlbiA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gc3RhcnRfYSk7XG4gICAgZW5kX2FcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGV4cGVjdGVkX3NpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgc3RhcnRfYSA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBlbmRfYSA9ICFwb3NfcmVmIGluXG4gICAgaWYgZW5kX2EgLSBzdGFydF9hIDw+IGV4cGVjdGVkX3NpemVcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgXCJCaW5fcHJvdC5CbG9iLmJpbl9yZWFkX3Q6IHNpemUgKCVkKSA8PiBleHBlY3RlZCAoJWQpXCJcbiAgICAgICAgICAgKGVuZF9hIC0gc3RhcnRfYSlcbiAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSk7XG4gICAgYVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIF8gfnBvc19yZWYgPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IudFwiICFwb3NfcmVmXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpZCA9ICdhXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIFV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IFRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgdCA9IHRcbiAgICBsZXQgdG9fYmluYWJsZSB0ID0gdFxuICBlbmQpXG5cbm1vZHVsZSBPcGFxdWUgPSBzdHJ1Y3RcbiAgKCogW0JpZ3N0cmluZ10gYW5kIFtTdHJpbmddIHNoYXJlIFtiaW5fc2hhcGVfdF0gYmVjYXVzZSB0aGV5IGhhdmUgZXhhY3RseSB0aGUgc2FtZVxuICAgICBzZXJpYWxpemF0aW9uIGZvcm1hdCBhbmQgdGhleSBkZW5vdGUgdGhlIHNhbWUgdmFsdWVzLlxuXG4gICAgIEluIGZhY3QgYWxtb3N0IGNlcnRhaW5seSBbQmxvYi50XSBpdHNlbGYgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYmluX3NoYXBlX3QgYXMgd2VsbC4gKilcbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMWY3NmUtNDkwYS0xMWU2LTg2YTktNWJlZjU4NWYyNjAyXCIpIFtdKVxuICA7O1xuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICAoKiBbYnVmXSBpcyB0aGUgYmluLWlvIGRhdGEgZXhjbHVkaW5nIHRoZSBzaXplIGhlYWRlci4gV2hlbiAoZGUtKXNlcmlhbGl6ZWQsIHRoZSBzaXplXG4gICAgICAgaGVhZGVyIGlzIGluY2x1ZGVkLiAqKVxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBidWZcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBidWZfbGVuIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IGJ1Zl9sZW4gdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIHNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gY3JlYXRlX2J1ZiBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOiFwb3NfcmVmIH5kc3Q6dCB+ZHN0X3BvczowIHNpemU7XG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuT3BhcXVlLnRcIiAhcG9zX3JlZlxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgVXRpbHMuT2ZfbWluaW1hbCAoVClcblxuICAgIGxldCB0b19vcGFxdWUgYmxvYiBiaW5fd3JpdGVyID0gVXRpbHMuYmluX2R1bXAgYmluX3dyaXRlciBibG9iXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gKHQgOiB0KSBiaW5fcmVhZGVyID0gYmluX3JlYWRlci5UeXBlX2NsYXNzLnJlYWQgdCB+cG9zX3JlZjoocmVmIDApXG5cbiAgICAoKiBCaWdzdHJpbmdzIGFyZSBhIHByaW1pdGl2ZSB0eXBlIHRoYXQgcG9seW1vcnBoaWMgY29tcGFyZSBoYW5kbGVzIHdlbGwuICopXG4gICAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiBidWYgLT4gYnVmIC0+IGludClcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBQcHhfc2V4cF9jb252X2xpYi5TZXhwLkF0b20gKG9mX29wYXF1ZV9leG4gdCBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgU3RyaW5nLmxlbmd0aCB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIENvbW1vbi5ibGl0X3N0cmluZ19idWYgdCB+c3JjX3BvczowIGJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IGxlbiA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3M6IXBvc19yZWYgfmxlbiBpblxuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgbGVuO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuT3BhcXVlLnRcIiAhcG9zX3JlZlxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgVXRpbHMuT2ZfbWluaW1hbCAoVClcblxuICAgIGxldCBsZW5ndGggdCA9IFN0cmluZy5sZW5ndGggdFxuXG4gICAgbGV0IHRvX29wYXF1ZSB+YnVmIHYgYmluX3dyaXRlcl92IDogdCA9XG4gICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXJfdi5UeXBlX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgICAgIHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgb2Zfb3BhcXVlX2V4biB+YnVmICh0IDogdCkgYmluX3JlYWRlcl92ID1cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgICAgIENvbW1vbi5ibGl0X3N0cmluZ19idWYgdCBidWYgfmxlbjtcbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXMgPSBiaW5fcmVhZGVyX3YuVHlwZV9jbGFzcy5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgaWYgIXBvc19yZWYgPD4gbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgXCJPcGFxdWUgYmxvYiBoYXMgJWQgYnl0ZXMgYnV0IFtvZl9vcGFxdWVfZXhuXSByZWFkICVkXCJcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgIXBvc19yZWZcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggZXJyb3IpXG4gICAgICBlbHNlIHJlc1xuICAgIDs7XG5cbiAgICAoKiBTdHJpbmdzIGFyZSBhIHByaW1pdGl2ZSB0eXBlIHRoYXQgcG9seW1vcnBoaWMgY29tcGFyZSBoYW5kbGVzIHdlbGwuICopXG4gICAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgICBsZXQgc2V4cF9vZl90ID0gUHB4X3NleHBfY29udl9saWIuQ29udi5zZXhwX29mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgSWdub3JlZCA9IHN0cnVjdFxuICAoKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYW4gaWdub3JlZCB2YWx1ZSBpcyBqdXN0IHRoZSBzaXplIG9mIHRoZSB2YWx1ZSBpdCB3YXMgY3JlYXRlZFxuICAgICBmcm9tIChpLmUuLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2VyZSBpZ25vcmVkIGZyb20gdGhlIGJ1ZmZlciB3ZSB3ZXJlIHJlYWRpbmdcbiAgICAgLS0gd2UgZXhjbHVkZSB0aGUgOCBieXRlIHNpemUgaGVhZGVyIGZyb20gd2hpY2ggdGhlIHNpemUgd2FzIHJlYWQpLiAqKVxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgYmluX3NpemVfdCBzaXplID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgc2l6ZVxuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICBzaXplXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuSWdub3JlZC50XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90ID0geyBUeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIHByZV90ZXN0X2hvb2sgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5sZXQgcHJlX3Rlc3RfaG9vayA9IGlnbm9yZVxuIiwiWyUlaW1wb3J0IFwiY29uZmlnLmhcIl1cblxub3BlbiEgQmFzZVxuXG5bJSVpZmRlZiBKU0NfQVJDSF9TSVhUWUZPVVJdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5bQEBub2FsbG9jXVxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuXG5bJSVlbmRpZl1cblslJWlmZGVmIEpTQ19QT1NJWF9USU1FUlNdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIGZhaWxlZFwiXG5cblslJWVsc2VdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImdldHRpbWVvZmRheSBmYWlsZWRcIlxuXG5bJSVlbmRpZl1cblxubGV0IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgPVxuICBsZXQgdCA9IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyAoKSBpblxuICBpZiBJbnQ2My4oIDw+ICkgdCBJbnQ2My56ZXJvIHRoZW4gdCBlbHNlIGdldHRpbWVfZmFpbGVkICgpXG47O1xuIiwibW9kdWxlIFRlc3RfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN1Y2Nlc3MgfCBGYWlsdXJlIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAgIC0+IDFcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gXCJzdWNjZXNzXCJcbiAgICB8IEZhaWx1cmUgLT4gXCJmYWlsdXJlXCJcbiAgICB8IEVycm9yICAgLT4gXCJlcnJvclwiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmUgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBTdWNjZXNzLCBTdWNjZXNzICAgICAgICAtPiBTdWNjZXNzXG4gICAgfCBFcnJvciAgLCBfIHwgXywgRXJyb3IgICAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT4gUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAxXG4gIHwgQXJnLkhlbHAgbXNnIC0+IFByaW50Zi5wcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5sZXQgdGVzdF9tb2R1bGVzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdF9tb2R1bGVzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgdGVzdHNfcmFuID0gcmVmIDBcbmxldCB0ZXN0c19mYWlsZWQgPSByZWYgMFxubGV0IGR5bmFtaWNfbGliIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxudHlwZSBmaWxlbmFtZSA9IHN0cmluZ1xudHlwZSBsaW5lX251bWJlciA9IGludFxudHlwZSBzdGFydF9wb3MgPSBpbnRcbnR5cGUgZW5kX3BvcyA9IGludFxudHlwZSBjb25maWcgPSAobW9kdWxlIElubGluZV90ZXN0X2NvbmZpZy5TKVxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3NcbiAgPSBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzICA6IHN0cmluZyBsaXN0XG4gICAgOyBkcm9wcGVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIH1cblxuICBsZXQgZW5hYmxlX2V2ZXJ5dGhpbmcgPSB7IHJlcXVpcmVkX3RhZ3MgPSBbXTsgZHJvcHBlZF90YWdzID0gW10gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoPD4pIHRhZykgdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuXG4gIGxldCByZXF1aXJlIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IExpc3QuZmlsdGVyICgoPD4pIHRhZykgdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSB0YWcgOjogdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuXG4gIGxldCBlbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHQgfnBhcnRpYWxfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuXG4gIGxldCBkaXNhYmxlZCB0IH5jb21wbGV0ZV90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gcmVxIC0+IG5vdCAoTGlzdC5tZW0gcmVxIHRhZ3MpKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuZW5kXG5cblxudHlwZSB3aGljaF90ZXN0cyA9XG4gIHsgbGlibmFtZSA6IHN0cmluZ1xuICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA6IChmaWxlbmFtZSAqIGxpbmVfbnVtYmVyIG9wdGlvbiAqIGJvb2wgcmVmKSBsaXN0XG4gIDsgbmFtZV9maWx0ZXIgOiBzdHJpbmcgbGlzdFxuICA7IHdoaWNoX3RhZ3MgOiBUYWdfcHJlZGljYXRlLnRcbiAgfVxudHlwZSB0ZXN0X21vZGUgPVxuICB7IHdoaWNoX3Rlc3RzIDogd2hpY2hfdGVzdHNcbiAgOyB3aGF0X3RvX2RvIDpcbiAgICAgIFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvblxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zXG4gICAgICBdXG4gIH1cblxubW9kdWxlIEFjdGlvbiA6IHNpZ1xuICB0eXBlIHQgPSBbXG4gICAgfCBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICBdXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgbGV0IGFjdGlvbiA6IHQgcmVmID0gcmVmIGBJZ25vcmVcbiAgbGV0IGZvcmNlX2Ryb3AgPVxuICAgIHRyeSBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCIgOiBzdHJpbmcpOyB0cnVlXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3BcbiAgICB0aGVuIGBJZ25vcmVcbiAgICBlbHNlICFhY3Rpb25cblxuICBsZXQgc2V0IHYgPSBhY3Rpb24gOj0gdlxuZW5kXG5cbm1vZHVsZSBQYXJ0aXRpb24gOiBzaWdcbiAgdmFsIGZvdW5kX3Rlc3QgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHNldF9jdXJyZW50IDogc3RyaW5nIC0+IHVuaXRcbiAgdmFsIGlzX2N1cnJlbnQgOiBzdHJpbmcgb3B0aW9uIC0+IGJvb2xcbiAgdmFsIGFsbCA6IHVuaXQgLT4gc3RyaW5nIGxpc3RcbmVuZCA9IHN0cnVjdFxuICBsZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgMjNcbiAgbGV0IGN1cnJlbnQgPSByZWYgXCJcIiAgbGV0IHNldF9jdXJyZW50IHggPSBjdXJyZW50IDo9IHhcbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGFsbCAhY3VycmVudCAoKVxuICA7O1xuICBsZXQgaXNfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgcCAtPiBwID0gIWN1cnJlbnRcbiAgOztcbiAgbGV0IGFsbCAoKSA9XG4gICAgTGlzdC5zb3J0IFN0cmluZy5jb21wYXJlXG4gICAgICAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuIGRlc2NyOyB0YWdzIH0gOjogcHJldjtcbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZiAoKSBpblxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICAoKSA9IFQudGFncyAgIWN1cnJlbnRcbmVuZFxuXG5sZXQgdmVyYm9zZSA9IHJlZiBmYWxzZVxubGV0IHN0cmljdCA9IHJlZiBmYWxzZVxubGV0IHNob3dfY291bnRzID0gcmVmIGZhbHNlXG5sZXQgbGlzdF90ZXN0X25hbWVzID0gcmVmIGZhbHNlXG5sZXQgZGVsYXllZF9lcnJvcnMgPSByZWYgW11cbmxldCBzdG9wX29uX2Vycm9yID0gcmVmIGZhbHNlXG5cbmxldCBsb2cgPSByZWYgTm9uZVxuXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cblxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgaW5fcGxhY2UgID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBhbGxvd19vdXRwdXRfcGF0dGVybnMgPSByZWYgZmFsc2VcblxubGV0IGRpc3BsYXllZF9kZXNjciAobGF6eSBkZXNjcikgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3BvcyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZCVzXCJcbiAgICBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zXG4gICAgKGlmIGRlc2NyID0gXCJcIiB0aGVuIFwiXCIgZWxzZSBcIjogXCIgXiBkZXNjcilcbmxldCBwYXJzZV9kZXNjciBzdHIgPVxuICB0cnkgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAsIGNoYXJhY3RlcnMgJWQgLSAlZCAlIVwiXG4gICAgICAgICAgICAgIChmdW4gZmlsZSBsaW5lIF9zdGFydF9wb3MgX2VuZF9wb3MgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aCBfIC0+XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aCBfIC0+XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgJSFcIiAoZnVuIGZpbGUgLT4gZmlsZSwgTm9uZSkpXG4gIHdpdGggXyAtPiBOb25lXG5cbmxldCAoKSA9XG4gIG1hdGNoIEFycmF5LnRvX2xpc3QgU3lzLmFyZ3Ygd2l0aFxuICB8IG5hbWUgOjogXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiA6OiBsaWIgOjogcmVzdFxuICAgIHdoZW4gQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5hbV90ZXN0aW5nIC0+IGJlZ2luXG4gICAgICAoKiB3aGVuIHdlIHNlZSB0aGlzIGFyZ3VtZW50LCB3ZSBzd2l0Y2ggdG8gdGVzdCBtb2RlICopXG4gICAgICBsZXQgdGVzdHMgPSByZWYgW10gaW5cbiAgICAgIGxldCBsaXN0X3BhcnRpdGlvbnMgPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBwYXJ0aXRpb24gPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHRhZ19wcmVkaWNhdGUgPSByZWYgVGFnX3ByZWRpY2F0ZS5lbmFibGVfZXZlcnl0aGluZyBpblxuICAgICAgbGV0IG5hbWVfZmlsdGVyID0gcmVmIFtdIGluXG4gICAgICBwYXJzZV9hcmd2IChBcnJheS5vZl9saXN0IChuYW1lIDo6IHJlc3QpKSAoQXJnLmFsaWduIFtcbiAgICAgICAgXCItbGlzdC10ZXN0LW5hbWVzXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7IHZlcmJvc2UgOj0gdHJ1ZSksXG4gICAgICAgIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCI7XG4gICAgICAgIFwiLWxpc3QtcGFydGl0aW9uc1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfcGFydGl0aW9ucyA6PSB0cnVlKSxcbiAgICAgICAgXCIgTGlzdHMgYWxsIHRoZSBwYXJ0aXRpb25zIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdCBvciB0ZXN0X21vZHVsZVwiO1xuICAgICAgICBcIi1wYXJ0aXRpb25cIiwgQXJnLlN0cmluZyAoZnVuIGkgLT4gcGFydGl0aW9uIDo9IFNvbWUgaSksXG4gICAgICAgIFwiIE9ubHkgcnVuIHRoZSB0ZXN0cyBpbiB0aGUgZ2l2ZW4gcGFydGl0aW9uXCI7XG4gICAgICAgIFwiLXZlcmJvc2VcIiwgQXJnLlNldCB2ZXJib3NlLCBcIiBTaG93IHRoZSB0ZXN0cyBhcyB0aGV5IHJ1blwiO1xuICAgICAgICBcIi1zdG9wLW9uLWVycm9yXCIsIEFyZy5TZXQgc3RvcF9vbl9lcnJvciwgXCIgUnVuIHRlc3RzIG9ubHkgdXAgdG8gdGhlIGZpcnN0IGVycm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Vzbid0IHdvcmsgZm9yIGV4cGVjdCB0ZXN0cylcIjtcbiAgICAgICAgXCItc3RyaWN0XCIsIEFyZy5TZXQgc3RyaWN0LCBcIiBFbmQgd2l0aCBhbiBlcnJvciBpZiBubyB0ZXN0cyB3ZXJlIHJ1blwiO1xuICAgICAgICBcIi1zaG93LWNvdW50c1wiLCBBcmcuU2V0IHNob3dfY291bnRzLCBcIiBTaG93IHRoZSBudW1iZXIgb2YgdGVzdHMgcmFuXCI7XG4gICAgICAgIFwiLWxvZ1wiLCBBcmcuVW5pdCAoZnVuICgpIC0+XG4gICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGggXyAtPiAoKSk7XG4gICAgICAgICAgbG9nIDo9IFNvbWUgKG9wZW5fb3V0IFwiaW5saW5lX3Rlc3RzLmxvZ1wiKVxuICAgICAgICApLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCI7XG4gICAgICAgIFwiLWRyb3AtdGFnXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgc1xuICAgICAgICApLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyBub3QgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtcmVxdWlyZS10YWcpXCI7XG4gICAgICAgIFwiLXJlcXVpcmUtdGFnXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLnJlcXVpcmUgIXRhZ19wcmVkaWNhdGUgc1xuICAgICAgICApLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIjtcbiAgICAgICAgXCItbWF0Y2hpbmdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gbmFtZV9maWx0ZXIgOj0gcyA6OiAhbmFtZV9maWx0ZXIpLFxuICAgICAgICBcInN1YnN0cmluZyBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lcyBjb250YWluIHRoZSBnaXZlbiBzdWJzdHJpbmdcIjtcbiAgICAgICAgXCItb25seS10ZXN0XCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+XG4gICAgICAgICAgbGV0IGZpbGVuYW1lLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZSwgaW5kZXgpIC0+IGZpbGUsIGluZGV4XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc6JyBpblxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFN0cmluZy5zdWIgcyAwIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID0gU3RyaW5nLnN1YiBzIChpICsgMSkgKFN0cmluZy5sZW5ndGggcyAtIGkgLSAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpbmRleF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG4lIVwiIHM7XG4gICAgICAgICAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsIFNvbWUgaW5kZXhcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHMsIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzXG4gICAgICAgICksIFwibG9jYXRpb24gUnVuIG9ubHkgdGhlIHRlc3RzIHNwZWNpZmllZCBieSBhbGwgdGhlIC1vbmx5LXRlc3Qgb3B0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcbiAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWxcbiAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWw6bGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyM1xuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjMsIGNoYXJhY3RlcnMgMi0zXCI7XG4gICAgICAgIFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIFN1bW1hcml6ZSB0ZXN0cyB3aXRob3V0IHVzaW5nIGNvbG9yXCI7XG4gICAgICAgIFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIjtcbiAgICAgICAgXCItZGlmZi1jbWRcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICAgIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIjtcbiAgICAgICAgXCItYWxsb3ctb3V0cHV0LXBhdHRlcm5zXCIsIEFyZy5TZXQgYWxsb3dfb3V0cHV0X3BhdHRlcm5zLFxuICAgICAgICBcIiBBbGxvdyBvdXRwdXQgcGF0dGVybnMgaW4gdGVzdHMgZXhwZWN0YXRpb25zXCI7XG4gICAgICAgIFwiLXNvdXJjZS10cmVlLXJvb3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc291cmNlX3RyZWVfcm9vdCA6PSBTb21lIHMpLFxuICAgICAgICBcIiBQYXRoIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZVwiXG4gICAgICBdKSAoZnVuIGFub24gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgZXhpdCAxXG4gICAgICApIChQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIFthcmdzXVwiIG5hbWUgXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiBsaWIpO1xuICAgICAgQWN0aW9uLnNldCAoXG4gICAgICAgIGBUZXN0X21vZGVcbiAgICAgICAgICB7IHdoaWNoX3Rlc3RzID1cbiAgICAgICAgICAgICAgeyBsaWJuYW1lID0gbGliXG4gICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzO1xuICAgICAgICAgICAgICAgIHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZTtcbiAgICAgICAgICAgICAgICBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgOyB3aGF0X3RvX2RvID1cbiAgICAgICAgICAgICAgaWYgIWxpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICB0aGVuIGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgICAgICAgICAgZWxzZSBgUnVuX3BhcnRpdGlvbiAhcGFydGl0aW9uXG4gICAgICAgICAgfSlcbiAgICBlbmRcbiAgfCBfIC0+XG4gICAgKClcblxubGV0IGFtX3Rlc3RfcnVubmVyID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYFRlc3RfbW9kZSBfIC0+IHRydWVcbiAgfCBgSWdub3JlIC0+IGZhbHNlXG5cbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuXG4oKiBUaGlzIHZhbHVlIGlzIGRlcHJlY2F0ZWQgaW4gcHJpbmNpcGxlLCBpbiBmYXZvciBvZiBDb3JlLmFtX3J1bm5pbmdfdGVzdCwgc29cbiAgIHdlJ3JlIGdvaW5nIHRvIGxpdmUgd2l0aCB0aGUgdWdseSBwYXR0ZXJuIG1hdGNoLiAqKVxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPVxuICBtYXRjaCBTeXMuZ2V0ZW52IFwiUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUXCIgd2l0aFxuICB8IChfIDogc3RyaW5nKSAtPiB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICBtYXRjaCBTeXMuZ2V0ZW52IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciB3aXRoXG4gICAgfCBcImlubGluZS10ZXN0XCIgLT4gdHJ1ZVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2VcbiAgICAoaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICAgICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICAgICBlbHNlIGBOb3RfdGVzdGluZylcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9XG4gIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxuXG5sZXQgd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSA9IGxhenkgKFxuICBCYXNlLlN0cmluZy5TZWFyY2hfcGF0dGVybi5jcmVhdGUgKF9fTU9EVUxFX18gXiBcIi5cIiBeIFwidGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHNcIikpXG5cbmxldCB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGJlZm9yZV9ucyA9IHdhbGxfdGltZV9jbG9ja19ucyAoKSBpblxuICBsZXQgcmVzID1cbiAgICAoKiBUbyBhdm9pZCBub2lzZSBpbiBiYWNrdHJhY2VzLCB3ZSBkbyB0d28gdGhpbmdzLlxuXG4gICAgICAgV2UgdXNlIFt3aGVyZV90b19jdXRfYmFja3RyYWNlXSBhYm92ZSB0byByZW1vdmUgdGhlIHN0YWNrIGZyYW1lcyBmb3IgdGhlIGN1cnJlbnRcbiAgICAgICBmdW5jdGlvbiBhbmQgYW55IGZ1bmN0aW9uIGl0IGdldHMgaW5saW5lZCBpbnRvLCBhcyBpdCdzIG5vdCBvZiBhbnkgaW50ZXJlc3QgdG8gdGhlXG4gICAgICAgdXNlciwgc2luY2UgaXQncyBub3QgdGFsa2luZyBhYm91dCB0aGVpciB0ZXN0IGJ1dCBpbnN0ZWFkIHRhbGtpbmcgYWJvdXQgdGhlXG4gICAgICAgcHB4X2lubGluZV90ZXN0IG1hY2hpbmVyeS5cblxuICAgICAgIFdlIGFsc28gYXZvaWQgaW5zZXJ0aW5nIGFueSBjb2RlIGJldHdlZW4gdGhlIFtmXSB0aGF0IGNvbWVzIGZyb20gdGhlIHVzZXIncyBmaWxlXG4gICAgICAgYW5kIGdyYWJiaW5nIHRoZSBiYWNrdHJhY2UgZnJvbSBpdHMgZXhjZXB0aW9ucyAobm8gd3JhcHBpbmcgb2YgW2ZdIHdpdGggaGlnaCBvcmRlclxuICAgICAgIGZ1bmN0aW9ucyBsaWtlIEV4bi5wcm90ZWN0LCBvciAoZnVuICgpIC0+IGYgKCk7IHRydWUpKS4gKilcbiAgICB0cnkgT2sgKGYgKCkpXG4gICAgd2l0aCBleG4gLT4gRXJyb3IgKGV4biwgUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgaW5cbiAgdGltZV9zZWMgOj0gQmFzZS5JbnQ2My4od2FsbF90aW1lX2Nsb2NrX25zICgpIC0gYmVmb3JlX25zIHw+IHRvX2Zsb2F0KSAgLy4gMWU5O1xuICByZXNcblxuXG5sZXQgc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUgPSBsYXp5IChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTAwOyAyMDA7IDMwMCB8XSlcbmxldCBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSA9IGxhenkgKEJhc2UuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTExOyAyMjI7IDMzMyB8XSlcblxubGV0IHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGNhbWxfcmFuZG9tX3N0YXRlID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgbGV0IGJhc2VfcmFuZG9tX3N0YXRlID0gQmFzZS5SYW5kb20uU3RhdGUuY29weSBCYXNlLlJhbmRvbS5TdGF0ZS5kZWZhdWx0IGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlKTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlKTtcbiAgbGV0IHJlc3VsdCA9IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgY2FtbF9yYW5kb21fc3RhdGU7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSBiYXNlX3JhbmRvbV9zdGF0ZTtcbiAgcmVzdWx0XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChcbiAgICBMaXN0Lm1hcCAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAoTW9kdWxlX2NvbnRleHQuY3VycmVudF9kZXNjciAoKSlcbiAgKVxuXG5sZXQgcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBsID1cbiAgTGlzdC5leGlzdHMgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICBsZXQgcG9zaXRpb25fc3RhcnQgPVxuICAgICAgU3RyaW5nLmxlbmd0aCBkZWZfZmlsZW5hbWUgLSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgbGV0IGZvdW5kID1cbiAgICAgIHBvc2l0aW9uX3N0YXJ0ID49IDAgJiZcbiAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWVcbiAgICAgICAgICBwb3NpdGlvbl9zdGFydFxuICAgICAgICAgIChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKSBpblxuICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICYmIChtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIpXG4gICAgaW5cbiAgICBpZiBmb3VuZCB0aGVuIHVzZWQgOj0gdHJ1ZTtcbiAgICBmb3VuZFxuICApIGxcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG5cbmxldCBwcmludF9kZWxheWVkX2Vycm9ycyAoKSA9XG4gIG1hdGNoIExpc3QucmV2ICFkZWxheWVkX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBfIDo6IF8gYXMgZGVsYXllZF9lcnJvcnMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcIlxcbiVzXFxuJSFcIiAoU3RyaW5nLm1ha2UgNzAgJz0nKTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBtZXNzYWdlIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlXG4gICAgKSBkZWxheWVkX2Vycm9yc1xuXG5sZXQgZXByaW50Zl9vcl9kZWxheSBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+XG4gICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9yc1xuICAgIGVsc2UgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcztcbiAgICBpZiAhc3RvcF9vbl9lcnJvciB0aGVuIGJlZ2luXG4gICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgIGV4aXQgMlxuICAgIGVuZFxuICApIGZtdFxuXG5sZXQgYWRkX2hvb2tzICgobW9kdWxlIEMpIDogY29uZmlnKSBmID1cbiAgZnVuICgpIC0+IEMucHJlX3Rlc3RfaG9vayAoKTsgZiAoKVxuXG5sZXQgaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgPVxuICBsZXQgb3BlbiBCYXNlIGluXG4gIGJhY2t0cmFjZVxuICB8PiBTdHJpbmcuc3BsaXRfbGluZXNcbiAgfD4gTGlzdC50YWtlX3doaWxlIH5mOihmdW4gc3RyIC0+XG4gICAgbm90IChTdHJpbmcuU2VhcmNoX3BhdHRlcm4ubWF0Y2hlcyAoZm9yY2Ugd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSkgc3RyKSlcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyIF4gXCJcXG5cIilcbiAgfD4gU3RyaW5nLmNvbmNhdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3MgfmVuZF9wb3MgZiBib29sX29mX2YgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH07IHdoYXRfdG9fZG8gfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID0gbGF6eSAoZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MpIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiBiZWdpbiBtYXRjaCBvbmx5X3Rlc3RfbG9jYXRpb24gd2l0aFxuICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgfCBfIDo6IF8gLT4gcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBvbmx5X3Rlc3RfbG9jYXRpb25cbiAgICAgIGVuZFxuICAgICAgJiYgbm90IChUYWdfcHJlZGljYXRlLmRpc2FibGVkIHdoaWNoX3RhZ3MgfmNvbXBsZXRlX3RhZ3MpXG4gICAgICAmJiBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgKExhenkuZm9yY2UgZGVzY3IpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb24gdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBkZXNjciA9IExhenkuZm9yY2UgZGVzY3IgaW5cbiAgICAgICAgICBpbmNyIHRlc3RzX3JhbjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgY2ggLT4gUHJpbnRmLmZwcmludGYgY2ggXCIlc1xcbiVzXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5wcmludGYgXCIlcyUhXCIgZGVzY3JcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBpZiAhbGlzdF90ZXN0X25hbWVzXG4gICAgICAgICAgICB0aGVuIE9rIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogU2VlIFt0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc10gZm9yIHdoeSB3ZSB1c2UgW2Jvb2xfb2ZfZl1cbiAgICAgICAgICAgICAgICAgcmF0aGVyIGhhdmUgdGhlIGNhbGxlciB3cmFwIFtmXSB0byBhZGp1c3QgaXRzIHJldHVybiB2YWx1ZS4gKilcbiAgICAgICAgICAgICAgUmVzdWx0Lm1hcCBib29sX29mX2YgKHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogSWYgIWxpc3RfdGVzdF9uYW1lcywgdGhpcyBpcyBpcyBhIGhhcm1sZXNzIHplcm8uICopXG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiICglLjNmIHNlYylcXG4lIVwiICF0aW1lX3NlYztcbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgdHJ1ZSAtPiAoKVxuICAgICAgICAgIHwgT2sgZmFsc2UgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIGlzIGZhbHNlLlxcbiVzXFxuJSFcIiBkZXNjclxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIiBkZXNjciBzZXAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2UgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgIGVuZFxuICAgIGVuZFxuXG5sZXQgc2V0X2xpYl9hbmRfcGFydGl0aW9uIHN0YXRpY19saWIgcGFydGl0aW9uID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAoKiBwb3NzaWJsZSBpZiB0aGUgaW50ZXJmYWNlIGlzIHVzZWQgZXhwbGljaXRseSBvciBpZiB3ZSBoYXBwZW4gdG8gZHlubGluayBzb21ldGhpbmdcbiAgICAgICB0aGF0IGNvbnRhaW4gdGVzdHMgKilcbiAgICAoKVxuICB8IE5vbmUgLT5cbiAgICBkeW5hbWljX2xpYiA6PSBTb21lIHN0YXRpY19saWI7XG4gICAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gICAgfCBgSWdub3JlIC0+ICgpXG4gICAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHM7IHdoYXRfdG9fZG8gfSAtPlxuICAgICAgaWYgd2hpY2hfdGVzdHMubGlibmFtZSA9IHN0YXRpY19saWIgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcmVxdWlyZXNfcGFydGl0aW9uID1cbiAgICAgICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgfCBgUnVuX3BhcnRpdGlvbiBOb25lIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgIGVsc2UgUGFydGl0aW9uLnNldF9jdXJyZW50IHBhcnRpdGlvblxuICAgICAgZW5kXG5cbmxldCB1bnNldF9saWIgc3RhdGljX2xpYiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIG5vdCBnaXZpbmcgYW4gZXJyb3IsIGJlY2F1c2Ugd2hlbiBzb21lIGFubm95aW5nIHBlb3BsZSBwdXQgcGFfb3VuaXQgaW4gdGhlaXIgbGlzdFxuICAgICAgIG9mIHByZXByb2Nlc3NvcnMsIHBhX291bml0IGlzIHNldCB1cCB0d2ljZSBhbmQgd2UgaGF2ZSB0d28gY2FsbHMgdG8gdW5zZXRfbGliIGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYW5kIHRoZSBzZWNvbmQgb25lIGNvbWVzIGluIHRoaXMgYnJhbmNoICopXG4gICAgKClcbiAgfCBTb21lIGxpYiAtPlxuICAgIGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG5cbmxldCB0ZXN0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3NcbiAgICBmIChmdW4gYiAtPiBiKVxuXG5sZXQgdGVzdF91bml0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3NcbiAgICBmIChmdW4gKCkgLT4gdHJ1ZSlcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uID0gXzsgbmFtZV9maWx0ZXIgPSBfOyB3aGljaF90YWdzIH07IHdoYXRfdG9fZG8gfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyICgpID0gZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MgaW5cbiAgICBsZXQgcGFydGlhbF90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgKCogSWYsIG5vIG1hdHRlciB3aGF0IHRhZ3MgYSB0ZXN0IGRlZmluZXMsIHdlIGNlcnRhaW5seSB3aWxsIGRyb3AgYWxsIHRlc3RzIHdpdGhpblxuICAgICAgICAgdGhpcyBtb2R1bGUsIHRoZW4gZG9uJ3QgcnVuIHRoZSBtb2R1bGUgYXQgYWxsLiBUaGlzIG1lYW5zIHBlb3BsZSBjYW4gd3JpdGVcbiAgICAgICAgIHRoaW5ncyBsaWtlIHRoZSBmb2xsb3dpbmcgd2l0aG91dCBicmVha2luZyB0aGUgMzItYml0IGJ1aWxkOlxuICAgICAgICAgbGV0JXRlc3RfbW9kdWxlIFtAdGFncyBcIjY0LWJpdHMtb25seVwiXSA9IChtb2R1bGUgc3RydWN0XG4gICAgICAgICBsZXQgaSA9IEludDY0LnRvX2ludF9leG4gLi4uLlxuICAgICAgICAgZW5kKVxuICAgICAgICAgV2UgZG9uJ3Qgc2hvcnRjdXQgYmFzZWQgb24gcG9zaXRpb24sIGFzIHdlIGNhbid0IHRlbGwgd2hhdCBwb3NpdGlvbnMgdGhlXG4gICAgICAgICBpbm5lciB0ZXN0cyB3aWxsIGhhdmUuICopXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZW50aXJlX21vZHVsZV9kaXNhYmxlZCB3aGljaF90YWdzIH5wYXJ0aWFsX3RhZ3MpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb24gdGhlbiBiZWdpblxuICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICAgICBsZXQgZGVzY3IgPSBkZXNjciAoKSBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNb2R1bGVfY29udGV4dC53aXRoXyB+ZGVzY3IgfnRhZ3MgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAoKiBXZSBkbyBub3QgcmVzZXQgcmFuZG9tIHN0YXRlcyB1cG9uIGVudGVyaW5nIFtsZXQldGVzdF9tb2R1bGVdLlxuXG4gICAgICAgICAgICAgICAgIENvbjogQ29kZSBpbiB0ZXN0IG1vZHVsZXMgY2FuIGFjY2lkZW50YWxseSBkZXBlbmQgb24gdG9wLWxldmVsIHJhbmRvbVxuICAgICAgICAgICAgICAgICBzdGF0ZSBlZmZlY3RzLlxuXG4gICAgICAgICAgICAgICAgIFByb3M6ICgxKSBXZSBkb24ndCByZXNldCB0byB0aGUgc2FtZSBzZWVkIG9uIGVudGVyaW5nIGEgW2xldCV0ZXN0X21vZHVsZV1cbiAgICAgICAgICAgICAgICAgYW5kIHRoZW4gYSBbbGV0JXRlc3RdIGluc2lkZSB0aGF0IG1vZHVsZSwgd2hpY2ggY291bGQgbGVhZCB0b1xuICAgICAgICAgICAgICAgICBhY2NpZGVudGFsbHkgcmFuZG9tbHkgZ2VuZXJhdGluZyB0aGUgc2FtZSB2YWx1ZXMgaW4gc29tZSB0ZXN0LiAoMikgTW92aW5nXG4gICAgICAgICAgICAgICAgIGNvZGUgaW50byBhbmQgb3V0IG9mIFtsZXQldGVzdF9tb2R1bGVdIGRvZXMgbm90IGNoYW5nZSBpdHMgcmFuZG9tIHNlZWQuXG4gICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgIHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXkgKFwiVEVTXCIgXl4gXCJUX01PRFVMRSBhdCAlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIpXG4gICAgICAgICAgICAgIChTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGRlc2NyKSBzZXAgZXhuX3N0ciBiYWNrdHJhY2UgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgIGVuZFxuICAgIGVuZFxuXG5sZXQgc3VtbWFyaXplICgpID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPlxuICAgIGlmIFN5cy5hcmd2IDw+IFt8fF0gJiYgRmlsZW5hbWUuYmFzZW5hbWUgU3lzLmFyZ3YuKDApID0gXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZVwiIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcnVuIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCBpbnN0ZWFkLlxcbiUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZiBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICBiZWVuIHJ1bi4gWW91IHNob3VsZCB1c2UgdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IHRvIHJ1biBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLlxcbiUhXCI7XG4gICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSBfOyB3aGF0X3RvX2RvID0gYExpc3RfcGFydGl0aW9ucyB9IC0+XG4gICAgTGlzdC5pdGVyIChQcmludGYucHJpbnRmIFwiJXNcXG5cIikgKFBhcnRpdGlvbi5hbGwgKCkpO1xuICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgfCBgVGVzdF9tb2RlIHsgd2hhdF90b19kbyA9IGBSdW5fcGFydGl0aW9uIF87IHdoaWNoX3Rlc3RzIH0gLT4gYmVnaW5cbiAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2ggLT4gY2xvc2Vfb3V0IGNoXG4gICAgICBlbmQ7XG4gICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgIG1hdGNoICF0ZXN0c19mYWlsZWQsICF0ZXN0X21vZHVsZXNfZmFpbGVkIHdpdGhcbiAgICAgIHwgMCwgMCAtPiBiZWdpblxuICAgICAgICAgIGlmICFzaG93X2NvdW50cyB0aGVuIGJlZ2luXG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVkIHRlc3RzIHJhbiwgJWQgdGVzdF9tb2R1bGVzIHJhblxcbiUhXCIgIXRlc3RzX3JhbiAhdGVzdF9tb2R1bGVzX3JhblxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIGxldCB1bnVzZWRfdGVzdHMgPVxuICAgICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChfLCBfLCB1c2VkKSAtPiBub3QgIXVzZWQpIHdoaWNoX3Rlc3RzLm9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHVudXNlZF90ZXN0cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IFNvbWUgdW51c2VkX3Rlc3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICAgIHwgU29tZSB0ZXN0cyAtPlxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzXCIgZmlsZW5hbWVcbiAgICAgICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzOiVkXCIgZmlsZW5hbWUgbGluZV9udW1iZXJcbiAgICAgICAgICAgICkgdGVzdHM7XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIi5cXG4lIVwiO1xuICAgICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGlmICF0ZXN0c19yYW4gPSAwICYmICFzdHJpY3QgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogbm8gdGVzdHMgaGF2ZSBiZWVuIHJ1bi5cXG4lIVwiO1xuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICAgICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCIgY291bnQgIXRlc3RzX3JhblxuICAgICAgICAgIChpZiBjb3VudF90ZXN0X21vZHVsZXMgPSAwIHRoZW4gXCJcIiBlbHNlIFByaW50Zi5zcHJpbnRmIChcIiwgJWQgVEVTXCIgXl4gXCJUX01PRFVMRVNcIikgY291bnRfdGVzdF9tb2R1bGVzKTtcbiAgICAgICAgVGVzdF9yZXN1bHQuRmFpbHVyZVxuICAgIGVuZFxuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlICA9ICFpbl9wbGFjZVxubGV0IGRpZmZfY29tbWFuZCA9ICFkaWZmX2NvbW1hbmRcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gIXNvdXJjZV90cmVlX3Jvb3RcbmxldCBhbGxvd19vdXRwdXRfcGF0dGVybnMgPSAhYWxsb3dfb3V0cHV0X3BhdHRlcm5zXG5cbmxldCBldmFsdWF0b3JzID0gcmVmIFtzdW1tYXJpemVdXG5sZXQgYWRkX2V2YWx1YXRvciB+ZiA9IGV2YWx1YXRvcnMgOj0gZiA6OiAhZXZhbHVhdG9yc1xubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBDYW1sLmluX2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBDYW1sLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gQ2FtbC5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gQ2FtbC5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRpbiA9IENhbWwuc3RkaW5cblxubGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBDYW1sLm9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcbjs7XG5cbmxldCBjbG9zZSA9IENhbWwuY2xvc2VfaW5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlIH5mID0gRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuXG5sZXQgbWF5X2VvZiBmID1cbiAgdHJ5IFNvbWUgKGYgKCkpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBOb25lXG47O1xuXG5sZXQgaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwuaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IHJlYWxseV9pbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW4pXG5sZXQgcmVhbGx5X2lucHV0X2V4biB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IGlucHV0X2J5dGUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2J5dGUgdClcbmxldCBpbnB1dF9jaGFyIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9jaGFyIHQpXG5sZXQgaW5wdXRfYmluYXJ5X2ludCB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfYmluYXJ5X2ludCB0KVxubGV0IHVuc2FmZV9pbnB1dF92YWx1ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfdmFsdWUgdClcbmxldCBpbnB1dF9idWZmZXIgdCBidWYgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWYgdCBsZW4pXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gQ2FtbC5zZXRfYmluYXJ5X21vZGVfaW5cblxubGV0IGlucHV0X2FsbCB0ID1cbiAgKCogV2UgdXNlIDY1NTM2IGJlY2F1c2UgdGhhdCBpcyB0aGUgc2l6ZSBvZiBPQ2FtbCdzIElPIGJ1ZmZlcnMuICopXG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW5cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgY2h1bmtfc2l6ZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIENhbWwuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZmZlciB0IGNodW5rX3NpemU7XG4gICAgbG9vcCAoKVxuICBpblxuICB0cnkgbG9vcCAoKSB3aXRoXG4gIHwgRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlclxuOztcblxubGV0IHRyaW0gfmZpeF93aW5fZW9sIGxpbmUgPVxuICBpZiBmaXhfd2luX2VvbFxuICB0aGVuIChcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBsaW5lIGluXG4gICAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsIChTdHJpbmcuZ2V0IGxpbmUgKGxlbiAtIDEpKSAnXFxyJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBsaW5lIH5wb3M6MCB+bGVuOihsZW4gLSAxKVxuICAgIGVsc2UgbGluZSlcbiAgZWxzZSBsaW5lXG47O1xuXG5sZXQgaW5wdXRfbGluZSA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIG1hdGNoIG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2xpbmUgdCkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbGluZSAtPiBTb21lICh0cmltIH5maXhfd2luX2VvbCBsaW5lKVxuOztcblxubGV0IGlucHV0X2xpbmVfZXhuID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbGV0IGxpbmUgPSBDYW1sLmlucHV0X2xpbmUgdCBpblxuICB0cmltIH5maXhfd2luX2VvbCBsaW5lXG47O1xuXG5sZXQgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBhYyA9XG4gICAgbWF0Y2ggaW5wdXRfbGluZSA/Zml4X3dpbl9lb2wgdCB3aXRoXG4gICAgfCBOb25lIC0+IGFjXG4gICAgfCBTb21lIGxpbmUgLT4gbG9vcCAoZiBhYyBsaW5lKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wgdCA9XG4gIExpc3QucmV2IChmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OltdIH5mOihmdW4gbGluZXMgbGluZSAtPiBsaW5lIDo6IGxpbmVzKSlcbjs7XG5cbmxldCBpdGVyX2xpbmVzID9maXhfd2luX2VvbCB0IH5mID1cbiAgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDooKSB+ZjooZnVuICgpIGxpbmUgLT4gZiBsaW5lKVxuOztcblxubGV0IHJlYWRfbGluZXMgP2ZpeF93aW5fZW9sIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOihpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wpXG5sZXQgcmVhZF9hbGwgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6aW5wdXRfYWxsXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IENhbWwub3V0X2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBDYW1sLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IENhbWwuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBDYW1sLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRvdXQgPSBDYW1sLnN0ZG91dFxubGV0IHN0ZGVyciA9IENhbWwuc3RkZXJyXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGlmIHBoeXNfZXF1YWwgdCBzdGRlcnJcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3RkZXJyPlwiXG4gIGVsc2UgaWYgcGh5c19lcXVhbCB0IHN0ZG91dFxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRvdXQ+XCJcbiAgZWxzZSBTZXhwLkF0b20gXCI8T3V0X2NoYW5uZWwudD5cIlxuOztcblxudHlwZSAnYSB3aXRoX2NyZWF0ZV9hcmdzID1cbiAgP2JpbmFyeTpib29sIC0+ID9hcHBlbmQ6Ym9vbCAtPiA/ZmFpbF9pZl9leGlzdHM6Ym9vbCAtPiA/cGVybTppbnQgLT4gJ2FcblxubGV0IGNyZWF0ZVxuICAgICAgPyhiaW5hcnkgPSB0cnVlKVxuICAgICAgPyhhcHBlbmQgPSBmYWxzZSlcbiAgICAgID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KVxuICAgICAgZmlsZVxuICA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgQ2FtbC5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG47O1xuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gQ2FtbC5zZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgZmx1c2ggPSBDYW1sLmZsdXNoXG5sZXQgY2xvc2UgPSBDYW1sLmNsb3NlX291dFxubGV0IGNsb3NlX25vX2VyciA9IENhbWwuY2xvc2Vfb3V0X25vZXJyXG5sZXQgb3V0cHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLm91dHB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5vdXRwdXRfc3Vic3RyaW5nIHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3RyaW5nID0gQ2FtbC5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gQ2FtbC5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXRfY2hhciA9IENhbWwub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IENhbWwub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IENhbWwub3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfYnVmZmVyID0gQ2FtbC5CdWZmZXIub3V0cHV0X2J1ZmZlclxubGV0IG91dHB1dF92YWx1ZSA9IENhbWwub3V0cHV0X3ZhbHVlXG5sZXQgbmV3bGluZSB0ID0gb3V0cHV0X3N0cmluZyB0IFwiXFxuXCJcblxubGV0IG91dHB1dF9saW5lcyB0IGxpbmVzID1cbiAgTGlzdC5pdGVyIGxpbmVzIH5mOihmdW4gbGluZSAtPlxuICAgIG91dHB1dF9zdHJpbmcgdCBsaW5lO1xuICAgIG5ld2xpbmUgdClcbjs7XG5cbmxldCBwcmludGYgPSBDYW1sLlByaW50Zi5wcmludGZcbmxldCBlcHJpbnRmID0gQ2FtbC5QcmludGYuZXByaW50ZlxubGV0IGZwcmludGYgPSBDYW1sLlByaW50Zi5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBDYW1sLlByaW50Zi5rZnByaW50ZlxubGV0IHByaW50X3N0cmluZyA9IENhbWwucHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfZW5kbGluZSA9IENhbWwucHJpbnRfZW5kbGluZVxubGV0IHByZXJyX2VuZGxpbmUgPSBDYW1sLnByZXJyX2VuZGxpbmVcblxubGV0IHByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByaW50X2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IGVwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmVycl9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuOztcblxubGV0IHdyaXRlX2xpbmVzIGZpbGUgbGluZXMgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X2xpbmVzIHQgbGluZXMpXG5sZXQgd3JpdGVfYWxsIGZpbGUgfmRhdGEgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG4iLCJvcGVuISBCYXNlXG5tb2R1bGUgR2MgPSBTdGRsaWIuR2NcblxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuXG5sZXQgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlID0gXCJQUFhfTU9EVUxFX1RJTUVSXCJcblxubGV0IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKCkgPVxuICAoKiBhdm9pZCBTdGRsaWIuU3lzLmdldGVudl9vcHQgdG8gcHJlc2VydmUgNC4wNC54IGNvbXBhdGliaWxpdHkgKilcbiAgbWF0Y2ggU3RkbGliLlN5cy5nZXRlbnYgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlIHdpdGhcbiAgfCB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IGFtX3JlY29yZGluZ192YWx1ZSA9IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKClcbmxldCBhbV9yZWNvcmRpbmcgPSBPcHRpb24uaXNfc29tZSBhbV9yZWNvcmRpbmdfdmFsdWVcblxubW9kdWxlIER1cmF0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnRcblxuICBsZXQgdG9fbmFub3NlY29uZHMgdCA9IHRcbiAgbGV0IG9mX25hbm9zZWNvbmRzIHQgPSB0XG5cbiAgbW9kdWxlIHR5cGUgRm9ybWF0ID0gc2lnXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCA6IHQgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgRGVmYXVsdF9mb3JtYXQgPSBzdHJ1Y3RcbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXg6XCJuc1wiIHw+IEludDYzLm9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgbmFub3MgPSBJbnQ2My50b19zdHJpbmcgbmFub3MgXiBcIm5zXCJcbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOnRvX3N0cmluZ1xuICBlbmRcblxuICBsZXQgZm9ybWF0ID0gcmVmIChtb2R1bGUgRGVmYXVsdF9mb3JtYXQgOiBGb3JtYXQpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0Lm9mX3N0cmluZyBzdHJpbmdcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQudG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBHY19ldmVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWluZ19ldmVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IHJ1bnRpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBnY19ldmVudHMgOiBHY19ldmVudHMudFxuICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgOiB0IGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDogR2Muc3RhdFxuICAgIDsgbXV0YWJsZSBuZXN0ZWRfdGltZXIgOiB0IG9wdGlvblxuICAgIDsgbXV0YWJsZSB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA6IFRpbWluZ19ldmVudC50IGxpc3RcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/bmVzdGVkX3RpbWVyICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uID0gXCJcIlxuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA9IEludDYzLnplcm9cbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzID0gR2MucXVpY2tfc3RhdCAoKVxuICAgIDsgbmVzdGVkX3RpbWVyXG4gICAgOyB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA9IFtdXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0ID1cbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIFwiXCI7XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIEludDYzLnplcm87XG4gICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXN0ZWQgLT4gbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDwtIFtdXG4gIDs7XG5cbiAgbGV0IHJlY29yZF9zdGFydCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoU3RyaW5nLmlzX2VtcHR5IHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24pO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBkZXNjcmlwdGlvbjtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPC0gR2MucXVpY2tfc3RhdCAoKTtcbiAgICAgICgqIGNhbGwgW1RpbWVfbm93XSBhcyBsYXRlIGFzIHBvc3NpYmxlIGJlZm9yZSBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkpXG4gIDs7XG5cbiAgbGV0IHJlY29yZF91bnRpbCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIGNvbXB1dGUgW1RpbWVfbm93XSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICBsZXQgdW50aWwgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIGluXG4gICAgICBsZXQgc3RhcnQgPSB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgaW5cbiAgICAgIGxldCBnY19zdGF0c19hZnRlciA9IEdjLnF1aWNrX3N0YXQgKCkgaW5cbiAgICAgIGxldCBnY19zdGF0c19iZWZvcmUgPSB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIGluXG4gICAgICBsZXQgcnVudGltZSA9IEludDYzLiggLSApIHVudGlsIHN0YXJ0IGluXG4gICAgICBhc3NlcnQgKFN0cmluZy5lcXVhbCB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKTtcbiAgICAgIGxldCBnY19ldmVudHMgOiBHY19ldmVudHMudCA9XG4gICAgICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IGNvbXBhY3Rpb25zID0gZ2Nfc3RhdHNfYWZ0ZXIuY29tcGFjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUuY29tcGFjdGlvbnNcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBuZXN0ZWQgLT4gTGlzdC5yZXYgbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICBpblxuICAgICAgbGV0IHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50ID1cbiAgICAgICAgeyBkZXNjcmlwdGlvbjsgcnVudGltZTsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICBpblxuICAgICAgdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgPC0gdGltaW5nX2V2ZW50IDo6IHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXI7XG4gICAgICByZXNldCB0KVxuICA7O1xuZW5kXG5cbmxldCBkZWZpbml0aW9uX3RpbWVyID0gVGltZXIuY3JlYXRlICgpXG5sZXQgbW9kdWxlX3RpbWVyID0gVGltZXIuY3JlYXRlIH5uZXN0ZWRfdGltZXI6ZGVmaW5pdGlvbl90aW1lciAoKVxubGV0IHJlY29yZF9zdGFydCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF9zdGFydCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfdW50aWwgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfdW50aWwgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fc3RhcnQgbG9jID0gVGltZXIucmVjb3JkX3N0YXJ0IGRlZmluaXRpb25fdGltZXIgbG9jXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fdW50aWwgbG9jID0gVGltZXIucmVjb3JkX3VudGlsIGRlZmluaXRpb25fdGltZXIgbG9jXG5cbmxldCBnY19ldmVudHNfc3VmZml4X3N0cmluZ1xuICAgICAgKHsgbWlub3JfY29sbGVjdGlvbnM7IG1ham9yX2NvbGxlY3Rpb25zOyBjb21wYWN0aW9ucyB9IDogR2NfZXZlbnRzLnQpXG4gID1cbiAgbGV0IHRvX2xpc3QgZGVzY3JpcHRpb24gY291bnQgPVxuICAgIGlmIGNvdW50ID0gMCB0aGVuIFtdIGVsc2UgWyBJbnQudG9fc3RyaW5nIGNvdW50IF4gXCIgXCIgXiBkZXNjcmlwdGlvbiBdXG4gIGluXG4gIGxldCBzdHJpbmdzID1cbiAgICB0b19saXN0IFwibWlub3IgY29sbGVjdGlvbnNcIiBtaW5vcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcIm1ham9yIGNvbGxlY3Rpb25zXCIgbWFqb3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJjb21wYWN0aW9uc1wiIGNvbXBhY3Rpb25zXG4gIGluXG4gIGlmIExpc3QuaXNfZW1wdHkgc3RyaW5ncyB0aGVuIFwiXCIgZWxzZSBcIjsgR0M6IFwiIF4gU3RyaW5nLmNvbmNhdCBzdHJpbmdzIH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWQgbGlzdCA9XG4gIGxldCBsZWZ0X2NvbHVtbl93aWR0aCA9XG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6MCB+ZjooZnVuIHdpZHRoIChsZWZ0LCBfKSAtPiBJbnQubWF4IHdpZHRoIChTdHJpbmcubGVuZ3RoIGxlZnQpKVxuICBpblxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiJSpzICVzXCIgbGVmdF9jb2x1bW5fd2lkdGggbGVmdCByaWdodClcbjs7XG5cbmxldCByZWMgdGltaW5nX2V2ZW50c190b19zdHJpbmdzIGxpc3QgfmluZGVudCA9XG4gIGxldCBkdXJhdGlvbl9zdHJpbmdzID1cbiAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPiB0aW1pbmdfZXZlbnQucnVudGltZSlcbiAgICB8PiBEdXJhdGlvbi50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXRcbiAgaW5cbiAgbGV0IHByZWZpeCA9IFN0cmluZy5tYWtlIGluZGVudCAnICcgaW5cbiAgTGlzdC5tYXAyX2V4blxuICAgIGR1cmF0aW9uX3N0cmluZ3NcbiAgICBsaXN0XG4gICAgfmY6KGZ1biBkdXJhdGlvbl9zdHJpbmcgeyBydW50aW1lID0gXzsgZGVzY3JpcHRpb247IGdjX2V2ZW50czsgbmVzdGVkX3RpbWluZ19ldmVudHMgfVxuICAgICAgICAgLT5cbiAgICAgICAgICAgKCBkdXJhdGlvbl9zdHJpbmdcbiAgICAgICAgICAgLCBkZXNjcmlwdGlvblxuICAgICAgICAgICAgIF4gZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmcgZ2NfZXZlbnRzXG4gICAgICAgICAgICAgXiBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAodGltaW5nX2V2ZW50c190b19zdHJpbmdzIG5lc3RlZF90aW1pbmdfZXZlbnRzIH5pbmRlbnQ6KGluZGVudCArIDQpKVxuICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIGxpbmUgLT4gXCJcXG5cIiBeIGxpbmUpKSApKVxuICB8PiB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZFxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gcHJlZml4IF4gbGluZSlcbjs7XG5cbmxldCBmYWtlX3RpbWluZ19ldmVudHMgPVxuICBsZXQgZ2NfZXZlbnRzIGkgOiBHY19ldmVudHMudCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgMiA9IDEgdGhlbiAxIGVsc2UgMClcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSA0ID0gMyB0aGVuIDEgZWxzZSAwKVxuICAgIDsgY29tcGFjdGlvbnMgPSAoaWYgaSAlIDggPSA3IHRoZW4gMSBlbHNlIDApXG4gICAgfVxuICBpblxuICBsYXp5XG4gICAgKExpc3QuaW5pdCAxMiB+ZjooZnVuIGkgOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkZha2VfX0RlcGVuZGVuY3lfJWRcIiAoaSArIDEpXG4gICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaSArIDEpKVxuICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGlcbiAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgKGlmIChpICsgMSkgJSA0ID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBMaXN0LmluaXQgKGkgKyAxKSB+ZjooZnVuIGogOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkxpbmUgJWRcIiAoaiArIDEpXG4gICAgICAgICAgICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaiArIDEpKVxuICAgICAgICAgICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGpcbiAgICAgICAgICAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID0gW11cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZSBbXSlcbiAgICAgICB9KSlcbjs7XG5cbmxldCBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzIHRpbWluZ19ldmVudHMgPVxuICBsZXQgbm90aWZ5X29mX292ZXJyaWRpbmcgKCkgPVxuICAgIFN0ZGlvLnByaW50X2VuZGxpbmUgXCJwcHhfbW9kdWxlX3RpbWVyOiBvdmVycmlkaW5nIHRpbWUgbWVhc3VyZW1lbnRzIGZvciB0ZXN0aW5nXCJcbiAgaW5cbiAgbGV0IHRpbWluZ19ldmVudHMgPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZV9leG4gYW1fcmVjb3JkaW5nX3ZhbHVlIHdpdGhcbiAgICB8IFwiRkFLRV9NT0RVTEVTXCIgLT5cbiAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgZm9yY2UgZmFrZV90aW1pbmdfZXZlbnRzXG4gICAgfCBzdHJpbmcgLT5cbiAgICAgIChtYXRjaCBEdXJhdGlvbi5vZl9zdHJpbmcgc3RyaW5nIHdpdGhcbiAgICAgICB8IG92ZXJyaWRlIC0+XG4gICAgICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgICAgIExpc3QubWFwaSB0aW1pbmdfZXZlbnRzIH5mOihmdW4gaW5kZXggKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPlxuICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAgICB0aW1pbmdfZXZlbnQubmVzdGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgICAgICAgIH5mOihmdW4gaW5kZXggbmVzdGVkX3RpbWluZ19ldmVudCAtPlxuICAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgICAgICAgIHsgbmVzdGVkX3RpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWUgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB0aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9KVxuICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdGltaW5nX2V2ZW50cylcbiAgaW5cbiAgdGltaW5nX2V2ZW50cyB8PiB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgfmluZGVudDowIHw+IExpc3QuaXRlciB+ZjpTdGRpby5wcmludF9lbmRsaW5lXG47O1xuXG5sZXQgKCkgPVxuICBpZiBhbV9yZWNvcmRpbmdcbiAgdGhlblxuICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgIHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgKExpc3QucmV2IG1vZHVsZV90aW1lci50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcikpXG47O1xuIiwidHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmFzZS5UeXBlX2VxdWFsLnQgPSBUIDogKCdhLCAnYSkgdFxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgY29udiA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBhIC0+IGIgPSBmdW4gVCB4IC0+IHhcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcbiIsIigqIHRoaXMgbGliIHNob3VsZCBub3QgZGVwZW5kIG9uIGNvcmUgKilcbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiAwXG4gICAgICB8IFtdLCBfIC0+IC0xXG4gICAgICB8IF8sIFtdIC0+IDFcbiAgICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiBsb29wIHhzIHlzIGVsc2UgblxuICAgIGluXG4gICAgbG9vcCBhIGJcbiAgOztcbmVuZFxuXG5tb2R1bGUgVWlkIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbmV4dCA6IHN0cmluZyAtPiB0XG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgdmFsIG5hbWUgOiB0IC0+IHN0cmluZ1xuICB2YWwgc3RhdGljIDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgKGEuY29kZSA6IGludCkgYi5jb2RlXG4gIGxldCBlcXVhbCBhIGIgPSAoYS5jb2RlIDogaW50KSA9IGIuY29kZVxuICBsZXQgdWlkID0gcmVmIDBcblxuICBsZXQgbmV4dCBuYW1lID1cbiAgICBsZXQgY29kZSA9ICF1aWQgaW5cbiAgICBpbmNyIHVpZDtcbiAgICB7IGNvZGU7IG5hbWUgfVxuICA7O1xuXG4gIGxldCBoYXNoIGEgPSBIYXNodGJsLmhhc2ggYS5jb2RlXG4gIGxldCBuYW1lIGEgPSBhLm5hbWVcbiAgbGV0IHN0YXRpYyA9IG5leHQgXCJzdGF0aWNcIlxuZW5kXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHVpZCA6IFVpZC50XG4gICAgOyBwYXJhbXMgOiB0IGxpc3RcbiAgICB9XG5cbiAgbGV0IHJlYyBjb21wYXJlIGsxIGsyID1cbiAgICBpZiBrMSA9PSBrMlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNtcCA9IFVpZC5jb21wYXJlIGsxLnVpZCBrMi51aWQgaW5cbiAgICAgIGlmIGNtcCA8PiAwIHRoZW4gY21wIGVsc2UgTGlzdC5jb21wYXJlIGNvbXBhcmUgazEucGFyYW1zIGsyLnBhcmFtcylcbiAgOztcblxuICBsZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG4gIGxldCBoYXNoID0gKEhhc2h0YmwuaGFzaCA6IHQgLT4gaW50KVxuICBsZXQgc3RhdGljID0geyB1aWQgPSBVaWQuc3RhdGljOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxudHlwZSAnYSB0ID0gS2V5LnRcbnR5cGUgJ2EgdHlwZW5hbWUgPSAnYSB0XG5cbmxldCBrZXkgdCA9IHRcbmxldCB1aWQgdCA9IHQuS2V5LnVpZFxubGV0IG5hbWUgdCA9IFVpZC5uYW1lIHQuS2V5LnVpZFxubGV0IHN0YXRpYyA9IEtleS5zdGF0aWNcbmxldCBjcmVhdGUgPyhuYW1lID0gXCJUeXBlbmFtZS5jcmVhdGVcIikgKCkgPSB7IEtleS51aWQgPSBVaWQubmV4dCBuYW1lOyBwYXJhbXMgPSBbXSB9XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFRoZSBhcmd1bWVudCBmb3IgT2JqLm1hZ2ljIGhlcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBjb3JlL3R5cGVfZXF1YWwgKilcblxuICBsZXQgc2FtZSAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID0gS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcblxuICBsZXQgc2FtZV93aXRuZXNzICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiBTb21lIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgZmFpbHdpdGggXCJUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdhIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICgnYSwgJ2IpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAnYyB0eXBlbmFtZSAtPiAoJ2EsICdiLCAnYykgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAnZSB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90ID0geyBLZXkudWlkOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGEgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYiBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGMgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkIGUgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZDsgZSBdIH1cbmVuZFxuXG5tb2R1bGUgS2V5X3RhYmxlID0gSGFzaHRibC5NYWtlIChLZXkpXG5cbm1vZHVsZSBUYWJsZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGRhdGEgPSBEYXRhIDogJ2EgdCAqICdhIFgudCAtPiBkYXRhXG4gIHR5cGUgdCA9IGRhdGEgS2V5X3RhYmxlLnRcblxuICBsZXQgY3JlYXRlIGludCA9IEtleV90YWJsZS5jcmVhdGUgaW50XG4gIGxldCBtZW0gdGFibGUgbmFtZSA9IEtleV90YWJsZS5tZW0gdGFibGUgKGtleSBuYW1lKVxuICBsZXQgc2V0IHRhYmxlIG5hbWUgZGF0YSA9IEtleV90YWJsZS5yZXBsYWNlIHRhYmxlIChrZXkgbmFtZSkgKERhdGEgKG5hbWUsIGRhdGEpKVxuXG4gIGxldCBmaW5kICh0eXBlIGEpIHRhYmxlIChuYW1lIDogYSB0eXBlbmFtZSkgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIHRyeSBTb21lIChLZXlfdGFibGUuZmluZCB0YWJsZSAoa2V5IG5hbWUpKSB3aXRoXG4gICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChEYXRhIChuYW1lJywgZGF0YSkpIC0+XG4gICAgICAoZnVuICh0eXBlIGIpIChuYW1lJyA6IGIgdHlwZW5hbWUpIChkYXRhIDogYiBYLnQpIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gKHNhbWVfd2l0bmVzc19leG4gbmFtZScgbmFtZSA6IChiLCBhKSBUeXBlX2VxdWFsLnQpIGluXG4gICAgICAgICBTb21lIChkYXRhIDogYSBYLnQpKVxuICAgICAgICBuYW1lJ1xuICAgICAgICBkYXRhXG4gIDs7XG5lbmRcblxubGV0IGZhaWwgdWlkX2EgdWlkX2IgPVxuICBsZXQgbXNnID1cbiAgICBQcmludGYuc3ByaW50ZiBcIlR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG4gJVMgJVNcIiAoVWlkLm5hbWUgdWlkX2EpIChVaWQubmFtZSB1aWRfYilcbiAgaW5cbiAgZmFpbHdpdGggbXNnXG47O1xuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8xIChBIDogUzEpIChCIDogUzEpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYS4gKCdhIEEudCwgJ2EgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMiAoQSA6IFMyKSAoQiA6IFMyKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IuICgoJ2EsICdiKSBBLnQsICgnYSwgJ2IpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMyAoQSA6IFMzKSAoQiA6IFMzKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MuICgoJ2EsICdiLCAnYykgQS50LCAoJ2EsICdiLCAnYykgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzQgKEEgOiBTNCkgKEIgOiBTNCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjICdkLiAoKCdhLCAnYiwgJ2MsICdkKSBBLnQsICgnYSwgJ2IsICdjLCAnZCkgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNSAoQSA6IFM1KSAoQiA6IFM1KSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXEgOlxuICAgICAgICAnYSAnYiAnYyAnZCAnZS4gKCgnYSwgJ2IsICdjLCAnZCwgJ2UpIEEudCwgKCdhLCAnYiwgJ2MsICdkLCAnZSkgQi50KSBUeXBlX2VxdWFsLnRcbiAgICB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFBsYWNlIGhvbGRlciBmb3IgY29tbW9uIFZhcmlhbnRzIGFuZCBGaWVsZHMgaW50ZXJmYWNlXG4qKVxuXG5tb2R1bGUgTSAoWCA6IHNpZ1xuICAgICgqKlxuICAgICAgIFRoaXMgZnVuY3RvciBpcyBlc3NlbnRpYWxseSB0aGVyZSBiZWNhdXNlIHdlIHVzZSB0aGlzIHNhbWUgaW50ZXJmYWNlIGluIGRpZmZlcmVudFxuICAgICAgIGNvbnRleHRzLCB3aXRoIGRpZmZlcmVudCB0eXBlcyBmb3IgWydhIHRdLlxuXG4gICAgICAgMSkgT25lIHVzZSBjYXNlIGZvciBpdCBpcyB3aGVyZSBbJ2EgWC50ID0gJ2EgVHlwZXJlcC50XS4gIFRoZXNlIGludGVyZmFjZXMgYXJlIHRoZW5cbiAgICAgICBwYXJ0IG9mIHRoZSB0eXBlIHdpdG5lc3MgYnVpbHQgZm9yIGEgdHlwZSBjb250YWluaW5nIGEgcmVjb3JkIG9yIGEgdmFyaWFudCBpbiBpdHNcbiAgICAgICBzdHJ1Y3R1cmUuIFt0cmF2ZXJzZV0gd2lsbCBnaXZlIGEgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlXG4gICAgICAgYXJndW1lbnRzIG9mIGEgdmFyaWFudCBvciByZWNvcmQgdHlwZS5cblxuICAgICAgIDIpIEFub3RoZXIgdXNlIGNhc2UgaXMgZm9yIGJ1aWxkaW5nIFwic3RhZ2VkIGdlbmVyaWMgY29tcHV0YXRpb25zXCIuIEluIHRoYXQgY2FzZSwgdGhlXG4gICAgICAgdHlwZSBbJ2EgWC50XSBpcyB0aGUgdHlwZSBvZiB0aGUgY29tcHV0YXRpb24gdGhhdCBpcyBiZWluZyBidWlsdC4gIFt0cmF2ZXJzZV1cbiAgICAgICByZXR1cm5zIHRoZSBjb21wdXRhdGlvbiBidWlsdCBmb3IgdGhlIGFyZ3VtZW50LiBUaGUgaW50ZXJmYWNlIG5vIGxvbmdlciBleHBvcnRzXG4gICAgICAgdGhlIHR5cGVyZXAgb2YgdGhlIGFyZ3VtZW50cyBpbiBob3BlcyBvZiBlbmZvcmNpbmcgdGhhdCBubyB0eXBlcmVwIHRyYXZlcnNhbFxuICAgICAgIGhhcHBlbnMgYXQgcnVudGltZSBpZiB0aGUgY29tcHV0YXRpb24gaGFwcGVuIHRvIGJlIGEgZnVuY3Rpb24uXG4gICAgKilcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGZ1bmN0aW9ucyBwcmVmaXhlZCBieSBbaW50ZXJuYWxdIGFzIHdlbGwgYXMgdGhlIG1vZHVsZSBzdWZmaXhlZCBieSBbX2ludGVybmFsXVxuICAgICBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gW3dpdGggdHlwZXJlcF0gYXMgd2VsbCBhcyBzb21lXG4gICAgIGludGVybmFscyBvZiB0aGUgdHlwZXJlcCBsaWJyYXJ5LiBEbyBub3QgY29uc2lkZXIgdXNpbmcgdGhlc2Ugc29tZXdoZXJlIGVsc2UuICBUaGV5XG4gICAgIHNob3VsZCBpZGVhbGx5IG5vdCBiZSBleHBvcnRlZCBvdXRzaWRlIHRoZSB0eXBlcmVwIGxpYnJhcnksIGJ1dCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAgbmVlZHMgc29tZWhvdyB0byBhY2Nlc3MgdGhpcywgZXZlbiBvdXRzaWRlLiAqKVxuXG4gIG1vZHVsZSBUYWdfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2FyZ3MgWC50XG4gICAgICA7IGFyaXR5IDogaW50XG4gICAgICA7IGFyZ3NfbGFiZWxzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgb2NhbWxfcmVwciA6IGludFxuICAgICAgOyB0eWlkIDogJ2FyZ3MgVHlwZW5hbWUudFxuICAgICAgOyBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSB0YWcsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHZhcmlhbnQgdHlwZSwgYWxzbyBjYWxsZWQgYW4gXCJhcHBsaWVkXG4gICAgIHZhcmlhbnQgQ29uc3RydWN0b3JcIlxuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgdGFnXG4gICAgIHBhcmFtZXRlcnMuICBFeGFtcGxlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID1cbiAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgfCBCIG9mIHN0cmluZ1xuICAgICAgICAgfCBDIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG5cbiAgICAgdGhpcyB0eXBlIGhhcyB0aHJlZSBjb25zdHJ1Y3RvcnMuIEZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmdcbiAgICAgW1RhZy50XTpcblxuICAgICB7W1xuICAgICAgIHZhbCB0YWdfQSA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0IgOiAodCwgc3RyaW5nICAgICAgICApIFRhZy50XG4gICAgICAgdmFsIHRhZ19DIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICBdfVxuXG4gICAgIE5vdGUsIGlubGluZSByZWNvcmQgaW4gdmFyaWFudCBhcmUgdHlwZWQgYXMgaWYgdGhlaXIgZGVmaW5pdGlvbiB3YXMgdXNpbmcgdHVwbGVzLFxuICAgICB3aXRob3V0IHRoZSBwYXJlbnRoZXNpcy4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24uICBCdXRcbiAgICAgdGhlIGRpc3RpbmN0aW9uIGlzIGNhcnJpZWQgYW5kIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBbVGFnLnRdLlxuICAgICBTZWUgW2FyZ3NfbGFiZWxzXS4gKilcbiAgbW9kdWxlIFRhZyA6IHNpZ1xuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHRcblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ29uc3RydWN0b3IgICAgICAgIHwgbGFiZWxcbiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBgYSBvZiBpbnQgICAgICAgIHwgIFwiYVwiXG4gICAgICAgICB8IGBBIG9mIGludCAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSB8ICBcIkFcIlxuICAgICAgIHZ9XG5cbiAgICAgICBmb3Igc3RhbmRhcmQgdmFyaWFudCwgdGhlIG9jYW1sIHN5bnRheCBpbXBsaWVzIHRoYXQgdGhpcyBsYWJlbCB3aWxsIGFsd2F5cyBzdGFydHNcbiAgICAgICB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSBjaGFyLlxuICAgICAgIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50LCB0aGlzIGxhYmVsIGRvZXMgbm90IGluY2x1ZGUgdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSBzaXplIG9mIHRoZSBvY2FtbCBoZWFwIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50c1xuXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge3ZcbiAgICAgICAgICAwOiB8IEEgfCAnQVxuICAgICAgICAgIDE6IHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnR9XG4gICAgICAgICAgMjogfCBBIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgICAgZXRjLlxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJpdHkgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKiBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkcyBmb3IgaW5saW5lIHJlY29yZHMuICBGb3Igb3RoZXIgZm9ybXMgb2YgdGFncywgdGhpcyBpcyB0aGVcbiAgICAgICAgZW1wdHkgbGlzdC4gIFdoZW4gdGhpcyByZXR1cm5zIGEgbm9uIGVtcHR5IGxpc3QsIHRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIGxpc3RcbiAgICAgICAgaXMgZXF1YWwgdG8gdGhlIGFyaXR5LlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAge3ZcbiAgICAgICAgICgxKSBFbXB0eTpcblxuICAgICAgICAgICB8IEEgfCAnQVxuICAgICAgICAgICB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgIHwgQSBvZiBpbnQgKiBmbG9hdFxuXG4gICAgICAgICAoMikgTm9uIGVtcHR5OlxuXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgIC0+IFsgXCJ4XCIgXVxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH0gICAtPiBbIFwieFwiIDsgXCJ5XCIgXVxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJnc19sYWJlbHMgOiAoXywgXykgdCAtPiBzdHJpbmcgbGlzdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIGluZGV4IG9mIHRoZSBjb25zdHJ1Y3RvciBpbiB0aGUgbGlzdCBvZiBhbGwgdGhlIHZhcmlhbnQgdHlwZSdzIGNvbnN0cnVjdG9yc1xuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgQyBvZiBpbnQgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEQgb2YgY2hhciAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBFIG9mIHsgeCA6IGludCB9ICAoKiA0ICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgb2NhbWxfcmVwciBpcyByZWxhdGVkIHRvIHRoZSBydW50aW1lIG9mIG9iamVjdHMuIHRoaXMgaXMgZXNzZW50aWFsbHkgYSB3YXkgb2ZcbiAgICAgICBnaXZpbmcgb25lIHRoZSBhYmlsaXR5IHRvIHJlYnVpbGQgZHluYW1pY2FsbHkgYW4gW09iai50XSByZXByZXNlbnRpbmcgYSB0YWcuXG5cbiAgICAgICBQb2x5bW9ycGhpYyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgaGFzaCBvZiB0aGUgbGFiZWwsIGFzIGRvbmUgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgYGJhcikgICgqIDQ4OTUxODcgKilcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyAnZm9vKSAgKCogNTA5NzIyMiAqKVxuXG4gICAgICAgU3RhbmRhcmRzIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZS5cbiAgICAgICB0aGUgd2F5IGl0IHdvcmtzIGluIHRoZSBvY2FtbCBydW50aW1lIGlzIGJ5IHBhcnRpdGlvbmluZyB0aGUgY29uc3RydWN0b3JzIHJlZ2FyZGluZ1xuICAgICAgIGlmIHRoZXkgaGF2ZSBzb21lIGFyZ3VtZW50cyBvciBub3QsIHByZXNlcnZpbmcgdGhlIG9yZGVyLCB0aGVuIGFzc2lnbiBpbmNyZWFzaW5nXG4gICAgICAgaW5kZXggd2l0aGluZyBlYWNoIHBhcnRpdGlvbi5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9ICAgICAgICAgICAgICAgICAgKCogbm8gYXJnICopICAoKiBhcmdzICopXG4gICAgICAgICAgIHwgQSAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgb2YgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEMgICAgICAgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBEIG9mIChmbG9hdCAqIHN0cmluZykgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBFICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRiAgICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEcgb2Ygc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEggb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgb2NhbWxfcmVwciA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2l2ZSBiYWNrIGEgd2F5IG9mIGNvbnN0cnVjdGluZyBhIHZhbHVlIG9mIHRoYXQgY29uc3RydWN0b3IgZnJvbSBpdHMgYXJndW1lbnRzLlxuXG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICAgIHwgQiBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICB8IENcbiAgICAgICAgICAgfCBEIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgXX1cblxuICAgICAgIFtjcmVhdGVdIHdpbGwgcmV0dXJuIHNvbWV0aGluZyBlcXVpdmFsZW50IHRvOlxuICAgICAgIHRhZ19BIDogW0FyZ3MgKGZ1biAoZCA6IChpbnQgKiBzdHJpbmcpIC0+IEEgZCldXG4gICAgICAgdGFnX0IgOiBbQXJncyAoZnVuIChpLCBmKSAtPiBCIChpLCBmKSldXG4gICAgICAgdGFnX0MgOiBbQ29uc3QgQ11cbiAgICAgICB0YWdfRCA6IFtBcmdzIChmdW4gKHgsIHkpIC0+IEQgeyB4OyB5IH0pXVxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIHQgLT4gKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gbWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0IHdoaWxlIGJ1aWxkaW5nIGEgY29tcHV0YXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnYXJncykgdCAtPiAnYXJncyBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSByZXByZXNlbnRhdGlvbi9jb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgVGFnX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRhZ19pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGFyaXR5IHQgPSB0LmFyaXR5XG4gICAgbGV0IGFyZ3NfbGFiZWxzIHQgPSB0LmFyZ3NfbGFiZWxzXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IG9jYW1sX3JlcHIgdCA9IHQub2NhbWxfcmVwclxuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAqICdhIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgdGFncyA6ICdhIHRhZyBhcnJheVxuICAgICAgOyBwb2x5bW9ycGhpYyA6IGJvb2xcbiAgICAgIDsgdmFsdWUgOiAnYSAtPiAnYSB2YWx1ZVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSB0YWdzIGNvbnN0aXR1aW5nIGEgdmFyaWFudFxuICAgICAgIHR5cGUuIHRoZSBbJ3ZhcmlhbnRdIHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZVxuICAgICAgIGNvbnN0cnVjdG9ycyBvZiB0aGF0IHZhcmlhbnQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcnMgbWlnaHQgYmUgZGlmZmVyZW50XG4gICAgICAgZm9yIGVhY2ggY29uc3RydWN0b3IgYW5kIGlzIHRodXMgZXhpc3RlbnRpYWxcbiAgICAqKVxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAtPiAndmFyaWFudCB0YWdcblxuICAgICgqKlxuICAgICAgIEEgc2ltaWxhciBleGlzdGVudGlhbCBjb25zdHJ1Y3RvciB0byBbXyB0YWddIGJ1dCB0aGlzIG9uZSBob2xkcyBhIHZhbHVlIHdob3NlIHR5cGVcbiAgICAgICBpcyB0aGUgYXJndW1lbnRzIG9mIHRoZSB0YWcgY29uc3RydWN0b3IuICBBIHZhbHVlIG9mIHR5cGUgWydhIHZhbHVlXSBpcyBhIHBhaXIgb2ZcbiAgICAgICAoMSkgYSB2YWx1ZSBvZiB2YXJpYW50IHR5cGUgWydhXSBhbG9uZyB3aXRoICgyKSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgICAgIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZSBbJ2FdXG4gICAgKilcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50ICogJ2FyZ3MgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSB2YXJpYW50IHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHZhcmlhbnQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGFncyBvZiB0aGlzIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCB0YWcgb2YgdGhpcyB2YXJpYW50IHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIHRhZyA6ICdhIHQgLT4gaW50IC0+ICdhIHRhZ1xuXG4gICAgKCoqXG4gICAgICAgRGlzdGluZ3Vpc2ggcG9seW1vcnBoaWMgdmFyaWFudHMgYW5kIHN0YW5kYXJkIHZhcmlhbnRzLiBUeXBpY2FsbHksIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMgdGFncyBzdGFydHMgd2l0aCB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAgICBFeGFtcGxlXG4gICAgICAgcG9seW1vcnBoaWMgdmFyaWFudDogdHlwZSB0ID0gWyBgQSB8IGBCIF1cbiAgICAgICBzdGFuZGFyZCB2YXJpYW50OiAgICB0eXBlIHQgPSBBIHwgQlxuICAgICopXG4gICAgdmFsIGlzX3BvbHltb3JwaGljIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gYSB2YWx1ZSBvZiB0aGlzIHZhcmlhbnQgdHlwZS5cbiAgICAqKVxuICAgIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdmFsdWVcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIHRhZyAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBWYXJpYW50X2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhcmlhbnRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQudGFnc1xuICAgIGxldCB0YWcgdCBpbmRleCA9IHQudGFncy4oaW5kZXgpXG4gICAgbGV0IGlzX3BvbHltb3JwaGljIHQgPSB0LnBvbHltb3JwaGljXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC50YWdzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdmaWVsZCBYLnRcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdmaWVsZCBUeXBlbmFtZS50XG4gICAgICA7IGdldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgICA7ICgqIHNldCA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb247IChcXCogbXV0YWJsZSBmaWVsZCAqXFwpICopXG4gICAgICAgIGlzX211dGFibGUgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgZmllbGQsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHJlY29yZCB0eXBlLlxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgZmllbGQuXG4gICAgIEV4YW1wbGU6XG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50IDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG4gICAgIFRoaXMgdHlwZSBoYXMgdHdvIGZpZWxkcy4gZm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZyBbRmllbGQudF1cblxuICAgICB2YWwgZmllbGRfeCA6ICh0LCBpbnQpIEZpZWxkLnRcbiAgICAgdmFsIGZpZWxkX3kgOiAodCwgc3RyaW5nKSBGaWVsZC50XG4gICopXG4gIG1vZHVsZSBGaWVsZCA6IHNpZ1xuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdFxuXG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmllbGQgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB7IHggICA6IGludDsgICAgICgqIFwieFwiICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIFwiZm9vXCIgKilcbiAgICAgICAgICAgYmFyIDogZmxvYXQ7ICAgKCogXCJiYXJcIiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBmaWVsZCBpbiB0aGUgbGlzdCBvZiBhbGwgZmllbGRzIGZvciB0aGlzIHJlY29yZCB0eXBlLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICAgeCAgIDogaW50OyAgICAgKCogMCAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiAxICopXG4gICAgICAgICAgIGJhciA6IHN0cmluZzsgICgqIDIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBGaWVsZCBhY2Nlc3NvcnMuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGRvdCBvcGVyYXRpb24uXG4gICAgICAgW0ZpZWxkLmdldCBiYXJfZmllbGQgdF0gcmV0dXJucyB0aGUgZmllbGQgW2Jhcl0gb2YgdGhlIHJlY29yZCB2YWx1ZSBbdF0sIGp1c3QgdGhlXG4gICAgICAgc2FtZSBhcyBbdC5iYXJdXG4gICAgKilcbiAgICB2YWwgZ2V0IDogKCdyZWNvcmQsICdmaWVsZCkgdCAtPiAncmVjb3JkIC0+ICdmaWVsZFxuXG4gICAgKCoqIHJldHVybiB3aGV0aGVyIHRoZSBmaWVsZCBpcyBtdXRhYmxlLCBpLmUuIHdoZXRoZXIgaXRzIGRlY2xhcmF0aW9uIGlzIHByZWZpeGVkIHdpdGhcbiAgICAgICAgdGhlIGtleXdvcmQgW211dGFibGVdICopXG4gICAgdmFsIGlzX211dGFibGUgOiAoXywgXykgdCAtPiBib29sXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gIE1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgRmllbGRfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRmllbGRfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBnZXQgdCA9IHQuZ2V0XG4gICAgbGV0IGlzX211dGFibGUgdCA9IHQuaXNfbXV0YWJsZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgZmllbGRzIDogJ2EgZmllbGQgYXJyYXlcbiAgICAgIDsgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBib29sXG4gICAgICA7IGNyZWF0ZSA6ICdhIGZpZWxkcyAtPiAnYVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkIDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIGZpZWxkcyBjb25zdGl0dWluZyBhIHJlY29yZCB0eXBlLiB0aGVcbiAgICAgICBbJ3JlY29yZF0gcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGUgZmllbGQgb2YgdGhhdFxuICAgICAgIHJlY29yZCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgZmllbGRzIG1pZ2h0IGJlIGRpZmZlcmVudCBmb3IgZWFjaCBmaWVsZCBhbmQgaXMgdGh1c1xuICAgICAgIGV4aXN0ZW50aWFsLlxuICAgICopXG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgWydyZWNvcmQgZmllbGRzXSBpcyBhIHR5cGUgaXNvbW9ycGhpYyB0byBbJ3JlY29yZF0uICBUaGlzIGdpdmVzIGEgd2F5IHRvIGdldCB0aGVcbiAgICAgICBmaWVsZCB2YWx1ZSBmb3IgZWFjaCBmaWVsZCBvZiB0aGUgcmVjb3JkLiAgVGhlIGFkdmFudGFnZSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgdGhhdCBpdCBpcyBjb252ZW5pZW50IGZvciB3cml0aW5nIGdlbmVyaWMgY29tcHV0YXRpb25zLlxuICAgICopXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgcmVjb3JkIHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHJlY29yZCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBmaWVsZHMgb2YgdGhpcyByZWNvcmQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCBmaWVsZCBvZiB0aGlzIHJlY29yZCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCBmaWVsZCA6ICdhIHQgLT4gaW50IC0+ICdhIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBUaGlzIGlzIGEgbG93IGxldmVsIG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgd2F5IHRoZSBvY2FtbCBjb21waWxlciByZXByZXNlbnQgdGhlXG4gICAgICAgYXJyYXkgdW5kZXJuZWF0aCB0aGF0IGlzIHRoZSBydW50aW1lIHZhbHVlIG9mIGEgcmVjb3JkIG9mIHR5cGUgWydhXSBnaXZlbiBhIHdpdG5lc3NcbiAgICAgICBvZiB0eXBlIFsnYSB0XS4gW2hhc19kb3VibGVfYXJyYXlfdGFnIHddIHJldHVybnMgW3RydWVdIGlmIHRoZSBhcnJheSB0aGF0XG4gICAgICAgcmVwcmVzZW50cyBydW50aW1lIHZhbHVlcyBvZiB0aGlzIHR5cGUgaXMgYW4gb3B0aW1pemVkIG9jYW1sIGZsb2F0IGFycmF5LlxuICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIHRydWUgZm9yIHJlY29yZCB3aGVyZSBhbGwgZmllbGRzIGFyZSBzdGF0aWNhbGx5IGtub3duIGFzIHRvXG4gICAgICAgYmUgW2Zsb2F0c10uXG5cbiAgICAgICBOb3RlIHRoYXQgeW91IGNhbid0IGdldCB0aGlzIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IGJ5IGluc3BlY3RpbmcgdGhlIHR5cGVyZXAgb25jZVxuICAgICAgIGl0IGlzIGFwcGxpZWQsIGJlY2F1c2UgdGhlcmUgaXMgYXQgdGhpcyBwb2ludCBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIG9uZSBvZiB0aGVcbiAgICAgICBmaWVsZCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGhhc19kb3VibGVfYXJyYXlfdGFnIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIEV4cG9zZSBvbmUgZGlyZWN0aW9uIG9mIHRoZSBpc29tb3JwaGlzbSBiZXR3ZWVuIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGFuZCBhIHZhbHVlIG9mXG4gICAgICAgdHlwZSBbJ2EgZmllbGRzXS4gQmFzaWNhbGx5LCBnaXZlbiBhbiBlbmNvZGluZyB3YXkgb2YgYWNjZXNzaW5nIHRoZSB2YWx1ZSBvZiBhbGxcbiAgICAgICB0aGUgZmllbGRzIG9mIGEgcmVjb3JkLCBjcmVhdGUgdGhhdCByZWNvcmQgYW5kIHJldHVybiBpdC5cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAnYSB0IC0+ICdhIGZpZWxkcyAtPiAnYVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgZmllbGQgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgUmVjb3JkX2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlY29yZF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC5maWVsZHNcbiAgICBsZXQgZmllbGQgdCBpbmRleCA9IHQuZmllbGRzLihpbmRleClcbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgdCA9IHQuaGFzX2RvdWJsZV9hcnJheV90YWdcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQuZmllbGRzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgTmFtZV9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZW5hbWVfb2ZfaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQzMiA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50MzJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50MzJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDY0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQ2NFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQ2NFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfbmF0aXZlaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBuYXRpdmVpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwibmF0aXZlaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9jaGFyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImNoYXJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Zsb2F0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJmbG9hdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2Zfc3RyaW5nID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICBsZXQgbmFtZSA9IFwic3RyaW5nXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ieXRlcyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYnl0ZXNcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Jvb2wgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJvb2xcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYm9vbFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdW5pdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJ1bml0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIG1vZHVsZSBNX29wdGlvbiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gICAgICBsZXQgbmFtZSA9IFwib3B0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX29wdGlvbiA9IE1fb3B0aW9uLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9saXN0ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGlzdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9saXN0ID0gTV9saXN0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9hcnJheSA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbiAgICAgIGxldCBuYW1lID0gXCJhcnJheVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9hcnJheSA9IE1fYXJyYXkudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xhenlfdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGF6eV90XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xhenlfdCA9IE1fbGF6eV90LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9yZWYgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZWZcblxuICAgICAgbGV0IG5hbWUgPSBcInJlZlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9yZWYgPSBNX3JlZi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fZnVuY3Rpb24gPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAtPiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwiZnVuY3Rpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfZnVuY3Rpb24gPSBNX2Z1bmN0aW9uLnR5cGVuYW1lX29mX3RcblxuICB0eXBlIHR1cGxlMCA9IHVuaXRcblxuICBtb2R1bGUgTV90dXBsZTAgPSBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB0dXBsZTBcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTAgPSBNX3R1cGxlMC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUyID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUyXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMiA9IE1fdHVwbGUyLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTMgPSBUeXBlbmFtZS5NYWtlMyAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTNcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUzID0gTV90dXBsZTMudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNCA9IFR5cGVuYW1lLk1ha2U0IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgKiAnYiAqICdjICogJ2RcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTQgPSBNX3R1cGxlNC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU1ID0gVHlwZW5hbWUuTWFrZTUgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZVxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU1XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNSA9IE1fdHVwbGU1LnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgcmVjIFR5cGVyZXAgOiBzaWdcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgICB2YWwgbmFtZSA6IF8gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlIDogc2lnXG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoYXQgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVHlwZXJlcC50XG5cbiAgdmFsIHNhbWUgOiBfIHQgLT4gXyB0IC0+IGJvb2xcbiAgdmFsIHNhbWVfd2l0bmVzcyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG4gIHZhbCBzYW1lX3dpdG5lc3NfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudFxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICB2YWwgaGVhZCA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IGFyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgXyAtPiAwXG4gICAgICB8IFQxIF8gLT4gMVxuICAgICAgfCBUMiBfIC0+IDJcbiAgICAgIHwgVDMgXyAtPiAzXG4gICAgICB8IFQ0IF8gLT4gNFxuICAgICAgfCBUNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgKHR5cGUgYSkgPSBmdW5jdGlvblxuICAgICAgfCBUMCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMiByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMyByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgbmFtZSByZXAgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkICh0eXBlbmFtZV9vZl90IHJlcCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA9IHN0cnVjdFxuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGlzIHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICBsZXQgYXJpdHkgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIF8gLT4gMlxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIF8gLT4gM1xuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IF8gLT4gNFxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgICB8IFQyIChhLCBiKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlMiAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgIHwgVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUzXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICB8IFQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNFxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgIHwgVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU1XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5cbiAgbGV0IHJlYyB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICB8IEludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludFxuICAgIHwgSW50MzIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQzMlxuICAgIHwgSW50NjQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQ2NFxuICAgIHwgTmF0aXZlaW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgfCBDaGFyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfY2hhclxuICAgIHwgRmxvYXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9mbG9hdFxuICAgIHwgU3RyaW5nIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgfCBCeXRlcyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2J5dGVzXG4gICAgfCBCb29sIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYm9vbFxuICAgIHwgVW5pdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3VuaXRcbiAgICB8IE9wdGlvbiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9vcHRpb24gKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGlzdCByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9saXN0ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEFycmF5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2FycmF5ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExhenkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGF6eV90ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IFJlZiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9yZWYgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgRnVuY3Rpb24gKGRvbSwgcm5nKSAtPlxuICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl9mdW5jdGlvbiAodHlwZW5hbWVfb2ZfdCBkb20pICh0eXBlbmFtZV9vZl90IHJuZylcbiAgICB8IFR1cGxlIHJlcCAtPiBUeXBlcmVwLlR1cGxlLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBSZWNvcmQgcmVwIC0+IFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBWYXJpYW50IHJlcCAtPiBUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiBOYW1lZC50eXBlbmFtZV9vZl90IG5hbWVcbiAgOztcblxuICBsZXQgcmVjIHNhbWVfd2l0bmVzcyA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBUeXBlX2VxdWFsLnQgb3B0aW9uID1cbiAgICBmdW4gdDEgdDIgLT5cbiAgICAgIGxldCBtb2R1bGUgRSA9IFR5cGVfZXF1YWwgaW5cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IE5hbWVkIChuYW1lMSwgcjEpLCBOYW1lZCAobmFtZTIsIHIyKSAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUxKSAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHIxLCByMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIE5vbmUgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmUpKVxuICAgICAgfCBOYW1lZCAoXywgcjEpLCB0MiAtPlxuICAgICAgICAobWF0Y2ggcjEgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQxKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCB0MSwgTmFtZWQgKF8sIHIyKSAtPlxuICAgICAgICAobWF0Y2ggcjIgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBJbnQsIEludCAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQzMiwgSW50MzIgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50NjQsIEludDY0IC0+IFNvbWUgRS5UXG4gICAgICB8IE5hdGl2ZWludCwgTmF0aXZlaW50IC0+IFNvbWUgRS5UXG4gICAgICB8IENoYXIsIENoYXIgLT4gU29tZSBFLlRcbiAgICAgIHwgRmxvYXQsIEZsb2F0IC0+IFNvbWUgRS5UXG4gICAgICB8IFN0cmluZywgU3RyaW5nIC0+IFNvbWUgRS5UXG4gICAgICB8IEJ5dGVzLCBCeXRlcyAtPiBTb21lIEUuVFxuICAgICAgfCBCb29sLCBCb29sIC0+IFNvbWUgRS5UXG4gICAgICB8IFVuaXQsIFVuaXQgLT4gU29tZSBFLlRcbiAgICAgIHwgT3B0aW9uIHIxLCBPcHRpb24gcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGlzdCByMSwgTGlzdCByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBBcnJheSByMSwgQXJyYXkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGF6eSByMSwgTGF6eSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBSZWYgcjEsIFJlZiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBGdW5jdGlvbiAoZG9tMSwgcm5nMSksIEZ1bmN0aW9uIChkb20yLCBybmcyKSAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGRvbTEgZG9tMiwgc2FtZV93aXRuZXNzIHJuZzEgcm5nMiB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgfCBUdXBsZSB0MSwgVHVwbGUgdDIgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gVHlwZXJlcC5UdXBsZSBpblxuICAgICAgICAobWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgIHwgVC5UMiAoYTEsIGIxKSwgVC5UMiAoYTIsIGIyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMyAoYTEsIGIxLCBjMSksIFQuVDMgKGEyLCBiMiwgYzIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNCAoYTEsIGIxLCBjMSwgZDEpLCBULlQ0IChhMiwgYjIsIGMyLCBkMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfIHwgXywgTm9uZSwgXywgXyB8IF8sIF8sIE5vbmUsIF8gfCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDUgKGExLCBiMSwgYzEsIGQxLCBlMSksIFQuVDUgKGEyLCBiMiwgYzIsIGQyLCBlMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICggc2FtZV93aXRuZXNzIGExIGEyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGIxIGIyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGMxIGMyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGUxIGUyIClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgTm9uZSwgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBOb25lLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIE5vbmUsIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQyIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQzIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ0IF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ1IF8sIF8gLT4gTm9uZSlcbiAgICAgIHwgUmVjb3JkIHIxLCBSZWNvcmQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IFZhcmlhbnQgcjEsIFZhcmlhbnQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgSW50LCBfIC0+IE5vbmVcbiAgICAgIHwgSW50MzIsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQ2NCwgXyAtPiBOb25lXG4gICAgICB8IE5hdGl2ZWludCwgXyAtPiBOb25lXG4gICAgICB8IENoYXIsIF8gLT4gTm9uZVxuICAgICAgfCBGbG9hdCwgXyAtPiBOb25lXG4gICAgICB8IFN0cmluZywgXyAtPiBOb25lXG4gICAgICB8IEJ5dGVzLCBfIC0+IE5vbmVcbiAgICAgIHwgQm9vbCwgXyAtPiBOb25lXG4gICAgICB8IFVuaXQsIF8gLT4gTm9uZVxuICAgICAgfCBPcHRpb24gXywgXyAtPiBOb25lXG4gICAgICB8IExpc3QgXywgXyAtPiBOb25lXG4gICAgICB8IEFycmF5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBMYXp5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWYgXywgXyAtPiBOb25lXG4gICAgICB8IEZ1bmN0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBUdXBsZSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVjb3JkIF8sIF8gLT4gTm9uZVxuICAgICAgfCBWYXJpYW50IF8sIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lIGEgYiA9IHNhbWVfd2l0bmVzcyBhIGIgPD4gTm9uZVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIGEgYiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIGEgYiB3aXRoXG4gICAgfCBTb21lIHByb29mIC0+IHByb29mXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCByZWMgaGVhZCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkIChfLCBTb21lIChsYXp5IHQpKSAtPiBoZWFkIHRcbiAgICB8IHQgLT4gdFxuICA7O1xuZW5kXG5cbmxldCB0eXBlcmVwX29mX2ludCA9IFR5cGVyZXAuSW50XG5sZXQgdHlwZXJlcF9vZl9pbnQzMiA9IFR5cGVyZXAuSW50MzJcbmxldCB0eXBlcmVwX29mX2ludDY0ID0gVHlwZXJlcC5JbnQ2NFxubGV0IHR5cGVyZXBfb2ZfbmF0aXZlaW50ID0gVHlwZXJlcC5OYXRpdmVpbnRcbmxldCB0eXBlcmVwX29mX2NoYXIgPSBUeXBlcmVwLkNoYXJcbmxldCB0eXBlcmVwX29mX2Zsb2F0ID0gVHlwZXJlcC5GbG9hdFxubGV0IHR5cGVyZXBfb2Zfc3RyaW5nID0gVHlwZXJlcC5TdHJpbmdcbmxldCB0eXBlcmVwX29mX2J5dGVzID0gVHlwZXJlcC5CeXRlc1xubGV0IHR5cGVyZXBfb2ZfYm9vbCA9IFR5cGVyZXAuQm9vbFxubGV0IHR5cGVyZXBfb2ZfdW5pdCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2Zfb3B0aW9uIHJlcCA9IFR5cGVyZXAuT3B0aW9uIHJlcFxubGV0IHR5cGVyZXBfb2ZfbGlzdCByZXAgPSBUeXBlcmVwLkxpc3QgcmVwXG5sZXQgdHlwZXJlcF9vZl9hcnJheSByZXAgPSBUeXBlcmVwLkFycmF5IHJlcFxubGV0IHR5cGVyZXBfb2ZfbGF6eV90IHJlcCA9IFR5cGVyZXAuTGF6eSByZXBcbmxldCB0eXBlcmVwX29mX3JlZiByZXAgPSBUeXBlcmVwLlJlZiByZXBcbmxldCB0eXBlcmVwX29mX2Z1bmN0aW9uIGRvbSBybmcgPSBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZylcbmxldCB0eXBlcmVwX29mX3R1cGxlMCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2ZfdHVwbGUyIGEgYiA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUzIGEgYiBjID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTQgYSBiIGMgZCA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU1IGEgYiBjIGQgZSA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpKVxuXG5pbmNsdWRlIE5hbWVfb2ZcblxubGV0IHZhbHVlX3R1cGxlMCA9ICgpXG5cbmxldCB0eXBlcmVwX29mX2ludDYzLCB0eXBlbmFtZV9vZl9pbnQ2MyA9XG4gIGxldCB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByXG4gICAgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYSBUeXBlcmVwLnQgKiBhIFR5cGVuYW1lLnRcbiAgICA9IGZ1bmN0aW9uXG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiB0eXBlcmVwX29mX2ludCwgdHlwZW5hbWVfb2ZfaW50XG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IHR5cGVyZXBfb2ZfaW50NjQsIHR5cGVuYW1lX29mX2ludDY0XG4gIGluXG4gIHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcbjs7XG4iLCIoKiB1c2luZyB0aGUgaGFzaF92YXJpYW50IG9mIHBhX3R5cGVfY29udiBhdCBjb21waWxlIHRpbWUgKilcbmxldCByZXByX29mX3BvbHlfdmFyaWFudCA6IFs+IF0gLT4gaW50ID1cbiAgZnVuIHZhcmlhbnQgLT5cbiAgbGV0IG9iaiA9IE9iai5yZXByIHZhcmlhbnQgaW5cbiAgaWYgT2JqLmlzX2ludCBvYmpcbiAgdGhlbiBPYmoub2JqIG9ialxuICBlbHNlIChcbiAgICBsZXQgc2l6ZSA9IE9iai5zaXplIG9iaiBpblxuICAgIGFzc2VydCAoc2l6ZSA9IDIpO1xuICAgIGxldCByZXByID0gT2JqLmZpZWxkIG9iaiAwIGluXG4gICAgYXNzZXJ0IChPYmouaXNfaW50IHJlcHIpO1xuICAgIE9iai5vYmogcmVwcilcbjs7XG5cbmxldCBoYXNoX3ZhcmlhbnQgcyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9ICgyMjMgKiAhYWNjdSkgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgoMSBsc2wgMzEpIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3Vcbjs7XG5cbigqIGEgZmV3IHVuaXQgdGVzdHMgb2YgY2FzZXMgdGhhdCBoYXZlIHRyaWdnZXJlZCBkaWZmcyBpbiB0aGUgcGFzdCBvZiB0aGlzXG4gICBsaWIgKilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYExhdGVuY3lfc3RhdHMgPSBoYXNoX3ZhcmlhbnQgXCJMYXRlbmN5X3N0YXRzXCIpXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGB6ZXJvID0gaGFzaF92YXJpYW50IFwiemVyb1wiKVxubGV0IGRvdWJsZV9hcnJheV92YWx1ZSA9IE9iai5tYWdpYyAwLlxubGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIGEgPSBPYmouZG91YmxlX2FycmF5X3RhZyA9IE9iai50YWcgKE9iai5yZXByIGEpXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgZG91YmxlID1cbiAgICAgIHsgYSA6IGZsb2F0XG4gICAgICA7IGIgOiBmbG9hdFxuICAgICAgfVxuXG4gICAgdHlwZSBzaW1wbGUgPVxuICAgICAgeyBjIDogZmxvYXRcbiAgICAgIDsgZCA6IGludFxuICAgICAgfVxuXG4gICAgbGV0IGRvdWJsZSA9IHsgYSA9IGRvdWJsZV9hcnJheV92YWx1ZTsgYiA9IGRvdWJsZV9hcnJheV92YWx1ZSB9XG4gICAgbGV0IHNpbXBsZSA9IHsgYyA9IGRvdWJsZV9hcnJheV92YWx1ZTsgZCA9IGRvdWJsZV9hcnJheV92YWx1ZSB9XG4gIGVuZFxuICBpblxuICBhc3NlcnQgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uZG91YmxlKTtcbiAgYXNzZXJ0IChub3QgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uc2ltcGxlKSlcbjs7XG4iLCJtb2R1bGUgTSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gKCdhLCAnYikgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAoJ2EsICdiLCAnYykgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAnZCBYLnQgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgWC50XG4gICAgICAtPiAnYiBYLnRcbiAgICAgIC0+ICdjIFgudFxuICAgICAgLT4gJ2QgWC50XG4gICAgICAtPiAnZSBYLnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgWC50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZiA9IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmXG5cbm1vZHVsZSBIZWxwZXIgKEEgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSAoQiA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpID0gc3RydWN0XG4gIHR5cGUgbWFwID0geyBtYXAgOiAnYS4gJ2EgQS50IC0+ICdhIEIudCB9XG5cbiAgbGV0IG1hcF92YXJpYW50ICh0eXBlIHZhcmlhbnQpIHsgbWFwIH0gKHZhcmlhbnQgOiB2YXJpYW50IEEuVmFyaWFudC50KSA9XG4gICAgbGV0IG1hcF9jcmVhdGUgPSBmdW5jdGlvblxuICAgICAgfCBBLlRhZy5BcmdzIGZjdCAtPiBCLlRhZ19pbnRlcm5hbC5BcmdzIGZjdFxuICAgICAgfCBBLlRhZy5Db25zdCBrIC0+IEIuVGFnX2ludGVybmFsLkNvbnN0IGtcbiAgICBpblxuICAgIGxldCBtYXBfdGFnIHRhZyA9XG4gICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVGFnIHRhZyAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLlRhZy5sYWJlbCB0YWcgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5UYWcudHJhdmVyc2UgdGFnKSBpblxuICAgICAgICBsZXQgYXJpdHkgPSBBLlRhZy5hcml0eSB0YWcgaW5cbiAgICAgICAgbGV0IGFyZ3NfbGFiZWxzID0gQS5UYWcuYXJnc19sYWJlbHMgdGFnIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuVGFnLmluZGV4IHRhZyBpblxuICAgICAgICBsZXQgb2NhbWxfcmVwciA9IEEuVGFnLm9jYW1sX3JlcHIgdGFnIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5UYWcudHlpZCB0YWcgaW5cbiAgICAgICAgbGV0IGNyZWF0ZSA9IG1hcF9jcmVhdGUgKEEuVGFnLmNyZWF0ZSB0YWcpIGluXG4gICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5UYWdcbiAgICAgICAgICAoQi5UYWcuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuVGFnX2ludGVybmFsLmxhYmVsXG4gICAgICAgICAgICAgOyByZXBcbiAgICAgICAgICAgICA7IGFyaXR5XG4gICAgICAgICAgICAgOyBhcmdzX2xhYmVsc1xuICAgICAgICAgICAgIDsgaW5kZXhcbiAgICAgICAgICAgICA7IG9jYW1sX3JlcHJcbiAgICAgICAgICAgICA7IHR5aWRcbiAgICAgICAgICAgICA7IGNyZWF0ZVxuICAgICAgICAgICAgIH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50IGluXG4gICAgbGV0IHBvbHltb3JwaGljID0gQS5WYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQgaW5cbiAgICBsZXQgdGFncyA9XG4gICAgICBBcnJheS5pbml0IChBLlZhcmlhbnQubGVuZ3RoIHZhcmlhbnQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX3RhZyAoQS5WYXJpYW50LnRhZyB2YXJpYW50IGluZGV4KSlcbiAgICBpblxuICAgIGxldCB2YWx1ZSAoYSA6IHZhcmlhbnQpID1cbiAgICAgIG1hdGNoIEEuVmFyaWFudC52YWx1ZSB2YXJpYW50IGEgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVmFsdWUgKGF0YWcsIGEpIC0+XG4gICAgICAgIChmdW4gKHR5cGUgYXJncykgKGF0YWcgOiAodmFyaWFudCwgYXJncykgQS5UYWcudCkgKGEgOiBhcmdzKSAtPlxuICAgICAgICAgICBsZXQgKEIuVmFyaWFudF9pbnRlcm5hbC5UYWcgYnRhZykgPSB0YWdzLihBLlRhZy5pbmRleCBhdGFnKSBpblxuICAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYnRhZyA6ICh2YXJpYW50LCBleCkgQi5UYWcudCkgLT5cbiAgICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5UYWcudHlpZCBhdGFnKSAoQi5UYWcudHlpZCBidGFnKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYnRhZyA9IChidGFnIDogKHZhcmlhbnQsIGFyZ3MpIEIuVGFnLnQpIGluXG4gICAgICAgICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5WYWx1ZSAoYnRhZywgYSkpXG4gICAgICAgICAgICAgYnRhZylcbiAgICAgICAgICBhdGFnXG4gICAgICAgICAgYVxuICAgIGluXG4gICAgQi5WYXJpYW50LmludGVybmFsX3VzZV9vbmx5IHsgQi5WYXJpYW50X2ludGVybmFsLnR5cGVuYW1lOyB0YWdzOyBwb2x5bW9ycGhpYzsgdmFsdWUgfVxuICA7O1xuXG4gIGxldCBtYXBfcmVjb3JkICh0eXBlIHJlY29yZCkgeyBtYXAgfSAocmVjb3JkIDogcmVjb3JkIEEuUmVjb3JkLnQpID1cbiAgICBsZXQgbWFwX2ZpZWxkIGZpZWxkID1cbiAgICAgIG1hdGNoIGZpZWxkIHdpdGhcbiAgICAgIHwgQS5SZWNvcmQuRmllbGQgZmllbGQgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5GaWVsZC5sYWJlbCBmaWVsZCBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLkZpZWxkLnRyYXZlcnNlIGZpZWxkKSBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLkZpZWxkLmluZGV4IGZpZWxkIGluXG4gICAgICAgIGxldCBpc19tdXRhYmxlID0gQS5GaWVsZC5pc19tdXRhYmxlIGZpZWxkIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5GaWVsZC50eWlkIGZpZWxkIGluXG4gICAgICAgIGxldCBnZXQgPSBBLkZpZWxkLmdldCBmaWVsZCBpblxuICAgICAgICBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZFxuICAgICAgICAgIChCLkZpZWxkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLkZpZWxkX2ludGVybmFsLmxhYmVsOyByZXA7IGluZGV4OyBpc19tdXRhYmxlOyB0eWlkOyBnZXQgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVjb3JkIGluXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnID0gQS5SZWNvcmQuaGFzX2RvdWJsZV9hcnJheV90YWcgcmVjb3JkIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBBcnJheS5pbml0IChBLlJlY29yZC5sZW5ndGggcmVjb3JkKSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF9maWVsZCAoQS5SZWNvcmQuZmllbGQgcmVjb3JkIGluZGV4KSlcbiAgICBpblxuICAgIGxldCBjcmVhdGUgeyBCLlJlY29yZF9pbnRlcm5hbC5nZXQgfSA9XG4gICAgICBsZXQgZ2V0ICh0eXBlIGEpIChhZmllbGQgOiAoXywgYSkgQS5GaWVsZC50KSA9XG4gICAgICAgIG1hdGNoIGZpZWxkcy4oQS5GaWVsZC5pbmRleCBhZmllbGQpIHdpdGhcbiAgICAgICAgfCBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZCBiZmllbGQgLT5cbiAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYmZpZWxkIDogKHJlY29yZCwgZXgpIEIuRmllbGQudCkgLT5cbiAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuRmllbGQudHlpZCBhZmllbGQpIChCLkZpZWxkLnR5aWQgYmZpZWxkKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGJmaWVsZCA9IChiZmllbGQgOiAocmVjb3JkLCBhKSBCLkZpZWxkLnQpIGluXG4gICAgICAgICAgICAgZ2V0IGJmaWVsZClcbiAgICAgICAgICAgIGJmaWVsZFxuICAgICAgaW5cbiAgICAgIEEuUmVjb3JkLmNyZWF0ZSByZWNvcmQgeyBBLlJlY29yZC5nZXQgfVxuICAgIGluXG4gICAgQi5SZWNvcmQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgIHsgQi5SZWNvcmRfaW50ZXJuYWwudHlwZW5hbWU7IGZpZWxkczsgaGFzX2RvdWJsZV9hcnJheV90YWc7IGNyZWF0ZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgTmFtZWQgPSBzaWdcbiAgdHlwZSAnYSBjb21wdXRhdGlvblxuXG4gIG1vZHVsZSBDb250ZXh0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBpbml0IDogQ29udGV4dC50IC0+ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgZ2V0X3dpcF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNldF9maW5hbF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNoYXJlIDogXyBUeXBlcmVwLnQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXB1dGF0aW9uID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGludCA6IGludCB0XG4gIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgdmFsIGludDY0IDogaW50NjQgdFxuICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICB2YWwgYm9vbCA6IGJvb2wgdFxuICB2YWwgdW5pdCA6IHVuaXQgdFxuICB2YWwgb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICB2YWwgbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBhcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICB2YWwgbGF6eV90IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICB2YWwgcmVmXyA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgdmFsIGZ1bmN0aW9uXyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgLT4gJ2IpIHRcbiAgdmFsIHR1cGxlMiA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHVwbGUzIDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gKCdhICogJ2IgKiAnYykgdFxuICB2YWwgdHVwbGU0IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgdmFsIHR1cGxlNSA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gJ2UgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuICB2YWwgcmVjb3JkIDogJ2EgUmVjb3JkLnQgLT4gJ2EgdFxuICB2YWwgdmFyaWFudCA6ICdhIFZhcmlhbnQudCAtPiAnYSB0XG5cbiAgbW9kdWxlIE5hbWVkIDogTmFtZWQgd2l0aCB0eXBlICdhIGNvbXB1dGF0aW9uIDo9ICdhIHRcbmVuZFxuXG4oKiBzcGVjaWFsIGZ1bmN0b3IgYXBwbGljYXRpb24gZm9yIGNvbXB1dGF0aW9uIGFzIGNsb3N1cmUgb2YgdGhlIGZvcm0gW2EgLT4gYl0gKilcbm1vZHVsZSBNYWtlX25hbWVkX2Zvcl9jbG9zdXJlIChYIDogc2lnXG4gICAgdHlwZSAnYSBpbnB1dFxuICAgIHR5cGUgJ2Egb3V0cHV0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaW5wdXQgLT4gJ2Egb3V0cHV0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGlnbm9yZVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudFxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgOiAnYSBYLnQgcmVmXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudCBvcHRpb24gcmVmXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IGluaXQgKCkgbmFtZSA9XG4gICAgbGV0IHBhdGggPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIG5hbWUpIGluXG4gICAgbGV0IHIgPSByZWYgKGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWQgcGF0aCkpIGluXG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlID0gKGZ1biBpbnB1dCAtPiAhciBpbnB1dClcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlID0gclxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSByZWYgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWQgPVxuICAgIG1hdGNoIHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIGNsb3MgLT4gY2xvc1xuICAgIHwgTm9uZSAtPiBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZVxuICA7O1xuXG4gIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uID1cbiAgICBsZXQgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgaW5cbiAgICBtYXRjaCBjb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBCYXNlLnBoeXNfZXF1YWwgc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2UgY29tcHV0YXRpb24gdGhlbiBhc3NlcnQgZmFsc2U7XG4gICAgICBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6PSBTb21lIGNvbXB1dGF0aW9uO1xuICAgICAgc2hhcmVkLnJ1bnRpbWVfcmVmZXJlbmNlIDo9IGNvbXB1dGF0aW9uO1xuICAgICAgY29tcHV0YXRpb25cbiAgOztcblxuICBsZXQgc2hhcmUgXyA9IHRydWVcbmVuZFxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGltcGxlbWVudHMgOiBUeXBlbmFtZS5VaWQudCAtPiBib29sXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBCcm9rZW5fZGVwZW5kZW5jeSBvZiBzdHJpbmdcblxuICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzIG5hbWUgcmVxdWlyZWQgPVxuICAgIG1hdGNoIHJlcXVpcmVkIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+ICgpXG4gICAgfCBfIC0+XG4gICAgICBmdW4gdWlkIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geyBuYW1lID0gbmFtZSc7IGltcGxlbWVudHMgfSAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoaW1wbGVtZW50cyB1aWQpXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAoKiBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgc2V0IHVwLCB0aGlzIGlzIGFuIGVycm9yIGR1cmluZyB0aGVcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwcm9ncmFtLCB3ZSByYXRoZXIgZmFpbCB3aXRoIGEgaHVtYW5cbiAgICAgICAgICAgICAgICAgIHJlYWRhYmxlIG91dHB1dCAqKVxuICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiVHlwZV9nZW5lcmljICVTIHJlcXVpcmVzICVTIGZvciB1aWQgJVNcXG5cIlxuICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICBuYW1lJ1xuICAgICAgICAgICAgICAgICAgIChUeXBlbmFtZS5VaWQubmFtZSB1aWQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcHJlcnJfZW5kbGluZSBtZXNzYWdlO1xuICAgICAgICAgICAgICAgcmFpc2UgKEJyb2tlbl9kZXBlbmRlbmN5IG1lc3NhZ2UpKSlcbiAgICAgICAgICByZXF1aXJlZFxuICA7O1xuZW5kXG5cbigqIEV4dGVuZGluZyBhbiBleGlzdGluZyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBFeHRlbmRpbmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgdmFsIGlkZW50IDogSWRlbnQudFxuXG4gICgqIGdlbmVyaWNfaWRlbnQgKiB0eXBlbmFtZSBvciBpbmZvICopXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdhIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYiBjb21wdXRhdGlvbiAtPiAoJ2EsICdiKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICdlIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIHZhbCByZWdpc3RlcjAgOiAobW9kdWxlIFMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMSA6IChtb2R1bGUgUzEpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMiA6IChtb2R1bGUgUzIpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMyA6IChtb2R1bGUgUzMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNCA6IChtb2R1bGUgUzQpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNSA6IChtb2R1bGUgUzUpIC0+IHVuaXRcblxuICAoKiBzcGVjaWFsIGxlc3Mgc2NhcnkgdHlwZSB3aGVuIHRoZSB0eXBlIGhhcyBubyBwYXJhbWV0ZXJzICopXG4gIHZhbCByZWdpc3RlciA6ICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiAtPiB1bml0XG5cbiAgKCpcbiAgICAgRXNzZW50aWFsbHkgYmVjYXVzZSB3ZSBjYW5ub3QgdGFsayBhYm91dCBhIHZhcmlhYmxlIG9mIGtpbmQgKiAtPiBrXG4gICAgIHZhbCByZWdpc3RlcjEgOiAnYSAndCBUeXBlcmVwLnQgLT4gKCdhIGNvbXB1dGF0aW9uIC0+ICdhICd0IGNvbXB1dGF0aW9uKSAtPiB1bml0XG4gICAgIC4uLlxuICAqKVxuZW5kXG5cbigqIEltcGxlbWVudGluZyBhIG5ldyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBTX2ltcGxlbWVudGF0aW9uID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgKCogcmFpc2UgdXNpbmcgdGhlIGN1cnJlbnQgaWRlbnQgKilcbiAgdmFsIHJhaXNlX25vdF9pbXBsZW1lbnRlZCA6IHN0cmluZyAtPiAnYVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICAoKlxuICAgICBTdGFuZGFyZCBjYXNlLCBmaW5kIGEgZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24sIG9yIGxvb2sgaW4gdGhlIGNvbnRlbnRcbiAgKilcbiAgdmFsIF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgVHlwZXJlcC50IGxhenlfdCBvcHRpb25cbiAgICAtPiAnYSBjb21wdXRhdGlvblxuXG4gICgqXG4gICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSBtb3JlIGNvbnRyb2wgb24gd2hhdCB5b3Ugd2FudCB0byBkb1xuICAqKVxuICB2YWwgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgY29tcHV0YXRpb24gb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gIHZhbCBvZl90eXBlcmVwIDogJ2EgVHlwZXJlcC50IC0+IFsgYGdlbmVyaWMgb2YgJ2EgY29tcHV0YXRpb24gXVxuXG4gIG1vZHVsZSBDb21wdXRhdGlvbiA6IENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG4gIGVuZCkgOiBTX2ltcGxlbWVudGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFgudFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcblxuICAoKiB3ZSBkbyBub3QgdXNlIGNvcmUgc2luY2Ugd2UgYXJlIGVhcmxpZXIgaW4gdGhlIGRlcGVuZGVuY2llcyBncmFwaCAqKVxuICBtb2R1bGUgVWlkX3RhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLlVpZClcblxuICAgIGxldCBmaW5kIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgdHJ5IFNvbWUgKGZpbmQgdGFibGUga2V5KSB3aXRoXG4gICAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzID0gSWRlbnQuY2hlY2tfZGVwZW5kZW5jaWVzIFgubmFtZSBYLnJlcXVpcmVkXG5cbiAgICBsZXQgcmVwbGFjZSB0YWJsZSBrZXkgdmFsdWUgPVxuICAgICAgY2hlY2tfZGVwZW5kZW5jaWVzIGtleTtcbiAgICAgIHJlcGxhY2UgKExhenkuZm9yY2UgdGFibGUpIGtleSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbWVtIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgbWVtIHRhYmxlIGtleSlcbiAgICAgIGVsc2UgZmFsc2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2l6ZSA9IDI1NlxuICBsZXQgdGFibGUwID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUxID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUyID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUzID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU0ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU1ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuXG4gIGxldCBpc19yZWdpc3RlcmVkIHVpZCA9XG4gICAgVWlkX3RhYmxlLm1lbSB0YWJsZTAgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTEgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTIgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTMgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTQgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTUgdWlkXG4gIDs7XG5cbiAgbGV0IGlkZW50ID0geyBJZGVudC5uYW1lID0gWC5uYW1lOyBpbXBsZW1lbnRzID0gaXNfcmVnaXN0ZXJlZCB9XG5cbiAgbW9kdWxlIEZpbmQwIChUIDogVHlwZXJlcC5OYW1lZC5UMCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gVC5uYW1lZCBjb21wdXRhdGlvbiBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUwIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMgPSAodmFsIHJlcCA6IFMpIGluXG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biBTLnR5cGVuYW1lX29mX3QgVC50eXBlbmFtZV9vZl9uYW1lZCBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgd2l0bmVzcykgUy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMSAoVCA6IFR5cGVyZXAuTmFtZWQuVDEpIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTEgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIHJlcCA6IFMxKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMVxuICAgICAgICAgICAgKFMxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMxLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQyIChUIDogVHlwZXJlcC5OYW1lZC5UMikgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUyIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCByZXAgOiBTMikgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzJcbiAgICAgICAgICAgIChTMilcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzIuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDMgKFQgOiBUeXBlcmVwLk5hbWVkLlQzKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTMgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIHJlcCA6IFMzKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fM1xuICAgICAgICAgICAgKFMzKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiBULmMgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNCAoVCA6IFR5cGVyZXAuTmFtZWQuVDQpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU0IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCByZXAgOiBTNCkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzRcbiAgICAgICAgICAgIChTNClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAoJ2EsICdiLCAnYywgJ2QpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzQuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDUgKFQgOiBUeXBlcmVwLk5hbWVkLlQ1KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU1IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCByZXAgOiBTNSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzVcbiAgICAgICAgICAgIChTNSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzUuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdW5pdCA9IFR5cGVuYW1lLnN0YXRpY1xuXG4gIGxldCByZWdpc3RlcjAgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gKHZhbCBjb21wdXRlIDogUykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIFMudHlwZW5hbWVfb2ZfdCBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjEgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgY29tcHV0ZSA6IFMxKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMxLnR5cGVuYW1lX29mX3QgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTEgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIyIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIGNvbXB1dGUgOiBTMikgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMi50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTIgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIzIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIGNvbXB1dGUgOiBTMykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMy50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMyB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjQgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgY29tcHV0ZSA6IFM0KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM0LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTQgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI1IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIGNvbXB1dGUgOiBTNSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNS50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTUgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIgKHR5cGUgYSkgdHlwZXJlcF9vZl9hIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwX29mX2FcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2FcbiAgICAgIGxldCBjb21wdXRlID0gY29tcHV0ZVxuICAgIGVuZFxuICAgIGluXG4gICAgcmVnaXN0ZXIwIChtb2R1bGUgUyA6IFMpXG4gIDs7XG5cbiAgKCogSU1QTEVNRU5UQVRJT04gKilcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgbGV0IGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gKHR5cGUgYSkgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQuVDAgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDEgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9IChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgOiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQyIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDIgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIDogKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQzIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDMgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ0IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDQgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDUgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b21cbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYSlcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYilcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZSlcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgcmFpc2Vfbm90X2ltcGxlbWVudGVkIHN0cmluZyA9IHJhaXNlIChOb3RfaW1wbGVtZW50ZWQgKFgubmFtZSwgc3RyaW5nKSlcblxuICBsZXQgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgY29udGVudCA9XG4gICAgbWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIHdpdGhcbiAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT4gYXV4LmdlbmVyaWMgY29udGVudFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IHJlcCBpblxuICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWUpXG4gIDs7XG5lbmRcblxubW9kdWxlIF8gPSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLktleSlcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG5cbiAgICBpbmNsdWRlIENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbXB1dGF0aW9uID0gWFxuICBpbmNsdWRlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWClcblxuICBtb2R1bGUgTWVtbyA9IFR5cGVuYW1lLlRhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFguTmFtZWQudFxuICAgIGVuZClcblxuICBtb2R1bGUgSGVscGVyID0gSGVscGVyIChUeXBlcmVwKSAoQ29tcHV0YXRpb24pXG5cbiAgbGV0IG9mX3R5cGVyZXAgcmVwID1cbiAgICBsZXQgY29udGV4dCA9IFguTmFtZWQuQ29udGV4dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbWVtb190YWJsZSA9IE1lbW8uY3JlYXRlIDMyIGluXG4gICAgbGV0IHJlYyBvZl90eXBlcmVwIDogdHlwZSBhLiBhIFR5cGVyZXAudCAtPiBhIHQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLkludCAtPiBYLmludFxuICAgICAgfCBUeXBlcmVwLkludDMyIC0+IFguaW50MzJcbiAgICAgIHwgVHlwZXJlcC5JbnQ2NCAtPiBYLmludDY0XG4gICAgICB8IFR5cGVyZXAuTmF0aXZlaW50IC0+IFgubmF0aXZlaW50XG4gICAgICB8IFR5cGVyZXAuQ2hhciAtPiBYLmNoYXJcbiAgICAgIHwgVHlwZXJlcC5GbG9hdCAtPiBYLmZsb2F0XG4gICAgICB8IFR5cGVyZXAuU3RyaW5nIC0+IFguc3RyaW5nXG4gICAgICB8IFR5cGVyZXAuQnl0ZXMgLT4gWC5ieXRlc1xuICAgICAgfCBUeXBlcmVwLkJvb2wgLT4gWC5ib29sXG4gICAgICB8IFR5cGVyZXAuVW5pdCAtPiBYLnVuaXRcbiAgICAgIHwgVHlwZXJlcC5PcHRpb24gcmVwIC0+IFgub3B0aW9uIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MaXN0IHJlcCAtPiBYLmxpc3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkFycmF5IHJlcCAtPiBYLmFycmF5IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MYXp5IHJlcCAtPiBYLmxhenlfdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuUmVmIHJlcCAtPiBYLnJlZl8gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZykgLT4gWC5mdW5jdGlvbl8gKG9mX3R5cGVyZXAgZG9tKSAob2ZfdHlwZXJlcCBybmcpXG4gICAgICB8IFR5cGVyZXAuVHVwbGUgdHVwbGUgLT5cbiAgICAgICAgKCogZG8gTk9UIHdyaXRlIFtYLnR1cGxlMiAob2ZfdHlwZXJlcCBhKSAob2ZfdHlwZXJlcCBiKV1cbiAgICAgICAgICAgYmVjYXVzZSBvZl90eXBlcmVwIGNhbiBjb250YWluIGEgc2lkZSBlZmZlY3QgYW5kIFthXSBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICAgICAgICAgYmVmb3JlIFtiXSAqKVxuICAgICAgICAobWF0Y2ggdHVwbGUgd2l0aFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIFgudHVwbGUyIHJhIHJiXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIFgudHVwbGUzIHJhIHJiIHJjXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBYLnR1cGxlNCByYSByYiByYyByZFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgbGV0IHJlID0gb2ZfdHlwZXJlcCBlIGluXG4gICAgICAgICAgIFgudHVwbGU1IHJhIHJiIHJjIHJkIHJlKVxuICAgICAgfCBUeXBlcmVwLlJlY29yZCByZWNvcmQgLT5cbiAgICAgICAgWC5yZWNvcmQgKEhlbHBlci5tYXBfcmVjb3JkIHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSByZWNvcmQpXG4gICAgICB8IFR5cGVyZXAuVmFyaWFudCB2YXJpYW50IC0+XG4gICAgICAgIFgudmFyaWFudCAoSGVscGVyLm1hcF92YXJpYW50IHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSB2YXJpYW50KVxuICAgICAgfCBUeXBlcmVwLk5hbWVkIChuYW1lZCwgY29udGVudCkgLT5cbiAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IG5hbWVkIGluXG4gICAgICAgIChtYXRjaCBNZW1vLmZpbmQgbWVtb190YWJsZSB0eXBlbmFtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgc2hhcmVkIC0+IFguTmFtZWQuZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWRcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiB7IGdlbmVyaWMgPSBvZl90eXBlcmVwIH0gbmFtZWQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWVcbiAgICAgICAgICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPlxuICAgICAgICAgICAgICAgICBpZiBYLk5hbWVkLnNoYXJlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IHNoYXJlZCA9IFguTmFtZWQuaW5pdCBjb250ZXh0IHR5cGVuYW1lIGluXG4gICAgICAgICAgICAgICAgICAgTWVtby5zZXQgbWVtb190YWJsZSB0eXBlbmFtZSBzaGFyZWQ7XG4gICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCBjb250ZW50IGluXG4gICAgICAgICAgICAgICAgICAgWC5OYW1lZC5zZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICAgICAgICBlbHNlIG9mX3R5cGVyZXAgY29udGVudCkpKVxuICAgIGluXG4gICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCByZXAgaW5cbiAgICBgZ2VuZXJpYyBjb21wdXRhdGlvblxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCA9XG4gICAgVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBuYW1lZCA9IFgudFxuICAgICAgICB0eXBlIHQgPSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEpIG9mX3AxID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSBuYW1lZCA9ICdhIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIHQgPSBwMSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBwMSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIpIG9mX3AxIG9mX3AyID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZCA9ICgnYSwgJ2IpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMpIG9mX3AxIG9mX3AyIG9mX3AzID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWQgPSAoJ2EsICdiLCAnYykgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQgcDUpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A1KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIGUgPSBwNVxuXG4gICAgICAgIGxldCBlID0gb2ZfcDVcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnQpXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApIDogVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpIDogVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA6IFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFgudCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpIDpcbiAgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpIDpcbiAgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpIDpcbiAgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOYW1lIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcmVsYXRpdmVfdG8gOiBkaXI6c3RyaW5nIC0+IHQgLT4gc3RyaW5nXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgcmVsYXRpdmVfdG8gfmRpciB0ID1cbiAgICBpZiBub3QgKFN0ZGxpYi5GaWxlbmFtZS5pc19yZWxhdGl2ZSB0KSB0aGVuIHQgZWxzZSBTdGRsaWIuRmlsZW5hbWUuY29uY2F0IGRpciB0XG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxfZGlyID1cbiAgbGV0IGRpcl9vcl9lcnJvciA9XG4gICAgbWF0Y2ggU3RkbGliLlN5cy5nZXRjd2QgKCkgd2l0aFxuICAgIHwgdiAtPiBgT2sgdlxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiBgRXhuIGV4blxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCBkaXJfb3JfZXJyb3Igd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYEV4biBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWxlbmFtZSA6IE5hbWUudFxuICAgICAgOyBsaW5lX251bWJlciA6IGludFxuICAgICAgOyBsaW5lX3N0YXJ0IDogaW50XG4gICAgICA7IHN0YXJ0X3BvcyA6IGludFxuICAgICAgOyBlbmRfcG9zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG5cbiAgICBsZXQgdF9vZl9zZXhwID1cbiAgICAgIChsZXQgZXJyb3Jfc291cmNlX18wMjRfID0gXCJmaWxlLm1sLkxvY2F0aW9uLlQudFwiIGluXG4gICAgICAgZnVuY3Rpb25cbiAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBmaWVsZF9zZXhwc19fMDAzXyBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgICBsZXQgZmlsZW5hbWVfXzAwNF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGxpbmVfbnVtYmVyX18wMDZfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBsaW5lX3N0YXJ0X18wMDhfID0gU3RkbGliLnJlZiBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgIGFuZCBzdGFydF9wb3NfXzAxMF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGVuZF9wb3NfXzAxMl8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGR1cGxpY2F0ZXNfXzAxNF8gPSBTdGRsaWIucmVmIFtdXG4gICAgICAgICBhbmQgZXh0cmFfXzAxNV8gPSBTdGRsaWIucmVmIFtdIGluXG4gICAgICAgICBsZXQgcmVjIGl0ZXJfXzAyNV8gPSBmdW5jdGlvblxuICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSBmaWVsZF9uYW1lX18wMTZfXG4gICAgICAgICAgICAgICAgOjogKChbXSB8IFsgXyBdKSBhcyBfZmllbGRfc2V4cHNfXzAxOF8pKVxuICAgICAgICAgICAgIDo6IHRhaWxfXzAyNl8gLT5cbiAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gKCkgPVxuICAgICAgICAgICAgICAgbWF0Y2ggX2ZpZWxkX3NleHBzX18wMThfIHdpdGhcbiAgICAgICAgICAgICAgIHwgWyB4X18wMjdfIF0gLT4geF9fMDI3X1xuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAobWF0Y2ggZmllbGRfbmFtZV9fMDE2XyB3aXRoXG4gICAgICAgICAgICAgIHwgXCJmaWxlbmFtZVwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBmaWxlbmFtZV9fMDA0XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjNfID0gTmFtZS50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGZpbGVuYW1lX18wMDRfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjNfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwibGluZV9udW1iZXJcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgbGluZV9udW1iZXJfXzAwNl8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIyXyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBsaW5lX251bWJlcl9fMDA2XyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIyXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcImxpbmVfc3RhcnRcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgbGluZV9zdGFydF9fMDA4XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjFfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGxpbmVfc3RhcnRfXzAwOF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyMV8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJzdGFydF9wb3NcIiAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgc3RhcnRfcG9zX18wMTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyMF8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgc3RhcnRfcG9zX18wMTBfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjBfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwiZW5kX3Bvc1wiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBlbmRfcG9zX18wMTJfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAxOV8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgZW5kX3Bvc19fMDEyXyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDE5XylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgaWYgU3RkbGliLiggISApIFNleHBsaWIwLlNleHBfY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBleHRyYV9fMDE1XyAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZXh0cmFfXzAxNV8pXG4gICAgICAgICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgICAgICAgaXRlcl9fMDI1XyB0YWlsX18wMjZfXG4gICAgICAgICAgIHwgKChTZXhwbGliMC5TZXhwLkF0b20gXyB8IFNleHBsaWIwLlNleHAuTGlzdCBfKSBhcyBzZXhwX18wMDJfKSA6OiBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgaW5cbiAgICAgICAgIGl0ZXJfXzAyNV8gZmllbGRfc2V4cHNfXzAwM187XG4gICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8gd2l0aFxuICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2R1cGxpY2F0ZV9maWVsZHNcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XylcbiAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZXh0cmFfXzAxNV8gd2l0aFxuICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XylcbiAgICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgKCBTdGRsaWIuKCAhICkgZmlsZW5hbWVfXzAwNF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGxpbmVfbnVtYmVyX18wMDZfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8gKVxuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8ICggU3RkbGliLk9wdGlvbi5Tb21lIGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBsaW5lX251bWJlcl9fMDA3X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuT3B0aW9uLlNvbWUgbGluZV9zdGFydF9fMDA5X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuT3B0aW9uLlNvbWUgc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBlbmRfcG9zX18wMTNfICkgLT5cbiAgICAgICAgICAgICAgICAgIHsgZmlsZW5hbWUgPSBmaWxlbmFtZV9fMDA1X1xuICAgICAgICAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgICAgICAgICA7IGxpbmVfc3RhcnQgPSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgICAgICAgICA7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDExX1xuICAgICAgICAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDEzX1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF91bmRlZmluZWRfZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjRfXG4gICAgICAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgICAgICAgWyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGZpbGVuYW1lX18wMDRfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwiZmlsZW5hbWVcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBsaW5lX251bWJlcl9fMDA2XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcImxpbmVfbnVtYmVyXCIgKVxuICAgICAgICAgICAgICAgICAgICA7ICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgbGluZV9zdGFydF9fMDA4XylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcImxpbmVfc3RhcnRcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJzdGFydF9wb3NcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBlbmRfcG9zX18wMTJfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwiZW5kX3Bvc1wiIClcbiAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIF8gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBlcnJvcl9zb3VyY2VfXzAyNF8gc2V4cF9fMDAyX1xuICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSB0X29mX3NleHBcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAyOV9cbiAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMzFfXG4gICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAzM19cbiAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAzNV9cbiAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDM3X1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMjhfID0gW10gaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzOF8gPSBzZXhwX29mX2ludCBlbmRfcG9zX18wMzdfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAzOF8gXSA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzZfID0gc2V4cF9vZl9pbnQgc3RhcnRfcG9zX18wMzVfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDM2XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzNF8gPSBzZXhwX29mX2ludCBsaW5lX3N0YXJ0X18wMzNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9zdGFydFwiOyBhcmdfXzAzNF8gXSA6OiBibmRzX18wMjhfXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMjhfID1cbiAgICAgICAgICBsZXQgYXJnX18wMzJfID0gc2V4cF9vZl9pbnQgbGluZV9udW1iZXJfXzAzMV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX251bWJlclwiOyBhcmdfXzAzMl8gXVxuICAgICAgICAgIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzMF8gPSBOYW1lLnNleHBfb2ZfdCBmaWxlbmFtZV9fMDI5XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZpbGVuYW1lXCI7IGFyZ19fMDMwXyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAyOF9cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBzZXhwX29mX3RcblxuICAgIGxldCBjb21wYXJlID1cbiAgICAgIChmdW4gYV9fMDM5XyBiX18wNDBfIC0+XG4gICAgICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMzlfIGJfXzA0MF9cbiAgICAgICAgIHRoZW4gMFxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIE5hbWUuY29tcGFyZSBhX18wMzlfLmZpbGVuYW1lIGJfXzA0MF8uZmlsZW5hbWUgd2l0aFxuICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5saW5lX251bWJlciBiX18wNDBfLmxpbmVfbnVtYmVyIHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAzOV8ubGluZV9zdGFydCBiX18wNDBfLmxpbmVfc3RhcnQgd2l0aFxuICAgICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5zdGFydF9wb3MgYl9fMDQwXy5zdGFydF9wb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDM5Xy5lbmRfcG9zIGJfXzA0MF8uZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IGNvbXBhcmVcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuICBsZXQgYmVnaW5uaW5nX29mX2ZpbGUgZmlsZW5hbWUgPVxuICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyID0gMTsgbGluZV9zdGFydCA9IDA7IHN0YXJ0X3BvcyA9IDA7IGVuZF9wb3MgPSAwIH1cbiAgOztcblxuICBsZXQgb2Zfc291cmNlX2NvZGVfcG9zaXRpb24gKHBvcyA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpID1cbiAgICB7IGZpbGVuYW1lID0gTmFtZS5vZl9zdHJpbmcgKENhbWwuRmlsZW5hbWUuYmFzZW5hbWUgcG9zLnBvc19mbmFtZSlcbiAgICA7IGxpbmVfbnVtYmVyID0gcG9zLnBvc19sbnVtXG4gICAgOyBsaW5lX3N0YXJ0ID0gcG9zLnBvc19ib2xcbiAgICA7IHN0YXJ0X3BvcyA9IHBvcy5wb3NfY251bVxuICAgIDsgZW5kX3BvcyA9IHBvcy5wb3NfY251bVxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX3N0cmluZyA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IGV4cGVjdGVkX2xlbmd0aCA9IDMyIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGV4cGVjdGVkX2xlbmd0aFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nLCB1bmV4cGVjdGVkIGxlbmd0aFwiO1xuICAgIGZvciBpID0gMCB0byBleHBlY3RlZF9sZW5ndGggLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+ICgpXG4gICAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nXCJcbiAgICBkb25lO1xuICAgIHNcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuKCoqIHsxOnByZWRpY2F0ZXMgUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnN9ICopXG5cbnZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4oKiogW2VxdWFsIHMwIHMxXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3MwXSBhbmQgW3MxXSBhcmUgY2hhcmFjdGVyLXdpc2VcbiAgICBlcXVhbC5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBlbmRzX3dpdGggOlxuICBzdWZmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtlbmRzX3dpdGggXVt+c3VmZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gZW5kcyB3aXRoIFtzdWZmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG5cbiAgICBUaGUgZnVuY3Rpb24ncyByZXN1bHQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czpcbiAgICB7dWxcbiAgICB7LSBUaGUgbGlzdCBpcyBub3QgZW1wdHkufVxuICAgIHstIENvbmNhdGVuYXRpbmcgaXRzIGVsZW1lbnRzIHVzaW5nIFtzZXBdIGFzIGEgc2VwYXJhdG9yIHJldHVybnMgYVxuICAgICAgc3RyaW5nIGVxdWFsIHRvIHRoZSBpbnB1dCAoW2NvbmNhdCAobWFrZSAxIHNlcClcbiAgICAgIChzcGxpdF9vbl9jaGFyIHNlcCBzKSA9IHNdKS59XG4gICAgey0gTm8gc3RyaW5nIGluIHRoZSByZXN1bHQgY29udGFpbnMgdGhlIFtzZXBdIGNoYXJhY3Rlci59fVxuXG4gICAgQHNpbmNlIDQuMDQuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG52YWwgbWFwaSA6IChpbnQgLT4gY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcGkgZiBzXSBpcyBsaWtlIHshbWFwfSBidXQgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgaXMgYWxzb1xuICAgIHBhc3NlZCB0byBbZl0uXG5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2EgLT4gY2hhciAtPiAnYSkgLT4gJ2EgLT4gc3RyaW5nIC0+ICdhXG4oKiogW2ZvbGRfbGVmdCBmIHggc10gY29tcHV0ZXMgW2YgKC4uLiAoZiAoZiB4IHMuWzBdKSBzLlsxXSkgLi4uKSBzLltuLTFdXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2EgLT4gJ2EpIC0+IHN0cmluZyAtPiAnYSAtPiAnYVxuKCoqIFtmb2xkX3JpZ2h0IGYgcyB4XSBjb21wdXRlcyBbZiBzLlswXSAoZiBzLlsxXSAoIC4uLiAoZiBzLltuLTFdIHgpIC4uLikpXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgdHJpbSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdHJpbSBzXSBpcyBbc10gd2l0aG91dCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiBXaGl0ZXNwYWNlXG4gICAgY2hhcmFjdGVycyBhcmU6IFsnICddLCBbJ1xceDBDJ10gKGZvcm0gZmVlZCksIFsnXFxuJ10sIFsnXFxyJ10sIGFuZCBbJ1xcdCddLlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBsb3dlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2xvd2VyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgdXBwZXJjYXNlIGxldHRlcnMgdHJhbnNsYXRlZFxuICAgIHRvIGxvd2VyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYXZlcnNpbmcgVHJhdmVyc2luZ30gKilcblxudmFsIGl0ZXIgOiAoY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyIGYgc10gYXBwbGllcyBmdW5jdGlvbiBbZl0gaW4gdHVybiB0byBhbGwgdGhlIGNoYXJhY3RlcnMgb2YgW3NdLlxuICAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW2Ygcy5bMF07IGYgcy5bMV07IC4uLjsgZiBzLltsZW5ndGggcyAtIDFdOyAoKV0uICopXG5cbnZhbCBpdGVyaSA6IChpbnQgLT4gY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyaV0gaXMgbGlrZSB7IWl0ZXJ9LCBidXQgdGhlIGZ1bmN0aW9uIGlzIGFsc28gZ2l2ZW4gdGhlXG4gICAgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogW2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXSBjb3BpZXMgW2xlbl0gYnl0ZXNcbiAgICBmcm9tIHRoZSBzdHJpbmcgW3NyY10sIHN0YXJ0aW5nIGF0IGluZGV4IFtzcmNfcG9zXSxcbiAgICB0byBieXRlIHNlcXVlbmNlIFtkc3RdLCBzdGFydGluZyBhdCBjaGFyYWN0ZXIgbnVtYmVyIFtkc3RfcG9zXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzcmNfcG9zXSBhbmQgW2xlbl0gZG8gbm90XG4gICAgZGVzaWduYXRlIGEgdmFsaWQgcmFuZ2Ugb2YgW3NyY10sIG9yIGlmIFtkc3RfcG9zXSBhbmQgW2xlbl1cbiAgICBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWQgcmFuZ2Ugb2YgW2RzdF0uICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQ4IGIgaV0gaXMgW2JdJ3Mgc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAuMCAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjAuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuKCoqLyoqKVxuXG4oKiBUaGUgZm9sbG93aW5nIGlzIGZvciBzeXN0ZW0gdXNlIG9ubHkuIERvIG5vdCBjYWxsIGRpcmVjdGx5LiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT5cbiAgICB1bml0ID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5vcGVuIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgQm9keSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXhhY3Qgb2Ygc3RyaW5nXG4gICAgfCBPdXRwdXRcbiAgICB8IFByZXR0eSBvZiAnYVxuICAgIHwgVW5yZWFjaGFibGVcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG4gIGxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA2XykgOiAoKGFfXzAwNl8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMDZfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyAtPiBmdW5jdGlvblxuICAgICAgfCBFeGFjdCBhcmcwX18wMDJfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDNfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAyXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGFjdFwiOyByZXMwX18wMDNfIF1cbiAgICAgIHwgT3V0cHV0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk91dHB1dFwiXG4gICAgICB8IFByZXR0eSBhcmcwX18wMDRfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDVfID0gX29mX2FfXzAwMV8gYXJnMF9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJQcmV0dHlcIjsgcmVzMF9fMDA1XyBdXG4gICAgICB8IFVucmVhY2hhYmxlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVucmVhY2hhYmxlXCJcbiAgOztcblxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwN18gYl9fMDA4X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA3XywgYl9fMDA4XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMDlfLCBFeGFjdCBfYl9fMDEwXyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDA5XyBfYl9fMDEwX1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gMVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiAwXG4gICAgICB8IE91dHB1dCwgXyAtPiAtMVxuICAgICAgfCBfLCBPdXRwdXQgLT4gMVxuICAgICAgfCBQcmV0dHkgX2FfXzAxMV8sIFByZXR0eSBfYl9fMDEyXyAtPiBfY21wX19hIF9hX18wMTFfIF9iX18wMTJfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IDFcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IDApXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAxNV8sIEV4YWN0IF9iX18wMTZfIC0+IGVxdWFsX3N0cmluZyBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gZmFsc2VcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gdHJ1ZVxuICAgICAgfCBPdXRwdXQsIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgT3V0cHV0IC0+IGZhbHNlXG4gICAgICB8IFByZXR0eSBfYV9fMDE3XywgUHJldHR5IF9iX18wMThfIC0+IF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gZmFsc2VcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IHRydWUpXG4gIDs7XG5cbiAgbGV0IF8gPSBlcXVhbFxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1hcF9wcmV0dHkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCAoRXhhY3QgXyB8IE91dHB1dCB8IFVucmVhY2hhYmxlKSBhcyB0IC0+IHRcbiAgICB8IFByZXR0eSB4IC0+IFByZXR0eSAoZiB4KVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgdGFnIDogc3RyaW5nIG9wdGlvblxuICA7IGJvZHkgOiAnYSBCb2R5LnRcbiAgOyBleHRpZF9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICA7IGJvZHlfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxOV9cbiAgICB7IHRhZyA9IHRhZ19fMDIxX1xuICAgIDsgYm9keSA9IGJvZHlfXzAyM19cbiAgICA7IGV4dGlkX2xvY2F0aW9uID0gZXh0aWRfbG9jYXRpb25fXzAyNV9cbiAgICA7IGJvZHlfbG9jYXRpb24gPSBib2R5X2xvY2F0aW9uX18wMjdfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMjBfID0gW10gaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjhfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgYm9keV9sb2NhdGlvbl9fMDI3XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keV9sb2NhdGlvblwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjBfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjZfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgZXh0aWRfbG9jYXRpb25fXzAyNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4dGlkX2xvY2F0aW9uXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNF8gPSBCb2R5LnNleHBfb2ZfdCBfb2ZfYV9fMDE5XyBib2R5X18wMjNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5XCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyMl8gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB0YWdfXzAyMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInRhZ1wiOyBhcmdfXzAyMl8gXSA6OiBibmRzX18wMjBfXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDIwX1xuOztcblxubGV0IF8gPSBzZXhwX29mX3RcblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAyOV8gYl9fMDMwXyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMjlfIGJfXzAzMF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGNvbXBhcmVfb3B0aW9uIGNvbXBhcmVfc3RyaW5nIGFfXzAyOV8udGFnIGJfXzAzMF8udGFnIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIChtYXRjaCBCb2R5LmNvbXBhcmUgX2NtcF9fYSBhX18wMjlfLmJvZHkgYl9fMDMwXy5ib2R5IHdpdGhcbiAgICAgICB8IDAgLT5cbiAgICAgICAgIChtYXRjaCBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5leHRpZF9sb2NhdGlvbiBiX18wMzBfLmV4dGlkX2xvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IDAgLT4gRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uYm9keV9sb2NhdGlvbiBiX18wMzBfLmJvZHlfbG9jYXRpb25cbiAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICB8IG4gLT4gbilcbiAgICB8IG4gLT4gbilcbjs7XG5cbmxldCBfID0gY29tcGFyZVxuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDM1XyBiX18wMzZfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzNV8gYl9fMDM2X1xuICB0aGVuIHRydWVcbiAgZWxzZVxuICAgIFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgIChlcXVhbF9vcHRpb24gZXF1YWxfc3RyaW5nIGFfXzAzNV8udGFnIGJfXzAzNl8udGFnKVxuICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgIChCb2R5LmVxdWFsIF9jbXBfX2EgYV9fMDM1Xy5ib2R5IGJfXzAzNl8uYm9keSlcbiAgICAgICAgIChQcHhfY29tcGFyZV9saWIuKCAmJiApXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmV4dGlkX2xvY2F0aW9uIGJfXzAzNl8uZXh0aWRfbG9jYXRpb24pXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmJvZHlfbG9jYXRpb24gYl9fMDM2Xy5ib2R5X2xvY2F0aW9uKSkpXG47O1xuXG5sZXQgXyA9IGVxdWFsXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHN0cmluZyB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChmdW4geF9fMDQxXyAtPiBzZXhwX29mX3Qgc2V4cF9vZl9zdHJpbmcgeF9fMDQxXyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzA0Ml8gYl9fMDQzXyAtPiBjb21wYXJlIGNvbXBhcmVfc3RyaW5nIGFfXzA0Ml8gYl9fMDQzXyA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWFwX3ByZXR0eSB0IH5mID0geyB0IHdpdGggYm9keSA9IEJvZHkubWFwX3ByZXR0eSB0LmJvZHkgfmYgfVxuIiwibW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgRmlsZSA9IEZpbGVcbiAgbW9kdWxlIEV4cGVjdGF0aW9uID0gRXhwZWN0YXRpb25cbmVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSB1c2UgW0V4cGVjdF90ZXN0X2NvbW1vbl0gaW5zdGVhZFwiXVxuXG5pbmNsdWRlIFN0ZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG4iLCJtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBDUiAoKiogTGVhdmVzIGEgQ1IsIHNvIHRoYXQgZmVhdHVyZXMgY2Fubm90IGJlIHJlbGVhc2VkLiAqKVxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nICgqKiBPbmx5IGZvciBwcHhfZXhwZWN0IHRlc3Rpbmc7IGRvIG5vdCB1c2UuICopXG4gICAgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIElPX3J1biA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmRcblxuICAoKiogQSBub3ctbGVnYWN5IG1vbmFkLiBUaGlzIHNpZ25hdHVyZSB1c2VkIHRvIGRlY2xhcmUgYSBbZmx1c2hdIGZ1bmN0aW9uLlxuICAgICAgW1slZXhwZWN0Lm91dHB1dF1dIHN0aWxsIHJldHVybnMgdGhpcyB0eXBlLiBObyBtZWFuaW5nZnVsIG1vbmFkaWMgd29yayBpcyBkb25lLiAqKVxuICBtb2R1bGUgSU9fZmx1c2ggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgdG9fcnVuIDogJ2EgdCAtPiAnYSBJT19ydW4udFxuICBlbmRcblxuICAoKiogUnVuIGFuIElPIG9wZXJhdGlvbiB1bnRpbCBjb21wbGV0aW9uICopXG4gIHZhbCBydW4gOiAodW5pdCAtPiB1bml0IElPX3J1bi50KSAtPiB1bml0XG5cbiAgKCoqIFN5bmNocm9ub3VzIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gcGVuZGluZyBvdXRwdXQgb24gZmlsZSBkZXNjcmlwdGlvbiAwLiBXaXRoIGFzeW5jLFxuICAgICAgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgb24gdGhlIHJocyBvZiBhIFtJTy5iaW5kIChmbHVzaCAoKSkgLi4uXSB0aGUgb3V0cHV0IGlzXG4gICAgICBjb21wbGV0ZWx5IGZsdXNoZWQsIHRoYXQncyB3aHkgd2UgbmVlZCB0aGlzLiAqKVxuICB2YWwgZmx1c2hlZCA6IHVuaXQgLT4gYm9vbFxuXG4gICgqKiBbc2FuaXRpemVdIGNhbiBiZSB1c2VkIHRvIG1hcCBhbGwgb3V0cHV0IHN0cmluZ3MsIGUuZy4gZm9yIGNsZWFuc2luZy4gKilcbiAgdmFsIHNhbml0aXplIDogc3RyaW5nIC0+IHN0cmluZ1xuXG5cbiAgKCoqIFt1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZV0gc3BlY2lmaWVzIGhvdyB0byBkZWFsIHdpdGggb3V0cHV0IHRoYXQgc2hvdWxkIG5vdCBiZVxuICAgICAgcmVsZWFzZWQgZXZlbiBpZiBpdCBpcyBhY2NlcHRlZCAoZS5nLiBiYWNrdHJhY2VzKS4gVGhlIGRlZmF1bHQgaXMgW2BDUl0uICAqKVxuICB2YWwgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZS50XG5lbmRcblxuKCoqIENvbmZpZ3VyYXRpb24gZm9yIHJ1bm5pbmcgZXhwZWN0IHRlc3RzICopXG5tb2R1bGUgdHlwZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMgPSBzaWdcbiAgKCoqIFRvIGNvbmZpZ3VyZSBleHBlY3RfdGVzdCwgYWRkIHRoZSBmb2xsb3dpbmcgYXQgdGhlIHRvcCBvZiB5b3VyIC5tbCBmaWxlLCBvciBpbiBzb21lXG4gICAgICBpbXBvcnQubWw6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ1xuICAgICAgICAgIGxldCBwcmVfcmVkaXJlY3RfaG9vayAoKSA9IC4uLlxuICAgICAgICBlbmRcbiAgICAgIF19XG5cbiAgICAgIE5vdGUgdGhhdCBzaW5jZSBhbGwgZXhwZWN0IHRlc3QgYXJlIGFsc28gaW5saW5lIHRlc3RzLCB0aGUgaW5saW5lIHRlc3QgY29uZmlndXJhdGlvblxuICAgICAgYWxzbyBhcHBsaWVzIHRvIGFsbCBleHBlY3QgdGVzdC5cbiAgKilcblxuICBtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBjb21tZW50X3ByZWZpeCA6IHQgLT4gc3RyaW5nXG5cbiAgICAoKiogTWVzc2FnZSB0byBwcmludCB3aGVuIGFuIGV4cGVjdGF0aW9uIGNvbnRhaW5zIGEgYmFja3RyYWNlICopXG4gICAgdmFsIG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgOiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gU1xuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuU1xuXG5tb2R1bGUgdHlwZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMgPVxuICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5FeHBlY3RfdGVzdF9jb25maWdfdHlwZXNcblxubW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICBsZXQgZXF1YWwgdDEgdDIgPSB0MSA9IHQyXG5cbiAgbGV0IGNvbW1lbnRfcHJlZml4ID0gZnVuY3Rpb25cbiAgICB8IGBDUiAtPiBcIkNSIFwiXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgLT4gXCJcIlxuICA7O1xuXG4gIGxldCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIHQgPVxuICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICB7fFxuKCogJXNleHBlY3RfdGVzdF9jb2xsZWN0b3I6IFRoaXMgdGVzdCBleHBlY3RhdGlvbiBhcHBlYXJzIHRvIGNvbnRhaW4gYSBiYWNrdHJhY2UuXG4gICBUaGlzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFzIGJhY2t0cmFjZXMgYXJlIGZyYWdpbGUuXG4gICBQbGVhc2UgY2hhbmdlIHRoaXMgdGVzdCB0byBub3QgaW5jbHVkZSBhIGJhY2t0cmFjZS4gKilcblxufH1cbiAgICAgIChjb21tZW50X3ByZWZpeCB0KVxuICA7O1xuZW5kXG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyOFxcMDAwXFwwMDVcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcMDA2XFwwMDBcXDA4NVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDQwXFwwMDBcXDAzMVxcMDAwXFwwNDZcXDAwMFxcMDQ4XFwwMDBcXDAwN1xcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDYyXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMTAzXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwNVxcMDAwXFwwOTVcXDAwMFxcMTA3XFwwMDBcXDA5NVxcMDAwXFwxMTNcXDAwMFxcMDEwXFwwMDBcXDEwNFxcMDAwXFxcbiAgICBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTA0XFwwMDBcXDEyMlxcMDAwXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDExMVxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMTE2XFwwMDBcXDExN1xcMDAwXFwxMjVcXDAwMFxcMTI3XFwwMDBcXDAxMlxcMDAwXFwxMjZcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTE5XFwwMDBcXDEyMlxcMDAwXFwwMTNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDAxMlxcMDAwXFwwMTRcXDAwMFxcMDI0XFwwMDBcXDAxMlxcMDAwXFwwMzlcXDAwMFxcMDEyXFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNjFcXDAwMFxcMDcxXFwwMDBcXDA1OVxcMDAwXFwwODZcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwM1xcMDAwXFwwMjlcXDAwMFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMThcXDAwMFxcMDI3XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMjZcXDAwMFxcMDE2XFwwMDBcXDAwNVxcMDAwXFwwMTFcXDAwMFxcMDIwXFwwMDBcXDAyMlxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMzBcXDAwMFxcMDEzXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA2MFxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1NlxcMDAwXFwwNThcXDAwMFxcMDYyXFwwMDBcXDA0NlxcMDAwXFwwNjNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMjNcXDAwMFxcMDMzXFwwMDBcXDAzOFxcMDAwXFwwNDNcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA2MFxcMDAwXFwwNzBcXDAwMFxcMDgwXFwwMDBcXDA4NVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyOFxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAxN1xcMDAwXFwwMjZcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwMzdcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU2XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjFcXDAwMFxcMDQ0XFwwMDBcXDA2MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBjaGVjayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2MyBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDEgLT5cbiMgNSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE2OCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbm90X2F0X2JvcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIDQ0XG5hbmQgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE4MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDEgLT5cbiMgOSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTg1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMiAtPlxuIyAxMCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICggZmFsc2UgKVxuIyAxOTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEyIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiBcbiAgbGV0IGNvbnRhaW5zX2JhY2t0cmFjZXMgcyA9IGNoZWNrIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuIyAyMDEgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG4iLCJvcGVuIEV4cGVjdF90ZXN0X2NvbW1vblxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG5cbm1vZHVsZSBUZXN0X291dGNvbWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGVfZGlnZXN0IDogRmlsZS5EaWdlc3QudFxuICAgIDsgbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgICA7IGV4cGVjdGF0aW9ucyA6IEV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiA6IEV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgIDsgc2F2ZWRfb3V0cHV0IDogKEZpbGUuTG9jYXRpb24udCAqIHN0cmluZykgbGlzdFxuICAgIDsgdHJhaWxpbmdfb3V0cHV0IDogc3RyaW5nXG4gICAgOyB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZS50XG4gICAgOyB1bmNhdWdodF9leG4gOiAoZXhuICogUHJpbnRleGMucmF3X2JhY2t0cmFjZSkgb3B0aW9uXG4gICAgfVxuZW5kXG5cbmxldCB0ZXN0c19ydW4gOiBUZXN0X291dGNvbWUudCBsaXN0IHJlZiA9IHJlZiBbXVxuXG5sZXQgcHJvdGVjdCB+ZmluYWxseSB+ZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHhcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgcmFpc2UgZVxuOztcblxubW9kdWxlIEN1cnJlbnRfZmlsZSA9IHN0cnVjdFxuICBsZXQgY3VycmVudCA9IHJlZiBOb25lXG5cbiAgbGV0IHNldCB+YWJzb2x1dGVfZmlsZW5hbWUgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gY3VycmVudCA6PSBTb21lIGFic29sdXRlX2ZpbGVuYW1lXG4gICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3Iuc2V0OiBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IHVuc2V0ICgpID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBTb21lIF8gLT4gY3VycmVudCA6PSBOb25lXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnVuc2V0OiBub3Qgc2V0XCJcbiAgOztcblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBTb21lIGZuIC0+IGZuXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLmdldDogbm90IHNldFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNhdmVkIDogKEZpbGUuTG9jYXRpb24udCAqIGludCkgbGlzdFxuICAgIDsgY2hhbiA6IG91dF9jaGFubmVsXG4gICAgOyBmaWxlbmFtZSA6IEZpbGUuTmFtZS50XG4gICAgfVxuXG4gIGV4dGVybmFsIGJlZm9yZV90ZXN0XG4gICAgOiAgb3V0cHV0Om91dF9jaGFubmVsXG4gICAgLT4gc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3RcIlxuXG4gIGV4dGVybmFsIGFmdGVyX3Rlc3RcbiAgICA6ICBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XCJcblxuICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX291dF9jaGFubmVsX3Bvc19mZFwiXG5cbiAgbGV0IGdldF9wb3NpdGlvbiAoKSA9IHBvc19vdXQgc3Rkb3V0XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IGZpbGVuYW1lID0gRmlsZW5hbWUudGVtcF9maWxlIFwiZXhwZWN0LXRlc3RcIiBcIm91dHB1dFwiIGluXG4gICAgbGV0IGNoYW4gPSBvcGVuX291dF9iaW4gZmlsZW5hbWUgaW5cbiAgICBiZWZvcmVfdGVzdCB+b3V0cHV0OmNoYW4gfnN0ZG91dCB+c3RkZXJyO1xuICAgIHsgY2hhbjsgZmlsZW5hbWUgPSBGaWxlLk5hbWUub2Zfc3RyaW5nIGZpbGVuYW1lOyBzYXZlZCA9IFtdIH1cbiAgOztcblxuICBsZXQgcmVsYXRpdmVfZmlsZW5hbWUgdCA9IEZpbGUuTmFtZS5yZWxhdGl2ZV90byB+ZGlyOihGaWxlLmluaXRpYWxfZGlyICgpKSB0LmZpbGVuYW1lXG5cbiAgbGV0IHdpdGhfaWMgZm5hbWUgfmYgPVxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgcHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IGNsb3NlX2luIGljKSB+ZjooZnVuICgpIC0+IGYgaWMpXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRfdGVzdCA6IChGaWxlLkxvY2F0aW9uLnQgKiB0KSBvcHRpb24gcmVmID0gcmVmIE5vbmVcblxuICBsZXQgZ2V0X2N1cnJlbnQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoXywgdCkgLT4gdFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5JbnN0YW5jZS5nZXRfY3VycmVudCBjYWxsZWQgb3V0c2lkZSBhIHRlc3QuXCJcbiAgOztcblxuICBsZXQgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZFxuICA7O1xuXG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIGxldCBwcmV2X3BvcyA9XG4gICAgICBtYXRjaCB0LnNhdmVkIHdpdGhcbiAgICAgIHwgW10gLT4gMFxuICAgICAgfCAoXywgcHJldl9wb3MpIDo6IF8gLT4gcHJldl9wb3NcbiAgICBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWQ7XG4gICAgZmx1c2ggdC5jaGFuO1xuICAgIGxldCBsZW4gPSBwb3MgLSBwcmV2X3BvcyBpblxuICAgIHdpdGhfaWMgKHJlbGF0aXZlX2ZpbGVuYW1lIHQpIH5mOihmdW4gaWMgLT5cbiAgICAgIHNlZWtfaW4gaWMgcHJldl9wb3M7XG4gICAgICByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbilcbiAgOztcbmVuZFxuXG5sZXQgYmFzaWNfZmx1c2ggKCkgPVxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCk7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuZXJyX2Zvcm1hdHRlciAoKTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRvdXQ7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gIGxldCBpbnN0YW5jZSA9IEluc3RhbmNlLmdldF9jdXJyZW50ICgpIGluXG4gIGJhc2ljX2ZsdXNoICgpO1xuICBJbnN0YW5jZS5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggaW5zdGFuY2UgbG9jYXRpb25cbjs7XG5cbm1vZHVsZSBNYWtlIChDIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlMpID0gc3RydWN0XG4gIGxldCAoID4+PSApIHQgZiA9IEMuSU9fZmx1c2guYmluZCB0IH5mXG4gIGxldCByZXR1cm4gPSBDLklPX2ZsdXNoLnJldHVyblxuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBDXG5cbiAgICBsZXQgZmx1c2ggKCkgPVxuICAgICAgYmFzaWNfZmx1c2ggKCk7XG4gICAgICBDLklPX2ZsdXNoLnJldHVybiAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBJbnN0YW5jZV9pbyA6IHNpZ1xuICAgIHZhbCBzYXZlX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiB1bml0IEMuSU9fZmx1c2gudFxuICAgIHZhbCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHN0cmluZyBDLklPX2ZsdXNoLnRcblxuICAgIHZhbCBleGVjXG4gICAgICA6ICBmaWxlX2RpZ2VzdDpGaWxlLkRpZ2VzdC50XG4gICAgICAtPiBsb2NhdGlvbjpGaWxlLkxvY2F0aW9uLnRcbiAgICAgIC0+IGV4cGVjdGF0aW9uczpFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgICAtPiB1bmNhdWdodF9leG5fZXhwZWN0YXRpb246RXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgICAtPiBmOih1bml0IC0+IHVuaXQgQy5JT19ydW4udClcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBJbnN0YW5jZVxuXG4gICAgbGV0IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyBsZW4gPVxuICAgICAgbGV0IHMgPSByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB8PiBDLnNhbml0aXplIGluXG4gICAgICBpZiBub3QgKENoZWNrX2JhY2t0cmFjZXMuY29udGFpbnNfYmFja3RyYWNlcyBzKVxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAubWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZVxuICAgICAgICAgIEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgXiBzXG4gICAgOztcblxuICAgIGxldCBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0ID1cbiAgICAgIGxldCBsYXN0X29mcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgICAgYWZ0ZXJfdGVzdCB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgICBjbG9zZV9vdXQgdC5jaGFuO1xuICAgICAgbGV0IGZuYW1lID0gcmVsYXRpdmVfZmlsZW5hbWUgdCBpblxuICAgICAgcHJvdGVjdFxuICAgICAgICB+ZmluYWxseTooZnVuICgpIC0+IFN5cy5yZW1vdmUgZm5hbWUpXG4gICAgICAgIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICB3aXRoX2ljIGZuYW1lIH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgIGxldCBvZnMsIG91dHB1dHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChMaXN0LnJldiB0LnNhdmVkKVxuICAgICAgICAgICAgICAgIH5pbml0OigwLCBbXSlcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChvZnMsIGFjYykgKGxvYywgbmV4dF9vZnMpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobmV4dF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICAgICAgICBuZXh0X29mcywgKGxvYywgcykgOjogYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFpbGluZ19vdXRwdXQgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKGxhc3Rfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgb3V0cHV0cywgdHJhaWxpbmdfb3V0cHV0KSlcbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIEMuZmx1c2ggKClcbiAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgIHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbjtcbiAgICAgIHJldHVybiAoKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBDLmZsdXNoICgpID4+PSBmdW4gKCkgLT4gcmV0dXJuIChzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbilcbiAgICA7O1xuXG4gICAgbGV0ICgpID1cbiAgICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgKGxvYywgdCkgLT5cbiAgICAgICAgICBsZXQgYmxvY2tzLCB0cmFpbGluZyA9IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgaW5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlxcblxcXG4gICAgICAgICAgICAgRXJyb3I6IHByb2dyYW0gZXhpdGVkIHdoaWxlIGV4cGVjdCB0ZXN0IHdhcyBydW5uaW5nIVxcblxcXG4gICAgICAgICAgICAgT3V0cHV0IGNhcHR1cmVkIHNvIGZhcjpcXG5cXFxuICAgICAgICAgICAgICUhXCJcbiAgICAgICAgICAgIChGaWxlLk5hbWUudG9fc3RyaW5nIGxvYy5maWxlbmFtZSlcbiAgICAgICAgICAgIGxvYy5saW5lX251bWJlclxuICAgICAgICAgICAgKGxvYy5zdGFydF9wb3MgLSBsb2MubGluZV9zdGFydClcbiAgICAgICAgICAgIChsb2MuZW5kX3BvcyAtIGxvYy5saW5lX3N0YXJ0KTtcbiAgICAgICAgICBMaXN0Lml0ZXIgYmxvY2tzIH5mOihmdW4gKF8sIHMpIC0+IFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHMpO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHRyYWlsaW5nKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX2ZsdXNoID8oY291bnQgPSAwKSBrID1cbiAgICAgIGxldCBtYXhfYXR0ZW1wdHMgPSAxMCBpblxuICAgICAgQy5mbHVzaCAoKVxuICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgaWYgQy5mbHVzaGVkICgpXG4gICAgICB0aGVuIGsgfmFwcGVuZDpcIlwiXG4gICAgICBlbHNlIGlmIGNvdW50ID0gbWF4X2F0dGVtcHRzXG4gICAgICB0aGVuXG4gICAgICAgIGtcbiAgICAgICAgICB+YXBwZW5kOlxuICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICBcIlxcblxcXG4gICAgICAgICAgICAgICAgU1RPUFBFRCBDT0xMRUNUSU5HIE9VVFBVVCBBRlRFUiAlZCBGTFVTSElORyBBVFRFTVBTXFxuXFxcbiAgICAgICAgICAgICAgICBUSEVSRSBNVVNUIEJFIEEgQkFDS0dST1VORCBKT0IgUFJJTlRJTkcgVE8gU1RET1VUXFxuXCJcbiAgICAgICAgICAgICAgIG1heF9hdHRlbXB0cylcbiAgICAgIGVsc2UgZmluYWxfZmx1c2ggfmNvdW50Oihjb3VudCArIDEpIGtcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgfmZpbGVfZGlnZXN0IH5sb2NhdGlvbiB+ZXhwZWN0YXRpb25zIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb24gfmYgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGN1cnJlbnRfdGVzdCA6PSBTb21lIChsb2NhdGlvbiwgdCk7XG4gICAgICBsZXQgZmluYWxseSB1bmNhdWdodF9leG4gPVxuICAgICAgICBDLnJ1biAoZnVuICgpIC0+XG4gICAgICAgICAgQy5JT19mbHVzaC50b19ydW5cbiAgICAgICAgICAgIChmaW5hbF9mbHVzaCAoZnVuIH5hcHBlbmQgLT5cbiAgICAgICAgICAgICAgIGN1cnJlbnRfdGVzdCA6PSBOb25lO1xuICAgICAgICAgICAgICAgbGV0IHNhdmVkX291dHB1dCwgdHJhaWxpbmdfb3V0cHV0ID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgICAgICAgdGVzdHNfcnVuXG4gICAgICAgICAgICAgICA6PSB7IGZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgICAgICA7IGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgICA7IGV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICAgICAgIDsgc2F2ZWRfb3V0cHV0XG4gICAgICAgICAgICAgICAgICA7IHRyYWlsaW5nX291dHB1dCA9IHRyYWlsaW5nX291dHB1dCBeIGFwcGVuZFxuICAgICAgICAgICAgICAgICAgOyB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6OiAhdGVzdHNfcnVuO1xuICAgICAgICAgICAgICAgcmV0dXJuICgpKSkpXG4gICAgICBpblxuICAgICAgbWF0Y2ggQy5ydW4gZiB3aXRoXG4gICAgICB8ICgpIC0+IGZpbmFsbHkgTm9uZVxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICAgIGZpbmFsbHkgKFNvbWUgKGV4biwgYnQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzYXZlX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfb3V0cHV0XG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9hbmRfcmV0dXJuX291dHB1dFxuXG4gIGxldCBydW5cbiAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgIH4obG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnQpXG4gICAgICAgIH5hYnNvbHV0ZV9maWxlbmFtZTpkZWZpbmVkX2luXG4gICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICB+dGFnc1xuICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgfmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgICBmXG4gICAgPVxuICAgIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS50ZXN0XG4gICAgICB+Y29uZmlnOmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgfmRlc2NyOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChtYXRjaCBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBzIC0+IHMpKVxuICAgICAgfnRhZ3NcbiAgICAgIH5maWxlbmFtZTooRmlsZS5OYW1lLnRvX3N0cmluZyBsb2NhdGlvbi5maWxlbmFtZSlcbiAgICAgIH5saW5lX251bWJlcjpsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgfnN0YXJ0X3BvczoobG9jYXRpb24uc3RhcnRfcG9zIC0gbG9jYXRpb24ubGluZV9zdGFydClcbiAgICAgIH5lbmRfcG9zOihsb2NhdGlvbi5lbmRfcG9zIC0gbG9jYXRpb24ubGluZV9zdGFydClcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCByZWdpc3RlcmluZ190ZXN0c19mb3IgPSBDdXJyZW50X2ZpbGUuZ2V0ICgpIGluXG4gICAgICAgICBpZiBkZWZpbmVkX2luIDw+IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgdGhlblxuICAgICAgICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgIFwiVHJ5aW5nIHRvIHJ1biBhbiBleHBlY3QgdGVzdCBmcm9tIHRoZSB3cm9uZyBmaWxlLlxcblxcXG4gICAgICAgICAgICAgIC0gdGVzdCBkZWNsYXJlZCBhdCAlczolZFxcblxcXG4gICAgICAgICAgICAgIC0gdHJ5aW5nIHRvIHJ1biBpdCBmcm9tICVzXFxuXCJcbiAgICAgICAgICAgICBkZWZpbmVkX2luXG4gICAgICAgICAgICAgbG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgICAgICAgICByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAoKiBUbyBhdm9pZCBjYXB0dXJpbmcgbm90LXlldCBmbHVzaGVkIGRhdGEgb2YgdGhlIHN0ZG91dCBidWZmZXIgKilcbiAgICAgICAgICAgQy5ydW4gKGZ1biAoKSAtPiBDLklPX2ZsdXNoLnRvX3J1biAoQy5mbHVzaCAoKSkpO1xuICAgICAgICAgICBJbnN0YW5jZV9pby5leGVjXG4gICAgICAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgfmxvY2F0aW9uXG4gICAgICAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICB+ZjtcbiAgICAgICAgICAgdHJ1ZSkpXG4gIDs7XG5lbmRcbltAQGlubGluZSBuZXZlcl1cblxubGV0IHRlc3RzX3J1biAoKSA9XG4gICgqIFdlIHByZXBlbmQgdGVzdHMgd2hlbiB3ZSBlbmNvdW50ZXIgdGhlbSwgc28gcmV2ZXJzZSB0aGUgbGlzdCB0byByZWluc3RhdGUgb3JkZXIgKilcbiAgTGlzdC5yZXYgIXRlc3RzX3J1blxuOztcbiIsIm1vZHVsZSBJT19ydW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXQgcmV0dXJuIHggPSB4XG4gIGxldCBiaW5kIHQgfmYgPSBmIHRcbmVuZFxuXG5tb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJT19ydW5cblxuICBsZXQgdG9fcnVuIHQgPSB0XG5lbmRcblxubGV0IHNhbml0aXplIHMgPSBzXG5sZXQgcnVuIGYgPSBmICgpXG5sZXQgZmx1c2hlZCAoKSA9IHRydWUgKCogdGhlIHJ1bnRpbWUgZmx1c2hlZCBbc3Rkb3V0XSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uICopXG5cbmxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IGBDUlxuIiwibW9kdWxlIFBweF9zZXhwX2NvbnZfbGliID0gc3RydWN0XG4gIG1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG4gIG1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG4gIG1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuZW5kXG5cbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuIiwiKCogVGhpcyBtb2R1bGUgYnVpbGRzIGEgYnVmZmVyIG9mIFwiaW5zdHJ1Y3Rpb25zXCIsIGluIG9yZGVyIHRvIHJlcHJlc2VudCBhIGNvbXBhY3Qgc2VxdWVuY2VcbiAgIG9mIGRlbGltaXRpbmcgcG9zaXRpb25zIGFuZCBuZXdsaW5lcy4gVGhlIHBhcnNlciBzdG9yZXMgdGhlIHBvc2l0aW9ucyBvZiBlYWNoOlxuXG4gICAtIG5ld2xpbmVcbiAgIC0gYmVnaW5uaW5nIG9mIGF0b21cbiAgIC0gZW5kIG9mIGF0b21cbiAgIC0gbGVmdCBwYXJlbnRoZXNpc1xuICAgLSByaWdodCBwYXJlbnRoZXNpc1xuXG4gICBJbnN0cnVjdGlvbnMgYXJlIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBiaXRzLiBUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBkZXRlcm1pbmVkIGJ5XG4gICBsb29raW5nIGF0IHRoZSBuZXh0IGZldyBiaXRzOlxuXG4gICAtIGJpdCAwIHJlcHJlc2VudHMgYSBzYXZlZCBwb3NpdGlvbiBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTAgcmVwcmVzZW50IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTAgYXJlIGZvbGxvd2VkIGJ5IDUgYml0cyBvZiBwYXlsb2FkLiBUaGUgNS1iaXQgcGF5bG9hZHMgb2YgYW55IHN1YnNlcXVlbnQgMTEwLVxuICAgICBpbnN0cnVjdGlvbnMgYXJlIHNxdWFzaGVkIHRvIGZvcm0gYSBudW1iZXIgKGxlYXN0IHNpZ25pZmljYW50IDUtYml0IGNodW5rIGZpcnN0KS5cbiAgICAgVGhpcyBudW1iZXIgKyA1IHJlcHJlc2VudHMgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMTAgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBsaW5lICh3aXRoIG9mZnNldCBpbmNyZW1lbnRlZClcbiAgIC0gYml0cyAxMTExIHJlcHJlc2VudCBhIHBvc2l0aW9uIHNhdmVkIHR3aWNlIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcblxuICAgRm9yIGluc3RhbmNlIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2V4cDpcblxuICAge1tcbiAgICAge3xcbihhYmNcbiAgICAgIFwiZm9vXG4gYmFyXCJcbilcbnx9XG4gICBdfVxuXG4gICB0aGUgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zIHRvIHJlY29yZCBpbiBvcmRlciB0byByZWNvbnN0cnVjdCB0aGUgcG9zaXRpb24gb2YgYW55XG4gICBzdWItc2V4cCBpczpcblxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBmaXJzdCAnKCdcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJhYmNcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImFiY1wiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMSBhZHZhbmNlIDZcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMCBhZHZhbmNlIDVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBsYXN0ICcpJ1xuXG4gICAod2Ugc2F2ZSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMpXG5cbiAgIFRoZSB0b3RhbCBzZXF1ZW5jZSBpcyA0MiBiaXRzLCBzbyB3ZSBuZWVkIDYgYnl0ZXMgdG8gc3RvcmUgaXRcblxuICAgVGhlIHNlcXVlbmNlIG9mIGJpdHMgaXMgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIG9mIDE2LWJpdCB2YWx1ZXMsIHdoZXJlIHRoZSBlYXJsaWVyIGJpdHNcbiAgIGFyZSBtb3N0IHNpZ25pZmljYW50LlxuXG4gICBOb3RlIHRoYXQgdGhlIHBhcnNlciBzdG9yZXMgdGhlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlLiBUaGlzIHdheSBvbmx5IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHJlcXVpcmUgYSBkb3VibGUgcG9zaXRpb25zLiBJZiB3ZSB3ZXJlIHN0b3JpbmcgZW5kIHBvc2l0aW9ucyBhc1xuICAgZXhjbHVzaXZlLCB3ZSB3b3VsZCBuZWVkIGRvdWJsZSBwb3NpdGlvbnMgZm9yIFspKF0gYW5kIFthKF0sIHdoaWNoIGFyZSBsaWtlbHkgdG8gYmVcbiAgIGZyZXF1ZW50IGluIHMtZXhwcmVzc2lvbnMgcHJpbnRlZCB3aXRoIHRoZSBub24gW19odW1dIHByaW50ZXIuIFdlIGV4cGVjdCBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyB0byBiZSBsZXNzIGZyZXF1ZW50IHNvIGl0IG1ha2VzIHNlbnNlIHRvIHBlbmFsaXplIHRoZW0gaW5zdGVhZC5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvcyA9XG4gIHsgbGluZSA6IGludFxuICA7IGNvbCA6IGludFxuICA7IG9mZnNldCA6IGludFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcG9zID1cbiAgKGZ1biB7IGxpbmUgPSBsaW5lX18wMDJfOyBjb2wgPSBjb2xfXzAwNF87IG9mZnNldCA9IG9mZnNldF9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBvZmZzZXRfXzAwNl8gaW5cbiAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZmZzZXRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2ZfaW50IGNvbF9fMDA0XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbFwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9pbnQgbGluZV9fMDAyXyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHBvcyAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9wb3MgPSBDYW1sLmNvbXBhcmVcbmxldCBiZWdpbm5pbmdfb2ZfZmlsZSA9IHsgbGluZSA9IDE7IGNvbCA9IDA7IG9mZnNldCA9IDAgfVxubGV0IHNoaWZ0X3BvcyBwb3MgfmNvbHMgPSB7IHBvcyB3aXRoIGNvbCA9IHBvcy5jb2wgKyBjb2xzOyBvZmZzZXQgPSBwb3Mub2Zmc2V0ICsgY29scyB9XG5cbnR5cGUgcmFuZ2UgPVxuICB7IHN0YXJ0X3BvcyA6IHBvc1xuICA7IGVuZF9wb3MgOiBwb3NcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3JhbmdlID1cbiAgKGZ1biB7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDA5XzsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxMV8gfSAtPlxuICAgICBsZXQgYm5kc19fMDA4XyA9IFtdIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9wb3MgZW5kX3Bvc19fMDExXyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfcG9zIHN0YXJ0X3Bvc19fMDA5XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDhfXG4gICAgIDogcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcmFuZ2UgPSBDYW1sLmNvbXBhcmVcblxubGV0IG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3BvcyA9XG4gIHsgc3RhcnRfcG9zOyBlbmRfcG9zID0gc2hpZnRfcG9zIGxhc3RfcG9zIH5jb2xzOjEgfVxuOztcblxubW9kdWxlIENodW5rIDogc2lnXG4gICgqKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIFtsZW5ndGgvMl0gc2lnbmVkIDE2LWJpdCB2YWx1ZXMgKilcbiAgdHlwZSB0XG5cbiAgKCoqIExlbmd0aCBpbiBieXRlcy4gKilcbiAgdmFsIGxlbmd0aCA6IGludFxuXG4gIHZhbCBhbGxvYyA6IHVuaXQgLT4gdFxuXG4gICgqKiBbZ2V0MTYgfnBvc10gYW5kIFtzZXQxNiB+cG9zXSBtYW5pcHVsYXRlIHRoZSBbcG9zLzJddGggc3RvcmVkIHZhbHVlLlxuICAgICAgW3Bvc10gbXVzdCBiZSBldmVuLlxuICAgICAgW3NldDE2IHhdIG9ubHkgdXNlcyB0aGUgMTYgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbeF0uICopXG4gIHZhbCBnZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnRcblxuICB2YWwgc2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gICgqIE9DYW1sIHN0cmluZ3MgYWx3YXlzIHdhc3RlIHR3byBieXRlcyBhdCB0aGUgZW5kLCBzbyB3ZSB0YWtlIGEgcG93ZXIgb2YgdHdvIG1pbnVzIHR3b1xuICAgICB0byBiZSBzdXJlIHdlIGRvbid0IHdhc3RlIHNwYWNlLiAqKVxuICBsZXQgbGVuZ3RoID0gNjJcbiAgbGV0IGFsbG9jICgpID0gQnl0ZXMuY3JlYXRlIGxlbmd0aFxuXG4gIGV4dGVybmFsIGdldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbiAgZXh0ZXJuYWwgc2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5cbiAgKCogSWYgd2Ugd2FudCB0byBtYWtlIGEgW1Bvc2l0aW9ucy50XSBzZXJpYWxpemFibGU6XG5cbiAgICAge1tcbiAgICAgICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIjs7XG5cbiAgICAgICBsZXQgZ2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIC0+IGdldDE2IGJ1ZiB+cG9zIHw+IGJzd2FwMTZcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZ2V0MTZcblxuICAgICAgIGxldCBzZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgeCAtPiBzZXQxNiBidWYgfnBvcyAoYnN3YXAxNiB4KVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBzZXQxNlxuICAgICBdfVxuXG4gICopXG5lbmRcblxudHlwZSB0XyA9XG4gIHsgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtjaHVua3NdLlxuICAgICAgIFRoZSBsYXN0IFtleHRyYV9iaXRzXSBiaXRzIHdpbGwgYmUgc3RvcmVkIGFzIHRoZSAqbGVhc3QqIHNpZ25pZmljYW50IGJpdHNcbiAgICAgICBvZiB0aGUgYXBwcm9wcmlhdGUgcGFpciBvZiBieXRlcyBvZiB0aGUgbGFzdCBjaHVuay4gKilcbiAgICBudW1fYnl0ZXMgOiBpbnRcbiAgOyBleHRyYV9iaXRzIDogaW50XG4gIDsgaW5pdGlhbF9wb3MgOiBwb3NcbiAgfVxuXG50eXBlIHQgPSB0XyBMYXp5LnRcblxubGV0IG1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMgKGxhenkgdCkgPVxuICBsZXQgbnVtX2ZpZWxkcyA9IDQgaW5cbiAgbGV0IGhlYWRlcl93b3JkcyA9IDEgaW5cbiAgbGV0IHdvcmRfYnl0ZXMgPVxuICAgIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgIHwgMzIgLT4gNFxuICAgIHwgNjQgLT4gOFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbGV0IGNodW5rX3dvcmRzID1cbiAgICBsZXQgZGl2X2NlaWwgYSBiID0gKGEgKyBiIC0gMSkgLyBiIGluXG4gICAgbGV0IG4gPVxuICAgICAgZGl2X2NlaWxcbiAgICAgICAgKENodW5rLmxlbmd0aFxuICAgICAgICAgKyAxICgqIE5VTCB0ZXJtaW5hdGluZyBieXRlcyAqKVxuICAgICAgICAgKyAxICgqIG51bWJlciBvZiB3YXN0ZWQgYnl0ZXMgdG8gZmlsbCBhIHdvcmQgKikpXG4gICAgICAgIHdvcmRfYnl0ZXNcbiAgICBpblxuICAgIG4gKyBoZWFkZXJfd29yZHNcbiAgaW5cbiAgbGV0IHBvc19maWVsZHMgPSAzIGluXG4gIGxldCBwb3Nfd29yZHMgPSBoZWFkZXJfd29yZHMgKyBwb3NfZmllbGRzIGluXG4gIGxldCBsaXN0X2NvbnNfd29yZHMgPSBoZWFkZXJfd29yZHMgKyAyIGluXG4gIChoZWFkZXJfd29yZHNcbiAgICsgbnVtX2ZpZWxkc1xuICAgKyBwb3Nfd29yZHNcbiAgICsgKExpc3QubGVuZ3RoIHQuY2h1bmtzICogKGNodW5rX3dvcmRzICsgbGlzdF9jb25zX3dvcmRzKSkpXG4gICogd29yZF9ieXRlc1xuOztcblxubW9kdWxlIEJ1aWxkZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rX3BvcyA6IGludFxuICAgIDsgbXV0YWJsZSBmaWxsZWRfY2h1bmtzIDogQ2h1bmsudCBsaXN0ICgqIEZpbGxlZCBjaHVua3MgaW4gcmV2ZXJzZSBvcmRlciAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICAoKiBPZmZzZXQgb2YgdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24gb3IgbmV3bGluZSBwbHVzXG4gICAgICAgb25lLCBvciBbaW5pdGlhbF9wb3NdICopXG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICAoKiB0aGUgW251bV9iaXRzXSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFtpbnRfYnVmXVxuICAgICAgIGFyZSB0aGUgYml0cyBub3QgeWV0IHB1c2hlZCB0byBbY2h1bmtdLiAqKVxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIGluaXRpYWxfcG9zIDogcG9zXG4gICAgfVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0LmNodW5rX3BvcyA+PSAwICYmIHQuY2h1bmtfcG9zIDw9IENodW5rLmxlbmd0aCk7XG4gICAgYXNzZXJ0ICh0Lm9mZnNldCA+PSB0LmluaXRpYWxfcG9zLm9mZnNldCk7XG4gICAgYXNzZXJ0ICh0Lm51bV9iaXRzIDw9IDE1KVxuICA7O1xuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSBmYWxzZVxuICBsZXQgaW52YXJpYW50IHQgPSBpZiBjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdFxuXG4gIGxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IGJlZ2lubmluZ19vZl9maWxlKSAoKSA9XG4gICAgeyBjaHVuayA9IENodW5rLmFsbG9jICgpXG4gICAgOyBjaHVua19wb3MgPSAwXG4gICAgOyBmaWxsZWRfY2h1bmtzID0gW11cbiAgICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICAgIDsgaW50X2J1ZiA9IDBcbiAgICA7IG51bV9iaXRzID0gMFxuICAgIDsgaW5pdGlhbF9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgKHBvcyA6IHBvcykgPVxuICAgICgqIFdlIG5lZWQgYSBuZXcgY2h1bmsgYXMgW2NvbnRlbnRzXSBrZWVwcyB0aGUgY3VycmVudCBjaHVuayBpbiB0aGUgY2xvc3VyZSBvZiB0aGVcbiAgICAgICBsYXp5IHZhbHVlLiAqKVxuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMDtcbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gW107XG4gICAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgICB0LmludF9idWYgPC0gMDtcbiAgICB0Lm51bV9iaXRzIDwtIDA7XG4gICAgdC5pbml0aWFsX3BvcyA8LSBwb3NcbiAgOztcblxuICBsZXRbQGlubGluZWQgbmV2ZXJdIGFsbG9jX25ld19jaHVuayB0ID1cbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3M7XG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwXG4gIDs7XG5cbiAgbGV0IGFkZF91aW50MTYgdCBuID1cbiAgICBpZiB0LmNodW5rX3BvcyA9IENodW5rLmxlbmd0aCB0aGVuIGFsbG9jX25ld19jaHVuayB0O1xuICAgIENodW5rLnNldDE2IHQuY2h1bmsgfnBvczp0LmNodW5rX3BvcyBuXG4gIDs7XG5cbiAgbGV0IGFkZF9iaXRzIHQgbiB+bnVtX2JpdHMgPVxuICAgIGxldCBpbnRfYnVmID0gKHQuaW50X2J1ZiBsc2wgbnVtX2JpdHMpIGxvciBuIGluXG4gICAgbGV0IG51bV9iaXRzID0gdC5udW1fYml0cyArIG51bV9iaXRzIGluXG4gICAgdC5pbnRfYnVmIDwtIGludF9idWY7XG4gICAgaWYgbnVtX2JpdHMgPCAxNlxuICAgIHRoZW4gdC5udW1fYml0cyA8LSBudW1fYml0c1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9iaXRzID0gbnVtX2JpdHMgLSAxNiBpblxuICAgICAgdC5udW1fYml0cyA8LSBudW1fYml0cztcbiAgICAgIGFkZF91aW50MTYgdCAoaW50X2J1ZiBsc3IgbnVtX2JpdHMpO1xuICAgICAgdC5jaHVua19wb3MgPC0gdC5jaHVua19wb3MgKyAyXG4gICAgICAoKiBubyBuZWVkIHRvIGNsZWFyIHRoZSBiaXRzIG9mIGludF9idWYgd2UganVzdCB3cm90ZSwgYXMgZnVydGhlciBzZXQxNiB3aWxsIGlnbm9yZVxuICAgICAgICAgdGhlc2UgZXh0cmEgYml0cy4gKikpXG4gIDs7XG5cbiAgbGV0IGNvbnRlbnRzIHQgPVxuICAgICgqIEZsdXNoIHRoZSBjdXJyZW50IFt0LmludF9idWZdICopXG4gICAgYWRkX3VpbnQxNiB0IHQuaW50X2J1ZjtcbiAgICBsZXQgcmV2X2NodW5rcyA9IHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzIGluXG4gICAgbGV0IGNodW5rX3BvcyA9IHQuY2h1bmtfcG9zIGluXG4gICAgbGV0IGV4dHJhX2JpdHMgPSB0Lm51bV9iaXRzIGluXG4gICAgbGV0IGluaXRpYWxfcG9zID0gdC5pbml0aWFsX3BvcyBpblxuICAgIGxhenlcbiAgICAgIHsgY2h1bmtzID0gTGlzdC5yZXYgcmV2X2NodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSAoKExpc3QubGVuZ3RoIHJldl9jaHVua3MgLSAxKSAqIENodW5rLmxlbmd0aCkgKyBjaHVua19wb3NcbiAgICAgIDsgZXh0cmFfYml0c1xuICAgICAgOyBpbml0aWFsX3Bvc1xuICAgICAgfVxuICA7O1xuXG4gIGxldCBsb25nX3NoaWZ0IHQgbiA9XG4gICAgbGV0IG4gPSByZWYgKG4gLSA1KSBpblxuICAgIHdoaWxlICFuID4gMCBkb1xuICAgICAgYWRkX2JpdHMgdCAoMGIxMTAwXzAwMDAgbG9yICghbiBsYW5kIDBiMDAwMV8xMTExKSkgfm51bV9iaXRzOjg7XG4gICAgICBuIDo9ICFuIGxzciA1XG4gICAgZG9uZVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogbiA+PSA1ICopXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGxvbmdfc2hpZnQgdCBuO1xuICAgIGFkZF9iaXRzIHQgaW5zdHIgfm51bV9iaXRzOmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgc2hpZnQ0ID0gMGIxMF8xMF8xMF8xMFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBsZXQgbiA9IG9mZnNldCAtIHQub2Zmc2V0IGluXG4gICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDAgfCAxIHwgMiB8IDMgfCA0IC0+XG4gICAgICBsZXQgbnVtX2JpdHMgPSAobiBsc2wgMSkgKyBpbnN0cl9iaXRzIGluXG4gICAgICBhZGRfYml0cyB0ICgoc2hpZnQ0IGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpKSB+bnVtX2JpdHNcbiAgICB8IDVcbiAgICB8IDZcbiAgICB8IDdcbiAgICB8IDhcbiAgICB8IDlcbiAgICB8IDEwXG4gICAgfCAxMVxuICAgIHwgMTJcbiAgICB8IDEzXG4gICAgfCAxNFxuICAgIHwgMTVcbiAgICB8IDE2XG4gICAgfCAxN1xuICAgIHwgMThcbiAgICB8IDE5XG4gICAgfCAyMFxuICAgIHwgMjFcbiAgICB8IDIyXG4gICAgfCAyM1xuICAgIHwgMjRcbiAgICB8IDI1XG4gICAgfCAyNlxuICAgIHwgMjdcbiAgICB8IDI4XG4gICAgfCAyOVxuICAgIHwgMzBcbiAgICB8IDMxXG4gICAgfCAzMlxuICAgIHwgMzNcbiAgICB8IDM0XG4gICAgfCAzNVxuICAgIHwgMzYgLT5cbiAgICAgIGFkZF9iaXRzXG4gICAgICAgIHRcbiAgICAgICAgKCgoMGIxMTAwXzAwMDAgbG9yIChuIC0gNSkpIGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIpXG4gICAgICAgIH5udW1fYml0czooOCArIGluc3RyX2JpdHMpXG4gICAgfCBfIC0+XG4gICAgICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuYWRkX2dlblwiO1xuICAgICAgYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgYWRkIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjAgfmluc3RyX2JpdHM6MVxuICBsZXQgYWRkX3R3aWNlIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTEgfmluc3RyX2JpdHM6NFxuICBsZXQgYWRkX25ld2xpbmUgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMCB+aW5zdHJfYml0czo0XG5lbmRcblxudHlwZSBwb3NpdGlvbnMgPSB0XG5cbm1vZHVsZSBJdGVyYXRvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogcG9zaXRpb25zIC0+IHRcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gICgqIFthZHZhbmNlIHQgfnNraXBdIGlnbm9yZXMgW3NraXBdIHNhdmVkIHBvc2l0aW9ucyBhbmQgcmV0dXJucyB0aGUgbmV4dCBzYXZlZCBwb3NpdGlvbi5cbiAgICAgUmFpc2VzIFtOb19tb3JlXSB3aGVuIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uIHNldC4gKilcbiAgdmFsIGFkdmFuY2VfZXhuIDogdCAtPiBza2lwOmludCAtPiBwb3NcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gICAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZnJvbSBbaW5zdHJfcG9zXSBpblxuICAgICAgICAgW2NodW5rIDo6IGNodW5rc10uICopXG4gICAgICBtdXRhYmxlIG51bV9ieXRlcyA6IGludFxuICAgIDsgZXh0cmFfYml0cyA6IGludFxuICAgIDsgbXV0YWJsZSBpbnN0cl9wb3MgOiBpbnQgKCogcG9zaXRpb24gaW4gW2NodW5rXSAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSBib2wgOiBpbnRcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBOdW1iZXIgb2YgYml0cyBub3QgeWV0IGNvbnN1bWVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBwZW5kaW5nIDogcG9zIG9wdGlvblxuICAgIH1cblxuICBsZXQgY3JlYXRlICgobGF6eSBwKSA6IHBvc2l0aW9ucykgPVxuICAgIG1hdGNoIHAuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB7IGNodW5rXG4gICAgICA7IGNodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSBwLm51bV9ieXRlc1xuICAgICAgOyBleHRyYV9iaXRzID0gcC5leHRyYV9iaXRzXG4gICAgICA7IGluc3RyX3BvcyA9IDBcbiAgICAgIDsgb2Zmc2V0ID0gcC5pbml0aWFsX3Bvcy5vZmZzZXRcbiAgICAgIDsgbGluZSA9IHAuaW5pdGlhbF9wb3MubGluZVxuICAgICAgOyBib2wgPSBwLmluaXRpYWxfcG9zLm9mZnNldCAtIHAuaW5pdGlhbF9wb3MuY29sXG4gICAgICA7IGludF9idWYgPSAwXG4gICAgICA7IG51bV9iaXRzID0gMFxuICAgICAgOyBwZW5kaW5nID0gTm9uZVxuICAgICAgfVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgbGV0IG5vX21vcmUgKCkgPSByYWlzZV9ub3RyYWNlIE5vX21vcmVcblxuICBsZXRbQGlubGluZWQgbmV2ZXJdIGZldGNoX2NodW5rIHQgPVxuICAgIG1hdGNoIHQuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB0Lmluc3RyX3BvcyA8LSAwO1xuICAgICAgdC5udW1fYnl0ZXMgPC0gdC5udW1fYnl0ZXMgLSBDaHVuay5sZW5ndGg7XG4gICAgICB0LmNodW5rIDwtIGNodW5rO1xuICAgICAgdC5jaHVua3MgPC0gY2h1bmtzXG4gIDs7XG5cbiAgbGV0IGZldGNoIHQgPVxuICAgIGlmIHQuaW5zdHJfcG9zID4gdC5udW1fYnl0ZXMgdGhlbiBub19tb3JlICgpO1xuICAgIGlmIHQuaW5zdHJfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gZmV0Y2hfY2h1bmsgdDtcbiAgICBsZXQgdiA9IENodW5rLmdldDE2IHQuY2h1bmsgfnBvczp0Lmluc3RyX3BvcyBpblxuICAgIGxldCBhZGRlZF9iaXRzID0gaWYgdC5pbnN0cl9wb3MgPSB0Lm51bV9ieXRlcyB0aGVuIHQuZXh0cmFfYml0cyBlbHNlIDE2IGluXG4gICAgdC5pbnRfYnVmIDwtICh0LmludF9idWYgbHNsIGFkZGVkX2JpdHMpIGxvciAodiBsYW5kICgoMSBsc2wgYWRkZWRfYml0cykgLSAxKSk7XG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzICsgYWRkZWRfYml0cztcbiAgICB0Lmluc3RyX3BvcyA8LSB0Lmluc3RyX3BvcyArIDJcbiAgOztcblxuICBsZXQgbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzID1cbiAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHNcbiAgICB0aGVuIChcbiAgICAgIGZldGNoIHQ7XG4gICAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHMgdGhlbiBub19tb3JlICgpKTtcbiAgICBsZXQgbiA9ICh0LmludF9idWYgbHNyICh0Lm51bV9iaXRzIC0gbnVtX2JpdHMpKSBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkgaW5cbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgLSBudW1fYml0cztcbiAgICBuXG4gIDs7XG5cbiAgKCogW29mZnNldF9zaGlmdF0gYW5kIFtvZmZzZXRfc2hpZnRfbnVtX2JpdHNdIGVuY29kZSB0aGUgb2Zmc2V0IG51bWJlclxuICAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZyBbMTEwXSBpbnN0cnVjdGlvbnMuICopXG4gIGxldCByZWMgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQgfm9mZnNldF9zaGlmdF9udW1fYml0cyA9XG4gICAgbWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKCogYml0IHNlcSAwIC0+IG5ldyBpdGVtICopXG4gICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfVxuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKCogYml0IHNlcSAxMCAtPiBzaGlmdCAqKVxuICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAoKiBiaXQgc2VxIDExMCAtPiBsb25nIHNoaWZ0ICopXG4gICAgICAgICAgICBsZXQgbiA9IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czo1IGluXG4gICAgICAgICAgICBsZXQgb2Zmc2V0X3NoaWZ0ID0gaWYgb2Zmc2V0X3NoaWZ0X251bV9iaXRzID0gMCB0aGVuIDUgZWxzZSBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgIGFkdmFuY2VcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICB+c2tpcFxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0OihvZmZzZXRfc2hpZnQgKyAobiBsc2wgb2Zmc2V0X3NoaWZ0X251bV9iaXRzKSlcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdF9udW1fYml0czoob2Zmc2V0X3NoaWZ0X251bV9iaXRzICsgNSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTAgLT4gbmV3bGluZSAqKVxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgICAgICAgdC5ib2wgPC0gdC5vZmZzZXQ7XG4gICAgICAgICAgICAgICB0LmxpbmUgPC0gdC5saW5lICsgMTtcbiAgICAgICAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTEgLT4gMiBuZXcgaXRlbXMgKilcbiAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgICAgICAgICAgIGlmIHNraXAgPD0gMVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwb3MgPSB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfSBpblxuICAgICAgICAgICAgICAgICBpZiBza2lwID0gMCB0aGVuIHQucGVuZGluZyA8LSBTb21lIHBvcztcbiAgICAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAyKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowKSkpXG4gIDs7XG5cbiAgbGV0IGFkdmFuY2VfZXhuIHQgfnNraXAgPVxuICAgIG1hdGNoIHQucGVuZGluZyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPlxuICAgICAgdC5wZW5kaW5nIDwtIE5vbmU7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiBwb3NcbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgTm9uZSAtPiBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICA7O1xuZW5kXG5cbmxldCBmaW5kIHQgYSBiID1cbiAgaWYgYSA8IDAgfHwgYiA8PSBhIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5maW5kXCI7XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgdHJ5XG4gICAgbGV0IHN0YXJ0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6YSBpblxuICAgIGxldCBsYXN0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6KGIgLSBhIC0gMSkgaW5cbiAgICBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3NcbiAgd2l0aFxuICB8IEl0ZXJhdG9yLk5vX21vcmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBvc2l0aW9uLmZpbmRcIlxuOztcblxubGV0IHJlYyBzdWJfc2V4cF9jb3VudCAoc2V4cCA6IFNleHAudCkgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIF8gLT4gMVxuICB8IExpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCBsIH5pbml0OjEgfmY6KGZ1biBhY2MgeCAtPiBhY2MgKyBzdWJfc2V4cF9jb3VudCB4KVxuOztcblxubW9kdWxlIFNleHBfc2VhcmNoID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBGb3VuZCBvZiBpbnRcblxuICBsZXQgcmVjIGxvb3AgfnN1YiBpbmRleCAoc2V4cCA6IFNleHAudCkgPVxuICAgIGlmIHNleHAgPT0gc3ViXG4gICAgdGhlbiByYWlzZV9ub3RyYWNlIChGb3VuZCBpbmRleClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBBdG9tIF8gLT4gaW5kZXggKyAyXG4gICAgICB8IExpc3QgbCAtPlxuICAgICAgICBsZXQgaW5kZXggPSBsb29wX2xpc3QgfnN1YiAoaW5kZXggKyAxKSBsIGluXG4gICAgICAgIGluZGV4ICsgMSlcblxuICBhbmQgbG9vcF9saXN0IH5zdWIgaW5kZXggKHNleHBzIDogU2V4cC50IGxpc3QpID1cbiAgICBMaXN0LmZvbGRfbGVmdCBzZXhwcyB+aW5pdDppbmRleCB+ZjoobG9vcCB+c3ViKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZSB0IH5zdWIgYSA9XG4gICAgbGV0IGIgPSBhICsgKHN1Yl9zZXhwX2NvdW50IHN1YiAqIDIpIC0gMSBpblxuICAgIFNvbWUgKGZpbmQgdCBhIGIpXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfcGh5cyB0IHNleHAgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcCB+c3ViIDAgc2V4cCB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgdCBzZXhwcyB+c3ViID1cbiAgICBtYXRjaCBsb29wX2xpc3QgfnN1YiAwIHNleHBzIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuZW5kXG5cbmxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX3BoeXNcbmxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCB3aXRoXG4gICAgfCBleGNlcHRpb24gSXRlcmF0b3IuTm9fbW9yZSAtPiBMaXN0LnJldiBhY2NcbiAgICB8IHBvcyAtPiBsb29wIChwb3MgOjogYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRvX2xpc3QgdCB8PiBBcnJheS5vZl9saXN0XG5sZXQgY29tcGFyZSB0MSB0MiA9IENhbWwuY29tcGFyZSAodG9fYXJyYXkgdDEpICh0b19hcnJheSB0MilcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9wb3MgKHRvX2FycmF5IHQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBBdG9tIG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBhdG9tIDogc3RyaW5nXG4gICAgICA7IHVuZXNjYXBlZCA6IHN0cmluZyBvcHRpb25cbiAgICAgIH1cbiAgfCBMaXN0IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBlbGVtZW50cyA6IHRfb3JfY29tbWVudCBsaXN0XG4gICAgICB9XG5cbmFuZCB0X29yX2NvbW1lbnQgPVxuICB8IFNleHAgb2YgdFxuICB8IENvbW1lbnQgb2YgY29tbWVudFxuXG5hbmQgY29tbWVudCA9XG4gIHwgUGxhaW5fY29tbWVudCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgY29tbWVudCA6IHN0cmluZ1xuICAgICAgfVxuICB8IFNleHBfY29tbWVudCBvZlxuICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgOyBjb21tZW50cyA6IGNvbW1lbnQgbGlzdFxuICAgICAgOyBzZXhwIDogdFxuICAgICAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCByZWMgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBBdG9tIHsgbG9jID0gbG9jX18wMDJfOyBhdG9tID0gYXRvbV9fMDA0XzsgdW5lc2NhcGVkID0gdW5lc2NhcGVkX18wMDZfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDFfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHVuZXNjYXBlZF9fMDA2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1bmVzY2FwZWRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIGF0b21fXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYXRvbVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDNfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJBdG9tXCIgOjogYm5kc19fMDAxXylcbiAgICB8IExpc3QgeyBsb2MgPSBsb2NfXzAwOV87IGVsZW1lbnRzID0gZWxlbWVudHNfXzAxMV8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwOF8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdF9vcl9jb21tZW50IGVsZW1lbnRzX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsZW1lbnRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwOV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkxpc3RcIiA6OiBibmRzX18wMDhfKVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfdF9vcl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBTZXhwIGFyZzBfXzAxM18gLT5cbiAgICAgIGxldCByZXMwX18wMTRfID0gc2V4cF9vZl90IGFyZzBfXzAxM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDE0XyBdXG4gICAgfCBDb21tZW50IGFyZzBfXzAxNV8gLT5cbiAgICAgIGxldCByZXMwX18wMTZfID0gc2V4cF9vZl9jb21tZW50IGFyZzBfXzAxNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbW1lbnRcIjsgcmVzMF9fMDE2XyBdXG4gICAgICA6IHRfb3JfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBsb2NfXzAxOF87IGNvbW1lbnQgPSBjb21tZW50X18wMjBfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMTdfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDIxXyA9IHNleHBfb2Zfc3RyaW5nIGNvbW1lbnRfXzAyMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudFwiOyBhcmdfXzAyMV8gXSA6OiBibmRzX18wMTdfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMTlfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMThfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxOV8gXSA6OiBibmRzX18wMTdfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJQbGFpbl9jb21tZW50XCIgOjogYm5kc19fMDE3XylcbiAgICB8IFNleHBfY29tbWVudFxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgPSBoYXNoX3NlbWlfcG9zX18wMjNfXG4gICAgICAgIDsgY29tbWVudHMgPSBjb21tZW50c19fMDI1X1xuICAgICAgICA7IHNleHAgPSBzZXhwX18wMjdfXG4gICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMjJfID0gW10gaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI4XyA9IHNleHBfb2ZfdCBzZXhwX18wMjdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInNleHBcIjsgYXJnX18wMjhfIF0gOjogYm5kc19fMDIyX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI2XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2NvbW1lbnQgY29tbWVudHNfXzAyNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudHNcIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIyX1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI0XyA9IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBoYXNoX3NlbWlfcG9zX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImhhc2hfc2VtaV9wb3NcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIyX1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cF9jb21tZW50XCIgOjogYm5kc19fMDIyXylcbiAgICAgIDogY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZSA9IENhbWwuY29tcGFyZVxubGV0IGNvbXBhcmVfdF9vcl9jb21tZW50ID0gQ2FtbC5jb21wYXJlXG5sZXQgY29tcGFyZV9jb21tZW50ID0gQ2FtbC5jb21wYXJlXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFNleHAudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoU2V4cC50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoU2V4cC50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIHsgYXRvbTsgXyB9IC0+IGsgKFNleHAuQXRvbSBhdG9tKVxuICAgICAgfCBMaXN0IHsgZWxlbWVudHM7IF8gfSAtPiBmb3JnZXRfdG9jcyBlbGVtZW50cyAoZnVuIHhzIC0+IGsgKFNleHAuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGFja19pbnRmXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgVF9vcl9jb21tZW50IG9mIENzdC50X29yX2NvbW1lbnQgKiB0XG4gICAgfCBPcGVuIG9mIFBvc2l0aW9ucy5wb3MgKiB0XG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgb2ZcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgICA7IHJldl9jb21tZW50cyA6IENzdC5jb21tZW50IGxpc3RcbiAgICAgICAgOyBzdGFjayA6IHRcbiAgICAgICAgfVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGdldF9tYW55ID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IGxvb3AgKHQgOjogYWNjKSBzdGFja1xuICAgICAgfCBPcGVuIF8gfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55XCJcbiAgICBpblxuICAgIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG4gIDs7XG5lbmRcblxubW9kdWxlIEp1c3RfcG9zaXRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcblxuICBsZXQgZW1wdHkgPSAoKVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgRW1wdHlcbiAgfCBPcGVuIG9mIHRcbiAgfCBTZXhwIG9mIFNleHAudCAqIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGdldF9zaW5nbGUgPSBmdW5jdGlvblxuICB8IFNleHAgKHNleHAsIEVtcHR5KSAtPiBzZXhwXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlXCJcbjs7XG5cbmxldCBnZXRfbWFueSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBPcGVuIF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X21hbnlcIlxuICAgIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IGxvb3AgKHNleHAgOjogYWNjKSBzdGFja1xuICBpblxuICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgfCBTZXhwXG5lbmRcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRva2VuX2J1ZmZlciA6IEJ1ZmZlci50ICgqKiBTdGFydGluZyBwb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKiopXG4gICAgOyBtdXRhYmxlIHRva2VuX3N0YXJ0X3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCB1bml0KSB0XG4gICAgfCBTZXhwIDogKHVuaXQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBDc3QgOiAoRm9yX2NzdC50LCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KSB0XG5lbmRcblxubW9kdWxlIHJlYyBTdGF0ZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHsgbXV0YWJsZSBhdXRvbWF0b25fc3RhdGUgOiBpbnRcbiAgICA7IGtpbmQgOiAoJ3UsICdzKSBLaW5kLnRcbiAgICA7IG11dGFibGUgZGVwdGggOiBpbnQgKCoqIE51bWJlciBvZiBvcGVuZWQgI3wgd2hlbiBwYXJzaW5nIGEgYmxvY2sgY29tbWVudCAqKVxuICAgIDsgbXV0YWJsZSBibG9ja19jb21tZW50X2RlcHRoIDogaW50XG4gICAgKCoqIFN0YWNrIG9mIGlnbm9yaW5nIGRlcHRoczsgdGhlIGN1cnJlbnQgZGVwdGggaXMgcHVzaGVkXG4gICAgICAgIGVhY2ggdGltZSBhICM7IGNvbW1lbnQgaXMgZW50ZXJlZC4gKilcbiAgICA7IG11dGFibGUgaWdub3Jpbmdfc3RhY2sgOiBpbnQgbGlzdFxuICAgICgqKiBXaGVuIHBhcnNpbmcgYW4gZXNjYXBlIHNlcXVlbmNlIG9mIHRoZSBmb3JtIFwiXFxcXE5OTlwiIG9yIFwiXFxcXFhYXCIsIHRoaXMgYWNjdW11bGF0ZXNcbiAgICAgICAgdGhlIGNvbXB1dGVkIG51bWJlciAqKVxuICAgIDsgbXV0YWJsZSBlc2NhcGVkX3ZhbHVlIDogaW50ICgqKiBCdWZmZXIgZm9yIGFjY3VtdWxhdGluZyBhdG9tcyAqKVxuICAgIDsgYXRvbV9idWZmZXIgOiBCdWZmZXIudFxuICAgIDsgdXNlcl9zdGF0ZSA6ICd1XG4gICAgOyBtb2RlIDogKCd1LCAncykgTW9kZS50XG4gICAgOyBtdXRhYmxlIGZ1bGxfc2V4cHMgOiBpbnRcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50ICgqKiBnbG9iYWwgb2Zmc2V0ICoqKVxuICAgIDsgbXV0YWJsZSBsaW5lX251bWJlciA6IGludFxuICAgIDsgbXV0YWJsZSBib2xfb2Zmc2V0IDogaW50ICgqKiBvZmZzZXQgb2YgYmVnaW5uaW5nIG9mIGxpbmUgKiopXG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIE1vZGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFNpbmdsZVxuICAgIHwgTWFueVxuICAgIHwgRWFnZXIgb2ZcbiAgICAgICAgeyBnb3Rfc2V4cCA6ICgndSwgJ3MpIFN0YXRlLnQgLT4gJ3MgLT4gJ3NcbiAgICAgICAgOyBtdXRhYmxlIG5vX3NleHBfaXNfZXJyb3IgOiBib29sXG4gICAgICAgIH1cbmVuZCA9XG4gIE1vZGVcblxubW9kdWxlIHR5cGUgQXV0b21hdG9uX3N0YXRlID0gc2lnXG4gIG1vZHVsZSBDb250ZXh0ID0gQ29udGV4dFxuICBtb2R1bGUgRm9yX2NzdCA9IEZvcl9jc3RcbiAgbW9kdWxlIEtpbmQgPSBLaW5kXG4gIG1vZHVsZSBNb2RlID0gTW9kZVxuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZVxuXG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2luaXRpYWxfcG9zOlBvc2l0aW9ucy5wb3NcbiAgICAtPiAoJ3UsICdzKSBNb2RlLnRcbiAgICAtPiAoJ3UsICdzKSBLaW5kLnRcbiAgICAtPiAoJ3UsICdzKSB0XG5cbiAgdmFsIHJlc2V0IDogP3BvczpQb3NpdGlvbnMucG9zIC0+IF8gdCAtPiB1bml0XG4gIHZhbCBwb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgXykgdCAtPiBQb3NpdGlvbnMudFxuICB2YWwgbW9kZSA6ICgndSwgJ3MpIHQgLT4gKCd1LCAncykgTW9kZS50XG5cbiAgKCoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGZlZCB0byB0aGUgcGFyc2VyICopXG4gIHZhbCBvZmZzZXQgOiBfIHQgLT4gaW50XG5cbiAgKCoqIFBvc2l0aW9uIGluIHRoZSB0ZXh0ICopXG4gIHZhbCBsaW5lIDogXyB0IC0+IGludFxuXG4gIHZhbCBjb2x1bW4gOiBfIHQgLT4gaW50XG5cbiAgKCoqIFdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdW5jbG9zZWQgcGFyZW50aGVzZXMgKilcbiAgdmFsIGhhc191bmNsb3NlZF9wYXJlbiA6ICgndSwgJ3MpIHQgLT4gYm9vbFxuXG4gIHZhbCBzZXRfZXJyb3Jfc3RhdGUgOiBfIHQgLT4gdW5pdFxuXG4gICgqKi8qKilcblxuICAoKl8gT25seSBmb3IgY29udmVydGluZyBlcnJvcnMgdG8gdGhlIG9sZCBwYXJzZXIgZXJyb3JzICopXG4gIHZhbCBhdG9tX2J1ZmZlciA6IF8gdCAtPiBCdWZmZXIudFxuXG4gICgqXyBGb3IgY292ZXJhdGUgdGVzdHMgKilcbiAgdmFsIGF1dG9tYXRvbl9zdGF0ZSA6ICgndSwgJ3MpIHQgLT4gaW50XG4gIHZhbCBjb250ZXh0IDogXyB0IC0+IENvbnRleHQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlX2ludGZcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG5vcGVuIFN0YXRlXG5cbmxldCBpbml0aWFsX3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBQb3NpdGlvbnMucG9zIC0+IHUgPVxuICBmdW4ga2luZCBpbml0aWFsX3BvcyAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBDc3QgLT5cbiAgICAoKiBbdG9rZW5fc3RhcnRfcG9zXSBpcyBzZXQgdG8gYSBkdW1teSBsb2NhdGlvbiBoZXJlLiBJdCBpcyBwcm9wZXJseSBzZXQgd2hlbiB3ZVxuICAgICAgIHN0YXJ0IHRvIGNhcHR1cmUgYSB0b2tlbiBmcm9tIHRoZSBpbnB1dCAqKVxuICAgIHsgdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjg7IHRva2VuX3N0YXJ0X3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSB9XG47O1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3N0YXRlLnByaW50X2NvbnN0YW50cyAoKSAqKVxubGV0IGluaXRpYWxfc3RhdGUgPSAwXG5sZXQgZXJyb3Jfc3RhdGUgPSAxXG5cbigqJCopXG5cbmxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgbW9kZSBraW5kID1cbiAgeyBraW5kXG4gIDsgZGVwdGggPSAwXG4gIDsgYXV0b21hdG9uX3N0YXRlID0gaW5pdGlhbF9zdGF0ZVxuICA7IGJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gIDsgaWdub3Jpbmdfc3RhY2sgPSBbXVxuICA7IGVzY2FwZWRfdmFsdWUgPSAwXG4gIDsgYXRvbV9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyOFxuICA7IHVzZXJfc3RhdGUgPSBpbml0aWFsX3VzZXJfc3RhdGUga2luZCBpbml0aWFsX3Bvc1xuICA7IG1vZGVcbiAgOyBmdWxsX3NleHBzID0gMFxuICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICA7IGxpbmVfbnVtYmVyID0gaW5pdGlhbF9wb3MubGluZVxuICA7IGJvbF9vZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXQgLSBpbml0aWFsX3Bvcy5jb2xcbiAgfVxuOztcblxubGV0IG1vZGUgdCA9IHQubW9kZVxubGV0IHBvc2l0aW9ucyB0ID0gUG9zaXRpb25zLkJ1aWxkZXIuY29udGVudHMgdC51c2VyX3N0YXRlXG5sZXQgYXRvbV9idWZmZXIgdCA9IHQuYXRvbV9idWZmZXJcbmxldCBvZmZzZXQgc3RhdGUgPSBzdGF0ZS5vZmZzZXRcbmxldCBsaW5lIHN0YXRlID0gc3RhdGUubGluZV9udW1iZXJcbmxldCBjb2x1bW4gc3RhdGUgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG5sZXQgcG9zaXRpb24gdCA9IHsgUG9zaXRpb25zLmNvbCA9IGNvbHVtbiB0OyBsaW5lID0gbGluZSB0OyBvZmZzZXQgPSBvZmZzZXQgdCB9XG5cbmxldCByZXNldF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSB0IC0+IHVuaXQgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IENzdCAtPiBCdWZmZXIuY2xlYXIgdC51c2VyX3N0YXRlLnRva2VuX2J1ZmZlclxuOztcblxubGV0IHJlc2V0ID8ocG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSB0ID1cbiAgdC5kZXB0aCA8LSAwO1xuICB0LmF1dG9tYXRvbl9zdGF0ZSA8LSBpbml0aWFsX3N0YXRlO1xuICB0LmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gMDtcbiAgdC5pZ25vcmluZ19zdGFjayA8LSBbXTtcbiAgdC5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIHQuZnVsbF9zZXhwcyA8LSAwO1xuICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICB0LmxpbmVfbnVtYmVyIDwtIHBvcy5saW5lO1xuICB0LmJvbF9vZmZzZXQgPC0gcG9zLm9mZnNldCAtIHBvcy5jb2w7XG4gIHJlc2V0X3VzZXJfc3RhdGUgdDtcbiAgQnVmZmVyLmNsZWFyIHQuYXRvbV9idWZmZXJcbjs7XG5cbmxldCBjb250ZXh0IHN0YXRlIDogQ29udGV4dC50ID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IF8gOjogXyAtPiBTZXhwX2NvbW1lbnRcbiAgfCBbXSAtPiBTZXhwXG47O1xuXG5sZXQgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlID0gc3RhdGUuZGVwdGggPiAwXG5sZXQgc2V0X2Vycm9yX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIGVycm9yX3N0YXRlXG5sZXQgYXV0b21hdG9uX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFJlYXNvbiA9IHN0cnVjdFxuICAoKl8gU29tZSBvZiB0aGVzZSBjb21lIGZyb20gW1BhcnNleHBfc3ltYm9saWNfYXV0b21hdG9uLlBhcnNlX2Vycm9yX3JlYXNvbl0uICopXG4gIHR5cGUgdCA9XG4gICAgKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX3BhcnNlX2Vycm9yLnByaW50X2NvbnN0cnVjdG9ycyAoKSAqKVxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbiAgICAoKiQqKVxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0XG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gICAgfCBUb29fbWFueV9zZXhwc1xuICAgIHwgVW5jbG9zZWRfcGFyZW5cbmVuZFxuXG5tb2R1bGUgdHlwZSBQYXJzZV9lcnJvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcG9zaXRpb24gOiB0IC0+IFBvc2l0aW9ucy5wb3NcbiAgdmFsIG1lc3NhZ2UgOiB0IC0+IHN0cmluZ1xuXG4gICgqKiBSZXBvcnQgYW4gZXJyb3IgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIE9DYW1sLCBmb3IgaW5zdGFuY2U6XG5cbiAgICAgIEZpbGUgXCJibGFoXCIsIGxpbmUgNDIsIGNoYXJhY3RlciAxMDpcbiAgICAgIEVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcbiAgICAgIHVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nLlxuICAqKVxuICB2YWwgcmVwb3J0IDogRm9ybWF0LmZvcm1hdHRlciAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdCAtPiB1bml0XG5cbiAgZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHRcblxuICAoKiovKiopXG5cbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgICAoKiogVG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIG9sZCBwYXJzZXIgc29tZXRpbWVzIHJhaXNlZCBbRmFpbHVyZV0gYW5kIHNvbWV0aW1lc1xuICAgICAgICByYWlzZWQgW1BhcnNlX2Vycm9yXSAqKVxuICAgIHZhbCBvbGRfcGFyc2VyX2V4biA6IHQgLT4gWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG5cbiAgICB2YWwgcmFpc2UgOiBSZWFzb24udCAtPiBQb3NpdGlvbnMucG9zIC0+IGF0X2VvZjpib29sIC0+IGF0b21fYnVmZmVyOkJ1ZmZlci50IC0+ICdhXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VfZXJyb3JfaW50ZlxuXG50eXBlIHQgPVxuICB7IHBvc2l0aW9uIDogUG9zaXRpb25zLnBvc1xuICA7IG1lc3NhZ2UgOiBzdHJpbmdcbiAgOyBvbGRfcGFyc2VyX2V4biA6IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuICB9XG5cbmxldCBzZXhwX29mX3QgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gPSBfIH0gOiBTZXhwLnQgPVxuICBMaXN0XG4gICAgWyBMaXN0IFsgQXRvbSBcInBvc2l0aW9uXCI7IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBwb3NpdGlvbiBdXG4gICAgOyBMaXN0IFsgQXRvbSBcIm1lc3NhZ2VcIjsgc2V4cF9vZl9zdHJpbmcgbWVzc2FnZSBdXG4gICAgXVxuOztcblxubGV0IHBvc2l0aW9uIHQgPSB0LnBvc2l0aW9uXG5sZXQgbWVzc2FnZSB0ID0gdC5tZXNzYWdlXG5sZXQgb2xkX3BhcnNlcl9leG4gdCA9IHQub2xkX3BhcnNlcl9leG5cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgcG9zID0gcG9zaXRpb24gdCBpblxuICBsZXQgbXNnID0gbWVzc2FnZSB0IGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlciAlZDpcXG5FcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XFxuJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgcG9zLmxpbmVcbiAgICBwb3MuY29sXG4gICAgbXNnXG47O1xuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhcnNlX2Vycm9yLm1sLlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgKHJlYXNvbiA6IFJlYXNvbi50KSBwb3NpdGlvbiB+YXRfZW9mIH5hdG9tX2J1ZmZlciA9XG4gIGxldCBtZXNzYWdlID1cbiAgICAoKiBUaGVzZSBtZXNzYWdlcyB3aGVyZSBjaG9vc2VuIHN1Y2ggdGhhdCB3ZSBjYW4gYnVpbGQgdGhlIHZhcmlvdXMgU2V4cGxpYiBwYXJzaW5nXG4gICAgICAgZnVuY3Rpb25zIG9uIHRvcCBvZiBQYXJzZXhwIGFuZCBrZWVwIHRoZSBzYW1lIGV4Y2VwdGlvbnMuXG5cbiAgICAgICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMsIGEgc2ltcGxlIGxheWVyIG9uIHRvcCBvZiBwYXJzZXhwIHRvIGltcGxlbWVudCB0aGVcbiAgICAgICBzZXhwbGliIEFQSSBpcyBwYXNzaW5nIGFsbCB0aGUgc2V4cGxpYiB0ZXN0cy5cblxuICAgICAgIE5vdGUgdGhhdCBwYXJzZXhwIG1hdGNoZXMgdGhlIHNlbWFudGljIG9mIFNleHAucGFyc2Ugd2hpY2ggaXMgc2xpZ2h0bHlcbiAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb2NhbWxsZXgvb2NhbWx5YWNjIGJhc2VkIHBhcnNlciBvZiBTZXhwbGliLiBUaGUgbGF0dGVyIG9uZVxuICAgICAgIGlzIGxlc3MgdGVzdGVkIGFuZCBhc3N1bWVkIHRvIGJlIGxlc3MgdXNlZC4gKilcbiAgICBtYXRjaCByZWFzb24gd2l0aFxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZyAtPiBcInVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nXCJcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50IC0+IFwidW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRcIlxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZSAtPiBcImVzY2FwZSBzZXF1ZW5jZSBpbiBxdW90ZWQgc3RyaW5nIG91dCBvZiByYW5nZVwiXG4gICAgfCBVbmNsb3NlZF9wYXJlbiAtPiBcInVuY2xvc2VkIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBpbnB1dFwiXG4gICAgfCBUb29fbWFueV9zZXhwcyAtPiBcInMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhXCJcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZCAtPiBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnKSdcIlxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tIC0+XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCJcbiAgICAgIHRoZW4gXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCJcbiAgICAgIGVsc2UgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCJcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHAgLT4gXCJ1bnRlcm1pbmF0ZWQgc2V4cCBjb21tZW50XCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyIC0+XG4gICAgICBpZiBhdF9lb2ZcbiAgICAgIHRoZW4gXCJ1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgICAgZWxzZSBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0IC0+IFwibm8gcy1leHByZXNzaW9uIGZvdW5kIGluIGlucHV0XCJcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUGFyc2VyX2F1dG9tYXRvbjogcGFyc2VyIGlzIGRlYWRcIlxuICBpblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPVxuICAgIG1hdGNoIHJlYXNvbiwgYXRfZW9mIHdpdGhcbiAgICB8IFRvb19tYW55X3NleHBzLCBfIHwgXywgdHJ1ZSAtPiBgRmFpbHVyZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tLCBfXG4gICAgICB3aGVuIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIiAtPiBgRmFpbHVyZVxuICAgIHwgXyAtPiBgUGFyc2VfZXJyb3JcbiAgaW5cbiAgcmFpc2UgKFBhcnNlX2Vycm9yIHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuIH0pXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID0gb2xkX3BhcnNlcl9leG5cbiAgbGV0IHJhaXNlID0gcmFpc2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEF1dG9tYXRvbl9zdGF0ZVxub3BlbiBTdGF0ZVxuXG5sZXQgcmFpc2VfZXJyb3IgOiB0eXBlIGEgYi4gKGEsIGIpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IF8gPVxuICBmdW4gc3RhdGUgfmF0X2VvZiByZWFzb24gLT5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBQYXJzZV9lcnJvci5Qcml2YXRlLnJhaXNlXG4gICAgcmVhc29uXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbiAgICB+YXRfZW9mXG4gICAgfmF0b21fYnVmZmVyOnN0YXRlLmF0b21fYnVmZmVyXG47O1xuXG50eXBlIG5vbnJlYyBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLkNvbnRleHQudCA9XG4gIHwgU2V4cF9jb21tZW50XG4gIHwgU2V4cFxuXG5sZXQgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5jb250ZXh0XG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gJ3MgLT4gJ3NcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbmVuZFxuXG5tb2R1bGUgRXBzaWxvbiA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiAncyAtPiAnc1xuXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmRcblxubGV0IGN1cnJlbnRfcG9zID8oZGVsdGEgPSAwKSBzdGF0ZSA6IFBvc2l0aW9ucy5wb3MgPVxuICBsZXQgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0ICsgZGVsdGEgaW5cbiAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXI7IGNvbCA9IG9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXQ7IG9mZnNldCB9XG47O1xuXG5sZXQgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSB4ID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIHhcbmxldCBhZHZhbmNlIHN0YXRlID0gc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIDFcblxubGV0IGFkdmFuY2VfZW9sIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIGxldCBuZXdsaW5lX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICBzdGF0ZS5vZmZzZXQgPC0gbmV3bGluZV9vZmZzZXQgKyAxO1xuICBzdGF0ZS5ib2xfb2Zmc2V0IDwtIHN0YXRlLm9mZnNldDtcbiAgc3RhdGUubGluZV9udW1iZXIgPC0gc3RhdGUubGluZV9udW1iZXIgKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlID0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aFxuXG5sZXQgYWRkX3Rva2VuX2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgc3RhY2tcbjs7XG5cbmxldCBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBpc19pZ25vcmluZyBzdGF0ZSA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHAgLT4gZmFsc2VcbiAgfCBTZXhwX2NvbW1lbnQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX25vdF9pZ25vcmluZyBzdGF0ZSA9IG5vdCAoaXNfaWdub3Jpbmcgc3RhdGUpXG5cbmxldCBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlID1cbiAgbGV0IGlzX3NpbmdsZSA9XG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBTaW5nbGUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBpc19zaW5nbGUgJiYgc3RhdGUuZnVsbF9zZXhwcyA+IDAgJiYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBUb29fbWFueV9zZXhwc1xuOztcblxubGV0IGFkZF9wb3Mgc3RhdGUgfmRlbHRhID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0ICsgZGVsdGEpXG47O1xuXG5sZXQgYWRkX2ZpcnN0X2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgY2hhcjtcbiAgKCogRm9yIG5vbi1xdW90ZWQgYXRvbXMsIHdlIHNhdmUgYm90aCBwb3NpdGlvbnMgYXQgdGhlIGVuZC4gV2UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgdGhlXG4gICAgIHN0YXJ0IHBvc2l0aW9uIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBhbmQgdGhlIGF0b20gbGVuZ3RoIGZvciBub24tcXVvdGVkIGF0b21zLlxuXG4gICAgIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0byBkZXRlY3Qgc2luZ2xlIGNoYXJhY2F0ZXIgYXRvbXMgZm9yIHdoaWNoIHdlIG5lZWQgdG9cbiAgICAgc2F2ZSB0aGUgcG9zaXRpb24gdHdpY2UuICopXG4gIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJyMnO1xuICBzdGFja1xuOztcblxubGV0IHN0YXJ0X3F1b3RlZF9zdHJpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICdcIic7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2VzY2FwZWQgc3RhdGUgYyBzdGFjayA9XG4gIGxldCBjJyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnbicgLT4gJ1xcbidcbiAgICB8ICdyJyAtPiAnXFxyJ1xuICAgIHwgJ2InIC0+ICdcXGInXG4gICAgfCAndCcgLT4gJ1xcdCdcbiAgICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1wiJyAtPiBjXG4gICAgfCBfIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xcXFwnO1xuICAgICAgY1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYyc7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xccic7XG4gIHN0YWNrXG47O1xuXG5sZXQgZGVjX3ZhbCBjID0gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG5cbmxldCBoZXhfdmFsIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICB8ICdhJyAuLiAnZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgfCBfIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG47O1xuXG5sZXQgYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBvcGVuaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIE9wZW4gc3RhY2sgZWxzZSBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICB0aGVuIChcbiAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBPcGVuIHN0YWNrKVxuICAgIGVsc2Ugc3RhY2tcbiAgfCBDc3QgLT4gT3BlbiAoY3VycmVudF9wb3Mgc3RhdGUsIHN0YWNrKVxuOztcblxubGV0IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0XG4gICAgc3RhdGUudXNlcl9zdGF0ZVxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG47O1xuXG5sZXQgcmVzZXRfcG9zaXRpb25zIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHAgLT4gKClcbiAgfCBDc3QgLT4gKClcbjs7XG5cbmxldCB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gIHwgU2luZ2xlIHwgTWFueSAtPiBzdGFja1xuICB8IEVhZ2VyIHsgZ290X3NleHAgPSBmOyBfIH0gLT5cbiAgICAoKiBNb2RpZnkgdGhlIG9mZnNldCBzbyB0aGF0IFtmXSBnZXQgYSBzdGF0ZSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50XG4gICAgICAgcy1leHByZXNzaW9uICopXG4gICAgbGV0IHNhdmVkX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICAgIHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyBkZWx0YTtcbiAgICBsZXQgc2F2ZWRfZnVsbF9zZXhwcyA9IHN0YXRlLmZ1bGxfc2V4cHMgaW5cbiAgICAobWF0Y2ggZiBzdGF0ZSBzdGFjayB3aXRoXG4gICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gICAgICAgcmFpc2UgZVxuICAgICB8IHN0YWNrIC0+XG4gICAgICAgKCogVGhpcyBhc3NlcnQgaXMgbm90IGEgZnVsbCBwcm90ZWN0aW9uIGFnYWluc3QgdGhlIHVzZXIgbXV0YXRpbmcgdGhlIHN0YXRlIGJ1dFxuICAgICAgICAgIGl0IHNob3VsZCBjYXRjaCBtb3N0IGNhc2VzLiAqKVxuICAgICAgIGFzc2VydCAoc3RhdGUub2Zmc2V0ID0gc2F2ZWRfb2Zmc2V0ICsgZGVsdGEgJiYgc3RhdGUuZnVsbF9zZXhwcyA9IHNhdmVkX2Z1bGxfc2V4cHMpO1xuICAgICAgIHN0YXRlLm9mZnNldCA8LSBzYXZlZF9vZmZzZXQ7XG4gICAgICAgcmVzZXRfcG9zaXRpb25zIHN0YXRlO1xuICAgICAgIHN0YWNrKVxuOztcblxubGV0IGlzX3RvcF9sZXZlbCBzdGF0ZSA9IGlzX25vdF9pZ25vcmluZyBzdGF0ZSAmJiBzdGF0ZS5kZXB0aCA9IDBcblxubGV0IGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZSB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgZWxzZSBzdGFja1xuOztcblxubGV0IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IF90bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPiBzdGF0ZS5kZXB0aCAtPlxuICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID0gc3RhdGUuZGVwdGggLT5cbiAgICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSB0bDtcbiAgICB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNleHBfYWRkZWQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHMgLT4gZGVsdGE6aW50IC0+IHMgPVxuICBmdW4gc3RhdGUgc3RhY2sgfmRlbHRhIC0+XG4gIGxldCBpc19jb21tZW50ID0gbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlIGluXG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZVxuICB0aGVuIChcbiAgICBpZiBub3QgaXNfY29tbWVudCB0aGVuIHN0YXRlLmZ1bGxfc2V4cHMgPC0gc3RhdGUuZnVsbF9zZXhwcyArIDE7XG4gICAgaWYgKG5vdCBpc19jb21tZW50KVxuICAgICAgIHx8XG4gICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICAgfCBDc3QgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YVxuICAgIGVsc2Ugc3RhY2spXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0IGFjYyA6IEF1dG9tYXRvbl9zdGFjay50IC0+IEF1dG9tYXRvbl9zdGFjay50ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBPcGVuIHN0YWNrIC0+IFNleHAgKExpc3QgYWNjLCBzdGFjaylcbiAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbWFrZV9saXN0IChzZXhwIDo6IGFjYykgc3RhY2tcbjs7XG5cbmxldCBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCAoc3RhY2sgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KVxuICA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPVxuICBtYXRjaCBzdGFjayB3aXRoXG4gIHwgSW5fc2V4cF9jb21tZW50IHIgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnQgeyByIHdpdGggcmV2X2NvbW1lbnRzID0gY29tbWVudCA6OiByLnJldl9jb21tZW50cyB9XG4gIHwgXyAtPiBUX29yX2NvbW1lbnQgKENvbW1lbnQgY29tbWVudCwgc3RhY2spXG47O1xuXG5sZXQgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgSW5fc2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgcmV2X2NvbW1lbnRzOyBzdGFjayB9IC0+XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgU2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgY29tbWVudHMgPSBMaXN0LnJldiByZXZfY29tbWVudHM7IHNleHAgfVxuICAgICAgaW5cbiAgICAgIGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrXG4gICAgfCBzdGFjayAtPiBUX29yX2NvbW1lbnQgKFNleHAgc2V4cCwgc3RhY2spXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdF9jc3QgZW5kX3BvcyBhY2MgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbWFrZV9saXN0X2NzdCBlbmRfcG9zICh0IDo6IGFjYykgc3RhY2tcbiAgICB8IE9wZW4gKHN0YXJ0X3Bvcywgc3RhY2spIC0+XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gTGlzdCB7IGxvYyA9IHsgc3RhcnRfcG9zOyBlbmRfcG9zIH07IGVsZW1lbnRzID0gYWNjIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gICAgfCBFbXB0eSB8IEluX3NleHBfY29tbWVudCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNsb3NpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMFxuICB0aGVuIChcbiAgICBsZXQgc3RhY2sgOiBzID1cbiAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgICAgKCogTm90ZSB3ZSBzdG9yZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZSBpbiBbUG9zaXRpb25zLnRdLCBzbyB3ZSB1c2UgW2RlbHRhOjBdLFxuICAgICAgICAgICB3aGlsZSBpbiB0aGUgW0NzdF0gY2FzZSB3ZSBzYXZlIGRpcmVjdGx5IHRoZSBmaW5hbCByYW5nZXMsIHNvIHdlIHVzZVxuICAgICAgICAgICBbZGVsdGE6MV0uICopXG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIHN0YWNrXG4gICAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gbWFrZV9saXN0IFtdIHN0YWNrIGVsc2Ugc3RhY2tcbiAgICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgICBtYWtlX2xpc3QgW10gc3RhY2spXG4gICAgICAgIGVsc2Ugc3RhY2tcbiAgICAgIHwgQ3N0IC0+IG1ha2VfbGlzdF9jc3QgKGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YToxKSBbXSBzdGFja1xuICAgIGluXG4gICAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggLSAxO1xuICAgIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gIGVsc2UgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbjs7XG5cbmxldCBtYWtlX2xvYyA/KGRlbHRhID0gMCkgKHN0YXRlIDogKEF1dG9tYXRvbl9zdGF0ZS5Gb3JfY3N0LnQsIF8pIEF1dG9tYXRvbl9zdGF0ZS50KVxuICA6IFBvc2l0aW9ucy5yYW5nZVxuICA9XG4gIHsgc3RhcnRfcG9zID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3M7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGEgfVxuOztcblxuKCogVGhpcyBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbiBleGFjdGx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYVxuICAgbm9uLXF1b3RlZCBhdG9tICopXG5sZXQgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b20gPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBhdG9tIGluXG4gIGlmIGxlbiA9IDFcbiAgdGhlbiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfdHdpY2Ugc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgLSAxKVxuICBlbHNlIChcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLWxlbik7XG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKSlcbjs7XG5cbmxldCBlcHNfcHVzaF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGxvYyA6IFBvc2l0aW9ucy5yYW5nZSA9XG4gICAgICAgIHsgc3RhcnRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgICAgIDsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTowXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gQXRvbSB7IGxvYzsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzdHIgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IHB1c2hfcXVvdGVkX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1wiJztcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPVxuICAgICAgICBBdG9tIHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgcyB9XG4gICAgICBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MVxuOztcblxubGV0IHN0YXJ0X3NleHBfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSBzdGF0ZS5kZXB0aCA6OiBzdGF0ZS5pZ25vcmluZ19zdGFjaztcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgSW5fc2V4cF9jb21tZW50XG4gICAgICB7IGhhc2hfc2VtaV9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTsgcmV2X2NvbW1lbnRzID0gW107IHN0YWNrIH1cbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAxXG4gICAgdGhlbiAoXG4gICAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnIycpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG47O1xuXG5sZXQgZW5kX2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIC0gMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGNvbW1lbnQgPSBzIH1cbiAgICAgIGluXG4gICAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gICAgZWxzZSBzdGFja1xuOztcblxubGV0IHN0YXJ0X2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGVuZF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZTsgY29tbWVudCA9IHMgfSBpblxuICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBlcHNfZW9pX2NoZWNrIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFVuY2xvc2VkX3BhcmVuO1xuICBpZiBpc19pZ25vcmluZyBzdGF0ZSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwO1xuICBpZiBzdGF0ZS5mdWxsX3NleHBzID0gMFxuICB0aGVuIChcbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IE1hbnkgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZTsgXyB9IC0+ICgpXG4gICAgfCBTaW5nbGUgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSB0cnVlOyBfIH0gLT5cbiAgICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBOb19zZXhwX2ZvdW5kX2luX2lucHV0KTtcbiAgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19hdG9tXG4gIHwgUGFyc2luZ19saXN0XG4gIHwgUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX2F0b20gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19hdG9tXCJcbiAgICB8IFBhcnNpbmdfbGlzdCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2xpc3RcIlxuICAgIHwgUGFyc2luZ19zZXhwX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19zZXhwX2NvbW1lbnRcIlxuICAgIHwgUGFyc2luZ19ibG9ja19jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYmxvY2tfY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIG1hdGNoIHNleHBfb2ZfdCB0IHdpdGhcbiAgfCBBdG9tIHMgLT4gc1xuICB8IExpc3QgXyAtPiBmYWlsd2l0aCBcIkJVRzogW3NleHBfb2ZfdF0gcmV0dXJuZWQgYSBbTGlzdCBfXVwiXG47O1xuIiwib3BlbiBBdXRvbWF0b25fYWN0aW9uXG5cbmxldCByYWlzZSA9IEF1dG9tYXRvbl9hY3Rpb24ucmFpc2VfZXJyb3JcblxudHlwZSB1J1xudHlwZSBzJ1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3RhYmxlcy5wcmludF9jb2RlICgpICopXG5sZXQgdHJfMDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAwX2YgfVxuXG5sZXQgdHJfMDFfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDFfZiB9XG5cbmxldCB0cl8wMl9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDJfZiB9XG5cbmxldCB0cl8wM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wM19mIH1cblxubGV0IHRyXzA0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA0X2YgfVxuXG5sZXQgdHJfMDVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDVfZiB9XG5cbmxldCB0cl8wNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNl9mIH1cblxubGV0IHRyXzA3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA3X2YgfVxuXG5sZXQgdHJfMDhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOF9mIH1cblxubGV0IHRyXzA5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOV9mIH1cbmxldCB0cl8xMF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl8xMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTBfZiB9XG5sZXQgdHJfMTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl8xMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTFfZiB9XG5cbmxldCB0cl8xMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMl9mIH1cblxubGV0IHRyXzEzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTNfZiB9XG5cbmxldCB0cl8xNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNF9mIH1cblxubGV0IHRyXzE1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTVfZiB9XG5cbmxldCB0cl8xNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE2X2YgfVxuXG5sZXQgdHJfMTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTdfZiB9XG5cbmxldCB0cl8xOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE4X2YgfVxuXG5sZXQgdHJfMTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOV9mIH1cblxubGV0IHRyXzIwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMF9mIH1cblxubGV0IHRyXzIxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIxX2YgfVxuXG5sZXQgdHJfMjJfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG47O1xuXG5sZXQgdHJfMjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIyX2YgfVxuXG5sZXQgdHJfMjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIzX2YgfVxuXG5sZXQgdHJfMjRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjRfZiB9XG5cbmxldCB0cl8yNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI1X2YgfVxuXG5sZXQgdHJfMjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjZfZiB9XG5cbmxldCB0cl8yN19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI3X2YgfVxuXG5sZXQgdHJfMjhfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjhfZiB9XG5cbmxldCB0cl8yOV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI5X2YgfVxuXG5sZXQgdHJfMzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMF9mIH1cblxubGV0IHRyXzMxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMxX2YgfVxuXG5sZXQgdHJfMzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMl9mIH1cblxubGV0IHRyXzMzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzNfZiB9XG5cbmxldCB0cl8zNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9zZXhwX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM0X2YgfVxuXG5sZXQgdHJfMzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM1X2YgfVxuXG5sZXQgdHJfMzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM2X2YgfVxuXG5sZXQgdHJfMzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zN19mIH1cblxubGV0IHRyXzM4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM4X2YgfVxuXG5sZXQgdHJfMzlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM5X2YgfVxuXG5sZXQgdHJfNDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2VzY2FwZWQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQwX2YgfVxuXG5sZXQgdHJfNDFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDFfZiB9XG5cbmxldCB0cl80Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQyX2YgfVxuXG5sZXQgdHJfNDNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQzX2YgfVxuXG5sZXQgdHJfNDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NF9mIH1cblxubGV0IHRyXzQ1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDVfZiB9XG5cbmxldCB0cl80Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDZfZiB9XG5cbmxldCB0cl80N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ3X2YgfVxuXG5sZXQgdHJfNDhfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuOztcblxubGV0IHRyXzQ4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OF9mIH1cblxubGV0IHRyXzQ5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OV9mIH1cblxubGV0IHRyXzUwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTBfZiB9XG5cbmxldCB0cl81MV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG47O1xuXG5sZXQgdHJfNTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUxX2YgfVxuXG5sZXQgdHJfNTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUyX2YgfVxuXG5sZXQgdHJfNTNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81M19mIH1cblxubGV0IHRyXzU0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NF9mIH1cblxubGV0IHRyXzU1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTVfZiB9XG5cbmxldCB0cl81Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU2X2YgfVxuXG5sZXQgdHJfNTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTdfZiB9XG5cbmxldCB0cl81OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNThfZiB9XG5cbmxldCB0cl81OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU5X2YgfVxuXG5sZXQgdHJfNjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjBfZiB9XG5cbmxldCB0cl82MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYxX2YgfVxuXG5sZXQgdHJfNjJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Ml9mIH1cblxubGV0IHRyXzYzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjNfZiB9XG5cbmxldCB0cl82NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgKGlmIGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPD4gMCB0aGVuIDE2IGVsc2UgMCk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY0X2YgfVxuXG5sZXQgdHJfNjVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjVfZiB9XG5cbmxldCB0cl82Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY2X2YgfVxuXG5sZXQgdHJfNjdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjdfZiB9XG5cbmxldCB0cl82OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY4X2YgfVxuXG5sZXQgdHJfNjlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY5X2YgfVxuXG5sZXQgdHJfNzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MF9mIH1cblxubGV0IHRyXzcxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzFfZiB9XG5cbmxldCB0cl83Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcyX2YgfVxuXG5sZXQgdHJfNzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzczIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83M19mIH1cblxubGV0IHRyXzc0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NF9mIH1cblxubGV0IHRyXzc1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzVfZiB9XG5cbmxldCB0cl83Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc2X2YgfVxuXG5sZXQgdHJfNzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83N19mIH1cblxubGV0IHRyXzc4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc4X2YgfVxubGV0IHRyX2VvaV8wMF9mIHN0YXRlIHN0YWNrID0gZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xubGV0IHRyX2VvaV8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDBfZiB9XG5sZXQgdHJfZW9pXzAxX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyX2VvaV8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDFfZiB9XG5sZXQgdHJfZW9pXzAyX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfZW9pXzAyIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMl9mIH1cblxubGV0IHRyX2VvaV8wM19mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzAzIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wM19mIH1cblxubGV0IHRyX2VvaV8wNF9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA0IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNF9mIH1cblxubGV0IHRyX2VvaV8wNV9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA1IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNV9mIH1cbmxldCB0cl9lb2lfMDZfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbmxldCB0cl9lb2lfMDYgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA2X2YgfVxubGV0IHRyX2VvaV8wN19mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxubGV0IHRyX2VvaV8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDdfZiB9XG5cbmxldCB0cmFuc2l0aW9ucyA9XG4gIFt8IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAyXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAzXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAwXG4gICA7IHRyXzA0XG4gICA7IHRyXzA1XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA2XG4gICA7IHRyXzA3XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA4XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA5XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzAyXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI0XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI1XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI4XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI5XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI2XG4gICA7IHRyXzMwXG4gICA7IHRyXzMxXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzMyXG4gICA7IHRyXzMzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM0XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM1XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM3XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM4XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM5XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQxXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQyXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ0XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQxXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ2XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ3XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU2XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU0XG4gICA7IHRyXzU3XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU4XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzY0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzM1XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY1XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY2XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY3XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY4XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcwXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzY3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzc4XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gIHxdXG47O1xuXG5sZXQgdHJhbnNpdGlvbnNfZW9pID1cbiAgW3wgdHJfZW9pXzAwXG4gICA7IHRyX2VvaV8wMVxuICAgOyB0cl9lb2lfMDJcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzA0XG4gICA7IHRyX2VvaV8wNVxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgfF1cbjs7XG5cbmxldCBvbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcyA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50IGFycmF5ID1cbiAgW3wgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gIHxdXG47O1xuKCokKilcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN0YWNrID0gQXV0b21hdG9uX3N0YWNrXG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZVxuXG5sZXQgZmVlZCAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgY2hhciAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgaWR4ID0gKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSBsc2wgOCkgbG9yIENoYXIuY29kZSBjaGFyIGluXG4gIEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnMuKGlkeCkuZiBzdGF0ZSBjaGFyIHN0YWNrXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGZlZWRfZW9pICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgc3RhY2sgPSBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zX2VvaS4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKS5mIHN0YXRlIHN0YWNrIGluXG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHBfY29tbWVudCAtPiBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFNleHAgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIEF1dG9tYXRvbl90YWJsZXMub2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSlcbiAgICAgICAsIGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSApXG4gICAgIHdpdGhcbiAgICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIHRydWUgLT4gUGFyc2luZ19saXN0XG4gICAgIHwgcywgXyAtPiBzKVxuOztcblxubGV0IHJlYyBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3Vic3RyaW5nXCI7XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdWJieXRlcyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3ViYnl0ZXNcIjtcbiAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBzdGFjayA9XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG47O1xuXG5sZXQgZmVlZF9ieXRlcyBzdGF0ZSBzdHIgc3RhY2sgPSBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoQnl0ZXMubGVuZ3RoIHN0cilcblxubGV0IGVtcHR5X3N0YWNrIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gcyA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAtPiBTdGFjay5lbXB0eVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gU3RhY2suZW1wdHlcbiAgfCBQb3NpdGlvbnMgLT4gU3RhY2suSnVzdF9wb3NpdGlvbnMuZW1wdHlcbiAgfCBDc3QgLT4gU3RhY2suRm9yX2NzdC5lbXB0eVxuOztcblxubGV0IG9mX3N1YnN0cmluZyAodHlwZSB1IHMpIChtb2RlIDogKHUsIHMpIE1vZGUudCkgKGtpbmQgOiAodSwgcykgS2luZC50KSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzdGF0ZSA9IGNyZWF0ZSBtb2RlIGtpbmQgaW5cbiAgbGV0IHN0YWNrID0gZmVlZF9zdWJzdHJpbmcgc3RhdGUgcyB+cG9zIH5sZW4gKGVtcHR5X3N0YWNrIGtpbmQpIGluXG4gIHN0YXRlLCBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IHVzZXJfZXhuIDogZXhuXG4gIDsgc3ViX3NleHAgOiBTZXhwLnRcbiAgOyBsb2NhdGlvbiA6IFBvc2l0aW9ucy5yYW5nZSBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuIHsgdXNlcl9leG4gPSB1c2VyX2V4bl9fMDAyXzsgc3ViX3NleHAgPSBzdWJfc2V4cF9fMDA0XzsgbG9jYXRpb24gPSBsb2NhdGlvbl9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NhdGlvbl9fMDA2XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY2F0aW9uXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBTZXhwLnNleHBfb2ZfdCBzdWJfc2V4cF9fMDA0XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN1Yl9zZXhwXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2V4biB1c2VyX2V4bl9fMDAyXyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVzZXJfZXhuXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB1c2VyX2V4biB0ID0gdC51c2VyX2V4blxubGV0IHN1Yl9zZXhwIHQgPSB0LnN1Yl9zZXhwXG5sZXQgbG9jYXRpb24gdCA9IHQubG9jYXRpb25cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgbGluZSwgc3RhcnQsIHN0b3AgPVxuICAgIG1hdGNoIHQubG9jYXRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAxLCAwLCAwXG4gICAgfCBTb21lIHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0gLT5cbiAgICAgIHN0YXJ0X3Bvcy5saW5lLCBzdGFydF9wb3MuY29sLCBzdGFydF9wb3MuY29sICsgZW5kX3Bvcy5vZmZzZXQgLSBzdGFydF9wb3Mub2Zmc2V0XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBjb252ZXJzaW9uIGVycm9yO1xcblxcXG4gICAgIGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBsaW5lXG4gICAgc3RhcnRcbiAgICBzdG9wXG4gICAgKFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCB0LnVzZXJfZXhuKVxuOztcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDhfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA5XyA9IHNleHBfb2ZfdCBhcmcwX18wMDhfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZl9zZXhwX2Vycm9yLm1sLk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA5XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwIH5sb2NhdGlvbiA9XG4gIHJhaXNlIChPZl9zZXhwX2Vycm9yIHsgdXNlcl9leG47IHN1Yl9zZXhwOyBsb2NhdGlvbiB9KVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNlX2Vycm9yIG9mIFBhcnNlX2Vycm9yLnRcbiAgfCBPZl9zZXhwX2Vycm9yIG9mIE9mX3NleHBfZXJyb3IudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gUGFyc2VfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA0XyA9IE9mX3NleHBfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA0XyBdXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQYXJzZV9lcnJvciBlIC0+IFBhcnNlX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbiAgfCBPZl9zZXhwX2Vycm9yIGUgLT4gT2Zfc2V4cF9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlcl9pbnRmXG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5sZXQga2luZF90b19zdGFja1xuICA6IHR5cGUgc3RhY2suXG4gICAgKCdzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQgLT4gKG1vZHVsZSBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICA9XG4gIGZ1biAodHlwZSBzdGF0ZSkgKGtpbmQgOiAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50KSAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBTZXhwIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBQb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suSnVzdF9wb3NpdGlvbnMgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IENzdCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0IDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbjs7XG5cbmxldCBtYWtlICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtb2RlIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZSlcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyAoKSA9IEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgbW9kZSBraW5kXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IHN0b3Agc3RhdGUgPSBBLnNldF9lcnJvcl9zdGF0ZSBzdGF0ZVxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBtYWtlX3ZhbHVlIHN0YXRlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrKVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgPVxuICAgICAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlICgpIGluXG4gICAgICBmZWVkX2VvaSBzdGF0ZSAoZmVlZF9zdHJpbmcgc3RhdGUgc3RyIFN0YWNrLmVtcHR5KVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciA9XG4gICAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciBlXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IG1ha2VfZWFnZXIgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNfZWFnZXIgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZSlcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICBtb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBSZWFkX29ubHlcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zID8obm9fc2V4cF9pc19lcnJvciA9IGZhbHNlKSBmID1cbiAgICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHN0YWNrID1cbiAgICAgICAgICBsZXQgcGFyc2VkX3ZhbHVlID0gbWFrZV92YWx1ZSBzdGF0ZSBzdGFjayBpblxuICAgICAgICAgIGYgc3RhdGUgcGFyc2VkX3ZhbHVlO1xuICAgICAgICAgIFN0YWNrLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgKEVhZ2VyIHsgZ290X3NleHA7IG5vX3NleHBfaXNfZXJyb3IgfSkga2luZFxuICAgICAgOztcblxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IHN0b3AgdCA9IEEuc2V0X2Vycm9yX3N0YXRlIHRcbiAgICAgIGxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgdCA9IEF1dG9tYXRvbi5vbGRfcGFyc2VyX2NvbnRfc3RhdGUgdFxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBpZ25vcmUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2sgOiBTdGFjay50KVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBtb2R1bGUgTGV4YnVmX2NvbnN1bWVyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGF0ZS50XG5cbiAgICAgIGV4Y2VwdGlvbiBHb3Rfc2V4cCBvZiBwYXJzZWRfdmFsdWUgKiBQb3NpdGlvbnMucG9zXG5cbiAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBwYXJzZWRfdmFsdWUgPVxuICAgICAgICByYWlzZV9ub3RyYWNlIChHb3Rfc2V4cCAocGFyc2VkX3ZhbHVlLCBTdGF0ZS5wb3NpdGlvbiBzdGF0ZSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlICgpID0gU3RhdGUuY3JlYXRlIGdvdF9zZXhwXG5cbiAgICAgIGxldCBwb3Nfb2ZfbGV4YnVmIGxleGJ1ZiA9XG4gICAgICAgIGxldCBwID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIGluXG4gICAgICAgIHsgUG9zaXRpb25zLmxpbmUgPSBwLnBvc19sbnVtOyBjb2wgPSBwLnBvc19jbnVtIC0gcC5wb3NfYm9sOyBvZmZzZXQgPSBwLnBvc19jbnVtIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB1cGRhdGVfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAocG9zIDogUG9zaXRpb25zLnBvcykgPVxuICAgICAgICBsZXQgcCA9IHBvcy5vZmZzZXQgLSBsZXhidWYubGV4X2Fic19wb3MgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBwO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBwO1xuICAgICAgICBsZXhidWYubGV4X2N1cnJfcFxuICAgICAgICA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5saW5lXG4gICAgICAgICAgIDsgcG9zX2NudW0gPSBwb3Mub2Zmc2V0XG4gICAgICAgICAgIDsgcG9zX2JvbCA9IHBvcy5vZmZzZXQgLSBwb3MuY29sXG4gICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmVlZF9sZXhidWYgdCAobGV4YnVmIDogTGV4aW5nLmxleGJ1Zikgc3RhY2sgPVxuICAgICAgICBsZXQgc3RhY2sgPVxuICAgICAgICAgIGZlZWRfc3ViYnl0ZXNcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgICAgICAgICBzdGFja1xuICAgICAgICAgICAgfnBvczpsZXhidWYubGV4X2N1cnJfcG9zXG4gICAgICAgICAgICB+bGVuOihsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X2N1cnJfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBpZiBub3QgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXhidWYucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgICAgIGZlZWRfbGV4YnVmIHQgbGV4YnVmIHN0YWNrKVxuICAgICAgICBlbHNlIGZlZWRfZW9pIHQgc3RhY2tcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9nZW4gdCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgICAgICBBLnJlc2V0IHQgfnBvczoocG9zX29mX2xleGJ1ZiBsZXhidWYpO1xuICAgICAgICBtYXRjaCBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBTdGFjay5lbXB0eSB3aXRoXG4gICAgICAgIHwgKCkgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IGV4Y2VwdGlvbiBHb3Rfc2V4cCAocGFyc2VkX3ZhbHVlLCBwb3MpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgcG9zO1xuICAgICAgICAgIFNvbWUgcGFyc2VkX3ZhbHVlXG4gICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICByYWlzZSBleG5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXRfbm9fc2V4cF9pc19lcnJvciB0IHggPVxuICAgICAgICBtYXRjaCBBLm1vZGUgdCB3aXRoXG4gICAgICAgIHwgRWFnZXIgZSAtPiBlLm5vX3NleHBfaXNfZXJyb3IgPC0geFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2UgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IHRydWU7XG4gICAgICAgIG1hdGNoIHBhcnNlX2dlbiB0IGxleGJ1ZiB3aXRoXG4gICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5wYXJzZV9nZW46IE5vbmVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX29wdCB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgZmFsc2U7XG4gICAgICAgIHBhcnNlX2dlbiB0IGxleGJ1ZlxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb252X2ludGZcblxubW9kdWxlIE1ha2VcbiAgICAoTW9kZSA6IE1vZGUpXG4gICAgKFNleHBfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IE1vZGUucGFyc2VkX3NleHApXG4gICAgKFBvc2l0aW9uc19wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gUG9zaXRpb25zLnQpID1cbnN0cnVjdFxuICBsZXQgcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIH5zdWIgdXNlcl9leG4gPVxuICAgIGxldCBsb2NhdGlvbiA9IE1vZGUuZmluZCBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIH5zdWIgaW5cbiAgICBPZl9zZXhwX2Vycm9yLnJhaXNlIH51c2VyX2V4biB+c3ViX3NleHA6c3ViIH5sb2NhdGlvblxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmID1cbiAgICBsZXQgcGFyc2VkX3ZhbHVlID0gU2V4cF9wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+XG4gICAgICBsZXQgcG9zaXRpb25zID0gUG9zaXRpb25zX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgICAgcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzdHIgZiA6IChfLCBDb252X2Vycm9yLnQpIHJlc3VsdCA9XG4gICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiB3aXRoXG4gICAgfCB4IC0+IE9rIHhcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpXG4gIDs7XG5cbiAgbGV0IGNvbnZfZXhuIChwYXJzZWRfdmFsdWUsIHBvc2l0aW9ucykgZiA9XG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPiByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgY29udiB4IGYgPVxuICAgIG1hdGNoIGNvbnZfZXhuIHggZiB3aXRoXG4gICAgfCB4IC0+IE9rIHhcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciBlXG4gIDs7XG5cbiAgbGV0IGNvbnZfY29tYmluZSByZXN1bHQgZiA6IChfLCBDb252X2Vycm9yLnQpIHJlc3VsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBPayB4IC0+XG4gICAgICAobWF0Y2ggY29udiB4IGYgd2l0aFxuICAgICAgIHwgT2sgXyBhcyByIC0+IHJcbiAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udi5TXG5tb2R1bGUgdHlwZSBQYXJzZXIgPSBQYXJzZXIuU1xubW9kdWxlIHR5cGUgRWFnZXJfcGFyc2VyID0gUGFyc2VyLlNfZWFnZXJcblxubW9kdWxlIENvbnZfZXJyb3IgPSBDb252X2Vycm9yXG5tb2R1bGUgT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3Jcbm1vZHVsZSBPbGRfcGFyc2VyX2NvbnRfc3RhdGUgPSBPbGRfcGFyc2VyX2NvbnRfc3RhdGVcbm1vZHVsZSBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yXG5tb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5tb2R1bGUgQ3N0ID0gQ3N0XG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvci5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3JcblxubGV0IGNvbnN0IGMgXyA9IGNcblxubW9kdWxlIFNpbmdsZSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBTaW5nbGUgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKSlcbm1vZHVsZSBNYW55ID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIE1hbnkgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSkpXG5tb2R1bGUgRWFnZXIgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFNleHAgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKSlcblxubGV0IGFuZF9nZXRfcG9zaXRpb25zIGdldF9zZXhwIHN0YXRlIHN0YWNrID0gZ2V0X3NleHAgc3RhY2ssIEEucG9zaXRpb25zIHN0YXRlXG5cbmxldCBhbmRfcG9zaXRpb25zIG1vZGUgZ2V0X3NleHAgPVxuICBQYXJzZXIubWFrZSBTZXhwX3dpdGhfcG9zaXRpb25zIG1vZGUgKGFuZF9nZXRfcG9zaXRpb25zIGdldF9zZXhwKVxuOztcblxubW9kdWxlIFNpbmdsZV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIFNpbmdsZSBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSlcbm1vZHVsZSBNYW55X2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgTWFueSBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9hbmRfcG9zaXRpb25zID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlclxuICAgICAgICAgU2V4cF93aXRoX3Bvc2l0aW9uc1xuICAgICAgICAgKEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlIHw+IGFuZF9nZXRfcG9zaXRpb25zKSlcblxubGV0IGp1c3RfZ2V0X3Bvc2l0aW9ucyBzdGF0ZSAoKSA9IEEucG9zaXRpb25zIHN0YXRlXG5sZXQganVzdF9wb3NpdGlvbnMgbW9kZSA9IFBhcnNlci5tYWtlIFBvc2l0aW9ucyBtb2RlIGp1c3RfZ2V0X3Bvc2l0aW9uc1xuXG5tb2R1bGUgU2luZ2xlX2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBTaW5nbGUpXG5tb2R1bGUgTWFueV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgTWFueSlcbm1vZHVsZSBFYWdlcl9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgUG9zaXRpb25zIGp1c3RfZ2V0X3Bvc2l0aW9ucylcblxubGV0IGNzdCBtb2RlIGYgPSBQYXJzZXIubWFrZSBDc3QgbW9kZSAoY29uc3QgZilcblxubW9kdWxlIE1hbnlfY3N0ID0gKHZhbCBjc3QgTWFueSBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2NzdCA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgQ3N0IChmdW4gXyBzdGFjayAtPlxuICAgICBtYXRjaCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueSBzdGFjayB3aXRoXG4gICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcblxudHlwZSAnYSBpZCA9ICdhXG50eXBlIHNleHBfbGlzdCA9IFNleHAudCBsaXN0XG5cbm1vZHVsZSBDb252X3NpbmdsZSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2FcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnRcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX3BoeXNcbiAgICBlbmQpXG4gICAgKFNpbmdsZSlcbiAgICAoU2luZ2xlX2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55ID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYSBsaXN0XG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCB4IH5mKVxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcbiAgICBlbmQpXG4gICAgKE1hbnkpXG4gICAgKE1hbnlfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnlfYXRfb25jZSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2FcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50IGxpc3RcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcbiAgICBlbmQpXG4gICAgKE1hbnkpXG4gICAgKE1hbnlfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBBdXRvbWF0b24gPSBBdXRvbWF0b25cbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuICBtb2R1bGUgQXV0b21hdG9uX3N0YXRlID0gQXV0b21hdG9uX3N0YXRlXG4gIG1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbmVuZFxuIiwiKCogZm9yIGxleGluZyBwb3NpdGlvbnM6XG4gICAtIGxudW0gc3RhcnRzIGZyb20gMVxuICAgLSBjbnVtIHN0YXJ0cyBmcm9tIDBcbiAgIC0gcG9zX2JvbCBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgbGluZVxuXG4gICBmb3IgYWJzb2x1dGUgcG9zOlxuICAgLSByb3cgc3RhcnRzIGZyb20gMVxuICAgLSBjb2wgc3RhcnRzIGZyb20gMVxuXG4gICBmb3IgcmVsYXRpdmUgcG9zLCBvYnZpb3VzbHkgMCBtZWFucyBzYW1lIHBvc2l0aW9uXG4qKVxuXG4oKiBvcGVyYXRpb25zIHRoYXQgbWFrZSBzZW5zZSBmb3IgYm90aCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcG9zaXRpb25zICopXG5tb2R1bGUgUG9zID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByb3cgOiBpbnRcbiAgICA7IGNvbCA6IGludFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcm93OyBjb2wgfSA9IFR5cGUuQXRvbSAoUHJpbnRmLnNwcmludGYgXCIlZDolZFwiIHJvdyBjb2wpXG4gIGxldCBhZGQgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyArIHQyLnJvdzsgY29sID0gdDEuY29sICsgdDIuY29sIH1cbiAgbGV0IHN1YiB0MSB0MiA9IHsgcm93ID0gdDEucm93IC0gdDIucm93OyBjb2wgPSB0MS5jb2wgLSB0Mi5jb2wgfVxuXG4gIGxldCBjb21wYXJlIHsgcm93ID0gcjE7IGNvbCA9IGMxIH0geyByb3cgPSByMjsgY29sID0gYzIgfSA9XG4gICAgaWYgcjEgPSByMiB0aGVuIGMxIC0gYzIgZWxzZSByMSAtIHIyXG4gIDs7XG5cbiAgbGV0IGdlcSB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPj0gMFxuZW5kXG5cbm1vZHVsZSBSZWxhdGl2ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCB6ZXJvID0geyByb3cgPSAwOyBjb2wgPSAwIH1cbmVuZFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgb3JpZ2luID0geyByb3cgPSAxOyBjb2wgPSAxIH1cblxuICBsZXQgb2ZfbGV4aW5nIHsgTGV4aW5nLnBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbDsgcG9zX2ZuYW1lID0gXyB9ID1cbiAgICB7IHJvdyA9IHBvc19sbnVtOyBjb2wgPSBwb3NfY251bSAtIHBvc19ib2wgKyAxIH1cbiAgOztcblxuICBsZXQgZGlmZiA9IHN1YlxuZW5kXG4iLCIoKiogVHlwZSBvZiBhbm5vdGF0ZWQgUy1leHByZXNzaW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoUG9zIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAoKiogSW4gW0F0b20gKF8sIHMsIG9wdCldLCBbc10gaXMgdGhlIHVuZXNjYXBlZCBzdHJpbmcsIHRoYXQgaXMgdGhlIGFyZ3VtZW50IG9mXG4gICAgICAgIFtUeXBlLkF0b21dLiBXaGVuIFtvcHRdIGlzIGRlZmluZWQsIGl0IGlzIHRoZSBzb3VyY2Ugc3ludGF4IG9mIFtzXSwgdGhhdCBpcyBhXG4gICAgICAgIHN0cmluZyB0aGF0IGNhbiBiZSBwcmludGVkIGFzIGlzIGlmIG9uZSB3YW50cyB0byBwYXJzZSBhbmQgcHJpbnQgcHJlc2VydmluZ1xuICAgICAgICBzeW50YXguIFRoaXMgaXMgdXN1YWxseSBzZXQgZm9yIHF1b3RlZCBhdG9tcyAodG8gcHJlc2VydmUgdGhlIGZhY3QgdGhhdCB3ZXJlXG4gICAgICAgIHF1b3RlZCksIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIHRvIGRvIHRoZSByZXZlcnNlOiBzZXQgaXQgZm9yIGF0b21zIHRoYXQgY2FuIGJlXG4gICAgICAgIHBhcnNlZCB1bnF1b3RlZCBidXQgd291bGQgYmUgcHJpbnRlZCB3aXRoIHF1b3RlcywgdG8gcHJlc2VydmUgdGhlIGxhY2sgb2YgcXVvdGVzLlxuICAgICAgICBGb3IgaW5zdGFuY2U6XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBOb25lKSBzaG91bGQgYmUgcHJpbnRlZCB7fGF8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBOb25lKSBzaG91bGQgYmUgcHJpbnRlZCB7fFwiYSBiXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImFcIiwgU29tZSBcIlxcXCJhXFxcIlwiKSBzaG91bGQgYmUgcHJpbnRlZCB7fFwiYVwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgU29tZSBcImEgYlwiKSBzaG91bGQgYmUgcHJpbnRlZCB7fGEgYnx9IG9yIG1heSByYWlzZSwgYXMgaXQgaXNcbiAgICAgICAgYW4gZXJyb3IgdG8gY29uc3RydWN0ZWQgc3VjaCBhbiBhdG9tIChkb2Vzbid0IHBhcnNlIGJhY2spICopXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXRvbSBvZiBQb3MudCAqIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAgIHwgTGlzdCBvZiBQb3MudCAqIHRfb3JfY29tbWVudCBsaXN0ICogUG9zLnRcblxuICAgICgqIHBvc2l0aW9ucyBvZiBsZWZ0IGFuZCByaWdodCBwYXJlbnMgKilcbiAgICBhbmQgdF9vcl9jb21tZW50ID1cbiAgICAgIHwgU2V4cCBvZiB0XG4gICAgICB8IENvbW1lbnQgb2YgY29tbWVudFxuXG4gICAgYW5kIGNvbW1lbnQgPVxuICAgICAgfCBQbGFpbl9jb21tZW50IG9mIFBvcy50ICogc3RyaW5nXG4gICAgICB8IFNleHBfY29tbWVudCBvZiBQb3MudCAqIGNvbW1lbnQgbGlzdCAqIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIHNleHBfb2ZfY29tbWVudCA6IGNvbW1lbnQgLT4gVHlwZS50XG4gICAgdmFsIHNleHBfb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmRcblxuICBtb2R1bGUgVG9fc2V4cCA6IHNpZ1xuICAgIHZhbCBvZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfY29tbWVudCA6IGNvbW1lbnQgLT4gVHlwZS50XG4gICAgdmFsIG9mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogbWF5YmUgd2UgY2FuIGFjdHVhbGx5IHVzZSBjb252IGhlcmUsIGluc3RlYWQgb2YgaW5saW5pbmcgaXQgKilcblxuICAgIGxldCBvZl9wb3MgPSBQb3Muc2V4cF9vZl90XG4gICAgbGV0IG9mX3N0cmluZyB4ID0gVHlwZS5BdG9tIHhcbiAgICBsZXQgb2ZfbGlzdCBvZl9hIHhzID0gVHlwZS5MaXN0IChMaXN0Lm1hcCB+ZjpvZl9hIHhzKVxuXG4gICAgbGV0IG9mX29wdGlvbiBvZl9hID0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB4IC0+IFR5cGUuTGlzdCBbIG9mX2EgeCBdXG4gICAgICB8IE5vbmUgLT4gVHlwZS5MaXN0IFtdXG4gICAgOztcblxuICAgIGxldCByZWMgb2ZfdCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkF0b21cIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjI7IG9mX29wdGlvbiBvZl9zdHJpbmcgdjMgXVxuICAgICAgfCBMaXN0ICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJMaXN0XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl90X29yX2NvbW1lbnQgdjI7IG9mX3BvcyB2MyBdXG5cbiAgICBhbmQgb2ZfdF9vcl9jb21tZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cCB0IC0+IFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBcIjsgb2ZfdCB0IF1cbiAgICAgIHwgQ29tbWVudCBjIC0+IFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkNvbW1lbnRcIjsgb2ZfY29tbWVudCBjIF1cblxuICAgIGFuZCBvZl9jb21tZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgUGxhaW5fY29tbWVudCAodjEsIHYyKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJQbGFpbl9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyIF1cbiAgICAgIHwgU2V4cF9jb21tZW50ICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX2NvbW1lbnQgdjI7IG9mX3QgdjMgXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3QgPSBUb19zZXhwLm9mX3RcbiAgbGV0IHNleHBfb2ZfY29tbWVudCA9IFRvX3NleHAub2ZfY29tbWVudFxuICBsZXQgc2V4cF9vZl90X29yX2NvbW1lbnQgPSBUb19zZXhwLm9mX3Rfb3JfY29tbWVudFxuZW5kXG5cbmluY2x1ZGUgTWFrZSAoU3JjX3Bvcy5SZWxhdGl2ZSlcbm1vZHVsZSBQYXJzZWQgPSBNYWtlIChTcmNfcG9zLkFic29sdXRlKVxuXG5sZXQgcmVsYXRpdml6ZSA9XG4gIGxldCByZWwgfm91dGVyX3AgcCA9IFNyY19wb3MuQWJzb2x1dGUuZGlmZiBwIG91dGVyX3AgaW5cbiAgbGV0IHJlYyBhdXhfdCB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuQXRvbSAocG9zLCBzLCBzb3B0KSAtPiBBdG9tIChyZWwgcG9zIH5vdXRlcl9wLCBzLCBzb3B0KVxuICAgIHwgUGFyc2VkLkxpc3QgKHN0YXJ0X3BvcywgdG9jcywgZW5kX3BvcykgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKCByZWwgc3RhcnRfcG9zIH5vdXRlcl9wXG4gICAgICAgICwgTGlzdC5tYXAgdG9jcyB+ZjooZnVuIHRvYyAtPiBhdXhfdG9jIH5vdXRlcl9wOnN0YXJ0X3BvcyB0b2MpXG4gICAgICAgICwgcmVsIGVuZF9wb3Mgfm91dGVyX3AgKVxuICBhbmQgYXV4X3RvYyB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuU2V4cCB0IC0+IFNleHAgKGF1eF90IHQgfm91dGVyX3ApXG4gICAgfCBQYXJzZWQuQ29tbWVudCBjIC0+IENvbW1lbnQgKGF1eF9jIGMgfm91dGVyX3ApXG4gIGFuZCBhdXhfYyB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuUGxhaW5fY29tbWVudCAocG9zLCB0eHQpIC0+IFBsYWluX2NvbW1lbnQgKHJlbCBwb3Mgfm91dGVyX3AsIHR4dClcbiAgICB8IFBhcnNlZC5TZXhwX2NvbW1lbnQgKHBvcywgY3MsIHQpIC0+XG4gICAgICBTZXhwX2NvbW1lbnRcbiAgICAgICAgKHJlbCBwb3Mgfm91dGVyX3AsIExpc3QubWFwIGNzIH5mOihmdW4gYyAtPiBhdXhfYyB+b3V0ZXJfcCBjKSwgYXV4X3QgdCB+b3V0ZXJfcClcbiAgaW5cbiAgZnVuIHRvYyAtPiBhdXhfdG9jIHRvYyB+b3V0ZXJfcDpTcmNfcG9zLkFic29sdXRlLm9yaWdpblxuOztcbiIsInR5cGUgdG9rZW4gPVxuICB8IFNUUklORyBvZiAoc3RyaW5nKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4jIDIzIFwic3JjL3BhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTggKCogTFBBUkVOICopO1xuICAyNTkgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjAgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDIyXFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMTBcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTJcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxNVxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDA0MFxcMDAwXFxcblxcMDM0XFwyNTVcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMjU1XFxcblxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDI1NVxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMjlcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI4NlxubGV0IHl5dGFibGUgPSBcIlxcMDE2XFwwMDBcXFxuXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMjlcXDAwMFxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMzlcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDIyXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMzFcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDI2XFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA4XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjhcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA4XFwwMDBcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMDExXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAxNzAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE3NyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICggVHlwZS5BdG9tIF8xIClcbiMgMTg0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IFtdIClcbiMgMTkwIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IChMaXN0LnJldiBfMikgKVxuIyAxOTcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIwMyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjMzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzEgKVxuIyAyNDAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8yIClcbiMgMjQ4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAyNTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTm9uZSApXG4jIDI2MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAyNjggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjgzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyOTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzA0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMxMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMTcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZS50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pXG4gIHwgQ09NTUVOVCBvZiAoc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAoKiBQYXJzZXI6IEdyYW1tYXIgU3BlY2lmaWNhdGlvbiBmb3IgUGFyc2luZyBTLWV4cHJlc3Npb25zICopXG4gICgqIGNvbXBhcmUgdG8gcGFyc2VyLm1seSAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIFdpdGhfcG9zID0gc3RydWN0XG5cbiAgICBvcGVuIFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkXG5cbiAgICBsZXQgY29lcmNlID0gU3JjX3Bvcy5BYnNvbHV0ZS5vZl9sZXhpbmdcblxuICAgIGxldCBzdGFydF9wb3MgKCkgPSBjb2VyY2UgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSlcblxuICAgIGxldCBlbmRfcG9zICgpID1cbiAgICAgIGxldCBwID0gUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSBpblxuICAgICAgY29lcmNlIHsgcCB3aXRoIExleGluZy5wb3NfY251bSA9IHAuTGV4aW5nLnBvc19jbnVtIC0gMSB9XG5cbiAgICBsZXQgYXRvbSAoeCwgeSkgPVxuICAgICAgbGV0IChwb3MsIHkpID1cbiAgICAgICAgbWF0Y2ggeSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoc3RhcnRfcG9zICgpLCBTb21lIHgpXG4gICAgICAgIHwgU29tZSAocG9zLCB4KSAtPiAoY29lcmNlIHBvcywgU29tZSB4KVxuICAgICAgaW5cbiAgICAgIEF0b20gKHBvcywgeCwgeSlcblxuICAgIGxldCBsaXN0IHRzID0gTGlzdCAoc3RhcnRfcG9zICgpLCB0cywgZW5kX3BvcyAoKSlcblxuICAgIGxldCBzZXhwICAgIHggPSBTZXhwICAgIHhcbiAgICBsZXQgY29tbWVudCB4ID0gQ29tbWVudCB4XG5cbiAgICBsZXQgc2V4cF9jb21tZW50IGNzIHQgPSBTZXhwX2NvbW1lbnQgKHN0YXJ0X3BvcyAoKSwgY3MsIHQpXG5cbiAgICBsZXQgcGxhaW5fY29tbWVudCAoeCwgcG9zX29wdCkgPVxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIG1hdGNoIHBvc19vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhcnRfcG9zICgpXG4gICAgICAgIHwgU29tZSBwb3MgLT4gY29lcmNlIHBvc1xuICAgICAgaW5cbiAgICAgIFBsYWluX2NvbW1lbnQgKHBvcywgeClcblxuICBlbmRcblxuIyA2MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgMjU5ICgqIExQQVJFTiAqKTtcbiAgMjYwICgqIFJQQVJFTiAqKTtcbiAgICAwICgqIEVPRiAqKTtcbiAgMjYxICgqIEhBU0hfU0VNSSAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMjU3ICgqIFNUUklORyAqKTtcbiAgMjU4ICgqIENPTU1FTlQgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAxMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDA2XFwwMDBcXDAyMlxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMlxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMjNcXDAwMFxcMDIwXFwwMDBcXDAxNVxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxNlxcMDAwXFwwMjFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTdcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNlxcMDAwXFxcblxcMDIwXFwwMDBcXDAxOFxcMDAwXFwwMjFcXDAwMFxcMDIzXFwwMDBcXDAyNlxcMDAwXFwwMTNcXDAwMFxcMDI0XFwwMDBcXDAxNFxcMDAwXFxcblxcMDI5XFwwMDBcXDAxNVxcMDAwXFwwMjJcXDAwMFwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwMzdcXDAwMFxcXG5cXDAwOVxcMjU1XFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMjU1XFwwMDlcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI3XFwyNTVcXDI1MVxcMjU1XFwyMzVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyMzRcXDI1NVxcMDEwXFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyOTJcbmxldCB5eXRhYmxlID0gXCJcXDAzNlxcMDAwXFxcblxcMDE2XFwwMDBcXDAzM1xcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAyOFxcMDAwXFwwMzNcXDAwMFxcMDE5XFwwMDBcXDAzN1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAyNVxcMDAwXFwwMTFcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDM1XFwwMDBcXDAxMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMjlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMTBcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDFcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgQ09NTUVOVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgKCBXaXRoX3Bvcy5hdG9tIF8xIClcbiMgMjE0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIyMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDc3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIyNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDgwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgKCBXaXRoX3Bvcy5wbGFpbl9jb21tZW50IF8xIClcbiMgMjM0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9jb21tZW50c19hYnMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwX2NvbW1lbnQgKExpc3QucmV2IF8yKSBfMyApXG4jIDI0MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBbXSApXG4jIDI0OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9jb21tZW50c19hYnMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjU2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cCBfMSApXG4jIDI2MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5jb21tZW50IF8xIClcbiMgMjcwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgOTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBbXSApXG4jIDI3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICggVHlwZV93aXRoX2xheW91dC5yZWxhdGl2aXplIF8xIClcbiMgMjkxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgOTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAoIFNvbWUgXzEgKVxuIyAyOTggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDMwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAoIFtfMV0gKVxuIyAzMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMzE5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMjYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTA4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzMyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMzOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzNDUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzUyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KSlcbigqIEVudHJ5IHNleHAgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cF9vcHQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHNfYWJzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudClcbmxldCBzZXhwX29wdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHNleHBzX2FicyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgcmV2X3NleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA1IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KVxuIiwiIyAxIFwic3JjL2xleGVyLm1sbFwiXG4gXG4gICgqKiBMZXhlcjogTGV4ZXIgU3BlY2lmaWNhdGlvbiBmb3IgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gICAgfCAnbicgLT4gJ1xcMDEwJ1xuICAgIHwgJ3InIC0+ICdcXDAxMydcbiAgICB8ICdiJyAtPiAnXFwwMDgnXG4gICAgfCAndCcgLT4gJ1xcMDA5J1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IGxmID0gJ1xcMDEwJ1xuXG4gIGxldCBkZWNfY29kZSBjMSBjMiBjMyA9XG4gICAgMTAwICogKENoYXIuY29kZSBjMSAtIDQ4KSArIDEwICogKENoYXIuY29kZSBjMiAtIDQ4KSArIChDaGFyLmNvZGUgYzMgLSA0OClcblxuICBsZXQgaGV4X2NvZGUgYzEgYzIgPVxuICAgIGxldCBkMSA9IENoYXIuY29kZSBjMSBpblxuICAgIGxldCB2YWwxID1cbiAgICAgIGlmIGQxID49IDk3IHRoZW4gZDEgLSA4N1xuICAgICAgZWxzZSBpZiBkMSA+PSA2NSB0aGVuIGQxIC0gNTVcbiAgICAgIGVsc2UgZDEgLSA0OCBpblxuICAgIGxldCBkMiA9IENoYXIuY29kZSBjMiBpblxuICAgIGxldCB2YWwyID1cbiAgICAgIGlmIGQyID49IDk3IHRoZW4gZDIgLSA4N1xuICAgICAgZWxzZSBpZiBkMiA+PSA2NSB0aGVuIGQyIC0gNTVcbiAgICAgIGVsc2UgZDIgLSA0OCBpblxuICAgIHZhbDEgKiAxNiArIHZhbDJcblxuICBsZXQgZm91bmRfbmV3bGluZSAoeyBsZXhfY3Vycl9wOyBfIH0gYXMgbGV4YnVmKSBkaWZmID1cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAge1xuICAgICAgICBsZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsZXhfY3Vycl9wLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxleF9jdXJyX3AucG9zX2NudW0gLSBkaWZmO1xuICAgICAgfVxuXG4gICgqIHNhbWUgbGVuZ3RoIGNvbXB1dGF0aW9uIGFzIGluIFtMZXhpbmcubGV4ZW1lXSAqKVxuICBsZXQgbGV4ZW1lX2xlbiB7IGxleF9zdGFydF9wb3M7IGxleF9jdXJyX3BvczsgXyB9ID0gbGV4X2N1cnJfcG9zIC0gbGV4X3N0YXJ0X3Bvc1xuXG4gIGxldCBtYWluX2ZhaWx1cmUgbGV4YnVmIG1zZyA9XG4gICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJTZXhwbGliLkxleGVyLm1haW46ICVzIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgIG1zZyBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgICAgIHZhbCBhZGRfY2hhciA6IHQgLT4gY2hhciAtPiB1bml0XG4gICAgICB2YWwgYWRkX3N1YmJ5dGVzIDogdCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfbGV4ZW1lIDogdCAtPiBsZXhidWYgLT4gdW5pdFxuICAgICAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gICAgICB2YWwgb2ZfYnVmZmVyIDogQnVmZmVyLnQgLT4gdFxuICAgIGVuZFxuICAgIG1vZHVsZSBUb2tlbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgbHBhcmVuIDogdFxuICAgICAgdmFsIHJwYXJlbiA6IHRcbiAgICAgIHZhbCBlb2YgOiB0XG4gICAgICB2YWwgc2ltcGxlX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICB2YWwgaGFzaF9zZW1pIDogdFxuICAgICAgdmFsIHF1b3RlZF9zdHJpbmcgOiBMZXhpbmcucG9zaXRpb24gLT4gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiB0XG4gICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgdmFsIGNvbW1lbnQgOiBzdHJpbmcgLT4gbWFpbjpzIC0+IHNcbiAgICAgIHZhbCBibG9ja19jb21tZW50IDogTGV4aW5nLnBvc2l0aW9uIC0+IG1haW46cyAtPiBzXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogVCkgOiBzaWdcbiAgICB2YWwgbWFpbiA6ID9idWY6QnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiBYLlRva2VuLnRcbiAgZW5kID0gc3RydWN0ICgqIEJFR0lOIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG4gICAgb3BlbiBYXG5cbiMgODMgXCJzcmMvbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjQ0XFwyNTVcXDAxMFxcMDAwXFwwNDNcXDAwMFxcMDUzXFwwMDBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDA4NlxcMDAwXFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDA5NlxcMDAwXFxcbiAgICBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTcyXFwwMDBcXDE4MlxcMDAwXFwyMjBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAxXFwyNDdcXDI1NVxcXG4gICAgXFwwMTdcXDAwMVxcMDUwXFwwMDFcXDA2MFxcMDAxXFwwOTNcXDAwMVxcMTAzXFwwMDFcXDEzNlxcMDAxXFwxNDZcXDAwMVxcMTgxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDIyNFxcMDAxXFwyMzRcXDAwMVxcMDExXFwwMDJcXDAzN1xcMDAwXFwyNDZcXDI1NVxcMDgwXFwwMDBcXDI0OFxcMjU1XFxcbiAgICBcXDAyM1xcMDAyXFwyNTVcXDI1NVxcMjQ5XFwyNTVcXDA1N1xcMDAyXFwwMzNcXDAwMlxcMjUyXFwyNTVcXDAwN1xcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMTEyXFwwMDJcXDI1MVxcMjU1XFwxNDRcXDAwMlxcMjUwXFwyNTVcXDA4MVxcMDAwXFwyNTBcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMTIyXFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMFxcMTMwXFwwMDFcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMTczXFwwMDFcXDI1MVxcMDAxXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDIzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAxN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzVcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDQ2XFwwMDBcXDAwOVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMzZcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXDAzOFxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDUzXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDI0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxN1xcMDAwXFwwNTlcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDE5XFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMjlcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDI1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBtYWluIGJ1ZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICggZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgbWFpbiBidWYgbGV4YnVmIClcbiMgMzY5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgOTYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgKCBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRcbiMgMzgwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA5NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uY29tbWVudCB0ZXh0IH5tYWluIGJ1ZiBsZXhidWYgKVxuIyAzODQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmxwYXJlbiApXG4jIDM4OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDk5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ucnBhcmVuIClcbiMgMzk0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMTAxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHBvcyBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5xdW90ZWRfc3RyaW5nIHBvcyBidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDA2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgMTA5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIFRva2VuLmhhc2hfc2VtaSApXG4jIDQxMSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDExMSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgW3Bvc10gbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4uYmxvY2tfY29tbWVudCBwb3Mgfm1haW4gYnVmIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MjMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxuIyAxMTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIiApXG4jIDQyOCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDEyNSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiIClcbiMgNDMzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEwIC0+XG5sZXRcbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0clxuIyA0MzkgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyNiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5zaW1wbGVfc3RyaW5nIHN0ciApXG4jIDQ0MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5lb2YgKVxuIyA0NDggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIDM2XG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEzMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjsgKCkgKVxuIyA0NjAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxMzIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IGxlbiA9IGxleGVtZV9sZW4gbGV4YnVmIC0gMiBpblxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0NzAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxMzkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IGxlbiA9IGxleGVtZV9sZW4gbGV4YnVmIC0gMyBpblxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0ODAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDE0NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgNDg2IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGluXG4jIDE0NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ5NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG5sZXRcbiMgMTUxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgYzFcbiMgNTAwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMTUxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1MDUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNcbiMgNTEwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGRlY19jb2RlIGMxIGMyIGMzIGluXG4gICAgICAgIGlmIHYgPiAyNTUgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogXFxcbiAgICAgICAgICAgICAgIGlsbGVnYWwgZXNjYXBlIGF0IGxpbmUgJWQgY2hhciAlZDogYFxcXFwlYyVjJWMnXCJcbiAgICAgICAgICAgICAgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbCAtIDMpXG4gICAgICAgICAgICAgIGMxIGMyIGMzIGluXG4gICAgICAgICAgZmFpbHdpdGggbXNnKTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDUyOCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG5sZXRcbiMgMTY3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMxXG4jIDUzNCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE2NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUzOSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBoZXhfY29kZSBjMSBjMiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAxNzQgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGNcbiMgNTU0IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGluXG4jIDE3NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU2MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDE4MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgbGY7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NzMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxuIyAxODkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG9mcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gb2ZzIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgb2ZzIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU4NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDE5NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmcgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgIHN0YXJ0LnBvc19sbnVtIChzdGFydC5wb3NfY251bSAtIHN0YXJ0LnBvc19ib2wpXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA1OTYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiA1M1xuYW5kIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyMDggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwOyBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjA5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMjExIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxNSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDIxNCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAxIH0gaW5cbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZlxuICAgICAgKVxuIyA2MjYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAyMjIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAoXG4gICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDIgfSBpblxuICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiAoc3RhcnQgOjogbG9jcykgbGV4YnVmXG4gICAgKVxuIyA2MzYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAyMjkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbX10gLT4gKCkgKCogdGhlIGNvbW1lbnQgaXMgZmluaXNoZWQgKilcbiAgICAgICAgfCBfIDo6IChfIDo6IF8gYXMgdCkgLT4gc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiB0IGxleGJ1ZlxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZSAgKCogaW1wb3NzaWJsZSAqKVxuICAgICAgKVxuIyA2NDcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAyMzcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA6OiBfIC0+XG4gICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgc3ByaW50ZiBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9ibG9ja19jb21tZW50OiBcXFxuICAgICAgICAgICAgICAgIHVudGVybWluYXRlZCBibG9jayBjb21tZW50IGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICAgICAgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNjYyIFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAyNDkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgKCogUkVTVU1FIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgICBsZXQgbWFpbiA/YnVmID1cbiAgICAgIGxldCBidWYgPVxuICAgICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gUXVvdGVkX3N0cmluZ19idWZmZXIuY3JlYXRlIDY0XG4gICAgICAgIHwgU29tZSBidWYgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLm9mX2J1ZmZlciBidWZcbiAgICAgIGluXG4gICAgICBtYWluIGJ1ZlxuXG4gIGVuZCAoKiBFTkQgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICBtb2R1bGUgVmFuaWxsYSA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBCdWZmZXJcbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgXyBfID0gKClcbiAgICAgICAgbGV0IG9mX2J1ZmZlciBiID0gYlxuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HIHhcbiAgICAgICAgbGV0IHF1b3RlZF9zdHJpbmcgXyBidWYgPSBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBidWYpXG4gICAgICAgIGxldCBibG9ja19jb21tZW50IF9wb3Mgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmXG4gICAgICAgIGxldCBjb21tZW50IF90ZXh0IH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiAoKiBza2lwIGFuZCBjb250aW51ZSBsZXhpbmcgKilcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBtb2R1bGUgV2l0aF9sYXlvdXQgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICBjb250ZW50cyA6IEJ1ZmZlci50O1xuICAgICAgICAgIGxleGVtZSA6IEJ1ZmZlci50O1xuICAgICAgICB9XG4gICAgICAgIGxldCBjcmVhdGUgbiA9IHtjb250ZW50cyA9IEJ1ZmZlci5jcmVhdGUgbjsgbGV4ZW1lID0gQnVmZmVyLmNyZWF0ZSBufVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGNvbnRlbnRzID0geyBjb250ZW50czsgbGV4ZW1lID0gQnVmZmVyLmNyZWF0ZSA2NCB9XG4gICAgICAgIGxldCBhZGRfY2hhciB0IGNoID0gQnVmZmVyLmFkZF9jaGFyIHQuY29udGVudHMgY2hcbiAgICAgICAgbGV0IGFkZF9zdWJieXRlcyB0IHN0ciBvZnMgbGVuID0gQnVmZmVyLmFkZF9zdWJieXRlcyB0LmNvbnRlbnRzIHN0ciBvZnMgbGVuXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIHQgbGV4YnVmID0gQnVmZmVyLmFkZF9zdHJpbmcgdC5sZXhlbWUgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICBsZXQgY2xlYXIgdCA9IEJ1ZmZlci5jbGVhciB0LmxleGVtZTsgQnVmZmVyLmNsZWFyIHQuY29udGVudHNcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyX3dpdGhfbGF5b3V0XG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyAoeCwgTm9uZSlcbiAgICAgICAgbGV0IHF1b3RlZF9zdHJpbmcgcG9zIHtRdW90ZWRfc3RyaW5nX2J1ZmZlci5jb250ZW50czsgbGV4ZW1lfSA9XG4gICAgICAgICAgU1RSSU5HIChCdWZmZXIuY29udGVudHMgY29udGVudHMsIFNvbWUgKHBvcywgQnVmZmVyLmNvbnRlbnRzIGxleGVtZSkpXG4gICAgICAgIGxldCBibG9ja19jb21tZW50IHBvcyB+bWFpbjpfIHtRdW90ZWRfc3RyaW5nX2J1ZmZlci5jb250ZW50cyA9IF87IGxleGVtZX0gX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAoQnVmZmVyLmNvbnRlbnRzIGxleGVtZSwgU29tZSBwb3MpXG4gICAgICAgIGxldCBjb21tZW50IHRleHQgfm1haW46XyBfYnVmIF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKHRleHQsIE5vbmUpXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbGV0IG1haW4gPSBWYW5pbGxhLm1haW5cbiAgbGV0IG1haW5fd2l0aF9sYXlvdXQgPSBXaXRoX2xheW91dC5tYWluXG5cblxuIyA3NDQgXCJzcmMvbGV4ZXIubWxcIlxuIiwiKCogU2V4cDogTW9kdWxlIGZvciBoYW5kbGluZyBTLWV4cHJlc3Npb25zIChJL08sIGV0Yy4pICopXG5cbm9wZW4gRm9ybWF0XG5vcGVuIEJpZ2FycmF5XG5tb2R1bGUgU2V4cGxpYiA9IFNleHBsaWIwXG5tb2R1bGUgQ29udiA9IFNleHBsaWIuU2V4cF9jb252XG5cbigqIGNvbnYubWwgZGVwZW5kcyBvbiB1cyBzbyB3ZSBjYW4gb25seSB1c2UgdGhpcyBtb2R1bGUgKilcblxuaW5jbHVkZSBUeXBlXG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJpdmF0ZVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcblxuKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gSS9PLWNoYW5uZWxzICopXG5cbmxldCB3aXRoX25ld19idWZmZXIgb2MgZiA9XG4gIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgZiBidWY7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuOztcblxubGV0IG91dHB1dF9odW0gb2Mgc2V4cCA9IHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIHNleHAgfmJ1ZilcblxubGV0IG91dHB1dF9odW1faW5kZW50IGluZGVudCBvYyBzZXhwID1cbiAgd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gfmluZGVudCBzZXhwIH5idWYpXG47O1xuXG5sZXQgb3V0cHV0X21hY2ggb2Mgc2V4cCA9IHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfbWFjaCBzZXhwIH5idWYpXG5sZXQgb3V0cHV0ID0gb3V0cHV0X21hY2hcblxuKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZmlsZSAqKVxuXG4oKiBUaGUgdGVtcCBmaWxlIGZ1bmN0aW9ucyBpbiB0aGUgT0NhbWwgRmlsZW5hbWUgbW9kdWxlIGRvIG5vdCBzdXBwb3J0XG4gICBwZXJtaXNzaW9ucy4gIEJ1dCBvcGVuaW5nIGEgZmlsZSB3aXRoIGdpdmVuIHBlcm1pc3Npb25zIGlzIGRpZmZlcmVudFxuICAgZnJvbSBvcGVuaW5nIGl0IGFuZCBjaG1vZGluZyBpdCB0byB0aGVzZSBwZXJtaXNzaW9ucywgYmVjYXVzZSB0aGUgdW1hc2tcbiAgIGlzIHRha2VuIGluIGFjY291bnQuICBVbmRlciBVbml4IHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gZ2V0IHRoZSB1bWFzayBpblxuICAgYSB0aHJlYWQtc2FmZSB3YXkuICopXG5tb2R1bGUgVG1wX2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IHBybmcgPSByZWYgTm9uZVxuXG4gIGxldCB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmFuZF9zdGF0ZSA9XG4gICAgICBtYXRjaCAhcHJuZyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHJldCA9IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSBpblxuICAgICAgICBwcm5nIDo9IFNvbWUgcmV0O1xuICAgICAgICByZXRcbiAgICBpblxuICAgIGxldCBybmQgPSBSYW5kb20uU3RhdGUuYml0cyByYW5kX3N0YXRlIGxhbmQgMHhGRkZGRkYgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXhcbiAgOztcblxuICAoKiBLZWVwIHRoZSBwZXJtaXNzaW9ucyBsb29zZS4gU2V4cHMgYXJlIHVzdWFsbHkgc2hhcmVkIGFuZCByYXJlbHkgcHJpdmF0ZSopXG4gIGxldCBvcGVuX3RlbXBfZmlsZSA/KHBlcm0gPSAwbzY2NikgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCBvYyA9XG4gICAgICAgICAgb3Blbl9vdXRfZ2VuIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF0gcGVybSBuYW1lXG4gICAgICAgIGluXG4gICAgICAgIG5hbWUsIG9jXG4gICAgICB3aXRoXG4gICAgICB8IFN5c19lcnJvciBfIGFzIGUgLT4gaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgICBpblxuICAgIHRyeV9uYW1lIDBcbiAgOztcbmVuZFxuXG5sZXQgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gb3V0cHV0X2Z1bmN0aW9uIGZpbGUgc2V4cCA9XG4gIGxldCB0bXBfbmFtZSwgb2MgPSBUbXBfZmlsZS5vcGVuX3RlbXBfZmlsZSA/cGVybSBmaWxlIFwidG1wXCIgaW5cbiAgKHRyeVxuICAgICBvdXRwdXRfZnVuY3Rpb24gb2Mgc2V4cDtcbiAgICAgY2xvc2Vfb3V0IG9jXG4gICB3aXRoXG4gICB8IGUgLT5cbiAgICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgICAodHJ5IFN5cy5yZW1vdmUgdG1wX25hbWUgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAgcmFpc2UgZSk7XG4gIFN5cy5yZW5hbWUgdG1wX25hbWUgZmlsZVxuOztcblxubGV0IG91dHB1dF9zZXhwX25sIGRvX291dHB1dCBvYyBzZXhwID1cbiAgZG9fb3V0cHV0IG9jIHNleHA7XG4gIG91dHB1dF9zdHJpbmcgb2MgXCJcXG5cIlxuOztcblxubGV0IHNhdmVfaHVtID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cF9ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBcbmxldCBzYXZlX21hY2ggP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gb3V0cHV0X21hY2ggZmlsZSBzZXhwXG5sZXQgc2F2ZSA9IHNhdmVfbWFjaFxubGV0IG91dHB1dF9zZXhwc19ubCBkb19vdXRwdXQgb2Mgc2V4cHMgPSBMaXN0Lml0ZXIgKG91dHB1dF9zZXhwX25sIGRvX291dHB1dCBvYykgc2V4cHNcblxubGV0IHNhdmVfc2V4cHNfaHVtID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cHNcbjs7XG5cbmxldCBzYXZlX3NleHBzX21hY2ggP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X21hY2gpIGZpbGUgc2V4cHNcbjs7XG5cbmxldCBzYXZlX3NleHBzID0gc2F2ZV9zZXhwc19tYWNoXG5cbigqIFNjYW4gZnVuY3Rpb25zICopXG5cbmxldCBzY2FuX3NleHAgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBfb3B0ID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBfb3B0IChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cHMgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9yZXZfc2V4cHMgP2J1ZiBsZXhidWYgPSBQYXJzZXIucmV2X3NleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxuXG5sZXQgZ2V0X21haW5fYnVmIGJ1ZiA9XG4gIGxldCBidWYgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMTI4XG4gICAgfCBTb21lIGJ1ZiAtPiBidWZcbiAgaW5cbiAgTGV4ZXIubWFpbiB+YnVmXG47O1xuXG5sZXQgc2Nhbl9mb2xkX3NleHBzID9idWYgfmYgfmluaXQgbGV4YnVmID1cbiAgbGV0IG1haW4gPSBnZXRfbWFpbl9idWYgYnVmIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIFBhcnNlci5zZXhwX29wdCBtYWluIGxleGJ1ZiB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSBzZXhwIC0+IGxvb3AgKGYgYWNjIHNleHApXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IHNjYW5faXRlcl9zZXhwcyA/YnVmIH5mIGxleGJ1ZiA9XG4gIHNjYW5fZm9sZF9zZXhwcyA/YnVmIGxleGJ1ZiB+aW5pdDooKSB+ZjooZnVuICgpIHNleHAgLT4gZiBzZXhwKVxuOztcblxubGV0IHNjYW5fc2V4cHNfY29udiA/YnVmIH5mIGxleGJ1ZiA9XG4gIGxldCBjb2xsIGFjYyBzZXhwID0gZiBzZXhwIDo6IGFjYyBpblxuICBMaXN0LnJldiAoc2Nhbl9mb2xkX3NleHBzID9idWYgfmY6Y29sbCB+aW5pdDpbXSBsZXhidWYpXG47O1xuXG5sZXQgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgP2NvbnRhaW5pbmdfc2V4cCA/bG9jYXRpb24gP2ludmFsaWRfc2V4cCAoKSB+ZXhuIDogdCA9XG4gIExpc3RcbiAgICAoTGlzdC5jb25jYXRcbiAgICAgICBbIFsgQXRvbSBcIk9mX3NleHBfZXJyb3JcIiBdXG4gICAgICAgOyAobWF0Y2ggbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgQXRvbSB4IF0pXG4gICAgICAgOyBbIChtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICAgIHwgRmFpbHVyZSB4IC0+IEF0b20geFxuICAgICAgICAgICAgIHwgXyAtPiBDb252LnNleHBfb2ZfZXhuIGV4bilcbiAgICAgICAgIF1cbiAgICAgICA7IChtYXRjaCBpbnZhbGlkX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJpbnZhbGlkX3NleHBcIjsgeCBdIF0pXG4gICAgICAgOyAobWF0Y2ggY29udGFpbmluZ19zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiY29udGFpbmluZ19zZXhwXCI7IHggXSBdKVxuICAgICAgIF0pXG47O1xuXG4oKiBQYXJ0aWFsIHBhcnNpbmcgKilcblxubW9kdWxlIEFubm90ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gUGFyc2V4cC5Qb3NpdGlvbnMucG9zID1cbiAgICB7IGxpbmUgOiBpbnRcbiAgICA7IGNvbCA6IGludFxuICAgIDsgb2Zmc2V0IDogaW50XG4gICAgfVxuXG4gIHR5cGUgcmFuZ2UgPSBQYXJzZXhwLlBvc2l0aW9ucy5yYW5nZSA9XG4gICAgeyBzdGFydF9wb3MgOiBwb3NcbiAgICA7IGVuZF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgdHlwZSB0ID1cbiAgICB8IEF0b20gb2YgcmFuZ2UgKiBUeXBlLnRcbiAgICB8IExpc3Qgb2YgcmFuZ2UgKiB0IGxpc3QgKiBUeXBlLnRcblxuICB0eXBlICdhIGNvbnYgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYEVycm9yIG9mIGV4biAqIHRcbiAgICBdXG5cbiAgZXhjZXB0aW9uIENvbnZfZXhuIG9mIHN0cmluZyAqIGV4blxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ29udl9leG5dIChmdW5jdGlvblxuICAgICAgfCBDb252X2V4biAobG9jYXRpb24sIGV4bikgLT4gc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5leG5cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgdHlwZSBzdGFjayA9XG4gICAgeyBtdXRhYmxlIHBvc2l0aW9ucyA6IHBvcyBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YWNrIDogdCBsaXN0IGxpc3RcbiAgICB9XG5cbiAgbGV0IGdldF9zZXhwID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKF8sIHNleHApIHwgTGlzdCAoXywgXywgc2V4cCkgLT4gc2V4cFxuICA7O1xuXG4gIGxldCBnZXRfcmFuZ2UgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAocmFuZ2UsIF8pIHwgTGlzdCAocmFuZ2UsIF8sIF8pIC0+IHJhbmdlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfY29udiBzZXhwX29mX2EgPSBmdW5jdGlvblxuICAgIHwgYFJlc3VsdCBhIC0+IFR5cGUuTGlzdCBbIEF0b20gXCJSZXN1bHRcIjsgYSB8PiBzZXhwX29mX2EgXVxuICAgIHwgYEVycm9yIChleG4sIHQpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcIkVycm9yXCI7IExpc3QgWyBleG4gfD4gQ29udi5zZXhwX29mX2V4bjsgdCB8PiBnZXRfc2V4cCBdIF1cbiAgOztcblxuICBleGNlcHRpb24gQW5ub3Rfc2V4cCBvZiB0XG5cbiAgbGV0IGZpbmRfc2V4cCBhbm5vdF9zZXhwIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBhbm5vdF9zZXhwID1cbiAgICAgIG1hdGNoIGFubm90X3NleHAgd2l0aFxuICAgICAgfCAoQXRvbSAoXywgc3ViX3NleHApIHwgTGlzdCAoXywgXywgc3ViX3NleHApKSB3aGVuIHNleHAgPT0gc3ViX3NleHAgLT5cbiAgICAgICAgcmFpc2UgKEFubm90X3NleHAgYW5ub3Rfc2V4cClcbiAgICAgIHwgTGlzdCAoXywgYW5ub3RzLCBfKSAtPiBMaXN0Lml0ZXIgbG9vcCBhbm5vdHNcbiAgICAgIHwgQXRvbSBfIC0+ICgpXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIGxvb3AgYW5ub3Rfc2V4cDtcbiAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBBbm5vdF9zZXhwIHJlcyAtPiBTb21lIHJlc1xuICA7O1xuZW5kXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvY2F0aW9uLCBleG4pLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBPZl9zZXhwX2Vycm9yIChleG4sIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5tb2R1bGUgUGFyc2VfcG9zID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHRleHRfbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSB0ZXh0X2NoYXIgOiBpbnRcbiAgICA7IG11dGFibGUgZ2xvYmFsX29mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBidWZfcG9zIDogaW50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyh0ZXh0X2xpbmUgPSAxKSA/KHRleHRfY2hhciA9IDApID8oYnVmX3BvcyA9IDApID8oZ2xvYmFsX29mZnNldCA9IDApICgpID1cbiAgICBsZXQgZmFpbCBtc2cgPSBmYWlsd2l0aCAoXCJTZXhwbGliLlNleHAuUGFyc2VfcG9zLmNyZWF0ZTogXCIgXiBtc2cpIGluXG4gICAgaWYgdGV4dF9saW5lIDwgMVxuICAgIHRoZW4gZmFpbCBcInRleHRfbGluZSA8IDFcIlxuICAgIGVsc2UgaWYgdGV4dF9jaGFyIDwgMFxuICAgIHRoZW4gZmFpbCBcInRleHRfY2hhciA8IDBcIlxuICAgIGVsc2UgaWYgZ2xvYmFsX29mZnNldCA8IDBcbiAgICB0aGVuIGZhaWwgXCJnbG9iYWxfb2Zmc2V0IDwgMFwiXG4gICAgZWxzZSBpZiBidWZfcG9zIDwgMFxuICAgIHRoZW4gZmFpbCBcImJ1Zl9wb3MgPCAwXCJcbiAgICBlbHNlIHsgdGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfVxuICA7O1xuXG4gIGxldCB3aXRoX2J1Zl9wb3MgdCBidWZfcG9zID0geyB0IHdpdGggYnVmX3BvcyB9XG5lbmRcblxubW9kdWxlIENvbnRfc3RhdGUgPSBQYXJzZXhwLk9sZF9wYXJzZXJfY29udF9zdGF0ZVxuXG50eXBlICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdCA9XG4gIHwgRG9uZSBvZiAndCAqIFBhcnNlX3Bvcy50XG4gIHwgQ29udCBvZiBDb250X3N0YXRlLnQgKiAoJ2EsICd0KSBwYXJzZV9mdW5cblxuYW5kICgnYSwgJ3QpIHBhcnNlX2Z1biA9IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiAoJ2EsICd0KSBwYXJzZV9yZXN1bHRcblxudHlwZSAndCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zIDogUGFyc2VfcG9zLnQgfVxuXG50eXBlIHBhcnNlX2Vycm9yID1cbiAgeyBlcnJfbXNnIDogc3RyaW5nXG4gIDsgcGFyc2Vfc3RhdGUgOiBbIGBTZXhwIG9mIHQgbGlzdCBsaXN0IHBhcnNlX3N0YXRlIHwgYEFubm90IG9mIEFubm90LnN0YWNrIHBhcnNlX3N0YXRlIF1cbiAgfVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgcGFyc2VfZXJyb3JcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgcGUgLT5cbiAgICAgIGxldCBwcG9zID1cbiAgICAgICAgbWF0Y2ggcGUucGFyc2Vfc3RhdGUgd2l0aFxuICAgICAgICB8IGBTZXhwIHsgcGFyc2VfcG9zIH0gfCBgQW5ub3QgeyBwYXJzZV9wb3MgfSAtPiBwYXJzZV9wb3NcbiAgICAgIGluXG4gICAgICBMaXN0XG4gICAgICAgIFsgQXRvbSBcIlNleHBsaWIuU2V4cC5QYXJzZV9lcnJvclwiXG4gICAgICAgIDsgTGlzdFxuICAgICAgICAgICAgWyBMaXN0IFsgQXRvbSBcImVycl9tc2dcIjsgQXRvbSBwZS5lcnJfbXNnIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2xpbmVcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2xpbmUgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfY2hhclwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfY2hhciBdXG4gICAgICAgICAgICA7IExpc3RcbiAgICAgICAgICAgICAgICBbIEF0b20gXCJnbG9iYWxfb2Zmc2V0XCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuZ2xvYmFsX29mZnNldCBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwiYnVmX3Bvc1wiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgXVxuICAgICAgICAgICAgXVxuICAgICAgICBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZXJfb3V0cHV0IDogc2lnXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBCYXJlX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBUeXBlLnRcbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBJID0gUGFyc2V4cC5Qb3NpdGlvbnMuSXRlcmF0b3JcblxuICBsZXQgcmVjIGFubm90YXRlX3NleHAgc2V4cCBpdGVyID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFR5cGUuQXRvbSBfIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90LkF0b20gKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIHNleHApXG4gICAgfCBUeXBlLkxpc3QgbCAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwX2xpc3QgbCBpdGVyIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5MaXN0ICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBhbm5vdCwgc2V4cClcblxuICBhbmQgYW5ub3RhdGVfc2V4cF9saXN0IHNleHBzIGl0ZXIgPVxuICAgIExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGFubm90YXRlX3NleHAgc2V4cCBpdGVyKSBzZXhwcylcbiAgOztcblxuICBtb2R1bGUgQmFyZV9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyXG5cbiAgICB0eXBlIG91dHB1dCA9IFR5cGUudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSBzZXhwID0gcmFpc2Vfbm90cmFjZSAoRm91bmQgc2V4cClcbiAgZW5kXG5cbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyX2FuZF9wb3NpdGlvbnNcblxuICAgIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSAoc2V4cCwgcG9zaXRpb25zKSA9XG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwIHNleHAgKEkuY3JlYXRlIHBvc2l0aW9ucykgaW5cbiAgICAgIHJhaXNlX25vdHJhY2UgKEZvdW5kIGFubm90KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3BhcnNlciAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5UXG5cbiAgICB0eXBlIGlucHV0XG5cbiAgICB2YWwgbGVuZ3RoIDogaW5wdXQgLT4gaW50XG5cbiAgICB2YWwgdW5zYWZlX2ZlZWRfbG9vcFxuICAgICAgOiAgSW1wbC5TdGF0ZS50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgICAgIC0+IGlucHV0XG4gICAgICAtPiBtYXhfcG9zOmludFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHBhcnNlXG4gICAgOiAgP3BhcnNlX3BvczpQYXJzZV9wb3MudFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gVC5pbnB1dFxuICAgIC0+IChULmlucHV0LCBULm91dHB1dCkgcGFyc2VfcmVzdWx0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBidWZfcG9zID1cbiAgICB7IFBhcnNlX3Bvcy50ZXh0X2xpbmUgPSBULkltcGwuU3RhdGUubGluZSBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLnRleHRfY2hhciA9IFQuSW1wbC5TdGF0ZS5jb2x1bW4gc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmJ1Zl9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyA8IDBcIjtcbiAgICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogbGVuIDwgMFwiO1xuICAgIGxldCBzdHJfbGVuID0gVC5sZW5ndGggc3RyIGluXG4gICAgbGV0IHBvc19sZW4gPSBwb3MgKyBsZW4gaW5cbiAgICBpZiBwb3NfbGVuID4gc3RyX2xlbiB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyArIGxlbiA+IHN0cl9sZW5cIjtcbiAgICBwb3NfbGVuIC0gMVxuICA7O1xuXG4gIGxldCByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnID1cbiAgICBsZXQgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA9IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBwb3MgfSBpblxuICAgIGxldCBwYXJzZV9lcnJvciA9IHsgZXJyX21zZyA9IG1zZzsgcGFyc2Vfc3RhdGUgPSBgU2V4cCBwYXJzZV9zdGF0ZSB9IGluXG4gICAgcmFpc2UgKFBhcnNlX2Vycm9yIHBhcnNlX2Vycm9yKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSBwb3MgZSA9XG4gICAgbGV0IG1zZyA9IFBhcnNleHAuUGFyc2VfZXJyb3IubWVzc2FnZSBlIGluXG4gICAgbWF0Y2ggUGFyc2V4cC5QYXJzZV9lcnJvci5Qcml2YXRlLm9sZF9wYXJzZXJfZXhuIGUgd2l0aFxuICAgIHwgYFBhcnNlX2Vycm9yIC0+IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2dcbiAgICB8IGBGYWlsdXJlIC0+IGZhaWx3aXRoIG1zZ1xuICA7O1xuXG4gIGxldCByZWMgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyID1cbiAgICBsZXQgbWF4X3BvcyA9IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciBpblxuICAgIGxldCBwcmV2aW91c19vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgbWF0Y2ggVC51bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zIHdpdGhcbiAgICB8IHN0YWNrIC0+IG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2tcbiAgICB8IGV4Y2VwdGlvbiBULkZvdW5kIHJlc3VsdCAtPlxuICAgICAgbGV0IG9mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICAgIGxldCBuZXh0X3BvcyA9IHBvcyArIChvZmZzZXQgLSBwcmV2aW91c19vZmZzZXQpIGluXG4gICAgICBEb25lIChyZXN1bHQsIHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBuZXh0X3BvcylcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZXhwLlBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGVyciAtPlxuICAgICAgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgKHBvcyArIChULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIC0gcHJldmlvdXNfb2Zmc2V0KSkgZXJyXG5cbiAgYW5kIG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2sgPVxuICAgIGxldCBwYXJzZV9mdW4gPVxuICAgICAgbGV0IHVzZWRfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgICAgICBpZiAhdXNlZF9yZWZcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cDogcGFyc2VyIGNvbnRpbnVhdGlvbiBjYWxsZWQgdHdpY2VcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICB1c2VkX3JlZiA6PSB0cnVlO1xuICAgICAgICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0cilcbiAgICBpblxuICAgIGxldCBjb250X3N0YXRlID0gVC5JbXBsLlN0YXRlLm9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSBpblxuICAgIENvbnQgKGNvbnRfc3RhdGUsIHBhcnNlX2Z1bilcbiAgOztcblxuICBsZXQgcGFyc2UgPyhwYXJzZV9wb3MgPSBQYXJzZV9wb3MuY3JlYXRlICgpKSA/bGVuIHN0ciA9XG4gICAgbGV0IHBvcywgYnVmX3BvcyA9XG4gICAgICBsZXQgeyBQYXJzZV9wb3MudGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfSA9IHBhcnNlX3BvcyBpblxuICAgICAgKCB7IFBhcnNleHAuUG9zaXRpb25zLmxpbmUgPSB0ZXh0X2xpbmU7IGNvbCA9IHRleHRfY2hhcjsgb2Zmc2V0ID0gZ2xvYmFsX29mZnNldCB9XG4gICAgICAsIGJ1Zl9wb3MgKVxuICAgIGluXG4gICAgbGV0IHN0YXRlID0gVC5JbXBsLlN0YXRlLmNyZWF0ZSB+cG9zIH5ub19zZXhwX2lzX2Vycm9yOmZhbHNlIFQucmFpc2VfZm91bmQgaW5cbiAgICBsZXQgc3RhY2sgPSBULkltcGwuU3RhY2suZW1wdHkgaW5cbiAgICBsZXQgbGVuID1cbiAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICB8IE5vbmUgLT4gVC5sZW5ndGggc3RyIC0gYnVmX3Bvc1xuICAgIGluXG4gICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfnBvczpidWZfcG9zIH5sZW5cbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIFN0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHIgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcbmxldCBwYXJzZSA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0cl9hbm5vdCA9IFN0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nID0gQmlnc3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZ19hbm5vdCA9IEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxuKCogSW5wdXQgZnVuY3Rpb25zICopXG5cbmxldCBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgPVxuICAoKTtcbiAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICBsZXQgcGFyc2VfcG9zID1cbiAgICAgIG1hdGNoIHBhcnNlX3BvcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2VfcG9zLmNyZWF0ZSB+YnVmX3Bvczpwb3MgKClcbiAgICAgIHwgU29tZSBwYXJzZV9wb3MgLT5cbiAgICAgICAgcGFyc2VfcG9zLlBhcnNlX3Bvcy5idWZfcG9zIDwtIHBvcztcbiAgICAgICAgcGFyc2VfcG9zXG4gICAgaW5cbiAgICBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjooU29tZSBsZW4pIHN0clxuOztcblxuKCogW3dzX2J1Zl0gbXVzdCBjb250YWluIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlciAqKVxubGV0IGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgPVxuICAoKiBXaGVuIHBhcnNpbmcgYXRvbXMsIHRoZSBpbmNyZW1lbnRhbCBwYXJzZXIgY2Fubm90IHRlbGwgd2hldGhlclxuICAgICBpdCBpcyBhdCB0aGUgZW5kIHVudGlsIGl0IGhpdHMgd2hpdGVzcGFjZS4gIFdlIHRoZXJlZm9yZSBmZWVkIGl0XG4gICAgIG9uZSBzcGFjZSB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBmaW5pc2hlZC4gKilcbiAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIHdzX2J1ZiB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgXykgLT4gT2sgc2V4cFxuICB8IENvbnQgKGNvbnRfc3RhdGUsIF8pIC0+IEVycm9yIGNvbnRfc3RhdGVcbjs7XG5cbmxldCBnZW5faW5wdXRfc2V4cCBteV9wYXJzZSA/cGFyc2VfcG9zIGljID1cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICAgfCBFcnJvciBfIC0+IHJhaXNlIEVuZF9vZl9maWxlKVxuICAgIHwgYyAtPlxuICAgICAgQnl0ZXMuc2V0IGJ1ZiAwIGM7XG4gICAgICAobWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICBsb29wIChta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UpXG47O1xuXG5sZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuXG5sZXQgZ2VuX2lucHV0X3Jldl9zZXhwcyBteV9wYXJzZSB+d3NfYnVmID9wYXJzZV9wb3MgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgaWMgPVxuICBsZXQgcmV2X3NleHBzX3JlZiA9IHJlZiBbXSBpblxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSAtPlxuICAgICAgICByZXZfc2V4cHNfcmVmIDo9IHNleHAgOjogIXJldl9zZXhwc19yZWY7XG4gICAgICAgIGxldCBuX3BhcnNlZCA9IGJ1Zl9wb3MgLSBwb3MgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgaWYgbl9wYXJzZWQgPSBsZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5ld19sZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOm5ld19sZW4pXG4gICAgICAgIGVsc2UgbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBuX3BhcnNlZClcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOihpbnB1dCBpYyBidWYgMCBidWZfbGVuKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHAgOjogIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoXCJTZXhwbGliLlNleHAuaW5wdXRfcmV2X3NleHBzOiByZWFjaGVkIEVPRiB3aGlsZSBpbiBzdGF0ZSBcIlxuICAgICAgICAgICBeIENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKVxuICBpblxuICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSBpblxuICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbjs7XG5cbmxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuOztcblxubGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4oKiBvZl9zdHJpbmcgYW5kIG9mX2JpZ3N0cmluZyAqKVxuXG5sZXQgb2Zfc3RyaW5nX2JpZ3N0cmluZyBsb2MgbXlfcGFyc2Ugd3NfYnVmIGdldF9sZW4gZ2V0X3N1YiBzdHIgPVxuICBtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOk5vbmUgP2xlbjpOb25lIHN0ciB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgcGFyc2VfcG9zKSAtPlxuICAgIChtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjpOb25lIHN0ciB3aXRoXG4gICAgIHwgRG9uZSAoX3NleHAyLCBfKSAtPlxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGdvdCBtdWx0aXBsZSBTLWV4cHJlc3Npb25zIHdoZXJlIG9ubHkgb25lIHdhcyBleHBlY3RlZC5cIlxuICAgICAgICAgICAgbG9jKVxuICAgICB8IENvbnQgKENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCBfKSAtPiBzZXhwXG4gICAgIHwgQ29udCAoXywgXykgLT5cbiAgICAgICAoKiBub3QgdXNpbmcgW2ZlZWRfZW5kX29mX2lucHV0XSBoZXJlIG1lYW5zIFwiYSBiXCIgd2lsbCBlbmQgdXAgaGVyZSBhbmQgbm90IGluXG4gICAgICAgICAgXCJtdWx0aXBsZSBTLWV4cHJlc3Npb25zXCIgYnJhbmNoLCBidXQgaXQgZG9lc24ndCBtYXR0ZXIgdGhhdCBtdWNoICopXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogUy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGEgYXQgcG9zaXRpb24gJWQuLi5cIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBwYXJzZV9wb3MuYnVmX3BvcykpXG4gIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT5cbiAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgIGxldCBjb250X3N0YXRlX3N0ciA9IENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUgaW5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBpbmNvbXBsZXRlIFMtZXhwcmVzc2lvbiB3aGlsZSBpbiBzdGF0ZSAlczogJXNcIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBjb250X3N0YXRlX3N0clxuICAgICAgICAgICAgKGdldF9zdWIgc3RyIDAgKGdldF9sZW4gc3RyKSkpKVxuOztcblxubGV0IG9mX3N0cmluZyBzdHIgPSBvZl9zdHJpbmdfYmlnc3RyaW5nIFwib2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxubGV0IG9mX3N0cmluZ19tYW55IHN0ciA9IFBhcnNleHAuTWFueS5wYXJzZV9zdHJpbmdfZXhuIHN0clxuXG5sZXQgZ2V0X2JzdHJfc3ViX3N0ciBic3RyIHBvcyBsZW4gPVxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntwb3MgKyBpfVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJzdHJfd3NfYnVmID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IDFcbmxldCAoKSA9IGJzdHJfd3NfYnVmLnswfSA8LSAnICdcblxubGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgIFwib2ZfYmlnc3RyaW5nXCJcbiAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICBic3RyX3dzX2J1ZlxuICAgIEFycmF5MS5kaW1cbiAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgYnN0clxuOztcblxuKCogTG9hZGluZyAqKVxuXG5sZXQgZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHBzID0gaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3M6Tm9uZSA/YnVmIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cHNcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG5sZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxubGV0IGdlbl9sb2FkX3NleHBfbG9jID0gXCJTZXhwbGliLlNleHAuZ2VuX2xvYWRfc2V4cFwiXG5cbmxldCBnZW5fbG9hZF9zZXhwIG15X3BhcnNlID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSA9XG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICBcIiVzOiBFT0YgaW4gJXMgd2hpbGUgaW4gc3RhdGUgJXNcIlxuICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIHdoZW4gc3RyaWN0IC0+XG4gICAgICAgIGxldCByZWMgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgICAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgICAgIHwgRG9uZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoc3ByaW50ZiBcIiVzOiBtb3JlIHRoYW4gb25lIFMtZXhwcmVzc2lvbiBpbiBmaWxlICVzXCIgZ2VuX2xvYWRfc2V4cF9sb2MgZmlsZSlcbiAgICAgICAgICB8IENvbnQgKGNvbnRfc3RhdGUsIHRoaXNfcGFyc2UpIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgICAgaWYgbGVuID4gMFxuICAgICAgICAgICAgdGhlbiBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG4gICAgICAgICAgICBlbHNlIGlmIGNvbnRfc3RhdGUgPSBDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgICAgICAgICAgdGhlbiBzZXhwXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIiVzOiAlcyBpbiBzdGF0ZSAlcyBsb2FkaW5nIGZpbGUgJXNcIlxuICAgICAgICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgICAgICAgXCJhZGRpdGlvbmFsIGluY29tcGxldGUgZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgZmlsZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gYnVmX3BvcylcbiAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIHRyeVxuICAgIGxldCBzZXhwID0gbG9vcCAobWtfdGhpc19wYXJzZSBteV9wYXJzZSkgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbm1vZHVsZSBBbm5vdGF0ZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBbm5vdFxuXG4gIGxldCBwYXJzZSA9IHBhcnNlX3N0cl9hbm5vdFxuICBsZXQgcGFyc2VfYmlnc3RyaW5nID0gcGFyc2VfYmlnc3RyaW5nX2Fubm90XG5cbiAgbGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICAgIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbiAgOztcblxuICBsZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuICBsZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmcgXCJBbm5vdGF0ZWQub2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxuICA7O1xuXG4gIGxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgICAgXCJBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nXCJcbiAgICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgICAgYnN0cl93c19idWZcbiAgICAgIEFycmF5MS5kaW1cbiAgICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICAgIGJzdHJcbiAgOztcblxuICBsZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbiAgbGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbiAgbGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxuICBsZXQgY29udiBmIGFubm90X3NleHAgPVxuICAgIGxldCBzZXhwID0gZ2V0X3NleHAgYW5ub3Rfc2V4cCBpblxuICAgIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4YywgYmFkX3NleHApIGFzIGUgLT5cbiAgICAgIChtYXRjaCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBiYWRfc2V4cCB3aXRoXG4gICAgICAgfCBOb25lIC0+IHJhaXNlIGVcbiAgICAgICB8IFNvbWUgYmFkX2Fubm90X3NleHAgLT4gYEVycm9yIChleGMsIGJhZF9hbm5vdF9zZXhwKSlcbiAgOztcblxuICBsZXQgZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHJhbmdlID0gZ2V0X3JhbmdlIGFubm90X3NleHAgaW5cbiAgICBsZXQgeyBzdGFydF9wb3MgPSB7IGxpbmU7IGNvbDsgb2Zmc2V0ID0gXyB9OyBlbmRfcG9zID0gXyB9ID0gcmFuZ2UgaW5cbiAgICBsZXQgbG9jID0gc3ByaW50ZiBcIiVzOiVkOiVkXCIgZmlsZSBsaW5lIGNvbCBpblxuICAgIE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2MsIGV4YyksIGdldF9zZXhwIGFubm90X3NleHApXG4gIDs7XG5lbmRcblxubGV0IGxvYWRfc2V4cF9jb252ID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHNleHAgPSBsb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChBbm5vdGF0ZWQubG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlKVxuOztcblxubGV0IHJhaXNlX2NvbnZfZXhuIH5maWxlID0gZnVuY3Rpb25cbiAgfCBgUmVzdWx0IHJlcyAtPiByZXNcbiAgfCBgRXJyb3IgKGV4YywgYW5ub3Rfc2V4cCkgLT4gcmFpc2UgKEFubm90YXRlZC5nZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwKVxuOztcblxubGV0IGxvYWRfc2V4cF9jb252X2V4biA/c3RyaWN0ID9idWYgZmlsZSBmID1cbiAgcmFpc2VfY29udl9leG4gfmZpbGUgKGxvYWRfc2V4cF9jb252ID9zdHJpY3QgP2J1ZiBmaWxlIGYpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252ID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYFJlc3VsdCAoZiBzZXhwKSkgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcCAoZnVuIGFubm90X3NleHAgLT4gQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252X2V4biA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgZiByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGFubm90X3NleHAgLT4gcmFpc2VfY29udl9leG4gfmZpbGUgKEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkpXG4gICAgICAgICByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBhbm5vdF9vZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChhbm5vdF9vZl9zdHJpbmcgc3RyKVxuOztcblxubGV0IG9mX3N0cmluZ19jb252IHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBBbm5vdGF0ZWQub2Zfc3RyaW5nIHN0ciBmXG5cbmxldCBvZl9iaWdzdHJpbmdfY29udiBic3RyIGYgPVxuICBnZW5fb2Zfc3RyaW5nX2NvbnYgb2ZfYmlnc3RyaW5nIEFubm90YXRlZC5vZl9iaWdzdHJpbmcgYnN0ciBmXG47O1xuXG5tb2R1bGUgT2Zfc3RyaW5nX2NvbnZfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleGMgOiBleG5cbiAgICA7IHNleHAgOiBUeXBlLnRcbiAgICA7IHN1Yl9zZXhwIDogVHlwZS50XG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBFIG9mIHRcblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVdIChmdW5jdGlvblxuICAgICAgfCBFIG9zY2UgLT5cbiAgICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5pbnZhbGlkX3NleHA6b3NjZS5zdWJfc2V4cFxuICAgICAgICAgIH5leG46b3NjZS5leGNcbiAgICAgICAgICB+Y29udGFpbmluZ19zZXhwOm9zY2Uuc2V4cFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcbmVuZFxuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGYgc2V4cCB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzdWJfc2V4cCkgLT5cbiAgICByYWlzZSAoT2Zfc3RyaW5nX2NvbnZfZXhuLkUgeyBPZl9zdHJpbmdfY29udl9leG4uZXhjOyBzZXhwOyBzdWJfc2V4cCB9KVxuOztcblxubGV0IG9mX3N0cmluZ19jb252X2V4biBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnZfZXhuIGJzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2ZfYmlnc3RyaW5nIGJzdHIgZlxuXG5sZXQgb2Zfc3RyaW5nX21hbnlfY29udl9leG4gc3RyIGYgPVxuICBsZXQgc2V4cHMgPSBvZl9zdHJpbmdfbWFueSBzdHIgaW5cbiAgTGlzdC5tYXAgKGZ1biBzZXhwIC0+IGdlbl9vZl9zdHJpbmdfY29udl9leG4gKGZ1biB4IC0+IHgpIHNleHAgZikgc2V4cHNcbjs7XG5cbigqIFV0aWxpdGllcyBmb3IgYXV0b21hdGVkIHR5cGUgY29udmVyc2lvbnMgKilcblxubGV0IHVuaXQgPSBMaXN0IFtdXG5cbmxldCBpc191bml0ID0gZnVuY3Rpb25cbiAgfCBMaXN0IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5leHRlcm5hbCBzZXhwX29mX3QgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X29mX3NleHAgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIFV0aWxpdGllcyBmb3IgY29udmVyc2lvbiBlcnJvciBoYW5kbGluZyAqKVxuXG50eXBlIGZvdW5kID1cbiAgWyBgRm91bmRcbiAgfCBgUG9zIG9mIGludCAqIGZvdW5kXG4gIF1cblxudHlwZSBzZWFyY2hfcmVzdWx0ID1cbiAgWyBgTm90X2ZvdW5kXG4gIHwgZm91bmRcbiAgXVxuXG5sZXQgcmVjIHNlYXJjaF9waHlzaWNhbCBzZXhwIH5jb250YWluZWQgPVxuICBpZiBzZXhwID09IGNvbnRhaW5lZFxuICB0aGVuIGBGb3VuZFxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gXyAtPiBgTm90X2ZvdW5kXG4gICAgfCBMaXN0IGxzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGBOb3RfZm91bmRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgcmVzID0gc2VhcmNoX3BoeXNpY2FsIGggfmNvbnRhaW5lZCBpblxuICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICB8IGBOb3RfZm91bmQgLT4gbG9vcCAoaSArIDEpIHRcbiAgICAgICAgICAgfCAjZm91bmQgYXMgZm91bmQgLT4gYFBvcyAoaSwgZm91bmQpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCBsc3QpXG47O1xuXG5sZXQgcmVjIHN1YnN0X2ZvdW5kIHNleHAgfnN1YnN0ID0gZnVuY3Rpb25cbiAgfCBgRm91bmQgLT4gc3Vic3RcbiAgfCBgUG9zIChwb3MsIGZvdW5kKSAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBBdG9tIF8gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IGF0b20gd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICB8IExpc3QgbHN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGFjYyBwb3MgPSBmdW5jdGlvblxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogc2hvcnQgbGlzdCB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgICAgICB8IGggOjogdCB3aGVuIHBvcyA8PiAwIC0+IGxvb3AgKGggOjogYWNjKSAocG9zIC0gMSkgdFxuICAgICAgICAgfCBoIDo6IHQgLT4gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoc3Vic3RfZm91bmQgaCB+c3Vic3QgZm91bmQgOjogdCkpXG4gICAgICAgaW5cbiAgICAgICBsb29wIFtdIHBvcyBsc3QpXG47O1xuIiwiKCogcGFja2FnaW5nIG9mIGFubm90YXRlZCBzZXhwIGZ1bmN0aW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyIGYgdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5pbmNsdWRlIFR5cGVfd2l0aF9sYXlvdXRcblxudHlwZSBwb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnQgPVxuICB7IHJvdyA6IGludFxuICA7IGNvbCA6IGludFxuICB9XG5cbmxldCBzZXhwX29mX3BvcyA9IFNyY19wb3MuUmVsYXRpdmUuc2V4cF9vZl90XG5cbm1vZHVsZSBMZXhlciA9IHN0cnVjdFxuICBsZXQgbWFpbiA9IExleGVyLm1haW5fd2l0aF9sYXlvdXRcbmVuZFxuXG5tb2R1bGUgUGFyc2VyID0gUGFyc2VyX3dpdGhfbGF5b3V0XG5cbm1vZHVsZSBSZW5kZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlbF9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlXG4gIG1vZHVsZSBBYnNfcG9zID0gU3JjX3Bvcy5BYnNvbHV0ZVxuXG4gIHR5cGUgbGFzdF9hdG9tID1cbiAgICB7IGltbWVkX2FmdGVyIDogQWJzX3Bvcy50XG4gICAgOyB1bmVzY2FwZWQgOiBib29sXG4gICAgfVxuXG4gIHR5cGUgc3RhdGUgPVxuICAgIHsgbXV0YWJsZSByb3dfc2hpZnQgOiBSZWxfcG9zLnRcbiAgICA7IG11dGFibGUgY3VycmVudCA6IEFic19wb3MudFxuICAgIDsgbXV0YWJsZSBsYXN0X2F0b20gOiBsYXN0X2F0b20gb3B0aW9uXG4gICAgOyBtdXRhYmxlIGxhc3RfY29tbWVudF9yb3cgOiBpbnRcbiAgICB9XG5cbiAgKCogdGhlIHBvaW50IG9mIFtpbW1lZF9hZnRlcl9sYXN0X2F0b21dIGlzIHRvIHByZXZlbnRcbiAgICAgKEEgQiBDKSBmcm9tIHJlbmRlcmluZyBhcyAoQSBCQkMpIGFmdGVyIHdlIHJlcGxhY2UgQiB3aXRoIEJCICopXG5cbiAgdHlwZSAnYSB0ID0gKGNoYXIgLT4gdW5pdCkgLT4gc3RhdGUgLT4gJ2FcblxuICBsZXQgcmV0dXJuIGEgX3B1dGMgX3N0ID0gYVxuICBsZXQgYmluZCBtIH5mIHB1dGMgc3QgPSBmIChtIHB1dGMgc3QpIHB1dGMgc3RcblxuICBsZXQgcnVuIHB1dGMgbSA9XG4gICAgbVxuICAgICAgcHV0Y1xuICAgICAgeyByb3dfc2hpZnQgPSBSZWxfcG9zLnplcm9cbiAgICAgIDsgY3VycmVudCA9IEFic19wb3Mub3JpZ2luXG4gICAgICA7IGxhc3RfYXRvbSA9IE5vbmVcbiAgICAgIDsgbGFzdF9jb21tZW50X3JvdyA9IDAgKCogYmVmb3JlIHRoZSBmaWxlIHN0YXJ0cyAqKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXIgcHV0YyBzdCBjID1cbiAgICBsZXQgeyBBYnNfcG9zLmNvbDsgcm93IH0gPSBzdC5jdXJyZW50IGluXG4gICAgcHV0YyBjO1xuICAgIGlmIGMgPSAnXFxuJ1xuICAgIHRoZW4gc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93ID0gMSArIHJvdzsgY29sID0gMSB9XG4gICAgZWxzZSBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3c7IGNvbCA9IDEgKyBjb2wgfVxuICA7O1xuXG4gIGxldCBlbWl0X3N0cmluZyBwdXRjIHN0IHN0ciA9XG4gICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3Qgc3RyLltpXVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgZW1pdF9jaGFycyBwdXRjIHN0IGMgfm4gPSBlbWl0X3N0cmluZyBwdXRjIHN0IChTdHJpbmcubWFrZSBuIGMpXG5cbiAgbGV0IGFkdmFuY2UgcHV0YyB+YW5jaG9yIHN0IH5ieTpkZWx0YSB+dW5lc2NhcGVkX2F0b20gfmxpbmVfY29tbWVudCA9XG4gICAgbGV0IG5ld19wb3MgPSBBYnNfcG9zLmFkZCAoQWJzX3Bvcy5hZGQgYW5jaG9yIGRlbHRhKSBzdC5yb3dfc2hpZnQgaW5cbiAgICBsZXQgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZSA9XG4gICAgICB1bmVzY2FwZWRfYXRvbVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHN0Lmxhc3RfYXRvbSB3aXRoXG4gICAgICB8IFNvbWUgeyBpbW1lZF9hZnRlcjsgdW5lc2NhcGVkID0gcHJldl91bmVzY2FwZWQgfSAtPlxuICAgICAgICBuZXdfcG9zID0gaW1tZWRfYWZ0ZXIgJiYgcHJldl91bmVzY2FwZWRcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIGluXG4gICAgKCogYXZvaWQgam9pbmluZyBzdWJzZXF1ZW50IGl0ZW1zIGludG8gYSBwcmVjZWRpbmcgbGluZSBjb21tZW50ICopXG4gICAgbGV0IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50ID0gbmV3X3Bvcy5yb3cgPSBzdC5sYXN0X2NvbW1lbnRfcm93IGluXG4gICAgbGV0IG5lZWRfdG9fcmVwb3NpdGlvbiA9XG4gICAgICAobm90IChBYnNfcG9zLmdlcSBuZXdfcG9zIHN0LmN1cnJlbnQpKVxuICAgICAgfHwgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnRcbiAgICAgIHx8IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmVcbiAgICBpblxuICAgIGxldCByb3dfZGVsdGEsIG5ld19wb3MgPVxuICAgICAgaWYgbmVlZF90b19yZXBvc2l0aW9uXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogcmVwb3NpdGlvbmluZyBoZXVyaXN0aWM6IGp1c3QgbW92ZSB0byB0aGUgbmV4dCBmcmVzaCByb3cgKilcbiAgICAgICAgbGV0IG5ld19yb3cgPSAxICsgc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgICBsZXQgcm93X2RlbHRhID0gbmV3X3JvdyAtIG5ld19wb3MuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgcm93X2RlbHRhLCB7IEFic19wb3Mucm93ID0gbmV3X3JvdzsgY29sID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCB9KVxuICAgICAgZWxzZSAwLCBuZXdfcG9zXG4gICAgaW5cbiAgICAoKiBhZHZhbmNlIHRvIG5ld19wb3MgYnkgZW1pdHRpbmcgd2hpdGVzcGFjZSAqKVxuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5yb3cgPiBzdC5jdXJyZW50LkFic19wb3Mucm93XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5yb3cgLSBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJ1xcbicgfm4pO1xuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5jb2wgPiBzdC5jdXJyZW50LkFic19wb3MuY29sXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgLSBzdC5jdXJyZW50LkFic19wb3MuY29sIGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJyAnIH5uKTtcbiAgICBhc3NlcnQgKG5ld19wb3MgPSBzdC5jdXJyZW50KTtcbiAgICBpZiBsaW5lX2NvbW1lbnQgdGhlbiBzdC5sYXN0X2NvbW1lbnRfcm93IDwtIHN0LmN1cnJlbnQucm93O1xuICAgIHN0LnJvd19zaGlmdFxuICAgIDwtIHsgc3Qucm93X3NoaWZ0IHdpdGggUmVsX3Bvcy5yb3cgPSBzdC5yb3dfc2hpZnQuUmVsX3Bvcy5yb3cgKyByb3dfZGVsdGEgfVxuICA7O1xuXG4gIGxldCByZWMgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIChzdCA6IHN0YXRlKSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEF0b20gKGRlbHRhLCB0ZXh0LCBmbXRfdGV4dCkgLT5cbiAgICAgIGxldCBmbXRfdGV4dCA9XG4gICAgICAgIG1hdGNoIGZtdF90ZXh0IHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+IFByZV9zZXhwLm1hY2hfbWF5YmVfZXNjX3N0ciB0ZXh0XG4gICAgICAgIHwgU29tZSB0ZXh0IC0+IHRleHRcbiAgICAgIGluXG4gICAgICBsZXQgdW5lc2NhcGVkID0gZm10X3RleHQuWzBdIDw+ICdcIicgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206dW5lc2NhcGVkIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IGZtdF90ZXh0O1xuICAgICAgc3QubGFzdF9hdG9tIDwtIFNvbWUgeyBpbW1lZF9hZnRlciA9IHN0LmN1cnJlbnQ7IHVuZXNjYXBlZCB9XG4gICAgfCBMaXN0IChzdGFydF9kZWx0YSwgdG9jcywgZW5kX2RlbHRhKSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpzdGFydF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgbGV0IGNoaWxkX2FuY2hvciA9IEFic19wb3Muc3ViIHN0LmN1cnJlbnQgc3Qucm93X3NoaWZ0IGluXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKCc7XG4gICAgICBMaXN0Lml0ZXIgdG9jcyB+ZjooZnVuIHRvYyAtPiByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpjaGlsZF9hbmNob3Igc3QgdG9jKTtcbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZW5kX2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKSc7XG4gICAgICAoKVxuXG4gIGFuZCByZW5kZXJfdG9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgICB8IENvbW1lbnQgYyAtPiByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgY1xuXG4gIGFuZCByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCAoZGVsdGEsIHRleHQpIC0+XG4gICAgICBsZXQgbGluZV9jb21tZW50ID0gU3RyaW5nLmxlbmd0aCB0ZXh0ID4gMCAmJiB0ZXh0LlswXSA9ICc7JyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50O1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCB0ZXh0XG4gICAgfCBTZXhwX2NvbW1lbnQgKGRlbHRhLCBjcywgdCkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgXCIjO1wiO1xuICAgICAgTGlzdC5pdGVyIGNzIH5mOihyZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QpO1xuICAgICAgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgOztcblxuICBsZXQgcmVuZGVyIGFzZXhwIHB1dGMgc3QgPSByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpBYnNfcG9zLm9yaWdpbiBzdCBhc2V4cFxuICBsZXQgc2V4cCA9IHJlbmRlclxuZW5kXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFR5cGUudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoVHlwZS50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoVHlwZS50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIChfLCB4LCBfKSAtPiBrIChUeXBlLkF0b20geClcbiAgICAgIHwgTGlzdCAoXywgdG9jcywgXykgLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKFR5cGUuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5vcGVuIFNleHBcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDMyX3ZlYyA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDY0X3ZlYyA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSBmbG9hdDY0X3ZlY1xudHlwZSBmbG9hdDMyX21hdCA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBmbG9hdDY0X21hdCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBmbG9hdDY0X21hdFxuXG5sZXQgc2V4cF9vZl9mbG9hdF92ZWMgdmVjID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheTEuZGltIHZlYyBkb3dudG8gMSBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCB2ZWMue2l9IDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2JpZ3N0cmluZyAoYnN0ciA6IGJpZ3N0cmluZykgPVxuICBsZXQgbiA9IEFycmF5MS5kaW0gYnN0ciBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue2l9XG4gIGRvbmU7XG4gIEF0b20gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl92ZWMgKHZlYyA6IGZsb2F0MzJfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfZmxvYXQ2NF92ZWMgKHZlYyA6IGZsb2F0NjRfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfdmVjICh2ZWMgOiB2ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5cbmxldCBzZXhwX29mX2Zsb2F0X21hdCBtYXQgPVxuICBsZXQgbSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgbiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICAoKiBJdCdzIHN1cnByaXNpbmcgdGhhdCB3ZSBzZXJpYWxpemUgW0ZvcnRyYW5fbGF5b3V0XSBtYXRyaWNlcyBpbiByb3ctbWFqb3Igb3JkZXIuIEkgY2FuXG4gICAgIG9ubHkgc3BlY3VsYXRlIHRoYXQgaXQgd2FzIGNob3NlbiBmb3IgcmVhZGFiaWxpdHkuIFRoZSBjYWNoZSBwZXJmb3JtYW5jZSBpc1xuICAgICBpcnJlbGV2YW50IGJlY2F1c2UgcGVvcGxlIHdobyBjYXJlIHdvbid0IHNlcmlhbGl6ZSB0byBzZXhwLiAqKVxuICBmb3Igcm93ID0gbiBkb3dudG8gMSBkb1xuICAgIGZvciBjb2wgPSBtIGRvd250byAxIGRvXG4gICAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgbWF0Lntjb2wsIHJvd30gOjogIWxzdF9yZWZcbiAgICBkb25lXG4gIGRvbmU7XG4gIExpc3QgKHNleHBfb2ZfaW50IG0gOjogc2V4cF9vZl9pbnQgbiA6OiAhbHN0X3JlZilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfbWF0IChtYXQgOiBmbG9hdDMyX21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX2Zsb2F0NjRfbWF0IChtYXQgOiBmbG9hdDY0X21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX21hdCAobWF0IDogbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IGJpZ3N0cmluZ19zZXhwX2dyYW1tYXIgOiBiaWdzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxuXG5sZXQgYmlnc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGJzdHIgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGJzdHIue2l9IDwtIHN0ci5baV1cbiAgICBkb25lO1xuICAgIGJzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdF92ZWMgY3JlYXRlX2Zsb2F0X3ZlYyBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBlbXB0eV9mbG9hdF92ZWNcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X3ZlYyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLntpfSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF92ZWNfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZW1wdHlfZmxvYXQzMl92ZWMgPSBjcmVhdGVfZmxvYXQzMl92ZWMgMFxubGV0IGVtcHR5X2Zsb2F0NjRfdmVjID0gY3JlYXRlX2Zsb2F0NjRfdmVjIDBcbmxldCBmbG9hdDMyX3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQzMl92ZWMgY3JlYXRlX2Zsb2F0MzJfdmVjXG5sZXQgZmxvYXQ2NF92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IChNYW55IEZsb2F0KSB9XG5sZXQgZmxvYXQzMl92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcblxubGV0IGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlcyA9XG4gIGlmIGRhdGEgPSBbXSB0aGVuIHJlcyBlbHNlIG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogdG9vIG11Y2ggZGF0YVwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXRfbWF0IHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IChzbSA6OiBzbiA6OiBkYXRhKSAtPlxuICAgIGxldCBtID0gaW50X29mX3NleHAgc20gaW5cbiAgICBsZXQgbiA9IGludF9vZl9zZXhwIHNuIGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF9tYXQgbSBuIGluXG4gICAgaWYgbSA9IDAgfHwgbiA9IDBcbiAgICB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wX2NvbHMgY29sIGRhdGEgPVxuICAgICAgICBsZXQgdmVjID0gQXJyYXkyLnNsaWNlX3JpZ2h0IHJlcyBjb2wgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wX3Jvd3Mgcm93ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbm90IGVub3VnaCBkYXRhXCIgc2V4cFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICB2ZWMue3Jvd30gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICAgICAgaWYgcm93ID0gbVxuICAgICAgICAgICAgdGhlbiBpZiBjb2wgPSBuIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIHQgcmVzIGVsc2UgbG9vcF9jb2xzIChjb2wgKyAxKSB0XG4gICAgICAgICAgICBlbHNlIGxvb3Bfcm93cyAocm93ICsgMSkgdFxuICAgICAgICBpblxuICAgICAgICBsb29wX3Jvd3MgMSBkYXRhXG4gICAgICBpblxuICAgICAgbG9vcF9jb2xzIDEgZGF0YSlcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IHRvbyBzaG9ydFwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDMyX21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0MzJfbWF0XG5sZXQgZmxvYXQ2NF9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxubGV0IG1hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBtYXRfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKENvbnMgKEludGVnZXIsIENvbnMgKEludGVnZXIsIE1hbnkgRmxvYXQpKSkgfVxuOztcblxubGV0IGZsb2F0MzJfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgc3RyaW5nX29mX19vZl9fc2V4cF9vZiB0b19zZXhwIHggPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCB4KVxuXG5sZXQgb2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBvZl9zZXhwIHMgPVxuICB0cnlcbiAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHMgaW5cbiAgICBvZl9zZXhwIHNleHBcbiAgd2l0aFxuICB8IGUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKHNwcmludGYgXCJvZl9zdHJpbmcgZmFpbGVkIG9uICVzIHdpdGggJXNcIiBzIChTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpKSlcbjs7XG4iLCJtb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2hhc2h0YmxcbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYuaGFzaHRibF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMYXp5XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IHNleHBfb2ZfdW5pdCA9IENvbnYuc2V4cF9vZl91bml0XG5sZXQgdW5pdF9vZl9zZXhwID0gQ29udi51bml0X29mX3NleHBcbmxldCB1bml0X3NleHBfZ3JhbW1hciA9IENvbnYudW5pdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Jvb2wgPSBDb252LnNleHBfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc2V4cCA9IENvbnYuYm9vbF9vZl9zZXhwXG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgPSBDb252LmJvb2xfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9zdHJpbmcgPSBDb252LnNleHBfb2Zfc3RyaW5nXG5sZXQgc3RyaW5nX29mX3NleHAgPSBDb252LnN0cmluZ19vZl9zZXhwXG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA9IENvbnYuc3RyaW5nX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfY2hhciA9IENvbnYuc2V4cF9vZl9jaGFyXG5sZXQgY2hhcl9vZl9zZXhwID0gQ29udi5jaGFyX29mX3NleHBcbmxldCBjaGFyX3NleHBfZ3JhbW1hciA9IENvbnYuY2hhcl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludCA9IENvbnYuc2V4cF9vZl9pbnRcbmxldCBpbnRfb2Zfc2V4cCA9IENvbnYuaW50X29mX3NleHBcbmxldCBpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9mbG9hdCA9IENvbnYuc2V4cF9vZl9mbG9hdFxubGV0IGZsb2F0X29mX3NleHAgPSBDb252LmZsb2F0X29mX3NleHBcbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgPSBDb252LmZsb2F0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50MzIgPSBDb252LnNleHBfb2ZfaW50MzJcbmxldCBpbnQzMl9vZl9zZXhwID0gQ29udi5pbnQzMl9vZl9zZXhwXG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQzMl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDY0ID0gQ29udi5zZXhwX29mX2ludDY0XG5sZXQgaW50NjRfb2Zfc2V4cCA9IENvbnYuaW50NjRfb2Zfc2V4cFxubGV0IGludDY0X3NleHBfZ3JhbW1hciA9IENvbnYuaW50NjRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSBDb252LnNleHBfb2ZfbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X29mX3NleHAgPSBDb252Lm5hdGl2ZWludF9vZl9zZXhwXG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA9IENvbnYubmF0aXZlaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfcmVmID0gQ29udi5zZXhwX29mX3JlZlxubGV0IHJlZl9vZl9zZXhwID0gQ29udi5yZWZfb2Zfc2V4cFxubGV0IHJlZl9zZXhwX2dyYW1tYXIgPSBDb252LnJlZl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xhenlfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbmxldCBsYXp5X3Rfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9vcHRpb24gPSBDb252LnNleHBfb2Zfb3B0aW9uXG5sZXQgb3B0aW9uX29mX3NleHAgPSBDb252Lm9wdGlvbl9vZl9zZXhwXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciA9IENvbnYub3B0aW9uX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGlzdCA9IENvbnYuc2V4cF9vZl9saXN0XG5sZXQgbGlzdF9vZl9zZXhwID0gQ29udi5saXN0X29mX3NleHBcbmxldCBsaXN0X3NleHBfZ3JhbW1hciA9IENvbnYubGlzdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2FycmF5ID0gQ29udi5zZXhwX29mX2FycmF5XG5sZXQgYXJyYXlfb2Zfc2V4cCA9IENvbnYuYXJyYXlfb2Zfc2V4cFxubGV0IGFycmF5X3NleHBfZ3JhbW1hciA9IENvbnYuYXJyYXlfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9leG4gPSBDb252LnNleHBfb2ZfZXhuXG5sZXQgZXhuX3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuIiwiaW5jbHVkZSBTZXhwX2dyYW1tYXJfaW50ZlxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubGV0IHJlbWVtYmVyX3RvX3VwZGF0ZV90aGVzZV90b2dldGhlciB+dF9vZl9zZXhwIH50X3NleHBfZ3JhbW1hciA9XG4gIHRfb2Zfc2V4cCwgdF9zZXhwX2dyYW1tYXJcbjs7XG4iLCIoKiBQYXRoOiBNb2R1bGUgZm9yIFN1YnN0aXR1dGlvbnMgd2l0aGluIFMtZXhwcmVzc2lvbnMgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gU2V4cFxuXG50eXBlIGVsID1cbiAgfCBQb3Mgb2YgaW50XG4gIHwgTWF0Y2ggb2Ygc3RyaW5nICogaW50XG4gIHwgUmVjIG9mIHN0cmluZ1xuXG50eXBlIHQgPSBlbCBsaXN0XG5cbmxldCBpbGxlZ2FsX2F0b20gbG9jIHNleHAgPVxuICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgYXRvbTogJXNcIiBsb2MgKFNleHAudG9fc3RyaW5nIHNleHApKVxuOztcblxubGV0IGV4dHJhY3RfcG9zX2xzdCBsb2Mgc2V4cCBpeCBsc3QgPVxuICBsZXQgcmVjIGxvb3AgYWNjIG4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBpbmRleCAlZCBpbjogJXNcIiBsb2MgaXggc2V4cF9zdHIpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN1YnN0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgICAgfCBTb21lIHggLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeCA6OiB0KVxuICAgICAgICBpblxuICAgICAgICBzdWJzdCwgaClcbiAgICAgIGVsc2UgbG9vcCAoaCA6OiBhY2MpIChuIC0gMSkgdFxuICBpblxuICBsb29wIFtdIGl4IGxzdFxuOztcblxubGV0IGV4dHJhY3RfcG9zIG4gPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9wb3NcIiBzZXhwIG4gbHN0IGluXG4gICAgKGZ1biB4IC0+IExpc3QgKHN1YnN0IHgpKSwgZWxcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3Bvc1wiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggPSBmdW5jdGlvblxuICB8IExpc3QgKChBdG9tIHN0ciBhcyBzZXhwKSA6OiBhcmdzKSB3aGVuIHN0ciA9IHRhZyAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X21hdGNoXCIgKExpc3QgYXJncykgYXJnX2l4IGFyZ3MgaW5cbiAgICAoZnVuIG1heWJlX3ggLT4gTGlzdCAoc2V4cCA6OiBzdWJzdCBtYXliZV94KSksIGVsXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgZmFpbHdpdGggKFwiUGF0aC5leHRyYWN0X21hdGNoOiB1bmV4cGVjdGVkIG5lc3RlZCBsaXN0IGluOiBcIiBeIHNleHBfc3RyKVxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfbWF0Y2hcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLmV4dHJhY3RfcmVjOiBrZXkgXFxcIiVzXFxcIiBub3QgZm91bmQgaW46ICVzXCIga2V5IHNleHBfc3RyKVxuICAgICAgfCBMaXN0IFsgKEF0b20gc3RyIGFzIHNleHApOyB2IF0gOjogcmVzdCB3aGVuIHN0ciA9IGtleSAtPlxuICAgICAgICBsZXQgc3Vic3QgeCA9IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKExpc3QgWyBzZXhwOyB4IF0gOjogcmVzdCkpIGluXG4gICAgICAgIHN1YnN0LCB2XG4gICAgICB8IGggOjogdCAtPiBsb29wIChoIDo6IGFjYykgdFxuICAgIGluXG4gICAgbG9vcCBbXSBsc3RcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3JlY1wiIHNleHBcbjs7XG5cbmxldCBpZCB4ID0geFxuXG5sZXQgcmVjIHN1YnN0X29wdGlvbiAoc3VwX3N1YnN0LCBlbCkgcmVzdCA9XG4gIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICBsZXQgc3Vic3QgeCA9IHN1cF9zdWJzdCAoU29tZSAoc3ViX3N1YnN0IHgpKSBpblxuICBzdWJzdCwgc3ViX2VsXG5cbmFuZCBzdWJzdF9wYXRoIHNleHAgPSBmdW5jdGlvblxuICB8IFBvcyBuIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X3BvcyBuIHNleHApIHRcbiAgfCBNYXRjaCAodGFnLCBhcmdfaXgpIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggc2V4cCkgdFxuICB8IFJlYyBrZXkgOjogcmVzdCAtPlxuICAgIGxldCByZWNfc3Vic3QsIGVsID0gZXh0cmFjdF9yZWMga2V5IHNleHAgaW5cbiAgICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgICBsZXQgc3Vic3QgeCA9IHJlY19zdWJzdCAoc3ViX3N1YnN0IHgpIGluXG4gICAgc3Vic3QsIHN1Yl9lbFxuICB8IFtdIC0+IGlkLCBzZXhwXG47O1xuXG5sZXQgaW1wbG9kZSBsc3QgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpeCA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIEJ5dGVzLnNldCBzdHIgaXggaDtcbiAgICAgIGxvb3AgKGl4ICsgMSkgdFxuICAgIHwgW10gLT4gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgaW5cbiAgbG9vcCAwIGxzdFxuOztcblxubGV0IGZhaWxfcGFyc2UgbXNnID0gZmFpbHdpdGggKFwiUGF0aC5wYXJzZTogXCIgXiBtc2cpXG5cbmxldCBwYXJzZSBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIGZhaWxfcGFyc2UgXCJwYXRoIGVtcHR5XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGFjYyBkb3RfaXggPVxuICAgICAgbWF0Y2ggc3RyLltkb3RfaXhdIHdpdGhcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBkb3RfaXgxID0gZG90X2l4ICsgMSBpblxuICAgICAgICBpZiBkb3RfaXgxID0gbGVuXG4gICAgICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgcGFyc2VfZG90IGFjYyBzdHJfYWNjIGl4ID1cbiAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBdXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgICAgICAgICB8ICdbJyAtPlxuICAgICAgICAgICAgICAgIGxldCByZWMgcGFyc2VfaW5kZXggaW5kZXhfYWNjIGl4ID1cbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgcmVhZGluZyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0sIGluZGV4X2FjYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCAoU29tZSAoaW50X29mX2NoYXIgYyAtIDQ4KSkgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2luZGV4X2FjYyA9IFNvbWUgKCgxMCAqIGluZGV4X2FjYykgKyBpbnRfb2ZfY2hhciBjIC0gNDgpIGluXG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggbmV3X2luZGV4X2FjYyAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICddJywgTm9uZSAtPiBmYWlsX3BhcnNlIFwiZW1wdHkgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB8ICddJywgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gUG9zIGluZGV4X2FjY1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXRjaCAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYyksIGluZGV4X2FjYylcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBwYXRoX2VsIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvb3AgKHBhdGhfZWwgOjogYWNjKSBpeDFcbiAgICAgICAgICAgICAgICAgICAgfCBjLCBfIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCJpbGxlZ2FsIGNoYXJhY3RlciBpbiBpbmRleDogJWNcIiBjKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IE5vbmUgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnXFxcXCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIGFmdGVyIGVzY2FwZVwiXG4gICAgICAgICAgICAgICAgZWxzZSBwYXJzZV9kb3QgYWNjIChzdHIuW2l4MV0gOjogc3RyX2FjYykgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW10gdGhlbiBmYWlsX3BhcnNlIFwiZG91YmxlICcuJ1wiO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID0gUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9kb3QgKHBhdGhfZWwgOjogYWNjKSBbXSAoaXggKyAxKVxuICAgICAgICAgICAgICB8IGMgLT4gcGFyc2VfZG90IGFjYyAoYyA6OiBzdHJfYWNjKSAoaXggKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2RvdCBhY2MgW10gZG90X2l4MSlcbiAgICAgIHwgYyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiJy4nIGV4cGVjdGVkOyBnb3QgJyVjJ1wiIGMpXG4gICAgaW5cbiAgICBsb29wIFtdIDApXG47O1xuXG5sZXQgZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgPVxuICBsZXQgcGF0aCA9XG4gICAgbWF0Y2ggcGF0aCwgc3RyIHdpdGhcbiAgICB8IFNvbWUgcGF0aCwgXyAtPiBwYXRoXG4gICAgfCBOb25lLCBTb21lIHN0ciAtPiBwYXJzZSBzdHJcbiAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgaW5cbiAgc3Vic3RfcGF0aCBzZXhwIHBhdGhcbjs7XG5cbmxldCBnZXQgP3BhdGggP3N0ciBzZXhwID0gc25kIChnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cClcblxubGV0IHJlcGxhY2UgP3BhdGggP3N0ciBzZXhwIH5zdWJzdCA9XG4gIGxldCBzdWJzdF9mdW4sIF8gPSBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCBpblxuICBzdWJzdF9mdW4gc3Vic3Rcbjs7XG5cbmxldCByZXBsYWNlX25vX3BhdGggfnN0ciBzZXhwIH5zdWJzdCA9IHJlcGxhY2UgfnN0ciBzZXhwIH5zdWJzdFxuIiwibGV0IHJlZ2lzdGVyIGV4YyBleGNfbmFtZSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBfZXhjIC0+XG4gICAgU2V4cC5BdG9tIGV4Y19uYW1lKVxuOztcblxubGV0IG1hZ2ljX2ZpZWxkIHJlcHIgbiA9IE9iai5tYWdpYyAoT2JqLmZpZWxkIHJlcHIgbilcblxubGV0IHJlZ2lzdGVyMSBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIyIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIzIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMyBdKVxuOztcblxubGV0IHJlZ2lzdGVyNCBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyBzZXhwX29mX2FyZzQgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQgXSlcbjs7XG5cbmxldCByZWdpc3RlcjVcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNSBdKVxuOztcblxubGV0IHJlZ2lzdGVyNlxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI3XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDcgXSlcbjs7XG5cbmxldCByZWdpc3RlcjhcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNzsgc2V4cDggXSlcbjs7XG5cbmxldCByZWdpc3RlcjlcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIxMFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gICAgICBzZXhwX29mX2FyZzEwXG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgbGV0IHNleHAxMCA9IHNleHBfb2ZfYXJnMTAgKG1hZ2ljX2ZpZWxkIHJlcHIgMTApIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgOyBzZXhwMTBcbiAgICAgIF0pXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgXCJGYXN0IFNwbGl0dGFibGUgUHNldWRvcmFuZG9tIE51bWJlciBHZW5lcmF0b3JzXCIgYnkgU3RlZWxlIGV0LlxuICAgIGFsLiAoMSkuICBUaGUgcGFwZXIncyBhbGdvcml0aG0gcHJvdmlkZXMgZGVjZW50IHJhbmRvbW5lc3MgZm9yIG1vc3QgcHVycG9zZXMsIGJ1dFxuICAgIHNhY3JpZmljZXMgY3J5cHRvZ3JhcGhpYy1xdWFsaXR5IHJhbmRvbW5lc3MgaW4gZmF2b3Igb2YgcGVyZm9ybWFuY2UuICBUaGUgb3JpZ2luYWxcbiAgICBpbXBsZW1lbnRhdGlvbiB3YXMgdGVzdGVkIHdpdGggRGllSGFyZGVyIGFuZCBCaWdDcnVzaDsgc2VlIHRoZSBwYXBlciBmb3IgZGV0YWlscy5cblxuICAgIE91ciBpbXBsZW1lbnRhdGlvbiBpcyBhIHBvcnQgZnJvbSBKYXZhIHRvIE9DYW1sIG9mIHRoZSBwYXBlcidzIGFsZ29yaXRobS4gIE90aGVyIHRoYW5cbiAgICB0aGUgY2hvaWNlIG9mIGluaXRpYWwgc2VlZCBmb3IgW2NyZWF0ZV0sIG91ciBwb3J0IHNob3VsZCBiZSBmYWl0aGZ1bC4gIFdlIGhhdmUgbm90XG4gICAgcmUtcnVuIHRoZSBEaWVIYXJkZXIgb3IgQmlnQ3J1c2ggdGVzdHMgb24gb3VyIGltcGxlbWVudGF0aW9uLiAgT3VyIHBvcnQgaXMgYWxzbyBub3QgYXNcbiAgICBwZXJmb3JtYW50IGFzIHRoZSBvcmlnaW5hbDsgdHdvIGZhY3RvcnMgdGhhdCBodXJ0IHVzIGFyZSBib3hlZCBbaW50NjRdIHZhbHVlcyBhbmQgbGFja1xuICAgIG9mIGEgUE9QQ05UIHByaW1pdGl2ZS5cblxuICAgICgxKSBodHRwOi8vMjAxNC5zcGxhc2hjb24ub3JnL2V2ZW50L29vcHNsYTIwMTQtZmFzdC1zcGxpdHRhYmxlLXBzZXVkb3JhbmRvbS1udW1iZXItZ2VuZXJhdG9yc1xuICAgIChhbHNvIG1pcnJvcmVkIGF0IGh0dHA6Ly9nZWUuY3Mub3N3ZWdvLmVkdS9kbC9wYXBlcnMvb29wc2xhMTQucGRmKVxuXG4gICAgQmV3YXJlIHdoZW4gaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlOyBpdCBpcyBlYXN5IHRvIGltcGxlbWVudCBhIFtzcGxpdF0gb3BlcmF0aW9uXG4gICAgd2hvc2Ugb3V0cHV0IGlzIG5vdCBhcyBcImluZGVwZW5kZW50XCIgYXMgaXQgc2VlbXMgKDIpLiAgVGhpcyBidWcgY2F1c2VkIHByb2JsZW1zIGZvclxuICAgIEhhc2tlbGwncyBRdWlja2NoZWNrIGxpYnJhcnkgZm9yIGEgbG9uZyB0aW1lLlxuXG4gICAgKDIpIFNjaGFhdGh1biwgXCJFdmFsdWF0aW9uIG9mIHNwbGl0dGFibGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzXCIsIEpGUCAyMDE1LlxuICAgIGh0dHA6Ly93d3cuaGcuc2NoYWF0aHVuLm5ldC9yZXNlYXJjaC9QYXBlcnMvaGdzMjAxNWpmcC5wZGZcbiopXG5cbm9wZW4hIEJhc2Vcbm9wZW4gIEludDY0Lk9cblxubGV0IGlzX29kZCB4ID0geCBsb3IgMUwgPSB4XG5cbmxldCBwb3Bjb3VudCA9IEludDY0LnBvcGNvdW50XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNlZWQgOiBpbnQ2NFxuICAgIDsgb2RkX2dhbW1hICAgIDogaW50NjRcbiAgICB9XG5cbiAgbGV0IGdvbGRlbl9nYW1tYSA9IDB4OWUzN183OWI5XzdmNGFfN2MxNUxcblxuICBsZXQgb2ZfaW50IHNlZWQgPVxuICAgIHsgc2VlZCAgICAgID0gSW50NjQub2ZfaW50IHNlZWRcbiAgICA7IG9kZF9nYW1tYSA9IGdvbGRlbl9nYW1tYVxuICAgIH1cblxuICBsZXQgY29weSB7IHNlZWQgOyBvZGRfZ2FtbWEgfSA9IHsgc2VlZCA7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IG1peF9iaXRzIHogbiA9XG4gICAgeiBseG9yICh6IGxzciBuKVxuXG4gIGxldCBtaXg2NCB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4ZmY1MV9hZmQ3X2VkNTVfOGNjZEwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4YzRjZV9iOWZlXzFhODVfZWM1M0wgaW5cbiAgICBtaXhfYml0cyB6IDMzXG5cbiAgbGV0IG1peDY0X3ZhcmlhbnQxMyB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMwKSAqIDB4YmY1OF80NzZkXzFjZTRfZTViOUwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDI3KSAqIDB4OTRkMF80OWJiXzEzMzFfMTFlYkwgaW5cbiAgICBtaXhfYml0cyB6IDMxXG5cbiAgbGV0IG1peF9vZGRfZ2FtbWEgeiA9XG4gICAgbGV0IHogPSAobWl4NjRfdmFyaWFudDEzIHopIGxvciAxTCBpblxuICAgIGxldCBuID0gcG9wY291bnQgKHogbHhvciAoeiBsc3IgMSkpIGluXG4gICAgKCogVGhlIG9yaWdpbmFsIHBhcGVyIHVzZXMgWz49XSBpbiB0aGUgY29uZGl0aW9uYWwgaW1tZWRpYXRlbHkgYmVsb3c7IGhvd2V2ZXIgdGhpcyBpc1xuICAgICAgIGEgdHlwbywgYW5kIHdlIGNvcnJlY3QgaXQgYnkgdXNpbmcgWzxdLiBUaGlzIHdhcyBmaXhlZCBpbiByZXNwb25zZSB0byBbMV0gYW5kIFsyXS5cblxuICAgICAgIFsxXSBodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9zcGxpdHRhYmxlX3JhbmRvbS9pc3N1ZXMvMVxuICAgICAgIFsyXSBodHRwOi8vd3d3LnBjZy1yYW5kb20ub3JnL3Bvc3RzL2J1Z3MtaW4tc3BsaXRtaXguaHRtbFxuICAgICopXG4gICAgaWYgSW50LiggPCApIG4gMjRcbiAgICB0aGVuIHogbHhvciAweGFhYWFfYWFhYV9hYWFhX2FhYWFMXG4gICAgZWxzZSB6XG5cbiAgbGV0JXRlc3RfdW5pdCBcIm9kZCBnYW1tYVwiID1cbiAgICBmb3IgaW5wdXQgPSAtMV8wMDBfMDAwIHRvIDFfMDAwXzAwMCBkb1xuICAgICAgbGV0IG91dHB1dCA9IG1peF9vZGRfZ2FtbWEgKEludDY0Lm9mX2ludCBpbnB1dCkgaW5cbiAgICAgIGlmIG5vdCAoaXNfb2RkIG91dHB1dCkgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICAgIFwiZ2FtbWEgdmFsdWUgaXMgbm90IG9kZFwiXG4gICAgICAgICAgICAoaW5wdXQgIDogaW50KVxuICAgICAgICAgICAgKG91dHB1dCA6IGludDY0KV1cbiAgICBkb25lXG5cbiAgbGV0IG5leHRfc2VlZCB0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIHQub2RkX2dhbW1hIGluXG4gICAgdC5zZWVkIDwtIG5leHQ7XG4gICAgbmV4dFxuXG4gIGxldCBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWEgPVxuICAgIGxldCBzZWVkICAgICAgPSBtaXg2NCAgICAgICAgIHNlZWQgIGluXG4gICAgbGV0IG9kZF9nYW1tYSA9IG1peF9vZGRfZ2FtbWEgZ2FtbWEgaW5cbiAgICB7IHNlZWQ7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgPVxuICAgIFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHJhbmRvbV9zdGF0ZSBJbnQ2NC5taW5fdmFsdWUgSW50NjQubWF4X3ZhbHVlXG5cbiAgbGV0IGNyZWF0ZSByYW5kb21fc3RhdGUgPVxuICAgIGxldCBzZWVkICA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBsZXQgZ2FtbWEgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IHNwbGl0IHQgPVxuICAgIGxldCBzZWVkICA9IG5leHRfc2VlZCB0IGluXG4gICAgbGV0IGdhbW1hID0gbmV4dF9zZWVkIHQgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgbmV4dF9pbnQ2NCB0ID0gbWl4NjQgKG5leHRfc2VlZCB0KVxuXG4gICgqIFtwZXJ0dXJiXSBpcyBub3QgZnJvbSBhbnkgZXh0ZXJuYWwgc291cmNlLCBidXQgcHJvdmlkZXMgYSB3YXkgdG8gbWl4IGluIGV4dGVybmFsXG4gICAgIGVudHJvcHkgd2l0aCBhIHBzZXVkby1yYW5kb20gc3RhdGUuICopXG4gIGxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyBtaXg2NCAoSW50NjQub2ZfaW50IHNhbHQpIGluXG4gICAgdC5zZWVkIDwtIG5leHRcblxuZW5kXG5cbmxldCBib29sIHN0YXRlID0gaXNfb2RkIChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBXZSBhYnVzZSB0ZXJtaW5vbG9neSBhbmQgcmVmZXIgdG8gaW5kaXZpZHVhbCB2YWx1ZXMgYXMgYmlhc2VkIG9yIHVuYmlhc2VkLiAgTW9yZVxuICAgcHJvcGVybHksIHdoYXQgaXMgdW5iaWFzZWQgaXMgdGhlIHNhbXBsZXIgdGhhdCByZXN1bHRzIGlmIHdlIGtlZXAgb25seSB0aGVzZSBcInVuYmlhc2VkXCJcbiAgIHZhbHVlcy4gKilcbmxldCByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgIH5kcmF3XG4gICAgICB+cmVtYWluZGVyXG4gICAgICB+ZHJhd19tYXhpbXVtXG4gICAgICB+cmVtYWluZGVyX21heGltdW1cbiAgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGRyYXcgLSByZW1haW5kZXIgPD0gZHJhd19tYXhpbXVtIC0gcmVtYWluZGVyX21heGltdW1cblxubGV0JXRlc3RfdW5pdCBcInJlbWFpbmRlcl9pc191bmJpYXNlZFwiID1cbiAgKCogY2hvb3NpbmcgYSByYW5nZSBvZiAxMCB2YWx1ZXMgYmFzZWQgb24gYSByYW5nZSBvZiAxMDUgdmFsdWVzICopXG4gIGxldCBkcmF3X21heGltdW0gPSAxMDRMIGluXG4gIGxldCByZW1haW5kZXJfbWF4aW11bSA9IDlMIGluXG4gIGxldCBpc191bmJpYXNlZCBkcmF3ID1cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgcmVtYWluZGVyX21heGltdW0pIGluXG4gICAgcmVtYWluZGVyX2lzX3VuYmlhc2VkIH5kcmF3IH5yZW1haW5kZXIgfmRyYXdfbWF4aW11bSB+cmVtYWluZGVyX21heGltdW1cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIDk5IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDp0cnVlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lO1xuICBmb3IgaSA9IDEwMCB0byAxMDQgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OmZhbHNlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYm91bmRlZCByYW5kb21uZXNzIGlzIGFkYXB0ZWQgZnJvbSBbUmFuZG9tLlN0YXRlLmludCpdIGluIHRoZVxuICAgT0NhbWwgc3RhbmRhcmQgbGlicmFyeS4gIFRoZSBwdXJwb3NlIGlzIHRvIHVzZSB0aGUgbWluaW11bSBudW1iZXIgb2YgY2FsbHMgdG9cbiAgIFtuZXh0X2ludDY0XSB0byBwcm9kdWNlIGEgbnVtYmVyIHVuaWZvcm1seSBjaG9zZW4gd2l0aGluIHRoZSBnaXZlbiByYW5nZS4gKilcbmxldCBpbnQ2NCA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgbGV0IHJlYyBiZXR3ZWVuIHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBpblxuICAgIGlmIGxvIDw9IGRyYXcgJiYgZHJhdyA8PSBoaVxuICAgIHRoZW4gZHJhd1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG4gIGluXG4gIGxldCByZWMgbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW0gPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBsYW5kIEludDY0Lm1heF92YWx1ZSBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyBtYXhpbXVtKSBpblxuICAgIGlmIHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgICAgfmRyYXdcbiAgICAgICAgIH5yZW1haW5kZXJcbiAgICAgICAgIH5kcmF3X21heGltdW06SW50NjQubWF4X3ZhbHVlXG4gICAgICAgICB+cmVtYWluZGVyX21heGltdW06bWF4aW11bVxuICAgIHRoZW4gcmVtYWluZGVyXG4gICAgZWxzZSBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bVxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIGxvID4gaGkgdGhlbiBiZWdpblxuICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnQ2NDogY3Jvc3NlZCBib3VuZHNcIiAobG8gOiBpbnQ2NCkgKGhpIDogaW50NjQpXVxuICAgIGVuZDtcbiAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICBpZiBkaWZmID0gSW50NjQubWF4X3ZhbHVlXG4gICAgdGhlbiAoKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpIGxhbmQgSW50NjQubWF4X3ZhbHVlKSArIGxvXG4gICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgdGhlbiAobm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIGRpZmYpICsgbG9cbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuXG5sZXQgaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50MzIgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludDMyIGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludDMyIGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50MzJfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBuYXRpdmVpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX25hdGl2ZWludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9uYXRpdmVpbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19uYXRpdmVpbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQ2MyBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjMudG9faW50NjQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjMudG9faW50NjQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2My5vZl9pbnQ2NF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGRvdWJsZV91bHAgPSAyLiAqKi4gLTUzLlxuXG5sZXQldGVzdF91bml0IFwiZG91YmxlX3VscFwiID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT5cbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApID0gMS4wKVxuICB8IFczMiAtPlxuICAgICgqIDMyLWJpdCBPQ2FtbCB1c2VzIGEgNjQtYml0IGZsb2F0IHJlcHJlc2VudGF0aW9uIGJ1dCA4MC1iaXQgZmxvYXQgaW5zdHJ1Y3Rpb25zLCBzb1xuICAgICAgIHJvdW5kaW5nIHdvcmtzIGRpZmZlcmVudGx5IGR1ZSB0byB0aGUgY29udmVyc2lvbiBiYWNrIGFuZCBmb3J0aC4gKilcbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgIDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA8PSAxLjApXG5cbmxldCB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjQgPVxuICAoSW50NjQudG9fZmxvYXQgKGludDY0IGxzciAxMSkpICouIGRvdWJsZV91bHBcblxubGV0JXRlc3RfdW5pdCBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID0gYmVnaW5cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweDAwMDBfMDAwMF8wMDAwXzAwMDBMID0gMC4pO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMIDwgMS4wKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA9ICgxLjAgLS4gZG91YmxlX3VscCkpO1xuZW5kXG5cbmxldCB1bml0X2Zsb2F0IHN0YXRlID1cbiAgdW5pdF9mbG9hdF9mcm9tX2ludDY0IChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBOb3RlIGFib3V0IHJvdW5kb2ZmIGVycm9yOlxuXG4gICBBbHRob3VnaCBbZmxvYXQgc3RhdGUgfmxvIH5oaV0gaXMgbm9taW5hbGx5IGluY2x1c2l2ZSBvZiBlbmRwb2ludHMsIHdlIGFyZSByZWx5aW5nIG9uXG4gICB0aGUgZmFjdCB0aGF0IFt1bml0X2Zsb2F0XSBuZXZlciByZXR1cm5zIDEuLCBiZWNhdXNlIHRoZXJlIGFyZSBwYWlycyBbKGxvLGhpKV0gZm9yXG4gICB3aGljaCBbbG8gKy4gMS4gKi4gKGhpIC0uIGxvKSA+IGhpXS4gIFRoZXJlIGFyZSBhbHNvIHBhaXJzIFsobG8saGkpXSBhbmQgdmFsdWVzIG9mIFt4XVxuICAgd2l0aCBbeCA8IDEuXSBzdWNoIHRoYXQgW2xvICsuIHggKi4gKGhpIC0uIGxvKSA9IGhpXSwgc28gaXQgd291bGQgbm90IGJlIGNvcnJlY3QgdG9cbiAgIGRvY3VtZW50IHRoaXMgYXMgYmVpbmcgZXhjbHVzaXZlIG9mIFtoaV0uXG4qKVxubGV0IGZsb2F0ID1cbiAgbGV0IHJlYyBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IHJhbmdlID0gaGkgLS4gbG8gaW5cbiAgICBpZiBGbG9hdC5pc19maW5pdGUgcmFuZ2VcbiAgICB0aGVuIChsbyArLiAodW5pdF9mbG9hdCBzdGF0ZSAqLiByYW5nZSkpXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogSWYgW2hpIC0gbG9dIGlzIGluZmluaXRlLCB0aGVuIFtoaSArIGxvXSBpcyBmaW5pdGUgYmVjYXVzZSBbaGldIGFuZCBbbG9dIGhhdmVcbiAgICAgICAgIG9wcG9zaXRlIHNpZ25zLiAqKVxuICAgICAgbGV0IG1pZCA9IChoaSArLiBsbykgLy4gMi4gaW5cbiAgICAgIGlmIGJvb2wgc3RhdGVcbiAgICAgICgqIERlcGVuZGluZyBvbiByb3VuZGluZywgdGhlIHJlY3Vyc2lvbiB3aXRoIFt+aGk6bWlkXSBtaWdodCBiZSBpbmNsdXNpdmUgb2YgW21pZF0sXG4gICAgICAgICB3aGljaCB3b3VsZCBtZWFuIHRoZSB0d28gY2FzZXMgb3ZlcmxhcCBvbiBbbWlkXS4gVGhlIGFsdGVybmF0aXZlIGlzIHRvIGluY3JlbWVudFxuICAgICAgICAgb3IgZGVjcmVtZW50IFttaWRdIHVzaW5nIFtvbmVfdWxwXSBpbiBlaXRoZXIgb2YgdGhlIGNhbGxzLCBidXQgdGhlbiBpZiB0aGUgZmlyc3RcbiAgICAgICAgIGNhc2UgaXMgZXhjbHVzaXZlIHdlIGxlYXZlIGEgXCJnYXBcIiBiZXR3ZWVuIHRoZSB0d28gcmFuZ2VzLiBUaGVyZSdzIG5vIHBlcmZlY3RseVxuICAgICAgICAgdW5pZm9ybSBzb2x1dGlvbiwgc28gd2UgdXNlIHRoZSBzaW1wbGVyIGNvZGUgdGhhdCBkb2VzIG5vdCBjYWxsIFtvbmVfdWxwXS4gKilcbiAgICAgIHRoZW4gZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGk6bWlkXG4gICAgICBlbHNlIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG86bWlkIH5oaVxuICAgIGVuZFxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvICYmIEZsb2F0LmlzX2Zpbml0ZSBoaSlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIG5vdCBmaW5pdGUgbnVtYmVyc1wiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBpZiBGbG9hdC4oID4gKSBsbyBoaVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaVxuXG5sZXQlYmVuY2hfZnVuIFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPVxuICBsZXQgaW50NjQgPSAxTCBpblxuICBmdW4gKCkgLT4gdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0XG5cbm1vZHVsZSBMb2dfdW5pZm9ybSA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZSAoTSA6IHNpZyBpbmNsdWRlIEludC5TIHZhbCB1bmlmb3JtIDogU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdCBlbmQpIDogc2lnXG4gICAgdmFsIGxvZ191bmlmb3JtIDogU3RhdGUudCAtPiBsbzpNLnQgLT4gaGk6TS50IC0+IE0udFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIE1cblxuICAgIGxldCBiaXRzX3RvX3JlcHJlc2VudCB0ID1cbiAgICAgIGFzc2VydCAodCA+PSB6ZXJvKTtcbiAgICAgIGxldCB0ID0gcmVmIHQgaW5cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlICF0ID4gemVybyBkb1xuICAgICAgICB0IDo9IHNoaWZ0X3JpZ2h0ICF0IDE7XG4gICAgICAgIEludC5pbmNyIG47XG4gICAgICBkb25lO1xuICAgICAgIW5cblxuICAgIGxldCV0ZXN0X3VuaXQgXCJiaXRzX3RvX3JlcHJlc2VudFwiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogaW50XSAoYml0c190b19yZXByZXNlbnQgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAwKSAgIDA7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMSkgICAxO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDIpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAzKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNCkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDUpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA2KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNykgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDgpICAgNDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxMDApIDc7XG4gICAgICB0ZXN0IE0ubWF4X3ZhbHVlIChJbnQucHJlZCBNLm51bV9iaXRzKTtcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBpZiBJbnQuZXF1YWwgbiAwXG4gICAgICB0aGVuIHplcm9cbiAgICAgIGVsc2Ugc2hpZnRfbGVmdCBvbmUgKEludC5wcmVkIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWluX3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0IGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMik7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA0KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDgpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gNjQpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgKE0uc2hpZnRfcmlnaHRfbG9naWNhbCBNLm1pbl92YWx1ZSAxKTtcbiAgICA7O1xuXG4gICAgbGV0IG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBwcmVkIChzaGlmdF9sZWZ0IG9uZSBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAzKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDcpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gMTUpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gMTI3KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIE0ubWF4X3ZhbHVlO1xuICAgIDs7XG5cbiAgICBsZXQgbG9nX3VuaWZvcm0gc3RhdGUgfmxvIH5oaSA9XG4gICAgICBsZXQgbWluX2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBsbyBpblxuICAgICAgbGV0IG1heF9iaXRzID0gYml0c190b19yZXByZXNlbnQgaGkgaW5cbiAgICAgIGxldCBiaXRzID0gaW50IHN0YXRlIH5sbzptaW5fYml0cyB+aGk6bWF4X2JpdHMgaW5cbiAgICAgIHVuaWZvcm0gc3RhdGVcbiAgICAgICAgfmxvOihtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWF4IGxvKVxuICAgICAgICB+aGk6KG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtaW4gaGkpXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfaW50ICAgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50ICAgICAgIGxldCB1bmlmb3JtID0gaW50ICAgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQzMiAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQzMiAgICAgbGV0IHVuaWZvcm0gPSBpbnQzMiAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDYzICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDYzICAgICBsZXQgdW5pZm9ybSA9IGludDYzICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjQgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjQgICAgIGxldCB1bmlmb3JtID0gaW50NjQgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBOYXRpdmVpbnQgbGV0IHVuaWZvcm0gPSBuYXRpdmVpbnQgZW5kKVxuXG4gIGxldCBpbnQgICAgICAgPSBGb3JfaW50LmxvZ191bmlmb3JtXG4gIGxldCBpbnQzMiAgICAgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1cbiAgbGV0IGludDYzICAgICA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjQgICAgID0gRm9yX2ludDY0LmxvZ191bmlmb3JtXG4gIGxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtXG5lbmRcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIHN1Y2MgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFN1Y2Nlc3Nvci4gIFtJbnQ2NC5zdWNjIHhdIGlzIFtJbnQ2NC5hZGQgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgcHJlZCA6IGludDY0IC0+IGludDY0XG4oKiogUHJlZGVjZXNzb3IuICBbSW50NjQucHJlZCB4XSBpcyBbSW50NjQuc3ViIHggSW50NjQub25lXS4gKilcblxudmFsIGFicyA6IGludDY0IC0+IGludDY0XG4oKiogW2FicyB4XSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgW3hdLiBPbiBbbWluX2ludF0gdGhpc1xuICAgaXMgW21pbl9pbnRdIGl0c2VsZiBhbmQgdGh1cyByZW1haW5zIG5lZ2F0aXZlLiAqKVxuXG52YWwgbWF4X2ludCA6IGludDY0XG4oKiogVGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIDJ7XjYzfSAtIDEuICopXG5cbnZhbCBtaW5faW50IDogaW50NjRcbigqKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgLTJ7XjYzfS4gKilcblxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBhbmQuICopXG5cbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIG9yLiAqKVxuXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGV4Y2x1c2l2ZSBvci4gKilcblxudmFsIGxvZ25vdCA6IGludDY0IC0+IGludDY0XG4oKiogQml0d2lzZSBsb2dpY2FsIG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbigqKiBbSW50NjQuc2hpZnRfbGVmdCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIGxlZnQgYnkgW3ldIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGFuIGFyaXRobWV0aWMgc2hpZnQ6IHRoZSBzaWduIGJpdCBvZiBbeF0gaXMgcmVwbGljYXRlZFxuICAgYW5kIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhIGxvZ2ljYWwgc2hpZnQ6IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0c1xuICAgcmVnYXJkbGVzcyBvZiB0aGUgc2lnbiBvZiBbeF0uXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGludGVnZXIgKHR5cGUgW2ludF0pIHRvIGEgNjQtYml0IGludGVnZXJcbiAgICAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhblxuICAgaW50ZWdlciAodHlwZSBbaW50XSkuICBPbiA2NC1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye142M30sIGkuZS4gdGhlIGhpZ2gtb3JkZXIgYml0IGlzIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMxfSwgaS5lLiB0aGUgdG9wIDMzIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gKilcblxudmFsIHVuc2lnbmVkX3RvX2ludCA6IGludDY0IC0+IGludCBvcHRpb25cbigqKiBTYW1lIGFzIHshdG9faW50fSwgYnV0IGludGVycHJldHMgdGhlIGFyZ3VtZW50IGFzIGFuIHtlIHVuc2lnbmVkfSBpbnRlZ2VyLlxuICAgIFJldHVybnMgW05vbmVdIGlmIHRoZSB1bnNpZ25lZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2Fubm90IGZpdCBpbnRvIGFuXG4gICAgW2ludF0uXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzLjAgKilcblxudmFsIG1pbjogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuICopXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMYXlvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmlnYXJyYXkubGF5b3V0XG5cbiAgbGV0IG9mZnNldCA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgfCBCaWdhcnJheS5Gb3J0cmFuX2xheW91dCAtPiAxXG4gICAgfCBCaWdhcnJheS5DX2xheW91dCAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTEubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5MS5kaW0gdCAtIDEgZG9cbiAgICAgIGYgKGkgKyBvZmZzZXQpIHQue2kgKyBvZmZzZXR9XG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5MS5jcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IHQue2l9IDwtIGYgaSk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBmb2xkICh0eXBlIGVsdCkgKHQgOiAoZWx0LCBfLCBfKSB0KSB+aW5pdCB+ZiA9XG4gICAgbGV0IGluaXQgPSByZWYgaW5pdCBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiBpbml0IDo9IGYgIWluaXQgdC57aX0pO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTEubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSB+ZjooZnVuIGkgLT4gdC57aSArIG9mZnNldH0pXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTEuZGltIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkyLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCAtIDEgZG9cbiAgICAgIGZvciBqID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMiB0IC0gMSBkb1xuICAgICAgICBmIChpICsgb2Zmc2V0KSAoaiArIG9mZnNldCkgdC57aSArIG9mZnNldCwgaiArIG9mZnNldH1cbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0xIGRpbTIgfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkyLmNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSBqIChfIDogZWx0KSAtPiB0LntpLCBqfSA8LSBmIGkgaik7XG4gICAgdFxuICA7O1xuXG4gIGxldCBmb2xkICh0eXBlIGVsdCkgKHQgOiAoZWx0LCBfLCBfKSB0KSB+aW5pdCB+ZiA9XG4gICAgbGV0IGluaXQgPSByZWYgaW5pdCBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biAoXyA6IGludCkgKF8gOiBpbnQpIGVsdCAtPiBpbml0IDo9IGYgIWluaXQgZWx0KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQpIH5mOihmdW4gaSAtPlxuICAgICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCkgfmY6KGZ1biBqIC0+IHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9KSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQpIGluXG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgJ2EgdCA9ICdhIC0+IHNpemU6aW50IC0+IGhhc2g6SGFzaC5zdGF0ZSAtPiBIYXNoLnN0YXRlXG5cbmxldCBjcmVhdGUgZiA6IF8gdCA9IGZcblxubGV0IG9ic2VydmUgKHQgOiBfIHQpIHggfnNpemUgfmhhc2ggPVxuICBpZiBzaXplIDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmU6IHNpemUgPCAwXCIgKHNpemUgOiBpbnQpXVxuICBlbHNlIHQgeCB+c2l6ZSB+aGFzaFxuOztcblxubGV0IG9wYXF1ZSBfIH5zaXplOl8gfmhhc2ggPSBoYXNoXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgKydhIHRcblxuICB2YWwgY3JlYXRlIDogKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBnZW5lcmF0ZSA6ICdhIHQgLT4gc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIFN0YWdlZC50XG5cbiAgbGV0IGNyZWF0ZSBmIDogXyB0ID0gU3RhZ2VkLnN0YWdlIGZcblxuICBsZXQgZ2VuZXJhdGUgKHQgOiBfIHQpIH5zaXplIH5yYW5kb20gPVxuICAgIGlmIHNpemUgPCAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZ2VuZXJhdGU6IHNpemUgPCAwXCIgKHNpemUgOiBpbnQpXVxuICAgIGVsc2UgU3RhZ2VkLnVuc3RhZ2UgdCB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBzaXplID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbTpfIC0+IHNpemUpXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5zcGxpdCByYW5kb20gaW5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IGhhc2ggPSBPYnNlcnZlcjAub2JzZXJ2ZSBkb20geCB+c2l6ZSB+aGFzaDooSGFzaC5hbGxvYyAoKSkgaW5cbiAgICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jb3B5IHJhbmRvbSBpblxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCk7XG4gICAgICBnZW5lcmF0ZSBybmcgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCB3aXRoX3NpemUgdCB+c2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG5cbmxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSBzYWx0O1xuICAgIGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgfnNpemUgfnJhbmRvbSA9XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgU29tZSB5IC0+IHlcbiAgICB8IE5vbmUgLT4gbG9vcCB+c2l6ZTooc2l6ZSArIDEpIH5yYW5kb21cbiAgaW5cbiAgY3JlYXRlIGxvb3Bcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbmxldCByZXR1cm4geCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbTpfIC0+IHgpXG5sZXQgbWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGYgKGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSkpXG5cbmxldCBhcHBseSB0ZiB0eCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgZiA9IGdlbmVyYXRlIHRmIH5zaXplIH5yYW5kb20gaW5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHR4IH5zaXplIH5yYW5kb20gaW5cbiAgICBmIHgpXG47O1xuXG5sZXQgYmluZCB0IH5mID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZ2VuZXJhdGUgKGYgeCkgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCBhbGwgbGlzdCA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5tYXAgbGlzdCB+ZjooZ2VuZXJhdGUgfnNpemUgfnJhbmRvbSkpXG5cbmxldCBhbGxfdW5pdCBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lml0ZXIgbGlzdCB+ZjooZ2VuZXJhdGUgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5tb2R1bGUgRm9yX2FwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBib3RoID0gRm9yX2FwcGxpY2F0aXZlLmJvdGhcbmxldCBtYXAyID0gRm9yX2FwcGxpY2F0aXZlLm1hcDJcbmxldCBtYXAzID0gRm9yX2FwcGxpY2F0aXZlLm1hcDNcblxubW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gRm9yX2FwcGxpY2F0aXZlLkFwcGxpY2F0aXZlX2luZml4XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2luZml4XG5cbm1vZHVsZSBGb3JfbW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBpZ25vcmVfbSA9IEZvcl9tb25hZC5pZ25vcmVfbVxubGV0IGpvaW4gPSBGb3JfbW9uYWQuam9pblxuXG5tb2R1bGUgTW9uYWRfaW5maXggPSBGb3JfbW9uYWQuTW9uYWRfaW5maXhcbmluY2x1ZGUgTW9uYWRfaW5maXhcbm1vZHVsZSBMZXRfc3ludGF4ID0gRm9yX21vbmFkLkxldF9zeW50YXhcbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICBsZXQgbG8gPSAwIGluXG4gIGxldCBoaSA9IEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGluZGV4ID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG8gfmhpIGluXG4gICAgYXJyYXkuKGluZGV4KSlcbjs7XG5cbmxldCB1bmlvbiBsaXN0ID0gam9pbiAob2ZfbGlzdCBsaXN0KVxuXG5sZXQgb2Zfd2VpZ2h0ZWRfbGlzdCBhbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgYWxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IHdlaWdodHMsIHZhbHVlcyA9IExpc3QudW56aXAgYWxpc3QgaW5cbiAgbGV0IHZhbHVlX2FycmF5ID0gQXJyYXkub2ZfbGlzdCB2YWx1ZXMgaW5cbiAgbGV0IHRvdGFsX3dlaWdodCwgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXkgPVxuICAgIGxldCBhcnJheSA9IEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCB2YWx1ZV9hcnJheSkgfmY6KGZ1biBfIC0+IDAuKSBpblxuICAgIGxldCBzdW0gPVxuICAgICAgTGlzdC5mb2xkaSB3ZWlnaHRzIH5pbml0OjAuIH5mOihmdW4gaW5kZXggYWNjIHdlaWdodCAtPlxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB3ZWlnaHQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHdlaWdodCBpcyBub3QgZmluaXRlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgaWYgRmxvYXQuKCA8ICkgd2VpZ2h0IDAuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHdlaWdodCBpcyBuZWdhdGl2ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGxldCBjdW11bGF0aXZlID0gYWNjICsuIHdlaWdodCBpblxuICAgICAgICBhcnJheS4oaW5kZXgpIDwtIGN1bXVsYXRpdmU7XG4gICAgICAgIGN1bXVsYXRpdmUpXG4gICAgaW5cbiAgICBpZiBGbG9hdC4oIDw9ICkgc3VtIDAuXG4gICAgdGhlblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHRvdGFsIHdlaWdodCBpcyB6ZXJvXCJdO1xuICAgIHN1bSwgYXJyYXlcbiAgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGNob2ljZSA9IFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86MC4gfmhpOnRvdGFsX3dlaWdodCBpblxuICAgIG1hdGNoXG4gICAgICBBcnJheS5iaW5hcnlfc2VhcmNoXG4gICAgICAgIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5XG4gICAgICAgIH5jb21wYXJlOkZsb2F0LmNvbXBhcmVcbiAgICAgICAgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICAgICBjaG9pY2VcbiAgICB3aXRoXG4gICAgfCBTb21lIGluZGV4IC0+IHZhbHVlX2FycmF5LihpbmRleClcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHdlaWdodGVkX3VuaW9uIGFsaXN0ID0gam9pbiAob2Zfd2VpZ2h0ZWRfbGlzdCBhbGlzdClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGZvcmNlIGxhenlfdCkgfnNpemUgfnJhbmRvbSlcblxubGV0IGZpeGVkX3BvaW50IG9mX2dlbmVyYXRvciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2ZfZ2VuZXJhdG9yIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIGZvcmNlIGxhenlfdFxuOztcblxubGV0IHdlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbiBub25yZWNfbGlzdCB+ZiA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCByZWNfbGlzdCA9XG4gICAgICBMaXN0Lm1hcCAoZiBzZWxmKSB+ZjooZnVuICh3LCB0KSAtPlxuICAgICAgICAoIHdcbiAgICAgICAgLCBsZXQlYmluZCBuID0gc2l6ZSBpblxuICAgICAgICAgIHdpdGhfc2l6ZSB+c2l6ZToobiAtIDEpIHQgKSlcbiAgICBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgbm9ucmVjX2xpc3QgfHwgTGlzdC5pc19lbXB0eSByZWNfbGlzdFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLndlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbjogbGlzdHMgbXVzdCBiZSBub24tZW1wdHlcIl07XG4gICAgbGV0IG5vbnJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiBub25yZWNfbGlzdCBpblxuICAgIGxldCByZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gKG5vbnJlY19saXN0IEAgcmVjX2xpc3QpIGluXG4gICAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgICB8IDAgLT4gbm9ucmVjX2dlblxuICAgIHwgXyAtPiByZWNfZ2VuKVxuOztcblxubGV0IHJlY3Vyc2l2ZV91bmlvbiBub25yZWNfbGlzdCB+ZiA9XG4gIGxldCB3ZWlnaHRlZCBsaXN0ID0gTGlzdC5tYXAgbGlzdCB+ZjooZnVuIHQgLT4gMS4sIHQpIGluXG4gIHdlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbiAod2VpZ2h0ZWQgbm9ucmVjX2xpc3QpIH5mOihmdW4gc2VsZiAtPiB3ZWlnaHRlZCAoZiBzZWxmKSlcbjs7XG5cbmxldCBzaXplcyA/KG1pbl9sZW5ndGggPSAwKSA/KG1heF9sZW5ndGggPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBhc3NlcnQgKG1pbl9sZW5ndGggPD0gbWF4X2xlbmd0aCk7XG4gICAgbGV0IHVwcGVyX2JvdW5kID0gbWluX2xlbmd0aCArIHNpemUgaW5cbiAgICBsZXQgbWF4X2xlbmd0aCA9XG4gICAgICBpZiB1cHBlcl9ib3VuZCA+PSBtaW5fbGVuZ3RoICgqIGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cgKilcbiAgICAgIHRoZW4gbWluIG1heF9sZW5ndGggdXBwZXJfYm91bmRcbiAgICAgIGVsc2UgbWF4X2xlbmd0aFxuICAgIGluXG4gICAgKCogcGljayBhIGxlbmd0aCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgbW9zdCBvZiB0aGUgc2l6ZSBpcyBzcGVudCBvbiBlbGVtZW50cyAqKVxuICAgIGxldCBsZW4gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzptaW5fbGVuZ3RoIH5oaTptYXhfbGVuZ3RoIGluXG4gICAgKCogaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzIHJldHVybiBhbiBlbXB0eSBhcnJheSwgb3RoZXJ3aXNlIHJldHVybiBhIG5vbi1lbXB0eSBhcnJheVxuICAgICAgIHdpdGggdGhlIHNpemUgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIGVsZW1lbnRzICopXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgIGxldCBzaXplcyA9IEFycmF5LmluaXQgbGVuIH5mOihmdW4gXyAtPiAwKSBpblxuICAgICAgbGV0IHJlbWFpbmluZyA9IHNpemUgLSAobGVuIC0gbWluX2xlbmd0aCkgaW5cbiAgICAgIGxldCBtYXhfaW5kZXggPSBsZW4gLSAxIGluXG4gICAgICBmb3IgXyA9IDEgdG8gcmVtYWluaW5nIGRvXG4gICAgICAgICgqIHBpY2sgYW4gaW5kZXgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IHdlIHNlZSB1bmJhbGFuY2VkIGRpc3RyaWJ1dGlvbnMgb2Z0ZW4gKilcbiAgICAgICAgbGV0IGluZGV4ID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIHNpemVzLihpbmRleCkgPC0gc2l6ZXMuKGluZGV4KSArIDFcbiAgICAgIGRvbmU7XG4gICAgICAoKiBwZXJtdXRlIHRoZSBhcnJheSBzbyB0aGF0IG5vIGluZGV4IGlzIGZhdm9yZWQgb3ZlciBhbm90aGVyICopXG4gICAgICBmb3IgaSA9IDAgdG8gbWF4X2luZGV4IC0gMSBkb1xuICAgICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBBcnJheS5zd2FwIHNpemVzIGkgalxuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCAoQXJyYXkuc3VtIChtb2R1bGUgSW50KSBzaXplcyB+ZjpGbi5pZCArIChsZW4gLSBtaW5fbGVuZ3RoKSA9IHNpemUpO1xuICAgICAgQXJyYXkudG9fbGlzdCBzaXplcykpXG47O1xuXG5sZXQgdW5pdCA9IHJldHVybiAoKVxubGV0IGJvb2wgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gU3BsaXR0YWJsZV9yYW5kb20uYm9vbCByYW5kb20pXG5sZXQgb3B0aW9uIHZhbHVlX3QgPSB1bmlvbiBbIHJldHVybiBOb25lOyBtYXAgdmFsdWVfdCB+ZjpPcHRpb24ucmV0dXJuIF1cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPSB1bmlvbiBbIG1hcCBmc3RfdCB+ZjpFaXRoZXIuZmlyc3Q7IG1hcCBzbmRfdCB+ZjpFaXRoZXIuc2Vjb25kIF1cblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG47O1xuXG5sZXQgbGlzdF9nZW5lcmljID9taW5fbGVuZ3RoID9tYXhfbGVuZ3RoIGVsdF9nZW4gPVxuICBsZXQlYmluZCBzaXplcyA9IHNpemVzID9taW5fbGVuZ3RoID9tYXhfbGVuZ3RoICgpIGluXG4gIExpc3QubWFwIHNpemVzIH5mOihmdW4gc2l6ZSAtPiB3aXRoX3NpemUgfnNpemUgZWx0X2dlbikgfD4gYWxsXG47O1xuXG5sZXQgbGlzdCBlbHRfZ2VuID0gbGlzdF9nZW5lcmljIGVsdF9nZW5cbmxldCBsaXN0X25vbl9lbXB0eSBlbHRfZ2VuID0gbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOjEgZWx0X2dlblxuXG5sZXQgbGlzdF93aXRoX2xlbmd0aCBlbHRfZ2VuIH5sZW5ndGggPVxuICBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCBlbHRfZ2VuXG47O1xuXG5sZXQgbGlzdF9maWx0ZXJlZCBlbHRzID1cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IGxlbmd0aF9vZl9pbnB1dCA9IEFycmF5Lmxlbmd0aCBlbHRzIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBsZW5ndGhfb2Zfb3V0cHV0ID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6bGVuZ3RoX29mX2lucHV0IGluXG4gICAgbGV0IGluZGljZXMgPSBBcnJheS5pbml0IGxlbmd0aF9vZl9pbnB1dCB+ZjpGbi5pZCBpblxuICAgICgqIENob29zZSBbbGVuZ3RoX29mX291dHB1dF0gcmFuZG9tIHZhbHVlcyBpbiB0aGUgcHJlZml4IG9mIFtpbmRpY2VzXS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX29mX291dHB1dCAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6KGxlbmd0aF9vZl9pbnB1dCAtIDEpIGluXG4gICAgICBBcnJheS5zd2FwIGluZGljZXMgaSBqXG4gICAgZG9uZTtcbiAgICAoKiBTb3J0IHRoZSBjaG9zZW4gaW5kaWNlcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVvcmRlciB0aGVtLiAqKVxuICAgIEFycmF5LnNvcnQgaW5kaWNlcyB+cG9zOjAgfmxlbjpsZW5ndGhfb2Zfb3V0cHV0IH5jb21wYXJlOkludC5jb21wYXJlO1xuICAgICgqIFJldHVybiB0aGUgY2hvc2VuIGVsZW1lbnRzLiAqKVxuICAgIExpc3QuaW5pdCBsZW5ndGhfb2Zfb3V0cHV0IH5mOihmdW4gaSAtPiBlbHRzLihpbmRpY2VzLihpKSkpKVxuOztcblxubGV0IGxpc3RfcGVybXV0YXRpb25zIGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTppIGluXG4gICAgICBBcnJheS5zd2FwIGFycmF5IGkgalxuICAgIGRvbmU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJheSlcbjs7XG5cbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGVcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWxcblxubGV0IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzooQ2hhci50b19pbnQgbG8pIH5oaTooQ2hhci50b19pbnQgaGkpXG4gICAgfD4gQ2hhci51bnNhZmVfb2ZfaW50KVxuOztcblxubGV0IGNoYXJfdXBwZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnQScgJ1onXG5sZXQgY2hhcl9sb3dlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdhJyAneidcbmxldCBjaGFyX2RpZ2l0ID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnMCcgJzknXG5sZXQgY2hhcl9wcmludF91bmlmb3JtID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnICcgJ34nXG5sZXQgY2hhcl91bmlmb3JtID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBDaGFyLm1pbl92YWx1ZSBDaGFyLm1heF92YWx1ZVxubGV0IGNoYXJfYWxwaGEgPSB1bmlvbiBbIGNoYXJfbG93ZXJjYXNlOyBjaGFyX3VwcGVyY2FzZSBdXG5cbmxldCBjaGFyX2FscGhhbnVtID1cbiAgd2VpZ2h0ZWRfdW5pb25cbiAgICAoKiBNb3N0IHBlb3BsZSBwcm9iYWJseSBleHBlY3QgdGhpcyB0byBiZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLCBub3Qgd2VpZ2h0ZWRcbiAgICAgICB0b3dhcmQgZGlnaXRzIGxpa2Ugd2Ugd291bGQgZ2V0IHdpdGggW3VuaW9uXSAoc2luY2UgdGhlcmUgYXJlIGZld2VyIGRpZ2l0cyB0aGFuXG4gICAgICAgbGV0dGVycykuICopXG4gICAgWyA1Mi4sIGNoYXJfYWxwaGE7IDEwLiwgY2hhcl9kaWdpdCBdXG47O1xuXG5sZXQgY2hhcl93aGl0ZXNwYWNlID0gb2ZfbGlzdCAoTGlzdC5maWx0ZXIgQ2hhci5hbGwgfmY6Q2hhci5pc193aGl0ZXNwYWNlKVxubGV0IGNoYXJfcHJpbnQgPSB3ZWlnaHRlZF91bmlvbiBbIDEwLiwgY2hhcl9hbHBoYW51bTsgMS4sIGNoYXJfcHJpbnRfdW5pZm9ybSBdXG5cbmxldCBjaGFyID1cbiAgd2VpZ2h0ZWRfdW5pb25cbiAgICBbIDEwMC4sIGNoYXJfcHJpbnRcbiAgICA7IDEwLiwgY2hhcl91bmlmb3JtXG4gICAgOyAxLiwgcmV0dXJuIENoYXIubWluX3ZhbHVlXG4gICAgOyAxLiwgcmV0dXJuIENoYXIubWF4X3ZhbHVlXG4gICAgXVxuOztcblxuKCogUHJvZHVjZXMgYSBudW1iZXIgZnJvbSAwIG9yIDEgdG8gc2l6ZSArIDEsIHdlaWdodGVkIGhpZ2guIFdlIGhhdmUgZm91bmQgdGhpc1xuICAgZGlzdHJpYnV0aW9uIGVtcGlyaWNhbGx5IHVzZWZ1bCBmb3Igc3RyaW5nIGxlbmd0aHMuICopXG5sZXQgc21hbGxfaW50IH5hbGxvd196ZXJvID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBsb3dlcl9ib3VuZCA9IGlmIGFsbG93X3plcm8gdGhlbiAwIGVsc2UgMSBpblxuICAgIGxldCB1cHBlcl9ib3VuZCA9IHNpemUgKyAxIGluXG4gICAgbGV0IHdlaWdodGVkX2xvdyA9XG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaToodXBwZXJfYm91bmQgLSBsb3dlcl9ib3VuZClcbiAgICBpblxuICAgIGxldCB3ZWlnaHRlZF9oaWdoID0gdXBwZXJfYm91bmQgLSB3ZWlnaHRlZF9sb3cgaW5cbiAgICB3ZWlnaHRlZF9oaWdoKVxuOztcblxubGV0IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOnRydWVcbmxldCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86ZmFsc2VcblxubW9kdWxlIHR5cGUgSW50X3dpdGhfcmFuZG9tID0gc2lnXG4gIGluY2x1ZGUgSW50LlNcblxuICB2YWwgdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbiAgdmFsIGxvZ191bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBGb3JfaW50ZWdlciAoSW50ZWdlciA6IEludF93aXRoX3JhbmRvbSkgPSBzdHJ1Y3RcbiAgbGV0IHVuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci51bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBsb2dfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLmxvZ191bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBub25fdW5pZm9ybSBmIGxvIGhpID1cbiAgICB3ZWlnaHRlZF91bmlvbiBbIDAuMDUsIHJldHVybiBsbzsgMC4wNSwgcmV0dXJuIGhpOyAwLjksIGYgbG8gaGkgXVxuICA7O1xuXG4gIGxldCBpbmNsdXNpdmUgPSBub25fdW5pZm9ybSB1bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgbG9nX2luY2x1c2l2ZSA9IG5vbl91bmlmb3JtIGxvZ191bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgdW5pZm9ybV9hbGwgPSB1bmlmb3JtX2luY2x1c2l2ZSBJbnRlZ2VyLm1pbl92YWx1ZSBJbnRlZ2VyLm1heF92YWx1ZVxuXG4gIGxldCBhbGwgPVxuICAgIFslbWFwXG4gICAgICBsZXQgbmVnYXRpdmUgPSBib29sXG4gICAgICBhbmQgbWFnbml0dWRlID0gbG9nX2luY2x1c2l2ZSBJbnRlZ2VyLnplcm8gSW50ZWdlci5tYXhfdmFsdWUgaW5cbiAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gSW50ZWdlci5iaXRfbm90IG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2ludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnRcbiAgZW5kKVxuXG5sZXQgaW50ID0gRm9yX2ludC5hbGxcbmxldCBpbnRfdW5pZm9ybSA9IEZvcl9pbnQudW5pZm9ybV9hbGxcbmxldCBpbnRfaW5jbHVzaXZlID0gRm9yX2ludC5pbmNsdXNpdmVcbmxldCBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmVcbmxldCBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9pbnQzMiA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDMyXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDMyXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50MzJcbiAgZW5kKVxuXG5sZXQgaW50MzIgPSBGb3JfaW50MzIuYWxsXG5sZXQgaW50MzJfdW5pZm9ybSA9IEZvcl9pbnQzMi51bmlmb3JtX2FsbFxubGV0IGludDMyX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5pbmNsdXNpdmVcbmxldCBpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9pbnQ2MyA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDYzXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjNcbiAgZW5kKVxuXG5sZXQgaW50NjMgPSBGb3JfaW50NjMuYWxsXG5sZXQgaW50NjNfdW5pZm9ybSA9IEZvcl9pbnQ2My51bmlmb3JtX2FsbFxubGV0IGludDYzX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5pbmNsdXNpdmVcbmxldCBpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDYzX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX2luY2x1c2l2ZVxubGV0IGludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9pbnQ2NCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDY0XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDY0XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjRcbiAgZW5kKVxuXG5sZXQgaW50NjQgPSBGb3JfaW50NjQuYWxsXG5sZXQgaW50NjRfdW5pZm9ybSA9IEZvcl9pbnQ2NC51bmlmb3JtX2FsbFxubGV0IGludDY0X2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5pbmNsdXNpdmVcbmxldCBpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcblxubW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBOYXRpdmVpbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20ubmF0aXZlaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0ubmF0aXZlaW50XG4gIGVuZClcblxubGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQuYWxsXG5sZXQgbmF0aXZlaW50X3VuaWZvcm0gPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1fYWxsXG5sZXQgbmF0aXZlaW50X2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQuaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZmxvYXRfemVyb19leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMC5cbmxldCBmbG9hdF96ZXJvX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSAwLlxuXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9XG4gIEZsb2F0Lm9uZV91bHAgYERvd24gRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IEZsb2F0Lm1heF9maW5pdGVfdmFsdWVcbmxldCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9pbmZfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfaW5mX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X25hbl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubmFuXG5sZXQgZmxvYXRfbWluX25hbl9tYW50aXNzYSA9IEludDYzLnN1Y2MgZmxvYXRfaW5mX21hbnRpc3NhXG5sZXQgZmxvYXRfbWF4X25hbl9tYW50aXNzYSA9IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2FcbmxldCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyA9IDUyXG5cbigqIFdlIHdlaWdodCBtYW50aXNzYXMgc28gdGhhdCBcImludGVnZXItbGlrZVwiIHZhbHVlcywgYW5kIHZhbHVlcyB3aXRoIG9ubHkgYSBmZXcgZGlnaXRzXG4gICBwYXN0IHRoZSBkZWNpbWFsLCBhcmUgcmVhc29uYWJseSBjb21tb24uICopXG5sZXQgZmxvYXRfbm9ybWFsX21hbnRpc3NhID1cbiAgbGV0JWJpbmQgbnVtX2JpdHMgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlIDAgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgaW5cbiAgbGV0JW1hcCBiaXRzID1cbiAgICBGb3JfaW50NjMuaW5jbHVzaXZlIEludDYzLnplcm8gKEludDYzLnByZWQgKEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzKSlcbiAgaW5cbiAgSW50NjMuc2hpZnRfbGVmdCBiaXRzIChJbnQuKCAtICkgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgbnVtX2JpdHMpXG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCArICkgbG93ZXJfYm91bmQgb2Zmc2V0XG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggLSApIHVwcGVyX2JvdW5kIG9mZnNldFxuOztcblxuKCogV2Ugd2VpZ2h0IGV4cG9uZW50cyBzdWNoIHRoYXQgdmFsdWVzIG5lYXIgMSBhcmUgbW9yZSBsaWtlbHkuICopXG5sZXQgZmxvYXRfZXhwb25lbnQgPVxuICBsZXQgbWlkcG9pbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDEuIGluXG4gIHVuaW9uXG4gICAgWyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgbWlkcG9pbnRcbiAgICA7IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBtaWRwb2ludCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50XG4gICAgXVxuOztcblxubGV0IGZsb2F0X3plcm8gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfemVyb19leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF96ZXJvX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPVxuICAgIEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlIGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYVxuICBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9ub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSBmbG9hdF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBmbG9hdF9ub3JtYWxfbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfaW5maW5pdGUgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfaW5mX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X2luZl9tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25hbiA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9uYW5fZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gRm9yX2ludDYzLmluY2x1c2l2ZSBmbG9hdF9taW5fbmFuX21hbnRpc3NhIGZsb2F0X21heF9uYW5fbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gZmxvYXRfemVyb1xuICB8IFN1Ym5vcm1hbCAtPiBmbG9hdF9zdWJub3JtYWxcbiAgfCBOb3JtYWwgLT4gZmxvYXRfbm9ybWFsXG4gIHwgSW5maW5pdGUgLT4gZmxvYXRfaW5maW5pdGVcbiAgfCBOYW4gLT4gZmxvYXRfbmFuXG47O1xuXG5sZXQgZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IDEuXG4gIHwgU3Vibm9ybWFsIC0+IDEwLlxuICB8IE5vcm1hbCAtPiAxMDAuXG4gIHwgSW5maW5pdGUgLT4gMS5cbiAgfCBOYW4gLT4gMS5cbjs7XG5cbmxldCBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIGZpbHRlciA9XG4gIExpc3QuZmlsdGVyX21hcCBGbG9hdC5DbGFzcy5hbGwgfmY6KGZ1biBjIC0+XG4gICAgaWYgZmlsdGVyIGMgdGhlbiBTb21lIChmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYywgZmxvYXRfb2ZfY2xhc3MgYykgZWxzZSBOb25lKVxuICB8PiB3ZWlnaHRlZF91bmlvblxuOztcblxubGV0IGZsb2F0X2Zpbml0ZSA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3dpdGhvdXRfbmFuID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgfCBJbmZpbml0ZSAtPiB0cnVlXG4gICAgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXQgPSBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW4gXyAtPiB0cnVlKVxuXG5sZXQgZmxvYXRfZmluaXRlX25vbl96ZXJvID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBaZXJvIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfcG9zaXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X25lZ2F0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBpZiAobm90IChGbG9hdC5pc19maW5pdGUgbG93ZXJfYm91bmQpKSB8fCBub3QgKEZsb2F0LmlzX2Zpbml0ZSB1cHBlcl9ib3VuZClcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiBib3VuZHMgYXJlIG5vdCBmaW5pdGVcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGxldCBsb3dlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCBpblxuICBsZXQgdXBwZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgRG93biB1cHBlcl9ib3VuZCBpblxuICBpZiBsb3dlcl9pbmNsdXNpdmUgPiB1cHBlcl9pbmNsdXNpdmVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiByZXF1ZXN0ZWQgcmFuZ2UgaXMgZW1wdHlcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86bG93ZXJfaW5jbHVzaXZlIH5oaTp1cHBlcl9pbmNsdXNpdmUpXG47O1xuXG5sZXQgZmxvYXRfaW5jbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgaWYgRmxvYXQuZXF1YWwgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgdGhlbiByZXR1cm4gbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBGbG9hdC4oID0gKSAoRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQpIHVwcGVyX2JvdW5kXG4gIHRoZW4gdW5pb24gWyByZXR1cm4gbG93ZXJfYm91bmQ7IHJldHVybiB1cHBlcl9ib3VuZCBdXG4gIGVsc2VcbiAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgWyAwLjA1LCByZXR1cm4gbG93ZXJfYm91bmRcbiAgICAgIDsgMC4wNSwgcmV0dXJuIHVwcGVyX2JvdW5kXG4gICAgICA7IDAuOSwgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgICAgIF1cbjs7XG5cbmxldCBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aCA9XG4gIGxpc3Rfd2l0aF9sZW5ndGggY2hhcl9nZW4gfmxlbmd0aCB8PiBtYXAgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdFxuOztcblxubGV0IHN0cmluZ19vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmcgPSBzdHJpbmdfb2YgY2hhclxubGV0IHN0cmluZ19ub25fZW1wdHkgPSBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJcbmxldCBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aCA9IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyIH5sZW5ndGhcbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nXG5cbmxldCBzZXhwX29mIGF0b20gPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQlYmluZCBzaXplID0gc2l6ZSBpblxuICAgICgqIGNob29zZSBhIG51bWJlciB3ZWlnaHRlZCBsb3cgc28gd2UgaGF2ZSBhIGRlY3JlYXNpbmcsIGJ1dCBub3QgdmFuaXNoaW5nLCBjaGFuY2VcbiAgICAgICB0byBnZW5lcmF0ZSBhdG9tcyBhcyBzaXplIGdyb3dzICopXG4gICAgbWF0Y2glYmluZCBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZSAwIChzaXplICsgMSkgd2l0aFxuICAgICgqIGdlbmVyYXRlIGFuIGF0b20gdXNpbmcgdGhlIGdpdmVuIHNpemUgKilcbiAgICB8IDAgLT5cbiAgICAgIGxldCVtYXAgYXRvbSA9IGF0b20gaW5cbiAgICAgIFNleHAuQXRvbSBhdG9tXG4gICAgKCogcmVseWluZyBvbiBbTGlzdC5nZW5dIHRvIGRpc3RyaWJ1dGUgW3NpemVdIG92ZXIgc3ViLXNleHBzICopXG4gICAgfCBfIC0+XG4gICAgICBsZXQlbWFwIGxpc3QgPSBsaXN0IHNlbGYgaW5cbiAgICAgIFNleHAuTGlzdCBsaXN0KVxuOztcblxubGV0IHNleHAgPSBzZXhwX29mIHN0cmluZ1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0JWJpbmQga2V5cyA9IGxpc3Qga2V5X2dlbiBpblxuICBsZXQga2V5cyA9IExpc3QuZGVkdXBfYW5kX3NvcnQga2V5cyB+Y29tcGFyZTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICBsZXQlYmluZCBkYXRhID0gbGlzdF93aXRoX2xlbmd0aCBkYXRhX2dlbiB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBrZXlzKSBpblxuICByZXR1cm4gKE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIChMaXN0LnppcF9leG4ga2V5cyBkYXRhKSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICBtYXAgKGxpc3QgZWx0X2dlbikgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfbGlzdCB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBjb21wYXJhdG9yX29mX21cbiAgICAgICh0eXBlIGEgYylcbiAgICAgIChtb2R1bGUgTSA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gYylcbiAgPVxuICBNLmNvbXBhcmF0b3Jcbjs7XG5cbmxldCBtYXBfdF9tIG0ga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuXG4gIHw+IG1hcCB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBzZXRfdF9tIG0gZWx0X2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIHw+IG1hcCB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBiaWdhcnJheTEgdCBraW5kIGxheW91dCA9XG4gIGxldCVtYXAgZWx0cyA9IGxpc3QgdCBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgZGltID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCBkaW0gfmY6KGZ1biBpIC0+IGVsdHMuKGkgLSBvZmZzZXQpKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGJpZ2FycmF5MSBjaGFyIENoYXIgQ19sYXlvdXRcbmxldCBmbG9hdDMyX3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5sZXQgYmlnYXJyYXkyX2RpbSA9XG4gIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gIHwgMCAtPiByZXR1cm4gKDAsIDApXG4gIHwgbWF4X3RvdGFsX3NpemUgLT5cbiAgICBsZXQlYmluZCBhID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemVdLCB3ZWlnaHRlZCBsb3cgdG8gZ2l2ZSB0aGUgb3RoZXJcbiAgICAgICAgIGRpbWVuc2lvbiBhIGdvb2QgY2hhbmNlIG9mIGJlaW5nIGNvbXBhcmF0aXZlbHkgaGlnaCAqKVxuICAgICAgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIG1heF90b3RhbF9zaXplXG4gICAgaW5cbiAgICBsZXQlYmluZCBiID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemUgLyBhXSwgd2VpZ2h0ZWQgaGlnaCB0byByZWFjaCBjbG9zZSB0b1xuICAgICAgICAgW21heF90b3RhbF9zaXplXSBtb3N0IG9mIHRoZSB0aW1lICopXG4gICAgICBsZXQgbWF4X2IgPSBtYXhfdG90YWxfc2l6ZSAvIGEgaW5cbiAgICAgIGxldCVtYXAgYl93ZWlnaHRlZF9sb3cgPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgbWF4X2IgaW5cbiAgICAgIG1heF9iIC0gYl93ZWlnaHRlZF9sb3dcbiAgICBpblxuICAgICgqIGF2b2lkIGFueSBza2V3IG9mIGEgdnMgYiBieSByYW5kb21seSBzd2FwcGluZyAqKVxuICAgIGlmJW1hcCBib29sIHRoZW4gYSwgYiBlbHNlIGIsIGFcbjs7XG5cbmxldCBiaWdhcnJheTIgdCBraW5kIGxheW91dCA9XG4gIGxldCViaW5kIGRpbTEsIGRpbTIgPSBiaWdhcnJheTJfZGltIGluXG4gIGxldCVtYXAgZWx0cyA9IGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0xIChsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMiB0KSBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3RfbWFwIH5mOkFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGkgaiAtPlxuICAgIGVsdHMuKGkgLSBvZmZzZXQpLihqIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgRGVidWcgPSBzdHJ1Y3RcbiAgbGV0IGNvdmVyYWdlXG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIENtcCA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICBzYW1wbGVcbiAgICA9XG4gICAgU2VxdWVuY2UuZm9sZFxuICAgICAgc2FtcGxlXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgQ21wKSlcbiAgICAgIH5mOihmdW4gY291bnRzIHZhbHVlIC0+XG4gICAgICAgIE1hcC51cGRhdGUgY291bnRzIHZhbHVlIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldiArIDEpKVxuICA7O1xuXG4gIGxldCBtb25pdG9yIHQgfmYgPVxuICAgIG1hcCB0IH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGYgdmFsdWU7XG4gICAgICB2YWx1ZSlcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIHN1Y2MgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFN1Y2Nlc3Nvci4gIFtJbnQ2NC5zdWNjIHhdIGlzIFtJbnQ2NC5hZGQgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgcHJlZCA6IGludDY0IC0+IGludDY0XG4oKiogUHJlZGVjZXNzb3IuICBbSW50NjQucHJlZCB4XSBpcyBbSW50NjQuc3ViIHggSW50NjQub25lXS4gKilcblxudmFsIGFicyA6IGludDY0IC0+IGludDY0XG4oKiogW2FicyB4XSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgW3hdLiBPbiBbbWluX2ludF0gdGhpc1xuICAgaXMgW21pbl9pbnRdIGl0c2VsZiBhbmQgdGh1cyByZW1haW5zIG5lZ2F0aXZlLiAqKVxuXG52YWwgbWF4X2ludCA6IGludDY0XG4oKiogVGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIDJ7XjYzfSAtIDEuICopXG5cbnZhbCBtaW5faW50IDogaW50NjRcbigqKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgLTJ7XjYzfS4gKilcblxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBhbmQuICopXG5cbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIG9yLiAqKVxuXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGV4Y2x1c2l2ZSBvci4gKilcblxudmFsIGxvZ25vdCA6IGludDY0IC0+IGludDY0XG4oKiogQml0d2lzZSBsb2dpY2FsIG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbigqKiBbSW50NjQuc2hpZnRfbGVmdCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIGxlZnQgYnkgW3ldIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGFuIGFyaXRobWV0aWMgc2hpZnQ6IHRoZSBzaWduIGJpdCBvZiBbeF0gaXMgcmVwbGljYXRlZFxuICAgYW5kIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhIGxvZ2ljYWwgc2hpZnQ6IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0c1xuICAgcmVnYXJkbGVzcyBvZiB0aGUgc2lnbiBvZiBbeF0uXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGludGVnZXIgKHR5cGUgW2ludF0pIHRvIGEgNjQtYml0IGludGVnZXJcbiAgICAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhblxuICAgaW50ZWdlciAodHlwZSBbaW50XSkuICBPbiA2NC1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye142M30sIGkuZS4gdGhlIGhpZ2gtb3JkZXIgYml0IGlzIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMxfSwgaS5lLiB0aGUgdG9wIDMzIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gKilcblxudmFsIHVuc2lnbmVkX3RvX2ludCA6IGludDY0IC0+IGludCBvcHRpb25cbigqKiBTYW1lIGFzIHshdG9faW50fSwgYnV0IGludGVycHJldHMgdGhlIGFyZ3VtZW50IGFzIGFuIHtlIHVuc2lnbmVkfSBpbnRlZ2VyLlxuICAgIFJldHVybnMgW05vbmVdIGlmIHRoZSB1bnNpZ25lZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2Fubm90IGZpdCBpbnRvIGFuXG4gICAgW2ludF0uXG5cbiAgICBAc2luY2UgNC4wOC4wICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzLjAgKilcblxudmFsIG1pbjogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTMuMFxuICopXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBhdG9taWMgOiBfIHRcbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYSBTZXF1ZW5jZS50KSAtPiAnYSB0XG4gIHZhbCBzaHJpbmsgOiAnYSB0IC0+ICdhIC0+ICdhIFNlcXVlbmNlLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgbGV0IGF0b21pYyBfID0gU2VxdWVuY2UuZW1wdHlcbiAgbGV0IGNyZWF0ZSA9IEZuLmlkXG4gIGxldCBzaHJpbmsgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbWFwIHQgfmYgfmZfaW52ZXJzZSA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UubWFwIH5mIChzaHJpbmsgdCAoZl9pbnZlcnNlIHgpKSlcbmxldCBmaWx0ZXIgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyIH5mIChzaHJpbmsgdCB4KSlcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiB+Zl9pbnZlcnNlID1cbiAgY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXJfbWFwIH5mIChzaHJpbmsgdCAoZl9pbnZlcnNlIHgpKSlcbjs7XG5cbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2Uub2ZfbGF6eSAobGF6eSAoc2hyaW5rIChmb3JjZSBsYXp5X3QpIHgpKSlcblxubGV0IGZpeGVkX3BvaW50IG9mX3Nocmlua2VyID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9zaHJpbmtlciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgIFsgU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjooZnVuIGZzdCAtPiBmc3QsIHNuZClcbiAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjooZnVuIHNuZCAtPiBmc3QsIHNuZClcbiAgICAgIF0pXG47O1xuXG5sZXQgdW5pdCA9IGF0b21pY1xubGV0IGJvb2wgPSBhdG9taWNcbmxldCBjaGFyID0gYXRvbWljXG5sZXQgaW50ID0gYXRvbWljXG5sZXQgaW50MzIgPSBhdG9taWNcbmxldCBpbnQ2MyA9IGF0b21pY1xubGV0IGludDY0ID0gYXRvbWljXG5sZXQgbmF0aXZlaW50ID0gYXRvbWljXG5sZXQgZmxvYXQgPSBhdG9taWNcblxubGV0IGJpZ2FycmF5MSBzcmMgPVxuICBsZXQgZGltID0gQmlnYXJyYXkuQXJyYXkxLmRpbSBzcmMgaW5cbiAgbWF0Y2ggZGltIHdpdGhcbiAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gIHwgXyAtPlxuICAgIGxldCBraW5kID0gQmlnYXJyYXkuQXJyYXkxLmtpbmQgc3JjIGluXG4gICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgc3JjIGluXG4gICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICBTZXF1ZW5jZS5pbml0IGRpbSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgIGxldCB0b19za2lwID0gdG9fc2tpcCArIG9mZnNldCBpblxuICAgICAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCAoZGltIC0gMSkgfmY6KGZ1biBpIC0+XG4gICAgICAgIHNyYy57aWYgaSA8IHRvX3NraXAgdGhlbiBpIGVsc2UgaSArIDF9KSlcbjs7XG5cbmxldCBiaWdzdHJpbmcgPSBjcmVhdGUgYmlnYXJyYXkxXG5sZXQgZmxvYXQzMl92ZWMgPSBjcmVhdGUgYmlnYXJyYXkxXG5sZXQgZmxvYXQ2NF92ZWMgPSBjcmVhdGUgYmlnYXJyYXkxXG5cbmxldCBiaWdhcnJheTIgPVxuICBsZXQgbW9kdWxlIERpbXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBkaW0xIDogaW50XG4gICAgICA7IGRpbTIgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlIGEgPSBCaWdhcnJheS5BcnJheTIueyBkaW0xID0gZGltMSBhOyBkaW0yID0gZGltMiBhIH1cbiAgZW5kXG4gIGluXG4gIGxldCBzaHJpbmsgZmllbGQgc3JjID1cbiAgICBsZXQgZGltcyA9IERpbXMuY3JlYXRlIHNyYyBpblxuICAgIG1hdGNoIEZpZWxkLmdldCBmaWVsZCBkaW1zIHdpdGhcbiAgICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IF8gLT5cbiAgICAgIGxldCBraW5kID0gQmlnYXJyYXkuQXJyYXkyLmtpbmQgc3JjIGluXG4gICAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkyLmxheW91dCBzcmMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgICBsZXQgKHsgZGltMTsgZGltMiB9IDogRGltcy50KSA9IEZpZWxkLm1hcCBmaWVsZCBkaW1zIH5mOkludC5wcmVkIGluXG4gICAgICBTZXF1ZW5jZS5pbml0IChGaWVsZC5nZXQgZmllbGQgZGltcykgfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICAgIGxldCB0b19za2lwID0gdG9fc2tpcCArIG9mZnNldCBpblxuICAgICAgICBsZXQgc2tpcCBpID0gaWYgaSA8IHRvX3NraXAgdGhlbiBpIGVsc2UgaSArIDEgaW5cbiAgICAgICAgQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaW5pdCBraW5kIGxheW91dCBkaW0xIGRpbTIgfmY6KGZ1biBkaW0xIGRpbTIgLT5cbiAgICAgICAgICBsZXQgKHsgZGltMTsgZGltMiB9IDogRGltcy50KSA9IEZpZWxkLm1hcCBmaWVsZCB7IGRpbTE7IGRpbTIgfSB+Zjpza2lwIGluXG4gICAgICAgICAgc3JjLntkaW0xLCBkaW0yfSkpXG4gIGluXG4gIGZ1biBzcmMgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmluayBEaW1zLkZpZWxkcy5kaW0xIHNyYzsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTIgc3JjIF1cbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGNyZWF0ZSBiaWdhcnJheTJcbmxldCBmbG9hdDY0X21hdCA9IGNyZWF0ZSBiaWdhcnJheTJcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgY3JlYXRlIChmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gTm9uZSlcbiAgICAgICAgKFNlcXVlbmNlLm1hcCB+ZjpPcHRpb24ucmV0dXJuIChzaHJpbmsgdmFsdWVfdCB2YWx1ZSkpKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBmaXhlZF9wb2ludCAoZnVuIGxpc3RfdCAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gdGFpbFxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgZWx0X3QgaGVhZCkgfmY6KGZ1biBoZWFkIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGxpc3RfdCB0YWlsKSB+ZjooZnVuIHRhaWwgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHN0cmluZyA9IG1hcCAobGlzdCBjaGFyKSB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0IH5mX2ludmVyc2U6U3RyaW5nLnRvX2xpc3RcbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nIH5mX2ludmVyc2U6Qnl0ZXMudG9fc3RyaW5nXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0IH5mX2ludmVyc2U6QXJyYXkudG9fbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZSB+Zl9pbnZlcnNlOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbCB+Zl9pbnZlcnNlOkxhenkuZm9yY2VcblxubGV0IHNleHAgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNocmlua2VyIC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBTZXhwLkxpc3QgbCAtPlxuICAgICAgICBsZXQgc2hyaW5rX2xpc3QgPVxuICAgICAgICAgIHNocmluayAobGlzdCBzaHJpbmtlcikgbCB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBsIC0+IFNleHAuTGlzdCBsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2hyaW5rX3RyZWUgPSBTZXF1ZW5jZS5vZl9saXN0IGwgaW5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmtfbGlzdDsgc2hyaW5rX3RyZWUgXSkpXG47O1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOkVpdGhlci5maXJzdFxuICAgIHwgU2Vjb25kIHNuZCAtPiBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOkVpdGhlci5zZWNvbmQpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXBcbiAgICAoZWl0aGVyIG9rX3QgZXJyX3QpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuICAgIH5mX2ludmVyc2U6KGZ1bmN0aW9uXG4gICAgICB8IE9rIG9rIC0+IEZpcnN0IG9rXG4gICAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBhbGlzdCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3QgdHJlZSBpblxuICAgIGxldCBkcm9wX2tleXMgPVxuICAgICAgU2VxdWVuY2UubWFwIChTZXF1ZW5jZS5vZl9saXN0IGFsaXN0KSB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGspXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2tleXMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGtleSBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsga2V5X3Qga2V5KSB+ZjooZnVuIHNtYWxsZXJfa2V5IC0+XG4gICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIH5jb21wYXJhdG9yIHRyZWUgfmtleTpzbWFsbGVyX2tleSB+ZGF0YVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IGBPayB0cmVlIC0+IFNvbWUgdHJlZVxuICAgICAgICAgICAgIHwgYER1cGxpY2F0ZSAtPiBOb25lKSkpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2RhdGEgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgU2VxdWVuY2UubWFwIChzaHJpbmsgZGF0YV90IGRhdGEpIH5mOihmdW4gc21hbGxlcl9kYXRhIC0+XG4gICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5zZXQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5IH5kYXRhOnNtYWxsZXJfZGF0YSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2tleXM7IHNocmlua19rZXlzOyBzaHJpbmtfZGF0YSBdKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGxpc3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3QgdHJlZSBpblxuICAgIGxldCBkcm9wX2VsdHMgPVxuICAgICAgU2VxdWVuY2UubWFwIChTZXF1ZW5jZS5vZl9saXN0IGxpc3QpIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0KVxuICAgIGluXG4gICAgbGV0IHNocmlua19lbHRzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGVsdF90IGVsdCkgfmY6KGZ1biBzbWFsbGVyX2VsdCAtPlxuICAgICAgICAgICAgIG1hdGNoIFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUubWVtIH5jb21wYXJhdG9yIHRyZWUgc21hbGxlcl9lbHQgd2l0aFxuICAgICAgICAgICAgIHwgdHJ1ZSAtPiBOb25lXG4gICAgICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgICAgU29tZSAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgdHJlZSB+Y29tcGFyYXRvciBzbWFsbGVyX2VsdCkpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9lbHRzOyBzaHJpbmtfZWx0cyBdKVxuOztcblxubGV0IG1hcF90IGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIG1hcF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBtYXBfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAobWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QpXG4gICAgICAgIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IG1hcF90KVxuOztcblxubGV0IHNldF90IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gc2V0X3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IFNldC5jb21wYXJhdG9yIHNldF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90KVxuICAgICAgICB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBzZXRfdClcbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFRlc3RfaW50ZlxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBTZWVkID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9uZGV0ZXJtaW5pc3RpY1xuICAgICAgfCBEZXRlcm1pbmlzdGljIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIG1vZHVsZSBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgc2VxdWVuY2UgPVxuICAgICAgbGV0IHByZWZpeCwgc3VmZml4ID0gU2VxdWVuY2Uuc3BsaXRfbiBzZXF1ZW5jZSAxMDAgaW5cbiAgICAgIGxldCBwcmVmaXggPSBMaXN0Lm1hcCBwcmVmaXggfmY6c2V4cF9vZl9lbHQgaW5cbiAgICAgIGxldCBzdWZmaXggPVxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5pc19lbXB0eSBzdWZmaXggd2l0aFxuICAgICAgICB8IHRydWUgLT4gW11cbiAgICAgICAgfCBmYWxzZSAtPiBbIFslbWVzc2FnZSBcIi4uLlwiXSBdXG4gICAgICBpblxuICAgICAgU2V4cC5MaXN0IChwcmVmaXggQCBzdWZmaXgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHNlZWQgOiBTZWVkLnRcbiAgICA7IHRlc3RfY291bnQgOiBpbnRcbiAgICA7IHNocmlua19jb3VudCA6IGludFxuICAgIDsgc2l6ZXMgOiBpbnQgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZyA6IENvbmZpZy50ID1cbiAgeyBzZWVkID0gRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuICA7IHRlc3RfY291bnQgPSAxMF8wMDBcbiAgOyBzaHJpbmtfY291bnQgPSAxMF8wMDBcbiAgOyBzaXplcyA9IFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgfnN0YXJ0OmBpbmNsdXNpdmUgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgfVxuOztcblxubGV0IGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IGluaXRpYWxfcmFuZG9tX3N0YXRlIH5jb25maWcgPVxuICBtYXRjaCBDb25maWcuc2VlZCBjb25maWcgd2l0aFxuICB8IE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gIHwgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChTdHJpbmcuaGFzaCBzdHJpbmcpXG47O1xuXG5sZXQgb25lX3NpemVfcGVyX3Rlc3Qgfihjb25maWcgOiBDb25maWcudCkgPVxuICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6KGNvbmZpZy5zaXplcywgMCkgfmY6KGZ1biAoc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcykgLT5cbiAgICBtYXRjaCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgPj0gY29uZmlnLnRlc3RfY291bnQgd2l0aFxuICAgIHwgdHJ1ZSAtPiBOb25lXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKG1hdGNoIFNlcXVlbmNlLm5leHQgc2l6ZXMgd2l0aFxuICAgICAgIHwgU29tZSAoc2l6ZSwgcmVtYWluaW5nX3NpemVzKSAtPlxuICAgICAgICAgU29tZSAoc2l6ZSwgKHJlbWFpbmluZ19zaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzICsgMSkpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICByYWlzZV9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiBpbnN1ZmZpY2llbnQgc2l6ZSB2YWx1ZXMgZm9yIHRlc3QgY291bnRcIlxuICAgICAgICAgICAgICAgfnRlc3RfY291bnQ6KGNvbmZpZy50ZXN0X2NvdW50IDogaW50KVxuICAgICAgICAgICAgICAgKG51bWJlcl9vZl9zaXplX3ZhbHVlcyA6IGludCldKSlcbjs7XG5cbmxldCBzaHJpbmtfZXJyb3IgfnNocmlua2VyIH5jb25maWcgfmYgaW5wdXQgZXJyb3IgPVxuICBsZXQgcmVjIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvciA9XG4gICAgbWF0Y2ggc2hyaW5rX2NvdW50IHdpdGhcbiAgICB8IDAgLT4gaW5wdXQsIGVycm9yXG4gICAgfCBfIC0+XG4gICAgICBsZXQgc2hyaW5rX2NvdW50ID0gc2hyaW5rX2NvdW50IC0gMSBpblxuICAgICAgKG1hdGNoIFNlcXVlbmNlLm5leHQgYWx0ZXJuYXRlcyB3aXRoXG4gICAgICAgfCBOb25lIC0+IGlucHV0LCBlcnJvclxuICAgICAgIHwgU29tZSAoYWx0ZXJuYXRlLCBhbHRlcm5hdGVzKSAtPlxuICAgICAgICAgKG1hdGNoIGYgYWx0ZXJuYXRlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGFsdGVybmF0ZSBpblxuICAgICAgICAgICAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGFsdGVybmF0ZSBlcnJvcikpXG4gIGluXG4gIGxldCBzaHJpbmtfY291bnQgPSBDb25maWcuc2hyaW5rX2NvdW50IGNvbmZpZyBpblxuICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBpbnB1dCBpblxuICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3Jcbjs7XG5cbmxldCBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yID1cbiAgbGV0IHJhbmRvbSA9IGluaXRpYWxfcmFuZG9tX3N0YXRlIH5jb25maWcgaW5cbiAgU2VxdWVuY2UuYXBwZW5kXG4gICAgKFNlcXVlbmNlLm9mX2xpc3QgZXhhbXBsZXMpXG4gICAgKG9uZV9zaXplX3Blcl90ZXN0IH5jb25maWdcbiAgICAgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gc2l6ZSAtPiBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuZXJhdG9yIH5zaXplIH5yYW5kb20pKVxuOztcblxubGV0IHdpdGhfc2FtcGxlIH5mID8oY29uZmlnID0gZGVmYXVsdF9jb25maWcpID8oZXhhbXBsZXMgPSBbXSkgZ2VuZXJhdG9yID1cbiAgbGV0IHNlcXVlbmNlID0gaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciBpblxuICBmIHNlcXVlbmNlXG47O1xuXG5sZXQgcmVzdWx0ICh0eXBlIGEpIH5mID8oY29uZmlnID0gZGVmYXVsdF9jb25maWcpID8oZXhhbXBsZXMgPSBbXSkgbSA9XG4gIGxldCAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPSBtIGluXG4gIHdpdGhfc2FtcGxlIE0ucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbmZpZyB+ZXhhbXBsZXMgfmY6KGZ1biBzZXF1ZW5jZSAtPlxuICAgIG1hdGNoXG4gICAgICBTZXF1ZW5jZS5mb2xkX3Jlc3VsdCBzZXF1ZW5jZSB+aW5pdDooKSB+ZjooZnVuICgpIGlucHV0IC0+XG4gICAgICAgIG1hdGNoIGYgaW5wdXQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKGlucHV0LCBlcnJvcikpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgICBsZXQgc2hyaW5rZXIgPSBNLnF1aWNrY2hlY2tfc2hyaW5rZXIgaW5cbiAgICAgIGxldCBpbnB1dCwgZXJyb3IgPSBzaHJpbmtfZXJyb3IgfnNocmlua2VyIH5jb25maWcgfmYgaW5wdXQgZXJyb3IgaW5cbiAgICAgIEVycm9yIChpbnB1dCwgZXJyb3IpKVxuOztcblxubGV0IHJ1biAodHlwZSBhKSB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aF9qb2luIH5iYWNrdHJhY2U6KEJhY2t0cmFjZS5FeG4uYW1fcmVjb3JkaW5nICgpKSAoZnVuICgpIC0+IGYgeClcbiAgaW5cbiAgbWF0Y2ggcmVzdWx0IH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSkgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IHRlc3QgZmFpbGVkXCIgKGlucHV0IDogTS50KSAoZXJyb3IgOiBFcnJvci50KV1cbjs7XG5cbmxldCB3aXRoX3NhbXBsZV9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yID1cbiAgbGV0IGYgeCA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZiB4KSBpblxuICB3aXRoX3NhbXBsZSB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuXG5sZXQgcnVuX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoIH5iYWNrdHJhY2U6KEJhY2t0cmFjZS5FeG4uYW1fcmVjb3JkaW5nICgpKSAoZnVuICgpIC0+IGYgeClcbiAgaW5cbiAgcnVuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgT2JzZXJ2ZXIwXG5cbmxldCB1bm1hcCB0IH5mID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIHQgKGYgeCkgfnNpemUgfmhhc2gpXG5sZXQgb2ZfaGFzaF9mb2xkIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplOl8gfmhhc2ggLT4gZiBoYXNoIHgpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGZvcmNlIGxhenlfdCkgeCB+c2l6ZSB+aGFzaClcblxubGV0IGZpeGVkX3BvaW50IHdyYXAgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKHdyYXAgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCB1bml0ID0gb3BhcXVlXG5sZXQgYm9vbCA9IG9mX2hhc2hfZm9sZCBCb29sLmhhc2hfZm9sZF90XG5sZXQgY2hhciA9IG9mX2hhc2hfZm9sZCBDaGFyLmhhc2hfZm9sZF90XG5sZXQgaW50ID0gb2ZfaGFzaF9mb2xkIEludC5oYXNoX2ZvbGRfdFxubGV0IGludDMyID0gb2ZfaGFzaF9mb2xkIEludDMyLmhhc2hfZm9sZF90XG5sZXQgaW50NjMgPSBvZl9oYXNoX2ZvbGQgSW50NjMuaGFzaF9mb2xkX3RcbmxldCBpbnQ2NCA9IG9mX2hhc2hfZm9sZCBJbnQ2NC5oYXNoX2ZvbGRfdFxubGV0IG5hdGl2ZWludCA9IG9mX2hhc2hfZm9sZCBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcbmxldCBmbG9hdCA9IG9mX2hhc2hfZm9sZCBGbG9hdC5oYXNoX2ZvbGRfdFxubGV0IHN0cmluZyA9IG9mX2hhc2hfZm9sZCBTdHJpbmcuaGFzaF9mb2xkX3RcbmxldCBzZXhwID0gb2ZfaGFzaF9mb2xkIFNleHAuaGFzaF9mb2xkX3RcbmxldCBiaWdzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfY2hhcilcbmxldCBmbG9hdDMyX3ZlYyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDY0X3ZlYyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDMyX21hdCA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDY0X21hdCA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBieXRlcyA9IHVubWFwIHN0cmluZyB+ZjpCeXRlcy50b19zdHJpbmdcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciB+c2l6ZSB+aGFzaCAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gb2JzZXJ2ZSBmc3RfdCBmc3QgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKVxuICAgIHwgU2Vjb25kIHNuZCAtPiBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDIpKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgdW5tYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE9rIG9rIC0+IEZpcnN0IG9rXG4gICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBmc3RfdCBmc3QgfnNpemUgfmhhc2ggaW5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoIGluXG4gICAgaGFzaClcbjs7XG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIHVubWFwIChlaXRoZXIgb3BhcXVlIHZhbHVlX3QpIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGaXJzdCAoKVxuICAgIHwgU29tZSB2YWx1ZSAtPiBTZWNvbmQgdmFsdWUpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIGxpc3QgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpIGluXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgR2VuZXJhdG9yLnNpemVzIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggKClcbiAgICAgIHw+IEdlbmVyYXRvci5nZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQyX2V4biBsaXN0IHNpemVzIH5pbml0OihoYXNoX2ZvbGRfaW50IGhhc2ggMCkgfmY6KGZ1biBoYXNoIGVsdCBzaXplIC0+XG4gICAgICBvYnNlcnZlIGVsdF90IGVsdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpKSlcbjs7XG5cbmxldCBhcnJheSB0ID0gdW5tYXAgKGxpc3QgdCkgfmY6QXJyYXkudG9fbGlzdFxubGV0IHJlZiB0ID0gdW5tYXAgdCB+ZjpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IHVubWFwIHQgfmY6TGF6eS5mb3JjZVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIGYgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpIGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgICgqIEVtcGlyaWNhbGx5LCBkb3VibGluZyB0aGUgc2l6ZSB3aGVuIGdlbmVyYXRpbmcgdGhlIGxpc3Qgb2YgaW5wdXRzIGdpdmVzIHVzIG11Y2hcbiAgICAgICAgIGJldHRlciBjb3ZlcmFnZSBvZiB0aGUgc3BhY2Ugb2YgZnVuY3Rpb25zLiAqKVxuICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlIChHZW5lcmF0b3Iuc2l6ZXMgKCkpIH5zaXplOihzaXplICogMikgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkIHNpemVzIH5pbml0Omhhc2ggfmY6KGZ1biBoYXNoIHNpemUgLT5cbiAgICAgIGxldCB4ID0gR2VuZXJhdG9yLmdlbmVyYXRlIGRvbSB+c2l6ZSB+cmFuZG9tIGluXG4gICAgICBvYnNlcnZlIHJuZyAoZiB4KSB+c2l6ZSB+aGFzaCkpXG47O1xuXG5sZXQgbWFwX3RyZWUga2V5X29icyBkYXRhX29icyA9XG4gIHVubWFwIChsaXN0IChib3RoIGtleV9vYnMgZGF0YV9vYnMpKSB+ZjpNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0XG47O1xuXG5sZXQgc2V0X3RyZWUgZWx0X29icyA9IHVubWFwIChsaXN0IGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdFxuXG5sZXQgbWFwX3Qga2V5X29icyBkYXRhX29icyA9XG4gIHVubWFwIChtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzKSB+ZjpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG47O1xuXG5sZXQgc2V0X3QgZWx0X29icyA9IHVubWFwIChzZXRfdHJlZSBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4iLCJtb2R1bGUgR2VuZXJhdG9yID0gR2VuZXJhdG9yXG5tb2R1bGUgT2JzZXJ2ZXIgPSBPYnNlcnZlclxubW9kdWxlIFNocmlua2VyID0gU2hyaW5rZXJcbm1vZHVsZSBUZXN0ID0gVGVzdFxubW9kdWxlIEV4cG9ydCA9IEV4cG9ydFxuaW5jbHVkZSBFeHBvcnRcblxuKCoqLyoqKVxuXG4oKl8gVGhpcyBtb2R1bGUgaXMgZXhwb3NlZCBvbmx5IHRvIG1ha2Ugb2NhbWxkb2Mgb3V0cHV0IG1vcmUgcmVhZGFibGUuICopXG5tb2R1bGUgV2l0aF9iYXNpY190eXBlcyA9IFdpdGhfYmFzaWNfdHlwZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpZ2FycmF5X2hlbHBlcnMgPSBCaWdhcnJheV9oZWxwZXJzXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCB0eXBlcmVwXVxuXG4gIHZhbCBzaWduZWQgOiBib29sXG4gIHZhbCBudW1fYml0cyA6IGludFxuICB2YWwgbnVtX2J5dGVzIDogaW50XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE8gOiBzaWdcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgbW9kdWxlIFdyYXAgOiBzaWdcbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gICAgZW5kXG4gIGVuZFxuXG5lbmRcblxubGV0IHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBCYXNlLnJhaXNlX3MgWyVtZXNzYWdlIChtb2RfbmFtZSBeIFwiOiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcIikgfl86KHRvX3N0cmluZyB4KV1cbltAQGNvbGRdXG47O1xuXG5sZXQgdHJ1bmNfdW5zaWduZWQgOiB0eXBlIGEgYi4gY29udjooYSAtPiBiKSAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKSAtPiBtYXNrOmEgLT4gYSAtPiBiID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgeCAtPiBjb252IChsb2dhbmQgeCBtYXNrKVxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fdW5zaWduZWRcbiAgOiB0eXBlIGEgYi5cbiAgICBjb252OihhIC0+IGIpXG4gICAgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSlcbiAgICAtPiBtYXNrOmFcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYlxuICA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiBjb252IHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IHRydW5jX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnQ6aW50IC0+IGEgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggLT4gc2hpZnRfcmlnaHQgKHNoaWZ0X2xlZnQgeCBzaGlmdCkgc2hpZnRcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0OmludFxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG47O1xuXG5sZXQgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIGlmIGdyZWF0ZXJfZXF1YWwgeCB6ZXJvIHRoZW4geCBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPVxuICByYWlzZSAoU2V4cGxpYjAuU2V4cF9jb252Lk9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG47O1xuXG5tb2R1bGUgUmVwcjMyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLlN5cy5JbW1lZGlhdGU2NC5NYWtlIChCYXNlLkludCkgKEJhc2UuSW50MzIpXG5cbiAgbGV0IHRvX2ludDMyICh4IDogdCkgOiBCYXNlLkludDMyLnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4geFxuICA7O1xuXG4gICgqIHNpZ24tZXh0ZW5kaW5nIGNvbnZlcnNpb24gdG8gaW50NjQgKilcbiAgbGV0IHRvX2ludDY0ICh4IDogdCkgOiBCYXNlLkludDY0LnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50IHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQzMiB4XG4gIDs7XG5lbmRcblxuKCogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdHlwZXMgKilcbnR5cGUgaW50OCA9IGludFxudHlwZSB1aW50OCA9IGludFxudHlwZSBpbnQxNiA9IGludFxudHlwZSB1aW50MTYgPSBpbnRcbnR5cGUgaW50MzIgPSBSZXByMzIudFxudHlwZSB1aW50MzIgPSBSZXByMzIudFxudHlwZSBpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSB1aW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgaW50NjQgPSBCYXNlLkludDY0LnRcbnR5cGUgdWludDY0ID0gQmFzZS5JbnQ2NC50XG5cbm1vZHVsZSBJbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTEyOFxuICBsZXQgbWF4X3ZhbHVlID0gMTI3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAyNTVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMzI3NjhcbiAgbGV0IG1heF92YWx1ZSA9IDMyNzY3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gNjU1MzVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGRkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFja2VuZDMyX1MgPSBzaWdcbiAgbW9kdWxlIFNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzIgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyIDogdCAtPiBCYXNlLkludDMyLnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50OCA6IGludDggLT4gdFxuICAgIHZhbCBvZl9pbnQxNiA6IGludDE2IC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfdHJ1bmMgOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX2ludDY0X2V4biA6IGludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQzMl93cmFwIDogdWludDMyIC0+IHRcbiAgICB2YWwgb2ZfdWludDMyX2V4biA6IHVpbnQzMiAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSBVbnNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfdHJ1bmMgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDMyX2V4biA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfdHJ1bmMgOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCB0b19iYXNlX2ludDMyX2V4biA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfdHJ1bmMgOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X2V4biA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50NjQgOiB0IC0+IEJhc2UuSW50NjQudFxuICAgIHZhbCB0b19iYXNlX2ludF9leG4gOiB0IC0+IEJhc2UuSW50LnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDggOiB1aW50OCAtPiB0XG4gICAgdmFsIG9mX3VpbnQxNiA6IHVpbnQxNiAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M190cnVuYyA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M19leG4gOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfdHJ1bmMgOiB1aW50NjQgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfZXhuIDogdWludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDMyX3dyYXAgOiBpbnQzMiAtPiB0XG4gICAgdmFsIG9mX2ludDMyX2V4biA6IGludDMyIC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJhY2tlbmQzMiA6IHNpZ1xuICB2YWwgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICAgICAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgICAgIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0gdHJ1bmMgeFxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4biB4XG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgNDI5NDk2NzI5NUxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gICAgICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgICAgIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgICAgIGxldCBtYXNrID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgMHhGRkZGRkZGRkxcbiAgICAgIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gICAgICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICAgICAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBleG42NCB4ID1cbiAgICAgICAgZXhuX3Vuc2lnbmVkXG4gICAgICAgICAgfmNvbnZcbiAgICAgICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICAgICAgfm1hc2s6bWFzazY0XG4gICAgICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgICAgICB+bW9kX25hbWVcbiAgICAgICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICAgICAgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9XG4gICAgICAgIEJhc2UuSW50NjQudG9faW50X3RydW5jIChsb2dhbmQ2NCAoQmFzZS5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrNjQpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0gQmFzZS5JbnQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50LiggPD0gKSB4IChCYXNlLkludC5vZl9pbnQ2NF90cnVuYyAyMTQ3NDgzNjQ3TClcbiAgICAgICAgdGhlbiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludC50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9ICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTiA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDMyXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQzMlxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSBCYXNlLkludDYzLnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IEJhc2UuSW50NjMudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDY0LnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA6IHQgPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDMyLiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludDMyLiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50MzIuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQzMi4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQzMi4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50MzIuKCArIClcbiAgICAgICAgICBsZXQgKCAtICkgPSBCYXNlLkludDMyLiggLSApXG4gICAgICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQzMi4oICogKVxuICAgICAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50MzIuKCAvIClcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCBjb21wYXJlIHggeSA9IFN0ZGxpYi5JbnQzMi51bnNpZ25lZF9jb21wYXJlIHggeSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDMyXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQzMlxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSAtMWxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQzMi5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTCAmJiBCYXNlLkludDY0LiggPD0gKSB4IDQyOTQ5NjcyOTVMXG4gICAgICAgIHRoZW4gQmFzZS5JbnQ2NC50b19pbnQzMl90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDMyLnRvX2ludDY0IHgpIDB4RkZGRkZGRkZMXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgICB8PiBCYXNlLkludDMyLnRvX2ludF9leG5cbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJWx1XCIgeClcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVsdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICAgICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICAgICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgICAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2RpdlxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKSA9XG4gICAgbWF0Y2ggUmVwcjMyLnJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgSSA6IEJhY2tlbmQzMl9TKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIE4gOiBCYWNrZW5kMzJfUylcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5TaWduZWRcbmVuZFxuXG5tb2R1bGUgVWludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uVW5zaWduZWRcbmVuZFxuXG5tb2R1bGUgSW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGltbWVkaWF0ZTY0XSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDYzXCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2My4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2My4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDYzLiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2My4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjMuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2My4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDYzLiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgKCogeCBhbmQgeSBhcmUgc2lnbi1leHRlbmRlZCwgd2hpY2ggcHJlc2VydmVzIHRoZSBoaWdoIGJpdCAqKVxuICAgIFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlIChCYXNlLkludDYzLnRvX2ludDY0IHgpIChCYXNlLkludDYzLnRvX2ludDY0IHkpXG4gIDs7XG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjNcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgKFVpbnQzMi50b19iYXNlX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuICh4IDogdWludDY0KSA6IHQgPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiICh0b19iYXNlX2ludDY0IHgpKVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIG9mX2Jhc2VfaW50NjRfZXhuIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2My4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2My4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2My4oICogKVxuXG4gICAgICBsZXQgKCAvICkgeCB5ID1cbiAgICAgICAgb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2NC4oIC8gKSAodG9fYmFzZV9pbnQ2NCB4KSAodG9fYmFzZV9pbnQ2NCB5KSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lm1pbl92YWx1ZVxuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2NC5tYXhfdmFsdWVcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ2NFwiXG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2NC4oID49IClcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDMyIHggPSBCYXNlLkludDY0Lm9mX2ludDMyIChJbnQzMi50b19iYXNlX2ludDMyIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2MyB4ID0gQmFzZS5JbnQ2My50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDY0LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDY0LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDY0LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2NC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDY0LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjQuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgY29tcGFyZSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAtMUxcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2NC4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjRcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IFVpbnQzMi50b19iYXNlX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDYzICh4IDogdWludDYzKSA6IGludDY0ID1cbiAgICBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlTHVcIiB4KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9kaXZcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuICB2YWwgZ2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuICB2YWwgZ2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcbiAgdmFsIGdldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcbiAgdmFsIGdldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG4gIHZhbCBnZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG4gIHZhbCBnZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDggLT4gdW5pdFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDggLT4gdW5pdFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudFxuICB2YWwgZ2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnQgLT4gdW5pdFxuZW5kXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IENhbWwuSW50MzIudCAtPiBDYW1sLkludDMyLnQgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5tb2R1bGUgTWFrZV9nZXQgKEYgOiBHZXRfZnVuY3Rpb25zKSA6IEdldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50OCB0IH5wb3MgPSBJbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ4IHQgfnBvcyA9IFVpbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIE1ha2Vfc2V0IChGIDogU2V0X2Z1bmN0aW9ucykgOiBTZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDggdCB+cG9zIHggPSBGLnNldF91aW50OCB0IHBvcyB4XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50OCB0IH5wb3MgeCA9IHNldF91aW50OCB0IH5wb3MgKFVpbnQ4Lm9mX2ludDhfd3JhcCB4KVxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQxNl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF91aW50MTZfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQxNl9sZSB0IH5wb3MgeCA9IHNldF91aW50MTZfbGUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuICBsZXQgc2V0X2ludDE2X2JlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9iZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDMyX2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQzMl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQzMl9sZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9sZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG4gIGxldCBzZXRfdWludDMyX2JlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2JlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50NjRfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQ2NF9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50NjRfbGUgdCB+cG9zIHggPSBzZXRfaW50NjRfbGUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQ2NF9iZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9iZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBCeXRlczBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgPSBcIiVjYW1sX2J5dGVzX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuICBleHRlcm5hbCBzZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzKVxuICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlcylcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMwVW5zYWZlKVxuICAgIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzMFVuc2FmZSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0cmluZzAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5lbmRcblxubW9kdWxlIFN0cmluZzBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzApXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzBVbnNhZmUpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBCaWdzdHJpbmcwID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgKCBjaGFyXG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHRcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5jX2xheW91dCApXG4gICAgICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltIDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG5lbmRcblxuaW5jbHVkZSBCaWdzdHJpbmcwXG5cbmV4dGVybmFsIGF1eF9jcmVhdGUgOiBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXM6aW50IC0+IHNpemU6aW50IC0+IHQgPSBcImJpZ3N0cmluZ19hbGxvY1wiXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogT25lIG5lZWRzIHRvIHVzZSBbQ2FtbC5TeXMud29yZF9zaXplXSBzbyB0aGF0IGl0cyB2YWx1ZSBpcyBrbm93biBhdCBjb21waWxlLXRpbWUuICopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBDYW1sLlN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IENhbWwuU3lzLmJpZ19lbmRpYW5cbmxldCBub3Rfb25fMzJiaXQgPSBDYW1sLlN5cy53b3JkX3NpemUgPiAzMlxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi52YWx1ZSBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfmRlZmF1bHQ6KC0xKVxuICBpblxuICAoKiBUaGlzIGNoZWNrIGlzIGltcG9ydGFudCBiZWNhdXNlIFthdXhfY3JlYXRlIH5zaXplOigtMSldIHJhaXNlcyBbT3V0X29mX21lbW9yeV0sIHdoaWNoXG4gICAgIGNvdWxkIGJlIGNvbmZ1c2luZyBkdXJpbmcgZGVidWdnaW5nLiAqKVxuICBpZiBzaXplIDwgMCB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiY3JlYXRlOiBzaXplID0gJWQgPCAwXCIgc2l6ZSk7XG4gIGF1eF9jcmVhdGUgfm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+c2l6ZVxuOztcblxubGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuZXh0ZXJuYWwgaXNfbW1hcHBlZCA6IHQgLT4gYm9vbCA9IFwiYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlwiIFtAQG5vYWxsb2NdXG5cbmxldCBpbml0IG4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHQue2l9IDwtIGYgaVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgY2hlY2tfYXJncyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogcG9zIDwgMFwiKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogbGVuIDwgMFwiKTtcbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgKCogQmUgY2FyZWZ1bCB3aXRoIG92ZXJmbG93ISAgV2UgY291bGQgaGF2ZSBib2dvbnMgbGlrZSBbcG9zID0gSW50Lm1heF92YWx1ZV0gb3IgW2xlbiA9XG4gICAgIEludC5tYXhfdmFsdWVdIHBhc3NlZCBieSB0aGUgdXNlci4gKilcbiAgaWYgYnN0cl9sZW4gLSBwb3MgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpZ3N0cmluZy4lczogbGVuZ3RoKGJzdHIpIDwgcG9zICsgbGVuXCIgbG9jKVxuOztcblxubGV0IGdldF9vcHRfbGVuIGJzdHIgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgU29tZSBsZW4gLT4gbGVuXG4gIHwgTm9uZSAtPiBsZW5ndGggYnN0ciAtIHBvc1xuOztcblxuKCogQmxpdHRpbmcgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOnRcbiAgLT4gc3JjX3BvczppbnRcbiAgLT4gZHN0OnRcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaWdzdHJpbmdfYmxpdF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqIEV4cG9zaW5nIHRoZSBleHRlcm5hbCB2ZXJzaW9uIG9mIGdldC9zZXQgc3VwcG9ydHMgYmV0dGVyIGlubGluaW5nLiAqKVxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbmVuZFxuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubW9kdWxlIEZyb21fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQnl0ZXNfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOmJ5dGVzXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0XG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCaWdzdHJpbmdfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OmJ5dGVzXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCeXRlc19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzpzdHJpbmdcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUb19ieXRlc1xuICBpbmNsdWRlIEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ3N0cmluZzApIChUb19ieXRlcylcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRnJvbV9zdHJpbmcuc3Vib1xubGV0IG9mX2J5dGVzID0gRnJvbV9ieXRlcy5zdWJvXG5sZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnN1Ym9cbmxldCB0b19ieXRlcyA9IFRvX2J5dGVzLnN1Ym9cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbmxldCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdCA9IGZ1bmN0aW9uXG4gIHwgQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgU2V4cGxpYjAuU2V4cF9jb252Lm9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY29weSB0IDogdCA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxubGV0IGNvbmNhdCA9XG4gIGxldCBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBsZXQgc3JjX3BvcyA9IDAgaW5cbiAgICBsZXQgZHN0X3BvcyA9ICFkc3RfcG9zX3JlZiBpblxuICAgIGJsaXQgfmRzdCB+ZHN0X3BvcyB+c3JjIH5zcmNfcG9zIH5sZW47XG4gICAgZHN0X3Bvc19yZWYgOj0gZHN0X3BvcyArIGxlblxuICBpblxuICBmdW4gP3NlcCBsaXN0IC0+XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBjcmVhdGUgMFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBsZXQgaGVhZF9sZW4gPSBsZW5ndGggaGVhZCBpblxuICAgICAgbGV0IHNlcF9sZW4gPSBPcHRpb24udmFsdWVfbWFwIHNlcCB+ZjpsZW5ndGggfmRlZmF1bHQ6MCBpblxuICAgICAgbGV0IHRhaWxfY291bnQgPSBMaXN0Lmxlbmd0aCB0YWlsIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaGVhZF9sZW4gKyAoc2VwX2xlbiAqIHRhaWxfY291bnQpICsgTGlzdC5zdW0gKG1vZHVsZSBJbnQpIHRhaWwgfmY6bGVuZ3RoXG4gICAgICBpblxuICAgICAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBkc3RfcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBhcHBlbmQgfnNyYzpoZWFkIH5kc3QgfmRzdF9wb3NfcmVmO1xuICAgICAgTGlzdC5pdGVyIHRhaWwgfmY6KGZ1biBzcmMgLT5cbiAgICAgICAgKG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBzZXAgLT4gYXBwZW5kIH5zcmM6c2VwIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgICAgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgYXNzZXJ0ICghZHN0X3Bvc19yZWYgPSBsZW4pO1xuICAgICAgZHN0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtc2V0IDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gY2hhciAtPiB1bml0ID0gXCJiaWdzdHJpbmdfbWVtc2V0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbXNldCB0IH5wb3MgfmxlbiBjID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpO1xuICB1bnNhZmVfbWVtc2V0IHQgfnBvcyB+bGVuIGNcbjs7XG5cbigqIENvbXBhcmlzb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcFxuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IHRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MyIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQyKTtcbiAgdW5zYWZlX21lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX2J5dGVzXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gQnl0ZXMudFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3M6cG9zMlxuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCeXRlcy5sZW5ndGggYnl0ZXMpO1xuICB1bnNhZmVfbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW5cbjs7XG5cbmxldCBjb21wYXJlIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCBsZW4gPSBJbnQubWluIGxlbjEgbGVuMiBpblxuICAgIG1hdGNoIHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW4gd2l0aFxuICAgIHwgMCAtPiBpZiBsZW4xIDwgbGVuMiB0aGVuIC0xIGVsc2UgaWYgbGVuMSA+IGxlbjIgdGhlbiAxIGVsc2UgMFxuICAgIHwgbiAtPiBuKVxuOztcblxuZXh0ZXJuYWwgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4gIDogIEhhc2guc3RhdGVcbiAgLT4gdFxuICAtPiBIYXNoLnN0YXRlXG4gID0gXCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcIlxuW0BAbm9hbGxvY11cblxubGV0IF9tYWtpbmdfc3VyZV90aGVfQ19iaW5kaW5nX3Rha2VzX2FuX2ludCAoeCA6IEhhc2guc3RhdGUpID0gKHggOj4gaW50KVxubGV0IGhhc2hfZm9sZF90ID0gaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG5sZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5cbnR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBJbnQuZXF1YWwgbGVuMSBsZW4yICYmIEludC5lcXVhbCAodW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbjpsZW4xKSAwKVxuOztcblxuKCogU2VhcmNoICopXG5cbmV4dGVybmFsIHVuc2FmZV9maW5kIDogdCAtPiBjaGFyIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBpbnQgPSBcImJpZ3N0cmluZ19maW5kXCJcbltAQG5vYWxsb2NdXG5cbmxldCBmaW5kID8ocG9zID0gMCkgP2xlbiBjaHIgYnN0ciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcImZpbmRcIiB+cG9zIH5sZW4gYnN0cjtcbiAgbGV0IHJlcyA9IHVuc2FmZV9maW5kIGJzdHIgY2hyIH5wb3MgfmxlbiBpblxuICBpZiByZXMgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcmVzXG47O1xuXG4oKiB2aW06IHNldCBmaWxldHlwZT1vY2FtbCA6ICopXG5cbigqIEJpbmFyeS1wYWNraW5nIGxpa2UgYWNjZXNzb3JzICopXG5cbmV4dGVybmFsIGludDMyX29mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBpbnQzMl90b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgaW50NjRfb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIGludDY0X3RvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8xNiA6IHQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF82NCA6IHQgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMTYgOiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzY0IDogdCAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmxldCBnZXRfMTYgKHQgOiB0KSAocG9zIDogaW50KSA6IGludCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9nZXRfMTYgdCBwb3Ncbjs7XG5cbmxldCBnZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDMyID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX2dldF8zMiB0IHBvc1xuOztcblxubGV0IGdldF82NCAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50NjQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfZ2V0XzY0IHQgcG9zXG47O1xuXG5sZXQgc2V0XzE2X3RydW5jICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9zZXRfMTYgdCBwb3MgdlxuOztcblxubGV0IHNldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50MzIpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9zZXRfMzIgdCBwb3MgdlxuOztcblxubGV0IHNldF82NCAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50NjQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgdlxuOztcblxubGV0IHNpZ25fZXh0ZW5kXzE2IHUgPSAodSBsc2wgKEludC5udW1fYml0cyAtIDE2KSkgYXNyIChJbnQubnVtX2JpdHMgLSAxNilcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAwMCB8fCB4ID4gMHg3RkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50OCB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MCB8fCB4ID4gMHg3RlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfIH5sb2M6XyAtPiAoKVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAtMSBsc2wgMzEgJiYgeCA8IDEgbHNsIDMxXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDBcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMCAmJiB4IDwgMSBsc2wgMzJcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50NjQgeCB+bG9jID1cbiAgaWYgeCA+PSAwXG4gIHRoZW4gKClcbiAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcykpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChnZXRfMTYgdCBwb3MpXG5sZXQgcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKGdldF8xNiB0IHBvcykpXG5cbmxldCB3cml0ZV9pbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV9pbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX3VpbnQxNiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV91aW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX3VpbnQxNiB0IH5wb3MgPSBnZXRfMTYgdCBwb3NcbmxldCByZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAoZ2V0XzE2IHQgcG9zKVxuXG5sZXQgd3JpdGVfdWludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfdWludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50ICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKSlcbmxldCB1bnNhZmVfcmVhZF9pbnQzMiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG5sZXQgcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50IChnZXRfMzIgdCBwb3MpXG5sZXQgcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAoZ2V0XzMyIHQgcG9zKSlcbmxldCByZWFkX2ludDMyIHQgfnBvcyA9IGdldF8zMiB0IHBvc1xubGV0IHJlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKGdldF8zMiB0IHBvcylcbmxldCB3cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyB4XG5sZXQgd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxuOztcblxubGV0IHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAodW5zYWZlX2dldF82NCB0IHBvcylcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnQgKHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcykpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID1cbiAgdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAoZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9IGludDY0X3RvX2ludCAoc3dhcDY0IChnZXRfNjQgdCBwb3MpKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0IHQgfnBvcyA9IGdldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0IChnZXRfNjQgdCBwb3MpXG5sZXQgd3JpdGVfaW50NjQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgeFxubGV0IHdyaXRlX2ludDY0X3N3YXAgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0IHdyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2IGVsc2UgdW5zYWZlX3JlYWRfaW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNiBlbHNlIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX3VpbnQxNlxuOztcblxubGV0IGdldF9pbnQxNl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTYgZWxzZSByZWFkX2ludDE2X3N3YXBcbmxldCBnZXRfaW50MTZfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2X3N3YXAgZWxzZSByZWFkX2ludDE2XG5sZXQgZ2V0X3VpbnQxNl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2IGVsc2UgcmVhZF91aW50MTZfc3dhcFxubGV0IGdldF91aW50MTZfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNl9zd2FwIGVsc2UgcmVhZF91aW50MTZcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX3VpbnQxNiBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNlxuOztcblxubGV0IHNldF9pbnQxNl9iZV9leG4gPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQxNl9leG4gZWxzZSB3cml0ZV9pbnQxNl9zd2FwX2V4blxubGV0IHNldF9pbnQxNl9sZV9leG4gPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX2ludDE2X2V4blxuXG5sZXQgc2V0X3VpbnQxNl9iZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV91aW50MTZfZXhuIGVsc2Ugd3JpdGVfdWludDE2X3N3YXBfZXhuXG47O1xuXG5sZXQgc2V0X3VpbnQxNl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV91aW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV91aW50MTZfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzIgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMlxuOztcblxubGV0IGdldF9pbnQzMl90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMiBlbHNlIHJlYWRfaW50MzJfc3dhcFxubGV0IGdldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9zd2FwIGVsc2UgcmVhZF9pbnQzMlxubGV0IHNldF9pbnQzMl90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzIgZWxzZSB3cml0ZV9pbnQzMl9zd2FwXG5sZXQgc2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9zd2FwIGVsc2Ugd3JpdGVfaW50MzJcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRcbjs7XG5cbmxldCBnZXRfaW50MzJfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX2ludCBlbHNlIHJlYWRfaW50MzJfaW50X3N3YXBcbmxldCBnZXRfaW50MzJfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgcmVhZF9pbnQzMl9pbnRcblxubGV0IHNldF9pbnQzMl9iZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuXG47O1xuXG5sZXQgc2V0X2ludDMyX2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlX3RydW5jID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50XG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX3RydW5jID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9pbnQgZWxzZSByZWFkX2ludDY0X2ludF9zd2FwXG5sZXQgZ2V0X2ludDY0X2xlX3RydW5jID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHJlYWRfaW50NjRfaW50XG5sZXQgc2V0X2ludDY0X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50IGVsc2Ugd3JpdGVfaW50NjRfaW50X3N3YXBcbmxldCBzZXRfaW50NjRfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHdyaXRlX2ludDY0X2ludFxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NFxuOztcblxubGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NCBlbHNlIHJlYWRfaW50NjRfc3dhcFxubGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwIGVsc2UgcmVhZF9pbnQ2NFxubGV0IHNldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjQgZWxzZSB3cml0ZV9pbnQ2NF9zd2FwXG5sZXQgc2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRcblxubGV0IGludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX2ludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxubGV0IHVpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF91aW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG4oKiBbUG9seV0gaXMgcmVxdWlyZWQgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB1bmJveGVkIFtpbnQ2NF0uICopXG5sZXRbQGlubGluZSBhbHdheXNdIGludDY0X3RvX2ludF9leG4gbiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IC0weDQwMDBfMDAwMF8wMDAwXzAwMDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IC0weDAwMDBfMDAwMF80MDAwXzAwMDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9iZSA9IHVuc2FmZV9zZXRfaW50NjRfYmVcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9sZSA9IHVuc2FmZV9zZXRfaW50NjRfbGVcblxubGV0IHNldF91aW50NjRfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9iZV9leG5cIiBuO1xuICBzZXRfaW50NjRfYmUgdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDY0X2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfbGVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2xlIHQgfnBvcyBuXG47O1xuXG4oKiBUeXBlIGFubm90YXRpb25zIG9uIHRoZSBbdF1zIGFyZSBpbXBvcnRhbnQgaGVyZTogaW4gb3JkZXIgZm9yIHRoZSBjb21waWxlciB0byBnZW5lcmF0ZVxuICAgb3B0aW1pemVkIGNvZGUsIGl0IG5lZWRzIHRvIGtub3cgdGhlIGZ1bGx5IGluc3RhbnRpYXRlZCB0eXBlIG9mIHRoZSBiaWdhcnJheS4gVGhpcyBpc1xuICAgYmVjYXVzZSB0aGUgdHlwZSBvZiB0aGUgYmlnYXJyYXkgZW5jb2RlcyB0aGUgZWxlbWVudCBraW5kIGFuZCB0aGUgbGF5b3V0IG9mIHRoZVxuICAgYmlnYXJyYXkuIFdpdGhvdXQgdGhlIGFubm90YXRpb24gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhIEMgY2FsbCB0byB0aGUgZ2VuZXJpYyBhY2Nlc3NcbiAgIGZ1bmN0aW9ucy4gKilcbmxldCB1bnNhZmVfc2V0X3VpbnQ4ICh0IDogdCkgfnBvcyBuID0gQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuXG5sZXQgdW5zYWZlX3NldF9pbnQ4ICh0IDogdCkgfnBvcyBuID1cbiAgKCogSW4gYWxsIHRoZSBzZXQgZnVuY3Rpb25zIHdoZXJlIHRoZXJlIGFyZSB0aGVzZSB0ZXN0cywgaXQgbG9va3MgbGlrZSB0aGUgdGVzdCBjb3VsZCBiZVxuICAgICByZW1vdmVkLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdGhlIGJ5dGVzIHRoYXQgYXJlIG5vdFxuICAgICB3cml0dGVuLiAqKVxuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgc2V0X3VpbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ4X2V4blwiIG47XG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHNldF9pbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX2ludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfaW50OF9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKVxuXG5sZXQgZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IG1hc2szMl9uID0gQ2FtbC5OYXRpdmVpbnQuKHN1YiAoc2hpZnRfbGVmdCAxbiAzMikgMW4pXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdWludDMyX29mX2ludDMyX3QgbiA9XG4gIGlmIG5vdF9vbl8zMmJpdFxuICB0aGVuXG4gICAgKCogdXNlIENhbWwuTmF0aXZlaW50IHRvIGVuc3VyZSBpbmxpbmluZyBldmVuIHdpdGhvdXQgeC1saWJyYXJ5LWlubGluaW5nICopXG4gICAgQ2FtbC5OYXRpdmVpbnQuKHRvX2ludCAobG9nYW5kIChvZl9pbnQzMiBuKSBtYXNrMzJfbikpXG4gIGVsc2UgaW50MzJfdG9faW50IG5cbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9sZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9sZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2JlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2JlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2xlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2JlIHQgfnBvcylcbjs7XG5cbmxldCBzZXRfdWludDMyX2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfbGVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfbGVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2JlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2JlX2V4biB0IH5wb3MgblxuOztcblxubGV0IGdldF91aW50MzJfbGUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2xlIHQgfnBvcylcbmxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9iZSB0IH5wb3MpXG5cbm1vZHVsZSBJbnRfcmVwciA9IHN0cnVjdFxuICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gZ2V0X3VpbnQ4IHQgfnBvc1xuICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCB4KVxuICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gZ2V0XzE2IHQgcG9zXG4gICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHNldF8xNl90cnVuYyB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IGdldF8zMiB0IHBvc1xuICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHNldF8zMiB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IGdldF82NCB0IHBvc1xuICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHNldF82NCB0IHBvcyB4XG4gIGVuZFxuXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gdW5zYWZlX2dldF91aW50OCB0IH5wb3NcbiAgICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IHVuc2FmZV9zZXRfdWludDggdCB+cG9zIHhcbiAgICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xuICAgICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2lnbl9leHRlbmRfMTYgPSBzaWduX2V4dGVuZF8xNlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCbGl0XG5pbmNsdWRlIFRlc3RfYmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmxpdFxuXG4gIHR5cGUgJ2Egc3JjXG4gIHR5cGUgJ2EgZHN0XG5cbiAgKCogIHZhbCBibGl0ICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBibGl0byA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdG9cblxuICAoKiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIHN1YiA6ICgnYSBzcmMsICdhIGRzdCkgc3ViXG5cbiAgKCp2YWwgc3VibyAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1Ym8qKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl90ZXN0c19nZW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sXG5cbiAgICB2YWwgb2ZfYm9vbCA6IGJvb2wgLT4gYm9vbCB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgelxuXG4gIG1vZHVsZSBTcmMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgRHN0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgICB2YWwgb3ZlcmxhcHBpbmdfc3JjX2RzdCA6IFsgYERvX25vdF9jaGVjayB8IGBDaGVjayBvZiAnYSBTcmMudCAtPiAnYSB0IF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuXG4gICAgKEZvcl90ZXN0cyA6IEZvcl90ZXN0c19nZW4pXG4gICAgKFRlc3RlZCA6IFNfZ2VuXG4gICAgIHdpdGggdHlwZSAnYSBzcmMgOj0gJ2EgRm9yX3Rlc3RzLlNyYy50XG4gICAgIHdpdGggdHlwZSAnYSBkc3QgOj0gJ2EgRm9yX3Rlc3RzLkRzdC50KSA9XG5zdHJ1Y3RcbiAgb3BlbiBUZXN0ZWRcbiAgb3BlbiBGb3JfdGVzdHNcblxuICBsZXQgaW5pdCB+bGVuIH5jcmVhdGUgfnNldCB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBzZXQgdCBpIChmIGkpXG4gICAgZG9uZTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGVsdDEgPSBFbHQub2ZfYm9vbCB0cnVlXG4gIGxldCBlbHQyID0gRWx0Lm9mX2Jvb2wgZmFsc2VcbiAgbGV0ICgpID0gYXNzZXJ0IChub3QgKEVsdC5lcXVhbCBlbHQxIGVsdDIpKVxuICBsZXQgc3JjX2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQxIGVsc2UgZWx0MlxuICBsZXQgZHN0X2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQyIGVsc2UgZWx0MVxuXG4gICgqIFRlc3QgW2JsaXRdLiAqKVxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBuID0gNCBpblxuICAgIGZvciBzcmNfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICBmb3IgZHN0X2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgICBmb3Igc3JjX3BvcyA9IDAgdG8gc3JjX2xlbmd0aCBkb1xuICAgICAgICAgIGZvciBkc3RfcG9zID0gMCB0byBkc3RfbGVuZ3RoIGRvXG4gICAgICAgICAgICBmb3Igc3JjX2xlbiA9IDAgdG8gbWluIChzcmNfbGVuZ3RoIC0gc3JjX3BvcykgKGRzdF9sZW5ndGggLSBkc3RfcG9zKSBkb1xuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBsZXQgaXNfaW5fcmFuZ2UgaSA9IGkgPj0gZHN0X3BvcyAmJiBpIDwgZHN0X3BvcyArIHNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2sgbGVuZ3RoIGdldCBuYW1lIHNlcXVlbmNlIH5leHBlY3QgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzZXF1ZW5jZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IChFbHQuZXF1YWwgKGdldCBzZXF1ZW5jZSBpKSAoZXhwZWN0IGkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiYnVnXCIgKG5hbWUgOiBzdHJpbmcpIChpIDogaW50KV1cbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19zcmMgPSBjaGVjayBTcmMubGVuZ3RoIFNyYy5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfZHN0ID0gY2hlY2sgRHN0Lmxlbmd0aCBEc3QuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IHNyYyA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46c3JjX2xlbmd0aCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChTcmMubGVuZ3RoIHNyYyA9IHNyY19sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOmRzdF9sZW5ndGggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoRHN0Lmxlbmd0aCBkc3QgPSBkc3RfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5pdF9zcmMgKCkgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIHNyY19sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIFNyYy5zZXQgc3JjIGkgKHNyY19iaXQgaSlcbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJibGl0IHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfYml0IChzcmNfcG9zICsgaSAtIGRzdF9wb3MpIGVsc2UgZHN0X2JpdCBpKTtcbiAgICAgICAgICAgICAgICAobWF0Y2ggRHN0Lm92ZXJsYXBwaW5nX3NyY19kc3Qgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBEb19ub3RfY2hlY2sgLT4gKClcbiAgICAgICAgICAgICAgICAgfCBgQ2hlY2sgc3JjX3RvX2RzdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGRzdF9wb3MgKyBzcmNfbGVuIDw9IHNyY19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGRzdCA9IHNyY190b19kc3Qgc3JjIGluXG4gICAgICAgICAgICAgICAgICAgICBpZiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3Qgb3ZlcmxhcHBpbmdcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYml0IChpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX3BvcyArIGkgLSBkc3RfcG9zIGVsc2UgaSkpKSkpO1xuICAgICAgICAgICAgICAgICgqIENoZWNrIFtzdWJdLiAqKVxuICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzdWIgc3JjIH5wb3M6c3JjX3BvcyB+bGVuOnNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJzdWIgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJzdWIgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+IHNyY19iaXQgKHNyY19wb3MgKyBpKSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICBcImJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX3BvcyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X3BvcyA6IGludCldXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IHNyYyA9IGluaXQgfmxlbjo0IH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0IGluXG4gICAgbGV0IGRzdCA9IGluaXQgfmxlbjo4IH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0IGluXG4gICAgbGV0IGFzc2VydF9yYWlzZXMgZiA9IGFzc2VydCAoRXhuLmRvZXNfcmFpc2UgZikgaW5cbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczooLTEpIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczooLTEpICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3Bvczo1IH5zcmNfbGVuOjEgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjggfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo1ICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo4ICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0MVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHkpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgICAgbGV0IGVxdWFsID0gUG9seS5lcXVhbFxuICAgICAgICBsZXQgb2ZfYm9vbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdDFfZ2VuZXJpY1xuICAgIChFbHQgOiBFbHQxKVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBFbHRfdG9fZWx0MSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBFbHQudFxuXG4gIGxldCBlcXVhbCA9IEVsdC5lcXVhbFxuICBsZXQgb2ZfYm9vbCA9IEVsdC5vZl9ib29sXG5lbmRcblxubW9kdWxlIFRlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMgd2l0aCB0eXBlIHQgOj0gU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNyY1xuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3RfZGlzdGluY3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChEc3QgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gU3JjLnQgd2l0aCB0eXBlIGRzdCA6PSBEc3QudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTcmNcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBEc3RcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBEb19ub3RfY2hlY2tcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0IChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudCkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZV9kaXN0aW5jdCAoU3JjKSAoRHN0KVxuICBpbmNsdWRlIFRlc3RfZGlzdGluY3QgKEVsdCkgKFNyYykgKERzdCkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHlcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDEgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2dlbmVyaWNfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0MSkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxX2dlbmVyaWMgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJpbmFyeV9zZWFyY2hhYmxlXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJpbmFyeV9zZWFyY2hhYmxlXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EgZWx0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCA9IHNpZ1xuICBpbmNsdWRlIFNfZ2VuXG5cbiAgbW9kdWxlIEZvcl90ZXN0IDogc2lnXG4gICAgdmFsIGNvbXBhcmUgOiBib29sIGVsdCAtPiBib29sIGVsdCAtPiBpbnRcbiAgICB2YWwgc21hbGwgOiBib29sIGVsdFxuICAgIHZhbCBiaWcgOiBib29sIGVsdFxuICAgIHZhbCBvZl9hcnJheSA6IGJvb2wgZWx0IGFycmF5IC0+IGJvb2wgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW4gKE0gOiBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0JXRlc3RfbW9kdWxlIFwidGVzdF9iaW5hcnlfc2VhcmNoYWJsZVwiID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGNvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgZWx0X2NvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgcyA9IEZvcl90ZXN0LnNtYWxsXG4gICAgICBsZXQgYiA9IEZvcl90ZXN0LmJpZ1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgdCBob3cgdiA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIChGb3JfdGVzdC5vZl9hcnJheSB0KSBob3cgdlxuICAgICAgOztcblxuICAgICAgbGV0ICggPSApID0gUG9seS5lcXVhbFxuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMlxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gcyA9IE5vbmVcblxuICAgICAgbGV0IGNyZWF0ZV90ZXN0X2Nhc2UgKG51bV9zLCBudW1fYikgPVxuICAgICAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIGIgfmxlbjoobnVtX3MgKyBudW1fYikgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG51bV9zIC0gMSBkb1xuICAgICAgICAgIGFyci4oaSkgPC0gc1xuICAgICAgICBkb25lO1xuICAgICAgICBhcnJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbmx5X3NtYWxsID0gMTBfMDAwLCAwXG4gICAgICBsZXQgb25seV9iaWcgPSAwLCAxMF8wMDBcbiAgICAgIGxldCBib3RoID0gMjUzMSwgNDcxN1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCAoY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsKSB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPiB0cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2UgYm90aCBpblxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2ID0gMjUzMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSA9XG4gICAgICAgIEFycmF5LmluaXQgMTAwXzAwMCB+ZjooZnVuIGkgLT4gaWYgaSA+IDUwXzAwMCB0aGVuIGIgZWxzZSBzKVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdHMgYXJvdW5kIGEgZ2FwKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgYmVnaW5uaW5nIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBlbmQgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICAgIGZvciBsZW5ndGggPSAwIHRvIDUgZG9cbiAgICAgICAgICBmb3IgbnVtX3MgPSAwIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgbGV0IGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIH5mOihmdW4gaSAtPiBpZiBpIDwgbnVtX3MgdGhlbiBzIGVsc2UgYikgaW5cbiAgICAgICAgICAgIGZvciBwb3MgPSAtMSB0byBsZW5ndGggZG9cbiAgICAgICAgICAgICAgZm9yIGxlbiA9IC0xIHRvIGxlbmd0aCArIDEgZG9cbiAgICAgICAgICAgICAgICAoKnRyeSopXG4gICAgICAgICAgICAgICAgbGV0IHNob3VsZF9yYWlzZSA9XG4gICAgICAgICAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgICAgIH50b3RhbF9sZW5ndGg6bGVuZ3RoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+cG9zIH5sZW4gfmNvbXBhcmU6ZWx0X2NvbXBhcmUgYExhc3RfZXF1YWxfdG8gcylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIHNob3VsZF9yYWlzZSwgcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgICB8IHRydWUsIEVycm9yIF8gLT4gKClcbiAgICAgICAgICAgICAgICB8IHRydWUsIE9rIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byByYWlzZSBidXQgaXQgZGlkbid0XCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBFcnJvciBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gbm90IHJhaXNlLCBidXQgaXQgcmFpc2VkXCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBPayByZXN1bHQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hlZCA9IG51bV9zIC0gMSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGNvcnJlY3RfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc2VhcmNoZWQgPCBwb3NcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgbGVuID0gMFxuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBzZWFyY2hlZCA+PSBwb3MgKyBsZW5cbiAgICAgICAgICAgICAgICAgICAgdGhlbiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIFNvbWUgc2VhcmNoZWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBub3QgKGNvcnJlY3RfcmVzdWx0ID0gcmVzdWx0KSB0aGVuIGZhaWx3aXRoIFwiV3JvbmcgcmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICgqd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIFwiYmluYXJ5X3NlYXJjaCBidWdcIlxuICAgICAgICAgICAgICAgICAgICAoZXhuLCBgbGVuZ3RoIGxlbmd0aCwgYHNlYXJjaF9rZXkgc2VhcmNoX2tleSwgYHBvcyBwb3MsIGBsZW4gbGVuKVxuICAgICAgICAgICAgICAgICAgICA8OnNleHBfb2Y8IGV4biAqIFsgYGxlbmd0aCBvZiBpbnQgXSAqIFsgYHNlYXJjaF9rZXkgb2YgaW50IF1cbiAgICAgICAgICAgICAgICAgICAqIFsgYHBvcyBvZiBpbnQgXSAqIFsgYGxlbiBvZiBpbnQgXSA+PiopXG4gICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhID0gYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgKEZvcl90ZXN0Lm9mX2FycmF5IGEpXG5cbiAgICAgICgqdGVzdCBmb3IgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIHggPSBpZiB4ID0gYiB0aGVuIGBSaWdodCBlbHNlIGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA1MF8wMDBcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBSaWdodCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IE5vbmVcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgOTlfOTk5XG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBOb25lXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdCAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gTS50XG4gICAgdHlwZSAnYSBlbHQgPSBNLmVsdFxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gIGVuZClcblxubW9kdWxlIFRlc3QxIChNIDogQmluYXJ5X3NlYXJjaGFibGUxX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTS50XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IE0uRm9yX3Rlc3Qub2ZfYXJyYXlcbiAgICAgIGxldCBjb21wYXJlID0gQm9vbC5jb21wYXJlXG4gICAgICBsZXQgc21hbGwgPSBmYWxzZVxuICAgICAgbGV0IGJpZyA9IHRydWVcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0IChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE0udFxuICAgICAgdHlwZSBlbHQgPSBNLmVsdFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlMV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdDEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgTS50XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBCYXNlXG5cbigqKiBFYWNoIHNpbmdsZV9lcnJvciBpcyBhIHBhdGggaW5kaWNhdGluZyB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBkYXRhc3RydWN0dXJlIGluXG4gICAgcXVlc3Rpb24gdGhhdCBpcyBiZWluZyB2YWxpZGF0ZWQsIGFsb25nIHdpdGggYW4gZXJyb3IgbWVzc2FnZS4gKilcbnR5cGUgc2luZ2xlX2Vycm9yID1cbiAgeyBwYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBlcnJvciA6IEVycm9yLnRcbiAgfVxuXG50eXBlIHQgPSBzaW5nbGVfZXJyb3IgbGlzdFxudHlwZSAnYSBjaGVjayA9ICdhIC0+IHRcblxubGV0IHBhc3MgOiB0ID0gW11cblxubGV0IGZhaWxzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLmNyZWF0ZSBtZXNzYWdlIGEgc2V4cF9vZl9hIH0gXVxuOztcblxubGV0IGZhaWwgbWVzc2FnZSA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UgfSBdXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgZmFpbF9zIHNleHAgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLmNyZWF0ZV9zIHNleHAgfSBdXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCBvZl9saXN0ID0gTGlzdC5jb25jYXRcblxubGV0IG5hbWUgbmFtZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW10gKCogd2hlbiBzdWNjZXNzZnVsLCBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhIGNsb3N1cmUgZm9yIFt+Zl0sIGJlbG93ICopXG4gIHwgXyAtPiBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHsgcGF0aCA9IG5hbWUgOjogcGF0aDsgZXJyb3IgfSlcbjs7XG5cbmxldCBuYW1lX2xpc3QgbiBsID0gbmFtZSBuIChvZl9saXN0IGwpXG5sZXQgZmFpbF9mbiBtZXNzYWdlIF8gPSBmYWlsIG1lc3NhZ2VcbmxldCBwYXNzX2Jvb2wgKF8gOiBib29sKSA9IHBhc3NcbmxldCBwYXNzX3VuaXQgKF8gOiB1bml0KSA9IHBhc3NcblxubGV0IHByb3RlY3QgZiB2ID1cbiAgdHJ5IGYgdiB3aXRoXG4gIHwgZXhuIC0+XG4gICAgZmFpbF9zIChTZXhwLm1lc3NhZ2UgXCJFeGNlcHRpb24gcmFpc2VkIGR1cmluZyB2YWxpZGF0aW9uXCIgWyBcIlwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgcHJvdGVjdFxuICAgIChmdW4gKCkgLT5cbiAgICAgICBmICgpO1xuICAgICAgIHBhc3MpXG4gICAgKClcbjs7XG5cbmxldCBwYXRoX3N0cmluZyBwYXRoID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIHBhdGhcblxubGV0IGVycm9ycyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPlxuICAgIEVycm9yLnRvX3N0cmluZ19odW0gKEVycm9yLnRhZyBlcnJvciB+dGFnOihwYXRoX3N0cmluZyBwYXRoKSkpXG47O1xuXG5sZXQgcmVzdWx0X2ZhaWwgdCA9XG4gIE9yX2Vycm9yLmVycm9yXG4gICAgXCJ2YWxpZGF0aW9uIGVycm9yc1wiXG4gICAgKExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4gcGF0aF9zdHJpbmcgcGF0aCwgZXJyb3IpKVxuICAgIFslc2V4cF9vZjogKHN0cmluZyAqIEVycm9yLnQpIExpc3QudF1cbltAQGNvbGRdXG47O1xuXG4oKiogW3Jlc3VsdF0gaXMgY2FyZWZ1bGx5IGltcGxlbWVudGVkIHNvIHRoYXQgaXQgY2FuIGJlIGlubGluZWQgLS0gY2FsbGluZyBbcmVzdWx0X2ZhaWxdLFxuICAgIHdoaWNoIGlzIG5vdCBpbmxpbmVhYmxlLCBpcyBrZXkgdG8gdGhpcy4gKilcbmxldCByZXN1bHQgdCA9IGlmIExpc3QuaXNfZW1wdHkgdCB0aGVuIE9rICgpIGVsc2UgcmVzdWx0X2ZhaWwgdFxuXG5sZXQgbWF5YmVfcmFpc2UgdCA9IE9yX2Vycm9yLm9rX2V4biAocmVzdWx0IHQpXG5sZXQgdmFsaWRfb3JfZXJyb3IgY2hlY2sgeCA9IE9yX2Vycm9yLm1hcCAocmVzdWx0IChwcm90ZWN0IGNoZWNrIHgpKSB+ZjooZnVuICgpIC0+IHgpXG5cbmxldCBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIF9yZWNvcmQgdiA9XG4gIGxldCByZXN1bHQgPSBwcm90ZWN0IGNoZWNrIHYgaW5cbiAgbmFtZSAoRmllbGQubmFtZSBmbGQpIHJlc3VsdFxuOztcblxubGV0IGZpZWxkIGNoZWNrIHJlY29yZCBmbGQgPVxuICBsZXQgdiA9IEZpZWxkLmdldCBmbGQgcmVjb3JkIGluXG4gIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHZcbjs7XG5cbmxldCBmaWVsZF9mb2xkZXIgY2hlY2sgcmVjb3JkID1cbiAgKCk7XG4gIGZ1biBhY2MgZmxkIC0+IGZpZWxkIGNoZWNrIHJlY29yZCBmbGQgOjogYWNjXG47O1xuXG5sZXQgZmllbGRfZGlyZWN0X2ZvbGRlciBjaGVjayA9XG4gIFN0YWdlZC5zdGFnZSAoZnVuIGFjYyBmbGQgcmVjb3JkIHYgLT5cbiAgICBtYXRjaCBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2IHdpdGhcbiAgICB8IFtdIC0+IGFjYyAoKiBBdm9pZCBhbGxvY2F0aW5nIGEgbmV3IGxpc3QgaW4gdGhlIHN1Y2Nlc3MgY2FzZSAqKVxuICAgIHwgcmVzdWx0IC0+IHJlc3VsdCA6OiBhY2MpXG47O1xuXG5sZXQgYWxsIGNoZWNrcyB2ID1cbiAgbGV0IHJlYyBsb29wIGNoZWNrcyB2IGVycnMgPVxuICAgIG1hdGNoIGNoZWNrcyB3aXRoXG4gICAgfCBbXSAtPiBlcnJzXG4gICAgfCBjaGVjayA6OiBjaGVja3MgLT5cbiAgICAgIChtYXRjaCBwcm90ZWN0IGNoZWNrIHYgd2l0aFxuICAgICAgIHwgW10gLT4gbG9vcCBjaGVja3MgdiBlcnJzXG4gICAgICAgfCBlcnIgLT4gbG9vcCBjaGVja3MgdiAoZXJyIDo6IGVycnMpKVxuICBpblxuICBvZl9saXN0IChMaXN0LnJldiAobG9vcCBjaGVja3MgdiBbXSkpXG47O1xuXG5sZXQgb2ZfcmVzdWx0IGYgPVxuICBwcm90ZWN0IChmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBPayAoKSAtPiBwYXNzXG4gICAgfCBFcnJvciBlcnJvciAtPiBmYWlsIGVycm9yKVxuOztcblxubGV0IG9mX2Vycm9yIGYgPVxuICBwcm90ZWN0IChmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBPayAoKSAtPiBwYXNzXG4gICAgfCBFcnJvciBlcnJvciAtPiBbIHsgcGF0aCA9IFtdOyBlcnJvciB9IF0pXG47O1xuXG5sZXQgYm9vbHRlc3QgZiB+aWZfZmFsc2UgPSBwcm90ZWN0IChmdW4gdiAtPiBpZiBmIHYgdGhlbiBwYXNzIGVsc2UgZmFpbCBpZl9mYWxzZSlcblxubGV0IHBhaXIgfmZzdCB+c25kIChmc3RfdmFsdWUsIHNuZF92YWx1ZSkgPVxuICBvZl9saXN0IFsgbmFtZSBcImZzdFwiIChwcm90ZWN0IGZzdCBmc3RfdmFsdWUpOyBuYW1lIFwic25kXCIgKHByb3RlY3Qgc25kIHNuZF92YWx1ZSkgXVxuOztcblxubGV0IGxpc3RfaW5kZXhlZCBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXBpIGxpc3QgfmY6KGZ1biBpIGVsIC0+IG5hbWUgKEludC50b19zdHJpbmcgKGkgKyAxKSkgKHByb3RlY3QgY2hlY2sgZWwpKVxuICB8PiBvZl9saXN0XG47O1xuXG5sZXQgbGlzdCB+bmFtZTpleHRyYWN0X25hbWUgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbCAtPlxuICAgIG1hdGNoIHByb3RlY3QgY2hlY2sgZWwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IHQgLT5cbiAgICAgICgqIGV4dHJhIGxldmVsIG9mIHByb3RlY3Rpb24gaW4gY2FzZSBleHRyYWN0X25hbWUgdGhyb3dzIGFuIGV4Y2VwdGlvbiAqKVxuICAgICAgcHJvdGVjdCAoZnVuIHQgLT4gbmFtZSAoZXh0cmFjdF9uYW1lIGVsKSB0KSB0KVxuICB8PiBvZl9saXN0XG47O1xuXG5sZXQgYWxpc3Qgfm5hbWUgZiBsaXN0JyA9IGxpc3QgKGZ1biAoXywgeCkgLT4gZiB4KSBsaXN0JyB+bmFtZTooZnVuIChrZXksIF8pIC0+IG5hbWUga2V5KVxubGV0IGZpcnN0X2ZhaWx1cmUgdDEgdDIgPSBpZiBMaXN0LmlzX2VtcHR5IHQxIHRoZW4gdDIgZWxzZSB0MVxuXG5sZXQgb2ZfZXJyb3Jfb3B0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHBhc3NcbiAgfCBTb21lIGVycm9yIC0+IGZhaWwgZXJyb3Jcbjs7XG5cbmxldCBib3VuZGVkIH5uYW1lIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgeCA9XG4gIG1hdGNoIE1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgeCB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gcGFzc1xuICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+XG4gICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgSW5jbCBpbmNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPCBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGluY2wpKVxuICAgICB8IEV4Y2wgZXhjbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDw9IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgZXhjbCkpKVxuICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgSW5jbCBpbmNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPiBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGluY2wpKVxuICAgICB8IEV4Y2wgZXhjbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID49IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgZXhjbCkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoICsrICkgdDEgdDIgPSBjb21iaW5lIHQxIHQyXG5lbmRcbiIsIlxuKCogV2UgZG8gbm90IFtpbmNsdWRlIEJhc2VdIGhlcmUsIGFuZCBpbnN0ZWFkIGltcG9ydCBtb2R1bGVzIHRoYXQgW0NvcmVdIGRvZXNuJ3QgZXh0ZW5kLFxuICAgYmVjYXVzZSB3ZSB3YW50IGNvZGUgaW4gW0NvcmVdIHRvIGJlIGNsZWFyIHdoZW4gaXQgcmVmZXJlbmNlcyBhIFtCYXNlXSBtb2R1bGUgdGhhdFxuICAgW0NvcmVdIGlzIG92ZXJyaWRpbmcuICopXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBCYXNlLkFwcGxpY2F0aXZlXG5tb2R1bGUgQXZsdHJlZSA9IEJhc2UuQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhc2UuQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJhc2UuQmluYXJ5X3NlYXJjaFxubW9kdWxlIENvbXBhcmlzb25zID0gQmFzZS5Db21wYXJpc29uc1xubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBFcXVhbCA9IEJhc2UuRXF1YWxcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEZsb2F0YWJsZSA9IEJhc2UuRmxvYXRhYmxlXG5tb2R1bGUgRm9ybWF0dGVyID0gQmFzZS5Gb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gQmFzZS5IYXNoXG5tb2R1bGUgSGFzaGVyID0gQmFzZS5IYXNoZXJcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEJhc2UuSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbnRhYmxlID0gQmFzZS5JbnRhYmxlXG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gQmFzZS5JbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnRfbWF0aCA9IEJhc2UuSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBCYXNlLkludmFyaWFudFxubW9kdWxlIE1vbmFkID0gQmFzZS5Nb25hZFxubW9kdWxlIFBvbHkgPSBCYXNlLlBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IEJhc2UuUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IEJhc2UuU3RyaW5nYWJsZVxubW9kdWxlIFN5cyA9IEJhc2UuU3lzXG5tb2R1bGUgVWNoYXIgPSBCYXNlLlVjaGFyXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBCYXNlLldpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gQmFzZS5Xb3JkX3NpemVcblxuKCogV2UgZG8gaW5jbHVkZSBbQmFzZV0ncyB0b3AtbGV2ZWwgdmFsdWUgYW5kIHR5cGUgYmluZGluZ3MsIGJlY2F1c2UgdGhleSBkb24ndCBjYXVzZVxuICAgYW55IGNvbmZ1c2lvbiwgYW5kIGR1cGxpY2F0aW5nIHRoZW0gd291bGQgYmUgZXJyb3IgcHJvbmUuICopXG5pbmNsdWRlIEJhc2UuRXhwb3J0XG5pbmNsdWRlIFN0ZGlvXG5pbmNsdWRlIEJhc2VfZm9yX3Rlc3RzXG5pbmNsdWRlIEJpbl9wcm90LlN0ZFxubW9kdWxlIEZpZWxkID0gRmllbGRzbGliLkZpZWxkXG5cbm1vZHVsZSBGcm9tX3NleHBsaWIgOiBzaWdcbiAgdHlwZSBiaWdzdHJpbmcgPSBTZXhwbGliLkNvbnYuYmlnc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgbWF0ID0gU2V4cGxpYi5Db252Lm1hdCBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIHZlYyA9IFNleHBsaWIuQ29udi52ZWMgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAoKiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBmcm9tXG4gICAgIFtbQEBkZXJpdmluZyBzZXhwXV0sIFtbJXNleHBfb2Y6IF1dLCBhbmQgW1slb2Zfc2V4cDogXV0uICBUaGUgdHlwZSBbXyBzZXhwX29wYXF1ZV1cbiAgICAgZXhwYW5kcyB0byB1c2VzIG9mIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0uICopXG5cbiAgdmFsIHNleHBfb2Zfb3BhcXVlIDogXyAtPiBCYXNlLlNleHAudFxuICB2YWwgb3BhcXVlX29mX3NleHAgOiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBzZXhwX29mX3BhaXIgOiAoJ2EgLT4gQmFzZS5TZXhwLnQpIC0+ICgnYiAtPiBCYXNlLlNleHAudCkgLT4gJ2EgKiAnYiAtPiBCYXNlLlNleHAudFxuICB2YWwgcGFpcl9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhKSAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpIC0+IEJhc2UuU2V4cC50IC0+ICdhICogJ2JcblxuICBleGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiBCYXNlLlNleHAudFxuXG4gIHZhbCBvZl9zZXhwX2Vycm9yIDogc3RyaW5nIC0+IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIG9mX3NleHBfZXJyb3JfZXhuIDogZXhuIC0+IEJhc2UuU2V4cC50IC0+IF9cbmVuZCA9XG4gIFNleHBsaWIuQ29udlxuXG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuXG4oKiBbc2V4cF9vcGFxdWVdIGluZGljYXRlcyB0byBbcHB4X3NleHBfY29udl0gdGhhdCBhIHZhbHVlIHNob3VsZCBiZSByZW5kZXJlZCBhcyBbX10sIGkuZS5cbiAgIFtTZXhwLkF0b20gXCJfXCJdLiAgSGVyZSB3ZSBleHBvc2UgdGhlIFtAQGRlcml2aW5nXSBhc3BlY3RzIG9mIFtzZXhwX29wYXF1ZV0gc28gdGhhdFxuICAgb3RoZXIgcHB4J3MgdHJlYXQgW3NleHBfb3BhcXVlXSBjb3JyZWN0bHksIGJ5IGlnbm9yaW5nIGl0IGFuZCBwcm9jZXNzaW5nIHRoZSB1bmRlcmx5aW5nXG4gICB0eXBlLiAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBzZXhwX29wYXF1ZSA6PSAnYSlcblxuaW5jbHVkZSAoXG4gIFR5cGVyZXBfbGliLlN0ZCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIFR5cGVfZXF1YWwgOj0gVHlwZXJlcF9saWIuU3RkLlR5cGVfZXF1YWwpXG5cbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudHNsaWIuVmFyaWFudFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPSBQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUuYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID1cbiAgdHJ5XG4gICAgaWdub3JlIChDYW1sLlN5cy5nZXRlbnYgXCJURVNUSU5HX0ZSQU1FV09SS1wiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgKCogW0NhbWwuKl0gbmV2ZXIgcmFpc2VzIFtOb3RfZm91bmRfc10gKilcbiAgfCBDYW1sLk5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxudHlwZSAnYSBpZGVudGl0eSA9ICdhXG5cbm1vZHVsZSBOb3RfZm91bmQgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uXG4gICAgTm90X2ZvdW5kID0gTm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgW0BkZXByZWNhdGVkXG4gICAgICAgICAgICAgICAgICB7fFtzaW5jZSAyMDE4LTAyXSBJbnN0ZWFkIG9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIGNvbnNpZGVyIHVzaW5nIFtyYWlzZV9zXSB3aXRoIGFuXG5pbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLiAgSWYgY29kZSBuZWVkcyB0byBkaXN0aW5ndWlzaCBbTm90X2ZvdW5kXSBmcm9tIG90aGVyXG5leGNlcHRpb25zLCBwbGVhc2UgY2hhbmdlIGl0IHRvIGhhbmRsZSBib3RoIFtOb3RfZm91bmRdIGFuZCBbTm90X2ZvdW5kX3NdLiAgVGhlbiwgaW5zdGVhZFxub2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgcmFpc2UgW05vdF9mb3VuZF9zXSB3aXRoIGFuIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UufH1dXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gQmFzZS5Ob3RfZm91bmRfc1xuZW5kXG5cbmluY2x1ZGUgTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXhwYWJsZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IFNleHBsaWIuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICAgICAgfCBTZXhwbGliLlNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwbGliLlNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTKSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5vZl9zdHJpbmdfX29mX19vZl9zZXhwIE0udF9vZl9zZXhwIHhcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5zdHJpbmdfb2ZfX29mX19zZXhwX29mIE0uc2V4cF9vZl90IHhcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRvX3N0cmluZ2FibGUgPSBTdGFibGUuVG9fc3RyaW5nYWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5fcHJvdC5CaW5hYmxlXG5tb2R1bGUgU2hhcGUgPSBCaW5fcHJvdC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9iaW5hYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnZfd2l0aG91dF91dWlkIHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnYgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzEpXG4gICAgICAgIChNIDogQ29udjFfd2l0aG91dF91dWlkIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMxKSAoTSA6IENvbnYxIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjJfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252MiB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252M193aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252MyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFNleHBhYmxlLlMpID1cbiAgICAgIE9mX2JpbmFibGUuVjFcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zZXhwYWJsZSkgPVxuICAgICAgT2ZfYmluYWJsZS5WMlxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zdHJpbmdhYmxlKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuXG50eXBlICdhIG0gPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxubGV0IG9mX2JpZ3N0cmluZyAodHlwZSBhKSBtIGJpZ3N0cmluZyA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCB0ID0gTS5iaW5fcmVhZF90IGJpZ3N0cmluZyB+cG9zX3JlZiBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9IEFycmF5MS5kaW0gYmlnc3RyaW5nIGluXG4gIChtYXRjaCAhcG9zX3JlZiA9IGJpZ3N0cmluZ19sZW5ndGggd2l0aFxuICAgfCB0cnVlIC0+ICgpXG4gICB8IGZhbHNlIC0+XG4gICAgIHJhaXNlX3NcbiAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgIFwiYmluX3JlYWRfdCBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSBidWZmZXJcIlxuICAgICAgICAgICB+Y29uc3VtZWQ6KCFwb3NfcmVmIDogaW50KVxuICAgICAgICAgICAoYmlnc3RyaW5nX2xlbmd0aCA6IGludCldKTtcbiAgdFxuOztcblxuKCogVXNpbmcgdGhlIFtCaWdzdHJpbmddIG1vZHVsZSB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBjcmVhdGVfYmlnc3RyaW5nIHNpemUgPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgc2l6ZVxuXG5sZXQgdG9fYmlnc3RyaW5nID8ocHJlZml4X3dpdGhfbGVuZ3RoID0gZmFsc2UpICh0eXBlIGEpIG0gdCA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgdF9sZW5ndGggPSBNLmJpbl9zaXplX3QgdCBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoIHRoZW4gdF9sZW5ndGggKyA4ICgqIHRoZSBzaXplIG9mIGEgNjQtYml0IGludCAqKSBlbHNlIHRfbGVuZ3RoXG4gIGluXG4gIGxldCBiaWdzdHJpbmcgPSBjcmVhdGVfYmlnc3RyaW5nIGJpZ3N0cmluZ19sZW5ndGggaW5cbiAgbGV0IHBvcyA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoXG4gICAgdGhlbiBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IGJpZ3N0cmluZyB+cG9zOjAgdF9sZW5ndGhcbiAgICBlbHNlIDBcbiAgaW5cbiAgbGV0IHBvcyA9IE0uYmluX3dyaXRlX3QgYmlnc3RyaW5nIH5wb3MgdCBpblxuICBhc3NlcnQgKHBvcyA9IGJpZ3N0cmluZ19sZW5ndGgpO1xuICBiaWdzdHJpbmdcbjs7XG5cbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYyXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYyXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjFcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjFcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjFcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSA9IHNpZ1xuICAgICAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zXG5cbiAgICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICBlbmRcblxuICAgICgqIENoZWNrIHRoYXQgb25seSB0aGUgZnVuY3Rpb25zICYgc2hhcGUgYXJlIHN1ZmZpY2llbnQgZm9yIFtAQGRlcml2aW5nIGJpbl9pb10uIFRoZVxuICAgICAgIGZhY3QgdGhhdCB0aGlzIGZ1bmN0b3IgdHlwZWNoZWNrcyBpcywgaXRzZWxmLCB0aGUgdGVzdC4gKilcbiAgICBtb2R1bGUgXyAoWCA6IFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlKSA6IFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFgudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlByaW50Zn1bQmFzZS5QcmludGZdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgQmFzZS5QcmludGYgKCoqIEBvcGVuICopXG5cbmxldCBlcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZXByaW50ZlxubGV0IGZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5rZnByaW50ZlxubGV0IHByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLnByaW50ZlxuXG5cbigqKiBwcmludCB0byBzdGRlcnI7IGV4aXQgMSAqKVxubGV0IGV4aXRmIGZtdCA9XG4gIGtzcHJpbnRmXG4gICAgKGZ1biBzICgpIC0+XG4gICAgICAgZXByaW50ZiBcIiVzXFxuJSFcIiBzO1xuICAgICAgIGV4aXQgMSlcbiAgICBmbXRcbjs7XG5cbnR5cGUgcHJpbnRmID0geyBwcmludGYgOiAnYS4gKCdhLCBCdWZmZXIudCwgdW5pdCkgZm9ybWF0IC0+ICdhIH1cblxubGV0IGNvbGxlY3RfdG9fc3RyaW5nIGYgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgZG9uZV8gPSByZWYgZmFsc2UgaW5cbiAgbGV0IHByaW50ZiBmbXQgPVxuICAgIGticHJpbnRmXG4gICAgICAoZnVuIGJ1ZiAtPlxuICAgICAgICAgaWYgIWRvbmVfXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbcHJpbnRmXSB1c2VkIGFmdGVyIFtjb2xsZWN0X3RvX3N0cmluZ10gcmV0dXJuZWRcIl0pKVxuICAgICAgYnVmXG4gICAgICBmbXRcbiAgaW5cbiAgZiB7IHByaW50ZiB9O1xuICBkb25lXyA6PSB0cnVlO1xuICBsZXQgb3V0cHV0ID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBvdXRwdXRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxuKCogQWxsIHRoZSB0eXBlcyBhcyBleHBvc2VkIGluIHRoZSBtbGkgYXJlIGRlZmluZWQgaW4gdGhpcyBbVHlwZXNdIG1vZHVsZS4gIFRoZSByZXN0IG9mXG4gICB0aGlzIGZpbGUgaXMgc2ltcGx5IG92ZXJyaWRpbmcgYWxsIHRoZSBiaW5faW8sIGNvbXBhcmUsIGFuZCBzZXhwIGZ1bmN0aW9ucyB0byByYWlzZVxuICAgZXhjZXB0aW9ucy4gKilcbm1vZHVsZSBUeXBlcyA9IHN0cnVjdFxuICBtb2R1bGUgTm9ib2R5ID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJOb2JvZHlcIlxuICBlbmRcblxuICBtb2R1bGUgTWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBSZWFkIF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRcIlxuICBlbmRcblxuICBtb2R1bGUgV3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBXaG9fY2FuX3dyaXRlIG9mIE1lLnQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiV3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgSW1tdXRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mIE5vYm9keS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIkltbXV0YWJsZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IFdyaXRlLnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZF93cml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiAnYVxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJVcHBlcl9ib3VuZFwiXG4gIGVuZFxuZW5kXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbigqIFRoaXMgaXMgYW4gZXhwbGljaXQgbW9kdWxlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IGdpdmVuIGlubGluZSBhcyB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZlxuICAgW09ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxXSB0byBhdm9pZCBhbiB1bnVzZWQgdmFsdWUgd2FybmluZyB3aXRoIGJpbl9pbyB2YWx1ZXMuICopXG5tb2R1bGUgdHlwZSBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuKCogT3ZlcnJpZGUgYWxsIGJpbl9pbywgc2V4cCwgY29tcGFyZSBmdW5jdGlvbnMgdG8gcmFpc2UgZXhjZXB0aW9ucyAqKVxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChOYW1lIDogc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCBzZXhwX29mX3QgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuc2V4cF9vZl90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9vZl9zZXhwIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnRfb2Zfc2V4cF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGNvbXBhcmUgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5jb21wYXJlXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgaGFzaF9mb2xkX3QgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5oYXNoX2ZvbGRfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5Ob3RoaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIGVuZClcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBkZXNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IHNpZ1xuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX3BvbHldXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVClcblxuICB0eXBlIHQgPSBULnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE5vYm9keSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Ob2JvZHkpXG4gICAgbW9kdWxlIE1lID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk1lKVxuICAgIG1vZHVsZSBSZWFkID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWQpXG4gICAgbW9kdWxlIFdyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLldyaXRlKVxuICAgIG1vZHVsZSBSZWFkX3dyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWRfd3JpdGUpXG4gICAgbW9kdWxlIEltbXV0YWJsZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5JbW11dGFibGUpXG5cbiAgICB0eXBlIG5vYm9keSA9IE5vYm9keS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIG1lID0gTWUudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFR5cGVzLlVwcGVyX2JvdW5kKVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBUeXBlcy5VcHBlcl9ib3VuZC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHJlYWQgPSBWMS5SZWFkLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgd3JpdGUgPSBWMS5Xcml0ZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBpbW11dGFibGUgPSBWMS5JbW11dGFibGUudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSByZWFkX3dyaXRlID0gVjEuUmVhZF93cml0ZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlICdhIHBlcm1zID0gJ2EgVjEuVXBwZXJfYm91bmQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5tb2R1bGUgRXhwb3J0ID0gU3RhYmxlLkV4cG9ydFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ29tcGFyYXRvciA9IEJhc2UuQ29tcGFyYXRvclxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSBDb21wYXJhdG9yLnQgPSBwcml2YXRlXG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gIH1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQ29tcGFyYXRvciB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbmluY2x1ZGUgKENvbXBhcmF0b3IgOiBCYXNlX21hc2spXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIHQgPSBwcml2YXRlXG4gICAgICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuXG4gICAgbGV0IG1ha2UgPSBtYWtlXG5cbiAgICBtb2R1bGUgTWFrZSA9IE1ha2VcbiAgICBtb2R1bGUgTWFrZTEgPSBNYWtlMVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUmVzdWx0ID0gQmFzZS5SZXN1bHRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCA9XG4gICAgICB8IE9rIG9mICdhXG4gICAgICB8IEVycm9yIG9mICdiXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAoZjIgZXJyKVxuICAgICAgfCBPayB4IC0+IE9rIChmMSB4KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMV9zdGFibGVfdW5pdF90ZXN0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKHN0cmluZywgaW50KSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICAgIGxldCB0ZXN0cyA9XG4gICAgICBbIFYxLk9rIFwiZm9vXCIsIFwiKE9rIGZvbylcIiwgXCJcXDAwMFxcMDAzZm9vXCI7IFYxLkVycm9yIDcsIFwiKEVycm9yIDcpXCIsIFwiXFwwMDFcXDAwN1wiIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBSZXN1bHRcbiIsIigqKiBBbiBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgc3RhYmlsaXR5IG9mIHNleHAgYW5kIGJpbi1pb1xuICAgIHNlcmlhbGl6YXRpb25zICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG5cblxuICAoKiogW3Rlc3RzXSBpcyBhIGxpc3Qgb2YgKHZhbHVlLCBzZXhwLXJlcHJlc2VudGF0aW9uLCBiaW4taW8tcmVwcmVzZW50YXRpb24pIHRyaXBsZXMuXG4gICAgICBUaGUgdW5pdCB0ZXN0cyBjaGVjayB0aGF0IHRoZSB0eXBlIHByb3Blcmx5IHNlcmlhbGl6ZXMgYW5kXG4gICAgICBkZS1zZXJpYWxpemVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcmVwcmVzZW50YXRpb25zLiAqKVxuICB2YWwgdGVzdHMgOiAodCAqIHN0cmluZyAqIHN0cmluZykgbGlzdFxuZW5kXG5cbigqKiBVbm9yZGVyZWQgY29udGFpbmVyIHRlc3RzIGFyZSBmb3IgdHlwZXMgd2l0aCBzZXJpYWxpemF0aW9ucyB0aGF0IHdpbGwgY29udGFpbiBhXG4gICAgY2VydGFpbiBzZXQgb2YgZWxlbWVudHMgKGVhY2ggcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc2V4cCBvciBiaW4taW8gc3RyaW5nKSB3aGljaCBtYXlcbiAgICBhcHBlYXIgaW4gYW55IG9yZGVyLCBzdWNoIGFzIGhhc2ggdGFibGVzIGFuZCBoYXNoIHNldHMuICopXG5tb2R1bGUgVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzZXhwcyA6IHN0cmluZyBsaXN0XG4gICAgOyBiaW5faW9faGVhZGVyIDogc3RyaW5nXG4gICAgOyBiaW5faW9fZWxlbWVudHMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBVbm9yZGVyZWRfY29udGFpbmVyX2FyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCB0ZXN0cyA6ICh0ICogVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0LnQpIGxpc3RcbmVuZFxuIiwibGV0ICggfCEgKSB4IHkgPSB4IHw+IHlcbiIsImluY2x1ZGUgQmFzZS5PcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5cbmxldCBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBpID0gaWYgaSA8IDAgdGhlbiBpICsgbGVuZ3RoX2Z1biB0IGVsc2UgaVxuXG5sZXQgc2xpY2Ugfmxlbmd0aF9mdW4gfnN1Yl9mdW4gdCBzdGFydCBzdG9wID1cbiAgbGV0IHN0b3AgPSBpZiBzdG9wID0gMCB0aGVuIGxlbmd0aF9mdW4gdCBlbHNlIHN0b3AgaW5cbiAgbGV0IHBvcyA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0YXJ0IGluXG4gIGxldCBsZW4gPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdG9wIC0gcG9zIGluXG4gIHN1Yl9mdW4gdCB+cG9zIH5sZW5cbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXF1ZW5jZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLlNlcXVlbmNlLnRcblxuICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS5vZl9saXN0XG4gICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLnRvX2xpc3RcbiAgZW5kKVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZXBcblxuICB0eXBlICgnYSwgJ3MpIHQgPSAoJ2EsICdzKSBTdGVwLnQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiAnc1xuICAgIHwgWWllbGQgb2YgJ2EgKiAnc1xuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEhlYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBwb3BfbWluIDogJ2EgdCAtPiAoJ2EgKiAnYSB0KSBvcHRpb25cbmVuZFxuXG5sZXQgbWVyZ2VfYWxsIChtb2R1bGUgSGVhcCA6IEhlYXApIHNlcXMgfmNvbXBhcmUgPVxuICBsZXQgbW9kdWxlIE1lcmdlX2FsbF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGhlYXAgOiAoJ2EgKiAnYSBCYXNlLlNlcXVlbmNlLnQpIEhlYXAudFxuICAgICAgOyBub3RfeWV0X2luX2hlYXAgOiAnYSBCYXNlLlNlcXVlbmNlLnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG4gIGVuZFxuICBpblxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OlxuICAgICAgKE1lcmdlX2FsbF9zdGF0ZS5jcmVhdGVcbiAgICAgICAgIH5oZWFwOihIZWFwLmNyZWF0ZSB+Y29tcGFyZTooQmFzZS5Db21wYXJhYmxlLmxpZnQgY29tcGFyZSB+Zjpmc3QpKVxuICAgICAgICAgfm5vdF95ZXRfaW5faGVhcDpzZXFzKVxuICAgIH5mOihmdW4geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgfSAtPlxuICAgICAgbWF0Y2ggbm90X3lldF9pbl9oZWFwIHdpdGhcbiAgICAgIHwgc2VxIDo6IG5vdF95ZXRfaW5faGVhcCAtPlxuICAgICAgICAobWF0Y2ggRXhwZXJ0Lm5leHRfc3RlcCBzZXEgd2l0aFxuICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBub3RfeWV0X2luX2hlYXA7IGhlYXAgfVxuICAgICAgICAgfCBTa2lwIHNlcSAtPiBTa2lwIHsgbm90X3lldF9pbl9oZWFwID0gc2VxIDo6IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9XG4gICAgICAgICB8IFlpZWxkIChlbHQsIHNlcSkgLT4gU2tpcCB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCA9IEhlYXAuYWRkIGhlYXAgKGVsdCwgc2VxKSB9KVxuICAgICAgfCBbXSAtPlxuICAgICAgICAobWF0Y2ggSGVhcC5wb3BfbWluIGhlYXAgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgICAgIHwgU29tZSAoKGVsdCwgc2VxKSwgaGVhcCkgLT4gWWllbGQgKGVsdCwgeyBoZWFwOyBub3RfeWV0X2luX2hlYXAgPSBbIHNlcSBdIH0pKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxub3BlbiBQZXJtcy5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEJhc2UuQXJyYXlcbm1vZHVsZSBDb3JlX3NlcXVlbmNlID0gU2VxdWVuY2VcblxuaW5jbHVkZSAoXG4gIEJhc2UuQXJyYXkgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBzZXhwX2dyYW1tYXJdXG4gIGVuZClcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IEJhc2UuQXJyYXkuUHJpdmF0ZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQXJyYXlcblxuICBsZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxuICBsZXQgc2xpY2UgdCBzdGFydCBzdG9wID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG4gIDs7XG5cbiAgbGV0IG5nZXQgdCBpID0gdC4obm9ybWFsaXplIHQgaSlcbiAgbGV0IG5zZXQgdCBpIHYgPSB0Lihub3JtYWxpemUgdCBpKSA8LSB2XG5cbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgb3BlbiBCYXNlLkFycmF5XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBzZXQgPSBzZXRcbiAgZW5kXG5cbiAgKCogU2VlIE9DYW1sIHBlcmYgbm90ZXMgZm9yIHdoeSB0aGVzZSBhcnJheSBibGl0cyBhcmUgc3BlY2lhbCBjYXNlZCAtLSBpbiBwYXJ0aWN1bGFyLFxuICAgICB0aGUgc2VjdGlvbiBlbnRpdGxlZCBcIkZhc3QsIFNsb3cgYW5kIEluY29ycmVjdCBBcnJheSBibGl0c1wiIG9mXG4gICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEzMDIyMDAwMDIyOS9odHRwOi8vamFuZXN0cmVldC5naXRodWIuY29tL29jYW1sLXBlcmYtbm90ZXMuaHRtbCAqKVxuICBtb2R1bGUgSW50ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGludCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBtb2R1bGUgVW5zYWZlX2JsaXQgPSBzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzp0X1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dF9cbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gKCA9IClcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRfXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0X1xuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIFRlc3RfYmxpdC5NYWtlX2FuZF90ZXN0XG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gQmFzZS5GbG9hdC5lcXVhbFxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMS4gZWxzZSAwLlxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIH5sZW4gMC5cblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQZXJtaXNzaW9uZWQgPSBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHRcblxuICBpbmNsdWRlIENvbnRhaW5lci5TMV9wZXJtaXNzaW9ucyB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbiAgaW5jbHVkZSBCbGl0LlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgnYSwgXykgdCAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbiAgdmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAoZmxvYXQsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvcHlfbWF0cml4XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBhcHBlbmQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29uY2F0IDogKCdhLCBbPiByZWFkIF0pIHQgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWxsIDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRpbmdfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gJ2IgKiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBtYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaXRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpXG4gICAgLT4gJ2IgKiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+IGluaXQ6J2IgLT4gJ2JcblxuICB2YWwgc29ydFxuICAgIDogID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiB1bml0XG5cbiAgdmFsIHN0YWJsZV9zb3J0IDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cblxuICB2YWwgdHJhbnNwb3NlX2V4blxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbm9ybWFsaXplIDogKCdhLCBfKSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbmdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICgnYSBvcHRpb24sIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIG1hcDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+ICdiIC0+ICdjKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZm9yX2FsbDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMyX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBzd2FwIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gZjooJ2EgLT4gJ2EpIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcbiAgdmFsIGZpbmRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBlcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICB2YWwgcGVybXV0ZVxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnRcbiAgICAtPiA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiB1bml0XG5cbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBvcHRpb25cbiAgdmFsIHJhbmRvbV9lbGVtZW50X2V4biA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgdW56aXAgOiAoJ2EgKiAnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbGFzdCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbW9kdWxlIEludCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChpbnQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6Wz4gcmVhZCBdIHRcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6Wz4gd3JpdGUgXSB0XG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoZmxvYXQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6Wz4gcmVhZCBdIHRcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6Wz4gd3JpdGUgXSB0XG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIHZhbCBvZl9hcnJheV9pZCA6ICdhIGFycmF5IC0+ICgnYSwgWzwgcmVhZF93cml0ZSBdKSB0XG4gIHZhbCB0b19hcnJheV9pZCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+ICdhIGFycmF5XG4gIHZhbCB0b19zZXF1ZW5jZV9pbW11dGFibGUgOiAoJ2EsIFs+IGltbXV0YWJsZSBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgdHlwZXJlcF1cblxuICBtb2R1bGUgSW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkludFxuXG4gICAgdHlwZSAtJ3Blcm1zIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5GbG9hdFxuXG4gICAgdHlwZSAtJ3Blcm1zIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gIGxldCB0b19hcnJheV9pZCA9IEZuLmlkXG4gIGxldCBvZl9hcnJheV9pZCA9IEZuLmlkXG5cbiAgaW5jbHVkZSAoVCA6IFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gIGxldCB0b19hcnJheSA9IGNvcHlcbiAgbGV0IHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA9IHRvX3NlcXVlbmNlX211dGFibGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIENvbnRhaW5lci5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiBmbG9hdCB0XG4gIHZhbCBpbml0IDogaW50IC0+IGY6KGludCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAnYSB0IHRcbiAgdmFsIGNvcHlfbWF0cml4IDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGNvbmNhdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBmaWxsIDogJ2EgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGluY2x1ZGUgQmxpdC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGZvbGRpbmdfbWFwIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdjIHRcbiAgdmFsIGZvbGRfbWFwIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdiICogJ2MgdFxuICB2YWwgbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYikgLT4gJ2JcbiAgdmFsIGZvbGRpbmdfbWFwaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZF9tYXBpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYiAqICdjIHRcbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiBpbml0OidiIC0+ICdiXG4gIHZhbCBzb3J0IDogP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIHN0YWJsZV9zb3J0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG4gIHZhbCBpc19zb3J0ZWRfc3RyaWN0bHkgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBjb25jYXRfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3QgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHRyYW5zcG9zZSA6ICdhIHQgdCAtPiAnYSB0IHQgb3B0aW9uXG4gIHZhbCB0cmFuc3Bvc2VfZXhuIDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgbm9ybWFsaXplIDogJ2EgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICdhIHQgLT4gaW50IC0+IGludCAtPiAnYSB0XG4gIHZhbCBuZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogJ2Egb3B0aW9uIHQgLT4gJ2EgdFxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgbWFwMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjIHRcbiAgdmFsIGZvbGQyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBpbml0OidjIC0+IGY6KCdjIC0+ICdhIC0+ICdiIC0+ICdjKSAtPiAnY1xuICB2YWwgZm9yX2FsbDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0czJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCdhIC0+ICdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIHN3YXAgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAnYSB0IC0+IGY6KCdhIC0+ICdhKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgOiAnYSB0IC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EgKiAnYSkgb3B0aW9uXG4gIHZhbCByZWR1Y2UgOiAnYSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAnYSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYVxuICB2YWwgcGVybXV0ZSA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIHJhbmRvbV9lbGVtZW50X2V4biA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgemlwIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdW56aXAgOiAoJ2EgKiAnYikgdCAtPiAnYSB0ICogJ2IgdFxuICB2YWwgc29ydGVkX2NvcHkgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdFxuICB2YWwgbGFzdCA6ICdhIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbmVuZFxuXG5pbmNsdWRlIChUIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBhcnJheSkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkludFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkZsb2F0XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBfIChNIDogUykgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF9cblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybSkgdCA6PSAoJ2EsICdwZXJtKSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBfIChNIDogUGVybWlzc2lvbmVkKSA6IHNpZ1xuICB0eXBlICdhIHRfXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAnYSB0XyA9ICgnYSwgcmVhZF93cml0ZSkgdFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdmLCAncykgdCA9ICgnZiwgJ3MpIEJhc2UuRWl0aGVyLnQgPVxuICAgICAgfCBGaXJzdCBvZiAnZlxuICAgICAgfCBTZWNvbmQgb2YgJ3NcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHR5cGVyZXBdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRmlyc3QgeDEgLT4gRmlyc3QgKGYxIHgxKVxuICAgICAgfCBTZWNvbmQgeDIgLT4gU2Vjb25kIChmMiB4MilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLkVpdGhlclxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5laXRoZXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZWl0aGVyXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cblxuICAgIHR5cGUgdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udCA9XG4gICAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgICAgOyBwb3NfbG51bSA6IGludFxuICAgICAgOyBwb3NfYm9sIDogaW50XG4gICAgICA7IHBvc19jbnVtIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIGhhc2gsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCB0b19zdHJpbmcgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBpcyBtYW55IHBsYWNlcyBwbGFjZXMgYXMgcG9zc2libGUuXG4gICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgSW5mb19pbnRmXG5cbm1vZHVsZSB0eXBlIFMgPSBCYXNlLkluZm8uU1xuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliLlNleHBcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubW9kdWxlIEJpbmFibGVfZXhuID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9IHQgfD4gWyVzZXhwX29mOiB0XVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBFeG4uY3JlYXRlX3NcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFeHRlbmQgKEluZm8gOiBCYXNlLkluZm8uUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZvXG5cbiAgbW9kdWxlIEludGVybmFsX3JlcHIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluYWJsZV9leG4gPSBCaW5hYmxlX2V4bi5TdGFibGVcblxuICAgICAgbW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgICgqIFtzZXhwX29mX3RdIGFzIGRlZmluZWQgaGVyZSBpcyB1bnN0YWJsZTsgdGhpcyBpcyBPSyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgICAgICAgW3Rfb2Zfc2V4cF0uICBbc2V4cF9vZl90XSBpcyBvbmx5IHVzZWQgdG8gcHJvZHVjZSBhIHNleHAgdGhhdCBpcyBuZXZlclxuICAgICAgICAgICAgIGRlc2VyaWFsaXplZCBhcyBhIFtTb3VyY2VfY29kZV9wb3NpdGlvbl0uICopXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby5JbnRlcm5hbF9yZXByLnQgPVxuICAgICAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICAgICAgICB8IEV4biBvZiBCaW5hYmxlX2V4bi5WMS50XG4gICAgICAgICAgfCBTZXhwIG9mIFNleHAudFxuICAgICAgICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24uVjEudCBvcHRpb25cbiAgICAgICAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICAgICAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgICAgICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgICAgICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgU3RhYmxlLlYyXG5cbiAgICBsZXQgdG9faW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgbGV0IG9mX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgaGFzaF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludGVybmFsX3JlcHIuU3RhYmxlLlYyKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAgIChTZXhwKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEluZm8uc2V4cF9vZl90XG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IEluZm8udF9vZl9zZXhwXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gc2V4cF9vZl90XG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IHRfb2Zfc2V4cFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbmluY2x1ZGUgRXh0ZW5kIChCYXNlLkluZm8pXG5cbiIsImluY2x1ZGUgQmFzZS5FcnJvclxuaW5jbHVkZSBJbmZvLkV4dGVuZCAoQmFzZS5FcnJvcilcblxubGV0IGZhaWx3aXRocyA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICByYWlzZSAoY3JlYXRlID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBmYWlsd2l0aHAgP3N0cmljdCBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICByYWlzZSAoY3JlYXRlID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Pcl9lcnJvclxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZ193aXRoX3VuaXRfZXhwZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBJT19ydW4gPSBCYXNlLk9yX2Vycm9yXG5cbiAgbW9kdWxlIElPX2ZsdXNoID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWcuSU9fZmx1c2hcblxuICAgIGxldCB0b19ydW4gdCA9IEJhc2UuT3JfZXJyb3IucmV0dXJuIHRcbiAgZW5kXG5cbiAgbGV0IHJ1biBmID0gb2tfZXhuIChmICgpKVxuICBsZXQgc2FuaXRpemUgcyA9IHNcbiAgbGV0IGZsdXNoZWQgKCkgPSB0cnVlXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuZW5kXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPID0gQmFzZS5Pcl9lcnJvclxuICBtb2R1bGUgSU9fcnVuID0gSU9cblxuICBtb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIElPXG5cbiAgICBsZXQgdG9fcnVuIHQgPSB0XG4gIGVuZFxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IGZsdXNoZWQgKCkgPSB0cnVlXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICBsZXQgc2FuaXRpemUgcyA9IHNcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYxLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYyLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja19pbnRmXG5vcGVuIEJhc2VfcXVpY2tjaGVja1xubW9kdWxlIEZsb2F0ID0gQmFzZS5GbG9hdFxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIE9wdGlvbiA9IEJhc2UuT3B0aW9uXG5cbm1vZHVsZSBQb2x5bW9ycGhpY190eXBlcyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHZhcmlhbnQyID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjKSB2YXJpYW50MyA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB2YXJpYW50NCA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHZhcmlhbnQ1ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB2YXJpYW50NiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICB8IGBGIG9mICdmXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYikgdHVwbGUyID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjKSB0dXBsZTMgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHR1cGxlNCA9ICdhICogJ2IgKiAnYyAqICdkIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdHVwbGU1ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHR1cGxlNiA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgKiAnZlxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAncikgZm4yID0gJ2EgLT4gJ2IgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgJ3IpIGZuMyA9ICdhIC0+ICdiIC0+ICdjIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgJ3IpIGZuNCA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsICdyKSBmbjUgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnclxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAtJ2YsICdyKSBmbjYgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiAnclxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuZW5kXG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG5cbiAgbGV0IG9mX2hhc2ggKHR5cGUgYSkgKG1vZHVsZSBNIDogRGVyaXZpbmdfaGFzaCB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBvZl9oYXNoX2ZvbGQgTS5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2XG4gIGxldCBvZl9wcmVkaWNhdGUgYSBiIH5mID0gdW5tYXAgKHZhcmlhbnQyIGEgYikgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIGBBIHggZWxzZSBgQiB4KVxuICBsZXQgc2luZ2xldG9uICgpID0gb3BhcXVlXG4gIGxldCBkb3VibGV0b24gZiA9IG9mX3ByZWRpY2F0ZSAoc2luZ2xldG9uICgpKSAoc2luZ2xldG9uICgpKSB+ZlxuICBsZXQgZW51bSBfIH5mID0gdW5tYXAgaW50IH5mXG5cbiAgbGV0IG9mX2xpc3QgbGlzdCB+ZXF1YWwgPVxuICAgIGxldCBmIHggPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kaSBsaXN0IH5mOihmdW4gXyB5IC0+IGVxdWFsIHggeSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiUXVpY2tjaGVjay5PYnNlcnZlci5vZl9saXN0OiB2YWx1ZSBub3QgZm91bmRcIlxuICAgICAgfCBTb21lIChpLCBfKSAtPiBpXG4gICAgaW5cbiAgICBlbnVtIChMaXN0Lmxlbmd0aCBsaXN0KSB+ZlxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZiAoKSkgeCB+c2l6ZSB+aGFzaClcblxuICBsZXQgY29tcGFyaXNvbiB+Y29tcGFyZSB+ZXEgfmx0IH5ndCA9XG4gICAgdW5tYXBcbiAgICAgICh2YXJpYW50MyBsdCAoc2luZ2xldG9uICgpKSBndClcbiAgICAgIH5mOihmdW4geCAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmUgeCBlcSBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIGBBIHggZWxzZSBpZiBjID4gMCB0aGVuIGBDIHggZWxzZSBgQiB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgb3BlbiBMZXRfc3ludGF4XG5cbiAgbGV0IHNpbmdsZXRvbiA9IHJldHVyblxuXG4gIGxldCBkb3VibGV0b24geCB5ID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gaWYgU3BsaXR0YWJsZV9yYW5kb20uYm9vbCByYW5kb20gdGhlbiB4IGVsc2UgeSlcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmICgpKSB+c2l6ZSB+cmFuZG9tKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSB+cCBzZXEgPVxuICAgIGlmIEZsb2F0LiggPD0gKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHByb2JhYmlsaXR5IFslZl0gb3V0IG9mIGJvdW5kc1wiIHApO1xuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxXG4gICAgICB+aW5pdDooKVxuICAgICAgfmZpbmlzaDooZnVuICgpIC0+IGZhaWx3aXRoIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiByYW4gb3V0IG9mIHZhbHVlc1wiKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIC0+IHdlaWdodGVkX3VuaW9uIFsgcCwgc2luZ2xldG9uIHg7IDEuIC0uIHAsIG9mX2Z1biBrIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBib3VuZGVkX2dlb21ldHJpYyB+cCB+bWF4aW11bSBpbml0ID1cbiAgICBpZiBpbml0ID0gbWF4aW11bVxuICAgIHRoZW4gc2luZ2xldG9uIG1heGltdW1cbiAgICBlbHNlXG4gICAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgICBbIHAsIHNpbmdsZXRvbiBpbml0XG4gICAgICAgIDsgMS4gLS4gcCwgb2ZfZnVuIChmdW4gKCkgLT4gYm91bmRlZF9nZW9tZXRyaWMgfnAgfm1heGltdW0gKGluaXQgKyAxKSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCBnZW9tZXRyaWMgfnAgaW5pdCA9IGJvdW5kZWRfZ2VvbWV0cmljIH5wIH5tYXhpbXVtOkludC5tYXhfdmFsdWUgaW5pdFxuICBsZXQgc21hbGxfbm9uX25lZ2F0aXZlX2ludCA9IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50XG4gIGxldCBzbWFsbF9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnRcbiAgbGV0IGxpc3Rfd2l0aF9sZW5ndGggbGVuZ3RoIHQgPSBsaXN0X3dpdGhfbGVuZ3RoIHQgfmxlbmd0aFxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTZcbiAgbGV0IGZuMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMlxuICBsZXQgZm4zID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4zXG4gIGxldCBmbjQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjRcbiAgbGV0IGZuNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNVxuICBsZXQgZm42ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm42XG5cbiAgbGV0IGNvbXBhcmVfZm4gZG9tID1cbiAgICBmbiBkb20gaW50ID4+fCBmdW4gZ2V0X2luZGV4IHggeSAtPiBbJWNvbXBhcmU6IGludF0gKGdldF9pbmRleCB4KSAoZ2V0X2luZGV4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsX2ZuIGRvbSA9IGNvbXBhcmVfZm4gZG9tID4+fCBmdW4gY21wIHggeSAtPiBJbnQuKCA9ICkgKGNtcCB4IHkpIDBcbmVuZFxuXG5tb2R1bGUgU2hyaW5rZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaHJpbmtlclxuXG4gIGxldCBlbXB0eSAoKSA9IGF0b21pY1xuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNlxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBHZW5lcmF0b3JcbiAgZW5kXG5cbiAgaW5jbHVkZSBHZW5lcmF0b3IuTW9uYWRfaW5maXhcblxuICBsZXQgcmV0dXJuID0gR2VuZXJhdG9yLnJldHVyblxuZW5kXG5cbm1vZHVsZSBDb25maWd1cmUgKENvbmZpZyA6IFF1aWNrY2hlY2tfY29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIGxldCBub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG4gIGxldCByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2Ugbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0ciAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFslaGFzaDogc3RyaW5nXSBzdHIpXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2VlZCBzZWVkIDogVGVzdC5Db25maWcuU2VlZC50ID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IE5vbmRldGVybWluaXN0aWNcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBEZXRlcm1pbmlzdGljIHN0cmluZ1xuICA7O1xuXG4gIGxldCBtYWtlX3Nocmlua19jb3VudCA9IGZ1bmN0aW9uXG4gICAgfCBgRXhoYXVzdGl2ZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBgTGltaXQgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgOiBUZXN0LkNvbmZpZy50ID1cbiAgICB7IHNlZWQgPSBtYWtlX3NlZWQgKE9wdGlvbi52YWx1ZSBzZWVkIH5kZWZhdWx0OmRlZmF1bHRfc2VlZClcbiAgICA7IHNpemVzID0gT3B0aW9uLnZhbHVlIHNpemVzIH5kZWZhdWx0OmRlZmF1bHRfc2l6ZXNcbiAgICA7IHRlc3RfY291bnQgPSBPcHRpb24udmFsdWUgdHJpYWxzIH5kZWZhdWx0OmRlZmF1bHRfdHJpYWxfY291bnRcbiAgICA7IHNocmlua19jb3VudCA9XG4gICAgICAgIG1ha2Vfc2hyaW5rX2NvdW50IChPcHRpb24udmFsdWUgc2hyaW5rX2F0dGVtcHRzIH5kZWZhdWx0OmRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzKVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV90ZXN0X20gKHR5cGUgYSkgfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgOiAobW9kdWxlIFRlc3QuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IE9wdGlvbi52YWx1ZSBzaHJpbmtlciB+ZGVmYXVsdDpTaHJpbmtlci5hdG9taWNcbiAgICAgIGxldCBzZXhwX29mX3QgPSBPcHRpb24udmFsdWUgc2V4cF9vZiB+ZGVmYXVsdDpbJXNleHBfb2Y6IF9dXG4gICAgZW5kXG4gICAgaW5cbiAgICAobW9kdWxlIE0pXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV92YWx1ZSA/KHNlZWQgPSBkZWZhdWx0X3NlZWQpID8oc2l6ZSA9IDMwKSBnZW4gPVxuICAgIGxldCByYW5kb20gPSByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkIGluXG4gICAgR2VuZXJhdG9yLmdlbmVyYXRlIGdlbiB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV9zZXF1ZW5jZSA/c2VlZCA/c2l6ZXMgZ2VuID1cbiAgICBsZXQgY29uZmlnID1cbiAgICAgIG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzOihTb21lIEludC5tYXhfdmFsdWUpIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZVxuICAgIGluXG4gICAgbGV0IHJldHVybiA9IHJlZiBTZXF1ZW5jZS5lbXB0eSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gcmV0dXJuIDo9IHNlcXVlbmNlKTtcbiAgICAhcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP3NlZWQgP3NpemVzID90cmlhbHMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0czpOb25lIGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiBTZXF1ZW5jZS5pdGVyIHNlcXVlbmNlIH5mKVxuICA7O1xuXG4gIGxldCB0ZXN0ID9zZWVkID9zaXplcyA/dHJpYWxzID9zaHJpbmtlciA/c2hyaW5rX2F0dGVtcHRzID9zZXhwX29mID9leGFtcGxlcyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW5fZXhuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X29yX2Vycm9yXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/dHJpYWxzXG4gICAgICAgID9zaHJpbmtlclxuICAgICAgICA/c2hyaW5rX2F0dGVtcHRzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgID9leGFtcGxlc1xuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH50cmlhbHNcbiAgICAgICAgfmRpc3RpbmN0X3ZhbHVlc1xuICAgICAgICB+Y29tcGFyZVxuICAgID1cbiAgICBsZXQgbW9kdWxlIFMgPVxuICAgICAgQ2FtbC5TZXQuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGtleVxuXG4gICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgbGV0IGZhaWwgc2V0ID1cbiAgICAgIGxldCBleHBlY3RfY291bnQgPSBkaXN0aW5jdF92YWx1ZXMgaW5cbiAgICAgIGxldCBhY3R1YWxfY291bnQgPSBTLmNhcmRpbmFsIHNldCBpblxuICAgICAgbGV0IHZhbHVlcyA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgc2V4cF9vZl9lbHQgLT4gU29tZSBbJXNleHAgKFMuZWxlbWVudHMgc2V0IDogZWx0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnN1ZmZpY2llbnQgZGlzdGluY3QgdmFsdWVzXCJcbiAgICAgICAgICAgICh0cmlhbHMgOiBpbnQpXG4gICAgICAgICAgICAoZXhwZWN0X2NvdW50IDogaW50KVxuICAgICAgICAgICAgKGFjdHVhbF9jb3VudCA6IGludClcbiAgICAgICAgICAgICh2YWx1ZXMgOiAoQmFzZS5TZXhwLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgICBpblxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IHNldCA9IHJlZiBTLmVtcHR5IGluXG4gICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBzZXQgOj0gUy5hZGQgZWx0ICFzZXQ7XG4gICAgICAgIGlmIFMuY2FyZGluYWwgIXNldCA+PSBkaXN0aW5jdF92YWx1ZXMgdGhlbiByLnJldHVybiAoKSk7XG4gICAgICBmYWlsICFzZXQpXG4gIDs7XG5cbiAgbGV0IHRlc3RfY2FuX2dlbmVyYXRlXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/KHRyaWFscyA9IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50KVxuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IHIgPSByZWYgW10gaW5cbiAgICBsZXQgZl9hbmRfZW5xdWV1ZSByZXR1cm4geCA9IGlmIGYgeCB0aGVuIHJldHVybiBgQ2FuX2dlbmVyYXRlIGVsc2UgciA6PSB4IDo6ICFyIGluXG4gICAgbWF0Y2hcbiAgICAgIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmX2FuZF9lbnF1ZXVlIHJldHVybi5yZXR1cm4pO1xuICAgICAgICBgQ2Fubm90X2dlbmVyYXRlKVxuICAgIHdpdGhcbiAgICB8IGBDYW5fZ2VuZXJhdGUgLT4gKClcbiAgICB8IGBDYW5ub3RfZ2VuZXJhdGUgLT5cbiAgICAgIChtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW5ub3QgZ2VuZXJhdGVcIlxuICAgICAgIHwgU29tZSBzZXhwX29mX3ZhbHVlIC0+XG4gICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImNhbm5vdCBnZW5lcmF0ZVwiIH5hdHRlbXB0czooIXIgOiB2YWx1ZSBsaXN0KV0pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb25maWd1cmUgKHN0cnVjdFxuICAgIGxldCBkZWZhdWx0X3NlZWQgPSBgRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuXG4gICAgbGV0IGRlZmF1bHRfdHJpYWxfY291bnQgPVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAxMF8wMDBcbiAgICAgIHwgVzMyIC0+IDFfMDAwXG4gICAgOztcblxuICAgIGxldCBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudCA9IDEwXzAwMFxuICAgIGxldCBkZWZhdWx0X3Nocmlua19hdHRlbXB0cyA9IGBMaW1pdCAxMDAwXG5cbiAgICBsZXQgZGVmYXVsdF9zaXplcyA9XG4gICAgICBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgUzEgPSBTMVxubW9kdWxlIHR5cGUgUzIgPSBTMlxubW9kdWxlIHR5cGUgU19pbnQgPSBTX2ludFxubW9kdWxlIHR5cGUgU19yYW5nZSA9IFNfcmFuZ2VcblxudHlwZSBub25yZWMgc2VlZCA9IHNlZWRcbnR5cGUgbm9ucmVjIHNocmlua19hdHRlbXB0cyA9IHNocmlua19hdHRlbXB0c1xuXG5tb2R1bGUgdHlwZSBRdWlja2NoZWNrX2NvbmZpZyA9IFF1aWNrY2hlY2tfY29uZmlnXG5tb2R1bGUgdHlwZSBRdWlja2NoZWNrX2NvbmZpZ3VyZWQgPSBRdWlja2NoZWNrX2NvbmZpZ3VyZWRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVHlwZXJlcF9saWIuU3RkXG5pbmNsdWRlIEJhc2UuTGlzdFxuXG50eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIGluY2x1ZGUgQXNzb2NcblxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgKiAnYikgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IGNvbXBhcmUgKHR5cGUgYSBiKSBjb21wYXJlX2EgY29tcGFyZV9iID0gWyVjb21wYXJlOiAoYSAqIGIpIGxpc3RdXG5lbmRcblxubGV0IHRvX3N0cmluZyB+ZiB0ID1cbiAgU2V4cGxpYi5TZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4geCAtPiBTZXhwbGliLlNleHAuQXRvbSB4KSAobWFwIHQgfmYpKVxuOztcblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0XG5sZXQgZ2VuX25vbl9lbXB0eSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9ub25fZW1wdHlcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW5ndGggcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfd2l0aF9sZW5ndGggcXVpY2tjaGVja19nZW5lcmF0b3Igfmxlbmd0aFxuOztcblxubGV0IGdlbl9maWx0ZXJlZCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9maWx0ZXJlZFxubGV0IGdlbl9wZXJtdXRhdGlvbnMgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfcGVybXV0YXRpb25zXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5saXN0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5saXN0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja2FibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udlxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZCA9IENvbnZfZmlsdGVyZWRcbm1vZHVsZSB0eXBlIENvbnYxID0gQ29udjFcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQxID0gQ29udl9maWx0ZXJlZDFcbm1vZHVsZSB0eXBlIFMgPSBRdWlja2NoZWNrLlNcbm1vZHVsZSB0eXBlIFMxID0gUXVpY2tjaGVjay5TMVxubW9kdWxlIHR5cGUgUzIgPSBRdWlja2NoZWNrLlMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFF1aWNrY2hlY2suU19pbnRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnYgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDogUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPVxuc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZTFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnYxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZDFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2h0YmxfaW50ZlxubW9kdWxlIEhhc2hhYmxlID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBIYXNodGJsX2ludGYuTWVyZ2VfaW50b19hY3Rpb25cbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgQ3JlYXRvcnMgPSBIYXNodGJsLkNyZWF0b3JzXG5cbmluY2x1ZGUgKFxuICBIYXNodGJsIDpcbiAgc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEJhc2UuSGFzaHRibC5TX3dpdGhvdXRfc3VibW9kdWxlcyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXBcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIH5jb21iaW5lXG4gICAgICBsXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibC5Qb2x5XG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGYzZTQ0NWMtNDk5Mi0xMWU2LWEyNzktMzcwM2JlMzExZTdiXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiQ29yZV9oYXNodGJsLmJpbl9yZWFkX3RfOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuXG4gIHR5cGUga2V5ID0gVC5LZXkudFxuICB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2EgdCA9IChULktleS50LCAnYSkgaGFzaHRibFxuICB0eXBlICgnYSwgJ2IpIHRfXyA9IChULktleS50LCAnYikgaGFzaHRibFxuICB0eXBlICdhIGtleV8gPSBULktleS50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULktleS50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgKFxuICAgIEhhc2h0YmwgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZVxuICAgICAgICBIYXNodGJsLkFjY2Vzc29yc1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X19cbiAgICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlfXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgSGFzaHRibC5NdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X18gd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlfXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIGhhc2h0YmxcbiAgICBlbmQpXG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IHQgPSBpbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9rZXkgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gUG9seS5zZXhwX29mX3QgVC5LZXkuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuS2V5XG4gICAgICAgIGluY2x1ZGUgS2V5J1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gS2V5LnQgKiAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmYWJhYjBhLTQ5OTItMTFlNi04Y2NhLTliYTJjNDY4NmQ5ZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJIYXNodGJsLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBLZXkudF1cbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChLZXkgOiBLZXlfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICBsZXQgaGFzaGFibGUgPVxuICAgICAgeyBIYXNoYWJsZS5oYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChLZXkgOiBLZXlfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEtleSlcbmVuZFxuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIEZvcl9kZXJpdmluZyA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ID0gc3RydWN0XG4gIGluY2x1ZGUgKEhhc2h0YmwgOiBIYXNodGJsLkZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuXG4gIG1vZHVsZSB0eXBlIE1fcXVpY2tjaGVjayA9IE1fcXVpY2tjaGVja1xuXG4gIGxldCBvZl9hbGlzdF9vcHRpb24gbSBhbGlzdCA9IFJlc3VsdC5vayAob2ZfYWxpc3Rfb3JfZXJyb3IgbSBhbGlzdClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19vYnNlcnZlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5vYnNlcnZlcjogKEtleS50ICogZGF0YSkgTGlzdC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2FsaXN0XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX3Nocmlua2VyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLnNocmlua2VyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAgICB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgICAgICAgIH5mX2ludmVyc2U6dG9fYWxpc3RcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5pbmNsdWRlIEJhc2UuSGFzaF9zZXRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEhhc2h0YmwuS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBIYXNodGJsLktleVxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBIYXNodGJsLktleV9iaW5hYmxlXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBULkVsdC50XG4gIHR5cGUgbm9ucmVjIHQgPSBlbHQgdFxuXG4gIGxldCBlcXVhbCA9IGVxdWFsXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULkVsdC50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gUG9seS5zZXhwX29mX3QgVC5FbHQuc2V4cF9vZl90IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULkVsdFxuICAgICAgICBpbmNsdWRlIFhcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYWQzODE2NzItNDk5Mi0xMWU2LTllMzYtYjc2ZGM4Y2Q0NjZmXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2hfc2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCB2ID0gbmV4dCAoKSBpblxuICAgICAgICAgIGFkZCB0IHZcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoRWx0IDogRWx0X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEVsdCA6IEVsdCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5lbmRcblxubGV0IGhhc2hhYmxlID0gUHJpdmF0ZS5oYXNoYWJsZVxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiBLZXkudCBMaXN0MC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2xpc3Rcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSkgfmZfaW52ZXJzZTp0b19saXN0XG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IU1hcH1bTWFwXX0uIFNlZSB0aG9zZSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uXG4gICAgb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezEsMiwzLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW01hcF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMzXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cblxub3BlbiEgSW1wb3J0XG5vcGVuIFRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcbm1vZHVsZSBNYXAgPSBCYXNlLk1hcFxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE1hcC5Pcl9kdXBsaWNhdGVcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXAuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXAuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgVHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcblxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9oYXNoYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQpIG9wdGlvbnNcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBrZXkgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnMxXG5cbiAgdmFsIGtleV9zZXQgOiBfIHQgLT4gKGtleSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50XG4gIHZhbCB2YWxpZGF0ZSA6IG5hbWU6KGtleSAtPiBzdHJpbmcpIC0+ICdhIFZhbGlkYXRlLmNoZWNrIC0+ICdhIHQgVmFsaWRhdGUuY2hlY2tcbiAgdmFsIHZhbGlkYXRlaSA6IG5hbWU6KGtleSAtPiBzdHJpbmcpIC0+IChrZXkgKiAnYSkgVmFsaWRhdGUuY2hlY2sgLT4gJ2EgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczJcblxuICB2YWwga2V5X3NldCA6ICgnaywgJ3YpIHQgLT4gKCdrLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdhIC0+IHN0cmluZylcbiAgICAtPiAoJ2EgKiAnYikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2EsICdiKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndikgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczNcblxuICB2YWwga2V5X3NldCA6ICgnaywgXywgJ2NtcCkgdCAtPiAoJ2ssICdjbXApIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdhIC0+IHN0cmluZylcbiAgICAtPiAoJ2EgKiAnYikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgXykgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIHZhbCBrZXlfc2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgXywgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ2NtcCkgQmFzZS5TZXQudFxuXG4gIHZhbCB2YWxpZGF0ZSA6IG5hbWU6KCdhIC0+IHN0cmluZykgLT4gJ2IgVmFsaWRhdGUuY2hlY2sgLT4gKCdhLCAnYiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gKCdrICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmtleVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzIChNIDogQWNjZXNzb3JzMykgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaHRibF9leG4gOiAoJ2ssICdjbXAsICgnayBrZXksICd2KSBIYXNodGJsLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbU2V0LnRdLiAqKVxuICB2YWwgb2Zfa2V5X3NldCA6ICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50IC0+IGY6KCdrIGtleSAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzMVxuXG4gIHZhbCBvZl9oYXNodGJsX2V4biA6IChrZXksICdhKSBIYXNodGJsLnQgLT4gJ2EgdFxuICB2YWwgb2Zfa2V5X3NldCA6IChrZXksIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCAtPiBmOihrZXkgLT4gJ3YpIC0+ICd2IHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnMyXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuIDogKCdhLCAnYikgSGFzaHRibC50IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2tleV9zZXQgOiAoJ2EsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCAtPiBmOignYSAtPiAnYikgLT4gKCdhLCAnYikgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnYikgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IpIEhhc2h0YmwudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfa2V5X3NldCA6ICgnYSwgJ2NtcCkgQmFzZS5TZXQudCAtPiBmOignYSAtPiAnYikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2IgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMVxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUga2V5IDo9IGtleVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczJcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChLZXkgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICdhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0XG4gICAgICB3aXRoIHR5cGUga2V5IDo9IEtleS50XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEsgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlICsnYSB0ID0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlIGtleSA6PSBLZXkudFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleSA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIFNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5NYXAuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5NYXAuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2MpIEtleV9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50IC0+IEJpbl9wcm90LlNoYXBlLnRcblxuICB2YWwgYmluX3NpemVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5TaXplLnNpemVyXG5cbiAgdmFsIGJpbl93cml0ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG5cbiAgdmFsIGJpbl9yZWFkX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gTWFwX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IChpbnQsIHN0cmluZykgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDAwNjc0YmU5ZmU4ZGZlOWU5YWQ0NzYwNjdkN2Q4MTAxIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1hcCAoaywgZGlmZikgfmYxIH5mMiA9XG4gICAgICAgIGxldCBrID0gZjEgayBpblxuICAgICAgICBsZXQgZGlmZiA9XG4gICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgfCBgTGVmdCB2IC0+IGBMZWZ0IChmMiB2KVxuICAgICAgICAgIHwgYFJpZ2h0IHYgLT4gYFJpZ2h0IChmMiB2KVxuICAgICAgICAgIHwgYFVuZXF1YWwgKHYxLCB2MikgLT4gYFVuZXF1YWwgKGYyIHYxLCBmMiB2MilcbiAgICAgICAgaW5cbiAgICAgICAgaywgZGlmZlxuICAgICAgOztcblxuICAgICAgbGV0IG1hcF9kYXRhIHQgfmYgPSBtYXAgdCB+ZjE6Rm4uaWQgfmYyOmZcblxuICAgICAgbGV0IGxlZnQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYExlZnQgeCB8IGBVbmVxdWFsICh4LCBfKSAtPiBTb21lIHhcbiAgICAgICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmlnaHQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gQmFzZS5NYXAuTWVyZ2VfZWxlbWVudFxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgb2JzX3RyZWUga19vYnMgdl9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RyZWUga19vYnMgdl9vYnNcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXAuVXNpbmdfY29tcGFyYXRvclxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaTooSGFzaHRibC5pdGVyaSBoYXNodGJsKSB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5mYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1hcC5vZl9oYXNodGJsX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCB0cmVlX29mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIHRvX3RyZWUgKG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgfmNvbXBhcmF0b3IgdCA9XG4gICAgQmFzZS5TZXQuVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKExpc3QudG9fYXJyYXkgKGtleXMgdCkpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0ID0ga2V5X3NldCB+Y29tcGFyYXRvciAob2ZfdHJlZSB+Y29tcGFyYXRvciB0KVxuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPVxuICAgIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yOihCYXNlLlNldC5jb21wYXJhdG9yIGtleV9zZXQpXG4gICAgICAoQXJyYXkubWFwIChCYXNlLlNldC50b19hcnJheSBrZXlfc2V0KSB+ZjooZnVuIGtleSAtPiBrZXksIGYga2V5KSlcbiAgOztcblxuICBsZXQgdHJlZV9vZl9rZXlfc2V0IGtleV9zZXQgfmYgPSB0b190cmVlIChvZl9rZXlfc2V0IGtleV9zZXQgfmYpXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBNYXAuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBNYXAuQWNjZXNzb3JzM1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTWFwLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudClcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBxdWlja2NoZWNrX29ic2VydmVyIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBxdWlja2NoZWNrX3Nocmlua2VyIGsgdlxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IHQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KVxuZW5kXG5cbmxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KSB0XG5sZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgY29tcGFyYXRvcl9zID0gQmFzZS5NYXAuY29tcGFyYXRvcl9zXG5cbnR5cGUgJ2sga2V5ID0gJ2tcbnR5cGUgJ2MgY21wID0gJ2NcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYXBcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfdHJlZSBtID0gTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sga2V5XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBjbXBcblxuICBpbmNsdWRlXG4gICAgTWFwLkFjY2Vzc29yczNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuZW5kKVxuXG5tb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuXG5sZXQgZmluZF9vcl9lcnJvciB0IGtleSA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IFNvbWUgZGF0YSAtPiBPayBkYXRhXG4gIHwgTm9uZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJrZXkgbm90IGZvdW5kXCIgfl86KGtleSA6IGtleSldXG47O1xuXG5sZXQgbWVyZ2Vfc2tld2VkID0gTWFwLm1lcmdlX3NrZXdlZFxubGV0IG9mX2hhc2h0YmxfZXhuIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRfID0gKCdhIEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlID0gKCdhLCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgPSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICB2YWwgdF9vZl9zZXhwXG4gICAgOiAgKEJhc2UuU2V4cC50IC0+ICdhIEtleS50KVxuICAgIC0+IChCYXNlLlNleHAudCAtPiAnYilcbiAgICAtPiBCYXNlLlNleHAudFxuICAgIC0+ICgnYSwgJ2IsIF8pIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgPSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEtleSlcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBvZl90cmVlIHRyZWUgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgc2luZ2xldG9uIGsgdiA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mXG4gIGxldCBvZl9hbGlzdCBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3RfZXhuIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGhhc2h0YmwgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmxcbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdFxuXG4gIGxldCBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmZcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpXG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0IGtleV9zZXQgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5fayBnZW5fdiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBnZW5fayBnZW5fdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEtleSA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIG9wZW4gVHJlZVxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIGEgYiBjID0gdF9vZl9zZXhwX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gYSA9IHNpbmdsZXRvbiBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gb2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gb2Zfc2VxdWVuY2VfZXhuIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBvZl9zZXF1ZW5jZV9tdWx0aSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPSBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0IGEgPSBvZl9hbGlzdCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gb2ZfYWxpc3Rfb3JfZXJyb3IgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBvZl9hbGlzdF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gb2ZfYWxpc3RfbXVsdGkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IG9mX2FsaXN0X3JlZHVjZSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBvZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IGludmFyaWFudHMgYSA9IGludmFyaWFudHMgYSB+Y29tcGFyYXRvclxuICBsZXQgaXNfZW1wdHkgYSA9IGlzX2VtcHR5IGFcbiAgbGV0IGxlbmd0aCBhID0gbGVuZ3RoIGFcbiAgbGV0IHNldCBhIH5rZXkgfmRhdGEgPSBzZXQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgYSB+a2V5IH5kYXRhID0gYWRkIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX2V4biBhIH5rZXkgfmRhdGEgPSBhZGRfZXhuIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX211bHRpIGEgfmtleSB+ZGF0YSA9IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZV9tdWx0aSBhIGIgPSByZW1vdmVfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX211bHRpIGEgYiA9IGZpbmRfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBjaGFuZ2UgYSBiIH5mID0gY2hhbmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdXBkYXRlIGEgYiB+ZiA9IHVwZGF0ZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfZXhuIGEgYiA9IGZpbmRfZXhuIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZCBhIGIgPSBmaW5kIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIGEgYiA9IHJlbW92ZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSBhIGIgPSBtZW0gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBpdGVyaV91bnRpbCA9IGl0ZXJpX3VudGlsXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBpdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBmb2xkX3VudGlsID0gZm9sZF91bnRpbFxuICBsZXQgZm9sZF9yaWdodCA9IGZvbGRfcmlnaHRcbiAgbGV0IGZvbGQyIGEgYiB+aW5pdCB+ZiA9IGZvbGQyIGEgYiB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX2tleXMgYSB+ZiA9IGZpbHRlcl9rZXlzIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlciBhIH5mID0gZmlsdGVyIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcmkgYSB+ZiA9IGZpbHRlcmkgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gZmlsdGVyX21hcCBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwaSBhIH5mID0gZmlsdGVyX21hcGkgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID0gY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgYSBiIGMgPSBjb21wYXJlX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZXF1YWwgYSBiIGMgPSBlcXVhbCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgPSBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmNvbXBhcmF0b3JcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5mIH5pbml0IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG1lcmdlIGEgYiB+ZiA9IG1lcmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSA9IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgfmNvbXBhcmF0b3JcbiAgbGV0IG1pbl9lbHQgPSBtaW5fZWx0XG4gIGxldCBtaW5fZWx0X2V4biA9IG1pbl9lbHRfZXhuXG4gIGxldCBtYXhfZWx0ID0gbWF4X2VsdFxuICBsZXQgbWF4X2VsdF9leG4gPSBtYXhfZWx0X2V4blxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgc3BsaXQgYSBiID0gc3BsaXQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPSBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID0gcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmF0b3JcbiAgbGV0IGNsb3Nlc3Rfa2V5IGEgYiBjID0gY2xvc2VzdF9rZXkgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IG50aCA9IG50aFxuICBsZXQgbnRoX2V4biA9IG50aF9leG5cbiAgbGV0IHJhbmsgYSBiID0gcmFuayBhIGIgfmNvbXBhcmF0b3JcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvciB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvciB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgOztcblxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdFxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEtleV9TMSlcblxuICB0eXBlICsndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBtYXAgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3IgaW5cbiAgaWYgaW52YXJpYW50cyBtYXBcbiAgdGhlbiBtYXBcbiAgZWxzZSAoXG4gICAgKCogVGhlIGludmFyaWFudHMgYXJlIGJyb2tlbiwgYnV0IHdlIGNhbiBzdGlsbCB0cmF2ZXJzZSB0aGUgc3RydWN0dXJlLiAqKVxuICAgIG1hdGNoIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpOihpdGVyaSBtYXApIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBfa2V5IC0+IGZhaWx3aXRoIFwiTWFwLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIG1hcFwiKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDcmVhdG9ycyAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI3ZDdiMWEwLTQ5OTItMTFlNi04YTMyLWJiYjIyMWZhMDI1Y1wiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAoJ2ssICsndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gS2V5X2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IEtleV9iaW5hYmxlX2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IEtleV9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChLZXkgOiBLZXlfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlICd2IGVsID0gS2V5LnQgKiAndiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImRmYjMwMGY4LTQ5OTItMTFlNi05YzE1LTczYTJhYzZiODE1Y1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpLZXkuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIENyZWF0b3JzIChLZXlfUzEpXG5cbiAgdHlwZSBrZXkgPSBLZXkudFxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICd2IHQgPSAoa2V5LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXknIDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90ICh0eXBlIGEpIGhhc2hfZm9sZF9kYXRhIHN0YXRlICh0IDogYSB0KSA9XG4gICAgICBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgS2V5Jy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuXG4gIG1vZHVsZSBfID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlXG4gICAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1hcC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X2dlbmVyYXRvclxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEtleSkgS2V5LnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHZfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX29ic2VydmVyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X29ic2VydmVyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgS2V5LnF1aWNrY2hlY2tfb2JzZXJ2ZXIgdl9vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19zaHJpbmtlcl9tXG4gICAgICAgICAgd2l0aCB0eXBlIHQgPSBrXG4gICAgICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9zaHJpbmtlclxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEtleS5xdWlja2NoZWNrX3Nocmlua2VyIHZfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBNYXAuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoTWFwIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdClcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfaGFzaHRibF9leG4gPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG5cbiAgbGV0IGtleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZVxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IChrZXksICdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleSlcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLk1heWJlX2JvdW5kLnQgPVxuICAgICAgfCBJbmNsIG9mICdhXG4gICAgICB8IEV4Y2wgb2YgJ2FcbiAgICAgIHwgVW5ib3VuZGVkXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBJbmNsIHggLT4gSW5jbCAoZiB4KVxuICAgICAgfCBFeGNsIHggLT4gRXhjbCAoZiB4KVxuICAgICAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBCYXNlLk1heWJlX2JvdW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5WMS50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBxdWlja2NoZWNrLCBzZXhwXVxuXG5sZXQgY29tcGFyZV9vbmVfc2lkZWQgfnNpZGUgY29tcGFyZV9hIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBVbmJvdW5kZWQsIFVuYm91bmRlZCAtPiAwXG4gIHwgVW5ib3VuZGVkLCBfIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAtMVxuICAgICB8IGBVcHBlciAtPiAxKVxuICB8IF8sIFVuYm91bmRlZCAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gMVxuICAgICB8IGBVcHBlciAtPiAtMSlcbiAgfCBJbmNsIGExLCBJbmNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEV4Y2wgYTEsIEV4Y2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgSW5jbCBhMSwgRXhjbCBhMiAtPlxuICAgIGxldCBjID0gY29tcGFyZV9hIGExIGEyIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgIHwgYFVwcGVyIC0+IDEpXG4gICAgZWxzZSBjXG4gIHwgRXhjbCBhMSwgSW5jbCBhMiAtPlxuICAgIGxldCBjID0gY29tcGFyZV9hIGExIGEyIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgICAgfCBgTG93ZXIgLT4gMVxuICAgICAgfCBgVXBwZXIgLT4gLTEpXG4gICAgZWxzZSBjXG47O1xuXG5tb2R1bGUgQXNfbG93ZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgTG93ZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcblxubW9kdWxlIEFzX3VwcGVyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YFVwcGVyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shQ29yZS5TZXR9W1NldF19LiBTZWUgdGhlXG4gICAgeyFNYXB9IGRvY3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezAsMSwyLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW1NldF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMyXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cbigqXG4gICBDUnMgYW5kIGNvbW1lbnRzIGFib3V0IFtTZXRdIGZ1bmN0aW9ucyBkbyBub3QgYmVsb25nIGluIHRoaXMgZmlsZS4gIFRoZXkgYmVsb25nIG5leHRcbiAgIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBzZXQubWxpLlxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcbm1vZHVsZSBTZXQgPSBCYXNlLlNldFxubW9kdWxlIFRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5tb2R1bGUgTmFtZWQgPSBTZXQuTmFtZWRcbm1vZHVsZSBDb250YWluZXIgPSBCYXNlLkNvbnRhaW5lclxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBTZXQuRWx0X3BsYWluXG5cbm1vZHVsZSB0eXBlIEVsdCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLlNldC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLlNldC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2IpIEVsdF9iaW5faW8udFxuICAgIC0+IChpbnQgLT4gKCdhLCAnYikgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZVxuICAgICAgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFNldC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBTZXQuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwgdG9fbWFwXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGY6KCdhIGVsdCAtPiAnYikgLT4gKCdhIGVsdCwgJ2IsICdjbXAgY21wKSBCYXNlLk1hcC50IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2EgZWx0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICdhIGVsdCBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczBcblxuICB2YWwgdG9fbWFwIDogdCAtPiBmOihlbHQgLT4gJ2RhdGEpIC0+IChlbHQsICdkYXRhLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMVxuXG4gIHZhbCB0b19tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gJ2EgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiAnYSBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gJ2EgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczJcblxuICB2YWwgdG9fbWFwIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSBCYXNlLk1hcC50XG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogJ2EgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiAnYSBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIHRvX21hcFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSBCYXNlLk1hcC50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChOYW1lZCA6IFQyKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMwIChNIDogQWNjZXNzb3JzMCkgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczEgKE0gOiBBY2Nlc3NvcnMxKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMiAoTSA6IEFjY2Vzc29yczIpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAoJ2EsICdjbXAsICdhIGVsdCBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCAnY21wLCAoJ2EgZWx0LCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtNYXAudF0uICopXG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSBlbHQsIF8sICdjbXAgY21wKSBCYXNlLk1hcC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICdhIGVsdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczBcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiBlbHQgSGFzaF9zZXQudCAtPiB0XG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoZWx0LCBfKSBIYXNodGJsLnQgLT4gdFxuICB2YWwgb2ZfbWFwX2tleXMgOiAoZWx0LCBfLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnQgLT4gdFxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnMxXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogJ2EgSGFzaF9zZXQudCAtPiAnYSB0XG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsIF8pIEhhc2h0YmwudCAtPiAnYSB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLk1hcC50IC0+ICdhIHRcbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAnYSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnMyXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogJ2EgSGFzaF9zZXQudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgXykgSGFzaHRibC50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EsIF8sICdjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9oYXNodGJsX2tleXNcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBIYXNodGJsLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EsIF8sICdjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFQudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMwIChNIDogQ3JlYXRvcnMwKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmVsdFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSAnY21wXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMwXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSB0cmVlXG4gICAgd2l0aCB0eXBlIGVsdCA6PSBlbHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEVsdCA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS5OYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSB0cmVlIDo9IHRcbiAgICAgIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcbiAgICAgIHdpdGggdHlwZSBuYW1lZCA6PSBuYW1lZFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIEJhc2UuU2V0LnRcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgd2l0aCB0eXBlIHRyZWUgOj0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG4gICAgd2l0aCB0eXBlIG5hbWVkIDo9IG5hbWVkXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxub3BlbiBTZXRfaW50ZlxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50XG5tb2R1bGUgTmFtZWQgPSBOYW1lZFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEVsdFxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBFbHRfYmluYWJsZVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGVsdF9nZW5cbiAgOztcblxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90IGVsdF9vYnNcbiAgbGV0IG9ic190cmVlIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3RyZWUgZWx0X29ic1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHRfc2hyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90IGVsdF9zaHJcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3IgZWx0X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBtIGVsdF9nZW4gPVxuICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBlbHRfZ2VuXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdG9fbWFwIH5jb21wYXJhdG9yIHQgPSBNYXAub2Zfa2V5X3NldCAoU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB0IH5jb21wYXJhdG9yKVxuICBsZXQgb2ZfbWFwX2tleXMgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWUgKE1hcC5rZXlfc2V0IG0pXG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIEhhc2hfc2V0LmZvbGQgaHNldCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBIYXNodGJsLmZvbGQgaGFzaHRibCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gfmtleTp4IH5kYXRhOl8gdCAtPlxuICAgICAgYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWVcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIFNldC5BY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgU2V0Lk5hbWVkLnQpXG5cbiAgbGV0IHRvX21hcCA9IE1hcC5vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gcXVpY2tjaGVja19vYnNlcnZlclxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IHF1aWNrY2hlY2tfc2hyaW5rZXJcbmVuZFxuXG50eXBlICdhIGNtcCA9ICdhXG50eXBlICdhIGVsdCA9ICdhXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgU2V0XG5cbiAgbGV0IG9mX3RyZWUgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gIGxldCBzZXhwX29mX3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3RcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU2V0LkNyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcblxuICBpbmNsdWRlXG4gICAgU2V0LkFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIFNldC5OYW1lZC50XG4gICAgd2l0aCBtb2R1bGUgTmFtZWQgOj0gTmFtZWRcbmVuZClcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBTZXQuVXNpbmdfY29tcGFyYXRvclxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFRyZWUgOj0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZSlcblxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNoX3NldCBoc2V0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNodGJsX2tleXMgaGFzaHRibCB+Y29tcGFyYXRvcilcbiAgOztcbmVuZFxuXG5sZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbmxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBvZl9oYXNoX3NldCBtIGhzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2hfc2V0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhzZXRcblxubGV0IG9mX2hhc2h0Ymxfa2V5cyBtIGhhc2h0YmwgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoYXNodGJsXG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2EgY21wXyA9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgdF9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhIEVsdC50KSAtPiBCYXNlLlNleHAudCAtPiAoJ2EsICdjb21wYXJhdG9yKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wX1xuZW5kID0gc3RydWN0XG4gIG9wZW4gVXNpbmdfY29tcGFyYXRvclxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2NtcCBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdClcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBzaW5nbGV0b24gZSA9IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCB1bmlvbl9saXN0IGwgPSB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX2xpc3QgbCA9IG9mX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9hcnJheSBhID0gb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4c1xuICBsZXQgbWFwIHQgfmYgPSBtYXAgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZSAoVHJlZS50X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IFRyZWUuZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIGUgPSBUcmVlLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlLmludmFyaWFudHMgdCB+Y29tcGFyYXRvclxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlLmxlbmd0aCB0XG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZS5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZS5lbGVtZW50cyB0XG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZS5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZS5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZS5jaG9vc2VfZXhuIHRcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZS50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlLml0ZXIgdCB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZS5pdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZS5leGlzdHMgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZS5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlLnN1bSBtIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZS5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZS5maW5kX21hcCB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZS5mb2xkX3VudGlsIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IG1hcCB0IH5mID0gVHJlZS5tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlLmZpbHRlciB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBUcmVlLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBUcmVlLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtZW0gdCBhID0gVHJlZS5tZW0gdCBhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgdCBhID0gVHJlZS5hZGQgdCBhIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmUgdCBhID0gVHJlZS5yZW1vdmUgdCBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbiB0MSB0MiA9IFRyZWUudW5pb24gdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGludGVyIHQxIHQyID0gVHJlZS5pbnRlciB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgZGlmZiB0MSB0MiA9IFRyZWUuZGlmZiB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgPSBUcmVlLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUuY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDJcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyYXRvclxuICBsZXQgYXJlX2Rpc2pvaW50IHQxIHQyID0gVHJlZS5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3QgbCA9IFRyZWUub2ZfbGlzdCBsIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gVHJlZS5vZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNoX3NldCBoID0gVHJlZS5vZl9oYXNoX3NldCBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IFRyZWUub2ZfaGFzaHRibF9rZXlzIGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FycmF5IGEgPSBUcmVlLm9mX2FycmF5IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IFRyZWUub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFRyZWUub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFRyZWUub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IFRyZWUudW5pb25fbGlzdCBsIH5jb21wYXJhdG9yXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IFRyZWUuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmF0b3JcbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID0gVHJlZS5ncm91cF9ieSB0IH5lcXVpdiB+Y29tcGFyYXRvclxuICBsZXQgc3BsaXQgdCBhID0gVHJlZS5zcGxpdCB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG50aCB0IGkgPSBUcmVlLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBUcmVlLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUudG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZS5iaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUubWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBUcmVlLm9mX21hcF9rZXlzXG4gIGxldCB0b19tYXAgdCB+ZiA9IFRyZWUudG9fbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUuTmFtZWQuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyYXRvclxuICAgIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUuTmFtZWQuZXF1YWwgdDEgdDIgfmNvbXBhcmF0b3JcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIGVsdCB+Y29tcGFyYXRvclxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHQgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBlbHRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgZWx0ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgZWx0IH5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEVsdF9TMSlcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IFRyZWUuc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgWC50X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpFbHRfUzEuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiBpblxuICBpZiBpbnZhcmlhbnRzIHNldFxuICB0aGVuIHNldFxuICBlbHNlXG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKGZvbGQgc2V0IH5pbml0OihUcmVlLmVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICAgICAgIGlmIFRyZWUubWVtIGFjYyBlbHQgfmNvbXBhcmF0b3JcbiAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXQuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCJcbiAgICAgICAgIGVsc2UgVHJlZS5hZGQgYWNjIGVsdCB+Y29tcGFyYXRvcikpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gQ29tcGFyYXRvci5Qb2x5XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdClcblxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgJ2EgbmFtZWQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBbJXNleHBfb2Y6IF9dIHRcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg4YmNjNDc4LTQ5OTItMTFlNi1hOTVkLWZmNDgzMWFjZjQxMFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgfmY6KGZ1biBrZXkgLT4gZiBrZXkpIHRcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG4gICAgdHlwZSAnYSBuYW1lZCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS5OYW1lZC50XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBUcmVlLnNleHBfb2ZfdCBzZXhwX29mX2VsdCBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgZWx0X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgRWx0X2Jpbl9pbyA9IEVsdF9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChFbHQgOiBFbHRfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODk4OTI3OGUtNDk5Mi0xMWU2LThmNGEtNmI4OTc3NmIxZTUzXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgfmY6KGZ1biBrZXkgLT4gZiBrZXkpIHRcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6RWx0LmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0ID0gRWx0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0X1MxKVxuXG4gIHR5cGUgKCdhLCAnYikgc2V0ID0gKCdhLCAnYikgdFxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHNldFxuICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBOYW1lZC50XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBFbHQudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlIHRcblxuICAgIGxldCBoYXNoIHQgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChoYXNoX2ZvbGRfdCAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSkgdClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoRWx0IDogRWx0X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKEVsdCA6IEVsdCkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IFNldC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEVsdCkgRWx0LnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX29ic2VydmVyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEVsdC5xdWlja2NoZWNrX29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX3Nocmlua2VyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEVsdC5xdWlja2NoZWNrX3Nocmlua2VyXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gU2V0LkZvcl9kZXJpdmluZ1xuXG4gIGluY2x1ZGUgKFNldCA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID0gKCdhLCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGVsdFxuICAgICAgdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gKGVsdCwgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgbW9kdWxlIE1ha2UgKEVsdCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcbm1vZHVsZSBJbmZpeCA9IEJhc2UuQ29tcGFyYWJsZS5JbmZpeFxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNvbXBhcmFibGUuUG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVmFsaWRhdGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA6IFZhbGlkYXRlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgViA9IFZhbGlkYXRlXG4gIG9wZW4gTWF5YmVfYm91bmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBCYXNlLlNleHAudG9fc3RyaW5nIChULnNleHBfb2ZfdCB0KVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVi5ib3VuZGVkIH5uYW1lOnRvX3N0cmluZyB+bG93ZXI6bWluIH51cHBlcjptYXggfmNvbXBhcmU6VC5jb21wYXJlIHRcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heDpVbmJvdW5kZWQgdFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9IHZhbGlkYXRlX2JvdW5kIH5tYXggfm1pbjpVbmJvdW5kZWQgdFxuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgViA9IFZhbGlkYXRlIChUKVxuICBpbmNsdWRlIFZcblxuICAoKiBQcmVhbGxvY2F0ZSB0aGUgaW50ZXJlc3RpbmcgYm91bmRzIHRvIG1pbmltaXplIGFsbG9jYXRpb24gaW4gdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbdmFsaWRhdGVfKl0uICopXG4gIGxldCBleGNsX3plcm8gPSBNYXliZV9ib3VuZC5FeGNsIFQuemVyb1xuICBsZXQgaW5jbF96ZXJvID0gTWF5YmVfYm91bmQuSW5jbCBULnplcm9cbiAgbGV0IHZhbGlkYXRlX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV9sYm91bmQgfm1pbjpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV9sYm91bmQgfm1pbjppbmNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbmVnYXRpdmUgdCA9IHZhbGlkYXRlX3Vib3VuZCB+bWF4OmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fcG9zaXRpdmUgdCA9IHZhbGlkYXRlX3Vib3VuZCB+bWF4OmluY2xfemVybyB0XG5lbmRcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5XaXRoX3plcm8gKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG4gIE1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5Qb2x5IChUKVxuICBlbmRcblxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoQylcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IENcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpID1cbiAgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGVuZClcblxuICBpbmNsdWRlIE1cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEV4dGVuZF9iaW5hYmxlXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbmluY2x1ZGUgKEJhc2UuQ29tcGFyYWJsZSA6IFdpdGhfY29tcGFyZSlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNvbXBhcmFibGVcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIG1vZHVsZSBNYXAgOlxuICAgICAgICBNYXAuU3RhYmxlLlYxLlNcbiAgICAgICAgd2l0aCB0eXBlIGtleSA6PSBjb21wYXJhYmxlXG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICBTZXQuU3RhYmxlLlYxLlNcbiAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgIHdpdGggdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE1hcCA9IE1hcC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICAgIG1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJpbmNsdWRlIExpc3QwICgqKiBAaW5saW5lICopXG5cbigqKiBbc3RhYmxlX2RlZHVwXSBTYW1lIGFzIFtkZWR1cF0gYnV0IG1haW50YWlucyB0aGUgb3JkZXIgb2YgdGhlIGxpc3QgYW5kIGRvZXNuJ3QgYWxsb3dcbiAgICBjb21wYXJlIGZ1bmN0aW9uIHRvIGJlIHNwZWNpZmllZCAob3RoZXJ3aXNlLCB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGVybXMgb2YgU2V0LnRcbiAgICB3b3VsZCBoaWRlIGEgaGVhdnl3ZWlnaHQgZnVuY3RvciBpbnN0YW50aWF0aW9uIGF0IGVhY2ggY2FsbCkuICopXG5sZXQgc3RhYmxlX2RlZHVwID0gU2V0LlBvbHkuc3RhYmxlX2RlZHVwX2xpc3RcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBzdGFnZWQgdG8gaW5kaWNhdGUgdGhhdCByZWFsIHdvcmsgKHRoZSBmdW5jdG9yIGFwcGxpY2F0aW9uKSB0YWtlc1xuICAgcGxhY2UgYWZ0ZXIgYSBwYXJ0aWFsIGFwcGxpY2F0aW9uLiAqKVxubGV0IHN0YWJsZV9kZWR1cF9zdGFnZWQgKHR5cGUgYSkgfihjb21wYXJlIDogYSAtPiBhIC0+IGludClcbiAgOiAoYSBsaXN0IC0+IGEgbGlzdCkgQmFzZS5TdGFnZWQudFxuICA9XG4gIGxldCBtb2R1bGUgU2V0ID1cbiAgICBTZXQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gICAgICAoKiBbc3RhYmxlX2RlZHVwX2xpc3RdIG5ldmVyIGNhbGxzIHRoZXNlICopXG4gICAgICBsZXQgdF9vZl9zZXhwIF8gPSBhc3NlcnQgZmFsc2VcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IGFzc2VydCBmYWxzZVxuICAgIGVuZClcbiAgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgU2V0LnN0YWJsZV9kZWR1cF9saXN0XG47O1xuXG5sZXQgemlwX3dpdGhfcmVtYWluZGVyID1cbiAgbGV0IHJlYyB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciBhY2MgeHMgeXMgPVxuICAgIG1hdGNoIHhzLCB5cyB3aXRoXG4gICAgfCBbXSwgW10gLT4gcmV2IGFjYywgTm9uZVxuICAgIHwgZnN0LCBbXSAtPiByZXYgYWNjLCBTb21lIChFaXRoZXIuRmlyc3QgZnN0KVxuICAgIHwgW10sIHNuZCAtPiByZXYgYWNjLCBTb21lIChFaXRoZXIuU2Vjb25kIHNuZClcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgKCh4LCB5KSA6OiBhY2MpIHhzIHlzXG4gIGluXG4gIGZ1biB4cyB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciBbXSB4cyB5c1xuOztcblxudHlwZSBzZXhwX3RodW5rID0gdW5pdCAtPiBCYXNlLlNleHAudFxuXG5sZXQgc2V4cF9vZl9zZXhwX3RodW5rIHggPSB4ICgpXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGVfZm91bmQgb2Ygc2V4cF90aHVuayAqIEJhc2UuU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9pZl9kdXAgfmNvbXBhcmUgPyhjb250ZXh0ID0gXCJleG5faWZfZHVwXCIpIHQgfnRvX3NleHAgPVxuICBtYXRjaCBmaW5kX2FfZHVwIH5jb21wYXJlIHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGR1cCAtPiByYWlzZSAoRHVwbGljYXRlX2ZvdW5kICgoZnVuICgpIC0+IHRvX3NleHAgZHVwKSwgY29udGV4dCkpXG47O1xuXG5sZXQgc2xpY2UgYSBzdGFydCBzdG9wID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIGEgc3RhcnQgc3RvcFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25cblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5ub25lIH5zb21lIHQgPVxuICBsZXQgbW9kdWxlIFYgPSBWYWxpZGF0ZSBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFYubmFtZSBcIm5vbmVcIiAoVi5wcm90ZWN0IG5vbmUgKCkpXG4gIHwgU29tZSB4IC0+IFYubmFtZSBcInNvbWVcIiAoVi5wcm90ZWN0IHNvbWUgeClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub3B0aW9uXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vcHRpb25cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm9wdGlvblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuXG4gICAgKCogW3Vuc2FmZV92YWx1ZV0gaXMgb25seSBzYWZlIHRvIGNhbGwgd2hlbiBbaXNfbm9uZV0gcmV0dXJucyBbZmFsc2VdLiBUbyBhdm9pZFxuICAgICAgIHJlcGVhdGluZyB0aGUgW2lzX25vbmVdIGNoZWNrLCB3ZSBkZWNsYXJlIFtVbmNoZWNrZWRfc29tZV0uIFtVbmNoZWNrZWRfc29tZSB4XVxuICAgICAgIGhhcyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBhcyBbU29tZSB4XSwgYnV0IHRoZSB0eXBlIGhhcyBubyBbTm9uZV0gY2xhdXNlLlxuXG4gICAgICAgV2UgbWFrZSBzdXJlIGFsbCB0aGlzIHdvcmtzIHdpdGggdGVzdHMgb2YgW3Vuc2FmZV92YWx1ZV0gaW4gdGVzdF9vcHRpb24ubWwuXG5cbiAgICAgICBXZSB0cmllZCB1c2luZyBbT2JqLmZpZWxkXSBpbnN0ZWFkLiBJdCBnZW5lcmF0ZXMgbXVjaCB3b3JzZSBuYXRpdmUgY29kZSBkdWUgdG9cbiAgICAgICBmbG9hdCBhcnJheSByZXByZXNlbnRhdGlvbnMuICopXG5cbiAgICBtb2R1bGUgVW5jaGVja2VkX3NvbWUgPSBzdHJ1Y3RcbiAgICAgICgqIFdhcm5pbmcgMzcgdGVsbHMgdXMgW1VuY2hlY2tlZF9zb21lXSBpcyBuZXZlciB1c2VkIGFzIGEgY29uc3RydWN0b3IuIFRoaXMgaXNcbiAgICAgICAgIGludGVudGlvbmFsLCBzbyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAqKVxuICAgICAgdHlwZSAnYSB0ID0gVW5jaGVja2VkX3NvbWUgb2YgJ2EgW0BAb2NhbWwuYm94ZWRdIFtAQG9jYW1sLndhcm5pbmcgXCItMzdcIl1cbiAgICBlbmRcblxuICAgIGxldCB1bnNhZmVfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIDogYSA9XG4gICAgICBsZXQgKFVuY2hlY2tlZF9zb21lIHZhbHVlKSA9IChPYmoubWFnaWMgdCA6IGEgVW5jaGVja2VkX3NvbWUudCkgaW5cbiAgICAgIHZhbHVlXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgTUx0b24gbGlicmFyeSBzZXQvZGlzam9pbnQuZnVuLCB3aGljaCBoYXMgdGhlXG4gICBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZS5cbiopXG4oKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBIZW5yeSBDZWp0aW4sIE1hdHRoZXcgRmx1ZXQsIFN1cmVzaFxuICogICAgSmFnYW5uYXRoYW4sIGFuZCBTdGVwaGVuIFdlZWtzLlxuICpcbiAqIE1MdG9uIGlzIHJlbGVhc2VkIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UuXG4gKiBTZWUgdGhlIGZpbGUgTUx0b24tTElDRU5TRSBmb3IgZGV0YWlscy5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG4oKlxuICAge3ZcbiAgICAgICAgICAgUm9vdFxuICAgICAgICAgICAgIHxcbiAgICAgICAgICAgSW5uZXJcbiAgICAgICAgLyAuLiB8IC4uIFxcXG4gICAgIElubmVyIElubmVyIElubmVyXG4gICAgICAvfFxcICAgL3xcXCAgIC98XFxcbiAgICAgIC4uLiAgIC4uLiAgIC4uLlxuICAgdn1cblxuICAgV2UgY29uc3RydWN0IHRoZSBgaW52ZXJ0ZWQnIHRyZWUgaW4gdGhlIE1MIHJlcHJlc2VudGF0aW9uLlxuICAgVGhlIGRpcmVjdGlvbiBvZiB0aGUgZWRnZXMgaXMgVVBXQVJEUy5cbiAgIFN0YXJ0aW5nIHdpdGggYW55IFsnYSB0XSB3ZSBjYW4gc3RlcCBkaXJlY3RseSB0byBpdHMgcGFyZW50LlxuICAgQnV0IHdlIGNhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykgc3RhcnQgZnJvbSB0aGUgcm9vdCBhbmQgc3RlcCB0byBpdHMgY2hpbGRyZW4uXG4qKVxuXG4oKlxuICAgW3JhbmtdIGlzIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBkZXB0aCBvZiBhbnkgbm9kZSBpbiB0aGUgdXAtdHJlZS5cblxuICAgSW1hZ2luZSBhbiB1bmx1Y2t5IHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgaW4gd2hpY2ggeW91IGNyZWF0ZSBOXG4gICBpbmRpdmlkdWFsIFt0XS12YWx1ZXMgYW5kIHRoZW4gdW5pb24gdGhlbSB0b2dldGhlciBpbiBzdWNoIGEgd2F5XG4gICB0aGF0IHlvdSBhbHdheXMgcGljayB0aGUgcm9vdCBvZiBlYWNoIHRyZWUgdG8gdW5pb24gdG9nZXRoZXIsIHNvIHRoYXRcbiAgIG5vIHBhdGggY29tcHJlc3Npb24gdGFrZXMgcGxhY2UuICBJZiB5b3UgZG9uJ3QgdGFrZSBjYXJlIHRvIHNvbWVob3dcbiAgIGJhbGFuY2UgdGhlIHJlc3VsdGluZyB1cC10cmVlLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBlbmQgdXAgd2l0aCBvbmVcbiAgIGJpZyBsb25nIGNoYWluIG9mIE4gbGlua3MsIGFuZCB0aGVuIGNhbGxpbmcgW3JlcHJlc2VudGF0aXZlXSBvbiB0aGVcbiAgIGRlZXBlc3Qgbm9kZSB0YWtlcyBUaGV0YShOKSB0aW1lLiAgV2l0aCB0aGUgYmFsYW5jaW5nIHNjaGVtZSBvZiBuZXZlclxuICAgaW5jcmVhc2luZyB0aGUgcmFuayBvZiBhIG5vZGUgdW5uZWNlc3NhcmlseSwgaXQgd291bGQgdGFrZSBPKGxvZyBOKS5cbiopXG50eXBlICdhIHJvb3QgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7IG11dGFibGUgcmFuayA6IGludFxuICB9XG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBub2RlIDogJ2Egbm9kZSB9XG5cbmFuZCAnYSBub2RlID1cbiAgfCBJbm5lciBvZiAnYSB0XG4gICgqIFtJbm5lciB4XSBpcyBhIG5vZGUgd2hvc2UgcGFyZW50IGlzIFt4XS4gKilcbiAgfCBSb290IG9mICdhIHJvb3RcblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCA9XG4gICAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgICB8IElubmVyIHQgLT4gbG9vcCB0IChkZXB0aCArIDEpXG4gICAgfCBSb290IHIgLT4gYXNzZXJ0IChkZXB0aCA8PSByLnJhbmspXG4gIGluXG4gIGxvb3AgdCAwXG47O1xuXG5sZXQgY3JlYXRlIHYgPSB7IG5vZGUgPSBSb290IHsgdmFsdWUgPSB2OyByYW5rID0gMCB9IH1cblxuKCogaW52YXJpYW50czpcbiAgIFtpbm5lci5ub2RlXSA9IFtpbm5lcl9ub2RlXSA9IFtJbm5lciB0XS5cbiAgIFtkZXNjZW5kYW50c10gYXJlIHRoZSBwcm9wZXIgZGVzY2VuZGFudHMgb2YgW2lubmVyXSB3ZSd2ZSB2aXNpdGVkLlxuKilcbmxldCByZWMgY29tcHJlc3MgdCB+aW5uZXJfbm9kZSB+aW5uZXIgfmRlc2NlbmRhbnRzID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiB0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgICAgIFJlLXBvaW50IGFsbCBkZXNjZW5kYW50cyBkaXJlY3RseSB0byBpdCBieSBzZXR0aW5nIHRoZW0gdG8gW0lubmVyIHRdLlxuICAgICAgIE5vdGU6IHdlIGRvbid0IHJlLXBvaW50IFtpbm5lcl0gYXMgaXQgYWxyZWFkeSBwb2ludHMgdGhlcmUuICopXG4gICAgTGlzdC5pdGVyIGRlc2NlbmRhbnRzIH5mOihmdW4gdCAtPiB0Lm5vZGUgPC0gaW5uZXJfbm9kZSk7XG4gICAgdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT5cbiAgICBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czooaW5uZXIgOjogZGVzY2VuZGFudHMpXG47O1xuXG5sZXQgcmVwcmVzZW50YXRpdmUgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+IHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+IGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOltdXG47O1xuXG5sZXQgcm9vdCB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiBhdm9pZCB0dXBsZSBhbGxvY2F0aW9uIGluIHRoZSBmYXN0IHBhdGggKilcbiAgICByXG4gIHwgXyAtPiBzbmQgKHJlcHJlc2VudGF0aXZlIHQpXG47O1xuXG5sZXQgcmFuayB0ID0gKHJvb3QgdCkucmFua1xubGV0IGdldCB0ID0gKHJvb3QgdCkudmFsdWVcbmxldCBzZXQgdCB2ID0gKHJvb3QgdCkudmFsdWUgPC0gdlxubGV0IHNhbWVfY2xhc3MgdDEgdDIgPSBwaHlzX2VxdWFsIChyb290IHQxKSAocm9vdCB0MilcblxubGV0IHVuaW9uIHQxIHQyID1cbiAgbGV0IHQxLCByMSA9IHJlcHJlc2VudGF0aXZlIHQxIGluXG4gIGxldCB0MiwgcjIgPSByZXByZXNlbnRhdGl2ZSB0MiBpblxuICBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gcjEucmFuayBpblxuICAgIGxldCBuMiA9IHIyLnJhbmsgaW5cbiAgICBpZiBuMSA8IG4yXG4gICAgdGhlbiB0MS5ub2RlIDwtIElubmVyIHQyXG4gICAgZWxzZSAoXG4gICAgICB0Mi5ub2RlIDwtIElubmVyIHQxO1xuICAgICAgaWYgbjEgPSBuMiB0aGVuIHIxLnJhbmsgPC0gcjEucmFuayArIDEpKVxuOztcblxubGV0IGlzX2NvbXByZXNzZWQgdCA9XG4gIGludmFyaWFudCBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IF8gLT4gdHJ1ZVxuICB8IElubmVyIHQgLT5cbiAgICAobWF0Y2ggdC5ub2RlIHdpdGhcbiAgICAgfCBSb290IF8gLT4gdHJ1ZVxuICAgICB8IElubmVyIF8gLT4gZmFsc2UpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaXNfY29tcHJlc3NlZCA9IGlzX2NvbXByZXNzZWRcbiAgbGV0IHJhbmsgPSByYW5rXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEb3VibHlfbGlua2VkX2ludGZcblxuKCogSU5WQVJJQU5UOiBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgYSBsaXN0IGlzIG11dGF0ZWQgZHVyaW5nIGEgcGVuZGluZyBpdGVyYXRpb24uXG5cbiAgIFRoaXMgaW52YXJpYW50IGlzIGd1YXJhbnRlZWQgYnkgdGhlIEhlYWRlciBhbmQgRWx0IG1vZHVsZXMgaW4gY29uanVuY3Rpb24uICBBbGxcbiAgIGRvd25zdHJlYW0gY29kZSBpbiB0aGlzIG1vZHVsZSBuZWVkIG5vdCBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIGludmFyaWFudC4gKilcbmV4Y2VwdGlvbiBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb25cblxubGV0IHBoeXNfZXF1YWwgPSAoID09IClcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaW5jcl9sZW5ndGggOiBieTppbnQgLT4gdCAtPiB1bml0XG4gIHZhbCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgOiB0IC0+IHVuaXRcblxuICAoKiBVbmZvcnR1bmF0ZSwgYnV0IGJ5IHNwZWNpYWxpemluZyBbd2l0aF9pdGVyYXRpb25dIGZvciBkaWZmZXJlbnQgYXJpdGllcywgYSBsYXJnZVxuICAgICBhbW91bnQgb2YgYWxsb2NhdGlvbiBkdXJpbmcgZm9sZHMgYW5kIGl0ZXJhdGlvbnMgaXMgYXZvaWRlZC5cblxuICAgICBUaGUgb3JpZ2luYWwgdHlwZSBvZiBbd2l0aF9pdGVyYXRpb25dIHdhc1xuICAgICBbdmFsIHdpdGhfaXRlcmF0aW9uIDogdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FdXG5cbiAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmICgpID0gZyB4IGluXG4gICAgICAgZiAoKVxuICAgICBdfVxuICAgICBhbmRcbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiB4ID0gZyB4IGluXG4gICAgICAgZiB4XG4gICAgIF19XG4gICAgIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGNhc2UgdGhlIGNsb3N1cmUgZm9yIFtmXSBjb250YWlucyBhIHBvaW50ZXIgdG8gW3hdLFxuICAgICBhbmQgaW4gdGhlIHNlY29uZCBjYXNlIGl0IGRvZXNuJ3QuIEEgY2xvc3VyZSB3aXRob3V0IHBvaW50ZXJzIHRvIGVuY2xvc2luZ1xuICAgICBlbnZpcm9ubWVudCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5ha2VkIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHdlIGRvbid0XG4gICAgIGFsbG9jYXRlIGF0IGFsbC5cblxuICAgICBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIG1ha2Ugc3VyZSBub3QgdG8gY2FsbCBbUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gLi4uKV1cbiAgICAgaW5zaWRlIFt3aXRoX2l0ZXJhdGlvbl0gYW5kIGRvIGFuIGV4cGxpY2l0IG1hdGNoIHN0YXRlbWVudCBpbnN0ZWFkLiAqKVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8yIDogdCAtPiAnYSAtPiAnYiAtPiAoJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8zIDogdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QpIC0+ICdkXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80IDogdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UpIC0+ICdlXG4gIHZhbCBtZXJnZSA6IHQgLT4gdCAtPiBbIGBTYW1lX2FscmVhZHkgfCBgTWVyZ2VkIF1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHMgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBlbmRpbmdfaXRlcmF0aW9ucyA6IGludFxuICAgIH1cblxuICB0eXBlIHQgPSBzIFVuaW9uX2ZpbmQudFxuXG4gIGxldCBjcmVhdGUgKCkgPSBVbmlvbl9maW5kLmNyZWF0ZSB7IGxlbmd0aCA9IDE7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgbGV0IGxlbmd0aCB0ID0gKFVuaW9uX2ZpbmQuZ2V0IHQpLmxlbmd0aFxuXG4gIGxldCB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGlmIHMucGVuZGluZ19pdGVyYXRpb25zID4gMCB0aGVuIHJhaXNlIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvbiBlbHNlIHNcbiAgOztcblxuICBsZXQgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGlnbm9yZSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IDogcylcbiAgOztcblxuICBsZXQgaW5jcl9sZW5ndGggfmJ5Om4gdCA9XG4gICAgbGV0IHMgPSB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgaW5cbiAgICBzLmxlbmd0aCA8LSBzLmxlbmd0aCArIG5cbiAgOztcblxuICAoKiBDYXJlIGlzIHRha2VuIG5vdCB0byBhbGxvY2F0ZSBpbiBbd2l0aF9pdGVyYXRpb25fKl0sIHNpbmNlIGl0IGlzIGNhbGxlZCBldmVyeSBzZWNvbmRcbiAgICAgYnkgW2V2ZXJ5X3NlY29uZF0gaW4gW3dyaXRlcjAubWxdICopXG5cbiAgbGV0IGluY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgKyAxXG4gIGxldCBkZWNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zIC0gMVxuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8yIHQgYSBiIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMyB0IGEgYiBjIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80IHQgYSBiIGMgZCBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIGQgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCBtZXJnZSAodDEgOiB0KSB0MiA9XG4gICAgaWYgVW5pb25fZmluZC5zYW1lX2NsYXNzIHQxIHQyXG4gICAgdGhlbiBgU2FtZV9hbHJlYWR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbjEgPSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSkubGVuZ3RoIGluXG4gICAgICBsZXQgbjIgPSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MikubGVuZ3RoIGluXG4gICAgICB3aXRoX2l0ZXJhdGlvbl80IHQxIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MiB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgICAgVW5pb25fZmluZC51bmlvbiB0MSB0MjtcbiAgICAgICAgICBVbmlvbl9maW5kLnNldCB0MSB7IGxlbmd0aCA9IG4xICsgbjI7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfSkpO1xuICAgICAgYE1lcmdlZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgRWx0IDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBoZWFkZXIgOiAnYSB0IC0+IEhlYWRlci50XG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBjcmVhdGUgOiAnYSAtPiAnYSB0XG4gIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5saW5rIDogJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9hZnRlciA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBpbnNlcnRfYWZ0ZXIgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIGluc2VydF9iZWZvcmUgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHVubGlua19iZWZvcmUgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG5leHQgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHByZXYgOiAnYSB0IC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHByZXYgOiAnYSB0XG4gICAgOyBtdXRhYmxlIG5leHQgOiAnYSB0XG4gICAgOyBtdXRhYmxlIGhlYWRlciA6IEhlYWRlci50XG4gICAgfVxuXG4gIGxldCBlcXVhbCA9IHBoeXNfZXF1YWxcbiAgbGV0IG5leHQgdCA9IHQubmV4dFxuICBsZXQgcHJldiB0ID0gdC5wcmV2XG4gIGxldCBoZWFkZXIgdCA9IHQuaGVhZGVyXG5cbiAgbGV0IGNyZWF0ZV9hdXggdiBoZWFkZXIgPVxuICAgIGxldCByZWMgdCA9IHsgdmFsdWUgPSB2OyBwcmV2ID0gdDsgbmV4dCA9IHQ7IGhlYWRlciB9IGluXG4gICAgdFxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IGVxdWFsIHQgdC5wcmV2XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2EgdC52YWx1ZVxuICBsZXQgY3JlYXRlIHYgPSBjcmVhdGVfYXV4IHYgKEhlYWRlci5jcmVhdGUgKCkpXG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICBsZXQgc2V0IHQgdiA9IHQudmFsdWUgPC0gdlxuXG4gICgqXG4gICAgIFtzcGxpdF9vcl9zcGxpY2VdIGlzIHN1ZmZpY2llbnQgYXMgdGhlIGxvbmUgcHJpbWl0aXZlIGZvclxuICAgICBhY2NvbXBsaXNoaW5nIGFsbCBwb2ludGVyIHVwZGF0ZXMgb24gY3ljbGljIGxvb3BzIG9mIGxpc3Qgbm9kZXMuXG4gICAgIEl0IHRha2VzIHR3byBcImdhcHNcIiBiZXR3ZWVuIGFkamFjZW50IGxpbmtlZCBsaXN0IG5vZGVzLiAgSWYgdGhlIGdhcHNcbiAgICAgcG9pbnQgaW50byB0aGUgc2FtZSBsaXN0LCB0aGUgcmVzdWx0IGlzIHRoYXQgaXQgd2lsbCBiZSBzcGxpdCBpbnRvXG4gICAgIHR3byBsaXN0cyBhZnRlcndhcmRzLiAgSWYgdGhlIGdhcHMgcG9pbnQgaW50byBkaWZmZXJlbnQgbGlzdHMsIHRoZVxuICAgICByZXN1bHQgaXMgdGhhdCB0aGV5IHdpbGwgYmUgc3BsaWNlZCB0b2dldGhlciBpbnRvIG9uZSBsaXN0IGFmdGVyd2FyZHMuXG5cbiAgICAge3ZcbiAgICAgICBCZWZvcmUgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXJcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQSB8ICA8LS0+ICB8IEIgICAgICAgICAgICAgICBBIHwgIDwtLS0gICAtLS0+ICB8IEJcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICBcXCAvICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAvIFxcICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEMgfCAgPC0tPiAgfCBEICAgICAgICAgICAgICAgQyB8ICA8LS0tICAgLS0tPiAgfCBEXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgIHZ9ICopXG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2UgfnByZXYxOmEgfm5leHQxOmIgfnByZXYyOmMgfm5leHQyOmQgPVxuICAgIGEubmV4dCA8LSBkO1xuICAgIGQucHJldiA8LSBhO1xuICAgIGMubmV4dCA8LSBiO1xuICAgIGIucHJldiA8LSBjXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5uZXh0MTp0MS5uZXh0XG4gICAgICB+cHJldjE6dDEubmV4dC5wcmV2XG4gICAgICB+bmV4dDI6dDIubmV4dFxuICAgICAgfnByZXYyOnQyLm5leHQucHJldlxuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfnByZXYxOnQxLnByZXZcbiAgICAgIH5uZXh0MTp0MS5wcmV2Lm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5wcmV2XG4gICAgICB+bmV4dDI6dDIucHJldi5uZXh0XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDIgPVxuICAgIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEuaGVhZGVyO1xuICAgIGlmIG5vdCAoSGVhZGVyLmVxdWFsIHQxLmhlYWRlciB0Mi5oZWFkZXIpXG4gICAgdGhlbiBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyLmhlYWRlclxuICA7O1xuXG4gICgqIFdlIHJlZGVmaW5lIHNhZmUgdmVyc2lvbnMgZm9yIGV4cG9ydCAqKVxuICBsZXQgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDJcbiAgOztcblxuICBsZXQgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MlxuICA7O1xuXG4gIGxldCBpbnNlcnRfYmVmb3JlIHQgdiA9XG4gICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieToxO1xuICAgIGxldCBub2RlID0gY3JlYXRlX2F1eCB2IHQuaGVhZGVyIGluXG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgdiA9XG4gICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieToxO1xuICAgIGxldCBub2RlID0gY3JlYXRlX2F1eCB2IHQuaGVhZGVyIGluXG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBkdW1teV9oZWFkZXIgPSBIZWFkZXIuY3JlYXRlICgpXG5cbiAgbGV0IHVubGlua19iZWZvcmUgdCA9XG4gICAgbGV0IG5vZGUgPSB0LnByZXYgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdCBub2RlO1xuICAgICAgbm9kZS5oZWFkZXIgPC0gZHVtbXlfaGVhZGVyO1xuICAgICAgbm9kZSlcbiAgOztcblxuICBsZXQgdW5saW5rX2FmdGVyIHQgPVxuICAgIGxldCBub2RlID0gdC5uZXh0IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgICAgbm9kZS5oZWFkZXIgPC0gZHVtbXlfaGVhZGVyO1xuICAgICAgbm9kZSlcbiAgOztcblxuICBsZXQgdW5saW5rIHQgPSBpZ25vcmUgKHVubGlua19hZnRlciB0LnByZXYgOiBfIHQpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgRWx0LnQgb3B0aW9uIHJlZlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaGVhZCAtPlxuICAgIGxldCBoZWFkZXIgPSBFbHQuaGVhZGVyIGhlYWQgaW5cbiAgICBsZXQgcmVjIGxvb3AgbiBlbHQgPVxuICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICBsZXQgcHJldl9lbHQgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgIGFzc2VydCAoRWx0LmVxdWFsIGVsdCAoRWx0LnByZXYgbmV4dF9lbHQpKTtcbiAgICAgIGFzc2VydCAoRWx0LmVxdWFsIGVsdCAoRWx0Lm5leHQgcHJldl9lbHQpKTtcbiAgICAgIGFzc2VydCAoSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGVsdCkgaGVhZGVyKTtcbiAgICAgIGludmFyaWFudF9hIChFbHQudmFsdWUgZWx0KTtcbiAgICAgIGlmIEVsdC5lcXVhbCBuZXh0X2VsdCBoZWFkIHRoZW4gbiBlbHNlIGxvb3AgKG4gKyAxKSBuZXh0X2VsdFxuICAgIGluXG4gICAgbGV0IGxlbiA9IGxvb3AgMSBoZWFkIGluXG4gICAgYXNzZXJ0IChsZW4gPSBIZWFkZXIubGVuZ3RoIGhlYWRlcilcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSByZWYgTm9uZVxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gY3JlYXRlICgpXG4gIHwgeCA6OiB4cyAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgeCBpblxuICAgIGxldCBfbGFzdCA9IExpc3QuZm9sZCB4cyB+aW5pdDpmaXJzdCB+ZjpFbHQuaW5zZXJ0X2FmdGVyIGluXG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG9mX2FycmF5ID0gZnVuY3Rpb25cbiAgfCBbfHxdIC0+IGNyZWF0ZSAoKVxuICB8IGFyciAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgYXJyLigwKSBpblxuICAgIGxldCByZWMgbG9vcCBhcnIgZWx0IGkgPVxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBsb29wIGFyciAoRWx0Lmluc2VydF9hZnRlciBlbHQgYXJyLihpKSkgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBhcnIgZmlyc3QgMTtcbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIDAgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiBpIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgMSBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGEgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGEgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGl0ZXJfZWx0IHQgfmYgPSBmb2xkX2VsdF8xIHQgfmluaXQ6KCkgfmY6KGZ1biBmICgpIGVsdCAtPiBmIGVsdCkgZlxubGV0IGl0ZXJpX2VsdCB0IH5mID0gZm9sZGlfZWx0IHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIGVsdCAtPiBmIGkgZWx0KVxuXG5vcGVuIFdpdGhfcmV0dXJuXG5cbmxldCBmaW5kX2VsdCB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgZm9sZF9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBmICgpIGVsdCAtPlxuICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSBlbHQpKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmRpX2VsdCB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgZm9sZGlfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gaSBmICgpIGVsdCAtPlxuICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIChpLCBlbHQpKSk7XG4gICAgTm9uZSlcbjs7XG5cbigqIHRoaXMgZnVuY3Rpb24gaXMgbGFtYmRhIGxpZnRlZCBmb3IgcGVyZm9ybWFuY2UsIHRvIG1ha2UgZGlyZWN0IHJlY3Vyc2l2ZSBjYWxscyBpbnN0ZWFkXG4gICBvZiBjYWxscyB0aHJvdWdoIGl0cyBjbG9zdXJlLiBJdCBhbHNvIGF2b2lkcyB0aGUgaW5pdGlhbCBjbG9zdXJlIGFsbG9jYXRpb24uICopXG5sZXQgcmVjIGl0ZXJfbG9vcCBmaXJzdCBmIGVsdCA9XG4gIGYgKEVsdC52YWx1ZSBlbHQpO1xuICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBpdGVyX2xvb3AgZmlyc3QgZiBuZXh0XG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzIgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyX2xvb3AgZmlyc3QgZiBmaXJzdClcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5sZW5ndGggKEVsdC5oZWFkZXIgZmlyc3QpXG47O1xuXG5sZXQgcmVjIGl0ZXJpX2xvb3AgZmlyc3QgZiBpIGVsdCA9XG4gIGYgaSAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJpX2xvb3AgZmlyc3QgZiAoaSArIDEpIG5leHRcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzIgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyaV9sb29wIGZpcnN0IGYgMCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgZm9sZGlfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gaSBmIGFjYyBlbHQgLT4gZiBpIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gZiBhY2MgZWx0IC0+IGYgYWNjIChFbHQudmFsdWUgZWx0KSlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGQgPSBDLmZvbGRcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWVtID0gQy5tZW1cbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IHVuY2hlY2tlZF9pdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBmIGVsdCA9XG4gICAgICBmIChFbHQudmFsdWUgZWx0KTtcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAoKiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYmFnIG1heSBoYXZlIGJlZW4gY2hhbmdlZCBieSBbZl0gKilcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGZpcnN0IC0+IGlmIG5vdCAocGh5c19lcXVhbCBmaXJzdCBuZXh0KSB0aGVuIGxvb3AgdCBmIG5leHRcbiAgICBpblxuICAgIGxvb3AgdCBmIGZpcnN0XG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IE9wdGlvbi5pc19ub25lICF0XG5cbigqIG1vcmUgZWZmaWNpZW50IHRoYW4gd2hhdCBDb250YWluZXIuTWFrZSByZXR1cm5zICopXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiAoRWx0LnZhbHVlIHByZXYpIGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX3JpZ2h0X2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgcHJldiBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4geCB0bCAtPiB4IDo6IHRsKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgcyA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEJhc2UuTGlzdC50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbjs7XG5cbmxldCBjb3B5IHQgPSBvZl9saXN0ICh0b19saXN0IHQpXG5sZXQgY2xlYXIgdCA9IHQgOj0gTm9uZVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCB0MSB0MiA9XG4gIG1hdGNoICF0MSwgIXQyIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IDBcbiAgfCBOb25lLCBfIC0+IC0xXG4gIHwgXywgTm9uZSAtPiAxXG4gIHwgU29tZSBmMSwgU29tZSBmMiAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGYxKSBjb21wYXJlX2VsdCBmMSBmMiAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fM1xuICAgICAgICAoRWx0LmhlYWRlciBmMilcbiAgICAgICAgY29tcGFyZV9lbHRcbiAgICAgICAgZjFcbiAgICAgICAgZjJcbiAgICAgICAgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgICAgICBsZXQgcmVjIGxvb3AgY29tcGFyZV9lbHQgZWx0MSBmMSBlbHQyIGYyID1cbiAgICAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCAoRWx0LnZhbHVlIGVsdDEpIChFbHQudmFsdWUgZWx0MikgaW5cbiAgICAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA8PiAwXG4gICAgICAgICAgICAgdGhlbiBjb21wYXJlX3Jlc3VsdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IG5leHQxID0gRWx0Lm5leHQgZWx0MSBpblxuICAgICAgICAgICAgICAgbGV0IG5leHQyID0gRWx0Lm5leHQgZWx0MiBpblxuICAgICAgICAgICAgICAgbWF0Y2ggcGh5c19lcXVhbCBuZXh0MSBmMSwgcGh5c19lcXVhbCBuZXh0MiBmMiB3aXRoXG4gICAgICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiBsb29wIGNvbXBhcmVfZWx0IG5leHQxIGYxIG5leHQyIGYyKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGNvbXBhcmVfZWx0IGYxIGYxIGYyIGYyKSlcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0XG5cbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPVxuICBpZiBwaHlzX2VxdWFsIHNyYyBkc3QgdGhlbiByYWlzZSBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0O1xuICBtYXRjaCAhc3JjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzcmNfaGVhZCAtPlxuICAgIChtYXRjaCAhZHN0IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZHN0IDo9IFNvbWUgc3JjX2hlYWQ7XG4gICAgICAgY2xlYXIgc3JjXG4gICAgIHwgU29tZSBkc3RfaGVhZCAtPlxuICAgICAgIChtYXRjaCBIZWFkZXIubWVyZ2UgKEVsdC5oZWFkZXIgc3JjX2hlYWQpIChFbHQuaGVhZGVyIGRzdF9oZWFkKSB3aXRoXG4gICAgICAgIHwgYFNhbWVfYWxyZWFkeSAtPiByYWlzZSBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0XG4gICAgICAgIHwgYE1lcmdlZCAtPlxuICAgICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGRzdF9oZWFkIHNyY19oZWFkO1xuICAgICAgICAgIGNsZWFyIHNyYykpXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IGl0ZXJfZWx0IHQgfmY6KGZ1biBlbHQgLT4gRWx0LnNldCBlbHQgKGYgKEVsdC52YWx1ZSBlbHQpKSlcbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9IGl0ZXJpX2VsdCB0IH5mOihmdW4gaSBlbHQgLT4gRWx0LnNldCBlbHQgKGYgaSAoRWx0LnZhbHVlIGVsdCkpKVxuXG5sZXQgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmUgPVxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4gZWx0IC0+XG4gICAgKG1hdGNoICF0IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBoZWFkIC0+XG4gICAgICAgaWYgRWx0LmVxdWFsIGhlYWQgZWx0XG4gICAgICAgdGhlbiAoXG4gICAgICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIHQgOj0gaWYgRWx0LmVxdWFsIGhlYWQgbmV4dF9lbHQgdGhlbiBOb25lIGVsc2UgU29tZSBuZXh0X2VsdCkpO1xuICAgIEVsdC51bmxpbmsgZWx0KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiBlbHRzIGVsc2UgZWx0IDo6IGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiBlbHRzIGVsc2UgZWx0IDo6IGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiBpIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5leGNlcHRpb24gRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG5cbmxldCBmaXJzdF9lbHQgdCA9ICF0XG5sZXQgbGFzdF9lbHQgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnByZXYgIXRcbmxldCBmaXJzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGZpcnN0X2VsdCB0KVxubGV0IGxhc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChsYXN0X2VsdCB0KVxuXG5sZXQgaXNfZmlyc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpc19sYXN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgICAgRWx0LmVxdWFsIGVsdCBsYXN0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbWVtX2VsdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbjs7XG5cbmxldCBwcmV2IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0LnByZXYgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbmV4dCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGVsdCBsYXN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5uZXh0IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9hZnRlciB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9hZnRlciBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2JlZm9yZSB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgICBuZXdfZWx0KVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2JlZm9yZSBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2VtcHR5IHQgdiA9XG4gIGxldCBuZXdfZWx0ID0gRWx0LmNyZWF0ZSB2IGluXG4gIHQgOj0gU29tZSBuZXdfZWx0O1xuICBuZXdfZWx0XG47O1xuXG5sZXQgaW5zZXJ0X2xhc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT4gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdlxuOztcblxubGV0IGluc2VydF9maXJzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgIG5ld19lbHRcbjs7XG5cbmxldCByZW1vdmVfbGFzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC51bmxpbmtfYmVmb3JlIGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGZpcnN0IGxhc3QgdGhlbiB0IDo9IE5vbmU7XG4gICAgU29tZSAoRWx0LnZhbHVlIGxhc3QpXG47O1xuXG5sZXQgcmVtb3ZlX2ZpcnN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBzZWNvbmQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgIEVsdC51bmxpbmsgZmlyc3Q7XG4gICAgdCA6PSBpZiBFbHQuZXF1YWwgZmlyc3Qgc2Vjb25kIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjb25kO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBmaXJzdClcbjs7XG5cbmxldCByZW1vdmUgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gaWdub3JlIChyZW1vdmVfZmlyc3QgdCA6IF8gb3B0aW9uKVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQudW5saW5rIGVsdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIGkgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmV4Y2VwdGlvbiBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yXG5cbmxldCBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICAgICBhZnRlcl9lbHQpXG4gICAgICAgICAgZWxzZSBmaXJzdFxuICAgICAgICBpblxuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYmVmb3JlIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGFuY2hvciBlbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBhbmNob3IgdGhlbiB0IDo9IFNvbWUgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19mcm9udCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChFbHQuZXF1YWwgZWx0IGZpcnN0KSB0aGVuIG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3I6Zmlyc3Rcbjs7XG5cbmxldCBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHQgdGhlbiB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYWZ0ZXIgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9hZnRlciBhbmNob3IgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19iYWNrIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBub3QgKEVsdC5lcXVhbCBlbHQgbGFzdCkgdGhlbiBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3I6bGFzdFxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19saXN0IHQgfD4gU2VxdWVuY2Uub2ZfbGlzdFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCB0X29mX3NleHAgPSBTZXhwbGliLlNleHAudF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCA9IFNleHBsaWIuU2V4cC5zZXhwX29mX3RcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxuaW5jbHVkZSAoXG4gIEJhc2UuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICB0eXBlIHNleHAgPSBCYXNlLlNleHAudCA9XG4gICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgIHwgTGlzdCBvZiB0IGxpc3RcbmVuZFxuXG5tb2R1bGUgU2V4cF9tYXliZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCB0ICogRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUmVzdWx0Lk9rIGEgLT4gc2V4cF9vZl9hIGFcbiAgICB8IFJlc3VsdC5FcnJvciAoc2V4cCwgZXJyKSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJzZXhwX3BhcnNlX2Vycm9yXCI7IHNleHA7IEVycm9yLnNleHBfb2ZfdCBlcnIgXVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbIEF0b20gXCJzZXhwX3BhcnNlX2Vycm9yXCI7IHNleHA7IF8gXSB8IHNleHAgLT5cbiAgICAgICh0cnkgUmVzdWx0Lk9rIChhX29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgIHwgZXhuIC0+IFJlc3VsdC5FcnJvciAoc2V4cCwgRXJyb3Iub2ZfZXhuIGV4bikpXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIChncmFtbWFyIDogXyBTZXhwbGliLlNleHBfZ3JhbW1hci50KSA6IF8gdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICB7IHVudHlwZWQgPSBVbmlvbiBbIGdyYW1tYXIudW50eXBlZDsgQmFzZS5TZXhwLnRfc2V4cF9ncmFtbWFyLnVudHlwZWQgXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFdpdGhfdGV4dCA9IHN0cnVjdFxuICBvcGVuIFJlc3VsdC5FeHBvcnRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgdmFsdWUgOiAnYVxuICAgIDsgdGV4dCA6IHN0cmluZ1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gQXRvbSB0LnRleHRcblxuICBsZXQgb2ZfdGV4dCB2YWx1ZV9vZl9zZXhwID8oZmlsZW5hbWUgPSBcIlwiKSB0ZXh0ID1cbiAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IG9mX3N0cmluZ19jb252IHRleHQgdmFsdWVfb2Zfc2V4cCkgd2l0aFxuICAgIHwgT2sgKGBSZXN1bHQgdmFsdWUpIC0+IE9rIHsgdmFsdWU7IHRleHQgfVxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gZXJyXG4gICAgfCBPayAoYEVycm9yIChleG4sIGFubm90YXRlZCkpIC0+XG4gICAgICBFcnJvciAoRXJyb3Iub2ZfZXhuIChBbm5vdGF0ZWQuZ2V0X2NvbnZfZXhuIGFubm90YXRlZCB+ZmlsZTpmaWxlbmFtZSB+ZXhjOmV4bikpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJXaXRoX3RleHQudCBzaG91bGQgYmUgc3RvcmVkIGFzIGFuIGF0b20sIGJ1dCBpbnN0ZWFkIGEgbGlzdCB3YXMgZm91bmQuXCJcbiAgICAgICAgc2V4cFxuICAgIHwgQXRvbSB0ZXh0IC0+IG9mX3RleHQgYV9vZl9zZXhwIHRleHQgfD4gT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5TdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHRleHQgdCA9IHQudGV4dFxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICBsZXQgb2ZfdmFsdWUgc2V4cF9vZl92YWx1ZSB2YWx1ZSA9XG4gICAgbGV0IHRleHQgPSBzZXhwX29mX3ZhbHVlIHZhbHVlIHw+IHRvX3N0cmluZ19odW0gaW5cbiAgICB7IHZhbHVlOyB0ZXh0IH1cbiAgOztcbmVuZFxuXG50eXBlICdhIG5vX3JhaXNlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQgc2V4cF9vZl9ub19yYWlzZSBzZXhwX29mX2EgYSA9XG4gIHRyeSBzZXhwX29mX2EgYSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKHRyeSBMaXN0IFsgQXRvbSBcImZhaWx1cmUgYnVpbGRpbmcgc2V4cFwiOyBzZXhwX29mX2V4biBleG4gXSB3aXRoXG4gICAgIHwgXyAtPiBBdG9tIFwiY291bGQgbm90IGJ1aWxkIHNleHAgZm9yIGV4biByYWlzZWQgd2hlbiBidWlsZGluZyBzZXhwIGZvciB2YWx1ZVwiKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5TZXhwKSAoQmFzZS5TZXhwKVxuXG5sZXQgb2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjdXJzaXZlbHkgb2Zfc2V4cCBzZXhwID1cbiAgbGV0IHIgPSBTZXhwbGliLkNvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyBpblxuICBsZXQgcHJldiA9ICFyIGluXG4gIEV4bi5wcm90ZWN0XG4gICAgfmZpbmFsbHk6KGZ1biAoKSAtPiByIDo9IHByZXYpXG4gICAgfmY6KGZ1biAoKSAtPlxuICAgICAgciA6PSBmYWxzZTtcbiAgICAgIG9mX3NleHAgc2V4cClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V4cFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V4cFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V4cFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2hfcXVldWVfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIFNfYmFja2VuZCA9IFNfYmFja2VuZFxuXG5tb2R1bGUgTWFrZV9iYWNrZW5kIChUYWJsZSA6IEhhc2h0YmxfaW50Zi5IYXNodGJsKSA6IFNfYmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBCYWNrZW5kID1cbiAgICBTMVxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9hcmcgOj0gJ2tleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfa2V5IDo9ICdrZXlcblxuICBtb2R1bGUgQmFja2VuZCA6IEJhY2tlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5X3ZhbHVlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlICgna2V5LCAndmFsdWUpIHQgPVxuICAgICAgICAgIHsga2V5IDogJ2tleVxuICAgICAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IGtleSB0ID0gdC5rZXlcbiAgICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB7IGtleTsgdmFsdWUgfSA9XG4gICAgICAgIFslc2V4cF9vZjoga2V5ICogZGF0YV0gKGtleSwgdmFsdWUpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgb3BlbiBLZXlfdmFsdWUuVFxuICAgIG1vZHVsZSBFbHQgPSBEb3VibHlfbGlua2VkLkVsdFxuXG4gICAgdHlwZSAoJ2tleSwgJ2RhdGEpIHQgPVxuICAgICAgeyBtdXRhYmxlIG51bV9yZWFkZXJzIDogaW50XG4gICAgICA7IHF1ZXVlIDogKCdrZXksICdkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRcbiAgICAgIDsgdGFibGUgOiAoJ2tleSwgKCdrZXksICdkYXRhKSBLZXlfdmFsdWUudCBFbHQudCkgVGFibGUudFxuICAgICAgfVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gICAgICBbJXNleHBfb2Y6IChrZXksIGRhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudF0gdC5xdWV1ZVxuICAgIDs7XG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgYXNzZXJ0IChEb3VibHlfbGlua2VkLmxlbmd0aCB0LnF1ZXVlID0gVGFibGUubGVuZ3RoIHQudGFibGUpO1xuICAgICAgKCogTG9vayBhdCBlYWNoIGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBjaGVja2luZzpcbiAgICAgICAqICAgLSBldmVyeSBlbGVtZW50IGluIHRoZSBxdWV1ZSBpcyBpbiB0aGUgaGFzaCB0YWJsZVxuICAgICAgICogICAtIHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5c1xuICAgICAgKilcbiAgICAgIGxldCBrZXlzID0gVGFibGUuY3JlYXRlIH5zaXplOihUYWJsZS5sZW5ndGggdC50YWJsZSkgKFRhYmxlLmhhc2hhYmxlX3MgdC50YWJsZSkgaW5cbiAgICAgIERvdWJseV9saW5rZWQuaXRlciB0LnF1ZXVlIH5mOihmdW4ga3YgLT5cbiAgICAgICAgbGV0IGtleSA9IGt2LmtleSBpblxuICAgICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgIGFzc2VydCAobm90IChUYWJsZS5tZW0ga2V5cyBrZXkpKTtcbiAgICAgICAgICBUYWJsZS5zZXQga2V5cyB+a2V5IH5kYXRhOigpKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAxNikgaGFzaGFibGUgPVxuICAgICAgeyBudW1fcmVhZGVycyA9IDBcbiAgICAgIDsgcXVldWUgPSBEb3VibHlfbGlua2VkLmNyZWF0ZSAoKVxuICAgICAgOyB0YWJsZSA9IFRhYmxlLmNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQgfnNpemUgKFRhYmxlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlYWQgdCBmID1cbiAgICAgIHQubnVtX3JlYWRlcnMgPC0gdC5udW1fcmVhZGVycyArIDE7XG4gICAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQubnVtX3JlYWRlcnMgPC0gdC5udW1fcmVhZGVycyAtIDEpXG4gICAgOztcblxuICAgIGxldCBlbnN1cmVfY2FuX21vZGlmeSB0ID1cbiAgICAgIGlmIHQubnVtX3JlYWRlcnMgPiAwXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiSXQgaXMgYW4gZXJyb3IgdG8gbW9kaWZ5IGEgSGFzaF9xdWV1ZS50IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0LlwiXG4gICAgOztcblxuICAgIGxldCBjbGVhciB0ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBEb3VibHlfbGlua2VkLmNsZWFyIHQucXVldWU7XG4gICAgICBUYWJsZS5jbGVhciB0LnRhYmxlXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggdCA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlXG4gICAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuICAgIGxldCBsb29rdXAgdCBrID1cbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+IFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfZXhuIHQgayA9IChFbHQudmFsdWUgKFRhYmxlLmZpbmRfZXhuIHQudGFibGUgaykpLnZhbHVlXG4gICAgbGV0IG1lbSB0IGsgPSBUYWJsZS5tZW0gdC50YWJsZSBrXG5cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgdGFpbC1yZWN1cnNpdmUgQ29yZV9saXN0Lm1hcCAqKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuICAgIGxldCB0b19hcnJheSB0ID0gQXJyYXkubWFwIChEb3VibHlfbGlua2VkLnRvX2FycmF5IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuXG4gICAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmZvcl9hbGwgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT4gRG91Ymx5X2xpbmtlZC5leGlzdHMgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmZpbmRfbWFwIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgKERvdWJseV9saW5rZWQuZmluZCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgICAgICAgfmY6S2V5X3ZhbHVlLnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBpZiBUYWJsZS5tZW0gdC50YWJsZSBrZXlcbiAgICAgIHRoZW4gYEtleV9hbHJlYWR5X3ByZXNlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29udGVudHMgPSB7IEtleV92YWx1ZS5rZXk7IHZhbHVlIH0gaW5cbiAgICAgICAgbGV0IGVsdCA9XG4gICAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLmluc2VydF9sYXN0IHQucXVldWUgY29udGVudHNcbiAgICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLmluc2VydF9maXJzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgIGluXG4gICAgICAgIFRhYmxlLnNldCB0LnRhYmxlIH5rZXkgfmRhdGE6ZWx0O1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2sgdCA9IGVucXVldWUgdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250IHQgPSBlbnF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLmVucXVldWVfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIG1hdGNoIGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSB3aXRoXG4gICAgICB8IGBLZXlfYWxyZWFkeV9wcmVzZW50IC0+IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleVxuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFja19leG4gdCA9IGVucXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udF9leG4gdCA9IGVucXVldWVfZXhuIHQgYGZyb250XG5cbiAgICAoKiBQZXJmb3JtYW5jZSBoYWNrOiB3ZSBpbXBsZW1lbnQgdGhpcyB2ZXJzaW9uIHNlcGFyYXRlbHkgdG8gYXZvaWQgYWxsb2NhdGlvbiBmcm9tIHRoZVxuICAgICAgIG9wdGlvbi4gKilcbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250X2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgbWF5YmVfa3YgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9sYXN0IHQucXVldWVcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfZmlyc3QgdC5xdWV1ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG1heWJlX2t2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT5cbiAgICAgICAgVGFibGUucmVtb3ZlIHQudGFibGUga3Yua2V5O1xuICAgICAgICBTb21lIChrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKSA9XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV93aXRoX2tleTogZW1wdHkgcXVldWVcIl1cbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKVxuICAgICAgfCBTb21lIChrLCB2KSAtPiBrLCB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgZnJvbnRcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGZyb250XG5cbiAgICBsZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXywgdikgLT4gU29tZSB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2sgdCA9IGRlcXVldWUgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250IHQgPSBkZXF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgbGFzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGxhc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX2V4bjogZW1wdHkgcXVldWVcIl1cblxuICAgIGxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfZW1wdHkgKClcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja19leG4gdCA9IGRlcXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IGRlcXVldWVfZXhuIHQgYGZyb250XG5cbiAgICBsZXQga2V5cyB0ID1cbiAgICAgICgqIFJldHVybiB0aGUga2V5cyBpbiB0aGUgb3JkZXIgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUua2V5XG4gICAgOztcblxuICAgIGxldCBpdGVyaSB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuaXRlciB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxuICAgIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9sZCB0LnF1ZXVlIH5pbml0IH5mOihmdW4gYWMga3YgLT5cbiAgICAgICAgICBmIGFjIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBhYyB+a2V5Ol8gfmRhdGEgLT4gZiBhYyBkYXRhKVxuICAgIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gbSB+Zm9sZCB0IH5mXG4gICAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG4gICAgbGV0IGRlcXVldWVfYWxsIHQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbWF0Y2ggZGVxdWV1ZV9mcm9udCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgZiB2O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCByZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlbW92ZV9leG46IHVua25vd24ga2V5XCIgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZV9leG4gdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZW1vdmUgdCBrIHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX3JlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVwbGFjZV9leG46IHVua25vd24ga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX2V4biB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVwbGFjZSB0IGsgdiB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGRyb3AgPyhuID0gMSkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGlmIG4gPj0gbGVuZ3RoIHRcbiAgICAgIHRoZW4gY2xlYXIgdFxuICAgICAgZWxzZVxuICAgICAgICBmb3IgXyA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgOiBfIG9wdGlvbilcbiAgICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wID9uIHQgYGJhY2tcbiAgICBsZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcCA/biB0IGBmcm9udFxuXG4gICAgbGV0IGNvcHkgdCA9XG4gICAgICBsZXQgY29waWVkID0gY3JlYXRlIH5zaXplOihsZW5ndGggdCkgKFRhYmxlLmhhc2hhYmxlIHQudGFibGUpIGluXG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBlbnF1ZXVlX2JhY2tfZXhuIGNvcGllZCBrZXkgZGF0YSk7XG4gICAgICBjb3BpZWRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gUzAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSkgaGFzaF9xdWV1ZSA6PSAoJ2tleSwgJ2RhdGEpIEJhY2tlbmQudFxuXG4gIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChCYWNrZW5kIDogQmFja2VuZCB3aXRoIHR5cGUgKCdrLCAnZCkgdCA6PSAoJ2ssICdkKSBCYWNrZW5kLnQpXG5cbiAgICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgICB0eXBlICdkYXRhIHQgPSAoVC5LZXkudCwgJ2RhdGEpIEJhY2tlbmQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA6IFMgd2l0aCB0eXBlIGtleSA9IEtleS50ID0gTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgS2V5KVxuICAgIGVuZClcblxuICBpbmNsdWRlIEJhY2tlbmRcbmVuZFxuXG5pbmNsdWRlIE1ha2VfYmFja2VuZCAoSGFzaHRibClcbiIsIigqKiBGdW5jdG9ycyBhbmQgaW50ZXJmYWNlcyB1c2VkIHRvIG1ha2UgbW9kdWxlcyBoYXNoYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hhYmxlX2ludGZcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfcGxhaW4pIDpcbiAgU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3BsYWluIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5KSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgVC5LZXlcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfYmluYWJsZSkgOlxuICBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcblxuICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCA9IChrZXksICdhKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgdmFsIGhhc2hhYmxlIDoga2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDogUyB3aXRoIHR5cGUga2V5IDo9IEtleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoS2V5KVxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChLZXkpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlXG5cbiAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENoYXIgPSBCYXNlLkNoYXJcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5pbmNsdWRlIEhleGR1bXBfaW50ZlxuXG5sZXQgYnl0ZXNfcGVyX2xpbmUgPSAxNlxuXG4oKiBJbml0aWFsaXplIHRvIGVub3VnaCBsaW5lcyB0byBkaXNwbGF5IDQwOTYgYnl0ZXMgLS0gbGFyZ2UgZW5vdWdoIHRoYXQsIGZvciBleGFtcGxlLCBhXG4gICBjb21wbGV0ZSBFdGhlcm5ldCBwYWNrZXQgY2FuIGFsd2F5cyBiZSBkaXNwbGF5ZWQgLS0gaW5jbHVkaW5nIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlXG4gICBmaW5hbCBpbmRleC4gKilcbmxldCBkZWZhdWx0X21heF9saW5lcyA9IHJlZiAoKDQwOTYgLyBieXRlc19wZXJfbGluZSkgKyAxKVxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMiAoVCA6IEluZGV4YWJsZTIpID0gc3RydWN0XG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGV4X29mX3BvcyBwb3MgPSBQcmludGYuc3ByaW50ZiBcIiUwOHhcIiBwb3NcblxuICAgIGxldCBoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgb2Zmc2V0ID1cbiAgICAgIGxldCBwb3MgPSBzdGFydCArIG9mZnNldCBpblxuICAgICAgaWYgcG9zID49IHVudGlsIHRoZW4gXCIgIFwiIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlMDJ4XCIgKENoYXIudG9faW50IChnZXQgdCBwb3MpKVxuICAgIDs7XG5cbiAgICBsZXQgaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXMgICVzICVzICVzICVzICVzICVzICVzICVzXCJcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA2KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDcpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA5KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDExKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE1KVxuICAgIDs7XG5cbiAgICBsZXQgcHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgU3RyaW5nLmluaXQgKHVudGlsIC0gc3RhcnQpIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgY2hhciA9IGdldCB0IChzdGFydCArIGkpIGluXG4gICAgICAgIGlmIENoYXIuaXNfcHJpbnQgY2hhciB0aGVuIGNoYXIgZWxzZSAnLicpXG4gICAgOztcblxuICAgIGxldCBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4ID1cbiAgICAgIGxldCBzdGFydCA9IHBvcyArIChsaW5lX2luZGV4ICogYnl0ZXNfcGVyX2xpbmUpIGluXG4gICAgICBsZXQgdW50aWwgPSBtaW4gKHN0YXJ0ICsgYnl0ZXNfcGVyX2xpbmUpIChwb3MgKyBsZW4pIGluXG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICAlcyAgfCVzfFwiXG4gICAgICAgIChoZXhfb2ZfcG9zIHN0YXJ0KVxuICAgICAgICAoaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsKVxuICAgICAgICAocHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwpXG4gICAgOztcblxuICAgIGxldCB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgbWF4X2xpbmVzID1cbiAgICAgICAgbWF0Y2ggbWF4X2xpbmVzIHdpdGhcbiAgICAgICAgfCBTb21lIG1heF9saW5lcyAtPiBtYXhfbGluZXNcbiAgICAgICAgfCBOb25lIC0+ICFkZWZhdWx0X21heF9saW5lc1xuICAgICAgaW5cbiAgICAgICgqIGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IDMgbGluZXM6IGZpcnN0IGxpbmUgb2YgaGV4LCBlbGxpcHNpcywgbGFzdCBsaW5lIG9mIGhleCAqKVxuICAgICAgbGV0IG1heF9saW5lcyA9IG1heCBtYXhfbGluZXMgMyBpblxuICAgICAgKCogdW5hYnJpZGdlZCBsaW5lcyA9IGxpbmVzIG9mIGhleCArIGxpbmUgd2l0aCBmaW5hbCBpbmRleCAqKVxuICAgICAgbGV0IHVuYWJyaWRnZWRfbGluZXMgPVxuICAgICAgICBJbnQucm91bmRfdXAgbGVuIH50b19tdWx0aXBsZV9vZjpieXRlc19wZXJfbGluZSAvIGJ5dGVzX3Blcl9saW5lXG4gICAgICBpblxuICAgICAgKCogRmlndXJlIG91dCB3aGVyZSB3ZSBuZWVkIHRvIHNraXAgZnJvbSBhbmQgdG8gaWYgW21heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNdLlxuICAgICAgICAgU2tpcCBhZnRlciBoYWxmIHRoZSBhY3R1YWwgaGV4IGxpbmVzIChzdWJ0cmFjdGluZyBvbmUgbGluZSBmb3IgdGhlIGVsbGlwc2lzKS5cbiAgICAgICAgIFNraXAgdG8gbmVhciB0aGUgZW5kLCBsZXNzIHRoZSBudW1iZXIgb2YgbGluZXMgcmVtYWluaW5nIHRvIHByb2R1Y2UsIHBsdXMgdGhlXG4gICAgICAgICBlbGxpcHNpcyBsaW5lLiAqKVxuICAgICAgbGV0IHNraXBfZnJvbSA9IChtYXhfbGluZXMgLSAxKSAvIDIgaW5cbiAgICAgIGxldCBza2lwX3RvID0gdW5hYnJpZGdlZF9saW5lcyAtIChtYXhfbGluZXMgLSBza2lwX2Zyb20pICsgMSBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGxpbmVfaW5kZXggLT5cbiAgICAgICAgaWYgbGluZV9pbmRleCA+PSB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIGlmIGxpbmVfaW5kZXggPSBza2lwX2Zyb20gJiYgbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIFlpZWxkIChcIi4uLlwiLCBza2lwX3RvKVxuICAgICAgICBlbHNlIFlpZWxkIChsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4LCBsaW5lX2luZGV4ICsgMSkpXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfaHVtID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgXyBfIHQgPSB0b19zZXF1ZW5jZSB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgcHJpbnRhYmxlID1cbiAgICAgICAgbGV0IHJlYyBwcmludGFibGVfZnJvbSB0IH5wb3Mgfmxlbmd0aCA9XG4gICAgICAgICAgcG9zID49IGxlbmd0aFxuICAgICAgICAgIHx8IChDaGFyLmlzX3ByaW50IChnZXQgdCBwb3MpICYmIHByaW50YWJsZV9mcm9tIHQgfnBvczoocG9zICsgMSkgfmxlbmd0aClcbiAgICAgICAgaW5cbiAgICAgICAgZnVuIHQgLT4gcHJpbnRhYmxlX2Zyb20gdCB+cG9zOjAgfmxlbmd0aDoobGVuZ3RoIHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gcG9zIC0+IGdldCB0IHBvcylcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBpZiBwcmludGFibGUgdCB0aGVuIFslc2V4cCAodG9fc3RyaW5nIHQgOiBzdHJpbmcpXSBlbHNlIFslc2V4cCAodCA6IChhLCBiKSB0KV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUxIChUIDogSW5kZXhhYmxlMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHggdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgeCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodCA6IChhLCBfKSBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlIChUIDogSW5kZXhhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCA6IF8gTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9zZXhwX2dyYW1tYXIgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3JfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBFeHRlbmQgKE0gOiBCYXNlLklkZW50aWZpYWJsZS5TKSAoQiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSBNLnQpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG4gICAgaW5jbHVkZSAoQiA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZF9iaW5hYmxlIChNKSAoVClcblxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBUXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IE0uaGFzaGFibGVcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4oKiBUaGVzZSB0d28gYXJlIG5lZWRlZCBiZWNhdXNlIFtpbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmRdIChwcmVzZW50IGxhdGVyIGluIHRoZSBmaWxlKVxuICAgYmluZHMgbmV3IFtNYXBdIGFuZCBbU2V0XSBtb2R1bGVzLiAqKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgIGxldCBvZl9zdHJpbmcgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFN0YWJsZS5WMS5oYXNoYWJsZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLlN0cmluZylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnN0cmluZ1xubGV0IGdlbl9ub25lbXB0eSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eVxubGV0IGdlbicgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19vZlxubGV0IGdlbl9ub25lbXB0eScgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlfb2ZcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW5ndGggY2hhcnMgPVxuICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFycyB+bGVuZ3RoXG47O1xuXG5sZXQgdGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOjAgfmxlbjppXG47O1xuXG5sZXQgcnRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHJmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpXG47O1xuXG4oKiogU2VlIHshQXJyYXkubm9ybWFsaXplfSBmb3IgdGhlIGZvbGxvd2luZyA0IGZ1bmN0aW9ucy4gKilcbmxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG5sZXQgc2xpY2UgdCBzdGFydCBzdG9wID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuOztcblxubGV0IG5nZXQgeCBpID1cbiAgbGV0IG1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZyBpblxuICB4Lltub3JtYWxpemUgeCBpXVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuU3RyaW5nfVtCYXNlLlN0cmluZ119LiAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuZW5kXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBbQ2FzZWxlc3NdIGNvbXBhcmVzIGFuZCBoYXNoZXMgc3RyaW5ncyBpZ25vcmluZyBjYXNlLCBzbyB0aGF0IGZvciBleGFtcGxlXG4gICAgW0Nhc2VsZXNzLmVxdWFsIFwiT0NhbWxcIiBcIm9jYW1sXCJdIGFuZCBbQ2FzZWxlc3MuKFwiYXBwbGVcIiA8IFwiQmFuYW5hXCIpXSBhcmUgW3RydWVdLCBhbmRcbiAgICBbQ2FzZWxlc3MuTWFwXSwgW0Nhc2VsZXNzLlRhYmxlXSBsb29rdXAgYW5kIFtDYXNlbGVzcy5TZXRdIG1lbWJlcnNoaXAgaXNcbiAgICBjYXNlLWluc2Vuc2l0aXZlLlxuXG4gICAgW0Nhc2VsZXNzXSBhbHNvIHByb3ZpZGVzIGNhc2UtaW5zZW5zaXRpdmUgW2lzX3N1ZmZpeF0gYW5kIFtpc19wcmVmaXhdIGZ1bmN0aW9ucywgc29cbiAgICB0aGF0IGZvciBleGFtcGxlIFtDYXNlbGVzcy5pc19zdWZmaXggXCJPQ2FtbFwiIH5zdWZmaXg6XCJBbUxcIl0gYW5kIFtDYXNlbGVzcy5pc19wcmVmaXhcbiAgICBcIk9DYW1sXCIgfnByZWZpeDpcIm9jXCJdIGFyZSBbdHJ1ZV0uICopXG5tb2R1bGUgQ2FzZWxlc3MgOiBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cF1cblxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxuXG4oKiogW3NsaWNlIHQgc3RhcnQgc3RvcF0gcmV0dXJucyBhIG5ldyBzdHJpbmcgaW5jbHVkaW5nIGVsZW1lbnRzIFt0LihzdGFydCldIHRocm91Z2hcbiAgICBbdC4oc3RvcC0xKV0sIG5vcm1hbGl6ZWQgUHl0aG9uLXN0eWxlIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IFtzdG9wID0gMF0gaXMgdHJlYXRlZCBhc1xuICAgIFtzdG9wID0gbGVuZ3RoIHRdLiAqKVxudmFsIHNsaWNlIDogdCAtPiBpbnQgLT4gaW50IC0+IHRcblxuKCoqIFtuZ2V0IHMgaV0gZ2V0cyB0aGUgY2hhciBhdCBub3JtYWxpemVkIHBvc2l0aW9uIFtpXSBpbiBbc10uICopXG52YWwgbmdldCA6IHQgLT4gaW50IC0+IGNoYXJcblxuKCoqIFt0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3QgcHJlZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHByZWZpeCB+Zl1cbiAgICAoU2VlIFtsc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHByZWZpeCkgKilcbnZhbCB0YWtlX3doaWxlIDogdCAtPiBmOihjaGFyIC0+IGJvb2wpIC0+IHRcblxuKCoqIFtydGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHN1ZmZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBzdWZmaXggfmZdXG4gICAgKFNlZSBbcnN0cmlwXSB0byBkcm9wIHN1Y2ggYSBzdWZmaXgpICopXG52YWwgcnRha2Vfd2hpbGUgOiB0IC0+IGY6KGNoYXIgLT4gYm9vbCkgLT4gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHkgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mXG4gICAgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5JyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbc3RyaW5nXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbU3RyaW5nLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gaW50cm9kdWNlXG4gICAgW1N0cmluZy5TdGFibGUuU2V0XSwgW1N0cmluZy5TdGFibGUuTWFwXSwgW1N0cmluZy5TdGFibGUuVGFibGVdLCBhbmQgcHJvdmlkZSBpbnRlcmZhY2VcbiAgICB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfY29tcGFyYWJsZS5WMVxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Cb29sKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkJvb2xcblxuaW5jbHVkZSAoXG4gIEJhc2UuQm9vbCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJvb2xcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5Cb29sKVxuXG5sZXQgb2Zfc3RyaW5nX2h1bSA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCB0YWJsZSA9IFN0cmluZy5DYXNlbGVzcy5UYWJsZS5jcmVhdGUgKCkgaW5cbiAgICAgICBbIGZhbHNlLCBbIFwiZmFsc2VcIjsgXCJub1wiOyBcIjBcIiBdOyB0cnVlLCBbIFwidHJ1ZVwiOyBcInllc1wiOyBcIjFcIiBdIF1cbiAgICAgICB8PiBMaXN0Lml0ZXIgfmY6KGZ1biAoYm9vbCwgc3RyaW5ncykgLT5cbiAgICAgICAgIExpc3QuaXRlciBzdHJpbmdzIH5mOihmdW4gc3RyaW5nIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6c3RyaW5nIH5kYXRhOmJvb2w7XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5wcmVmaXggc3RyaW5nIDEpIH5kYXRhOmJvb2wpKTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgbGV0IHJhaXNlX2ludmFsaWQgaW5wdXQgPVxuICAgIGxldCBleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlID0gU3RyaW5nLlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgKGZvcmNlIHRhYmxlKSkgaW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCb29sLm9mX3N0cmluZ19odW06IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgIChpbnB1dCA6IHN0cmluZylcbiAgICAgICAgICAoZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA6IFN0cmluZy5TZXQudCldXG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBIYXNodGJsLmZpbmRfYW5kX2NhbGwgKGZvcmNlIHRhYmxlKSBzdHJpbmcgfmlmX2ZvdW5kOkZuLmlkIH5pZl9ub3RfZm91bmQ6cmFpc2VfaW52YWxpZFxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5ib29sXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5ib29sXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5ib29sXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgYmluX2lvXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQnl0ZXNcblxuICAgIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5CeXRlcylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IGdlbicgY2hhcl9nZW4gPSBTdHJpbmcuZ2VuJyBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuID1cbiAgU3RyaW5nLmdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkNoYXIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG4oKiBpbmNsdWRlIFtCYXNlLkNoYXJdIGFmdGVyIHRoZSBhcHBsaWNhdGlvbiBvZiBbSWRlbnRpZmlhYmxlLkV4dGVuZF0gdG8gcmVwbGFjZSB0aGVcbiAgIFtDb21wYXJhYmxlXSBmdW5jdGlvbnMgd2l0aCB0aGUgcGVydmFzaXZlIHZlcnNpb25zICopXG5pbmNsdWRlIChcbiAgQmFzZS5DaGFyIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQ2hhclxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNoYXJcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jaGFyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5jaGFyXG5sZXQgZ2VuX2RpZ2l0ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2RpZ2l0XG5sZXQgZ2VuX2xvd2VyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9sb3dlcmNhc2VcbmxldCBnZW5fdXBwZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VwcGVyY2FzZVxubGV0IGdlbl9hbHBoYSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYVxubGV0IGdlbl9hbHBoYW51bSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYW51bVxubGV0IGdlbl9wcmludCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9wcmludFxubGV0IGdlbl93aGl0ZXNwYWNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3doaXRlc3BhY2VcbmxldCBnZW5fdW5pZm9ybV9pbmNsdXNpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ24gPSBCYXNlLlNpZ25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduKSAoU3RhYmxlLlYxKVxuIiwiZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XSAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXRcblxuICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IFRcblxubGV0IHZhbGlkYXRlX29yZGluYXJ5IHQgPVxuICBWYWxpZGF0ZS5vZl9lcnJvcl9vcHRcbiAgICAobGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgICAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBOb25lXG4gICAgIHwgQy5JbmZpbml0ZSAtPiBTb21lIFwidmFsdWUgaXMgaW5maW5pdGVcIlxuICAgICB8IEMuTmFuIC0+IFNvbWUgXCJ2YWx1ZSBpcyBOYU5cIilcbjs7XG5cbm1vZHVsZSBWID0gc3RydWN0XG4gIG1vZHVsZSBaWiA9IENvbXBhcmFibGUuVmFsaWRhdGUgKFQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfYm91bmQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9sYm91bmQgdCB+bWluKVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfdWJvdW5kIHQgfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFZcblxubW9kdWxlIFJvYnVzdF9jb21wYXJlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAoKiBpbnRlbmRlZCB0byBiZSBhIHRvbGVyYW5jZSBvbiBodW1hbi1lbnRlcmVkIGZsb2F0cyAqKVxuXG4gICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG5cbiAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSBmbG9hdFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG4gICAgZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgICAoKiBXZSBoYXZlIHRlc3QgaW4gdGhlIHRyZWUgdGhhdCByZWx5IG9uIHRoZXNlIGZ1bmN0aW9ucyBub3QgYWxsb2NhdGluZywgZXZlbiB3aXRob3V0XG4gICAgICAgWF9MSUJSQVJZX0lOTElORy4gVGhlIG9ubHkgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGRvbid0IGNyZWF0ZSB0ZW1wb3JhcnkgYm94ZWRcbiAgICAgICBmbG9hdHMgd2l0aG91dCBYX0xJQlJBUllfSU5MSU5HIGlzIGZvciB0aGlzIGNvZGUgdG8gc2VlIHRoZSBmbG9hdCBvcGVyYXRpb25zIGFzXG4gICAgICAgZXh0ZXJuYWxzLCBhcyBkZWZpbmVkIGluIFtQZXJ2YXNpdmVzXS4gVGhhdCdzIHdoeSB3ZSB1c2UgW1BvbHldIGFuZCBmbG9hdFxuICAgICAgIGFyaXRobWV0aWMgZnJvbSBbQ2FtbF0uICopXG4gICAgb3BlbiBQb2x5XG5cbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gVC5yb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA+PS4gKSB4IHkgPSB4ID49IENhbWwuKCAtLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPD0uICkgeCB5ID0geSA+PS4geFxuICAgIGxldCAoID0uICkgeCB5ID0geCA+PS4geSAmJiB5ID49LiB4XG4gICAgbGV0ICggPi4gKSB4IHkgPSB4ID4gQ2FtbC4oICsuICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8LiApIHggeSA9IHkgPi4geFxuICAgIGxldCAoIDw+LiApIHggeSA9IG5vdCAoeCA9LiB5KVxuXG4gICAgbGV0IHJvYnVzdGx5X2NvbXBhcmUgeCB5ID1cbiAgICAgIGxldCBkID0gQ2FtbC4oIC0uICkgeCB5IGluXG4gICAgICBpZiBkIDwgQ2FtbC4oIH4tLiApIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAtMVxuICAgICAgZWxzZSBpZiBkID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgMFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTdcbiAgZW5kKVxuXG5pbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkZsb2F0Lk9cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5lbmRcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBpbmNsdWRlIChcbiAgICBCYXNlLkZsb2F0LlRlcnNlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0LlRlcnNlXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5sZXQgcm9idXN0X3NpZ24gdCA6IFNpZ24udCA9IGlmIHQgPi4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwuIDAuIHRoZW4gTmVnIGVsc2UgWmVyb1xuXG4oKiBUaGVyZSBhcmUgdHdvIGlzc3VlczpcbiAgIC0gRmxvYXQuc2lnbiB1c2VkIHRvIHVzZSByb2J1c3QgY29tcGFyaXNvbiwgYW5kIHVzZXJzIG9mIFtDb3JlXSBtaWdodCBoYXZlIGNvbWUgdG9cbiAgICAgZGVwZW5kIG9uIHRoaXMuXG4gICAtIFJvYnVzdG5lc3MgYXNpZGUsIHdoYXQgd2UgZ2V0IGZyb20gQ29tcGFyYWJsZS5XaXRoX3plcm8gd291bGQgbWFwIG5hbiB0byBOZWcuXG4qKVxubGV0IHNpZ24gPSByb2J1c3Rfc2lnblxuXG4oKiBTdGFuZGFyZCAxMiBzaWduaWZpY2FudCBkaWdpdHMsIGV4cG9uZW50aWFsIG5vdGF0aW9uIHVzZWQgYXMgbmVjZXNzYXJ5LCBndWFyYW50ZWVkIHRvXG4gICBiZSBhIHZhbGlkIE9DYW1sIGZsb2F0IGxleGVtLCBub3QgdG8gbG9vayBsaWtlIGFuIGludC4gKilcbmxldCB0b19zdHJpbmdfMTIgeCA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIHgpXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmxvYXRcbmxldCBnZW5fdW5pZm9ybV9leGNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZVxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9pbmNsdXNpdmVcbmxldCBnZW5fd2l0aG91dF9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3dpdGhvdXRfbmFuXG5sZXQgZ2VuX2Zpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfZmluaXRlXG5sZXQgZ2VuX3Bvc2l0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9wb3NpdGl2ZVxubGV0IGdlbl9uZWdhdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmVcbmxldCBnZW5femVybyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgWmVyb1xubGV0IGdlbl9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5hblxubGV0IGdlbl9zdWJub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFN1Ym5vcm1hbFxubGV0IGdlbl9ub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5vcm1hbFxubGV0IGdlbl9pbmZpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgSW5maW5pdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuSW50XG5cbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuSW50XG5pbmNsdWRlIEJhc2UuSW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludClcblxuKCogVGhpcyBpcyBhbHJlYWR5IGRlZmluZWQgYnkgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8sIGJ1dCBTaWduLm9mX2ludCBpc1xuICAgbW9yZSBkaXJlY3QuICopXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludF9pbnRmfVtCYXNlLkludF9pbnRmXX0uICopXG5cbm1vZHVsZSB0eXBlIFJvdW5kID0gQmFzZS5JbnQuUm91bmRcblxubW9kdWxlIHR5cGUgU3RhYmxlID0gc2lnXG4gIG1vZHVsZSBWMSA6IFN0YWJsZV9jb21wYXJhYmxlLlYxXG5lbmRcblxubW9kdWxlIHR5cGUgSGV4YWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICBtb2R1bGUgSGV4IDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmdfaHVtIDogP2RlbGltaXRlcjpjaGFyIC0+IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gICgqXyBFbnN1cmUgdGhhdCB0aGlzIG1vZHVsZSBpcyBhbiBleHRlbnNpb24gb2YgW0Jhc2UuSW50LkhleGFibGVdLiAqKVxuICBpbmNsdWRlIEJhc2UuSW50LkhleGFibGUgd2l0aCB0eXBlIHQgOj0gdCBhbmQgbW9kdWxlIEhleCA6PSBIZXhcbmVuZFxuXG5tb2R1bGUgdHlwZSBFeHRlbnNpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuICBpbmNsdWRlIEhleGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgUXVpY2tjaGVja2FibGUuU19pbnQgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfdW5ib3VuZGVkID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU191bmJvdW5kZWRcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBFeHRlbnNpb25fd2l0aF9zdGFibGUgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbnNpb25cblxuICBtb2R1bGUgU3RhYmxlIDpcbiAgICBTdGFibGUgd2l0aCB0eXBlIFYxLnQgPSB0IGFuZCB0eXBlIFYxLmNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50MzIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDMyXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDMyKVxuXG50eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDMyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQzMlxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQ2NClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50NjRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjQpXG5cbnR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDY0XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5JbnQ2NH1bQmFzZS5JbnQ2NF19LiAqKVxuXG4oKiogezIgSW50ZXJmYWNlIGZyb20gQmFzZX0gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5JbnQ2NFxuZW5kXG5cbigqKiB7MiBFeHRlbnNpb25zfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZVxuICBJbnRfaW50Zi5FeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIEJpbiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgOj0gQmFzZS5JbnQ2My50ID0gc3RydWN0XG4gIG1vZHVsZSBCaW5fZW11bGF0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC5XLndyYXBfZXhuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC5XLnVud3JhcFxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgYmluYWJsZSA9IChtb2R1bGUgQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gIGxldCBiaW5hYmxlX29mX3JlcHIgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYiBiaW5hYmxlID0gZnVuY3Rpb25cbiAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiAobW9kdWxlIEludClcbiAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IChtb2R1bGUgQmluX2VtdWxhdGVkKVxuICA7O1xuXG4gIGxldCBiaW5hYmxlIDogQmFzZS5JbnQ2My50IGJpbmFibGUgPSBiaW5hYmxlX29mX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcblxuICBpbmNsdWRlICh2YWwgYmluYWJsZSlcblxuICBsZXQgYmluX3NoYXBlX3QgPSBCaW5fcHJvdC5TaGFwZS5iaW5fc2hhcGVfaW50NjNcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCaW5cblxuICAgICAgaW5jbHVkZSAoXG4gICAgICAgIEJhc2UuSW50NjMgOlxuICAgICAgICAgIEJhc2UuQ29tcGFyYWJsZS5TXG4gICAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IEJhc2UuSW50NjMuY29tcGFyYXRvcl93aXRuZXNzKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG4oKiBUaGlzIFtpbmNsdWRlIHN0cnVjdF0gaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCBsZXRzIHVzIHNoYWRvdyBbdF0gd2hlbiB3ZSBpbmNsdWRlXG4gICBbQmFzZS5JbnQ2M10gbGF0ZXIgb24uICopXG5pbmNsdWRlIHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnRcbmVuZFxuXG5sZXQgdHlwZXJlcF9vZl90ID0gdHlwZXJlcF9vZl9pbnQ2M1xubGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl9pbnQ2M1xuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQ2MylcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIEJpblxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmFibGUuUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID1cbiAgQmFzZS5JbnQ2M1xuXG5pbmNsdWRlIEJhc2UuSW50NjNcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjMpXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIEJhc2UuRXhwb3J0XG4gIG9wZW4gQmluX3Byb3QuU3RkXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLlVuaXQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuVW5pdFxuXG50eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IudW5pdFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5pdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIudW5pdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnIGVuZFxuXG50eXBlIG0gPSAobW9kdWxlIFMpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG9wZW4gU2V4cGxpYi5TdGRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgICBsZXQgbWFwID0gQmFzZS5MYXp5Lm1hcFxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIFN0YWJsZS5WMS50XG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIChCYXNlLkxhenkgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuTmF0aXZlaW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuTmF0aXZlaW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLk5hdGl2ZWludClcblxudHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubmF0aXZlaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuTm90aGluZy50ID0gfFxuXG4gICAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3NoYXBlXVxuICAgIGVuZFxuXG4gICAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBCYXNlLk5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fc2hhcGVfdCA9IFNoYXBlLmJpbl9zaGFwZV90XG4gICAgbGV0IHRwX2xvYyA9IFslaGVyZV0ucG9zX2ZuYW1lIF4gXCIuU3RhYmxlLlYxLnRcIlxuICAgIGxldCBhbGwgPSBbXVxuICAgIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgICBsZXQgYmluX3NpemVfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3dyaXRlX3QgX2J1ZiB+cG9zOl8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgXyA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIHRwX2xvYyAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCBfYnVmIH5wb3NfcmVmID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV9yZWFkX2Vycm9yIChFbXB0eV90eXBlIHRwX2xvYykgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliLkNvbnZfZXJyb3IuZW1wdHlfdHlwZSB0cF9sb2Mgc2V4cFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLk5vdGhpbmdcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoQmFzZS5Ob3RoaW5nKSAoU3RhYmxlLlYxKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgbmV2ZXJfcmV0dXJucyA9IE5vdGhpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbmV2ZXJfcmV0dXJucyA9IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEJhc2UuT3JkZXJpbmcudCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLk9yZGVyaW5nIHdpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSAoQmFzZS5PcmRlcmluZyA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5SZWZcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG5cbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gIGxldCByZWFkX29ubHkgPSBGbi5pZFxuICBsZXQgb2ZfcmVmID0gRm4uaWRcbiAgbGV0IHRvX3JlZiA9IEZuLmlkXG4gIGxldCBzZXQgPSAoIDo9IClcbiAgbGV0IGdldCA9ICggISApXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5pbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbikgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuIiwiKCogV2UgZG9uJ3QganVzdCBpbmNsdWRlIFNleHBsaWIuU3RkIGJlY2F1c2Ugb25lIGNhbiBvbmx5IGRlZmluZSBIYXNodGJsIG9uY2UgaW4gdGhpc1xuICAgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIFtpbmNsdWRlXWQgZmlyc3Qgc28gdGhhdCBldmVyeXRoaW5nIGVsc2Ugc2hhZG93cyBpdCAqKVxuaW5jbHVkZSBDb3JlX3BlcnZhc2l2ZXNcblxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbmluY2x1ZGUgRGVwcmVjYXRlX3BpcGVfYmFuZ1xuaW5jbHVkZSBFaXRoZXIuRXhwb3J0XG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuaW5jbHVkZSBJbnRlcmZhY2VzXG5pbmNsdWRlIExpc3QuSW5maXhcbmluY2x1ZGUgTmV2ZXJfcmV0dXJuc1xuaW5jbHVkZSBPcmRlcmluZy5FeHBvcnRcbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5pbmNsdWRlIFJlc3VsdC5FeHBvcnRcblxudHlwZSAtJ2EgcmV0dXJuID0gJ2EgV2l0aF9yZXR1cm4ucmV0dXJuID0gcHJpdmF0ZSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmluY2x1ZGUgc3RydWN0XG4gIGV4Y2VwdGlvbiBCdWcgb2Ygc3RyaW5nIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSBEb24ndCB1c2UgW0J1Z11cIl1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cblxuKCoqIFJhaXNlZCBpZiBtYWxsb2MgaW4gQyBiaW5kaW5ncyBmYWlsIChlcnJubyAqIHNpemUpLiAqKVxuZXhjZXB0aW9uIENfbWFsbG9jX2V4biBvZiBpbnQgKiBpbnRcblxuKCogZXJybm8sIHNpemUgKilcbmxldCAoKSA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkNfbWFsbG9jX2V4blwiIChDX21hbGxvY19leG4gKDAsIDApKVxuXG5leGNlcHRpb24gRmluYWxseSA9IEV4bi5GaW5hbGx5XG5cbmxldCBmc3QzICh4LCBfLCBfKSA9IHhcbmxldCBzbmQzIChfLCB5LCBfKSA9IHlcbmxldCB0cmQzIChfLCBfLCB6KSA9IHpcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgbGV0IHV3ID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZSBDYW1sLk5vdF9mb3VuZFxuICA7O1xuZW5kIDpcbnNpZ1xuICB2YWwgdXcgOiAnYSBvcHRpb24gLT4gJ2EgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEyXSBVc2UgW09wdGlvbi52YWx1ZV9leG5dXCJdXG5lbmQpXG5cbigqKiBbcGh5c19zYW1lXSBpcyBsaWtlIFtwaHlzX2VxdWFsXSwgYnV0IHdpdGggYSBtb3JlIGdlbmVyYWwgdHlwZS4gIFtwaHlzX3NhbWVdIGlzIHVzZWZ1bFxuICAgIHdoZW4gZGVhbGluZyB3aXRoIGV4aXN0ZW50aWFsIHR5cGVzLCB3aGVuIG9uZSBoYXMgYSBwYWNrZWQgdmFsdWUgYW5kIGFuIHVucGFja2VkIHZhbHVlXG4gICAgdGhhdCBvbmUgd2FudHMgdG8gY2hlY2sgYXJlIHBoeXNpY2FsbHkgZXF1YWwuICBPbmUgY2FuJ3QgdXNlIFtwaHlzX2VxdWFsXSBpbiBzdWNoIGFcbiAgICBzaXR1YXRpb24gYmVjYXVzZSB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudC4gKilcbmxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKE9iai5tYWdpYyBiIDogYSlcblxubGV0ICggJSApID0gSW50LiggJSApXG5sZXQgKCAvJSApID0gSW50LiggLyUgKVxubGV0ICggLy8gKSA9IEludC4oIC8vIClcbmxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxubGV0IGJwcmludGYgPSBQcmludGYuYnByaW50ZlxubGV0IGNvbnN0ID0gRm4uY29uc3RcbmxldCBlcHJpbnRmID0gUHJpbnRmLmVwcmludGZcbmxldCBlcnJvciA9IE9yX2Vycm9yLmVycm9yXG5sZXQgZXJyb3JfcyA9IE9yX2Vycm9yLmVycm9yX3NcbmxldCBmYWlsd2l0aGYgPSBCYXNlLlByaW50Zi5mYWlsd2l0aGZcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgbGV0IGZhaWx3aXRocCA9IChFcnJvci5mYWlsd2l0aHAgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdKVxuZW5kIDpcbnNpZ1xuICB2YWwgZmFpbHdpdGhwXG4gICAgOiAgP3N0cmljdDp1bml0XG4gICAgLT4gU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgIC0+IHN0cmluZ1xuICAgIC0+ICdhXG4gICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAtPiBfXG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gVXNlIFtmYWlsd2l0aHNdIGluc3RlYWQuXCJdXG5lbmQpXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBmb3JjZSA9IEJhc2UuTGF6eS5mb3JjZVxubGV0IGZwcmludGYgPSBQcmludGYuZnByaW50ZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgaWRlbnQgPSBGbi5pZFxuZW5kIDpcbnNpZ1xuICB2YWwgaWRlbnQgOiAnYSAtPiAnYSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDhdIFVzZSBbRm4uaWRdIGluc3RlYWQuXCJdXG5lbmQpXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBCYXNlLlByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBpZnByaW50ZiA9IFByaW50Zi5pZnByaW50ZlxubGV0IGlzX25vbmUgPSBPcHRpb24uaXNfbm9uZVxubGV0IGlzX3NvbWUgPSBPcHRpb24uaXNfc29tZVxubGV0IGtzcHJpbnRmID0gUHJpbnRmLmtzcHJpbnRmXG5sZXQgb2tfZXhuID0gT3JfZXJyb3Iub2tfZXhuXG5sZXQgcGh5c19lcXVhbCA9IEJhc2UucGh5c19lcXVhbFxubGV0IHBoeXNfc2FtZSA9IHBoeXNfc2FtZVxubGV0IHByaW50X3MgPSBTdGRpby5wcmludF9zXG5sZXQgZXByaW50X3MgPSBTdGRpby5lcHJpbnRfc1xubGV0IHByaW50ZiA9IFByaW50Zi5wcmludGZcbmxldCBwcm90ZWN0ID0gRXhuLnByb3RlY3RcbmxldCBwcm90ZWN0eCA9IEV4bi5wcm90ZWN0eFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgcm91bmQgPSBGbG9hdC5yb3VuZFxubGV0ICggKiouICkgPSBCYXNlLiggKiouIClcbmxldCAoICUuICkgPSBCYXNlLiggJS4gKVxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcbmxldCB1bnN0YWdlID0gU3RhZ2VkLnVuc3RhZ2VcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5fb3B0aW9uXG5cbigqIFdpdGggdGhlIGZvbGxvd2luZyBhbGlhc2VzLCB3ZSBhcmUganVzdCBtYWtpbmcgZXh0cmEgc3VyZSB0aGF0IHRoZSB0b3BsZXZlbCBzZXhwXG4gICBjb252ZXJ0ZXJzIGxpbmUgdXAgd2l0aCB0aGUgb25lcyBpbiBvdXIgbW9kdWxlcy4gKilcblxuXG5pbmNsdWRlIFR5cGVyZXBfbGliLlN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSwgW2J5dGVzXSwgYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZVxuICAgICBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBib29sID0gQm9vbC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludCA9IEludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90ID0gJ2EgTGF6eS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgKCogQmluX3Byb3QgaGFzIG9wdGltaXplZCBmdW5jdGlvbnMgZm9yIGZsb2F0IGFycmF5cyAqKVxuICBpbmNsdWRlIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IEZsb2F0LnQgYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSBmbG9hdF9hcnJheSA6PSBmbG9hdF9hcnJheSlcbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgYm9vbCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgY2hhciBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgZmxvYXQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGludCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50MzIgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlIGludDY0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2Egb3B0aW9uXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXlcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBpbnN0ZWFkXCJdXG4gIGVuZFxuICAgICAgICAgIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuZW5kXG53aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbndpdGggdHlwZSBib29sIDo9IGJvb2xcbndpdGggdHlwZSBjaGFyIDo9IGNoYXJcbndpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxud2l0aCB0eXBlIGludCA6PSBpbnRcbndpdGggdHlwZSBpbnQzMiA6PSBpbnQzMlxud2l0aCB0eXBlIGludDY0IDo9IGludDY0XG53aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG53aXRoIHR5cGUgbmF0aXZlaW50IDo9IG5hdGl2ZWludFxud2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbndpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG53aXRoIHR5cGUgYnl0ZXMgOj0gYnl0ZXNcbndpdGggdHlwZSAnYSBsYXp5X3QgOj0gJ2EgbGF6eV90XG53aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxud2l0aCB0eXBlIHVuaXQgOj0gdW5pdClcblxubGV0IHNleHBfb2ZfZXhuID0gRXhuLnNleHBfb2ZfdFxuXG5cbigqIFRoZSBjb2RlIGJlbG93IGNoZWNrcyB0aGF0IHRoZSBzaWduYXR1cmVzIGluIG1hcC5tbGkgYW5kIHNldC5tbGkgYXJlXG4gICBjb25zaXN0ZW50IHdpdGggdGhlIGdlbmVyaWMgbWFwIGFuZCBzZXQgc2lnbmF0dXJlcyBkZWZpbmVkIGluIG1hcF9pbnRmLm1sXG4gICBhbmQgc2V0X2ludGYubWwuICopXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIGNtcCA9ICdhXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIF8gOiBzaWdcbiAgICBvcGVuIFNldF9pbnRmXG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIFRyZWUuTmFtZWQudFxuICAgIGVuZFxuXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMyXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBULmNtcFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnMgOj1cbiAgICAgICAgKCdhLCAnY21wLCAneikgU2V0X2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICBlbmQgPVxuICAgIFNldFxuICBpblxuICAoKVxuOztcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnayBrZXkgPSAna1xuICAgIHR5cGUgJ2MgY21wID0gJ2NcbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgXyA6IHNpZ1xuICAgIG9wZW4gTWFwX2ludGZcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICBlbmRcblxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zIDo9XG4gICAgICAgICgnYSwgJ2NtcCwgJ3opIE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sgVC5rZXlcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MgVC5jbXBcbiAgZW5kID1cbiAgICBNYXBcbiAgaW5cbiAgKClcbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdIFtAQGltbWVkaWF0ZTY0XVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2ZfcmVwciA6IFJlcHIudCAtPiB0XG4gIHZhbCB0b19yZXByIDogdCAtPiBSZXByLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXByLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgb2ZfcmVwciA9IEZuLmlkXG4gIGxldCB0b19yZXByID0gRm4uaWRcblxuICBsZXQgdG9fc3RyaW5nIG4gPVxuICAgIGxldCBvcGVuIFJlcHIgaW5cbiAgICBsZXQga2liID0gb2ZfaW50IDEwMjQgaW5cbiAgICBsZXQgbWliID0ga2liICoga2liIGluXG4gICAgbGV0IGdpYiA9IGtpYiAqIG1pYiBpblxuICAgIGxldCBuX2FicyA9IGFicyBuIGluXG4gICAgaWYgbl9hYnMgPCBraWJcbiAgICB0aGVuIHNwcmludGYgXCIlZEJcIiAodG9faW50X2V4biBuKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBtaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ0tcIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBraWIpXG4gICAgZWxzZSBpZiBuX2FicyA8IGdpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnTVwiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IG1pYilcbiAgICBlbHNlIHNwcmludGYgXCIlZ0dcIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBnaWIpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgbilcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGJ5dGVzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAodG9fcmVwciB0KVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBCaWdhcnJheVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZV9iaWdzdHJpbmdcblxuICAgIG1vZHVsZSBaIDogc2lnXG4gICAgICB0eXBlIHQgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBiaWdzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBaXG5cbiAgICB0eXBlIHRfZnJvemVuID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gU3RhYmxlLlYxXG5pbmNsdWRlIFRcbm1vZHVsZSBVbnN0YWJsZSA9IFRcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24ubWFwIG1heF9tZW1fd2FpdGluZ19nYyB+ZjpCeXRlX3VuaXRzMC5ieXRlc19pbnRfZXhuXG4gIGluXG4gIGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemVcbjs7XG5cbmxldCBzdWJfc2hhcmVkID8ocG9zID0gMCkgP2xlbiAoYnN0ciA6IHQpID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgQXJyYXkxLnN1YiBic3RyIHBvcyBsZW5cbjs7XG5cbigqIERlc3RydWN0aW9uICopXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95IDogdCAtPiB1bml0ID0gXCJiaWdzdHJpbmdfZGVzdHJveV9zdHViXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3lfYW5kX3Jlc2l6ZSA6IHQgLT4gbGVuOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfcmVhbGxvY1wiXG5cbigqIFJlYWRpbmcgLyB3cml0aW5nIGJpbi1wcm90ICopXG5cbmxldCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgPyhwb3MgPSAwKSA/bGVuIHJlYWRlciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiB0IGxlbiB+cG9zIGluXG4gIGxldCBsaW1pdCA9IHBvcyArIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJyZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzXCIgdCB+cG9zIH5sZW47XG4gIGxldCBpbnZhbGlkX2RhdGEgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gICAgYEludmFsaWRfZGF0YSAoRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG4gIGluXG4gIGxldCByZWFkIGJpbl9yZWFkZXIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiBsaW1pdCAtIHBvc1xuICAgIHRoZW4gYE5vdF9lbm91Z2hfZGF0YVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICBtYXRjaFxuICAgICAgICB0cnkgYE9rIChiaW5fcmVhZGVyIHQgfnBvc19yZWYpIHdpdGhcbiAgICAgICAgfCBleG4gLT4gYEludmFsaWRfZGF0YSAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICAgIHdpdGhcbiAgICAgIHwgYEludmFsaWRfZGF0YSBfIGFzIHggLT4geFxuICAgICAgfCBgT2sgcmVzdWx0IC0+XG4gICAgICAgIGxldCBleHBlY3RlZF9wb3MgPSBwb3MgKyBsZW4gaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPSBleHBlY3RlZF9wb3NcbiAgICAgICAgdGhlbiBgT2sgKHJlc3VsdCwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9kYXRhXG4gICAgICAgICAgICBcInBvc19yZWYgPD4gZXhwZWN0ZWRfcG9zXCJcbiAgICAgICAgICAgICghcG9zX3JlZiwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBpbnRdKVxuICBpblxuICBtYXRjaFxuICAgIHJlYWQgQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgfnBvcyB+bGVuOkJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICB3aXRoXG4gIHwgKGBOb3RfZW5vdWdoX2RhdGEgfCBgSW52YWxpZF9kYXRhIF8pIGFzIHggLT4geFxuICB8IGBPayAoZWxlbWVudF9sZW5ndGgsIHBvcykgLT5cbiAgICBpZiBlbGVtZW50X2xlbmd0aCA8IDBcbiAgICB0aGVuIGludmFsaWRfZGF0YSBcIm5lZ2F0aXZlIGVsZW1lbnQgbGVuZ3RoICVkXCIgZWxlbWVudF9sZW5ndGggWyVzZXhwX29mOiBpbnRdXG4gICAgZWxzZSByZWFkIHJlYWRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgfnBvcyB+bGVuOmVsZW1lbnRfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9iaW5fcHJvdCB0ID9wb3MgP2xlbiByZWFkZXIgPVxuICBtYXRjaCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgP3BvcyA/bGVuIHJlYWRlciB3aXRoXG4gIHwgYE9rIHggLT4gT2sgeFxuICB8IGBJbnZhbGlkX2RhdGEgZSAtPiBFcnJvciAoRXJyb3IudGFnIGUgfnRhZzpcIkludmFsaWQgZGF0YVwiKVxuICB8IGBOb3RfZW5vdWdoX2RhdGEgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwibm90IGVub3VnaCBkYXRhXCJcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdCB0ID8ocG9zID0gMCkgd3JpdGVyIHYgPVxuICBsZXQgZGF0YV9sZW4gPSB3cml0ZXIuQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplIHYgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IGRhdGFfbGVuICsgQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIGlmIHBvcyA8IDBcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBuZWdhdGl2ZSBwb3NcIiBwb3MgWyVzZXhwX29mOiBpbnRdO1xuICBpZiBwb3MgKyB0b3RhbF9sZW4gPiBsZW5ndGggdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbm90IGVub3VnaCByb29tXCJcbiAgICAgIChgcG9zIHBvcywgYHBvc19hZnRlcl93cml0aW5nIChwb3MgKyB0b3RhbF9sZW4pLCBgYmlnc3RyaW5nX2xlbmd0aCAobGVuZ3RoIHQpKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3Mgb2YgaW50IF0gKiBbIGBwb3NfYWZ0ZXJfd3JpdGluZyBvZiBpbnQgXSAqIFsgYGJpZ3N0cmluZ19sZW5ndGggb2YgaW50IF1dO1xuICBsZXQgcG9zX2FmdGVyX3NpemVfaGVhZGVyID0gQmluX3Byb3QuVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIHQgfnBvcyBkYXRhX2xlbiBpblxuICBsZXQgcG9zX2FmdGVyX2RhdGEgPSB3cml0ZXIuQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZSB0IH5wb3M6cG9zX2FmdGVyX3NpemVfaGVhZGVyIHYgaW5cbiAgaWYgcG9zX2FmdGVyX2RhdGEgLSBwb3MgPD4gdG90YWxfbGVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90IGJ1ZyFcIlxuICAgICAgKCBgcG9zX2FmdGVyX2RhdGEgcG9zX2FmdGVyX2RhdGFcbiAgICAgICwgYHN0YXJ0X3BvcyBwb3NcbiAgICAgICwgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgICAgICwgYGRhdGFfbGVuIGRhdGFfbGVuXG4gICAgICAsIGB0b3RhbF9sZW4gdG90YWxfbGVuIClcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zX2FmdGVyX2RhdGEgb2YgaW50IF1cbiAgICAgICAgKiBbIGBzdGFydF9wb3Mgb2YgaW50IF1cbiAgICAgICAgKiBbIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggb2YgaW50IF1cbiAgICAgICAgKiBbIGBkYXRhX2xlbiBvZiBpbnQgXVxuICAgICAgICAqIFsgYHRvdGFsX2xlbiBvZiBpbnQgXV07XG4gIHBvc19hZnRlcl9kYXRhXG47O1xuXG4oKiBIZXggZHVtcCAqKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcmVjIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zIH5jaGFyID1cbiAgbGV0IHBvcycgPSBwb3MgLSAxIGluXG4gIGlmIHBvcycgPj0gbWluX3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcycpIGNoYXJcbiAgdGhlbiBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvczpwb3MnIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2VuZCA9XG4gICAgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmOnQgfm1pbl9wb3M6cG9zIH5wb3M6KHBvcyArIGxlbikgfmNoYXI6cGFkZGluZ1xuICBpblxuICB0b19zdHJpbmcgdCB+cG9zIH5sZW46KGRhdGFfZW5kIC0gcG9zKVxuOztcblxubGV0IHNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gdmFsdWUgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlblxuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJCaWdzdHJpbmcuc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZzogJVMgaXMgbG9uZ2VyIHRoYW4gJWRcIlxuICAgICAgdmFsdWVcbiAgICAgIGxlblxuICAgICAgKCk7XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3Bvczpwb3MgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyArIHNsZW4gdG8gcG9zICsgbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgcmVjIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvcyB+bWF4X3BvcyB+Y2hhciA9XG4gIGlmIHBvcyA8PSBtYXhfcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zKSBjaGFyXG4gIHRoZW4gZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zOihJbnQuc3VjYyBwb3MpIH5tYXhfcG9zIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgc2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiB2YWx1ZSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkJpZ3N0cmluZy5zZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgICB2YWx1ZVxuICAgICAgbGVuXG4gICAgICAoKTtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOihwb3MgKyBsZW4gLSBzbGVuKSB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zIHRvIHBvcyArIGxlbiAtIHNsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICB0b19zdHJpbmcgdCB+cG9zOmRhdGFfYmVnaW4gfmxlbjoobGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYmlnc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3RcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICAgIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgICB9XG5cbiAgbGV0IHRvX3N0cmluZyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5cbiAgbGV0IHRvX2J5dGVzIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuZW5kXG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPVxuICAgIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gICAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICAgIH1cblxuICBsZXQgb2Zfc3RyaW5nIHQgc3RyaW5nID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcblxuICBsZXQgb2ZfYnl0ZXMgdCBieXRlcyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9ieXRlcyBieXRlcyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuZW5kXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJpbl9wcm90Lk1kNVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IFN0cmluZy5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBTdHJpbmcudF9vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBoYXNoX2ZvbGRfdCBhY2N1bSB0ID0gU3RyaW5nLmhhc2hfZm9sZF90IGFjY3VtIChULnRvX2JpbmFyeSB0KVxubGV0IGhhc2ggdCA9IFN0cmluZy5oYXNoIChULnRvX2JpbmFyeSB0KVxuXG5tb2R1bGUgQXNfYmluYXJ5X3N0cmluZyA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gU3RyaW5nLnNleHBfb2ZfdCAoVC50b19iaW5hcnkgeClcbiAgICAgIGxldCB0X29mX3NleHAgeCA9IFQub2ZfYmluYXJ5X2V4biAoU3RyaW5nLnRfb2Zfc2V4cCB4KVxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBCaW5hYmxlID0gU3RyaW5nXG5cbiAgICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBULnRvX2JpbmFyeVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gVC5vZl9iaW5hcnlfZXhuXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICBsZXQgaGFzaCA9IGhhc2hcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluX3Byb3QuTWQ1XG5cbiAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gRm4uaWRcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbGV0IGRpZ2VzdF9zdHJpbmcgcyA9IE1kNV9saWIuc3RyaW5nIHNcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgZGlnZXN0X251bV9ieXRlcyA9IDE2XG5sZXQgdG9faGV4ID0gVC50b19oZXhcbmxldCBmcm9tX2hleCA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2hleF9leG4gPSBULm9mX2hleF9leG5cbmxldCBvZl9iaW5hcnlfZXhuID0gVC5vZl9iaW5hcnlfZXhuXG5sZXQgdG9fYmluYXJ5ID0gVC50b19iaW5hcnlcbmxldCBkaWdlc3Rfc3RyaW5nID0gU3RhYmxlLmRpZ2VzdF9zdHJpbmdcbmxldCBkaWdlc3RfYnl0ZXMgPSBNZDVfbGliLmJ5dGVzXG5cbmV4dGVybmFsIGNhbWxfc3lzX29wZW5cbiAgOiAgc3RyaW5nXG4gIC0+IENhbWwub3Blbl9mbGFnIGxpc3RcbiAgLT4gcGVybTppbnRcbiAgLT4gaW50XG4gID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgY2FtbF9zeXNfY2xvc2UgOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuZXh0ZXJuYWwgZGlnZXN0X2ZkX2Jsb2NraW5nIDogaW50IC0+IHN0cmluZyA9IFwiY29yZV9tZDVfZmRcIlxuXG5sZXQgZGlnZXN0X2ZpbGVfYmxvY2tpbmcgcGF0aCA9XG4gIG9mX2JpbmFyeV9leG5cbiAgICAoQmFzZS5FeG4ucHJvdGVjdHhcbiAgICAgICAoY2FtbF9zeXNfb3BlbiBwYXRoIFsgT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5IF0gfnBlcm06MG8wMDApXG4gICAgICAgfmY6ZGlnZXN0X2ZkX2Jsb2NraW5nXG4gICAgICAgfmZpbmFsbHk6Y2FtbF9zeXNfY2xvc2UpXG47O1xuXG5sZXQgZmlsZSA9IGRpZ2VzdF9maWxlX2Jsb2NraW5nXG5cbmxldCBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuID1cbiAgb2ZfYmluYXJ5X2V4biAoQ2FtbC5EaWdlc3QuY2hhbm5lbCBjaGFubmVsIGxlbilcbjs7XG5cbmxldCBjaGFubmVsIGNoYW5uZWwgbGVuID1cbiAgZGlnZXN0X2NoYW5uZWxfYmxvY2tpbmdfd2l0aG91dF9yZWxlYXNpbmdfcnVudGltZV9sb2NrIGNoYW5uZWwgfmxlblxuOztcblxubGV0IG91dHB1dF9ibG9ja2luZyB0IG9jID0gQ2FtbC5EaWdlc3Qub3V0cHV0IG9jICh0b19iaW5hcnkgdClcbmxldCBvdXRwdXQgb2MgdCA9IG91dHB1dF9ibG9ja2luZyB0IG9jXG5sZXQgaW5wdXRfYmxvY2tpbmcgaWMgPSBvZl9iaW5hcnlfZXhuIChDYW1sLkRpZ2VzdC5pbnB1dCBpYylcbmxldCBpbnB1dCA9IGlucHV0X2Jsb2NraW5nXG5sZXQgZGlnZXN0X3N1YmJ5dGVzID0gTWQ1X2xpYi5zdWJieXRlc1xubGV0IHN0cmluZyA9IGRpZ2VzdF9zdHJpbmdcbmxldCBieXRlcyA9IGRpZ2VzdF9ieXRlc1xubGV0IHN1YmJ5dGVzIHMgcG9zIGxlbiA9IGRpZ2VzdF9zdWJieXRlcyBzIH5wb3MgfmxlblxuXG5sZXQgZGlnZXN0X2Jpbl9wcm90IHdyaXRlciB2YWx1ZSA9XG4gIGRpZ2VzdF9zdHJpbmcgKENvcmVfYmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZyB3cml0ZXIgdmFsdWUpXG47O1xuXG5leHRlcm5hbCBjX2RpZ2VzdF9zdWJiaWdzdHJpbmdcbiAgOiAgQmlnc3RyaW5nLnRcbiAgLT4gcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHJlczpCeXRlcy50XG4gIC0+IHVuaXRcbiAgPSBcImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcIlxuXG5sZXQgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICgqIEl0J3MgbW9yZSBlZmZpY2llbnQgdG8gYWxsb2NhdGUgdGhlIHJlc3VsdCBvbiB0aGUgT0NhbWwgc2lkZSBhbmQgZGVjbGFyZSB0aGUgQ1xuICAgICBmdW5jdGlvbiBhcyBub2FsbG9jIHRoYW4gdG8gbGV0IHRoZSBDIGZ1bmN0aW9uIGFsbG9jYXRlLiAqKVxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGNfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuIH5yZXM7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeVxuICAgIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbmxldCBkaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvc1xuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbjs7XG5cbmxldCBkaWdlc3RfYmlnc3RyaW5nIGJ1ZiA9XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbjooQmlnc3RyaW5nLmxlbmd0aCBidWYpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5hYmxlMFxuXG4oKiBbb2Zfc3RyaW5nXSBhbmQgW3RvX3N0cmluZ10gY2FuJ3QgZ28gaW4gYmluYWJsZTAubWwgZHVlIHRvIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgb2Zfc3RyaW5nIG0gc3RyaW5nID0gb2ZfYmlnc3RyaW5nIG0gKEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyBtIHQgPSBCaWdzdHJpbmcudG9fc3RyaW5nICh0b19iaWdzdHJpbmcgbSB0KVxuXG5tb2R1bGUgT2ZfYmluYWJsZSA9IE9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX2JpbmFibGUxID0gT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX2JpbmFibGUyID0gT2ZfYmluYWJsZTJfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX2JpbmFibGUzID0gT2ZfYmluYWJsZTNfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX3NleHBhYmxlID0gT2Zfc2V4cGFibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxubW9kdWxlIE9mX3N0cmluZ2FibGUgPSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCBbQEBhbGVydCBcIi1sZWdhY3lcIl1cbiIsIigqIEZ1bmN0aW9ucyBmb3IgcGFyc2luZyB0aW1lIHpvbmUgZGF0YWJhc2UgZmlsZXMgKHppYyBmaWxlcykuXG5cbiAgIEEgdGltZSB6b25lIGZpbGUgY29uc2lzdHMgKGNvbmNlcHR1YWxseSAtIHRoZSByZXByZXNlbnRhdGlvbiBpcyBtb3JlXG4gICBjb21wYWN0KSBvZiBhbiBvcmRlcmVkIGxpc3Qgb2YgKFRpbWUudCAqIFtsb2NhbF90aW1lX3R5cGVdKSB0aGF0IG1hcmtcbiAgIHRoZSBib3VuZGFyaWVzIChtYXJrZWQgZnJvbSB0aGUgZXBvY2gpIGF0IHdoaWNoIHZhcmlvdXMgdGltZSBhZGp1c3RtZW50XG4gICByZWdpbWVzIGFyZSBpbiBlZmZlY3QuICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgYnJlYWtpbmcgZG93biBhbGxcbiAgIHRpbWUgcGFzdCB0aGUgZXBvY2ggaW50byByYW5nZXMgd2l0aCBhIFtsb2NhbF90aW1lX3R5cGVdIHRoYXQgZGVzY3JpYmVzIHRoZVxuICAgb2Zmc2V0IGZyb20gR01UIHRvIGFwcGx5IHRvIGVhY2ggcmFuZ2UgdG8gZ2V0IGxvY2FsIHRpbWUuXG4qKVxuXG5vcGVuIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgWm9uZV9pbnRmXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX2ZpbGVfZm9ybWF0IG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBGdWxsX2RhdGEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbmRleCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjXG4gICAgICAgIGxldCBwcmV2ID0gSW50LnByZWRcbiAgICAgICAgbGV0IGJlZm9yZV9maXJzdF90cmFuc2l0aW9uID0gLTFcblxuICAgICAgICAoKiBTb21lIGV4aXN0aW5nIGNsaWVudHMgZXhwZWN0IFtpbmRleCA+PSAwXSwgc28gd2UgbmV2ZXIgc2VyaWFsaXplIGEgbmVnYXRpdmVcbiAgICAgICAgICAgaW5kZXguIFRoaXMgY29udmVyc2lvbiBjYW4gYmUgcmVtb3ZlZCBpZiBuZXcgc3RhYmxlIHZlcnNpb25zIGFyZSBtaW50ZWQuICopXG4gICAgICAgIGxldCB0b19leHRlcm5hbCB0ID0gbWF4IDAgdFxuXG4gICAgICAgICgqIFdoZW4gdGhlIGluZGV4IG9mIGEgdGltZSB6b25lIHdpdGggbm8gdHJhbnNpdGlvbnMgaXMgY29udmVydGVkIHZpYSB0b19leHRlcm5hbCxcbiAgICAgICAgICAgaXRzIHZhbHVlIGJlY29tZXMgMCBldmVuIHRob3VnaCBpdHMgdHJhbnNpdGlvbiBhcnJheSBpcyBlbXB0eSAoYW5kIGl0IHNob3VsZFxuICAgICAgICAgICBoYXZlIGJlZW4gLTEpLiBXaGVuIHRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgY2hhbmdlZCBiYWNrIHRvIGEgWm9uZS50IHRocm91Z2hcbiAgICAgICAgICAgb2ZfZXh0ZXJuYWwsIHJldHVybmluZyB0aGlzIHZhbHVlIGZvciBpdHMgaW5kZXggY291bGQgcmVzdWx0IGluIHVuc2FmZSBhcnJheVxuICAgICAgICAgICBhY2Nlc3NlcyB0byB0aGUgdHJhbnNpdGlvbiBhcnJheSBvZiB0aGUgem9uZSAoc2luY2UgdGhlcmUgaXMgbm8gdHJhbnNpdGlvbiBhdFxuICAgICAgICAgICBpbmRleCAwKS4gQWxzbywgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBrZWVwIHRoZSBjb252ZXJ0ZWQgaW5kZXggYmVjYXVzZSBpdFxuICAgICAgICAgICBpcyBpbnRlbmRlZCB0byBiZSBhIG11dGFibGUgdmFsdWUgdXNlZCBmb3IgY2FjaGluZy4gU28gb2ZfZXh0ZXJuYWwgYWx3YXlzIHNldHNcbiAgICAgICAgICAgdGhlIGluZGV4IHRvIC0xLCB3aGljaCBpcyBhIHNhZmUgdmFsdWUuICopXG4gICAgICAgIGxldCBvZl9leHRlcm5hbCAoXyA6IHQpID0gLTFcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKEludClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpbWUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBpc19kc3QgOiBib29sXG4gICAgICAgICAgOyBhYmJydiA6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgICgqIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHdoZW4gbGVhcCBzZWNvbmRzIHNob3VsZCBiZSBhcHBsaWVkIC0gdW51c2VkXG4gICAgICAgICBiZWNhdXNlIHdlIGFyZSB0cmFuc2xhdGluZyBiYXNlZCBvbiBhIGVwb2NoIHN5c3RlbSBjbG9jayAoc2VlIHRoZSBDb3JlX3pvbmVcbiAgICAgICAgIGRvY3VtZW50YXRpb24pLiAqKVxuICAgICAgbW9kdWxlIExlYXBfc2Vjb25kID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgc2Vjb25kcyA6IGludFxuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUcmFuc2l0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyBzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgbmV3X3JlZ2ltZSA6IFJlZ2ltZS50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDtcbiAgICAgICAgICBkaWdlc3QgOiBNZDUuQXNfYmluYXJ5X3N0cmluZy50IG9wdGlvblxuICAgICAgICA7IHRyYW5zaXRpb25zIDogVHJhbnNpdGlvbi50IGFycmF5XG4gICAgICAgIDsgKCogY2FjaGVzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cmFuc2l0aW9uIHdlIHVzZWQgdG8gbWFrZSBsb29rdXBzIGZhc3RlciAqKVxuICAgICAgICAgIG11dGFibGUgbGFzdF9yZWdpbWVfaW5kZXggOiBJbmRleC50XG4gICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgOiBSZWdpbWUudFxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA6IExlYXBfc2Vjb25kLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgICgqIHRoaXMgcmVsaWVzIG9uIHpvbmVzIHdpdGggdGhlIHNhbWUgbmFtZSBoYXZpbmcgdGhlIHNhbWUgdHJhbnNpdGlvbnMgKilcbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID0gU3RyaW5nLmNvbXBhcmUgdDEubmFtZSB0Mi5uYW1lXG4gICAgICBsZXQgb3JpZ2luYWxfZmlsZW5hbWUgem9uZSA9IHpvbmUub3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgIGxldCBkaWdlc3Qgem9uZSA9IHpvbmUuZGlnZXN0XG5cbiAgICAgIG1vZHVsZSBab25lX2ZpbGUgOiBzaWdcbiAgICAgICAgdmFsIGlucHV0X3R6X2ZpbGUgOiB6b25lbmFtZTpzdHJpbmcgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBsZXQgYm9vbF9vZl9pbnQgaSA9IGkgPD4gMFxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDMyID1cbiAgICAgICAgICBsZXQgbG9uZyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgbGV0IGludDMyX29mX2NoYXIgY2hyID0gSW50MzIub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGZ1biBpYyAtPlxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZyB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgbGV0IHNiMSA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDApKSAyNCBpblxuICAgICAgICAgICAgbGV0IHNiMiA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDEpKSAxNiBpblxuICAgICAgICAgICAgbGV0IHNiMyA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDIpKSA4IGluXG4gICAgICAgICAgICBsZXQgc2I0ID0gaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMykgaW5cbiAgICAgICAgICAgIEludDMyLmJpdF9vciAoSW50MzIuYml0X29yIHNiMSBzYjIpIChJbnQzMi5iaXRfb3Igc2IzIHNiNClcbiAgICAgICAgOztcblxuICAgICAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIG9uIG51bWJlcnMgdGhhdCB3aWxsIGZpdCBpbnRvIGEgMzEtYml0XG4gICAgICAgICAgIGludC4gVU5JWCB0aW1lc3RhbXBzIHdvbid0LCBmb3IgZXhhbXBsZS4gIEluIG91ciBjYXNlIHRoaXMgaXMgb25seSB1c2VkXG4gICAgICAgICAgIHRvIGhvbGQgc21hbGwgbnVtYmVycyB0aGF0IGFyZSBuZXZlciBpbnRlcnByZXRlZCBhcyB0aW1lc3RhbXBzLiAqKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQgaWMgPSBJbnQzMi50b19pbnRfZXhuIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyA9IEludDYzLm9mX2ludDMyIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMgaWMgPVxuICAgICAgICAgIGxldCBpbnQ2M19vZl9jaGFyIGNociA9IEludDYzLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBsZXQgc2hpZnQgYyBiaXRzID0gSW50NjMuc2hpZnRfbGVmdCAoaW50NjNfb2ZfY2hhciBjKSBiaXRzIGluXG4gICAgICAgICAgbGV0IGxvbmdfbG9uZyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZ19sb25nIH5wb3M6MCB+bGVuOjg7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDApIDU2IGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDEpIDQ4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAyKSA0MCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMykgMzIpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDQpIDI0KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA1KSAxNikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNikgOCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoaW50NjNfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA3KSkgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGlzdCBpYyB+bGVuIH5mID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgYyBsc3QgPVxuICAgICAgICAgICAgaWYgYyA+IDAgdGhlbiBsb29wIChjIC0gMSkgKGYgaWMgOjogbHN0KSBlbHNlIExpc3QucmV2IGxzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBsZW4gW11cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYXJyYXkgaWMgfmxlbiB+ZiA9IEFycmF5Lm9mX2xpc3QgKGlucHV0X2xpc3QgaWMgfmxlbiB+ZilcblxuICAgICAgICBsZXQgaW5wdXRfcmVnaW1lIGljID1cbiAgICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyBpblxuICAgICAgICAgIGxldCBpc19kc3QgPSBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkgaW5cbiAgICAgICAgICBsZXQgYWJicnZfaW5kZXggPSBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpIGluXG4gICAgICAgICAgbGV0IGx0IGFiYnJ2ID0geyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3Q7IGFiYnJ2IH0gaW5cbiAgICAgICAgICBsdCwgYWJicnZfaW5kZXhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuID1cbiAgICAgICAgICBsZXQgcmF3X2FiYnJ2cyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5sZW4gfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgbGV0IF8sIGluZGV4ZWRfYWJicnZzID1cbiAgICAgICAgICAgIExpc3QuZm9sZCByYXdfYWJicnZzIH5pbml0OigwLCBNYXAuUG9seS5lbXB0eSkgfmY6KGZ1biAoaW5kZXgsIGFiYnJ2cykgYyAtPlxuICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgfCAnXFwwMDAnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHRfaW5kZXggPSBpbmRleCArIFN0cmluZy5sZW5ndGggZGF0YSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWJicnZzID0gTWFwLnNldCBhYmJydnMgfmtleTppbmRleCB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgICAgICAgbmV4dF9pbmRleCwgYWJicnZzXG4gICAgICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgICAgICAgICBpbmRleCwgYWJicnZzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPD4gMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChJbnZhbGlkX2ZpbGVfZm9ybWF0XG4gICAgICAgICAgICAgICAgIFwibWlzc2luZyBcXDAwMCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIgaW4gaW5wdXRfYWJicmV2aWF0aW9uc1wiKTtcbiAgICAgICAgICBpbmRleGVkX2FiYnJ2c1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB1dGNfbG9jYWxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBzdGRfd2FsbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGxlYXBfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHlwZV9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2NoYXJfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX3RpbWVzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfdHJhbnNpdGlvbiB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2luZGljZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdFxuICAgICAgICAgICAgICBpY1xuICAgICAgICAgICAgICB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpXG4gICAgICAgICAgICAgIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X3JlZ2ltZSB+bGVuOnR5cGVfY291bnQgaW5cbiAgICAgICAgICBsZXQgYWJicmV2aWF0aW9ucyA9IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbjphYmJydl9jaGFyX2NvdW50IGluXG4gICAgICAgICAgbGV0IGxlYXBfc2Vjb25kcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfbGVhcF9zZWNvbmQgfmxlbjpsZWFwX2NvdW50IGluXG4gICAgICAgICAgKCogVGhlIGZvbGxvd2luZyB0d28gYXJyYXlzIGluZGljYXRlIHR3byBib29sZWFuIHZhbHVlcyBwZXIgcmVnaW1lIHRoYXRcbiAgICAgICAgICAgICByZXByZXNlbnQgYSB0aHJlZS12YWx1ZSB0eXBlIHRoYXQgd291bGQgdHJhbnNsYXRlIHRvOlxuXG4gICAgICAgICAgICAgdHlwZSB0cmFuc2l0aW9uX3R5cGUgPSBVVEMgfCBTdGFuZGFyZCB8IFdhbGxfY2xvY2tcblxuICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIHN5c3RlbSBsaWJyYXJ5IHdoZW4gaGFuZGxpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gICAgICAgICAgICAgVFogdmFyaWFibGUgaXMgc2V0LCBub3QgdG8gYSB0aW1lIHpvbmUgbmFtZSwgYnV0IGluc3RlYWQgaXMgb2YgdGhlIGZvcm06XG5cbiAgICAgICAgICAgICBUWiA9IFwic3RkIG9mZnNldCBkc3Qgb2Zmc2V0LCBydWxlXCJcblxuICAgICAgICAgICAgIFdoaWNoIGlzIGRlZXBseSBvYnNjdXJlLCBhbmQgYWxtb3N0IGNlcnRhaW5seSBhIG1pc3Rha2UgdG8gdXNlLiAgVGhpcyBsaWJyYXJ5IG1ha2VzXG4gICAgICAgICAgICAgbm8gcHJldGVuc2UgYWJvdXQgaGFuZGxpbmcgdGhpcyBjYXNlLiAgV2UgY29udGludWUgdG8gcmVhZCB0aGVtIGluIGZvclxuICAgICAgICAgICAgIGNvbXBsZXRlbmVzcywgYW5kIGJlY2F1c2UgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHdpbGwgbGF0ZXIgZGlzY292ZXIgYSBjYXNlIHdoZXJlXG4gICAgICAgICAgICAgdGhleSBhcmUgdXNlZC4gKilcbiAgICAgICAgICBsZXQgX3N0ZF93YWxsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjpzdGRfd2FsbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfdXRjX2xvY2FsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjp1dGNfbG9jYWxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9XG4gICAgICAgICAgICBBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCByZWdpbWVzIH5mOihmdW4gKGx0LCBhYmJydl9pbmRleCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGFiYnJ2ID0gTWFwLmZpbmRfZXhuIGFiYnJldmlhdGlvbnMgYWJicnZfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgbHQgYWJicnYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJhd190cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcDJfZXhuIHRyYW5zaXRpb25fdGltZXMgdHJhbnNpdGlvbl9pbmRpY2VzIH5mOihmdW4gdGltZSBpbmRleCAtPlxuICAgICAgICAgICAgICBsZXQgcmVnaW1lID0gcmVnaW1lcy4oaW5kZXgpIGluXG4gICAgICAgICAgICAgIHRpbWUsIHJlZ2ltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBsZXQgcmVjIG1ha2VfdHJhbnNpdGlvbnMgYWNjIGwgPVxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBBcnJheS5vZl9saXN0IChMaXN0LnJldiBhY2MpXG4gICAgICAgICAgICAgIHwgKHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCwgbmV3X3JlZ2ltZSkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgICAgICh7IFRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBuZXdfcmVnaW1lIH0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnMgW10gcmF3X3RyYW5zaXRpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgbWF0Y2ggQXJyYXkuZmluZCByZWdpbWVzIH5mOihmdW4gciAtPiBub3Qgci5SZWdpbWUuaXNfZHN0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmVnaW1lcy4oMClcbiAgICAgICAgICAgIHwgU29tZSBsdHQgLT4gbHR0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWUgfmRpZ2VzdCAtPlxuICAgICAgICAgICAgeyBuYW1lXG4gICAgICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gU29tZSBvcmlnaW5hbF9maWxlbmFtZVxuICAgICAgICAgICAgOyBkaWdlc3QgPSBTb21lIGRpZ2VzdFxuICAgICAgICAgICAgOyB0cmFuc2l0aW9uc1xuICAgICAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlXG4gICAgICAgICAgICA7IGxlYXBfc2Vjb25kc1xuICAgICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoID0gaW5wdXRfbGVhcF9zZWNvbmQgaWMgaW5cbiAgICAgICAgICBsZXQgc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgeyBMZWFwX3NlY29uZC50aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IHNlY29uZHMgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWFkX2hlYWRlciBpYyA9XG4gICAgICAgICAgbGV0IG1hZ2ljID1cbiAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWYgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5lcXVhbCBtYWdpYyBcIlRaaWZcIilcbiAgICAgICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwibWFnaWMgY2hhcmFjdGVycyBUWmlmIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIGxldCB2ZXJzaW9uID1cbiAgICAgICAgICAgIG1hdGNoIEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgJ1xcMDAwJyAtPiBgVjFcbiAgICAgICAgICAgIHwgU29tZSAnMicgLT4gYFYyXG4gICAgICAgICAgICB8IFNvbWUgJzMnIC0+IGBWM1xuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwiZXhwZWN0ZWQgdmVyc2lvbiwgZm91bmQgbm90aGluZ1wiKVxuICAgICAgICAgICAgfCBTb21lIGJhZF92ZXJzaW9uIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwidmVyc2lvbiAoJWMpIGlzIGludmFsaWRcIiBiYWRfdmVyc2lvbikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBzcGFjZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiB0aGUgZm9ybWF0ICopXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6KEJ5dGVzLmNyZWF0ZSAxNSkgfnBvczowIH5sZW46MTU7XG4gICAgICAgICAgdmVyc2lvblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YxIGljID1cbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2FzX2ludDYzIH5pbnB1dF9sZWFwX3NlY29uZCBpY1xuICAgICAgICA7O1xuXG4gICAgICAgICgqXG4gICAgICAgICAgIHZlcnNpb24gMiB0aW1lem9uZSBmaWxlcyBoYXZlIHRoZSBmb3JtYXQ6XG5cbiAgICAgICAgICAgcGFydCAxIC0gZXhhY3RseSB0aGUgc2FtZSBhcyB2MVxuXG4gICAgICAgICAgIHBhcnQgMiAtIHNhbWUgZm9ybWF0IGFzIHYxLCBleGNlcHQgdGhhdCA4IGJ5dGVzIGFyZSB1c2VkIHRvIHN0b3JlXG4gICAgICAgICAgIHRyYW5zaXRpb24gdGltZXMgYW5kIGxlYXAgc2Vjb25kc1xuXG4gICAgICAgICAgIHBhcnQgMyAtIGEgbmV3bGluZS1lbmNsb2RlZCwgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGVcbiAgICAgICAgICAgc3RyaW5nIGZvciB1c2UgaW4gaGFuZGxpbmcgaW5zdGFudHMgYWZ0ZXIgdGhlIGxhc3QgdHJhbnNpdGlvbiB0aW1lXG4gICAgICAgICAgIHN0b3JlZCBpbiB0aGUgZmlsZSAod2l0aCBub3RoaW5nIGJldHdlZW4gdGhlIG5ld2xpbmVzIGlmIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIFBPU0lYIHJlcHJlc2VudGF0aW9uIGZvciBzdWNoIGluc3RhbnRzKVxuXG4gICAgICAgICAgIFdlIGhhbmRsZSBmaWxlcyBpbiB0aGlzIGZvcm1hdCBieSBwYXJzaW5nIHRoZSBmaXJzdCBwYXJ0IGV4YWN0bHkgYXMgYSB2MVxuICAgICAgICAgICB0aW1lem9uZSBmaWxlIGFuZCB0aGVuIGNvbnRpbnVpbmcgdG8gcGFyc2Ugd2l0aCA2NGJpdCByZWFkaW5nIGZ1bmN0aW9ucyBpbiB0aGVcbiAgICAgICAgICAgcmlnaHQgcGxhY2VzLlxuXG4gICAgICAgICAgIFZlcnNpb24gMyB0aW1lem9uZSBmaWxlcyBhcmUgdGhlIHNhbWUgYXMgdmVyc2lvbiAyLCBleGNlcHQgdGhlXG4gICAgICAgICAgIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmluZyBpbiBwYXJ0IDMgbWF5IHVzZSB0d28gbWlub3JcbiAgICAgICAgICAgZXh0ZW5zaW9ucyB0byB0aGUgUE9TSVggVFogZm9ybWF0ICh0aGUgaG91cnMgcGFydCBvZiBpdHMgdHJhbnNpdGlvblxuICAgICAgICAgICB0aW1lcyBtYXkgYmUgc2lnbmVkIGFuZCByYW5nZSBmcm9tIC0xNjcgdGhyb3VnaCAxNjcgaW5zdGVhZCBvZiB0aGVcbiAgICAgICAgICAgUE9TSVgtcmVxdWlyZWQgdW5zaWduZWQgdmFsdWVzIGZyb20gMCB0aHJvdWdoIDI0OyBhbmQgRFNUIGlzIGluIGVmZmVjdCBhbGxcbiAgICAgICAgICAgeWVhciBpZiBpdCBzdGFydHMgSmFudWFyeSAxIGF0IDAwOjAwIGFuZCBlbmRzIERlY2VtYmVyIDMxIGF0IDI0OjAwIHBsdXMgdGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiBkYXlsaWdodCBzYXZpbmcgYW5kIHN0YW5kYXJkIHRpbWUpLlxuXG4gICAgICAgICAgIEFzIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIHdpdGggcGFydCAzIGFueXdheSwgd2UgY2FuIGp1c3QgcmVhZCB2M1xuICAgICAgICAgICBmaWxlcyBhcyB2Mi5cbiAgICAgICAgKilcbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWMgPVxuICAgICAgICAgIGxldCAoXyA6IHN0cmluZyAtPiBvcmlnaW5hbF9maWxlbmFtZTpzdHJpbmcgLT4gZGlnZXN0Ok1kNV9saWIudCAtPiB0KSA9XG4gICAgICAgICAgICBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB0aGUgaGVhZGVyIGlzIGZ1bGx5IHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IFsgYFYxIHwgYFYyIHwgYFYzIF1dIChyZWFkX2hlYWRlciBpYykgdmVyc2lvbik7XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlblxuICAgICAgICAgICAgfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgICB+aW5wdXRfbGVhcF9zZWNvbmRcbiAgICAgICAgICAgIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGUgfnpvbmVuYW1lIH5maWxlbmFtZSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBwcm90ZWN0eCAoSW5fY2hhbm5lbC5jcmVhdGUgZmlsZW5hbWUpIH5maW5hbGx5OkluX2NoYW5uZWwuY2xvc2UgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBsZXQgbWFrZV96b25lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZWFkX2hlYWRlciBpYyB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVjEgLT4gaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgICAgICAgIHwgKGBWMiB8IGBWMykgYXMgdmVyc2lvbiAtPiBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkaWdlc3QgPSBNZDUuZGlnZXN0X2ZpbGVfYmxvY2tpbmcgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgbGV0IHIgPSBtYWtlX3pvbmUgem9uZW5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lOmZpbGVuYW1lIH5kaWdlc3QgaW5cbiAgICAgICAgICAgICAgcilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBJbnZhbGlkX2ZpbGVfZm9ybWF0IHJlYXNvbiAtPlxuICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCIlcyAtICVzXCIgZmlsZW5hbWUgcmVhc29uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBhc3NlcnQgKG9mZnNldCA+PSAtMjQgJiYgb2Zmc2V0IDw9IDI0KTtcbiAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IEludDYzLm9mX2ludCAob2Zmc2V0ICogNjAgKiA2MCkgaW5cbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBOb25lXG4gICAgICAgIDsgZGlnZXN0ID0gTm9uZVxuICAgICAgICA7IHRyYW5zaXRpb25zID0gW3x8XVxuICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdCA9IGZhbHNlOyBhYmJydiA9IG5hbWUgfVxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0IH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMFxuICAgICAgICAgIHRoZW4gXCJVVENcIlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIlVUQyVzJWRcIiAoaWYgb2Zmc2V0IDwgMCB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIChhYnMgb2Zmc2V0KVxuICAgICAgICBpblxuICAgICAgICBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuRnVsbF9kYXRhLlYxXG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSB0Lm5hbWVcblxubGV0IGxpa2VseV9tYWNoaW5lX3pvbmVzID1cbiAgcmVmIFsgXCJBbWVyaWNhL05ld19Zb3JrXCI7IFwiRXVyb3BlL0xvbmRvblwiOyBcIkFzaWEvSG9uZ19Lb25nXCI7IFwiQW1lcmljYS9DaGljYWdvXCIgXVxuOztcblxubGV0IGlucHV0X3R6X2ZpbGUgPSBab25lX2ZpbGUuaW5wdXRfdHpfZmlsZVxubGV0IHV0YyA9IG9mX3V0Y19vZmZzZXQgfmhvdXJzOjBcbmxldCBuYW1lIHpvbmUgPSB6b25lLm5hbWVcbmxldCByZXNldF90cmFuc2l0aW9uX2NhY2hlIHQgPSB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG5cbigqIFJhaXNlcyBpZiBbaW5kZXggPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNdICopXG5sZXQgZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCA9XG4gIGlmIGluZGV4IDwgMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCkubmV3X3JlZ2ltZVxuOztcblxuKCogSW4gXCJhYnNvbHV0ZSBtb2RlXCIsIGEgbnVtYmVyIG9mIHNlY29uZHMgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IG9mIHRoYXQgbWFueVxuICAgc2Vjb25kcyBmcm9tIHRoZSBVTklYIGVwb2NoLCBpZ25vcmluZyBsZWFwIHNlY29uZHMuXG5cbiAgIEluIFwiZGF0ZSBhbmQgb2ZkYXkgbW9kZVwiLCB5b3UgaW50ZXJwcmV0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBhIG51bWJlciBvZiBkYXlzIGluXG4gICBjb21iaW5hdGlvbiB3aXRoIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQsIHdoaWNoIGdpdmVzIHlvdSBhIGNhbGVuZGFyIGRheSBhbmRcbiAgIGEgY2xvY2sgZmFjZSB0aW1lLiBUaGVuIHlvdSB0YWtlIHRoZSB0aW1lIHRoYXQgdGhvc2UgcmVwcmVzZW50IGluIHNvbWUgcmVsZXZhbnRcbiAgIHRpbWV6b25lLlxuXG4gICBPZiBjb3Vyc2UsIGlmIHRoZSB0aW1lem9uZSBpbiBxdWVzdGlvbiBoYXMgRFNUIHNoaWZ0cywgdGhlIGRhdGUgYW5kIG9mZGF5IG1pZ2h0XG4gICByZXByZXNlbnQgdHdvIG9yIHplcm8gdGltZXMuIFRoZXNlIHRpbWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIGVpdGhlciB0aGVcbiAgIHByZXZpb3VzIFVUQyBvZmZzZXQgb3IgdGhlIG5leHQgb25lLCBpbiBhIHdheSB3aG9zZSBwcmVjaXNlIGRldGFpbHMgeW91IHByb2JhYmx5XG4gICBzaG91bGRuJ3QgZGVwZW5kIG9uLlxuXG4gICAoRm9yIHRoZSBjdXJpb3VzLCB3aGF0IHdlIGRvIGlzOiBjb21wdXRlIHRoZSBcInJlbGF0aXZlIHRpbWVcIiBvZiB0aGUgc2hpZnQgYWNjb3JkaW5nIHRvXG4gICB0aGUgbmV3IHJlZ2ltZSwgYW5kIGFzc2lnbiByZWxhdGl2ZSB0aW1lcyB0byB0aGUgb2xkIHJlZ2ltZSBvciBuZXcgcmVnaW1lIGRlcGVuZGluZyBvblxuICAgd2hpY2ggc2lkZSBvZiB0aGUgc2hpZnQgdGltZSB0aGV5IG9jY3VyLiBTaW5jZSB0aGlzIGFtb3VudHMgdG8gdXNpbmcgdGhlIG9sZCByZWdpbWVcbiAgIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGZvcndhcmQgYW5kIHRoZSBuZXcgcmVnaW1lIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGJhY2ssIGl0J3NcbiAgIGVxdWl2YWxlbnQgdG8gY2FsY3VsYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVGltZS50J3MgcmVsYXRpdmUgdG8gYm90aCB0aGUgb2xkIGFuZCB0aGVcbiAgIG5ldyByZWdpbWUgYW5kIHBpY2tpbmcgdGhlIG9uZSB0aGF0IG9jY3VycyBsYXRlci4gWWVzLCBsYXRlci4gSSBoYWQgdG8gZHJhdyBhIGRpYWdyYW1cbiAgIHRvIHBlcnN1YWRlIG15c2VsZiB0aGF0IGl0J3MgdGhhdCB3YXkgcm91bmQsIGJ1dCBpdCBpcy4pXG4qKVxubW9kdWxlIE1vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFic29sdXRlXG4gICAgfCBEYXRlX2FuZF9vZmRheVxuZW5kXG5cbmxldCBlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSAoeCA6IFRyYW5zaXRpb24udCkgPVxuICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gIG1hdGNoIChtb2RlIDogTW9kZS50KSB3aXRoXG4gIHwgQWJzb2x1dGUgLT4geC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfCBEYXRlX2FuZF9vZmRheSAtPlxuICAgIHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoICsgeC5uZXdfcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcblxubGV0IGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggPCAwIHx8IEludDYzLiggPj0gKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCkpXG47O1xuXG5sZXQgaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCArIDEgPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbiAgfHwgSW50NjMuKCA8ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXggKyAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzIDogSW5kZXgudCA9XG4gIEFycmF5LmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJhbnNpdGlvbnMgYExhc3Rfb25fbGVmdCB+c2VnbWVudF9vZjooZnVuIHRyYW5zaXRpb24gLT5cbiAgICBpZiBJbnQ2My4oIDw9ICkgKGVmZmVjdGl2ZV9zdGFydF90aW1lIHRyYW5zaXRpb24gfm1vZGUpIHNlY29uZHNcbiAgICB0aGVuIGBMZWZ0XG4gICAgZWxzZSBgUmlnaHQpXG4gIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuOztcblxubGV0IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzID1cbiAgbGV0IGluZGV4ID1cbiAgICBsZXQgaW5kZXggPSB0Lmxhc3RfcmVnaW1lX2luZGV4IGluXG4gICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXg7IHRyeSBwcmV2aW91cyBpbmRleCAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggLSAxIGluXG4gICAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICAgKCogdGltZSBpcyBiZWZvcmUgcHJldmlvdXMgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4IGFuZCBub3QgYmVmb3JlIHByZXZpb3VzLCBzbyB3aXRoaW4gcHJldmlvdXMgKilcbiAgICAgIGVsc2UgaW5kZXgpXG4gICAgZWxzZSBpZiBub3QgKGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYWZ0ZXIgY2FjaGVkIGluZGV4OyB0cnkgbmV4dCBpbmRleCAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggKyAxIGluXG4gICAgICBpZiBub3QgKGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICAgKCogdGltZSBpcyBhZnRlciBuZXh0IGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgY2FjaGVkIGluZGV4IGFuZCBub3QgYWZ0ZXIgbmV4dCwgc28gd2l0aGluIG5leHQgKilcbiAgICAgIGVsc2UgaW5kZXggKCogdGltZSBpcyB3aXRoaW4gY2FjaGVkIGluZGV4ICopKVxuICAgIGVsc2UgaW5kZXhcbiAgaW5cbiAgdC5sYXN0X3JlZ2ltZV9pbmRleCA8LSBpbmRleDtcbiAgaW5kZXhcbjs7XG5cbm1vZHVsZSBUaW1lX2luX3NlY29uZHMgOiBzaWdcbiAgaW5jbHVkZSBab25lX2ludGYuVGltZV9pbl9zZWNvbmRzXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyA9IEZuLmlkXG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gPSBGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIGluY2x1ZGUgQWJzb2x1dGVcbmVuZFxuXG5sZXQgaW5kZXggdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpBYnNvbHV0ZVxuOztcblxubGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkRhdGVfYW5kX29mZGF5XG47O1xuXG5sZXQgaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4ID49IDAgJiYgaW5kZXggPCBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xubGV0IGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCArIDEpXG5cbmxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICB0cmFuc2l0aW9uLnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IChpbmRleCArIDEpXG5cbmxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIGxldCBhZnRlciA9IHRyYW5zaXRpb24ubmV3X3JlZ2ltZSBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpbmRleCA9IDAgdGhlbiB0LmRlZmF1bHRfbG9jYWxfdGltZV90eXBlIGVsc2UgdC50cmFuc2l0aW9ucy4oaW5kZXggLSAxKS5uZXdfcmVnaW1lXG4gIGluXG4gIEludDYzLiggLSApIGFmdGVyLnV0Y19vZmZzZXRfaW5fc2Vjb25kcyBiZWZvcmUudXRjX29mZnNldF9pbl9zZWNvbmRzXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IChpbmRleCArIDEpXG47O1xuXG5sZXQgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IGluZGV4ID1cbiAgbGV0IHJlZ2ltZSA9IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggaW5cbiAgcmVnaW1lLmFiYnJ2XG47O1xuXG5sZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgbGV0IHJlZ2ltZSA9IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggaW5cbiAgVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kcyByZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBWYWxpZGF0ZWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBSYXcgPSBSYXdcblxudHlwZSAoJ3JhdywgJ3dpdG5lc3MpIHQgPSAncmF3XG5cbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19iaW5faW8gPSBTX2Jpbl9pbyB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgPVxuICBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubGV0IHJhdyB0ID0gdFxuXG5tb2R1bGUgTWFrZSAoUmF3IDogUmF3KSA9IHN0cnVjdFxuICB0eXBlIHdpdG5lc3NcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvciA9XG4gICAgRXJyb3IuY3JlYXRlXG4gICAgICBcInZhbGlkYXRpb24gZmFpbGVkXCJcbiAgICAgICh0LCBlcnJvciwgUmF3LmhlcmUpXG4gICAgICBbJXNleHBfb2Y6IFJhdy50ICogRXJyb3IudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRdXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IucmFpc2UgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBjcmVhdGVfZXhuIChSYXcudF9vZl9zZXhwIHNleHApXG4gIGxldCByYXcgdCA9IHRcbmVuZFxuXG5tb2R1bGUgQWRkX2Jpbl9pbyAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChSYXcpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IFJhdy50XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcmF3ID1cbiAgICAgICAgICBpZiBSYXcudmFsaWRhdGVfYmluaW9fZGVzZXJpYWxpemF0aW9uIHRoZW4gVmFsaWRhdGVkLmNyZWF0ZV9leG4gcmF3IGVsc2UgcmF3XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBBZGRfY29tcGFyZSAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBjb21wYXJlIHQxIHQyID0gWyVjb21wYXJlOiBSYXcudF0gKHJhdyB0MSkgKHJhdyB0MilcbmVuZFxuXG5tb2R1bGUgQWRkX2hhc2ggKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmF3Lmhhc2hfZm9sZF90IHN0YXRlIChWYWxpZGF0ZWQucmF3IHQpXG4gIGxldCBoYXNoIHQgPSBSYXcuaGFzaCAoVmFsaWRhdGVkLnJhdyB0KVxuZW5kXG5cbm1vZHVsZSBBZGRfdHlwZXJlcCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoUmF3IDogUmF3X2Jpbl9pbykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQwID0gTWFrZSAoUmF3KVxuICBpbmNsdWRlIFQwXG4gIGluY2x1ZGUgQWRkX2Jpbl9pbyAoUmF3KSAoVDApXG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gTWFrZV9iaW5hYmxlIChSYXcpXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEFkZF9jb21wYXJlIChSYXcpIChUKVxuXG4gIGluY2x1ZGUgKFxuICAgIEFkZF9oYXNoIChSYXcpIChUKSA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG4iLCJpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJZFxuXG4gIG1vZHVsZSBVaWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVXBzdHJlYW0gPSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkXG4gICAgaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLkV4dGVuZFxuICAgICAgICAoVXBzdHJlYW0pXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChVcHN0cmVhbSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgVW5pdl9tYXBfaW50ZlxubW9kdWxlIFVpZCA9IFR5cGVfZXF1YWwuSWQuVWlkXG5cbm1vZHVsZSBNYWtlMVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAoJ3MsICdhKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gICgqIEEgd3JhcHBlciBmb3IgdGhlIFtLZXldIG1vZHVsZSB0aGF0IGFkZHMgYSBkeW5hbWljIGNoZWNrIHRvIFtLZXkudHlwZV9pZF0uXG5cbiAgICAgSXQncyBhIGJ1ZyBpZiB0aGUgdXNlci1wcm92aWRlZCBbS2V5LnR5cGVfaWRdIGdpdmVzIGRpZmZlcmVudCB0eXBlIGlkcyBvbiBkaWZmZXJlbnRcbiAgICAgY2FsbHMuICBCZWNhdXNlIHRoaXMgY2hlY2sgc2hvdWxkIGJlIGZhaXJseSBjaGVhcCwgd2UgZG8gaXQgZHluYW1pY2FsbHkgdG8gYXZvaWRcbiAgICAgc3VidGxlciBwcm9ibGVtcyBsYXRlci5cblxuICAgICBPZiBjb3Vyc2UsIHdlJ3JlIG5vdCBjaGVja2luZyB0cnVseSBwYXRob2xvZ2ljYWwgdGhpbmdzIGxpa2UgdGhlIHByb3ZpZGVkXG4gICAgIFtLZXkudHlwZV9pZF0gb25seSBjaGFuZ2VzIHRoZSB2YWx1ZSBpdCByZXR1cm5zIG9uIGV2ZXJ5IHRoaXJkIGNhbGwuLi4gKilcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEtleS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiB0ZXN0LWZyaWVuZGx5IHNleHAgY29udmVyc2lvbiAqKVxuICAgIGxldCBzZXhwX29mX3R5cGVfaWQgdHlwZV9pZCA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBuYW1lID0gKFR5cGVfZXF1YWwuSWQubmFtZSB0eXBlX2lkIDogc3RyaW5nKVxuICAgICAgICA7IHVpZCA9XG4gICAgICAgICAgICAoKGlmIGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbiAgICAgICAgICAgICAgdGhlbiBTZXhwLkF0b20gXCI8dWlkPlwiXG4gICAgICAgICAgICAgIGVsc2UgVHlwZV9lcXVhbC5JZC5VaWQuc2V4cF9vZl90IChUeXBlX2VxdWFsLklkLnVpZCB0eXBlX2lkKSkgOiBTZXhwLnQpXG4gICAgICAgIH1dXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkIGtleSA9XG4gICAgICBsZXQgdHlwZV9pZDEgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGxldCB0eXBlX2lkMiA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgaWYgVHlwZV9lcXVhbC5JZC5zYW1lIHR5cGVfaWQxIHR5cGVfaWQyXG4gICAgICB0aGVuIHR5cGVfaWQxXG4gICAgICBlbHNlXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW0tleS50eXBlX2lkXSBtdXN0IG5vdCBwcm92aWRlIGRpZmZlcmVudCB0eXBlIGlkcyB3aGVuIGNhbGxlZCBvbiB0aGUgc2FtZSBcXFxuICAgICAgICAgICAgIGlucHV0XCJcbiAgICAgICAgICAgICAgKGtleSA6IF8gS2V5LnQpXG4gICAgICAgICAgICAgICh0eXBlX2lkMSA6IHR5cGVfaWQpXG4gICAgICAgICAgICAgICh0eXBlX2lkMiA6IHR5cGVfaWQpXVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgKCdzLCAnYSkgZGF0YSA9ICgncywgJ2EpIERhdGEudFxuXG4gIGxldCBuYW1lX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLm5hbWUgKEtleS50eXBlX2lkIGtleSlcbiAgbGV0IHVpZF9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC51aWQgKEtleS50eXBlX2lkIGtleSlcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0ID0gVCA6ICdhIEtleS50ICogKCdzLCAnYSkgRGF0YS50IC0+ICdzIHRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIChUIChrZXksIGRhdGEpKSA9XG4gICAgICBEYXRhLnNleHBfb2ZfdCBzZXhwX29mX2EgKFR5cGVfZXF1YWwuSWQudG9fc2V4cCAoS2V5LnR5cGVfaWQga2V5KSkgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZF9uYW1lIChUIChrZXksIF8pKSA9IG5hbWVfb2Zfa2V5IGtleVxuICAgIGxldCB0eXBlX2lkX3VpZCAoVCAoa2V5LCBfKSkgPSB1aWRfb2Zfa2V5IGtleVxuXG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPVxuICAgICAgbGV0IGMgPSBTdHJpbmcuY29tcGFyZSAodHlwZV9pZF9uYW1lIHQxKSAodHlwZV9pZF9uYW1lIHQyKSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIFVpZC5jb21wYXJlICh0eXBlX2lkX3VpZCB0MSkgKHR5cGVfaWRfdWlkIHQyKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ3MgdCA9ICdzIFBhY2tlZC50IFVpZC5NYXAudFxuXG4gIGxldCB0b19hbGlzdCB0ID0gTWFwLmRhdGEgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6UGFja2VkLmNvbXBhcmVcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICB0b19hbGlzdCB0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBwYWNrZWQgLT4gUGFja2VkLnR5cGVfaWRfbmFtZSBwYWNrZWQsIHBhY2tlZClcbiAgICB8PiBbJXNleHBfb2Y6IChzdHJpbmcgKiBhIFBhY2tlZC50KSBsaXN0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKHQgOiBfIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgTWFwLml0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIGFzc2VydCAoVWlkLmVxdWFsIGtleSAoUGFja2VkLnR5cGVfaWRfdWlkIGRhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPSBNYXAuc2V0IHQgfmtleToodWlkX29mX2tleSBrZXkpIH5kYXRhOihQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgbGV0IG1lbV9ieV9pZCB0IGlkID0gTWFwLm1lbSB0IGlkXG4gIGxldCBtZW0gdCBrZXkgPSBtZW1fYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCByZW1vdmVfYnlfaWQgdCBpZCA9IE1hcC5yZW1vdmUgdCBpZFxuICBsZXQgcmVtb3ZlIHQga2V5ID0gcmVtb3ZlX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgZW1wdHkgPSBVaWQuTWFwLmVtcHR5XG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBVaWQuTWFwLnNpbmdsZXRvbiAodWlkX29mX2tleSBrZXkpIChQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgbGV0IGlzX2VtcHR5ID0gTWFwLmlzX2VtcHR5XG5cbiAgbGV0IGZpbmQgKHR5cGUgYikgdCAoa2V5IDogYiBLZXkudCkgPVxuICAgIG1hdGNoIE1hcC5maW5kIHQgKHVpZF9vZl9rZXkga2V5KSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKFBhY2tlZC5UIChrZXknLCB2YWx1ZSkpIC0+XG4gICAgICAoKiBjYW5ub3QgcmFpc2UgLS0gc2VlIFtpbnZhcmlhbnRdICopXG4gICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBrZXkpIChLZXkudHlwZV9pZCBrZXknKVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHZhbHVlIDogKF8sIGIpIERhdGEudClcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiVW5pdl9tYXAuZmluZF9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID0gaWYgbWVtIHQga2V5IHRoZW4gYER1cGxpY2F0ZSBlbHNlIGBPayAoc2V0IHQgfmtleSB+ZGF0YSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgYE9rIHQgLT4gdFxuICAgIHwgYER1cGxpY2F0ZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5hZGRfZXhuIG9uIGV4aXN0aW5nIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZV9leG4gdCBrZXkgfmY6dXBkYXRlID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgZGF0YSlcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiVW5pdl9tYXAuY2hhbmdlX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIGxldCBvcmlnID0gZmluZCB0IGtleSBpblxuICAgIGxldCBuZXh0ID0gdXBkYXRlIG9yaWcgaW5cbiAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgfCBOb25lIC0+IGlmIE9wdGlvbi5pc19ub25lIG9yaWcgdGhlbiB0IGVsc2UgcmVtb3ZlIHQga2V5XG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9IGNoYW5nZSB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIFVpZC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCB0IH5mOihmdW4gcCAtPiBQYWNrZWQudHlwZV9pZF91aWQgcCwgcCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9XG4gICAgTWFrZTFcbiAgICAgIChLZXkpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgKF8sICdhKSB0ID0gJ2EgRGF0YS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmQpXG5cbiAgdHlwZSB0ID0gdW5pdCBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRGF0YS50XG5cbiAgbGV0IGludmFyaWFudCA9IE0uaW52YXJpYW50XG4gIGxldCBlbXB0eSA9IE0uZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiA9IE0uc2luZ2xldG9uXG4gIGxldCBpc19lbXB0eSA9IE0uaXNfZW1wdHlcbiAgbGV0IHNldCA9IE0uc2V0XG4gIGxldCBtZW0gPSBNLm1lbVxuICBsZXQgbWVtX2J5X2lkID0gTS5tZW1fYnlfaWRcbiAgbGV0IGZpbmQgPSBNLmZpbmRcbiAgbGV0IGZpbmRfZXhuID0gTS5maW5kX2V4blxuICBsZXQgYWRkID0gTS5hZGRcbiAgbGV0IGFkZF9leG4gPSBNLmFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IE0uY2hhbmdlXG4gIGxldCBjaGFuZ2VfZXhuID0gTS5jaGFuZ2VfZXhuXG4gIGxldCB1cGRhdGUgPSBNLnVwZGF0ZVxuICBsZXQgcmVtb3ZlID0gTS5yZW1vdmVcbiAgbGV0IHJlbW92ZV9ieV9pZCA9IE0ucmVtb3ZlX2J5X2lkXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiAnYSBLZXkudCAqICdhIERhdGEudCAtPiB0XG4gIGVuZFxuXG4gIGxldCB0b19hbGlzdCB0ID1cbiAgICBMaXN0Lm1hcCAoTS50b19hbGlzdCB0KSB+ZjooZnVuY3Rpb24gTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSAtPiBQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIE0ub2ZfYWxpc3RfZXhuXG4gICAgICAoTGlzdC5tYXAgdCB+ZjooZnVuY3Rpb24gUGFja2VkLlQgKGtleSwgZGF0YSkgLT4gTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1lcmdlIChLZXkgOiBLZXkpIChJbnB1dDFfZGF0YSA6IERhdGEpIChJbnB1dDJfZGF0YSA6IERhdGEpIChPdXRwdXRfZGF0YSA6IERhdGEpID1cbnN0cnVjdFxuICB0eXBlIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICdhIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICdhIElucHV0MV9kYXRhLnQgKiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gJ2EgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZSAodDEgOiBNYWtlKEtleSkoSW5wdXQxX2RhdGEpLnQpICh0MiA6IE1ha2UoS2V5KShJbnB1dDJfZGF0YSkudCkgfmY6eyBmIH1cbiAgICA6IE1ha2UoS2V5KShPdXRwdXRfZGF0YSkudFxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0Lk0uUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZTFcbiAgICAoS2V5IDogS2V5KVxuICAgIChJbnB1dDFfZGF0YSA6IERhdGExKVxuICAgIChJbnB1dDJfZGF0YSA6IERhdGExKVxuICAgIChPdXRwdXRfZGF0YSA6IERhdGExKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ3MxLCAnczIsICdzMykgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudCAqICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gKCdzMywgJ2EpIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlMSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlXG4gICAgICAgICh0eXBlIHMxIHMyKVxuICAgICAgICAodDEgOiBzMSBNYWtlMShLZXkpKElucHV0MV9kYXRhKS50KVxuICAgICAgICAodDIgOiBzMiBNYWtlMShLZXkpKElucHV0Ml9kYXRhKS50KVxuICAgICAgICB+Zjp7IGYgfVxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0LlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVHlwZV9pZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVHlwZV9lcXVhbC5JZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHR5cGVfaWQgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBNYWtlXG4gICAgKFR5cGVfaWRfa2V5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kKSA6XG4gICAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIGFuZCBtb2R1bGUgS2V5IDo9IFR5cGVfaWRfa2V5KVxuXG5tb2R1bGUgS2V5ID0gVHlwZV9lcXVhbC5JZFxuXG5tb2R1bGUgV2l0aF9kZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBrZXkgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgZGVmYXVsdCA6ICdhXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5kZWZhdWx0IH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBkZWZhdWx0OyBrZXkgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZGVmYXVsdCB9ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IChmaW5kIHQga2V5KVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGRlZmF1bHQgPSBfIH0gfmRhdGEgPSBzZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID0gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIChmaW5kIHQga2V5KSlcbmVuZFxuXG5tb2R1bGUgV2l0aF9mb2xkID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBrZXkgOiAnYiBXaXRoX2RlZmF1bHQuS2V5LnRcbiAgICAgIDsgZiA6ICdiIC0+ICdhIC0+ICdiXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5pbml0IH5mIH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBmOyBrZXkgPSBXaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDppbml0IH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IFdpdGhfZGVmYXVsdC5LZXkuaWQgdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGYgPSBfIH0gPSBXaXRoX2RlZmF1bHQuZmluZCB0IGtleVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGYgPSBfIH0gfmRhdGEgPSBXaXRoX2RlZmF1bHQuc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQgeyBLZXkua2V5OyBmID0gXyB9IH5mOnVwZGF0ZSA9IFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6dXBkYXRlXG5cbiAgbGV0IGFkZCB0IH5rZXk6eyBLZXkua2V5OyBmIH0gfmRhdGEgPVxuICAgIFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6KGZ1biBhY2MgLT4gZiBhY2MgZGF0YSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcbiAgb3BlbiBXaXRoX2ZvbGRcblxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCAnYSBsaXN0KSBLZXkudFxuXG4gICAgbGV0IGNyZWF0ZSB+bmFtZSBzZXhwX29mID1cbiAgICAgIEtleS5jcmVhdGUgfmluaXQ6W10gfmY6KGZ1biB4cyB4IC0+IHggOjogeHMpIH5uYW1lIChMaXN0LnNleHBfb2ZfdCBzZXhwX29mKVxuICAgIDs7XG5cbiAgICBsZXQgaWQgPSBXaXRoX2ZvbGQuS2V5LmlkXG4gIGVuZFxuXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZFxuICB8IFNlY29uZFxuICB8IE1pbnV0ZVxuICB8IEhvdXJcbiAgfCBEYXlcbltAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaF1cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVW5pcXVlX2lkX2ludGZcblxubW9kdWxlIHR5cGUgSWQgPSBJZFxuXG4oKiBPbmx5IFwibWFrZVwiIGNhbiBjYXVzZSBhIGNvbnRleHQtc3dpdGNoIHRoYXQgbWlnaHQgbGVhZCB0byBhIHJhY2UuXG4gICBUaHVzIHdlIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIGNlbGwgcmVtYWluZWRcbiAgIHVuY2hhbmdlZCBhY3Jvc3MgdGhpcyBjYWxsLiAgVGhlIHN1YnNlcXVlbnQgY29tcGFyaXNvbiwgZGVyZWZlcmVuY2luZ1xuICAgYW5kIGFzc2lnbm1lbnQgY2Fubm90IGNhdXNlIGNvbnRleHQgc3dpdGNoZXMuICBJZiB0aGUgY29udGVudHMgb2YgdGhlXG4gICBjZWxsIGhhZCBjaGFuZ2VkLCB3ZSB3aWxsIGhhdmUgdG8gdHJ5IGFnYWluIHRvIG9idGFpbiBhIHVuaXF1ZSBpZC5cbiAgIFRoaXMgaXMgZXNzZW50aWFsbHkgbGlrZSBhIHNwaW4tbG9jayBhbmQgaXMgdmlydHVhbGx5IGd1YXJhbnRlZWQgdG9cbiAgIHN1Y2NlZWQgcXVpY2tseS4gKilcbmxldCByZWMgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZSA9XG4gIGxldCB4ID0gIWNlbGwgaW5cbiAgbGV0IG5ld194ID0gbWFrZSB4IGluXG4gIGlmIHBoeXNfZXF1YWwgIWNlbGwgeFxuICB0aGVuIChcbiAgICBjZWxsIDo9IG5ld194O1xuICAgIHgpXG4gIGVsc2UgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZVxuOztcblxubW9kdWxlIEludCAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuXG5tb2R1bGUgSW50NjMgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnQ2M1xuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdmVyeSBtdWNoIGRlcGVuZGVudCBvbiB0aGUgcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuICBTaG91bGQgdGhlXG4gICB3YXkgdGhlIGNvbXBpbGVyIHJlcHJlc2VudHMgdmFyaW91cyB0eXBlcyBjaGFuZ2UsIGl0IG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGlzXG4gICBtb2R1bGUsIG90aGVyd2lzZSBiYWQgdGhpbmdzIGNvdWxkIGhhcHBlbi4gIFRoZXJlZm9yZSB0aGUgY29udmVyc2lvbnMgYW5kXG4gICByZXByZXNlbnRhdGlvbnMgYXJlIHRlc3RlZCB0aG9yb3VnaGx5IGluIFsuLi90ZXN0L3Rlc3Rfd2l0bmVzcy5tbF0gYW5kXG4gICBbLi4vdGVzdC90ZXN0X2NvbnZlcnNpb25zLm1sXVxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIEhhc2hfc2V0ID0gQmFzZS5IYXNoX3NldFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgKCogVGhlIGludGVnZXJzIGhlcmUgYXJlIHRoZSB2YWx1ZXMgdW5kZXJseWluZyB0aGUgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoZXkgYWxyZWFkeVxuICAgICBhcmUgaGFzaGVzIG9mIGNvbnN0cnVjdG9yIG5hbWVzLCBhbmQgaGVuY2UgYXJlIGV4cGVjdGVkIHRvIGJlIHVuaWZvcm1seVxuICAgICBkaXN0cmlidXRlZC4gKilcbiAgbGV0IGhhc2ggeCA9IHhcbmVuZFxuXG5tb2R1bGUgQWxsb3dlZF9pbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb25lXG4gICAgfCBBbGxcbiAgICB8IEhhc2hfc2V0IG9mIEhhc2hfc2V0Lk0oS2V5KS50XG4gICAgfCBGcm9tX3plcm9fdG8gb2YgaW50XG5cbiAgbGV0IF9pbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSB8IEFsbCB8IEhhc2hfc2V0IF8gLT4gKClcbiAgICB8IEZyb21femVyb190byBuIC0+IGFzc2VydCAobiA+PSAwKVxuICA7O1xuXG4gIGxldCBpbnRfaXNfdmFsdWUgdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IEFsbCAtPiB0cnVlXG4gICAgfCBIYXNoX3NldCBoYXNoX3NldCAtPiBIYXNoX3NldC5tZW0gaGFzaF9zZXQgaVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gMCA8PSBpICYmIGkgPD0gblxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbW1lZGlhY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFsd2F5c1xuICAgIHwgU29tZXRpbWVzXG4gICAgfCBOZXZlclxuICAgIHwgVW5rbm93blxuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEFsd2F5cyAtPiBcIkFsd2F5c1wiXG4gICAgfCBTb21ldGltZXMgLT4gXCJTb21ldGltZXNcIlxuICAgIHwgTmV2ZXIgLT4gXCJOZXZlclwiXG4gICAgfCBVbmtub3duIC0+IFwiVW5rbm93blwiXG4gIDs7XG5lbmRcblxub3BlbiBJbW1lZGlhY3lcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6ICdhIFR5cGVuYW1lLnQgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX3dpdGhfbmFtZSA6IHN0cmluZyAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiBfIHRcbiAgdmFsIGltbWVkaWFjeSA6IF8gdCAtPiBJbW1lZGlhY3kudFxuICB2YWwgYWxsb3dlZF9pbnRzIDogXyB0IC0+IEFsbG93ZWRfaW50cy50XG4gIHZhbCB0eXBlbmFtZSA6IF8gdCAtPiBzdHJpbmdcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzIDogc2lnXG4gICAgdmFsIGludDMyIDogaW50MzIgdFxuICAgIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICAgIHZhbCBhcnJheSA6IF8gYXJyYXkgdFxuICAgIHZhbCByZWZfIDogXyByZWYgdFxuICAgIHZhbCB0dXBsZTIgOiAoXyAqIF8pIHRcbiAgICB2YWwgdHVwbGUzIDogKF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTQgOiAoXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTUgOiAoXyAqIF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgZnVuY3Rpb25fIDogKF8gLT4gXykgdFxuICBlbmRcblxuICB2YWwgbmV2ZXIgOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIHVua25vd24gOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIG9wdGlvbiA6IF8gdFxuICB2YWwgbGlzdCA6IF8gdFxuICB2YWwgbWFnaWMgOiBfIHQgLT4gXyB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XyA9XG4gICAgeyBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICAgIDsgYWxsb3dlZF9pbnRzIDogQWxsb3dlZF9pbnRzLnRcbiAgICA7IHR5cGVuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHRfXG5cbiAgbGV0IGNyZWF0ZV93aXRoX25hbWUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgeyBpbW1lZGlhY3k7IGFsbG93ZWRfaW50czsgdHlwZW5hbWUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgY3JlYXRlX3dpdGhfbmFtZSAoVHlwZW5hbWUubmFtZSB0eXBlbmFtZSkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBpbW1lZGlhY3kgdCA9IHQuaW1tZWRpYWN5XG4gIGxldCBhbGxvd2VkX2ludHMgdCA9IHQuYWxsb3dlZF9pbnRzXG4gIGxldCB0eXBlbmFtZSB0ID0gdC50eXBlbmFtZVxuICBsZXQgbWFnaWMgdCA9IHRcbiAgbGV0IG5ldmVyX3dpdGhfbmFtZSBuYW1lID0gY3JlYXRlX3dpdGhfbmFtZSBuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IG5ldmVyIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IHVua25vd24gdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgVW5rbm93biBOb25lXG5cbiAgbGV0IG9wdGlvbiA9IGNyZWF0ZV93aXRoX25hbWUgXCJvcHRpb25cIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbiAgbGV0IGxpc3QgPSBjcmVhdGVfd2l0aF9uYW1lIFwibGlzdFwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgPSBzdHJ1Y3RcbiAgICAoKiBpbnQzMiBpcyBib3hlZCBldmVuIG9uIDY0YiBwbGF0Zm9ybSBhdCB0aGUgbW9tZW50LiAqKVxuICAgIGxldCBpbnQzMiA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDMyXG4gICAgbGV0IGludDY0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50NjRcbiAgICBsZXQgbmF0aXZlaW50ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgbGV0IGZsb2F0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfZmxvYXRcbiAgICBsZXQgc3RyaW5nID0gbmV2ZXIgdHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgbGV0IGJ5dGVzID0gbmV2ZXIgdHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICBsZXQgYXJyYXkgPSBuZXZlcl93aXRoX25hbWUgXCJhcnJheVwiXG4gICAgbGV0IHJlZl8gPSBuZXZlcl93aXRoX25hbWUgXCJyZWZcIlxuICAgIGxldCB0dXBsZTIgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTJcIlxuICAgIGxldCB0dXBsZTMgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTNcIlxuICAgIGxldCB0dXBsZTQgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTRcIlxuICAgIGxldCB0dXBsZTUgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTVcIlxuXG4gICAgbGV0IGZ1bmN0aW9uXyA9IG5ldmVyX3dpdGhfbmFtZSBcImZ1bmN0aW9uXCJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfaW50IEFsd2F5cyBBbGxvd2VkX2ludHMuQWxsXG5sZXQgdW5pdCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl91bml0IEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxubGV0IGJvb2wgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfYm9vbCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMSlcbmxldCBjaGFyID0gY3JlYXRlIHR5cGVuYW1lX29mX2NoYXIgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDI1NSlcblxubW9kdWxlIENvbXB1dGF0aW9uX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpYy5WYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5cbiAgbGV0IHJlZl8gXyA9IHJlZl9cbiAgbGV0IGFycmF5IF8gPSBhcnJheVxuICBsZXQgdHVwbGUyIF8gXyA9IHR1cGxlMlxuICBsZXQgdHVwbGUzIF8gXyBfID0gdHVwbGUzXG4gIGxldCB0dXBsZTQgXyBfIF8gXyA9IHR1cGxlNFxuICBsZXQgdHVwbGU1IF8gXyBfIF8gXyA9IHR1cGxlNVxuICBsZXQgZnVuY3Rpb25fIF8gXyA9IGZ1bmN0aW9uX1xuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG4gIGxldCBvcHRpb24gXyA9IG9wdGlvblxuICBsZXQgbGlzdCBfID0gbGlzdFxuXG4gICgqIEFuIFthIExhenkudF0gbWlnaHQgYmUgYSBib3hlZCBjbG9zdXJlLCBzbyBtdXN0IGhhdmUgaW1tZWRpYWN5IGVpdGhlciBbTmV2ZXJdIG9yXG4gICAgIFtTb21ldGltZXNdLiAgQW4gW2EgTGF6eS50XSB2YWx1ZSBjb3VsZCBiZSBpbW1lZGlhdGUgaWYgW2FdIGlzIGltbWVkaWF0ZS4gIEJ1dCBpZiBbYV1cbiAgICAgaXMgbmV2ZXIgaW1tZWRpYXRlLCB0aGVuIFthIExhenkudF0gY2Fubm90IGJlLiAqKVxuICBsZXQgbGF6eV90IHQgPVxuICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgICAgfCBOZXZlciAtPiBOZXZlclxuICAgICAgfCBVbmtub3duIC0+IFVua25vd25cbiAgICAgIHwgU29tZXRpbWVzIHwgQWx3YXlzIC0+IFNvbWV0aW1lc1xuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfbmFtZSBcImxhenlfdFwiIGltbWVkaWFjeSAoYWxsb3dlZF9pbnRzIHQpXG4gIDs7XG5cbiAgbGV0IHBvc3NpYmx5X3VuYm94ZWQgdHlwZW5hbWUgY2hpbGRfdHlwZSA9XG4gICAgbWF0Y2ggaW1tZWRpYWN5IGNoaWxkX3R5cGUgd2l0aFxuICAgIHwgTmV2ZXIgLT4gbmV2ZXIgdHlwZW5hbWVcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gdW5rbm93biB0eXBlbmFtZVxuICA7O1xuXG4gIGxldCByZWNvcmQgciA9XG4gICAgaWYgUmVjb3JkLmxlbmd0aCByID4gMVxuICAgIHRoZW4gbmV2ZXIgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKEZpZWxkIHRoZV9vbmx5X2ZpZWxkKSA9IFJlY29yZC5maWVsZCByIDAgaW5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpIChGaWVsZC50cmF2ZXJzZSB0aGVfb25seV9maWVsZCkpXG4gIDs7XG5cbiAgKCogVmFyaWFudHMgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBubyBhcmd1bWVudHMgYXJlIGFsd2F5cyBpbW1lZGlhdGU7IHZhcmlhbnRzXG4gICAgIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgc29tZSBhcmd1bWVudHMgYXJlIG5ldmVyIGltbWVkaWF0ZTsgbWl4ZWQgdmFyaWFudHMgYXJlXG4gICAgIHNvbWV0aW1lcyBpbW1lZGlhdGUuXG5cbiAgICAgSWYgYSB2YXJpYW50IGhhcyBhIHNpbmdsZSBjb25zdHJ1Y3RvciwgYW5kIHRoZSBjb25zdHJ1Y3RvciBoYXMgYW4gYXJndW1lbnQsIHRoZVxuICAgICB2YXJpYW50IGNhbiBiZSB1bmJveGVkLiBJZiB1bmJveGVkLCBlaXRoZXIgZXhwbGljaXRseSBvciBieSBkZWZhdWx0IChkZXBlbmRpbmcgb25cbiAgICAgY29tcGlsZXIgc2V0dGluZ3MpLCB0aGUgcmVwcmVzZW50YXRpb24gaXMgc2ltcGx5IHRoZSBhcmd1bWVudC4gT3RoZXJ3aXNlLCB0aGUgcnVsZXNcbiAgICAgYWJvdmUgYXBwbHkgbm9ybWFsbHkuICopXG4gIGxldCB2YXJpYW50IHZhcmlhbnQgPVxuICAgIGxldCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0ID1cbiAgICAgIFZhcmlhbnQuZm9sZCB2YXJpYW50IH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChubywgb25lLCBtb3JlKSAoVGFnIHQgYXMgdGFnKSAtPlxuICAgICAgICBtYXRjaCBUYWcuYXJpdHkgdCB3aXRoXG4gICAgICAgIHwgMCAtPiB0YWcgOjogbm8sIG9uZSwgbW9yZVxuICAgICAgICB8IDEgLT4gbm8sIHRhZyA6OiBvbmUsIG1vcmVcbiAgICAgICAgfCBfIC0+IG5vLCBvbmUsIHRhZyA6OiBtb3JlKVxuICAgIGluXG4gICAgbWF0Y2ggbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCB3aXRoXG4gICAgfCBbXSwgWyBUYWcgdGFnIF0sIFtdIHdoZW4gbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpIC0+XG4gICAgICBwb3NzaWJseV91bmJveGVkIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgKFRhZy50cmF2ZXJzZSB0YWcpXG4gICAgfCBbXSwgW10sIFtdIC0+XG4gICAgICAoKiBXZSBkb24ndCBoYXZlIGFuIGV4cGxpY3Qgd2F5IG9mIHNheWluZyBhIHR5cGUgaXMgdW5pbmhhYml0ZWQuICopXG4gICAgICB1bmtub3duIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IFtdLCBfIDo6IF8sIF8gfCBbXSwgXywgXyA6OiBfIC0+IG5ldmVyIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IF8gOjogXywgXywgXyAtPlxuICAgICAgbGV0IG5vX2FyZ19jb3VudCA9IExpc3QubGVuZ3RoIG5vX2FyZ19saXN0IGluXG4gICAgICBsZXQgYWxsb3dlZF9pbnRzID1cbiAgICAgICAgaWYgbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpXG4gICAgICAgIHRoZW4gQWxsb3dlZF9pbnRzLkZyb21femVyb190byAobm9fYXJnX2NvdW50IC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGhhc2hfc2V0ID0gSGFzaF9zZXQuY3JlYXRlIChtb2R1bGUgS2V5KSB+c2l6ZToobm9fYXJnX2NvdW50ICogMikgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgbm9fYXJnX2xpc3QgfmY6KGZ1biAoVGFnIHRhZykgLT5cbiAgICAgICAgICAgIG1hdGNoIFRhZy5jcmVhdGUgdGFnIHdpdGhcbiAgICAgICAgICAgIHwgVGFnLkNvbnN0IF8gLT4gSGFzaF9zZXQuYWRkIGhhc2hfc2V0IChUYWcub2NhbWxfcmVwciB0YWcpXG4gICAgICAgICAgICB8IFRhZy5BcmdzIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICBBbGxvd2VkX2ludHMuSGFzaF9zZXQgaGFzaF9zZXQpXG4gICAgICBpblxuICAgICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICAgIGlmIExpc3QuaXNfZW1wdHkgb25lX2FyZ19saXN0ICYmIExpc3QuaXNfZW1wdHkgbW9yZV9hcmdfbGlzdFxuICAgICAgICB0aGVuIEFsd2F5c1xuICAgICAgICBlbHNlIFNvbWV0aW1lc1xuICAgICAgaW5cbiAgICAgIGNyZWF0ZSAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgbmFtZSA9IFwiaXNfaW1tZWRpYXRlXCJcbiAgbGV0IHJlcXVpcmVkID0gW11cblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gKClcbiAgICBlbmRcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IHJlZlxuXG4gICAgKCogVGhlIGRlZmF1bHQgd2l0bmVzcyAtIHdoaWNoIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBbaW5pdF0gYW5kIHJlY292ZXJlZCBhdCBhbnkgbGF0ZXJcbiAgICAgICBwb2ludCBieSBjYWxsaW5nIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSAtIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSByZWN1cnNpdmUgdHlwZS5cbiAgICAgICBPdGhlciB0eXBlcyB0aGF0IGRvbid0IHVzZSBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gd2lsbCBqdXN0IGV2YWx1YXRlIHRvIHRoZSBhY3R1YWxcbiAgICAgICB3aXRuZXNzIHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgaW5pdGlhbCBkdW1teSBvbmUuICopXG4gICAgbGV0IGluaXQgXyBuYW1lID0gcmVmIChjcmVhdGUgbmFtZSBTb21ldGltZXMgQWxsb3dlZF9pbnRzLk5vbmUpXG4gICAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gY29tcCA9ICFjb21wXG5cbiAgICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHIgdCA9XG4gICAgICByIDo9IHQ7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBzaGFyZSBfID0gdHJ1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IFR5cGVfZ2VuZXJpYy5NYWtlIChDb21wdXRhdGlvbl9pbXBsKVxuXG5sZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgbGV0IChgZ2VuZXJpYyB0KSA9IEdlbmVyaWMub2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gIHRcbjs7XG5cbm1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnMgKE0gOiBzaWdcbiAgICB2YWwgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHdpdG5lc3MgdHlwZXJlcDEgdHlwZXJlcDIgPVxuICAgIGxldCB0MSA9IG9mX3R5cGVyZXAgdHlwZXJlcDEgaW5cbiAgICBsZXQgdDIgPSBvZl90eXBlcmVwIHR5cGVyZXAyIGluXG4gICAgbGV0IGkxID0gaW1tZWRpYWN5IHQxIGluXG4gICAgbGV0IGkyID0gaW1tZWRpYWN5IHQyIGluXG4gICAgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgaTIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGlzIG5vdCBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpKVxuICAgIGVsc2UgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgTS5pbW1lZGlhY3kpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGRvZXMgbm90IGhhdmUgZGVzaXJlZCBpbW1lZGlhY3k6IHdhbnRlZCAlcyBidXQgZ290ICVzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIE0uaW1tZWRpYWN5KVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBpMSkpXG4gICAgZWxzZSB0MVxuICA7O1xuXG4gICgqIGFsd2F5cyBpbW1lZGlhdGUgKilcbiAgbGV0IHJhID0gVHlwZXJlcC5JbnRcblxuICAoKiBuZXZlciBpbW1lZGlhdGUgKilcbiAgbGV0IHJuID0gVHlwZXJlcC5TdHJpbmdcblxuICAoKiBFYWNoIG9mIHRoZSBbRm9yX2FsbF9wYXJhbWV0ZXJzXypdIGZ1bmN0b3JzIHdvcmtzIGJ5IGluc3RhbnRpYXRpbmcgdGhlIG4tYXJ5IHR5cGVcbiAgICAgd2l0aCBhbGwgW0Fsd2F5c10gdHlwZXMsIGFuZCB0aGVuIHdpdGggYWxsIFtOZXZlcl0gdHlwZXMuICBJZiB0aG9zZSBwcm9kdWNlIHRoZSBzYW1lXG4gICAgIGltbWVkaWFjeSwgdGhlbiB3ZSBjb25jbHVkZSB0aGF0IHRoZSBuLWFyeSB0eXBlIGlzIGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHMuICopXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMSAoWCA6IFR5cGVyZXBhYmxlLlMxKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEpIChYLnR5cGVyZXBfb2ZfdCBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMiAoWCA6IFR5cGVyZXBhYmxlLlMyKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMyAoWCA6IFR5cGVyZXBhYmxlLlMzKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNCAoWCA6IFR5cGVyZXBhYmxlLlM0KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNSAoWCA6IFR5cGVyZXBhYmxlLlM1KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5lbmRcblxubGV0IGludF9pc192YWx1ZSB0IGludCA9IEFsbG93ZWRfaW50cy5pbnRfaXNfdmFsdWUgKGFsbG93ZWRfaW50cyB0KSBpbnRcblxubGV0IGludF9hc192YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50IHRoZW4gU29tZSAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X2FzX3ZhbHVlX2V4biAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50XG4gIHRoZW4gKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS5pbnRfYXNfdmFsdWVfZXhuOiB0eXBlbmFtZTolUyBpbnQ6JWRcIiAoVC50eXBlbmFtZSB0KSBpbnQpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50X2V4biAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpXG4gIHRoZW4gKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KVxuICBlbHNlIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLnZhbHVlX2FzX2ludF9leG46IHR5cGVuYW1lOiVTXCIgKFQudHlwZW5hbWUgdCkpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSkgdGhlbiBTb21lIChPYmoubWFnaWMgKGEgOiBhKSA6IGludCkgZWxzZSBOb25lXG47O1xuXG5sZXQgdmFsdWVfaXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcblxubW9kdWxlIEFsd2F5cyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBBbHdheXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBBbHdheXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgTmV2ZXIgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgXyBhID0gYSB8PiAoT2JqLm1hZ2ljIDogYSAtPiBpbnQpXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbmVuZFxuXG5tb2R1bGUgU29tZXRpbWVzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IFNvbWV0aW1lc1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IFNvbWV0aW1lcyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBOZXZlciAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXQgdmFsdWVfYXNfaW50ID0gdmFsdWVfYXNfaW50XG4gIGxldCB2YWx1ZV9hc19pbnRfZXhuID0gdmFsdWVfYXNfaW50X2V4blxuICBsZXQgdmFsdWVfaXNfaW50ID0gdmFsdWVfaXNfaW50XG4gIGxldCBvcHRpb24gPSBvcHRpb25cbiAgbGV0IGxpc3QgPSBsaXN0XG5lbmRcblxubW9kdWxlIE5ldmVyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IE5ldmVyXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgTmV2ZXIgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5lbmRcblxudHlwZSAnYSBkZXN0ID1cbiAgfCBBbHdheXMgb2YgJ2EgQWx3YXlzLnRcbiAgfCBTb21ldGltZXMgb2YgJ2EgU29tZXRpbWVzLnRcbiAgfCBOZXZlciBvZiAnYSBOZXZlci50XG4gIHwgVW5rbm93blxuXG5sZXQgZGVzdCB0ID1cbiAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICB8IEFsd2F5cyAtPiBBbHdheXMgdFxuICB8IFNvbWV0aW1lcyAtPiBTb21ldGltZXMgdFxuICB8IE5ldmVyIC0+IE5ldmVyIHRcbiAgfCBVbmtub3duIC0+IFVua25vd25cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVDEgOiBUKSAoVDIgOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUMS50ICogVDIudFxuZW5kXG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgPSBhLCBiXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgLT4gZiAoYSwgYilcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIpIC0+IGYgYSBiXG4gIDs7XG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhKSB0IC0+ICdhID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhKSB0IC0+ICdhID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICBsZXQgbWFwICh4LCB5KSB+ZiA9IGYgeCwgZiB5XG4gIGxldCBtYXBfZnN0ICh4LCB5KSB+ZiA9IGYgeCwgeVxuICBsZXQgbWFwX3NuZCAoeCwgeSkgfmYgPSB4LCBmIHlcbiAgbGV0IG1hcDIgKHgxLCB5MSkgKHgyLCB5MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyXG5cbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgKHgsIHkpICh4JywgeScpID1cbiAgICBtYXRjaCBjbXAxIHggeCcgd2l0aFxuICAgIHwgMCAtPiBjbXAyIHkgeSdcbiAgICB8IGkgLT4gaVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgKHgsIHkpICh4JywgeScpID0gZXExIHggeCcgJiYgZXEyIHkgeSdcbiAgbGV0IHN3YXAgKGEsIGIpID0gYiwgYVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tcGFyZSBjbXAxIGNtcDIgPSBjb21wYXJlIH5jbXAxIH5jbXAyXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBUMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgYyA9IGEsIGIsIGNcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiBjIC0+IGYgKGEsIGIsIGMpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiLCBjKSAtPiBmIGEgYiBjXG4gIDs7XG5cbiAgbGV0IG1hcCAoeCwgeSwgeikgfmYgPSBmIHgsIGYgeSwgZiB6XG4gIGxldCBtYXBfZnN0ICh4LCB5LCB6KSB+ZiA9IGYgeCwgeSwgelxuICBsZXQgbWFwX3NuZCAoeCwgeSwgeikgfmYgPSB4LCBmIHksIHpcbiAgbGV0IG1hcF90cmQgKHgsIHksIHopIH5mID0geCwgeSwgZiB6XG4gIGxldCBtYXAyICh4MSwgeTEsIHoxKSAoeDIsIHkyLCB6MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyLCBmIHoxIHoyXG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhLCBfKSB0IC0+ICdhID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKF8sICdhLCBfKSB0IC0+ICdhID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICAoKiBUaGVyZSdzIG5vICVmaWVsZDIuLi4uKilcbiAgbGV0IGdldDMgKF8sIF8sIGEpID0gYVxuXG4gICgqIGxleGljb2dyYXBoaWMgY29tcGFyaXNvbiAgKilcbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgfmNtcDMgKHgsIHksIHopICh4JywgeScsIHonKSA9XG4gICAgbGV0IGMxID0gY21wMSB4IHgnIGluXG4gICAgaWYgYzEgPD4gMFxuICAgIHRoZW4gYzFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMiA9IGNtcDIgeSB5JyBpblxuICAgICAgaWYgYzIgPD4gMCB0aGVuIGMyIGVsc2UgY21wMyB6IHonKVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgfmVxMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID0gZXExIHggeCcgJiYgZXEyIHkgeScgJiYgZXEzIHogeidcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hlcl9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgKFMxIDogU2V4cGFibGUuUykgKFMyIDogU2V4cGFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUzEudCAqIFMyLnQgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgQmluYWJsZSAoQjEgOiBCaW5hYmxlLlMpIChCMiA6IEJpbmFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQjEudCAqIEIyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhdG9yIChTMSA6IENvbXBhcmF0b3IuUykgKFMyIDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKFMxKSAoUzIpXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPVxuICAgIChTMS5jb21wYXJhdG9yX3dpdG5lc3MsIFMyLmNvbXBhcmF0b3Jfd2l0bmVzcykgVDIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBUMi5jb21wYXJhdG9yIFMxLmNvbXBhcmF0b3IgUzIuY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlX3BsYWluIChTMSA6IENvbXBhcmFibGUuU19wbGFpbikgKFMyIDogQ29tcGFyYWJsZS5TX3BsYWluKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvciAoUzEpIChTMilcblxuICAgIGxldCBzZXhwX29mX3QgPSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZSAoUzEgOiBDb21wYXJhYmxlX3NleHBhYmxlKSAoUzIgOiBDb21wYXJhYmxlX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGFibGUgKFMxKSAoUzIpXG5cbiAgICBsZXQgY29tcGFyZSAoczEsIHMyKSAoczEnLCBzMicpID1cbiAgICAgIG1hdGNoIFMxLmNvbXBhcmUgczEgczEnIHdpdGhcbiAgICAgIHwgMCAtPiBTMi5jb21wYXJlIHMyIHMyJ1xuICAgICAgfCB4IC0+IHhcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlciAoSDEgOiBIYXNoZXJfc2V4cGFibGUpIChIMiA6IEhhc2hlcl9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBIMS50ICogSDIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMgOiBIYXNoYWJsZV9zZXhwYWJsZSkgOlxuICBIYXNoZXJfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG5lbmRcblxubW9kdWxlIEhhc2hhYmxlX3QgKFMxIDogSGFzaGFibGVfc2V4cGFibGUpIChTMiA6IEhhc2hhYmxlX3NleHBhYmxlKSA9XG4gIEhhc2hlclxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGVcbiAgICAgICAoUzEpKVxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMyKSlcblxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVfdFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgU3VuXG4gICAgICAgIHwgTW9uXG4gICAgICAgIHwgVHVlXG4gICAgICAgIHwgV2VkXG4gICAgICAgIHwgVGh1XG4gICAgICAgIHwgRnJpXG4gICAgICAgIHwgU2F0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlNVTlwiXG4gICAgICAgIHwgTW9uIC0+IFwiTU9OXCJcbiAgICAgICAgfCBUdWUgLT4gXCJUVUVcIlxuICAgICAgICB8IFdlZCAtPiBcIldFRFwiXG4gICAgICAgIHwgVGh1IC0+IFwiVEhVXCJcbiAgICAgICAgfCBGcmkgLT4gXCJGUklcIlxuICAgICAgICB8IFNhdCAtPiBcIlNBVFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nX2xvbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlN1bmRheVwiXG4gICAgICAgIHwgTW9uIC0+IFwiTW9uZGF5XCJcbiAgICAgICAgfCBUdWUgLT4gXCJUdWVzZGF5XCJcbiAgICAgICAgfCBXZWQgLT4gXCJXZWRuZXNkYXlcIlxuICAgICAgICB8IFRodSAtPiBcIlRodXJzZGF5XCJcbiAgICAgICAgfCBGcmkgLT4gXCJGcmlkYXlcIlxuICAgICAgICB8IFNhdCAtPiBcIlNhdHVyZGF5XCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfaW50ZXJuYWwgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy51cHBlcmNhc2UgcyB3aXRoXG4gICAgICAgIHwgXCJTVU5cIiB8IFwiU1VOREFZXCIgLT4gU3VuXG4gICAgICAgIHwgXCJNT05cIiB8IFwiTU9OREFZXCIgLT4gTW9uXG4gICAgICAgIHwgXCJUVUVcIiB8IFwiVFVFU0RBWVwiIC0+IFR1ZVxuICAgICAgICB8IFwiV0VEXCIgfCBcIldFRE5FU0RBWVwiIC0+IFdlZFxuICAgICAgICB8IFwiVEhVXCIgfCBcIlRIVVJTREFZXCIgLT4gVGh1XG4gICAgICAgIHwgXCJGUklcIiB8IFwiRlJJREFZXCIgLT4gRnJpXG4gICAgICAgIHwgXCJTQVRcIiB8IFwiU0FUVVJEQVlcIiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfaW50X2V4biBpID1cbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgIHwgMCAtPiBTdW5cbiAgICAgICAgfCAxIC0+IE1vblxuICAgICAgICB8IDIgLT4gVHVlXG4gICAgICAgIHwgMyAtPiBXZWRcbiAgICAgICAgfCA0IC0+IFRodVxuICAgICAgICB8IDUgLT4gRnJpXG4gICAgICAgIHwgNiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX2ludF9leG46ICVkXCIgaSAoKVxuICAgICAgOztcblxuICAgICAgKCogQmUgdmVyeSBnZW5lcm91cyB3aXRoIG9mX3N0cmluZy4gIFdlIGFjY2VwdCBhbGwgcG9zc2libGUgY2FwaXRhbGl6YXRpb25zIGFuZCB0aGVcbiAgICAgICAgIGludGVnZXIgcmVwcmVzZW50YXRpb25zIGFzIHdlbGwuICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nX2ludGVybmFsIHMgd2l0aFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAodHJ5IG9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgcykgd2l0aFxuICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKCkpXG4gICAgICA7O1xuXG4gICAgICAoKiB0aGlzIGlzIGluIFQgcmF0aGVyIHRoYW4gb3V0c2lkZSBzbyB0aGF0IHRoZSBsYXRlciBmdW5jdG9yIGFwcGxpY2F0aW9uIHRvIGJ1aWxkIG1hcHNcbiAgICAgICAgIHVzZXMgdGhpcyBzZXhwIHJlcHJlc2VudGF0aW9uICopXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSAoQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKFQpIDogQ29tcGFyYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChVbnN0YWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5NYWtlIChVbnN0YWJsZSlcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuVW5zdGFibGVcblxubGV0IHdlZWtkYXlzID0gWyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaSBdXG5sZXQgd2Vla2VuZHMgPSBbIFNhdDsgU3VuIF1cblxuKCogd3JpdHRlbiBvdXQgdG8gc2F2ZSBvdmVyaGVhZCB3aGVuIGxvYWRpbmcgbW9kdWxlcy4gIFRoZSBtZW1iZXJzIG9mIHRoZSBzZXQgYW5kIHRoZVxuICAgb3JkZXJpbmcgc2hvdWxkIG5ldmVyIGNoYW5nZSwgc28gc3BlZWQgd2lucyBvdmVyIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggdGhhdCBwcm92ZXNcbiAgIHRoZSBvcmRlciA9IHRoZSBvcmRlciBpbiB0IGF0IHJ1bnRpbWUgKilcbmxldCBhbGwgPSBbIFN1bjsgTW9uOyBUdWU7IFdlZDsgVGh1OyBGcmk7IFNhdCBdXG5cbmxldCBvZl9pbnQgaSA9XG4gIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0b19pbnQgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN1biAtPiAwXG4gIHwgTW9uIC0+IDFcbiAgfCBUdWUgLT4gMlxuICB8IFdlZCAtPiAzXG4gIHwgVGh1IC0+IDRcbiAgfCBGcmkgLT4gNVxuICB8IFNhdCAtPiA2XG47O1xuXG5sZXQgaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuICB8IFN1biAtPiA3XG47O1xuXG5sZXQgbnVtX2RheXNfaW5fd2VlayA9IDdcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuIChJbnQuKCAlICkgKHRvX2ludCB0ICsgaSkgbnVtX2RheXNfaW5fd2VlaylcblxubGV0IG51bV9kYXlzIH5mcm9tIH50b18gPVxuICBsZXQgZCA9IHRvX2ludCB0b18gLSB0b19pbnQgZnJvbSBpblxuICBpZiBJbnQuKGQgPCAwKSB0aGVuIGQgKyBudW1fZGF5c19pbl93ZWVrIGVsc2UgZFxuOztcblxubGV0IGlzX3N1bl9vcl9zYXQgdCA9IHQgPSBTdW4gfHwgdCA9IFNhdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBSb3VuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgfCBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkRpZ2l0X3N0cmluZ19oZWxwZXJzXCJcbmxldCBpbnQ2M190d28gPSBJbnQ2My5vZl9pbnQgMlxubGV0IGludDYzX3RlbiA9IEludDYzLm9mX2ludCAxMFxubGV0IGludDYzX3R3ZW50eSA9IEludDYzLm9mX2ludCAyMFxubGV0IGludDYzX2JpbGxpb24gPSBJbnQ2My5vZl9pbnQgMV8wMDBfMDAwXzAwMFxubGV0IG1heF9iaWxsaW9ucyA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M19iaWxsaW9uXG5cbmxldCByZWMgZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIG4gPVxuICBpZiBJbnQ2My4oIDwgKSBuIGludDYzX3RlblxuICB0aGVuIDFcbiAgZWxzZSBJbnQuc3VjYyAoZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIChJbnQ2My4oIC8gKSBuIGludDYzX3RlbikpXG47O1xuXG5sZXQgZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSA9IGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBJbnQ2My5tYXhfdmFsdWVcblxubGV0IHJlYyBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzID1cbiAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgfCAxIC0+IEludDYzLm9mX2ludCA5XG4gIHwgMiAtPiBJbnQ2My5vZl9pbnQgOTlcbiAgfCAzIC0+IEludDYzLm9mX2ludCA5OTlcbiAgfCA0IC0+IEludDYzLm9mX2ludCA5Xzk5OVxuICB8IDUgLT4gSW50NjMub2ZfaW50IDk5Xzk5OVxuICB8IDYgLT4gSW50NjMub2ZfaW50IDk5OV85OTlcbiAgfCA3IC0+IEludDYzLm9mX2ludCA5Xzk5OV85OTlcbiAgfCA4IC0+IEludDYzLm9mX2ludCA5OV85OTlfOTk5XG4gIHwgOSAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OV85OTlcbiAgfCBfIC0+XG4gICAgaWYgZGlnaXRzID49IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWVcbiAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbGxpb25zID0gSW50NjMuc3VjYyAobWF4X2ludDYzX3dpdGggfmRpZ2l0czooZGlnaXRzIC0gOSkpIGluXG4gICAgICBJbnQ2My5wcmVkIChJbnQ2My4oICogKSBpbnQ2M19iaWxsaW9uIGJpbGxpb25zKSlcbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHVuc2FmZV9jaGFyX29mX2RpZ2l0IG4gPSBDaGFyLnVuc2FmZV9vZl9pbnQgKENoYXIudG9faW50ICcwJyArIG4pXG4gIGxldCBkaWdpdF9vZl9jaGFyIGNoYXIgPSBDaGFyLmdldF9kaWdpdF9leG4gY2hhclxuXG4gIGxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgQnl0ZXMudW5zYWZlX3NldCBieXRlcyBwb3MgKHVuc2FmZV9jaGFyX29mX2RpZ2l0IGludClcbiAgOztcblxuICBsZXQgcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gaW50IC8gMTAgaW5cbiAgICBsZXQgb25lcyA9IGludCAtICh0ZW5zICogMTApIGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBvbmVzO1xuICAgIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMSkgaW50IGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDIpIGludCBpblxuICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAzKSBpbnQgaW5cbiAgICB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNCkgaW50IGluXG4gICAgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDUpIGludCBpblxuICAgIHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA2KSBpbnQgaW5cbiAgICB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNykgaW50IGluXG4gICAgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDgpIGludCBpblxuICAgIHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zIGludDYzID1cbiAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBpbnQ2MyBpbnQ2M19iaWxsaW9uIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDYzLiggLSApIGludDYzIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSBpblxuICAgIHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gcmVtYWluZGVyKTtcbiAgICBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWMgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMiAtPiB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMyAtPiB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNCAtPiB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNSAtPiB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNiAtPiB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNyAtPiB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOCAtPiB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOSAtPiB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9XG4gICAgICAgIHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykgaW50NjNcbiAgICAgIGluXG4gICAgICB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPSBkaWdpdF9vZl9jaGFyIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgcG9zKVxuXG4gIGxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDEpXG4gIDs7XG5cbiAgbGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMilcbiAgOztcblxuICBsZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAzKVxuICA7O1xuXG4gIGxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDQpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNSlcbiAgOztcblxuICBsZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA2KVxuICA7O1xuXG4gIGxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDcpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgOClcbiAgOztcblxuICBsZXQgcmFpc2VfaW50NjNfb3ZlcmZsb3cgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IG92ZXJmbG93IHJlYWRpbmcgaW50NjNcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgbGV0IHJlYyByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IEludDYzLm9mX2ludCAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDIgLT4gSW50NjMub2ZfaW50IChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA0IC0+IEludDYzLm9mX2ludCAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDUgLT4gSW50NjMub2ZfaW50IChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA3IC0+IEludDYzLm9mX2ludCAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDggLT4gSW50NjMub2ZfaW50IChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID0gcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9XG4gICAgICAgIEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQ2My4oID4gKSBiaWxsaW9ucyBtYXhfYmlsbGlvbnMgdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIGxldCBzdW0gPSBJbnQ2My4oICsgKSAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgcmVtYWluZGVyIGluXG4gICAgICBpZiBJbnQ2My4oIDwgKSBzdW0gSW50NjMuemVybyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgc3VtXG4gIDs7XG5cbiAgbGV0IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAobnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBJbnQ2My5vbmUpIC8lIGRlbm9taW5hdG9yXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogaW52YWxpZCBkZWNpbWFsIGNoYXJhY3RlclwiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICAoKiBSZWFkcyB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgYmV0d2VlbiBbcG9zXSBhbmQgW3BvcytkZWNpbWFscy0xXSwgaW5jbHVzaXZlLCBhbmRcbiAgICAgaW50ZXJwZXJldHMgaXQgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIHBhcnQgb2YgYSBudW1iZXIsIHdoaWNoIHdlIGNhbGwgW3hdLlxuXG4gICAgIExldCBbaV0gYW5kIFtyXSBiZSB0aGUgaW50ZWdlciBwYXJ0IGFuZCByZW1haW5pbmcgZnJhY3Rpb25hbCBwYXJ0IG9mXG4gICAgIFt4ICogc2NhbGUgLyBkaXZpc29yXS5cblxuICAgICBJZiBbciA8IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXS5cbiAgICAgSWYgW3IgPSByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0gb3IgW2krMV0gYmFzZWQgb24gW3JvdW5kX2V4YWN0XS5cbiAgICAgSWYgW3IgPiByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaSsxXS5cblxuICAgICBBc3N1bWVzIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCBbc2NhbGVdIGFuZCBbZGl2aXNvcl0gYXJlIGJvdGggcG9zaXRpdmUgYW5kXG4gICAgIGxlc3MgdGhhbiBbSW50NjMubWF4X3ZhbHVlIC8gMTBdICh0byBhdm9pZCBpbnRlcm5hbCBvdmVyZmxvdyBkdXJpbmcgdGhlIGFsZ29yaXRobVxuICAgICB3aGVuIG11bHRpcGx5aW5nIGJ5IDEwKSwgYW5kIHRoYXQgW3JvdW5kX2F0ID49IDBdIGFuZCBbcm91bmRfYXQgPCBkaXZpc29yXS4gKilcbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cG9zOnN0YXJ0XG4gICAgICAgIH5kZWNpbWFsc1xuICAgICAgICB+c2NhbGVcbiAgICAgICAgfmRpdmlzb3JcbiAgICAgICAgfnJvdW5kX2F0XG4gICAgICAgIH5yb3VuZF9leGFjdFxuICAgICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICAgID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IHVudGlsID0gSW50LiggKyApIHN0YXJ0IGRlY2ltYWxzIGluXG4gICAgKCogVGhlIGxvb3AgaW52YXJpYW50IGlzIHRoYXQgZWFjaCBpdGVyYXRpb24sIHdlIHN0cmlwIG9mZiB0aGUgbmV4dCBkZWNpbWFsIGRpZ2l0IGFuZFxuICAgICAgIHVwZGF0ZSBbc3VtXSwgW3JvdW5kX2F0XSwgYW5kIFtkaXZpc29yXSBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgcmVzdWx0IGlzOlxuXG4gICAgICAgWyBzdW0gKyByb3VuZChyZW1haW5pbmdfZGlnaXRzX29mX3hfcGFyc2VkX2FzX2RlY2ltYWwgKiBzY2FsZSAvIGRpdmlzb3IpIF1cbiAgICAgICB3aGVyZSBcInJvdW5kXCIgcm91bmRzIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgW3JvdW5kX2F0XS5cbiAgICAqKVxuICAgIGxldCBkaXZpc29yID0gcmVmIGRpdmlzb3IgaW5cbiAgICBsZXQgcm91bmRfYXQgPSByZWYgcm91bmRfYXQgaW5cbiAgICBsZXQgc3VtID0gcmVmIEludDYzLnplcm8gaW5cbiAgICBsZXQgcG9zID0gcmVmIHN0YXJ0IGluXG4gICAgKCogU3RvcCBpZiB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIG9yIGlmIGZ1cnRoZXIgZGlnaXRzIGNhbm5vdCBpbmNyZWFzZSBvdXIgc3VtLiAqKVxuICAgIHdoaWxlIEludC4oIDw+ICkgIXBvcyB1bnRpbCAmJiAhcm91bmRfYXQgPCBzY2FsZSBkb1xuICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICB8ICcwJyAuLiAnOScgYXMgY2hhciAtPlxuICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChkaWdpdF9vZl9jaGFyIGNoYXIpIGluXG4gICAgICAgICAoKiBFdmVyeSBuZXcgZGVjaW1hbCBwbGFjZSBpbXBsaWNpdGx5IHNjYWxlcyBvdXIgbnVtZXJhdG9yIGJ5IGEgZmFjdG9yIG9mIHRlbixcbiAgICAgICAgICAgIHNvIG11c3QgYWxzbyBlZmZlY3RpdmVseSBzY2FsZSBvdXIgZGVub21pbmF0b3IuXG5cbiAgICAgICAgICAgIDAuYWJjZGVmICogc2NhbGUvZGl2aXNvciAgICAgICAgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvKGRpdmlzb3IqMTApICBbcm91bmQgYXQgcm91bmRfYXQqMTBdXG5cbiAgICAgICAgICAgIFRoZW4gcmVkZWZpbmUgZGl2aXNvciA6PSBkaXZpc29yKjEwIGFuZCByb3VuZF9hdCA6PSByb3VuZF9hdCoxMCwgc28gd2UgaGF2ZTpcbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF0gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gIWRpdmlzb3IgKiBpbnQ2M190ZW47XG4gICAgICAgICByb3VuZF9hdCA6PSAhcm91bmRfYXQgKiBpbnQ2M190ZW47XG4gICAgICAgICAoKiBOZXh0IHdlIHdvcmsgb3V0IHRoZSBwYXJ0IG9mIHRoZSBzdW0gYmFzZWQgb24gb3VyIGN1cnJlbnQgZGlnaXQ6XG5cbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgLSByb3VuZF9hdCAvIGRpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSAoYSpzY2FsZS1yb3VuZF9hdCkgLyBkaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuXG4gICAgICAgICAgICBEZWNvbXBvc2UgdGhlIGZpcnN0IHRlcm0gaW50byBpbnRlZ2VyIGFuZCByZW1haW5kZXIgcGFydHMuXG4gICAgICAgICAgICBTaW5jZSB3ZSBoYXZlIGFscmVhZHkgc3VidHJhY3RlZCBbcm91bmRfYXRdLCB3ZSBkZWNvbXBvc2UgYmFzZWRcbiAgICAgICAgICAgIG9uIHRoZSBjZWlsaW5nIHJhdGhlciB0aGFuIHRoZSBmbG9vciBvZiB0aGUgZGl2aXNpb24sXG4gICAgICAgICAgICBlLmcuIDUvMyB3b3VsZCBkZWNvbXBvc2UgYXMgMiArICgtMSkvMywgcmF0aGVyIHRoYW4gMSArICgyLzMpLlxuXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIHJlbWFpbmRlci9kaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdXG4gICAgICAgICAqKVxuICAgICAgICAgbGV0IG51bWVyYXRvciA9IChkaWdpdCAqIHNjYWxlKSAtICFyb3VuZF9hdCBpblxuICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gIWRpdmlzb3IgaW5cbiAgICAgICAgIGxldCBpbmNyZW1lbnQgPSBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICBsZXQgcmVtYWluZGVyID0gbnVtZXJhdG9yIC0gKGluY3JlbWVudCAqIGRlbm9taW5hdG9yKSBpblxuICAgICAgICAgKCogTm93IGp1c3QgYWNjdW11bGF0ZSB0aGUgbmV3IGluY3JlbWVudCBhbmQgaXRlcmF0ZSBvbiB0aGUgcmVtYWluaW5nIHBhcnQ6XG4gICAgICAgICAgICAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdLlxuXG4gICAgICAgICAgICBTaW5jZSBbcmVtYWluZGVyXSBpcyBiZXR3ZWVuIFstKGRpdmlzb3ItMSldIGFuZCBbMF0gaW5jbHVzaXZlLCB0aGUgbmV3XG4gICAgICAgICAgICBbcm91bmRfYXRdIHdpbGwgYmUgd2l0aGluIFswXSBhbmQgW2Rpdmlzb3ItMV0gaW5jbHVzaXZlLiAqKVxuICAgICAgICAgcm91bmRfYXQgOj0gLXJlbWFpbmRlcjtcbiAgICAgICAgIHN1bSA6PSAhc3VtICsgaW5jcmVtZW50O1xuICAgICAgICAgKCogVGhpcyBsaW5lIHByZXZlbnRzIHRoZSBkaXZpc29yIGZyb20gZ3Jvd2luZyB3aXRob3V0IGJvdW5kIGFuZCBvdmVyZmxvd2luZy4gSWZcbiAgICAgICAgICAgIHRoaXMgbGluZSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBkaXZpc29yLCB0aGVuIHRoZSBkaXZpc29yIGlzIGxhcmdlciB0aGFuIHRoZVxuICAgICAgICAgICAgc2NhbGUsIHNvIHRoZSBzdW0gd2lsbCBpbmNyZWFzZSBpZiBhbmQgb25seSBpZiBbcGFyc2VkX3JlbWFpbmluZ19kaWdpdHMgKlxuICAgICAgICAgICAgc2NhbGUgKD4gb3IgPj0pIHJvdW5kX2F0XSwgd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gaG93IG11Y2ggbGFyZ2VyIHRoZVxuICAgICAgICAgICAgZGl2aXNvciBpcy4gU28gdGhpcyBjaGFuZ2UgaXMgc2FmZS4gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gSW50NjMubWluIGRlbm9taW5hdG9yIHNjYWxlXG4gICAgICAgfCAnXycgd2hlbiBhbGxvd191bmRlcnNjb3JlIC0+ICgpXG4gICAgICAgfCBfIC0+IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiKTtcbiAgICAgIHBvcyA6PSBJbnQuc3VjYyAhcG9zXG4gICAgZG9uZTtcbiAgICBpZiAhcm91bmRfYXQgPSB6ZXJvXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByb3VuZF9leGFjdCB3aXRoXG4gICAgICB8IFJvdW5kLlRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eSAtPiAoKVxuICAgICAgfCBSb3VuZC5Ub3dhcmRfcG9zaXRpdmVfaW5maW5pdHkgLT4gc3VtIDo9ICFzdW0gKyBJbnQ2My5vbmUpO1xuICAgICFzdW1cbiAgOztcblxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICAgIHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICBzdHJpbmdcbiAgICAgIH5wb3NcbiAgICAgIH5kZWNpbWFsc1xuICAgICAgfnNjYWxlOihJbnQ2My4oICogKSBzY2FsZSBpbnQ2M190d28pXG4gICAgICB+ZGl2aXNvcjppbnQ2M190d29cbiAgICAgIH5yb3VuZF9hdDpJbnQ2My5vbmVcbiAgICAgIH5yb3VuZF9leGFjdDpyb3VuZF90aWVzXG4gICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICA7O1xuZW5kXG5cbmxldCBtaW5fc2NhbGUgPSBJbnQ2My5vbmVcbmxldCBtYXhfc2NhbGUgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfdHdlbnR5XG5cbmxldCByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkZWNpbWFscz0lZCBpcyBuZWdhdGl2ZVwiIG1vZHVsZV9uYW1lIG5hbWUgZGVjaW1hbHMgKClcbjs7XG5cbmxldCByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkaWdpdHM9JWQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIgbW9kdWxlX25hbWUgbmFtZSBkaWdpdHMgKClcbjs7XG5cbmxldCByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlID1cbiAgaW52YWxpZF9hcmdmXG4gICAgXCIlcy4lczogc2NhbGU9JUxkIG91dCBvZiByYW5nZSBbJUxkLCAlTGRdXCJcbiAgICBtb2R1bGVfbmFtZVxuICAgIG5hbWVcbiAgICAoSW50NjMudG9faW50NjQgc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1pbl9zY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWF4X3NjYWxlKVxuICAgICgpXG47O1xuXG5sZXQgcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiBwb3M9JWQgb3V0IG9mIHJhbmdlIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogJWQgZGlnaXRzIGRvIG5vdCBmaXQgYXQgcG9zICVkIGluIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIGRpZ2l0c1xuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG47O1xuXG5sZXQgcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludCA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50IG1heCAoKVxuOztcblxubGV0IHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzID1cbiAgaW52YWxpZF9hcmdmICFcIiVzLiVzOiAle0ludDYzfSBvdXQgb2YgcmFuZ2UgWzAsICV7SW50NjN9XVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50NjMgbWF4ICgpXG47O1xuXG5sZXQgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpZiBkZWNpbWFscyA8IDAgdGhlbiByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFsc1xuOztcblxubGV0IGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPSBpZiBkaWdpdHMgPCAxIHRoZW4gcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHNcblxubGV0IGNoZWNrX3BvcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgKyBkaWdpdHMgPiBsZW4gdGhlbiByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgY2hlY2tfaW50IG5hbWUgfm1heCBpbnQgPVxuICBpZiBpbnQgPCAwIHx8IGludCA+IG1heCB0aGVuIHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjMgPVxuICBpZiBJbnQ2My4oIDwgKSBpbnQ2MyBJbnQ2My56ZXJvIHx8IEludDYzLiggPiApIGludDYzIG1heFxuICB0aGVuIHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGUgPVxuICBpZiBJbnQ2My4oIDwgKSBzY2FsZSBtaW5fc2NhbGUgfHwgSW50NjMuKCA+ICkgc2NhbGUgbWF4X3NjYWxlXG4gIHRoZW4gcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZVxuOztcblxubGV0IGNoZWNrX3dyaXRlIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyB+bWF4IGludCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludCBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfd3JpdGU2MyBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbWF4ID0gbWF4X2ludDYzX3dpdGggfmRpZ2l0cyBpblxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjEgfm1heDo5IGludDtcbiAgVW5zYWZlLndyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzJfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoyIH5tYXg6OTkgaW50O1xuICBVbnNhZmUud3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfM19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjMgfm1heDo5OTkgaW50O1xuICBVbnNhZmUud3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjQgfm1heDo5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV81X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NSB+bWF4Ojk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV82X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NiB+bWF4Ojk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfN19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjcgfm1heDo5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjggfm1heDo5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzlfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo5IH5tYXg6OTk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja193cml0ZTYzIFwid3JpdGVfaW50NjNcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzO1xuICBVbnNhZmUud3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzXG47O1xuXG5sZXQgY2hlY2tfcmVhZCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjNfZGVjaW1hbCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzO1xuICBjaGVja19zY2FsZSBuYW1lIH5zY2FsZTtcbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0czpkZWNpbWFscyB+bGVuIH5wb3Ncbjs7XG5cbmxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoxO1xuICBVbnNhZmUucmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8yX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjI7XG4gIFVuc2FmZS5yZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzNfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MztcbiAgVW5zYWZlLnJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo0O1xuICBVbnNhZmUucmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF81X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjU7XG4gIFVuc2FmZS5yZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzZfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NjtcbiAgVW5zYWZlLnJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfN19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo3O1xuICBVbnNhZmUucmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF84X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjg7XG4gIFVuc2FmZS5yZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzlfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6OTtcbiAgVW5zYWZlLnJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19yZWFkNjMgXCJyZWFkX2ludDYzXCIgfnN0cmluZyB+cG9zIH5kaWdpdHM7XG4gIFVuc2FmZS5yZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gIGNoZWNrX3JlYWQ2M19kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGU7XG4gIFVuc2FmZS5yZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEphblxuICAgICAgfCBGZWJcbiAgICAgIHwgTWFyXG4gICAgICB8IEFwclxuICAgICAgfCBNYXlcbiAgICAgIHwgSnVuXG4gICAgICB8IEp1bFxuICAgICAgfCBBdWdcbiAgICAgIHwgU2VwXG4gICAgICB8IE9jdFxuICAgICAgfCBOb3ZcbiAgICAgIHwgRGVjXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHZhcmlhbnRzXVxuXG4gICAgbGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuICAgIGxldCBvZl9pbnRfZXhuIGkgOiB0ID1cbiAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgfCAxIC0+IEphblxuICAgICAgfCAyIC0+IEZlYlxuICAgICAgfCAzIC0+IE1hclxuICAgICAgfCA0IC0+IEFwclxuICAgICAgfCA1IC0+IE1heVxuICAgICAgfCA2IC0+IEp1blxuICAgICAgfCA3IC0+IEp1bFxuICAgICAgfCA4IC0+IEF1Z1xuICAgICAgfCA5IC0+IFNlcFxuICAgICAgfCAxMCAtPiBPY3RcbiAgICAgIHwgMTEgLT4gTm92XG4gICAgICB8IDEyIC0+IERlY1xuICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIk1vbnRoLm9mX2ludF9leG4gJWRcIiBpICgpXG4gICAgOztcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgdG9faW50ICh0IDogdCkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEphbiAtPiAxXG4gICAgICB8IEZlYiAtPiAyXG4gICAgICB8IE1hciAtPiAzXG4gICAgICB8IEFwciAtPiA0XG4gICAgICB8IE1heSAtPiA1XG4gICAgICB8IEp1biAtPiA2XG4gICAgICB8IEp1bCAtPiA3XG4gICAgICB8IEF1ZyAtPiA4XG4gICAgICB8IFNlcCAtPiA5XG4gICAgICB8IE9jdCAtPiAxMFxuICAgICAgfCBOb3YgLT4gMTFcbiAgICAgIHwgRGVjIC0+IDEyXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdG9faW50IHQgLSAxXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgaSA9IG9mX2ludF9leG4gKGkgKyAxKVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICBlbmRcbmVuZFxuXG5sZXQgbnVtX21vbnRocyA9IDEyXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbGV0IGFsbCA9IFsgSmFuOyBGZWI7IE1hcjsgQXByOyBNYXk7IEp1bjsgSnVsOyBBdWc7IFNlcDsgT2N0OyBOb3Y7IERlYyBdXG4gIGxldCBoYXNoID0gdG9faW50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICBlbmQpIDpcbiAgICBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG1vbnRocyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGludHMuICBGcm9tIDEwOC4wN1xuICAgICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXNcbiAgICAgICBjaGFuZ2VkIGZyb20gcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlXG4gICAgICAgbW9zdCBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgICAgcmF3LiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBJbnQudF9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgIHwgU29tZSBpIC0+IG9mX2ludF9leG4gKGkgKyAxKVxuICAgICAgfCBOb25lIC0+IFQudF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbigqIFJlcGxhY2UgdGhlIG92ZXJyaWRlbiBzZXhwIGNvbnZlcnRlcnMgZnJvbSBbQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVdIHdpdGggdGhlIG9yZGluYXJ5XG4gICBzeW1ib2xpYyBjb252ZXJ0ZXJzLiAqKVxubGV0IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gVC50X29mX3NleHBcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuICgxICsgSW50LiggJSApICh0b19pbnQgdCAtIDEgKyBpKSBudW1fbW9udGhzKVxuXG5sZXQgYWxsX3N0cmluZ3MgPVxuICBsYXp5XG4gICAgKEFycmF5Lm9mX2xpc3QgKExpc3QubWFwIGFsbCB+ZjooZnVuIHZhcmlhbnQgLT4gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB2YXJpYW50KSkpKVxuOztcblxubGV0IHRvX3N0cmluZyAodCA6IHQpID1cbiAgbGV0IGFsbF9zdHJpbmdzID0gTGF6eS5mb3JjZSBhbGxfc3RyaW5ncyBpblxuICBhbGxfc3RyaW5ncy4odG9faW50IHQgLSAxKVxuOztcblxubGV0IG9mX3N0cmluZyA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCBtb2R1bGUgVCA9IFN0cmluZy5UYWJsZSBpblxuICAgICAgIGxldCB0YWJsZSA9IFQuY3JlYXRlIH5zaXplOm51bV9tb250aHMgKCkgaW5cbiAgICAgICBBcnJheS5pdGVyaSAoTGF6eS5mb3JjZSBhbGxfc3RyaW5ncykgfmY6KGZ1biBpIHMgLT5cbiAgICAgICAgIGxldCB0ID0gb2ZfaW50X2V4biAoaSArIDEpIGluXG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnMgfmRhdGE6dDtcbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5sb3dlcmNhc2UgcykgfmRhdGE6dDtcbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy51cHBlcmNhc2UgcykgfmRhdGE6dCk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGZ1biBzdHIgLT5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgKExhenkuZm9yY2UgdGFibGUpIHN0ciB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJJbnZhbGlkIG1vbnRoOiAlc1wiIHN0ciAoKVxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlIG1vbnRoID0gdCA9XG4gICAgfCBKYW5cbiAgICB8IEZlYlxuICAgIHwgTWFyXG4gICAgfCBBcHJcbiAgICB8IE1heVxuICAgIHwgSnVuXG4gICAgfCBKdWxcbiAgICB8IEF1Z1xuICAgIHwgU2VwXG4gICAgfCBPY3RcbiAgICB8IE5vdlxuICAgIHwgRGVjXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IGlzX2xlYXBfeWVhciB+eWVhciA9ICh5ZWFyIG1vZCA0ID0gMCAmJiBub3QgKHllYXIgbW9kIDEwMCA9IDApKSB8fCB5ZWFyIG1vZCA0MDAgPSAwXG5cbigqIENyZWF0ZSBhIGxvY2FsIHByaXZhdGUgZGF0ZSB0eXBlIHRvIGVuc3VyZSB0aGF0IGFsbCBkYXRlcyBhcmUgY3JlYXRlZCB2aWFcbiAgIERhdGUuY3JlYXRlX2V4bi5cbiopXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGJpbl9pbywgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiB5OmludCAtPiBtOk1vbnRoLlN0YWJsZS5WMS50IC0+IGQ6aW50IC0+IHRcbiAgICAgICAgdmFsIHllYXIgOiB0IC0+IGludFxuICAgICAgICB2YWwgbW9udGggOiB0IC0+IE1vbnRoLlN0YWJsZS5WMS50XG4gICAgICAgIHZhbCBkYXkgOiB0IC0+IGludFxuICAgICAgICB2YWwgZGF5c19pbl9tb250aCA6IHllYXI6aW50IC0+IG1vbnRoOk1vbnRoLnQgLT4gaW50XG4gICAgICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgICAgICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gICAgICAgIHZhbCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkgOiB0XG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgKCogV2UgdXNlZCB0byBzdG9yZSBkYXRlcyBsaWtlIHRoaXM6XG4gICAgICAgICAgIHR5cGUgdCA9IHsgeTogaW50OyBtOiBNb250aC5TdGFibGUuVjEudDsgZDogaW50OyB9XG4gICAgICAgICAgIEluIHRoZSBiZWxvdyB3ZSBtYWtlIHN1cmUgdGhhdCB0aGUgYmluX2lvIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgICAgIGlkZW50aWNhbCAoYW5kIHRoZSBzdGFibGUgdW5pdCB0ZXN0cyBjaGVjayB0aGlzKVxuXG4gICAgICAgICAgIEluIG1lbW9yeSB3ZSB1c2UgdGhlIGZvbGxvd2luZyBtdWNoIG1vcmUgY29tcGFjdCByZXByZXNlbnRhdGlvbjpcbiAgICAgICAgICAgMiBieXRlcyB5ZWFyXG4gICAgICAgICAgIDEgYnl0ZSBtb250aFxuICAgICAgICAgICAxIGJ5dGUgZGF5XG5cbiAgICAgICAgICAgYWxsIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGltbWVkaWF0ZSBpbnQgKHNvIGZyb20gNCB3b3JkcyBkb3duIHRvIDEpLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlIHQgPSBpbnRcbiAgICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgICBlcXVhbCwgaGFzaCwgdHlwZXJlcCwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWVlM2UwLTQ5MGEtMTFlNi1hMTBhLWEzNzM0ZjczMzU2NlwiXVxuXG4gICAgICAgIGxldCBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICAoKiBjcmVhdGVfZXhuJ3MgdmFsaWRhdGlvbiBtYWtlIHN1cmUgdGhhdCBlYWNoIHZhbHVlIGZpdHMgKilcbiAgICAgICAgICAoeWVhciBsc2wgMTYpIGxvciAoTW9udGgudG9faW50IG1vbnRoIGxzbCA4KSBsb3IgZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHllYXIgdCA9IHQgbHNyIDE2XG4gICAgICAgIGxldCBtb250aCB0ID0gTW9udGgub2ZfaW50X2V4biAoKHQgbHNyIDgpIGxhbmQgMHhmZilcbiAgICAgICAgbGV0IGRheSB0ID0gdCBsYW5kIDB4ZmZcblxuICAgICAgICBsZXQgZGF5c19pbl9tb250aCB+eWVhciB+bW9udGggPVxuICAgICAgICAgIG1hdGNoIChtb250aCA6IE1vbnRoLnQpIHdpdGhcbiAgICAgICAgICB8IEphbiB8IE1hciB8IE1heSB8IEp1bCB8IEF1ZyB8IE9jdCB8IERlYyAtPiAzMVxuICAgICAgICAgIHwgQXByIHwgSnVuIHwgU2VwIHwgTm92IC0+IDMwXG4gICAgICAgICAgfCBGZWIgLT4gaWYgaXNfbGVhcF95ZWFyIH55ZWFyIHRoZW4gMjkgZWxzZSAyOFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5ID1cbiAgICAgICAgICAoKiB5ZWFyLCBtb250aCwgYW5kIGRheSBuZWVkIHRvIGJlIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIHRvIGF2b2lkIGFsbG9jYXRpbmdcbiAgICAgICAgICAgICBhIGNsb3N1cmUgKHNlZSB1bml0IHRlc3QgYmVsb3cpICopXG4gICAgICAgICAgbGV0IGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgbXNnID1cbiAgICAgICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgICAgICAhXCJEYXRlLmNyZWF0ZV9leG4gfnk6JWQgfm06JXtNb250aH0gfmQ6JWQgZXJyb3I6ICVzXCJcbiAgICAgICAgICAgICAgeWVhclxuICAgICAgICAgICAgICBtb250aFxuICAgICAgICAgICAgICBkYXlcbiAgICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiB5ZWFyIDwgMCB8fCB5ZWFyID4gOTk5OVxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcInllYXIgb3V0c2lkZSBvZiBbMC4uOTk5OV1cIjtcbiAgICAgICAgICBpZiBkYXkgPD0gMCB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJkYXkgPD0gMFwiO1xuICAgICAgICAgIGxldCBkYXlzX2luX21vbnRoID0gZGF5c19pbl9tb250aCB+eWVhciB+bW9udGggaW5cbiAgICAgICAgICBpZiBkYXkgPiBkYXlzX2luX21vbnRoXG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IChzcHJpbnRmIFwiJWQgZGF5IG1vbnRoIHZpb2xhdGlvblwiIGRheXNfaW5fbW9udGgpO1xuICAgICAgICAgIGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXlcbiAgICAgICAgOztcblxuICAgICAgICAoKiBXZSBkb24ndCB1c2UgTWFrZV9iaW5hYmxlIGhlcmUsIGJlY2F1c2UgdGhhdCB3b3VsZCBnbyB2aWEgYW4gaW1tZWRpYXRlXG4gICAgICAgICAgIHR1cGxlIG9yIHJlY29yZC4gIFRoYXQgaXMgZXhhY3RseSB0aGUgMzIgYnl0ZXMgd2Ugd29ya2VkIHNvIGhhcmQgYWJvdmUgdG9cbiAgICAgICAgICAgZ2V0IHJpZCBvZi4gIFdlIGFsc28gZG9uJ3Qgd2FudCB0byBqdXN0IGJpbl9pbyB0aGUgaW50ZWdlciBkaXJlY3RseVxuICAgICAgICAgICBiZWNhdXNlIHRoYXQgd291bGQgbWVhbiBhIG5ldyBiaW5faW8gZm9ybWF0LiAgKilcblxuICAgICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICAgIGxldCB5ZWFyID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGguU3RhYmxlLlYxLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgbGV0IGRheSA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgKCogX19iaW5fcmVhZF90IGlzIG9ubHkgbmVlZGVkIGZvciB2YXJpYW50cyAqKVxuICAgICAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJEYXRlLnRcIiAhcG9zX3JlZlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fc2l6ZV90IHQgPVxuICAgICAgICAgIEludC5iaW5fc2l6ZV90ICh5ZWFyIHQpICsgTW9udGguYmluX3NpemVfdCAobW9udGggdCkgKyBJbnQuYmluX3NpemVfdCAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICAgIGxldCBwb3MgPSBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKHllYXIgdCkgaW5cbiAgICAgICAgICBsZXQgcG9zID0gTW9udGguYmluX3dyaXRlX3QgYnVmIH5wb3MgKG1vbnRoIHQpIGluXG4gICAgICAgICAgSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zIChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgICAgICBsZXQgYmluX3QgPVxuICAgICAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgICAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9faW50IHQgPSB0XG4gICAgICAgIGxldCBvZl9pbnRfZXhuIG4gPSBjcmVhdGVfZXhuIH55Oih5ZWFyIG4pIH5tOihtb250aCBuKSB+ZDooZGF5IG4pXG4gICAgICAgIGxldCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkgPSAwXG5cbiAgICAgICAgbGV0JXRlc3QgXCJpbnZhbGlkIHZhbHVlXCIgPVxuICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgOiB0IC0+IG9mX2ludF9leG4gaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG5cbiAgICAgICgqKiBZWVlZLU1NLUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA0ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NSAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNyAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjggKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZFxuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjQgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo2IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICAoKiogTU0vREQvWVlZWSAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19hbWVyaWNhbiB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICcvJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MyAoZGF5IHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDUgJy8nO1xuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczo2ICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX3llYXI0IHN0ciBwb3MgPSByZWFkXzRfZGlnaXRfaW50IHN0ciB+cG9zXG4gICAgICBsZXQgcGFyc2VfbW9udGggc3RyIHBvcyA9IE1vbnRoLm9mX2ludF9leG4gKHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MpXG4gICAgICBsZXQgcGFyc2VfZGF5IHN0ciBwb3MgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IG9mX3N0cmluZ19pc284NjAxX2Jhc2ljIHN0ciB+cG9zID1cbiAgICAgICAgaWYgcG9zICsgOCA+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEYXRlLm9mX3N0cmluZ19pc284NjAxX2Jhc2ljOiBwb3MgKyA4ID4gc3RyaW5nIGxlbmd0aFwiO1xuICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHN0ciBwb3MpXG4gICAgICAgICAgfm06KHBhcnNlX21vbnRoIHN0ciAocG9zICsgNCkpXG4gICAgICAgICAgfmQ6KHBhcnNlX2RheSBzdHIgKHBvcyArIDYpKVxuICAgICAgOztcblxuICAgICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhIG1hdGVyaWFsIHdheSwgYmUgc3VyZSB5b3VcbiAgICAgICAgIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB3b3JraW5nIGluIFN0YWJsZSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IGludmFsaWQgKCkgPSBmYWlsd2l0aCAoXCJpbnZhbGlkIGRhdGU6IFwiIF4gcykgaW5cbiAgICAgICAgbGV0IGVuc3VyZSBiID0gaWYgbm90IGIgdGhlbiBpbnZhbGlkICgpIGluXG4gICAgICAgIGxldCBtb250aF9udW0gfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG4gfnk6KHBhcnNlX3llYXI0IHMgeWVhcikgfm06KHBhcnNlX21vbnRoIHMgbW9udGgpIH5kOihwYXJzZV9kYXkgcyBkYXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb250aF9hYnJ2IH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgICB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKVxuICAgICAgICAgICAgfm06KE1vbnRoLm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzIH5wb3M6bW9udGggfmxlbjozKSlcbiAgICAgICAgICAgIH5kOihwYXJzZV9kYXkgcyBkYXkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICcvJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeSwgbSwgZCA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246Jy8nIHdpdGhcbiAgICAgICAgICAgIHwgWyBhOyBiOyBjIF0gLT5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBhID0gNCB0aGVuIGEsIGIsIGMgKCogeS9tL2QgKikgZWxzZSBjLCBhLCBiICgqIG0vZC95ICopXG4gICAgICAgICAgICB8IF8gLT4gaW52YWxpZCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQub2Zfc3RyaW5nIHkgaW5cbiAgICAgICAgICBsZXQgeWVhciA9XG4gICAgICAgICAgICBpZiB5ZWFyID49IDEwMCB0aGVuIHllYXIgZWxzZSBpZiB5ZWFyIDwgNzUgdGhlbiAyMDAwICsgeWVhciBlbHNlIDE5MDAgKyB5ZWFyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5vZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIG0pIGluXG4gICAgICAgICAgbGV0IGRheSA9IEludC5vZl9zdHJpbmcgZCBpblxuICAgICAgICAgIGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkpXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy0nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIHl5eXktbW0tZGQgKilcbiAgICAgICAgICBlbnN1cmUgKFN0cmluZy5sZW5ndGggcyA9IDEwICYmIENoYXIuKCA9ICkgcy5bNF0gJy0nICYmIENoYXIuKCA9ICkgcy5bN10gJy0nKTtcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NSB+ZGF5OjgpXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJyAnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzJdICcgJyAmJiBDaGFyLiggPSApIHMuWzZdICcgJ1xuICAgICAgICAgIHRoZW4gKCogREQgTU1NIFlZWVkgKilcbiAgICAgICAgICAgIG1vbnRoX2FicnYgfmRheTowIH5tb250aDozIH55ZWFyOjdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFlZWVkgTU1NIEREICopXG4gICAgICAgICAgICBlbnN1cmUgKFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bNF0gJyAnICYmIENoYXIuKCA9ICkgcy5bOF0gJyAnKTtcbiAgICAgICAgICAgIG1vbnRoX2FicnYgfmRheTo5IH5tb250aDo1IH55ZWFyOjApXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOVxuICAgICAgICB0aGVuICgqIERETU1NWVlZWSAqKVxuICAgICAgICAgIG1vbnRoX2FicnYgfmRheTowIH5tb250aDoyIH55ZWFyOjVcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA4XG4gICAgICAgIHRoZW4gKCogYXNzdW1lIFlZWVlNTUREICopXG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjQgfmRheTo2XG4gICAgICAgIGVsc2UgaW52YWxpZCAoKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiRGF0ZS5vZl9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT2xkX2RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgeyB5IDogaW50XG4gICAgICAgICAgICA7IG0gOiBpbnRcbiAgICAgICAgICAgIDsgZCA6IGludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgICBsZXQgdG9fZGF0ZSB0ID0gVC5jcmVhdGVfZXhuIH55OnQueSB+bTooTW9udGgub2ZfaW50X2V4biB0Lm0pIH5kOnQuZFxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyBhcyBzZXhwIC0+IE9sZF9kYXRlLnRvX2RhdGUgKE9sZF9kYXRlLnRfb2Zfc2V4cCBzZXhwKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICAgICAgdHJ5IHRfb2Zfc2V4cCBzIHdpdGhcbiAgICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBleG4gLT4gcmFpc2UgZXhuXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGEgLT4gb2Zfc2V4cF9lcnJvciBhIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlXG5cbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgICAgbGV0IG4gPSBJbnQuY29tcGFyZSAoeWVhciB0MSkgKHllYXIgdDIpIGluXG4gICAgICAgIGlmIG4gPD4gMFxuICAgICAgICB0aGVuIG5cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG4gPSBNb250aC5jb21wYXJlIChtb250aCB0MSkgKG1vbnRoIHQyKSBpblxuICAgICAgICAgIGlmIG4gPD4gMCB0aGVuIG4gZWxzZSBJbnQuY29tcGFyZSAoZGF5IHQxKSAoZGF5IHQyKSlcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFdpdGhvdXRfY29tcGFyYWJsZVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBbQEBkZXJpdmluZ1xuICAgICAgICBiaW5faW9cbiAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjgyNmEzZTc5LTMzMjEtNDUxYS05NzA3LWVkNmMwM2I4NGUyZlwiXG4gICAgICAsIGNvbXBhcmVcbiAgICAgICwgaGFzaFxuICAgICAgLCB0eXBlcmVwXVxuXG4gICAgICBsZXQgbm9uZSA9IFYxLih0b19pbnQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlIF8gPSB0cnVlXG4gICAgICBsZXQgc29tZSB0ID0gVjEudG9faW50IHRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBWMS5vZl9pbnRfZXhuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJEYXRlLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBpZiBpc19zb21lIHQgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdCBlbHNlIGRlZmF1bHRcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmFibGUgPSBTdGFibGUuVjEuV2l0aG91dF9jb21wYXJhYmxlXG5pbmNsdWRlIFdpdGhvdXRfY29tcGFyYWJsZVxubW9kdWxlIEMgPSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChXaXRob3V0X2NvbXBhcmFibGUpXG5pbmNsdWRlIENcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoQyA6IENvbXBhcmFibGUuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgaW5jbHVkZSBCaW5hYmxlXG5cbiAgICBsZXQgY29tcGFyZSAoYSA6IHQpIChiIDogdCkgPSBjb21wYXJlIGEgYlxuICBlbmQpIDpcbiAgICBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5EYXRlXCJcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGVuZClcblxubGV0IHVuaXhfZXBvY2ggPSBjcmVhdGVfZXhuIH55OjE5NzAgfm06SmFuIH5kOjFcblxuKCogVGhlIERheXMgbW9kdWxlIGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9ucyB0aGF0IGludm9sdmUgYWRkaW5nIG9yIHJlbW92aW5nIGEga25vd24gbnVtYmVyXG4gICBvZiBkYXlzIGZyb20gYSBkYXRlLiAgSW50ZXJuYWxseSB0aGUgZGF0ZSBpcyB0cmFuc2xhdGVkIHRvIGEgZGF5IG51bWJlciwgdGhlIGRheXMgYXJlXG4gICBhZGRlZCwgYW5kIHRoZSBuZXcgZGF0ZSBpcyByZXR1cm5lZC4gIFRob3NlIGludGVyZXN0ZWQgaW4gdGhlIG1hdGggY2FuIHJlYWQ6XG5cbiAgIGh0dHA6Ly9hbGNvci5jb25jb3JkaWEuY2Evfmdwa2F0Y2gvZ2RhdGUtbWV0aG9kLmh0bWxcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBhcmUgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubW9kdWxlIERheXMgOiBzaWdcbiAgdHlwZSBkYXRlID0gdFxuICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuXG4gIHZhbCBvZl9kYXRlIDogZGF0ZSAtPiB0XG4gIHZhbCB0b19kYXRlIDogdCAtPiBkYXRlXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IGludFxuICB2YWwgYWRkX2RheXMgOiB0IC0+IGludCAtPiB0XG4gIHZhbCB1bml4X2Vwb2NoIDogdFxuZW5kXG53aXRoIHR5cGUgZGF0ZSA6PSB0ID0gc3RydWN0XG4gIG9wZW4gSW50XG5cbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG9mX3llYXIgeSA9ICgzNjUgKiB5KSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMClcblxuICBsZXQgb2ZfZGF0ZSBkYXRlID1cbiAgICBsZXQgbSA9IChNb250aC50b19pbnQgKG1vbnRoIGRhdGUpICsgOSkgJSAxMiBpblxuICAgIGxldCB5ID0geWVhciBkYXRlIC0gKG0gLyAxMCkgaW5cbiAgICBvZl95ZWFyIHkgKyAoKChtICogMzA2KSArIDUpIC8gMTApICsgKGRheSBkYXRlIC0gMSlcbiAgOztcblxuICBsZXQgY18xMF8wMDAgPSBJbnQ2My5vZl9pbnQgMTBfMDAwXG4gIGxldCBjXzE0Xzc4MCA9IEludDYzLm9mX2ludCAxNF83ODBcbiAgbGV0IGNfM182NTJfNDI1ID0gSW50NjMub2ZfaW50IDNfNjUyXzQyNVxuXG4gIGxldCB0b19kYXRlIGRheXMgPVxuICAgIGxldCB5ID1cbiAgICAgIGxldCBvcGVuIEludDYzIGluXG4gICAgICB0b19pbnRfZXhuICgoKGNfMTBfMDAwICogb2ZfaW50IGRheXMpICsgY18xNF83ODApIC8gY18zXzY1Ml80MjUpXG4gICAgaW5cbiAgICBsZXQgZGRkID0gZGF5cyAtIG9mX3llYXIgeSBpblxuICAgIGxldCB5LCBkZGQgPVxuICAgICAgaWYgZGRkIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB5ID0geSAtIDEgaW5cbiAgICAgICAgeSwgZGF5cyAtIG9mX3llYXIgeSlcbiAgICAgIGVsc2UgeSwgZGRkXG4gICAgaW5cbiAgICBsZXQgbWkgPSAoKDEwMCAqIGRkZCkgKyA1MikgLyAzXzA2MCBpblxuICAgIGxldCB5ID0geSArICgobWkgKyAyKSAvIDEyKSBpblxuICAgIGxldCBtID0gKChtaSArIDIpICUgMTIpICsgMSBpblxuICAgIGxldCBkID0gZGRkIC0gKCgobWkgKiAzMDYpICsgNSkgLyAxMCkgKyAxIGluXG4gICAgY3JlYXRlX2V4biB+eSB+bTooTW9udGgub2ZfaW50X2V4biBtKSB+ZFxuICA7O1xuXG4gIGxldCB1bml4X2Vwb2NoID0gb2ZfZGF0ZSB1bml4X2Vwb2NoXG4gIGxldCBhZGRfZGF5cyB0IGRheXMgPSB0ICsgZGF5c1xuICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcbmVuZFxuXG5sZXQgYWRkX2RheXMgdCBkYXlzID0gRGF5cy50b19kYXRlIChEYXlzLmFkZF9kYXlzIChEYXlzLm9mX2RhdGUgdCkgZGF5cylcbmxldCBkaWZmIHQxIHQyID0gRGF5cy5kaWZmIChEYXlzLm9mX2RhdGUgdDEpIChEYXlzLm9mX2RhdGUgdDIpXG5cbmxldCBhZGRfbW9udGhzIHQgbiA9XG4gIGxldCB0b3RhbF9tb250aHMgPSBNb250aC50b19pbnQgKG1vbnRoIHQpICsgbiBpblxuICBsZXQgeSA9IHllYXIgdCArICh0b3RhbF9tb250aHMgLyUgMTIpIGluXG4gIGxldCBtID0gdG90YWxfbW9udGhzICUgMTIgaW5cbiAgKCogY29ycmVjdCBmb3IgZGVjZW1iZXIgKilcbiAgbGV0IHksIG0gPSBpZiBJbnQuKCA9ICkgbSAwIHRoZW4geSAtIDEsIG0gKyAxMiBlbHNlIHksIG0gaW5cbiAgbGV0IG0gPSBNb250aC5vZl9pbnRfZXhuIG0gaW5cbiAgKCogaGFuZGxlIGludmFsaWQgZGF0ZXMgZm9yIG1vbnRocyB3aXRoIGZld2VyIG51bWJlciBvZiBkYXlzICopXG4gIGxldCByZWMgdHJ5X2NyZWF0ZSBkID1cbiAgICB0cnkgY3JlYXRlX2V4biB+eSB+bSB+ZCB3aXRoXG4gICAgfCBfZXhuIC0+XG4gICAgICBhc3NlcnQgKEludC4oID49ICkgZCAxKTtcbiAgICAgIHRyeV9jcmVhdGUgKGQgLSAxKVxuICBpblxuICB0cnlfY3JlYXRlIChkYXkgdClcbjs7XG5cbmxldCBhZGRfeWVhcnMgdCBuID0gYWRkX21vbnRocyB0IChuICogMTIpXG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV0ZXJtaW5hdGlvbl9vZl90aGVfZGF5X29mX3RoZV93ZWVrI1B1cmVseV9tYXRoZW1hdGljYWxfbWV0aG9kc1xuXG4gICBub3RlOiB1bml0IHRlc3RzIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbmxldCBkYXlfb2Zfd2VlayA9XG4gIGxldCB0YWJsZSA9IFt8IDA7IDM7IDI7IDU7IDA7IDM7IDU7IDE7IDQ7IDY7IDI7IDQgfF0gaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbSA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgaW5cbiAgICBsZXQgeSA9IGlmIEludC4oIDwgKSBtIDMgdGhlbiB5ZWFyIHQgLSAxIGVsc2UgeWVhciB0IGluXG4gICAgRGF5X29mX3dlZWsub2ZfaW50X2V4blxuICAgICAgKCh5ICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKSArIHRhYmxlLihtIC0gMSkgKyBkYXkgdCkgJSA3KVxuOztcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcmRpbmFsX2RhdGUgKilcbmxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDU5OyA5MDsgMTIwOyAxNTE7IDE4MTsgMjEyOyAyNDM7IDI3MzsgMzA0OyAzMzQgfF1cbmxldCBsZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNjA7IDkxOyAxMjE7IDE1MjsgMTgyOyAyMTM7IDI0NDsgMjc0OyAzMDU7IDMzNSB8XVxuXG5sZXQgb3JkaW5hbF9kYXRlIHQgPVxuICBsZXQgdGFibGUgPVxuICAgIGlmIGlzX2xlYXBfeWVhciB+eWVhcjooeWVhciB0KSB0aGVuIGxlYXBfeWVhcl90YWJsZSBlbHNlIG5vbl9sZWFwX3llYXJfdGFibGVcbiAgaW5cbiAgbGV0IG9mZnNldCA9IHRhYmxlLihNb250aC50b19pbnQgKG1vbnRoIHQpIC0gMSkgaW5cbiAgZGF5IHQgKyBvZmZzZXRcbjs7XG5cbmxldCBsYXN0X3dlZWtfb2ZfeWVhciB5ID1cbiAgbGV0IGZpcnN0X29mX3llYXIgPSBjcmVhdGVfZXhuIH55IH5tOkphbiB+ZDoxIGluXG4gIGxldCBpcyB0IGRheSA9IERheV9vZl93ZWVrLmVxdWFsIChkYXlfb2Zfd2VlayB0KSBkYXkgaW5cbiAgaWYgaXMgZmlyc3Rfb2ZfeWVhciBUaHUgfHwgKGlzX2xlYXBfeWVhciB+eWVhcjp5ICYmIGlzIGZpcnN0X29mX3llYXIgV2VkKVxuICB0aGVuIDUzXG4gIGVsc2UgNTJcbjs7XG5cbigqIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUgb3IgSVNPIDg2MDEgZm9yIHRoZSBkZXRhaWxzIG9mIHRoaXNcbiAgIGFsZ29yaXRobS5cblxuICAgVXNlcyBhIFt+Zl0gYXJndW1lbnQgdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY2FsbGVkIGJ5IFt3ZWVrX251bWJlcl0uXG4qKVxubGV0IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmYgPVxuICBsZXQgb3JkaW5hbCA9IG9yZGluYWxfZGF0ZSB0IGluXG4gIGxldCB3ZWVrZGF5ID0gRGF5X29mX3dlZWsuaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgKGRheV9vZl93ZWVrIHQpIGluXG4gICgqIFtvcmRpbmFsIC0gd2Vla2RheSArIDRdIGlzIHRoZSBvcmRpbmFsIG9mIHRoaXMgd2VlaydzIFRodXJzZGF5LCB0aGVuIChuICsgNikgLyA3IGlzXG4gICAgIGRpdmlzaW9uIGJ5IDcgcm91bmRpbmcgdXAgKilcbiAgbGV0IHdlZWsgPSAob3JkaW5hbCAtIHdlZWtkYXkgKyAxMCkgLyA3IGluXG4gIGxldCB5ZWFyID0geWVhciB0IGluXG4gIGlmIEludC4oIDwgKSB3ZWVrIDFcbiAgdGhlbiBmIH53ZWVrOihsYXN0X3dlZWtfb2ZfeWVhciAoeWVhciAtIDEpKSB+eWVhcjooeWVhciAtIDEpXG4gIGVsc2UgaWYgSW50LiggPiApIHdlZWsgKGxhc3Rfd2Vla19vZl95ZWFyIHllYXIpXG4gIHRoZW4gZiB+d2VlazoxIH55ZWFyOih5ZWFyICsgMSlcbiAgZWxzZSBmIH53ZWVrIH55ZWFyXG47O1xuXG5sZXQgd2Vla19udW1iZXJfYW5kX3llYXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhciAtPiB3ZWVrLCB5ZWFyKVxubGV0IHdlZWtfbnVtYmVyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXI6XyAtPiB3ZWVrKVxubGV0IGlzX3dlZWtlbmQgdCA9IERheV9vZl93ZWVrLmlzX3N1bl9vcl9zYXQgKGRheV9vZl93ZWVrIHQpXG5sZXQgaXNfd2Vla2RheSB0ID0gbm90IChpc193ZWVrZW5kIHQpXG5sZXQgaXNfYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPSBpc193ZWVrZGF5IHQgJiYgbm90IChpc19ob2xpZGF5IHQpXG5cbmxldCByZWMgZGlmZl93ZWVrZW5kX2RheXMgdDEgdDIgPVxuICBpZiB0MSA8IHQyXG4gIHRoZW4gLWRpZmZfd2Vla2VuZF9kYXlzIHQyIHQxXG4gIGVsc2UgKFxuICAgICgqIEJhc2ljIGRhdGUgZGlmZiAqKVxuICAgIGxldCBkaWZmID0gZGlmZiB0MSB0MiBpblxuICAgICgqIENvbXB1dGUgdGhlIG51bWJlciBvZiBTYXR1cmRheSAtPiBTdW5kYXkgY3Jvc3NpbmdzICopXG4gICAgbGV0IGQxID0gZGF5X29mX3dlZWsgdDEgaW5cbiAgICBsZXQgZDIgPSBkYXlfb2Zfd2VlayB0MiBpblxuICAgIGxldCBudW1fc2F0c3VuX2Nyb3NzaW5ncyA9XG4gICAgICBpZiBJbnQuKCA8ICkgKERheV9vZl93ZWVrLnRvX2ludCBkMSkgKERheV9vZl93ZWVrLnRvX2ludCBkMilcbiAgICAgIHRoZW4gMSArIChkaWZmIC8gNylcbiAgICAgIGVsc2UgZGlmZiAvIDdcbiAgICBpblxuICAgIChudW1fc2F0c3VuX2Nyb3NzaW5ncyAqIDIpXG4gICAgKyAoaWYgRGF5X29mX3dlZWsuKCA9ICkgZDIgRGF5X29mX3dlZWsuU3VuIHRoZW4gMSBlbHNlIDApXG4gICAgKyBpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMSBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAtMSBlbHNlIDApXG47O1xuXG5sZXQgZGlmZl93ZWVrZGF5cyB0MSB0MiA9IGRpZmYgdDEgdDIgLSBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MlxuXG5sZXQgYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcCBuID1cbiAgbGV0IHN0ZXAgPSBpZiBJbnQuKCA+PSApIG4gMCB0aGVuIDEgZWxzZSAtMSBpblxuICBsZXQgcmVjIGxvb3AgdCBrID1cbiAgICBsZXQgdF9uZXh0ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gICAgaWYgc2tpcCB0IHRoZW4gbG9vcCB0X25leHQgayBlbHNlIGlmIEludC4oID0gKSBrIDAgdGhlbiB0IGVsc2UgbG9vcCB0X25leHQgKGsgLSAxKVxuICBpblxuICBsb29wIHQgKGFicyBuKVxuOztcblxubGV0IHJlYyBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwIH5jb25kaXRpb24gPVxuICBpZiBjb25kaXRpb24gdCB0aGVuIHQgZWxzZSBmaXJzdF9kYXlfc2F0aXNmeWluZyAoYWRkX2RheXMgdCBzdGVwKSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwIH5jb25kaXRpb24gPVxuICBsZXQgbmV4dF9kYXkgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgbmV4dF9kYXkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IGZvbGxvd2luZ193ZWVrZGF5IHQgPSBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCBwcmV2aW91c193ZWVrZGF5IHQgPSBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCByb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCByb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5cbmxldCByb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCByb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzIHQgbiA9IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXA6aXNfd2Vla2VuZCBuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX3dlZWtkYXlzXG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfZm9yd2FyZCB0IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19iYWNrd2FyZCB0IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5cyB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyB0IG4gfnNraXA6KGZ1biBkIC0+IGlzX3dlZWtlbmQgZCB8fCBpc19ob2xpZGF5IGQpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfYnVzaW5lc3NfZGF5c1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfZm9yd2FyZCB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWNrd2FyZCB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZGF0ZXNfYmV0d2VlbiB+bWluOnQxIH5tYXg6dDIgPVxuICBsZXQgcmVjIGxvb3AgdCBsID0gaWYgdCA8IHQxIHRoZW4gbCBlbHNlIGxvb3AgKGFkZF9kYXlzIHQgKC0xKSkgKHQgOjogbCkgaW5cbiAgbG9vcCB0MiBbXVxuOztcblxubGV0IHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4ID1cbiAgbGV0IGFsbF9kYXRlcyA9IGRhdGVzX2JldHdlZW4gfm1pbiB+bWF4IGluXG4gIE9wdGlvbi52YWx1ZV9tYXAgKExpc3QuaGQgYWxsX2RhdGVzKSB+ZGVmYXVsdDpbXSB+ZjooZnVuIGZpcnN0X2RhdGUgLT5cbiAgICAoKiB0byBhdm9pZCBhIHN5c3RlbSBjYWxsIG9uIGV2ZXJ5IGRhdGUsIHdlIGp1c3QgZ2V0IHRoZSB3ZWVrZGF5IGZvciB0aGUgZmlyc3RcbiAgICAgICBkYXRlIGFuZCB1c2UgaXQgdG8gZ2V0IGFsbCB0aGUgb3RoZXIgd2Vla2RheXMgKilcbiAgICBsZXQgZmlyc3Rfd2Vla2RheSA9IGRheV9vZl93ZWVrIGZpcnN0X2RhdGUgaW5cbiAgICBsZXQgZGF0ZV9hbmRfd2Vla2RheXMgPVxuICAgICAgTGlzdC5tYXBpIGFsbF9kYXRlcyB+ZjooZnVuIGkgZGF0ZSAtPiBkYXRlLCBEYXlfb2Zfd2Vlay5zaGlmdCBmaXJzdF93ZWVrZGF5IGkpXG4gICAgaW5cbiAgICBMaXN0LmZpbHRlcl9tYXAgZGF0ZV9hbmRfd2Vla2RheXMgfmY6KGZ1biAoZGF0ZSwgd2Vla2RheSkgLT5cbiAgICAgIGlmIERheV9vZl93ZWVrLmlzX3N1bl9vcl9zYXQgd2Vla2RheSB0aGVuIE5vbmUgZWxzZSBTb21lIGRhdGUpKVxuOztcblxubGV0IGJ1c2luZXNzX2RhdGVzX2JldHdlZW4gfm1pbiB+bWF4IH5pc19ob2xpZGF5ID1cbiAgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBkIC0+IG5vdCAoaXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBmaXJzdF9zdHJpY3RseV9hZnRlciB0IH5vbjpkb3cgPVxuICBsZXQgZG93ID0gRGF5X29mX3dlZWsudG9faW50IGRvdyBpblxuICBsZXQgdHBsdXMxID0gYWRkX2RheXMgdCAxIGluXG4gIGxldCBjdXIgPSBEYXlfb2Zfd2Vlay50b19pbnQgKGRheV9vZl93ZWVrIHRwbHVzMSkgaW5cbiAgbGV0IGRpZmYgPSAoZG93ICsgNyAtIGN1cikgbW9kIDcgaW5cbiAgYWRkX2RheXMgdHBsdXMxIGRpZmZcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBvcGVuIFF1aWNrY2hlY2tcblxuICBsZXQgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiA9XG4gICAgaWYgZDEgPiBkMlxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJEYXRlLmdlbl91bmlmb3JtX2luY2w6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgICB+bG93ZXJfYm91bmQ6KGQxIDogdClcbiAgICAgICAgICAgIH51cHBlcl9ib3VuZDooZDIgOiB0KV07XG4gICAgR2VuZXJhdG9yLm1hcCAoSW50Lmdlbl91bmlmb3JtX2luY2wgMCAoZGlmZiBkMiBkMSkpIH5mOihmdW4gZGF5cyAtPiBhZGRfZGF5cyBkMSBkYXlzKVxuICA7O1xuXG4gIGxldCBnZW5faW5jbCBkMSBkMiA9XG4gICAgR2VuZXJhdG9yLndlaWdodGVkX3VuaW9uXG4gICAgICBbIDEuLCBHZW5lcmF0b3IucmV0dXJuIGQxOyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMjsgMTguLCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyIF1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCAob2Zfc3RyaW5nIFwiMTkwMC0wMS0wMVwiKSAob2Zfc3RyaW5nIFwiMjEwMC0wMS0wMVwiKVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IE9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemU6XyB+aGFzaCAtPiBoYXNoX2ZvbGRfdCBoYXNoIHQpXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gU2hyaW5rZXIuZW1wdHkgKClcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvclxubGV0IGdlbl9pbmNsID0gRm9yX3F1aWNrY2hlY2suZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gRm9yX3F1aWNrY2hlY2suZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGxlYXBfeWVhcl90YWJsZSA9IGxlYXBfeWVhcl90YWJsZVxuICBsZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IG5vbl9sZWFwX3llYXJfdGFibGVcbiAgbGV0IG9yZGluYWxfZGF0ZSA9IG9yZGluYWxfZGF0ZVxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZS5PcHRpb25cbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoT3B0aW9uLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHF1aWNrY2hlY2tfZ2VuZXJhdG9yKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoT3B0aW9uLnF1aWNrY2hlY2tfc2hyaW5rZXIgcXVpY2tjaGVja19zaHJpbmtlcilcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci5vZl9oYXNoXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBzdWZmaXhlcyBjaGFyID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBbIHNwcmludGYgXCIlY1wiIGNoYXI7IHNwcmludGYgXCIlY01cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NLlwiIGNoYXIgXVxuICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biBzdWZmaXggLT5cbiAgICBbIFN0cmluZy5sb3dlcmNhc2Ugc3VmZml4OyBTdHJpbmcudXBwZXJjYXNlIHN1ZmZpeCBdKVxuOztcblxubGV0IGFtX3N1ZmZpeGVzID0gbGF6eSAoc3VmZml4ZXMgJ0EnKVxubGV0IHBtX3N1ZmZpeGVzID0gbGF6eSAoc3VmZml4ZXMgJ1AnKVxuXG4oKiBBdm9pZHMgdGhlIGFsbG9jYXRpb24gdGhhdCBbTGlzdC5maW5kXSB3b3VsZCBlbnRhaWwgaW4gYm90aCBib3RoIHRoZSBjbG9zdXJlIGlucHV0IGFuZFxuICAgdGhlIG9wdGlvbiBvdXRwdXQuICopXG5sZXQgcmVjIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlcyA9XG4gIG1hdGNoIHN1ZmZpeGVzIHdpdGhcbiAgfCBzdWZmaXggOjogc3VmZml4ZXMgLT5cbiAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4IHRoZW4gc3VmZml4IGVsc2UgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzXG4gIHwgW10gLT4gXCJcIlxuOztcblxubGV0IGhhc19jb2xvbiBzdHJpbmcgcG9zIH51bnRpbCA9IHBvcyA8IHVudGlsICYmIENoYXIuZXF1YWwgJzonIHN0cmluZy5bcG9zXVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGRlZmluZXMgd2hhdCB3ZSBtZWFudCBieSBcImRlY2ltYWwgcG9pbnRcIiwgYmVjYXVzZSBpbiBzb21lIHN0cmluZyBmb3JtYXRzXG4gICBpdCBtZWFucyAnLicgYW5kIGluIHNvbWUgaXQgY2FuIGJlICcuJyBvciAnLCcuIFRoZXJlJ3Mgbm8gcGFydGljdWxhciBkZW1hbmQgZm9yIHN1cHBvcnRcbiAgIGZvciAnLCcsIGFuZCB1c2luZyBqdXN0ICcuJyBsZXRzIHVzIHVzZSBbRmxvYXQub2Zfc3RyaW5nXSBmb3IgdGhlIGRlY2ltYWwgc3Vic3RyaW5nXG4gICB3aXRob3V0IGFueSBzdWJzdGl0dXRpb25zLiAqKVxubGV0IGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zID0gQ2hhci5lcXVhbCAnLicgc3RyaW5nLltwb3NdXG5cbmxldCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIGxlbiA9XG4gIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnICcgc3RyaW5nLltsZW4gLSAxXSB0aGVuIGxlbiAtIDEgZWxzZSBsZW5cbjs7XG5cbmxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWUuT2ZkYXk6IGludmFsaWQgc3RyaW5nXCIgc3RyaW5nIHJlYXNvbl1cbjs7XG5cbmxldCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgcG9zIH51bnRpbCA9XG4gIGxldCBub256ZXJvID0gcmVmIGZhbHNlIGluXG4gIGZvciBwb3MgPSBwb3MgdG8gdW50aWwgLSAxIGRvXG4gICAgbWF0Y2ggc3RyaW5nLltwb3NdIHdpdGhcbiAgICB8ICcwJyB8ICdfJyAtPiAoKVxuICAgIHwgJzEnIC4uICc5JyAtPiBub256ZXJvIDo9IHRydWVcbiAgICB8IF8gLT5cbiAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFuZC9vciB1bmRlcnNjb3JlcyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgcG9zIH51bnRpbCA9XG4gIGxldCBub256ZXJvID0gcmVmIGZhbHNlIGluXG4gIGZvciBwb3MgPSBwb3MgdG8gdW50aWwgLSAxIGRvXG4gICAgbWF0Y2ggc3RyaW5nLltwb3NdIHdpdGhcbiAgICB8ICcwJyAtPiAoKVxuICAgIHwgJzEnIC4uICc5JyAtPiBub256ZXJvIDo9IHRydWVcbiAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgcGFyc2Ugc3RyaW5nIH5mID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGxldCBhbV9vcl9wbSwgdW50aWwgPVxuICAgICgqIGRpc2NyaW1pbmF0ZSBhbW9uZyBBTSAoMTozMGFtKSwgUE0gKDEyOjMwOjAwIFAuTS4pLCBvciAyNC1ociAoMTM6MDApLiAqKVxuICAgIG1hdGNoXG4gICAgICAoIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBhbV9zdWZmaXhlcylcbiAgICAgICwgZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIHBtX3N1ZmZpeGVzKSApXG4gICAgd2l0aFxuICAgIHwgXCJcIiwgXCJcIiAtPiBgaHJfMjQsIGxlblxuICAgIHwgYW0sIFwiXCIgLT4gYGhyX0FNLCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIChsZW4gLSBTdHJpbmcubGVuZ3RoIGFtKVxuICAgIHwgXCJcIiwgcG0gLT4gYGhyX1BNLCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIChsZW4gLSBTdHJpbmcubGVuZ3RoIHBtKVxuICAgIHwgXywgXyAtPiBgaHJfMjQsIGFzc2VydCBmYWxzZVxuICAgICgqIEltbWVkaWF0ZWx5IGFib3ZlLCBpdCBtYXkgc2VlbSBub25zZW5zaWNhbCB0byB3cml0ZSBbYGhyXzI0LCBhc3NlcnQgZmFsc2VdIHdoZW4gdGhlXG4gICAgICAgW2Bocl8yNF0gY2FuIG5ldmVyIGJlIHJldHVybmVkLiBXZSBkbyB0aGlzIHRvIGhlbHAgdGhlIGNvbXBpbGVyIGZpZ3VyZSBvdXQgbmV2ZXIgdG9cbiAgICAgICBhbGxvY2F0ZSBhIHR1cGxlIGluIHRoaXMgY29kZTogdGhlIFtsZXRdIHBhdHRlcm4gaXMgc3ludGFjdGljYWxseSBhIHR1cGxlIGFuZCBldmVyeVxuICAgICAgIG1hdGNoIGNsYXVzZSBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUuICopXG4gIGluXG4gIGxldCBwb3MgPSAwIGluXG4gIGxldCBwb3MsIGhyLCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyA9XG4gICAgKCogZS5nLiBcIjE6MDBcIiBvciBcIjE6MDA6MDBcIiAqKVxuICAgIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDEpIH51bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDIsIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTI6MDBcIiBvciBcIjEyOjAwOjAwXCIgKilcbiAgICBlbHNlIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDIpIH51bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDMsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMWFtXCI7IG11c3QgaGF2ZSBBTSBvciBQTSAoY2hlY2tlZCBiZWxvdykgKilcbiAgICBlbHNlIGlmIHBvcyArIDEgPSB1bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDEsIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMmFtXCI7IG11c3QgaGF2ZSBBTSBvciBQTSAoY2hlY2tlZCBiZWxvdykgKilcbiAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIwOTMwXCI7IG11c3Qgbm90IGhhdmUgc2Vjb25kcyAqKVxuICAgIGVsc2UgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzXG4gIGluXG4gIGxldCBwb3MsIG1pbiwgZXhwZWN0X3NlY29uZHMgPVxuICAgIG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgKilcbiAgICAgIHBvcywgMCwgZmFsc2VcbiAgICB8IChgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcykgYXMgbWF5YmVfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDIpIH51bnRpbFxuICAgICAgdGhlblxuICAgICAgICAoIHBvcyArIDNcbiAgICAgICAgLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG4gICAgICAgICwgbWF0Y2ggbWF5YmVfc2Vjb25kcyB3aXRoXG4gICAgICAgIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT4gdHJ1ZVxuICAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyAtPlxuICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyBhZnRlciBtaW51dGVzXCIgKVxuICAgICAgICAoKiBlLmcuIFwiMTI6MDBcIiAqKVxuICAgICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICAgIHRoZW4gcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgY29sb24gb3IgYW0vcG0gc3VmZml4IHdpdGggb3B0aW9uYWwgc3BhY2UgYWZ0ZXIgbWludXRlc1wiXG4gIGluXG4gIGxldCBzZWMsIHN1YnNlY19wb3MsIHN1YnNlY19sZW4sIHN1YnNlY19ub256ZXJvID1cbiAgICBtYXRjaCBleHBlY3Rfc2Vjb25kcyB3aXRoXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiBvciBcIjEyOjAwXCIgKilcbiAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICB0aGVuIDAsIHBvcywgMCwgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGFjdHVhbGx5IHVucmVhY2hhYmxlLCBiYXNlZCBvbiB0aGUgdmFyaW91cyB3YXlzIHRoYXRcbiAgICAgICAgICAgW2V4cGVjdF9zZWNvbmRzXSBjYW4gZW5kIHVwIGZhbHNlLiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIkJVRzogZGlkIG5vdCBleHBlY3Qgc2Vjb25kcywgYnV0IGZvdW5kIHRoZW1cIlxuICAgIHwgdHJ1ZSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgIGlmIHBvcyArIDIgPiB1bnRpbFxuICAgICAgdGhlblxuICAgICAgICAoKiBlLmcuIFwiMTI6MDA6MFwiICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgdHdvIGRpZ2l0cyBvZiBzZWNvbmRzXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyBpblxuICAgICAgICBsZXQgcG9zID0gcG9zICsgMiBpblxuICAgICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgICB0aGVuIHNlYywgcG9zLCAwLCBmYWxzZSAoKiBlLmcuIFwiMTI6MDA6MDAuMTIzXCIgKilcbiAgICAgICAgZWxzZSBpZiBwb3MgPCB1bnRpbCAmJiBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgKCBzZWNcbiAgICAgICAgICAsIHBvc1xuICAgICAgICAgICwgdW50aWwgLSBwb3NcbiAgICAgICAgICAsIGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyAocG9zICsgMSkgfnVudGlsIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkZWNpbWFsIHBvaW50IG9yIGFtL3BtIHN1ZmZpeCBhZnRlciBzZWNvbmRzXCIpXG4gIGluXG4gIGxldCBociA9XG4gICAgKCogTkIuIFdlIGFscmVhZHkga25vdyBbaHJdIGlzIG5vbi1uZWdhdGl2ZSwgYmVjYXVzZSBpdCdzIHRoZSByZXN1bHQgb2ZcbiAgICAgICBbcmVhZF8yX2RpZ2l0X2ludF0uICopXG4gICAgbWF0Y2ggYW1fb3JfcG0gd2l0aFxuICAgIHwgYGhyX0FNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBhbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgaHJcbiAgICB8IGBocl9QTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwcG1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAxMlxuICAgICAgZWxzZSBociArIDEyXG4gICAgfCBgaHJfMjQgLT5cbiAgICAgIChtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIHdpdGhvdXQgbWludXRlcyBvciBBTS9QTVwiXG4gICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPlxuICAgICAgICAgaWYgaHIgPiAyNFxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgZWxzZSBpZiBociA9IDI0ICYmIChtaW4gPiAwIHx8IHNlYyA+IDAgfHwgc3Vic2VjX25vbnplcm8pXG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidGltZSBpcyBwYXN0IDI0OjAwOjAwXCIgKCogZS5nLiBcIjEzOjAwOjAwXCIgKilcbiAgICAgICAgIGVsc2UgaHIpXG4gIGluXG4gIGxldCBtaW4gPVxuICAgIGlmIG1pbiA+IDU5IHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJtaW51dGVzIG91dCBvZiBib3VuZHNcIiBlbHNlIG1pblxuICBpblxuICBsZXQgc2VjID1cbiAgICBpZiBzZWMgPiA2MCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic2Vjb25kcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBzZWNcbiAgaW5cbiAgbGV0IHN1YnNlY19sZW4gPSBpZiBzZWMgPSA2MCB8fCBub3Qgc3Vic2VjX25vbnplcm8gdGhlbiAwIGVsc2Ugc3Vic2VjX2xlbiBpblxuICBmIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuXG47O1xuXG5sZXQgcGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBtYXRjaFxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbiAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgd2l0aFxuICAgIHwgUmVzdWx0Lk9rIHogLT4gelxuICAgIHwgUmVzdWx0LkVycm9yIHMgLT5cbiAgICAgIGZhaWx3aXRoZiBcIk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiAlc1wiIChFcnJvci50b19zdHJpbmdfbWFjaCBzKSAoKVxuICBpblxuICBpZiBsZW4gPCAyXG4gIHRoZW4gZmFpbHdpdGggXCJsZW4gPCAyXCJcbiAgZWxzZSAoXG4gICAgbGV0IGhyID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcyBpblxuICAgIGlmIGhyID4gMjQgdGhlbiBmYWlsd2l0aCBcImhvdXIgPiAyNFwiO1xuICAgIGlmIGxlbiA9IDJcbiAgICB0aGVuIGYgc3RyIH5ociB+bWluOjAgfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICBlbHNlIGlmIGxlbiA8IDVcbiAgICB0aGVuIGZhaWx3aXRoIFwiMiA8IGxlbiA8IDVcIlxuICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgMl0gJzonKVxuICAgIHRoZW4gZmFpbHdpdGggXCJmaXJzdCBjb2xvbiBtaXNzaW5nXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBtaW4gPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zOihwb3MgKyAzKSBpblxuICAgICAgaWYgbWluID49IDYwIHRoZW4gZmFpbHdpdGggXCJtaW51dGUgPiA2MFwiO1xuICAgICAgaWYgaHIgPSAyNCAmJiBtaW4gPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIG1pbnV0ZVwiO1xuICAgICAgaWYgbGVuID0gNVxuICAgICAgdGhlbiBmIHN0ciB+aHIgfm1pbiB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgZWxzZSBpZiBsZW4gPCA4XG4gICAgICB0aGVuIGZhaWx3aXRoIFwiNSA8IGxlbiA8IDhcIlxuICAgICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyA1XSAnOicpXG4gICAgICB0aGVuIGZhaWx3aXRoIFwic2Vjb25kIGNvbG9uIG1pc3NpbmdcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zOihwb3MgKyA2KSBpblxuICAgICAgICAoKiBzZWNvbmQgY2FuIGJlIDYwIGluIHRoZSBjYXNlIG9mIGEgbGVhcCBzZWNvbmQuIFVuZm9ydHVuYXRlbHksIHdoYXQgd2l0aFxuICAgICAgICAgICBub24taG91ci1tdWx0aXBsZSB0aW1lem9uZSBvZmZzZXRzLCB3ZSBjYW4ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hhdFxuICAgICAgICAgICB0aGUgaG91ciBvciBtaW51dGUgbXVzdCBiZSBpbiB0aGF0IGNhc2UgKilcbiAgICAgICAgaWYgc2VjID4gNjAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIHNlY29uZDogJWlcIiBzZWMgKCk7XG4gICAgICAgIGlmIGhyID0gMjQgJiYgc2VjIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBzZWNvbmRzXCI7XG4gICAgICAgIGlmIGxlbiA9IDhcbiAgICAgICAgdGhlbiBmIHN0ciB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgICAgZWxzZSBpZiBsZW4gPSA5XG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJsZW5ndGggPSA5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggc3RyLltwb3MgKyA4XSB3aXRoXG4gICAgICAgICAgfCAnLicgfCAnLCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfcG9zID0gcG9zICsgOCBpblxuICAgICAgICAgICAgbGV0IHN1YnNlY19sZW4gPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvXG4gICAgICAgICAgICAgICAgICBzdHJcbiAgICAgICAgICAgICAgICAgIChzdWJzZWNfcG9zICsgMSlcbiAgICAgICAgICAgICAgICAgIH51bnRpbDoocG9zICsgbGVuKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIHNlYyA9IDYwIC0+IDBcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gaHIgPSAyNCAtPiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBzdWJzZWNvbmRzXCJcbiAgICAgICAgICAgICAgfCBfIC0+IGxlbiAtIDhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmIHN0ciB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuXG4gICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwibWlzc2luZyBzdWJzZWNvbmQgc2VwYXJhdG9yXCIpKSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbl9wcm90LlN0ZFxuaW5jbHVkZSBIYXNoLkJ1aWx0aW5cblxuaW5jbHVkZSAoXG4gIEJhc2UgOlxuICBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBib29sID0gYm9vbCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgY2hhciA9IGNoYXIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGV4biA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludCA9IGludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50MzIgPSBpbnQzMiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYnl0ZXMgPSBieXRlcyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgdW5pdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG4gIHdpdGggdHlwZSBib29sIDo9IGJvb2xcbiAgd2l0aCB0eXBlIGNoYXIgOj0gY2hhclxuICB3aXRoIHR5cGUgZXhuIDo9IGV4blxuICB3aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbiAgd2l0aCB0eXBlIGludCA6PSBpbnRcbiAgd2l0aCB0eXBlIGludDMyIDo9IGludDMyXG4gIHdpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxuICB3aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG4gIHdpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG4gIHdpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG4gIHdpdGggdHlwZSBieXRlcyA6PSBieXRlc1xuICB3aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuIiwib3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBleGNlcHRpb24gTmFuX29yX2luZiBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICBsZXQgdmVyaWZ5IHQgPVxuICAgICAgbWF0Y2ggQ2FtbC5jbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiAoKVxuICAgICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiByYWlzZSBOYW5fb3JfaW5mXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gRmxvYXQuc2V4cF9vZl90XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gYXMgc2V4cCAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0LnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICh0cnkgdmVyaWZ5IHQgd2l0aFxuICAgICAgICAgfCBlIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIChJbXBvcnQuRXhuLnRvX3N0cmluZyBlKSBzZXhwKTtcbiAgICAgICAgdFxuICAgICAgfCBzIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIFwiRGVjaW1hbC50X29mX3NleHA6IEV4cGVjdGVkIEF0b20sIGZvdW5kIExpc3RcIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgbGV0IG9mX211bHQgZiA9IGZcbiAgICBsZXQgdG9fbXVsdCB0ID0gdFxuICAgIGxldCBvZl9wZXJjZW50YWdlIGYgPSBmIC8uIDEwMC5cbiAgICBsZXQgdG9fcGVyY2VudGFnZSB0ID0gdCAqLiAxMDAuXG4gICAgbGV0IG9mX2JwIGYgPSBmIC8uIDEwXzAwMC5cbiAgICBsZXQgdG9fYnAgdCA9IHQgKi4gMTBfMDAwLlxuICAgIGxldCBvZl9icF9pbnQgaSA9IG9mX2JwIChGbG9hdC5vZl9pbnQgaSlcbiAgICBsZXQgdG9fYnBfaW50IHQgPSBGbG9hdC50b19pbnQgKHRvX2JwIHQpXG5cbiAgICBsZXQgcm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9tdWx0IHAgfmRlY2ltYWxfZGlnaXRzID0gRmxvYXQucm91bmRfZGVjaW1hbCBwIH5kZWNpbWFsX2RpZ2l0c1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfcGVyY2VudGFnZSBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAuXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX2JwIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwMDAuXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgRXhwb25lbnQgb2YgaW50XG4gICAgICAgIHwgRXhwb25lbnRfRSBvZiBpbnRcbiAgICAgICAgfCBEZWNpbWFsIG9mIGludFxuICAgICAgICB8IE9jYW1sXG4gICAgICAgIHwgQ29tcGFjdCBvZiBpbnRcbiAgICAgICAgfCBDb21wYWN0X0Ugb2YgaW50XG4gICAgICAgIHwgSGV4IG9mIGludFxuICAgICAgICB8IEhleF9FIG9mIGludFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGV4cG9uZW50IH5wcmVjaXNpb24gPSBFeHBvbmVudCBwcmVjaXNpb25cbiAgICAgIGxldCBleHBvbmVudF9FIH5wcmVjaXNpb24gPSBFeHBvbmVudF9FIHByZWNpc2lvblxuICAgICAgbGV0IGRlY2ltYWwgfnByZWNpc2lvbiA9IERlY2ltYWwgcHJlY2lzaW9uXG4gICAgICBsZXQgb2NhbWwgPSBPY2FtbFxuICAgICAgbGV0IGNvbXBhY3QgfnByZWNpc2lvbiA9IENvbXBhY3QgcHJlY2lzaW9uXG4gICAgICBsZXQgY29tcGFjdF9FIH5wcmVjaXNpb24gPSBDb21wYWN0X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4IH5wcmVjaXNpb24gPSBIZXggcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4X0UgfnByZWNpc2lvbiA9IEhleF9FIHByZWNpc2lvblxuXG4gICAgICBsZXQgZm9ybWF0X2Zsb2F0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFeHBvbmVudCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBFeHBvbmVudF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qRVwiIHByZWNpc2lvblxuICAgICAgICB8IERlY2ltYWwgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipmXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgT2NhbWwgLT4gc3ByaW50ZiBcIiVGXCJcbiAgICAgICAgfCBDb21wYWN0IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZ1wiIHByZWNpc2lvblxuICAgICAgICB8IENvbXBhY3RfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXggcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipoXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipIXCIgcHJlY2lzaW9uXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9XG4gICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0IGZsb2F0IGluXG4gICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgdGhlbiBcIjB4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICgqIFdBUk5JTkcgLSBQTEVBU0UgUkVBRCBCRUZPUkUgRURJVElORyBUSEVTRSBGVU5DVElPTlM6XG5cbiAgICAgICAgIFRoZSBzdHJpbmcgY29udmVydGVycyBpbiBTdGFibGUuVjEgc2hvdWxkIG5ldmVyIGNoYW5nZS4gIElmIHlvdSBhcmUgY2hhbmdpbmcgdGhlXG4gICAgICAgICBzZW1hbnRpY3Mgb2YgYW55dGhpbmcgdGhhdCBhZmZlY3RzIHRoZSBzZXhwIG9yIGJpbi1pbyByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMgb2ZcbiAgICAgICAgIHRoaXMgdHlwZSAodGhpcyBpbmNsdWRlcyB0b19zdHJpbmcgYW5kIG9mX3N0cmluZykgbWFrZSBhIFN0YWJsZS5WMiBhbmQgbWFrZSB5b3VyXG4gICAgICAgICBjaGFuZ2VzIHRoZXJlLiAgVGhhbmtzISAqKVxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IHNwcmludGYgXCIlLjZHXCIgZmxvYXQgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVhbGx5X29mX3N0cmluZyBzdHIgZmxvYXRfb2Zfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwieFwiIHdpdGhcbiAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCIlXCIgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgKi4gMC4wMVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiYnBcIiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBzdHIgLT4gb2ZfYnAgKGZsb2F0X29mX3N0cmluZyBzdHIpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJQZXJjZW50Lm9mX3N0cmluZzogbXVzdCBlbmQgaW4geCwgJSUsIG9yIGJwOiAlc1wiIHN0ciAoKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgICAgIGxldCBmbG9hdCBzdHIgPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24udF9vZl9zZXhwIChTZXhwLkF0b20gc3RyKSBpblxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzdHIgPSByZWFsbHlfb2Zfc3RyaW5nIHN0ciBGbG9hdC5vZl9zdHJpbmdcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nYWJsZSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGJpbl9pb11cblxuICAgICAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXRcbiAgICAgICAgICAgc2VyaWFsaXphdGlvbiByYXRoZXIgdGhhbiBwZXJjZW50IHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZ1xuICAgICAgICAgICBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlciBzZXJpYWxpemF0aW9uLiAqKVxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgICAgICB8IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgbGV0IG5vbmUgPSBGbG9hdC5uYW5cbiAgICAgIGxldCBpc19ub25lIHQgPSBGbG9hdC5pc19uYW4gdFxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSA9IGlzX3NvbWVcbiAgICAgIGxldCBzb21lID0gRm4uaWRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBGbi5pZFxuICAgICAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfc29tZSB0IHRoZW4gU29tZSAodW5jaGVja2VkX3ZhbHVlIHQpIGVsc2UgTm9uZVxuICAgICAgbGV0IGFwcGx5X3dpdGhfbm9uZV9hc19uYW4gPSAoICouIClcbiAgICAgIGxldCBvZl9tdWx0X3dpdGhfbmFuX2FzX25vbmUgPSBGbi5pZFxuICAgICAgbGV0IHRvX211bHRfd2l0aF9ub25lX2FzX25hbiA9IEZuLmlkXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJQZXJjZW50Lk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBpZiBpc19zb21lIHQgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdCBlbHNlIGRlZmF1bHRcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZS5PcHRpb25cbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBpc196ZXJvIHQgPSB0ID0gMC5cbmxldCBhcHBseSB0IGYgPSB0ICouIGZcbmxldCBzY2FsZSB0IGYgPSB0ICouIGZcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBGbG9hdFxuXG4gIGxldCAoIC8vICkgeCB5ID0gb2ZfbXVsdCB4IC8uIG9mX211bHQgeVxuZW5kIDpcbnNpZ1xuICB2YWwgemVybyA6IHRcbiAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLy8gKSA6IHQgLT4gdCAtPiBmbG9hdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGlzX25hbiA6IHQgLT4gYm9vbFxuICB2YWwgaXNfaW5mIDogdCAtPiBib29sXG4gIHZhbCBzaWduX2V4biA6IHQgLT4gU2lnbi50XG5cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBTdGFibGUuVjFcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSA9IEZsb2F0LnZhbGlkYXRlX29yZGluYXJ5XG5sZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHMgPSBTdHJpbmdhYmxlLm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzXG5sZXQgdF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIHNleHAgPSBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgKFNleHAudG9fc3RyaW5nIHNleHApXG5cbm1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBmb3JtYXQgeCBmb3JtYXQgPSBGb3JtYXQuZm9ybWF0X2Zsb2F0IGZvcm1hdCAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gIGxldCB0b19zdHJpbmcgeCA9IHNwcmludGYgXCIlLjZHJSVcIiAoeCAqIDEwMC4pXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IHJhbmRvbWl6ZSBzcGFuIH5wZXJjZW50IH5zY2FsZSA9XG4gIGxldCBtdWx0ID0gUGVyY2VudC50b19tdWx0IHBlcmNlbnQgaW5cbiAgaWYgRmxvYXQuKCA8ICkgbXVsdCAwLiB8fCBGbG9hdC4oID4gKSBtdWx0IDEuXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJTcGFuLnJhbmRvbWl6ZTogcGVyY2VudCBpcyBvdXQgb2YgcmFuZ2UgWzB4LCAxeF1cIiAocGVyY2VudCA6IFBlcmNlbnQudCldO1xuICBsZXQgZmFjdG9yID0gUmFuZG9tLmZsb2F0X3JhbmdlICgxLiAtLiBtdWx0KSAoRmxvYXQub25lX3VscCBgVXAgKDEuICsuIG11bHQpKSBpblxuICBzY2FsZSBzcGFuIGZhY3RvclxuOztcblxubGV0IGZvcm1hdF9kZWNpbWFsIG4gdGVudGhzIHVuaXRzID1cbiAgYXNzZXJ0ICh0ZW50aHMgPj0gMCAmJiB0ZW50aHMgPCAxMCk7XG4gIGlmIG4gPCAxMCAmJiB0ZW50aHMgPD4gMFxuICB0aGVuIHNwcmludGYgXCIlZC4lZCVzXCIgbiB0ZW50aHMgdW5pdHNcbiAgZWxzZSBzcHJpbnRmIFwiJWQlc1wiIG4gdW5pdHNcbjs7XG5cbmxldCBzaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyA9XG4gIGxldCBzID1cbiAgICBpZiBociA+PSAyNFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgKGhyIC8gMjQpIChJbnQub2ZfZmxvYXQgKEZsb2F0Lm9mX2ludCAoaHIgJSAyNCkgLy4gMi40KSkgXCJkXCJcbiAgICBlbHNlIGlmIGhyID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgaHIgKG1pbiAvIDYpIFwiaFwiXG4gICAgZWxzZSBpZiBtaW4gPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBtaW4gKHNlYyAvIDYpIFwibVwiXG4gICAgZWxzZSBpZiBzZWMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBzZWMgKG1zIC8gMTAwKSBcInNcIlxuICAgIGVsc2UgaWYgbXMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBtcyAodXMgLyAxMDApIFwibXNcIlxuICAgIGVsc2UgaWYgdXMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCB1cyAobnMgLyAxMDApIFwidXNcIlxuICAgIGVsc2Ugc3ByaW50ZiBcIiVpbnNcIiBuc1xuICBpblxuICBtYXRjaCAoc2lnbiA6IFNpZ24udCkgd2l0aFxuICB8IE5lZyAtPiBcIi1cIiBeIHNcbiAgfCBaZXJvIHwgUG9zIC0+IHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFBhcnRzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHNpZ24gOiBTaWduLnRcbiAgICAgICAgOyBociA6IGludFxuICAgICAgICA7IG1pbiA6IGludFxuICAgICAgICA7IHNlYyA6IGludFxuICAgICAgICA7IG1zIDogaW50XG4gICAgICAgIDsgdXMgOiBpbnRcbiAgICAgICAgOyBucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBMaWtlX2FfZmxvYXQgPSBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgemVybyA6IHRcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiB0XG4gICAgICB2YWwgYWJzIDogdCAtPiB0XG4gICAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaF1cblxuICAgICAgaW5jbHVkZSBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgbW9kdWxlIENvbnN0YW50IDogc2lnXG4gICAgICAgIHZhbCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG5hbm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kIDogdFxuICAgICAgICB2YWwgc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWludXRlIDogdFxuICAgICAgICB2YWwgaG91ciA6IHRcbiAgICAgICAgdmFsIGRheSA6IHRcbiAgICAgIGVuZFxuXG4gICAgICB2YWwgdG9fcGFydHMgOiB0IC0+IFBhcnRzLnRcbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgICB2YWwgcHJldiA6IHQgLT4gdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgbGV0IG5leHQgdCA9IEZsb2F0Lm9uZV91bHAgYFVwIHRcbiAgICAgIGxldCBwcmV2IHQgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHRcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuU3BhbiB2ZXJzaW9uIHRvIHN0YWJsZS5tbCAqKVxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cbiAgICAgIGVuZCA6XG4gICAgICAgIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICAgICAgcHJlY2lzaW9uICopXG4gICAgICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgICAgIGVuZClcblxuICAgICAgKCogdGhpcyBwcmV2ZW50cyBhbnkgd29ycnkgYWJvdXQgaGF2aW5nIHRoZXNlIHZlcnkgY29tbW9uIG5hbWVzIHJlZGVmaW5lZCBiZWxvdyBhbmRcbiAgICAgICAgIG1ha2VzIHRoZWlyIHVzYWdlIHdpdGhpbiB0aGlzIG1vZHVsZSBzYWZlci4gIENvbnN0YW50IGlzIGluY2x1ZGVkIGF0IHRoZSB2ZXJ5XG4gICAgICAgICBib3R0b20gdG8gcmUtZXhwb3J0IHRoZXNlIGNvbnN0YW50cyBpbiBhIG1vcmUgY29udmVuaWVudCB3YXkgKilcbiAgICAgIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgICAgICBsZXQgbmFub3NlY29uZHNfcGVyX3NlY29uZCA9IDFFOVxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTZcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kID0gMUUzXG5cbiAgICAgICAgKCogc3BhbnMgYXJlIHN0b3JlZCBhcyBhIGZsb2F0IGluIHNlY29uZHMgKilcbiAgICAgICAgbGV0IG5hbm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWlsbGlzZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBzZWNvbmQgPSBvZl9mbG9hdCAxLlxuICAgICAgICBsZXQgbWludXRlID0gb2ZfZmxvYXQgNjAuXG4gICAgICAgIGxldCBob3VyID0gb2ZfZmxvYXQgKDYwLiAqLiA2MC4pXG4gICAgICAgIGxldCBkYXkgPSBvZl9mbG9hdCAoMjQuICouIDYwLiAqLiA2MC4pXG4gICAgICBlbmRcblxuXG4gICAgICBsZXQgdG9fcGFydHMgdCA6IFBhcnRzLnQgPVxuICAgICAgICBsZXQgc2lnbiA9IEZsb2F0LnNpZ25fZXhuIHQgaW5cbiAgICAgICAgbGV0IHQgPSBhYnMgdCBpblxuICAgICAgICBsZXQgaW50ZWdyYWwgPSBGbG9hdC5yb3VuZF9kb3duIHQgaW5cbiAgICAgICAgbGV0IGZyYWN0aW9uYWwgPSB0IC0uIGludGVncmFsIGluXG4gICAgICAgIGxldCBzZWNvbmRzID0gRmxvYXQuaXJvdW5kX2Rvd25fZXhuIGludGVncmFsIGluXG4gICAgICAgIGxldCBuYW5vc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4biAoZnJhY3Rpb25hbCAqLiAxRTkpIGluXG4gICAgICAgIGxldCBzZWNvbmRzLCBuYW5vc2Vjb25kcyA9XG4gICAgICAgICAgaWYgSW50LmVxdWFsIG5hbm9zZWNvbmRzIDFfMDAwXzAwMF8wMDBcbiAgICAgICAgICB0aGVuIEludC5zdWNjIHNlY29uZHMsIDBcbiAgICAgICAgICBlbHNlIHNlY29uZHMsIG5hbm9zZWNvbmRzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzZWMgPSBzZWNvbmRzIG1vZCA2MCBpblxuICAgICAgICBsZXQgbWludXRlcyA9IHNlY29uZHMgLyA2MCBpblxuICAgICAgICBsZXQgbWluID0gbWludXRlcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IGhyID0gbWludXRlcyAvIDYwIGluXG4gICAgICAgIGxldCBucyA9IG5hbm9zZWNvbmRzIG1vZCAxMDAwIGluXG4gICAgICAgIGxldCBtaWNyb3NlY29uZHMgPSBuYW5vc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IHVzID0gbWljcm9zZWNvbmRzIG1vZCAxMDAwIGluXG4gICAgICAgIGxldCBtaWxsaXNlY29uZHMgPSBtaWNyb3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCBtcyA9IG1pbGxpc2Vjb25kcyBpblxuICAgICAgICB7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0ICggLyApIHQgZiA9IFQub2ZfZmxvYXQgKCh0IDogVC50IDo+IGZsb2F0KSAvLiBmKVxuICAgIGxldCAoIC8vICkgKGYgOiBULnQpICh0IDogVC50KSA9IChmIDo+IGZsb2F0KSAvLiAodCA6PiBmbG9hdClcblxuICAgICgqIE11bHRpcGx5aW5nIGJ5IDFFMyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gZGl2aXNpb24gYnkgMUUtMyAqKVxuICAgIGxldCB0b19ucyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX3VzICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX21zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX3NlYyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdClcbiAgICBsZXQgdG9fbWluIHggPSB4IC8vIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IHRvX2hyIHggPSB4IC8vIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCB0b19kYXkgeCA9IHggLy8gVC5Db25zdGFudC5kYXlcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB4ID0gRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG4gKHRvX3NlYyB4KVxuICAgIGxldCAoICoqICkgZiAodCA6IFQudCkgPSBULm9mX2Zsb2F0IChmICouICh0IDo+IGZsb2F0KSlcblxuICAgICgqIERpdmlzaW9uIGJ5IDFFMyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gbXVsdGlwbHlpbmcgYnkgMUUtMyAqKVxuICAgIGxldCBvZl9ucyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX3VzIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX21zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX3NlYyB4ID0gVC5vZl9mbG9hdCB4XG4gICAgbGV0IG9mX2ludF9zZWMgeCA9IG9mX3NlYyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludDMyX3NlY29uZHMgc2VjID0gb2Zfc2VjIChJbnQzMi50b19mbG9hdCBzZWMpXG5cbiAgICAoKiBOb3RlIHRoYXQgW0ludDYzLnRvX2Zsb2F0XSBjYW4gbG9zZSBwcmVjaXNpb24sIGJ1dCBvbmx5IG9uIGlucHV0cyBsYXJnZSBlbm91Z2ggdGhhdFxuICAgICAgIFtvZl9zZWNdIGluIGVpdGhlciB0aGUgVGltZV9ucyBvciBUaW1lX2Zsb2F0IGNhc2Ugd291bGQgbG9zZSBwcmVjaXNpb24gKG9yIGp1c3QgYmVcbiAgICAgICBwbGFpbiBvdXQgb2YgYm91bmRzKSBhbnl3YXkuICopXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgc2VjID0gb2Zfc2VjIChJbnQ2My50b19mbG9hdCBzZWMpXG4gICAgbGV0IG9mX21pbiB4ID0geCAqKiBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCBvZl9ociB4ID0geCAqKiBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgb2ZfZGF5IHggPSB4ICoqIFQuQ29uc3RhbnQuZGF5XG5cbiAgICBsZXQgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSB0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdFxuICAgICAgfCBTZWNvbmQgLT4gdG9fc2VjIHRcbiAgICAgIHwgTWludXRlIC0+IHRvX21pbiB0XG4gICAgICB8IEhvdXIgLT4gdG9faHIgdFxuICAgICAgfCBEYXkgLT4gdG9fZGF5IHRcbiAgICA7O1xuXG4gICAgbGV0IHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gb2ZfbnMgZmxvYXRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gb2ZfdXMgZmxvYXRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gb2ZfbXMgZmxvYXRcbiAgICAgIHwgU2Vjb25kIC0+IG9mX3NlYyBmbG9hdFxuICAgICAgfCBNaW51dGUgLT4gb2ZfbWluIGZsb2F0XG4gICAgICB8IEhvdXIgLT4gb2ZfaHIgZmxvYXRcbiAgICAgIHwgRGF5IC0+IG9mX2RheSBmbG9hdFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhzaWduID0gU2lnbi5Qb3MpXG4gICAgICAgICAgPyhkYXkgPSAwKVxuICAgICAgICAgID8oaHIgPSAwKVxuICAgICAgICAgID8obWluID0gMClcbiAgICAgICAgICA/KHNlYyA9IDApXG4gICAgICAgICAgPyhtcyA9IDApXG4gICAgICAgICAgPyh1cyA9IDApXG4gICAgICAgICAgPyhucyA9IDApXG4gICAgICAgICAgKClcbiAgICAgID1cbiAgICAgIGxldCAoICsgKSA9IFQuKCArICkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgb2ZfZGF5IChGbG9hdC5vZl9pbnQgZGF5KVxuICAgICAgICArIG9mX2hyIChGbG9hdC5vZl9pbnQgaHIpXG4gICAgICAgICsgb2ZfbWluIChGbG9hdC5vZl9pbnQgbWluKVxuICAgICAgICArIG9mX3NlYyAoRmxvYXQub2ZfaW50IHNlYylcbiAgICAgICAgKyBvZl9tcyAoRmxvYXQub2ZfaW50IG1zKVxuICAgICAgICArIG9mX3VzIChGbG9hdC5vZl9pbnQgdXMpXG4gICAgICAgICsgb2ZfbnMgKEZsb2F0Lm9mX2ludCBucylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgTmVnIC0+IFQuKCAtICkgVC56ZXJvIHRcbiAgICAgIHwgUG9zIHwgWmVybyAtPiB0XG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29uc3RhbnRcblxuICAgIGxldCByYW5kb21pemUgdCB+cGVyY2VudCA9IFNwYW5faGVscGVycy5yYW5kb21pemUgdCB+cGVyY2VudCB+c2NhbGVcblxuICAgIGxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gICAgICBsZXQgKHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gOiBQYXJ0cy50KSA9IHRvX3BhcnRzIHQgaW5cbiAgICAgIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgbGV0IG9mX3N0cmluZ192MV92MiAocyA6IHN0cmluZykgfmlzX3YyID1cbiAgICAgIHRyeVxuICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwiZW1wdHkgc3RyaW5nXCJcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGZsb2F0IG4gPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmRyb3Bfc3VmZml4IHMgbiB3aXRoXG4gICAgICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJubyBudW1iZXIgZ2l2ZW5cIlxuICAgICAgICAgICAgfCBzIC0+XG4gICAgICAgICAgICAgIGxldCB2ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICAgICAgVmFsaWRhdGUubWF5YmVfcmFpc2UgKEZsb2F0LnZhbGlkYXRlX29yZGluYXJ5IHYpO1xuICAgICAgICAgICAgICB2XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgKG1hdGNoIHMuW0ludC4oIC0gKSBsZW4gMV0gd2l0aFxuICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgIGlmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICdtJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAndSdcbiAgICAgICAgICAgICB0aGVuIG9mX3VzIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ24nXG4gICAgICAgICAgICAgdGhlbiBvZl9ucyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIFQub2ZfZmxvYXQgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ20nIC0+IG9mX21pbiAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnaCcgLT4gb2ZfaHIgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2QnIC0+IG9mX2RheSAoZmxvYXQgMSlcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgaWYgaXNfdjJcbiAgICAgICAgICAgICB0aGVuIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBucywgdXMsIG1zLCBzLCBtLCBoLCBvciBkLlwiXG4gICAgICAgICAgICAgZWxzZSBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbXMsIHMsIG0sIGgsIG9yIGQuXCIpXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBpbnZhbGlkX2FyZ2YgXCJTcGFuLm9mX3N0cmluZyBjb3VsZCBub3QgcGFyc2UgJyVzJzogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwID0gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHBcblxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHAgb2YgU2V4cC50ICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZ192MV92MiB4IH5pc192MiB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biAoVF9vZl9zZXhwIChzZXhwLCBleG4pKSBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yX2V4biAoVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBzZXhwKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzdHJpbmcgfmlzX3YyIHN1ZmZpeCBmbG9hdCA9XG4gICAgICBpZiBpc192MlxuICAgICAgKCogVGhpcyBpcyB0aGUgc2FtZSBmbG9hdC10by1zdHJpbmcgY29udmVyc2lvbiB1c2VkIGluIFtGbG9hdC5zZXhwX29mX3RdLiAgSXQncyBsaWtlXG4gICAgICAgICBbRmxvYXQudG9fc3RyaW5nXSwgYnV0IG1heSBsZWF2ZSBvZmYgdHJhaWxpbmcgcGVyaW9kLiAqKVxuICAgICAgdGhlbiAhU2V4cGxpYi5Db252LmRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IGZsb2F0IF4gc3VmZml4XG4gICAgICBlbHNlIHNwcmludGYgXCIlZyVzXCIgZmxvYXQgc3VmZml4XG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICAoKiBJJ2QgbGlrZSBpdCB0byBiZSB0aGUgY2FzZSB0aGF0IHlvdSBjb3VsZCBuZXZlciBjb25zdHJ1Y3QgYW4gaW5maW5pdGUgc3BhbiwgYnV0IElcbiAgICAgICBjYW4ndCB0aGluayBvZiBhIGdvb2Qgd2F5IHRvIGVuZm9yY2UgaXQuICBTbyB0aGlzIHRvX3N0cmluZyBmdW5jdGlvbiBjYW4gcHJvZHVjZVxuICAgICAgIHN0cmluZ3MgdGhhdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZXkgYXJlIGZlZCB0byBvZl9zdHJpbmcgKilcbiAgICBsZXQgdG9fc3RyaW5nX3YxX3YyICh0IDogVC50KSB+aXNfdjIgPVxuICAgICAgKCogdGhpcyBpcyBhIHNhZCBicm9rZW4gYWJzdHJhY3Rpb24uLi4gKilcbiAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSAodCA6PiBmbG9hdCkgd2l0aFxuICAgICAgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBcIjBzXCJcbiAgICAgIHwgQy5JbmZpbml0ZSAtPiBpZiBULiggPiApIHQgVC56ZXJvIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gICAgICB8IEMuTmFuIC0+IFwibmFuXCJcbiAgICAgIHwgQy5Ob3JtYWwgLT5cbiAgICAgICAgbGV0ICggPCApID0gVC4oIDwgKSBpblxuICAgICAgICBsZXQgYWJzX3QgPSBULm9mX2Zsb2F0IChGbG9hdC5hYnMgKHQgOj4gZmxvYXQpKSBpblxuICAgICAgICBpZiBpc192MiAmJiBhYnNfdCA8IFQuQ29uc3RhbnQubWljcm9zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibnNcIiAodG9fbnMgdClcbiAgICAgICAgZWxzZSBpZiBpc192MiAmJiBhYnNfdCA8IFQuQ29uc3RhbnQubWlsbGlzZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwidXNcIiAodG9fdXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm1zXCIgKHRvX21zIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbnV0ZVxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJzXCIgKHRvX3NlYyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5ob3VyXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm1cIiAodG9fbWluIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmRheVxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJoXCIgKHRvX2hyIHQpXG4gICAgICAgIGVsc2Ugc3RyaW5nIH5pc192MiBcImRcIiAodG9fZGF5IHQpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjIgPSBTZXhwLkF0b20gKHRvX3N0cmluZ192MV92MiB0IH5pc192MilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6ZmFsc2VcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6ZmFsc2VcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192Mjp0cnVlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOnRydWVcbiAgZW5kXG5cbiAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRvX3VuaXRfb2ZfdGltZSB0IDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgbGV0IG9wZW4gVCBpblxuICAgICAgbGV0IG9wZW4gQ29uc3RhbnQgaW5cbiAgICAgIGxldCBhYnNfdCA9IFQuYWJzIHQgaW5cbiAgICAgIGlmIGFic190ID49IGRheVxuICAgICAgdGhlbiBEYXlcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICAgICAgdGhlbiBIb3VyXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbnV0ZVxuICAgICAgdGhlbiBNaW51dGVcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gICAgICB0aGVuIFNlY29uZFxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaWNyb3NlY29uZFxuICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgZWxzZSBOYW5vc2Vjb25kXG4gICAgOztcblxuICAgIGxldCBvZl91bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCAtPiBULnQgPVxuICAgICAgbGV0IG9wZW4gVC5Db25zdGFudCBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmFub3NlY29uZCAtPiBuYW5vc2Vjb25kXG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gICAgICB8IFNlY29uZCAtPiBzZWNvbmRcbiAgICAgIHwgTWludXRlIC0+IG1pbnV0ZVxuICAgICAgfCBIb3VyIC0+IGhvdXJcbiAgICAgIHwgRGF5IC0+IGRheVxuICAgIDs7XG5cbiAgICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gXCJuc1wiXG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IFwidXNcIlxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBcIm1zXCJcbiAgICAgIHwgU2Vjb25kIC0+IFwic1wiXG4gICAgICB8IE1pbnV0ZSAtPiBcIm1cIlxuICAgICAgfCBIb3VyIC0+IFwiaFwiXG4gICAgICB8IERheSAtPiBcImRcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiVGltZS5TcGFuLm9mX3N0cmluZzogXCIgXiByZWFzb24gaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgbWVzc2FnZSBzdHJpbmddXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHVuaXRfb2ZfdGltZV9saXN0ID1cbiAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lX2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaW52YWxpZCBzcGFuIHBhcnQgc3VmZml4XCJcbiAgICAgICAgfCB1bml0X29mX3RpbWUgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgc3RyaW5nIH5wb3M6aW5kZXggfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICAgICB0aGVuIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGVsc2UgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggcmVzdFxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4ID1cbiAgICAgICAgKCogV2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IFwibXNcIiBjb21lcyBiZWZvcmUgXCJtXCIgaW4gW1VuaXRfb2ZfdGltZS5hbGxdIHRvIGdldCBhXG4gICAgICAgICAgIGNvcnJlY3QgbWF0Y2ggb24gbWlsbGlzZWNvbmQgdGltZXN0YW1wcy4gVGhpcyBhc3N1bXB0aW9uIGlzIGRlbW9uc3RyYXRlZCBpbiB0aGVcbiAgICAgICAgICAgZXhwZWN0IHRlc3QgYmVsb3cuICopXG4gICAgICAgIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IFVuaXRfb2ZfdGltZS5hbGxcbiAgICAgIDs7XG5cbiAgICAgICgqIFdlIHZhbGlkYXRlIG1hZ25pdHVkZSBzdHJpbmdzIHNvIHRoYXQgd2Uga25vdyB3aGVyZSB0aGUgdW5pdC1vZi10aW1lIHN1ZmZpeFxuICAgICAgICAgYmVnaW5zLCBhbmQgc28gdGhhdCBvbmx5IHNlbnNpYmxlIHN0cmluZ3MgYXJlIGFsbG93ZWQuIFdlIGRvIG5vdCB3YW50IHRvIGJlIGFzXG4gICAgICAgICBwZXJtaXNzaXZlIGFzIFtGbG9hdC5vZl9zdHJpbmddOyBmb3IgZXhhbXBsZSwgaGV4YWRlY2ltYWwgc3BhbiBtYWduaXR1ZGVzIGFyZSBub3RcbiAgICAgICAgIGFsbG93ZWQuIEFmdGVyIHZhbGlkYXRpb24sIHdlIHN0aWxsIHVzZSBbRmxvYXQub2Zfc3RyaW5nXSB0byBwcm9kdWNlIHRoZSBhY3R1YWxcbiAgICAgICAgIHZhbHVlLiAqKVxuICAgICAgbW9kdWxlIEZsb2F0X3BhcnNlciA9IHN0cnVjdFxuICAgICAgICAoKiBbSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XSBpbmNsdWRlcyBoYXZpbmcgYSBkaWdpdCBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgIHR5cGUgc3RhdGUgPVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcblxuICAgICAgICB0eXBlIHRva2VuID1cbiAgICAgICAgICB8IERpZ2l0XG4gICAgICAgICAgfCBQb2ludFxuICAgICAgICAgIHwgVW5kZXJcbiAgICAgICAgICB8IFNpZ25cbiAgICAgICAgICB8IEV4cHRcblxuICAgICAgICBsZXQgc3RhdGVfaXNfZmluYWwgPSBmdW5jdGlvblxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCAtPiB0cnVlXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0IC0+IGZhbHNlXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRva2VuX29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBTb21lIERpZ2l0XG4gICAgICAgICAgfCAnLicgLT4gU29tZSBQb2ludFxuICAgICAgICAgIHwgJ18nIC0+IFNvbWUgVW5kZXJcbiAgICAgICAgICB8ICctJyB8ICcrJyAtPiBTb21lIFNpZ25cbiAgICAgICAgICB8ICdFJyB8ICdlJyAtPiBTb21lIEV4cHRcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaW52YWxpZCBzcGFuIHBhcnQgbWFnbml0dWRlXCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICBpZiBpbmRleCA9IGxlblxuICAgICAgICAgIHRoZW4gaWYgc3RhdGVfaXNfZmluYWwgc3RhdGUgdGhlbiBpbmRleCBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggdG9rZW5fb2ZfY2hhciBzdHJpbmcuW2luZGV4XSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaWYgc3RhdGVfaXNfZmluYWwgc3RhdGUgdGhlbiBpbmRleCBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgfCBTb21lIHRva2VuIC0+XG4gICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggc3RhdGUsIHRva2VuIHdpdGhcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFBvaW50IC0+IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBTaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIEV4cHQgLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFBvaW50IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBFeHB0IC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBFeHB0IC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBQb2ludCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgU2lnbiAtPlxuICAgICAgICAgICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgU2lnbiAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIEV4cHQgLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4OihpbmRleCArIDEpIH5sZW4gfnN0YXRlKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiA9XG4gICAgICAgICAgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlOkluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCByZWMgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGUgfmluZGV4IH5sZW4gPVxuICAgICAgICBpZiBJbnQuZXF1YWwgaW5kZXggbGVuXG4gICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzdWZmaXhfaW5kZXggPSBGbG9hdF9wYXJzZXIuZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXg6c3VmZml4X2luZGV4IGluXG4gICAgICAgICAgbGV0IHVudGlsX2luZGV4ID1cbiAgICAgICAgICAgIEludC4oICsgKSBzdWZmaXhfaW5kZXggKFN0cmluZy5sZW5ndGggKHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzdHJpbmcgfnBvczppbmRleCB+bGVuOihJbnQuKCAtICkgc3VmZml4X2luZGV4IGluZGV4KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQub2Zfc3RyaW5nIGZsb2F0X3N0cmluZyBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBtYWduaXR1ZGUgKyBzY2FsZV9ieV91bml0X29mX3RpbWUgZmxvYXQgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGUgfmluZGV4OnVudGlsX2luZGV4IH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiA9XG4gICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlOlQuemVybyB+aW5kZXggfmxlblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBtYXRjaCBzdHJpbmcgd2l0aFxuICAgICAgICB8IFwiTkFOc1wiIC0+IG9mX3NlYyBGbG9hdC5uYW5cbiAgICAgICAgfCBcIi1JTkZzXCIgLT4gb2Zfc2VjIEZsb2F0Lm5lZ19pbmZpbml0eVxuICAgICAgICB8IFwiSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5pbmZpbml0eVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBuZWdhdGl2ZSwgaW5kZXggPVxuICAgICAgICAgICAgbWF0Y2ggc3RyaW5nLlswXSB3aXRoXG4gICAgICAgICAgICB8ICctJyAtPiB0cnVlLCAxXG4gICAgICAgICAgICB8ICcrJyAtPiBmYWxzZSwgMVxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlLCAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBpbmRleCA+PSBsZW4gdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gaW5cbiAgICAgICAgICBpZiBuZWdhdGl2ZSB0aGVuIFQubmVnIG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG5cbiAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICBsZXQgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBmbG9hdCA9XG4gICAgICAgIGxldCBzdHJpbmcgPSBGbG9hdC50b19zdHJpbmcgZmxvYXQgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFwiLlwiIGluXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgdGhlbiBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIHN0cmluZyB+c3VmZml4XG4gICAgICAgIGVsc2Ugc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICAoKiBBcyB3ZSBidWlsZCB1cCBhIHN0cmluZywgd2Uga2VlcCBhIHJ1bm5pbmcgc3VtIG9mIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgcmVhZFxuICAgICAgICAgYmFjayBpbiwgc28gdGhhdCB3ZSBjYW4gY29tcHV0ZSB0aGUgcmVtYWluZGVyIHRoYXQgbmVlZHMgdG8gYmUgZ2VuZXJhdGVkLiAqKVxuICAgICAgbGV0IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlID1cbiAgICAgICAgc3VtX3QgKyBzY2FsZV9ieV91bml0X29mX3RpbWUgbWFnbml0dWRlIHVuaXRfb2ZfdGltZVxuICAgICAgOztcblxuICAgICAgKCogRm9yIHNvbWUgdW5pdHMgKHZlcnkgbGFyZ2UgbnVtYmVycyBvZiBkYXlzLCBvciBzZWNvbmRzIGFuZCBzbWFsbGVyKSB3ZSBqdXN0XG4gICAgICAgICByZW5kZXIgYSBmbG9hdCBkaXJlY3RseSwgd2l0aCBhIGZpeCBmb3Igcm91bmRvZmYgZXJyb3IuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWUgPVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSBhYnNfdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBpZiBzdW1fdCA9IGFic190XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgICBpZiBzdW1fdCA8IGFic190XG4gICAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgICAgZWxzZSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIChwcmV2IGFic190KSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICAgbGV0IGZpeHVwX21hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgcmVtX3QgZml4dXBfdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgKCogW3JlbV90XSBpcyBhdCBVTFAgc2l6ZSBvZiBbYWJzX3RdLCBpdCBuZWVkcyBqdXN0IG9uZSBiaXQgb2YgcHJlY2lzaW9uICopXG4gICAgICAgICAgXiBzcHJpbnRmIFwiJS4xZ1wiIGZpeHVwX21hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSBmaXh1cF91bml0X29mX3RpbWUpXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igbm9uLWRlY2ltYWwgdW5pdHMgKG1pbnV0ZXMgYW5kIGdyZWF0ZXIpLCB3ZSByZW5kZXIgYW4gaW50ZWdlciBtYWduaXR1ZGUsIGFuZFxuICAgICAgICAgcmV0dXJuIHRoYXQgd2l0aCB0aGUgcnVubmluZyBzdW0gc28gdGhlIHJlbWFpbmRlciBjYW4gYmUgcmVuZGVyZWQgYXQgYSBzbWFsbGVyXG4gICAgICAgICB1bml0LiAqKVxuICAgICAgbGV0IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB1bml0X29mX3RpbWUgfmFic190IH5zdW1fdCA9XG4gICAgICAgIGxldCB1bml0X3NwYW4gPSBvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgKCogV2UgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBtdWx0aXBsZSBvZiBbdW5pdF9vZl90aW1lXSB0aGF0IG5lZWRzIHRvIGJlXG4gICAgICAgICAgIGFkZGVkIHRvIFtzdW1fdF0uIER1ZSB0byByb3VuZGluZywgdGhpcyBjYW4gYmUgb2ZmIGJ5IG9uZSAod2UndmUgbmV2ZXIgc2VlbiBhXG4gICAgICAgICAgIGNhc2Ugb2ZmIGJ5IHR3byBvciBtb3JlKSwgc28gd2UgcmUtY29tcHV0ZSB0aGUgcmVtYWluZGVyIGFuZCBjb3JyZWN0IGlmXG4gICAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IEZsb2F0LnJvdW5kX2Rvd24gKHJlbV90IC8vIHVuaXRfc3BhbikgaW5cbiAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGxldCBuZXdfcmVtX3QgPSBhYnNfdCAtIG5ld19zdW1fdCBpblxuICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICBpZiBuZXdfcmVtX3QgPSB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICBlbHNlIGlmIG5ld19yZW1fdCA8IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZSAtLiAxLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHRfbWFnbml0dWRlID0gbWFnbml0dWRlICsuIDEuIGluXG4gICAgICAgICAgICBsZXQgbmV4dF9zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlOm5leHRfbWFnbml0dWRlIGluXG4gICAgICAgICAgICBsZXQgbmV4dF9yZW1fdCA9IGFic190IC0gbmV4dF9zdW1fdCBpblxuICAgICAgICAgICAgaWYgbmV4dF9yZW1fdCA8IHplcm8gdGhlbiBtYWduaXR1ZGUgZWxzZSBuZXh0X21hZ25pdHVkZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA8PSApIG1hZ25pdHVkZSAwLlxuICAgICAgICB0aGVuIFwiXCIsIHN1bV90XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCBzdHJpbmcgPVxuICAgICAgICAgICAgSW50NjMudG9fc3RyaW5nIChJbnQ2My5vZl9mbG9hdCBtYWduaXR1ZGUpXG4gICAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzdHJpbmcsIG5ld19zdW1fdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSB0ID0gRmxvYXQubG9nMTAgKHRvX3NlYyB0KVxuXG4gICAgICAoKiBUaGUgZmluYWwgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgbmVlZHMgdG8gYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBkaWdpdHMgdG9cbiAgICAgICAgIHJvdW5kLXRyaXAgdGhlIHdob2xlIHNwYW4gKHdoaWNoIGlzIG1pbnV0ZXMgb3IgZ3JlYXRlcik7IHRoaXMgY2FuIGJlXG4gICAgICAgICBzaWduaWZpY2FudGx5IGZld2VyIGRpZ2l0cyB0aGFuIHdvdWxkIGJlIG5lZWRlZCBmb3IgdGhlIHNlY29uZHMtb3Itc21hbGxlclxuICAgICAgICAgcmVtYWluZGVyIGl0c2VsZi4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfnN1bV90IH5hYnNfdCA9XG4gICAgICAgIGlmIHN1bV90ID49IGFic190XG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSByZW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X3NwYW4gPSBvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IHJlbV90IC8vIHVuaXRfc3BhbiBpblxuICAgICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCBuZXdfcmVtX3QgPSBhYnNfdCAtIG5ld19zdW1fdCBpblxuICAgICAgICAgIGlmIGFicyByZW1fdCA8PSBhYnMgbmV3X3JlbV90XG4gICAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpcnN0X2RpZ2l0ID1cbiAgICAgICAgICAgICAgRmxvYXQuaXJvdW5kX2Rvd25fZXhuIChkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSByZW1fdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaGFsZl91bHAgPSAoYWJzX3QgLSBwcmV2IGFic190KSAvIDIuIGluXG4gICAgICAgICAgICBsZXQgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpZ2l0ID1cbiAgICAgICAgICAgICAgKCogVGhpcyB3b3JrcyBvdXQgdG8gcm91bmRpbmcgZG93biwgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGV4YWN0IGludGVnZXJzLFxuICAgICAgICAgICAgICAgICB3aGljaCBhcmUgZGVjcmVtZW50ZWQuIFRoaXMgbWFrZXMgc3VyZSB3ZSBhbHdheXMgc3RvcCBhdCBhIGRpZ2l0IHdpdGhcbiAgICAgICAgICAgICAgICAgc3RyaWN0bHkgbW9yZSBwcmVjaXNpb24gdGhhbiBoYWxmIHRoZSBVTFAuICopXG4gICAgICAgICAgICAgIEludC5wcmVkIChGbG9hdC5pcm91bmRfdXBfZXhuIChkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSBoYWxmX3VscCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICAxICsgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpcnN0X2RpZ2l0IC0gb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpZ2l0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgICBzcHJpbnRmIFwiJS4qZ1wiIG51bWJlcl9vZl9kaWdpdHMgbWFnbml0dWRlIF4gc3VmZml4KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFRoaXMgaGVscGVyIGF2b2lkcyB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9uLCBiZWNhdXNlIGZvciBvdXIgdXNlIGJlbG93LCBpdCBpc1xuICAgICAgICAgY29tbW9uIHRvIGhhdmUgZWl0aGVyIG9yIGJvdGggYXJndW1lbnRzIGJlIGVtcHR5LiBDdXJyZW50bHkgKDIwMTgtMDIpLCB0aGVcbiAgICAgICAgIGJ1aWx0LWluIFteXSBhbGxvY2F0ZXMgZXZlbiB3aGVuIGFwcGVuZGluZyB0byBhbiBlbXB0eSBzdHJpbmcuICopXG4gICAgICBsZXQgKCBePyApIHggeSA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSB4IHRoZW4geSBlbHNlIGlmIFN0cmluZy5pc19lbXB0eSB5IHRoZW4geCBlbHNlIHggXiB5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgZmxvYXQgPSB0b19mbG9hdCB0IGluXG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGZsb2F0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgKCogV2UgcHJpbnQgc3BlY2lmaWMgc3BlY2lhbCBzdHJpbmdzIGZvciBub24tZmluaXRlIGZsb2F0cyAqKVxuICAgICAgICAgICAgRmxvYXQuaXNfbmFuIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIk5BTnNcIlxuICAgICAgICAgIGVsc2UgaWYgRmxvYXQuaXNfbmVnYXRpdmUgZmxvYXRcbiAgICAgICAgICB0aGVuIFwiLUlORnNcIlxuICAgICAgICAgIGVsc2UgXCJJTkZzXCJcbiAgICAgICAgZWxzZSBpZiB0ID0gemVyb1xuICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHQgaW5cbiAgICAgICAgICBsZXQgYWJzX3QgPSBhYnMgdCBpblxuICAgICAgICAgIGxldCBzaWduID0gaWYgdCA8IHplcm8gdGhlbiBcIi1cIiBlbHNlIFwiXCIgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlX3N0cmluZyA9XG4gICAgICAgICAgICBtYXRjaCB1bml0X29mX3RpbWUgd2l0aFxuICAgICAgICAgICAgKCogV2UgY2FuIHVzZSBub3JtYWwgZmxvYXQgbm90YXRpb24gZm9yIHNlY29uZHMgYW5kIHN1Yi1zZWNvbmQgdW5pdHMsIHRoZXkgYXJlXG4gICAgICAgICAgICAgICByZWFkYWJsZSB3aXRoIGEgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTWlsbGlzZWNvbmQgfCBTZWNvbmQgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6TmFub3NlY29uZFxuICAgICAgICAgICAgKCogRm9yIGxhcmdlIGVub3VnaCB2YWx1ZXMgdGhhdCB0aGUgVUxQIGlzIGEgZGF5IG9yIG1vcmUsIHdlIGNhbiB1c2UgZmxvYXRcbiAgICAgICAgICAgICAgIG5vdGF0aW9uIGJlY2F1c2Ugd2UgYXJlIGV4cHJlc3NpbmcgYSBzaW5nbGUsIHZlcnkgbGFyZ2UgaW50ZWdlci4gKilcbiAgICAgICAgICAgIHwgRGF5IHdoZW4gbmV4dCBhYnNfdCAtIGFic190ID49IGRheSAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpEYXlcbiAgICAgICAgICAgICgqIEZvciBldmVyeXRoaW5nIGluIGJldHdlZW4sIHdlIG5lZWQgdG8gdXNlIGludGVnZXIgdW5pdHMgb2YgZGF5cywgaG91cnMsXG4gICAgICAgICAgICAgICBhbmQvb3IgbWludXRlcywgYmVjYXVzZSB0aG9zZSB1bml0cyBhcmUgbm90IHJlYWRhYmxlIGFzIGRlY2ltYWxzLCBhbmQgd2VcbiAgICAgICAgICAgICAgIHRhY2sgb24gYSBkZWNpbWFsIHJlbWFpbmRlciBvZiBhIHNlY29uZHMtb3Itc21hbGxlciB1bml0IGlmIG5lY2Vzc2FyeS4gKilcbiAgICAgICAgICAgIHwgTWludXRlIHwgSG91ciB8IERheSAtPlxuICAgICAgICAgICAgICBsZXQgc3VtX3QgPSB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBkYXlfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IERheSBpblxuICAgICAgICAgICAgICBsZXQgaG91cl9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgSG91ciBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBNaW51dGUgaW5cbiAgICAgICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+YWJzX3QgfnN1bV90IGluXG4gICAgICAgICAgICAgIGRheV9zdHJpbmcgXj8gaG91cl9zdHJpbmcgXj8gbWludXRlX3N0cmluZyBePyBmbG9hdF9zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIHNpZ24gXj8gbWFnbml0dWRlX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHMpXG4gICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lLlNwYW4uU3RhYmxlLlYzLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjNcblxubGV0IHRvX3Byb3BvcnRpb25hbF9mbG9hdCA9IHRvX2Zsb2F0XG5cbmxldCB0b19zdHJpbmdfaHVtXG4gICAgICA/KGRlbGltaXRlciA9ICdfJylcbiAgICAgID8oZGVjaW1hbHMgPSAzKVxuICAgICAgPyhhbGlnbl9kZWNpbWFsID0gZmFsc2UpXG4gICAgICA/dW5pdF9vZl90aW1lXG4gICAgICB0XG4gID1cbiAgbGV0IGZsb2F0LCBzdWZmaXggPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZSB1bml0X29mX3RpbWUgfmRlZmF1bHQ6KHRvX3VuaXRfb2ZfdGltZSB0KSB3aXRoXG4gICAgfCBEYXkgLT4gdG9fZGF5IHQsIFwiZFwiXG4gICAgfCBIb3VyIC0+IHRvX2hyIHQsIFwiaFwiXG4gICAgfCBNaW51dGUgLT4gdG9fbWluIHQsIFwibVwiXG4gICAgfCBTZWNvbmQgLT4gdG9fc2VjIHQsIFwic1wiXG4gICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0LCBcIm1zXCJcbiAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHQsIFwidXNcIlxuICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0LCBcIm5zXCJcbiAgaW5cbiAgbGV0IHByZWZpeCA9XG4gICAgRmxvYXQudG9fc3RyaW5nX2h1bSBmbG9hdCB+ZGVsaW1pdGVyIH5kZWNpbWFscyB+c3RyaXBfemVybzoobm90IGFsaWduX2RlY2ltYWwpXG4gIGluXG4gIGxldCBzdWZmaXggPVxuICAgIGlmIGFsaWduX2RlY2ltYWwgJiYgSW50LiggPSApIChTdHJpbmcubGVuZ3RoIHN1ZmZpeCkgMSB0aGVuIHN1ZmZpeCBeIFwiIFwiIGVsc2Ugc3VmZml4XG4gIGluXG4gIHByZWZpeCBeIHN1ZmZpeFxuOztcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgRmxvYXQuZ2VuX2luY2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAoKiBUZWNobmljYWxseSBleGNsdXNpdmUgcmF0aGVyIHRoYW4gaW5jbHVzaXZlLCBidXQgb3RoZXJ3aXNlIHNhdGlzZmllcyB0aGUgY29udHJhY3QgdG9cbiAgICAgd2l0aGluIDF1bHAgb2YgdGhlIGdpdmVuIGJvdW5kcy4gKilcbiAgRmxvYXQuZ2VuX3VuaWZvcm1fZXhjbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAoKiBXZSBnZW5lcmF0ZSBzcGFucyB1cCB0byAoc2xpZ2h0bHkgbW9yZSB0aGFuKSBhIG1pbGxlbml1bSwgcG9zaXRpdmUgb3IgbmVnYXRpdmUuIFRoaXNcbiAgICAgaXMgYmFzZWQgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgaW4gd2hpY2ggeWVhcnMgYXZlcmFnZSAzNjUuMjQyNSBkYXlzIHdoZW5cbiAgICAgYWNjb3VudGluZyBmb3IgbGVhcCBkYXlzLiBDb3ZlcmluZyBhIHR3by1taWxsZW5pdW0gc3BhbiBpcyBtb3JlIHRoYW4gZW5vdWdoIGZvciBtb3N0XG4gICAgIHByYWN0aWNhbCBwdXJwb3NlcywgY2VydGFpbmx5IG1vcmUgdGhhbiBlbm91Z2ggdG8gY292ZXIgdGhlIHJlcHJlc2VudGFibGUgcmFuZ2Ugb2ZcbiAgICAgW1NwYW5fbnNdLCBhbmQgcmVzdWx0cyBpbiBmaW5pdGUgc3BhbnMgYW5kIHRpbWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQuXG5cbiAgICAgV2UgZ2VuZXJhdGUgYnkgZmlsdGVyaW5nIHRoZSBkZWZhdWx0IGdlbmVyYXRvciBzbyB0aGF0IHNwYW5zIGFyZSBzdGlsbCBza2V3ZWQgdG93YXJkXG4gICAgIHNtYWxsIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhlIGJvdW5kcyBhcmUgbGFyZ2UuICopXG4gIGxldCBtaWxsZW5pdW0gPSBvZl9kYXkgKEZsb2F0LnJvdW5kX3VwICgzNjUuMjQyNSAqLiAxMDAwLikpIGluXG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciBxdWlja2NoZWNrX2dlbmVyYXRvciB+ZjooZnVuIHQgLT5cbiAgICBuZWcgbWlsbGVuaXVtIDw9IHQgJiYgdCA8PSBtaWxsZW5pdW0pXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLlNwYW5cIlxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXQgc2VyaWFsaXphdGlvbiByYXRoZXJcbiAgICAgICB0aGFuIHRpbWUgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nIGhhc2gtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyXG4gICAgICAgc2VyaWFsaXphdGlvbi4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBmbG9hdCAtPiBvZl9mbG9hdCBmbG9hdFxuICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVC5jb21wYXJhdG9yXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgc3BhbnMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBmbG9hdHMuICBGcm9tIDEwOC4wN1xuICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmQgcHJldHR5XG4gICAgIGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhcyBjaGFuZ2VkIGZyb21cbiAgICAgcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlIG1vc3RcbiAgICAgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICByYXcuICopXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IFQub2ZfZmxvYXQgKEZsb2F0LnRfb2Zfc2V4cCBzZXhwKSkgd2l0aFxuICAgIHwgU29tZSB0IC0+IHRcbiAgICB8IE5vbmUgLT4gdF9vZl9zZXhwIHNleHBcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxubW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZVxuICBsZXQgcGFyc2Vfc3VmZml4ID0gU3RhYmxlLlYzLk9mX3N0cmluZy5wYXJzZV9zdWZmaXhcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5cbigqIENyZWF0ZSBhbiBhYnN0cmFjdCB0eXBlIGZvciBPZmRheSB0byBwcmV2ZW50IHVzIGZyb20gY29uZnVzaW5nIGl0IHdpdGhcbiAgIG90aGVyIGZsb2F0cy5cbiopXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdFxuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBhZGQgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHN1YiA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIDogU3Bhbi50IC0+IGJvb2xcbiAgICAgIHZhbCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgc3RhcnRfb2ZfZGF5IDogdFxuICAgICAgdmFsIHN0YXJ0X29mX25leHRfZGF5IDogdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgKCogTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQuICopXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBlbmQpXG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLk9mZGF5IHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IFNwYW4ub2Zfc2VjIHRcblxuICAgICAgKCogQW5vdGhlciByZWFzb25hYmxlIGNob2ljZSB3b3VsZCBiZSBvbmx5IGFsbG93aW5nIE9mZGF5LnQgdG8gYmUgPCAyNGhyLCBidXQgdGhpc1xuICAgICAgICAgY2hvaWNlIHdhcyBtYWRlIGVhcmx5IG9uIGFuZCBwZW9wbGUgYmVjYW1lIHVzZWQgdG8gYmVpbmcgYWJsZSB0byBlYXNpbHkgY2FsbCAyNGhyXG4gICAgICAgICB0aGUgZW5kIG9mIHRoZSBkYXkuICBJdCdzIGEgYml0IHNhZCBiZWNhdXNlIGl0IHNoYXJlcyB0aGF0IG1vbWVudCB3aXRoIHRoZVxuICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGRheSwgYW5kIHJvdW5kIHRyaXBzIG9kZGx5IGlmIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICBUaW1lLnRvX2RhdGVfb2ZkYXkvVGltZS5vZl9kYXRlX29mZGF5LlxuXG4gICAgICAgICBOb3RlOiBbU2NoZWR1bGUudF0gcmVxdWlyZXMgdGhhdCB0aGUgZW5kIG9mIGRheSBiZSByZXByZXNlbnRhYmxlLCBhcyBpdCdzIHRoZVxuICAgICAgICAgb25seSB3YXkgdG8gd3JpdGUgYSBzY2hlZHVsZSBpbiB0ZXJtcyBvZiBbT2ZkYXkudF1zIHRoYXQgc3BhbnMgdHdvIHdlZWtkYXlzLiAqKVxuICAgICAgKCogb2ZkYXkgbXVzdCBiZSA+PSAwIGFuZCA8PSAyNGggKilcbiAgICAgIGxldCBpc192YWxpZCAodCA6IHQpID1cbiAgICAgICAgbGV0IHQgPSB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICAgIFNwYW4uKCA8PSApIFNwYW4uemVybyB0ICYmIFNwYW4uKCA8PSApIHQgU3Bhbi5kYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cblxuICAgICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPVxuICAgICAgICBpc192YWxpZCAob2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICAgICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgICBsZXQgcyA9IFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgcyB3aXRoXG4gICAgICAgIHwgQy5JbmZpbml0ZSAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5maW5pdGUgdmFsdWVcIlxuICAgICAgICB8IEMuTmFuIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBOYU4gdmFsdWVcIlxuICAgICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT5cbiAgICAgICAgICBpZiBub3QgKGlzX3ZhbGlkIHMpXG4gICAgICAgICAgdGhlbiBpbnZhbGlkX2FyZ2YgIVwiT2ZkYXkgb3V0IG9mIHJhbmdlOiAle1NwYW59XCIgc3BhbiAoKVxuICAgICAgICAgIGVsc2Ugc1xuICAgICAgOztcblxuICAgICAgbGV0IHN0YXJ0X29mX2RheSA9IDAuXG4gICAgICBsZXQgc3RhcnRfb2ZfbmV4dF9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gU3Bhbi5kYXlcblxuICAgICAgbGV0IGFkZCAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0IC0uIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgVXAgdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwcmV2IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgRG93biB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGRpZmYgdDEgdDIgPVxuICAgICAgICBTcGFuLiggLSApICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MSkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID1cbiAgICAgIE9wdGlvbi52YWx1ZV9leG4gKFQuc3ViIFQuc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5taWNyb3NlY29uZClcbiAgICA7O1xuXG4gICAgKCogW2NyZWF0ZV0gY2hvcHMgb2ZmIGFueSBzdWJzZWNvbmQgcGFydCB3aGVuIFtzZWMgPSA2MF0gdG8gaGFuZGxlIGxlYXAgc2Vjb25kcy4gSW5cbiAgICAgICBwYXJ0aWN1bGFyIGl0J3MgdHJ5aW5nIHRvIGJlIGdlbmVyb3VzIGFib3V0IHJlYWRpbmcgaW4gdGltZXMgb24gdGhpbmdzIGxpa2UgZml4XG4gICAgICAgbWVzc2FnZXMgdGhhdCBtaWdodCBpbmNsdWRlIGFuIGV4dHJhIHVubGlrZWx5IHNlY29uZC5cblxuICAgICAgIE90aGVyIHdheXMgb2Ygd3JpdGluZyBhIHRpbWUsIGxpa2UgMTAwMG1zLCB3aGlsZSBtYXRoZW1hdGljYWxseSB2YWxpZCwgZG9uJ3QgbWF0Y2hcbiAgICAgICB3YXlzIHRoYXQgcGVvcGxlIGFjdHVhbGx5IHdyaXRlIHRpbWVzIGRvd24sIHNvIHdlIGRpZG4ndCBzZWUgdGhlIG5lZWQgdG8gc3VwcG9ydFxuICAgICAgIHRoZW0uIFRoYXQgaXMsIGEgY2xvY2sgbWlnaHQgbGVnaXRpbWF0ZWx5IHJlYWQgMjM6NTk6NjAgKG9yLCB3aXRoIDYwIHNlY29uZHMgYXRcbiAgICAgICB0aW1lcyBvZiBkYXkgb3RoZXIgdGhhbiAyMzo1OSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1lIHpvbmUpLCBidXQgaXQgZG9lc24ndCBzZWVtXG4gICAgICAgcmVhc29uYWJsZSBmb3IgYSBjbG9jayB0byByZWFkIFwiMjM6NTk6NTkgYW5kIDEwMDBtc1wiLiAqKVxuICAgIGxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICAgICBsZXQgbXMsIHVzLCBucyA9XG4gICAgICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gICAgICBpblxuICAgICAgVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG4gICAgOztcblxuICAgIGxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KVxuXG4gICAgbGV0IHRvX3N0cmluZ19nZW4gfmRyb3BfbXMgfmRyb3BfdXMgfnRyaW0gdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBhc3NlcnQgKGlmIGRyb3BfbXMgdGhlbiBkcm9wX3VzIGVsc2UgdHJ1ZSk7XG4gICAgICBsZXQgZmxvYXRfc2VjID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCkgaW5cbiAgICAgIGxldCB1cyA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuIChmbG9hdF9zZWMgKi4gMWU2KSBpblxuICAgICAgbGV0IG1zLCB1cyA9IHVzIC8gITEwMDAsIHVzIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgc2VjLCBtcyA9IG1zIC8gITEwMDAsIG1zIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgbWluLCBzZWMgPSBzZWMgLyAhNjAsIHNlYyBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociwgbWluID0gbWluIC8gITYwLCBtaW4gbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIgPSBpIGhyIGluXG4gICAgICBsZXQgZG9udF9wcmludF91cyA9IGRyb3BfdXMgfHwgKHRyaW0gJiYgdXMgPSAwKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfbXMgPSBkcm9wX21zIHx8ICh0cmltICYmIG1zID0gMCAmJiBkb250X3ByaW50X3VzKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfcyA9IHRyaW0gJiYgc2VjID0gMCAmJiBkb250X3ByaW50X21zIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICAgIHRoZW4gNVxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiA4XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF91c1xuICAgICAgICB0aGVuIDEyXG4gICAgICAgIGVsc2UgMTVcbiAgICAgIGluXG4gICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCBocjtcbiAgICAgIEJ5dGVzLnNldCBidWYgMiAnOic7XG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIG1pbjtcbiAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnOic7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgc2VjO1xuICAgICAgICBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA4ICcuJztcbiAgICAgICAgICB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczo5IG1zO1xuICAgICAgICAgIGlmIGRvbnRfcHJpbnRfdXMgdGhlbiAoKSBlbHNlIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjEyIHVzKSk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06dHJ1ZSB0XG4gICAgbGV0IHRvX3NlY19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6dHJ1ZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcbiAgICBsZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuXG4gICAgbGV0IHNtYWxsX2RpZmYgPVxuICAgICAgbGV0IGhvdXIgPSAzNjAwLiBpblxuICAgICAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICAgICAgbGV0IG9mZGF5MSA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICAgICAgbGV0IG9mZGF5MiA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICAgICAgbGV0IGRpZmYgPSBvZmRheTEgLS4gb2ZkYXkyIGluXG4gICAgICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgICAgIGxldCBkMSA9IEZsb2F0Lm1vZF9mbG9hdCBkaWZmIGhvdXIgaW5cbiAgICAgICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgICAgIGxldCBkMiA9IEZsb2F0Lm1vZF9mbG9hdCAoZDEgKy4gaG91cikgaG91ciBpblxuICAgICAgICBsZXQgZCA9IGlmIEZsb2F0LiggPiApIGQyIChob3VyIC8uIDIuKSB0aGVuIGQyIC0uIGhvdXIgZWxzZSBkMiBpblxuICAgICAgICBTcGFuLm9mX3NlYyBkXG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLk9mZGF5XCJcbiAgICAgIGVuZClcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IHN1YnNlYyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwLlxuICAgICAgICBlbHNlIEZsb2F0Lm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpzdWJzZWNfcG9zIH5sZW46c3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBGbG9hdC5vZl9pbnQgKChociAqIDM2MDApICsgKG1pbiAqIDYwKSArIHNlYykgKy4gc3Vic2VjXG4gICAgICB8PiBTcGFuLm9mX3NlY1xuICAgICAgfD4gVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IG9mX3NleHBfZXJyb3IgKFwiT2ZkYXkudF9vZl9zZXhwOiBcIiBeIHMpIHNleHApXG4gICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIk9mZGF5LnRfb2Zfc2V4cFwiIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIGxldCBzZXhwX29mX3Qgc3BhbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHNwYW4pXG5cbiAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gICAgICB0cnkgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQoJXMpOiAlc1wiXG4gICAgICAgICAgKFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4pXG4gICAgICAgICAgKEV4bi50b19zdHJpbmcgZXhuKVxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG9mZGF5cyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb21cbiAgICAgMTA4LjA3IHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWRcbiAgICAgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChDKVxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbiIsIigqIFNlZSB0aW1lX2Zsb2F0Lm1sIGZvciB0aGUgcHJpbWFyeSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgZnVuY3RvciB0aGF0IGlzIHZpc2libGUgb3V0c2lkZVxuICAgb2YgQ29yZSBhcyBUaW1lIChzZWUgY29yZS5tbCkuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFRpbWVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVGltZTAgOiBUaW1lMF9pbnRmLlMpID0gc3RydWN0XG4gIG1vZHVsZSBUaW1lMCA9IFRpbWUwXG4gIGluY2x1ZGUgVGltZTBcblxuICBsZXQgZXBvY2ggPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4uemVyb1xuICBsZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwuIHQyXG4gIGxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4uIHQyXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICBpbmNsdWRlIFRpbWVfaW50Zi5ab25lIHdpdGggbW9kdWxlIFRpbWUgOj0gVGltZTBcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZTAub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgVGltZTAudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBhYmJyZXZpYXRpb24gdCB0aW1lID1cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IChpbmRleCB0IHRpbWUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFic19kaWZmIHQxIHQyID0gU3Bhbi5hYnMgKGRpZmYgdDEgdDIpXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIFRpbWUwLiggPj0gKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIFRpbWUwLiggPCApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBUaW1lMC5zdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBUaW1lMC5hZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICAgIHw+IFRpbWUwLm1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICAgIHw+IFRpbWUwLm1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IGVuZF9vZl9kYXkgPSBPZmRheS5wcmV2IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHw+IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXVxuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGxldCBvZl9kYXkgPVxuICAgICAgVGltZTAuZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgaW5cbiAgICBpZiBPZmRheS5lcXVhbCBvZl9kYXkgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgdGhlbiBlbmRfb2ZfZGF5IGVsc2Ugb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHIgfnRhcmdldDonOicgfnJlcGxhY2VtZW50OictJyAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBTcGFuLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgIH5mX2ludmVyc2U6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgU3Bhbi5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxubW9kdWxlIE9mZGF5ID0gT2ZkYXlfZmxvYXRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICBpbmNsdWRlIChcbiAgICBGbG9hdCA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXQuT1xuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgIHByZWNpc2lvbiAqKVxuICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICBlbmQpXG5cbiAgbGV0IGRpZmYgdDEgdDIgPSBTcGFuLm9mX3NlYyAodDEgLSB0MilcbiAgbGV0IGFkZCB0IHNwYW4gPSB0ICsuIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHN1YiB0IHNwYW4gPSB0IC0uIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4ub2Zfc2VjXG4gIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi50b19zZWNcbmVuZFxuXG5pbmNsdWRlIEFic29sdXRlXG5cbm1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2Zfc2VjIHRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgZGF5cyA9XG4gICAgICBGbG9hdC5vZl9pbnQgKERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaClcbiAgICBpblxuICAgIChkYXlzICouIDg2NDAwLikgKy4gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICA7O1xuXG4gIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID0gc3ViIHJlbGF0aXZlIG9mZnNldF9mcm9tX3V0Y1xuICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9IGFkZCBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGNcblxuICAoKiBZZWFycyBvdXQgb2YgcmFuZ2UgZm9yIFtEYXRlLmNyZWF0ZV9leG5dLiAqKVxuICBsZXRbQGNvbGRdIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaCA9XG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QC02MjE2NzIxOTIwMFxuICAgICAgIFNhdCBKYW4gIDEgMDA6MDA6MDAgVVRDIDAwMDAgKilcbiAgICBsZXQgZ210aW1lX2xvd2VyX2JvdW5kID0gLTYyXzE2N18yMTlfMjAwLiBpblxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAyNTM0MDIzMDA3OTlcbiAgICAgICBGcmkgRGVjIDMxIDIzOjU5OjU5IFVUQyA5OTk5ICopXG4gICAgbGV0IGdtdGltZV91cHBlcl9ib3VuZCA9IDI1M180MDJfMzAwXzc5OS4gaW5cbiAgICBpZiBGbG9hdC4oID49ICkgc2VjX3NpbmNlX2Vwb2NoIChnbXRpbWVfdXBwZXJfYm91bmQgKy4gMS4pXG4gICAgfHwgRmxvYXQuKCA8ICkgc2VjX3NpbmNlX2Vwb2NoIGdtdGltZV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiVGltZS5nbXRpbWU6IG91dCBvZiByYW5nZSAoJWYpXCIgc2VjX3NpbmNlX2Vwb2NoICgpXG4gIDs7XG5cbiAgbGV0IHNlY19wZXJfZGF5ID0gSW50NjMub2ZfaW50IDg2XzQwMFxuXG4gIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoOnQ7XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gSW50NjMub2ZfZmxvYXQgdCAvIHNlY19wZXJfZGF5IGluXG4gICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgaWYgRmxvYXQuKCA8ICkgdCAoSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBzZWNfcGVyX2RheSkpXG4gICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgOztcblxuICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjID0gSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaCAqIHNlY19wZXJfZGF5KSBpblxuICAgIGxldCByZW1haW5kZXIgPSB0IC0uIGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgaW5cbiAgICBTcGFuLm9mX3NlYyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBsZXQgZGF0ZSA9IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgb2ZkYXkgPSBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgZGF0ZSwgb2ZkYXlcbiAgOztcbmVuZFxuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFNwYW4udF07XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPVxuICAgICAgYWRkXG4gICAgICAgIGJhc2VcbiAgICAgICAgKFNwYW4uc2NhbGVcbiAgICAgICAgICAgaW50ZXJ2YWxcbiAgICAgICAgICAgKEZsb2F0LnJvdW5kIH5kaXI6YERvd24gKFNwYW4uKCAvLyApIGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSlcbiAgICBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCBub3cgKCkgPVxuICBsZXQgZmxvYXRfbnMgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IEludDYzLnRvX2Zsb2F0IGluXG4gIG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2Zfc2VjIChmbG9hdF9ucyAqLiAxRS05KSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgU19rZXJuZWxfd2l0aG91dF96b25lID0gVGltZTBfaW50Zi5TXG5tb2R1bGUgdHlwZSBTX2tlcm5lbCA9IFRpbWVfaW50Zi5TXG5cbm1vZHVsZSBab25lX3N0YWJsZSA9IFpvbmUuU3RhYmxlXG5pbmNsdWRlIFRpbWUuTWFrZSAoVGltZV9mbG9hdDApXG5pbmNsdWRlIFRpbWVfZmxvYXQwXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX2Zsb2F0MC5TdGFibGVcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgV2l0aF90X29mX3NleHBfYWJzID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2ZkYXlcbiAgICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBXaXRoX3V0Y19zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodG9fc3RyaW5nX2Fic19wYXJ0cyB0IH56b25lOlpvbmUudXRjIDogc3RyaW5nIGxpc3QpXVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSBkYXRlOyBTZXhwLkF0b20gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUgXSAtPlxuICAgICAgICAgICAgb2Zfc3RyaW5nX2dlblxuICAgICAgICAgICAgICB+ZGVmYXVsdF96b25lOihmdW4gKCkgLT4gWm9uZS51dGMpXG4gICAgICAgICAgICAgIH5maW5kX3pvbmU6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogdW5rbm93biB0aW1lIHpvbmVcIiBzZXhwKVxuICAgICAgICAgICAgICAoZGF0ZSBeIFwiIFwiIF4gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUpXG4gICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHBcIiBzZXhwXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPiByYWlzZSBlXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiAlc1wiIChFeG4udG9fc3RyaW5nIGUpKVxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuXG4gICAgICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICAgICAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gICAgaW5jbHVkZSBab25lX3N0YWJsZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPZmRheVxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBub3cgPSBgVXNlX1RpbWVfdW5peFxuXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbmVuZFxuXG5tb2R1bGUgU3BhbiA9IHN0cnVjdFxuICBpbmNsdWRlIFNwYW5cblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBab25lID0gc3RydWN0XG4gIGluY2x1ZGUgWm9uZVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbiAgbGV0ICggPCApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiZXR3ZWVuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaGFwZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaXplX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGRlc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZXF1YWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hfZm9sZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdGlhbGl6ZWRfem9uZXMgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbG9jYWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWF4ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1pbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBvZl9zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRvX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgRXhwb3NlZF9mb3JfdGVzdHMgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGZvcm1hdCA9IGBVc2VfVGltZV91bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxuIiwiaW5jbHVkZSBEYXRlMFxuXG5sZXQgb2ZfdGltZSB0aW1lIH56b25lID0gVGltZV9mbG9hdC50b19kYXRlIH56b25lIHRpbWVcbmxldCB0b2RheSB+em9uZSA9IG9mX3RpbWUgKFRpbWVfZmxvYXQubm93ICgpKSB+em9uZVxubGV0IGZvcm1hdCA9IGBVc2VfRGF0ZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX0RhdGVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9EYXRlX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludDYzLk9cblxubGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3BhblwiXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gSW50LmVxdWFsIFN5cy53b3JkX3NpemVfaW5fYml0cyA2NFxubGV0IHJvdW5kX25lYXJlc3QgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4blxubGV0IGZsb2F0IHggPSBJbnQ2My50b19mbG9hdCB4XG5cbigqIFtTcGFuXSBpcyBiYXNpY2FsbHkgYSBbSW50NjNdLiAgSXQgZXZlbiBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93LiAqKVxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudCAoKiBuYW5vc2Vjb25kcyAqKSBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEludDYzLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCB6ZXJvID0gSW50NjMuemVyb1xuZW5kXG5cbmluY2x1ZGUgVFxub3BlbiBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFBhcnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzaWduIDogU2lnbi50XG4gICAgOyBociA6IGludFxuICAgIDsgbWluIDogaW50XG4gICAgOyBzZWMgOiBpbnRcbiAgICA7IG1zIDogaW50XG4gICAgOyB1cyA6IGludFxuICAgIDsgbnMgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5sZXQgbmV4dCB0ID0gSW50NjMuc3VjYyB0XG5sZXQgcHJldiB0ID0gSW50NjMucHJlZCB0XG5sZXQgbmFub3NlY29uZCA9IEludDYzLm9mX2ludCAxXG5sZXQgbWljcm9zZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBuYW5vc2Vjb25kKVxubGV0IG1pbGxpc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWljcm9zZWNvbmQpXG5sZXQgc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWlsbGlzZWNvbmQpXG5sZXQgbWludXRlID0gSW50NjMuKG9mX2ludCA2MCAqIHNlY29uZClcbmxldCBob3VyID0gSW50NjMuKG9mX2ludCA2MCAqIG1pbnV0ZSlcbmxldCBkYXkgPSBJbnQ2My4ob2ZfaW50IDI0ICogaG91cilcblxuKCogQmV5b25kIFttaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZy4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmddLCBub3QgZXZlcnkgbWljcm9zZWNvbmRcbiAgIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIFtmbG9hdF0gbnVtYmVyIG9mIHNlY29uZHMuIChJbiBmYWN0LCBpdCBpcyBhcm91bmQgMTM1eSwgYnV0IHdlXG4gICBsZWF2ZSBhIHNtYWxsIG1hcmdpbi4pXG5cbiAgIEluIHRoZSBwcmVzZW5jZSBvZiBzaWxlbnRseSBpZ25vcmVkIG92ZXJmbG93LCBub3RlIHRoYXQgW3RdIGlzIG5vdCBhY3R1YWxseSBib3VuZCB0b1xuICAgc3RheSBiZXR3ZWVuIHRoZXNlIGxpbWl0cy4gKilcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLihvZl9pbnQgMTM1ICogb2ZfaW50IDM2NSAqIGRheSlcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLm5lZyBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuXG5sZXQgY3JlYXRlXG4gICAgICA/c2lnbjooc2lnbl8gPSBTaWduLlBvcyAoKiByZWJpbmQgc28gbm90IHNoYWRvd2VkIGJ5IFtvcGVuIEludDYzXSBiZWxvdyAqKSlcbiAgICAgID9kYXk6KGRheXMgPSAwKVxuICAgICAgPyhociA9IDApXG4gICAgICA/bWluOihtaW51dGVzID0gMClcbiAgICAgID8oc2VjID0gMClcbiAgICAgID8obXMgPSAwKVxuICAgICAgPyh1cyA9IDApXG4gICAgICA/KG5zID0gMClcbiAgICAgICgpXG4gID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IHQgPVxuICAgIChvZl9pbnQgZGF5cyAqIGRheSlcbiAgICArIChvZl9pbnQgaHIgKiBob3VyKVxuICAgICsgKG9mX2ludCBtaW51dGVzICogbWludXRlKVxuICAgICsgKG9mX2ludCBzZWMgKiBzZWNvbmQpXG4gICAgKyAob2ZfaW50IG1zICogbWlsbGlzZWNvbmQpXG4gICAgKyAob2ZfaW50IHVzICogbWljcm9zZWNvbmQpXG4gICAgKyAob2ZfaW50IG5zICogbmFub3NlY29uZClcbiAgaW5cbiAgbWF0Y2ggc2lnbl8gd2l0aFxuICB8IE5lZyAtPiBuZWcgdFxuICB8IFBvcyB8IFplcm8gLT4gdFxuOztcblxubGV0IHRvX3BhcnRzIHQgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgbWFnID0gYWJzIHQgaW5cbiAgeyBQYXJ0cy5zaWduID0gKGlmIHQgPCB6ZXJvIHRoZW4gTmVnIGVsc2UgaWYgdCA+IHplcm8gdGhlbiBQb3MgZWxzZSBaZXJvKVxuICA7IGhyID0gdG9faW50X2V4biAobWFnIC8gaG91cilcbiAgOyBtaW4gPSB0b19pbnRfZXhuIChyZW0gbWFnIGhvdXIgLyBtaW51dGUpXG4gIDsgc2VjID0gdG9faW50X2V4biAocmVtIG1hZyBtaW51dGUgLyBzZWNvbmQpXG4gIDsgbXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIHNlY29uZCAvIG1pbGxpc2Vjb25kKVxuICA7IHVzID0gdG9faW50X2V4biAocmVtIG1hZyBtaWxsaXNlY29uZCAvIG1pY3Jvc2Vjb25kKVxuICA7IG5zID0gdG9faW50X2V4biAocmVtIG1hZyBtaWNyb3NlY29uZCAvIG5hbm9zZWNvbmQpXG4gIH1cbjs7XG5cbmxldCBvZl9wYXJ0cyB7IFBhcnRzLnNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9ID1cbiAgY3JlYXRlIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgKClcbjs7XG5cbmxldCBvZl9ucyBmID0gcm91bmRfbmVhcmVzdCBmXG5sZXQgb2ZfaW50NjNfbnMgaSA9IGlcbmxldCBvZl9pbnRfdXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pY3Jvc2Vjb25kKVxubGV0IG9mX2ludF9tcyBpID0gSW50NjMuKG9mX2ludCBpICogbWlsbGlzZWNvbmQpXG5sZXQgb2ZfaW50X3NlYyBpID0gSW50NjMuKG9mX2ludCBpICogc2Vjb25kKVxubGV0IG9mX3VzIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pY3Jvc2Vjb25kKVxubGV0IG9mX21zIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbGxpc2Vjb25kKVxubGV0IG9mX3NlYyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBzZWNvbmQpXG5sZXQgb2ZfbWluIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbnV0ZSlcbmxldCBvZl9ociBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBob3VyKVxubGV0IG9mX2RheSBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBkYXkpXG5cbmxldCBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gc2VjID1cbiAgbGV0IHVzID0gcm91bmRfbmVhcmVzdCAoc2VjICouIDFlNikgaW5cbiAgb2ZfaW50NjNfbnMgSW50NjMuKHVzICogb2ZfaW50IDEwMDApXG47O1xuXG5sZXQgb2ZfaW50NjNfc2Vjb25kcyB4ID0geCAqIHNlY29uZFxubGV0IG9mX2ludDMyX3NlY29uZHMgeCA9IG9mX2ludDYzX3NlY29uZHMgKEludDYzLm9mX2ludDMyIHgpXG5cbmxldCB0b19ucyB0ID0gZmxvYXQgdFxubGV0IHRvX2ludDYzX25zIHQgPSB0XG5sZXQgdG9fdXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWljcm9zZWNvbmRcbmxldCB0b19tcyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWxsaXNlY29uZFxubGV0IHRvX3NlYyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBzZWNvbmRcbmxldCB0b19taW4gdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWludXRlXG5sZXQgdG9faHIgdCA9IGZsb2F0IHQgLy4gZmxvYXQgaG91clxubGV0IHRvX2RheSB0ID0gZmxvYXQgdCAvLiBmbG9hdCBkYXlcbmxldCB0b19pbnRfdXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWljcm9zZWNvbmQpKVxubGV0IHRvX2ludF9tcyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWxsaXNlY29uZCkpXG5sZXQgdG9faW50X3NlYyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBzZWNvbmQpKVxubGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gdCA9IHQgLyUgc2Vjb25kXG5sZXQgb2ZfaW50X25zIGkgPSBvZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b19pbnRfbnMgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLlNwYW4udG9faW50X25zOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgKCArICkgdCB1ID0gSW50NjMuKCArICkgdCB1XG5sZXQgKCAtICkgdCB1ID0gSW50NjMuKCAtICkgdCB1XG5sZXQgYWJzID0gSW50NjMuYWJzXG5sZXQgbmVnID0gSW50NjMubmVnXG5sZXQgc2NhbGUgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAqLiBmKVxubGV0IHNjYWxlX2ludDYzIHQgaSA9IEludDYzLiggKiApIHQgaVxubGV0IHNjYWxlX2ludCB0IGkgPSBzY2FsZV9pbnQ2MyB0IChJbnQ2My5vZl9pbnQgaSlcbmxldCBkaXYgPSBJbnQ2My4oIC8lIClcbmxldCAoIC8gKSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0IC8uIGYpXG5sZXQgKCAvLyApID0gSW50NjMuKCAvLyApXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0IHQgPSBJbnQ2My50b19mbG9hdCB0XG5cbmxldCBvZl91bml0X29mX3RpbWUgdSA9XG4gIG1hdGNoICh1IDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kIC0+IHNlY29uZFxuICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgfCBIb3VyIC0+IGhvdXJcbiAgfCBEYXkgLT4gZGF5XG47O1xuXG5sZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gIGxldCBhYnNfdCA9IGFicyB0IGluXG4gIGlmIGFic190ID49IGRheVxuICB0aGVuIERheVxuICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgdGhlbiBIb3VyXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gIHRoZW4gTWludXRlXG4gIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gIHRoZW4gU2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgdGhlbiBNaWxsaXNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gIHRoZW4gTWljcm9zZWNvbmRcbiAgZWxzZSBOYW5vc2Vjb25kXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcblxuICAgICAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGUgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXG4gICAgICAgICAgICB0aGVuIDFcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxXzAwMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXzAwMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBzcGFuIHBhcnQgbWFnbml0dWRlcyBhcmUgYWx3YXlzIDwgMTAwXzAwMCAqKVxuXG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgYXNzZXJ0IChiaWxsaW9udGhzID49IDAgJiYgYmlsbGlvbnRocyA8PSA5OTlfOTk5Xzk5OSk7XG4gICAgICAgICAgICBpZiBiaWxsaW9udGhzID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDlcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDhcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gN1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNlxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfY2hhciBidWYgfnBvcyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjtcbiAgICAgICAgICAgIHBvcyArIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgY2hhcjEgY2hhcjIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyMTtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIChwb3MgKyAxKSBjaGFyMjtcbiAgICAgICAgICAgIHBvcyArIDJcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjMgYnVmIH5wb3MgfmRpZ2l0cyAoSW50NjMub2ZfaW50IGludCk7XG4gICAgICAgICAgICBwb3MgKyBkaWdpdHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5kZWNpbWFscyB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjNcbiAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgfmRpZ2l0czpkZWNpbWFsc1xuICAgICAgICAgICAgICAoSW50NjMub2ZfaW50IChiaWxsaW9udGhzIC8gSW50LnBvdyAxMCAoOSAtIGRlY2ltYWxzKSkpO1xuICAgICAgICAgICAgcG9zICsgZGVjaW1hbHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzIGludCBzdWZmaXggPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyBzdWZmaXggaW5cbiAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgPSB0b19pbnQ2M19ucyBtaWxsaXNlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pY3Jvc2Vjb25kID0gdG9faW50NjNfbnMgbWljcm9zZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBpbnQ2M182MCA9IEludDYzLm9mX2ludCA2MFxuICAgICAgICAgIGxldCBpbnQ2M18yNCA9IEludDYzLm9mX2ludCAyNFxuXG4gICAgICAgICAgKCogVW5pdHMgb2Ygc2Vjb25kcyBhbmQgc21hbGxlciBjYW4gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIG5vdGF0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICB3b3JyeWluZyBhYm91dCBub24tcG93ZXItb2YtdGVuIGZhY3RvcnMuICopXG4gICAgICAgICAgbW9kdWxlIERlY2ltYWxfdW5pdCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBTZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZFxuICAgICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgICAgIGxldCBjcmVhdGUgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgcyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IDFcbiAgICAgICAgICAgICAgdGhlbiBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGludGVnZXIgdCB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAvIG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGJpbGxpb250aHMgdCB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAlIG5hbm9zX29mX21pbGxpc2Vjb25kICogMV8wMDBcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAlIG5hbm9zX29mX21pY3Jvc2Vjb25kICogMV8wMDBfMDAwXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiAwXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgbGVuZ3RoIHQgfmRpZ2l0cyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX2xlbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gZGlnaXRzICsgMVxuICAgICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgfCBNaWNyb3NlY29uZCB8IE5hbm9zZWNvbmQgLT4gZGlnaXRzICsgMlxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19sZW4gPSBpZiBkZWNpbWFscyA+IDAgdGhlbiBkZWNpbWFscyArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgIGRpZ2l0c19sZW4gKyBkZWNpbWFsc19sZW5cbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZV9zdWZmaXggdCBidWYgfnBvcyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICdzJ1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ20nICdzJ1xuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ3UnICdzJ1xuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbicgJ3MnXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZSB0IGJ1ZiB+cG9zIH5pbnRlZ2VyIH5kaWdpdHMgfmJpbGxpb250aHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIGludGVnZXIgfmRpZ2l0cyBpblxuICAgICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgICAgaWYgZGVjaW1hbHMgPSAwXG4gICAgICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zICcuJyBpblxuICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9zdWZmaXggdCBidWYgfnBvcylcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kXG5cbiAgICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgICAgaWYgZXF1YWwgdCB6ZXJvXG4gICAgICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9IHQgPCB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuKCAvICkgKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIGluXG4gICAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgICAgSW50NjMucmVtICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuYWJzIHNlY29uZHMgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID0gSW50LmFicyBucyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IEludDYzLnJlbSBzZWNvbmRzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBJbnQ2My4oIC8gKSBzZWNvbmRzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBtID0gSW50NjMucmVtIG1pbnV0ZXMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgaG91cnMgPSBJbnQ2My4oIC8gKSBtaW51dGVzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBoID0gSW50NjMucmVtIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGQgPSBJbnQ2My4oIC8gKSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2ggPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmggaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9tID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTptIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXQgPSBEZWNpbWFsX3VuaXQuY3JlYXRlIH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2ludGVnZXIgPSBEZWNpbWFsX3VuaXQuaW50ZWdlciBkZWNpbWFsX3VuaXQgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfYmlsbGlvbnRocyA9IERlY2ltYWxfdW5pdC5iaWxsaW9udGhzIGRlY2ltYWxfdW5pdCB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgICAgICAgICAgICBsZXQgc2lnbl9sZW4gPSBpZiBpc19uZWdhdGl2ZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRfbGVuID0gaWYgZGlnaXRzX29mX2QgPiAwIHRoZW4gZGlnaXRzX29mX2QgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBoX2xlbiA9IGlmIGRpZ2l0c19vZl9oID4gMCB0aGVuIGRpZ2l0c19vZl9oICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbV9sZW4gPSBpZiBkaWdpdHNfb2ZfbSA+IDAgdGhlbiBkaWdpdHNfb2ZfbSArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9sZW4gPVxuICAgICAgICAgICAgICAgICAgRGVjaW1hbF91bml0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHNpZ25fbGVuICsgZF9sZW4gKyBoX2xlbiArIG1fbGVuICsgZGVjaW1hbF91bml0X2xlblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHN0cmluZ19sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBzdHJpbmdfbGVuZ3RoIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSBpZiBpc19uZWdhdGl2ZSB0aGVuIHdyaXRlX2NoYXIgYnVmIH5wb3MgJy0nIGVsc2UgcG9zIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfZCBkICdkJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2ggaCAnaCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9tIG0gJ20nIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC53cml0ZVxuICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgIH5pbnRlZ2VyOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAocG9zID0gc3RyaW5nX2xlbmd0aCk7XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmKVxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgICgqIFdlIGRvIGNvbXB1dGF0aW9ucyB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGV2ZXJ5d2hlcmUgYW5kIHRlc3QgYWdhaW5zdFxuICAgICAgICAgICAgIHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5taW5fdmFsdWVdIHJhdGhlciB0aGFuIHVzaW5nIHBvc2l0aXZlIG51bWJlcnNcbiAgICAgICAgICAgICBhbmQgdGVzdGluZyBhZ2FpbnN0IHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5tYXhfdmFsdWVdIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAgbmVnYXRpdmUgaW50ZWdlciByYW5nZSBpcyBvbmUgd2lkZXIgdGhhbiB0aGUgcG9zaXRpdmUgaW50ZWdlciByYW5nZVxuICAgICAgICAgICAgICgtMioqNjMgdnMgMioqNjMtMSksIGFuZCB3ZSBuZWVkIHRoYXQgdG8gYmUgYWJsZSB0byBoYW5kbGUgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgbmljZWx5LiAqKVxuXG4gICAgICAgICAgbGV0IGludDYzXzEwID0gSW50NjMub2ZfaW50IDEwXG4gICAgICAgICAgbGV0IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3cgPSBJbnQ2My4obWluX3ZhbHVlIC8gaW50NjNfMTApXG5cbiAgICAgICAgICBsZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4ub2Zfc3RyaW5nOiBpbnZhbGlkIHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAoc3RyaW5nIDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgKHJlYXNvbiA6IHN0cmluZyldXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIEFzc3VtZXMgeCBhbmQgeSBhcmUgYm90aCBub25wb3NpdGl2ZSAqKVxuICAgICAgICAgIGxldCBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyB4IHkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IHN1bSA9IHggKyB5IGluXG4gICAgICAgICAgICBpZiBzdW0gPiB4XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBzdW1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IGFkZF9uZWdfZGlnaXQgfnN0cmluZyBpbnQ2MyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXIpIGluXG4gICAgICAgICAgICBpZiBpbnQ2MyA8IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIChpbnQ2MyAqIGludDYzXzEwKSAoLWRpZ2l0KVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbWluX2ZhY3Rvcl9vZiBzcGFuID0gSW50NjMuKCAvICkgSW50NjMubWluX3ZhbHVlICh0b19pbnQ2M19ucyBzcGFuKVxuICAgICAgICAgIGxldCBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgZGF5XG4gICAgICAgICAgbGV0IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgaG91clxuICAgICAgICAgIGxldCBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWludXRlXG4gICAgICAgICAgbGV0IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWlsbGlzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWljcm9zZWNvbmRcbiAgICAgICAgICBsZXQgbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBuYW5vc2Vjb25kXG5cbiAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICAgICAgICB8IERheSAtPiBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBIb3VyIC0+IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaW51dGUgLT4gbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgU2Vjb25kIC0+IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRvX2ludDYzX25zIChvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSBpblxuICAgICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvdyA9XG4gICAgICAgICAgICAgIG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgSW50NjMuKCA8ICkgbmVnX2ludGVnZXIgbWluX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBsZXQgbmVnX2ludGVnZXJfbnMgPSBJbnQ2My4oICogKSBuZWdfaW50ZWdlciBzY2FsZSBpblxuICAgICAgICAgICAgbGV0IGZyYWN0aW9uX3BvcyA9IGRlY2ltYWxfcG9zICsgMSBpblxuICAgICAgICAgICAgaWYgZnJhY3Rpb25fcG9zID49IGVuZF9wb3NcbiAgICAgICAgICAgIHRoZW4gbmVnX2ludGVnZXJfbnNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9ucyA9XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMucmVhZF9pbnQ2M19kZWNpbWFsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5wb3M6ZnJhY3Rpb25fcG9zXG4gICAgICAgICAgICAgICAgICB+c2NhbGVcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczooZW5kX3BvcyAtIGZyYWN0aW9uX3BvcylcbiAgICAgICAgICAgICAgICAgIH5hbGxvd191bmRlcnNjb3JlOnRydWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzOnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIG5lZ19pbnRlZ2VyX25zIChJbnQ2My4oIH4tICkgZGVjaW1hbF9ucykpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgbmVnX25zID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBzdHJpbmdcIjtcbiAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgJysnIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nIDogRGlnaXRfc3RyaW5nX2hlbHBlcnMuUm91bmQudCA9XG4gICAgICAgICAgICAgICgqIFVsdGltYXRlbHksIHdlIGFsd2F5cyByb3VuZCBwYXJzZWQgc3BhbnMgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSB3aGVuXG4gICAgICAgICAgICAgICAgIHRoZSBuZWFyZXN0IHJvdW5kIG5zIGFyZSBlcXVpZGlzdGFudC4gRm9yIGV4YW1wbGUsIFwiMS41bnNcIiBpcyByZWFkIGFzXG4gICAgICAgICAgICAgICAgIDIuMG5zLCBhbmQgXCItMS41bnNcIiBpcyByZWFkIGFzIC0xbnMuIFNpbmNlIHdlIHJlYWQgYWJzb2x1dGUgdmFsdWVzIGJlZm9yZVxuICAgICAgICAgICAgICAgICBhcHBseWluZyB0aGUgc2lnbiwgd2UgbXVzdCBjaG9vc2Ugb3VyIHJvdW5kaW5nIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgc2lnbi4gUm91bmRpbmcgZGVjaW1hbCB2YWx1ZXMgaGFwcGVucyBiZWZvcmUgbmVnYXRpbmcgdGhlaXIgbWFnbml0dWRlLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBpc19uZWdhdGl2ZSB3aXRoXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT4gVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgICAgICAgICAgIHwgdHJ1ZSAtPiBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBMb29wIG92ZXIgcGFydHMsIGxpa2UgXCI1bVwiIGluIFwiMWg1bTMwc1wiICopXG4gICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuIGRvXG4gICAgICAgICAgICAgIGxldCBoYXNfZGlnaXQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyID1cbiAgICAgICAgICAgICAgICBsZXQgaSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kaWdpdHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RpZ2l0cyBkb1xuICAgICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaSA6PSBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgIWkgYztcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kaWdpdHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIWlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiAhcG9zIDwgbGVuICYmIENoYXIuZXF1YWwgJy4nIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcylcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kZWNpbWFscyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGVjaW1hbHMgZG9cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RlY2ltYWxzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAgICAgbGV0IGVuZF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmIG5vdCAhaGFzX2RpZ2l0XG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyBkaWdpdHMgYmVmb3JlIHVuaXQgc3VmZml4XCI7XG4gICAgICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICAgICAgICAgICAgaWYgIXBvcyArIDEgPCBsZW4gJiYgQ2hhci5lcXVhbCAncycgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAoIXBvcyArIDEpKVxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICAgICAgfCAndScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCAnbicgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgIXBvcyA8IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnZCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIERheVxuICAgICAgICAgICAgICAgICAgfCAnaCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBTZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIHVuaXQgc3VmZml4IGFmdGVyIGRpZ2l0c1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfbmFub3Nfb2ZfcGFydCA9XG4gICAgICAgICAgICAgICAgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBuZWdfbnMgOj0gYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgIW5lZ19ucyBuZWdfbmFub3Nfb2ZfcGFydFxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgIGlmIGlzX25lZ2F0aXZlXG4gICAgICAgICAgICAgIHRoZW4gIW5lZ19uc1xuICAgICAgICAgICAgICBlbHNlIGlmIEludDYzLiggPSApICFuZWdfbnMgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIlxuICAgICAgICAgICAgICBlbHNlIEludDYzLiggfi0gKSAhbmVnX25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb2ZfaW50NjNfbnMgbnNcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWVfbnMuU3Bhbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUMClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubGV0IHRvX3N0cmluZyA9IFN0YWJsZS5WMi50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBTdGFibGUuVjIub2Zfc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMi50X29mX3NleHBcbmxldCB0X3NleHBfZ3JhbW1hciA9IFN0YWJsZS5WMi50X3NleHBfZ3JhbW1hclxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBGdW5jdGlvbnMgcmVxdWlyZWQgYnkgW1JvYnVzdGx5X2NvbXBhcmFibGVdOiBhbGxvd3MgZm9yIFtyb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VdXG4gICBncmFudWxhcml0eS5cblxuICAgQSBtaWNyb3NlY29uZCBpcyBhIHJlYXNvbmFibGUgZ3JhbnVsYXJpdHkgYmVjYXVzZSB0aGVyZSBpcyB2ZXJ5IGxpdHRsZSBuZXR3b3JrXG4gICBhY3Rpdml0eSB0aGF0IGNhbiBiZSBtZWFzdXJlZCB0byBzdWItbWljcm9zZWNvbmQgcmVzb2x1dGlvbi4gKilcbmxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBtaWNyb3NlY29uZFxubGV0ICggPj0uICkgdCB1ID0gdCA+PSBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw9LiApIHQgdSA9IHQgPD0gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA9LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPD0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgKCA+LiApIHQgdSA9IHQgPiBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDwuICkgdCB1ID0gdCA8IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD4uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA+IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0IHJvYnVzdGx5X2NvbXBhcmUgdCB1ID0gaWYgdCA8LiB1IHRoZW4gLTEgZWxzZSBpZiB0ID4uIHUgdGhlbiAxIGVsc2UgMFxuXG4oKiBXZSBkb24ndCBqdXN0IGNvbnZlcnQgdG8gW1RpbWUuU3Bhbi50XSBhbmQgdXNlIHRoZSBjb252ZXJzaW9uIHRoZXJlIGJlY2F1c2Ugb3VyXG4gICBbdG9fc3Bhbl0gY29udmVyc2lvbiBpcyBsaW1pdGVkIHRvIG1pY3Jvc2Vjb25kIHByZWNpc2lvbi4gKilcbmxldCB0b19zdHJpbmdfaHVtXG4gICAgICA/KGRlbGltaXRlciA9ICdfJylcbiAgICAgID8oZGVjaW1hbHMgPSAzKVxuICAgICAgPyhhbGlnbl9kZWNpbWFsID0gZmFsc2UpXG4gICAgICA/dW5pdF9vZl90aW1lXG4gICAgICB0XG4gID1cbiAgbGV0IGZsb2F0LCBzdWZmaXggPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZSB1bml0X29mX3RpbWUgfmRlZmF1bHQ6KHRvX3VuaXRfb2ZfdGltZSB0KSB3aXRoXG4gICAgfCBEYXkgLT4gdG9fZGF5IHQsIFwiZFwiXG4gICAgfCBIb3VyIC0+IHRvX2hyIHQsIFwiaFwiXG4gICAgfCBNaW51dGUgLT4gdG9fbWluIHQsIFwibVwiXG4gICAgfCBTZWNvbmQgLT4gdG9fc2VjIHQsIFwic1wiXG4gICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0LCBcIm1zXCJcbiAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHQsIFwidXNcIlxuICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0LCBcIm5zXCJcbiAgaW5cbiAgbGV0IHByZWZpeCA9XG4gICAgRmxvYXQudG9fc3RyaW5nX2h1bSBmbG9hdCB+ZGVsaW1pdGVyIH5kZWNpbWFscyB+c3RyaXBfemVybzoobm90IGFsaWduX2RlY2ltYWwpXG4gIGluXG4gIGxldCBzdWZmaXggPVxuICAgIGlmIGFsaWduX2RlY2ltYWwgJiYgSW50LiggPSApIChTdHJpbmcubGVuZ3RoIHN1ZmZpeCkgMSB0aGVuIHN1ZmZpeCBeIFwiIFwiIGVsc2Ugc3VmZml4XG4gIGluXG4gIHByZWZpeCBeIHN1ZmZpeFxuOztcblxubGV0IHNpbmNlX3VuaXhfZXBvY2ggKCkgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IG9mX2ludDYzX25zXG5cbmxldCByYW5kb20gP3N0YXRlICgpID1cbiAgSW50NjMucmFuZG9tID9zdGF0ZSAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG4gIC0gSW50NjMucmFuZG9tID9zdGF0ZSAobmVnIG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuOztcblxubGV0IHJhbmRvbWl6ZSB0IH5wZXJjZW50ID0gU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IH5wZXJjZW50IH5zY2FsZVxuXG5sZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICBsZXQgKHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gOiBQYXJ0cy50KSA9IHRvX3BhcnRzIHQgaW5cbiAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBJbnQ2My5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBJbnQ2My5nZW5fdW5pZm9ybV9pbmNsXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gbW9kdWxlX25hbWVcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmQpXG5cbnR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gU3RhYmxlLlYyLmNvbXBhcmF0b3JcbiAgZW5kKVxuXG4oKiByZS1pbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFuZCBpdHMgY29tcGFyaXNvbnMgdG8gc2hhZG93IHRoZVxuICAgdW4taW5saW5lYWJsZSBvbmVzIGZyb20gW0NvbXBhcmFibGVdICopXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gVC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9IFNwYW5fZmxvYXQub2Zfc2VjICh0b19zZWMgdClcbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgcyA9IG9mX3NlYyAoU3Bhbl9mbG9hdC50b19zZWMgcylcbmxldCBoYWxmX21pY3Jvc2Vjb25kID0gSW50NjMub2ZfaW50IDUwMFxubGV0IG5lYXJlc3RfbWljcm9zZWNvbmQgdCA9IEludDYzLigodG9faW50NjNfbnMgdCArIGhhbGZfbWljcm9zZWNvbmQpIC8lIG9mX2ludCAxMDAwKVxuXG5sZXRbQGNvbGRdIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJTcGFuLnQgZXhjZWVkcyBsaW1pdHNcIlxuICAgICAgICAodCA6IHQpXG4gICAgICAgIChtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA6IHQpXG4gICAgICAgIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA6IHQpXVxuOztcblxubGV0IGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIGlmIHQgPCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyB8fCB0ID4gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlbiBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdFxuICBlbHNlIHRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFNwYW5fZmxvYXQub2ZfdXMgKEludDYzLnRvX2Zsb2F0IChuZWFyZXN0X21pY3Jvc2Vjb25kIChjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQpKSlcbjs7XG5cbmxldCBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzID1cbiAgaWYgU3Bhbl9mbG9hdC4oID4gKSBzIG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgU3Bhbl9mbG9hdC4oIDwgKSBzIG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zLlNwYW4gZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHNwYW5cIlxuICAgICAgc1xuICAgICAgWyVzZXhwX29mOiBTcGFuX2Zsb2F0LnRdO1xuICAoKiBVc2luZyBbVGltZS5TcGFuLnRvX3NlY10gKGJlaW5nIHRoZSBpZGVudGl0eSkgc28gdGhhdFxuICAgICB3ZSBtYWtlIGRvbid0IGFwcGx5IHRvbyBtYW55IGNvbnZlcnNpb25cbiAgICAgLSBUb28gbWFueSA6IGBbU3Bhbi50XSAtPiBbYV0gLT4gW3RdYFxuICAgICAtIE9ubHkgT25lIDogYFtTcGFuLnRdPT1bYV0gLT4gW3RdYC4gKilcbiAgb2Zfc2VjX3dpdGhfbWljcm9zZWNvbmRfcHJlY2lzaW9uIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxuOztcblxubGV0IG1pbl92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5tYXhfdmFsdWVcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IG9mX3BhcnRzID0gb2ZfcGFydHNcbiAgbGV0IHRvX3BhcnRzID0gdG9fcGFydHNcbmVuZFxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCB0b19zcGFuID0gdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2Ugd2FsbC1jbG9jayBtaWRuaWdodCAqKVxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG5pbmNsdWRlIChTcGFuIDogUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyB0XG5cblxubGV0IHN0YXJ0X29mX2RheSA6IHQgPSBTcGFuLnplcm9cbmxldCBzdGFydF9vZl9uZXh0X2RheSA6IHQgPSBTcGFuLmRheVxubGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPSBTcGFuLiggLSApIHN0YXJ0X29mX25leHRfZGF5IFNwYW4ubmFub3NlY29uZFxubGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSB0XG5cbmxldFtAY29sZF0gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5wdXQgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgIH5fOihzcGFuIDogU3Bhbi50KV1cbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gaXNfaW52YWxpZCBzcGFuID1cbiAgKCogV2h5IHdlIHVzZSBbU3Bhbi4oID4gKV0gcmF0aGVyIHRoYW4gWyggPj0gKV0gYmVsb3c6XG5cbiAgICAgV2UgYWxsb3cgdG8gcmVwcmVzZW50IHRoZSBlbmQtb2YtZGF5IHNlbnRpbmVsIHZhbHVlIChbMjQuMDAwMDAwMDAwaF0pLCB3aGljaCBpcyBub3RcbiAgICAgaXRzZWxmIGEgdmFsaWQgY2xvY2sgZmFjZSB0aW1lLiAgSG93ZXZlciwgc2luY2UgdmFsaWQgY2xvY2sgZmFjZSB0aW1lcyByZWFkaWx5XG4gICAgIHJvdW5kIHVwIHRvIGl0LCBpdCdzIGJldHRlciB0byBhbGxvdyBpdCB0byBiZSByZXByZXNlbnRlZC4gKilcbiAgU3Bhbi4oIDwgKSBzcGFuIHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPiApIHNwYW4gc3RhcnRfb2ZfbmV4dF9kYXlcbjs7XG5cbmxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID0gbm90IChpc19pbnZhbGlkIHNwYW4pXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBzcGFuXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gIGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiBlbHNlIHNwYW5cbjs7XG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgc3BhbiA9IGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIE5vbmUgZWxzZSBTb21lIHNwYW5cbmxldCBhZGRfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IGFkZCB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1YiB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IG5leHQgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5uZXh0IHQpXG5sZXQgcHJldiB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLnByZXYgdClcbmxldCBkaWZmIHQgdSA9IFNwYW4uKCAtICkgdCB1XG5cbmxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICgqIFNpbWlsYXIgdG8gW1RpbWUuT2ZkYXkuY3JlYXRlXSwgaWYgd2UgZGV0ZWN0IGEgbGVhcCBzZWNvbmQgd2Ugc3RyaXAgb2ZmIGFsbFxuICAgICBzdWItc2Vjb25kIGVsZW1lbnRzIHNvIHRoYXQgSEg6TU06NjAuWFhYWFhYWFhYIGlzIGFsbCBtYXBwZWQgdG8gSEg6TU06NjAuICopXG4gIGxldCBtcywgdXMsIG5zID1cbiAgICBtYXRjaCBzZWMgd2l0aFxuICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSAoXG4gICAgICBTcGFuLlN0YWJsZS5WMiA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgPSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3Bhbi5TdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgbGV0IHRvX3N0cmluZ193aXRoX3VuaXQgPVxuICAgICAgbGV0ICggLyApID0gSW50NjMuKCAvICkgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCBpID0gSW50NjMudG9faW50X2V4biBpblxuICAgICAgZnVuIHQgfnVuaXQgLT5cbiAgICAgICAgaWYgU3Bhbi4oIDwgKSB0IHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPCApIHN0YXJ0X29mX25leHRfZGF5IHRcbiAgICAgICAgdGhlbiBcIkluY29ycmVjdCBkYXlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2l4dHkgPSAhNjAgaW5cbiAgICAgICAgICBsZXQgdGhvdXNhbmQgPSAhMTAwMCBpblxuICAgICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgdCBpblxuICAgICAgICAgIGxldCB1cyA9IG5zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbnMgPSBucyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtcyA9IHVzIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgdXMgPSB1cyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBzID0gbXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBtcyA9IG1zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG0gPSBzIC8gc2l4dHkgaW5cbiAgICAgICAgICBsZXQgcyA9IHMgbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgaCA9IG0gLyBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IG0gPSBtIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IHVuaXQgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IChgTmFub3NlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBTZWNvbmQpIGFzIHVuaXQgLT4gdW5pdFxuICAgICAgICAgICAgfCBgTWludXRlX29yX2xlc3MgLT5cbiAgICAgICAgICAgICAgaWYgbnMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgdXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG1zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgYE1pbnV0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgYE1pbnV0ZSAtPiA1XG4gICAgICAgICAgICB8IGBTZWNvbmQgLT4gOFxuICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gMTJcbiAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+IDE1XG4gICAgICAgICAgICB8IGBOYW5vc2Vjb25kIC0+IDE4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjAgaDtcbiAgICAgICAgICBCeXRlcy5zZXQgc3RyIDIgJzonO1xuICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjMgbTtcbiAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgIHwgYE1pbnV0ZSAtPiAoKVxuICAgICAgICAgICB8IChgU2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDUgJzonO1xuICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjYgcztcbiAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgIHwgYFNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICB8IChgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgOCAnLic7XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6OSBtcztcbiAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgKGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTIgdXM7XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICAgICB8IGBOYW5vc2Vjb25kIC0+IERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjE1IG5zKSkpKTtcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnN0cilcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zIH51bnRpbCA9XG4gICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgbGV0IGRpZ2l0cyA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2RpZ2l0cyA9IHJlZiAwIGluXG4gICAgICBsZXQgcG9zID0gcmVmIHBvcyBpblxuICAgICAgKCogcmVhZCB1cCB0byAxMCBkaWdpdHM7IHN0b3JlIHRoZSBmaXJzdCA5LCB1c2UgdGhlIDEwdGggdG8gcm91bmQgKilcbiAgICAgIHdoaWxlICFwb3MgPCB1bnRpbCAmJiAhbnVtX2RpZ2l0cyA8IDEwIGRvXG4gICAgICAgIGxldCBjID0gc3RyaW5nLlshcG9zXSBpblxuICAgICAgICBpZiBDaGFyLmlzX2RpZ2l0IGNcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciBudW1fZGlnaXRzO1xuICAgICAgICAgIGlmICFudW1fZGlnaXRzIDwgMTBcbiAgICAgICAgICB0aGVuIGRpZ2l0cyA6PSAoIWRpZ2l0cyAqIDEwKSArIENoYXIuZ2V0X2RpZ2l0X2V4biBjXG4gICAgICAgICAgZWxzZSBpZiBDaGFyLmdldF9kaWdpdF9leG4gYyA+PSA1XG4gICAgICAgICAgdGhlbiBpbmNyIGRpZ2l0c1xuICAgICAgICAgIGVsc2UgKCkpO1xuICAgICAgICBpbmNyIHBvc1xuICAgICAgZG9uZTtcbiAgICAgICgqIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGRpZ2l0cywgYWRkIHplcm9lcyAqKVxuICAgICAgaWYgIW51bV9kaWdpdHMgPCA5IHRoZW4gZGlnaXRzIDo9ICFkaWdpdHMgKiBJbnQucG93IDEwICg5IC0gIW51bV9kaWdpdHMpO1xuICAgICAgIWRpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlX2Zyb21fcGFyc2VkIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuID1cbiAgICAgIGxldCBuYW5vc2Vjb25kcyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvczooc3Vic2VjX3BvcyArIDEpIH51bnRpbDooc3Vic2VjX3BvcyArIHN1YnNlY19sZW4pXG4gICAgICBpblxuICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IG5hbm9zZWNvbmRzKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5zZWNvbmQgc2VjKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5taW51dGUgbWluKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5ob3VyIGhyKVxuICAgICAgfD4gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzdHJpbmcgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgOiB0ID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZXhwZWN0ZWQgYW4gYXRvbVwiIHNleHBcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHRvX3N0cmluZyAodCA6IHQpID0gdG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBOYW5vc2Vjb25kXG4gICAgbGV0IHNleHBfb2ZfdCAodCA6IHQpID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBsZXQgdG9faW50NjMgdCA9IFNwYW5fbnMuU3RhYmxlLlYyLnRvX2ludDYzIHRcbiAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW5fbnMuU3RhYmxlLlYyLm9mX2ludDYzX2V4biB0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChcbiAgU3RhYmxlLlYxIDpcbiAgICBDb21wYXJhdG9yLlNcbiAgd2l0aCB0eXBlIHQgOj0gdFxuICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0YWJsZS5WMSA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBpbmNsdWRlIChTdGFibGUuVjEgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLk9mZGF5XCJcbiAgICBsZXQgaGFzaCA9IFNwYW4uaGFzaFxuICAgIGxldCBoYXNoX2ZvbGRfdCA9IFNwYW4uaGFzaF9mb2xkX3RcbiAgZW5kKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RhYmxlLlYxLnRfc2V4cF9ncmFtbWFyXG5sZXQgdG9fbWljcm9zZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWNyb3NlY29uZFxubGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWlsbGlzZWNvbmRcbmxldCB0b19zZWNfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBTZWNvbmRcbmxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWludXRlX29yX2xlc3NcblxubGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICB0cnlcbiAgICBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpTdGFibGUuVjEuY3JlYXRlX2Zyb21fcGFyc2VkXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiBjYW5ub3QgcGFyc2Ugc3RyaW5nXCJcbiAgICAgICAgICB+XzooU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbiA6IHN0cmluZylcbiAgICAgICAgICB+XzooZXhuIDogZXhuKV1cbjs7XG5cbmxldCBldmVyeSA9XG4gIGxldCByZWMgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjID1cbiAgICAoKiBBc3N1bWVzIFtzcGFuXSwgW3N0YXJ0XSwgYW5kIFtzdG9wXSBhcmUgdmFsaWQgb2ZkYXlzLiBBc3N1bWVzIFtzdGFydCA8IHN0b3BdLlxuICAgICAgIEFzc3VtZXMgW3NwYW4gPiAwXS4gKilcbiAgICBsZXQgYWNjID0gc3RhcnQgOjogYWNjIGluXG4gICAgbGV0IHN0YXJ0ID0gU3Bhbi4oICsgKSBzdGFydCBzcGFuIGluXG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wICgqIGNhbm5vdCBvdmVyZmxvdyAqKVxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2NcbiAgaW5cbiAgKCogaW50ZXJuYWwgW2V2ZXJ5XSBuYW1lZCB0byBzaG93IHVwIGluIHN0YWNrIHRyYWNlcyAqKVxuICBsZXQgZXZlcnkgc3BhbiB+c3RhcnQgfnN0b3AgPVxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggW3N0YXJ0XSA+IFtzdG9wXVwiIChzdGFydCA6IHQpIChzdG9wIDogdCldXG4gICAgZWxzZSBpZiBTcGFuLiggPD0gKSBzcGFuIFNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIHNwYW5cIiB+Xzooc3BhbiA6IFNwYW4udCldXG4gICAgZWxzZSBpZiBpc19pbnZhbGlkIHNwYW5cbiAgICB0aGVuIE9rIFsgc3RhcnQgXVxuICAgIGVsc2UgT2sgKGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYzpbXSlcbiAgaW5cbiAgZXZlcnlcbjs7XG5cbmxldCBzbWFsbF9kaWZmID1cbiAgbGV0IGhvdXIgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uaG91ciBpblxuICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgbGV0IGRpZmYgPSBvZmRheTEgLSBvZmRheTIgaW5cbiAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgIGxldCBkMSA9IEludDYzLnJlbSBkaWZmIGhvdXIgaW5cbiAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICBsZXQgZDIgPSBJbnQ2My5yZW0gKGQxICsgaG91cikgaG91ciBpblxuICAgIGxldCBkID0gaWYgZDIgPiBob3VyIC8gSW50NjMub2ZfaW50IDIgdGhlbiBkMiAtIGhvdXIgZWxzZSBkMiBpblxuICAgIFNwYW4ub2ZfaW50NjNfbnMgZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwic21hbGxfZGlmZlwiID1cbiAgbGV0IHRlc3QgeCB5ID1cbiAgICBsZXQgZGlmZiA9IHNtYWxsX2RpZmYgeCB5IGluXG4gICAgcHJpbnRmICFcInNtYWxsX2RpZmYgJXMgJXMgPSAlc1xcblwiICh0b19zdHJpbmcgeCkgKHRvX3N0cmluZyB5KSAoU3Bhbi50b19zdHJpbmcgZGlmZilcbiAgaW5cbiAgbGV0IGV4YW1wbGVzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biAoeCwgeSkgLT4gb2Zfc3RyaW5nIHgsIG9mX3N0cmluZyB5KVxuICAgICAgWyBcIjEyOjAwXCIsIFwiMTI6MDVcIjsgXCIxMjo1OFwiLCBcIjEzOjAyXCI7IFwiMDA6NTJcIiwgXCIyMzoxOVwiOyBcIjAwOjAwXCIsIFwiMjQ6MDBcIiBdXG4gIGluXG4gIExpc3QuaXRlciBleGFtcGxlcyB+ZjooZnVuICh4LCB5KSAtPlxuICAgIHRlc3QgeCB5O1xuICAgIHRlc3QgeSB4KTtcbiAgWyVleHBlY3RcbiAgICB7fFxuICAgIHNtYWxsX2RpZmYgMTI6MDA6MDAuMDAwMDAwMDAwIDEyOjA1OjAwLjAwMDAwMDAwMCA9IC01bVxuICAgIHNtYWxsX2RpZmYgMTI6MDU6MDAuMDAwMDAwMDAwIDEyOjAwOjAwLjAwMDAwMDAwMCA9IDVtXG4gICAgc21hbGxfZGlmZiAxMjo1ODowMC4wMDAwMDAwMDAgMTM6MDI6MDAuMDAwMDAwMDAwID0gLTRtXG4gICAgc21hbGxfZGlmZiAxMzowMjowMC4wMDAwMDAwMDAgMTI6NTg6MDAuMDAwMDAwMDAwID0gNG1cbiAgICBzbWFsbF9kaWZmIDAwOjUyOjAwLjAwMDAwMDAwMCAyMzoxOTowMC4wMDAwMDAwMDAgPSAtMjdtXG4gICAgc21hbGxfZGlmZiAyMzoxOTowMC4wMDAwMDAwMDAgMDA6NTI6MDAuMDAwMDAwMDAwID0gMjdtXG4gICAgc21hbGxfZGlmZiAwMDowMDowMC4wMDAwMDAwMDAgMjQ6MDA6MDAuMDAwMDAwMDAwID0gMHNcbiAgICBzbWFsbF9kaWZmIDI0OjAwOjAwLjAwMDAwMDAwMCAwMDowMDowMC4wMDAwMDAwMDAgPSAwcyB8fV1cbjs7XG5cbmxldCBnZW5faW5jbCA9IFNwYW4uZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gU3Bhbi5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSAoU3BhbiA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5ncyAqKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG5vdyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xubW9kdWxlIE9mZGF5ID0gT2ZkYXlfbnNcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHRoZSBVbml4IGVwb2NoICgxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQykgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnQgPSBTcGFuLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSAoU3BhbiA6IFF1aWNrY2hlY2suU19yYW5nZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgbm93ID0gU3Bhbi5zaW5jZV91bml4X2Vwb2NoXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgZXBvY2ggPSBTcGFuLnplcm9cbmxldCBhZGQgPSBTcGFuLiggKyApXG5sZXQgc3ViID0gU3Bhbi4oIC0gKVxubGV0IGRpZmYgPSBTcGFuLiggLSApXG5sZXQgYWJzX2RpZmYgdCB1ID0gU3Bhbi5hYnMgKGRpZmYgdCB1KVxubGV0IG1heCA9IFNwYW4ubWF4XG5sZXQgbWluID0gU3Bhbi5taW5cbmxldCBuZXh0ID0gU3Bhbi5uZXh0XG5sZXQgcHJldiA9IFNwYW4ucHJldlxubGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggdCA9IHRcbmxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoIHMgPSBzXG5sZXQgdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCA6IEludDYzLnQgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG5sZXQgb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggaSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2ZfaW50NjNfbnMgaSlcbmxldFtAY29sZF0gb3ZlcmZsb3cgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfbnM6IG92ZXJmbG93XCJdXG5sZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwgdDJcbmxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4gdDJcblxubGV0IGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA8ICkgc3VtIHggZWxzZSBTcGFuLiggPiApIHN1bSB4XG47O1xuXG5sZXQgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA+ICkgZGlmZiB4IGVsc2UgU3Bhbi4oIDwgKSBkaWZmIHhcbjs7XG5cbmxldCBhZGRfZXhuIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfZXhuIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgdGhlbiBvdmVyZmxvdyAoKSBlbHNlIGRpZmZcbjs7XG5cbmxldCBhZGRfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bVxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIGRpZmZcbjs7XG5cbmxldCB0b19pbnRfbnNfc2luY2VfZXBvY2ggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLnRvX2ludF9uc19zaW5jZV9lcG9jaDogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0IG9mX2ludF9uc19zaW5jZV9lcG9jaCBpID0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWUgPVxuICBpZiBUaW1lX2Zsb2F0LiggPCApIHRpbWUgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBUaW1lX2Zsb2F0LiggPiApIHRpbWUgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHRpbWVcIlxuICAgICAgdGltZVxuICAgICAgWyVzZXhwX29mOiBUaW1lX2Zsb2F0LlN0YWJsZS5XaXRoX3V0Y19zZXhwLlYyLnRdXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHRpbWUgPVxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHRpbWUgPVxuICBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWU7XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWwgPVxuICBmYWlsd2l0aHNcbiAgICB+aGVyZTpbJWhlcmVdXG4gICAgXCJUaW1lX25zLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICBpbnRlcnZhbFxuICAgIFslc2V4cF9vZjogU3Bhbi50XVxuOztcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWw7XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPSBhZGQgYmFzZSAoU3Bhbi5zY2FsZV9pbnQ2MyBpbnRlcnZhbCAoU3Bhbi5kaXYgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPSBTcGFuLnJhbmRvbSA/c3RhdGUgKClcblxubW9kdWxlIFV0YyA6IHNpZ1xuICB2YWwgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IERhdGUwLnQgKiBTcGFuLnRcbiAgdmFsIG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogRGF0ZTAudCAtPiBTcGFuLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIGEgcmVjcmVhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgZ210aW1lIHNwZWNpYWxpemVkIHRvIHRoZSBmaWVsZHMgd2UgbmVlZCB0aGF0IGFsc29cbiAgICAgZG9lc24ndCByZWx5IG9uIFVuaXguICopXG4gIGxldCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0ICggITwgKSBpID0gSW50NjMub2ZfaW50X2V4biBpIGluXG4gICAgbGV0ICggIT4gKSB0ID0gSW50NjMudG9faW50X2V4biB0IGluXG4gICAgbGV0IG5zX3NpbmNlX2Vwb2NoID0gdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCBpblxuICAgIGxldCBuc19wZXJfZGF5ID0gITw4Nl80MDAgKiAhPDFfMDAwXzAwMF8wMDAgaW5cbiAgICBsZXQgYXBwcm94X2RheXNfZnJvbV9lcG9jaCA9IG5zX3NpbmNlX2Vwb2NoIC8gbnNfcGVyX2RheSBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgaWYgbnNfc2luY2VfZXBvY2ggPCAhPDAgJiYgYXBwcm94X2RheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgPD4gbnNfc2luY2VfZXBvY2hcbiAgICAgIHRoZW4gYXBwcm94X2RheXNfZnJvbV9lcG9jaCAtICE8MVxuICAgICAgZWxzZSBhcHByb3hfZGF5c19mcm9tX2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5ID0gbnNfc2luY2VfZXBvY2ggLSAobnNfcGVyX2RheSAqIGRheXNfZnJvbV9lcG9jaCkgaW5cbiAgICBsZXQgZGF0ZSA9XG4gICAgICBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaCAhPmRheXNfZnJvbV9lcG9jaCB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICBpblxuICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFNwYW4ub2ZfaW50NjNfbnMgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9XG4gICAgYXNzZXJ0IChcbiAgICAgIFNwYW4uKCA+PSApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uemVyb1xuICAgICAgJiYgU3Bhbi4oIDwgKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLmRheSk7XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICBpblxuICAgIGxldCBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggPSBTcGFuLnNjYWxlX2ludCBTcGFuLmRheSBkYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4uKCArICkgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIG1vZHVsZSBPZmRheV9hc19zcGFuID0gc3RydWN0XG4gICAgICBvcGVuIEludC5PXG5cbiAgICAgIGxldCBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gPVxuICAgICAgICBsZXQgc2Vjb25kcyA9IFNwYW4udG9faW50X3NlYyBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgbGV0IGggPSBzZWNvbmRzIC8gMzYwMCBpblxuICAgICAgICBsZXQgbSA9IHNlY29uZHMgLyA2MCAlIDYwIGluXG4gICAgICAgIGxldCBzID0gc2Vjb25kcyAlIDYwIGluXG4gICAgICAgIHNwcmludGYgXCIlMDJkOiUwMmQ6JTAyZFwiIGggbSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHdvX2RpZ2l0X29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyaW5nID0gMiAmJiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgIEludC5vZl9zdHJpbmcgc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgc2Vjb25kc19zdHJpbmcgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBoX3N0cmluZzsgbV9zdHJpbmc7IHNfc3RyaW5nIF0gLT5cbiAgICAgICAgICBsZXQgaCA9IHR3b19kaWdpdF9vZl9zdHJpbmcgaF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbSA9IHR3b19kaWdpdF9vZl9zdHJpbmcgbV9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgcyA9IHR3b19kaWdpdF9vZl9zdHJpbmcgc19zdHJpbmcgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludF9zZWMgKCgoKGggKiA2MCkgKyBtKSAqIDYwKSArIHMpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuc19vZl8xMDBfbXMgPSAxMDBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX21zID0gMTBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfbXMgPSAxXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfdXMgPSAxMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfdXMgPSAxMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX3VzID0gMV8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfbnMgPSAxMDBcbiAgICAgIGxldCBuc19vZl8xMF9ucyA9IDEwXG4gICAgICBsZXQgbnNfb2ZfMV9ucyA9IDFcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhbiA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgc3ViX3NlY29uZF9zcGFuIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgaWYgbnMgPSAwXG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAxZFwiIChucyAvIG5zX29mXzEwMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAyZFwiIChucyAvIG5zX29mXzEwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwM2RcIiAobnMgLyBuc19vZl8xX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA0ZFwiIChucyAvIG5zX29mXzEwMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA1ZFwiIChucyAvIG5zX29mXzEwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNmRcIiAobnMgLyBuc19vZl8xX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA3ZFwiIChucyAvIG5zX29mXzEwMF9ucylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA4ZFwiIChucyAvIG5zX29mXzEwX25zKVxuICAgICAgICBlbHNlIHNwcmludGYgXCIuJTA5ZFwiIG5zXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViX3NlY29uZF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgICB0aGVuIFNwYW4uemVyb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlnaXRzID0gU3RyaW5nLmNob3BfcHJlZml4X2V4biBzdHJpbmcgfnByZWZpeDpcIi5cIiBpblxuICAgICAgICAgIGFzc2VydCAoU3RyaW5nLmZvcl9hbGwgZGlnaXRzIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICAgIGxldCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sZW5ndGggZGlnaXRzIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBuc19vZl8xMDBfbXNcbiAgICAgICAgICAgIHwgMiAtPiBuc19vZl8xMF9tc1xuICAgICAgICAgICAgfCAzIC0+IG5zX29mXzFfbXNcbiAgICAgICAgICAgIHwgNCAtPiBuc19vZl8xMDBfdXNcbiAgICAgICAgICAgIHwgNSAtPiBuc19vZl8xMF91c1xuICAgICAgICAgICAgfCA2IC0+IG5zX29mXzFfdXNcbiAgICAgICAgICAgIHwgNyAtPiBuc19vZl8xMDBfbnNcbiAgICAgICAgICAgIHwgOCAtPiBuc19vZl8xMF9uc1xuICAgICAgICAgICAgfCA5IC0+IG5zX29mXzFfbnNcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCAoSW50Lm9mX3N0cmluZyBkaWdpdHMgKiBtdWx0aXBsaWVyKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHNwYW4gPVxuICAgICAgICBhc3NlcnQgKFNwYW4uKCA+PSApIHNwYW4gU3Bhbi56ZXJvICYmIFNwYW4uKCA8ICkgc3BhbiBTcGFuLmRheSk7XG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzcGFuIHw+IFNwYW4udG9faW50X3NlYyB8PiBTcGFuLm9mX2ludF9zZWMgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IFNwYW4uKCAtICkgc3BhbiBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuIF4gc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICBsZXQgcHJlZml4X2xlbiA9IDggaW5cbiAgICAgICAgKCogXCJISDpNTTpERFwiICopXG4gICAgICAgIGxldCBzdWZmaXhfbGVuID0gbGVuIC0gcHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjpwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6cHJlZml4X2xlbiB+bGVuOnN1ZmZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBzdWJfc2Vjb25kX29mX3N0cmluZyBzdWJfc2Vjb25kX3N0cmluZyBpblxuICAgICAgICBTcGFuLiggKyApIHNlY29uZHNfc3BhbiBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgbGV0IGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gVXRjLnRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheV9hc19zcGFuLnRvX3N0cmluZyBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBeIFwiWlwiXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBkYXRlX3N0cmluZywgb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSA9IFN0cmluZy5sc3BsaXQyX2V4biBzdHJpbmcgfm9uOicgJyBpblxuICAgICAgbGV0IG9mZGF5X3N0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSB+c3VmZml4OlwiWlwiIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlX3N0cmluZyBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXlfYXNfc3Bhbi5vZl9zdHJpbmcgb2ZkYXlfc3RyaW5nIGluXG4gICAgICBVdGMub2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBvZmRheVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgZW5kKVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICgqIHNlZSB0ZXN0cyBpbiBsaWIvY29yZS90ZXN0L3NyYy90ZXN0X3RpbWVfbnMgdGhhdCBlbnN1cmUgc3RhYmlsaXR5IG9mIHRoaXNcbiAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gQWx0ZXJuYXRlX3NleHAuU3RhYmxlXG4gIG1vZHVsZSBTcGFuID0gU3Bhbi5TdGFibGVcbiAgbW9kdWxlIE9mZGF5ID0gT2ZkYXkuU3RhYmxlXG5lbmRcblxuKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lLm1sIGZ1bmN0b3IsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0IFRpbWVfbnNcbiAgIHRvL29mX3N0cmluZyB3b3JraW5nICopXG5tb2R1bGUgVG9fYW5kX29mX3N0cmluZyA6IHNpZ1xuICB2YWwgb2ZfZGF0ZV9vZmRheSA6IHpvbmU6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IHRcblxuICB2YWwgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgRGF0ZS50XG4gICAgLT4gT2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gWyBgT25jZSBvZiB0IHwgYFR3aWNlIG9mIHQgKiB0IHwgYE5ldmVyIG9mIHQgXVxuXG4gIHZhbCB0b19kYXRlX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnQgKiBPZmRheS50XG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIHRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IERhdGUudCAqIE9mZGF5LnQgKiBbIGBPbmx5IHwgYEFsc29fYXQgb2YgdCB8IGBBbHNvX3NraXBwZWQgb2YgRGF0ZS50ICogT2ZkYXkudCBdXG5cbiAgdmFsIHRvX2RhdGUgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudFxuICB2YWwgdG9fb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IE9mZGF5LnRcbiAgdmFsIGNvbnZlcnQgOiBmcm9tX3R6OlpvbmUudCAtPiB0b190ejpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuICB2YWwgcmVzZXRfZGF0ZV9jYWNoZSA6IHVuaXQgLT4gdW5pdFxuICB2YWwgdXRjX29mZnNldCA6IHQgLT4gem9uZTpab25lLnQgLT4gU3Bhbi50XG5cbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XVwiXVxuXG4gIHZhbCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IDogc3RyaW5nIC0+IHRcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFt0b19zdHJpbmdfdXRjXVwiXVxuICB2YWwgdG9fc3RyaW5nX3V0YyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19maWxlbmFtZV9zdHJpbmcgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgb2ZfZmlsZW5hbWVfc3RyaW5nIDogc3RyaW5nIC0+IHpvbmU6Wm9uZS50IC0+IHRcbiAgdmFsIHRvX3N0cmluZ190cmltbWVkIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmcgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgb2ZfbG9jYWxpemVkX3N0cmluZyA6IHpvbmU6Wm9uZS50IC0+IHN0cmluZyAtPiB0XG5cbiAgdmFsIG9mX3N0cmluZ19nZW5cbiAgICA6ICBkZWZhdWx0X3pvbmU6KHVuaXQgLT4gWm9uZS50KVxuICAgIC0+IGZpbmRfem9uZTooc3RyaW5nIC0+IFpvbmUudClcbiAgICAtPiBzdHJpbmdcbiAgICAtPiB0XG5cbiAgdmFsIHRvX3N0cmluZ19hYnMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic190cmltbWVkIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfcGFydHMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG5cbiAgdmFsIG9jY3VycmVuY2VcbiAgICA6ICBbIGBGaXJzdF9hZnRlcl9vcl9hdCB8IGBMYXN0X2JlZm9yZV9vcl9hdCBdXG4gICAgLT4gdFxuICAgIC0+IG9mZGF5Ok9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWVfZmxvYXQwLm1sLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldFxuICAgICBUaW1lX25zIHRvL29mX3N0cmluZyB3b3JraW5nICopXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9pbnQ2M19ucyB0XG5cbiAgICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICAgIGxldCBkYXlzID1cbiAgICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoIHw+IEludDYzLm9mX2ludFxuICAgICAgaW5cbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIChkYXlzICogU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheSlcbiAgICAgICsgU3Bhbi50b19pbnQ2M19ucyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gICAgOztcblxuICAgIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIHN1Yl9leG4gKFNwYW4ub2ZfaW50NjNfbnMgcmVsYXRpdmUpIG9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBTcGFuLnRvX2ludDYzX25zIChhZGRfZXhuIGFic29sdXRlIG9mZnNldF9mcm9tX3V0YylcbiAgICA7O1xuXG4gICAgbGV0IG5zX3Blcl9kYXkgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5XG5cbiAgICBsZXQgdG9fZGF5c19mcm9tX2Vwb2NoIHQgPVxuICAgICAgKCogbm90ZSBUaW1lX25zIHJlcHJlc2VudHMgYWJvdXQgMTQ2IHllYXJzLCBub3QgZW5vdWdoIGZvciBbRGF0ZS5jcmVhdGVfZXhuXSB0byBldmVyXG4gICAgICAgICByYWlzZSAqKVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSB0IC8gbnNfcGVyX2RheSBpblxuICAgICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICAgIHdhbnQgLTEpIC0tIGFkanVzdCBmb3IgdGhhdCBoZXJlLiAqKVxuICAgICAgaWYgdCA8IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBuc19wZXJfZGF5XG4gICAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgZWxzZSBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgOztcblxuICAgIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgPSBkYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IGluXG4gICAgICBsZXQgcmVtYWluZGVyID0gdCAtIGRheXNfZnJvbV9lcG9jaF9pbl9ucyBpblxuICAgICAgU3Bhbi5vZl9pbnQ2M19ucyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlIHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19vZmRheSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBab25lIDogc2lnXG4gICAgKCogVGhpcyBpbnRlcmZhY2UgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWVfaW50Zi5ab25lLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldFxuICAgICAgIHRoaXMgdG8gd29yay5cblxuICAgICAgIFRoZSBwcm9ibGVtIGlzIGhhcyByZWZlcmVuY2VzIHRvIFRpbWUwX2ludGYuUywgd2hpY2ggaXMgdGhlIGZ1bmN0b3IgaW5wdXQgaW50ZXJmYWNlXG4gICAgICAgdGhhdCBUaW1lX25zIGN1cnJlbnRseSBkb2VzIG5vdCBzYXRpc2Z5LiAqKVxuXG4gICAgdHlwZSB0aW1lID0gdFxuICAgIHR5cGUgdCA9IFpvbmUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbW9kdWxlIEluZGV4ID0gWm9uZS5JbmRleFxuXG4gICAgKCogY29waWVkIGZ1bmN0aW9ucyByZWV4cG9ydGVkIGZyb20gWm9uZSAqKVxuXG4gICAgdmFsIHV0YyA6IHRcbiAgICB2YWwgaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuICAgIHZhbCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG5cbiAgICAoKiBuZXcgZnVuY3Rpb25zIGRlZmluZWQgYmVsb3cgKilcblxuICAgIHZhbCBpbmRleCA6IHQgLT4gdGltZSAtPiBJbmRleC50XG4gICAgdmFsIGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgOiB0IC0+IERhdGVfYW5kX29mZGF5LnQgLT4gdGltZVxuICAgIHZhbCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIDogdCAtPiB0aW1lIC0+IERhdGVfYW5kX29mZGF5LnRcbiAgICB2YWwgbmV4dF9jbG9ja19zaGlmdCA6IHQgLT4gc3RyaWN0bHlfYWZ0ZXI6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gICAgdmFsIHByZXZfY2xvY2tfc2hpZnQgOiB0IC0+IGF0X29yX2JlZm9yZTp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0aW1lID0gdFxuXG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBTcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBTcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogdFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiB0XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IHRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIHRpbWUgPj0gZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgdGltZSA8IGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbFxuICA7O1xuXG4gIGxldCBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lID1cbiAgICBtYXRjaCBpc19pbl9jYWNoZSB0aW1lIH56b25lIHdpdGhcbiAgICB8IHRydWUgLT4gKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgaW5kZXggPSBab25lLmluZGV4IHpvbmUgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW1pvbmUuaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBab25lLmluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gem9uZSBpbmRleCBpblxuICAgICAgbGV0IHJlbCA9IERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0YyBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlX2FuZF9vZmRheS50b19kYXRlIHJlbCBpblxuICAgICAgbGV0IHNwYW4gPSBEYXRlX2FuZF9vZmRheS50b19vZmRheSByZWwgfD4gT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3N0YXJ0ID1cbiAgICAgICAgc3ViIChEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWwgfm9mZnNldF9mcm9tX3V0Yykgc3BhblxuICAgICAgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3VudGlsID0gYWRkIGVmZmVjdGl2ZV9kYXlfc3RhcnQgU3Bhbi5kYXkgaW5cbiAgICAgIGxldCBjYWNoZV9zdGFydF9pbmNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gbWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsIHw+IG1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBzaGlmdGVkIHJlY2VudGx5ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGZvcndhcmQgcmVjZW50bHk6IHdlIHNraXBwZWQgYSB0aW1lICopXG4gICAgICAgICAgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgYmFjayByZWNlbnRseTogdGhpcyBkYXRlL29mZGF5IGFscmVhZHkgaGFwcGVuZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoc3ViIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfLCBTb21lIChzdGFydCwgYW1vdW50KSB3aGVuIHN1YiBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA8PSB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyA9XG4gICAgbGV0IGF0dGVtcHQgdGltZSB+em9uZSA9XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICAgIF1cbiAgICBpblxuICAgIGZ1biB0aW1lIH56b25lIC0+XG4gICAgICB0cnkgYXR0ZW1wdCB0aW1lIH56b25lIHdpdGhcbiAgICAgIHwgKF8gOiBleG4pIC0+XG4gICAgICAgICgqIElmIHdlIG92ZXJmbG93IGFwcGx5aW5nIHRoZSBVVEMgb2Zmc2V0LCB0cnkgYWdhaW4gd2l0aCBVVEMgdGltZS4gKilcbiAgICAgICAgYXR0ZW1wdCB0aW1lIH56b25lOlpvbmUudXRjXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHJcbiAgICAgICAgfnRhcmdldDonOidcbiAgICAgICAgfnJlcGxhY2VtZW50OictJ1xuICAgICAgICAoU3RyaW5nLmRyb3Bfc3VmZml4IChPZmRheS50b19zdHJpbmcgb2ZkYXkpIDMpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfbnNfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX25zX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcbmVuZFxuXG5pbmNsdWRlIFRvX2FuZF9vZl9zdHJpbmdcblxubGV0IG1pbl92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCB0b190aW1lID0gdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgb2ZfdGltZSA9IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgXyA9IHN0cnVjdFxuICBvcGVuIFBweF9tb2R1bGVfdGltZXJfcnVudGltZVxuXG4gIGxldCAoKSA9XG4gICAgRHVyYXRpb24uZm9ybWF0XG4gICAgOj0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGxldCBkdXJhdGlvbl9vZl9zcGFuIHMgPSBzIHw+IFNwYW4udG9faW50NjNfbnMgfD4gRHVyYXRpb24ub2ZfbmFub3NlY29uZHNcbiAgICAgIGxldCBzcGFuX29mX2R1cmF0aW9uIGQgPSBkIHw+IER1cmF0aW9uLnRvX25hbm9zZWNvbmRzIHw+IFNwYW4ub2ZfaW50NjNfbnNcbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gc3RyaW5nIHw+IFNwYW4ub2Zfc3RyaW5nIHw+IGR1cmF0aW9uX29mX3NwYW5cblxuICAgICAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBkdXJhdGlvbnMgPVxuICAgICAgICBsZXQgc3BhbnMgPSBkdXJhdGlvbnMgfD4gTGlzdC5tYXAgfmY6c3Bhbl9vZl9kdXJhdGlvbiBpblxuICAgICAgICBsZXQgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICBzcGFuc1xuICAgICAgICAgIHw+IExpc3QubWF4X2VsdCB+Y29tcGFyZTpTcGFuLmNvbXBhcmVcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgICAgICAgICB+ZjpTcGFuLnRvX3VuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgfmRlZmF1bHQ6VW5pdF9vZl90aW1lLk5hbm9zZWNvbmRcbiAgICAgICAgaW5cbiAgICAgICAgc3BhbnMgfD4gTGlzdC5tYXAgfmY6KFNwYW4udG9fc3RyaW5nX2h1bSB+dW5pdF9vZl90aW1lIH5hbGlnbl9kZWNpbWFsOnRydWUpXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGdldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZV9mb3JldmVyID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwcCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V4cF9vZl90ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuIiwiKCogQSBzdWJzdHJpbmcgaXMgYSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuICBXZSB1c2UgYVxuICAgZnVuY3RvciBiZWNhdXNlIHdlIHdhbnQgc3Vic3RyaW5ncyBvZiBbc3RyaW5nXSBhbmQgW2JpZ3N0cmluZ10uXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nX2ludGZcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmcudFxuXG5tb2R1bGUgQmxpdCA9IHN0cnVjdFxuICB0eXBlICgnc3JjLCAnZHN0KSB0ID0gKCdzcmMsICdkc3QpIEJsaXQuYmxpdG9cblxuICBsZXQgc3RyaW5nX2J5dGVzIH5zcmMgP3NyY19wb3MgP3NyY19sZW4gfmRzdCA/KGRzdF9wb3MgPSAwKSAoKSA9XG4gICAgbGV0IHNyY19wb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zOnNyY19wb3NcbiAgICAgICAgP2xlbjpzcmNfbGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3JjKVxuICAgIGluXG4gICAgQnl0ZXMuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gIGxldCBzdHJpbmdfc3RyaW5nID0gc3RyaW5nX2J5dGVzXG4gIGxldCBieXRlc19ieXRlcyA9IEJ5dGVzLmJsaXRvXG4gIGxldCBzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvXG4gIGxldCBieXRlc19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX3N0cmluZyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2J5dGVzID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG5lbmRcblxuKCogV2UgY2FuJ3QgY2FsbCB0aGUgYmFzZSBtb2R1bGUgW0Jhc2VdIGJlY2F1c2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gd2FudHMgdG8gYWNjZXNzXG4gICB0aGUgW0Jhc2VdIGxpYnJhcnkgZGlyZWN0bHksIGFuZCB3ZSdkIGJlIHNoYWRvd2luZyBpdC4gKilcbm1vZHVsZSBGIChVbmRlcmx5aW5nIDogQmFzZSkgOiBTIHdpdGggdHlwZSBiYXNlID0gVW5kZXJseWluZy50ID0gc3RydWN0XG4gIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudFxuXG4gIHR5cGUgdCA9XG4gICAgeyBiYXNlIDogVW5kZXJseWluZy50XG4gICAgOyBwb3MgOiBpbnRcbiAgICA7IGxlbiA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAoKiBub3RlIHdlIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSBiZWxvdywgb25jZSB3ZSd2ZSBkZWZpbmVkXG4gICAgIFtjcmVhdGVdICopXG5cbiAgKCoge1tcbiAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQucG9zKTtcbiAgICAgICAgIGFzc2VydCAoMCA8PSB0Lmxlbik7XG4gICAgICAgICBhc3NlcnQgKHQucG9zICsgdC5sZW4gPD0gQmFzZS5sZW5ndGggdC5iYXNlKTtcbiAgICAgICA7OyBdfSAqKVxuXG4gIGxldCBiYXNlIHQgPSB0LmJhc2VcbiAgbGV0IHBvcyB0ID0gdC5wb3NcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5cbiAgbGV0IGlzX2VtcHR5IHQgPSBJbnQuZXF1YWwgdC5sZW4gMFxuXG4gIGxldCBiYXNlX29mX3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGJhc2Vfb2ZfYmlnc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlID9wb3MgP2xlbiBiYXNlID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3Bvc1xuICAgICAgICA/bGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFVuZGVybHlpbmcubGVuZ3RoIGJhc2UpXG4gICAgaW5cbiAgICB7IGJhc2U7IHBvczsgbGVuIH1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIGxldCBvcGVuIFF1aWNrY2hlY2suTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIGJhc2UgPSBVbmRlcmx5aW5nLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGluXG4gICAgbGV0IGJhc2VfbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSBpblxuICAgIGxldCViaW5kIGxlbiA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgYmFzZV9sZW4gaW5cbiAgICBsZXQlYmluZCBwb3MgPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChiYXNlX2xlbiAtIGxlbikgaW5cbiAgICByZXR1cm4gKGNyZWF0ZSB+cG9zIH5sZW4gYmFzZSlcbiAgOztcblxuICBsZXQgZ2V0X25vX2JvdW5kc19jaGVjayB0IGkgPSBVbmRlcmx5aW5nLmdldCAoYmFzZSB0KSAocG9zIHQgKyBpKVxuXG4gIGxldCBnZXQgdCBpID1cbiAgICBpZiBpID49IDAgJiYgaSA8IGxlbmd0aCB0XG4gICAgdGhlbiBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaVxuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIDs7XG5cbiAgbGV0IHN1YiA/cG9zID9sZW4gdCA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICBpblxuICAgIHsgYmFzZSA9IHQuYmFzZTsgcG9zID0gdC5wb3MgKyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXJnID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIG1vZHVsZSBFbHQgPSBDaGFyXG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgZ28gYWNjIGkgPSBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgYWNjIChnZXQgdCBpKSkgKGkgKyAxKSBpblxuICAgICAgZ28gaW5pdCAwXG4gICAgOztcblxuICAgIGxldCBpdGVyID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIChnZXQgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZGkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmluaXQgfmYgLT5cbiAgICAgICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9XG4gICAgICAgICAgICAgaWYgaSA+PSBsZW5ndGggdCB0aGVuIGFjYyBlbHNlIGdvIChmIGkgYWNjIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSkpIChpICsgMSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZ28gaW5pdCAwKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgaSAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmRcblxuICBtb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UwIChNYWtlX2FyZylcblxuICBsZXQgZm9sZCA9IEMuZm9sZFxuICBsZXQgaXRlciA9IEMuaXRlclxuICBsZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG4gIGxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbiAgKCogW0MudG9fbGlzdF0gaGFzIHRvIGNvbnN0cnVjdCB0aGVuIHJldmVyc2UgdGhlIGxpc3QgKilcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihnZXQgdClcbiAgbGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxuICBsZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG4gIGxldCBmaW5kID0gQy5maW5kXG4gIGxldCBleGlzdHMgPSBDLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxuICBsZXQgbWVtID0gQy5tZW1cbiAgbGV0IGNvdW50ID0gQy5jb3VudFxuICBsZXQgc3VtID0gQy5zdW1cbiAgbGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbiAgbGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbiAgbGV0IGZvbGRpID0gQy5mb2xkaVxuICBsZXQgaXRlcmkgPSBDLml0ZXJpXG4gIGxldCBleGlzdHNpID0gQy5leGlzdHNpXG4gIGxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbiAgbGV0IGNvdW50aSA9IEMuY291bnRpXG4gIGxldCBmaW5kaSA9IEMuZmluZGlcbiAgbGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5cbiAgbGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICAgIGlmIG4gPCAwXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgICBlbHNlIChcbiAgICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgICAgfCBfIC0+IG9uX2Vycm9yKVxuICA7O1xuXG4gIGxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9wcmVmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczpuXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3N1ZmZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxuICBsZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxuICBsZXQgYmxpdF90byAodHlwZSBhKSAoYmxpdCA6IChVbmRlcmx5aW5nLnQsIGEpIEJsaXQudCkgdCB+ZHN0IH5kc3RfcG9zID1cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF90b19zdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19ieXRlcyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuICBsZXQgYmxpdF9iYXNlID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRcblxuICBsZXQgYmxpdF9mcm9tIH5uYW1lICh0eXBlIGEpIChibGl0IDogKGEsIGJhc2UpIEJsaXQudCkgdCB+c3JjIH5zcmNfcG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IHQubGVuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwiU3Vic3RyaW5nLmJsaXRfZnJvbV8lcyBsZW4gPiBzdWJzdHJpbmcgbGVuZ3RoIDogJWQgPiAlZFwiXG4gICAgICAgIG5hbWVcbiAgICAgICAgbGVuXG4gICAgICAgIHQubGVuXG4gICAgICAgICgpO1xuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+c3JjX2xlbjpsZW4gfmRzdDp0LmJhc2UgfmRzdF9wb3M6dC5wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcInN0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZ1xuICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcImJpZ3N0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZ1xuICBsZXQgb2ZfYmFzZSBiYXNlID0geyBiYXNlOyBwb3MgPSAwOyBsZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIH1cbiAgbGV0IG9mX3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9zdHJpbmcgeClcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9iaWdzdHJpbmcgeClcblxuICBsZXQgbWFrZSAodHlwZSBhKSBjcmVhdGUgKGJsaXQgOiAoYmFzZSwgYSkgQmxpdC50KSB0ID1cbiAgICBsZXQgZHN0ID0gY3JlYXRlIHQubGVuIGluXG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zOjAgKCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZToobWFrZSBCeXRlcy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzIHgpXG4gIDs7XG5cbiAgbGV0IHRvX2JpZ3N0cmluZyA9IG1ha2UgQmlnc3RyaW5nLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG5cbiAgbGV0IGNvbmNhdF9nZW4gY3JlYXRlX2RzdCBibGl0X2RzdCB0cyA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gbGVuIHQgLT4gbGVuICsgbGVuZ3RoIHQpIGluXG4gICAgbGV0IGRzdCA9IGNyZWF0ZV9kc3QgbGVuIGluXG4gICAgaWdub3JlXG4gICAgICAoTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBkc3RfcG9zIHQgLT5cbiAgICAgICAgIGJsaXRfZHN0IHQgfmRzdCB+ZHN0X3BvcztcbiAgICAgICAgIGRzdF9wb3MgKyBsZW5ndGggdClcbiAgICAgICA6IGludCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IGNvbmNhdCB0cyA9IG9mX2Jhc2UgKGNvbmNhdF9nZW4gVW5kZXJseWluZy5jcmVhdGUgYmxpdF9iYXNlIHRzKVxuXG4gIGxldCBjb25jYXRfc3RyaW5nIHRzID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooY29uY2F0X2dlbiBCeXRlcy5jcmVhdGUgYmxpdF90b19zdHJpbmcgdHMpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF9iaWdzdHJpbmcgdHMgPSBjb25jYXRfZ2VuIEJpZ3N0cmluZy5jcmVhdGUgYmxpdF90b19iaWdzdHJpbmcgdHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBNYWtlX3N1YnN0cmluZy5TXG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQnl0ZXMudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJ5dGVzLmNyZWF0ZVxuICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQnl0ZXMuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJ5dGVzX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDYW1sLkFyZ1xuXG50eXBlIHQgPSBrZXkgKiBzcGVjICogZG9jXG5cbmxldCBzb3J0X2FuZF9hbGlnbiBsc3QgPVxuICBhbGlnbiAoQmFzZS5MaXN0LnNvcnQgbHN0IH5jb21wYXJlOihmdW4gKGEsIF8sIF8pIChiLCBfLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuOztcbiIsInR5cGUgdCA9XG4gIHwgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0hcbiAgfCBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcbiAgfCBDT01QX0NXT1JEXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBfb2ZdXG5cbmxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdClcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmcgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLlNcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5TdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gQ2FtbC5GaWxlbmFtZVxuXG4gIGxldCBjaGVja19zdWZmaXggPSBjaGVja19zdWZmaXhcbiAgbGV0IGNob3BfZXh0ZW5zaW9uID0gY2hvcF9leHRlbnNpb25cbiAgbGV0IGNob3Bfc3VmZml4ID0gY2hvcF9zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IGNob3Bfc3VmZml4X29wdFxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gaXNfaW1wbGljaXRcbiAgbGV0IGlzX3JlbGF0aXZlID0gaXNfcmVsYXRpdmVcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IHBhcmVudF9kaXJfbmFtZVxuICBsZXQgZGlyX3NlcCA9IGRpcl9zZXBcbiAgbGV0IHF1b3RlID0gcXVvdGVcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBnZXRfdGVtcF9kaXJfbmFtZSAoKVxuICBsZXQgZGlybmFtZSA9IGRpcm5hbWVcbiAgbGV0IGJhc2VuYW1lID0gYmFzZW5hbWVcbmVuZFxuXG5sZXQgaXNfYWJzb2x1dGUgcCA9IG5vdCAoaXNfcmVsYXRpdmUgcClcblxubGV0IGNvbmNhdCBwMSBwMiA9XG4gIGlmIFN0cmluZy5pc19lbXB0eSBwMVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLmNvbmNhdCBjYWxsZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IChzZWNvbmQgXFxcbiAgICAgICBhcmd1bWVudDogJXMpXCJcbiAgICAgIHAyXG4gICAgICAoKTtcbiAgbGV0IHJlYyBjb2xsYXBzZV90cmFpbGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoXCJcIiwgKFwiLlwiIHwgXCJcIikpIC0+IFwiXCJcbiAgICB8IFNvbWUgKHMsIChcIi5cIiB8IFwiXCIpKSAtPiBjb2xsYXBzZV90cmFpbGluZyBzXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IHNcbiAgaW5cbiAgbGV0IHJlYyBjb2xsYXBzZV9sZWFkaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lICgoXCIuXCIgfCBcIlwiKSwgcykgLT4gY29sbGFwc2VfbGVhZGluZyBzXG4gICAgfCBTb21lIF8gfCBOb25lIC0+IHNcbiAgaW5cbiAgY29sbGFwc2VfdHJhaWxpbmcgcDEgXiBcIi9cIiBeIGNvbGxhcHNlX2xlYWRpbmcgcDJcbjs7XG5cbmxldCB0b19hYnNvbHV0ZV9leG4gcCB+cmVsYXRpdmVfdG8gPVxuICBpZiBpc19yZWxhdGl2ZSByZWxhdGl2ZV90b1xuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLnRvX2Fic29sdXRlX2V4biBjYWxsZWQgd2l0aCBhIFtyZWxhdGl2ZV90b10gdGhhdCBpcyBhIHJlbGF0aXZlIHBhdGg6ICVzXCJcbiAgICAgIHJlbGF0aXZlX3RvXG4gICAgICAoKVxuICBlbHNlIGlmIGlzX2Fic29sdXRlIHBcbiAgdGhlbiBwXG4gIGVsc2UgY29uY2F0IHJlbGF0aXZlX3RvIHBcbjs7XG5cbmxldCBzcGxpdCBzID0gZGlybmFtZSBzLCBiYXNlbmFtZSBzXG5cbigqIFttYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemVdIGNvbWVzIGZyb20gZ2V0Y29uZiBfUE9TSVhfTkFNRV9NQVggLyAqKVxubGV0IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSA9IDI1NVxuXG5sZXQgaXNfcG9zaXhfcGF0aG5hbWVfY29tcG9uZW50IHMgPVxuICBsZXQgbW9kdWxlIFMgPSBTdHJpbmcgaW5cbiAgcyA8PiBcIi5cIlxuICAmJiBzIDw+IFwiLi5cIlxuICAmJiBJbnQuKDAgPCBTLmxlbmd0aCBzKVxuICAmJiBJbnQuKFMubGVuZ3RoIHMgPD0gbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplKVxuICAmJiAobm90IChTLmNvbnRhaW5zIHMgJy8nKSlcbiAgJiYgbm90IChTLmNvbnRhaW5zIHMgJ1xcMDAwJylcbjs7XG5cbmxldCByb290ID0gXCIvXCJcblxubGV0IHNwbGl0X2V4dGVuc2lvbiBmbiA9XG4gIGxldCBkaXIsIGZuID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy8nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgZm5cbiAgICB8IFNvbWUgKHBhdGgsIGZuKSAtPiBTb21lIHBhdGgsIGZuXG4gIGluXG4gIGxldCBmbiwgZXh0ID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy4nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gZm4sIE5vbmVcbiAgICB8IFNvbWUgKGJhc2VfZm4sIGV4dCkgLT4gYmFzZV9mbiwgU29tZSBleHRcbiAgaW5cbiAgbGV0IGZuID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgTm9uZSAtPiBmblxuICAgIHwgU29tZSBkaXIgLT4gZGlyIF4gXCIvXCIgXiBmblxuICBpblxuICBmbiwgZXh0XG47O1xuXG5sZXQgcGFydHMgZmlsZW5hbWUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGZpbGVuYW1lID1cbiAgICBtYXRjaCBzcGxpdCBmaWxlbmFtZSB3aXRoXG4gICAgfCAoXCIuXCIgYXMgYmFzZSksIFwiLlwiIC0+IGJhc2UgOjogYWNjXG4gICAgfCAoXCIvXCIgYXMgYmFzZSksIFwiL1wiIC0+IGJhc2UgOjogYWNjXG4gICAgfCByZXN0LCBkaXIgLT4gbG9vcCAoZGlyIDo6IGFjYykgcmVzdFxuICBpblxuICBsb29wIFtdIGZpbGVuYW1lXG47O1xuXG5sZXQgb2ZfcGFydHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiRmlsZW5hbWUub2ZfcGFydHM6IGVtcHR5IHBhcnRzIGxpc3RcIlxuICB8IHJvb3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpyb290IH5mOkNhbWwuRmlsZW5hbWUuY29uY2F0XG47O1xuXG5sZXQgcmVjIHNraXBfY29tbW9uX3ByZWZpeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIHdoZW4gU3RyaW5nLmVxdWFsIGgxIGgyIC0+IHNraXBfY29tbW9uX3ByZWZpeCB0MSB0MlxuICB8IF8gLT4gbDEsIGwyXG47O1xuXG5sZXQgb2ZfYWJzb2x1dGVfZXhuIGEgfnJlbGF0aXZlX3RvOmIgPVxuICBpZiBpc19yZWxhdGl2ZSBhXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfmZpcnN0X2FyZzooYSA6IHN0cmluZyldO1xuICBpZiBpc19yZWxhdGl2ZSBiXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IFt+cmVsYXRpdmVfdG9dIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfnJlbGF0aXZlX3RvOihiIDogc3RyaW5nKV07XG4gIGxldCBhX3BhcnRzID0gcGFydHMgYSBpblxuICBsZXQgYl9wYXJ0cyA9IHBhcnRzIGIgaW5cbiAgbGV0IGFfc3VmZml4LCBiX3N1ZmZpeCA9IHNraXBfY29tbW9uX3ByZWZpeCBhX3BhcnRzIGJfcGFydHMgaW5cbiAgbGV0IGdvX3VwID0gTGlzdC5tYXAgfmY6KGZ1biBfIC0+IHBhcmVudF9kaXJfbmFtZSkgYl9zdWZmaXggaW5cbiAgbWF0Y2ggZ29fdXAgQCBhX3N1ZmZpeCB3aXRoXG4gIHwgW10gLT4gY3VycmVudF9kaXJfbmFtZVxuICB8IHJlbHBhdGggLT4gb2ZfcGFydHMgcmVscGF0aFxuOztcblxubGV0IGFyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgY3JlYXRlX2FyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZV9mZCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHJlYWxwYXRoID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9kaXIgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiEgU3RhYmxlX2ludGVybmFsXG4gIG9wZW4hIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbiAgbW9kdWxlIEFub25zID0gc3RydWN0XG4gICAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHwgWmVyb1xuICAgICAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgICAgIHwgTWFueSBvZiB0XG4gICAgICAgICAgfCBNYXliZSBvZiB0XG4gICAgICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGExN2ZkMzRlYzIxM2U1MDhkYjQ1MGY2NDY5ZjdmZTk5IHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgaW52YXJpYW50IHQgPVxuICAgICAgICAgIEJhc2UuSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgWmVybyAtPiAoKVxuICAgICAgICAgICAgfCBPbmUgXyAtPiAoKVxuICAgICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJNYW55IFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1hbnkgdCAtPiBpbnZhcmlhbnQgdFxuICAgICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiTWF5YmUgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWF5YmUgdCAtPiBpbnZhcmlhbnQgdFxuICAgICAgICAgICAgfCBDb25jYXQgW10gfCBDb25jYXQgWyBfIF0gLT4gZmFpbHdpdGggXCJGbGF0dGVuIHplcm8gYW5kIG9uZS1lbGVtZW50IENvbmNhdFwiXG4gICAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLkxpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnRcbiAgICAgICAgICAgIHwgQWRfaG9jIF8gLT4gKCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgdCA9IFslb2Zfc2V4cDogdF0gc2V4cCBpblxuICAgICAgICAgIGludmFyaWFudCB0O1xuICAgICAgICAgIHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIHVzYWdlID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFplcm8gLT4gXCJcIlxuICAgICAgICAgIHwgT25lIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYW55IChPbmUgXyBhcyB0KSAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyVzIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1hbnkgdCAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyglcykgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1heWJlIHQgLT4gQmFzZS5QcmludGYuc3ByaW50ZiBcIlslc11cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoQmFzZS5MaXN0Lm1hcCB0cyB+Zjp1c2FnZSlcbiAgICAgICAgICB8IEFkX2hvYyB1c2FnZSAtPiB1c2FnZVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDA4MWQ5ZWMxNjc5MDNmOGY4YzQ5Y2JmOGUzZmIzYTY2IHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBiZDhkNmZiN2E2NjJkMmMwYjVlMGQyMDI2YzZkMmQyMSB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOGZhYWMxZThkOWRlYjBiYWFhNTZhYzhlYmY4NWI0OTggfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgdXNhZ2UgOiBzdHJpbmdcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3MgfSA9XG4gICAgICAgIHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9ucyA9IFVzYWdlIHVzYWdlOyBmbGFncyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9uczsgZmxhZ3MgfSA9XG4gICAgICAgIHsgc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZVxuICAgICAgICA7IHVzYWdlID1cbiAgICAgICAgICAgIChtYXRjaCBhbm9ucyB3aXRoXG4gICAgICAgICAgICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hcilcbiAgICAgICAgOyBmbGFnc1xuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QuU3RhYmxlLlYxLnQgTGF6eS5TdGFibGUuVjEudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IGEgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDJjYzNlZWI1OGQxMmQ4ZmU0NDAwMDA5ZTU5MmQ3ODI3IHx9XVxuICAgICAgOztcblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgICB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExhenkubWFwIHQuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mKSB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgdC5zdWJjb21tYW5kcyB+ZiB9XG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mcm9tX3ZhbCBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0ICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQpIDogJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZm9yY2Ugc3ViY29tbWFuZHMgfVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4ZWNfaW5mbyA9IHN0cnVjdFxuICAgIGxldCBhYnNfcGF0aCB+ZGlyIHBhdGggPVxuICAgICAgaWYgRmlsZW5hbWUuaXNfYWJzb2x1dGUgcGF0aCB0aGVuIHBhdGggZWxzZSBGaWxlbmFtZS5jb25jYXQgZGlyIHBhdGhcbiAgICA7O1xuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBjMGM4MjU2ZTkyMzhjZGQ4ZjJlYzFmODc4NWUwMmFlMCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBGbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b192MyB0IDogVjMudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MyAodCA6IFYzLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBGbi5jb21wb3NlIFYzLnRvX2xhdGVzdCB0b192M1xuICAgICAgbGV0IG9mX2xhdGVzdCA9IEZuLmNvbXBvc2Ugb2ZfdjMgVjMub2ZfbGF0ZXN0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyAoKiBbcGF0aF90b19leGVdIG11c3QgYmUgYWJzb2x1dGUuICopXG4gICAgICAgICAgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQgdG9fdjIgdCA6IFYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gXCIvXCJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YyICh0IDogVjIudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmNvbXBvc2UgVjIudG9fbGF0ZXN0IHRvX3YyXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uY29tcG9zZSBvZl92MiBWMi5vZl9sYXRlc3RcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNpYyBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudCAqIHRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDk4MTE1NGVmMzkxOTQzN2M2YzgyMjYxOTg4Mjg0MWQ0IHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50XG4gICAgICAgIHwgTGF6eSBvZiB0IExhenkuU3RhYmxlLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGQzYzM3NTU0OGYxYTQzYzU4YzcxZTgxNGMwNGJhMzZhIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNTk4ZDRiNDFlZjQzNWJjNjlhNDg4NmJkYmEwZjg2ODkgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYxLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDcwZDIwYjU0MzJmZmFiNzdhMzg1YjAyYjA0MDMxZDJlIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyB0b19sYXRlc3QgOiB0IC0+IE1vZGVsLnQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIChCYXNlX2luZm8uVjEudG9fbGF0ZXN0IGIpXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMS50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIChCYXNlX2luZm8uVjEub2ZfbGF0ZXN0IGIpXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMS5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFZlcnNpb25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBWMSBvZiBWMS50XG4gICAgICAgIHwgVjIgb2YgVjIudFxuICAgICAgICB8IFYzIG9mIFYzLnQgKCogYXZhaWxhYmxlIGF0IGxlYXN0IHNpbmNlIDIwMjAtMDQgKilcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cCwgdmFyaWFudHNdXG5cbiAgICAgICgqIEl0J3Mgb2theSB0byBjaGFuZ2UgdGhpcyBvbmUgaW4gcGxhY2UsIGFzIGxvbmcgYXMgd2Ugd2FpdCBsb25nIGVub3VnaCBiZWZvcmVcbiAgICAgICAgIGRyb3BwaW5nIHN1cHBvcnQgZm9yIG9sZCB2ZXJzaW9ucy4gKilcbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA3OTZmYmYwMDZkZWIyNTE1OTE3MTYzN2MyYTUxMGJmNCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBmdW5jdGlvblxuICAgICAgICB8IFYxIHQgLT4gVjEudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMiB0IC0+IFYyLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjMgdCAtPiBWMy50b19sYXRlc3QgdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB+dmVyc2lvbl90b191c2UgbGF0ZXN0ID1cbiAgICAgICAgbWF0Y2ggdmVyc2lvbl90b191c2Ugd2l0aFxuICAgICAgICB8IDEgLT4gVjEgKFYxLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMiAtPiBWMiAoVjIub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAzIC0+IFYzIChWMy5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IG90aGVyIC0+XG4gICAgICAgICAgU3RkX2ludGVybmFsLmZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJ1bnN1cHBvcnRlZCB2ZXJzaW9uX3RvX3VzZVwiXG4gICAgICAgICAgICBvdGhlclxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBpbnZhcmlhbnQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC5pbnZhcmlhbnRcbiAgICBsZXQgdXNhZ2UgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC51c2FnZVxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuTW9kZWwudCA9XG4gICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IG1heWJlX21pc3NpbmdfcHJlZml4ID0gXCJbXCJcbiAgbGV0IG1heWJlX21pc3Npbmdfc3VmZml4ID0gXCJdXCJcbiAgbGV0IG1heWJlX21vcmVfc3VmZml4ID0gXCIgLi4uXCJcblxuICBsZXQgdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lID1cbiAgICBsZXQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSA9IHQgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgaWYgYXRfbGVhc3Rfb25jZVxuICAgICAgdGhlbiBmbGFnX25hbWVcbiAgICAgIGVsc2UgU3RyaW5nLmNvbmNhdCBbIG1heWJlX21pc3NpbmdfcHJlZml4OyBmbGFnX25hbWU7IG1heWJlX21pc3Npbmdfc3VmZml4IF1cbiAgICBpblxuICAgIGlmIGF0X21vc3Rfb25jZSB0aGVuIGRlc2NyaXB0aW9uIGVsc2UgU3RyaW5nLmNvbmNhdCBbIGRlc2NyaXB0aW9uOyBtYXliZV9tb3JlX3N1ZmZpeCBdXG4gIDs7XG5cbiAgbGV0IG9mX2hlbHBfc3RyaW5nIG5hbWUgPVxuICAgIGxldCBhdF9tb3N0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IG5hbWUgfnN1ZmZpeDptYXliZV9tb3JlX3N1ZmZpeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIGxldCBhdF9sZWFzdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFN0cmluZy5jaG9wX3ByZWZpeCBuYW1lIH5wcmVmaXg6bWF5YmVfbWlzc2luZ19wcmVmaXhcbiAgICAgICAgfD4gT3B0aW9uLmJpbmQgfmY6KFN0cmluZy5jaG9wX3N1ZmZpeCB+c3VmZml4Om1heWJlX21pc3Npbmdfc3VmZml4KVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9LCBuYW1lXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwidG9faGVscF9zdHJpbmdcIiA9XG4gICAgbGV0IGZsYWdfbmFtZSA9IFwibmFtZVwiIGluXG4gICAgTGlzdC5pdGVyIFslYWxsOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgIGxldCBzID0gdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lIGluXG4gICAgICBwcmludF9zIFslbWVzc2FnZSBcIlwiIH5fOih0IDogdCkgc107XG4gICAgICBsZXQgdCcsIGZsYWdfbmFtZScgPSBvZl9oZWxwX3N0cmluZyBzIGluXG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gdCB0Jyk7XG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogc3RyaW5nXSBmbGFnX25hbWUgZmxhZ19uYW1lJykpO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJbbmFtZV0gLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwibmFtZSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgW25hbWVdKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIG5hbWUpIHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZsYWdfaW5mby5Nb2RlbC50ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGRvYyA6IHN0cmluZ1xuICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgcGFyc2VfbmFtZSB0ID1cbiAgICBsZXQgbnVtX29jY3VycmVuY2VzLCBmbGFnX25hbWUgPSBOdW1fb2NjdXJyZW5jZXMub2ZfaGVscF9zdHJpbmcgdC5uYW1lIGluXG4gICAgbWF0Y2ggU3RyaW5nLnNwbGl0IGZsYWdfbmFtZSB+b246JyAnIHdpdGhcbiAgICB8IFsgZmxhZ19uYW1lIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgZmFsc2UsIGZsYWdfbmFtZSlcbiAgICB8IFsgZmxhZ19uYW1lOyBfYXJnX2RvYyBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIHRydWUsIGZsYWdfbmFtZSlcbiAgICB8IF8gLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJVbmFibGUgdG8gcGFyc2VcIiBmbGFnX25hbWVdXG4gIDs7XG5cbiAgKCogVXNlcnMgYXJlIGxpa2VseSB0byBjYWxsIGFsbCB0aHJlZSBvZiB0aGVzZSBmdW5jdGlvbnMsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCByZS1wYXJzZVxuICAgICB0aGUgW25hbWVdIHNldmVyYWwgdGltZXMuIFdlIGRvbid0IGV4cGVjdCB1c2VycyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY2FyZSBhYm91dCB0aGVcbiAgICAgaW5lZmZpY2llbmN5LiAqKVxuICBsZXQgZmxhZ19uYW1lIHQgPSBwYXJzZV9uYW1lIHQgfD4gT3JfZXJyb3IubWFwIH5mOnRyZDNcbiAgbGV0IG51bV9vY2N1cnJlbmNlcyB0ID0gcGFyc2VfbmFtZSB0IHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3QzXG4gIGxldCByZXF1aXJlc19hcmcgdCA9IHBhcnNlX25hbWUgdCB8PiBPcl9lcnJvci5tYXAgfmY6c25kM1xuXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBcIlstaGVscF1cIiAtPiAtMVxuICAgIHwgXCJbLWhlbHBdXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLXZlcnNpb25dXCIgLT4gLTFcbiAgICB8IFwiWy12ZXJzaW9uXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy1idWlsZC1pbmZvXVwiIC0+IC0xXG4gICAgfCBcIlstYnVpbGQtaW5mb11cIiwgXyAtPiAxXG4gICAgfCBfLCBcImhlbHBcIiAtPiAtMVxuICAgIHwgXCJoZWxwXCIsIF8gLT4gMVxuICAgIHwgXywgXCJ2ZXJzaW9uXCIgLT4gLTFcbiAgICB8IFwidmVyc2lvblwiLCBfIC0+IDFcbiAgICB8IF8gLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2hlbHBfZGlzcGxheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBGbGFnX2luZm8udCBsaXN0XG5cbiAgbGV0IHNvcnQgdCA9XG4gICAgTGlzdC5zdGFibGVfc29ydCB0IH5jb21wYXJlOihmdW4gYSBiIC0+XG4gICAgICBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZSBhLkZsYWdfaW5mby5uYW1lIGIuRmxhZ19pbmZvLm5hbWUpXG4gIDs7XG5cbiAgbGV0IHdvcmRfd3JhcF9hbmRfc3RyaXAgdGV4dCB3aWR0aCA9XG4gICAgbGV0IGNodW5rcyA9IFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonXFxuJyBpblxuICAgIExpc3QuY29uY2F0X21hcCBjaHVua3MgfmY6KGZ1biB0ZXh0IC0+XG4gICAgICBsZXQgd29yZHMgPVxuICAgICAgICBTdHJpbmcuc3BsaXQgdGV4dCB+b246JyAnXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gd29yZCAtPiBub3QgKFN0cmluZy5pc19lbXB0eSB3b3JkKSlcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBMaXN0LmZvbGQgd29yZHMgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyB3b3JkIC0+XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKG1hdGNoIGFjYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFtdLCB3b3JkXG4gICAgICAgICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT5cbiAgICAgICAgICAgICAgICgqIGVmZmljaWVuY3kgaXMgbm90IGEgY29uY2VybiBmb3IgdGhlIHN0cmluZyBsZW5ndGhzIHdlIGV4cGVjdCAqKVxuICAgICAgICAgICAgICAgbGV0IGxpbmVfYW5kX3dvcmQgPSBsaW5lIF4gXCIgXCIgXiB3b3JkIGluXG4gICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGxpbmVfYW5kX3dvcmQgPD0gd2lkdGhcbiAgICAgICAgICAgICAgIHRoZW4gbGluZXMsIGxpbmVfYW5kX3dvcmRcbiAgICAgICAgICAgICAgIGVsc2UgbGluZSA6OiBsaW5lcywgd29yZCkpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+IExpc3QucmV2IChsaW5lIDo6IGxpbmVzKSlcbiAgOztcblxuICBtb2R1bGUgRGlzcGxheSA6IHNpZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbnVtX2NvbHMgPSA4MFxuICAgIGxldCBzcGFjZXNfc3RyaW5nIHdpZHRoID0gU3RyaW5nLm1ha2Ugd2lkdGggJyAnXG5cbiAgICBsZXQgcGFkX3NwYWNlc190b19zdWZmaXggeCB+d2lkdGggPVxuICAgICAgbGV0IHNsYWNrID0gd2lkdGggLSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICAgIHggXiBzcGFjZXNfc3RyaW5nIHNsYWNrXG4gICAgOztcblxuICAgIGxldCBpbmRlbnRhdGlvbiA9IFwiICBcIlxuICAgIGxldCBpbmRlbnRfYW5kX25ld2xpbmUgeCA9IExpc3QuY29uY2F0IFsgWyBpbmRlbnRhdGlvbiBdOyB4OyBbIFwiXFxuXCIgXSBdXG4gICAgbGV0IHNwYWNpbmdfZG90ID0gXCIuIFwiXG5cbiAgICBsZXQgZG90X2luZGVudGF0aW9uX29mZnNldCA9XG4gICAgICAyN1xuICAgIDs7XG5cbiAgICBsZXQgZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW4gPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfd2lkdGggPSBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtblxuICAgIGxldCBsaHNfcGFkX3dpZHRoID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3BhZCA9IHNwYWNlc19zdHJpbmcgbGhzX3BhZF93aWR0aFxuXG4gICAgbGV0IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlID1cbiAgICAgIExpc3QubWFwIH5mOihmdW4gdiAtPiBpbmRlbnRfYW5kX25ld2xpbmUgWyBsaHNfcGFkOyB2IF0pXG4gICAgOztcblxuICAgIGxldCByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgZG9jdW1lbnRhdGlvbiA9XG4gICAgICBsZXQgZmxhZ19vbl9pdHNfb3duX2xpbmUgPVxuICAgICAgICBsZXQgZmxhZ193aWR0aCA9XG4gICAgICAgICAgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbiArIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICBpblxuICAgICAgICBpZiBmbGFnX3dpZHRoID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIHNwYWNpbmdfZG90XG4gICAgICAgIHRoZW4gaW5kZW50X2FuZF9uZXdsaW5lIFsgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGxldCB3cmFwcGVkX2RvY3VtZW50YXRpb24gPVxuICAgICAgICB3b3JkX3dyYXBfYW5kX3N0cmlwXG4gICAgICAgICAgZG9jdW1lbnRhdGlvblxuICAgICAgICAgIChudW1fY29scyAtIGxoc193aWR0aCAtIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24pXG4gICAgICBpblxuICAgICAgbWF0Y2ggd3JhcHBlZF9kb2N1bWVudGF0aW9uIHdpdGhcbiAgICAgIHwgW10gLT4gWyBmbGFnX29uX2l0c19vd25fbGluZSBdXG4gICAgICB8IGRvY193cmFwcGVkX2ZpcnN0X2xpbmUgOjogZG9jX3dyYXBwZWRfcmVzdF9saW5lcyAtPlxuICAgICAgICBsZXQgd3JhcHBlZF9kb2NfbGluZXMgPSBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIGluXG4gICAgICAgIGxldCBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIHggPVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCB4XG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICA7IGRvY193cmFwcGVkX2ZpcnN0X2xpbmVcbiAgICAgICAgICAgIF1cbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZsYWdfb25faXRzX293bl9saW5lXG4gICAgICAgICAgOjogcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBcIlwiXG4gICAgICAgICAgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgTGlzdC5jb25jYXRfbWFwIHQgfmY6KGZ1biB0IC0+XG4gICAgICAgIGxldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID1cbiAgICAgICAgICBsZXQgZmxhZyA9IHQuRmxhZ19pbmZvLm5hbWUgaW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChmbGFnIDo6IHQuYWxpYXNlcylcbiAgICAgICAgaW5cbiAgICAgICAgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIHQuZG9jIHw+IExpc3QuY29uY2F0KVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IERpc3BsYXkudG9fc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1YmNvbW1hbmRcbiAgICB8IEZsYWdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1YmNvbW1hbmQgLT4gXCJzdWJjb21tYW5kXCJcbiAgICB8IEZsYWcgLT4gXCJmbGFnXCJcbiAgOztcbmVuZFxuXG5sZXQgbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgaXNfZGFzaCA9IENoYXIuZXF1YWwgJy0nIGluXG4gIGxldCBhbGlzdCA9XG4gICAgKCogbm8gcGFydGlhbCBtYXRjaGVzIHVubGVzcyBzb21lIG5vbi1kYXNoIGNoYXIgaXMgcHJlc2VudCAqKVxuICAgIGlmIFN0cmluZy5mb3JfYWxsIHByZWZpeCB+Zjppc19kYXNoXG4gICAgdGhlbiBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIChkYXRhLCBfKSkgLT4ga2V5LCAoZGF0YSwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpKVxuICAgIGVsc2UgYWxpc3RcbiAgaW5cbiAgbWF0Y2hcbiAgICBMaXN0LmZpbHRlciBhbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgIHwga2V5LCAoXywgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4XG4gICAgICB8IGtleSwgKF8sIGBQcmVmaXgpIC0+IFN0cmluZy5pc19wcmVmaXgga2V5IH5wcmVmaXgpXG4gIHdpdGhcbiAgfCBbIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIF0gLT4gT2sgKGtleSwgZGF0YSlcbiAgfCBbXSAtPiBFcnJvciAoc3ByaW50ZiAhXCJ1bmtub3duICV7S2V5X3R5cGV9ICVzXCIga2V5X3R5cGUgcHJlZml4KVxuICB8IG1hdGNoZXMgLT5cbiAgICAobWF0Y2ggTGlzdC5maW5kIG1hdGNoZXMgfmY6KGZ1biAoa2V5LCBfKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeCkgd2l0aFxuICAgICB8IFNvbWUgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgLT4gT2sgKGtleSwgZGF0YSlcbiAgICAgfCBOb25lIC0+XG4gICAgICAgbGV0IG1hdGNoaW5nX2tleXMgPSBMaXN0Lm1hcCB+Zjpmc3QgbWF0Y2hlcyBpblxuICAgICAgIEVycm9yXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIVwiJXtLZXlfdHlwZX0gJXMgaXMgYW4gYW1iaWd1b3VzIHByZWZpeDogJXNcIlxuICAgICAgICAgICAga2V5X3R5cGVcbiAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgbWF0Y2hpbmdfa2V5cykpKVxuOztcblxubW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQmFzZV9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgYW5vbnMgOiBBbm9ucy50XG4gICAgOyBmbGFncyA6IEZsYWdfaW5mby50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBmaW5kX2ZsYWcgdCBwcmVmaXggPVxuICAgIG1hdGNoIFN0cmluZy5pc19wcmVmaXggcHJlZml4IH5wcmVmaXg6XCItXCIgd2l0aFxuICAgIHwgZmFsc2UgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJGbGFncyBtdXN0IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XVxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY2hvaWNlcyA9XG4gICAgICAgIExpc3QubWFwIHQuZmxhZ3MgfmY6KGZ1biAoZmxhZ19pbmZvIDogRmxhZ19pbmZvLnQpIC0+XG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgZmxhZ19uYW1lID0gRmxhZ19pbmZvLmZsYWdfbmFtZSBmbGFnX2luZm8gaW5cbiAgICAgICAgICBPa1xuICAgICAgICAgICAgKExpc3QubWFwIChmbGFnX25hbWUgOjogZmxhZ19pbmZvLmFsaWFzZXMpIH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgICAgICBrZXksIChmbGFnX2luZm8sIGBQcmVmaXgpKSkpXG4gICAgICAgIHw+IE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCAoTGlzdC5jb25jYXQgY2hvaWNlcykgcHJlZml4IEZsYWdcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdldF91c2FnZSB0ID1cbiAgICBtYXRjaCB0LmFub25zIHdpdGhcbiAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gU3RhYmxlLkFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hclxuICA7O1xuZW5kXG5cbm1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QudCBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBmaW5kX3N1YmNvbW1hbmQgdCBwcmVmaXggPVxuICAgIG1hdGNoIFN0cmluZy5pc19wcmVmaXggcHJlZml4IH5wcmVmaXg6XCItXCIgd2l0aFxuICAgIHwgdHJ1ZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIlN1YmNvbW1hbmRzIG11c3Qgbm90IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgKGZvcmNlIHQuc3ViY29tbWFuZHMpIH5mOihmdW4gKGtleSwgYSkgLT4ga2V5LCAoYSwgYFByZWZpeCkpXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCBjaG9pY2VzIHByZWZpeCBTdWJjb21tYW5kXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBtYXAgPSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC5tYXBcbmVuZFxuXG5tb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5FeGVjX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5lbmRcblxubW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRnVsbHlfZm9yY2VkLk1vZGVsLnQgPVxuICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IGV4cGFuZGVkX3N1YmNvbW1hbmRzIHQgPVxuICAgIGxldCByZWMgZXhwYW5kID0gZnVuY3Rpb25cbiAgICAgIHwgRXhlYyAoXywgdCkgLT4gZXhwYW5kIHRcbiAgICAgIHwgQmFzaWMgXyAtPiBbIFtdIF1cbiAgICAgIHwgR3JvdXAgeyBzdWJjb21tYW5kczsgXyB9IC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCAoTGF6eS5mb3JjZSBzdWJjb21tYW5kcykgfmY6KGZ1biAobmFtZSwgdCkgLT5cbiAgICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHBhdGggLT4gbmFtZSA6OiBwYXRoKSAoZXhwYW5kIHQpKVxuICAgIGluXG4gICAgKCogUmV2ZXJzaW5nIHNvIHRoYXQgdGhlIGNvbW1hbmRzIHNob3cgdXAgaW4gdGhlIHNhbWUgb3JkZXIgYXMgaGVscCBpcyBvdXRwdXQgKilcbiAgICBMaXN0LnJldiAoZXhwYW5kIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5TZXhwYWJsZS5Nb2RlbC50ID1cbiAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50XG4gICAgfCBMYXp5IG9mIHQgTGF6eS50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGV4dHJhY3Rpb25fdmFyID0gQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcblxuICBtb2R1bGUgVmVyc2lvbmVkID0gU3RhYmxlLlNleHBhYmxlLlZlcnNpb25lZFxuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIGxldCBmIGkgc3VwcG9ydGVkIF8gPSBTZXQuYWRkIHN1cHBvcnRlZCBpIGluXG4gICAgVmVyc2lvbmVkLlZhcmlhbnRzLmZvbGQgfmluaXQ6KFNldC5lbXB0eSAobW9kdWxlIEludCkpIH52MTooZiAxKSB+djI6KGYgMikgfnYzOihmIDMpXG4gIDs7XG5cbiAgbGV0IG9mX3ZlcnNpb25lZCA9IFZlcnNpb25lZC50b19sYXRlc3RcbiAgbGV0IHRvX3ZlcnNpb25lZCB0IH52ZXJzaW9uX3RvX3VzZSA9IFZlcnNpb25lZC5vZl9sYXRlc3QgdCB+dmVyc2lvbl90b191c2VcbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogKHVuaXQgLT4gdClcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgZnVsbHlfZm9yY2VkIDogdCAtPiBGdWxseV9mb3JjZWQudCA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBCYXNpYyBiXG4gIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5tYXAgZyB+ZjpmdWxseV9mb3JjZWQpXG4gIHwgRXhlYyAoZSwgZikgLT4gRXhlYyAoZSwgZnVsbHlfZm9yY2VkIChmICgpKSlcbiAgfCBMYXp5IHRodW5rIC0+IGZ1bGx5X2ZvcmNlZCAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCByZWMgZ2V0X3N1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gYi5zdW1tYXJ5XG4gIHwgR3JvdXAgZyAtPiBnLnN1bW1hcnlcbiAgfCBFeGVjIChlLCBfKSAtPiBlLnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IGdldF9zdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IGhlbHBfdGV4dCA9IGBVc2VfQ29tbWFuZF91bml4XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBLZXlfdHlwZSA9IEtleV90eXBlXG5cbiAgbGV0IGFic19wYXRoID0gU3RhYmxlLkV4ZWNfaW5mby5hYnNfcGF0aFxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlXG4gIGxldCB3b3JkX3dyYXAgPSBGbGFnX2hlbHBfZGlzcGxheS53b3JkX3dyYXBfYW5kX3N0cmlwXG4gIGxldCBsb29rdXBfZXhwYW5kID0gbG9va3VwX2V4cGFuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFNlcmlhbGl6YWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nICogaW50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBob3N0IDogU3RyaW5nLnRcbiAgICAgICAgOyBwb3J0IDogSW50LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zZXJpYWxpemFibGUgeyBob3N0OyBwb3J0IH0gPSBob3N0LCBwb3J0XG4gICAgICBsZXQgb2Zfc2VyaWFsaXphYmxlIChob3N0LCBwb3J0KSA9IHsgaG9zdDsgcG9ydCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IFwic3RhYmxlXCIgPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBTZXJpYWxpemFibGUudF07XG4gICAgICAgIFslZXhwZWN0XG4gICAgICAgICAge3xcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwXG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBvcGVuISBJbXBvcnRcbiAgICAgIG9wZW4hIFN0ZF9pbnRlcm5hbFxuICAgICAgb3BlbiEgVDBcblxuICAgICAgbGV0IHRvX3N0cmluZyB7IGhvc3Q7IHBvcnQgfSA9IHNwcmludGYgXCIlczolZFwiIGhvc3QgcG9ydFxuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhvc3Q7IHBvcnQgXSAtPlxuICAgICAgICAgIGxldCBwb3J0ID1cbiAgICAgICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIHBvcnQgd2l0aFxuICAgICAgICAgICAgfCBfZXhuIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiBiYWQgcG9ydDogJXNcIiBzICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB7IGhvc3Q7IHBvcnQgfVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6ICVzXCIgcyAoKVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cC5BdG9tIHMgYXMgc2V4cCAtPlxuICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IEZhaWx1cmUgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHApXG4gICAgICAgIHwgc2V4cCAtPiB0X29mX3NleHAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuXG4gICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgVW5pb25cbiAgICAgICAgICAgICAgICBbICgqIGhhbmRsZXMgdGhlIGhvc3Q6cG9ydCBzdHJpbmcgY2FzZSAqKVxuICAgICAgICAgICAgICAgICAgU3RyaW5nXG4gICAgICAgICAgICAgICAgICA7ICgqIGhhbmRsZXMgdGhlIGxpc3QgKGhvc3QgcG9ydCkgY2FzZSAgKilcbiAgICAgICAgICAgICAgICAgIExpc3QgKENvbnMgKFN0cmluZywgQ29ucyAoSW50ZWdlciwgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQxKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRfb2Zfc2V4cFwiID1cbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8KGxvY2FsaG9zdCA4MDgwKXx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9O1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3xsb2NhbGhvc3Q6ODA4MHx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9XG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHJvdW5kdHJpcFwiID1cbiAgICAgIFF1aWNrY2hlY2sudGVzdCBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgICAgWyV0ZXN0X3Jlc3VsdDogdF0gKHRfb2Zfc2V4cCAoc2V4cF9vZl90IHQpKSB+ZXhwZWN0OnQpXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbmluY2x1ZGUgTGF0ZXN0XG5cbmxldCBjcmVhdGUgfmhvc3QgfnBvcnQgPSB7IGhvc3Q7IHBvcnQgfVxubGV0IGhvc3QgdCA9IHQuaG9zdFxubGV0IHBvcnQgdCA9IHQucG9ydFxubGV0IHR1cGxlIHQgPSB0b19zZXJpYWxpemFibGUgdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5Ib3N0X2FuZF9wb3J0XCJcbiAgZW5kKVxuXG5pbmNsdWRlIChIYXNoYWJsZS5NYWtlX2JpbmFibGUgKExhdGVzdCkgOiBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoTGF0ZXN0KVxuXG5sZXQgdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiSG9zdF9hbmRfcG9ydFwiIHNleHBfb2ZfdFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb250YWluZXJzID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGV4Y2VwdGlvbiBQaWRfbXVzdF9iZV9wb3NpdGl2ZSBvZiBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGVuc3VyZSBpID0gaWYgaSA8PSAwIHRoZW4gcmFpc2UgKFBpZF9tdXN0X2JlX3Bvc2l0aXZlIGkpIGVsc2UgaVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSBGbi5pZFxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFdpdGhvdXRfY29udGFpbmVycylcbiAgICBpbmNsdWRlIFdpdGhvdXRfY29udGFpbmVyc1xuICBlbmRcblxuICBtb2R1bGUgTGF0ZXN0ID0gVjFcbmVuZFxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhYmxlLkxhdGVzdC5XaXRob3V0X2NvbnRhaW5lcnNcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2hdXG5cbmxldCBvZl9pbnQgaSA9IGVuc3VyZSBpXG5sZXQgdG9faW50ID0gRm4uaWRcbmxldCBvZl9zdHJpbmcgc3RyaW5nID0gZW5zdXJlIChJbnQub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG5sZXQgaW5pdCA9IG9mX2ludCAxXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuUGlkXCJcbiAgZW5kKVxuIiwiKCoqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHBvbHltb3JwaGljIGZ1bmN0aW9uYWwgZG91YmxlLWVuZGVkIHF1ZXVlLiAqKVxuXG4oKiogSW52YXJpYW50czpcbiAgICAtIHF1ZXVlLmxlbmd0aCA9IExpc3QubGVuZ3RoIHF1ZXVlLmZyb250ICsgTGlzdC5sZW5ndGggcXVldWUuYmFja1xuICAgIC0gaWYgcXVldWUgaGFzID49IDIgZWxlbWVudHMsIG5laXRoZXIgZnJvbnQgbm9yIGJhY2sgYXJlIGVtcHR5XG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmV4Y2VwdGlvbiBFbXB0eSBbQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlICdhIHQgPVxuICB7IGZyb250IDogJ2EgbGlzdFxuICA7IGJhY2sgOiAnYSBsaXN0XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgZiB0ID1cbiAgbGV0IG5fZnJvbnQgPSBMaXN0Lmxlbmd0aCB0LmZyb250IGluXG4gIGxldCBuX2JhY2sgPSBMaXN0Lmxlbmd0aCB0LmJhY2sgaW5cbiAgYXNzZXJ0ICh0Lmxlbmd0aCA9IG5fZnJvbnQgKyBuX2JhY2spO1xuICBhc3NlcnQgKHQubGVuZ3RoIDwgMiB8fCAobl9mcm9udCA8PiAwICYmIG5fYmFjayA8PiAwKSk7XG4gIExpc3QuaXRlciB0LmZyb250IH5mO1xuICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG47O1xuXG5sZXQgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjayA9XG4gIG1hdGNoIGZyb250LCBiYWNrIHdpdGhcbiAgfCBbXSwgW10gfCBbIF8gXSwgW10gfCBbXSwgWyBfIF0gfCBfIDo6IF8sIF8gOjogXyAtPiB7IGZyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IFtdLCBfIDo6IF8gOjogXyAtPlxuICAgIGxldCBiYWNrLCByZXZfZnJvbnQgPSBMaXN0LnNwbGl0X24gYmFjayAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250ID0gTGlzdC5yZXYgcmV2X2Zyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IF8gOjogXyA6OiBfLCBbXSAtPlxuICAgIGxldCBmcm9udCwgcmV2X2JhY2sgPSBMaXN0LnNwbGl0X24gZnJvbnQgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udDsgYmFjayA9IExpc3QucmV2IHJldl9iYWNrOyBsZW5ndGggfVxuOztcblxubGV0IGVtcHR5ID0geyBmcm9udCA9IFtdOyBiYWNrID0gW107IGxlbmd0aCA9IDAgfVxubGV0IGVucXVldWVfZnJvbnQgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5mcm9udDooeCA6OiB0LmZyb250KSB+YmFjazp0LmJhY2tcbmxldCBlbnF1ZXVlX2JhY2sgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5iYWNrOih4IDo6IHQuYmFjaykgfmZyb250OnQuZnJvbnRcblxubGV0W0Bjb2xkXSByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8ZnJvbnR8ID0gMCwgfGJhY2t8ID49IDJcIl1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8YmFja3wgPSAwLCB8ZnJvbnR8ID49IDJcIl1cbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5mcm9udDp4cyB+YmFjazp0LmJhY2tcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+YmFjazp4cyB+ZnJvbnQ6dC5mcm9udFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gcGVla19mcm9udF9leG4gdCwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFja19leG4gdCA9IHBlZWtfYmFja19leG4gdCwgZHJvcF9iYWNrX2V4biB0XG5cbmxldCBvcHRpb25hbCBmIHQgPVxuICBtYXRjaCBmIHQgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIEVtcHR5IC0+IE5vbmVcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBvcHRpb25hbCBwZWVrX2Zyb250X2V4biB0XG5sZXQgcGVla19iYWNrIHQgPSBvcHRpb25hbCBwZWVrX2JhY2tfZXhuIHRcbmxldCBkcm9wX2Zyb250IHQgPSBvcHRpb25hbCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZHJvcF9iYWNrIHQgPSBvcHRpb25hbCBkcm9wX2JhY2tfZXhuIHRcbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBvcHRpb25hbCBkZXF1ZXVlX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBvcHRpb25hbCBkZXF1ZXVlX2JhY2tfZXhuIHRcblxubGV0IGVucXVldWUgdCBzaWRlIHggPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB4XG47O1xuXG5sZXQgcGVlayB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbjs7XG5cbmxldCBwZWVrX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFja19leG4gdFxuOztcblxubGV0IGRyb3AgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgcmV2IHQgPSB7IHQgd2l0aCBmcm9udCA9IHQuYmFjazsgYmFjayA9IHQuZnJvbnQgfVxuXG5tb2R1bGUgQXJiaXRyYXJ5X29yZGVyID0gc3RydWN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2X2FwcGVuZCB0LmZyb250IHQuYmFja1xuICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdClcbiAgbGV0IHRvX3NlcXVlbmNlIHQgPSBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKVxuXG4gIGxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gICAgbGV0IG9wZW4gTSBpblxuICAgIExpc3Quc3VtIChtb2R1bGUgTSkgdC5mcm9udCB+ZiArIExpc3Quc3VtIChtb2R1bGUgTSkgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50IHQuZnJvbnQgfmYgKyBMaXN0LmNvdW50IHQuYmFjayB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIHQuZnJvbnQgfmYgJiYgTGlzdC5mb3JfYWxsIHQuYmFjayB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyB0LmZyb250IH5mIHx8IExpc3QuZXhpc3RzIHQuYmFjayB+ZlxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgdC5mcm9udCB4IHx8IExpc3QubWVtIH5lcXVhbCB0LmJhY2sgeFxuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIExpc3QuaXRlciB0LmZyb250IH5mO1xuICAgIExpc3QuaXRlciB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICBMaXN0LmZvbGQgdC5mcm9udCB+aW5pdCB+ZiB8PiBmdW4gaW5pdCAtPiBMaXN0LmZvbGQgdC5iYWNrIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZF9tYXAgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZF9tYXAgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1heF9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5tYXhfZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPj0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWluX2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1pbl9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA8PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfY29udGFpbmVyIChGIDogc2lnXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgPSBGLnRvX2xpc3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgKHRvX2xpc3QgdCkgeFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKHRvX2xpc3QgdCkgfmluaXQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBMaXN0LnN1bSBtICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwICh0b19saXN0IHQpIH5mXG4gIGxldCB0b19hcnJheSB0ID0gTGlzdC50b19hcnJheSAodG9fbGlzdCB0KVxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gTGlzdC5taW5fZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1heF9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuZW5kXG5cbm1vZHVsZSBGcm9udF90b19iYWNrID0gc3RydWN0XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5mcm9udDpsaXN0IH5iYWNrOltdXG4gIGxldCB0b19saXN0IHQgPSB0LmZyb250IEAgTGlzdC5yZXYgdC5iYWNrXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5iYWNrKSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGJhY2sgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udDpbXSB+YmFja1xuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBCYWNrX3RvX2Zyb250ID0gc3RydWN0XG4gIGxldCB0b19saXN0IHQgPSB0LmJhY2sgQCBMaXN0LnJldiB0LmZyb250XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5iYWNrOmxpc3QgfmZyb250OltdXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmZyb250KSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGZyb250ID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2s6W11cbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIEZyb250X3RvX2JhY2tcblxubGV0IHNpbmdsZXRvbiB4ID0gb2ZfbGlzdCBbIHggXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgZWx0IC0+IGZvbGQgKGYgZWx0KSB+aW5pdDp0IH5mOmVucXVldWVfYmFjaylcbiAgICA7O1xuXG4gICAgbGV0IHJldHVybiA9IHNpbmdsZXRvblxuXG4gICAgbGV0IG1hcCA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICB7IGZyb250ID0gTGlzdC5tYXAgdC5mcm9udCB+ZjsgYmFjayA9IExpc3QubWFwIHQuYmFjayB+ZjsgbGVuZ3RoID0gdC5sZW5ndGggfSlcbiAgICA7O1xuICBlbmQpXG5cbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9IExpc3QuY29tcGFyZSBjbXAgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxubGV0IGVxdWFsIGVxIHQxIHQyID0gTGlzdC5lcXVhbCBlcSAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5cbmxldCBoYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfYSBzdGF0ZSB0ID1cbiAgZm9sZCB+ZjpoYXNoX2ZvbGRfYSB+aW5pdDooWyVoYXNoX2ZvbGQ6IGludF0gc3RhdGUgKGxlbmd0aCB0KSkgdFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gWyVzZXhwX29mOiBlbHQgbGlzdF0gKHRvX2xpc3QgdClcbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChbJW9mX3NleHA6IGVsdCBsaXN0XSBzZXhwKVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IExpc3QudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgbWFwID0gbWFwXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODNmOTY5ODItNDk5Mi0xMWU2LTkxOWQtZmJkZGNmZGNhNTc2XCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5GZGVxdWVcIlxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcblxuICAgICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgbmV4dCBhY2MgbiA9XG4gICAgICAgICAgICBpZiBsZW4gPSBuXG4gICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGFzc2VydCAobiA9IGxlbmd0aCBhY2MpO1xuICAgICAgICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgICAgICAgbG9vcCBuZXh0IChlbnF1ZXVlX2JhY2sgYWNjIHgpIChuICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIG5leHQgZW1wdHkgMFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJ1aWxkIH5mcm9udCB+YmFjayA9XG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGZyb250ICsgTGlzdC5sZW5ndGggYmFjayBpblxuICAgIGxldCB0ID0geyBsZW5ndGg7IGZyb250OyBiYWNrIH0gaW5cbiAgICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gICAgdFxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRmRlcXVlXG5cbmxldCBlbnF1ZXVlID0gZW5xdWV1ZV9iYWNrXG5sZXQgcGVla19leG4gPSBwZWVrX2Zyb250X2V4blxubGV0IHBlZWsgPSBwZWVrX2Zyb250XG5sZXQgZGVxdWV1ZV9leG4gPSBkZXF1ZXVlX2Zyb250X2V4blxubGV0IGRlcXVldWUgPSBkZXF1ZXVlX2Zyb250XG5sZXQgZHJvcF9leG4gPSBkcm9wX2Zyb250X2V4blxubGV0IHRvX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay50b19zZXF1ZW5jZVxubGV0IG9mX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay5vZl9zZXF1ZW5jZVxuXG4oKiBEZXByZWNhdGVkIGFsaWFzZXMgKilcbmxldCB0b3AgPSBwZWVrXG5sZXQgdG9wX2V4biA9IHBlZWtfZXhuXG5sZXQgZGlzY2FyZF9leG4gPSBkcm9wX2V4blxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIG9wdGlvblxuICAgICAgOyBtdXRhYmxlIHNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb24gcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgICAgbGV0IG9mX2Zvcm1hdCAodjEgOiAnYSBGb3JtYXQudCkgOiAnYSB0ID0geyB2YWx1ZSA9ICF2MTsgc2V0X2F0ID0gWyVoZXJlXSB9XG4gICAgICBsZXQgdG9fZm9ybWF0ICh0IDogJ2EgdCkgOiAnYSBGb3JtYXQudCA9IHJlZiB0LnZhbHVlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGb3JtYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZVxuICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgICAgIChGb3JtYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFVuc3RhYmxlID0gU3RhYmxlLlYxXG5vcGVuIFN0YWJsZS5UXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5ULnRcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgeyB2YWx1ZTsgc2V0X2F0IH0gPVxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiBbJW1lc3NhZ2UgXCJ1bnNldFwiXVxuICB8IFNvbWUgdmFsdWUgLT5cbiAgICBbJW1lc3NhZ2UgXCJcIiAodmFsdWUgOiBhKSB+c2V0X2F0OihzZXRfYXQgfD4gU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nKV1cbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBOb25lOyBzZXRfYXQgPSBbJWhlcmVdIH1cblxubGV0IHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWUgPVxuICB0LnZhbHVlIDwtIFNvbWUgdmFsdWU7XG4gIHQuc2V0X2F0IDwtIGhlcmVcbjs7XG5cbmxldCBzZXRfaWZfbm9uZSB0IGhlcmUgdmFsdWUgPSBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlIHRoZW4gc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZVxuXG5sZXQgc2V0IHQgaGVyZSB2YWx1ZSA9XG4gIGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWVcbiAgdGhlbiAoXG4gICAgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZTtcbiAgICBPayAoKSlcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTZXRfb25jZS5zZXRfZXhuXSBhbHJlYWR5IHNldFwiXG4gICAgICAgICAgfnNldHRpbmdfYXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgICAgIH5wcmV2aW91c2x5X3NldF9hdDoodC5zZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaGVyZSB2YWx1ZSA9IE9yX2Vycm9yLm9rX2V4biAoc2V0IHQgaGVyZSB2YWx1ZSlcbmxldCBnZXQgdCA9IHQudmFsdWVcblxubGV0IGdldF9leG4gKHQgOiBfIHQpIGhlcmUgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBTb21lIGEgLT4gYVxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIltTZXRfb25jZS5nZXRfZXhuXSB1bnNldFwiIH5hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGlzX25vbmUgdCA9IE9wdGlvbi5pc19ub25lIHQudmFsdWVcbmxldCBpc19zb21lIHQgPSBPcHRpb24uaXNfc29tZSB0LnZhbHVlXG5sZXQgaXRlciB0IH5mID0gT3B0aW9uLml0ZXIgdC52YWx1ZSB+ZlxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlIHQgPSBnZXRfZXhuIHQgWyVoZXJlXVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU2hhcGUgPSBDb21tYW5kX3NoYXBlLlN0YWJsZVxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIENvbW1hbmRfaW50ZlxubW9kdWxlIFNoYXBlID0gQ29tbWFuZF9zaGFwZVxuXG4oKiBpbiBvcmRlciB0byBkZWZpbmUgZXhwZWN0IHRlc3RzLCB3ZSB3YW50IHRvIHJhaXNlIHJhdGhlciB0aGFuIGV4aXQgaWYgdGhlIGNvZGUgaXNcbiAgIHJ1bm5pbmcgaW4gdGhlIHRlc3QgcnVubmVyIHByb2Nlc3MgKilcbmxldCByYWlzZV9pbnN0ZWFkX29mX2V4aXQgPVxuICBtYXRjaCBQcHhfaW5saW5lX3Rlc3RfbGliLlJ1bnRpbWUudGVzdGluZyB3aXRoXG4gIHwgYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyIC0+IHRydWVcbiAgfCBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXIgfCBgTm90X3Rlc3RpbmcgLT4gZmFsc2Vcbjs7XG5cbmV4Y2VwdGlvbiBFeGl0X2NhbGxlZCBvZiB7IHN0YXR1cyA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIFtyYWlzZV9pbnN0ZWFkX29mX2V4aXRdLXJlc3BlY3Rpbmcgd3JhcHBlcnMgZm9yIFtleGl0XSBhbmQgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgbGV0IGV4aXQgc3RhdHVzID1cbiAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXQgdGhlbiByYWlzZSAoRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSkgZWxzZSBleGl0IHN0YXR1c1xuICA7O1xuXG4gIG1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgICBsZXQgdG9fc3RyaW5nID0gRXhuLnRvX3N0cmluZ1xuXG4gICAgbGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID1cbiAgICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBmICgpIHdpdGhcbiAgICAgICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyA9IDAgfSBhcyBleG4gLT4gcHJpbnRfcyBbJXNleHAgKGV4biA6IGV4bildKVxuICAgICAgZWxzZSBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgdW53b3JkcyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB4c1xubGV0IHVucGFyYWdyYXBocyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblxcblwiIHhzXG5cbmV4Y2VwdGlvbiBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG9mIHN0cmluZ1xuXG5sZXQgZGllIGZtdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAoKSAtPiByYWlzZSAoRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cpKSBmbXRcbmxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gU2hhcGUuUHJpdmF0ZS5oZWxwX3NjcmVlbl9jb21wYXJlXG5cbigqIHVuaXZlcnNhbCBtYXBzIGFyZSB1c2VkIHRvIHBhc3MgYXJvdW5kIHZhbHVlcyBiZXR3ZWVuIGRpZmZlcmVudCBiaXRzXG4gICBvZiBjb21tYW5kIGxpbmUgcGFyc2luZyBjb2RlIHdpdGhvdXQgaGF2aW5nIGEgaHVnZSBpbXBhY3Qgb24gdGhlXG4gICB0eXBlcyBpbnZvbHZlZFxuXG4gICAxLiBwYXNzaW5nIHZhbHVlcyBmcm9tIHBhcnNlZCBhcmdzIHRvIGNvbW1hbmQtbGluZSBhdXRvY29tcGxldGUgZnVuY3Rpb25zXG4gICAyLiBwYXNzaW5nIHNwZWNpYWwgdmFsdWVzIHRvIGEgYmFzZSBjb21tYW5kcyB0aGF0IHJlcXVlc3QgdGhlbSBpbiB0aGVpciBzcGVjXG4gKiBleHBhbmRlZCBzdWJjb21tYW5kIHBhdGhcbiAqIGFyZ3MgcGFzc2VkIHRvIHRoZSBiYXNlIGNvbW1hbmRcbiAqIGhlbHAgdGV4dCBmb3IgdGhlIGJhc2UgY29tbWFuZFxuKilcbm1vZHVsZSBFbnYgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbml2X21hcFxuXG4gIGxldCBrZXlfY3JlYXRlIG5hbWUgPSBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lIHNleHBfb2Zfb3BhcXVlXG4gIGxldCBtdWx0aV9hZGQgPSBVbml2X21hcC5NdWx0aS5hZGRcbiAgbGV0IHNldF93aXRoX2RlZmF1bHQgPSBVbml2X21hcC5XaXRoX2RlZmF1bHQuc2V0XG5lbmRcblxubW9kdWxlIEF1dG9fY29tcGxldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgQ29tcGxldGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IEF1dG9fY29tcGxldGUudCBvcHRpb25cblxuICBsZXQgcnVuX2FuZF9leGl0IHQgZW52IH5wYXJ0IDogbmV2ZXJfcmV0dXJucyA9XG4gICAgT3B0aW9uLml0ZXIgdCB+ZjooZnVuIGNvbXBsZXRpb25zIC0+XG4gICAgICBMaXN0Lml0ZXIgfmY6cHJpbnRfZW5kbGluZSAoY29tcGxldGlvbnMgZW52IH5wYXJ0KSk7XG4gICAgZXhpdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFyZ190eXBlIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBleHRyYV9kb2MgOiAnYSB0IC0+IHN0cmluZyBvcHRpb24gbGF6eV90XG4gIHZhbCBrZXkgOiAnYSB0IC0+ICdhIEVudi5NdWx0aS5LZXkudCBvcHRpb25cbiAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBDb21wbGV0ZXIudFxuICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAoJ2EsIGV4bikgcmVzdWx0XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgLT4gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBtYXAgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYiB0IC0+IGY6KCdiIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9sYXp5IDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2EgdCBsYXp5X3QgLT4gJ2EgdFxuXG4gIHZhbCBvZl9tYXBcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAnYSBTdHJpbmcuTWFwLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBjb21tYV9zZXBhcmF0ZWRcbiAgICA6ICA/YWxsb3dfZW1wdHk6Ym9vbFxuICAgIC0+ID9rZXk6J2EgbGlzdCBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiA/c3RyaXBfd2hpdGVzcGFjZTpib29sXG4gICAgLT4gP3VuaXF1ZV92YWx1ZXM6Ym9vbFxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBsaXN0IHRcblxuICBtb2R1bGUgRXhwb3J0IDogc2lnXG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGludCA6IGludCB0XG4gICAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIGJvb2wgOiBib29sIHRcbiAgICB2YWwgZGF0ZSA6IERhdGUudCB0XG4gICAgdmFsIHBlcmNlbnQgOiBQZXJjZW50LnQgdFxuICAgIHZhbCBob3N0X2FuZF9wb3J0IDogSG9zdF9hbmRfcG9ydC50IHRcbiAgICB2YWwgc2V4cCA6IFNleHAudCB0XG4gICAgdmFsIHNleHBfY29udiA6ID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnQgLT4gKFNleHAudCAtPiAnYSkgLT4gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgY29tcGxldGUgOiBfIHQgLT4gQXV0b19jb21wbGV0ZS50XG4gICAgdmFsIHBhcnNlIDogJ2EgdCAtPiBzdHJpbmcgLT4gJ2EgT3JfZXJyb3IudFxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGFyc2UgOiBzdHJpbmcgLT4gJ2FcbiAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICA7IGtleSA6ICdhIFVuaXZfbWFwLk11bHRpLktleS50IG9wdGlvblxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgcGFyc2UgdCBzID0gUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdC5wYXJzZSBzKVxuICBsZXQgY3JlYXRlJyA/Y29tcGxldGUgP2tleSBwYXJzZSB+ZXh0cmFfZG9jID0geyBwYXJzZTsga2V5OyBjb21wbGV0ZTsgZXh0cmFfZG9jIH1cblxuICBsZXQgY3JlYXRlID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyA9XG4gICAgY3JlYXRlJyA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgfmV4dHJhX2RvYzooTGF6eS5mcm9tX3ZhbCBOb25lKVxuICA7O1xuXG4gIGxldCBtYXAgP2tleSB0IH5mID0geyB0IHdpdGgga2V5OyBwYXJzZSA9IChmdW4gcyAtPiBmICh0LnBhcnNlIHMpKSB9XG5cbiAgbGV0IG9mX2xhenkgP2tleSB0ID1cbiAgICBsZXQgcGFyc2Ugc3RyID0gKGZvcmNlIHQpLnBhcnNlIHN0ciBpblxuICAgIGxldCBjb21wbGV0ZSBlbnYgfnBhcnQgPVxuICAgICAgbWF0Y2ggKGZvcmNlIHQpLmNvbXBsZXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBTZWUgW3J1bl9hbmRfZXhpdF0gLSBubyBjb21wbGV0aW9ucyBpcyBlcXVpdmFsZW50IHRvIG5vdCBoYXZpbmcgYVxuICAgICAgICAgICBbQ29tcGxldGVdLiAqKVxuICAgICAgICBbXVxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIGVudiB+cGFydFxuICAgIGluXG4gICAgbGV0IGV4dHJhX2RvYyA9IExhenkuYmluZCB0IH5mOmV4dHJhX2RvYyBpblxuICAgIHsgcGFyc2U7IGNvbXBsZXRlID0gU29tZSBjb21wbGV0ZTsga2V5OyBleHRyYV9kb2MgfVxuICA7O1xuXG4gIGxldCBzdHJpbmcgPSBjcmVhdGUgRm4uaWRcbiAgbGV0IGludCA9IGNyZWF0ZSBJbnQub2Zfc3RyaW5nXG4gIGxldCBjaGFyID0gY3JlYXRlIENoYXIub2Zfc3RyaW5nXG4gIGxldCBmbG9hdCA9IGNyZWF0ZSBGbG9hdC5vZl9zdHJpbmdcbiAgbGV0IGRhdGUgPSBjcmVhdGUgRGF0ZS5vZl9zdHJpbmdcbiAgbGV0IHBlcmNlbnQgPSBjcmVhdGUgUGVyY2VudC5vZl9zdHJpbmdcbiAgbGV0IGhvc3RfYW5kX3BvcnQgPSBjcmVhdGUgSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmdcbiAgbGV0IHNleHAgPSBjcmVhdGUgU2V4cC5vZl9zdHJpbmdcbiAgbGV0IHNleHBfY29udiA/Y29tcGxldGUgb2Zfc2V4cCA9IGNyZWF0ZSA/Y29tcGxldGUgKGZ1biBzIC0+IG9mX3NleHAgKFNleHAub2Zfc3RyaW5nIHMpKVxuXG4gIGxldCBhc3NvY2lhdGl2ZVxuICAgICAgICA/KGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgPSB0cnVlKVxuICAgICAgICA/KGxpc3RfdmFsdWVzX2luX2hlbHAgPSB0cnVlKVxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBsZXQgb3BlbiBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICB2YWwgaXNfcHJlZml4IDogc3RyaW5nIC0+IHByZWZpeDpzdHJpbmcgLT4gYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgVCA6XG4gICAgICAgICAgICB7IGNtcCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAgICAgICAgIDsgbWFwIDogKHN0cmluZywgJ2EsICdjbXApIE1hcC50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAtPiAnYSB0XG4gICAgZW5kIGluXG4gICAgbGV0IChUIHsgY21wID0gKG1vZHVsZSBTKTsgbWFwIH0pID1cbiAgICAgIGxldCBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5XG4gICAgICAgICAgICAodHlwZSBjbXApXG4gICAgICAgICAgICAobW9kdWxlIFMgOiBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgICAgICBhbGlzdFxuICAgICAgICA9XG4gICAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFMpIGFsaXN0IHdpdGhcbiAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IChfIDogUy50KSAtPlxuICAgICAgICAgIGxldCBkdXBsaWNhdGVfa2V5cyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrLCAoXyA6ICdhKSkgLT4gaywgaylcbiAgICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIFMpXG4gICAgICAgICAgICB8PiBNYXAuZmlsdGVyIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiB0cnVlKVxuICAgICAgICAgICAgfD4gTWFwLmRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5vZl9hbGlzdF9leG5cIiAoZHVwbGljYXRlX2tleXMgOiBzdHJpbmcgbGlzdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICBsZXQgbWFrZSBjbXAgPSBUIHsgY21wOyBtYXAgPSBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5IGNtcCBhbGlzdCB9IGluXG4gICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIG1ha2UgKG1vZHVsZSBTdHJpbmcpIGVsc2UgbWFrZSAobW9kdWxlIFN0cmluZy5DYXNlbGVzcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXggPVxuICAgICAgbWF0Y2ggYXV0b19jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgbWFwKSB+ZjooZnVuIChuYW1lLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeCB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKiBCYXNoIGNvbXBsZXRpb24gd2lsbCBub3QgYWNjZXB0IFtGb29dIGFzIGEgY29tcGxldGlvbiBmb3IgW2ZdLiBTbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gZ2l2ZW4uICopXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1Ym8gbmFtZSB+cG9zOihTdHJpbmcubGVuZ3RoIHByZWZpeCkgaW5cbiAgICAgICAgICAgIGxldCBuYW1lID0gcHJlZml4IF4gc3VmZml4IGluXG4gICAgICAgICAgICBTb21lIG5hbWUpXG4gICAgaW5cbiAgICBsZXQgZmluZCBhcmcgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgbWFwIGFyZyB3aXRoXG4gICAgICB8IFNvbWUgXyBhcyBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChuYW1lLCBfKSAtPiBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6YXJnKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIChfc2luZ2xldG9uX2tleSwgdikgXSAtPiBTb21lIHZcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgICAoKiBJbiB0aGUgdHdvLW9yLW1vcmUgY2FzZSB3ZSBjb3VsZCBwcm92aWRlIGZpbHRlcmVkIGhlbHAgdGV4dCwgYnV0IGl0J3NcbiAgICAgICAgICAgICAgICAgbW9yZSBnZW5lcmFsbHkgdXNlZnVsIHRvIGxpc3QgYWxsIHRoZSBvcHRpb25zLCB3aGljaCB3ZSBkbyBiZWxvdy4gKilcbiAgICAgICAgICAgICAgTm9uZSkpXG4gICAgaW5cbiAgICBjcmVhdGUnXG4gICAgICB+ZXh0cmFfZG9jOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChpZiBsaXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChNYXAua2V5cyBtYXApIGluXG4gICAgICAgICAgICAgU29tZSBbJXN0cmluZyBcIihjYW4gYmU6ICV7dmFsdWVzfSlcIl0pXG4gICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICA/a2V5XG4gICAgICB+Y29tcGxldGVcbiAgICAgIChmdW4gYXJnIC0+XG4gICAgICAgICBtYXRjaCBmaW5kIGFyZyB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHZhbGlkX2FyZ3VtZW50c19leHRyYSA9XG4gICAgICAgICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBcIlwiIGVsc2UgXCIgKGNhc2UgaW5zZW5zaXRpdmUpXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgXCJ2YWxpZCBhcmd1bWVudHMlczogeyVzfVwiXG4gICAgICAgICAgICAgdmFsaWRfYXJndW1lbnRzX2V4dHJhXG4gICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTWFwLmtleXMgbWFwKSlcbiAgICAgICAgICAgICAoKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGFzc29jaWF0aXZlXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgIGFsaXN0XG4gIDs7XG5cbiAgbGV0IG9mX21hcFxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBtYXBcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChNYXAudG9fYWxpc3QgbWFwKVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobGV0JW1hcC5MaXN0IHQgPSBFLmFsbCBpblxuICAgICAgIEUudG9fc3RyaW5nIHQsIHQpXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIGVudW1lcmF0ZWRcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBFXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgWyVzZXhwICh0IDogRS50KV1cbiAgICAgIGVuZClcbiAgOztcblxuICBsZXQgYm9vbCA9IGVudW1lcmF0ZWQgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2UgKG1vZHVsZSBCb29sKVxuXG4gIGxldCBjb21tYV9zZXBhcmF0ZWRcbiAgICAgICAgPyhhbGxvd19lbXB0eSA9IGZhbHNlKVxuICAgICAgICA/a2V5XG4gICAgICAgID8oc3RyaXBfd2hpdGVzcGFjZSA9IGZhbHNlKVxuICAgICAgICA/KHVuaXF1ZV92YWx1ZXMgPSBmYWxzZSlcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgc3RyaXAgPSBpZiBzdHJpcF93aGl0ZXNwYWNlIHRoZW4gZnVuIHN0ciAtPiBTdHJpbmcuc3RyaXAgc3RyIGVsc2UgRm4uaWQgaW5cbiAgICBsZXQgY29tcGxldGUgPVxuICAgICAgT3B0aW9uLm1hcCB0LmNvbXBsZXRlIH5mOihmdW4gY29tcGxldGVfZWx0IGVudiB+cGFydCAtPlxuICAgICAgICBsZXQgcHJlZml4ZXMsIHN1ZmZpeCA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHBhcnQgfm9uOicsJyB8PiBMaXN0LnJldiB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBbXSwgcGFydFxuICAgICAgICAgIHwgaGQgOjogdGwgLT4gTGlzdC5yZXYgdGwsIGhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc19hbGxvd2VkID1cbiAgICAgICAgICBpZiBub3QgdW5pcXVlX3ZhbHVlc1xuICAgICAgICAgIHRoZW4gZnVuIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgc2Vlbl9hbHJlYWR5ID0gcHJlZml4ZXMgfD4gTGlzdC5tYXAgfmY6c3RyaXAgfD4gU3RyaW5nLlNldC5vZl9saXN0IGluXG4gICAgICAgICAgICBmdW4gY2hvaWNlIC0+IG5vdCAoU2V0Lm1lbSBzZWVuX2FscmVhZHkgKHN0cmlwIGNob2ljZSkpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2hvaWNlcyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChjb21wbGV0ZV9lbHQgZW52IH5wYXJ0OnN1ZmZpeCkgfmY6KGZ1biBjaG9pY2UgLT5cbiAgICAgICAgICAgICAgKG5vdCAoU3RyaW5nLm1lbSBjaG9pY2UgJywnKSkgJiYgaXNfYWxsb3dlZCBjaG9pY2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgICgqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNob2ljZSB0byBhdXRvLWNvbXBsZXRlLCBhZGQgYSBzZWNvbmQgY2hvaWNlIHdpdGhcbiAgICAgICAgICAgICBhIHRyYWlsaW5nIGNvbW1hIHNvIHRoYXQgYXV0by1jb21wbGV0aW9uIHdpbGwgZ28gdG8gdGhlIGVuZCBidXQgYmFzaFxuICAgICAgICAgICAgIHdvbid0IGFkZCBhIHNwYWNlLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNob2ljZXMsIG9yIGEgc2luZ2xlIGNob2ljZVxuICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBmaW5hbCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSBkdW1teSBvcHRpb24uICopXG4gICAgICAgICAgfCBbIGNob2ljZSBdIC0+IFsgY2hvaWNlOyBjaG9pY2UgXiBcIixcIiBdXG4gICAgICAgICAgfCBjaG9pY2VzIC0+IGNob2ljZXNcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgY2hvaWNlcyB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAocHJlZml4ZXMgQCBbIGNob2ljZSBdKSkpXG4gICAgaW5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgc3RyaW5nID0gc3RyaXAgc3RyaW5nIGluXG4gICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFsbG93X2VtcHR5XG4gICAgICAgIHRoZW4gW11cbiAgICAgICAgZWxzZSBmYWlsd2l0aCBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5jb21tYV9zZXBhcmF0ZWQ6IGVtcHR5IGxpc3Qgbm90IGFsbG93ZWRcIlxuICAgICAgZWxzZSBMaXN0Lm1hcCAoU3RyaW5nLnNwbGl0IHN0cmluZyB+b246JywnKSB+ZjooZnVuIHN0ciAtPiB0LnBhcnNlIChzdHJpcCBzdHIpKVxuICAgIGluXG4gICAgY3JlYXRlID9rZXkgP2NvbXBsZXRlIG9mX3N0cmluZ1xuICA7O1xuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc3RyaW5nID0gc3RyaW5nXG4gICAgbGV0IGludCA9IGludFxuICAgIGxldCBjaGFyID0gY2hhclxuICAgIGxldCBmbG9hdCA9IGZsb2F0XG4gICAgbGV0IGJvb2wgPSBib29sXG4gICAgbGV0IGRhdGUgPSBkYXRlXG4gICAgbGV0IHBlcmNlbnQgPSBwZXJjZW50XG4gICAgbGV0IGhvc3RfYW5kX3BvcnQgPSBob3N0X2FuZF9wb3J0XG4gICAgbGV0IHNleHAgPSBzZXhwXG4gICAgbGV0IHNleHBfY29udiA9IHNleHBfY29udlxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGxldGUgdCA9XG4gICAgICBtYXRjaCB0LmNvbXBsZXRlIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGZcbiAgICAgIHwgTm9uZSAtPiBmdW4gXyB+cGFydDpfIC0+IFtdXG4gICAgOztcblxuICAgIGxldCBwYXJzZSB0IHN0ciA9IHBhcnNlIHQgc3RyIHw+IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZsYWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE51bV9vY2N1cnJlbmNlcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50ID1cbiAgICAgIHsgYXRfbGVhc3Rfb25jZSA6IGJvb2xcbiAgICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IF8gfSBmbGFnX25hbWUgPVxuICAgICAgdG9faGVscF9zdHJpbmcgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH0gfmZsYWdfbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgYW55ID0geyBhdF9sZWFzdF9vbmNlID0gZmFsc2U7IGF0X21vc3Rfb25jZSA9IGZhbHNlIH1cbiAgICBsZXQgYXRfbGVhc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IGZhbHNlIH1cbiAgICBsZXQgYXRfbW9zdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gZmFsc2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICAgIGxldCBleGFjdGx5X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgZW5kXG5cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgTm9fYXJnIG9mIChFbnYudCAtPiBFbnYudClcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgb2YgKEVudi50IC0+IHN0cmluZylcbiAgICB8IEFyZyBvZiAoRW52LnQgLT4gc3RyaW5nIC0+IEVudi50KSAqIENvbXBsZXRlci50XG4gICAgfCBSZXN0IG9mIChFbnYudCAtPiBzdHJpbmcgbGlzdCAtPiBFbnYudClcblxuICBtb2R1bGUgSW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA6IHN0cmluZyBsaXN0XG4gICAgICAoKiBbYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBdIGFyZSBhbGlhc2VzIHRoYXQgZG9uJ3Qgc2hvdyB1cCBpbiAtaGVscCBvdXRwdXQuXG4gICAgICAgICBDdXJyZW50bHkgdGhleSdyZSBvbmx5IHVzZWQgZm9yIGRvdWJsZS1kYXNoIGJ1aWx0LWluIGZsYWdzIGxpa2UgLS1oZWxwIGFuZFxuICAgICAgICAgLS12ZXJzaW9uLiAqKVxuICAgICAgOyBhY3Rpb24gOiBhY3Rpb25cbiAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgICA7IGNoZWNrX2F2YWlsYWJsZSA6IEVudi50IC0+IHVuaXRcbiAgICAgIDsgbmFtZV9tYXRjaGluZyA6IFsgYFByZWZpeCB8IGBGdWxsX21hdGNoX3JlcXVpcmVkIF1cbiAgICAgIH1cblxuICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgZmxhZ19uYW1lID1cbiAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZyB0Lm51bV9vY2N1cnJlbmNlcyB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIG1vZHVsZSBEb2MgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgYXJnX2RvYyA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2UgfmFjdGlvbiB+ZG9jID1cbiAgICAgICAgbGV0IGFyZ19kb2MsIGRvYyA9XG4gICAgICAgICAgbWF0Y2ggKGFjdGlvbiA6IGFjdGlvbiksIFN0cmluZy5sc3BsaXQyIGRvYyB+b246JyAnIHdpdGhcbiAgICAgICAgICB8IChOb19hcmcgXyB8IFByaW50X2luZm9fYW5kX3F1aXQgXyksIF8gLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCBBcmcgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gU29tZSBcIl9cIiwgZG9jXG4gICAgICAgICAgfCBSZXN0IF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgKEFyZyBfIHwgUmVzdCBfKSwgU29tZSAoYXJnLCBkb2MpIC0+IFNvbWUgYXJnLCBkb2NcbiAgICAgICAgaW5cbiAgICAgICAgeyBkb2MgPSBTdHJpbmcuc3RyaXAgZG9jOyBhcmdfZG9jIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBjb25jYXQgfm5hbWUgfmFyZ19kb2MgPVxuICAgICAgICBtYXRjaCBhcmdfZG9jIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5hbWVcbiAgICAgICAgfCBTb21lIGFyZ19kb2MgLT4gbmFtZSBeIFwiIFwiIF4gYXJnX2RvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IHggPVxuICAgICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB0Lm51bV9vY2N1cnJlbmNlcyB4XG4gICAgICA7O1xuXG4gICAgICAoKiBmbGFnIGhlbHAgaW4gdGhlIGZvcm1hdCBvZiB0aGUgb2xkIGNvbW1hbmQuIHVzZWQgZm9yIGluamVjdGlvbiAqKVxuICAgICAgbGV0IGhlbHBcbiAgICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgICAgfSBhcyB0KVxuICAgICAgICA9XG4gICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggZG9jIH5wcmVmaXg6XCIgXCJcbiAgICAgICAgdGhlblxuICAgICAgICAgIChuYW1lLCBTdHJpbmcubHN0cmlwIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPiB4LCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgICAgICh3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpLCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICggd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lOnggfmFyZ19kb2MpXG4gICAgICAgICAgICAsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lICkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhbGlnblxuICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICB9IGFzIHQpXG4gICAgICA6IFNoYXBlLkZsYWdfaW5mby50XG4gICAgICA9XG4gICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICBsZXQgbmFtZSA9IHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYykgaW5cbiAgICAgIHsgbmFtZTsgZG9jOyBhbGlhc2VzIH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBmbGFncyA9XG4gICAgICBtYXRjaCBTdHJpbmcuTWFwLm9mX2FsaXN0IChMaXN0Lm1hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lLCBmbGFnKSkgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBmbGFnIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lIDo6IGZsYWcuYWxpYXNlcylcbiAgICAgICAgfD4gTGlzdC5maW5kX2FfZHVwIH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXVxuICAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIHggLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3Mgb3IgYWxpYXNlcyBuYW1lZCAlc1wiIHggKCkpO1xuICAgICAgICBtYXBcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB7IGFjdGlvbiA6IGFjdGlvblxuICAgIDsgcmVhZCA6IEVudi50IC0+ICdhXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gc3RyaW5nIC0+ICdhIHN0YXRlXG5cbiAgbGV0IGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIHsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBhY3Rpb24gPVxuICAgICAgICAobGV0IHVwZGF0ZSBlbnYgYXJnID1cbiAgICAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYXJnIHdpdGhcbiAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVMuXFxuJXNcIiBuYW1lIGFyZyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICAgICAgIHwgT2sgYXJnIC0+XG4gICAgICAgICAgICAgbGV0IGVudiA9IHdyaXRlIGVudiBhcmcgaW5cbiAgICAgICAgICAgICAobWF0Y2ggQXJnX3R5cGUua2V5IGFyZ190eXBlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGVudlxuICAgICAgICAgICAgICB8IFNvbWUga2V5IC0+IEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6YXJnKVxuICAgICAgICAgaW5cbiAgICAgICAgIEFyZyAodXBkYXRlLCBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSkpXG4gICAgOyBleHRyYV9kb2MgPSBBcmdfdHlwZS5leHRyYV9kb2MgYXJnX3R5cGVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1hcF9mbGFnIHQgfmYgaW5wdXQgPVxuICAgIGxldCB7IGFjdGlvbjsgcmVhZDsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IHQgaW5wdXQgaW5cbiAgICB7IGFjdGlvbjsgcmVhZCA9IChmdW4gZW52IC0+IGYgKHJlYWQgZW52KSk7IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgPVxuICAgIEVudi51cGRhdGUgZW52IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhcmdcbiAgICAgIHwgU29tZSBfIC0+IGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKSlcbiAgOztcblxuICBsZXQgcmVxdWlyZWRfdmFsdWUgP2RlZmF1bHQgYXJnX3R5cGUgbmFtZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgIHwgTm9uZSAtPiBkaWUgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSAoKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkIGFyZ190eXBlIG5hbWUgPSByZXF1aXJlZF92YWx1ZSBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcblxuICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUgbmFtZSA9XG4gICAgcmVxdWlyZWRfdmFsdWUgfmRlZmF1bHQgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9wdGlvbmFsIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID0gRW52LmZpbmQgZW52IGtleSBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBub19hcmdfZ2VuZXJhbCB+a2V5X3ZhbHVlIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogdW5pdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBFbnYubWVtIGVudiBrZXkgaW5cbiAgICBsZXQgd3JpdGUgZW52ID1cbiAgICAgIGlmIEVudi5tZW0gZW52IGtleVxuICAgICAgdGhlbiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKClcbiAgICAgIGVsc2UgRW52LnNldCBlbnYgfmtleSB+ZGF0YTooKVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgPVxuICAgICAgbGV0IGVudiA9XG4gICAgICAgIE9wdGlvbi5mb2xkIGtleV92YWx1ZSB+aW5pdDplbnYgfmY6KGZ1biBlbnYgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgICAgRW52LnNldF93aXRoX2RlZmF1bHQgZW52IH5rZXkgfmRhdGE6dmFsdWUpXG4gICAgICBpblxuICAgICAgd3JpdGUgZW52XG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IC0+XG4gICAgICAgICAgbGV0IGVudiA9IGFjdGlvbiBlbnYgaW5cbiAgICAgICAgICBmICgpO1xuICAgICAgICAgIGVudlxuICAgIGluXG4gICAgeyByZWFkXG4gICAgOyBhY3Rpb24gPSBOb19hcmcgYWN0aW9uXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZyBuYW1lID0gbm9fYXJnX2dlbmVyYWwgbmFtZSB+a2V5X3ZhbHVlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lXG5cbiAgbGV0IG5vX2FyZ19yZWdpc3RlciB+a2V5IH52YWx1ZSBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbCBuYW1lIH5rZXlfdmFsdWU6KFNvbWUgKGtleSwgdmFsdWUpKSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3NvbWUgdmFsdWUgPVxuICAgIG1hcF9mbGFnIG5vX2FyZyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBTb21lIHZhbHVlXG4gICAgICB8IGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbGV0IGxpc3RlZCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9IExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBsaXN0IC0+IGFyZyA6OiBsaXN0KSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYW55XG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9XG4gICAgICBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6RnF1ZXVlLmVtcHR5IH5uYW1lIFslc2V4cF9vZjogXyBGcXVldWUudF1cbiAgICBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBGcXVldWUudG9fbGlzdCAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgZmlyc3QgOjogcmVzdCAtPiBmaXJzdCwgcmVzdFxuICAgICAgfCBbXSAtPiBkaWUgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSAoKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPVxuICAgICAgRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIHEgLT4gRnF1ZXVlLmVucXVldWUgcSBhcmcpXG4gICAgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2VcbiAgOztcblxuICBsZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wN10gVXNlIFtvbmVfb3JfbW9yZV9hc19wYWlyXSBvciBbb25lX29yX21vcmVfYXNfbGlzdF1cIl0gb25lX29yX21vcmVcbiAgICA9XG4gICAgb25lX29yX21vcmVfYXNfcGFpclxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19saXN0IGFyZ190eXBlID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIHw+IG1hcF9mbGFnIH5mOihmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuZXJhbCB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBhY3Rpb24gZW52IGNtZF9saW5lID0gRW52LnNldCBlbnYgfmtleSB+ZGF0YTpjbWRfbGluZSBpblxuICAgIGxldCByZWFkIGVudiA9IEVudi5maW5kIGVudiBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IHggLT5cbiAgICAgICAgICBmIHg7XG4gICAgICAgICAgYWN0aW9uIGVudiB4XG4gICAgaW5cbiAgICB7IGFjdGlvbiA9IFJlc3QgYWN0aW9uXG4gICAgOyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19hYm9ydCB+ZXhpdCBfbmFtZSA9XG4gICAgeyBhY3Rpb24gPSBOb19hcmcgKGZ1biBfIC0+IG5ldmVyX3JldHVybnMgKGV4aXQgKCkpKVxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgcmVhZCA9IChmdW4gXyAtPiAoKSlcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIG5hbWUgPSBlc2NhcGVfZ2VuZXJhbCB+ZGVwcmVjYXRlZF9ob29rOk5vbmUgbmFtZVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IG5vX2FyZyB+aG9vayBuYW1lID1cbiAgICAgIG5vX2FyZ19nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaykgfmtleV92YWx1ZTpOb25lIG5hbWVcbiAgICA7O1xuXG4gICAgbGV0IGVzY2FwZSB+aG9vayA9IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaylcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhdGggOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgY3JlYXRlIDogcGF0aF90b19leGU6c3RyaW5nIC0+IHRcbiAgdmFsIG9mX3BhcnRzIDogc3RyaW5nIGxpc3QgLT4gdFxuICB2YWwgYXBwZW5kIDogdCAtPiBzdWJjb21tYW5kOnN0cmluZyAtPiB0XG4gIHZhbCByZXBsYWNlX2ZpcnN0IDogdCAtPiBmcm9tOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHRcbiAgdmFsIHBhcnRzIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgcGFydHNfZXhlX2Jhc2VuYW1lIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19kb3RzIDogdCAtPiBzdHJpbmdcbiAgdmFsIHBvcF9oZWxwIDogdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBjcmVhdGUgfnBhdGhfdG9fZXhlID0gWyBwYXRoX3RvX2V4ZSBdXG4gIGxldCBvZl9wYXJ0cyBwYXJ0cyA9IExpc3QucmV2IHBhcnRzXG4gIGxldCBhcHBlbmQgdCB+c3ViY29tbWFuZCA9IHN1YmNvbW1hbmQgOjogdFxuICBsZXQgcGFydHMgPSBMaXN0LnJldlxuXG4gIGxldCBwYXJ0c19leGVfYmFzZW5hbWUgdCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgdCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGQgOjogdGwgLT4gRmlsZW5hbWUuYmFzZW5hbWUgaGQgOjogdGxcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSB1bndvcmRzIChwYXJ0c19leGVfYmFzZW5hbWUgdClcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoXG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgdCB+ZnJvbSB+dG9fID1cbiAgICBsZXQgcmVjIGF1eCBwYXJ0cyB+YWNjIH5mcm9tIH50b18gPVxuICAgICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgU3RyaW5nLiggPSApIGhkIGZyb21cbiAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgdGwgKHRvXyA6OiBhY2MpXG4gICAgICAgIGVsc2UgYXV4IHRsIH5hY2M6KGhkIDo6IGFjYykgfmZyb20gfnRvX1xuICAgIGluXG4gICAgYXV4IChwYXJ0cyB0KSB+YWNjOltdIH5mcm9tIH50b19cbiAgOztcblxuICBsZXQgcG9wX2hlbHAgPSBmdW5jdGlvblxuICAgIHwgXCJoZWxwXCIgOjogdCAtPiB0XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfZG90cyB0ID1cbiAgICAobWF0Y2ggdCB3aXRoXG4gICAgIHwgW10gLT4gW11cbiAgICAgfCBsYXN0IDo6IGluaXQgLT4gbGFzdCA6OiBMaXN0Lm1hcCBpbml0IH5mOihGbi5jb25zdCBcIi5cIikpXG4gICAgfD4gdG9fc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxuZW5kXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA6IHNpZ1xuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsIG9uZSA6IHN0cmluZyAtPiB0XG4gICAgdmFsIG1hbnkgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmUgOiB0IC0+IHRcbiAgICB2YWwgY29uY2F0IDogdCBsaXN0IC0+IHRcbiAgICB2YWwgYWRfaG9jIDogdXNhZ2U6c3RyaW5nIC0+IHRcblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG5hbWVzIDogdCAtPiBzdHJpbmcgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU2hhcGUuQW5vbnMuR3JhbW1hci5pbnZhcmlhbnRcbiAgICBsZXQgdXNhZ2UgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnVzYWdlXG5cbiAgICBsZXQgcmVjIGlzX2ZpeGVkX2FyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiB0cnVlXG4gICAgICB8IE9uZSBfIC0+IHRydWVcbiAgICAgIHwgTWFueSBfIC0+IGZhbHNlXG4gICAgICB8IE1heWJlIF8gLT4gZmFsc2VcbiAgICAgIHwgQWRfaG9jIF8gLT4gZmFsc2VcbiAgICAgIHwgQ29uY2F0IHRzIC0+XG4gICAgICAgIChtYXRjaCBMaXN0LnJldiB0cyB3aXRoXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgfCBsYXN0IDo6IG90aGVycyAtPlxuICAgICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCBvdGhlcnMgfmY6aXNfZml4ZWRfYXJpdHkpO1xuICAgICAgICAgICBpc19maXhlZF9hcml0eSBsYXN0KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG5hbWVzID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBbXVxuICAgICAgfCBPbmUgcyAtPiBbIHMgXVxuICAgICAgfCBNYW55IHQgLT4gbmFtZXMgdFxuICAgICAgfCBNYXliZSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgQWRfaG9jIHMgLT4gWyBzIF1cbiAgICAgIHwgQ29uY2F0IHRzIC0+IExpc3QuY29uY2F0X21hcCB0cyB+ZjpuYW1lc1xuICAgIDs7XG5cbiAgICBsZXQgemVybyA9IFplcm9cbiAgICBsZXQgb25lIG5hbWUgPSBPbmUgbmFtZVxuXG4gICAgbGV0IG1hbnkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPlxuICAgICAgICBpZiBub3QgKGlzX2ZpeGVkX2FyaXR5IHQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwiaXRlcmF0aW9uIG9mIHZhcmlhYmxlLWxlbmd0aCBncmFtbWFycyBzdWNoIGFzICVzIGlzIGRpc2FsbG93ZWRcIlxuICAgICAgICAgICAgKHVzYWdlIHQpXG4gICAgICAgICAgICAoKTtcbiAgICAgICAgTWFueSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+IE1heWJlIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbmNhdCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFplcm9cbiAgICAgIHwgY2FyIDo6IGNkciAtPlxuICAgICAgICBsZXQgY2FyLCBjZHIgPVxuICAgICAgICAgIExpc3QuZm9sZCBjZHIgfmluaXQ6KGNhciwgW10pIH5mOihmdW4gKHQxLCBhY2MpIHQyIC0+XG4gICAgICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgICAgfCBaZXJvLCB0IHwgdCwgWmVybyAtPiB0LCBhY2NcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICBpZiBpc19maXhlZF9hcml0eSB0MVxuICAgICAgICAgICAgICB0aGVuIHQyLCB0MSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgZ3JhbW1hciAlcyBmb3IgYW5vbnltb3VzIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgXFxcbiAgICAgICAgICAgICAgICAgICB0aGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgZm9yIGFyZ3VtZW50cyAoJXMpIGZvbGxvd2luZyBhIHZhcmlhYmxlIFxcXG4gICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJXMpLiAgU3VwcG9ydGluZyBzdWNoIGdyYW1tYXJzIHdvdWxkIFxcXG4gICAgICAgICAgICAgICAgICAgY29tcGxpY2F0ZSB0aGUgaW1wbGVtZW50YXRpb24gc2lnbmlmaWNhbnRseS5cIlxuICAgICAgICAgICAgICAgICAgKHVzYWdlIChDb25jYXQgKExpc3QucmV2ICh0MiA6OiB0MSA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDIpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDEpXG4gICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGNkciB3aXRoXG4gICAgICAgICB8IFtdIC0+IGNhclxuICAgICAgICAgfCBfIDo6IF8gLT4gQ29uY2F0IChMaXN0LnJldiAoY2FyIDo6IGNkcikpKVxuICAgIDs7XG5cbiAgICBsZXQgYWRfaG9jIH51c2FnZSA9IEFkX2hvYyB1c2FnZVxuICBlbmRcblxuICBtb2R1bGUgUGFyc2VyIDogc2lnXG4gICAgdHlwZSArJ2EgdFxuXG4gICAgdmFsIGZyb21fZW52IDogKEVudi50IC0+ICdhKSAtPiAnYSB0XG4gICAgdmFsIG9uZSA6IG5hbWU6c3RyaW5nIC0+ICdhIEFyZ190eXBlLnQgLT4gJ2EgdFxuICAgIHZhbCBtYXliZSA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB2YWwgc2VxdWVuY2UgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCBzdG9wX3BhcnNpbmcgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmluYWxfdmFsdWUgOiAnYSB0IC0+IEVudi50IC0+ICdhXG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7ICgqIElmIGVtYWNzIGhpZ2hsaWdodHMgW3BhcnNlcl0gYXMgaWYgaXQgd2VyZSBhIGtleXdvcmQsIHRoYXQncyBvbmx5IGJlY2F1c2VcbiAgICAgICAgICAgICBbcGFyc2VyXSB3YXMgYSBrZXl3b3JkIGluIGNhbWxwNC4gW3BhcnNlcl0gaXMgYSByZWd1bGFyIG5hbWUgaW4gT0NhbWwuICopXG4gICAgICAgICAgcGFyc2VyIDogJ2EgdFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB2YWwgY29uc3VtZSA6ICdhIHQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgQ29uc3VtZV9yZXN1bHQudFxuICAgIHZhbCBjb21wbGV0ZSA6ICdhIHQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gbmV2ZXJfcmV0dXJuc1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsICggPCo+ICkgOiAoJ2EgLT4gJ2IpIHQgLT4gJ2EgdCAtPiAnYiB0XG4gICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgZW5kXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IERvbmUgb2YgKEVudi50IC0+ICdhKVxuICAgICAgfCBNb3JlIG9mICdhIG1vcmVcbiAgICAgICgqIEEgW1Rlc3RdIHdpbGwgKGdlbmVyYWxseSkgcmV0dXJuIGEgW0RvbmUgX10gdmFsdWUgaWYgdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBhbmRcbiAgICAgICAgIGEgW01vcmVdIHBhcnNlciB0byB1c2UgaWYgdGhlcmUgaXMgYW55IG1vcmUgaW5wdXQuICopXG4gICAgICB8IFRlc3Qgb2YgKG1vcmU6Ym9vbCAtPiAnYSB0KVxuICAgICAgKCogSWYgd2UncmUgb25seSBjb21wbGV0aW5nLCB3ZSBjYW4ndCBwdWxsIHZhbHVlcyBvdXQsIGJ1dCB3ZSBjYW4gc3RpbGwgc3RlcCB0aHJvdWdoXG4gICAgICAgICBbdF1zICh3aGljaCBtYXkgaGF2ZSBjb21wbGV0aW9uIHNldCB1cCkuICopXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gb2YgcGFja2VkIGxpc3RcbiAgICAgIHwgU3RvcF9wYXJzaW5nIG9mICdhIHRcblxuICAgIGFuZCAnYSBtb3JlID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBwYXJzZSA6IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIHBhcnNlX3Jlc3VsdFxuICAgICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgICB9XG5cbiAgICBhbmQgcGFja2VkID0gUGFja2VkIDogJ2EgdCAtPiBwYWNrZWRcblxuICAgIGFuZCAnYSBwYXJzZV9yZXN1bHQgPVxuICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgfVxuXG4gICAgbGV0IHJldHVybiBhID0gRG9uZSAoZnVuIF8gLT4gYSlcbiAgICBsZXQgZnJvbV9lbnYgZiA9IERvbmUgZlxuICAgIGxldCBzdG9wX3BhcnNpbmcgdCA9IFN0b3BfcGFyc2luZyB0XG5cbiAgICBsZXQgcGFja19mb3JfY29tcGxldGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IERvbmUgXyAtPiBbXSAoKiB3b24ndCBjb21wbGV0ZSBvciBjb25zdW1lIGFueXRoaW5nICopXG4gICAgICB8IChNb3JlIF8gfCBUZXN0IF8gfCBTdG9wX3BhcnNpbmcgXykgYXMgeCAtPiBbIFBhY2tlZCB4IF1cbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwcyAtPiBwc1xuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9IH5mID1cbiAgICAgIGxldCBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgIHsgcGFyc2VyID0gZiBwYXJzZXI7IHVwZGF0ZV9lbnYgfVxuICAgICAgaW5cbiAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVjICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPVxuICAgICAgbWF0Y2ggdF9sZWZ0LCB0X3JpZ2h0IHdpdGhcbiAgICAgICgqIFtEb25lXSAqKVxuICAgICAgfCBEb25lIGYsIERvbmUgeCAtPiBEb25lIChmdW4gZW52IC0+IGYgZW52ICh4IGVudikpXG4gICAgICAoKiBuZXh0IHN0ZXAgW01vcmVdICopXG4gICAgICB8IE1vcmUgbW9yZSwgXyAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0bCAtPiB0bCA8Kj4gdF9yaWdodClcbiAgICAgIHwgRG9uZSBfLCBNb3JlIG1vcmUgLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdHIgLT4gdF9sZWZ0IDwqPiB0cilcbiAgICAgICgqIG5leHQgc3RlcCBbT25seV9mb3JfY29tcGxldGlvbl0gKilcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfLCBfIHwgRG9uZSBfLCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiB0X2xlZnQgQCBwYWNrX2Zvcl9jb21wbGV0aW9uIHRfcmlnaHQpXG4gICAgICAoKiBuZXh0IHN0ZXAgW1N0b3BfcGFyc2luZ10gKilcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHRsLCB0ciB8IChEb25lIF8gYXMgdGwpLCBTdG9wX3BhcnNpbmcgdHIgLT4gU3RvcF9wYXJzaW5nICh0bCA8Kj4gdHIpXG4gICAgICAoKiBuZXh0IHN0ZXAgW1Rlc3RdICopXG4gICAgICB8IFRlc3QgdGVzdCwgXyAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdGVzdCB+bW9yZSA8Kj4gdF9yaWdodClcbiAgICAgIHwgRG9uZSBfLCBUZXN0IHRlc3QgLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRfbGVmdCA8Kj4gdGVzdCB+bW9yZSlcbiAgICA7O1xuXG4gICAgbGV0ICggPj58ICkgdCBmID0gcmV0dXJuIGYgPCo+IHRcblxuICAgIGxldCBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBsZXQgcGFyc2UgYW5vbiB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhbm9uIHdpdGhcbiAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICBpZiBmb3JfY29tcGxldGlvblxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIHdlIGRvbid0ICpyZWFsbHkqIGNhcmUgYWJvdXQgdGhpcyB2YWx1ZSwgc28ganVzdCBwdXQgaW4gYSBkdW1teSB2YWx1ZSBzb1xuICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYW4gY29udGludWUgKilcbiAgICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgICBlbHNlIGRpZSBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlU1xcbiVzXCIgbmFtZSBhbm9uIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgICAgfCBPayB2IC0+XG4gICAgICAgICAgeyBwYXJzZXIgPSByZXR1cm4gdlxuICAgICAgICAgIDsgdXBkYXRlX2VudiA9XG4gICAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICAgIE9wdGlvbi5mb2xkIChBcmdfdHlwZS5rZXkgYXJnX3R5cGUpIH5pbml0OmVudiB+ZjooZnVuIGVudiBrZXkgLT5cbiAgICAgICAgICAgICAgICAgICBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOnYpKVxuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlID0gQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUgfVxuICAgIDs7XG5cbiAgICBsZXQgb25lIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlXG4gICAgICAgICAgIHRoZW4gb25lX21vcmUgfm5hbWUgYXJnX3R5cGVcbiAgICAgICAgICAgZWxzZSBkaWUgXCJtaXNzaW5nIGFub255bW91cyBhcmd1bWVudDogJXNcIiBuYW1lICgpKVxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgdCA9IFRlc3QgKGZ1biB+bW9yZSAtPiBpZiBtb3JlIHRoZW4gdCA+PnwgZnVuIGEgLT4gU29tZSBhIGVsc2UgcmV0dXJuIE5vbmUpXG5cbiAgICBsZXQgc2VxdWVuY2UgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPVxuICAgICAgICBUZXN0XG4gICAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICAgIGlmIG1vcmUgdGhlbiByZXR1cm4gKGZ1biB2IGFjYyAtPiB2IDo6IGFjYykgPCo+IHQgPCo+IGxvb3AgZWxzZSByZXR1cm4gW10pXG4gICAgICBpblxuICAgICAgbG9vcFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX3ZhbHVlIHQgZW52ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIGEgLT4gYSBlbnZcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gZmluYWxfdmFsdWUgdCBlbnZcbiAgICAgIHwgVGVzdCBmIC0+IGZpbmFsX3ZhbHVlIChmIH5tb3JlOmZhbHNlKSBlbnZcbiAgICAgIHwgTW9yZSB7IG5hbWU7IF8gfSAtPiBkaWUgXCJtaXNzaW5nIGFub255bW91cyBhcmd1bWVudDogJXNcIiBuYW1lICgpXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICBmYWlsd2l0aCBcIkJVRzogYXNrZWQgZm9yIGZpbmFsIHZhbHVlIHdoZW4gZG9pbmcgY29tcGxldGlvblwiXG4gICAgOztcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgcGFyc2VyIDogJ2EgdFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBsZXQgcmVjIGNvbnN1bWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiBhIENvbnN1bWVfcmVzdWx0LnQgPVxuICAgICAgZnVuIHQgYXJnIH5mb3JfY29tcGxldGlvbiAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgXyAtPiBkaWUgXCJ0b28gbWFueSBhbm9ueW1vdXMgYXJndW1lbnRzXCIgKClcbiAgICAgIHwgVGVzdCBmIC0+IGNvbnN1bWUgKGYgfm1vcmU6dHJ1ZSkgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgfCBNb3JlIHsgcGFyc2U7IF8gfSAtPlxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiB9XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IHsgKGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uKSB3aXRoIHBhcnNlX2ZsYWdzID0gZmFsc2UgfVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBhY2tlZCAtPlxuICAgICAgICAobWF0Y2ggcGFja2VkIHdpdGhcbiAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICB8IFBhY2tlZCB0IDo6IHJlc3QgLT5cbiAgICAgICAgICAgbGV0ICh7IHVwZGF0ZV9lbnY7IHBhcnNlX2ZsYWdzOyBwYXJzZXIgfSA6IF8gQ29uc3VtZV9yZXN1bHQudCkgPVxuICAgICAgICAgICAgIGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdXBkYXRlX2VudlxuICAgICAgICAgICA7IHBhcnNlX2ZsYWdzXG4gICAgICAgICAgIDsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiBwYXJzZXIgQCByZXN0KVxuICAgICAgICAgICB9KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbXBsZXRlIDogdHlwZSBhLiBhIHQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gbmV2ZXJfcmV0dXJucyA9XG4gICAgICBmdW4gdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRG9uZSBfIC0+IGV4aXQgMFxuICAgICAgICB8IFRlc3QgZiAtPiBjb21wbGV0ZSAoZiB+bW9yZTp0cnVlKSBlbnYgfnBhcnRcbiAgICAgICAgfCBNb3JlIHsgY29tcGxldGU7IF8gfSAtPiBDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXBsZXRlIGVudiB+cGFydFxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0XG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IGV4aXQgMFxuICAgICAgICAgICB8IFBhY2tlZCB0IDo6IF8gLT4gY29tcGxldGUgdCBlbnYgfnBhcnQpXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBQYXJzZXIuRm9yX29wZW5pbmdcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcCA6ICdhIFBhcnNlci50XG4gICAgOyBncmFtbWFyIDogR3JhbW1hci50XG4gICAgfVxuXG4gIGxldCB0MiB0MSB0MiA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgLT4gYTEsIGEyKSA8Kj4gdDEucCA8Kj4gdDIucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0MyB0MSB0MiB0MyA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgLT4gYTEsIGEyLCBhMykgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDQgdDEgdDIgdDMgdDQgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIGE0IC0+IGExLCBhMiwgYTMsIGE0KSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucCA8Kj4gdDQucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hcjsgdDQuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCBub3JtYWxpemUgc3RyID1cbiAgICAoKiBWZXJpZnkgdGhlIHN0cmluZyBpcyBub3QgZW1wdHkgb3Igc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlICopXG4gICAgbGV0IHN0cmxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgc3RybGVuID0gMCB0aGVuIGZhaWx3aXRoIFwiRW1wdHkgYW5vbnltb3VzIGFyZ3VtZW50IG5hbWUgcHJvdmlkZWRcIjtcbiAgICBpZiBTdHJpbmcuKCA8PiApIChTdHJpbmcuc3RyaXAgc3RyKSBzdHJcbiAgICB0aGVuIGZhaWx3aXRoZiBcImFyZ3VtZW50IG5hbWUgJVMgaGFzIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2VcIiBzdHIgKCk7XG4gICAgKCogSWYgdGhlIHN0cmluZyBjb250YWlucyBzcGVjaWFsIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGRvbid0IGRvIGFueXRoaW5nICopXG4gICAgbGV0IGhhc19zcGVjaWFsX2NoYXJzID1cbiAgICAgIGxldCBzcGVjaWFsX2NoYXJzID0gQ2hhci5TZXQub2ZfbGlzdCBbICc8JzsgJz4nOyAnWyc7ICddJzsgJygnOyAnKSc7ICd7JzsgJ30nIF0gaW5cbiAgICAgIFN0cmluZy5leGlzdHMgc3RyIH5mOihTZXQubWVtIHNwZWNpYWxfY2hhcnMpXG4gICAgaW5cbiAgICBpZiBoYXNfc3BlY2lhbF9jaGFycyB0aGVuIHN0ciBlbHNlIFN0cmluZy51cHBlcmNhc2Ugc3RyXG4gIDs7XG5cbiAgbGV0ICggJTogKSBuYW1lIGFyZ190eXBlID1cbiAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgeyBwID0gUGFyc2VyLm9uZSB+bmFtZSBhcmdfdHlwZTsgZ3JhbW1hciA9IEdyYW1tYXIub25lIG5hbWUgfVxuICA7O1xuXG4gIGxldCBtYXBfYW5vbnMgdCB+ZiA9IHsgcCA9IHQucCA+PnwgZjsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG4gIGxldCBtYXliZSB0ID0geyBwID0gUGFyc2VyLm1heWJlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWF5YmUgdC5ncmFtbWFyIH1cblxuICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0IGRlZmF1bHQgdCA9XG4gICAgbGV0IHQgPSBtYXliZSB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biB2IC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCB2KSB9XG4gIDs7XG5cbiAgbGV0IHNlcXVlbmNlIHQgPSB7IHAgPSBQYXJzZXIuc2VxdWVuY2UgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYW55IHQuZ3JhbW1hciB9XG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0ID0gdDIgdCAoc2VxdWVuY2UgdClcblxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgdCA9XG4gICAgbGV0IHQgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biAoeCwgeHMpIC0+IHggOjogeHMpIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIHQgPSB7IHAgPSBQYXJzZXIuc3RvcF9wYXJzaW5nIHQucDsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgYWRfaG9jIH51c2FnZV9hcmcgPVxuICAgICAgeyBwID1cbiAgICAgICAgICBQYXJzZXIuc2VxdWVuY2VcbiAgICAgICAgICAgIChQYXJzZXIub25lIH5uYW1lOlwiV0lMTCBORVZFUiBCRSBQUklOVEVEXCIgQXJnX3R5cGUuRXhwb3J0LnN0cmluZylcbiAgICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuYWRfaG9jIH51c2FnZTp1c2FnZV9hcmdcbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ21kbGluZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mIHN0cmluZyAqIHRcbiAgICB8IENvbXBsZXRlIG9mIHN0cmluZ1xuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBvZl9saXN0IGFyZ3MgPSBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpOaWwgfmY6KGZ1biBhcmcgYXJncyAtPiBDb25zIChhcmcsIGFyZ3MpKVxuXG4gIGxldCByZWMgdG9fbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHgsIHhzKSAtPiB4IDo6IHRvX2xpc3QgeHNcbiAgICB8IENvbXBsZXRlIHggLT4gWyB4IF1cbiAgOztcblxuICBsZXQgcmVjIGVuZHNfaW5fY29tcGxldGUgPSBmdW5jdGlvblxuICAgIHwgQ29tcGxldGUgXyAtPiB0cnVlXG4gICAgfCBOaWwgLT4gZmFsc2VcbiAgICB8IENvbnMgKF8sIGFyZ3MpIC0+IGVuZHNfaW5fY29tcGxldGUgYXJnc1xuICA7O1xuXG4gIGxldCBleHRlbmQgdCB+ZXh0ZW5kIH5wYXRoID1cbiAgICBpZiBlbmRzX2luX2NvbXBsZXRlIHRcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwYXRoX2xpc3QgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W10gKExpc3QudGwgKFBhdGgucGFydHMgcGF0aCkpIGluXG4gICAgICBvZl9saXN0ICh0b19saXN0IHQgQCBleHRlbmQgcGF0aF9saXN0KSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBTaGFwZS5Qcml2YXRlLktleV90eXBlXG5cbmxldCBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUgZmxhZ19vcl9zdWJjb21tYW5kID1cbiAgaWYgU3RyaW5nLmV4aXN0cyBmbGFnX29yX3N1YmNvbW1hbmQgfmY6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnXycpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiJXMgJXMgY29udGFpbnMgYW4gdW5kZXJzY29yZS4gVXNlIGEgZGFzaCBpbnN0ZWFkLlwiXG4gICAgICAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKVxuICAgICAgZmxhZ19vcl9zdWJjb21tYW5kXG4gICAgICAoKVxuOztcblxubGV0IG5vcm1hbGl6ZSBrZXlfdHlwZSBrZXkgPVxuICBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUga2V5O1xuICBtYXRjaCBrZXlfdHlwZSB3aXRoXG4gIHwgS2V5X3R5cGUuRmxhZyAtPlxuICAgIGlmIFN0cmluZy5lcXVhbCBrZXkgXCItXCIgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuZXhpc3RzIGtleSB+ZjpDaGFyLmlzX3doaXRlc3BhY2VcbiAgICB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWUgKGNvbnRhaW5zIHdoaXRlc3BhY2UpOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCItXCIga2V5IHRoZW4ga2V5IGVsc2UgXCItXCIgXiBrZXlcbiAgfCBLZXlfdHlwZS5TdWJjb21tYW5kIC0+IFN0cmluZy5sb3dlcmNhc2Uga2V5XG47O1xuXG5sZXQgbG9va3VwX2V4cGFuZCA9IFNoYXBlLlByaXZhdGUubG9va3VwX2V4cGFuZFxuXG5sZXQgbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgbWFwIHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBhbGlzdCA9XG4gICAgTGlzdC5jb25jYXRfbWFwIChTdHJpbmcuTWFwLmRhdGEgbWFwKSB+ZjooZnVuIGZsYWcgLT5cbiAgICAgIGxldCB7IEZsYWcuSW50ZXJuYWwubmFtZVxuICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICA7IGFjdGlvbiA9IF9cbiAgICAgICAgICA7IGRvYyA9IF9cbiAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICB9XG4gICAgICAgID1cbiAgICAgICAgZmxhZ1xuICAgICAgaW5cbiAgICAgIGxldCBkYXRhID0gZmxhZywgbmFtZV9tYXRjaGluZyBpblxuICAgICAgbGV0IGFsaWFzZXMgPSBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCBAIGFsaWFzZXMgaW5cbiAgICAgIChuYW1lLCBkYXRhKSA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4gYWxpYXMgLT4gYWxpYXMsIGRhdGEpKVxuICBpblxuICBtYXRjaCBMaXN0LmZpbmRfYV9kdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHdpdGhcbiAgfCBOb25lIC0+IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlXG4gIHwgU29tZSAoZmxhZywgXykgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG47O1xuXG5tb2R1bGUgQmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IGZsYWdzIDogRmxhZy5JbnRlcm5hbC50IFN0cmluZy5NYXAudFxuICAgIDtcbiAgICAgIGFub25zIDogdW5pdCAtPiAoWyBgUGFyc2VfYXJncyBdIC0+IFsgYFJ1bl9tYWluIF0gLT4gdW5pdCkgQW5vbnMuUGFyc2VyLnRcbiAgICA7IHVzYWdlIDogQW5vbnMuR3JhbW1hci50XG4gICAgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IHN1YmNvbW1hbmRfY21wX2ZzdCAoYSwgXykgKGMsIF8pID0gaGVscF9zY3JlZW5fY29tcGFyZSBhIGNcblxuICAgIGxldCBmbGFnc19oZWxwID8oZGlzcGxheV9oZWxwX2ZsYWdzID0gdHJ1ZSkgdCA9XG4gICAgICBsZXQgZmxhZ3MgPSBTdHJpbmcuTWFwLmRhdGEgdC5mbGFncyBpblxuICAgICAgbGV0IGZsYWdzID1cbiAgICAgICAgaWYgZGlzcGxheV9oZWxwX2ZsYWdzXG4gICAgICAgIHRoZW4gZmxhZ3NcbiAgICAgICAgZWxzZSBMaXN0LmZpbHRlciBmbGFncyB+ZjooZnVuIGYgLT4gU3RyaW5nLiggPD4gKSBmLm5hbWUgXCItaGVscFwiKVxuICAgICAgaW5cbiAgICAgIExpc3QuY29uY2F0X21hcCB+ZjpGbGFnLkludGVybmFsLkRlcHJlY2F0ZWQuaGVscCBmbGFnc1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmb3JtYXR0ZWRfZmxhZ3MgdCA9XG4gICAgU3RyaW5nLk1hcC5kYXRhIHQuZmxhZ3NcbiAgICB8PiBMaXN0Lm1hcCB+ZjpGbGFnLkludGVybmFsLmFsaWduXG4gICAgKCogdGhpcyBzb3J0IHB1dHMgb3B0aW9uYWwgZmxhZ3MgYWZ0ZXIgcmVxdWlyZWQgb25lcyAqKVxuICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBTdHJpbmcuY29tcGFyZSBhLm5hbWUgYi5uYW1lKVxuICAgIHw+IFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnNvcnRcbiAgOztcblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkJhc2VfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgdC5yZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKVxuICAgIDsgYW5vbnMgPSBHcmFtbWFyIHQudXNhZ2VcbiAgICA7IGZsYWdzID0gZm9ybWF0dGVkX2ZsYWdzIHRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHBhdGhfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJwYXRoXCJcbiAgbGV0IGFyZ3Nfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJhcmdzXCJcbiAgbGV0IGhlbHBfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJoZWxwXCJcblxuICBsZXQgaW5kZW50X2J5XzIgc3RyID1cbiAgICBTdHJpbmcuc3BsaXQgfm9uOidcXG4nIHN0clxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBcIiAgXCIgXiBsaW5lKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgPVxuICAgIG1hdGNoIGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIHQuZmxhZ3MgYXJnIEZsYWcgd2l0aFxuICAgIHwgRXJyb3IgbXNnIC0+IGRpZSBcIiVzXCIgbXNnICgpXG4gICAgfCBPayAoZmxhZ19uYW1lLCBmbGFnKSAtPiBmbGFnX25hbWUsIGZsYWcuYWN0aW9uXG4gIDs7XG5cbiAgbGV0IHJ1bl9mbGFnIHQgZW52IGFyZyAoYXJncyA6IENtZGxpbmUudCkgPVxuICAgIGxldCBmbGFnLCBhY3Rpb24gPSBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnIGluXG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgaW5mbyAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgKCogSWYgd2UncmUgZG9pbmcgY29tcGxldGlvbiwgdmVyc2lvbi9oZWxwIGluZm8gYXJlbid0IHVzZWZ1bCBjb21wbGV0aW9uXG4gICAgICAgICByZXNwb25zZXMuICopXG4gICAgICBpZiBjb21wbGV0aW5nXG4gICAgICB0aGVuIGVudiwgYXJnc1xuICAgICAgZWxzZSAoXG4gICAgICAgIHByaW50X2VuZGxpbmUgKGluZm8gZW52KTtcbiAgICAgICAgZXhpdCAwKVxuICAgIHwgTm9fYXJnIGYgLT4gZiBlbnYsIGFyZ3NcbiAgICB8IEFyZyAoZiwgY29tcCkgLT5cbiAgICAgIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICB8IE5pbCAtPiBkaWUgXCJtaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFnICVzXCIgZmxhZyAoKVxuICAgICAgIHwgQ29ucyAoYXJnLCByZXN0KSAtPlxuICAgICAgICAgbGV0IGVudiA9XG4gICAgICAgICAgIHRyeSBmIGVudiBhcmcgd2l0aFxuICAgICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyBhcyBlIC0+XG4gICAgICAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIHJlc3QgdGhlbiBlbnYgZWxzZSByYWlzZSBlXG4gICAgICAgICBpblxuICAgICAgICAgZW52LCByZXN0XG4gICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+IG5ldmVyX3JldHVybnMgKENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcCBlbnYgfnBhcnQpKVxuICAgIHwgUmVzdCBmIC0+XG4gICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyB0aGVuIGV4aXQgMDtcbiAgICAgIGYgZW52IChDbWRsaW5lLnRvX2xpc3QgYXJncyksIE5pbFxuICA7O1xuXG4gIGxldCByZWMgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIChjbWRsaW5lIDogQ21kbGluZS50KSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzID1cbiAgICBtYXRjaCBjbWRsaW5lIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgTGlzdC5pdGVyIChTdHJpbmcuTWFwLmRhdGEgdC5mbGFncykgfmY6KGZ1biBmbGFnIC0+IGZsYWcuY2hlY2tfYXZhaWxhYmxlIGVudik7XG4gICAgICBBbm9ucy5QYXJzZXIuZmluYWxfdmFsdWUgcGFyc2VyIGVudlxuICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgaWYgcGFyc2VfZmxhZ3MgJiYgU3RyaW5nLmlzX3ByZWZpeCBwYXJ0IH5wcmVmaXg6XCItXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICBMaXN0Lml0ZXIgKFN0cmluZy5NYXAua2V5cyB0LmZsYWdzKSB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0IHRoZW4gcHJpbnRfZW5kbGluZSBuYW1lKTtcbiAgICAgICAgZXhpdCAwKVxuICAgICAgZWxzZSBuZXZlcl9yZXR1cm5zIChBbm9ucy5QYXJzZXIuY29tcGxldGUgcGFyc2VyIGVudiB+cGFydClcbiAgICB8IENvbnMgKGFyZywgYXJncykgLT5cbiAgICAgIGxldCBhcmcsIGFyZ3MsIGFyZ19pc19mbGFnID1cbiAgICAgICAgbWF0Y2ggcGFyc2VfZmxhZ3Mgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKG1hdGNoIGFyZywgYXJncyB3aXRoXG4gICAgICAgICAgICgqIHRoZSAnLWFub24nIGZsYWcgaXMgaGVyZSBhcyBhbiBlc2NhcGUgaGF0Y2ggaW4gY2FzZSB5b3UgaGF2ZSBhblxuICAgICAgICAgICAgICBhbm9ueW1vdXMgYXJndW1lbnQgdGhhdCBzdGFydHMgd2l0aCBhIGh5cGhlbi4gKilcbiAgICAgICAgICAgfCBcIi1hbm9uXCIsIENvbnMgKGFyZywgYXJncykgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICAgICAoKiBzdXBwb3J0IHRoZSBjb21tb24gVW5peCBjb252ZW50aW9uIHdoZXJlIFwiLVwiIG1lYW5zIHN0ZGluICopXG4gICAgICAgICAgIHwgXCItXCIsIF8gLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICAgICB8IF8sIF8gLT4gYXJnLCBhcmdzLCBTdHJpbmcuaXNfcHJlZml4IGFyZyB+cHJlZml4OlwiLVwiKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBhcmdfaXNfZmxhZyB3aXRoXG4gICAgICAgfCB0cnVlIC0+XG4gICAgICAgICBsZXQgZW52LCBhcmdzID0gcnVuX2ZsYWcgdCBlbnYgYXJnIGFyZ3MgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciBhcmdzIH5wYXJzZV9mbGFncyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICBsZXQgcGFyc2VfZmxhZ3MxID0gcGFyc2VfZmxhZ3MgaW5cbiAgICAgICAgIGxldCAoeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MyOyB1cGRhdGVfZW52IH1cbiAgICAgICAgICAgICAgOiBfIEFub25zLlBhcnNlci5Db25zdW1lX3Jlc3VsdC50KVxuICAgICAgICAgICA9XG4gICAgICAgICAgIEFub25zLlBhcnNlci5jb25zdW1lIHBhcnNlciBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVudiA9IHVwZGF0ZV9lbnYgZW52IGluXG4gICAgICAgICBsZXQgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczEgJiYgcGFyc2VfZmxhZ3MyIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgfnBhcnNlX2ZsYWdzIGFyZ3MgfmZvcl9jb21wbGV0aW9uKVxuICA7O1xuXG4gIGxldCBydW5fZXhuIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIF8gd2hlbiBmb3JfY29tcGxldGlvbiAtPiBleGl0IDBcbiAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzIH0gLT4gZXhpdCBzdGF0dXNcbiAgICB8IF8gLT5cbiAgICAgIGxldCBleG5fc3RyID1cbiAgICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPiBtc2dcbiAgICAgICAgfCBfIC0+IFNleHAudG9fc3RyaW5nX2h1bSBbJXNleHAgKGV4biA6IGV4bildXG4gICAgICBpblxuICAgICAgbGV0IHZlcmJvc2UgPSBPcHRpb24udmFsdWUgdmVyYm9zZV9vbl9wYXJzZV9lcnJvciB+ZGVmYXVsdDp0cnVlIGluXG4gICAgICBsZXQgZXJyb3JfbXNnID1cbiAgICAgICAgaWYgdmVyYm9zZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgfnNlcDpcIlxcblxcblwiXG4gICAgICAgICAgICBbIFwiRXJyb3IgcGFyc2luZyBjb21tYW5kIGxpbmU6XCJcbiAgICAgICAgICAgIDsgaW5kZW50X2J5XzIgZXhuX3N0clxuICAgICAgICAgICAgOyBcIkZvciB1c2FnZSBpbmZvcm1hdGlvbiwgcnVuXCJcbiAgICAgICAgICAgIDsgXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIC1oZWxwXFxuXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgZWxzZSBleG5fc3RyXG4gICAgICBpblxuICAgICAgcHJlcnJfZW5kbGluZSBlcnJvcl9tc2c7XG4gICAgICBleGl0IDFcbiAgOztcblxuICBsZXQgcnVuIHQgZW52IH53aGVuX3BhcnNpbmdfc3VjY2VlZHMgfnBhdGggfmFyZ3MgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmhlbHBfdGV4dCA9XG4gICAgbGV0IGZvcl9jb21wbGV0aW9uID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICBsZXQgZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gRW52LnNldCB+a2V5OnBhdGhfa2V5IH5kYXRhOnBhdGhcbiAgICAgIHw+IEVudi5zZXQgfmtleTphcmdzX2tleSB+ZGF0YTooQ21kbGluZS50b19saXN0IGFyZ3MpXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6aGVscF9rZXkgfmRhdGE6aGVscF90ZXh0XG4gICAgaW5cbiAgICBtYXRjaFxuICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgcnVuX2NtZGxpbmVcbiAgICAgICAgICB0XG4gICAgICAgICAgZW52XG4gICAgICAgICAgKHQuYW5vbnMgKCkpXG4gICAgICAgICAgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgfnBhcnNlX2ZsYWdzOnRydWVcbiAgICAgICAgICBhcmdzXG4gICAgICAgICAgYFBhcnNlX2FyZ3MpXG4gICAgd2l0aFxuICAgIHwgT2sgdGh1bmsgLT5cbiAgICAgIHdoZW5fcGFyc2luZ19zdWNjZWVkcyAoKTtcbiAgICAgIHRodW5rIGBSdW5fbWFpblxuICAgIHwgRXJyb3IgZXhuIC0+IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICA7O1xuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHsgZiA6IHVuaXQgLT4gKCdhIC0+ICdiKSBBbm9ucy5QYXJzZXIudFxuICAgICAgOyB1c2FnZSA6IHVuaXQgLT4gQW5vbnMuR3JhbW1hci50XG4gICAgICA7IGZsYWdzIDogdW5pdCAtPiBGbGFnLkludGVybmFsLnQgbGlzdFxuICAgICAgfVxuXG4gICAgKCogdGhlIChoaXN0b3JpY2FsKSByZWFzb24gdGhhdCBbcGFyYW1dIGlzIGRlZmluZWQgaW4gdGVybXMgb2YgW3RdIHJhdGhlciB0aGFuIHRoZVxuICAgICAgIG90aGVyIHdheSByb3VuZCBpcyB0aGF0IHRoZSBkZWxheWVkIGV2YWx1YXRpb24gbWF0dGVyZWQgZm9yIHNlcXVlbmNpbmcgb2ZcbiAgICAgICByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gcmVmIGNlbGxzIGluIHRoZSBvbGQgcmVwcmVzZW50YXRpb24gb2YgZmxhZ3MgKilcbiAgICB0eXBlICdhIHBhcmFtID0geyBwYXJhbSA6ICdtLiAoJ2EgLT4gJ20sICdtKSB0IH1cblxuICAgIG9wZW4gQW5vbnMuUGFyc2VyLkZvcl9vcGVuaW5nXG5cbiAgICBsZXQgYXBwIHQxIHQyIH5mID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIGYgPCo+IHQxLmYgKCkgPCo+IHQyLmYgKCkpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiB0Mi5mbGFncyAoKSBAIHQxLmZsYWdzICgpKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyB0MS51c2FnZSAoKTsgdDIudXNhZ2UgKCkgXSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgKCogU28gc2FkLiAgV2UgY2FuJ3QgZGVmaW5lIFthcHBseV0gaW4gdGVybXMgb2YgW2FwcF0gYmVjYXVzZSBvZiB0aGUgdmFsdWVcbiAgICAgICByZXN0cmljdGlvbi4gKilcbiAgICBsZXQgYXBwbHkgcGYgcHggPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID1cbiAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1biBtZiBteCBrIC0+IG1mIChmdW4gZiAtPiBteCAoZnVuIHggLT4gayAoZiB4KSkpKVxuICAgICAgICAgICAgICAgICA8Kj4gcGYucGFyYW0uZiAoKVxuICAgICAgICAgICAgICAgICA8Kj4gcHgucGFyYW0uZiAoKSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBweC5wYXJhbS5mbGFncyAoKSBAIHBmLnBhcmFtLmZsYWdzICgpKVxuICAgICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuY29uY2F0IFsgcGYucGFyYW0udXNhZ2UgKCk7IHB4LnBhcmFtLnVzYWdlICgpIF0pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgKCArKyApIHQxIHQyID0gYXBwIHQxIHQyIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKz4gKSB0MSBwMiA9IGFwcCB0MSBwMi5wYXJhbSB+ZjooZnVuIGYxIGYyIHggLT4gZjIgKGYxIHgpKVxuICAgIGxldCAoICs8ICkgdDEgcDIgPSBhcHAgcDIucGFyYW0gdDEgfmY6KGZ1biBmMiBmMSB4IC0+IGYxIChmMiB4KSlcblxuICAgIGxldCBzdGVwIGYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gZilcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZW1wdHkgOiAnbS4gKCdtLCAnbSkgdCA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiBGbi5pZClcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgY29uc3QgdiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuIGsgLT4gayB2KSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHAgfmYgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBwLnBhcmFtLmYgKCkgPj58IGZ1biBjIGsgLT4gYyAoZnVuIHYgLT4gayAoZiB2KSkpXG4gICAgICAgICAgOyBmbGFncyA9IHAucGFyYW0uZmxhZ3NcbiAgICAgICAgICA7IHVzYWdlID0gcC5wYXJhbS51c2FnZVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHdyYXAgZiB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gdC5mICgpID4+fCBmdW4gcnVuIG1haW4gLT4gZiB+cnVuIH5tYWluKVxuICAgICAgOyBmbGFncyA9IHQuZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB0LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvZl9wYXJhbXMgcGFyYW1zID1cbiAgICAgIGxldCB0ID0gcGFyYW1zLnBhcmFtIGluXG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHQuZiAoKSA+PnwgZnVuIHJ1biBtYWluIC0+IHJ1biBGbi5pZCBtYWluKVxuICAgICAgOyBmbGFncyA9IHQuZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB0LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCB0b19wYXJhbXMgKHQgOiAoJ2EsICdiKSB0KSA6ICgnYSAtPiAnYikgcGFyYW0gPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiB0LmYgKCkgPj58IGZ1biBmIGsgLT4gayBmKTsgZmxhZ3MgPSB0LmZsYWdzOyB1c2FnZSA9IHQudXNhZ2UgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfcGFyYW0gcCA9IHAucGFyYW1cbiAgICBsZXQgdG9fcGFyYW0gdCBtYWluID0gbWFwICh0b19wYXJhbXMgdCkgfmY6KGZ1biBrIC0+IGsgbWFpbilcblxuICAgIGxldCBsb29rdXAga2V5ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLmZyb21fZW52IChmdW4gZW52IG0gLT4gbSAoRW52LmZpbmRfZXhuIGVudiBrZXkpKSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcGF0aCA6IFBhdGgudCBwYXJhbSA9IGxvb2t1cCBwYXRoX2tleVxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgcGFyYW0gPSBsb29rdXAgYXJnc19rZXlcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgcGFyYW0gPSBsb29rdXAgaGVscF9rZXlcblxuICAgICgqIFRoaXMgaXMgb25seSB1c2VkIGludGVybmFsbHksIGZvciB0aGUgaGVscCBjb21tYW5kLiAqKVxuICAgIGxldCBlbnYgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIGVudikpXG4gICAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgdHlwZSAnYSBhbm9ucyA9ICdhIHRcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcblxuICAgICAgbGV0IGFub24gc3BlYyA9XG4gICAgICAgIEFub25zLkdyYW1tYXIuaW52YXJpYW50IHNwZWMuZ3JhbW1hcjtcbiAgICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHNwZWMucCA+PnwgZnVuIHYgayAtPiBrIHYpXG4gICAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IHNwZWMuZ3JhbW1hcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiB+ZmluYWxfYW5vbiA9XG4gICAgICBBbm9ucy5lc2NhcGUgKHQyIGZpbmFsX2Fub24gKHNlcXVlbmNlIChcIkFSR1wiICU6IHN0cmluZykpKSB8PiBhbm9uXG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEZsYWdcblxuICAgICAgdHlwZSAnYSBmbGFnID0gJ2EgdFxuXG4gICAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgICAgbGV0IG9uZV9vcl9tb3JlID0gb25lX29yX21vcmVcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG5cbiAgICAgIGxldCBmbGFnX2ludGVybmFsXG4gICAgICAgICAgICA/KGFsaWFzZXMgPSBbXSlcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIG1vZGVcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA9XG4gICAgICAgIGxldCBub3JtYWxpemUgZmxhZyA9IG5vcm1hbGl6ZSBLZXlfdHlwZS5GbGFnIGZsYWcgaW5cbiAgICAgICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgICAgICBsZXQgYWxpYXNlcyA9IExpc3QubWFwIH5mOm5vcm1hbGl6ZSBhbGlhc2VzIGluXG4gICAgICAgIGxldCB7IHJlYWQ7IGFjdGlvbjsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IG1vZGUgbmFtZSBpblxuICAgICAgICBsZXQgY2hlY2tfYXZhaWxhYmxlID1cbiAgICAgICAgICBtYXRjaCBudW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiAoaWdub3JlIDogVW5pdl9tYXAudCAtPiB1bml0KVxuICAgICAgICAgIHwgdHJ1ZSAtPiBmdW4gZW52IC0+IGlnbm9yZSAocmVhZCBlbnYgOiBfKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmFtZV9tYXRjaGluZyA9XG4gICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgZnVsbF9mbGFnX3JlcXVpcmVkIHRoZW4gYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgZWxzZSBgUHJlZml4XG4gICAgICAgIGluXG4gICAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIChyZWFkIGVudikpKVxuICAgICAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lXG4gICAgICAgICAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICAgICAgICAgICAgIDsgZG9jID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZm9yY2UgZXh0cmFfZG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGV4dHJhX2RvYyAtPiBbJXN0cmluZyBcIiV7ZG9jfSAle2V4dHJhX2RvY31cIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGRvYylcbiAgICAgICAgICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbGFnID0gZmxhZ19pbnRlcm5hbCB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6W11cblxuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGFyZ190eXBlXG4gICAgICAgICAgICBzZXhwX29mX2RlZmF1bHRcbiAgICAgICAgICAgIH5kZWZhdWx0XG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgID1cbiAgICAgICAgbGV0IGRvYyA9XG4gICAgICAgICAgbWF0Y2ggc2V4cF9vZl9kZWZhdWx0IGRlZmF1bHQgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIFwiX1wiIC0+IGRvY1xuICAgICAgICAgIHwgZGVmYXVsdF9zZXhwIC0+IHNwcmludGYgIVwiJXMgKGRlZmF1bHQ6ICV7U2V4cH0pXCIgZG9jIGRlZmF1bHRfc2V4cFxuICAgICAgICBpblxuICAgICAgICBmbGFnXG4gICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIChvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSlcbiAgICAgICAgICB+ZG9jXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBwYXJhbVxuXG4gICAgICAgICAgbGV0IHJldHVybiA9IGNvbnN0XG4gICAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcGFpciA9IGJvdGhcbiAgICBlbmRcblxuICAgIGxldCBmbGFnc19vZl9hcmdzX2V4biBhcmdzID1cbiAgICAgIExpc3QuZm9sZCBhcmdzIH5pbml0OmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBzcGVjLCBkb2MpIC0+XG4gICAgICAgIGxldCBnZW4gZiBmbGFnX3R5cGUgPVxuICAgICAgICAgIHN0ZXAgKGZ1biBtIHggLT5cbiAgICAgICAgICAgIGYgeDtcbiAgICAgICAgICAgIG0pXG4gICAgICAgICAgKz4gZmxhZyBuYW1lIGZsYWdfdHlwZSB+ZG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYWxsIGYgYXJnX3R5cGUgPSBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmYpIChvcHRpb25hbCBhcmdfdHlwZSkgaW5cbiAgICAgICAgbGV0IHNldCByIGFyZ190eXBlID0gY2FsbCAoZnVuIHggLT4gciA6PSB4KSBhcmdfdHlwZSBpblxuICAgICAgICBsZXQgc2V0X2Jvb2wgciBiID0gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIHIgOj0gYikgbm9fYXJnIGluXG4gICAgICAgIGFjY1xuICAgICAgICArK1xuICAgICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgICAgfCBBcmcuVW5pdCBmIC0+IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiBmICgpKSBub19hcmdcbiAgICAgICAgfCBBcmcuU2V0IHIgLT4gc2V0X2Jvb2wgciB0cnVlXG4gICAgICAgIHwgQXJnLkNsZWFyIHIgLT4gc2V0X2Jvb2wgciBmYWxzZVxuICAgICAgICB8IEFyZy5TdHJpbmcgZiAtPiBjYWxsIGYgc3RyaW5nXG4gICAgICAgIHwgQXJnLlNldF9zdHJpbmcgciAtPiBzZXQgciBzdHJpbmdcbiAgICAgICAgfCBBcmcuSW50IGYgLT4gY2FsbCBmIGludFxuICAgICAgICB8IEFyZy5TZXRfaW50IHIgLT4gc2V0IHIgaW50XG4gICAgICAgIHwgQXJnLkZsb2F0IGYgLT4gY2FsbCBmIGZsb2F0XG4gICAgICAgIHwgQXJnLlNldF9mbG9hdCByIC0+IHNldCByIGZsb2F0XG4gICAgICAgIHwgQXJnLkJvb2wgZiAtPiBjYWxsIGYgYm9vbFxuICAgICAgICB8IEFyZy5TeW1ib2wgKHN5bXMsIGYpIC0+XG4gICAgICAgICAgbGV0IGFyZ190eXBlID1cbiAgICAgICAgICAgIEFyZ190eXBlLm9mX2FsaXN0X2V4blxuICAgICAgICAgICAgICB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZVxuICAgICAgICAgICAgICAoTGlzdC5tYXAgc3ltcyB+ZjooZnVuIHN5bSAtPiBzeW0sIHN5bSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjYWxsIGYgYXJnX3R5cGVcbiAgICAgICAgfCBBcmcuUmVzdCBmIC0+IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZjooTGlzdC5pdGVyIH5mKSkgZXNjYXBlXG4gICAgICAgIHwgQXJnLlR1cGxlIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5UdXBsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChBcmcuRXhwYW5kIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMDUsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5FeHBhbmQgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIlxuICAgICAgICB8ICgoQXJnLlJlc3RfYWxsIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTIsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5SZXN0X2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBGbGFnLkRlcHJlY2F0ZWRcbiAgICAgIGluY2x1ZGUgQW5vbnMuRGVwcmVjYXRlZFxuICAgIGVuZFxuXG4gICAgbGV0IGFyZ19uYW1lcyBwYXJhbSA9XG4gICAgICBsZXQgdCA9IHBhcmFtLnBhcmFtIGluXG4gICAgICBsZXQgZmxhZ19uYW1lcyA9IE1hcC5rZXlzIChGbGFnLkludGVybmFsLmNyZWF0ZSAodC5mbGFncyAoKSkpIGluXG4gICAgICBsZXQgYW5vbl9uYW1lcyA9IEFub25zLkdyYW1tYXIubmFtZXMgKHQudXNhZ2UgKCkpIGluXG4gICAgICBMaXN0LmNvbmNhdCBbIGZsYWdfbmFtZXM7IGFub25fbmFtZXMgXVxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ2hvb3NlX29uZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIENob2ljZV9uYW1lIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGxpc3RfdG9fc3RyaW5nIDogdCBsaXN0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgY3JlYXRlX2V4biA6ICdhIHBhcmFtIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biBwYXJhbSA9XG4gICAgICAgICAgbGV0IG5hbWVzID0gYXJnX25hbWVzIHBhcmFtIGluXG4gICAgICAgICAgbGV0IG5hbWVzX3dpdGhfY29tbWFzID0gTGlzdC5maWx0ZXIgbmFtZXMgfmY6KGZ1biBzIC0+IFN0cmluZy5jb250YWlucyBzICcsJykgaW5cbiAgICAgICAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgbmFtZXNfd2l0aF9jb21tYXMpXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJGb3Igc2ltcGxpY2l0eSwgW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBkb2VzIG5vdCBzdXBwb3J0IG5hbWVzIHdpdGggXFxcbiAgICAgICAgICAgICAgIGNvbW1hcy5cIlxuICAgICAgICAgICAgICBuYW1lc193aXRoX2NvbW1hc1xuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XTtcbiAgICAgICAgICBtYXRjaCBuYW1lcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2UgXCJbY2hvb3NlX29uZV0gZXhwZWN0cyBjaG9pY2VzIHRvIHJlYWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cIl1cbiAgICAgICAgICB8IF8gOjogXyAtPiBuYW1lc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCJcbiAgICAgICAgbGV0IGxpc3RfdG9fc3RyaW5nIHRzID0gTGlzdC5tYXAgdHMgfmY6dG9fc3RyaW5nIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcbiAgXCJcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGNob29zZV9vbmVcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgICh0cyA6IGEgb3B0aW9uIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0LCB0KVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdCAobW9kdWxlIENob2ljZV9uYW1lKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGNhbGxlZCB3aXRoIGR1cGxpY2F0ZSBuYW1lXCJcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIFslc2V4cF9vZjogQ2hvaWNlX25hbWUudF1cbiAgICAgICAgfCBgT2sgdHMgLT5cbiAgICAgICAgICBNYXAuZm9sZCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTp0IGluaXQgLT5cbiAgICAgICAgICAgIG1hcDIgaW5pdCB0IH5mOihmdW4gaW5pdCB2YWx1ZSAtPlxuICAgICAgICAgICAgICBPcHRpb24uZm9sZCB2YWx1ZSB+aW5pdCB+ZjooZnVuIGluaXQgdmFsdWUgLT4gKG5hbWUsIHZhbHVlKSA6OiBpbml0KSkpXG4gICAgICAgICAgfD4gbWFwIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBfIDo6IF8gOjogXyBhcyBwYXNzZWQgLT5cbiAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgIVwiQ2Fubm90IHBhc3MgbW9yZSB0aGFuIG9uZSBvZiB0aGVzZTogXFxuXFxcbiAgICAgICAgICAgICAgICAgXFwgICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAoTGlzdC5tYXAgcGFzc2VkIH5mOmZzdClcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgfCBbIChfLCB2YWx1ZSkgXSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIChfIDogYSkgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgIHwgUmFpc2UgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gKFNvbWUgdmFsdWUgOiBiKSlcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byB2YWx1ZSAtPiB2YWx1ZVxuICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICB8IFJhaXNlIC0+XG4gICAgICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICAgICFcIk11c3QgcGFzcyBvbmUgb2YgdGhlc2U6XFxuICAle0Nob2ljZV9uYW1lLmxpc3RfdG9fc3RyaW5nfVwiXG4gICAgICAgICAgICAgICAgICAgKE1hcC5rZXlzIHRzKVxuICAgICAgICAgICAgICAgICAgICgpKSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBDaG9vc2Vfb25lLklmX25vdGhpbmdfY2hvc2VuXG5cbiAgICBsZXQgY2hvb3NlX29uZSA9IENob29zZV9vbmUuY2hvb3NlX29uZVxuICAgIGxldCBhbmRfYXJnX25hbWVzIHQgPSBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBhcmdfbmFtZXMgdClcblxuICAgIGxldCBhbmRfYXJnX25hbWUgdCA9XG4gICAgICBtYXRjaCBhcmdfbmFtZXMgdCB3aXRoXG4gICAgICB8IFsgbmFtZSBdIC0+IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIG5hbWUpXG4gICAgICB8IG5hbWVzIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW2FuZF9hcmdfbmFtZV0gZXhwZWN0cyBleGFjdGx5IG9uZSBuYW1lLCBnb3RcIiB+XzoobmFtZXMgOiBzdHJpbmcgbGlzdCldXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIEdyb3VwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3QgTGF6eS50XG4gICAgOyBib2R5IDogKHBhdGg6c3RyaW5nIGxpc3QgLT4gdW5pdCkgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZSB0IDogXyBTaGFwZS5Hcm91cF9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyBzdWJjb21tYW5kcyA9IExhenkubWFwIHQuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnN1YmNvbW1hbmRfdG9fc2hhcGUpXG4gICAgfVxuICA7O1xuZW5kXG5cbmxldCBhYnNfcGF0aCA9IFNoYXBlLlByaXZhdGUuYWJzX3BhdGhcbmxldCBjb21wX2N3b3JkID0gQ29tbWFuZF9lbnZfdmFyLkNPTVBfQ1dPUkRcblxubW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyAoKiBJZiBbcGF0aF90b19leGVdIGlzIHJlbGF0aXZlLCBpbnRlcnByZXQgdy5yLnQuIFt3b3JraW5nX2Rpcl0gKilcbiAgICAgIHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBlbnYgOiBlbnYgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuRXhlY19pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IHQuY2hpbGRfc3ViY29tbWFuZFxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBIHByb3h5IGNvbW1hbmQgaXMgdGhlIHN0cnVjdHVyZSBvZiBhbiBFeGVjIGNvbW1hbmQgb2J0YWluZWQgYnkgcnVubmluZyBpdCBpbiBhXG4gICBzcGVjaWFsIHdheSAqKVxubW9kdWxlIFByb3h5ID0gc3RydWN0XG4gIG1vZHVsZSBLaW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgQmFzZSBvZiBTaGFwZS5CYXNlX2luZm8udFxuICAgICAgfCBHcm91cCBvZiAnYSBTaGFwZS5Hcm91cF9pbmZvLnRcbiAgICAgIHwgRXhlYyBvZiBTaGFwZS5FeGVjX2luZm8udFxuICAgICAgfCBMYXp5IG9mICdhIHQgTGF6eS50XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGtpbmQgOiB0IEtpbmQudFxuICAgIH1cbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2Ugb2YgQmFzZS50XG4gIHwgR3JvdXAgb2YgdCBHcm91cC50XG4gIHwgRXhlYyBvZiBFeGVjLnRcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgc2V4cGFibGVfc2hhcGUgOiB0IC0+IFNoYXBlLlNleHBhYmxlLnQgPSBmdW5jdGlvblxuICB8IEJhc2UgYmFzZSAtPiBCYXNlIChCYXNlLnNoYXBlIGJhc2UpXG4gIHwgRXhlYyBleGVjIC0+IEV4ZWMgKEV4ZWMuc2hhcGUgZXhlYylcbiAgfCBHcm91cCBncm91cCAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2V4cGFibGVfc2hhcGUgZ3JvdXApXG4gIHwgTGF6eSB0aHVuayAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzZXhwYWJsZV9zaGFwZSB0aHVuaylcbjs7XG5cbnR5cGUgKCdtYWluLCAncmVzdWx0KSBiYXNpY19zcGVjX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZ1xuICAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZylcbiAgLT4gKCdtYWluLCB1bml0IC0+ICdyZXN1bHQpIEJhc2UuU3BlYy50XG4gIC0+ICdtYWluXG4gIC0+IHRcblxubGV0IGV4dGVuZF9leG4gfm1lbSB+YWRkIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBpZiBtZW0gbWFwIGtleVxuICB0aGVuIGZhaWx3aXRoZiBcInRoZXJlIGlzIGFscmVhZHkgYSAlcyBuYW1lZCAlc1wiIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpIGtleSAoKTtcbiAgYWRkIG1hcCB+a2V5IH5kYXRhXG47O1xuXG5sZXQgZXh0ZW5kX21hcF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSB+bWVtOk1hcC5tZW0gfmFkZDpNYXAuc2V0XG47O1xuXG5sZXQgZXh0ZW5kX2FsaXN0X2V4biBhbGlzdCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuXG4gICAgYWxpc3RcbiAgICBrZXlfdHlwZVxuICAgIH5rZXlcbiAgICBkYXRhXG4gICAgfm1lbTooZnVuIGFsaXN0IGtleSAtPiBMaXN0LkFzc29jLm1lbSBhbGlzdCBrZXkgfmVxdWFsOlN0cmluZy5lcXVhbClcbiAgICB+YWRkOihmdW4gYWxpc3QgfmtleSB+ZGF0YSAtPiBMaXN0LkFzc29jLmFkZCBhbGlzdCBrZXkgZGF0YSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuOztcblxubW9kdWxlIEJhaWxvdXRfZHVtcF9mbGFnID0gc3RydWN0XG4gIGxldCBhZGQgYmFzZSB+bmFtZSB+YWxpYXNlcyB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgfnRleHQgfnRleHRfc3VtbWFyeSA9XG4gICAgbGV0IGZsYWdzID0gYmFzZS5CYXNlLmZsYWdzIGluXG4gICAgbGV0IGZsYWdzID1cbiAgICAgIGV4dGVuZF9tYXBfZXhuXG4gICAgICAgIGZsYWdzXG4gICAgICAgIEtleV90eXBlLkZsYWdcbiAgICAgICAgfmtleTpuYW1lXG4gICAgICAgIHsgbmFtZVxuICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgIDsgYWxpYXNlc1xuICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IEZsYWcuTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IGlnbm9yZVxuICAgICAgICA7IGFjdGlvbiA9IFByaW50X2luZm9fYW5kX3F1aXQgKGZ1biBlbnYgLT4gdGV4dCBlbnYpXG4gICAgICAgIDsgZG9jID0gc3ByaW50ZiBcIiBwcmludCAlcyBhbmQgZXhpdFwiIHRleHRfc3VtbWFyeVxuICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBgUHJlZml4XG4gICAgICAgIH1cbiAgICBpblxuICAgIHsgYmFzZSB3aXRoIEJhc2UuZmxhZ3MgfVxuICA7O1xuZW5kXG5cbmxldCBiYXNpY19zcGVjIH5zdW1tYXJ5ID9yZWFkbWUgeyBCYXNlLlNwZWMudXNhZ2U7IGZsYWdzOyBmIH0gbWFpbiA9XG4gIGxldCBmbGFncyA9IGZsYWdzICgpIGluXG4gIGxldCB1c2FnZSA9IHVzYWdlICgpIGluXG4gIGxldCBhbm9ucyAoKSA9XG4gICAgbGV0IG9wZW4gQW5vbnMuUGFyc2VyLkZvcl9vcGVuaW5nIGluXG4gICAgZiAoKVxuICAgID4+fCBmdW4gayBgUGFyc2VfYXJncyAtPlxuICAgIGxldCB0aHVuayA9IGsgbWFpbiBpblxuICAgIGZ1biBgUnVuX21haW4gLT4gdGh1bmsgKClcbiAgaW5cbiAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgZmxhZ3MgaW5cbiAgbGV0IGJhc2UgPSB7IEJhc2Uuc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3M7IGFub25zIH0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgYmFzZVxuICAgICAgfm5hbWU6XCItaGVscFwiXG4gICAgICB+YWxpYXNlczpbIFwiLT9cIiBdXG4gICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0taGVscFwiIF1cbiAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGlzIGhlbHAgdGV4dFwiXG4gICAgICB+dGV4dDooZnVuIGVudiAtPiBMYXp5LmZvcmNlIChFbnYuZmluZF9leG4gZW52IEJhc2UuaGVscF9rZXkpKVxuICBpblxuICBCYXNlIGJhc2Vcbjs7XG5cbmxldCBiYXNpYyA9IGJhc2ljX3NwZWNcbmxldCBzdWJzX2tleSA6IChzdHJpbmcgKiB0KSBsaXN0IEVudi5LZXkudCA9IEVudi5rZXlfY3JlYXRlIFwic3ViY29tbWFuZHNcIlxuXG5sZXQgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICBMYXp5Lm1hcCBhbGlzdCB+ZjooZnVuIGFsaXN0IC0+XG4gICAgICBsZXQgYWxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChuYW1lLCB0KSAtPiBub3JtYWxpemUgS2V5X3R5cGUuU3ViY29tbWFuZCBuYW1lLCB0KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFN0cmluZy5NYXAub2ZfYWxpc3QgYWxpc3Qgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIHN1YmNvbW1hbmRzIG5hbWVkICVzXCIgbmFtZSAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIChtYXRjaCBwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIHdpdGhcbiAgICAgICAgIHwgU29tZSAoKSAtPiBhbGlzdFxuICAgICAgICAgfCBOb25lIC0+IE1hcC50b19hbGlzdCBtYXApKVxuICBpblxuICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuOztcblxubGV0IGdyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSAoTGF6eS5mcm9tX3ZhbCBhbGlzdClcbjs7XG5cbmxldCBleGVjIH5zdW1tYXJ5ID9yZWFkbWUgPyhjaGlsZF9zdWJjb21tYW5kID0gW10pID9lbnYgfnBhdGhfdG9fZXhlICgpID1cbiAgbGV0IHdvcmtpbmdfZGlyID1cbiAgICBGaWxlbmFtZS5kaXJuYW1lXG4gICAgQEBcbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgXyB8IGBSZWxhdGl2ZV90b19tZSBfIC0+IENhbWwuU3lzLmV4ZWN1dGFibGVfbmFtZVxuICAgIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIF8gLT4gQ2FtbC5TeXMuYXJndi4oMClcbiAgaW5cbiAgbGV0IHBhdGhfdG9fZXhlID1cbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZS5pc19hYnNvbHV0ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBBYnNvbHV0ZSBtdXN0IGJlIGFic29sdXRlXCJcbiAgICAgIGVsc2UgcFxuICAgIHwgYFJlbGF0aXZlX3RvX21lIHAgfCBgUmVsYXRpdmVfdG9fYXJndjAgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZS5pc19yZWxhdGl2ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBSZWxhdGl2ZV90b19tZSBtdXN0IGJlIHJlbGF0aXZlXCJcbiAgICAgIGVsc2UgcFxuICBpblxuICBFeGVjIHsgc3VtbWFyeTsgcmVhZG1lOyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IGNoaWxkX3N1YmNvbW1hbmQ7IGVudiB9XG47O1xuXG5sZXQgb2ZfbGF6eSB0aHVuayA9IExhenkgdGh1bmtcblxubGV0IHJlYyBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIDogUHJveHkudFxuICA9XG4gIGxldCBraW5kID1cbiAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIGluXG4gIHsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBwYXRoX3RvX3N1YmNvbW1hbmQ7IGNoaWxkX3N1YmNvbW1hbmQ7IGtpbmQgfVxuXG5hbmQga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA9XG4gIG1hdGNoIChzZXhwYWJsZSA6IFNoYXBlLlNleHBhYmxlLnQpIHdpdGhcbiAgfCBCYXNlIGIgLT4gUHJveHkuS2luZC5CYXNlIGJcbiAgfCBFeGVjIGUgLT4gUHJveHkuS2luZC5FeGVjIGVcbiAgfCBMYXp5IGwgLT5cbiAgICBQcm94eS5LaW5kLkxhenlcbiAgICAgIChMYXp5Lm1hcCBsIH5mOihmdW4gc2V4cGFibGUgLT5cbiAgICAgICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kKSlcbiAgfCBHcm91cCBnIC0+XG4gICAgUHJveHkuS2luZC5Hcm91cFxuICAgICAgeyBnIHdpdGhcbiAgICAgICAgc3ViY29tbWFuZHMgPVxuICAgICAgICAgIExhenkubWFwXG4gICAgICAgICAgICBnLnN1YmNvbW1hbmRzXG4gICAgICAgICAgICB+ZjpcbiAgICAgICAgICAgICAgKExpc3QubWFwIH5mOihmdW4gKHN0ciwgc2V4cGFibGUpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBwYXRoX3RvX3N1YmNvbW1hbmQgPSBwYXRoX3RvX3N1YmNvbW1hbmQgQCBbIHN0ciBdIGluXG4gICAgICAgICAgICAgICAgIGxldCBwcm94eSA9XG4gICAgICAgICAgICAgICAgICAgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgc3RyLCBwcm94eSkpXG4gICAgICB9XG47O1xuXG5tb2R1bGUgdHlwZSBGb3JfdmVyc2lvbl9pbmZvID0gc2lnXG4gIG1vZHVsZSBWZXJzaW9uX3V0aWwgOiBWZXJzaW9uX3V0aWxcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIHR5cGUgdCA9IFRpbWVfZmxvYXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbl9pbmZvIChNIDogRm9yX3ZlcnNpb25faW5mbykgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0IHByaW50X3ZlcnNpb24gfnZlcnNpb24gPSBwcmludF9lbmRsaW5lIChmb3JjZSB2ZXJzaW9uKVxuICBsZXQgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbyA9IHByaW50X2VuZGxpbmUgKGZvcmNlIGJ1aWxkX2luZm8pXG5cbiAgbGV0IGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8gPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcInByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cIlxuICAgICAgQmFzZS5TcGVjLihcbiAgICAgICAgZW1wdHlcbiAgICAgICAgKz4gZmxhZyBcIi12ZXJzaW9uXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgdGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICs+IGZsYWcgXCItYnVpbGQtaW5mb1wiIG5vX2FyZyB+ZG9jOlwiIHByaW50IGJ1aWxkIGluZm8gZm9yIHRoaXMgYnVpbGRcIilcbiAgICAgIChmdW4gdmVyc2lvbl9mbGFnIGJ1aWxkX2luZm9fZmxhZyAtPlxuICAgICAgICAgaWYgYnVpbGRfaW5mb19mbGFnXG4gICAgICAgICB0aGVuIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm9cbiAgICAgICAgIGVsc2UgaWYgdmVyc2lvbl9mbGFnXG4gICAgICAgICB0aGVuIHByaW50X3ZlcnNpb24gfnZlcnNpb25cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICBwcmludF92ZXJzaW9uIH52ZXJzaW9uKTtcbiAgICAgICAgIGV4aXQgMClcbiAgOztcblxuICBsZXQgcmVjIGFkZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyB1bnZlcnNpb25lZCA9XG4gICAgbWF0Y2ggdW52ZXJzaW9uZWQgd2l0aFxuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYmFzZSA9XG4gICAgICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgICAgIGJhc2VcbiAgICAgICAgICB+bmFtZTpcIi12ZXJzaW9uXCJcbiAgICAgICAgICB+YWxpYXNlczpbXVxuICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS12ZXJzaW9uXCIgXVxuICAgICAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgdmVyc2lvbilcbiAgICAgIGluXG4gICAgICBsZXQgYmFzZSA9XG4gICAgICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgICAgIGJhc2VcbiAgICAgICAgICB+bmFtZTpcIi1idWlsZC1pbmZvXCJcbiAgICAgICAgICB+YWxpYXNlczpbXVxuICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1idWlsZC1pbmZvXCIgXVxuICAgICAgICAgIH50ZXh0X3N1bW1hcnk6XCJpbmZvIGFib3V0IHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSBidWlsZF9pbmZvKVxuICAgICAgaW5cbiAgICAgIEJhc2UgYmFzZVxuICAgIHwgR3JvdXAgZ3JvdXAgLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIGdyb3VwLkdyb3VwLnN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICBzdWJjb21tYW5kc1xuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcInZlcnNpb25cIlxuICAgICAgICAgICAgKGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8pKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgZ3JvdXAgd2l0aCBHcm91cC5zdWJjb21tYW5kcyB9XG4gICAgfCBFeGVjIGV4ZWMgLT4gRXhlYyBleGVjXG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBub3JtYWxpemVfdmVyc2lvbl9saW5lcyBsaW5lcyA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCIgKExpc3Quc29ydCBsaW5lcyB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZGVmYXVsdF92ZXJzaW9uID0gbGF6eSAobm9ybWFsaXplX3ZlcnNpb25fbGluZXMgVmVyc2lvbl91dGlsLnZlcnNpb25fbGlzdClcblxuICBsZXQgZGVmYXVsdF9idWlsZF9pbmZvID1cbiAgICBsYXp5XG4gICAgICAoKiBsYXp5IHRvIGF2b2lkIGxvYWRpbmcgYWxsIHRoZSB0aW1lIHpvbmUgc3R1ZmYgYXQgdG9wbGV2ZWwgKilcbiAgICAgIChWZXJzaW9uX3V0aWwucmVwcmludF9idWlsZF9pbmZvIFRpbWUuc2V4cF9vZl90KVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlZlcnNpb25faW5mb1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFZlcnNpb25fdXRpbCA9IHN0cnVjdFxuICAgICAgICAgIGxldCB2ZXJzaW9uX2xpc3QgPSBbIFwiaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlwiOyBcInNzaDovL2EvcGF0aF84YmFkZjAwZFwiIF1cbiAgICAgICAgICBsZXQgcmVwcmludF9idWlsZF9pbmZvIHRvX3NleHAgPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCBUaW1lX2Zsb2F0LmVwb2NoKVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgVGltZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFRpbWVfZmxvYXQudFxuXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gVGltZV9mbG9hdC50b19zdHJpbmdfdXRjIHQgfD4gU2V4cC5vZl9zdHJpbmdcbiAgICAgICAgZW5kXG4gICAgICBlbmQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCB2ZXJzaW9uIHdoZXJlIG11bHRpcGxlIHJlcG9zIGFyZSB1c2VkXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvbjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgICAgIGhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcbiAgICAgICAgc3NoOi8vYS9wYXRoXzhiYWRmMDBkIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCBidWlsZCBpbmZvXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm86KGxhenkgXCJzb21lIGJ1aWxkIGluZm9cIik7XG4gICAgICBbJWV4cGVjdCB7fCBzb21lIGJ1aWxkIGluZm8gfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IHJlYyBzdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNlIHggLT4geC5zdW1tYXJ5XG4gIHwgR3JvdXAgeCAtPiB4LnN1bW1hcnlcbiAgfCBFeGVjIHggLT4geC5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBzdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlNwZWNcblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwZWMgPSBTcGVjLkRlcHJlY2F0ZWRcblxuICBsZXQgc3VtbWFyeSA9IHN1bW1hcnlcblxuICBsZXQgcmVjIGdldF9mbGFnX25hbWVzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgYmFzZSAtPiBiYXNlLkJhc2UuZmxhZ3MgfD4gU3RyaW5nLk1hcC5rZXlzXG4gICAgfCBMYXp5IHRodW5rIC0+IGdldF9mbGFnX25hbWVzIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIHwgR3JvdXAgXyB8IEV4ZWMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgaGVscF9yZWN1cnNpdmUgfmNtZCB+d2l0aF9mbGFncyB+ZXhwYW5kX2RvdHMgdCBzID1cbiAgICBsZXQgcmVjIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgcyA9XG4gICAgICBsZXQgbmV3X3MgPSBzIF4gKGlmIGV4cGFuZF9kb3RzIHRoZW4gY21kIGVsc2UgXCIuXCIpIF4gXCIgXCIgaW5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICAgIGxldCBiYXNlX2hlbHAgPSBzIF4gY21kLCBzdW1tYXJ5IChCYXNlIGJhc2UpIGluXG4gICAgICAgIGlmIHdpdGhfZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGJhc2VfaGVscFxuICAgICAgICAgIDo6IExpc3QubWFwXG4gICAgICAgICAgICAgICB+ZjooZnVuIChmbGFnLCBoKSAtPiBuZXdfcyBeIGZsYWcsIGgpXG4gICAgICAgICAgICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAgICAgICAgICB+Y29tcGFyZTpCYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICAgICAgICAoQmFzZS5EZXByZWNhdGVkLmZsYWdzX2hlbHAgfmRpc3BsYXlfaGVscF9mbGFnczpmYWxzZSBiYXNlKSlcbiAgICAgICAgZWxzZSBbIGJhc2VfaGVscCBdXG4gICAgICB8IEdyb3VwIHsgc3VtbWFyeTsgc3ViY29tbWFuZHM7IHJlYWRtZSA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgICAgKHMgXiBjbWQsIHN1bW1hcnkpXG4gICAgICAgIDo6IChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6QmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gKGNtZCcsIHQpIC0+IGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kOmNtZCcgdCBuZXdfcykpXG4gICAgICB8IEV4ZWMgXyAtPlxuICAgICAgICAoKiBDb21tYW5kLmV4ZWMgZG9lcyBub3Qgc3VwcG9ydCBkZXByZWNhdGVkIGNvbW1hbmRzICopXG4gICAgICAgIFtdXG4gICAgaW5cbiAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3VuaXggKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBzdHJpbmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyKVxuXG4gIG1vZHVsZSBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IENvbW1hbmRfZW52X3Zhci50ID1cbiAgc3RydWN0XG4gICAgKCogV2UgZm9yY2UgYWNjZXNzIHRvIGVudiB2YXJzIHRvIGdvIHRocm91Z2ggW0NvbW1hbmRfZW52X3Zhcl0gc28gdGhhdCB3ZSBjYW4ga2VlcCBhblxuICAgICAgIGFjY3VyYXRlIGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgd2UgdXNlLiAqKVxuXG4gICAgaW5jbHVkZSBGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyXG5cbiAgICBtb2R1bGUgVW5peCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml4XG5cbiAgICAgIGxldCBwdXRlbnYgfmtleSB+ZGF0YSA9IHB1dGVudiB+a2V5OihDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSkgfmRhdGFcbiAgICAgIGxldCB1bnNldGVudiBrZXkgPSB1bnNldGVudiAoQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBrZXkpXG4gICAgICBsZXQgdW5zYWZlX2dldGVudiBrZXkgPSB1bnNhZmVfZ2V0ZW52IChDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSlcblxuICAgICAgdHlwZSBlbnYgPVxuICAgICAgICBbIGBSZXBsYWNlIG9mIChDb21tYW5kX2Vudl92YXIudCAqIHN0cmluZykgbGlzdFxuICAgICAgICB8IGBFeHRlbmQgb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nKSBsaXN0XG4gICAgICAgIHwgYE92ZXJyaWRlIG9mIChDb21tYW5kX2Vudl92YXIudCAqIHN0cmluZyBvcHRpb24pIGxpc3RcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgb2Ygc3RyaW5nIGxpc3RcbiAgICAgICAgXVxuXG4gICAgICBsZXQgY29udmVydF9lbnYgZW52ID1cbiAgICAgICAgbGV0IGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0ID1cbiAgICAgICAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGVudl92YXIsIHN0cikgLT4gQ29tbWFuZF9lbnZfdmFyLnRvX3N0cmluZyBlbnZfdmFyLCBzdHIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGVudiB3aXRoXG4gICAgICAgIHwgYFJlcGxhY2UgbGlzdCAtPiBgUmVwbGFjZSAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYEV4dGVuZCBsaXN0IC0+IGBFeHRlbmQgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBPdmVycmlkZSBsaXN0IC0+IGBPdmVycmlkZSAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYFJlcGxhY2VfcmF3IF8gYXMgcmVwbGFjZSAtPiByZXBsYWNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudiAoKSA9XG4gICAgICAgIGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnY6KE9wdGlvbi5tYXAgZW52IH5mOmNvbnZlcnRfZW52KSAoKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9wcm9jZXNzX2VudiA/d29ya2luZ19kaXIgP3Byb2dfc2VhcmNoX3BhdGggP2FyZ3YwIH5wcm9nIH5hcmdzIH5lbnYgKCkgPVxuICAgICAgICBjcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICA/d29ya2luZ19kaXJcbiAgICAgICAgICA/cHJvZ19zZWFyY2hfcGF0aFxuICAgICAgICAgID9hcmd2MFxuICAgICAgICAgIH5wcm9nXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+ZW52Oihjb252ZXJ0X2VudiBlbnYpXG4gICAgICAgICAgKClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG9wZW4gRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXJcblxuICAoKiBDbGVhciB0aGUgc2V0dGluZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhc3NvY2lhdGVkIHdpdGggY29tbWFuZC1saW5lXG4gICAgIGNvbXBsZXRpb24gYW5kIHJlY3Vyc2l2ZSBoZWxwIHNvIHRoYXQgc3VicHJvY2Vzc2VzIGRvbid0IHNlZSB0aGVtLlxuXG4gICAgIFVzZSBbdW5zYWZlX2dldGVudl0gc28gc2V0dWlkLXJvb3QgcHJvZ3JhbXMgY2FuIHN0aWxsIHJlYWQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgICBUaGVyZSBpcyBubyBzZWN1cml0eSByaXNrIGhlcmUgYmVjYXVzZSB0aGUgdmFsdWVzIGFyZSBvbmx5IHVzZWQgYXMgdHJpZ2dlcnMgdG8gZHVtcFxuICAgICBvdXQgY29tbWFuZCBpbmZvcm1hdGlvbi4gKilcbiAgbGV0IGdldGVudl9hbmRfY2xlYXIgdmFyID1cbiAgICBsZXQgdmFsdWUgPSBVbml4LnVuc2FmZV9nZXRlbnYgdmFyIGluXG4gICAgaWYgT3B0aW9uLmlzX3NvbWUgdmFsdWUgdGhlbiBVbml4LnVuc2V0ZW52IHZhcjtcbiAgICB2YWx1ZVxuICA7O1xuXG4gIGxldCBtYXliZV9jb21wX2N3b3JkICgpID0gZ2V0ZW52X2FuZF9jbGVhciBjb21wX2N3b3JkIHw+IE9wdGlvbi5tYXAgfmY6SW50Lm9mX3N0cmluZ1xuXG4gIGxldCBzZXRfY29tcF9jd29yZCBuZXdfdmFsdWUgPVxuICAgIGxldCBuZXdfdmFsdWUgPSBJbnQudG9fc3RyaW5nIG5ld192YWx1ZSBpblxuICAgIFVuaXgucHV0ZW52IH5rZXk6Y29tcF9jd29yZCB+ZGF0YTpuZXdfdmFsdWVcbiAgOztcblxuICBtb2R1bGUgRXhlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhlY1xuXG4gICAgbGV0IGV4ZWNfd2l0aF9hcmdzIHQgfmFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgIGxldCBwcm9nID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGUgaW5cbiAgICAgIGxldCBhcmdzID0gdC5jaGlsZF9zdWJjb21tYW5kIEAgYXJncyBpblxuICAgICAgbGV0IGVudiA9IHQuZW52IGluXG4gICAgICBPcHRpb24uaXRlciBtYXliZV9uZXdfY29tcF9jd29yZCB+ZjooZnVuIG4gLT5cbiAgICAgICAgKCogVGhlIGxvZ2ljIGZvciB0cmFja2luZyBbbWF5YmVfbmV3X2NvbXBfY3dvcmRdIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgd2hldGhlclxuICAgICAgICAgICB0aGlzIGV4ZWMgc3BlY2lmaWVzIGEgY2hpbGQgc3ViY29tbWFuZC4gSWYgaXQgZG9lcywgQ09NUF9DV09SRCBuZWVkcyB0byBiZSBzZXRcbiAgICAgICAgICAgaGlnaGVyIHRvIGFjY291bnQgZm9yIHRoZSBhcmd1bWVudHMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGlsZCBzdWJjb21tYW5kLiAqKVxuICAgICAgICBzZXRfY29tcF9jd29yZCAobiArIExpc3QubGVuZ3RoIHQuY2hpbGRfc3ViY29tbWFuZCkpO1xuICAgICAgbmV2ZXJfcmV0dXJuc1xuICAgICAgICAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5Vbml4LmV4ZWMgP2VudiB+cHJvZyB+YXJndjoocHJvZyA6OiBhcmdzKSAoKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYXBlLlNleHBhYmxlXG5cbiAgICBsZXQgcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciAocHJvY2Vzc19pbmZvIDogVW5peC5Qcm9jZXNzX2luZm8udCkgPVxuICAgICAgKCogV2UgbmVlZCB0byByZWFkIGVhY2ggb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZGVhZGxvY2tzXG4gICAgICAgICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBkZWNpZGVzIHRvIHdhaXQgZm9yIGEgcmVhZCBvbiBvbmUgYmVmb3JlIGNsb3NpbmcgdGhlIG90aGVyLlxuICAgICAgICAgQnVmZmVyaW5nIG1heSBoaWRlIHRoaXMgcHJvYmxlbSB1bnRpbCBvdXRwdXQgaXMgXCJzdWZmaWNpZW50bHkgbGFyZ2VcIi4gKilcbiAgICAgIGxldCBzdGFydF9yZWFkaW5nIGRlc2NyIGluZm8gPVxuICAgICAgICBsZXQgb3V0cHV0ID0gU2V0X29uY2UuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICAgIFRocmVhZC5jcmVhdGVcbiAgICAgICAgICAgIH5vbl91bmNhdWdodF9leG46YFByaW50X3RvX3N0ZGVyclxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgZGVzY3IgfD4gVW5peC5pbl9jaGFubmVsX29mX2Rlc2NyIHw+IEluX2NoYW5uZWwuaW5wdXRfYWxsKVxuICAgICAgICAgICAgICAgfD4gU2V0X29uY2Uuc2V0X2V4biBvdXRwdXQgWyVoZXJlXSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIHN0YWdlIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJlYWQuam9pbiB0aHJlYWQ7XG4gICAgICAgICAgVW5peC5jbG9zZSBkZXNjcjtcbiAgICAgICAgICBtYXRjaCBTZXRfb25jZS5nZXQgb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUcgZmFpbGVkIHRvIHJlYWRcIiAoaW5mbyA6IEluZm8udCldXG4gICAgICAgICAgfCBTb21lIChPayBvdXRwdXQpIC0+IG91dHB1dFxuICAgICAgICAgIHwgU29tZSAoRXJyb3IgZXhuKSAtPiByYWlzZSBleG4pXG4gICAgICBpblxuICAgICAgKCogV2UgbWlnaHQgaGFuZyBmb3JldmVyIHRyeWluZyB0byBqb2luIHRoZSByZWFkaW5nIHRocmVhZHMgaWYgdGhlIGNoaWxkIHByb2Nlc3Mga2VlcHNcbiAgICAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3Blbi4gTm90IGhhbmRsaW5nIHRoaXMgYmVjYXVzZSBJIHRoaW5rIHdlJ3ZlIG5ldmVyIHNlZW4gaXRcbiAgICAgICAgIGluIHRoZSB3aWxkIGRlc3BpdGUgcnVubmluZyB2dWxuZXJhYmxlIGNvZGUgZm9yIHllYXJzLiAqKVxuICAgICAgKCogV2UgaGF2ZSB0byBzdGFydCBib3RoIHRocmVhZHMgYmVmb3JlIGpvaW5pbmcgYW55IG9mIHRoZW0uICopXG4gICAgICBsZXQgZmluaXNoX3N0ZG91dCA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZG91dCAoSW5mby5vZl9zdHJpbmcgXCJzdGRvdXRcIikgaW5cbiAgICAgIGxldCBmaW5pc2hfc3RkZXJyID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3RkZXJyIChJbmZvLm9mX3N0cmluZyBcInN0ZGVyclwiKSBpblxuICAgICAgdW5zdGFnZSBmaW5pc2hfc3Rkb3V0ICgpLCB1bnN0YWdlIGZpbmlzaF9zdGRlcnIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQgPVxuICAgICAgbGV0IHByb2Nlc3NfaW5mbyA9XG4gICAgICAgIFVuaXguY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgKClcbiAgICAgICAgICB+cHJvZzooYWJzX3BhdGggfmRpcjp3b3JraW5nX2RpciBwYXRoX3RvX2V4ZSlcbiAgICAgICAgICB+YXJnczpjaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfmVudjpcbiAgICAgICAgICAgIChsZXQgaGVscF9zZXhwID0gc3VwcG9ydGVkX3ZlcnNpb25zIHw+IEludC5TZXQuc2V4cF9vZl90IHw+IFNleHAudG9fc3RyaW5nIGluXG4gICAgICAgICAgICAgYEV4dGVuZCBbIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCwgaGVscF9zZXhwIF0pXG4gICAgICBpblxuICAgICAgVW5peC5jbG9zZSBwcm9jZXNzX2luZm8uc3RkaW47XG4gICAgICBsZXQgc3Rkb3V0LCBzdGRlcnIgPSByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIHByb2Nlc3NfaW5mbyBpblxuICAgICAgaWdub3JlIChVbml4LndhaXQgKGBQaWQgcHJvY2Vzc19pbmZvLnBpZCkgOiBQaWQudCAqIFVuaXguRXhpdF9vcl9zaWduYWwudCk7XG4gICAgICAoKiBOb3cgd2UndmUga2lsbGVkIGFsbCB0aGUgcHJvY2Vzc2VzIGFuZCB0aHJlYWRzIHdlIG1hZGUuICopXG4gICAgICBtYXRjaCBzdGRvdXQgfD4gU2V4cC5vZl9zdHJpbmcgfD4gVmVyc2lvbmVkLnRfb2Zfc2V4cCB8PiBvZl92ZXJzaW9uZWQgd2l0aFxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiY2Fubm90IHBhcnNlIGNvbW1hbmQgc2hhcGVcIlxuICAgICAgICAgICAgICB+XzooZXhuIDogZXhuKVxuICAgICAgICAgICAgICAoc3Rkb3V0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAoc3RkZXJyIDogc3RyaW5nKV1cbiAgICAgIHwgdCAtPiB0XG4gICAgOztcblxuICAgIGxldCByZWMgZmluZCAodCA6IHQpIH5wYXRoX3RvX3N1YmNvbW1hbmQgPVxuICAgICAgbWF0Y2ggcGF0aF90b19zdWJjb21tYW5kIHdpdGhcbiAgICAgIHwgW10gLT4gdFxuICAgICAgfCBzdWIgOjogc3VicyAtPlxuICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICB8IEJhc2UgXyAtPiBmYWlsd2l0aGYgXCJ1bmV4cGVjdGVkIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgIHwgTGF6eSB0aHVuayAtPiBmaW5kIChMYXp5LmZvcmNlIHRodW5rKSB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICAgICB8IEV4ZWMgeyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IGNoaWxkX3N1YmNvbW1hbmQ7IF8gfSAtPlxuICAgICAgICAgICBmaW5kXG4gICAgICAgICAgICAgKG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQpXG4gICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZDooc3ViIDo6IChzdWJzIEAgY2hpbGRfc3ViY29tbWFuZCkpXG4gICAgICAgICB8IEdyb3VwIGcgLT5cbiAgICAgICAgICAgKG1hdGNoIExpc3QuQXNzb2MuZmluZCAoTGF6eS5mb3JjZSBnLnN1YmNvbW1hbmRzKSB+ZXF1YWw6U3RyaW5nLmVxdWFsIHN1YiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwidW5rbm93biBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICAgICB8IFNvbWUgdCAtPiBmaW5kIHQgfnBhdGhfdG9fc3ViY29tbWFuZDpzdWJzKSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgcHJveHlfb2ZfZXhlIH53b3JraW5nX2RpciBwYXRoX3RvX2V4ZSBjaGlsZF9zdWJjb21tYW5kID1cbiAgICBTZXhwYWJsZS5vZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgfD4gcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZDpbXVxuICA7O1xuXG4gIGxldCByZWMgc2hhcGVfb2ZfcHJveHkgcHJveHkgOiBTaGFwZS50ID0gc2hhcGVfb2ZfcHJveHlfa2luZCBwcm94eS5Qcm94eS5raW5kXG5cbiAgYW5kIHNoYXBlX29mX2V4ZSAoKSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyID1cbiAgICBzaGFwZV9vZl9wcm94eSAocHJveHlfb2ZfZXhlIH53b3JraW5nX2RpciBwYXRoX3RvX2V4ZSBjaGlsZF9zdWJjb21tYW5kKVxuXG4gIGFuZCBzaGFwZV9vZl9wcm94eV9raW5kIGtpbmQgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgQmFzZSBiIC0+IEJhc2ljIGJcbiAgICB8IExhenkgbCAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzaGFwZV9vZl9wcm94eV9raW5kIGwpXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBHcm91cFxuICAgICAgICB7IGcgd2l0aFxuICAgICAgICAgIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgZy5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c2hhcGVfb2ZfcHJveHkpXG4gICAgICAgIH1cbiAgICB8IEV4ZWMgKHsgY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICA7O1xuXG4gIGxldCByZWMgc2hhcGUgdCA6IFNoYXBlLnQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSBiIC0+IEJhc2ljIChCYXNlLnNoYXBlIGIpXG4gICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzaGFwZSBnKVxuICAgIHwgRXhlYyAoeyBFeGVjLmNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChFeGVjLnNoYXBlIGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICAgIHwgTGF6eSB0aHVuayAtPiBzaGFwZSAoTGF6eS5mb3JjZSB0aHVuaylcbiAgOztcblxuICBsZXQgZ2F0aGVyX2hlbHAgfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzIHNoYXBlID1cbiAgICBsZXQgcmVjIGxvb3AgcGF0aCBhY2Mgc2hhcGUgPVxuICAgICAgbGV0IHN0cmluZ19vZl9wYXRoID0gaWYgZXhwYW5kX2RvdHMgdGhlbiBQYXRoLnRvX3N0cmluZyBlbHNlIFBhdGgudG9fc3RyaW5nX2RvdHMgaW5cbiAgICAgIGxldCBnYXRoZXJfZ3JvdXAgcGF0aCBhY2Mgc3ViY29tbWFuZHMgPVxuICAgICAgICBsZXQgZmlsdGVyZWRfc3ViY29tbWFuZHMgPVxuICAgICAgICAgICgqIE9ubHkgc2hvdyB0aGUgW2hlbHBdIHN1YmNvbW1hbmQgYXQgdG9wLWxldmVsLiAqKVxuICAgICAgICAgIGlmIFBhdGguaXNfZW1wdHkgcGF0aFxuICAgICAgICAgIHRoZW4gc3ViY29tbWFuZHNcbiAgICAgICAgICBlbHNlIExpc3QuQXNzb2MucmVtb3ZlIH5lcXVhbDpTdHJpbmcuKCA9ICkgc3ViY29tbWFuZHMgXCJoZWxwXCJcbiAgICAgICAgaW5cbiAgICAgICAgZmlsdGVyZWRfc3ViY29tbWFuZHNcbiAgICAgICAgfD4gTGlzdC5zdGFibGVfc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBoZWxwX3NjcmVlbl9jb21wYXJlIChmc3QgYSkgKGZzdCBiKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkXG4gICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgfmY6KGZ1biAoYWNjIDogU2hhcGUuRmxhZ19pbmZvLnQgRnF1ZXVlLnQpIChzdWJjb21tYW5kLCBzaGFwZSkgLT5cbiAgICAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZCBpblxuICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIGluXG4gICAgICAgICAgICAgICBsZXQgZG9jID0gU2hhcGUuZ2V0X3N1bW1hcnkgc2hhcGUgaW5cbiAgICAgICAgICAgICAgIGxldCBhY2MgPSBGcXVldWUuZW5xdWV1ZSBhY2MgeyBuYW1lOyBkb2M7IGFsaWFzZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgICBpZiByZWN1cnNpdmUgdGhlbiBsb29wIHBhdGggYWNjIHNoYXBlIGVsc2UgYWNjKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICAgIHwgRXhlYyAoXywgc2hhcGUpIC0+XG4gICAgICAgICgqIElmIHRoZSBleGVjdXRhYmxlIGJlaW5nIGNhbGxlZCBkb2Vzbid0IHVzZSBbQ29yZS5Db21tYW5kXSwgdGhlbiBzZXhwIGV4dHJhY3Rpb25cbiAgICAgICAgICAgd2lsbCBmYWlsLiAqKVxuICAgICAgICAodHJ5IGxvb3AgcGF0aCBhY2MgKHNoYXBlICgpKSB3aXRoXG4gICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgfCBHcm91cCBnIC0+IGdhdGhlcl9ncm91cCBwYXRoIGFjYyAoTGF6eS5mb3JjZSBnLnN1YmNvbW1hbmRzKVxuICAgICAgfCBCYXNpYyBiIC0+XG4gICAgICAgIGlmIGZsYWdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBiLmZsYWdzXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBmbXQgLT4gU3RyaW5nLiggPD4gKSBmbXQubmFtZSBcIlstaGVscF1cIilcbiAgICAgICAgICB8PiBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIGZtdCAtPlxuICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOmZtdC5uYW1lIGluXG4gICAgICAgICAgICBsZXQgZm10ID0geyBmbXQgd2l0aCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCB9IGluXG4gICAgICAgICAgICBGcXVldWUuZW5xdWV1ZSBhY2MgZm10KVxuICAgICAgICBlbHNlIGFjY1xuICAgICAgfCBMYXp5IHRodW5rIC0+IGxvb3AgcGF0aCBhY2MgKExhenkuZm9yY2UgdGh1bmspXG4gICAgaW5cbiAgICBsb29wIFBhdGguZW1wdHkgRnF1ZXVlLmVtcHR5IHNoYXBlIHw+IEZxdWV1ZS50b19saXN0XG4gIDs7XG5cbiAgbGV0IGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IH5mbGFncyB+cGF0aCB+c3VtbWFyeSB+cmVhZG1lIH5mb3JtYXRfbGlzdCA9XG4gICAgdW5wYXJhZ3JhcGhzXG4gICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICBbIFNvbWUgc3VtbWFyeVxuICAgICAgICAgOyBTb21lIChTdHJpbmcuY29uY2F0IFsgXCIgIFwiOyBQYXRoLnRvX3N0cmluZyBwYXRoOyBcIiBTVUJDT01NQU5EXCIgXSlcbiAgICAgICAgIDsgcmVhZG1lXG4gICAgICAgICA7IFNvbWUgKGlmIGZsYWdzIHRoZW4gXCI9PT0gc3ViY29tbWFuZHMgYW5kIGZsYWdzID09PVwiIGVsc2UgXCI9PT0gc3ViY29tbWFuZHMgPT09XCIpXG4gICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBmb3JtYXRfbGlzdClcbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSA9XG4gICAgbGV0IGZvcm1hdF9saXN0ID0gZ2F0aGVyX2hlbHAgfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlIHNoYXBlIGluXG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgQmFzaWMgYiAtPlxuICAgICAgbGV0IHVzYWdlID0gU2hhcGUuQmFzZV9pbmZvLmdldF91c2FnZSBiIGluXG4gICAgICB1bnBhcmFncmFwaHNcbiAgICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgICBbIFNvbWUgYi5zdW1tYXJ5XG4gICAgICAgICAgIDsgU29tZSAoXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIFwiIF4gdXNhZ2UpXG4gICAgICAgICAgIDsgYi5yZWFkbWVcbiAgICAgICAgICAgOyBTb21lIFwiPT09IGZsYWdzID09PVwiXG4gICAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGIuZmxhZ3MpXG4gICAgICAgICAgIF0pXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTpnLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTpnLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBFeGVjIChlLCBfKSAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6ZS5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6ZS5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgTGF6eSB0aHVuayAtPiBoZWxwX2Zvcl9zaGFwZSAoTGF6eS5mb3JjZSB0aHVuaykgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmVcbiAgOztcblxuICBsZXQgaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUgPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcImV4cGxhaW4gYSBnaXZlbiBzdWJjb21tYW5kIChwZXJoYXBzIHJlY3Vyc2l2ZWx5KVwiXG4gICAgICBCYXNlLlNwZWMuKFxuICAgICAgICBlbXB0eVxuICAgICAgICArPiBmbGFnIFwiLXJlY3Vyc2l2ZVwiIG5vX2FyZyB+ZG9jOlwiIHNob3cgc3ViY29tbWFuZHMgb2Ygc3ViY29tbWFuZHMsIGV0Yy5cIlxuICAgICAgICArPiBmbGFnIFwiLWZsYWdzXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBmbGFncyBhcyB3ZWxsIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgKz4gZmxhZyBcIi1leHBhbmQtZG90c1wiIG5vX2FyZyB+ZG9jOlwiIGV4cGFuZCBzdWJjb21tYW5kcyBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgICs+IHBhdGhcbiAgICAgICAgKz4gZW52XG4gICAgICAgICs+IGFub24gKG1heWJlIChcIlNVQkNPTU1BTkRcIiAlOiBzdHJpbmcpKSlcbiAgICAgIChmdW4gcmVjdXJzaXZlIGZsYWdzIGV4cGFuZF9kb3RzIHBhdGggKGVudiA6IEVudi50KSBjbWRfb3B0ICgpIC0+XG4gICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgIG1hdGNoIEVudi5maW5kIGVudiBzdWJzX2tleSB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdWJzIC0+IHN1YnNcbiAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAoKiBtYWludGFpbmVkIGJ5IFtkaXNwYXRjaF0gKilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5wb3BfaGVscCBwYXRoIGluXG4gICAgICAgICAgIE9wdGlvbi5mb2xkIGNtZF9vcHQgfmluaXQ6cGF0aCB+ZjooZnVuIHBhdGggc3ViY29tbWFuZCAtPlxuICAgICAgICAgICAgIFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHBhdGgsIHNoYXBlID1cbiAgICAgICAgICAgbWF0Y2ggY21kX29wdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHN1YnMgfmY6c2hhcGUgfD4gTGF6eS5mcm9tX3ZhbCBpblxuICAgICAgICAgICAgIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIGluXG4gICAgICAgICAgICAgcGF0aCwgU2hhcGUuR3JvdXAgeyByZWFkbWU7IHN1bW1hcnk7IHN1YmNvbW1hbmRzIH1cbiAgICAgICAgICAgfCBTb21lIGNtZCAtPlxuICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuQXNzb2MubWFwIHN1YnMgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpKSBjbWQgU3ViY29tbWFuZFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICAgXCJ1bmtub3duIHN1YmNvbW1hbmQgJXMgZm9yIGNvbW1hbmQgJXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgKFBhdGgudG9fc3RyaW5nIHBhdGgpXG4gICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICB8IE9rIChwb3NzaWJseV9leHBhbmRlZF9uYW1lLCB0KSAtPlxuICAgICAgICAgICAgICAgICgqIEZpeCB0aGUgdW5leHBhbmRlZCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5yZXBsYWNlX2ZpcnN0IH5mcm9tOmNtZCB+dG9fOnBvc3NpYmx5X2V4cGFuZGVkX25hbWUgcGF0aCBpblxuICAgICAgICAgICAgICAgIHBhdGgsIHNoYXBlIHQpXG4gICAgICAgICBpblxuICAgICAgICAgcHJpbnRfZW5kbGluZSAoaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMpKVxuICA7O1xuXG4gICgqIFRoaXMgc2NyaXB0IHdvcmtzIGluIGJvdGggYmFzaCAodmlhIHJlYWRhcnJheSkgYW5kIHpzaCAodmlhIHJlYWQgLUEpLiAgSWYgeW91IGNoYW5nZVxuICAgICBpdCwgcGxlYXNlIHRlc3QgaW4gYm90aCBiYXNoIGFuZCB6c2guICBJdCBkb2VzIG5vdCB3b3JrIHRjc2ggKGRpZmZlcmVudCBmdW5jdGlvblxuICAgICBzeW50YXgpLiAqKVxuICBsZXQgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCkgPVxuICAgIGxldCBmbmFtZSA9IHNwcmludGYgXCJfanNhdXRvY29tXyVzXCIgKFBpZC50b19zdHJpbmcgKFVuaXguZ2V0cGlkICgpKSkgaW5cbiAgICBsZXQgYXJndl8wID0gQ2FtbC5TeXMuYXJndi4oMCkgaW5cbiAgICBwcmludGZcbiAgICAgIFwiZnVuY3Rpb24gJXMge1xcblxcXG4gICAgICBcXCAgZXhwb3J0IENPTVBfQ1dPUkRcXG5cXFxuICAgICAgXFwgIENPTVBfV09SRFNbMF09JXNcXG5cXFxuICAgICAgXFwgIGlmIHR5cGUgcmVhZGFycmF5ID4gL2Rldi9udWxsXFxuXFxcbiAgICAgIFxcICB0aGVuIHJlYWRhcnJheSAtdCBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGVsc2UgSUZTPVxcXCJcXG5cXFxuICAgICAgIFxcXCIgcmVhZCAtZCBcXFwiXFxcIiAtQSBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGZpXFxuXFxcbiAgICAgICB9XFxuXFxcbiAgICAgICBjb21wbGV0ZSAtRiAlcyAlc1xcblxcXG4gICAgICAgJSFcIlxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICA7O1xuXG4gIGxldCBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgSW50LlNldC5pbnRlciBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnMgc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgfD4gSW50LlNldC5tYXhfZWx0XG4gICAgfD4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiQ291bGRuJ3QgY2hvb3NlIGEgc3VwcG9ydGVkIGhlbHAgb3V0cHV0IHZlcnNpb24gZm9yIENvbW1hbmQuZXhlYyBmcm9tIHRoZSBnaXZlbiBcXFxuICAgICAgICAgc3VwcG9ydGVkIHZlcnNpb25zLlwiXG4gICAgICAgIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9uc1xuICAgICAgICBJbnQuU2V0LnNleHBfb2ZfdFxuICAgIHwgU29tZSB2ZXJzaW9uX3RvX3VzZSAtPlxuICAgICAgc2V4cGFibGVfc2hhcGUgdFxuICAgICAgfD4gU2V4cGFibGUuZmluZCB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICB8PiBTZXhwYWJsZS50b192ZXJzaW9uZWQgfnZlcnNpb25fdG9fdXNlXG4gICAgICB8PiBTZXhwYWJsZS5WZXJzaW9uZWQuc2V4cF9vZl90XG4gICAgICB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgfD4gcHJpbnRfc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2ID1cbiAgICBtYXRjaCBhcmd2IHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibWlzc2luZyBleGVjdXRhYmxlIG5hbWVcIlxuICAgIHwgY21kIDo6IGFyZ3MgLT5cbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCkgfmY6KGZ1biB2ZXJzaW9uIC0+XG4gICAgICAgIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPSBTZXhwLm9mX3N0cmluZyB2ZXJzaW9uIHw+IEludC5TZXQudF9vZl9zZXhwIGluXG4gICAgICAgIGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kOmFyZ3M7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSCkgfmY6KGZ1biBfIC0+XG4gICAgICAgIGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpO1xuICAgICAgICBleGl0IDApO1xuICAgICAgY21kLCBhcmdzXG4gIDs7XG5cbiAgbGV0IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzID1cbiAgICBsZXQgbWF5YmVfY29tcF9jd29yZCA9IG1heWJlX2NvbXBfY3dvcmQgKCkgaW5cbiAgICBsZXQgYXJncyA9XG4gICAgICBtYXRjaCBtYXliZV9jb21wX2N3b3JkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBDbWRsaW5lLm9mX2xpc3QgYXJnc1xuICAgICAgfCBTb21lIGNvbXBfY3dvcmQgLT5cbiAgICAgICAgbGV0IGFyZ3MgPSBMaXN0LnRha2UgKGFyZ3MgQCBbIFwiXCIgXSkgY29tcF9jd29yZCBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpDbWRsaW5lLk5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+XG4gICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgfCBDbWRsaW5lLk5pbCAtPiBDbWRsaW5lLkNvbXBsZXRlIGFyZ1xuICAgICAgICAgIHwgXyAtPiBDbWRsaW5lLkNvbnMgKGFyZywgYXJncykpXG4gICAgaW5cbiAgICBQYXRoLmNyZWF0ZSB+cGF0aF90b19leGU6Y21kLCBhcmdzLCBtYXliZV9jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGRfaGVscF9zdWJjb21tYW5kcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIF8gYXMgdCAtPiB0XG4gICAgfCBFeGVjIF8gYXMgdCAtPiB0XG4gICAgfCBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfSAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIChMaXN0LkFzc29jLm1hcCBzdWJjb21tYW5kcyB+ZjphZGRfaGVscF9zdWJjb21tYW5kcylcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJoZWxwXCJcbiAgICAgICAgICAgIChoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSkpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkX2hlbHBfc3ViY29tbWFuZHMgKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCA9XG4gICAgT3B0aW9uLnZhbHVlX21hcCBleHRlbmQgfmRlZmF1bHQ6YXJncyB+ZjooZnVuIGYgLT5cbiAgICAgIENtZGxpbmUuZXh0ZW5kIGFyZ3MgfmV4dGVuZDpmIH5wYXRoKVxuICA7O1xuXG4gIGxldCByZWMgZGlzcGF0Y2hcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgfnBhdGhcbiAgICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgZGlzcGF0Y2hcbiAgICAgICAgdFxuICAgICAgICBlbnZcbiAgICAgICAgfmV4dGVuZFxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGFyZ3MgPSBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoIGluXG4gICAgICBsZXQgaGVscF90ZXh0ID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZSAoc2hhcGUgdCkgcGF0aCB+cmVjdXJzaXZlOmZhbHNlIH5mbGFnczp0cnVlIH5leHBhbmRfZG90czpmYWxzZSlcbiAgICAgIGluXG4gICAgICBCYXNlLnJ1blxuICAgICAgICBiYXNlXG4gICAgICAgIGVudlxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICB8IEV4ZWMgZXhlYyAtPlxuICAgICAgbGV0IGFyZ3MgPSBDbWRsaW5lLnRvX2xpc3QgKG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGgpIGluXG4gICAgICBFeGVjLmV4ZWNfd2l0aF9hcmdzIH5hcmdzIGV4ZWMgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgfCBHcm91cCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9IGFzIGdyb3VwKSAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgbGV0IGVudiA9IEVudi5zZXQgZW52IH5rZXk6c3Vic19rZXkgfmRhdGE6KExhenkuZm9yY2Ugc3VicykgaW5cbiAgICAgIGxldCBkaWVfc2hvd2luZ19oZWxwIG1zZyA9XG4gICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIlc1xcbiUhXCJcbiAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9KSlcbiAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgIGRpZSBcIiVzXCIgbXNnICgpKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgICBsZXQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBPcHRpb24ubWFwIH5mOkludC5wcmVkIG1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCBza2lwIHJlc3QgPSBwYXJzZV9ncm91cCByZXN0IH5tYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgcmVzb2x2ZSBzdWIgcmVzdCA9XG4gICAgICAgICAgbGV0IHN1YnMgPSBMaXN0LkFzc29jLm1hcCAoTGF6eS5mb3JjZSBzdWJzKSB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkgaW5cbiAgICAgICAgICBtYXRjaCBsb29rdXBfZXhwYW5kIHN1YnMgc3ViIFN1YmNvbW1hbmQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgbXNnIC0+IGRpZV9zaG93aW5nX2hlbHAgbXNnXG4gICAgICAgICAgfCBPayAoc3ViLCB0KSAtPlxuICAgICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICAgIH5wYXRoOihQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOnN1YilcbiAgICAgICAgICAgICAgfmFyZ3M6cmVzdFxuICAgICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChhcmdzIDogQ21kbGluZS50KSB3aXRoXG4gICAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBkaWVfc2hvd2luZ19oZWxwXG4gICAgICAgICAgICAgICAoc3ByaW50ZiBcIm1pc3Npbmcgc3ViY29tbWFuZCBmb3IgY29tbWFuZCAlc1wiIChQYXRoLnRvX3N0cmluZyBwYXRoKSlcbiAgICAgICAgICAgfCBTb21lIGJvZHkgLT4gYm9keSB+cGF0aDooUGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aCkpXG4gICAgICAgIHwgQ29ucyAoc3ViLCByZXN0KSAtPlxuICAgICAgICAgICgqIE1hdGNoIGZvciBmbGFncyByZWNvZ25pemVkIHdoZW4gc3ViY29tbWFuZHMgYXJlIGV4cGVjdGVkIG5leHQgKilcbiAgICAgICAgICAobWF0Y2ggc3ViIHdpdGhcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBhdCB0aGUgdG9wIGxldmVsIGNvbW1hbmQgb25seSAqKVxuICAgICAgICAgICB8IChcIi12ZXJzaW9uXCIgfCBcIi0tdmVyc2lvblwiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjtcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCAoXCItYnVpbGQtaW5mb1wiIHwgXCItLWJ1aWxkLWluZm9cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgZXZlcnl3aGVyZSAqKVxuICAgICAgICAgICB8IFwiLWhlbHBcIiB8IFwiLS1oZWxwXCIgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOaWwgfCBDb21wbGV0ZSAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgZ3JvdXAgd2l0aCBzdWJjb21tYW5kcyA9IHN1YnMgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgICAgICAgIGV4aXQgMFxuICAgICAgICAgICAgICAgfCBDbWRsaW5lLkNvbnMgKGZpcnN0X29mX3Jlc3QsIHJlc3Rfb2ZfcmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgcmVzb2x2ZSBmaXJzdF9vZl9yZXN0IChDb25zIChzdWIsIHJlc3Rfb2ZfcmVzdCkpKVxuICAgICAgICAgICB8IChfIDogc3RyaW5nKSAtPiByZXNvbHZlIHN1YiByZXN0KVxuICAgICAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBMYXp5LmZvcmNlIHN1YnNcbiAgICAgICAgICAgIHw+IExpc3QubWFwIH5mOmZzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBuYW1lIC0+IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQpXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBjb21wbGV0ZV9zdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgICAgICAgIHNoYXBlIHQgfD4gU2hhcGUuZnVsbHlfZm9yY2VkIHw+IFNoYXBlLkZ1bGx5X2ZvcmNlZC5leHBhbmRlZF9zdWJjb21tYW5kc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGYgfnBhdGg6KFBhdGgucGFydHMgcGF0aCkgfnBhcnQgc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZXhpdCAxXG4gICAgICAgICAgICAgIHwgU29tZSB0b19vdXRwdXQgLT5cbiAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgdG9fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIExpc3QuaXRlciBzdWJzIH5mOnByaW50X2VuZGxpbmU7XG4gICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgaW5cbiAgICAgIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICA/dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICA/dmVyc2lvblxuICAgICAgICA/YnVpbGRfaW5mb1xuICAgICAgICA/KGFyZ3YgPSBBcnJheS50b19saXN0IENhbWwuU3lzLmFyZ3YpXG4gICAgICAgID9leHRlbmRcbiAgICAgICAgPyh3aGVuX3BhcnNpbmdfc3VjY2VlZHMgPSBGbi5pZClcbiAgICAgICAgP2NvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGJ1aWxkX2luZm8gPVxuICAgICAgbWF0Y2ggYnVpbGRfaW5mbyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBsYXp5IHZcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgaW5cbiAgICBsZXQgdmVyc2lvbiA9XG4gICAgICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAoKiBbdmVyc2lvbl0gd2FzIHNwYWNlIGRlbGltaXRlZCBhdCBzb21lIHBvaW50IGFuZCBuZXdsaW5lIGRlbGltaXRlZFxuICAgICAgICAgICBhdCBhbm90aGVyLiAgV2UgYWx3YXlzIHByaW50IG9uZSAocmVwbywgcmV2aXNpb24pIHBhaXIgcGVyIGxpbmVcbiAgICAgICAgICAgYW5kIGVuc3VyZSBzb3J0ZWQgb3JkZXIgKilcbiAgICAgICAgbGF6eVxuICAgICAgICAgIChWZXJzaW9uX2luZm8ubm9ybWFsaXplX3ZlcnNpb25fbGluZXNcbiAgICAgICAgICAgICAoU3RyaW5nLnNwbGl0IHYgfm9uOicgJyB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KFN0cmluZy5zcGxpdCB+b246J1xcbicpKSlcbiAgICBpblxuICAgIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPlxuICAgICAgbGV0IHQgPSBWZXJzaW9uX2luZm8uYWRkIHQgfnZlcnNpb24gfmJ1aWxkX2luZm8gaW5cbiAgICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgICAgbGV0IGNtZCwgYXJncyA9IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2IGluXG4gICAgICBsZXQgcGF0aCwgYXJncywgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyBpblxuICAgICAgdHJ5XG4gICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgdFxuICAgICAgICAgIEVudi5lbXB0eVxuICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICB+cGF0aFxuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgd2l0aFxuICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPlxuICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJnc1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBwcmVycl9lbmRsaW5lIG1zZztcbiAgICAgICAgICBleGl0IDEpKVxuICA7O1xuXG4gIGxldCBkZXByZWNhdGVkX3J1biB0IH5jbWQgfmFyZ3MgfmlzX2hlbHAgfmlzX2hlbHBfcmVjIH5pc19oZWxwX3JlY19mbGFncyB+aXNfZXhwYW5kX2RvdHNcbiAgICA9XG4gICAgbGV0IHBhdGhfc3RyaW5ncyA9IFN0cmluZy5zcGxpdCBjbWQgfm9uOicgJyBpblxuICAgIGxldCBwYXRoID0gUGF0aC5vZl9wYXJ0cyBwYXRoX3N0cmluZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2V4cGFuZF9kb3RzIHRoZW4gXCItZXhwYW5kLWRvdHNcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWNfZmxhZ3MgdGhlbiBcIi1mbGFnc1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlYyB0aGVuIFwiLXJcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscCB0aGVuIFwiLWhlbHBcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gQ21kbGluZS5vZl9saXN0IGFyZ3MgaW5cbiAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICBkaXNwYXRjaFxuICAgICAgdFxuICAgICAgRW52LmVtcHR5XG4gICAgICB+cGF0aFxuICAgICAgfmFyZ3NcbiAgICAgIH5leHRlbmQ6Tm9uZVxuICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkOk5vbmVcbiAgICAgIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIH5idWlsZF9pbmZvOlZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOk5vbmVcbiAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHM6Rm4uaWRcbiAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kczpOb25lXG4gIDs7XG5lbmRcblxuKCogTk9URTogYWxsIHRoYXQgZm9sbG93cyBpcyBzaW1wbHkgbmFtZXNwYWNlIG1hbmFnZW1lbnQgYm9pbGVycGxhdGUuICBUaGlzIHdpbGwgZ28gYXdheVxuICAgb25jZSB3ZSByZS13b3JrIHRoZSBpbnRlcm5hbHMgb2YgQ29tbWFuZCB0byB1c2UgQXBwbGljYXRpdmUgZnJvbSB0aGUgZ3JvdW5kIHVwLiAqKVxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgaGVscCA6IHN0cmluZyBMYXp5LnQgdFxuICAgIHZhbCBwYXRoIDogc3RyaW5nIGxpc3QgdFxuICAgIHZhbCBhcmdzIDogc3RyaW5nIGxpc3QgdFxuXG4gICAgdmFsIGZsYWdcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgRmxhZy50XG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEFyZ190eXBlLnRcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiBkZWZhdWx0OidhXG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgYW5vbiA6ICdhIEFub25zLnQgLT4gJ2EgdFxuICAgIHZhbCBlc2NhcGVfYW5vbiA6IGZpbmFsX2Fub246J2EgQW5vbnMudCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuIDogc2lnXG4gICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICBlbmRcblxuICAgIHZhbCBjaG9vc2Vfb25lXG4gICAgICA6ICAnYSBvcHRpb24gdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgYW5kX2FyZ19uYW1lcyA6ICdhIHQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcbiAgICB2YWwgYW5kX2FyZ19uYW1lIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcpIHRcbiAgICB2YWwgYXJnX25hbWVzIDogJ2EgdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNwZWMucGFyYW1cblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IFNwZWMuY29uc3RcbiAgICAgICAgbGV0IGFwcGx5ID0gU3BlYy5hcHBseVxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBTcGVjLm1hcFxuICAgICAgZW5kKVxuICBlbmRcblxuICBpbmNsdWRlIEFcblxuICBsZXQgaGVscCA9IFNwZWMuaGVscFxuICBsZXQgcGF0aCA9IFNwZWMucGF0aFxuICBsZXQgYXJncyA9IFNwZWMuYXJnc1xuICBsZXQgZmxhZyA9IFNwZWMuZmxhZ1xuICBsZXQgYW5vbiA9IFNwZWMuYW5vblxuICBsZXQgY2hvb3NlX29uZSA9IFNwZWMuY2hvb3NlX29uZVxuICBsZXQgYXJnX25hbWVzID0gU3BlYy5hcmdfbmFtZXNcbiAgbGV0IGFuZF9hcmdfbmFtZXMgPSBTcGVjLmFuZF9hcmdfbmFtZXNcbiAgbGV0IGFuZF9hcmdfbmFtZSA9IFNwZWMuYW5kX2FyZ19uYW1lXG4gIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2MgPSBTcGVjLmZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuXG4gIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IFNwZWMuSWZfbm90aGluZ19jaG9zZW5cbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgIG9wZW4gRmxhZ1xuXG4gICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgbGV0IG9uZV9vcl9tb3JlID0gb25lX29yX21vcmVcbiAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuICBlbmRcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgIG9wZW4gQW5vbnNcblxuICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgbGV0IHQyID0gdDJcbiAgICBsZXQgdDMgPSB0M1xuICAgIGxldCB0NCA9IHQ0XG4gIGVuZFxuXG4gIGxldCBlc2NhcGVfYW5vbiA9IFNwZWMuZXNjYXBlX2Fub25cbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcmFtXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcmFtXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gUGFyYW1cbiAgZW5kXG5lbmRcblxudHlwZSAncmVzdWx0IGJhc2ljX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZyAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZykgLT4gKHVuaXQgLT4gJ3Jlc3VsdCkgUGFyYW0udCAtPiB0XG5cbmxldCBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtID1cbiAgbGV0IHNwZWMgPSBTcGVjLm9mX3BhcmFtcyBAQCBQYXJhbS5tYXAgcGFyYW0gfmY6KGZ1biBydW4gKCkgKCkgLT4gcnVuICgpKSBpblxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgc3BlYyAoKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGFic19wYXRoID0gYWJzX3BhdGhcbiAgbGV0IHdvcmRfd3JhcCA9IFNoYXBlLlByaXZhdGUud29yZF93cmFwXG5cbiAgbW9kdWxlIEFub25zID0gQW5vbnNcbiAgbW9kdWxlIENtZGxpbmUgPSBDbWRsaW5lXG4gIG1vZHVsZSBGb3JfdW5peCA9IEZvcl91bml4XG4gIG1vZHVsZSBQYXRoID0gUGF0aFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBTcGVjXG5cbiAgICBsZXQgdG9fc3RyaW5nX2Zvcl9jaG9vc2Vfb25lIHBhcmFtID1cbiAgICAgIENob29zZV9vbmUuQ2hvaWNlX25hbWUuKGNyZWF0ZV9leG4gcGFyYW0gfD4gdG9fc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBydW4gPSBgVXNlX0NvbW1hbmRfdW5peFxubGV0IHNoYXBlID0gYFVzZV9Db21tYW5kX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RyaW5nX2lkX2ludGZcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICAgICAgICBsZXQgY2hlY2tfZm9yX3doaXRlc3BhY2UgPVxuICAgICAgICAgIGxldCBpbnZhbGlkIHMgcmVhc29uID1cbiAgICAgICAgICAgIEVycm9yIChzcHJpbnRmIFwiJyVzJyBpcyBub3QgYSB2YWxpZCAlcyBiZWNhdXNlICVzXCIgcyBNLm1vZHVsZV9uYW1lIHJlYXNvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBzIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICBpZiBJbnQuKCA9ICkgbGVuIDBcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaXMgZW1wdHlcIlxuICAgICAgICAgICAgZWxzZSBpZiBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bMF0gfHwgQ2hhci5pc193aGl0ZXNwYWNlIHMuW2xlbiAtIDFdXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGhhcyB3aGl0ZXNwYWNlIG9uIHRoZSBlZGdlXCJcbiAgICAgICAgICAgIGVsc2UgT2sgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdmFsaWRhdGUgcyA9IFJlc3VsdC5tYXBfZXJyb3IgKE0udmFsaWRhdGUgcykgfmY6RXJyb3IudG9fc3RyaW5nX21hY2hcblxuICAgICAgICBsZXQgY2hlY2sgcyA9XG4gICAgICAgICAgaWYgTS5pbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvblxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggY2hlY2tfZm9yX3doaXRlc3BhY2UgcyB3aXRoXG4gICAgICAgICAgICB8IE9rICgpIC0+IHZhbGlkYXRlIHNcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgZXJyb3IpXG4gICAgICAgICAgZWxzZSB2YWxpZGF0ZSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgICAgIGxldCBwcCA9IFN0cmluZy5wcFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gaW52YWxpZF9hcmcgZXJyXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5TdGFibGUuVjEudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChTdHJpbmcpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0cmluZ1xuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUX3dpdGhfY29tcGFyYXRvciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVF93aXRoX2NvbXBhcmF0b3JcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZV9sYXRlc3QgPSBTdGFibGUuVjFcbiAgaW5jbHVkZSBTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3RyaW5nLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFN0cmluZy5nZW5fbm9uZW1wdHknIENoYXIuZ2VuX3ByaW50XG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIH5mOihmdW4gc3RyaW5nIC0+IGNoZWNrIHN0cmluZyB8PiBSZXN1bHQuaXNfb2spXG4gIDs7XG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlclxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlXG4gIE1ha2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuU3RyaW5nX2lkXCJcbiAgICBlbmQpXG4gICAgKClcblxubW9kdWxlIFN0cmluZ193aXRob3V0X3ZhbGlkYXRpb25fd2l0aG91dF9wcmV0dHlfcHJpbnRlciA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIEZuLmlkXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RhYmxlX3VuaXRfdGVzdF9pbnRmXG5cbm1vZHVsZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBkZXNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgc2V4cF9hc19zdHJpbmcgfD4gU2V4cC5vZl9zdHJpbmcgfD4gWyVvZl9zZXhwOiBULnRdKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+XG4gICAgICAgICAgIE9yX2Vycm9yLnRhZ19hcmdcbiAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgIFwiY291bGQgbm90IGRlc2VyaWFsaXplIHNleHBcIlxuICAgICAgICAgICAgIChzZXhwX2FzX3N0cmluZywgYEV4cGVjdGVkIHQpXG4gICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBbIGBFeHBlY3RlZCBvZiBULnQgXV1cbiAgICAgICAgIHwgT2sgdCcgLT5cbiAgICAgICAgICAgaWYgVC5lcXVhbCB0IHQnXG4gICAgICAgICAgIHRoZW4gT2sgKClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICAgIHw+IG9rX2V4blxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3NleHBfc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgbGV0IHNleHAgPSBTZXhwLm9mX3N0cmluZyBzZXhwX2FzX3N0cmluZyBpblxuICAgICAgICAgICBsZXQgc2VyaWFsaXplZF9zZXhwID0gVC5zZXhwX29mX3QgdCBpblxuICAgICAgICAgICBpZiBTZXhwLiggPD4gKSBzZXJpYWxpemVkX3NleHAgc2V4cFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgICBcInNleHAgc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHNleHAsIGBCdXRfZ290IHNlcmlhbGl6ZWRfc2V4cClcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IF0gKiBbIGBCdXRfZ290IG9mIFNleHAudCBdXSkpKVxuICAgIHw+IG9rX2V4blxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2Jpbl9pb190ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcImJpbl9pb1wiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCBfLCBleHBlY3RlZF9iaW5faW8pIC0+XG4gICAgICBsZXQgYmluYWJsZV9tID0gKG1vZHVsZSBUIDogQmluYWJsZS5TIHdpdGggdHlwZSB0ID0gVC50KSBpblxuICAgICAgbGV0IHRvX2Jpbl9zdHJpbmcgdCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9iaW5faW8gPSB0b19iaW5fc3RyaW5nIHQgaW5cbiAgICAgIGlmIFN0cmluZy4oIDw+ICkgc2VyaWFsaXplZF9iaW5faW8gZXhwZWN0ZWRfYmluX2lvXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAodCwgYEV4cGVjdGVkIGV4cGVjdGVkX2Jpbl9pbywgYEJ1dF9nb3Qgc2VyaWFsaXplZF9iaW5faW8pXG4gICAgICAgICAgWyVzZXhwX29mOiBULnQgKiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgXSAqIFsgYEJ1dF9nb3Qgb2Ygc3RyaW5nIF1dO1xuICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIHNlcmlhbGl6ZWRfYmluX2lvIGluXG4gICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX3NleHBfc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2VfYmluX2lvX3Rlc3QgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdW5vcmRlcmVkX2NvbnRhaW5lciAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX2FyZykgPVxuc3RydWN0XG4gIG1vZHVsZSBUZXN0ID0gU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfdGVzdFxuXG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5zZXhwczsgXyB9KSAtPlxuICAgICAgbGV0IHNleHBzID0gTGlzdC5tYXAgc2V4cHMgfmY6U2V4cC5vZl9zdHJpbmcgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2VsZW1lbnRzID1cbiAgICAgICAgbWF0Y2ggVC5zZXhwX29mX3QgdCB3aXRoXG4gICAgICAgIHwgU2V4cC5MaXN0IHNleHBzIC0+IHNleHBzXG4gICAgICAgIHwgU2V4cC5BdG9tIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiZXhwZWN0ZWQgbGlzdCB3aGVuIHNlcmlhbGl6aW5nIHVub3JkZXJlZCBjb250YWluZXJcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgVC5zZXhwX29mX3RcbiAgICAgIGluXG4gICAgICBsZXQgc29ydGVkX3NleHBzID0gTGlzdC5zb3J0IH5jb21wYXJlOlNleHAuY29tcGFyZSBzZXhwcyBpblxuICAgICAgbGV0IHNvcnRlZF9zZXJpYWxpemVkID0gTGlzdC5zb3J0IH5jb21wYXJlOlNleHAuY29tcGFyZSBzZXJpYWxpemVkX2VsZW1lbnRzIGluXG4gICAgICBpZiBub3QgKExpc3QuZXF1YWwgU2V4cC4oID0gKSBzb3J0ZWRfc2V4cHMgc29ydGVkX3NlcmlhbGl6ZWQpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNleHAgc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCBzZXhwcywgYEJ1dF9nb3Qgc2VyaWFsaXplZF9lbGVtZW50cylcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIFNleHAudCBsaXN0IF1dO1xuICAgICAgbGV0IHNleHBfcGVybXV0YXRpb25zID0gTGlzdC5pbml0IDEwIH5mOihmdW4gXyAtPiBMaXN0LnBlcm11dGUgc2V4cHMpIGluXG4gICAgICBMaXN0Lml0ZXIgc2V4cF9wZXJtdXRhdGlvbnMgfmY6KGZ1biBzZXhwcyAtPlxuICAgICAgICBsZXQgdCcgPSBULnRfb2Zfc2V4cCAoU2V4cC5MaXN0IHNleHBzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtc2ltYXRjaFwiXG4gICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgOztcblxuICBsZXQgcmVjIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIHN0cmluZ3MgPVxuICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICB0aGVuIExpc3QuZm9yX2FsbCBzdHJpbmdzIH5mOlN0cmluZy5pc19lbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHJldl9za2lwcGVkIHN0cmluZ3MgPVxuICAgICAgICBtYXRjaCBzdHJpbmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgICB8IHByZWZpeCA6OiBzdHJpbmdzIC0+XG4gICAgICAgICAgbGV0IGNvbnRpbnVlICgpID0gbG9vcCAocHJlZml4IDo6IHJldl9za2lwcGVkKSBzdHJpbmdzIGluXG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4IHN0cmluZyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBjb250aW51ZSAoKVxuICAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgICAgICAgICAgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgKExpc3QucmV2X2FwcGVuZCByZXZfc2tpcHBlZCBzdHJpbmdzKSB8fCBjb250aW51ZSAoKSlcbiAgICAgIGluXG4gICAgICBsb29wIFtdIHN0cmluZ3MpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImJpbl9pb1wiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3QuYmluX2lvX2hlYWRlcjsgYmluX2lvX2VsZW1lbnRzOyBfIH0pIC0+XG4gICAgICBsZXQgYmluYWJsZV9tID0gKG1vZHVsZSBUIDogQmluYWJsZS5TIHdpdGggdHlwZSB0ID0gVC50KSBpblxuICAgICAgbGV0IGVsZW1lbnRzID0gYmluX2lvX2VsZW1lbnRzIGluXG4gICAgICBsZXQgYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzID0gYmluX2lvX2hlYWRlciBeIFN0cmluZy5jb25jYXQgZWxlbWVudHMgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemF0aW9uX21hdGNoZXMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeDpiaW5faW9faGVhZGVyIHNlcmlhbGl6ZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIGVsZW1lbnRzX3N0cmluZyAtPiBpc19jb25jYXRlbmF0aW9uIGVsZW1lbnRzX3N0cmluZyBlbGVtZW50c1xuICAgICAgaW5cbiAgICAgIGlmIG5vdCBzZXJpYWxpemF0aW9uX21hdGNoZXNcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCAoYmluX2lvX2hlYWRlciwgZWxlbWVudHMpLCBgQnV0X2dvdCBzZXJpYWxpemVkKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nICogc3RyaW5nIGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2Ygc3RyaW5nIF1dO1xuICAgICAgbGV0IHBlcm11dGF0YXRpb25zID0gTGlzdC5pbml0IDEwIH5mOihmdW4gXyAtPiBMaXN0LnBlcm11dGUgZWxlbWVudHMpIGluXG4gICAgICBMaXN0Lml0ZXIgcGVybXV0YXRhdGlvbnMgfmY6KGZ1biBlbGVtZW50cyAtPlxuICAgICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gKGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiYmluLWlvIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgOztcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbigqIFRoZSBtb2R1bGUgW1RdIHNlcnZlcyB0byBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBhbGwgQmxhbmcudCB2YWx1ZXMgYXJlIGluIGFcbiAgIG5vcm1hbCBmb3JtIHdoZXJlYnkgYm9vbGVhbiBjb25zdGFudHMgVHJ1ZSBhbmQgRmFsc2Ugb25seSBhcHBlYXIgYXMgdGhlIHRvcG1vc3RcbiAgIGNvbnN0cnVjdG9yIC0tIGluIGFueSBvdGhlciBwb3NpdGlvbiB0aGV5IGFyZSBzaW1wbGlmaWVkIGF3YXkgdXNpbmcgbGF3cyBvZlxuICAgYm9vbGVhbiBhbGdlYnJhLlxuXG4gICBXZSBhbHNvIGVuZm9yY2UgdGhhdCBuZXN0ZWQgW0FuZF1zIGFuZCBbT3JdcyBlYWNoIGxlYW4gdG8gdGhlIHJpZ2h0IHNvIHRoYXQgW2V2YWxdXG4gICBkb2Vzbid0IG5lZWQgc28gbXVjaCBzdGFjayBzcGFjZSBhcyBpdCB3b3VsZCBpZiB0aGV5IGxlYW5lZCB0byB0aGUgbGVmdC4gIFRob3VnaHRcbiAgIGV4cGVyaW1lbnQ6IGNvbXBhcmUgaG93IFtldmFsXSB3b3JrcyBvbiByaWdodC1sZWFuaW5nIFtBbmQgKGEsIEFuZCAoYiwgQW5kIChjLCBkKSkpXVxuICAgdmVyc3VzIGxlZnQtbGVhbmluZyBbQW5kIChBbmQgKEFuZCAoYSwgYiksIGMpLCBkKV0uICBUaGUgZm9ybWVyIGlzIHRoZSBiZXN0IGNhc2UgYW5kIGlzXG4gICBlbmZvcmNlZC5cblxuICAgTm90ZTogdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIHVzdWFsIHBhdHRlcm4gb2YgbW9kdWxlcyB3aXRoIFN0YWJsZSBpbnRlcmZhY2VzIGluXG4gICB0aGF0IHRoZSBTdGFibGUgc3ViLW1vZHVsZSBpcyBub3QgdGhlIGZpcnN0IHRoaW5nIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1vZHVsZS4gIFRoZVxuICAgcmVhc29uIGZvciB0aGlzIGRldmlhdGlvbiBpcyBzbyB0aGF0IG9uZSBjYW4gY29udmluY2Ugb25lc2VsZiBvZiB0aGUgYWZvcmVtZW50aW9uZWRcbiAgIGludmFyaWFudCBhZnRlciByZWFkaW5nIG9ubHkgdGhpcyBzbWFsbCBhbW91bnQgb2YgY29kZS4gIEFmdGVyIGRlZmluaW5nIFQgd2UgdGhlblxuICAgaW1tZWRpYXRlbHkgZGVmaW5lIGl0cyBTdGFibGUgaW50ZXJmYWNlLlxuKilcbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgKydhIHQgPSBwcml2YXRlXG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIHZhbCBpbnZhcmlhbnQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHRydWVfIDogJ2EgdFxuICB2YWwgZmFsc2VfIDogJ2EgdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kYWxzbyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBvcmVsc2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID1cbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgbGV0IGludmFyaWFudCA9XG4gICAgbGV0IHN1YnRlcm1zID0gZnVuY3Rpb25cbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIHwgQmFzZSBfIC0+IFtdXG4gICAgICB8IE5vdCB0MSAtPiBbIHQxIF1cbiAgICAgIHwgQW5kICh0MSwgdDIpIHwgT3IgKHQxLCB0MikgLT4gWyB0MTsgdDIgXVxuICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gWyB0MTsgdDI7IHQzIF1cbiAgICBpblxuICAgIGxldCByZWMgY29udGFpbnNfbm9fY29uc3RhbnRzID0gZnVuY3Rpb25cbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gICAgaW5cbiAgICBmdW4gdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICA7O1xuXG4gIGxldCB0cnVlXyA9IFRydWVcbiAgbGV0IGZhbHNlXyA9IEZhbHNlXG4gIGxldCBiYXNlIHYgPSBCYXNlIHZcblxuICBsZXQgbm90XyA9IGZ1bmN0aW9uXG4gICAgfCBUcnVlIC0+IEZhbHNlXG4gICAgfCBGYWxzZSAtPiBUcnVlXG4gICAgfCBOb3QgdCAtPiB0XG4gICAgfCB0IC0+IE5vdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBhbmRhbHNvIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgRmFsc2UgfCBGYWxzZSwgXyAtPiBGYWxzZVxuICAgIHwgb3RoZXIsIFRydWUgfCBUcnVlLCBvdGhlciAtPiBvdGhlclxuICAgIHwgQW5kICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbQW5kXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgQW5kICh0MWEsIGFuZGFsc28gdDFiIHQyKVxuICAgIHwgXyAtPiBBbmQgKHQxLCB0MilcbiAgOztcblxuICBsZXQgcmVjIG9yZWxzZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIFRydWUgfCBUcnVlLCBfIC0+IFRydWVcbiAgICB8IG90aGVyLCBGYWxzZSB8IEZhbHNlLCBvdGhlciAtPiBvdGhlclxuICAgIHwgT3IgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtPcl1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIE9yICh0MWEsIG9yZWxzZSB0MWIgdDIpXG4gICAgfCBfIC0+IE9yICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IGlmXyBhIGIgYyA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBUcnVlIC0+IGJcbiAgICB8IEZhbHNlIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBiLCBjIHdpdGhcbiAgICAgICB8IFRydWUsIF8gLT4gb3JlbHNlIGEgY1xuICAgICAgIHwgXywgRmFsc2UgLT4gYW5kYWxzbyBhIGJcbiAgICAgICB8IF8sIFRydWUgLT4gb3JlbHNlIChub3RfIGEpIGJcbiAgICAgICB8IEZhbHNlLCBfIC0+IGFuZGFsc28gKG5vdF8gYSkgY1xuICAgICAgIHwgXyAtPiBJZiAoYSwgYiwgYykpXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgICgqIFRISVMgVFlQRSBBTkQgSVRTIFNFUklBTElaQVRJT05TIFNIT1VMRCBORVZFUiBCRSBDSEFOR0VEIC0gUExFQVNFIFNQRUFLIFdJVEhcbiAgICAgICBBTk9USEVSIERFVkVMT1BFUiBJRiBZT1UgTkVFRCBNT1JFIERFVEFJTCAqKVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICgqIHRoZSByZW1haW5kZXIgb2YgdGhpcyBzaWduYXR1cmUgY29uc2lzdHMgb2YgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb25zXG4gICAgICAgb2Ygc2V4cCBjb252ZXJzaW9ucyB0aGF0IGFyZSBhbHNvIHVzZWZ1bCBtb3JlIGdlbmVyYWxseSAqKVxuXG4gICAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBnYXRoZXJfY29uanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgICB2YWwgZ2F0aGVyX2Rpc2p1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcblxuICAgIGluY2x1ZGUgKFxuICAgICAgVCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbiAgICB0eXBlIHNleHAgPSBTZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHNleHAgbGlzdFxuXG4gICAgKCogY2hlYXAgaW1wb3J0ICopXG5cbiAgICAoKiBmbGF0dGVuIG91dCBuZXN0ZWQgYW5kJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Nvbmp1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBmbGF0dGVuIG91dCBuZXN0ZWQgb3IncyAqKVxuICAgIGxldCBnYXRoZXJfZGlzanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICAgICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIFthbmRfXSBhbmQgW29yX10gdXNlIFtmb2xkX3JpZ2h0XSBpbnN0ZWFkIG9mIFtmb2xkX2xlZnRdIHRvIGF2b2lkIHF1YWRyYXRpY1xuICAgICAgIGJlaGF2aW9yIHdpdGggW2FuZGFsc29dIG9yIFtvcmVsc2VdLCByZXNwZWN0aXZlbHkuICopXG4gICAgbGV0IGFuZF8gdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6dHJ1ZV8gfmY6YW5kYWxzb1xuICAgIGxldCBvcl8gdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6ZmFsc2VfIH5mOm9yZWxzZVxuXG4gICAgbGV0IHVuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHggXSAtPiB4XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIG9uZSBhcmd1bWVudCwgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRlcm5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeDsgeTsgeiBdIC0+IHgsIHksIHpcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgdGhyZWUgYXJndW1lbnRzLCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSB4IC0+IHNleHBfb2ZfdmFsdWUgeFxuICAgICAgICB8IFRydWUgLT4gQXRvbSBcInRydWVcIlxuICAgICAgICB8IEZhbHNlIC0+IEF0b20gXCJmYWxzZVwiXG4gICAgICAgIHwgTm90IHQgLT4gTGlzdCBbIEF0b20gXCJub3RcIjsgYXV4IHQgXVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBMaXN0IFsgQXRvbSBcImlmXCI7IGF1eCB0MTsgYXV4IHQyOyBhdXggdDMgXVxuICAgICAgICB8IEFuZCBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfY29uanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwiYW5kXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgICB8IE9yIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9kaXNqdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJvclwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgIGluXG4gICAgICBhdXggdFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIGJhc2Vfb2Zfc2V4cCBzZXhwID1cbiAgICAgIGxldCBiYXNlIHNleHAgPSBiYXNlIChiYXNlX29mX3NleHAgc2V4cCkgaW5cbiAgICAgIGxldCByZWMgYXV4IHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBBdG9tIGt3IC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwidHJ1ZVwiIC0+IHRydWVfXG4gICAgICAgICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlX1xuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IExpc3QgKEF0b20ga3cgOjogYXJncykgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJhbmRcIiAtPiBhbmRfIChMaXN0Lm1hcCB+ZjphdXggYXJncylcbiAgICAgICAgICAgfCBcIm9yXCIgLT4gb3JfIChMaXN0Lm1hcCB+ZjphdXggYXJncylcbiAgICAgICAgICAgfCBcIm5vdFwiIC0+IG5vdF8gKGF1eCAodW5hcnkgXCJub3RcIiBhcmdzIHNleHApKVxuICAgICAgICAgICB8IFwiaWZcIiAtPlxuICAgICAgICAgICAgIGxldCB4LCB5LCB6ID0gdGVybmFyeSBcImlmXCIgYXJncyBzZXhwIGluXG4gICAgICAgICAgICAgaWZfIChhdXggeCkgKGF1eCB5KSAoYXV4IHopXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgXyAtPiBiYXNlIHNleHBcbiAgICAgIGluXG4gICAgICBhdXggc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgICAgbGV0IGRlZm5zIDogU2V4cGxpYi5TZXhwX2dyYW1tYXIuZGVmbiBsaXN0ID1cbiAgICAgICAgbGV0IGJsYW5nIDogU2V4cGxpYi5TZXhwX2dyYW1tYXIuZ3JhbW1hciA9IFR5Y29uIChcImJsYW5nXCIsIFsgVHl2YXIgXCJhXCIgXSkgaW5cbiAgICAgICAgWyB7IHR5Y29uID0gXCJibGFuZ1wiXG4gICAgICAgICAgOyB0eXZhcnMgPSBbIFwiYVwiIF1cbiAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgVHl2YXIgXCJhXCJcbiAgICAgICAgICAgICAgICA7IFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9pbnNlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJ0cnVlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJmYWxzZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJub3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChibGFuZywgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgZnVuIGJhc2VfZ3JhbW1hciAtPlxuICAgICAgICB7IHVudHlwZWQgPSBSZWN1cnNpdmUgKFR5Y29uIChcImJsYW5nXCIsIFsgYmFzZV9ncmFtbWFyLnVudHlwZWQgXSksIGRlZm5zKSB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbmxldCBjb25zdGFudCBiID0gaWYgYiB0aGVuIHRydWVfIGVsc2UgZmFsc2VfXG5cbm1vZHVsZSB0eXBlIENvbnN0cnVjdG9ycyA9IHNpZ1xuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHRydWVfIDogXyB0XG4gIHZhbCBmYWxzZV8gOiBfIHRcbiAgdmFsIGNvbnN0YW50IDogYm9vbCAtPiBfIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICBsZXQgbm90ID0gbm90X1xuICBsZXQgYW5kXyA9IGFuZF9cbiAgbGV0IG9yXyA9IG9yX1xuICBsZXQgY29uc3RhbnQgPSBjb25zdGFudFxuICBsZXQgKCAmJiApID0gYW5kYWxzb1xuICBsZXQgKCB8fCApID0gb3JlbHNlXG4gIGxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxuZW5kXG5cbmxldCBjb25zdGFudF92YWx1ZSA9IGZ1bmN0aW9uXG4gIHwgVHJ1ZSAtPiBTb21lIHRydWVcbiAgfCBGYWxzZSAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG47O1xuXG4oKiBbdmFsdWVzIHRdIGxpc3RzIHRoZSBiYXNlIHByZWRpY2F0ZXMgaW4gW3RdIGZyb20gbGVmdCB0byByaWdodCAqKVxubGV0IHZhbHVlcyB0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIHYgOjogdHMgLT4gbG9vcCAodiA6OiBhY2MpIHRzXG4gICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgTm90IHQxIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0cylcbiAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBJZiAodDEsIHQyLCB0MykgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHQzIDo6IHRzKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIGxvb3AgW10gWyB0IF1cbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjIHQgcGVuZGluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgYSAtPiBuZXh0IChmIGFjYyBhKSBwZW5kaW5nXG4gICAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IG5leHQgYWNjIHBlbmRpbmdcbiAgICAgICAgfCBOb3QgdCAtPiBsb29wIGFjYyB0IHBlbmRpbmdcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBsb29wIGFjYyB0MSAodDIgOjogcGVuZGluZylcbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHQzIDo6IHBlbmRpbmcpXG4gICAgICBhbmQgbmV4dCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCBhY2MgdCB0c1xuICAgICAgaW5cbiAgICAgIGxvb3AgaW5pdCB0IFtdXG4gICAgOztcblxuICAgIGxldCBpdGVyID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGxlbmd0aCA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGQgPSBDLmZvbGRcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgaXNfZW1wdHkgPSBDLmlzX2VtcHR5XG5sZXQgaXRlciA9IEMuaXRlclxubGV0IGxlbmd0aCA9IEMubGVuZ3RoXG5sZXQgbWVtID0gQy5tZW1cbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgcmV0dXJuID0gYmFzZVxuXG4gICAgbGV0IHJlYyBiaW5kIHQgfmY6ayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQmFzZSB2IC0+IGsgdlxuICAgICAgfCBUcnVlIC0+IHRydWVfXG4gICAgICB8IEZhbHNlIC0+IGZhbHNlX1xuICAgICAgfCBOb3QgdDEgLT4gbm90XyAoYmluZCB0MSB+ZjprKVxuICAgICAgKCogVW5mb3J0dW5hdGVseSB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBzb21lIG9mIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGZyb20gW2FuZGFsc29dIGFuZFxuICAgICAgICAgZnJpZW5kcyBoZXJlLiBJbiBwcmluY2lwbGUgd2UgY291bGQgZG8gc29tZXRoaW5nIGludm9sdmluZyBbTGF6eS50XSBidXQgdGhlXG4gICAgICAgICBvdmVyaGVhZCBwcm9iYWJseSB3b3VsZG4ndCBiZSB3b3J0aCBpdC4gKilcbiAgICAgIHwgQW5kICh0MSwgdDIpIC0+XG4gICAgICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgICAgIHwgb3RoZXIgLT4gYW5kYWxzbyBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgICAgIHwgT3IgKHQxLCB0MikgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgICAgIHwgb3RoZXIgLT4gb3JlbHNlIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IFRydWUgLT4gYmluZCB0MiB+ZjprXG4gICAgICAgICB8IEZhbHNlIC0+IGJpbmQgdDMgfmY6a1xuICAgICAgICAgfCBvdGhlciAtPiBpZl8gb3RoZXIgKGJpbmQgdDIgfmY6aykgKGJpbmQgdDMgfmY6aykpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgZW5kKVxuXG4oKiBzZW1hbnRpY3MgKilcblxubGV0IHJlYyBldmFsIHQgYmFzZV9ldmFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVHJ1ZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBBbmQgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgJiYgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBPciAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCB8fCBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE5vdCB0IC0+IG5vdCAoZXZhbCB0IGJhc2VfZXZhbClcbiAgfCBJZiAodDEsIHQyLCB0MykgLT4gaWYgZXZhbCB0MSBiYXNlX2V2YWwgdGhlbiBldmFsIHQyIGJhc2VfZXZhbCBlbHNlIGV2YWwgdDMgYmFzZV9ldmFsXG4gIHwgQmFzZSB4IC0+IGJhc2VfZXZhbCB4XG47O1xuXG5sZXQgc3BlY2lhbGl6ZSB0IGYgPVxuICBiaW5kIHQgfmY6KGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IGBLbm93biBjIC0+IGNvbnN0YW50IGNcbiAgICB8IGBVbmtub3duIC0+IGJhc2Ugdilcbjs7XG5cbmxldCBldmFsX3NldCB+dW5pdmVyc2U6YWxsIHNldF9vZl9iYXNlID1cbiAgbGV0IHJlYyBhdXggKGIgOiBfIHQpID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IFRydWUgLT4gZm9yY2UgYWxsXG4gICAgfCBGYWxzZSAtPiBTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooU2V0LmNvbXBhcmF0b3IgKGZvcmNlIGFsbCkpXG4gICAgfCBBbmQgKGEsIGIpIC0+IFNldC5pbnRlciAoYXV4IGEpIChhdXggYilcbiAgICB8IE9yIChhLCBiKSAtPiBTZXQudW5pb24gKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBOb3QgYSAtPiBTZXQuZGlmZiAoZm9yY2UgYWxsKSAoYXV4IGEpXG4gICAgfCBCYXNlIGEgLT4gc2V0X29mX2Jhc2UgYVxuICAgIHwgSWYgKGNvbmQsIGEsIGIpIC0+XG4gICAgICBsZXQgY29uZCA9IGF1eCBjb25kIGluXG4gICAgICBTZXQudW5pb24gKFNldC5pbnRlciBjb25kIChhdXggYSkpIChTZXQuaW50ZXIgKFNldC5kaWZmIChmb3JjZSBhbGwpIGNvbmQpIChhdXggYikpXG4gIGluXG4gIGF1eFxuOztcblxubW9kdWxlIHR5cGUgTW9uYWRpYyA9IHNpZ1xuICBtb2R1bGUgTSA6IE1vbmFkLlNcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0IE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGV2YWwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgTS50KSAtPiBib29sIE0udFxuZW5kXG5cbm1vZHVsZSBGb3JfbW9uYWQgKE0gOiBNb25hZC5TKSA6IE1vbmFkaWMgd2l0aCBtb2R1bGUgTSA6PSBNID0gc3RydWN0XG4gIG9wZW4gTS5Nb25hZF9pbmZpeFxuXG4gIGxldCByZWMgYmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgeCAtPiBmIHhcbiAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgIHwgQW5kIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gYW5kYWxzbyBhIGIpXG4gICAgfCBPciAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gb3JlbHNlIGEgYilcbiAgICB8IE5vdCBhIC0+IGJpbmQgYSB+ZiA+Pnwgbm90X1xuICAgIHwgSWYgKGEsIGIsIGMpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYyB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+PSBmdW4gYiAtPiBiaW5kIGMgfmYgPj58IGZ1biBjIC0+IGlmXyBhIGIgYylcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IGYgeCA+PnwgYmFzZSlcblxuICBsZXQgZXZhbCB0IH5mID1cbiAgICBiaW5kIHQgfmY6KGZ1biB4IC0+XG4gICAgICBmIHhcbiAgICAgID4+fCBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IHRydWVfXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXylcbiAgICA+PnwgZnVuIHQgLT4gZXZhbCB0IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICA7O1xuZW5kXG5cbigqKiBXZSBhdm9pZCBkZXJpdmluZyBxdWlja2NoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnZhcmlhbnRzIGRlc2NyaWJlZCBpbiBbVF0ncyBjb21tZW50c1xuICAgIGFib3ZlIGFyZSBwcmVzZXJ2ZWQuICopXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgYV9nZW5lcmF0b3IgPVxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5yZWN1cnNpdmVfdW5pb25cbiAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpiYXNlIGFfZ2VuZXJhdG9yXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gdHJ1ZV9cbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiBmYWxzZV9cbiAgICBdXG4gICAgfmY6KGZ1biBzZWxmIC0+XG4gICAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBzZWxmIH5mOm5vdF9cbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oIHx8IClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oICYmIClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMyBzZWxmIHNlbGYgc2VsZiB+ZjppZl9cbiAgICAgIF0pXG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciAodHlwZSBhKSAoYV9zaHJpbmtlciA6IGEgUXVpY2tjaGVjay5TaHJpbmtlci50KSA9XG4gIFF1aWNrY2hlY2suU2hyaW5rZXIuZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IGJpbm9wIG9wZXJhdG9yIGxlZnQgcmlnaHQgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gbGVmdFxuICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiByaWdodFxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBsZWZ0KSB+ZjooZnVuIGxlZnQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHJpZ2h0KSB+ZjooZnVuIHJpZ2h0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICBdXG4gICAgaW5cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmNyZWF0ZSAoZnVuIHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgQmFzZSBhIC0+IFNlcXVlbmNlLm1hcCB+ZjpiYXNlIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBhX3Nocmlua2VyIGEpXG4gICAgICB8IE9yIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oIHx8ICkgbGVmdCByaWdodFxuICAgICAgfCBBbmQgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggJiYgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IE5vdCB0IC0+XG4gICAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gdClcbiAgICAgICAgICAoU2VxdWVuY2UubWFwIH5mOm5vdF8gKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdCkpXG4gICAgICB8IElmIChpZl8sIHRoZW5fLCBlbHNlXykgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBpZl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiB0aGVuX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIGVsc2VfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgaWZfKSB+ZjooZnVuIGlmXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdGhlbl8pIH5mOihmdW4gdGhlbl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGVsc2VfKSB+ZjooZnVuIGVsc2VfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyICh0eXBlIGEpIChhX29ic2VydmVyIDogYSBRdWlja2NoZWNrLk9ic2VydmVyLnQpID1cbiAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemUgfmhhc2ggLT5cbiAgICBoYXNoX2ZvbGRfdFxuICAgICAgKGZ1biBoYXNoIGEgLT4gUXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlIGFfb2JzZXJ2ZXIgYSB+c2l6ZSB+aGFzaClcbiAgICAgIGhhc2hcbiAgICAgIHQpXG47O1xuIiwiKCogQ29udmVyc2lvbnMgYmV0d2VlbiB1bml0cyBvZiBtZWFzdXJlIGJhc2VkIG9uIGJ5dGVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5tb2R1bGUgVCA9IEJ5dGVfdW5pdHMwXG5pbmNsdWRlIChUIDogbW9kdWxlIHR5cGUgb2YgVCB3aXRoIG1vZHVsZSBSZXByIDo9IFJlcHIpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIC0gKSBhIGIgPSBvZl9yZXByIChSZXByLiggLSApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCArICkgYSBiID0gb2ZfcmVwciAoUmVwci4oICsgKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggLy8gKSBhIGIgPSBSZXByLiggLy8gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKVxuXG4gIGxldCAoIC8gKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpIC8uIHMpKVxuICBsZXQgKCAqICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAqLiBzKSlcbmVuZFxuXG5pbmNsdWRlIEluZml4XG5cbmxldCB6ZXJvID0gb2ZfcmVwciBSZXByLnplcm9cbmxldCBtaW5fdmFsdWUgPSBvZl9yZXByIFJlcHIubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlID0gb2ZfcmVwciBSZXByLm1heF92YWx1ZVxubGV0IHNjYWxlID0gSW5maXguKCAqIClcbmxldCBpc2NhbGUgdCBzID0gb2ZfcmVwciAoUmVwci4oICogKSAodG9fcmVwciB0KSAoUmVwci5vZl9pbnQgcykpXG5sZXQgYnl0ZXNfaW50X2V4biA9IFQuYnl0ZXNfaW50X2V4blxubGV0IGJ5dGVzX2ludDYzID0gdG9fcmVwclxubGV0IGJ5dGVzX2ludDY0IHQgPSBSZXByLnRvX2ludDY0ICh0b19yZXByIHQpXG5sZXQgYnl0ZXNfZmxvYXQgdCA9IFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdClcbmxldCBvZl9ieXRlc19pbnQgYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50IGIpXG5sZXQgb2ZfYnl0ZXNfaW50NjMgPSBvZl9yZXByXG5sZXQgb2ZfYnl0ZXNfaW50NjRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2ludDY0X2V4biBiKVxubGV0IG9mX2J5dGVzX2Zsb2F0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCBiKVxuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtieXRlc19pbnRfZXhuXSwgW2J5dGVzX2ludDYzXSwgW2J5dGVzX2ludDY0XSBvciBbYnl0ZXNfZmxvYXRdIFxcXG4gICBhcyBhcHByb3ByaWF0ZS5cIl0gYnl0ZXNcbiAgPVxuICBieXRlc19mbG9hdFxuOztcblxubGV0W0BkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNfaW50XSwgW29mX2J5dGVzX2ludDYzXSwgW29mX2J5dGVzX2ludDY0X2V4bl0gb3IgXFxcbiAgIFtvZl9ieXRlc19mbG9hdF9leG5dIGFzIGFwcHJvcHJpYXRlLlwiXSBvZl9ieXRlc1xuICA9XG4gIG9mX2J5dGVzX2Zsb2F0X2V4blxuOztcblxubGV0IGtpbG9ieXRlIDogdCA9IG9mX2J5dGVzX2ludCAxMDI0XG5sZXQgbWVnYWJ5dGUgPSBpc2NhbGUga2lsb2J5dGUgMTAyNFxubGV0IGdpZ2FieXRlID0gaXNjYWxlIG1lZ2FieXRlIDEwMjRcbmxldCB0ZXJhYnl0ZSA9IGlzY2FsZSBnaWdhYnl0ZSAxMDI0XG5sZXQgcGV0YWJ5dGUgPSBpc2NhbGUgdGVyYWJ5dGUgMTAyNFxubGV0IGV4YWJ5dGUgPSBpc2NhbGUgcGV0YWJ5dGUgMTAyNFxuXG5sZXQgd29yZCA9XG4gIGxldCBtb2R1bGUgVyA9IFdvcmRfc2l6ZSBpblxuICBtYXRjaCBXLndvcmRfc2l6ZSB3aXRoXG4gIHwgVy5XMzIgLT4gb2ZfYnl0ZXNfaW50IDRcbiAgfCBXLlc2NCAtPiBvZl9ieXRlc19pbnQgOFxuOztcblxubGV0IGtpbG9ieXRlcyB0IDogZmxvYXQgPSBJbmZpeC4oIC8vICkgdCBraWxvYnl0ZVxubGV0IG1lZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgbWVnYWJ5dGVcbmxldCBnaWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGdpZ2FieXRlXG5sZXQgdGVyYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCB0ZXJhYnl0ZVxubGV0IHBldGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgcGV0YWJ5dGVcbmxldCBleGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZXhhYnl0ZVxubGV0IHdvcmRzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAoUmVwci4oIC8gKSAodG9fcmVwciB0KSAodG9fcmVwciB3b3JkKSlcbmxldCB3b3Jkc19mbG9hdCB0ID0gSW5maXguKCAvLyApIHQgd29yZFxubGV0IG9mX2tpbG9ieXRlcyB0IDogdCA9IEluZml4LiggKiApIGtpbG9ieXRlIHRcbmxldCBvZl9tZWdhYnl0ZXMgdCA9IEluZml4LiggKiApIG1lZ2FieXRlIHRcbmxldCBvZl9naWdhYnl0ZXMgdCA9IEluZml4LiggKiApIGdpZ2FieXRlIHRcbmxldCBvZl90ZXJhYnl0ZXMgdCA9IEluZml4LiggKiApIHRlcmFieXRlIHRcbmxldCBvZl9wZXRhYnl0ZXMgdCA9IEluZml4LiggKiApIHBldGFieXRlIHRcbmxldCBvZl9leGFieXRlcyB0ID0gSW5maXguKCAqICkgZXhhYnl0ZSB0XG5sZXQgb2Zfd29yZHNfaW50IHQgPSBpc2NhbGUgd29yZCB0XG5sZXQgb2Zfd29yZHNfZmxvYXRfZXhuIHQgPSBJbmZpeC4oICogKSB3b3JkIHRcblxubGV0W0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbd29yZHNfaW50X2V4bl0gb3IgW3dvcmRzX2Zsb2F0XVwiXSB3b3JkcyA9XG4gIHdvcmRzX2Zsb2F0XG47O1xuXG5sZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl93b3Jkc19pbnRdIG9yIFtvZl93b3Jkc19mbG9hdF9leG5dXCJdIG9mX3dvcmRzID1cbiAgb2Zfd29yZHNfZmxvYXRfZXhuXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIEludC4oIDwgKSBsZW5ndGggMlxuICB0aGVuIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gdG9vIHNob3J0XCIgcyAoKTtcbiAgbGV0IGJhc2Vfc3RyID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihJbnQuKCAtICkgbGVuZ3RoIDEpIGluXG4gIGxldCBleHRfY2hhciA9IENoYXIubG93ZXJjYXNlIHMuW0ludC4oIC0gKSBsZW5ndGggMV0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIHRyeSBGbG9hdC5vZl9zdHJpbmcgYmFzZV9zdHIgd2l0aFxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSAlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGZsb2F0IFwiXG4gICAgICAgIHNcbiAgICAgICAgYmFzZV9zdHJcbiAgICAgICAgKClcbiAgaW5cbiAgbWF0Y2ggZXh0X2NoYXIgd2l0aFxuICB8ICdiJyAtPiBvZl9ieXRlc19mbG9hdF9leG4gYmFzZVxuICB8ICdrJyAtPiBvZl9raWxvYnl0ZXMgYmFzZVxuICB8ICdtJyAtPiBvZl9tZWdhYnl0ZXMgYmFzZVxuICB8ICdnJyAtPiBvZl9naWdhYnl0ZXMgYmFzZVxuICB8ICd0JyAtPiBvZl90ZXJhYnl0ZXMgYmFzZVxuICB8ICdwJyAtPiBvZl9wZXRhYnl0ZXMgYmFzZVxuICB8ICdlJyAtPiBvZl9leGFieXRlcyBiYXNlXG4gIHwgJ3cnIC0+IG9mX3dvcmRzIGJhc2VcbiAgfCBleHQgLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIGlsbGVnYWwgZXh0ZW5zaW9uICVjXCIgcyBleHQgKClcbjs7XG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuXG5sZXQgbGFyZ2VzdF9tZWFzdXJlIHQgPVxuICBsZXQgdF9hYnMgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSkgaW5cbiAgaWYgdF9hYnMgPj0gZXhhYnl0ZVxuICB0aGVuIGBFeGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHBldGFieXRlXG4gIHRoZW4gYFBldGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHRlcmFieXRlXG4gIHRoZW4gYFRlcmFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGdpZ2FieXRlXG4gIHRoZW4gYEdpZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IG1lZ2FieXRlXG4gIHRoZW4gYE1lZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGtpbG9ieXRlXG4gIHRoZW4gYEtpbG9ieXRlc1xuICBlbHNlIGBCeXRlc1xuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAoKiBTaGFyZSB0aGUgY29tbW9uIFtvZl9zZXhwXSBjb2RlIGZvciBbVjFdIGFuZCBbVjJdLiAqKVxuICBtb2R1bGUgT2Zfc2V4cF92MV92MiA6IHNpZ1xuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fbWF0Y2ggKCkgPSBmYWlsd2l0aCBcIk5vdCBhIHJlY29nbml6ZWQgW0J5dGVfdW5pdHMudF0gcmVwcmVzZW50YXRpb25cIlxuXG4gICAgbGV0IG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWxfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiQnl0ZXNcIiAtPlxuICAgICAgICAodHJ5IG9mX2J5dGVzX2ludDYzIChJbnQ2My50X29mX3NleHAgdmFsX3NleHApIHdpdGhcbiAgICAgICAgIHwgXyAtPiBvZl9ieXRlc19mbG9hdF9leG4gKEZsb2F0LnRfb2Zfc2V4cCB2YWxfc2V4cCkpXG4gICAgICB8IFwiS2lsb2J5dGVzXCIgLT4gb2Zfa2lsb2J5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIk1lZ2FieXRlc1wiIC0+IG9mX21lZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJHaWdhYnl0ZXNcIiAtPiBvZl9naWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiVGVyYWJ5dGVzXCIgLT4gb2ZfdGVyYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlBldGFieXRlc1wiIC0+IG9mX3BldGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJFeGFieXRlc1wiIC0+IG9mX2V4YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIldvcmRzXCIgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIHVuaXRfbmFtZTsgdmFsdWUgXSAtPlxuICAgICAgICBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsdWUgdW5pdF9uYW1lXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIHRyeSB0X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGV4biAtPiByYWlzZSAoU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHNleHApKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19mbG9hdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfZmxvYXRfZXhuXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICgqIFYxIG9ubHkgZ29lcyB1cCB0byBnaWdhYnl0ZXMgKilcbiAgICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICAgIHwgYEJ5dGVzIC0+IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2Zsb2F0IHQgOiBmbG9hdCldXG4gICAgICB8IGBLaWxvYnl0ZXMgLT4gWyVzZXhwIGBLaWxvYnl0ZXMgKGtpbG9ieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgTWVnYWJ5dGVzIC0+IFslc2V4cCBgTWVnYWJ5dGVzIChtZWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEdpZ2FieXRlcyB8IGBUZXJhYnl0ZXMgfCBgUGV0YWJ5dGVzIHwgYEV4YWJ5dGVzIC0+XG4gICAgICAgIFslc2V4cCBgR2lnYWJ5dGVzIChnaWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmxvd2VyY2FzZSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuXG4gICAgKCogVGhpcyB0ZXN0IGRvY3VtZW50cyB0aGUgb3JpZ2luYWwgdG8tc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFuZCBmYWlscyB1bmRlciBqYXZhc2NyaXB0XG4gICAgICAgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHRoZSByb3VuZGluZy4gKilcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKF8gW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgICAgWyVleHBlY3Qge3wgMTAwMGIgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDIzYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDFrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgICAgWyVleHBlY3Qge3wgMS4wMDA5OGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTUwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjQ2NDg0ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ljc2NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTcuNjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5NzYuNTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5LjUzNjc0bSB8fV1cbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gb2Zfc2V4cF9lcnJvciBtc2cgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDYzKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gYnl0ZXNfaW50NjNcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2J5dGVzX2ludDYzXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfaW50NjMgdCA6IEludDYzLnQpXVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IFQudG9fc3RyaW5nXG5cbm1vZHVsZSBTaG9ydCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgbGV0IHRvX3VuaXRzX3N0ciB0b191bml0IGV4dCA9XG4gICAgICBsZXQgZiA9IHRvX3VuaXQgdCBpblxuICAgICAgbGV0IGZfYWJzID0gRmxvYXQuYWJzIGYgaW5cbiAgICAgIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMDAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjBmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjFmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJS4yZiVjXCIgZiBleHRcbiAgICBpblxuICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICB8IGBCeXRlcyAtPiBzcHJpbnRmIFwiJWRCXCIgKGJ5dGVzX2ludF9leG4gdClcbiAgICB8IGBLaWxvYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGtpbG9ieXRlcyAnSydcbiAgICB8IGBNZWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIG1lZ2FieXRlcyAnTSdcbiAgICB8IGBHaWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGdpZ2FieXRlcyAnRydcbiAgICB8IGBUZXJhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHRlcmFieXRlcyAnVCdcbiAgICB8IGBQZXRhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHBldGFieXRlcyAnUCdcbiAgICB8IGBFeGFieXRlcyAtPiB0b191bml0c19zdHIgZXhhYnl0ZXMgJ0UnXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgWyVleHBlY3Qge3wgMTAwMEIgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgIFslZXhwZWN0IHt8IDEwMjNCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ljc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ny43SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNTRNIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzIDEwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOS4zMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkzMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTAuOVQgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgODguOFAgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMzAwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDIuNjBFIHx9XTtcbiAgICAoKVxuICA7O1xuZW5kXG5cbmxldCB0b19zdHJpbmdfc2hvcnQgPSBTaG9ydC50b19zdHJpbmdcblxubGV0W0BkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNdLCBbb2Zfa2lsb2J5dGVzXSwgW29mX21lZ2FieXRlc10sIGV0YyBhcyBhcHByb3ByaWF0ZS5cIl0gY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICA9XG4gIG1hdGNoIHVuaXRzIHdpdGhcbiAgfCBgQnl0ZXMgLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIHZhbHVlXG4gIHwgYEtpbG9ieXRlcyAtPiBvZl9raWxvYnl0ZXMgdmFsdWVcbiAgfCBgTWVnYWJ5dGVzIC0+IG9mX21lZ2FieXRlcyB2YWx1ZVxuICB8IGBHaWdhYnl0ZXMgLT4gb2ZfZ2lnYWJ5dGVzIHZhbHVlXG4gIHwgYFdvcmRzIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biB2YWx1ZVxuOztcblxuaW5jbHVkZVxuICBRdWlja2NoZWNrYWJsZS5PZl9xdWlja2NoZWNrYWJsZVxuICAgIChSZXByKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSA9IG9mX3JlcHJcbiAgICAgIGxldCB0b19xdWlja2NoZWNrYWJsZSA9IHRvX3JlcHJcbiAgICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuZXh0ZXJuYWwgaXNfaGVhcF9ibG9jayA6IENhbWwuT2JqLnQgLT4gYm9vbCA9IFwiY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcIiBbQEBub2FsbG9jXVxuXG5sZXQgaXNfb2sgdiA9IGlzX2hlYXBfYmxvY2sgKENhbWwuT2JqLnJlcHIgdilcbmxldCBjcmVhdGUgdiA9IGlmIGlzX29rIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG5cbmxldCBjcmVhdGVfZXhuIHYgPVxuICBpZiBpc19vayB2IHRoZW4gdiBlbHNlIGZhaWx3aXRoIFwiSGVhcF9ibG9jay5jcmVhdGVfZXhuIGNhbGxlZCB3aXRoIG5vbiBoZWFwIGJsb2NrXCJcbjs7XG5cbmxldCB2YWx1ZSB0ID0gdFxubGV0IGJ5dGVzX3Blcl93b3JkID0gV29yZF9zaXplLihudW1fYml0cyB3b3JkX3NpemUpIC8gOFxuXG5sZXQgYnl0ZXMgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgKENhbWwuT2JqLnNpemUgKENhbWwuT2JqLnJlcHIgKHQgOiBhIHQpKSArIDEpICogYnl0ZXNfcGVyX3dvcmRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgTmV4dF9maXRcbiAgICAgICAgfCBGaXJzdF9maXRcbiAgICAgICAgfCBCZXN0X2ZpdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IENhbWwuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IENhbWwuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlIGVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQ2FtbC5HY1xuXG5tb2R1bGUgU3RhdCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgYmluX2lvLCBzZXhwLCBmaWVsZHNdXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2YsIGZpZWxkc11cblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgbGV0IGRpZmYgYWZ0ZXIgYmVmb3JlID1cbiAgICB7IG1pbm9yX3dvcmRzID0gYWZ0ZXIubWlub3Jfd29yZHMgLS4gYmVmb3JlLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGFmdGVyLnByb21vdGVkX3dvcmRzIC0uIGJlZm9yZS5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBhZnRlci5tYWpvcl93b3JkcyAtLiBiZWZvcmUubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBiZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gYWZ0ZXIubWFqb3JfY29sbGVjdGlvbnMgLSBiZWZvcmUubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBhZnRlci5oZWFwX3dvcmRzIC0gYmVmb3JlLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gYWZ0ZXIuaGVhcF9jaHVua3MgLSBiZWZvcmUuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBhZnRlci5saXZlX3dvcmRzIC0gYmVmb3JlLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gYWZ0ZXIubGl2ZV9ibG9ja3MgLSBiZWZvcmUubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBhZnRlci5mcmVlX3dvcmRzIC0gYmVmb3JlLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gYWZ0ZXIuZnJlZV9ibG9ja3MgLSBiZWZvcmUuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGFmdGVyLmxhcmdlc3RfZnJlZSAtIGJlZm9yZS5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGFmdGVyLmZyYWdtZW50cyAtIGJlZm9yZS5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gYWZ0ZXIuY29tcGFjdGlvbnMgLSBiZWZvcmUuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gYWZ0ZXIudG9wX2hlYXBfd29yZHMgLSBiZWZvcmUudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBhZnRlci5zdGFja19zaXplIC0gYmVmb3JlLnN0YWNrX3NpemVcbiAgICB9XG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgZGlmZiBhZnRlciBiZWZvcmUgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBhZnRlci5taW5vcl93b3JkcyAtLiBiZWZvcmUubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gYWZ0ZXIucHJvbW90ZWRfd29yZHMgLS4gYmVmb3JlLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGFmdGVyLm1ham9yX3dvcmRzIC0uIGJlZm9yZS5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBhZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBhZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGFmdGVyLmhlYXBfd29yZHMgLSBiZWZvcmUuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBhZnRlci5oZWFwX2NodW5rcyAtIGJlZm9yZS5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGFmdGVyLmxpdmVfd29yZHMgLSBiZWZvcmUubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBhZnRlci5saXZlX2Jsb2NrcyAtIGJlZm9yZS5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGFmdGVyLmZyZWVfd29yZHMgLSBiZWZvcmUuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBhZnRlci5mcmVlX2Jsb2NrcyAtIGJlZm9yZS5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gYWZ0ZXIubGFyZ2VzdF9mcmVlIC0gYmVmb3JlLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gYWZ0ZXIuZnJhZ21lbnRzIC0gYmVmb3JlLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBhZnRlci5jb21wYWN0aW9ucyAtIGJlZm9yZS5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBhZnRlci50b3BfaGVhcF93b3JkcyAtIGJlZm9yZS50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGFmdGVyLnN0YWNrX3NpemUgLSBiZWZvcmUuc3RhY2tfc2l6ZVxuICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgYWZ0ZXIuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc1xuICAgIH1cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJSBlbHNlXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSUgZW5kaWZdXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuZW5kXG5cbm1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQWxsb2NhdGlvbl9wb2xpY3kuVjEudCA9XG4gICAgfCBOZXh0X2ZpdFxuICAgIHwgRmlyc3RfZml0XG4gICAgfCBCZXN0X2ZpdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICB8IE5leHRfZml0IC0+IDBcbiAgICB8IEZpcnN0X2ZpdCAtPiAxXG4gICAgfCBCZXN0X2ZpdCAtPiAyXG4gIDs7XG5lbmRcblxubGV0IHR1bmVcbiAgICAgID9sb2dnZXJcbiAgICAgID9taW5vcl9oZWFwX3NpemVcbiAgICAgID9tYWpvcl9oZWFwX2luY3JlbWVudFxuICAgICAgP3NwYWNlX292ZXJoZWFkXG4gICAgICA/dmVyYm9zZVxuICAgICAgP21heF9vdmVyaGVhZFxuICAgICAgP3N0YWNrX2xpbWl0XG4gICAgICA/YWxsb2NhdGlvbl9wb2xpY3lcbiAgICAgID93aW5kb3dfc2l6ZVxuICAgICAgP2N1c3RvbV9tYWpvcl9yYXRpb1xuICAgICAgP2N1c3RvbV9taW5vcl9yYXRpb1xuICAgICAgP2N1c3RvbV9taW5vcl9tYXhfc2l6ZVxuICAgICAgKClcbiAgPVxuICBsZXQgb2xkX2NvbnRyb2xfcGFyYW1zID0gZ2V0ICgpIGluXG4gIGxldCBmIG9wdCB0b19zdHJpbmcgZmllbGQgPVxuICAgIGxldCBvbGRfdmFsdWUgPSBGaWVsZC5nZXQgZmllbGQgb2xkX2NvbnRyb2xfcGFyYW1zIGluXG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gb2xkX3ZhbHVlXG4gICAgfCBTb21lIG5ld192YWx1ZSAtPlxuICAgICAgT3B0aW9uLml0ZXIgbG9nZ2VyIH5mOihmdW4gZiAtPlxuICAgICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgICBmXG4gICAgICAgICAgXCJHYy5Db250cm9sLiVzOiAlcyAtPiAlc1wiXG4gICAgICAgICAgKEZpZWxkLm5hbWUgZmllbGQpXG4gICAgICAgICAgKHRvX3N0cmluZyBvbGRfdmFsdWUpXG4gICAgICAgICAgKHRvX3N0cmluZyBuZXdfdmFsdWUpKTtcbiAgICAgIG5ld192YWx1ZVxuICBpblxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPSBPcHRpb24ubWFwIGFsbG9jYXRpb25fcG9saWN5IH5mOkFsbG9jYXRpb25fcG9saWN5LnRvX2ludCBpblxuICBsZXQgbmV3X2NvbnRyb2xfcGFyYW1zID1cbiAgICBDb250cm9sLkZpZWxkcy5tYXBcbiAgICAgIH5taW5vcl9oZWFwX3NpemU6KGYgbWlub3JfaGVhcF9zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWFqb3JfaGVhcF9pbmNyZW1lbnQ6KGYgbWFqb3JfaGVhcF9pbmNyZW1lbnQgc3RyaW5nX29mX2ludClcbiAgICAgIH5zcGFjZV9vdmVyaGVhZDooZiBzcGFjZV9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnZlcmJvc2U6KGYgdmVyYm9zZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1heF9vdmVyaGVhZDooZiBtYXhfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH5zdGFja19saW1pdDooZiBzdGFja19saW1pdCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmFsbG9jYXRpb25fcG9saWN5OihmIGFsbG9jYXRpb25fcG9saWN5IHN0cmluZ19vZl9pbnQpXG4gICAgICB+d2luZG93X3NpemU6KGYgd2luZG93X3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWFqb3JfcmF0aW86KGYgY3VzdG9tX21ham9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX3JhdGlvOihmIGN1c3RvbV9taW5vcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9tYXhfc2l6ZTooZiBjdXN0b21fbWlub3JfbWF4X3NpemUgc3RyaW5nX29mX2ludClcbiAgaW5cbiAgc2V0IG5ld19jb250cm9sX3BhcmFtc1xuOztcblxubGV0IGRpc2FibGVfY29tcGFjdGlvbiA/bG9nZ2VyIH5hbGxvY2F0aW9uX3BvbGljeSAoKSA9XG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9XG4gICAgbWF0Y2ggYWxsb2NhdGlvbl9wb2xpY3kgd2l0aFxuICAgIHwgYERvbid0X2NoYW5nZSAtPiBOb25lXG4gICAgfCBgU2V0X3RvIHBvbGljeSAtPiBTb21lIHBvbGljeVxuICBpblxuICAoKiBUaGUgdmFsdWUgMV8wMDBfMDAwLCBhY2NvcmRpbmcgdG9cbiAgICAgaHR0cDovL2NhbWwuaW5yaWEuZnIvcHViL2RvY3MvbWFudWFsLW9jYW1sLTQuMDIvbGlicmVmL0djLmh0bWxcbiAgICAgd2lsbCBkaXNhYmxlIGNvbXBhY3Rpb25zLlxuICAqKVxuICB0dW5lID9sb2dnZXIgP2FsbG9jYXRpb25fcG9saWN5IH5tYXhfb3ZlcmhlYWQ6MV8wMDBfMDAwICgpXG47O1xuXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIG1ham9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3Jfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcHJvbW90ZWRfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19wcm9tb3RlZF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtaW5vcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29tcGFjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19jb21wYWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9wbHVzX21pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBhbGxvY2F0ZWRfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19hbGxvY2F0ZWRfd29yZHNcIlxuXG5sZXQgemVybyA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKGludF9vZl9zdHJpbmcgXCIwXCIpXG5cbigqIFRoZSBjb21waWxlciB3b24ndCBvcHRpbWl6ZSBpbnRfb2Zfc3RyaW5nIGF3YXkgc28gaXQgd29uJ3RcbiAgIHBlcmZvcm0gY29uc3RhbnQgZm9sZGluZyBiZWxvdy4gKilcbmxldCByZWMga2VlcF9hbGl2ZSBvID0gaWYgemVybyA8PiAwIHRoZW4ga2VlcF9hbGl2ZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvKVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IHByZXBhcmVfaGVhcF90b19jb3VudF9taW5vcl9hbGxvY2F0aW9uICgpID1cbiAgICAoKiBXZSBjYWxsIFttaW5vcl0gdG8gZW1wdHkgdGhlIG1pbm9yIGhlYXAsIHNvIHRoYXQgb3VyIGFsbG9jYXRpb24gaXMgdW5saWtlbHkgdG9cbiAgICAgICB0cmlnZ2VyIGEgbWlub3IgZ2MuICopXG4gICAgbWlub3IgKCk7XG4gICAgKCogV2UgYWxsb2NhdGUgdHdvIHdvcmRzIGluIGNhc2UgdGhlIFtHYy5taW5vcl0gZmluaXNoZXMgYSBtYWpvciBnYyBjeWNsZSwgaW4gd2hpY2hcbiAgICAgICBjYXNlIGl0IHJlcXVlc3RzIGEgbWlub3IgZ2MgdG8gb2NjdXIgYXQgdGhlIG5leHQgbWlub3IgYWxsb2NhdGlvbi4gIFdlIGRvbid0IHdhbnRcbiAgICAgICB0aGUgc3Vic2VxdWVudCBtaW5vciBhbGxvY2F0aW9uIHRvIHRyaWdnZXIgYSBtaW5vciBHQywgYmVjYXVzZSB0aGVyZSBpcyBhIGJ1Z1xuICAgICAgIChodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzc3OTgpIGluIHRoZSBPQ2FtbCBydW50aW1lIHRoYXQgZG91YmxlXG4gICAgICAgY291bnRzIFtHYy5taW5vcl93b3Jkc10gaW4gdGhhdCBjYXNlLiAqKVxuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmVmIChTeXMub3BhcXVlX2lkZW50aXR5IDEpKSA6IGludCByZWYpXG4gIDs7XG5cbiAgKCogV2UgZGlzYWJsZSBpbmxpbmluZyBmb3IgdGhpcyBmdW5jdGlvbiBzbyB0aGUgR0Mgc3RhdHMgYW5kIHRoZSBjYWxsIHRvIFtmXSBhcmUgbmV2ZXJcbiAgICAgcmVhcnJhbmdlZC4gKilcbiAgbGV0W0Bjb2xkXSBtZWFzdXJlX2ludGVybmFsIH5vbl9yZXN1bHQgZiA9XG4gICAgbGV0IG1pbm9yX3dvcmRzX2JlZm9yZSA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2JlZm9yZSA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgKCogV2Ugd3JhcCBbZiAoKV0gd2l0aCBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gdG8gcHJldmVudCB0aGUgcmV0dXJuIHZhbHVlIGZyb20gYmVpbmdcbiAgICAgICBvcHRpbWl6ZWQgYXdheS4gKilcbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKGYgKCkpIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FmdGVyID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWZ0ZXIgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPSBtYWpvcl93b3Jkc19hZnRlciAtIG1ham9yX3dvcmRzX2JlZm9yZSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPSBtaW5vcl93b3Jkc19hZnRlciAtIG1pbm9yX3dvcmRzX2JlZm9yZSBpblxuICAgIG9uX3Jlc3VsdCB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeFxuICA7O1xuXG4gIGxldCBpc196ZXJvX2FsbG9jICh0eXBlIGEpIChmIDogdW5pdCAtPiBhKSA9XG4gICAgKCogSW5zdGVhZCBvZiB1c2luZyBbQWxsb2NhdGlvbl9yZXBvcnQubWVhc3VyZV0sIGFuZCBtYXRjaGluZyBvbiB0aGUgcmVzdWx0LCB3ZSB1c2VcbiAgICAgICB0aGlzIGNvbnN0cnVjdGlvbiwgaW4gb3JkZXIgdG8gaGF2ZSBbaXNfemVyb19hbGxvY10gbm90IGFsbG9jYXRlIGl0c2VsZi4gVGhpc1xuICAgICAgIGVuYWJsZXMgW2lzX3plcm9fYWxsb2NdIHRvIGJlIHVzZWQgaW4gYSBuZXN0ZWQgd2F5LlxuXG4gICAgICAgVGhpcyBhbHNvIG1lYW5zIHdlIGNhbm5vdCBjYWxsIFtwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWxsb2NhdGlvbl0uIFRoaXMgaXNcbiAgICAgICBva2F5LCBzaW5jZSB3ZSBkbyBub3QgbmVlZCBhIHByZWNpc2UgY291bnQsIHdlIG9ubHkgbmVlZCB0byBjaGVjayBpZiB0aGUgY291bnQgaXNcbiAgICAgICB6ZXJvIG9yIG5vdC4gKilcbiAgICBtZWFzdXJlX2ludGVybmFsXG4gICAgICBmXG4gICAgICB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHZhbHVlIC0+XG4gICAgICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2YWx1ZSA6IGEpO1xuICAgICAgICBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPT0gMCAmJiBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPT0gMClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9yZXBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZWFzdXJlX2FsbG9jYXRpb24gZiA9XG4gICAgcHJlcGFyZV9oZWFwX3RvX2NvdW50X21pbm9yX2FsbG9jYXRpb24gKCk7XG4gICAgbWVhc3VyZV9pbnRlcm5hbCBmIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeCAtPlxuICAgICAgeCwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9sb2cgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzaXplX2luX3dvcmRzIDogaW50XG4gICAgICA7IGlzX21ham9yIDogYm9vbFxuICAgICAgOyBiYWNrdHJhY2UgOiBzdHJpbmdcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMSwgMCldXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCBsb2cgOiBBbGxvY2F0aW9uX2xvZy50IGxpc3QgcmVmID0gcmVmIFtdXG4gICAgYW5kIG1ham9yX2FsbG9jcyA9IHJlZiAwXG4gICAgYW5kIG1pbm9yX2FsbG9jcyA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2FsbG9jIH5pc19tYWpvciAoaW5mbyA6IENhbWwuR2MuTWVtcHJvZi5hbGxvY2F0aW9uKSA9XG4gICAgICBpZiBpc19tYWpvclxuICAgICAgdGhlbiBtYWpvcl9hbGxvY3MgOj0gIW1ham9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzXG4gICAgICBlbHNlIG1pbm9yX2FsbG9jcyA6PSAhbWlub3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXM7XG4gICAgICBsZXQgYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyBpbmZvLmNhbGxzdGFjayBpblxuICAgICAgKCogTWFrZSBiYWNrdHJhY2VzIGVhc2llciB0byByZWFkIGJ5IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgYmVsb3cgdGhpcyBmdW5jdGlvbiAqKVxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zdWJzdHJfaW5kZXggYmFja3RyYWNlIH5wYXR0ZXJuOlwibWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb25cIiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBwb3NzaWJsZTogd2UgbWF5IGhhdmUgbG9nZ2VkIGFsbG9jYXRpb25zIGluIGFub3RoZXIgdGhyZWFkICopXG4gICAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgU3RyaW5nLnN1YiB+cG9zOjAgfmxlbjpwIGJhY2t0cmFjZVxuICAgICAgICAgIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8ICdcXG4nIC0+IGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgaW5mbyA6IEFsbG9jYXRpb25fbG9nLnQgPVxuICAgICAgICB7IHNpemVfaW5fd29yZHMgPSBpbmZvLm5fc2FtcGxlczsgaXNfbWFqb3I7IGJhY2t0cmFjZSB9XG4gICAgICBpblxuICAgICAgbG9nIDo9IGluZm8gOjogIWxvZztcbiAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCB0cmFja2VyID1cbiAgICAgIHsgQ2FtbC5HYy5NZW1wcm9mLm51bGxfdHJhY2tlciB3aXRoXG4gICAgICAgIGFsbG9jX21pbm9yID0gb25fYWxsb2MgfmlzX21ham9yOmZhbHNlXG4gICAgICA7IGFsbG9jX21ham9yID0gb25fYWxsb2MgfmlzX21ham9yOnRydWVcbiAgICAgIH1cbiAgICBpblxuICAgIENhbWwuR2MuTWVtcHJvZi5zdGFydCB+c2FtcGxpbmdfcmF0ZToxLjAgdHJhY2tlcjtcbiAgICAoKiBFeG4ucHJvdGVjdCwgbWFudWFsbHkgaW5saW5lZCB0byBndWFyYW50ZWUgbm8gYWxsb2NhdGlvbnMgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgICAgfCB4IC0+XG4gICAgICAgICgqIE1lbXByb2Yuc3RvcCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhbGwgbWVtcHJvZiBjYWxsYmFja3MgYXJlIHJ1biAoc29tZSBtYXkgYmVcbiAgICAgICAgICAgZGVsYXllZCBpZiB0aGV5IGhhcHBlbmVkIGR1cmluZyBDIGNvZGUgYW5kIHRoZXJlIGhhcyBiZWVuIG5vIGFsbG9jYXRpb24gc2luY2UpLFxuICAgICAgICAgICBzbyB3ZSBleHBsaWN0bHkgZmx1c2ggdGhlbSAqKVxuICAgICAgICBDYW1sLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgeFxuICAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBDYW1sLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgKCByZXN1bHRcbiAgICAsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZVxuICAgICAgICB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkOiFtYWpvcl9hbGxvY3NcbiAgICAgICAgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZDohbWlub3JfYWxsb2NzXG4gICAgLCBMaXN0LnJldiAhbG9nIClcbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgeCwgcmVwb3J0ID0gbWVhc3VyZV9hbGxvY2F0aW9uIGYgaW5cbiAgICB4LCByZXBvcnQsIFtdXG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgYWRkX2ZpbmFsaXplciB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXIgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgKCogW2FkZF9maW5hbGl6ZXJfZXhuXSBpcyB0aGUgc2FtZSBhcyBbYWRkX2ZpbmFsaXplcl0uICBIb3dldmVyLCB0aGVpciB0eXBlcyBpblxuICAgICBjb3JlX2djLm1saSBhcmUgZGlmZmVyZW50LCBhbmQgdGhlIHR5cGUgb2YgW2FkZF9maW5hbGl6ZXJdIGd1YXJhbnRlZXMgdGhhdCBpdCBhbHdheXNcbiAgICAgcmVjZWl2ZXMgYSBoZWFwIGJsb2NrLCB3aGljaCBlbnN1cmVzIHRoYXQgaXQgd2lsbCBub3QgcmFpc2UsIHdoaWxlXG4gICAgIFthZGRfZmluYWxpemVyX2V4bl0gYWNjZXB0cyBhbnkgdHlwZSwgYW5kIHNvIG1heSByYWlzZS4gKilcbiAgbGV0IGFkZF9maW5hbGl6ZXJfZXhuIHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyX2xhc3QgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4geCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplX3JlbGVhc2UgPSBDYW1sLkdjLmZpbmFsaXNlX3JlbGVhc2VcblxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBhbGFybVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfID0gXCI8Z2MgYWxhcm0+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgbGV0IGNyZWF0ZSBmID0gY3JlYXRlX2FsYXJtIChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKVxuICAgIGxldCBkZWxldGUgPSBkZWxldGVfYWxhcm1cbiAgZW5kXG5lbmRcbiIsIm9wZW4gU3RhYmxlX21vZHVsZV90eXBlc1xubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5RdWV1ZVxuXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgYSA9XG4gICAgICAgIGxldCByID0gY3JlYXRlICgpIGluXG4gICAgICAgICgqIFdlIGVucXVldWUgZXZlcnl0aGluZyB0d2ljZSwgYW5kIGRlcXVldWUgaXQgb25jZSB0byBlbnN1cmU6XG4gICAgICAgICAgIC0gdGhhdCB0aGUgcXVldWUgaGFzIHRoZSBzYW1lIGNvbnRlbnQgYXMgdGhlIGFycmF5LlxuICAgICAgICAgICAtIHRoYXQgaXQgaGFzLCBpbiBtb3N0IGNhc2VzLCBhbiBpbnRlcmVzdGluZyBpbnRlcm5hbCBzdHJ1Y3R1cmUqKVxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBpZ25vcmUgKGRlcXVldWVfZXhuIHIgOiBib29sKTtcbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgclxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgU2VyaWFsaXphdGlvbl92MSA9IHN0cnVjdFxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI0Yzg0MjU0LTQ5OTItMTFlNi05YmE3LTczNGUxNTQwMjdiZFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5RdWV1ZVwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPSBpbml0IGxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSlcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG4gICAgKCogV2UgZG9uJ3QgaGF2ZSBhIFslYmluX2RpZ2VzdF0gZXhwZWN0IHRlc3QgaGVyZSBiZWNhdXNlIHRoZSBiaW5faW8gaXMgbW9zdGx5IGhhbmRcbiAgICAgICB3cml0dGVuLCBhbmQgW2NvcmVfcXVldWVfdW5pdF90ZXN0cy5tbF0gaGFzIHVuaXQgdGVzdHMgZm9yIHNwZWNpZmljIHZhbHVlcy4gKilcblxuICAgIGxldCBtYXAgPSBtYXBcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBVbml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0Lk1ha2VcblxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aG91dF9jb21wYXJhdG9yID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSB0eXBlIFN0YWJsZTEgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlMyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTQgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlM0XG5cbm1vZHVsZSBNYWtlX3N0YWJsZSA9IE1ha2Vfc3RhYmxlXG5pbmNsdWRlIFN0YWJsZV9pbnRlcm5hbFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGUuU3RhYmxlXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nLlN0YWJsZVxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmcuU3RhYmxlXG5tb2R1bGUgQm9vbCA9IEJvb2wuU3RhYmxlXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHMuU3RhYmxlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlcy5TdGFibGVcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZS5TdGFibGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrLlN0YWJsZVxubW9kdWxlIE1kNSA9IE1kNS5TdGFibGVcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIuU3RhYmxlXG5tb2R1bGUgRXJyb3IgPSBFcnJvci5TdGFibGVcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWUuU3RhYmxlXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZS5TdGFibGVcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24uU3RhYmxlXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlLlN0YWJsZVxubW9kdWxlIEdjID0gR2MuU3RhYmxlXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnQuU3RhYmxlXG5tb2R1bGUgSW5mbyA9IEluZm8uU3RhYmxlXG5tb2R1bGUgSW50ID0gSW50LlN0YWJsZVxubW9kdWxlIEludDYzID0gSW50NjMuU3RhYmxlXG5tb2R1bGUgTGF6eSA9IExhenkuU3RhYmxlXG5tb2R1bGUgTGlzdCA9IExpc3QuU3RhYmxlXG5tb2R1bGUgTWFwID0gTWFwLlN0YWJsZVxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmQuU3RhYmxlXG5tb2R1bGUgTW9udGggPSBNb250aC5TdGFibGVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZy5TdGFibGVcbm1vZHVsZSBPcHRpb24gPSBPcHRpb24uU3RhYmxlXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvci5TdGFibGVcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudC5TdGFibGVcbm1vZHVsZSBQZXJtcyA9IFBlcm1zLlN0YWJsZVxubW9kdWxlIFBpZCA9IFBpZC5TdGFibGVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlLlN0YWJsZVxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdC5TdGFibGVcbm1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlXG5tb2R1bGUgU2V4cCA9IFNleHAuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZVxubW9kdWxlIFN0cmluZyA9IFN0cmluZy5TdGFibGVcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWQuU3RhYmxlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnMuU3RhYmxlXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXQuU3RhYmxlXG5tb2R1bGUgVW5pdCA9IFVuaXQuU3RhYmxlXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NvcmVfdW5peC5TdGFibGVdXCJdXG5pbmNsdWRlIFBlcm1zLkV4cG9ydFxuXG5pbmNsdWRlIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIEltcG9ydC5Ob3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbiAgSW50IDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG5cbmxldCBvZl9jYW1sX2ludCB0ID0gdFxubGV0IHRvX2NhbWxfaW50IHQgPSB0XG5cbnR5cGUgc3lzX2JlaGF2aW9yID1cbiAgWyBgQ29udGludWUgKCoqIENvbnRpbnVlIHRoZSBwcm9jZXNzIGlmIGl0IGlzIGN1cnJlbnRseSBzdG9wcGVkICopXG4gIHwgYER1bXBfY29yZSAoKiogVGVybWluYXRlIHRoZSBwcm9jZXNzIGFuZCBkdW1wIGNvcmUgKilcbiAgfCBgSWdub3JlICgqKiBJZ25vcmUgdGhlIHNpZ25hbCAqKVxuICB8IGBTdG9wICgqKiBTdG9wIHRoZSBwcm9jZXNzICopXG4gIHwgYFRlcm1pbmF0ZSAoKiogVGVybWluYXRlIHRoZSBwcm9jZXNzICopXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbmxldCBlcXVhbCAodCA6IHQpIHQnID0gdCA9IHQnXG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFBsZWFzZSBrZWVwIGluIHN5bmMgd2l0aCB0aGUgbGlzdCBmb3IgdG9fc3RyaW5nL3N5c19iZWhhdmlvciAqKVxuICBvcGVuIENhbWwuU3lzXG5cbiAgbGV0IGFicnQgPSBzaWdhYnJ0XG4gIGxldCBhbHJtID0gc2lnYWxybVxuICBsZXQgYnVzID0gc2lnYnVzXG4gIGxldCBjaGxkID0gc2lnY2hsZFxuICBsZXQgY29udCA9IHNpZ2NvbnRcbiAgbGV0IGZwZSA9IHNpZ2ZwZVxuICBsZXQgaHVwID0gc2lnaHVwXG4gIGxldCBpbGwgPSBzaWdpbGxcbiAgbGV0IGludCA9IHNpZ2ludFxuICBsZXQga2lsbCA9IHNpZ2tpbGxcbiAgbGV0IHBpcGUgPSBzaWdwaXBlXG4gIGxldCBwb2xsID0gc2lncG9sbFxuICBsZXQgcHJvZiA9IHNpZ3Byb2ZcbiAgbGV0IHF1aXQgPSBzaWdxdWl0XG4gIGxldCBzZWd2ID0gc2lnc2VndlxuICBsZXQgc3RvcCA9IHNpZ3N0b3BcbiAgbGV0IHN5cyA9IHNpZ3N5c1xuICBsZXQgdGVybSA9IHNpZ3Rlcm1cbiAgbGV0IHRyYXAgPSBzaWd0cmFwXG4gIGxldCB0c3RwID0gc2lndHN0cFxuICBsZXQgdHRpbiA9IHNpZ3R0aW5cbiAgbGV0IHR0b3UgPSBzaWd0dG91XG4gIGxldCB1cmcgPSBzaWd1cmdcbiAgbGV0IHVzcjEgPSBzaWd1c3IxXG4gIGxldCB1c3IyID0gc2lndXNyMlxuICBsZXQgdnRhbHJtID0gc2lndnRhbHJtXG4gIGxldCB4Y3B1ID0gc2lneGNwdVxuICBsZXQgeGZzeiA9IHNpZ3hmc3pcbiAgbGV0IHplcm8gPSAwXG5lbmRcblxuZXhjZXB0aW9uIEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3IgPVxuICBsZXQga25vd24gPVxuICAgIFtcbiAgICAgIFwic2lnYWJydFwiLCBhYnJ0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2Fscm1cIiwgYWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdidXNcIiwgYnVzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ2NobGRcIiwgY2hsZCwgYElnbm9yZSwgMVxuICAgIDsgXCJzaWdjb250XCIsIGNvbnQsIGBDb250aW51ZSwgMVxuICAgIDsgXCJzaWdmcGVcIiwgZnBlLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2h1cFwiLCBodXAsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnaWxsXCIsIGlsbCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdpbnRcIiwgaW50LCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2tpbGxcIiwga2lsbCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwaXBlXCIsIHBpcGUsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncG9sbFwiLCBwb2xsLCBgVGVybWluYXRlLCAyXG4gICAgOyBcInNpZ3Byb2ZcIiwgcHJvZiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdxdWl0XCIsIHF1aXQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc2VndlwiLCBzZWd2LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3N0b3BcIiwgc3RvcCwgYFN0b3AsIDFcbiAgICA7IFwic2lnc3lzXCIsIHN5cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0ZXJtXCIsIHRlcm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndHJhcFwiLCB0cmFwLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3RzdHBcIiwgdHN0cCwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRpblwiLCB0dGluLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dG91XCIsIHR0b3UsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3VyZ1wiLCB1cmcsIGBJZ25vcmUsIDJcbiAgICA7IFwic2lndXNyMVwiLCB1c3IxLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3VzcjJcIiwgdXNyMiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd2dGFscm1cIiwgdnRhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3hjcHVcIiwgeGNwdSwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd4ZnN6XCIsIHhmc3osIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnemVyb1wiLCB6ZXJvLCBgSWdub3JlLCAxXG4gICAgXVxuICBpblxuICBsZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCB0X2J5X25hbWUgPSBTdHJpbmcuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IGJlaGF2aW9yX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgTGlzdC5pdGVyIGtub3duIH5mOihmdW4gKG5hbWUsIHQsIGJlaGF2aW9yLCBzdGFibGVfdmVyc2lvbikgLT5cbiAgICBIYXNodGJsLnNldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgfmtleTp0IH5kYXRhOihuYW1lLCBzdGFibGVfdmVyc2lvbik7XG4gICAgSGFzaHRibC5zZXQgdF9ieV9uYW1lIH5rZXk6bmFtZSB+ZGF0YTp0O1xuICAgIEhhc2h0Ymwuc2V0IGJlaGF2aW9yX2J5X3QgfmtleTp0IH5kYXRhOmJlaGF2aW9yKTtcbiAgKCogRm9yIHVua25vd24gc2lnbmFsIG51bWJlcnMsIFt0b19zdHJpbmddIHJldHVybnMgYSBtZWFuaW5nZnVsXG4gICAgIHN0cmluZywgd2hpbGUgW2RlZmF1bHRfc3lzX2JlaGF2aW9yXSBoYXMgdG8gcmFpc2UgYW4gZXhjZXB0aW9uXG4gICAgIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSByaWdodCBhbnN3ZXIgaXMuICopXG4gIGxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246cmVxdWVzdGVkX3ZlcnNpb24gPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgdCB3aXRoXG4gICAgfCBTb21lIChzdHJpbmcsIG5lZWRlZF92ZXJzaW9uKSB3aGVuIHJlcXVlc3RlZF92ZXJzaW9uID49IG5lZWRlZF92ZXJzaW9uIC0+IHN0cmluZ1xuICAgIHwgXyAtPiBcIjx1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCBeIFwiPlwiXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubG93ZXJjYXNlIChTdHJpbmcuc3RyaXAgcykgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdF9ieV9uYW1lIHMgd2l0aFxuICAgIHwgU29tZSBzbiAtPiBzblxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCI8dW5rbm93biBzaWduYWwgXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyAoU3RyaW5nLnNsaWNlIHMgMTYgfi0xKSB3aXRoXG4gICAgICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpKVxuICAgICAgZWxzZSByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpXG4gIGluXG4gIGxldCBkZWZhdWx0X3N5c19iZWhhdmlvciB0ID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgYmVoYXZpb3JfYnlfdCB0IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChJbnZhbGlkX2FyZ3VtZW50XG4gICAgICAgICAgIChcIlNpZ25hbC5kZWZhdWx0X3N5c19iZWhhdmlvcjogdW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQpKVxuICAgIHwgU29tZSBiZWhhdmlvciAtPiBiZWhhdmlvclxuICBpblxuICB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yXG47O1xuXG5leGNlcHRpb24gRXhwZWN0ZWRfYXRvbSBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uKVxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiBzIH52ZXJzaW9uOjJcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG5cbmxldCB0X29mX3NleHAgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gIHwgXyAtPiByYWlzZSAoRXhwZWN0ZWRfYXRvbSBzKVxuOztcblxudHlwZSBwaWRfc3BlYyA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG50eXBlIHNpZ3Byb2NtYXNrX2NvbW1hbmQgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxuXG5sZXQgY2FuX3NlbmRfdG8gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgb2Zfc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfZXhuID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfaSA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZXhwX29mX3BpZF9zcGVjID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3BlbmRpbmcgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncHJvY21hc2sgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lnc3VzcGVuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCB0b19zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIHR5cGUgYmVoYXZpb3IgPVxuICAgIFsgYERlZmF1bHRcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBIYW5kbGUgb2YgdCAtPiB1bml0XG4gICAgXVxuXG4gIG1vZHVsZSBCZWhhdmlvciA9IHN0cnVjdFxuICAgIGxldCBvZl9jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgQ2FtbC5TeXMuU2lnbmFsX2RlZmF1bHQgLT4gYERlZmF1bHRcbiAgICAgIHwgU2lnbmFsX2lnbm9yZSAtPiBgSWdub3JlXG4gICAgICB8IFNpZ25hbF9oYW5kbGUgZiAtPiBgSGFuZGxlIGZcbiAgICA7O1xuXG4gICAgbGV0IHRvX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBgRGVmYXVsdCAtPiBDYW1sLlN5cy5TaWduYWxfZGVmYXVsdFxuICAgICAgfCBgSWdub3JlIC0+IFNpZ25hbF9pZ25vcmVcbiAgICAgIHwgYEhhbmRsZSBmIC0+IFNpZ25hbF9oYW5kbGUgKGZ1biB0IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaWduYWwgdCBiZWhhdmlvciA9IEJlaGF2aW9yLm9mX2NhbWwgKENhbWwuU3lzLnNpZ25hbCB0IChCZWhhdmlvci50b19jYW1sIGJlaGF2aW9yKSlcbiAgbGV0IHNldCB0IGJlaGF2aW9yID0gaWdub3JlIChzaWduYWwgdCBiZWhhdmlvciA6IGJlaGF2aW9yKVxuICBsZXQgaGFuZGxlIHQgZiA9IHNldCB0IChgSGFuZGxlIGYpXG5lbmRcblxub3BlbiBFeHBlcnRcblxubGV0IGhhbmRsZV9kZWZhdWx0IHQgPSBzZXQgdCBgRGVmYXVsdFxubGV0IGlnbm9yZSB0ID0gc2V0IHQgYElnbm9yZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MlxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjFcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ25fb3JfbmFuID0gQmFzZS5TaWduX29yX25hblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ25fb3JfbmFuLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICAgIHwgTmFuXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25fb3JfbmFuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ25fb3JfbmFuKSAoU3RhYmxlLlYxKVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCB0b19zdHJpbmcgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBwcmludCBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IGNhdGNoIF8gXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5faGFuZGxlX3VuY2F1Z2h0X2luc3RlYWRcbmxldCBwcmludF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnByaW50X2JhY2t0cmFjZVxubGV0IGdldF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLmdldF9iYWNrdHJhY2VcbmxldCByZWNvcmRfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG5sZXQgYmFja3RyYWNlX3N0YXR1cyA9IENhbWwuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3B0aW9uX2FycmF5XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb24gYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5MYXp5fVtCYXNlLkxhenldfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEJhc2UuTGF6eS50XG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCAoKiogQGlubGluZSAqKVxuXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIGNvbXBhcmUgPVxuICBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuXG5sZXQgY29tcGFyZSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPCApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID49ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IGVxdWFsIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgbWluIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgbWF4IF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgKCdhLCAnYikgZm4gPSAnYSAtPiAnYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSdmFsIG9mICdhXG4gICAgfCBFeHB0IG9mIGV4blxuXG4gIGxldCByZXR1cm4gPSBmdW5jdGlvblxuICAgIHwgUnZhbCB2IC0+IHZcbiAgICB8IEV4cHQgZSAtPiByYWlzZSBlXG4gIDs7XG5cbiAgbGV0IGNhcHR1cmUgZiB4ID1cbiAgICB0cnkgUnZhbCAoZiB4KSB3aXRoXG4gICAgfCBDYW1sLlN5cy5CcmVhayBhcyBlIC0+IHJhaXNlIGVcbiAgICB8IGUgLT4gRXhwdCBlXG4gIDs7XG5lbmRcblxubGV0IHVuaXQgZiA9XG4gIGxldCBsID0gTGF6eS5mcm9tX2Z1biBmIGluXG4gIGZ1biAoKSAtPiBMYXp5LmZvcmNlIGxcbjs7XG5cbmxldCB1bmJvdW5kZWQgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgZiA9XG4gIGxldCBjYWNoZSA9XG4gICAgbGV0IG1vZHVsZSBBID1cbiAgICAgIEhhc2hhYmxlLk1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICAgIGVuZClcbiAgICBpblxuICAgIEEuVGFibGUuY3JlYXRlICgpIH5zaXplOjBcbiAgaW5cbiAgKCogQWxsb2NhdGUgdGhpcyBjbG9zdXJlIGF0IHRoZSBjYWxsIHRvIFt1bmJvdW5kZWRdLCBub3QgYXQgZWFjaCBjYWxsIHRvIHRoZSBtZW1vaXplZFxuICAgICBmdW5jdGlvbi4gKilcbiAgbGV0IHJlYWxseV9jYWxsX2YgYXJnID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgZnVuIGFyZyAtPiBSZXN1bHQucmV0dXJuIChIYXNodGJsLmZpbmRpX29yX2FkZCBjYWNoZSBhcmcgfmRlZmF1bHQ6cmVhbGx5X2NhbGxfZilcbjs7XG5cbigqIHRoZSBzYW1lIGJ1dCB3aXRoIGEgYm91bmQgb24gY2FjaGUgc2l6ZSAqKVxubGV0IGxydSAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSB+bWF4X2NhY2hlX3NpemUgZiA9XG4gIGlmIG1heF9jYWNoZV9zaXplIDw9IDBcbiAgdGhlbiBmYWlsd2l0aGYgXCJNZW1vLmxydTogbWF4X2NhY2hlX3NpemUgb2YgJWkgPD0gMFwiIG1heF9jYWNoZV9zaXplICgpO1xuICBsZXQgbW9kdWxlIENhY2hlID1cbiAgICBIYXNoX3F1ZXVlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICBlbmQpXG4gIGluXG4gIGxldCBjYWNoZSA9IENhY2hlLmNyZWF0ZSAoKSBpblxuICBmdW4gYXJnIC0+XG4gICAgUmVzdWx0LnJldHVyblxuICAgICAgKG1hdGNoIENhY2hlLmxvb2t1cF9hbmRfbW92ZV90b19iYWNrIGNhY2hlIGFyZyB3aXRoXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCByZXN1bHQgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICAgICAgICAgQ2FjaGUuZW5xdWV1ZV9iYWNrX2V4biBjYWNoZSBhcmcgcmVzdWx0O1xuICAgICAgICAgKCogZWplY3QgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeSAqKVxuICAgICAgICAgaWYgQ2FjaGUubGVuZ3RoIGNhY2hlID4gbWF4X2NhY2hlX3NpemVcbiAgICAgICAgIHRoZW4gaWdub3JlIChDYWNoZS5kZXF1ZXVlX2Zyb250X2V4biBjYWNoZSA6IF8gUmVzdWx0LnQpO1xuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IGdlbmVyYWwgP2hhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGYgPVxuICBtYXRjaCBjYWNoZV9zaXplX2JvdW5kIHdpdGhcbiAgfCBOb25lIC0+IHVuYm91bmRlZCA/aGFzaGFibGUgZlxuICB8IFNvbWUgbiAtPiBscnUgP2hhc2hhYmxlIH5tYXhfY2FjaGVfc2l6ZTpuIGZcbjs7XG5cbigqIFdlIGV4cGVjdCBbZl9vbmVzdGVwXSB0byBiZSBhIG9uZS1zdGVwIHVucm9sbGVkIHJlY3Vyc2l2ZSBmdW5jdGlvbjsgc2VlIHRoZSBtbGkuIEhlbmNlLFxuICAgaGVyZSB3ZSBjcmVhdGUgdGhlIG1lbW9pemVkIGZ1bmN0aW9uIF9hbmRfIHBhc3MgaXQgdG8gW2Zfb25lc3RlcF0gdG8gYmUgdXNlZCBmb3JcbiAgIHJlY3Vyc2l2ZSBjYWxscy5cblxuICAgTm90ZSB0aGF0IHdlIGltbWVkaWF0ZWx5IGFwcGx5IFtmX29uZXN0ZXBdIHRvIGl0cyBmaXJzdCBhcmd1bWVudCBoZXJlIHNvIHRoYXQgYW55XG4gICBwcmVjb21wdXRhdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgdXNlciBjYWxscyBbcmVjdXJzaXZlXS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaWYgc29tZW9uZSB3cml0ZXMgdGhpcyBub24tbWVtb2l6ZWQgY29kZTpcblxuICAgWyBsZXQgcmVjIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBdXG5cbiAgIGFuZCBjb252ZXJ0cyB0byBtZW1vaXphdGlvbiBieSBkb2luZzpcblxuICAge1tcbiAgICAgbGV0IGYgPVxuICAgICAgIGxldCBmX29uZXN0ZXAgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIGluXG4gICAgICAgcmVjdXJzaXZlIGZfb25lc3RlcFxuICAgXX1cblxuICAgd2Ugd2FudCB0byBjb21wdXRlIFtkYXRhXSBpbW1lZGlhdGVseS4gSWYgd2UgaGFkIFtmdW4geCAtPiBmX29uZXN0ZXAgKGZvcmNlIG1lbW9pemVkKVxuICAgeF0gYmVsb3csIHdlJ2QgcmVjb21wdXRlIFtkYXRhXSBlYWNoIHRpbWUgdGhlIHVzZXIgY2FsbHMgW2ZdIG9uIGFuIGFyZ3VtZW50IHRoYXQgaGFkbid0XG4gICB5ZXQgYmVlbiBtZW1vaXplZC4gKilcbmxldCByZWN1cnNpdmUgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGZfb25lc3RlcCA9XG4gIGxldCByZWMgbWVtb2l6ZWQgPVxuICAgIGxhenkgKGdlbmVyYWwgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIChmX29uZXN0ZXAgKGZ1biB4IC0+IChmb3JjZSBtZW1vaXplZCkgeCkpKVxuICBpblxuICBmb3JjZSBtZW1vaXplZFxuOztcblxubGV0IG9mX2NvbXBhcmFibGUgKHR5cGUgaW5kZXgpIChtb2R1bGUgTSA6IENvbXBhcmFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGluZGV4KSBmID1cbiAgbGV0IG0gPSByZWYgTS5NYXAuZW1wdHkgaW5cbiAgZnVuICh4IDogTS50KSAtPlxuICAgIGxldCB2ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kICFtIHggd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCB2ID0gUmVzdWx0LmNhcHR1cmUgZiB4IGluXG4gICAgICAgIG0gOj0gTWFwLnNldCAhbSB+a2V5OnggfmRhdGE6djtcbiAgICAgICAgdlxuICAgIGluXG4gICAgUmVzdWx0LnJldHVybiB2XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUXVldWUgPSBCYXNlLkxpbmtlZF9xdWV1ZVxuaW5jbHVkZSBRdWV1ZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFF1ZXVlLnRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgwMGRmOWEwLTQ5OTItMTFlNi04ODFkLWZmZTFhNWM4YWNlZFwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkxpbmtlZF9xdWV1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgKCogQmluX3Byb3QgcmVhZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSB3cml0dGVuIG91dCwgYXMgZGV0ZXJtaW5lZFxuICAgICAgIGJ5IFtpdGVyXS4gIFNvLCB3ZSBjYW4gaWdub3JlIHRoZSBpbmRleCBhbmQganVzdCBlbnF1ZXVlIGVhY2ggZWxlbWVudCBhcyBpdCBpcyByZWFkXG4gICAgICAgaW4uICopXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICBlbnF1ZXVlIHQgKG5leHQgKCkpXG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEZXJpdmluZ19oYXNoX2ludGZcblxubW9kdWxlIE9mX2Rlcml2aW5nX2hhc2hcbiAgICAoUmVwciA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmVwci5oYXNoX2ZvbGRfdCBzdGF0ZSAoTS50b19yZXByIHQpXG4gIGxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICdhIHQgPVxuICB7ICgqIFthcnJdIGlzIGEgY3ljbGljIGJ1ZmZlciAqKVxuICAgIG11dGFibGUgYXJyIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbZnJvbnRfaW5kZXhdIGFuZCBbYmFja19pbmRleF0gYXJlIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2ggbmV3IGVsZW1lbnRzIG1heSBiZVxuICAgICAgIGVucXVldWVkLiAgVGhpcyBtYWtlcyB0aGUgYWN0aXZlIHBhcnQgb2YgW2Fycl0gdGhlIHJhbmdlIGZyb20gW2Zyb250X2luZGV4KzFdIHRvXG4gICAgICAgW2JhY2tfaW5kZXgtMV0gKG1vZHVsbyB0aGUgbGVuZ3RoIG9mIFthcnJdIGFuZCB3cmFwcGluZyBhcm91bmQgaWYgbmVjZXNzYXJ5KS4gIE5vdGVcbiAgICAgICB0aGF0IHRoaXMgbWVhbnMgdGhlIGFjdGl2ZSByYW5nZSBpcyBtYXhpbWl6ZWQgd2hlbiBbZnJvbnRfaW5kZXggPSBiYWNrX2luZGV4XSwgd2hpY2hcbiAgICAgICBvY2N1cnMgd2hlbiB0aGVyZSBhcmUgW0FycmF5Lmxlbmd0aCBhcnIgLSAxXSBhY3RpdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBmcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgYmFja19pbmRleCA6IGludFxuICA7ICgqIGFwcGFyZW50X2Zyb250X2luZGV4IGlzIHdoYXQgaXMgZXhwb3NlZCBhcyB0aGUgZnJvbnQgaW5kZXggZXh0ZXJuYWxseS4gIEl0IGhhcyBub1xuICAgICAgIHJlYWwgcmVsYXRpb24gdG8gdGhlIGFycmF5IC0tIGV2ZXJ5IGVucXVldWUgdG8gdGhlIGZyb250IGRlY3JlbWVudHMgaXQgYW5kIGV2ZXJ5XG4gICAgICAgZGVxdWV1ZSBmcm9tIHRoZSBmcm9udCBpbmNyZW1lbnRzIGl0LiAqKVxuICAgIG11dGFibGUgYXBwYXJlbnRfZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7ICgqIFdlIGtlZXAgYXJyX2xlbmd0aCBoZXJlIGFzIGEgc3BlZWQgaGFjay4gIENhbGxpbmcgQXJyYXkubGVuZ3RoIG9uIGFyciBpcyBhY3R1YWxseVxuICAgICAgIG1lYW5pbmdmdWxseSBzbG93ZXIuICopXG4gICAgbXV0YWJsZSBhcnJfbGVuZ3RoIDogaW50XG4gIDsgbmV2ZXJfc2hyaW5rIDogYm9vbFxuICB9XG5cbmxldCBjcmVhdGUgP2luaXRpYWxfbGVuZ3RoID9uZXZlcl9zaHJpbmsgKCkgPVxuICBsZXQgbmV2ZXJfc2hyaW5rID1cbiAgICBtYXRjaCBuZXZlcl9zaHJpbmsgd2l0aFxuICAgIHwgTm9uZSAtPiBPcHRpb24uaXNfc29tZSBpbml0aWFsX2xlbmd0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgbGV0IGluaXRpYWxfbGVuZ3RoID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OjcgaW5pdGlhbF9sZW5ndGggaW5cbiAgaWYgaW5pdGlhbF9sZW5ndGggPCAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicGFzc2VkIG5lZ2F0aXZlIGluaXRpYWxfbGVuZ3RoIHRvIERlcXVlLmNyZWF0ZTogJWlcIiBpbml0aWFsX2xlbmd0aCAoKTtcbiAgKCogTWFrZSB0aGUgaW5pdGlhbCBhcnJheSBsZW5ndGggYmUgW2luaXRpYWxfbGVuZ3RoICsgMV0gc28gd2UgY2FuIGZpdCBbaW5pdGlhbF9sZW5ndGhdXG4gICAgIGVsZW1lbnRzIHdpdGhvdXQgZ3Jvd2luZy4gIFdlIG5ldmVyIHF1aXRlIHVzZSB0aGUgd2hvbGUgYXJyYXkuICopXG4gIGxldCBhcnJfbGVuZ3RoID0gaW5pdGlhbF9sZW5ndGggKyAxIGluXG4gIHsgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmFycl9sZW5ndGhcbiAgOyBmcm9udF9pbmRleCA9IDBcbiAgOyBiYWNrX2luZGV4ID0gMVxuICA7IGFwcGFyZW50X2Zyb250X2luZGV4ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBhcnJfbGVuZ3RoXG4gIDsgbmV2ZXJfc2hyaW5rXG4gIH1cbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGggaW4gYSBtdXRhYmxlIGZpZWxkIGZvciBzcGVlZCwgYnV0IHRoaXMgY2FsY3VsYXRpb24gc2hvdWxkXG4gICBiZSBjb3JyZWN0IGJ5IGNvbnN0cnVjdGlvbiwgYW5kIGNhbiBiZSB1c2VkIGZvciB0ZXN0aW5nLiAqKVxubGV0IF9pbnZhcmlhbnRfbGVuZ3RoIHQgPVxuICBsZXQgY29uc3RydWN0ZWRfbGVuZ3RoID1cbiAgICBpZiB0LmZyb250X2luZGV4IDwgdC5iYWNrX2luZGV4XG4gICAgdGhlbiB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMVxuICAgIGVsc2UgdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDEgKyB0LmFycl9sZW5ndGhcbiAgaW5cbiAgYXNzZXJ0IChsZW5ndGggdCA9IGNvbnN0cnVjdGVkX2xlbmd0aClcbjs7XG5cbigqIFRoZSB2YXJpb3VzIFwid2hlbl9ub3RfZW1wdHlcIiBmdW5jdGlvbnMgcmV0dXJuIG1pc2xlYWRpbmcgbnVtYmVycyB3aGVuIHRoZSBkZXF1ZXVlIGlzXG4gICBlbXB0eS4gIFRoZXkgYXJlIHNhZmUgdG8gY2FsbCBpZiBpdCBpcyBrbm93biB0aGF0IHRoZSBkZXF1ZXVlIGlzIG5vbi1lbXB0eS4gKilcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleFxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyBsZW5ndGggdCAtIDFcblxubGV0IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5mcm9udF9pbmRleCArIDFcbjs7XG5cbmxldCBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5iYWNrX2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmJhY2tfaW5kZXggLSAxXG47O1xuXG5sZXQgY2hlY2tlZCB0IGYgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdClcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHlcblxubGV0IGZvbGRpJyB0IGRpciB+aW5pdCB+ZiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2kgfnN0b3BfcG9zIH5zdGVwID1cbiAgICAgIGlmIHJlYWxfaSA9IHN0b3BfcG9zXG4gICAgICB0aGVuIGFjYywgYXBwYXJlbnRfaVxuICAgICAgZWxzZVxuICAgICAgICBsb29wXG4gICAgICAgICAgKGYgYXBwYXJlbnRfaSBhY2MgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgcmVhbF9pKSlcbiAgICAgICAgICB+YXBwYXJlbnRfaTooYXBwYXJlbnRfaSArIHN0ZXApXG4gICAgICAgICAgfnJlYWxfaToocmVhbF9pICsgc3RlcClcbiAgICAgICAgICB+c3RvcF9wb3NcbiAgICAgICAgICB+c3RlcFxuICAgIGluXG4gICAgKCogV2Ugd2FudCB0byBpdGVyYXRlIGZyb20gYWN0dWFsX2Zyb250IHRvIGFjdHVhbF9iYWNrIChvciB2aWNlIHZlcnNhKSwgYnV0IHdlIG1heVxuICAgICAgIG5lZWQgdG8gd3JhcCBhcm91bmQgdGhlIGFycmF5IHRvIGRvIHNvLiAgVGh1cyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxuICAgICAgIDEuICBJZiB0aGUgYWN0aXZlIHJhbmdlIGlzIGNvbnRpZ3VvdXMgKGkuZS4gYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrKSwgdGhlbiBsb29wXG4gICAgICAgc3RhcnRpbmcgYXQgdGhlIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHVudGlsIHdlIHJlYWNoIHRoZSBmaXJzdFxuICAgICAgIGVsZW1lbnQgb3V0c2lkZSBvZiBpdC5cbiAgICAgICAyLiAgSWYgaXQgaXMgbm90IGNvbnRpZ3VvdXMgKGFjdHVhbF9mcm9udCA+IGFjdHVhbF9iYWNrKSwgdGhlbiBmaXJzdCBsb29wIGZyb20gdGhlXG4gICAgICAgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGVuLCBsb29wIGZyb21cbiAgICAgICB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhcnJheSB0byB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UuXG4gICAgKilcbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYGZyb250X3RvX2JhY2sgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3Bvczp0LmFycl9sZW5ndGhcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9IGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgfnN0ZXA6MSBpblxuICAgICAgICBhY2MpXG4gICAgfCBgYmFja190b19mcm9udCAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOigtMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICB+YXBwYXJlbnRfaVxuICAgICAgICAgICAgfnJlYWxfaToodC5hcnJfbGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKSlcbjs7XG5cbmxldCBmb2xkJyB0IGRpciB+aW5pdCB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdCB+ZjooZnVuIF8gYWNjIHYgLT4gZiBhY2MgdilcbmxldCBpdGVyaScgdCBkaXIgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHYgLT4gZiBpIHYpXG5sZXQgaXRlcicgdCBkaXIgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQ6KCkgfmY6KGZ1biBfICgpIHYgLT4gZiB2KVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGQnIHQgYGZyb250X3RvX2JhY2sgfmluaXQgfmZcbmxldCBmb2xkaSB0IH5pbml0IH5mID0gZm9sZGknIHQgYGZyb250X3RvX2JhY2sgfmluaXQgfmZcbmxldCBpdGVyaSB0IH5mID0gaXRlcmknIHQgYGZyb250X3RvX2JhY2sgfmZcblxubGV0IGl0ZXJpX2ludGVybmFsIHQgfmYgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gKFxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgfnJlYWxfaSB+c3RvcF9wb3MgPVxuICAgICAgaWYgcmVhbF9pIDwgc3RvcF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBmIHQuYXJyIHJlYWxfaTtcbiAgICAgICAgbG9vcCB+cmVhbF9pOihyZWFsX2kgKyAxKSB+c3RvcF9wb3MpXG4gICAgaW5cbiAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICB0aGVuIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgZWxzZSAoXG4gICAgICBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3Bvczp0LmFycl9sZW5ndGg7XG4gICAgICBsb29wIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkpKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpX2ludGVybmFsIHQgfmY6KGZ1biBhcnIgaSAtPiBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGFyciBpIHw+IGYpXG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5uZXZlcl9zaHJpbmtcbiAgdGhlblxuICAgICgqIGNsZWFyIHRoZSBhcnJheSB0byBhbGxvdyBlbGVtZW50cyB0byBiZSBnYXJiYWdlIGNvbGxlY3RlZCAqKVxuICAgIGl0ZXJpX2ludGVybmFsIHQgfmY6T3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZVxuICBlbHNlIHQuYXJyIDwtIE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjo4O1xuICB0LmZyb250X2luZGV4IDwtIDA7XG4gIHQuYmFja19pbmRleCA8LSAxO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmFyclxuOztcblxuKCogV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUsIGltcG9ydGluZyBhbGwgb2YgQ29udGFpbmVyLk1ha2Ugd291bGQgY2hhbmdlIHRoZSBydW50aW1lIG9mXG4gICBzb21lIGZ1bmN0aW9ucyAoW2xlbmd0aF0gbWluaW1hbGx5KSBzaWxlbnRseSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZW1hbnRpY3MuICBXZSBnZXRcbiAgIGFyb3VuZCB0aGF0IGJ5IGltcG9ydGluZyB0aGluZ3MgZXhwbGljaXRseS4gICopXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IG1lbSA9IEMubWVtXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBibGl0IG5ld19hcnIgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBvbGRfYXJyID0gdC5hcnIgaW5cbiAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gIHRoZW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQpXG4gIGVsc2UgKFxuICAgIGxldCBicmVha19wb3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIG9sZF9hcnIgLSBhY3R1YWxfZnJvbnQgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjpicmVha19wb3M7XG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpicmVha19wb3NcbiAgICAgIH5sZW46KGFjdHVhbF9iYWNrICsgMSkpO1xuICAoKiBsZW5ndGggZGVwZW5kcyBvbiB0LmFyciBhbmQgdC5mcm9udF9pbmRleCwgc28gdGhpcyBuZWVkcyB0byBiZSBmaXJzdCAqKVxuICB0LmJhY2tfaW5kZXggPC0gbGVuZ3RoIHQ7XG4gIHQuYXJyIDwtIG5ld19hcnI7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnI7XG4gIHQuZnJvbnRfaW5kZXggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMTtcbiAgKCogU2luY2UgdC5mcm9udF9pbmRleCA9IE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDEsIHRoaXMgaXMgYXNzZXJ0aW5nIHRoYXQgdC5iYWNrX2luZGV4XG4gICAgIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5IGFuZCB0aGF0IHRoZSBhcnJheSBjYW4gc3VwcG9ydCBhdCBsZWFzdCBvbmUgbW9yZVxuICAgICBlbGVtZW50IC0tIHJlY2FsbCwgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIHRoZSBhcnJheSBpcyBmdWxsLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyID4gbGVuZ3RoIHQgKyAxLlxuICAqKVxuICBhc3NlcnQgKHQuZnJvbnRfaW5kZXggPiB0LmJhY2tfaW5kZXgpXG47O1xuXG5sZXQgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdCA9XG4gIGlmIChub3QgdC5uZXZlcl9zaHJpbmspICYmIHQuYXJyX2xlbmd0aCA+IDEwICYmIHQuYXJyX2xlbmd0aCAvIDMgPiBsZW5ndGggdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoIC8gMikgaW5cbiAgICBibGl0IG5ld19hcnIgdClcbjs7XG5cbmxldCBncm93X3VuZGVybHlpbmcgdCA9XG4gIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggKiAyKSBpblxuICBibGl0IG5ld19hcnIgdFxuOztcblxubGV0IGVucXVldWVfYmFjayB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmJhY2tfaW5kZXggdjtcbiAgdC5iYWNrX2luZGV4IDwtIChpZiB0LmJhY2tfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuYmFja19pbmRleCArIDEpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlX2Zyb250IHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuZnJvbnRfaW5kZXggdjtcbiAgdC5mcm9udF9pbmRleCA8LSAoaWYgdC5mcm9udF9pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5mcm9udF9pbmRleCAtIDEpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggLSAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCB2ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgdlxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgdlxuOztcblxubGV0IHBlZWtfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgcGVla19iYWNrX25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IHBlZWsgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmZyb250X2luZGV4IDwtIGk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmJhY2tfaW5kZXggPC0gaTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9nZW4gPyhuID0gMSkgfmRlcXVldWUgdCA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiRGVxdWUuZHJvcDogIG5lZ2F0aXZlIGlucHV0ICglZClcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGRlcXVldWUgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKG4gLSAxKSlcbiAgaW5cbiAgbG9vcCBuXG47O1xuXG5sZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9mcm9udCB0XG5sZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2JhY2sgdFxuXG5sZXQgZHJvcCA/biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgP24gdFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250ID9uIHRcbjs7XG5cbmxldCBhc3NlcnRfbm90X2VtcHR5IHQgbmFtZSA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmYWlsd2l0aGYgXCIlczogRGVxdWUudCBpcyBlbXB0eVwiIG5hbWUgKClcblxubGV0IHRydWVfaW5kZXhfZXhuIHQgaSA9XG4gIGxldCBpX2Zyb21femVybyA9IGkgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4IGluXG4gIGlmIGlfZnJvbV96ZXJvIDwgMCB8fCBsZW5ndGggdCA8PSBpX2Zyb21femVyb1xuICB0aGVuIChcbiAgICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS50cnVlX2luZGV4X2V4blwiO1xuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJpbnZhbGlkIGluZGV4OiAlaSBmb3IgYXJyYXkgd2l0aCBpbmRpY2VzICglaSwlaSlcIlxuICAgICAgaVxuICAgICAgYXBwYXJlbnRfZnJvbnRcbiAgICAgIGFwcGFyZW50X2JhY2tcbiAgICAgICgpKTtcbiAgbGV0IHRydWVfaSA9IHQuZnJvbnRfaW5kZXggKyAxICsgaV9mcm9tX3plcm8gaW5cbiAgaWYgdHJ1ZV9pID49IHQuYXJyX2xlbmd0aCB0aGVuIHRydWVfaSAtIHQuYXJyX2xlbmd0aCBlbHNlIHRydWVfaVxuOztcblxubGV0IGdldCB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIHRyeSBTb21lIChnZXQgdCBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgdiA9IE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKSB2XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggcGVla19mcm9udCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIGZyb250IC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggdCkgZnJvbnQgaW5cbiAgICBpZ25vcmVcbiAgICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgdiAtPlxuICAgICAgICAgYXJyLihpKSA8LSB2O1xuICAgICAgICAgaSArIDEpXG4gICAgICAgOiBpbnQpO1xuICAgIGFyclxuOztcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDooQXJyYXkubGVuZ3RoIGFyciArIDEpICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBlbnF1ZXVlX2JhY2sgdCB2KTtcbiAgdFxuOztcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMzRjMWU5Y2EtNDk5Mi0xMWU2LWE2ODYtOGI0YmQ0Zjg3Nzk2XCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRGVxdWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB0IH5mXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDpsZW4gKCkgaW5cbiAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgZW5xdWV1ZV9iYWNrIHQgeFxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG5cbmxldCB0X29mX3NleHAgZiBzZXhwID0gb2ZfYXJyYXkgKEFycmF5LnRfb2Zfc2V4cCBmIHNleHApXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxuKCogcmUtZXhwb3NlIHRoZXNlIGhlcmUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB0byBhdm9pZCBpbnRlcm5hbCBjb25mdXNpb24gKilcbmxldCBiYWNrX2luZGV4ID0gYXBwYXJlbnRfYmFja19pbmRleFxubGV0IGZyb250X2luZGV4ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhcblxubGV0IGJhY2tfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5iYWNrX2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbmxldCBmcm9udF9pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmZyb250X2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCB0IGkgPSBnZXQgdCAoZnJvbnRfaW5kZXhfZXhuIHQgKyBpKVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmRcbiAgZW5kKVxuXG4oKiBUaGUgXCJzdGFibGVcIiBpbmRpY2VzIHVzZWQgaW4gdGhpcyBtb2R1bGUgbWFrZSB0aGUgYXBwbGljYXRpb24gb2YgdGhlXG4gICBbQmluYXJ5X3NlYXJjaGFibGVdIGZ1bmN0b3IgYXdrd2FyZC4gIFdlIG5lZWQgdG8gYmUgc3VyZSB0byB0cmFuc2xhdGUgaW5jb21pbmdcbiAgIHBvc2l0aW9ucyBmcm9tIHN0YWJsZSBzcGFjZSB0byB0aGUgZXhwZWN0ZWQgMCAtPiBsZW5ndGggLSAxIHNwYWNlIGFuZCB0aGVuIHdlIG5lZWQgdG9cbiAgIHRyYW5zbGF0ZSB0aGVtIGJhY2sgb24gcmV0dXJuLiAqKVxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuXG5sZXQgZXByaW50IG1lc3NhZ2UgPSBQcmludGYuZXByaW50ZiBcIiVzXFxuJSFcIiBtZXNzYWdlXG5sZXQgZXByaW50X3Mgc2V4cCA9IGVwcmludCAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG5sZXQgZXByaW50cyBtZXNzYWdlIGEgc2V4cF9vZl9hID0gZXByaW50X3MgKFslc2V4cF9vZjogc3RyaW5nICogYV0gKG1lc3NhZ2UsIGEpKVxubGV0IGVwcmludGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVwcmludCBmb3JtYXRcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIE1ha2UgKCkgPSBzdHJ1Y3RcbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgaW52YXJpYW50IH5tb2R1bGVfbmFtZSBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW4gZXByaW50cyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwcmUtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcG9zdC1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBlcHJpbnRzXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZTsgXCItcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuZW5kXG5cbmxldCBzaG91bGRfcHJpbnRfYmFja3RyYWNlID0gcmVmIGZhbHNlXG5cbmxldCBhbV9pbnRlcm5hbCBoZXJlIG1lc3NhZ2UgPVxuICAoKiBJbiB0aGlzIGZ1bmN0aW9uIHdlIHVzZSBbUHJpbnRmLmVwcmludGZdIHJhdGhlciB0aGFuIFtEZWJ1Zy5lcHJpbnRmXSwgYmVjYXVzZSB0aGVcbiAgICAgZm9ybWVyIGRvZXNuJ3QgZmx1c2gsIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcy4gIFdlJ2QgcmF0aGVyIGZsdXNoIG9uY2UgYXQgdGhlIGVuZCxcbiAgICAgcmF0aGVyIHRoYW4gdGhyZWUgdGltZXMuICopXG4gIFByaW50Zi5lcHJpbnRmIFwiJXM6XFxuXCIgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyBoZXJlKTtcbiAgaWYgIXNob3VsZF9wcmludF9iYWNrdHJhY2VcbiAgdGhlblxuICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICBcIiVzXFxuXCJcbiAgICAgIChCYWNrdHJhY2UuZ2V0ICgpIHw+IFslc2V4cF9vZjogQmFja3RyYWNlLnRdIHw+IFNleHAudG9fc3RyaW5nX2h1bSk7XG4gIChtYXRjaCBtZXNzYWdlIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlc1xcblwiIG1lc3NhZ2UpO1xuICBQcmludGYuZXByaW50ZiBcIiUhXCJcbjs7XG5cbmxldCBhbSBoZXJlID0gYW1faW50ZXJuYWwgaGVyZSBOb25lXG5sZXQgYW1mIGhlcmUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyaW5nIC0+IGFtX2ludGVybmFsIGhlcmUgKFNvbWUgc3RyaW5nKSkgZm10XG5cbmxldCBhbXMgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgYW1faW50ZXJuYWwgaGVyZSAoU29tZSAoKG1lc3NhZ2UsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV0gfD4gU2V4cC50b19zdHJpbmdfaHVtKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TeXNcblxubGV0IHVuaXhfcXVvdGUgeCA9XG4gIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSB4KSlcbiAgJiYgU3RyaW5nLmZvcl9hbGwgeCB+ZjooZnVuY3Rpb25cbiAgICAgICB8ICdhJyAuLiAneidcbiAgICAgICB8ICdBJyAuLiAnWidcbiAgICAgICB8ICcwJyAuLiAnOSdcbiAgICAgICB8ICdfJyB8ICctJyB8ICc6JyB8ICcuJyB8ICcvJyB8ICcsJyB8ICcrJyB8ICc9JyB8ICclJyB8ICdAJyAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuIChcbiAgICAoKiBTaGVsbCBrZXl3b3JkcywgYXMgb3V0cHV0IGJ5IFtjb21wZ2VuIC1rXSBmb3IgYmFzaCwgW21hbiBkYXNoXSBmb3IgZGFzaCwgYW5kIFtQQVRIPVxuICAgICAgIHR5cGUgLW0gJyonIHwgZ3JlcCByZXNlcnZlZF0gZm9yIHpzaCwgZXhjZXB0IGZvciBrZXl3b3JkcyB0aGF0IGhhdmUgc3BlY2lhbFxuICAgICAgIGNoYXJhY3RlcnMgbGlrZSBbWy4gTm90ZSB0aGF0IGJ1aWx0aW5zIGRvbid0IG1hdHRlciBiZWNhdXNlICdhbGlhcycgYW5kIGFsaWFzXG4gICAgICAgYmVoYXZlIHRoZSBzYW1lLCB1bmxpa2UgJ2lmJyBhbmQgaWYuICopXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBcImlmXCJcbiAgICB8IFwidGhlblwiXG4gICAgfCBcImVsc2VcIlxuICAgIHwgXCJlbGlmXCJcbiAgICB8IFwiZmlcIlxuICAgIHwgXCJjYXNlXCJcbiAgICB8IFwiZXNhY1wiXG4gICAgfCBcImZvclwiXG4gICAgfCBcInNlbGVjdFwiXG4gICAgfCBcIndoaWxlXCJcbiAgICB8IFwidW50aWxcIlxuICAgIHwgXCJkb1wiXG4gICAgfCBcImRvbmVcIlxuICAgIHwgXCJpblwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwidGltZVwiXG4gICAgfCBcImNvcHJvY1wiXG4gICAgfCBcImZvcmVhY2hcIlxuICAgIHwgXCJyZXBlYXRcIlxuICAgIHwgXCJub2NvcnJlY3RcIiAtPiBGaWxlbmFtZS5xdW90ZSB4XG4gICAgfCBfIC0+IHgpXG4gIGVsc2UgRmlsZW5hbWUucXVvdGUgeFxuOztcblxubGV0IHF1b3RlID1cbiAgbWF0Y2ggQ2FtbC5TeXMub3NfdHlwZSB3aXRoXG4gIHwgXCJVbml4XCIgLT4gdW5peF9xdW90ZVxuICB8IF8gLT4gRmlsZW5hbWUucXVvdGVcbjs7XG5cbmxldCBjb25jYXRfcXVvdGVkIHNwbGl0X2NvbW1hbmQgPVxuICBMaXN0Lm1hcCB+ZjpxdW90ZSBzcGxpdF9jb21tYW5kIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuOztcblxubGV0IGNfaW50X3NpemUgPSBgVXNlX1N5c191bml4XG5sZXQgY2F0Y2hfYnJlYWsgPSBgVXNlX1N5c191bml4XG5sZXQgY2hkaXIgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZCA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRhYmxlX25hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0aW9uX21vZGUgPSBgVXNlX1N5c191bml4XG5sZXQgZmlsZV9leGlzdHMgPSBgVXNlX1N5c191bml4XG5sZXQgZmlsZV9leGlzdHNfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGZvbGRfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGdldGN3ZCA9IGBVc2VfU3lzX3VuaXhcbmxldCBob21lX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5X2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGVfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGxzX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBvdmVycmlkZV9hcmd2ID0gYFVzZV9TeXNfdW5peFxubGV0IHJlYWRkaXIgPSBgVXNlX1N5c191bml4XG5sZXQgcmVtb3ZlID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52ID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnZfZXhuID0gYFVzZV9TeXNfdW5peFxuXG5leGNlcHRpb24gQnJlYWsgPSBDYW1sLlN5cy5CcmVha1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgdW5peF9xdW90ZSA9IHVuaXhfcXVvdGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhZ19pbnRmXG5pbmNsdWRlIChEb3VibHlfbGlua2VkIDogRG91Ymx5X2xpbmtlZC5TKVxuXG5sZXQgYWRkID0gaW5zZXJ0X2ZpcnN0XG5sZXQgYWRkX3VuaXQgdCB2ID0gYWRkIHQgdiB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxubGV0IGVsdHMgdCA9IGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBhY2MgZWx0IC0+IGVsdCA6OiBhY2MpXG5sZXQgcmVtb3ZlX29uZSA9IHJlbW92ZV9maXJzdFxubGV0IGNob29zZSA9IGZpcnN0X2VsdFxuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBPcHRpb24uaXRlciAocmVtb3ZlX29uZSB0KSB+ZjooZnVuIHYgLT5cbiAgICAgIGYgdjtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJzdHIgOiBCaWdzdHJpbmcudFxuICA7IG11dGFibGUgcG9zIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyBpbml0IDogQmlnc3RyaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlc2l6ZSBidWYgbW9yZSA9XG4gIGxldCBtaW5fbGVuID0gYnVmLmxlbiArIG1vcmUgaW5cbiAgbGV0IG5ld19sZW4gPSBtaW5fbGVuICsgbWluX2xlbiBpblxuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbmV3X2xlbiBpblxuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWYuYnN0ciB+c3JjX2xlbjpidWYucG9zIH5kc3Q6bmV3X2J1ZiAoKTtcbiAgYnVmLmJzdHIgPC0gbmV3X2J1ZjtcbiAgYnVmLmxlbiA8LSBuZXdfbGVuXG47O1xuIiwiKCogU29tZSBjb2RlIHRha2VuIGZyb20gSU5SSUEncyBidWZmZXIgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gQmlnc3RyaW5nXG5pbmNsdWRlIEJpZ2J1ZmZlcl9pbnRlcm5hbFxuXG5sZXQgX19pbnRlcm5hbCAodCA6IHQpID0gdFxubGV0IGxlbmd0aCB0ID0gdC5wb3NcblxuKCoge1sgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0LmxlbiA9PSBCaWdzdHJpbmcubGVuZ3RoIHQuYnN0cikgXX0gKilcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPSBtYXggMSBuIGluXG4gIGxldCBic3RyID0gQmlnc3RyaW5nLmNyZWF0ZSBuIGluXG4gIHsgYnN0cjsgcG9zID0gMDsgbGVuID0gbjsgaW5pdCA9IGJzdHIgfVxuOztcblxubGV0IGNvbnRlbnRzIGJ1ZiA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgY29udGVudHNfYnl0ZXMgYnVmID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGJpZ19jb250ZW50cyBidWYgPSBzdWJvIH5sZW46YnVmLnBvcyBidWYuYnN0clxubGV0IHZvbGF0aWxlX2NvbnRlbnRzIGJ1ZiA9IGJ1Zi5ic3RyXG5cbmxldCBhZGRfY2hhciBidWYgYyA9XG4gIGxldCBwb3MgPSBidWYucG9zIGluXG4gIGlmIHBvcyA+PSBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiAxO1xuICBidWYuYnN0ci57cG9zfSA8LSBjO1xuICBidWYucG9zIDwtIHBvcyArIDFcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIFRlc3RfYmxpdC5NYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICBsZXQgZXF1YWwgPSBDaGFyLmVxdWFsXG4gICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuICdhJyBlbHNlICdiJ1xuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICAgIGFkZF9jaGFyIHQgJ2EnXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBzZXQgdCBpIGMgPSBCaWdzdHJpbmcuc2V0IHQuYnN0ciBpIGNcbiAgICAgIGxldCBnZXQgdCBpID0gQmlnc3RyaW5nLmdldCB0LmJzdHIgaVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJ5dGVzXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQmlnc3RyaW5nLlRvX2J5dGVzLnVuc2FmZV9ibGl0IH5zcmM6c3JjLmJzdHIgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ2J1ZmZlcl9pbnRlcm5hbCkgKFRvX2J5dGVzKVxuXG5sZXQgbnRoIGJ1ZiBwb3MgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBidWYucG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIubnRoXCIgZWxzZSBidWYuYnN0ci57cG9zfVxuOztcblxubGV0IGNsZWFyIGJ1ZiA9IGJ1Zi5wb3MgPC0gMFxuXG5sZXQgcmVzZXQgYnVmID1cbiAgYnVmLnBvcyA8LSAwO1xuICBidWYuYnN0ciA8LSBidWYuaW5pdDtcbiAgYnVmLmxlbiA8LSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zi5ic3RyXG47O1xuXG5sZXQgYWRkX3N1YnN0cmluZyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RyaW5nXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3ViYnl0ZXMgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2JpZ3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9ieXRlcyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J1ZmZlciBidWZfZHN0IGJ1Zl9zcmMgPVxuICBsZXQgbGVuID0gYnVmX3NyYy5wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBidWZfZHN0LnBvcyBpblxuICBsZXQgbmV3X3BvcyA9IGRzdF9wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zl9kc3QubGVuIHRoZW4gcmVzaXplIGJ1Zl9kc3QgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWZfc3JjLmJzdHIgfnNyY19sZW46bGVuIH5kc3Q6YnVmX2RzdC5ic3RyIH5kc3RfcG9zICgpO1xuICBidWZfZHN0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2Jpbl9wcm90IHQgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICBsZXQgbmV3X3BvcyA9XG4gICAgbWF0Y2ggd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHggd2l0aFxuICAgIHwgcG9zIC0+IHBvc1xuICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICgqIEl0J3MgbGlrZWt5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdCBjdXN0b21cbiAgICAgICAgIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIGRvIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGlmIHQucG9zICsgc2l6ZSA+IHQubGVuIHRoZW4gcmVzaXplIHQgc2l6ZTtcbiAgICAgIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4XG4gIGluXG4gIHQucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChOb3RfZm91bmRfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RpdHV0ZTogY2Fubm90IGZpbmQgY2xvc2luZyBkZWxpbWl0ZXJcIlxuICAgICAgICAgICAgICAgKG9wZW5pbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKGNsb3NpbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKHN0YXJ0IDogaW50KVxuICAgICAgICAgICAgICAgc10pXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIG9wZW5pbmdcbiAgICB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBjbG9zaW5nXG4gICAgdGhlbiBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbVxuICBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW4gbGltXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneidcbiAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgfCAnMCcgLi4gJzknXG4gICAgICB8ICdfJ1xuICAgICAgfCAn6SdcbiAgICAgIHwgJ+AnXG4gICAgICB8ICfhJ1xuICAgICAgfCAn6CdcbiAgICAgIHwgJ/knXG4gICAgICB8ICfiJ1xuICAgICAgfCAn6idcbiAgICAgIHwgJ+4nXG4gICAgICB8ICf0J1xuICAgICAgfCAn+ydcbiAgICAgIHwgJ+snXG4gICAgICB8ICfvJ1xuICAgICAgfCAn/CdcbiAgICAgIHwgJ+cnXG4gICAgICB8ICfJJ1xuICAgICAgfCAnwCdcbiAgICAgIHwgJ8EnXG4gICAgICB8ICfIJ1xuICAgICAgfCAn2SdcbiAgICAgIHwgJ8InXG4gICAgICB8ICfKJ1xuICAgICAgfCAnzidcbiAgICAgIHwgJ9QnXG4gICAgICB8ICfbJ1xuICAgICAgfCAnyydcbiAgICAgIHwgJ88nXG4gICAgICB8ICfcJ1xuICAgICAgfCAnxycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkpXG4gIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0ID1cbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgKCcoJyB8ICd7JykgYXMgYyAtPlxuICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpuZXdfc3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0KSwgc3RvcFxuOztcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYnVmIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgKGkgKyAxKSBpblxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiAoZiBpZGVudCk7XG4gICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKSlcbiAgaW5cbiAgc3Vic3QgJyAnIDBcbjs7XG5cbm1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgbGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmID1cbiAgICBGb3JtYXQubWFrZV9mb3JtYXR0ZXIgKGZ1biBzIHBvcyBsZW4gLT4gYWRkX3N1YnN0cmluZyBidWYgcyB+cG9zIH5sZW4pIGlnbm9yZVxuICA7O1xuXG4gIGxldCBicHJpbnRmIGJ1ZiA9IEZvcm1hdC5rZnByaW50ZiBpZ25vcmUgKGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmKVxuZW5kXG5cbm1vZHVsZSBQcmludGYgPSBzdHJ1Y3RcbiAgbGV0IGJwcmludGYgYnVmID0gUHJpbnRmLmtzcHJpbnRmIChhZGRfc3RyaW5nIGJ1ZilcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5CeXRlc31bQmFzZS5CeXRlc119LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5lbmRcbndpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW2dlbl0sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2YgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbYnl0ZXNdIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtCeXRlcy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIHByb3ZpZGVcbiAgICBpbnRlcmZhY2UgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQmlnc3RyaW5nLmNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djOk5vbmVcbiAgICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCaWdzdHJpbmcuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGluZGV4IDogaW50XG4gICAgICAgIDsgbWluX2luZGV4IDogaW50XG4gICAgICAgIDsgbWF4X2luZGV4IDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IGNyZWF0ZSBpbmRleCB+bWluIH5tYXggPVxuICAgICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIChpbmRleCA6IGludCkgKG1pbiA6IGludCkgKG1heCA6IGludCldXG4gICAgICAgIGVsc2UgeyBpbmRleDsgbWluX2luZGV4ID0gbWluOyBtYXhfaW5kZXggPSBtYXggfVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIEZvcl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChGb3Jfc2V4cGFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlIHQgPSBNLmxhYmVsLCB0LmluZGV4LCBcIm9mXCIsIHQubWluX2luZGV4LCBcInRvXCIsIHQubWF4X2luZGV4XG5cbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSAobGFiZWwsIGluZGV4LCBvZl8sIG1pbiwgdG9fLCBtYXgpID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGxhYmVsIE0ubGFiZWxcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIG9mXyBcIm9mXCJcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIHRvXyBcInRvXCJcbiAgICAgICAgICAgICAgdGhlbiBjcmVhdGUgaW5kZXggfm1pbiB+bWF4XG4gICAgICAgICAgICAgIGVsc2UgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIHNleHAgZm9yIGluZGV4XCIgfmxhYmVsOk0ubGFiZWxdXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvXVxuICAgICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFMgPSBCb3VuZGVkX2luZGV4X2ludGYuU1xuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gU3RhYmxlLlYxLk1ha2UgKE0pXG4gIGVuZFxuXG4gIG9wZW4gU3RhYmxlLlYxXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY3JlYXRlID0gU3RhYmxlLlYxLmNyZWF0ZVxuXG4gIGxldCBjcmVhdGVfYWxsIH5taW4gfm1heCA9XG4gICAgU2VxdWVuY2UudW5mb2xkIH5pbml0Om1pbiB+ZjooZnVuIGluZGV4IC0+XG4gICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIFNvbWUgKGNyZWF0ZSBpbmRleCB+bWluIH5tYXgsIGluZGV4ICsgMSkpXG4gICAgfD4gU2VxdWVuY2UudG9fbGlzdFxuICA7O1xuXG4gIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICBsZXQgbWF4X2luZGV4IHQgPSB0Lm1heF9pbmRleFxuICBsZXQgbWluX2luZGV4IHQgPSB0Lm1pbl9pbmRleFxuXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGVuZClcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgIGVuZClcbmVuZFxuIiwiKCoqIENvcmUgZ3JlYXRseSBleHBhbmRzIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiBCYXNlIHdoaWxlIHN0aWxsIHJlbWFpbmluZ1xuICAgIHBsYXRmb3JtLWFnbm9zdGljLiAgQ29yZSBjaGFuZ2VzIG1vcmUgZnJlcXVlbnRseSAoaS5lLiwgaXMgbGVzcyBzdGFibGUpIHRoYW4gQmFzZS5cblxuICAgIFNvbWUgbW9kdWxlcyBhcmUgbWVyZSBleHRlbnNpb25zIG9mIHRoZWlyIGNvdW50ZXJwYXJ0cyBpbiBCYXNlLCB1c3VhbGx5IGFkZGluZyBnZW5lcmljXG4gICAgZnVuY3Rpb25hbGl0eSBieSBpbmNsdWRpbmcgZnVuY3RvcnMgdGhhdCBtYWtlIHRoZW0gYmluYWJsZSwgY29tcGFyYWJsZSwgc2V4cGFibGUsXG4gICAgYmxpdGFibGUsIGV0Yy4gIFRoZSBidWxrIG9mIENvcmUsIHRob3VnaCwgaXMgbW9kdWxlcyBwcm92aWRpbmcgZW50aXJlbHkgbmV3XG4gICAgZnVuY3Rpb25hbGl0eS4gKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcmcgPSBBcmdcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCYWcgPSBCYWdcbm1vZHVsZSBCaWdidWZmZXIgPSBCaWdidWZmZXJcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmdcbm1vZHVsZSBCaWdzdWJzdHJpbmcgPSBCaWdzdWJzdHJpbmdcbm1vZHVsZSBCaW5fcHJvdCA9IENvcmVfYmluX3Byb3Rcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmdcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQm91bmRlZF9pbmRleCA9IEJvdW5kZWRfaW5kZXhcbm1vZHVsZSBCdWZmZXIgPSBCYXNlLkJ1ZmZlclxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xuXG5tb2R1bGUgQ2FtbCA9IHN0cnVjdFxuICBpbmNsdWRlIENhbWxcblxuICAoKiBXaGVuIHdlIHJlbW92ZWQgW0NvcmUuQ2FtbF0ncyBleHRlbnNpb25zIG9mIFtDb3JlLkNhbWxdLCB3ZSBhZGRlZFxuICAgICB0aGUgZGVjbGFyYXRpb25zIGJlbG93IHRvIGZvcmNlIGNvZGUgdG8gc3dpdGNoIHRvIHRoZSBuZXcgbmFtZXMsIGFuZCBhdm9pZFxuICAgICBzaWxlbnRseSBpbmNvcnJlY3RseSB1c2luZyBzb21ldGhpbmcgZWxzZSBpbiBzY29wZS4gKilcbiAgbW9kdWxlIENvbmRpdGlvbiA9IHN0cnVjdCBlbmRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdGhyZWFkcy5Db25kaXRpb25dXCJdXG5cbiAgbW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuICBtb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cbiAgbW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3VuaXhdXCJdXG4gIG1vZHVsZSBVbml4TGFiZWxzID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbVW5peExhYmVsc11cIl1cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21tYW5kID0gQ29tbWFuZFxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgQ29udGFpbmVyX2ludGYgPSBDb250YWluZXJfaW50ZlxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbm1vZHVsZSBDb3JlX2tlcm5lbF9zdGFibGUgPSBTdGFibGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3N0YWJsZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cblxubW9kdWxlIENvcmVfc3RhYmxlID0gU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIERlcXVlID0gRGVxdWVcbm1vZHVsZSBEZXJpdmluZ19oYXNoID0gRGVyaXZpbmdfaGFzaFxubW9kdWxlIERpZ2VzdCA9IE1kNSBbQEBvY2FtbC5kZXByZWNhdGVkIFwiW3NpbmNlIDIwMTctMDVdIFVzZSBNZDUgaW5zdGVhZC5cIl1cbm1vZHVsZSBEb3VibHlfbGlua2VkID0gRG91Ymx5X2xpbmtlZFxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiA9IEVwaGVtZXJvblxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBFeHBlY3RfdGVzdF9jb25maWdcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWVcbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb25cbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlXG5tb2R1bGUgR2MgPSBHY1xubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWVcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSGFzaHRibF9pbnRmID0gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGVhcF9ibG9jayA9IEhlYXBfYmxvY2tcbm1vZHVsZSBIZXhkdW1wID0gSGV4ZHVtcFxubW9kdWxlIEhleGR1bXBfaW50ZiA9IEhleGR1bXBfaW50ZlxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0XG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbiA9IEltbWVkaWF0ZV9vcHRpb25cbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uX2ludGYgPSBJbW1lZGlhdGVfb3B0aW9uX2ludGZcbm1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9pbnRmID0gSW50X2ludGZcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRlcmZhY2VzID0gSW50ZXJmYWNlc1xubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXBfaW50ZiA9IE1hcF9pbnRmXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1kNSA9IE1kNVxubW9kdWxlIE1lbW8gPSBNZW1vXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE1vbnRoID0gTW9udGhcblxubW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAyXSBVc2UgW0Vycm9yX2NoZWNraW5nX211dGV4XSBvciBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm9fcG9seW1vcnBoaWNfY29tcGFyZSA9IE5vX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9ubHlfaW5fdGVzdCA9IE9ubHlfaW5fdGVzdFxubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IE9wdGlvbmFsX3N5bnRheFxubW9kdWxlIE9wdGlvbmFsX3N5bnRheF9pbnRmID0gT3B0aW9uYWxfc3ludGF4X2ludGZcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50XG5tb2R1bGUgUGVybXMgPSBQZXJtc1xubW9kdWxlIFBpZCA9IFBpZFxubW9kdWxlIFBvbHkgPSBQb2x5XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IFBvbHkgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTExXSB1c2UgW1BvbHldIGluc3RlYWRcIl1cblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRleGMgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBRdWlja2NoZWNrID0gUXVpY2tjaGVja1xubW9kdWxlIFF1aWNrY2hlY2tfaW50ZiA9IFF1aWNrY2hlY2tfaW50ZlxubW9kdWxlIFF1aWNrY2hlY2thYmxlID0gUXVpY2tjaGVja2FibGVcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RseV9jb21wYXJhYmxlXG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNldF9pbnRmID0gU2V0X2ludGZcbm1vZHVsZSBTZXRfb25jZSA9IFNldF9vbmNlXG5tb2R1bGUgU2V4cF9tYXliZSA9IFNleHAuU2V4cF9tYXliZVxuXG5tb2R1bGUgU2V4cCA9IFNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduYWwgPSBTaWduYWxcbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFNwbGl0dGFibGVfcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb21cbm1vZHVsZSBTdGFibGVfY29tcGFyYWJsZSA9IFN0YWJsZV9jb21wYXJhYmxlXG5tb2R1bGUgU3RhYmxlX3VuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3Rcbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN1YnN0cmluZyA9IFN1YnN0cmluZ1xubW9kdWxlIFN1YnN0cmluZ19pbnRmID0gU3Vic3RyaW5nX2ludGZcbm1vZHVsZSBTeXMgPSBDb3JlX3N5c1xuXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW0NvcmVfdGhyZWFkXSBvciBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUdXBsZSA9IFR1cGxlXG5tb2R1bGUgVHVwbGUyID0gVHVwbGUuVDJcbm1vZHVsZSBUdXBsZTMgPSBUdXBsZS5UM1xubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBUeXBlX2ltbWVkaWFjeVxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaW9uX2ZpbmQgPSBVbmlvbl9maW5kXG5tb2R1bGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkXG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVbml0X29mX3RpbWUgPSBVbml0X29mX3RpbWVcbm1vZHVsZSBVbml2X21hcCA9IFVuaXZfbWFwXG5cbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIwLTAzXSBDb3JlIHNoYWRvd3MgVW5peC4gVXNlIENvcmVfdW5peCwgd2hpY2ggb3ZlcnJpZGVzIHNvbWUgb2YgVW5peCdzIFxcXG4gICBiZWhhdmlvci4gSWYgbmVjZXNzYXJ5LCBVbml4IGlzIGF2YWlsYWJsZSBhbmQgdW5zaGFkb3dlZCBhcyBDYW1sX3VuaXguXCJdXG5cbm1vZHVsZSBWYWxpZGF0ZSA9IFZhbGlkYXRlXG5tb2R1bGUgVmFsaWRhdGVkID0gVmFsaWRhdGVkXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXZWFrID0gV2Vha1xubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxubW9kdWxlIHR5cGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkLklkXG5cbmluY2x1ZGUgVCAoKiogQG9wZW4gKilcblxuaW5jbHVkZSBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTm90X2ZvdW5kXG5cbigqKiB7MiBUb3AtbGV2ZWwgdmFsdWVzfSAqKVxuXG50eXBlICdhIF9tYXliZV9ib3VuZCA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5cbmxldCBhbV9ydW5uaW5nX2lubGluZV90ZXN0ID0gYW1fcnVubmluZ19pbmxpbmVfdGVzdFxubGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxubGV0IGRvZXNfcmFpc2UgPSBFeG4uZG9lc19yYWlzZVxubGV0IHNlYyA9IFRpbWVfZmxvYXQuU3Bhbi5vZl9zZWNcbmxldCAoIF4vICkgPSBGaWxlbmFtZS5jb25jYXRcblxuKCoqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgICBbQ29yZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0NvcmVdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIENvcmU7IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgICBbQ29yZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gRXhuLmluaXRpYWxpemVfbW9kdWxlICgpXG5cbigqKiBUbyBiZSB1c2VkIGluIGltcGxlbWVudGluZyBDb3JlLCBidXQgbm90IGJ5IGVuZCB1c2Vycy4gKilcbm1vZHVsZSBDb3JlX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpZ2l0X3N0cmluZ19oZWxwZXJzID0gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbiAgbW9kdWxlIFRpbWVfem9uZSA9IFpvbmVcbiAgbW9kdWxlIE9mZGF5X2hlbHBlcnMgPSBPZmRheV9oZWxwZXJzXG4gIG1vZHVsZSBTcGFuX2Zsb2F0ID0gU3Bhbl9mbG9hdFxuXG4gIG1vZHVsZSBCaWdidWZmZXJfaW50ZXJuYWwgPSBCaWdidWZmZXJfaW50ZXJuYWxcbiAgbW9kdWxlIFN0YWJsZV9pbnRlcm5hbCA9IFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgU3RkX2ludGVybmFsID0gU3RkX2ludGVybmFsXG5cbiAgbW9kdWxlIFRpbWVfbnNfYWx0ZXJuYXRlX3NleHAgPSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5lbmRcblxubW9kdWxlIENvcmVfa2VybmVsX3ByaXZhdGUgPSBDb3JlX3ByaXZhdGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3ByaXZhdGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFVpX2VmZmVjdF9pbnRmXG5cbnR5cGUgJ2EgdCA9IC4uXG50eXBlICdhIHQgKz0gSWdub3JlIDogdW5pdCB0IHwgTWFueSA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuXG4oKiBXZSB1c2UgdGhpcyB0YWJsZSBmb3IgZGlzcGF0Y2hpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgaW4gYW4gZWZmaWNpZW50IHdheS4gICopXG50eXBlIGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZGVuXG5cbmxldCBoYW5kbGVycyA6IChoaWRkZW4gLT4gdW5pdCkgSGFzaHRibC5NKEludCkudCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KSB+c2l6ZTo4XG5cbm1vZHVsZSBEZWZpbmUgKEhhbmRsZXIgOiBIYW5kbGVyKSA6XG4gIFMgd2l0aCB0eXBlIGFjdGlvbiA6PSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogSGFuZGxlci5BY3Rpb24udCAtPiB1bml0IHRcblxuICBsZXQga2V5ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZTtcbiAgICAgICAgY2FsbGJhY2sgKClcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbm1vZHVsZSBEZWZpbmUxIChIYW5kbGVyIDogSGFuZGxlcjEpIDpcbiAgUzEgd2l0aCB0eXBlICdhIGFjdGlvbiA6PSAnYSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogJ2EgSGFuZGxlci5BY3Rpb24udCAtPiAnYSB0XG5cbiAgbGV0IGtleSA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgbGV0IGNhbGxlZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICBsZXQgY2FsbGJhY2sgYSA9XG4gICAgICAgICAgaWYgIWNhbGxlZFxuICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJvbl9yZXNwb25zZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMhXCJcbiAgICAgICAgICBlbHNlIGNhbGxlZCA6PSB0cnVlO1xuICAgICAgICAgIGNhbGxiYWNrIGFcbiAgICAgICAgaW5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWUgfm9uX3Jlc3BvbnNlOmNhbGxiYWNrXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5sZXQgZ2V0X2tleSB0ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgdClcblxubGV0IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYikpID1cbiAgSGFzaHRibC5maW5kX2V4biBoYW5kbGVycyAoZ2V0X2tleSB0KSAoVCAodCwgY2IpKVxuOztcblxubW9kdWxlIFByaW50X3MgPSBEZWZpbmUgKHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBTZXhwXG5cbiAgICBsZXQgaGFuZGxlIHMgPSBwcmludF9zIHNcbiAgZW5kKVxuXG5sZXQgcHJpbnRfcyA9IFByaW50X3MuaW5qZWN0XG5cbigqIEVmZmVjdGZ1bCB0aGluZ3MgKilcbnR5cGUgJ2EgdCArPVxuICB8IFJldHVybiA6ICdhIC0+ICdhIHRcbiAgfCBMYXp5IDogJ2EgdCBMYXp5LnQgLT4gJ2EgdFxuICB8IEJpbmQgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2IgdFxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE1hcCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYlxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE5ldmVyIDogJ2IgdFxuICB8IEZ1biA6IChjYWxsYmFjazooJ2EgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ2EgdFxuXG5sZXQgcmV0dXJuIGEgPSBSZXR1cm4gYVxubGV0IGJpbmQgKHR5cGUgYSkgKHQgOiBhIHQpIH5mID0gQmluZCB7IHQ7IGYgfVxubGV0IG1hcCAodHlwZSBhIGIpICh0IDogYSB0KSB+ZiA6IGIgdCA9IE1hcCB7IHQ7IGYgfVxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBvZl9mdW4gfmYgPSBGdW4gZlxubGV0IGxhenlfIGEgPSBMYXp5IGFcblxuaW5jbHVkZSBDb3JlLk1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IHJlYyBldmFsIDogdHlwZSBhLiBhIHQgLT4gY2FsbGJhY2s6KGEgLT4gdW5pdCkgLT4gdW5pdCA9XG4gIGZ1biB0IH5jYWxsYmFjayAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBGdW4gZiAtPiBmIH5jYWxsYmFja1xuICB8IElnbm9yZSAtPiBjYWxsYmFjayAoKVxuICB8IFJldHVybiBhIC0+IGNhbGxiYWNrIGFcbiAgfCBMYXp5IChsYXp5IHQpIC0+IGV2YWwgdCB+Y2FsbGJhY2tcbiAgfCBNYW55IGwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZXZhbCB+Y2FsbGJhY2s6aWdub3JlKTtcbiAgICBjYWxsYmFjayAoKVxuICB8IEJpbmQgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gZXZhbCAoZiBhKSB+Y2FsbGJhY2spXG4gIHwgTWFwIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGNhbGxiYWNrIChmIGEpKVxuICB8IE5ldmVyIC0+ICgpXG4gIHwgdCAtPiBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2FsbGJhY2spKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlID0gZXZhbCB+Y2FsbGJhY2s6aWdub3JlXG5cbiAgdHlwZSBoaWRlID0gaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRlXG5cbiAgbGV0IGhhbmRsZXJzID0gaGFuZGxlcnNcbiAgbGV0IG9mX2Z1biA9IG9mX2Z1blxuZW5kXG5cbm1vZHVsZSBBZHZhbmNlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3luY19mdW5fYXJnID0gc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyKSAtPiAnciB0XG4gICAgZW5kXG5cbiAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IG9uX3Jlc3BvbnNlIChmIGEpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW5jX2Z1biA9IERlZmluZTEgKFN5bmNfZnVuX2FyZylcblxuICBsZXQgb2Zfc3luY19mdW4gZiBhID0gU3luY19mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBDYWxsYmFjayA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9XG4gICAgICAgIHsgcmVxdWVzdCA6ICdhXG4gICAgICAgIDsgb25fcmVzcG9uc2UgOiAnYiAtPiB1bml0IHRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2UgPSB7IHJlcXVlc3Q7IG9uX3Jlc3BvbnNlIH1cbiAgICAgIGxldCByZXF1ZXN0IHsgcmVxdWVzdDsgXyB9ID0gcmVxdWVzdFxuICAgICAgbGV0IHJlc3BvbmRfdG8geyBvbl9yZXNwb25zZTsgXyB9IHJlc3BvbnNlID0gb25fcmVzcG9uc2UgcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIGxldCBtYWtlIDogcmVxdWVzdDonYSAtPiBldmFsdWF0b3I6KCgnYSwgJ2IpIENhbGxiYWNrLnQgLT4gdW5pdCB0KSAtPiAnYiB0ID1cbiAgICAgIGZ1biB+cmVxdWVzdCB+ZXZhbHVhdG9yIC0+XG4gICAgICBFeHBlcnQub2ZfZnVuIH5mOihmdW4gfmNhbGxiYWNrIC0+XG4gICAgICAgIGxldCBjYWxsYmFjayA9XG4gICAgICAgICAgQ2FsbGJhY2subWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2U6KGZ1biByZXNwb25zZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2sgcmVzcG9uc2U7XG4gICAgICAgICAgICBJZ25vcmUpXG4gICAgICAgIGluXG4gICAgICAgIEV4cGVydC5oYW5kbGUgKGV2YWx1YXRvciBjYWxsYmFjaykpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFN2YXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2Egc3RhdGUgPVxuICAgICAgICB8IEVtcHR5IG9mIHsgaGFuZGxlcnMgOiAoJ2EgLT4gdW5pdCkgQmFnLnQgfVxuICAgICAgICB8IEZ1bGwgb2YgJ2FcblxuICAgICAgdHlwZSAnYSB0ID0gJ2Egc3RhdGUgcmVmXG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSByZWYgKEVtcHR5IHsgaGFuZGxlcnMgPSBCYWcuY3JlYXRlICgpIH0pXG5cbiAgICAgIGxldCB1cG9uIHQgaGFuZGxlciA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSB7IGhhbmRsZXJzIH0gLT4gaWdub3JlIChCYWcuYWRkIGhhbmRsZXJzIGhhbmRsZXIgOiBfIEJhZy5FbHQudClcbiAgICAgICAgfCBGdWxsIHggLT4gaGFuZGxlciB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmlsbF9pZl9lbXB0eSB0IHggPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRnVsbCBfIC0+ICgpXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+XG4gICAgICAgICAgQmFnLml0ZXIgaGFuZGxlcnMgfmY6KGZ1biBoYW5kbGVyIC0+IGhhbmRsZXIgeCk7XG4gICAgICAgICAgdCA6PSBGdWxsIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwZWVrIHQgPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgXyAtPiBOb25lXG4gICAgICAgIHwgRnVsbCB4IC0+IFNvbWUgeFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyIFN2YXIudCkgLT4gJ3IgdFxuICAgICAgZW5kXG5cbiAgICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gU3Zhci51cG9uIChmIGEpIG9uX3Jlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW4gPSBEZWZpbmUxIChTdmFyX2Z1bl9hcmcpXG5cbiAgICBsZXQgb2Zfc3Zhcl9mdW4gZiBhID0gU3Zhcl9mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICAgIG1vZHVsZSBRdWVyeV9yZXNwb25zZV90cmFja2VyID0gc3RydWN0XG4gICAgICB0eXBlICgncSwgJ3IpIHJwYyA9XG4gICAgICAgIHsgcXVlcnkgOiAncVxuICAgICAgICA7IHJlc3BvbnNlIDogJ3IgU3Zhci50XG4gICAgICAgIH1cblxuICAgICAgdHlwZSAoJ3EsICdyKSB0ID0gKCdxLCAncikgcnBjIEJhZy50XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBCYWcuY3JlYXRlICgpXG5cbiAgICAgIGxldCBhZGRfcXVlcnkgdCBxdWVyeSA9XG4gICAgICAgIGxldCByZXNwb25zZSA9IFN2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGlnbm9yZSAoQmFnLmFkZCB0IHsgcXVlcnk7IHJlc3BvbnNlIH0gOiBfIEJhZy5FbHQudCk7XG4gICAgICAgIHJlc3BvbnNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIHQgPVxuICAgICAgICBCYWcudG9fbGlzdCB0IHw+IExpc3QubWFwIH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgPSBfIH0gLT4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICB0eXBlICdyIG1heWJlX3Jlc3BvbmQgPVxuICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldFxuICAgICAgICB8IFJlc3BvbmQgb2YgJ3JcblxuICAgICAgbGV0IG1heWJlX3Jlc3BvbmQgdCB+ZiA9XG4gICAgICAgIEJhZy5maWx0ZXJfaW5wbGFjZSB0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgfSAtPlxuICAgICAgICAgIG1hdGNoIGYgcXVlcnkgd2l0aFxuICAgICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0IC0+IHRydWVcbiAgICAgICAgICB8IFJlc3BvbmQgcmVzcCAtPlxuICAgICAgICAgICAgU3Zhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc3A7XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2ZfcXVlcnlfcmVzcG9uc2VfdHJhY2tlciBxcnQgPSBvZl9zdmFyX2Z1biAoUXVlcnlfcmVzcG9uc2VfdHJhY2tlci5hZGRfcXVlcnkgcXJ0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEFkdmFuY2VkXG4iLCJvcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFRva2VuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJZGVudFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IEF0a2V5d29yZFxuICAgIHwgSGFzaFxuICAgIHwgU3RyaW5nXG4gICAgfCBVcmlcbiAgICB8IERlbGltXG4gICAgfCBOdW1iZXJcbiAgICB8IFBlcmNlbnRhZ2VcbiAgICB8IERpbWVuc2lvblxuICAgIHwgV2hpdGVfc3BhY2VcbiAgICB8IENvbG9uXG4gICAgfCBTZW1pX2NvbG9uXG4gICAgfCBDb21tYVxuICAgIHwgTGJyYWNrZXRcbiAgICB8IFJicmFja2V0XG4gICAgfCBMcGFyZW5cbiAgICB8IFJwYXJlblxuICAgIHwgTGN1cmx5XG4gICAgfCBSY3VybHlcbiAgICB8IENvbW1lbnRcbiAgICB8IEVvZlxuICAgIHwgRXJyb3JcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyAoKiBzdGFydCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgbGVuIDogaW50XG4gIDsgKCogbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBjdXJyZW50IDogVG9rZW4udFxuICB9XG5cbnR5cGUgbWFyayA9IE1hcmsgb2YgaW50IFtAQHVuYm94ZWRdXG5cbmxldCBtYXJrIHQgPSBNYXJrIHQubGVuXG5sZXQgc291cmNlIHQgPSB0LnNcbmxldCBuZXh0X3BvcyB0ID0gdC5vZmYgKyB0LmxlblxubGV0IGlzX25leHRfZW9mIHQgPSBuZXh0X3BvcyB0ID49IFN0cmluZy5sZW5ndGggdC5zXG5sZXQgbmV4dF9jaGFyIHQgPSB0LnMuW25leHRfcG9zIHRdXG5sZXQgcmVzZXQgdCAoTWFyayB2KSA9IHQubGVuIDwtIHZcbmxldCBjb25zdW1lXzEgdCA9IHQubGVuIDwtIHQubGVuICsgMVxubGV0IGNvbnN1bWVfbiB0IG4gPSB0LmxlbiA8LSB0LmxlbiArIG5cblxubGV0IG9uZV9jaGFyX3Rva2VuIHQgdG9rID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBjb25zdW1lXzEgdDtcbiAgdC5jdXJyZW50IDwtIHRva1xuOztcblxuZXhjZXB0aW9uIEVycm9yX2hhcHBlbmVkXG5cbmxldCBlcnJvciB0ID1cbiAgdC5jdXJyZW50IDwtIEVycm9yO1xuICByYWlzZSBFcnJvcl9oYXBwZW5lZFxuOztcblxubGV0IGFjY2VwdCB0IGYgPVxuICBpZiAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpXG4gIHRoZW4gKFxuICAgIGNvbnN1bWVfMSB0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBhY2NlcHRfY2hhciB0IGNoID0gYWNjZXB0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBhY2NlcHRfc3RyaW5nIHQgc3RyID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPSAwXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgcG9zID0gbmV4dF9wb3MgdCBpblxuICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBwb3MgKyBzdHJfbGVuID4gU3RyaW5nLmxlbmd0aCB0LnNcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHQucyB+cG9zIH5zdWJzdHJpbmc6c3RyXG4gICAgdGhlbiAoXG4gICAgICBjb25zdW1lX24gdCBzdHJfbGVuO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKVxuOztcblxubGV0IGV4cGVjdCB0IGYgPSBpZiBhY2NlcHQgdCBmIHRoZW4gKCkgZWxzZSBlcnJvciB0XG5sZXQgZXhwZWN0X2NoYXIgdCBjaCA9IGV4cGVjdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgbWFueSB0IGYgPVxuICB3aGlsZSAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpIGRvXG4gICAgY29uc3VtZV8xIHRcbiAgZG9uZVxuOztcblxubGV0IG1hbnkxIHQgZiA9XG4gIGV4cGVjdCB0IGY7XG4gIG1hbnkgdCBmXG47O1xuXG5sZXQgcGx1c19vcl9taW51cyA9IGZ1bmN0aW9uXG4gIHwgJy0nIHwgJysnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1zdGFydCA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubWNoYXIgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyB8ICctJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlkZW50IHQgPVxuICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICB0aGVuXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgICB0aGVuIG1hbnkgdCBubWNoYXJcbiAgICBlbHNlIChcbiAgICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgICBtYW55IHQgbm1jaGFyKVxuICBlbHNlIChcbiAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgIG1hbnkgdCBubWNoYXIpXG47O1xuXG5sZXQgaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGlkZW50IHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJygnIHRoZW4gdC5jdXJyZW50IDwtIEZ1bmN0aW9uIGVsc2UgdC5jdXJyZW50IDwtIElkZW50XG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXG4nIHwgJ1xceDBjJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlID1cbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgcXVvdGUpO1xuICBjb25zdW1lXzEgdDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIHwgJ1xccicgfCAnXFx4MGMnIHwgJ1xcXFwnIC0+IGZhbHNlXG4gICAgICB8IGMgd2hlbiBDaGFyLmVxdWFsIGMgcXVvdGUgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICdcXFxcJ1xuICAgIHRoZW5cbiAgICAgIGlmIGFjY2VwdF9jaGFyIHQgcXVvdGVcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICAgICAgfCAnXFxuJyB8ICdcXHgwYycgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJ1xcbicgOiBib29sKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgX2MgLT5cbiAgICAgICAgICAoKiBIYW5kbGUgdGhlIFwiZXNjYXBlXCIgcnVsZTpcbiAgICAgICAgICAgICB7dlxuICAgICAgICAgICAgICAgIHVuaWNvZGU6IFxcXFxbMC05YS1mXXsxLDZ9KFxcclxcbnxbIFxcblxcclxcdFxcZl0pP1xuICAgICAgICAgICAgICAgIGVzY2FwZSA6IHt1bmljb2RlfXxcXFxcW15cXG5cXHJcXGYwLTlhLWZdXG4gICAgICAgICAgICAgIHZ9XG4gICAgICAgICAgKilcbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpO1xuICBleHBlY3RfY2hhciB0IHF1b3RlXG47O1xuXG5sZXQgc3RhcnRfbnVtIHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJy4nIDogYm9vbCk7XG4gICAgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHN0YXJ0X2lkZW50IH5wcmVmaXggdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGFjY2VwdF9zdHJpbmcgdCBwcmVmaXhcbiAgICAmJlxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nIHRoZW4gYWNjZXB0X2NoYXIgdCAnLScgfHwgYWNjZXB0IHQgbm1zdGFydCBlbHNlIGFjY2VwdCB0IG5tc3RhcnRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZTtcbiAgdC5jdXJyZW50IDwtIFN0cmluZ1xuOztcblxubGV0IGV4cG9uZW50aWFsX3BhcnQgdCA9XG4gIGxldCBtYXJrID0gbWFyayB0IGluXG4gIGlmIGFjY2VwdCB0IChmdW5jdGlvblxuICAgIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW5cbiAgICBpZiBhY2NlcHQgdCBwbHVzX29yX21pbnVzXG4gICAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlIGlmIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgICB0aGVuIG1hbnkgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZVxuICAgICAgKCogQmFja3RyYWNrIGlmIHRoZXJlIGFyZSBubyBkaWdpdHMgb3Igc2lnbnMgYWZ0ZXIgdGhlICdlJyBiZWNhdXNlXG4gICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSAnZScgd2FzIGFjdHVhbGx5IGEgcGFydCBvZiBzb21ldGhpbmcgZWxzZS4gRm9yXG4gICAgICAgICBleGFtcGxlLCB0aGUgJ2UnIGNvdWxkIGJlIHBhcnQgb2YgYW4gJ2VtJyBvciAnZW4nIGRpbWVuc2lvbiBpbnN0ZWFkXG4gICAgICAgICBvZiBiZWdpbm5pbmcgdGhlIGV4cG9uZW50aWFsIHBhcnQgb2YgYSBzY2llbnRpZmljIG5vdGF0aW9uIG51bWJlci5cblxuICAgICAgICAgRXhhbXBsZTogMS4yZTMgaXMgc2NpZW50aWZpYyBub3RhdGlvbiwgYnV0IDEuMmVtIGlzIGEgbnVtYmVyIHdpdGggYVxuICAgICAgICAgZGltZW5zaW9uLiAqKVxuICAgICAgcmVzZXQgdCBtYXJrXG47O1xuXG5sZXQgbnVtIHQgPVxuICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnLidcbiAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgZWxzZSAoXG4gICAgbWFueTEgdCBDaGFyLmlzX2RpZ2l0O1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy4nIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0KTtcbiAgZXhwb25lbnRpYWxfcGFydCB0XG47O1xuXG5sZXQgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIG51bSB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICclJ1xuICB0aGVuIHQuY3VycmVudCA8LSBQZXJjZW50YWdlXG4gIGVsc2UgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgdGhlbiAoXG4gICAgaWRlbnQgdDtcbiAgICB0LmN1cnJlbnQgPC0gRGltZW5zaW9uKVxuICBlbHNlIHQuY3VycmVudCA8LSBOdW1iZXJcbjs7XG5cbmxldCBoYXNoX29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICcjJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZiBhY2NlcHQgdCBubWNoYXJcbiAgdGhlbiAoXG4gICAgbWFueTEgdCBubWNoYXI7XG4gICAgdC5jdXJyZW50IDwtIEhhc2gpXG4gIGVsc2UgdC5jdXJyZW50IDwtIERlbGltXG47O1xuXG5sZXQgYXRrZXl3b3JkIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdAJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZGVudCB0O1xuICB0LmN1cnJlbnQgPC0gQXRrZXl3b3JkXG47O1xuXG5sZXQgdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICd1Jyk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcInVybChcIlxuICB0aGVuIChcbiAgICBsZXQgbSA9IG1hcmsgdCBpblxuICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgIGlmIENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXCInIHx8IENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXFwnJ1xuICAgIHRoZW4gKFxuICAgICAgcmVzZXQgdCBtO1xuICAgICAgdC5jdXJyZW50IDwtIEZ1bmN0aW9uKVxuICAgIGVsc2UgKFxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcpJyB8ICcgJyAtPiBmYWxzZVxuICAgICAgICB8ICdcXCcnIHwgJ1wiJyB8ICcoJyAtPiBlcnJvciB0XG4gICAgICAgIHwgYyB3aGVuIENoYXIuaXNfcHJpbnQgYyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBlcnJvciB0KTtcbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgZXhwZWN0X2NoYXIgdCAnKSc7XG4gICAgICB0LmN1cnJlbnQgPC0gVXJpKSlcbiAgZWxzZSBpZGVudF9vcl9mdW5jdGlvbiB0XG47O1xuXG5sZXQgY29tbWVudF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIvKlwiXG4gIHRoZW4gKFxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyonIC0+IGZhbHNlXG4gICAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICAgIGlmIGFjY2VwdF9zdHJpbmcgdCBcIiovXCJcbiAgICAgIHRoZW4gdC5jdXJyZW50IDwtIENvbW1lbnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0X2NoYXIgdCAnKidcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSBlcnJvciB0XG4gICAgaW5cbiAgICBsb29wICgpKVxuICBlbHNlIChcbiAgICBleHBlY3RfY2hhciB0ICcvJztcbiAgICB0LmN1cnJlbnQgPC0gRGVsaW0pXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgbGV0IG5ld19vZmYgPSBuZXh0X3BvcyB0IGluXG4gIHQub2ZmIDwtIG5ld19vZmY7XG4gIHQubGVuIDwtIDA7XG4gIGlmIGlzX25leHRfZW9mIHRcbiAgdGhlbiB0LmN1cnJlbnQgPC0gRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICB8IGMgd2hlbiBpc193aGl0ZXNwYWNlIGMgLT5cbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgdC5jdXJyZW50IDwtIFdoaXRlX3NwYWNlXG4gICAgfCAnOicgLT4gb25lX2NoYXJfdG9rZW4gdCBDb2xvblxuICAgIHwgJzsnIC0+IG9uZV9jaGFyX3Rva2VuIHQgU2VtaV9jb2xvblxuICAgIHwgJ3snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGN1cmx5XG4gICAgfCAnfScgLT4gb25lX2NoYXJfdG9rZW4gdCBSY3VybHlcbiAgICB8ICdbJyAtPiBvbmVfY2hhcl90b2tlbiB0IExicmFja2V0XG4gICAgfCAnXScgLT4gb25lX2NoYXJfdG9rZW4gdCBSYnJhY2tldFxuICAgIHwgJygnIC0+IG9uZV9jaGFyX3Rva2VuIHQgTHBhcmVuXG4gICAgfCAnKScgLT4gb25lX2NoYXJfdG9rZW4gdCBScGFyZW5cbiAgICB8ICcsJyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbW1hXG4gICAgfCAoJ1xcJycgfCAnXCInKSBhcyBxdW90ZSAtPiBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlXG4gICAgfCAoJzAnIC4uICc5JyB8ICcuJyB8ICcrJyB8ICctJykgd2hlbiBzdGFydF9udW0gdCAtPlxuICAgICAgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHRcbiAgICB8ICcvJyAtPiBjb21tZW50X29yX2RlbGltIHRcbiAgICB8ICcjJyAtPiBoYXNoX29yX2RlbGltIHRcbiAgICB8ICdAJyB3aGVuIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJAXCIgdCAtPiBhdGtleXdvcmQgdFxuICAgIHwgJ3UnIC0+IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgfCBfIC0+XG4gICAgICBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICAgICAgdGhlbiBpZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICgqIHRoaXMgaXMgd2VpcmQgYnV0IHRoZSBzcGVjIGlzIHdlaXJkICopXG4gICAgICAgIHQuY3VycmVudCA8LSBEZWxpbSkpXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgKCogTWFrZSBzdXJlIHdlIGFyZSBpZGVtcG90ZW50IHdoZW4gd2UgZ2V0IGludG8gdGhlIGVycm9yIHN0YXRlICopXG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFcnJvclxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIHRyeSBuZXh0IHQgd2l0aFxuICAgIHwgRXJyb3JfaGFwcGVuZWQgLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIHMgPVxuICAoKiBjdXJyZW50IGlzIGR1bW15IGFuZCB3aWxsIGJlIHNldCBieSBjYWxsIHRvIG5leHQgKilcbiAgbGV0IHQgPSB7IHM7IG9mZiA9IDA7IGxlbiA9IDA7IGN1cnJlbnQgPSBXaGl0ZV9zcGFjZSB9IGluXG4gIG5leHQgdDtcbiAgdFxuOztcblxubGV0IHNsaWNlIHQgPSB0Lm9mZiwgdC5sZW5cbmxldCBjdXJyZW50IHQgPSB0LmN1cnJlbnRcblxubGV0IGN1cnJlbnRfdGV4dCB0ID1cbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVvZlxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IHBvcywgbGVuID0gc2xpY2UgdCBpblxuICAgIFN0cmluZy5zdWIgdC5zIH5wb3Mgfmxlbilcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgdCA9IGNyZWF0ZSBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIGxldCBzdGFydCwgbGVuID0gc2xpY2UgdCBpblxuICAgIGxldCBhY2MgPSAoY3VycmVudCB0LCBzdGFydCwgbGVuKSA6OiBhY2MgaW5cbiAgICBpZiBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFb2YgfHwgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRXJyb3JcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbmV4dCB0O1xuICAgICAgbG9vcCBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCB0ZXN0IHMgPVxuICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAoU2V4cC50b19zdHJpbmdfbWFjaCAoWyVzZXhwX29mOiAoVG9rZW4udCAqIGludCAqIGludCkgbGlzdF0gKHRvX2xpc3QgcykpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlb2ZcIiA9XG4gICAgICB0ZXN0IFwiXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoRW9mIDAgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNpbXBsZV90b2tlbnNcIiA9XG4gICAgICB0ZXN0IFwiKSh7fVtdOzpcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoUnBhcmVuIDAgMSkoTHBhcmVuIDEgMSkoTGN1cmx5IDIgMSkoUmN1cmx5IDMgMSkoTGJyYWNrZXQgNCAxKShSYnJhY2tldCA1IDEpKFNlbWlfY29sb24gNiAxKShDb2xvbiA3IDEpKEVvZiA4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaWRlbnRcIiA9XG4gICAgICB0ZXN0IFwiLWZvby1iYXI6IGJhelwiO1xuICAgICAgdGVzdCBcIi1mb28tYmFyKFwiO1xuICAgICAgdGVzdCBcIkBmb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC0tZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIi0tdmFyXCI7XG4gICAgICB0ZXN0IFwiUkdCQVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgOCkoQ29sb24gOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCA4KShFb2YgOCAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgMTApKEVvZiAxMCAwKSlcbiAgICAoKElkZW50IDAgNSkoRW9mIDUgMCkpXG4gICAgKChJZGVudCAwIDQpKEVvZiA0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwid2hpdGVzcGFjZVwiID1cbiAgICAgIHRlc3QgXCIgIFwiO1xuICAgICAgWyVleHBlY3Qge3woKFdoaXRlX3NwYWNlIDAgMikoRW9mIDIgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIm51bWJlcnNcIiA9XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW1cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWluXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDNjbVwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAxMjAlXCI7XG4gICAgICB0ZXN0IFwiZ3JpZDogMCAxIGZvb1wiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41LWluXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUyMFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKERpbWVuc2lvbiAxMyAzKShFb2YgMTYgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShQZXJjZW50YWdlIDEzIDQpKEVvZiAxNyAwKSlcbiAgICAoKElkZW50IDAgNCkoQ29sb24gNCAxKShXaGl0ZV9zcGFjZSA1IDEpKE51bWJlciA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJiYWRseV9xdW90ZWRcIiA9XG4gICAgICB0ZXN0IFwiJ2ZvbyBiYXJcIjtcbiAgICAgIHRlc3QgXCInXCI7XG4gICAgICB0ZXN0IFwiJ1xcXFwnXCI7XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICgoRXJyb3IgMCA4KSlcbiAgICAoKEVycm9yIDAgMSkpXG4gICAgKChFcnJvciAwIDMpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicXVvdGVkXCIgPVxuICAgICAgdGVzdCB7fCdGb28gJ1wiQmFyXCInOycgJ1xcJycgXCJcXFwiXCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoU3RyaW5nIDAgNikoU3RyaW5nIDYgNSkoU3RyaW5nIDExIDMpKFdoaXRlX3NwYWNlIDE0IDEpKFN0cmluZyAxNSA0KShXaGl0ZV9zcGFjZSAxOSAxKShTdHJpbmcgMjAgNCkoRW9mIDI0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiY29sb3JzXCIgPVxuICAgICAgdGVzdCB7fGNvbG9yOiAjZjAwfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShIYXNoIDcgNCkoRW9mIDExIDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaW1wb3J0XCIgPVxuICAgICAgdGVzdCB7fEBpbXBvcnQgXCJmb28uYmFyXCI7fH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKEF0a2V5d29yZCAwIDcpKFdoaXRlX3NwYWNlIDcgMSkoU3RyaW5nIDggOSkoU2VtaV9jb2xvbiAxNyAxKShFb2YgMTggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJyZWQgZXhhbXBsZVwiID1cbiAgICAgIHRlc3QgXCJyZWQtLT5cIjtcbiAgICAgIFslZXhwZWN0IHt8ICgoSWRlbnQgMCA1KShEZWxpbSA1IDEpKEVvZiA2IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidXJsXCIgPVxuICAgICAgdGVzdCB7fHVybCggXCJodHRwOi8vd3d3dy5nb29nbGUuY29tXCIpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyl8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuY29tICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuXCJjb20gKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKEZ1bmN0aW9uIDAgNCkoV2hpdGVfc3BhY2UgNCAxKShTdHJpbmcgNSAyNCkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFJwYXJlbiAyOCAxKShFb2YgMjkgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShXaGl0ZV9zcGFjZSAyOCAxKShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoVXJpIDAgMzApKEVvZiAzMCAwKSlcbiAgICAoKEVycm9yIDAgMjUpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZXNjYXBlXCIgPVxuICAgICAgdGVzdCB7fFwidGVzdFxcMTlhYmYyXFwyXCJ8fTtcbiAgICAgIHRlc3Qge3xcIlxcMDEwXFx4RkZhXFxvMTIzXFxuXFxcXFxcdXsxMjM0NX1hYfCfkKrwn5Cq8J+QqvCfkKrwn5CqXCJ8fTtcbiAgICAgIHRlc3Qge3xcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChTdHJpbmcgMCAxNSkoRW9mIDE1IDApKVxuICAgICgoU3RyaW5nIDAgNTEpKEVvZiA1MSAwKSlcbiAgICAoKFN0cmluZyAwIDQ5KShFb2YgNDkgMCkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXJzLiAgQSBwYXJzZXIgcmV0dXJucyBmYWxzZSBpZiBiYXNlZCBvbiBhXG4gICBzaW5nbGUgdG9rZW4gbG9va2FoZWFkIGl0IGRlY2lkZXMgdGhhdCB0aGUgZ2l2ZW4gdGV4dCBjYW4gbm90IGJlXG4gICBwYXJzZWQuICBBbnkgb3RoZXIgcGFyc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHJhaXNpbmcgZXhjZXB0aW9ucy5cblxuICAgU29tZSBwYXJzZXJzIHJldHVybiB1bml0IGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoZW0gd2hlbiBhIGZhaWx1cmVcbiAgIHRvIHBhcnNlIGltcGxpZXMgYSBwYXJzZSBlcnJvciAoYW5kIG5vdCB0aGF0IHNvbWUgcGFyc2VyIGhpZ2hlciB1cFxuICAgaW4gdGhlIGNhbGwgY2hhaW4gc2hvdWxkIHRyeSB0byBwYXJzZSBzb21ldGhpbmcgZWxzZSkuXG5cbiAgIEZvciBzaW1wbGljaXR5IHRoZSBwYXJzZXJzIHRoZW1zZWx2ZXMganVzdCB2YWxpZGF0ZSBhbmQgZG9uJ3RcbiAgIHByb2R1Y2UgYW55IHZhbHVlcy4gIFRoYXQgbGVhZHMgdG8gYSBmZXcgdW5lbGVnYW50IGNvbnN0cnVjdHNcbiAgIChwcmltYXJpbHkgaW4gZGVjbGFyYXRpb24pLCBidXQgbWVhbnMgd2Ugb3RoZXJ3aXNlIGhhdmUgcmF0aGVyXG4gICBzaW1wbGUgY29kZSB0aGF0IGFsc28gYWxsb2NhdGVzIHZlcnkgbGl0dGxlLlxuKilcblxub3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCByZWMgbmV4dCBjdCA9XG4gIENzc190b2tlbml6ZXIubmV4dCBjdDtcbiAgaWYgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIHRoZW4gbmV4dCBjdCBlbHNlICgpXG47O1xuXG5sZXQgc2tpcF93aGl0ZV9zcGFjZSBjdCA9XG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBXaGl0ZV9zcGFjZSkgZG9cbiAgICBuZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCBhY2NlcHQgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gKFxuICAgIG5leHQgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGV4cGVjdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiBuZXh0IGN0XG4gIGVsc2VcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmV4cGVjdGVkIHRva2VuXCJcbiAgICAgICAgICAoZXhwZWN0ZWQgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXG4gICAgICAgICAgKGdvdCA6IENzc190b2tlbml6ZXIuVG9rZW4udCldXG47O1xuXG5sZXQgcmVjIG1hbnkgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID0gaWYgZiBjdCB0aGVuIG1hbnkgY3QgZiBlbHNlICgpXG5cbmxldCBtYW55MSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPVxuICBpZiBmIGN0XG4gIHRoZW4gKFxuICAgIG1hbnkgY3QgZjtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgcmVjIGFueSBjdCA6IGJvb2wgPVxuICBsZXQgcmVzID1cbiAgICBtYXRjaCBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3Qgd2l0aFxuICAgIHwgSWRlbnQgfCBOdW1iZXIgfCBQZXJjZW50YWdlIHwgRGltZW5zaW9uIHwgU3RyaW5nIHwgVXJpIHwgRGVsaW0gfCBIYXNoIHwgQ29tbWEgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICB0cnVlXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBtYW55IGN0IGFueTtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMcGFyZW4gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMYnJhY2tldCAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJicmFja2V0O1xuICAgICAgdHJ1ZVxuICAgIHwgUmN1cmx5IHwgUnBhcmVuIHwgUmJyYWNrZXQgLT4gZmFsc2VcbiAgICB8IExjdXJseSAtPiBmYWxzZVxuICAgIHwgQXRrZXl3b3JkIHwgQ29sb24gfCBTZW1pX2NvbG9uIC0+IGZhbHNlXG4gICAgfCBDb21tZW50IHwgV2hpdGVfc3BhY2UgfCBFb2YgfCBFcnJvciAtPiBmYWxzZVxuICBpblxuICBpZiByZXMgdGhlbiBza2lwX3doaXRlX3NwYWNlIGN0IGVsc2UgKCk7XG4gIHJlc1xuXG5hbmQgZXhwZWN0X2FueSBjdCA9IGlmIGFueSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8YW55PlwiXVxuXG5hbmQgdmFsdWUwIGN0ID1cbiAgYW55IGN0XG4gIHx8IGJsb2NrIGN0XG4gIHx8XG4gIGlmIGFjY2VwdCBjdCBBdGtleXdvcmRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCB2YWx1ZSBjdCA9IG1hbnkxIGN0IHZhbHVlMFxuXG5hbmQgYmxvY2sgY3QgOiBib29sID1cbiAgaWYgYWNjZXB0IGN0IExjdXJseVxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgICAgdmFsdWUwIGN0XG4gICAgICB8fFxuICAgICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICAgIHRoZW4gKFxuICAgICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgICB0cnVlKVxuICAgICAgZWxzZSBmYWxzZSk7XG4gICAgZXhwZWN0IGN0IFJjdXJseTtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIGV4cGVjdF92YWx1ZSBjdCA9IGlmIHZhbHVlIGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDx2YWx1ZT5cIl1cblxubGV0IGRlY2xhcmF0aW9uIGN0ID1cbiAgbGV0IGlkZW50X3N0YXJ0LCBpZGVudF9sZW4gPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IGluXG4gIGlmIGFjY2VwdCBjdCBJZGVudFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGV4cGVjdCBjdCBDb2xvbjtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGxldCB2YWx1ZV9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgZXhwZWN0X3ZhbHVlIGN0O1xuICAgIGxldCBuZXh0X3Rva2VuX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBsZXQgc291cmNlID0gQ3NzX3Rva2VuaXplci5zb3VyY2UgY3QgaW5cbiAgICBTb21lXG4gICAgICAoIFN0cmluZy5zdWIgc291cmNlIH5wb3M6aWRlbnRfc3RhcnQgfmxlbjppZGVudF9sZW5cbiAgICAgICwgU3RyaW5nLnJzdHJpcFxuICAgICAgICAgIChTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOnZhbHVlX3N0YXJ0IH5sZW46KG5leHRfdG9rZW5fc3RhcnQgLSB2YWx1ZV9zdGFydCkpICkpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbiBjdCA9XG4gIG1hdGNoIGRlY2xhcmF0aW9uIGN0IHdpdGhcbiAgfCBTb21lIChmaWVsZCwgdmFsdWUpIC0+IGZpZWxkLCB2YWx1ZVxuICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8ZGVjbGFyYXRpb24+XCJdXG47O1xuXG4oKiBBcyBwZXI6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3R5bGUtYXR0ci9cbiAgIGRlY2xhcmF0aW9uLWxpc3RcbiAgIDogUyogZGVjbGFyYXRpb24/IFsgJzsnIFMqIGRlY2xhcmF0aW9uPyBdKlxuICAgO1xuKilcbmxldCBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBjdCA9XG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgbGV0IGFkZCBrdiA9XG4gICAgbWF0Y2gga3Ygd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaywgdikgLT4gcmVzIDo9IChrLCB2KSA6OiAhcmVzXG4gIGluXG4gIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgIHRoZW4gKFxuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKTtcbiAgTGlzdC5yZXYgIXJlc1xuOztcblxubGV0IHBhcnNlIHBhcnNlcl9mIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSBkb1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lO1xuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgbGV0IHJlcyA9IHBhcnNlcl9mIGN0IGluXG4gICAgZXhwZWN0IGN0IEVvZjtcbiAgICByZXMpXG47O1xuXG5sZXQgcHJpbnRfdG9rZW5zIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKG5vdCAoVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIEVvZikpIGRvXG4gICAgcHJpbnRfcyAoQ3NzX3Rva2VuaXplci5Ub2tlbi5zZXhwX29mX3QgKENzc190b2tlbml6ZXIuY3VycmVudCBjdCkpO1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgdmFsaWRhdGVfdmFsdWUgPSBwYXJzZSBleHBlY3RfdmFsdWVcbmxldCBwYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgPSBwYXJzZSBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBzXG5cbmxldCB0ZXN0X3BhcnNlciBwIHNleHBfb2ZfYXJnIHMgPVxuICBsZXQgciA9IHBhcnNlIHAgcyBpblxuICBwcmludGYgIVwiJXMgLS0+ICV7c2V4cDphcmcgT3JfZXJyb3IudH1cXG5cIiBzIHJcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcIlwiID1cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIFwiMCA0cHggOHB4IDAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMTIpLCAwIDJweCA0cHggMCBcXFxuICAgICAgICAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMDgpXCJcbiAgICAgIGluXG4gICAgICBwcmludF90b2tlbnMgdmFsdWU7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW4gfH1dO1xuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgKHZhbGlkYXRlX3ZhbHVlIHZhbHVlIDogdW5pdCBPcl9lcnJvci50KV07XG4gICAgICBbJWV4cGVjdCB7fFxuICAgIChcInZhbGlkYXRlX3ZhbHVlIHZhbHVlXCIgKE9rICgpKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInZhbHVlc1wiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X3ZhbHVlIFVuaXQuc2V4cF9vZl90IGluXG4gICAgICB0ZXN0IFwieFwiO1xuICAgICAgdGVzdCBcIjNcIjtcbiAgICAgIHRlc3QgXCIzaW5cIjtcbiAgICAgIHRlc3QgXCIzJVwiO1xuICAgICAgdGVzdCBcIiNmZmZcIjtcbiAgICAgIHRlc3QgXCIxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcIidIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJyZ2IoMCwwLDApXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgeCAtLT4gKE9rICgpKVxuICAgICAgMyAtLT4gKE9rICgpKVxuICAgICAgM2luIC0tPiAoT2sgKCkpXG4gICAgICAzJSAtLT4gKE9rICgpKVxuICAgICAgI2ZmZiAtLT4gKE9rICgpKVxuICAgICAgMSAwIGF1dG8gLS0+IChPayAoKSlcbiAgICAgICdIZWxsbyBXb3JsZCcgLS0+IChPayAoKSlcbiAgICAgIHJnYigwLDAsMCkgLS0+IChPayAoKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiAnSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogZm9vO1wiO1xuICAgICAgKCogU2VtaSdzIGFyZSBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIGxpc3QgKilcbiAgICAgIHRlc3QgXCJjb250ZW50OiBiYXIgXCI7XG4gICAgICAoKiBidXQgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIChhbnkgcmVhbGx5KSAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKGZsZXggXCIxIDAgYXV0b1wiKSlcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBXb3JsZCcgLS0+IChPayAoY29udGVudCBcIidIZWxsbyBXb3JsZCdcIikpXG4gICAgICBjb250ZW50OiBmb287IC0tPiAoRXJyb3IgKFwiVW5leHBlY3RlZCB0b2tlblwiIChleHBlY3RlZCBFb2YpIChnb3QgU2VtaV9jb2xvbikpKVxuICAgICAgY29udGVudDogYmFyICAtLT4gKE9rIChjb250ZW50IGJhcikpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1bmljb2RlXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2J1wiO1xuICAgICAgcHJpbnRfZW5kbGluZSAoU2V4cC50b19zdHJpbmcgKFNleHAuQXRvbSBcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCIpKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2JyAtLT4gKE9rXG4gICAgIChjb250ZW50XG4gICAgICBcIidcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MidcIikpXG4gICAgXCJcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MlwiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvbiBsaXN0XCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBbJXNleHBfb2Y6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0bztcIjtcbiAgICAgIHRlc3RcbiAgICAgICAgXCJiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweFwiO1xuICAgICAgdGVzdCBcIjs7Ozs7XCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgZmxleDogMSAwIGF1dG87IC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFwiaW1nX3RyZWUucG5nXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHggLS0+IChPa1xuICAgICAoKGJhY2tncm91bmQgXCIjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0XCIpXG4gICAgICAobWFyZ2luLWxlZnQgMjAwcHgpKSlcbiAgICA7Ozs7OyAtLT4gKE9rICgpKVxuICAgIGZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikgKG90aGVyIHNhKSkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQ29yZS5Db3JlX3N0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICgqKiAoZmllbGQgKiB2YWx1ZSkgbGlzdC4gIFdoZXJlIHZhbHVlIHNob3VsZCBiZSBlc2NhcGVkIC8gcXVvdGVkXG4gICAgICAgIGFzIG5lY2Vzc2FyeSBhcyBwZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNydWxlLXNldHMuICopXG4gICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSBjc3NfZ2xvYmFsX3ZhbHVlcyA9XG4gIFsgYEluaGVyaXRcbiAgfCBgSW5pdGlhbFxuICBdXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA9IHJlZiAoZnVuIGRpZ2l0cyBmIC0+IHNwcmludGYgXCIlLipmXCIgZGlnaXRzIGYpXG5lbmRcblxubGV0IGYycyBkaWdpdHMgZiA9ICFQcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIGRpZ2l0cyBmXG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSR0JBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHIgOiBpbnRcbiAgICAgICAgOyBnIDogaW50XG4gICAgICAgIDsgYiA6IGludFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5yIH5nIH5iID9hICgpID0geyByOyBnOyBiOyBhIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBIU0xBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGggOiBpbnRcbiAgICAgICAgOyBzIDogUGVyY2VudC50XG4gICAgICAgIDsgbCA6IFBlcmNlbnQudFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5oIH5zIH5sID9hICgpID0geyBoOyBzOyBsOyBhIH1cbiAgICBlbmRcblxuICAgIHR5cGUgdCA9XG4gICAgICBbIGBSR0JBIG9mIFJHQkEudFxuICAgICAgfCBgSFNMQSBvZiBIU0xBLnRcbiAgICAgIHwgYE5hbWUgb2Ygc3RyaW5nXG4gICAgICB8IGBIZXggb2Ygc3RyaW5nXG4gICAgICB8IGBWYXIgb2Ygc3RyaW5nXG4gICAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCB0b19zdHJpbmdfY3NzIDogWzwgdCBdIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBSR0JBIHsgUkdCQS5yOyBnOyBiOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gWyVzdHJpbmcgXCJyZ2IoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0pXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nIFwicmdiYSgle3IjSW50fSwle2cjSW50fSwle2IjSW50fSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBIU0xBIHsgSFNMQS5oOyBzOyBsOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2xhKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBOYW1lIG5hbWUgLT4gbmFtZVxuICAgIHwgYEhleCBoZXggLT4gaGV4XG4gICAgfCBgVmFyIHZhciAtPiBbJXN0cmluZyBcInZhcigle3Zhcn0pXCJdXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsaWdubWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExlZnRcbiAgICB8IGBSaWdodFxuICAgIHwgYENlbnRlciAoKiBob3Jpem9udGFsICopXG4gICAgfCBgVG9wXG4gICAgfCBgQm90dG9tXG4gICAgfCBgTWlkZGxlICgqIHZlcnRpY2FsICopXG4gICAgfCBgSnVzdGlmeSAoKiB0ZXh0LWFsaWduIChpbiBhZGRpdGlvbiB0byBbaG9yaXpvbnRhbF0pICopXG4gICAgfCBgU3VwZXIgKCogdmVydGljYWwgKilcbiAgICB8IGBTdWIgKCogdmVydGljYWwgKilcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBUb3AgLT4gXCJ0b3BcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYEJvdHRvbSAtPiBcImJvdHRvbVwiXG4gICAgfCBgU3VwZXIgLT4gXCJzdXBlclwiXG4gICAgfCBgU3ViIC0+IFwic3ViXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYFJhdyBvZiBzdHJpbmdcbiAgICB8IGBDaCBvZiBmbG9hdFxuICAgIHwgYFJlbSBvZiBmbG9hdFxuICAgIHwgYEVtIG9mIGludFxuICAgIHwgYEVtX2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgUGVyY2VudCBvZiBQZXJjZW50LnRcbiAgICB8IGBQdCBvZiBmbG9hdFxuICAgIHwgYFB4IG9mIGludFxuICAgIHwgYFB4X2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgVmggb2YgUGVyY2VudC50XG4gICAgfCBgVncgb2YgUGVyY2VudC50XG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBSYXcgcyAtPiBzXG4gICAgfCBgQ2ggYyAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgY31jaFwiXVxuICAgIHwgYFJlbSBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXJlbVwiXVxuICAgIHwgYEVtIGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fWVtXCJdXG4gICAgfCBgRW1fZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1lbVwiXVxuICAgIHwgYFBlcmNlbnQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX0lXCJdXG4gICAgfCBgUHQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgcH1wdFwiXVxuICAgIHwgYFB4IGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fXB4XCJdXG4gICAgfCBgUHhfZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1weFwiXVxuICAgIHwgYFZoIHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dmhcIl1cbiAgICB8IGBWdyBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZ3XCJdXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcblxuICBsZXQgcGVyY2VudDEwMCA9IGBQZXJjZW50IChQZXJjZW50Lm9mX3BlcmNlbnRhZ2UgMTAwLilcbmVuZFxuXG5tb2R1bGUgQXV0b19vcl9sZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBBdXRvXG4gICAgfCBMZW5ndGgudFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCAjTGVuZ3RoLnQgYXMgbCAtPiBMZW5ndGgudG9fc3RyaW5nX2NzcyBsXG4gIDs7XG5lbmRcblxubGV0IHZhbHVlX21hcCBvIH5mID0gT3B0aW9uLnZhbHVlX21hcCBvIH5kZWZhdWx0OlwiXCIgfmZcbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0ICggQD4gKSA9IGNvbWJpbmVcbmxldCBjb25jYXQgbCA9IExpc3QuY29uY2F0IGxcbmxldCB0b19zdHJpbmdfbGlzdCA9IEZuLmlkXG5cbmxldCB0b19zdHJpbmdfY3NzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4gKGZpZWxkLCB2YWx1ZSkgLT4gWyVzdHJpbmcgXCIle2ZpZWxkfTogJXt2YWx1ZX1cIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIjtcIlxuOztcblxubGV0IG9mX3N0cmluZ19jc3NfZXhuIHMgPSBDc3NfcGFyc2VyLnBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyB8PiBPcl9lcnJvci5va19leG5cblxuKCoqIGNyZWF0ZV9yYXcgY3JlYXRlcyBhIHNpbmdsZSBmaWVsZCwgdmFsdWUgcGFpci4gIEl0IGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZFxuICAgIGNzcyB2YWx1ZS4gIEFzIHN1Y2ggaXQgaXMgdW5zYWZlIHRvIHVzZSB3aXRoIGFyYml0cmFyeSB2YWx1ZSBzdHJpbmdzLiAgQnV0IGZvciB0aGVcbiAgICB2YXN0IG1ham9yaXR5IG9mIGNvbWJpbmF0b3JzIGluIHRoaXMgbW9kdWxlIGl0IGlzIHRoZSByaWdodCB0aGluZyB0byB1c2UsIGFzIHdlIGtub3dcbiAgICBieSBjb25zdHJ1Y3Rpb24gdGhhdCB0aGUgdmFsdWVzIGRvIG5vdCBuZWVkIHF1b3RpbmcgLyBlc2NhcGluZy4gKilcbmxldCBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWUgPSBbIGZpZWxkLCB2YWx1ZSBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHNob3VsZF92YWxpZGF0ZSA9IHJlZiBmYWxzZVxuZW5kXG5cbmxldCBjcmVhdGUgfmZpZWxkIH52YWx1ZSA9XG4gIGlmICFFeHBlcnQuc2hvdWxkX3ZhbGlkYXRlIHRoZW4gQ3NzX3BhcnNlci52YWxpZGF0ZV92YWx1ZSB2YWx1ZSB8PiBPcl9lcnJvci5va19leG47XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IGVtcHR5ID0gW11cbmxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmxldCBjcmVhdGVfcGxhY2VtZW50IG5hbWUgbGVuZ3RoID0gY3JlYXRlIH5maWVsZDpuYW1lIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbGVuZ3RoKVxubGV0IGxlZnQgPSBjcmVhdGVfcGxhY2VtZW50IFwibGVmdFwiXG5sZXQgdG9wID0gY3JlYXRlX3BsYWNlbWVudCBcInRvcFwiXG5sZXQgYm90dG9tID0gY3JlYXRlX3BsYWNlbWVudCBcImJvdHRvbVwiXG5sZXQgcmlnaHQgPSBjcmVhdGVfcGxhY2VtZW50IFwicmlnaHRcIlxuXG5sZXQgcG9zaXRpb24gP3RvcDp0cCA/Ym90dG9tOmJ0ID9sZWZ0Omx0ID9yaWdodDpydCBwb3MgPVxuICBsZXQgcG9zID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbWF0Y2ggcG9zIHdpdGhcbiAgICAgIHwgYFN0YXRpYyAtPiBcInN0YXRpY1wiXG4gICAgICB8IGBBYnNvbHV0ZSAtPiBcImFic29sdXRlXCJcbiAgICAgIHwgYFN0aWNreSAtPiBcInN0aWNreVwiXG4gICAgICB8IGBSZWxhdGl2ZSAtPiBcInJlbGF0aXZlXCJcbiAgICAgIHwgYEZpeGVkIC0+IFwiZml4ZWRcIlxuICAgIGluXG4gICAgY3JlYXRlIH5maWVsZDpcInBvc2l0aW9uXCIgfnZhbHVlXG4gIGluXG4gIGxldCBjb252ZXJ0IG9wdF9sIGYgPSBPcHRpb24udmFsdWVfbWFwIG9wdF9sIH5kZWZhdWx0OmVtcHR5IH5mIGluXG4gIGNvbmNhdCBbIHBvczsgY29udmVydCB0cCB0b3A7IGNvbnZlcnQgbHQgbGVmdDsgY29udmVydCBydCByaWdodDsgY29udmVydCBidCBib3R0b20gXVxuOztcblxubGV0IGJveF9zaXppbmcgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgQ29udGVudF9ib3ggLT4gXCJjb250ZW50LWJveFwiXG4gICAgfCBgQm9yZGVyX2JveCAtPiBcImJvcmRlci1ib3hcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm94LXNpemluZ1wiIH52YWx1ZVxuOztcblxubGV0IGRpc3BsYXkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgSW5saW5lIC0+IFwiaW5saW5lXCJcbiAgICB8IGBCbG9jayAtPiBcImJsb2NrXCJcbiAgICB8IGBJbmxpbmVfYmxvY2sgLT4gXCJpbmxpbmUtYmxvY2tcIlxuICAgIHwgYExpc3RfaXRlbSAtPiBcImxpc3QtaXRlbVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgSW5saW5lX3RhYmxlIC0+IFwiaW5saW5lLXRhYmxlXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgRmxleCAtPiBcImZsZXhcIlxuICAgIHwgYElubGluZV9mbGV4IC0+IFwiaW5saW5lLWZsZXhcIlxuICAgIHwgYElubGluZV9ncmlkIC0+IFwiaW5saW5lLWdyaWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZGlzcGxheVwiIH52YWx1ZVxuOztcblxubGV0IHZpc2liaWxpdHkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ2aXNpYmlsaXR5XCIgfnZhbHVlXG47O1xuXG50eXBlIG92ZXJmbG93ID1cbiAgWyBgVmlzaWJsZVxuICB8IGBIaWRkZW5cbiAgfCBgU2Nyb2xsXG4gIHwgYEF1dG9cbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBtYWtlX292ZXJmbG93IGZpZWxkIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYFNjcm9sbCAtPiBcInNjcm9sbFwiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IG92ZXJmbG93ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93XCJcbmxldCBvdmVyZmxvd194ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXhcIlxubGV0IG92ZXJmbG93X3kgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteVwiXG5sZXQgel9pbmRleCBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJ6LWluZGV4XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpXG5sZXQgb3BhY2l0eSBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcGFjaXR5XCIgfnZhbHVlOihmMnMgNiBpKVxuXG5sZXQgY3JlYXRlX2xlbmd0aF9maWVsZCBmaWVsZCBsID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGwpXG47O1xuXG5sZXQgd2hpdGVfc3BhY2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFByZSAtPiBcInByZVwiXG4gICAgfCBgUHJlX2xpbmUgLT4gXCJwcmUtbGluZVwiXG4gICAgfCBgUHJlX3dyYXAgLT4gXCJwcmUtd3JhcFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlIH5maWVsZDpcIndoaXRlLXNwYWNlXCIgfnZhbHVlXG47O1xuXG50eXBlIGZvbnRfc3R5bGUgPVxuICBbIGBOb3JtYWxcbiAgfCBgSXRhbGljXG4gIHwgYE9ibGlxdWVcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF93ZWlnaHQgPVxuICBbIGBOb3JtYWxcbiAgfCBgQm9sZFxuICB8IGBCb2xkZXJcbiAgfCBgTGlnaHRlclxuICB8IGBOdW1iZXIgb2YgaW50XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfdmFyaWFudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBTbWFsbF9jYXBzXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgZm9udF9zaXplID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImZvbnQtc2l6ZVwiXG5sZXQgZm9udF9mYW1pbHkgbCA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1mYW1pbHlcIiB+dmFsdWU6KFN0cmluZy5jb25jYXQgbCB+c2VwOlwiLFwiKVxuXG5sZXQgZm9udF9zdHlsZSBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYEl0YWxpYyAtPiBcIml0YWxpY1wiXG4gICAgfCBgT2JsaXF1ZSAtPiBcIm9ibGlxdWVcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1zdHlsZVwiIH52YWx1ZVxuOztcblxubGV0IGZvbnRfd2VpZ2h0IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE51bWJlciBpIC0+IEludC50b19zdHJpbmcgaVxuICAgIHwgYEJvbGQgLT4gXCJib2xkXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYExpZ2h0ZXIgLT4gXCJsaWdodGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgQm9sZGVyIC0+IFwiYm9sZGVyXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC13ZWlnaHRcIiB+dmFsdWVcbjs7XG5cbmxldCBib2xkID0gZm9udF93ZWlnaHQgYEJvbGRcblxubGV0IGZvbnRfdmFyaWFudCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYFNtYWxsX2NhcHMgLT4gXCJzbWFsbC1jYXBzXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtdmFyaWFudFwiIH52YWx1ZVxuOztcblxubGV0IGZvbnQgfnNpemUgfmZhbWlseSA/c3R5bGUgP3dlaWdodCA/dmFyaWFudCAoKSA9XG4gIFsgU29tZSAoZm9udF9zaXplIHNpemUpXG4gIDsgU29tZSAoZm9udF9mYW1pbHkgZmFtaWx5KVxuICA7IE9wdGlvbi5tYXAgc3R5bGUgfmY6Zm9udF9zdHlsZVxuICA7IE9wdGlvbi5tYXAgd2VpZ2h0IH5mOmZvbnRfd2VpZ2h0XG4gIDsgT3B0aW9uLm1hcCB2YXJpYW50IH5mOmZvbnRfdmFyaWFudFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQgfmNvbG9yID0gY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yKVxubGV0IGNvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiY29sb3JcIiB+Y29sb3JcbmxldCBiYWNrZ3JvdW5kX2NvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiYmFja2dyb3VuZC1jb2xvclwiIH5jb2xvclxubGV0IGZpbGwgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJmaWxsXCIgfmNvbG9yXG5cbnR5cGUgc3RvcHMgPSAoUGVyY2VudC50ICogQ29sb3IudCkgbGlzdFxuXG50eXBlIGxpbmVhcl9ncmFkaWVudCA9XG4gIHsgZGlyZWN0aW9uIDogWyBgRGVnIG9mIGludCBdXG4gIDsgc3RvcHMgOiBzdG9wc1xuICB9XG5cbnR5cGUgcmFkaWFsX2dyYWRpZW50ID0geyBzdG9wcyA6IHN0b3BzIH1cblxudHlwZSBiYWNrZ3JvdW5kX2ltYWdlID1cbiAgWyBgVXJsIG9mIHN0cmluZ1xuICB8IGBMaW5lYXJfZ3JhZGllbnQgb2YgbGluZWFyX2dyYWRpZW50XG4gIHwgYFJhZGlhbF9ncmFkaWVudCBvZiByYWRpYWxfZ3JhZGllbnRcbiAgXVxuXG5sZXQgc3RvcHNfdG9fc3RyaW5nIHN0b3BzID1cbiAgTGlzdC5tYXAgc3RvcHMgfmY6KGZ1biAocGN0LCBjb2xvcikgLT5cbiAgICAoKiBOb3RlOiBQZXJjZW50LnRvX3N0cmluZyBwcm9kdWNlZCBlLmcuIFwiMHhcIiwgXCIxeFwiLCB3b24ndCB3b3JrIGhlcmUuICopXG4gICAgWyVzdHJpbmcgXCIle0NvbG9yLnRvX3N0cmluZ19jc3MgY29sb3J9ICV7ZjJzIDYgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwY3QpfSVcIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCBiYWNrZ3JvdW5kX2ltYWdlIHNwZWMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgYFVybCB1cmwgLT4gWyVzdHJpbmcgXCJ1cmwoJXt1cmx9KVwiXVxuICAgIHwgYExpbmVhcl9ncmFkaWVudCB7IGRpcmVjdGlvbiA9IGBEZWcgZGlyZWN0aW9uOyBzdG9wcyB9IC0+XG4gICAgICBbJXN0cmluZyBcImxpbmVhci1ncmFkaWVudCgle2RpcmVjdGlvbiNJbnR9ZGVnLCAle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gICAgfCBgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgfSAtPiBbJXN0cmluZyBcInJhZGlhbC1ncmFkaWVudCgle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYmFja2dyb3VuZC1pbWFnZVwiIH52YWx1ZVxuOztcblxubGV0IGNyZWF0ZV9hbGlnbm1lbnQgZmllbGQgYSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQWxpZ25tZW50LnRvX3N0cmluZ19jc3MgKGEgOj4gQWxpZ25tZW50LnQpKVxuOztcblxubGV0IHRleHRfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidGV4dC1hbGlnblwiXG5sZXQgaG9yaXpvbnRhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJob3Jpem9udGFsLWFsaWduXCJcbmxldCB2ZXJ0aWNhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ2ZXJ0aWNhbC1hbGlnblwiXG5cbmxldCBmbG9hdCBmID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBmIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxvYXRcIiB+dmFsdWVcbjs7XG5cbmxldCB3aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJ3aWR0aFwiXG5sZXQgbWluX3dpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi13aWR0aFwiXG5sZXQgbWF4X3dpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1heC13aWR0aFwiXG5sZXQgaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImhlaWdodFwiXG5sZXQgbWluX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4taGVpZ2h0XCJcbmxldCBtYXhfaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1heC1oZWlnaHRcIlxubGV0IHBhZGRpbmdfdG9wID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctdG9wXCJcbmxldCBwYWRkaW5nX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWJvdHRvbVwiXG5sZXQgcGFkZGluZ19sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctbGVmdFwiXG5sZXQgcGFkZGluZ19yaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXJpZ2h0XCJcblxubGV0IHBhZGRpbmcgP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOnBhZGRpbmdfdG9wXG4gIDsgbSBib3R0b20gfmY6cGFkZGluZ19ib3R0b21cbiAgOyBtIGxlZnQgfmY6cGFkZGluZ19sZWZ0XG4gIDsgbSByaWdodCB+ZjpwYWRkaW5nX3JpZ2h0XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IHVuaWZvcm1fcGFkZGluZyBsID0gcGFkZGluZyB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcbmxldCBtYXJnaW5fdG9wID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi10b3BcIlxubGV0IG1hcmdpbl9ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLWJvdHRvbVwiXG5sZXQgbWFyZ2luX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLWxlZnRcIlxubGV0IG1hcmdpbl9yaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tcmlnaHRcIlxuXG5sZXQgbWFyZ2luID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjptYXJnaW5fdG9wXG4gIDsgbSBib3R0b20gfmY6bWFyZ2luX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjptYXJnaW5fbGVmdFxuICA7IG0gcmlnaHQgfmY6bWFyZ2luX3JpZ2h0XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IHVuaWZvcm1fbWFyZ2luIGwgPSBtYXJnaW4gfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5cbnR5cGUgYm9yZGVyX3N0eWxlID1cbiAgWyBgTm9uZVxuICB8IGBIaWRkZW5cbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgR3Jvb3ZlXG4gIHwgYFJpZGdlXG4gIHwgYEluc2V0XG4gIHwgYE91dHNldFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxuKCoqIENvbmNhdCAyIHZhbHVlcyB3aXRoIGEgc3BhY2UgaW4gYmV0d2Vlbi4gIElmIGVpdGhlciBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAgZG9uJ3QgcHV0IGluIHVubmVjZXNzYXJ5IHdoaXRlc3BhY2UuICopXG5sZXQgY29uY2F0MnYgdjEgdjIgPVxuICBtYXRjaCB2MSwgdjIgd2l0aFxuICB8IFwiXCIsIHggLT4geFxuICB8IHgsIFwiXCIgLT4geFxuICB8IHgsIHkgLT4geCBeIFwiIFwiIF4geVxuOztcblxuKCoqIENvbmNhdCB1cCB0byAzIHZhbHVlcyB3aXRoIHNwYWNlcyBpbiBiZXR3ZWVuLiAqKVxubGV0IGNvbmNhdDN2IHYxIHYyIHYzID0gY29uY2F0MnYgKGNvbmNhdDJ2IHYxIHYyKSB2M1xuXG5sZXQgYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfihzdHlsZSA6IGJvcmRlcl9zdHlsZSkgKCkgPVxuICBsZXQgc3R5bGUgPVxuICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBSaWRnZSAtPiBcInJpZGdlXCJcbiAgICB8IGBPdXRzZXQgLT4gXCJvdXRzZXRcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBHcm9vdmUgLT4gXCJncm9vdmVcIlxuICAgIHwgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluc2V0IC0+IFwiaW5zZXRcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICB8IGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgaW5cbiAgbGV0IHdpZHRoID0gdmFsdWVfbWFwIHdpZHRoIH5mOkxlbmd0aC50b19zdHJpbmdfY3NzIGluXG4gIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gIGNvbmNhdDN2IHdpZHRoIHN0eWxlIGNvbG9yXG47O1xuXG5sZXQgY3JlYXRlX2JvcmRlciA/c2lkZSAoKSA9XG4gIGxldCBmaWVsZCA9XG4gICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgfCBTb21lIGBUb3AgLT4gXCJib3JkZXItdG9wXCJcbiAgICB8IFNvbWUgYEJvdHRvbSAtPiBcImJvcmRlci1ib3R0b21cIlxuICAgIHwgU29tZSBgUmlnaHQgLT4gXCJib3JkZXItcmlnaHRcIlxuICAgIHwgU29tZSBgTGVmdCAtPiBcImJvcmRlci1sZWZ0XCJcbiAgICB8IE5vbmUgLT4gXCJib3JkZXJcIlxuICBpblxuICBmdW4gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgLT5cbiAgICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfdG9wID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgVG9wICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2JvdHRvbSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YEJvdHRvbSAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9sZWZ0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgTGVmdCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9yaWdodCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFJpZ2h0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID0gY3JlYXRlX2JvcmRlciA/c2lkZTpOb25lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpICgpXG5cbmxldCBvdXRsaW5lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJvdXRsaW5lXCIgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX2NvbGxhcHNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFNlcGFyYXRlIC0+IFwic2VwYXJhdGVcIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm9yZGVyLWNvbGxhcHNlXCIgfnZhbHVlXG47O1xuXG5sZXQgYm9yZGVyX3NwYWNpbmcgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiYm9yZGVyLXNwYWNpbmdcIlxubGV0IGJvcmRlcl9yYWRpdXMgbCA9IGNyZWF0ZSB+ZmllbGQ6XCJib3JkZXItcmFkaXVzXCIgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9saW5lID1cbiAgWyBgTm9uZVxuICB8IGBVbmRlcmxpbmVcbiAgfCBgT3ZlcmxpbmVcbiAgfCBgTGluZV90aHJvdWdoXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSB0ZXh0X2RlY29yYXRpb25fc3R5bGUgPVxuICBbIGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBXYXZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRleHRfZGVjb3JhdGlvbiA/c3R5bGUgP2NvbG9yIH5saW5lICgpID1cbiAgbGV0IHZhbHVlID1cbiAgICBsZXQgbGluZSA9XG4gICAgICBMaXN0Lm1hcCBsaW5lIH5mOihmdW5jdGlvblxuICAgICAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCIpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgICBpblxuICAgIGxldCBzdHlsZSA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgICAgIHwgU29tZSBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICAgIHwgU29tZSBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICAgIHwgU29tZSBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICAgIHwgU29tZSBgV2F2eSAtPiBcIndhdnlcIlxuICAgICAgfCBTb21lIGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICB8IFNvbWUgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICBpblxuICAgIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gICAgY29uY2F0M3YgbGluZSBzdHlsZSBjb2xvclxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInRleHQtZGVjb3JhdGlvblwiIH52YWx1ZVxuOztcblxudHlwZSBpdGVtX2FsaWdubWVudCA9XG4gIFsgYEF1dG9cbiAgfCBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgQmFzZWxpbmVcbiAgfCBgU3RyZXRjaFxuICBdXG5cbmxldCBpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBCYXNlbGluZSAtPiBcImJhc2VsaW5lXCJcbiAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuOztcblxudHlwZSBqdXN0aWZ5X2NvbnRlbnQgPVxuICBbIGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBTcGFjZV9iZXR3ZWVuXG4gIHwgYFNwYWNlX2Fyb3VuZFxuICB8IGBTcGFjZV9ldmVubHlcbiAgXVxuXG5sZXQganVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG47O1xuXG5sZXQgZmxleF9jb250YWluZXJcbiAgICAgID8oaW5saW5lID0gZmFsc2UpXG4gICAgICA/KGRpcmVjdGlvbiA9IGBSb3cpXG4gICAgICA/KHdyYXAgPSBgTm93cmFwKVxuICAgICAgP2FsaWduX2l0ZW1zXG4gICAgICA/anVzdGlmeV9jb250ZW50XG4gICAgICAoKVxuICA9XG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgUm93IC0+IFwicm93XCJcbiAgICB8IGBSb3dfcmV2ZXJzZSAtPiBcInJvdy1yZXZlcnNlXCJcbiAgICB8IGBDb2x1bW4gLT4gXCJjb2x1bW5cIlxuICAgIHwgYENvbHVtbl9yZXZlcnNlIC0+IFwiY29sdW1uLXJldmVyc2VcIlxuICBpblxuICBsZXQgd3JhcCA9XG4gICAgbWF0Y2ggd3JhcCB3aXRoXG4gICAgfCBgTm93cmFwIC0+IFwibm93cmFwXCJcbiAgICB8IGBXcmFwIC0+IFwid3JhcFwiXG4gICAgfCBgV3JhcF9yZXZlcnNlIC0+IFwid3JhcC1yZXZlcnNlXCJcbiAgaW5cbiAgbGV0IGFsaWduX2l0ZW1zID1cbiAgICBtYXRjaCBhbGlnbl9pdGVtcyB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1pdGVtc1wiIH52YWx1ZTooaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQganVzdGlmeV9jb250ZW50ID1cbiAgICBtYXRjaCBqdXN0aWZ5X2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImp1c3RpZnktY29udGVudFwiIH52YWx1ZTooanVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgY29uY2F0XG4gICAgWyBkaXNwbGF5IChpZiBpbmxpbmUgdGhlbiBgSW5saW5lX2ZsZXggZWxzZSBgRmxleClcbiAgICA7IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC1kaXJlY3Rpb25cIiB+dmFsdWU6ZGlyZWN0aW9uXG4gICAgOyBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtd3JhcFwiIH52YWx1ZTp3cmFwXG4gICAgOyBhbGlnbl9pdGVtc1xuICAgIDsganVzdGlmeV9jb250ZW50XG4gICAgXVxuOztcblxubGV0IGZsZXhfaXRlbSA/b3JkZXIgPyhiYXNpcyA9IGBBdXRvKSA/KHNocmluayA9IDEuKSB+Z3JvdyAoKSA9XG4gIGxldCBvcmRlciA9XG4gICAgT3B0aW9uLm1hcCBvcmRlciB+ZjooZnVuIGkgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcmRlclwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIHw+IExpc3Quam9pblxuICBpblxuICBsZXQgZmxleCA9XG4gICAgbGV0IGJhc2lzID0gQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBiYXNpcyBpblxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleFwiIH52YWx1ZTpbJXN0cmluZyBcIiV7ZjJzIDYgZ3Jvd30gJXtmMnMgNiBzaHJpbmt9ICV7YmFzaXN9XCJdXG4gIGluXG4gIGNvbmNhdCBbIGZsZXg7IG9yZGVyIF1cbjs7XG5cbmxldCBhbGlnbl9zZWxmIGEgPVxuICBsZXQgdmFsdWUgPSBpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1zZWxmXCIgfnZhbHVlXG47O1xuXG5sZXQgcmVzaXplICh2YWx1ZSA6IFsgYE5vbmUgfCBgQm90aCB8IGBIb3Jpem9udGFsIHwgYFZlcnRpY2FsIHwgY3NzX2dsb2JhbF92YWx1ZXMgXSkgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgIHwgYEhvcml6b250YWwgLT4gXCJob3Jpem9udGFsXCJcbiAgICB8IGBWZXJ0aWNhbCAtPiBcInZlcnRpY2FsXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInJlc2l6ZVwiIH52YWx1ZVxuOztcblxubGV0IGFuaW1hdGlvbiB+bmFtZSB+ZHVyYXRpb24gP2RlbGF5ID9kaXJlY3Rpb24gP2ZpbGxfbW9kZSA/aXRlcl9jb3VudCA/dGltaW5nX2Z1bmN0aW9uICgpXG4gID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIGxldCBzcGFuX3RvX3N0cmluZyBzID0gWyVzdHJpbmcgXCIle2YycyAyIChUaW1lX25zLlNwYW4udG9fc2VjIHMpfXNcIl0gaW5cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbSBkaXJlY3Rpb24gfmY6KGZ1biBkIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICAgICAgfCBgUmV2ZXJzZSAtPiBcInJldmVyc2VcIlxuICAgICAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgICAgICB8IGBBbHRlcm5hdGVfcmV2ZXJzZSAtPiBcImFsdGVybmF0ZS1yZXZlcnNlXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGlyZWN0aW9uXCIgfnZhbHVlKVxuICBpblxuICBsZXQgZmlsbF9tb2RlID1cbiAgICBtIGZpbGxfbW9kZSB+ZjooZnVuIGYgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGYgd2l0aFxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEZvcndhcmRzIC0+IFwiZm9yd2FyZHNcIlxuICAgICAgICB8IGBCYWNrd2FyZHMgLT4gXCJiYWNrd2FyZHNcIlxuICAgICAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIH52YWx1ZSlcbiAgaW5cbiAgWyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1uYW1lXCIgfnZhbHVlOm5hbWUpXG4gIDsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZHVyYXRpb25cIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIGR1cmF0aW9uKSlcbiAgOyBtIGRlbGF5IH5mOihmdW4gcyAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kZWxheVwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgcykpXG4gIDsgbSBpdGVyX2NvdW50IH5mOihmdW4gaSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICA7IG0gdGltaW5nX2Z1bmN0aW9uIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIH52YWx1ZSlcbiAgOyBkaXJlY3Rpb25cbiAgOyBmaWxsX21vZGVcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG50eXBlIHVzZXJfc2VsZWN0ID1cbiAgWyBgQWxsXG4gIHwgYEF1dG9cbiAgfCBgTm9uZVxuICB8IGBUZXh0XG4gIF1cblxubGV0IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBbGwgLT4gXCJhbGxcIlxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgfCBgVGV4dCAtPiBcInRleHRcIlxuOztcblxubGV0IHVzZXJfc2VsZWN0IHMgPVxuICBsZXQgdmFsdWUgPSB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzIHMgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ1c2VyLXNlbGVjdFwiIH52YWx1ZVxuOztcblxuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19zdHJpbmdfY3NzIC0+IG9mX3N0cmluZ19jc3NfZXhuIC0+IHRvX3N0cmluZ19jc3NcIiA9XG4gICAgICBsZXQgdCBjc3MgPVxuICAgICAgICBsZXQgcyA9IHRvX3N0cmluZ19jc3MgY3NzIGluXG4gICAgICAgIGxldCBzMiA9IHRvX3N0cmluZ19jc3MgKG9mX3N0cmluZ19jc3NfZXhuIHMpIGluXG4gICAgICAgIHByaW50X2VuZGxpbmUgcztcbiAgICAgICAgcHJpbnRfZW5kbGluZSBzMlxuICAgICAgaW5cbiAgICAgIHQgKGZsZXhfaXRlbSB+Z3JvdzoxLjAgKCkgQD4gb3ZlcmZsb3cgYFNjcm9sbCk7XG4gICAgICB0IChmbGV4X2NvbnRhaW5lciB+aW5saW5lOnRydWUgfmRpcmVjdGlvbjpgQ29sdW1uICgpIEA+IGJvcmRlciB+c3R5bGU6YERhc2hlZCAoKSk7XG4gICAgICB0IChjb2xvciAoYFJHQkEgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+ZzoxMDAgfmI6MTAwICgpKSkpO1xuICAgICAgdFxuICAgICAgICAoY29sb3JcbiAgICAgICAgICAgKGBIU0xBXG4gICAgICAgICAgICAgIChDb2xvci5IU0xBLmNyZWF0ZVxuICAgICAgICAgICAgICAgICB+aDoxMDBcbiAgICAgICAgICAgICAgICAgfnM6KFBlcmNlbnQub2ZfbXVsdCAwLjc1KVxuICAgICAgICAgICAgICAgICB+bDooUGVyY2VudC5vZl9tdWx0IDAuNjApXG4gICAgICAgICAgICAgICAgICgpKSkpO1xuICAgICAgdCAoY3JlYXRlIH5maWVsZDpcImNvbnRlbnRcIiB+dmFsdWU6e3xcIjtcInx9KTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMS4wMDAwMDAgMS4wMDAwMDAgYXV0bztvdmVyZmxvdzogc2Nyb2xsXG4gICAgZmxleDogMS4wMDAwMDAgMS4wMDAwMDAgYXV0bztvdmVyZmxvdzogc2Nyb2xsXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbnRlbnQ6IFwiO1wiXG4gICAgY29udGVudDogXCI7XCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImdyYWRpZW50c1wiID1cbiAgICAgIGxldCBwIHggPSBQZXJjZW50Lm9mX211bHQgeCBpblxuICAgICAgbGV0IGMgcyA9IGBOYW1lIHMgaW5cbiAgICAgIGxldCB0IGNzcyA9IHByaW50X2VuZGxpbmUgKHRvX3N0cmluZ19jc3MgY3NzKSBpblxuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYExpbmVhcl9ncmFkaWVudFxuICAgICAgICAgICAgICB7IGRpcmVjdGlvbiA9IGBEZWcgOTBcbiAgICAgICAgICAgICAgOyBzdG9wcyA9XG4gICAgICAgICAgICAgICAgICBbIHAgMC4sIGMgXCJibGFja1wiXG4gICAgICAgICAgICAgICAgICA7IHAgMC4yLCBjIFwiI2ZmMDAwMFwiXG4gICAgICAgICAgICAgICAgICA7IHAgMC40LCBjIFwicmVkXCJcbiAgICAgICAgICAgICAgICAgIDsgKCBwIDEuXG4gICAgICAgICAgICAgICAgICAgICwgYFJHQkFcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6NTAgfmI6MzAgfmE6KFBlcmNlbnQub2ZfbXVsdCAwLjc1KSAoKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIGJsYWNrIDAuMDAwMDAwJSwgI2ZmMDAwMCAyMC4wMDAwMDAlLCByZWQgNDAuMDAwMDAwJSwgcmdiYSgxMDAsNTAsMzAsMC43NSkgMTAwLjAwMDAwMCUpIHx9XTtcbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyA9IFsgcCAwLiwgYyBcImJsYWNrXCI7IHAgMS4sIGMgXCJyZWRcIiBdIH0pKTtcbiAgICAgIFslZXhwZWN0IHt8IGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChibGFjayAwLjAwMDAwMCUsIHJlZCAxMDAuMDAwMDAwJSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFRoZSBnZW5fanNfYXBpIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtbGlrZSBsaWNlbnNlLiAgICAgKilcbigqIFNlZSB0aGUgYXR0YWNoZWQgTElDRU5TRSBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIENvcHlyaWdodCAyMDE1IGJ5IExleGlGaS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcblxuKCogVGhpcyBtb2R1bGUgKG1vc3RseSkgYWJzdHJhY3RzIGF3YXkgZnJvbSBqc19vZl9vY2FtbCBlbmNvZGluZyBvZlxuICAgT0NhbWwgdmFsdWVzLiAgSXQgc2VydmVzIGFzIGEgc3VwcG9ydCBsaWJyYXJ5IGZvciB0aGUgY29kZSBnZW5lcmF0ZWRcbiAgIGJ5IGdlbl9qc19hcGkuXG5cbiAgIFRoZSBtb2R1bGUgY291bGQgbW9zdGx5IGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBqc19vZl9vY2FtbCdzIEpzIG1vZHVsZVxuICAgKGFuZCBpbiBwYXJ0aWN1bGFyIEpzLlVuc2FmZSksIGJ1dCB3ZSBwcmVmZXIgdG8gZHJvcCB0aGUgZGVwZW5kZW5jeVxuICAgdG8ganNfb2Zfb2NhbWwncyBsaWJyYXJ5IGFuZCB0byByZWx5IG9ubHkgb24gaXRzIGNvbXBpbGVyIGFuZCBKU1xuICAgcnVudGltZSBjb2RlLlxuKilcblxuXG50eXBlIHRcblxuZXh0ZXJuYWwgdF9vZl9qczogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdF90b19qczogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5leHRlcm5hbCBzdHJpbmdfb2ZfanM6IHQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCBzdHJpbmdfdG9fanM6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50X29mX2pzOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGludF90b19qczogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIGJvb2xfb2ZfanM6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcbmV4dGVybmFsIGJvb2xfdG9fanM6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9qczogdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGZsb2F0X3RvX2pzOiBmbG9hdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG5leHRlcm5hbCBvYmo6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbmV4dGVybmFsIHZhcmlhYmxlOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc192YXJcIlxuXG5leHRlcm5hbCBnZXQ6IHQgLT4gc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGU6IHQgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuZXh0ZXJuYWwgZ2V0X3Byb3A6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXRfcHJvcDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsZXRlX3Byb3A6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbmV4dGVybmFsIGdldF9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXRfcHJvcF9hc2NpaTogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGVfcHJvcF9hc2NpaTogdCAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG5leHRlcm5hbCBpbnRlcm5hbF90eXBlX29mOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcbmxldCB0eXBlX29mIHggPSBzdHJpbmdfb2ZfanMgKGludGVybmFsX3R5cGVfb2YgeClcblxuZXh0ZXJuYWwgaW50ZXJuYWxfaW5zdGFuY2Vfb2Y6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxubGV0IGluc3RhbmNlX29mIHggfmNvbnN0ciA9IGJvb2xfb2ZfanMgKGludGVybmFsX2luc3RhbmNlX29mIHggY29uc3RyKVxuXG5leHRlcm5hbCBwdXJlX2pzX2V4cHI6IHN0cmluZyAtPiB0ID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5sZXQgbnVsbCA9IHB1cmVfanNfZXhwciBcIm51bGxcIlxubGV0IHVuZGVmaW5lZCA9IHB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbmV4dGVybmFsIGVxdWFsczogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxubGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImpvb19nbG9iYWxfb2JqZWN0XCJcblxuZXh0ZXJuYWwgbmV3X29iajogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuZXh0ZXJuYWwgY2FsbDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5leHRlcm5hbCBhcHBseTogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG5sZXQgYXJyYXlfbWFrZSBuID0gbmV3X29iaiAoZ2V0X3Byb3BfYXNjaWkgZ2xvYmFsIFwiQXJyYXlcIikgW3xpbnRfdG9fanMgbnxdXG5sZXQgYXJyYXlfZ2V0IHQgaSA9IGdldF9wcm9wIHQgKGludF90b19qcyBpKVxubGV0IGFycmF5X3NldCB0IGkgeCA9IHNldF9wcm9wIHQgKGludF90b19qcyBpKSB4XG5cbmxldCBhcnJheV9vZl9qc19mcm9tIGYgb2JqcyBzdGFydCA9XG4gIGxldCBuID0gaW50X29mX2pzIChnZXRfcHJvcF9hc2NpaSBvYmpzIFwibGVuZ3RoXCIpIGluXG4gIEFycmF5LmluaXQgKG4gLSBzdGFydCkgKGZ1biBpIC0+IGYgKGFycmF5X2dldCBvYmpzIChzdGFydCArIGkpKSlcblxubGV0IGFycmF5X29mX2pzIGYgb2JqcyA9IGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIDBcblxubGV0IGFycmF5X3RvX2pzIGYgYXJyID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGxldCBhID0gYXJyYXlfbWFrZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGFycmF5X3NldCBhIGkgKGYgYXJyLihpKSlcbiAgZG9uZTtcbiAgYVxuXG5sZXQgbGlzdF9vZl9qc19mcm9tIGYgb2JqcyBzdGFydCA9IEFycmF5LnRvX2xpc3QgKGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0KVxuXG5sZXQgbGlzdF9vZl9qcyBmIG9ianMgPSBsaXN0X29mX2pzX2Zyb20gZiBvYmpzIDBcblxubGV0IGxpc3RfdG9fanMgZiBsID1cbiAgYXJyYXlfdG9fanMgZiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgb3B0aW9uX29mX2pzIGYgeCA9XG4gIGlmIGVxdWFscyB4IG51bGwgfHwgeCA9PSB1bmRlZmluZWQgdGhlbiBOb25lXG4gIGVsc2UgU29tZSAoZiB4KVxuXG5sZXQgb3B0aW9uX3RvX2pzIGYgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IG51bGxcblxubGV0IHVuaXRfdG9fanMgKCkgPSB1bmRlZmluZWRcbmxldCB1bml0X29mX2pzIF8gPSAoKVxuXG5jbGFzcyBvYmogKHg6dCkgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdG9fanMgPSB4XG4gIGVuZFxuXG5leHRlcm5hbCBmdW5fdG9fanM6IGludCAtPiAodCAtPiAnYSkgLT4gdCA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5leHRlcm5hbCBmdW5fdG9fanNfYXJnczogKHQgLT4gJ2EpIC0+IHQgPSBcImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50c1wiXG5cbmxldCBoYXNfcHJvcGVydHkgbyB4ID1cbiAgdHlwZV9vZiBvID0gXCJvYmplY3RcIiAmJiBvICE9IG51bGxcbiAgJiYgZ2V0X3Byb3AgbyAoc3RyaW5nX3RvX2pzIHgpICE9IHVuZGVmaW5lZFxuXG5leHRlcm5hbCBuZXdfb2JqX2FycjogdCAtPiB0IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG5sZXQgZW1wdHlfb2JqICgpID0gbmV3X29iaiAoZ2V0X3Byb3BfYXNjaWkgZ2xvYmFsIFwiT2JqZWN0XCIpIFt8fF1cblxuZXh0ZXJuYWwgaXRlcl9wcm9wZXJ0aWVzX3VudHlwZWQgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9vanNfaXRlcmF0ZV9wcm9wZXJ0aWVzXCJcbmxldCBpdGVyX3Byb3BlcnRpZXMgeCBmID1cbiAgaXRlcl9wcm9wZXJ0aWVzX3VudHlwZWQgeCAoZnVuX3RvX2pzIDEgKGZ1biB4IC0+IGYgKHN0cmluZ19vZl9qcyB4KSkpXG5cbmxldCBhcHBseV9hcnIgbyBhcnIgPSBjYWxsIG8gXCJhcHBseVwiIFt8IG51bGw7IGFyciB8XVxubGV0IGNhbGxfYXJyIG8gcyBhcnIgPSBjYWxsIChnZXRfcHJvcCBvIChzdHJpbmdfdG9fanMgcykpIFwiYXBwbHlcIiBbfCBvOyBhcnIgfF1cblxubGV0IGlzX251bGwgeCA9XG4gIGVxdWFscyB4IG51bGxcblxubGV0IG9ial90eXBlIHggPVxuICBzdHJpbmdfb2ZfanMgKGNhbGwgKHB1cmVfanNfZXhwciBcIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcIikgXCJjYWxsXCIgW3x4fF0pXG5cbm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSBqcyA6PSB0XG4gIHR5cGUgdFxuICB2YWwgdF90b19qcyA6IHQgLT4ganNcbiAgdmFsIHRfb2ZfanMgOiBqcyAtPiB0XG5lbmRcblxuKCogT2pzLlQgaW5zdGFuY2VzIGZvciBidWlsdC1pbiB0eXBlcyAqKVxubW9kdWxlIEludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IHRfdG9fanMgPSBpbnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBpbnRfb2ZfanNcbiBlbmRcbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0X3RvX2pzID0gc3RyaW5nX3RvX2pzXG4gIGxldCB0X29mX2pzID0gc3RyaW5nX29mX2pzXG5lbmRcbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIHR5cGUgdCA9IGJvb2xcbiAgbGV0IHRfdG9fanMgPSBib29sX3RvX2pzXG4gIGxldCB0X29mX2pzID0gYm9vbF9vZl9qc1xuZW5kXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcbiAgbGV0IHRfdG9fanMgPSBmbG9hdF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGZsb2F0X29mX2pzXG5lbmRcbm1vZHVsZSBBcnJheSAoQTogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQS50IGFycmF5XG4gIGxldCB0X3RvX2pzID0gYXJyYXlfdG9fanMgQS50X3RvX2pzXG4gIGxldCB0X29mX2pzID0gYXJyYXlfb2ZfanMgQS50X29mX2pzXG5lbmRcbm1vZHVsZSBMaXN0IChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgbGlzdFxuICBsZXQgdF90b19qcyA9IGxpc3RfdG9fanMgQS50X3RvX2pzXG4gIGxldCB0X29mX2pzID0gbGlzdF9vZl9qcyBBLnRfb2ZfanNcbmVuZFxubW9kdWxlIE9wdGlvbiAoQTogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQS50IG9wdGlvblxuICBsZXQgdF90b19qcyA9IG9wdGlvbl90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBvcHRpb25fb2ZfanMgQS50X29mX2pzXG5lbmRcbiIsIigqIFRoZSBnZW5fanNfYXBpIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtbGlrZSBsaWNlbnNlLiAgICAgKilcbigqIFNlZSB0aGUgYXR0YWNoZWQgTElDRU5TRSBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIENvcHlyaWdodCAyMDE1IGJ5IExleGlGaS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcblxudHlwZSB0ID0gSnNvb19ydW50aW1lLkVycm9yLnRcblxuZXh0ZXJuYWwgY29lcmNlIDogdCAtPiBPanMudCA9IFwiJWlkZW50aXR5XCJcbmxldCBuYW1lIHggPSBPanMuc3RyaW5nX29mX2pzIChPanMuZ2V0X3Byb3BfYXNjaWkgKGNvZXJjZSB4KSBcIm5hbWVcIilcbmxldCBtZXNzYWdlIHggPSBPanMuc3RyaW5nX29mX2pzIChPanMuZ2V0X3Byb3BfYXNjaWkgKGNvZXJjZSB4KSBcIm1lc3NhZ2VcIilcbmxldCBzdGFjayB4ID0gT2pzLm9wdGlvbl9vZl9qcyBPanMuc3RyaW5nX29mX2pzIChPanMuZ2V0X3Byb3BfYXNjaWkgKGNvZXJjZSB4KSBcInN0YWNrXCIpXG5sZXQgdG9fc3RyaW5nIHggPSBPanMuc3RyaW5nX29mX2pzIChPanMuY2FsbCAoY29lcmNlIHgpIFwidG9TdHJpbmdcIiBbfHxdKVxuXG5leGNlcHRpb24gRXJyb3IgPSBKc29vX3J1bnRpbWUuRXJyb3IuRXhuXG5cbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIHggLT4gU29tZSAodG9fc3RyaW5nIHgpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHRvX2pzX3N0cmluZyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b1N0cmluZ1xubGV0IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9GaXhlZCBkaWdpdHNcbmxldCB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b1ByZWNpc2lvbiBkaWdpdHNcbmxldCB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9FeHBvbmVudGlhbFxubGV0IHRvX3N0cmluZyB2YWx1ZSA9IHRvX2pzX3N0cmluZyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSB8PiBKcy50b19zdHJpbmdcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgb3BlbiBDb3JlIGluXG4gIGxldCBwcmludCBmID0gcHJpbnRmIFwiJXNcIiAodG9fc3RyaW5nIGYpIGluXG4gIHByaW50IDEuO1xuICBbJWV4cGVjdCB7fCAxIHx9XTtcbiAgcHJpbnQgRmxvYXQubmFuO1xuICBbJWV4cGVjdCB7fCBOYU4gfH1dO1xuICBwcmludCBGbG9hdC5pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgSW5maW5pdHkgfH1dO1xuICBwcmludCBGbG9hdC5uZWdfaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IC1JbmZpbml0eSB8fV07XG4gIHByaW50IDAuMDAwMDAwMDE7XG4gIFslZXhwZWN0IHt8IDFlLTggfH1dO1xuICBwcmludCAoLTEuKTtcbiAgWyVleHBlY3Qge3wgLTEgfH1dO1xuICBwcmludCAxLjAwMDAwMDE7XG4gIFslZXhwZWN0IHt8IDEuMDAwMDAwMSB8fV1cbjs7XG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcbmluY2x1ZGUgVWlfZWZmZWN0XG5cbigqIEFsbCB2aXNpYmlsaXR5IGhhbmRsZXJzIHNlZSBhbGwgZXZlbnRzLCBzbyBhIHNpbXBsZSBsaXN0IGlzIGVub3VnaC4gICopXG5sZXQgdmlzaWJpbGl0eV9oYW5kbGVycyA6ICh1bml0IC0+IHVuaXQpIGxpc3QgcmVmID0gcmVmIFtdXG5cbm1vZHVsZSB0eXBlIFZpc2liaWxpdHlfaGFuZGxlciA9IHNpZ1xuICB2YWwgaGFuZGxlIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIERlZmluZV92aXNpYmlsaXR5IChWSCA6IFZpc2liaWxpdHlfaGFuZGxlcikgPSBzdHJ1Y3RcbiAgbGV0ICgpID0gdmlzaWJpbGl0eV9oYW5kbGVycyA6PSBWSC5oYW5kbGUgOjogIXZpc2liaWxpdHlfaGFuZGxlcnNcbmVuZFxuXG50eXBlIF8gdCArPVxuICB8IFZpZXdwb3J0X2NoYW5nZWRcbiAgfCBTdG9wX3Byb3BhZ2F0aW9uXG4gIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb25cbiAgfCBQcmV2ZW50X2RlZmF1bHRcblxubGV0IHNlcXVlbmNlX2FzX3NpYmxpbmcgbGVmdCB+dW5sZXNzX3N0b3BwZWQgPVxuICBsZXQgcmVjIGNvbnRhaW5zX3N0b3AgPSBmdW5jdGlvblxuICAgIHwgTWFueSBlcyAtPiBMaXN0LmV4aXN0cyBlcyB+Zjpjb250YWluc19zdG9wXG4gICAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvbiAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGNvbnRhaW5zX3N0b3AgbGVmdCB0aGVuIGxlZnQgZWxzZSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHVubGVzc19zdG9wcGVkICgpIF1cbjs7XG5cbigqIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBkb20gZXZlbnQgaGVyZSBzbyB0aGF0XG4gICBtb3ZlbWVudCBiZXR3ZWVuIFtWZG9tLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBhbmRcbiAgIFtVaV9jb25jcmV0ZS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0ga2VlcHMgdGhlIG9yaWdpbmFsXG4gICBkb20gZXZlbnQgYXJvdW5kLiAqKVxubGV0IGN1cnJlbnRfZG9tX2V2ZW50ID0gcmVmIE5vbmVcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgVmlld3BvcnRfY2hhbmdlZCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IExpc3QuaXRlciAhdmlzaWJpbGl0eV9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiAoKSkpXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OkNhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBTdG9wX3Byb3BhZ2F0aW9uKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbV9odG1sLnN0b3BQcm9wYWdhdGlvbilcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6Q2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFByZXZlbnRfZGVmYXVsdCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IE9wdGlvbi5pdGVyICFjdXJyZW50X2RvbV9ldmVudCB+ZjpEb20ucHJldmVudERlZmF1bHQpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gPSBFeHBlcnQuaGFuZGxlXG5cbiAgbGV0IGhhbmRsZSBkb21fZXZlbnQgZXZlbnQgPVxuICAgIGxldCBvbGQgPSAhY3VycmVudF9kb21fZXZlbnQgaW5cbiAgICBjdXJyZW50X2RvbV9ldmVudCA6PSBTb21lIChkb21fZXZlbnQgOj4gRG9tX2h0bWwuZWxlbWVudCBEb20uZXZlbnQgSnMudCk7XG4gICAgRXhwZXJ0LmhhbmRsZSBldmVudDtcbiAgICBjdXJyZW50X2RvbV9ldmVudCA6PSBvbGRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSnNfb2Zfb2NhbWxcblxubW9kdWxlIHR5cGUgUyA9IEhvb2tzX2ludGYuU1xuXG5sZXQgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBpZCA9IERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgaWRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSAoSnMud3JhcF9jYWxsYmFjayBmKVxuOztcblxubW9kdWxlIEV4dHJhID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHsgdHlwZV9pZDsgdmFsdWUgfSkgPSBUeXBlX2VxdWFsLklkLnRvX3NleHAgdHlwZV9pZCB2YWx1ZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgVCA6XG4gICAgICB7IGlucHV0IDogJ2lucHV0XG4gICAgICA7IGlucHV0X2lkIDogJ2lucHV0IFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBjb21iaW5lX2lucHV0cyA6ICdpbnB1dCAtPiAnaW5wdXQgLT4gJ2lucHV0XG4gICAgICA7IGluaXQgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IHVwZGF0ZSA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyBkZXN0cm95IDpcbiAgICAgICAgICAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+IHVuaXRcbiAgICAgIDsgaWQgOiAoJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGUpIENvcmUuVHlwZV9lcXVhbC5JZC50XG4gICAgICB9XG4gICAgICAtPiB0XG5cbmxldCBnZW5lcmljX2hvb2sgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiR2VuZXJpY0hvb2tcIikpXG5cbmxldCBtYWtlX2hvb2sgfmNvbWJpbmVfaW5wdXRzIH5pbml0IH5leHRyYTooaW5wdXQsIGlucHV0X2lkKSB+dXBkYXRlIH5kZXN0cm95IH5pZCA9XG4gIFQgeyBpbml0OyBjb21iaW5lX2lucHV0czsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkIH1cbjs7XG5cbmxldCBwYWNrIChUIHsgaW5pdDsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkOyBfIH0pID1cbiAgbGV0IHdyYXAgYSA9IGEgfD4gSnMud3JhcF9jYWxsYmFjayB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBpbml0ID0gd3JhcCAoaW5pdCBpbnB1dCkgaW5cbiAgbGV0IHVwZGF0ZSA9IHdyYXAgKHVwZGF0ZSBpbnB1dCkgaW5cbiAgbGV0IGRlc3Ryb3kgPSB3cmFwIGRlc3Ryb3kgaW5cbiAgbGV0IGdlbmVyaWNfaG9vayA9IExhenkuZm9yY2UgZ2VuZXJpY19ob29rIGluXG4gIGxldCBleHRyYSA9IEV4dHJhLlQgeyB0eXBlX2lkID0gaW5wdXRfaWQ7IHZhbHVlID0gaW5wdXQgfSBpblxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICBnZW5lcmljX2hvb2tcbiAgICBbfCBpbml0OyB1cGRhdGU7IGRlc3Ryb3k7IGlkIHw+IEpzLlVuc2FmZS5pbmplY3Q7IGV4dHJhIHw+IEpzLlVuc2FmZS5pbmplY3QgfF1cbjs7XG5cbmxldCBjb21iaW5lIChUIGxlZnQpIChUIHJpZ2h0KSA9XG4gIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGxlZnQuaW5wdXRfaWQgcmlnaHQuaW5wdXRfaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBlcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiaG9va3MgZG8gbm90IGhhdmUgdGhlIHNhbWUgdHlwZSwgc28gdGhleSBjYW5ub3QgYmUgY29tYmluZWQ7IHRha2luZyB0aGUgc2Vjb25kIFxcXG4gICAgICAgICBvZiB0aGUgdHdvXCJdO1xuICAgIFQgcmlnaHRcbiAgfCBTb21lIFQgLT4gVCB7IHJpZ2h0IHdpdGggaW5wdXQgPSByaWdodC5jb21iaW5lX2lucHV0cyBsZWZ0LmlucHV0IHJpZ2h0LmlucHV0IH1cbjs7XG5cbm1vZHVsZSBNYWtlIChTIDogUykgPSBzdHJ1Y3RcbiAgbGV0IGlucHV0X2FuZF9zdGF0ZV9pZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiAoZnVuIChpbnB1dCwgX2FuaW1hdGlvbl9pZCwgc3RhdGUpIC0+XG4gICAgICBbJXNleHBfb2Y6IFMuSW5wdXQudCAqIG9wYXF1ZV0gKGlucHV0LCBzdGF0ZSkpXG4gIDs7XG5cbiAgbGV0IGlucHV0X2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiBTLklucHV0LnNleHBfb2ZfdFxuXG4gIGxldCBpbml0IGlucHV0IGVsZW1lbnQgPVxuICAgIGxldCBzdGF0ZSA9IFMuaW5pdCBpbnB1dCBlbGVtZW50IGluXG4gICAgbGV0IGFuaW1hdGlvbl9pZCA9XG4gICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoZnVuIF8gLT4gUy5vbl9tb3VudCBpbnB1dCBzdGF0ZSBlbGVtZW50KVxuICAgIGluXG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgdXBkYXRlIGlucHV0IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIFMudXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDppbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IGRlc3Ryb3kgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBhbmltYXRpb25faWQ7XG4gICAgUy5kZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBpbnB1dCA9XG4gICAgbWFrZV9ob29rXG4gICAgICB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZClcbiAgICAgIH5jb21iaW5lX2lucHV0czpTLklucHV0LmNvbWJpbmVcbiAgICAgIH5pZDppbnB1dF9hbmRfc3RhdGVfaWRcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlXG4gICAgICB+ZGVzdHJveVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2lkID0gaW5wdXRfaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBFeHRyYSA9IEV4dHJhXG5lbmRcbiIsIltAQEBqcy5kdW1teSBcIiEhIFRoaXMgY29kZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuX2pzX2FwaSAhIVwiXVxuW0BAQG9jYW1sLndhcm5pbmcgXCItNy0zMi0zOVwiXVxub3BlbiEgSnNfb2Zfb2NhbWxcbm9wZW4hIEdlbl9qc19hcGlcbnR5cGUgKCdhLCAnYikgdCA9IE9qcy50XG5sZXQgcmVjIHRfb2ZfanMgOlxuICAnYSAnYiAuIChPanMudCAtPiAnYSkgLT4gKE9qcy50IC0+ICdiKSAtPiBPanMudCAtPiAoJ2EsICdiKSB0ID0gZnVuICh0eXBlXG4gIF9fYSkgLT4gZnVuICh0eXBlIF9fYikgLT5cbiAgZnVuIChfX2Ffb2ZfanMgOiBPanMudCAtPiBfX2EpIC0+XG4gICAgZnVuIChfX2Jfb2ZfanMgOiBPanMudCAtPiBfX2IpIC0+IGZ1biAoeDIgOiBPanMudCkgLT4geDJcbmFuZCB0X3RvX2pzIDogJ2EgJ2IgLiAoJ2EgLT4gT2pzLnQpIC0+ICgnYiAtPiBPanMudCkgLT4gKCdhLCAnYikgdCAtPiBPanMudCA9XG4gIGZ1biAodHlwZSBfX2EpIC0+IGZ1biAodHlwZSBfX2IpIC0+XG4gIGZ1biAoX19hX3RvX2pzIDogX19hIC0+IE9qcy50KSAtPlxuICAgIGZ1biAoX19iX3RvX2pzIDogX19iIC0+IE9qcy50KSAtPiBmdW4gKHgxIDogT2pzLnQpIC0+IHgxXG5sZXQgKGNyZWF0ZSA6IHVuaXQgLT4gKCdhLCAnYikgdCkgPVxuICBmdW4gKCkgLT5cbiAgICB0X29mX2pzIE9iai5tYWdpYyBPYmoubWFnaWNcbiAgICAgIChPanMubmV3X29iaiAoT2pzLmdldF9wcm9wX2FzY2lpIE9qcy5nbG9iYWwgXCJNYXBcIikgW3x8XSlcbmxldCAoc2V0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiAtPiB1bml0KSA9XG4gIGZ1biAoeDcgOiAoJ2EsICdiKSB0KSAtPlxuICAgIGZ1biAoeDUgOiAnYSkgLT5cbiAgICAgIGZ1biAoeDYgOiAnYikgLT5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKE9qcy5jYWxsICh0X3RvX2pzIE9iai5tYWdpYyBPYmoubWFnaWMgeDcpIFwic2V0XCJcbiAgICAgICAgICAgICBbfChPYmoubWFnaWMgeDUpOyhPYmoubWFnaWMgeDYpfF0pXG5sZXQgKGdldCA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSA9XG4gIGZ1biAoeDExIDogKCdhLCAnYikgdCkgLT5cbiAgICBmdW4gKHgxMCA6ICdhKSAtPlxuICAgICAgT2pzLm9wdGlvbl9vZl9qcyBPYmoubWFnaWNcbiAgICAgICAgKE9qcy5jYWxsICh0X3RvX2pzIE9iai5tYWdpYyBPYmoubWFnaWMgeDExKSBcImdldFwiIFt8KE9iai5tYWdpYyB4MTApfF0pXG5sZXQgKGRlbGV0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gdW5pdCkgPVxuICBmdW4gKHgxNiA6ICgnYSwgJ2IpIHQpIC0+XG4gICAgZnVuICh4MTUgOiAnYSkgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4MTYpIFwiZGVsZXRlXCJcbiAgICAgICAgICAgW3woT2JqLm1hZ2ljIHgxNSl8XSlcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxub3BlbiBHZW5fanNfYXBpXG5cbm1vZHVsZSBOYXRpdmVfbm9kZSA6IHNpZ1xuICB0eXBlIHQgPSBEb21faHRtbC5lbGVtZW50IEpzLnRcblxuICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRG9tX2h0bWwuZWxlbWVudCBKcy50XG5cbiAgbGV0IHRfb2ZfanMgeCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuICBsZXQgdF90b19qcyB4ID0gU3RkbGliLk9iai5tYWdpYyB4XG5lbmRcblxubW9kdWxlIEF0dHJzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGhhc19hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBzZXRfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiBPanMudCAtPiB1bml0XG4gIHZhbCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gT2pzLnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IE9qcy50XG5cbiAgbGV0IHRfb2ZfanMgeCA9IHhcbiAgbGV0IHRfdG9fanMgeCA9IHhcbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSBPanMuZW1wdHlfb2JqICgpXG5cbiAgbGV0IHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPiBPanMuc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlXG4gIDs7XG5cbiAgbGV0IGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2wgPSBPanMuaGFzX3Byb3BlcnR5XG5cbiAgbGV0IGhhc19hdHRyaWJ1dGUgdCBuYW1lID1cbiAgICBPanMuaGFzX3Byb3BlcnR5IHQgXCJhdHRyaWJ1dGVzXCJcbiAgICAmJiBPanMuaGFzX3Byb3BlcnR5IChPanMuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZVxuICA7O1xuXG4gIGxldCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIChPanMuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgKE9qcy52YXJpYWJsZSBcInVuZGVmaW5lZFwiKVxuICAgICAgdGhlbiBPanMuc2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIiAoT2pzLmVtcHR5X29iaiAoKSk7XG4gICAgICBPanMuc2V0X3Byb3BfYXNjaWkgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lIHZhbHVlXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsZW1lbnRfYXJyYXkgPSBzdHJ1Y3RcbiAgKCogVGhpcyB0eXBlIG11c3Qgb25seSBiZSBpbnN0YW50aWF0ZWQgd2l0aCBOb2RlLnQgYXMgdGhlXG4gICAgIHR5cGUgcGFyYW1ldGVyIGJlY2F1c2UgaXQgaWdub3JlcyB0aGUgaW5uZXItbW9zdCBjb252ZXJzaW9uXG4gICAgIGZ1bmN0aW9uLiAgVGhpcyBpcyBzYWZlIGJlY2F1c2UgTm9kZS50IGlzIGRlZmluZWQgYXMgT2pzLnQsXG4gICAgIGJ1dCB3ZSBjYW4ndCB0YWtlIGFkdmFudGFnZSBvZiB0aGF0IGZhY3QgYmVjYXVzZSB0aGUgTm9kZVxuICAgICBtb2R1bGUgaXMgZ2VuZXJhdGVkIHZpYSBwcHguICopXG5cbiAgdHlwZSAnYSB0ID0gJ2EgSnNfb2Zfb2NhbWwuSnMuanNfYXJyYXkgSnMudFxuXG4gIGxldCB0X29mX2pzIDogXyAtPiBPanMudCAtPiAnYSB0ID0gZnVuIF8gLT4gQ2FtbC5PYmoubWFnaWNcbiAgbGV0IHRfdG9fanMgOiBfIC0+ICdhIHQgLT4gT2pzLnQgPSBmdW4gXyAtPiBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBOb2RlID1cbiAgWyVqczpcbiAgICB0eXBlIHQgPSBwcml2YXRlIE9qcy50XG5cbiAgICB2YWwgdF9vZl9qcyA6IE9qcy50IC0+IHRcbiAgICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcblxuICAgIHZhbCBub2RlIDogc3RyaW5nIC0+IEF0dHJzLnQgLT4gdCBFbGVtZW50X2FycmF5LnQgLT4gc3RyaW5nIG9wdGlvbiAtPiB0XG4gICAgW0BAanMubmV3IFwiVmlydHVhbERvbS5WTm9kZVwiXVxuXG4gICAgdmFsIHRleHQgOiBzdHJpbmcgLT4gdCBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLlZUZXh0XCJdXG5cbiAgICB2YWwgc3ZnIDogc3RyaW5nIC0+IEF0dHJzLnQgLT4gdCBFbGVtZW50X2FycmF5LnQgLT4gc3RyaW5nIG9wdGlvbiAtPiB0XG4gICAgW0BAanMubmV3IFwiVmlydHVhbERvbS5zdmdcIl1cblxuICAgIHZhbCB0b19kb20gOiB0IC0+IE5hdGl2ZV9ub2RlLnQgW0BAanMuZ2xvYmFsIFwiVmlydHVhbERvbS5jcmVhdGVFbGVtZW50XCJdXVxuXG5tb2R1bGUgUGF0Y2ggPVxuICBbJWpzOlxuICAgIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICAgIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICAgIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuICAgIHZhbCBjcmVhdGUgOiBwcmV2aW91czpOb2RlLnQgLT4gY3VycmVudDpOb2RlLnQgLT4gdCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLmRpZmZcIl1cbiAgICB2YWwgYXBwbHkgOiBOYXRpdmVfbm9kZS50IC0+IHQgLT4gTmF0aXZlX25vZGUudCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLnBhdGNoXCJdXG5cbiAgICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgICBbQEBqcy5jdXN0b21cbiAgICAgIGxldCBpc19lbXB0eSA9XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAgICAgICAgICB7anN8XG4gICAgICAgIChmdW5jdGlvbiAocGF0Y2gpIHtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChrZXkgIT09ICdhJykgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB8anN9XG4gICAgICAgIGluXG4gICAgICAgIGZ1biAodCA6IHQpIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCBmIFt8IEpzLlVuc2FmZS5pbmplY3QgdCB8XSB8PiBKcy50b19ib29sXG4gICAgICA7O11dXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBbJ3MsICdlbGVtZW50XSB3aWRnZXQgPVxuICAgIG9iamVjdFxuICAgICAgY29uc3RyYWludCAnZWxlbWVudCA9ICNEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgIG1ldGhvZCB0eXBlXyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgICgqIHZpcnR1YWwtZG9tIGNvbnNpZGVycyB0d28gd2lkZ2V0cyBvZiBiZWluZyBvZiB0aGUgc2FtZSBcImtpbmRcIiBpZiBlaXRoZXJcbiAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgaG9sZHM6XG5cbiAgICAgICAgIDEuIFRoZXkgYm90aCBoYXZlIGEgXCJuYW1lXCIgYXR0cmlidXRlIGFuZCB0aGVpciBcImlkXCIgZmllbGRzIGFyZSBlcXVhbC5cbiAgICAgICAgIChJIHRoaW5rIHRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdmlydHVhbC1kb20gYW5kIGhhdmUgZmllbGQgYW4gaXNzdWVcbiAgICAgICAgIG9uIGdpdGh1YjogW2h0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vaXNzdWVzLzM4MF0pXG5cbiAgICAgICAgIDIuIFRoZWlyIFtpbml0XSBtZXRob2RzIGFyZSBcIj09PVwiIGVxdWFsLiBUaGlzIGlzIHRydWUgd2hlbiB1c2luZyB2aXJ0dWFsLWRvbVxuICAgICAgICAgd2lkZ2V0cyBpbiB0aGUgdXN1YWwgc3R5bGUgaW4gSmF2YXNjcmlwdCwgc2luY2UgdGhlIFtpbml0XSBtZXRob2Qgd2lsbCBiZSBkZWZpbmVkXG4gICAgICAgICBvbiBhIHByb3RvdHlwZSwgYnV0IGlzIG5vdCB0cnVlIGluIHRoaXMgYmluZGluZyBhcyBpdCBpcyByZWRlZmluZWQgZm9yIGVhY2hcbiAgICAgICAgIGNhbGwgdG8gW3dpZGdldF0uXG5cbiAgICAgICAgIFNvLCB3ZSBnbyB3aXRoIG9wdGlvbiAxIGFuZCBtdXN0IGhhdmUgYSB0cml2aWFsIGZpZWxkIGNhbGxlZCBbbmFtZV0uXG4gICAgICAqKVxuICAgICAgbWV0aG9kIG5hbWUgOiB1bml0IEpzLndyaXRlb25seV9wcm9wXG4gICAgICBtZXRob2QgaWQgOiAoJ3MgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50IEpzLnByb3BcbiAgICAgIG1ldGhvZCBzdGF0ZSA6ICdzIEpzLnByb3BcbiAgICAgIG1ldGhvZCBpbmZvIDogU2V4cC50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgICAgbWV0aG9kIGRlc3Ryb3kgOiAoJ2VsZW1lbnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHVwZGF0ZSA6XG4gICAgICAgICgoJ290aGVyX3N0YXRlLCAnb3RoZXJfZWxlbWVudCkgd2lkZ2V0IEpzLnQgLT4gJ2VsZW1lbnQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrXG4gICAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIGluaXQgOiAodW5pdCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBlbmRcblxuICAoKiBXZSBtb2RlbCBKUyBsZXZlbCBvYmplY3RzIGhlcmUgc28gdGhlcmUgaXMgYSBsb3Qgb2YgdGhyb3dpbmcgYXdheSBvZiB0eXBlXG4gICAgIGluZm9ybWF0aW9uLiAgV2UgY291bGQgcG9zc2libHkgdHJ5IHRvIHJlZGlzY292ZXIgbW9yZSBvZiBpdC4gIE9yIG1heWJlIHdlXG4gICAgIHNob3VsZCBzZWUgaWYgd2UgY2FuIGdldCByaWQgV2lkZ2V0IGNvbXBsZXRlbHkuXG4gICAgIHRoZSB1bml0IHR5cGUgcGFyYW1ldGVycyBoZXJlIGFyZSBub3QgYWN0dWFsbHkgdW5pdCwgYnV0IHBhcnQgb2ZcbiAgICAgdGhlIHR5cGUgaW5mbyB3ZSBoYXZlIHRocm93biBhd2F5IGludG8gb3VyIGRhbmNlXG4gICAgIHdpdGggSlMgKilcbiAgdHlwZSB0ID0gTm9kZS50XG5cbiAgKCogaGVyZSBpcyBob3cgd2UgdGhyb3cgYXdheSB0eXBlIGluZm9ybWF0aW9uLiAgT3VyIGdvb2Qgb2xkIGZyaWVuZCBPYmoubWFnaWMsXG4gICAgIGJ1dCBjb25zdHJhaW5lZCBhIGxpdHRsZSBiaXQgKilcbiAgZXh0ZXJuYWwgb2pzX29mX2pzIDogKF8sIF8pIHdpZGdldCBKcy50IC0+IE9qcy50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSBTdGF0ZV9rZWVwZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIGJveCA9IFQgOiAoJ2EgKiBfKSBUeXBlX2VxdWFsLklkLnQgKiAnYSAtPiBib3hcblxuICAgIGxldCB0IDogKEpzLlVuc2FmZS5hbnksIGJveCkgSnNfbWFwLnQgPSBKc19tYXAuY3JlYXRlICgpXG4gICAgbGV0IHNldCB+aWQgZWxlbWVudCBzdGF0ZSA9IEpzX21hcC5zZXQgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KSAoVCAoaWQsIHN0YXRlKSlcblxuICAgIGxldCBnZXQgOiB0eXBlIGEgYi4gaWQ6KGEgKiBiKSBUeXBlX2VxdWFsLklkLnQgLT4gXyAtPiBhID1cbiAgICAgIGZ1biB+aWQgZWxlbWVudCAtPlxuICAgICAgbGV0IGVsZW1lbnQgPSBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQgaW5cbiAgICAgIG1hdGNoIEpzX21hcC5nZXQgdCBlbGVtZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWRfc2V4cCA9IFR5cGVfZXF1YWwuSWQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCI8b3BhcXVlPlwiKSBpZCBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogZWxlbWVudCBzdGF0ZSBub3QgZm91bmRcIiAoaWRfc2V4cCA6IFNleHAudCldXG4gICAgICB8IFNvbWUgKFQgKGZfaWQsIHN0YXRlKSkgLT5cbiAgICAgICAgbGV0IFQgPSBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gaWQgZl9pZCBpblxuICAgICAgICBzdGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgZGVsZXRlIGVsZW1lbnQgPSBKc19tYXAuZGVsZXRlIHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudClcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICAodHlwZSBzKVxuICAgICAgICA/aW5mb1xuICAgICAgICA/KGRlc3Ryb3kgOiBzIC0+ICdlbGVtZW50IC0+IHVuaXQgPSBmdW4gXyBfIC0+ICgpKVxuICAgICAgICA/KHVwZGF0ZSA6IHMgLT4gJ2VsZW1lbnQgLT4gcyAqICdlbGVtZW50ID0gZnVuIHMgZWx0IC0+IHMsIGVsdClcbiAgICAgICAgfihpZCA6IChzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgfihpbml0IDogdW5pdCAtPiBzICogJ2VsZW1lbnQpXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvYmogOiAocywgXykgd2lkZ2V0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBvYmojIy50eXBlXyA6PSBKcy5zdHJpbmcgXCJXaWRnZXRcIjtcbiAgICBvYmojIy5uYW1lIDo9ICgpO1xuICAgIG9iaiMjLmlkIDo9IGlkO1xuICAgIG9iaiMjLmluZm8gOj0gaW5mbztcbiAgICBvYmojIy5pbml0XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgczAsIGRvbV9ub2RlID0gaW5pdCAoKSBpblxuICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUgczA7XG4gICAgICBkb21fbm9kZSk7XG4gICAgb2JqIyMudXBkYXRlXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZXYgZG9tX25vZGUgLT5cbiAgICAgICgqIFRoZSBbdXBkYXRlXSBtZXRob2Qgb2YgW29ial0gaXMgb25seSBjYWxsZWQgYnkgdmlydHVhbC1kb20gYWZ0ZXIgaXQgaGFzIGNoZWNrZWRcbiAgICAgICAgIHRoYXQgdGhlIFtpZF1zIG9mIFtwcmV2XSBhbmQgW29ial0gYXJlIFwiPT09XCIgZXF1YWwuIFRodXMgW3NhbWVfd2l0bmVzc19leG5dIHdpbGxcbiAgICAgICAgIG5ldmVyIHJhaXNlLiAqKVxuICAgICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIHByZXYjIy5pZCBpZCB3aXRoXG4gICAgICB8IFR5cGVfZXF1YWwuVCAtPlxuICAgICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICAgIGxldCBzdGF0ZScsIGRvbV9ub2RlJyA9IHVwZGF0ZSBwcmV2X3N0YXRlIGRvbV9ub2RlIGluXG4gICAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGU7XG4gICAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlJyBzdGF0ZSc7XG4gICAgICAgIGRvbV9ub2RlJyk7XG4gICAgb2JqIyMuZGVzdHJveVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBkb21fbm9kZSAtPlxuICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgZGVzdHJveSBwcmV2X3N0YXRlIGRvbV9ub2RlO1xuICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZSk7XG4gICAgTm9kZS50X29mX2pzIChvanNfb2ZfanMgb2JqKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgVmRvbV9yYXcgPSBSYXdcblxubGV0ICgpID1cbiAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuOztcblxuKCoqIFRoaXMgaGFzIDMga2luZHMgb2YgY29uc3RydWN0b3JzLlxuICAgIHt2XG4gICAgICAtIGNvbnN0cnVjdG9ycyBmb3IgcHJvcGVydGllcyAvIGF0dHJpYnV0ZXMgZm9yIHdoaWNoIHdlXG4gICAgICAgIGhhdmUgd3JpdHRlbiBmaXJzdCBjbGFzcyBvY2FtbCByZXByZXNlbnRhdGlvbnMgKHNvIGZhciBvbmx5IFN0eWxlLFxuICAgICAgICBDbGFzcywgYW5kIEhhbmRsZXIpXG5cbiAgICAgIC0gVGhvc2Ugd2hpY2ggd2UgaW1tZWRpYXRlbHkgY29udmVydCBpbnRvIEpzIGNhbGxlZCBSYXcsIHdoaWNoXG4gICAgICAgIGluIHR1cm4gaGFzIHR3byBjYXNlczpcbiAgICAgICAgLSBQcm9wZXJ0eSBmb3IgcHJvcGVydGllcyBvbiB0aGUgRE9NXG4gICAgICAgIC0gQXR0cmlidXRlIGZvciBhdHRyaWJ1dGVzIG9uIHRoZSBET01cblxuICAgICAgLSBIb29rcywgd2hpY2ggcmVnaXN0ZXIgY2FsbGJhY2tzIG9uIHByb3BlcnR5IGFkZGl0aW9uIGFuZCByZW1vdmFsLlxuICAgIHZ9XG5cbiAgICBHZW5lcmFsbHkgc3BlYWtpbmcgb25lIHNob3VsZCBhdm9pZCBjcmVhdGluZyBhIHByb3BlcnR5IG9yIGF0dHJpYnV0ZVxuICAgIGZvciBzb21ldGhpbmcgZm9yIHdoaWNoIHdlIGhhdmUgYSBmaXJzdCBjbGFzcyByZXByZXNlbnRhdGlvbi5cbiopXG5cbm1vZHVsZSBFdmVudF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgaGFuZGxlciA6ICgjRG9tX2h0bWwuZXZlbnQgYXMgJ2EpIEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudFxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgY29tYmluZVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBsdGlkOyBoYW5kbGVyID0gbGhhbmRsZXIgfSlcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gcnRpZDsgaGFuZGxlciA9IHJoYW5kbGVyIH0gYXMgcmlnaHQpXG4gICAgPVxuICAgICgqIElmIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSB3aXRuZXNzLCB0aGVuIGl0IGlzIGEgYnVnIGluIHZpcnR1YWxfZG9tLCBzaW5jZVxuICAgICAgIHdlIGRvIG5vdCBleHBvc2UgW29uXSBhbnltb3JlIHdoaWNoIG1lYW5zIHRoaXMgbGlicmFyeSBjYW4gZGV0ZXJtaW5lZCB0aGVcbiAgICAgICBbVHlwZV9lcXVhbC5JZF0gY29ycmVzcG9uZGluZyB0byBlYWNoIGV2ZW50LiB2aXJ0dWFsX2RvbSBtYWludGFpbnMgdGhlXG4gICAgICAgaW52YXJpYW50IHRoYXQgYW55IHR3byBldmVudHMgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgcHJvZHVjZSBoYW5kbGVyc1xuICAgICAgIHRoYXQgaGF2ZSB0aGUgc2FtZSBbVHlwZV9lcXVhbC5JZF0uICopXG4gICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbHRpZCBydGlkIHdpdGhcbiAgICB8IFNvbWUgVCAtPlxuICAgICAgVFxuICAgICAgICB7IHR5cGVfaWQgPSBsdGlkXG4gICAgICAgIDsgaGFuZGxlciA9XG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgICBFZmZlY3Quc2VxdWVuY2VfYXNfc2libGluZyAobGhhbmRsZXIgdmFsdWUpIH51bmxlc3Nfc3RvcHBlZDooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJoYW5kbGVyIHZhbHVlKSlcbiAgICAgICAgfVxuICAgIHwgTm9uZSAtPlxuICAgICAgZXByaW50X3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCVUchICBUeXBlLWlkcyBmb3IgZXZlbnQgaGFuZGxlcnMgZGlmZmVyXCJcbiAgICAgICAgICAgIChsdGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgICAgICAocnRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KV07XG4gICAgICByaWdodFxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHwgUHJvcGVydHkgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgQXR0cmlidXRlIG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEhhbmRsZXIgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBoYW5kbGVyIDogRXZlbnRfaGFuZGxlci50XG4gICAgICB9XG4gIHwgSG9vayBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhvb2sgOiBIb29rcy50XG4gICAgICB9XG4gIHwgU3R5bGUgb2YgQ3NzX2dlbi50XG4gIHwgQ2xhc3Mgb2YgKHN0cmluZywgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgfCBNYW55IG9mIHQgbGlzdFxuICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgb2ZcbiAgICAgIHQgbGlzdCAqIChDc3NfZ2VuLnQgLT4gQ3NzX2dlbi50KSAqIChTdHJpbmcuU2V0LnQgLT4gU3RyaW5nLlNldC50KVxuICB8IE1hbnlfd2l0aG91dF9tZXJnZSBvZiB0IGxpc3RcblxubGV0IGNyZWF0ZSBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdCBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlXG4gICAgOyBuYW1lXG4gICAgOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKERvbV9mbG9hdC50b19qc19zdHJpbmcgdmFsdWUpXG4gICAgfVxuOztcblxubGV0IHByb3BlcnR5IG5hbWUgdmFsdWUgPSBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlIH1cblxubGV0IHN0cmluZ19wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgYm9vbF9wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuYm9vbCB2YWx1ZSkgfVxuOztcblxubGV0IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZnVuY3Rpb25cbiAgfCBBdHRyaWJ1dGUgYXR0cmlidXRlIC0+IEF0dHJpYnV0ZSB7IGF0dHJpYnV0ZSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgUHJvcGVydHkgcHJvcGVydHkgLT4gUHJvcGVydHkgeyBwcm9wZXJ0eSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY3JlYXRlX2hvb2sgbmFtZSBob29rID0gSG9vayB7IG5hbWU7IGhvb2sgfVxubGV0IG1hbnkgYXR0cnMgPSBNYW55IGF0dHJzXG5sZXQgbWFueV93aXRob3V0X21lcmdlIGF0dHJzID0gTWFueV93aXRob3V0X21lcmdlIGF0dHJzXG5sZXQgZW1wdHkgPSBNYW55IFtdXG5sZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbmxldCAoIEAgKSA9IGNvbWJpbmVcblxuZXh0ZXJuYWwgb2pzX29mX2FueSA6IEpzLlVuc2FmZS5hbnkgLT4gR2VuX2pzX2FwaS5PanMudCA9IFwiJWlkZW50aXR5XCJcblxubW9kdWxlIFVubWVyZ2VkX3dhcm5pbmdfbW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9fd2FybmluZ3NcbiAgICB8IEFsbF93YXJuaW5nc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBvZiBpbnRcblxuICBsZXQgd2FybmluZ19jb3VudCA9IHJlZiAwXG4gIGxldCBjdXJyZW50ID0gcmVmIChTdG9wX2FmdGVyX3F1b3RhIDEwMClcblxuICBsZXQgd2Fybl9zIHMgPVxuICAgIGluY3Igd2FybmluZ19jb3VudDtcbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb193YXJuaW5ncyAtPiAoKVxuICAgIHwgQWxsX3dhcm5pbmdzIC0+IGVwcmludF9zIHNcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgcXVvdGEgLT5cbiAgICAgIGxldCB3YXJuaW5nX2NvdW50ID0gIXdhcm5pbmdfY291bnQgaW5cbiAgICAgIGlmIHdhcm5pbmdfY291bnQgPD0gcXVvdGFcbiAgICAgIHRoZW4gKFxuICAgICAgICBlcHJpbnRfcyBzO1xuICAgICAgICBpZiB3YXJuaW5nX2NvdW50ID0gcXVvdGFcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVwcmludF9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJXQVJOSU5HOiByZWFjaGVkIHdhcm5pbmcgbWVzc2FnZSBxdW90YTsgbm8gbW9yZSBtZXNzYWdlcyB3aWxsIGJlIHByaW50ZWRcIlxuICAgICAgICAgICAgICAgIChxdW90YSA6IGludCldKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCByZXNldF93YXJuaW5nX2NvdW50ICgpID0gd2FybmluZ19jb3VudCA6PSAwXG4gIGVuZFxuZW5kXG5cbnR5cGUgbWVyZ2UgPVxuICB7IHN0eWxlcyA6IENzc19nZW4udFxuICA7IGNsYXNzZXMgOiBTZXQuTShTdHJpbmcpLnRcbiAgOyBoYW5kbGVycyA6IEV2ZW50X2hhbmRsZXIudCBNYXAuTShTdHJpbmcpLnRcbiAgOyBob29rcyA6IEhvb2tzLnQgTWFwLk0oU3RyaW5nKS50XG4gIH1cblxubGV0IGNvbWJpbmluZ19tYXBfYWRkIG1hcCBrZXkgdmFsdWUgfmNvbWJpbmUgPVxuICBNYXAudXBkYXRlIG1hcCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBTb21lIGV4aXN0aW5nX3ZhbHVlIC0+IGNvbWJpbmUgfmtleSBleGlzdGluZ192YWx1ZSB2YWx1ZVxuICAgIHwgTm9uZSAtPiB2YWx1ZSlcbjs7XG5cbmxldCBlbXB0eV9tZXJnZSA9XG4gIHsgc3R5bGVzID0gQ3NzX2dlbi5lbXB0eVxuICA7IGNsYXNzZXMgPSBTZXQuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaGFuZGxlcnMgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaG9va3MgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIH1cbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIGxldCBhdHRycyA9IFsgYXR0ciBdIGluXG4gICgqIFdoZW4gaW5wdXQgZWxlbWVudHMgaGF2ZSB0aGVpciB2YWx1ZSBzZXQgdG8gd2hhdCBpdCBhbHJlYWR5IGlzXG4gICAgIHRoZSBjdXJzb3IgZ2V0cyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZCBldmVuIHdoZW4gdGhlIHVzZXJcbiAgICAgaXMgZWRpdGluZyBpbiB0aGUgbWlkZGxlLiBTb2Z0U2V0SG9vayAoZnJvbSAuL3NvZnQtc2V0LWhvb2suanMpXG4gICAgIGNvbXBhcmVzIGJlZm9yZSBzZXR0aW5nLCBhdm9pZGluZyB0aGUgcHJvYmxlbSBqdXN0IGxpa2UgaW5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9pbmRleC5qcyNMNDMtTDUxXG5cbiAgICAgbm90ZSB0aGF0IEVsbSdzIHZpcnR1YWwtZG9tIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyBzb1xuICAgICBpZiB3ZSBzd2l0Y2ggdG8gdGhhdCB0aGUgd29ya2Fyb3VuZCBoZXJlIHdpbGwgYmUgdW5uZWNlc3NhcnkuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9lbG0tbGFuZy92aXJ0dWFsLWRvbS9ibG9iLzE3YjMwZmI3ZGU0ODY3MjU2NWQ2MjI3ZDMzYzAxNzZmMDc1Nzg2ZGIvc3JjL05hdGl2ZS9WaXJ0dWFsRG9tLmpzI0w0MzQtTDQzOVxuICAqKVxuICBsZXQgYXR0cnNfb2JqIDogVmRvbV9yYXcuQXR0cnMudCA9IFZkb21fcmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAoKiBbdGFrZV9zZWNvbmRfKl0gaXMgdGhlIHRyaXZpYWwgbWVyZ2UgZnVuY3Rpb24gKGkuZS4gbm8gbWVyZ2UgYXQgYWxsKTsgaXRcbiAgICAgdGFrZXMgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUga2luZCwgaWdub3JlcyBhIGZpcnN0LCBhbmQgZW1pdHNcbiAgICAgYSB3YXJuaW5nIGlmIFt3YXJuX2Fib3V0X3VubWVyZ2VkX2F0dHJpYnV0ZXNdIGlzIGVuYWJsZWQuICopXG4gIGxldCB0YWtlX3NlY29uZF9zdHlsZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgc3R5bGVzXCIgKGZpcnN0IDogQ3NzX2dlbi50KSAoc2Vjb25kIDogQ3NzX2dlbi50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9jbGFzc2VzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChTZXQuaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgY2xhc3Nlc1wiIChmaXJzdCA6IFN0cmluZy5TZXQudCkgKHNlY29uZCA6IFN0cmluZy5TZXQudCldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaGFuZGxlciB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBoYW5kbGVyc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9ob29rIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaG9va3NcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICAoKiBXZSBtZXJnZSBhdHRyaWJ1dGVzIHdoZW4gdGhleSBhcmUgd3JpdHRlbiB0byB0aGUgcmF3IGF0dHJpYnV0ZSBvYmplY3QsXG4gICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHVzZXItZmFjaW5nIG1lcmdlIGZ1bmN0aW9ucyAoW21hbnldLCBbY29tYmluZV0sIGFuZFxuICAgICBbQF0pIGFyZSBjYWxsZWQuIFRoaXMgc3RyYXRlZ3kgaXMgYmV0dGVyIGluIGJvdGggc3BlZWQgYW5kIG1lbW9yeSB1c2FnZSxcbiAgICAgc2luY2UgaXQgbWVhbnMgd2UgZG8gbm90IG5lZWQgdG8gY29uY2F0ZW5hdGUgdGhlIGxpc3Qgb2YgXCJ1bm1lcmdlYWJsZVwiXG4gICAgIGF0dHJpYnV0ZXMgKFByb3BlcnR5IGFuZCBBdHRyaWJ1dGUpOyBpbnN0ZWFkLCB3ZSBjYW4gaXRlcmF0ZSB0aHJvdWdoIHRoZVxuICAgICB0cmVlIG9mIGF0dHJpYnV0ZXMgYW5kIGVhZ2VybHkgd3JpdGUgdW5tZXJnZWFibGUgYXR0cmlidXRlcyB0byB0aGVcbiAgICAgYXR0cmlidXRlIG9iamVjdCBhcyB3ZSBmaW5kIHRoZW0uIElmIHR3byB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIGhhdmUgdGhlXG4gICAgIHNhbWUgbmFtZSwgdGhlIHNlY29uZCB3aWxsIHNpbXBseSBvdmVyd3JpdGUgdGhlIGZpcnN0LCBhcyBkZXNpcmVkLlxuXG4gICAgIEluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBleGlzdGluZyBiZWhhdmlvciBvZiB0aGUgW011bHRpXSBtb2R1bGUgKHRoYXQgaXMsXG4gICAgIGl0IG11c3QgYmUgcG9zc2libGUgdG8gbWVyZ2UgY2xhc3NlcyBhbmQgc3R5bGVzLCBidXQgbm90IGhvb2tzIGFuZFxuICAgICBoYW5kbGVycyksIHdlIGludHJvZHVjZSB0aGUgd29ya2Fyb3VuZCBjb25zdHJ1Y3RvclxuICAgICBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10uXG5cbiAgICAgVGhlcmUgYXJlIHRodXMgdGhyZWUgY2FzZXMgdGhhdCBlYWNoIGhhdmUgZGlmZmVyZW50IG1lcmdlIGJlaGF2aW9yczpcbiAgICAgLSBTaW1wbGUgbGlzdHMgLSBubyBtZXJnaW5nXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55XSAtIG1lcmdlcyBjbGFzc2VzLCBzdHlsZXMsIGhvb2tzLCBhbmQgaGFuZGxlcnNcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdIC0gbWVyZ2VzIGNsYXNzZXMgYW5kIHN0eWxlc1xuXG4gICAgIFRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSBtYXRjaCBleHByZXNzaW9uIGxvZ2ljLCB3ZSBwYXJlbWV0ZXJpemUgaXQgYnkgdGhlXG4gICAgIG1lcmdpbmcgYmVoYXZpb3IsIHNpbmNlIFwibm8gbWVyZ2VcIiByZWFsbHkgbWVhbnMgXCJtZXJnZSBieSB0YWtpbmcgdGhlXG4gICAgIHNlY29uZCBvbmVcIi4gKilcbiAgbGV0IHJlYyBtZXJnZSB+Y29tYmluZV9ob29rIH5jb21iaW5lX2hhbmRsZXIgfmNvbWJpbmVfc3R5bGVzIH5jb21iaW5lX2NsYXNzZXMgYWNjID1cbiAgICBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIGF0dHIgLT5cbiAgICAgIG1hdGNoIGF0dHIgd2l0aFxuICAgICAgfCBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHByb3BlcnRpZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgICB8IFwidmFsdWVcIiAtPlxuICAgICAgICAgICBsZXQgc29mdFNldEhvb2sgeCA6IEdlbl9qc19hcGkuT2pzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsICMjIFNvZnRTZXRIb29rIHggaW5cbiAgICAgICAgICAgbGV0IHZhbHVlID0gc29mdFNldEhvb2sgdmFsdWUgaW5cbiAgICAgICAgICAgVmRvbV9yYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInZhbHVlXCIgdmFsdWVcbiAgICAgICAgIHwgbmFtZSAtPiBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChvanNfb2ZfYW55IHZhbHVlKSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBBdHRyaWJ1dGUgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgYXR0cmlidXRlc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lIChvanNfb2ZfYW55IHZhbHVlKTtcbiAgICAgICAgYWNjXG4gICAgICB8IFN0eWxlIG5ld19zdHlsZXMgLT4geyBhY2Mgd2l0aCBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIG5ld19zdHlsZXMgfVxuICAgICAgfCBDbGFzcyBuZXdfY2xhc3NlcyAtPlxuICAgICAgICB7IGFjYyB3aXRoIGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgbmV3X2NsYXNzZXMgfVxuICAgICAgfCBIb29rIHsgbmFtZTsgaG9vayB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGggaG9va3MgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaG9va3MgbmFtZSBob29rIH5jb21iaW5lOmNvbWJpbmVfaG9vayB9XG4gICAgICB8IEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aFxuICAgICAgICAgIGhhbmRsZXJzID1cbiAgICAgICAgICAgIGNvbWJpbmluZ19tYXBfYWRkIGFjYy5oYW5kbGVycyBuYW1lIGhhbmRsZXIgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIH1cbiAgICAgIHwgTWFueSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazooZnVuIH5rZXk6XyAtPiBIb29rcy5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjooZnVuIH5rZXk6XyAtPiBFdmVudF9oYW5kbGVyLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOlNldC51bmlvblxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgbWFwX3N0eWxlcywgbWFwX2NsYXNzZXMpIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpTZXQudW5pb25cbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IG1hcF9zdHlsZXMgKGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlcylcbiAgICAgICAgOyBjbGFzc2VzID0gbWFwX2NsYXNzZXMgKGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3NlcylcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9KVxuICBpblxuICBsZXQgbWVyZ2UgPVxuICAgIG1lcmdlXG4gICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICBlbXB0eV9tZXJnZVxuICAgICAgYXR0cnNcbiAgaW5cbiAgTWFwLml0ZXJpIG1lcmdlLmhvb2tzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOmhvb2sgLT5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChvanNfb2ZfYW55IChIb29rcy5wYWNrIGhvb2spKSk7XG4gIE1hcC5pdGVyaSBtZXJnZS5oYW5kbGVycyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTooRXZlbnRfaGFuZGxlci5UIHsgaGFuZGxlcjsgXyB9KSAtPlxuICAgIGxldCBmIGUgPVxuICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGUgZSAoaGFuZGxlciBlKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5XG4gICAgICBhdHRyc19vYmpcbiAgICAgIChcIm9uXCIgXiBuYW1lKVxuICAgICAgKG9qc19vZl9hbnkgKEpzLlVuc2FmZS5pbmplY3QgKERvbS5oYW5kbGVyIGYpKSkpO1xuICBsZXQgKCkgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBtZXJnZS5zdHlsZXMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJvcHMgPSBDc3NfZ2VuLnRvX3N0cmluZ19saXN0IG1lcmdlLnN0eWxlcyBpblxuICAgICAgbGV0IG9iaiA9IEdlbl9qc19hcGkuT2pzLmVtcHR5X29iaiAoKSBpblxuICAgICAgTGlzdC5pdGVyIHByb3BzIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIEdlbl9qc19hcGkuT2pzLnNldF9wcm9wX2FzY2lpIG9iaiBrIChHZW5fanNfYXBpLk9qcy5zdHJpbmdfdG9fanMgdikpO1xuICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJzdHlsZVwiIG9iailcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBTZXQuaXNfZW1wdHkgbWVyZ2UuY2xhc3Nlc1xuICAgIHRoZW4gKClcbiAgICBlbHNlXG4gICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZVxuICAgICAgICBhdHRyc19vYmpcbiAgICAgICAgXCJjbGFzc1wiXG4gICAgICAgIChHZW5fanNfYXBpLk9qcy5zdHJpbmdfdG9fanMgKFN0cmluZy5jb25jYXQgKFNldC50b19saXN0IG1lcmdlLmNsYXNzZXMpIH5zZXA6XCIgXCIpKVxuICBpblxuICBhdHRyc19vYmpcbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIG1hdGNoIGF0dHIgd2l0aFxuICB8IE1hbnkgW10gfCBNYW55X3dpdGhvdXRfbWVyZ2UgW10gLT4gUmF3LkF0dHJzLmNyZWF0ZSAoKVxuICB8IGF0dHIgLT4gdG9fcmF3IGF0dHJcbjs7XG5cbmxldCBzdHlsZSBjc3MgPSBTdHlsZSBjc3NcblxubGV0IHZhbGlkX2NsYXNzX25hbWUgcyA9XG4gIGxldCBpbnZhbGlkID0gU3RyaW5nLmlzX2VtcHR5IHMgfHwgU3RyaW5nLmV4aXN0cyBzIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSBpblxuICBub3QgaW52YWxpZFxuOztcblxubGV0JXRlc3QgXCJ2YWxpZFwiID0gdmFsaWRfY2xhc3NfbmFtZSBcImZvby1iYXJcIlxubGV0JXRlc3QgXCJpbnZhbGlkLWVtcHR5XCIgPSBub3QgKHZhbGlkX2NsYXNzX25hbWUgXCJcIilcbmxldCV0ZXN0IFwiaW52YWxpZC1zcGFjZVwiID0gbm90ICh2YWxpZF9jbGFzc19uYW1lIFwiZm9vIGJhclwiKVxuXG5sZXQgY2xhc3NfIGNsYXNzbmFtZSA9XG4gIGlmIG5vdCAodmFsaWRfY2xhc3NfbmFtZSBjbGFzc25hbWUpXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIGNsYXNzbmFtZVwiIChjbGFzc25hbWUgOiBzdHJpbmcpXTtcbiAgQ2xhc3MgKFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmcpIGNsYXNzbmFtZSlcbjs7XG5cbmxldCBjbGFzc2VzJyBjbGFzc2VzID0gQ2xhc3MgY2xhc3Nlc1xuXG5sZXQgY2xhc3NlcyBjbGFzc25hbWVzID1cbiAgaWYgbm90IChMaXN0LmZvcl9hbGwgfmY6dmFsaWRfY2xhc3NfbmFtZSBjbGFzc25hbWVzKVxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiaW52YWxpZCBjbGFzc25hbWVzXCIgKGNsYXNzbmFtZXMgOiBzdHJpbmcgbGlzdCldO1xuICBjbGFzc2VzJyAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIGNsYXNzbmFtZXMpXG47O1xuXG5sZXQgaWQgcyA9IGNyZWF0ZSBcImlkXCIgc1xubGV0IG5hbWUgcyA9IGNyZWF0ZSBcIm5hbWVcIiBzXG5sZXQgaHJlZiByID0gY3JlYXRlIFwiaHJlZlwiIHJcbmxldCB0YXJnZXQgcyA9IGNyZWF0ZSBcInRhcmdldFwiIHNcbmxldCBjaGVja2VkID0gY3JlYXRlIFwiY2hlY2tlZFwiIFwiXCJcbmxldCBzZWxlY3RlZCA9IGNyZWF0ZSBcInNlbGVjdGVkXCIgXCJcIlxubGV0IGhpZGRlbiA9IGNyZWF0ZSBcImhpZGRlblwiIFwiXCJcbmxldCByZWFkb25seSA9IGNyZWF0ZSBcInJlYWRvbmx5XCIgXCJcIlxubGV0IGRpc2FibGVkID0gY3JlYXRlIFwiZGlzYWJsZWRcIiBcIlwiXG5sZXQgcGxhY2Vob2xkZXIgeCA9IGNyZWF0ZSBcInBsYWNlaG9sZGVyXCIgeFxuXG5sZXQgYXV0b2ZvY3VzID0gZnVuY3Rpb25cbiAgfCB0cnVlIC0+IGNyZWF0ZSBcImF1dG9mb2N1c1wiIFwiXCJcbiAgfCBmYWxzZSAtPiBlbXB0eVxuOztcblxubGV0IGZvcl8geCA9IGNyZWF0ZSBcImZvclwiIHhcbmxldCB0eXBlXyB4ID0gY3JlYXRlIFwidHlwZVwiIHhcbmxldCB2YWx1ZSB4ID0gY3JlYXRlIFwidmFsdWVcIiB4XG5sZXQgdmFsdWVfcHJvcCB4ID0gc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB4XG5sZXQgdGFiaW5kZXggeCA9IGNyZWF0ZSBcInRhYmluZGV4XCIgKEludC50b19zdHJpbmcgeClcbmxldCB0aXRsZSB4ID0gY3JlYXRlIFwidGl0bGVcIiB4XG5sZXQgc3JjIHggPSBjcmVhdGUgXCJzcmNcIiB4XG5sZXQgbWluIHggPSBjcmVhdGVfZmxvYXQgXCJtaW5cIiB4XG5sZXQgbWF4IHggPSBjcmVhdGVfZmxvYXQgXCJtYXhcIiB4XG5sZXQgY29sc3BhbiB4ID0gY3JlYXRlIFwiY29sc3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgcm93c3BhbiB4ID0gY3JlYXRlIFwicm93c3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgZHJhZ2dhYmxlIGIgPSBjcmVhdGUgXCJkcmFnZ2FibGVcIiAoQm9vbC50b19zdHJpbmcgYilcblxubW9kdWxlIFR5cGVfaWQgPSBzdHJ1Y3RcbiAgKCogV2UgcHJvdmlkZSBhIHRyaXZpYWwgW3RvX3NleHBdIGZ1bmN0aW9uIHNpbmNlIHdlIG9ubHkgd2FudFxuICAgICB0byB1bmlmeSB0eXBlIGlkcyBhbmQgbm90IGNvbnZlcnQgdHlwZXMgdG8gaWRzICopXG4gIGxldCBjcmVhdGUgbmFtZSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIChmdW4gXyAtPiBTZXhwbGliLlNleHAuTGlzdCBbXSlcbiAgbGV0IChldmVudCA6IERvbV9odG1sLmV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJldmVudFwiXG4gIGxldCAoZm9jdXMgOiBEb21faHRtbC5mb2N1c0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJmb2N1c0V2ZW50XCJcbiAgbGV0IChtb3VzZSA6IERvbV9odG1sLm1vdXNlRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNlRXZlbnRcIlxuICBsZXQgKGtleWJvYXJkIDogRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwia2V5Ym9hcmRFdmVudFwiXG4gIGxldCAoc3VibWl0IDogRG9tX2h0bWwuc3VibWl0RXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInN1Ym1pdEV2ZW50XCJcbiAgbGV0IChtb3VzZXdoZWVsIDogRG9tX2h0bWwubW91c2V3aGVlbEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZXdoZWVsRXZlbnRcIlxuICBsZXQgKGNsaXBib2FyZCA6IERvbV9odG1sLmNsaXBib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJjbGlwYm9hcmRFdmVudFwiXG4gIGxldCAoZHJhZyA6IERvbV9odG1sLmRyYWdFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZHJhZ0V2ZW50XCJcbiAgbGV0IChwb2ludGVyIDogRG9tX2h0bWwucG9pbnRlckV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJwb2ludGVyRXZlbnRcIlxuICBsZXQgKGFuaW1hdGlvbiA6IERvbV9odG1sLmFuaW1hdGlvbkV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJhbmltYXRpb25FdmVudFwiXG5lbmRcblxubGV0IG9uIHR5cGVfaWQgbmFtZSAoaGFuZGxlciA6ICNEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQpIDogdCA9XG4gIEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyID0gVCB7IGhhbmRsZXI7IHR5cGVfaWQgfSB9XG47O1xuXG5sZXQgb25fZm9jdXMgPSBvbiBUeXBlX2lkLmZvY3VzIFwiZm9jdXNcIlxubGV0IG9uX2JsdXIgPSBvbiBUeXBlX2lkLmZvY3VzIFwiYmx1clwiXG5sZXQgb25fY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY2xpY2tcIlxubGV0IG9uX2NvbnRleHRtZW51ID0gb24gVHlwZV9pZC5tb3VzZSBcImNvbnRleHRtZW51XCJcbmxldCBvbl9kb3VibGVfY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiZGJsY2xpY2tcIlxubGV0IG9uX2RyYWcgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnXCJcbmxldCBvbl9kcmFnc3RhcnQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnc3RhcnRcIlxubGV0IG9uX2RyYWdlbmQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW5kXCJcbmxldCBvbl9kcmFnZW50ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW50ZXJcIlxubGV0IG9uX2RyYWdsZWF2ZSA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdsZWF2ZVwiXG5sZXQgb25fZHJhZ292ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnb3ZlclwiXG5sZXQgb25fZHJvcCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyb3BcIlxubGV0IG9uX21vdXNlbW92ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW1vdmVcIlxubGV0IG9uX21vdXNldXAgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2V1cFwiXG5sZXQgb25fbW91c2Vkb3duID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZG93blwiXG5sZXQgb25fbW91c2VlbnRlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWVudGVyXCJcbmxldCBvbl9tb3VzZWxlYXZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbGVhdmVcIlxubGV0IG9uX21vdXNlb3ZlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW92ZXJcIlxubGV0IG9uX21vdXNlb3V0ID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3V0XCJcbmxldCBvbl9rZXl1cCA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXl1cFwiXG5sZXQgb25fa2V5cHJlc3MgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5cHJlc3NcIlxubGV0IG9uX2tleWRvd24gPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5ZG93blwiXG5sZXQgb25fc2Nyb2xsID0gb24gVHlwZV9pZC5ldmVudCBcInNjcm9sbFwiXG5sZXQgb25fc3VibWl0ID0gb24gVHlwZV9pZC5zdWJtaXQgXCJzdWJtaXRcIlxubGV0IG9uX3BvaW50ZXJkb3duID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcmRvd25cIlxubGV0IG9uX3BvaW50ZXJ1cCA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJ1cFwiXG5sZXQgb25fbW91c2V3aGVlbCA9IG9uIFR5cGVfaWQubW91c2V3aGVlbCBcIm1vdXNld2hlZWxcIlxubGV0IG9uX2NvcHkgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImNvcHlcIlxubGV0IG9uX2N1dCA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY3V0XCJcbmxldCBvbl9wYXN0ZSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwicGFzdGVcIlxubGV0IG9uX3Jlc2V0ID0gb24gVHlwZV9pZC5ldmVudCBcInJlc2V0XCJcbmxldCBvbl9hbmltYXRpb25lbmQgPSBvbiBUeXBlX2lkLmFuaW1hdGlvbiBcImFuaW1hdGlvbmVuZFwiXG5sZXQgY29uc3RfaWdub3JlIF8gPSBFZmZlY3QuSWdub3JlXG5cbmNsYXNzIHR5cGUgdmFsdWVfZWxlbWVudCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgRG9tX2h0bWwuZWxlbWVudFxuICAgIG1ldGhvZCB2YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbnR5cGUgdmFsdWVfY29lcmNpb24gPSBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmFsdWVfZWxlbWVudCBKcy50IEpzLm9wdFxuXG5sZXQgcnVuX2NvZXJjaW9uIGNvZXJjaW9uIHRhcmdldCBwcmV2ID1cbiAgbWF0Y2ggcHJldiB3aXRoXG4gIHwgU29tZSBfIC0+IHByZXZcbiAgfCBOb25lIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjaW9uIHRhcmdldClcbjs7XG5cbmxldCBjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQgPVxuICBsZXQgb3BlbiBEb21faHRtbC5Db2VyY2VUbyBpblxuICBOb25lXG4gIHw+IHJ1bl9jb2VyY2lvbiAoaW5wdXQgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHNlbGVjdCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAodGV4dGFyZWEgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuOztcblxubGV0IG9uX2lucHV0X2V2ZW50IHR5cGVfaWQgZXZlbnQgaGFuZGxlciA9XG4gIG9uIHR5cGVfaWQgZXZlbnQgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAoY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0KVxuICAgICAgICB+ZGVmYXVsdDpFZmZlY3QuSWdub3JlXG4gICAgICAgIH5mOihmdW4gdGFyZ2V0IC0+XG4gICAgICAgICAgbGV0IHRleHQgPSBKcy50b19zdHJpbmcgdGFyZ2V0IyMudmFsdWUgaW5cbiAgICAgICAgICBoYW5kbGVyIGV2IHRleHQpKSlcbjs7XG5cbmxldCBvbl9jaGFuZ2UgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiY2hhbmdlXCJcbmxldCBvbl9pbnB1dCA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiXG5sZXQgdG9fcmF3IGwgPSB0b19yYXcgbFxuXG5sZXQgb25fZmlsZV9pbnB1dCBoYW5kbGVyID1cbiAgb24gVHlwZV9pZC5ldmVudCBcImlucHV0XCIgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgSnMuT3B0LmNhc2UgKERvbV9odG1sLkNvZXJjZVRvLmlucHV0IHRhcmdldCkgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICAgIEpzLk9wdGRlZi5jYXNlIHRhcmdldCMjLmZpbGVzIGNvbnN0X2lnbm9yZSAoZnVuIGZpbGVzIC0+IGhhbmRsZXIgZXYgZmlsZXMpKSkpXG47O1xuXG5tb2R1bGUgQWx3YXlzX2ZvY3VzX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5pdFxuXG4gICAgICBsZXQgY29tYmluZSAoKSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCAoKSBfID0gKClcbiAgICBsZXQgb25fbW91bnQgKCkgKCkgZWxlbWVudCA9IGVsZW1lbnQjI2ZvY3VzXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0OigpIH5uZXdfaW5wdXQ6KCkgKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgKCkgKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcImFsd2F5cy1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTaW5nbGVfZm9jdXNfaG9vayAoKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIGxldCBoYXNfYmVlbl91c2VkID0gcmVmIGZhbHNlXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9ICh1bml0IFVpX2VmZmVjdC50W0BzZXhwLm9wYXF1ZV0pIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbiAgICBlbmRcblxuICAgIGxldCBpbml0IF8gXyA9ICgpXG5cbiAgICBsZXQgb25fbW91bnQgZXZlbnQgKCkgZWxlbWVudCA9XG4gICAgICBpZiBub3QgIWhhc19iZWVuX3VzZWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBoYXNfYmVlbl91c2VkIDo9IHRydWU7XG4gICAgICAgIGVsZW1lbnQjI2ZvY3VzO1xuICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biBldmVudClcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgfmFmdGVyID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJzaW5nbGUtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSBhZnRlcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcblxuICB0eXBlIGF0dHIgPSB0XG4gIHR5cGUgdCA9IGF0dHIgbGlzdFxuXG4gIGxldCBtYXBfc3R5bGUgdCB+ZiA9IFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgZiwgRm4uaWQpIF1cblxuICBsZXQgYWRkX2NsYXNzIHQgYyA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgZnVuIGNzIC0+IFNldC5hZGQgY3MgYykgXVxuICA7O1xuXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX3N0eWxlIHQgfmY6KGZ1biBzcyAtPiBDc3NfZ2VuLmNvbWJpbmUgc3MgcylcblxuICBsZXQgbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIHQgPVxuICAgIFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIEZuLmlkKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmVjIGZpbHRlcl9ieV9raW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUHJvcGVydHkgXyAtPiBpZiBmIGBQcm9wZXJ0eSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQXR0cmlidXRlIF8gLT4gaWYgZiBgQXR0cmlidXRlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIb29rIF8gLT4gaWYgZiBgSG9vayB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSGFuZGxlciBfIC0+IGlmIGYgYEhhbmRsZXIgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IFN0eWxlIF8gLT4gaWYgZiBgU3R5bGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IENsYXNzIF8gLT4gaWYgZiBgQ2xhc3MgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IE1hbnkgYXR0cnMgLT4gTWFueSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBhLCBiKSAtPlxuICAgICAgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSwgYSwgYilcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgTWFueV93aXRob3V0X21lcmdlIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICA7O1xuXG4gIGxldCByZWMgY29udGFpbnNfbmFtZSBsb29raW5nX2ZvciA9IGZ1bmN0aW9uXG4gICAgfCBQcm9wZXJ0eSB7IG5hbWU7IF8gfSB8IEF0dHJpYnV0ZSB7IG5hbWU7IF8gfSB8IEhvb2sgeyBuYW1lOyBfIH0gLT5cbiAgICAgIFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBuYW1lXG4gICAgfCBIYW5kbGVyIHsgbmFtZTsgXyB9IC0+IFN0cmluZy5lcXVhbCAoXCJvblwiIF4gbmFtZSkgbG9va2luZ19mb3JcbiAgICB8IFN0eWxlIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwic3R5bGVcIlxuICAgIHwgQ2xhc3MgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJjbGFzc1wiXG4gICAgfCBNYW55IGF0dHJzXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgXywgXylcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPiBMaXN0LmV4aXN0cyB+ZjooY29udGFpbnNfbmFtZSBsb29raW5nX2ZvcikgYXR0cnNcbiAgOztcbmVuZFxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHZhbCBldmVudF9raW5kIDogRG9tX2h0bWwubW91c2VFdmVudCBKcy50IERvbS5FdmVudC50eXBcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCBjb21iaW5lIGYgZyBldmVudCA9IFVpX2VmZmVjdC5NYW55IFsgZiBldmVudDsgZyBldmVudCBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBsaXN0ZW5lciA6IChEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFtAc2V4cC5vcGFxdWVdKSB9XG4gICAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgbGV0IHNldCBmID1cbiAgICAgICAgbGV0IGhhbmRsZXIgPVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIChmIGV2KTtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICBpblxuICAgICAgICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIERvbV9odG1sLndpbmRvdyBYLmV2ZW50X2tpbmQgaGFuZGxlciBKcy5fdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0IGluaXQgZiBfZWxlbWVudCA9IHsgU3RhdGUubGlzdGVuZXIgPSBzZXQgZiB9XG4gICAgICBsZXQgZGVzdHJveSBfaW5wdXQgc3RhdGUgX2VsZW1lbnQgPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIHN0YXRlLlN0YXRlLmxpc3RlbmVyXG5cbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmYgc3RhdGUgZWxlbWVudCA9XG4gICAgICAgICgqIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjaGFuZ2VzLCBjYW5jZWwgdGhlIG9sZCBvbmUgYW5kIHJlLWluc3RhbGwgKilcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgICAgbGV0IG5ld19zdGF0ZSA9IGluaXQgZiBlbGVtZW50IGluXG4gICAgICAgIHN0YXRlLlN0YXRlLmxpc3RlbmVyIDwtIG5ld19zdGF0ZS5saXN0ZW5lclxuICAgICAgOztcblxuICAgICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTW91c2VfdXAgPSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNldXBcbiAgZW5kKVxuXG5tb2R1bGUgTW91c2VfbW92ZSA9IE1ha2UgKHN0cnVjdFxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlXG4gIGVuZClcblxubGV0IG1vdXNldXAgZiA9IE1vdXNlX3VwLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2V1cC1saXN0ZW5lclwiXG5sZXQgbW91c2Vtb3ZlIGYgPSBNb3VzZV9tb3ZlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2Vtb3ZlLWxpc3RlbmVyXCJcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIGxldCBtb3VzZV91cF90eXBlX2lkID0gTW91c2VfdXAuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgbW91c2VfbW92ZV90eXBlX2lkID0gTW91c2VfbW92ZS5Gb3JfdGVzdGluZy50eXBlX2lkXG5lbmRcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIG9wZW4gSnNfb2Zfb2NhbWxcbiAgaW5jbHVkZSBSYXcuV2lkZ2V0XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgZG9tID0gcHJpdmF0ZSAjRG9tX2h0bWwuZWxlbWVudFxuXG4gICAgbW9kdWxlIElucHV0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBjcmVhdGUgOiBJbnB1dC50IC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIHVwZGF0ZVxuICAgICAgOiAgcHJldl9pbnB1dDpJbnB1dC50XG4gICAgICAtPiBpbnB1dDpJbnB1dC50XG4gICAgICAtPiBzdGF0ZTpTdGF0ZS50XG4gICAgICAtPiBlbGVtZW50OmRvbSBKcy50XG4gICAgICAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCBkZXN0cm95IDogcHJldl9pbnB1dDpJbnB1dC50IC0+IHN0YXRlOlN0YXRlLnQgLT4gZWxlbWVudDpkb20gSnMudCAtPiB1bml0XG4gIGVuZFxuXG4gIGxldCBvZl9tb2R1bGUgKHR5cGUgaW5wdXQpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIElucHV0LnQgPSBpbnB1dCkgPVxuICAgIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5wdXQgOiBNLklucHV0LnRcbiAgICAgICAgOyBzdGF0ZSA6IE0uU3RhdGUudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IHNleHBfb2ZfZG9tIDogTS5kb20gSnMudCAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCI8b3BhcXVlPlwiIGluXG4gICAgbGV0IGlkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6TS5uYW1lIFslc2V4cF9vZjogU3RhdGUudCAqIGRvbV0gaW5cbiAgICBCYXNlLlN0YWdlZC5zdGFnZSAoZnVuIGlucHV0IC0+XG4gICAgICBsZXQgaW5mbyA9IGxhenkgKE0uSW5wdXQuc2V4cF9vZl90IGlucHV0KSBpblxuICAgICAgY3JlYXRlXG4gICAgICAgIH5pZFxuICAgICAgICB+aW5mb1xuICAgICAgICB+aW5pdDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS5jcmVhdGUgaW5wdXQgaW5cbiAgICAgICAgICB7IGlucHV0OyBzdGF0ZSB9LCBlbGVtZW50KVxuICAgICAgICB+dXBkYXRlOihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0udXBkYXRlIH5wcmV2X2lucHV0IH5pbnB1dCB+c3RhdGUgfmVsZW1lbnQgaW5cbiAgICAgICAgICB7IGlucHV0OyBzdGF0ZSB9LCBlbGVtZW50KVxuICAgICAgICB+ZGVzdHJveTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBNLmRlc3Ryb3kgfnByZXZfaW5wdXQgfnN0YXRlIH5lbGVtZW50KVxuICAgICAgICAoKSlcbiAgOztcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB7IHRhZyA6IHN0cmluZ1xuICA7IGtleSA6IHN0cmluZyBvcHRpb25cbiAgOyBhdHRycyA6IEF0dHIudFxuICA7IHJhd19hdHRycyA6IFJhdy5BdHRycy50IExhenkudFxuICA7IGNoaWxkcmVuIDogUmF3Lk5vZGUudCBKcy5qc19hcnJheSBKcy50XG4gIDsga2luZCA6IFsgYFZub2RlIHwgYFN2ZyBdXG4gIH1cblxuYW5kIHQgPVxuICB8IE5vbmVcbiAgfCBUZXh0IG9mIHN0cmluZ1xuICB8IEVsZW1lbnQgb2YgZWxlbWVudFxuICB8IFdpZGdldCBvZiBXaWRnZXQudFxuXG5tb2R1bGUgQWxpYXNlcyA9IHN0cnVjdFxuICB0eXBlIG5vZGVfY3JlYXRvciA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyOkF0dHIudCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIG5vZGVfY3JlYXRvcl9jaGlsZGxlc3MgPSA/a2V5OnN0cmluZyAtPiA/YXR0cjpBdHRyLnQgLT4gdW5pdCAtPiB0XG5lbmRcblxubW9kdWxlIEVsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZWxlbWVudFxuXG4gIGxldCB0YWcgdCA9IHQudGFnXG4gIGxldCBhdHRycyB0ID0gdC5hdHRyc1xuICBsZXQga2V5IHQgPSB0LmtleVxuICBsZXQgd2l0aF9rZXkgdCBrZXkgPSB7IHQgd2l0aCBrZXkgPSBTb21lIGtleSB9XG5cbiAgbGV0IG1hcF9hdHRycyB0IH5mID1cbiAgICBsZXQgYXR0cnMgPSBmIHQuYXR0cnMgaW5cbiAgICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gICAgeyB0IHdpdGggYXR0cnM7IHJhd19hdHRycyB9XG4gIDs7XG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzXyBjKSlcbiAgbGV0IGFkZF9jbGFzc2VzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NlcyBjKSlcbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIHN0eWxlIHMpKVxuZW5kXG5cbmxldCB0X3RvX2pzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgKCogV2Ugbm9ybWFsbHkgZmlsdGVyIHRoZXNlIG91dCwgYnV0IGlmIFt0b19qc10gaXMgY2FsbGVkIGRpcmVjdGx5IG9uIGEgW05vbmVdIG5vZGUsXG4gICAgICAgd2UgdXNlIHRoaXMgaGFjay4gQXNpZGUgZnJvbSBoYXZpbmcgYSBbVGV4dF0gbm9kZSB3aXRob3V0IGFueSB0ZXh0IHByZXNlbnQgaW4gdGhlXG4gICAgICAgRG9tLCB0aGVyZSBzaG91bGQgYmUgbm8gdW53YW50ZWQgc2lkZS1lZmZlY3RzLiAgSW4gYW4gSW5jcl9kb20gYXBwbGljYXRpb24sIHRoaXNcbiAgICAgICBjYW4gb25seSBoYXBwZW4gd2hlbiB0aGUgcm9vdCB2aWV3IEluY3JlbWVudGFsIGlzIGluaGFiaXRlZCBieSBhIFtOb25lXS4gKilcbiAgICBSYXcuTm9kZS50ZXh0IFwiXCJcbiAgfCBUZXh0IHMgLT4gUmF3Lk5vZGUudGV4dCBzXG4gIHwgRWxlbWVudCB7IHRhZzsga2V5OyBhdHRycyA9IF87IHJhd19hdHRycyA9IChsYXp5IHJhd19hdHRycyk7IGNoaWxkcmVuOyBraW5kID0gYFZub2RlIH1cbiAgICAtPiBSYXcuTm9kZS5ub2RlIHRhZyByYXdfYXR0cnMgY2hpbGRyZW4ga2V5XG4gIHwgRWxlbWVudCB7IHRhZzsga2V5OyBhdHRycyA9IF87IHJhd19hdHRycyA9IChsYXp5IHJhd19hdHRycyk7IGNoaWxkcmVuOyBraW5kID0gYFN2ZyB9XG4gICAgLT4gUmF3Lk5vZGUuc3ZnIHRhZyByYXdfYXR0cnMgY2hpbGRyZW4ga2V5XG4gIHwgV2lkZ2V0IHcgLT4gd1xuOztcblxubGV0IGVsZW1lbnQga2luZCB+dGFnIH5rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgY2hpbGRyZW5fcmF3ID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gIExpc3QuaXRlciBjaGlsZHJlbiB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IChUZXh0IF8gfCBFbGVtZW50IF8gfCBXaWRnZXQgXykgYXMgb3RoZXIgLT5cbiAgICAgIGxldCAoXyA6IGludCkgPSBjaGlsZHJlbl9yYXcjI3B1c2ggKHRfdG9fanMgb3RoZXIpIGluXG4gICAgICAoKSk7XG4gIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgeyBraW5kOyB0YWc7IGtleTsgYXR0cnM7IHJhd19hdHRyczsgY2hpbGRyZW4gPSBjaGlsZHJlbl9yYXcgfVxuOztcblxubGV0IGVsZW1lbnRfZXhwZXJ0IGtpbmQgfnRhZyA/a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiB9XG47O1xuXG5sZXQgdGV4dCBzID0gVGV4dCBzXG5cbmxldCB3aWRnZXQgP2luZm8gP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkgPVxuICBXaWRnZXQgKFdpZGdldC5jcmVhdGUgP2luZm8gP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkpXG47O1xuXG5sZXQgY3JlYXRlIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgVm5vZGUgfnRhZyB+a2V5IGF0dHIgY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlX2NoaWxkbGVzcyB0YWcgP2tleSA/YXR0ciAoKSA9IGNyZWF0ZSB0YWcgP2tleSA/YXR0ciBbXVxuXG5sZXQgY3JlYXRlX3N2ZyB0YWcgP2tleSA/KGF0dHIgPSBBdHRyLmVtcHR5KSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFN2ZyB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleSA/KGF0dHIgPSBBdHRyLmVtcHR5KSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFN2ZyB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBub25lID0gTm9uZVxubGV0IHRleHRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiB0ZXh0IGZvcm1hdFxuXG5sZXQgd2lkZ2V0X29mX21vZHVsZSBtID1cbiAgbGV0IGYgPSBCYXNlLlN0YWdlZC51bnN0YWdlIChXaWRnZXQub2ZfbW9kdWxlIG0pIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaSAtPiBXaWRnZXQgKGYgaSkpXG47O1xuXG5sZXQgdG9fcmF3ID0gdF90b19qc1xubGV0IHRvX2RvbSB0ID0gUmF3Lk5vZGUudG9fZG9tICh0b19yYXcgdClcblxubGV0IGlubmVyX2h0bWxcbiAgICAgIGNyZWF0ZVxuICAgICAgfnRhZ1xuICAgICAgfmF0dHJcbiAgICAgIH50aGlzX2h0bWxfaXNfc2FuaXRpemVkX2FuZF9pc190b3RhbGx5X3NhZmVfdHJ1c3RfbWU6Y29udGVudFxuICA9XG4gIGxldCBlbGVtZW50ID0gY3JlYXRlIHRhZyB+YXR0ciBbXSBpblxuICBsZXQgYnVpbGRfc2V4cCB+ZXh0cmEgfmNvbnRlbnQgPVxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcImlubmVyLWh0bWxcIjsgZXh0cmE7IFNleHAuQXRvbSBjb250ZW50IF1cbiAgaW5cbiAgbGV0IGlkID1cbiAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcImlubmVyLWh0bWwtbm9kZVwiIChmdW4gKChlbGVtZW50LCBjb250ZW50KSwgXykgLT5cbiAgICAgIGJ1aWxkX3NleHAgfmV4dHJhOmVsZW1lbnQgfmNvbnRlbnQpXG4gIGluXG4gIGxldCBkZWJ1ZyA9XG4gICAgbWF0Y2ggZWxlbWVudCB3aXRoXG4gICAgfCBFbGVtZW50IGVsZW1lbnQgLT4gU2V4cC5BdG9tIChFbGVtZW50LnRhZyBlbGVtZW50KVxuICAgIHwgV2lkZ2V0IF8gLT4gZmFpbHdpdGggXCJWZG9tLk5vZGUuaW5uZXJfaHRtbCB3YXMgZ2l2ZW4gYSAnd2lkZ2V0J1wiXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiVmRvbS5Ob2RlLmlubmVyX2h0bWwgd2FzIGdpdmVuIGEgJ25vbmUnXCJcbiAgICB8IFRleHQgXyAtPiBmYWlsd2l0aCBcIlZkb20uTm9kZS5pbm5lcl9odG1sIHdhcyBnaXZlbiBhICd0ZXh0J1wiXG4gIGluXG4gIHdpZGdldFxuICAgIH5pZFxuICAgIH5pbmZvOihsYXp5IChidWlsZF9zZXhwIH5leHRyYTpkZWJ1ZyB+Y29udGVudCkpXG4gICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgbGV0IGVsZW1lbnQgPSB0b19kb20gZWxlbWVudCBpblxuICAgICAgZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgIChkZWJ1ZywgY29udGVudCksIGVsZW1lbnQpXG4gICAgKClcbjs7XG5cbmxldCBpbm5lcl9odG1sX3N2ZyA9IGlubmVyX2h0bWwgKGZ1biB0YWcgfmF0dHIgLT4gY3JlYXRlX3N2Z19tb25vaWQgdGFnID9rZXk6Tm9uZSB+YXR0cilcbmxldCBpbm5lcl9odG1sID0gaW5uZXJfaHRtbCAoZnVuIHRhZyB+YXR0ciAtPiBjcmVhdGUgdGFnID9rZXk6Tm9uZSB+YXR0cilcbmxldCBhID0gY3JlYXRlIFwiYVwiXG5sZXQgYm9keSA9IGNyZWF0ZSBcImJvZHlcIlxubGV0IGJ1dHRvbiA9IGNyZWF0ZSBcImJ1dHRvblwiXG5sZXQgY29kZSA9IGNyZWF0ZSBcImNvZGVcIlxubGV0IGRpdiA9IGNyZWF0ZSBcImRpdlwiXG5sZXQgbWFpbiA9IGNyZWF0ZSBcIm1haW5cIlxubGV0IGZpZWxkc2V0ID0gY3JlYXRlIFwiZmllbGRzZXRcIlxubGV0IGZvb3RlciA9IGNyZWF0ZSBcImZvb3RlclwiXG5sZXQgaDEgPSBjcmVhdGUgXCJoMVwiXG5sZXQgaDIgPSBjcmVhdGUgXCJoMlwiXG5sZXQgaDMgPSBjcmVhdGUgXCJoM1wiXG5sZXQgaDQgPSBjcmVhdGUgXCJoNFwiXG5sZXQgaDUgPSBjcmVhdGUgXCJoNVwiXG5sZXQgaDYgPSBjcmVhdGUgXCJoNlwiXG5sZXQgaGVhZGVyID0gY3JlYXRlIFwiaGVhZGVyXCJcbmxldCBodG1sID0gY3JlYXRlIFwiaHRtbFwiXG5sZXQgaW5wdXQgPSBjcmVhdGUgXCJpbnB1dFwiXG5sZXQgdGV4dGFyZWEgPSBjcmVhdGUgXCJ0ZXh0YXJlYVwiXG5sZXQgc2VsZWN0ID0gY3JlYXRlIFwic2VsZWN0XCJcbmxldCBvcHRpb24gPSBjcmVhdGUgXCJvcHRpb25cIlxubGV0IGxhYmVsID0gY3JlYXRlIFwibGFiZWxcIlxubGV0IGxpID0gY3JlYXRlIFwibGlcIlxubGV0IHAgPSBjcmVhdGUgXCJwXCJcbmxldCBwcmUgPSBjcmVhdGUgXCJwcmVcIlxubGV0IHNlY3Rpb24gPSBjcmVhdGUgXCJzZWN0aW9uXCJcbmxldCBzcGFuID0gY3JlYXRlIFwic3BhblwiXG5sZXQgc3Ryb25nID0gY3JlYXRlIFwic3Ryb25nXCJcbmxldCB0YWJsZSA9IGNyZWF0ZSBcInRhYmxlXCJcbmxldCB0Ym9keSA9IGNyZWF0ZSBcInRib2R5XCJcbmxldCB0ZCA9IGNyZWF0ZSBcInRkXCJcbmxldCB0aCA9IGNyZWF0ZSBcInRoXCJcbmxldCB0aGVhZCA9IGNyZWF0ZSBcInRoZWFkXCJcbmxldCB0ciA9IGNyZWF0ZSBcInRyXCJcbmxldCB1bCA9IGNyZWF0ZSBcInVsXCJcbmxldCBvbCA9IGNyZWF0ZSBcIm9sXCJcbmxldCBiciA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJiclwiXG5sZXQgaHIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaHJcIlxuXG5sZXQgc2V4cF9mb3JfZGVidWdnaW5nID9pbmRlbnQgc2V4cCA9XG4gIHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtID9pbmRlbnQgfD4gdGV4dCB8PiBMaXN0LnJldHVybiB8PiBwcmUgfmF0dHI6QXR0ci5lbXB0eVxuOztcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9IFJhdy5QYXRjaC50XG5cbiAgbGV0IGNyZWF0ZSB+cHJldmlvdXMgfmN1cnJlbnQgPVxuICAgIFJhdy5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOih0X3RvX2pzIHByZXZpb3VzKSB+Y3VycmVudDoodF90b19qcyBjdXJyZW50KVxuICA7O1xuXG4gIGxldCBhcHBseSB0IGVsdCA9IFJhdy5QYXRjaC5hcHBseSBlbHQgdFxuICBsZXQgaXNfZW1wdHkgdCA9IFJhdy5QYXRjaC5pc19lbXB0eSB0XG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9rZXkgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBFbGVtZW50IChlbGVtZW50X2V4cGVydCBgVm5vZGUgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfc3ZnID9rZXkgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBFbGVtZW50IChlbGVtZW50X2V4cGVydCBgU3ZnID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcbmVuZFxuIiwibW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBdHRyXG4gIG1vZHVsZSBIb29rcyA9IEhvb2tzXG4gIG1vZHVsZSBHbG9iYWxfbGlzdGVuZXJzID0gR2xvYmFsX2xpc3RlbmVyc1xuZW5kXG5cbm1vZHVsZSBBdHRycyA9IEF0dHIuTXVsdGlcbm1vZHVsZSBFZmZlY3QgPSBFZmZlY3Rcbm1vZHVsZSBOb2RlID0gTm9kZVxuIiwibW9kdWxlIFZkb20gPSBWZG9tXG5tb2R1bGUgRG9tX2Zsb2F0ID0gRG9tX2Zsb2F0XG5cbm1vZHVsZSBUb3BfbGV2ZWxfZWZmZWN0cyA9IHN0cnVjdFxuICBsZXQgKCkgPVxuICAgICgqIHVzZSB0aGUgbmF0aXZlLWphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgZmxvYXQgLT4gc3RyaW5nIHdpdGggYSBmaXhlZCBudW1iZXIgb2ZcbiAgICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICAgIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ3B1c2V0ID0gc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50LlNldC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuXG4gICAgICBsZXQgdmFsaWRhdGUgdCA9XG4gICAgICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmVcbiAgICAgICAgICAoSW50LnZhbGlkYXRlX2xib3VuZCB+bWluOihJbmNsIDEpIChJbnQuU2V0Lmxlbmd0aCB0KSlcbiAgICAgICAgICAoSW50LlNldC50b19saXN0IHRcbiAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6SW50LnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICAgICAgICAgICB8PiBWYWxpZGF0ZS5uYW1lX2xpc3QgXCJUaHJlYWRfcG9vbF9jcHVzZXRcIilcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IEludC5TZXQuZXF1YWwgKHQxIHw+IHJhdykgKHQyIHw+IHJhdylcbmVuZFxuXG50eXBlIHQgPVxuICB8IEluaGVyaXRcbiAgfCBDcHVzZXQgb2YgQ3B1c2V0LnRcbltAQGRlcml2aW5nIHNleHBdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHVwbGVfdHlwZV9pbnRmXG5cbm1vZHVsZSBTbG90cyA9IHN0cnVjdFxuICB0eXBlIHVfID0geyBzbG90c19wZXJfdHVwbGUgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB1ID0gdV8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0XyA9IFsgYFNsb3RzIG9mIHVfIF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNsb3RzX3Blcl90dXBsZSAoYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gbiB9KSA9IG5cblxuICB0eXBlICdhMCB0MSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExKSB0MiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIpIHQzID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzKSB0NCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0KSB0NSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUpIHQ2ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2KSB0NyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3KSB0OCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgpIHQ5ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5KSB0MTAgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCkgdDExID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEpIHQxMiA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyKSB0MTMgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMiwgJ2ExMykgdDE0ID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdDEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxIH1cbiAgbGV0IHQyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMiB9XG4gIGxldCB0MyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDMgfVxuICBsZXQgdDQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA0IH1cbiAgbGV0IHQ1ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNSB9XG4gIGxldCB0NiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDYgfVxuICBsZXQgdDcgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA3IH1cbiAgbGV0IHQ4ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOCB9XG4gIGxldCB0OSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDkgfVxuICBsZXQgdDEwID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTAgfVxuICBsZXQgdDExID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTEgfVxuICBsZXQgdDEyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTIgfVxuICBsZXQgdDEzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTMgfVxuICBsZXQgdDE0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTQgfVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHVwbGVfcG9vbF9pbnRmXG5tb2R1bGUgVHVwbGVfdHlwZSA9IFR1cGxlX3R5cGVcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IHBoeXNfZXF1YWwgPSBDYW1sLiggPT0gKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbnVtX2JpdHMgPSBJbnQubnVtX2JpdHNcbiAgbGV0IG1heF92YWx1ZSA9IENhbWwubWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBjb25jYXQgbCA9IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgbFxuXG5tb2R1bGUgdHlwZSBTID0gU1xuXG5tb2R1bGUgUG9vbCA9IHN0cnVjdFxuICBsZXQgZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiBpZiBvbGRfY2FwYWNpdHkgPSAwIHRoZW4gMSBlbHNlIG9sZF9jYXBhY2l0eSAqIDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDw9IG9sZF9jYXBhY2l0eVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb29sLmdyb3cgZ290IHRvbyBzbWFsbCBjYXBhY2l0eVwiXG4gICAgICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSwgYG9sZF9jYXBhY2l0eSBvbGRfY2FwYWNpdHkpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgXSAqIFsgYG9sZF9jYXBhY2l0eSBvZiBpbnQgXV07XG4gICAgICBjYXBhY2l0eVxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFR1cGxlX3R5cGUuU2xvdHNcblxuICBsZXQgbWF4X3Nsb3QgPSAxNFxuXG4gICgqIFRoZSBwb29sIGlzIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIFtVbmlmb3JtX2FycmF5LnRdLCB3aGVyZSBpbmRleCB6ZXJvIGhhcyB0aGVcbiAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHBvb2wgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBhcmUgdGhlIHR1cGxlcyBsYXllZCBvdXQgb25lIGFmdGVyXG4gICAgIHRoZSBvdGhlci4gIEVhY2ggdHVwbGUgdGFrZXMgWzEgKyBzbG90c19wZXJfdHVwbGVdIGluZGljZXMgaW4gdGhlIHBvb2wsIHdoZXJlIHRoZVxuICAgICBmaXJzdCBpbmRleCBob2xkcyBhIGhlYWRlciBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGhvbGQgdGhlIHR1cGxlJ3Mgc2xvdHM6XG5cbiAgICAge3ZcbiAgICAgfCBoZWFkZXIgfCBzMCB8IHMxIHwgLi4uIHwgczxOLTE+IHxcbiAgICAgdn1cblxuICAgICBBIFtQb2ludGVyLnRdIHRvIGEgdHVwbGUgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggd2hlcmUgaXRzIGhlYWRlciBpcywgYXMgd2VsbCBhc1xuICAgICAoYSBtYXNrIG9mKSB0aGUgdHVwbGUncyB1bmlxdWUgaWQuXG5cbiAgICAgVGhlIGZyZWUgdHVwbGVzIGFyZSBzaW5nbHkgbGlua2VkIHZpYSB0aGUgaGVhZGVycy5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIG1hcmtlZCB0byBpbmRpY2F0ZSBzbywgYW5kIGFsc28gdG8gaW5jbHVkZSB0aGVcbiAgICAgdHVwbGUncyB1bmlxdWUgaWQuICBUaGlzIGFsbG93cyB1cyB0byBjaGVjayBpbiBjb25zdGFudCB0aW1lIHdoZXRoZXIgYSBwb2ludGVyIGlzXG4gICAgIHZhbGlkLCBieSBjb21wYXJpbmcgdGhlIGlkIGluIHRoZSBwb2ludGVyIHdpdGggdGhlIGlkIGluIHRoZSBoZWFkZXIuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIG5vdCBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgcGFydCBvZiB0aGUgZnJlZSBsaXN0LCBhbmQgaXRzIHR1cGxlIHNsb3RzXG4gICAgIGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlcywgZnJvbSB0aGUgW2R1bW15XSB0dXBsZSBzdXBwbGllZCB0b1xuICAgICBbY3JlYXRlXS4gIFdlIG11c3QgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGNvcnJlY3QgdHlwZSB0byBwcmV2ZW50IGEgc2VnZmF1bHQgaW5cbiAgICAgY29kZSB0aGF0IChtaXN0YWtlbmx5KSB1c2VzIGEgcG9pbnRlciB0byBhIGZyZWUgdHVwbGUuXG5cbiAgICAgRm9yIFtQb29sLlVuc2FmZV0sIGEgc2xvdCBpbiBhIGZyZWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW50OyBpdCBtdXN0IG5vdCBiZVxuICAgICBwb2ludGVyIHRvIHByZXZlbnQgYSBzcGFjZSBsZWFrLiAgSG93ZXZlciwgdGhlIGludCBpbiB0aGUgc2xvdCBtYXkgbm90IHJlcHJlc2VudCBhXG4gICAgIHZhbGlkIHZhbHVlIG9mIHRoZSB0eXBlLlxuICAqKVxuXG4gIG1vZHVsZSBTbG90ID0gc3RydWN0XG4gICAgdHlwZSAoJ3Nsb3RzLCAnYSkgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgdDAgPSAxXG4gICAgbGV0IHQxID0gMlxuICAgIGxldCB0MiA9IDNcbiAgICBsZXQgdDMgPSA0XG4gICAgbGV0IHQ0ID0gNVxuICAgIGxldCB0NSA9IDZcbiAgICBsZXQgdDYgPSA3XG4gICAgbGV0IHQ3ID0gOFxuICAgIGxldCB0OCA9IDlcbiAgICBsZXQgdDkgPSAxMFxuICAgIGxldCB0MTAgPSAxMVxuICAgIGxldCB0MTEgPSAxMlxuICAgIGxldCB0MTIgPSAxM1xuICAgIGxldCB0MTMgPSAxNFxuXG4gICAgbGV0JXRlc3QgXyA9IHQxMyA9IG1heF9zbG90XG4gIGVuZFxuXG4gICgqIFdlIG9ubHkgaGF2ZSBbSW50Lm51bV9iaXRzXSBiaXRzIGF2YWlsYWJsZSBmb3IgcG9vbCBwb2ludGVycy4gIFRoZSBiaXRzIG9mIGEgcG9vbFxuICAgICBwb2ludGVyIGVuY29kZSB0d28gdGhpbmdzOlxuXG4gICAgIC0gdGhlIHR1cGxlJ3MgYXJyYXkgaW5kZXggaW4gdGhlIHBvb2xcbiAgICAgLSB0aGUgdHVwbGUncyBpZGVudGlmaWVyIChub3QgbmVjZXNzYXJpbHkgdW5pcXVlKVxuXG4gICAgIFdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGFzIGxhcmdlIGFzIG5lZWRlZCBmb3IgdGhlIG1heGltdW0gcG9vbCBjYXBhY2l0eVxuICAgICB0aGF0IHdlIHdhbnQgdG8gc3VwcG9ydCwgYW5kIHVzZSB0aGUgcmVtYWluaW5nIFttYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHNdIGJpdHMgZm9yXG4gICAgIHRoZSBpZGVudGlmaWVyLiAgNjQtYml0IGFuZCAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0eXBpY2FsbHkgaGF2ZSB2ZXJ5IGRpZmZlcmVudFxuICAgICBhZGRyZXNzLXNwYWNlIHNpemVzLCBzbyB3ZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBkaWZmZXJlbnRseS4gKilcblxuICBsZXQgYXJyYXlfaW5kZXhfbnVtX2JpdHMgPVxuICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDYzKTtcbiAgICAgIDMwKVxuICAgIGVsc2UgKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSAzMSB8fCBJbnQubnVtX2JpdHMgPSAzMik7XG4gICAgICAyMilcbiAgOztcblxuICBsZXQgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzID0gSW50Lm51bV9iaXRzIC0gYXJyYXlfaW5kZXhfbnVtX2JpdHNcblxuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyArIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA8PSBJbnQubnVtX2JpdHNcblxuICBsZXQgbWF4X2FycmF5X2xlbmd0aCA9IDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbW9kdWxlIFR1cGxlX2lkIDogc2lnXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaW5pdCA6IHRcbiAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBleGFtcGxlcyA6IHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIFdlIGd1YXJhbnRlZSB0aGF0IHR1cGxlIGlkcyBhcmUgbm9ubmVnYXRpdmUgc28gdGhhdCB0aGV5IGNhbiBiZSBlbmNvZGVkIGluXG4gICAgICAgaGVhZGVycy4gKilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMClcbiAgICBsZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xuICAgIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgaW5pdCA9IDBcbiAgICBsZXQgbmV4dCB0ID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiB0ICsgMSBlbHNlIGlmIHQgPSBJbnQubWF4X3ZhbHVlIHRoZW4gMCBlbHNlIHQgKyAxXG4gICAgbGV0IHRvX2ludCB0ID0gdFxuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIGlmIGkgPCAwXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVHVwbGVfaWQub2ZfaW50IGdvdCBuZWdhdGl2ZSBpbnRcIiBpIFslc2V4cF9vZjogaW50XTtcbiAgICAgIGlcbiAgICA7O1xuXG4gICAgbGV0IGV4YW1wbGVzID0gWyAwOyAxOyAweDFGRkZfRkZGRjsgSW50Lm1heF92YWx1ZSBdXG4gIGVuZFxuXG4gIGxldCB0dXBsZV9pZF9tYXNrID0gKDEgbHNsIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cykgLSAxXG5cbiAgbW9kdWxlIFBvaW50ZXIgOiBzaWdcbiAgICAoKiBbUG9pbnRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHN1bSB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBOb3JtYWwgb2YgeyBoZWFkZXJfaW5kZXggOiBpbnQ7IG1hc2tlZF90dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIFRoZSBlbmNvZGluZyBpcyBjaG9zZW4gdG8gb3B0aW1pemUgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiwgbmFtZWx5IHR1cGxlLXNsb3RcbiAgICAgICBhY2Nlc3MsIHRoZSBbc2xvdF9pbmRleF0gZnVuY3Rpb24uICBUaGUgZW5jb2RpbmcgaXMgZGVzaWduZWQgc28gdGhhdCBbc2xvdF9pbmRleF1cbiAgICAgICBwcm9kdWNlcyBhIG5lZ2F0aXZlIG51bWJlciBmb3IgW051bGxdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdWJzZXF1ZW50IGFycmF5IGJvdW5kc1xuICAgICAgIGNoZWNrIHRvIGZhaWwuICopXG5cbiAgICB0eXBlICdzbG90cyB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBwaHlzX2NvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHBoeXNfZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCogVGhlIG51bGwgcG9pbnRlci4gIFtudWxsXSBpcyBhIGZ1bmN0aW9uIGR1ZSB0byBpc3N1ZXMgd2l0aCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24uICopXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCogTm9ybWFsIHBvaW50ZXJzLiAqKVxuXG4gICAgdmFsIGNyZWF0ZSA6IGhlYWRlcl9pbmRleDppbnQgLT4gVHVwbGVfaWQudCAtPiBfIHRcbiAgICB2YWwgaGVhZGVyX2luZGV4IDogXyB0IC0+IGludFxuICAgIHZhbCBtYXNrZWRfdHVwbGVfaWQgOiBfIHQgLT4gaW50XG4gICAgdmFsIHNsb3RfaW5kZXggOiBfIHQgLT4gKF8sIF8pIFNsb3QudCAtPiBpbnRcbiAgICB2YWwgZmlyc3Rfc2xvdF9pbmRleCA6IF8gdCAtPiBpbnRcblxuICAgIG1vZHVsZSBJZCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgICB2YWwgb2ZfaW50NjMgOiBJbnQ2My50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCB0b19pZCA6IF8gdCAtPiBJZC50XG4gICAgdmFsIG9mX2lkX2V4biA6IElkLnQgLT4gXyB0XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIEEgcG9pbnRlciBpcyBlaXRoZXIgW251bGxdIG9yIHRoZSAocG9zaXRpdmUpIGluZGV4IGluIHRoZSBwb29sIG9mIHRoZSBuZXh0LWZyZWVcbiAgICAgICBmaWVsZCBwcmVjZWVkaW5nIHRoZSB0dXBsZSdzIHNsb3RzLiAqKVxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGxldCBzZXhwX29mX3QgXyB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPFBvb2wuUG9pbnRlci50OiAweCUwOHg+XCIgdClcbiAgICBsZXQgcGh5c19lcXVhbCAodDEgOiBfIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxuICAgIGxldCBwaHlzX2NvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IG51bGwgKCkgPSAtbWF4X3Nsb3QgLSAxXG4gICAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcblxuICAgICgqIFtudWxsXSBtdXN0IGJlIHN1Y2ggdGhhdCBbbnVsbCArIHNsb3RdIGlzIGFuIGludmFsaWQgYXJyYXkgaW5kZXggZm9yIGFsbCBzbG90cy5cbiAgICAgICBPdGhlcndpc2UgZ2V0L3NldCBvbiB0aGUgbnVsbCBwb2ludGVyIG1heSBsZWFkIHRvIGEgc2VnZmF1bHQuICopXG4gICAgbGV0JXRlc3QgXyA9IG51bGwgKCkgKyBtYXhfc2xvdCA8IDBcblxuICAgIGxldCBjcmVhdGUgfmhlYWRlcl9pbmRleCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9XG4gICAgICBoZWFkZXJfaW5kZXhcbiAgICAgIGxvciAoKFR1cGxlX2lkLnRvX2ludCB0dXBsZV9pZCBsYW5kIHR1cGxlX2lkX21hc2spIGxzbCBhcnJheV9pbmRleF9udW1fYml0cylcbiAgICA7O1xuXG4gICAgbGV0IGhlYWRlcl9pbmRleF9tYXNrID0gKDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKSAtIDFcbiAgICBsZXQgbWFza2VkX3R1cGxlX2lkIHQgPSB0IGxzciBhcnJheV9pbmRleF9udW1fYml0c1xuICAgIGxldCBoZWFkZXJfaW5kZXggdCA9IHQgbGFuZCBoZWFkZXJfaW5kZXhfbWFza1xuICAgIGxldCBpbnZhcmlhbnQgXyB0ID0gaWYgbm90IChpc19udWxsIHQpIHRoZW4gYXNzZXJ0IChoZWFkZXJfaW5kZXggdCA+IDApXG5cbiAgICBsZXQldGVzdF91bml0IF8gPSBpbnZhcmlhbnQgaWdub3JlIChudWxsICgpKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIExpc3QuaXRlciBUdXBsZV9pZC5leGFtcGxlcyB+ZjooZnVuIHR1cGxlX2lkIC0+XG4gICAgICAgIGludmFyaWFudCBpZ25vcmUgKGNyZWF0ZSB+aGVhZGVyX2luZGV4OjEgdHVwbGVfaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2xvdF9pbmRleCB0IHNsb3QgPSBoZWFkZXJfaW5kZXggdCArIHNsb3RcbiAgICBsZXQgZmlyc3Rfc2xvdF9pbmRleCB0ID0gc2xvdF9pbmRleCB0IFNsb3QudDBcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2lkIHQgPSBJZC5vZl9pbnQgdFxuXG4gICAgbGV0IG9mX2lkX2V4biBpZCA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHQgPSBJZC50b19pbnRfZXhuIGlkIGluXG4gICAgICAgIGlmIGlzX251bGwgdFxuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNob3VsZF9lcXVhbCA9XG4gICAgICAgICAgICBjcmVhdGUgfmhlYWRlcl9pbmRleDooaGVhZGVyX2luZGV4IHQpIChUdXBsZV9pZC5vZl9pbnQgKG1hc2tlZF90dXBsZV9pZCB0KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdCBzaG91bGRfZXF1YWxcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwic2hvdWxkIGVxdWFsXCIgc2hvdWxkX2VxdWFsIFslc2V4cF9vZjogXyB0XSlcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvaW50ZXIub2ZfaWRfZXhuIGdvdCBzdHJhbmdlIGlkXCJcbiAgICAgICAgICAoaWQsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IElkLnQgKiBleG5dXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhlYWRlciA6IHNpZ1xuICAgICgqIEEgW0hlYWRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IEZyZWUgb2YgeyBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogaW50IH1cbiAgICAgICAgIHwgVXNlZCBvZiB7IHR1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBmcmVlLCBpdHMgaGVhZGVyIGlzIHNldCB0byBlaXRoZXIgW051bGxdIG9yIFtGcmVlXSB3aXRoXG4gICAgICAgW25leHRfZnJlZV9oZWFkZXJfaW5kZXhdIGluZGljYXRpbmcgdGhlIGhlYWRlciBvZiB0aGUgbmV4dCB0dXBsZSBvbiB0aGUgZnJlZSBsaXN0LlxuICAgICAgIElmIGEgdHVwbGUgaXMgaW4gdXNlLCBpdCBoZWFkZXIgaXMgc2V0IHRvIFtVc2VkXS4gKilcblxuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHRcbiAgICB2YWwgaXNfbnVsbCA6IHQgLT4gYm9vbFxuICAgIHZhbCBmcmVlIDogbmV4dF9mcmVlX2hlYWRlcl9pbmRleDppbnQgLT4gdFxuICAgIHZhbCBpc19mcmVlIDogdCAtPiBib29sXG4gICAgdmFsIG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiB0IC0+IGludFxuXG4gICAgKCogb25seSB2YWxpZCBpZiBbaXNfZnJlZSB0XSAqKVxuXG4gICAgdmFsIHVzZWQgOiBUdXBsZV9pZC50IC0+IHRcbiAgICB2YWwgaXNfdXNlZCA6IHQgLT4gYm9vbFxuICAgIHZhbCB0dXBsZV9pZCA6IHQgLT4gVHVwbGVfaWQudFxuXG4gICAgKCogb25seSB2YWxpZCBpZiBbaXNfdXNlZCB0XSAqKVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnRcblxuICAgIGxldCBudWxsID0gMFxuICAgIGxldCBpc19udWxsIHQgPSB0ID0gMFxuXG4gICAgKCogV2Uga25vdyB0aGF0IGhlYWRlciBpbmRpY2VzIGFyZSBbPiAwXSwgYmVjYXVzZSBpbmRleCBbMF0gaG9sZHMgdGhlIG1ldGFkYXRhLiAqKVxuICAgIGxldCBmcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4ID0gbmV4dF9mcmVlX2hlYWRlcl9pbmRleFxuICAgIGxldCBpc19mcmVlIHQgPSB0ID4gMFxuICAgIGxldCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IHQgPSB0XG4gICAgbGV0IHVzZWQgKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPSAtMSAtICh0dXBsZV9pZCA6PiBpbnQpXG4gICAgbGV0IGlzX3VzZWQgdCA9IHQgPCAwXG4gICAgbGV0IHR1cGxlX2lkIHQgPSBUdXBsZV9pZC5vZl9pbnQgKC0odCArIDEpKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIExpc3QuaXRlciBUdXBsZV9pZC5leGFtcGxlcyB+ZjooZnVuIGlkIC0+XG4gICAgICAgIGxldCB0ID0gdXNlZCBpZCBpblxuICAgICAgICBhc3NlcnQgKGlzX3VzZWQgdCk7XG4gICAgICAgIGFzc2VydCAoVHVwbGVfaWQuZXF1YWwgKHR1cGxlX2lkIHQpIGlkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIGlmIGlzX251bGwgdFxuICAgICAgdGhlbiBTZXhwLkF0b20gXCJudWxsXCJcbiAgICAgIGVsc2UgaWYgaXNfZnJlZSB0XG4gICAgICB0aGVuIFNleHAuKExpc3QgWyBBdG9tIFwiRnJlZVwiOyBBdG9tIChJbnQudG9fc3RyaW5nIChuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IHQpKSBdKVxuICAgICAgZWxzZSBTZXhwLihMaXN0IFsgQXRvbSBcIlVzZWRcIjsgQXRvbSAoVHVwbGVfaWQudG9fc3RyaW5nICh0dXBsZV9pZCB0KSkgXSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWV0YWRhdGFfaW5kZXggPSAwXG4gIGxldCBzdGFydF9vZl90dXBsZXNfaW5kZXggPSAxXG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICAobWF4X2FycmF5X2xlbmd0aCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleCkgLyAoMSArIHNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGZvciBzbG90c19wZXJfdHVwbGUgPSAxIHRvIG1heF9zbG90IGRvXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAoKDEgKyBzbG90c19wZXJfdHVwbGUpICogbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgIDw9IG1heF9hcnJheV9sZW5ndGgpXG4gICAgZG9uZVxuICA7O1xuXG4gIG1vZHVsZSBNZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyAoKiBbc2xvdHNfcGVyX3R1cGxlXSBpcyBudW1iZXIgb2Ygc2xvdHMgaW4gYSB0dXBsZSBhcyBzZWVuIGJ5IHRoZSB1c2VyOyBpLmUuIG5vdFxuICAgICAgICAgICBjb3VudGluZyB0aGUgbmV4dC1mcmVlIHBvaW50ZXIuICopXG4gICAgICAgIHNsb3RzX3Blcl90dXBsZSA6IGludFxuICAgICAgOyBjYXBhY2l0eSA6IGludFxuICAgICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyBtdXRhYmxlIG5leHRfaWQgOiBUdXBsZV9pZC50XG4gICAgICA7IG11dGFibGUgZmlyc3RfZnJlZSA6IEhlYWRlci50XG4gICAgICAoKiBbZHVtbXldIGlzIFtOb25lXSBpbiBhbiB1bnNhZmUgcG9vbC4gIEluIGEgc2FmZSBwb29sLCBbZHVtbXldIGlzIFtTb21lIGFdLCB3aXRoXG4gICAgICAgICBbVW5pZm9ybV9hcnJheS5sZW5ndGggYSA9IHNsb3RzX3Blcl90dXBsZV0uICBbZHVtbXldIGlzIGFjdHVhbGx5IGEgdHVwbGUgdmFsdWVcbiAgICAgICAgIHdpdGggdGhlIGNvcnJlY3QgdHlwZSAoY29ycmVzcG9uZGluZyB0byBbJ3Nsb3RzXSksIGJ1dCB3ZSBtYWtlIHRoZSB0eXBlIG9mXG4gICAgICAgICBbZHVtbXldIGJlIFtPYmoudCBVbmlmb3JtX2FycmF5LnRdIGJlY2F1c2Ugd2UgY2FuJ3Qgd3JpdGUgdGhhdCB0eXBlIGhlcmUuICBBbHNvLFxuICAgICAgICAgdGhlIHB1cnBvc2Ugb2YgW2R1bW15XSBpcyB0byBpbml0aWFsaXplIGEgcG9vbCBlbGVtZW50LCBtYWtpbmcgW2R1bW15XSBhbiBbT2JqLnRcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudF0gbGV0cyB1cyBpbml0aWFsaXplIGEgcG9vbCBlbGVtZW50IHVzaW5nIFtVbmlmb3JtX2FycmF5LmJsaXRdXG4gICAgICAgICBmcm9tIFtkdW1teV0gdG8gdGhlIHBvb2wsIHdoaWNoIGlzIGFuIFtPYmoudCBVbmlmb3JtX2FycmF5LnRdLiAqKVxuICAgICAgOyBkdW1teSA6IChPYmoudCBVbmlmb3JtX2FycmF5LnRbQHNleHAub3BhcXVlXSkgb3B0aW9uXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQgPSAxICsgdC5zbG90c19wZXJfdHVwbGVcbiAgICBsZXQgYXJyYXlfbGVuZ3RoIHQgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodC5jYXBhY2l0eSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSB0IH5oZWFkZXJfaW5kZXggPVxuICAgICAgKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleCkgLyBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0XG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0dXBsZV9udW0gKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSArIDFcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IHQubGVuZ3RoID0gdC5jYXBhY2l0eVxuICBlbmRcblxuICBvcGVuIE1ldGFkYXRhXG5cbiAgKCogV2UgdXNlIHR5cGUgW09iai50XSBiZWNhdXNlIHRoZSBhcnJheSBob2xkcyBhIG1peCBvZiBpbnRlZ2VycyBhcyB3ZWxsIGFzIE9DYW1sIHZhbHVlc1xuICAgICBvZiBhcmJpdHJhcnkgdHlwZS4gKilcbiAgdHlwZSAnc2xvdHMgdCA9IE9iai50IFVuaWZvcm1fYXJyYXkudFxuXG4gIGxldCBtZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgbWV0YWRhdGFfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IHNsb3RzIE1ldGFkYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID0gKG1ldGFkYXRhIHQpLmxlbmd0aFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdHkgdCA9IE1ldGFkYXRhLnNleHBfb2ZfdCBzZXhwX29mX3R5IChtZXRhZGF0YSB0KVxuXG4gICgqIEJlY2F1c2UgW3Vuc2FmZV9oZWFkZXJdIGFuZCBbdW5zYWZlX3NldF9oZWFkZXJdIGRvIG5vdCBkbyBhIGJvdW5kcyBjaGVjaywgb25lIG11c3QgYmVcbiAgICAgc3VyZSB0aGF0IG9uZSBoYXMgYSB2YWxpZCBbaGVhZGVyX2luZGV4XSBiZWZvcmUgY2FsbGluZyB0aGVtLiAqKVxuICBsZXQgdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGhlYWRlcl9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gSGVhZGVyLnQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoaGVhZGVyIDogSGVhZGVyLnQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBoZWFkZXJfaW5kZXggKGhlYWRlciA6PiBpbnQpXG4gIDs7XG5cbiAgbGV0IGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBoZWFkZXJfaW5kZXggPj0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICYmIGhlYWRlcl9pbmRleCA8IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHRcbiAgOztcblxuICBsZXQgdW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIgPVxuICAgIGxldCBoZWFkZXJfaW5kZXggPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgSGVhZGVyLmlzX3VzZWQgaGVhZGVyXG4gICAgJiYgVHVwbGVfaWQudG9faW50IChIZWFkZXIudHVwbGVfaWQgaGVhZGVyKSBsYW5kIHR1cGxlX2lkX21hc2tcbiAgICAgICA9IFBvaW50ZXIubWFza2VkX3R1cGxlX2lkIHBvaW50ZXJcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKVxuICAgICgqIEF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhlIHBvaW50ZXIgaXNuJ3QgW251bGxdIGFuZCBpcyBpbiBib3VuZHMsIHNvIHdlIGtub3cgaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgYSBoZWFkZXIsIHNpbmNlIHdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbGwgcG9pbnRlcnMgb3RoZXIgdGhhblxuICAgICAgIFtudWxsXSBhcmUuICopXG4gICAgJiYgdW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgaWRfb2ZfcG9pbnRlciBfdCBwb2ludGVyID0gUG9pbnRlci50b19pZCBwb2ludGVyXG5cbiAgbGV0IGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleFxuICAgICYmIDBcbiAgICAgICA9IChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpXG4gICAgICAgICBtb2QgTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgcG9pbnRlciA9IFBvaW50ZXIub2ZfaWRfZXhuIGlkIGluXG4gICAgICBpZiBub3QgKFBvaW50ZXIuaXNfbnVsbCBwb2ludGVyKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgICAgIGlmIG5vdCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleClcbiAgICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImludmFsaWQgaGVhZGVyIGluZGV4XCIgaGVhZGVyX2luZGV4IFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgaWYgbm90ICh1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlcikgdGhlbiBmYWlsd2l0aCBcInBvaW50ZXIgbm90IGxpdmVcIik7XG4gICAgICBwb2ludGVyXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wucG9pbnRlcl9vZl9pZF9leG4gZ290IGludmFsaWQgaWRcIlxuICAgICAgICAoaWQsIHQsIGV4bilcbiAgICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnQgKiBfIHQgKiBleG5dXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgbWV0YWRhdGEpIGluXG4gICAgICBNZXRhZGF0YS5GaWVsZHMuaXRlclxuICAgICAgICB+c2xvdHNfcGVyX3R1cGxlOihjaGVjayAoZnVuIHNsb3RzX3Blcl90dXBsZSAtPiBhc3NlcnQgKHNsb3RzX3Blcl90dXBsZSA+IDApKSlcbiAgICAgICAgfmNhcGFjaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIGNhcGFjaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSA+PSAwKTtcbiAgICAgICAgICAgICBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgPSBNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpKSlcbiAgICAgICAgfmxlbmd0aDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA8PSBtZXRhZGF0YS5jYXBhY2l0eSkpKVxuICAgICAgICB+bmV4dF9pZDooY2hlY2sgVHVwbGVfaWQuaW52YXJpYW50KVxuICAgICAgICB+Zmlyc3RfZnJlZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJzdF9mcmVlIC0+XG4gICAgICAgICAgICAgbGV0IGZyZWUgPSBBcnJheS5jcmVhdGUgfmxlbjptZXRhZGF0YS5jYXBhY2l0eSBmYWxzZSBpblxuICAgICAgICAgICAgIGxldCByID0gcmVmIGZpcnN0X2ZyZWUgaW5cbiAgICAgICAgICAgICB3aGlsZSBub3QgKEhlYWRlci5pc19udWxsICFyKSBkb1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9ICFyIGluXG4gICAgICAgICAgICAgICBhc3NlcnQgKEhlYWRlci5pc19mcmVlIGhlYWRlcik7XG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggaGVhZGVyIGluXG4gICAgICAgICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpO1xuICAgICAgICAgICAgICAgbGV0IHR1cGxlX251bSA9IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gbWV0YWRhdGEgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgaWYgZnJlZS4odHVwbGVfbnVtKVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImN5Y2xlIGluIGZyZWUgbGlzdFwiIHR1cGxlX251bSBbJXNleHBfb2Y6IGludF07XG4gICAgICAgICAgICAgICBmcmVlLih0dXBsZV9udW0pIDwtIHRydWU7XG4gICAgICAgICAgICAgICByIDo9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4XG4gICAgICAgICAgICAgZG9uZSkpXG4gICAgICAgIH5kdW1teTpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGR1bW15ID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgaWYgSGVhZGVyLmlzX2ZyZWUgaGVhZGVyXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdF9zbG90ID0gdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgICAgZm9yIHNsb3QgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoT2JqLmlzX2ludCAoVW5pZm9ybV9hcnJheS5nZXQgdCAoZmlyc3Rfc2xvdCArIHNsb3QpKSlcbiAgICAgICAgICAgICAgICAgICBkb25lKVxuICAgICAgICAgICAgICAgZG9uZSkpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuaW52YXJpYW50IGZhaWxlZFwiIChleG4sIHQpIFslc2V4cF9vZjogZXhuICogXyB0XVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID0gKG1ldGFkYXRhIHQpLmNhcGFjaXR5XG4gIGxldCBpc19mdWxsIHQgPSBNZXRhZGF0YS5pc19mdWxsIChtZXRhZGF0YSB0KVxuXG4gIGxldCB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggPVxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBtZXRhZGF0YS5maXJzdF9mcmVlO1xuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gSGVhZGVyLmZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aGVhZGVyX2luZGV4XG4gIDs7XG5cbiAgbGV0IHNldF9tZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSBtZXRhZGF0YSA9XG4gICAgVW5pZm9ybV9hcnJheS5zZXQgdCBtZXRhZGF0YV9pbmRleCAoT2JqLnJlcHIgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hcnJheSAodHlwZSBzbG90cykgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkgOiBzbG90cyB0ID1cbiAgICBsZXQgdCA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlX29ial9hcnJheSB+bGVuOihNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGE7XG4gICAgdFxuICA7O1xuXG4gICgqIEluaXRpYWxpemUgdHVwbGVzIG51bWJlcmVkIGZyb20gW2xvXSAoaW5jbHVzaXZlKSB1cCB0byBbaGldIChleGNsdXNpdmUpLiAgRm9yIGVhY2hcbiAgICAgdHVwbGUsIHRoaXMgcHV0cyBkdW1teSB2YWx1ZXMgaW4gdGhlIHR1cGxlJ3Mgc2xvdHMgYW5kIGFkZHMgdGhlIHR1cGxlIHRvIHRoZSBmcmVlXG4gICAgIGxpc3QuICopXG4gIGxldCB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbyB+aGkgPVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gbG8gdG8gaGkgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczoodHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGZvciB0dXBsZV9udW0gPSBoaSAtIDEgZG93bnRvIGxvIGRvXG4gICAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdFxuICAgICAgICB0XG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH5oZWFkZXJfaW5kZXg6KHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmNyZWF0ZSBnb3QgaW52YWxpZCBjYXBhY2l0eVwiIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgc2xvdHNfcGVyX3R1cGxlID0gU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzIGluXG4gICAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgY2FwYWNpdHkgPiBtYXhfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuY3JlYXRlIGdvdCB0b28gbGFyZ2UgY2FwYWNpdHlcIlxuICAgICAgICAoY2FwYWNpdHksIGBtYXggbWF4X2NhcGFjaXR5KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heCBvZiBpbnQgXV07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IFR1cGxlX2lkLmluaXRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvOjAgfmhpOmNhcGFjaXR5O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlICh0eXBlIHR1cGxlKSAoc2xvdHMgOiAodHVwbGUsIF8pIFNsb3RzLnQpIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGxldCBkdW1teSA9XG4gICAgICBpZiBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgPSAxXG4gICAgICB0aGVuIFVuaWZvcm1fYXJyYXkuc2luZ2xldG9uIChPYmoucmVwciAoZHVtbXkgOiB0dXBsZSkpXG4gICAgICBlbHNlIChPYmoubWFnaWMgKGR1bW15IDogdHVwbGUpIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTooU29tZSBkdW1teSlcbiAgOztcblxuICAoKiBQdXJnZSBhIHBvb2wgYW5kIG1ha2UgaXQgdW51c2FibGUuICopXG4gIGxldCBkZXN0cm95IHQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAoKiBXZSBjbGVhciBvdXQgYWxsIHRoZSBwb29sJ3MgZW50cmllcywgd2hpY2ggY2F1c2VzIGFsbCBwb2ludGVycyB0byBiZSBpbnZhbGlkLiAgVGhpc1xuICAgICAgIGFsc28gcHJldmVudHMgdGhlIGRlc3Ryb3llZCBwb29sIGZyb20gdW5uZWNlc3NhcmlseSBrZWVwaW5nIGhlYXAgYmxvY2tzIGFsaXZlLlxuICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBbZnJlZV1pbmcgYWxsIHRoZSBlbnRyaWVzIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB3ZSBtYWtlIHRoZVxuICAgICAgIGZyZWUgbGlzdCBlbXB0eSBhcyB3ZWxsLiAqKVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGZvciBpID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4IHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChPYmoucmVwciAwKVxuICAgICAgIGRvbmVcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBIZWFkZXIubnVsbDtcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOihoZWFkZXJfaW5kZXggKyAxKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eSA9IDBcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gbWV0YWRhdGEubmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXkgPSBtZXRhZGF0YS5kdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGFcbiAgOztcblxuICBsZXRbQGNvbGRdIGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGxldCB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICA7IGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgICAgIDsgbGVuZ3RoXG4gICAgICAgIDsgbmV4dF9pZFxuICAgICAgICA7IGZpcnN0X2ZyZWUgPSBfXG4gICAgICAgIDsgZHVtbXlcbiAgICAgICAgfVxuICAgICAgPVxuICAgICAgbWV0YWRhdGEgdFxuICAgIGluXG4gICAgbGV0IGNhcGFjaXR5ID1cbiAgICAgIG1pbiAobWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpIChncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5KVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZ3JvdyBjYW5ub3QgZ3JvdyBwb29sOyBjYXBhY2l0eSBhbHJlYWR5IGF0IG1heGltdW1cIlxuICAgICAgICBjYXBhY2l0eVxuICAgICAgICBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aFxuICAgICAgOyBuZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQnID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICB+c3JjOnRcbiAgICAgIH5zcmNfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmRzdDp0J1xuICAgICAgfmRzdF9wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+bGVuOihvbGRfY2FwYWNpdHkgKiBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YSk7XG4gICAgZGVzdHJveSB0O1xuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQnIG1ldGFkYXRhIH5sbzpvbGRfY2FwYWNpdHkgfmhpOmNhcGFjaXR5O1xuICAgIGZvciB0dXBsZV9udW0gPSBvbGRfY2FwYWNpdHkgLSAxIGRvd250byAwIGRvXG4gICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQnIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgIGlmIG5vdCAoSGVhZGVyLmlzX3VzZWQgaGVhZGVyKVxuICAgICAgdGhlbiB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0JyBtZXRhZGF0YSB+aGVhZGVyX2luZGV4XG4gICAgZG9uZTtcbiAgICB0J1xuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfbWFsbG9jX2Z1bGwgdCA9XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLm1hbGxvYyBvZiBmdWxsIHBvb2xcIiB0IFslc2V4cF9vZjogXyB0XVxuICA7O1xuXG4gIGxldCBtYWxsb2MgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgOiBzbG90cyBQb2ludGVyLnQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgZmlyc3RfZnJlZSA9IG1ldGFkYXRhLmZpcnN0X2ZyZWUgaW5cbiAgICBpZiBIZWFkZXIuaXNfbnVsbCBmaXJzdF9mcmVlIHRoZW4gcmFpc2VfbWFsbG9jX2Z1bGwgdDtcbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggZmlyc3RfZnJlZSBpblxuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXg7XG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCArIDE7XG4gICAgbGV0IHR1cGxlX2lkID0gbWV0YWRhdGEubmV4dF9pZCBpblxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoSGVhZGVyLnVzZWQgdHVwbGVfaWQpO1xuICAgIG1ldGFkYXRhLm5leHRfaWQgPC0gVHVwbGVfaWQubmV4dCB0dXBsZV9pZDtcbiAgICBQb2ludGVyLmNyZWF0ZSB+aGVhZGVyX2luZGV4IHR1cGxlX2lkXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggLSAxO1xuICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcik7XG4gICAgbWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBvcyA9IFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgKHBvcyArIGkpXG4gICAgICBkb25lXG4gICAgfCBTb21lIGR1bW15IC0+XG4gICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICB+ZHN0OnRcbiAgICAgICAgfmRzdF9wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBmcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgKCogQ2hlY2sgW3BvaW50ZXJfaXNfdmFsaWRdIHRvOlxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIG51bGwgcG9pbnRlclxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIGZyZWUgcG9pbnRlciAodGhpcyB3b3VsZCBsZWFkIHRvIGEgcG9vbCBpbmNvbnNpc3RlbmN5KVxuICAgICAgIC0gYmUgYWJsZSB0byB1c2UgdW5zYWZlIGZ1bmN0aW9ucyBhZnRlci4gKilcbiAgICBpZiBub3QgKHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5mcmVlIG9mIGludmFsaWQgcG9pbnRlclwiXG4gICAgICAgIChwb2ludGVyLCB0KVxuICAgICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50ICogXyB0XTtcbiAgICB1bnNhZmVfZnJlZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzIgdCBhMCBhMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTQpIChPYmoucmVwciBhMTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgZ2V0IHQgcCBzbG90ID0gT2JqLm9iaiAoVW5pZm9ybV9hcnJheS5nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwIHNsb3QgPVxuICAgIE9iai5vYmogKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcbiAgOztcblxuICBsZXQgc2V0IHQgcCBzbG90IHggPSBVbmlmb3JtX2FycmF5LnNldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcblxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSAodHlwZSB0dXBsZSkgKHQgOiAodHVwbGUsIF8pIFNsb3RzLnQgdCkgcG9pbnRlciA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBsZW4gPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBsZW4gPSAxXG4gICAgdGhlbiBnZXQgdCBwb2ludGVyIFNsb3QudDBcbiAgICBlbHNlXG4gICAgICAoT2JqLm1hZ2ljXG4gICAgICAgICAoVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcikgfmxlblxuICAgICAgICAgIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgICAgIDogdHVwbGUpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb29sXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb29sXG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgPSBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15Ok5vbmVcbmVuZFxuXG5tb2R1bGUgRGVidWcgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBsZXQgcHJlZml4ID0gXCJQb29sLlwiIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciB0cyB+ZjooaW52YXJpYW50IGlnbm9yZSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXMgdGhlbiBEZWJ1Zy5lcHJpbnRzIChjb25jYXQgWyBwcmVmaXg7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmVwcmludHNcbiAgICAgICAgKGNvbmNhdCBbIHByZWZpeDsgbmFtZTsgXCIgcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgb3BlbiBQb2ludGVyXG5cbiAgICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2NvbXBhcmVcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19jb21wYXJlIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19lcXVhbFwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19lcXVhbCB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IGlzX251bGwgdCA9XG4gICAgICBkZWJ1ZyBcIlBvaW50ZXIuaXNfbnVsbFwiIFtdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19udWxsIHQpXG4gICAgOztcblxuICAgIGxldCBudWxsID0gbnVsbFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBvcGVuIElkXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgbGV0IG9mX2ludDYzIGkgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQub2ZfaW50NjNcIiBbXSBpIFslc2V4cF9vZjogSW50NjMudF0gWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgb2ZfaW50NjMgaSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLnRvX2ludDYzXCIgW10gdCBbJXNleHBfb2Y6IHRdIFslc2V4cF9vZjogSW50NjMudF0gKGZ1biAoKSAtPlxuICAgICAgICAgIHRvX2ludDYzIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJpZF9vZl9wb2ludGVyXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICAoZnVuICgpIC0+IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX29mX2lkX2V4blwiXG4gICAgICBbIHQgXVxuICAgICAgaWRcbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9vZl9pZF9leG4gdCBpZClcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfaXNfdmFsaWRcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgZGVidWcgXCJjcmVhdGVcIiBbXSBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15KVxuICA7O1xuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgZGVidWcgXCJtYXhfY2FwYWNpdHlcIiBbXSBzbG90c19wZXJfdHVwbGUgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+XG4gICAgICBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9XG4gICAgZGVidWcgXCJjYXBhY2l0eVwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+IGNhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGRlYnVnXG4gICAgICBcImdyb3dcIlxuICAgICAgWyB0IF1cbiAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHkpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBvcHRpb24gXV1cbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICAgICAgKGZ1biAoKSAtPiBncm93ID9jYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBpc19mdWxsIHQgPVxuICAgIGRlYnVnIFwiaXNfZnVsbFwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19mdWxsIHQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgZGVidWcgXCJ1bnNhZmVfZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICB1bnNhZmVfZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcImZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPiBmcmVlIHQgcClcbiAgOztcblxuICBsZXQgZGVidWdfbmV3IHQgZiA9IGRlYnVnIFwibmV3XCIgWyB0IF0gKCkgWyVzZXhwX29mOiB1bml0XSBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBmXG4gIGxldCBuZXcxIHQgYTAgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlIHQgcG9pbnRlciA9XG4gICAgZGVidWcgXCJnZXRfdHVwbGVcIiBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPlxuICAgICAgZ2V0X3R1cGxlIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZGVidWdfZ2V0IG5hbWUgZiB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT4gZiB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGdldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcImdldFwiIGdldCB0IHBvaW50ZXIgc2xvdFxuICBsZXQgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcInVuc2FmZV9nZXRcIiB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90XG5cbiAgbGV0IGRlYnVnX3NldCBuYW1lIGYgdCBwb2ludGVyIHNsb3QgYSA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgZiB0IHBvaW50ZXIgc2xvdCBhKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInNldFwiIHNldCB0IHBvaW50ZXIgc2xvdCBhXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJ1bnNhZmVfc2V0XCIgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhXG5lbmRcblxubW9kdWxlIEVycm9yX2NoZWNrIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7IG11dGFibGUgaXNfdmFsaWQgOiBib29sXG4gICAgICA7IHBvaW50ZXIgOiAnc2xvdHMgUG9pbnRlci50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBjcmVhdGUgcG9pbnRlciA9IHsgaXNfdmFsaWQgPSB0cnVlOyBwb2ludGVyIH1cbiAgICBsZXQgbnVsbCAoKSA9IHsgaXNfdmFsaWQgPSBmYWxzZTsgcG9pbnRlciA9IFBvaW50ZXIubnVsbCAoKSB9XG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9IFBvaW50ZXIucGh5c19jb21wYXJlIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBpc19udWxsIHQgPSBQb2ludGVyLmlzX251bGwgdC5wb2ludGVyXG5cbiAgICBsZXQgZm9sbG93IHQgPVxuICAgICAgaWYgbm90IHQuaXNfdmFsaWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHVzZSBpbnZhbGlkIHBvaW50ZXJcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICAgIHQucG9pbnRlclxuICAgIDs7XG5cbiAgICBsZXQgaW52YWxpZGF0ZSB0ID0gdC5pc192YWxpZCA8LSBmYWxzZVxuXG4gICAgbW9kdWxlIElkID0gUG9pbnRlci5JZFxuICBlbmRcblxuICB0eXBlICdzbG90cyB0ID0gJ3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH0gPVxuICAgIGlzX3ZhbGlkICYmIHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyXG4gIDs7XG5cbiAgKCogV2UgZG9uJ3QgZG8gW1BvaW50ZXIuZm9sbG93IHBvaW50ZXJdLCBiZWNhdXNlIHRoYXQgd291bGQgZGlzYWxsb3cgW2lkX29mX3BvaW50ZXIgdFxuICAgICAoUG9pbnRlci5udWxsICgpKV0uICopXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyLlBvaW50ZXIucG9pbnRlclxuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBsZXQgcG9pbnRlciA9IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgaW5cbiAgICBsZXQgaXNfdmFsaWQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyIGluXG4gICAgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH1cbiAgOztcblxuICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5XG4gIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHlcbiAgbGV0IGdyb3cgPSBncm93XG4gIGxldCBpc19mdWxsID0gaXNfZnVsbFxuICBsZXQgZ2V0X3R1cGxlIHQgcCA9IGdldF90dXBsZSB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgZ2V0IHQgcCA9IGdldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgdW5zYWZlX2dldCB0IHAgPSB1bnNhZmVfZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBzZXQgdCBwIHNsb3QgdiA9IHNldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgdiA9IHVuc2FmZV9zZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgdW5zYWZlX2ZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcbmVuZFxuIiwiKCogQmUgc3VyZSBhbmQgZmlyc3QgcmVhZCB0aGUgaW1wbGVtZW50YXRpb24gb3ZlcnZpZXcgaW4gdGltaW5nX3doZWVsX2ludGYubWwuXG5cbiAgIEEgdGltaW5nIHdoZWVsIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIFwibGV2ZWxzXCIsIHdoZXJlIGVhY2ggbGV2ZWwgaXMgYW4gYXJyYXkgb2ZcbiAgIFwic2xvdHNcIi4gIEVhY2ggc2xvdCByZXByZXNlbnRzIGEgcmFuZ2Ugb2Yga2V5cywgYW5kIGhvbGRzIGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aFxuICAgdGhvc2Uga2V5cy4gIEVhY2ggbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0d28gcGFyYW1ldGVyczogW2JpdHNdLCB0aGUgbnVtYmVyIG9mIGtleSBiaXRzXG4gICB0aGF0IHRoYXQgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yIGRpc3Rpbmd1aXNoaW5nLCBhbmQgW2JpdHNfcGVyX3Nsb3RdLCB0aGUgc2l6ZSBvZiB0aGVcbiAgIHJhbmdlIG9mIGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlIHNsb3QgaW4gdGhlIGFycmF5LiAgQ29uY2VwdHVhbGx5LCBlYWNoIGxldmVsXG4gICBicmVha3MgdXAgYWxsIHBvc3NpYmxlIGtleXMgaW50byByYW5nZXMgb2Ygc2l6ZSBbMl5iaXRzX3Blcl9zbG90XS4gIFRoZSBsZW5ndGggb2YgYVxuICAgbGV2ZWwgYXJyYXkgaXMgWzJeYml0c10sIGFuZCB0aGUgYXJyYXkgaXMgdXNlZCBsaWtlIGEgY2lyY3VsYXIgYnVmZmVyIHRvIHRyYXZlcnNlIHRoZVxuICAgcmFuZ2VzIGFzIHRoZSB0aW1pbmcgd2hlZWwncyBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMuICBBIGtleSBba10sIGlmIHN0b3JlZCBpbiB0aGVcbiAgIGxldmVsLCBpcyBzdG9yZWQgYXQgaW5kZXggWyhrIC8gMl5iaXRzX3Blcl9zbG90KSBtb2QgMl5iaXRzXS5cblxuICAgVGhlIHNldHRpbmdzIG9mIHRoZSBbYml0c10gdmFsdWVzIGFyZSBjb25maWd1cmFibGUgYnkgdXNlciBjb2RlIHVzaW5nIFtMZXZlbF9iaXRzXSxcbiAgIGFsdGhvdWdoIHRoZXJlIGlzIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldHRpbmcuICBHaXZlbiB0aGUgW2JpdHNdIHZhbHVlcywgdGhlXG4gICBbYml0c19wZXJfc2xvdF0gYXJlIGNob3NlbiBzbyB0aGF0IFtiaXRzX3Blcl9zbG90XSBhdCBsZXZlbCBbaV0gaXMgdGhlIHN1bSBvZiB0aGVcbiAgIFtiaXRzXSBhdCBhbGwgbG93ZXIgbGV2ZWxzLiAgVGh1cywgYSBzbG90J3MgcmFuZ2UgYXQgbGV2ZWwgW2ldIGlzIGFzIGxhcmdlIGFzIHRoZVxuICAgZW50aXJlIHJhbmdlIG9mIHRoZSBhcnJheSBhdCBsZXZlbCBbaSAtIDFdLlxuXG4gICBFYWNoIGxldmVsIGhhcyBhIFttaW5fYWxsb3dlZF9rZXldIGFuZCBhIFttYXhfYWxsb3dlZF9rZXldIHRoYXQgZGV0ZXJtaW5lIHRoZSByYW5nZSBvZlxuICAga2V5cyB0aGF0IGl0IGN1cnJlbnRseSByZXByZXNlbnRzLiAgVGhlIGNydWNpYWwgaW52YXJpYW50IG9mIHRoZSB0aW1pbmcgd2hlZWwgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRoYXQgdGhlIFttaW5fYWxsb3dlZF9rZXldIGF0IGxldmVsIFtpXSBpcyBubyBtb3JlIHRoYW4gdGhlXG4gICBbbWF4X2FsbG93ZWRfa2V5ICsgMV0gb2YgbGV2ZWwgW2kgLSAxXS4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbHMgY2FuIHJlcHJlc2VudCBhbGxcbiAgIGtleXMgZnJvbSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGxvd2VzdCBsZXZlbCB0byB0aGUgW21heF9hbGxvd2VkX2tleV0gb2YgdGhlXG4gICBoaWdoZXN0IGxldmVsLiAgVGhlIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmdcbiAgIHRoaXMgaW52YXJpYW50LlxuXG4gICBBdCBsZXZlbCAwLCBbYml0c19wZXJfc2xvdCA9IDBdLCBhbmQgc28gdGhlIHNpemUgb2YgZWFjaCBzbG90IGlzIFsxXS4gIFRoYXQgaXMsIGxldmVsIDBcbiAgIHByZWNpc2VseSBkaXN0aW5ndWlzaGVzIGFsbCB0aGUga2V5cyBiZXR3ZWVuIGl0cyBbbWluX2FsbG93ZWRfa2V5XSAod2hpY2ggaXMgdGhlIHNhbWVcbiAgIGFzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgZW50aXJlIHRpbWluZyB3aGVlbCkgYW5kIFttYXhfYWxsb3dlZF9rZXldLiAgQXMgdGhlXG4gICBsZXZlbHMgaW5jcmVhc2UsIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHRoZSBbYml0c19wZXJfc2xvdF0gaW5jcmVhc2VzLCBhbmRcbiAgIHRoZSByYW5nZSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUgbGV2ZWwgaW5jcmVhc2VzIChkcmFtYXRpY2FsbHkpLlxuXG4gICBUaGUgaWRlYSBvZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGUgaGllcmFyY2hpY2FsIGFwcHJvYWNoIGRlc2NyaWJlZCBpbjpcblxuICAge3ZcbiAgICAgSGFzaGVkIGFuZCBIaWVyYXJjaGljYWwgVGltaW5nIFdoZWVsczpcbiAgICAgRWZmaWNpZW50IERhdGEgU3RydWN0dXJlcyBmb3IgSW1wbGVtZW50aW5nIGEgVGltZXIgRmFjaWxpdHlcblxuICAgICBWYXJnaGVzZSAmIExhdWNrLCAxOTk2XG4gICB2fVxuXG4gICBIb3dldmVyLCB0aGUgY29kZSBpcyBjb21wbGV0ZWx5IG5ldy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBUaW1pbmdfd2hlZWxfaW50ZlxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbmxldCBzZXhwX29mX3Rfc3R5bGUgOiBbIGBQcmV0dHkgfCBgSW50ZXJuYWwgXSByZWYgPSByZWYgYFByZXR0eVxuXG4oKiBbe21heCxtaW59X3RpbWVdIGFyZSBib3VuZHMgb24gdGhlIHRpbWVzIHN1cHBvcnRlZCBieSBhIHRpbWluZyB3aGVlbC4gKilcblxubGV0IG1heF90aW1lID0gVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1pbl90aW1lID0gVGltZV9ucy5lcG9jaFxuXG5tb2R1bGUgTnVtX2tleV9iaXRzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHplcm8gOiB0XG5cbiAgKCogdmFsIG1pbl92YWx1ZSA6IHQgKilcblxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cyIDogdCAtPiBJbnQ2My50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgbWluX3ZhbHVlID0gMFxuXG4gICgqKiBXZSBzdXBwb3J0IGFsbCBub24tbmVnYXRpdmUgW1RpbWVfbnMudF0gdmFsdWVzLiAqKVxuICBsZXQgbWF4X3ZhbHVlID0gSW50NjMubnVtX2JpdHMgLSAxXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQgPj0gbWluX3ZhbHVlKTtcbiAgICBhc3NlcnQgKHQgPD0gbWF4X3ZhbHVlKVxuICA7O1xuXG4gIGxldCBvZl9pbnQgaSA9XG4gICAgaW52YXJpYW50IGk7XG4gICAgaVxuICA7O1xuXG4gIGxldCAoICsgKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSArIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCAoIC0gKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSAtIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBwb3cyIHQgPSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSB0XG5lbmRcblxubW9kdWxlIExldmVsX2JpdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTnVtX2tleV9iaXRzLnQgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtYXhfbnVtX2JpdHMgPSAoTnVtX2tleV9iaXRzLm1heF92YWx1ZSA6PiBpbnQpXG4gIGxldCBudW1fYml0c19pbnRlcm5hbCB0ID0gTGlzdC5mb2xkIHQgfmluaXQ6TnVtX2tleV9iaXRzLnplcm8gfmY6TnVtX2tleV9iaXRzLiggKyApXG4gIGxldCBudW1fYml0cyB0ID0gKG51bV9iaXRzX2ludGVybmFsIHQgOj4gaW50KVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0IChub3QgKExpc3QuaXNfZW1wdHkgdCkpO1xuICAgIExpc3QuaXRlciB0IH5mOihmdW4gbnVtX2tleV9iaXRzIC0+XG4gICAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IG51bV9rZXlfYml0cztcbiAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIG51bV9rZXlfYml0cyBOdW1fa2V5X2JpdHMuemVybykpO1xuICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgKG51bV9iaXRzX2ludGVybmFsIHQpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgdCA9IHNleHAgfD4gWyVvZl9zZXhwOiB0XSBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biA/KGV4dGVuZF90b19tYXhfbnVtX2JpdHMgPSBmYWxzZSkgaW50cyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRzIHRoZW4gZmFpbHdpdGggXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gcmVxdWlyZXMgYSBub25lbXB0eSBsaXN0XCI7XG4gICAgaWYgTGlzdC5leGlzdHMgaW50cyB+ZjooZnVuIGJpdHMgLT4gYml0cyA8PSAwKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCBub25wb3NpdGl2ZSBudW0gYml0c1wiIH5fOihpbnRzIDogaW50IGxpc3QpXTtcbiAgICBsZXQgbnVtX2JpdHMgPSBMaXN0LmZvbGQgaW50cyB+aW5pdDowIH5mOiggKyApIGluXG4gICAgaWYgbnVtX2JpdHMgPiBtYXhfbnVtX2JpdHNcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCB0b28gbWFueSBiaXRzXCJcbiAgICAgICAgICAgIH5fOihpbnRzIDogaW50IGxpc3QpXG4gICAgICAgICAgICB+Z290OihudW1fYml0cyA6IGludClcbiAgICAgICAgICAgIChtYXhfbnVtX2JpdHMgOiBpbnQpXTtcbiAgICBsZXQgaW50cyA9XG4gICAgICBpZiBleHRlbmRfdG9fbWF4X251bV9iaXRzXG4gICAgICB0aGVuIGludHMgQCBMaXN0LmluaXQgKG1heF9udW1fYml0cyAtIG51bV9iaXRzKSB+ZjooY29uc3QgMSlcbiAgICAgIGVsc2UgaW50c1xuICAgIGluXG4gICAgTGlzdC5tYXAgaW50cyB+ZjpOdW1fa2V5X2JpdHMub2ZfaW50XG4gIDs7XG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuIFsgMTE7IDEwOyAxMDsgMTA7IDEwOyAxMDsgMSBdXG5cbiAgbGV0IHRyaW0gdCB+bWF4X251bV9iaXRzID1cbiAgICBpZiBOdW1fa2V5X2JpdHMuKCA8PSApIChudW1fYml0c19pbnRlcm5hbCB0KSBtYXhfbnVtX2JpdHNcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCB0IH5yZW1haW5pbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IGIgOjogdCAtPlxuICAgICAgICAgIGlmIE51bV9rZXlfYml0cy4oID49ICkgYiByZW1haW5pbmdcbiAgICAgICAgICB0aGVuIFsgcmVtYWluaW5nIF1cbiAgICAgICAgICBlbHNlIGIgOjogbG9vcCB0IH5yZW1haW5pbmc6KE51bV9rZXlfYml0cy4oIC0gKSByZW1haW5pbmcgYilcbiAgICAgIGluXG4gICAgICBsb29wIHQgfnJlbWFpbmluZzptYXhfbnVtX2JpdHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA6IHNpZ1xuICBpbmNsdWRlIEFsYXJtX3ByZWNpc2lvblxuXG4gIHZhbCBudW1fa2V5X2JpdHMgOiB0IC0+IE51bV9rZXlfYml0cy50XG4gIHZhbCBpbnRlcnZhbF9udW0gOiB0IC0+IFRpbWVfbnMudCAtPiBJbnQ2My50XG4gIHZhbCBpbnRlcnZhbF9udW1fc3RhcnQgOiB0IC0+IEludDYzLnQgLT4gVGltZV9ucy50XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIFt0XSBpcyByZXByZXNlbnRlZCBhcyB0aGUgbG9nMiBvZiBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKilcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBsZXQgbnVtX2tleV9iaXRzIHQgPSB0IHw+IE51bV9rZXlfYml0cy5vZl9pbnRcblxuICBsZXQgdG9fc3BhbiB0ID1cbiAgICBpZiB0IDwgMFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW5dIG9mIG5lZ2F0aXZlIHBvd2VyIG9mIHR3byBuYW5vc2Vjb25kc1wiIH5fOih0IDogaW50KV07XG4gICAgSW50NjMuKHNoaWZ0X2xlZnQgb25lKSB0IHw+IFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCB8PiB0b19zcGFuIDogVGltZV9ucy5TcGFuLnQpXVxuICBsZXQgb25lX25hbm9zZWNvbmQgPSAwXG4gIGxldCBhYm91dF9vbmVfbWljcm9zZWNvbmQgPSAxMFxuICBsZXQgYWJvdXRfb25lX21pbGxpc2Vjb25kID0gMjBcbiAgbGV0IGFib3V0X29uZV9zZWNvbmQgPSAzMFxuICBsZXQgYWJvdXRfb25lX2RheSA9IDQ2XG4gIGxldCBtdWwgdCB+cG93MiA9IHQgKyBwb3cyXG4gIGxldCBkaXYgdCB+cG93MiA9IHQgLSBwb3cyXG4gIGxldCBpbnRlcnZhbF9udW0gdCB0aW1lID0gSW50NjMuc2hpZnRfcmlnaHQgKHRpbWUgfD4gVGltZV9ucy50b19pbnQ2M19uc19zaW5jZV9lcG9jaCkgdFxuXG4gIGxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICAgIEludDYzLnNoaWZ0X2xlZnQgaW50ZXJ2YWxfbnVtIHQgfD4gVGltZV9ucy5vZl9pbnQ2M19uc19zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBvZl9zcGFuX2Zsb29yX3BvdzJfbnMgc3BhbiA9XG4gICAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24ub2Zfc3Bhbl9mbG9vcl9wb3cyX25zXSBnb3Qgbm9uLXBvc2l0aXZlIHNwYW5cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICAgIHNwYW4gfD4gVGltZV9ucy5TcGFuLnRvX2ludDYzX25zIHw+IEludDYzLmZsb29yX2xvZzJcbiAgOztcblxuICBsZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuXG4gIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zcGFuXG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NwYW5cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoVGltZV9ucy5TcGFuKSAoVClcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlIChUaW1lX25zLlNwYW4pIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBsZXZlbF9iaXRzX2RlZmF1bHQgPSBMZXZlbF9iaXRzLmRlZmF1bHRcblxuICB0eXBlIHQgPVxuICAgIHsgYWxhcm1fcHJlY2lzaW9uIDogQWxhcm1fcHJlY2lzaW9uLlVuc3RhYmxlLnRcbiAgICA7IGxldmVsX2JpdHMgOiBMZXZlbF9iaXRzLnQgW0BkZWZhdWx0IGxldmVsX2JpdHNfZGVmYXVsdF1cbiAgICA7IGNhcGFjaXR5IDogaW50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IEFsYXJtX3ByZWNpc2lvbi50b19zcGFuIHQuYWxhcm1fcHJlY2lzaW9uXG5cbiAgKCogW21heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb25dIHJldHVybnMgdGhlIG51bWJlciBvZiBsZXZlbCBiaXRzIG5lZWRlZCBmb3IgYVxuICAgICB0aW1pbmcgd2hlZWwgd2l0aCB0aGUgc3BlY2lmaWVkIFthbGFybV9wcmVjaXNpb25dIHRvIGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbFxuICAgICBwb3NzaWJsZSB0aW1lcyBmcm9tIFtUaW1lX25zLmVwb2NoXSBvbndhcmQuICBTaW5jZSBub24tbmVnYXRpdmUgdGltZXMgaGF2ZSA2MiBiaXRzLFxuICAgICB3ZSByZXF1aXJlIFtMIDw9IDYyIC0gQV0sIHdoZXJlIFtBXSBpcyB0aGUgbnVtYmVyIG9mIGFsYXJtIGJpdHMgYW5kIFtMXSBpcyB0aGVcbiAgICAgbnVtYmVyIG9mIGxldmVsIGJpdHMuICopXG4gIGxldCBtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uID1cbiAgICBOdW1fa2V5X2JpdHMuKCAtIClcbiAgICAgIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICAgIChBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgTnVtX2tleV9iaXRzLiggPD0gKVxuICAgICAgICAgIChMZXZlbF9iaXRzLm51bV9iaXRzX2ludGVybmFsIHQubGV2ZWxfYml0cylcbiAgICAgICAgICAobWF4X251bV9sZXZlbF9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uKSk7XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb246aWdub3JlXG4gICAgICAgIH5jYXBhY2l0eTppZ25vcmVcbiAgICAgICAgfmxldmVsX2JpdHM6KGNoZWNrIExldmVsX2JpdHMuaW52YXJpYW50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/KGxldmVsX2JpdHMgPSBsZXZlbF9iaXRzX2RlZmF1bHQpIH5hbGFybV9wcmVjaXNpb24gKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIExldmVsX2JpdHMudHJpbSBsZXZlbF9iaXRzIH5tYXhfbnVtX2JpdHM6KG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gICAgaW5cbiAgICB7IGFsYXJtX3ByZWNpc2lvbjsgbGV2ZWxfYml0czsgY2FwYWNpdHkgfVxuICA7O1xuXG4gIGxldCBtaWNyb3NlY29uZF9wcmVjaXNpb24gKCkgPVxuICAgIGNyZWF0ZVxuICAgICAgKClcbiAgICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWNyb3NlY29uZFxuICAgICAgfmxldmVsX2JpdHM6KExldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEwOyAxMDsgNjsgNjsgNSBdKVxuICA7O1xuXG4gIGxldCBkdXJhdGlvbnMgdCA9XG4gICAgTGlzdC5mb2xkaW5nX21hcFxuICAgICAgdC5sZXZlbF9iaXRzXG4gICAgICB+aW5pdDooQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyB0LmFsYXJtX3ByZWNpc2lvbiB8PiBOdW1fa2V5X2JpdHMudG9faW50KVxuICAgICAgfmY6KGZ1biBudW1fYml0c19hY2N1bSBsZXZlbF9udW1fYml0cyAtPlxuICAgICAgICBsZXQgbnVtX2JpdHNfYWNjdW0gPSBudW1fYml0c19hY2N1bSArIChsZXZlbF9udW1fYml0cyB8PiBOdW1fa2V5X2JpdHMudG9faW50KSBpblxuICAgICAgICBsZXQgZHVyYXRpb24gPVxuICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgICAgICAgKGlmIG51bV9iaXRzX2FjY3VtID0gSW50NjMubnVtX2JpdHMgLSAxXG4gICAgICAgICAgICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICAgICAgICAgICBlbHNlIEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzX2FjY3VtKVxuICAgICAgICBpblxuICAgICAgICBudW1fYml0c19hY2N1bSwgZHVyYXRpb24pXG4gIDs7XG5lbmRcblxuXG4oKiogVGltaW5nIHdoZWVsIGlzIGltcGxlbWVudGVkIGFzIGEgcHJpb3JpdHkgcXVldWUgaW4gd2hpY2ggdGhlIGtleXMgYXJlXG4gICAgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVydmFscyBvZiB0aW1lLiAgVGhlIHByaW9yaXR5IHF1ZXVlIGlzXG4gICAgdW5saWtlIGEgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZSBpbiB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBhIFwiZGVsZXRlIG1pblwiIG9wZXJhdGlvbixcbiAgICBpdCBoYXMgYSBub25kZWNyZWFzaW5nIG1pbmltdW0gYWxsb3dlZCBrZXksIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHRpbWUsXG4gICAgYW5kIGFuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIG9wZXJhdGlvbiwgd2hpY2ggaW1wbGVtZW50cyBbYWR2YW5jZV9jbG9ja10uXG4gICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gYXMgYSBzaWRlIGVmZmVjdCByZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSB0aW1pbmdcbiAgICB3aGVlbCB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBuZXcgbWluaW11bSwgd2hpY2ggaW1wbGVtZW50cyBmaXJpbmcgdGhlIGFsYXJtc1xuICAgIHdob3NlIHRpbWUgaGFzIGV4cGlyZWQuXG5cbiAgICBBZGRpbmcgZWxlbWVudHMgdG8gYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gYSB0aW1pbmcgd2hlZWwgdGFrZXMgY29uc3RhbnQgdGltZSxcbiAgICB1bmxpa2UgYSBoZWFwLWJhc2VkIHByaW9yaXR5IHF1ZXVlIHdoaWNoIHRha2VzIGxvZyhOKSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgZWxlbWVudHMgaW4gdGhlIGhlYXAuICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGVcbiAgICBhbW91bnQgb2YgaW5jcmVhc2UgaW4gdGhlIG1pbi1hbGxvd2VkIGtleSwgYXMgY29tcGFyZWQgdG8gbG9nKE4pIGZvciBhIGhlYXAuICBJdCBpc1xuICAgIHRoZXNlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHRoYXQgbW90aXZhdGUgdGhlIGV4aXN0ZW5jZSBvZiB0aW1pbmcgd2hlZWxzIGFuZCBtYWtlXG4gICAgdGhlbSBhIGdvb2QgY2hvaWNlIGZvciBtYWludGFpbmcgYSBzZXQgb2YgYWxhcm1zLiAgV2l0aCBhIHRpbWluZyB3aGVlbCwgb25lIGNhblxuICAgIHN1cHBvcnQgYW55IG51bWJlciBvZiBhbGFybXMgcGF5aW5nIGNvbnN0YW50IG92ZXJoZWFkIHBlciBhbGFybSwgd2hpbGUgcGF5aW5nIGFcbiAgICBzbWFsbCBjb25zdGFudCBvdmVyaGVhZCBwZXIgdW5pdCBvZiB0aW1lIHBhc3NlZC5cblxuICAgIEFzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGhlIHRpbWluZyB3aGVlbCBkb2VzIGEgbGF6eSByYWRpeCBzb3J0IG9mIHRoZVxuICAgIGVsZW1lbnQga2V5cywgd2l0aCBsZXZlbCAwIGhhbmRsaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBbYl8wXSBiaXRzIGluIGEga2V5LCBhbmRcbiAgICBlYWNoIHN1YnNlcXVlbnQgbGV2ZWwgW2ldIGhhbmRsaW5nIHRoZSBuZXh0IG1vc3Qgc2lnbmlmaWNhbnQgW2JfaV0gYml0cy4gIFRoZSBsZXZlbHNcbiAgICBob2xkIGluY3JlYXNpbmdseSBsYXJnZXIgcmFuZ2VzIG9mIGtleXMsIHdoZXJlIHRoZSB1bmlvbiBvZiBhbGwgdGhlIGxldmVscyBjYW4gaG9sZFxuICAgIGFueSBrZXkgZnJvbSBbbWluX2FsbG93ZWRfa2V5IHRdIHRvIFttYXhfYWxsb3dlZF9rZXkgdF0uICBXaGVuIGEga2V5IGlzIGFkZGVkIHRvIHRoZVxuICAgIHRpbWluZyB3aGVlbCwgaXQgaXMgYWRkZWQgYXQgdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCB0aGF0IGNhbiBzdG9yZSB0aGUga2V5LiAgQXNcbiAgICB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRpbWluZy13aGVlbCBlbGVtZW50cyBtb3ZlIGRvd24gbGV2ZWxzIHVudGlsIHRoZXlcbiAgICByZWFjaCBsZXZlbCAwLCBhbmQgdGhlbiBhcmUgZXZlbnR1YWxseSByZW1vdmVkLiAgKilcbm1vZHVsZSBQcmlvcml0eV9xdWV1ZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgS2V5IDogSW50ZXJ2YWxfbnVtXG5cbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgICgqKiBBbiBbRWx0LnRdIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZCB0byBhIHRpbWluZyB3aGVlbC4gKilcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBhdCA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGtleSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgdmFsdWUgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIG51bGwgOiB1bml0IC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRWx0LnRcbiAgZW5kXG5cbiAgdmFsIHBvb2wgOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC5Qb29sLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtjcmVhdGUgP2xldmVsX2JpdHMgKCldIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdGltaW5nIHdoZWVsLCBbdF0sIHdpdGggW2xlbmd0aCB0ID0gMF1cbiAgICAgIGFuZCBbbWluX2FsbG93ZWRfa2V5IHQgPSAwXS4gKilcbiAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gP2xldmVsX2JpdHM6TGV2ZWxfYml0cy50IC0+IHVuaXQgLT4gJ2EgdFxuXG4gICgqKiBbbGVuZ3RoIHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuXG4gICgqKiBbbWluX2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtaW5pbXVtIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgVGhpcyBvbmx5XG4gICAgICBpbmRpY2F0ZXMgdGhlIHBvc3NpYmlsaXR5OyB0aGVyZSBuZWVkIG5vdCBiZSBhbiBlbGVtZW50IFtlbHRdIGluIFt0XSB3aXRoIFtFbHQua2V5XG4gICAgICBlbHQgPSBtaW5fYWxsb3dlZF9rZXkgdF0uICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgXCJtaW5fa2V5XCIgb3BlcmF0aW9uIGluIGFcbiAgICAgIHR5cGljYWwgcHJpb3JpdHkgcXVldWUuXG5cbiAgICAgIFttaW5fYWxsb3dlZF9rZXkgdF0gY2FuIGluY3JlYXNlIG92ZXIgdGltZSwgdmlhIGNhbGxzIHRvXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XS4gKilcbiAgdmFsIG1pbl9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gICgqKiBbbWF4X2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBBc1xuICAgICAgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCBzbyBkb2VzIFttYXhfYWxsb3dlZF9rZXldOyBob3dldmVyIGl0IGlzIG5vdCB0aGUgY2FzZVxuICAgICAgdGhhdCBbbWF4X2FsbG93ZWRfa2V5IHQgLSBtaW5fYWxsb3dlZF9rZXkgdF0gaXMgYSBjb25zdGFudC4gIEl0IGlzIGd1YXJhbnRlZWQgdGhhdFxuICAgICAgW21heF9hbGxvd2VkX2tleSB0ID49IG1pbl9hbGxvd2VkX2tleSB0ICsgMl5CIC0gMV0sXG4gICAgICB3aGVyZSBbQl0gaXMgdGhlIHN1bSBvZiB0aGUgYl9pIGluIFtsZXZlbF9iaXRzXS4gKilcbiAgdmFsIG1heF9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gIHZhbCBtaW5fZWx0XyA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcbiAgdmFsIGludGVybmFsX2FkZCA6ICdhIHQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiAnYSAtPiAnYSBJbnRlcm5hbF9lbHQudFxuXG4gICgqKiBbcmVtb3ZlIHQgZWx0XSByZW1vdmVzIFtlbHRdIGZyb20gW3RdLiAgSXQgaXMgYW4gZXJyb3IgaWYgW2VsdF0gaXMgbm90IGN1cnJlbnRseVxuICAgICAgaW4gW3RdLCBhbmQgdGhpcyBlcnJvciBtYXkgb3IgbWF5IG5vdCBiZSBkZXRlY3RlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuXG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+ICdhIEVsdC50IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gdW5pdFxuXG4gICgqKiBbY2xlYXIgdF0gcmVtb3ZlcyBhbGwgZWx0cyBmcm9tIFt0XS4gKilcbiAgdmFsIGNsZWFyIDogXyB0IC0+IHVuaXRcblxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBib29sXG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgKCoqIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZF0gaW5jcmVhc2VzIHRoZSBtaW5pbXVtIGFsbG93ZWRcbiAgICAgIGtleSBpbiBbdF0gdG8gW2tleV0sIGFuZCByZW1vdmVzIGFsbCBlbGVtZW50cyB3aXRoIGtleXMgbGVzcyB0aGFuIFtrZXldLCBhcHBseWluZ1xuICAgICAgW2hhbmRsZV9yZW1vdmVkXSB0byBlYWNoIGVsZW1lbnQgdGhhdCBpcyByZW1vdmVkLiAgSWYgW2tleSA8PSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICB0aGVuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGRvZXMgbm90aGluZy4gIE90aGVyd2lzZSwgaWZcbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCBbbWluX2FsbG93ZWRfa2V5IHQgPSBrZXldLlxuXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byBba2V5IC0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgYWx0aG91Z2ggcG9zc2libHkgbGVzcyB0aW1lLlxuXG4gICAgICBCZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbaGFuZGxlX3JlbW92ZWRdIGFjY2Vzc2VzIFt0XSBpbiBhbnkgd2F5IG90aGVyIHRoYW5cbiAgICAgIFtFbHRdIGZ1bmN0aW9ucy4gKilcbiAgdmFsIGluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgIDogICdhIHRcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBoYW5kbGVfcmVtb3ZlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnRcblxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgRWx0LnQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBmaXJlX3Bhc3RfYWxhcm1zXG4gICAgOiAgJ2EgdFxuICAgIC0+IGhhbmRsZV9maXJlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBub3c6VGltZV9ucy50XG4gICAgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gICgqKiBFYWNoIHNsb3QgaW4gYSBsZXZlbCBpcyBhIChwb3NzaWJseSBudWxsKSBwb2ludGVyIHRvIGEgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBvZiBlbGVtZW50cy4gIFdlIHBvb2wgdGhlIGVsZW1lbnRzIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZW0gYWZ0ZXIgdGhleSBhcmUgcmVtb3ZlZFxuICAgICAgZnJvbSB0aGUgdGltaW5nIHdoZWVsIChlaXRoZXIgdmlhIFtyZW1vdmVdIG9yIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldKS4gIEluXG4gICAgICBhZGRpdGlvbiB0byBzdG9yaW5nIHRoZSBba2V5XSwgW2F0XSwgYW5kIFt2YWx1ZV0gaW4gdGhlIGVsZW1lbnQsIHdlIHN0b3JlIHRoZVxuICAgICAgW2xldmVsX2luZGV4XSBzbyB0aGF0IHdlIGNhbiBxdWlja2x5IGdldCB0byB0aGUgbGV2ZWwgaG9sZGluZyBhbiBlbGVtZW50IHdoZW4gd2VcbiAgICAgIFtyZW1vdmVdIGl0LlxuXG4gICAgICBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFtFeHRlcm5hbF9lbHRdIGFuZCBbSW50ZXJuYWxfZWx0XSwgd2hpY2ggYXJlIHRoZSBzYW1lXG4gICAgICB1bmRlcm5lYXRoLiAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFuIFtJbnRlcm5hbF9lbHRdIGlzIGVpdGhlciBbbnVsbF0gb3IgYVxuICAgICAgdmFsaWQgcG9pbnRlci4gIE9uIHRoZSBvdGhlciBoYW5kLCBbRXh0ZXJuYWxfZWx0XXMgYXJlIHJldHVybmVkIHRvIHVzZXIgY29kZSwgc29cbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiB2YWxpZGl0eSAtLSB3ZSBhbHdheXMgdmFsaWRhdGUgYW4gW0V4dGVybmFsX2VsdF0gYmVmb3JlXG4gICAgICBkb2luZyBhbnl0aGluZyB3aXRoIGl0LlxuXG4gICAgICBJdCBpcyB0aGVyZWZvcmUgT0sgdG8gdXNlIFtQb29sLlVuc2FmZV0sIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciBhdHRlbXB0IHRvIGFjY2VzcyBhXG4gICAgICBzbG90IG9mIGFuIGludmFsaWQgcG9pbnRlci4gKilcbiAgbW9kdWxlIFBvb2wgPSBQb29sLlVuc2FmZVxuXG4gIG1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICgqKiBbSW50ZXJ2YWxfbnVtXSBpcyB0aGUgcHVibGljIEFQSS4gIEV2ZXJ5dGhpbmcgZm9sbG93aW5nIGluIHRoZSBzaWduYXR1cmUgaXNcbiAgICAgICAgZm9yIGludGVybmFsIHVzZS4gKilcbiAgICBpbmNsdWRlIFRpbWluZ193aGVlbF9pbnRmLkludGVydmFsX251bVxuXG4gICAgKCoqIFthZGRfY2xhbXBfdG9fbWF4XSBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggbmVnYXRpdmUgc3BhbnMgKilcbiAgICB2YWwgYWRkX2NsYW1wX3RvX21heCA6IHQgLT4gU3Bhbi50IC0+IHRcblxuICAgIHZhbCBzdWNjX2NsYW1wX3RvX21heCA6IHQgLT4gdFxuXG4gICAgKCoqIFtTbG90c19tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGEga2V5J3Mgc2xvdCBpbiBhIGdpdmVuIGxldmVsLiAqKVxuICAgIG1vZHVsZSBTbG90c19tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgdmFsIGNyZWF0ZSA6IGxldmVsX2JpdHM6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgICAgdmFsIG5leHRfc2xvdCA6IHQgLT4gaW50IC0+IGludFxuICAgIGVuZFxuXG4gICAgKCoqIFtNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGtleSBpbiB0aGVcbiAgICAgICAgc2FtZSBzbG90IGFzIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBFcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGNyZWF0ZSA6IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIG51bV9rZXlzIDogTnVtX2tleV9iaXRzLnQgLT4gU3Bhbi50XG4gICAgdmFsIG1pbl9rZXlfaW5fc2FtZV9zbG90IDogdCAtPiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnQgLT4gdFxuICAgIHZhbCBzbG90IDogdCAtPiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHNsb3RzX21hc2s6U2xvdHNfbWFzay50IC0+IGludFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZXZlbF9iaXRzID0gSW50NjMuKCAtICkgKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpIEludDYzLm9uZVxuICAgICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSAoc2xvdCArIDEpIGxhbmQgSW50NjMudG9faW50X2V4biB0XG4gICAgZW5kXG5cbiAgICBsZXQgbnVtX2tleXMgbnVtX2JpdHMgPSBOdW1fa2V5X2JpdHMucG93MiBudW1fYml0c1xuXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IGNyZWF0ZSB+Yml0c19wZXJfc2xvdCA9IGJpdF9ub3QgKE51bV9rZXlfYml0cy5wb3cyIGJpdHNfcGVyX3Nsb3QgLSBvbmUpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgICAgbGV0IHNjYWxlX2ludCB0IGkgPSB0ICogb2ZfaW50IGlcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgIGxldCBhZGQgdCBpID0gdCArIGlcbiAgICBsZXQgYWRkX2NsYW1wX3RvX21heCB0IGkgPSBpZiB0ID4gbWF4X3ZhbHVlIC0gaSB0aGVuIG1heF92YWx1ZSBlbHNlIHQgKyBpXG4gICAgbGV0IHN1Y2NfY2xhbXBfdG9fbWF4IHQgPSBpZiB0ID0gbWF4X3ZhbHVlIHRoZW4gbWF4X3ZhbHVlIGVsc2Ugc3VjYyB0XG4gICAgbGV0IHN1YiB0IGkgPSB0IC0gaVxuICAgIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuXG4gICAgbGV0IHNsb3QgdCB+KGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudCkgfnNsb3RzX21hc2sgPVxuICAgICAgdG9faW50X2V4biAoYml0X2FuZCAoc2hpZnRfcmlnaHQgdCAoYml0c19wZXJfc2xvdCA6PiBpbnQpKSBzbG90c19tYXNrKVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgIGJpdF9hbmQgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBLZXkuTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICBtb2R1bGUgU2xvdHNfbWFzayA9IEtleS5TbG90c19tYXNrXG5cbiAgbW9kdWxlIEV4dGVybmFsX2VsdCA9IHN0cnVjdFxuXG4gICAgKCoqIFRoZSBbcG9vbF9zbG90c10gaGVyZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzbG90cyBpbiBhIGxldmVsIGFycmF5LiAgVGhpcyBpc1xuICAgICAgICBmb3IgdGhlIHNsb3RzIGluIHRoZSBwb29sIHR1cGxlIHJlcHJlc2VudGluZyBhIGxldmVsIGVsZW1lbnQuICopXG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID1cbiAgICAgICggS2V5LnRcbiAgICAgICwgVGltZV9ucy50XG4gICAgICAsICdhXG4gICAgICAsIGludFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCApXG4gICAgICAgIFBvb2wuU2xvdHMudDZcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgICAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gdW5pdCAtPiBfIHRcbiAgICAgIHZhbCBpc19mdWxsIDogXyB0IC0+IGJvb2xcbiAgICAgIHZhbCBncm93IDogP2NhcGFjaXR5OmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHByaXZhdGUgJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCoqIERlYWxpbmcgd2l0aCBbRXh0ZXJuYWxfZWx0XXMuICopXG5cbiAgICB2YWwgZXh0ZXJuYWxfaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnRcbiAgICB2YWwgb2ZfZXh0ZXJuYWxfZXhuIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+ICdhIHRcbiAgICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBQb29sLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtjcmVhdGVdIHJldHVybnMgYW4gZWxlbWVudCB3aG9zZSBbbmV4dF0gYW5kIFtwcmV2XSBhcmUgW251bGxdLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogICdhIFBvb2wudFxuICAgICAgLT4ga2V5OktleS50XG4gICAgICAoKiogW2F0XSBpcyB1c2VkIHdoZW4gdGhlIHByaW9yaXR5IHF1ZXVlIGlzIHVzZWQgdG8gaW1wbGVtZW50IGEgdGltaW5nIHdoZWVsLiAgSWZcbiAgICAgICAgICB1bnVzZWQsIGl0IHdpbGwgYmUgW1RpbWVfbnMuZXBvY2hdLiAqKVxuICAgICAgLT4gYXQ6VGltZV9ucy50XG4gICAgICAtPiB2YWx1ZTonYVxuICAgICAgLT4gbGV2ZWxfaW5kZXg6aW50XG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZnJlZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBhY2Nlc3NvcnMgKilcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBhdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBsZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBuZXh0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB2YWx1ZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhXG5cbiAgICAoKiogbXV0YXRvcnMgKilcblxuICAgIHZhbCBzZXRfa2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnQgLT4gdW5pdFxuXG4gICAgKCoqIFtpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkXSB0cmVhdHMgW3RdIGFzIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGFuZCBhZGRzIFt0b19hZGRdXG4gICAgICAgIHRvIHRoZSBlbmQgb2YgaXQuICopXG4gICAgdmFsIGluc2VydF9hdF9lbmQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB0b19hZGQ6J2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2xpbmtfdG9fc2VsZiBwb29sIHRdIG1ha2VzIFt0XSBiZSBhIHNpbmdsZXRvbiBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3QuICopXG4gICAgdmFsIGxpbmtfdG9fc2VsZiA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbdW5saW5rIHAgdF0gdW5saW5rcyBbdF0gZnJvbSB0aGUgY2lyY3VsYXJseSBkb3VibHktbGlua2VkIGxpc3QgdGhhdCBpdCBpcyBpbi4gIEl0XG4gICAgICAgIGNoYW5nZXMgdGhlIHBvaW50ZXJzIG9mIFt0XSdzIFtwcmV2XSBhbmQgW25leHRdIGVsdHMsIGJ1dCBub3QgW3RdJ3MgW3ByZXZdIGFuZFxuICAgICAgICBbbmV4dF0gcG9pbnRlcnMuICBbdW5saW5rXSBpcyBtZWFuaW5nbGVzcyBpZiBbdF0gaXMgYSBzaW5nbGV0b24uICopXG4gICAgdmFsIHVubGluayA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBJdGVyYXRvcnMuICBbaXRlciBwIHQgfmluaXQgfmZdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgICBjb250YWluaW5nIFt0XSwgc3RhcnRpbmcgYXQgW3RdLCBhbmQgZm9sbG93aW5nIFtuZXh0XSBwb2ludGVycy4gIFtsZW5ndGhdIGNvdW50c1xuICAgICAgICBieSB2aXNpdGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QuICopXG4gICAgdmFsIGl0ZXIgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBmOignYSB0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBsZW5ndGggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcblxuICAgICgqKiBbbWF4X2FsYXJtX3RpbWUgdCBlbHQgfndpdGhfa2V5XSBmaW5kcyB0aGUgbWF4IFthdF0gaW4gW2VsdF0ncyBsaXN0IGFtb25nIHRoZSBlbHRzXG4gICAgICAgIHdob3NlIGtleSBpcyBbd2l0aF9rZXldLCByZXR1cm5pbmcgW1RpbWVfbnMuZXBvY2hdIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAqKVxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuXG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9ICdhIEV4dGVybmFsX2VsdC5wb29sX3Nsb3RzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gICAgbGV0IGlzX251bGwgPSBQb2ludGVyLmlzX251bGxcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEgdDJcblxuICAgIGxldCBjcmVhdGUgcG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4ID1cbiAgICAgIFBvb2wubmV3NiBwb29sIGtleSBhdCB2YWx1ZSBsZXZlbF9pbmRleCAobnVsbCAoKSkgKG51bGwgKCkpXG4gICAgOztcblxuICAgIGxldCBmcmVlID0gUG9vbC5mcmVlXG4gICAgbGV0IGtleSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQwXG4gICAgbGV0IHNldF9rZXkgcCB0IGsgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQwIGtcbiAgICBsZXQgYXQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MVxuICAgIGxldCBzZXRfYXQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQxIHhcbiAgICBsZXQgdmFsdWUgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MlxuICAgIGxldCBsZXZlbF9pbmRleCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQzXG4gICAgbGV0IHNldF9sZXZlbF9pbmRleCBwIHQgaSA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDMgaVxuICAgIGxldCBwcmV2IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDRcbiAgICBsZXQgc2V0X3ByZXYgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ0IHhcbiAgICBsZXQgbmV4dCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ1XG4gICAgbGV0IHNldF9uZXh0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NSB4XG4gICAgbGV0IGlzX3ZhbGlkIHAgdCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCBwIHRcbiAgICBsZXQgZXh0ZXJuYWxfaXNfdmFsaWQgPSBpc192YWxpZFxuXG4gICAgbGV0IGludmFyaWFudCBwb29sIGludmFyaWFudF9hIHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgICAgYXNzZXJ0IChpc192YWxpZCBwb29sIHQpO1xuICAgICAgICBpbnZhcmlhbnRfYSAodmFsdWUgcG9vbCB0KTtcbiAgICAgICAgbGV0IG4gPSBuZXh0IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgbiB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAocHJldiBwb29sIG4pKTtcbiAgICAgICAgbGV0IHAgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgcCB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAobmV4dCBwb29sIHApKSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxuICAgICAgbGV0IGNyZWF0ZSA/KGNhcGFjaXR5ID0gMSkgKCkgPSBQb29sLmNyZWF0ZSBQb29sLlNsb3RzLnQ2IH5jYXBhY2l0eVxuICAgICAgbGV0IGdyb3cgPSBQb29sLmdyb3dcbiAgICAgIGxldCBpc19mdWxsID0gUG9vbC5pc19mdWxsXG4gICAgZW5kXG5cbiAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IHRcblxuICAgIGxldCBvZl9leHRlcm5hbF9leG4gcG9vbCB0ID1cbiAgICAgIGlmIGlzX3ZhbGlkIHBvb2wgdCB0aGVuIHQgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbCBnb3QgaW52YWxpZCBhbGFybVwiXVxuICAgIDs7XG5cbiAgICBsZXQgdW5saW5rIHBvb2wgdCA9XG4gICAgICBzZXRfbmV4dCBwb29sIChwcmV2IHBvb2wgdCkgKG5leHQgcG9vbCB0KTtcbiAgICAgIHNldF9wcmV2IHBvb2wgKG5leHQgcG9vbCB0KSAocHJldiBwb29sIHQpXG4gICAgOztcblxuICAgIGxldCBsaW5rIHBvb2wgcHJldiBuZXh0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgcHJldiBuZXh0O1xuICAgICAgc2V0X3ByZXYgcG9vbCBuZXh0IHByZXZcbiAgICA7O1xuXG4gICAgbGV0IGxpbmtfdG9fc2VsZiBwb29sIHQgPSBsaW5rIHBvb2wgdCB0XG5cbiAgICBsZXQgaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZCA9XG4gICAgICBsZXQgcHJldiA9IHByZXYgcG9vbCB0IGluXG4gICAgICBsaW5rIHBvb2wgcHJldiB0b19hZGQ7XG4gICAgICBsaW5rIHBvb2wgdG9fYWRkIHRcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgcG9vbCBmaXJzdCB+ZiA9XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAoKiBXZSBnZXQgW25leHRdIGJlZm9yZSBjYWxsaW5nIFtmXSBzbyB0aGF0IFtmXSBjYW4gbW9kaWZ5IG9yIFtmcmVlXSBbIWN1cnJlbnRdLiAqKVxuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBmICFjdXJyZW50O1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHBvb2wgZmlyc3QgPVxuICAgICAgbGV0IHIgPSByZWYgMCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgaW5jciByO1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgOztcblxuICAgIGxldCBtYXhfYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWF4X2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5lcG9jaCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtYXhfYWxhcm1fdGltZSA6PSBUaW1lX25zLm1heCAoYXQgcG9vbCAhY3VycmVudCkgIW1heF9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtYXhfYWxhcm1fdGltZVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICgqIFRoZSBba2V5XSBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBmb3IgW21heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0gYmVjYXVzZVxuICAgICAgICAgICBtYXggdGltZSBwZXIgaW50ZXJ2YWwgaXMgbm90IHRoZSBzYW1lIGFzIG1heCB0aW1lIGdsb2JhbGx5LlxuXG4gICAgICAgICAgIFRoaXMgaXMgbm90IHNvIGZvciBbbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSwgc28gdGhpcyBjYW4gcG90ZW50aWFsbHlcbiAgICAgICAgICAgYmUgc2ltcGxpZmllZC5cblxuICAgICAgICAgICBQcm9iYWJseSBhIGJldHRlciBjaGFuZ2Ugd291bGQgYmUgdG8gc2ltcGx5IHRyYW5zZmVyIHRoZSBldmVudHMgdG8gdGhlXG4gICAgICAgICAgIFwiZmlyZWRcIiBjb2xsZWN0aW9uIChhbmQgcmVuYW1lIGl0IHRvIFwiYWJvdXQgdG8gZmlyZVwiKSwgd2hpY2ggaXMgc29ydGVkIGJ5IHRpbWUsXG4gICAgICAgICAgIHNvIGdldHRpbmcgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gaXMgZWZmaWNpZW50LlxuICAgICAgICAqKVxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1pbl9hbGFybV90aW1lIDo9IFRpbWVfbnMubWluIChhdCBwb29sICFjdXJyZW50KSAhbWluX2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1pbl9hbGFybV90aW1lXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIExldmVsID0gc3RydWN0XG4gICAgKCoqIEZvciBnaXZlbiBsZXZlbCwgb25lIGNhbiBicmVhayB0aGUgYml0cyBpbnRvIGEga2V5IGludG8gdGhyZWUgcmVnaW9uczpcblxuICAgICAgICB7dlxuICAgICAgICAgfCBoaWdoZXIgbGV2ZWxzIHwgdGhpcyBsZXZlbCB8IGxvd2VyIGxldmVscyB8XG4gICAgICAgIHZ9XG5cbiAgICAgICAgXCJMb3dlciBsZXZlbHNcIiBpcyBbYml0c19wZXJfc2xvdF0gYml0cyB3aWRlLiAgXCJUaGlzIGxldmVsXCIgaXMgW2JpdHNdIHdpZGUuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogVGhlIFtpbmRleF0gaW4gdGhlIHRpbWluZyB3aGVlbCdzIGFycmF5IG9mIGxldmVscyB3aGVyZSB0aGlzIGxldmVsIGlzLiAqKVxuICAgICAgICBpbmRleCA6IGludFxuICAgICAgOyAoKiBIb3cgbWFueSBbYml0c10gdGhpcyBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IuICopXG4gICAgICAgIGJpdHMgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyAoKiBbc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOnQuYml0c10uICopXG4gICAgICAgIHNsb3RzX21hc2sgOiBTbG90c19tYXNrLnRcbiAgICAgIDsgKCogW2JpdHNfcGVyX3Nsb3RdIGlzIGhvdyBtYW55IGJpdHMgZWFjaCBzbG90IGRpc3Rpbmd1aXNoZXMsIGFuZCBpcyB0aGUgc3VtIG9mIG9mXG4gICAgICAgICAgIHRoZSBbYml0c10gb2YgYWxsIHRoZSBsb3dlciBsZXZlbHMuICopXG4gICAgICAgIGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyBrZXlzX3Blcl9zbG90IDogS2V5LlNwYW4udFxuICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50XG4gICAgICA7ICgqIFtkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPSBrZXlzX3Blcl9zbG90ICogQXJyYXkubGVuZ3RoIHNsb3RzIC0gMV0gKilcbiAgICAgICAgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IDogS2V5LlNwYW4udFxuICAgICAgOyAoKiBbbGVuZ3RoXSBpcyB0aGUgbnVtYmVyIG9mIGVsdHMgY3VycmVudGx5IGluIHRoaXMgbGV2ZWwuICopXG4gICAgICAgIG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7ICgqIEFsbCBlbGVtZW50cyBhdCB0aGlzIGxldmVsIGhhdmUgdGhlaXIgW2tleV0gc2F0aXNmeSBbbWluX2FsbG93ZWRfa2V5IDw9IGtleSA8PVxuICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXldLiAgQWxzbywgW21pbl9hbGxvd2VkX2tleV0gaXMgYSBtdWx0aXBsZSBvZiBba2V5c19wZXJfc2xvdF0uICopXG4gICAgICAgIG11dGFibGUgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyAoKiBbc2xvdHNdIGhvbGRzIHRoZSAocG9zc2libHkgbnVsbCkgcG9pbnRlcnMgdG8gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdHNcbiAgICAgICAgICAgb2YgZWx0cy4gIFtBcnJheS5sZW5ndGggc2xvdHMgPSAxIGxzbCBiaXRzXS4gKilcbiAgICAgICAgc2xvdHMgOiAoJ2EgSW50ZXJuYWxfZWx0LnQgYXJyYXlbQHNleHAub3BhcXVlXSlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2xvdCB0IH5rZXkgPSBLZXkuc2xvdCBrZXkgfmJpdHNfcGVyX3Nsb3Q6dC5iaXRzX3Blcl9zbG90IH5zbG90c19tYXNrOnQuc2xvdHNfbWFza1xuICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gU2xvdHNfbWFzay5uZXh0X3Nsb3QgdC5zbG90c19tYXNrIHNsb3RcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXkgPVxuICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IGtleSB0Lm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuXG4gICAgbGV0IGNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IHQgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICgqIFRoaXMgY29tcHV0YXRpb24gZW5zdXJlcyB0aGF0IFt0XSdzIFttaW5fYWxsb3dlZF9rZXldIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlXG4gICAgICAgICBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50IHRoYXQgdGhlcmUgaXMgbm8gaW50ZXItbGV2ZWwgZ2FwLiAqKVxuICAgICAgaWYgS2V5LmVxdWFsIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgIHRoZW4gS2V5Lm1heF92YWx1ZVxuICAgICAgZWxzZSBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXk6KEtleS5zdWNjIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBwb29sIDogJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuICAgIDsgKCogW21pbl9lbHRdIGlzIGVpdGhlciBudWxsIG9yIGFuIGVsZW1lbnQgd2hvc2Uga2V5IGlzIFtlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgbWluX2VsdCA6ICdhIEludGVybmFsX2VsdC50XG4gICAgOyAoKiBBbGwgZWxlbWVudHMgaW4gdGhlIHByaW9yaXR5IHF1ZXVlIGhhdmUgdGhlaXIga2V5IFs+PSBlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgZWx0X2tleV9sb3dlcl9ib3VuZCA6IEtleS50XG4gICAgOyBsZXZlbHMgOiAnYSBMZXZlbC50IGFycmF5XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gRXh0ZXJuYWxfZWx0Lm51bGxcbiAgICBsZXQgYXQgcCB0ID0gSW50ZXJuYWxfZWx0LmF0IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQga2V5IHAgdCA9IEludGVybmFsX2VsdC5rZXkgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCB2YWx1ZSBwIHQgPSBJbnRlcm5hbF9lbHQudmFsdWUgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG4gIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBudW1fbGV2ZWxzIHQgPSBBcnJheS5sZW5ndGggdC5sZXZlbHNcbiAgbGV0IG1pbl9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWluX2FsbG93ZWRfa2V5IHQubGV2ZWxzLigwKVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKG51bV9sZXZlbHMgdCAtIDEpXG5cbiAgbGV0IGludGVybmFsX2l0ZXIgdCB+ZiA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpIHRoZW4gSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmZcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gaW50ZXJuYWxfaXRlciB0IH5mOihmIDogXyBFbHQudCAtPiB1bml0IDo+IF8gSW50ZXJuYWxfZWx0LnQgLT4gdW5pdClcblxuICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBrZXkgOiBLZXkudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IGVsdHMgOiAnYSBFbHQudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHByZXR0eSB0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIHsgUHJldHR5Lm1pbl9hbGxvd2VkX2tleSA9IG1pbl9hbGxvd2VkX2tleSB0XG4gICAgOyBtYXhfYWxsb3dlZF9rZXkgPSBtYXhfYWxsb3dlZF9rZXkgdFxuICAgIDsgZWx0cyA9XG4gICAgICAgIChsZXQgciA9IHJlZiBbXSBpblxuICAgICAgICAgaW50ZXJuYWxfaXRlciB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIHJcbiAgICAgICAgICAgOj0geyBQcmV0dHkuRWx0LmtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHRcbiAgICAgICAgICAgICAgOyB2YWx1ZSA9IEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6ICFyKTtcbiAgICAgICAgIExpc3QucmV2ICFyKVxuICAgIH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgICB8IGBJbnRlcm5hbCAtPiBbJXNleHAgKHQgOiBhIHRfaW50ZXJuYWwpXVxuICAgIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG4gIDs7XG5cbiAgbGV0IGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90ID1cbiAgICBsZXQgYml0cyA9IE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICBpZiBOdW1fa2V5X2JpdHMuZXF1YWwgYml0cyBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgdGhlbiBLZXkuU3Bhbi5tYXhfdmFsdWVcbiAgICBlbHNlIEtleS5TcGFuLnByZWQgKEtleS5udW1fa2V5cyBiaXRzKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGxldmVsX2ludmFyaWFudCBsZXZlbCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gbGV2ZWwgWyVzZXhwX29mOiBfIExldmVsLnRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgbGV2ZWwgZiBpblxuICAgICAgICBMZXZlbC5GaWVsZHMuaXRlclxuICAgICAgICAgIH5pbmRleDooY2hlY2sgKGZ1biBpbmRleCAtPiBhc3NlcnQgKGluZGV4ID49IDApKSlcbiAgICAgICAgICB+Yml0czooY2hlY2sgKGZ1biBiaXRzIC0+IGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIGJpdHMgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+c2xvdHNfbWFzazpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IFNsb3RzX21hc2sudF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOmxldmVsLmJpdHMpKSlcbiAgICAgICAgICB+Yml0c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGJpdHNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPj0gKSBiaXRzX3Blcl9zbG90IE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfmtleXNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBrZXlzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5udW1fa2V5cyBsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2s6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICAgIChNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSkpXG4gICAgICAgICAgfmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAoY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgfmxldmVsX2JpdHM6bGV2ZWwuYml0c1xuICAgICAgICAgICAgICAgICAgICAgICB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfmxlbmd0aDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gICAgICAgICAgICAgICAgID0gQXJyYXkuZm9sZCBsZXZlbC5zbG90cyB+aW5pdDowIH5mOihmdW4gbiBlbHQgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgICAgICAgICAgICAgICAgICB0aGVuIG5cbiAgICAgICAgICAgICAgICAgICBlbHNlIG4gKyBJbnRlcm5hbF9lbHQubGVuZ3RoIHBvb2wgZWx0KSkpKVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lnplcm8pO1xuICAgICAgICAgICAgICAgaWYgS2V5LiggPCApIG1pbl9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEtleS5yZW0gbWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpLZXkuU3Bhbi56ZXJvKSlcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKEtleS5hZGRfY2xhbXBfdG9fbWF4XG4gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KSkpXG4gICAgICAgICAgfnNsb3RzOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gc2xvdHMgLT5cbiAgICAgICAgICAgICAgIEFycmF5Lml0ZXIgc2xvdHMgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSBlbHQ7XG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgICAgICAgIEtleS4oID49IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgICAgICAgS2V5LiggPD0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1heF9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICAgICAgICBLZXkuKCA+PSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0ID0gbGV2ZWwuaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgaW52YXJpYW50X2EgKEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdCkpKSkpKSlcbiAgICBpblxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0X2ludGVybmFsXSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAobWluX2FsbG93ZWRfa2V5IHQpIEtleS56ZXJvKTtcbiAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAobWF4X2FsbG93ZWRfa2V5IHQpIChtaW5fYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmxlbmd0aDooY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPj0gMCkpKVxuICAgICAgICB+cG9vbDooY2hlY2sgKEludGVybmFsX2VsdC5Qb29sLmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgICB+bWluX2VsdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfIC0+XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRfKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQuaXNfdmFsaWQgdC5wb29sIGVsdF8pO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuZXF1YWwgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHRfKSkpKSlcbiAgICAgICAgfmVsdF9rZXlfbG93ZXJfYm91bmQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0X2tleV9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSBlbHRfa2V5X2xvd2VyX2JvdW5kIChtaW5fYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPD0gKSBlbHRfa2V5X2xvd2VyX2JvdW5kIChtYXhfYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIEtleS5lcXVhbCBlbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCB0Lm1pbl9lbHQpKSkpXG4gICAgICAgIH5sZXZlbHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGV2ZWxzIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChudW1fbGV2ZWxzIHQgPiAwKTtcbiAgICAgICAgICAgICBBcnJheS5pdGVyaSBsZXZlbHMgfmY6KGZ1biBsZXZlbF9pbmRleCBsZXZlbCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChsZXZlbF9pbmRleCA9IExldmVsLmluZGV4IGxldmVsKTtcbiAgICAgICAgICAgICAgIGxldmVsX2ludmFyaWFudCBsZXZlbDtcbiAgICAgICAgICAgICAgIGlmIGxldmVsX2luZGV4ID4gMFxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwcmV2X2xldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCAtIDEpIGluXG4gICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgTCA9IExldmVsIGluXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEwua2V5c19wZXJfc2xvdCBsZXZlbClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkuU3Bhbi5zdWNjIHByZXZfbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgIChMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTpwcmV2X2xldmVsLm1heF9hbGxvd2VkX2tleSkpKSkpKVxuICA7O1xuXG4gICgqKiBbbWluX2VsdF9dIHJldHVybnMgW251bGxdIGlmIGl0IGNhbid0IGZpbmQgdGhlIGRlc2lyZWQgZWxlbWVudC4gIFdlIHdyYXAgaXQgdXBcbiAgICAgIGFmdGVyd2FyZHMgdG8gcmV0dXJuIGFuIFtvcHRpb25dLiAqKVxuICBsZXQgbWluX2VsdF8gdCA9XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgIHRoZW4gdC5taW5fZWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA9IHJlZiAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpIGluXG4gICAgICBsZXQgbWluX2tleV9hbHJlYWR5X2ZvdW5kID0gcmVmIEtleS5tYXhfdmFsdWUgaW5cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBLZXkuKCA+ICkgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhbnkgbW9yZSBsZXZlbHMuICBRdWl0IHRoZSBsb29wLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHNcbiAgICAgICAgZWxzZSBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICAgIHRoZW4gaW5jciBsZXZlbF9pbmRleFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMb29rIGluIFtsZXZlbF0uICopXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBsZXQgc2xvdF9taW5fa2V5ID1cbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICAoTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgfmtleTooS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IXNsb3RfbWluX2tleSkgaW5cbiAgICAgICAgICAoKiBGaW5kIHRoZSBmaXJzdCBub25lbXB0eSBzbG90IHdpdGggYSBzbWFsbCBlbm91Z2ggW3Nsb3RfbWluX2tleV0uICopXG4gICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5pc19udWxsIHNsb3RzLighc2xvdClcbiAgICAgICAgICAgICYmIEtleS4oIDwgKSAhc2xvdF9taW5fa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICBkb1xuICAgICAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgICAgICBzbG90X21pbl9rZXkgOj0gS2V5LmFkZCAhc2xvdF9taW5fa2V5IGxldmVsLmtleXNfcGVyX3Nsb3RcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVmlzaXQgYWxsIG9mIHRoZSBlbHRzIGluIHRoaXMgc2xvdCBhbmQgZmluZCBvbmUgd2l0aCBtaW5pbXVtIGtleS4gKilcbiAgICAgICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgICAgIGxldCBjdXJyZW50X2tleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICBpZiBLZXkuKCA8PSApIGN1cnJlbnRfa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWluX2VsdF9hbHJlYWR5X2ZvdW5kIDo9ICFjdXJyZW50O1xuICAgICAgICAgICAgICAgIG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA6PSBjdXJyZW50X2tleSk7XG4gICAgICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICAoKiBJZiBbIWxldmVsX2luZGV4ID0gMF0gdGhlbiBhbGwgZWx0cyBpbiB0aGlzIHNsb3QgaGF2ZSB0aGUgc2FtZSBba2V5XSxcbiAgICAgICAgICAgICAgICAgaS5lLiBbIXNsb3RfbWluX2tleV0uICBTbywgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnkgZWxlbWVudHMgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgW2ZpcnN0XS4gIFRoaXMgaXMgYSB1c2VmdWwgc2hvcnQgY3V0IGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZXJlIGFyZVxuICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBtaW4gc2xvdCBpbiBsZXZlbCAwLiAqKVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgfHwgIWxldmVsX2luZGV4ID0gMFxuICAgICAgICAgICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICAgICAgICAgIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAoKiBGaW5pc2hlZCBsb29raW5nIGluIFtsZXZlbF0uICBNb3ZlIHVwIHRvIHRoZSBuZXh0IGxldmVsLiAqKVxuICAgICAgICAgIGluY3IgbGV2ZWxfaW5kZXgpXG4gICAgICBkb25lO1xuICAgICAgdC5taW5fZWx0IDwtICFtaW5fZWx0X2FscmVhZHlfZm91bmQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gIW1pbl9rZXlfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQubWluX2VsdClcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgIChrZXkgOiBLZXkudClcbiAgICAgICAgICAobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICAobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+cHJpb3JpdHlfcXVldWU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWwgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBsZXZlbCBib3VuZHNcIiAoa2V5IDogS2V5LnQpIChsZXZlbCA6IF8gTGV2ZWwudCldXG4gIDs7XG5cbiAgbGV0IGFkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgJiYgS2V5LiggPD0gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXk7XG4gICAgKCogRmluZCB0aGUgbG93ZXN0IGxldmVsIHRoYXQgd2lsbCBob2xkIFtlbHRdLiAqKVxuICAgIGxldCBsZXZlbF9pbmRleCA9XG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgd2hpbGUgS2V5LiggPiApIGtleSAoTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpKSBkb1xuICAgICAgICBpbmNyIGxldmVsX2luZGV4XG4gICAgICBkb25lO1xuICAgICAgIWxldmVsX2luZGV4XG4gICAgaW5cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgJiYgS2V5LiggPD0gKSBrZXkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWw7XG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCArIDE7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9sZXZlbF9pbmRleCBwb29sIGVsdCBsZXZlbF9pbmRleDtcbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICB0aGVuIEludGVybmFsX2VsdC5pbnNlcnRfYXRfZW5kIHBvb2wgZmlyc3QgfnRvX2FkZDplbHRcbiAgICBlbHNlIChcbiAgICAgIHNsb3RzLihzbG90KSA8LSBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQubGlua190b19zZWxmIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0IGluXG4gICAgaWYgS2V5LiggPCApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICB0aGVuIChcbiAgICAgIHQubWluX2VsdCA8LSBlbHQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0ga2V5KTtcbiAgICBhZGRfZWx0IHQgZWx0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuYWRkX2F0X2ludGVydmFsX251bSBnb3QgaW52YWxpZCBpbnRlcnZhbCBudW1cIlxuICAgICAgICAgIH5pbnRlcnZhbF9udW06KGtleSA6IEtleS50KVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudCldXG4gIDs7XG5cbiAgbGV0IGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5ID1cbiAgICBpZiBLZXkuKCA8ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgfHwgS2V5LiggPiApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXlcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkIHQgfmtleSB+YXQgdmFsdWUgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGlmIEludGVybmFsX2VsdC5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIEludGVybmFsX2VsdC5Qb29sLmdyb3cgdC5wb29sO1xuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQuY3JlYXRlIHQucG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4OigtMSkgaW5cbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0O1xuICAgIGVsdFxuICA7O1xuXG4gICgqKiBbcmVtb3ZlX29yX3JlX2FkZF9lbHRzXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIFtmaXJzdF0uICBJZiB0aGUgZWxlbWVudCdzIGtleSBpcyBbPj0gdF9taW5fYWxsb3dlZF9rZXldLCB0aGVuIGl0IGFkZHMgdGhlIGVsZW1lbnRcbiAgICAgIGJhY2sgYXQgYSBsb3dlciBsZXZlbC4gIElmIG5vdCwgdGhlbiBpdCBjYWxscyBbaGFuZGxlX3JlbW92ZWRdIGFuZCBbZnJlZV1zIHRoZVxuICAgICAgZWxlbWVudC4gKilcbiAgbGV0IHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IChsZXZlbCA6IF8gTGV2ZWwudCkgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICgqIFdlIGV4dHJhY3QgW25leHRdIGZyb20gW2N1cnJlbnRdIGZpcnN0LCBiZWNhdXNlIHdlIHdpbGwgbW9kaWZ5IG9yIFtmcmVlXVxuICAgICAgICAgW2N1cnJlbnRdIGJlZm9yZSBjb250aW51aW5nIHRoZSBsb29wLiAqKVxuICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICAgIGlmIEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCkgdF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIHRoZW4gYWRkX2VsdCB0ICFjdXJyZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgICBoYW5kbGVfcmVtb3ZlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsICFjdXJyZW50KTtcbiAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCAhY3VycmVudCk7XG4gICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgIGRvbmVcbiAgOztcblxuICAoKiogW2luY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBbbGV2ZWxdIHRvIGFzXG4gICAgICBsYXJnZSBhIHZhbHVlIGFzIHBvc3NpYmxlLCBidXQgbm8gbW9yZSB0aGFuIFttYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XS5cbiAgICAgIFt0X21pbl9hbGxvd2VkX2tleV0gaXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgZm9yIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsLiAgQXNcbiAgICAgIGVsZW1lbnRzIGFyZSBlbmNvdW50ZXJlZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgaWYgdGhlaXIga2V5IGlzXG4gICAgICBzbWFsbGVyIHRoYW4gW3RfbWluX2FsbG93ZWRfa2V5XSwgb3IgYWRkZWQgYXQgYSBsb3dlciBsZXZlbCBpZiBub3QuICopXG4gIGxldCBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdFxuICAgICAgICAobGV2ZWwgOiBfIExldmVsLnQpXG4gICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleSBsZXZlbCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICBpblxuICAgICgqIFdlIHJlcXVpcmUgdGhhdCBbbW9kIGxldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90ID0gMF0uICBTbyxcbiAgICAgICB3ZSBzdGFydCBbbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSB3aGVyZSB0aGF0IGlzIHRydWUsIGFuZCB0aGVuIGluY3JlYXNlIGl0IGJ5XG4gICAgICAgW2tleXNfcGVyX3Nsb3RdIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLiAqKVxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgbGV2ZWxcbiAgICAgICAgfmtleTpcbiAgICAgICAgICAoS2V5Lm1pblxuICAgICAgICAgICAgIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgKEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgaW5cbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID0gcmVmIGxldmVsX21pbl9hbGxvd2VkX2tleSBpblxuICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IWxldmVsX21pbl9hbGxvd2VkX2tleSkgaW5cbiAgICBsZXQga2V5c19wZXJfc2xvdCA9IGxldmVsLmtleXNfcGVyX3Nsb3QgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIHdoaWxlIEtleS4oIDwgKSAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGRvXG4gICAgICBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICB0aGVuXG4gICAgICAgICgqIElmIG5vIGVsZW1lbnRzIHJlbWFpbiBhdCB0aGlzIGxldmVsLCB3ZSBjYW4ganVzdCBzZXQgW21pbl9hbGxvd2VkX2tleV0gdG8gdGhlXG4gICAgICAgICAgIGRlc2lyZWQgdmFsdWUuICopXG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc2xvdHMuKCFzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgICByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCBsZXZlbCBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkKTtcbiAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBLZXkuYWRkX2NsYW1wX3RvX21heCAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGtleXNfcGVyX3Nsb3QpXG4gICAgZG9uZTtcbiAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkgPC0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXk7XG4gICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5XG4gICAgPC0gS2V5LmFkZF9jbGFtcF90b19tYXggZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgbGV0IGluY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkIDogSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50ID1cbiAgICBpZiBLZXkuKCA8PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICBlbHNlIChcbiAgICAgICgqIFdlIGluY3JlYXNlIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBsZXZlbHMgaW4gb3JkZXIgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50XG4gICAgICAgICB0aGF0IHRoZXkgaGF2ZSBhcyBsYXJnZSBhcyBwb3NzaWJsZSBhIFttaW5fYWxsb3dlZF9rZXldLCB3aGlsZSBsZWF2aW5nIG5vIGdhcHNcbiAgICAgICAgIGluIGtleXMuICopXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0Lk1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIGluXG4gICAgICBsZXQgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPSByZWYgKEtleS5wcmVkIGtleSkgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlID0gbGV2ZWwubWluX2FsbG93ZWRfa2V5IGluXG4gICAgICAgIGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgIHRcbiAgICAgICAgICBsZXZlbFxuICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTohcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXk6a2V5XG4gICAgICAgICAgfmhhbmRsZV9yZW1vdmVkO1xuICAgICAgICBpZiBLZXkuZXF1YWwgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgbWluX2FsbG93ZWRfa2V5X2JlZm9yZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBUaGlzIGxldmVsIGRpZCBub3Qgc2hpZnQuICBEb24ndCBzaGlmdCBhbnkgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzO1xuICAgICAgICAgIHJlc3VsdCA6PSBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExldmVsIFtsZXZlbF9pbmRleF0gc2hpZnRlZC4gIENvbnNpZGVyIHNoaWZ0aW5nIGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gIWxldmVsX2luZGV4ICsgMTtcbiAgICAgICAgICBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA6PSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgbGV2ZWwpXG4gICAgICBkb25lO1xuICAgICAgaWYgS2V5LiggPiApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBXZSBoYXZlIHJlbW92ZWQgW3QubWluX2VsdF0gb3IgaXQgd2FzIGFscmVhZHkgbnVsbCwgc28ganVzdCBzZXQgaXQgdG9cbiAgICAgICAgICAgbnVsbC4gKilcbiAgICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gbWluX2FsbG93ZWRfa2V5IHQpO1xuICAgICAgIXJlc3VsdClcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/bGV2ZWxfYml0cyAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgbWF0Y2ggbGV2ZWxfYml0cyB3aXRoXG4gICAgICB8IFNvbWUgbCAtPiBsXG4gICAgICB8IE5vbmUgLT4gTGV2ZWxfYml0cy5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgXywgXywgbGV2ZWxzID1cbiAgICAgIExpc3QuZm9sZGlcbiAgICAgICAgbGV2ZWxfYml0c1xuICAgICAgICB+aW5pdDooTnVtX2tleV9iaXRzLnplcm8sIEtleS56ZXJvLCBbXSlcbiAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgKGJpdHNfcGVyX3Nsb3QsIG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXksIGxldmVscylcbiAgICAgICAgICAgICAobGV2ZWxfYml0cyA6IE51bV9rZXlfYml0cy50KVxuICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICBsZXQga2V5c19wZXJfc2xvdCA9IEtleS5udW1fa2V5cyBiaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgICBsZXQgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9XG4gICAgICAgICAgICAgICAgIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgS2V5LmFkZF9jbGFtcF90b19tYXggbWluX2FsbG93ZWRfa2V5IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBsZXZlbCA9XG4gICAgICAgICAgICAgICAgIHsgTGV2ZWwuaW5kZXhcbiAgICAgICAgICAgICAgICAgOyBiaXRzID0gbGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgICA7IHNsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgICA7IGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgOyBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICA7IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IGxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgICAgOyBtaW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgOyBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgOyBzbG90cyA9XG4gICAgICAgICAgICAgICAgICAgICBBcnJheS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgfmxlbjooSW50NjMudG9faW50X2V4biAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykpXG4gICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICggTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgLCBLZXkuc3VjY19jbGFtcF90b19tYXggbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAsIGxldmVsIDo6IGxldmVscyApKVxuICAgIGluXG4gICAgeyBsZW5ndGggPSAwXG4gICAgOyBwb29sID0gSW50ZXJuYWxfZWx0LlBvb2wuY3JlYXRlID9jYXBhY2l0eSAoKVxuICAgIDsgbWluX2VsdCA9IEludGVybmFsX2VsdC5udWxsICgpXG4gICAgOyBlbHRfa2V5X2xvd2VyX2JvdW5kID0gS2V5Lnplcm9cbiAgICA7IGxldmVscyA9IEFycmF5Lm9mX2xpc3RfcmV2IGxldmVsc1xuICAgIH1cbiAgOztcblxuICBsZXQgbWVtIHQgZWx0ID0gSW50ZXJuYWxfZWx0LmV4dGVybmFsX2lzX3ZhbGlkIHQucG9vbCBlbHRcblxuICBsZXQgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGlmIEludGVybmFsX2VsdC5lcXVhbCBlbHQgdC5taW5fZWx0XG4gICAgdGhlblxuICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgKCogV2Uga2VlcCBbdC5lbHRfbG93ZXJfYm91bmRdIHNpbmNlIGl0IGlzIHZhbGlkIGV2ZW4gdGhvdWdoIFt0Lm1pbl9lbHRdIGlzIGJlaW5nXG4gICAgICAgcmVtb3ZlZC4gKik7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQpIGluXG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBwaHlzX2VxdWFsIGVsdCAoSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQpXG4gICAgdGhlbiAoKiBbZWx0XSBpcyB0aGUgb25seSBlbGVtZW50IGluIHRoZSBzbG90ICopXG4gICAgICBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgZWx0IGZpcnN0IHRoZW4gc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LnVubGluayBwb29sIGVsdClcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0XG4gIDs7XG5cbiAgbGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkIH5rZXkgfm5vdyA9XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKDApIGluXG4gICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZpcnN0ID0gcmVmIHNsb3RzLihzbG90KSBpblxuICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCAhZmlyc3QpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgIWZpcnN0IGluXG4gICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgIGxldCBlbHQgPSAhY3VycmVudCBpblxuICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgIWZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHQ7XG4gICAgICAgICAgaWYgVGltZV9ucy4oIDw9ICkgKEludGVybmFsX2VsdC5hdCBwb29sIGVsdCkgbm93XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBoYW5kbGVfZmlyZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCBlbHQpO1xuICAgICAgICAgICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQ7XG4gICAgICAgICAgICAoKiBXZSByZWNvbXB1dGUgW2ZpcnN0XSBiZWNhdXNlIFtpbnRlcm5hbF9yZW1vdmVdIG1heSBoYXZlIGNoYW5nZWQgaXQuICopXG4gICAgICAgICAgICBmaXJzdCA6PSBzbG90cy4oc2xvdCkpXG4gICAgICAgIGRvbmUpKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBlbHQgfmtleSB+YXQgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9rZXkgcG9vbCBlbHQga2V5O1xuICAgIEludGVybmFsX2VsdC5zZXRfYXQgcG9vbCBlbHQgYXQ7XG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdFxuICA7O1xuXG4gIGxldCBjbGVhciB0ID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmcmVlX2VsdCBlbHQgPSBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV2ZWwubGVuZ3RoIDwtIDA7XG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6ZnJlZV9lbHQ7XG4gICAgICAgICAgICAgIHNsb3RzLihzbG90X2luZGV4KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxfZWx0ID0gUHJpb3JpdHlfcXVldWUuSW50ZXJuYWxfZWx0XG5tb2R1bGUgS2V5ID0gUHJpb3JpdHlfcXVldWUuS2V5XG5tb2R1bGUgSW50ZXJ2YWxfbnVtID0gS2V5XG5cbmxldCBtaW5faW50ZXJ2YWxfbnVtID0gSW50ZXJ2YWxfbnVtLnplcm9cblxuKCogQWxsIHRpbWUgZnJvbSB0aGUgZXBvY2ggb253YXJkcyBpcyBicm9rZW4gaW50byBoYWxmLW9wZW4gaW50ZXJ2YWxzIG9mIHNpemVcbiAgIFtDb25maWcuYWxhcm1fcHJlY2lzaW9uIGNvbmZpZ10uICBUaGUgaW50ZXJ2YWxzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCB6ZXJvLCBhbmQgYVxuICAgdGltZSdzIGludGVydmFsIG51bWJlciBzZXJ2ZXMgYXMgaXRzIGtleSBpbiBbcHJpb3JpdHlfcXVldWVdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBjb25maWcgOiBDb25maWcudFxuICA7IHN0YXJ0IDogVGltZV9ucy50XG4gIDsgKCogW21heF9pbnRlcnZhbF9udW1dIGlzIHRoZSBpbnRlcnZhbCBudW1iZXIgb2YgW21heF90aW1lXS4gKilcbiAgICBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgOyBtdXRhYmxlIG5vdyA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudFxuICA7IHByaW9yaXR5X3F1ZXVlIDogJ2EgUHJpb3JpdHlfcXVldWUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdGltaW5nX3doZWVsID0gJ2EgdFxudHlwZSAnYSB0X25vdyA9ICdhIHRcblxubGV0IHNleHBfb2ZfdF9ub3cgXyB0ID0gWyVzZXhwICh0Lm5vdyA6IFRpbWVfbnMudCldXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBDb25maWcuYWxhcm1fcHJlY2lzaW9uIHQuY29uZmlnXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmlvcml0eV9xdWV1ZS5FbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBudWxsID0gUHJpb3JpdHlfcXVldWUuRWx0Lm51bGxcbiAgbGV0IGF0IHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQuYXQgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgdmFsdWUgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC52YWx1ZSB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCBpbnRlcnZhbF9udW0gdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5rZXkgdHcucHJpb3JpdHlfcXVldWUgdFxuZW5kXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBpdGVyIHQgfmYgPSBQcmlvcml0eV9xdWV1ZS5pdGVyIHQucHJpb3JpdHlfcXVldWUgfmZcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBhdCA6IFRpbWVfbnMudFxuICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB0IGFsYXJtID0geyBhdCA9IEFsYXJtLmF0IHQgYWxhcm07IHZhbHVlID0gQWxhcm0udmFsdWUgdCBhbGFybSB9XG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBUaW1lX25zLmNvbXBhcmUgKGF0IHQxKSAoYXQgdDIpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb25maWcgOiBDb25maWcudFxuICAgIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICAgIDsgbm93IDogVGltZV9ucy50XG4gICAgOyBhbGFybXMgOiAnYSBBbGFybS50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IHByZXR0eVxuICAgICAgKHsgY29uZmlnXG4gICAgICAgOyBzdGFydFxuICAgICAgIDsgbWF4X2ludGVydmFsX251bVxuICAgICAgIDsgbm93XG4gICAgICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID0gX1xuICAgICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IF9cbiAgICAgICA7IHByaW9yaXR5X3F1ZXVlID0gX1xuICAgICAgIH0gYXMgdClcbiAgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IHIgOj0gUHJldHR5LkFsYXJtLmNyZWF0ZSB0IGEgOjogIXIpO1xuICBsZXQgYWxhcm1zID0gTGlzdC5zb3J0ICFyIH5jb21wYXJlOlByZXR0eS5BbGFybS5jb21wYXJlIGluXG4gIHsgUHJldHR5LmNvbmZpZzsgc3RhcnQ7IG1heF9pbnRlcnZhbF9udW07IG5vdzsgYWxhcm1zIH1cbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgfCBgSW50ZXJuYWwgLT4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2ZfYSB0XG4gIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBQcmlvcml0eV9xdWV1ZS5sZW5ndGggdC5wcmlvcml0eV9xdWV1ZVxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdpdGggYWxsIGFsYXJtcyBpbiBtYXggaW50ZXJ2YWxcIlxuICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldCBwb29sIHQgPSBQcmlvcml0eV9xdWV1ZS5wb29sIHQucHJpb3JpdHlfcXVldWVcblxubGV0IGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uID1cbiAgSW50ZXJ2YWxfbnVtLm9mX2ludDYzIChBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtIGFsYXJtX3ByZWNpc2lvbiB0aW1lKVxuOztcblxubGV0IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lID1cbiAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb246dC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgdGltZSBtaW5fdGltZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bSBnb3QgdGltZSB0b28gZmFyIGluIHRoZSBwYXN0XCIgKHRpbWUgOiBUaW1lX25zLnQpXTtcbiAgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWVcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtID1cbiAgQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bV9zdGFydFxuICAgIHQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIChpbnRlcnZhbF9udW0gfD4gSW50ZXJ2YWxfbnVtLnRvX2ludDYzKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBzbWFsbCBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgIChtaW5faW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIGxhcmdlIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKHQubWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICBpZiBJbnRlcnZhbF9udW0uKCA8ICkgaW50ZXJ2YWxfbnVtIG1pbl9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW07XG4gIGlmIEludGVydmFsX251bS4oID4gKSBpbnRlcnZhbF9udW0gdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW07XG4gIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW1cbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5ID1cbiAgKCogW2ludGVydmFsX251bV9zdGFydCB0IGtleV0gaXMgdGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgdGltZSBpbnRlcnZhbFxuICAgICBob2xkaW5nIHRoZSBmaXJzdCBhbGFybSBpbiBbdF0uICBBZHZhbmNpbmcgdG8gdGhhdCB3b3VsZCBub3QgYmUgZW5vdWdoLCBzaW5jZSB0aGVcbiAgICAgYWxhcm1zIGluIHRoYXQgaW50ZXJ2YWwgZG9uJ3QgZmlyZSB1bnRpbCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZVxuICAgICBuZXh0IGludGVydmFsLiAgU28sIHdlIHVzZSBbc3VjYyBrZXldIHRvIGFkdmFuY2UgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgIGludGVydmFsLiAqKVxuICBpbnRlcnZhbF9udW1fc3RhcnQgdCAoS2V5LnN1Y2Mga2V5KVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gICAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkpKVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdDtcbiAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQ7XG4gIG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXlcbjs7XG5cbmxldCBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9XG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgPSBQcmlvcml0eV9xdWV1ZS5tYXhfYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcnZhbF9udW0uKCA+PSApIG1heF9hbGxvd2VkX2tleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiBtYXhfdGltZVxuICBlbHNlXG4gICAgVGltZV9ucy5hZGRcbiAgICAgIChpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgbWF4X2FsbG93ZWRfa2V5KVxuICAgICAgKFRpbWVfbnMuU3Bhbi4oIC0gKSAoYWxhcm1fcHJlY2lzaW9uIHQpIFRpbWVfbnMuU3Bhbi5uYW5vc2Vjb25kKVxuOztcblxubGV0IG5vd19pbnRlcnZhbF9udW0gdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtID0gbm93X2ludGVydmFsX251bVxubGV0IG1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSB0ID0gaW50ZXJ2YWxfbnVtIHQgKG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbmxldCBpbnRlcnZhbF9zdGFydCB0IHRpbWUgPSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgKGludGVydmFsX251bSB0IHRpbWUpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb25maWc6KGNoZWNrIENvbmZpZy5pbnZhcmlhbnQpXG4gICAgICB+c3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIHN0YXJ0IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgc3RhcnQgbWluX3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIHN0YXJ0IG1heF90aW1lKSkpXG4gICAgICB+bWF4X2ludGVydmFsX251bTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2ludGVydmFsX251bSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgbWF4X3RpbWUpO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKGludGVydmFsX251bV9zdGFydCB0IG1heF9pbnRlcnZhbF9udW0pKSkpXG4gICAgICB+bm93OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3cgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBub3cgdC5zdGFydCk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgbm93IG1heF90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCB0Lm5vdylcbiAgICAgICAgICAgICAgIChQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSkpKSlcbiAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgICAgICAgICAgfmV4cGVjdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKG5vd19pbnRlcnZhbF9udW0gdCkpKSlcbiAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9hbGFybV90aW1lIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBtYXhfYWxsb3dlZF9hbGFybV90aW1lXG4gICAgICAgICAgICAgfmV4cGVjdDooY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKSlcbiAgICAgIH5wcmlvcml0eV9xdWV1ZTooY2hlY2sgKFByaW9yaXR5X3F1ZXVlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpO1xuICAgIGl0ZXIgdCB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAoQWxhcm0uaW50ZXJ2YWxfbnVtIHQgYWxhcm0pXG4gICAgICAgICAgKGludGVydmFsX251bSB0IChBbGFybS5hdCB0IGFsYXJtKSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID49IClcbiAgICAgICAgICAoaW50ZXJ2YWxfc3RhcnQgdCAoQWxhcm0uYXQgdCBhbGFybSkpXG4gICAgICAgICAgKGludGVydmFsX3N0YXJ0IHQgKG5vdyB0KSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID4gKSAoQWxhcm0uYXQgdCBhbGFybSkgKFRpbWVfbnMuc3ViIChub3cgdCkgKGFsYXJtX3ByZWNpc2lvbiB0KSkpKSlcbjs7XG5cbmxldCBkZWJ1ZyA9IGZhbHNlXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+aGFuZGxlX2ZpcmVkID1cbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyB0KVxuICB0aGVuIChcbiAgICB0Lm5vdyA8LSB0b187XG4gICAgbGV0IGtleSA9IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0b18gaW5cbiAgICB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgPC0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGtleTtcbiAgICBtYXRjaFxuICAgICAgUHJpb3JpdHlfcXVldWUuaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICAgfmtleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWQ6aGFuZGxlX2ZpcmVkXG4gICAgd2l0aFxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlIC0+XG4gICAgICBpZiBkZWJ1Z1xuICAgICAgdGhlblxuICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA9ICkgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIChjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCAtPlxuICAgICAgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDwtIGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxuOztcblxubGV0IGNyZWF0ZSB+Y29uZmlnIH5zdGFydCA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgc3RhcnQgVGltZV9ucy5lcG9jaFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsLmNyZWF0ZSBnb3Qgc3RhcnQgYmVmb3JlIHRoZSBlcG9jaFwiIChzdGFydCA6IFRpbWVfbnMudCldO1xuICBsZXQgdCA9XG4gICAgeyBjb25maWdcbiAgICA7IHN0YXJ0XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtID1cbiAgICAgICAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lOm1heF90aW1lIH5hbGFybV9wcmVjaXNpb246Y29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIDsgbm93ID0gVGltZV9ucy5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gbWF4X3RpbWUgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgcHJpb3JpdHlfcXVldWUgPVxuICAgICAgICBQcmlvcml0eV9xdWV1ZS5jcmVhdGUgP2NhcGFjaXR5OmNvbmZpZy5jYXBhY2l0eSB+bGV2ZWxfYml0czpjb25maWcubGV2ZWxfYml0cyAoKVxuICAgIH1cbiAgaW5cbiAgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDwtIGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0O1xuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXzpzdGFydCB+aGFuZGxlX2ZpcmVkOihmdW4gXyAtPiBhc3NlcnQgZmFsc2UpO1xuICB0XG47O1xuXG5sZXQgYWRkX2F0X2ludGVydmFsX251bSB0IH5hdCB2YWx1ZSA9XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTphdFxuICAgICAgIH5hdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgYXQpXG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsIGNhbm5vdCBzY2hlZHVsZSBhbGFybSB0aGF0IGZhciBpbiB0aGUgZnV0dXJlXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZToodC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsIGNhbm5vdCBzY2hlZHVsZSBhbGFybSBiZWZvcmUgc3RhcnQgb2YgY3VycmVudCBpbnRlcnZhbFwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6KHQubm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudCldXG47O1xuXG5sZXQgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgYXQgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHRoZW4gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0O1xuICBpZiBUaW1lX25zLiggPCApIGF0IHQubm93X2ludGVydmFsX251bV9zdGFydFxuICB0aGVuIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXRcbjs7XG5cbmxldCBhZGQgdCB+YXQgdmFsdWUgPVxuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdClcbiAgICAgICB+YXRcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldCByZW1vdmUgdCBhbGFybSA9IFByaW9yaXR5X3F1ZXVlLnJlbW92ZSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtXG5sZXQgY2xlYXIgdCA9IFByaW9yaXR5X3F1ZXVlLmNsZWFyIHQucHJpb3JpdHlfcXVldWVcbmxldCBtZW0gdCBhbGFybSA9IFByaW9yaXR5X3F1ZXVlLm1lbSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtXG5cbmxldCByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXkgfmF0ID1cbiAgaWYgbm90IChtZW0gdCBhbGFybSlcbiAgdGhlbiBmYWlsd2l0aCBcIlRpbWluZ193aGVlbCBjYW5ub3QgcmVzY2hlZHVsZSBhbGFybSBub3QgaW4gdGltaW5nIHdoZWVsXCI7XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIFByaW9yaXR5X3F1ZXVlLmNoYW5nZSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtIH5rZXkgfmF0XG47O1xuXG5sZXQgcmVzY2hlZHVsZSB0IGFsYXJtIH5hdCA9IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KSB+YXRcblxubGV0IHJlc2NoZWR1bGVfYXRfaW50ZXJ2YWxfbnVtIHQgYWxhcm0gfmF0ID1cbiAgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OmF0IH5hdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgYXQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bSB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5taW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biBvZiBlbXB0eSB0aW1pbmdfd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuICBlbHNlIEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0XG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdCA9XG4gIGxldCBwb29sID0gcG9vbCB0IGluXG4gIEludGVybmFsX2VsdC5tYXhfYWxhcm1fdGltZSBwb29sIGVsdCB+d2l0aF9rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdCA9XG4gIGxldCBwb29sID0gcG9vbCB0IGluXG4gIEludGVybmFsX2VsdC5taW5fYWxhcm1fdGltZSBwb29sIGVsdCB+d2l0aF9rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgPVxuICBQcmlvcml0eV9xdWV1ZS5maXJlX3Bhc3RfYWxhcm1zXG4gICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgIH5oYW5kbGVfZmlyZWRcbiAgICB+a2V5Oihub3dfaW50ZXJ2YWxfbnVtIHQpXG4gICAgfm5vdzp0Lm5vd1xuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE51bV9rZXlfYml0cyA9IE51bV9rZXlfYml0c1xuXG4gIGxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgPSBpbnRlcnZhbF9udW1faW50ZXJuYWxcbiAgbGV0IG1heF90aW1lID0gbWF4X3RpbWVcbmVuZFxuIiwibW9kdWxlIElucmlhX3N5cyA9IFN5c1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5vcGVuIFBvbHlcblxubGV0IHNlYyA9IFRpbWVfbnMuU3Bhbi5vZl9zZWNcbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5cbm1vZHVsZSBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUaW1lX25zLlNwYW5cblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IFRpbWVfbnMuU3Bhbi52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUaW1lX25zLlNwYW5cblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IFRpbWVfbnMuU3Bhbi52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnRcblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgICBlbmQpXG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuICgxIGxzbCAxNilcbiAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuZW5kXG5cbm1vZHVsZSBNYXhfbnVtX3RocmVhZHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIER1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhvd190b19kdW1wID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRGVmYXVsdFxuICAgICAgfCBDYWxsX2Fib3J0XG4gICAgICB8IENhbGxfZ2NvcmVcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICB0eXBlIHdhdGNoID1cbiAgICB7IGR1bXBfaWZfZGVsYXllZF9ieSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBob3dfdG9fZHVtcCA6IEhvd190b19kdW1wLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgdHlwZSB0ID1cbiAgICB8IFdhdGNoIG9mIHdhdGNoXG4gICAgfCBEb19ub3Rfd2F0Y2hcbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRGVidWdfdGFnID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWxsXG4gICAgICB8IENsb2NrXG4gICAgICB8IEZkXG4gICAgICB8IEZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgICAgfCBGaW5hbGl6ZXJzXG4gICAgICB8IEludGVycnVwdG9yXG4gICAgICB8IE1vbml0b3JcbiAgICAgIHwgTW9uaXRvcl9zZW5kX2V4blxuICAgICAgfCBQYXJhbGxlbFxuICAgICAgfCBSZWFkZXJcbiAgICAgIHwgU2NoZWR1bGVyXG4gICAgICB8IFNodXRkb3duXG4gICAgICB8IFRocmVhZF9wb29sXG4gICAgICB8IFRocmVhZF9zYWZlXG4gICAgICB8IFdyaXRlclxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IGxpc3QgPVxuICAgIFsgQWxsXG4gICAgOyBDbG9ja1xuICAgIDsgRmRcbiAgICA7IEZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgIDsgRmluYWxpemVyc1xuICAgIDsgSW50ZXJydXB0b3JcbiAgICA7IE1vbml0b3JcbiAgICA7IE1vbml0b3Jfc2VuZF9leG5cbiAgICA7IFBhcmFsbGVsXG4gICAgOyBSZWFkZXJcbiAgICA7IFNjaGVkdWxlclxuICAgIDsgU2h1dGRvd25cbiAgICA7IFRocmVhZF9wb29sXG4gICAgOyBUaHJlYWRfc2FmZVxuICAgIDsgV3JpdGVyXG4gICAgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGaWxlX2Rlc2NyX3dhdGNoZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFcG9sbF9pZl90aW1lcmZkXG4gICAgICB8IEVwb2xsXG4gICAgICB8IFNlbGVjdFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IGxpc3QgPSBbIEVwb2xsX2lmX3RpbWVyZmQ7IEVwb2xsOyBTZWxlY3QgXVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgY2hlY2tfaW52YXJpYW50cyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5IDogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgOiBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyIDogRmlsZV9kZXNjcl93YXRjaGVyLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgOiBNYXhfaW50ZXJfY3ljbGVfdGltZW91dC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA6IE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fdGhyZWFkcyA6IE1heF9udW1fdGhyZWFkcy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgOiBNaW5faW50ZXJfY3ljbGVfdGltZW91dC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA6IERlYnVnX3RhZy50IGxpc3Qgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnIDogVGltaW5nX3doZWVsLkNvbmZpZy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbmxldCBlbXB0eSA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBOb25lXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gTm9uZVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBOb25lXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IE5vbmVcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBOb25lXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gTm9uZVxuICA7IG1heF9udW1fdGhyZWFkcyA9IE5vbmVcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IE5vbmVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBOb25lXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBOb25lXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBOb25lXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IE5vbmVcbiAgfVxuOztcblxubGV0IGNyZWF0ZVxuICAgICAgP2Fib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICAgICAgP2NoZWNrX2ludmFyaWFudHNcbiAgICAgID9kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgICAgID9kdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gICAgICA/ZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICAgICAgP2ZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgICAgP21heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/bWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gICAgICA/bWF4X251bV90aHJlYWRzXG4gICAgICA/bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICAgID9taW5faW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP3ByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICAgICAgP3JlY29yZF9iYWNrdHJhY2VzXG4gICAgICA/cmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICAgICAgP3RocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICAgICAgP3RpbWluZ193aGVlbF9jb25maWdcbiAgICAgICgpXG4gID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyBjaGVja19pbnZhcmlhbnRzXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXJcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICA7IG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgOyByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSAod29yZF9zaXplIDogV29yZF9zaXplLnQpID1cbiAgbGV0IG1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uIGluXG4gIGxldCBhbGFybV9wcmVjaXNpb24sIGxldmVsX2JpdHMgPVxuICAgIG1hdGNoIHdvcmRfc2l6ZSB3aXRoXG4gICAgfCBXMzIgLT4gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCwgWyAxMDsgMTA7IDkgXVxuICAgIHwgVzY0IC0+IEFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKSwgWyAxNDsgMTU7IDk7IDYgXVxuICBpblxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICB+bGV2ZWxfYml0czooVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzKVxuICAgICgpXG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgV29yZF9zaXplLndvcmRfc2l6ZVxuOztcblxubGV0IGRlZmF1bHQgPVxuICAoKiBGb3IgW2ZpbGVfZGVzY3Jfd2F0Y2hlcl0gYW5kIFttYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNdIHdlIGNob29zZSB0aGUgZGVmYXVsdCBmb3IgdGhlXG4gICAgIGNvbW1vbiBjYXNlIHRoYXQgW2Vwb2xsXSBpcyBhdmFpbGFibGUuICBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgY29kZSBpblxuICAgICBbQXN5bmNfdW5peC5Db25maWddIHRoYXQgY2hlY2tzIHdoZXRoZXIgW2Vwb2xsXSBpcyBhY3R1YWxseSBhdmFpbGFibGUsIGFuZCBpZiBub3QsXG4gICAgIHVzZXMgW3NlbGVjdF0gYW5kIGEgc21hbGxlciBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycy4gKilcbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIChzZWMgNjAuKVxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGZhbHNlXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gU29tZSBmYWxzZVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIERvX25vdF93YXRjaFxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIChFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLmNyZWF0ZV9leG4gMjU2KVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgRXBvbGxfaWZfdGltZXJmZFxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuMDUpKVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLmRlZmF1bHRcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIChNYXhfbnVtX3RocmVhZHMuY3JlYXRlX2V4biA1MClcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICBTb21lIChNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIDUwMClcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLikpXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBbXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSBmYWxzZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIChzZWMgMS4pXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gU29tZSBJbmhlcml0XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IFNvbWUgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCBleGFtcGxlID1cbiAgeyBkZWZhdWx0IHdpdGhcbiAgICBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIERlYnVnX3RhZy5bIEZkOyBTY2hlZHVsZXIgXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9XG4gICAgICBTb21lXG4gICAgICAgIChDcHVzZXRcbiAgICAgICAgICAgKFsgMDsgMTsgMiBdIHw+IEludC5TZXQub2ZfbGlzdCB8PiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkuQ3B1c2V0LmNyZWF0ZV9leG4pKVxuICB9XG47O1xuXG5sZXQgZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIkFTWU5DX0NPTkZJR1wiXG5cbmxldCBmaWVsZF9kZXNjcmlwdGlvbnMgKCkgOiBzdHJpbmcgPVxuICBsZXQgZmllbGQgdG9fc2V4cCBkZXNjcmlwdGlvbiBhYyBmaWVsZCA9XG4gICAgKEZpZWxkLm5hbWUgZmllbGQsIHRvX3NleHAgKE9wdGlvbi52YWx1ZV9leG4gKEZpZWxkLmdldCBmaWVsZCBkZWZhdWx0KSksIGRlc2NyaXB0aW9uKVxuICAgIDo6IGFjXG4gIGluXG4gIGxldCBmaWVsZHMgPVxuICAgIEZpZWxkcy5mb2xkXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdXG4gICAgICAgICAgIFsge3xcbiAgQnkgZGVmYXVsdCwgQXN5bmMgd2lsbCBzZW5kIGFuIGV4Y2VwdGlvbiB0byB0aGUgdG9wbGV2ZWwgbW9uaXRvclxuICBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyB0byByZWd1bGFybHkgY2hlY2sgaW52YXJpYW50cyBvZiBpdHMgaW50ZXJuYWxcbiAgZGF0YSBzdHJ1Y3R1cmVzLiAgVGhpcyBjYW4gc3Vic3RhbnRpYWxseSBzbG93IGRvd24geW91ciBwcm9ncmFtLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHJvdXRpbmVzIHRvIGNoZWNrIGlmIHRoZXkgYXJlIGJlaW5nIGFjY2Vzc2VkXG4gIGZyb20gc29tZSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUgdGhyZWFkIGN1cnJlbnRseSBob2xkaW5nIHRoZSBBc3luY1xuICBsb2NrLCB3aGljaCBpcyBub3QgYWxsb3dlZCBhbmQgY2FuIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcgYmVoYXZpb3IuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmR1bXBfY29yZV9vbl9qb2JfZGVsYXk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudF1cbiAgICAgICAgICAgWyB7fFxuICBDYW4gYmUgc2V0IHRvIFtEb19ub3Rfd2F0Y2hdIG9yOlxuXG4gICAgKFdhdGNoICgoZHVtcF9pZl9kZWxheWVkX2J5IFNQQU4pIChob3dfdG9fZHVtcCBIT1cpKSlcblxuICBJZiBzZXQgdG8gW1dhdGNoXSwgdGhlbiBvbiBwcm9ncmFtIHN0YXJ0IHRoaXMgd2lsbCBzdGFydCBhIHJlZ3VsYXJcbiAgQXN5bmMgam9iIHRoYXQgaW5jcmVtZW50cyBhIGNvdW50ZXIsIGFuZCBhIEMgdGhyZWFkIHRoYXQgd2lsbFxuICBkZXRlY3QgaWYgdGhhdCBqb2IgaXMgZGVsYXllZCBieSBbZHVtcF9pZl9kZWxheWVkX2J5XSwgYW5kIGlmIHNvLFxuICB3aWxsIGNvcmUgZHVtcCB0aGUgcHJvZ3JhbS4gIElmIGF2YWlsYWJsZSwgWy91c3IvYmluL2djb3JlXSBpc1xuICB1c2VkIGJ5IGRlZmF1bHQgdG8gZHVtcCB0aGUgY29yZSwgd2hpY2ggc2hvdWxkIGFsbG93IHRoZSBwcm9ncmFtXG4gIHRvIGNvbnRpbnVlIHJ1bm5pbmcuICBPdGhlcndpc2UsIFthYm9ydF0gd2lsbCBiZSBjYWxsZWQgZnJvbSBDLFxuICB3aGljaCB3aWxsIGtpbGwgdGhlIHByb2dyYW0gd2hpbGUgY2F1c2luZyBhIGNvcmUgZHVtcC4gIE9uZSBjYW5cbiAgZm9yY2UgW2Fib3J0XSBvciBbZ2NvcmVdIHZpYSBbaG93X3RvX2R1bXBdLCB3aGljaCBzaG91bGQgYmUgb25lIG9mOlxuICBbQ2FsbF9hYm9ydF0sIFtDYWxsX2djb3JlXSwgb3IgW0RlZmF1bHRdLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5lcG9sbF9tYXhfcmVhZHlfZXZlbnRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWR5IGV2ZW50cyB0aGF0IEFzeW5jJ3MgY2FsbCB0byBbRXBvbGwud2FpdF1cbiAgd2lsbCBoYW5kbGUuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmZpbGVfZGVzY3Jfd2F0Y2hlcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRmlsZV9kZXNjcl93YXRjaGVyLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBkZXRlcm1pbmVzIHdoYXQgT1Mgc3Vic3lzdGVtIEFzeW5jIHVzZXMgdG8gd2F0Y2ggZmlsZSBkZXNjcmlwdG9ycyBmb3IgYmVpbmcgcmVhZHkuXG4gIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSBbZXBvbGxdIGlmIHRpbWVyZmQncyBhcmUgc3VwcG9ydGVkIGFuZCBpZiBub3QsIHVzZSBbc2VsZWN0XS5cblxuICBBbGxvd2VkIHZhbHVlcyBhcmU6fH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAoTGlzdC5tYXAgRmlsZV9kZXNjcl93YXRjaGVyLmxpc3QgfmY6RmlsZV9kZXNjcl93YXRjaGVyLnRvX3N0cmluZylcbiAgICAgICAgICAgOyB7fC5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgKGZ1biBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgIH5fOlxuICAgICAgICAgICAgICAgICAgICAoY29uY2F0XG4gICAgICAgICAgICAgICAgICAgICAgIFsgXCJtaW4gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgOyBkZWZhdWx0IHw+IE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5yYXcgfD4gSW50LnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgICAgICAgICAgICAgOyBcIiBbdWxpbWl0IC1uIC1IXVwiXG4gICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIDogc3RyaW5nKV0pXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBhbGxvd2VkIGF0IGFueSBvbmUgdGltZS58fSBdKVxuICAgICAgfm1heF9udW1fdGhyZWFkczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X251bV90aHJlYWRzLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBBc3luYyB3aWxsIGNyZWF0ZSB0byBkbyBibG9ja2luZ1xuICBzeXN0ZW0gY2FsbHMgYW5kIGhhbmRsZSBjYWxscyB0byBbSW5fdGhyZWFkLnJ1bl0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9pbnRlcl9jeWNsZV90aW1lb3V0OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfaW50ZXJfY3ljbGVfdGltZW91dC50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSBzY2hlZHVsZXIgd2lsbCBwYXVzZSBiZXR3ZWVuIGN5Y2xlc1xuICB3aGVuIGl0IGhhcyBubyBqb2JzIGFuZCBpcyBnb2luZyB0byB3YWl0IGZvciBJL08uICBJbiBwcmluY2lwbGUgb25lXG4gIGRvZXNuJ3QgbmVlZCB0aGlzLCBhbmQgd2UgY291bGQgdXNlIGFuIGluZmluaXRlIHRpbWVvdXQuICBXZSBpbnN0ZWFkXG4gIHVzZSBhIHNtYWxsIHRpbWVvdXQgKGJ5IGRlZmF1bHQpLCB0byBiZSBtb3JlIHJvYnVzdCB0byBidWdzIHRoYXRcbiAgY291bGQgcHJldmVudCBBc3luYyBmcm9tIHdha2luZyB1cCBhbmQgc2VydmljaW5nIGV2ZW50cy4gIEZvclxuICBleGFtcGxlLCBhcyBvZiAyMDEzLTAxLCB0aGUgT0NhbWwgcnVudGltZSBoYXMgYSBidWcgdGhhdCBjYXVzZXMgaXRcbiAgdG8gbm90IG5lY2Vzc2FyaWx5IHJ1biBhbiBPQ2FtbCBzaWduYWwgaGFuZGxlciBpbiBhIHRpbWVseSBtYW5uZXIuXG4gIFRoaXMgaW4gdHVybiBjYW4gY2F1c2UgYSBzaW1wbGUgQXN5bmMgcHJvZ3JhbSB0aGF0IGlzIHdhaXRpbmcgb24gYVxuICBzaWduYWwgdG8gaGFuZywgd2hlbiBpbiBmYWN0IGl0IHNob3VsZCBoYW5kbGUgdGhlIHNpZ25hbC5cblxuICBXZSB1c2UgNTBtcyBhcyB0aGUgZGVmYXVsdCB0aW1lb3V0LCBiZWNhdXNlIGl0IGlzIGluZnJlcXVlbnQgZW5vdWdoXG4gIHRvIGhhdmUgYSBuZWdsaWdpYmxlIHBlcmZvcm1hbmNlIGltcGFjdCwgYW5kIGZyZXF1ZW50IGVub3VnaCB0aGF0XG4gIHRoZSBsYXRlbmN5IHdvdWxkIHR5cGljYWxseSBiZSBub3Qgbm90aWNlYWJsZS4gIEFsc28sIDUwbXMgaXMgd2hhdFxuICB0aGUgT0NhbWwgdGlja2VyIHRocmVhZCB1c2VzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygam9icyB0aGF0IHdpbGwgYmUgZG9uZSBhdCBlYWNoIHByaW9yaXR5IHdpdGhpblxuICBlYWNoIEFzeW5jIGN5Y2xlLiAgVGhpcyBsaW1pdHMgaG93IG1hbnkgam9icyB0aGUgc2NoZWR1bGVyIHdpbGwgcnVuXG4gIGJlZm9yZSBwYXVzaW5nIHRvIGNoZWNrIGZvciBJL08uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNaW5faW50ZXJfY3ljbGVfdGltZW91dC50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtaW5pbXVtIHRpbWVvdXQgdGhlIHNjaGVkdWxlciB3aWxsIHBhc3MgdG8gdGhlIE9TIHdoZW4gaXQgY2hlY2tzXG4gIGZvciBJL08gYmV0d2VlbiBjeWNsZXMuICBUaGlzIGlzIHplcm8gYnkgZGVmYXVsdC4gIFNldHRpbmcgaXQgdG8gYVxuICBub256ZXJvIHZhbHVlIGlzIHVzZWQgdG8gaW5jcmVhc2UgdGhyZWFkIGZhaXJuZXNzIGJldHdlZW4gdGhlIHNjaGVkdWxlclxuICBhbmQgb3RoZXIgdGhyZWFkcy4gIEEgcGxhdXNpYmxlIHNldHRpbmcgaXMgMXVzLiAgVGhpcyBpcyBhbHNvXG4gIGNvbmZpZ3VyYWJsZSBpbiBPQ2FtbCB2aWEgW1NjaGVkdWxlci5zZXRfbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRdLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IERlYnVnX3RhZy50IGxpc3RdXG4gICAgICAgICAgIFsge3xcbiAgQSBsaXN0IG9mIHRhZ3Mgc3BlY2lmeWluZyB3aGljaCBBc3luYyBmdW5jdGlvbnMgc2hvdWxkIHByaW50IGRlYnVnXG4gIG1lc3NhZ2VzIHRvIHN0ZGVyci4gIEVhY2ggdGFnIGlkZW50aWZpZXMgYSBncm91cCBvZiByZWxhdGVkIEFzeW5jXG4gIGZ1bmN0aW9ucy4gIFRoZSB0YWcgW2FsbF0gbWVhbnMgdG8gcHJpbnQgZGVidWcgbWVzc2FnZXMgZm9yIGFsbFxuICBmdW5jdGlvbnMuICBBbGxvd2VkIHZhbHVlcyBhcmU6XG5cbnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICAoTGlzdC5tYXAgRGVidWdfdGFnLmxpc3QgfmY6KGZ1biBkIC0+XG4gICAgICAgICAgICAgICAgICBjb25jYXQgWyBcIiAgICBcIjsgRGVidWdfdGFnLnRvX3N0cmluZyBkOyBcIlxcblwiIF0pKVxuICAgICAgICAgICA7IHt8XG4gIFR1cm5pbmcgb24gZGVidWcgbWVzc2FnZXMgd2lsbCBzdWJzdGFudGlhbGx5IHNsb3cgZG93biBtb3N0IHByb2dyYW1zLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCB0aGlzIHdpbGwgY2F1c2UgQXN5bmMgdG8ga2VlcCBpbiB0aGUgZXhlY3V0aW9uIGNvbnRleHQgdGhlXG4gIGhpc3Rvcnkgb2Ygc3RhY2sgYmFja3RyYWNlcyAob2J0YWluZWQgdmlhIFtCYWNrdHJhY2UuZ2V0XSkgdGhhdCBsZWRcbiAgdG8gdGhlIGN1cnJlbnQgam9iLiAgSWYgYW4gQXN5bmMgam9iIGhhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLFxuICB0aGlzIGJhY2t0cmFjZSBoaXN0b3J5IHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlIGV4Y2VwdGlvbi4gIEluXG4gIHBhcnRpY3VsYXIgdGhlIGhpc3Rvcnkgd2lsbCBhcHBlYXIgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiB0aGF0XG4gIHJlYWNoZXMgdGhlIG1haW4gbW9uaXRvci4gIFRoaXMgY2FuIGhhdmUgYSBzdWJzdGFudGlhbCBwZXJmb3JtYW5jZVxuICBpbXBhY3QsIGJvdGggaW4gcnVubmluZyB0aW1lIGFuZCBzcGFjZSB1c2FnZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdXG4gICAgICAgICAgIFsge3xcbiAgQnkgZGVmYXVsdCwgQXN5bmMgd2lsbCBwcmludCBhIG1lc3NhZ2UgdG8gc3RkZXJyIGV2ZXJ5IHNlY29uZCBpZlxuICB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRocmVhZF9wb29sX2NwdV9hZmZpbml0eTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnRdXG4gICAgICAgICAgIFsge3xcbiAgIFdoZXRoZXIgYW5kIGhvdyB0aHJlYWRzIGluIHRoZSB0aHJlYWQgcG9vbCBzaG91bGQgYmUgYWZmaW5pdGl6ZWQgdG8gQ1BVcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGltaW5nX3doZWVsX2NvbmZpZzpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltaW5nX3doZWVsLkNvbmZpZy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgaXMgdXNlZCB0byBhZGp1c3QgdGhlIHRpbWUvc3BhY2UgdHJhZGVvZmYgaW4gdGhlIHRpbWluZyB3aGVlbFxuICB1c2VkIHRvIGltcGxlbWVudCBBc3luYydzIGNsb2NrLiAgVGltZSBpcyBzcGxpdCBpbnRvIGludGVydmFscyBvZlxuICBzaXplIFthbGFybV9wcmVjaXNpb25dLCBhbmQgYWxhcm1zIHdpdGggdGltZXMgaW4gdGhlIHNhbWUgaW50ZXJ2YWxcbiAgZmlyZSBpbiB0aGUgc2FtZSBjeWNsZS4gIExldmVsIFtpXSBpbiB0aGUgdGltaW5nIHdoZWVsIGhhcyBhblxuICBhcnJheSBvZiBzaXplIFsyXmJdLCB3aGVyZSBbYl0gaXMgdGhlIFtpXSd0aCBlbnRyeSBpbiBbbGV2ZWxfYml0c10uXG58fVxuICAgICAgICAgICBdKVxuICBpblxuICBjb25jYXRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoTGlzdC5zb3J0IGZpZWxkcyB+Y29tcGFyZTooZnVuIChuYW1lMSwgXywgXykgKG5hbWUyLCBfLCBfKSAtPlxuICAgICAgICAgIFN0cmluZy5jb21wYXJlIG5hbWUxIG5hbWUyKSlcbiAgICAgICB+ZjooZnVuIChuYW1lLCBkZWZhdWx0LCBkZXNjcmlwdGlvbikgLT5cbiAgICAgICAgIGNvbmNhdFxuICAgICAgICAgICAoXCJcXG5cIiA6OiBuYW1lIDo6IFwiIChkZWZhdWx0IFwiIDo6IFNleHAudG9fc3RyaW5nIGRlZmF1bHQgOjogXCIpXCIgOjogZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBoZWxwX21lc3NhZ2UgKCkgPVxuICBjb25jYXRcbiAgICBbIFwiVGhlIFwiXG4gICAgOyBlbnZpcm9ubWVudF92YXJpYWJsZVxuICAgIDsge3wgZW52aXJvbm1lbnQgdmFyaWFibGUgYWZmZWN0cyBBc3luY1xuaW4gdmFyaW91cyB3YXlzLiAgSXRzIHZhbHVlIHNob3VsZCBiZSBhIHNleHAgb2YgdGhlIGZvbGxvd2luZyBmb3JtLFxud2hlcmUgYWxsIGZpZWxkcyBhcmUgb3B0aW9uYWw6XG5cbnx9XG4gICAgOyBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfdCBleGFtcGxlKVxuICAgIDsge3xcblxuSGVyZSBpcyBhbiBleHBsYW5hdGlvbiBvZiBlYWNoIGZpZWxkLlxufH1cbiAgICA7IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKVxuICAgIF1cbjs7XG5cbmxldCB1c2FnZSAoKSA9XG4gIGVwcmludGYgXCIlcyUhXCIgKGhlbHBfbWVzc2FnZSAoKSk7XG4gIGV4aXQgMVxuOztcblxubGV0IHQgPVxuICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBJbnJpYV9zeXMuZ2V0ZW52IGVudmlyb25tZW50X3ZhcmlhYmxlKSB3aXRoXG4gIHwgTm9uZSAtPiBlbXB0eVxuICB8IFNvbWUgXCJcIiAtPiB1c2FnZSAoKVxuICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgc3RyaW5nKSkgd2l0aFxuICAgICB8IE9rIHQgLT4gdFxuICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgIGVwcmludGZcbiAgICAgICAgIFwiJXNcXG5cXG5cIlxuICAgICAgICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgKEVycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgKEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgIFwiaW52YWxpZCB2YWx1ZSBmb3IgJXMgZW52aXJvbm1lbnQgdmFyaWFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRfdmFyaWFibGUpXG4gICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgIFslc2V4cF9vZjogZXhuXSkpKTtcbiAgICAgICB1c2FnZSAoKSlcbjs7XG5cbm1vZHVsZSBQcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWcgPVxuICAgIG1hdGNoIHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbCAtPiBMaXN0Lm1lbSBsIHRhZyB+ZXF1YWw6RGVidWdfdGFnLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGFsbCA9IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciBBbGxcbiAgbGV0IGRlYnVnIHRhZyA9IGFsbCB8fCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnXG4gIGxldCBjbG9jayA9IGRlYnVnIENsb2NrXG4gIGxldCBmZCA9IGRlYnVnIEZkXG4gIGxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBkZWJ1ZyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgbGV0IGZpbmFsaXplcnMgPSBkZWJ1ZyBGaW5hbGl6ZXJzXG4gIGxldCBpbnRlcnJ1cHRvciA9IGRlYnVnIEludGVycnVwdG9yXG4gIGxldCBtb25pdG9yID0gZGVidWcgTW9uaXRvclxuICBsZXQgbW9uaXRvcl9zZW5kX2V4biA9IGRlYnVnIE1vbml0b3Jfc2VuZF9leG5cbiAgbGV0IHBhcmFsbGVsID0gZGVidWcgUGFyYWxsZWxcbiAgbGV0IHJlYWRlciA9IGRlYnVnIFJlYWRlclxuICBsZXQgc2NoZWR1bGVyID0gZGVidWcgU2NoZWR1bGVyXG4gIGxldCBzaHV0ZG93biA9IGRlYnVnIFNodXRkb3duXG4gIGxldCB0aHJlYWRfcG9vbCA9IGRlYnVnIFRocmVhZF9wb29sXG4gIGxldCB0aHJlYWRfc2FmZSA9IGRlYnVnIFRocmVhZF9zYWZlXG4gIGxldCB3cml0ZXIgPSBkZWJ1ZyBXcml0ZXJcbmVuZFxuXG5sZXQgKCAhISApIGZpZWxkID1cbiAgT3B0aW9uLnZhbHVlIChGaWVsZC5nZXQgZmllbGQgdCkgfmRlZmF1bHQ6KE9wdGlvbi52YWx1ZV9leG4gKEZpZWxkLmdldCBmaWVsZCBkZWZhdWx0KSlcbjs7XG5cbmxldCBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSAhIUZpZWxkcy5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCBjaGVja19pbnZhcmlhbnRzID0gISFGaWVsZHMuY2hlY2tfaW52YXJpYW50c1xubGV0IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9ICEhRmllbGRzLmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxubGV0IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSAhIUZpZWxkcy5lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG5sZXQgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gISFGaWVsZHMudGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG5sZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gISFGaWVsZHMuZmlsZV9kZXNjcl93YXRjaGVyXG5sZXQgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxubGV0IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9ICEhRmllbGRzLm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xubGV0IG1heF9udW1fdGhyZWFkcyA9ICEhRmllbGRzLm1heF9udW1fdGhyZWFkc1xubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gISFGaWVsZHMubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbmxldCBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgcmVjb3JkX2JhY2t0cmFjZXMgPSAhIUZpZWxkcy5yZWNvcmRfYmFja3RyYWNlc1xubGV0IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSAhIUZpZWxkcy5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgdGltaW5nX3doZWVsX2NvbmZpZyA9ICEhRmllbGRzLnRpbWluZ193aGVlbF9jb25maWdcbmxldCBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gISFGaWVsZHMuZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuXG5sZXQgdCA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBjaGVja19pbnZhcmlhbnRzXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gU29tZSBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gU29tZSB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBmaWxlX2Rlc2NyX3dhdGNoZXJcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIG1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBTb21lIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IFNvbWUgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgdGFza19pZCA9IHJlZiAoZnVuICgpIC0+IFNleHAuQXRvbSBcIjxubyB0YXNrIGlkPlwiKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4oKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gT3B0aW9uX2FycmF5LkNoZWFwX29wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXJcbiAgIHBsYWNlIHdoZXJlIHdlIHdhbnQgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbmxldCBub25lID0gT2JqLm9iaiAoT2JqLm5ld19ibG9jayBPYmouYWJzdHJhY3RfdGFnIDEpXG5sZXQgY3JlYXRlICgpID0gcmVmIG5vbmVcbmxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsICF4IG5vbmVcbmxldCBpc19zb21lIHggPSBub3QgKGlzX25vbmUgeClcbmxldCBnZXRfc29tZV9leG4geCA9IGlmIGlzX25vbmUgeCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTW9wdGlvbi5nZXRfc29tZV9leG5cIl0gZWxzZSAheFxubGV0IGdldCB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgIXRcbmxldCB1bnNhZmVfZ2V0IHQgPSAhdFxubGV0IHNldF9zb21lIHQgdiA9IHQgOj0gdlxubGV0IHNldF9ub25lIHQgPSB0IDo9IG5vbmVcblxubGV0IHNldCB0IHYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBOb25lIC0+IHNldF9ub25lIHRcbiAgfCBTb21lIHYgLT4gc2V0X3NvbWUgdCB2XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgb3B0aW9uKV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBPcHRpb24uaXRlciAoZ2V0IHQpIH5mOmludmFyaWFudF9hKVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV9nZXRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuKCogVGhpcyBwb29sIGhvbGRzIG5vZGVzIHRoYXQgd291bGQgYmUgcmVwcmVzZW50ZWQgbW9yZSB0cmFkaXRpb25hbGx5IGFzOlxuXG4gICB7W1xuICAgICB0eXBlICdhIHQgPVxuICAgICAgIHwgRW1wdHlcbiAgICAgICB8IEhlYXAgb2YgJ2EgKiAnYSB0IGxpc3QgXX1cblxuICAgV2Ugd2lsbCByZXByZXNlbnQgdGhlbSBhcyBhIGxlZnQtY2hpbGQsIHJpZ2h0LXNpYmxpbmcgdHJlZSBpbiBhIHRyaXBsZXRcbiAgICh2YWx1ZSAqIGxlZnRfY2hpbGQgKiByaWdodF9zaWJsaW5nKS4gIFRoZSBsZWZ0IGNoaWxkIGFuZCBhbGwgcmlnaHQgc2libGluZ3NcbiAgIG9mIHRoZSBsZWZ0IGNoaWxkIGZvcm0gYSBsaW5rZWQgbGlzdCByZXByZXNlbnRpbmcgdGhlIHN1YmhlYXBzIG9mIGEgZ2l2ZW4gaGVhcDpcblxuICAge3ZcbiAgICAgICAgIEFcbiAgICAgICAgL1xuICAgICAgIEIgLT4gQyAtPiBEIC0+IEUgLT4gRlxuICAgICAgLyAgICAgICAgIC8gICAgICAgICAvXG4gICAgIEcgICAgICAgICBILT5JLT5KICAgSy0+TFxuICAgdn0gKilcblxubW9kdWxlIE5vZGUgOiBzaWdcbiAgKCogRXhwb3NpbmcgW3ByaXZhdGUgaW50XSBpcyBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBiZWNhdXNlIGl0IGFsbG93c1xuICAgICB0aGUgY29tcGlsZXIgdG8gc2tpcCB0aGUgd3JpdGUgYmFycmllci4gKilcblxuICB0eXBlICdhIHQgPSBwcml2YXRlIGludFxuXG4gIG1vZHVsZSBJZCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY3JlYXRlIDogbWluX3NpemU6aW50IC0+ICdhIHRcbiAgICB2YWwgaXNfZnVsbCA6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBncm93IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIG5vZGUgLT4gJ2Egbm9kZSAqICdhIHRcbiAgZW5kXG5cbiAgKCoqIFthbGxvY2F0ZSB2IH5wb29sXSBhbGxvY2F0ZXMgYSBuZXcgbm9kZSBmcm9tIHRoZSBwb29sIHdpdGggbm8gY2hpbGQgb3Igc2libGluZyAqKVxuICB2YWwgYWxsb2NhdGUgOiAnYSAtPiBwb29sOidhIFBvb2wudCAtPiBpZDpJZC50IC0+ICdhIHRcblxuICAoKiogW2ZyZWUgdCB+cG9vbF0gZnJlZXMgW3RdIGZvciByZXVzZS4gIEl0IGlzIGFuIGVycm9yIHRvIGFjY2VzcyBbdF0gYWZ0ZXIgdGhpcy4gKilcbiAgdmFsIGZyZWUgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcblxuICAoKiogYSBzcGVjaWFsIFt0XSB0aGF0IHJlcHJlc2VudHMgdGhlIGVtcHR5IG5vZGUgKilcbiAgdmFsIGVtcHR5IDogdW5pdCAtPiAnYSB0XG5cbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgKCoqIFt2YWx1ZV9leG4gdCB+cG9vbF0gcmV0dXJuIHRoZSB2YWx1ZSBvZiBbdF0sIHJhaXNlIGlmIFtpc19lbXB0eSB0XSAqKVxuICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYVxuXG4gIHZhbCBpZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gSWQudFxuICB2YWwgY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcbiAgdmFsIHNpYmxpbmcgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW3ByZXYgdF0gaXMgZWl0aGVyIHRoZSBwYXJlbnQgb2YgW3RdIG9yIHRoZSBzaWJsaW5nIGltbWVkaWF0ZWx5IGxlZnQgb2YgW3RdICopXG4gIHZhbCBwcmV2IDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFthZGRfY2hpbGQgdCB+Y2hpbGQgfnBvb2xdIEFkZCBhIGNoaWxkIHRvIFt0XSwgcHJlc2VydmluZyBleGlzdGluZyBjaGlsZHJlbiBhc1xuICAgICAgc2libGluZ3Mgb2YgW2NoaWxkXS4gW3RdIGFuZCBbY2hpbGRdIHNob3VsZCBub3QgYmUgZW1wdHkgYW5kIFtjaGlsZF0gc2hvdWxkIGhhdmUgbm9cbiAgICAgIHNpYmxpbmcgYW5kIGhhdmUgbm8gcHJldiBub2RlLiAqKVxuICB2YWwgYWRkX2NoaWxkIDogJ2EgdCAtPiBjaGlsZDonYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcblxuICAoKiogZGlzY29ubmVjdCBhbmQgcmV0dXJuIHRoZSBzaWJsaW5nICopXG4gIHZhbCBkaXNjb25uZWN0X3NpYmxpbmcgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogZGlzY29ubmVjdCBhbmQgcmV0dXJuIHRoZSBjaGlsZCAqKVxuICB2YWwgZGlzY29ubmVjdF9jaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbZGV0YWNoIHQgfnBvb2xdIHJlbW92ZXMgW3RdIGZyb20gdGhlIHRyZWUsIGFkanVzdGluZyBwb2ludGVycyBhcm91bmQgaXQuIEFmdGVyXG4gICAgICBbZGV0YWNoXSwgW3RdIGlzIHRoZSByb290IG9mIGEgc3RhbmRhbG9uZSBoZWFwLCB3aGljaCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBvcmlnaW5hbFxuICAgICAgaGVhcC4gKilcbiAgdmFsIGRldGFjaCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJZCA9IEludFxuXG4gIGxldCBkdW1teV9pZCA6IElkLnQgPSAtMVxuXG4gIHR5cGUgJ2Egbm9kZSA9XG4gICAgKCdhLCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCBJZC50KSBQb29sLlNsb3RzLnQ1XG5cbiAgdHlwZSAnYSB0ID0gJ2Egbm9kZSBQb2ludGVyLnRcblxuICBsZXQgZW1wdHkgPSBQb2ludGVyLm51bGxcbiAgbGV0IGlzX2VtcHR5ID0gUG9pbnRlci5pc19udWxsXG4gIGxldCBlcXVhbCA9IFBvaW50ZXIucGh5c19lcXVhbFxuICBsZXQgdmFsdWUgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDBcbiAgbGV0IGNoaWxkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQxXG4gIGxldCBzaWJsaW5nIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQyXG4gIGxldCBwcmV2IHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQzXG4gIGxldCBpZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50NFxuXG4gICgqIGxldCBzZXRfdmFsdWUgICB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQwIHYgKilcbiAgbGV0IHNldF9jaGlsZCB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQxIHZcbiAgbGV0IHNldF9zaWJsaW5nIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDIgdlxuICBsZXQgc2V0X3ByZXYgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MyB2XG5cbiAgbGV0IHZhbHVlX2V4biB0IH5wb29sID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICAgIHZhbHVlIHQgfnBvb2xcbiAgOztcblxuICBsZXQgYWxsb2NhdGUgdmFsdWUgfnBvb2wgfmlkID0gUG9vbC5uZXc1IHBvb2wgdmFsdWUgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgaWRcbiAgbGV0IGZyZWUgdCB+cG9vbCA9IFBvb2wudW5zYWZlX2ZyZWUgcG9vbCB0XG5cbiAgbGV0IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sID1cbiAgICBsZXQgc2libGluZyA9IHNpYmxpbmcgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgc2libGluZylcbiAgICB0aGVuIChcbiAgICAgIHNldF9zaWJsaW5nIHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgIHNldF9wcmV2IHNpYmxpbmcgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgc2libGluZ1xuICA7O1xuXG4gIGxldCBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgPVxuICAgIGxldCBjaGlsZCA9IGNoaWxkIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IGNoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X2NoaWxkIHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgIHNldF9wcmV2IGNoaWxkIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIGNoaWxkXG4gIDs7XG5cbiAgbGV0IGFkZF9jaGlsZCB0IH5jaGlsZDpuZXdfY2hpbGQgfnBvb2wgPVxuICAgICgqIGFzc2VydGlvbnMgd2Ugd291bGQgbWFrZSwgYnV0IGZvciBzcGVlZDpcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSBuZXdfY2hpbGQpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChzaWJsaW5nIG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHByZXYgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgKilcbiAgICBsZXQgY3VycmVudF9jaGlsZCA9IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCBpblxuICAgICgqIGFkZCBbbmV3X2NoaWxkXSB0byB0aGUgbGlzdCBvZiBbdF0ncyBjaGlsZHJlbiAod2hpY2ggbWF5IGJlIGVtcHR5KSAqKVxuICAgIHNldF9zaWJsaW5nIG5ld19jaGlsZCBjdXJyZW50X2NoaWxkIH5wb29sO1xuICAgIGlmIG5vdCAoaXNfZW1wdHkgY3VycmVudF9jaGlsZCkgdGhlbiBzZXRfcHJldiBjdXJyZW50X2NoaWxkIG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfY2hpbGQgdCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X3ByZXYgbmV3X2NoaWxkIHQgfnBvb2xcbiAgOztcblxuICBsZXQgZGV0YWNoIHQgfnBvb2wgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcmV2ID0gcHJldiB0IH5wb29sIGluXG4gICAgICBpZiBub3QgKGlzX2VtcHR5IHByZXYpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHJlbGF0aW9uX3RvX3ByZXYgPSBpZiBlcXVhbCB0IChjaGlsZCBwcmV2IH5wb29sKSB0aGVuIGBjaGlsZCBlbHNlIGBzaWJsaW5nIGluXG4gICAgICAgIHNldF9wcmV2IHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgICAgbGV0IHNpYmxpbmcgPSBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCBpblxuICAgICAgICAobWF0Y2ggcmVsYXRpb25fdG9fcHJldiB3aXRoXG4gICAgICAgICB8IGBjaGlsZCAtPiBzZXRfY2hpbGQgcHJldiBzaWJsaW5nIH5wb29sXG4gICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIHByZXYgc2libGluZyB+cG9vbCk7XG4gICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgc2libGluZykgdGhlbiBzZXRfcHJldiBzaWJsaW5nIHByZXYgfnBvb2wpKVxuICA7O1xuXG4gIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egbm9kZSBQb29sLnRcbiAgICB0eXBlIG5vbnJlYyAnYSBub2RlID0gJ2Egbm9kZSBQb2ludGVyLnRcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfm1pbl9zaXplOmNhcGFjaXR5IDogYSB0ID1cbiAgICAgIFBvb2wuY3JlYXRlXG4gICAgICAgIFBvb2wuU2xvdHMudDVcbiAgICAgICAgfmNhcGFjaXR5XG4gICAgICAgIH5kdW1teTpcbiAgICAgICAgICAoIChPYmoubWFnaWMgTm9uZSA6IGEpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBkdW1teV9pZCApXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSBQb29sLmlzX2Z1bGwgdFxuICAgIGxldCBsZW5ndGggdCA9IFBvb2wubGVuZ3RoIHRcbiAgICBsZXQgZ3JvdyB0ID0gUG9vbC5ncm93IHRcblxuICAgIGxldCBjb3B5IHQgc3RhcnQgPVxuICAgICAgbGV0IHQnID0gY3JlYXRlIH5taW5fc2l6ZTooUG9vbC5jYXBhY2l0eSB0KSBpblxuICAgICAgbGV0IGNvcHlfbm9kZSBub2RlIHRvX3Zpc2l0ID1cbiAgICAgICAgaWYgaXNfZW1wdHkgbm9kZVxuICAgICAgICB0aGVuIGVtcHR5ICgpLCB0b192aXNpdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiB3ZSB1c2UgdGhlIHNhbWUgaWQsIGJ1dCB0aGF0J3Mgb2sgc2luY2UgaWRzIHNob3VsZCBiZSB1bmlxdWUgcGVyIGhlYXAgKilcbiAgICAgICAgICBsZXQgbmV3X25vZGUgPVxuICAgICAgICAgICAgYWxsb2NhdGUgKHZhbHVlX2V4biBub2RlIH5wb29sOnQpIH5wb29sOnQnIH5pZDooaWQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRvX3Zpc2l0ID1cbiAgICAgICAgICAgIChuZXdfbm9kZSwgYGNoaWxkLCBjaGlsZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiAobmV3X25vZGUsIGBzaWJsaW5nLCBzaWJsaW5nIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IHRvX3Zpc2l0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBuZXdfbm9kZSwgdG9fdmlzaXQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgKG5vZGVfdG9fdXBkYXRlLCBzbG90LCBub2RlX3RvX2NvcHkpIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X25vZGUsIHRvX3Zpc2l0ID0gY29weV9ub2RlIG5vZGVfdG9fY29weSByZXN0IGluXG4gICAgICAgICAgKG1hdGNoIHNsb3Qgd2l0aFxuICAgICAgICAgICB8IGBjaGlsZCAtPiBzZXRfY2hpbGQgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCdcbiAgICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0Jyk7XG4gICAgICAgICAgaWYgbm90IChpc19lbXB0eSBuZXdfbm9kZSkgdGhlbiBzZXRfcHJldiBuZXdfbm9kZSBub2RlX3RvX3VwZGF0ZSB+cG9vbDp0JztcbiAgICAgICAgICBsb29wIHRvX3Zpc2l0XG4gICAgICBpblxuICAgICAgbGV0IG5ld19zdGFydCwgdG9fdmlzaXQgPSBjb3B5X25vZGUgc3RhcnQgW10gaW5cbiAgICAgIGxvb3AgdG9fdmlzaXQ7XG4gICAgICBuZXdfc3RhcnQsIHQnXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyAoKiBjbXAgaXMgcGxhY2VkIGZpcnN0IHRvIHNob3J0LWNpcmN1aXQgcG9seW1vcnBoaWMgY29tcGFyZSAqKVxuICAgIGNtcCA6ICdhIC0+ICdhIC0+IGludFxuICA7IG11dGFibGUgcG9vbCA6ICdhIE5vZGUuUG9vbC50XG4gIDsgKCogaW52YXJpYW50OiAgW3Jvb3RdIG5ldmVyIGhhcyBhIHNpYmxpbmcgKilcbiAgICBtdXRhYmxlIHJvb3QgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgOiBpbnRcbiAgfVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IChub2RlLCBleHBlY3RlZF9wcmV2LCBtYXliZV9wYXJlbnRfdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBub2RlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0aGlzX3ZhbHVlID0gTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgYXNzZXJ0IChOb2RlLmVxdWFsIChOb2RlLnByZXYgbm9kZSB+cG9vbDp0LnBvb2wpIGV4cGVjdGVkX3ByZXYpO1xuICAgICAgICBPcHRpb24uaXRlciBtYXliZV9wYXJlbnRfdmFsdWUgfmY6KGZ1biBwYXJlbnRfdmFsdWUgLT5cbiAgICAgICAgICBhc3NlcnQgKHQuY21wIHBhcmVudF92YWx1ZSB0aGlzX3ZhbHVlIDw9IDApKTtcbiAgICAgICAgbG9vcFxuICAgICAgICAgICgoTm9kZS5jaGlsZCBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgU29tZSB0aGlzX3ZhbHVlKVxuICAgICAgICAgICA6OiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBtYXliZV9wYXJlbnRfdmFsdWUpXG4gICAgICAgICAgIDo6IHJlc3QpKVxuICAgICAgZWxzZSBsb29wIHJlc3RcbiAgaW5cbiAgYXNzZXJ0IChOb2RlLmlzX2VtcHR5IHQucm9vdCB8fCBOb2RlLmlzX2VtcHR5IChOb2RlLnNpYmxpbmcgdC5yb290IH5wb29sOnQucG9vbCkpO1xuICBsb29wIFsgdC5yb290LCBOb2RlLmVtcHR5ICgpLCBOb25lIF1cbjs7XG5cbmxldCBjcmVhdGUgPyhtaW5fc2l6ZSA9IDEpIH5jbXAgKCkgPVxuICB7IGNtcFxuICA7IHBvb2wgPSBOb2RlLlBvb2wuY3JlYXRlIH5taW5fc2l6ZVxuICA7IHJvb3QgPSBOb2RlLmVtcHR5ICgpXG4gIDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA9IDBcbiAgfVxuOztcblxubGV0IGNvcHkgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfSA9XG4gIGxldCByb290LCBwb29sID0gTm9kZS5Qb29sLmNvcHkgcG9vbCByb290IGluXG4gIHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH1cbjs7XG5cbmxldCBhbGxvY2F0ZSB0IHYgPVxuICBpZiBOb2RlLlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gTm9kZS5Qb29sLmdyb3cgdC5wb29sO1xuICB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPC0gdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzICsgMTtcbiAgTm9kZS5hbGxvY2F0ZSB2IH5wb29sOnQucG9vbCB+aWQ6KE5vZGUuSWQub2ZfaW50IHQubnVtX29mX2FsbG9jYXRlZF9ub2Rlcylcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggcm9vdDEsIHJvb3QyIHdpdGhcbiAgICAgfCBOb25lLCBoIHwgaCwgTm9uZSAtPiBoXG4gICAgIHwgU29tZSAoTm9kZSAodjEsIGNoaWxkcmVuMSkpLCBTb21lIChOb2RlICh2MiwgY2hpbGRyZW4yKSkgLT5cbiAgICAgICBpZiB2MSA8IHYyXG4gICAgICAgdGhlbiBTb21lIChOb2RlICh2MSwgcm9vdDIgOjogY2hpbGRyZW4xKSlcbiAgICAgICBlbHNlIFNvbWUgKE5vZGUgKHYyLCByb290MSA6OiBjaGlsZHJlbjIpKVxuICAgXX1cblxuICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIG5laXRoZXIgcm9vdCBoYXMgYSBwcmV2IG5vZGUgKHVzdWFsbHkgYmVjYXVzZSB0aGUgaW5wdXRzIGNvbWVcbiAgIGZyb20gW2Rpc2Nvbm5lY3RfKl0gb3IgYXJlIHRoZSB0b3Agb2YgdGhlIGhlYXAgb3IgYXJlIHRoZSBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbikuICopXG5sZXQgbWVyZ2UgdCByb290MSByb290MiA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgcm9vdDFcbiAgdGhlbiByb290MlxuICBlbHNlIGlmIE5vZGUuaXNfZW1wdHkgcm9vdDJcbiAgdGhlbiByb290MVxuICBlbHNlIChcbiAgICBsZXQgYWRkX2NoaWxkIHQgbm9kZSB+Y2hpbGQgPVxuICAgICAgTm9kZS5hZGRfY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgfmNoaWxkO1xuICAgICAgbm9kZVxuICAgIGluXG4gICAgbGV0IHYxID0gTm9kZS52YWx1ZV9leG4gcm9vdDEgfnBvb2w6dC5wb29sIGluXG4gICAgbGV0IHYyID0gTm9kZS52YWx1ZV9leG4gcm9vdDIgfnBvb2w6dC5wb29sIGluXG4gICAgaWYgdC5jbXAgdjEgdjIgPCAwXG4gICAgdGhlbiBhZGRfY2hpbGQgdCByb290MSB+Y2hpbGQ6cm9vdDJcbiAgICBlbHNlIGFkZF9jaGlsZCB0IHJvb3QyIH5jaGlsZDpyb290MSlcbjs7XG5cbmxldCB0b3BfZXhuIHQgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdFxuICB0aGVuIGZhaWx3aXRoIFwiSGVhcC50b3BfZXhuIGNhbGxlZCBvbiBhbiBlbXB0eSBoZWFwXCJcbiAgZWxzZSBOb2RlLnZhbHVlX2V4biB0LnJvb3QgfnBvb2w6dC5wb29sXG47O1xuXG5sZXQgdG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3BfZXhuIHQpXG5cbmxldCBhZGRfbm9kZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFsbG9jYXRlIHQgdiBpblxuICB0LnJvb3QgPC0gbWVyZ2UgdCB0LnJvb3Qgbm9kZTtcbiAgbm9kZVxuOztcblxubGV0IGFkZCB0IHYgPSBpZ25vcmUgKGFkZF9ub2RlIHQgdiA6IF8gTm9kZS50KVxuXG4oKiBbbWVyZ2VfcGFpcnNdIHRha2VzIGEgbGlzdCBvZiBoZWFwIHJvb3RzIGFuZCBtZXJnZXMgY29uc2VjdXRpdmUgcGFpcnMsIHJlZHVjaW5nIHRoZVxuICAgbGlzdCBvZiBsZW5ndGggbiB0byBuLzIuICBUaGVuIGl0IG1lcmdlcyB0aGUgbWVyZ2VkIHBhaXJzIGludG8gYSBzaW5nbGUgaGVhcC4gIE9uZVxuICAgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyBpcyBzb21ld2hhdCBsaWtlIGJ1aWxkaW5nIGEgc2luZ2xlIGxldmVsIG9mIGEgYmluYXJ5IHRyZWUuXG5cbiAgIFRoZSBvdXRwdXQgaGVhcCBkb2VzIG5vdCBjb250YWluIHRoZSB2YWx1ZSB0aGF0IHdhcyBhdCB0aGUgcm9vdCBvZiB0aGUgaW5wdXQgaGVhcC5cblxuICAgV2UgYnJlYWsgdGhlIGZ1bmN0aW9uIGludG8gdHdvIHBhcnRzLiAgQSBmaXJzdCBzdGFnZSB0aGF0IGlzIHdpbGxpbmcgdG8gdXNlIGxpbWl0ZWRcbiAgIHN0YWNrIGluc3RlYWQgb2YgaGVhcCBhbGxvY2F0aW9uIGZvciBib29ra2VlcGluZywgYW5kIGEgc2Vjb25kIHN0YWdlIHRoYXQgc2hpZnRzIHRvXG4gICB1c2luZyBhIGxpc3QgYXMgYW4gYWNjdW11bGF0b3IgaWYgd2UgZ28gdG9vIGRlZXAuXG5cbiAgIFRoaXMgY2FuIGJlIG1hZGUgdGFpbCByZWN1cnNpdmUgYW5kIG5vbi1hbGxvY2F0aW5nIGJ5IHN0YXJ0aW5nIHdpdGggYW4gZW1wdHkgaGVhcCBhbmRcbiAgIG1lcmdpbmcgbWVyZ2VkIHBhaXJzIGludG8gaXQuIFVuZm9ydHVuYXRlbHkgdGhpcyBcImxlZnQgZm9sZFwiIHZlcnNpb24gaXMgbm90IHdoYXQgaXNcbiAgIGRlc2NyaWJlZCBpbiB0aGUgb3JpZ2luYWwgcGFwZXIgYnkgRnJlZG1hbiBldCBhbC47IHRoZXkgc3BlY2lmaWNhbGx5IHNheSB0aGF0XG4gICBjaGlsZHJlbiBzaG91bGQgYmUgbWVyZ2VkIHRvZ2V0aGVyIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgbGlzdC4gKFttZXJnZV0gaXMgbm90IGFzc29jaWF0aXZlLCBzbyBvcmRlciBtYXR0ZXJzLilcbiopXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgfCBbaGVhZF0gLT4gaGVhZCA6OiBhY2NcbiAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT4gbG9vcCAobWVyZ2UgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyXG4gICAgIGluXG4gICAgIG1hdGNoIGxvb3AgW10gY2hpbGRyZW4gd2l0aFxuICAgICB8IFtdIC0+IE5vbmVcbiAgICAgfCBbaF0gLT4gU29tZSBoXG4gICAgIHwgeCA6OiB4cyAtPiBTb21lIChMaXN0LmZvbGQgeHMgfmluaXQ6eCB+ZjptZXJnZSlcbiAgIF19XG4qKVxubGV0IGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkID1cbiAgbGV0IHJlYyBsb29wIGFjYyBoZWFkID1cbiAgICBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHQxID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgaGVhZCB+cG9vbDp0LnBvb2wgaW5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbmV4dDFcbiAgICAgIHRoZW4gaGVhZCA6OiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgbG9vcCAobWVyZ2UgdCBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDIpKVxuICBpblxuICBtYXRjaCBsb29wIFtdIGhlYWQgd2l0aFxuICB8IFtdIC0+IE5vZGUuZW1wdHkgKClcbiAgfCBbIGggXSAtPiBoXG4gIHwgeCA6OiB4cyAtPiBMaXN0LmZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIGFjYyBoZWFwIC0+IG1lcmdlIHQgYWNjIGhlYXApXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHQucm9vdCB3aXRoXG4gICAgIHwgTm9kZSAoXywgY2hpbGRyZW4pIC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGRlcHRoIGNoaWxkcmVuID1cbiAgICAgICAgIGlmIGRlcHRoID49IG1heF9zdGFja19kZXB0aFxuICAgICAgICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgY2hpbGRlblxuICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICB8IFtoZWFkXSAtPiBTb21lIGhlYWRcbiAgICAgICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+XG4gICAgICAgICAgICAgbWVyZ2UgKG1lcmdlIGhlYWQgbmV4dDEpIChsb29wIChkZXB0aCArIDEpIG5leHQyKVxuICAgICAgICAgZW5kXG4gICAgICAgaW5cbiAgICAgICBsb29wIDAgY2hpbGRyZW5cbiAgIF19XG4qKVxubGV0IG1lcmdlX3BhaXJzID1cbiAgbGV0IG1heF9zdGFja19kZXB0aCA9IDFfMDAwIGluXG4gIGxldCByZWMgbG9vcCB0IGRlcHRoIGhlYWQgPVxuICAgIGlmIGRlcHRoID49IG1heF9zdGFja19kZXB0aFxuICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWRcbiAgICBlbHNlIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gaGVhZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHQxID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgaGVhZCB+cG9vbDp0LnBvb2wgaW5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbmV4dDFcbiAgICAgIHRoZW4gaGVhZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICAoKiBtZXJnZSB0aGUgZmlyc3QgdHdvIG5vZGVzIGluIG91ciBsaXN0LCBhbmQgdGhlbiBtZXJnZSB0aGUgcmVzdWx0IHdpdGggdGhlXG4gICAgICAgICAgIHJlc3VsdCBvZiByZWN1cnNpdmVseSBjYWxsaW5nIG1lcmdlX3BhaXJzIG9uIHRoZSB0YWlsICopXG4gICAgICAgIG1lcmdlIHQgKG1lcmdlIHQgaGVhZCBuZXh0MSkgKGxvb3AgdCAoZGVwdGggKyAxKSBuZXh0MikpKVxuICBpblxuICBmdW4gdCBoZWFkIC0+IGxvb3AgdCAwIGhlYWRcbjs7XG5cbmxldCByZW1vdmVfbm9uX2VtcHR5IHQgbm9kZSA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIE5vZGUuZGV0YWNoIG5vZGUgfnBvb2w7XG4gIGxldCBtZXJnZWRfY2hpbGRyZW4gPSBtZXJnZV9wYWlycyB0IChOb2RlLmRpc2Nvbm5lY3RfY2hpbGQgbm9kZSB+cG9vbCkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICBpZiBOb2RlLmVxdWFsIHQucm9vdCBub2RlIHRoZW4gbWVyZ2VkX2NoaWxkcmVuIGVsc2UgbWVyZ2UgdCB0LnJvb3QgbWVyZ2VkX2NoaWxkcmVuXG4gIGluXG4gIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICB0LnJvb3QgPC0gbmV3X3Jvb3Rcbjs7XG5cbmxldCByZW1vdmVfdG9wIHQgPSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KSB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0LnJvb3RcblxuKCogTm90ZSB0aGF0IHRoaXMgaXMgdGFpbC1yZWN1cnNpdmUgYW5kIHRoYXQgZWFjaCBub2RlIGlzIHZpc2l0ZWQgYXQgbW9zdCAzIHRpbWVzIChvbmNlXG4gICBmb3IgZWFjaCBicmFuY2ggb2YgdGhlIFwiaWZcIiksIHNvIGl0IHRha2VzIGxpbmVhciB0aW1lIGFuZCBjb25zdGFudCBzcGFjZS4gKilcbmxldCByZWMgcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgbm9kZSB+cG9vbCA9XG4gIGxldCBjaGlsZCA9IE5vZGUuY2hpbGQgbm9kZSB+cG9vbCBpblxuICBsZXQgc2libGluZyA9IE5vZGUuc2libGluZyBub2RlIH5wb29sIGluXG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBjaGlsZClcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBjaGlsZCB+cG9vbFxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBzaWJsaW5nKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHNpYmxpbmcgfnBvb2xcbiAgZWxzZSAoXG4gICAgbGV0IHByZXYgPSBOb2RlLnByZXYgbm9kZSB+cG9vbCBpblxuICAgIE5vZGUuZGV0YWNoIG5vZGUgfnBvb2w7XG4gICAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IHByZXYpIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgcHJldiB+cG9vbClcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdClcbiAgdGhlbiAoXG4gICAgcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgdC5yb290IH5wb29sOnQucG9vbDtcbiAgICB0LnJvb3QgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBwb3BfZXhuIHQgPVxuICBsZXQgciA9IHRvcF9leG4gdCBpblxuICByZW1vdmVfdG9wIHQ7XG4gIHJcbjs7XG5cbmxldCBwb3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9leG4gdClcblxubGV0IHBvcF9pZiB0IGYgPVxuICBtYXRjaCB0b3AgdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB2IC0+XG4gICAgaWYgZiB2XG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfdG9wIHQ7XG4gICAgICBTb21lIHYpXG4gICAgZWxzZSBOb25lXG47O1xuXG4oKiBwYWlyaW5nIGhlYXBzIGFyZSBub3QgYmFsYW5jZWQgdHJlZXMsIGFuZCB0aGVyZWZvcmUgd2UgY2FuJ3QgcmVseSBvbiBhIGJhbGFuY2VcbiAgIHByb3BlcnR5IHRvIHN0b3Agb3Vyc2VsdmVzIGZyb20gb3ZlcmZsb3dpbmcgdGhlIHN0YWNrLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCBhY2MgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgKGYgYWNjIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKSkgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgaW5pdCBbIHQucm9vdCBdXG47O1xuXG4oKiBhbG1vc3QgaWRlbnRpY2FsIHRvIGZvbGQsIGNvcGllZCBmb3Igc3BlZWQgcHVycG9zZXMgKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBmIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKTtcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBbIHQucm9vdCBdXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBOb2RlLlBvb2wubGVuZ3RoIHQucG9vbFxuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgaXNfZW1wdHkgdCA9IE5vZGUuaXNfZW1wdHkgdC5yb290XG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9hcnJheSBhcnIgfmNtcCA9XG4gIGxldCB0ID0gY3JlYXRlIH5taW5fc2l6ZTooQXJyYXkubGVuZ3RoIGFycikgfmNtcCAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gYWRkIHQgdik7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0IGwgfmNtcCA9IG9mX2FycmF5IChBcnJheS5vZl9saXN0IGwpIH5jbXBcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQgfD4gQXJyYXkuc29ydGVkX2NvcHkgfmNvbXBhcmU6dC5jbXApXG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIG5vZGUgOiAnYSBOb2RlLnRcbiAgICA7IG5vZGVfaWQgOiBOb2RlLklkLnRcbiAgICA7IGhlYXAgOiAnYSB0XG4gICAgfVxuXG4gICgqIElmIGlkcyBhcmUgZGlmZmVyZW50LCBpdCBtZWFucyB0aGF0IHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lXG4gICAgIG90aGVyIG1lYW5zIChhbmQgcG9zc2libHkgcmV1c2VkKS4gKilcbiAgbGV0IGlzX25vZGVfdmFsaWQgdCA9IE5vZGUuSWQuZXF1YWwgKE5vZGUuaWQgfnBvb2w6dC5oZWFwLnBvb2wgdC5ub2RlKSB0Lm5vZGVfaWRcblxuICBsZXQgdmFsdWUgdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0IHRoZW4gU29tZSAoTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdFxuICAgIHRoZW4gTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sXG4gICAgZWxzZSBmYWlsd2l0aCBcIkhlYXAudmFsdWVfZXhuOiBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIGhlYXBcIlxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHZhbHVlIHQgOiBhIG9wdGlvbildXG5lbmRcblxubGV0IHJlbW92ZSB0ICh0b2tlbiA6IF8gRWx0LnQpID1cbiAgaWYgbm90IChwaHlzX2VxdWFsIHQgdG9rZW4uaGVhcClcbiAgdGhlbiBmYWlsd2l0aCBcImNhbm5vdCByZW1vdmUgZnJvbSBhIGRpZmZlcmVudCBoZWFwXCJcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdG9rZW4ubm9kZSlcbiAgdGhlbiAoXG4gICAgaWYgRWx0LmlzX25vZGVfdmFsaWQgdG9rZW4gdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdG9rZW4ubm9kZTtcbiAgICB0b2tlbi5ub2RlIDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgYWRkX3JlbW92YWJsZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFkZF9ub2RlIHQgdiBpblxuICB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuOztcblxubGV0IHVwZGF0ZSB0IHRva2VuIHYgPVxuICByZW1vdmUgdCB0b2tlbjtcbiAgYWRkX3JlbW92YWJsZSB0IHZcbjs7XG5cbmxldCBmaW5kX2VsdCA9XG4gIGxldCByZWMgbG9vcCB0IGYgbm9kZXMgPVxuICAgIG1hdGNoIG5vZGVzIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgdCBmIHJlc3RcbiAgICAgIGVsc2UgaWYgZiAoTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wpXG4gICAgICB0aGVuIFNvbWUgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCB0IGYgKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCA6OiBOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sIDo6IHJlc3QpXG4gIGluXG4gIGZ1biB0IH5mIC0+IGxvb3AgdCBmIFsgdC5yb290IF1cbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgaGVhcCA9ICdhIHRcbiAgICB0eXBlICdhIHQgPSAnYSBOb2RlLnRcblxuICAgIGxldCB2YWx1ZSB0IGhlYXAgPSBOb2RlLnZhbHVlX2V4biB+cG9vbDpoZWFwLnBvb2wgdFxuICBlbmRcblxuICBsZXQgYWRkX3JlbW92YWJsZSA9IGFkZF9ub2RlXG4gIGxldCByZW1vdmUgPSByZW1vdmVfbm9uX2VtcHR5XG5cbiAgbGV0IHVwZGF0ZSB0IGVsdCB2ID1cbiAgICByZW1vdmUgdCBlbHQ7XG4gICAgYWRkX3JlbW92YWJsZSB0IHZcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBhbV9ydW5uaW5nX3Rlc3QgOiBib29sXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBhID1cbiAgICBpZiBNLmFtX3J1bm5pbmdfdGVzdCB0aGVuIFNleHAuQXRvbSBcIjxoaWRkZW5faW5fdGVzdD5cIiBlbHNlIHNleHBfb2ZfYSBhXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfbm9uX3JvdW5kdHJpcHBpbmdfaW5fdGVzdF9vZl9zZXhwID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIFR1cm5lZF9vZmYgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYgPSBNYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gZmFsc2VcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVHVybmVkX29uID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb24gPSBNYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gdHJ1ZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb24udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiVHVybmVkIG9uXCIgPVxuICAgICAgcHJpbnRfcyBbJXNleHAgKDEwMjQgOiBUdXJuZWRfb24udCldO1xuICAgICAgWyVleHBlY3Qge3wgPGhpZGRlbl9pbl90ZXN0PiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiVHVybmVkIG9mZlwiID1cbiAgICAgIHByaW50X3MgKFslc2V4cF9vZjogVHVybmVkX29mZi50XSAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjQgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxuaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG4gIGVuZClcbiIsIm9wZW4gQ29yZVxuXG50eXBlICsnYSB0XG5cbigqIFRoaXMgW09iai5tYWdpY10gaXMgT0sgYmVjYXVzZSB3ZSBuZXZlciBhbGxvdyB1c2VyIGNvZGUgYWNjZXNzIHRvIFtub25lXSAoZXhjZXB0IHZpYVxuICAgW3Vuc2FmZV92YWx1ZV0pLiAgV2UgZGlzYWxsb3cgW18gVW9wdC50IFVvcHQudF0sIHNvIHRoZXJlIGlzIG5vIGNoYW5jZSBvZiBjb25mdXNpbmdcbiAgIFtub25lXSB3aXRoIFtzb21lIG5vbmVdLiAgQW5kIFtmbG9hdCBVb3B0LnQgYXJyYXldIGlzIHNpbWlsYXJseSBkaXNhbGxvd2VkLiAqKVxubGV0IG5vbmUgOiAnYSB0ID0gT2JqLm1hZ2ljIFwiVW9wdC5ub25lXCJcbmxldCBzb21lICh4IDogJ2EpIDogJ2EgdCA9IE9iai5tYWdpYyB4XG5sZXQgdW5zYWZlX3ZhbHVlICh4IDogJ2EgdCkgOiAnYSA9IE9iai5tYWdpYyB4XG5sZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbmxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGlmIGlzX3NvbWUgdCB0aGVuIGludmFyaWFudF9hICh1bnNhZmVfdmFsdWUgdClcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIGlmIGlzX25vbmUgdCB0aGVuIFslc2V4cCBOb25lXSBlbHNlIFslc2V4cCBTb21lICh1bnNhZmVfdmFsdWUgdCA6IGEpXVxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gZmFpbHdpdGggXCJVb3B0LnZhbHVlX2V4blwiIGVsc2UgdW5zYWZlX3ZhbHVlIHRcbmxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh1bnNhZmVfdmFsdWUgdClcblxubGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBub25lXG4gIHwgU29tZSBhIC0+IHNvbWUgYVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgZXhwbG9pdHMgdGhlIGZhY3QgdGhhdCBPQ2FtbCBkb2VzIG5vdCBwZXJmb3JtIGNvbnRleHQtc3dpdGNoZXMgdW5kZXJcbiAgIGNlcnRhaW4gY29uZGl0aW9ucy4gIEl0IGNhbiB0aGVyZWZvcmUgYXZvaWQgdXNpbmcgbXV0ZXhlcy5cblxuICAgR2l2ZW4gdGhlIHNlbWFudGljcyBvZiB0aGUgY3VycmVudCBPQ2FtbCBydW50aW1lIChhbmQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUpLCBjb2RlXG4gICBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvdyB3aWxsIG5ldmVyIGNvbnRhaW4gYSBjb250ZXh0LXN3aXRjaC4gIFRoZSBkZWNpZGluZ1xuICAgY3JpdGVyaW9uIGlzIHdoZXRoZXIgdGhleSBjb250YWluIGFsbG9jYXRpb25zIG9yIGNhbGxzIHRvIGV4dGVybmFsL2J1aWx0aW4gZnVuY3Rpb25zLlxuICAgSWYgdGhlcmUgaXMgbm9uZSwgYSBjb250ZXh0LXN3aXRjaCBjYW5ub3QgaGFwcGVuLiAgQXNzaWdubWVudHMgd2l0aG91dCBhbGxvY2F0aW9ucyxcbiAgIGZpZWxkIGFjY2VzcywgcGF0dGVybi1tYXRjaGluZywgZXRjLiwgZG8gbm90IHRyaWdnZXIgY29udGV4dC1zd2l0Y2hlcy5cblxuICAgQ29kZSByZXZpZXdlcnMgc2hvdWxkIHRoZXJlZm9yZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3dcbiAgIGRvIG5vdCB2aW9sYXRlIHRoZSBhYm92ZSBhc3N1bXB0aW9ucy4gIEl0IGlzIHBydWRlbnQgdG8gZGlzYXNzZW1ibGUgdGhlIC5vIGZpbGUgKHVzaW5nXG4gICBbb2JqZHVtcCAtZHJdKSBhbmQgZXhhbWluZSBpdC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dCA6ICgnYSB0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IFVvcHQubm9uZTsgbmV4dCA9IFVvcHQubm9uZSB9XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbZnJvbnRdIHRvIFtiYWNrXSBoYXMgW2xlbmd0aCArIDFdIGxpbmtlZCBlbGVtZW50cywgd2hlcmUgdGhlIGZpcnN0IFtsZW5ndGhdIGhvbGQgdGhlXG4gICAgIHZhbHVlcyBpbiB0aGUgcXVldWUsIGFuZCB0aGUgbGFzdCBpcyBbYmFja10sIGhvbGRpbmcgbm8gdmFsdWUuICopXG4gIDsgbXV0YWJsZSBmcm9udCA6ICdhIEVsdC50XG4gIDsgbXV0YWJsZSBiYWNrIDogJ2EgRWx0LnRcbiAgKCogW3VudXNlZF9lbHRzXSBpcyBzaW5nbHkgbGlua2VkIHZpYSBbbmV4dF0sIGFuZCBlbmRzIHdpdGggW3NlbnRpbmVsXS4gIEFsbCBlbHRzIGluXG4gICAgIFt1bnVzZWRfZWx0c10gaGF2ZSBbVW9wdC5pc19ub25lIGVsdC52YWx1ZV0uICopXG4gIDsgbXV0YWJsZSB1bnVzZWRfZWx0cyA6ICdhIEVsdC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGxldCBpID0gcmVmIHQubGVuZ3RoIGluXG4gICAgICAgICAgIGxldCByID0gcmVmIGZyb250IGluXG4gICAgICAgICAgIHdoaWxlICFpID4gMCBkb1xuICAgICAgICAgICAgIGRlY3IgaTtcbiAgICAgICAgICAgICBsZXQgZWx0ID0gIXIgaW5cbiAgICAgICAgICAgICByIDo9IFVvcHQudmFsdWVfZXhuIGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAhciB0LmJhY2spKSlcbiAgICAgIH5iYWNrOihjaGVjayAoZnVuIGJhY2sgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgYmFjay5FbHQudmFsdWUpKSlcbiAgICAgIH51bnVzZWRfZWx0czpcbiAgICAgICAgKGNoZWNrIChmdW4gdW51c2VkX2VsdHMgLT5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgdW51c2VkX2VsdHMgaW5cbiAgICAgICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgICAgICAgbGV0IGVsdCA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgICAgICAgICAgciA6PSBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lKSkpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGVsdCA9IEVsdC5jcmVhdGUgKCkgaW5cbiAgeyBmcm9udCA9IGVsdDsgYmFjayA9IGVsdDsgbGVuZ3RoID0gMDsgdW51c2VkX2VsdHMgPSBVb3B0Lm5vbmUgfVxuOztcblxubGV0IGdldF91bnVzZWRfZWx0IHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiBVb3B0LmlzX3NvbWUgdC51bnVzZWRfZWx0c1xuICB0aGVuIChcbiAgICBsZXQgZWx0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC51bnVzZWRfZWx0cyBpblxuICAgIHQudW51c2VkX2VsdHMgPC0gZWx0Lm5leHQ7XG4gICAgZWx0ICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKSlcbiAgZWxzZSBFbHQuY3JlYXRlICgpXG47O1xuXG5sZXQgZW5xdWV1ZSAodHlwZSBhKSAodCA6IGEgdCkgKGEgOiBhKSA9XG4gIGxldCBuZXdfYmFjayA9IGdldF91bnVzZWRfZWx0IHQgaW5cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICB0LmJhY2sudmFsdWUgPC0gVW9wdC5zb21lIGE7XG4gIHQuYmFjay5uZXh0IDwtIFVvcHQuc29tZSBuZXdfYmFjaztcbiAgdC5iYWNrIDwtIG5ld19iYWNrXG47O1xuXG4oKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcblxubGV0IHJldHVybl91bnVzZWRfZWx0IHQgKGVsdCA6IF8gRWx0LnQpID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgZWx0LnZhbHVlIDwtIFVvcHQubm9uZTtcbiAgZWx0Lm5leHQgPC0gdC51bnVzZWRfZWx0cztcbiAgdC51bnVzZWRfZWx0cyA8LSBVb3B0LnNvbWUgZWx0O1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgKClcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0ID1cbiAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBvZiBlbXB0eSBxdWV1ZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX2RlcXVldWVfZW1wdHkgdDtcbiAgbGV0IGVsdCA9IHQuZnJvbnQgaW5cbiAgbGV0IGEgPSBlbHQudmFsdWUgaW5cbiAgdC5mcm9udCA8LSBVb3B0LnVuc2FmZV92YWx1ZSBlbHQubmV4dDtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgcmV0dXJuX3VudXNlZF9lbHQgdCBlbHQ7XG4gIFVvcHQudW5zYWZlX3ZhbHVlIGFcbjs7XG5cbmxldCBjbGVhcl9pbnRlcm5hbF9wb29sIHQgPSB0LnVudXNlZF9lbHRzIDwtIFVvcHQubm9uZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgVW9wdCA9IFVvcHRcbmVuZFxuIiwiaW5jbHVkZSBDb3JlLkNvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbigqIFthZnRlcl0gaXMgbGlrZSBbYWRkXSwgYnV0IGRlYWxzIG5pY2VseSB3aXRoIHRoZSBjYXNlIG9mIG92ZXJmbG93IGJ5IGluc3RlYWQgcmV0dXJuaW5nXG4gICBbbWF4X3ZhbHVlXS4gIFRpbWUtc291cmNlIGZ1bmN0aW9ucyB1c2UgW2FmdGVyXSB0byBhdm9pZCBpbW1lZGlhdGVseSBmaXJpbmcgZXZlbnRzIHRoYXRcbiAgIHNob3VsZCBuZXZlciBmaXJlLCBkdWUgdG8gdGhlIG92ZXJmbG93IGxlYWRpbmcgdG8gYSBuZWdhdGl2ZSB0aW1lIHRoYXQgYXBwZWFycyB0byBiZSBpblxuICAgdGhlIHBhc3QuICBXZSBkb24ndCBjaGVjayB1bmRlcmZsb3cgYmVjYXVzZSB0aGF0IGlzIHZlcnkgdW5saWtlbHksIHJlcXVpcmluZyBib3RoIGFcbiAgIG5lZ2F0aXZlIHRpbWUgYW5kIGEgbmVnYXRpdmUgc3Bhbi4gKilcbmxldCBhZnRlciB0IHNwYW4gPVxuICBsZXQgcmVzdWx0ID0gYWRkIHQgc3BhbiBpblxuICBpZiBTcGFuLiggPiApIHNwYW4gU3Bhbi56ZXJvICYmIHJlc3VsdCA8IHQgdGhlbiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyBlbHNlIHJlc3VsdFxuOztcbiIsIm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnlcbmluY2x1ZGUgQXN5bmNfa2VybmVsX2NvbmZpZy5QcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcblxubGV0IGxvZyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgZXByaW50ZlxuICAgIFwiJXNcXG4lIVwiXG4gICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgIChbJXNleHBfb2Y6IFNleHAudCAqIFRpbWVfbnMudCAqIHN0cmluZyAqIGFdXG4gICAgICAgICAgKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCksIFRpbWVfbnMubm93ICgpLCBtZXNzYWdlLCBhKSkpXG47O1xuXG5sZXQgbG9nX3N0cmluZyBtZXNzYWdlID0gbG9nIG1lc3NhZ2UgKCkgWyVzZXhwX29mOiB1bml0XVxuIiwibW9kdWxlIERlYnVnX2luX3RoaXNfZGlyZWN0b3J5ID0gRGVidWdcbm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiEgQ29yZVxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgQXN5bmNfa2VybmVsX2NvbmZpZy5NYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IGVwcmludCA9IENvcmUuRGVidWcuZXByaW50XG5sZXQgZXByaW50X3MgPSBDb3JlLkRlYnVnLmVwcmludF9zXG5sZXQgZXByaW50cyA9IENvcmUuRGVidWcuZXByaW50c1xubGV0IHByaW50X3Mgc2V4cCA9IHByaW50ZiBcIiVzXFxuJSFcIiAoc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0pXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xuXG4oKiBXZSBkb24ndCB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIGluIEFzeW5jX2tlcm5lbCwgdG8gYXZvaWQgZGlmZmljdWx0aWVzIHdpdGhcbiAgIHVzaW5nIGl0IG9uIGpzX29mX29jYW1sLiAqKVxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTm9ybWFsXG4gIHwgTG93XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbm9ybWFsID0gTm9ybWFsXG5sZXQgbG93ID0gTG93XG4iLCIoKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIGF0IHRoZSBoZWFydCBvZiBBc3luYy4gIFRoZSBmdW5jdGlvbnNcbiAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHlwZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmlsZShzKSBmb3IgZWFjaCBtb2R1bGUuXG4gICBUaGlzIGZpbGUgc2hvdWxkIGRlZmluZSBvbmx5IHR5cGVzLCBub3QgZnVuY3Rpb25zLCBzaW5jZSBmdW5jdGlvbnMgZGVmaW5lZCBpbnNpZGUgdGhlXG4gICByZWN1cnNpdmUgbW9kdWxlcyBhcmUgbm90IGlubGluZWQuXG5cbiAgIElmIHlvdSBuZWVkIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHRvIGEgbW9kdWxlIGJ1dCBkb2luZyBzbyB3b3VsZCBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gICBjeWNsZSwgc3BsaXQgdGhlIGZpbGUgaW50byBwaWVjZXMgYXMgbmVlZGVkIHRvIGJyZWFrIHRoZSBjeWNsZSwgZS5nLiBzY2hlZHVsZXIwLm1sLFxuICAgc2NoZWR1bGVyMS5tbCwgc2NoZWR1bGVyLm1sLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHJlYyBDZWxsIDogc2lnXG4gIHR5cGUgYW55ID1cbiAgICBbIGBFbXB0eVxuICAgIHwgYEVtcHR5X29uZV9oYW5kbGVyXG4gICAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICB8IGBGdWxsXG4gICAgfCBgSW5kaXJcbiAgICBdXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgICAgeyBtdXRhYmxlIHJ1biA6ICdhIC0+IHVuaXRcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgOyBtdXRhYmxlIHByZXYgOiAnYSBIYW5kbGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIG5leHQgOiAnYSBIYW5kbGVyLnRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSB0XG4gICAgfCBFbXB0eV9vbmVfaGFuZGxlciA6XG4gICAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgdFxuICAgIHwgRW1wdHkgOiAoJ2EsIFs+IGBFbXB0eSBdKSB0XG4gICAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSB0XG4gICAgfCBJbmRpciA6ICdhIEl2YXIudCAtPiAoJ2EsIFs+IGBJbmRpciBdKSB0XG5lbmQgPVxuICBDZWxsXG5cbmFuZCBIYW5kbGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgQ2VsbC50XG5lbmQgPVxuICBIYW5kbGVyXG5cbmFuZCBJdmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBDZWxsLmFueSkgQ2VsbC50IH1cblxuICBtb2R1bGUgSW1tdXRhYmxlIDogc2lnXG4gICAgdHlwZSAnYSB0ID0geyBjZWxsIDogKCdhLCBDZWxsLmFueSkgQ2VsbC50IH1cbiAgZW5kXG5lbmQgPVxuICBJdmFyXG5cbmFuZCBEZWZlcnJlZCA6IHNpZ1xuICB0eXBlICsnYSB0XG5lbmQgPVxuICBEZWZlcnJlZFxuXG5hbmQgRXhlY3V0aW9uX2NvbnRleHQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICAgIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIEV4ZWN1dGlvbl9jb250ZXh0XG5cbmFuZCBGb3J3YXJkaW5nIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBEZXRhY2hlZFxuICAgIHwgUGFyZW50IG9mIE1vbml0b3IudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4blxuZW5kID1cbiAgRm9yd2FyZGluZ1xuXG5hbmQgTW9uaXRvciA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IEluZm8udFxuICAgIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gICAgOyBpZCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIEl2YXIudFxuICAgIDsgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgICA7IG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVGFpbC50IGxpc3RcbiAgICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gICAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgICB9XG5lbmQgPVxuICBNb25pdG9yXG5cbmFuZCBUYWlsIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbmVuZCA9XG4gIFRhaWxcblxuYW5kIFN0cmVhbSA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5lbmQgPVxuICBTdHJlYW1cblxuKCogV2UgYXZvaWQgdXNpbmcgW21vZHVsZSByZWNdIHRvIGRlZmluZSBbQnZhcl0sIHNvIHRoYXQgW3RvX3JlcHJdIGFuZCBbb2ZfcmVwcl0gYXJlXG4gICBpbmxpbmVkLiAqKVxubW9kdWxlIEJ2YXIgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybWlzc2lvbikgdFxuXG4gICgqKiBbcmVwcl0gZXhpc3RzIHNvIHRoYXQgd2UgbWF5IGhpZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgW0J2YXIudF0sIGFuZCB0aGVuIGFkZCBhXG4gICAgICBwaGFudG9tIHR5cGUgdG8gaXQgdXBzdHJlYW0uICBXaXRob3V0IHRoaXMsIHRoZSBwaGFudG9tIHR5cGUgdmFyaWFibGUgd291bGQgYWxsb3dcbiAgICAgIGZvciBhbnl0aGluZyB0byBiZSBjb2VyY2VkIGluIGFuZCBvdXQsIHNpbmNlIGl0IGlzIHVudXNlZC4gKilcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHZhbCBvZl9yZXByIDogJ2EgcmVwciAtPiAoJ2EsICdwZXJtaXNzaW9uKSB0XG4gIHZhbCB0b19yZXByIDogKCdhLCAncGVybWlzc2lvbikgdCAtPiAnYSByZXByXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICdhIHJlcHJcblxuICBsZXQgdG9fcmVwciB0ID0gdFxuICBsZXQgb2ZfcmVwciB0ID0gdFxuZW5kXG5cbm1vZHVsZSByZWMgRXZlbnQgOiBzaWdcbiAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpcmVkXG4gICAgICB8IEhhcHBlbmluZ1xuICAgICAgfCBTY2hlZHVsZWRcbiAgICAgIHwgVW5zY2hlZHVsZWRcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmQgPVxuICBFdmVudFxuXG5hbmQgRXh0ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgdCA9IFQgOiBFeGVjdXRpb25fY29udGV4dC50ICogKCdhIC0+IHVuaXQpICogJ2EgLT4gdFxuZW5kID1cbiAgRXh0ZXJuYWxfam9iXG5cbmFuZCBKb2IgOiBzaWdcbiAgdHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCBPYmoudCkgUG9vbC5TbG90cy50M1xuICB0eXBlIHQgPSBzbG90cyBQb29sLlBvaW50ZXIudFxuZW5kID1cbiAgSm9iXG5cbmFuZCBKb2Jfb3JfZXZlbnQgOiBzaWdcbiAgdHlwZSB0XG5lbmQgPVxuICBKb2Jfb3JfZXZlbnRcblxuYW5kIEpvYl9wb29sIDogc2lnXG4gIHR5cGUgdCA9IEpvYi5zbG90cyBQb29sLnRcbmVuZCA9XG4gIEpvYl9wb29sXG5cbmFuZCBKb2JfcXVldWUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnMgOiBPYmoudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbWFzayA6IGludFxuICAgIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICB9XG5lbmQgPVxuICBKb2JfcXVldWVcblxuYW5kIEpvYnMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvdyA6IEpvYl9xdWV1ZS50XG4gICAgfVxuZW5kID1cbiAgSm9ic1xuXG5hbmQgU2NoZWR1bGVyIDogc2lnXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IEN5Y2xlX2hvb2sudCBsaXN0XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IEN5Y2xlX2hvb2sudCBsaXN0XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfbnVtX2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBUaW1lX3NvdXJjZS50MVxuICAgIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV2ZW50X2FkZGVkX2hvb2sgOiAoVGltZV9ucy50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSB5aWVsZCA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gICAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICAgIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBTY2hlZHVsZXJcblxuYW5kIEN5Y2xlX2hvb2sgOiBzaWdcbiAgdHlwZSB0ID0gdW5pdCAtPiB1bml0XG5lbmQgPVxuICBDeWNsZV9ob29rXG5cbmFuZCBDeWNsZV9ob29rX2hhbmRsZSA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuYW5kIFRpbWVfc291cmNlX2lkIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbmFuZCBUaW1lX3NvdXJjZSA6IHNpZ1xuICB0eXBlIC0ncncgdDEgPVxuICAgIHsgaWQgOiBUaW1lX3NvdXJjZV9pZC50XG4gICAgOyBtdXRhYmxlIGFkdmFuY2VfZXJyb3JzIDogRXJyb3IudCBsaXN0XG4gICAgOyBtdXRhYmxlIGFtX2FkdmFuY2luZyA6IGJvb2xcbiAgICA7IGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC50XG4gICAgOyBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBtdXRhYmxlIG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgfVxuZW5kID1cbiAgVGltZV9zb3VyY2VcblxuYW5kIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA6IHNpZ1xuICBtb2R1bGUgRXhlY19yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbmVuZCA9XG4gIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlclxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5tb25pdG9yXG5cbm1vZHVsZSBGb3J3YXJkaW5nID0gVHlwZXMuRm9yd2FyZGluZ1xuXG50eXBlIHQgPSBUeXBlcy5Nb25pdG9yLnQgPVxuICB7IG5hbWUgOiBJbmZvLnRcbiAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgOyBpZCA6IGludFxuICA7IG11dGFibGUgbmV4dF9lcnJvciA6IGV4biBUeXBlcy5JdmFyLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gc2NoZWR1bGVzIGEgam9iIGZvciBlYWNoIGVsZW1lbnQgb2YgW2hhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKFR5cGVzLkV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBleHRlbmRzIGVhY2ggdGFpbCBpbiBbdGFpbHNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVHlwZXMuVGFpbC50IGxpc3RcbiAgOyBtdXRhYmxlIGhhc19zZWVuX2Vycm9yIDogYm9vbFxuICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID1cbiAgbWF0Y2ggdC5oZXJlIHdpdGhcbiAgfCBOb25lIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KV1cbiAgfCBTb21lIGhlcmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpLCAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGRlc2NyaXB0aW9ucyA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBsZXQgYWMgPSBkZXNjcmlwdGlvbiB0IDo6IGFjIGluXG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPiBMaXN0LnJldiBhY1xuICAgIHwgUGFyZW50IHQgLT4gbG9vcCB0IGFjXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXVxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChkZXNjcmlwdGlvbnMgdCA6IFNleHAudCBsaXN0KV1cblxubGV0IG5leHRfaWQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcblxubGV0IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBwYXJlbnQgPVxuICBsZXQgaWQgPSBuZXh0X2lkICgpIGluXG4gIGxldCBuYW1lID1cbiAgICBtYXRjaCBpbmZvLCBuYW1lIHdpdGhcbiAgICB8IFNvbWUgaSwgTm9uZSAtPiBpXG4gICAgfCBTb21lIGksIFNvbWUgcyAtPiBJbmZvLnRhZyBpIH50YWc6c1xuICAgIHwgTm9uZSwgU29tZSBzIC0+IEluZm8ub2Zfc3RyaW5nIHNcbiAgICB8IE5vbmUsIE5vbmUgLT4gSW5mby5jcmVhdGUgXCJpZFwiIGlkIFslc2V4cF9vZjogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudF1cbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgbmFtZVxuICAgIDsgaGVyZVxuICAgIDsgZm9yd2FyZGluZyA9XG4gICAgICAgIChtYXRjaCBwYXJlbnQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IFJlcG9ydF91bmNhdWdodF9leG5cbiAgICAgICAgIHwgU29tZSBwYXJlbnQgLT4gUGFyZW50IHBhcmVudClcbiAgICA7IGlkXG4gICAgOyBuZXh0X2Vycm9yID0geyBjZWxsID0gRW1wdHkgfVxuICAgIDsgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgPSBCYWcuY3JlYXRlICgpXG4gICAgOyB0YWlsc19mb3JfYWxsX2Vycm9ycyA9IFtdXG4gICAgOyBoYXNfc2Vlbl9lcnJvciA9IGZhbHNlXG4gICAgfVxuICBpblxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImNyZWF0ZWQgbW9uaXRvclwiIHQgWyVzZXhwX29mOiB0XTtcbiAgdFxuOztcblxubGV0IG1haW4gPSBjcmVhdGVfd2l0aF9wYXJlbnQgfm5hbWU6XCJtYWluXCIgTm9uZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5cbnR5cGUgdCA9IFR5cGVzLkV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgOyBwcmlvcml0eSA6IFByaW9yaXR5LnRcbiAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBtYWluID1cbiAgeyBtb25pdG9yID0gTW9uaXRvci5tYWluXG4gIDsgcHJpb3JpdHkgPSBQcmlvcml0eS5ub3JtYWxcbiAgOyBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuZW1wdHlcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IFtdXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfbGlrZSA/bW9uaXRvciA/cHJpb3JpdHkgP2xvY2FsX3N0b3JhZ2UgdCA9XG4gIGxldCBtb25pdG9yID0gT3B0aW9uLnZhbHVlIG1vbml0b3IgfmRlZmF1bHQ6dC5tb25pdG9yIGluXG4gIHsgbW9uaXRvclxuICA7IHByaW9yaXR5ID0gT3B0aW9uLnZhbHVlIHByaW9yaXR5IH5kZWZhdWx0OnQucHJpb3JpdHlcbiAgOyBsb2NhbF9zdG9yYWdlID0gT3B0aW9uLnZhbHVlIGxvY2FsX3N0b3JhZ2UgfmRlZmF1bHQ6dC5sb2NhbF9zdG9yYWdlXG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSB0LmJhY2t0cmFjZV9oaXN0b3J5XG4gIH1cbjs7XG5cbmxldCBmaW5kX2xvY2FsIHQga2V5ID0gVW5pdl9tYXAuZmluZCB0LmxvY2FsX3N0b3JhZ2Uga2V5XG5cbmxldCB3aXRoX2xvY2FsIHQga2V5IGRhdGEgPVxuICB7IHQgd2l0aCBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuY2hhbmdlIHQubG9jYWxfc3RvcmFnZSBrZXkgfmY6KGZ1biBfIC0+IGRhdGEpIH1cbjs7XG5cbmxldCByZWNvcmRfYmFja3RyYWNlIHQgPVxuICB7IHQgd2l0aCBiYWNrdHJhY2VfaGlzdG9yeSA9IEJhY2t0cmFjZS5nZXQgKCkgOjogdC5iYWNrdHJhY2VfaGlzdG9yeSB9XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLkV4dGVybmFsX2pvYlxuXG5sZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCI8am9iPlwiXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gUG9vbFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5cbnR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgKE9iai50W0BzZXhwLm9wYXF1ZV0pKSBTbG90cy50M1xuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID0gc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG5sZXQgY3JlYXRlICgpID0gY3JlYXRlIFNsb3RzLnQzIH5jYXBhY2l0eToxIH5kdW1teTooZHVtbXlfZSwgZHVtbXlfZiwgZHVtbXlfYSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBKb2JfcG9vbC5zbG90cyBQb29sLlBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRXZlbnQgPSBUeXBlcy5FdmVudFxubW9kdWxlIEpvYiA9IFR5cGVzLkpvYlxuaW5jbHVkZSBUeXBlcy5Kb2Jfb3JfZXZlbnRcblxuKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dCB0b1xuICAgW09iai5tYWdpY11zLiAqKVxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG9wZW4gVHlwZXNcbiAgb3BlbiBFdmVudFxuXG4gIHR5cGUgX3QgPSB0ID1cbiAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVuc3VyZV9wcml2YXRlX2ludCAoTSA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBfdCA9IE0udFxuICBlbmRcblxuICBpbmNsdWRlIEVuc3VyZV9wcml2YXRlX2ludCAoSm9iKVxuZW5kXG5cbmxldCBvZl9ldmVudCBldmVudCA6IHQgPSBPYmoubWFnaWMgKGV2ZW50IDogRXZlbnQudClcbmxldCBvZl9qb2Igam9iIDogdCA9IE9iai5tYWdpYyAoam9iIDogSm9iLnQpXG5sZXQgaXNfZXZlbnQgKHQgOiB0KSA9IE9iai5pc19ibG9jayAoT2JqLnJlcHIgdClcbmxldCBpc19qb2IgKHQgOiB0KSA9IE9iai5pc19pbnQgKE9iai5yZXByIHQpXG5cbm1vZHVsZSBNYXRjaCA9IHN0cnVjdFxuICB0eXBlIF8ga2luZCA9XG4gICAgfCBFdmVudCA6IEV2ZW50LnQga2luZFxuICAgIHwgSm9iIDogSm9iLnQga2luZFxuXG4gIHR5cGUgcGFja2VkID0gSyA6IF8ga2luZCAtPiBwYWNrZWQgW0BAdW5ib3hlZF1cblxuICBsZXQga2luZCB0ID0gaWYgaXNfZXZlbnQgdCB0aGVuIEsgRXZlbnQgZWxzZSBLIEpvYlxuICBsZXQgcHJvamVjdCAodHlwZSBhKSAoXyA6IGEga2luZCkgam9iX29yX2V2ZW50ID0gKE9iai5tYWdpYyA6IHQgLT4gYSkgam9iX29yX2V2ZW50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5TY2hlZHVsZXJcblxubGV0IGV2ZW50cyB0ID0gdC50aW1lX3NvdXJjZS5ldmVudHNcblxubGV0IHNldF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgKCogQXZvaWQgYSBjYW1sX21vZGlmeSBpbiBtb3N0IGNhc2VzLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0KVxuICB0aGVuIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCA8LSBleGVjdXRpb25fY29udGV4dFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjBcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxubGV0IHNsb3RzX3Blcl9lbHQgPSAzXG5cbm1vZHVsZSBBID0gVW5pZm9ybV9hcnJheVxuXG4oKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgW0ZsYXRfcXVldWVdLCBkb25lIGZvciByZWFzb25zIG9mIHNwZWVkLiAqKVxudHlwZSB0ID0gVHlwZXMuSm9iX3F1ZXVlLnQgPVxuICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICA7ICgqIFtqb2JzXSBpcyBhbiBhcnJheSBvZiBsZW5ndGggW2NhcGFjaXR5IHQgKiBzbG90c19wZXJfZWx0XSwgd2hlcmUgZWFjaCBlbHQgaGFzIHRoZVxuICAgICAgIHRocmVlIGNvbXBvbmVudHMgb2YgYSBqb2IgKFtleGVjdXRpb25fY29udGV4dF0sIFtmXSwgW2FdKSBpbiBjb25zZWN1dGl2ZSBzcG90cyBpblxuICAgICAgIFtqb2JzXS4gIFtlbnF1ZXVlXSBkb3VibGVzIHRoZSBsZW5ndGggb2YgW2pvYnNdIGlmIFtqb2JzXSBpcyBmdWxsLiAgW2pvYnNdIG5ldmVyXG4gICAgICAgc2hyaW5rcy4gIFtqb2JzXSBpcyBzb21ld2hhdCBsaWtlIGEgW0NvcmUuUG9vbF0gc3BlY2lhbGl6ZWQgdG8gMy10dXBsZXM7IHdlXG4gICAgICAgZG9uJ3QgdXNlIFtQb29sXSBiZWNhdXNlIHRoYXQgaW1wbGVtZW50cyBhIHNldCwgd2hlcmUgW2pvYnNdIGlzIGEgcXVldWUuICopXG4gICAgbXV0YWJsZSBqb2JzIDogKE9iai50IEEudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFttYXNrXSBpcyBbY2FwYWNpdHkgdCAtIDFdLCBhbmQgaXMgdXNlZCBmb3IgcXVpY2tseSBjb21wdXRpbmcgW2kgbW9kIChjYXBhY2l0eVxuICAgICAgIHQpXSAqKVxuICAgIG11dGFibGUgbWFzayA6IGludFxuICA7ICgqIFtmcm9udF0gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBqb2IgaW4gdGhlIHF1ZXVlLiAgVGhlIGFycmF5IGluZGV4IG9mIHRoYXQgam9iJ3NcbiAgICAgICBleGVjdXRpb24gY29udGV4dCBpcyBbZnJvbnQgKiBzbG90c19wZXJfZWx0XS4gKilcbiAgICBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgb2Zmc2V0IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKiBzbG90c19wZXJfZWx0XG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bnVtX2pvYnNfcnVuOihjaGVjayAoZnVuIG51bV9qb2JzX3J1biAtPiBhc3NlcnQgKG51bV9qb2JzX3J1biA+PSAwKSkpXG4gICAgICB+am9ic19sZWZ0X3RoaXNfY3ljbGU6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYnNfbGVmdF90aGlzX2N5Y2xlIC0+IGFzc2VydCAoam9ic19sZWZ0X3RoaXNfY3ljbGUgPj0gMCkpKVxuICAgICAgfmpvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYnMgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudFxuICAgICAgICAgICAgICAgKE9iai5vYmogKEEuZ2V0IGpvYnMgKG9mZnNldCB0IGkpKSA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1hc2s6XG4gICAgICAgIChjaGVjayAoZnVuIG1hc2sgLT5cbiAgICAgICAgICAgbGV0IGNhcGFjaXR5ID0gbWFzayArIDEgaW5cbiAgICAgICAgICAgYXNzZXJ0IChJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0ID0gQS5sZW5ndGggdC5qb2JzKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPCBjYXBhY2l0eSB0KSkpXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5IHQpKSkpXG47O1xuXG5sZXQgY3JlYXRlX2FycmF5IH5jYXBhY2l0eSA9IEEuY3JlYXRlX29ial9hcnJheSB+bGVuOihjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgY2FwYWNpdHkgPSAxIGluXG4gIHsgbnVtX2pvYnNfcnVuID0gMFxuICA7IGpvYnNfbGVmdF90aGlzX2N5Y2xlID0gMFxuICA7IGpvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5XG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGZyb250ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgfVxuOztcblxubGV0IGNsZWFyIHQgPVxuICB0LmZyb250IDwtIDA7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gMFxuOztcblxubGV0IGdyb3cgdCA9XG4gIGxldCBvbGRfY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHkgKiAyIGluXG4gIGxldCBvbGRfam9icyA9IHQuam9icyBpblxuICBsZXQgb2xkX2Zyb250ID0gdC5mcm9udCBpblxuICBsZXQgbGVuMSA9IEludC5taW4gdC5sZW5ndGggKG9sZF9jYXBhY2l0eSAtIG9sZF9mcm9udCkgKiBzbG90c19wZXJfZWx0IGluXG4gIGxldCBsZW4yID0gKHQubGVuZ3RoICogc2xvdHNfcGVyX2VsdCkgLSBsZW4xIGluXG4gIGxldCBuZXdfam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHk6bmV3X2NhcGFjaXR5IGluXG4gIEEuYmxpdFxuICAgIH5sZW46bGVuMVxuICAgIH5zcmM6b2xkX2pvYnNcbiAgICB+c3JjX3Bvczoob2xkX2Zyb250ICogc2xvdHNfcGVyX2VsdClcbiAgICB+ZHN0Om5ld19qb2JzXG4gICAgfmRzdF9wb3M6MDtcbiAgQS5ibGl0IH5sZW46bGVuMiB+c3JjOm9sZF9qb2JzIH5zcmNfcG9zOjAgfmRzdDpuZXdfam9icyB+ZHN0X3BvczpsZW4xO1xuICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgdC5qb2JzIDwtIG5ld19qb2JzO1xuICB0LmZyb250IDwtIDBcbjs7XG5cbmxldCBzZXQgKHR5cGUgYSkgdCBpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBvZmZzZXQgPSBvZmZzZXQgdCBpIGluXG4gIEEudW5zYWZlX3NldCB0LmpvYnMgb2Zmc2V0IChPYmoucmVwciAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDEpIChPYmoucmVwciAoZiA6IGEgLT4gdW5pdCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gZ3JvdyB0O1xuICBzZXQgdCB0Lmxlbmd0aCBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiSm9icy5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgZ290IG5lZ2F0aXZlIG51bWJlclwiIChuIDogaW50KSAodCA6IHQpXTtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSBuXG47O1xuXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gdC5sZW5ndGggPiAwICYmIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPiAwXG5cbmxldCBydW5fam9iIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0Lm51bV9qb2JzX3J1biA8LSB0Lm51bV9qb2JzX3J1biArIDE7XG4gIFNjaGVkdWxlci5zZXRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0O1xuICBmIGFcbjs7XG5cbmxldCBydW5fZXh0ZXJuYWxfam9icyB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgPVxuICBsZXQgZXh0ZXJuYWxfam9icyA9IHNjaGVkdWxlci5leHRlcm5hbF9qb2JzIGluXG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCBleHRlcm5hbF9qb2JzID4gMCBkb1xuICAgIGxldCAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSkgPVxuICAgICAgVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gZXh0ZXJuYWxfam9ic1xuICAgIGluXG4gICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZG9uZVxuOztcblxubGV0IHJ1bl9qb2JzICh0eXBlIGEpIHQgc2NoZWR1bGVyID1cbiAgKCogV2UgZG8gdGhlIFt0cnktd2l0aF0gb3V0c2lkZSBvZiB0aGUgW3doaWxlXSBiZWNhdXNlIGl0IGlzIGNoZWFwZXIgdGhhbiBkb2luZyBhXG4gICAgIFt0cnktd2l0aF0gZm9yIGVhY2ggam9iLiAqKVxuICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGJlZm9yZSBlbnRlcmluZyB0aGUgbG9vcCwgc2luY2UgaXQgbWlnaHQgZW5xdWV1ZSBhIGpvYixcbiAgICAgY2hhbmdpbmcgW3QubGVuZ3RoXS4gKilcbiAgdHJ5XG4gICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXI7XG4gICAgd2hpbGUgY2FuX3J1bl9hX2pvYiB0IGRvXG4gICAgICBsZXQgdGhpc19qb2IgPSBvZmZzZXQgdCAwIGluXG4gICAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50ID1cbiAgICAgICAgT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyB0aGlzX2pvYilcbiAgICAgIGluXG4gICAgICBsZXQgZiA6IGEgLT4gdW5pdCA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMSkpIGluXG4gICAgICBsZXQgYSA6IGEgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDIpKSBpblxuICAgICAgKCogV2UgY2xlYXIgb3V0IHRoZSBqb2IgcmlnaHQgbm93IHNvIHRoYXQgaXQgaXNuJ3QgbGl2ZSBhdCB0aGUgbmV4dCBtaW5vclxuICAgICAgICAgY29sbGVjdGlvbi4gIFdlIHRyaWVkIG5vdCBkb2luZyB0aGlzIGFuZCBzYXcgc2lnbmlmaWNhbnQgKDE1JSBvciBzbykgcGVyZm9ybWFuY2VcbiAgICAgICAgIGhpdHMgZHVlIHRvIHNwdXJpb3VzIHByb21vdGlvbi4gKilcbiAgICAgIHNldCB0IDAgZHVtbXlfZSBkdW1teV9mIGR1bW15X2E7XG4gICAgICB0LmZyb250IDwtICh0LmZyb250ICsgMSkgbGFuZCB0Lm1hc2s7XG4gICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgLSAxO1xuICAgICAgKCogSXQgaXMgT0sgaWYgW3J1bl9qb2JdIG9yIFtydW5fZXh0ZXJuYWxfam9ic10gcmFpc2VzLCBpbiB3aGljaCBjYXNlIHRoZSBleG4gaXNcbiAgICAgICAgIGhhbmRsZWQgYnkgdGhlIG91dGVyIHRyeS13aXRoLiAgVGhlIG9ubHkgc2lkZSBlZmZlY3RzIHdlIGhhdmUgZG9uZSBhcmUgdG8gdGFrZVxuICAgICAgICAgdGhlIGpvYiBvdXQgb2YgdGhlIHF1ZXVlIGFuZCBkZWNyZW1lbnQgW2pvYnNfbGVmdF90aGlzX2N5Y2xlXS4gIFtydW5fam9iXSBvclxuICAgICAgICAgW3J1bl9leHRlcm5hbF9qb2JzXSBtYXkgc2lkZSBlZmZlY3QgW3RdLCBlaXRoZXIgYnkgZW5xdWV1ZWluZyBqb2JzLCBvciBieVxuICAgICAgICAgY2xlYXJpbmcgW3RdLiAqKVxuICAgICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGF0IGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBbd2hpbGVdIGxvb3AsIGZvciBmYWlybmVzcy4gKilcbiAgICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyXG4gICAgZG9uZTtcbiAgICBPayAoKVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKCogV2UgY2FsbCBbRXhuLmJhY2t0cmFjZV0gaW1tZWRpYXRlbHkgYWZ0ZXIgY2F0Y2hpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwgdG9cbiAgICAgICBlbnN1cmUgdGhlcmUgaXMgbm8gaW50ZXJ2ZW5pbmcgY29kZSB0aGF0IGludGVyZmVyZXMgd2l0aCB0aGUgZ2xvYmFsIGJhY2t0cmFjZVxuICAgICAgIHN0YXRlLiAqKVxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgRXJyb3IgKGV4biwgYmFja3RyYWNlKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBleHRlcm5hbCBmb3JtYXQgOiBmbG9hdCAtPiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjb3JlX3RpbWVfbnNfZm9ybWF0XCJcblxuICAoKiBXZSB1c2UgYSBtb3JlIHBsZWFzYW50IGZvcm1hdCB0aGFuIFtDb3JlLlRpbWVfbnMuc2V4cF9vZl90XSxcbiAgICAgd2hpY2ggaGFzIHRvIGJlIG1lc3NpZXIgZm9yIHJvdW5kIHRyaXBwYWJpbGl0eS4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBbJXNleHBcbiAgICAgIChmb3JtYXQgKHQgfD4gdG9fc3Bhbl9zaW5jZV9lcG9jaCB8PiBTcGFuLnRvX3NlYykgXCIlWS0lbS0lZFQlSDolTTolUyV6XCIgOiBzdHJpbmcpXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWluZ193aGVlbC5BbGFybVxuXG4gIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICgqIDEvOHRoIG9mIGEgbWlsbGlzZWNvbmQgYWxhcm1fcHJlY2lzaW9uIHNlZW1zIHN1ZmZpY2llbnQgdG8gYXZvaWQgaGF2aW5nIG1hbnkgYWxhcm1zXG4gICAgIGluIHRoZSBzYW1lIGludGVydmFsLCB3aGljaCBhdm9pZHMgcXVhZHJhdGljIGluc2VydGlvbiBzb3J0IHdoZW4gZmlyaW5nIGFsYXJtcy4gIEFuZFxuICAgICB0aGUgbGV2ZWwgYml0cyBnaXZlIHVzIGxldmVscyBvZiA+MXMsID4xbSwgPjFoLCA+MWQuICBTZWUgdGVzdCBpblxuICAgICBbLi4vdGVzdC90ZXN0X3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sXS4gKilcbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKVxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTM7IDY7IDY7IDUgXSlcbiAgICAoKVxuOztcblxudHlwZSBjYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZFxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuU3RhdHVzLnQgPVxuICAgICAgICB8IEZpcmVkICgqIGluIFtmaXJlZF9ldmVudHNdLCByZWFkeSB0byBydW4gKilcbiAgICAgICAgfCBIYXBwZW5pbmcgKCogY3VycmVudGx5IHJ1bm5pbmcgdGhlIGNhbGxiYWNrICopXG4gICAgICAgIHwgU2NoZWR1bGVkICgqIGluIHRoZSB0aW1pbmcgd2hlZWwgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCAoKiBub3QgaW4gdGltaW5nIHdoZWVsIG9yIFtmaXJlZF9ldmVudHNdICopXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgICAgbGV0IHRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fID1cbiAgICAgICAgbWF0Y2ggZnJvbSwgdG9fIHdpdGhcbiAgICAgICAgfCBGaXJlZCwgSGFwcGVuaW5nICgqIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAqKVxuICAgICAgICB8IEZpcmVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgICgqIFtyZXNjaGVkdWxlXypdIGdvZXMgdGhyb3VnaCBhbiBpbnRlcm1lZGlhdGUgW0ZpcmVkLCBVbnNjaGVkdWxlZF0gc3RhdGUsXG4gICAgICAgICAgIHNvIHdlIG5ldmVyIHRyYW5zaXRpb24gZnJvbSBbRmlyZWRdIGRpcmVjdGx5IHRvIFtTY2hlZHVsZWRdLiAqKVxuICAgICAgICB8IEhhcHBlbmluZywgU2NoZWR1bGVkICgqIGZvciByZXBlYXRpbmcgZXZlbnRzICopXG4gICAgICAgIHwgSGFwcGVuaW5nLCBVbnNjaGVkdWxlZCAoKiBldmVudCBjYWxsYmFjayBmaW5pc2hlZCAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgRmlyZWQgKCogbW92ZWQgZnJvbSB0aW1pbmcgd2hlZWwgdG8gW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgRmlyZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBwYXN0ICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIFNjaGVkdWxlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIGZ1dHVyZSAqKSAtPiB0cnVlXG4gICAgICAgIHwgKEZpcmVkIHwgSGFwcGVuaW5nIHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQpLCBfIC0+IGZhbHNlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSBldmVudCA9IFR5cGVzLkV2ZW50LnRcblxuICAgIGxldCBzZXhwX29mX2V2ZW50XG4gICAgICAgICAgKHsgYWxhcm0gPSBfXG4gICAgICAgICAgIDsgYXRcbiAgICAgICAgICAgOyBjYWxsYmFjayA9IF9cbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IF9cbiAgICAgICAgICAgOyBpbnRlcnZhbFxuICAgICAgICAgICA7IG5leHRfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgcHJldl9maXJlZCA9IF9cbiAgICAgICAgICAgOyBzdGF0dXNcbiAgICAgICAgICAgfSA6XG4gICAgICAgICAgICAgZXZlbnQpXG4gICAgICA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICA7IGF0IDogVGltZV9ucy50XG4gICAgICAgIDsgaW50ZXJ2YWwgOiAoVGltZV9ucy5TcGFuLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgIH1dXG4gICAgOztcblxuICAgIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICAgICgqIFRoaXMgcmVkZWZpbml0aW9uIG9mIFtFdmVudF0gaXMgaGVyZSBzbyB0aGUgdHlwZSBjaGVja3MgYXJlIHJpZ2h0IG5leHRcbiAgICAgICAgIHRvIFtPYmoubWFnaWNdcy4gKilcbiAgICAgIG1vZHVsZSBFdmVudF9pc19ibG9jayA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBUeXBlc1xuICAgICAgICBvcGVuIEV2ZW50XG5cbiAgICAgICAgdHlwZSBfdCA9IHQgPVxuICAgICAgICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgICAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50Lk9wdGlvbi50XG5cbiAgICAgICgqIFVzaW5nIGFuIGltbWVkaWF0ZSByYXRoZXIgdGhhbiBhIHN0YXRpY2FsbHktYWxsb2NhdGVkIHJlY29yZCBoZXJlIHNlZW1zIHRvXG4gICAgICAgICBpbXByb3ZlIHBlcmZvcm1hbmNlIG5vdGljZWFibHkgKFsuLi9iZW5jaC9iaW4vYmVuY2hfdGltZV9zb3VyY2UuZXhlXSBiZW5jaG1hcmtcbiAgICAgICAgIGlzIGZhc3RlciBieSB+MTBucyBwZXIgYWxhcm0pLCBwcmVzdW1hYmx5IGJlY2F1c2UgaXQgYXZvaWRzIHRoZSBleHBlbnNpdmVcbiAgICAgICAgIHBhcnRzIG9mIGNhbWxfbW9kaWZ5LiAqKVxuICAgICAgbGV0IG5vbmUgPSAoT2JqLm1hZ2ljIE5vbmUgOiB0KSAoKiBhbiBhcmJpdHJhcnkgaW1tZWRpYXRlICopXG5cbiAgICAgIGxldCBzb21lID0gKE9iai5tYWdpYyA6IFR5cGVzLkV2ZW50LnQgLT4gdClcbiAgICAgIGxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IGZpcnN0X3NvbWUgdDEgdDIgPSBpZiBpc19zb21lIHQxIHRoZW4gdDEgZWxzZSB0MlxuXG4gICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gKE9iai5tYWdpYyA6IHQgLT4gVHlwZXMuRXZlbnQudClcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgb3BlbiBPcHRpb25hbF9zeW50YXhcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbJXNleHAgKCldXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogZXZlbnQpXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50Lk9wdGlvbi52YWx1ZV9leG4gTm9uZV1cIl1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFNvbWUgZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gc29tZSBldmVudFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LnQgPVxuICAgICAgeyAoKiBbYWxhcm1dIGlzIG5vbi1udWxsIGlmZiB0aGUgZXZlbnQgaXMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW2ludGVydmFsXSBpcyB0aGUgcGVyaW9kIGZvciB0aGUgcGVyaW9kaWMgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICA7ICgqIFtuZXh0X2ZpcmVkXSBhbmQgW3ByZXZfZmlyZWRdIGNyZWF0ZSBhIGRvdWJseS1saW5rZWQgKG5vbi1jaXJjdWxhcikgbGlzdCBvZlxuICAgICAgICAgICBmaXJlZCBldmVudHMsIGxpbmtlZCB2aWEgdGhlc2UgZmllbGRzLiBBbiBldmVudCBpcyBhZGRlZCB0byB0aGUgbGlzdCB3aGVuXG4gICAgICAgICAgIGl0IGZpcmVzLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhZGRlZCB3aXRoIGEgdGltZSBpbiB0aGUgcGFzdCwgb3JcbiAgICAgICAgICAgYmVjYXVzZSB0aW1lIGFkdmFuY2VzLiBbYWR2YW5jZV9ieV9hbGFybXNdIGl0ZXJhdGVzIG92ZXIgdGhlIGV2ZW50c1xuICAgICAgICAgICBpbiBbbmV4dF9maXJlZF0gYW5kIHJ1bnMgdGhlbSwgZW1wdHlpbmcgdGhlIGxpc3QuIFtub25lXSBpcyB1c2VkIHRvXG4gICAgICAgICAgIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBzZXhwX29mX3QgPSBbJXNleHBfb2Y6IGV2ZW50XVxuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgICB+YWxhcm06XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAgICAgKEFsYXJtLmlzX251bGwgYWxhcm0pXG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGaXJlZCB8IEhhcHBlbmluZyB8IFVuc2NoZWR1bGVkIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfCBTY2hlZHVsZWQgLT4gZmFsc2UpKSlcbiAgICAgICAgICB+YXQ6aWdub3JlXG4gICAgICAgICAgfmNhbGxiYWNrOmlnbm9yZVxuICAgICAgICAgIH5leGVjdXRpb25fY29udGV4dDppZ25vcmVcbiAgICAgICAgICB+aW50ZXJ2YWw6aWdub3JlXG4gICAgICAgICAgfm5leHRfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobmV4dF9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW25leHRfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBlbmQgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBuZXh0X2ZpcmVkLnByZXZfZmlyZWQpKSlcbiAgICAgICAgICB+cHJldl9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChwcmV2X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbcHJldl9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIHByZXZfZmlyZWQubmV4dF9maXJlZCkpKVxuICAgICAgICAgIH5zdGF0dXM6aWdub3JlKVxuICAgIDs7XG5cbiAgICBsZXQgc2V0X3N0YXR1cyB0IHRvXyA9XG4gICAgICBsZXQgZnJvbSA9IHQuc3RhdHVzIGluXG4gICAgICBpZiBub3QgKFN0YXR1cy50cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXylcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgWyVoZXJlXVxuICAgICAgICAgICAgICBcImJ1ZyAtLSBzZXRfc3RhdHVzIHRyYW5zaXRpb24gbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgICAoZnJvbSA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICAodG9fIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgIH5ldmVudDoodCA6IHQpXTtcbiAgICAgIHQuc3RhdHVzIDwtIHRvX1xuICAgIDs7XG5cbiAgICBsZXQgc2V0X3N0YXR1c19pZiB+aXMgdCB0b18gPSBpZiBTdGF0dXMuZXF1YWwgaXMgdC5zdGF0dXMgdGhlbiBzZXRfc3RhdHVzIHQgdG9fXG4gICAgbGV0IHNjaGVkdWxlZF9hdCA9IGF0XG4gIGVuZFxuXG4gIG1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEpvYl9vcl9ldmVudFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgbGV0IChLIGspID0ga2luZCB0IGluXG4gICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgdCB3aXRoXG4gICAgICB8IEV2ZW50LCBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogRXZlbnQudCldXG4gICAgICB8IEpvYiwgXyAtPlxuICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgWyVtZXNzYWdlIFwiPEpvYi50PlwiXVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgLSdydyB0ID0gJ3J3IFR5cGVzLlRpbWVfc291cmNlLnQxID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgKCogW2FkdmFuY2VfZXJyb3JzXSBhY2N1bXVsYXRlcyBlcnJvcnMgcmFpc2VkIGJ5IGFsYXJtcyBydW4gYnlcbiAgICAgICAgIFthZHZhbmNlX2J5X2FsYXJtc10uICopXG4gICAgICBtdXRhYmxlIGFkdmFuY2VfZXJyb3JzIDogRXJyb3IudCBsaXN0XG4gICAgOyAoKiBbYW1fYWR2YW5jaW5nXSBpcyB0cnVlIG9ubHkgZHVyaW5nIFthZHZhbmNlX2J5X2FsYXJtc10sIGFuZCBpcyB1c2VkIHRvIGNhdXNlXG4gICAgICAgICBjYWxsYmFja3MgdG8gcmFpc2UgaWYgdGhleSBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10uICopXG4gICAgICBtdXRhYmxlIGFtX2FkdmFuY2luZyA6IGJvb2xcbiAgICA7IGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC50XG4gICAgOyAoKiBbZmlyZWRfZXZlbnRzXSBpcyB0aGUgZnJvbnQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMsXG4gICAgICAgICB3aGljaCBpcyBzdG9yZWQgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBbRXZlbnQuYXRdLiAqKVxuICAgICAgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgKCogW21vc3RfcmVjZW50bHlfZmlyZWRdIGlzIHRoZSBldmVudCB0aGF0IHdhcyBtb3N0IHJlY2VudGx5IGluc2VydGVkIGludG9cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiBJdCBpcyB1c2VkIGFzIGFuIG9wdGltaXphdGlvbiB0byBhbGxvdyBpbnNlcnRpb24gb2ZcbiAgICAgICAgIHN1YnNlcXVlbnQgZXZlbnRzIHRvIHN0YXJ0IGxhdGVyIGluIHRoZSBsaXN0IHJhdGhlciB0aGFuIGF0IHRoZSBiZWdpbm5pbmcuXG4gICAgICAgICBJdCBzcGVjaWZpY2FsbHkgYXZvaWRzIHF1YWRyYXRpYyBiZWhhdmlvciB3aGVuIGluc2VydGluZyBtdWx0aXBsZSBldmVudHNcbiAgICAgICAgIHRoYXQgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRpbWUgLS0gdGhlIHRpbWUgc291cmNlIGZpcmVzIHN1Y2ggZXZlbnRzIGluXG4gICAgICAgICB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIGluIHRoYXQgc2FtZSBvcmRlciBpblxuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uICopXG4gICAgICBtdXRhYmxlIG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udFxuICAgIDsgKCogV2Ugc3RvcmUgW2hhbmRsZV9maXJlZF0gaW4gW3RdIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgZXZlcnkgdGltZSB3ZSBjYWxsXG4gICAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgICBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBsZXQgbm93ID0gVGltaW5nX3doZWVsLm5vdyBldmVudHMgaW5cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCJ3YWxsX2Nsb2NrXCIgKG5vdyA6IFRpbWVfbnMudCldXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWxsX2V2ZW50cyA9IHJlZiBbXSBpblxuICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgYWxsX2V2ZW50cyA6PSAoQWxhcm0uYXQgZXZlbnRzIGFsYXJtLCBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pIDo6ICFhbGxfZXZlbnRzKTtcbiAgICAgIGxldCBldmVudHMgPVxuICAgICAgICBMaXN0LnNvcnQgIWFsbF9ldmVudHMgfmNvbXBhcmU6KGZ1biAoYXQxLCBfKSAoYXQyLCBfKSAtPiBUaW1lX25zLmNvbXBhcmUgYXQxIGF0MilcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICBpblxuICAgICAgWyVtZXNzYWdlIFwiXCIgKG5vdyA6IFRpbWVfbnMudCkgKGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IGxpc3QpXSlcbiAgOztcblxuICBsZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xuXG4gIGxldCBpc19pbl9maXJlZF9ldmVudHMgPVxuICAgIGxldCByZWMgc2VhcmNoIGN1cnJlbnQgfnRhcmdldF9ldmVudCA9XG4gICAgICBtYXRjaCVvcHRpb25hbCAoY3VycmVudCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBjdXJyZW50IC0+XG4gICAgICAgIHBoeXNfZXF1YWwgY3VycmVudCB0YXJnZXRfZXZlbnQgfHwgc2VhcmNoIGN1cnJlbnQubmV4dF9maXJlZCB+dGFyZ2V0X2V2ZW50XG4gICAgaW5cbiAgICBmdW4gdCB0YXJnZXRfZXZlbnQgLT4gc2VhcmNoIHQuZmlyZWRfZXZlbnRzIH50YXJnZXRfZXZlbnRcbiAgOztcblxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyAodHlwZSBydykgfmpvYjooam9iX2ludmFyaWFudCA6IEpvYi50IC0+IHVuaXQpICh0IDogcncgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5pZDppZ25vcmVcbiAgICAgICAgfmFkdmFuY2VfZXJyb3JzOmlnbm9yZVxuICAgICAgICB+YW1fYWR2YW5jaW5nOmlnbm9yZVxuICAgICAgICB+ZXZlbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGV2ZW50cyAtPlxuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pbnZhcmlhbnQgaWdub3JlIGV2ZW50cztcbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSBpblxuICAgICAgICAgICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICAgICAgICAgICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgICAgICAgICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICAgICAgICAgICAgICB8IEpvYiwgam9iIC0+IGpvYl9pbnZhcmlhbnQgam9iXG4gICAgICAgICAgICAgICB8IEV2ZW50LCBldmVudCAtPlxuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgYWxhcm0gZXZlbnQuYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIGV2ZW50LmF0IH5leHBlY3Q6KEFsYXJtLmF0IGV2ZW50cyBhbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEV2ZW50LlN0YXR1cy50XSBldmVudC5zdGF0dXMgfmV4cGVjdDpTY2hlZHVsZWQ7XG4gICAgICAgICAgICAgICAgIEV2ZW50LmludmFyaWFudCBldmVudCkpKVxuICAgICAgICB+ZmlyZWRfZXZlbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgLT5cbiAgICAgICAgICAgICBsZXQgcmVjIGNoZWNrX2V2ZW50IChjdXJyZW50IDogRXZlbnQudCkgPVxuICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0ICh0aW1pbmdfd2hlZWxfbm93IHQpKTtcbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsLkV2ZW50Lk9wdGlvbiBjdXJyZW50Lm5leHRfZmlyZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgbmV4dC5hdCk7XG4gICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50IG5leHRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsLkV2ZW50Lk9wdGlvbiBmaXJlZF9ldmVudHMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBldmVudCAtPiBjaGVja19ldmVudCBldmVudCkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5pc193YWxsX2Nsb2NrOmlnbm9yZVxuICAgICAgICB+bW9zdF9yZWNlbnRseV9maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBtb3N0X3JlY2VudGx5X2ZpcmVkIC0+XG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBldmVudCAtPiBhc3NlcnQgKGlzX2luX2ZpcmVkX2V2ZW50cyB0IGV2ZW50KSkpXG4gICAgICAgIH5zY2hlZHVsZXI6aWdub3JlKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9IGludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIF8gLT4gKCkpIHRcbmVuZFxuXG5vcGVuIFQxXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG5sZXQgaWQgdCA9IHQuaWRcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBsZW5ndGggdCA9IFRpbWluZ193aGVlbC5sZW5ndGggdC5ldmVudHNcbmxldCBtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPSBUaW1pbmdfd2hlZWwubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0LmV2ZW50c1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5cbigqIFtmaXJlIHQgZXZlbnRdIHNldHMgW2V2ZW50LnN0YXR1cyA9IEZpcmVkXSBhbmQgaW5zZXJ0cyBbZXZlbnRdIGludG9cbiAgIFt0LmZpcmVkX2V2ZW50c10gaW4gc29ydGVkIHRpbWUgb3JkZXIuICopXG5sZXQgZmlyZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBGaXJlZDtcbiAgZXZlbnQuYWxhcm0gPC0gQWxhcm0ubnVsbCAoKTtcbiAgbGV0ICgpID1cbiAgICAoKiBJZiBbZXZlbnRdIGJlbG9uZ3MgYWZ0ZXIgW3QubW9zdF9yZWNlbnRseV9maXJlZF0sIHRoZW4gd2Ugc3RhcnQgdGhlXG4gICAgICAgaW5zZXJ0aW9uIHRoZXJlIHJhdGhlciB0aGFuIGF0IHRoZSBmcm9udCBvZiBbdC5maXJlZF9ldmVudHNdLiBUaGlzIHdvcmtzXG4gICAgICAgbmljZWx5IGlmIHdlJ3JlIGdldHRpbmcgdGhlIGFsYXJtcyBpbiBub24tZGVjcmVhc2luZyB0aW1lIG9yZGVyLCB3aGljaCBpc1xuICAgICAgIGNsb3NlIHRvIHdoYXQgW1RpbWluZ193aGVlbF0gcHJvdmlkZXMgKGFsdGhvdWdoIFtUaW1pbmdfd2hlZWxdIGRvZXNuJ3RcbiAgICAgICBndWFyYW50ZWUgdGltZSBvcmRlcmluZyBmb3IgdGltZXMgaW4gdGhlIHNhbWUgaW50ZXJ2YWwpLiAqKVxuICAgIG1hdGNoJW9wdGlvbmFsICh0Lm1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgU29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkIHdoZW4gVGltZV9ucy4oIDw9ICkgbW9zdF9yZWNlbnRseV9maXJlZC5hdCBldmVudC5hdCAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBtb3N0X3JlY2VudGx5X2ZpcmVkLm5leHRfZmlyZWRcbiAgICB8IF8gLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIHQuZmlyZWRfZXZlbnRzXG4gIGluXG4gIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudDtcbiAgKCogV2UgdXNlIFtUaW1lX25zLiggPD0gKV0gcmF0aGVyIHRoYW4gWzxdIHNvIHRoYXQgW2V2ZW50XSBpcyBhZGRlZCBhZnRlciBvdGhlclxuICAgICBldmVudHMgYXQgdGhlIHNhbWUgdGltZS4gU2luY2UgW1RpbWluZ193aGVlbF0gZmlyZXMgYWxhcm1zIGluIGEgYnVja2V0IGluXG4gICAgIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQsIHVzaW5nIFs8PV0ga2VlcHMgZXZlbnRzIGF0IHRoZSBzYW1lXG4gICAgIHRpbWUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZC4gKilcbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG5leHQgLT5cbiAgICAgIGxldCBjb250aW51ZSA9IFRpbWVfbnMuKCA8PSApIG5leHQuYXQgZXZlbnQuYXQgaW5cbiAgICAgIGlmIGNvbnRpbnVlXG4gICAgICB0aGVuIChcbiAgICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBldmVudC5uZXh0X2ZpcmVkO1xuICAgICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG5leHQubmV4dF9maXJlZCk7XG4gICAgICBjb250aW51ZVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXh0IC0+IG5leHQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuICBpblxuICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbjs7XG5cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xuXG5sZXQgbmV4dF9hbGFybV9ydW5zX2F0IHQgPVxuICBpZiBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuICB0aGVuIFNvbWUgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgZWxzZSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xuOztcblxubGV0IG5vdyB0ID0gaWYgdC5pc193YWxsX2Nsb2NrIHRoZW4gVGltZV9ucy5ub3cgKCkgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbmxldCB0aW1pbmdfd2hlZWxfbm93ID0gdGltaW5nX3doZWVsX25vd1xuXG5sZXQgc2NoZWR1bGUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgU2NoZWR1bGVkO1xuICBldmVudC5hbGFybSA8LSBUaW1pbmdfd2hlZWwuYWRkIHQuZXZlbnRzIH5hdDpldmVudC5hdCAoZXZlbnQgfD4gSm9iX29yX2V2ZW50Lm9mX2V2ZW50KVxuOztcblxubGV0IHJlbW92ZV9mcm9tX2ZpcmVkIHQgKGV2ZW50IDogRXZlbnQudCkgfm5ld19zdGF0dXMgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsICh0Lm1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIGV2ZW50IG1vc3RfcmVjZW50bHlfZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5maXJzdF9zb21lIGV2ZW50Lm5leHRfZmlyZWQgZXZlbnQucHJldl9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gZXZlbnQubmV4dF9maXJlZFxuICAgIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBldmVudC5uZXh0X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXh0IC0+IG5leHQucHJldl9maXJlZCA8LSBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGV2ZW50Lm5leHRfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgbmV3X3N0YXR1c1xuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgRXZlbnRcblxuICBsZXQgY3JlYXRlX2ludGVybmFsIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgOyBhdFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICAgIDsgaW50ZXJ2YWxcbiAgICA7IG5leHRfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgcHJldl9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzdGF0dXMgPSBVbnNjaGVkdWxlZFxuICAgIH1cbiAgOztcblxuICBsZXQgYWRkIHQgZXZlbnQgPVxuICAgIGlmIFRpbWVfbnMuKCA8PSApIGV2ZW50LmF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgdGhlbiBmaXJlIHQgZXZlbnRcbiAgICBlbHNlIHNjaGVkdWxlIHQgZXZlbnRcbiAgOztcblxuICBsZXQgY3JlYXRlX2FuZF9hZGQgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgbGV0IGV2ZW50ID0gY3JlYXRlX2ludGVybmFsIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgaW5cbiAgICBhZGQgdCBldmVudDtcbiAgICBldmVudFxuICA7O1xuXG4gIGxldCBhdCB0IGF0IGNhbGxiYWNrID0gY3JlYXRlX2FuZF9hZGQgdCB+YXQgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IGFmdGVyIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKSB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcbiAgOztcblxuICBsZXQgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW4gPVxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBhbGFybV9wcmVjaXNpb24gdCBpblxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBzcGFuIGFsYXJtX3ByZWNpc2lvblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnRlcnZhbCBzcGFuIHNtYWxsZXIgdGhhbiBhbGFybSBwcmVjaXNpb25cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udClcbiAgICAgICAgICAgIChhbGFybV9wcmVjaXNpb24gOiBUaW1lX25zLlNwYW4udCldXG4gIDs7XG5cbiAgbGV0IGF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0Oihub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pIH5jYWxsYmFja1xuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBDdXJyZW50bHlfaGFwcGVuaW5nXG4gICAgICB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCAoZXZlbnQgOiB0KSA6IEFib3J0X3Jlc3VsdC50ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nIC0+XG4gICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBDdXJyZW50bHlfaGFwcGVuaW5nXG4gICAgICAgfCBTb21lIChfIDogVGltZV9ucy5TcGFuLnQpIC0+XG4gICAgICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgICAgT2spXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIE9rXG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgVW5zY2hlZHVsZWQ7XG4gICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgZXZlbnQuYWxhcm0gPC0gQWxhcm0ubnVsbCAoKTtcbiAgICAgIE9rXG4gICAgfCBVbnNjaGVkdWxlZCAtPiBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgZXZlbnQgPSBpZ25vcmUgKGFib3J0IHQgZXZlbnQgOiBBYm9ydF9yZXN1bHQudClcblxuICBsZXQgYWJvcnRfZXhuIHQgZXZlbnQgPVxuICAgIG1hdGNoIGFib3J0IHQgZXZlbnQgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IHJlYXNvbiAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5hYm9ydF9leG5dIGNhbm5vdCBhYm9ydCBldmVudFwiXG4gICAgICAgICAgICAocmVhc29uIDogQWJvcnRfcmVzdWx0LnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCBjYWxsYmFjayA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdDpUaW1lX25zLmVwb2NoIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IChldmVudCA6IHQpIGF0IH5pbnRlcnZhbCA9XG4gICAgKCogW0ZpcmVkXSBpcyBkaXNhbGxvd2VkIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBlbnRlcmluZyBpbnRvIGFuIGluZmluaXRlIGxvb3AuICBUaGVcbiAgICAgICB1c2VyIGNvdWxkIHNwZWNpZnkgW2F0XSBpbiB0aGUgcGFzdCB3aGljaCB3b3VsZCBjb25zdGFudGx5IGFkZCBbY2FsbGJhY2tdIHRvIHRoZVxuICAgICAgIGJhY2sgb2YgW3QubmV4dF9maXJlZF0gaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBbY2FsbGJhY2tdLiAqKVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCAoSGFwcGVuaW5nIHwgU2NoZWR1bGVkIHwgRmlyZWQpIGFzIHN0YXR1cyAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJXNleHAgXCJjYW5ub3Qgc2NoZWR1bGUgYW4gZXZlbnQgd2l0aCBzdGF0dXNcIiwgKHN0YXR1cyA6IEV2ZW50LlN0YXR1cy50KV1cbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIGludGVydmFsO1xuICAgICAgYWRkIHQgZXZlbnQ7XG4gICAgICBPayAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdCB0IGV2ZW50IGF0ID0gc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCBhdCB+aW50ZXJ2YWw6Tm9uZVxuICBsZXQgc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVydmFscyB0IGV2ZW50IHNwYW4gPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgKG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbilcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGV2ZW50IGF0IDogdW5pdCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgSGFwcGVuaW5nIC0+XG4gICAgICAoKiBIYXBwZW5pbmcgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBbZmlyZWRdLiAqKVxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGlmIFRpbWVfbnMuKCA+ICkgYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgIHRoZW4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgdC5ldmVudHMgZXZlbnQuYWxhcm0gfmF0XG4gICAgICBlbHNlIChcbiAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgICAgZmlyZSB0IGV2ZW50KVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgIGFkZCB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuZW5kXG5cbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hZnRlciB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxubGV0IHJ1bl9hdCB0IGF0IGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hdCB0IGF0IGNhbGxiYWNrIDogRXZlbnQudClcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgaWdub3JlIChFdmVudC5hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbjs7XG5cbnR5cGUgc2VuZF9leG4gPSBNb25pdG9yMC50IC0+ID9iYWNrdHJhY2U6WyBgR2V0IHwgYFRoaXMgb2YgQmFja3RyYWNlLnQgXSAtPiBleG4gLT4gdW5pdFxuXG5sZXQgcnVuX2ZpcmVkX2V2ZW50cyB0IH4oc2VuZF9leG4gOiBzZW5kX2V4biBvcHRpb24pID1cbiAgbGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGluXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgICAgIHwgSGFwcGVuaW5nIHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBGaXJlZCAtPlxuICAgICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpIYXBwZW5pbmc7XG4gICAgICAgICAoKiBXZSBzZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgW2V2ZW50LmNhbGxiYWNrXSBydW5zIGluIHRoZSBzYW1lIGNvbnRleHRcbiAgICAgICAgICAgIHRoYXQgd2FzIGluIHBsYWNlIHdoZW4gW2V2ZW50XSB3YXMgY3JlYXRlZC4gKilcbiAgICAgICAgIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgICAgKCogQW55IG1vZGlmaWNhdGlvbiBvZiBbc3RhdHVzXSBiZWxvdyBuZWVkcyB0byBmaXJzdCBjaGVjayB0aGF0IHRoZSBldmVudCBpc1xuICAgICAgICAgICAgc3RpbGwgW0hhcHBlbmluZ10uIElmIHRoZSBldmVudCBzdGF0dXMgaXMgbm90IFtIYXBwZW5pbmddIHRoZW4gdGhlIGV2ZW50J3NcbiAgICAgICAgICAgIGNhbGxiYWNrIG11c3QgaGF2ZSByZXNjaGVkdWxlZCB0aGUgZXZlbnQuIEluIHRoYXQgY2FzZSwgZG8gbm90IHNldCB0aGUgc3RhdHVzXG4gICAgICAgICAgICBvciBhdHRlbXB0IHRvIHJlc2NoZWR1bGUgYSByZXBlYXRpbmcgZXZlbnQuXG5cbiAgICAgICAgICAgIFRoaXMgY29kZSBjb3VsZCBiZSBtdWNoIHNpbXBsZXIgaWYgd2UgaW1tZWRpYXRlbHkgcmVzY2hlZHVsZWQgdGhlIGV2ZW50IGJlZm9yZVxuICAgICAgICAgICAgcnVubmluZyB0aGUgY2FsbGJhY2sgKG5vIG5lZWQgZm9yIHRoZSBIYXBwZW5pbmcgc3RhdGUgdGhlbikuIE9uZSByZWFzb24gd2VcbiAgICAgICAgICAgIGRvbid0IGRvIHRoYXQgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVzY2hlZHVsZSBhIHBlcmlvZGljXG4gICAgICAgICAgICBldmVudCBpZiBpdHMgY2FsbGJhY2sgcmFpc2VzLiAqKVxuICAgICAgICAgKG1hdGNoIGV2ZW50LmNhbGxiYWNrICgpIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIChtYXRjaCBzZW5kX2V4biB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IHQuYWR2YW5jZV9lcnJvcnMgPC0gRXJyb3Iub2ZfZXhuIGV4biA6OiB0LmFkdmFuY2VfZXJyb3JzXG4gICAgICAgICAgICAgfCBTb21lIHNlbmRfZXhuIC0+XG4gICAgICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgICAgc2VuZF9leG4gZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKSk7XG4gICAgICAgICAgICBFdmVudC5zZXRfc3RhdHVzX2lmIH5pczpIYXBwZW5pbmcgZXZlbnQgVW5zY2hlZHVsZWRcbiAgICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBFdmVudC5zZXRfc3RhdHVzX2lmIH5pczpIYXBwZW5pbmcgZXZlbnQgVW5zY2hlZHVsZWRcbiAgICAgICAgICAgICB8IFNvbWUgaW50ZXJ2YWwgLT5cbiAgICAgICAgICAgICAgIGlmIEV2ZW50LlN0YXR1cy5lcXVhbCBIYXBwZW5pbmcgZXZlbnQuc3RhdHVzXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgKCogVGhlIGV2ZW50J3MgY2FsbGJhY2sgZGlkIG5vdCByZXNjaGVkdWxlIHRoZSBldmVudC4gU28gcmVzY2hlZHVsZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgcmVwZWF0aW5nIHRpbWVyIGJhc2VkIG9uIHRoZSBsYXN0IFthdF0gdGltZS4gKilcbiAgICAgICAgICAgICAgICAgZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgPC0gVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICB+YmFzZTpldmVudC5hdFxuICAgICAgICAgICAgICAgICAgICAgIH5hZnRlcjoodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgICAgICAgICAgICAgICAgIH5pbnRlcnZhbDtcbiAgICAgICAgICAgICAgICAgc2NoZWR1bGUgdCBldmVudCkpKTtcbiAgICAgICAgIHRydWUpXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrIHQuZXZlbnRzIH50b18gfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyB0LmV2ZW50cyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuID1cbiAgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuO1xuICBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuID1cbiAgaWYgdC5hbV9hZHZhbmNpbmdcbiAgdGhlblxuICAgIHJhaXNlX3MgWyVzZXhwIFwiY2Fubm90IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXSBvciBbYWR2YW5jZV9kaXJlY3RseV0gZnJvbSBjYWxsYmFja1wiXTtcbiAgdC5hbV9hZHZhbmNpbmcgPC0gdHJ1ZTtcbiAgKG1hdGNoIHQuYWR2YW5jZV9lcnJvcnMgd2l0aFxuICAgfCBbXSAtPiAoKVxuICAgfCBfIC0+IHQuYWR2YW5jZV9lcnJvcnMgPC0gW10pO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmluaXNoX2FkdmFuY2luZyB0ID1cbiAgdC5hbV9hZHZhbmNpbmcgPC0gZmFsc2U7XG4gIG1hdGNoIHQuYWR2YW5jZV9lcnJvcnMgd2l0aFxuICB8IFtdIC0+IE9rICgpXG4gIHwgZXJyb3JzIC0+XG4gICAgdC5hZHZhbmNlX2Vycm9ycyA8LSBbXTtcbiAgICBFcnJvciAoRXJyb3Iub2ZfbGlzdCBlcnJvcnMpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFjb250aW51ZSBkb1xuICAgIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB0LmV2ZW50c1xuICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICBlbHNlIChcbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzIGluXG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZSB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fOm1pbl9hbGFybV90aW1lIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFjb250aW51ZSBkb1xuICAgIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB0LmV2ZW50c1xuICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQuZXZlbnRzIGluXG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbFxuICAgICAgICAgIHRcbiAgICAgICAgICB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cylcbiAgICAgICAgICB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICByZXN1bHQsIGR1cmF0aW9uXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0ID1cbiAgVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50c1xuOztcblxubGV0IGhhc19ldmVudHNfdG9fcnVuIHQgPSBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXIwXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcbm1vZHVsZSBFdmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS5Kb2Jfb3JfZXZlbnRcblxubGV0IGRlYnVnID0gRGVidWcuc2NoZWR1bGVyXG5cbm1vZHVsZSBJdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuSXZhclxuXG4gIGxldCBjcmVhdGVfd2l0aF9jZWxsIGNlbGwgPSB7IGNlbGwgfVxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX3dpdGhfY2VsbCBFbXB0eVxuXG4gIGxldCBjcmVhdGVfZnVsbCAodHlwZSBhKSAoYSA6IGEpID1cbiAgICAoKiBXZSBhbGxvY2F0ZSBhbiBpbW11dGFibGUgaXZhciBhbmQgdGhlbiBjYXN0IGl0IHRvIGEgbXV0YWJsZSBpdmFyLiAgVGhlIGltbXV0YWJpbGl0eVxuICAgICAgIGFsbG93cyBPQ2FtbCB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBpdmFyIGlmIFthXSBpcyBjb25zdGFudC4gIFRoaXMgY2FzdCBpcyBzYWZlXG4gICAgICAgYmVjYXVzZSBhIGZ1bGwgaXZhciBpcyBuZXZlciBtdXRhdGVkLiAgV2UgYWxzbyBiZWxpZXZlIHRoYXQgd2Ugd2lsbCBub3QgdHJpZ2dlclxuICAgICAgIGZsYW1iZGEgdG8gc3B1cmlvdXNseSByZXBvciB3YXJuaW5nIDU5LCBtdXRhdGlvbiBvZiBrbm93biBpbW11dGFibGUgZGF0YS4gIEFsbFxuICAgICAgIG11dGF0aW9ucyBvZiBhbiBpdmFyIGNlbGwsIGkuZS4gW2Zvby5jZWxsIDwtIC4uLl0sIGFyZSBkaXJlY3RseSBwcmVjZWRlZCBieSBhXG4gICAgICAgW21hdGNoIGZvby5jZWxsXSB0aGF0IHByZXZlbnRzIHRoZSBbRnVsbF0gY2FzZSBmcm9tIHJlYWNoaW5nIHRoZSBtb2RpZmljYXRpb24uICBTb1xuICAgICAgIGZsYW1iZGEgc2hvdWxkIGFsd2F5cyBlbGltaW5hdGUgdGhlIFtmb28uY2VsbCA8LSAuLi5dIG9mIGEgY29uc3RhbnQgW0Z1bGxdIGl2YXIsXG4gICAgICAgYW5kIG5vdCB3YXJuLiAqKVxuICAgIChPYmoubWFnaWMgOiBhIEltbXV0YWJsZS50IC0+IGEgdCkgeyBjZWxsID0gRnVsbCBhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQnZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkJ2YXJcblxuICBsZXQgY3JlYXRlICgpID0gb2ZfcmVwciB7IGhhc19hbnlfd2FpdGVycyA9IGZhbHNlOyBpdmFyID0gSXZhci5jcmVhdGUgKCkgfVxuZW5kXG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0LnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlciB+ZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCkgfmV4ZWM6aWdub3JlKVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFNjaGVkdWxlcjAudCA9XG4gIHsgKCogW2NoZWNrX2FjY2Vzc10gb3B0aW9uYWxseSBob2xkcyBhIGZ1bmN0aW9uIHRvIHJ1biB0byBjaGVjayB3aGV0aGVyIGFjY2VzcyB0byBbdF0gaXNcbiAgICAgICBjdXJyZW50bHkgYWxsb3dlZC4gIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IGludmFsaWQgYWNjZXNzIHRvIHRoZSBzY2hlZHVsZXIgZnJvbSBhXG4gICAgICAgdGhyZWFkLiAqKVxuICAgIG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgKCogVGhlIHNjaGVkdWxlciBjYWxscyBbZ290X3VuY2F1Z2h0X2V4bl0gd2hlbiBhbiBleGNlcHRpb24gYnViYmxlcyB0byB0aGUgdG9wIG9mIHRoZVxuICAgICBtb25pdG9yIHRyZWUgd2l0aG91dCBiZWluZyBoYW5kbGVkLiAgVGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRvIG5ldmVyIHJ1biBhbm90aGVyXG4gICAgIGpvYiBhZnRlciB0aGlzIGJ5IGNhbGxpbmcgW2NsZWFyXSBhbmQgYmVjYXVzZSBbZW5xdWV1ZV9qb2JdIHdpbGwgbmV2ZXIgYWRkIGFub3RoZXJcbiAgICAgam9iLiAqKVxuICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGxpc3RcbiAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgbGlzdFxuICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfbnVtX2pvYnMgOiBpbnRcbiAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnRcbiAgKCogW2V4dGVybmFsX2pvYnNdIGlzIGEgcXVldWUgb2YgYWN0aW9ucyBzZW50IGZyb20gb3V0c2lkZSBvZiBhc3luYy4gIFRoaXMgaXMgZm9yIHRoZVxuICAgICBjYXNlIHdoZXJlIHdlIHdhbnQgdG8gc2NoZWR1bGUgYSBqb2Igb3IgZmlsbCBhbiBpdmFyIGZyb20gYSBjb250ZXh0IHdoZXJlIGl0IGlzIG5vdFxuICAgICBzYWZlIHRvIHJ1biBhc3luYyBjb2RlLCBiZWNhdXNlIHRoZSBhc3luYyBsb2NrIGlzbid0IGhlbGQuICBGb3IgaW5zdGFuY2U6IC0gaW4gYW5cbiAgICAgT0NhbWwgZmluYWxpemVyLCBhcyB0aGV5IGNhbiBydW4gYXQgYW55IHRpbWUgaW4gYW55IHRocmVhZC5cblxuICAgICBUaGUgd2F5IHRvIGRvIGl0IGlzIHRvIHF1ZXVlIGEgdGh1bmsgaW4gW2V4dGVybmFsX2pvYnNdIGFuZCBjYWxsXG4gICAgIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgdGhlIHNjaGVkdWxlclxuICAgICB0aGF0IG5ldyBhY3Rpb25zIGFyZSBhdmFpbGFibGUuXG5cbiAgICAgV2hlbiB1c2luZyBBc3luYyBvbiB1bml4LCBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGlzIHNldCBpbiBbQXN5bmNfdW5peF1cbiAgICAgdG8gY2FsbCBbSW50ZXJydXB0b3IudGhyZWFkX3NhZmVfaW50ZXJydXB0XSwgd2hpY2ggd2lsbCB3YWtlIHVwIHRoZVxuICAgICBbQXN5bmNfdW5peF0gc2NoZWR1bGVyIGFuZCBydW4gYSBjeWNsZS5cblxuICAgICBOb3RlIHRoYXQgdGhpcyBob29rIG1pZ2h0IGJlIHVzZWQgaW4gb3RoZXIgY29udGV4dCAoanNfb2Zfb2NhbWwsIG1pcmFnZSkuXG5cbiAgICAgV2hlbiBydW5uaW5nIGEgY3ljbGUsIHdlIHB1bGwgZXh0ZXJuYWwgYWN0aW9ucyBhdCBldmVyeSBqb2IgYW5kIHBlcmZvcm0gdGhlbVxuICAgICBpbW1lZGlhdGVseS4gKilcbiAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgOiB1bml0IC0+IHVuaXRcbiAgKCogW2pvYl9xdWV1ZWRfaG9va10gYW5kIFtldmVudF9hZGRlZF9ob29rXSBhaW0gdG8gYmUgdXNlZCBieSBqc19vZl9vY2FtbC4gKilcbiAgKCogV2UgdXNlIFtfIG9wdGlvbl0gaGVyZSBiZWNhdXNlIHRob3NlIGhvb2tzIHdpbGwgbm90IGJlIHNldCBpbiB0aGUgY29tbW9uIGNhc2VcbiAgICAgYW5kIHdlIHdhbnQgdG8gYXZvaWQgZXh0cmEgZnVuY3Rpb24gY2FsbHMuICopXG4gIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGV2ZW50X2FkZGVkX2hvb2sgOiAoVGltZV9ucy50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgeWllbGQgOiAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdKVxuICA7IG11dGFibGUgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOlxuICAgICAgKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSAoKiBjb25maWd1cmF0aW9uKikpXG4gIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuX3Vud3JhcHBlZCA9IHVuY2F1Z2h0X2V4blxuXG5sZXQgdW5jYXVnaHRfZXhuIHQgPVxuICBtYXRjaCB0LnVuY2F1Z2h0X2V4biB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoZXhuLCBzZXhwKSAtPlxuICAgIFNvbWUgKEVycm9yLmNyZWF0ZSBcInVuaGFuZGxlZCBleGNlcHRpb25cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XSlcbjs7XG5cbmxldCBudW1fcGVuZGluZ19qb2JzIHQgPVxuICBKb2JfcXVldWUubGVuZ3RoIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgKyBKb2JfcXVldWUubGVuZ3RoIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBudW1fam9ic19ydW4gdCA9XG4gIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICArIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgdCA9IHQubGFzdF9jeWNsZV9udW1fam9ic1xuXG5sZXQgdW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsIH5zdWJsaXN0OnNtYWxsIGxhcmdlID1cbiAgbGV0IHJlbW92ZSBsIHggPVxuICAgIG1hdGNoIExpc3Quc3BsaXRfd2hpbGUgbCB+ZjooZnVuIHkgLT4gbm90IChlcXVhbCB5IHgpKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBOb25lXG4gICAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG4gIGluXG4gIE9wdGlvbi5pc19zb21lXG4gICAgKExpc3QuZm9sZCBzbWFsbCB+aW5pdDooU29tZSBsYXJnZSkgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgIE9wdGlvbi5iaW5kIGFjYyB+ZjooZnVuIGwgLT4gcmVtb3ZlIGwgeCkpKVxuOztcblxubGV0IGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHRhYmxlIGxpc3QgPVxuICAoKiBZb3UgY2FuIGluIGZhY3QgaGF2ZSBob29rcyBpbiB0aGUgbGlzdCBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBlbnRyeSBpblxuICAgICB0aGUgdGFibGUuIFN1Y2ggaG9va3MgY2FuIG5ldmVyIGJlIHJlbW92ZWQuICopXG4gIGFzc2VydCAodW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsOnBoeXNfZXF1YWwgfnN1Ymxpc3Q6KEhhc2h0YmwuZGF0YSB0YWJsZSkgbGlzdClcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y2hlY2tfYWNjZXNzOmlnbm9yZVxuICAgICAgfmpvYl9wb29sOihjaGVjayBKb2JfcG9vbC5pbnZhcmlhbnQpXG4gICAgICB+bm9ybWFsX3ByaW9yaXR5X2pvYnM6KGNoZWNrIEpvYl9xdWV1ZS5pbnZhcmlhbnQpXG4gICAgICB+bG93X3ByaW9yaXR5X2pvYnM6KGNoZWNrIEpvYl9xdWV1ZS5pbnZhcmlhbnQpXG4gICAgICB+dmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyczpcbiAgICAgICAgKGNoZWNrIChmdW4gcSAtPiBEZXF1ZS5pdGVyIHEgfmY6VmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLmludmFyaWFudCkpXG4gICAgICB+bWFpbl9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH51bmNhdWdodF9leG46XG4gICAgICAgIChjaGVjayAoZnVuIHVuY2F1Z2h0X2V4biAtPlxuICAgICAgICAgICBpZiBpc19zb21lIHVuY2F1Z2h0X2V4biB0aGVuIGFzc2VydCAobnVtX3BlbmRpbmdfam9icyB0ID0gMCkpKVxuICAgICAgfmN5Y2xlX2NvdW50OihjaGVjayAoZnVuIGN5Y2xlX2NvdW50IC0+IGFzc2VydCAoY3ljbGVfY291bnQgPj0gMCkpKVxuICAgICAgfmN5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfmluX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudFxuICAgICAgICAgICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZVxuICAgICAgICAgICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0KSlcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQpKVxuICAgICAgfmxhc3RfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH50b3RhbF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfmxhc3RfY3ljbGVfbnVtX2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGxhc3RfY3ljbGVfbnVtX2pvYnMgLT4gYXNzZXJ0IChsYXN0X2N5Y2xlX251bV9qb2JzID49IDApKSlcbiAgICAgIH50aW1lX3NvdXJjZTpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5SZWFkX3dyaXRlLmludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIGpvYiAtPlxuICAgICAgICAgICAgICBhc3NlcnQgKFBvb2wucG9pbnRlcl9pc192YWxpZCB0LmpvYl9wb29sIGpvYikpKSlcbiAgICAgIH5leHRlcm5hbF9qb2JzOmlnbm9yZVxuICAgICAgfnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rOmlnbm9yZVxuICAgICAgfmpvYl9xdWV1ZWRfaG9vazppZ25vcmVcbiAgICAgIH5ldmVudF9hZGRlZF9ob29rOmlnbm9yZVxuICAgICAgfnlpZWxkOmlnbm9yZVxuICAgICAgfnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluOmlnbm9yZVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6aWdub3JlXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6aWdub3JlXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogdCldXG47O1xuXG5sZXQgZnJlZV9qb2IgdCBqb2IgPSBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2JcblxubGV0IGVucXVldWUgdCAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSBmIGEgPVxuICAoKiBJZiB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLCB3ZSBkb24ndCBhZGQgdGhlIGpvYiwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBhbnkgam9ic1xuICAgICB0byBydW4gb25jZSB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLiAqKVxuICBpZiBpc19ub25lIHQudW5jYXVnaHRfZXhuXG4gIHRoZW4gKFxuICAgIGxldCBwcmlvcml0eSA9IGV4ZWN1dGlvbl9jb250ZXh0LnByaW9yaXR5IGluXG4gICAgbGV0IGpvYl9xdWV1ZSA9XG4gICAgICBtYXRjaCBwcmlvcml0eSB3aXRoXG4gICAgICB8IE5vcm1hbCAtPiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICB8IExvdyAtPiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgaW5cbiAgICBKb2JfcXVldWUuZW5xdWV1ZSBqb2JfcXVldWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIG1hdGNoIHQuam9iX3F1ZXVlZF9ob29rIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPiBmIHByaW9yaXR5KVxuOztcblxubGV0IGVucXVldWVfam9iIHQgam9iIH5mcmVlX2pvYiA9XG4gIGxldCBqb2JfcG9vbCA9IHQuam9iX3Bvb2wgaW5cbiAgZW5xdWV1ZVxuICAgIHRcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MClcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MSlcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50Mik7XG4gIGlmIGZyZWVfam9iIHRoZW4gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG47O1xuXG5sZXQgaGFuZGxlX2ZpcmVkICh0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCkgam9iX29yX2V2ZW50ID1cbiAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICB8IEpvYiwgam9iIC0+IGVucXVldWVfam9iIHRpbWVfc291cmNlLnNjaGVkdWxlciBqb2IgfmZyZWVfam9iOnRydWVcbiAgfCBFdmVudCwgZXZlbnQgLT4gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuZmlyZSB0aW1lX3NvdXJjZSBldmVudFxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICBsZXQgcmVjIHQgPVxuICAgIHsgY2hlY2tfYWNjZXNzID0gTm9uZVxuICAgIDsgam9iX3Bvb2wgPSBKb2JfcG9vbC5jcmVhdGUgKClcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzID0gRGVxdWUuY3JlYXRlICgpXG4gICAgOyBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IHVuY2F1Z2h0X2V4biA9IE5vbmVcbiAgICA7IGN5Y2xlX3N0YXJ0ID0gbm93XG4gICAgOyBjeWNsZV9jb3VudCA9IDBcbiAgICA7IGluX2N5Y2xlID0gZmFsc2VcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA9IFtdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA9IFtdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZSlcbiAgICA7IGxhc3RfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgbGFzdF9jeWNsZV9udW1fam9icyA9IDBcbiAgICA7IHRvdGFsX2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBleHRlcm5hbF9qb2JzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA9IGlnbm9yZVxuICAgIDsgam9iX3F1ZXVlZF9ob29rID0gTm9uZVxuICAgIDsgZXZlbnRfYWRkZWRfaG9vayA9IE5vbmVcbiAgICA7IHlpZWxkID0gQnZhci5jcmVhdGUgKClcbiAgICA7IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID0gQnZhci5jcmVhdGUgKCkgKCogY29uZmlndXJhdGlvbiAqKVxuICAgIDsgY2hlY2tfaW52YXJpYW50cyA9IEFzeW5jX2tlcm5lbF9jb25maWcuY2hlY2tfaW52YXJpYW50c1xuICAgIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgICBBc3luY19rZXJuZWxfY29uZmlnLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgOyByZWNvcmRfYmFja3RyYWNlcyA9IEFzeW5jX2tlcm5lbF9jb25maWcucmVjb3JkX2JhY2t0cmFjZXNcbiAgICB9XG4gIGFuZCBldmVudHMgPVxuICAgIFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzpBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vd1xuICBhbmQgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSB0cnVlXG4gICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHNjaGVkdWxlciA9IHRcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCBpc19kZWFkIHQgPSBpc19zb21lIHQudW5jYXVnaHRfZXhuXG5sZXQgc2V0X2NoZWNrX2FjY2VzcyB0IGYgPSB0LmNoZWNrX2FjY2VzcyA8LSBmXG5cbmxldCB0X3JlZiA9XG4gIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBjcmVhdGUgd2l0aFxuICB8IE9rIHQgLT4gcmVmIHRcbiAgfCBFcnJvciBleG4gLT5cbiAgICBEZWJ1Zy5sb2cgXCJBc3luYyBjYW5ub3QgY3JlYXRlIGl0cyByYXcgc2NoZWR1bGVyXCIgZXhuIFslc2V4cF9vZjogZXhuXTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBjaGVja19hY2Nlc3MgdCA9XG4gIG1hdGNoIHQuY2hlY2tfYWNjZXNzIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgKClcbjs7XG5cbmxldCB0ICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgY2hlY2tfYWNjZXNzIHQ7XG4gIHRcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgPVxuICBpZiB0LnJlY29yZF9iYWNrdHJhY2VzXG4gIHRoZW4gRXhlY3V0aW9uX2NvbnRleHQucmVjb3JkX2JhY2t0cmFjZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgZWxzZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mIHggPVxuICBsZXQgb2xkX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQ7XG4gIHByb3RlY3R4IH5mIHggfmZpbmFsbHk6KGZ1biBfIC0+IHNldF9leGVjdXRpb25fY29udGV4dCB0IG9sZF9jb250ZXh0KVxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dCB+ZiA9IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgKClcblxubGV0IGNyZWF0ZV9qb2IgKHR5cGUgYSkgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiBQb29sLmlzX2Z1bGwgdC5qb2JfcG9vbCB0aGVuIHQuam9iX3Bvb2wgPC0gUG9vbC5ncm93IHQuam9iX3Bvb2w7XG4gIFBvb2wubmV3M1xuICAgIHQuam9iX3Bvb2xcbiAgICBleGVjdXRpb25fY29udGV4dFxuICAgIChPYmoubWFnaWMgKGYgOiBhIC0+IHVuaXQpIDogT2JqLnQgLT4gdW5pdClcbiAgICAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBnb3RfdW5jYXVnaHRfZXhuIHQgZXhuIHNleHAgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImdvdF91bmNhdWdodF9leG5cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XTtcbiAgTGlzdC5pdGVyIFsgdC5ub3JtYWxfcHJpb3JpdHlfam9iczsgdC5sb3dfcHJpb3JpdHlfam9icyBdIH5mOkpvYl9xdWV1ZS5jbGVhcjtcbiAgdC51bmNhdWdodF9leG4gPC0gU29tZSAoZXhuLCBzZXhwKVxuOztcblxuKCogW3N0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGVuYWJsZXMgc3Vic2VxdWVudCBjYWxscyBvZiBbcnVuX2pvYnNdXG4gICB0byBydW4gdXAgdG8gW21heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGpvYnMgb2YgZWFjaCBwcmlvcml0eSBsZXZlbC4gKilcbmxldCBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5ID1cbiAgbGV0IG4gPSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSBpblxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgbjtcbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lmxvd19wcmlvcml0eV9qb2JzIG5cbjs7XG5cbigqIFtydW5fam9icyB0XSByZW1vdmVzIGpvYnMgZnJvbSBbdF0gb25lIGF0IGEgdGltZSBhbmQgcnVucyB0aGVtLCBzdG9wcGluZyBhcyBzb29uXG4gICBhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3Igd2hlbiBubyBtb3JlIGpvYnMgY2FuIGJlIHJ1biBhdCBhbnkgcHJpb3JpdHksXG4gICBhcyBwZXIgW35tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XS4gKilcbmxldCByZWMgcnVuX2pvYnMgdCA9XG4gIG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIHQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gIHwgT2sgKCkgLT5cbiAgICAobWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubG93X3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgfCBPayAoKSAtPlxuICAgICAgIGlmIEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgICB8fCBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgICAgdGhlbiBydW5fam9icyB0XG4gICAgICAgZWxzZSBPayAoKSlcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIHN0YXJ0X2N5Y2xlXG4gICAgdFxuICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OlxuICAgICAgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gSW50Lm1heF92YWx1ZSk7XG4gIG1hdGNoIHJ1bl9qb2JzIHQgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGV4biwgX2JhY2t0cmFjZSkgLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgY3JlYXRlX3RpbWVfc291cmNlXG4gICAgICA/KHRpbWluZ193aGVlbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcpXG4gICAgICB+bm93XG4gICAgICAoKVxuICA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXZlbnRzID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vdyBpblxuICBsZXQgcmVjIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gZmFsc2VcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdGltZV9zb3VyY2Vcbjs7XG5cbmxldCB3YWxsX2Nsb2NrICgpID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UucmVhZF9vbmx5ICh0ICgpKS50aW1lX3NvdXJjZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIENlbGwgPSBUeXBlcy5DZWxsXG5cbnR5cGUgYW55ID1cbiAgWyBgRW1wdHlcbiAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgfCBgRnVsbFxuICB8IGBJbmRpclxuICBdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkl2YXIudCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBhbnkpIGNlbGwgfVxuXG4oKiBUaGUgWydiXSBpcyB1c2VkIHRvIGVuY29kZSB0aGUgY29uc3RydWN0b3IuICBUaGlzIGFsbG93cyB1cyB0byB3cml0ZSBmdW5jdGlvbnMgdGhhdFxuICAgdGFrZSBvbmx5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCB3aXRoIG5vIHJ1bnRpbWUgdGVzdC5cblxuICAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBkaXJlY3RlZCBncmFwaCB3aXRoIGl2YXJzIGFzIG5vZGVzIGFuZCBbSW5kaXJdcyBhc1xuICAgZWRnZXMgaXMgYWN5Y2xpYy4gIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSBhbiBbSW5kaXJdIGFyZSBbc3F1YXNoXSBhbmRcbiAgIFtjb25uZWN0XSwgYW5kIGZvciB0aG9zZSwgdGhlIHRhcmdldCBvZiB0aGUgW0luZGlyXSBpcyBhbHdheXMgYSBub24tW0luZGlyXS4gIFRodXMsIHRoZVxuICAgbmV3bHkgYWRkZWQgZWRnZXMgYXJlIG5ldmVyIHBhcnQgb2YgYSBjeWNsZS4gKilcbmFuZCAoJ2EsICdiKSBjZWxsID0gKCdhLCAnYikgVHlwZXMuQ2VsbC50ID1cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICB7ICgqIFtydW5dIGlzIG11dGFibGUgc28gd2UgY2FuIHNldCBpdCB0byBbaWdub3JlXSB3aGVuIHRoZSBoYW5kbGVyIGlzIHJlbW92ZWQuXG4gICAgICAgICAgIFRoaXMgaXMgdXNlZCB3aGVuIHdlIGluc3RhbGwgYSBoYW5kbGVyIG9uIGEgZnVsbCBpdmFyIHNpbmNlIGl0IGlzIGltbWVkaWF0ZWx5XG4gICAgICAgICAgIGFkZGVkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gICAgICAgIG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW3ByZXZdIGFuZCBbbmV4dF0gY2lyY3VsYXJseSBkb3VibHkgbGluayBhbGwgaGFuZGxlcnMgb2YgdGhlIHNhbWUgaXZhci4gKilcbiAgICAgICAgbXV0YWJsZSBwcmV2IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICA7IG11dGFibGUgbmV4dCA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgfVxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIGNlbGxcbiAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIGNlbGxcbiAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSBjZWxsXG4gIHwgSW5kaXIgOiAnYSB0IC0+ICgnYSwgWz4gYEluZGlyIF0pIGNlbGxcblxubW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG5cbiAgbGV0IHJ1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnJ1blxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5leGVjdXRpb25fY29udGV4dFxuICBsZXQgcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnByZXZcbiAgbGV0IG5leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5uZXh0XG4gIGxldCBzZXRfcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5ydW4gPC0geFxuICBsZXQgc2V0X3ByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnByZXYgPC0geFxuICBsZXQgc2V0X25leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0Lm5leHQgPC0geFxuXG4gIGxldCBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0ID1cbiAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgICAgICB7IHJ1blxuICAgICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdFxuICAgICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0IH1cbiAgICAgICAgIGluXG4gICAgICAgICBoMSBdfVxuXG4gICAgICAgSG93ZXZlciB0aGUgY29tcGlsYXRpb24gb2YgcmVjdXJzaXZlIHZhbHVlIGluIE9DYW1sIGlzIG5vdCBvcHRpbWFsOiB0aGUgdmFsdWUgaXNcbiAgICAgICBhbGxvY2F0ZWQgdHdpY2UgYW5kIGNvcGllZCBvbmNlICh3aXRoIGEgbG9vcCBjYWxsaW5nIGNhbWxfbW9kaWZ5KS4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVjZXNzYXJ5IGZvciBzaW1wbGUgcmVjdXJzaXZlIGRlZmluaXRpb25zIGxpa2UgdGhpcyBvbmUuXG5cbiAgICAgICBJbnN0ZWFkIHdlIGFsbG9jYXRlIHRoZSB2YWx1ZSB3aXRoIGR1bW15IGZpZWxkcyBhbmQgdXBkYXRlIHRoZW0gYWZ0ZXIuICopXG4gICAgbGV0IHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmU7IG5leHQgPSBPYmoubWFnaWMgTm9uZSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdDEgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMVxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MlxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDIgfVxuICAgICAgICAgYW5kIHQyID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjJcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MlxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDFcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQxIH1cbiAgICAgICAgIGluXG4gICAgICAgICB0MSBdfSAqKVxuICAgIGxldCB0MSA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjFcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICA7IHByZXYgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICA7IG5leHQgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgdDIgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4yOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MjsgcHJldiA9IHQxOyBuZXh0ID0gdDEgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdDEgdDI7XG4gICAgc2V0X25leHQgdDEgdDI7XG4gICAgdDFcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdCk7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGxldCB0MSA9ICFyIGluXG4gICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKHByZXYgKG5leHQgdDEpKSB0MSk7XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQxKTtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBwaHlzX2VxdWFsIHQgKG5leHQgdClcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCBuID0gcmVmIDEgaW5cbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgaW5jciBuO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZTtcbiAgICAhblxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIHQgc2NoZWR1bGVyIHYgPSBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgKGV4ZWN1dGlvbl9jb250ZXh0IHQpIChydW4gdCkgdlxuXG4gIGxldCBzY2hlZHVsZV9qb2JzIHQgdiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgZW5xdWV1ZSB0IHNjaGVkdWxlciB2O1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBlbnF1ZXVlICFyIHNjaGVkdWxlciB2O1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9XG4gICAgc2V0X3ByZXYgKG5leHQgdCkgKHByZXYgdCk7XG4gICAgc2V0X25leHQgKHByZXYgdCkgKG5leHQgdCk7XG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdFxuICA7O1xuXG4gIGxldCBhZGQgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gcHJldiB0OyBuZXh0ID0gdCB9XG4gICAgaW5cbiAgICBzZXRfbmV4dCAocHJldiB0KSByZXN1bHQ7XG4gICAgc2V0X3ByZXYgdCByZXN1bHQ7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgKCogW3NwbGljZSB0MSB0Ml0gY3JlYXRlczpcblxuICAgICB7dlxuICAgICAgIC0tPiB0MSA8LS0+IC4uLiA8LS0+IGxhc3QxIDwtLT4gdDIgPC0tPiAuLi4gPC0tPiBsYXN0MiA8LS1cbiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICB2fSAqKVxuICBsZXQgc3BsaWNlIHQxIHQyID1cbiAgICBsZXQgbGFzdDEgPSBwcmV2IHQxIGluXG4gICAgbGV0IGxhc3QyID0gcHJldiB0MiBpblxuICAgIHNldF9uZXh0IGxhc3QxIHQyO1xuICAgIHNldF9uZXh0IGxhc3QyIHQxO1xuICAgIHNldF9wcmV2IHQxIGxhc3QyO1xuICAgIHNldF9wcmV2IHQyIGxhc3QxXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgbGV0IGZpcnN0ID0gY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICAgbGV0IHJlYyBsb29wIHByZXYgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNldF9wcmV2IGZpcnN0IHByZXZcbiAgICAgICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldjsgbmV4dCA9IGZpcnN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIHNldF9uZXh0IHByZXYgdDtcbiAgICAgICAgICBsb29wIHQgbFxuICAgICAgaW5cbiAgICAgIGxvb3AgZmlyc3QgbDtcbiAgICAgIFNvbWUgZmlyc3RcbiAgOztcblxuICBsZXQgdG9fbGlzdCBmaXJzdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgYWNjID1cbiAgICAgIGxldCBhY2MgPSAocnVuIHQsIGV4ZWN1dGlvbl9jb250ZXh0IHQpIDo6IGFjYyBpblxuICAgICAgaWYgcGh5c19lcXVhbCB0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCAocHJldiB0KSBhY2NcbiAgICBpblxuICAgIGxvb3AgKHByZXYgZmlyc3QpIFtdXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBfICh0IDogXyB0KSA9XG4gICAgbGV0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1biA9IF87IGV4ZWN1dGlvbl9jb250ZXh0OyBuZXh0ID0gXzsgcHJldiA9IF8gfSkgPVxuICAgICAgdFxuICAgIGluXG4gICAgWyVtZXNzYWdlIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaXZhciA9ICdhIHRcblxuKCogQ29tcGlsZWQgYXMgdGhlIGlkZW50aXR5LiAqKVxubGV0IGNlbGxfb2ZfaGFuZGxlciA6IF8gSGFuZGxlci50IC0+IF8gPSBmdW5jdGlvblxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgeCAtPiAoeCA6PiAoXywgYW55KSBjZWxsKVxuOztcblxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xubGV0IGluZGlyIHQgPSB7IGNlbGwgPSBJbmRpciB0IH1cblxuaW5jbHVkZSBTY2hlZHVsZXIuSXZhclxuXG4oKiBbc3F1YXNoIHRdIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGl2YXIgYXQgdGhlIGVuZCBvZiB0aGUgKHBvc3NpYmx5IGVtcHR5KSBjaGFpbiBvZlxuICAgW0luZGlyXXMgc3RhcnRpbmcgd2l0aCBbdF0gYW5kIGVuc3VyZXMgdGhhdCBhbGwgW0luZGlyXXMgYWxvbmcgdGhhdCBjaGFpbiBhcmUgcmVwbGFjZWRcbiAgIHdpdGggYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbi4gKilcbmxldCBzcXVhc2ggPVxuICBsZXQgcmVjIGZvbGxvdyBpbmRpciB0ID1cbiAgICAoKiBbaW5kaXIgPSBJbmRpciB0XSAqKVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyBhcyBpbmRpcicgLT4gZm9sbG93IGluZGlyJyB0J1xuICAgIHwgXyAtPiBpbmRpclxuICBpblxuICBsZXQgcmVjIHVwZGF0ZSB0IGluZGlyID1cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIHQuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHVwZGF0ZSB0JyBpbmRpclxuICAgIHwgXyAtPiB0XG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICAobWF0Y2ggdCcuY2VsbCB3aXRoXG4gICAgICAgfCBJbmRpciB0JycgYXMgaW5kaXIgLT4gdXBkYXRlIHQgKGZvbGxvdyBpbmRpciB0JycpXG4gICAgICAgfCBfIC0+IHQnICgqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpcyBhIGNoYWluIHdpdGggYSBzaW5nbGUgW0luZGlyXSAqKSlcbiAgICB8IF8gLT4gdFxuOztcblxuKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzbid0IGFuIFtJbmRpcl0uICopXG5cbmxldCBpbnZhcmlhbnQgYV9pbnZhcmlhbnQgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYV9pbnZhcmlhbnQgYVxuICB8IEVtcHR5IC0+ICgpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKF8sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCBleGVjdXRpb25fY29udGV4dFxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmludmFyaWFudCBoYW5kbGVyXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0IDogU2V4cC50ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBMaXN0IFsgQXRvbSBcIkZ1bGxcIjsgc2V4cF9vZl9hIGEgXVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gQXRvbSBcIkVtcHR5XCJcbjs7XG5cbmxldCBwZWVrIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IFNvbWUgYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gTm9uZVxuOztcblxubGV0IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGggPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgZmFpbHdpdGggaWZfZW1wdHlfdGhlbl9mYWlsd2l0aFxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkl2YXIudmFsdWVfZXhuIGNhbGxlZCBvbiBlbXB0eSBpdmFyXCJcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IGZhbHNlXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXNfZnVsbCB0ID0gbm90IChpc19lbXB0eSB0KVxuXG5sZXQgZmlsbCB0IHYgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiSXZhci5maWxsIG9mIGZ1bGwgaXZhclwiICh0IDogXyB0KV1cbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRnVsbCB2XG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuOztcblxubGV0IHJlbW92ZV9oYW5kbGVyIHQgKGhhbmRsZXIgOiBfIEhhbmRsZXIudCkgPVxuICBIYW5kbGVyLnNldF9ydW4gaGFuZGxlciBpZ25vcmU7XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gLT5cbiAgICAoKiBUaGVzZSBhcmUgb25seSBwb3NzaWJsZSBpZiBbaGFuZGxlcl0gd2FzIGFscmVhZHkgcmVtb3ZlZC4gICopXG4gICAgKClcbiAgfCBGdWxsIF8gLT5cbiAgICAoKiBUaGlzIGlzIHBvc3NpYmxlIGlmIFt0XSB3YXMgZmlsbGVkIGJlZm9yZSB3ZSB0cnkgdG8gcmVtb3ZlIHRoZSBoYW5kbGVyLiAgRS5nLlxuICAgICAgIFtEZWZlcnJlZC5jaG9vc2VdIHdpbGwgZG8gdGhpcy4gKilcbiAgICAoKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgY2VsbCAtPlxuICAgIGlmIEhhbmRsZXIuaXNfc2luZ2xldG9uIGhhbmRsZXJcbiAgICB0aGVuIHQuY2VsbCA8LSBFbXB0eVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBoYW5kbGVyIGNlbGwgdGhlbiB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLm5leHQgaGFuZGxlcik7XG4gICAgICBIYW5kbGVyLnVubGluayBoYW5kbGVyKVxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnIGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBGdWxsIHYgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICgqIFtydW5dIGNhbGxzIFtoYW5kbGVyLnJ1bl0sIHdoaWNoLCBpZiBbaGFuZGxlcl0gaGFzIGJlZW4gcmVtb3ZlZCwgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAgIHRvIFtpZ25vcmVdLiAqKVxuICAgIGxldCBydW4gdiA9IEhhbmRsZXIucnVuIGhhbmRsZXIgdiBpblxuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2O1xuICAgIGhhbmRsZXJcbjs7XG5cbmxldCBoYXNfaGFuZGxlcnMgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG4gIHwgRW1wdHkgfCBGdWxsIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB1cG9uJyB0IHJ1biA9IGFkZF9oYW5kbGVyIHQgcnVuIFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5cbigqIFt1cG9uXSBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUgYXM6XG5cbiAgIHtbXG4gICAgIGxldCB1cG9uIHQgZiA9IGlnbm9yZSAodXBvbicgdCBydW4pIF19XG5cbiAgIEhvd2V2ZXIsIGJlbG93IGlzIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHdvcnRoIGRvaW5nIGJlY2F1c2UgW3Vwb25dXG4gICBpcyB2ZXJ5IHdpZGVseSB1c2VkIGFuZCBpcyBzbyBtdWNoIG1vcmUgY29tbW9uIHRoYW4gW3Vwb24nXS4gIFRoZSBiZWxvdyBpbXBsZW1lbnRhdGlvblxuICAgYXZvaWRzIHRoZSB1c2Ugb2YgdGhlIGJhZyBvZiBoYW5kbGVycyBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIG9mIG9uZSBoYW5kbGVyIGZvclxuICAgdGhlIGRlZmVycmVkLiAqKVxubGV0IHVwb24gdCBydW4gPVxuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIHYgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgdC5jZWxsXG4gICAgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHQgOiBfIEhhbmRsZXIudClcbjs7XG5cbigqIFtjb25uZWN0XSB0YWtlcyBpdmFycyBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdLCBhbmQgbWFrZXMgW2JpbmRfcmhzXVxuICAgYmUgYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgbm9uLWluZGlyIGNlbGwgcmVhY2hhYmxlIGZyb20gW2JpbmRfcmVzdWx0XS4gIE9uIGVudHJ5XG4gICB0byBbY29ubmVjdF0sIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gbWF5IGJlIGNoYWlucywgc2luY2UgW2JpbmRfcmhzXSBpcyBhblxuICAgYXJiaXRyYXJ5IHVzZXItc3VwcGxpZWQgZGVmZXJyZWQsIGFuZCBbYmluZF9yZXN1bHRdIGlzIHJldHVybmVkIHRvIHRoZSB1c2VyIHByaW9yIHRvXG4gICBiZWluZyBbY29ubmVjdF1lZCwgYW5kIG1heSBoYXZlIGJlZW4gY29udmVydGVkIHRvIGFuIGluZGlyZWN0aW9uIGluIHRoZSBjYXNlIG9mXG4gICByaWdodC1uZXN0ZWQgYmluZHMuXG5cbiAgIFRoZSBwdXJwb3NlIG9mIFtjb25uZWN0XSBpcyB0byBtYWtlIHRhaWwtcmVjdXJzaXZlIGJpbmQgbG9vcHMgdXNlIGNvbnN0YW50IHNwYWNlLlxuICAgRS5nLjpcblxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgIGlmIGkgPSAwXG4gICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCViaW5kICgpID0gYWZ0ZXIgKHNlYyAxLikgaW5cbiAgICAgICAgIGxvb3AgKGkgLSAxKSkgXX1cblxuICAgW2Nvbm5lY3RdIG1ha2VzIGludGVybWVkaWF0ZSBiaW5kIHJlc3VsdHMgYWxsIGJlIFtJbmRpcl1zIHBvaW50aW5nIGF0IHRoZSBvdXRlcm1vc3RcbiAgIGJpbmQsIHJhdGhlciB0aGFuIGJlaW5nIGEgbGluZWFyLWxlbmd0aCBjaGFpbiwgd2l0aCBlYWNoIHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBvbmUuXG4gICBUaGVuLCBzaW5jZSB0aGUgcHJvZ3JhbSBpcyBvbmx5IGhvbGRpbmcgb24gdG8gdGhlIGlubmVybW9zdCBhbmQgb3V0ZXJtb3N0IGJpbmRzIGFsbCB0aGVcbiAgIGludGVybWVkaWF0ZSBvbmVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC5cblxuICAgW2Nvbm5lY3RdIHdvcmtzIGJ5IHNxdWFzaGluZyBpdHMgYXJndW1lbnRzIHNvIHRoYXQgdGhlIFtiaW5kX3Joc10gYWx3YXlzIHBvaW50cyBhdCB0aGVcbiAgIHVsdGltYXRlIHJlc3VsdC4gKilcbmxldCBjb25uZWN0ID1cbiAgKCogW3JlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHRdIHJlcG9pbnRzIHRvIFtpbmRpcl0gYWxsIHRoZSBpdmFycyBpbiB0aGVcbiAgICAgY2hhaW4gcmVhY2hhYmxlIGZyb20gW2l2YXJdLCBhbmQgcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gY2VsbCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgICBjaGFpbi4gIEFmdGVyIHJlcG9pbnRpbmcsIHdlIHdpbGwgbWVyZ2UgdGhlIGhhbmRsZXJzIGluIHRoYXQgY2VsbCB3aXRoIHRoZSBoYW5kbGVyc1xuICAgICBpbiBbYmluZF9yZXN1bHRdLCBhbmQgcHV0IHRoZSBtZXJnZWQgc2V0IG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0uICopXG4gIGxldCByZWMgcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdCA9XG4gICAgbGV0IGNlbGwgPSBpdmFyLmNlbGwgaW5cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IEluZGlyIGl2YXInIC0+XG4gICAgICBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICByZXBvaW50X2luZGlycyB+aXZhcjppdmFyJyB+aW5kaXIgfmJpbmRfcmVzdWx0XG4gICAgfCBGdWxsIF8gLT4gY2VsbFxuICAgIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgICAgKCogSXQgaXMgcG9zc2libGUgdGhhdCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIGFyZSBub3QgZXF1YWwsIGJ1dCB0aGVpciBjaGFpbnNcbiAgICAgICAgIG9mIGluZGlycyBsZWFkIHRvIHRoZSBzYW1lIG5vbi1bSW5kaXJdIGNlbGwsIGluIHdoaWNoIGNhc2Ugd2UgY2Fubm90IHNldCB0aGF0XG4gICAgICAgICBjZWxsIHRvIHBvaW50IHRvIGl0c2VsZiwgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIGN5Y2xlLiAqKVxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIGl2YXIgYmluZF9yZXN1bHQpIHRoZW4gaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgY2VsbFxuICBpblxuICBmdW4gfmJpbmRfcmVzdWx0IH5iaW5kX3JocyAtPlxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBiaW5kX3Jlc3VsdCBiaW5kX3JocylcbiAgICB0aGVuIChcbiAgICAgIGxldCBiaW5kX3Jlc3VsdCA9IHNxdWFzaCBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGluZGlyID0gSW5kaXIgYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBiaW5kX3Joc19jb250ZW50cyA9IHJlcG9pbnRfaW5kaXJzIH5pdmFyOmJpbmRfcmhzIH5pbmRpciB+YmluZF9yZXN1bHQgaW5cbiAgICAgICgqIHVwZGF0ZSBbYmluZF9yZXN1bHRdIHdpdGggdGhlIHVuaW9uIG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0gYW5kXG4gICAgICAgICBbYmluZF9yaHNdICopXG4gICAgICBtYXRjaCBiaW5kX3Jlc3VsdC5jZWxsLCBiaW5kX3Joc19jb250ZW50cyB3aXRoXG4gICAgICB8IEluZGlyIF8sIF8gfCBfLCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdIGFuZCBbcmVwb2ludF9pbmRpcnNdICopXG4gICAgICAoKiBbY29ubmVjdF0gaXMgb25seSB1c2VkIGluIGJpbmQsIHdob3NlIGl2YXIgaXMgb25seSBldmVyIGV4cG9ydGVkIGFzIGEgcmVhZC1vbmx5XG4gICAgICAgICBkZWZlcnJlZC4gIFRodXMsIFtiaW5kX3Jlc3VsdF0gbXVzdCBiZSBlbXB0eS4gKilcbiAgICAgIHwgRnVsbCBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBfLCBFbXB0eSAtPiAoKVxuICAgICAgfCBFbXB0eSwgXyAtPiBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzXG4gICAgICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gICAgICB8IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlcjEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgOiBfIEhhbmRsZXIudClcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuYWRkIGhhbmRsZXIyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT4gSGFuZGxlci5zcGxpY2UgaGFuZGxlcjEgaGFuZGxlcjIpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgSXZhciA9IEl2YXIwXG5tb2R1bGUgSGFuZGxlciA9IEl2YXIuSGFuZGxlclxuXG4oKiBEZWZlcnJlZHMgcHJlc2VudCBhIGNvdmFyaWFudCB2aWV3IG9mIGl2YXJzLiAgV2UgY291bGQgYWN0dWFsbHkgaW1wbGVtZW50IGRlZmVycmVkc1xuICAgdXNpbmcgYSByZWNvcmQgb2YgY2xvc3VyZXMsIGFzIGluIHRoZSBbZXNzZW5jZV9vZl9kZWZlcnJlZF0gcmVjb3JkIGJlbG93LCBmb3Igd2hpY2ggdGhlXG4gICBPQ2FtbCB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIGNvdmFyaWFuY2UuICBIb3dldmVyLCBkb2luZyBzbyB3b3VsZCBtYWtlIFtJdmFyLnJlYWRdIHZlcnlcbiAgIGNvc3RseSwgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIHRvIGFsbG9jYXRlIGxvdHMgb2YgY2xvc3VyZXMgYW5kIGEgcmVjb3JkLiAgSW5zdGVhZCBvZlxuICAgZG9pbmcgdGhpcywgd2UgbWFrZSBkZWZlcnJlZHMgYW4gYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIHdoaWNoIGNvbmNyZXRlbHkgaXMganVzdCB0aGVcbiAgIGl2YXIsIGFuZCB1c2UgW09iai5tYWdpY10gdG8gY29udmVydCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGEgZGVmZXJyZWQgYW5kIGl0cyBjb25jcmV0ZVxuICAgcmVwcmVzZW50YXRpb24gYXMgYW4gaXZhci4gIFRoaXMgW09iai5tYWdpY10gaXMgc2FmZSBiZWNhdXNlIHRoZSByZXByZXNlbnRhdGlvbiBpc1xuICAgYWx3YXlzIGp1c3QgYW4gaXZhciwgYW5kIHRoZSBjb3ZhcmlhbmNlIGZvbGxvd3MgZnJvbSB0aGUgZmFjdCB0aGF0IGFsbCB0aGUgZGVmZXJyZWRcbiAgIG9wZXJhdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhvc2UgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIHRoZVxuICAgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdLlxuXG4gICB7W1xuICAgICB0eXBlICgrJ2EsICdleGVjdXRpb25fY29udGV4dCkgZXNzZW5jZV9vZl9kZWZlcnJlZCA9XG4gICAgICAgeyBwZWVrICAgICAgICAgICAgICAgICAgICAgIDogdW5pdCAtPiAnYSBvcHRpb25cbiAgICAgICA7IGlzX2RldGVybWluZWQgICAgICAgICAgICAgOiB1bml0IC0+IGJvb2xcbiAgICAgICA7IHVwb24gICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICAgICAgIDsgdXBvbicgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiBVbnJlZ2lzdGVyLnRcbiAgICAgICA7IGluc3RhbGxfcmVtb3ZhYmxlX2hhbmRsZXIgOiAoJ2EsICdleGVjdXRpb25fY29udGV4dCkgUmF3X2hhbmRsZXIudCAtPiBVbnJlZ2lzdGVyLnQ7IH0gXX0gKilcblxudHlwZSArJ2EgdCA9ICdhIFR5cGVzLkRlZmVycmVkLnRcblxuKCogdGhlIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCBlcXVpdmFsZW50IHRvIGl2YXIgKilcblxubGV0IG9mX2l2YXIgKHR5cGUgYSkgKGl2YXIgOiBhIEl2YXIudCkgOiBhIHQgPSBPYmoubWFnaWMgaXZhclxubGV0IHRvX2l2YXIgKHR5cGUgYSkgdCA6IGEgSXZhci50ID0gT2JqLm1hZ2ljICh0IDogYSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgKHRvX2l2YXIgdClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBJdmFyLnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2l2YXIgdClcbmxldCBwZWVrIHQgPSBJdmFyLnBlZWsgKHRvX2l2YXIgdClcbmxldCByZXR1cm4gYSA9IG9mX2l2YXIgKEl2YXIuY3JlYXRlX2Z1bGwgYSlcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBJdmFyLmlzX2Z1bGwgKHRvX2l2YXIgdClcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgSXZhci52YWx1ZVxuICAgICh0b19pdmFyIHQpXG4gICAgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJEZWZlcnJlZC52YWx1ZV9leG4gY2FsbGVkIG9uIHVuZGV0ZXJtaW5lZCBkZWZlcnJlZFwiXG47O1xuXG5sZXQgdXBvbiB0IGYgPSBJdmFyLnVwb24gKHRvX2l2YXIgdCkgZlxuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZiByZXN1bHQ7XG4gIG9mX2l2YXIgcmVzdWx0XG47O1xuXG4oKiBkb24ndCB1c2UgW2NyZWF0ZV0gaGVyZSBhcyBpdCB3b3VsZCBhbGxvY2F0ZSBvbmUgbW9yZSBjbG9zdXJlICopXG5sZXQgYmluZCB0IH5mID1cbiAgbGV0IGJpbmRfcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmNvbm5lY3QgfmJpbmRfcmVzdWx0IH5iaW5kX3JoczoodG9faXZhciAoZiBhKSkpO1xuICBvZl9pdmFyIGJpbmRfcmVzdWx0XG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBmIGV4ZWN1dGlvbl9jb250ZXh0ID0gSXZhci5hZGRfaGFuZGxlciAodG9faXZhciB0KSBmIGV4ZWN1dGlvbl9jb250ZXh0XG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCBoID0gSXZhci5yZW1vdmVfaGFuZGxlciAodG9faXZhciB0KSBoXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMFxuaW5jbHVkZSBJdmFyMFxuXG5sZXQgcmVhZCA9IERlZmVycmVkLm9mX2l2YXJcbmxldCBmaWxsX2lmX2VtcHR5IHQgdiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmaWxsIHQgdlxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKE9wdGlvbilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gcGVlayB0XG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICAgICAgICB8IFNvbWUgYSAtPiBjcmVhdGVfZnVsbCBhXG4gICAgICA7O1xuICAgIGVuZClcbiIsIigqKiBbTW9uYWRfc2VxdWVuY2UuU10gaXMgYSBnZW5lcmljIGludGVyZmFjZSBzcGVjaWZ5aW5nIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhXG4gICAgY29udGFpbmVyIGFuZCBhIG1vbmFkLiAgSXQgaXMgc3BlY2lhbGl6ZWQgdG8gdGhlIFtEZWZlcnJlZF0gbW9uYWQgYW5kIHVzZWQgd2l0aFxuICAgIHZhcmlvdXMgY29udGFpbmVycyBpbiBtb2R1bGVzIFtEZWZlcnJlZC5BcnJheV0sIFtEZWZlcnJlZC5MaXN0XSwgW0RlZmVycmVkLlF1ZXVlXSwgYW5kXG4gICAgW0RlZmVycmVkLlNlcXVlbmNlXS4gIFRoZSBbTW9uYWRfc2VxdWVuY2UuaG93XSB0eXBlIHNwZWNpZmllcyB0aGUgcGFyYWxsZWxpc20gb2ZcbiAgICBjb250YWluZXIgaXRlcmF0b3JzLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSBob3cgPVxuICBbIGBQYXJhbGxlbCAoKiogbGlrZSBbYE1heF9jb25jdXJyZW50X2pvYnMgSW50Lm1heF92YWx1ZV0gKilcbiAgfCBgU2VxdWVudGlhbFxuICAoKiogW2BTZXF1ZW50aWFsXSBpcyBvZnRlbiBidXQgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyBbYE1heF9jb25jdXJyZW50X2pvYnMgMV1cbiAgICAgIChmb3IgZXhhbXBsZSwgdGhleSBkaWZmZXIgaW4gdGhlIFtPcl9lcnJvcl0gbW9uYWQpLiAqKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG9mIGludFxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgbW9uYWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gKGludCAqICdhKSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgYWxsIDogJ2EgbW9uYWQgdCAtPiAnYSB0IG1vbmFkXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgbW9uYWQgdCAtPiB1bml0IG1vbmFkXG5cbiAgKCoqIHsyIERlZmVycmVkIGl0ZXJhdG9yc31cblxuICAgICAgSW4gdGhlIGZvbGxvd2luZywgdGhlIGRlZmF1bHQgW2hvd10gaXMgW2BTZXF1ZW50aWFsXSAqKVxuXG4gIHZhbCBpbml0IDogP2hvdzpob3cgLT4gaW50IC0+IGY6KGludCAtPiAnYSBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgaXRlciA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgaXRlcmkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBtYXAgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBtYXBpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlciA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXAgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXAgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXBpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuZW5kXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5pbmNsdWRlIERlZmVycmVkMFxuXG4oKiBUbyBhdm9pZCBhIHNwYWNlIGxlYWssIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IFtuZXZlcl0gYWxsb2NhdGVzIGEgbmV3IGl2YXIgd2hlbmV2ZXIgaXQgaXNcbiAgIGNhbGxlZC4gIENvZGUgY2FuIGJpbmQgb24gW25ldmVyICgpXSwgc28gaWYgd2UgcmUtdXNlZCB0aGUgaXZhciwgd2UgY291bGQgZW5kbGVzc2x5XG4gICBhY2N1bXVsYXRlIGhhbmRsZXJzLiAqKVxubGV0IG5ldmVyICgpID0gSXZhci5yZWFkIChJdmFyLmNyZWF0ZSAoKSlcblxubW9kdWxlIE0gPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmVycmVkMFxuXG4gICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICgqIFdlIG1hbnVhbGx5IGlubGluZSBbRGVmZXJyZWQuY3JlYXRlXSBoZXJlLCBiZWNhdXNlIHRoZSBub24tZmxhbWJkYSBjb21waWxlciBpc24ndFxuICAgICAgICAgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBjbG9zdXJlIHRoYXQgd291bGQgYmUgYmUgY3JlYXRlZC4gKilcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmIGEpKTtcbiAgICAgIG9mX2l2YXIgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmluY2x1ZGUgTVxuXG4oKiBXZSByZWJpbmQgYWxsIHRoZSB2YXJpb3VzIFtyZXR1cm5dcyBiZWNhdXNlIHRoZSB1c2Ugb2YgdGhlIFtNb25hZC5NYWtlXSBmdW5jdG9yXG4gICBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIG5vdCBpbmxpbmUgW3JldHVybl0sIGFuZCBoZW5jZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvXG4gICBzdGF0aWNhbGx5IGFsbG9jYXRlIGNvbnN0YW50cyBsaWtlIFtyZXR1cm4gKCldLiAgQnkgcmViaW5kaW5nIFtyZXR1cm5dIGFzXG4gICBbRGVmZXJyZWQwLnJldHVybl0sIHRoZSBjb21waWxlciBjYW4gc2VlIHRoYXQ6XG5cbiAgIHtbXG4gICAgIHJldHVybiBhID0geyBJdmFyLkltbXV0YWJsZS4gY2VsbCA9IEZ1bGwgYSB9IF19XG5cbiAgIEFuZCBoZW5jZSwgaWYgW2FdIGlzIGNvbnN0YW50LCB0aGVuIHRoZSByZXR1cm4gaXMgY29uc3RhbnQgYW5kIGNhbiBiZSBzdGF0aWNhbGx5XG4gICBhbGxvY2F0ZWQuICBXaGVuIGNvbXBpbGluZyB3aXRoIGZsYW1iZGEsIHRoZSBjb21waWxlciBpbmxpbmVzIFtyZXR1cm5dIGFuZCB0aGlzIG1hbnVhbFxuICAgcmViaW5kaW5nIHdvdWxkIG5vdCBoZWxwOyB3ZSd2ZSBkZWNpZGVkIHRvIGRvIGl0IGFueXdheSBzbyB0aGF0IG5vbi1mbGFtYmRhIGJ1aWxkc1xuICAgZ2V0IHRoZSBvcHRpbWl6YXRpb24uICopXG5sZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIE0uTGV0X3N5bnRheFxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE0uTGV0X3N5bnRheC5MZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxuKCogV2Ugc2hhZG93IFthbGxdIG9uLXB1cnBvc2UgaGVyZSwgc2luY2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VzIGEgY2hhaW4gb2ZcbiAgIGJpbmRzIGFzIGxvbmcgYXMgdGhlIGxpc3QuICopXG5sZXQgYWxsID0gYE1ha2Vfc3VyZV90b19kZWZpbmVfYWxsX2Vsc2V3aGVyZVxubGV0IF8gPSBhbGxcbmxldCB1bml0ID0gcmV0dXJuICgpXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbiAgbGV0IHBweF9ib3RoID0gYm90aFxuZW5kXG5cbm9wZW4gSW5maXhcblxubGV0IGRvbid0X3dhaXRfZm9yIChfIDogdW5pdCB0KSA9ICgpXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9IFQgOiAnYiBEZWZlcnJlZDAudCAqICgnYiAtPiAnYSkgLT4gJ2EgdFxuXG4gIGxldCBtYXAgKFQgKHQsIGYxKSkgfmY6ZjIgPSBUICh0LCBmdW4geCAtPiBmMiAoZjEgeCkpXG5lbmRcblxubW9kdWxlIFVucmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhpcyByZXByZXNlbnRhdGlvbiBzYXZlcyAybiB3b3JkcyBmb3IgYSBsaXN0IG9mIG4gY2hvaWNlcy4gKilcbiAgdHlwZSB0ID1cbiAgICB8IE5pbCA6IHRcbiAgICB8IENvbnMgOiAnYSBEZWZlcnJlZDAudCAqICdhIERlZmVycmVkMC5IYW5kbGVyLnQgKiB0IC0+IHRcblxuICBsZXQgcmVjIHByb2Nlc3MgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh0LCBoYW5kbGVyLCByZXN0KSAtPlxuICAgICAgcmVtb3ZlX2hhbmRsZXIgdCBoYW5kbGVyO1xuICAgICAgcHJvY2VzcyByZXN0XG4gIDs7XG5lbmRcblxubGV0IGNob2ljZSB0IGYgPSBDaG9pY2UuVCAodCwgZilcblxubGV0IGVuYWJsZWQgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoZnVuICgpIC0+XG4gICAgICAgIExpc3QucmV2XG4gICAgICAgICAgKExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OltdIH5mOihmdW4gYWMgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICAgICAgICAgICBtYXRjaCBwZWVrIHQgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBhY1xuICAgICAgICAgICAgIHwgU29tZSB2IC0+IGYgdiA6OiBhYykpKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBfKSkgLT5cbiAgICBDb25zICh0LCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCByZWMgY2hvb3NlX3Jlc3VsdCBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ2hvaWNlLlQgKHQsIGYpIDo6IGNob2ljZXMgLT5cbiAgICAobWF0Y2ggcGVlayB0IHdpdGhcbiAgICAgfCBOb25lIC0+IGNob29zZV9yZXN1bHQgY2hvaWNlc1xuICAgICB8IFNvbWUgdiAtPiBmIHYpXG47O1xuXG5sZXQgY2hvb3NlIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHVucmVnaXN0ZXJzID0gcmVmIFVucmVnaXN0ZXIuTmlsIGluXG4gIGxldCByZWFkeSBfID1cbiAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgIHRoZW4gKFxuICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzICF1bnJlZ2lzdGVycztcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKGNob29zZV9yZXN1bHQgY2hvaWNlcykpXG4gIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIHVucmVnaXN0ZXJzXG4gIDo9IExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gYWNjIChDaG9pY2UuVCAodCwgXykpIC0+XG4gICAgQ29ucyAodCwgRGVmZXJyZWQwLmFkZF9oYW5kbGVyIHQgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQsIGFjYykpO1xuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgYW55X2YgdHMgZiA9IGNob29zZSAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IGNob2ljZSB0IGYpKVxubGV0IGFueSB0cyA9IGFueV9mIHRzIEZuLmlkXG5sZXQgYW55X3VuaXQgdHMgPSBhbnlfZiB0cyAoRm4uaWdub3JlIDogdW5pdCAtPiB1bml0KVxuXG5sZXQgZm9yXyBzdGFydCB+dG9fIH5kb18gPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+IHRvX1xuICAgIHRoZW4gcmV0dXJuICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQlYmluZCAoKSA9IGRvXyBpIGluXG4gICAgICBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3Agc3RhcnRcbjs7XG5cbmxldCByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIGNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICAgIGYgc3RhdGVcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBgUmVwZWF0IHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICAgIHwgYEZpbmlzaGVkIHJlc3VsdCAtPiBJdmFyLmZpbGwgZmluaXNoZWQgcmVzdWx0XG4gICAgaW5cbiAgICBsb29wIHN0YXRlKVxuOztcblxubGV0IGZvcmV2ZXIgc3RhdGUgZiA9XG4gIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSAoZnVuIHN0YXRlIC0+XG4gICAgbGV0JW1hcCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICBgUmVwZWF0IHN0YXRlKVxuICA+Pj4gbmV2ZXJfcmV0dXJuc1xuOztcblxudHlwZSBob3cgPSBNb25hZF9zZXF1ZW5jZS5ob3cgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIHR5cGUgTW9uYWRfc2VxdWVuY2UgPSBNb25hZF9zZXF1ZW5jZS5TIHdpdGggdHlwZSAnYSBtb25hZCA6PSAnYSB0XG5cblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgYiB4ID4+PiBmdW4gYiAtPiBsb29wIHhzIGJcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IHNlcW1hcCB0IH5mID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYnMgYSAtPiBmIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpID4+fCBMaXN0LnJldlxubGV0IGFsbCBkcyA9IHNlcW1hcCBkcyB+ZjpGbi5pZFxubGV0IGFsbF91bml0IGRzID0gZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZClcbmxldCBvayB4ID0geCA+PnwgZnVuIHggLT4gT2sgeFxuIiwib3BlbiBEZWZlcnJlZDFcbmluY2x1ZGUgSW5maXhcbmluY2x1ZGUgTGV0X3N5bnRheFxuXG5sZXQgY2hvaWNlID0gY2hvaWNlXG5sZXQgY2hvb3NlID0gY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBkb24ndF93YWl0X2ZvclxubGV0IG5ldmVyID0gbmV2ZXJcbmxldCByZXR1cm4gPSByZXR1cm5cbmxldCB1cG9uID0gdXBvblxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdSA9XG4gIHwgRW1wdHkgb2YgJ2EgSXZhci50XG4gIHwgRnVsbFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgdSByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IEZ1bGwgLT4gKClcbiAgICB8IEVtcHR5IGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHQgPSByZWYgKEVtcHR5IGl2YXIpIGluXG4gIHQsIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBfIC0+IHRydWVcbiAgfCBGdWxsIC0+IGZhbHNlXG47O1xuXG5sZXQgZmlsbCB0IGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgaSAtPlxuICAgIHQgOj0gRnVsbDtcbiAgICBJdmFyLmZpbGwgaSBhXG4gIHwgRnVsbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gZmlsbCBmdWxsIGl2YXJcIl1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgU3RyZWFtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID0gJ2EgVHlwZXMuU3RyZWFtLm5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGxldCByZWMgbG9vcCBkIGFjIDogU2V4cC50ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTGlzdCAoTGlzdC5yZXYgKFNleHAuQXRvbSBcIi4uLlwiIDo6IGFjKSlcbiAgICAgIHwgU29tZSBOaWwgLT4gTGlzdCAoTGlzdC5yZXYgYWMpXG4gICAgICB8IFNvbWUgKENvbnMgKGEsIHQpKSAtPiBsb29wIHQgKHNleHBfb2ZfYSBhIDo6IGFjKVxuICAgIGluXG4gICAgbG9vcCB0IFtdXG4gIDs7XG5cbiAgbGV0IG5leHQgdCA9IHRcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5UYWlsLnQgPVxuICB7ICgqIFtuZXh0XSBwb2ludHMgYXQgdGhlIHRhaWwgb2YgdGhlIHN0cmVhbSAqKSBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90IF8gdCA6IFNleHAudCA9XG4gIEF0b20gKGlmIEl2YXIuaXNfZW1wdHkgdC5uZXh0IHRoZW4gXCI8b3BlbiB0YWlsPlwiIGVsc2UgXCI8Y2xvc2VkIHRhaWw+XCIpXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0ID0gSXZhci5jcmVhdGUgKCkgfVxubGV0IGNvbGxlY3QgdCA9IEl2YXIucmVhZCAobmV4dCB0KVxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIChuZXh0IHQpXG5cbmxldCBmaWxsX2V4biB0IHYgPVxuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwic3RyZWFtIGlzIGNsb3NlZFwiXSBlbHNlIEl2YXIuZmlsbCAobmV4dCB0KSB2XG47O1xuXG5sZXQgY2xvc2VfZXhuIHQgPSBmaWxsX2V4biB0IE5pbFxubGV0IGNsb3NlX2lmX29wZW4gdCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gSXZhci5maWxsIChuZXh0IHQpIE5pbFxuXG5sZXQgZXh0ZW5kIHQgdiA9XG4gIGxldCBuZXh0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZmlsbF9leG4gdCAoQ29ucyAodiwgSXZhci5yZWFkIG5leHQpKTtcbiAgdC5uZXh0IDwtIG5leHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IFRhaWwuU3RyZWFtXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5pbmNsdWRlIE1vbml0b3JcblxudHlwZSBtb25pdG9yID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+aGVyZTppZ25vcmVcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5mb3J3YXJkaW5nOmlnbm9yZVxuICAgICAgfm5leHRfZXJyb3I6KGNoZWNrIChmdW4gbmV4dF9lcnJvciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgbmV4dF9lcnJvcikpKVxuICAgICAgfmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfnRhaWxzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfmhhc19zZWVuX2Vycm9yOmlnbm9yZSlcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcbmxldCBjdXJyZW50ICgpID0gRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSlcblxudHlwZSAnYSB3aXRoX29wdGlvbmFsX21vbml0b3JfbmFtZSA9XG4gID9oZXJlOlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgLT4gP2luZm86SW5mby50IC0+ID9uYW1lOnN0cmluZyAtPiAnYVxuXG5sZXQgZGV0YWNoIHQgPSB0LmZvcndhcmRpbmcgPC0gRGV0YWNoZWRcblxudHlwZSBoYW5kbGVyX3N0YXRlID1cbiAgfCBVbmluaXRpYWxpemVkXG4gIHwgUnVubmluZyBvZiAoRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy5FbHQudFxuICB8IFRlcm1pbmF0ZWRcblxubGV0IGRldGFjaF9hbmRfaXRlcl9lcnJvcnMgdCB+ZiA9XG4gIGRldGFjaCB0O1xuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCBoYW5kbGVyX3N0YXRlX3JlZiA9IHJlZiBVbmluaXRpYWxpemVkIGluXG4gIGxldCBydW5fZiBleG4gPVxuICAgIG1hdGNoICFoYW5kbGVyX3N0YXRlX3JlZiB3aXRoXG4gICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVGVybWluYXRlZCAtPiAoKVxuICAgIHwgUnVubmluZyBiYWdfZWx0IC0+XG4gICAgICAodHJ5IGYgZXhuIHdpdGhcbiAgICAgICB8IGlubmVyX2V4biAtPlxuICAgICAgICAgaGFuZGxlcl9zdGF0ZV9yZWYgOj0gVGVybWluYXRlZDtcbiAgICAgICAgIEJhZy5yZW1vdmUgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyBiYWdfZWx0O1xuICAgICAgICAgKCogW3J1bl9mXSBhbHdheXMgcnVucyBpbiBbZXhlY3V0aW9uX2NvbnRleHRdLiAgSGVuY2UsIFtyYWlzZSBpbm5lcl9leG5dIHNlbmRzXG4gICAgICAgICAgICBbaW5uZXJfZXhuXSB0byBbZXhlY3V0aW9uX2NvbnRleHRdJ3MgbW9uaXRvciwgaS5lLiB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgICAgICAgW2RldGFjaF9hbmRfaXRlcl9lcnJvcnNdIHdhcyBjYWxsZWQuICopXG4gICAgICAgICByYWlzZSBpbm5lcl9leG4pXG4gIGluXG4gIGhhbmRsZXJfc3RhdGVfcmVmXG4gIDo9IFJ1bm5pbmcgKEJhZy5hZGQgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyAoZXhlY3V0aW9uX2NvbnRleHQsIHJ1bl9mKSlcbjs7XG5cbmxldCBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gdCA9XG4gIGRldGFjaCB0O1xuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIHQudGFpbHNfZm9yX2FsbF9lcnJvcnMgPC0gdGFpbCA6OiB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzO1xuICBUYWlsLmNvbGxlY3QgdGFpbFxuOztcblxubGV0IGdldF9uZXh0X2Vycm9yIHQgPSBJdmFyLnJlYWQgdC5uZXh0X2Vycm9yXG5cbmxldCBkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIHQgPVxuICBkZXRhY2ggdDtcbiAgZ2V0X25leHRfZXJyb3IgdFxuOztcblxubGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSAoKSA9XG4gIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gIGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSAoU29tZSBwYXJlbnQpXG47O1xuXG5tb2R1bGUgTW9uaXRvcl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4biA6IGV4blxuICAgIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICB9XG5cbiAgbGV0IGJhY2t0cmFjZSB0ID0gdC5iYWNrdHJhY2VcbiAgbGV0IGV4dHJhY3RfZXhuIHQgPSB0LmV4blxuXG4gIGxldCBiYWNrdHJhY2VfdHJ1bmNhdGlvbl9oZXVyaXN0aWNzID1cbiAgICBsZXQgam9iX3F1ZXVlID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJqb2JfcXVldWUubWxcXFwiXCIgaW5cbiAgICBsZXQgZGVmZXJyZWQwID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJkZWZlcnJlZDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZGVmZXJyZWQxID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJkZWZlcnJlZDEubWxcXFwiXCIgaW5cbiAgICBsZXQgbW9uaXRvciA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwibW9uaXRvci5tbFxcXCJcIiBpblxuICAgIGxldCBpbXBvcnQwID0gXCJSYWlzZWQgYXQgZmlsZSBcXFwiaW1wb3J0MC5tbFxcXCJcIiBpblxuICAgIGxldCBlcnJvciA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZXJyb3IubWxcXFwiXCIgaW5cbiAgICBmdW4gdHJhY2VzIC0+XG4gICAgICAoKiAuLi90ZXN0L3Rlc3RfdHJ5X3dpdGhfZXJyb3JfZGlzcGxheS5tbCBtYWtlcyBzdXJlIHRoaXMgc3RheXMgdXAtdG8tZGF0ZS4gKilcbiAgICAgIGxldCB0cmFjZXMgPVxuICAgICAgICBtYXRjaCB0cmFjZXMgd2l0aFxuICAgICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6aW1wb3J0MCAtPlxuICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmVycm9yIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHQzIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQzIH5wcmVmaXg6ZXJyb3IgLT4gcmVzdFxuICAgICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgIHwgXyAtPiB0cmFjZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBMaXN0LnJldiB0cmFjZXMgd2l0aFxuICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdDIgOjogcmVzdFxuICAgICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDBcbiAgICAgICAgICAgICAgICAoKiBiaW5kICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMVxuICAgICAgICAgICAgICAgICgqIG1hcCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDptb25pdG9yXG4gICAgICAgICAgICAgICgqIHRyeV93aXRoICopIC0+IExpc3QucmV2IHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICB8IF8gLT4gdHJhY2VzXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB7IGV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciB9ID1cbiAgICBsZXQgbW9uaXRvciA9XG4gICAgICBsZXQgbmFtZSA9XG4gICAgICAgIG1hdGNoIEluZm8udG9fc3RyaW5nX2h1bSBtb25pdG9yLm5hbWUgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgICB8IHMgLT4gU29tZSBzXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIG1hdGNoIG1vbml0b3IuaGVyZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBoZXJlIC0+XG4gICAgICAgICAgKCogV2UgZGlzcGxheSB0aGUgZnVsbCBmaWxlbmFtZSwgd2hlcmVhcyBiYWNrdHJhY2VzIG9ubHkgaGF2ZSBiYXNlbmFtZXMsIGJ1dFxuICAgICAgICAgICAgIHBlcmhhcHMgdGhhdCdzIHdoYXQgc2hvdWxkIGNoYW5nZS4gKilcbiAgICAgICAgICBsZXQgY29sdW1uID0gaGVyZS5wb3NfY251bSAtIGhlcmUucG9zX2JvbCBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICgqIFdlIGhpZGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgd2hlbiBbYW1fcnVubmluZ190ZXN0XSB0byBtYWtlIHRlc3Qgb3V0cHV0XG4gICAgICAgICAgICAgICBtb3JlIHJvYnVzdC4gIFRoaXMgc2F2ZXMgcGVvcGxlIG1hbnVhbGx5IGhpZGluZyB0aGUgbnVtYmVycyBvciBldmVuIHdvcnNlLFxuICAgICAgICAgICAgICAgbGVhdmluZyB0aGVtIGluIHRlc3Qgb3V0cHV0LiAgSGlkaW5nIGluIHRlc3QgaXMgZGlmZmVyZW50IGNob2ljZSBmb3JcbiAgICAgICAgICAgICAgIGJlaGF2aW9yIHRoYW4gb3VyIGNvZGViYXNlIG1ha2VzIGZvciBbQmFja3RyYWNlLmVsaWRlXSwgd2hpY2ggaGFzIGRlZmF1bHRcbiAgICAgICAgICAgICAgIFtmYWxzZV0sIGFuZCB0aHVzIHNob3dzIGJhY2t0cmFjZXMgaW4gdGVzdC4gIFRoZXJlIGFyZSBhIGNvdXBsZSByZWFzb25zIGZvclxuICAgICAgICAgICAgICAgdGhpcyBkaWZmZXJlbnQgY2hvaWNlLiAgRmlyc3QsIGV4cGVjdC10ZXN0IG1hY2hpbmVyeSBoYXMgY2hlY2sgdG8gcHJldmVudFxuICAgICAgICAgICAgICAgYmFja3RyYWNlcyBmcm9tIGFwcGVhcmluZyBpbiB0ZXN0IG91dHB1dC4gIEl0IGhhcyBubyBzdWNoIGNoZWNrcyBmb3IgbGluZVxuICAgICAgICAgICAgICAgYW5kIGNvbHVtbiBudW1iZXJzLiAgU2Vjb25kLCB3aGVuIHRoZXJlIGlzIGEgcmVhbCBlcnJvciBhbmQgeW91IHdhbnQgdG8gc2VlXG4gICAgICAgICAgICAgICB0aGUgYmFja3RyYWNlLCB0aHJvd2luZyBhd2F5IHRoZSB3aG9sZSBiYWNrdHJhY2UgbG9zZXMgYSBsb3Qgb2YgcG90ZW50aWFsbHlcbiAgICAgICAgICAgICAgIHVzZWZ1bCBpbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBoYXJkIHRvIHJlY292ZXIuICBXaGVyZWFzIHdlJ3JlIGp1c3RcbiAgICAgICAgICAgICAgIHRocm93aW5nIGEgd2F5IGEgbGluZSBudW1iZXIgYW5kIGNvbHVtbiwgd2hpY2ggYXJlIGEgbWlub3IgY29udmVuaWVuY2VcbiAgICAgICAgICAgICAgIGdpdmVuIHRoYXQgdGhlIGZpbGVuYW1lIGhhcyBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbi4gKilcbiAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgICAgICAgICB0aGVuIHNwcmludGYgXCJmaWxlICVTLCBsaW5lIExJTkUsIGNoYXJhY3RlcnMgQzEtQzJcIiBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJmaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgICAgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICAgICAgaGVyZS5wb3NfbG51bVxuICAgICAgICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgICAgICAgY29sdW1uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHBvcywgbmFtZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBwb3MsIE5vbmUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgYXQgJXNcIiBwb3MgXVxuICAgICAgfCBOb25lLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXNcIiBuYW1lIF1cbiAgICAgIHwgU29tZSBwb3MsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlcyBhdCAlc1wiIG5hbWUgcG9zIF1cbiAgICBpblxuICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgYmFja3RyYWNlIC0+IEJhY2t0cmFjZS50b19zdHJpbmdfbGlzdCBiYWNrdHJhY2VcbiAgICAgIGluXG4gICAgICBiYWNrdHJhY2VfdHJ1bmNhdGlvbl9oZXVyaXN0aWNzIGJhY2t0cmFjZSBAIG1vbml0b3JcbiAgICBpblxuICAgIGxldCBsaXN0X2lmX25vdF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgXyA6OiBfIGFzIGwgLT4gU29tZSBsXG4gICAgaW5cbiAgICBbJXNleHBcbiAgICAgIChleG4gOiBleG4pXG4gICAgLCAobGlzdF9pZl9ub3RfZW1wdHkgYmFja3RyYWNlIDogKHN0cmluZyBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAsIGBiYWNrdHJhY2VfaGlzdG9yeVxuICAgICAgICAobGlzdF9pZl9ub3RfZW1wdHkgYmFja3RyYWNlX2hpc3RvcnkgOiAoQmFja3RyYWNlLnQgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICA7O1xuZW5kXG5cbmV4Y2VwdGlvbiBNb25pdG9yX2V4biBvZiBNb25pdG9yX2V4bi50XG5cbmxldCAoKSA9XG4gIFNleHBsaWIuQ29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNb25pdG9yX2V4bl0gKGZ1bmN0aW9uXG4gICAgfCBNb25pdG9yX2V4biB0IC0+IFslc2V4cCBcIm1vbml0b3IubWwuRXJyb3JcIiA6OiAodCA6IE1vbml0b3JfZXhuLnQpXVxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgZXh0cmFjdF9leG4gZXhuID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBNb25pdG9yX2V4biBlcnJvciAtPiBlcnJvci5leG5cbiAgfCBleG4gLT4gZXhuXG47O1xuXG5sZXQgc2VuZF9leG4gdCA/KGJhY2t0cmFjZSA9IGBHZXQpIGV4biA9XG4gIGxldCBleG4gPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBNb25pdG9yX2V4biBfIC0+IGV4blxuICAgIHwgXyAtPlxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgICAgIHwgYEdldCAtPiBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50X2Zvcl9leG4gZXhuXG4gICAgICAgIHwgYFRoaXMgYiAtPiBTb21lIGJcbiAgICAgIGluXG4gICAgICBsZXQgYmFja3RyYWNlX2hpc3RvcnkgPSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkuYmFja3RyYWNlX2hpc3RvcnkgaW5cbiAgICAgIE1vbml0b3JfZXhuIHsgTW9uaXRvcl9leG4uZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yID0gdCB9XG4gIGluXG4gIGlmIERlYnVnLm1vbml0b3Jfc2VuZF9leG4gdGhlbiBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgdC5oYXNfc2Vlbl9lcnJvciA8LSB0cnVlO1xuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIEl2YXIuZmlsbCB0Lm5leHRfZXJyb3IgZXhuO1xuICAgIHQubmV4dF9lcnJvciA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgLT5cbiAgICAgIGlmIERlYnVnLm1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHRoZW5cbiAgICAgICAgRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4biBmb3VuZCBsaXN0ZW5pbmcgbW9uaXRvclwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gICAgICBCYWcuaXRlciB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gKGV4ZWN1dGlvbl9jb250ZXh0LCBmKSAtPlxuICAgICAgICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBleG4pO1xuICAgICAgTGlzdC5pdGVyIHQudGFpbHNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biB0YWlsIC0+IFRhaWwuZXh0ZW5kIHRhaWwgZXhuKVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBsb29wIHBhcmVudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPlxuICAgICAgKCogRG8gbm90IGNoYW5nZSB0aGlzIGJyYW5jaCB0byBwcmludCB0aGUgZXhjZXB0aW9uIG9yIHRvIGV4aXQuICBIYXZpbmcgdGhlXG4gICAgICAgICBzY2hlZHVsZXIgcmFpc2UgYW4gdW5jYXVnaHQgZXhjZXB0aW9uIGlzIHRoZSBuZWNlc3NhcnkgYmVoYXZpb3IgZm9yIHByb2dyYW1zXG4gICAgICAgICB0aGF0IGNhbGwgW1NjaGVkdWxlci5nb10gYW5kIHdhbnQgdG8gaGFuZGxlIGl0LiAqKVxuICAgICAgU2NoZWR1bGVyLihnb3RfdW5jYXVnaHRfZXhuICh0ICgpKSkgZXhuICghQXN5bmNfa2VybmVsX2NvbmZpZy50YXNrX2lkICgpKVxuICBpblxuICBsb29wIHRcbjs7XG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyID0gc3RydWN0XG4gIGxldCB3aXRoaW5fY29udGV4dCBjb250ZXh0IGYgPVxuICAgIFNjaGVkdWxlci4od2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGNvbnRleHQgfmY6KGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGYgd2l0aFxuICAgICAgfCBPayB4IC0+IE9rIHhcbiAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgIHNlbmRfZXhuIChFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIGNvbnRleHQpIGV4biB+YmFja3RyYWNlOmBHZXQ7XG4gICAgICAgIEVycm9yICgpKVxuICA7O1xuXG4gIHR5cGUgJ2Egd2l0aF9vcHRpb25zID0gP21vbml0b3I6dCAtPiA/cHJpb3JpdHk6UHJpb3JpdHkudCAtPiAnYVxuXG4gIGxldCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBsZXQgdG1wX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpID9tb25pdG9yID9wcmlvcml0eVxuICAgIGluXG4gICAgd2l0aGluX2NvbnRleHQgdG1wX2NvbnRleHQgZlxuICA7O1xuXG4gIGxldCB3aXRoaW4nID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBPayBkIC0+IGRcbiAgOztcblxuICBsZXQgd2l0aGluX3YgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gTm9uZVxuICAgIHwgT2sgeCAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgd2l0aGluID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+ICgpXG4gICAgfCBPayAoKSAtPiAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgeCA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgU2NoZWR1bGVyLmVucXVldWVcbiAgICAgIHNjaGVkdWxlclxuICAgICAgKEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlXG4gICAgICAgICAoU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyKVxuICAgICAgICAgP21vbml0b3JcbiAgICAgICAgID9wcmlvcml0eSlcbiAgICAgIHdvcmtcbiAgICAgIHhcbiAgOztcblxuICBsZXQgc2NoZWR1bGUgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgPSBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgKClcblxuICBsZXQgc2NoZWR1bGUnID1cbiAgICAoKiBGb3IgcGVyZm9ybWFuY2UsIHdlIHVzZSBbc2NoZWR1bGVfd2l0aF9kYXRhXSB3aXRoIGEgY2xvc2VkIGZ1bmN0aW9uLCBhbmQgaW5saW5lXG4gICAgICAgW0RlZmVycmVkLmNyZWF0ZV0uICopXG4gICAgbGV0IHVwb25fd29ya19maWxsX2kgKHdvcmssIGkpID0gdXBvbiAod29yayAoKSkgKGZ1biBhIC0+IEl2YXIuZmlsbCBpIGEpIGluXG4gICAgZnVuID9tb25pdG9yID9wcmlvcml0eSB3b3JrIC0+XG4gICAgICBsZXQgaSA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHVwb25fd29ya19maWxsX2kgKHdvcmssIGkpO1xuICAgICAgSXZhci5yZWFkIGlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBsZXQgY2FsbF9hbmRfZmlsbCAoZiwgYSwgaSkgPSB1cG9uIChmIGEpIChmdW4gciAtPiBJdmFyLmZpbGwgaSByKSBpblxuICAgIHN0YWdlIChmdW4gYSAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaSAtPlxuICAgICAgICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgY2FsbF9hbmRfZmlsbCAoZiwgYSwgaSkpKVxuICA7O1xuZW5kXG5cbm9wZW4gRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgc3RyZWFtX2l0ZXIgc3RyZWFtIH5mID1cbiAgbGV0IHJlYyBsb29wIHN0cmVhbSA9XG4gICAgU3RyZWFtLm5leHQgc3RyZWFtXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHYsIHN0cmVhbSkgLT5cbiAgICAgIGxvb3Agc3RyZWFtO1xuICAgICAgZiB2XG4gIGluXG4gIGxvb3Agc3RyZWFtXG47O1xuXG4oKiBBbiBbJ2EgT2tfYW5kX2V4bnMudF0gcmVwcmVzZW50cyB0aGUgb3V0cHV0IG9mIGEgY29tcHV0YXRpb24gcnVubmluZyBpbiBhIGRldGFjaGVkXG4gICBtb25pdG9yLiAqKVxubW9kdWxlIE9rX2FuZF9leG5zID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBvayA6ICdhIERlZmVycmVkLnRcbiAgICA7IGV4bnMgOiBleG4gU3RyZWFtLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW4gZiA9XG4gICAgKCogV2UgY2FsbCBbY3JlYXRlX3dpdGhfcGFyZW50IE5vbmVdIGJlY2F1c2UgW21vbml0b3JdIGRvZXMgbm90IG5lZWQgYSBwYXJlbnQuICBJdFxuICAgICAgIGRvZXMgbm90IGJlY2F1c2Ugd2UgY2FsbCBbZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3JdIGFuZCBkZWFsIHdpdGggdGhlXG4gICAgICAgZXJyb3JzIGV4cGxpY2l0bHksIHRodXMgW3NlbmRfZXhuXSB3b3VsZCBuZXZlciBwcm9wYWdhdGUgYW4gZXhuIHBhc3QgW21vbml0b3JdLiAqKVxuICAgIGxldCBtb25pdG9yID0gY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIE5vbmUgaW5cbiAgICBsZXQgZXhucyA9IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yIGluXG4gICAgbGV0IG9rID1cbiAgICAgIG1hdGNoIHJ1biB3aXRoXG4gICAgICB8IGBOb3cgLT4gd2l0aGluJyB+bW9uaXRvciBmXG4gICAgICB8IGBTY2hlZHVsZSAtPiBzY2hlZHVsZScgfm1vbml0b3IgZlxuICAgIGluXG4gICAgeyBvazsgZXhucyB9XG4gIDs7XG5lbmRcblxubGV0IGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgIHJlc3VsdFxuICAgICAgZXhuc1xuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0XG4gID1cbiAgaWYgSXZhcl9maWxsZXIuaXNfZW1wdHkgcmVzdWx0X2ZpbGxlclxuICB0aGVuIChcbiAgICBJdmFyX2ZpbGxlci5maWxsIHJlc3VsdF9maWxsZXIgcmVzdWx0O1xuICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGhfbG9nX2V4biA6IChleG4gLT4gdW5pdCkgcmVmID1cbiAgICByZWYgKGZ1biBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiZmFpbGVkIHRvIHNldCBbTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4bl1cIiAoZXhuIDogRXhuLnQpXSlcbiAgOztcbmVuZFxuXG5sZXQgbWFrZV9oYW5kbGVfZXhuIHJlc3QgPVxuICBtYXRjaCByZXN0IHdpdGhcbiAgfCBgTG9nIC0+XG4gICAgKCogV2UgYXJlIGNhcmVmdWwgdG8gbm90IGNsb3NlIG92ZXIgY3VycmVudCBjb250ZXh0LCB3aGljaCBpcyBub3QgbmVlZGVkLiAqKVxuICAgICFFeHBlcnQudHJ5X3dpdGhfbG9nX2V4blxuICB8IGBSYWlzZSAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiBzZW5kX2V4biBwYXJlbnQgZXhuID9iYWNrdHJhY2U6Tm9uZVxuICB8IGBDYWxsIGYgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gd2l0aGluIH5tb25pdG9yOnBhcmVudCAoZnVuICgpIC0+IGYgZXhuKVxuOztcblxubGV0IHRyeV93aXRoXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwiXCIpXG4gICAgICA/ZXh0cmFjdF9leG46KGRvX2V4dHJhY3RfZXhuID0gZmFsc2UpXG4gICAgICA/KHJ1biA9IGBOb3cpXG4gICAgICA/KHJlc3QgPSBgUmFpc2UpXG4gICAgICBmXG4gID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyB+bmFtZSB+cnVuIGYgaW5cbiAgbGV0IGhhbmRsZV9leG4gPSBtYWtlX2hhbmRsZV9leG4gcmVzdCBpblxuICBsZXQgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMgPSBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZV9leG4gaW5cbiAgKCogV2UgcnVuIFt3aXRoaW4nIH5tb25pdG9yOm1haW5dIHRvIGF2b2lkIGhvbGRpbmcgb24gdG8gcmVmZXJlbmNlcyB0byB0aGUgZXZhbHVhdGlvblxuICAgICBjb250ZXh0IGluIHdoaWNoIFt0cnlfd2l0aF0gd2FzIGNhbGxlZC4gIFRoaXMgYXZvaWRzIGEgc3BhY2UgbGVhayB3aGVuIGEgY2hhaW4gb2ZcbiAgICAgW3RyeV93aXRoXSdzIGFyZSBydW4gZWFjaCBuZXN0ZWQgd2l0aGluIHRoZSBwcmV2aW91cyBvbmUuICBXaXRob3V0IHRoZSBbd2l0aGluJ10sIHRoZVxuICAgICBlcnJvciBoYW5kbGluZyBmb3IgdGhlIGlubmVybW9zdCBbdHJ5X3dpdGhdIHdvdWxkIGtlZXAgYWxpdmUgdGhlIGVudGlyZSBjaGFpbi4gKilcbiAgd2l0aGluJyB+bW9uaXRvcjptYWluIChmdW4gKCkgLT5cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIG9rXG4gICAgdGhlbiAoXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucztcbiAgICAgIHJldHVybiAoT2sgKERlZmVycmVkLnZhbHVlX2V4biBvaykpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdF9maWxsZXIsIHJlc3VsdCA9IEl2YXJfZmlsbGVyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiBvayAoZnVuIHJlcyAtPlxuICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgIChPayByZXMpXG4gICAgICAgICAgZXhuc1xuICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICB1cG9uIChTdHJlYW0ubmV4dCBleG5zKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgQ29ucyAoZXhuLCBleG5zKSAtPlxuICAgICAgICAgIGxldCBleG4gPSBpZiBkb19leHRyYWN0X2V4biB0aGVuIGV4dHJhY3RfZXhuIGV4biBlbHNlIGV4biBpblxuICAgICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAgIChFcnJvciBleG4pXG4gICAgICAgICAgICBleG5zXG4gICAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgcmVzdWx0KSlcbjs7XG5cbmxldCB0cnlfd2l0aF9vcl9lcnJvciA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcInRyeV93aXRoX29yX2Vycm9yXCIpID9leHRyYWN0X2V4biA/cmVzdCBmID1cbiAgdHJ5X3dpdGggZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gfnJ1bjpgTm93ID9yZXN0ID4+fCBPcl9lcnJvci5vZl9leG5fcmVzdWx0XG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbl9vcl9lcnJvclxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcInRyeV93aXRoX2pvaW5fb3JfZXJyb3JcIilcbiAgICAgID9leHRyYWN0X2V4blxuICAgICAgP3Jlc3RcbiAgICAgIGZcbiAgPVxuICB0cnlfd2l0aF9vcl9lcnJvciBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biA/cmVzdCA+PnwgT3JfZXJyb3Iuam9pblxuOztcblxubGV0IHByb3RlY3QgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJNb25pdG9yLnByb3RlY3RcIikgP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgZiB+ZmluYWxseSA9XG4gIGxldCViaW5kIHIgPSB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP2hlcmUgP2luZm8gP3J1biA/cmVzdCB+bmFtZSBmIGluXG4gIGxldCVtYXAgZnIgPVxuICAgIHRyeV93aXRoXG4gICAgICB+ZXh0cmFjdF9leG46ZmFsc2VcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgfnJ1bjpgU2NoZWR1bGUgKCogY29uc2lkZXIgW35ydW46YE5vd10gKilcbiAgICAgID9yZXN0XG4gICAgICB+bmFtZTpcImZpbmFsbHlcIlxuICAgICAgZmluYWxseVxuICBpblxuICBtYXRjaCByLCBmciB3aXRoXG4gIHwgRXJyb3IgZXhuLCBFcnJvciBmaW5hbGx5X2V4biAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQXN5bmMgZmluYWxseVwiIChleG4gOiBleG4pIChmaW5hbGx5X2V4biA6IGV4bildXG4gIHwgRXJyb3IgZSwgT2sgKCkgfCBPayBfLCBFcnJvciBlIC0+IHJhaXNlIGVcbiAgfCBPayByLCBPayAoKSAtPiByXG47O1xuXG5sZXQgaGFuZGxlX2Vycm9ycyA/aGVyZSA/aW5mbyA/bmFtZSBmIGhhbmRsZXIgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW46YE5vdyBmIGluXG4gIHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlcjtcbiAgb2tcbjs7XG5cbmxldCBjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZiA9XG4gIGxldCB7IE9rX2FuZF9leG5zLmV4bnM7IF8gfSA9XG4gICAgT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICBmICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICBleG5zXG47O1xuXG5sZXQgY2F0Y2ggP2hlcmUgP2luZm8gP25hbWUgZiA9XG4gIG1hdGNoJW1hcCBTdHJlYW0ubmV4dCAoY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYpIHdpdGhcbiAgfCBDb25zICh4LCBfKSAtPiB4XG4gIHwgTmlsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiTW9uaXRvci5jYXRjaCBnb3QgdW5leHBlY3RlZCBlbXB0eSBzdHJlYW1cIl1cbjs7XG5cbmxldCBjYXRjaF9lcnJvciA/aGVyZSA/aW5mbyA/bmFtZSBmID0gY2F0Y2ggP2hlcmUgP2luZm8gP25hbWUgZiA+PnwgRXJyb3Iub2ZfZXhuXG5cbm1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgbGV0IHBhcmVudCB0ID1cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPiBOb25lXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IFNvbWUgcGFyZW50XG4gICAgfCBEZXRhY2hlZCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGRlcHRoIHQgPVxuICAgIGxldCByZWMgbG9vcCB0IG4gPVxuICAgICAgbWF0Y2ggcGFyZW50IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IG5cbiAgICAgIHwgU29tZSB0IC0+IGxvb3AgdCAobiArIDEpXG4gICAgaW5cbiAgICBsb29wIHQgMFxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbmluY2x1ZGUgVGFpbC5TdHJlYW1cblxubGV0IGZpcnN0X2V4biB0ID1cbiAgbWF0Y2glbWFwIG5leHQgdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU3RyZWFtLmZpcnN0IG9mIGVtcHR5IHN0cmVhbVwiXVxuICB8IENvbnMgKHgsIF8pIC0+IHhcbjs7XG5cbmxldCBmb2xkJyB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICB1cG9uIChuZXh0IHQpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgICAgfCBDb25zICh2LCB0KSAtPiB1cG9uIChmIGIgdikgKGxvb3AgdCkpXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbigqIFtmb2xkXSBpcyBpbXBsZW1lbnRlZCB0byBhdm9pZCBwZXItc3RyZWFtLWVsZW1lbnQgZGVmZXJyZWQgb3ZlcmhlYWQgaW4gdGhlIGNhc2Ugd2hlblxuICAgbXVsdGlwbGUgc3RyZWFtIGVsZW1lbnRzIGFyZSBhdmFpbGFibGUgc2ltdWx0YW5lb3VzbHkuICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB1cG9uIChuZXh0IHQpIChmdW4gbmV4dCAtPiBsb29wX25leHQgbmV4dCBiKVxuICAgICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYlxuICAgIGFuZCBsb29wX25leHQgbmV4dCBiID1cbiAgICAgIG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IENvbnMgKHYsIHQpIC0+IGxvb3AgdCAoZiBiIHYpXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxubGV0IGl0ZXInIHQgfmYgPSBmb2xkJyB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiBmIHYpXG5cbmxldCBjbG9zZWQgdCA9XG4gIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICB8IFNvbWUgTmlsIC0+IHJldHVybiAoKVxuICB8IF8gLT4gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGl0ZXInIHQgfmY6KGZ1biBhIC0+XG4gICAgICAgZiBhO1xuICAgICAgIHJldHVybiAoKSkpXG47O1xuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gICgqIGNvbGxlY3QgYmVmb3JlIGNhbGxpbmcgW2ZdLCBpbiBjYXNlIFtmXSBpbW1lZGlhdGVseSBleHRlbmRzLiAqKVxuICBsZXQgdCA9IFRhaWwuY29sbGVjdCB0YWlsIGluXG4gIGYgdGFpbDtcbiAgdFxuOztcblxubGV0IHVuZm9sZCBiIH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIHVwb24gKGYgYikgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgIHwgU29tZSAoYSwgYikgLT5cbiAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIGE7XG4gICAgICAgICAgbG9vcCBiKVxuICAgIGluXG4gICAgbG9vcCBiKVxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxubGV0IHRvX2xpc3QgcyA9IGZvbGQnIHMgfmluaXQ6W10gfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChhIDo6IGIpKSA+PnwgTGlzdC5yZXZcbmxldCBjb3B5X3RvX3RhaWwgdCB0YWlsID0gaXRlcicgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChUYWlsLmV4dGVuZCB0YWlsIGEpKVxuXG5sZXQgYXBwZW5kIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MSB0YWlsKSAoZnVuICgpIC0+XG4gICAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDIgdGFpbCkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSkpXG47O1xuXG5sZXQgY29uY2F0IHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHQgLT4gY29weV90b190YWlsIHQgdGFpbCkpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+ICgpXG4gICAgICAgICB8IHRydWUgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX2RlcHJlY2F0ZWQgdCB+ZiA9IGZpbHRlcicgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlsdGVyX21hcCcgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgdiAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2RlcHJlY2F0ZWQgdCB+ZiA9IGZpbHRlcl9tYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IG1hcCcgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT4gZiB2ID4+fCBUYWlsLmV4dGVuZCB0YWlsKSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpcnN0X24gcyBuID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBzIG4gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgZWxzZVxuICAgICAgICB1cG9uIChuZXh0IHMpIChmdW5jdGlvblxuICAgICAgICAgIHwgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgcyBuKVxuOztcblxubGV0IGF2YWlsYWJsZV9ub3cgdCA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIE5pbCAtPiBMaXN0LnJldiBhYywgdFxuICAgIHwgU29tZSAoQ29ucyAoeCwgdCkpIC0+IGxvb3AgdCAoeCA6OiBhYylcbiAgaW5cbiAgbG9vcCB0IFtdXG47O1xuXG5sZXQgc3BsaXQgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpID8oZiA9IGZ1biBfIC0+IGBDb250aW51ZSkgdCA9XG4gIGxldCByZWFzb25fZm9yX3N0b3BwaW5nID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHByZWZpeCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCBmaW5pc2ggdiA9XG4gICAgVGFpbC5jbG9zZV9leG4gcHJlZml4O1xuICAgIEl2YXIuZmlsbCByZWFzb25fZm9yX3N0b3BwaW5nIHZcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGNob29zZSBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3BwZWQpOyBjaG9pY2UgKG5leHQgdCkgKGZ1biBvIC0+IGBOZXh0IG8pIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wcGVkIC0+IGZpbmlzaCAoYFN0b3BwZWQgdClcbiAgICB8IGBOZXh0IG8gLT5cbiAgICAgIChtYXRjaCBvIHdpdGhcbiAgICAgICB8IE5pbCAtPiBmaW5pc2ggYEVuZF9vZl9zdHJlYW1cbiAgICAgICB8IENvbnMgKGEsIHQpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICAgICB8IGBDb250aW51ZSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgcHJlZml4IGE7XG4gICAgICAgICAgICBsb29wIHRcbiAgICAgICAgICB8IGBGb3VuZCBiIC0+IGZpbmlzaCAoYEZvdW5kIChiLCB0KSkpKVxuICBpblxuICBsb29wIHQ7XG4gIFRhaWwuY29sbGVjdCBwcmVmaXgsIEl2YXIucmVhZCByZWFzb25fZm9yX3N0b3BwaW5nXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IF8sIGZvdW5kID0gc3BsaXQgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gYEZvdW5kIGEgZWxzZSBgQ29udGludWUpIGluXG4gIG1hdGNoJW1hcCBmb3VuZCB3aXRoXG4gIHwgYFN0b3BwZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCAoYEVuZF9vZl9zdHJlYW0gfCBgRm91bmQgXykgYXMgeCAtPiB4XG47O1xuXG5sZXQgdW5ncm91cCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gbCAtPlxuICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgICAgICByZXR1cm4gKCkpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlIHRzID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgICgqIFRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRoZSBvdXRlciBzdHJlYW0gYW5kIGFsbCBvZlxuICAgICAgIHRoZSBpbm5lciBzdHJlYW1zIGhhdmUgYmVlbiBjbG9zZWQuICBLZWVwIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBvcGVuXG4gICAgICAgc3RyZWFtcyBhbmQgY2xvc2UgdGhlIGludGVybGVhdmVkIHN0cmVhbSB3aGVuIHRoYXQgY291bnQgYmVjb21lc1xuICAgICAgIHplcm8uICopXG4gICAgbGV0IG51bV9vcGVuID0gcmVmIDEgaW5cbiAgICAoKiAxIGZvciB0aGUgb3V0ZXIgc3RyZWFtIHRoYXQgaXMgb3BlbiAqKVxuICAgIGxldCBjbG9zZSAoKSA9XG4gICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gLSAxO1xuICAgICAgaWYgIW51bV9vcGVuID0gMCB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICBpblxuICAgIGxldCBvdXRlcl9jbG9zZWQgPVxuICAgICAgaXRlcicgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiArIDE7XG4gICAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0IHRhaWwpIGNsb3NlO1xuICAgICAgICByZXR1cm4gKCkpXG4gICAgaW5cbiAgICB1cG9uIG91dGVyX2Nsb3NlZCBjbG9zZSlcbjs7XG5cbmxldCB0YWtlX3VudGlsIHQgZCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICB1cG9uXG4gICAgICAgIChjaG9vc2UgWyBjaG9pY2UgZCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChuZXh0IHQpIChmdW4geiAtPiBgTmV4dCB6KSBdKVxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBTdG9wIHwgYE5leHQgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IGBOZXh0IChDb25zICh4LCB0KSkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdClcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHknIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICAgIH5yZXN0OmBSYWlzZVxuICAgICAgICAgIChmdW4gKCkgLT4gZiB4KVxuICAgICAgICA+Pj4gZnVuIHogLT5cbiAgICAgICAgbG9vcCB0O1xuICAgICAgICAobWF0Y2ggeiB3aXRoXG4gICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICB8IEVycm9yIGUgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlKVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAoKiBXZSBpbW1lZGlhdGVseSBjYWxsIFtsb29wXSwgdGh1cyBtYWtpbmcgdGhlIGl0ZXIgZHVyYWJsZS4gIEFueSBleGNlcHRpb25zXG4gICAgICAgICAgIHJhaXNlZCBieSBbZl0gd2lsbCBub3QgcHJldmVudCB0aGUgbG9vcCBmcm9tIGNvbnRpbnVpbmcsIGFuZCB3aWxsIGdvIHRvIHRoZVxuICAgICAgICAgICBtb25pdG9yIG9mIHdob21ldmVyIGNhbGxlZCBbaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmRdLiAqKVxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIGYgeFxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseSB0IH5mID0gZG9uJ3Rfd2FpdF9mb3IgKGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYpXG5cbmxldCBvZl9mdW4gZiA9XG4gIHVuZm9sZCAoKSB+ZjooZnVuICgpIC0+XG4gICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgIFNvbWUgKGEsICgpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gKCdhLCAncGVybWlzc2lvbikgVHlwZXMuQnZhci50XG5cbnR5cGUgJ2EgcmVwciA9ICdhIFR5cGVzLkJ2YXIucmVwciA9XG4gIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSByZXByIFslc2V4cF9vZjogXyByZXByXSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgcmVwciBmIGluXG4gICAgRmllbGRzX29mX3JlcHIuaXRlclxuICAgICAgfmhhc19hbnlfd2FpdGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gaGFzX2FueV93YWl0ZXJzIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaGFzX2hhbmRsZXJzIHJlcHIuaXZhciB0aGVuIGFzc2VydCBoYXNfYW55X3dhaXRlcnMpKVxuICAgICAgfml2YXI6XG4gICAgICAgIChjaGVjayAoZnVuIGl2YXIgLT5cbiAgICAgICAgICAgSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgaXZhcjtcbiAgICAgICAgICAgYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSkpXG47O1xuXG5sZXQgc2V4cF9vZl90IF8gXyB0ID1cbiAgbGV0IHsgaGFzX2FueV93YWl0ZXJzOyBpdmFyID0gXyB9ID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgKCogV2UgZG9uJ3Qgc2hvdyBbaXZhcl0gYmVjYXVzZSBpdCdzIGFsd2F5cyBlbXB0eS4gKilcbiAgWyVtZXNzYWdlIChoYXNfYW55X3dhaXRlcnMgOiBib29sKV1cbjs7XG5cbmluY2x1ZGUgU2NoZWR1bGVyMS5CdmFyXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBpZiByZXByLmhhc19hbnlfd2FpdGVyc1xuICB0aGVuIChcbiAgICByZXByLmhhc19hbnlfd2FpdGVycyA8LSBmYWxzZTtcbiAgICBJdmFyLmZpbGwgcmVwci5pdmFyIGE7XG4gICAgcmVwci5pdmFyIDwtIEl2YXIuY3JlYXRlICgpKVxuOztcblxubGV0IHdhaXQgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gdHJ1ZTtcbiAgSXZhci5yZWFkIHJlcHIuaXZhclxuOztcblxubGV0IGhhc19hbnlfd2FpdGVycyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVyc1xuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbmxldCBkZWJ1ZyA9IERlYnVnLmNsb2NrXG5cbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCAoID4+PiApID0gdXBvblxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuVDFcblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCI8d2FsbF9jbG9jaz5cIl1cbiAgICBlbHNlXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgKGlzX3dhbGxfY2xvY2sgOiBib29sKVxuICAgICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgICAgKGV2ZW50cyA6IF8gVGltaW5nX3doZWVsLnQpXVxuICA7O1xuZW5kXG5cbm9wZW4gVDFcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlci53YWxsX2Nsb2NrXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbmxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5sZXQgaWQgdCA9IHQuaWRcblxubW9kdWxlIElkID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLklkXG5cbmxldCBub3cgdCA9XG4gIGlmIHQuaXNfd2FsbF9jbG9ja1xuICB0aGVuXG4gICAgKCogRm9yIHRoZSB3YWxsLWNsb2NrIHRpbWUtc291cmNlLCB3ZSB1c2UgW1RpbWVfbnMubm93ICgpXSByYXRoZXIgdGhhblxuICAgICAgIFtUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXS4gIFRoZSBsYXR0ZXIgaXMgb25seSB1cGRhdGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoXG4gICAgICAgY3ljbGUuICBUaGVyZSBjYW4gYmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gd2hlbiBwZW9wbGUgZG8gbG9uZ1xuICAgICAgIHJ1bm5pbmcgY29tcHV0YXRpb25zIG9yIG1peCBibG9ja2luZyBjb2RlIHdpdGggYXN5bmMuICBBbmQgaHVtYW5zIGV4cGVjdCB0aGF0XG4gICAgICAgd2FsbC1jbG9jayB0aW1lIGlzIGJhc2VkIG9uIFtUaW1lLm5vd10sIG5vdCBzb21lIGFydGlmYWN0IG9mIGFzeW5jXG4gICAgICAgaW1wbGVtZW50YXRpb24uICopXG4gICAgVGltZV9ucy5ub3cgKClcbiAgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbmxldCBhZHZhbmNlID0gYWR2YW5jZV9kaXJlY3RseVxubGV0IGFkdmFuY2VfYnkgPSBhZHZhbmNlX2RpcmVjdGx5X2J5XG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IChTY2hlZHVsZXIueWllbGQgdC5zY2hlZHVsZXIpXG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAoKiBzbyB0aGF0IGFsYXJtcyBzY2hlZHVsZWQgYXQgb3IgYmVmb3JlIFt0b19dIGZpcmUgKilcbiAgICBydW5fcXVldWVkX2FsYXJtcyAoKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBtYXRjaCBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCAtPlxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzptaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWw7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBxdWV1ZWRfYWxhcm1zX3JhblxuICAgICAgICB0aGVuIHdhbGtfYWxhcm1zICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCViaW5kICgpID0gcXVldWVkX2FsYXJtc19yYW4gaW5cbiAgICAgICAgICB3YWxrX2FsYXJtcyAoKSkpXG4gIGluXG4gIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIG5leHRfYWxhcm1fZmlyZXNfYXQgdCB3aXRoXG4gICAgfCBOb25lIC0+IGZpbmlzaCAoKVxuICAgIHwgU29tZSBuZXh0X2FsYXJtX2ZpcmVzX2F0IC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpO1xuICAgICAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgICAgIGxldCBxdWV1ZWRfYWxhcm1zX3JhbiA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgcXVldWVkX2FsYXJtc19yYW5cbiAgICAgICAgdGhlbiB3YWxrX2FsYXJtcyAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQlYmluZCAoKSA9IHF1ZXVlZF9hbGFybXNfcmFuIGluXG4gICAgICAgICAgd2Fsa19hbGFybXMgKCkpKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5ID93YWl0X2ZvciB0IGJ5ID1cbiAgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuOztcblxubGV0IHNwYW5fdG9fdGltZSB0IHNwYW4gPSBUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhblxuXG5sZXQgc2NoZWR1bGVfam9iIHQgfmF0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBhbGFybSA9XG4gICAgVGltaW5nX3doZWVsLmFkZFxuICAgICAgdC5ldmVudHNcbiAgICAgIH5hdFxuICAgICAgKEpvYl9vcl9ldmVudC5vZl9qb2IgKFNjaGVkdWxlci5jcmVhdGVfam9iIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSkpXG4gIGluXG4gIChtYXRjaCB0LnNjaGVkdWxlci5ldmVudF9hZGRlZF9ob29rIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGYgLT4gZiBhdCk7XG4gIGFsYXJtXG47O1xuXG5sZXQgcnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBpblxuICBpZiBUaW1lX25zLiggPiApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gIHRoZW4gc2NoZWR1bGVfam9iIHQgfmF0OnRpbWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGVsc2UgKFxuICAgIFNjaGVkdWxlci5lbnF1ZXVlIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBBbGFybS5udWxsICgpKVxuOztcblxubGV0IHJ1bl9hdCB0IHRpbWUgZiBhID0gaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA6IF8gQWxhcm0udClcbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGYgYSA9IHJ1bl9hdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKSBmIGFcblxubGV0IGF0ID1cbiAgbGV0IGZpbGwgcmVzdWx0ID0gSXZhci5maWxsIHJlc3VsdCAoKSBpblxuICBmdW4gdCB0aW1lIC0+XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZmlsbCByZXN1bHQgOiBfIEFsYXJtLnQpO1xuICAgICAgSXZhci5yZWFkIHJlc3VsdClcbjs7XG5cbmxldCBhZnRlciB0IHNwYW4gPSBhdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKVxuXG5sZXQgcmVtb3ZlX2FsYXJtIHQgYWxhcm0gOiB1bml0ID1cbiAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIHQuZXZlbnRzIGFsYXJtIGluXG4gIChsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgIHwgSm9iLCBqb2IgLT4gU2NoZWR1bGVyLmZyZWVfam9iIHQuc2NoZWR1bGVyIGpvYlxuICAgfCBFdmVudCwgXyAtPlxuICAgICAoKiBUaGlzIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgW2FsYXJtXSBvbmx5IGV2ZXIgY29tZXMgZnJvbSBbRXZlbnQuYWxhcm1dIHdoaWNoIG9ubHlcbiAgICAgICAgZXZlciBnZXRzIHBvcHVsYXRlZCBieSBhIGNhbGwgdG8gW3NjaGVkdWxlX2pvYl0uICopXG4gICAgIGFzc2VydCBmYWxzZSk7XG4gIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgYWxhcm1cbjs7XG5cbmxldCByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzIGFsYXJtIHRoZW4gcmVtb3ZlX2FsYXJtIHQgYWxhcm1cbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBtb2R1bGUgRmlyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgOyBtdXRhYmxlIGZpcmUgOiB1bml0IC0+IHVuaXRcbiAgICA7ICgqIEFzIGxvbmcgYXMgW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB3ZSBoYXZlIG5vdCB5ZXQgY29tbWl0dGVkIHRvIHdoZXRoZXIgdGhlIGV2ZW50XG4gICAgICAgICB3aWxsIGhhcHBlbiBvciBiZSBhYm9ydGVkLiAgV2hlbiBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHRoZSBhbGFybSBtYXkgb3IgbWF5IG5vdFxuICAgICAgICAgYmUgaW4gdGhlIHRpbWluZyB3aGVlbCAtLSBpZiBpdCBpc24ndCwgdGhlbiB0aGVyZSdzIGEgam9iIGluIEFzeW5jJ3Mgam9iIHF1ZXVlXG4gICAgICAgICB0aGF0IHdpbGwgZmlyZSB0aGUgZXZlbnQsIHVubGVzcyBpdCBpcyBhYm9ydGVkIGJlZm9yZSB0aGF0IGpvYiBjYW4gcnVuLiAqKVxuICAgICAgZmlyZWQgOiAoJ2EsICdoKSBGaXJlZC50IEl2YXIudFxuICAgIDsgKCogW251bV9maXJlc190b19za2lwXSBpcyB1c2VkIHRvIHJlc2NoZWR1bGUgZXZlbnRzIHRoYXQgaGF2ZSBmaXJlZCBhbmQgZW50ZXJlZCB0aGVcbiAgICAgICAgIEFzeW5jIGpvYiBxdWV1ZSwgYnV0IGhhdmUgbm90IHlldCBydW4uICBUaG9zZSBqb2JzIG9ubHkgcnVuIGlmIFtudW1fZmlyZXNfdG9fc2tpcFxuICAgICAgICAgPSAwXSwgYW5kIG90aGVyd2lzZSBqdXN0IGRlY3JlbWVudCBpdC4gIFNvLCB0byByZXNjaGVkdWxlIGFuIGV2ZW50IGluIHN1Y2ggYVxuICAgICAgICAgc3RhdGUsIHdlIGluY3JlbWVudCBbbnVtX2ZpcmVzX3RvX3NraXBdIGFuZCBhZGQgYSBuZXcgYWxhcm0gdG8gdGhlIHRpbWluZ1xuICAgICAgICAgd2hlZWwuICopXG4gICAgICBtdXRhYmxlIG51bV9maXJlc190b19za2lwIDogaW50XG4gICAgOyAoKiBbc2NoZWR1bGVkX2F0XSBpcyB0aGUgdGltZSBhdCB3aGljaCBbdF0gaGFzIG1vc3QgcmVjZW50bHkgYmVlbiBzY2hlZHVsZWQgdG8gZmlyZS5cbiAgICAgICAgIFdoaWxlIFt0LmFsYXJtXSBpcyBzdGlsbCBpbiB0aGUgdGltaW5nIHdoZWVsLCB0aGlzIGlzIHRoZSBzYW1lIGFzIFtBbGFybS5hdFxuICAgICAgICAgdC5hbGFybV0uICopXG4gICAgICBtdXRhYmxlIHNjaGVkdWxlZF9hdCA6IFRpbWVfbnMudFxuICAgIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZmlyZWQgdCA9IEl2YXIucmVhZCB0LmZpcmVkXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfaCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuZmlyZWRcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAobm90IChUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybSkpXG4gICAgICAgICAgICAgZWxzZSBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChKb2Jfb3JfZXZlbnQuaXNfam9iIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKSkpXG4gICAgICAgIH5maXJlOmlnbm9yZVxuICAgICAgICB+ZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkIDogXyBGaXJlZC50IEl2YXIudCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgZmlyZWQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gaW52YXJpYW50X2EgYVxuICAgICAgICAgICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gaW52YXJpYW50X2ggaCkpXG4gICAgICAgIH5udW1fZmlyZXNfdG9fc2tpcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fZmlyZXNfdG9fc2tpcCAtPiBhc3NlcnQgKG51bV9maXJlc190b19za2lwID49IDApKSlcbiAgICAgICAgfnNjaGVkdWxlZF9hdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzY2hlZHVsZWRfYXQgLT5cbiAgICAgICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgICAgICBzY2hlZHVsZWRfYXRcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIHQuYWxhcm0pKSlcbiAgICAgICAgfnRpbWVfc291cmNlOmlnbm9yZSlcbiAgOztcblxuICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZV9ucy50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHN0YXR1cyB0IDogXyBTdGF0dXMudCA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuZmlyZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU2NoZWR1bGVkX2F0IHQuc2NoZWR1bGVkX2F0XG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IEFib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gSGFwcGVuZWQgaFxuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LmFib3J0XCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEl2YXIuZmlsbCB0LmZpcmVkIChBYm9ydGVkIGEpO1xuICAgICAgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0LnRpbWVfc291cmNlIHQuYWxhcm07XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCBhYm9ydF9leG4gdCBhID1cbiAgICBtYXRjaCBhYm9ydCB0IGEgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBoYXBwZW5lZFwiXVxuICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgYWJvcnRlZFwiXVxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQpXG4gIGxldCBzY2hlZHVsZSB0ID0gdC5hbGFybSA8LSBydW5fYXRfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB0LnNjaGVkdWxlZF9hdCB0LmZpcmUgKClcblxuICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgYXQgOiBfIFJlc2NoZWR1bGVfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucmVzY2hlZHVsZV9hdFwiICh0LCBhdCkgWyVzZXhwX29mOiAoXywgXykgdCAqIFRpbWVfbnMudF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBpc19pbl90aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtIGluXG4gICAgICBsZXQgYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSA9XG4gICAgICAgIFRpbWVfbnMuKCA+ICkgYXQgKFRpbWluZ193aGVlbC5ub3cgZXZlbnRzKVxuICAgICAgaW5cbiAgICAgIHQuc2NoZWR1bGVkX2F0IDwtIGF0O1xuICAgICAgKG1hdGNoIGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUsIGlzX2luX3RpbWluZ193aGVlbCB3aXRoXG4gICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gKClcbiAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICB0LnRpbWVfc291cmNlLmhhbmRsZV9maXJlZCB0LmFsYXJtO1xuICAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSBldmVudHMgdC5hbGFybVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCArIDE7XG4gICAgICAgICBzY2hlZHVsZSB0XG4gICAgICAgfCB0cnVlLCB0cnVlIC0+IFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIGV2ZW50cyB0LmFsYXJtIH5hdCk7XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCAoc3Bhbl90b190aW1lIHQudGltZV9zb3VyY2Ugc3BhbilcblxuICBsZXQgcnVuX2F0IHRpbWVfc291cmNlIHNjaGVkdWxlZF9hdCBmIHogPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucnVuX2F0XCIgc2NoZWR1bGVkX2F0IFslc2V4cF9vZjogVGltZV9ucy50XTtcbiAgICBsZXQgdCA9XG4gICAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgICAgOyBmaXJlID0gaWdub3JlICgqIHNldCBiZWxvdyAqKVxuICAgICAgOyBmaXJlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICA7IG51bV9maXJlc190b19za2lwID0gMFxuICAgICAgOyBzY2hlZHVsZWRfYXRcbiAgICAgIDsgdGltZV9zb3VyY2UgPSByZWFkX29ubHkgdGltZV9zb3VyY2VcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBmaXJlICgpID1cbiAgICAgICgqIFtmaXJlXSBydW5zIGluIGFuIEFzeW5jIGpvYi4gIFRoZSBldmVudCBtYXkgaGF2ZSBiZWVuIGFib3J0ZWQgYWZ0ZXIgdGhlIGpvYlxuICAgICAgICAgd2FzIGVucXVldWVkLCBzbyBbZmlyZV0gbXVzdCBjaGVjayBbZmlyZWRdLiAqKVxuICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHQubnVtX2ZpcmVzX3RvX3NraXAgPiAwXG4gICAgICAgIHRoZW4gdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwIC0gMVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZiB6IGluXG4gICAgICAgICAgKCogW2Ygel0gbWF5IGhhdmUgYWJvcnRlZCB0aGUgZXZlbnQsIHNvIHdlIG11c3QgY2hlY2sgW2ZpcmVkXSBhZ2Fpbi4gKilcbiAgICAgICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWQgdGhlbiBJdmFyLmZpbGwgdC5maXJlZCAoSGFwcGVuZWQgcmVzdWx0KSlcbiAgICBpblxuICAgIHQuZmlyZSA8LSBmaXJlO1xuICAgIHNjaGVkdWxlIHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBhdCB0aW1lX3NvdXJjZSB0aW1lID0gcnVuX2F0IHRpbWVfc291cmNlIHRpbWUgaWdub3JlICgpXG5cbiAgbGV0IHJ1bl9hZnRlciB0aW1lX3NvdXJjZSBzcGFuIGYgYSA9XG4gICAgcnVuX2F0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbikgZiBhXG4gIDs7XG5cbiAgbGV0IGFmdGVyIHRpbWVfc291cmNlIHNwYW4gPSBhdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pXG5lbmRcblxubGV0IGF0X3RpbWVzID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSB0IG5leHRfdGltZSA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBjaG9vc2VcbiAgICAgIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAoYXQgdCAobmV4dF90aW1lICgpKSkgKGZ1biAoKSAtPiBgVGljaykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3AgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIHwgYFRpY2sgLT5cbiAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgKCk7XG4gICAgICBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgdCBjb21wdXRlX3NwYW4gPVxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT4gVGltZV9ucy5hZnRlciAobm93IHQpIChjb21wdXRlX3NwYW4gKCkpKVxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgdCBpbnRlcnZhbCA9XG4gIGxldCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gbm93IHRcbiAgaW5cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+XG4gICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlOnN0YXJ0IH5hZnRlcjoobm93IHQpIH5pbnRlcnZhbCAoKSlcbjs7XG5cbm1vZHVsZSBDb250aW51ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW1tZWRpYXRlbHlcbiAgICB8IEFmdGVyIG9mIFRpbWVfbnMuU3Bhbi50XG4gICAgfCBOZXh0X211bHRpcGxlIG9mIFRpbWVfbnMudCAqIFRpbWVfbnMuU3Bhbi50XG5cbiAgbGV0IGltbWVkaWF0ZWx5ID0gSW1tZWRpYXRlbHlcblxuICBsZXQgYXQgdCB0aW1lX3NvdXJjZSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbW1lZGlhdGVseSAtPiBUaW1pbmdfd2hlZWwubm93IHRpbWVfc291cmNlLmV2ZW50c1xuICAgIHwgQWZ0ZXIgc3BhbiAtPiBzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhblxuICAgIHwgTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpIC0+XG4gICAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyOihub3cgdGltZV9zb3VyY2UpIH5pbnRlcnZhbCAoKVxuICA7O1xuZW5kXG5cbmxldCBydW5fcmVwZWF0ZWRseVxuICAgICAgPyhzdGFydCA9IHJldHVybiAoKSlcbiAgICAgID9zdG9wXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gdHJ1ZSlcbiAgICAgID8oZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKSlcbiAgICAgIHRcbiAgICAgIH5mXG4gICAgICB+Y29udGludWVcbiAgPVxuICBzdGFydFxuICA+Pj4gZnVuICgpIC0+XG4gIGxldCBhbGFybSA9IHJlZiAoQWxhcm0ubnVsbCAoKSkgaW5cbiAgbGV0IHN0b3AgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgU29tZSBzdG9wIC0+XG4gICAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPlxuICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzICFhbGFybVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfYWxhcm0gdCAhYWxhcm07XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpKSk7XG4gICAgICBzdG9wXG4gIGluXG4gICgqIFtydW5fZl0sIFtjb250aW51ZV9mXSwgYW5kIFtjb250aW51ZV90cnlfd2l0aF0gYXJlIGRlZmluZWQgc28gdGhhdCB3ZSBhbGxvY2F0ZSB0aGVpclxuICAgICBjbG9zdXJlcyBvbmNlLCBub3Qgb25jZSBwZXIgaXRlcmF0aW9uLiAqKVxuICBsZXQgcmVjIHJ1bl9mICgpID1cbiAgICAoKiBCZWZvcmUgY2FsbGluZyBbZl0sIHdlIHN5bmNocm9ub3VzbHkgY2hlY2sgd2hldGhlciBbc3RvcF0gaXMgZGV0ZXJtaW5lZC4gKilcbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgaWYgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIE1vbml0b3IudHJ5X3dpdGggZiB+cnVuOmBOb3cgfnJlc3Q6YFJhaXNlID4+PiBjb250aW51ZV90cnlfd2l0aFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGQgPSBmICgpIGluXG4gICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBjb250aW51ZV9mICgpIGVsc2UgZCA+Pj4gY29udGludWVfZilcbiAgYW5kIGNvbnRpbnVlX2YgKCkgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBhbGFybSA6PSBydW5fYXRfaW50ZXJuYWwgdCAoQ29udGludWUuYXQgY29udGludWUgdCkgcnVuX2YgKClcbiAgYW5kIGNvbnRpbnVlX3RyeV93aXRoIG9yX2Vycm9yID1cbiAgICAobWF0Y2ggb3JfZXJyb3Igd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgZXJyb3IgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlcnJvcik7XG4gICAgY29udGludWVfZiAoKVxuICBpblxuICBydW5fZiAoKVxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB0IHNwYW4gZiA9XG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2UuZXZlcnkgZ290IG5vbnBvc2l0aXZlIHNwYW5cIiAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gIHJ1bl9yZXBlYXRlZGx5IHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgfmYgfmNvbnRpbnVlOihBZnRlciBzcGFuKVxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBzcGFuIGYgPVxuICBldmVyeScgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZDpOb25lIHNwYW4gKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgbGV0IG5vdyA9IG5vdyB0IGluXG4gIGxldCBiYXNlLCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgTm9uZSAtPiBub3csIE5vbmVcbiAgICB8IFNvbWUgc3RhcnQgLT5cbiAgICAgICggc3RhcnRcbiAgICAgICwgU29tZVxuICAgICAgICAgIChhdFxuICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAoVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICB+YmFzZTpzdGFydFxuICAgICAgICAgICAgICAgIH5hZnRlcjpub3dcbiAgICAgICAgICAgICAgICB+Y2FuX2VxdWFsX2FmdGVyOnRydWVcbiAgICAgICAgICAgICAgICB+aW50ZXJ2YWwpKSApXG4gIGluXG4gIHJ1bl9yZXBlYXRlZGx5XG4gICAgdFxuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgfmZcbiAgICB+Y29udGludWU6KE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgdCBzcGFuIGQgPVxuICBsZXQgdGltZW91dCA9IEV2ZW50LmFmdGVyIHQgc3BhbiBpblxuICBjaG9vc2VcbiAgICAoKiBUaGUgY29kZSBiZWxvdyBkb2VzIGV4aGF1c3RpdmUgY2FzZSBhbmFseXNpcyBpbiBib3RoIFtjaG9pY2Vdcy4gIEJlY2F1c2UgW3RpbWVvdXRdXG4gICAgICAgZG9lcyBub3QgZXNjYXBlIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uLCBjZXJ0YWluIGNhc2VzIHNob3VsZCBiZSBpbXBvc3NpYmxlLCBhbmRcbiAgICAgICBhcmUgbWFya2VkIGFzIHN1Y2ggd2l0aCBleGNlcHRpb25zLiAgV2UgZG8gbm90IGV4cGVjdCB0aG9zZSBleGNlcHRpb25zIHRvIG9jY3VyLFxuICAgICAgIGJ1dCBpZiB0aGV5IGRvLCBpdCBsaWtlbHkgaW5kaWNhdGVzIGEgYnVnIGluIFtjaG9vc2VdIHJhdGhlciB0aGFuXG4gICAgICAgW3dpdGhfdGltZW91dF0uICopXG4gICAgWyBjaG9pY2UgZCAoZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIEV2ZW50LmFib3J0IHRpbWVvdXQgKCkgd2l0aFxuICAgICAgICAgKCogW1ByZXZpb3VzbHlfaGFwcGVuZWRdIGNhbiBvY2N1ciBpZiBib3RoIFtkXSBhbmQgW3dhaXRdIGJlY29tZSBkZXRlcm1pbmVkIGF0XG4gICAgICAgICAgICB0aGUgc2FtZSB0aW1lLCBlLmcuIFt3aXRoX3RpbWVvdXQgKHNlYyAwLikgKHJldHVybiAoKSldLiAqKVxuICAgICAgICAgfCBPayB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gKClcbiAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1Zzogc2hvdWxkIG9ubHkgYWJvcnQgb25jZVwiXSk7XG4gICAgICAgIGBSZXN1bHQgdilcbiAgICA7IGNob2ljZSAoRXZlbnQuZmlyZWQgdGltZW91dCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gYFRpbWVvdXRcbiAgICAgICAgfCBBYm9ydGVkICgpIC0+XG4gICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1ZzogYm90aCBjb21wbGV0ZWQgYW5kIHRpbWVkIG91dFwiXSlcbiAgICBdXG47O1xuXG5sZXQgZHVyYXRpb25fb2YgdCBmID1cbiAgbGV0IHN0YXJ0ID0gbm93IHQgaW5cbiAgbGV0JW1hcCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBvZl9zeW5jaHJvbm91cyB0ID0gdFxubGV0IHRvX3N5bmNocm9ub3VzIHQgPSB0XG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgXyB0ID1cbiAgfCBTdGFjayA6ICdhIFN0YWNrLnQgLT4gJ2EgdFxuICB8IENvdW50ZXIgOiB7IG11dGFibGUgbGVuZ3RoIDogaW50IH0gLT4gdW5pdCB0XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID0gU3RhY2sgKFN0YWNrLm9mX2xpc3QgbGlzdClcblxubGV0IGNyZWF0ZV9jb3VudGVyIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlcl0gZ290IG5lZ2F0aXZlIGxlbmd0aFwiIChsZW5ndGggOiBpbnQpXTtcbiAgQ291bnRlciB7IGxlbmd0aCB9XG47O1xuXG5sZXQgbGVuZ3RoICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2subGVuZ3RoIHNcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGhcbjs7XG5cbmxldCBjbGVhciAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmNsZWFyIHNcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gMFxuOztcblxubGV0IHB1c2ggKHR5cGUgYSkgKHQgOiBhIHQpIGEgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnB1c2ggcyBhXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIHIubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9leG4gKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wb3BfZXhuIHNcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBpZiByLmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLnBvcF9leG5dIG9mIGVtcHR5IHN0YWNrXCJdO1xuICAgIHIubGVuZ3RoIDwtIHIubGVuZ3RoIC0gMVxuOztcblxubGV0IGl0ZXIgKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGEgLT4gdW5pdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLml0ZXIgcyB+ZlxuICB8IENvdW50ZXIgciAtPlxuICAgIGZvciBfID0gMSB0byByLmxlbmd0aCBkb1xuICAgICAgZiAoKVxuICAgIGRvbmVcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbnR5cGUgJ2Egb3V0Y29tZSA9XG4gIFsgYE9rIG9mICdhXG4gIHwgYEFib3J0ZWRcbiAgfCBgUmFpc2VkIG9mIGV4blxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgSW50ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2IgRGVmZXJyZWQudCkgLT4gJ2EgdCAqICdiIG91dGNvbWUgRGVmZXJyZWQudFxuXG4gICgqIEV2ZXJ5IGludGVybmFsIGpvYiB3aWxsIGV2ZW50dWFsbHkgYmUgZWl0aGVyIFtydW5dIG9yIFthYm9ydF1lZCwgYnV0IG5vdCBib3RoLiAqKVxuXG4gIHZhbCBydW4gOiAnYSB0IC0+ICdhIC0+IFsgYE9rIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgdmFsIGFib3J0IDogXyB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiBbIGBBYm9ydCB8IGBTdGFydCBvZiAnYSBdIEl2YXIudFxuICAgIDsgb3V0Y29tZSA6IFsgYE9rIHwgYEFib3J0ZWQgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHdvcmsgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCViaW5kIEl2YXIucmVhZCBzdGFydCB3aXRoXG4gICAgICB8IGBBYm9ydCAtPiByZXR1cm4gYEFib3J0ZWRcbiAgICAgIHwgYFN0YXJ0IGEgLT5cbiAgICAgICAgKG1hdGNoJW1hcFxuICAgICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgICAoZnVuICgpIC0+IHdvcmsgYSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgT2sgYSAtPiBgT2sgYVxuICAgICAgICAgfCBFcnJvciBleG4gLT4gYFJhaXNlZCBleG4pXG4gICAgaW5cbiAgICBsZXQgb3V0Y29tZSA9XG4gICAgICBtYXRjaCVtYXAgcmVzdWx0IHdpdGhcbiAgICAgIHwgYE9rIF8gLT4gYE9rXG4gICAgICB8IGBBYm9ydGVkIC0+IGBBYm9ydGVkXG4gICAgICB8IGBSYWlzZWQgXyAtPiBgUmFpc2VkXG4gICAgaW5cbiAgICBsZXQgdCA9IHsgc3RhcnQ7IG91dGNvbWUgfSBpblxuICAgIHQsIHJlc3VsdFxuICA7O1xuXG4gIGxldCBydW4gdCBhID1cbiAgICBJdmFyLmZpbGwgdC5zdGFydCAoYFN0YXJ0IGEpO1xuICAgIG1hdGNoJW1hcCB0Lm91dGNvbWUgd2l0aFxuICAgIHwgYEFib3J0ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoYE9rIHwgYFJhaXNlZCkgYXMgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPSBJdmFyLmZpbGwgdC5zdGFydCBgQWJvcnRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGNvbnRpbnVlX29uX2Vycm9yIDogYm9vbFxuICA7IG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgOyAoKiBbam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXSBob2xkcyByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnkgYVxuICAgICAgIHJ1bm5pbmcgam9iLiAqKVxuICAgIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA6ICdhIFN0YWNrX29yX2NvdW50ZXIudFxuICA7XG4gICAgKCogW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgdGhlIHF1ZXVlIG9mIGpvYnMgdGhhdCBoYXZlbid0IHlldCBzdGFydGVkLiAqKVxuICAgIGpvYnNfd2FpdGluZ190b19zdGFydCA6ICdhIEludGVybmFsX2pvYi50IFF1ZXVlLnRcbiAgOyAoKiBbMCA8PSBudW1fam9ic19ydW5uaW5nIDw9IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgbnVtX2pvYnNfcnVubmluZyA6IGludFxuICA7ICgqIFtjYXBhY2l0eV9hdmFpbGFibGVdIGlzIFtTb21lIGl2YXJdIGlmIHVzZXIgY29kZSBoYXMgY2FsbGVkIFtjYXBhY2l0eV9hdmFpbGFibGUgdF1cbiAgICAgICBhbmQgaXMgd2FpdGluZyB0byBiZSBub3RpZmllZCB3aGVuIGNhcGFjaXR5IGlzIGF2YWlsYWJsZSBpbiB0aGUgdGhyb3R0bGUuXG4gICAgICAgW21heWJlX3N0YXJ0X2pvYl0gd2lsbCBmaWxsIFtpdmFyXSB3aGVuIGNhcGFjaXR5IGJlY29tZXMgYXZhaWxhYmxlLCBpLmUuIHdoZW5cbiAgICAgICBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyBlbXB0eSBhbmQgW251bV9qb2JzX3J1bm5pbmcgPCBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIGNhcGFjaXR5X2F2YWlsYWJsZSA6IHVuaXQgSXZhci50IG9wdGlvblxuICA7ICgqIFtpc19kZWFkXSBpcyB0cnVlIGlmIFt0XSB3YXMga2lsbGVkIGR1ZSB0byBhIGpvYiByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvciBba2lsbCB0XVxuICAgICAgIGJlaW5nIGNhbGxlZC4gKilcbiAgICBtdXRhYmxlIGlzX2RlYWQgOiBib29sXG4gIDsgKCogW2NsZWFuc10gaG9sZHMgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY2xlYW4gZWFjaCByZXNvdXJjZSB3aGVuIFt0XSBpc1xuICAgICAgIGtpbGxlZC4gKilcbiAgICBtdXRhYmxlIGNsZWFucyA6ICgnYSAtPiB1bml0IERlZmVycmVkLnQpIGxpc3RcbiAgOyAoKiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gaXMgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgd2hvc2UgY2xlYW4gZnVuY3Rpb25zIGhhdmVcbiAgICAgICBub3QgeWV0IGNvbXBsZXRlZC4gIFdoaWxlIFt0XSBpcyBhbGl2ZSwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPVxuICAgICAgIG1heF9jb25jdXJyZW50X2pvYnNdLiAgT25jZSBbdF0gaXMga2lsbGVkLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gZGVjcmVhc2VzIHRvXG4gICAgICAgemVybyBvdmVyIHRpbWUgYXMgdGhlIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBtdXRhYmxlIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgOiBpbnRcbiAgOyAoKiBbY2xlYW5lZF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIHJlYWNoZXMgemVybyxcbiAgICAgICBpLmUuIGFmdGVyIFt0XSBpcyBraWxsZWQgYW5kIGFsbCBpdHMgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIGNsZWFuZWQgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29udGludWVfb25fZXJyb3I6aWdub3JlXG4gICAgICB+bWF4X2NvbmN1cnJlbnRfam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2NvbmN1cnJlbnRfam9icyAtPiBhc3NlcnQgKG1heF9jb25jdXJyZW50X2pvYnMgPiAwKSkpXG4gICAgICB+am9iX3Jlc291cmNlc19ub3RfaW5fdXNlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgLT5cbiAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5pdGVyIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjppbnZhcmlhbnRfYTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VcbiAgICAgICAgICAgICA9IGlmIHQuaXNfZGVhZCB0aGVuIDAgZWxzZSB0Lm1heF9jb25jdXJyZW50X2pvYnMgLSB0Lm51bV9qb2JzX3J1bm5pbmcpKSlcbiAgICAgIH5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb24gam9ic193YWl0aW5nX3RvX3N0YXJ0IC0+XG4gICAgICAgICAgIGlmIHQuaXNfZGVhZCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+bnVtX2pvYnNfcnVubmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2pvYnNfcnVubmluZyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfmNhcGFjaXR5X2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgIH5pc19kZWFkOmlnbm9yZVxuICAgICAgfmNsZWFuczppZ25vcmVcbiAgICAgIH5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBhc3NlcnQgdC5pc19kZWFkKSlcbiAgICAgIH5jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBjbGVhbmVkIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCBjbGVhbmVkIHRoZW4gYXNzZXJ0ICh0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwKSkpXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaHJvdHRsZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiBfIHQpXVxuOztcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2tpbmQpIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuZW5kXG5cbmxldCBudW1fam9ic193YWl0aW5nX3RvX3N0YXJ0IHQgPSBRdWV1ZS5sZW5ndGggdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnRcblxubGV0IGNsZWFuX3Jlc291cmNlIHQgYSA9XG4gIERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCB0LmNsZWFucyB+ZjooZnVuIGYgLT4gZiBhKSlcbiAgPj4+IGZ1biAoKSAtPlxuICB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPC0gdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0gMTtcbiAgaWYgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCB0aGVuIEl2YXIuZmlsbCB0LmNsZWFuZWQgKClcbjs7XG5cbmxldCBraWxsIHQgPVxuICBpZiBub3QgdC5pc19kZWFkXG4gIHRoZW4gKFxuICAgIHQuaXNfZGVhZCA8LSB0cnVlO1xuICAgIFF1ZXVlLml0ZXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgfmY6SW50ZXJuYWxfam9iLmFib3J0O1xuICAgIFF1ZXVlLmNsZWFyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0O1xuICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjooZnVuIGEgLT4gY2xlYW5fcmVzb3VyY2UgdCBhKTtcbiAgICBTdGFja19vcl9jb3VudGVyLmNsZWFyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlKVxuOztcblxubGV0IGF0X2tpbGwgdCBmID1cbiAgKCogV2UgcHJlc2VydmUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgZXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGdvIHRvIHRoZSBtb25pdG9yXG4gICAgIGluIGVmZmVjdCB3aGVuIFthdF9raWxsXSB3YXMgY2FsbGVkLiAqKVxuICBsZXQgZiA9IHVuc3RhZ2UgKE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlci5wcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZikgaW5cbiAgdC5jbGVhbnMgPC0gZiA6OiB0LmNsZWFuc1xuOztcblxubGV0IGNsZWFuZWQgdCA9IEl2YXIucmVhZCB0LmNsZWFuZWRcblxubGV0IHJlYyBzdGFydF9qb2IgdCA9XG4gIGFzc2VydCAobm90IHQuaXNfZGVhZCk7XG4gIGFzc2VydCAodC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgYXNzZXJ0IChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSk7XG4gIGxldCBqb2IgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmpvYnNfd2FpdGluZ190b19zdGFydCBpblxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nICsgMTtcbiAgbGV0IGpvYl9yZXNvdXJjZSA9IFN0YWNrX29yX2NvdW50ZXIucG9wX2V4biB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBpblxuICBJbnRlcm5hbF9qb2IucnVuIGpvYiBqb2JfcmVzb3VyY2VcbiAgPj4+IGZ1biByZXMgLT5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyAtIDE7XG4gIChtYXRjaCByZXMgd2l0aFxuICAgfCBgT2sgLT4gKClcbiAgIHwgYFJhaXNlZCAtPiBpZiBub3QgdC5jb250aW51ZV9vbl9lcnJvciB0aGVuIGtpbGwgdCk7XG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIGNsZWFuX3Jlc291cmNlIHQgam9iX3Jlc291cmNlXG4gIGVsc2UgKFxuICAgIFN0YWNrX29yX2NvdW50ZXIucHVzaCB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBqb2JfcmVzb3VyY2U7XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydClcbiAgICB0aGVuIHN0YXJ0X2pvYiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgICB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBOb25lKSlcbjs7XG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9IFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXMgaW5cbiAgeyBjb250aW51ZV9vbl9lcnJvclxuICA7IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgPSBqb2JfcmVzb3VyY2VzXG4gIDsgam9ic193YWl0aW5nX3RvX3N0YXJ0ID0gUXVldWUuY3JlYXRlICgpXG4gIDsgbnVtX2pvYnNfcnVubmluZyA9IDBcbiAgOyBjYXBhY2l0eV9hdmFpbGFibGUgPSBOb25lXG4gIDsgaXNfZGVhZCA9IGZhbHNlXG4gIDsgY2xlYW5zID0gW11cbiAgOyBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGNsZWFuZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIChTdGFja19vcl9jb3VudGVyLm9mX2xpc3Qgam9iX3Jlc291cmNlcylcbjs7XG5cbm1vZHVsZSBTZXF1ZW5jZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgYSA9IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBbIGEgXVxuZW5kXG5cbmxldCBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA8PSAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaHJvdHRsZS5jcmVhdGUgcmVxdWlyZXMgcG9zaXRpdmUgbWF4X2NvbmN1cnJlbnRfam9icywgYnV0IGdvdFwiXG4gICAgICAgICAgKG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnQpXTtcbiAgY3JlYXRlX2ludGVybmFsXG4gICAgfmNvbnRpbnVlX29uX2Vycm9yXG4gICAgKFN0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXIgfmxlbmd0aDptYXhfY29uY3VycmVudF9qb2JzKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgaW50ZXJuYWxfam9iIDogJ2EgSW50ZXJuYWxfam9iLnRcbiAgICA7IHJlc3VsdCA6IFsgYE9rIG9mICdiIHwgYEFib3J0ZWQgfCBgUmFpc2VkIG9mIGV4biBdIERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IHJlc3VsdCB0ID0gdC5yZXN1bHRcbiAgbGV0IGFib3J0IHQgPSBJbnRlcm5hbF9qb2IuYWJvcnQgdC5pbnRlcm5hbF9qb2JcblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBpbnRlcm5hbF9qb2IsIHJlc3VsdCA9IEludGVybmFsX2pvYi5jcmVhdGUgZiBpblxuICAgIHsgaW50ZXJuYWxfam9iOyByZXN1bHQgfVxuICA7O1xuZW5kXG5cbmxldCBlbnF1ZXVlJyB0IGYgPVxuICBsZXQgam9iID0gSm9iLmNyZWF0ZSBmIGluXG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIEpvYi5hYm9ydCBqb2JcbiAgZWxzZSAoXG4gICAgUXVldWUuZW5xdWV1ZSB0LmpvYnNfd2FpdGluZ190b19zdGFydCBqb2IuaW50ZXJuYWxfam9iO1xuICAgIGlmIHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIHN0YXJ0X2pvYiB0KTtcbiAgSm9iLnJlc3VsdCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0ID1cbiAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgfCBgT2sgYSAtPiBhXG4gIHwgYEFib3J0ZWQgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aHJvdHRsZSBhYm9ydGVkIGpvYlwiXVxuICB8IGBSYWlzZWQgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IGVucXVldWUgdCBmID0gZW5xdWV1ZScgdCBmID4+fCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHRcblxubGV0IGVucXVldWVfZXhjbHVzaXZlIHQgZiA9XG4gIGxldCBuID0gdC5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gIGlmIEludC4oID49ICkgbiAxXzAwMF8wMDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIltlbnF1ZXVlX2V4Y2x1c2l2ZV0gd2FzIGNhbGxlZCB3aXRoIGEgdmVyeSBsYXJnZSB2YWx1ZSBvZiBcXFxuICAgICAgICAgW21heF9jb25jdXJyZW50X2pvYnNdLiBUaGlzIGRvZXNuJ3Qgd29yay5cIl07XG4gIGxldCBkb25lXyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGFzc2VydCAobiA+IDApO1xuICBsZXQgZl9wbGFjZWhvbGRlciBfc2xvdCA9IEl2YXIucmVhZCBkb25lXyBpblxuICBmb3IgXyA9IDEgdG8gbiAtIDEgZG9cbiAgICBkb24ndF93YWl0X2ZvciAoZW5xdWV1ZSB0IGZfcGxhY2Vob2xkZXIpXG4gIGRvbmU7XG4gIGxldCVtYXAgcmVzdWx0ID0gZW5xdWV1ZScgdCAoZnVuIF9zbG90IC0+IGYgKCkpIGluXG4gIEl2YXIuZmlsbCBkb25lXyAoKTtcbiAgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdFxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdyB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYSAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGEpKVxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGExIGEyIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYTEgYTIpKVxuOztcblxubGV0IHByaW9yX2pvYnNfZG9uZSB0ID1cbiAgKCogV2UgcXVldWUgW3QubWF4X2NvbmN1cnJlbnRfam9ic10gZHVtbXkgam9icyBhbmQgd2hlbiB0aGV5IGFyZSBhbGwgc3RhcnRlZCB3ZSBrbm93XG4gICAgIHRoYXQgYWxsIHByaW9yIGpvYnMgZmluaXNoZWQuICBXZSBtYWtlIHN1cmUgdGhhdCBhbGwgZHVtbXkgam9icyB3YWl0IGZvciB0aGUgbGFzdCBvbmVcbiAgICAgdG8gZ2V0IHN0YXJ0ZWQgYmVmb3JlIGZpbmlzaGluZy4gKilcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gYWxsX2R1bW15X2pvYnNfcnVubmluZyAtPlxuICAgIGxldCBkdW1teV9qb2JzX3J1bm5pbmcgPSByZWYgMCBpblxuICAgIGZvciBfID0gMSB0byB0Lm1heF9jb25jdXJyZW50X2pvYnMgZG9cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChlbnF1ZXVlIHQgKGZ1biBfIC0+XG4gICAgICAgICAgIGluY3IgZHVtbXlfam9ic19ydW5uaW5nO1xuICAgICAgICAgICBpZiAhZHVtbXlfam9ic19ydW5uaW5nID0gdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gSXZhci5maWxsIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgKCk7XG4gICAgICAgICAgIEl2YXIucmVhZCBhbGxfZHVtbXlfam9ic19ydW5uaW5nKSlcbiAgICBkb25lKVxuOztcblxubGV0IGNhcGFjaXR5X2F2YWlsYWJsZSB0ID1cbiAgaWYgbnVtX2pvYnNfcnVubmluZyB0IDwgbWF4X2NvbmN1cnJlbnRfam9icyB0XG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICB8IFNvbWUgaXZhciAtPiBJdmFyLnJlYWQgaXZhclxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIFNvbWUgaXZhcikpXG47O1xuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcblxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlcjEuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlcjEud2FsbF9jbG9ja1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cbmluY2x1ZGUgKFNjaGVkdWxlciA6IG1vZHVsZSB0eXBlIG9mIFNjaGVkdWxlciB3aXRoIG1vZHVsZSBCdmFyIDo9IFNjaGVkdWxlci5CdmFyKVxuXG5sZXQgdCA9IFNjaGVkdWxlci50XG5cbmluY2x1ZGUgTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBmaW5kX2xvY2FsIGtleSA9IEV4ZWN1dGlvbl9jb250ZXh0LmZpbmRfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBrZXlcblxubGV0IHdpdGhfbG9jYWwga2V5IHZhbHVlIH5mID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQud2l0aF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSBrZXkgdmFsdWVcbiAgaW5cbiAgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0IH5mXG47O1xuXG5sZXQgbWFpbl9leGVjdXRpb25fY29udGV4dCA9ICh0ICgpKS5tYWluX2V4ZWN1dGlvbl9jb250ZXh0XG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gbnVtX3BlbmRpbmdfam9icyB0ID4gMCB8fCBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkXG5sZXQgaGFzX3VwY29taW5nX2V2ZW50IHQgPSBub3QgKFRpbWluZ193aGVlbC5pc19lbXB0eSAoZXZlbnRzIHQpKVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IChldmVudHMgdClcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50X2V4biB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIChldmVudHMgdClcbmxldCBldmVudF9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gKGV2ZW50cyB0KVxubGV0IGN5Y2xlX3N0YXJ0IHQgPSB0LmN5Y2xlX3N0YXJ0XG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmYgPSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSBmIDo6IHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mID0gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIGYgOjogdC5ydW5fZXZlcnlfY3ljbGVfZW5kXG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB0IH5mID1cbiAgbGV0IGhhbmRsZSA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLmNyZWF0ZSAoKSBpblxuICBIYXNodGJsLmFkZF9leG4gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB0IH5mID1cbiAgbGV0IGhhbmRsZSA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLmNyZWF0ZSAoKSBpblxuICBIYXNodGJsLmFkZF9leG4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9lbmQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG4oKiBVbmJlbGlldmFibGUgdGhhdCBbTGlzdC5yZW1vdmVdIGlzIG5vdCBhIHRoaW5nICopXG5sZXQgbGlzdF9yZW1vdmVfZmlyc3QgbHN0IH5mID1cbiAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSB+ZjooZnVuIHggLT4gbm90IChmIHgpKSBsc3Qgd2l0aFxuICB8IF8sIFtdIC0+IE5vbmVcbiAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG47O1xuXG5sZXQgcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGxzdCBmID1cbiAgKCogUmVtb3ZlIGEgc2luZ2xlIGluc3RhbmNlIG9mIFtmXSBmcm9tIFtsc3RdLiBNb3JlIHRoYW4gb25lIGluc3RhbmNlIG1heSBiZSBwcmVzZW50LFxuICAgICBidXQgcmVtb3ZhbCBpcyByZWZlcmVuY2UtY291bnRlZCBieSBbcnVuX2V2ZXJ5X2N5Y2xlXyhzdGFydHxlbmQpX3N0YXRlXSB0YWJsZXMuICopXG4gIG1hdGNoIGxpc3RfcmVtb3ZlX2ZpcnN0IH5mOihwaHlzX2VxdWFsIGYpIGxzdCB3aXRoXG4gIHwgU29tZSBsc3QgLT4gbHN0XG4gIHwgTm9uZSAtPlxuICAgICgqIFRoaXMgc2hvdWxkIGJlIHVucmVhY2hhYmxlLCBzZWUgdGhlIFtpbnZhcmlhbnRdIGluIFtzY2hlZHVsZXIxLm1sXS4gKilcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJTY2hlZHVsZXIucmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGNhbGxlZCB3aXRoIGEgaG9vayB0aGF0IGlzbid0IHJlZ2lzdGVyZWRcIl1cbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBzdGFydCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPlxuICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBlbmQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgZlxuOztcblxubGV0IG1hcF9jeWNsZV90aW1lcyB0IH5mID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgKGYgdC5sYXN0X2N5Y2xlX3RpbWUpKSlcbjs7XG5cbmxldCBsb25nX2N5Y2xlcyB0IH5hdF9sZWFzdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPlxuICAgICAgaWYgVGltZV9ucy5TcGFuLiggPj0gKSB0Lmxhc3RfY3ljbGVfdGltZSBhdF9sZWFzdFxuICAgICAgdGhlbiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV90aW1lKSlcbjs7XG5cbmxldCBjeWNsZV9udW1fam9icyB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX251bV9qb2JzKSlcbjs7XG5cbmxldCBjeWNsZV9jb3VudCB0ID0gdC5jeWNsZV9jb3VudFxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgaW50ID1cbiAgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA8LSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIGludFxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgPVxuICBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuOztcblxubGV0IHNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IGYgPSB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDwtIGZcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmV4dGVybmFsX2pvYnMgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpO1xuICB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rICgpXG47O1xuXG5sZXQgc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCBmID0gdC5ldmVudF9hZGRlZF9ob29rIDwtIFNvbWUgZlxubGV0IHNldF9qb2JfcXVldWVkX2hvb2sgdCBmID0gdC5qb2JfcXVldWVkX2hvb2sgPC0gU29tZSBmXG5cbmxldCBjcmVhdGVfYWxhcm0gdCBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIEdjLkV4cGVydC5BbGFybS5jcmVhdGUgKGZ1biAoKSAtPlxuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyIHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgaGVhcF9ibG9jayA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy5cblxuICAgICAgIEJ5IHB1dHRpbmcgW2hlYXBfYmxvY2tdIGluIFtleHRlcm5hbF9qb2JzXSwgd2UgYXJlIGtlZXBpbmcgaXQgYWxpdmUgdW50aWwgdGhlIG5leHRcbiAgICAgICB0aW1lIHRoZSBhc3luYyBzY2hlZHVsZXIgZ2V0cyBhcm91bmQgdG8gZGVxdWV1ZWluZyBpdC4gIENhbGxpbmdcbiAgICAgICBbdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gZW5zdXJlcyB0aGF0IHdpbGwgaGFwcGVuIGluIHNob3J0IG9yZGVyLiAgVGh1cyxcbiAgICAgICB3ZSBhcmUgbm90IGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHRoZSBsaWZldGltZSBvZiBbaGVhcF9ibG9ja10sIHNpbmNlIHRoZSBPQ2FtbFxuICAgICAgIHJ1bnRpbWUgYWxyZWFkeSByZXN1cnJlY3RlZCBbaGVhcF9ibG9ja10gc28gdGhhdCB3ZSBjb3VsZCByZWZlciB0byBpdCBoZXJlLiAgVGhlXG4gICAgICAgT0NhbWwgcnVudGltZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGZpbmFsaXplciBmdW5jdGlvbiB3aGVuIGl0IG5vdGljZWQgW2hlYXBfYmxvY2tdXG4gICAgICAgY291bGQgYmUgZmluYWxpemVkLCBzbyB0aGVyZSBpcyBubyBpbmZpbml0ZSBsb29wIGluIHdoaWNoIHdlIGFyZSBjYXVzaW5nIHRoZVxuICAgICAgIGZpbmFsaXplciB0byBydW4gYWdhaW4uICBBbHNvLCBPQ2FtbCBkb2VzIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50IG9uIGZpbmFsaXplclxuICAgICAgIGZ1bmN0aW9ucyB0aGF0IHRoZXkgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBibG9jaywgc28gaXQncyBmaW5lIHRoYXQgd2Uga2VlcFxuICAgICAgIFtoZWFwX2Jsb2NrXSBhcm91bmQgdW50aWwgbGF0ZXIuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplclwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBoZWFwX2Jsb2NrXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplclwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gYmVjYXVzZSB0aGUgbGF0dGVyXG4gICAgIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlXSB0byBydW4gZmluYWxpemVycyBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgQ2FtbC5HYy5maW5hbGlzZSBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2V4biB0IHggZiA9XG4gIGFkZF9maW5hbGl6ZXIgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIChmdW4gaGVhcF9ibG9jayAtPlxuICAgIGYgKEhlYXBfYmxvY2sudmFsdWUgaGVhcF9ibG9jaykpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgKCkgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVyc1xuICAgIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyX2xhc3RdIGJlY2F1c2VcbiAgICAgdGhlIGxhdHRlciBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSB0byBydW4gZmluYWxpemVyc1xuICAgICBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgQ2FtbC5HYy5maW5hbGlzZV9sYXN0IGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gdCB4IGYgPSBhZGRfZmluYWxpemVyX2xhc3QgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIGZcblxuKCoqIFtmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZF0gc2V0cyB0aGUgbnVtYmVyIG9mIG5vcm1hbCBqb2JzIGFsbG93ZWQgdG8gcnVuIGluIHRoaXNcbiAgICBjeWNsZSB0byB6ZXJvLiAgVGh1cywgYWZ0ZXIgdGhlIGN1cnJlbnRseSBydW5uaW5nIGpvYiBjb21wbGV0ZXMsIHRoZSBzY2hlZHVsZXIgd2lsbFxuICAgIHN3aXRjaCB0byBsb3cgcHJpb3JpdHkgam9icyBhbmQgdGhlbiBlbmQgdGhlIGN1cnJlbnQgY3ljbGUuICopXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgdCA9XG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyAwXG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH5ub3cgPVxuICBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9pbnRlcm5hbCB0LnRpbWVfc291cmNlIH50b186bm93IH5zZW5kX2V4blxuOztcblxubGV0IHJ1bl9jeWNsZSB0ID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJydW5fY3ljbGUgc3RhcnRpbmdcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICB0LmN5Y2xlX2NvdW50IDwtIHQuY3ljbGVfY291bnQgKyAxO1xuICB0LmN5Y2xlX3N0YXJ0IDwtIG5vdztcbiAgdC5pbl9jeWNsZSA8LSB0cnVlO1xuICBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkICgpO1xuICBsZXQgbnVtX2pvYnNfcnVuX2F0X3N0YXJ0X29mX2N5Y2xlID0gbnVtX2pvYnNfcnVuIHQgaW5cbiAgTGlzdC5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IH5mOihmdW4gZiAtPiBmICgpKTtcbiAgYWR2YW5jZV9jbG9jayB0IH5ub3c7XG4gIHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6dC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTtcbiAgbGV0IHJlYyBydW5fam9icyB0ID1cbiAgICBtYXRjaCBTY2hlZHVsZXIucnVuX2pvYnMgdCB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKTtcbiAgICAgICgqIFtydW5fam9ic10gc3RvcHBlZCBkdWUgdG8gYW4gZXhuLiAgVGhlcmUgbWF5IHN0aWxsIGJlIGpvYnMgdGhhdCBjb3VsZCBiZVxuICAgICAgICAgcnVuIHRoaXMgY3ljbGUsIHNvIFtydW5fam9ic10gYWdhaW4uICopXG4gICAgICBydW5fam9icyB0XG4gIGluXG4gIHJ1bl9qb2JzIHQ7XG4gIGxldCBjeWNsZV90aW1lID0gVGltZV9ucy5kaWZmIChUaW1lX25zLm5vdyAoKSkgdC5jeWNsZV9zdGFydCBpblxuICB0Lmxhc3RfY3ljbGVfdGltZSA8LSBjeWNsZV90aW1lO1xuICB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMgPC0gbnVtX2pvYnNfcnVuIHQgLSBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGU7XG4gIHQudG90YWxfY3ljbGVfdGltZSA8LSBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIGN5Y2xlX3RpbWUpO1xuICBpZiBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICgpO1xuICBMaXN0Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgdC5pbl9jeWNsZSA8LSBmYWxzZTtcbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIERlYnVnLmxvZ1xuICAgICAgXCJydW5fY3ljbGUgZmluaXNoZWRcIlxuICAgICAgKHVuY2F1Z2h0X2V4biB0LCBpc19zb21lIChuZXh0X3VwY29taW5nX2V2ZW50IHQpKVxuICAgICAgWyVzZXhwX29mOiBFcnJvci50IG9wdGlvbiAqIGJvb2xdXG47O1xuXG5sZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gc3RhcnRpbmdcIjtcbiAgbGV0IHQgPSB0ICgpIGluXG4gIGlmIGlzX2RlYWQgdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBjYW5ub3QgcHJvY2VlZCAtLSBzY2hlZHVsZXIgaXMgZGVhZFwiXG4gICAgICAgICAgfnNjaGVkdWxlcjoodCA6IHQpXTtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBydW5fY3ljbGUgdDtcbiAgICBhZHZhbmNlX2Nsb2NrIHQgfm5vdzooVGltZV9ucy5ub3cgKCkpO1xuICAgIGlmIGNhbl9ydW5fYV9qb2IgdCB0aGVuIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgKCogUmVzZXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHdoZW4gd2UncmUgbm90IGluXG4gICAgIGEgam9iLCBbY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IG1haW5fZXhlY3V0aW9uX2NvbnRleHRdLiAqKVxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0Lm1haW5fZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gZmluaXNoZWRcIjtcbiAgT3B0aW9uLml0ZXIgKHVuY2F1Z2h0X2V4biB0KSB+ZjpFcnJvci5yYWlzZVxuOztcblxubGV0IG1ha2VfYXN5bmNfdW51c2FibGUgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICB0LmNoZWNrX2FjY2Vzc1xuICA8LSBTb21lXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVzZXhwIFwiQXN5bmMgc2NoZWR1bGVyIGlzIHVudXNhYmxlIGR1ZSB0byBbbWFrZV9hc3luY191bnVzYWJsZV1cIl0pXG47O1xuXG5sZXQgcmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3MgKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJyZXNldF9pbl9mb3JrZWRfcHJvY2Vzc1wiO1xuICAoKiBUaGVyZSBpcyBubyBuZWVkIHRvIGVtcHR5IFttYWluX21vbml0b3JfaG9sZV0uICopXG4gIFNjaGVkdWxlci4odF9yZWYgOj0gY3JlYXRlICgpKVxuOztcblxubGV0IGNoZWNrX2ludmFyaWFudHMgdCA9IHQuY2hlY2tfaW52YXJpYW50c1xubGV0IHNldF9jaGVja19pbnZhcmlhbnRzIHQgYiA9IHQuY2hlY2tfaW52YXJpYW50cyA8LSBiXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIHQgYiA9IHQucmVjb3JkX2JhY2t0cmFjZXMgPC0gYlxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgdC55aWVsZFxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPyhtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ID0gZmFsc2UpIHQgPVxuICBpZiBtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSBCdmFyLndhaXQgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpblxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIueWllbGRfZXZlcnkgZ290IG5vbnBvc2l0aXZlIGNvdW50XCIgKG4gOiBpbnQpXVxuICBlbHNlIGlmIG4gPSAxXG4gIHRoZW4gc3RhZ2UgKGZ1biB0IC0+IHlpZWxkIHQpXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF91bnRpbF95aWVsZCA9IHJlZiBuIGluXG4gICAgc3RhZ2UgKGZ1biB0IC0+XG4gICAgICBkZWNyIGNvdW50X3VudGlsX3lpZWxkO1xuICAgICAgaWYgIWNvdW50X3VudGlsX3lpZWxkID4gMFxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb3VudF91bnRpbF95aWVsZCA6PSBuO1xuICAgICAgICB5aWVsZCB0KSkpXG47O1xuXG5sZXQgdG90YWxfY3ljbGVfdGltZSB0ID1cbiAgKCogQWRqdXN0IGZvciB0aGUgZmFjdCB0aGUgY2FsbGVyJ3MgcHJvYmFibHkgYW4gQXN5bmMgam9iLiAqKVxuICBpZiB0LmluX2N5Y2xlXG4gIHRoZW4gKFxuICAgIGxldCB0aGlzX2N5Y2xlX3RpbWUgPSBUaW1lX25zLihkaWZmIChub3cgKCkpIHQuY3ljbGVfc3RhcnQpIGluXG4gICAgVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyB0aGlzX2N5Y2xlX3RpbWUpKVxuICBlbHNlIHQudG90YWxfY3ljbGVfdGltZVxuOztcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmsgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdvcmtlcl9yZXN1bHQgPSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHRcblxuXG4gIGxldCByZWMgcnVuIHQgPSBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nOjFfMDAwXG5cbiAgYW5kIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiB5aWVsZF90aGVuX3J1biB0XG4gICAgZWxzZSBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIChcbiAgICAgIGxldCB3b3JrZXIgPSBEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICAgIHNldF9leGVjdXRpb25fY29udGV4dCB0IHdvcmtlci5leGVjdXRpb25fY29udGV4dDtcbiAgICAgIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG5cbiAgYW5kIHlpZWxkX3RoZW5fcnVuIHQgPVxuICAgIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gRGVmZXJyZWQudXBvbiAoeWllbGQgdCkgKGZ1biAoKSAtPiBydW4gdClcblxuICBhbmQgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQpO1xuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiAoXG4gICAgICBEZXF1ZS5lbnF1ZXVlX2Zyb250IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyB3b3JrZXI7XG4gICAgICB5aWVsZF90aGVuX3J1biB0KVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nIC0gMSBpblxuICAgICAgbWF0Y2ggd29ya2VyLmV4ZWMgKCkgd2l0aFxuICAgICAgfCBGaW5pc2hlZCAtPiBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IE5vdF9maW5pc2hlZCAtPiBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBidCk7XG4gICAgICAgIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgfmYgPVxuICAgIGxldCB0ID0gdCAoKSBpblxuICAgIGxldCBxdWV1ZSA9IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgIGxldCBydW5uaW5nID0gbm90IChEZXF1ZS5pc19lbXB0eSBxdWV1ZSkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkgfnByaW9yaXR5Okxvd1xuICAgIGluXG4gICAgRGVxdWUuZW5xdWV1ZV9iYWNrIHF1ZXVlIHsgZXhlY3V0aW9uX2NvbnRleHQ7IGV4ZWMgPSBmIH07XG4gICAgaWYgbm90IHJ1bm5pbmcgdGhlbiBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2JlbmNoID0gc3RydWN0XG4gIGxldCBhZHZhbmNlX2Nsb2NrID0gYWR2YW5jZV9jbG9ja1xuZW5kXG5cbmxldCBpbl9jeWNsZSB0ID0gdC5pbl9jeWNsZVxuIiwidHlwZSB0ID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBIYW5kbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyXG5cbmxldCBlbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPSBlbnF1ZXVlICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSlcbmxldCBjeWNsZV9jb3VudCAoKSA9IGN5Y2xlX2NvdW50ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0X25zICgpID0gY3ljbGVfc3RhcnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnQgKCkgPSBUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCAoY3ljbGVfc3RhcnRfbnMgKCkpXG5sZXQgY3ljbGVfdGltZXNfbnMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOkZuLmlkXG5sZXQgY3ljbGVfdGltZXMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOlRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RcbmxldCB0b3RhbF9jeWNsZV90aW1lICgpID0gdG90YWxfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsYXN0X2N5Y2xlX3RpbWUgKCkgPSBsYXN0X2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbG9uZ19jeWNsZXMgfmF0X2xlYXN0ID0gbG9uZ19jeWNsZXMgKHQgKCkpIH5hdF9sZWFzdFxubGV0IGV2ZW50X3ByZWNpc2lvbl9ucyAoKSA9IGV2ZW50X3ByZWNpc2lvbiAodCAoKSlcbmxldCBldmVudF9wcmVjaXNpb24gKCkgPSBUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChldmVudF9wcmVjaXNpb25fbnMgKCkpXG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgaSA9XG4gIHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSkgaVxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICgpID0gbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIGJvb2wgPSBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgKHQgKCkpIGJvb2xcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAoKSA9IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICh0ICgpKVxubGV0IHlpZWxkICgpID0geWllbGQgKHQgKCkpXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAoKSA9XG4gIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICh0ICgpKVxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgbGV0IHlpZWxkX2V2ZXJ5ID0gU3RhZ2VkLnVuc3RhZ2UgKHlpZWxkX2V2ZXJ5IH5uKSBpblxuICBsZXQgdCA9IHQgKCkgaW5cbiAgc3RhZ2UgKGZ1biAoKSAtPiB5aWVsZF9ldmVyeSB0KVxuOztcblxubGV0IG51bV9qb2JzX3J1biAoKSA9IG51bV9qb2JzX3J1biAodCAoKSlcbmxldCBudW1fcGVuZGluZ19qb2JzICgpID0gbnVtX3BlbmRpbmdfam9icyAodCAoKSlcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiA9IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW5cbiAgbGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgKCkgPSBsYXN0X2N5Y2xlX251bV9qb2JzICh0ICgpKVxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGYgPSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgKHQgKCkpIH5mXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfZW5kIGYgPSBydW5fZXZlcnlfY3ljbGVfZW5kICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayAodCAoKSkgfmZcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHggPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZiB4XG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBTY2hlZHVsZXJcbiIsIigqKiBTY2hlZHVsZSBqb2JzIHRvIHJ1biBhdCBhIHRpbWUgaW4gdGhlIGZ1dHVyZS5cblxuICAgIFRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIHVzZXMgYSBoZWFwIG9mIGV2ZW50cywgb25lIGZvciBlYWNoIGpvYiB0aGF0IG5lZWRzIHRvXG4gICAgcnVuIGluIHRoZSBmdXR1cmUuICBUaGUgQXN5bmMgc2NoZWR1bGVyIGlzIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcgdXAgYXQgdGhlIHJpZ2h0IHRpbWVcbiAgICB0byBydW4gdGhlIGpvYnMuICopXG5cbm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgVGltZW91dFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICAoKiogW3J1bl9hdCB0aW1lIGYgYV0gcnVucyBbZiBhXSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIFt0aW1lXS4gIElmIFt0aW1lXSBpcyBpbiB0aGVcbiAgICAgIHBhc3QsIHRoZW4gW3J1bl9hdF0gd2lsbCBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGpvYiBbdF0gdGhhdCB3aWxsIHJ1biBbZiBhXS4gIEluIG5vXG4gICAgICBzaXR1YXRpb24gd2lsbCBbcnVuX2F0XSBhY3R1YWxseSBjYWxsIFtmXSBpdHNlbGYuICBUaGUgY2FsbCB0byBbZl0gd2lsbCBhbHdheXMgYmUgaW5cbiAgICAgIGFub3RoZXIgam9iLiAqKVxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFtydW5fYWZ0ZXJdIGlzIGxpa2UgW3J1bl9hdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW5cbiAgICAgIGFic29sdXRlIHRpbWUuICopXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbYXQgdGltZV0gcmV0dXJucyBhIGRlZmVycmVkIFtkXSB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYXMgc29vbiBhcyBwb3NzaWJsZVxuICAgICAgYWZ0ZXIgW3RpbWVdLiAqKVxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFthZnRlcl0gaXMgbGlrZSBbYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuIGFic29sdXRlXG4gICAgICB0aW1lLiAqKVxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3dpdGhfdGltZW91dCBzcGFuIGRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYWZ0ZXIgZWl0aGVyXG4gICAgICBbc3Bhbl0gZWxhcHNlcyBvciBbZF0gaXMgZGV0ZXJtaW5lZCwgcmV0dXJuaW5nIGVpdGhlciBbYFRpbWVvdXRdIG9yIFtgUmVzdWx0XVxuICAgICAgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBzdWNjZWVkZWQgZmlyc3QuICBBdCB0aGUgdGltZSB0aGUgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCwgYm90aCB0aGluZ3MgbWF5IGhhdmUgaGFwcGVuZWQsIGluIHdoaWNoIGNhc2UgW2BSZXN1bHRdIGlzIGdpdmVuXG4gICAgICBwcmVmZXJlbmNlLiAqKVxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuXG4gICgqKiBFdmVudHMgcHJvdmlkZSB2YXJpYW50cyBvZiBbcnVuX2F0XSBhbmQgW3J1bl9hZnRlcl0gd2l0aCB0aGUgYWJpbGl0eSB0byBhYm9ydCBvclxuICAgICAgcmVzY2hlZHVsZSBhbiBldmVudCB0aGF0IGhhc24ndCB5ZXQgaGFwcGVuZWQuICBPbmNlIGFuIGV2ZW50IGhhcHBlbnMgb3IgaXMgYWJvcnRlZCxcbiAgICAgIEFzeW5jIGRvZXNuJ3QgdXNlIGFueSBzcGFjZSBmb3IgdHJhY2tpbmcgaXQuICopXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgICgqKiBJZiBbc3RhdHVzXSByZXR1cm5zIFtTY2hlZHVsZWRfYXQgdGltZV0sIGl0IGlzIHBvc3NpYmxlIHRoYXQgW3RpbWUgPCBUaW1lLm5vdyAoKV1cbiAgICAgICAgaWYgQXN5bmMncyBzY2hlZHVsZXIgaGFzbid0IHlldCBnb3R0ZW4gdGhlIGNoYW5jZSB0byB1cGRhdGUgaXRzIGNsb2NrLCBlLmcuLCBkdWVcbiAgICAgICAgdG8gdXNlciBqb2JzIHJ1bm5pbmcuICopXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcblxuICAgICgqKiBMZXQgW3QgPSBydW5fYXQgdGltZSBmIHpdLiAgQXQgW3RpbWVdLCB0aGlzIHJ1bnMgW2Ygel0gYW5kIHRyYW5zaXRpb25zIFtzdGF0dXMgdF1cbiAgICAgICAgdG8gW0hhcHBlbmVkIGhdLCB3aGVyZSBbaF0gaXMgcmVzdWx0IG9mIFtmIHpdLlxuXG4gICAgICAgIE1vcmUgcHJlY2lzZWx5LCBhdCBbdGltZV0sIHByb3ZpZGVkIFthYm9ydCB0IGFdIGhhcyBub3QgcHJldmlvdXNseSBiZWVuIGNhbGxlZCxcbiAgICAgICAgdGhpcyB3aWxsIGNhbGwgW2Ygel0sIHdpdGggdGhlIGd1YXJhbnRlZSB0aGF0IFtzdGF0dXMgdCA9IFNjaGVkdWxlZF9hdCB0aW1lXS4gIElmXG4gICAgICAgIFtmIHpdIHJldHVybnMgW2hdIGFuZCBkaWQgbm90IGNhbGwgW2Fib3J0IHQgYV0sIHRoZW4gW3N0YXR1cyB0XSBiZWNvbWVzIFtIYXBwZW5lZFxuICAgICAgICBoXS4gIElmIFtmIHpdIGNhbGxzIFthYm9ydCB0IGFdLCB0aGVuIHRoZSByZXN1bHQgb2YgW2ZdIGlzIGlnbm9yZWQsIGFuZCBbc3RhdHVzIHRdXG4gICAgICAgIGlzIFtBYm9ydGVkIGFdLlxuXG4gICAgICAgIElmIFtmIHpdIHJhaXNlcywgdGhlbiBbc3RhdHVzIHRdIGRvZXMgbm90IHRyYW5zaXRpb24gYW5kIHJlbWFpbnMgW1NjaGVkdWxlZF9hdFxuICAgICAgICB0aW1lXSwgYW5kIHRoZSBleGNlcHRpb24gaXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbcnVuX2F0XSB3YXNcbiAgICAgICAgY2FsbGVkLiAqKVxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgKCoqIFthYm9ydCB0XSBjaGFuZ2VzIFtzdGF0dXMgdF0gdG8gW0Fib3J0ZWRdIGFuZCByZXR1cm5zIFtPa10sIHVubGVzcyBbdF1cbiAgICAgICAgcHJldmlvdXNseSBoYXBwZW5lZCBvciB3YXMgcHJldmlvdXNseSBhYm9ydGVkLiAqKVxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcblxuICAgICgqKiBbYWJvcnRfZXhuIHQgYV0gcmV0dXJucyBbdW5pdF0gaWYgW2Fib3J0IHQgYSA9IGBPa10sIGFuZCBvdGhlcndpc2UgcmFpc2VzLiAqKVxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgICgqKiBbYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEpXS4gKilcbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgKCoqIFtyZXNjaGVkdWxlX2F0IHRdIGFuZCBbcmVzY2hlZHVsZV9hZnRlciB0XSBjaGFuZ2UgdGhlIHRpbWUgdGhhdCBbdF0gd2lsbCBmaXJlLCBpZlxuICAgICAgICBwb3NzaWJsZSwgYW5kIGlmIG5vdCwgZ2l2ZSBhIHJlYXNvbiB3aHkuICBMaWtlIFtydW5fYXRdLCBpZiB0aGUgcmVxdWVzdGVkIHRpbWUgaXNcbiAgICAgICAgaW4gdGhlIHBhc3QsIHRoZSBldmVudCB3aWxsIGJlIHNjaGVkdWxlZCB0byBydW4gaW1tZWRpYXRlbHkuICBJZiBbcmVzY2hlZHVsZV9hdCB0XG4gICAgICAgIHRpbWUgPSBPa10sIHRoZW4gc3Vic2VxdWVudGx5IFtzY2hlZHVsZWRfYXQgdCA9IHRpbWVdLiAgKilcbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICAoKiogW2F0IHRpbWVdICAgIGlzIFtydW5fYXQgICAgdGltZSBpZ25vcmUgKCldLlxuICAgICAgICBbYWZ0ZXIgdGltZV0gaXMgW3J1bl9hZnRlciB0aW1lIGlnbm9yZSAoKV0uXG5cbiAgICAgICAgWW91IHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSB0aGUgW3J1bl8qXSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHlvdSB0b1xuICAgICAgICBzeW5jaHJvbm91c2x5IHVwZGF0ZSBzdGF0ZSB2aWEgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdoZW4gdGhlIGV2ZW50XG4gICAgICAgIHRyYW5zaXRpb25zIHRvIFtIYXBwZW5lZF0uICBUaGF0IGlzLCB0aGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBydW5fYXQgdGltZSBmICgpIF19XG5cbiAgICAgICAgYW5kOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBhdCB0aW1lIGluXG4gICAgICAgICAgZmlyZWQgdFxuICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gZiAoKVxuICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKSBdfVxuXG4gICAgICAgIFdpdGggW3J1bl9hdF0sIGlmIFtzdGF0dXMgdCA9IEhhcHBlbmVkXSwgb25lIGtub3dzIHRoYXQgW2ZdIGhhcyBydW4uICBXaXRoIFthdF1cbiAgICAgICAgYW5kIFtmaXJlZF0sIG9uZSBkb2VzIG5vdCBrbm93IHdoZXRoZXIgW2ZdIGhhcyB5ZXQgcnVuOyBpdCBtYXkgc3RpbGwgYmUgc2NoZWR1bGVkXG4gICAgICAgIHRvIHJ1bi4gIFRodXMsIHdpdGggW2F0XSBhbmQgW2ZpcmVkXSwgaXQgaXMgZWFzeSB0byBpbnRyb2R1Y2UgYSByYWNlLiAgRm9yXG4gICAgICAgIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIHR3byBjb2RlIHNuaXBwZXRzOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5hZnRlciAoc2VjIDIuKSBpblxuICAgICAgICAgIHVwb24gKEV2ZW50LmZpcmVkIHQpIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpXG4gICAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IHByaW50ZiBcIlRpbWVyIGZpcmVkXCIpO1xuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5ydW5fYWZ0ZXIgKHNlYyAyLikgcHJpbnRmIFwiVGltZXIgZmlyZWRcIiBpblxuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIEluIGJvdGggc25pcHBldHMsIGlmIFtFdmVudC5hYm9ydF0gcmV0dXJucyBbT2tdLCBcIlRpbWVyIGZpcmVkXCIgaXMgbmV2ZXIgcHJpbnRlZC5cbiAgICAgICAgSG93ZXZlciwgdGhlIGZpcnN0IHNuaXBwZXQgbWlnaHQgcHJpbnQgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiIGFuZCB0aGVuXG4gICAgICAgIFwiVGltZXIgZmlyZWRcIi4gIFRoaXMgY29uZnVzZWQgb3JkZXJpbmcgY2Fubm90IGhhcHBlbiB3aXRoIFtFdmVudC5ydW5fYWZ0ZXJdLiAqKVxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdFxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgZW5kXG5cbiAgKCoqIFthdF92YXJ5aW5nX2ludGVydmFscyBmID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIG5leHQgZWxlbWVudCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgW2YgKCldIGFuZCB3YWl0aW5nIGZvciB0aGF0IGFtb3VudCBvZiB0aW1lLCBhbmQgdGhlbiBsb29waW5nXG4gICAgICB0byBkZXRlcm1pbmUgc3Vic2VxdWVudCBlbGVtZW50cy4gIFRoZSBzdHJlYW0gd2lsbCBlbmQgYWZ0ZXIgW3N0b3BdIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQuICopXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2F0X2ludGVydmFscyBpbnRlcnZhbCA/c3RhcnQgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgZWxlbWVudHMgd2lsbCBiZWNvbWVcbiAgICAgIGRldGVybWluZWQgYXQgbm9ubmVnYXRpdmUgaW50ZWdlciBtdWx0aXBsZXMgb2YgW2ludGVydmFsXSBhZnRlciB0aGUgW3N0YXJ0XSB0aW1lLFxuICAgICAgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZDpcblxuICAgICAge3ZcbiAgICAgICAgc3RhcnQgKyAwICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAxICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAyICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAzICogaW50ZXJ2YWxcbiAgICAgICAgLi4uXG4gICAgICB2fVxuXG4gICAgICBOb3RlIHRoYXQgb25seSBlbGVtZW50cyB0aGF0IGFyZSBzdHJpY3RseSBpbiB0aGUgZnV0dXJlIGV2ZXIgYmVjb21lIGRldGVybWluZWQuXG4gICAgICBJbiBwYXJ0aWN1bGFyLCBpZiBbc3RhcnRdIGlzIG5vdCBpbiB0aGUgZnV0dXJlLCBvciBbc3RhcnRdIGlzIG5vdCBwcm92aWRlZCxcbiAgICAgIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlbGVtZW50IGJlZm9yZSB0aGUgW2ludGVydmFsXSBoYXMgcGFzc2VkLlxuXG4gICAgICBJZiB0aGUgaW50ZXJ2YWwgaXMgdG9vIHNtYWxsIG9yIHRoZSBDUFUgaXMgdG9vIGxvYWRlZCwgW2F0X2ludGVydmFsc10gd2lsbCBza2lwXG4gICAgICB1bnRpbCB0aGUgbmV4dCB1cGNvbWluZyBtdWx0aXBsZSBvZiBbaW50ZXJ2YWxdIGFmdGVyIFtzdGFydF0uICopXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZiAoKV0gZXZlcnkgW3NwYW5dIGFtb3VudCBvZiB0aW1lIHN0YXJ0aW5nIHdoZW5cbiAgICAgIFtzdGFydF0gYmVjb21lcyBkZXRlcm1pbmVkIGFuZCBzdG9wcGluZyB3aGVuIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuICBbZXZlcnknXVxuICAgICAgd2FpdHMgdW50aWwgdGhlIG91dGNvbWUgb2YgW2YgKCldIGJlY29tZXMgZGV0ZXJtaW5lZCBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIG5leHRcbiAgICAgIFtzcGFuXS5cblxuICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGlmIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQsIGV2ZW4gZHVyaW5nIGV2YWx1YXRpb24gb2YgW2ZdLFxuICAgICAgdGhlbiBbZl0gd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluIGJ5IGEgc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuXG5cbiAgICAgIEl0IGlzIGFuIGVycm9yIGZvciBbc3Bhbl0gdG8gYmUgbm9ucG9zaXRpdmUuXG5cbiAgICAgIFtjb250aW51ZV9vbl9lcnJvcl0gY29udHJvbHMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlXSwgaXRlcmF0aW9uIG9ubHkgY29udGludWVzIGlmIFtmXSBzdWNjZXNzZnVsbHlcbiAgICAgIHJldHVybnMgYSBkZWZlcnJlZCBhbmQgdGhhdCBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLCBpdGVyYXRpb24gYWxzbyBjb250aW51ZXMgaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBJZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbiBhc3luY2hyb25vdXNseSwgdGhpcyBtYXkgY2F1c2UgdXMgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgICAgbmV4dCBpdGVyYXRpb24gd2hpbGUgdGhlIHByZXZpb3VzIGNhbGwgdG8gW2ZdIGlzIHN0aWxsIHJ1bm5pbmcuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW2V2ZXJ5J10gd2FzXG4gICAgICBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLlxuXG4gICAgICBJZiBbZmluaXNoZWRdIGlzIHN1cHBsaWVkLCBbZXZlcnknXSB3aWxsIGZpbGwgaXQgb25jZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBiZWNvbWVcbiAgICAgIGRldGVybWluZWQ6IFtzdGFydF0sIFtzdG9wXSwgYW5kIHRoZSBvdXRjb21lIG9mIHRoZSBmaW5hbCBjYWxsIHRvIFtmXS4gKilcbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2V2ZXJ5ID9zdGFydCA/c3RvcCBzcGFuIGZdIGlzXG4gICAgICBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKV0uICopXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmKCldIGF0IGluY3JlbWVudHMgb2YgW3N0YXJ0ICsgaSAqXG4gICAgICBzcGFuXSBmb3Igbm9ubmVnYXRpdmUgaW50ZWdlcnMgW2ldLCB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLlxuICAgICAgSWYgdGhlIHJlc3VsdCBvZiBbZl0gaXMgbm90IGRldGVybWluZWQgZmFzdCBlbm91Z2ggdGhlbiB0aGUgbmV4dCBpbnRlcnZhbChzKVxuICAgICAgYXJlIHNraXBwZWQgc28gdGhhdCB0aGVyZSBhcmUgbmV2ZXIgbXVsdGlwbGUgY29uY3VycmVudCBpbnZvY2F0aW9ucyBvZiBbZl0gaW5cbiAgICAgIGZsaWdodC5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICBbcnVuX2F0X2ludGVydmFscyddIHdhcyBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLiAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGZdIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhblxuICAgICAgICAgIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKSBdfSAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2R1cmF0aW9uX29mIGZdIGludm9rZXMgW2YgKCldIGFuZCBtZWFzdXJlcyBob3cgbG9uZyBpdCB0YWtlcyBmcm9tIHRoZSBpbnZvY2F0aW9uXG4gICAgICB0byBhZnRlciB0aGUgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cblxuICAgICAgTm90ZSB0aGF0IHRoZSBtZWFzdXJlbWVudCBpcyBub3QgZXhhY3Q7IGJlY2F1c2UgaXQgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBtYXAgb24gdGhlXG4gICAgICBkZWZlcnJlZCwgdGhlIHRpbWluZyBhbHNvIGluY2x1ZGVzIHRoZSBkdXJhdGlvbiBvZiBqb2JzIGluIHRoZSBqb2IgcXVldWUgd2hlbiBbZiAoKV1cbiAgICAgIGlzIGRldGVybWluZWQuICopXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG5lbmRcblxuKCoqIFtDbG9ja19kZXByZWNhdGVkXSBpcyB1c2VkIGluIFtSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXSB0byBjcmVhdGUgYSBjbG9ja1xuICAgIG1vZHVsZSBpbiB3aGljaCBhbGwgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLiAqKVxubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cbiAgZW5kXG5cbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cbmVuZFxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2spIDogQ2xvY2tfZGVwcmVjYXRlZCA9IENcblxuICBtb2R1bGUgXyAoQyA6IENsb2NrX2RlcHJlY2F0ZWQpIDogQ2xvY2sgPSBDXG5lbmQgOlxuc2lnIGVuZClcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IENsb2NrX2ludGYuQ2xvY2tcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBDbG9ja19pbnRmLkNsb2NrX2RlcHJlY2F0ZWRcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBDbG9ja19pbnRmLk9yX3RpbWVvdXRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB0aW1lX3NvdXJjZSAoKSA9IChTY2hlZHVsZXIudCAoKSkudGltZV9zb3VyY2UgfD4gVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXNcbmxldCBhZnRlciBzcGFuID0gVGltZV9zb3VyY2UuYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG5sZXQgYXQgdGltZSA9IFRpbWVfc291cmNlLmF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgY29tcHV0ZV9zcGFuID1cbiAgVGltZV9zb3VyY2UuYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgKHRpbWVfc291cmNlICgpKSBjb21wdXRlX3NwYW5cbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wIGludGVydmFsID1cbiAgVGltZV9zb3VyY2UuYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGludGVydmFsXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCAodGltZV9zb3VyY2UgKCkpIHNwYW4gZlxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZlxuOztcblxubGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG5sZXQgcnVuX2F0IHRpbWUgZiBhID0gVGltZV9zb3VyY2UucnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIGFcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWwgZlxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICAodGltZV9zb3VyY2UgKCkpXG4gICAgaW50ZXJ2YWxcbiAgICBmXG47O1xuXG5sZXQgd2l0aF90aW1lb3V0IHNwYW4gZCA9IFRpbWVfc291cmNlLndpdGhfdGltZW91dCAodGltZV9zb3VyY2UgKCkpIHNwYW4gZFxubGV0IGR1cmF0aW9uX29mIGYgPSBUaW1lX3NvdXJjZS5kdXJhdGlvbl9vZiAodGltZV9zb3VyY2UgKCkpIGZcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9zb3VyY2UuRXZlbnRcblxuICBsZXQgYWZ0ZXIgc3BhbiA9IGFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxuICBsZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gcnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbiAgbGV0IGF0IHRpbWUgPSBhdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcbiAgbGV0IHJ1bl9hdCB0aW1lIGYgeiA9IHJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiB6XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCBpIGIgPVxuICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0XG4gICAgICB0aGVuIEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgZWxzZSBmIGkgYiB0LihpKSA+Pj4gZnVuIGIgLT4gbG9vcCAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPSBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+IGYgaSBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSBpblxuICBBcnJheS5vZl9saXN0IChDb3JlLkxpc3QucmV2IGJzKVxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBBcnJheS5vZl9saXN0X3JldlxuICAgIChBcnJheS5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgQXJyYXkuZmlsdGVyX29wdFxuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCB0ID0gbWFwaSB0ID9ob3cgfmYgaW5cbiAgQXJyYXkuY29uY2F0IChBcnJheS50b19saXN0IHQpXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICB0aGVuIHJldHVybiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCViaW5kIGYgaSB0LihpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXV4IChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGF1eCAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgP2hvdyB0IH5mID0gaXRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgP2hvdyB0IH5mID0gY29uY2F0X21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChBcnJheS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIHQgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgIGIgOjogYnMpXG4gID4+fCBMaXN0LnJldlxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0ID9ob3cgfmYgaW5cbiAgTGlzdC5yZXYgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxubGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IGZpbHRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxudHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG5sZXQgY2hhbmdlIHQgayB+ZiA9XG4gIGxldCVtYXAgb3B0ID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuY2hhbmdlIHQgayB+ZjooZnVuIF8gLT4gb3B0KVxuOztcblxubGV0IHVwZGF0ZSB0IGsgfmYgPVxuICBsZXQlbWFwIGRhdGEgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5zZXQgdCB+a2V5OmsgfmRhdGFcbjs7XG5cbmxldCBpdGVyX2tleXMgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKE1hcC5rZXlzIHQpIH5mXG5sZXQgaXRlciA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLmRhdGEgdCkgfmZcbmxldCBpdGVyaSA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLnRvX2FsaXN0IHQpIH5mOihmdW4gKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbm1vZHVsZSBKb2IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgeyBrZXkgOiAnYVxuICAgIDsgZGF0YSA6ICdiXG4gICAgOyBtdXRhYmxlIHJlc3VsdCA6ICdjIG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuZW5kXG5cbmxldCBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmYgPVxuICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIHQgaW5cbiAgbGV0IHNlcXVlbmNlID0gTWFwLnRvX3NlcXVlbmNlIH5vcmRlcjpgSW5jcmVhc2luZ19rZXkgdCBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6QmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcbiAgICAgIH5mOihmdW4gcyAoa2V5LCBkYXRhKSB+ayAtPlxuICAgICAgICB1cG9uIChmIH5rZXkgfmRhdGEpIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBrIHNcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICBCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5hZGRfZXhuXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgayBzKSlcbiAgICAgIH5maW5pc2g6KGZ1biB4IC0+XG4gICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAoTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgKEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWUgeCkpKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPiBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmZcbiAgfCBgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfIC0+XG4gICAgbGV0IGpvYnMgPSByZWYgW10gaW5cbiAgICBsZXQgam9iX21hcCA9XG4gICAgICBNYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBsZXQgam9iID0geyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBOb25lIH0gaW5cbiAgICAgICAgam9icyA6PSBqb2IgOjogIWpvYnM7XG4gICAgICAgIGpvYilcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPVxuICAgICAgTGlzdC5pdGVyIH5ob3cgKEJhc2UuTGlzdC5yZXYgIWpvYnMpIH5mOihmdW5jdGlvblxuICAgICAgICB8IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gXyB9IGFzIGpvYiAtPlxuICAgICAgICAgIGxldCVtYXAgeCA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgIGpvYi5yZXN1bHQgPC0geClcbiAgICBpblxuICAgIE1hcC5maWx0ZXJfbWFwIGpvYl9tYXAgfmY6Sm9iLnJlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcl9rZXlzID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGtleSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBtYXBpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIHogPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBTb21lIHopXG47O1xuXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1lcmdlID9ob3cgdDEgdDIgfmYgPVxuICBmaWx0ZXJfbWFwXG4gICAgP2hvd1xuICAgIChNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5IHogLT4gU29tZSAoZnVuICgpIC0+IGYgfmtleSB6KSkpXG4gICAgfmY6KGZ1biB0aHVuayAtPiB0aHVuayAoKSlcbjs7XG5cbmxldCBhbGwgdCA9IG1hcCB0IH5mOkZuLmlkXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IHJlcmFpc2UgPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4biAtPiBFeG4ucmVyYWlzZSBleG4gXCJjYXVnaHQgZXhjZXB0aW9uIGluIG1lbW9pemVkIGZ1bmN0aW9uXCJcbjs7XG5cbmxldCBnZW5lcmFsICh0eXBlIGEpIChoYXNoYWJsZSA6IChtb2R1bGUgSGFzaGFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGEpKSBmID1cbiAgbGV0IG1vZHVsZSBIYXNoYWJsZSA9ICh2YWwgaGFzaGFibGUpIGluXG4gIGxldCBmID1cbiAgICBNZW1vLmdlbmVyYWwgfmhhc2hhYmxlOkhhc2hhYmxlLmhhc2hhYmxlIChmdW4gYSAtPlxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IGYgYSkpXG4gIGluXG4gIFN0YWdlZC5zdGFnZSAoZnVuIGEgLT4gZiBhID4+fCByZXJhaXNlKVxuOztcblxubGV0IHVuaXQgZiA9XG4gIGxldCBmID1cbiAgICBNZW1vLnVuaXQgKGZ1biAoKSAtPlxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICBmKVxuICBpblxuICBTdGFnZWQuc3RhZ2UgKGZ1biAoKSAtPiBmICgpID4+fCByZXJhaXNlKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE9wdGlvbi50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoU29tZSBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSBhIC0+IGYgYVxuICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQucmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBPcHRpb24ubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmVuZFxuXG4oKiBDb3BpZWQgdG8gW2VhZ2VyX2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gZXhuID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgeCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBmaW5kX21hcCB0IH5mOihmdW4gZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP2hvdyB0IH5mID0gaXRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IHJlYyByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIG1hdGNoJWJpbmQgZiBzdGF0ZSB3aXRoXG4gIHwgYFJlcGVhdCBzdGF0ZSAtPiByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZlxuICB8IGBGaW5pc2hlZCBzdGF0ZSAtPiByZXR1cm4gc3RhdGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxuKCogV2UgaW1wbGVtZW50IGFsbCBvZiB0aGUgW1F1ZXVlXSBvcGVyYXRpb25zIGJ5IGNvbnZlcnRpbmcgdGhlIHF1ZXVlIHRvIGEgbGlzdCBhbmQgdGhlblxuICAgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgW0xpc3RdIG9wZXJhdGlvbi4gIFdlIHVzZSBsaXN0cyByYXRoZXIgdGhhbiBhcnJheXMgYmVjYXVzZVxuICAgYXJyYXlzIGxvbmdlciB0aGFuIGEgY2VydGFpbiBsZW5ndGggYXJlIGFsbG9jYXRlZCBpbiB0aGUgbWFqb3IgaGVhcCwgd2hpY2ggY2FuIGNhdXNlXG4gICB1bm5lY2Vzc2FyeSBwcm9tb3Rpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS4gIEFsc28sIHdoZW4gb25lIGlzIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5LCB0aGUgZW50aXJlIGFycmF5IG11c3QgYmUga2VwdCBhbGl2ZS4gIFdoZW4gZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYSBsaXN0LCBvbmx5IHRoZSByZW1haW5pbmcgdGFpbCBvZiB0aGUgbGlzdCBpcyBrZXB0IGFsaXZlLiAgU28sIHVzaW5nXG4gICBhcnJheXMgcmF0aGVyIHRoYW4gbGlzdHMgd291bGQgaW5jcmVhc2UgdGhlIGxpdmUtc3BhY2UgbmVlZGVkIGJ5IHRoZSBwcm9ncmFtLiAqKVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBhbGwgdCA9IExpc3QuYWxsIChRdWV1ZS50b19saXN0IHQpID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgYWxsX3VuaXQgdCA9IExpc3QuYWxsX3VuaXQgKFF1ZXVlLnRvX2xpc3QgdClcbmxldCBpdGVyID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgaXRlcmkgP2hvdyB0IH5mID0gTGlzdC5pdGVyaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgbWFwID9ob3cgdCB+ZiA9IExpc3QubWFwID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBtYXBpID9ob3cgdCB+ZiA9IExpc3QubWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgaW5pdCA/aG93IG4gfmYgPSBMaXN0LmluaXQgP2hvdyBuIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcGkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxuXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIHggLT4gZiB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGNvbmNhdF9tYXBpID9ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcGkgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIGkgeCAtPiBmIGkgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRfbWFwaSB0IH5mID0gTGlzdC5maW5kX21hcGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kaSB0IH5mID0gTGlzdC5maW5kaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBMaXN0LmZvcl9hbGxpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IExpc3QuZXhpc3RzaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbigqIFtmb2xkX21hcGkgP2hvdyB0IH5pbml0IH5tYXBpX2YgfmZvbGRfZl0gaXMgYSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mOlxuXG4gICB7W1xuICAgICBmb2xkIH5pbml0IH5mOihmdW4gYiBhIC0+IHJldHVybiAoZm9sZF9mIGIgYSkpIChtYXBpIHQgP2hvdyB+ZjptYXBpX2YpIF19XG5cbiAgIEl0IGF2b2lkcyBjcmVhdGluZyB0aGUgaW50ZXJtZWRpYXRlIHNlcXVlbmNlIHRoYXQgd291bGQgcmVzdWx0IGZyb20gW21hcGldLCBhbmRcbiAgIGFsbG93cyB0aGUgW2ZvbGRdIHRvIHByb2NlZWQgY29uY3VycmVudGx5IHdpdGggdGhlIFttYXBpXSwgc28gdGhhdCBvbmUgY2FuIGFjY3VtdWxhdGVcbiAgIHRoZSByZXN1bHQgYXMgc29vbiBhcyBwb3NzaWJsZSwgcG9zc2libHkgYXZvaWRpbmcgY3JlYXRpbmcgYW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZVxuICAgKGUuZy4gW2l0ZXJpXSBhbmQgW2ZpbHRlcl9tYXBdIHVzZXMgW2ZvbGRfbWFwaV0gdG8gZG8gdGhpcykuICopXG5sZXQgZm9sZF9tYXBpXG4gICAgICAodHlwZSBhIGIgYylcbiAgICAgID8oaG93ID0gYFNlcXVlbnRpYWwpXG4gICAgICAodCA6IGEgU2VxdWVuY2UudClcbiAgICAgIH4oaW5pdCA6IGMpXG4gICAgICB+KG1hcGlfZiA6IGludCAtPiBhIC0+IGIgRGVmZXJyZWQudClcbiAgICAgIH4oZm9sZF9mIDogYyAtPiBiIC0+IGMpXG4gIDogYyBEZWZlcnJlZC50XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPlxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjKSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJldHVybiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSB0IChmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgaW5pdFxuICB8IGBQYXJhbGxlbCAtPlxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsb29wXG4gICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgIHRcbiAgICAgICAgICAobGV0JWJpbmQgYiA9IG1hcGlfZiBpIGEgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBsZXQgdGhyb3R0bGUgPSBUaHJvdHRsZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIGluXG4gICAgKCogW2xvb3BdIGZvcmNlcyB0aGUgaW5wdXQgc2VxdWVuY2UgYW5kIGVucXVldWVzIGEgdGhyb3R0bGUgam9iIG9ubHkgaWYgdGhlcmUgaXNcbiAgICAgICBjYXBhY2l0eSBhdmFpbGFibGUuICopXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBUaHJvdHRsZS5jYXBhY2l0eV9hdmFpbGFibGUgdGhyb3R0bGUgaW5cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsb29wXG4gICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgIHRcbiAgICAgICAgICAobGV0JWJpbmQgYiA9IFRocm90dGxlLmVucXVldWUgdGhyb3R0bGUgKGZ1biAoKSAtPiBtYXBpX2YgaSBhKSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgIHRcbiAgICB+aW5pdDooMCwgaW5pdClcbiAgICB+ZjooZnVuIChpLCBiKSBhIH5rIC0+XG4gICAgICBsZXQlYmluZCBiID0gZiBpIGIgYSBpblxuICAgICAgayAoaSArIDEsIGIpKVxuICAgIH5maW5pc2g6KGZ1biAoXywgYikgLT4gcmV0dXJuIGIpXG47O1xuXG4oKiBbZm9sZF0gaXMgbm90IGltcGxlbWVudGVkIGluIHRlcm1zIG9mIFtmb2xkaV0gdG8gc2F2ZSB0aGUgaW50ZXJtZWRpYXRlIGNsb3N1cmVcbiAgIGFsbG9jYXRpb24uICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkIHQgfmluaXQgfmY6KGZ1biBiIGEgfmsgLT4gZiBiIGEgPj49IGspIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgYWxsIHQgPVxuICBsZXQlbWFwIHJlcyA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWNjdW0gZCAtPlxuICAgICAgbGV0JW1hcCBhID0gZCBpblxuICAgICAgYSA6OiBhY2N1bSlcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgcmVzKVxuOztcblxubGV0IGFsbF91bml0IHQgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IHYpXG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmV0dXJuIE5vbmVcbiAgICB8IFNvbWUgKHYsIHJlc3QpIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgdiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSByZXN0IH5mIChpICsgMSlcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBmaW5kX21hcGkgdCB+ZiAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJpID9ob3cgdCB+ZiA6IHVuaXQgRGVmZXJyZWQudCA9XG4gIGZvbGRfbWFwaSA/aG93IHQgfm1hcGlfZjpmIH5pbml0OigpIH5mb2xkX2Y6KGZ1biAoKSAoKSAtPiAoKSlcbjs7XG5cbmxldCBtYXBpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaSA/aG93IHQgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSkgfmluaXQ6W10gfmZvbGRfZjooZnVuIGJzIGIgLT4gYiA6OiBicylcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgYnMpXG47O1xuXG4oKiBbZmlsdGVyX21hcGldIGlzIGltcGxlbWVudGVkIHVzaW5nIFtmb2xkX21hcGldIHJhdGhlciB0aGFuIFttYXBdIHNvIHRoYXQgd2UgbmV2ZXIgbmVlZFxuICAgdG8ga2VlcCBhIGxvbmcgc3RyZWFtIG9mIGludGVybWVkaWF0ZSBbTm9uZV0gcmVzdWx0cyBpbiB0aGUgYWNjdW11bGF0b3IsIG9ubHkgdG8gbGF0ZXJcbiAgIGZpbHRlciB0aGVtIGFsbCBvdXQuICopXG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpXG4gICAgICB0XG4gICAgICA/aG93XG4gICAgICB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKVxuICAgICAgfmluaXQ6W11cbiAgICAgIH5mb2xkX2Y6KGZ1biBicyBtYXliZV92IC0+XG4gICAgICAgIG1hdGNoIG1heWJlX3Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYnNcbiAgICAgICAgfCBTb21lIGIgLT4gYiA6OiBicylcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmYgPj58IFNlcXVlbmNlLmNvbmNhdFxuXG5sZXQgZmlsdGVyaSA/aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCVtYXAgZiBpIGEgd2l0aFxuICAgIHwgdHJ1ZSAtPiBTb21lIGFcbiAgICB8IGZhbHNlIC0+IE5vbmUpXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9IGZpbHRlcmkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKFNlcXVlbmNlLmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIENsb2NrX25zID0gQ2xvY2tfbnNcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFRpbWUgPSBUaW1lXG5tb2R1bGUgQXN5bmNfa2VybmVsX3NjaGVkdWxlciA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXJcbm1vZHVsZSBEYXRlID0gRGF0ZVxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBldmVyeSA9IENsb2NrX25zLmV2ZXJ5XG5sZXQgd2l0aF90aW1lb3V0ID0gQ2xvY2tfbnMud2l0aF90aW1lb3V0XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuXG5sZXQgc2hvd19kZWJ1Z19tZXNzYWdlcyA9IHJlZiBmYWxzZVxubGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiBmYWxzZVxuXG5tb2R1bGUgRmx1c2hlZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBPa1xuICAgIHwgYFJlYWRlcl9jbG9zZWRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCBjb21iaW5lIChsIDogdCBEZWZlcnJlZC50IGxpc3QpID1cbiAgICBsZXQlbWFwIGwgPSBEZWZlcnJlZC5hbGwgbCBpblxuICAgIG1hdGNoIExpc3QubWVtIGwgYFJlYWRlcl9jbG9zZWQgfmVxdWFsIHdpdGhcbiAgICB8IHRydWUgLT4gYFJlYWRlcl9jbG9zZWRcbiAgICB8IGZhbHNlIC0+IGBPa1xuICA7O1xuZW5kXG5cbigqIEEgW0NvbnN1bWVyLnRdIGFjdHMgYXMgdGhlIG1vbml0b3Igb2Ygc29tZSBwcm9jZXNzIHRoYXQgcmVhZHMgdmFsdWVzIGZyb20gYSBwaXBlIGFuZFxuICAgcHJvY2Vzc2VzIHRoZW0sIGFsbG93aW5nIHRoYXQgcHJvY2VzczpcbiAgIC0gdG8gY29tbXVuaWNhdGUgdGhhdCBpdCBoYXMgdGFrZW4gcmVzcG9uc2liaWxpdHkgZm9yIHRoZSB2YWx1ZXNcbiAgIC0gdG8gc2lnbmFsIHdoZW4gaXQgaGFzIGZpbmlzaGVkIHdpdGggdGhlIHZhbHVlcyB0byBpbnRlcmVzdGVkIHBhcnRpZXMgKHZpYVxuICAgICBbZG93bnN0cmVhbV9mbHVzaGVkXSlcblxuICAgSXQgaXMgdXNlZCBpbiB0d28gc3RlcHM6XG5cbiAgIDEuIGNhbGxpbmcgW0NvbnN1bWVyLnN0YXJ0XSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGNvbnN1bWVyIHRha2VzIHZhbHVlcyBvdXQgb2YgdGhlXG4gICBQaXBlIHZpYSBbcmVhZF0gb3IgW3JlYWQnXS5cblxuICAgMi4gY2FsbGluZyBbQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV0uXG5cbiAgIEJ5IGNhbGxpbmcgW3ZhbHVlc19zZW50X2Rvd25zdHJlYW1dIG9uZSBhc3NlcnRzIHRoYXQgdGhlIFtkb3duc3RyZWFtX2ZsdXNoZWRdIGZ1bmN0aW9uXG4gICBzdXBwbGllZCB0byBbY3JlYXRlXSB3aWxsIG5vdyB3YWl0IGZvciB0aGlzIHZhbHVlLlxuXG4gICBJZiBubyBbQ29uc3VtZXIudF0gaXMgc3VwcGxpZWQgd2hlbiBhIHZhbHVlIGlzIHJlYWQgdGhlbiB0aGUgdmFsdWUgaXMgZGVmaW5lZCB0byBiZVxuICAgZmx1c2hlZCBhdCB0aGF0IHRpbWUuICopXG5tb2R1bGUgQ29uc3VtZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogIHBpcGVfaWQ6aW50XG4gICAgLT4gZG93bnN0cmVhbV9mbHVzaGVkOih1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAtPiB0XG5cbiAgdmFsIHBpcGVfaWQgOiB0IC0+IGludFxuICB2YWwgc3RhcnQgOiB0IC0+IHVuaXRcbiAgdmFsIHZhbHVlc19zZW50X2Rvd25zdHJlYW0gOiB0IC0+IHVuaXRcbiAgdmFsIHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgOiB0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwaXBlX2lkIDogaW50XG4gICAgOyAoKiBbdmFsdWVzX3JlYWRdIHJlZmxlY3RzIHdoZXRoZXIgdmFsdWVzIHRoZSBjb25zdW1lciBoYXMgcmVhZCBmcm9tIHRoZSBwaXBlIGhhdmUgYmVlblxuICAgICAgICAgc2VudCBkb3duc3RyZWFtIG9yIGlmIG5vdCwgaG9sZHMgYW4gaXZhciB0aGF0IGlzIHRvIGJlIGZpbGxlZCB3aGVuIHRoZXkgYXJlLiAqKVxuICAgICAgbXV0YWJsZSB2YWx1ZXNfcmVhZCA6XG4gICAgICAgIFsgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gb2YgdW5pdCBJdmFyLnQgXVxuICAgIDsgKCogW2Rvd25zdHJlYW1fZmx1c2hlZCAoKV0gcmV0dXJucyB3aGVuIGFsbCBwcmlvciB2YWx1ZXMgdGhhdCB0aGUgY29uc3VtZXIgaGFzXG4gICAgICAgICBwYXNzZWQgZG93bnN0cmVhbSBoYXZlIGJlZW4gZmx1c2hlZCBhbGwgdGhlIHdheSBkb3duIHRoZSBjaGFpbiBvZiBwaXBlcy4gKilcbiAgICAgIGRvd25zdHJlYW1fZmx1c2hlZCA6IHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnBpcGVfaWQ6aWdub3JlXG4gICAgICAgIH52YWx1ZXNfcmVhZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgICAgICAgICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgICAgfmRvd25zdHJlYW1fZmx1c2hlZDppZ25vcmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLkNvbnN1bWVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnBpcGVfaWQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gICAgeyBwaXBlX2lkOyB2YWx1ZXNfcmVhZCA9IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtOyBkb3duc3RyZWFtX2ZsdXNoZWQgfVxuICA7O1xuXG4gIGxldCBzdGFydCB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBfIC0+ICgpXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gKEl2YXIuY3JlYXRlICgpKVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW1cbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+IHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gd2hlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHdoZW5fc2VudF9kb3duc3RyZWFtIGluXG4gICAgICB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX3JlYWQgPSBzdHJ1Y3RcbiAgKCogQSBbQmxvY2tlZF9yZWFkLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIHJlYWQgYXR0ZW1wdC4gIElmIHNvbWVvbmUgcmVhZHMgZnJvbSBhbiBlbXB0eVxuICAgICBwaXBlLCB0aGV5IGVucXVldWUgYSBbQmxvY2tlZF9yZWFkLnRdIGluIHRoZSBxdWV1ZSBvZiBbYmxvY2tlZF9yZWFkc10uICBMYXRlciwgd2hlblxuICAgICB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gYSBwaXBlLCB0aGF0IHdpbGwgY2F1c2Ugc29tZSBudW1iZXIgb2YgYmxvY2tlZCByZWFkcyB0byBiZVxuICAgICBmaWxsZWQsIGZpcnN0IGNvbWUgZmlyc3Qgc2VydmUuICBUaGUgYmxvY2tlZC1yZWFkIGNvbnN0cnVjdG9yIHNwZWNpZmllcyBob3cgbWFueVxuICAgICB2YWx1ZXMgYSByZWFkIHNob3VsZCBjb25zdW1lIGZyb20gdGhlIHBpcGUgd2hlbiBpdCBnZXRzIGl0cyB0dXJuLlxuXG4gICAgIElmIGEgcGlwZSBpcyBjbG9zZWQsIHRoZW4gYWxsIGJsb2NrZWQgcmVhZHMgd2lsbCBiZSBmaWxsZWQgd2l0aCBbYEVvZl0uICopXG4gIHR5cGUgJ2Egd2FudHMgPVxuICAgIHwgWmVybyBvZiBbIGBFb2YgfCBgT2sgXSBJdmFyLnRcbiAgICB8IE9uZSBvZiBbIGBFb2YgfCBgT2sgb2YgJ2EgXSBJdmFyLnRcbiAgICB8IEF0X21vc3Qgb2YgaW50ICogWyBgRW9mIHwgYE9rIG9mICdhIFF1ZXVlLnQgXSBJdmFyLnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2FudHMgOiAnYSB3YW50c1xuICAgIDsgY29uc3VtZXIgOiBDb25zdW1lci50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH53YW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBaZXJvIF8gfCBPbmUgXyAtPiAoKVxuICAgICAgICAgICAgIHwgQXRfbW9zdCAoaSwgXykgLT4gYXNzZXJ0IChpID4gMCkpKVxuICAgICAgICB+Y29uc3VtZXI6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBjb25zdW1lciAtPiBDb25zdW1lci5pbnZhcmlhbnQgY29uc3VtZXIpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLkJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgd2FudHMgY29uc3VtZXIgPSB7IHdhbnRzOyBjb25zdW1lciB9XG5cbiAgbGV0IGlzX2VtcHR5IHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgT25lIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBBdF9tb3N0IChfLCBpKSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgOztcblxuICBsZXQgZmlsbF93aXRoX2VvZiB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gICAgfCBPbmUgaSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gICAgfCBBdF9tb3N0IChfLCBpKSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfZmx1c2ggPSBzdHJ1Y3RcbiAgKCogQSBbQmxvY2tlZF9mbHVzaC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCBmbHVzaCBvcGVyYXRpb24sIHdoaWNoIGNhbiBiZSBlbmFibGVkIGJ5IGFcbiAgICAgZnV0dXJlIHJlYWQuICBJZiBzb21lb25lIGRvZXMgW2ZsdXNoZWQgcF0gb24gYSBwaXBlLCB0aGF0IGJsb2NrcyB1bnRpbCBldmVyeXRoaW5nXG4gICAgIHRoYXQncyBjdXJyZW50bHkgaW4gdGhlIHBpcGUgYXQgdGhhdCBwb2ludCBoYXMgZHJhaW5lZCBvdXQgb2YgdGhlIHBpcGUuICBXaGVuIHdlIGNhbGxcbiAgICAgW2ZsdXNoZWRdLCBpdCByZWNvcmRzIHRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gc28gZmFyIGluXG4gICAgIFtmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXS4gIFdlIGZpbGwgdGhlIFtGbHVzaC50XSB3aXRoIFtgT2tdIHdoZW4gdGhpcyBhbW91bnQgb2ZcbiAgICAgZGF0YSBoYXMgYmVlbiByZWFkIGZyb20gdGhlIHBpcGUuXG5cbiAgICAgQSBbQmxvY2tlZF9mbHVzaC50XSBjYW4gYWxzbyBiZSBmaWxsZWQgd2l0aCBbYFJlYWRlcl9jbG9zZWRdLCB3aGljaCBoYXBwZW5zIHdoZW4gdGhlXG4gICAgIHJlYWRlciBlbmQgb2YgdGhlIHBpcGUgaXMgY2xvc2VkLCBhbmQgd2UgYXJlIHRodXMgc3VyZSB0aGF0IHRoZSB1bnJlYWQgZWxlbWVudHNcbiAgICAgcHJlY2VkaW5nIHRoZSBmbHVzaCB3aWxsIG5ldmVyIGJlIHJlYWQuICopXG4gIHR5cGUgdCA9XG4gICAgeyBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIDogaW50XG4gICAgOyByZWFkeSA6IFsgYE9rIHwgYFJlYWRlcl9jbG9zZWQgXSBJdmFyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgZmlsbCB0IHYgPSBJdmFyLmZpbGwgdC5yZWFkeSB2XG5lbmRcblxudHlwZSAoJ2EsICdwaGFudG9tKSB0ID1cbiAgeyAoKiBbaWRdIGlzIGFuIGludGVnZXIgdXNlZCB0byBkaXN0aW5ndWlzaCBwaXBlcyB3aGVuIGRlYnVnZ2luZy4gKilcbiAgICBpZCA6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRcbiAgOyAoKiBbaW5mb10gaXMgdXNlci1wcm92aWRlZCBhcmJpdHJhcnkgc2V4cCwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gKilcbiAgICBtdXRhYmxlIGluZm8gOiBTZXhwLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgKCogW2J1ZmZlcl0gaG9sZHMgdmFsdWVzIHdyaXR0ZW4gdG8gdGhlIHBpcGUgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiByZWFkLiAqKVxuICAgIG11dGFibGUgYnVmZmVyIDogJ2EgUXVldWUudFxuICA7ICgqIFtzaXplX2J1ZGdldF0gZ292ZXJucyBwdXNoYmFjayBvbiB3cml0ZXJzIHRvIHRoZSBwaXBlLlxuXG4gICAgICAgVGhlcmUgaXMgKm5vKiBpbnZhcmlhbnQgdGhhdCBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSBzaXplX2J1ZGdldF0uICBUaGVyZSBpcyBub1xuICAgICAgIGhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdHVmZmVkIGludG8gdGhlIFtidWZmZXJdLlxuICAgICAgIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgaGFuZGxlIHdyaXRlcy4gIFdoZW4gd2UgZG8gYSB3cml0ZSwgYWxsIG9mIHRoZSB2YWx1ZXNcbiAgICAgICB3cml0dGVuIGFyZSBpbW1lZGlhdGVseSBlbnF1ZXVlZCBpbnRvIFtidWZmZXJdLiAgQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbUXVldWUubGVuZ3RoXG4gICAgICAgYnVmZmVyIDw9IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZXIgd2lsbCBiZSBub3RpZmllZCB0byBjb250aW51ZSB3cml0aW5nLlxuICAgICAgIEFmdGVyIHRoZSB3cml0ZSwgaWYgW2xlbmd0aCB0ID4gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlIHdpbGwgYmxvY2sgdW50aWwgdGhlXG4gICAgICAgcGlwZSBpcyB1bmRlciBidWRnZXQuICopXG4gICAgbXV0YWJsZSBzaXplX2J1ZGdldCA6IGludFxuICA7ICgqIFtwdXNoYmFja10gaXMgdXNlZCB0byBnaXZlIGZlZWRiYWNrIHRvIHdyaXRlcnMgYWJvdXQgd2hldGhlciB0aGV5IHNob3VsZCB3cml0ZSB0b1xuICAgICAgIHRoZSBwaXBlLiAgW3B1c2hiYWNrXSBpcyBmdWxsIGlmZiBbbGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdF0uICopXG4gICAgbXV0YWJsZSBwdXNoYmFjayA6IHVuaXQgSXZhci50XG4gIDsgKCogW251bV92YWx1ZXNfcmVhZF0ga2VlcHMgdHJhY2sgb2YgdGhlIHRvdGFsIG51bWJlciBvZiB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gcmVhZFxuICAgICAgIGZyb20gdGhlIHBpcGUuICBXZSBkbyBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBvdmVyZmxvdyBpbiBbbnVtX3ZhbHVlc19yZWFkXS4gIFlvdSdkXG4gICAgICAgbmVlZCB0byB3cml0ZSAyXjYyIGVsZW1lbnRzIHRvIHRoZSBwaXBlLCB3aGljaCB3b3VsZCB0YWtlIGFib3V0IDE0NiB5ZWFycywgYXQgYVxuICAgICAgIGZsb3cgcmF0ZSBvZiAxIHNpemUtdW5pdC9uYW5vc2Vjb25kLiAqKVxuICAgIG11dGFibGUgbnVtX3ZhbHVlc19yZWFkIDogaW50XG4gIDsgKCogW2Jsb2NrZWRfZmx1c2hlc10gaG9sZHMgZmx1c2hlcyB3aG9zZSBwcmVjZWRpbmcgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBjb21wbGV0ZWx5XG4gICAgICAgcmVhZC4gIEZvciBlYWNoIGJsb2NrZWQgZmx1c2gsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlIGluIG9yZGVyIHRvIGZpbGwgdGhlIGZsdXNoIGlzICAgICAgICAgICAgICAgICAgICAgICAgOlxuXG4gICAgICAgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCAtIG51bV92YWx1ZXNfcmVhZFxuXG4gICAgICAgS2VlcGluZyB0aGUgZGF0YSBpbiB0aGlzIGZvcm0gYWxsb3dzIHVzIHRvIGNoYW5nZSBhIHNpbmdsZSBmaWVsZChudW1fdmFsdWVzX3JlYWQpXG4gICAgICAgd2hlbiB3ZSBjb25zdW1lIHZhbHVlcyBpbnN0ZWFkIG9mIGhhdmluZyB0byBpdGVyYXRlIG92ZXIgdGhlIHdob2xlIHF1ZXVlIG9mXG4gICAgICAgZmx1c2hlcy4gKilcbiAgICBibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQgUXVldWUudFxuICA7ICgqIFtibG9ja2VkX3JlYWRzXSBob2xkcyByZWFkcyB0aGF0IGFyZSB3YWl0aW5nIG9uIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgcGlwZS4gKilcbiAgICBibG9ja2VkX3JlYWRzIDogJ2EgQmxvY2tlZF9yZWFkLnQgUXVldWUudFxuICA7ICgqIFtjbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbcmVhZF9jbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSByZWFkIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICByZWFkX2Nsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW2NvbnN1bWVyc10gaXMgYSBsaXN0IG9mIGFsbCBjb25zdW1lcnMgdGhhdCBtYXkgYmUgaGFuZGxpbmcgdmFsdWVzIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlLiAqKVxuICAgIG11dGFibGUgY29uc3VtZXJzIDogQ29uc3VtZXIudCBsaXN0XG4gIDsgKCogW3Vwc3RyZWFtX2ZsdXNoZWRzXSBoYXMgYSBmdW5jdGlvbiBmb3IgZWFjaCBwaXBlIGltbWVkaWF0ZWx5IHVwc3RyZWFtIG9mIHRoaXMgb25lLlxuICAgICAgIFRoYXQgZnVuY3Rpb24gd2Fsa3MgdG8gdGhlIGhlYWQocykgb2YgdGhlIHVwc3RyZWFtIHBpcGUsIGFuZCBjYWxsc1xuICAgICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdIG9uIHRoZSBoZWFkKHMpLiAgU2VlIHRoZSBkZWZpbml0aW9uIG9mIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgICAgIGJlbG93LiAqKVxuICAgIHVwc3RyZWFtX2ZsdXNoZWRzIDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgcGlwZSA9ICgnYSwgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCB0LmlkXG5sZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IGNvbXBhcmUgdDEgdDIgPSBJbnQuY29tcGFyZSB0MS5pZCB0Mi5pZFxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG5sZXQgaXNfcmVhZF9jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnJlYWRfY2xvc2VkXG5sZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcbmxldCBwdXNoYmFjayB0ID0gSXZhci5yZWFkIHQucHVzaGJhY2tcbmxldCBsZW5ndGggdCA9IFF1ZXVlLmxlbmd0aCB0LmJ1ZmZlclxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5pbmZvOmlnbm9yZVxuICAgICAgfmJ1ZmZlcjppZ25vcmVcbiAgICAgIH5zaXplX2J1ZGdldDooY2hlY2sgKGZ1biBzaXplX2J1ZGdldCAtPiBhc3NlcnQgKHNpemVfYnVkZ2V0ID49IDApKSlcbiAgICAgIH5wdXNoYmFjazpcbiAgICAgICAgKGNoZWNrIChmdW4gcHVzaGJhY2sgLT5cbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBCb29sLmVxdWFsXG4gICAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHB1c2hiYWNrKVxuICAgICAgICAgICAgICAgKGxlbmd0aCB0IDw9IHQuc2l6ZV9idWRnZXQgfHwgaXNfY2xvc2VkIHQpKSkpXG4gICAgICB+bnVtX3ZhbHVlc19yZWFkOmlnbm9yZVxuICAgICAgfmJsb2NrZWRfZmx1c2hlczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9mbHVzaGVzIC0+XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gKGYgOiBCbG9ja2VkX2ZsdXNoLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChmLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPiB0Lm51bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIExpc3QuaXNfc29ydGVkXG4gICAgICAgICAgICAgICB+Y29tcGFyZTpJbnQuY29tcGFyZVxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoUXVldWUudG9fbGlzdCBibG9ja2VkX2ZsdXNoZXMpXG4gICAgICAgICAgICAgICAgICB+ZjpCbG9ja2VkX2ZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgaWYgaXNfZW1wdHkgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9mbHVzaGVzKSkpXG4gICAgICB+YmxvY2tlZF9yZWFkczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9yZWFkcyAtPlxuICAgICAgICAgICAoKiBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgbm8gb25lIGlzIHdhaXRpbmcgZm9yIGl0LiAgVGhpcyB3b3VsZCBuZWVkIHRvIGNoYW5nZSBpZlxuICAgICAgICAgICAgICB3ZSBldmVyIGltcGxlbWVudCBbcmVhZF9leGFjdGx5XSBhcyBhbiBhdG9taWMgb3BlcmF0aW9uLiAqKVxuICAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKTtcbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX3JlYWRzIH5mOihmdW4gcmVhZCAtPlxuICAgICAgICAgICAgIEJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgcmVhZDtcbiAgICAgICAgICAgICBhc3NlcnQgKEJsb2NrZWRfcmVhZC5pc19lbXB0eSByZWFkKSk7XG4gICAgICAgICAgICgqIFlvdSBuZXZlciBibG9jayB0cnlpbmcgdG8gcmVhZCBhIGNsb3NlZCBwaXBlLiAqKVxuICAgICAgICAgICBpZiBpc19jbG9zZWQgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcykpKVxuICAgICAgfmNsb3NlZDppZ25vcmVcbiAgICAgIH5yZWFkX2Nsb3NlZDppZ25vcmVcbiAgICAgIH5jb25zdW1lcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGwgLT5cbiAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biBjb25zdW1lciAtPlxuICAgICAgICAgICAgIENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcjtcbiAgICAgICAgICAgICBhc3NlcnQgKENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXIgPSB0LmlkKSkpKVxuICAgICAgfnVwc3RyZWFtX2ZsdXNoZWRzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbmxldCBpZF9yZWYgPSByZWYgMFxuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXIgPVxuICBpbmNyIGlkX3JlZjtcbiAgbGV0IHQgPVxuICAgIHsgaWQgPSAhaWRfcmVmXG4gICAgOyBpbmZvXG4gICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgcmVhZF9jbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDtcbiAgICAgIHNpemVfYnVkZ2V0XG4gICAgOyBwdXNoYmFjayA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBidWZmZXIgPSBpbml0aWFsX2J1ZmZlclxuICAgIDsgbnVtX3ZhbHVlc19yZWFkID0gMFxuICAgIDsgYmxvY2tlZF9mbHVzaGVzID0gUXVldWUuY3JlYXRlICgpXG4gICAgOyBibG9ja2VkX3JlYWRzID0gUXVldWUuY3JlYXRlICgpXG4gICAgOyBjb25zdW1lcnMgPSBbXVxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHMgPSBCYWcuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgPVxuICBpZiBzaXplX2J1ZGdldCA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm5lZ2F0aXZlIHNpemVfYnVkZ2V0XCIgKHNpemVfYnVkZ2V0IDogaW50KV1cbiAgZWxzZSBzaXplX2J1ZGdldFxuOztcblxubGV0IGNyZWF0ZSA/c2l6ZV9idWRnZXQgP2luZm8gKCkgPVxuICBsZXQgc2l6ZV9idWRnZXQgPVxuICAgIG1hdGNoIHNpemVfYnVkZ2V0IHdpdGhcbiAgICB8IFNvbWUgdiAtPiB2YWxpZGF0ZV9zaXplX2J1ZGdldCB2XG4gICAgfCBOb25lIC0+IDBcbiAgaW5cbiAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlcjooUXVldWUuY3JlYXRlICgpKSBpblxuICAoKiBpbml0aWFsbHksIHRoZSBwaXBlIGRvZXMgbm90IHB1c2hiYWNrICopXG4gIEl2YXIuZmlsbCB0LnB1c2hiYWNrICgpO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIHQsIHRcbjs7XG5cbmxldCB1cGRhdGVfcHVzaGJhY2sgdCA9XG4gIGlmIGxlbmd0aCB0IDw9IHQuc2l6ZV9idWRnZXQgfHwgaXNfY2xvc2VkIHRcbiAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgdC5wdXNoYmFjayAoKVxuICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LnB1c2hiYWNrXG4gIHRoZW4gdC5wdXNoYmFjayA8LSBJdmFyLmNyZWF0ZSAoKVxuOztcblxubGV0IGNsb3NlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIChcbiAgICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX3JlYWRzIH5mOkJsb2NrZWRfcmVhZC5maWxsX3dpdGhfZW9mO1xuICAgICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdClcbjs7XG5cbmxldCBjbG9zZV9yZWFkIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZV9yZWFkXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX3JlYWRfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LnJlYWRfY2xvc2VkICgpO1xuICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biBmbHVzaCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYFJlYWRlcl9jbG9zZWQpO1xuICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9mbHVzaGVzO1xuICAgIFF1ZXVlLmNsZWFyIHQuYnVmZmVyO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgICgqIHdlIGp1c3QgY2xlYXJlZCB0aGUgYnVmZmVyLCBzbyBtYXkgbmVlZCB0byBmaWxsIFt0LnB1c2hiYWNrXSAqKVxuICAgIGNsb3NlIHQpXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIHVwb24gKGYgdykgKGZ1biAoKSAtPiBjbG9zZSB3KTtcbiAgclxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXIgP3NpemVfYnVkZ2V0IH5jbG9zZV9vbl9leGNlcHRpb24gZiA9XG4gIGlmIG5vdCBjbG9zZV9vbl9leGNlcHRpb25cbiAgdGhlbiBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAgIH5ydW46XG4gICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgKGZ1biAoKSAtPiBmIHcpXG4gICAgICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgICAgIGNsb3NlIHc7XG4gICAgICAgICAgIHJldHVybiAoKSkpO1xuICAgIHIpXG47O1xuXG5sZXQgY3JlYXRlX3dyaXRlciA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICB+cnVuOlxuICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgfnJlc3Q6YExvZ1xuICAgICAgIChmdW4gKCkgLT4gZiByKVxuICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgIGNsb3NlX3JlYWQgcjtcbiAgICAgICAgIHJldHVybiAoKSkpO1xuICB3XG47O1xuXG5sZXQgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyID1cbiAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIuc3RhcnQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggUXVldWUucGVlayB0LmJsb2NrZWRfZmx1c2hlcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZsdXNoIC0+XG4gICAgICBpZiB0Lm51bV92YWx1ZXNfcmVhZCA+PSBmbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXG4gICAgICB0aGVuIChcbiAgICAgICAgaWdub3JlIChRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCk7XG4gICAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBPa1xuICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgICAgICAgIHVwb24gKENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgY29uc3VtZXIpIChmdW4gZmx1c2hfcmVzdWx0IC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGZsdXNoX3Jlc3VsdCkpO1xuICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuXG4oKiBbY29uc3VtZV9hbGwgdF0gcmVhZHMgYWxsIHRoZSBlbGVtZW50cyBpbiBbdF0uICopXG5sZXQgY29uc3VtZV9hbGwgdCBjb25zdW1lciA9XG4gIGxldCByZXN1bHQgPSB0LmJ1ZmZlciBpblxuICB0LmJ1ZmZlciA8LSBRdWV1ZS5jcmVhdGUgKCk7XG4gIHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgUXVldWUubGVuZ3RoIHJlc3VsdDtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZV9vbmUgdCBjb25zdW1lciA9XG4gIGFzc2VydCAobGVuZ3RoIHQgPj0gMSk7XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJ1ZmZlciBpblxuICB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIDE7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lciA9XG4gIGFzc2VydCAobWF4X3F1ZXVlX2xlbmd0aCA+PSAwKTtcbiAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA+PSBsZW5ndGggdFxuICB0aGVuIGNvbnN1bWVfYWxsIHQgY29uc3VtZXJcbiAgZWxzZSAoXG4gICAgdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBtYXhfcXVldWVfbGVuZ3RoO1xuICAgIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlIH5jYXBhY2l0eTptYXhfcXVldWVfbGVuZ3RoICgpIGluXG4gICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnQuYnVmZmVyIH5kc3Q6cmVzdWx0IH5sZW46bWF4X3F1ZXVlX2xlbmd0aCAoKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2V0X3NpemVfYnVkZ2V0IHQgc2l6ZV9idWRnZXQgPVxuICBsZXQgc2l6ZV9idWRnZXQgPSB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCBpblxuICB0LnNpemVfYnVkZ2V0IDwtIHNpemVfYnVkZ2V0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IGZpbGxfYmxvY2tlZF9yZWFkcyB0ID1cbiAgd2hpbGUgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKSkgJiYgbm90IChpc19lbXB0eSB0KSBkb1xuICAgIGxldCBibG9ja2VkX3JlYWQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfcmVhZHMgaW5cbiAgICBsZXQgY29uc3VtZXIgPSBibG9ja2VkX3JlYWQuY29uc3VtZXIgaW5cbiAgICBtYXRjaCBibG9ja2VkX3JlYWQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGBPa1xuICAgIHwgT25lIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpXG4gICAgfCBBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKSlcbiAgZG9uZVxuOztcblxuKCogY2hlY2tzIGFsbCBpbnZhcmlhbnRzLCBjYWxscyBhIHBhc3NlZCBpbiBmIHRvIGhhbmRsZSBhIHdyaXRlLCB0aGVuIHVwZGF0ZXMgcmVhZHMgYW5kXG4gICBwdXNoYmFjayAqKVxubGV0IHN0YXJ0X3dyaXRlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJ3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIndyaXRlIHRvIGNsb3NlZCBwaXBlXCIgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5sZXQgZmluaXNoX3dyaXRlIHQgPVxuICBmaWxsX2Jsb2NrZWRfcmVhZHMgdDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0O1xuICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6ZnJvbSB+ZHN0OnQuYnVmZmVyICgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHRyYW5zZmVyX2luIHQgfmZyb20gPVxuICB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb207XG4gIHB1c2hiYWNrIHRcbjs7XG5cbmxldCBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLml0ZXIgZnJvbSB+ZjooZnVuIHggLT4gUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB4KTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFt3cml0ZSddIGlzIHVzZWQgaW50ZXJuYWxseSAqKVxubGV0IHdyaXRlJyB0IHEgPSB0cmFuc2Zlcl9pbiB0IH5mcm9tOnFcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLmVucXVldWUgdC5idWZmZXIgdmFsdWU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUgdCB2YWx1ZSA9XG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IHdyaXRlX3doZW5fcmVhZHkgdCB+ZiA9XG4gIGxldCVtYXAgKCkgPSBwdXNoYmFjayB0IGluXG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYENsb3NlZCBlbHNlIGBPayAoZiAoZnVuIHggLT4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHgpKVxuOztcblxubGV0IHdyaXRlX2lmX29wZW4gdCB4ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZSB0IHggZWxzZSByZXR1cm4gKClcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiB0IHggPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4XG47O1xuXG5sZXQgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgP2NvbnN1bWVyIHQgPVxuICBtYXRjaCBjb25zdW1lciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICBpZiB0LmlkIDw+IENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQXR0ZW1wdCB0byB1c2UgY29uc3VtZXIgd2l0aCB3cm9uZyBwaXBlXCJcbiAgICAgICAgICAgIChjb25zdW1lciA6IENvbnN1bWVyLnQpXG4gICAgICAgICAgICB+cGlwZToodCA6IF8gUmVhZGVyLnQpXVxuOztcblxubGV0IHN0YXJ0X3JlYWQgP2NvbnN1bWVyIHQgbGFiZWwgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgbGFiZWwgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lclxuOztcblxubGV0IGdlbl9yZWFkX25vdyA/Y29uc3VtZXIgdCBjb25zdW1lID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9ub3dcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpZiBpc19jbG9zZWQgdCB0aGVuIGBFb2YgZWxzZSBgTm90aGluZ19hdmFpbGFibGVcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgICgqIGZyb20gW2ludmFyaWFudF0gYW5kIFtub3QgKGlzX2VtcHR5IHQpXSAqKVxuICAgIGBPayAoY29uc3VtZSB0IGNvbnN1bWVyKSlcbjs7XG5cbmxldCBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCA9XG4gIG1hdGNoIG1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICB8IFNvbWUgbWF4X3F1ZXVlX2xlbmd0aCAtPlxuICAgIGlmIG1heF9xdWV1ZV9sZW5ndGggPD0gMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJtYXhfcXVldWVfbGVuZ3RoIDw9IDBcIiAobWF4X3F1ZXVlX2xlbmd0aCA6IGludCldO1xuICAgIG1heF9xdWV1ZV9sZW5ndGhcbjs7XG5cbmxldCByZWFkX25vdycgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciAoZnVuIHQgY29uc3VtZXIgLT4gY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKVxuOztcblxubGV0IHJlYWRfbm93ID9jb25zdW1lciB0ID0gZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIGNvbnN1bWVfb25lXG5sZXQgcGVlayB0ID0gUXVldWUucGVlayB0LmJ1ZmZlclxuXG5sZXQgY2xlYXIgdCA9XG4gIG1hdGNoIHJlYWRfbm93JyB0IHdpdGhcbiAgfCBgRW9mIHwgYE5vdGhpbmdfYXZhaWxhYmxlIHwgYE9rIF8gLT4gKClcbjs7XG5cbmxldCByZWFkJyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgc3RhcnRfcmVhZCB0IFwicmVhZCdcIiA/Y29uc3VtZXI7XG4gIG1hdGNoIHJlYWRfbm93JyB0ID9jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgKGBPayBfIHwgYEVvZikgYXMgciAtPiByZXR1cm4gclxuICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX3JlYWRzXG4gICAgICAgIChCbG9ja2VkX3JlYWQuY3JlYXRlIChBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSkgY29uc3VtZXIpKVxuOztcblxubGV0IHJlYWQgP2NvbnN1bWVyIHQgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkXCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBpc19jbG9zZWQgdFxuICAgIHRoZW4gcmV0dXJuIGBFb2ZcbiAgICBlbHNlXG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoT25lIGl2YXIpKSBjb25zdW1lcikpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICByZXR1cm4gKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpKVxuOztcblxubGV0IHJlYWRfZXhuID9jb25zdW1lciB0ID1cbiAgbWF0Y2glbWFwIHJlYWQgP2NvbnN1bWVyIHQgd2l0aFxuICB8IGBPayB2YWx1ZSAtPiB2YWx1ZVxuICB8IGBFb2YgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhuOiByZWNlaXZlZCBFT0ZcIl1cbjs7XG5cbmxldCB2YWx1ZXNfYXZhaWxhYmxlIHQgPVxuICBzdGFydF9yZWFkIHQgXCJ2YWx1ZXNfYXZhaWxhYmxlXCI7XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gYE9rXG4gIGVsc2UgaWYgaXNfY2xvc2VkIHRcbiAgdGhlbiByZXR1cm4gYEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBRdWV1ZS5sYXN0IHQuYmxvY2tlZF9yZWFkcyB3aXRoXG4gICAgfCBTb21lIHsgY29uc3VtZXIgPSBOb25lOyB3YW50cyA9IFplcm8gaXZhciB9IC0+XG4gICAgICAoKiBUaGlzIGNhc2UgaXMgYW4gb3B0aW1pemF0aW9uIGZvciBtdWx0aXBsZSBjYWxscyB0byBbdmFsdWVzX2F2YWlsYWJsZV0gaW5cbiAgICAgICAgIHNlcXVlbmNlLiAgSXQgY2F1c2VzIHRoZW0gdG8gYWxsIHNoYXJlIHRoZSBzYW1lIGl2YXIsIHJhdGhlciB0aGFuIGFsbG9jYXRlXG4gICAgICAgICBhbiBpdmFyIHBlciBjYWxsLiAqKVxuICAgICAgSXZhci5yZWFkIGl2YXJcbiAgICB8IF8gLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChaZXJvIGl2YXIpKSBOb25lKSkpXG47O1xuXG5sZXQgcmVhZF9jaG9pY2UgdCA9IGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSB0KSAoZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+IHJlYWRfbm93IHQpXG5cbmxldCByZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuIHQgaGVyZSA9XG4gIERlZmVycmVkLkNob2ljZS5tYXAgKHJlYWRfY2hvaWNlIHQpIH5mOihmdW5jdGlvblxuICAgIHwgKGBPayBfIHwgYEVvZikgYXMgeCAtPiB4XG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJQaXBlLnJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG46IGNob2ljZSB3YXMgZW5hYmxlZCBidXQgcGlwZSBpcyBlbXB0eTsgXFxcbiAgICAgICAgICAgdGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24gd2l0aCBvbmUgb3IgbW9yZSBvdGhlciBjb25zdW1lcnNcIlxuICAgICAgICAgICAgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV0pXG47O1xuXG4oKiBbcmVhZF9leGFjdGx5IHQgfm51bV92YWx1ZXNdIGxvb3BzLCBnZXR0aW5nIHlvdSBhbGwgW251bV92YWx1ZXNdIGl0ZW1zLCB1cFxuICAgdG8gRU9GLiAqKVxubGV0IHJlYWRfZXhhY3RseSA/Y29uc3VtZXIgdCB+bnVtX3ZhbHVlcyA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfZXhhY3RseVwiID9jb25zdW1lcjtcbiAgaWYgbnVtX3ZhbHVlcyA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhhY3RseSBnb3QgbnVtX3ZhbHVlcyA8PSAwXCIgKG51bV92YWx1ZXMgOiBpbnQpXTtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoIC0+XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBsZXQgYWxyZWFkeV9yZWFkID0gUXVldWUubGVuZ3RoIHJlc3VsdCBpblxuICAgICAgYXNzZXJ0IChhbHJlYWR5X3JlYWQgPD0gbnVtX3ZhbHVlcyk7XG4gICAgICBpZiBhbHJlYWR5X3JlYWQgPSBudW1fdmFsdWVzXG4gICAgICB0aGVuIEl2YXIuZmlsbCBmaW5pc2ggKGBFeGFjdGx5IHJlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCcgP2NvbnN1bWVyIHQgfm1heF9xdWV1ZV9sZW5ndGg6KG51bV92YWx1ZXMgLSBhbHJlYWR5X3JlYWQpXG4gICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaCAoaWYgYWxyZWFkeV9yZWFkID0gMCB0aGVuIGBFb2YgZWxzZSBgRmV3ZXIgcmVzdWx0KVxuICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCBkb3duc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIExpc3QuaXNfZW1wdHkgdC5jb25zdW1lcnNcbiAgICB0aGVuIHJldHVybiBgT2tcbiAgICBlbHNlXG4gICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIChMaXN0Lm1hcCB0LmNvbnN1bWVycyB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkKVxuICBlbHNlXG4gICAgKCogW3RdIG1pZ2h0IGJlIGNsb3NlZC4gIEJ1dCB0aGUgcmVhZCBlbmQgY2FuJ3QgYmUgY2xvc2VkLCBiZWNhdXNlIGlmIGl0IHdlcmUsIHRoZW5cbiAgICAgICBbdF0gd291bGQgYmUgZW1wdHkuICBJZiB0aGUgd3JpdGUgZW5kIGlzIGNsb3NlZCBidXQgbm90IHRoZSByZWFkIGVuZCwgdGhlbiB3ZSB3YW50XG4gICAgICAgdG8gZW5xdWV1ZSBhIGJsb2NrZWQgZmx1c2ggYmVjYXVzZSB0aGUgZW5xdWV1ZWQgdmFsdWVzIG1heSBnZXQgcmVhZC4gKilcbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZWFkeSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfZmx1c2hlc1xuICAgICAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPSB0Lm51bV92YWx1ZXNfcmVhZCArIGxlbmd0aCB0OyByZWFkeSB9KVxuOztcblxuKCogSW4gcHJhY3RpY2UsIGFsb25nIHdpdGggW0xpbmsuY3JlYXRlXSBhbmQgW2FkZF91cHN0cmVhbV9mbHVzaGVkXSwgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICB0cmF2ZXJzZXMgdGhlIGdyYXBoIG9mIGxpbmtlZCBwaXBlcyB1cCB0byB0aGUgaGVhZHMgYW5kIHRoZW4gY2FsbHMgW2Rvd25zdHJlYW1fZmx1c2hlZF1cbiAgIG9uIHRoZW0uICopXG5sZXQgdXBzdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgQmFnLmlzX2VtcHR5IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgdGhlbiBkb3duc3RyZWFtX2ZsdXNoZWQgdFxuICBlbHNlXG4gICAgQmFnLnRvX2xpc3QgdC51cHN0cmVhbV9mbHVzaGVkc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gZiAtPiBmICgpKVxuICAgIHw+IEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbjs7XG5cbmxldCBhZGRfdXBzdHJlYW1fZmx1c2hlZCB0IHVwc3RyZWFtX2ZsdXNoZWQgPSBCYWcuYWRkIHQudXBzdHJlYW1fZmx1c2hlZHMgdXBzdHJlYW1fZmx1c2hlZFxuXG5sZXQgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gIGxldCBjb25zdW1lciA9IENvbnN1bWVyLmNyZWF0ZSB+cGlwZV9pZDp0LmlkIH5kb3duc3RyZWFtX2ZsdXNoZWQgaW5cbiAgdC5jb25zdW1lcnMgPC0gY29uc3VtZXIgOjogdC5jb25zdW1lcnM7XG4gIGNvbnN1bWVyXG47O1xuXG4oKiBBIFtMaW5rLnRdIGxpbmtzIGZsdXNoaW5nIG9mIHR3byBwaXBlcyB0b2dldGhlci4gKilcbm1vZHVsZSBMaW5rIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1cHN0cmVhbTooXywgXykgcGlwZSAtPiBkb3duc3RyZWFtOihfLCBfKSBwaXBlIC0+IHRcbiAgdmFsIGNvbnN1bWVyIDogdCAtPiBDb25zdW1lci50XG5cbiAgKCogW3VubGlua191cHN0cmVhbV0gcmVtb3ZlcyBkb3duc3RyZWFtJ3MgcmVmZXJlbmNlIHRvIHVwc3RyZWFtLiAqKVxuXG4gIHZhbCB1bmxpbmtfdXBzdHJlYW0gOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHVucGFja2VkID1cbiAgICB7IGRvd25zdHJlYW0gOiAoJ2EsICdiKSB0XG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnRcbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy5FbHQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogKF8sIF8pIHVucGFja2VkIC0+IHRcblxuICBsZXQgY29uc3VtZXIgKFQgdCkgPSB0LmNvbnN1bWVyXG5cbiAgbGV0IGNyZWF0ZSB+dXBzdHJlYW0gfmRvd25zdHJlYW0gPVxuICAgIFRcbiAgICAgIHsgZG93bnN0cmVhbVxuICAgICAgOyBjb25zdW1lciA9XG4gICAgICAgICAgYWRkX2NvbnN1bWVyIHVwc3RyZWFtIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0pXG4gICAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgPVxuICAgICAgICAgIGFkZF91cHN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0gKGZ1biAoKSAtPiB1cHN0cmVhbV9mbHVzaGVkIHVwc3RyZWFtKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCB1bmxpbmtfdXBzdHJlYW0gKFQgdCkgPVxuICAgIEJhZy5yZW1vdmUgdC5kb3duc3RyZWFtLnVwc3RyZWFtX2ZsdXNoZWRzIHQudXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbHVzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb25zdW1lciBvZiBDb25zdW1lci50XG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGZvbGRfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICA/KGZsdXNoZWQgPSBGbHVzaGVkLldoZW5fdmFsdWVfcmVhZClcbiAgICAgIHRcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA9XG4gIGxldCBjb25zdW1lciA9XG4gICAgbWF0Y2ggZmx1c2hlZCB3aXRoXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWQgLT4gTm9uZVxuICAgIHwgQ29uc3VtZXIgY29uc3VtZXIgLT4gU29tZSBjb25zdW1lclxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWQgLT5cbiAgICAgICgqIFRoZSBmYWN0IHRoYXQgXCJubyBjb25zdW1lclwiIGJlaGF2ZXMgZGlmZmVyZW50IGZyb20gXCJ0cml2aWFsIGNvbnN1bWVyXCIgaXMgd2VpcmQsXG4gICAgICAgICBidXQgdGhhdCdzIGhvdyB0aGUgY29uc3VtZXIgbWFjaGluZXJ5IHdvcmtzLiAqKVxuICAgICAgU29tZSAoYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+IHJldHVybiBgT2spKVxuICBpblxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgYlxuICAgICAgfCBgT2sgdiAtPiBmIGIgdiBjb250aW51ZVxuICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBsb29wIGJcbiAgICBhbmQgY29udGludWUgYiA9XG4gICAgICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtO1xuICAgICAgbG9vcCBiXG4gICAgaW5cbiAgICBsb29wIGluaXQpXG47O1xuXG5sZXQgZm9sZCcgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIHEgbG9vcCAtPlxuICAgIGYgYiBxID4+PiBsb29wKVxuOztcblxubGV0IGZvbGQgP2ZsdXNoZWQgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIGEgbG9vcCAtPiBmIGIgYSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkX3dpdGhvdXRfcHVzaGJhY2sgP2NvbnN1bWVyIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlblxuICAgIHJlYWRfbm93XG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBiIGEgbG9vcCAtPiBsb29wIChmIGIgYSkpXG4gICAgP2ZsdXNoZWQ6XG4gICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIGMgLT4gU29tZSAoQ29uc3VtZXIgYykpXG47O1xuXG5sZXQgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBmIGEgPVxuICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgdGhlbiBmIGFcbiAgZWxzZSAoXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46XG4gICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgKGZ1biAoKSAtPiBmIGEpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIChNb25pdG9yLmV4dHJhY3RfZXhuIGV4bikpXG47O1xuXG5sZXQgaXRlcicgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmYgPVxuICBmb2xkJyA/bWF4X3F1ZXVlX2xlbmd0aCA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgcSAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIHEpXG47O1xuXG5sZXQgaXRlciA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIGxvb3AgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBhID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbjs7XG5cbigqIFtpdGVyX3dpdGhvdXRfcHVzaGJhY2tdIGlzIGEgY29tbW9uIGNhc2UsIHNvIHdlIGltcGxlbWVudCBpdCBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLFxuICAgcmF0aGVyIHRoYW4gdmlhIFtpdGVyXS4gIFRoZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBvbmx5IG9uZSBlbGVtZW50IGF0IGEgdGltZSwgc28gdGhhdFxuICAgaWYgW2ZdIGNsb3NlcyBbdF0gb3IgcmFpc2VzLCBubyBtb3JlIGVsZW1lbnRzIHdpbGwgYmUgcmVhZC4gKilcbmxldCBpdGVyX3dpdGhvdXRfcHVzaGJhY2tcbiAgICAgID9jb25zdW1lclxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKVxuICAgICAgP21heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICAgIHRcbiAgICAgIH5mXG4gID1cbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIGxldCBtYXhfaXRlcmF0aW9uc19wZXJfam9iID1cbiAgICBtYXRjaCBtYXhfaXRlcmF0aW9uc19wZXJfam9iIHdpdGhcbiAgICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgU29tZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iIC0+XG4gICAgICBpZiBtYXhfaXRlcmF0aW9uc19wZXJfam9iIDw9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJpdGVyX3dpdGhvdXRfcHVzaGJhY2sgZ290IG5vbi1wb3NpdGl2ZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iXCJcbiAgICAgICAgICAgICAgKG1heF9pdGVyYXRpb25zX3Blcl9qb2IgOiBpbnQpXTtcbiAgICAgIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgaW5cbiAgbGV0IGYgPVxuICAgIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gZlxuICAgIGVsc2VcbiAgICAgIGZ1biBhIC0+XG4gICAgICAgIHRyeSBmIGEgd2l0aFxuICAgICAgICB8IGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4blxuICBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCByZWMgc3RhcnQgKCkgPSBsb29wIH5yZW1haW5pbmc6bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgIGFuZCBsb29wIH5yZW1haW5pbmcgPVxuICAgICAgaWYgcmVtYWluaW5nID0gMFxuICAgICAgdGhlbiByZXR1cm4gKCkgPj4+IGZ1biAoKSAtPiBzdGFydCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCAoKVxuICAgICAgICB8IGBPayBhIC0+XG4gICAgICAgICAgZiBhO1xuICAgICAgICAgIGxvb3AgfnJlbWFpbmluZzoocmVtYWluaW5nIC0gMSlcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBzdGFydCAoKSlcbiAgICBpblxuICAgIHN0YXJ0ICgpKVxuOztcblxubGV0IGRyYWluIHQgPSBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG5sZXQgZHJhaW5fYW5kX2NvdW50IHQgPSBmb2xkJyB0IH5pbml0OjAgfmY6KGZ1biBzdW0gcSAtPiByZXR1cm4gKHN1bSArIFF1ZXVlLmxlbmd0aCBxKSlcblxubGV0IHJlYWRfYWxsIGlucHV0ID1cbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQlbWFwICgpID1cbiAgICBpdGVyJyBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICByZXN1bHRcbjs7XG5cbmxldCB0b19saXN0IHIgPSByZWFkX2FsbCByID4+fCBRdWV1ZS50b19saXN0XG5cbmxldCB0b19zdHJlYW1fZGVwcmVjYXRlZCB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KVxuICAgID4+PiBmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBbb2Zfc3RyZWFtX2RlcHJlY2F0ZWRdIGRvZXMgYXMgbXVjaCBiYXRjaGluZyBhcyBwb3NzaWJsZS4gIEl0XG4gICBncmFicyBhcyBtYW55IGl0ZW1zIGFzIGFyZSBhdmFpbGFibGUgaW50byBhbiBpbnRlcm5hbCBxdWV1ZS4gIE9uY2UgaXQgaGFzIGdyYWJiZWRcbiAgIGV2ZXJ5dGhpbmcsIGl0IHdyaXRlcyBpdCB0byB0aGUgcGlwZSBhbmQgdGhlbiBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIG5leHQgZWxlbWVudCBmcm9tXG4gICB0aGUgc3RyZWFtLlxuXG4gICBUaGVyZSdzIG5vIHBvc3NpYmlsaXR5IHRoYXQgd2UnbGwgc3RhcnZlIHRoZSBwaXBlIHJlYWRpbmcgYW4gZW5kbGVzcyBzdHJlYW0sIGp1c3RcbiAgIGFjY3VtdWxhdGluZyB0aGUgZWxlbWVudHMgaW50byBvdXIgcHJpdmF0ZSBxdWV1ZSBmb3JldmVyIHdpdGhvdXQgZXZlciB3cml0aW5nIHRoZW1cbiAgIGRvd25zdHJlYW0gdG8gdGhlIHBpcGUuICBXaHk/IGJlY2F1c2Ugd2hpbGUgd2UncmUgcnVubmluZywgdGhlIHN0cmVhbS1wcm9kdWNlciAqaXNuJ3QqXG4gICBydW5uaW5nIC0tIHRoZXJlIGFyZSBubyBBc3luYyBibG9jayBwb2ludHMgaW4gdGhlIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3AuICBTbyB0aGVcbiAgIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3Agd2lsbCBldmVudHVhbGx5IGNhdGNoIHVwIHRvIHRoZSBjdXJyZW50IHN0cmVhbSB0YWlsLCBhdCB3aGljaFxuICAgcG9pbnQgd2UnbGwgZG8gdGhlIHBpcGUtd3JpdGUgYW5kIHRoZW4gYmxvY2sgb24gdGhlIHN0cmVhbS4uLiB0aHVzIGdpdmluZyB0aGVcbiAgIHN0cmVhbS1wcm9kdWNlciBhIGNoYW5jZSB0byBtYWtlIG1vcmUgZWxlbWVudHMuXG5cbiAgIE9uZSBjYW4ndCBpbXBsZW1lbnQgW29mX3N0cmVhbV0gdXNpbmcgW1N0cmVhbS5pdGVyXSBvciBbU3RyZWFtLml0ZXInXSBiZWNhdXNlIHlvdVxuICAgbmVlZCB0byBiZSBhYmxlIHRvIHN0b3AgZWFybHkgd2hlbiB0aGUgY29uc3VtZXIgY2xvc2VzIHRoZSBwaXBlLiAgQWxzbywgdXNpbmcgZWl0aGVyXG4gICBvZiB0aG9zZSB3b3VsZCBlbnRhaWwgc2lnbmlmaWNhbnRseSBtb3JlIGRlZmVycmVkIG92ZXJoZWFkLCB3aGVyZWFzIHRoZSBiZWxvd1xuICAgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRlZmVycmVkIG9ubHkgd2hlbiBpdCBuZWVkcyB0byB3YWl0IGZvciBkYXRhIGZyb20gdGhlIHN0cmVhbS4gKilcbmxldCBvZl9zdHJlYW1fZGVwcmVjYXRlZCBzID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHEgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHRyYW5zZmVyICgpID1cbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHEpXG4gICAgdGhlblxuICAgICAgKCogQ2FuIG5vdCBwdXNoYmFjayBvbiB0aGUgc3RyZWFtLCBzbyBpZ25vcmUgdGhlIHB1c2hiYWNrIG9uIHRoZSBwaXBlLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKHdyaXRlJyB3IHEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfY2xvc2VkIHcpKTtcbiAgICBsZXQgbmV4dF9kZWZlcnJlZCA9IFN0cmVhbS5uZXh0IHMgaW5cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIG5leHRfZGVmZXJyZWQgd2l0aFxuICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0XG4gICAgfCBOb25lIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIHVwb24gbmV4dF9kZWZlcnJlZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0XG4gIGFuZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0IG5leHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB3KSB0aGVuIGxvb3BfbmV4dCBuZXh0XG4gIGFuZCBsb29wX25leHQgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIGNsb3NlIHdcbiAgICB8IENvbnMgKHgsIHMpIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlIHEgeDtcbiAgICAgIGxvb3Agc1xuICBpblxuICBsb29wIHM7XG4gIHJcbjs7XG5cbmxldCB0cmFuc2Zlcl9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgIHdyaXRlXG4gICAgICBpbnB1dFxuICAgICAgb3V0cHV0XG4gICAgICB+ZlxuICA9XG4gIGlmICFjaGVja19pbnZhcmlhbnRcbiAgdGhlbiAoXG4gICAgaW52YXJpYW50IGlucHV0O1xuICAgIGludmFyaWFudCBvdXRwdXQpO1xuICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dCB+ZG93bnN0cmVhbTpvdXRwdXQgaW5cbiAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICgqIFdoZW4gd2UncmUgZG9uZSB3aXRoIFtpbnB1dF0sIHdlIHVubGluayB0byByZW1vdmUgcG9pbnRlcnMgZnJvbVxuICAgICBbb3V0cHV0XSB0byBbaW5wdXRdLCB3aGljaCB3b3VsZCBjYXVzZSBhIHNwYWNlIGxlYWsgaWYgd2UgaGFkIHNpbmdsZSBsb25nLWxpdmVkXG4gICAgIG91dHB1dCBpbnRvIHdoaWNoIHdlIHRyYW5zZmVyIGxvdHMgb2Ygc2hvcnQtbGl2ZWQgaW5wdXRzLiAqKVxuICBsZXQgdW5saW5rICgpID0gTGluay51bmxpbmtfdXBzdHJlYW0gbGluayBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICAoKiBXZSBkbyBbcmV0dXJuICgpID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiAqKVxuICAgIHJldHVybiAoKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBsZXQgb3V0cHV0X2Nsb3NlZCAoKSA9XG4gICAgICBjbG9zZV9yZWFkIGlucHV0O1xuICAgICAgdW5saW5rICgpO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IH5jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPlxuICAgICAgICAgIHVubGluayAoKTtcbiAgICAgICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICAgIHwgYE9rIHggLT4gZiB4IGNvbnRpbnVlXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgY2hvb3NlXG4gICAgICAgICAgICBbIGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSBpbnB1dCkgaWdub3JlOyBjaG9pY2UgKGNsb3NlZCBvdXRwdXQpIGlnbm9yZSBdXG4gICAgICAgICAgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGFuZCBjb250aW51ZSB5ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwdXNoYmFjayA9IHdyaXRlIG91dHB1dCB5IGluXG4gICAgICAgIENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgIHB1c2hiYWNrID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgdHJhbnNmZXInID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCB0cmFuc2ZlciBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgb3V0cHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG47O1xuXG5sZXQgdHJhbnNmZXJfaWQgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0ID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gayBxKVxuOztcblxubGV0IG1hcF9nZW4gcmVhZCB3cml0ZSBpbnB1dCB+ZiA9XG4gIGxldCBpbmZvID0gT3B0aW9uLm1hcCBpbnB1dC5pbmZvIH5mOihmdW4gaW5mbyAtPiBbJXNleHAgTWFwcGVkIChpbmZvIDogU2V4cC50KV0pIGluXG4gIGxldCByZXN1bHQsIG91dHB1dCA9IGNyZWF0ZSA/aW5mbyAoKSBpblxuICB1cG9uICh0cmFuc2Zlcl9nZW4gcmVhZCB3cml0ZSBpbnB1dCBvdXRwdXQgfmYpIChmdW4gKCkgLT4gY2xvc2Ugb3V0cHV0KTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG5cbmxldCBjb25jYXRfbWFwX2xpc3QgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmNvbmNhdF9tYXAgcSB+ZikpXG47O1xuXG5sZXQgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4gcSAtPiBEZWZlcnJlZC5RdWV1ZS5maWx0ZXJfbWFwIHEgfmYpXG47O1xuXG5sZXQgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuZmlsdGVyX21hcCBxIH5mOihmdW4geCAtPiBpZiBpc19yZWFkX2Nsb3NlZCBpbnB1dCB0aGVuIE5vbmUgZWxzZSBmIHgpKSlcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0JW1hcCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZjooZnVuIGFjY3VtIGEgLT5cbiAgICBsZXQgYWNjdW0sIGIgPSBmIGFjY3VtIGEgaW5cbiAgICBhY2N1bSwgU29tZSBiKVxuOztcblxubGV0IGZpbHRlciBpbnB1dCB+ZiA9IGZpbHRlcl9tYXAgaW5wdXQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cbmxldCBvZl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQ6MCB+aW5mbzpOb25lIH5pbml0aWFsX2J1ZmZlcjooUXVldWUub2ZfbGlzdCBsKSBpblxuICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICB0XG47O1xuXG5sZXQgZW1wdHkgKCkgPSBvZl9saXN0IFtdXG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCByZWFkZXIsIHdyaXRlciA9IGNyZWF0ZSAoKSBpblxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciB4O1xuICBjbG9zZSB3cml0ZXI7XG4gIHJlYWRlclxuOztcblxubGV0IHVuZm9sZCB+aW5pdDpzIH5mID1cbiAgKCogVG8gZ2V0IHNvbWUgYmF0Y2hpbmcsIHdlIHJ1biB0aGUgY29udGludWF0aW9uIGltbWVkaWF0ZWx5IGlmIHRoZSBkZWZlcnJlZCBpc1xuICAgICBkZXRlcm1pbmVkLiAgSG93ZXZlciwgd2UgYWx3YXlzIGNoZWNrIGZvciBwdXNoYmFjay4gIEJlY2F1c2Ugc2l6ZSBidWRnZXQgY2FuJ3QgYmVcbiAgICAgaW5maW5pdGUsIHRoZSBiZWxvdyBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXZlbnR1YWxseSB5aWVsZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICBsZXQgKCA+Pj1+ICkgZCBmID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgIGYgc1xuICAgICAgPj49fiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IHJldHVybiAoKVxuICAgICAgfCBTb21lIChhLCBzKSAtPlxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHRoZW4gcmV0dXJuICgpIGVsc2Ugd3JpdGUgd3JpdGVyIGEgPj49fiBmdW4gKCkgLT4gbG9vcCBzXG4gICAgaW5cbiAgICBsb29wIHMpXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGVucXVldWVfbiBzZXF1ZW5jZSBpID1cbiAgICAgIGlmIGkgPD0gMFxuICAgICAgdGhlbiBzZXF1ZW5jZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgc2VxdWVuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VxdWVuY2VcbiAgICAgICAgfCBTb21lIChhLCBzZXF1ZW5jZSkgLT5cbiAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHdyaXRlci5idWZmZXIgYTtcbiAgICAgICAgICBlbnF1ZXVlX24gc2VxdWVuY2UgKGkgLSAxKSlcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBzZXF1ZW5jZSA9XG4gICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHx8IFNlcXVlbmNlLmlzX2VtcHR5IHNlcXVlbmNlXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YXJ0X3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0IHNlcXVlbmNlID0gZW5xdWV1ZV9uIHNlcXVlbmNlICgxICsgd3JpdGVyLnNpemVfYnVkZ2V0IC0gbGVuZ3RoIHdyaXRlcikgaW5cbiAgICAgICAgZmluaXNoX3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0JWJpbmQgKCkgPSBwdXNoYmFjayB3cml0ZXIgaW5cbiAgICAgICAgbG9vcCBzZXF1ZW5jZSlcbiAgICBpblxuICAgIGxvb3Agc2VxdWVuY2UpXG47O1xuXG50eXBlICdhIHRvX3NlcXVlbmNlX2VsdCA9XG4gIHwgVmFsdWUgb2YgJ2FcbiAgfCBXYWl0X2ZvciA6IF8gRGVmZXJyZWQudCAtPiBfIHRvX3NlcXVlbmNlX2VsdFxuXG5sZXQgdG9fc2VxdWVuY2UgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooKSB+ZjooZnVuICgpIC0+XG4gICAgbWF0Y2ggcmVhZF9ub3cgdCB3aXRoXG4gICAgfCBgRW9mIC0+IE5vbmVcbiAgICB8IGBPayBhIC0+IFNvbWUgKFZhbHVlIGEsICgpKVxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IFNvbWUgKFdhaXRfZm9yICh2YWx1ZXNfYXZhaWxhYmxlIHQpLCAoKSkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZV9waXBlIGlucHV0cyA9XG4gIGxldCBvdXRwdXQsIG91dHB1dF93cml0ZXIgPSBjcmVhdGUgfmluZm86WyVzZXhwIFwiUGlwZS5pbnRlcmxlYXZlXCJdICgpIGluXG4gICgqIFdlIGtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxsIHRoZSBwaXBlcyB0aGF0IFtpbnRlcmxlYXZlX3BpcGVdIGlzIG1hbmFnaW5nO1xuICAgICBbaW5wdXRzXSBjb3VudHMgYXMgb25lLiAgV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHdlIGtub3cgdGhhdCBhbGxcbiAgICAgcGlwZXMgYXJlIGNsb3NlZCBhbmQgd2UgY2FuIGNsb3NlIFtvdXRwdXRfd3JpdGVyXS4gKilcbiAgbGV0IG51bV9waXBlc19yZW1haW5pbmcgPSByZWYgMSBpblxuICBsZXQgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpID1cbiAgICBkZWNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgaWYgIW51bV9waXBlc19yZW1haW5pbmcgPSAwIHRoZW4gY2xvc2Ugb3V0cHV0X3dyaXRlclxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlbWFwICgpID1cbiAgICAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgIGluY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgIChsZXQlbWFwICgpID0gdHJhbnNmZXJfaWQgaW5wdXQgb3V0cHV0X3dyaXRlciBpblxuICAgICAgICAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKSlcbiAgICAgaW5cbiAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKTtcbiAgKCogZm9yIFtpbnB1dHNdICopXG4gIG91dHB1dFxuOztcblxubGV0IGludGVybGVhdmUgaW5wdXRzID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciBpbnB1dHMgfmY6aW52YXJpYW50O1xuICBpbnRlcmxlYXZlX3BpcGUgKG9mX2xpc3QgaW5wdXRzKVxuOztcblxubGV0IG1lcmdlIGlucHV0cyB+Y29tcGFyZSA9XG4gIG1hdGNoIGlucHV0cyB3aXRoXG4gIHwgW10gLT4gZW1wdHkgKClcbiAgfCBbIGlucHV0IF0gLT4gaW5wdXRcbiAgfCBpbnB1dHMgLT5cbiAgICBsZXQgbW9kdWxlIEhlYXAgPSBQYWlyaW5nX2hlYXAgaW5cbiAgICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICAgIHVwb24gKGNsb3NlZCB3KSAoZnVuICgpIC0+IExpc3QuaXRlciBpbnB1dHMgfmY6Y2xvc2VfcmVhZCk7XG4gICAgbGV0IGhlYXAgPSBIZWFwLmNyZWF0ZSB+Y21wOihmdW4gKGExLCBfKSAoYTIsIF8pIC0+IGNvbXBhcmUgYTEgYTIpICgpIGluXG4gICAgbGV0IGhhbmRsZV9yZWFkIGlucHV0IGVvZl9vcl9vayA9XG4gICAgICBtYXRjaCBlb2Zfb3Jfb2sgd2l0aFxuICAgICAgfCBgRW9mIC0+ICgpXG4gICAgICB8IGBPayB2IC0+IEhlYXAuYWRkIGhlYXAgKHYsIGlucHV0KVxuICAgIGluXG4gICAgbGV0IHJlYyBwb3BfaGVhcF9hbmRfbG9vcCAoKSA9XG4gICAgICAoKiBBdCB0aGlzIHBvaW50LCBhbGwgaW5wdXRzIG5vdCBhdCBFb2Ygb2NjdXIgaW4gW2hlYXBdIGV4YWN0bHkgb25jZSwgc28gd2Uga25vd1xuICAgICAgICAgd2hhdCB0aGUgbmV4dCBvdXRwdXQgZWxlbWVudCBpcy4gIFtwb3BfaGVhcF9hbmRfbG9vcF0gcmVwZWF0ZWRseSB0YWtlcyBlbGVtZW50c1xuICAgICAgICAgZnJvbSB0aGUgaW5wdXRzIGFzIGxvbmcgYXMgaXQgaGFzIG9uZSBmcm9tIGVhY2ggaW5wdXQuICBUaGlzIGlzIGRvbmVcbiAgICAgICAgIHN5bmNocm9ub3VzbHkgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBkZWZlcnJlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSBvdXRwdXQgLS1cbiAgICAgICAgIHRoZXJlJ3Mgbm8gbmVlZCB0byBwdXNoYmFjayBzaW5jZSB0aGF0IGlzIG9ubHkgbW92aW5nIGVsZW1lbnRzIGZyb20gb25lIHBpcGUgdG9cbiAgICAgICAgIGFub3RoZXIuICBBcyBzb29uIGFzIFtwb3BfaGVhcF9hbmRfbG9vcF0gY2FuJ3QgZ2V0IGFuIGVsZW1lbnQgZnJvbSBzb21lIGlucHV0LCBpdFxuICAgICAgICAgd2FpdHMgb24gcHVzaGJhY2sgZnJvbSB0aGUgb3V0cHV0LCBzaW5jZSBpdCBoYXMgdG8gd2FpdCBvbiB0aGUgaW5wdXQgYW55d2F5LlxuICAgICAgICAgVGhpcyBhbHNvIHByZXZlbnRzIFttZXJnZV0gZnJvbSBjb25zdW1pbmcgaW5wdXRzIGF0IGEgcmF0ZSBmYXN0ZXIgdGhhbiBpdHMgb3V0cHV0XG4gICAgICAgICBpcyBjb25zdW1lZC4gKilcbiAgICAgIG1hdGNoIEhlYXAucG9wIGhlYXAgd2l0aFxuICAgICAgfCBOb25lIC0+IGNsb3NlIHdcbiAgICAgIHwgU29tZSAodiwgaW5wdXQpIC0+XG4gICAgICAgIGlmIG5vdCAoaXNfY2xvc2VkIHcpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdyB2O1xuICAgICAgICAgIGlmIEhlYXAubGVuZ3RoIGhlYXAgPSAwXG4gICAgICAgICAgdGhlbiB1cG9uICh0cmFuc2Zlcl9pZCBpbnB1dCB3KSAoZnVuICgpIC0+IGNsb3NlIHcpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB3aXRoXG4gICAgICAgICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKClcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIHB1c2hiYWNrIHdcbiAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICByZWFkIGlucHV0XG4gICAgICAgICAgICAgID4+PiBmdW4geCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKSkpXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9wdXNoID1cbiAgICAgIERlZmVycmVkLkxpc3QuaXRlciBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICBsZXQlbWFwIHggPSByZWFkIGlucHV0IGluXG4gICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHgpXG4gICAgaW5cbiAgICB1cG9uIGluaXRpYWxfcHVzaCBwb3BfaGVhcF9hbmRfbG9vcDtcbiAgICByXG47O1xuXG5sZXQgY29uY2F0X3BpcGUgaW5wdXRzID1cbiAgbGV0IHIgPVxuICAgIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICAgIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0cyB+ZG93bnN0cmVhbTp3IGluXG4gICAgICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgICAgIGl0ZXIgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbiAgaW5cbiAgdXBvbiAoY2xvc2VkIHIpIChmdW4gKCkgLT4gY2xvc2UgaW5wdXRzKTtcbiAgclxuOztcblxubGV0IGNvbmNhdCBpbnB1dHMgPVxuICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgRGVmZXJyZWQuTGlzdC5pdGVyIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuOztcblxubGV0IGZvcmsgdCB+cHVzaGJhY2tfdXNlcyA9XG4gIGxldCByZWFkZXIwLCB3cml0ZXIwID0gY3JlYXRlICgpIGluXG4gIGxldCByZWFkZXIxLCB3cml0ZXIxID0gY3JlYXRlICgpIGluXG4gIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjb25zdW1lciA9XG4gICAgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9ICFzb21lX3JlYWRlcl93YXNfY2xvc2VkIGluXG4gICAgICBtYXRjaCVtYXBcbiAgICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICAgIFsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjA7IGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIxIF1cbiAgICAgIHdpdGhcbiAgICAgIHwgYFJlYWRlcl9jbG9zZWQgLT4gYFJlYWRlcl9jbG9zZWRcbiAgICAgIHwgYE9rIC0+XG4gICAgICAgICgqIEluIHRoaXMgY2FzZSwgdGhlcmUgY291bGQgaGF2ZSBiZWVuIG5vIHBlbmRpbmcgaXRlbXMgaW4gW3dyaXRlcjBdIG5vciBpblxuICAgICAgICAgICBbd3JpdGVyMV0sIGluIHdoaWNoIGNhc2Ugd2UgY291bGQgaGF2ZSBoYWQgYSBjbG9zZWQgcGlwZSB0aGF0IG1pc3NlZCBzb21lXG4gICAgICAgICAgIHdyaXRlcywgYnV0IFtGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXSB3b3VsZCBzdGlsbCBoYXZlIHJldHVybmVkIFtgT2tdICopXG4gICAgICAgIGlmIHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgdGhlbiBgUmVhZGVyX2Nsb3NlZCBlbHNlIGBPaylcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0IHN0aWxsX29wZW4gPSBbIHdyaXRlcjA7IHdyaXRlcjEgXSBpblxuICAgICBsZXQgZmlsdGVyX29wZW4gc3RpbGxfb3BlbiA9XG4gICAgICAgKCogT25seSBjYWxsIFtmaWx0ZXJdIGFuZCByZWFsbG9jYXRlIGxpc3QgaWYgc29tZXRoaW5nIHdpbGwgZ2V0IGZpbHRlcmVkICopXG4gICAgICAgaWYgbm90IChMaXN0LmV4aXN0cyBzdGlsbF9vcGVuIH5mOmlzX2Nsb3NlZClcbiAgICAgICB0aGVuIHN0aWxsX29wZW5cbiAgICAgICBlbHNlIChcbiAgICAgICAgIHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgOj0gdHJ1ZTtcbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gTGlzdC5maWx0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gbm90IChpc19jbG9zZWQgdykpIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW4gdGhlbiBjbG9zZSB0O1xuICAgICAgICAgc3RpbGxfb3BlbilcbiAgICAgaW5cbiAgICAgbGV0JWJpbmQgc3RpbGxfb3BlbiA9XG4gICAgICAgZm9sZCcgdCB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIH5pbml0OnN0aWxsX29wZW4gfmY6KGZ1biBzdGlsbF9vcGVuIHF1ZXVlIC0+XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlblxuICAgICAgICAgdGhlbiByZXR1cm4gW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwdXNoYmFja191c2VzIHdpdGhcbiAgICAgICAgICAgICB8IGBGYXN0X2NvbnN1bWVyX29ubHkgLT4gRGVmZXJyZWQuYW55IChMaXN0Lm1hcCBzdGlsbF9vcGVuIH5mOnB1c2hiYWNrKVxuICAgICAgICAgICAgIHwgYEJvdGhfY29uc3VtZXJzIC0+IERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCBzdGlsbF9vcGVuIH5mOnB1c2hiYWNrKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB3IH5mcm9tOnF1ZXVlKTtcbiAgICAgICAgICAgc3RpbGxfb3BlbikpXG4gICAgIGluXG4gICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOmNsb3NlO1xuICAgICByZXR1cm4gKCkpO1xuICByZWFkZXIwLCByZWFkZXIxXG47O1xuXG5sZXQgc2V0X2luZm8gdCBpbmZvID0gc2V0X2luZm8gdCAoU29tZSBpbmZvKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxudHlwZSAoJ2EsICdwaGFudG9tKSB0ID1cbiAgeyBjdXJyZW50X3ZhbHVlIDogJ2EgTW9wdGlvbi50XG4gIDsgdGFrZW4gOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gIDsgbXV0YWJsZSB2YWx1ZV9hdmFpbGFibGUgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB2YWx1ZV9hdmFpbGFibGUgdCA9IEl2YXIucmVhZCB0LnZhbHVlX2F2YWlsYWJsZVxubGV0IGlzX2VtcHR5IHQgPSBNb3B0aW9uLmlzX25vbmUgdC5jdXJyZW50X3ZhbHVlXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyAodCA6IF8gdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jdXJyZW50X3ZhbHVlOihjaGVjayAoTW9wdGlvbi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnRha2VuOihjaGVjayAoQnZhci5pbnZhcmlhbnQgVW5pdC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgIH52YWx1ZV9hdmFpbGFibGU6XG4gICAgICAgIChjaGVjayAoZnVuIHZhbHVlX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgdmFsdWVfYXZhaWxhYmxlKVxuICAgICAgICAgICAgIH5leHBlY3Q6KE1vcHRpb24uaXNfc29tZSB0LmN1cnJlbnRfdmFsdWUpKSkpXG47O1xuXG5sZXQgcGVlayB0ID0gTW9wdGlvbi5nZXQgdC5jdXJyZW50X3ZhbHVlXG5cbmxldCBwZWVrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTXZhci5wZWVrX2V4biBjYWxsZWQgb24gZW1wdHkgbXZhclwiXTtcbiAgTW9wdGlvbi5nZXRfc29tZV9leG4gdC5jdXJyZW50X3ZhbHVlXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBbJXNleHAgKHBlZWsgdCA6IGEgb3B0aW9uKV1cblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgcmVhZF93cml0ZSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgcmVhZCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldCByZWFkX29ubHkgKHQgOiAoJ2EsIFs+IHJlYWQgXSkgdCkgPSAodCA6PiAoJ2EsIHJlYWQpIHQpXG5sZXQgd3JpdGVfb25seSAodCA6ICgnYSwgWz4gd3JpdGUgXSkgdCkgPSAodCA6PiAoJ2EsIHdyaXRlKSB0KVxuXG5sZXQgY3JlYXRlICgpID1cbiAgeyBjdXJyZW50X3ZhbHVlID0gTW9wdGlvbi5jcmVhdGUgKClcbiAgOyB0YWtlbiA9IEJ2YXIuY3JlYXRlICgpXG4gIDsgdmFsdWVfYXZhaWxhYmxlID0gSXZhci5jcmVhdGUgKClcbiAgfVxuOztcblxubGV0IHRha2Vfbm9uZW1wdHkgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCByID0gTW9wdGlvbi5nZXRfc29tZV9leG4gdC5jdXJyZW50X3ZhbHVlIGluXG4gIE1vcHRpb24uc2V0X25vbmUgdC5jdXJyZW50X3ZhbHVlO1xuICBCdmFyLmJyb2FkY2FzdCB0LnRha2VuICgpO1xuICB0LnZhbHVlX2F2YWlsYWJsZSA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgclxuOztcblxubGV0IHRha2Vfbm93X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTXZhci50YWtlX2V4biBjYWxsZWQgb24gZW1wdHkgbXZhclwiXTtcbiAgdGFrZV9ub25lbXB0eSB0XG47O1xuXG5sZXQgdGFrZV9ub3cgdCA9IGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBTb21lICh0YWtlX25vbmVtcHR5IHQpIGVsc2UgTm9uZVxuXG5sZXQgcmVjIHRha2UgdCA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gKHRha2Vfbm9uZW1wdHkgdClcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB2YWx1ZV9hdmFpbGFibGUgdCBpblxuICAgIHRha2UgdClcbjs7XG5cbmxldCBzZXQgdCB2ID1cbiAgTW9wdGlvbi5zZXRfc29tZSB0LmN1cnJlbnRfdmFsdWUgdjtcbiAgSXZhci5maWxsX2lmX2VtcHR5IHQudmFsdWVfYXZhaWxhYmxlICgpXG47O1xuXG5sZXQgdXBkYXRlIHQgfmYgPSBzZXQgdCAoZiAocGVlayB0KSlcbmxldCB1cGRhdGVfZXhuIHQgfmYgPSBzZXQgdCAoZiAocGVla19leG4gdCkpXG5sZXQgdGFrZW4gdCA9IEJ2YXIud2FpdCB0LnRha2VuXG5cbmxldCByZWMgcHV0IHQgdiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiAoXG4gICAgc2V0IHQgdjtcbiAgICByZXR1cm4gKCkpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdGFrZW4gdCBpblxuICAgIHB1dCB0IHYpXG47O1xuXG5sZXQgcGlwZV93aGVuX3JlYWR5IHQgPVxuICBsZXQgciwgdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0JWJpbmQgKCkgPSB2YWx1ZV9hdmFpbGFibGUgdCBpblxuICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgdylcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRha2Vfbm93IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKClcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIGxldCViaW5kICgpID0gUGlwZS53cml0ZSB3IHggaW5cbiAgICAgICAgbG9vcCAoKSlcbiAgICBlbHNlIHJldHVybiAoKVxuICBpblxuICBkb24ndF93YWl0X2ZvciAobG9vcCAoKSk7XG4gIHJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IHVuaXQgSXZhci50XG4gICAgOyByZXN1bHQgOiAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfb3JfZXJyb3IgZiA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICB7IHN0YXJ0XG4gICAgOyByZXN1bHQgPVxuICAgICAgICAobGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgc3RhcnQgaW5cbiAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhfam9pbl9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCB3YWl0IHQgPSB0LnJlc3VsdFxuICBsZXQgd2FpdF9leG4gdCA9IHdhaXQgdCA+Pnwgb2tfZXhuXG4gIGxldCBzdGFydCB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQuc3RhcnQgKClcblxuICBsZXQgZm9yY2UgdCA9XG4gICAgc3RhcnQgdDtcbiAgICB3YWl0IHRcbiAgOztcblxuICBsZXQgZm9yY2VfZXhuIHQgPSBmb3JjZSB0ID4+fCBva19leG5cbiAgbGV0IHJldHVybiBhID0gY3JlYXRlIChmdW4gKCkgLT4gcmV0dXJuIGEpXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gKCkgLT5cbiAgICAgIGxldCViaW5kIGEgPSBmb3JjZV9leG4gdCBpblxuICAgICAgZm9yY2VfZXhuIChmIGEpKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuICgpIC0+IGZvcmNlX2V4biB0ID4+fCBmKVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGJpbmQnIHQgZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gY3JlYXRlIChmdW4gKCkgLT4gZiBhKSlcbmxldCBpc19mb3JjZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnN0YXJ0XG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0LnJlc3VsdFxubGV0IHBlZWsgdCA9IERlZmVycmVkLnBlZWsgdC5yZXN1bHRcbmxldCBwZWVrX2V4biB0ID0gT3B0aW9uLm1hcCAocGVlayB0KSB+Zjpva19leG5cbiIsIm9wZW4gQ29yZVxuXG50eXBlICdhIHQgPSB7IHdhaXRzIDogJ2EgSXZhci50IFF1ZXVlLnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlICgpID0geyB3YWl0cyA9IFF1ZXVlLmNyZWF0ZSAoKSB9XG5sZXQgd2FpdCB0ID0gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiBRdWV1ZS5lbnF1ZXVlIHQud2FpdHMgaXZhcilcbmxldCBzaWduYWwgdCBhID0gT3B0aW9uLml0ZXIgKFF1ZXVlLmRlcXVldWUgdC53YWl0cykgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgUXVldWUuaXRlciB0LndhaXRzIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKTtcbiAgUXVldWUuY2xlYXIgdC53YWl0c1xuOztcbiIsIm9wZW4gQ29yZVxuaW5jbHVkZSBHY1xuXG4oKiogW2FkZF9maW5hbGl6ZXIgZiB4XSBpcyBsaWtlIFtHYy5maW5hbGlzZSBmIHhdLCBleGNlcHQgdGhhdCB0aGUgZmluYWxpemVyIGlzIGd1YXJhbnRlZWRcbiAgICB0byBydW4gYXMgYW4gQXN5bmMgam9iIChpLmUuIHdpdGhvdXQgaW50ZXJydXB0aW5nIG90aGVyIEFzeW5jIGpvYnMpLiAgVW5wcm90ZWN0ZWQgdXNlXG4gICAgb2YgW0NhbWwuR2MuZmluYWxpc2VdIG9yIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGluIEFzeW5jIHByb2dyYW1zIGlzIHdyb25nLCBiZWNhdXNlXG4gICAgdGhlIGZpbmFsaXplcnMgd29uJ3QgaG9sZCB0aGUgYXN5bmMgbG9jaywgYW5kIHRodXMgY291bGQgaW50ZXJsZWF2ZSBhcmJpdHJhcmlseSB3aXRoXG4gICAgYXN5bmMgam9icy4gKilcbmxldCBhZGRfZmluYWxpemVyIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplciAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdCAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biBoZWFwX2Jsb2NrIGYgPVxuICBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbjs7XG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBHYy5FeHBlcnQuQWxhcm1cblxuICB0eXBlIHQgPSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBmID0gU2NoZWR1bGVyLihjcmVhdGVfYWxhcm0gKHQgKCkpKSBmXG4gIGxldCBkZWxldGUgPSBBbGFybS5kZWxldGVcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgc2lnbmF0dXJlcyB0aGF0IGV4dGVuZCBbQ29yZS5JbnZhcmlhbnRdIHdpdGggYW4gW0FzeW5jXVxuICAgIHN1Ym1vZHVsZSBmb3IgaW52YXJpYW50cyB0aGF0IHVzZSBhc3luYyBjb21wdXRhdGlvbiBhbmQgcmV0dXJuIFt1bml0IERlZmVycmVkLnRdLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+IHVuaXQgRGVmZXJyZWQudFxuICB0eXBlICdhIGludiA9ICdhIHRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2EgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICgnYSwgJ2IpIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gJ2MgaW52IC0+ICgnYSwgJ2IsICdjKSB0IGludlxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBc3luY19pbnZhcmlhbnQgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBDb3JlLkludmFyaWFudFxuXG4gIG1vZHVsZSBBc3luYyA6IHNpZ1xuICAgIG9wZW4gQXN5bmNcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBBc3luYy50XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gICAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuXG4gICAgdmFsIGludmFyaWFudFxuICAgICAgOiAgU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgICAgLT4gJ2FcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcblxuICAgICgqKiBbY2hlY2tfZmllbGRdIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHJlY29yZCBmaWVsZHMgd2hlbiB1c2luZyBbW0BAZGVyaXZpbmcgZmllbGRzXV0uXG4gICAgICAgIElkaW9tYXRpYyB1c2FnZSBsb29rcyBsaWtlOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAoY2hlY2sgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAoY2hlY2sgQmFyLmludmFyaWFudCkgXX1cblxuICAgICAgICBXaGVuIHNvbWUgZmllbGRzIGhhdmUgc3luY2hyb25vdXMgaW52YXJpYW50cywgb3IgZG8gbm90IG5lZWQgdG8gYmUgY2hlY2tlZCwgaXRcbiAgICAgICAgbWF5IGJlIHVzZWZ1bCB0byBkZWZpbmUgYSBzZWNvbmQgd3JhcHBlciBhcm91bmQgW2NoZWNrX2ZpZWxkXTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCA7IHF1dXggOiBRdXV4LnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrJyBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IGNoZWNrJyAoZnVuIHggLT4gaW52IHg7IHJldHVybiAoKSkgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAgKGNoZWNrJyBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6ICAoY2hlY2sgIEJhci5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfnF1dXg6IChjaGVjayAgaWdub3JlKSBdfSAqKVxuICAgIHZhbCBjaGVja19maWVsZCA6ICdhIC0+ICdiIHQgLT4gdW5pdCBEZWZlcnJlZC50IC0+ICgnYSwgJ2IpIEZpZWxkLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBEZWZlcnJlZC5MZXRfc3ludGF4XG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29yZS5JbnZhcmlhbnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIGluY2x1ZGUgQXN5bmNfaW52YXJpYW50X2ludGYuQXN5bmNcblxuICBsZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46XG4gICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgZlxuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCIgfl86KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSAoZXhuIDogZXhuKSB+XzoodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjaGVja19maWVsZCB0IGYgd2FpdF9mb3JfcHJldmlvdXMgZmllbGQgPVxuICAgIGxldCViaW5kICgpID0gd2FpdF9mb3JfcHJldmlvdXMgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgICAgICAoZnVuICgpIC0+IGYgKEZpZWxkLmdldCBmaWVsZCB0KSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcInByb2JsZW0gd2l0aCBmaWVsZFwiIH5maWVsZDooRmllbGQubmFtZSBmaWVsZCA6IHN0cmluZykgKGV4biA6IGV4bildXG4gIDs7XG5lbmRcbiIsIigqKiBDb250YWlucyBBc3luYydzIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBsaWtlIHt7IUFzeW5jX2tlcm5lbC5EZWZlcnJlZH1bRGVmZXJyZWRdfSxcbiAgICB7eyFBc3luY19rZXJuZWwuSXZhcn1bSXZhcl19LCBhbmQge3shQXN5bmNfa2VybmVsLkNsb2NrX2ludGYuQ2xvY2t9W0Nsb2NrXX0uXG5cbiAgICBbQXN5bmNfa2VybmVsXSBpcyBkZXNpZ25lZCB0byBkZXBlbmQgb25seSBvbiB7eyFDb3JlfVtDb3JlXX0gYW5kIHNvIGlzIG1vcmVcbiAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXN5bmNfa2VybmVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWdcbm1vZHVsZSBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZSA9IFJlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2Vcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIEJ2YXIgPSBCdmFyXG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIENvbmRpdGlvbiA9IEFzeW5jX2NvbmRpdGlvblxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWRcbm1vZHVsZSBFeGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0XG5tb2R1bGUgR2MgPSBBc3luY19nY1xubW9kdWxlIEludmFyaWFudCA9IEFzeW5jX2ludmFyaWFudFxubW9kdWxlIEl2YXIgPSBJdmFyXG5tb2R1bGUgTGF6eV9kZWZlcnJlZCA9IExhenlfZGVmZXJyZWRcbm1vZHVsZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3Jcbm1vZHVsZSBNdmFyID0gTXZhclxubW9kdWxlIFBpcGUgPSBQaXBlXG5tb2R1bGUgUHJpb3JpdHkgPSBQcmlvcml0eVxubW9kdWxlIFNlcXVlbmNlciA9IFRocm90dGxlLlNlcXVlbmNlclxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Vcbm1vZHVsZSBUYWlsID0gVGFpbFxubW9kdWxlIFRocm90dGxlID0gVGhyb3R0bGVcbm1vZHVsZSBUaW1lX3NvdXJjZSA9IFRpbWVfc291cmNlXG5cblxuKCoqIHsyIFRvcGxldmVsIGZ1bmN0aW9ucyB9XG5cbiAgICBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBicm9hZGx5IHVzZWZ1bCB3aGVuIHdyaXRpbmcgQXN5bmMgcHJvZ3JhbXMsIGFuZCBzbyBhcmUgbWFkZVxuICAgIGF2YWlsYWJsZSBhdCB0aGUgdG9wbGV2ZWwuICopXG5cblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgY2F0Y2ggPSBNb25pdG9yLmNhdGNoXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBEZWZlcnJlZC5kb24ndF93YWl0X2ZvclxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgc2NoZWR1bGUgPSBTY2hlZHVsZXIuc2NoZWR1bGVcbmxldCBzY2hlZHVsZScgPSBTY2hlZHVsZXIuc2NoZWR1bGUnXG5sZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbmxldCB3aXRoaW4gPSBTY2hlZHVsZXIud2l0aGluXG5sZXQgd2l0aGluJyA9IFNjaGVkdWxlci53aXRoaW4nXG5cbigqKiB7MiBJbmZpeCBvcGVyYXRvcnMgYW5kIFtMZXRfc3ludGF4XSBzdXBwb3J0fSAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZCA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQudXBvbn0uICopXG5sZXQgKCA+Pj4gKSA9IERlZmVycmVkLkluZml4LiggPj4+IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQuYmluZH0uICopXG5sZXQgKCA+Pj0/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+Pj0gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5tYXB9LiAqKVxubGV0ICggPj58PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj58IClcblxuaW5jbHVkZSBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqKi8qKilcblxuKCoqIFRoZSBtb2R1bGVzIGluIFtBc3luY19rZXJuZWxfcHJpdmF0ZV0gYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGluZyBhbmQgdGVzdGluZyBBc3luYywgYW5kXG4gICAgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgdXNlZC4gKilcbm1vZHVsZSBBc3luY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVidWcgPSBEZWJ1Z1xuICBtb2R1bGUgSXZhcjAgPSBJdmFyMFxuICBtb2R1bGUgSXZhcl9maWxsZXIgPSBJdmFyX2ZpbGxlclxuICBtb2R1bGUgSm9iID0gSm9iXG4gIG1vZHVsZSBTdGFja19vcl9jb3VudGVyID0gU3RhY2tfb3JfY291bnRlclxuZW5kXG5cbigqKi8qKilcblxuKCogVGhpcyB0ZXN0IG11c3QgYmUgaW4gdGhpcyBsaWJyYXJ5LCBiZWNhdXNlIGl0IHJlcXVpcmVzIFtyZXR1cm5dIHRvIGJlIGlubGluZWQuICBNb3ZpbmdcbiAgIGl0IHRvIGFub3RoZXIgbGlicmFyeSB3aWxsIGNhdXNlIGl0IHRvIGJyZWFrIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz1mYWxzZV0uICopXG5sZXQldGVzdF91bml0IFwiW3JldHVybiAoKV0gZG9lcyBub3QgYWxsb2NhdGVcIiA9XG4gIGxldCB3MSA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGxldCB3MiA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIFsldGVzdF9yZXN1bHQ6IGludF0gdzIgfmV4cGVjdDp3MVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbF9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25uIDogQ2xvc2FibGUpID0gc3RydWN0XG4gIG1vZHVsZSBDb25uID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb25uXG5cbiAgICBsZXQgc2V4cF9vZl90IChfIDogdCkgOiBTZXhwLnQgPSBBdG9tIFwiPENvbm4udD5cIlxuICBlbmRcblxuICB0eXBlIGNvbm4gPSBDb25uLnRcblxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgIHwgT2J0YWluZWRfYWRkcmVzcyBvZiAnYWRkcmVzc1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBvZiBFcnJvci50XG4gICAgICB8IENvbm5lY3RlZCBvZiAoY29ubltAc2V4cC5vcGFxdWVdKVxuICAgICAgfCBEaXNjb25uZWN0ZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYWRkcmVzcyBldmVudCA9ICdhZGRyZXNzIHRcblxuICAgIG1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgICB7IHNlcnZlcl9uYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb25fZXZlbnQgOiAnYWRkcmVzcyBldmVudCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBsb2dfbGV2ZWwgPSBmdW5jdGlvblxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgfCBDb25uZWN0ZWQgXyB8IERpc2Nvbm5lY3RlZCB8IE9idGFpbmVkX2FkZHJlc3MgXyAtPiBgSW5mb1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBfIC0+IGBFcnJvclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlIHQgeyBIYW5kbGVyLnNlcnZlcl9uYW1lID0gXzsgb25fZXZlbnQgfSA9IG9uX2V2ZW50IHRcbiAgZW5kXG5cbiAgKCogQSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gdGhhdCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgYWRkcmVzcyB0eXBlLiAgV2UgaGlkZSBhd2F5IHRoaXNcbiAgICAgdHlwZSBsYXRlciBzaW5jZSBpdCBvbmx5IGFwcGVhcnMgaW4gdGhlIHR5cGUgb2YgW2NyZWF0ZV0uICopXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHsgZ2V0X2FkZHJlc3MgOiB1bml0IC0+ICdhZGRyZXNzIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyBjb25uZWN0IDogJ2FkZHJlc3MgLT4gQ29ubi50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyByZXRyeV9kZWxheSA6IHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgY29ubiA6IFsgYE9rIG9mIENvbm4udCB8IGBDbG9zZV9zdGFydGVkIF0gSXZhci50XG4gICAgICA7IG11dGFibGUgbmV4dF9jb25uZWN0X3Jlc3VsdCA6IENvbm4udCBPcl9lcnJvci50IEl2YXIudFxuICAgICAgOyBldmVudF9oYW5kbGVyIDogJ2FkZHJlc3MgRXZlbnQuSGFuZGxlci50XG4gICAgICA7IGNsb3NlX3N0YXJ0ZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBjbG9zZV9maW5pc2hlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGRvbid0X3JlY29ubmVjdCA6IHVuaXQgSXZhci50XG4gICAgICA7IGFkZHJlc3NfZXF1YWwgOiAnYWRkcmVzcyAtPiAnYWRkcmVzcyAtPiBib29sXG4gICAgICA7IHNleHBfb2ZfYWRkcmVzcyA6ICdhZGRyZXNzIC0+IFNleHAudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzZXJ2ZXJfbmFtZSB0ID0gdC5ldmVudF9oYW5kbGVyLnNlcnZlcl9uYW1lXG4gICAgbGV0IGhhbmRsZV9ldmVudCB0IGV2ZW50ID0gRXZlbnQuaGFuZGxlIGV2ZW50IHQuZXZlbnRfaGFuZGxlclxuXG4gICAgKCogVGhpcyBmdW5jdGlvbiBmb2N1c2VzIGluIG9uIHRoZSB0aGUgZXJyb3IgaXRzZWxmLCBkaXNjYXJkaW5nIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoXG4gICAgICAgbW9uaXRvciBjYXVnaHQgdGhlIGVycm9yLCBpZiBhbnkuXG5cbiAgICAgICBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBzb21ldGltZXMgZW5kIHVwIHdpdGggbm9pc3kgbG9ncyB3aGljaCByZXBvcnQgdGhlIHNhbWUgZXJyb3JcbiAgICAgICBhZ2FpbiBhbmQgYWdhaW4sIGRpZmZlcmluZyBvbmx5IGFzIHRvIHdoYXQgbW9uaXRvciBjYXVnaHQgdGhlbS4gKilcbiAgICBsZXQgc2FtZV9lcnJvciBlMSBlMiA9XG4gICAgICBsZXQgdG9fc2V4cCBlID0gRXhuLnNleHBfb2ZfdCAoTW9uaXRvci5leHRyYWN0X2V4biAoRXJyb3IudG9fZXhuIGUpKSBpblxuICAgICAgU2V4cC5lcXVhbCAodG9fc2V4cCBlMSkgKHRvX3NleHAgZTIpXG4gICAgOztcblxuICAgICgqIENvbnRpbnVlIHRyeWluZyB0byBjb25uZWN0IHVudGlsIHdlIGFyZSBhYmxlIHRvIGRvIHNvLCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiBib3RoXG4gICAgICAgdGhlIG5ldyBjb25uZWN0aW9uIGFuZCBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBvbmNlIHdlIGFyZSByZWFkeSBmb3JcbiAgICAgICB0aGUgbmV4dCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gKilcbiAgICBsZXQgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0ID1cbiAgICAgICgqIFdlIHRha2UgY2FyZSBub3QgdG8gc3BhbSBsb2dzIHdpdGggdGhlIHNhbWUgbWVzc2FnZSBvdmVyIGFuZCBvdmVyIGJ5IGNvbXBhcmluZ1xuICAgICAgICAgZWFjaCBsb2cgbWVzc2FnZSB0aGUgdGhlIHByZXZpb3VzIG9uZSBvZiB0aGUgc2FtZSB0eXBlLiAqKVxuICAgICAgbGV0IHByZXZpb3VzX2FkZHJlc3MgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHByZXZpb3VzX2Vycm9yID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgdC5nZXRfYWRkcmVzcyAoKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayBhZGRyIC0+XG4gICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyA9XG4gICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19hZGRyZXNzIC0+IHQuYWRkcmVzc19lcXVhbCBhZGRyIHByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZXZpb3VzX2FkZHJlc3MgOj0gU29tZSBhZGRyO1xuICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKE9idGFpbmVkX2FkZHJlc3MgYWRkcikpXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiB0LmNvbm5lY3QgYWRkclxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgdGhlbiByZXR1cm4gYENsb3NlX3N0YXJ0ZWRcbiAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgdGhlbiByZXR1cm4gYERvbid0X3JlY29ubmVjdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZyA9IHQucmV0cnlfZGVsYXkgKCkgaW5cbiAgICAgICAgICBsZXQlYmluZCBjb25uZWN0X3Jlc3VsdCA9IGNvbm5lY3QgKCkgaW5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IGNvbm5lY3RfcmVzdWx0O1xuICAgICAgICAgIHQubmV4dF9jb25uZWN0X3Jlc3VsdCA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBtYXRjaCBjb25uZWN0X3Jlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBjb25uIC0+IHJldHVybiAoYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSlcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfZXJyb3IgPVxuICAgICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfZXJyb3Igd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2VyciAtPiBzYW1lX2Vycm9yIGVyciBwcmV2aW91c19lcnJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcmV2aW91c19lcnJvciA6PSBTb21lIGVycjtcbiAgICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yXG4gICAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoRmFpbGVkX3RvX2Nvbm5lY3QgZXJyKSlcbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0ID1cbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgICh0eXBlIGFkZHJlc3MpXG4gICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICAgPyhvbl9ldmVudCA9IGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICAgPyhyYW5kb21fc3RhdGUgPSBgU3RhdGUgUmFuZG9tLlN0YXRlLmRlZmF1bHQpXG4gICAgICAgICAgPyh0aW1lX3NvdXJjZSA9IFRpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgICB+YWRkcmVzczoobW9kdWxlIEFkZHJlc3MgOiBBZGRyZXNzIHdpdGggdHlwZSB0ID0gYWRkcmVzcylcbiAgICAgICAgICBnZXRfYWRkcmVzc1xuICAgICAgPVxuICAgICAgbGV0IGV2ZW50X2hhbmRsZXIgPSB7IEV2ZW50LkhhbmRsZXIuc2VydmVyX25hbWU7IG9uX2V2ZW50IH0gaW5cbiAgICAgIGxldCBkZWZhdWx0X3JldHJ5X2RlbGF5ID1cbiAgICAgICAgRm4uY29uc3QgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIDAuMSBlbHNlIDEwLikpXG4gICAgICBpblxuICAgICAgbGV0IG5vbl9yYW5kb21pemVkX2RlbGF5ID0gT3B0aW9uLnZhbHVlIHJldHJ5X2RlbGF5IH5kZWZhdWx0OmRlZmF1bHRfcmV0cnlfZGVsYXkgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheV9zcGFuID1cbiAgICAgICAgbWF0Y2ggcmFuZG9tX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgTm9uX3JhbmRvbSAtPiBub25fcmFuZG9taXplZF9kZWxheVxuICAgICAgICB8IGBTdGF0ZSByYW5kb21fc3RhdGUgLT5cbiAgICAgICAgICBmdW4gKCkgLT5cbiAgICAgICAgICAgIGxldCBzcGFuID0gbm9uX3JhbmRvbWl6ZWRfZGVsYXkgKCkgaW5cbiAgICAgICAgICAgIGxldCBzcGFuID0gVGltZV9ucy5TcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBSYW5kb20uU3RhdGUuZmxvYXQgcmFuZG9tX3N0YXRlIChzcGFuICouIDAuMykgaW5cbiAgICAgICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICAgICAgaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgIHRoZW4gc3BhbiArLiBkaXN0YW5jZVxuICAgICAgICAgICAgICBlbHNlIHNwYW4gLS4gZGlzdGFuY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBUaW1lX25zLlNwYW4ub2Zfc2VjIHdhaXRcbiAgICAgIGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXkgKCkgPSBUaW1lX3NvdXJjZS5hZnRlciB0aW1lX3NvdXJjZSAocmV0cnlfZGVsYXlfc3BhbiAoKSkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgeyBldmVudF9oYW5kbGVyXG4gICAgICAgIDsgZ2V0X2FkZHJlc3NcbiAgICAgICAgOyBjb25uZWN0XG4gICAgICAgIDsgbmV4dF9jb25uZWN0X3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgcmV0cnlfZGVsYXlcbiAgICAgICAgOyBjb25uID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgZG9uJ3RfcmVjb25uZWN0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBhZGRyZXNzX2VxdWFsID0gQWRkcmVzcy5lcXVhbFxuICAgICAgICA7IHNleHBfb2ZfYWRkcmVzcyA9IEFkZHJlc3Muc2V4cF9vZl90XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICAoKiB0aGlzIGxvb3AgZmluaXNoZXMgb25jZSBbY2xvc2UgdF0gaGFzIGJlZW4gY2FsbGVkLCBpbiB3aGljaCBjYXNlIGl0IG1ha2VzIHN1cmUgdG9cbiAgICAgICAgIGxlYXZlIFt0LmNvbm5dIGZpbGxlZCB3aXRoIFtgQ2xvc2Vfc3RhcnRlZF0uICopXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgQEAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkICgpIChmdW4gKCkgLT5cbiAgICAgICAgaGFuZGxlX2V2ZW50IHQgQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0XG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+XG4gICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICByZXR1cm4gKGBGaW5pc2hlZCAoKSlcbiAgICAgICAgfCBgRG9uJ3RfcmVjb25uZWN0IC0+XG4gICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICByZXR1cm4gKGBGaW5pc2hlZCAoKSlcbiAgICAgICAgfCBgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpIC0+XG4gICAgICAgICAgSXZhci5maWxsIHQuY29ubiAoYE9rIGNvbm4pO1xuICAgICAgICAgIGhhbmRsZV9ldmVudCB0IChDb25uZWN0ZWQgY29ubilcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uXG4gICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIHQuY29ubiA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBoYW5kbGVfZXZlbnQgdCBEaXNjb25uZWN0ZWRcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgKCogd2FpdHMgdW50aWwgW3JldHJ5X2RlbGF5ICgpXSB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIHRpbWUganVzdCBiZWZvcmUgd2UgbGFzdFxuICAgICAgICAgICAgIHRyaWVkIHRvIGNvbm5lY3QgcmF0aGVyIHRoYW4gdGhlIHRpbWUgd2Ugbm90aWNlZCBiZWluZyBkaXNjb25uZWN0ZWQsIHNvIHRoYXQgaWZcbiAgICAgICAgICAgICBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiBkaWVzLCB3ZSB3aWxsIGF0dGVtcHQgdG8gcmVjb25uZWN0IGltbWVkaWF0ZWx5LiAqKVxuICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGBSZXBlYXQgKCkpO1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkIHQgPVxuICAgICAgKCogVGFrZSBjYXJlIG5vdCB0byByZXR1cm4gYSBjb25uZWN0aW9uIHRoYXQgaXMga25vd24gdG8gYmUgY2xvc2VkIGF0IHRoZSB0aW1lXG4gICAgICAgICBbY29ubmVjdGVkXSB3YXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2xpZW50IGNvZGUgdGhhdCBiZWhhdmVzIGxpa2VcbiAgICAgICAgIHtbXG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgPj49IGZ1biBjMSAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCBjMVxuICAgICAgICAgICAoKiBhdCB0aGlzIHBvaW50IHdlIGFyZSBpbiBhIHJhY2Ugd2l0aCB0aGUgc2FtZSBjYWxsIGluc2lkZVxuICAgICAgICAgICAgICBwZXJzaXN0ZW50X2NsaWVudC5tbCAqKVxuICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgKCogZGVwZW5kaW5nIG9uIGhvdyB0aGUgcmFjZSB0dXJucyBvdXQsIHdlIGRvbid0IHdhbnQgdG8gZ2V0IGEgY2xvc2VkIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgaGVyZSAqKVxuICAgICAgICAgICA+Pj0gZnVuIGMyIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgXX1cbiAgICAgICAgIFRoaXMgZG9lc24ndCByZW1vdmUgdGhlIHJhY2UgY29uZGl0aW9uLCBidXQgaXQgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGxldCBkID0gSXZhci5yZWFkIHQuY29ubiBpblxuICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBkXG4gICAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICAgICAgfCBgT2sgY29ubiAtPiByZXR1cm4gY29ubilcbiAgICAgICAgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+XG4gICAgICAgICAgaWYgQ29ubi5pc19jbG9zZWQgY29ublxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIGdpdmUgdGhlIHJlY29ubmVjdGlvbiBsb29wIGEgY2hhbmNlIHRvIG92ZXJ3cml0ZSB0aGUgaXZhciAqKVxuICAgICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uID4+PSBsb29wXG4gICAgICAgICAgZWxzZSByZXR1cm4gY29ublxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiB0ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmNvbm4pIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gTm9uZVxuICAgICAgfCBTb21lIChgT2sgY29ubikgLT4gU29tZSBjb25uXG4gICAgOztcblxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbiAgICBsZXQgY2xvc2UgdCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICB0aGVuXG4gICAgICAgICgqIEFub3RoZXIgY2FsbCB0byBjbG9zZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiAgV2FpdCBmb3IgaXQgdG8gZmluaXNoLiAqKVxuICAgICAgICBjbG9zZV9maW5pc2hlZCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgICAgSXZhci5yZWFkIHQuY29ublxuICAgICAgICA+Pj0gZnVuIGNvbm5fb3B0IC0+XG4gICAgICAgIChtYXRjaCBjb25uX29wdCB3aXRoXG4gICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgIHwgYE9rIGNvbm4gLT4gQ29ubi5jbG9zZSBjb25uKVxuICAgICAgICA+PnwgZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkID1cbiAgICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwiUGVyc2lzdGVudCBjb25uZWN0aW9uIGNsb3NlZFwiXVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHQgPVxuICAgICAgaWYgaXNfY2xvc2VkIHRcbiAgICAgIHRoZW4gcmV0dXJuIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGN1cnJlbnRfY29ubmVjdGlvbiB0IHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBub3QgKENvbm4uaXNfY2xvc2VkIHgpIC0+IHJldHVybiAoT2sgeClcbiAgICAgICAgfCBTb21lIChfIDogQ29ubi50KSB8IE5vbmUgLT5cbiAgICAgICAgICBEZWZlcnJlZC5jaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlIChJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkKVxuICAgICAgICAgICAgOyBjaG9pY2UgKEl2YXIucmVhZCB0Lm5leHRfY29ubmVjdF9yZXN1bHQpIEZuLmlkXG4gICAgICAgICAgICBdKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHQgPVxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHQuZG9uJ3RfcmVjb25uZWN0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhZGRyZXNzIFBvbHkudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFBvbHkuc2V4cF9vZl90IHQuc2V4cF9vZl9hZGRyZXNzIHRcblxuICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIChUIHQpID1cbiAgICBQb2x5LmNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0XG4gIDs7XG5cbiAgbGV0IGNsb3NlX2ZpbmlzaGVkIChUIHQpID0gUG9seS5jbG9zZV9maW5pc2hlZCB0XG4gIGxldCBpc19jbG9zZWQgKFQgdCkgPSBQb2x5LmlzX2Nsb3NlZCB0XG4gIGxldCBjbG9zZSAoVCB0KSA9IFBvbHkuY2xvc2UgdFxuICBsZXQgc2VydmVyX25hbWUgKFQgdCkgPSBQb2x5LnNlcnZlcl9uYW1lIHRcbiAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiAoVCB0KSA9IFBvbHkuY3VycmVudF9jb25uZWN0aW9uIHRcbiAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHRcbiAgbGV0IGNvbm5lY3RlZCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkIHRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgIH5jb25uZWN0XG4gICAgICAgIH5hZGRyZXNzXG4gICAgICAgIGdldF9hZGRyZXNzXG4gICAgPVxuICAgIFRcbiAgICAgIChQb2x5LmNyZWF0ZVxuICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgIGdldF9hZGRyZXNzKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgdCA9XG4gIHwgS3JiXG4gIHwgS3JiX3Rlc3RfbW9kZVxuICB8IFJwY1xuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBiaW5faW9dXG5cbmxldCBtYWdpY193b3JkID0gZnVuY3Rpb25cbiAgfCBLcmIgLT4gXCJLUkIyXCJcbiAgfCBLcmJfdGVzdF9tb2RlIC0+IFwiS0JUXCJcbiAgfCBScGMgLT4gXCJSUENcIlxuOztcblxubGV0IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSA9IDVcblxubGV0IGdlbl9tYWdpY19udW1iZXIgd29yZCA9XG4gIFN0cmluZy50b19saXN0X3JldiB3b3JkXG4gIHw+IExpc3QuZm9sZCB+aW5pdDowIH5mOihmdW4gYWNjIGMgLT4gKGFjYyAqIDI1NikgKyBDaGFyLnRvX2ludCBjKVxuOztcblxubGV0IG1hZ2ljX251bWJlciB0ID0gZ2VuX21hZ2ljX251bWJlciAobWFnaWNfd29yZCB0KVxubGV0IGJ5X21hZ2ljX251bWJlciA9IEludC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCBhbGwgfmY6KGZ1biBwIC0+IG1hZ2ljX251bWJlciBwLCBwKSlcblxuKCogV2Ugb25jZSBtaW50ZWQgYSBuZXcgbWFnaWMgbnVtYmVyIGZvciBLcmIgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBwcm90b2NvbFxuICAgbmVnb3RpYXRpb24uICBMZXQncyBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcmV1c2UgdGhlIG9sZCBtYWdpYyBudW1iZXIgKilcbmxldCByZXRpcmVkX2tyYl93b3JkID0gXCJLUkJcIlxuXG5sZXQldGVzdF91bml0IFwidmFsaWRhdGUgbWFnaWMgd29yZHNcIiA9XG4gIGxldCBtYWdpY193b3JkcyA9IHJldGlyZWRfa3JiX3dvcmQgOjogTGlzdC5tYXAgYWxsIH5mOm1hZ2ljX3dvcmQgaW5cbiAgbGV0IG1hZ2ljX251bWJlcnMgPSBMaXN0Lm1hcCBtYWdpY193b3JkcyB+ZjpnZW5fbWFnaWNfbnVtYmVyIGluXG4gICgqIE1hZ2ljIG51bWJlcnMgbXVzdCBmaXQgaW50byBPY2FtbCBpbnRlZ2VycyAoMzEgYml0cyBvbiAzMiBiaXQgYnVpbGRzKS4gKilcbiAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgbWFnaWNfbnVtYmVycyB+ZjooZnVuIG4gLT4gbiA8PSBJbnQub2ZfZmxvYXQgKCgyLiAqKiAzMC4pIC0uIDEuKSkpO1xuICAoKiBObyBkdXBsaWNhdGUgbWFnaWMgbnVtYmVycyAqKVxuICBhc3NlcnQgKG5vdCAoTGlzdC5jb250YWluc19kdXAgbWFnaWNfbnVtYmVycyB+Y29tcGFyZTpJbnQuY29tcGFyZSkpXG47O1xuXG4oKiBFbnN1cmUgdGVzdHMgYnJlYWsgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlIGNoYW5nZWQgKilcbmxldCV0ZXN0X3VuaXQgXCJtYWdpYyBudW1iZXJzXCIgPVxuICBhc3NlcnQgKGdlbl9tYWdpY19udW1iZXIgcmV0aXJlZF9rcmJfd29yZCA9IDRfMzQ2XzQ0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYiA9IDg0M18yMDdfMjQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiX3Rlc3RfbW9kZSA9IDVfNTIxXzk5NSk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIFJwYyA9IDRfNDExXzQ3NClcbjs7XG5cbmxldCV0ZXN0X3VuaXQgXCJtYWdpY19udW1iZXJfYmluX3NpemUgaXMgY29ycmVjdFwiID1cbiAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT5cbiAgICBsZXQgbWFnaWNfbnVtYmVyID0gbWFnaWNfbnVtYmVyIHQgaW5cbiAgICBsZXQgc2l6ZSA9IEludC5iaW5fc2l6ZV90IG1hZ2ljX251bWJlciBpblxuICAgIFsldGVzdF9lcTogaW50XSBzaXplIG1hZ2ljX251bWJlcl9iaW5fc2l6ZSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIExpc3Rfd2l0aF9tYXhfbGVuX2ludGZcblxubW9kdWxlIE1ha2UgKENvbmZpZyA6IENvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgYmluX3dyaXRlXVxuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyA9IExpc3QuX19iaW5fcmVhZF90X19cblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIHRyeSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiB3aXRoXG4gICAgfCBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIChJbmZvLnRvX3N0cmluZ19odW0gY29udGV4dClcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IChiaW5fcmVhZGVyX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdCBiaW5fcmVhZGVyX2EucmVhZFxuICAgIDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gYmluX3JlYWRlcl9hLnJlYWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IChiaW5fYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaGFwZSA9IGJpbl9zaGFwZV90IGJpbl9hLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgYmluX2Eud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgYmluX2EucmVhZGVyXG4gICAgfVxuICA7O1xuXG4gIGxldCBvZl9saXN0X2V4biBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGlmIGxlbiA+IG1heF9sZW5cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxpc3QgaXMgdG9vIGxhcmdlXCIgKGNvbnRleHQgOiBJbmZvLnQpIChsZW4gOiBpbnQpIChtYXhfbGVuIDogaW50KV07XG4gICAgbFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPSBMaXN0LnNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgdF9vZl9hIHNleHAgPVxuICAgIGxldCB0ID0gTGlzdC50X29mX3NleHAgdF9vZl9hIHNleHAgaW5cbiAgICBvZl9saXN0X2V4biB0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBLbm93bl9wcm90b2NvbCA9IEtub3duX3Byb3RvY29sXG5cbm1vZHVsZSBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUgPVxuICBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgbWF4X2xlbiA9IDEwMFxuICAgIGxldCBjb250ZXh0ID0gSW5mby5vZl9zdHJpbmcgXCJQcm90b2NvbF92ZXJzaW9uX2hlYWRlclwiXG4gIGVuZClcblxudHlwZSB0ID0gaW50IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS50XG5bQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5wcm90b2NvbCB+c3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIDo6IHN1cHBvcnRlZF92ZXJzaW9uc1xuICB8PiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUub2ZfbGlzdF9leG5cbjs7XG5cbmxldCBnZXRfcHJvdG9jb2wgKHQgOiB0KSA9XG4gIGxldCBwcm90b2NvbHMsIHZlcnNpb25zID1cbiAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICh0IDo+IGludCBsaXN0KVxuICAgICAgfmY6KGZ1biB2IC0+XG4gICAgICAgIG1hdGNoIE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlciB2IHdpdGhcbiAgICAgICAgfCBTb21lIHAgLT4gRmlyc3QgcFxuICAgICAgICB8IE5vbmUgLT4gU2Vjb25kIHYpXG4gIGluXG4gIG1hdGNoIHByb3RvY29scyB3aXRoXG4gIHwgW10gLT4gT2sgKE5vbmUsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBbIHAgXSAtPiBPayAoU29tZSBwLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgXyAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBtdWx0aXBsZSBtYWdpYyBudW1iZXJzIHNlZW4uXCJcbiAgICAgICAgICAocHJvdG9jb2xzIDogS25vd25fcHJvdG9jb2wudCBsaXN0KVxuICAgICAgICAgICh2ZXJzaW9ucyA6IGludCBsaXN0KV1cbjs7XG5cbmxldCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyIH4odXMgOiB0KSB+KHBlZXIgOiB0KSA9XG4gIGxldCBvcGVuIE9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wsIHVzX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHVzIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wsIHBlZXJfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgcGVlciBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCA9XG4gICAgbWF0Y2ggdXNfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiTm8gbWFnaWMgbnVtYmVycyBzZWVuXCIgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KV1cbiAgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCA9XG4gICAgbWF0Y2ggcGVlcl9wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGFzc3VtZSBwZWVyIGlzIHNwZWFraW5nIG91ciBwcm90b2NvbCBpZiBbYWxsb3dfbGVnYWN5X3BlZXJdICopXG4gICAgICBpZiBhbGxvd19sZWdhY3lfcGVlclxuICAgICAgdGhlbiByZXR1cm4gdXNfcHJvdG9jb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcGVlcl9wcm90b2NvbCA9IGBVbmtub3duIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IFsgYFVua25vd24gXSldKVxuICBpblxuICBpZiBub3QgKFslY29tcGFyZS5lcXVhbDogS25vd25fcHJvdG9jb2wudF0gdXNfcHJvdG9jb2wgcGVlcl9wcm90b2NvbClcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldXG4gIGVsc2UgKFxuICAgIGxldCBwcm90b2NvbCA9IHVzX3Byb3RvY29sIGluXG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciB1c192ZXJzaW9ucyBwZWVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBubyBzaGFyZWQgdmVyc2lvbiBudW1iZXJzXCJcbiAgICAgICAgICAgICh1c192ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwZWVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHByb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldKVxuOztcblxubGV0IG1hdGNoZXNfbWFnaWNfcHJlZml4ICh0IDogdCkgfnByb3RvY29sID1cbiAgbGV0IG1hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBMaXN0Lm1lbSB+ZXF1YWw6SW50LmVxdWFsICh0IDo+IGludCBsaXN0KSBtYWdpY19udW1iZXJcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIChtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wpIGJpbl90LnJlYWRlclxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXggPVxuICBsZXQgZiB0ID1cbiAgICBMaXN0LmZpbmQgS25vd25fcHJvdG9jb2wuYWxsIH5mOihmdW4gcHJvdG9jb2wgLT4gbWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sIHQpXG4gIGluXG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciBmIGJpbl90LnJlYWRlclxuOztcblxubW9kdWxlIE1hZ2ljX3ByZWZpeF9iaW5fcmVwciA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgKCogVGhlIGJpbiBwcm90IHJlcHJlc2VudGF0aW9uIG9mIGEgcHJvdG9jb2wgdmVyc2lvbiBoZWFkZXIgaXMgdGhlIHN0YW5kYXJkXG4gICAgIHJlcHJlc2VudGF0aW9uIGZvciBhbiBpbnQgbGlzdDpcblxuICAgICB8IG5hdDAgaW5kaWNhdGluZyBzaXplIHwgZWxlbWVudCAwIHwgZWxlbWVudCAxIHwgLi4uXG5cbiAgICAgW2NyZWF0ZV9leG5dIHdpbGwgYWx3YXlzIHB1dCB0aGUga25vd24gcHJvdG9jb2wgbWFnaWMgbnVtYmVyIGFzIFwiZWxlbWVudCAwXCIuXG5cbiAgICAgVGhlIGJpbiBzaXplIG9mIFwibmF0MCBpbmRpY2F0aW5nIHNpemVcIiBhbmQgXCJlbGVtZW50IDBcIiBpcyBmaXhlZCAodGhlcmUgYXJlIGV4cGVjdFxuICAgICB0ZXN0cyB0byBtYWtlIHN1cmUgd2UgbmV2ZXIgY2hhbmdlIHRoZW0pLiAqKVxuICBsZXQgYmluX3NpemUgPVxuICAgIGJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICArIEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlcl9iaW5fc2l6ZVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IChfbGlzdF9sZW5ndGggOiBCaW5fcHJvdC5OYXQwLnQpID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiBpblxuICAgIEJpbl9wcm90LlJlYWQuYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gSW50Ll9fYmluX3JlYWRfdF9fIH1cbiAgOztcbmVuZFxuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlcyA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlclxuICAgIChmdW4gbWFnaWNfbnVtYmVyIC0+IChNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIpIG1hZ2ljX251bWJlcilcbiAgICBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3JlYWRlcl90XG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZSA9IE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fc2l6ZVxuXG5tb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1ha2VfbGlzdF93aXRoX21heF9sZW4gPSBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlXG5lbmRcblxubGV0JXRlc3RfdW5pdCBcImJpbiBzaXplcyBhcmUgbm90IGNoYW5nZWQgYnkgYWNjaWRlbnRcIiA9XG4gICgqIEVuc3VyZSB0aGUgYmluX3NpemUgb2YgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICAgaXMgYWx3YXlzIDEuIFRoaXMgbWVhbnMgdGhhdCByZWdhcmRsZXNzIG9mIGhvdyBsb25nIHRoZSBsaXN0IG9mIHZlcnNpb25zIGluIHRoZVxuICAgICBwcm90b2NvbCBoZWFkZXIgaXMsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHRoZSBzYW1lIG51bWJlciBvZiBieXRlcy4gVGhlXG4gICAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludCBqdW1wcyB0byAzIGJ5dGVzIGF0IHRoZSB2YWx1ZSAxMjguICopXG4gIGxldCBib3VuZGVkX2xpc3RfYmluX3NpemUgPVxuICAgIEludC5iaW5fc2l6ZV90IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gIGluXG4gIGFzc2VydCAoYm91bmRlZF9saXN0X2Jpbl9zaXplID0gMSk7XG4gIGFzc2VydCAoNiA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSk7XG4gIGFzc2VydCAoXG4gICAgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZVxuICAgID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKVxuOztcbiIsInR5cGUgdCA9IEJpbl9wcm90Lk5hdDAudFxuW0BAZGVyaXZpbmcgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWUyZjRhLTQ5MGEtMTFlNi1iNjhmLWJiZDYyNDcyNTE2Y1wiXVxuXG5sZXQgYmluX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9uYXQwXG5sZXQgYmluX3NpemVfdCA9IEJpbl9wcm90LlNpemUuYmluX3NpemVfbmF0MFxubGV0IGJpbl93cml0ZXJfdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX3dyaXRlcl9uYXQwXG5sZXQgYmluX3dyaXRlX3QgPSBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfbmF0MFxubGV0IGJpbl9yZWFkZXJfdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXQwXG5sZXQgYmluX3JlYWRfdCA9IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbmF0MFxuXG5sZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdm5hdDAgPVxuICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG47O1xuXG5sZXQgb2ZfaW50X2V4biA9IEJpbl9wcm90Lk5hdDAub2ZfaW50XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxuXG5sZXQgb2Zfd3JpdGVyIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9ID1cbiAgbGV0IHdyaXRlIGJ1ZiB+cG9zIGEgPVxuICAgIGxldCBsZW4gPSBOYXQwLm9mX2ludF9leG4gKHNpemUgYSkgaW5cbiAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyBsZW4gaW5cbiAgICB3cml0ZSBidWYgfnBvcyBhXG4gIGluXG4gIGxldCBzaXplIGEgPVxuICAgIGxldCBsZW4gPSBOYXQwLm9mX2ludF9leG4gKHNpemUgYSkgaW5cbiAgICBOYXQwLmJpbl9zaXplX3QgbGVuICsgKChsZW4gOiBCaW5fcHJvdC5OYXQwLnQpIDo+IGludClcbiAgaW5cbiAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH1cbjs7XG5cbmxldCBvZl90eXBlX2NsYXNzIChiaW5fYSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9IG9mX3dyaXRlciBiaW5fYS53cml0ZXJcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBiaWdzdHJpbmdfYmluX3Byb3QgcyA9XG4gICAgICBsZXQgYmlnc3RyaW5nID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQnl0ZXMuYmluX3dyaXRlcl90IHMgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJpZ3N0cmluZy5TdGFibGUuVjEuYmluX3dyaXRlcl90IGJpZ3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgYmluX3Byb3Rfd2l0aF9sZW5ndGggcyA9XG4gICAgICBsZXQgd3JpdGVyX3dpdGhfbGVuZ3RoID0gb2Zfd3JpdGVyIEJ5dGVzLmJpbl93cml0ZXJfdCBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgd3JpdGVyX3dpdGhfbGVuZ3RoIHNcbiAgICA7O1xuXG4gICAgbGV0IHRlc3QgbGVuID1cbiAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGJpZ3N0cmluZ192ZXJzaW9uID0gYmlnc3RyaW5nX2Jpbl9wcm90IHMgaW5cbiAgICAgIGxldCB3aXRoX2xlbmd0aF92ZXJzaW9uID0gYmluX3Byb3Rfd2l0aF9sZW5ndGggcyBpblxuICAgICAgaWYgQmlnc3RyaW5nLnRvX3N0cmluZyBiaWdzdHJpbmdfdmVyc2lvbiA8PiBCaWdzdHJpbmcudG9fc3RyaW5nIHdpdGhfbGVuZ3RoX3ZlcnNpb25cbiAgICAgIHRoZW4gZmFpbHdpdGhmIFwibWlzbWF0Y2ggZm9yIGxlbmd0aCAlZFwiIGxlbiAoKVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgZm9yIGxlbiA9IDAgdG8gSW50LnBvdyAyIDEwIGRvXG4gICAgICAgIHRlc3QgbGVuXG4gICAgICBkb25lO1xuICAgICAgZm9yIHBvdyA9IDEwIHRvIDIwIGRvXG4gICAgICAgIGxldCB4ID0gSW50LnBvdyAyIHBvdyBpblxuICAgICAgICB0ZXN0ICh4IC0gMSk7XG4gICAgICAgIHRlc3QgeDtcbiAgICAgICAgdGVzdCAoeCArIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmVyc2lvbiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IHN1bW1hcml6ZSB0cyA9XG4gIExpc3QubWFwIHRzIH5mOihmdW4geyBuYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgfD4gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkIH5pbml0OkludC5TZXQuZW1wdHkgfmY6SW50LlNldC5hZGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IGRlc2NyaXB0aW9ucyA9XG4gICAgWyB7IG5hbWUgPSBcImZvb1wiOyB2ZXJzaW9uID0gMSB9XG4gICAgOyB7IG5hbWUgPSBcImZvb1wiOyB2ZXJzaW9uID0gMiB9XG4gICAgOyB7IG5hbWUgPSBcImJhclwiOyB2ZXJzaW9uID0gNSB9XG4gICAgXVxuICBpblxuICBsZXQgc3VtbWFyeSA9IHN1bW1hcml6ZSBkZXNjcmlwdGlvbnMgaW5cbiAgcHJpbnRfcyBbJXNleHAgKHN1bW1hcnkgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07XG4gIFslZXhwZWN0IHt8ICgoYmFyICg1KSkgKGZvbyAoMSAyKSkpIHx9XVxuOztcbiIsIigqKiBBc3luY19ycGMgcHJvdG9jb2wgdHlwZXMsIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqKVxuXG4oKiBXQVJOSU5HOiBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSB0eXBlcyB3aXRob3V0IGdvb2QgcmVhc29uICopXG5cbm9wZW4gQmluX3Byb3QuU3RkXG5vcGVuIFNleHBsaWIuU3RkXG5tb2R1bGUgUnBjX3RhZyA6IENvcmUuSWRlbnRpZmlhYmxlID0gQ29yZS5TdHJpbmdcbm1vZHVsZSBRdWVyeV9pZCA9IENvcmUuVW5pcXVlX2lkLkludDYzICgpXG5cbm1vZHVsZSBVbnVzZWRfcXVlcnlfaWQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdCA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBRdWVyeV9pZC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQgdCA9IFF1ZXJ5X2lkLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBScGNfZXJyb3IgOiBzaWdcbiAgb3BlbiBDb3JlXG5cbiAgdHlwZSB0ID1cbiAgICB8IEJpbl9pb19leG4gb2YgU2V4cC50XG4gICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIHwgV3JpdGVfZXJyb3Igb2YgU2V4cC50XG4gICAgfCBVbmNhdWdodF9leG4gb2YgU2V4cC50XG4gICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEJpbl9pb19leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgV3JpdGVfZXJyb3Igb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5jYXVnaHRfZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgQ29yZS5JbnQuU3RhYmxlLlYxLnQgXVxuICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4Y2M3NjZiZWZhMmNmNTY1ZWExNDdkOWZjZDVlYWFhYiB8fV1cbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb3JlLkNvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBDb3JlLlJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgSGVhZGVyID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcblxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhIFJwY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3F1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBRdWVyeSBvZiAnYVxuICAgIHwgYEFib3J0XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX2luaXRpYWxfbWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICgncmVzcG9uc2UsICdlcnJvcikgdCA9XG4gICAgeyB1bnVzZWRfcXVlcnlfaWQgOiBVbnVzZWRfcXVlcnlfaWQudFxuICAgIDsgaW5pdGlhbCA6ICgncmVzcG9uc2UsICdlcnJvcikgQ29yZS5SZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBFb2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB8IEhlYXJ0YmVhdFxuICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnkubmVlZHNfbGVuZ3RoXG4gICAgfCBSZXNwb25zZSBvZiAnYSBSZXNwb25zZS5uZWVkc19sZW5ndGhcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgc2V4cF9vZl1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSBtZXNzYWdlX2hhbmRsZXIgPSBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2FcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gc3RydWN0XG4gICgqKiBSZXN1bHQgb2YgYW4gW29uX21lc3NhZ2VdIGNhbGxiYWNrLiAgV2Ugc3BsaXQgdGhlIFtDb250aW51ZV0gYW5kIFtXYWl0IF9dIGNhc2VzIHRvXG4gICAgICBtYWtlIGl0IGNsZWFyIHRoYXQgW0NvbnRpbnVlXSBpcyB0aGUgZXhwZWN0ZWQgY2FzZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmVcbiAgICAgIG9wdGltaXplZCBmb3IgdGhpcyBjYXNlLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RvcCBvZiAnYVxuICAgIHwgQ29udGludWVcbiAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxuXG5tb2R1bGUgdHlwZSBSZWFkZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuXG4gICgqKiBTdGFydCByZWFkaW5nIGluY29taW5nIG1lc3NhZ2VzIGFuZCBwYXNzIHRoZW0gdG8gW29uX21lc3NhZ2VdLCB1bnRpbCBpdCByZXR1cm5zXG4gICAgICBbU3RvcCBfXS5cblxuICAgICAgW29uX2VuZF9vZl9iYXRjaF0gaXMgY2FsbGVkIGFmdGVyIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgYmVmb3JlIHdhaXRpbmcgZm9yXG4gICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlY29tZSByZWFkYWJsZSBhZ2Fpbi4gKilcbiAgdmFsIHJlYWRfZm9yZXZlclxuICAgIDogIHRcbiAgICAtPiBvbl9tZXNzYWdlOihCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgSGFuZGxlcl9yZXN1bHQudClcbiAgICAtPiBvbl9lbmRfb2ZfYmF0Y2g6KHVuaXQgLT4gdW5pdClcbiAgICAtPiAoJ2EsIFsgYEVvZiB8IGBDbG9zZWQgXSkgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIG1lc3NhZ2VfdG9vX2JpZyA9XG4gICAgeyBzaXplIDogaW50XG4gICAgOyBtYXhfbWVzc2FnZV9zaXplIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTZW50IG9mICdhXG4gICAgfCBDbG9zZWRcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBvZiBtZXNzYWdlX3Rvb19iaWdcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBXcml0ZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgbW9uaXRvciA6IHQgLT4gTW9uaXRvci50XG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG5cbiAgKCoqIEJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZW5kIG1lc3NhZ2UgdXNpbmcgdGhpcyB3cml0ZXIsXG4gICAgICBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgd3JpdGVyIGlzIGNsb3NlZCBvciB0aGUgY29uc3VtZXIgbGVhdmVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgY2FjaGVkIGJ5IFtScGMuVHJhbnNwb3J0XSAqKVxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtmbHVzaGVkIHRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IG11c3QgYmVjb21lIGRldGVybWluZWQgd2hlbiBhbGwgcHJpb3Igc2VudFxuICAgICAgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZC5cblxuICAgICAgSXQgbXVzdCBiZSBPSyB0byBjYWxsIFtmbHVzaGVkIHRdIGFmdGVyIFt0XSBoYXMgYmVlbiBjbG9zZWQuICopXG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3JlYWR5X3RvX3dyaXRlIHRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgIGFnYWluLiBBc3luYyBSUEMgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBzZW5kaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIHRvIGF2b2lkXG4gICAgICBmbG9vZGluZyB0aGUgdHJhbnNwb3J0LlxuXG4gICAgICBVc2luZyBbbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZF0gaXMgYW4gYWNjZXB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gKilcbiAgdmFsIHJlYWR5X3RvX3dyaXRlIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogQWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHNlbmQgZXhhY3RseSBvbmUgbWVzc2FnZS4gKilcblxuICB2YWwgc2VuZF9iaW5fcHJvdCA6IHQgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICAoKiogU2FtZSBhcyBbc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXSBidXQgdGhlIGJpZ3N0cmluZyBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB0aGVcbiAgICAgIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyB0aGVcbiAgICAgIGJpZ3N0cmluZy4gKilcbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IERlZmVycmVkLnQgU2VuZF9yZXN1bHQudFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbm1vZHVsZSBIZWFkZXIgPSBzdHJ1Y3RcbiAgbGV0IGxlbmd0aCA9IDhcbiAgbGV0IHVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgPSBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gYnVmIH5wb3NcblxuICBsZXQgdW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyBwYXlsb2FkX2xlbiA9XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50NjRfbGUgYnVmIH5wb3MgcGF5bG9hZF9sZW5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5IYW5kbGVyX3Jlc3VsdFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5SZWFkZXJcblxuICB0eXBlIHQgPSBUIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpICogJ2EgLT4gdFxuXG4gIGxldCBwYWNrIG0gdCA9IFQgKG0sIHQpXG5cbiAgKCogV2UgcHV0IHR5cGUgYW5ub3RhdGlvbnMgdG8gYmUgc3VyZSB0aGUgdHlwZSBpcyBub3QgYSBmdW5jdGlvbiB0eXBlLCBpLmUuIHRvIGF2b2lkXG4gICAgIGNyZWF0aW5nIGNsb3N1cmVzICopXG4gIGxldCBzZXhwX29mX3QgKFQgKChtb2R1bGUgTSksIHQpKSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUICgobW9kdWxlIE0pLCB0KSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcblxuICBsZXQgcmVhZF9mb3JldmVyIChUICgobW9kdWxlIE0pLCB0KSkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IF8gRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkX2ZvcmV2ZXIgdCB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoXG4gIDs7XG5cbiAgbGV0IHJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdCAoYmluX3JlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICByZWFkX2ZvcmV2ZXJcbiAgICAgIHRcbiAgICAgIH5vbl9tZXNzYWdlOihmdW4gYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgICAgbGV0IHggPSBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGlmICFwb3NfcmVmIDw+IHBvcyArIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICAgICAoIXBvc19yZWYgLSBwb3MpXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgU3RvcCB4KVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDppZ25vcmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5TZW5kX3Jlc3VsdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5Xcml0ZXJcblxuICB0eXBlICdhIHdyaXRlciA9XG4gICAgeyBpbXBsIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgOyB0IDogJ2FcbiAgICAoKiBXZSBjYWNoZSB0aGUgcmVzdWx0IG9mIFtzdG9wcGVkXSBiZWNhdXNlIGl0IGlzIG9mdGVuIHRoZSBbRGVmZXJyZWQuYW55XSBvZiBzZXZlcmFsXG4gICAgICAgb3RoZXIgZGVmZXJyZWRzIGFuZCB3ZSB3YW50IFtjYW5fc2VuZF0gdG8gYmUgc2ltcGxlLiAqKVxuICAgIDsgc3RvcHBlZCA6IHVuaXQgRGVmZXJyZWQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogJ2Egd3JpdGVyIC0+IHRcblxuICBsZXQgcGFjayAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgdCA9XG4gICAgVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkID0gTS5zdG9wcGVkIHQgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IG1vbml0b3IgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IE1vbml0b3IudCA9IE0ubW9uaXRvciB0XG4gIGxldCBieXRlc190b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogaW50ID0gTS5ieXRlc190b193cml0ZSB0XG4gIGxldCBmbHVzaGVkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmZsdXNoZWQgdFxuXG4gIGxldCByZWFkeV90b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWR5X3RvX3dyaXRlIHRcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIGJpbl93cml0ZXIgeCA6IF8gU2VuZF9yZXN1bHQudCA9XG4gICAgTS5zZW5kX2Jpbl9wcm90IHQgYmluX3dyaXRlciB4XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pXG4gICAgICAgIGJpbl93cml0ZXJcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDogXyBTZW5kX3Jlc3VsdC50XG4gICAgPVxuICAgIE0uc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgICAgICAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pXG4gICAgICAgIGJpbl93cml0ZXJcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDogXyBTZW5kX3Jlc3VsdC50XG4gICAgPVxuICAgIE0uc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHN0b3BwZWQgKFQgeyBzdG9wcGVkOyBfIH0pID0gc3RvcHBlZFxuXG4gIGxldCBjYW5fc2VuZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkIH0pID1cbiAgICBub3QgKE0uaXNfY2xvc2VkIHQgfHwgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wcGVkKVxuICA7O1xuXG4gIGxldCB0cmFuc2ZlciB0ID8obWF4X251bV92YWx1ZXNfcGVyX3JlYWQgPSAxXzAwMCkgcGlwZSBmID1cbiAgICBsZXQgY29uc3VtZXIgPVxuICAgICAgUGlwZS5hZGRfY29uc3VtZXIgcGlwZSB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgICAgbGV0JW1hcCAoKSA9IGZsdXNoZWQgdCBpblxuICAgICAgICBgT2spXG4gICAgaW5cbiAgICBsZXQgZW5kX29mX3BpcGUgPVxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBsZXQgcmVjIGl0ZXIgKCkgPVxuICAgICAgICAgIGlmIGNhbl9zZW5kIHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIFBpcGUucmVhZF9ub3cnIHBpcGUgfmNvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoOm1heF9udW1fdmFsdWVzX3Blcl9yZWFkXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjtcbiAgICAgICAgICAgICAgUGlwZS5Db25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtIGNvbnN1bWVyO1xuICAgICAgICAgICAgICByZWFkeV90b193cml0ZSB0ID4+PiBpdGVyXG4gICAgICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICAgICBQaXBlLnZhbHVlc19hdmFpbGFibGUgcGlwZSA+Pj4gZnVuIChgT2sgfCBgRW9mKSAtPiBpdGVyICgpXG4gICAgICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGl2YXIgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKCkpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID0gRGVmZXJyZWQuYW55IFsgZW5kX29mX3BpcGU7IHN0b3BwZWQgdCBdIGluXG4gICAgUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPVxuICB7IHJlYWRlciA6IFJlYWRlci50XG4gIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlIHQgPVxuICBsZXQlYmluZCAoKSA9IFdyaXRlci5jbG9zZSB0LndyaXRlciBpblxuICBSZWFkZXIuY2xvc2UgdC5yZWFkZXJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5cbigqKiBUaGUgdHlwZXMgb2YgdGhlIFtJbXBsZW1lbnRhdGlvbl0gYW5kIFtJbXBsZW1lbnRhdGlvbnNdIG1vZHVsZXMsIHdoaWNoIGhhdmVcbiAgICBhIGRlcGVuZGVuY3kgY3lsZTogW0ltcGxlbWVudGF0aW9uXSAtPiBbRGlyZWN0X3N0cmVhbV93cml0ZXJdIC0+XG4gICAgW0ltcGxlbWVudGF0aW9uc10gLT4gW0ltcGxlbWVudGF0aW9uXS4gKilcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbm1vZHVsZSBPbl9leGNlcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICAgIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSByZWMgSW1wbGVtZW50YXRpb24gOiBzaWdcbiAgbW9kdWxlIEV4cGVydCA6IHNpZ1xuICAgIG1vZHVsZSBSZXNwb25kZXIgOiBzaWdcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICAgIHwgUmVwbGllZFxuICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgRiA6IHNpZ1xuICAgIHR5cGUgKF8sIF8pIHJlc3VsdF9tb2RlID1cbiAgICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhKSByZXN1bHRfbW9kZVxuICAgICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gJ3VwZGF0ZSBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgICAgfCBPbmVfd2F5IDpcbiAgICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHVuaXQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGMgOlxuICAgICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjX2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgICAgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgU3RyZWFtaW5nX3JwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgZW5kXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICAgIDsgc2hhcGVzIDogU2V4cC50IExhenkudFxuICAgIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgICB9XG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvblxuXG5hbmQgSW1wbGVtZW50YXRpb25zIDogc2lnXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICAgIFsgYFJhaXNlXG4gICAgfCBgQ29udGludWVcbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gICAgfCBgQ2FsbCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgICB8IGBFeHBlcnQgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgICBdXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICAgIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBtb2R1bGUgcmVjIEluc3RhbmNlIDogc2lnXG4gICAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgICAgfCBEaXJlY3QgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG5cbiAgICB0eXBlICdhIHVucGFja2VkID1cbiAgICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2EgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiAoUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAnYSBJbXBsZW1lbnRhdGlvbi50KSBvcHRpb25cbiAgICAgIDsgcGFja2VkX3NlbGYgOiB0XG4gICAgICB9XG5cbiAgICBhbmQgdCA9IFQgOiBfIHVucGFja2VkIC0+IHRcbiAgZW5kXG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvbnNcblxuYW5kIERpcmVjdF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIG1vZHVsZSBQZW5kaW5nX3Jlc3BvbnNlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm9ybWFsIG9mICdhXG4gICAgICB8IEV4cGVydCBvZiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm90X3N0YXJ0ZWQgb2YgJ2EgUGVuZGluZ19yZXNwb25zZS50IFF1ZXVlLnRcbiAgICAgIHwgU3RhcnRlZFxuICBlbmRcblxuICBtb2R1bGUgSWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgIDsgaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudFxuICAgIDsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX3N0cmVhbV93cml0ZXIudFxuICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICB9XG5cbiAgYW5kICdhIGdyb3VwX2VudHJ5ID1cbiAgICB7IGdyb3VwIDogJ2EgRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAudFxuICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgfVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBbY29tcG9uZW50c10gaXMgb25seSB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBbY29tcG9uZW50c19ieV9pZF0gc28gd2UgY2FuIGl0ZXJhdGVcbiAgICAgICAgICAgb3ZlciBpdHMgZWxlbWVudHMgbW9yZSBxdWlja2x5IHRoYW4gd2UgY291bGQgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgb2ZcbiAgICAgICAgICAgW2NvbXBvbmVudHNfYnlfaWRdLiAqKVxuICAgICAgICBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgY29tcG9uZW50ID1cbiAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgIH1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA6PSAnYSB0XG5lbmQgPVxuICBEaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5hbmQgQ2FjaGVkX3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgOyBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB9XG5lbmQgPVxuICBDYWNoZWRfc3RyZWFtX3dyaXRlclxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5Pbl9leGNlcHRpb24udCA9XG4gIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZV9jb25uZWN0aW9uID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gdHJ1ZSB9XG5sZXQgY29udGludWUgPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSBmYWxzZSB9XG5cbmxldCBoYW5kbGVfZXhuXG4gICAgICB7IGNhbGxiYWNrOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSB9XG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICBleG5cbiAgPVxuICBPcHRpb24uaXRlciBjYWxsYmFjayB+ZjooZnVuIGNhbGxiYWNrIC0+IGNhbGxiYWNrIGV4bik7XG4gIGlmIGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gIHRoZW4gTW9uaXRvci5zZW5kX2V4biBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvblxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFeHBlcnQuUmVzcG9uZGVyLnQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHF1ZXJ5X2lkIHdyaXRlciA9IHsgcXVlcnlfaWQ7IHdyaXRlcjsgcmVzcG9uZGVkID0gZmFsc2UgfVxuICBlbmRcblxuICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgIHwgUmVwbGllZFxuICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgRiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdF9tb2RlID0gKCdhLCAnYikgRi5yZXN1bHRfbW9kZSA9XG4gICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EpIHJlc3VsdF9tb2RlXG4gICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGwgPVxuICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgRi5zdHJlYW1pbmdfaW1wbCA9XG4gICAgfCBQaXBlIG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAoJ2luaXQgKiAndXBkYXRlIFBpcGUuUmVhZGVyLnQsICdpbml0KSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAndXBkYXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgRi50ID1cbiAgICB8IE9uZV93YXkgOlxuICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwYyA6XG4gICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgKCogJ2luaXQgY2FuIGJlIGFuIGVycm9yIG9yIGFuIGluaXRpYWwgc3RhdGUgKilcbiAgICAgICAgKiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBsZXQgc2V4cF9vZl90IF8gPSBmdW5jdGlvblxuICAgIHwgT25lX3dheV9leHBlcnQgXyB8IE9uZV93YXkgXyAtPiBbJW1lc3NhZ2UgXCJvbmUtd2F5XCJdXG4gICAgfCBScGNfZXhwZXJ0IF8gfCBScGMgXyAtPiBbJW1lc3NhZ2UgXCJycGNcIl1cbiAgICB8IFN0cmVhbWluZ19ycGMgXyAtPiBbJW1lc3NhZ2UgXCJzdHJlYW1pbmctcnBjXCJdXG4gIDs7XG5cbiAgbGV0IGxpZnQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKSAtPiBPbmVfd2F5IChiaW5fbXNnLCBmdW4gc3RhdGUgc3RyIC0+IGltcGwgKGYgc3RhdGUpIHN0cilcbiAgICB8IE9uZV93YXlfZXhwZXJ0IGltcGwgLT5cbiAgICAgIE9uZV93YXlfZXhwZXJ0IChmdW4gc3RhdGUgYnVmIH5wb3MgfmxlbiAtPiBpbXBsIChmIHN0YXRlKSBidWYgfnBvcyB+bGVuKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCAoZnVuIHN0YXRlIHEgLT4gaW1wbCAoZiBzdGF0ZSkgcSksIHJlc3VsdF9tb2RlKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICgoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPiBpbXBsIChmIHN0YXRlKSByZXNwIGJ1ZiB+cG9zIH5sZW4pLCByZXN1bHRfbW9kZSlcbiAgICB8IFN0cmVhbWluZ19ycGMgKGJpbl9xLCBiaW5faSwgYmluX3UsIGltcGwpIC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPiBQaXBlIChmdW4gc3RhdGUgcSAtPiBpbXBsIChmIHN0YXRlKSBxKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+IERpcmVjdCAoZnVuIHN0YXRlIHEgdyAtPiBpbXBsIChmIHN0YXRlKSBxIHcpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyAoYmluX3EsIGJpbl9pLCBiaW5fdSwgaW1wbClcbiAgOztcbmVuZFxuXG50eXBlIG5vbnJlYyAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gIHsgdGFnIDogUnBjX3RhZy50XG4gIDsgdmVyc2lvbiA6IGludFxuICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgOyBzaGFwZXMgOiBTZXhwLnQgTGF6eS50XG4gIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBScGNfdGFnLnRvX3N0cmluZyB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbiB9XG5sZXQgbGlmdCB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdCB+ZiB0LmYgfVxubGV0IHVwZGF0ZV9vbl9leGNlcHRpb24gdCB+ZiA9IHsgdCB3aXRoIG9uX2V4Y2VwdGlvbiA9IGYgdC5vbl9leGNlcHRpb24gfVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQcm90b2NvbC5ScGNfZXJyb3JcbmluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoUHJvdG9jb2wuUnBjX2Vycm9yKVxuXG5leGNlcHRpb24gUnBjIG9mIHQgKiBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHJhaXNlIHQgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA9IHJhaXNlIChScGMgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pKVxuXG5sZXQgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IENvbm5lY3Rpb25fY2xvc2VkIC0+XG4gICAgWyVzZXhwIGBDb25uZWN0aW9uX2Nsb3NlZCAoZ2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uICgpIDogU2V4cC50KV1cbiAgfCBCaW5faW9fZXhuIF9cbiAgfCBXcml0ZV9lcnJvciBfXG4gIHwgVW5jYXVnaHRfZXhuIF9cbiAgfCBVbmltcGxlbWVudGVkX3JwYyBfXG4gIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IHNleHBfb2ZfdCB0XG47O1xuXG4oKiBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdGFrZSBhIFtDb25uZWN0aW9uLnRdLCBidXQgd2UgdGFrZSBpdHMgcGllY2VzIGluc3RlYWQgdG9cbiAgIGF2b2lkIGEgZGVwZW5kZW5jeSBjeWNsZSAqKVxubGV0IHRvX2Vycm9yXG4gICAgICB0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgRGVzY3JpcHRpb24ubmFtZSA9IHJwY19uYW1lOyB2ZXJzaW9uID0gcnBjX3ZlcnNpb24gfVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgPVxuICBsZXQgcnBjX2Vycm9yID1cbiAgICBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgIGxldCBjbG9zZV9yZWFzb24gPVxuICAgICAgICAoKiBVc3VhbGx5IChhbHdheXM/KSBoZXJlIHdlIHdpbGwgaGF2ZSB0aGUgZGVmZXJyZWQgYWxyZWFkeSBmdWxsXG4gICAgICAgICAgIGJlY2F1c2UgQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeVxuICAgICAgICAgICBjbG9zZWQgKilcbiAgICAgICAgRGVmZXJyZWQucGVlayBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIGluXG4gICAgICBbJXNleHAgKGNsb3NlX3JlYXNvbiA6IEluZm8udCBvcHRpb24pXSlcbiAgaW5cbiAgRXJyb3IuY3JlYXRlX3NcbiAgICBbJXNleHBcbiAgICAgIHsgcnBjX2Vycm9yIDogU2V4cC50XG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgcnBjX25hbWUgOiBzdHJpbmdcbiAgICAgIDsgcnBjX3ZlcnNpb24gOiBpbnRcbiAgICAgIH1dXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbnR5cGUgbG9jYXRlZF9lcnJvciA9XG4gIHsgbG9jYXRpb24gOiBzdHJpbmdcbiAgOyBleG4gOiBFeG4udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCBiaW5faW9fZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLkJpbl9pb19leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgdHJ5X3dpdGggP29uX2JhY2tncm91bmRfZXhjZXB0aW9uID9ydW4gfmxvY2F0aW9uIGYgPVxuICBsZXQgeCA9XG4gICAgbGV0IHJlc3QgPVxuICAgICAgbWF0Y2ggb25fYmFja2dyb3VuZF9leGNlcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGBMb2dcbiAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgIGluXG4gICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgfnJlc3RcbiAgICAgIH5ydW46KE9wdGlvbi52YWx1ZSBydW4gfmRlZmF1bHQ6YFNjaGVkdWxlKVxuICAgICAgZlxuICBpblxuICBsZXQgam9pbiA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4blxuICBpblxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIHggd2l0aFxuICB8IE5vbmUgLT4geCA+Pnwgam9pblxuICB8IFNvbWUgeCAtPiByZXR1cm4gKGpvaW4geClcbjs7XG5cbmxldCBvcl9lcnJvciB+cnBjX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgPVxuICBSZXN1bHQubWFwX2Vycm9yXG4gICAgfmY6XG4gICAgICAoUnBjX2Vycm9yLnRvX2Vycm9yXG4gICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZClcbjs7XG4iLCJvcGVuIENvcmVcblxuKCogdXRpbGl0eSBmdW5jdGlvbiBmb3IgYmluLWlvJ2luZyBvdXQgb2YgYSBCaWdzdHJpbmcudCAqKVxubGV0IGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAoYmluX3JlYWRlcl90IDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcilcbiAgICAgID9hZGRfbGVuXG4gICAgICBidWZcbiAgICAgIH5wb3NfcmVmXG4gICAgICB+KGxlbiA6IE5hdDAudClcbiAgICAgIH5sb2NhdGlvblxuICA9XG4gIHRyeVxuICAgIGxldCBpbml0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGRhdGEgPSBiaW5fcmVhZGVyX3QucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgYWRkX2xlbiA9XG4gICAgICBtYXRjaCBhZGRfbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgYWRkX2xlbiAtPiBhZGRfbGVuIGRhdGFcbiAgICBpblxuICAgIGlmICFwb3NfcmVmIC0gaW5pdF9wb3MgKyBhZGRfbGVuIDw+IChsZW4gOj4gaW50KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICghcG9zX3JlZiAtIGluaXRfcG9zKVxuICAgICAgICAobGVuIDogTmF0MC50IDo+IGludClcbiAgICAgICAgKCk7XG4gICAgT2sgZGF0YVxuICB3aXRoXG4gIHwgZSAtPiBScGNfcmVzdWx0LmJpbl9pb19leG4gfmxvY2F0aW9uIGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxuKCogQ29tbXV0ZSBSZXN1bHQgYW5kIERlZmVycmVkLiAqKVxubGV0IGRlZmVyX3Jlc3VsdCA6ICdhICdiLiAoJ2EgRGVmZXJyZWQudCwgJ2IpIFJlc3VsdC50IC0+ICgnYSwgJ2IpIFJlc3VsdC50IERlZmVycmVkLnRcbiAgPSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gcmV0dXJuIGVyclxuICAgIHwgT2sgZCAtPlxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQlbWFwIHggPSBkIGluXG4gICAgICAgICBPayB4XG4gICAgICAgfCBTb21lIGQgLT4gcmV0dXJuIChPayBkKSlcbjs7XG5cbm1vZHVsZSBEZWZlcnJlZF9pbW1lZGlhdGUgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBEZWZlcnJlZC50XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYmluZCBkIH5mID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZCA+Pj0gZlxuICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgZCB+ZiA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGQgPj58IGZcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlclxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgWyBgUmFpc2VcbiAgfCBgQ29udGludWVcbiAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICB8IGBDYWxsIG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0ID1cbiAgWyAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICB8IGBFeHBlcnQgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFJlc3BvbmRlci50XG4gICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zLnQgPVxuICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnRcbiAgfVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxubGV0IGRlc2NyaXB0aW9ucyB0ID0gSGFzaHRibC5rZXlzIHQuaW1wbGVtZW50YXRpb25zXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9IEluc3RhbmNlLnN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgIHwgRGlyZWN0IDpcbiAgICAgICAgKF8gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFtAc2V4cC5vcGFxdWVdKVxuICAgICAgICAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZXMgPSAoUC5RdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdW5wYWNrZWQgPSAnYSBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAoJ2EgaW1wbGVtZW50YXRpb25zW0BzZXhwLm9wYXF1ZV0pXG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgIDsgbXV0YWJsZSBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAoRGVzY3JpcHRpb24udCAqICgnYSBJbXBsZW1lbnRhdGlvbi50W0BzZXhwLm9wYXF1ZV0pKSBvcHRpb25cbiAgICAoKiBbcGFja2VkX3NlbGZdIGlzIGhlcmUgc28gd2UgY2FuIGVzc2VudGlhbGx5IHBhY2sgYW4gdW5wYWNrZWQgaW5zdGFuY2Ugd2l0aG91dCBkb2luZ1xuICAgICAgIGFueSBhZGRpdGlvbmFsIGFsbG9jYXRpb24uICopXG4gICAgOyBwYWNrZWRfc2VsZiA6ICh0W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGFuZCB0ID0gSW5zdGFuY2UudCA9IFQgOiBfIHVucGFja2VkIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gWyVzZXhwX29mOiBfIHVucGFja2VkXSB0XG5cbiAgbGV0IHNlbmRfd3JpdGVfZXJyb3IgdCBpZCBzZXhwID1cbiAgICBsZXQgZGF0YSA6IF8gUC5NZXNzYWdlLnQgPSBSZXNwb25zZSB7IGlkOyBkYXRhID0gRXJyb3IgKFdyaXRlX2Vycm9yIHNleHApIH0gaW5cbiAgICBtYXRjaCBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgZGF0YSB3aXRoXG4gICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIFwiRmFpbGVkIHRvIHNlbmQgd3JpdGUgZXJyb3IgdG8gY2xpZW50XCJcbiAgICAgICAgLCB7IGVycm9yID0gKHNleHAgOiBTZXhwLnQpOyByZWFzb24gPSAociA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpIH1dXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkIChyZXN1bHQgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gKClcbiAgICB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgc2VuZF93cml0ZV9lcnJvciB0IGlkIChbJXNleHBfb2Y6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdIHIpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2UgdCB+aWQgYmluX3dyaXRlciB4ID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlbiBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBiaW5fd3JpdGVyIHggfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+aWQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl9kYXRhIGRhdGEgPVxuICAgIGxldCBiaW5fd3JpdGVyID1cbiAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2RhdGEpXG4gICAgaW5cbiAgICB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgfSlcbiAgOztcblxuICBtb2R1bGUgQ2FjaGVkX3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgICB0eXBlIGluc3RhbmNlXG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX3N0cmVhbV93cml0ZXIudFxuXG4gICAgdmFsIGNyZWF0ZSA6IGlkOlAuUXVlcnlfaWQudCAtPiBiaW5fd3JpdGVyOidhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIHRcbiAgICB2YWwgd3JpdGUgOiAnYSB0IC0+IGluc3RhbmNlIC0+IFAuUXVlcnlfaWQudCAtPiAnYSAtPiB1bml0XG5cbiAgICB2YWwgd3JpdGVfZXhwZXJ0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBpbnN0YW5jZVxuICAgICAgLT4gUC5RdWVyeV9pZC50XG4gICAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAgIC0+IHBvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcblxuICAgIHZhbCB3cml0ZV9zdHJpbmcgOiAnYSB0IC0+IGluc3RhbmNlIC0+IFAuUXVlcnlfaWQudCAtPiBzdHJpbmcgLT4gdW5pdFxuICBlbmRcbiAgd2l0aCB0eXBlIGluc3RhbmNlIDo9IHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfc3RyZWFtX3dyaXRlci50ID1cbiAgICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICAgIDsgKCogTGVuZ3RoIG9mIHRoZSB1c2VyIGRhdGEgcGFydC4gV2Ugc2V0IHRoaXMgZmllbGQgd2hlbiBzZW5kaW5nIGEgbWVzc2FnZS4gVGhpc1xuICAgICAgICAgICByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkIGltbWVkaWF0ZWx5ICh3aGljaCBpcyB0aGVcbiAgICAgICAgICAgb25seSBhY2NlcHRhYmxlIHNlbWFudGljcyBmb3IgdGhlIHRyYW5zcG9ydCBsYXllciBhbnl3YXksIGFzIGl0IGRvZXNuJ3Qga25vdyBpZlxuICAgICAgICAgICB0aGUgdmFsdWUgaXMgbXV0YWJsZSBvciBub3QpLlxuXG4gICAgICAgICAgIFtkYXRhX2xlbl0gaXMgcGFzc2VkIHRvIGJpbi1wcm90IHdyaXRlcnMgYnkgbXV0YXRpbmcgW2RhdGFfbGVuXSBpbnN0ZWFkIG9mIGJ5XG4gICAgICAgICAgIHBhc3NpbmcgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBhdm9pZCBzb21lIGFsbG9jYXRpb24uXG4gICAgICAgICopXG4gICAgICAgIG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICB9XG5cblxuICAgIHR5cGUgdm9pZCA9IFZvaWRcblxuICAgIGxldCBiaW5fc2l6ZV92b2lkIFZvaWQgPSAwXG4gICAgbGV0IGJpbl93cml0ZV92b2lkIF9idWYgfnBvcyBWb2lkID0gcG9zXG5cbiAgICB0eXBlIHZvaWRfbWVzc2FnZSA9IHZvaWQgUC5NZXNzYWdlLm5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICB0eXBlIHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSB2b2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgKCogVGhpcyBpcyBub3QgcmUtZW50cmFudCBidXQgQXN5bmMgY29kZSBhbHdheXMgcnVucyBvbiBvbmUgdGhyZWFkIGF0IGEgdGltZSAqKVxuICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDMyXG5cbiAgICBsZXQgY2FjaGVfYmluX3Byb3R0ZWQgKGJpbl93cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyLndyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfmlkIH5iaW5fd3JpdGVyIDogYSB0ID1cbiAgICAgIGxldCBoZWFkZXJfcHJlZml4ID1cbiAgICAgICAgY2FjaGVfYmluX3Byb3R0ZWQgYmluX3dyaXRlcl92b2lkX21lc3NhZ2UgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayBWb2lkIH0pXG4gICAgICBpblxuICAgICAgeyBoZWFkZXJfcHJlZml4OyBiaW5fd3JpdGVyOyBkYXRhX2xlbiA9IE5hdDAub2ZfaW50X2V4biAwIH1cbiAgICA7O1xuXG4gICAgKCogVGhpcyBwYXJ0IG9mIHRoZSBtZXNzYWdlIGhlYWRlciBpcyBhIGNvbnN0YW50LCBtYWtlIGl0IGEgbGl0ZXJhbCB0byBtYWtlIHRoZVxuICAgICAgIHdyaXRpbmcgY29kZSBzbGlnaHRseSBmYXN0ZXIuICopXG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gPSA0XG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMiA9IDB4OGE3OWxcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzdHJlYW1fcmVzcG9uc2VfKiBjb25zdGFudHMgYXJlIGNvcnJlY3RcIiA9XG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgYmluX3dyaXRlcl92b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhLndyaXRlXG4gICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgKGBPayBWb2lkIDogdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSlcbiAgICAgIGluXG4gICAgICBhc3NlcnQgKGxlbiA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4pO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50MzJfdF9sZSBidWZmZXIgfnBvczowXG4gICAgICAgID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyKVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyID1cbiAgICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICAgICgqIFZlcnkgbG93LWxldmVsIGJpbl9wcm90IHN0dWZmLi4uICopXG4gICAgICBCaW5fcHJvdC5Db21tb24uYXNzZXJ0X3BvcyBwb3M7XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIHN0cl9sZW4gaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmluX3Byb3QuQ29tbW9uLnVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuOnN0cl9sZW47XG4gICAgICBuZXh0XG4gICAgOztcblxuICAgICgqIFRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgMyB2YXJpYW50cyBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlLiBUaGV5XG4gICAgICAgc2VyaWFsaXplIGEgW1Jlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayAoYE9rIGRhdGFfbGVuKSB9XSB2YWx1ZSwgdGFraW5nIGNhcmUgb2ZcbiAgICAgICB3cml0aW5nIHRoZSBbTmF0MC50XSBsZW5ndGggcHJlZml4IHdoZXJlIGFwcHJvcmlhdGUuXG5cbiAgICAgICBCZWFyIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGxldmVscyBvZiBsZW5ndGggcHJlZml4ZXMgZm9yIHN0cmVhbSByZXNwb25zZSBkYXRhXG4gICAgICAgbWVzc2FnZTogb25lIGZvciB0aGUgdXNlciBkYXRhICh1bmRlciB0aGUgYE9rLCBiZWZvcmUgdGhlIGFjdHVhbCBkYXRhKSwgYW5kIG9uZSBmb3JcbiAgICAgICB0aGUgcmVzcG9uc2UgZGF0YSAodW5kZXIgdGhlIC5kYXRhIGZpZWxkLCBiZWZvcmUgdGhlIE9rKS4gKilcbiAgICBsZXQgYmluX3NpemVfbmF0MF9oZWFkZXIgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgIGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5sZW5ndGggaGVhZGVyX3ByZWZpeFxuICAgICAgKyBOYXQwLmJpbl9zaXplX3QgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pXG4gICAgICArIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBoZWFkZXJfcHJlZml4IGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlblxuICAgICAgICArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgICArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pIGluXG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50MzJfdF9sZSBidWYgfnBvcyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzI7XG4gICAgICBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zOm5leHQgZGF0YV9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbmF0MF9oZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX25hdDBfaGVhZGVyOyB3cml0ZSA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlICh0LCBfKSA9IGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2UgYnVmIH5wb3MgKHQsIGRhdGEpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgdC5iaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZTsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZSB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyAodCwgXykgPVxuICAgICAgYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyBidWYgfnBvcyAodCwgc3RyKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0clxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmc7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIH1cbiAgICA7O1xuXG4gICAgKCogW3dyaXRlXSBhbmQgW3dyaXRlX3N0cmluZ10gYm90aCBhbGxvY2F0ZSAzIHdvcmRzIGZvciB0aGUgdHVwbGVzLiBbd3JpdGVfZXhwZXJ0XVxuICAgICAgIGRvZXMgbm90IGFsbG9jYXRlLiAqKVxuICAgIGxldCB3cml0ZSB0IChUIGluc3RhbmNlKSBpZCBkYXRhID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuICh0LmJpbl93cml0ZXIuc2l6ZSBkYXRhKTtcbiAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZSAodCwgZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3N0cmluZyB0IChUIGluc3RhbmNlKSBpZCBzdHIgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKFN0cmluZy5sZW5ndGggc3RyKTtcbiAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgKHQsIHN0cilcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2V4cGVydCB0IChUIGluc3RhbmNlKSBpZCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biBsZW47XG4gICAgICB3cml0ZV9tZXNzYWdlX2V4cGVydCBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciB0IH5idWYgfnBvcyB+bGVuXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuICAgIG1vZHVsZSBTdGF0ZSA9IFQuU3RhdGVcbiAgICBtb2R1bGUgSWQgPSBULklkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPVxuICAgICAgeyBpZCA6IElkLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgaW5zdGFuY2UgOiBJbnN0YW5jZS50XG4gICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfc3RyZWFtX3dyaXRlci50XG4gICAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgICB9XG5cbiAgICBhbmQgJ2EgZ3JvdXBfZW50cnkgPSAnYSBULmdyb3VwX2VudHJ5ID1cbiAgICAgIHsgZ3JvdXAgOiAnYSBULkdyb3VwLnRcbiAgICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgICB9XG5cbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICBsZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcblxuICAgIGxldCBmbHVzaGVkIHQgPVxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIFRyYW5zcG9ydC5Xcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXIgdCA9IHQuc3RyZWFtX3dyaXRlci5iaW5fd3JpdGVyXG5cbiAgICBsZXQgd3JpdGVfZW9mIHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9ID1cbiAgICAgIHdyaXRlX3Jlc3BvbnNlIGluc3RhbmNlIHF1ZXJ5X2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlIHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0geCA9XG4gICAgICBDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZSBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIHhcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0geCA9XG4gICAgICBDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZV9zdHJpbmcgc3RyZWFtX3dyaXRlciBpbnN0YW5jZSBxdWVyeV9pZCB4XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB7IGluc3RhbmNlOyBzdHJlYW1fd3JpdGVyOyBxdWVyeV9pZDsgXyB9IH5idWYgfnBvcyB+bGVuID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlX2V4cGVydCBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIH5idWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdCA9XG4gICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCB0LmNsb3NlZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgICAgIGxldCBncm91cHMgPSB0Lmdyb3VwcyBpblxuICAgICAgICBpZiBub3QgKEJhZy5pc19lbXB0eSBncm91cHMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGUuVmVyeV9sb3dfcHJpb3JpdHlfd29yay5lbnF1ZXVlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJhZy5yZW1vdmVfb25lIGdyb3VwcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gRmluaXNoZWRcbiAgICAgICAgICAgIHwgU29tZSB7IGdyb3VwOyBlbGVtZW50X2luX2dyb3VwIH0gLT5cbiAgICAgICAgICAgICAgQmFnLnJlbW92ZSBncm91cC5jb21wb25lbnRzIGVsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHNfYnlfaWQgdC5pZDtcbiAgICAgICAgICAgICAgTm90X2ZpbmlzaGVkKTtcbiAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgIHwgTm90X3N0YXJ0ZWQgXyAtPiAoKVxuICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfZW9mIHQpXG4gICAgOztcblxuICAgIGxldCBjbG9zZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gYXMgdCkgPVxuICAgICAgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQ7XG4gICAgICBIYXNodGJsLnJlbW92ZSBpbnN0YW5jZS5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnlfaWRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+IFF1ZXVlLmVucXVldWUgcSAoTm9ybWFsIHgpXG4gICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZSB0IHgpO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB4ID1cbiAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4IHdpdGhcbiAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICAgICAgIFF1ZXVlLmVucXVldWUgcSAoRXhwZXJ0IChCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWYgfnBvcyB+bGVuKSlcbiAgICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4pO1xuICAgICAgICAgIGBPaylcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHN0YXJ0IHQgPVxuICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICB8IFN0YXJ0ZWQgLT4gZmFpbHdpdGggXCJhdHRlbXB0ZWQgdG8gc3RhcnQgd3JpdGVyIHdoaWNoIHdhcyBhbHJlYWR5IHN0YXJ0ZWRcIlxuICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgIHQuc3RhdGUgPC0gU3RhcnRlZDtcbiAgICAgICAgUXVldWUuaXRlciBxIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9ybWFsIHggLT4gd3JpdGVfbWVzc2FnZSB0IHhcbiAgICAgICAgICB8IEV4cGVydCB4IC0+IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCk7XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZCB0aGVuIHdyaXRlX2VvZiB0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvblxuICAgICAgICAocmVzdWx0IDogKF8sIFJwY19lcnJvci50KSBSZXN1bHQudClcbiAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCkgLT5cbiAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICB8IEVycm9yIF8gfCBPayBfIC0+ICgpXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb25cbiAgICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgICA9XG4gICAgbGV0IGlkID0gcXVlcnkuaWQgaW5cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXkgKGJpbl9xdWVyeV9yZWFkZXIsIGYpIC0+XG4gICAgICBsZXQgcXVlcnlfY29udGVudHMgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBtZXNzYWdlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCBxdWVyeV9jb250ZW50cyB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGVyciAtPiBTdG9wIGVyclxuICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcTtcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlKSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheV9leHBlcnQgZiAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbjtcbiAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICBDb250aW51ZVxuICAgICAgIHdpdGhcbiAgICAgICB8IGV4biAtPlxuICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBleHBlcnQgY29tcHV0YXRpb25cIilcbiAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlJwYyAoYmluX3F1ZXJ5X3JlYWRlciwgYmluX3Jlc3BvbnNlX3dyaXRlciwgZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcXVlcnlfY29udGVudHMgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIHF1ZXJ5X2NvbnRlbnRzXG4gICAgICAgICAgICA+Pnx+IGYgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICB8PiB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICgqIEluIHRoZSBbRGVmZXJyZWRdIGJyYW5jaCB3ZSB1c2UgW01vbml0b3IudHJ5X3dpdGhdLCB3aGljaCBpbmNsdWRlc1xuICAgICAgICAgICAgICAgYmFja3RyYWNlcyB3aGVuIGl0IGNhdGNoZXMgYW4gZXhjZXB0aW9uLiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsc28gZ2V0XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGhlcmUuICopXG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgbGV0IHNleHAgPVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGxvY2F0aW9uID0gXCJzZXJ2ZXItc2lkZSBibG9ja2luZyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgICAgIDsgZXhuIDogZXhuXG4gICAgICAgICAgICAgICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIChFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biBzZXhwKSk7XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG4pXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICgqIFdlIGdlbmVyYWxseSB0cnkgdG8gd3JpdGUgYSByZXNwb25zZSBiZWZvcmUgaGFuZGxpbmcgW29uX2V4Y2VwdGlvbl0gc28gaWYgd2VcbiAgICAgICAgICAgICAgYXJlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24gd2Ugc3RpbGwgYWN0dWFsbHkgc2VuZCB0aGUgcmVzcG9uc2UgYmFjay4gV2hlbiB3ZVxuICAgICAgICAgICAgICBwYXNzIFtvbl9leGNlcHRpb24uY2FsbGJhY2tdIGhlcmUsIHdlIGFyZSBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHJhaXNlZFxuICAgICAgICAgICAgICBleGNlcHRpb25zIG5vdCB0byBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIGNsaWVudCAoZS5nLiBpZiB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgICAgcmFpc2VzIGJvdGggYXN5bmNocm9ub3VzbHkgYW5kIHN5bmNocm9ub3VzbHkpLiBUaGlzIHdvdWxkIGJlIGhhcmQgdG8gaGFuZGxlXG4gICAgICAgICAgICAgIGluIGEgbW9yZSBwcmluY2lwbGVkIHdheS4gKilcbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgIChmdW4gKCkgLT4gZGVmZXJfcmVzdWx0IChxdWVyeV9jb250ZW50cyA+Pnx+IGYgdC5jb25uZWN0aW9uX3N0YXRlKSlcbiAgICAgICAgIGluXG4gICAgICAgICAoKiBJbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhIHZhbHVlIGltbWVkaWF0ZWx5LCB3ZSB3aWxsXG4gICAgICAgICAgICB3cml0ZSB0aGUgcmVzcG9uc2UgaW1tZWRpYXRlbHkgYXMgd2VsbCAodGhpcyBpcyBhbHNvIHdoeSB0aGUgYWJvdmUgW3RyeV93aXRoXVxuICAgICAgICAgICAgaGFzIFt+cnVuOmBOb3ddKS4gIFRoaXMgY2FuIGJlIGEgYmlnIHBlcmZvcm1hbmNlIHdpbiBmb3Igc2VydmVycyB0aGF0IGdldCBtYW55XG4gICAgICAgICAgICBxdWVyaWVzIGluIGEgc2luZ2xlIEFzeW5jIGN5Y2xlLiAqKVxuICAgICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICA+Pj4gZnVuIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpO1xuICAgICAgQ29udGludWVcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjX2V4cGVydCAoZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci5jcmVhdGUgcXVlcnkuaWQgdC53cml0ZXIgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgKCogV2UgbmVlZCB0aGUgW01vbml0b3IudHJ5X3dpdGhdIGV2ZW4gZm9yIHRoZSBibG9ja2luZyBtb2RlIGFzIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICBtaWdodCByZXR1cm4gW0RlbGF5ZWRfcmVwb25zZV0sIHNvIHdlIGRvbid0IGJvdGhlciBvcHRpbWl6aW5nIHRoZSBibG9ja2luZ1xuICAgICAgICAgICBtb2RlLiAqKVxuICAgICAgICBsZXQgcmVzdCA9XG4gICAgICAgICAgbWF0Y2ggb25fZXhjZXB0aW9uLmNhbGxiYWNrIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGBMb2dcbiAgICAgICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aCB+cmVzdCB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZXNwb25kZXIgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+IHJlc3VsdFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPiBEZWZlcnJlZC5yZXR1cm4gcmVzdWx0KVxuICAgICAgaW5cbiAgICAgIGxldCBoYW5kbGVfZXhuIH5pc191bmNhdWdodF9leG4gZXhuID1cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG4gZXhuIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBleHBlcnQgY29tcHV0YXRpb25cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgICAgdGhlbiByZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl91bml0IHJlc3VsdDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICBpblxuICAgICAgICBpZiBpc191bmNhdWdodF9leG5cbiAgICAgICAgdGhlbiBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgIHJlc3VsdFxuICAgICAgaW5cbiAgICAgIGxldCBjaGVja19yZXNwb25kZWQgKCkgPVxuICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgIHRoZW4gT2sgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGhhbmRsZV9leG5cbiAgICAgICAgICAgIH5pc191bmNhdWdodF9leG46ZmFsc2VcbiAgICAgICAgICAgIChGYWlsdXJlIFwiRXhwZXJ0IGltcGxlbWVudGF0aW9uIGRpZCBub3QgcmVwbHlcIilcbiAgICAgIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgIGxldCBvcGVuIERlZmVycmVkX2ltbWVkaWF0ZS5MZXRfc3ludGF4IGluXG4gICAgICAgIG1hdGNoJW1hcCBkIHdpdGhcbiAgICAgICAgfCBPayByZXN1bHQgLT5cbiAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgfCBSZXBsaWVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBkIC0+IGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZFxuICAgICAgICAgIHRoZW4gY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB1cG9uIGQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICAgICAgfD4gUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgfD4gb2tfZXhuKTtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICB8IEVycm9yIGV4biAtPiBoYW5kbGVfZXhuIH5pc191bmNhdWdodF9leG46dHJ1ZSBleG5cbiAgICAgIGluXG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFdhaXRcbiAgICAgICAgICAgKGxldCVtYXAgciA9IGQgaW5cbiAgICAgICAgICAgIG9rX2V4blxuICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgICAgIHIpKVxuICAgICAgIHwgU29tZSByZXN1bHQgLT5cbiAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgICB8IEVycm9yIF8gLT4gU3RvcCByZXN1bHQpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5TdHJlYW1pbmdfcnBjXG4gICAgICAgIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5faW5pdF93cml0ZXIsIGJpbl91cGRhdGVfd3JpdGVyLCBpbXBsKSAtPlxuICAgICAgbGV0IHN0cmVhbV9xdWVyeSA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBzdHJlYW1fcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBBYm9ydCAtPiAwXG4gICAgICAgICAgICB8IGBRdWVyeSAobGVuIDogTmF0MC50KSAtPiAobGVuIDo+IGludCkpXG4gICAgICBpblxuICAgICAgKG1hdGNoIHN0cmVhbV9xdWVyeSB3aXRoXG4gICAgICAgfCBFcnJvciBfZXJyIC0+ICgpXG4gICAgICAgfCBPayBgQWJvcnQgLT5cbiAgICAgICAgICgqIE5vdGUgdGhhdCB0aGVyZSdzIHNvbWUgZGVsYXkgYmV0d2VlbiB3aGVuIHdlIHJlY2VpdmUgYSBwaXBlIFJQQyBxdWVyeSBhbmRcbiAgICAgICAgICAgIHdoZW4gd2UgcHV0IHNvbWV0aGluZyBpbiBbb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXSAod2Ugd2FpdCBmb3JcbiAgICAgICAgICAgIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0byByZXR1cm4pLiBEdXJpbmcgdGhpcyB0aW1lLCBhbiBhYm9ydCBtZXNzYWdlIHdvdWxkXG4gICAgICAgICAgICBqdXN0IGJlIGlnbm9yZWQuIFRoZSBkaXNwYXRjaGVyIGNhbid0IGFib3J0IHRoZSBxdWVyeSB3aGlsZSB0aGlzIGlzXG4gICAgICAgICAgICBoYXBwZW5pbmcsIHRob3VnaCwgc2luY2UgdGhlIGludGVyZmFjZSBkb2Vzbid0IGV4cG9zZSB0aGUgSUQgcmVxdWlyZWQgdG9cbiAgICAgICAgICAgIGFib3J0IHRoZSBxdWVyeSB1bnRpbCBhZnRlciBhIHJlc3BvbnNlIGhhcyBiZWVuIHJldHVybmVkLiAqKVxuICAgICAgICAgT3B0aW9uLml0ZXIgKEhhc2h0YmwuZmluZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeS5pZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUGlwZSBwaXBlIC0+IFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gICAgICAgICAgIHwgRGlyZWN0IHcgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2UgdylcbiAgICAgICB8IE9rIChgUXVlcnkgbGVuKSAtPlxuICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgfmxvY2F0aW9uOlwic3RyZWFtaW5nX3JwYyBzZXJ2ZXItc2lkZSBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgc3RyZWFtX3dyaXRlciA9XG4gICAgICAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLmNyZWF0ZSB+aWQgfmJpbl93cml0ZXI6YmluX3VwZGF0ZV93cml0ZXJcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgaW1wbF93aXRoX3N0YXRlID1cbiAgICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgIHwgUGlwZSBmIC0+IGBQaXBlIGZcbiAgICAgICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICAgICAgIGxldCB3cml0ZXIgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgICAgICAgICAgeyBpZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLklkLmNyZWF0ZSAoKVxuICAgICAgICAgICAgICAgOyBzdGF0ZSA9IE5vdF9zdGFydGVkIChRdWV1ZS5jcmVhdGUgKCkpXG4gICAgICAgICAgICAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgICAgICAgICA7IGluc3RhbmNlID0gdC5wYWNrZWRfc2VsZlxuICAgICAgICAgICAgICAgOyBxdWVyeV9pZCA9IGlkXG4gICAgICAgICAgICAgICA7IGdyb3VwcyA9IEJhZy5jcmVhdGUgKClcbiAgICAgICAgICAgICAgIDsgc3RyZWFtX3dyaXRlclxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTpxdWVyeS5pZCB+ZGF0YTooRGlyZWN0IHdyaXRlcik7XG4gICAgICAgICAgICAgYERpcmVjdCAoZiwgd3JpdGVyKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBydW5faW1wbCBpbXBsIHNwbGl0X29rIGhhbmRsZV9vayA9XG4gICAgICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKGRhdGEgPj58fiBpbXBsKSlcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCBhcyBlcnIpIC0+XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycik7XG4gICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG5cbiAgICAgICAgICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgICAgICAgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpXG4gICAgICAgICAgIHwgT2sgKEVycm9yIGVycikgLT5cbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgZXJyKVxuICAgICAgICAgICB8IE9rIChPayBvaykgLT5cbiAgICAgICAgICAgICBsZXQgaW5pdGlhbCwgcmVzdCA9IHNwbGl0X29rIG9rIGluXG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGluaXRpYWwpO1xuICAgICAgICAgICAgIGhhbmRsZV9vayByZXN0XG4gICAgICAgICBpblxuICAgICAgICAgKG1hdGNoIGltcGxfd2l0aF9zdGF0ZSB3aXRoXG4gICAgICAgICAgfCBgUGlwZSBmIC0+XG4gICAgICAgICAgICBydW5faW1wbFxuICAgICAgICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSlcbiAgICAgICAgICAgICAgRm4uaWRcbiAgICAgICAgICAgICAgKGZ1biBwaXBlX3IgLT5cbiAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooUGlwZSBwaXBlX3IpO1xuICAgICAgICAgICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAgICAgICAgIChXcml0ZXIudHJhbnNmZXJcbiAgICAgICAgICAgICAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgICAgICAgICAgICAgIHBpcGVfclxuICAgICAgICAgICAgICAgICAgICAgIChDYWNoZWRfc3RyZWFtX3dyaXRlci53cml0ZSBzdHJlYW1fd3JpdGVyIHQucGFja2VkX3NlbGYgaWQpKTtcbiAgICAgICAgICAgICAgICAgUGlwZS5jbG9zZWQgcGlwZV9yXG4gICAgICAgICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGVfclxuICAgICAgICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPlxuICAgICAgICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZik7XG4gICAgICAgICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQpXG4gICAgICAgICAgfCBgRGlyZWN0IChmLCB3cml0ZXIpIC0+XG4gICAgICAgICAgICBydW5faW1wbFxuICAgICAgICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSB3cml0ZXIpXG4gICAgICAgICAgICAgIChmdW4geCAtPiB4LCAoKSlcbiAgICAgICAgICAgICAgKGZ1biAoKSAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5zdGFydCB3cml0ZXIpKSk7XG4gICAgICBDb250aW51ZVxuICA7O1xuXG4gIGxldCBmbHVzaCAoVCB0KSA9XG4gICAgYXNzZXJ0IChub3QgdC5zdG9wcGVkKTtcbiAgICBsZXQgcHJvZHVjZXJzX2ZsdXNoZWQgPVxuICAgICAgSGFzaHRibC5mb2xkIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5pbml0OltdIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPlxuICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgfCBEaXJlY3QgXyAtPiBhY2NcbiAgICAgICAgfCBQaXBlIHBpcGUgLT4gRGVmZXJyZWQuaWdub3JlX20gKFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlKSA6OiBhY2MpXG4gICAgaW5cbiAgICBEZWZlcnJlZC5hbGxfdW5pdCBwcm9kdWNlcnNfZmx1c2hlZFxuICA7O1xuXG4gIGxldCBzdG9wIChUIHQpID1cbiAgICB0LnN0b3BwZWQgPC0gdHJ1ZTtcbiAgICBIYXNodGJsLml0ZXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IERpcmVjdCB3cml0ZXIgLT5cbiAgICAgICAgKCogRG9uJ3QgcmVtb3ZlIHRoZSB3cml0ZXIgZnJvbSB0aGUgaW5zdGFuY2UsIGFzIHRoYXQgd291bGQgbW9kaWZ5IHRoZSBoYXNodGFibGVcbiAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLiAqKVxuICAgICAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2Ugd3JpdGVyXG4gICAgICB8IFBpcGUgXyAtPiAoKSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICA7O1xuXG4gIGxldCBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgYFJhaXNlIC0+IFJwY19lcnJvci5yYWlzZSBlcnJvciB0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgIHwgYENhbGwgZiAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBmXG4gICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS5QLlF1ZXJ5LnRhZylcbiAgICAgICAgICAgfnZlcnNpb246cXVlcnkudmVyc2lvblxuICAgICAgIHdpdGhcbiAgICAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9ID0gdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gOiBEZXNjcmlwdGlvbi50ID1cbiAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBTb21lIChsYXN0X2Rlc2MsIGltcGxlbWVudGF0aW9uKSB3aGVuIERlc2NyaXB0aW9uLmVxdWFsIGxhc3RfZGVzYyBkZXNjcmlwdGlvbiAtPlxuICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPlxuICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBpbXBsZW1lbnRhdGlvbnMgZGVzY3JpcHRpb24gd2l0aFxuICAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbiAtPlxuICAgICAgICAgdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPC0gU29tZSAoZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgICAgICAgfCBgRXhwZXJ0IGltcGwgLT5cbiAgICAgICAgICAgIGxldCB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSA9IGxlbiB9ID0gcXVlcnkgaW5cbiAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbmRlciA9IFJlc3BvbmRlci5jcmVhdGUgaWQgdC53cml0ZXIgaW5cbiAgICAgICAgICAgICAgaW1wbFxuICAgICAgICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHRhZylcbiAgICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICAgIHJlc3BvbmRlclxuICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgIH5sZW46KGxlbiA6PiBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gQ29udGludWUgZWxzZSBXYWl0IGRcbiAgICAgICAgICB8IChgQ29udGludWUgfCBgUmFpc2UgfCBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDYWxsIF8pIGFzIG9uX3Vua25vd25fcnBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBScGNfZXJyb3IuVW5pbXBsZW1lbnRlZF9ycGMgKHF1ZXJ5LnRhZywgYFZlcnNpb24gcXVlcnkudmVyc2lvbikgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgcXVlcnkuaWQgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IChFcnJvciBlcnJvcik7XG4gICAgICAgICAgICBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeVxuICAgICAgICAoVCB0KVxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgaWYgdC5zdG9wcGVkIHx8IFdyaXRlci5pc19jbG9zZWQgdC53cml0ZXJcbiAgICB0aGVuIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC5TdG9wIChPayAoKSlcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBJbnN0YW5jZS5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5sZXQgY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnM6aSdzIH5vbl91bmtub3duX3JwYyA9XG4gICgqIE1ha2Ugc3VyZSB0aGUgdGFncyBhcmUgdW5pcXVlLiAqKVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gRGVzY3JpcHRpb24uVGFibGUuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIGxldCBkdXBzID0gRGVzY3JpcHRpb24uSGFzaF9zZXQuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIExpc3QuaXRlciBpJ3MgfmY6KGZ1biAoaSA6IF8gSW1wbGVtZW50YXRpb24udCkgLT5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgeyBEZXNjcmlwdGlvbi5uYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpLnRhZzsgdmVyc2lvbiA9IGkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjcmlwdGlvbiB+ZGF0YTppIHdpdGhcbiAgICB8IGBPayAtPiAoKVxuICAgIHwgYER1cGxpY2F0ZSAtPiBIYXNoX3NldC5hZGQgZHVwcyBkZXNjcmlwdGlvbik7XG4gIGlmIG5vdCAoSGFzaF9zZXQuaXNfZW1wdHkgZHVwcylcbiAgdGhlbiBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgKEhhc2hfc2V0LnRvX2xpc3QgZHVwcykpXG4gIGVsc2VcbiAgICBPa1xuICAgICAgeyBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDsgb25fdW5rbm93bl9ycGMgPSAob25fdW5rbm93bl9ycGMgOj4gXyBvbl91bmtub3duX3JwY193aXRoX2V4cGVydClcbiAgICAgIH1cbjs7XG5cbmxldCBpbnN0YW50aWF0ZVxuICAgICAgdFxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyXG4gID1cbiAgbGV0IHJlYyB1bnBhY2tlZCA6IF8gSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zID0gdFxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICA7IHN0b3BwZWQgPSBmYWxzZVxuICAgIDsgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uID0gTm9uZVxuICAgIDsgcGFja2VkX3NlbGYgPSBJbnN0YW5jZS5UIHVucGFja2VkXG4gICAgfVxuICBpblxuICB1bnBhY2tlZC5wYWNrZWRfc2VsZlxuOztcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgb2YgRGVzY3JpcHRpb24udCBsaXN0IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjID1cbiAgbWF0Y2ggY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcykgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcylcbjs7XG5cbmxldCBudWxsICgpID0gY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zOltdIH5vbl91bmtub3duX3JwYzpgUmFpc2VcblxubGV0IGFkZF9leG4gdCAoaW1wbGVtZW50YXRpb24gOiBfIEltcGxlbWVudGF0aW9uLnQpID1cbiAgbGV0IGRlc2MgOiBEZXNjcmlwdGlvbi50ID1cbiAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGltcGxlbWVudGF0aW9uLnRhZzsgdmVyc2lvbiA9IGltcGxlbWVudGF0aW9uLnZlcnNpb24gfVxuICBpblxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5jb3B5IHQuaW1wbGVtZW50YXRpb25zIGluXG4gIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2MgfmRhdGE6aW1wbGVtZW50YXRpb24gd2l0aFxuICB8IGBEdXBsaWNhdGUgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgWyBkZXNjIF0pXG4gIHwgYE9rIC0+IHsgdCB3aXRoIGltcGxlbWVudGF0aW9ucyB9XG47O1xuXG5sZXQgYWRkIHQgaW1wbGVtZW50YXRpb24gPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGFkZF9leG4gdCBpbXBsZW1lbnRhdGlvbilcblxubGV0IGxpZnQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gfmYgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5tYXAgaW1wbGVtZW50YXRpb25zIH5mOihJbXBsZW1lbnRhdGlvbi5saWZ0IH5mKSBpblxuICBsZXQgb25fdW5rbm93bl9ycGMgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IChgUmFpc2UgfCBgQ29udGludWUgfCBgQ2xvc2VfY29ubmVjdGlvbikgYXMgeCAtPiB4XG4gICAgfCBgQ2FsbCBjYWxsIC0+IGBDYWxsIChmdW4gc3RhdGUgLT4gY2FsbCAoZiBzdGF0ZSkpXG4gICAgfCBgRXhwZXJ0IGV4cGVydCAtPiBgRXhwZXJ0IChmdW4gc3RhdGUgLT4gZXhwZXJ0IChmIHN0YXRlKSlcbiAgaW5cbiAgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH1cbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IFJlc3BvbmRlclxuXG4gIG1vZHVsZSBScGNfcmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gUmVzcG9uZGVyLnRcblxuICAgIGxldCBjYW5ub3Rfc2VuZCByID1cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAgIHJcbiAgICAgICAgWyVzZXhwX29mOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XVxuICAgIDs7XG5cbiAgICBsZXQgbWFya19yZXNwb25kZWQgKHQgOiB0KSA9XG4gICAgICBpZiB0LnJlc3BvbmRlZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFscmVhZHkgcmVzcG9uZGVkXCIgdCBbJXNleHBfb2Y6IFJlc3BvbmRlci50XTtcbiAgICAgIHQucmVzcG9uZGVkIDwtIHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgICAgdC53cml0ZXJcbiAgICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgICBoZWFkZXJcbiAgICAgICAgICB+YnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgIHdpdGhcbiAgICAgIHwgU2VudCBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaWdzdHJpbmcgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIGhlYWRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9lcnJvciAodCA6IHQpIGVycm9yID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgZGF0YSA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcmF3IHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgKEVycm9yLnRvX2V4biBlcnJvcilcbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Jpbl9wcm90ICh0IDogdCkgYmluX3dyaXRlcl9hIGEgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9hKSlcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgYSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9leG4gPSBjcmVhdGVfZXhuXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBSZWFkZXIgPSBUcmFuc3BvcnQuUmVhZGVyXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5fdHlwZV9jbGFzc11cblxuICB2YWwgdjEgOiB0XG4gIHZhbCBuZWdvdGlhdGUgOiB1czp0IC0+IHBlZXI6dCAtPiBpbnQgT3JfZXJyb3IudFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgUC5IZWFkZXJcblxuICBsZXQgbmVnb3RpYXRlID0gbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlcjp0cnVlXG4gIGxldCB2MSA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNyZWF0ZV9leG4gfnByb3RvY29sOlJwYyB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMSBdXG5lbmRcblxubW9kdWxlIEhhbmRzaGFrZV9lcnJvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVvZlxuICAgICAgfCBUcmFuc3BvcnRfY2xvc2VkXG4gICAgICB8IFRpbWVvdXRcbiAgICAgIHwgUmVhZGluZ19oZWFkZXJfZmFpbGVkIG9mIEVycm9yLnRcbiAgICAgIHwgTmVnb3RpYXRpb25fZmFpbGVkIG9mIEVycm9yLnRcbiAgICAgIHwgTmVnb3RpYXRlZF91bmV4cGVjdGVkX3ZlcnNpb24gb2YgaW50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBleGNlcHRpb24gSGFuZHNoYWtlX2Vycm9yIG9mICh0ICogSW5mby50KSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCB0b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gdCA9IEhhbmRzaGFrZV9lcnJvciAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbilcbmVuZFxuXG5tb2R1bGUgSGVhcnRiZWF0X2NvbmZpZyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgZmllbGRzXVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyh0aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC4pXG4gICAgICAgID8oc2VuZF9ldmVyeSA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMTAuKVxuICAgICAgICAoKVxuICAgID1cbiAgICB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuICA7O1xuXG4gIG1vZHVsZSBSdW50aW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHRvX3J1bnRpbWUgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH0gPSB7IFJ1bnRpbWUudGltZW91dDsgc2VuZF9ldmVyeSB9XG5lbmRcblxudHlwZSByZXNwb25zZV9oYW5kbGVyID1cbiAgTmF0MC50IFAuUmVzcG9uc2UudFxuICAtPiByZWFkX2J1ZmZlcjpCaWdzdHJpbmcudFxuICAtPiByZWFkX2J1ZmZlcl9wb3NfcmVmOmludCByZWZcbiAgLT4gWyBga2VlcFxuICAgICB8IGB3YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICB8IGByZW1vdmUgb2YgdW5pdCBScGNfcmVzdWx0LnRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICBdXG5cbnR5cGUgdCA9XG4gIHsgZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgOyBoZWFydGJlYXRfY29uZmlnIDogSGVhcnRiZWF0X2NvbmZpZy5SdW50aW1lLnRcbiAgOyBtdXRhYmxlIGhlYXJ0YmVhdF9jYWxsYmFja3MgOiAodW5pdCAtPiB1bml0KSBhcnJheVxuICA7IG11dGFibGUgbGFzdF9zZWVuX2FsaXZlIDogVGltZV9ucy50XG4gIDsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICA7IG9wZW5fcXVlcmllcyA6IChQLlF1ZXJ5X2lkLnQsIChyZXNwb25zZV9oYW5kbGVyW0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBjbG9zZV9zdGFydGVkIDogSW5mby50IEl2YXIudFxuICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgKCogVGhlcmUncyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb25uZWN0aW9ucyBhbmQgdGhlaXIgaW1wbGVtZW50YXRpb24gaW5zdGFuY2VzXG4gICAgICh0aGUgbGF0dGVyIGRlcGVuZHMgb24gdGhlIGNvbm5lY3Rpb24gc3RhdGUsIHdoaWNoIGlzIGdpdmVuIGFjY2VzcyB0byB0aGUgY29ubmVjdGlvblxuICAgICB3aGVuIGl0IGlzIGNyZWF0ZWQpLiAqKVxuICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50IFNldF9vbmNlLnRcbiAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnRcbiAgOyBoZWFydGJlYXRfZXZlbnQgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC50IFNldF9vbmNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdF9odW1fd3JpdGVyIHQgPVxuICBbJXNleHAgeyBkZXNjcmlwdGlvbiA6IEluZm8udCA9IHQuZGVzY3JpcHRpb247IHdyaXRlciA6IFdyaXRlci50ID0gdC53cml0ZXIgfV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbiB0ID0gdC5kZXNjcmlwdGlvblxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG5sZXQgd3JpdGVyIHQgPVxuICBpZiBpc19jbG9zZWQgdCB8fCBub3QgKFdyaXRlci5jYW5fc2VuZCB0LndyaXRlcikgdGhlbiBFcnJvciBgQ2xvc2VkIGVsc2UgT2sgdC53cml0ZXJcbjs7XG5cbmxldCBieXRlc190b193cml0ZSB0ID0gV3JpdGVyLmJ5dGVzX3RvX3dyaXRlIHQud3JpdGVyXG5sZXQgZmx1c2hlZCB0ID0gV3JpdGVyLmZsdXNoZWQgdC53cml0ZXJcblxubGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHQgLT4gJ2EgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gJ2EgPVxuICBmdW4gdCByIC0+XG4gIG1hdGNoIHIgd2l0aFxuICB8IFNlbnQgeCAtPiB4XG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQWxsIG9mIHRoZSBwbGFjZXMgd2UgY2FsbCBbaGFuZGxlX3NlbmRfcmVzdWx0XSBjaGVjayB3aGV0aGVyIFt0XSBpcyBjbG9zZWRcbiAgICAgICAodXN1YWxseSB2aWEgdGhlIFt3cml0ZXJdIGZ1bmN0aW9uIGFib3ZlKS4gVGhpcyBjaGVja3Mgd2hldGhlciBbdC53cml0ZXJdIGlzXG4gICAgICAgY2xvc2VkLCB3aGljaCBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgW3RdIGlzIGNsb3NlZC4gKilcbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlJQQyBjb25uZWN0aW9uIGdvdCBjbG9zZWQgd3JpdGVyXCIgdCBzZXhwX29mX3RfaHVtX3dyaXRlclxuICB8IE1lc3NhZ2VfdG9vX2JpZyBfIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAsIHsgcmVhc29uID0gKHIgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KTsgY29ubmVjdGlvbiA9ICh0IDogdF9odW1fd3JpdGVyKSB9XVxuOztcblxubGV0IGRpc3BhdGNoIHQgfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5ID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgYXMgciAtPiByXG4gIHwgT2sgd3JpdGVyIC0+XG4gICAgT3B0aW9uLml0ZXIgcmVzcG9uc2VfaGFuZGxlciB+ZjooZnVuIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9xdWVyaWVzIH5rZXk6cXVlcnkuUC5RdWVyeS5pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgd3JpdGVyXG4gICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfcXVlcnkpKVxuICAgICAgKFF1ZXJ5IHF1ZXJ5KVxuICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgIE9rICgpXG47O1xuXG5sZXQgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgZG9fc2VuZCB0IH50YWcgfnZlcnNpb24gYnVmIH5wb3MgfmxlbiB+cmVzcG9uc2VfaGFuZGxlciA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIGBDbG9zZWRcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgUXVlcnkgeyB0YWc7IHZlcnNpb247IGlkOyBkYXRhID0gTmF0MC5vZl9pbnRfZXhuIGxlbiB9XG4gICAgaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTppZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIGRvX3NlbmQgd3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBoZWFkZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0XG4gICAgaW5cbiAgICBPayByZXN1bHRcbjs7XG5cbmxldCBkaXNwYXRjaF9iaWdzdHJpbmcgPSBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG5cbmxldCBzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmcgPVxuICBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG47O1xuXG5sZXQgaGFuZGxlX3Jlc3BvbnNlIHQgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQgd2l0aFxuICB8IE5vbmUgLT4gU3RvcCAoRXJyb3IgKFJwY19lcnJvci5Vbmtub3duX3F1ZXJ5X2lkIHJlc3BvbnNlLmlkKSlcbiAgfCBTb21lIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAobWF0Y2ggcmVzcG9uc2VfaGFuZGxlciByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgd2l0aFxuICAgICB8IGBrZWVwIC0+IENvbnRpbnVlXG4gICAgIHwgYHdhaXQgd2FpdCAtPiBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IHdhaXQgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIChtYXRjaCByZW1vdmFsX2NpcmN1bXN0YW5jZXMgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBfIC0+IENvbnRpbnVlXG4gICAgICAgICAgIHwgQmluX2lvX2V4biBfXG4gICAgICAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgICAgICAgfCBXcml0ZV9lcnJvciBfXG4gICAgICAgICAgIHwgVW5jYXVnaHRfZXhuIF9cbiAgICAgICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gU3RvcCAoRXJyb3IgZSkpKSlcbjs7XG5cbmxldCBoYW5kbGVfbXNnXG4gICAgICB0XG4gICAgICAobXNnIDogXyBQLk1lc3NhZ2UudClcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggbXNnIHdpdGhcbiAgfCBIZWFydGJlYXQgLT5cbiAgICBBcnJheS5pdGVyIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gICAgQ29udGludWVcbiAgfCBSZXNwb25zZSByZXNwb25zZSAtPiBoYW5kbGVfcmVzcG9uc2UgdCByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbjs7XG5cbmxldCBjbG9zZV9yZWFzb24gdCB+b25fY2xvc2UgPVxuICBsZXQgcmVhc29uID0gSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCBpblxuICBtYXRjaCBvbl9jbG9zZSB3aXRoXG4gIHwgYHN0YXJ0ZWQgLT4gcmVhc29uXG4gIHwgYGZpbmlzaGVkIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZCBpblxuICAgIHJlYXNvblxuOztcblxubGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuXG5sZXQgYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayB0IGYgPVxuICAoKiBBZGRpbmcgaGVhcnRiZWF0IGNhbGxiYWNrcyBpcyByZWxhdGl2ZWx5IHJhcmUsIGJ1dCB0aGUgY2FsbGJhY2tzIGFyZSB0cmlnZ2VyZWQgYSBsb3QuXG4gICAgIFRoZSBhcnJheSByZXByZXNlbnRhdGlvbiBtYWtlcyB0aGUgYWRkaXRpb24gcXVhZHJhdGljIGZvciB0aGUgc2FrZSBvZiBrZWVwaW5nIHRoZVxuICAgICB0cmlnZ2VyaW5nIGNoZWFwLiAqKVxuICB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5oZWFydGJlYXRfY2FsbGJhY2tzXG47O1xuXG5sZXQgcmVzZXRfaGVhcnRiZWF0X3RpbWVvdXQgdCB0aW1lb3V0ID1cbiAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXQgPC0gdGltZW91dDtcbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2Vcbjs7XG5cbmxldCBsYXN0X3NlZW5fYWxpdmUgdCA9IHQubGFzdF9zZWVuX2FsaXZlXG5cbmxldCBhYm9ydF9oZWFydGJlYXRpbmcgdCA9XG4gIE9wdGlvbi5pdGVyIChTZXRfb25jZS5nZXQgdC5oZWFydGJlYXRfZXZlbnQpIH5mOihmdW4gZXZlbnQgLT5cbiAgICBtYXRjaCBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hYm9ydCB0LnRpbWVfc291cmNlIGV2ZW50IHdpdGhcbiAgICB8IE9rIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZCAtPiAoKVxuICAgIHwgQ3VycmVudGx5X2hhcHBlbmluZyAtPlxuICAgICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UucnVuX2FmdGVyIHQudGltZV9zb3VyY2UgVGltZV9ucy5TcGFuLnplcm8gKGZ1biAoKSAtPlxuICAgICAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hYm9ydF9leG4gdC50aW1lX3NvdXJjZSBldmVudCkpXG47O1xuXG5sZXQgY2xvc2UgPyhzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2ZfaW50X3NlYyA1KSB+cmVhc29uIHQgPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBhYm9ydF9oZWFydGJlYXRpbmcgdDtcbiAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkIHJlYXNvbjtcbiAgICAobWF0Y2ggU2V0X29uY2UuZ2V0IHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIHdpdGhcbiAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgfCBTb21lIGluc3RhbmNlIC0+XG4gICAgICAgbGV0IGZsdXNoZWQgPSBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuZmx1c2ggaW5zdGFuY2UgaW5cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGZsdXNoZWRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlO1xuICAgICAgICAgZmx1c2hlZClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdFxuICAgICAgICAgICAgIFsgZmx1c2hlZFxuICAgICAgICAgICAgIDsgV3JpdGVyLnN0b3BwZWQgdC53cml0ZXJcbiAgICAgICAgICAgICA7IFRpbWVfc291cmNlLmFmdGVyXG4gICAgICAgICAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgICAgICAgICBzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgICAgICAgICBdXG4gICAgICAgICBpblxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2UpKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBXcml0ZXIuY2xvc2UgdC53cml0ZXJcbiAgICA+Pj4gZnVuICgpIC0+IFJlYWRlci5jbG9zZSB0LnJlYWRlciA+Pj4gZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKTtcbiAgY2xvc2VfZmluaXNoZWQgdFxuOztcblxubGV0IG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID1cbiAgbGV0IGYgYnVmIH5wb3MgfmxlbjpfIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgbGV0IG5hdDBfbXNnID0gUC5NZXNzYWdlLmJpbl9yZWFkX25hdDBfdCBidWYgfnBvc19yZWYgaW5cbiAgICBtYXRjaFxuICAgICAgaGFuZGxlX21zZ1xuICAgICAgICB0XG4gICAgICAgIG5hdDBfbXNnXG4gICAgICAgIH5yZWFkX2J1ZmZlcjpidWZcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6cG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgd2l0aFxuICAgIHwgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IFdhaXQgXyBhcyByZXMgLT4gcmVzXG4gICAgfCBTdG9wIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgIGxldCBtc2cgPSBcIlJwYyBtZXNzYWdlIGhhbmRsaW5nIGxvb3Agc3RvcHBlZFwiIGluXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gSW5mby5vZl9zdHJpbmcgbXNnXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIEluZm8uY3JlYXRlXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgICAgIGVcbiAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgIFwiQ29ubmVjdGlvbi5vbl9tZXNzYWdlIHJlc3VsdGVkIGluIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yLiBUaGlzIGlzIFxcXG4gICAgICAgICAgICAgICAgICB3ZWlyZC5cIl0pKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgU3RvcCByZWFzb25cbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIGZcbjs7XG5cbmxldCBoZWFydGJlYXRfbm93IHQgPVxuICBsZXQgc2luY2VfbGFzdF9oZWFydGJlYXQgPVxuICAgIFRpbWVfbnMuZGlmZiAoU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpIHQubGFzdF9zZWVuX2FsaXZlXG4gIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oID4gKSBzaW5jZV9sYXN0X2hlYXJ0YmVhdCB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICB0aGVuIChcbiAgICBsZXQgcmVhc29uICgpID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgIVwiTm8gaGVhcnRiZWF0cyByZWNlaXZlZCBmb3IgJXtzZXhwOlRpbWVfbnMuU3Bhbi50fS5cIlxuICAgICAgICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl90aHVuayByZWFzb24pKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiAoKVxuICAgIHwgT2sgd3JpdGVyIC0+XG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB3cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IEhlYXJ0YmVhdFxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQpXG47O1xuXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuXG5cbmxldCBjbGVhbnVwIHQgfnJlYXNvbiBleG4gPVxuICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KTtcbiAgaWYgbm90IChIYXNodGJsLmlzX2VtcHR5IHQub3Blbl9xdWVyaWVzKVxuICB0aGVuIChcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIHwgUnBjX2Vycm9yLlJwYyAoZXJyb3IsIChfIDogSW5mby50KSkgLT4gZXJyb3JcbiAgICAgIHwgZXhuIC0+IFVuY2F1Z2h0X2V4biAoRXhuLnNleHBfb2ZfdCBleG4pXG4gICAgaW5cbiAgICAoKiBjbGVhbiB1cCBvcGVuIHN0cmVhbWluZyByZXNwb25zZXMgKilcbiAgICAoKiBhbiB1bmZvcnR1bmF0ZSBoYWNrOyBvayBiZWNhdXNlIHRoZSByZXNwb25zZSBoYW5kbGVyIHdpbGwgaGF2ZSBub3RoaW5nXG4gICAgICAgdG8gcmVhZCBmb2xsb3dpbmcgYSByZXNwb25zZSB3aGVyZSBbZGF0YV0gaXMgYW4gZXJyb3IgKilcbiAgICBsZXQgZHVtbXlfYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAxIGluXG4gICAgbGV0IGR1bW15X3JlZiA9IHJlZiAwIGluXG4gICAgSGFzaHRibC5pdGVyaSB0Lm9wZW5fcXVlcmllcyB+ZjooZnVuIH5rZXk6cXVlcnlfaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChyZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcjpkdW1teV9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6ZHVtbXlfcmVmXG4gICAgICAgICAgIHsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IEVycm9yIGVycm9yIH0pKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9xdWVyaWVzO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBkdW1teV9idWZmZXIpXG47O1xuXG5sZXQgc2NoZWR1bGVfaGVhcnRiZWF0cyB0ID1cbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2U7XG4gIGxldCBoZWFydGJlYXRfZnJvbV9ub3dfb24gPVxuICAgICgqIFthdF9pbnRlcnZhbHNdIHdpbGwgc2NoZWR1bGUgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0aGUgZmlyc3QgdGltZSB0aGUgdGltZV9zb3VyY2UgaXNcbiAgICAgICBhZHZhbmNlZCAqKVxuICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmF0X2ludGVydmFsc1xuICAgICAgdC50aW1lX3NvdXJjZVxuICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnNlbmRfZXZlcnlcbiAgICAgIChmdW4gKCkgLT4gaGVhcnRiZWF0X25vdyB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaGVhcnRiZWF0X2V2ZW50IFslaGVyZV0gaGVhcnRiZWF0X2Zyb21fbm93X29uXG47O1xuXG5sZXQgcnVuX2FmdGVyX2hhbmRzaGFrZSB0IH5pbXBsZW1lbnRhdGlvbnMgfmNvbm5lY3Rpb25fc3RhdGUgfndyaXRlcl9tb25pdG9yX2V4bnMgPVxuICBsZXQgaW5zdGFuY2UgPVxuICAgIEltcGxlbWVudGF0aW9ucy5pbnN0YW50aWF0ZVxuICAgICAgaW1wbGVtZW50YXRpb25zXG4gICAgICB+d3JpdGVyOnQud3JpdGVyXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGU6KGNvbm5lY3Rpb25fc3RhdGUgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluc3RhbmNlO1xuICBsZXQgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY2xvc2UgY29ubmVjdGlvbiBtb25pdG9yXCIgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciB+ZjooZnVuIGV4biAtPlxuICAgIGxldCByZWFzb24gPVxuICAgICAgSW5mby5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW1wbGVtZW50YXRpb25cIiAoZXhuIDogRXhuLnQpXVxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCkpO1xuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNvbm5lY3Rpb24gbG9vcFwiICgpIGluXG4gIGxldCByZWFzb24gbmFtZSBleG4gPVxuICAgIGV4biwgSW5mby50YWcgKEluZm8ub2ZfZXhuIGV4bikgfnRhZzooXCJleG4gcmFpc2VkIGluIFJQQyBjb25uZWN0aW9uIFwiIF4gbmFtZSlcbiAgaW5cbiAgU3RyZWFtLml0ZXJcbiAgICAoU3RyZWFtLmludGVybGVhdmVcbiAgICAgICAoU3RyZWFtLm9mX2xpc3RcbiAgICAgICAgICBbIFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcImxvb3BcIikgKE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IpXG4gICAgICAgICAgOyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJXcml0ZXIudFwiKSB3cml0ZXJfbW9uaXRvcl9leG5zXG4gICAgICAgICAgXSkpXG4gICAgfmY6KGZ1biAoZXhuLCByZWFzb24pIC0+IGNsZWFudXAgdCBleG4gfnJlYXNvbik7XG4gIHdpdGhpbiB+bW9uaXRvciAoZnVuICgpIC0+XG4gICAgc2NoZWR1bGVfaGVhcnRiZWF0cyB0O1xuICAgIFJlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgIHQucmVhZGVyXG4gICAgICB+b25fbWVzc2FnZTooU3RhZ2VkLnVuc3RhZ2UgKG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSlcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6KGZ1biAoKSAtPlxuICAgICAgICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSlcbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE9rIHJlYXNvbiAtPiBjbGVhbnVwIHQgfnJlYXNvbiAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKVxuICAgICgqIFRoZSBwcm90b2NvbCBpcyBzdWNoIHRoYXQgcmlnaHQgbm93LCB0aGUgb25seSBvdXRjb21lIG9mIHRoZSBvdGhlciBzaWRlIGNsb3NpbmcgdGhlXG4gICAgICAgY29ubmVjdGlvbiBub3JtYWxseSBpcyB0aGF0IHdlIGdldCBhbiBlb2YuICopXG4gICAgfCBFcnJvciAoYEVvZiB8IGBDbG9zZWQpIC0+XG4gICAgICBjbGVhbnVwXG4gICAgICAgIHRcbiAgICAgICAgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJFT0Ygb3IgY29ubmVjdGlvbiBjbG9zZWRcIilcbiAgICAgICAgKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgZG9faGFuZHNoYWtlIHQgfmhhbmRzaGFrZV90aW1lb3V0ID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gcmV0dXJuIChFcnJvciBIYW5kc2hha2VfZXJyb3IuVHJhbnNwb3J0X2Nsb3NlZClcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB3cml0ZXIgSGVhZGVyLmJpbl90LndyaXRlciBIZWFkZXIudjEgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgKCogSWYgd2UgdXNlIFttYXhfY29ubmVjdGlvbnNdIGluIHRoZSBzZXJ2ZXIsIHRoZW4gdGhpcyByZWFkIG1heSBqdXN0IGhhbmcgdW50aWwgdGhlXG4gICAgICAgc2VydmVyIHN0YXJ0cyBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zICh3aGljaCBjb3VsZCBiZSBuZXZlcikuICBUaGF0IGlzIHdoeSBhXG4gICAgICAgdGltZW91dCBpcyB1c2VkICopXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIChmdW4gKCkgLT4gUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdC5yZWFkZXIgSGVhZGVyLmJpbl90LnJlYWRlcilcbiAgICBpblxuICAgIChtYXRjaCVtYXBcbiAgICAgICBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXRcbiAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgaGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgICAgIHJlc3VsdFxuICAgICB3aXRoXG4gICAgIHwgYFRpbWVvdXQgLT5cbiAgICAgICAoKiBUaGVyZSdzIGEgcGVuZGluZyByZWFkLCB0aGUgcmVhZGVyIGlzIGJhc2ljYWxseSB1c2VsZXNzIG5vdywgc28gd2UgY2xlYW4gaXRcbiAgICAgICAgICB1cC4gKilcbiAgICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkhhbmRzaGFrZSB0aW1lb3V0XCIpKTtcbiAgICAgICBFcnJvciBIYW5kc2hha2VfZXJyb3IuVGltZW91dFxuICAgICB8IGBSZXN1bHQgKEVycm9yIGV4bikgLT5cbiAgICAgICBsZXQgcmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJbUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3RdIHJhaXNlZFwiIGluXG4gICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICAgRXJyb3IgKFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCAoRXJyb3Iub2ZfZXhuIGV4bikpXG4gICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBFb2YpKSAtPiBFcnJvciBFb2ZcbiAgICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYENsb3NlZCkpIC0+IEVycm9yIFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgfCBgUmVzdWx0IChPayAoT2sgcGVlcikpIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5uZWdvdGlhdGUgfnVzOkhlYWRlci52MSB+cGVlciB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoTmVnb3RpYXRpb25fZmFpbGVkIGUpXG4gICAgICAgIHwgT2sgMSAtPiBPayAoKVxuICAgICAgICB8IE9rIGkgLT4gRXJyb3IgKE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIGkpKSlcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sOlJwY1xuXG5sZXQgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgPyhoYW5kc2hha2VfdGltZW91dCA9IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQpXG4gICAgICA/KGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLmNyZWF0ZSAoKSlcbiAgICAgID8oZGVzY3JpcHRpb24gPSBJbmZvLm9mX3N0cmluZyBcIjxjcmVhdGVkLWRpcmVjdGx5PlwiKVxuICAgICAgPyh0aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAoeyByZWFkZXI7IHdyaXRlciB9IDogVHJhbnNwb3J0LnQpXG4gID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9XG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gSW1wbGVtZW50YXRpb25zLm51bGwgKClcbiAgICB8IFNvbWUgcyAtPiBzXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IGRlc2NyaXB0aW9uXG4gICAgOyBoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy50b19ydW50aW1lIGhlYXJ0YmVhdF9jb25maWdcbiAgICA7IGhlYXJ0YmVhdF9jYWxsYmFja3MgPSBbfHxdXG4gICAgOyBsYXN0X3NlZW5fYWxpdmUgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdGltZV9zb3VyY2VcbiAgICA7IHJlYWRlclxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3F1ZXJpZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGhlYXJ0YmVhdF9ldmVudCA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgbGV0IHdyaXRlcl9tb25pdG9yX2V4bnMgPSBNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSAoV3JpdGVyLm1vbml0b3Igd3JpdGVyKSBpblxuICB1cG9uIChXcml0ZXIuc3RvcHBlZCB3cml0ZXIpIChmdW4gKCkgLT5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJQQyB0cmFuc3BvcnQgc3RvcHBlZFwiKSkpO1xuICBtYXRjaCVtYXAgZG9faGFuZHNoYWtlIHQgfmhhbmRzaGFrZV90aW1lb3V0IHdpdGhcbiAgfCBPayAoKSAtPlxuICAgIHJ1bl9hZnRlcl9oYW5kc2hha2UgdCB+aW1wbGVtZW50YXRpb25zIH5jb25uZWN0aW9uX3N0YXRlIH53cml0ZXJfbW9uaXRvcl9leG5zO1xuICAgIE9rIHRcbiAgfCBFcnJvciBlcnJvciAtPlxuICAgIEVycm9yIChIYW5kc2hha2VfZXJyb3IudG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOmRlc2NyaXB0aW9uIGVycm9yKVxuOztcblxubGV0IHdpdGhfY2xvc2VcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+ZGlzcGF0Y2hfcXVlcmllc1xuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBmXG4gICAgfCBgUmFpc2UgLT4gcmFpc2VcbiAgaW5cbiAgbGV0JWJpbmQgdCA9XG4gICAgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBFcnJvciBlIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBUcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciBlXG4gIHwgT2sgdCAtPlxuICAgIE1vbml0b3IucHJvdGVjdFxuICAgICAgfnJ1bjpcbiAgICAgICAgYFNjaGVkdWxlXG4gICAgICB+cmVzdDpgTG9nXG4gICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgIGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJScGMuQ29ubmVjdGlvbi53aXRoX2Nsb3NlIGZpbmlzaGVkXCIpKVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0JWJpbmQgcmVzdWx0ID0gZGlzcGF0Y2hfcXVlcmllcyB0IGluXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgfCBTb21lIF8gLT4gY2xvc2VfZmluaXNoZWQgdFxuICAgICAgICAgaW5cbiAgICAgICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXJ2ZXJfd2l0aF9jbG9zZVxuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIHRyYW5zcG9ydFxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgPVxuICBsZXQgb25faGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBgQ2FsbCBmXG4gICAgfCBgUmFpc2UgLT4gYFJhaXNlXG4gICAgfCBgSWdub3JlIC0+IGBDYWxsIChmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICBpblxuICB3aXRoX2Nsb3NlXG4gICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICA/ZGVzY3JpcHRpb25cbiAgICA/dGltZV9zb3VyY2VcbiAgICB0cmFuc3BvcnRcbiAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gICAgfmRpc3BhdGNoX3F1ZXJpZXM6KGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG47O1xuXG5sZXQgY2xvc2VcbiAgICAgID9zdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgID8ocmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJScGMuQ29ubmVjdGlvbi5jbG9zZVwiKVxuICAgICAgdFxuICA9XG4gIGNsb3NlID9zdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgfnJlYXNvbiB0XG47O1xuXG5tb2R1bGUgQ2xpZW50X2ltcGxlbWVudGF0aW9ucyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAncyB0ID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgOiB0IC0+ICdzXG4gICAgOyBpbXBsZW1lbnRhdGlvbnMgOiAncyBJbXBsZW1lbnRhdGlvbnMudFxuICAgIH1cblxuICBsZXQgbnVsbCAoKSA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlID0gKGZ1biBfIC0+ICgpKTsgaW1wbGVtZW50YXRpb25zID0gSW1wbGVtZW50YXRpb25zLm51bGwgKCkgfVxuICA7O1xuZW5kXG4iLCJcbm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb25cbm1vZHVsZSBPbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbiA9IEltcGxlbWVudGF0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb25zID0gSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgVHJhbnNwb3J0ID0gVHJhbnNwb3J0XG5tb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pj1+ICkgPSBSZXN1bHQuKCA+Pj0gKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxubW9kdWxlIFJwY19jb21tb24gPSBzdHJ1Y3RcbiAgbGV0IGRpc3BhdGNoX3JhdydcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IHF1ZXJ5ID0geyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IHF1ZXJ5IH0gaW5cbiAgICBtYXRjaCBDb25uZWN0aW9uLmRpc3BhdGNoIGNvbm4gfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIFJwY19lcnJvci5Db25uZWN0aW9uX2Nsb3NlZFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9yYXcgY29ubiB+dGFnIH52ZXJzaW9uIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB+cXVlcnlfaWQgfmYgPVxuICAgIGxldCByZXNwb25zZV9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAobWF0Y2hcbiAgICAgICBkaXNwYXRjaF9yYXcnXG4gICAgICAgICBjb25uXG4gICAgICAgICB+dGFnXG4gICAgICAgICB+dmVyc2lvblxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSAoZiByZXNwb25zZV9pdmFyKSlcbiAgICAgd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IEl2YXIuZmlsbCByZXNwb25zZV9pdmFyIGUpO1xuICAgIEl2YXIucmVhZCByZXNwb25zZV9pdmFyXG4gIDs7XG5lbmRcblxubGV0IHNoYXBlcyBsc3QgPVxuICBTZXhwLkxpc3RcbiAgICAoTGlzdC5tYXAgbHN0IH5mOihmdW4gKG5hbWUsIHNoYXBlKSAtPlxuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJcIiB+XzoobmFtZSA6IHN0cmluZykgfl86KEJpbl9wcm90LlNoYXBlLmV2YWxfdG9fZGlnZXN0X3N0cmluZyBzaGFwZSA6IHN0cmluZyldKSlcbjs7XG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9yZXNwb25zZSA6ICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyByZXNwb25zZV90eXBlX2lkIDogJ3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSA9XG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cmVzcG9uc2VcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9yZXNwb25zZVxuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQucXVlcnlfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5yZXNwb25zZV90eXBlX2lkXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuYmluX3Jlc3BvbnNlXG4gIGxldCBzaGFwZXMgdCA9IHNoYXBlcyBbIFwicXVlcnlcIiwgdC5iaW5fcXVlcnkuc2hhcGU7IFwicmVzcG9uc2VcIiwgdC5iaW5fcmVzcG9uc2Uuc2hhcGUgXVxuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IFJwYyAodC5iaW5fcXVlcnkucmVhZGVyLCB0LmJpbl9yZXNwb25zZS53cml0ZXIsIGYsIERlZmVycmVkKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IFJwYyAodC5iaW5fcXVlcnkucmVhZGVyLCB0LmJpbl9yZXNwb25zZS53cml0ZXIsIGYsIEJsb2NraW5nKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2UgPVxuICAgICAgICByZXNwb25zZS5kYXRhXG4gICAgICAgID4+PX4gZnVuIGxlbiAtPlxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIHQuYmluX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgSXZhci5maWxsIGl2YXIgcmVzcG9uc2U7XG4gICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fcXVlcnkud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfmY6cmVzcG9uc2VfaGFuZGxlclxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgaW5cbiAgICBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuIHQgY29ubiBxdWVyeSA9IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA+PnwgT3JfZXJyb3Iub2tfZXhuXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbnMuRXhwZXJ0LlJwY19yZXNwb25kZXJcblxuICAgIGxldCBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZV9oYW5kbGVyIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyID1cbiAgICAgICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgICAgIG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgaGFuZGxlX2Vycm9yXG4gICAgICAgICAgICAgIChFcnJvci50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgICAgICAgICAgIGUpKTtcbiAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gKGxlbiA6IE5hdDAudCA6PiBpbnQpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGhhbmRsZV9yZXNwb25zZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBgcmVtb3ZlIChPayAoKSkgZWxzZSBgcmVtb3ZlX2FuZF93YWl0IGRcbiAgICAgIGluXG4gICAgICBkb19kaXNwYXRjaFxuICAgICAgICBjb25uXG4gICAgICAgIH50YWc6KFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZylcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgYnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSByZXNwb25zZV9oYW5kbGVyKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2ggY29ubiB+cnBjX3RhZyB+dmVyc2lvbiBidWYgfnBvcyB+bGVuIH5oYW5kbGVfcmVzcG9uc2UgfmhhbmRsZV9lcnJvciA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5cbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBEZWZlcnJlZClcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChTZXhwLkF0b20gXCJVbmtub3duXCIpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24nXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChTZXhwLkF0b20gXCJVbmtub3duXCIpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gIHR5cGUgJ21zZyB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fbXNnIDogJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IG1zZ190eXBlX2lkIDogJ21zZyBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2cgPVxuICAgIGxldCBtc2dfdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTptc2dcIl0gc2V4cF9vZl9vcGFxdWUgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZTsgdmVyc2lvbjsgYmluX21zZzsgbXNnX3R5cGVfaWQgfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9IHNoYXBlcyBbIFwibXNnXCIsIHQuYmluX21zZy5zaGFwZSBdXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IG1zZ190eXBlX2lkIHQgPSB0Lm1zZ190eXBlX2lkXG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBPbmVfd2F5ICh0LmJpbl9tc2cucmVhZGVyLCBmKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXcnXG4gICAgICBjb25uXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OnQuYmluX21zZy53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGRpc3BhdGNoJyB0IGNvbm4gcXVlcnkgfD4gZnVuIHJlc3VsdCAtPiBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuIHQgY29ubiBxdWVyeSA9IE9yX2Vycm9yLm9rX2V4biAoZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5KVxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IE9uZV93YXlfZXhwZXJ0IGZcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2ggeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfSBjb25uIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rICgpIC0+IGBPa1xuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGVfZGlzcGF0Y2hcbiAgICAgICAgICB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9XG4gICAgICAgICAgY29ublxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLnNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZmx1c2hlZCAtPiBgRmx1c2hlZCBmbHVzaGVkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRfbG9jYWxseVxuICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgfCBFcnJvciBvZiBFcnJvci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICAgICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgfCBFcnJvciBvZiBFcnJvci5TdGFibGUuVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG4oKiB0aGUgYmFzaXMgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBQaXBlX3JwYyBhbmQgU3RhdGVfcnBjICopXG5tb2R1bGUgU3RyZWFtaW5nX3JwYyA9IHN0cnVjdFxuICBtb2R1bGUgSW5pdGlhbF9tZXNzYWdlID0gUC5TdHJlYW1faW5pdGlhbF9tZXNzYWdlXG5cbiAgdHlwZSAoJ3F1ZXJ5LCAnaW5pdGlhbF9yZXNwb25zZSwgJ3VwZGF0ZV9yZXNwb25zZSwgJ2Vycm9yX3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZSA6ICdpbml0aWFsX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZSA6ICd1cGRhdGVfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgOiAnZXJyb3JfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIDogJ2luaXRpYWxfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA6ICd1cGRhdGVfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkIDogJ2Vycm9yX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayA9XG4gICAgICBtYXRjaCBjbGllbnRfcHVzaGVzX2JhY2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06ZXJyb3JcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgPSBiaW5fZXJyb3JcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFja1xuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV9pbml0aWFsX21lc3NhZ2UgeCA9XG4gICAgeyBJbml0aWFsX21lc3NhZ2UudW51c2VkX3F1ZXJ5X2lkID0gUC5VbnVzZWRfcXVlcnlfaWQudDsgaW5pdGlhbCA9IHggfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgc2hhcGVzXG4gICAgICBbIFwicXVlcnlcIiwgdC5iaW5fcXVlcnkuc2hhcGVcbiAgICAgIDsgXCJpbml0aWFsLXJlc3BvbnNlXCIsIHQuYmluX2luaXRpYWxfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgXCJ1cGRhdGUtcmVzcG9uc2VcIiwgdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IFwiZXJyb3JcIiwgdC5iaW5fZXJyb3JfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIF1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2dlbiB0ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSBpbXBsID1cbiAgICBsZXQgYmluX2luaXRfd3JpdGVyID1cbiAgICAgIEluaXRpYWxfbWVzc2FnZS5iaW5fd3JpdGVyX3RcbiAgICAgICAgdC5iaW5faW5pdGlhbF9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgdC5iaW5fZXJyb3JfcmVzcG9uc2Uud3JpdGVyXG4gICAgaW5cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgU3RyZWFtaW5nX3JwY1xuICAgICAgICAgICh0LmJpbl9xdWVyeS5yZWFkZXIsIGJpbl9pbml0X3dyaXRlciwgdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLndyaXRlciwgaW1wbClcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgKEVycm9yIGVycikpXG4gICAgICB8IE9rIChpbml0aWFsLCBwaXBlKSAtPiBPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgKE9rIGluaXRpYWwpLCBwaXBlKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiB0ID9vbl9leGNlcHRpb24gKFBpcGUgZilcbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSB3cml0ZXIgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3cml0ZXIgd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4gRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpXG4gICAgICB8IE9rIF8gYXMgeCAtPiBPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgeClcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gP29uX2V4Y2VwdGlvbiB0IChEaXJlY3QgZilcbiAgOztcblxuICBsZXQgYWJvcnQgdCBjb25uIGlkID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnID0gdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb247IGlkOyBkYXRhID0gYEFib3J0IH0gaW5cbiAgICBpZ25vcmVcbiAgICAgIChDb25uZWN0aW9uLmRpc3BhdGNoXG4gICAgICAgICBjb25uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeTpQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICAgOiAodW5pdCwgWyBgQ2xvc2VkIF0pIFJlc3VsdC50KVxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBVcGRhdGUgb2YgJ2FcbiAgICAgIHwgQ2xvc2VkIG9mIFsgYEJ5X3JlbW90ZV9zaWRlIHwgYEVycm9yIG9mIEVycm9yLnQgXVxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IENvbnRpbnVlXG4gICAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX21ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBEZWZlcnJlZC50XG4gICAgICB9XG5cbiAgICBsZXQgaWQgdCA9IHQucXVlcnlfaWRcbiAgICBsZXQgY2xvc2VfcmVhc29uIHQgPSB0LmNsb3NlX3JlYXNvblxuICBlbmRcblxuICBtb2R1bGUgUmVzcG9uc2Vfc3RhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVXBkYXRlX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcmVzcG9uc2UudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEluaXRpYWwgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSB0ID1cbiAgICAgICAgeyBycGMgOiAoJ3EsICdpLCAndSwgJ2UpIHRcbiAgICAgICAgOyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgICA7IG1ha2VfdXBkYXRlX2hhbmRsZXIgOiB1bml0IC0+ICdleHRyYSAqICd1IFVwZGF0ZV9oYW5kbGVyLnRcbiAgICAgICAgOyBpdmFyIDogKFAuUXVlcnlfaWQudCAqICdpICogJ2V4dHJhLCAnZSkgUmVzdWx0LnQgUnBjX3Jlc3VsdC50IEl2YXIudFxuICAgICAgICA7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgOiAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgSW5pdGlhbC50IC0+ICd1IHRcbiAgICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgb2YgJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAnYSBVcGRhdGVfaGFuZGxlci50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSB7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50IH1cbiAgZW5kXG5cbiAgbGV0IHJlYWRfZXJyb3JcbiAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvblxuICAgICAgICAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudClcbiAgICAgICAgZXJyXG4gICAgPVxuICAgIGxldCBjb3JlX2VyciA9XG4gICAgICBFcnJvci50X29mX3NleHAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBlcnIpXG4gICAgaW5cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCAoYEVycm9yIGNvcmVfZXJyKSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKEVycm9yIGVycilcbiAgOztcblxuICBsZXQgZW9mIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KSA9XG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgYEJ5X3JlbW90ZV9zaWRlKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBpbml0aWFsX3N0YXRlXG4gICAgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IG9wZW4gUmVzcG9uc2Vfc3RhdGUgaW5cbiAgICBsZXQgc3RhdGUgPSB7IHN0YXRlID0gV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX3N0YXRlIH0gaW5cbiAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICBtYXRjaCBzdGF0ZS5zdGF0ZSB3aXRoXG4gICAgICB8IFdyaXRpbmdfdXBkYXRlcyAoYmluX3JlYWRlcl91cGRhdGUsIGhhbmRsZXIpIC0+XG4gICAgICAgIChtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBFb2YgLT4gMFxuICAgICAgICAgICAgICAgICB8IGBPayAobGVuIDogTmF0MC50KSAtPiAobGVuIDo+IGludCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgfCBPayBgRW9mIC0+IGVvZiBoYW5kbGVyXG4gICAgICAgICAgICB8IE9rIChgT2sgbGVuKSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgICAgIGJpbl9yZWFkZXJfdXBkYXRlXG4gICAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICAgICB8IE9rIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIGhhbmRsZXIgKFVwZGF0ZSBkYXRhKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IGBrZWVwXG4gICAgICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBgd2FpdCBkKSkpKVxuICAgICAgfCBTdGF0ZS5XYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfaGFuZGxlciAtPlxuICAgICAgICAoKiBXZSBuZXZlciB1c2UgW2ByZW1vdmUgKEVycm9yIF8pXSBoZXJlLCBzaW5jZSB0aGF0IGluZGljYXRlcyB0aGF0IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIHNob3VsZCBiZSBjbG9zZWQsIGFuZCB0aGVzZSBhcmUgXCJub3JtYWxcIiBlcnJvcnMuIChJbiBjb250cmFzdCwgdGhlXG4gICAgICAgICAgIGVycm9ycyB3ZSBnZXQgaW4gdGhlIFtXcml0aW5nX3VwZGF0ZXNfdG9fcGlwZV0gY2FzZSBpbmRpY2F0ZSBtb3JlIHNlcmlvdXNcbiAgICAgICAgICAgcHJvYmxlbXMuKSBJbnN0ZWFkLCB3ZSBqdXN0IHB1dCBlcnJvcnMgaW4gW2l2YXJdLiAqKVxuICAgICAgICBsZXQgZXJyb3IgZXJyID1cbiAgICAgICAgICBJdmFyLmZpbGwgaW5pdGlhbF9oYW5kbGVyLml2YXIgKEVycm9yIGVycik7XG4gICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycm9yIGVyclxuICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgbGV0IGluaXRpYWwgPVxuICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAoSW5pdGlhbF9tZXNzYWdlLmJpbl9yZWFkZXJfdFxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5faW5pdGlhbF9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2Vycm9yX3Jlc3BvbnNlLnJlYWRlcilcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIGluaXRpYWxfcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBpbml0aWFsIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycm9yIGVyclxuICAgICAgICAgICAgfCBPayBpbml0aWFsX21zZyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaW5pdGlhbF9tc2cuaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGwgaW5pdGlhbF9oYW5kbGVyLml2YXIgKE9rIChFcnJvciBlcnIpKTtcbiAgICAgICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgICAgICB8IE9rIGluaXRpYWwgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGV4dHJhLCBoYW5kbGVyID0gaW5pdGlhbF9oYW5kbGVyLm1ha2VfdXBkYXRlX2hhbmRsZXIgKCkgaW5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLml2YXJcbiAgICAgICAgICAgICAgICAgICAoT2sgKE9rIChpbml0aWFsX2hhbmRsZXIucXVlcnlfaWQsIGluaXRpYWwsIGV4dHJhKSkpO1xuICAgICAgICAgICAgICAgICBzdGF0ZS5zdGF0ZVxuICAgICAgICAgICAgICAgICA8LSBXcml0aW5nX3VwZGF0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAoaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlLnJlYWRlciwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgIGBrZWVwKSkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgbWFrZV91cGRhdGVfaGFuZGxlciA9XG4gICAgbGV0IGJpbl93cml0ZXJfcXVlcnkgPVxuICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uZWVkc19sZW5ndGhcbiAgICAgICAgKFdyaXRlcl93aXRoX2xlbmd0aC5vZl90eXBlX2NsYXNzIHQuYmluX3F1ZXJ5KVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gYFF1ZXJ5IHF1ZXJ5IGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgY29ublxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICB+cXVlcnlcbiAgICAgIH5mOihmdW4gaXZhciAtPlxuICAgICAgICByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgKERlZmVycmVkLnBlZWsgKENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgeyBycGMgPSB0OyBxdWVyeV9pZDsgY29ubmVjdGlvbiA9IGNvbm47IGl2YXI7IG1ha2VfdXBkYXRlX2hhbmRsZXIgfSlcbiAgICA+PnwgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbiB9XG4gICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfaXRlciB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIG1hdGNoJW1hcCBkaXNwYXRjaF9nZW4gdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT4gKCksIGYpIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsICgpKSkgLT4gT2sgKE9rIChpZCwgaW5pdCkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBkaXNwYXRjaF9nZW4gdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT5cbiAgICAgICAgbGV0IHBpcGVfciwgcGlwZV93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgKCogU2V0IGEgc21hbGwgYnVmZmVyIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHB1c2hiYWNrIGV2ZW50cyAqKVxuICAgICAgICBQaXBlLnNldF9zaXplX2J1ZGdldCBwaXBlX3cgMTAwO1xuICAgICAgICBsZXQgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgZiA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBVcGRhdGUgZGF0YSAtPlxuICAgICAgICAgICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCBwaXBlX3cpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHBpcGVfdyBkYXRhO1xuICAgICAgICAgICAgICBpZiB0LmNsaWVudF9wdXNoZXNfYmFjayAmJiBQaXBlLmxlbmd0aCBwaXBlX3cgPj0gUGlwZS5zaXplX2J1ZGdldCBwaXBlX3dcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFdhaXRcbiAgICAgICAgICAgICAgICAgIChtYXRjaCVtYXAgUGlwZS5kb3duc3RyZWFtX2ZsdXNoZWQgcGlwZV93IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+ICgpKVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZVxuICAgICAgICAgIHwgQ2xvc2VkIHJlYXNvbiAtPlxuICAgICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5XG4gICAgICAgICAgICAgIGNsb3NlX3JlYXNvblxuICAgICAgICAgICAgICAobWF0Y2ggcmVhc29uIHdpdGhcbiAgICAgICAgICAgICAgIHwgYEJ5X3JlbW90ZV9zaWRlIC0+IENsb3NlZF9yZW1vdGVseVxuICAgICAgICAgICAgICAgfCBgRXJyb3IgZXJyIC0+IEVycm9yIGVycik7XG4gICAgICAgICAgICBQaXBlLmNsb3NlIHBpcGVfdztcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIChwaXBlX3IsIGNsb3NlX3JlYXNvbiksIGYpXG4gICAgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKHBpcGVfciwgY2xvc2VfcmVhc29uKSkpIC0+XG4gICAgICB1cG9uIChQaXBlLmNsb3NlZCBwaXBlX3IpIChmdW4gKCkgLT5cbiAgICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgY2xvc2VfcmVhc29uKVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhYm9ydCB0IGNvbm4gaWQ7XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNsb3NlX3JlYXNvbiBDbG9zZWRfbG9jYWxseSkpO1xuICAgICAgbGV0IHBpcGVfbWV0YWRhdGEgOiBQaXBlX21ldGFkYXRhLnQgPVxuICAgICAgICB7IHF1ZXJ5X2lkID0gaWQ7IGNsb3NlX3JlYXNvbiA9IEl2YXIucmVhZCBjbG9zZV9yZWFzb24gfVxuICAgICAgaW5cbiAgICAgIE9rIChPayAocGlwZV9tZXRhZGF0YSwgaW5pdCwgcGlwZV9yKSlcbiAgOztcbmVuZFxuXG4oKiBBIFBpcGVfcnBjIGlzIGxpa2UgYSBTdHJlYW1pbmdfcnBjLCBleGNlcHQgd2UgZG9uJ3QgY2FyZSBhYm91dCBpbml0aWFsIHN0YXRlIC0gdGh1c1xuICAgaXQgaXMgcmVzdHJpY3RlZCB0byB1bml0IGFuZCB1bHRpbWF0ZWx5IGlnbm9yZWQgKilcbm1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSwgJ2Vycm9yKSB0ID0gKCdxdWVyeSwgdW5pdCwgJ3Jlc3BvbnNlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZSA/Y2xpZW50X3B1c2hlc19iYWNrIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB+YmluX2Vycm9yICgpID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6VW5pdC5iaW5fdFxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3Jlc3BvbnNlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICAoKiBbaW5pdGlhbF9yZXNwb25zZV0gZG9lc24ndCBzaG93IHVwIGluIFtQaXBlX3JwY10ncyBzaWduYXR1cmUsXG4gICAgICAgICBzbyB0aGUgdHlwZS1pZCBjcmVhdGVkIHVzaW5nIFthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZV0gaXNcbiAgICAgICAgIHVucmVhY2hhYmxlLiAqKVxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwiXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwicmVzcG9uc2VcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCAoZnVuIGEgcXVlcnkgLT5cbiAgICAgIGxldCVtYXAgeCA9IGYgYSBxdWVyeSBpblxuICAgICAgeCA+Pnx+IGZ1biB4IC0+ICgpLCB4KVxuICA7O1xuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICBtb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgcmVmXG5cbiAgICAgICAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfc2l6ZSA9IDQwOTYpICgpID1cbiAgICAgICAgICBpZiBpbml0aWFsX3NpemUgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuQnVmZmVyLmNyZWF0ZSBnb3QgbmVnYXRpdmUgYnVmZmVyIFxcXG4gICAgICAgICAgICAgICBzaXplXCJcbiAgICAgICAgICAgICAgaW5pdGlhbF9zaXplXG4gICAgICAgICAgICAgIEludC5zZXhwX29mX3Q7XG4gICAgICAgICAgcmVmIChCaWdzdHJpbmcuY3JlYXRlIGluaXRpYWxfc2l6ZSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQuR3JvdXAudCA9XG4gICAgICAgIHsgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgICAgfVxuXG4gICAgICBhbmQgJ2EgY29tcG9uZW50ID0gJ2EgVC5Hcm91cC5jb21wb25lbnQgPVxuICAgICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBULmdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGUgP2J1ZmZlciAoKSA9XG4gICAgICAgIGxldCBidWZmZXIgPVxuICAgICAgICAgIG1hdGNoIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgKClcbiAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgIGluXG4gICAgICAgIHsgY29tcG9uZW50cyA9IEJhZy5jcmVhdGUgKCk7IGNvbXBvbmVudHNfYnlfaWQgPSBJZC5UYWJsZS5jcmVhdGUgKCk7IGJ1ZmZlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoIHQgPSBCYWcubGVuZ3RoIHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgYWRkX2V4biB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXJcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiBjYW5ub3QgYWRkIGEgY2xvc2VkIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXJcIjtcbiAgICAgICAgaWYgSGFzaHRibC5tZW0gdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IHRyeWluZyB0byBhZGQgYSBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBncm91cFwiO1xuICAgICAgICAobWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgKGJpbl93cml0ZXIgb25lKSAoYmluX3dyaXRlciB3cml0ZXIpKVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZDogY2Fubm90IGFkZCBhIGRpcmVjdCBzdHJlYW0gXFxcbiAgICAgICAgICAgICAgICB3cml0ZXIgd2l0aCBhIGRpZmZlcmVudCBiaW5fd3JpdGVyXCIpO1xuICAgICAgICBsZXQgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgPSBCYWcuYWRkIHQuY29tcG9uZW50cyB3cml0ZXIgaW5cbiAgICAgICAgbGV0IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyID1cbiAgICAgICAgICBCYWcuYWRkIHdyaXRlci5ncm91cHMgeyBncm91cCA9IHQ7IGVsZW1lbnRfaW5fZ3JvdXAgPSB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuYWRkX2V4blxuICAgICAgICAgIHQuY29tcG9uZW50c19ieV9pZFxuICAgICAgICAgIH5rZXk6d3JpdGVyLmlkXG4gICAgICAgICAgfmRhdGE6eyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlbW92ZSB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH0gLT5cbiAgICAgICAgICBCYWcucmVtb3ZlIHQuY29tcG9uZW50cyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICBCYWcucmVtb3ZlIHdyaXRlci5ncm91cHMgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19saXN0IHQgPSBCYWcudG9fbGlzdCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGZsdXNoZWRfb3JfY2xvc2VkIHQgPVxuICAgICAgICB0b19saXN0IHRcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB0IC0+IERlZmVycmVkLmFueV91bml0IFsgZmx1c2hlZCB0OyBjbG9zZWQgdCBdKVxuICAgICAgICB8PiBEZWZlcnJlZC5hbGxfdW5pdFxuICAgICAgOztcblxuICAgICAgbGV0IGZsdXNoZWQgdCA9IGZsdXNoZWRfb3JfY2xvc2VkIHRcblxuICAgICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICBCYWcuaXRlciB0LmNvbXBvbmVudHMgfmY6KGZ1biBkaXJlY3Rfc3RyZWFtX3dyaXRlciAtPlxuICAgICAgICAgICAgKCogV3JpdGVycyBhcmUgYXV0b21hdGljYWxseSBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZWlyIGdyb3VwcyB3aGVuXG4gICAgICAgICAgICAgICBjbG9zZWQsIHNvIFtgQ2xvc2VkXSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB0aGUgcmVtb3ZhbCBkaWRuJ3QgaGFwcGVuIHlldC4gKilcbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgZGlyZWN0X3N0cmVhbV93cml0ZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgICAgICAgICAgIDogWyBgT2sgfCBgQ2xvc2VkIF0pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cml0ZSB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW47XG4gICAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICAgIG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICBsZXQgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPSBiaW5fd3JpdGVyIG9uZSBpblxuICAgICAgICAgIGxldCBidWZmZXIgPSAhKHQuYnVmZmVyKSBpblxuICAgICAgICAgICgqIE9wdGltaXN0aWMgZmlyc3QgdHJ5ICopXG4gICAgICAgICAgKG1hdGNoIHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCB3aXRoXG4gICAgICAgICAgIHwgbGVuIC0+IEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW5cbiAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICgqIEl0J3MgbGlrZWx5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0XG4gICAgICAgICAgICAgICAgY3VzdG9tIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgICAgICAgIGxldCBsZW4gPSBzaXplIHggaW5cbiAgICAgICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIChJbnQuY2VpbF9wb3cyIGxlbikgaW5cbiAgICAgICAgICAgICB0LmJ1ZmZlciA6PSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGxlbiA9IHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgICAgICAgIEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgdCB4ID1cbiAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHg7XG4gICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0IHQgZiA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdCB0IGZcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZSA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCAoKSwgcGlwZV9yKSAtPiBwaXBlX3IsIG1ldGFkYXRhXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFBpcGVfcnBjX2ZhaWxlZFxuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBycGNfZXJyb3IgLT4gcmFpc2UgKEVycm9yLnRvX2V4biBycGNfZXJyb3IpXG4gICAgfCBPayAoRXJyb3IgXykgLT4gcmFpc2UgUGlwZV9ycGNfZmFpbGVkXG4gICAgfCBPayAoT2sgcGlwZV9hbmRfaWQpIC0+IHBpcGVfYW5kX2lkXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXNzYWdlXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5QaXBlX3Jlc3BvbnNlXG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgdCBjb25uIHF1ZXJ5IH5mID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaF9pdGVyIHQgY29ubiBxdWVyeSB+ZiBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAoaWQsICgpKSAtPiBpZFxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIHQgPVxuICAgICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAoKVxuICAgID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6YmluX3N0YXRlXG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fdXBkYXRlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJzdGF0ZVwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInVwZGF0ZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9zdGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gIGxldCBiaW5fdXBkYXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBpbXBsZW1lbnQgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudFxuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlXG4gICAgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgc3RhdGUsIHVwZGF0ZV9yKSAtPiBzdGF0ZSwgdXBkYXRlX3IsIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQuU3RyZWFtaW5nX3JwYy50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQuU3RyZWFtaW5nX3JwYy52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5xdWVyeV90eXBlX2lkXG4gIGxldCBzdGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gIGxldCB1cGRhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gIGxldCBlcnJvcl90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBBbnkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFJwYyA6ICgncSwgJ3IpIFJwYy50IC0+IHRcbiAgICB8IFBpcGUgOiAoJ3EsICdyLCAnZSkgUGlwZV9ycGMudCAtPiB0XG4gICAgfCBTdGF0ZSA6ICgncSwgJ3MsICd1LCAnZSkgU3RhdGVfcnBjLnQgLT4gdFxuICAgIHwgT25lX3dheSA6ICdtIE9uZV93YXkudCAtPiB0XG5cbiAgbGV0IGRlc2NyaXB0aW9uID0gZnVuY3Rpb25cbiAgICB8IFJwYyBycGMgLT4gUnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgUGlwZSBycGMgLT4gUGlwZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBTdGF0ZSBycGMgLT4gU3RhdGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgT25lX3dheSBycGMgLT4gT25lX3dheS5kZXNjcmlwdGlvbiBycGNcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uLlN0YWJsZVxuICBtb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBQaXBlX2Nsb3NlX3JlYXNvbi5TdGFibGVcbiAgbW9kdWxlIFJwYyA9IFJwY1xuICBtb2R1bGUgUGlwZV9ycGMgPSBQaXBlX3JwY1xuICBtb2R1bGUgU3RhdGVfcnBjID0gU3RhdGVfcnBjXG4gIG1vZHVsZSBPbmVfd2F5ID0gT25lX3dheVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFJwY1xuXG5tb2R1bGUgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IFBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgdHlwZSAnaW5wdXQgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyBjb252ZXJ0IDogJ2lucHV0IC0+ICdvdXRwdXRcbiAgICAgICAgOyB3cml0ZXIgOiAnb3V0cHV0IERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgfVxuICAgICAgICAtPiAnaW5wdXQgdFxuXG4gIGxldCBjcmVhdGUgfmNvbnZlcnQgfndyaXRlciA9IFQgeyBjb252ZXJ0OyB3cml0ZXIgfVxuXG4gIGxldCB3cml0ZSAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGUgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgY2xvc2UgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Ugd3JpdGVyXG4gIGxldCBpc19jbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuaXNfY2xvc2VkIHdyaXRlclxuICBsZXQgY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlZCB3cml0ZXJcbmVuZFxuXG5sZXQgZmFpbGVkX2NvbnZlcnNpb24geCA9XG4gIEVycm9yLmNyZWF0ZVxuICAgIFwidHlwZSBjb252ZXJzaW9uIGZhaWx1cmVcIlxuICAgIHhcbiAgICBbJXNleHBfb2Y6XG4gICAgICBbIGBNc2cgfCBgUXVlcnkgfCBgUmVzcG9uc2UgfCBgRXJyb3IgfCBgU3RhdGUgfCBgVXBkYXRlIF1cbiAgICAgICogWyBgUnBjIG9mIHN0cmluZyBdXG4gICAgICAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICAgICogZXhuXVxuOztcblxubGV0IG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgeCA9XG4gIEVycm9yLmNyZWF0ZVxuICAgIFwibXVsdGlwbGUgcnBjIHJlZ2lzdHJhdGlvbnNcIlxuICAgIHhcbiAgICBbJXNleHBfb2Y6IFsgYFJwYyBvZiBzdHJpbmcgXSAqIFsgYFZlcnNpb24gb2YgaW50IF1dXG47O1xuXG5sZXQgdW5rbm93bl92ZXJzaW9uIHggPSBFcnJvci5jcmVhdGUgXCJ1bmtub3duIHJwYyB2ZXJzaW9uXCIgeCBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cblxubW9kdWxlIENhbGxlZV9jb252ZXJ0cyA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIFNpbXBsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgPVxuICAgICAgICB7IGFkYXB0IDpcbiAgICAgICAgICAgICdzdGF0ZS4gKCdzdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3BvbnNlIERlZmVycmVkLnQpIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50XG4gICAgICAgIH1cblxuICAgICAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBhZGFwdGVycyA6ICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciBJbnQuTWFwLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5uYW1lID0geyBuYW1lOyBhZGFwdGVycyA9IEludC5NYXAuZW1wdHkgfVxuXG4gICAgICBsZXQgd3JhcF9lcnJvciBmbiBzdGF0ZSBxdWVyeSA9XG4gICAgICAgIG1hdGNoJW1hcCBmbiBzdGF0ZSBxdWVyeSB3aXRoXG4gICAgICAgIHwgT2sgdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGQgeyBuYW1lOyBhZGFwdGVycyB9IHJwYyBhZGFwdGVyID1cbiAgICAgICAgaWYgU3RyaW5nLiggPD4gKSBuYW1lIChScGMubmFtZSBycGMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgXCJScGMgbmFtZXMgZG9uJ3QgYWdyZWVcIlxuICAgICAgICAgICAgKG5hbWUsIFJwYy5uYW1lIHJwYylcbiAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9IFJwYy52ZXJzaW9uIHJwYyBpblxuICAgICAgICAgIG1hdGNoIE1hcC5maW5kIGFkYXB0ZXJzIHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICBcIlZlcnNpb24gYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAobmFtZSwgdmVyc2lvbilcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgYWRhcHRlcnMgPSBNYXAuc2V0IGFkYXB0ZXJzIH5rZXk6dmVyc2lvbiB+ZGF0YTphZGFwdGVyIGluXG4gICAgICAgICAgICBPayB7IG5hbWU7IGFkYXB0ZXJzIH0pXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uIHQgb2xkX3JwYyB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBhZGFwdCBmbiA9XG4gICAgICAgICAgbGV0IGFkYXB0ZWQgc3RhdGUgb2xkX3F1ZXJ5ID1cbiAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gZm4gc3RhdGUgKHVwZ3JhZGUgb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgZG93bmdyYWRlIHJlc3VsdFxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjIGFkYXB0ZWRcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgb2xkX3JwYyB1cGdyYWRlX29yX2Vycm9yIGRvd25ncmFkZV9vcl9lcnJvciA9XG4gICAgICAgIGxldCBhZGFwdCBmbiA9XG4gICAgICAgICAgbGV0IGFkYXB0ZWQgc3RhdGUgb2xkX3F1ZXJ5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIERlZmVycmVkLlJlc3VsdC5MZXRfc3ludGF4IGluXG4gICAgICAgICAgICBsZXQlYmluZCBxdWVyeSA9IERlZmVycmVkLnJldHVybiAodXBncmFkZV9vcl9lcnJvciBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBsZXQlYmluZCByZXNwb25zZSA9IGZuIHN0YXRlIHF1ZXJ5IGluXG4gICAgICAgICAgICBEZWZlcnJlZC5yZXR1cm4gKGRvd25ncmFkZV9vcl9lcnJvciByZXNwb25zZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyAod3JhcF9lcnJvciBhZGFwdGVkKVxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb24gdCBycGMgdXBncmFkZSBkb3duZ3JhZGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBycGMgdXBncmFkZSBkb3duZ3JhZGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnQgdCBmbiA9IE1hcC5kYXRhIHQuYWRhcHRlcnMgfD4gTGlzdC5tYXAgfmY6KGZ1biB7IGFkYXB0IH0gLT4gYWRhcHQgZm4pXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IHF1ZXJ5IC0+IHJlc3BvbnNlIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPSAncyAtPiB2ZXJzaW9uOmludCAtPiBNb2RlbC5xdWVyeSAtPiBNb2RlbC5yZXNwb25zZSBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBScGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIHIgPSBmIHMgfnZlcnNpb24gcSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWwgcikgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIHIgLT4gclxuICAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAocmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IChNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgIC0+ICh1bml0LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGltcGwgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKFBpcGUgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChEaXJlY3QgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKE1vZGVsLnJlc3BvbnNlIC0+IFZlcnNpb25faS5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgIHwgcSAtPiBxXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsID1cbiAgICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgICB8IFBpcGUgZiAtPlxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgT2sgcGlwZSAtPlxuICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiByZXR1cm4gKE9rIChjb252ZXJ0X3BpcGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHJldHVybiAod3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcikpXG4gICAgICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnRfZGlyZWN0IHJwYyAoZnVuIHMgcSBkc3cgLT5cbiAgICAgICAgICAgICAgbGV0IHdyaXRlciA9XG4gICAgICAgICAgICAgICAgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLmNyZWF0ZSB+Y29udmVydDpjb252ZXJ0X2VsdCB+d3JpdGVyOmRzd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCVtYXAgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdyaXRlciB3aXRoXG4gICAgICAgICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50IC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPVxuICAgICAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJjYW5ub3QgdXNlIGRpcmVjdCBpbnRlcmZhY2Ugd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBwaXBlID0gUGlwZS5tYXAgcGlwZSB+ZjpWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChzdGF0ZSAqIHVwZGF0ZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICAnc1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAtPiAoTW9kZWwuc3RhdGUgKiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgc3RhdGVfb2ZfbW9kZWwgOiBNb2RlbC5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBTdGF0ZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2glYmluZCBmIHMgfnZlcnNpb24gcSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgKG1vZGVsX3N0YXRlLCBwaXBlKSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuc3RhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChPayAoc3RhdGUsIFZlcnNpb25faS51cGRhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCBfc3RhdGUgcGlwZSA9IFBpcGUubWFwIH5mOnVwZGF0ZV9vZl9tb2RlbCBwaXBlXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLm1zZyAtPiB1bml0XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9tc2cgOiBtc2cgLT4gTW9kZWwubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIE9uZV93YXkuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfbXNnIHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+IGYgcyB+dmVyc2lvbiBxKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1lbnUgPSBzdHJ1Y3RcbiAgKCoqKioqKioqKioqKioqKioqIHNvbWUgcHJvaGliaXRpb25zIGZvciB0aGlzIG1vZHVsZSAqKioqKioqKioqKioqKioqKipcblxuICAgICAgICAgICAgICAgICAgICAgKDEpICEhISBuZXZlciBwcnVuZSBvbGQgdmVyc2lvbnMgb2YgdGhpcyBycGMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHRvbyBmdW5kYW1lbnRhbCB0byB0aGUgd29ya2luZ3Mgb2YgdmFyaW91cyB2ZXJzaW9uaW5nXG4gICAgICAgICAgICAgICAgICAgICBzY2hlbWVzIGFuZCBpdCBwcm9iYWJseSB3b24ndCBjaGFuZ2UgdmVyeSBtdWNoIGFueXdheS5cblxuICAgICAgICAgICAgICAgICAgICAgKDIpICEhISBvbmx5IGV2ZXIgc2F5IFwid2l0aCBiaW5faW9cIiBvbiBidWlsdC1pbiBvY2FtbCB0eXBlcyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gdHlwZXMgYXJlIGludCwgbGlzdCwgc3RyaW5nLCBldGMuXG5cbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgYWdhaW5zdCBjaGFuZ2VzIHRvIENvcmUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUuXG5cbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICBsZXQgbmFtZSA9IFwiX19WZXJzaW9uZWRfcnBjLk1lbnVcIlxuXG4gICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICB0eXBlIHJlc3BvbnNlID0gRGVzY3JpcHRpb24udCBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICBsZXQgcnBjX25hbWUgPSBNb2RlbC5uYW1lXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGxldCB2ZXJzaW9uID0gMVxuXG4gICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICB0eXBlIHJlc3BvbnNlID0gKHN0cmluZyAqIGludCkgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSBxID0gcVxuXG4gICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPVxuICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgbGV0IGFkZCBpbXBscyA9XG4gICAgbGV0IG1lbnUgPSBMaXN0Lm1hcCBpbXBscyB+ZjpJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpblxuICAgIGxldCBtZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBtZW51KSBpblxuICAgIGltcGxzIEAgbWVudV9pbXBsc1xuICA7O1xuXG4gIHR5cGUgdCA9IEludC5TZXQudCBTdHJpbmcuVGFibGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzdXBwb3J0ZWRfcnBjcyB0ID1cbiAgICBsZXQgb3BlbiBMaXN0LkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBuYW1lLCB2ZXJzaW9ucyA9IFN0cmluZy5UYWJsZS50b19hbGlzdCB0IGluXG4gICAgbGV0JW1hcCB2ZXJzaW9uID0gSW50LlNldC50b19saXN0IHZlcnNpb25zIGluXG4gICAgeyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH1cbiAgOztcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zIHQgfnJwY19uYW1lID1cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW50LlNldC5lbXB0eSAoSGFzaHRibC5maW5kIHQgcnBjX25hbWUpXG4gIDs7XG5cbiAgbGV0IG9mX2VudHJpZXMgZW50cmllcyA9XG4gICAgSGFzaHRibC5tYXAgfmY6SW50LlNldC5vZl9saXN0IChTdHJpbmcuVGFibGUub2ZfYWxpc3RfbXVsdGkgZW50cmllcylcbiAgOztcblxuICBsZXQgcmVxdWVzdCBjb25uID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKCkgaW5cbiAgICBSZXN1bHQubWFwIHJlc3VsdCB+ZjpvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBkZXNjcmlwdGlvbnMgPVxuICAgIExpc3QubWFwIGRlc2NyaXB0aW9ucyB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgfD4gb2ZfZW50cmllc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBDb25uZWN0aW9uX3dpdGhfbWVudSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgIDsgbWVudSA6IE1lbnUudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBjcmVhdGUgY29ubmVjdGlvbiA9XG4gICAgbGV0IG9wZW4gRGVmZXJyZWQuT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICAgIGxldCVtYXAgbWVudSA9IE1lbnUucmVxdWVzdCBjb25uZWN0aW9uIGluXG4gICAgeyBjb25uZWN0aW9uOyBtZW51IH1cbiAgOztcblxuICBsZXQgY3JlYXRlX2RpcmVjdGx5IGNvbm5lY3Rpb24gbWVudSA9IHsgY29ubmVjdGlvbjsgbWVudSB9XG5lbmRcblxubW9kdWxlIENhbGxlcl9jb252ZXJ0cyA9IHN0cnVjdFxuICBsZXQgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24gfnJwY19uYW1lIH5jYWxsZXJfdmVyc2lvbnMgfmNhbGxlZV92ZXJzaW9ucyB+Y2FsbGVlX21lbnUgPVxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgY2FsbGVlX3ZlcnNpb25zIGNhbGxlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiXG4gICAgICAgICAgICAocnBjX25hbWUgOiBzdHJpbmcpXG4gICAgICAgICAgICAoY2FsbGVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfbWVudSA6IE1lbnUudCldXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiaGlnaGVzdCB2ZXJzaW9uIG51bWJlciBpcyB0YWtlbiBpbiBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblwiID1cbiAgICBsZXQgcnBjX25hbWUgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBtZW51ID0gTWVudS5vZl9lbnRyaWVzIFsgcnBjX25hbWUsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lXG4gICAgICAgIH5jYWxsZXJfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDE7IDI7IDMgXSlcbiAgICAgICAgfmNhbGxlZV92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMiBdKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3Qge3wgKE9rIDIpIHx9XVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImVycm9yIGZyb20gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24gbG9va3MgcmVhc29uYWJsZVwiID1cbiAgICBsZXQgdGhlX3JwYyA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG5vdF90aGVfcnBjID0gXCJvdGhlci1ycGNcIiBpblxuICAgIGxldCBtZW51ID0gTWVudS5vZl9lbnRyaWVzIFsgbm90X3RoZV9ycGMsIDE7IG5vdF90aGVfcnBjLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZTp0aGVfcnBjXG4gICAgICAgIH5jYWxsZXJfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDE7IDI7IDMgXSlcbiAgICAgICAgfmNhbGxlZV92ZXJzaW9uczooTWVudS5zdXBwb3J0ZWRfdmVyc2lvbnMgbWVudSB+cnBjX25hbWU6dGhlX3JwYylcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgKEVycm9yXG4gICAgICAgKFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIiAocnBjX25hbWUgdGhlLXJwYylcbiAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyAoMSAyIDMpKSAoY2FsbGVlX3ZlcnNpb25zICgpKVxuICAgICAgICAoY2FsbGVlX21lbnUgKChvdGhlci1ycGMgKDEgMikpKSkpKXx9XVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwYXRjaCA9IHN0cnVjdFxuICAgIG1vZHVsZSBNYWtlIChNIDogTW9uYWQpID0gc3RydWN0XG4gICAgICBvcGVuIE1cblxuICAgICAgbGV0IHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfmRpc3BhdGNoZXIgfnJlZ2lzdHJ5ID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChFcnJvciAodW5rbm93bl92ZXJzaW9uIChuYW1lLCB2ZXJzaW9uKSkpXG4gICAgICAgIHwgU29tZSAoZGlzcGF0Y2gsIF9ycGMpIC0+IGRpc3BhdGNoZXIgZGlzcGF0Y2ggY29ubmVjdGlvbiBxdWVyeVxuICAgICAgOztcblxuICAgICAgbGV0IHdpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgICB7IENvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb247IG1lbnUgfVxuICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgICAgfmRpc3BhdGNoZXJcbiAgICAgICAgPVxuICAgICAgICBsZXQgY2FsbGVlX3ZlcnNpb25zID0gTWVudS5zdXBwb3J0ZWRfdmVyc2lvbnMgbWVudSB+cnBjX25hbWU6bmFtZSBpblxuICAgICAgICBsZXQgY2FsbGVyX3ZlcnNpb25zID0gdmVyc2lvbnMgKCkgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICAgICAgfnJwY19uYW1lOm5hbWVcbiAgICAgICAgICAgIH5jYWxsZXJfdmVyc2lvbnNcbiAgICAgICAgICAgIH5jYWxsZWVfdmVyc2lvbnNcbiAgICAgICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayB2ZXJzaW9uIC0+XG4gICAgICAgICAgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+cmVnaXN0cnkgfmRpc3BhdGNoZXJcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgQXN5bmMgPSBNYWtlIChEZWZlcnJlZClcbiAgICBtb2R1bGUgRGlyZWN0ID0gTWFrZSAoTW9uYWQuSWRlbnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IHJlc3BvbnNlIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXInIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiBNb2RlbC5xdWVyeSAtPiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gbXEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIG1xKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBScGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICBSZXN1bHQuYmluZCByZXN1bHQgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIG1xIHIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IE9rIHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgUmVnaXN0ZXInIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlIF8gciA9IG1vZGVsX29mX3Jlc3BvbnNlIHJcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IChyZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50LCBlcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IGY6KHJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaXNwYXRjaGVyID1cbiAgICAgICAgeyBhYm9ydCA6IENvbm5lY3Rpb24udCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXRcbiAgICAgICAgOyBkaXNwYXRjaCA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiAoIE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgICAgICwgTW9kZWwuZXJyb3IgKVxuICAgICAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnRcbiAgICAgICAgOyBkaXNwYXRjaF9pdGVyIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+IGY6KE1vZGVsLnJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoZGlzcGF0Y2hlciAqIEFueS50KSBJbnQuVGFibGUudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5IH5mID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2hfaXRlcjsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2hfaXRlciBjb25uIHF1ZXJ5IH5mKVxuICAgICAgOztcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2g7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoIGNvbm4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgY29ubl93aXRoX21lbnUgaWQgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIGlkXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgYWJvcnQ7IF8gfSBjb25uIGlkIC0+XG4gICAgICAgICAgICBhYm9ydCBjb25uIGlkO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKFZlcnNpb25faS5yZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIHJldHVybiAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBxIC0+IHJldHVybiAoT2sgcSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rID1cbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPiBPayAoT2sgKGNvbnZlcnRfb2sgb2spKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFBpcGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6KGZ1biAocGlwZSwgaWQpIC0+IGNvbnZlcnRfcGlwZSBwaXBlLCBpZClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2hfaXRlciBjb25uIHEgfmYgPVxuICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQgY29udmVydF9tZXNzYWdlIChtIDogXyBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCkgPVxuICAgICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICAgICB8IENsb3NlZCBfIGFzIGNsb3NlZCAtPiBjbG9zZWRcbiAgICAgICAgICAgIHwgVXBkYXRlIHUgLT4gVXBkYXRlIChjb252ZXJ0X2VsdCB1KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPVxuICAgICAgICAgICAgUGlwZV9ycGMuZGlzcGF0Y2hfaXRlciBycGMgY29ubiBxIH5mOihmdW4gbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBmIChjb252ZXJ0X21lc3NhZ2UgbWVzc2FnZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6Rm4uaWRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYWJvcnQgY29ubiBpZCA9IFBpcGVfcnBjLmFib3J0IHJwYyBjb25uIGlkXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldFxuICAgICAgICAgICAgICByZWdpc3RyeVxuICAgICAgICAgICAgICB+a2V5OnZlcnNpb25cbiAgICAgICAgICAgICAgfmRhdGE6KHsgYWJvcnQ7IGRpc3BhdGNoOyBkaXNwYXRjaF9pdGVyIH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIkNhbm5vdCB1c2UgRGlyZWN0IHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gVmVyc2lvbl9pLnZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAoIHN0YXRlICogdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuc3RhdGVcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICA6ICB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBTdGF0ZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIGV4blxuICAgICAgICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgfCBPayAoT2sgKHN0YXRlLCBwaXBlLCBpZCkpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2Zfc3RhdGUgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFN0YXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IE9rIChPayAoc3RhdGUsIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgcGlwZSwgaWQpKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IG1zZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgbXNnXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IG1zZyA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgbXNnXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtc2dfb2ZfbW9kZWwgOiBNb2RlbC5tc2cgLT4gbXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tc2dfb2ZfbW9kZWwgcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICB8IE9rIHEgLT4gT25lX3dheS5kaXNwYXRjaCBycGMgY29ubiBxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQm90aF9jb252ZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBQbGFpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9xdWVyeSAtPiBjYWxsZWVfcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gQ2FsbGVlLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IENhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBDYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGY6KGNhbGxlcl9yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBjYWxsZXJfZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3Jlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IGNhbGxlZV9yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgPSBDYWxsZXIuYWJvcnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlcl91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9zdGF0ZSAqIGNhbGxlcl91cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfc3RhdGUgKiBjYWxsZWVfdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuQ2FsbGVyLnN0YXRlXG4gICAgICAgIHZhbCBzdGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVlLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLkNhbGxlci51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfbXNnXG4gICAgICB0eXBlIGNhbGxlZV9tc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBjYWxsZXJfbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgbXNnX29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5tc2cgLT4gbXNnXG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9tc2cgOiBtc2cgLT4gQ2FsbGVlLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX21zZyA9IGNhbGxlZV9tb2RlbF9vZl9tc2dcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtc2dfb2ZfbW9kZWwgPSBtc2dfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuICBtb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBIYW5kbGVyX3Jlc3VsdFxuICBtb2R1bGUgU2VuZF9yZXN1bHQgPSBTZW5kX3Jlc3VsdFxuICBtb2R1bGUgUmVhZGVyID0gUmVhZGVyXG4gIG1vZHVsZSBXcml0ZXIgPSBXcml0ZXJcbmVuZFxuXG5sZXQgcmVjIHBpcGVfcmVhZCB0IGYgPVxuICBtYXRjaCViaW5kIFBpcGUudmFsdWVzX2F2YWlsYWJsZSB0IHdpdGhcbiAgfCBgRW9mIC0+IGYgYEVvZlxuICB8IGBPayAtPlxuICAgIChtYXRjaCBQaXBlLnJlYWRfbm93JyB0IHdpdGhcbiAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gcGlwZV9yZWFkIHQgZlxuICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHJlcyAtPiBmIHJlcylcbjs7XG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBhZGRfdG9fYmlnYnVmZmVyIDogQmlnYnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19iaWdzdHJpbmcgOiB0IC0+IEJpZ3N0cmluZy50XG4gIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX2J1ZmZlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuUmVhZGVyLnRcbiAgICA7IGJ1ZmZlciA6IEJpZ2J1ZmZlci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgYnVmZmVyID0gQmlnYnVmZmVyLmNyZWF0ZSBIZWFkZXIubGVuZ3RoIH1cbmVuZFxuXG5tb2R1bGUgUGlwZV9yZWFkZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfYnVmZmVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZV9yZWFkIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG5cbiAgbGV0IHJlYWRfZm9yZXZlciAodCA6IHQpIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2ggOiAoXywgXykgRGVmZXJyZWQuUmVzdWx0LnQgPVxuICAgIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICAgICgqIERlcXVldWUgdW50aWwgZW5vdWdoIGRhdGEgKFtuZWVkXSkgaXMgYXZhaWxhYmxlIGFuZCB0cnkgcmVhZCBtZXNzYWdlcyAqKVxuICAgIGxldCByZWMgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSA9XG4gICAgICBtYXRjaCBRdWV1ZS5kZXF1ZXVlIHF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBRdWV1ZSBpcyBlbXB0eSAtIHdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBkYXRhICopXG4gICAgICAgIHJldHVybiAoU2Vjb25kIG5lZWQpXG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICBsZXQgYnVmZl9sZW4gPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICBsZXQgZGF0YV9sZW4gPSBEYXRhLmxlbmd0aCBkYXRhIGluXG4gICAgICAgIGlmIGJ1ZmZfbGVuID0gMCAmJiBkYXRhX2xlbiA+PSBuZWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBoYXZlIGVub3VnaCBkYXRhIGFuZCBidWZmZXIgaXMgZW1wdHkuXG4gICAgICAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgZXZlcnkgYmluX3Byb3QgbWVzc2FnZSBpcyBzZW50IGluIGl0cyBvd25cbiAgICAgICAgICAgICB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhOihEYXRhLnRvX2JpZ3N0cmluZyBkYXRhKSB+bGVuZ3RoOmRhdGFfbGVuIHF1ZXVlXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIFNsb3cgcGF0aC4gV2UgaGF2ZSB0byBhY2N1bXVsYXRlIFtCaWdzdHJpbmcudF1zICopXG4gICAgICAgICAgRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhO1xuICAgICAgICAgIGlmIEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyID49IG5lZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoZXJlIGlzIGVub3VnaCBkYXRhIGluIHRoZSBidWZmZXIgKilcbiAgICAgICAgICAgIGxldCBkYXRhID0gQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlciBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhIH5sZW5ndGggcXVldWUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCogV2UgbmVlZCBtb3JlIGRhdGEgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlKVxuICAgICgqIFJlYWQgYXMgbWFueSBtZXNzYWdlcyBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjdXJyZW50IGRhdGEgKilcbiAgICBhbmQgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZSA9XG4gICAgICBpZiBsZW5ndGggPj0gSGVhZGVyLmxlbmd0aFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBwYXlsb2FkX2xlbiA9IEhlYWRlci51bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvcyBpblxuICAgICAgICBsZXQgdG90YWxfbGVuID0gSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfbGVuIGluXG4gICAgICAgIGlmIGxlbmd0aCA+PSB0b3RhbF9sZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggb25fbWVzc2FnZSBkYXRhIH5wb3M6KHBvcyArIEhlYWRlci5sZW5ndGgpIH5sZW46cGF5bG9hZF9sZW4gd2l0aFxuICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCB4IC0+XG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICAoKiBNYWtlIHN1cmUgdGhhdCBhbGwgZGF0YSB3ZSd2ZSByZWFkIChhbmQgbm90IFwiY29uc3VtZWRcIikgZnJvbSB0aGUgcGlwZVxuICAgICAgICAgICAgICAgaXMga2VwdCBpbiB0aGUgYnVmZmVyLlxuICAgICAgICAgICAgICAgVGhhdCBpcyB0aGUgcmVtYWluaW5nIGJpdHMgaW4gW2RhdGFdIGFuZCBhbGwgY29udGVudHMgaW4gW3F1ZXVlXS5cbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgICAgICAgIFF1ZXVlLml0ZXIgcXVldWUgfmY6KGZ1biBkYXRhIC0+IERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gKEZpcnN0IHgpXG4gICAgICAgICAgfCAoQ29udGludWUgfCBXYWl0IF8pIGFzIGNvbnRpbnVlX29yX3dhaXQgLT5cbiAgICAgICAgICAgIGxldCViaW5kICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggY29udGludWVfb3Jfd2FpdCB3aXRoXG4gICAgICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCBfIC0+XG4gICAgICAgICAgICAgICAgKCogSW1wb3NzaWJsZTogdGhpcyBicmFuY2ggZG9lcyBub3QgY29udGFpbiBbU3RvcCBfXSAqKVxuICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgaWYgbGVuZ3RoID4gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBQcm9jZXNzIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuICAgICAgICAgICAgICAgICBNb3JlIHRoYW4gb25lIGJpbl9wcm90IG1lc3NhZ2Ugd2FzIHNlbnQgaW5zaWRlIHRoZSB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBsZW5ndGggPSAwICopXG4gICAgICAgICAgICAgICgqIEFsbCBkYXRhIHdhcyByZWFkIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgICBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoOjAgfnF1ZXVlIH5kYXRhKVxuICAgICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6dG90YWxfbGVuIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEpXG4gICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhXG4gICAgYW5kIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhID1cbiAgICAgIGlmIGxlbmd0aCA9IDBcbiAgICAgIHRoZW4gQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLnN1YiBkYXRhIH5wb3MgfmxlbjpsZW5ndGggaW5cbiAgICAgICAgQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlcjtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmcgYnVmZmVyIGRhdGEpXG4gICAgYW5kIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQgfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSA9XG4gICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWVcbiAgICBpblxuICAgIGxldCByZWMgd2FpdF9mb3JfcmVhZCB+bmVlZCA9XG4gICAgICBwaXBlX3JlYWQgdC5waXBlIChmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gcmV0dXJuIChFcnJvciBgRW9mKVxuICAgICAgICB8IGBPayBxdWV1ZSAtPiBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlKVxuICAgIGFuZCBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlIG5leHQgPVxuICAgICAgb25fZW5kX29mX2JhdGNoICgpO1xuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IEZpcnN0IHJlc3VsdCAtPiByZXR1cm4gKE9rIHJlc3VsdClcbiAgICAgIHwgU2Vjb25kIG5lZWQgLT4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGluXG4gICAgbGV0IHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+ZGF0YSB+bGVuZ3RoID1cbiAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCAoUXVldWUuY3JlYXRlICgpKSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZVxuICAgIGluXG4gICAgKCogV2UgZWl0aGVyIHN0YXJ0IGJ5XG4gICAgICAgLSBwcm9jZXNzaW5nIHJlbWFpbmluZyBiaXRzIGluIHRoZSBidWZmZXJcbiAgICAgICAtIG9yIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSBpbiB0aGUgcGlwZSAqKVxuICAgIGxldCBuZWVkID0gSGVhZGVyLmxlbmd0aCBpblxuICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgIGlmIEludC4oIDwgKSBsZW5ndGggbmVlZFxuICAgIHRoZW4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGVsc2Ugc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5sZW5ndGggfmRhdGE6KEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRGF0YS50XG5cbiAgICBsZXQgb2ZfYmlnc3RyaW5nID0gRGF0YS5vZl9iaWdzdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX21vbml0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLldyaXRlci50XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlICgpIH1cbmVuZFxuXG4oKiBXZSBkb24ndCBwZXJmb3JtIGFueSBidWZmZXJpbmcgaGVyZS5cbiAgIEEgbWVzc2FnZSBpcyBjb25zaWRlciB0byBiZSBmbHVzaGVkIGFzIHNvb24gYXMgaXQgZW50ZXJzIHRoZSBwaXBlLiAqKVxubW9kdWxlIFBpcGVfd3JpdGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX21vbml0b3IudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBtb25pdG9yICh0IDogdCkgPSB0Lm1vbml0b3JcblxuICAoKiBCZWNhdXNlIHdlIGRvbid0IG1haW50YWluIGFueSBidWZmZXIsIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdyaXRlcyAqKVxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKF8gOiB0KSA9IDBcbiAgbGV0IHN0b3BwZWQgKHQgOiB0KSA9IFBpcGUuY2xvc2VkIHQucGlwZVxuXG4gICgqIFdlIGNvbnNpZGVyIHRoYXQgYSBtZXNzYWdlIGlzIGZsdXNoZWQgYXMgc29vbiBhcyBpdCByZWFjaGVzIHRoZSB1bmRlcmxpbmluZ1xuICAgICB0cmFuc3BvcnQuICopXG4gIGxldCBmbHVzaGVkIChfIDogdCkgPSBEZWZlcnJlZC51bml0XG4gIGxldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRcbiAgbGV0IHNlbnRfcmVzdWx0IHggOiBfIFNlbmRfcmVzdWx0LnQgPSBTZW50IHhcblxuICBsZXQgY2hlY2tfY2xvc2VkICh0IDogdCkgZiA9XG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB0LnBpcGUpIHRoZW4gZiAoKSBlbHNlIFNlbmRfcmVzdWx0LkNsb3NlZFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IHQgd3JpdGVyIHggPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgIGxldCBidWYgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB+aGVhZGVyOnRydWUgd3JpdGVyIHggaW5cbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgKERhdGEub2ZfYmlnc3RyaW5nIGJ1Zik7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHRcbiAgICAgICAgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW46cGF5bG9hZF9zaXplXG4gICAgPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgICgqIFdyaXRlIHRoZSBzaXplIGhlYWRlciBtYW51YWxseSBhbmQgY29uY2F0ZW5hdGUgdGhlIHR3byAqKVxuICAgICAgbGV0IGRhdGFfc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLmNyZWF0ZSAoZGF0YV9zaXplICsgSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfc2l6ZSkgaW5cbiAgICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvczowIChkYXRhX3NpemUgKyBwYXlsb2FkX3NpemUpO1xuICAgICAgbGV0IGRzdF9wb3MgPSB3cml0ZXIud3JpdGUgZGF0YSB+cG9zOkhlYWRlci5sZW5ndGggeCBpblxuICAgICAgQmlnc3RyaW5nLmJsaXQgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6ZGF0YSB+ZHN0X3BvcyB+bGVuOnBheWxvYWRfc2l6ZTtcbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgKERhdGEub2ZfYmlnc3RyaW5nIGRhdGEpO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBtYXRjaCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgfCBTZW50ICgpIC0+IHNlbnRfcmVzdWx0IERlZmVycmVkLnVuaXRcbiAgICB8IChDbG9zZWQgfCBNZXNzYWdlX3Rvb19iaWcgXykgYXMgciAtPiByXG4gIDs7XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IHhcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgeFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcudG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoU3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKFN0cmluZ19kYXRhKVxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJpZ3N0cmluZyA6IGJpZ3N0cmluZyB0XG5cbiAgbGV0IHN0cmluZyA9IFN0cmluZ1xuICBsZXQgYmlnc3RyaW5nID0gQmlnc3RyaW5nXG5lbmRcblxubGV0IG1ha2VfcmVhZGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpIChyZWFkZXIgOiBhIFBpcGUuUmVhZGVyLnQpID1cbiAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG47O1xuXG5sZXQgbWFrZV93cml0ZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHdyaXRlciA6IGEgUGlwZS5Xcml0ZXIudCkgPVxuICBsZXQgd3JpdGVyID0gUGlwZV9hbmRfbW9uaXRvci5jcmVhdGUgd3JpdGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG47O1xuXG5sZXQgY3JlYXRlIGtpbmQgcmVhZGVyIHdyaXRlciA9XG4gIHsgVHJhbnNwb3J0LnJlYWRlciA9IG1ha2VfcmVhZGVyIGtpbmQgcmVhZGVyOyB3cml0ZXIgPSBtYWtlX3dyaXRlciBraW5kIHdyaXRlciB9XG47O1xuXG4oKiBUZXN0aW5nICopXG5cbm1vZHVsZSB0eXBlIFRyYW5zcG9ydF9yZWFkZXIgPSBzaWdcbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuICBlbmRcblxuICBpbmNsdWRlIFRyYW5zcG9ydC5SZWFkZXIuUyB3aXRoIHR5cGUgdCA9IEZvcl90ZXN0aW5nLnQgUGlwZV9hbmRfYnVmZmVyLnRcbmVuZFxuXG5tb2R1bGUgVGVzdF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuXG4gIGxldCBvbl9tZXNzYWdlID8obWVzc2FnZSA9IGRlZmF1bHRfbWVzc2FnZSkgb25fbWVzc2FnZV9jb3VudCBidWZmZXIgfnBvcyB+bGVuID1cbiAgICBvbl9tZXNzYWdlX2NvdW50IDo9ICFvbl9tZXNzYWdlX2NvdW50ICsgMTtcbiAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDptZXNzYWdlO1xuICAgIEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgKCkgPSBpbmNyIG9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuIHZlcmlmeSA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZV9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaF9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIG9uX21lc3NhZ2VfY291bnQgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpO1xuICAgIHdhaXQgKCk7XG4gICAgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnQgbWVzc2FnZV9jb3VudCBiYXRjaF9jb3VudCA9XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fbWVzc2FnZV9jb3VudCB+ZXhwZWN0Om1lc3NhZ2VfY291bnQ7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fZW5kX29mX2JhdGNoX2NvdW50IH5leHBlY3Q6YmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKSBpblxuICAgIGxldCBtZXNzYWdlX3JhdyA9IGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3YWl0ICgpO1xuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3JhdyBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgd3JpdGUgcGFydDE7XG4gICAgd2FpdCAoKTtcbiAgICB3cml0ZSBwYXJ0MlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICB3cml0ZSB0d29fbXNnXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21zZyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tc2cgfnBvczppIH5sZW46MSk7XG4gICAgICB3YWl0ICgpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmsgKHZlcmlmeSAxIDEpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDIgMSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rICh2ZXJpZnkgMSAzKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rICh2ZXJpZnkgMiAxKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgKHZlcmlmeSAyIDM0KVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSA3IDQwKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJjYW4gY2FsbCByZWFkX2ZvcmV2ZXIgbXVsdGlwbGUgdGltZXNcIiA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKCkgaW5cbiAgICBsZXQgd3JpdGUgeCA9IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSBpblxuICAgIGxldCBudW0gPSByZWYgMCBpblxuICAgIGxldCBzdG9wX2FmdGVyX29uX21lc3NhZ2UgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgICBpbmNyIG51bTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0OmRlZmF1bHRfbWVzc2FnZTtcbiAgICAgIEhhbmRsZXJfcmVzdWx0LlN0b3AgKClcbiAgICBpblxuICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgUGlwZS5jbG9zZSB3cml0ZXI7XG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgbGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIERlZmVycmVkLnVuaXQpO1xuICAgIHdhaXQgKCk7XG4gICAgWyV0ZXN0X3Jlc3VsdDogSW50LnRdIH5leHBlY3Q6MiAhbnVtXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuXG5tb2R1bGUgQmVuY2hfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcbiAgbGV0IG9uZV9tZXNzYWdlID0gY3JlYXRlX21lc3NhZ2UgKClcbiAgbGV0IHR3b19tZXNzYWdlcyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbWVzc2FnZTsgb25lX21lc3NhZ2UgXVxuXG4gIGxldCBvbmVfbWVzc2FnZV9wMSwgb25lX21lc3NhZ2VfcDIgPVxuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgcGFydDEsIHBhcnQyXG4gIDs7XG5cbiAgbGV0IG9uX21lc3NhZ2UgX2J1ZmZlciB+cG9zOl8gfmxlbjpfID0gSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpXG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgZm9yIF8gPSAwIHRvIDEwMCBkb1xuICAgICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpXG4gICAgZG9uZTtcbiAgICB3YWl0ICgpXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSBvbmVfbWVzc2FnZVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIilcblxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AxO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSB0d29fbWVzc2FnZXNcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbWVzc2FnZXMgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbWVzc2FnZXMgfnBvczppIH5sZW46MSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVua1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18zX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfb25lX2J5dGVcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVua1xuXG4gIGxldCViZW5jaCBcIm11bHRpXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcbmVuZFxuXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LnRcblxuICAgIGxldCBycGNfY29ubmVjdGlvbiA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gIGVuZClcblxubW9kdWxlIFJwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFJwYy5Db25uZWN0aW9uLnRcblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgdFxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCB0XG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCB0XG4gIGVuZClcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gVmVyc2lvbmVkX3JwY1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxubW9kdWxlIFBpcGVfdHJhbnNwb3J0ID0gUGlwZV90cmFuc3BvcnRcbm1vZHVsZSBScGNfZXJyb3IgPSBScGNfZXJyb3Jcbm1vZHVsZSBScGNfcmVzdWx0ID0gUnBjX3Jlc3VsdFxuXG5tb2R1bGUgQXN5bmNfcnBjX2tlcm5lbF9zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IFJwYy5TdGFibGVcbmVuZFxuXG5tb2R1bGUgQXN5bmNfcnBjX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuICBtb2R1bGUgUHJvdG9jb2wgPSBQcm90b2NvbFxuICBtb2R1bGUgVHJhbnNwb3J0ID0gVHJhbnNwb3J0XG5cbiAgbGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBDb25uZWN0aW9uLmRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXRcbmVuZFxuIiwib3BlbiBTdHJpbmdcblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5cbigqIE5vdCB0YWlsIHJlY3Vyc2l2ZSBmb3IgXCJwZXJmb3JtYW5jZVwiLCBwbGVhc2UgY2hvb3NlIGxvdyB2YWx1ZXMgZm9yXG4gICBbbWF4XS4gVGhlIGlkZWEgaXMgdGhhdCBtYXggaXMgYWx3YXlzIHNtYWxsIGJlY2F1c2UgaXQncyBoYXJkXG4gICBjb2RlICopXG5sZXQgc3BsaXRfY2hhcl9ib3VuZGVkIHN0ciB+b24gfm1heCA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbc3RyXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIG9mZnNldCB0b2tlbnMgPVxuICAgICAgaWYgdG9rZW5zID0gbWF4IC0gMVxuICAgICAgdGhlbiBbc3ViIHN0ciBvZmZzZXQgKGxlbmd0aCBzdHIgLSBvZmZzZXQpXVxuICAgICAgZWxzZVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgICBcIlwiOjoobG9vcCAob2Zmc2V0ICsgMSkgKHRva2VucyArIDEpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCB0b2tlbiA9IFN0cmluZy5zdWIgc3RyIG9mZnNldCAoaW5kZXggLSBvZmZzZXQpIGluXG4gICAgICAgICAgICB0b2tlbjo6KGxvb3AgKGluZGV4ICsgMSkgKHRva2VucyArIDEpKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbc3ViIHN0ciBvZmZzZXQgKGxlbmd0aCBzdHIgLSBvZmZzZXQpXVxuICAgIGluIGxvb3AgMCAwXG5cbmxldCBzcGxpdF9jaGFyX3VuYm91bmRlZCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gc3ViIHN0ciAoaW5kZXggKyAxKSAob2Zmc2V0IC0gaW5kZXgpIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxubGV0IG9mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbmxldCBmdWxsX3NwbGl0IHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCBzZXAgPSBvZl9jaGFyIG9uIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKHNlcDo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gc3ViIHN0ciAoaW5kZXggKyAxKSAob2Zmc2V0IC0gaW5kZXgpIGluXG4gICAgICAgICAgbG9vcCAoc2VwOjp0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgICB0aGVuIChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgICAgIGVsc2UgYWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbigqIGNvcHlpbmcgY29yZSdzIGNvbnZlbnRpb24gZm9yIFN0cmluZy5zcGxpdCBidXQgd2l0aCBhbiBvcHRpb25hbCBtYXhcbiAgIGFyZ3VtZW50ICopXG5sZXQgc3BsaXQgP21heCBzIH5vbiA9XG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBzcGxpdF9jaGFyX3VuYm91bmRlZCBzIH5vblxuICB8IFNvbWUgbWF4IC0+ICAgICAgICAgICAgICAgICAoKiBhc3NlcnQgKG1heCA8IDEwMCk7ICopXG4gICAgc3BsaXRfY2hhcl9ib3VuZGVkIHMgfm9uIH5tYXhcblxubGV0IHJpbmRleF9mcm9tX29uIHMgfm9mZnNldCB+b24gPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBvbiBzLltpXSB0aGVuIGlcbiAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICBpbiBsb29wIG9mZnNldFxuXG5sZXQgdHJpbV9sZWZ0X3N1YiBzIH5wb3MgfmxlbiB+Y2hhcnMgPVxuICBsZXQgc3RhcnRfcG9zID1cbiAgICBsZXQgZmluYWwgPSBwb3MgKyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbGFzdF9jaGFyIGkgPVxuICAgICAgaWYgaSA9IGZpbmFsIHRoZW4gbGFzdF9jaGFyXG4gICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBjaGFycyBzLltpXSB0aGVuIGxvb3AgKGkgKyAxKSAoaSArIDEpXG4gICAgICBlbHNlIGxhc3RfY2hhclxuICAgIGluIGxvb3AgcG9zIHBvc1xuICBpblxuICBsZXQgbmV3X2xlbiA9IGxlbiAtIChzdGFydF9wb3MgLSBwb3MpIGluXG4gIFN0cmluZy5zdWIgcyBzdGFydF9wb3MgbmV3X2xlblxuXG5sZXQgc3BsaXRfdHJpbV9sZWZ0IHN0ciB+b24gfnRyaW0gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbV9vbiBzdHIgfm9mZnNldCB+b24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6KGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH5sZW46KG9mZnNldCAtIGluZGV4KSB+Y2hhcnM6dHJpbSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICh0cmltX2xlZnRfc3ViIHN0ciB+cG9zOjAgfmxlbjoob2Zmc2V0ICsgMSkgfmNoYXJzOnRyaW0pOjphY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuZXhjZXB0aW9uIEZvdW5kX2ludCBvZiBpbnRcblxubGV0IGZpcnN0X2NoYXJfbmUgcyBjID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBzLlswXSA8PiBjXG5cbmxldCB0cmltX2xlZnQgcyA9XG4gIGlmIGZpcnN0X2NoYXJfbmUgcyAnICcgdGhlbiBzXG4gIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaT0wIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gJyAnIHRoZW4gcmFpc2UgKEZvdW5kX2ludCBpKVxuICAgICAgZG9uZTtcbiAgICAgIFwiXCJcbiAgICB3aXRoIEZvdW5kX2ludCBub25fc3BhY2UgLT5cbiAgICAgIHN1YiBzIG5vbl9zcGFjZSAobGVuIC0gbm9uX3NwYWNlKVxuXG5sZXQgc3Vic3RyX2VxID8oc3RhcnQ9MCkgcyB+cGF0dGVybiA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gLSAxIGRvXG4gICAgICBpZiBzLltpICsgc3RhcnRdIDw+IHBhdHRlcm4uW2ldIHRoZW4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIF8gLT4gZmFsc2VcblxubGV0IGZpbmRfZnJvbSA/KHN0YXJ0PTApIHN0ciB+cGF0dGVybiA9XG4gIHRyeVxuICAgIGZvciBpID0gc3RhcnQgdG8gKFN0cmluZy5sZW5ndGggc3RyKSAtIChTdHJpbmcubGVuZ3RoIHBhdHRlcm4pIGRvXG4gICAgICBpZiBzdWJzdHJfZXEgfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHRoZW5cbiAgICAgICAgcmFpc2UgKEZvdW5kX2ludCBpKVxuICAgIGRvbmU7XG4gICAgTm9uZVxuICB3aXRoXG4gIHwgRm91bmRfaW50IGkgLT4gU29tZSBpXG4gIHwgIF8gLT4gTm9uZVxuXG5sZXQgZmluZF9taW4gbCB+ZiA9XG4gIGxldCByZWMgbG9vcCB4IGZ4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFNvbWUgKHgsIGZ4KVxuICAgIHwgeCc6OnhzIC0+XG4gICAgICBsZXQgZngnID0gZiB4JyBpblxuICAgICAgaWYgZngnIDwgZnggdGhlbiBsb29wIHgnIGZ4JyB4c1xuICAgICAgZWxzZSBsb29wIHggZnggeHNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHg6OnhzIC0+IGxvb3AgeCAoZiB4KSB4c1xuXG5sZXQgcmVwbGFjZV9hbGwgc3RyIH5wYXR0ZXJuIH53aXRoXyA9XG4gIGxldCAoc2xlbiwgcGxlbikgPSBTdHJpbmcuKGxlbmd0aCBzdHIsIGxlbmd0aCBwYXR0ZXJuKSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBzbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoc2xlbiAtIGkpO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIHwgU29tZSBqIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKGogLSBpKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgIGxvb3AgKGogKyBwbGVuKVxuICBpbiBsb29wIDBcblxuZXhjZXB0aW9uIEZvdW5kX3JlcGxhY2Ugb2YgaW50ICogc3RyaW5nICogc3RyaW5nXG5cbmxldCByZXBsYWNlX2FsbF9hc3NvYyBzdHIgdGJsID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBzbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IHNsZW4gdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgZWxzZVxuICAgICAgbGV0IHIgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZSA9XG4gICAgICAgICAgICBmaW5kX21pbiB0YmwgfmY6KGZ1biAocGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgICAtPiBtYXhfaW50XG4gICAgICAgICAgICAgIHwgU29tZSBqIHdoZW4gaiA9IGkgLT4gcmFpc2UgKEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSlcbiAgICAgICAgICAgICAgfCBTb21lIGogLT4gZm91bmQgOj0gdHJ1ZTsgailcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lICgocGF0dGVybiwgd2l0aF8pLCBqKSB3aGVuICFmb3VuZCAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIHdpdGggRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoc2xlbiAtIGkpO1xuICAgICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgICB8IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKGogLSBpKTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgICBsb29wIChqICsgU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKVxuICBpbiBsb29wIDBcblxubGV0IGl0ZXJpIGYgbCA9XG4gIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCB4Ojp4cyAtPiAoZiBpIHgpOyBsb29wIChzdWNjIGkpIHhzXG4gIGluIGxvb3AgMCBsXG5cbmxldCBvZl9saXN0IHhzID1cbiAgbGV0IGwgPSBMaXN0Lmxlbmd0aCB4cyBpblxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGl0ZXJpIChmdW4gaSBjIC0+IEJ5dGVzLnNldCBzIGkgYykgeHM7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpID0gLTEgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBsb29wIChzLltpXSA6OiBhY2MpIChwcmVkIGkpXG4gIGluIGxvb3AgW10gKFN0cmluZy5sZW5ndGggcyAtIDEpXG5cbmxldCBvZl9hcnJheSBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgYnl0ZXMgaSBhLihpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ5dGVzXG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAoU3RyaW5nLmxlbmd0aCBzKSAoU3RyaW5nLmdldCBzKVxuXG4oKiByaXBwZWQgb2ZmIGZyb20gb25lIG9mIGRidWVuemxpJ3MgbGlicyAqKVxubGV0IGN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgMCBpblxuICAgICAgKCogV2UgcnVuIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byBlbmQgd2l0aCBbaV0gdHJ5aW5nIHRvIG1hdGNoIHRoZVxuICAgICAgICAgZmlyc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlIHZlcmlmeSB0aGF0XG4gICAgICAgICB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXS4gSWYgaXQgZG9lc24ndCBtYXRjaCB3ZVxuICAgICAgICAgY29udGludWUgdG8gbG9vayBmb3IgW29uXSB3aXRoIFtpXS4gSWYgaXQgbWF0Y2hlcyB3ZSBleGl0IHRoZVxuICAgICAgICAgbG9vcCBhbmQgZXh0cmFjdCBhIHN1YnN0cmluZyBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gdGhlXG4gICAgICAgICBwb3NpdGlvbiBiZWZvcmUgdGhlIFtvbl0gd2UgZm91bmQgYW5kIGFub3RoZXIgZnJvbSB0aGUgcG9zaXRpb25cbiAgICAgICAgIGFmdGVyIHRoZSBbb25dIHdlIGZvdW5kIHRvIGVuZCBvZiBzdHJpbmcuIElmIFtpXSBpcyBzdWNoIHRoYXQgbm9cbiAgICAgICAgIHNlcGFyYXRvciBjYW4gYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaFxuICAgICAgICAgY2FzZS4gKilcbiAgICAgIHRyeVxuICAgICAgICB3aGlsZSAoIWkgKyBzZXBfbWF4IDw9IHNfbWF4KSBkb1xuICAgICAgICAgICgqIENoZWNrIHJlbWFpbmluZyBbb25dIGNoYXJzIG1hdGNoLCBhY2Nlc3MgdG8gdW5zYWZlIHMgKCFpICsgIWspIGlzXG4gICAgICAgICAgICAgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICBpZiB1bnNhZmVfZ2V0IHMgIWkgPD4gdW5zYWZlX2dldCBvbiAwIHRoZW4gaW5jciBpIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGsgOj0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA8PSBzZXBfbWF4ICYmIHVuc2FmZV9nZXQgcyAoIWkgKyAhaykgPSB1bnNhZmVfZ2V0IG9uICFrKVxuICAgICAgICAgICAgZG8gaW5jciBrIGRvbmU7XG4gICAgICAgICAgICBpZiAhayA8PSBzZXBfbWF4IHRoZW4gKCogbm8gbWF0Y2ggKikgaW5jciBpIGVsc2UgcmFpc2UgRXhpdFxuICAgICAgICAgIGVuZFxuICAgICAgICBkb25lO1xuICAgICAgICBOb25lICgqIG5vIG1hdGNoIGluIHRoZSB3aG9sZSBzdHJpbmcuICopXG4gICAgICB3aXRoXG4gICAgICB8IEV4aXQgLT4gKCogaSBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXBhcmF0b3IgKilcbiAgICAgICAgbGV0IGxlZnRfZW5kID0gIWkgLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgc2VwX21heCArIDEgaW5cbiAgICAgICAgU29tZSAoc3ViIHMgMCAobGVmdF9lbmQgKyAxKSxcbiAgICAgICAgICAgICAgc3ViIHMgcmlnaHRfc3RhcnQgKHNfbWF4IC0gcmlnaHRfc3RhcnQgKyAxKSlcblxubGV0IHJjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5yY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiBzX21heCBpblxuICAgICAgKCogV2UgcnVuIGZyb20gdGhlIGVuZCBvZiBbc10gdG8gdGhlIGJlZ2lubmluZyB3aXRoIFtpXSB0cnlpbmcgdG9cbiAgICAgICAgIG1hdGNoIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZVxuICAgICAgICAgdmVyaWZ5IHRoYXQgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10gKHdlIGRvIHRoYXRcbiAgICAgICAgIGJhY2t3YXJkcykuICBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl1cbiAgICAgICAgIHdpdGggW2ldLiAgSWYgaXQgbWF0Y2hlcyB3ZSBleGl0IHRoZSBsb29wIGFuZCBleHRyYWN0IGFcbiAgICAgICAgIHN1YnN0cmluZyBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGVcbiAgICAgICAgIFtvbl0gd2UgZm91bmQgYW5kIGFub3RoZXIgZnJvbSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIFtvbl0gd2VcbiAgICAgICAgIGZvdW5kIHRvIGVuZCBvZiBzdHJpbmcuICBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vIHNlcGFyYXRvciBjYW5cbiAgICAgICAgIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2ggY2FzZS4gKilcbiAgICAgIHRyeVxuICAgICAgICB3aGlsZSAoIWkgPj0gc2VwX21heCkgZG9cbiAgICAgICAgICBpZiB1bnNhZmVfZ2V0IHMgIWkgPD4gdW5zYWZlX2dldCBvbiBzZXBfbWF4IHRoZW4gZGVjciBpIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICgqIENoZWNrIHJlbWFpbmluZyBbb25dIGNoYXJzIG1hdGNoLCBhY2Nlc3MgdG8gdW5zYWZlX2dldFxuICAgICAgICAgICAgICAgcyAoc2VwX3N0YXJ0ICsgIWspIGlzIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgICBsZXQgc2VwX3N0YXJ0ID0gIWkgLSBzZXBfbWF4IGluXG4gICAgICAgICAgICBrIDo9IHNlcF9tYXggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrID49IDAgJiYgdW5zYWZlX2dldCBzIChzZXBfc3RhcnQgKyAhaykgPSB1bnNhZmVfZ2V0IG9uICFrKVxuICAgICAgICAgICAgZG8gZGVjciBrIGRvbmU7XG4gICAgICAgICAgICBpZiAhayA+PSAwIHRoZW4gKCogbm8gbWF0Y2ggKikgZGVjciBpIGVsc2UgcmFpc2UgRXhpdFxuICAgICAgICAgIGVuZFxuICAgICAgICBkb25lO1xuICAgICAgICBOb25lICgqIG5vIG1hdGNoIGluIHRoZSB3aG9sZSBzdHJpbmcuICopXG4gICAgICB3aXRoXG4gICAgICB8IEV4aXQgLT4gKCogaSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzZXBhcmF0b3IgKilcbiAgICAgICAgbGV0IGxlZnRfZW5kID0gIWkgLSBzZXBfbWF4IC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIDEgaW5cbiAgICAgICAgU29tZSAoc3ViIHMgMCAobGVmdF9lbmQgKyAxKSxcbiAgICAgICAgICAgICAgc3ViIHMgcmlnaHRfc3RhcnQgKHNfbWF4IC0gcmlnaHRfc3RhcnQgKyAxKSlcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGxldCBwcmVmaXhfbCA9IFN0cmluZy5sZW5ndGggcHJlZml4IGluXG4gIGxldCBzdHJpbmdfbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBwcmVmaXhfbCA+IHN0cmluZ19sIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgdHJ5XG4gICAgICBmb3IgaSA9IDAgdG8gcHJlZml4X2wgLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+IHByZWZpeC5baV0gdGhlbiByYWlzZSBFeGl0O1xuICAgICAgZG9uZTtcbiAgICAgIFNvbWUgKFN0cmluZy5zdWIgcyBwcmVmaXhfbCAoc3RyaW5nX2wgLSBwcmVmaXhfbCkpXG4gICAgd2l0aCBfIC0+IE5vbmVcblxubGV0IGRyb3AgcyBuID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbiA+PSBsXG4gIHRoZW4gXCJcIlxuICBlbHNlIFN0cmluZy5zdWIgcyBuIChsIC0gbilcblxubGV0IHRha2UgcyBuID1cbiAgaWYgbiA+PSBTdHJpbmcubGVuZ3RoIHNcbiAgdGhlbiBzXG4gIGVsc2UgU3RyaW5nLnN1YiBzIDAgblxuIiwidHlwZSBiaWdzdHJpbmcgPVxuICAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG50eXBlIHQgPSBiaWdzdHJpbmdcblxubGV0IGNyZWF0ZSBzaXplID0gQmlnYXJyYXkuKEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBzaXplKVxubGV0IGVtcHR5ICAgICAgID0gY3JlYXRlIDBcblxubW9kdWxlIEJBMSA9IEJpZ2FycmF5LkFycmF5MVxuXG5sZXQgbGVuZ3RoIHQgPSBCQTEuZGltIHRcblxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBjaGFyICAgICAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCAgICAgICAgICAgIDogdCAgICAgICAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF90b19ieXRlcyAgIDogdCAgICAgICAtPiBzcmNfb2ZmOmludCAtPiBCeXRlcy50IC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1wiICAgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mcm9tX2J5dGVzIDogQnl0ZXMudCAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXCIgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXCIgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wIDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfc3RyaW5nIDogdCAtPiBpbnQgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNociA6IHQgLT4gaW50IC0+IGNoYXIgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY2hyXCIgW0BAbm9hbGxvY11cblxubGV0IHN1YiB0IH5vZmYgfmxlbiA9XG4gIEJBMS5zdWIgdCBvZmYgbGVuXG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kcyBvcCBidWZmZXJfbGVuIG9mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZmZlcl9sZW46ICVkLCBvZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX2JsaXQgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IHNyY19sZW46ICVkLCBzcmNfb2ZmOiAlZCwgZHN0X2xlbjogJWQsIGRzdF9vZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfbWVtY21wIG9wIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmMV9sZW46ICVkLCBidWYxX29mZjogJWQsIGJ1ZjJfbGVuOiAlZCwgYnVmMl9vZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxuKCogQSBub3RlIG9uIGJvdW5kcyBjaGVja2luZy5cbiAqXG4gKiBUaGUgY29kZSBzaG91bGQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBibGl0IGRvZXNuJ3RcbiAqIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyOlxuICpcbiAqICAge1tvZmYgKyBsZW4gPD0gYnVmZmVyX2xlbl19XG4gKlxuICogSG93ZXZlciwgdGhpcyBtYXkgbGVhZCB0byBhbiBpbnRlZ2VyIG92ZXJmbG93IGZvciBsYXJnZSB2YWx1ZXMgb2YgW29mZl0sXG4gKiBlLmcuLCBbbWF4X2ludF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGNvbXBhcmlzb24gdG8gcmV0dXJuIFt0cnVlXSB3aGVuIGl0XG4gKiBzaG91bGQgcmVhbGx5IHJldHVybiBbZmFsc2VdLlxuICpcbiAqIEFuIGVxdWl2YWxlbnQgY29tcGFyaXNvbiB0aGF0IGRvZXMgbm90IHJ1biBpbnRvIHRoaXMgaW50ZWdlciBvdmVyZmxvd1xuICogcHJvYmxlbSBpczpcbiAqXG4gKiAgIHtbYnVmZmVyX2xlbiAtIG9mZiA9PiBsZW5dfVxuICpcbiAqIFRoaXMgaXMgY2hlY2tpbmcgdGhhdCB0aGUgaW5wdXQgYnVmZmVyLCBsZXNzIHRoZSBvZmZzZXQsIGlzIHN1ZmZpY2llbnRseVxuICogbG9uZyB0byBwZXJmb3JtIHRoZSBibGl0LiBTaW5jZSB0aGUgZXhwcmVzc2lvbiBpcyBzdWJ0cmFjdGluZyBbb2ZmXSByYXRoZXJcbiAqIHRoYW4gYWRkaW5nIGl0LCBpdCBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoZSBvdmVyZmxvdyB0aGF0IHRoZSBwcmV2aW91c1xuICogaW5lcXVhbGl0eSBkaWQuIEFzIGxvbmcgYXMgdGhlcmUgaXMgYSBjaGVjayB0byBlbnN1cmUgdGhhdCBbb2ZmXSBpcyBub3RcbiAqIG5lZ2F0aXZlLCBpdCB3b24ndCB1bmRlcmZsb3cgZWl0aGVyLiAqKVxuXG5sZXQgY29weSB0IH5vZmYgfmxlbiA9XG4gIGxldCBidWZmZXJfbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcImNvcHlcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBkc3QgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHQgfnNyY19vZmY6b2ZmIGRzdCB+ZHN0X29mZjowIH5sZW47XG4gIGRzdFxuOztcblxubGV0IHN1YnN0cmluZyB0IH5vZmYgfmxlbiA9XG4gIGxldCBidWZmZXJfbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcInN1YnN0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJcbjs7XG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjowIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJcbjs7XG5cbmxldCBvZl9zdHJpbmcgfm9mZiB+bGVuIHMgPVxuICBsZXQgYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwib2Zfc3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgcyB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIGJcbjs7XG5cbmxldCBibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gQnl0ZXMubGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IG1lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gbGVuZ3RoIGJ1ZjIgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBTdHJpbmcubGVuZ3RoIGJ1ZjIgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW4gPVxuICBsZXQgYnVmX2xlbiA9IGxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgaWYgYnVmX29mZiA8IDAgfHwgYnVmX2xlbiAtIGJ1Zl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlblxuXG4oKiBTYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjRcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NFwiXG5cbm1vZHVsZSBTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgKGJzd2FwX2ludDMyIGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IGJzIG9mZiA9XG4gICAgYnN3YXAxNiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmKVxuXG4gIGxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZCB4IG9mZiA9XG4gICAgKChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuZW5kXG5cbmxldCBzZXRfaW50MTZfbGUsIHNldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8xNiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNlxuXG5sZXQgc2V0X2ludDMyX2xlLCBzZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyLCBjYW1sX2JpZ3N0cmluZ19zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzJcblxubGV0IHNldF9pbnQ2NF9sZSwgc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NCwgY2FtbF9iaWdzdHJpbmdfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzY0ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0XG5cbmxldCBnZXRfaW50MTZfbGUsIGdldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTYsIGNhbWxfYmlnc3RyaW5nX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNlxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIHggb2ZmID1cbiAgKChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkICAsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcFxuICBlbHNlIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCwgU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZFxuXG5sZXQgZ2V0X2ludDMyX2xlLCBnZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyLCBjYW1sX2JpZ3N0cmluZ19nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzJcblxubGV0IGdldF9pbnQ2NF9sZSwgZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NCwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0XG5cbigqIFVuc2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuXG5tb2R1bGUgVVN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiBicyBvZmYgKGJzd2FwX2ludDMyIGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZiA9XG4gICAgYnN3YXAxNiAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYpXG5lbmRcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfbGUsIHVuc2FmZV9zZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlLCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyLCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSwgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUsIHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfbGUgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2JlIHggb2ZmICkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlLCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyLCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSwgdW5zYWZlX2dldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiIsInR5cGUgJ2Egc3RhdGUgPVxuICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICB8IERvbmUgICAgb2YgaW50ICogJ2FcbiAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbmFuZCAnYSBwYXJ0aWFsID1cbiAgeyBjb21taXR0ZWQgOiBpbnRcbiAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2Egc3RhdGUgfVxuXG5cbmxldCBzdGF0ZV90b19vcHRpb24geCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgLT4gU29tZSB2XG4gIHwgRmFpbCBfICAgICAtPiBOb25lXG4gIHwgUGFydGlhbCBfICAtPiBOb25lXG5cbmxldCBmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIgPVxuICBTdHJpbmcuY29uY2F0IFwiID4gXCIgbWFya3MgXiBcIjogXCIgXiBlcnJcblxubGV0IHN0YXRlX3RvX3Jlc3VsdCB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAgICAgICAgICAtPiBPayB2XG4gIHwgUGFydGlhbCBfICAgICAgICAgICAtPiBFcnJvciBcImluY29tcGxldGUgaW5wdXRcIlxuICB8IEZhaWwoXywgbWFya3MsIGVycikgLT4gRXJyb3IgKGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVycilcbiIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgOiBpbnRcbiAgOyBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgICAgICAgOiBpbnRcbiAgOyBvZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRcbiAgOyBsZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRcbiAgOyBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgOiBCaWdzdHJpbmdhZi50XG4gIH1cblxubGV0IGNyZWF0ZSBidWZmZXIgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXMgPVxuICB7IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBjbGllbnRfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgb2ZmXG4gIDsgbGVuXG4gIDsgYnVmZmVyIH1cblxubGV0IGxlbmd0aCAgICAgICAgICAgICAgICAgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyArIHQubGVuXG5sZXQgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0ICB0ID0gY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHRcblxubGV0IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gdC5sZW4gLSBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCB0XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAocGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0ICsgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSBsZW5ndGggdCk7XG4gIGFzc2VydCAocGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0IC0gY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgIHQgPSBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCB0KTtcbjs7XG5cbmxldCBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zID1cbiAgdC5vZmYgKyBwb3MgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGFwcGx5IHQgcG9zIGxlbiB+ZiA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGYgdC5idWZmZXIgfm9mZiB+bGVuXG5cbmxldCB1bnNhZmVfZ2V0X2NoYXIgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgY291bnRfd2hpbGUgdCBwb3MgfmYgPVxuICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgbGV0IG9mZiAgICA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgbGV0IGkgICAgICA9IHJlZiBvZmYgaW5cbiAgbGV0IGxpbWl0ICA9IHQub2ZmICsgdC5sZW4gaW5cbiAgd2hpbGUgIWkgPCBsaW1pdCAmJiBmIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IGJ1ZmZlciAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgIWkgLSBvZmZcbjs7XG5cbmxldCBjb21taXQgdCBwb3MgPVxuICB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPC0gcG9zXG47O1xuIiwibW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgICB8IExhenkgICAgb2YgJ2EgdCBMYXp5LnRcbiAgICB8IERvbmUgICAgb2YgaW50ICogJ2FcbiAgICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBhbmQgJ2EgcGFydGlhbCA9XG4gICAgeyBjb21taXR0ZWQgOiBpbnRcbiAgICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSB0IH1cblxuZW5kXG50eXBlICdhIHdpdGhfc3RhdGUgPSBJbnB1dC50IC0+ICBpbnQgLT4gTW9yZS50IC0+ICdhXG5cbnR5cGUgJ2EgZmFpbHVyZSA9IChzdHJpbmcgbGlzdCAtPiBzdHJpbmcgLT4gJ2EgU3RhdGUudCkgd2l0aF9zdGF0ZVxudHlwZSAoJ2EsICdyKSBzdWNjZXNzID0gKCdhIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGVcblxudHlwZSAnYSB0ID1cbiAgeyBydW4gOiAnci4gKCdyIGZhaWx1cmUgLT4gKCdhLCAncikgc3VjY2VzcyAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlIH1cblxubGV0IGZhaWxfayAgICBpbnB1dCBwb3MgXyBtYXJrcyBtc2cgPVxuICBTdGF0ZS5GYWlsKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIG1hcmtzLCBtc2cpXG5sZXQgc3VjY2VlZF9rIGlucHV0IHBvcyBfICAgICAgIHYgICA9XG4gIFN0YXRlLkRvbmUocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgdilcblxubGV0IHJlYyB0b19leHBvcnRlZF9zdGF0ZSA9IGZ1bmN0aW9uXG4gIHwgU3RhdGUuUGFydGlhbCB7Y29tbWl0dGVkO2NvbnRpbnVlfSAtPlxuICAgICBFeHBvcnRlZF9zdGF0ZS5QYXJ0aWFsXG4gICAgICAgeyBjb21taXR0ZWRcbiAgICAgICA7IGNvbnRpbnVlID1cbiAgICAgICAgICAgZnVuIGJzIH5vZmYgfmxlbiBtb3JlIC0+XG4gICAgICAgICAgIHRvX2V4cG9ydGVkX3N0YXRlIChjb250aW51ZSBicyB+b2ZmIH5sZW4gbW9yZSl9XG4gIHwgU3RhdGUuRG9uZSAoaSx4KSAtPiBFeHBvcnRlZF9zdGF0ZS5Eb25lIChpLHgpXG4gIHwgU3RhdGUuRmFpbCAoaSwgc2wsIHMpIC0+IEV4cG9ydGVkX3N0YXRlLkZhaWwgKGksIHNsLCBzKVxuICB8IFN0YXRlLkxhenkgeCAtPiB0b19leHBvcnRlZF9zdGF0ZSAoTGF6eS5mb3JjZSB4KVxuXG5sZXQgcGFyc2UgcCA9XG4gIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBCaWdzdHJpbmdhZi5lbXB0eSB+Y29tbWl0dGVkX2J5dGVzOjAgfm9mZjowIH5sZW46MCBpblxuICB0b19leHBvcnRlZF9zdGF0ZSAocC5ydW4gaW5wdXQgMCBJbmNvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgcCBpbnB1dCA9XG4gIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBpbnB1dCB+Y29tbWl0dGVkX2J5dGVzOjAgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBpbnB1dCkgaW5cbiAgRXhwb3J0ZWRfc3RhdGUuc3RhdGVfdG9fcmVzdWx0ICh0b19leHBvcnRlZF9zdGF0ZSAocC5ydW4gaW5wdXQgMCBDb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKSlcblxubW9kdWxlIE1vbmFkID0gc3RydWN0XG4gIGxldCByZXR1cm4gdiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSB2XG4gICAgfVxuXG4gIGxldCBmYWlsIG1zZyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBfc3VjYyAtPlxuICAgICAgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBtc2dcbiAgICB9XG5cbiAgbGV0ICg+Pj0pIHAgZiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgdiA9IChmIHYpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg+PnwpIHAgZiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKGYgdikgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8JD4pIGYgbSA9XG4gICAgbSA+PnwgZlxuXG4gIGxldCAoPCo+KSBmIG0gPVxuICAgICgqIGYgPj49IGZ1biBmIC0+IG0gPj58IGYgKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMCBpbnB1dDAgcG9zMCBtb3JlMCBmID1cbiAgICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0gPSBzdWNjIGlucHV0MSBwb3MxIG1vcmUxIChmIG0pIGluXG4gICAgICAgIG0ucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBmLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cblxuICBsZXQgbGlmdCBmIG0gPVxuICAgIGYgPCQ+IG1cblxuICBsZXQgbGlmdDIgZiBtMSBtMiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPSBzdWNjIGlucHV0MiBwb3MyIG1vcmUyIChmIG0xIG0yKSBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBzdWNjIGlucHV0MyBwb3MzIG1vcmUzIChmIG0xIG0yIG0zKSBpblxuICAgICAgICAgIG0zLnJ1biBpbnB1dDIgcG9zMiBtb3JlMiBmYWlsIHN1Y2MzIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIGxldCBzdWNjNCBpbnB1dDQgcG9zNCBtb3JlNCBtNCA9XG4gICAgICAgICAgICAgIHN1Y2MgaW5wdXQ0IHBvczQgbW9yZTQgKGYgbTEgbTIgbTMgbTQpIGluXG4gICAgICAgICAgICBtNC5ydW4gaW5wdXQzIHBvczMgbW9yZTMgZmFpbCBzdWNjNCBpblxuICAgICAgICAgIG0zLnJ1biBpbnB1dDIgcG9zMiBtb3JlMiBmYWlsIHN1Y2MzIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCAoICo+KSBhIGIgPVxuICAgICgqIGEgPj49IGZ1biBfIC0+IGIgKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID0gYi5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCogKSBhIGIgPVxuICAgICgqIGEgPj49IGZ1biB4IC0+IGIgPj58IGZ1biBfIC0+IHggKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMCBpbnB1dDAgcG9zMCBtb3JlMCB4ID1cbiAgICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIF8gPSBzdWNjIGlucHV0MSBwb3MxIG1vcmUxIHggaW5cbiAgICAgICAgYi5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuZW5kXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgbGV0ICg8Pz4pIHAgbWFyayA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyAobWFyazo6bWFya3MpIG1zZyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cblxuICBsZXQgKDx8PikgcCBxID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICAoKiBUaGUgb25seSB0d28gY29uc3RydWN0b3JzIHRoYXQgaW50cm9kdWNlIG5ldyBmYWlsdXJlIGNvbnRpbnVhdGlvbnMgYXJlXG4gICAgICAgICAqIFs8Pz5dIGFuZCBbPHw+XS4gSWYgdGhlIGluaXRpYWwgaW5wdXQgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGhcbiAgICAgICAgICogb2YgdGhlIGNvbW1pdHRlZCBpbnB1dCwgdGhlbiBjYWxsaW5nIHRoZSBmYWlsdXJlIGNvbnRpbnVhdGlvbiB3aWxsXG4gICAgICAgICAqIGhhdmUgdGhlIGVmZmVjdCBvZiB1bndpbmRpbmcgYWxsIGNob2ljZXMgYW5kIGNvbGxlY3RpbmcgbWFya3MgYWxvbmdcbiAgICAgICAgICogdGhlIHdheS4gKilcbiAgICAgICAgaWYgcG9zIDwgSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCcgdGhlblxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZSBtYXJrcyBtc2dcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHEucnVuIGlucHV0JyBwb3MgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNb25hZF91c2VfZm9yX2RlYnVnZ2luZyA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gTW9uYWQucmV0dXJuXG4gIGxldCBmYWlsICAgPSBNb25hZC5mYWlsXG4gIGxldCAoPj49KSAgPSBNb25hZC4oPj49KVxuXG4gIGxldCAoPj58KSBtIGYgPSBtID4+PSBmdW4geCAtPiByZXR1cm4gKGYgeClcblxuICBsZXQgKDwkPikgZiBtID0gbSA+PnwgZlxuICBsZXQgKDwqPikgZiBtID0gZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZlxuXG4gIGxldCBsaWZ0ICA9ICg+PnwpXG4gIGxldCBsaWZ0MiBmIG0xIG0yICAgICAgID0gZiA8JD4gbTEgPCo+IG0yXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zICAgID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtM1xuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTMgPCo+IG00XG5cbiAgbGV0ICggKj4pIGEgYiA9IGEgPj49IGZ1biBfIC0+IGJcbiAgbGV0ICg8KiApIGEgYiA9IGEgPj49IGZ1biB4IC0+IGIgPj58IGZ1biBfIC0+IHhcbmVuZFxuIiwidHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7IG11dGFibGUgbGVuIDogaW50IH1cblxubGV0IG9mX2JpZ3N0cmluZyB+b2ZmIH5sZW4gYnVmID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoQmlnc3RyaW5nYWYubGVuZ3RoIGJ1ZiA+PSBsZW4gLSBvZmYpO1xuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG5sZXQgY3JlYXRlIGxlbiA9XG4gIG9mX2JpZ3N0cmluZyB+b2ZmOjAgfmxlbjowIChCaWdzdHJpbmdhZi5jcmVhdGUgbGVuKVxuXG5sZXQgd3JpdGFibGVfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtIHQubGVuXG5cbmxldCB0cmFpbGluZ19zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gKHQub2ZmICsgdC5sZW4pXG5cbmxldCBjb21wcmVzcyB0ID1cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgdC5idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBncm93IHQgdG9fY29weSA9XG4gIGxldCBvbGRfbGVuID0gQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgbGV0IHNwYWNlID0gd3JpdGFibGVfc3BhY2UgdCBpblxuICB3aGlsZSBzcGFjZSArICFuZXdfbGVuIC0gb2xkX2xlbiA8IHRvX2NvcHkgZG9cbiAgICBuZXdfbGVuIDo9ICgzICogIW5ld19sZW4pIC8gMlxuICBkb25lO1xuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZ2FmLmNyZWF0ZSAhbmV3X2xlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiBuZXdfYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5idWYgPC0gbmV3X2J1ZjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZW5zdXJlIHQgdG9fY29weSA9XG4gIGlmIHRyYWlsaW5nX3NwYWNlIHQgPCB0b19jb3B5IHRoZW5cbiAgICBpZiB3cml0YWJsZV9zcGFjZSB0ID49IHRvX2NvcHlcbiAgICB0aGVuIGNvbXByZXNzIHRcbiAgICBlbHNlIGdyb3cgdCB0b19jb3B5XG5cbmxldCB3cml0ZV9wb3MgdCA9XG4gIHQub2ZmICsgdC5sZW5cblxubGV0IGZlZWRfc3RyaW5nIHQgfm9mZiB+bGVuIHN0ciA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgc3RyIH5zcmNfb2ZmOm9mZiB0LmJ1ZiB+ZHN0X29mZjood3JpdGVfcG9zIHQpIH5sZW47XG4gIHQubGVuIDwtIHQubGVuICsgbGVuXG5cbmxldCBmZWVkX2JpZ3N0cmluZyB0IH5vZmYgfmxlbiBiID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoQmlnc3RyaW5nYWYubGVuZ3RoIGIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCBiIH5zcmNfb2ZmOm9mZiB0LmJ1ZiB+ZHN0X29mZjood3JpdGVfcG9zIHQpIH5sZW47XG4gIHQubGVuIDwtIHQubGVuICsgbGVuXG5cbmxldCBmZWVkX2lucHV0IHQgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgICAgcyAtPiBmZWVkX3N0cmluZyAgICB0IH5vZmY6MCB+bGVuOihTdHJpbmcgICAgIC5sZW5ndGggcykgc1xuICB8IGBCaWdzdHJpbmcgYiAtPiBmZWVkX2JpZ3N0cmluZyB0IH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggYikgYlxuXG5sZXQgc2hpZnQgdCBuID1cbiAgYXNzZXJ0ICh0LmxlbiA+PSBuKTtcbiAgdC5vZmYgPC0gdC5vZmYgKyBuO1xuICB0LmxlbiA8LSB0LmxlbiAtIG5cblxubGV0IGZvcl9yZWFkaW5nIHsgYnVmOyBvZmY7IGxlbiB9ID1cbiAgQmlnc3RyaW5nYWYuc3ViIH5vZmYgfmxlbiBidWZcblxubW9kdWxlIFVuY29uc3VtZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cbmVuZFxuXG5sZXQgdW5jb25zdW1lZCA/KHNoaWZ0PTApIHsgYnVmOyBvZmY7IGxlbiB9ID1cbiAgYXNzZXJ0IChsZW4gPj0gc2hpZnQpO1xuICB7IFVuY29uc3VtZWQuYnVmOyBvZmYgPSBvZmYgKyBzaGlmdDsgbGVuID0gbGVuIC0gc2hpZnQgfVxuXG5sZXQgb2ZfdW5jb25zdW1lZCB7IFVuY29uc3VtZWQuYnVmOyBvZmY7IGxlbiB9ID1cbiAgeyBidWY7IG9mZjsgbGVuIH1cblxudHlwZSB1bmNvbnN1bWVkID0gVW5jb25zdW1lZC50ID1cbiAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgb2ZmIDogaW50XG4gIDsgbGVuIDogaW50IH1cbiIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNiBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubW9kdWxlIEJpZ2FycmF5ID0gc3RydWN0XG4gICgqIERvIG5vdCBhY2Nlc3MgQmlnYXJyYXkgb3BlcmF0aW9ucyBkaXJlY3RseS4gSWYgYW55dGhpbmcncyBuZWVkZWQsIHJlZmVyIHRvXG4gICAqIHRoZSBpbnRlcm5hbCBCaWdzdHJpbmcgbW9kdWxlLiAqKVxuZW5kXG5cbnR5cGUgYmlnc3RyaW5nID0gQmlnc3RyaW5nYWYudFxuXG5cbm1vZHVsZSBVbmJ1ZmZlcmVkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyc2VyXG5cbiAgaW5jbHVkZSBFeHBvcnRlZF9zdGF0ZVxuXG4gIHR5cGUgbW9yZSA9IE1vcmUudCA9XG4gICAgfCBDb21wbGV0ZVxuICAgIHwgSW5jb21wbGV0ZVxuZW5kXG5cbmluY2x1ZGUgVW5idWZmZXJlZFxuaW5jbHVkZSBQYXJzZXIuTW9uYWRcbmluY2x1ZGUgUGFyc2VyLkNob2ljZVxuXG5tb2R1bGUgQnVmZmVyZWQgPSBzdHJ1Y3RcbiAgdHlwZSB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgPVxuICAgIHsgYnVmIDogYmlnc3RyaW5nXG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5cbiAgdHlwZSBpbnB1dCA9XG4gICAgWyBgQmlnc3RyaW5nIG9mIGJpZ3N0cmluZ1xuICAgIHwgYFN0cmluZyAgICBvZiBzdHJpbmcgXVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUGFydGlhbCBvZiAoWyBpbnB1dCB8IGBFb2YgXSAtPiAnYSBzdGF0ZSlcbiAgICB8IERvbmUgICAgb2YgdW5jb25zdW1lZCAqICdhXG4gICAgfCBGYWlsICAgIG9mIHVuY29uc3VtZWQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGxldCBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgfmYgYnVmZmVyaW5nID0gZnVuY3Rpb25cbiAgICB8IFVuYnVmZmVyZWQuUGFydGlhbCBwICAgICAgICAgLT4gUGFydGlhbCAoZiBwKVxuICAgIHwgVW5idWZmZXJlZC5Eb25lKGNvbnN1bWVkLCB2KSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBEb25lKHVuY29uc3VtZWQsIHYpXG4gICAgfCBVbmJ1ZmZlcmVkLkZhaWwoY29uc3VtZWQsIG1hcmtzLCBtc2cpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZylcblxuICBsZXQgcGFyc2UgPyhpbml0aWFsX2J1ZmZlcl9zaXplPTB4MTAwMCkgcCA9XG4gICAgaWYgaW5pdGlhbF9idWZmZXJfc2l6ZSA8IDEgdGhlblxuICAgICAgZmFpbHdpdGggXCJwYXJzZTogaW52YWxpZCBhcmd1bWVudCwgaW5pdGlhbF9idWZmZXJfc2l6ZSA8IDFcIjtcbiAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLmNyZWF0ZSBpbml0aWFsX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IHJlYyBmIHAgaW5wdXQgPVxuICAgICAgQnVmZmVyaW5nLnNoaWZ0IGJ1ZmZlcmluZyBwLmNvbW1pdHRlZDtcbiAgICAgIGxldCBtb3JlIDogTW9yZS50ID1cbiAgICAgICAgbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICB8IGBFb2YgICAgICAgICAgICAtPiBDb21wbGV0ZVxuICAgICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgICBJbmNvbXBsZXRlXG4gICAgICBpblxuICAgICAgbGV0IGZvcl9yZWFkaW5nID0gQnVmZmVyaW5nLmZvcl9yZWFkaW5nIGJ1ZmZlcmluZyBpblxuICAgICAgcC5jb250aW51ZSBmb3JfcmVhZGluZyB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGZvcl9yZWFkaW5nKSBtb3JlXG4gICAgICB8PiBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgYnVmZmVyaW5nIH5mXG4gICAgaW5cbiAgICBVbmJ1ZmZlcmVkLnBhcnNlIHBcbiAgICB8PiBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgYnVmZmVyaW5nIH5mXG5cbiAgbGV0IGZlZWQgc3RhdGUgaW5wdXQgPVxuICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICB8IFBhcnRpYWwgayAtPiBrIGlucHV0XG4gICAgfCBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBGYWlsKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgbWFya3MsIG1zZylcbiAgICAgIGVuZFxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCB2KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRG9uZShCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIHYpXG4gICAgICBlbmRcblxuICBsZXQgc3RhdGVfdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IERvbmUoXywgdikgLT4gU29tZSB2XG4gICAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcbiAgICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuXG4gIGxldCBzdGF0ZV90b19yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgUGFydGlhbCBfICAgICAgICAgICAtPiBFcnJvciBcImluY29tcGxldGUgaW5wdXRcIlxuICAgIHwgRG9uZShfLCB2KSAgICAgICAgICAtPiBPayB2XG4gICAgfCBGYWlsKF8sIG1hcmtzLCBtc2cpIC0+IEVycm9yIChVbmJ1ZmZlcmVkLmZhaWxfdG9fc3RyaW5nIG1hcmtzIG1zZylcblxuICBsZXQgc3RhdGVfdG9fdW5jb25zdW1lZCA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIF8pXG4gICAgfCBGYWlsKHVuY29uc3VtZWQsIF8sIF8pIC0+IFNvbWUgdW5jb25zdW1lZFxuICAgIHwgUGFydGlhbCBfICAgICAgICAgICAgICAtPiBOb25lXG5cbmVuZFxuXG4oKiogQkVHSU46IGdldHRpbmcgaW5wdXQgKilcblxubGV0IHJlYyBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjYyA9XG4gICgqIFtwcm9tcHRdIHNob3VsZCBvbmx5IGNhbGwgW3N1Y2NdIGlmIGl0IGhhcyByZWNlaXZlZCBtb3JlIGlucHV0LiBJZiB0aGVyZVxuICAgKiBpcyBubyBjaGFuY2UgdGhhdCB0aGUgaW5wdXQgd2lsbCBncm93LCBpLmUuLCBbbW9yZSA9IENvbXBsZXRlXSwgdGhlblxuICAgKiBbcHJvbXB0XSBzaG91bGQgY2FsbCBbZmFpbF0uIE90aGVyd2lzZSAoaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGlucHV0XG4gICAqIGhhc24ndCBncm93biBidXQgW21vcmUgPSBJbmNvbXBsZXRlXSBqdXN0IHByb21wdCBhZ2Fpbi4gKilcbiAgbGV0IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyA9IElucHV0LnBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyBpbnB1dCBpblxuICBsZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAgID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAgIGlucHV0IGluXG4gICgqIFRoZSBjb250aW51YXRpb24gc2hvdWxkIG5vdCBob2xkIGFueSByZWZlcmVuY2VzIHRvIGlucHV0IGFib3ZlLiAqKVxuICBsZXQgY29udGludWUgaW5wdXQgfm9mZiB+bGVuIG1vcmUgPVxuICAgIGlmIGxlbiA8IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBmYWlsd2l0aCBcInByb21wdDogaW5wdXQgc2hydW5rIVwiO1xuICAgIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBpbnB1dCB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlczpwYXJzZXJfY29tbWl0dGVkX2J5dGVzIGluXG4gICAgaWYgbGVuID0gcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIG1hdGNoIChtb3JlIDogTW9yZS50KSB3aXRoXG4gICAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgTW9yZS5Db21wbGV0ZVxuICAgICAgfCBJbmNvbXBsZXRlIC0+IHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjXG4gICAgZWxzZVxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZVxuICBpblxuICBTdGF0ZS5QYXJ0aWFsIHsgY29tbWl0dGVkID0gSW5wdXQuYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgaW5wdXQ7IGNvbnRpbnVlIH1cblxubGV0IGRlbWFuZF9pbnB1dCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIChtb3JlIDogTW9yZS50KSB3aXRoXG4gICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJub3QgZW5vdWdoIGlucHV0XCJcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKClcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJub3QgZW5vdWdoIGlucHV0XCIgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyA9XG4gIGxldCByZWMgZ28gPVxuICAgIHsgcnVuID0gZnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwnIHN1Y2MnIC0+XG4gICAgICBpZiBwb3MnICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXQnIHRoZW5cbiAgICAgICAgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKClcbiAgICAgIGVsc2VcbiAgICAgICAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwnIHN1Y2MnXG4gICAgfVxuICBpblxuICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjXG5cbmxldCB1bnNhZmVfYXBwbHkgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZilcbiAgfVxuXG5sZXQgdW5zYWZlX2FwcGx5X29wdCBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCBJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mIHdpdGhcbiAgICB8IEVycm9yIGUgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBlXG4gICAgfCBPayAgICB4IC0+IHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSB4XG4gIH1cblxubGV0IGVuc3VyZSBuIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID0gcC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbigqKiBFTkQ6IGdldHRpbmcgaW5wdXQgKilcblxubGV0IGF0X2VuZF9vZl9pbnB1dCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF8gc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIGZhbHNlXG4gICAgZWxzZSBtYXRjaCBtb3JlIHdpdGhcbiAgICB8IENvbXBsZXRlIC0+IHN1Y2MgaW5wdXQgcG9zIG1vcmUgdHJ1ZVxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBmYWxzZVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyB0cnVlIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuZF9vZl9pbnB1dCA9XG4gIGF0X2VuZF9vZl9pbnB1dFxuICA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgIC0+IHJldHVybiAoKVxuICAgIHwgZmFsc2UgLT4gZmFpbCBcImVuZF9vZl9pbnB1dFwiXG5cbmxldCBhZHZhbmNlIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJhZHZhbmNlXCJcbiAgZWxzZVxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCAocG9zICsgbikgbW9yZSAoKSB9XG4gICAgaW5cbiAgICBlbnN1cmUgbiBwXG5cbmxldCBwb3MgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgcG9zIG1vcmUgcG9zIH1cblxubGV0IGF2YWlsYWJsZSA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlIChJbnB1dC5sZW5ndGggaW5wdXQgLSBwb3MpXG4gIH1cblxubGV0IGNvbW1pdCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBJbnB1dC5jb21taXQgaW5wdXQgcG9zO1xuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKCkgfVxuXG4oKiBEbyBub3QgdXNlIHRoaXMgaWYgW3BdIGNvbnRhaW5zIGEgW2NvbW1pdF0uICopXG5sZXQgdW5zYWZlX2xvb2thaGVhZCBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN1Y2MnIGlucHV0JyBfIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MgbW9yZScgdiBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgcGVla19jaGFyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIChTb21lIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSlcbiAgICBlbHNlIGlmIG1vcmUgPSBDb21wbGV0ZSB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChTb21lIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycpKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBOb25lIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxuKCogVGhpcyBwYXJzZXIgaXMgdG9vIGltcG9ydGFudCB0byBub3QgYmUgb3B0aW1pemVkLiBEbyBhIGN1c3RvbSBqb2IuICopXG5sZXQgcmVjIHBlZWtfY2hhcl9mYWlsID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBzdWNjIGlucHV0IHBvcyBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9XG4gICAgICAgIHBlZWtfY2hhcl9mYWlsLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHNhdGlzZnkgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0IHBvcyBtb3JlIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9XG4gICAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnIGluXG4gICAgICAgIGlmIGYgY1xuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQnIChwb3MnICsgMSkgbW9yZScgY1xuICAgICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICAgIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBjaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zID0gY1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBub3RfY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMnID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgYyA8PiBjJ1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGMnXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwibm90IGNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV9jaGFyID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpICB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGludDggaSA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSBpblxuICAgICAgaWYgYyA9IGkgbGFuZCAweGZmXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImludDggJWRcIiBpKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV91aW50OCA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKENoYXIuY29kZSBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV9pbnQ4ID1cbiAgKCogaHR0cHM6Ly9ncmFwaGljcy5zdGFuZm9yZC5lZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCNWYXJpYWJsZVNpZ25FeHRlbmRSaXNreSAqKVxuICBsZXQgcyA9IFN5cy5pbnRfc2l6ZSAtIDggaW5cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKENoYXIuY29kZSBjIGxzbCBzKSBhc3IgcykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBza2lwIGYgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBpZiBmIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKVxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgpXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJza2lwXCIgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCByZWMgY291bnRfd2hpbGUgfmluaXQgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgKHBvcyArIGluaXQpIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgbGV0IGluaXQnICAgICAgID0gaW5pdCArIGxlbiBpblxuICAgICgqIENoZWNrIGlmIHRoZSBsb29wIHRlcm1pbmF0ZWQgYmVjYXVzZSBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGlucHV0XG4gICAgICogYnVmZmVyLiBJZiBzbywgdGhlbiBwcm9tcHQgZm9yIGFkZGl0aW9uYWwgaW5wdXQgYW5kIGNvbnRpbnVlLiAqKVxuICAgIGlmIHBvcyArIGluaXQnIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgaW5pdCcpIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAoY291bnRfd2hpbGUgfmluaXQ6aW5pdCcgfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGluaXQnKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgICBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCByZWMgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IHBvcyB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgICgqIENoZWNrIGlmIHRoZSBsb29wIHRlcm1pbmF0ZWQgYmVjYXVzZSBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGlucHV0XG4gICAgICogYnVmZmVyLiBJZiBzbywgdGhlbiBwcm9tcHQgZm9yIGFkZGl0aW9uYWwgaW5wdXQgYW5kIGNvbnRpbnVlLiAqKVxuICAgIGlmIGxlbiA8IDFcbiAgICB0aGVuXG4gICAgICBpZiBwb3MgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgICB0aGVuIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIChjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICAgIGluXG4gICAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgICBlbHNlIGlmIHBvcyArIGxlbiA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAoY291bnRfd2hpbGUgfmluaXQ6bGVuIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBsZW4pIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgICBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBzdHJpbmdfIGYgcyA9XG4gICgqIFhYWChzZWxpb3BvdSk6IEluZWZmaWNpZW50LiBDb3VsZCBjaGVjayBwcmVmaXggZXF1YWxpdHkgdG8gc2hvcnQtY2lyY3VpdFxuICAgKiB0aGUgaW8uICopXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgZW5zdXJlICBsZW4gKHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mOihmdW4gYnVmZmVyIH5vZmYgfmxlbiAtPlxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICB3aGlsZSAhaSA8IGxlbiAmJiBDaGFyLmVxdWFsIChmIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IGJ1ZmZlciAob2ZmICsgIWkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmIChTdHJpbmcudW5zYWZlX2dldCBzICFpKSlcbiAgICBkb1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiBsZW4gPSAhaVxuICAgIHRoZW4gT2sgKEJpZ3N0cmluZ2FmLnN1YnN0cmluZyBidWZmZXIgfm9mZiB+bGVuKVxuICAgIGVsc2UgRXJyb3IgXCJzdHJpbmdcIikpXG5cbmxldCBzdHJpbmcgcyAgICA9IHN0cmluZ18gKGZ1biB4IC0+IHgpIHNcbmxldCBzdHJpbmdfY2kgcyA9IHN0cmluZ18gQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgc2tpcF93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG5cbmxldCB0YWtlIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlOiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmY6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nKVxuXG5sZXQgdGFrZV9iaWdzdHJpbmcgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2VfYmlnc3RyaW5nOiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmY6Qmlnc3RyaW5nYWYuY29weSlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfdGlsbCBmID1cbiAgdGFrZV9iaWdzdHJpbmdfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IHBlZWtfc3RyaW5nIG4gPVxuICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4pXG5cbmxldCB0YWtlX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2Vfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV90aWxsIGYgPVxuICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBjaG9pY2UgPyhmYWlsdXJlX21zZz1cIm5vIG1vcmUgY2hvaWNlc1wiKSBwcyA9XG4gIExpc3QuZm9sZF9yaWdodCAoPHw+KSBwcyAoZmFpbCBmYWlsdXJlX21zZylcblxubGV0IGZpeF9kaXJlY3QgZiA9XG4gIGxldCByZWMgcCA9IGxhenkgKGYgcilcbiAgYW5kIHIgPSB7IHJ1biA9IGZ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuICBpblxuICByXG5cbmxldCBmaXhfbGF6eSB+bWF4X3N0ZXBzIGYgPVxuICBsZXQgc3RlcHMgPSByZWYgbWF4X3N0ZXBzIGluXG4gIGxldCByZWMgcCA9IGxhenkgKGYgcilcbiAgYW5kIHIgPSB7IHJ1biA9IGZ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgZGVjciBzdGVwcztcbiAgICBpZiAhc3RlcHMgPCAwXG4gICAgdGhlbiAoXG4gICAgICBzdGVwcyA6PSBtYXhfc3RlcHM7XG4gICAgICBTdGF0ZS5MYXp5IChsYXp5ICgoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYykpKVxuICAgIGVsc2VcbiAgICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjXG4gICAgICAgICAgfVxuICBpblxuICByXG5cbmxldCBmaXggPSBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBOYXRpdmUgLT4gZml4X2RpcmVjdFxuICB8IEJ5dGVjb2RlIC0+IGZpeF9kaXJlY3RcbiAgfCBPdGhlciBfIC0+IGZ1biBmIC0+IGZpeF9sYXp5IH5tYXhfc3RlcHM6MjAgZlxuXG5sZXQgb3B0aW9uIHggcCA9XG4gIHAgPHw+IHJldHVybiB4XG5cbmxldCBjb25zIHggeHMgPSB4IDo6IHhzXG5cbmxldCByZWMgbGlzdCBwcyA9XG4gIG1hdGNoIHBzIHdpdGhcbiAgfCBbXSAgICAtPiByZXR1cm4gW11cbiAgfCBwOjpwcyAtPiBsaWZ0MiBjb25zIHAgKGxpc3QgcHMpXG5cbmxldCBjb3VudCBuIHAgPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJjb3VudDogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgMCAtPiByZXR1cm4gW11cbiAgICAgIHwgbiAtPiBsaWZ0MiBjb25zIHAgKGxvb3AgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgblxuXG5sZXQgbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgIChsaWZ0MiBjb25zIHAgbSkgPHw+IHJldHVybiBbXSlcblxubGV0IG1hbnkxIHAgPVxuICBsaWZ0MiBjb25zIHAgKG1hbnkgcClcblxubGV0IG1hbnlfdGlsbCBwIHQgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKHQgKj4gcmV0dXJuIFtdKSA8fD4gKGxpZnQyIGNvbnMgcCBtKSlcblxubGV0IHNlcF9ieTEgcyBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgIGxpZnQyIGNvbnMgcCAoKHMgKj4gbSkgPHw+IHJldHVybiBbXSkpXG5cbmxldCBzZXBfYnkgcyBwID1cbiAgKGxpZnQyIGNvbnMgcCAoKHMgKj4gc2VwX2J5MSBzIHApIDx8PiByZXR1cm4gW10pKSA8fD4gcmV0dXJuIFtdXG5cbmxldCBza2lwX21hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAgICgocCA+PnwgZnVuIF8gLT4gdHJ1ZSkgPHw+IHJldHVybiBmYWxzZSkgPj49IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gbVxuICAgICAgfCBmYWxzZSAtPiByZXR1cm4gKClcbiAgICApXG5cbmxldCBza2lwX21hbnkxIHAgPVxuICBwICo+IHNraXBfbWFueSBwXG5cbmxldCBlbmRfb2ZfbGluZSA9XG4gIChjaGFyICdcXG4nICo+IHJldHVybiAoKSkgPHw+IChzdHJpbmcgXCJcXHJcXG5cIiAqPiByZXR1cm4gKCkpIDw/PiBcImVuZF9vZl9saW5lXCJcblxubGV0IHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXRlID0gcmVmIHN0YXRlIGluXG4gICAgbGV0IHBhcnNlciA9XG4gICAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOihmdW4gYyAtPlxuICAgICAgICBtYXRjaCBmICFzdGF0ZSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBzdGF0ZScgLT4gc3RhdGUgOj0gc3RhdGUnOyB0cnVlKVxuICAgICAgfndpdGhfYnVmZmVyXG4gICAgICA+PnwgZnVuIHggLT4geCwgIXN0YXRlXG4gICAgaW5cbiAgICBwYXJzZXIucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyB9XG5cbmxldCBzY2FuIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHNjYW5fc3RhdGUgc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuICA+PnwgZnVuICgoKSwgc3RhdGUpIC0+IHN0YXRlXG5cbmxldCBzY2FuX3N0cmluZyBzdGF0ZSBmID1cbiAgc2NhbiBzdGF0ZSBmID4+fCBmc3RcblxubGV0IGNvbnN1bWVfd2l0aCBwIGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhcnQgPSBwb3MgaW5cbiAgICBsZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQgIGluXG4gICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPVxuICAgICAgaWYgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8PiBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0J1xuICAgICAgdGhlbiBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY29uc3VtZWQ6IHBhcnNlciBjb21taXR0ZWRcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPSBwb3MnIC0gc3RhcnQgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVkID0gSW5wdXQuYXBwbHkgaW5wdXQnIHN0YXJ0IGxlbiB+ZiBpblxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGNvbnN1bWVkKVxuICAgIGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICB9XG5cbmxldCBjb25zdW1lZCAgICAgICAgICAgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xubGV0IGNvbnN1bWVkX2JpZ3N0cmluZyBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuY29weVxuXG5sZXQgYm90aCBhIGIgPSBsaWZ0MiAoZnVuIGEgYiAtPiBhLCBiKSBhIGJcbmxldCBtYXAgdCB+ZiA9IHQgPj58IGZcbmxldCBiaW5kIHQgfmYgPSB0ID4+PSBmXG5sZXQgbWFwMiBhIGIgfmYgPSBsaWZ0MiBmIGEgYlxubGV0IG1hcDMgYSBiIGMgfmYgPSBsaWZ0MyBmIGEgYiBjXG5sZXQgbWFwNCBhIGIgYyBkIH5mID0gbGlmdDQgZiBhIGIgYyBkXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICBsZXQgbWFwMyA9IG1hcDNcbiAgICBsZXQgbWFwNCA9IG1hcDRcbiAgZW5kXG5lbmRcblxubGV0ICggbGV0KyApID0gKCA+PnwgKVxubGV0ICggbGV0KiApID0gKCA+Pj0gKVxubGV0ICggYW5kKyApID0gYm90aFxuXG5tb2R1bGUgQkUgPSBzdHJ1Y3RcbiAgKCogWFhYKHNlbGlvcG91KTogVGhlIHBhdHRlcm4gaW4gYm90aCB0aGlzIG1vZHVsZSBhbmQgW0xFXSBhcmUgYSBjb21wcm9taXNlXG4gICAqIGJldHdlZW4gZWZmaWNpZW5jeSBhbmQgY29kZSByZXVzZS4gQnkgaW5saW5pbmcgW2Vuc3VyZV0geW91IGNhbiByZWNvdmVyXG4gICAqIGFib3V0IDIgbmFub3NlY29uZHMgb24gYXZlcmFnZS4gVGhhdCBtYXkgYWRkIHVwIGluIGNlcnRhaW4gYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBUaGlzIHBhdHRlcm4gZG9lcyBub3QgYWxsb2NhdGUgaW4gdGhlIGZhc3QgKHN1Y2Nlc3MpIHBhdGguXG4gICAqICopXG4gIGxldCBpbnQxNiBuID1cbiAgICBsZXQgYnl0ZXMgPSAyIGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfaW50MTZfYmUgaW5wdXQgcG9zID0gKG4gbGFuZCAweGZmZmYpXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MTZcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQzMiBuID1cbiAgICBsZXQgYnl0ZXMgPSA0IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDMyLmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDMyX2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDMyXCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50NjQgbiA9XG4gICAgbGV0IGJ5dGVzID0gOCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQ2NC5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQ2NF9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQ2NFwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIExFID0gc3RydWN0XG4gIGxldCBpbnQxNiBuID1cbiAgICBsZXQgYnl0ZXMgPSAyIGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfaW50MTZfbGUgaW5wdXQgcG9zID0gKG4gbGFuZCAweGZmZmYpXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MTZcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQzMiBuID1cbiAgICBsZXQgYnl0ZXMgPSA0IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDMyLmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDMyX2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDMyXCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50NjQgbiA9XG4gICAgbGV0IGJ5dGVzID0gOCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQ2NC5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQ2NF9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQ2NFwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB0YWtlIG4gZiA9XG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mKVxuXG4gIGxldCBwZWVrIG4gZiA9XG4gICAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuIGYpXG5cbiAgbGV0IHRha2Vfd2hpbGUgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3doaWxlMSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZTEgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV90aWxsIGNoZWNrIGYgPVxuICAgIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoY2hlY2sgYykpIGZcbmVuZFxuXG5tb2R1bGUgQ29uc3VtZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUHJlZml4XG4gICAgfCBBbGxcbmVuZFxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIH5jb25zdW1lIHAgYnMgPVxuICBsZXQgcCA9XG4gICAgbWF0Y2ggKGNvbnN1bWUgOiBDb25zdW1lLnQpIHdpdGhcbiAgICB8IFByZWZpeCAtPiBwXG4gICAgfCBBbGwgLT4gcCA8KiBlbmRfb2ZfaW5wdXRcbiAgaW5cbiAgVW5idWZmZXJlZC5wYXJzZV9iaWdzdHJpbmcgcCBic1xuXG5sZXQgcGFyc2Vfc3RyaW5nIH5jb25zdW1lIHAgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJzICA9IEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgcyB+c3JjX29mZjowIGJzIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgcGFyc2VfYmlnc3RyaW5nIH5jb25zdW1lIHAgYnNcbiIsIigqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBBbmlsIE1hZGhhdmFwZWRkeSA8YW5pbEByZWNvaWwub3JnPlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgRGF2aWQgU2hlZXRzIDxzaGVldHNAYWx1bS5taXQuZWR1PlxuICpcbiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbiAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gKlxuICopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbnR5cGUgY29tcG9uZW50ID0gW1xuICB8IGBTY2hlbWVcbiAgfCBgQXV0aG9yaXR5XG4gIHwgYFVzZXJpbmZvICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgUGF0aFxuICB8IGBRdWVyeVxuICB8IGBRdWVyeV9rZXlcbiAgfCBgUXVlcnlfdmFsdWVcbiAgfCBgRnJhZ21lbnRcbiAgfCBgR2VuZXJpY1xuICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZykgKCogKGNvbXBvbmVudCAqIHNhZmUgY2hhcnMgKiB1bnNhZmUgY2hhcnMpICopXG5dXG5cbnR5cGUgcGN0X2VuY29kZXIgPSB7XG4gICAgc2NoZW1lOiBjb21wb25lbnQ7XG4gICAgdXNlcmluZm86IGNvbXBvbmVudDtcbiAgICBob3N0OiBjb21wb25lbnQ7XG4gICAgcGF0aDogY29tcG9uZW50O1xuICAgIHF1ZXJ5X2tleTogY29tcG9uZW50O1xuICAgIHF1ZXJ5X3ZhbHVlOiBjb21wb25lbnQ7XG4gICAgZnJhZ21lbnQ6IGNvbXBvbmVudDtcbiAgfVxuXG5sZXQgcmVjIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgPSBmdW5jdGlvblxuICB8IGxhc3Q6OltdIC0+IGZuIGJ1ZiBsYXN0XG4gIHwgZWw6OnJlc3QgLT5cbiAgICBmbiBidWYgZWw7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNlcDtcbiAgICBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmIHJlc3RcbiAgfCBbXSAtPiAoKVxuXG5sZXQgcmV2X2ludGVyamVjdCBlIGxzdCA9XG4gIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgLT4gYWNjXG4gICAgfCB4Ojp4cyAtPiBhdXggKHg6OmU6OmFjYykgeHNcbiAgaW4gbWF0Y2ggbHN0IHdpdGhcbiAgfCBbXSAgLT4gW11cbiAgfCBoOjp0IC0+IGF1eCBbaF0gdFxuXG5sZXQgY29tcGFyZV9vcHQgYyB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsICAgTm9uZSAgIC0+IDBcbiAgfCBTb21lIF8sIE5vbmUgICAtPiAxXG4gIHwgTm9uZSwgICBTb21lIF8gLT4gLTFcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBjIGEgYlxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBmIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgW10sICAgIFtdICAgIC0+ICAwXG4gIHwgXzo6XywgIFtdICAgIC0+ICAxXG4gIHwgW10sICAgIF86Ol8gIC0+IC0xXG4gIHwgeDo6eHMsIHk6OnlzIC0+XG4gICAgbWF0Y2ggZiB4IHkgd2l0aCAwIC0+IGNvbXBhcmVfbGlzdCBmIHhzIHlzIHwgYyAtPiBjXG5cbigqKiBTYWZlIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQgaW4gYSBVUklcbiAgKiBVbmZvcnR1bmF0ZWx5LCB0aGlzIHZhcmllcyBkZXBlbmRpbmcgb24gd2hpY2ggYml0IG9mIHRoZSBVUklcbiAgKiBpcyBiZWluZyBwYXJzZWQsIHNvIHRoZXJlIGFyZSBtdWx0aXBsZSB2YXJpYW50cyAoYW5kIHRoaXNcbiAgKiBzZXQgaXMgcHJvYmFibHkgbm90IGV4aGF1c3RpdmUuIFRPRE86IGNoZWNrLlxuKilcbnR5cGUgc2FmZV9jaGFycyA9IGJvb2wgYXJyYXlcblxubW9kdWxlIHR5cGUgU2NoZW1lID0gc2lnXG4gIHZhbCBzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgOiBjb21wb25lbnQgLT4gc2FmZV9jaGFyc1xuICB2YWwgbm9ybWFsaXplX2hvc3QgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBjYW5vbmljYWxpemVfcG9ydCA6IGludCBvcHRpb24gLT4gaW50IG9wdGlvblxuICB2YWwgY2Fub25pY2FsaXplX3BhdGggOiBzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljIDogU2NoZW1lID0gc3RydWN0XG4gIGxldCBzdWJfZGVsaW1zIGEgPVxuICAgIGxldCBzdWJkID0gXCIhJCYnKCkqKyw7PVwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3ViZCAtIDEgZG9cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIHN1YmQuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnMgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgMjU2IGZhbHNlIGluXG4gICAgbGV0IGFsd2F5c19zYWZlID1cbiAgICAgIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlfLi1+XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBhbHdheXNfc2FmZSAtIDEgZG9cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIGFsd2F5c19zYWZlLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBwY2hhciA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBzYWZlX2NoYXJzKSBpblxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIHRydWU7XG4gICAgYS4oQ2hhci5jb2RlICdAJykgPC0gdHJ1ZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3NjaGVtZSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gdHJ1ZTtcbiAgICBhXG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHBhdGggY29tcG9uZW50IG9mIGEgVVJJICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9wYXRoIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHBjaGFyKSBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnLycpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnkgOiBzYWZlX2NoYXJzID1cbiAgICAoKiBUT0RPOiBXaGF0IGFib3V0IHtcIiFcIixcIiRcIixcIixcIn0/IFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL2F2c20vb2NhbWwtdXJpL2NvbW1pdC8xZWYzZjFkZmI0MWJkYjRmMzNmMjIzZmZlMTZlNjJhMzM5NzU2NjFhI2RpZmYtNzQwZjJkZTUzYzllYjM2ZTk2NzBkZGZiZGI5YmE5MTRSMTcxPiAqKVxuICAgIGxldCBhID0gQXJyYXkuY29weSBwY2hhciBpblxuICAgIGEuKENoYXIuY29kZSAnLycpIDwtIHRydWU7XG4gICAgYS4oQ2hhci5jb2RlICc/JykgPC0gdHJ1ZTtcbiAgICAoKiAnJicgaXMgc2FmZSBidXQgd2Ugc2hvdWxkIGVuY29kZSBsaXRlcmFscyB0byBhdm9pZCBhbWJpZ3VpdHlcbiAgICAgICB3aXRoIHRoZSBhbHJlYWR5IHBhcnNlZCBxcyBwYXJhbXMgKilcbiAgICBhLihDaGFyLmNvZGUgJyYnKSA8LSBmYWxzZTtcbiAgICAoKiAnOycgaXMgc2FmZSBidXQgc29tZSBzeXN0ZW1zIHRyZWF0IGl0IGxpa2UgJyYnLiAqKVxuICAgIGEuKENoYXIuY29kZSAnOycpIDwtIGZhbHNlO1xuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfa2V5IDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICc9JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnLCcpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfZnJhZ21lbnQgOiBzYWZlX2NoYXJzID0gc2FmZV9jaGFyc19mb3JfcXVlcnlcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgdXNlcmluZm8gc3ViY29tcG9uZW50IG9mIGEgVVJJLlxuICAgICAgVE9ETzogdGhpcyBuZWVkcyBtb3JlIHJlc2VydmVkIGNoYXJhY3RlcnMgYWRkZWQgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3VzZXJpbmZvIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHJlYyBzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgPSBmdW5jdGlvblxuICAgIHwgYFBhdGggLT4gc2FmZV9jaGFyc19mb3JfcGF0aFxuICAgIHwgYFVzZXJpbmZvIC0+IHNhZmVfY2hhcnNfZm9yX3VzZXJpbmZvXG4gICAgfCBgUXVlcnkgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlcbiAgICB8IGBRdWVyeV9rZXkgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlfa2V5XG4gICAgfCBgUXVlcnlfdmFsdWUgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWVcbiAgICB8IGBGcmFnbWVudCAtPiBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudFxuICAgIHwgYFNjaGVtZSAtPiBzYWZlX2NoYXJzX2Zvcl9zY2hlbWVcbiAgICB8IGBDdXN0b20gKChjb21wb25lbnQgOiBjb21wb25lbnQpLCBzYWZlLCB1bnNhZmUpIC0+XG4gICAgICAgbGV0IHNhZmVfY2hhcnMgPSBBcnJheS5jb3B5IChzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgY29tcG9uZW50KSBpblxuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBzYWZlLltpXSBpblxuICAgICAgICAgc2FmZV9jaGFycy4oYykgPC0gdHJ1ZVxuICAgICAgIGRvbmU7XG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdW5zYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgdW5zYWZlLltpXSBpblxuICAgICAgICAgc2FmZV9jaGFycy4oYykgPC0gZmFsc2VcbiAgICAgICBkb25lO1xuICAgICAgIHNhZmVfY2hhcnNcbiAgICB8IGBHZW5lcmljXG4gICAgfCBfIC0+IHNhZmVfY2hhcnNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHNvID0gaHNvXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0IHBvcnQgPSBwb3J0XG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCBwYXRoID0gcGF0aFxuZW5kXG5cbm1vZHVsZSBIdHRwIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHNcblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIDgwIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcblxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW1wiL1wiXVxuICAgIHwgeCAgLT4geFxuZW5kXG5cbm1vZHVsZSBIdHRwcyA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEh0dHBcblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIDQ0MyAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5lbmRcblxubW9kdWxlIEZpbGUgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID1cbiAgICBsZXQgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzIGluXG4gICAgaWYgaHM9XCJsb2NhbGhvc3RcIiB0aGVuIFwiXCIgZWxzZSBoc1xuZW5kXG5cbm1vZHVsZSBVcm4gOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbmVuZFxuXG5sZXQgbW9kdWxlX29mX3NjaGVtZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBzIC0+IGJlZ2luIG1hdGNoIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyB3aXRoXG4gICAgICB8IFwiaHR0cFwiIC0+IChtb2R1bGUgSHR0cCA6IFNjaGVtZSlcbiAgICAgIHwgXCJodHRwc1wiICAtPiAobW9kdWxlIEh0dHBzIDogU2NoZW1lKVxuICAgICAgfCBcImZpbGVcIiAtPiAobW9kdWxlIEZpbGUgOiBTY2hlbWUpXG4gICAgICB8IFwidXJuXCIgIC0+IChtb2R1bGUgVXJuIDogU2NoZW1lKVxuICAgICAgfCBfIC0+IChtb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSlcbiAgICBlbmRcbiAgfCBOb25lIC0+IChtb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSlcblxuKCoqIFBvcnRpb25zIG9mIHRoZSBVUkwgbXVzdCBiZSBjb252ZXJ0ZWQgdG8tYW5kLWZyb20gcGVyY2VudC1lbmNvZGluZ1xuICAqIGFuZCB0aGlzIHJlYWxseSwgcmVhbGx5IHNob3VsZG4ndCBiZSBtaXhlZCB1cC4gU28gdGhpcyBQY3QgbW9kdWxlXG4gICogZGVmaW5lcyBhYnN0cmFjdCBQY3QuZW5jb2RlZCBhbmQgUGN0LmRlY29kZWQgdHlwZXMgd2hpY2ggc2V0cyB0aGVcbiAgKiBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBzdHJpbmcuICBUaGVyZSBhcmUgZnVuY3Rpb25zIHRvIFwiY2FzdFwiIHRvXG4gICogYW5kIGZyb20gdGhlc2UgYW5kIG5vcm1hbCBzdHJpbmdzLCBhbmQgdGhpcyBwcm9tb3RlcyBhIGJpdCBvZlxuICAqIGludGVybmFsIHNhZmV0eS4gIFRoZXNlIHR5cGVzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZXh0ZXJuYWxcbiAgKiBpbnRlcmZhY2UsIGFzIGNhc3RpbmcgdG8tYW5kLWZyb20gaXMgcXVpdGUgYSBiaXQgb2YgaGFzc2xlIGFuZFxuICAqIHByb2JhYmx5IG5vdCBhIGxvdCBvZiB1c2UgdG8gdGhlIGF2ZXJhZ2UgY29uc3VtZXIgb2YgdGhpcyBsaWJyYXJ5XG4qKVxubW9kdWxlIFBjdCA6IHNpZ1xuICB0eXBlIGVuY29kZWRcbiAgdHlwZSBkZWNvZGVkXG5cbiAgdmFsIGVuY29kZSA6ID9zY2hlbWU6c3RyaW5nIC0+ID9jb21wb25lbnQ6Y29tcG9uZW50IC0+IGRlY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgZGVjb2RlIDogZW5jb2RlZCAtPiBkZWNvZGVkXG5cbiAgKCogVGhlIGVtcHR5IGRlY29kZWQgc3RyaW5nICopXG4gIHZhbCBlbXB0eV9kZWNvZGVkIDogZGVjb2RlZFxuICAoKiBJZGVudGl0eSBmdW5jdGlvbnMgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGNhc3Qgd2hlbiB1c2luZyB0aGVtIGJlbG93ICopXG4gIHZhbCBjYXN0X2VuY29kZWQgOiBzdHJpbmcgLT4gZW5jb2RlZFxuICB2YWwgY2FzdF9kZWNvZGVkIDogc3RyaW5nIC0+IGRlY29kZWRcbiAgdmFsIHVuY2FzdF9lbmNvZGVkIDogZW5jb2RlZCAtPiBzdHJpbmdcbiAgdmFsIHVuY2FzdF9kZWNvZGVkIDogZGVjb2RlZCAtPiBzdHJpbmdcbiAgKCogTGlmdCBIT0ZzIGZvciBtYXBzIG92ZXIgZW5jb2RpbmdzLCBkZWNvZGluZ3MsIGFuZCBzdHJpbmdzICopXG4gIHZhbCBsaWZ0X2VuY29kZWQgOiAoZW5jb2RlZCAtPiBlbmNvZGVkKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBsaWZ0X2RlY29kZWQgOiAoZGVjb2RlZCAtPiBkZWNvZGVkKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCB1bmxpZnRfZW5jb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBlbmNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGRlY29kZWQgLT4gZGVjb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQyIDogKHN0cmluZyAtPiBzdHJpbmcgLT4gJ2EpIC0+IGRlY29kZWQgLT4gZGVjb2RlZCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgZW5jb2RlZCA9IHN0cmluZ1xuICB0eXBlIGRlY29kZWQgPSBzdHJpbmdcbiAgbGV0IGNhc3RfZW5jb2RlZCB4ID0geFxuICBsZXQgY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCBlbXB0eV9kZWNvZGVkID0gXCJcIlxuICBsZXQgdW5jYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IHVuY2FzdF9lbmNvZGVkIHggPSB4XG5cbiAgbGV0IGxpZnRfZW5jb2RlZCBmID0gZlxuICBsZXQgbGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZW5jb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkMiBmID0gZlxuXG4gICgqKiBTY2FuIGZvciByZXNlcnZlZCBjaGFyYWN0ZXJzIGFuZCByZXBsYWNlIHRoZW0gd2l0aFxuICAgICAgcGVyY2VudC1lbmNvZGVkIGVxdWl2YWxlbnRzLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IGVuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBiID1cbiAgICBsZXQgbW9kdWxlIFNjaGVtZSA9ICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgc2NoZW1lKSA6IFNjaGVtZSkgaW5cbiAgICBsZXQgc2FmZV9jaGFycyA9IFNjaGVtZS5zYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgY29tcG9uZW50IGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgc2NhbiBzdGFydCBjdXIgPVxuICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYi5bY3VyXSBpblxuICAgICAgICBpZiBzYWZlX2NoYXJzLihjKSB0aGVuXG4gICAgICAgICAgc2NhbiBzdGFydCAoY3VyKzEpXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBpZiBjdXIgPiBzdGFydCB0aGVuIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUHJpbnRmLnNwcmludGYgXCIlJSUwMlhcIiBjKTtcbiAgICAgICAgICBzY2FuIChjdXIrMSkgKGN1cisxKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBpbnRfb2ZfaGV4X2NoYXIgYyA9XG4gICAgbGV0IGMgPSBpbnRfb2ZfY2hhciAoQ2hhci51cHBlcmNhc2VfYXNjaWkgYykgLSA0OCBpblxuICAgIGlmIGMgPiA5XG4gICAgdGhlbiBpZiBjID4gMTYgJiYgYyA8IDIzXG4gICAgICB0aGVuIGMgLSA3XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcbiAgICBlbHNlIGlmIGMgPj0gMFxuICAgIHRoZW4gY1xuICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuXG4gICgqKiBTY2FuIGZvciBwZXJjZW50LWVuY29kaW5nIGFuZCBjb252ZXJ0IHRoZW0gaW50byBBU0NJSS5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWRlY29kZWQgc3RyaW5nICopXG4gIGxldCBkZWNvZGUgYiA9XG4gICAgKCogVE9ETzogU2hvdWxkIGJvdGggc3RyaWN0IGFuZCBub24tc3RyaWN0IHZlcnNpb25zIGJlIGV4cG9zZWQ/ICopXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgc2NhbiBzdGFydCBjdXIgPVxuICAgICAgaWYgY3VyID49IGxlbiB0aGVuIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpXG4gICAgICBlbHNlIGlmIGIuW2N1cl0gPSAnJScgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnXG4gICAgICAgIGVsc2UgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgc2NhbiBjdXIgY3VyXG4gICAgICAgIHwgaGlnaGJpdHMgLT4gYmVnaW5cbiAgICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXVxuICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICBsZXQgc3RhcnRfYXQgPVxuICAgICAgICAgICAgICBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgICAgICAgIHwgbG93Yml0cyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIChoaWdoYml0cyBsc2wgNCArIGxvd2JpdHMpKTtcbiAgICAgICAgICAgICAgICBjdXIrMVxuICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV07XG4gICAgICAgICAgICAgICAgY3VyXG4gICAgICAgICAgICBpbiBzY2FuIHN0YXJ0X2F0IHN0YXJ0X2F0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2Ugc2NhbiBzdGFydCAoY3VyKzEpXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5lbmRcblxuKCogUGVyY2VudCBlbmNvZGUgYSBzdHJpbmcgKilcbmxldCBwY3RfZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIHMgPVxuICBQY3QuKHVuY2FzdF9lbmNvZGVkIChlbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IChjYXN0X2RlY29kZWQgcykpKVxuXG5sZXQgcGN0X2VuY29kZXJcbiAgICAgID8oc2NoZW1lPWBTY2hlbWUpXG4gICAgICA/KHVzZXJpbmZvPWBVc2VyaW5mbylcbiAgICAgID8oaG9zdD1gSG9zdClcbiAgICAgID8ocGF0aD1gUGF0aClcbiAgICAgID8ocXVlcnlfa2V5PWBRdWVyeV9rZXkpXG4gICAgICA/KHF1ZXJ5X3ZhbHVlPWBRdWVyeV92YWx1ZSlcbiAgICAgID8oZnJhZ21lbnQ9YEZyYWdtZW50KVxuICAgICAgKCkgPVxuICB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBhdGg7IHF1ZXJ5X2tleTsgcXVlcnlfdmFsdWU7IGZyYWdtZW50IH1cblxuKCogUGVyY2VudCBkZWNvZGUgYSBzdHJpbmcgKilcbmxldCBwY3RfZGVjb2RlIHMgPSBQY3QuKHVuY2FzdF9kZWNvZGVkIChkZWNvZGUgKGNhc3RfZW5jb2RlZCBzKSkpXG5cbigqIFVzZXJpbmZvIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gaWQgKiBjcmVkZW50aWFsIHBhaXIgKilcbm1vZHVsZSBVc2VyaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKHUscCkgKHUnLHAnKSA9XG4gICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgdSB1JyB3aXRoXG4gICAgfCAwIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHAgcCdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCB1c2VyaW5mb19vZl9lbmNvZGVkIHVzID1cbiAgICBtYXRjaCBTdHJpbmdleHQuc3BsaXQgfm1heDoyIH5vbjonOicgdXMgd2l0aFxuICAgIHwgW10gLT4gKFwiXCIsTm9uZSlcbiAgICB8IFt1XSAtPiAocGN0X2RlY29kZSB1LE5vbmUpXG4gICAgfCB1OjpwOjpfIC0+IChwY3RfZGVjb2RlIHUsU29tZSAocGN0X2RlY29kZSBwKSlcblxuICBsZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgKHUscG8pID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLihcbiAgICAgIDEgKyAobGVuZ3RoIHUpICsgKG1hdGNoIHBvIHdpdGggTm9uZSAtPiAwIHwgU29tZSBwIC0+IGxlbmd0aCBwKSlcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgdSk7XG4gICAgYmVnaW4gbWF0Y2ggcG8gd2l0aCBOb25lIC0+ICgpO1xuICAgIHwgU29tZSBwIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgcClcbiAgICBlbmQ7XG4gICAgUGN0LmNhc3RfZW5jb2RlZCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbmVuZFxuXG5sZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCA9IFVzZXJpbmZvLnVzZXJpbmZvX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCA9IFVzZXJpbmZvLmVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFBhdGggc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhIGxpc3Qgb2YgcGF0aCB0b2tlbnMgKilcbm1vZHVsZSBQYXRoID0gc3RydWN0XG4gICgqIEludmFyaWFudDogZXZlcnkgZWxlbWVudCBpcyBub24temVybywgc2xhc2hlcyAoLykgb25seSBvY2N1ciBhbG9uZS4gKilcbiAgKCogWWVzLCBpdCdzIGJldHRlciB0aGlzIHdheS4gVGhpcyBtZWFucyB5b3UgY2FuIHJldGFpbiBzZXBhcmF0b3JcbiAgICAgY29udGV4dCBpbiByZWN1cnNpb24gKGUuZy4gcmVtb3ZlX2RvdF9zZWdtZW50cyBmb3IgcmVsYXRpdmUgcmVzb2x1dGlvbikuICopXG5cbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZVxuXG4gICgqIE1ha2UgYSBwYXRoIHRva2VuIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHBhdGhfb2ZfZW5jb2RlZCBwcyA9XG4gICAgbGV0IHRva2wgPSBTdHJpbmdleHQuZnVsbF9zcGxpdCBwcyB+b246Jy8nIGluXG4gICAgTGlzdC5tYXAgcGN0X2RlY29kZSB0b2tsXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40PiAqKVxuICBsZXQgcmVtb3ZlX2RvdF9zZWdtZW50cyBwID1cbiAgICBsZXQgcmV2cCA9IExpc3QucmV2IHAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXNjZW5zaW9uIG91dHAgPSBmdW5jdGlvblxuICAgICAgfCBcIi9cIjo6XCIuLlwiOjpyIHwgXCIuLlwiOjpyIC0+IGxvb3AgKGFzY2Vuc2lvbiArIDEpIG91dHAgclxuICAgICAgfCBcIi9cIjo6XCIuXCI6OnIgIHwgXCIuXCI6OnIgIC0+IGxvb3AgYXNjZW5zaW9uIG91dHAgclxuICAgICAgfCBcIi9cIjo6W10gfCBbXSB3aGVuIExpc3QuKGxlbmd0aCBwID4gMCAmJiBoZCBwID0gXCIvXCIpIC0+IFwiL1wiOjpvdXRwXG4gICAgICB8IFtdIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBMaXN0LnJldl9hcHBlbmRcbiAgICAgICAgKFwiL1wiOjoocmV2X2ludGVyamVjdCBcIi9cIiBBcnJheS4odG9fbGlzdCAobWFrZSBhc2NlbnNpb24gXCIuLlwiKSkpKSBvdXRwXG4gICAgICB8IFtdIC0+IExpc3QuKGlmIGxlbmd0aCBvdXRwID4gMCAmJiBoZCBvdXRwID0gXCIvXCIgdGhlbiB0bCBvdXRwIGVsc2Ugb3V0cClcbiAgICAgIHwgXCIvXCI6OlwiL1wiOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIChcIi9cIjo6cilcbiAgICAgIHwgXCIvXCI6Ol86OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgclxuICAgICAgfCBzOjpyIC0+IGxvb3AgMCAoczo6b3V0cCkgclxuICAgIGluIGxvb3AgMCBbXSByZXZwXG5cbiAgbGV0IGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQgcCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYyB0b2sgLT4gU3RyaW5nLmxlbmd0aCB0b2sgKyBjKSAwIHAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAtPiBmdW5jdGlvblxuICAgIHwgXCIvXCIgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnLydcbiAgICB8IHNlZyAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHNlZylcbiAgICApIFwiXCIgYnVmIHA7XG4gICAgUGN0LmNhc3RfZW5jb2RlZCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjM+ICopXG4gIGxldCBtZXJnZSBiaG9zdCBicGF0aCByZWxwYXRoID1cbiAgICBtYXRjaCBiaG9zdCwgTGlzdC5yZXYgYnBhdGggd2l0aFxuICAgIHwgU29tZSBfLCBbXSAtPiBcIi9cIjo6cmVscGF0aFxuICAgIHwgXywgKFwiL1wiOjpyYnBhdGggfCBfOjpcIi9cIjo6cmJwYXRoKSAtPiBMaXN0LnJldl9hcHBlbmQgKFwiL1wiOjpyYnBhdGgpIHJlbHBhdGhcbiAgICB8IF8sIF8gLT4gcmVscGF0aFxuZW5kXG5cbmxldCBwYXRoX29mX2VuY29kZWQgPSBQYXRoLnBhdGhfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQgPSBQYXRoLmVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUXVlcnkgc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBhc3NvYyBsaXN0IG9mIGtleS92YWx1ZXMgKilcbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuXG4gIHR5cGUga3YgPSAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3RcblxuICB0eXBlIHQgPVxuICAgIHwgS1Ygb2Yga3ZcbiAgICB8IFJhdyBvZiBzdHJpbmcgb3B0aW9uICoga3YgTGF6eS50XG5cbiAgbGV0IGNvbXBhcmUgeCB5ID0gbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBLViBrdmwsIEtWIGt2bCdcbiAgICB8IFJhdyAoXywgbGF6eSBrdmwpLCBLViBrdmwnXG4gICAgfCBLViBrdmwsIFJhdyAoXywgbGF6eSBrdmwnKSAtPlxuICAgICAgY29tcGFyZV9saXN0IChmdW4gKGssdmwpIChrJyx2bCcpIC0+XG4gICAgICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIGsgaycgd2l0aFxuICAgICAgICB8IDAgLT4gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlIHZsIHZsJ1xuICAgICAgICB8IGMgLT4gY1xuICAgICAgKSBrdmwga3ZsJ1xuICAgIHwgUmF3IChyYXcsXyksIFJhdyAocmF3JyxfKSAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSByYXcgcmF3J1xuXG4gIGxldCBmaW5kIHEgayA9IHRyeSBTb21lIChMaXN0LmFzc29jIGsgcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBzcGxpdF9xdWVyeSBxcyA9XG4gICAgbGV0IGVscyA9IFN0cmluZ2V4dC5zcGxpdCB+b246JyYnIHFzIGluXG4gICAgKCogUmVwbGFjZSBhICsgaW4gYSBxdWVyeSBzdHJpbmcgd2l0aCBhIHNwYWNlIGluLXBsYWNlICopXG4gICAgbGV0IHBsdXNfdG9fc3BhY2UgcyA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgcyBpblxuICAgICAgZm9yIGkgPSAwIHRvIEJ5dGVzLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBpZiBCeXRlcy5nZXQgcyBpID0gJysnIHRoZW4gQnl0ZXMuc2V0IHMgaSAnICdcbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCAoazo6djo6Xyk6OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLFxuICAgICAgICAgICAgICAgIChtYXRjaCBTdHJpbmdleHQuc3BsaXQgfm9uOicsJyAocGx1c190b19zcGFjZSB2KSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gW1wiXCJdIHwgbCAtPiBsKSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtrXTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssIFtdIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW106OnRsIC0+IGxvb3AgKChcIlwiLCBbXSk6OmFjYykgdGxcbiAgICAgIHwgW10gLT4gYWNjXG4gICAgaW5cbiAgICBtYXRjaCBlbHMgd2l0aFxuICAgIHwgW10gIC0+IFtcIlwiLFtdXVxuICAgIHwgZWxzIC0+IGxvb3AgW11cbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBlbCAtPiBTdHJpbmdleHQuc3BsaXQgfm9uOic9JyBlbCB+bWF4OjIpIGVscylcblxuICAoKiBNYWtlIGEgcXVlcnkgdHVwbGUgbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcXVlcnlfb2ZfZW5jb2RlZCBxcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKGssIHYpIC0+IChwY3RfZGVjb2RlIGssIExpc3QubWFwIHBjdF9kZWNvZGUgdikpXG4gICAgICAoc3BsaXRfcXVlcnkgcXMpXG5cbiAgKCogQXNzZW1ibGUgYSBxdWVyeSBzdHJpbmcgc3VpdGFibGUgZm9yIHB1dHRpbmcgaW50byBhIFVSSS5cbiAgICogVHVwbGUgaW5wdXRzIGFyZSBwZXJjZW50IGRlY29kZWQgYW5kIHdpbGwgYmUgZW5jb2RlZCBieVxuICAgKiB0aGlzIGZ1bmN0aW9uLlxuICAqKVxuICBsZXQgZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgKGssdikgLT5cbiAgICAgICAgYSArIChTdHJpbmcubGVuZ3RoIGspXG4gICAgICAgICsgKExpc3QuZm9sZF9sZWZ0IChmdW4gYSBzIC0+IGErKFN0cmluZy5sZW5ndGggcykrMSkgMCB2KSArIDIpICgtMSkgbCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIChrLHYpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfa2V5IGspO1xuICAgICAgICBpZiB2IDw+IFtdIHRoZW4gKFxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz0nO1xuICAgICAgICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIHMgLT5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAgICAgICAgICAgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X3ZhbHVlIHMpXG4gICAgICAgICAgICApIFwiLFwiIGJ1ZiB2KVxuICAgICAgKSBcIiZcIiBidWYgbDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IG9mX3JhdyBxcyA9XG4gICAgbGV0IGxhenlfcXVlcnkgPSBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gcXVlcnlfb2ZfZW5jb2RlZCBxcykgaW5cbiAgICBSYXcgKFNvbWUgcXMsIGxhenlfcXVlcnkpXG5cbiAgbGV0IGt2ID0gZnVuY3Rpb24gUmF3IChfLCBsYXp5IGt2KSB8IEtWIGt2IC0+IGt2XG5lbmRcblxubGV0IHF1ZXJ5X29mX2VuY29kZWQgPSBRdWVyeS5xdWVyeV9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lID0gUXVlcnkuZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lXG5cbigqIFR5cGUgb2YgdGhlIFVSSSwgd2l0aCBtb3N0IGJpdHMgYmVpbmcgb3B0aW9uYWwgKilcbnR5cGUgdCA9IHtcbiAgc2NoZW1lOiBQY3QuZGVjb2RlZCBvcHRpb247XG4gIHVzZXJpbmZvOiBVc2VyaW5mby50IG9wdGlvbjtcbiAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYEhvc3Qgb2YgUGN0LmRlY29kZWRdIG9wdGlvbiA7XG4gIHBvcnQ6IGludCBvcHRpb247XG4gIHBhdGg6IFBhdGgudDtcbiAgcXVlcnk6IFF1ZXJ5LnQ7XG4gIGZyYWdtZW50OiBQY3QuZGVjb2RlZCBvcHRpb247XG59XG5cbmxldCBlbXB0eSA9IHtcbiAgc2NoZW1lID0gTm9uZTtcbiAgdXNlcmluZm8gPSBOb25lO1xuICBob3N0ID0gTm9uZTtcbiAgcG9ydCA9IE5vbmU7XG4gIHBhdGggPSBbXTtcbiAgcXVlcnkgPSBRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pO1xuICBmcmFnbWVudCA9IE5vbmU7XG59XG5cbmxldCBjb21wYXJlX2RlY29kZWQgPSBQY3QudW5saWZ0X2RlY29kZWQyIFN0cmluZy5jb21wYXJlXG5sZXQgY29tcGFyZV9kZWNvZGVkX29wdCA9IGNvbXBhcmVfb3B0IGNvbXBhcmVfZGVjb2RlZFxubGV0IGNvbXBhcmVfaG9zdCBoMSBoMiA9XG4gIG1hdGNoIGgxLCBoMiB3aXRoXG4gIHwgYElwdjRfbGl0ZXJhbCBpcDEsIGBJcHY0X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSXB2Nl9saXRlcmFsIGlwMSwgYElwdjZfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBIb3N0IGgxLCBgSG9zdCBoMiAtPiBjb21wYXJlX2RlY29kZWQgaDEgaDJcbiAgfCBfIC0+IC0xXG5sZXQgY29tcGFyZV9ob3N0X29wdCA9IGNvbXBhcmVfb3B0IGNvbXBhcmVfaG9zdFxuXG5sZXQgY29tcGFyZSB0IHQnID1cbiAgKG1hdGNoIGNvbXBhcmVfaG9zdF9vcHQgdC5ob3N0IHQnLmhvc3Qgd2l0aFxuICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfZGVjb2RlZF9vcHQgdC5zY2hlbWUgdCcuc2NoZW1lIHdpdGhcbiAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IChmdW4gcCBwJyAtPlxuICAgICAgaWYgcCA8IHAnIHRoZW4gLTEgZWxzZSBpZiBwID4gcCcgdGhlbiAxIGVsc2UgMFxuICAgICkgdC5wb3J0IHQnLnBvcnQgd2l0aFxuICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCBVc2VyaW5mby5jb21wYXJlIHQudXNlcmluZm8gdCcudXNlcmluZm8gd2l0aFxuICAgICAgICB8IDAgLT4gKG1hdGNoIFBhdGguY29tcGFyZSB0LnBhdGggdCcucGF0aCB3aXRoXG4gICAgICAgICAgfCAwIC0+IChtYXRjaCBRdWVyeS5jb21wYXJlIHQucXVlcnkgdCcucXVlcnkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfZGVjb2RlZF9vcHQgdC5mcmFnbWVudCB0Jy5mcmFnbWVudFxuICAgICAgICAgICAgfCBjIC0+IGMpXG4gICAgICAgICAgfCBjIC0+IGMpXG4gICAgICAgIHwgYyAtPiBjKVxuICAgICAgfCBjIC0+IGMpXG4gICAgfCBjIC0+IGMpXG4gIHwgYyAtPiBjKVxuXG5sZXQgZXF1YWwgdCB0JyA9IGNvbXBhcmUgdCB0JyA9IDBcblxubGV0IHVuY2FzdF9vcHQgPSBmdW5jdGlvblxuICB8IFNvbWUgaCAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IG5vcm1hbGl6ZSBzY2hlbSB1cmkgPVxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCBzY2hlbSkpIDogU2NoZW1lKSBpblxuICBsZXQgZG9iIGYgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IFNvbWUgKFBjdC51bmxpZnRfZGVjb2RlZCBmIHgpXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgaW4ge3VyaSB3aXRoXG4gICAgICBzY2hlbWU9ZG9iIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgdXJpLnNjaGVtZTtcbiAgICAgIGhvc3Q9IG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgICAgICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBJcHY0X2xpdGVyYWwgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCBob3N0KSlcbiAgICAgICB8IFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBJcHY2X2xpdGVyYWwgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCBob3N0KSlcbiAgICAgICB8IFNvbWUgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IChQY3QudW5jYXN0X2RlY29kZWQgaG9zdCkpKSlcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB9XG5cbigqKiBDb252ZXJ0IGEgVVJJIHN0cnVjdHVyZSBpbnRvIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZ1xuICAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4zPlxuKilcbmxldCB0b19zdHJpbmcgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID1cbiAgbGV0IHNjaGVtZSA9IG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgIHwgU29tZSBzIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBzKVxuICAgIHwgTm9uZSAtPiBOb25lIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICAoKiBQZXJjZW50IGVuY29kZSBhIGRlY29kZWQgc3RyaW5nIGFuZCBhZGQgaXQgdG8gdGhlIGJ1ZmZlciAqKVxuICBsZXQgYWRkX3BjdF9zdHJpbmcgPyhjb21wb25lbnQ9YFBhdGgpIHggPVxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUGN0LnVuY2FzdF9lbmNvZGVkIChQY3QuZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB4KSlcbiAgaW5cbiAgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIHggLT5cbiAgICAgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5zY2hlbWUgeDtcbiAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOidcbiAgKTtcbiAgKCogVVJJIGhhcyBhIGhvc3QgaWYgYW55IGhvc3QtcmVsYXRlZCBjb21wb25lbnQgaXMgc2V0LiBEZWZhdWx0cyB0byBcIlwiLiAqKVxuICBpZiAobWF0Y2ggdXJpLnVzZXJpbmZvLCB1cmkuaG9zdCwgdXJpLnBvcnQgd2l0aFxuICB8IFNvbWUgXywgXywgXyB8IF8sIFNvbWUgXywgXyB8IF8sIF8sIFNvbWUgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIvL1wiO1xuICAobWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgdXNlcmluZm8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvKSk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnQCdcbiAgKTtcbiAgKG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgKGBIb3N0IGhvc3QpIC0+XG4gICAgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5ob3N0IGhvc3Q7XG4gIHxTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBob3N0XG4gIHxTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdbJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBob3N0O1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXSdcbiAgKTtcbiAgKG1hdGNoIHVyaS5wb3J0IHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgcG9ydCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoc3RyaW5nX29mX2ludCBwb3J0KVxuICApO1xuICAobWF0Y2ggdXJpLnBhdGggd2l0aCAoKiBIYW5kbGUgcmVsYXRpdmUgcGF0aHMgY29ycmVjdGx5ICopXG4gIHwgW10gLT4gKClcbiAgfCBcIi9cIjo6XyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUGN0LnVuY2FzdF9lbmNvZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgfCBmaXJzdF9zZWdtZW50OjpfIC0+XG4gICAgKG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgICAgfCBTb21lIF8gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnLydcbiAgICAgfCBOb25lIC0+XG4gICAgICAgKCogZW5zdXJlIHJvdW5kdHJpcCBieSBmb3JjaW5nIHJlbGF0aXZlIHBhdGggaW50ZXJwcmV0YXRpb24gbm90IHNjaGVtZSAqKVxuICAgICAgIG1hdGNoIFN0cmluZ2V4dC5maW5kX2Zyb20gZmlyc3Rfc2VnbWVudCB+cGF0dGVybjpcIjpcIiB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIF8gLT4gbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLi9cIlxuICAgICk7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICApO1xuICBRdWVyeS4obWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgICB8IFJhdyAoTm9uZSxfKSB8IEtWIFtdIC0+ICgpXG4gICAgfCBSYXcgKF8sbGF6eSBxKSB8IEtWIHEgLT4gKCogbm9ybWFsaXplIGUuZy4gcGVyY2VudCBjYXBpdGFsaXphdGlvbiAqKVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSB+cGN0X2VuY29kZXIgcSlcbiAgKTtcbiAgKG1hdGNoIHVyaS5mcmFnbWVudCB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgZiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcjJzsgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5mcmFnbWVudCBmXG4gICk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuKCogVmFyaW91cyBhY2Nlc3NvciBmdW5jdGlvbnMsIGFzIHRoZSBleHRlcm5hbCB1cmkgdHlwZSBpcyBhYnN0cmFjdCAgKilcbmxldCBnZXRfZGVjb2RlZF9vcHQgPSBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfFNvbWUgeCAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgeClcbmxldCBzY2hlbWUgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5zY2hlbWVcbmxldCB3aXRoX3NjaGVtZSB1cmkgPVxuICBmdW5jdGlvblxuICB8U29tZSBzY2hlbWUgLT4geyB1cmkgd2l0aCBzY2hlbWU9U29tZSAoUGN0LmNhc3RfZGVjb2RlZCBzY2hlbWUpIH1cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBzY2hlbWU9Tm9uZSB9XG5cbmxldCBob3N0IHVyaSA9XG4gIG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IFNvbWUgaFxuICB8IFNvbWUgKGBIb3N0IGgpIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG5sZXQgaG9zdF93aXRoX2RlZmF1bHQgPyhkZWZhdWx0PVwibG9jYWxob3N0XCIpIHVyaSA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfE5vbmUgLT4gZGVmYXVsdFxuICB8U29tZSBoIC0+IGhcblxubGV0IHVzZXJpbmZvID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1c2VyaW5mbyAtPiBTb21lIChQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBlbmNvZGVkX29mX3VzZXJpbmZvIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm9cbiAgICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3VzZXJpbmZvIH5zY2hlbWU6KFBjdC51bmNhc3RfZGVjb2RlZCBzKSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvKSlcbmxldCB3aXRoX3VzZXJpbmZvIHVyaSB1c2VyaW5mbyA9XG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgdXNlcmluZm89dXNlcmluZm8gfVxuICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cblxubGV0IHVzZXIgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lICh1c2VyLCBfKSAtPiBTb21lIHVzZXJcblxubGV0IHBhc3N3b3JkIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUpIC0+IE5vbmVcbiAgfCBTb21lIChfLCBTb21lIHBhc3MpIC0+IFNvbWUgcGFzc1xubGV0IHdpdGhfcGFzc3dvcmQgdXJpIHBhc3N3b3JkID1cbiAgbGV0IHJlc3VsdCB1c2VyaW5mbyA9IG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgdXNlcmluZm89dXNlcmluZm8gfVxuICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuICBpblxuICBtYXRjaCB1cmkudXNlcmluZm8sIHBhc3N3b3JkIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHVyaVxuICB8IE5vbmUsIFNvbWUgXyAtPiByZXN1bHQgKFNvbWUgKFwiXCIscGFzc3dvcmQpKVxuICB8IFNvbWUgKHVzZXIsXyksIF8gLT4gcmVzdWx0IChTb21lICh1c2VyLCBwYXNzd29yZCkpXG5cbmxldCBwb3J0IHVyaSA9IHVyaS5wb3J0XG5sZXQgd2l0aF9wb3J0IHVyaSBwb3J0ID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHBvcnQ9cG9ydCB9XG4gIHwgTm9uZSAtPiBiZWdpblxuICAgICBtYXRjaCBwb3J0IHdpdGhcbiAgICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Ob25lOyBwb3J0PU5vbmUgfVxuICAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyBwb3J0PXBvcnQgfVxuICBlbmRcblxuKCogUmV0dXJuIHRoZSBwYXRoIGNvbXBvbmVudCAqKVxubGV0IHBhdGggPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgfCBOb25lIC0+IGVuY29kZWRfb2ZfcGF0aCB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGhcbiAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl9wYXRoIH5zY2hlbWU6KFBjdC51bmNhc3RfZGVjb2RlZCBzKSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpXG5sZXQgd2l0aF9wYXRoIHVyaSBwYXRoID1cbiAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcGF0aCBpblxuICBtYXRjaCBob3N0IHVyaSwgcGF0aCB3aXRoXG4gIHwgTm9uZSwgXyB8IFNvbWUgXywgXCIvXCI6Ol8gfCBTb21lIF8sIFtdIC0+IHsgdXJpIHdpdGggcGF0aD1wYXRoIH1cbiAgfCBTb21lIF8sIF8gIC0+IHsgdXJpIHdpdGggcGF0aD1cIi9cIjo6cGF0aCB9XG5cbmxldCBmcmFnbWVudCB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLmZyYWdtZW50XG5sZXQgd2l0aF9mcmFnbWVudCB1cmkgPVxuICBmdW5jdGlvblxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PU5vbmUgfVxuICB8U29tZSBmcmFnIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9U29tZSAoUGN0LmNhc3RfZGVjb2RlZCBmcmFnKSB9XG5cbmxldCBxdWVyeSB1cmkgPSBRdWVyeS5rdiB1cmkucXVlcnlcbmxldCB2ZXJiYXRpbV9xdWVyeSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBRdWVyeS4obWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgfCBSYXcgKHFzLF8pIC0+IHFzXG4gIHwgS1YgW10gLT4gTm9uZVxuICB8IEtWIGt2IC0+IFNvbWUgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZTooc2NoZW1lIHVyaSkgfnBjdF9lbmNvZGVyIGt2KVxuKVxubGV0IGdldF9xdWVyeV9wYXJhbScgdXJpIGsgPSBRdWVyeS4oZmluZCAoa3YgdXJpLnF1ZXJ5KSBrKVxubGV0IGdldF9xdWVyeV9wYXJhbSB1cmkgayA9XG4gIG1hdGNoIGdldF9xdWVyeV9wYXJhbScgdXJpIGsgd2l0aFxuICB8Tm9uZSAtPiBOb25lXG4gIHxTb21lIHYgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIixcIiB2KVxuXG5sZXQgd2l0aF9xdWVyeSB1cmkgcXVlcnkgPSB7IHVyaSB3aXRoIHF1ZXJ5PVF1ZXJ5LktWIHF1ZXJ5IH1cbmxldCBxX3MgcSA9IExpc3QubWFwIChmdW4gKGssdikgLT4gayxbdl0pIHFcbmxldCB3aXRoX3F1ZXJ5JyB1cmkgcXVlcnkgPSB3aXRoX3F1ZXJ5IHVyaSAocV9zIHF1ZXJ5KVxubGV0IGFkZF9xdWVyeV9wYXJhbSB1cmkgcCA9IFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWIChwOjooa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW0nIHVyaSAoayx2KSA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgoayxbdl0pOjooa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW1zIHVyaSBwcyA9IFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWIChwc0Aoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW1zJyB1cmkgcHMgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKHFfcyBwcylAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgcmVtb3ZlX3F1ZXJ5X3BhcmFtIHVyaSBrID0gUXVlcnkuKFxuICB7IHVyaSB3aXRoIHF1ZXJ5PUtWIChMaXN0LmZpbHRlciAoZnVuIChrJyxfKSAtPiBrPD5rJykgKGt2IHVyaS5xdWVyeSkpIH1cbilcblxuKCogQ29uc3RydWN0IGVuY29kZWQgcGF0aCBhbmQgcXVlcnkgY29tcG9uZW50cyAqKVxubGV0IHBhdGhfYW5kX3F1ZXJ5IHVyaSA9XG4gIG1hdGNoIChwYXRoIHVyaSksIChxdWVyeSB1cmkpIHdpdGhcbiAgfFwiXCIsIFtdIC0+IFwiL1wiICgqIFRPRE86IFdoYXQgYWJvdXQgc2FtZSBkb2N1bWVudD8gKC8pICopXG4gIHxcIlwiLCBxIC0+ICgqIFRPRE86IFdoYXQgYWJvdXQgc2FtZSBkb2N1bWVudD8gKC8pICopXG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiLz8lc1wiIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcbiAgfHAsIFtdIC0+IHBcbiAgfHAsIHEgLT5cbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcz8lc1wiIHAgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuXG4oKiBUT0RPOiBmdW5jdGlvbnMgdG8gYWRkIGFuZCByZW1vdmUgZnJvbSBhIFVSSSAqKVxuXG4oKiBSZXNvbHZlIGEgVVJJIHdydCBhIGJhc2UgVVJJIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yPiAqKVxubGV0IHJlc29sdmUgc2NoZW0gYmFzZSB1cmkgPVxuICBsZXQgc2NoZW0gPSBTb21lIChQY3QuY2FzdF9kZWNvZGVkIChtYXRjaCBzY2hlbWUgYmFzZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gIHNjaGVtXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICkpIGluXG4gIG5vcm1hbGl6ZSBzY2hlbVxuICAgIFBhdGguKG1hdGNoIHNjaGVtZSB1cmksIHVzZXJpbmZvIHVyaSwgaG9zdCB1cmkgd2l0aFxuICAgIHwgU29tZSBfLCBfLCBfIC0+XG4gICAgICB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgU29tZSBfLCBfXG4gICAgfCBOb25lLCBfLCBTb21lIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT5cbiAgICAgIGxldCB1cmkgPSB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyB1c2VyaW5mbz1iYXNlLnVzZXJpbmZvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWJhc2UuaG9zdDsgcG9ydD1iYXNlLnBvcnR9IGluXG4gICAgICBsZXQgcGF0aF9zdHIgPSBwYXRoIHVyaSBpblxuICAgICAgaWYgcGF0aF9zdHI9XCJcIlxuICAgICAgdGhlbiB7IHVyaSB3aXRoXG4gICAgICAgICAgICAgcGF0aD1iYXNlLnBhdGg7XG4gICAgICAgICAgICAgcXVlcnk9bWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgICAgIHwgUXVlcnkuUmF3IChOb25lLF8pIHwgUXVlcnkuS1YgW10gLT4gYmFzZS5xdWVyeVxuICAgICAgICAgICAgICAgfCBfIC0+IHVyaS5xdWVyeVxuICAgICAgICAgICB9XG4gICAgICBlbHNlIGlmIHBhdGhfc3RyLlswXT0nLydcbiAgICAgIHRoZW4ge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICAgIGVsc2Uge3VyaSB3aXRoXG4gICAgICAgIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyAobWVyZ2UgYmFzZS5ob3N0IGJhc2UucGF0aCB1cmkucGF0aCk7XG4gICAgICB9XG4gICAgKVxuXG5sZXQgY2Fub25pY2FsaXplIHVyaSA9XG4gIGxldCB1cmkgPSByZXNvbHZlIFwiXCIgZW1wdHkgdXJpIGluXG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHVyaS5zY2hlbWUpKSA6IFNjaGVtZSkgaW5cbiAgeyB1cmkgd2l0aFxuICAgIHBvcnQ9U2NoZW1lLmNhbm9uaWNhbGl6ZV9wb3J0IHVyaS5wb3J0O1xuICAgIHBhdGg9U2NoZW1lLmNhbm9uaWNhbGl6ZV9wYXRoIHVyaS5wYXRoO1xuICB9XG5cbmxldCBwcCBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5sZXQgcHBfaHVtIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcblxubW9kdWxlIFBhcnNlciA9IHN0cnVjdFxuICBvcGVuIEFuZ3N0cm9tXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhcl9saXN0IGNoYXJzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHN0cmluZ19vZl9jaGFyIGNoYXJzKVxuXG4gIGxldCBzY2hlbWUgPVxuICAgIGxpZnRcbiAgICAgIChmdW4gcyAtPiBTb21lIChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICh0YWtlX3doaWxlIChmdW4gYyAtPiBjIDw+ICc6JyAmJiBjIDw+ICcvJyAmJiBjIDw+ICc/JyAmJiBjIDw+ICcjJylcbiAgICAgIDwqIGNoYXIgJzonKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBpc19kaWdpdCA9IGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICBsZXQgaGV4X2RpZ2l0ID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IGhleGFkZWNpbWFsID0gbGlmdCBzdHJpbmdfb2ZfY2hhcl9saXN0IChtYW55IGhleF9kaWdpdClcblxuICBsZXQgY19kb3QgPSBjaGFyICcuJ1xuXG4gIGxldCBjX2F0ID0gY2hhciAnQCdcblxuICBsZXQgY19jb2xvbiA9IGNoYXIgJzonXG5cbiAgbGV0IGRlY19vY3RldCA9XG4gICAgdGFrZV93aGlsZTEgKGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpID4+PSBmdW4gbnVtIC0+XG4gICAgaWYgaW50X29mX3N0cmluZyBudW0gPCAyNTYgdGhlblxuICAgICAgcmV0dXJuIG51bVxuICAgIGVsc2VcbiAgICAgIGZhaWwgXCJpbnZhbGlkIG9jdGVjdFwiXG5cbiAgbGV0IGlwdjRfYWRkcmVzcyA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4gdGhyZWUgb25lIC0+IFN0cmluZy5jb25jYXQgXCIuXCIgdGhyZWUgXiBcIi5cIiBeIG9uZSlcbiAgICAgIChjb3VudCAzIChkZWNfb2N0ZXQgPCogY19kb3QpKVxuICAgICAgZGVjX29jdGV0XG5cbiAgKCogLS0gYWZ0ZXIgZG91YmxlIGNvbG9uLCBJUHY0IGRvdHRlZCBub3RhdGlvbiBjb3VsZCBhcHBlYXIgYW55d2hlcmUgKilcbiAgbGV0IGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgZml4IChmdW4gZiAtPlxuICAgICAgICBsaXN0IFsgaXB2NF9hZGRyZXNzIF1cbiAgICAgICAgPHw+IGxpZnQyIChmdW4geCB5IC0+IHggOjogeSkgaGV4YWRlY2ltYWwgKGNfY29sb24gKj4gZiA8fD4gcmV0dXJuIFtdKSlcblxuICBsZXQgZG91YmxlX2NvbG9uIGNvdW50ID1cbiAgICBhZnRlcl9kb3VibGVfY29sb24gPj49IChmdW4gcmVzdCAtPlxuICAgIGxldCBmaWxsZXJfbGVuZ3RoID0gOCAtIGNvdW50IC0gTGlzdC5sZW5ndGggcmVzdCBpblxuICAgIGlmIGZpbGxlcl9sZW5ndGggPD0gMCB0aGVuXG4gICAgICBmYWlsIFwidG9vIG1hbnkgcGFydHMgaW4gSVB2NiBhZGRyZXNzXCJcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKFwiXCIgOjogcmVzdCkpXG4gICAgPHw+IHJldHVybiBbXCJcIl1cblxuICBsZXQgcmVjIHBhcnQgPSBmdW5jdGlvblxuICAgIHwgNyAtPlxuICAgICAgKCogbWF4IDggcGFydHMgaW4gYW4gSVB2NiBhZGRyZXNzICopXG4gICAgICBsaWZ0IChmdW4geCAtPiBbIHggXSkgaGV4YWRlY2ltYWxcbiAgICB8IDYgLT5cbiAgICAgICgqIGFmdGVyIDYgcGFydHMgaXQgY291bGQgZW5kIGluIElQdjQgZG90dGVkIG5vdGF0aW9uICopXG4gICAgICBsaXN0IFsgaXB2NF9hZGRyZXNzIF0gPHw+IGhleF9wYXJ0IDZcbiAgICB8IG4gLT5cbiAgICAgIGhleF9wYXJ0IG5cblxuICBhbmQgaGV4X3BhcnQgbiA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4geCB5IC0+IHggOjogeSlcbiAgICAgIGhleGFkZWNpbWFsXG4gICAgICAoY19jb2xvbiAqPiAoY19jb2xvbiAqPiBkb3VibGVfY29sb24gKG4gKyAxKSA8fD4gcGFydCAobiArIDEpKSlcblxuICBsZXQgcmVjIHNwbGl0X3dpdGggZiB4cyA9XG4gICAgbWF0Y2ggeHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIFtdLCBbXVxuICAgIHwgeSA6OiB5cyAtPlxuICAgICAgaWYgZiB5IHRoZW5cbiAgICAgICAgbGV0IHpzLCB0cyA9IHNwbGl0X3dpdGggZiB5cyBpblxuICAgICAgICB5IDo6IHpzLCB0c1xuICAgICAgZWxzZVxuICAgICAgICBbXSwgeHNcblxuICBsZXQgaXB2NiA9XG4gICAgbGV0IGZvcm1hdF9hZGRyIHNlZ21lbnRzID1cbiAgICAgIGxldCBiZWZvcmVfZG91YmxlX2NvbG9uLCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgICAgICBzcGxpdF93aXRoIChmdW4gc2VnbWVudCAtPiBzZWdtZW50IDw+IFwiXCIpIHNlZ21lbnRzXG4gICAgICBpblxuICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5jb25jYXQgXCI6XCIgYmVmb3JlX2RvdWJsZV9jb2xvbiBpblxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIG1hdGNoIGFmdGVyX2RvdWJsZV9jb2xvbiB3aXRoXG4gICAgICAgIHwgXCJcIiA6OiB4cyAtPlxuICAgICAgICAgIGJlZm9yZSBeIFwiOjpcIiBeIFN0cmluZy5jb25jYXQgXCI6XCIgeHNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgYmVmb3JlXG4gICAgICBpblxuICAgICAgcmVzXG4gICAgaW5cbiAgICBsaWZ0IGZvcm1hdF9hZGRyIChjX2NvbG9uICo+IGNfY29sb24gKj4gZG91YmxlX2NvbG9uIDAgPHw+IHBhcnQgMClcblxuICBsZXQgaXB2Nl9hZGRyZXNzID1cbiAgICAoY2hhciAnWycpICo+IGlwdjYgPCogKGNoYXIgJ10nKVxuXG4gIGxldCBwY3RfZW5jb2RlZCA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4gcGN0IGRpZ2l0cyAtPiBzdHJpbmdfb2ZfY2hhcl9saXN0IChwY3QgOjogZGlnaXRzKSlcbiAgICAgIChjaGFyICclJylcbiAgICAgIChjb3VudCAyIGhleF9kaWdpdClcblxuICBsZXQgc3ViX2RlbGltcyA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnIScgfCAnJCcgfCAnJicgfCAnXFwnJyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICcsJyB8ICc7JyB8ICc9JyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IHVucmVzZXJ2ZWQgPVxuICAgICgqIFwiW0EtWmEtejAtOS0uX35dXCIgKilcbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICctJyB8ICcuJyB8ICdfJyB8ICd+JyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IHJlZ19uYW1lID1cbiAgICBsaWZ0XG4gICAgICAoU3RyaW5nLmNvbmNhdCBcIlwiKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIF0pKVxuXG4gIGxldCBob3N0ID1cbiAgICBjaG9pY2VcbiAgICAgIFsgaXB2NF9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjRfbGl0ZXJhbCBoKVxuICAgICAgOyBpcHY2X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2Nl9saXRlcmFsIGgpXG4gICAgICA7IHJlZ19uYW1lID4+fCAoZnVuIHMgLT4gYEhvc3QgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKCogVE9ETyhkaW5vc2F1cmUpOiBBY2NvcmRpbmcgdG8gUkZDMzk4NjpcblxuICAgICAgICAgaG9zdCAgICAgICAgPSBJUC1saXRlcmFsIC8gSVB2NGFkZHJlc3MgLyByZWctbmFtZVxuICAgICAgICAgSVAtbGl0ZXJhbCAgPSBcIltcIiAoIElQdjZhZGRyZXNzIC8gSVB2RnV0dXJlICApIFwiXVwiXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcblxuICAgICAgICAgSVB2RnV0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZC4gV2Ugc2hvdWxkIGhhbmRsZSBpdDpcblxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG4gICAgICAgKilcbiAgICAgIF1cblxuICBsZXQgdXNlcmluZm8gPVxuICAgIGxpZnRcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgcyA9IFN0cmluZy5jb25jYXQgXCJcIiB4IGluXG4gICAgICAgIFNvbWUgKFVzZXJpbmZvLnVzZXJpbmZvX29mX2VuY29kZWQgcykpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gY19jb2xvblxuICAgICAgICAgICAgXSlcbiAgICAgIDwqIGNfYXQpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IHBvcnQgPVxuICAgIHBlZWtfY2hhciA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgJzonIC0+XG4gICAgICBjX2NvbG9uICo+IHRha2Vfd2hpbGUgaXNfZGlnaXQgPj58IGZ1biBwb3J0IC0+XG4gICAgICBsZXQgZGVjb2RlZCA9IFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcG9ydCkgaW5cbiAgICAgICh0cnkgU29tZSAoaW50X29mX3N0cmluZyAoUGN0LnVuY2FzdF9kZWNvZGVkIGRlY29kZWQpKSB3aXRoIF8gLT4gTm9uZSlcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgIHJldHVybiBOb25lXG5cbiAgbGV0IGF1dGhvcml0eSA9XG4gICAgc3RyaW5nIFwiLy9cIlxuICAgICo+IGxpZnQzXG4gICAgICAgICAoZnVuIHVzZXJpbmZvIGhvc3QgcG9ydCAtPlxuICAgICAgICAgICB1c2VyaW5mbywgU29tZSBob3N0LCBwb3J0KVxuICAgICAgICAgdXNlcmluZm9cbiAgICAgICAgIGhvc3RcbiAgICAgICAgIHBvcnRcbiAgICA8fD4gcmV0dXJuIChOb25lLCBOb25lLCBOb25lKVxuXG4gIGxldCBwYXRoID1cbiAgICBsaWZ0XG4gICAgICBQYXRoLnBhdGhfb2ZfZW5jb2RlZFxuICAgICAgKHRha2Vfd2hpbGUgKGZ1bmN0aW9uICc/JyB8ICcjJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkpXG5cbiAgbGV0IHF1ZXJ5ID1cbiAgICBsaWZ0XG4gICAgICBRdWVyeS5vZl9yYXdcbiAgICAgIChjaGFyICc/JyAqPiB0YWtlX3RpbGwgKGZ1bmN0aW9uICcjJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkpXG4gICAgPHw+IHJldHVybiAoUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKSlcblxuICBsZXQgZnJhZ21lbnQgPVxuICAgIGxpZnRcbiAgICAgIChmdW4gcyAtPiBTb21lIChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgIChjaGFyICcjJyAqPiB0YWtlX3doaWxlIChmdW4gXyAtPiB0cnVlKSlcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgX3VyaV9yZWZlcmVuY2UgPVxuICAgIGxpZnQ0XG4gICAgICAoZnVuIHNjaGVtZSAodXNlcmluZm8sIGhvc3QsIHBvcnQpIHBhdGggcXVlcnkgZnJhZ21lbnQgLT5cbiAgICAgICAgbm9ybWFsaXplIHNjaGVtZSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9KVxuICAgICAgc2NoZW1lXG4gICAgICBhdXRob3JpdHlcbiAgICAgIHBhdGhcbiAgICAgIHF1ZXJ5XG4gICAgPCo+IGZyYWdtZW50XG5cbiAgKCogWFhYKGFubW9udGVpcm8pOiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIHdpdGggdGhlIG9sZCByZWdleCBwYXJzZXIsIHdlXG4gICAqIG9ubHkgcGFyc2UgdW50aWwgdGhlIGZpcnN0IG5ld2xpbmUgY2hhcmFjdGVyIGFuZCBkcm9wIGV2ZXJ5dGhpbmcgZWxzZVxuICAgKiBhZnRlciB0aGF0ICopXG4gIGxldCB1cmlfcmVmZXJlbmNlID1cbiAgICB0YWtlX3doaWxlIChmdW5jdGlvbiB8ICdcXG4nIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSA+PnwgZnVuIHMgLT5cbiAgICAgIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgX3VyaV9yZWZlcmVuY2UgcyB3aXRoXG4gICAgICB8IE9rIHQgLT4gdFxuICAgICAgfCBFcnJvciBfIC0+XG4gICAgICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgICAgICBlbXB0eVxuZW5kXG5cbmxldCBkZWNvZGVfaG9zdCBob3N0ID1cbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaG9zdCBob3N0IHdpdGhcbiAgfCBPayBwYXJzZWQgLT4gcGFyc2VkXG4gIHwgRXJyb3IgXyAtPlxuICAgIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmlwdjYgaG9zdCB3aXRoXG4gICAgfCBPayBwYXJzZWQgLT4gKGBJcHY2X2xpdGVyYWwgcGFyc2VkKVxuICAgIHwgRXJyb3IgXyAtPiAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgaG9zdCkpXG5cbigqIE1ha2UgYSBVUkkgcmVjb3JkLiBUaGlzIGlzIGEgYml0IG1vcmUgaW5lZmZpY2llbnQgdGhhbiBpdCBuZWVkcyB0byBiZSBkdWUgdG8gdGhlXG4gKiBjYXN0aW5nL3VuY2FzdGluZyAod2hpY2ggaXNuJ3QgZnVsbHkgaWRlbnRpdHkgZHVlIHRvIHRoZSBvcHRpb24gYm94KSwgYnV0IGl0IGlzXG4gKiBubyBiaWcgZGVhbCBmb3Igbm93LlxuKilcbmxldCBtYWtlID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICB8U29tZSB4IC0+IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgeCkgfE5vbmUgLT4gTm9uZSBpblxuICBsZXQgaG9zdCA9IG1hdGNoIHVzZXJpbmZvLCBob3N0LCBwb3J0IHdpdGhcbiAgICB8IF8sIFNvbWUgXywgXyB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gaG9zdFxuICAgIHwgU29tZSBfLCBOb25lLCBfIHwgXywgTm9uZSwgU29tZSBfIC0+IFNvbWUgXCJcIlxuICBpblxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICBsZXQgcGF0aCA9IG1hdGNoIHBhdGggd2l0aFxuICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICBtYXRjaCBob3N0LCBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSwgXyB8IFNvbWUgXywgXCIvXCI6Ol8gfCBTb21lIF8sIFtdIC0+IHBhdGhcbiAgICAgIHwgU29tZSBfLCBfICAtPiBcIi9cIjo6cGF0aFxuICBpblxuICBsZXQgcXVlcnkgPSBtYXRjaCBxdWVyeSB3aXRoXG4gICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICBpblxuICBsZXQgc2NoZW1lID0gZGVjb2RlIHNjaGVtZSBpblxuICBub3JtYWxpemUgc2NoZW1lXG4gICAgeyBzY2hlbWU7IHVzZXJpbmZvO1xuICAgICAgaG9zdCA9XG4gICAgICAgIChtYXRjaCBob3N0IHdpdGhcbiAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgfCBOb25lIC0+IE5vbmUpO1xuICAgICAgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbmxldCB3aXRoX2hvc3QgdXJpIGhvc3QgPVxuICB7IHVyaSB3aXRoXG4gICAgaG9zdCA9IChtYXRjaCBob3N0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfVxuXG5sZXQgd2l0aF91cmkgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCB1cmkgPVxuICBsZXQgd2l0aF9wYXRoX29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3BhdGggdSBcIlwiXG4gICAgfCBTb21lIHAgLT4gd2l0aF9wYXRoIHUgcFxuICBpblxuICBsZXQgd2l0aF9xdWVyeV9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9xdWVyeSB1IFtdXG4gICAgfCBTb21lIHEgLT4gd2l0aF9xdWVyeSB1IHFcbiAgaW5cbiAgbGV0IHdpdGhfIGYgbyB1ID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gdVxuICAgIHwgU29tZSB4IC0+IGYgdSB4XG4gIGluXG4gIHdpdGhfIHdpdGhfc2NoZW1lIHNjaGVtZSB1cmlcbiAgfD4gd2l0aF8gd2l0aF91c2VyaW5mbyB1c2VyaW5mb1xuICB8PiB3aXRoXyB3aXRoX2hvc3QgaG9zdFxuICB8PiB3aXRoXyB3aXRoX3BvcnQgcG9ydFxuICB8PiB3aXRoXyB3aXRoX3BhdGhfb3B0IHBhdGhcbiAgfD4gd2l0aF8gd2l0aF9xdWVyeV9vcHQgcXVlcnlcbiAgfD4gd2l0aF8gd2l0aF9mcmFnbWVudCBmcmFnbWVudFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICAoKiBUbyBwcmVzZXJ2ZSB0aGUgb2xkIHJlZ2V4IHBhcnNlcidzIGJlaGF2aW9yLCB3ZSBvbmx5IHBhcnNlIGEgcHJlZml4LCBhbmRcbiAgICogc3RvcCB3aGVuZXZlciB3ZSBjYW4ndCBwYXJzZSBtb3JlLiAqKVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6UHJlZml4IFBhcnNlci51cmlfcmVmZXJlbmNlIHMgd2l0aFxuICB8IE9rIHQgLT4gdFxuICB8IEVycm9yIF8gLT5cbiAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICBlbXB0eVxuXG5tb2R1bGUgQWJzb2x1dGVfaHR0cCA9IHN0cnVjdFxuICB0eXBlIHVyaSA9IHRcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVtZSA6IFsgYEh0dHAgfCBgSHR0cHMgXTtcbiAgICAgIHVzZXJpbmZvOiBVc2VyaW5mby50IG9wdGlvbjtcbiAgICAgIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgYEhvc3Qgb2YgUGN0LmRlY29kZWRdO1xuICAgICAgcG9ydCA6IGludCBvcHRpb247XG4gICAgICBwYXRoIDogUGF0aC50O1xuICAgICAgcXVlcnkgOiBRdWVyeS50O1xuICAgICAgZnJhZ21lbnQgOiBQY3QuZGVjb2RlZCBvcHRpb25cbiAgICB9XG5cbiAgbGV0ICggbGV0KiApID0gUmVzdWx0LmJpbmRcblxuICBsZXQgdG9fdXJpIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0gPVxuICAgIGxldCBzY2hlbWUgPVxuICAgICAgbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgIHwgYEh0dHAgLT4gUGN0LmNhc3RfZGVjb2RlZCBcImh0dHBcIlxuICAgICAgfCBgSHR0cHMgLT4gUGN0LmNhc3RfZGVjb2RlZCBcImh0dHBzXCJcbiAgICBpblxuICAgICh7IHNjaGVtZSA9IFNvbWUgc2NoZW1lO1xuICAgICAgIHVzZXJpbmZvO1xuICAgICAgIGhvc3QgPSBTb21lIGhvc3Q7XG4gICAgICAgcG9ydDtcbiAgICAgICBwYXRoO1xuICAgICAgIHF1ZXJ5O1xuICAgICAgIGZyYWdtZW50IH0gOiB1cmkpXG4gIDs7XG5cbiAgbGV0IG9mX3VyaSAoeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfTogdXJpKSA9XG4gICAgbGV0KiBzY2hlbWUgPVxuICAgICAgbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFcnJvciAoYE1zZyBcIk5vIHNjaGVtZSBwcmVzZW50IGluIFVSSVwiKVxuICAgICAgfCBTb21lIHNjaGVtZSAtPlxuICAgICAgICAobWF0Y2ggUGN0LnVuY2FzdF9kZWNvZGVkIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFwiaHR0cFwiIC0+IE9rIGBIdHRwXG4gICAgICAgICB8IFwiaHR0cHNcIiAtPiBPayBgSHR0cHNcbiAgICAgICAgIHwgdW5zdXBwb3J0ZWRfc2NoZW1lIC0+XG4gICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgKGBNc2dcbiAgICAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIk9ubHkgaHR0cCBhbmQgaHR0cHMgVVJJcyBhcmUgc3VwcG9ydGVkLiAlcyBpcyBpbnZhbGlkLlwiXG4gICAgICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWRfc2NoZW1lKSkpXG4gICAgaW5cbiAgICBsZXQqIGhvc3QgPSBPcHRpb24udG9fcmVzdWx0IH5ub25lOihgTXNnIFwiaG9zdCBpcyByZXF1aXJlZCBmb3IgSFRUUChTKSB1cmlzXCIpIGhvc3QgaW5cbiAgICBPayB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9XG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID0gbWF0Y2ggb2Zfc3RyaW5nIHMgfD4gb2ZfdXJpIHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgKGBNc2cgZXJyb3IpIC0+IGZhaWx3aXRoIGVycm9yXG5cbiAgbGV0IHRvX3N0cmluZyA/cGN0X2VuY29kZXIgdCA9IHRvX3VyaSB0IHw+IHRvX3N0cmluZyA/cGN0X2VuY29kZXJcblxuICBsZXQgbm9ybWFsaXplIHQgPVxuICAgIHsgdCB3aXRoXG4gICAgICBob3N0ID0gbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICAgICB8IChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICAoYElwdjRfbGl0ZXJhbCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBob3N0KSlcbiAgICAgICB8IChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICAoYElwdjZfbGl0ZXJhbCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBob3N0KSlcbiAgICAgICB8IChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIChQY3QudW5jYXN0X2RlY29kZWQgaG9zdCkpKSlcbiAgICB9XG5cbiAgbGV0IG1ha2UgfnNjaGVtZSB+aG9zdCA/dXNlcmluZm8gP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gICAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgICB8U29tZSB4IC0+IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgeCkgfE5vbmUgLT4gTm9uZSBpblxuICAgIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgICBsZXQgcGF0aCA9IG1hdGNoIHBhdGggd2l0aFxuICAgICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgICBtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgfCAgXCIvXCI6Ol8gfCAgW10gLT4gcGF0aFxuICAgICAgICB8IF8gIC0+IFwiL1wiOjpwYXRoXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBtYXRjaCBxdWVyeSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgICBpblxuICAgIG5vcm1hbGl6ZVxuICAgICAgeyBzY2hlbWU7XG4gICAgICAgIHVzZXJpbmZvO1xuICAgICAgICBob3N0PSBkZWNvZGVfaG9zdCBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxuICBsZXQgaG9zdCB0ID1cbiAgICBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgIHwgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gaFxuICAgIHwgKGBIb3N0IGgpIC0+IChQY3QudW5jYXN0X2RlY29kZWQgaClcblxuICBsZXQgc2NoZW1lIHQgPSB0LnNjaGVtZVxuZW5kXG4iLCJvcGVuIFVyaVxuXG5tb2R1bGUgRGVyaXZlZCA9XG5zdHJ1Y3RcblxuXHRvcGVuIFNleHBsaWIwLlNleHBfY29udlxuXG5cdHR5cGUgY29tcG9uZW50ID0gW1xuXHQgIHwgYFNjaGVtZVxuXHQgIHwgYEF1dGhvcml0eVxuXHQgIHwgYFVzZXJpbmZvICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYFBhdGhcblx0ICB8IGBRdWVyeVxuXHQgIHwgYFF1ZXJ5X2tleVxuXHQgIHwgYFF1ZXJ5X3ZhbHVlXG5cdCAgfCBgRnJhZ21lbnRcbiAgICAgICAgICB8IGBHZW5lcmljXG4gICAgICAgICAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpXG5cdF0gW0BAZGVyaXZpbmcgc2V4cF1cblxuXHR0eXBlIHQgPSB7XG4gICAgICAgICAgc2NoZW1lOiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHVzZXJpbmZvOiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIGhvc3Q6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcG9ydDogaW50IG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwYXRoOiBzdHJpbmcgW0BkZWZhdWx0IFwiXCJdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcXVlcnk6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdCBbQHNleHAubGlzdF07XG4gICAgICAgICAgZnJhZ21lbnQ6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF1cblx0fSBbQEBkZXJpdmluZyBzZXhwXVxuXG5lbmRcblxub3BlbiBEZXJpdmVkXG5cbmxldCBjb21wb25lbnRfb2Zfc2V4cCA9IGNvbXBvbmVudF9vZl9zZXhwXG5sZXQgc2V4cF9vZl9jb21wb25lbnQgPSBzZXhwX29mX2NvbXBvbmVudFxuXG5sZXQgdF9vZl9zZXhwIHNleHAgPVxuXHRsZXQgdCA9IHRfb2Zfc2V4cCBzZXhwIGluXG5cdFVyaS5tYWtlXG5cdFx0P3NjaGVtZTp0LnNjaGVtZVxuXHRcdD91c2VyaW5mbzp0LnVzZXJpbmZvXG5cdFx0P2hvc3Q6dC5ob3N0XG5cdFx0P3BvcnQ6dC5wb3J0XG5cdFx0fnBhdGg6dC5wYXRoXG5cdFx0fnF1ZXJ5OnQucXVlcnlcblx0XHQ/ZnJhZ21lbnQ6dC5mcmFnbWVudFxuXHRcdCgpXG5cbmxldCBzZXhwX29mX3QgdCA9XG5cdHNleHBfb2ZfdCB7XG5cdFx0c2NoZW1lID0gc2NoZW1lIHQ7XG5cdFx0dXNlcmluZm8gPSB1c2VyaW5mbyB0O1xuXHRcdGhvc3QgPSBob3N0IHQ7XG5cdFx0cG9ydCA9IHBvcnQgdDtcblx0XHRwYXRoID0gcGF0aCB0O1xuXHRcdHF1ZXJ5ID0gcXVlcnkgdDtcblx0XHRmcmFnbWVudCA9IGZyYWdtZW50IHRcblx0fVxuXG50eXBlIGNvbXBvbmVudCA9IFVyaS5jb21wb25lbnRcbmxldCBjb21wYXJlIGEgYiA9IFVyaS5jb21wYXJlIGEgYlxubGV0IGVxdWFsIGEgYiA9IFVyaS5lcXVhbCBhIGJcbnR5cGUgdCA9IFVyaS50XG4iLCJvcGVuIEpzX29mX29jYW1sXG5vcGVuIENvcmVcblxubGV0IGlzX3ZhbGlkX2lkIHMgPVxuICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbWF0Y2ggcy5bMF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBmYWxzZVxuICAgIHwgXyAtPlxuICAgICAgU3RyaW5nLmZvcl9hbGwgcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpKVxuOztcblxubGV0IGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSA9IGlzX3ZhbGlkX2lkIG5hbWUgJiYgbm90IChTZXQubWVtIHNlZW4gbmFtZSlcblxubGV0IHJlYyBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgbGlzdCA9XG4gIG1hdGNoIChsaXN0IDogU2V4cC50IGxpc3QpIHdpdGhcbiAgfCBbXSAtPiBTb21lIChMaXN0LnJldiByZXZfYWNjKVxuICB8IEF0b20gbmFtZSA6OiByZXN0IHdoZW4gaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lIC0+XG4gICAgbGV0IHJldl9hY2MgPSAobmFtZSwgTm9uZSkgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IExpc3QgWyBBdG9tIG5hbWU7IHYgXSA6OiByZXN0IHdoZW4gaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lIC0+XG4gICAgbGV0IHJldl9hY2MgPSAobmFtZSwgU29tZSB2KSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGFueV9vZl9zZXhwID0gZnVuY3Rpb25cbiAgfCBTZXhwLkF0b20gcyAtPiBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcylcbiAgfCBTZXhwLkxpc3QgWyBBdG9tIG5hbWU7IHYgXSAtPiBKcy5VbnNhZmUub2JqIFt8IG5hbWUsIGFueV9vZl9zZXhwIHYgfF1cbiAgfCBTZXhwLkxpc3QgbCAtPlxuICAgIChtYXRjaCBrZXlfdmFsdWVfc2hhcGUgfnNlZW46U3RyaW5nLlNldC5lbXB0eSB+cmV2X2FjYzpbXSBsIHdpdGhcbiAgICAgfCBOb25lIC0+IExpc3QubWFwIGwgfmY6YW55X29mX3NleHAgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBbXSAtPiBKcy5hcnJheSBbfHxdIHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIGwgLT5cbiAgICAgICBKcy5VbnNhZmUub2JqXG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgbmFtZSwgU29tZSB2IC0+IG5hbWUsIGFueV9vZl9zZXhwIHZcbiAgICAgICAgICAgIHwgbmFtZSwgTm9uZSAtPiBuYW1lLCBKcy5VbnNhZmUuaW5qZWN0IEpzLm51bGwpXG4gICAgICAgICAgfD4gQXJyYXkub2ZfbGlzdCkpXG47O1xuXG5sZXQgbG9nX3Mgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChhbnlfb2Zfc2V4cCBzZXhwKVxubGV0IGxvZ19zX2FzX3N0cmluZyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApKVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdSA9IHsgc29tZV9uYW1lIDogc3RyaW5nIH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IEZvb1xuICAgICAgfCBCYXIgb2ZcbiAgICAgICAgICB7IGZpZWxkMSA6IHVcbiAgICAgICAgICA7IGZpZWxkMiA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG4gIGluXG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBvcGVuIE0gaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCAoc2V4cF9vZl90IEZvbykpKTtcbiAgWyVleHBlY3Qge3wgXCJGb29cIiB8fV07XG4gIHByaW50X2VuZGxpbmVcbiAgICAodG9fc3RyaW5nXG4gICAgICAgKGFueV9vZl9zZXhwXG4gICAgICAgICAgKHNleHBfb2ZfdFxuICAgICAgICAgICAgIChCYXIgeyBmaWVsZDEgPSB7IHNvbWVfbmFtZSA9IFwiZGVidWdcIiB9OyBmaWVsZDIgPSBTb21lIFwib3RoZXIgc3RyaW5nXCIgfSkpKSk7XG4gIFslZXhwZWN0IHt8IHtcIkJhclwiOm51bGwsXCJmaWVsZDFcIjp7XCJzb21lX25hbWVcIjpcImRlYnVnXCJ9LFwiZmllbGQyXCI6W1wib3RoZXIgc3RyaW5nXCJdfSB8fV1cbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcImR1cGxpY2F0ZSBrZXlzIGFyZSBkaXNwbGF5ZWQgY29ycmVjdGx5XCIgPVxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzID0ge3wgKChBIEIpIChBIEMpKSB8fSB8PiBTZXhwLm9mX3N0cmluZyBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cykpO1xuICBbJWV4cGVjdCB7fCBbe1wiQVwiOlwiQlwifSx7XCJBXCI6XCJDXCJ9XSB8fV1cbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcIm5vIHN0YWNrIG92ZXJmbG93XCIgPVxuICBsZXQgYSA9IEFycmF5LmluaXQgMTAwMDAgfmY6KGZ1biBpIC0+IHNwcmludGYgXCJmJWRcIiBpLCBpKSBpblxuICBsZXQgc2V4cCA9IFslc2V4cF9vZjogKHN0cmluZyAqIGludCkgYXJyYXldIGEgaW5cbiAgbGV0IHggPSBhbnlfb2Zfc2V4cCBzZXhwIGluXG4gIHByaW50ZiBcIiVkXCIgKEpzLlVuc2FmZS5jb2VyY2UgeCkjIy5mOTk5O1xuICBbJWV4cGVjdCB7fCA5OTkgfH1dXG47O1xuIiwibW9kdWxlIEFzeW5jX2pzX2RlYnVnID0gRGVidWdcbm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBpbmNsdWRlIFVyaVxuXG4gIGxldCBzZXhwX29mX3QgPSBVcmlfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgV2Vic29ja2V0X2Nvbm5lY3Rpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBBc3luY19ycGNfa2VybmVsLlJwYy5Db25uZWN0aW9uXG5cbiAgdHlwZSAoJ3Jlc3QsICdpbXBsZW1lbnRhdGlvbnMpIGNsaWVudF90ID1cbiAgICA/dXJpOlVyaS50XG4gICAgLT4gP2hlYXJ0YmVhdF9jb25maWc6VC5IZWFydGJlYXRfY29uZmlnLnRcbiAgICAtPiA/ZGVzY3JpcHRpb246SW5mby50XG4gICAgLT4gP2ltcGxlbWVudGF0aW9uczonaW1wbGVtZW50YXRpb25zIFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy50XG4gICAgLT4gJ3Jlc3RcblxuICBtb2R1bGUgQ2xvc2VfY29kZSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2V2ZW50IDogXyBXZWJTb2NrZXRzLmNsb3NlRXZlbnQgSnMudCAtPiB0XG4gICAgdmFsIG5vcm1hbF9jbG9zdXJlIDogdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIGNsb3NlX2V2ZW50X2NvZGUgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSA9IFtdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCBHb2luZ19hd2F5XG4gICAgICB8IFByb3RvY29sX2Vycm9yXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IEFibm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWdcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgU2VydmljZV9yZXN0YXJ0XG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCBCYWRfZ2F0ZXdheVxuICAgICAgfCBUTFNfaGFuZHNoYWtlXG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBvZiBjbG9zZV9ldmVudF9jb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBvZiBjbG9zZV9ldmVudF9jb2RlXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwXVxuXG4gICAgbGV0IG5vcm1hbF9jbG9zdXJlID0gTm9ybWFsX2Nsb3N1cmVcblxuICAgIGxldCBvZl9pbnQgPSBmdW5jdGlvblxuICAgICAgfCAxMDAwIC0+IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDEgLT4gR29pbmdfYXdheVxuICAgICAgfCAxMDAyIC0+IFByb3RvY29sX2Vycm9yXG4gICAgICB8IDEwMDMgLT4gVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCAxMDA1IC0+IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCAxMDA2IC0+IEFibm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwNyAtPiBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCAxMDA4IC0+IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgMTAwOSAtPiBNZXNzYWdlX3Rvb19iaWdcbiAgICAgIHwgMTAxMCAtPiBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCAxMDExIC0+IEludGVybmFsX2Vycm9yXG4gICAgICB8IDEwMTIgLT4gU2VydmljZV9yZXN0YXJ0XG4gICAgICB8IDEwMTMgLT4gVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IDEwMTQgLT4gQmFkX2dhdGV3YXlcbiAgICAgIHwgMTAxNSAtPiBUTFNfaGFuZHNoYWtlXG4gICAgICB8IGNvZGUgLT5cbiAgICAgICAgaWYgY29kZSA+PSAzMDAwICYmIGNvZGUgPD0gNDk5OVxuICAgICAgICB0aGVuIFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgICAgIGVsc2UgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V2ZW50IGNsb3NlX2V2ZW50ID0gb2ZfaW50IGNsb3NlX2V2ZW50IyMuY29kZVxuXG4gICAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IE5vcm1hbF9jbG9zdXJlIC0+IDEwMDBcbiAgICAgIHwgR29pbmdfYXdheSAtPiAxMDAxXG4gICAgICB8IFByb3RvY29sX2Vycm9yIC0+IDEwMDJcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YSAtPiAxMDAzXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZCAtPiAxMDA1XG4gICAgICB8IEFibm9ybWFsX2Nsb3N1cmUgLT4gMTAwNlxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YSAtPiAxMDA3XG4gICAgICB8IFBvbGljeV92aW9sYXRpb24gLT4gMTAwOFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgLT4gMTAwOVxuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvbiAtPiAxMDEwXG4gICAgICB8IEludGVybmFsX2Vycm9yIC0+IDEwMTFcbiAgICAgIHwgU2VydmljZV9yZXN0YXJ0IC0+IDEwMTJcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyIC0+IDEwMTNcbiAgICAgIHwgQmFkX2dhdGV3YXkgLT4gMTAxNFxuICAgICAgfCBUTFNfaGFuZHNoYWtlIC0+IDEwMTVcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0b19pbnQgLT4gb2ZfaW50IHJvdW5kLXRyaXBcIiA9XG4gICAgICBMaXN0Lml0ZXIgYWxsIH5mOihmdW4gdCAtPiBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gKG9mX2ludCAodG9faW50IHQpKSB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY2xvc2Vfd2Vic29ja2V0ICh3ZWJzb2NrZXQgOiBXZWJTb2NrZXRzLndlYlNvY2tldCBKcy50KSByZWFzb24gPVxuICAgICgqIFtjbG9zZV93aXRoQ29kZUFuZFJlYXNvbl0gZG9lcyBub3RoaW5nIGlmIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgQ2xvc2VkLiAqKVxuICAgIGxldCBjbG9zZSByZWFzb24gPVxuICAgICAgKCogVGhlIGNvZGUgbXVzdCBiZSBlaXRoZXIgMTAwMCAoTm9ybWFsX2Nsb3N1cmUpLCBvciBiZXR3ZWVuIDMwMDAgYW5kIDQ5OTlcbiAgICAgICAgIChVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUpLiAqKVxuICAgICAgd2Vic29ja2V0IyNjbG9zZV93aXRoQ29kZUFuZFJlYXNvblxuICAgICAgICBDbG9zZV9jb2RlLih0b19pbnQgbm9ybWFsX2Nsb3N1cmUpXG4gICAgICAgIChKcy5zdHJpbmcgcmVhc29uKVxuICAgIGluXG4gICAgbWF0Y2ggY2xvc2UgcmVhc29uIHdpdGhcbiAgICB8ICgpIC0+ICgpXG4gICAgfCBleGNlcHRpb24gKF8gOiBFeG4udCkgLT5cbiAgICAgICgqIHRoaXMgY2FuIGZhaWwgaWYgW3JlYXNvbl0gaXMgdG9vIGxvbmcgb3IgY29udGFpbnMgaW52YWxpZCBVVEY4ICopXG4gICAgICBjbG9zZSBcImNsb3NlLXJlYXNvbi13YXMtdG9vLWxvbmctb3ItY29udGFpbnMtaW52YWxpZC11dGY4XCJcbiAgOztcblxuICBsZXQgY29ubmVjdF93ZWJzb2NrZXQgdXJsIH5mcm9tX3NlcnZlciB+dG9fc2VydmVyID1cbiAgICBtYXRjaCBuZXclanMgV2ViU29ja2V0cy53ZWJTb2NrZXQgKEpzLnN0cmluZyAoVXJpLnRvX3N0cmluZyB1cmwpKSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnMuRXJyb3IgZXhuIC0+XG4gICAgICAoKiBlLmcuIFNFQ1VSSVRZX0VSUiwgdGhvdWdoIG5vdGUgdGhhdCBlLmcuIGNvbm5lY3RpbmcgdG8gd3M6Ly8gZnJvbSBhIGh0dHBzOi8vIHBhZ2VcbiAgICAgICAgIGluIGNocm9tZSBzZWVtcyB0byBtYW5pZmVzdCBhcyBzdWNjZXNzZnVsIGNvbnN0cnVjdGlvbiBidXQgaW1tZWRpYXRlIGNsb3N1cmVcbiAgICAgICAgIChzZWUgYmVsb3cpLiAgKilcbiAgICAgIHJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIChKcy50b19zdHJpbmcgZXhuIyMubWVzc2FnZSkpXG4gICAgfCBleGNlcHRpb24gZXhuIC0+IHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IHdlYnNvY2tldCAtPlxuICAgICAgbGV0IGNvbm5lY3RlZF9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBjbGVhbnVwIH5yZWFzb24gPVxuICAgICAgICAoKiBJZiB3ZSBoYXZlbid0IGNvbm5lY3RlZCB5ZXQsIHRoZW4gY29ubmVjdGluZyBqdXN0IGZhaWxlZC4gT3RoZXJ3aXNlIGl0IHdhcyB0aGVcbiAgICAgICAgICAgY2xvc3VyZSBvZiBhbiBleGlzdGluZyBjb25uZWN0aW9uLiAqKVxuICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKEVycm9yIHJlYXNvbik7XG4gICAgICAgICgqIFtQaXBlLmNsb3NlXSBhbmQgW1dlYlNvY2tldC5jbG9zZV0gYXJlIGFsbCBpZGVtcG90ZW50LiAqKVxuICAgICAgICBQaXBlLmNsb3NlIGZyb21fc2VydmVyO1xuICAgICAgICBQaXBlLmNsb3NlX3JlYWQgdG9fc2VydmVyO1xuICAgICAgICBjbG9zZV93ZWJzb2NrZXQgd2Vic29ja2V0IChFcnJvci50b19zdHJpbmdfaHVtIHJlYXNvbilcbiAgICAgIGluXG4gICAgICBsZXQgb25jbG9zZSAoY2xvc2VfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50KSA9XG4gICAgICAgICgqIFRoZSBSUEMgQVBJIGRvZXNuJ3QgZ2l2ZSB1cyBhIGdvb2QgcGxhY2UgdG8gcHV0IGRldGFpbHMgYWJvdXQgX3doeV8gdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gY2xvc2VkLlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCBpbiBDaHJvbWUgW2Nsb3NlX2V2ZW50IyMucmVhc29uXSBpcyB0eXBpY2FsbHkgZW1wdHkgYW5kXG4gICAgICAgICAgIFtjbG9zZV9ldmVudCMjLmNvZGVdIGRvZXNuJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGF0IG11Y2ggaW5zaWdodCBpbnRvIHdoeSB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBmYWlsZWQgKGl0J3MgYXZhaWxhYmxlIGluIHRoZSBpbnNwZWN0b3IgY29uc29sZSwgYnV0IGFzIGZhciBhcyBJIGNhblxuICAgICAgICAgICB0ZWxsLCBub3QgYXZhaWxhYmxlIHRvIHVzKS4gU28gaXQncyBub3QgbGlrZSB3ZSdyZSBsb3NpbmcgbXVjaCBhbnl3YXkuICopXG4gICAgICAgIGxldCByZWFzb24gPVxuICAgICAgICAgIGxldCB3aGF0X2hhcHBlbmVkID1cbiAgICAgICAgICAgIG1hdGNoIEl2YXIuaXNfZnVsbCBjb25uZWN0ZWRfaXZhciB3aXRoXG4gICAgICAgICAgICB8IGZhbHNlIC0+IFwiY29ubmVjdGlvbiBmYWlsZWRcIlxuICAgICAgICAgICAgfCB0cnVlIC0+IFwiY2xvc2VkXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICFcIldlYlNvY2tldCAlcyAoJXtzZXhwOkNsb3NlX2NvZGUudH0pXCJcbiAgICAgICAgICAgIHdoYXRfaGFwcGVuZWRcbiAgICAgICAgICAgIChDbG9zZV9jb2RlLm9mX2V2ZW50IGNsb3NlX2V2ZW50KVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyByZWFzb24pO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgb25tZXNzYWdlIChldmVudCA6IF8gV2ViU29ja2V0cy5tZXNzYWdlRXZlbnQgSnMudCkgPVxuICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy5vZl9hcnJheUJ1ZmZlciBldmVudCMjLmRhdGFfYnVmZmVyIGluXG4gICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIGZyb21fc2VydmVyIGRhdGE7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ZWQgKCkgPSBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKE9rICgpKSBpblxuICAgICAgd2Vic29ja2V0IyMuYmluYXJ5VHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiO1xuICAgICAgKCogaWYgdGhlIHdlYnNvY2tldCBpcyBhbHJlYWR5IGNsb3NlZCwgW29uY2xvc2VdIHdvbid0IGJlIHJlLWZpcmVkIHdoZW4gd2UgYWRkIG91clxuICAgICAgICAgaGFuZGxlci4gKilcbiAgICAgIChtYXRjaCB3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgIHdlYnNvY2tldCMjLm9ub3BlblxuICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgIGNvbm5lY3RlZCAoKTtcbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgIHwgT1BFTiAtPiBjb25uZWN0ZWQgKClcbiAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT5cbiAgICAgICAgICgqIGUuZy4sIFJlZnVzZWQgdG8gY29ubmVjdCB0byB3czogYmVjYXVzZSBpdCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAqKVxuICAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJXZWJTb2NrZXQgZmFpbGVkIGltbWVkaWF0ZWx5IChpbGxlZ2FsIFVSST8pXCIpKTtcbiAgICAgICgqIFVwb24gYW4gZXJyb3IsIFtvbmVycm9yXSBmaXJlcyBhbmQgdGhlbiBbb25jbG9zZV0gZmlyZXMgKGl0J3MgcG9zc2libGUgZm9yIGFcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUgdG8gY2FsbCBbb25jbG9zZV0gb25seSkuIFNpbmNlIEFzeW5jX1JQQyBoYXMgbm8gbm90aW9uIG9mXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlLCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIFtvbmNsb3NlXSBhbnl3YXkuIEZ1cnRoZXIsIHRoZSBldmVudFxuICAgICAgICAgcGFzc2VkIHRvIFtvbmVycm9yXSBjb250YWlucyBubyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuICBOb3RlIHRoYXQgd2VcbiAgICAgICAgIHN0aWxsIGxpc3RlbiB0byBbb25lcnJvcl0gdG8gcHJldmVudCB0aGUgZXJyb3IgZnJvbSBsZWFraW5nIHRvIHVuY29udHJvbGxlZFxuICAgICAgICAgY29udGV4dCAqKVxuICAgICAgd2Vic29ja2V0IyMub25lcnJvclxuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgIEFzeW5jX2pzX2RlYnVnLmxvZ19zIFslbWVzc2FnZSBcIndlYnNvY2tldCBlbmNvdW50ZXJlZCB1bmV4cGVjdGVkIGVycm9yXCJdO1xuICAgICAgICBKcy5fZmFsc2UpO1xuICAgICAgd2Vic29ja2V0IyMub25tZXNzYWdlIDo9IERvbS5oYW5kbGVyIG9ubWVzc2FnZTtcbiAgICAgIHdlYnNvY2tldCMjLm9uY2xvc2UgOj0gRG9tLmhhbmRsZXIgb25jbG9zZTtcbiAgICAgIGxldCBjb25uZWN0ZWRfZGVmZXJyZWQgPSBJdmFyLnJlYWQgY29ubmVjdGVkX2l2YXIgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChtYXRjaCViaW5kIGNvbm5lY3RlZF9kZWZlcnJlZCB3aXRoXG4gICAgICAgICB8IEVycm9yIChfIDogRXJyb3IudCkgLT4gcmV0dXJuICgpXG4gICAgICAgICB8IE9rICgpIC0+XG4gICAgICAgICAgIFBpcGUuaXRlcl93aXRob3V0X3B1c2hiYWNrIHRvX3NlcnZlciB+ZjooZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICBtYXRjaCAod2Vic29ja2V0IyMucmVhZHlTdGF0ZSA6IFdlYlNvY2tldHMucmVhZHlTdGF0ZSkgd2l0aFxuICAgICAgICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IG9ub3BlbiBjYWxsZWQgYnV0IHJlYWR5U3RhdGUgaXMgQ09OTkVDVElOR1wiXVxuICAgICAgICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPiAoKVxuICAgICAgICAgICAgIHwgT1BFTiAtPlxuICAgICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhIGluXG4gICAgICAgICAgICAgICAodHJ5IHdlYnNvY2tldCMjc2VuZF9idWZmZXIgYnVmZmVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKEVycm9yLnRhZyB+dGFnOlwid2Vic29ja2V0IyNzZW5kX2J1ZmZlclwiIChFcnJvci5vZl9leG4gZXhuKSkpKSk7XG4gICAgICBsZXQgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQgPVxuICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdCBbIFBpcGUuY2xvc2VkIHRvX3NlcnZlcjsgUGlwZS5jbG9zZWQgZnJvbV9zZXJ2ZXIgXVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIlJQQyBjb25uZWN0aW9uIGNsb3NlZCBieSBjbGllbnRcIilcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZDtcbiAgICAgIGNvbm5lY3RlZF9kZWZlcnJlZFxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3VyaSAoKSA9XG4gICAgbGV0IHNjaGVtZSA9IGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiIHRoZW4gXCJ3c3NcIiBlbHNlIFwid3NcIiBpblxuICAgIGxldCBwb3J0ID1cbiAgICAgIG1hdGNoIFVybC5DdXJyZW50LnBvcnQgd2l0aFxuICAgICAgfCBTb21lIHBvcnQgLT4gcG9ydFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiXG4gICAgICAgIHRoZW4gVXJsLmRlZmF1bHRfaHR0cHNfcG9ydFxuICAgICAgICBlbHNlIFVybC5kZWZhdWx0X2h0dHBfcG9ydFxuICAgIGluXG4gICAgbGV0IGhvc3QgPSBVcmwuQ3VycmVudC5ob3N0IGluXG4gICAgVXJpLm1ha2UgfnNjaGVtZSB+aG9zdCB+cG9ydCAoKVxuICA7O1xuXG4gIGxldCBjbGllbnQgPyh1cmkgPSBkZWZhdWx0X3VyaSAoKSkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIndlYnNvY2tldFwiIChkZXNjcmlwdGlvbiA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKSAodXJpIDogVXJpLnQpXVxuICAgIGluXG4gICAgbGV0IG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgPVxuICAgICAgbGV0IGNyZWF0ZSB7IFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5jb25uZWN0aW9uX3N0YXRlOyBpbXBsZW1lbnRhdGlvbnMgfSA9XG4gICAgICAgIFQuY3JlYXRlXG4gICAgICAgICAgdHJhbnNwb3J0XG4gICAgICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIGluXG4gICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLm51bGwgKCkpXG4gICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb25zIC0+IGNyZWF0ZSBpbXBsZW1lbnRhdGlvbnNcbiAgICBpblxuICAgIGxldCBmcm9tX3NlcnZlcl9yLCBmcm9tX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgdG9fc2VydmVyX3IsIHRvX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBtYXRjaCViaW5kXG4gICAgICBjb25uZWN0X3dlYnNvY2tldCB1cmkgfmZyb21fc2VydmVyOmZyb21fc2VydmVyX3cgfnRvX3NlcnZlcjp0b19zZXJ2ZXJfclxuICAgIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gcmV0dXJuIGVycm9yXG4gICAgfCBPayAoKSAtPlxuICAgICAgbGV0IHRyYW5zcG9ydCA9XG4gICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuY3JlYXRlXG4gICAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5LaW5kLmJpZ3N0cmluZ1xuICAgICAgICAgIGZyb21fc2VydmVyX3JcbiAgICAgICAgICB0b19zZXJ2ZXJfd1xuICAgICAgaW5cbiAgICAgIChtYXRjaCViaW5kIG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgd2l0aFxuICAgICAgIHwgT2sgY29ubmVjdGlvbiAtPiByZXR1cm4gKE9rIGNvbm5lY3Rpb24pXG4gICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgIGxldCViaW5kICgpID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgY2xpZW50X2V4biA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBjbGllbnQgP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBc3luY19ycGNfa2VybmVsLlJwY1xuXG5tb2R1bGUgQ29ubmVjdGlvbiA9IHN0cnVjdFxuICBpbmNsdWRlIENvbm5lY3Rpb25cbiAgaW5jbHVkZSBXZWJzb2NrZXRfY29ubmVjdGlvblxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19ycGNfa2VybmVsXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFVyaVxuXG4gICAgbGV0IHRvX3N0cmluZyBzID0gVXJpLnRvX3N0cmluZyBzXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFQpXG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICBpbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGNcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpID0gUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGUgfmFkZHJlc3M6KG1vZHVsZSBVcmkpXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaV9vcHRpb24gPVxuICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlXG4gICAgICB+YWRkcmVzczpcbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBVcmkudCBvcHRpb24gW0BAZGVyaXZpbmcgZXF1YWwsIHNleHBdXG4gICAgICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IEFzeW5jX3JwY19rZXJuZWwuUGVyc2lzdGVudF9jb25uZWN0aW9uLlZlcnNpb25lZF9ycGNcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBPcHQgPSBKcy5PcHRcbm1vZHVsZSBPcHRkZWYgPSBKcy5PcHRkZWZcblxubW9kdWxlIFJlc3BvbnNlX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWG1sSHR0cFJlcXVlc3QucmVzcG9uc2UgPVxuICAgIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IE9wdC50IHRcbiAgICB8IEJsb2IgOiAjRmlsZS5ibG9iIEpzLnQgSnMuT3B0LnQgdFxuICAgIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudCBPcHQudCB0XG4gICAgfCBKU09OIDogJ2EgT3B0LnQgdFxuICAgIHwgVGV4dCA6IEpzLmpzX3N0cmluZyBKcy50IHRcbiAgICB8IERlZmF1bHQgOiBzdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdyZXNwb25zZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IGdldF9oZWFkZXIgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgIDsgY29udGVudCA6ICdyZXNwb25zZVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUG9zdF9ib2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBCbG9iIG9mIEZpbGUuYmxvYiBKcy50XG4gICAgfCBEb2N1bWVudCBvZiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRm9ybV9kYXRhIG9mIEZvcm0uZm9ybURhdGEgSnMudFxuZW5kXG5cbm1vZHVsZSBNZXRob2Rfd2l0aF9hcmdzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBHZXQgb2YgKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgIHwgUG9zdCBvZiBQb3N0X2JvZHkudCBvcHRpb25cbmVuZFxuXG50eXBlICdrIHdpdGhfcmVxdWVzdF9hcmdzID1cbiAgP2hlYWRlcnM6KHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAtPiA/b25fcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+ID9vbl91cGxvYWRfcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+IHVybDpzdHJpbmdcbiAgLT4gJ2tcblxubGV0IGhhc19nZXRfYXJncyB1cmwgPSBPcHRpb24uaXNfc29tZSAoU3RyaW5nLmluZGV4IHVybCAnPycpXG5cbmxldCByZXF1ZXN0XG4gICAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICAgID9vbl9wcm9ncmVzc1xuICAgICAgP29uX3VwbG9hZF9wcm9ncmVzc1xuICAgICAgfnVybFxuICAgICAgKHR5cGUgcmVzcClcbiAgICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3AgUmVzcG9uc2VfdHlwZS50KVxuICAgICAgKG1ldGhvZF93aXRoX2FyZ3MgOiBNZXRob2Rfd2l0aF9hcmdzLnQpXG4gID1cbiAgbGV0IHVybCwgbWV0aG9kX3N0cmluZyA9XG4gICAgbWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICAgfCBHZXQgYXJncyAtPlxuICAgICAgdXJsIF4gKGlmIGhhc19nZXRfYXJncyB1cmwgdGhlbiBcIiZcIiBlbHNlIFwiP1wiKSBeIFVybC5lbmNvZGVfYXJndW1lbnRzIGFyZ3MsIFwiR0VUXCJcbiAgICB8IFBvc3QgX2JvZHkgLT4gdXJsLCBcIlBPU1RcIlxuICBpblxuICBsZXQgcmVxID0gWG1sSHR0cFJlcXVlc3QuY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2Rfc3RyaW5nKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgIHwgQXJyYXlCdWZmZXIgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCJcbiAgIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gICB8IEpTT04gLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImpzb25cIlxuICAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICBMaXN0Lml0ZXIgaGVhZGVycyB+ZjooZnVuIChuYW1lLCB2YWx1ZSkgLT5cbiAgICByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIHZhbHVlKSk7XG4gIGxldCByZXNwb25zZSA6IHJlc3AgUmVzcG9uc2UudCBPcl9lcnJvci50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHJlcSMjLm9uZXJyb3JcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJOZXR3b3JrIGVycm9yXCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub250aW1lb3V0XG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiVGltZW91dFwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9ucmVhZHlzdGF0ZWNoYW5nZVxuICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgIG1hdGNoIHJlcSMjLnJlYWR5U3RhdGUgd2l0aFxuICAgIHwgRE9ORSAtPlxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIGlmIHJlcSMjLnN0YXR1cyA+PSAyMDAgJiYgcmVxIyMuc3RhdHVzIDwgMzAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNvbnRlbnQgOiByZXNwIE9yX2Vycm9yLnQgPVxuICAgICAgICAgICAgbGV0IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpID1cbiAgICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgICByZXEjIy5yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZCBub3QgYmUgZW50ZXJlZCBhcyBwZXIgdGhlIHNwZWNpZmljYXRpb24gb2ZcbiAgICAgICAgICAgICAgICAgICAgICBYTUxIdHRwUmVxdWVzdCBhdCBNRE4gd2ViIGRvY3MsIGJlY2F1c2UgaWYgYSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwsXG4gICAgICAgICAgICAgICAgICAgICAgaW4gc3RhdGUgW0RPTkVdIGFuZCByZXNwb25zZV90eXBlIFtUZXh0XSBvciBbRGVmYXVsdF0sXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGV4dF0gc2hvdWxkIG5vdCBiZSBbbnVsbF0uXG4gICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NcbiAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHJlc3BvbnNlIHJldHVybmVkIGRlc3BpdGUgc3VjY2Vzc2Z1bCByZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICAgICAgUmVzdWx0LnJldHVyblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgfCBBcnJheUJ1ZmZlciAtPiBPayAoRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgQmxvYiAtPiBPayAoRmlsZS5Db2VyY2VUby5ibG9iIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBPayAoRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgSlNPTiAtPiBPayAoRmlsZS5Db2VyY2VUby5qc29uIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBUZXh0IC0+IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpXG4gICAgICAgICAgICB8IERlZmF1bHQgLT5cbiAgICAgICAgICAgICAgT3JfZXJyb3IubWFwIChnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSkgfmY6SnMudG9fc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZ2V0X2hlYWRlciBzID1cbiAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBTb21lIChKcy50b19zdHJpbmcgdikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IFJlc3BvbnNlLmNvbnRlbnQ7IGNvZGUgPSByZXEjIy5zdGF0dXM7IGdldF9oZWFkZXIgfSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICBcIlJlcXVlc3QgZmFpbGVkXCJcbiAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgfV1cbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzXG4gICAgfCBfIC0+ICgpKTtcbiAgT3B0aW9uLml0ZXIgb25fcHJvZ3Jlc3MgfmY6KGZ1biBvbl9wcm9ncmVzcyAtPlxuICAgIHJlcSMjLm9ucHJvZ3Jlc3NcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgIG9uX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgSnMuX3RydWUpKTtcbiAgT3B0ZGVmLml0ZXIgcmVxIyMudXBsb2FkIChmdW4gdXBsb2FkIC0+XG4gICAgT3B0aW9uLml0ZXIgb25fdXBsb2FkX3Byb2dyZXNzIH5mOihmdW4gb25fdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICB1cGxvYWQjIy5vbnByb2dyZXNzXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgb25fdXBsb2FkX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgICBKcy5fdHJ1ZSkpKTtcbiAgKG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgfCBHZXQgXyAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgfCBQb3N0IGJvZHkgLT5cbiAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICAgICB8IFNvbWUgYm9keSAtPlxuICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICB8IEJsb2IgYiAtPiByZXEjI3NlbmRfYmxvYiBiXG4gICAgICAgICB8IERvY3VtZW50IGQgLT4gcmVxIyNzZW5kX2RvY3VtZW50IGRcbiAgICAgICAgIHwgU3RyaW5nIHMgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gICAgICAgICB8IEZvcm1fZGF0YSBmZCAtPiByZXEjI3NlbmRfZm9ybURhdGEgZmQpKSk7XG4gIEl2YXIucmVhZCByZXNwb25zZVxuOztcblxubGV0IGdldCA/KGFyZ3VtZW50cyA9IFtdKSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoR2V0IGFyZ3VtZW50cykpXG47O1xuXG5sZXQgcG9zdCA/Ym9keSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoUG9zdCBib2R5KSlcbjs7XG4iLCJvcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZS5UaW1lX25zXG5tb2R1bGUgQ2xvY2tfbnMgPSBBc3luY19rZXJuZWwuQ2xvY2tfbnNcbm1vZHVsZSBTY2hlZHVsZXIgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlXG5vcGVuIEpzX29mX29jYW1sXG5cbmxldCBzbGVlcCBkID0gQ2xvY2tfbnMuYWZ0ZXIgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgZClcbmxldCB5aWVsZCAoKSA9IFNjaGVkdWxlci55aWVsZCAoU2NoZWR1bGVyLnQgKCkpXG5cbmxldCBleHRyYWN0X2pzX2Vycm9yIChleG4gOiBleG4pIDogSnMuZXJyb3IgSnMudCBvcHRpb24gPVxuICBKcy5PcHQudG9fb3B0aW9uIChKcy5qc19lcnJvcl9vZl9leG4gZXhuKVxuOztcblxubGV0IHJ1biA9XG4gIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJZGxlXG4gICAgICB8IFJ1bm5pbmdcbiAgICAgIHwgV2lsbF9ydW5fc29vblxuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBOZXh0X3dha2V1cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIFRpbWVfbnMudCAqIGZsb2F0XG4gICAgICB8IE5vX3dha2V1cFxuICAgICAgfCBTb29uXG4gIGVuZFxuICBpblxuICBsZXQgc3RhdGUgPSByZWYgU3RhdGUuSWRsZSBpblxuICBsZXQgdGltZW91dHMgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgbGV0IHJ1bl9hZnRlciB+ZiB+bXMgPSBpZ25vcmUgKERvbV9odG1sLnNldFRpbWVvdXQgZiBtcyA6IERvbV9odG1sLnRpbWVvdXRfaWRfc2FmZSkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbWF0Y2ggIXN0YXRlLCBTY2hlZHVsZXIudW5jYXVnaHRfZXhuIHQgd2l0aFxuICAgIHwgXywgU29tZSBfIHwgU3RhdGUuUnVubmluZywgTm9uZSAtPiAoKVxuICAgIHwgKFN0YXRlLklkbGUgfCBTdGF0ZS5XaWxsX3J1bl9zb29uKSwgTm9uZSAtPlxuICAgICAgc3RhdGUgOj0gU3RhdGUuUnVubmluZztcbiAgICAgIFNjaGVkdWxlci5ydW5fY3ljbGUgdDtcbiAgICAgIGxldCBuZXh0X3dha2V1cCA6IE5leHRfd2FrZXVwLnQgPVxuICAgICAgICBpZiBTY2hlZHVsZXIuY2FuX3J1bl9hX2pvYiB0XG4gICAgICAgIHRoZW4gU29vblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBTY2hlZHVsZXIubmV4dF91cGNvbWluZ19ldmVudCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9fd2FrZXVwXG4gICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBUaW1lX25zLmRpZmYgbmV4dCBub3cgaW5cbiAgICAgICAgICAgIGxldCBkX21zID0gVGltZV9ucy5TcGFuLnRvX21zIGQgaW5cbiAgICAgICAgICAgIGlmIEZsb2F0LiggPD0gKSBkX21zIDAuIHRoZW4gU29vbiBlbHNlIEF0IChuZXh0LCBkX21zKSlcbiAgICAgIGluXG4gICAgICBPcHRpb24uaXRlciAoU2NoZWR1bGVyLnVuY2F1Z2h0X2V4bl91bndyYXBwZWQgdCkgfmY6KGZ1biAoZXhuLCBfc2V4cCkgLT5cbiAgICAgICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICAgICAgfCBKcy5FcnJvciBlcnIgLT4gSnMucmFpc2VfanNfZXJyb3IgZXJyXG4gICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgICAgICB8IFNvbWUgZXJyIC0+XG4gICAgICAgICAgICAgKCogSGFjayB0byBnZXQgYSBiZXR0ZXIgYmFja3RyYWNlICopXG4gICAgICAgICAgICAgKCogV2UgZmlyc3Qgb3V0cHV0IHRoZSBzdHJpbmdpZmllZCBvY2FtbCBleGNlcHRpb24gKilcbiAgICAgICAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSk7XG4gICAgICAgICAgICAgKCogQW5kIHRoZW4gcmFpc2UgdGhlIGVtYmVkZGVkIGphdmFzY3JpcHQgZXJyb3IgdGhhdCBwcm92aWRlcyBhIHByb3BlclxuICAgICAgICAgICAgICAgIGJhY2t0cmFjZSB3aXRoIGdvb2Qgc291cmNlbWFwIHN1cHBvcnQuXG4gICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhpcyBqYXZhc2NyaXB0IGVycm9yIGlzIHByb2JhYmx5IG5vdCBtZWFuaW5nZnVsIHdoaWNoIGlzIHdoeVxuICAgICAgICAgICAgICAgIHdlIGZpcnN0IG91dHB1dCB0aGUgc2VyaWFsaXphdGlvbiBvZiBvY2FtbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgSnMucmFpc2VfanNfZXJyb3IgZXJyKSk7XG4gICAgICAobWF0Y2ggbmV4dF93YWtldXAgd2l0aFxuICAgICAgIHwgTm9fd2FrZXVwIC0+IHN0YXRlIDo9IElkbGVcbiAgICAgICB8IFNvb24gLT5cbiAgICAgICAgIHN0YXRlIDo9IFdpbGxfcnVuX3Nvb247XG4gICAgICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC5cbiAgICAgICB8IEF0IChhdCwgZF9tcykgLT5cbiAgICAgICAgIHN0YXRlIDo9IElkbGU7XG4gICAgICAgICBpZiBTdGFjay5pc19lbXB0eSB0aW1lb3V0cyB8fCBUaW1lX25zLiggPCApIGF0IChTdGFjay50b3BfZXhuIHRpbWVvdXRzKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIFN0YWNrLnB1c2ggdGltZW91dHMgYXQ7XG4gICAgICAgICAgIHJ1bl9hZnRlciB+ZjpydW5fdGltZW91dCB+bXM6ZF9tcykpXG4gIGFuZCBydW5fdGltZW91dCAoKSA9XG4gICAgKCogRWFjaCBjYWxsIHRvIFtydW5fdGltZW91dF0gcmVtb3ZlcyBleGFjdGx5IG9uZSBlbGVtZW50IGZyb20gW3RpbWVvdXRzXS4gIFRoaXNcbiAgICAgICBtYWludGFpbnMgdGhlIGludmFyaWFudCB0aGF0IFtTdGFjay5sZW5ndGggdGltZW91dHNdIGlzIGV4YWN0bHkgdGhlIG51bWJlciBvZlxuICAgICAgIG91dHN0YW5kaW5nIHRpbWVvdXRzIHdlIGhhdmUgcmVnaXN0ZXJlZC4gKilcbiAgICBpZ25vcmUgKFN0YWNrLnBvcF9leG4gdGltZW91dHMgOiBUaW1lX25zLnQpO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IFN0YXRlLklkbGUgLT5cbiAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLjtcbiAgICAgIHN0YXRlIDo9IFN0YXRlLldpbGxfcnVuX3Nvb25cbiAgICB8IFN0YXRlLlJ1bm5pbmcgfCBTdGF0ZS5XaWxsX3J1bl9zb29uIC0+ICgpXG47O1xuXG5sZXQgbG9nIG5hbWUgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICB8IEpzLkVycm9yIGVyciAtPiBgSnMgZXJyXG4gICAgfCBleG4gLT5cbiAgICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgICAgfCBOb25lIC0+IGBFeG4gZXhuXG4gICAgICAgfCBTb21lIGVyciAtPiBgSnNfYW5kX2V4biAoZXhuLCBlcnIpKVxuICBpblxuICBtYXRjaCBleG4gd2l0aFxuICB8IGBKcyBlcnIgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgZXJyXG4gIHwgYEV4biBleG4gLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKVxuICB8IGBKc19hbmRfZXhuIChleG4sIGVycikgLT5cbiAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpIGVyclxuOztcblxubGV0IGluaXRpYWxpemVkX3JlZiA9IHJlZiBmYWxzZVxuXG5sZXQgaW5pdGlhbGl6YXRpb24gPVxuICBsYXp5XG4gICAgKGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICAgaW5pdGlhbGl6ZWRfcmVmIDo9IHRydWU7XG4gICAgIFNjaGVkdWxlci5zZXRfam9iX3F1ZXVlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfZXZlbnRfYWRkZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgcnVuO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4biA6PSBsb2cgXCJBc3luY19rZXJuZWw6IE1vbml0b3IudHJ5X3dpdGhcIjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9yc1xuICAgICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLm1haW5cbiAgICAgICB+ZjoobG9nIFwiQXN5bmNfa2VybmVsOiBVbmhhbmRsZWQgZXhjZXB0aW9uXCIpO1xuICAgICBydW4gKCkpXG47O1xuXG5sZXQgaW5pdCAoKSA9IGZvcmNlIGluaXRpYWxpemF0aW9uXG5sZXQgaW5pdGlhbGl6ZWQgKCkgPSAhaW5pdGlhbGl6ZWRfcmVmXG5cbmxldCBkb2N1bWVudF9sb2FkZWQgPVxuICBsZXQganNfc3RyaW5nX2NvbXBhcmUgcyA9XG4gICAgbGV0IGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgPSBwaHlzX2VxdWFsIGluXG4gICAgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyAoSnMuc3RyaW5nIHMpXG4gIGluXG4gIGxldCByZWFkeV9zdGF0ZV9jaGFuZ2UgPSBcInJlYWR5c3RhdGVjaGFuZ2VcIiBpblxuICBsZXQgY29tcGxldGUgPSBcImNvbXBsZXRlXCIgaW5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2VfZXYgPSBEb20uRXZlbnQubWFrZSByZWFkeV9zdGF0ZV9jaGFuZ2UgaW5cbiAgbGV0IGFkZF9ldmVudCB0YXJnZXQgZXZ0IGhhbmRsZXIgPVxuICAgIGlnbm9yZVxuICAgICAgKERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgdGFyZ2V0IGV2dCBoYW5kbGVyIEpzLl9mYWxzZSA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYganNfc3RyaW5nX2NvbXBhcmUgY29tcGxldGUgRG9tX2h0bWwuZG9jdW1lbnQjIy5yZWFkeVN0YXRlXG4gICAgdGhlbiBBc3luY19rZXJuZWwuRGVmZXJyZWQudW5pdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxvYWRlZCA9IEFzeW5jX2tlcm5lbC5JdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGhhbmRsZXIgZXZ0ID1cbiAgICAgICAgaWYgKG5vdCAoanNfc3RyaW5nX2NvbXBhcmUgcmVhZHlfc3RhdGVfY2hhbmdlIGV2dCMjLl90eXBlKSlcbiAgICAgICAgfHwganNfc3RyaW5nX2NvbXBhcmUgY29tcGxldGUgRG9tX2h0bWwuZG9jdW1lbnQjIy5yZWFkeVN0YXRlXG4gICAgICAgIHRoZW4gQXN5bmNfa2VybmVsLkl2YXIuZmlsbF9pZl9lbXB0eSBsb2FkZWQgKCk7XG4gICAgICAgIEpzLl90cnVlXG4gICAgICBpblxuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLmRvY3VtZW50IERvbV9odG1sLkV2ZW50LmRvbUNvbnRlbnRMb2FkZWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLmRvY3VtZW50IHJlYWR5c3RhdGVjaGFuZ2VfZXYgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLndpbmRvdyBEb21faHRtbC5FdmVudC5sb2FkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIEFzeW5jX2tlcm5lbC5JdmFyLnJlYWQgbG9hZGVkKVxuOztcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBIdHRwID0gSHR0cFxubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbmluY2x1ZGUgQXN5bmNfanMwXG5cbmxldCBsb2dfcyA9IERlYnVnLmxvZ19zXG5sZXQgbG9nX3NfYXNfc3RyaW5nID0gRGVidWcubG9nX3NfYXNfc3RyaW5nXG4iLCJvcGVuISBCYXNlXG5cbigqIFRoZSBbZGF0YV0gYXJyYXkgaXMgYW4gaW1wbGljaXQgYmluYXJ5IHRyZWUgd2l0aCBbY2hpbGRyZW5fbGVuZ3RoICogMiAtIDFdIG5vZGVzLFxuICAgd2l0aCBlYWNoIG5vZGUgYmVpbmcgdGhlIHN1bSBvZiB0aGUgdHdvIGNoaWxkIG5vZGVzIGFuZCB0aGUgcm9vdCBub2RlIGJlaW5nIHRoZSAwdGhcbiAgIG5vZGUuICBUaGUgbGVhdmVzIG9mIHRoZSB0cmVlIGFyZSB0aGUgbGFzdCBbbnVtX2xlYXZlc10gbm9kZXMuXG5cbiAgIFRoZSBjaGlsZHJlbiBhcmUgbm90IG5lY2Vzc2FyaWx5IGFsbCBhdCB0aGUgc2FtZSBsZXZlbCBvZiB0aGUgdHJlZS4gRm9yIGluc3RhbmNlIGlmXG4gICB5b3UgaGF2ZSAzIGNoaWxkcmVuIFt8IGE7IGI7IGMgfF06XG5cbiAgIHt2XG4gICAgICAgICAgb1xuICAgICAgICAgLyBcXFxuICAgICAgICBvICAgY1xuICAgICAgIC8gXFxcbiAgICAgIGEgICBiXG4gICB2fVxuXG4gICBXZSB3YW50IHRoaXMgdHJlZSB0byBiZSByZXByZXNlbnRhdGVkIGFzIFt8IG87IG87IGM7IGE7IGIgfF0sIGkuZS4gd2UgbmVlZCB0byBhcHBseVxuICAgZmlyc3QgYSByb3RhdGlvbiB0aGVuIGEgdHJhbnNsYXRpb24gdG8gY29udmVydCBhbiBpbmRleCBpbiBbfCBhOyBiOyBjIHxdIHRvIGEgKGxlYWYpXG4gICBpbmRleCBpbiBbfCBvOyBvOyBjOyBhOyBiIHxdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBkYXRhIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyBudW1fbGVhdmVzIDogaW50XG4gIDsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsIDogaW50XG4gIDsgcmVkdWNlIDogJ2EgLT4gJ2EgLT4gJ2FcbiAgOyBzZXhwX29mX2EgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lm51bV9sZWF2ZXNcblxuKCoge3ZcbiAgICAgcGFyZW50OiAgICAgIDAgIDEgIDIgIDMgIDQgIDUgIDYgIDcgIDggIDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgLi4uXG4gICAgIGxlZnQgY2hpbGQ6ICAxICAzICA1ICA3ICA5IDExIDEzIDE1IDE3IDE5IDIxIDIzIDI1IDI3IDI5IDMxIDMzIDM1IDM3IDM5IC4uLlxuICAgICByaWdodCBjaGlsZDogMiAgNCAgNiAgOCAxMCAxMiAxNCAxNiAxOCAyMCAyMiAyNCAyNiAyOCAzMCAzMiAzNCAzNiAzOCA0MCAuLi4gdn0gKilcbmxldCBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4ID0gKGNoaWxkX2luZGV4IC0gMSkgLyAyXG5sZXQgbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4ID0gKHBhcmVudF9pbmRleCAqIDIpICsgMVxubGV0IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4ID0gbGVmdF9jaGlsZF9pbmRleCArIDFcblxuKCogVGhlIGZpcnN0IFtudW1fbGVhdmVzLTFdIGVsZW1lbnRzIGFyZSBpbnRlcm5hbCBub2RlcyBvZiB0aGUgdHJlZS4gIFRoZSBuZXh0XG4gICBbbnVtX2xlYXZlc10gZWxlbWVudHMgYXJlIHRoZSBsZWF2ZXMuICopXG5sZXQgbnVtX2JyYW5jaGVzIHQgPSB0Lm51bV9sZWF2ZXMgLSAxXG5sZXQgaW5kZXhfaXNfbGVhZiB0IGkgPSBpID49IG51bV9icmFuY2hlcyB0XG5cbigqIFRoZSB0cmVlIGlzIGNvbXBsZXRlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHBlcmZlY3QsIHNvIHdlIHBlcmZvcm0gc29tZSByb3RhdGlvbiBvZiB0aGVcbiAgIGxlYXZlcyB0byBlbnN1cmUgdGhhdCBvdXIgcmVkdWN0aW9ucyBwcmVzZXJ2ZSBvcmRlcmluZy4gKilcbmxldCBsZWFmX2luZGV4IHQgaSA9XG4gICgqIFRoZSB0cmVlIGxheW91dCBpcyBsZXZlbCBvcmRlci4gIEFueSBsZWF2ZXMgaW4gdGhlIHNlY29uZCB0byBsYXN0IGxldmVsIG5lZWQgdG8gb2NjdXJcbiAgICAgaW4gdGhlIGFycmF5IGJlZm9yZSB0aGUgbGVhdmVzIGluIHRoZSBib3R0b20gbGV2ZWwuICopXG4gIGxldCByb3RhdGVkX2luZGV4ID1cbiAgICBsZXQgb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5ID0gaSArIHQubnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsIGluXG4gICAgaWYgb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IDwgdC5udW1fbGVhdmVzXG4gICAgdGhlbiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXlcbiAgICBlbHNlIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSAtIHQubnVtX2xlYXZlc1xuICBpblxuICAoKiBUaGUgbGVhdmVzIG9jY3VyIGFmdGVyIHRoZSBicmFuY2hlcyBpbiB0aGUgYXJyYXkuICopXG4gIHJvdGF0ZWRfaW5kZXggKyBudW1fYnJhbmNoZXMgdFxuOztcblxubGV0IGdldF9sZWFmIHQgaSA9IE9wdGlvbl9hcnJheS5nZXQgdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0X2xlYWYgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodG9fbGlzdCB0IDogYSBvcHRpb24gbGlzdCldXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvXG4gICAgbWF0Y2ggT3B0aW9uX2FycmF5LmdldCBkYXRhIGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+IGludmFyaWFudF9hIGFcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG51bV9icmFuY2hlcyB0IC0gMSBkb1xuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgbGV0IGxlZnRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgbGVmdCBpblxuICAgIGxldCByaWdodF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSByaWdodCBpblxuICAgIGlmIE9wdGlvbl9hcnJheS5pc19zb21lIGRhdGEgaVxuICAgIHRoZW4gYXNzZXJ0IChub3QgKGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKSlcbiAgICBlbHNlXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBpbmRleF9pc19sZWFmIHQgbGVmdCB8fCBpbmRleF9pc19sZWFmIHQgcmlnaHQgfHwgbGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGVfZXhuID8oc2V4cF9vZl9hID0gWyVzZXhwX29mOiBfXSkgKCkgfmxlbjpudW1fbGVhdmVzIH5yZWR1Y2UgPVxuICBpZiBudW1fbGVhdmVzIDwgMVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwibm9uLXBvc2l0aXZlIG51bWJlciBvZiBsZWF2ZXMgaW4gYmFsYW5jZWQgcmVkdWNlclwiIChudW1fbGVhdmVzIDogaW50KV07XG4gIGxldCBudW1fYnJhbmNoZXMgPSBudW1fbGVhdmVzIC0gMSBpblxuICBsZXQgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsID0gSW50LmNlaWxfcG93MiBudW1fbGVhdmVzIC0gbnVtX2xlYXZlcyBpblxuICBsZXQgZGF0YSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoobnVtX2JyYW5jaGVzICsgbnVtX2xlYXZlcykgaW5cbiAgeyBkYXRhOyBudW1fbGVhdmVzOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWw7IHJlZHVjZTsgc2V4cF9vZl9hIH1cbjs7XG5cbmxldCB2YWxpZGF0ZV9pbmRleCB0IGkgPVxuICBpZiBpIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBhY2Nlc3MgbmVnYXRpdmUgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiIH5pbmRleDooaSA6IGludCldO1xuICBsZXQgbGVuZ3RoID0gdC5udW1fbGVhdmVzIGluXG4gIGlmIGkgPj0gbGVuZ3RoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIlxuICAgICAgICAgIH5pbmRleDooaSA6IGludClcbiAgICAgICAgICAobGVuZ3RoIDogaW50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaSBhID1cbiAgdmFsaWRhdGVfaW5kZXggdCBpO1xuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBsZXQgaSA9IHJlZiAobGVhZl9pbmRleCB0IGkpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSBkYXRhICFpIGE7XG4gIHdoaWxlICFpIDw+IDAgZG9cbiAgICBsZXQgcGFyZW50ID0gcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleDohaSBpblxuICAgIGlmIE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcGFyZW50XG4gICAgdGhlbiBpIDo9IDBcbiAgICBlbHNlIChcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgZGF0YSBwYXJlbnQ7XG4gICAgICBpIDo9IHBhcmVudClcbiAgZG9uZVxuOztcblxubGV0IGdldF9leG4gdCBpID1cbiAgdmFsaWRhdGVfaW5kZXggdCBpO1xuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG47O1xuXG5sZXQgcmVjIGNvbXB1dGVfZXhuIHQgaSA9XG4gIGlmIE9wdGlvbl9hcnJheS5pc19zb21lIHQuZGF0YSBpXG4gIHRoZW4gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5kYXRhIGlcbiAgZWxzZSAoXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBpZiBsZWZ0ID49IE9wdGlvbl9hcnJheS5sZW5ndGggdC5kYXRhXG4gICAgdGhlbiAoXG4gICAgICAoKiBJZiB3ZSBnZXQgaGVyZSwgdGhlIHBhcmVudCB3YXMgYW4gdW5zZXQgbGVhZi4gKilcbiAgICAgIGxldCBzZXhwX29mX2EgPSB0LnNleHBfb2ZfYSBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImF0dGVtcHQgdG8gY29tcHV0ZSBiYWxhbmNlZCByZWR1Y2VyIHdpdGggdW5zZXQgZWxlbWVudHNcIlxuICAgICAgICAgICAgfmJhbGFuY2VkX3JlZHVjZXI6KHQgOiBhIHQpXSk7XG4gICAgbGV0IGEgPSB0LnJlZHVjZSAoY29tcHV0ZV9leG4gdCBsZWZ0KSAoY29tcHV0ZV9leG4gdCByaWdodCkgaW5cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZGF0YSBpIGE7XG4gICAgYSlcbjs7XG5cbmxldCBjb21wdXRlX2V4biB0ID0gY29tcHV0ZV9leG4gdCAwXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGxldCBzZXhwX29mX3QgPSBUaW1lX25zLkFsdGVybmF0ZV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgaW5pdCA6ICdhXG4gIDsgc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHsgaW5pdDsgc3RlcHMgPSBfIH0gPSBpbnZhcmlhbnRfYSBpbml0XG5cbmxldCByZWMgdmFsdWVfaW50ZXJuYWwgaW5pdCBzdGVwcyB+YXQgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lICgodCwgYSksIHN0ZXBzKSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8ICkgYXQgdCB0aGVuIGluaXQgZWxzZSB2YWx1ZV9pbnRlcm5hbCBhIHN0ZXBzIH5hdFxuOztcblxubGV0IHZhbHVlIHQgfmF0ID0gdmFsdWVfaW50ZXJuYWwgdC5pbml0IHQuc3RlcHMgfmF0XG5sZXQgY29uc3RhbnQgaW5pdCA9IHsgaW5pdDsgc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eSB9XG5cbmxldCBjcmVhdGVfZXhuIH5pbml0IH5zdGVwcyA9XG4gIGlmIG5vdFxuICAgICAgIChMaXN0LmlzX3NvcnRlZCBzdGVwcyB+Y29tcGFyZTooZnVuICh0aW1lMSwgXykgKHRpbWUyLCBfKSAtPlxuICAgICAgICAgIFRpbWVfbnMuY29tcGFyZSB0aW1lMSB0aW1lMikpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuXSBnb3QgdW5zb3J0ZWQgdGltZXNcIlxuICAgICAgICAgIH5zdGVwczooc3RlcHMgfD4gTGlzdC5tYXAgfmY6ZnN0IDogVGltZV9ucy50IGxpc3QpXTtcbiAgeyBpbml0OyBzdGVwcyA9IHN0ZXBzIHw+IFNlcXVlbmNlLm9mX2xpc3QgfVxuOztcblxubGV0IGNyZWF0ZV9mcm9tX3NlcXVlbmNlIH5pbml0IH5zdGVwcyA9IHsgaW5pdDsgc3RlcHMgfVxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgV2VhayA9IENhbWwuV2Vha1xuXG50eXBlICdhIHQgPSAnYSBIZWFwX2Jsb2NrLnQgV2Vhay50XG5cbmxldCBjcmVhdGUgfmxlbiA9IFdlYWsuY3JlYXRlIGxlblxubGV0IGxlbmd0aCB0ID0gV2Vhay5sZW5ndGggdFxubGV0IHNldCA9IFdlYWsuc2V0XG5cbmxldCBzZXRfZXhuIHQgaSB4ID0gc2V0IHQgaSAoT3B0aW9uLm1hcCB4IH5mOkhlYXBfYmxvY2suY3JlYXRlX2V4bilcblxubGV0IGdldCA9IFdlYWsuZ2V0XG5sZXQgaXNfc29tZSB0IGkgPSBXZWFrLmNoZWNrIHQgaVxubGV0IGlzX25vbmUgdCBpID0gbm90IChpc19zb21lIHQgaSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXQgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cF9vZjogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uIGFycmF5XSAodG9fYXJyYXkgdClcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiBpIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBXZWFrLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4iLCIoKiBXZSBpbXBsZW1lbnQgYSB3ZWFrIHBvaW50ZXIgdXNpbmcgYSBbV2Vha19hcnJheS50XS4gKilcblxub3BlbiEgQ29yZVxuXG50eXBlICdhIHQgPSAnYSBXZWFrX2FycmF5LnRcblxubGV0IGNyZWF0ZSAoKSA9IFdlYWtfYXJyYXkuY3JlYXRlIH5sZW46MVxuXG4oKiBXZSB1c2UgYSB3ZWFrIGFycmF5IG9mIGxlbmd0aCAxLCBzbyB0aGUgd2VhayBwb2ludGVyIGlzIGF0IGluZGV4IDAuICopXG5sZXQgaW5kZXggPSAwXG5cbmxldCBnZXQgdCA9IFdlYWtfYXJyYXkuZ2V0IHQgaW5kZXhcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIEhlYXBfYmxvY2sudCBvcHRpb24pXVxuXG5sZXQgaXNfbm9uZSB0ID0gV2Vha19hcnJheS5pc19ub25lIHQgaW5kZXhcbmxldCBpc19zb21lIHQgPSBXZWFrX2FycmF5LmlzX3NvbWUgdCBpbmRleFxuXG5sZXQgc2V0IHQgYmxvY2sgPSBXZWFrX2FycmF5LnNldCB0IGluZGV4IChTb21lIGJsb2NrKVxuIiwib3BlbiEgSW1wb3J0XG5cblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBlbnRyeV9ieV9rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCdhLCAnYiBXZWFrX3BvaW50ZXIudCkgSGFzaHRibC50XG4gIDsga2V5c193aXRoX3VudXNlZF9kYXRhICAgICAgICAgICAgICAgICAgICA6ICdhIFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDogdW5pdCAtPiB1bml0XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZSA9XG4gICAgeyBlbnRyeV9ieV9rZXkgICAgICAgICAgICAgICAgICAgICA9IEhhc2h0YmwuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5oYXNoYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuICAgIDsga2V5c193aXRoX3VudXNlZF9kYXRhICAgICAgICAgICAgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhID0gaWdub3JlXG4gICAgfVxuICA7O1xuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBVc2luZ19oYXNoYWJsZS5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNodGJsLkhhc2hhYmxlLm9mX2tleSBtKVxuOztcblxubGV0IHNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0IH50aHJlYWRfc2FmZV9mID1cbiAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA8LSB0aHJlYWRfc2FmZV9mO1xuOztcblxubGV0IHJlbW92ZSB0IGtleSA9IEhhc2h0YmwucmVtb3ZlIHQuZW50cnlfYnlfa2V5IGtleVxuXG4oKiBJbiBvcmRlciBmb3IgYSBjYWxsIHRvIFtyZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGFdIHRvIHJlY2xhaW0gYSBrZXkgdGhhdFxuICAgd2FzIHByZXZpb3VzbHkgZmluYWxpemVkLCB0aGUgd2VhayBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIGNsZWFyZWQuICBUaGlzIHJlbGllcyBvbiB0aGVcbiAgIGZhY3QgdGhhdCB0aGUgT0NhbWwgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYXJzIHdlYWtzIGFuZCB0aGVuIHJ1bnMgZmluYWxpemVycy4gKilcbmxldCByZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSA+IDAgZG9cbiAgICBsZXQga2V5ID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZW50cnkgLT4gaWYgV2Vha19wb2ludGVyLmlzX25vbmUgZW50cnkgdGhlbiByZW1vdmUgdCBrZXlcbiAgZG9uZTtcbjs7XG5cbmxldCBnZXRfZW50cnkgdCBrZXkgPVxuICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuZW50cnlfYnlfa2V5IGtleVxuICAgIH5kZWZhdWx0OihmdW4gKCkgLT4gV2Vha19wb2ludGVyLmNyZWF0ZSAoKSk7XG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbjs7XG5cbmxldCBrZXlfaXNfdXNpbmdfc3BhY2UgdCBrZXkgPSBIYXNodGJsLm1lbSB0LmVudHJ5X2J5X2tleSBrZXlcblxubGV0IHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGEgPVxuICBXZWFrX3BvaW50ZXIuc2V0IGVudHJ5IGRhdGE7XG4gIEdjLkV4cGVydC5hZGRfZmluYWxpemVyX2xhc3QgZGF0YSAoZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBrZXk7XG4gICAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSAoKSk7XG47O1xuXG5sZXQgcmVwbGFjZSB0IH5rZXkgfmRhdGEgPSBzZXRfZGF0YSB0IGtleSAoZ2V0X2VudHJ5IHQga2V5KSBkYXRhXG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBpZiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiV2Vha19oYXNodGJsLmFkZF9leG4gb2Yga2V5IGluIHVzZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGE7XG47O1xuXG5sZXQgZmluZCB0IGtleSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmdldCBlbnRyeVxuOztcblxubGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIG1hdGNoIFdlYWtfcG9pbnRlci5nZXQgZW50cnkgd2l0aFxuICB8IFNvbWUgdiAtPiB2XG4gIHwgTm9uZSAtPlxuICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgIHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGE7XG4gICAgZGF0YVxuOztcbiIsInR5cGUgdCA9XG4gIHwgQmVmb3JlXG4gIHwgQWZ0ZXJcbltAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJbJSVpbXBvcnQgXCJkZWJ1Zy5tbGhcIl1cblxub3BlbiBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogQWxsIFthc3NlcnRdcyBhbmQgb3RoZXIgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGNvZGUgYXJlIGd1YXJkZWQgYnkgW2lmIGRlYnVnXS4gIFRoZVxuICAgREVCVUcgdmFyaWFibGUgaXMgc2V0IGluIHRoZSBsaWIgW2luY3JlbWVudGFsXSBhbmQgdW5zZXQgaW4gdGhlIGxpYlxuICAgW2luY3JlbWVudGFsX2RlYnVnXSwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGV5IGFyZSBpZGVudGljYWwuICBUZXN0cyBhcmUgcnVuIHdpdGggYm90aFxuICAgdGhlIHByb2R1Y3Rpb24gYW5kIGRlYnVnIGxpYiwgYW5kIHVzZXJzIGNhbiBjaG9vc2UgdG8gYnVpbGQgd2l0aCB0aGUgZGVidWcgbGlicmFyeSwgaWZcbiAgIHRoZXkgc3VzcGVjdCB0aGV5IGZvdW5kIGEgYnVnIGluIGluY3JlbWVudGFsLiAqKVxuXG5bJSVpZiBKU0NfREVCVUddXG5cbmxldCBkZWJ1ZyA9IHRydWVcblxuWyUlZWxzZV1cblxubGV0IGRlYnVnID0gZmFsc2VcblxuWyUlZW5kaWZdXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgdGFnIG5hbWUgYSBzZXhwX29mX2EgPSAobmFtZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXVxuXG5tb2R1bGUgU3RlcF9mdW5jdGlvbiA9IEluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgQXJyYXlcblxuICAoKiBOb3QgZGVmaW5pbmcgYWxpYXNlcyBpbiBwcm9kdWN0aW9uIG1vZGUsIHNpbmNlIHRoZXkgYnJlYWsgdHlwZSBzcGVjaWFsaXphdGlvbiBvZlxuICAgICBhcnJheSBhY2Nlc3Nlcy4gKilcbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiBhID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgQXJyYXkuYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIFVvcHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVb3B0XG5cbiAgbGV0IHVuc2FmZV92YWx1ZSA9IGlmIGRlYnVnIHRoZW4gdmFsdWVfZXhuIGVsc2UgdW5zYWZlX3ZhbHVlXG5lbmRcblxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbmlmb3JtX2FycmF5XG5cbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbHNlXVxuXG4gICgqIFVuaWZvcm1fYXJyYXkgaXMgYmVpbmcgXCJzbWFydFwiIGJ5IGNoZWNraW5nIGlmIGVsZW1lbnRzIGFyZSBpbnRlZ2VycywgYnV0IFVvcHQudFxuICAgICBhbG1vc3QgbmV2ZXIgY29udGFpbiBpbnRlZ2Vycywgc28gdGhlIGV4dHJhIGNoZWNrIHRvIG1ha2UgZ2VuZXJhdGVkIGNvZGUgaGFyZGVyIHRvXG4gICAgIHJlYWQgYW5kIHBvdGVudGlhbGx5IHNsb3dlci4gKilcbiAgbGV0IHVuc2FmZV9zZXQgPSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnlcbiAgbGV0IHNldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gVW9wdC5ub25lIGluXG4gICAgYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gICgqIFdlIHNwZWNpYWxpemUgc29tZSBjdXRvZmZzIHRvIGF2b2lkIGFuIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGw7IGluIHBhcnRpY3VsYXIgd2VcbiAgICAgc3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCAoYW5kIGhlbmNlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbikgY2FzZSBvZiBwaHlzaWNhbFxuICAgICBlcXVhbGl0eS4gKilcbiAgfCBBbHdheXNcbiAgfCBOZXZlclxuICB8IFBoeXNfZXF1YWxcbiAgfCBDb21wYXJlIG9mICgnYSAtPiAnYSAtPiBpbnQpXG4gIHwgRXF1YWwgb2YgKCdhIC0+ICdhIC0+IGJvb2wpXG4gIHwgRiBvZiAob2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiBib29sKVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWx3YXlzIHwgTmV2ZXIgfCBQaHlzX2VxdWFsIHwgQ29tcGFyZSBfIHwgRXF1YWwgXyB8IEYgXyAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9IEYgZlxubGV0IG9mX2NvbXBhcmUgZiA9IENvbXBhcmUgZlxubGV0IG9mX2VxdWFsIGYgPSBFcXVhbCBmXG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IGFsd2F5cyA9IEFsd2F5c1xubGV0IHBvbHlfZXF1YWwgPSBFcXVhbCBQb2x5LmVxdWFsXG5cbmxldCBzaG91bGRfY3V0b2ZmIHQgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGh5c19lcXVhbCAtPiBwaHlzX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBOZXZlciAtPiBmYWxzZVxuICB8IEFsd2F5cyAtPiB0cnVlXG4gIHwgQ29tcGFyZSBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZSA9IDBcbiAgfCBFcXVhbCBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IEYgZiAtPiBmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuOztcblxubGV0IGVxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBBbHdheXMsIEFsd2F5cyAtPiB0cnVlXG4gIHwgQWx3YXlzLCBfIC0+IGZhbHNlXG4gIHwgTmV2ZXIsIE5ldmVyIC0+IHRydWVcbiAgfCBOZXZlciwgXyAtPiBmYWxzZVxuICB8IFBoeXNfZXF1YWwsIFBoeXNfZXF1YWwgLT4gdHJ1ZVxuICB8IFBoeXNfZXF1YWwsIF8gLT4gZmFsc2VcbiAgfCBDb21wYXJlIGYxLCBDb21wYXJlIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBDb21wYXJlIF8sIF8gLT4gZmFsc2VcbiAgfCBFcXVhbCBmMSwgRXF1YWwgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEVxdWFsIF8sIF8gLT4gZmFsc2VcbiAgfCBGIGYxLCBGIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBGIF8sIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwaHlzX2VxdWFsID0gUGh5c19lcXVhbFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0cmluZ19saXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+c2V4cF9vZl90IH5jb21wYXJlKVxuZW5kXG5cbnR5cGUgZG90ID1cbiAgeyBsYWJlbCA6IFNldC5NKFN0cmluZ19saXN0KS50XG4gIDsgYXR0cmlidXRlcyA6IHN0cmluZyBTdHJpbmcuTWFwLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID1cbiAgfCBEb3Qgb2YgZG90XG4gIHwgSW5mbyBvZiBJbmZvLnRcbiAgfCBBcHBlbmQgb2ZcbiAgICAgIHsgcHJpb3IgOiB0XG4gICAgICA7IG5ld18gOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5mbyBpbmZvID0gSW5mbyBpbmZvXG5sZXQgYXBwZW5kIHByaW9yIG5ld18gPSBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9XG5cbmxldCBkb3QgfmxhYmVsIH5hdHRyaWJ1dGVzID1cbiAgbGV0IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBsYWJlbCBpblxuICBEb3QgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgcmVjIHRvX2RvdCA9IGZ1bmN0aW9uXG4gIHwgSW5mbyBpIC0+XG4gICAgeyBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgWyBJbmZvLnRvX3N0cmluZ19odW0gaSBdXG4gICAgOyBhdHRyaWJ1dGVzID0gU3RyaW5nLk1hcC5lbXB0eVxuICAgIH1cbiAgfCBEb3QgZG90IC0+IGRvdFxuICB8IEFwcGVuZCB7IHByaW9yOyBuZXdfIH0gLT5cbiAgICBsZXQgcHJpb3IgPSB0b19kb3QgcHJpb3IgaW5cbiAgICBsZXQgbmV3XyA9IHRvX2RvdCBuZXdfIGluXG4gICAgbGV0IGxhYmVsID0gU2V0LnVuaW9uIHByaW9yLmxhYmVsIG5ld18ubGFiZWwgaW5cbiAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICBNYXAubWVyZ2Vfc2tld2VkXG4gICAgICAgIHByaW9yLmF0dHJpYnV0ZXNcbiAgICAgICAgbmV3Xy5hdHRyaWJ1dGVzXG4gICAgICAgIH5jb21iaW5lOihmdW4gfmtleTpfIF9sZWZ0IHJpZ2h0IC0+IHJpZ2h0KVxuICAgIGluXG4gICAgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgZXNjYXBlX2RvdF9zdHJpbmcgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL2xhbmcuaHRtbCAqKVxuICBcIlxcXCJcIiBeIFN0cmluZy5zdWJzdHJfcmVwbGFjZV9hbGwgcyB+cGF0dGVybjpcIlxcXCJcIiB+d2l0aF86XCJcXFxcXFxcIlwiIF4gXCJcXFwiXCJcbjs7XG5cbmxldCBlc2NhcGVfcmVjb3JkX2xhYmVsIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9zaGFwZXMuaHRtbCAqKVxuICBTdHJpbmcuY29uY2F0X21hcCBzIH5mOihmdW5jdGlvblxuICAgIHwgKCc8JyB8ICc+JyB8ICd7JyB8ICd9JyB8ICd8JyB8ICdcXFxcJyB8ICcgJykgYXMgYyAtPiBcIlxcXFxcIiBeIFN0cmluZy5vZl9jaGFyIGNcbiAgICB8IGMgLT4gU3RyaW5nLm9mX2NoYXIgYylcbjs7XG5cbmxldCB0b19zdHJpbmcgfm5hbWUgeyBsYWJlbDsgYXR0cmlidXRlcyB9ID1cbiAgbGV0IGxhYmVsID1cbiAgICBsYWJlbFxuICAgIHw+IFNldC50b19saXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjb2xzIC0+XG4gICAgICBcIntcIiBeIFN0cmluZy5jb25jYXQgKExpc3QubWFwIGNvbHMgfmY6ZXNjYXBlX3JlY29yZF9sYWJlbCkgfnNlcDpcInxcIiBeIFwifVwiKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcInxcIlxuICAgIHw+IGZ1biBzIC0+IFwie1wiIF4gcyBeIFwifVwiXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBhdHRyaWJ1dGVzXG4gICAgfD4gTWFwLnRvX2FsaXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgIHNwcmludGYge3wgJXM9JXN8fSAoZXNjYXBlX2RvdF9zdHJpbmcgaykgKGVzY2FwZV9kb3Rfc3RyaW5nIHYpKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICBpblxuICBzcHJpbnRmIHt8ICAlcyBbc2hhcGU9TXJlY29yZCBsYWJlbD0lcyAlc118fSBuYW1lIChlc2NhcGVfZG90X3N0cmluZyBsYWJlbCkgYXR0cmlidXRlc1xuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMSlcblxubGV0IG5leHQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gLTEpXG5sZXQgbm9uZSA9IC0xXG5sZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbmxldCBpc19zb21lIHQgPSB0ID49IDBcbmxldCBhZGQxIHQgPSB0ICsgMVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBQcmV2aW91c191cGRhdGVfa2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkXG4gICAgfCBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTmVjZXNzYXJ5IG9mICdhXG4gICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZiA6ICdhIE5vZGVfdXBkYXRlLnQgLT4gdW5pdFxuICA7IG11dGFibGUgcHJldmlvdXNfdXBkYXRlX2tpbmQgOiBQcmV2aW91c191cGRhdGVfa2luZC50XG4gIDsgY3JlYXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBmIH5hdDpjcmVhdGVkX2F0ID0geyBmOyBwcmV2aW91c191cGRhdGVfa2luZCA9IE5ldmVyX2JlZW5fdXBkYXRlZDsgY3JlYXRlZF9hdCB9XG5cbmxldCByZWFsbHlfcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSA9XG4gIHQucHJldmlvdXNfdXBkYXRlX2tpbmRcbiAgPC0gKG1hdGNoIG5vZGVfdXBkYXRlIHdpdGhcbiAgICB8IE5lY2Vzc2FyeSBfIC0+IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZCBfIC0+IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkIC0+IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeSAtPiBVbm5lY2Vzc2FyeSk7XG4gIHQuZiBub2RlX3VwZGF0ZVxuOztcblxubGV0IHJ1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgfm5vdyA9XG4gICgqIFdlIG9ubHkgcnVuIHRoZSBoYW5kbGVyIGlmIHdhcyBjcmVhdGVkIGluIGFuIGVhcmxpZXIgc3RhYmlsaXphdGlvbiBjeWNsZS4gIElmIHRoZVxuICAgICBoYW5kbGVyIHdhcyBjcmVhdGVkIGJ5IGFub3RoZXIgb24tdXBkYXRlIGhhbmRsZXIgZHVyaW5nIHRoZSBydW5uaW5nIG9mIG9uLXVwZGF0ZVxuICAgICBoYW5kbGVycyBpbiB0aGUgY3VycmVudCBzdGFiaWxpemF0aW9uLCB3ZSB0cmVhdCB0aGUgYWRkZWQgaGFuZGxlciBhcyBpZiBpdCB3ZXJlIGFkZGVkXG4gICAgIGFmdGVyIHRoaXMgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIFdlIHdpbGwgcnVuIGl0IGF0IHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sIGJlY2F1c2VcbiAgICAgdGhlIG5vZGUgd2l0aCB0aGUgaGFuZGxlciB3YXMgcHVzaGVkIG9uIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdC5jcmVhdGVkX2F0IG5vdyA8IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggdC5wcmV2aW91c191cGRhdGVfa2luZCwgbm9kZV91cGRhdGUgd2l0aFxuICAgICgqIE9uY2UgYSBub2RlIGlzIGludmFsaWRhdGVkLCB0aGVyZSB3aWxsIG5ldmVyIGJlIGZ1cnRoZXIgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSxcbiAgICAgICBzaW5jZSBpbmNyZW1lbnRhbCBkb2VzIG5vdCBhbGxvdyBhbiBpbnZhbGlkIG5vZGUgdG8gYmVjb21lIHZhbGlkLiAqKVxuICAgIHwgSW52YWxpZGF0ZWQsIF8gLT4gKClcbiAgICAoKiBUaGVzZSBjYXNlcyBjYW4gaGFwcGVuIGlmIGEgbm9kZSBpcyBoYW5kbGVkIGFmdGVyIHN0YWJpbGl6YXRpb24gZHVlIHRvIGFub3RoZXJcbiAgICAgICBoYW5kbGVyLiAgQnV0IGZvciB0aGUgY3VycmVudCBoYW5kbGVyLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICBuZXcgaW5mb3JtYXRpb24gdG8gcHJvdmlkZS4gKilcbiAgICB8IENoYW5nZWQsIE5lY2Vzc2FyeSBfIHwgTmVjZXNzYXJ5LCBOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5LCBVbm5lY2Vzc2FyeSAtPiAoKVxuICAgICgqIElmIHRoaXMgaGFuZGxlciBoYXNuJ3Qgc2VlbiBhIG5vZGUgdGhhdCBpcyBjaGFuZ2luZywgd2UgdHJlYXQgdGhlIHVwZGF0ZSBhcyBhblxuICAgICAgIGluaXRpYWxpemF0aW9uLiAqKVxuICAgIHwgKE5ldmVyX2JlZW5fdXBkYXRlZCB8IFVubmVjZXNzYXJ5KSwgQ2hhbmdlZCAoXywgYSkgLT4gcmVhbGx5X3J1biB0IChOZWNlc3NhcnkgYSlcbiAgICAoKiBBbGwgb3RoZXIgdXBkYXRlcyBhcmUgcnVuIGFzIGlzLiAqKVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkLCAoTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgVW5uZWNlc3NhcnksIChOZWNlc3NhcnkgXyB8IEludmFsaWRhdGVkKVxuICAgIHwgTmVjZXNzYXJ5LCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IENoYW5nZWQsIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKSAtPiByZWFsbHlfcnVuIHQgbm9kZV91cGRhdGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBleG4gOiBleG5cbiAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGV4biA9IHsgZXhuOyBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIH1cbiIsIigqIFRoaXMgbW9kdWxlIGhhcyBhIGdpYW50IFttb2R1bGUgcmVjXSBkZWZpbmluZyBhbGwgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyB1c2VkXG4gICBpbiB0aGUgaW1wbGVtZW50YXRpb24uICBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIHR5cGUgaXMgdGhlbiByZXBlYXRlZCBpbiBpdHMgZmlsZTtcbiAgIGNvbW1lbnRzIGJlbG9uZyB0aGVyZSwgbm90IGhlcmUuXG5cbiAgIFdlIHB1dCBqdXN0IGVub3VnaCBzZXhwIGNvbnZlcnRlcnMgaGVyZSB0byBkaXNwbGF5IG5vZGUgaWRzLiAgVGhlIGRldGFpbGVkIHNleHBcbiAgIGNvbnZlcnRlcnMgYXJlIGdlbmVyYXRlZCB2aWEgW3dpdGggc2V4cF0gaW4gdGhlIGluZGl2aWR1YWwgZmlsZXMuICBEZWZpbmluZyB0aGUgc2V4cFxuICAgY29udmVydGVycyBvdXRzaWRlIG9mIHRoZSBbbW9kdWxlIHJlY10gbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFcbiAgIHNleHAgY29udmVydGVyIHRoYXQgd291bGQgdHJ5IHRvIHByb2R1Y2UgYW4gaW5maW5pdGUgc2V4cC5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIHJlYyBBZGp1c3RfaGVpZ2h0c19oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIEFkanVzdF9oZWlnaHRzX2hlYXBcblxuYW5kIEFsYXJtIDogc2lnXG4gIHR5cGUgdCA9IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbmVuZCA9XG4gIEFsYXJtXG5cbmFuZCBBbGFybV92YWx1ZSA6IHNpZ1xuICBtb2R1bGUgQWN0aW9uIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgQXQudFxuICAgICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogdCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBBbGFybV92YWx1ZVxuXG5hbmQgQXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICB9XG5lbmQgPVxuICBBcnJheV9mb2xkXG5cbmFuZCBBdCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdFxuXG5hbmQgQXRfaW50ZXJ2YWxzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdF9pbnRlcnZhbHNcblxuYW5kIEJpbmQgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgICA7IG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQmluZFxuXG5hbmQgQ2xvY2sgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQ2xvY2tcblxuYW5kIEV4cGVydCA6IHNpZ1xuICB0eXBlICdhIGVkZ2UgPVxuICAgIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgICA7IG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgcGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZSBbQEB1bmJveGVkXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBmIDogdW5pdCAtPiAnYVxuICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gICAgfVxuZW5kID1cbiAgRXhwZXJ0XG5cbmFuZCBGcmVlemUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICAgIH1cbmVuZCA9XG4gIEZyZWV6ZVxuXG5hbmQgSWZfdGhlbl9lbHNlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICAgIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgICB9XG5lbmQgPVxuICBJZl90aGVuX2Vsc2VcblxuYW5kIEludGVybmFsX29ic2VydmVyIDogc2lnXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IENyZWF0ZWRcbiAgICAgIHwgSW5fdXNlXG4gICAgICB8IERpc2FsbG93ZWRcbiAgICAgIHwgVW5saW5rZWRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIH1cblxuICB0eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyBpbnRlcm5hbF9vYnNlcnZlciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXJcblxuYW5kIEpvaW4gOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgSm9pblxuXG5hbmQgS2luZCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gICAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gICAgfCBDb25zdCBvZiAnYVxuICAgIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gICAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICAgIHwgSW52YWxpZFxuICAgIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gICAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gICAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICAgIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICAgIHwgVW5pbml0aWFsaXplZFxuICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgVmFyIG9mICdhIFZhci50XG4gICAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwNCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA1IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNiA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNyA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA4IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTAgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEyIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMyA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNCA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE1IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhMTVcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG5lbmQgPVxuICBLaW5kXG5cbmFuZCBOb2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IE5vZGVfaWQudFxuICAgIDsgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gICAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gICAgOyBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBwYXJlbnQwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBvYnNlcnZlcnMgOiAnYSBJbnRlcm5hbF9vYnNlcnZlci50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICAgIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl0gW0BAdW5ib3hlZF1cbiAgZW5kXG5cbiAgdmFsIGlzX3ZhbGlkIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX25lY2Vzc2FyeSA6IF8gdCAtPiBib29sXG4gIHZhbCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTm9kZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFBhY2tlZCA6PSBOb2RlLlBhY2tlZClcblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IGNvbmNhdCBbIFwiblwiOyBOb2RlX2lkLnRvX3N0cmluZyB0LmlkIF0gfD4gWyVzZXhwX29mOiBzdHJpbmddXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAdW5ib3hlZF1cblxuICAgIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyBub2RlXVxuICBlbmRcblxuICBsZXQgaXNfdmFsaWQgdCA9XG4gICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICB8IEludmFsaWQgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICA7O1xuXG4gICgqIFtpc19uZWNlc3NhcnldIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgYmVmb3JlIG5vZGUubWwgaXMgYXZhaWxhYmxlLiAgSXQgaXNcbiAgICAgdXNlZCBkdXJpbmcgZ3JhcGggbWFuaXB1bGF0aW9uLCBhbmQgc28gaXMgd3JpdHRlbiB3aXRoIHNvbWUgY2FyZSB0byBiZSBmYXN0LiAqKVxuICBsZXQgaXNfbmVjZXNzYXJ5IHQgPVxuICAgIHQubnVtX3BhcmVudHMgPiAwXG4gICAgfHwgVW9wdC5pc19zb21lIHQub2JzZXJ2ZXJzXG4gICAgfHwgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICB8IEZyZWV6ZSBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8fCB0LmZvcmNlX25lY2Vzc2FyeVxuICA7O1xuXG4gIGxldCB0X2lzX2luamVjdGl2ZSAodHlwZSBhIGIpIChUIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpIDogKGEsIGIpIFR5cGVfZXF1YWwudCA9IFRcblxuICBsZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgKHR5cGUgYSBiKSAodDEgOiBhIHQpICh0MiA6IGIgdCkgPVxuICAgICgqIFRoaXMgaXMgdHlwZS1zYWZlIGFzc3VtaW5nIG5vIG9uZSBjYW4gZ2l2ZSB0aGUgc2FtZSBpbmNyZW1lbnRhbCBub2RlIHR3byBkaWZmZXJlbnRcbiAgICAgICB0eXBlcy4gIFRoaXMgaXMgdHJ1ZSBiZWNhdXNlIHRoZSBmaWVsZCBbbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2Egb3B0aW9uXSBwcmV2ZW50c1xuICAgICAgIGJvdGggc3VidHlwaW5nIGFuZCBwYXJhbWV0ZXJpYyBwb2x5bW9ycGhpc20uICBCdXQgdGhpcyBhbGxvd3MgdG8gYnJlYWtcbiAgICAgICBhYnN0cmFjdGlvbnMsIGFzIGluIHNvbWVvbmUgY291bGQgd3JpdGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0XG4gICAgICAgICB0eXBlIHUgKCogPSB0IHVuZGVybmVhdGggKilcbiAgICAgICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHQgSW5jci50ICogdSBJbmNyLnQgKCogdGhlIHR3byBpbmNyZW1lbnRhbHMgYXJlIHBoeXNfZXF1YWwgKilcbiAgICAgICBdfVxuXG4gICAgICAgYW5kIHdlIHdvdWxkIGZpZ3VyZSBvdXQgdGhhdCB0eXBlIHQgPSB1LiAgSG93ZXZlciwgd2UgY291bGQgYWRkIGEgVHlwZV9lcXVhbC5JZCB0b1xuICAgICAgIG5vZGVzIGFuZCBkbyB0aGUgc2FtZSwgc28gaXQgc2VlbXMgdG8gYmUgYSBtb3JlIGdlbmVyYWwgaXNzdWUuICopXG4gICAgaWYgcGh5c19zYW1lIHQxIHQyXG4gICAgdGhlbiBTb21lICh0X2lzX2luamVjdGl2ZSAoT2JqLm1hZ2ljIChUIDogXyBUeXBlX2VxdWFsLnQpIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpKVxuICAgIGVsc2UgTm9uZVxuICA7O1xuZW5kXG5cbmFuZCBPYnNlcnZlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZlxuZW5kID1cbiAgT2JzZXJ2ZXJcblxuYW5kIE9ubHlfaW5fZGVidWcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIE9ubHlfaW5fZGVidWdcblxuYW5kIFBhY2tlZF93ZWFrX2hhc2h0YmwgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG5lbmQgPVxuICBQYWNrZWRfd2Vha19oYXNodGJsXG5cbmFuZCBSZWNvbXB1dGVfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIFJlY29tcHV0ZV9oZWFwXG5cbmFuZCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZS50IC0+IHRcbmVuZCA9XG4gIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnNcblxuYW5kIFNjb3BlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBUb3AgLT4gXCJUb3BcIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICB8IEJpbmQgYmluZCAtPiBiaW5kLm1haW4gfD4gWyVzZXhwX29mOiBfIE5vZGUudF1cbiAgOztcbmVuZFxuXG5hbmQgU25hcHNob3QgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBiZWZvcmUgOiAnYVxuICAgIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFNuYXBzaG90XG5cbmFuZCBTdGF0ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgICA7IG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gICAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gICAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBTdGF0dXMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFN0YWJpbGl6aW5nXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHwgTm90X3N0YWJpbGl6aW5nXG4gICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5lbmQgPVxuICBTdGF0dXNcblxuYW5kIFN0ZXBfZnVuY3Rpb25fbm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFN0ZXBfZnVuY3Rpb25fbm9kZVxuXG5hbmQgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gICAgOyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICAgIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICAgIH1cbmVuZCA9XG4gIFVub3JkZXJlZF9hcnJheV9mb2xkXG5cbmFuZCBWYXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgICB9XG5cbiAgdHlwZSAnYSB2YXIgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIFZhclxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5WYXIudCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgKCogW3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gaXMgb25seSBzZXQgdG8gW1VvcHQuc29tZV0gaWYgdGhlIHVzZXIgY2FsbHNcbiAgICAgICBbVmFyLnNldF0gZHVyaW5nIHN0YWJpbGl6YXRpb24sIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgdGhlIChsYXN0KSB2YWx1ZSBzZXQuICBBdFxuICAgICAgIHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgYWxsIHN1Y2ggdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgdG8gZG8gW3QudmFsdWUgPC1cbiAgICAgICB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgOyAoKiBbc2V0X2F0XSB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0IHJlY2VudCB0aW1lIFt0LnZhbHVlXSBjaGFuZ2VkLlxuICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgdGltZSBbVmFyLnNldCB0XSB3YXMgY2FsbGVkLCBkdWUgdG8gdGhlIGVmZmVjdCBvZiBbVmFyLnNldF0gZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbiBiZWluZyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnZhbHVlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+c2V0X2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+d2F0Y2g6XG4gICAgICAgIChjaGVjayAoZnVuICh3YXRjaCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB3YXRjaC5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIHBvc3NpYmxlIHdpdGggW351c2VfY3VycmVudF9zY29wZTp0cnVlXSAqKVxuICAgICAgICAgICB8IFZhciB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpKVxuOztcblxubGV0IGluY3Jfc3RhdGUgdCA9IHQud2F0Y2guc3RhdGVcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICdhIHZhciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0ID0gVHlwZXMuVmFyLlBhY2tlZC50ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbGF0ZXN0X3ZhbHVlIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICBlbHNlIHQudmFsdWVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG5tb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGX2ludmVyc2Ugb2YgKCdiIC0+ICdhIC0+ICdiKVxuICAgIHwgVXBkYXRlIG9mICgnYiAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdiKVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1cGRhdGUgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVcGRhdGUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgIHwgRl9pbnZlcnNlIGZfaW52ZXJzZSAtPlxuICAgICAgZnVuIGZvbGRfdmFsdWUgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+IGYgKGZfaW52ZXJzZSBmb2xkX3ZhbHVlIG9sZF92YWx1ZSkgbmV3X3ZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLlVub3JkZXJlZF9hcnJheV9mb2xkLnQgPVxuICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICA7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+dXBkYXRlOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0O1xuICAgICAgICAgICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGVcbiAgICAgICAgICAgICAgICA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgY2hpbGQudmFsdWVfb3B0KSkpKVxuICAgICAgfmZvbGRfdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIGZvbGRfdmFsdWUgLT5cbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2FjYyBmb2xkX3ZhbHVlO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgIChVb3B0LmlzX3NvbWUgZm9sZF92YWx1ZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgKHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpKSlcbiAgICAgIH5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8PSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpKSlcbiAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzOlxuICAgICAgICAoY2hlY2sgKGZ1biBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIC0+XG4gICAgICAgICAgIGFzc2VydCAoZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA+IDApKSkpXG47O1xuXG5sZXQgY3JlYXRlIH5pbml0IH5mIH51cGRhdGUgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgfmNoaWxkcmVuIH5tYWluID1cbiAgeyBpbml0XG4gIDsgZlxuICA7IHVwZGF0ZSA9IFVwZGF0ZS51cGRhdGUgdXBkYXRlIH5mXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7IGNoaWxkcmVuXG4gIDsgbWFpblxuICA7IGZvbGRfdmFsdWUgPVxuICAgICAgVW9wdC5ub25lXG4gICgqIFdlIG1ha2UgW251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc11cbiAgICAgc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgZnVsbCBjb21wdXRhdGlvbiB0aGUgbmV4dCB0aW1lIHRoZSBub2RlIGlzIGNvbXB1dGVkLiAqKVxuICA7IG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB9XG47O1xuXG5sZXQgZnVsbF9jb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW47IF8gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGNvbXB1dGUgdCA9XG4gIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgdGhlbiAoXG4gICAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSAwO1xuICAgIHQuZm9sZF92YWx1ZSA8LSBVb3B0LnNvbWUgKGZ1bGxfY29tcHV0ZSB0KSk7XG4gIFVvcHQudmFsdWVfZXhuIHQuZm9sZF92YWx1ZVxuOztcblxubGV0IGZvcmNlX2Z1bGxfY29tcHV0ZSB0ID1cbiAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQubm9uZTtcbiAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBjaGlsZF9jaGFuZ2VkXG4gICAgICAodHlwZSBhIGIpXG4gICAgICAodCA6IChhLCBfKSB0KVxuICAgICAgfihjaGlsZCA6IGIgTm9kZS50KVxuICAgICAgfmNoaWxkX2luZGV4XG4gICAgICB+KG9sZF92YWx1ZV9vcHQgOiBiIFVvcHQudClcbiAgICAgIH4obmV3X3ZhbHVlIDogYilcbiAgPVxuICBsZXQgY2hpbGRfYXRfaW5kZXggPSB0LmNoaWxkcmVuLihjaGlsZF9pbmRleCkgaW5cbiAgbWF0Y2ggTm9kZS50eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSBjaGlsZCBjaGlsZF9hdF9pbmRleCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXSBtaXNtYXRjaFwiXG4gICAgICAgICAgfnVub3JkZXJlZF9hcnJheV9mb2xkOih0IDogKF8sIF8pIHQpXG4gICAgICAgICAgKGNoaWxkX2luZGV4IDogaW50KVxuICAgICAgICAgIChjaGlsZCA6IF8gTm9kZS50KV1cbiAgfCBTb21lIFQgLT5cbiAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIC0gMVxuICAgIHRoZW4gKFxuICAgICAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlICsgMTtcbiAgICAgICgqIFdlIG9ubHkgcmVhY2ggdGhpcyBjYXNlIGlmIHdlIGhhdmUgYWxyZWFkeSBkb25lIGEgZnVsbCBjb21wdXRlLCBpbiB3aGljaCBjYXNlXG4gICAgICAgICBbVW9wdC5pc19zb21lIHQuZm9sZF92YWx1ZV0gYW5kIFtVb3B0LmlzX3NvbWUgb2xkX3ZhbHVlX29wdF0uICopXG4gICAgICB0LmZvbGRfdmFsdWVcbiAgICAgIDwtIFVvcHQuc29tZVxuICAgICAgICAgICAodC51cGRhdGVcbiAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIHQuZm9sZF92YWx1ZSlcbiAgICAgICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC52YWx1ZV9leG4gb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICAgICAgfm5ld192YWx1ZSkpXG4gICAgZWxzZSBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgdGhlbiBmb3JjZV9mdWxsX2NvbXB1dGUgdFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5cbnR5cGUgdCA9IChUeXBlcy5BbGFybV92YWx1ZS50W0BzZXhwLm9wYXF1ZV0pIEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudWxsID0gQWxhcm0ubnVsbCAoKVxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEFsYXJtX3ZhbHVlID0gVHlwZXMuQWxhcm1fdmFsdWVcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5TdGVwX2Z1bmN0aW9uX25vZGUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IChBbGFybV92YWx1ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBwaHlzX3NhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBbdXBjb21pbmdfc3RlcHNdIGJlY29tZXMgZW1wdHkuICopXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2hpbGQ6aWdub3JlXG4gICAgICB+ZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdDppZ25vcmVcbiAgICAgIH52YWx1ZTooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH51cGNvbWluZ19zdGVwczppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmFsYXJtX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biAoYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBhbGFybV92YWx1ZS5hY3Rpb24gd2l0aFxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdDIgLT4gYXNzZXJ0IChwaHlzX3NhbWUgdCB0MilcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcblxubGV0IHJlYyBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMSBzdGVwcyA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IFNvbWUgKChzdGVwX2F0LCBhMiksIHN0ZXBzMikgd2hlbiBUaW1lX25zLiggPj0gKSB0b18gc3RlcF9hdCAtPlxuICAgIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGEyIHN0ZXBzMlxuICB8IF8gLT5cbiAgICB0LnZhbHVlIDwtIFVvcHQuc29tZSBhMTtcbiAgICB0LnVwY29taW5nX3N0ZXBzIDwtIHN0ZXBzXG47O1xuXG5sZXQgYWR2YW5jZSB0IH50b18gPSBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyAoVW9wdC52YWx1ZV9leG4gdC52YWx1ZSkgdC51cGNvbWluZ19zdGVwc1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuQXJyYXlfZm9sZC50ID1cbiAgeyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0KSkpKVxuOztcblxubGV0IGNvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbiB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0LnQgPVxuICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IEFmdGVyIC0+ICgpICgqIGhhcHBlbnMgb25jZSB0aGUgY3VycmVudCB0aW1lIHBhc3NlcyBbdC5hdF0uICopXG4gICAgICAgICAgIHwgQXQgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmF0Omlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdF9pbnRlcnZhbHMudCA9XG4gIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gIDsgYmFzZSA6IFRpbWVfbnMudFxuICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEF0X2ludGVydmFscyB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YmFzZTppZ25vcmVcbiAgICAgIH5pbnRlcnZhbDooY2hlY2sgKGZ1biBpbnRlcnZhbCAtPiBhc3NlcnQgKFRpbWVfbnMuU3Bhbi5pc19wb3NpdGl2ZSBpbnRlcnZhbCkpKVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBCaW5kID0gVHlwZXMuQmluZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5tb2R1bGUgU2NvcGUgPSBUeXBlcy5TY29wZVxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCaW5kLnQgPVxuICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgOyAoKiBbZl0gaXMgdGhlIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdGhhdCB3ZSBydW4gZWFjaCB0aW1lIFt0Lmxoc10gY2hhbmdlcy4gIEl0IGlzXG4gICAgICAgbXV0YWJsZSBvbmx5IHNvIHdlIGNhbiBjbGVhciBpdCB3aGVuIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyAoKiBbcmhzXSBpcyBpbml0aWFsbHkgW25vbmVdLCBhbmQgYWZ0ZXIgdGhhdCBpcyBbc29tZV0gb2YgdGhlIHJlc3VsdCBvZiB0aGUgbW9zdCByZWNlbnRcbiAgICAgICBjYWxsIHRvIFtmXS4gKilcbiAgICBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgOyAoKiBbcmhzX3Njb3BlXSBpcyB0aGUgc2NvcGUgaW4gd2hpY2ggW3QuZl0gaXMgcnVuLCBpLmUuIGl0IGlzIFtTY29wZS5CaW5kIHRdLiAgSXQgaXNcbiAgICAgICBbbXV0YWJsZV0gb25seSB0byBhdm9pZCBhIFtsZXQgcmVjXSBkdXJpbmcgY3JlYXRpb24uICopXG4gICAgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gIDsgKCogW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gaXMgdGhlIGhlYWQgb2YgdGhlIHNpbmdseS1saW5rZWQgbGlzdCBvZiBub2RlcyBjcmVhdGVkIG9uXG4gICAgICAgdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBbdF0sIGkuZS4gaW4gW3QucmhzX3Njb3BlXS4gKilcbiAgICBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaXNfdmFsaWQgdCA9XG4gIG1hdGNoIHQubWFpbi5raW5kIHdpdGhcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyB0IH4oZiA6IE5vZGUuUGFja2VkLnQgLT4gdW5pdCkgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIGYgKFQgbm9kZV9vbl9yaHMpXG4gIGRvbmVcbjs7XG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIF9pbnZhcmlhbnRfYiB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQmluZF9tYWluIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgbGhzX2NoYW5nZS5jcmVhdGVkX2luIHQubWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbGhzX2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5yaHM6aWdub3JlXG4gICAgICB+cmhzX3Njb3BlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgU2NvcGUuVG9wIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICB8IEJpbmQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpKSlcbiAgICAgIH5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM6XG4gICAgICAgIChjaGVjayAoZnVuIF8gLT5cbiAgICAgICAgICAgaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQucmhzX3Njb3BlKTtcbiAgICAgICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKHQubGhzX2NoYW5nZS5oZWlnaHQgPCBub2RlLmhlaWdodCkpKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSBlZGdlID0gJ2EgVHlwZXMuRXhwZXJ0LmVkZ2UgPVxuICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICA7ICgqIFtpbmRleF0gaXMgZGVmaW5lZCB3aGVuZXZlciB0aGUgW2VkZ2VdIGlzIGluIHRoZSBbY2hpbGRyZW5dIG9mIHNvbWUgW3RdLiBUaGVuIGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIHRoaXMgW2VkZ2VdIGluIHRoYXQgW2NoaWxkcmVuXSBhcnJheS4gSXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgd2l0aCBhbGxcbiAgICAgICB0aGUgb3RoZXIgaW5kZXhlcyB3ZSBoYXZlLCBidXQgaXQgaXMgbmVjZXNzYXJ5IHRvIHJlbW92ZSBjaGlsZHJlbi4gIFRoZSBpbmRleCBtYXlcbiAgICAgICBjaGFuZ2UgYXMgc2libGluZyBjaGlsZHJlbiBhcmUgcmVtb3ZlZC4gKilcbiAgICBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHBhY2tlZF9lZGdlID0gVHlwZXMuRXhwZXJ0LnBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2VcbltAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkV4cGVydC50ID1cbiAgeyBmIDogdW5pdCAtPiAnYVxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZW4gc2V0LCBtYWtlcyB0aGUgbm9kZSBvZiBbdF0gc3RhbGUuICBJdCBpcyBzZXQgd2hlbiB0aGUgc2V0IG9mIGNoaWxkcmVuIGNoYW5nZXMuXG4gICAgICAgT3RoZXJ3aXNlIHRoZSBub3JtYWwgY2hlY2sgb2Ygc3RhbGVuZXNzIChjb21wYXJpbmcgdGhlIFtjaGFuZ2VkX2F0XSBmaWVsZCBvZlxuICAgICAgIGNoaWxkcmVuIGFuZCB0aGUgW3JlY29tcHV0ZWRfYXRdIGZpZWxkIGZvciB0aGUgbm9kZSBvZiBbdF0pIHdvdWxkIG5vdCBiZSBlbm91Z2guXG4gICAgICAgVGhpcyBwbGF5cyBhIHJvbGUgc2ltaWxhciB0byB0aGUgY3V0b2ZmIG9mIFtOZXZlcl0gZm9yIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmRzLCBidXRcbiAgICAgICB3ZSBkb24ndCBoYXZlIGEgc3BlY2lhbCBjaGlsZC4gKilcbiAgICBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICA7ICgqIFRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHBvaW50IHRvIHVzLiAgVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbm9kZVxuICAgICAgIG9mIFt0XSBuZWVkcyB0byBpbnZhbGlkYXRlZCwgd2l0aG91dCBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIGNoaWxkcmVuLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWVkZWQgZm9yIG90aGVyIG5vZGVzLCBiZWNhdXNlIHRoZXJlIGFyZSBubyBvdGhlciBub2RlcyB0aGF0IGhhdmUgYSBwb3RlbnRpYWxseVxuICAgICAgIGxhcmdlIGFuZCBkeW5hbWljIHNldCBvZiBjaGlsZHJlbi4gKilcbiAgICBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hldGhlciB3ZSB3aWxsIGZpcmUgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcyBmb3IgYWxsIGNoaWxkcmVuIHdoZW4gdGhlIG5vZGUgb2YgW3RdXG4gICAgICAgaXRzZWxmIHJ1bnMuICBVc2VkIHRvIG1ha2Ugc3VyZSB3ZSByZXJ1biBldmVyeXRoaW5nIGFmdGVyIFt0XSBzd2l0Y2hlcyBmcm9tXG4gICAgICAgdW5vYnNlcnZhYmxlIGFuZCBiYWNrIHRvIG9ic2VydmFibGUuICopXG4gICAgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudFxuICAgICAgX2ludmFyaWFudF9hXG4gICAgICB7IGYgPSBfXG4gICAgICA7IGNoaWxkcmVuXG4gICAgICA7IG51bV9jaGlsZHJlblxuICAgICAgOyBmb3JjZV9zdGFsZSA9IF9cbiAgICAgIDsgbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBfXG4gICAgICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gX1xuICAgICAgfVxuICA9XG4gIGFzc2VydCAobnVtX2NoaWxkcmVuIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIGNoaWxkcmVuKTtcbiAgaWdub3JlIG51bV9pbnZhbGlkX2NoaWxkcmVuO1xuICAoKiBpbnZhcmlhbnQgaXMgYmVsb3csIGJlY2F1c2Ugd2UgbmVlZCBzb21lIGNvbnRleHQgKilcbiAgVW5pZm9ybV9hcnJheS5pdGVyaSBjaGlsZHJlbiB+ZjooZnVuIGkgdW9wdCAtPlxuICAgIG1hdGNoIGkgPCBudW1fY2hpbGRyZW4gd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gdW9wdCBpblxuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoVW9wdC52YWx1ZV9leG4gci5pbmRleCkgfmV4cGVjdDppXG4gICAgfCBmYWxzZSAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSB1b3B0KSlcbjs7XG5cbmxldCBpbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgbnVtX2ludmFsaWRfY2hpbGRyZW47IF8gfVxuICAgICAgfmlzX25lY2Vzc2FyeVxuICA9XG4gIGlmIG5vdCBpc19uZWNlc3NhcnlcbiAgdGhlbiBbJXRlc3RfcmVzdWx0OiBpbnRdIG51bV9pbnZhbGlkX2NoaWxkcmVuIH5leHBlY3Q6MFxuICBlbHNlIChcbiAgICBsZXQgY291bnRfaW52YWxpZF9jaGlsZHJlbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpKSBpblxuICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIHIuY2hpbGQpIHRoZW4gaW5jciBjb3VudF9pbnZhbGlkX2NoaWxkcmVuXG4gICAgZG9uZTtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIG51bV9pbnZhbGlkX2NoaWxkcmVuIH5leHBlY3Q6IWNvdW50X2ludmFsaWRfY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9XG4gIHsgZlxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlXG4gIDsgY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gIDsgbnVtX2NoaWxkcmVuID0gMFxuICA7IGZvcmNlX3N0YWxlID0gZmFsc2VcbiAgOyBudW1faW52YWxpZF9jaGlsZHJlbiA9IDBcbiAgOyB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IHRydWVcbiAgfVxuOztcblxubGV0IG1ha2Vfc3RhbGUgdCA9XG4gIGlmIHQuZm9yY2Vfc3RhbGVcbiAgdGhlbiBgQWxyZWFkeV9zdGFsZVxuICBlbHNlIChcbiAgICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gICAgYE9rKVxuOztcblxubGV0IGluY3JfaW52YWxpZF9jaGlsZHJlbiB0ID0gdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuICsgMVxubGV0IGRlY3JfaW52YWxpZF9jaGlsZHJlbiB0ID0gdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIC0gMVxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgPVxuICBpZiB0Lm51bV9jaGlsZHJlbiA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuXG4gIHRoZW4gKFxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9jaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pO1xuICAgIGxldCBuZXdfbWF4ID0gSW50Lm1heCAyICgyICogVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbikgaW5cbiAgICB0LmNoaWxkcmVuIDwtIFVuaWZvcm1fYXJyYXkucmVhbGxvYyB0LmNoaWxkcmVuIH5sZW46bmV3X21heClcbjs7XG5cbmxldCBhZGRfY2hpbGRfZWRnZSB0IHBhY2tlZF9lZGdlID1cbiAgbGV0IChFIGVkZ2UpID0gcGFja2VkX2VkZ2UgaW5cbiAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWRnZS5pbmRleCk7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0O1xuICBsZXQgbmV3X2NoaWxkX2luZGV4ID0gdC5udW1fY2hpbGRyZW4gaW5cbiAgZWRnZS5pbmRleCA8LSBVb3B0LnNvbWUgbmV3X2NoaWxkX2luZGV4O1xuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIG5ld19jaGlsZF9pbmRleCAoVW9wdC5zb21lIHBhY2tlZF9lZGdlKTtcbiAgdC5udW1fY2hpbGRyZW4gPC0gdC5udW1fY2hpbGRyZW4gKyAxO1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gICgqIFdlIHdpbGwgYnVtcCB0aGUgbnVtYmVyIG9mIGludmFsaWQgY2hpbGRyZW4gaWYgbmVjZXNzYXJ5IHdoZW4gY29ubmVjdGluZyBjaGlsZCBhbmRcbiAgICAgcGFyZW50LiAgU2FtZSB0aGluZyBmb3IgcnVubmluZyB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzLiAqKVxuICBuZXdfY2hpbGRfaW5kZXhcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuIHQgfmNoaWxkX2luZGV4MSB+Y2hpbGRfaW5kZXgyID1cbiAgbGV0IChFIGVkZ2UxKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSkgaW5cbiAgbGV0IChFIGVkZ2UyKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MikgaW5cbiAgZWRnZTEuaW5kZXggPC0gVW9wdC5zb21lIGNoaWxkX2luZGV4MjtcbiAgZWRnZTIuaW5kZXggPC0gVW9wdC5zb21lIGNoaWxkX2luZGV4MTtcbiAgVW5pZm9ybV9hcnJheS5zd2FwIHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxIGNoaWxkX2luZGV4MlxuOztcblxubGV0IGxhc3RfY2hpbGRfZWRnZV9leG4gdCA9XG4gIGxldCBsYXN0X2luZGV4ID0gdC5udW1fY2hpbGRyZW4gLSAxIGluXG4gIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXgpXG47O1xuXG5sZXQgcmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gdCA9XG4gIGxldCBsYXN0X2luZGV4ID0gdC5udW1fY2hpbGRyZW4gLSAxIGluXG4gIGxldCBwYWNrZWRfZWRnZV9vcHQgPSBVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggaW5cbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IFVvcHQubm9uZTtcbiAgdC5udW1fY2hpbGRyZW4gPC0gbGFzdF9pbmRleDtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICBhc3NlcnQgKFVvcHQuaXNfc29tZSBwYWNrZWRfZWRnZV9vcHQpO1xuICBsZXQgKEUgZWRnZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSBwYWNrZWRfZWRnZV9vcHQgaW5cbiAgZWRnZS5pbmRleCA8LSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBiZWZvcmVfbWFpbl9jb21wdXRhdGlvbiB0ID1cbiAgaWYgdC5udW1faW52YWxpZF9jaGlsZHJlbiA+IDBcbiAgdGhlbiBgSW52YWxpZFxuICBlbHNlIChcbiAgICB0LmZvcmNlX3N0YWxlIDwtIGZhbHNlO1xuICAgIGxldCB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgaW5cbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIGZhbHNlO1xuICAgIGlmIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzXG4gICAgdGhlblxuICAgICAgZm9yIGkgPSAwIHRvIHQubnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBpKSBpblxuICAgICAgICByLm9uX2NoYW5nZSAoVW9wdC52YWx1ZV9leG4gci5jaGlsZC52YWx1ZV9vcHQpXG4gICAgICBkb25lO1xuICAgIGBPaylcbjs7XG5cbmxldCBvYnNlcnZhYmlsaXR5X2NoYW5nZSB0IH5pc19ub3dfb2JzZXJ2YWJsZSA9XG4gIHQub25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgfmlzX25vd19vYnNlcnZhYmxlO1xuICBpZiBub3QgaXNfbm93X29ic2VydmFibGVcbiAgdGhlbiAoXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSB0cnVlO1xuICAgICgqIElmIHdlIGRvbid0IHJlc2V0IG51bV9pbnZhbGlkX2NoaWxkcmVuLCB3ZSB3b3VsZCBkb3VibGUgY291bnQgdGhlbToganVzdCBpbWFnaW5lXG4gICAgICAgd2hhdCBoYXBwZW5zIHdlIGlmIHJlY29ubmVjdC9kaXNjb25uZWN0L3JlY29ubmVjdC9kaXNjb25uZWN0IHdpdGggYW4gaW52YWxpZFxuICAgICAgIGNoaWxkLiAqKVxuICAgIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gMClcbjs7XG5cbmxldCBydW5fZWRnZV9jYWxsYmFjayB0IH5jaGlsZF9pbmRleCA9XG4gIGlmIG5vdCB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzXG4gIHRoZW4gKFxuICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4KSBpblxuICAgICgqIFRoaXMgdmFsdWUgaXMgbm90IG5lY2Vzc2FyaWx5IHNldCwgYmVjYXVzZSB3ZSB0cnkgdG8gcnVuIHRoaXMgd2hlbiBjb25uZWN0aW5nIHRoZVxuICAgICAgIG5vZGUgdG8gaXRzIGNoaWxkcmVuLCB3aGljaCBjb3VsZCBiZSBiZWZvcmUgdGhleSBoYXZlIHJ1biBldmVuIG9uY2UuICBBbHNvIHRoZSBub2RlXG4gICAgICAgY291bGQgYmUgaW52YWxpZC4gKilcbiAgICBpZiBVb3B0LmlzX3NvbWUgci5jaGlsZC52YWx1ZV9vcHRcbiAgICB0aGVuIHIub25fY2hhbmdlIChVb3B0LnVuc2FmZV92YWx1ZSByLmNoaWxkLnZhbHVlX29wdCkpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuaW5jbHVkZSBUeXBlcy5TY29wZVxuXG5sZXQgdG9wID0gVG9wXG5cbmxldCBpc190b3AgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGlnbm9yZSBiaW5kXG47O1xuXG4oKiBVbmxpa2UgZm9yIG5vZGVzLCB0aGVyZSBpcyBubyBpbnZhcmlhbnQgW2lzX25lY2Vzc2FyeSB0IDw9PiBoZWlnaHQgPiAtMV0gKGRvZXNuJ3Qgd29ya1xuICAgYmVjYXVzZSBvZiBbVG9wXSkuICBUaGlzIGlzIGZpbmUgc2luY2UgdGhlIGhlaWdodCBvZiBhIHNjb3BlIGlzIG9ubHkgdXNlZCB0byBjb25zdHJhaW5cbiAgIG90aGVyIGhlaWdodHMsIG5vdCB0byBzY2hlZHVsZSBpdC4gKilcbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAtMVxuICB8IEJpbmQgYmluZCAtPiBiaW5kLmxoc19jaGFuZ2UuaGVpZ2h0XG47O1xuXG5sZXQgaXNfdmFsaWQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaXNfdmFsaWQgYmluZFxuOztcblxubGV0IGlzX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gTm9kZS5pc19uZWNlc3NhcnkgYmluZC5tYWluXG47O1xuXG5sZXQgYWRkX25vZGUgdCAobm9kZSA6IF8gTm9kZS50KSA9XG4gIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdCk7XG4gIG1hdGNoIHQgd2l0aFxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPlxuICAgIG5vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7XG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5zb21lIChUeXBlcy5Ob2RlLlBhY2tlZC5UIG5vZGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkZyZWV6ZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBmcmVlemluZyBhbiBpbnZhbGlkIHZhbHVlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIG9uIGJlY29taW5nIGZyb3plbiAqKVxuICAgICAgICAgICB8IEZyZWV6ZSB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2hpbGQ6aWdub3JlXG4gICAgICB+b25seV9mcmVlemVfd2hlbjppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLklmX3RoZW5fZWxzZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IElmX3RoZW5fZWxzZSB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH50ZXN0Omlnbm9yZVxuICAgICAgfnRlc3RfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAodGVzdF9jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggdGVzdF9jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jdXJyZW50X2JyYW5jaDpcbiAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9icmFuY2ggLT5cbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCBjdXJyZW50X2JyYW5jaCA9IFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC50aGVuXyB8fCBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQuZWxzZV8pKSkpXG4gICAgICB+dGhlbl86aWdub3JlXG4gICAgICB+ZWxzZV86aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Kb2luLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSm9pbl9tYWluIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbGhzX2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5yaHM6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5TbmFwc2hvdC50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBiZWZvcmUgOiAnYVxuICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIHNuYXBzaG90dGluZyBhbiBpbnZhbGlkIG5vZGUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgYWZ0ZXIgdGhlIHNuYXBzaG90ICopXG4gICAgICAgICAgIHwgU25hcHNob3QgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmF0Omlnbm9yZVxuICAgICAgfmJlZm9yZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfYXQ6aWdub3JlXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5LaW5kLnQgPVxuICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgfCBDb25zdCBvZiAnYVxuICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgfCBJbnZhbGlkXG4gIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgfCBVbmluaXRpYWxpemVkXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IFZhciBvZiAnYSBWYXIudFxuICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDQgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgKiAnYTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNiA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNyA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwOCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwOSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTAgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTEgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2ExMSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMiA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTMgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxNCA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhMTRcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxNSA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhMTRcbiAgICAgICAtPiAnYTE1XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAqICdhMTUgTm9kZS50XG4gICAgICAtPiAnYSB0XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbmFtZSA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQXJyYXlfZm9sZCBfIC0+IFwiQXJyYXlfZm9sZFwiXG4gIHwgQXQgXyAtPiBcIkF0XCJcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBcIkF0X2ludGVydmFsc1wiXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gXCJCaW5kX2xoc19jaGFuZ2VcIlxuICB8IEJpbmRfbWFpbiBfIC0+IFwiQmluZF9tYWluXCJcbiAgfCBDb25zdCBfIC0+IFwiQ29uc3RcIlxuICB8IEV4cGVydCBfIC0+IFwiRXhwZXJ0XCJcbiAgfCBGcmVlemUgXyAtPiBcIkZyZWV6ZVwiXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBcIklmX3Rlc3RfY2hhbmdlXCJcbiAgfCBJZl90aGVuX2Vsc2UgXyAtPiBcIklmX3RoZW5fZWxzZVwiXG4gIHwgSW52YWxpZCAtPiBcIkludmFsaWRcIlxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IFwiSm9pbl9saHNfY2hhbmdlXCJcbiAgfCBKb2luX21haW4gXyAtPiBcIkpvaW5fbWFpblwiXG4gIHwgTWFwIF8gLT4gXCJNYXBcIlxuICB8IE1hcDIgXyAtPiBcIk1hcDJcIlxuICB8IE1hcDMgXyAtPiBcIk1hcDNcIlxuICB8IE1hcDQgXyAtPiBcIk1hcDRcIlxuICB8IE1hcDUgXyAtPiBcIk1hcDVcIlxuICB8IE1hcDYgXyAtPiBcIk1hcDZcIlxuICB8IE1hcDcgXyAtPiBcIk1hcDdcIlxuICB8IE1hcDggXyAtPiBcIk1hcDhcIlxuICB8IE1hcDkgXyAtPiBcIk1hcDlcIlxuICB8IE1hcDEwIF8gLT4gXCJNYXAxMFwiXG4gIHwgTWFwMTEgXyAtPiBcIk1hcDExXCJcbiAgfCBNYXAxMiBfIC0+IFwiTWFwMTJcIlxuICB8IE1hcDEzIF8gLT4gXCJNYXAxM1wiXG4gIHwgTWFwMTQgXyAtPiBcIk1hcDE0XCJcbiAgfCBNYXAxNSBfIC0+IFwiTWFwMTVcIlxuICB8IFNuYXBzaG90IF8gLT4gXCJTbmFwc2hvdFwiXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IFwiU3RlcF9mdW5jdGlvblwiXG4gIHwgVW5pbml0aWFsaXplZCAtPiBcIlVuaW5pdGlhbGl6ZWRcIlxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT4gXCJVbm9yZGVyZWRfYXJyYXlfZm9sZFwiXG4gIHwgVmFyIF8gLT4gXCJWYXJcIlxuOztcblxubGV0IGludmFyaWFudCA6IHR5cGUgYS4gYSBJbnZhcmlhbnQudCAtPiBhIHQgSW52YXJpYW50LnQgPVxuICBmdW4gaW52YXJpYW50X2EgdCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gQXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIGFycmF5X2ZvbGRcbiAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGlnbm9yZSBiaW5kXG4gIHwgQmluZF9tYWluIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIGJpbmRcbiAgfCBDb25zdCBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQuaW52YXJpYW50IGludmFyaWFudF9hIGVcbiAgfCBGcmVlemUgZnJlZXplIC0+IEZyZWV6ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgZnJlZXplXG4gIHwgSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaWdub3JlIGlmX3RoZW5fZWxzZVxuICB8IElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpbnZhcmlhbnRfYSBpZl90aGVuX2Vsc2VcbiAgfCBJbnZhbGlkIC0+ICgpXG4gIHwgSm9pbl9saHNfY2hhbmdlIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaWdub3JlIGpvaW5cbiAgfCBKb2luX21haW4gam9pbiAtPiBKb2luLmludmFyaWFudCBpbnZhcmlhbnRfYSBqb2luXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF8gLT4gKClcbiAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaW52YXJpYW50X2Egc25hcHNob3RcbiAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2Egc3RlcF9mdW5jdGlvbl9ub2RlXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHVub3JkZXJlZF9hcnJheV9mb2xkIC0+XG4gICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICB8IFZhciB2YXIgLT4gVmFyLmludmFyaWFudCBpZ25vcmUgdmFyXG47O1xuXG5sZXQgaW5pdGlhbF9udW1fY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXQgXyAtPiAwXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gMFxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBCaW5kX21haW4gXyAtPiAyXG4gIHwgQ29uc3QgXyAtPiAwXG4gIHwgRXhwZXJ0IF8gLT4gMFxuICB8IEZyZWV6ZSBfIC0+IDFcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IDFcbiAgfCBJZl90aGVuX2Vsc2UgXyAtPiAyXG4gIHwgSW52YWxpZCAtPiAwXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEpvaW5fbWFpbiBfIC0+IDJcbiAgfCBNYXAgXyAtPiAxXG4gIHwgTWFwMiBfIC0+IDJcbiAgfCBNYXAzIF8gLT4gM1xuICB8IE1hcDQgXyAtPiA0XG4gIHwgTWFwNSBfIC0+IDVcbiAgfCBNYXA2IF8gLT4gNlxuICB8IE1hcDcgXyAtPiA3XG4gIHwgTWFwOCBfIC0+IDhcbiAgfCBNYXA5IF8gLT4gOVxuICB8IE1hcDEwIF8gLT4gMTBcbiAgfCBNYXAxMSBfIC0+IDExXG4gIHwgTWFwMTIgXyAtPiAxMlxuICB8IE1hcDEzIF8gLT4gMTNcbiAgfCBNYXAxNCBfIC0+IDE0XG4gIHwgTWFwMTUgXyAtPiAxNVxuICB8IFNuYXBzaG90IF8gLT4gMFxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiAxXG4gIHwgVW5pbml0aWFsaXplZCAtPiAwXG4gIHwgVmFyIF8gLT4gMFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbjs7XG5cbmxldCBiaW5kX3Joc19jaGlsZF9pbmRleCA9IDFcbmxldCBmcmVlemVfY2hpbGRfaW5kZXggPSAwXG5sZXQgaWZfYnJhbmNoX2NoaWxkX2luZGV4ID0gMVxubGV0IGpvaW5fcmhzX2NoaWxkX2luZGV4ID0gMVxuXG4oKiBXZSBkbyBub3QgaW1wbGVtZW50IHRoZSB0aW1lLWJhc2VkIG5vZGVzIChbQXRdLCBbQXRfaW50ZXJ2YWxzXSwgW1NuYXBzaG90XSxcbiAgIFtTdGVwX2Z1bmN0aW9uXSkgYXMgcGFyZW50cyBvZiB0aGUgY3VycmVudC10aW1lIG5vZGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBXZSBkb24ndFxuICAgd2FudCBhbGwgc3VjaCBub2RlcyB0byBiZSByZWNvbXB1dGVkIHdoZW5ldmVyIHRoZSB0aW1lIGNoYW5nZXMsIHdoaWNoIHdvdWxkIGJlIGhvcnJpYmx5XG4gICBpbm5lZmljaWVudC4gIEluc3RlYWQsIHdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgYXQgdGhlIFwicmlnaHRcIiB0aW1lLFxuICAgaS5lLiB3aGVuIHRpbWUgcGFzc2VzIHNvbWUgdGhyZXNob2xkIHJlbGV2YW50IHRvIHRoZW0uICBXZSBkbyB0aGlzIHZpYSBzY2hlZHVsaW5nXG4gICBhbGFybXMgYXQgdGhvc2UgdGhyZXNob2xkcy4gKilcbmxldCBpdGVyaV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogaW50IC0+IE5vZGUuUGFja2VkLnQgLT4gdW5pdCkgOiB1bml0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgICAgZiBpIChUIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpKVxuICAgIGRvbmVcbiAgfCBBdCBfIC0+ICgpXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gKClcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBmIDAgKFQgYmluZC5saHMpXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICAoKiBWYXJpb3VzIGNvZGUsIGUuZy4gW3N0YXRlLmJlY2FtZV9uZWNlc3NhcnldLCByZWxpZXMgb24gcHJvY2Vzc2luZyBbbGhzX2NoYW5nZV1cbiAgICAgICBiZWZvcmUgW3Joc10uICopXG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgQ29uc3QgXyAtPiAoKVxuICB8IEV4cGVydCB7IGNoaWxkcmVuOyBudW1fY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEV4cGVydC5FIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSBpblxuICAgICAgZiBpIChUIHIuY2hpbGQpXG4gICAgZG9uZVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBfIH0gLT4gZiAwIChUIGNoaWxkKVxuICB8IElmX3Rlc3RfY2hhbmdlIHsgdGVzdDsgXyB9IC0+IGYgMCAoVCB0ZXN0KVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgZiAwIChUIHRlc3RfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2ggdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGN1cnJlbnRfYnJhbmNoKSlcbiAgfCBJbnZhbGlkIC0+ICgpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gZiAwIChUIGxocylcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IFNuYXBzaG90IF8gLT4gKClcbiAgfCBTdGVwX2Z1bmN0aW9uIHsgY2hpbGQ7IF8gfSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZCB0aGVuIGYgMCAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY2hpbGQpKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgICAgZiBpIChUIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpKVxuICAgIGRvbmVcbiAgfCBWYXIgXyAtPiAoKVxuICB8IE1hcCAoXywgbm9kZTApIC0+IGYgMCAoVCBub2RlMClcbiAgfCBNYXAyIChfLCBub2RlMCwgbm9kZTEpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpXG4gIHwgTWFwMyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKVxuICB8IE1hcDQgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMylcbiAgfCBNYXA1IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpXG4gIHwgTWFwNiAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KVxuICB8IE1hcDcgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNilcbiAgfCBNYXA4IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpXG4gIHwgTWFwOSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KVxuICB8IE1hcDEwIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpXG4gIHwgTWFwMTEgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5LCBub2RlMTApXG4gICAgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKVxuICB8IE1hcDEyXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMSApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpXG4gIHwgTWFwMTNcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMiApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKVxuICB8IE1hcDE0XG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTJcbiAgICAgICwgbm9kZTEzICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKVxuICB8IE1hcDE1XG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTJcbiAgICAgICwgbm9kZTEzXG4gICAgICAsIG5vZGUxNCApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMyk7XG4gICAgZiAxNCAoVCBub2RlMTQpXG47O1xuXG4oKiBbc2xvd19nZXRfY2hpbGRdIGlzIG9ubHkgdXNlZCBieSBbTm9kZS5pbnZhcmlhbnRdLCBzbyB3ZSBkb24ndCBtaW5kIHVzaW5nIFt3aXRoX3JldHVybl1cbiAgIGFuZCBbaXRlcmlfY2hpbGRyZW5dLiAgSWYgd2UgZXZlciBuZWVkIGEgZmFzdCBbZ2V0X2NoaWxkXSwgd2UgY29kZWQgaXQgaW4gcmV2XG4gICA0OGRiZmQwM2M5YzUuICopXG5sZXQgc2xvd19nZXRfY2hpbGQgOiB0eXBlIGEuIGEgdCAtPiBpbmRleDpfIC0+IE5vZGUuUGFja2VkLnQgPVxuICBmdW4gdCB+aW5kZXggLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IEV4cGVydCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBsZXQgKEUgZWRnZSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaW5kZXgpIGluXG4gICAgVCBlZGdlLmNoaWxkXG4gIHwgXyAtPlxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIGkgY2hpbGQgLT4gaWYgaSA9IGluZGV4IHRoZW4gci5yZXR1cm4gY2hpbGQpO1xuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJLaW5kLnNsb3dfZ2V0X2NoaWxkIGdvdCBpbnZhbGlkIGluZGV4XCJcbiAgICAgICAgKGluZGV4LCB0KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIF8gdF0pXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBLaW5kXG5tb2R1bGUgSW50ZXJuYWxfb2JzZXJ2ZXIgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5vcGVuIE5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuTm9kZS50ID1cbiAgeyAoKiBbaWRdIGlzIGEgdW5pcXVlIGlkIGZvciB0aGUgbm9kZS4gKilcbiAgICBpZCA6IE5vZGVfaWQudFxuICA7IHN0YXRlIDogKFR5cGVzLlN0YXRlLnRbQHNleHAub3BhcXVlXSlcbiAgOyAoKiBUaGUgZmllbGRzIGZyb20gW3JlY29tcHV0ZWRfYXRdIHRvIFtjcmVhdGVkX2luXSBhcmUgZ3JvdXBlZCB0b2dldGhlciBhbmQgYXJlIGluIHRoZVxuICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgdXNlZCBieSBbU3RhdGUucmVjb21wdXRlXSBUaGlzIGhhcyBhIHBvc2l0aXZlIHBlcmZvcm1hbmNlXG4gICAgICAgaW1wYWN0IGR1ZSB0byBjYWNoZSBlZmZlY3RzLiAgRG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGVzZSBub2RlcyB3aXRob3V0XG4gICAgICAgcGVyZm9ybWFuY2UgdGVzdGluZy4gKilcbiAgICAoKiBbcmVjb21wdXRlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIFt0XSdzIHZhbHVlIHdhcyByZWNvbXB1dGVkLCBldmVuIGlmXG4gICAgICAgaXQgd2FzIGN1dCBvZmYuICopXG4gICAgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7ICgqIFt2YWx1ZV9vcHRdIHN0YXJ0cyBhcyBbbm9uZV0sIGFuZCB0aGUgZmlyc3QgdGltZSBbdF0gaXMgY29tcHV0ZWQgaXQgaXMgc2V0IHRvXG4gICAgICAgW3NvbWVdLCBhbmQgcmVtYWlucyBbc29tZV0gdGhlcmVhZnRlciwgdW50aWwgW3RdIGlzIGludmFsaWRhdGVkLCBpZiBldmVyLiAqKVxuICAgIG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW2tpbmRdIGlzIHRoZSBraW5kIG9mIERBRyBub2RlIFt0XSBpcy4gIFtraW5kXSBpcyBtdXRhYmxlIGJvdGggZm9yIGluaXRpYWxpemF0aW9uXG4gICAgICAgYW5kIGJlY2F1c2UgaXQgY2FuIGNoYW5nZSwgZS5nLiBpZiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICA7ICgqIFtjaGFuZ2VkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gdGhpcyBub2RlIHdhcyBjb21wdXRlZCBhbmQgbm90IGN1dCBvZmYuXG4gICAgICAgSXQgaXMgdXNlZCB0byBkZXRlY3Qgd2hlbiBbdF0ncyBwYXJlbnRzIGFyZSBzdGFsZSBhbmQgKGJlY2F1c2UgYWxsIHBhcmVudHMgYXJlXG4gICAgICAgbmVjZXNzYXJ5KSBuZWVkIHRvIGJlIHJlY29tcHV0ZWQuICopXG4gICAgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7ICgqIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSBpcyBbTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNdIHBsdXMgdGhlIG51bWJlciBvZlxuICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyBzdW1tZWQgb3ZlciBhbGwgb2JzZXJ2ZXJzIGluIFt0Lm9ic2VydmVyc10uICBJdCBpcyB1c2VkIHRvXG4gICAgICAgcXVpY2tseSBkZWNpZGUgd2hldGhlciBbdF0gbmVlZHMgdG8gYmUgYWRkZWQgdG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXVxuICAgICAgIHdoZW4gW3RdIGNoYW5nZXMuICBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2lsbCBkZWNyZWFzZSB3aGVuIGFuIG9ic2VydmVyIGlzXG4gICAgICAgcmVtb3ZlZCBmcm9tIFt0Lm9ic2VydmVyc10sIGlmIHRoZSBvYnNlcnZlciBoYXMgb24tdXBkYXRlIGhhbmRsZXJzLiAqKVxuICAgIG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICA7ICgqIFRoZSBwYXJlbnRzIG9mIFt0XSBhcmUgdGhlIG5vZGVzIHRoYXQgZGVwZW5kIG9uIGl0LCBhbmQgc2hvdWxkIGJlIGNvbXB1dGVkIHdoZW4gW3RdXG4gICAgICAgY2hhbmdlcywgb25jZSBhbGwgb2YgdGhlaXIgb3RoZXIgY2hpbGRyZW4gYXJlIHVwIHRvIGRhdGUuICBbbnVtX3BhcmVudHNdIGlzIHRoZVxuICAgICAgIG51bWJlciBvZiBwYXJlbnRzLiAgSWYgW251bV9wYXJlbnRzID49IDFdLCB0aGVuIFtwYXJlbnQwXSBpcyB0aGUgZmlyc3QgcGFyZW50LlxuICAgICAgIFtwYXJlbnQxX2FuZF9iZXlvbmRdIGhvbGRzIHRoZSByZW1haW5pbmcgcGFyZW50cy4gIFRoZSBvcmRlciBvZiB0aGUgcGFyZW50cyBkb2Vzbid0XG4gICAgICAgbWF0dGVyLiAgT25lIG5vZGUgbWF5IG9jY3VyIG11bHRpcGxlIHRpbWVzIGFzIGEgcGFyZW50IG9mIGFub3RoZXIgKGUuZy4gY29uc2lkZXJcbiAgICAgICBbbWFwMiBuMSBuMSB+Zl0pLlxuXG4gICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIHRoZSBvdmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSB0aGF0IGEgbm9kZSBoYXNcbiAgICAgICBvbmx5IG9uZSBwYXJlbnQuICopXG4gICAgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICA7IG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgcGFyZW50MCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtjcmVhdGVkX2luXSBpcyBpbml0aWFsbHkgdGhlIHNjb3BlIHRoYXQgdGhlIG5vZGUgaXMgY3JlYXRlZCBpbi4gIElmIGEgbm9kZSBpc1xuICAgICAgIGxhdGVyIFwicmVzY29wZWRcIiwgdGhlbiBjcmVhdGVkX2luIHdpbGwgYmUgYWRqdXN0ZWQgdG8gdGhlIG5ldyBzY29wZSB0aGF0IHRoZSBub2RlXG4gICAgICAgaXMgcGFydCBvZi4gKilcbiAgICBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gIDsgKCogW25leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIGNyZWF0ZWQgaW4gW3QuY3JlYXRlZF9pbl0uICopXG4gICAgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtoZWlnaHRdIGlzIHVzZWQgdG8gdmlzaXQgbm9kZXMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIuICBJZiBbaXNfbmVjZXNzYXJ5IHRdLCB0aGVuXG4gICAgICAgW2hlaWdodCA+IGMuaGVpZ2h0XSBmb3IgYWxsIGNoaWxkcmVuIFtjXSBvZiBbdF0sIGFuZCBbaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0XG4gICAgICAgdC5jcmVhdGVkX2luXS4gIElmIFtub3QgKGlzX25lY2Vzc2FyeSB0KV0sIHRoZW4gW2hlaWdodCA9IC0xXS4gKilcbiAgICBtdXRhYmxlIGhlaWdodCA6IGludFxuICA7ICgqIFtoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIGlzIHRoZSBoZWlnaHQgYXQgd2hpY2ggW3RdIGlzIHN0b3JlZCBpbiB0aGUgcmVjb21wdXRlXG4gICAgICAgaGVhcCwgYW5kIGlzIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIElmIFt0XSBpcyB0aGVcbiAgICAgICByZWNvbXB1dGUgaGVhcCwgdGhlbiB0eXBpY2FsbHkgW3QuaGVpZ2h0ID0gdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdOyBob3dldmVyLFxuICAgICAgIHdoaWxlIGhlaWdodCBpcyBiZWluZyBhZGp1c3RlZCwgb25lIGNhbiB0ZW1wb3JhcmlseSBoYXZlIFt0LmhlaWdodCA+XG4gICAgICAgdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdLiAgV2hlbiBoZWlnaHQgYWRqdXN0bWVudCBmaW5pc2hlcywgZXF1YWxpdHkgaXMgcmVzdG9yZWRcbiAgICAgICBieSBpbmNyZWFzaW5nIFt0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gdG8gW3QuaGVpZ2h0XSBhbmQgc2hpZnRpbmcgW3RdJ3NcbiAgICAgICBwb3NpdGlvbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgOyAoKiBbcHJldl9pbl9yZWNvbXB1dGVfaGVhcF0gYW5kIFtuZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBkb3VibHkgbGluayBhbGwgbm9kZXMgb2YgdGhlXG4gICAgICAgc2FtZSBoZWlnaHQgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF0gaXMgdXNlZCBvbmx5IGR1cmluZyBoZWlnaHQgYWRqdXN0bWVudCwgYW5kIGlzXG4gICAgICAgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIGFkanVzdC1oZWlnaHRzIGhlYXAuICBJdCBob2xkcyB0aGUgcHJlLWFkanVzdGVkXG4gICAgICAgaGVpZ2h0IG9mIFt0XS4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gIDsgKCogW25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBvZiB0aGUgc2FtZSBoZWlnaHQgaW4gdGhlXG4gICAgICAgYWRqdXN0LWhlaWdodHMgaGVhcC4gKilcbiAgICBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtvbGRfdmFsdWVfb3B0XSBpcyB1c2VkIG9ubHkgZHVyaW5nIHN0YWJpbGl6YXRpb24sIGFuZCBvbmx5IGlmXG4gICAgICAgW3QubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBdLiAgSXQgaG9sZHMgdGhlIHByZS1zdGFiaWxpemF0aW9uIHZhbHVlIG9mIFt0XS4gIEl0XG4gICAgICAgaXMgY2xlYXJlZCB3aGVuIHJ1bm5pbmcgW3RdJ3Mgb24tdXBkYXRlIGhhbmRsZXJzLCBhbmQgc28gaXMgYWx3YXlzIFtVb3B0Lm5vbmVdXG4gICAgICAgYmV0d2VlbiBzdGFiaWxpemF0aW9ucy4gKilcbiAgICBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBbb2JzZXJ2ZXJzXSBpcyB0aGUgaGVhZCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIG9ic2VydmVycyBvZiBbdF0sIG9yXG4gICAgICAgW1VvcHQubm9uZV0gaWYgdGhlcmUgYXJlIG5vIG9ic2VydmVycy4gKilcbiAgICBtdXRhYmxlIG9ic2VydmVycyA6ICgnYSBJbnRlcm5hbF9vYnNlcnZlci50W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7ICgqIFtpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaXMgdXNlZCB0byBhdm9pZCBwdXNoaW5nIHRoZSBzYW1lIG5vZGUgbXVsdGlwbGVcbiAgICAgICB0aW1lcyBvbnRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgOyAoKiBbb25fdXBkYXRlX2hhbmRsZXJzXSBpcyB0aGUgZnVuY3Rpb25zIHN1cHBsaWVkIHRvIFtJbmNyZW1lbnRhbC5vbl91cGRhdGVdIHRvIGJlIHJ1blxuICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUgbW9kdWxlIFtPbl91cGRhdGVfaGFuZGxlcl0uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBkb2VzIG5vdFxuICAgICAgIGNvbnRhaW4gdGhlIG9uLXVwZGF0ZSBoYW5kbGVycyBpbiBbdC5vYnNlcnZlcnNdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gb25seSBldmVyXG4gICAgICAgZ2V0cyBsb25nZXI7IHRoZXJlIGlzIG5vIHdheSB0byByZW1vdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgcGFja2VkX3NhbWUgKFBhY2tlZC5UIHQxKSAoUGFja2VkLlQgdDIpID0gc2FtZSB0MSB0MlxubGV0IGlzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5XG5sZXQgaW5pdGlhbF9udW1fY2hpbGRyZW4gdCA9IEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4gdC5raW5kXG5sZXQgaXRlcmlfY2hpbGRyZW4gdCB+ZiA9IEtpbmQuaXRlcmlfY2hpbGRyZW4gdC5raW5kIH5mXG5sZXQgaXNfdmFsaWQgPSBOb2RlLmlzX3ZhbGlkXG5sZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgPSB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZVxuXG5sZXQgdXNlcl9pbmZvIHQgPVxuICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoSW5mbyBpKSAtPiBTb21lIGlcbiAgfCBTb21lIG90aGVyIC0+IFNvbWUgKEluZm8uY3JlYXRlX3MgKERvdF91c2VyX2luZm8uc2V4cF9vZl90IG90aGVyKSlcbjs7XG5cbmxldCBzZXRfdXNlcl9pbmZvIHQgaW5mbyA9XG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCBpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKEluZm8gaSkpXG47O1xuXG5sZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0IH5sYWJlbCB+YXR0cnMgPVxuICBsZXQgbmV3XyA9IERvdF91c2VyX2luZm8uZG90IH5sYWJlbCB+YXR0cmlidXRlczphdHRycyBpblxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIG5ld19cbiAgICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoRG90X3VzZXJfaW5mby5hcHBlbmQgb3RoZXIgbmV3XykpXG47O1xuXG5sZXQgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudCA9XG4gIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgY2hpbGQuY2hhbmdlZF9hdCBwYXJlbnQucmVjb21wdXRlZF9hdCA+IDBcbjs7XG5cbmxldCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0ID1cbiAgbGV0IGlzX3N0YWxlID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPlxuICAgIGlmIGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQ6dCB0aGVuIGlzX3N0YWxlIDo9IHRydWUpO1xuICAhaXNfc3RhbGVcbjs7XG5cbmxldCBpc19zdGFsZSA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gKHQgOiBhIHQpIC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgKCogQSBjb25zdCBub2RlIGlzIHN0YWxlIG9ubHkgYXQgaW5pdGlhbGl6YXRpb24uICopXG4gIHwgQ29uc3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBUaW1lLWJhc2VkIG5vZGVzIGFyZSBjb25zaWRlcmVkIHN0YWxlIHdoZW4gW3QucmVjb21wdXRlZF9hdF0gaXMgbm9uZSwgd2hpY2ggaGFwcGVuc1xuICAgICBhdCBpbml0aWFsaXphdGlvbiBhbmQgd2hlbiB0aGUgYWxhcm0gbWVjaGFuaXNtIG1ha2VzIGEgbm9kZSBzdGFsZSAoaXQgc2V0cyB0aGVcbiAgICAgW3QucmVjb21wdXRlZF9hdF0gdG8gW1N0YWJpbGl6YXRpb25fbnVtLm5vbmVdKS4gKilcbiAgfCBBdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBTbmFwc2hvdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFdlIG5ldmVyIGNvbnNpZGVyIGFuIGludmFsaWRhdGVkIG5vZGUgdG8gYmUgc3RhbGUgLS0gd2hlbiB3ZSBpbnZhbGlkYXRlIGEgbm9kZSwgd2VcbiAgICAgaW1tZWRpYXRlbHkgcHJvcGFnYXRlIGludmFsaWRpdHkgdG8gaXRzIGFuY2VzdG9ycy4gKilcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICgqIEEgW1Zhcl0gbm9kZSBpcyBzdGFsZSBpZiBpdCB3YXMgc2V0IHNpbmNlIGl0IHdhcyByZWNvbXB1dGVkLiAqKVxuICB8IFZhciB7IHNldF9hdDsgXyB9IC0+IFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgc2V0X2F0IHQucmVjb21wdXRlZF9hdCA+IDBcbiAgKCogTm9kZXMgdGhhdCBoYXZlIGNoaWxkcmVuLiAqKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgQXJyYXlfZm9sZCBfXG4gIHwgQmluZF9tYWluIF9cbiAgfCBGcmVlemUgX1xuICB8IElmX3RoZW5fZWxzZSBfXG4gIHwgSm9pbl9tYWluIF9cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgX1xuICB8IFN0ZXBfZnVuY3Rpb24gX1xuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgRXhwZXJ0IHsgZm9yY2Vfc3RhbGU7IF8gfSAtPlxuICAgIGZvcmNlX3N0YWxlXG4gICAgfHwgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgICB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG47O1xuXG5sZXQgbmVlZHNfdG9fYmVfY29tcHV0ZWQgdCA9IGlzX25lY2Vzc2FyeSB0ICYmIGlzX3N0YWxlIHRcbmxldCBpc19pbl9yZWNvbXB1dGVfaGVhcCB0ID0gdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPj0gMFxubGV0IGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdCA9IHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPj0gMFxuXG5sZXQgZ2V0X3BhcmVudCB0IH5pbmRleCA9XG4gIFVvcHQudmFsdWVfZXhuXG4gICAgKGlmIGluZGV4ID0gMCB0aGVuIHQucGFyZW50MCBlbHNlIFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKVxuOztcblxubGV0IGl0ZXJpX3BhcmVudHMgdCB+ZiA9XG4gIGlmIHQubnVtX3BhcmVudHMgPiAwXG4gIHRoZW4gKFxuICAgIGYgMCAoVW9wdC52YWx1ZV9leG4gdC5wYXJlbnQwKTtcbiAgICBmb3IgaW5kZXggPSAxIHRvIHQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICBmIGluZGV4IChVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgaGFzX2NoaWxkIHQgfmNoaWxkID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCcpIC0+IGhhcyA6PSAhaGFzIHx8IHNhbWUgY2hpbGQgY2hpbGQnKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19pbnZhbGlkX2NoaWxkIHQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPiBoYXMgOj0gIWhhcyB8fCBub3QgKGlzX3ZhbGlkIGNoaWxkKSk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfcGFyZW50ICh0IDogXyB0KSB+cGFyZW50ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCcpIC0+IGhhcyA6PSAhaGFzIHx8IHNhbWUgcGFyZW50IHBhcmVudCcpO1xuICAhaGFzXG47O1xuXG5sZXQgc2hvdWxkX2JlX2ludmFsaWRhdGVkIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gKilcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IEF0IF8gLT4gZmFsc2VcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBmYWxzZVxuICB8IENvbnN0IF8gfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gZmFsc2VcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICgqIE5vZGVzIHdpdGggYSBmaXhlZCBzZXQgb2YgY2hpbGRyZW4gYXJlIGludmFsaWQgaWYgYW55IGNoaWxkIGlzIGludmFsaWQuICopXG4gIHwgQXJyYXlfZm9sZCBfXG4gIHwgRnJlZXplIF9cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgX1xuICB8IFN0ZXBfZnVuY3Rpb24gX1xuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT4gaGFzX2ludmFsaWRfY2hpbGQgdFxuICAoKiBBICpfY2hhbmdlIG5vZGUgaXMgaW52YWxpZCBpZiB0aGUgbm9kZSBpdCBpcyB3YXRjaGluZyBmb3IgY2hhbmdlcyBpcyBpbnZhbGlkIChzYW1lXG4gICAgIHJlYXNvbiBhcyBhYm92ZSkuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gW2hhc19pbnZhbGlkX2NoaWxkIHRdLiAqKVxuICB8IEJpbmRfbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICB8IElmX3Rlc3RfY2hhbmdlIHsgdGVzdDsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgKCogW0JpbmRfbWFpbl0sIFtJZl90aGVuX2Vsc2VdLCBhbmQgW0pvaW5fbWFpbl0gYXJlIGludmFsaWQgaWYgdGhlaXIgKl9jaGFuZ2UgY2hpbGQgaXMsXG4gICAgIGJ1dCBub3QgbmVjZXNzYXJpbHkgaWYgdGhlaXIgb3RoZXIgY2hpbGRyZW4gYXJlIC0tIHRoZSBncmFwaCBtYXkgYmUgcmVzdHJ1Y3R1cmVkIHRvXG4gICAgIGF2b2lkIHRoZSBpbnZhbGlkaXR5IG9mIHRob3NlLiAqKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxoc19jaGFuZ2UpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3RfY2hhbmdlKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxoc19jaGFuZ2UpXG4gIHwgRXhwZXJ0IF8gLT5cbiAgICAoKiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCB3ZSBkbyBmb3IgYmluZCBhYm92ZSwgZXhjZXB0IHRoYXQgYW55IGludmFsaWQgY2hpbGQgY2FuIGJlXG4gICAgICAgcmVtb3ZlZCwgc28gd2UgY2FuIG9ubHkgdGVsbCBpZiBhbiBleHBlcnQgbm9kZSBiZWNvbWVzIGludmFsaWQgd2hlbiBhbGwgaXRzXG4gICAgICAgZGVwZW5kZW5jaWVzIGhhdmUgZmlyZWQgKHdoaWNoIGluIHByYWN0aWNlIG1lYW5zIHdoZW4gd2UgYXJlIGFib3V0IHRvIHJ1biBpdCkuICopXG4gICAgZmFsc2Vcbjs7XG5cbmxldCBmb2xkX29ic2VydmVycyAodCA6IF8gdCkgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiB0Lm9ic2VydmVycyBpblxuICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgIHIgOj0gb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmc7XG4gICAgYWMgOj0gZiAhYWMgb2JzZXJ2ZXJcbiAgZG9uZTtcbiAgIWFjXG47O1xuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9IGZvbGRfb2JzZXJ2ZXJzIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBvYnNlcnZlciAtPiBmIG9ic2VydmVyKVxuXG5sZXQgaW52YXJpYW50ICh0eXBlIGEpIChpbnZhcmlhbnRfYSA6IGEgLT4gdW5pdCkgKHQgOiBhIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBbJXRlc3RfZXE6IGJvb2xdIChuZWVkc190b19iZV9jb21wdXRlZCB0KSAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdCk7XG4gICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBTY29wZS5oZWlnaHQgdC5jcmVhdGVkX2luKTtcbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPlxuICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gY2hpbGQuaGVpZ2h0KTtcbiAgICAgICAgYXNzZXJ0IChoYXNfcGFyZW50IGNoaWxkIH5wYXJlbnQ6dCkpO1xuICAgICAgYXNzZXJ0IChub3QgKHNob3VsZF9iZV9pbnZhbGlkYXRlZCB0KSkpO1xuICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50KSAtPlxuICAgICAgYXNzZXJ0IChoYXNfY2hpbGQgcGFyZW50IH5jaGlsZDp0KTtcbiAgICAgIGFzc2VydCAoaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0IDwgcGFyZW50LmhlaWdodCkpO1xuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6KGNoZWNrIE5vZGVfaWQuaW52YXJpYW50KVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfnJlY29tcHV0ZWRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH52YWx1ZV9vcHQ6XG4gICAgICAgIChjaGVjayAoZnVuIHZhbHVlX29wdCAtPlxuICAgICAgICAgICBpZiBpc192YWxpZCB0ICYmIG5vdCAoaXNfc3RhbGUgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSB2YWx1ZV9vcHQpO1xuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSB2YWx1ZV9vcHQpKVxuICAgICAgfmtpbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGtpbmQgLT5cbiAgICAgICAgICAgS2luZC5pbnZhcmlhbnQgaW52YXJpYW50X2Ega2luZDtcbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgIHwgRXhwZXJ0IGUgLT5cbiAgICAgICAgICAgICBFeHBlcnQuaW52YXJpYW50X2Fib3V0X251bV9pbnZhbGlkX2NoaWxkcmVuXG4gICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICB+aXNfbmVjZXNzYXJ5Oihpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH5jdXRvZmY6KGNoZWNrIChDdXRvZmYuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5jaGFuZ2VkX2F0OlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGFuZ2VkX2F0IC0+XG4gICAgICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudCBjaGFuZ2VkX2F0O1xuICAgICAgICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5pc19zb21lIHQucmVjb21wdXRlZF9hdFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGFuZ2VkX2F0IHQucmVjb21wdXRlZF9hdCA8PSAwKSkpXG4gICAgICB+bnVtX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgKExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICAgICAgICAgICsgZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDowIH5mOihmdW4gbiB7IG9uX3VwZGF0ZV9oYW5kbGVyczsgXyB9IC0+XG4gICAgICAgICAgICAgICAgICAgbiArIExpc3QubGVuZ3RoIG9uX3VwZGF0ZV9oYW5kbGVycykpKSlcbiAgICAgIH5udW1fcGFyZW50czpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3BhcmVudHMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA8PSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQpKSlcbiAgICAgIH5wYXJlbnQxX2FuZF9iZXlvbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDFfYW5kX2JleW9uZCAtPlxuICAgICAgICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCBwYXJlbnQxX2FuZF9iZXlvbmQgZG9cbiAgICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdXG4gICAgICAgICAgICAgICAocGFyZW50X2luZGV4IDwgdC5udW1fcGFyZW50cylcbiAgICAgICAgICAgICAgIChVb3B0LmlzX3NvbWVcbiAgICAgICAgICAgICAgICAgIChVbmlmb3JtX2FycmF5LmdldCBwYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+cGFyZW50MDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MCAtPlxuICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdICh0Lm51bV9wYXJlbnRzID4gMCkgKFVvcHQuaXNfc29tZSBwYXJlbnQwKSkpXG4gICAgICB+Y3JlYXRlZF9pbjooY2hlY2sgU2NvcGUuaW52YXJpYW50KVxuICAgICAgfm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSAtPlxuICAgICAgICAgICBpZiBTY29wZS5pc190b3AgdC5jcmVhdGVkX2luIHx8IG5vdCAoaXNfdmFsaWQgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSkpKVxuICAgICAgfmhlaWdodDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0IC0+XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0IHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gMCkgZWxzZSBhc3NlcnQgKGhlaWdodCA9IC0xKSkpXG4gICAgICB+aGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPj0gLTEpO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8PSB0LmhlaWdodCkpKVxuICAgICAgfnByZXZfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudmFsdWVfZXhuIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gcHJldi5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+bmV4dF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIG5leHQpID0gVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgaWYgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPj0gMFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPCB0LmhlaWdodCkpKVxuICAgICAgfm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKVxuICAgICAgICAgICBlbHNlIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIG5leHQpID0gVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIG5leHQpO1xuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gbmV4dC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgICAgIH5vbGRfdmFsdWVfb3B0OihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9ic2VydmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4geyBzdGF0ZTsgb2JzZXJ2aW5nOyBfIH0gLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdCBvYnNlcnZpbmcpO1xuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgIH5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjppZ25vcmVcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6aWdub3JlXG4gICAgICB+dXNlcl9pbmZvOmlnbm9yZVxuICAgICAgfm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IC0+XG4gICAgICAgICAgIChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICAgICAgfCBFeHBlcnQgXyAtPiAoKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbiAgICAgICAgICAgICAgICB+ZXhwZWN0Oihpbml0aWFsX251bV9jaGlsZHJlbiB0KSk7XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgICAgKGdldF9wYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIEFycmF5Lml0ZXIgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4KVxuICAgICAgICAgICAgIH5leHBlY3Q6KFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kICsgMSk7XG4gICAgICAgICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIHBhcmVudF9pbmRleCAoVCBwYXJlbnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgIChLaW5kLnNsb3dfZ2V0X2NoaWxkXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5raW5kXG4gICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBBcnJheS5pdGVyIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfmZvcmNlX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgIH5jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlKVxuOztcblxubGV0IHVuc2FmZV92YWx1ZSB0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfb3B0XG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcbiAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZ2V0X2N1dG9mZiB0ID0gdC5jdXRvZmZcbmxldCBzZXRfY3V0b2ZmIHQgY3V0b2ZmID0gdC5jdXRvZmYgPC0gY3V0b2ZmXG5cbmxldCBpc19jb25zdCB0ID1cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBDb25zdCBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgb25fdXBkYXRlIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDFcbjs7XG5cbmxldCBydW5fb25fdXBkYXRlX2hhbmRsZXJzIHQgbm9kZV91cGRhdGUgfm5vdyA9XG4gIGxldCByID0gcmVmIHQub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICBtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgIHIgOj0gcmVzdDtcbiAgICAgIE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBsZXQgciA9IHJlZiBvYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICAgIHIgOj0gcmVzdDtcbiAgICAgICAgKCogV2UgaGF2ZSB0byB0ZXN0IFtzdGF0ZV0gYmVmb3JlIGVhY2ggb24tdXBkYXRlIGhhbmRsZXIsIGJlY2F1c2UgYW4gb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXIgbWlnaHQgZGlzYWJsZSBpdHMgb3duIG9ic2VydmVyLCB3aGljaCBzaG91bGQgcHJldmVudCBvdGhlciBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlcnMgaW4gdGhlIHNhbWUgb2JzZXJ2ZXIgZnJvbSBydW5uaW5nLiAqKVxuICAgICAgICAobWF0Y2ggb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgSW5fdXNlIC0+IE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93KVxuICAgIGRvbmVcbiAgZG9uZVxuOztcblxubGV0IHNldF9raW5kIHQga2luZCA9XG4gIHQua2luZCA8LSBraW5kO1xuICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICA8LSBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG47O1xuXG5sZXQgY3JlYXRlIHN0YXRlIGNyZWF0ZWRfaW4ga2luZCA9XG4gIGxldCB0ID1cbiAgICB7IGlkID0gTm9kZV9pZC5uZXh0ICgpXG4gICAgOyBzdGF0ZVxuICAgIDsgcmVjb21wdXRlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsga2luZFxuICAgIDsgY3V0b2ZmID0gQ3V0b2ZmLnBoeXNfZXF1YWxcbiAgICA7IGNoYW5nZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyBudW1fb25fdXBkYXRlX2hhbmRsZXJzID0gMFxuICAgIDsgbnVtX3BhcmVudHMgPSAwXG4gICAgOyBwYXJlbnQxX2FuZF9iZXlvbmQgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gICAgOyBwYXJlbnQwID0gVW9wdC5ub25lXG4gICAgOyBjcmVhdGVkX2luXG4gICAgOyBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0ID0gLTFcbiAgICA7IGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IC0xXG4gICAgOyBwcmV2X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gICAgOyBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG9sZF92YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IG9ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBmYWxzZVxuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA9XG4gICAgICAgIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbiAgICAoKiBbbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XSBoYXMgb25lIGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBob2xkXG4gICAgICAgdGhlIGNoaWxkIGluZGV4IG9mIFtwYXJlbnQwXS4gKilcbiAgICA7IG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA9IFt8IC0xIHxdXG4gICAgOyBmb3JjZV9uZWNlc3NhcnkgPSBmYWxzZVxuICAgIDsgdXNlcl9pbmZvID0gTm9uZVxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlID1cbiAgICAgICAgKGlmIHN0YXRlLmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgdGhlbiBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSBlbHNlIE5vbmUpXG4gICAgfVxuICBpblxuICBTY29wZS5hZGRfbm9kZSBjcmVhdGVkX2luIHQ7XG4gICgqIFtpbnZhcmlhbnRdIGRvZXMgbm90IHlldCBob2xkIGhlcmUgYmVjYXVzZSBtYW55IHVzZXMgb2YgW05vZGUuY3JlYXRlXSB1c2UgW2tpbmQgPVxuICAgICBVbmluaXRpYWxpemVkXSwgYW5kIHRoZW4gbXV0YXRlIFt0LmtpbmRdIGxhdGVyLiAqKVxuICB0XG47O1xuXG5sZXQgbWF4X251bV9wYXJlbnRzIHQgPSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmRcblxubGV0IG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX3BhcmVudHMgPSBtYXhfbnVtX3BhcmVudHMgdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X21heF9udW1fcGFyZW50cyA9IDIgKiBtYXhfbnVtX3BhcmVudHMgdCBpblxuICAgIHQucGFyZW50MV9hbmRfYmV5b25kXG4gICAgPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQucGFyZW50MV9hbmRfYmV5b25kIH5sZW46KG5ld19tYXhfbnVtX3BhcmVudHMgLSAxKTtcbiAgICB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9wYXJlbnRzICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fcGFyZW50cyA8IG1heF9udW1fcGFyZW50cyB0KVxuOztcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0IH5jaGlsZF9pbmRleCA9XG4gIGxldCBtYXhfbnVtX2NoaWxkcmVuID0gQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IGluXG4gIGlmIGNoaWxkX2luZGV4ID49IG1heF9udW1fY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4ID0gbWF4X251bV9jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXhfbnVtX2NoaWxkcmVuID0gSW50Lm1heCAyICgyICogbWF4X251bV9jaGlsZHJlbikgaW5cbiAgICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9jaGlsZHJlbiAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4IDwgQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuOztcblxubGV0IHNldF9wYXJlbnQgOiB0eXBlIGEuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6UGFja2VkLnQgVW9wdC50IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIGlmIHBhcmVudF9pbmRleCA9IDBcbiAgdGhlbiBjaGlsZC5wYXJlbnQwIDwtIHBhcmVudFxuICBlbHNlIFVuaWZvcm1fYXJyYXkuc2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkgcGFyZW50XG47O1xuXG5sZXQgbGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6KFVvcHQuc29tZSAoUGFja2VkLlQgcGFyZW50KSkgfnBhcmVudF9pbmRleDtcbiAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIGNoaWxkX2luZGV4O1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gcGFyZW50X2luZGV4XG47O1xuXG5sZXQgdW5saW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDpVb3B0Lm5vbmUgfnBhcmVudF9pbmRleDtcbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIC0xO1xuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSAtMSlcbjs7XG5cbmxldCBhZGRfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgcGFyZW50IH5jaGlsZF9pbmRleDtcbiAgbGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpjaGlsZC5udW1fcGFyZW50cztcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgKyAxXG47O1xuXG5sZXQgcmVtb3ZlX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLm51bV9wYXJlbnRzID49IDEpO1xuICBsZXQgcGFyZW50X2luZGV4ID0gcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBwYXJlbnQpIChnZXRfcGFyZW50IGNoaWxkIH5pbmRleDpwYXJlbnRfaW5kZXgpKTtcbiAgbGV0IGxhc3RfcGFyZW50X2luZGV4ID0gY2hpbGQubnVtX3BhcmVudHMgLSAxIGluXG4gIGlmIHBhcmVudF9pbmRleCA8IGxhc3RfcGFyZW50X2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKGxhc3RfcGFyZW50X2luZGV4IC0gMSkpXG4gICAgaW5cbiAgICBsaW5rXG4gICAgICB+Y2hpbGRcbiAgICAgIH5jaGlsZF9pbmRleDpjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGxhc3RfcGFyZW50X2luZGV4KVxuICAgICAgfnBhcmVudFxuICAgICAgfnBhcmVudF9pbmRleCk7XG4gIHVubGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpsYXN0X3BhcmVudF9pbmRleDtcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgLSAxXG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCBwYXJlbnQgfmNoaWxkMSB+Y2hpbGRfaW5kZXgxIH5jaGlsZDIgfmNoaWxkX2luZGV4MiA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQxKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgxKSk7XG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDIpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDIpKSk7XG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpXG4gIGluXG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpXG4gIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA9IGNoaWxkX2luZGV4MSk7XG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpID0gY2hpbGRfaW5kZXgyKSk7XG4gICgqIG5vdyBzdGFydCBzd2FwcGluZyAqKVxuICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA8LSBjaGlsZF9pbmRleDI7XG4gIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpIDwtIGNoaWxkX2luZGV4MTtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDFcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUGFja2VkLnQgPSBUIDogXyBUeXBlcy5Ob2RlLnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyB0XVxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5cbiAgbW9kdWxlIEFzX2xpc3QgKE0gOiBzaWdcbiAgICAgIHZhbCBuZXh0IDogUGFja2VkLnQgLT4gUGFja2VkLnQgVW9wdC50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IFBhY2tlZC50IFVvcHQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICAgICAgbGV0IHIgPSByZWYgdCBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCBwYWNrZWRfbm9kZSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gTS5uZXh0IHBhY2tlZF9ub2RlO1xuICAgICAgICBhYyA6PSBmICFhYyBwYWNrZWRfbm9kZVxuICAgICAgZG9uZTtcbiAgICAgICFhY1xuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgbiAtPiBmIG4pXG4gICAgbGV0IGludmFyaWFudCB0ID0gaXRlciB0IH5mOmludmFyaWFudFxuICAgIGxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0LnJldiAoZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgbiAtPiBuIDo6IGFjKSlcbiAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19saXN0IHQgfD4gWyVzZXhwX29mOiBQYWNrZWQudCBsaXN0XVxuICBlbmRcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA9XG4gICAgbGV0IHNlZW4gPSBOb2RlX2lkLkhhc2hfc2V0LmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgaXRlcl9kZXNjZW5kYW50cyAoVCB0KSA9XG4gICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWVuIHQuaWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSGFzaF9zZXQuYWRkIHNlZW4gdC5pZDtcbiAgICAgICAgZiAoVCB0KTtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gdCAtPiBpdGVyX2Rlc2NlbmRhbnRzIHQpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyIHRzIH5mOml0ZXJfZGVzY2VuZGFudHM7XG4gICAgc2VlblxuICA7O1xuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzIHRzIH5mID0gaWdub3JlIChpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mIDogXyBIYXNoX3NldC50KVxuXG4gIG1vZHVsZSBEb3RfdXNlcl9pbmZvID0gc3RydWN0XG4gICAgaW5jbHVkZSBEb3RfdXNlcl9pbmZvXG5cbiAgICBsZXQgZGVmYXVsdCB+bmFtZSB0ID1cbiAgICAgIERvdF91c2VyX2luZm8uZG90XG4gICAgICAgIH5sYWJlbDpbIG5hbWU7IEtpbmQubmFtZSB0LmtpbmQ7IHNwcmludGYgXCJoZWlnaHQ9JWRcIiB0LmhlaWdodCBdXG4gICAgICAgIH5hdHRyaWJ1dGVzOlN0cmluZy5NYXAuZW1wdHlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiAoVCB0KSA9IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdFxuXG4gIGxldCBwcmludF9ub2RlIG91dCB+bmFtZSB0ID1cbiAgICBsZXQgZGVmYXVsdCA9IERvdF91c2VyX2luZm8uZGVmYXVsdCB+bmFtZSB0IGluXG4gICAgbGV0IGluZm8gPVxuICAgICAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSB1c2VyX2luZm8gLT4gRG90X3VzZXJfaW5mby5hcHBlbmQgZGVmYXVsdCB1c2VyX2luZm9cbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiJXNcXG5cIiAoRG90X3VzZXJfaW5mby50b19zdHJpbmcgfm5hbWUgKERvdF91c2VyX2luZm8udG9fZG90IGluZm8pKVxuICA7O1xuXG4gIGxldCBzYXZlX2RvdCBvdXQgdHMgPVxuICAgIGxldCBub2RlX25hbWUgPVxuICAgICAgaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICB0aGVuIGZ1biBfIC0+IFwibiMjI1wiXG4gICAgICBlbHNlIGZ1biBub2RlIC0+IFwiblwiIF4gTm9kZV9pZC50b19zdHJpbmcgbm9kZS5pZFxuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCJkaWdyYXBoIEcge1xcblwiO1xuICAgIGZwcmludGYgb3V0IFwiICByYW5rZGlyID0gQlRcXG5cIjtcbiAgICBsZXQgYmluZF9lZGdlcyA9IHJlZiBbXSBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBsZXQgbmFtZSA9IG5vZGVfbmFtZSB0IGluXG4gICAgICAgIHByaW50X25vZGUgb3V0IH5uYW1lIHQ7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGZyb21fKSAtPlxuICAgICAgICAgIGZwcmludGYgb3V0IFwiICAlcyAtPiAlc1xcblwiIChub2RlX25hbWUgZnJvbV8pIG5hbWUpO1xuICAgICAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+XG4gICAgICAgICAgQmluZC5pdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQgfmY6KGZ1biB0b18gLT5cbiAgICAgICAgICAgIGJpbmRfZWRnZXMgOj0gKFQgdCwgdG9fKSA6OiAhYmluZF9lZGdlcylcbiAgICAgICAgfCBfIC0+ICgpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyICFiaW5kX2VkZ2VzIH5mOihmdW4gKFQgZnJvbSwgVCB0b18pIC0+XG4gICAgICBpZiBIYXNoX3NldC5tZW0gc2VlbiB0b18uaWRcbiAgICAgIHRoZW4gZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzIFtzdHlsZT1kYXNoZWRdXFxuXCIgKG5vZGVfbmFtZSBmcm9tKSAobm9kZV9uYW1lIHRvXykpO1xuICAgIGZwcmludGYgb3V0IFwifVxcbiUhXCJcbiAgOztcblxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIHRzID1cbiAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIG91dCAtPiBzYXZlX2RvdCBvdXQgdHMpXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIEFzX3JlY29tcHV0ZV9saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX3JlY29tcHV0ZV9saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgKCogV2UgZGlzcGxheSB0aGUgc21hbGxlc3QgcHJlZml4IG9mIFtub2Rlc19ieV9oZWlnaHRdIHRoYXQgaW5jbHVkZXMgYWxsIG5vZGVzLiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlJlY29tcHV0ZV9oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGxldCBhY3R1YWxfbGVuZ3RoID0gcmVmIDAgaW5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyIHQubm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gbm9kZSAtPlxuICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggOj0gIWFjdHVhbF9sZW5ndGggKyBBc19yZWNvbXB1dGVfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgICAgICAgIFsldGVzdF9lcTogaW50XSBsZW5ndGggIWFjdHVhbF9sZW5ndGgpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub2Rlc19ieV9oZWlnaHQgLT5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSBub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBoZWlnaHQgbm9kZSAtPlxuICAgICAgICAgICAgIEFzX3JlY29tcHV0ZV9saXN0Lml0ZXIgbm9kZSB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSkpKSkpXG47O1xuXG5sZXQgY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBmb3IgaSA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxIGRvXG4gICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaSkpXG4gICAgZG9uZTtcbiAgbGV0IHNyYyA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBkc3QgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgfnNyY1xuICAgIH5zcmNfcG9zOjBcbiAgICB+ZHN0XG4gICAgfmRzdF9wb3M6MFxuICAgIH5sZW46KG1pbiAoVW5pZm9ybV9hcnJheS5sZW5ndGggc3JjKSAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KSk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIGRzdDtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gbWluIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbmV4dCAocHJldiA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV4dCA9XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudW5zYWZlX3ZhbHVlIHByZXYgaW5cbiAgICBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dClcbjs7XG5cbmxldCBzZXRfcHJldiAobmV4dCA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+cHJldiA9XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0XG4gIHRoZW4gKFxuICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudW5zYWZlX3ZhbHVlIG5leHQgaW5cbiAgICBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gcHJldilcbjs7XG5cbmxldCBsaW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIGhlaWdodDtcbiAgbGV0IG5leHQgPSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgaW5cbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6KFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSk7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSlcbjs7XG5cbmxldCB1bmxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBwcmV2ID0gbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGlmIHBoeXNfc2FtZVxuICAgICAgIChVb3B0LnNvbWUgbm9kZSlcbiAgICAgICAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApXG4gIHRoZW4gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY7XG4gIHNldF9uZXh0IHByZXYgfm5leHQ7XG4gIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmVcbjs7XG5cbigqIFdlIGRvbid0IHNldCBbbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBoZXJlLCBidXQgcmF0aGVyIGFmdGVyIGNhbGxpbmcgW3VubGlua10uICopXG5cbmxldCBhZGQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmIChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgfHwgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBhdHRlbXB0IHRvIGFkZCBub2RlIHRvIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgaGVpZ2h0IDwgdC5oZWlnaHRfbG93ZXJfYm91bmQgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxpbmsgdCBub2RlO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCByZW1vdmUgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmICgobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKSB8fCBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IFtyZW1vdmVdIG9mIG5vZGUgZnJvbSByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGluY3JlYXNlX2hlaWdodCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBhc3NlcnQgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICB1bmxpbmsgdCBub2RlO1xuICBsaW5rIHQgbm9kZVxuOztcblxubGV0IG1pbl9oZWlnaHQgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gIGVsc2UgKFxuICAgIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICAgIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBkb1xuICAgICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxXG4gICAgZG9uZSk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG47O1xuXG5sZXQgcmVtb3ZlX21pbiB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBub2RlID0gcmVmIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAhbm9kZSBkb1xuICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMTtcbiAgICBpZiBkZWJ1ZyAmJiB0LmhlaWdodF9sb3dlcl9ib3VuZCA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiB1bmV4cGVjdGVkbHkgcmVhY2hlZCBlbmQgb2YgaGVhcFwiXG4gICAgICAgIHRcbiAgICAgICAgWyVzZXhwX29mOiB0XTtcbiAgICBub2RlIDo9IFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZFxuICBkb25lO1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAhbm9kZSBpblxuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0Lm5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OlVvcHQubm9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxubW9kdWxlIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19hZGp1c3RfaGVpZ2h0c19saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaGVpZ2h0IG5vZGVzIC0+XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaW52YXJpYW50IG5vZGVzO1xuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lml0ZXIgbm9kZXMgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApO1xuICAgICAgICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICAgIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0IH5mOihmdW4gbm9kZSAtPiByIDo9ICFyICsgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgIXJcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BZGp1c3RfaGVpZ2h0c19oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPSBOb2Rlc19ieV9oZWlnaHQubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KSkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXhfaGVpZ2h0X3NlZW46XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9oZWlnaHRfc2VlbiAtPlxuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6KGNoZWNrIE5vZGVzX2J5X2hlaWdodC5pbnZhcmlhbnQpKVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG1heF9oZWlnaHRfc2VlbiA9IDBcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBtYXhfaGVpZ2h0X2FsbG93ZWQgPCB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIGxlc3MgdGhhbiB0aGUgbWF4IGhlaWdodCBhbHJlYWR5IHNlZW5cIlxuICAgICAgKG1heF9oZWlnaHRfYWxsb3dlZCwgYG1heF9oZWlnaHRfc2VlbiB0Lm1heF9oZWlnaHRfc2VlbilcbiAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4X2hlaWdodF9zZWVuIG9mIGludCBdXTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbjs7XG5cbmxldCBhZGRfdW5sZXNzX21lbSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gIHRoZW4gKFxuICAgIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICAgICgqIFdlIHByb2Nlc3Mgbm9kZXMgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmUtYWRqdXN0ZWQgaGVpZ2h0LCBzbyBpdCBpcyBhIGJ1ZyBpZiB3ZVxuICAgICAgIGV2ZXIgdHJ5IHRvIGFkZCBhIG5vZGUgdGhhdCB3b3VsZCB2aW9sYXRlIHRoYXQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSB0LmhlaWdodF9sb3dlcl9ib3VuZCk7XG4gICAgKCogV2hlbmV2ZXIgd2Ugc2V0IGEgbm9kZSdzIGhlaWdodCwgd2UgdXNlIFtzZXRfaGVpZ2h0XSwgd2hpY2ggZW5mb3JjZXMgdGhpcy4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIGhlaWdodDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0O1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSkpXG47O1xuXG5sZXQgcmVtb3ZlX21pbl9leG4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyAmJiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFkanVzdF9oZWlnaHRzX2hlYXAucmVtb3ZlX21pbiBvZiBlbXB0eSBoZWFwXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgciA9IHJlZiB0LmhlaWdodF9sb3dlcl9ib3VuZCBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0ICFyKSBkb1xuICAgIGluY3IgclxuICBkb25lO1xuICBsZXQgaGVpZ2h0ID0gIXIgaW5cbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkgaW5cbiAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwO1xuICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcblxubGV0IHNldF9oZWlnaHQgdCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBpZiBoZWlnaHQgPiB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuIChcbiAgICB0Lm1heF9oZWlnaHRfc2VlbiA8LSBoZWlnaHQ7XG4gICAgaWYgaGVpZ2h0ID4gbWF4X2hlaWdodF9hbGxvd2VkIHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIm5vZGUgd2l0aCB0b28gbGFyZ2UgaGVpZ2h0XCJcbiAgICAgICAgKGBIZWlnaHQgaGVpZ2h0LCBgTWF4IChtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpXG4gICAgICAgIFslc2V4cF9vZjogWyBgSGVpZ2h0IG9mIGludCBdICogWyBgTWF4IG9mIGludCBdXSk7XG4gIG5vZGUuaGVpZ2h0IDwtIGhlaWdodFxuOztcblxubGV0IGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBpZiBOb2RlLnNhbWUgcGFyZW50IG9yaWdpbmFsX2NoaWxkXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYWRkaW5nIGVkZ2UgbWFkZSBncmFwaCBjeWNsaWNcIlxuICAgICAgKGBjaGlsZCBvcmlnaW5hbF9jaGlsZCwgYHBhcmVudCBvcmlnaW5hbF9wYXJlbnQpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNoaWxkIG9mIF8gTm9kZS50IF0gKiBbIGBwYXJlbnQgb2YgXyBOb2RlLnQgXV07XG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW4gKFxuICAgIGFkZF91bmxlc3NfbWVtIHQgcGFyZW50O1xuICAgICgqIFdlIHNldCBbcGFyZW50LmhlaWdodF0gYWZ0ZXIgYWRkaW5nIFtwYXJlbnRdIHRvIHRoZSBoZWFwLCBzbyB0aGF0IFtwYXJlbnRdIGdvZXNcbiAgICAgICBpbiB0aGUgaGVhcCB3aXRoIGl0cyBwcmUtYWRqdXN0ZWQgaGVpZ2h0LiAqKVxuICAgIHNldF9oZWlnaHQgdCBwYXJlbnQgKGNoaWxkLmhlaWdodCArIDEpKVxuOztcblxubGV0IGFkanVzdF9oZWlnaHRzXG4gICAgICAodHlwZSBhIGIpXG4gICAgICB0XG4gICAgICByZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkOihvcmlnaW5hbF9jaGlsZCA6IGEgTm9kZS50KVxuICAgICAgfnBhcmVudDoob3JpZ2luYWxfcGFyZW50IDogYiBOb2RlLnQpXG4gID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0ID49IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0O1xuICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgdFxuICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICB+Y2hpbGQ6b3JpZ2luYWxfY2hpbGRcbiAgICB+cGFyZW50Om9yaWdpbmFsX3BhcmVudDtcbiAgd2hpbGUgbGVuZ3RoIHQgPiAwIGRvXG4gICAgbGV0IChUIGNoaWxkKSA9IHJlbW92ZV9taW5fZXhuIHQgaW5cbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIGNoaWxkXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5pbmNyZWFzZV9oZWlnaHQgcmVjb21wdXRlX2hlYXAgY2hpbGQ7XG4gICAgaWYgY2hpbGQubnVtX3BhcmVudHMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIGNoaWxkLnBhcmVudDAgaW5cbiAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudDtcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIGNoaWxkLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudFxuICAgICAgZG9uZSk7XG4gICAgbWF0Y2ggY2hpbGQua2luZCB3aXRoXG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgeyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7IF8gfSAtPlxuICAgICAgbGV0IHIgPSByZWYgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVfb25fcmhzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICAgICAgICAgIH5jaGlsZFxuICAgICAgICAgICAgfnBhcmVudDpub2RlX29uX3Joc1xuICAgICAgZG9uZVxuICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPCBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUuQWN0aW9uLnQgPVxuICAgIHwgQXQgb2YgQXQudFxuICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpZ25vcmUgc25hcHNob3RcbiAgICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGlnbm9yZSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS50ID1cbiAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICA7ICgqIFtuZXh0X2ZpcmVkXSBzaW5nbHkgbGlua3MgYWxsIGFsYXJtIHZhbHVlcyB0aGF0IGZpcmUgZHVyaW5nIGEgc2luZ2xlIGNhbGwgdG9cbiAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogKHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXIgfmFjdGlvbjooY2hlY2sgQWN0aW9uLmludmFyaWFudCkgfm5leHRfZmlyZWQ6aWdub3JlKVxuOztcblxubGV0IGNyZWF0ZSBhY3Rpb24gPSB7IGFjdGlvbjsgbmV4dF9maXJlZCA9IFVvcHQubm9uZSB9XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29uZmlnX2ludGZcblxubW9kdWxlIERlZmF1bHQgKCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSB0cnVlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLkludGVybmFsX29ic2VydmVyXG5cbm1vZHVsZSBQYWNrZWRfID0gc3RydWN0XG4gIGluY2x1ZGUgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyB8PiBbJXNleHBfb2Y6IF8gVHlwZXMuTm9kZS50XVxuICA7O1xuXG4gIGxldCBwcmV2X2luX2FsbCAoVCB0KSA9IHQucHJldl9pbl9hbGxcbiAgbGV0IG5leHRfaW5fYWxsIChUIHQpID0gdC5uZXh0X2luX2FsbFxuICBsZXQgc2V0X3ByZXZfaW5fYWxsIChUIHQxKSB0MiA9IHQxLnByZXZfaW5fYWxsIDwtIHQyXG4gIGxldCBzZXRfbmV4dF9pbl9hbGwgKFQgdDEpIHQyID0gdDEubmV4dF9pbl9hbGwgPC0gdDJcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuU3RhdGUudCA9XG4gICAgfCBDcmVhdGVkXG4gICAgfCBJbl91c2VcbiAgICB8IERpc2FsbG93ZWRcbiAgICB8IFVubGlua2VkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gIHsgKCogU3RhdGUgdHJhbnNpdGlvbnM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ3JlYXRlZCAtLT4gSW5fdXNlIC0tPiBEaXNhbGxvd2VkIC0tPiBVbmxpbmtlZFxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgXFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL1xuICAgICAgIHZ9ICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9hbGxdIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgaW4gW3N0YXRlLmFsbF9vYnNlcnZlcnNdLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fb2JzZXJ2aW5nXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIG9mIFtvYnNlcnZpbmddLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluY3Jfc3RhdGUgdCA9IHQub2JzZXJ2aW5nLnN0YXRlXG5cbmxldCB1c2VfaXNfYWxsb3dlZCB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPiB0cnVlXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGZhbHNlXG47O1xuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBzYW1lX2FzX3BhY2tlZCAodDEgOiBfIHQpIChQYWNrZWRfLlQgdDIpID0gc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+b2JzZXJ2aW5nOihjaGVjayAoTm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChMaXN0LmlzX2VtcHR5IG9uX3VwZGF0ZV9oYW5kbGVycykpKVxuICAgICAgfnByZXZfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLm5leHRfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX2FsbCkpKSkpKVxuICAgICAgfm5leHRfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLnByZXZfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FsbCkpKSkpKVxuICAgICAgfnByZXZfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG5cbiAgICAgICAgICAgICAgICAgICAgKG5leHRfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX29ic2VydmluZykpKSkpKVxuICAgICAgfm5leHRfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG5cbiAgICAgICAgICAgICAgICAgICAgKHByZXZfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX29ic2VydmluZykpKSkpKSlcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCB3aXRob3V0IHN0YWJpbGl6aW5nXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIGRpc2FsbG93X2Z1dHVyZV91c2VcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgSW5fdXNlIC0+XG4gICAgbGV0IHVvcHQgPSB0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgVW9wdC51bnNhZmVfdmFsdWUgdW9wdFxuOztcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwib25fdXBkYXRlIGRpc2FsbG93ZWRcIiB0IFslc2V4cF9vZjogXyB0XVxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT5cbiAgICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IENyZWF0ZWQgLT5cbiAgICAgICAoKiBXZSdsbCBidW1wIFtvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2hlbiBbdF0gaXMgYWN0dWFsbHkgYWRkZWQgdG9cbiAgICAgICAgICBbb2JzZXJ2aW5nLm9ic2VydmVyc10gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgKClcbiAgICAgfCBJbl91c2UgLT5cbiAgICAgICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDEpXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9vYnNlcnZpbmcgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fb2JzZXJ2aW5nIGluXG4gIHQucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkucHJldl9pbl9vYnNlcnZpbmcgPC0gcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikubmV4dF9pbl9vYnNlcnZpbmcgPC0gbmV4dDtcbiAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gIGlmIHBoeXNfZXF1YWwgdCAoVW9wdC52YWx1ZV9leG4gb2JzZXJ2aW5nLm9ic2VydmVycykgdGhlbiBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIG5leHQ7XG4gIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIC0gTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fYWxsIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9hbGwgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fYWxsIGluXG4gIHQucHJldl9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiBQYWNrZWRfLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkgcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiBQYWNrZWRfLnNldF9uZXh0X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikgbmV4dFxuOztcblxubGV0IHVubGluayB0ID1cbiAgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQ7XG4gIHVubGlua19mcm9tX2FsbCB0XG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFja2VkX1xuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlciB8PiBbJXNleHBfb2Y6IF8gaW50ZXJuYWxfb2JzZXJ2ZXJdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaW52YXJpYW50X2EgIXRcbmxldCBvYnNlcnZpbmcgdCA9IEludGVybmFsX29ic2VydmVyLm9ic2VydmluZyAhdFxubGV0IHVzZV9pc19hbGxvd2VkIHQgPSBJbnRlcm5hbF9vYnNlcnZlci51c2VfaXNfYWxsb3dlZCAhdFxubGV0IHZhbHVlX2V4biB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudmFsdWVfZXhuICF0XG5sZXQgaW5jcl9zdGF0ZSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSAhdFxuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2V4biAhdCBvbl91cGRhdGVfaGFuZGxlclxuOztcbiIsIigqIFtTdGF0ZV0gZGVmaW5lcyB0aGUgZ2xvYmFsIHN0YXRlIG9mIHdoaWNoIHRoZXJlIGlzIG9uZSBpbnN0YW5jZSBmb3IgZWFjaCBjYWxsIHRvXG4gICBbSW5jcmVtZW50YWwuTWFrZV0uXG5cbiAgIFRoaXMgbW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gbWxpIGJlY2F1c2UgaXQgd291bGQgZXNzZW50aWFsbHkgZHVwbGljYXRlXG4gICBbSW5jcmVtZW50YWwuU10sIGV4Y2VwdCBhZGRpbmcgYW4gZXh0cmEgW1N0YXRlLnRdIGFyZ3VtZW50IHRvIGZ1bmN0aW9ucy4gKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbnR5cGUgc3RhdHVzID0gVHlwZXMuU3RhdHVzLnQgPVxuICB8IFN0YWJpbGl6aW5nXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG5tb2R1bGUgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5SdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgPSBUIDogJ2EgTm9kZS50ICogJ2EgTm9kZV91cGRhdGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCAoVCAobm9kZSwgX25vZGVfdXBkYXRlKSBhcyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+IE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbmx5X2luX2RlYnVnID0gc3RydWN0XG4gICgqIEV4dHJhIHN0YXRlIGtlcHQgb25seSB3aGVuIFtkZWJ1Z10gZm9yIHRoZSBwdXJwb3NlIG9mIHdyaXRpbmcgYXNzZXJ0aW9ucy4gKilcbiAgdHlwZSB0ID0gVHlwZXMuT25seV9pbl9kZWJ1Zy50ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+Y3VycmVudGx5X3J1bm5pbmdfbm9kZTppZ25vcmVcbiAgICAgICAgfmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19ub2RlID0gTm9uZTsgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlID0gW10gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYWNrZWRfd2Vha19oYXNodGJsID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlBhY2tlZF93ZWFrX2hhc2h0YmwudCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlN0YXRlLnQgPVxuICB7IG11dGFibGUgc3RhdHVzIDogc3RhdHVzXG4gIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgOyAoKiBbc3RhYmlsaXphdGlvbl9udW1dIHN0YXJ0cyBhdCB6ZXJvLCBhbmQgaXMgaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBvZiBlYWNoXG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gIDsgKCogW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSBob2xkcyBub2RlcyB0aGF0IGhhdmUgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZVxuICAgICAgIGNvbnNpZGVyZWQgZm9yIGludmFsaWRhdGlvbi4gIEl0IGlzIG9ubHkgdXNlZCBkdXJpbmcgZ3JhcGggcmVzdHJ1Y3R1cmluZzpcbiAgICAgICBbaW52YWxpZGF0ZV9ub2RlXSBhbmQgW2FkZF9wYXJlbnRdLiAgT25jZSBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdGFjaywgd2UgdGhlblxuICAgICAgIGl0ZXJhdGUgdW50aWwgaW52YWxpZGl0eSBoYXMgcHJvcGFnYXRlZCB0byBhbGwgYW5jZXN0b3JzIGFzIG5lY2Vzc2FyeSwgYWNjb3JkaW5nIHRvXG4gICAgICAgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXS4gKilcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtudW1fYWN0aXZlX29ic2VydmVyc10gaXMgdGhlIG51bWJlciBvZiBvYnNlcnZlcnMgd2hvc2Ugc3RhdGUgaXMgW0NyZWF0ZWRdIG9yXG4gICAgICAgW0luX3VzZV0uICopXG4gICAgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICA7ICgqIFthbGxfb2JzZXJ2ZXJzXSBpcyB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBvYnNlcnZlcnMgaW4gZWZmZWN0LCBvciB0aGF0IGhhdmVcbiAgICAgICBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlXG4gICAgICAgW3N0YXRlXSBhcyBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gIDsgKCogV2UgZW5xdWV1ZSBmaW5hbGl6ZWQgb2JzZXJ2ZXJzIGluIGEgdGhyZWFkLXNhZmUgcXVldWUsIGZvciBoYW5kbGluZyBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uLiAgV2UgdXNlIGEgdGhyZWFkLXNhZmUgcXVldWUgYmVjYXVzZSBPQ2FtbCBmaW5hbGl6ZXJzIGNhbiBydW4gaW4gYW55XG4gICAgICAgdGhyZWFkLiAqKVxuICAgIGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgKCogW25ld19vYnNlcnZlcnNdIGhvbGRzIG9ic2VydmVycyBjcmVhdGVkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhXG4gICAgICAgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZV0gYXMgW0NyZWF0ZWRdIG9yIFtVbmxpbmtlZF0uICBBdCB0aGUgc3RhcnQgb2ZcbiAgICAgICBzdGFiaWxpemF0aW9uLCB3ZSBsaW5rIGludG8gW2FsbF9vYnNlcnZlcnNdIGFsbCBvYnNlcnZlcnMgaW4gW25ld19vYnNlcnZlcnNdIHdob3NlXG4gICAgICAgc3RhdGUgaXMgW0NyZWF0ZWRdIGFuZCBhZGQgdGhlbSB0byB0aGUgW29ic2VydmVyc10gb2YgdGhlIG5vZGUgdGhleSBhcmUgb2JzZXJ2aW5nLlxuICAgICAgIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgb2JzZXJ2ZXJzIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cbiAgICAgICB3aGlsZSBydW5uaW5nIHVzZXIgY29kZSAoW21hcF0sIFtiaW5kXSwgZXRjKSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBub2Rlc1xuICAgICAgIGJlY29taW5nIG5lY2Vzc2FyeSBhbmQgdGhlIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzXSBob2xkcyBhbGwgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlID0gRGlzYWxsb3dlZF0uICBBdCB0aGUgc3RhcnRcbiAgICAgICBvZiBzdGFiaWxpemF0aW9uLCB0aGVzZSBhcmUgdW5saW5rZWQgZnJvbSBbYWxsX29ic2VydmVyc10gYW5kIHRoZWlyIHN0YXRlIGlzXG4gICAgICAgY2hhbmdlZCB0byBbVW5saW5rZWRdLiAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyB1c2VyIGNvZGUgcnVubmluZ1xuICAgICAgIGR1cmluZyBzdGFiaWxpemF0aW9uIHRvIGNhbGwgW2Rpc2FsbG93X2Z1dHVyZV91c2VdLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoXG4gICAgICAgbm9kZXMgYmVjb21pbmcgdW5uZWNlc3NhcnkgYW5kIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFdlIGRlbGF5IGFsbCBbVmFyLnNldF0gY2FsbHMgdGhhdCBoYXBwZW4gZHVyaW5nIHN0YWJpbGl6YXRpb24gc28gdGhhdCB0aGV5IHRha2VcbiAgICAgICBlZmZlY3QgYWZ0ZXIgc3RhYmlsaXphdGlvbi4gIEFsbCB2YXJpYWJsZXMgc2V0IGR1cmluZyBzdGFiaWxpemF0aW9uIGFyZSBwdXNoZWQgb25cbiAgICAgICBbc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0uICBUaGVuLCBhZnRlciB0aGUgZ3JhcGggaGFzXG4gICAgICAgc3RhYmlsaXplZCwgd2UgZG8gYWxsIHRoZSBzZXRzLCBzbyB0aGF0IHRoZXkgdGFrZSBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaGFzIGFsbCBub2RlcyB3aXRoIGhhbmRsZXJzIHRvIGNvbnNpZGVyIHJ1bm5pbmcgYXQgdGhlXG4gICAgICAgZW5kIG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICBBdCB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIHdlIGNvbnNpZGVyIGVhY2ggbm9kZVxuICAgICAgIGluIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIGFuZCBpZiB3ZSBkZWNpZGUgdG8gcnVuIGl0cyBvbi11cGRhdGUgaGFuZGxlcnMsXG4gICAgICAgcHVzaCBpdCBvbiBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICBUaGVuLCBvbmNlIHdlJ3ZlIGNvbnNpZGVyZWQgYWxsIG5vZGVzIGluXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgd2UgaXRlcmF0ZSB0aHJvdWdoIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXSBhbmRcbiAgICAgICBhY3R1YWxseSBydW4gdGhlIGhhbmRsZXJzLlxuXG4gICAgICAgVGhlc2UgdHdvIHBhc3NlcyBhcmUgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gIER1cmluZyB0aGUgZmlyc3QgcGFzcywgd2UgaGF2ZW4ndFxuICAgICAgIHJ1biBhbnkgdXNlciBoYW5kbGVycywgc28gd2Uga25vdyB0aGF0IHRoZSBzdGF0ZSBpcyBleGFjdGx5IGFzIGl0IHdhcyB3aGVuXG4gICAgICAgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIEluIHBhcnRpY3VsYXIsIHdlIGtub3cgdGhhdCBpZiBhIG5vZGUgaXMgbmVjZXNzYXJ5LCB0aGVuXG4gICAgICAgaXQgaGFzIGEgc3RhYmxlIHZhbHVlOyBvbmNlIHVzZXIgaGFuZGxlcnMgcnVuLCB3ZSBkb24ndCBrbm93IHRoaXMuICBEdXJpbmcgdGhlXG4gICAgICAgc2Vjb25kIHBhc3MsIHVzZXIgaGFuZGxlcnMgY2FuIG1ha2UgY2FsbHMgdG8gYW55IGluY3JlbWVudGFsIGZ1bmN0aW9uIGV4Y2VwdCBmb3JcbiAgICAgICBbc3RhYmlsaXplXS4gIEluIHBhcnRpY3VsYXIsIHNvbWUgZnVuY3Rpb25zIHB1c2ggbm9kZXMgb25cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAgQnV0IG5vIGZ1bmN0aW9ucyAoZXhjZXB0IGZvciBbc3RhYmlsaXplXSkgbW9kaWZ5XG4gICAgICAgW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAqKVxuICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICA7ICgqIFN0YXRzLiAgVGhlc2UgYXJlIGFsbCBpbmNyZW1lbnRlZCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UsIGFuZCBuZXZlciBkZWNyZW1lbnRlZC4gKilcbiAgICBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DbG9jay50ID1cbiAgICB7ICgqIFdlIHVzZSBbdGltaW5nX3doZWVsXSBmb3IgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMuICBbbm93XSBpcyBhIHZhcmlhYmxlIGhvbGRpbmdcbiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUuICBbaGFuZGxlX2ZpcmVkXSBpcyB0aGUgY2xvc3VyZSBwYXNzZWQgdG9cbiAgICAgICAgIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICBJdCBsaW5rcyBhbGwgdGhlIGZpcmVkIGFsYXJtIHZhbHVlcyBpbnRvXG4gICAgICAgICBbZmlyZWRfYWxhcm1fdmFsdWVzXS4gIEFmdGVyIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10gcmV0dXJucywgaXQgdGhlblxuICAgICAgICAgd2Fsa3MgdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgYW5kIGFjdHVhbGx5IGZpcmVzIHRoZW0uICBUaGlzIHR3by1wYXNzIGFwcHJvYWNoIGlzXG4gICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBvbmUgaXMgbm90IGFsbG93ZWQgdG8gY2FsbCBbVGltaW5nX3doZWVsXSBmdW5jdGlvbnMgZnJvbSB0aGVcbiAgICAgICAgIFtoYW5kbGVfZmlyZWRdIHRoYXQgb25lIHBhc3NlcyB0byBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bm93OlxuICAgICAgICAgIChjaGVjayAoZnVuIChub3cgOiBfIFZhci50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy5lcXVhbCBub3cudmFsdWUgKFRpbWluZ193aGVlbC5ub3cgdC50aW1pbmdfd2hlZWwpKSkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5maXJlZF9hbGFybV92YWx1ZXM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyZWRfYWxhcm1fdmFsdWVzIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGZpcmVkX2FsYXJtX3ZhbHVlcykpKVxuICAgICAgICB+dGltaW5nX3doZWVsOihjaGVjayAoVGltaW5nX3doZWVsLmludmFyaWFudCBBbGFybV92YWx1ZS5pbnZhcmlhbnQpKSlcbiAgOztcblxuICBsZXQgaW5jcl9zdGF0ZSB0ID0gVmFyLmluY3Jfc3RhdGUgdC5ub3dcbmVuZFxuXG5sZXQgbm93IChjbG9jayA6IENsb2NrLnQpID0gY2xvY2subm93LnZhbHVlXG5sZXQgdGltaW5nX3doZWVsX2xlbmd0aCAoY2xvY2sgOiBDbG9jay50KSA9IFRpbWluZ193aGVlbC5sZW5ndGggY2xvY2sudGltaW5nX3doZWVsXG5sZXQgbnVtX3N0YWJpbGl6ZXMgdCA9IFN0YWJpbGl6YXRpb25fbnVtLnRvX2ludCB0LnN0YWJpbGl6YXRpb25fbnVtXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbmxldCBtYXhfaGVpZ2h0X3NlZW4gdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9XG4gIGxldCByID0gcmVmIHQuYWxsX29ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLm5leHRfaW5fYWxsIG9ic2VydmVyO1xuICAgIGYgb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IGRpcmVjdGx5X29ic2VydmVkIHQgPVxuICBsZXQgciA6IE5vZGUuUGFja2VkLnQgbGlzdCByZWYgPSByZWYgW10gaW5cbiAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgIHIgOj0gVCBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgOjogIXIpO1xuICAhclxuOztcblxubGV0IHNhdmVfZG90IHQgb3V0ID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3Qgb3V0IChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IHNhdmVfZG90X3RvX2ZpbGUgdCBmaWxlID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZiA9IE5vZGUuUGFja2VkLml0ZXJfZGVzY2VuZGFudHMgKGRpcmVjdGx5X29ic2VydmVkIHQpIH5mXG5cbm1vZHVsZSBTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWF4X251bV9wYXJlbnRzIDogaW50XG4gICAgOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIDogKGludCAqIFBlcmNlbnQudCkgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5sZXQgc3RhdHMgdCA9XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSByZWYgKC0xKSBpblxuICBsZXQgbnVtX25lY2Vzc2FyeV9ub2RlcyA9IHJlZiAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgaW5jciBudW1fbmVjZXNzYXJ5X25vZGVzO1xuICAgIG1heF9udW1fcGFyZW50cyA6PSBJbnQubWF4ICFtYXhfbnVtX3BhcmVudHMgbm9kZS5udW1fcGFyZW50cyk7XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSAhbWF4X251bV9wYXJlbnRzIGluXG4gIGxldCBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgPSBBcnJheS5jcmVhdGUgfmxlbjoobWF4X251bV9wYXJlbnRzICsgMSkgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGxldCBudW1fcGFyZW50cyA9IG5vZGUubnVtX3BhcmVudHMgaW5cbiAgICBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSA8LSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSArIDEpO1xuICBsZXQgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA9XG4gICAgQXJyYXkuZm9sZGkgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzIH5pbml0OltdIH5mOihmdW4gaSBhYyBudW1fbm9kZXMgLT5cbiAgICAgIGlmIG51bV9ub2RlcyA9IDBcbiAgICAgIHRoZW4gYWNcbiAgICAgIGVsc2UgKGksIFBlcmNlbnQub2ZfbXVsdCAoZmxvYXQgbnVtX25vZGVzIC8uIGZsb2F0ICFudW1fbmVjZXNzYXJ5X25vZGVzKSkgOjogYWMpXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgeyBTdGF0cy5tYXhfbnVtX3BhcmVudHM7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgfVxuOztcblxubGV0IGFtX3N0YWJpbGl6aW5nIHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyAtPiB0cnVlXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+IGZhbHNlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IGNhbGwgYW1fc3RhYmlsaXppbmcgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50XVxuOztcblxubGV0IGludmFyaWFudCB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgICAgIChtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+XG4gICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICBcIm1lbWJlciBvZiBhbGxfb2JzZXJ2ZXJzIHdpdGggdW5leHBlY3RlZCBzdGF0ZVwiXG4gICAgICAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudF0pO1xuICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaWdub3JlIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlO1xuICAgICAgICBpZiBub3QgKGFtX3N0YWJpbGl6aW5nIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBub2RlLmhlaWdodCA8PSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXApKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICA9IFJlY29tcHV0ZV9oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5zdGF0dXM6aWdub3JlXG4gICAgICAgIH5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzOmlnbm9yZVxuICAgICAgICB+c3RhYmlsaXphdGlvbl9udW06KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgICAgfmN1cnJlbnRfc2NvcGU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9zY29wZSAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgY3VycmVudF9zY29wZSBTY29wZS50b3ApKSlcbiAgICAgICAgfnJlY29tcHV0ZV9oZWFwOihjaGVjayBSZWNvbXB1dGVfaGVhcC5pbnZhcmlhbnQpXG4gICAgICAgIH5hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEFkanVzdF9oZWlnaHRzX2hlYXAubGVuZ3RoIGFkanVzdF9oZWlnaHRzX2hlYXAgPSAwKTtcbiAgICAgICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmludmFyaWFudCBhZGp1c3RfaGVpZ2h0c19oZWFwKSlcbiAgICAgICAgfnByb3BhZ2F0ZV9pbnZhbGlkaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBwcm9wYWdhdGVfaW52YWxpZGl0eSkpKVxuICAgICAgICB+bnVtX2FjdGl2ZV9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2FjdGl2ZV9vYnNlcnZlcnMgLT4gYXNzZXJ0IChudW1fYWN0aXZlX29ic2VydmVycyA+PSAwKSkpXG4gICAgICAgIH5hbGxfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+ZmluYWxpemVkX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfm5ld19vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICAoKiBXaGVuIGFuIG9ic2VydmVyIGlzIGFkZGVkIHRvIFtuZXdfb2JzZXJ2ZXJzXSwgaXQgaGFzIFtzdGF0ZSA9IENyZWF0ZWRdLlxuICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IHBvc3NpYmxlIHRyYW5zaXRpb25zIGZyb20gdGhlcmUgYXJlIHRvIFtVbmxpbmtlZF0gb3IgdG9cbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSwgd2hpY2ggYWxzbyByZW1vdmVzIGl0IGZyb20gW25ld19vYnNlcnZlcnNdLCBuZXZlciB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgICAgIGFnYWluLiAgVGh1cyBpdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBvYnNlcnZlciBpbiBbbmV3X29ic2VydmVyc10gdG8gYmVcbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+ZGlzYWxsb3dlZF9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIC0+XG4gICAgICAgICAgICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pXG4gICAgICAgICAgICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgU3RhY2suaW52YXJpYW50XG4gICAgICAgICAgICAgICAgIChmdW4gKFZhci5QYWNrZWQuVCB2YXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICAgICAgICAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICB+aGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgTm9kZS5QYWNrZWQuaW52YXJpYW50KSlcbiAgICAgICAgfnJ1bl9vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgICAgKGNoZWNrIChTdGFjay5pbnZhcmlhbnQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycy5pbnZhcmlhbnQpKVxuICAgICAgICB+b25seV9pbl9kZWJ1ZzooY2hlY2sgT25seV9pbl9kZWJ1Zy5pbnZhcmlhbnQpXG4gICAgICAgIH53ZWFrX2hhc2h0YmxzOmlnbm9yZVxuICAgICAgICB+a2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jaGFuZ2VkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NyZWF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfaW52YWxpZGF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0Omlnbm9yZVxuICAgICAgICB+bnVtX3Zhcl9zZXRzOmlnbm9yZSlcbjs7XG5cbmxldCBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWUgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgaWYgbm90IGFsbG93X2luX3VwZGF0ZV9oYW5kbGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIG9uLXVwZGF0ZSBoYW5kbGVyc1wiIG5hbWUpXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSlcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIiBuYW1lKVxuICAgICAgKHJhaXNlZF9leG4sIGJhY2t0cmFjZSlcbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50ICogQmFja3RyYWNlLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiBuYW1lKVxuICAgICAgYmFja3RyYWNlXG4gICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XVxuOztcblxubGV0IHNldF9oZWlnaHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X2hlaWdodCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgbm9kZSBoZWlnaHRcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgaGVpZ2h0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic2V0X21heF9oZWlnaHRfYWxsb3dlZFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIGhlaWdodDtcbiAgUmVjb21wdXRlX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwIGhlaWdodFxuOztcblxubGV0IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgbm90IG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25cbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSB0cnVlO1xuICAgIFN0YWNrLnB1c2ggdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoVCBub2RlKSlcbjs7XG5cbmxldCByZWMgcmVtb3ZlX2NoaWxkcmVuIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIHBhcmVudCAtPlxuICBOb2RlLml0ZXJpX2NoaWxkcmVuIHBhcmVudCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXgpXG5cbmFuZCByZW1vdmVfY2hpbGQgOiB0eXBlIGEgYi4gY2hpbGQ6YiBOb2RlLnQgLT4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBjaGVja19pZl91bm5lY2Vzc2FyeSBjaGlsZFxuXG5hbmQgY2hlY2tfaWZfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPiBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpIHRoZW4gYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGVcblxuYW5kIGJlY2FtZV91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gIG5vZGUuaGVpZ2h0IDwtIC0xO1xuICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gVW5vcmRlcmVkX2FycmF5X2ZvbGQuZm9yY2VfZnVsbF9jb21wdXRlIHVcbiAgIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOmZhbHNlXG4gICB8IF8gLT4gKCkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IHJlbW92ZV9hbGFybSAoY2xvY2sgOiBDbG9jay50KSBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG4gIHRoZW4gVGltaW5nX3doZWVsLnJlbW92ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbjs7XG5cbigqIEFuIGludmFsaWQgbm9kZSBpcyBub2RlIHdob3NlIGtpbmQgaXMgW0ludmFsaWRdLiAgQSBub2RlJ3Mga2luZCBpcyBzZXQgdG8gW0ludmFsaWRdXG4gICB3aGVuIHRoZSBsaHMgb2YgaXRzIHNjb3BlIGNoYW5nZXMsIG9yIG9uZSBpZiBpdHMgY2hpbGRyZW4gcHJvcGFnYXRlIHRoZSBpbnZhbGlkaXR5XG4gICB1cHdhcmQgKHNlZSBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdIHRvIHNlZSBpbiB3aGljaCBjYXNlIGludmFsaWRpdHkgcHJvcGFnYXRpb25cbiAgIHN0b3BzKS4gIEludmFsaWRhdGluZyBhIG5vZGUgZGlzY29ubmVjdHMgaXQgZnJvbSBpdHMgY2hpbGRyZW4sIHdoaWNoIG1lYW5zOlxuXG4gICAxLiBhbiBpbnZhbGlkIG5vZGUgY2Fubm90IGVuZCB1cCBvbiB0aGUgc2NoZWR1bGVyIChpZiBpdCBpcyBvbiB0aGUgc2NoZWR1bGVyIHdoZW5cbiAgIGl0IGlzIGludmFsaWRhdGVkLCBpdCBpcyByZW1vdmVkKVxuICAgMi4gYW4gaW52YWxpZCBub2RlIGRvZXNuJ3QgbWFrZSBpdHMgY2hpbGRyZW4gbmVjZXNzYXJ5IGFueW1vcmUuXG5cbiAgIEludmFsaWQgbm9kZXMgdXN1YWxseSBoYXZlIG5vIHBhcmVudHMsIGJlY2F1c2UgdGhlIHVwd2FyZCBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uIG1lYW5zXG4gICB0aGF0IHRoZWlyIHBhcmVudHMgd2lsbCB0aGVtc2VsdmVzIGJlY29tZSBpbnZhbGlkIGFuZCBkaXNjb25uZWN0IGZyb20gdGhlaXIgY2hpbGRyZW4uXG4gICBIb3dldmVyLCBbaWZdLCBbam9pbl0gb3IgW2JpbmRdIGFyZSBub3QgaW52YWxpZGF0ZWQgYnkgdGhlIHVwd2FyZCBwcm9wYWdhdGlvbiwgc28gYW5cbiAgIGludmFsaWQgbm9kZSBjYW4gc3RpbGwgaGF2ZSBwYXJlbnRzLiAgSW52YWxpZCBub2RlcyBjYW4gYmUgbmVjZXNzYXJ5LCBpbiB0aGUgY2FzZSB3aGVyZVxuICAgdGhleSBoYXZlIHBhcmVudHMsIGFuZCBhbHNvIHdoZW4gdGhleSBhcmUgb2JzZXJ2ZWQuXG5cbiAgIFRoZSB1cHdhcmQgcHJvcGFnYXRpb24gb2YgaW52YWxpZGl0eSBoYXBwZW5zIGJvdGggd2hlbiBhIG5vZGUgYmVjb21lcyBpbnZhbGlkLCBhbmQgd2hlblxuICAgdHJ5aW5nIHRvIGFkZCBhbiBlZGdlIGZyb20gYW4gaW52YWxpZCBjaGlsZCBub2RlIHRvIGFub3RoZXIgbm9kZS4gIEJlY2F1c2UgaW52YWxpZGl0eVxuICAgaXMgb25seSBwcm9wYWdhdGVkIHVwd2FyZCwgYW5kIGJlY2F1c2UgdGhlIHJocyBvZiBhIGJpbmQgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIGl0XG4gICBleGVjdXRlcywgYSBub2RlIGNhbm5vdCBiZSBib3RoIGNvbXB1dGVkIGFuZCBpbnZhbGlkYXRlZCBpbiB0aGUgc2FtZSBzdGFiaWxpemF0aW9uLlxuXG4gICBXaGVuIGludmFsaWRhdGluZywgd2UgY2FuJ3QgYXNzdW1lIG11Y2ggYWJvdXQgdGhlIG5vZGVzIHdlIHZpc2l0LiAgV2UgY2Fubm90IGFzc3VtZVxuICAgdGhhdCBub2RlcyBhcmUgdmFsaWQgKHRoZSByaHMgY2FuIGNvbnRhaW4gcHJldmlvdXNseSBpbnZhbGlkYXRlZCBub2RlcyksIG9yIHRoYXQgbm9kZXNcbiAgIGFyZSB1bm5lY2Vzc2FyeSAobm9kZXMgY2FuIGJlIG1hZGUgbmVjZXNzYXJ5IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGVpciBjb250YWluaW5nXG4gICBiaW5kcykuICopXG5cbmxldCByZWMgaW52YWxpZGF0ZV9ub2RlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgPC0gdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgKyAxO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgKCogVGhlIG5vZGUgZG9lc24ndCBoYXZlIGNoaWxkcmVuIGFueW1vcmUsIHNvIHdlIGNhbiBsb3dlciBpdHMgaGVpZ2h0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlLCB0byBvbmUgZ3JlYXRlciB0aGFuIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIEFsc28sIGJlY2F1c2Ugd2VcbiAgICAgICAgIGFyZSBsb3dlcmluZyB0aGUgaGVpZ2h0LCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdCBhbnkgb2YgaXRzIGFuY2VzdG9ycycgaGVpZ2h0cy5cbiAgICAgICAgIFdlIGNvdWxkIGxlYXZlIHRoZSBoZWlnaHQgYWxvbmUsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBsb3dlciBpdCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSB0byBhdm9pZCBtYWtpbmcgdGhlIGhlaWdodHMgb2YgYW55IGZ1dHVyZSBhbmNlc3RvcnMgdW5uZWNlc3NhcmlseVxuICAgICAgICAgbGFyZ2UuICopXG4gICAgICBub2RlLmhlaWdodCA8LSBTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gICAgKCogV2UgZG9uJ3Qgc2V0IFtub2RlLmNyZWF0ZWRfaW5dIG9yIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXTsgd2UgbGVhdmUgW25vZGVdXG4gICAgICAgaW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgSWYgdGhhdCBzY29wZSBpcyBldmVyIGludmFsaWRhdGVkLCB0aGVuIHRoYXRcbiAgICAgICB3aWxsIGNsZWFyIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSAqKVxuICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICB8IEF0IGF0IC0+IHJlbW92ZV9hbGFybSBhdC5jbG9jayBhdC5hbGFybVxuICAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gcmVtb3ZlX2FsYXJtIGF0X2ludGVydmFscy5jbG9jayBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgfCBCaW5kX21haW4gYmluZCAtPiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgIHwgU3RlcF9mdW5jdGlvbiB7IGFsYXJtOyBjbG9jazsgXyB9IC0+IHJlbW92ZV9hbGFybSBjbG9jayBhbGFybVxuICAgICB8IF8gLT4gKCkpO1xuICAgIE5vZGUuc2V0X2tpbmQgbm9kZSBJbnZhbGlkO1xuICAgICgqIElmIHdlIGNhbGxlZCBbcHJvcGFnYXRlX2ludmFsaWRpdHldIHJpZ2h0IGF3YXkgb24gdGhlIHBhcmVudHMsIHdlIHdvdWxkIGdldCBpbnRvXG4gICAgICAgdHJvdWJsZS4gIFRoZSBwYXJlbnQgd291bGQgZGlzY29ubmVjdCBpdHNlbGYgZnJvbSB0aGUgY3VycmVudCBub2RlLCB0aHVzXG4gICAgICAgbW9kaWZ5aW5nIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIEV2ZW4gaWYgd2UgbWFkZSBhIHNwZWNpYWwgY2FzZSwgaXRcbiAgICAgICBzdGlsbCB3b3VsZG4ndCBiZSBlbm91Z2ggdG8gaGFuZGxlIG90aGVyIGNhc2VzIHdoZXJlIHRoZSBsaXN0IG9mIHBhcmVudHMgaXNcbiAgICAgICBtb2RpZmllZCAoZS5nLiB3aGVuIFtsaHNdIGlzIGludmFsaWRhdGVkIGluIHRoZSBleGFtcGxlIGluIHRoZSBjb21tZW50IGFib3V0XG4gICAgICAgW2Nhbl9yZWNvbXB1dGVfbm93XSBmYXIgYmVsb3cpLiAqKVxuICAgIGZvciBpbmRleCA9IDAgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoTm9kZS5nZXRfcGFyZW50IG5vZGUgfmluZGV4KVxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcblxuYW5kIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgbm9kZSA9XG4gIGxldCByID0gcmVmIG5vZGUgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbigqIFdoZW4gW25vdCB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNdIGFuZCBhIGJpbmQncyBsaHMgY2hhbmdlcywgd2UgbW92ZVxuICAgbm9kZXMgY3JlYXRlZCBvbiB0aGUgYmluZCdzIHJocyB1cCB0byBpdHMgcGFyZW50IGJpbmQsIGFzIG9wcG9zZWQgdG8gW1Njb3BlLlRvcF0uICBUaGlzXG4gICBtYWludGFpbnMgdGhlaXIgZGVwZW5kZW5jZSBvbiB2YWxpZCBiaW5kIGxlZnQtaGFuZCBzaWRlcywgYW5kIGtlZXBzIHRoZW0gaGlnaGVyIGluIHRoZVxuICAgZ3JhcGguICBUaGlzIGluIHR1cm4gbWVhbnMgdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGNvbXB1dGUgdGhvc2Ugbm9kZXMgYWZ0ZXIgdGhlXG4gICBwYXJlbnQgYmluZCdzIGxocywgd2hpY2ggZ2l2ZXMgdGhlbSBtb3JlIG9mIGEgY2hhbmNlIHRvIGJlY29tZSB1bm5lY2Vzc2FyeSBhbmQgbm90IGJlXG4gICBjb21wdXRlZCBzaG91bGQgdGhlIHBhcmVudCBiaW5kJ3MgbGhzIGNoYW5nZS4gKilcbmxldCByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIF90IChmaXJzdF9ub2RlX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV3X3Njb3BlID1cbiAgbGV0IHIgPSByZWYgZmlyc3Rfbm9kZV9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgbm9kZV9vbl9yaHMuY3JlYXRlZF9pbiA8LSBuZXdfc2NvcGU7XG4gICAgU2NvcGUuYWRkX25vZGUgbmV3X3Njb3BlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbmxldCBwcm9wYWdhdGVfaW52YWxpZGl0eSB0ID1cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5KSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5wcm9wYWdhdGVfaW52YWxpZGl0eSBpblxuICAgIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICAgIHRoZW5cbiAgICAgIGlmIE5vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkIG5vZGVcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2RlIG5vZGVcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBub2RlIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyBiZWNhdXNlIGNoaWxkcmVuIGNhbiBvbmx5IHBvaW50IHRvIG5lY2Vzc2FyeVxuICAgICAgICAgICAgIHBhcmVudHNcbiAgICAgICAgICAgLSBub2RlIGlzIHN0YWxlLiBUaGlzIGlzIGJlY2F1c2U6IEZvciBiaW5kLCBpZiwgam9pbiwgdGhpcyBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBlaXRoZXIgdGhlIGludmFsaWRhdGlvbiBpcyBjYXVzZWQgYnkgdGhlIGxocyBjaGFuZ2luZyAoaW4gd2hpY2ggY2FzZSB0aGVcbiAgICAgICAgICAgICBsaHMtY2hhbmdlIG5vZGUgYmVpbmcgbmV3ZXIgbWFrZXMgdXMgc3RhbGUpLlxuICAgICAgICAgICAtIG9yIGEgY2hpbGQgYmVjYW1lIGludmFsaWQgdGhpcyBzdGFiaWxpemF0aW9uIGN5Y2xlLCBpbiB3aGljaCBjYXNlIGl0IGhhc1xuICAgICAgICAgICAgIHQuY2hhbmdlZF9hdCBvZiBbdC5zdGFiaWxpemF0aW9uX251bV0sIGFuZCBzbyBbbm9kZV0gaXMgc3RhbGVcbiAgICAgICAgICAgLSBvciBbbm9kZV0ganVzdCBiZWNhbWUgbmVjZXNzYXJ5IGFuZCB0cmllZCBjb25uZWN0aW5nIHRvIGFuIGFscmVhZHkgaW52YWxpZFxuICAgICAgICAgICAgIGNoaWxkLiBJbiB0aGF0IGNhc2UsIFtjaGlsZC5jaGFuZ2VkX2F0ID4gbm9kZS5yZWNvbXB1dGVkX2F0XSBmb3IgdGhhdCBjaGlsZCxcbiAgICAgICAgICAgICBiZWNhdXNlIGlmIHdlIGhhZCBiZWVuIHJlY29tcHV0ZWQgd2hlbiB0aGF0IGNoaWxkIGNoYW5nZWQsIHdlIHdvdWxkIGhhdmUgYmVlblxuICAgICAgICAgICAgIG1hZGUgaW52YWxpZCBiYWNrIHRoZW4uICBGb3IgZXhwZXJ0IG5vZGVzLCB0aGUgYXJndW1lbnQgaXMgdGhlIHNhbWUsIGV4Y2VwdFxuICAgICAgICAgICAgIHRoYXQgaW5zdGVhZCBvZiBsaHMtY2hhbmdlIG5vZGVzIG1ha2UgdGhlIGV4cGVydCBub2RlcyBzdGFsZSwgaXQncyBtYWRlIHN0YWxlXG4gICAgICAgICAgICAgZXhwbGljaXRlbHkgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICAoKiBJZiBtdWx0aXBsZSBjaGlsZHJlbiBhcmUgaW52YWxpZCwgdGhleSB3aWxsIHB1c2ggdXMgYXMgbWFueSB0aW1lcyBvbiB0aGVcbiAgICAgICAgICAgICAgcHJvcGFnYXRpb24gc3RhY2ssIHNvIHdlIGNvdW50IHRoZW0gcmlnaHQuICopXG4gICAgICAgICAgIEV4cGVydC5pbmNyX2ludmFsaWRfY2hpbGRyZW4gZXhwZXJ0XG4gICAgICAgICB8IGtpbmQgLT5cbiAgICAgICAgICAgaWYgZGVidWdcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgfCBCaW5kX21haW4gXyB8IElmX3RoZW5fZWxzZSBfIHwgSm9pbl9tYWluIF8gLT4gKClcbiAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gYXJlIG5ldmVyIHB1c2hlZCBvbiB0aGUgc3RhY2sgKikpKTtcbiAgICAgICAgKCogV2UgZG8gbm90IGNoZWNrIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGhlcmUsIGJlY2F1c2UgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgIHRydWUsIGFuZCBiZWNhdXNlIGNvbXB1dGluZyBpdCB0YWtlcyBPKG51bWJlciBvZiBjaGlsZHJlbiksIG5vZGUgY2FuIGJlIHB1c2hlZFxuICAgICAgICAgICBvbiB0aGUgc3RhY2sgb25jZSBwZXIgY2hpbGQsIGFuZCBleHBlcnQgbm9kZXMgY2FuIGhhdmUgbG90cyBvZiBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgZG9uZVxuOztcblxuKCogW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB0IH5jaGlsZCB+cGFyZW50XSBhZGRzIFtwYXJlbnRdIGFzIGEgcGFyZW50IG9mXG4gICBbY2hpbGRdLCBhbmQgbWFrZXMgW2NoaWxkXSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBuZWNlc3NhcnksIGVuc3VyaW5nIHRoZWlyIGhlaWdodHNcbiAgIGFyZSBhY2N1cmF0ZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBbY2hpbGRdIGFuZCBbcGFyZW50XVxuICAgdGhvdWdoLiAqKVxubGV0IHJlYyBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSBOb2RlLnQgLT4gcGFyZW50OmIgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkIGluXG4gIE5vZGUuYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGlmIG5vdCAoTm9kZS5pc192YWxpZCBjaGlsZCkgdGhlbiBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKFQgcGFyZW50KTtcbiAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIGUgfmNoaWxkX2luZGV4XG4gIHwgXyAtPiAoKVxuXG5hbmQgYmVjYW1lX25lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gICgqIFtTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luXSBpcyB0cnVlIChhc3N1bWluZyB0aGUgc2NvcGUgaXRzZWxmIGlzIHZhbGlkKVxuICAgICBiZWNhdXNlIFtOb2RlLml0ZXJfY2hpbGRyZW5dIGJlbG93IGZpcnN0IHZpc2l0cyB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kIG5vZGVzIGFuZFxuICAgICB0aGVuIHRoZSByaHMuICopXG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZSAmJiBub3QgKFNjb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW4pXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVHJ5aW5nIHRvIG1ha2UgYSBub2RlIG5lY2Vzc2FyeSB3aG9zZSBkZWZpbmluZyBiaW5kIGlzIG5vdCBuZWNlc3NhcnlcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgKCogU2luY2UgW25vZGVdIGJlY2FtZSBuZWNlc3NhcnksIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudCwgd2UgbmVlZCB0bzpcblxuICAgICAtIGFkZCBwYXJlbnQgcG9pbnRlcnMgdG8gW25vZGVdIGZyb20gaXRzIGNoaWxkcmVuLlxuICAgICAtIHNldCBbbm9kZV0ncyBoZWlnaHQuXG4gICAgIC0gYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAsIGlmIG5lY2Vzc2FyeS4gKilcbiAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gbm9kZSB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDtcbiAgICAoKiBOb3cgdGhhdCBjaGlsZCBpcyBuZWNlc3NhcnksIGl0IHNob3VsZCBoYXZlIGEgdmFsaWQgaGVpZ2h0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5oZWlnaHQgPj0gMCk7XG4gICAgaWYgY2hpbGQuaGVpZ2h0ID49IG5vZGUuaGVpZ2h0IHRoZW4gc2V0X2hlaWdodCBub2RlIChjaGlsZC5oZWlnaHQgKyAxKSk7XG4gICgqIE5vdyB0aGF0IHRoZSBoZWlnaHQgaXMgY29ycmVjdCwgbWF5YmUgYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAuICBbbm9kZV1cbiAgICAganVzdCBiZWNhbWUgbmVjZXNzYXJ5LCBzbyBpdCBjYW4ndCBoYXZlIGJlZW4gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgU2luY2UgW25vZGVdXG4gICAgIGlzIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGUgcmVjb21wdXRlIGhlYXAgaWZmIGl0IGlzIHN0YWxlLiAqKVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpO1xuICBpZiBOb2RlLmlzX3N0YWxlIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTp0cnVlXG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJlY2FtZV9uZWNlc3Nhcnkgbm9kZSA9XG4gIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZTtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgbm9kZS5zdGF0ZVxuOztcblxubGV0IGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gcGFyZW50LnN0YXRlIGluXG4gICgqIEluIHRoZSBjYXNlIHdoZW4gdGhlIGVkZ2UgYmVpbmcgYWRkZWQgY3JlYXRlcyBhIGN5Y2xlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlXG4gICAgIHJlY3Vyc2lvbiBpbiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXSB0byByZWFjaCBbcGFyZW50XSBhcyBhIGRlc2NlbmRhbnRcbiAgICAgb2YgW2NoaWxkXS4gIEluIHRoYXQgY2FzZSwgdGhlIHJlY3Vyc2lvbiB0ZXJtaW5hdGVzLCBiZWNhdXNlIFtOb2RlLmlzX25lY2Vzc2FyeVxuICAgICBwYXJlbnRdLiAgV2UgdGhlbiByZXR1cm4gaGVyZSBhbmQgc3Vic2VxdWVudGx5IGRldGVjdCB0aGUgY3ljbGUgaW5cbiAgICAgW2FkanVzdF9oZWlnaHRzXS4gKilcbiAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgKCogV2UgYWRqdXN0IGhlaWdodHMgc28gdGhhdCB3ZSBlbnN1cmUgdGhlcmUgYXJlIG5vIGN5Y2xlcyBiZWZvcmUgY2FsbGluZ1xuICAgICBbcHJvcGFnYXRlX2ludmFsaWRpdHldLiAqKVxuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuXG4gICAgQWRqdXN0X2hlaWdodHNfaGVhcC5hZGp1c3RfaGVpZ2h0c1xuICAgICAgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGRcbiAgICAgIH5wYXJlbnQ7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQ7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAoKiB3ZSBvbmx5IGFkZCBuZWNlc3NhcnkgcGFyZW50cyAqKVxuICBpZiAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpXG4gICYmIChTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHBhcmVudC5yZWNvbXB1dGVkX2F0XG4gICAgICB8fCBOb2RlLmVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG47O1xuXG5sZXQgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGxldCBzYXZlZCA9IHQuY3VycmVudF9zY29wZSBpblxuICB0LmN1cnJlbnRfc2NvcGUgPC0gc2NvcGU7XG4gIHRyeVxuICAgIGxldCB2ID0gZiAoKSBpblxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICB2XG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBpZiBub3QgKFNjb3BlLmlzX3ZhbGlkIHNjb3BlKVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBydW4gd2l0aGluIGFuIGludmFsaWQgc2NvcGVcIiB0IFslc2V4cF9vZjogdF07XG4gIHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmZcbjs7XG5cbmxldCBjaGFuZ2VfY2hpbGRcbiAgOiB0eXBlIGEgYi5cbiAgICBwYXJlbnQ6YSBOb2RlLnRcbiAgICAtPiBvbGRfY2hpbGQ6YiBOb2RlLnQgVW9wdC50XG4gICAgLT4gbmV3X2NoaWxkOmIgTm9kZS50XG4gICAgLT4gY2hpbGRfaW5kZXg6aW50XG4gICAgLT4gdW5pdFxuICA9XG4gIGZ1biB+cGFyZW50IH5vbGRfY2hpbGQgfm5ld19jaGlsZCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF9jaGlsZFxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleFxuICBlbHNlIChcbiAgICBsZXQgb2xkX2NoaWxkID0gVW9wdC51bnNhZmVfdmFsdWUgb2xkX2NoaWxkIGluXG4gICAgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9jaGlsZCBuZXdfY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSByZW1vdmUgW29sZF9jaGlsZF0gYmVmb3JlIGFkZGluZyBbbmV3X2NoaWxkXSwgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZSBzYW1lXG4gICAgICAgICBjaGlsZCBpbmRleC4gKilcbiAgICAgIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQ6b2xkX2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgKCogV2UgZm9yY2UgW29sZF9jaGlsZF0gdG8gdGVtcG9yYXJpbHkgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgW2FkZF9wYXJlbnRdIGNhbid0XG4gICAgICAgICBtaXN0YWtlbmx5IHRoaW5rIGl0IGlzIHVubmVjZXNzYXJ5IGFuZCB0cmFuc2l0aW9uIGl0IHRvIG5lY2Vzc2FyeSAod2hpY2ggd291bGRcbiAgICAgICAgIGFkZCBkdXBsaWNhdGUgZWRnZXMgYW5kIGJyZWFrIHRoaW5ncyBob3JyaWJseSkuICopXG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIHRydWU7XG4gICAgICBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIGZhbHNlO1xuICAgICAgKCogV2UgW2NoZWNrX2lmX3VubmVjZXNzYXJ5XSBhZnRlciBbYWRkX3BhcmVudF0sIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseVxuICAgICAgICAgdHJhbnNpdGlvbiBub2RlcyBmcm9tIG5lY2Vzc2FyeSB0byB1bm5lY2Vzc2FyeSBhbmQgdGhlbiBiYWNrIGFnYWluLiAqKVxuICAgICAgY2hlY2tfaWZfdW5uZWNlc3Nhcnkgb2xkX2NoaWxkKSlcbjs7XG5cbmxldCBhZGRfYWxhcm0gY2xvY2sgfmF0IGFsYXJtX3ZhbHVlID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICBUaW1pbmdfd2hlZWwuYWRkIGNsb2NrLnRpbWluZ193aGVlbCB+YXQgYWxhcm1fdmFsdWVcbjs7XG5cbmxldCByZWMgcmVjb21wdXRlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIFNvbWUgKFQgbm9kZSk7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZCArIDE7XG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoQXJyYXlfZm9sZC5jb21wdXRlIGFycmF5X2ZvbGQpXG4gIHwgQXQgeyBhdDsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGFuIFtBdF0gbm9kZSBhZnRlciBbYXRdLiAgW2FkdmFuY2VfY2xvY2tdIHdhc1xuICAgICAgIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbQ29uc3RdIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBCZWZvcmVcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZVxuICAgICAgKHsgbWFpblxuICAgICAgIDsgZlxuICAgICAgIDsgbGhzXG4gICAgICAgOyByaHNfc2NvcGVcbiAgICAgICA7IHJocyA9IG9sZF9yaHNcbiAgICAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICA7IF9cbiAgICAgICB9IGFzIGJpbmQpIC0+XG4gICAgKCogV2UgY2xlYXIgW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gc28gaXQgd2lsbCBob2xkIGp1c3QgdGhlIG5vZGVzIGNyZWF0ZWQgYnlcbiAgICAgICB0aGlzIGNhbGwgdG8gW2ZdLiAqKVxuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQubm9uZTtcbiAgICBsZXQgcmhzID0gcnVuX3dpdGhfc2NvcGUgdCByaHNfc2NvcGUgfmY6KGZ1biAoKSAtPiBmIChOb2RlLnZhbHVlX2V4biBsaHMpKSBpblxuICAgIGJpbmQucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogQW50aWNpcGF0ZSB3aGF0IFttYXliZV9jaGFuZ2VfdmFsdWVdIHdpbGwgZG8sIHRvIG1ha2Ugc3VyZSBCaW5kX21haW4gaXMgc3RhbGVcbiAgICAgICByaWdodCBhd2F5LiBUaGlzIHdheSwgaWYgdGhlIG5ldyBjaGlsZCBpcyBpbnZhbGlkLCB3ZSdsbCBzYXRpc2Z5IHRoZSBpbnZhcmlhbnRcbiAgICAgICBzYXlpbmcgdGhhdCBbbmVlZHNfdG9fYmVfY29tcHV0ZWQgYmluZF9tYWluXSBpbiBbcHJvcGFnYXRlX2ludmFsaWRpdHldICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmJpbmRfcmhzX2NoaWxkX2luZGV4O1xuICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfcmhzXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBpbnZhbGlkYXRlIGFmdGVyIFtjaGFuZ2VfY2hpbGRdLCBiZWNhdXNlIGludmFsaWRhdGlvbiBjaGFuZ2VzIHRoZSBba2luZF0gb2ZcbiAgICAgICAgIG5vZGVzIHRvIFtJbnZhbGlkXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIHZpc2l0IHRoZWlyIGNoaWxkcmVuLlxuICAgICAgICAgQWxzbywgdGhlIFtvbGRfcmhzXSBub2RlcyBhcmUgdHlwaWNhbGx5IG1hZGUgdW5uZWNlc3NhcnkgYnkgW2NoYW5nZV9jaGlsZF0sIGFuZFxuICAgICAgICAgc28gYnkgaW52YWxpZGF0aW5nIGFmdGVyd2FyZHMsIHdlIHdpbGwgbm90IHdhc3RlIHRpbWUgYWRkaW5nIHRoZW0gdG8gdGhlXG4gICAgICAgICByZWNvbXB1dGUgaGVhcCBhbmQgdGhlbiByZW1vdmluZyB0aGVtLiAqKVxuICAgICAgaWYgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgZWxzZVxuICAgICAgICByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgdFxuICAgICAgICAgIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB+bmV3X3Njb3BlOm1haW4uY3JlYXRlZF9pbjtcbiAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQpO1xuICAgICgqIFtub2RlXSB3YXMgdmFsaWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBbQmluZF9saHNfY2hhbmdlXSBicmFuY2gsIGFuZCBpbnZhbGlkYXRpb25cbiAgICAgICBvbmx5IHZpc2l0cyBoaWdoZXIgbm9kZXMsIHNvIFtub2RlXSBpcyBzdGlsbCB2YWxpZC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IENvbnN0IGEgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuOyBfIH0gLT5cbiAgICBsZXQgdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgIGlmIG9ubHlfZnJlZXplX3doZW4gdmFsdWVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCB2YWx1ZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gc2V0X2hlaWdodCBub2RlIDAgZWxzZSBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFsdWVcbiAgfCBJZl90ZXN0X2NoYW5nZSAoeyBtYWluOyBjdXJyZW50X2JyYW5jaDsgdGVzdDsgdGhlbl87IGVsc2VfOyBfIH0gYXMgaWZfdGhlbl9lbHNlKSAtPlxuICAgIGxldCBkZXNpcmVkX2JyYW5jaCA9IGlmIE5vZGUudmFsdWVfZXhuIHRlc3QgdGhlbiB0aGVuXyBlbHNlIGVsc2VfIGluXG4gICAgaWZfdGhlbl9lbHNlLmN1cnJlbnRfYnJhbmNoIDwtIFVvcHQuc29tZSBkZXNpcmVkX2JyYW5jaDtcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6Y3VycmVudF9icmFuY2hcbiAgICAgIH5uZXdfY2hpbGQ6ZGVzaXJlZF9icmFuY2hcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmlmX2JyYW5jaF9jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IElmX3RoZW5fZWxzZSB7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoKVxuICB8IEludmFsaWQgLT5cbiAgICAoKiBXZSBuZXZlciBoYXZlIGludmFsaWQgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwOyB0aGV5IGFyZSBuZXZlciBzdGFsZS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBKb2luX2xoc19jaGFuZ2UgKHsgbGhzOyBtYWluOyByaHMgPSBvbGRfcmhzOyBfIH0gYXMgam9pbikgLT5cbiAgICBsZXQgcmhzID0gTm9kZS52YWx1ZV9leG4gbGhzIGluXG4gICAgam9pbi5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmpvaW5fcmhzX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSm9pbl9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgTWFwIChmLCBuMSkgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSlcbiAgfCBTbmFwc2hvdCB7IGF0OyBiZWZvcmU7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhIFtTbmFwc2hvdF0gYW5kIHRoZSBhbGFybSBzaG91bGQgaGF2ZSBmaXJlZC5cbiAgICAgICBbYWR2YW5jZV9jbG9ja10gd2FzIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbRnJlZXplXSBhdCB0aGUgYXBwcm9wcmlhdGVcbiAgICAgICB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBiZWZvcmVcbiAgfCBTdGVwX2Z1bmN0aW9uICh7IGNoaWxkOyBjbG9jazsgXyB9IGFzIHN0ZXBfZnVuY3Rpb25fbm9kZSkgLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGlsZCA9IFVvcHQudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlXG4gICAgICAgICAgIGNoaWxkLmNoYW5nZWRfYXRcbiAgICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXRcbiAgICAgICAgID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDwtIGNoaWxkLmNoYW5nZWRfYXQ7XG4gICAgICAgIHJlbW92ZV9hbGFybSBjbG9jayBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm07XG4gICAgICAgIGxldCBzdGVwX2Z1bmN0aW9uID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIDwtIFVvcHQuc29tZSAoU3RlcF9mdW5jdGlvbi5pbml0IHN0ZXBfZnVuY3Rpb24pO1xuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgPC0gU3RlcF9mdW5jdGlvbi5zdGVwcyBzdGVwX2Z1bmN0aW9uO1xuICAgICAgICAoKiBJZiB0aGUgY2hpbGQgaXMgYSBjb25zdGFudCwgd2UgZHJvcCBvdXIgcmVmZXJlbmNlIHRvIGl0LCB0byBhdm9pZCBob2xkaW5nIG9uIHRvXG4gICAgICAgICAgIHRoZSBlbnRpcmUgc3RlcCBmdW5jdGlvbi4gKilcbiAgICAgICAgaWYgTm9kZS5pc19jb25zdCBjaGlsZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuY2hpbGQgPC0gVW9wdC5ub25lO1xuICAgICAgICAgIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpKSkpO1xuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5hZHZhbmNlIHN0ZXBfZnVuY3Rpb25fbm9kZSB+dG9fOihub3cgY2xvY2spO1xuICAgIGxldCBzdGVwX2Z1bmN0aW9uX3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIGluXG4gICAgKG1hdGNoIFNlcXVlbmNlLmhkIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyB3aXRoXG4gICAgIHwgTm9uZSAtPiBpZiBVb3B0LmlzX25vbmUgY2hpbGQgdGhlbiBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHN0ZXBfZnVuY3Rpb25fdmFsdWUpXG4gICAgIHwgU29tZSAoYXQsIF8pIC0+XG4gICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBzdGVwX2Z1bmN0aW9uX3ZhbHVlXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY29tcHV0ZSB1KVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVmFyIHZhciAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YXIudmFsdWVcbiAgfCBNYXAyIChmLCBuMSwgbjIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpKVxuICB8IE1hcDMgKGYsIG4xLCBuMiwgbjMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSlcbiAgfCBNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpIChOb2RlLnZhbHVlX2V4biBuNCkpXG4gIHwgTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSkpXG4gIHwgTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpKVxuICB8IE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNykpXG4gIHwgTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOCkpXG4gIHwgTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpKVxuICB8IE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMCkpXG4gIHwgTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKSlcbiAgfCBNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpKVxuICB8IE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMykpXG4gIHwgTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KSlcbiAgfCBNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTUpKVxuICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAobWF0Y2ggRXhwZXJ0LmJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIGV4cGVydCB3aXRoXG4gICAgIHwgYEludmFsaWQgLT5cbiAgICAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0XG4gICAgIHwgYE9rIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChleHBlcnQuZiAoKSkpXG5cbmFuZCBjb3B5X2NoaWxkIDogdHlwZSBhLiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGQ6YSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biB+cGFyZW50IH5jaGlsZCAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIGNoaWxkXG4gIHRoZW4gbWF5YmVfY2hhbmdlX3ZhbHVlIHBhcmVudCAoTm9kZS52YWx1ZV9leG4gY2hpbGQpXG4gIGVsc2UgKFxuICAgIGludmFsaWRhdGVfbm9kZSBwYXJlbnQ7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgcGFyZW50LnN0YXRlKVxuXG5hbmQgbWF5YmVfY2hhbmdlX3ZhbHVlIDogdHlwZSBhLiBhIE5vZGUudCAtPiBhIC0+IHVuaXQgPVxuICBmdW4gbm9kZSBuZXdfdmFsdWUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGxldCBvbGRfdmFsdWVfb3B0ID0gbm9kZS52YWx1ZV9vcHQgaW5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZV9vcHRcbiAgfHwgbm90XG4gICAgICAgKEN1dG9mZi5zaG91bGRfY3V0b2ZmXG4gICAgICAgICAgbm9kZS5jdXRvZmZcbiAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgIH5uZXdfdmFsdWUpXG4gIHRoZW4gKFxuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQuc29tZSBuZXdfdmFsdWU7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfY2hhbmdlZCA8LSB0Lm51bV9ub2Rlc19jaGFuZ2VkICsgMTtcbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gb2xkX3ZhbHVlX29wdDtcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGUpO1xuICAgIGlmIG5vZGUubnVtX3BhcmVudHMgPj0gMVxuICAgIHRoZW4gKFxuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBub2RlLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgaW5cbiAgICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBleHBlcnRcbiAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgICAgdVxuICAgICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpXG4gICAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAoKiBXZSBkb24ndCBkbyB0aGUgW2Nhbl9yZWNvbXB1dGVfbm93XSBvcHRpbWl6YXRpb24uICBTaW5jZSBtb3N0IG5vZGVzIG9ubHkgaGF2ZVxuICAgICAgICAgICBvbmUgcGFyZW50LCBpdCBpcyBub3QgcHJvYmFibHkgbm90IGEgYmlnIGxvc3MuICBJZiB3ZSBkaWQgaXQgYW55d2F5LCB3ZSdkXG4gICAgICAgICAgIGhhdmUgdG8gYmUgY2FyZWZ1bCwgYmVjYXVzZSB3aGlsZSB3ZSBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFyZW50cywgd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGVtLCBhbmQgaW4gcGFydGljdWxhciB3ZSBjYW4gZXhlY3V0ZSBsaHMtY2hhbmdlIG5vZGVzIHdobyBjYW5cbiAgICAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgVGhpbmsgYWJvdXQ6XG5cbiAgICAgICAgICAge1tcbiAgICAgICAgICAgICBsaHMgPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBsaHMgPj58IEZuLmlkIGVsc2UgY29uc3QgYlxuICAgICAgICAgICBdfVxuXG4gICAgICAgICAgIElmIHRoZSBvcHRpbWl6YXRpb24ga2lja3MgaW4gd2hlbiB3ZSBwcm9wYWdhdGUgY2hhbmdlIHRvIHRoZSBwYXJlbnRzIG9mIFtsaHNdXG4gICAgICAgICAgICh3aGljaCBjaGFuZ2VzIGZyb20gW3RydWVdIHRvIFtmYWxzZV0pLCB3ZSBjb3VsZCBleGVjdXRlIHRoZSBbbGhzLWNoYW5nZV1cbiAgICAgICAgICAgZmlyc3QsIHdoaWNoIHdvdWxkIG1ha2UgZGlzY29ubmVjdCB0aGUgW21hcF0gbm9kZSBmcm9tIFtsaHNdLiAgQW5kIHRoZW4gd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBbbGhzXSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnltb3JlIGFuZFxuICAgICAgICAgICBpbmNyZW1lbnRhbCB3b3VsZCBzZWdmYXVsdCAodGhlcmUgbWF5IGJlIGEgbGVzcyBuYWl2ZSB3YXkgb2YgbWFraW5nIHRoaXMgd29ya1xuICAgICAgICAgICB0aG91Z2gpLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuICAgICAgZG9uZTtcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gbm9kZS5wYXJlbnQwIGluXG4gICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgIHwgRXhwZXJ0IHAgLT5cbiAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKSBpblxuICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBwXG4gICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgIHVcbiAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKVxuICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgfCBfIC0+ICgpKTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjYW5fcmVjb21wdXRlX25vdyA9XG4gICAgICAgICAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmVuJ3QgcGFyZW50cy4gKilcbiAgICAgICAgICB8IEF0IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBBdF9pbnRlcnZhbHMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IENvbnN0IF8gfCBJbnZhbGlkIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZC4gKilcbiAgICAgICAgICB8IEFycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgTWFwMiBfXG4gICAgICAgICAgfCBNYXAzIF9cbiAgICAgICAgICB8IE1hcDQgX1xuICAgICAgICAgIHwgTWFwNSBfXG4gICAgICAgICAgfCBNYXA2IF9cbiAgICAgICAgICB8IE1hcDcgX1xuICAgICAgICAgIHwgTWFwOCBfXG4gICAgICAgICAgfCBNYXA5IF9cbiAgICAgICAgICB8IE1hcDEwIF9cbiAgICAgICAgICB8IE1hcDExIF9cbiAgICAgICAgICB8IE1hcDEyIF9cbiAgICAgICAgICB8IE1hcDEzIF9cbiAgICAgICAgICB8IE1hcDE0IF9cbiAgICAgICAgICB8IE1hcDE1IF9cbiAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF9cbiAgICAgICAgICB8IEV4cGVydCBfIC0+IGZhbHNlXG4gICAgICAgICAgKCogV2UgY2FuIGltbWVkaWF0ZWx5IHJlY29tcHV0ZSBbcGFyZW50XSBpZiBubyBvdGhlciBub2RlIG5lZWRzIHRvIGJlIHN0YWJsZVxuICAgICAgICAgICAgIGJlZm9yZSBjb21wdXRpbmcgaXQuICBJZiBbcGFyZW50XSBoYXMgYSBzaW5nbGUgY2hpbGQgKGkuZS4gW25vZGVdKSwgdGhlblxuICAgICAgICAgICAgIHRoaXMgYW1vdW50cyB0byBjaGVja2luZyB0aGF0IFtwYXJlbnRdIHdvbid0IGJlIGludmFsaWRhdGVkLCBpLmUuIHRoYXRcbiAgICAgICAgICAgICBbcGFyZW50XSdzIHNjb3BlIGhhcyBhbHJlYWR5IHN0YWJpbGl6ZWQuICopXG4gICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgRnJlZXplIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBNYXAgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgKCogRm9yIHRoZXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIFwiX2NoYW5nZVwiIGNoaWxkIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICBldmFsdWF0ZWQgKGlmIG5lZWRlZCkuICBJZiBzbywgdGhpcyBhbHNvIGltcGxpZXM6XG5cbiAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAgICBdfSAqKVxuICAgICAgICAgIHwgQmluZF9tYWluIGIgLT4gbm9kZS5oZWlnaHQgPiBiLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBJZl90aGVuX2Vsc2UgaSAtPiBub2RlLmhlaWdodCA+IGkudGVzdF9jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBKb2luX21haW4gaiAtPiBub2RlLmhlaWdodCA+IGoubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgaW5cbiAgICAgICAgaWYgY2FuX3JlY29tcHV0ZV9ub3dcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgaWYgcGFyZW50LmhlaWdodCA8PSBSZWNvbXB1dGVfaGVhcC5taW5faGVpZ2h0IHQucmVjb21wdXRlX2hlYXBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgW3BhcmVudC5oZWlnaHRdIGlzIFs8PV0gdGhlIGhlaWdodCBvZiBhbGwgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwXG4gICAgICAgICAgICAgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHJlY29tcHV0ZSBoZWFwIGlzIGVtcHR5KSwgdGhlbiB3ZSBjYW4gcmVjb21wdXRlXG4gICAgICAgICAgICAgW3BhcmVudF0gaW1tZWRpYXRlbHkgYW5kIHNhdmUgYWRkaW5nIGl0IHRvIGFuZCB0aGVuIHJlbW92aW5nIGl0IGZyb20gdGhlXG4gICAgICAgICAgICAgcmVjb21wdXRlIGhlYXAuICopXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpO1xuICAgICAgICAgIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudCkpKSk7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgciA9XG4gIGxldCAoVCBub2RlKSA9IFJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gciBpblxuICBpZiBkZWJ1ZyAmJiBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJub2RlIHVuZXhwZWN0ZWRseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbXB1dGVkXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICByZWNvbXB1dGUgbm9kZVxuOztcblxubGV0IHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5kaXNhbGxvd2VkX29ic2VydmVycyBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgfCBEaXNhbGxvd2VkIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBsZXQgKFQgYWxsX29ic2VydmVycykgPSBVb3B0LnZhbHVlX2V4biB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICBpZiBJbnRlcm5hbF9vYnNlcnZlci5zYW1lIGludGVybmFsX29ic2VydmVyIGFsbF9vYnNlcnZlcnNcbiAgICB0aGVuIHQuYWxsX29ic2VydmVycyA8LSBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbDtcbiAgICBJbnRlcm5hbF9vYnNlcnZlci51bmxpbmsgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyID1cbiAgbGV0IHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlIGludGVybmFsX29ic2VydmVyIGluXG4gIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gKClcbiAgfCBDcmVhdGVkIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbiAgfCBJbl91c2UgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIERpc2FsbG93ZWQ7XG4gICAgU3RhY2sucHVzaCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKVxuOztcblxubGV0IGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmZpbmFsaXplZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQuZmluYWxpemVkX29ic2VydmVycyBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgdGhlbiBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl9maW5hbGl6ZXIgdCA9XG4gIHN0YWdlIChmdW4gb2JzZXJ2ZXIgLT5cbiAgICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAhb2JzZXJ2ZXIgaW5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZmluYWxpemVkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcikpXG47O1xuXG5sZXQgY3JlYXRlX29ic2VydmVyID8oc2hvdWxkX2ZpbmFsaXplID0gdHJ1ZSkgKG9ic2VydmluZyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gb2JzZXJ2aW5nLnN0YXRlIGluXG4gIGxldCBpbnRlcm5hbF9vYnNlcnZlciA6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gICAgeyBzdGF0ZSA9IENyZWF0ZWRcbiAgICA7IG9ic2VydmluZ1xuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IHByZXZfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgcHJldl9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICBTdGFjay5wdXNoIHQubmV3X29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcik7XG4gIGxldCBvYnNlcnZlciA9IHJlZiBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBpZiBzaG91bGRfZmluYWxpemVcbiAgdGhlbiBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9leG4gb2JzZXJ2ZXIgKHVuc3RhZ2UgKG9ic2VydmVyX2ZpbmFsaXplciB0KSk7XG4gIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyArIDE7XG4gIG9ic2VydmVyXG47O1xuXG5sZXQgYWRkX25ld19vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0Lm5ld19vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5uZXdfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IG1vZHVsZSBQYWNrZWQgPSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFVubGlua2VkIC0+ICgpXG4gICAgfCBDcmVhdGVkIC0+XG4gICAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBJbl91c2U7XG4gICAgICBsZXQgb2xkX2FsbF9vYnNlcnZlcnMgPSB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfYWxsX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsIDwtIG9sZF9hbGxfb2JzZXJ2ZXJzO1xuICAgICAgICBQYWNrZWQuc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfYWxsX29ic2VydmVycykgKFVvcHQuc29tZSBwYWNrZWQpKTtcbiAgICAgIHQuYWxsX29ic2VydmVycyA8LSBVb3B0LnNvbWUgcGFja2VkO1xuICAgICAgbGV0IG9ic2VydmluZyA9IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyBpblxuICAgICAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcgaW5cbiAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgKyBMaXN0Lmxlbmd0aCBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgICBsZXQgb2xkX29ic2VydmVycyA9IG9ic2VydmluZy5vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmcgPC0gb2xkX29ic2VydmVycztcbiAgICAgICAgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9vYnNlcnZlcnMpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICAgICgqIEJ5IGFkZGluZyBbaW50ZXJuYWxfb2JzZXJ2ZXJdIHRvIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSwgd2UgbWF5IGhhdmUgYWRkZWRcbiAgICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyB0byBbb2JzZXJ2aW5nXS4gIFdlIG5lZWQgdG8gaGFuZGxlIFtvYnNlcnZpbmddIGFmdGVyIHRoaXNcbiAgICAgICAgIHN0YWJpbGl6YXRpb24gdG8gZ2l2ZSB0aG9zZSBoYW5kbGVycyBhIGNoYW5jZSB0byBydW4uICopXG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBvYnNlcnZpbmc7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nKTtcbiAgICAgIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBvYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlciA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT4gT2JzZXJ2ZXIudmFsdWVfZXhuIG9ic2VydmVyXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBkdXJpbmcgc3RhYmlsaXphdGlvblwiXG4gICAgICBvYnNlcnZlclxuICAgICAgWyVzZXhwX29mOiBfIE9ic2VydmVyLnRdXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWUgb2JzZXJ2ZXIgPVxuICB0cnkgT2sgKG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlcikgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbjs7XG5cbmxldCBub2RlX29uX3VwZGF0ZSAodHlwZSBhKSAobm9kZSA6IGEgTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBOb2RlLm9uX3VwZGF0ZSBub2RlIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGVcbjs7XG5cbmxldCBvYnNlcnZlcl9vbl91cGRhdGVfZXhuIG9ic2VydmVyIH5mID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKE9ic2VydmVyLm9ic2VydmluZyBvYnNlcnZlcilcbjs7XG5cbmxldCBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICB0Lm51bV92YXJfc2V0cyA8LSB0Lm51bV92YXJfc2V0cyArIDE7XG4gIHZhci52YWx1ZSA8LSB2YWx1ZTtcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB2YXIuc2V0X2F0IHQuc3RhYmlsaXphdGlvbl9udW0gPCAwXG4gIHRoZW4gKFxuICAgIHZhci5zZXRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBsZXQgd2F0Y2ggPSB2YXIud2F0Y2ggaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSB3YXRjaCk7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgd2F0Y2ggJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHdhdGNoKVxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgd2F0Y2gpXG47O1xuXG5sZXQgc2V0X3ZhciB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3Qgc2V0IHZhciAtLSBzdGFiaWxpemF0aW9uIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFslc2V4cF9vZjogUmFpc2VkX2V4bi50XVxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgaWYgVW9wdC5pc19ub25lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgICB0aGVuIFN0YWNrLnB1c2ggdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gKFQgdmFyKTtcbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQuc29tZSB2YWx1ZVxuOztcblxubGV0IHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQud2Vha19oYXNodGJscyA+IDAgZG9cbiAgICBsZXQgKFQgd2Vha19oYXNodGJsKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQud2Vha19oYXNodGJscyBpblxuICAgIFdlYWtfaGFzaHRibC5yZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgd2Vha19oYXNodGJsXG4gIGRvbmVcbjs7XG5cbmxldCBzdGFiaWxpemVfc3RhcnQgdCA9XG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6aW5nO1xuICBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQ7XG4gICgqIEp1c3QgbGlrZSBmb3IgYmluZHMsIHdlIGFkZCBuZXcgb2JzZXJ2ZXJzIGJlZm9yZSByZW1vdmluZyBkaXNhbGxvd2VkIG9ic2VydmVycyB0b1xuICAgICBwb3RlbnRpYWxseSBhdm9pZCBzd2l0Y2hpbmcgdGhlIG9ic2VydmFiaWxpdHkgb2Ygc29tZSBub2RlcyBiYWNrIGFuZCBmb3J0aC4gKilcbiAgYWRkX25ld19vYnNlcnZlcnMgdDtcbiAgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQ7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldCBzdGFiaWxpemVfZW5kIHQgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBOb25lO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICAoKiBXZSBpbmNyZW1lbnQgW3Quc3RhYmlsaXphdGlvbl9udW1dIGJlZm9yZSBoYW5kbGluZyB2YXJpYWJsZXMgc2V0IGR1cmluZ1xuICAgICBzdGFiaWxpemF0aW9uLCBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQgYXMgc2V0IGR1cmluZyB0aGUgbmV3IHN0YWJpbGl6YXRpb24gY3ljbGUuXG4gICAgIEFsc28sIHdlIGluY3JlbWVudCBiZWZvcmUgcnVubmluZyBvbi11cGRhdGUgaGFuZGxlcnMsIHRvIGF2b2lkIHJ1bm5pbmcgb24gdXBkYXRlXG4gICAgIGhhbmRsZXJzIGNyZWF0ZWQgZHVyaW5nIG9uIHVwZGF0ZSBoYW5kbGVycy4gKilcbiAgdC5zdGFiaWxpemF0aW9uX251bSA8LSBTdGFiaWxpemF0aW9uX251bS5hZGQxIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pIGRvXG4gICAgbGV0IChUIHZhcikgPSBTdGFjay5wb3BfZXhuIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgbGV0IHZhbHVlID0gVW9wdC52YWx1ZV9leG4gdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5ub25lO1xuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICBkb25lO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24pIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSBmYWxzZTtcbiAgICBsZXQgb2xkX3ZhbHVlID0gbm9kZS5vbGRfdmFsdWVfb3B0IGluXG4gICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBsZXQgbm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQgPVxuICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIG5vZGUpXG4gICAgICB0aGVuIEludmFsaWRhdGVkXG4gICAgICBlbHNlIGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSlcbiAgICAgIHRoZW4gVW5uZWNlc3NhcnlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV3X3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gbm9kZS52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZVxuICAgICAgICB0aGVuIE5lY2Vzc2FyeSBuZXdfdmFsdWVcbiAgICAgICAgZWxzZSBDaGFuZ2VkIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWUsIG5ld192YWx1ZSkpXG4gICAgaW5cbiAgICBTdGFjay5wdXNoIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyAoVCAobm9kZSwgbm9kZV91cGRhdGUpKVxuICBkb25lO1xuICB0LnN0YXR1cyA8LSBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycztcbiAgbGV0IG5vdyA9IHQuc3RhYmlsaXphdGlvbl9udW0gaW5cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMpIGRvXG4gICAgbGV0IChUIChub2RlLCBub2RlX3VwZGF0ZSkpID0gU3RhY2sucG9wX2V4biB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICBOb2RlLnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgbm9kZSBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIE5vdF9zdGFiaWxpemluZztcbiAgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHRcbjs7XG5cbmxldCByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4biA9XG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCAoUmFpc2VkX2V4bi5jcmVhdGUgZXhuKTtcbiAgcmFpc2UgZXhuXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGFiaWxpemVcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gIHRyeVxuICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgIHdoaWxlIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMCBkb1xuICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgclxuICAgIGRvbmU7XG4gICAgc3RhYmlsaXplX2VuZCB0XG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG5cbjs7XG5cbm1vZHVsZSBTdGVwX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgS2VlcF9nb2luZ1xuICAgIHwgRG9uZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgdCA6IFN0ZXBfcmVzdWx0LnQgPVxuICB0cnlcbiAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgICAgS2VlcF9nb2luZ1xuICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgaWYgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgcjtcbiAgICAgICAgS2VlcF9nb2luZylcbiAgICAgIGVsc2UgKFxuICAgICAgICBzdGFiaWxpemVfZW5kIHQ7XG4gICAgICAgIERvbmUpXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGVwXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICAgKCogSWYgc3RhYmlsaXphdGlvbiBoYXMgYWxyZWFkeSByYWlzZWQsIHRoZW4gW2V4bl0gaXMgbWVyZWx5IGEgbm90aWZpY2F0aW9uIG9mIHRoaXNcbiAgICAgICAgICBmYWN0LCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGl0c2VsZi4gIFdlIHNob3VsZCBqdXN0IHByb3BhZ2F0ZSBbZXhuXVxuICAgICAgICAgIGZvcndhcmQ7IGNhbGxpbmcgW3JhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uXSB3b3VsZCBzdG9yZSBbZXhuXSBhcyB0aGUgZXhjZXB0aW9uXG4gICAgICAgICAgdGhhdCBpbml0aWFsbHkgcmFpc2VkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgIHJhaXNlIGV4blxuICAgICB8IF8gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4pXG47O1xuXG5sZXQgY3JlYXRlX25vZGVfaW4gdCBjcmVhdGVkX2luIGtpbmQgPVxuICB0Lm51bV9ub2Rlc19jcmVhdGVkIDwtIHQubnVtX25vZGVzX2NyZWF0ZWQgKyAxO1xuICBOb2RlLmNyZWF0ZSB0IGNyZWF0ZWRfaW4ga2luZFxuOztcblxubGV0IGNyZWF0ZV9ub2RlIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgdC5jdXJyZW50X3Njb3BlIGtpbmRcbmxldCBjcmVhdGVfbm9kZV90b3AgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCBTY29wZS50b3Aga2luZFxuXG5sZXQgY3JlYXRlX3ZhciB0ID8odXNlX2N1cnJlbnRfc2NvcGUgPSBmYWxzZSkgdmFsdWUgPVxuICBsZXQgc2NvcGUgPSBpZiB1c2VfY3VycmVudF9zY29wZSB0aGVuIHQuY3VycmVudF9zY29wZSBlbHNlIFNjb3BlLnRvcCBpblxuICBsZXQgd2F0Y2ggPSBjcmVhdGVfbm9kZV9pbiB0IHNjb3BlIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHZhciA9XG4gICAgeyBWYXIudmFsdWVcbiAgICA7IHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFVvcHQubm9uZVxuICAgIDsgc2V0X2F0ID0gdC5zdGFiaWxpemF0aW9uX251bVxuICAgIDsgd2F0Y2hcbiAgICB9XG4gIGluXG4gIE5vZGUuc2V0X2tpbmQgd2F0Y2ggKFZhciB2YXIpO1xuICB2YXJcbjs7XG5cbigqIEEgW2NvbnN0XSB2YWx1ZSBjb3VsZCBjb21lIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBvdXRlciBiaW5kLiAgU28sIHdlIGNyZWF0ZSBhXG4gICBbY29uc3RdIG5vZGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUsIG5vdCBpbiBbU2NvcGUudG9wXS4gKilcbmxldCBjb25zdCB0IGEgPSBjcmVhdGVfbm9kZSB0IChDb25zdCBhKVxubGV0IG1hcCAobiA6IF8gTm9kZS50KSB+ZiA9IGNyZWF0ZV9ub2RlIG4uc3RhdGUgKE1hcCAoZiwgbikpXG5sZXQgbWFwMiAobjEgOiBfIE5vZGUudCkgbjIgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMiAoZiwgbjEsIG4yKSlcblxubGV0IGJvdGggKG4xIDogXyBOb2RlLnQpIChuMiA6IF8gTm9kZS50KSA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgeyBraW5kID0gQ29uc3QgYTsgXyB9LCB7IGtpbmQgPSBDb25zdCBiOyBfIH0gLT4gY29uc3QgbjEuc3RhdGUgKGEsIGIpXG4gIHwgXyAtPiBtYXAyIG4xIG4yIH5mOlR1cGxlMi5jcmVhdGVcbjs7XG5cbmxldCBtYXAzIChuMSA6IF8gTm9kZS50KSBuMiBuMyB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAzIChmLCBuMSwgbjIsIG4zKSlcbmxldCBtYXA0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkpXG5cbmxldCBtYXA1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpKVxuOztcblxubGV0IG1hcDYgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpKVxuOztcblxubGV0IG1hcDcgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSlcbjs7XG5cbmxldCBtYXA4IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpKVxuOztcblxubGV0IG1hcDkgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpKVxuOztcblxubGV0IG1hcDEwIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkpXG47O1xuXG5sZXQgbWFwMTEgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSlcbjs7XG5cbmxldCBtYXAxMiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpKVxuOztcblxubGV0IG1hcDEzIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykpXG47O1xuXG5sZXQgbWFwMTQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkpXG47O1xuXG5sZXQgbWFwMTUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgbjE1IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkpXG47O1xuXG5sZXQgcHJlc2VydmVfY3V0b2ZmIH4oaW5wdXQgOiBfIE5vZGUudCkgfm91dHB1dCA9XG4gIE5vZGUuc2V0X2N1dG9mZlxuICAgIG91dHB1dFxuICAgIChDdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZTpfIH5uZXdfdmFsdWU6XyAtPlxuICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmVxdWFsIGlucHV0LmNoYW5nZWRfYXQgb3V0cHV0LmNoYW5nZWRfYXQpKVxuOztcblxubGV0IGRlcGVuZF9vbiBpbnB1dCB+ZGVwZW5kX29uID1cbiAgbGV0IG91dHB1dCA9IG1hcDIgaW5wdXQgZGVwZW5kX29uIH5mOihmdW4gYSBfIC0+IGEpIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbmVjZXNzYXJ5X2lmX2FsaXZlIGlucHV0ID1cbiAgKCogSWYgW291dHB1dF0gaXMgYWxpdmUsIHRoZW4gW29ic2VydmVyXSBpcyBhbGl2ZSwgdGhlbiBbaW5wdXRdIGlzIG5lY2Vzc2FyeS4gIElmXG4gICAgIFtvdXRwdXRdIGlzIHVubmVjZXNzYXJ5LCB0aGVuIFtvdXRwdXRdIGlzIG5vdCBhIHBhcmVudCBvZiBbaW5wdXRdLCBhbmQgdGh1c1xuICAgICBbb3V0cHV0XSdzIGxpdmVuZXNzIGlzIGRlcGVuZGVudCBzb2xlbHkgb24gdXNlciBjb2RlLiAgQW5kIGluIHBhcnRpY3VsYXIsIGlmIFtvdXRwdXRdXG4gICAgIGRpZXMsIHRoZW4gW29ic2VydmVyXSB3aWxsIGJlIGZpbmFsaXplZCwgYW5kIHRoZW4gdXBvbiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLFxuICAgICBbaW5wdXRdIHdpbGwgYmVjb21lIHVubmVjZXNzYXJ5IChhdCBsZWFzdCB3aXRoIHJlc3BlY3QgdG8gW291dHB1dF0pLiAqKVxuICBsZXQgb2JzZXJ2ZXIgPSBjcmVhdGVfb2JzZXJ2ZXIgaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgbWFwIGlucHV0IH5mOihmdW4gYSAtPlxuICAgICAgR2Mua2VlcF9hbGl2ZSBvYnNlcnZlcjtcbiAgICAgIGEpXG4gIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgYmluZCAobGhzIDogXyBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJpbmQgPVxuICAgIHsgQmluZC5tYWluXG4gICAgOyBmXG4gICAgOyBsaHNcbiAgICA7IGxoc19jaGFuZ2VcbiAgICA7IHJocyA9IFVvcHQubm9uZVxuICAgIDsgcmhzX3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gICgqIFdlIHNldCBbbGhzX2NoYW5nZV0gdG8gbmV2ZXIgY3V0b2ZmIHNvIHRoYXQgd2hlbmV2ZXIgW2xoc10gY2hhbmdlcywgW21haW5dIGlzXG4gICAgIHJlY29tcHV0ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgY2FzZXMgd2hlcmUgW2ZdIHJldHVybnMgYW4gZXhpc3Rpbmcgc3RhYmxlXG4gICAgIG5vZGUsIGluIHdoaWNoIGNhc2UgdGhlIFtsaHNfY2hhbmdlXSB3b3VsZCBiZSB0aGUgb25seSB0aGluZyBjYXVzaW5nIFttYWluXSB0byBiZVxuICAgICBzdGFsZS4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBiaW5kLnJoc19zY29wZSA8LSBCaW5kIGJpbmQ7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoQmluZF9saHNfY2hhbmdlIGJpbmQpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEJpbmRfbWFpbiBiaW5kKTtcbiAgbWFpblxuOztcblxubGV0IGJpbmQyIG4xIG4yIH5mID1cbiAgYmluZCAobWFwMiBuMSBuMiB+ZjooZnVuIHYxIHYyIC0+IHYxLCB2MikpIH5mOihmdW4gKHYxLCB2MikgLT4gZiB2MSB2Milcbjs7XG5cbmxldCBiaW5kMyBuMSBuMiBuMyB+ZiA9XG4gIGJpbmQgKG1hcDMgbjEgbjIgbjMgfmY6KGZ1biB2MSB2MiB2MyAtPiB2MSwgdjIsIHYzKSkgfmY6KGZ1biAodjEsIHYyLCB2MykgLT4gZiB2MSB2MiB2Mylcbjs7XG5cbmxldCBiaW5kNCBuMSBuMiBuMyBuNCB+ZiA9XG4gIGJpbmRcbiAgICAobWFwNCBuMSBuMiBuMyBuNCB+ZjooZnVuIHYxIHYyIHYzIHY0IC0+IHYxLCB2MiwgdjMsIHY0KSlcbiAgICB+ZjooZnVuICh2MSwgdjIsIHYzLCB2NCkgLT4gZiB2MSB2MiB2MyB2NClcbjs7XG5cbmxldCBqb2luIChsaHMgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgam9pbiA9IHsgSm9pbi5saHM7IGxoc19jaGFuZ2U7IHJocyA9IFVvcHQubm9uZTsgbWFpbiB9IGluXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChKb2luX2xoc19jaGFuZ2Ugam9pbik7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSm9pbl9tYWluIGpvaW4pO1xuICBtYWluXG47O1xuXG5sZXQgaWZfICh0ZXN0IDogXyBOb2RlLnQpIH50aGVuXyB+ZWxzZV8gPVxuICBsZXQgdCA9IHRlc3Quc3RhdGUgaW5cbiAgbGV0IHRlc3RfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBpZl90aGVuX2Vsc2UgPVxuICAgIHsgSWZfdGhlbl9lbHNlLnRlc3Q7IHRoZW5fOyBlbHNlXzsgdGVzdF9jaGFuZ2U7IG1haW47IGN1cnJlbnRfYnJhbmNoID0gVW9wdC5ub25lIH1cbiAgaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIHRlc3RfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCB0ZXN0X2NoYW5nZSAoSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlKTtcbiAgbWFpblxuOztcblxubGV0IGxhenlfZnJvbV9mdW4gdCB+ZiA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYpXG47O1xuXG5sZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IDRcblxubGV0IG1lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgKCogSGVyZSdzIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB3ZSBnZXQgW3QuY3VycmVudF9zY29wZV0gaGVyZSwgYW5kIHRoZW4gY2FsbFxuICAgICBbd2l0aGluX3Njb3BlXSBiZWxvdy4gIENvbnNpZGVyIHRoaXMgKGltcG9zc2libGUpIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICBbbWVtb2l6ZV9mdW5fYnlfa2V5XTpcblxuICAgICB7W1xuICAgICAgIGxldCB0YWJsZSA9XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0X2V4biBoYXNoYWJsZVxuICAgICAgICAgICAoTGlzdC5tYXAgYWxsX3Bvc3NpYmxlX2FfdmFsdWVzIH5mOihmdW4gYSAtPiAocHJvamVjdF9rZXkgYSwgZiBhKSlcbiAgICAgICBpblxuICAgICAgIHN0YWdlIChmdW4ga2V5IC0+IEhhc2h0YmwuZmluZF9leG4gdGFibGUgKHByb2plY3Rfa2V5IGEpKVxuICAgICBdfVxuXG4gICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCB1c2UgW2N1cnJlbnRfc2NvcGVdIG9yIFt3aXRoaW5fc2NvcGVdLiAgQWxsIGNhbGxzIHRvIFtmXVxuICAgICBuYXR1cmFsbHkgb2NjdXIgaW4gW3QuY3VycmVudF9zY29wZV0uXG5cbiAgICAgU3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBpcyBpbXBvc3NpYmxlIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgW2FsbF9wb3NzaWJsZV9hX3ZhbHVlc10uXG4gICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyB1c2VzIFt3aXRoaW5fc2NvcGVdIHRvIGNhbGwgW2YgYV0gaW4gdGhlIHNjb3BlIHRoYXQgd2FzXG4gICAgIGN1cnJlbnQgYXQgdGhlIHBvaW50IG9mIHRoZSBjYWxsIHRvIFttZW1vaXplX2Z1bl9ieV9rZXldIHNvIHRoYXQgd2UgY2FuIHRoaW5rIG9mIHRoZVxuICAgICBbdGFibGVdIGFzIGhhdmluZyBiZWVuIGNyZWF0ZWQgdGhlbiwgd2hlbiBpdCBpbiByZWFsaXR5IGlzIGNyZWF0ZWQgb24tZGVtYW5kLiAqKVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gSGFzaHRibC5jcmVhdGUgaGFzaGFibGUgfnNpemU6aW5pdGlhbF9zaXplIGluXG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIEhhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubGV0IGFycmF5X2ZvbGQgdCBjaGlsZHJlbiB+aW5pdCB+ZiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBjcmVhdGVfbm9kZSB0IChBcnJheV9mb2xkIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSlcbjs7XG5cbmxldCBhbGwgdCB0cyA9IGFycmF5X2ZvbGQgdCAoQXJyYXkub2ZfbGlzdF9yZXYgdHMpIH5pbml0OltdIH5mOihmdW4gYWMgYSAtPiBhIDo6IGFjKVxuXG5tb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gVW5vcmRlcmVkX2FycmF5X2ZvbGQuVXBkYXRlXG5cbmxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgdFxuICAgICAgPyhmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID0gSW50Lm1heF92YWx1ZSlcbiAgICAgIGNoaWxkcmVuXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH51cGRhdGVcbiAgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgaWYgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA8PSAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwidW5vcmRlcmVkX2FycmF5X2ZvbGQgZ290IG5vbi1wb3NpdGl2ZSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXCJcbiAgICAgIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgIFslc2V4cF9vZjogaW50XVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIE5vZGUuc2V0X2tpbmRcbiAgICAgIG1haW5cbiAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNyZWF0ZVxuICAgICAgICAgICAgfmluaXRcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgfmNoaWxkcmVuXG4gICAgICAgICAgICB+bWFpbikpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gIGxldCBmIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgKyAxXG4gICAgfCBTb21lIHggLT4gZiBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBsZXQgZl9pbnZlcnNlIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgLSAxXG4gICAgfCBTb21lIHggLT4gZl9pbnZlcnNlIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIG1hcFxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICB0c1xuICAgICAgIH5pbml0Oihpbml0LCAwKVxuICAgICAgIH5mXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIGZfaW52ZXJzZSlcbiAgICAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcylcbiAgICB+ZjooZnVuIChhY2N1bSwgbnVtX2ludmFsaWQpIC0+IGlmIG51bV9pbnZhbGlkID0gMCB0aGVuIFNvbWUgYWNjdW0gZWxzZSBOb25lKVxuOztcblxubGV0IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+ayA9XG4gIGxldCBib29sX3RvX2ludCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwIGluXG4gIG1hcFxuICAgIH5mOihmdW4gaSAtPiBpID49IGspXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIG5vZGVzXG4gICAgICAgfmluaXQ6MFxuICAgICAgIH5mOihmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSArIGJvb2xfdG9faW50IGIpXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIChmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSAtIGJvb2xfdG9faW50IGIpKSlcbjs7XG5cbmxldCBleGlzdHMgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azoxXG5sZXQgZm9yX2FsbCB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOihBcnJheS5sZW5ndGggbm9kZXMpXG5cbmxldCBzdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+dXBkYXRlOihGX2ludmVyc2Ugc3ViKVxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgb3B0X3N1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+Zl9pbnZlcnNlOnN1YlxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgc3VtX2ludCB0IG5vZGVzID0gc3VtIHQgbm9kZXMgfnplcm86MCB+YWRkOiggKyApIH5zdWI6KCAtIClcblxubGV0IHN1bV9mbG9hdCB0IG5vZGVzID1cbiAgc3VtXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfnplcm86MC5cbiAgICB+YWRkOiggKy4gKVxuICAgIH5zdWI6KCAtLiApXG4gICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6KEFycmF5Lmxlbmd0aCBub2Rlcylcbjs7XG5cbmxldCBzZXRfZnJlZXplIChub2RlIDogXyBOb2RlLnQpIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbiA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChTY29wZS5pc190b3Agbm9kZS5jcmVhdGVkX2luKTtcbiAgKCogQnkgbWFraW5nIFtub2RlLmtpbmRdIGJlIFtGcmVlemVdLCB3ZSBhcmUgbWFraW5nIFtOb2RlLmlzX25lY2Vzc2FyeSBub2RlXS4gKilcbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIGluXG4gIE5vZGUuc2V0X2tpbmQgbm9kZSAoRnJlZXplIHsgbWFpbiA9IG5vZGU7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuIH0pO1xuICBpZiB3YXNfbmVjZXNzYXJ5XG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpLaW5kLmZyZWV6ZV9jaGlsZF9pbmRleFxuICBlbHNlIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZVxuOztcblxubGV0IGZyZWV6ZSAoY2hpbGQgOiBfIE5vZGUudCkgfm9ubHlfZnJlZXplX3doZW4gPVxuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCBub2RlID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICBzZXRfZnJlZXplIG5vZGUgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuO1xuICBub2RlXG47O1xuXG5sZXQgYXQgY2xvY2sgdGltZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChub3cgY2xvY2spXG4gIHRoZW4gY29uc3QgdCBCZWZvcmVfb3JfYWZ0ZXIuQWZ0ZXJcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgYXQgPSB7IEF0LmF0ID0gdGltZTsgbWFpbjsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChBdCBhdCk7XG4gICAgYXQuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdDp0aW1lIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0IGF0KSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBhZnRlciBjbG9jayBzcGFuID0gYXQgY2xvY2sgKFRpbWVfbnMuYWRkIChub3cgY2xvY2spIHNwYW4pXG5cbmxldCBuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCAoY2xvY2sgOiBDbG9jay50KSB+YmFzZSB+aW50ZXJ2YWwgPVxuICBsZXQgYWZ0ZXIgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0ID0gVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgfmNhbl9lcXVhbF9hZnRlcjpmYWxzZSAoKSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCBhZnRlcik7XG4gIGF0XG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzIChjbG9jayA6IENsb2NrLnQpIGludGVydmFsID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBpbnRlcnZhbCAoVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiBjbG9jay50aW1pbmdfd2hlZWwpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYXRfaW50ZXJ2YWxzIGdvdCB0b28gc21hbGwgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdO1xuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmFzZSA9IG5vdyBjbG9jayBpblxuICBsZXQgYXRfaW50ZXJ2YWxzID0geyBBdF9pbnRlcnZhbHMubWFpbjsgYmFzZTsgaW50ZXJ2YWw7IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICBOb2RlLnNldF9raW5kIG1haW4gKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpO1xuICAoKiBbbWFpbiA6IHVuaXQgTm9kZS50XSwgc28gd2UgbWFrZSBpdCBuZXZlciBjdXRvZmYgc28gaXQgY2hhbmdlcyBlYWNoIHRpbWUgaXQgaXNcbiAgICAgcmVjb21wdXRlZC4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIG1haW4gQ3V0b2ZmLm5ldmVyO1xuICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgPC0gYWRkX2FsYXJtXG4gICAgICAgY2xvY2tcbiAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKSk7XG4gIG1haW5cbjs7XG5cbmxldCBzbmFwc2hvdCBjbG9jayB2YWx1ZV9hdCB+YXQgfmJlZm9yZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSBhdCAobm93IGNsb2NrKVxuICB0aGVuXG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCAobm93IGNsb2NrKVxuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3IgXCJjYW5ub3QgdGFrZSBzbmFwc2hvdCBpbiB0aGUgcGFzdFwiIGF0IFslc2V4cF9vZjogVGltZV9ucy50XVxuICAgIGVsc2UgT2sgKGZyZWV6ZSB2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooRm4uY29uc3QgdHJ1ZSkpXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBzbmFwc2hvdCA9IHsgU25hcHNob3QubWFpbjsgYXQ7IGJlZm9yZTsgdmFsdWVfYXQ7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKFNuYXBzaG90IHNuYXBzaG90KTtcbiAgICAoKiBVbmxpa2Ugb3RoZXIgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMsIGEgc25hcHNob3QgaXMgY3JlYXRlZCBpbiBbU2NvcGUudG9wXSBhbmRcbiAgICAgICBjYW5ub3QgYmUgaW52YWxpZGF0ZWQgYnkgaXRzIHNjb3BlLiAgVGh1cywgdGhlcmUgaXMgbm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICAgICAgIGFsYXJtIHRoYXQgaXMgYWRkZWQsIGJlY2F1c2UgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGJlIHJlbW92ZWQgZWFybHkuICopXG4gICAgaWdub3JlIChhZGRfYWxhcm0gY2xvY2sgfmF0IChBbGFybV92YWx1ZS5jcmVhdGUgKFNuYXBzaG90IHNuYXBzaG90KSkgOiBBbGFybS50KTtcbiAgICBPayBtYWluKVxuOztcblxubGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gY2xvY2sgY2hpbGQgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHN0ZXBfZnVuY3Rpb25fbm9kZSA9XG4gICAgeyBTdGVwX2Z1bmN0aW9uX25vZGUubWFpblxuICAgIDsgdmFsdWUgPSBVb3B0Lm5vbmVcbiAgICA7IGNoaWxkID0gVW9wdC5zb21lIGNoaWxkXG4gICAgOyBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdXBjb21pbmdfc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eVxuICAgIDsgYWxhcm0gPSBBbGFybS5udWxsXG4gICAgOyBhbGFybV92YWx1ZSA9IE9iai5tYWdpYyBOb25lICgqIHNldCBiZWxvdyAqKVxuICAgIDsgY2xvY2tcbiAgICB9XG4gIGluXG4gIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSA8LSBBbGFybV92YWx1ZS5jcmVhdGUgKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIG1haW5cbjs7XG5cbmxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSBTdGFiaWxpemF0aW9uX251bS5ub25lO1xuICAoKiBmb3JjZSB0aGUgbm9kZSB0byBiZSBzdGFsZSAqKVxuICBpZiBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgKGNsb2NrIDogQ2xvY2sudCkgfnRvXyA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJhZHZhbmNlX2Nsb2NrXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgY2xvY2spXG4gIHRoZW4gKFxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIGNsb2NrLm5vdyB0b187XG4gICAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgY2xvY2sudGltaW5nX3doZWVsIH50b18gfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgY2xvY2sudGltaW5nX3doZWVsIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIHdoaWxlIFVvcHQuaXNfc29tZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgZG9cbiAgICAgIGxldCBhbGFybV92YWx1ZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBpblxuICAgICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQ7XG4gICAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIFVvcHQubm9uZTtcbiAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICB8IEF0IHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBOb2RlLnNldF9raW5kIG1haW4gKENvbnN0IEFmdGVyKTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IEF0X2ludGVydmFscyAoeyBtYWluOyBiYXNlOyBpbnRlcnZhbDsgXyB9IGFzIGF0X2ludGVydmFscykgLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGF0X2ludGVydmFscy5hbGFybVxuICAgICAgICAgIDwtIGFkZF9hbGFybVxuICAgICAgICAgICAgICAgY2xvY2tcbiAgICAgICAgICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgICAgICAgICAgYWxhcm1fdmFsdWU7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBTbmFwc2hvdCB7IG1haW47IHZhbHVlX2F0OyBfIH0gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbWFpbik7XG4gICAgICAgIHNldF9mcmVlemUgbWFpbiB+Y2hpbGQ6dmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KGZ1biBfIC0+IHRydWUpO1xuICAgICAgICBtYWtlX3N0YWxlIG1haW5cbiAgICAgIHwgU3RlcF9mdW5jdGlvbiB7IG1haW47IF8gfSAtPiBpZiBOb2RlLmlzX3ZhbGlkIG1haW4gdGhlbiBtYWtlX3N0YWxlIG1haW5cbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQpXG47O1xuXG5sZXQgY3JlYXRlX2Nsb2NrIHQgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ID1cbiAgbGV0IHRpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCBpblxuICBsZXQgcmVjIGNsb2NrIDogQ2xvY2sudCA9XG4gICAgeyBub3cgPSBjcmVhdGVfdmFyIHQgc3RhcnRcbiAgICA7IGhhbmRsZV9maXJlZFxuICAgIDsgZmlyZWRfYWxhcm1fdmFsdWVzID0gVW9wdC5ub25lXG4gICAgOyB0aW1pbmdfd2hlZWxcbiAgICB9XG4gIGFuZCBoYW5kbGVfZmlyZWQgYWxhcm0gPVxuICAgIGxldCBhbGFybV92YWx1ZSA9IFRpbWluZ193aGVlbC5BbGFybS52YWx1ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm0gaW5cbiAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcztcbiAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gVW9wdC5zb21lIGFsYXJtX3ZhbHVlXG4gIGluXG4gIGNsb2NrXG47O1xuXG5sZXQgY3JlYXRlIChtb2R1bGUgQ29uZmlnIDogQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGxldCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gQWRqdXN0X2hlaWdodHNfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgcmVjb21wdXRlX2hlYXAgPSBSZWNvbXB1dGVfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgdCA9XG4gICAgeyBzdGF0dXMgPSBOb3Rfc3RhYmlsaXppbmdcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSBDb25maWcuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgIDsgc3RhYmlsaXphdGlvbl9udW0gPSBTdGFiaWxpemF0aW9uX251bS56ZXJvXG4gICAgOyBjdXJyZW50X3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgOyByZWNvbXB1dGVfaGVhcFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG51bV9hY3RpdmVfb2JzZXJ2ZXJzID0gMFxuICAgIDsgYWxsX29ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG5ld19vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG9ubHlfaW5fZGVidWcgPSBPbmx5X2luX2RlYnVnLmNyZWF0ZSAoKVxuICAgIDsgd2Vha19oYXNodGJscyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA9IGZhbHNlXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfY2hhbmdlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19pbnZhbGlkYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19jcmVhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA9IDBcbiAgICA7IG51bV92YXJfc2V0cyA9IDBcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IFdlYWtfaGFzaHRibC5jcmVhdGUgfnNpemU6aW5pdGlhbF9zaXplIGhhc2hhYmxlIGluXG4gIGxldCBwYWNrZWQgPSBQYWNrZWRfd2Vha19oYXNodGJsLlQgdGFibGUgaW5cbiAgV2Vha19oYXNodGJsLnNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0YWJsZSB+dGhyZWFkX3NhZmVfZjooZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LndlYWtfaGFzaHRibHMgcGFja2VkKTtcbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBXZWFrX2hhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBXZWFrX2hhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAoKiBHaXZlbiB0aGF0IGludmFsaWQgbm9kZSBhcmUgYXQgYXR0ZW1wdCBhdCBhdm9pZGluZyBicmVha2luZyB0aGUgZW50aXJlIGluY3JlbWVudGFsXG4gICAgIGNvbXB1dGF0aW9uIG9uIHByb2JsZW1zLCBsZXQncyBqdXN0IGlnbm9yZSBhbnkgb3BlcmF0aW9uIG9uIGFuIGludmFsaWQgaW5jcmVtZW50YWxcbiAgICAgcmF0aGVyIHRoYW4gcmFpc2luZy4gKilcbiAgbGV0IGV4cGVydF9raW5kX29mX25vZGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgfCBFeHBlcnQgZSAtPiBVb3B0LnNvbWUgZVxuICAgIHwgSW52YWxpZCAtPiBVb3B0Lm5vbmVcbiAgICB8IGtpbmQgLT4gcmFpc2VfcyBbJXNleHAgXCJ1bmV4cGVjdGVkIGtpbmQgZm9yIGV4cGVydCBub2RlXCIsIChraW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPVxuICAgIGxldCBlID0gRXhwZXJ0LmNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgaW5cbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlIHN0YXRlIChFeHBlcnQgZSkgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGlmIE9wdGlvbi5pc19zb21lIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZVxuICAgICAgdGhlblxuICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICA8LSBUIG5vZGUgOjogc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lID1cbiAgICBtYXRjaCBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgOiBzdHJpbmcpXVxuICAgIHwgU29tZSBjdXJyZW50IC0+IGN1cnJlbnRcbiAgOztcblxuICAoKiBOb3RlIHRoYXQgdGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3Qgc3ltbWV0cmljIG9mIG9uZSBhbm90aGVyOiBpbiBbbGV0IHkgPVxuICAgICBtYXAgeF0sIFt4XSBpcyBhbHdheXMgYSBjaGlsZCBvZiBbeV0gKGFzc3VtaW5nIFt4XSBkb2Vzbid0IGJlY29tZSBpbnZhbGlkKSBidXQgW3ldIGluXG4gICAgIG9ubHkgYSBwYXJlbnQgb2YgW3hdIGlmIHkgaXMgbmVjZXNzYXJ5LiAqKVxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19jaGlsZCBub2RlIH5jaGlsZDpjdXJyZW50KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBwYXJlbnQgbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX3BhcmVudCB+cGFyZW50OmN1cnJlbnQgbm9kZSlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gY2hpbGRyZW4gbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcIm1ha2Vfc3RhbGVcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIG1hdGNoIEV4cGVydC5tYWtlX3N0YWxlIGUgd2l0aFxuICAgICAgfCBgQWxyZWFkeV9zdGFsZSAtPiAoKVxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgOztcblxuICBsZXQgaW52YWxpZGF0ZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImludmFsaWRhdGVcIjtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBzdGF0ZVxuICA7O1xuXG4gIGxldCBhZGRfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZGVwIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gICAgICAgICYmIG5vdFxuICAgICAgICAgICAgIChMaXN0Lm1lbVxuICAgICAgICAgICAgICAgIH5lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgICAgICAgICAoVCBub2RlKSlcbiAgICAgICAgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiYWRkX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIGxldCBuZXdfY2hpbGRfaW5kZXggPSBFeHBlcnQuYWRkX2NoaWxkX2VkZ2UgZSAoRSBkZXApIGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBldmVuIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgY2hpbGQgb2ZcbiAgICAgICAgIFtub2RlXSwgYmVjYXVzZSB3ZSBjb3VsZCBiZSBydW5uaW5nIGR1ZSB0byBhIHBhcmVudCBvdGhlciB0aGFuIFtub2RlXSBtYWtpbmcgdXNcbiAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcGFyZW50IH5jaGlsZDpkZXAuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpuZXdfY2hpbGRfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChlZGdlIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcInJlbW92ZV9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW5cbiAgICAgICAgIFthZGRfZGVwZW5kZW5jeV0gKilcbiAgICAgIGxldCBlZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gZWRnZS5pbmRleCBpblxuICAgICAgbGV0IChFIGxhc3RfZWRnZSkgPSBFeHBlcnQubGFzdF9jaGlsZF9lZGdlX2V4biBlIGluXG4gICAgICBsZXQgbGFzdF9lZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gbGFzdF9lZGdlLmluZGV4IGluXG4gICAgICBpZiBlZGdlX2luZGV4IDw+IGxhc3RfZWRnZV9pbmRleFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vZGUuc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZFxuICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgfmNoaWxkMTplZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXhcbiAgICAgICAgICAgIH5jaGlsZDI6bGFzdF9lZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgRXhwZXJ0LnN3YXBfY2hpbGRyZW4gZSB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXggfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpO1xuICAgICAgRXhwZXJ0LnJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIGU7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSBub2RlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVfY2hpbGQgfmNoaWxkOmVkZ2UuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgZWRnZS5jaGlsZCkgdGhlbiBFeHBlcnQuZGVjcl9pbnZhbGlkX2NoaWxkcmVuIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRXhwZXJ0LmVkZ2UgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8ob25fY2hhbmdlID0gaWdub3JlKSBjaGlsZCA6IF8gdCA9IHsgY2hpbGQ7IG9uX2NoYW5nZTsgaW5kZXggPSBVb3B0Lm5vbmUgfVxuXG4gIGxldCB2YWx1ZSAodCA6IF8gdCkgPVxuICAgIGxldCBzdGF0ZSA9IHQuY2hpbGQuc3RhdGUgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIFN0YXRlLkV4cGVydC5hc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnRcbiAgICAgICAgc3RhdGVcbiAgICAgICAgdC5jaGlsZFxuICAgICAgICBcIkRlcGVuZGVuY3kudmFsdWVcIjtcbiAgICAoKiBOb3QgZXhwb3NpbmcgdGhlIF9leG4sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhZHZlcnRpc2VkIGFzIGJlaW5nIHVzYWJsZSBvbmx5XG4gICAgICAgaW5zaWRlIHRoZSBjYWxsYmFja3Mgb2YgcGFyZW50cywgd2hlcmUgaXQgd2lsbCBub3QgcmFpc2UuICopXG4gICAgTm9kZS52YWx1ZV9leG4gdC5jaGlsZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHN0YXRlID8ob25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBmdW4gfmlzX25vd19vYnNlcnZhYmxlOl8gLT4gKCkpIGYgPVxuICAgIFN0YXRlLkV4cGVydC5jcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSA9IFN0YXRlLkV4cGVydC5tYWtlX3N0YWxlXG4gIGxldCB3YXRjaCA9IEZuLmlkXG4gIGxldCBpbnZhbGlkYXRlID0gU3RhdGUuRXhwZXJ0LmludmFsaWRhdGVcbiAgbGV0IGFkZF9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LmFkZF9kZXBlbmRlbmN5XG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5yZW1vdmVfZGVwZW5kZW5jeVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubGV0IGNyZWF0ZSBzdGF0ZSBjaGlsZHJlbiB+ZiB+cmVkdWNlID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBjaGlsZHJlbiBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVkdWNlciA9IEJhbGFuY2VkX3JlZHVjZXIuY3JlYXRlX2V4biAoKSB+bGVuIH5yZWR1Y2UgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBFeHBlcnQxLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGEgPSBCYWxhbmNlZF9yZWR1Y2VyLmNvbXB1dGVfZXhuIHJlZHVjZXIgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgICAgIGEpXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgRXhwZXJ0MS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEV4cGVydDEuRGVwZW5kZW5jeS5jcmVhdGUgY2hpbGRyZW4uKGkpIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIEJhbGFuY2VkX3JlZHVjZXIuc2V0X2V4biByZWR1Y2VyIGkgKGYgYSk7XG4gICAgICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyKSlcbiAgICBkb25lO1xuICAgIFNvbWUgKEV4cGVydDEuTm9kZS53YXRjaCBub2RlKSlcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBtb3N0bHkgYSB3cmFwcGVyIGFyb3VuZCBbU3RhdGVdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluY3JlbWVudGFsX2ludGZcblxubW9kdWxlIHR5cGUgSW5jcmVtZW50YWxfY29uZmlnID0gQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZ1xuXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5cbmxldCBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCA9IDEyOFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBtb2R1bGUgQ3V0b2ZmID0gQ3V0b2ZmXG4gIG1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gU3RlcF9mdW5jdGlvblxuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICB2YWwgdCA6IHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGVfaW50ZXJuYWwgPSBjcmVhdGVcblxuICAgIGxldCBjcmVhdGUgPyhtYXhfaGVpZ2h0X2FsbG93ZWQgPSBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCkgKCkgOiAobW9kdWxlIFMpID1cbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCB0ID0gY3JlYXRlIChtb2R1bGUgQ29uZmlnLkRlZmF1bHQgKCkpIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgICAgIGVuZClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoc3RhdGUgOiBTdGF0ZS50KSAoKSA9IHN0YXRlLmN1cnJlbnRfc2NvcGVcbiAgICBsZXQgd2l0aGluIHN0YXRlIHQgfmYgPSBTdGF0ZS53aXRoaW5fc2NvcGUgc3RhdGUgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE5vZGVcblxuICBsZXQgc3RhdGUgdCA9IHQuc3RhdGVcbiAgbGV0IHBhY2sgdCA9IFBhY2tlZC5UIHRcbiAgbGV0IGNvbnN0IHN0YXRlIGEgPSBTdGF0ZS5jb25zdCBzdGF0ZSBhXG4gIGxldCByZXR1cm4gPSBjb25zdFxuICBsZXQgb2JzZXJ2ZSA9IFN0YXRlLmNyZWF0ZV9vYnNlcnZlclxuICBsZXQgbWFwID0gU3RhdGUubWFwXG4gIGxldCBiaW5kID0gU3RhdGUuYmluZFxuXG4gIG1vZHVsZSBOX2FyeV9tYXBfYW5kX2JpbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbWFwMiA9IFN0YXRlLm1hcDJcbiAgICBsZXQgbWFwMyA9IFN0YXRlLm1hcDNcbiAgICBsZXQgbWFwNCA9IFN0YXRlLm1hcDRcbiAgICBsZXQgbWFwNSA9IFN0YXRlLm1hcDVcbiAgICBsZXQgbWFwNiA9IFN0YXRlLm1hcDZcbiAgICBsZXQgbWFwNyA9IFN0YXRlLm1hcDdcbiAgICBsZXQgbWFwOCA9IFN0YXRlLm1hcDhcbiAgICBsZXQgbWFwOSA9IFN0YXRlLm1hcDlcbiAgICBsZXQgbWFwMTAgPSBTdGF0ZS5tYXAxMFxuICAgIGxldCBtYXAxMSA9IFN0YXRlLm1hcDExXG4gICAgbGV0IG1hcDEyID0gU3RhdGUubWFwMTJcbiAgICBsZXQgbWFwMTMgPSBTdGF0ZS5tYXAxM1xuICAgIGxldCBtYXAxNCA9IFN0YXRlLm1hcDE0XG4gICAgbGV0IG1hcDE1ID0gU3RhdGUubWFwMTVcbiAgICBsZXQgYmluZDIgPSBTdGF0ZS5iaW5kMlxuICAgIGxldCBiaW5kMyA9IFN0YXRlLmJpbmQzXG4gICAgbGV0IGJpbmQ0ID0gU3RhdGUuYmluZDRcbiAgZW5kXG5cbiAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICBtb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIEluZml4XG5cbiAgbGV0IGpvaW4gPSBTdGF0ZS5qb2luXG4gIGxldCBpZl8gPSBTdGF0ZS5pZl9cbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcbiAgbGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSBTdGF0ZS5kZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS5tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgc3RhdGUgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5cbiAgbGV0IGFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmYgPSBTdGF0ZS5hcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgc3RhdGUgdHMgfmYgfnJlZHVjZSA9IFJlZHVjZV9iYWxhbmNlZC5jcmVhdGUgc3RhdGUgdHMgfmYgfnJlZHVjZVxuXG4gIG1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBTdGF0ZS5Vbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGVcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS51bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUub3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBhbGwgPSBTdGF0ZS5hbGxcbiAgbGV0IGV4aXN0cyA9IFN0YXRlLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IFN0YXRlLmZvcl9hbGxcbiAgbGV0IGJvdGggPSBTdGF0ZS5ib3RoXG4gIGxldCBzdW0gPSBTdGF0ZS5zdW1cbiAgbGV0IG9wdF9zdW0gPSBTdGF0ZS5vcHRfc3VtXG4gIGxldCBzdW1faW50ID0gU3RhdGUuc3VtX2ludFxuICBsZXQgc3VtX2Zsb2F0ID0gU3RhdGUuc3VtX2Zsb2F0XG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID0gU3RhdGUuY3JlYXRlX3ZhclxuICAgIGxldCBzZXQgPSBTdGF0ZS5zZXRfdmFyXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IHdhdGNoIHQgPSB0LndhdGNoXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdC52YWx1ZSB8PiBbJXNleHBfb2Y6IGFdXG4gICAgbGV0IHJlcGxhY2UgdCB+ZiA9IHNldCB0IChmIChsYXRlc3RfdmFsdWUgdCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICAgIG1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgSW5pdGlhbGl6ZWQgb2YgJ2FcbiAgICAgICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICAgICAgfCBJbnZhbGlkYXRlZFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBvbl91cGRhdGVfZXhuIHQgfihmIDogXyBVcGRhdGUudCAtPiB1bml0KSA9XG4gICAgICBTdGF0ZS5vYnNlcnZlcl9vbl91cGRhdGVfZXhuIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTmVjZXNzYXJ5IGEgLT4gZiAoSW5pdGlhbGl6ZWQgYSlcbiAgICAgICAgfCBDaGFuZ2VkIChhMSwgYTIpIC0+IGYgKENoYW5nZWQgKGExLCBhMikpXG4gICAgICAgIHwgSW52YWxpZGF0ZWQgLT4gZiBJbnZhbGlkYXRlZFxuICAgICAgICB8IFVubmVjZXNzYXJ5IC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIkluY3JlbWVudGFsIGJ1ZyAtLSBPYnNlcnZlci5vbl91cGRhdGVfZXhuIGdvdCB1bmV4cGVjdGVkIHVwZGF0ZSBcXFxuICAgICAgICAgICAgIFVubmVjZXNzYXJ5XCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFslc2V4cF9vZjogXyB0XSlcbiAgICA7O1xuXG4gICAgbGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgdCA9IFN0YXRlLmRpc2FsbG93X2Z1dHVyZV91c2UgIXRcbiAgICBsZXQgdmFsdWUgPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZVxuICAgIGxldCB2YWx1ZV9leG4gPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZV9leG5cblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hICh0IDogXyB0KSA9XG4gICAgICBtYXRjaCAhdC5zdGF0ZSB3aXRoXG4gICAgICB8IENyZWF0ZWQgLT4gWyVtZXNzYWdlIFwiPHVuc3RhYmlsaXplZD5cIl1cbiAgICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IFslbWVzc2FnZSBcIjxkaXNhbGxvd2VkPlwiXVxuICAgICAgfCBJbl91c2UgLT5cbiAgICAgICAgbGV0IHVvcHQgPSAhdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgICAgIHRoZW4gWyVtZXNzYWdlIFwiPGludmFsaWQ+XCJdXG4gICAgICAgIGVsc2UgWyVzZXhwIChVb3B0LnVuc2FmZV92YWx1ZSB1b3B0IDogYSldXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEJlZm9yZV9vcl9hZnRlciA9IEJlZm9yZV9vcl9hZnRlclxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGUuQ2xvY2tcblxuICAgIGxldCBzdGF0ZSA9IGluY3Jfc3RhdGVcblxuICAgIGxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAgICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQgaW5cbiAgICAgIGxldCBsZXZlbF9iaXRzID0gWyAxNDsgMTM7IDUgXSBpblxuICAgICAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvblxuICAgICAgICB+bGV2ZWxfYml0czpcbiAgICAgICAgICAoVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzIH5leHRlbmRfdG9fbWF4X251bV9iaXRzOnRydWUpXG4gICAgICAgICgpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgc3RhdGUgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnKSB+c3RhcnQgKCkgPVxuICAgICAgKCogTWFrZSBzdXJlIFtzdGFydF0gaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gIE90aGVyd2lzZSwgaWYgeW91XG4gICAgICAgICBmZWVkIFtDbG9jay5ub3cgKCldIHRvIGEgdGltZSBmdW5jdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgZG93biB0byBhIHRpbWUgaW5cbiAgICAgICAgIHRoZSBwYXN0LCBjYXVzaW5nIGVycm9ycy4gKilcbiAgICAgIGxldCBzdGFydCA9XG4gICAgICAgIFRpbWVfbnMub2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG4gICAgICAgICAgKFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHN0YXJ0KVxuICAgICAgaW5cbiAgICAgIFN0YXRlLmNyZWF0ZV9jbG9jayBzdGF0ZSB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnRcbiAgICA7O1xuXG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LnRpbWluZ193aGVlbFxuICAgIGxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoID0gU3RhdGUudGltaW5nX3doZWVsX2xlbmd0aFxuICAgIGxldCBub3cgPSBTdGF0ZS5ub3dcbiAgICBsZXQgd2F0Y2hfbm93IHQgPSB0Lm5vdy53YXRjaFxuICAgIGxldCBhdCA9IFN0YXRlLmF0XG4gICAgbGV0IGFmdGVyID0gU3RhdGUuYWZ0ZXJcbiAgICBsZXQgYXRfaW50ZXJ2YWxzID0gU3RhdGUuYXRfaW50ZXJ2YWxzXG4gICAgbGV0IGFkdmFuY2VfY2xvY2sgPSBTdGF0ZS5hZHZhbmNlX2Nsb2NrXG4gICAgbGV0IGFkdmFuY2VfY2xvY2tfYnkgdCBzcGFuID0gYWR2YW5jZV9jbG9jayB0IH50b186KFRpbWVfbnMuYWRkIChub3cgdCkgc3BhbilcbiAgICBsZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiA9IFN0YXRlLmluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxuICAgIGxldCBzdGVwX2Z1bmN0aW9uIHQgfmluaXQgc3RlcHMgPVxuICAgICAgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuICAgICAgICB0XG4gICAgICAgIChjb25zdCAoaW5jcl9zdGF0ZSB0KSAoU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuIH5pbml0IH5zdGVwcykpXG4gICAgOztcblxuICAgIGxldCBzbmFwc2hvdCA9IFN0YXRlLnNuYXBzaG90XG4gIGVuZFxuXG4gIGxldCBmcmVlemUgPyh3aGVuXyA9IGZ1biBfIC0+IHRydWUpIHQgPSBTdGF0ZS5mcmVlemUgdCB+b25seV9mcmVlemVfd2hlbjp3aGVuX1xuICBsZXQgZGVwZW5kX29uIHQgfmRlcGVuZF9vbiA9IFN0YXRlLmRlcGVuZF9vbiB0IH5kZXBlbmRfb25cbiAgbGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSA9IFN0YXRlLm5lY2Vzc2FyeV9pZl9hbGl2ZVxuXG4gIG1vZHVsZSBVcGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG4gIGxldCBvbl91cGRhdGUgPSBTdGF0ZS5ub2RlX29uX3VwZGF0ZVxuICBsZXQgc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuc3RhYmlsaXplIHN0YXRlXG4gIGxldCBhbV9zdGFiaWxpemluZyBzdGF0ZSA9IFN0YXRlLmFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gIGxldCBzYXZlX2RvdCA9IFN0YXRlLnNhdmVfZG90XG4gIGxldCBzYXZlX2RvdF90b19maWxlID0gU3RhdGUuc2F2ZV9kb3RfdG9fZmlsZVxuXG4gIG1vZHVsZSBOb2RlX3ZhbHVlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgSW52YWxpZFxuICAgICAgfCBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgICB8IFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBub2RlX3ZhbHVlIHQgOiBfIE5vZGVfdmFsdWUudCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gSW52YWxpZFxuICAgIGVsc2UgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIE5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gICAgZWxzZSBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gIDs7XG5cbiAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8gc2hvdyBqdXN0IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgIHJlcHJlc2VudGF0aW9uLiAgV2Ugb25seSBzaG93IHRoZSB2YWx1ZSBpZiBpdCBpcyBuZWNlc3NhcnkgYW5kIHZhbGlkLiAqKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBcIjxpbnZhbGlkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICB0aGVuIFwiPHVubmVjZXNzYXJ5PlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgVW9wdC5pc19ub25lIHQudmFsdWVfb3B0XG4gICAgdGhlbiBcIjx1bmNvbXB1dGVkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgdW5zYWZlX3ZhbHVlIHQgfD4gWyVzZXhwX29mOiBhXVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBFeHBlcnQxXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCB0MSB0MiA9IG1hcDIgdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG5cbiAgICAgIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgICAgICBsZXQgd2F0Y2ggPSBWYXIud2F0Y2hcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS53ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jb25maWcgKEluY3JlbWVudGFsX2NvbmZpZyA6IEluY3JlbWVudGFsX2NvbmZpZykgKCkgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgKG1vZHVsZSBJbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQ6MTI4XG4gIGVuZFxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2xvY2tcblxuICAgIGxldCBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ICgpID1cbiAgICAgIGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyBTdGF0ZS50IH5zdGFydCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVydFxuXG4gICAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICBsZXQgY3JlYXRlID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID0gY3JlYXRlIFN0YXRlLnQgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplICgpID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIFN0YXRlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoKSA9IGN1cnJlbnQgU3RhdGUudCAoKVxuICAgIGxldCB3aXRoaW4gdCB+ZiA9IHdpdGhpbiBTdGF0ZS50IHQgfmZcbiAgZW5kXG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID91c2VfY3VycmVudF9zY29wZSB2YWx1ZSA9IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgU3RhdGUudCB2YWx1ZVxuICBlbmRcblxuICBsZXQgY29uc3QgYSA9IGNvbnN0IFN0YXRlLnQgYVxuICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG4gIGxldCBhbGwgdHMgPSBhbGwgU3RhdGUudCB0c1xuICBsZXQgZXhpc3RzIHRzID0gZXhpc3RzIFN0YXRlLnQgdHNcbiAgbGV0IGZvcl9hbGwgdHMgPSBmb3JfYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcblxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIGxldCBhcnJheV9mb2xkIHRzIH5pbml0IH5mID0gYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgdHMgfmYgfnJlZHVjZSA9IHJlZHVjZV9iYWxhbmNlZCBTdGF0ZS50IHRzIH5mIH5yZWR1Y2VcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfnVwZGF0ZSA9XG4gICAgdW5vcmRlcmVkX2FycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZiB+dXBkYXRlID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDs7XG5cbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlXG4gIDs7XG5cbiAgbGV0IHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBzdW1faW50IHRzID0gc3VtX2ludCBTdGF0ZS50IHRzXG4gIGxldCBzdW1fZmxvYXQgdHMgPSBzdW1fZmxvYXQgU3RhdGUudCB0c1xuICBsZXQgc3RhYmlsaXplICgpID0gc3RhYmlsaXplIFN0YXRlLnRcbiAgbGV0IGFtX3N0YWJpbGl6aW5nICgpID0gYW1fc3RhYmlsaXppbmcgU3RhdGUudFxuICBsZXQgc2F2ZV9kb3Qgb3V0ID0gc2F2ZV9kb3QgU3RhdGUudCBvdXRcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSA9IE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOnNhdmVfZG90XG4gIGxldCBsYXp5X2Zyb21fZnVuIGYgPSBsYXp5X2Zyb21fZnVuIFN0YXRlLnQgZlxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKCkgPSBNYWtlX3dpdGhfY29uZmlnIChDb25maWcuRGVmYXVsdCAoKSkgKClcbmluY2x1ZGUgR2VuZXJpY1xuXG5tb2R1bGUgQWRkX3dpdG5lc3MwIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICd3IHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAndyB0ID0gTS50XG5cbiAgbGV0IGludmFyaWFudCBfIHQgPSBNLmludmFyaWFudCB0XG4gIGxldCBzZXhwX29mX3QgXyB0ID0gTS5zZXhwX29mX3QgdFxuZW5kXG5cbm1vZHVsZSBBZGRfd2l0bmVzczEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBNLmludmFyaWFudCBpbnZhcmlhbnRfYSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IE0uc2V4cF9vZl90IHNleHBfb2ZfYSB0XG5lbmRcblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIGluY2x1ZGUgQ2xvY2tcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKENsb2NrKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlcnRcblxuICBtb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgaW5jbHVkZSBOb2RlXG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBOb2RlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChOb2RlKVxuZW5kXG5cbnR5cGUgKCdhLCAndykgdCA9ICgnYSwgJ3cpIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxudHlwZSAoJ2EsICd3KSBpbmNyZW1lbnRhbCA9ICgnYSwgJ3cpIHRcblxubGV0IGludmFyaWFudCA9IE5vZGUuaW52YXJpYW50XG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChPYnNlcnZlcilcbmVuZFxuXG5tb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTY29wZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU2NvcGUpXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhdGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFN0YXRlKVxuZW5kXG5cbm1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKFZhcilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBpbmNyZW1lbnRhbFxuICAgIHdpdGggdHlwZSBCZWZvcmVfb3JfYWZ0ZXIudCA9IEJlZm9yZV9vcl9hZnRlci50XG4gICAgd2l0aCB0eXBlIENsb2NrLnQgPSBzdGF0ZV93aXRuZXNzIENsb2NrLnRcbiAgICB3aXRoIHR5cGUgJ2EgQ3V0b2ZmLnQgPSAnYSBDdXRvZmYudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuRGVwZW5kZW5jeS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuRGVwZW5kZW5jeS50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5Ob2RlLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5Ob2RlLnRcbiAgICB3aXRoIHR5cGUgRXhwZXJ0LlN0ZXBfcmVzdWx0LnQgPSBFeHBlcnQuU3RlcF9yZXN1bHQudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBPYnNlcnZlci50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLlVwZGF0ZS50ID0gJ2EgT2JzZXJ2ZXIuVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgUGFja2VkLnQgPSBQYWNrZWQudFxuICAgIHdpdGggdHlwZSBTY29wZS50ID0gc3RhdGVfd2l0bmVzcyBTY29wZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLnQgPSBzdGF0ZV93aXRuZXNzIFN0YXRlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUuU3RhdHMudCA9IFN0YXRlLlN0YXRzLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnQgPVxuICAgICAgICAgICAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBVcGRhdGUudCA9ICdhIFVwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFZhci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBWYXIudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBkZWJ1ZyA9IGRlYnVnXG5lbmRcbiIsIlxub3BlbiBCYXNlXG5cbm1vZHVsZSBDb21tdXRhdGl2ZV9ncm91cCA9IHN0cnVjdFxuICAoKiogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gICAgICArIGFzc29jaWF0aXZpdHk6IFsoYSArIGIpICsgYyA9IGEgKyAoYiArIGMpXVxuICAgICAgKyBpZGVudGl0eTogW3plcm8gKyBhID0gYSArIHplcm8gPSBhXVxuICAgICAgKyBpbnZlcnNlczogZ2l2ZW4gYW55IFthXSB0aGVyZSBleGlzdHMgYSAodW5pcXVlKSBlbHQgW2JdIHN1Y2ggdGhhdCBbYSArIGIgPSBiICsgYSA9XG4gICAgICB6ZXJvXVxuICAgICAgKyBjb21tdXRhdGl2aXR5OiBbYSArIGIgPSBiICsgYV1cbiAgKilcblxuICBtb2R1bGUgdHlwZSBXaXRob3V0X3NleHAgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoKykgIDogdCAtPiB0IC0+IHRcbiAgICB2YWwgKC0pICA6IHQgLT4gdCAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBpbmNsdWRlIFdpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZWN0b3Jfc3BhY2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIGluY2x1ZGUgQ29tbXV0YXRpdmVfZ3JvdXAuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgSW5jcl9tYXBfaW50ZlxuXG4oKiogVGhpcyB0eXBlIGxldHMgdXMgY2FwdHVyZSB0aGUga2luZCBvZiBtYXAgZnVuY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBzbyB3ZSBjYW4gd2l0aFxuICAgIG9uZSBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtIG1hcCBhbmQgZmlsdGVyLW1hcCBvcGVyYXRpb25zLlxuXG4gICAgSGVyZSwgWydpbnB1dF9kYXRhXSBpcyB0aGUgdHlwZSBvZiBkYXRhIGluIHRoZSBpbnB1dCBtYXAsIFsnb3V0cHV0X2RhdGFdIGlzIHRoZSB0eXBlXG4gICAgb2YgZGF0YSBpbiB0aGUgb3V0cHV0IG1hcCwgYW5kIFsnZl9vdXRwdXRdIGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgW35mXSBmdW5jdGlvblxuICAgIHBhc3NlZCB0byB0aGUgbWFwcGluZyBmdW5jdGlvbi4gKilcbm1vZHVsZSBNYXBfdHlwZSA9IHN0cnVjdFxuICB0eXBlICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnZl9vdXRwdXQpIHQgPVxuICAgIHwgTWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSkgdFxuICAgIHwgRmlsdGVyX21hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEgb3B0aW9uKSB0XG5cbiAgKCogVGhlIGV4dHJhIHR5cGUgdmFyaWFibGUgJ2EgaXMgdG8gYWxsb3cgaW4gZnV0dXJlOlxuICAgICB8IEZpbHRlciA6ICgnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgYm9vbCkgdCAqKVxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIGxldCB3aXRoX29sZCBpIH5mID1cbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgbGV0JW1hcCBhID0gaSBpblxuICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYSBpblxuICAgIG9sZCA6PSBTb21lIChhLCBiKTtcbiAgICBiXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZCBtYXAgfmY6KGZ1biB+b2xkIG5ld19pbiAtPlxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTWFwLmZvbGQgfmluaXQgfmY6YWRkIG5ld19pblxuICAgICAgICAgfCBTb21lIGluaXRpYWwgLT4gaW5pdGlhbCB+aW5pdCBuZXdfaW4pXG4gICAgICB8IFNvbWUgKG9sZF9pbiwgb2xkX291dCkgLT5cbiAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgdGhlbiBpbml0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgfmluaXQ6b2xkX291dFxuICAgICAgICAgICAgb2xkX2luXG4gICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2NcbiAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBhZGQgfmtleSB+ZGF0YTpuZXdfIGFjY1xuICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+IHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBpbmNyX21hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBtYXRjaCB1cGRhdGUgd2l0aFxuICAgICAgfCBTb21lIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkXG4gICAgICAgICAgICB+b3V0ZXJfa2V5XG4gICAgICAgICAgICB+aW5uZXJfa2V5XG4gICAgICAgICAgICB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICAgICAgKHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIGluY3JfbWFwXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5Om91dGVyX2tleSB+b2xkX2RhdGE6b2xkX2lubmVyX21hcCB+bmV3X2RhdGE6bmV3X2lubmVyX21hcCBhY2MgLT5cbiAgICAgICAgKE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIG9sZF9pbm5lcl9tYXAgbmV3X2lubmVyX21hcCB+ZGF0YV9lcXVhbClcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoaW5uZXJfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IGRhdGFfcmVtb3ZlZCAtPiByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfcmVtb3ZlZCBhY2NcbiAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfYWRkZWQgLT4gYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX2FkZGVkIGFjY1xuICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkX2RhdGEsIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICB1cGRhdGUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgcmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICA7O1xuXG4gIGxldCB3aXRoX2NvbXBhcmF0b3InIGdldF9jb21wYXJhdG9yIHggZiA9XG4gICAgSW5jcmVtZW50YWwuYmluZCAoSW5jcmVtZW50YWwuZnJlZXplIChJbmNyZW1lbnRhbC5tYXAgeCB+ZjpnZXRfY29tcGFyYXRvcikpIH5mXG4gIDs7XG5cbiAgKCoqIENhcHR1cmVzIHRoZSBjb21wYXJhdG9yICh3aGljaCBjYW4ndCBjaGFuZ2UgYW55d2F5LCBzaW5jZSB0aGUgdHlwZSBkZXRlcm1pbmVzIHRoZVxuICAgICAgY29tcGFyYXRvcikgYnkgZnJlZXppbmcgdGhlIGNvcnJlc3BvbmRpbmcgbWFwLiAgTm90ZSB0aGF0IGJ5IGZpcnN0IHVzaW5nIEluY3JlbWVudGFsLm1hcCB0b1xuICAgICAgZ2V0IHRoZSBjb21wYXJhdG9yIG91dCBvZiB0aGUgbWFwLCB3ZSBhbGxvdyB0aGUgaW5pdGlhbCBtYXAgaXRzZWxmIHRvIGJlIGdhcmJhZ2VcbiAgICAgIGNvbGxlY3RlZCAqKVxuICBsZXQgd2l0aF9jb21wYXJhdG9yIG1hcCBmID0gd2l0aF9jb21wYXJhdG9yJyBNYXAuY29tcGFyYXRvciBtYXAgZlxuXG4gIGxldCBvZl9zZXQgc2V0ID1cbiAgICB3aXRoX2NvbXBhcmF0b3InIFNldC5jb21wYXJhdG9yIHNldCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBvbGRfaW5wdXQgPSByZWYgKFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgbGV0IG9sZF9vdXRwdXQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgSW5jcmVtZW50YWwubWFwIHNldCB+ZjooZnVuIG5ld19pbnB1dCAtPlxuICAgICAgICBsZXQgbmV3X291dHB1dCA9XG4gICAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgICAgKFNldC5zeW1tZXRyaWNfZGlmZiAhb2xkX2lucHV0IG5ld19pbnB1dClcbiAgICAgICAgICAgIH5pbml0OiFvbGRfb3V0cHV0XG4gICAgICAgICAgICB+ZjooZnVuIG91dHB1dCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICB8IEZpcnN0IGsgLT4gTWFwLnJlbW92ZSBvdXRwdXQga1xuICAgICAgICAgICAgICB8IFNlY29uZCBrIC0+IE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5OmsgfmRhdGE6KCkpXG4gICAgICAgIGluXG4gICAgICAgIG9sZF9pbnB1dCA6PSBuZXdfaW5wdXQ7XG4gICAgICAgIG9sZF9vdXRwdXQgOj0gbmV3X291dHB1dDtcbiAgICAgICAgbmV3X291dHB1dCkpXG4gIDs7XG5cbiAgbGV0IGdlbmVyaWNfbWFwaVxuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcCA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6aW5wdXRfZGF0YSAtPiBmX291dHB1dClcbiAgICA9XG4gICAgd2l0aF9vbGQgbWFwIH5mOihmdW4gfm9sZCBpbnB1dCAtPlxuICAgICAgbWF0Y2ggb2xkLCBNYXAubGVuZ3RoIGlucHV0IHdpdGhcbiAgICAgIHwgXywgMCB8IE5vbmUsIF8gLT5cbiAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gKE1hcC5tYXBpIGlucHV0IH5mIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudClcbiAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPiBNYXAuZmlsdGVyX21hcGkgaW5wdXQgfmYpXG4gICAgICB8IFNvbWUgKG9sZF9pbnB1dCwgb2xkX291dHB1dCksIF8gLT5cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICBvbGRfaW5wdXRcbiAgICAgICAgICBpbnB1dFxuICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgfmluaXQ6b2xkX291dHB1dFxuICAgICAgICAgIH5mOihmdW4gb3V0cHV0IChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IGBSaWdodCBuZXdfZGF0YSB8IGBVbmVxdWFsIChfLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlcyA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOnJlc1xuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgICAgICAgfCBTb21lIG91dHB1dF9kYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6b3V0cHV0X2RhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID0gZ2VuZXJpY19tYXBpIE1hcCA/ZGF0YV9lcXVhbCBtYXAgfmZcbiAgbGV0IGZpbHRlcl9tYXBpID9kYXRhX2VxdWFsIG1hcCB+ZiA9IGdlbmVyaWNfbWFwaSBGaWx0ZXJfbWFwID9kYXRhX2VxdWFsIG1hcCB+ZlxuICBsZXQgbWFwID9kYXRhX2VxdWFsIG1hcCB+ZiA9IG1hcGkgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxuICBsZXQgZmlsdGVyX21hcCA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHdpdGhfb2xkMiBpMSBpMiB+ZiA9XG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgSW5jcmVtZW50YWwubWFwMiBpMSBpMiB+ZjooZnVuIGExIGEyIC0+XG4gICAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGExIGEyIGluXG4gICAgICBvbGQgOj0gU29tZSAoYTEsIGEyLCBiKTtcbiAgICAgIGIpXG4gIDs7XG5cbiAgbGV0IG1hcGlfY291bnRcbiAgICAgICAgKHR5cGUgYSBjbXApXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGlucHV0XG4gICAgICAgIH4oY29tcGFyYXRvciA6XG4gICAgICAgICAgICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gKHZhbCBjb21wYXJhdG9yKSBpblxuICAgIGxldCBhZGQgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLnVwZGF0ZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIG4gLT4gbiArIDEpXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC5jaGFuZ2UgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAxIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG4gLT4gU29tZSAobiAtIDEpKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiBNLmNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIGFjY1xuICAgICAgICBlbHNlIGFjYyB8PiByZW1vdmUgcHJldl9rZXkgfD4gYWRkIG5ld19rZXkpXG4gIDs7XG5cbiAgbGV0IG1hcF9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pIC0+IFNvbWUgbWluXG4gIDs7XG5cbiAgbGV0IG1heF9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtYXgsIF8pIC0+IFNvbWUgbWF4XG4gIDs7XG5cbiAgbGV0IGJvdW5kc19oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAsIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXyksIFNvbWUgKG1heCwgXykgLT4gU29tZSAobWluLCBtYXgpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBtYXBpX21pbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIH5mOm1pbl9oZWxwZXIgKG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6bWF4X2hlbHBlciAobWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpib3VuZHNfaGVscGVyIChtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX21uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21pbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1hcF9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX3ZhbHVlID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBpX21uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1heF92YWx1ZSA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXBfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHZhbHVlX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtZXJnZVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGxlZnRfbWFwXG4gICAgICAgIHJpZ2h0X21hcFxuICAgICAgICB+ZlxuICAgID1cbiAgICB3aXRoX29sZDIgbGVmdF9tYXAgcmlnaHRfbWFwIH5mOihmdW4gfm9sZCBuZXdfbGVmdF9tYXAgbmV3X3JpZ2h0X21hcCAtPlxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICAgIGxldCBvbGRfbGVmdF9tYXAsIG9sZF9yaWdodF9tYXAsIG9sZF9vdXRwdXQgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICAgIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgaW5cbiAgICAgIGxldCBsZWZ0X2RpZmYgPVxuICAgICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX2xlZnRfbWFwIG5ld19sZWZ0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX2xlZnRcbiAgICAgIGluXG4gICAgICBsZXQgcmlnaHRfZGlmZiA9XG4gICAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfcmlnaHRfbWFwIG5ld19yaWdodF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgaW5cbiAgICAgICgqIFdlIG1lcmdlIHRoZSB0d28gc2lkZXMgb2YgdGhlIGRpZmZzIHRvZ2V0aGVyIHNvIHdlIGNhbiBtYWtlIHN1cmUgdG8gaGFuZGxlIGVhY2hcbiAgICAgICAgIGtleSBleGFjdGx5IG9uY2UuIFRoaXMgcmVsaWVzIG9uIHN5bW1ldHJpYyBkaWZmIGdpdmluZyBzb3J0ZWQgb3V0cHV0LiAqKVxuICAgICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAgIGxlZnRfZGlmZlxuICAgICAgICByaWdodF9kaWZmXG4gICAgICAgIH5jb21wYXJlOihmdW4gKGxlZnRfa2V5LCBfKSAocmlnaHRfa2V5LCBfKSAtPlxuICAgICAgICAgIGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkpXG4gICAgICB8PiBTZXF1ZW5jZS5mb2xkIH5pbml0Om9sZF9vdXRwdXQgfmY6KGZ1biBvdXRwdXQgZGlmZl9lbGVtZW50IC0+XG4gICAgICAgIGxldCBrZXkgPVxuICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgfCBMZWZ0IChrZXksIF8pIHwgUmlnaHQgKGtleSwgXykgLT4ga2V5XG4gICAgICAgICAgfCBCb3RoICgobGVmdF9rZXksIF8pLCAocmlnaHRfa2V5LCBfKSkgLT5cbiAgICAgICAgICAgIGFzc2VydCAoY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSA9IDApO1xuICAgICAgICAgICAgbGVmdF9rZXlcbiAgICAgICAgaW5cbiAgICAgICAgKCogVGhlc2UgdmFsdWVzIHJlcHJlc2VudCB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgZm9yIHRoZSBnaXZlbiBrZXkgaW4gdGhlIG5ld1xuICAgICAgICAgICBpbnB1dCBpbiB0aGUgbGVmdCBhbmQgcmlnaHQgbWFwLiAqKVxuICAgICAgICBsZXQgbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgPVxuICAgICAgICAgIGxldCBuZXdfZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgbmV3X2RhdGEgbGVmdF9kaWZmLCBuZXdfZGF0YSByaWdodF9kaWZmXG4gICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+IG5ld19kYXRhIGxlZnRfZGlmZiwgTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXlcbiAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPiBNYXAuZmluZCBuZXdfbGVmdF9tYXAga2V5LCBuZXdfZGF0YSByaWdodF9kaWZmXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvdXRwdXRfZGF0YV9vcHQgPVxuICAgICAgICAgIG1hdGNoIGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSB4LCBOb25lIC0+IGYgfmtleSAoYExlZnQgeClcbiAgICAgICAgICB8IE5vbmUsIFNvbWUgeSAtPiBmIH5rZXkgKGBSaWdodCB5KVxuICAgICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZiB+a2V5IChgQm90aCAoeCwgeSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIG91dHB1dF9kYXRhX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YSkpXG4gIDs7XG5cbiAgbGV0IGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChsaHMgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOihpbnB1dF9kYXRhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKGZfb3V0cHV0LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbGhzIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBhY2MgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFhY2MpIGluXG4gICAgbGV0IChvbl9pbm5lcl9jaGFuZ2UgOiBrZXk6J2tleSAtPiBmX291dHB1dCAtPiB1bml0KSA9XG4gICAgICBtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IGZ1biB+a2V5IGRhdGEgLT4gYWNjIDo9IE1hcC5zZXQgIWFjYyB+a2V5IH5kYXRhXG4gICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgZnVuIH5rZXkgb3B0IC0+XG4gICAgICAgICAgbGV0IG9sZCA9ICFhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgICA6PSAobWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG9sZCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb2xkIH5rZXkgfmRhdGEpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxoc19jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGxocyB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLm1ha2Vfc3RhbGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IE1hcC5yZW1vdmUgIWFjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgbGV0IHVzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgKGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihvbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgTWFwLnNldCBub2RlcyB+a2V5IH5kYXRhOihub2RlLCB1c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuRmlsdGVyX21hcFxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJyBNYXBfdHlwZS5NYXAgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcCcgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCcgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1lcmdlJyA/Y3V0b2ZmID9kYXRhX2VxdWFsX2xlZnQgP2RhdGFfZXF1YWxfcmlnaHQgbWFwMSBtYXAyIH5mID1cbiAgICBtZXJnZSA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZjooZnVuIH5rZXk6XyBkaWZmIC0+IFNvbWUgZGlmZilcbiAgICB8PiBmaWx0ZXJfbWFwaScgP2N1dG9mZiB+ZjooZnVuIH5rZXkgfmRhdGE6ZGlmZiAtPiBmIH5rZXkgZGlmZilcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGRhdGFfZXF1YWwgOiB2IC0+IHYgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8obGVmdF9yZXN1bHRfZXF1YWwgOiB2MSAtPiB2MSAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhyaWdodF9yZXN1bHRfZXF1YWwgOiB2MiAtPiB2MiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTp2IC0+IHYxICogdjIpXG4gICAgOiAoKCdrZXksIHYxLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgKiAoKCdrZXksIHYyLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dCBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGlucHV0X2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICBtYXRjaCBNYXAuaXNfZW1wdHkgIXByZXZfbWFwLCBNYXAuaXNfZW1wdHkgbWFwIHdpdGhcbiAgICAgICAgICB8IHRydWUsIHRydWUgfCBmYWxzZSwgdHJ1ZSAtPiBlbXB0eV9tYXAsIGVtcHR5X21hcFxuICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICgqIE1hcHBpbmcgb24gYSBtYXAgaXMgd2F5IGZhc3RlciB0aGFuIHN5bW1ldHJpYyBkaWZmaW5nIGFuZCB0aGVuXG4gICAgICAgICAgICAgICBidWlsZGluZyB0aGUgbWFwcyB1cCBwaWVjZSBieSBwaWVjZSwgc28gd2UgZG8gdGhpcyB3aGVuZXZlciB3ZVxuICAgICAgICAgICAgICAgdHJhbnNpdGlvbiBmcm9tIFwiZW1wdHlcIiB0byBcInNvbWV0aGluZ1wiLCB3aGljaCB3aWxsIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAgICAgIGhhcHBlbiBvbiB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBsLCBfID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgbGV0IF8sIHIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgfmluaXQ6KCFsZWZ0X2FjYywgIXJpZ2h0X2FjYylcbiAgICAgICAgICAgICAgfmY6KGZ1biAobGVmdCwgcmlnaHQpIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAocHJldiwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBwcmV2X2EsIHByZXZfYiA9IGYgfmtleSB+ZGF0YTpwcmV2IGluXG4gICAgICAgICAgICAgICAgICBsZXQgbmV3X2EsIG5ld19iID0gZiB+a2V5IH5kYXRhOm5ld18gaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgbGVmdF9yZXN1bHRfZXF1YWwgcHJldl9hIG5ld19hXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gbGVmdFxuICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOm5ld19hXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgcmlnaHRfcmVzdWx0X2VxdWFsIHByZXZfYiBuZXdfYlxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOm5ld19iXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBsZWZ0IGtleSwgTWFwLnJlbW92ZSByaWdodCBrZXlcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBlbGVtZW50IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYiA9IGYgfmtleSB+ZGF0YTplbGVtZW50IGluXG4gICAgICAgICAgICAgICAgICBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTphLCBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6YilcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFsZWZ0X2FjYyBsZWZ0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIGxlZnRfcmVzdWx0O1xuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIXJpZ2h0X2FjYyByaWdodCkgdGhlbiBFLk5vZGUubWFrZV9zdGFsZSByaWdodF9yZXN1bHQ7XG4gICAgICAgIGxlZnRfYWNjIDo9IGxlZnQ7XG4gICAgICAgIHJpZ2h0X2FjYyA6PSByaWdodDtcbiAgICAgICAgcHJldl9tYXAgOj0gbWFwKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpID9kYXRhX2VxdWFsID9sZWZ0X3Jlc3VsdF9lcXVhbCA/cmlnaHRfcmVzdWx0X2VxdWFsIGlucHV0IH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIGlucHV0XG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQgdW56aXAgP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgPVxuICAgIGxldCBkYXRhX2VxdWFsID1cbiAgICAgIE9wdGlvbi5tYXAyIGxlZnRfcmVzdWx0X2VxdWFsIHJpZ2h0X3Jlc3VsdF9lcXVhbCB+ZjooZnVuIGwgciAtPlxuICAgICAgICBUdXBsZTIuZXF1YWwgfmVxMTpsIH5lcTI6cilcbiAgICBpblxuICAgIHVuemlwX21hcGlcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KHYsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAodjEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQgKiAodjIsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIHYxLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgKiAoKCdrZXksIHYyLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dCBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkgZGF0YSA9IGxlZnRfYWNjIDo9IE1hcC5zZXQgIWxlZnRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkgZGF0YSA9IHJpZ2h0X2FjYyA6PSBNYXAuc2V0ICFyaWdodF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByZWMgaW5wdXRfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9sZWZ0X2RlcCwgX3JpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBsZWZ0X2RlcCwgcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfZGVwO1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfZGVwO1xuICAgICAgICAgICAgICAgICAgIGxlZnRfYWNjIDo9IE1hcC5yZW1vdmUgIWxlZnRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICByaWdodF9hY2MgOj0gTWFwLnJlbW92ZSAhcmlnaHRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X2luY3IsIHJpZ2h0X2luY3IgPSBmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgbGVmdF9pbmNyXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICByaWdodF9pbmNyXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBNYXAuc2V0XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KG5vZGUsIGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAsIHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbGV0IHBhaXIgPVxuICAgICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgbWFwXG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIH5jb21wYXJhdG9yIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCBrZXlzIG1hcCA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBhZGQgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5hZGQgYWNjIGtleSBpblxuICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LnJlbW92ZSBhY2Mga2V5IGluXG4gICAgICBsZXQgZGF0YV9lcXVhbCBfIF8gPSB0cnVlIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXQ6KFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdDooZW1wdHksIGVtcHR5KVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YTpkYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5zZXQgZmlyc3QgfmtleSB+ZGF0YSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5XG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnNldCBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLmFkZF9leG4gZmlyc3QgfmtleSB+ZGF0YSwgc2Vjb25kXG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBmaXJzdCwgTWFwLmFkZF9leG4gc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhOl8gKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5yZW1vdmUgc2Vjb25kIGtleSkpXG4gIDs7XG5cbiAgbGV0IGZsYXR0ZW4gc3RhdGUgbWFwID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgcmVzdWx0ID0gcmVmIChNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKSkgaW5cbiAgICBsZXQgbm9kZSA9IEUuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0KSBpblxuICAgIE1hcC5pdGVyaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhOmluY3IgLT5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICBub2RlXG4gICAgICAgIChFLkRlcGVuZGVuY3kuY3JlYXRlIGluY3Igfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgcmVzdWx0IDo9IE1hcC5zZXQgIXJlc3VsdCB+a2V5IH5kYXRhOmEpKSk7XG4gICAgRS5Ob2RlLndhdGNoIG5vZGVcbiAgOztcblxuICBsZXQgam9pbl93aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgfmNvbXBhcmF0b3IgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIG1hcF9pbmNyIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHJlc3VsdF9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IG9sZF9tYXBfb2ZfaW5jcnMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGN1cnJlbnRfZGVwZW5kZW5jaWVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJlc3VsdF9tYXApIGluXG4gICAgbGV0IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZSA9XG4gICAgICBsZXQgbmV3X2RlcCA9XG4gICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgZGF0YV9ub2RlIH5vbl9jaGFuZ2U6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgcmVzdWx0X21hcCA6PSBNYXAuc2V0ICFyZXN1bHRfbWFwIH5rZXkgfmRhdGEpXG4gICAgICBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCBuZXdfZGVwO1xuICAgICAgTWFwLnNldCBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOm5ld19kZXBcbiAgICBpblxuICAgIGxldCByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5ID1cbiAgICAgIGxldCBkZXAgPSBNYXAuZmluZF9leG4gY3VycmVudF9kZXBlbmRlbmNpZXMga2V5IGluXG4gICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnJlbW92ZSAhcmVzdWx0X21hcCBrZXk7XG4gICAgICBNYXAucmVtb3ZlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleVxuICAgIGluXG4gICAgbGV0IGxoc19jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIG1hcF9pbmNyIH5mOihmdW4gbWFwX29mX2luY3JzIC0+XG4gICAgICAgIGxldCBuZXdfZGVwZW5kZW5jeV9tYXAgPVxuICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICB+ZGF0YV9lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAhb2xkX21hcF9vZl9pbmNyc1xuICAgICAgICAgICAgbWFwX29mX2luY3JzXG4gICAgICAgICAgICB+aW5pdDohY3VycmVudF9kZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIH5mOihmdW4gY3VycmVudF9kZXBlbmRlbmNpZXMgKGtleSwgZGlmZikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgXyAtPiByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5XG4gICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfbm9kZSAtPiBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGVcbiAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoXywgZGF0YV9ub2RlKSAtPlxuICAgICAgICAgICAgICAgIHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfD4gYWRkX3N1Ym5vZGUgfmtleSB+ZGF0YV9ub2RlKVxuICAgICAgICBpblxuICAgICAgICBjdXJyZW50X2RlcGVuZGVuY2llcyA6PSBuZXdfZGVwZW5kZW5jeV9tYXA7XG4gICAgICAgIG9sZF9tYXBfb2ZfaW5jcnMgOj0gbWFwX29mX2luY3JzKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBsaHNfY2hhbmdlKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGpvaW4gbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPiBqb2luX3dpdGhfY29tcGFyYXRvciBtYXAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIFNlcGFyYXRlX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgaW5wdXRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXMgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnQsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgb3V0cHV0X21hcCA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnRcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgY29tcGFyYXRvciA9XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgeyBpbnB1dF9tYXAgPSBlbXB0eTsgZXhwZXJ0X25vZGVzID0gZW1wdHk7IG91dHB1dF9tYXAgPSBlbXB0eSB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfbG9va3VwX25vZGUgc3RhdGUgdCBrZXkgPVxuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gTWFwLmZpbmRfZXhuIHQuaW5wdXRfbWFwIGtleSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2VwYXJhdGUgaW5wdXRfbWFwIH5kYXRhX2VxdWFsID1cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXAgaW5cbiAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXRfbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IHN0YXRlID0gU2VwYXJhdGVfc3RhdGUuY3JlYXRlIGNvbXBhcmF0b3IgaW5cbiAgICAgIGxldCBvdXRwdXRfbWFwX25vZGUgPVxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgPVxuICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSAoTGF6eS5mb3JjZV92YWwgaW5wdXRfbWFwX2NoYW5nZWQpXG4gICAgICAgIGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgZGVwZW5kZW5jeVxuICAgICAgaW5cbiAgICAgICgqIFdlIHdhbnQgdG8gbWFrZSBub2RlcyBkZXBlbmQgb24gW2lucHV0X21hcF9jaGFuZ2VkXSBzbyB0aGF0IFtpbnB1dF9tYXBfY2hhbmdlZF1cbiAgICAgICAgIGlzIGFsbG93ZWQgdG8gbWFrZSB0aGVtIHN0YWxlLCBidXQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGZvciBhbnlcbiAgICAgICAgIG90aGVyIHJlYXNvbi4gU28gd2UgbWFrZSBbaW5wdXRfbWFwX2NoYW5nZWRdIGEgdW5pdCBpbmNyZW1lbnRhbCAodGhhdCB0aGVyZWZvcmVcbiAgICAgICAgIG5ldmVyIGNoYW5nZXMpIGFuZCB0aGlzIHdheSBbb3V0cHV0X21hcF9ub2RlXSBhbmQgdGhlIGxvb2t1cCBub2RlcyB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlY29tcHV0ZWQgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IG1hZGUgc3RhbGUuXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBpbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgIGxldCBwcmV2X2lucHV0X21hcCA9IHN0YXRlLmlucHV0X21hcCBpblxuICAgICAgICAgICAgIGxldCBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXAgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgcHJldl9pbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIH5pbml0OihzdGF0ZS5leHBlcnRfbm9kZXMsIHN0YXRlLm91dHB1dF9tYXApXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gKGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgb2xkX25vZGUgPSBNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuaW52YWxpZGF0ZSBvbGRfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgTWFwLnJlbW92ZSBleHBlcnRfbm9kZXMga2V5LCBNYXAucmVtb3ZlIG91dHB1dF9tYXAga2V5XG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgX25ld192YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGVfbG9va3VwX25vZGUgaW5jcmVtZW50YWxfc3RhdGUgc3RhdGUga2V5XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgKCBNYXAuYWRkX2V4biBleHBlcnRfbm9kZXMgfmtleSB+ZGF0YTpub2RlXG4gICAgICAgICAgICAgICAgICAgICAsIE1hcC5hZGRfZXhuXG4gICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YTooSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSkgKVxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGRfdmFsdWUsIF9uZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlXG4gICAgICAgICAgICAgICAgICAgICAgIChNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBzdGF0ZS5pbnB1dF9tYXAgPC0gaW5wdXRfbWFwO1xuICAgICAgICAgICAgIHN0YXRlLmV4cGVydF9ub2RlcyA8LSBleHBlcnRfbm9kZXM7XG4gICAgICAgICAgICAgc3RhdGUub3V0cHV0X21hcCA8LSBvdXRwdXRfbWFwKSlcbiAgICAgIGluXG4gICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG91dHB1dF9tYXBfbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBvdXRwdXRfbWFwX25vZGUpXG4gIDs7XG5cbiAgKCogSnVzdCBmb3IgZGVyaXZpbmcgc3RydWN0dXJhbCBlcXVhbGl0eS4gKilcbiAgdHlwZSAnYSBtYXliZV9ib3VuZF9zdHJ1Y3R1cmFsbHkgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgICB8IEluY2wgb2YgJ2FcbiAgICB8IEV4Y2wgb2YgJ2FcbiAgICB8IFVuYm91bmRlZFxuICBbQEBkZXJpdmluZyBlcXVhbF1cblxuICBsZXQgc3VicmFuZ2VcbiAgICAgICAgKHR5cGUgayB2IGNtcCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwX2luY3IgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIHJhbmdlXG4gICAgPVxuICAgIHdpdGhfb2xkMiBtYXBfaW5jciByYW5nZSB+ZjooZnVuIH5vbGQgbWFwIHJhbmdlIC0+XG4gICAgICBsZXQgY29tcGFyZSA9IChNYXAuY29tcGFyYXRvciBtYXApLmNvbXBhcmUgaW5cbiAgICAgIGxldCBlcXVhbCBsIHIgPSBjb21wYXJlIGwgciA9IDAgaW5cbiAgICAgIGxldCAoID4gKSBhIGIgPSBjb21wYXJlIGEgYiA+IDBcbiAgICAgIGFuZCAoID49ICkgYSBiID0gY29tcGFyZSBhIGIgPj0gMCBpblxuICAgICAgbGV0IG1heWJlX2JvdW5kX2VxdWFsIGEgYiA6IGJvb2wgPSBlcXVhbF9tYXliZV9ib3VuZF9zdHJ1Y3R1cmFsbHkgZXF1YWwgYSBiIGluXG4gICAgICBsZXQgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4IDogYm9vbCA9XG4gICAgICAgIG1hdGNoIG1pbiwgbWF4IHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQsIChVbmJvdW5kZWQgfCBFeGNsIF8gfCBJbmNsIF8pIHwgKEV4Y2wgXyB8IEluY2wgXyksIFVuYm91bmRlZCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIHwgSW5jbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+IG1heFxuICAgICAgICB8IEV4Y2wgbWluLCBFeGNsIG1heCB8IEluY2wgbWluLCBFeGNsIG1heCB8IEV4Y2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPj0gbWF4XG4gICAgICBpblxuICAgICAgbGV0IHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXkgOiBib29sID1cbiAgICAgICAgTWF5YmVfYm91bmQuaXNfbG93ZXJfYm91bmQgbWluIH5vZl86a2V5IH5jb21wYXJlXG4gICAgICAgICYmIE1heWJlX2JvdW5kLmlzX3VwcGVyX2JvdW5kIG1heCB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBFbXB0eSBuZXcgcmFuZ2UgbWVhbnMgZW1wdHkgbWFwICopXG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICB8IFNvbWUgKChtaW4sIG1heCkgYXMgcmFuZ2UpIC0+XG4gICAgICAgIGxldCBmcm9tX3NjcmF0Y2ggKCkgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOm1heCBpblxuICAgICAgICAobWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUsIF8pIC0+XG4gICAgICAgICAgICgqIG5vIG9sZCByYW5nZSAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAoXywgU29tZSAob2xkX21pbiwgb2xkX21heCksIF8pXG4gICAgICAgICAgIHdoZW4gcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXggLT5cbiAgICAgICAgICAgKCogZW1wdHkgb2xkIHJhbmdlIG9yIG9sZCByYW5nZSBkaXNqb2ludCB3aXRoIG5ldyAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAob2xkX21hcCwgU29tZSAoKG9sZF9taW4sIG9sZF9tYXgpIGFzIG9sZF9yYW5nZSksIG9sZF9yZXMpIC0+XG4gICAgICAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICAgICAgICgqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGtleSBpcyBpbiBib3RoIG5ldyBhbmQgb2xkIHJhbmdlcyAqKVxuICAgICAgICAgICAgIGxldCBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5ID1cbiAgICAgICAgICAgICAgIHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXlcbiAgICAgICAgICAgICAgICYmIHJhbmdlX2luY2x1ZGVzIH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXgga2V5XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBBcHBseSBjaGFuZ2VzIHRvIGtleXMgd2hpY2ggYXJlIGluIHRoZSBpbnRlcnNlY3Rpb24gb2YgYm90aCByYW5nZXMuXG5cbiAgICAgICAgICAgICAgICBbb3V0c2lkZV0gaXMgdGhlIG51bWJlciBvZiB1cGRhdGVzIG91dHNpZGUgdGhlIHJhbmdlIGludGVyc2VjdGlvbiB0aGF0IHdlXG4gICAgICAgICAgICAgICAgdG9sZXJhdGUgYmVmb3JlIGdpdmluZyB1cCBhbmQgcmVjb25zdHJ1Y3RpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZS4gVGhpc1xuICAgICAgICAgICAgICAgIGlzIGFuIG9wdGltaXNhdGlvbiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBtYXAgY2hhbmdlcyBpbiBhIHZlcnkgYmlnIHdheSwgYXRcbiAgICAgICAgICAgICAgICB3aGljaCBwb2ludCBjb21wdXRpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZSBpcyBjaGVhcGVyLiAgKilcbiAgICAgICAgICAgICBsZXQgYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24gKG91dHNpZGUsIG1hcCkgKGtleSwgZGF0YSkgPVxuICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5XG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGEgfCBgVW5lcXVhbCAoXywgZGF0YSkgLT4gb3V0c2lkZSwgTWFwLnNldCBtYXAgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgb3V0c2lkZSA9IG91dHNpZGUgLSAxIGluXG4gICAgICAgICAgICAgICAgIGlmIEludC5PLihvdXRzaWRlIDwgMClcbiAgICAgICAgICAgICAgICAgdGhlbiByZXR1cm4gKGZyb21fc2NyYXRjaCAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZSBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBGaXJzdCB1cGRhdGUgdGhlIGtleXMgaW4gL2JvdGgvIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgbGV0IHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uID1cbiAgICAgICAgICAgICAgICgqIEN1dG9mZiB0aGUgYmlnIGRpZmYgY29tcHV0YXRpb24gaWYgd2UgcmVhY2ggTyh8c3VibWFwfCkgbnVtYmVyIG9mXG4gICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlICopXG4gICAgICAgICAgICAgICBsZXQgb3V0c2lkZV9jdXRvZmYgPSBNYXAubGVuZ3RoIG9sZF9yZXMgLyA0IGluXG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDoob3V0c2lkZV9jdXRvZmYsIG9sZF9yZXMpXG4gICAgICAgICAgICAgICAgIH5mOmFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICB8PiBzbmRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIFR1cGxlMi5lcXVhbFxuICAgICAgICAgICAgICAgICAgfmVxMTptYXliZV9ib3VuZF9lcXVhbFxuICAgICAgICAgICAgICAgICAgfmVxMjptYXliZV9ib3VuZF9lcXVhbFxuICAgICAgICAgICAgICAgICAgb2xkX3JhbmdlXG4gICAgICAgICAgICAgICAgICByYW5nZVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICgqIFRoZXJlIGFyZSBubyBrZXlzIHRvIHJlbW92ZSBhbmQgZXZlcnl0aGluZyBpbiByYW5nZSBpcyB1cGRhdGVkLiAqKVxuICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICgqIFJlbW92ZSBhbnkga2V5cyB3aGljaCBhcmUgbm90IGluIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZVxuICAgICAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgfmxvd2VyX2JvdW5kOm1pblxuICAgICAgICAgICAgICAgICAgIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoKiBBZGQgaW4gYW55IGtleXMgd2hpY2ggYXJlIGluIHRoZSBuZXcgcmFuZ2UgYnV0IG5vdCB0aGUgb2xkIHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgbGV0IG1hcF9hcHBlbmRfZXhuIGxvd2VyX3BhcnQgdXBwZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICAgICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW1wb3NzaWJsZSBjYXNlOiBCVUcgaW4gaW5jcl9tYXAubWwgc3VicmFuZ2VcIlxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgbG93ZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggb2xkX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICAgICAgICAgICAgICAgfCBFeGNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEluY2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgICB8IEluY2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooRXhjbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICBhbmQgdXBwZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggb2xkX21heCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICAgICAgICAgICAgICAgfCBFeGNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihJbmNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgICB8IEluY2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEV4Y2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBtYXBfYXBwZW5kX2V4blxuICAgICAgICAgICAgICAgICAgIGxvd2VyX3BhcnRcbiAgICAgICAgICAgICAgICAgICAobWFwX2FwcGVuZF9leG4gd2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSB1cHBlcl9wYXJ0KVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHdpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlKSkpKVxuICA7O1xuXG4gIGxldCByZWtleSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgbWFwX2luY3JcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBvdXRwdXQgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6KGYgfmtleSB+ZGF0YSkgfmRhdGEpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBvdXRwdXQgLT4gTWFwLnJlbW92ZSBvdXRwdXQgKGYgfmtleSB+ZGF0YSkpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIG91dHB1dCAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgKE1hcC5jb21wYXJhdG9yIG91dHB1dCkuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIE1hcC5zZXQgb3V0cHV0IH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICBlbHNlIE1hcC5yZW1vdmUgb3V0cHV0IHByZXZfa2V5IHw+IE1hcC5hZGRfZXhuIH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YSlcbiAgOztcblxuICBsZXQgaW5kZXhfYnlpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmluZGV4ID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBpbm5lcl9jb21wYXJhdG9yIC0+XG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmFkZDooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLnVwZGF0ZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b25cbiAgICAgICAgICAgICAgICAgIGlubmVyX2tleVxuICAgICAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgICAgICAgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvclxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+IE1hcC5hZGRfZXhuIGlubmVyX21hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC5jaGFuZ2Ugb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJCVUc6IEhpdCBzdXBwb3NlZGx5IGltcG9zc2libGUgY2FzZSBpbiBJbmNyX21hcC5pbmRleF9ieVwiXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJfbWFwID0gTWFwLnJlbW92ZSBpbm5lcl9tYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGlubmVyX21hcCB0aGVuIE5vbmUgZWxzZSBTb21lIGlubmVyX21hcCkpKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvciB+aW5kZXggPVxuICAgIGluZGV4X2J5aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvciB+aW5kZXg6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gaW5kZXggZGF0YSlcbiAgOztcblxuXG4gICgqKiBGaW5kIHR3byBrZXlzIGluIG1hcCBieSBpbmRleCwgTyhuKS4gV2UgdXNlIGp1c3Qgb25lIGZvbGQgKHR3byBNYXAubnRoIHdvdWxkIHVzZSB0d28pXG4gICAgICBhbmQgb3B0aW1pemUgZm9yIGtleXMgY2xvc2UgdG8gZWl0aGVyIGJlZ2lubmluZyBvciBlbmQgYnkgdXNpbmcgZWl0aGVyIGZvbGQgb3JcbiAgICAgIGZvbGRfcmlnaHQuXG4gICopXG4gIG1vZHVsZSBLZXlfc3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAnayB0ID1cbiAgICAgIHwgS25vd24gb2YgJ2tcbiAgICAgIHwgS25vd25fbm9uZVxuICAgICAgfCBVbmtub3duXG5cbiAgICBsZXQgaXNfa25vd24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biB8IEtub3duX25vbmUgLT4gTm9uZVxuICAgICAgfCBLbm93biBrIC0+IFNvbWUga1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgKHR5cGUgaykgfmZyb20gfnRvXyAobWFwIDogKGssIF8sIF8pIE1hcC50KVxuICAgIDogKGsgKiBrIG9wdGlvbikgb3B0aW9uXG4gICAgPVxuICAgIGxldCBvcGVuIEtleV9zdGF0dXMgaW5cbiAgICBsZXQgbGVuID0gTWFwLmxlbmd0aCBtYXAgaW5cbiAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPj0gKSBmcm9tIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA+PSApIHRvXyBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBmaW5kX2tleXMgZm9sZCB+c3RhcnRfcG9zIH5hZHZhbmNlX3BvcyA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIG1hcFxuICAgICAgICAgIH5pbml0OihiZWdpbl9rZXksIGVuZF9rZXksIHN0YXJ0X3BvcylcbiAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6XyAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpIC0+XG4gICAgICAgICAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPSApIHBvcyBmcm9tIHRoZW4gS25vd24ga2V5IGVsc2UgYmVnaW5fa2V5IGluXG4gICAgICAgICAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID0gKSBwb3MgdG9fIHRoZW4gS25vd24ga2V5IGVsc2UgZW5kX2tleSBpblxuICAgICAgICAgICAgaWYgaXNfa25vd24gYmVnaW5fa2V5ICYmIGlzX2tub3duIGVuZF9rZXlcbiAgICAgICAgICAgIHRoZW4gcmV0dXJuIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcylcbiAgICAgICAgICAgIGVsc2UgYmVnaW5fa2V5LCBlbmRfa2V5LCBhZHZhbmNlX3BvcyBwb3MpKVxuICAgIGluXG4gICAgbGV0IGJlZ2luX2tleSwgZW5kX2tleSwgXyA9XG4gICAgICAoKiBTZWFyY2hpbmcgZnJvbSBsZWZ0IHRha2VzIE8odG9fKSwgZnJvbSByaWdodCAtIE8obGVuIC0gZnJvbSksIHNvIHNlbGVjdCB0aGVcbiAgICAgICAgIHNtYWxsZXIgb25lLiAqKVxuICAgICAgaWYgdG9fIDwgbGVuIC0gZnJvbVxuICAgICAgdGhlbiBmaW5kX2tleXMgTWFwLmZvbGQgfnN0YXJ0X3BvczowIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgKyAxKVxuICAgICAgZWxzZSBmaW5kX2tleXMgTWFwLmZvbGRfcmlnaHQgfnN0YXJ0X3BvczoobGVuIC0gMSkgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyAtIDEpXG4gICAgaW5cbiAgICBPcHRpb24ubWFwIChLZXlfc3RhdHVzLnRvX29wdGlvbiBiZWdpbl9rZXkpIH5mOihmdW4gYmVnaW5fa2V5IC0+XG4gICAgICBiZWdpbl9rZXksIEtleV9zdGF0dXMudG9fb3B0aW9uIGVuZF9rZXkpXG4gIDs7XG5cbiAgbGV0IG50aF9mcm9tX2VpdGhlcl9zaWRlICh0eXBlIGspIG4gKG1hcCA6IChrLCBfLCBfKSBNYXAudCkgOiBrIG9wdGlvbiA9XG4gICAgT3B0aW9uLm1hcCB+Zjpmc3QgKGZpbmRfa2V5X3JhbmdlX2xpbmVhciB+ZnJvbTpuIH50b186biBtYXApXG4gIDs7XG5cbiAgKCoqIEZpbmQga2V5IFtieV0gcG9zaXRpb25zIGVhcmxpZXIvbGF0ZXIgaW4gYSBtYXAuIFJldHVybnMgbm9uZSBpZiBvdXQgb2YgYm91bmRzLiAqKVxuICBsZXQgcmVjIG9mZnNldCAoa2V5IDogJ2spIChtYXAgOiAoJ2ssIF8sIF8pIE1hcC50KSB+YnkgOiAnayBvcHRpb24gPVxuICAgIGlmIEludC4oID0gKSBieSAwXG4gICAgdGhlbiBTb21lIGtleVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNsb3Nlc3RfZGlyLCBhZGQgPVxuICAgICAgICBpZiBJbnQuKCA8ICkgYnkgMCB0aGVuIGBMZXNzX3RoYW4sIDEgZWxzZSBgR3JlYXRlcl90aGFuLCAtMVxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1hcC5jbG9zZXN0X2tleSBtYXAgY2xvc2VzdF9kaXIga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKGtleSwgXykgLT4gb2Zmc2V0IGtleSBtYXAgfmJ5OihieSArIGFkZCkpXG4gIDs7XG5cbiAgKCoqIEZpbmQgaG93IHdlIG5lZWQgdG8gbW92ZSBba2V5XSBpZiBbY2hhbmdlZF9rZXldIGNoYW5nZWQgaW4gdGhlIGdpdmVuXG4gICAgICB3YXkgKilcbiAgbGV0IGZpbmRfb2Zmc2V0IH5jb21wYXJlIH5rZXkgfmNoYW5nZWRfa2V5IGNoYW5nZSA9XG4gICAgaWYgSW50LiggPCApIChjb21wYXJlIGNoYW5nZWRfa2V5IGtleSkgMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgIHwgYExlZnQgXyAtPiAxXG4gICAgICB8IGBSaWdodCBfIC0+IC0xXG4gICAgICB8IF8gLT4gMClcbiAgICBlbHNlIDBcbiAgOztcblxuICBsZXQgcmFua1xuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIChtYXAgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChrZXkgOiAoaywgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IHNhbWVfa2V5IGEgYiA9IGNvbXBhcmVfa2V5IGEgYiA9IDAgaW5cbiAgICAgIGxldCB3aGVuX2tleV9jaGFuZ2VkIH5tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgbmV3X2tleSBvbGRfa2V5IDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiB0aGUgbmV3IGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCBrZXksIGZpbmQgdGhlIHNpemUgb2YgdGhlIG1hcCBzdWJyYW5nZVxuICAgICAgICAgICAgIGJldHdlZW4gdGhlbSBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG5ld19rZXksIEV4Y2wgb2xkX2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rIC0gTWFwLmxlbmd0aCBzdWJyYW5nZSAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIE90aGVyd2lzZSwgdGhlIG5ldyBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIG9sZCBrZXksIHNvIGZpbmQgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgICAgICAgbWFwIHN1YnJhbmdlIGJldHdlZW4gdGhlbSBhbmQgYWRkIGl0IHRvIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgb2xkX2tleSwgRXhjbCBuZXdfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgKyBNYXAubGVuZ3RoIHN1YnJhbmdlICsgMSlcbiAgICAgIGluXG4gICAgICBsZXQgd2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5IH5vbGRfcmFuayA9XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgKCogV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZGF0YSwgc28gb3B0aW1pemUgdGhlc2UgY2hlY2tzICopXG4gICAgICAgICAgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgbmV3X21hcFxuICAgICAgICAgIH5pbml0Om9sZF9yYW5rXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGRpZmZfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyAtIDFcbiAgICAgICAgICAgIHwgYFJpZ2h0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyArIDFcbiAgICAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwcm9jZXNzIH4ob2xkIDogKChrLCB2LCBfKSBNYXAudCAqIF8gKiBfKSBvcHRpb24pIG5ld19tYXAgKG5ld19rZXkgOiBrKSA9XG4gICAgICAgIGlmIG5vdCAoTWFwLm1lbSBuZXdfbWFwIG5ld19rZXkpXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgICgqIElmIHRoZSBtYXAgYW5kIGtleSBhcmUgdGhlIHNhbWUsIGp1c3QgcmV1c2UgdGhlIG9sZCByYW5rICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaylcbiAgICAgICAgICAgIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgJiYgc2FtZV9rZXkgb2xkX2tleSBuZXdfa2V5IC0+IG9sZF9yYW5rXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBpcyB0aGUgc2FtZSBidXQgdGhlIGtleSBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwIC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX2tleV9jaGFuZ2VkIH5tYXA6bmV3X21hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgdGhlIGtleSBpcyB0aGUgc2FtZSBidXQgdGhlIG1hcCBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHNhbWVfa2V5IG5ld19rZXkgb2xkX2tleSAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5Om5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIGJvdGggdGhlIG1hcCBhbmQgdGhlIGtleSBjaGFuZ2VkLCB0aGlzIGNhbiBiZSBzaW11bGF0ZWQgYXMgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5naW5nIGZvbGxvd2VkIGJ5IHRoZSBrZXkgY2hhbmdpbmcgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIC0+XG4gICAgICAgICAgICAoKiBXZSBjYWxsIFtwcm9jZXNzXSByZWN1cnNpdmVseSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmdcbiAgICAgICAgICAgICAgIFt3aGVuX21hcF9jaGFuZ2VkXSBmb2xsb3dlZCBieSBbd2hlbl9rZXlfY2hhbmdlZF0gc2luY2UgaXQgbWlnaHQgYmUgdGhlXG4gICAgICAgICAgICAgICBjYXNlIHRoYXQgW29sZF9rZXldIGlzIGluIFtvbGRfbWFwXSBhbmQgW25ld19rZXldIGlzIGluIFtuZXdfbWFwXSwgYnV0XG4gICAgICAgICAgICAgICBbb2xkX2tleV0gaXMgbm90IGluIFtuZXdfbWFwXS4gKilcbiAgICAgICAgICAgIGxldCBvbGRfcmFuayA9XG4gICAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykpIG5ld19tYXAgb2xkX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAobmV3X21hcCwgb2xkX2tleSwgb2xkX3JhbmspKSBuZXdfbWFwIG5ld19rZXlcbiAgICAgICAgICAoKiBJZiB0aGUgcHJldmlvdXMga2V5IHdhcyBub3QgaW4gdGhlIG1hcCBvciB0aGlzIGlzIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLFxuICAgICAgICAgICAgIGNvbXB1dGUgdGhlIHJhbmsgZnJvbSBzY3JhdGNoICopXG4gICAgICAgICAgfCBTb21lIChfLCBfLCBOb25lKSB8IE5vbmUgLT4gTWFwLnJhbmsgbmV3X21hcCBuZXdfa2V5KVxuICAgICAgaW5cbiAgICAgIHdpdGhfb2xkMiBtYXAga2V5IH5mOnByb2Nlc3MpXG4gIDs7XG5cbiAgKCoqIFJhbmdlIG1hcCBieSBpbmRpY2VzICopXG4gIGxldCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgICAgICh0eXBlIGsgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcCA6ICgoaywgXywgXykgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChyYW5nZSA6IChpbnQgTWF5YmVfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICBsZXQgZmluZF9rZXlfcmFuZ2UgKHJhbmdlIDogKGludCAqIGludCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgIDogKChrICogayBvcHRpb24pIG9wdGlvbiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgPVxuICAgICAgd2l0aF9vbGQyIG1hcCByYW5nZSB+ZjooZnVuIH5vbGQgbWFwIChmcm9tLCB0b18pIC0+XG4gICAgICAgICgqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBubyBrZXlzLCBvbmx5IGJlZ2luIGtleSwgb3IgYmVnaW4gYW5kIGVuZCBrZXlzLlxuICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGtleXMgYXQgW2Zyb21dIGFuZCBbdG9fXSBwb3NpdGlvbnMgaW4gdGhlIG1hcCwgb3IgTm9uZSBpZiB0aGVcbiAgICAgICAgICAgaW5kaWNlcyBhcmUgdG9vIGJpZy4gQXMgYWx3YXlzIFswIDw9IGZyb20gJiYgZnJvbSA8PSB0b19dLCB0aGVyZSBpcyBub1xuICAgICAgICAgICBwb3NzaWJpbGl0eSBvZiBvbmx5IFt0b19dIGJlaW5nIGEgdmFsaWQgcG9zaXRpb24uXG4gICAgICAgICopXG4gICAgICAgIGlmIEludC4oIDwgKSB0b18gZnJvbSB8fCBJbnQuKCA8ICkgZnJvbSAwXG4gICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJbnZhbGlkIGluZGljZXNcIiAoZnJvbSA6IGludCkgKHRvXyA6IGludCldO1xuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIChvbGRfZnJvbSwgb2xkX3RvKSwgU29tZSAoYmVnaW5fa2V5LCBlbmRfa2V5X29wdCkpIC0+XG4gICAgICAgICAgbGV0IGZpbmRfb2Zmc2V0ID0gZmluZF9vZmZzZXQgfmNvbXBhcmU6KE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfYmVnaW4gPSBmcm9tIC0gb2xkX2Zyb20gaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2VuZCA9IHRvXyAtIG9sZF90byBpblxuICAgICAgICAgIGxldCBhZGp1c3RfYW5kX29mZnNldCB+Ynkga2V5ID1cbiAgICAgICAgICAgIGxldCBieSA9IGJ5ICsgaWYgYnkgPj0gMCAmJiBub3QgKE1hcC5tZW0gbWFwIGtleSkgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgb2Zmc2V0IGtleSBtYXAgfmJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGtleXMgY2hhbmdpbmcgYW5kIG5vdCB0aGUgZGF0YSwgc28gW2RhdGFfZXF1YWxdIGhlcmVcbiAgICAgICAgICAgICBjYW4gYmUgYWx3YXlzIHRydWUgKilcbiAgICAgICAgICBsZXQgZGlmZiB+aW5pdCB+ZiA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKSBvbGRfbWFwIG1hcCB+aW5pdCB+ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJlZ2luX2tleV9vcHQsIGVuZF9rZXlfb3B0ID1cbiAgICAgICAgICAgIG1hdGNoIGVuZF9rZXlfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBlbmRfa2V5IC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luLCBtYXBfb2Zmc2V0X2VuZCA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDooMCwgMCkgfmY6KGZ1biAob2Zmc2V0X2JlZ2luLCBvZmZzZXRfZW5kKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAoIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAsIG9mZnNldF9lbmQgKyBmaW5kX29mZnNldCB+a2V5OmVuZF9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UgKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIGFkanVzdF9hbmRfb2Zmc2V0IGVuZF9rZXkgfmJ5OihtYXBfb2Zmc2V0X2VuZCArIHJhbmdlX29mZnNldF9lbmQpIClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDowIH5mOihmdW4gb2Zmc2V0X2JlZ2luIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgbnRoX2Zyb21fZWl0aGVyX3NpZGUgdG9fIG1hcCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgYmVnaW5fa2V5X29wdCk7XG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGVuZF9rZXlfb3B0KTtcbiAgICAgICAgICBPcHRpb24ubWFwIGJlZ2luX2tleV9vcHQgfmY6KGZ1biBiZWdpbl9rZXkgLT4gYmVnaW5fa2V5LCBlbmRfa2V5X29wdClcbiAgICAgICAgfCBOb25lIHwgU29tZSAoXywgXywgTm9uZSkgLT5cbiAgICAgICAgICAoKiBPbiBmaXJzdCBydW4gKHdoZW4gd2UgaGF2ZSB0bykgb3Igd2hlbiBib3RoIHRoZSBrZXlzIGFyZSBub25lLCBydW4gTyhuKVxuICAgICAgICAgICAgIHNjYW4uIFRoaXMgaXMgZmluZSBmb3Iga2V5cy1hcmUtbm9uZSBjYXNlIGFzIGl0IGhhcHBlbnMgd2hlbiB0aGUgcG9zaXRpb25zXG4gICAgICAgICAgICAgYXJlIHBhc3QgZW5kIG9mIHRoZSBtYXAsIHNvIHRoZXkgc2hvdWxkbid0IGJlIHRvbyBmYXIgZnJvbSBlbmQgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5nZXMsIGFuZCBbZmluZF9rZXlfcmFuZ2VfbGluZWFyXSBpcyBmYXN0IGluIHN1Y2ggY2FzZS4gKilcbiAgICAgICAgICBmaW5kX2tleV9yYW5nZV9saW5lYXIgbWFwIH5mcm9tIH50b18pXG4gICAgaW5cbiAgICAoKiBIYW5kbGUgZGlmZmVyZW50IE1heWJlX2JvdW5kIGNhc2VzIGFuZCBjYWxsIGZpbmRfa2V5X3JhbmdlIGlmIG5lY2Vzc2FyeS4gSXQnc1xuICAgICAgIG5pY2VyIHRvIGRvIHRoaXMgaGVyZSBhcyBvcHBvc2VkIHRvIG1ha2luZyBmaW5kX2tleV9yYW5nZSBldmVuIG1vcmUgY29tcGxpY2F0ZWQgKilcbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0ICggPj4+ICkgbmV3XyBib3VuZCA9IE1heWJlX2JvdW5kLm1hcCB+ZjooZnVuIF8gLT4gbmV3XykgYm91bmQgaW5cbiAgICBsZXQgcmV0dXJuID0gSW5jcmVtZW50YWwucmV0dXJuIChJbmNyZW1lbnRhbC5zdGF0ZSBtYXApIGluXG4gICAgbGV0IGtleV9yYW5nZSA9XG4gICAgICBtYXRjaCVwYXR0ZXJuX2JpbmQgcmFuZ2Ugd2l0aFxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICByZXR1cm4gKFNvbWUgKE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkKSlcbiAgICAgIHwgKCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpXG4gICAgICAgICwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSApIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCB1KVxuICAgICAgICBhbmQgbGIgPSBsYlxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBTb21lIGVuZF9rZXkpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIGVuZF9rZXkgPj4+IHViKVxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIE5vbmUpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIGwpXG4gICAgICAgIGFuZCBsYiA9IGxiIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKGtleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCB1IHUpXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKFVuYm91bmRlZCwga2V5ID4+PiB1YilcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIGluXG4gICAgc3VicmFuZ2UgP2RhdGFfZXF1YWwgbWFwIGtleV9yYW5nZVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2VcbiAgICA6IHR5cGUgazEgazIgdiBrMV9jbXAgazJfY21wIHN0YXRlX3dpdG5lc3MuXG4gICAgICA/ZGF0YV9lcXVhbDoodiAtPiB2IC0+IGJvb2wpXG4gICAgICAtPiAoazIsIGsyX2NtcCkgTWFwLmNvbXBhcmF0b3JcbiAgICAgIC0+ICgoazEsIChrMiwgdiwgazJfY21wKSBNYXAudCwgazFfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gKChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGZ1biA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKSBrMl9jb21wYXJhdG9yIG0gLT5cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtIChmdW4gazFfY29tcGFyYXRvciAtPlxuICAgICAgICBsZXQgdXBkYXRlXG4gICAgICAgICAgOiAga2V5OmsxIC0+IG9sZF9kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudCAtPiBuZXdfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgID1cbiAgICAgICAgICBmdW4gfmtleTprMSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgb2xkX2RhdGFcbiAgICAgICAgICAgICAgbmV3X2RhdGFcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrMiwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2UgYWNjIGsyIH5mOihmdW4gYWNjX2lubmVyIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjX2lubmVyID1cbiAgICAgICAgICAgICAgICAgICAgTWFwLmNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGVmYXVsdDooTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6azFfY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgICAgICAgazFcbiAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIF8gLT4gdmFsdWUpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGFjY19pbm5lciB0aGVuIE5vbmUgZWxzZSBTb21lIGFjY19pbm5lcikpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGQgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcikgfm5ld19kYXRhOmRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6ZGF0YSB+bmV3X2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICBpblxuICAgICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICAgIG1cbiAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICB+YWRkXG4gICAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VfYnlcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wIGNvbWJpbmVkX2tleSBjb21iaW5lZF9jbXApXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6XG4gICAgICAgICAgICgob3V0ZXJfa2V5LCAoaW5uZXJfa2V5LCBfLCBpbm5lcl9jbXApIE1hcC50LCBvdXRlcl9jbXApIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KG1lcmdlX2tleXMgOiBvdXRlcl9rZXkgLT4gaW5uZXJfa2V5IC0+IGNvbWJpbmVkX2tleSlcbiAgICAgICAgfihjb21wYXJhdG9yIDogKGNvbWJpbmVkX2tleSwgY29tYmluZWRfY21wKSBNYXAuY29tcGFyYXRvcilcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBjb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5zZXQgYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGE6bmV3X2RhdGEpXG4gICAgICB+YWRkOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuYWRkX2V4biBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLnJlbW92ZSBhY2MgKG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlXG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcClcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH5jb21wYXJhdG9yOihpbm5lcl9jb21wYXJhdG9yIDogKGlubmVyX2tleSwgaW5uZXJfY21wKSBNYXAuY29tcGFyYXRvcilcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gb3V0ZXJfY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG1vZHVsZSBDbXAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gb3V0ZXJfa2V5ICogaW5uZXJfa2V5XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gKG91dGVyX2NtcCwgaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPVxuICAgICAgICAgIGxldCBpbm5lcl9jb21wYXJhdG9yID1cbiAgICAgICAgICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgaW5uZXJfY29tcGFyYXRvcikgaW5cbiAgICAgICAgICAgIE0uY29tcGFyYXRvclxuICAgICAgICAgIGluXG4gICAgICAgICAgVHVwbGUyLmNvbXBhcmF0b3Igb3V0ZXJfY29tcGFyYXRvciBpbm5lcl9jb21wYXJhdG9yXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICAgIGluXG4gICAgICBjb2xsYXBzZV9ieVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+bWVyZ2Vfa2V5czpUdXBsZTIuY3JlYXRlXG4gICAgICAgIH5jb21wYXJhdG9yOihtb2R1bGUgQ21wKSlcbiAgOztcblxuICBsZXQgZXhwYW5kID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IG5ld19kYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuc2V0IG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YTpuZXdfZGF0YSkpXG4gICAgICB+YWRkOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLmFkZF9leG4gbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLmNoYW5nZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIG1hcCAtPlxuICAgICAgICAgICAgbGV0IG1hcCA9IE1hcC5yZW1vdmUgbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKG5vdCAoTWFwLmlzX2VtcHR5IG1hcCkpIG1hcCkpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6MFxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCAtIDEgZWxzZSBjb3VudClcbiAgOztcblxuICBsZXQgY291bnQgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGNvdW50aSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCAoY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mKSB+ZjooZnVuIGNvdW50IC0+IGNvdW50IDw+IDApXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZXhpc3RzaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHN1bVxuICAgICAgICAodHlwZSB1KVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOiAoKF8sIF8sIF8pIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAobW9kdWxlIEdyb3VwIDogQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSB1KVxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDpHcm91cC56ZXJvXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggKyApIGFjYyAoZiB2KSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCAtICkgYWNjIChmIHYpKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICAoY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxuICAgICAgfmY6KGZ1biBjb3VudCAtPiBjb3VudCA9IDApXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGZvcl9hbGxpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyID0gZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICB0eXBlICgndiwgJ3cpIGVudHJ5ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF92YWx1ZSA6ICd2IG9wdGlvblxuICAgICAgOyBub2RlIDogKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICAoKiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIHBlciBrZXkgaWYgbm9kZXMgYmVjb21lIG5lY2Vzc2FyeSBhZ2FpbiBhZnRlciBiZWluZ1xuICAgICAgICAgcmVtb3ZlZC4gKilcbiAgICAgIDsgbXV0YWJsZSBsb29rdXBfZW50cmllcyA6ICgnaywgKCd2LCAndykgZW50cnkgbGlzdCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgdXBkYXRlcl9ub2RlIDogKHVuaXQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICA7IHNjb3BlIDogJ3cgSW5jcmVtZW50YWwuU2NvcGUudFxuICAgICAgfVxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGlucHV0X21hcCB+Y29tcGFyYXRvciA9XG4gICAgICBsZXQgcmVjIHNlbGYgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGxldCB1cGRhdGVyX25vZGUgPVxuICAgICAgICAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICAgIGxldCAobGF6eSBzZWxmKSA9IHNlbGYgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwXG4gICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICB+aW5pdDooKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuICgpIChrZXksIGNoYW5nZWRfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBNYXAuZmluZF9tdWx0aSBzZWxmLmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBlbnRyaWVzIH5mOihmdW4gZW50cnkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICA8LSAobWF0Y2ggY2hhbmdlZF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld192YWx1ZSB8IGBVbmVxdWFsIChfLCBuZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBuZXdfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBlbnRyeS5ub2RlKSk7XG4gICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcCA8LSBpbnB1dF9tYXApXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICAgICB7IHNhdmVkX21hcCA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IGxvb2t1cF9lbnRyaWVzID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgdXBkYXRlcl9ub2RlXG4gICAgICAgICAgIDsgc2NvcGUgPSBJbmNyZW1lbnRhbC5TY29wZS5jdXJyZW50IChJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXApICgpXG4gICAgICAgICAgIH0pXG4gICAgICBpblxuICAgICAgTGF6eS5mb3JjZSBzZWxmXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2xpbmtfZW50cnkgdCBlbnRyeSB+a2V5IH5pc19ub3dfb2JzZXJ2YWJsZSA9XG4gICAgICBsZXQgKGxhenkgZW50cnkpID0gZW50cnkgaW5cbiAgICAgIGxldCBjdXJyZW50X2VudHJpZXMgPSBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgbGV0IGlzX2xpbmtlZCA9IExpc3QuZXhpc3RzIGN1cnJlbnRfZW50cmllcyB+ZjoocGh5c19lcXVhbCBlbnRyeSkgaW5cbiAgICAgIGlmIEJvb2wuZXF1YWwgaXNfbGlua2VkIGlzX25vd19vYnNlcnZhYmxlXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGlmIGlzX25vd19vYnNlcnZhYmxlXG4gICAgICB0aGVuXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gTWFwLnVwZGF0ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgKG90aGVyX2VudHJ5IDo6IF8gYXMgb3RoZXJfZW50cmllcykgLT5cbiAgICAgICAgICAgICgqIFVwZGF0ZSB0aGlzIGVudHJ5J3MgdmFsdWUgdG8gYmUgY3VycmVudC4gKilcbiAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlIDwtIG90aGVyX2VudHJ5LnNhdmVkX3ZhbHVlO1xuICAgICAgICAgICAgZW50cnkgOjogb3RoZXJfZW50cmllc1xuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgW10gLT5cbiAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlIDwtIE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleTtcbiAgICAgICAgICAgIFsgZW50cnkgXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV3X2VudHJpZXMgPVxuICAgICAgICAgIExpc3QuZmlsdGVyIGN1cnJlbnRfZW50cmllcyB+ZjooZnVuIHggLT4gbm90IChwaHlzX2VxdWFsIGVudHJ5IHgpKVxuICAgICAgICBpblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIChpZiBMaXN0LmlzX2VtcHR5IG5ld19lbnRyaWVzXG4gICAgICAgICAgICB0aGVuIE1hcC5yZW1vdmUgdC5sb29rdXBfZW50cmllcyBrZXlcbiAgICAgICAgICAgIGVsc2UgTWFwLnNldCB0Lmxvb2t1cF9lbnRyaWVzIH5rZXkgfmRhdGE6bmV3X2VudHJpZXMpKVxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9jcmVhdGVfbm9kZSB0IGtleSA9XG4gICAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSB0LnVwZGF0ZXJfbm9kZSBpblxuICAgICAgSW5jcmVtZW50YWwuU2NvcGUud2l0aGluIGluY3JlbWVudGFsX3N0YXRlIHQuc2NvcGUgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsZXQgcmVjIGVudHJ5ID1cbiAgICAgICAgICBsYXp5XG4gICAgICAgICAgICB7IHNhdmVkX3ZhbHVlID0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5XG4gICAgICAgICAgICA7IG5vZGUgPVxuICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gKGZvcmNlIGVudHJ5KS5zYXZlZF92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooc2xvd19wYXRoX2xpbmtfZW50cnkgdCBlbnRyeSB+a2V5KVxuICAgICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgKGxhenkgZW50cnkpID0gZW50cnkgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgICBlbnRyeS5ub2RlXG4gICAgICAgICAgKEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSB0LnVwZGF0ZXJfbm9kZSk7XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGUpXG4gICAgOztcblxuICAgIGxldCBmaW5kIHQga2V5ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IHdpdGhcbiAgICAgIHwgZW50cnkgOjogXyAtPiBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlXG4gICAgICB8IFtdIC0+IHNsb3dfcGF0aF9jcmVhdGVfbm9kZSB0IGtleVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9yX2RlYnVnID0gc3RydWN0XG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfZW50cnkgc2V4cF9vZl92YWx1ZSBlbnRyeSA9XG4gICAgICAgIGxldCB7IHNhdmVkX3ZhbHVlOyBub2RlIH0gPSBlbnRyeSBpblxuICAgICAgICBsZXQgbm9kZSA9IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUgaW5cbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgeyBzYXZlZF92YWx1ZSA6IHZhbHVlIG9wdGlvblxuICAgICAgICAgIDsgbm9kZV9pbmZvID0gKEluY3JlbWVudGFsLnVzZXJfaW5mbyBub2RlIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX2NvbnN0ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChJbmNyZW1lbnRhbC5pc19jb25zdCBub2RlKSAoKSA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfaW52YWxpZCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc192YWxpZCBub2RlKSkgKCkgOiAodW5pdCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX3VubmVjZXNzYXJ5ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX25lY2Vzc2FyeSBub2RlKSkgKCkgOiAodW5pdCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH1dXG4gICAgICA7O1xuXG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgICBsZXQgaW5mb19wZXJfa2V5ID1cbiAgICAgICAgICBNYXAubWVyZ2UgdC5zYXZlZF9tYXAgdC5sb29rdXBfZW50cmllcyB+ZjooZnVuIH5rZXkgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGFjdHVhbF92YWx1ZSwgZW50cmllcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSB4LCBbXVxuICAgICAgICAgICAgICB8IGBSaWdodCB5IC0+IE5vbmUsIHlcbiAgICAgICAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gU29tZSB4LCB5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGtleSA6IGtleVxuICAgICAgICAgICAgICAgIDsgYWN0dWFsX3ZhbHVlIDogKHZhbHVlIG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICAgICAgICAgIDsgZW50cmllcyA6IHZhbHVlIGVudHJ5IGxpc3RcbiAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cC5MaXN0IChNYXAuZGF0YSBpbmZvX3Blcl9rZXkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgR2VuZXJpYy5Mb29rdXAudFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IGZsYXR0ZW4geCA9IGZsYXR0ZW4gSW5jci5TdGF0ZS50IHhcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgaW5jbHVkZSBMb29rdXBcblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXAsIEluY3Iuc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEdlbmVyaWNcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlNfZ2VuKSA9IHN0cnVjdFxuICBtb2R1bGUgRSA9IEluY3IuRXhwZXJ0XG5cbiAgKCogSGFzaHRibCBzdGFydHMgb3V0IGF0IGEgcmlkaWN1bG91cyBzaXplIG9mIDEyOC4gVGhpcyBpcyBhIG1vcmUgcmVhc29uYWJsZSBudW1iZXJcbiAgICAgb2YgYmlucyB0byBoYXZlLiAqKVxuICBsZXQgaGFzaHRibF9zaXplID0gMTBcblxuICAoKiogW3NldHVwX2dlbmVyYXRvcl0gc2V0cyB1cCB0aGUgc3RhZ2VkIGNvbnZlcnNpb24uXG5cbiAgICAgIFtoYXNoYWJsZV0gaXMgdXNlZCB0byBidWlsZCBhIHRhYmxlIG9mIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIFdlIGRyb3AgdW5uZWNlc3NhcnlcbiAgICAgIGRlcGVuZGVuY2llcyB0byBhbGxvdyB0aGVtIHRvIGJlIGNvbGxlY3RlZC5cblxuICAgICAgW2NvbXB1dGVfb3V0cHV0IGtleV0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG91dHB1dCBub2RlIGNvcnJlc3BvbmRpbmcgdG8gW2tleV0uXG4gICAgICBbY29tcHV0ZV9vdXRwdXRdIGlzIGNsb3NlZCBvdmVyIHRoZSBtdXRhYmxlIHN0YXRlIGRldGVybWluaW5nIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICB0aGUgc2VsZWN0b3IncyBpbnB1dC5cblxuICAgICAgW21ha2VfaW5wdXRfbm9kZV0gbWFrZXMgc3VyZSB0aGF0IHdoZW4gdGhlIG11dGFibGUgc3RhdGUgaW5zaWRlIFtjb21wdXRlX291dHB1dF0gaXNcbiAgICAgIHVwZGF0ZWQsIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVzIGluIHRoZSBbbmVjZXNzYXJ5X2RlcGVuZGVuY2llc10gdGFibGUgYXJlIG1hZGVcbiAgICAgIHN0YWxlLiAgKilcbiAgbGV0IHNldHVwX2dlbmVyYXRvclxuICAgICAgICAoaGFzaGFibGUgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudClcbiAgICAgICAgfihjb21wdXRlX291dHB1dCA6ICdhIC0+ICdiKVxuICAgICAgICB+KG1ha2VfaW5wdXRfbm9kZSA6IG1ha2Vfa2V5X3N0YWxlOignYSAtPiB1bml0KSAtPiB1bml0IEluY3IudClcbiAgICA6ICgnYSAtPiAnYiBJbmNyLnQpIFN0YWdlZC50XG4gICAgPVxuICAgIGxldCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCAoaW5wdXRfbm9kZSA6IHVuaXQgSW5jci50KSA9XG4gICAgICBsZXQgbWFrZV9rZXlfc3RhbGUga2V5ID1cbiAgICAgICAgSGFzaHRibC5maW5kIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5XG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXVxuICAgICAgICB8PiBMaXN0Lml0ZXIgfmY6RS5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgIGluXG4gICAgICBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICAoKiBTZXQgdGhlIGN1dG9mZiBzbyB0aGF0IHdlIG5ldmVyIHBhc3MgYXV0b21hdGljYWxseSBmcm9tIHRoZSB1cGRhdGUgdG8gdGhlIG5vZGVzLiBXZVxuICAgICAgIHdhbnQgZXZlcnl0aGluZyB0byBnbyB0aHJvdWdoIFttYWtlX2tleV9zdGFsZV0gKilcbiAgICBJbmNyLnNldF9jdXRvZmYgaW5wdXRfbm9kZSBJbmNyLkN1dG9mZi5hbHdheXM7XG4gICAgc3RhZ2UgKGZ1biBrZXkgLT5cbiAgICAgIGxldCBpbnB1dF9kZXAgPSBFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X25vZGUgaW5cbiAgICAgIGxldCByZWMgb3V0cHV0X25vZGUgPSBsYXp5IChcbiAgICAgICAgRS5Ob2RlLmNyZWF0ZVxuICAgICAgICAgIChmdW4gKCkgLT4gY29tcHV0ZV9vdXRwdXQga2V5KVxuICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooZnVuIH5pc19ub3dfb2JzZXJ2YWJsZSAtPlxuICAgICAgICAgICAgaWYgaXNfbm93X29ic2VydmFibGUgdGhlblxuICAgICAgICAgICAgICBIYXNodGJsLmFkZF9tdWx0aSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6KGZvcmNlIG91dHB1dF9ub2RlKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBIYXNodGJsLmNoYW5nZSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciBsIH5mOihGbi5ub24gKHBoeXNfZXF1YWwgKGZvcmNlIG91dHB1dF9ub2RlKSkpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBsJyAtPiBTb21lIGwnXG4gICAgICAgICAgICAgICkpKVxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfbm9kZSA9IGZvcmNlIG91dHB1dF9ub2RlIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgb3V0cHV0X25vZGUgaW5wdXRfZGVwO1xuICAgICAgRS5Ob2RlLndhdGNoIG91dHB1dF9ub2RlXG4gICAgKVxuXG4gICgqKiBUaGlzIGNyZWF0ZXMgYSB1bml0IGluY3JlbWVudGFsIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGlucHV0IGluY3JlbWVudGFsXG4gICAgICBmaXJlcy4gV2hlbiB0aGF0IG9jY3VycywgaXQgdXBkYXRlcyBbc2VsZWN0ZWRdIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICBbaW5wdXRdLCBhbmQgY2FsbHMgW21ha2Vfa2V5X3N0YWxlXSBmb3IgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWUgb2YgdGhlXG4gICAgICBpbmNyZW1lbnRhbC4gKilcbiAgbGV0IHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZSA9XG4gICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGlucCB+ZjptYWtlX3N0YWxlO1xuICAgICAgT3B0aW9uLml0ZXIgIXNlbGVjdGVkIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBzZWxlY3RlZCA6PSBpbnBcbiAgICApXG5cbiAgbGV0IHNlbGVjdF9vbmUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIChpbnB1dCA6IGEgb3B0aW9uIEluY3IudClcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBrZXknIC0+IEguY29tcGFyZSBrZXkga2V5JyA9IDBcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZTptYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZSBoIGlucHV0ID1cbiAgICBzZWxlY3Rfb25lJyBoIChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIChrZXknLCBkYXRhKSAtPiBpZiBILmNvbXBhcmUga2V5IGtleScgPSAwIHRoZW4gZGF0YSBlbHNlIGRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfnNlbGVjdGVkIH5pbnB1dCB+bWFrZV9zdGFsZTooZnVuIChrZXksIF8pIC0+IG1ha2Vfa2V5X3N0YWxlIGtleSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUgaCB+ZGVmYXVsdCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZV92YWx1ZScgaCB+ZGVmYXVsdCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9tYW55X3ZhbHVlc1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgSGFzaHRibC5maW5kIHNlbGVjdGVkIGtleSB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHNlbGVjdGVkIH5mOm1ha2Vfa2V5X3N0YWxlO1xuICAgICAgICBIYXNodGJsLmNsZWFyIHNlbGVjdGVkO1xuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaHRibC5zZXQgc2VsZWN0ZWQgfmtleSB+ZGF0YVxuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9tYW55XG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNoX3NldC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPSBIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5IGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgbGV0IG9sZF9zZXQgPSBIYXNoX3NldC5jb3B5IHNlbGVjdGVkIGluXG4gICAgICAgIEhhc2hfc2V0LmNsZWFyIHNlbGVjdGVkO1xuXG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBvbGRfc2V0IGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2hfc2V0LmFkZCBzZWxlY3RlZCBrZXlcbiAgICAgICAgKTtcblxuICAgICAgICBIYXNoX3NldC5pdGVyIG9sZF9zZXQgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuZW5kXG5cbiIsImV4dGVybmFsIGpzX3Byb2ZfbWFyayA6IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21hcmtcIlxuZXh0ZXJuYWwganNfcHJvZl9tZWFzdXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tZWFzdXJlXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWFya3MgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWFya3NcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tZWFzdXJlcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tZWFzdXJlc1wiXG5cbmxldCBtYXJrIG5hbWUgPSBqc19wcm9mX21hcmsgbmFtZVxubGV0IG1lYXN1cmUgfm5hbWUgfnN0YXJ0IH5lbmRfID0ganNfcHJvZl9tZWFzdXJlIG5hbWUgc3RhcnQgZW5kX1xuXG5sZXQgcmVjb3JkIG5hbWUgfmYgPVxuICBsZXQgYmVmb3JlX25hbWUgPSBuYW1lIF4gXCJfYmVmb3JlXCIgaW5cbiAgbGV0IGFmdGVyX25hbWUgPSBuYW1lIF4gXCJfYWZ0ZXJcIiBpblxuICBsZXQgKCkgPSBtYXJrIGJlZm9yZV9uYW1lIGluXG4gIGxldCByZXMgPSBmICgpIGluXG4gIGxldCAoKSA9IG1hcmsgYWZ0ZXJfbmFtZSBpblxuICBtZWFzdXJlIH5uYW1lIH5zdGFydDpiZWZvcmVfbmFtZSB+ZW5kXzphZnRlcl9uYW1lO1xuICByZXNcbjs7XG5cbmxldCBjbGVhcl9tYXJrcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWFya3MgKClcbmxldCBjbGVhcl9tZWFzdXJlcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgKClcblxubW9kdWxlIE1hbnVhbCA9IHN0cnVjdFxuICBsZXQgbWFyayA9IG1hcmtcbiAgbGV0IG1lYXN1cmUgPSBtZWFzdXJlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxuXG50eXBlIHQgPVxuICB7IGZpbGVuYW1lIDogc3RyaW5nXG4gIDsgbWltZXR5cGUgOiBzdHJpbmdcbiAgOyBjb250ZW50cyA6IHN0cmluZ1xuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8ZG93bmxvYWRlcjogJXM+XCIgdC5maWxlbmFtZSlcblxubGV0IHRyaWdnZXIgeyBmaWxlbmFtZTsgbWltZXR5cGU7IGNvbnRlbnRzIH0gPVxuICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICBpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gIHRoZW5cbiAgICBwcmludF9zXG4gICAgICBbJW1lc3NhZ2UgXCJEb3dubG9hZCB0cmlnZ2VyZWRcIiAoZmlsZW5hbWUgOiBzdHJpbmcpIChtaW1ldHlwZSA6IHN0cmluZykgY29udGVudHNdXG4gIGVsc2UgKFxuICAgICgqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xOTMyODg5MS81NTg1OTIgKilcbiAgICBsZXQgYSA9IERvbV9odG1sLmNyZWF0ZUEgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBsZXQgY29udGVudHNfYmlnc3RyID1cbiAgICAgIFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciAoQmlnc3RyaW5nLm9mX3N0cmluZyBjb250ZW50cylcbiAgICBpblxuICAgIGxldCBibG9iID1cbiAgICAgICgqIERvbid0IHVzZSBbYmxvYl9mcm9tX3N0cmluZ10uIFRoYXQgaGFzIGFuIGF0dHJhY3RpdmUgdHlwZSBidXQgd29ya3MgYnkgZmlyc3RcbiAgICAgICAgIGNvbnZlcnRpbmcgb3VyIE9DYW1sIHN0cmluZyB0byBhIEphdmFzY3JpcHQgc3RyaW5nLCB3aGljaCBjb252ZXJ0cyB0b1xuICAgICAgICAgVVRGLTE2LiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHJhbmRvbSBiaW5hcnkgZGF0YSB0aGF0IHdpbGwgZGlzdG9ydCBpdC4gKilcbiAgICAgIEZpbGUuYmxvYl9mcm9tX2FueSBbIGBhcnJheUJ1ZmZlciBjb250ZW50c19iaWdzdHIgXSB+Y29udGVudFR5cGU6bWltZXR5cGVcbiAgICBpblxuICAgIGxldCB1cmwgPSBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNjcmVhdGVPYmplY3RVUkwgYmxvYiBpblxuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiaHJlZlwiKSB1cmw7XG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJkb3dubG9hZFwiKSAoSnMuc3RyaW5nIGZpbGVuYW1lKTtcbiAgICBhIyNjbGljaztcbiAgICBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNyZXZva2VPYmplY3RVUkwgdXJsKVxuOztcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgY3JlYXRlXG4gICAgICAgID8oZW5hYmxlZCA9IHRydWUpXG4gICAgICAgID8ob25fY2xpY2sgPSBmdW4gXyAtPiBWZG9tLkVmZmVjdC5JZ25vcmUpXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgfmdldF9kb3dubG9hZFxuICAgICAgICB+YnV0dG9uX3RleHRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9wZW4gVmRvbSBpblxuICAgIGxldCB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBldiA9XG4gICAgICB0cmlnZ2VyIChnZXRfZG93bmxvYWQgKCkpO1xuICAgICAgb25fY2xpY2sgZXZcbiAgICBpblxuICAgIGxldCBlbmFibGVkX2Rpc2FibGVkID1cbiAgICAgIGlmIGVuYWJsZWQgdGhlbiBbXSBlbHNlIFsgQXR0ci5kaXNhYmxlZDsgQXR0ci5zdHlsZSAoQ3NzX2dlbi5jb2xvciAoYE5hbWUgXCJncmV5XCIpKSBdXG4gICAgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBleHRyYV9hdHRyczsgZW5hYmxlZF9kaXNhYmxlZDsgWyBBdHRyLm9uX2NsaWNrIHRyaWdnZXJfY3N2X2Rvd25sb2FkIF0gXVxuICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICBpblxuICAgIE5vZGUuYnV0dG9uIH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycykgWyBOb2RlLnRleHQgYnV0dG9uX3RleHQgXVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgSW5jciA9IEluY3JlbWVudGFsLk1ha2UgKClcblxuKCogVGhpcyBpcyB0aGUgZGVmYXVsdCBjbG9jayBmb3IgcnVubmluZyBjbGllbnRzLCBidXQgYm9uc2FpIHRlc3RzIGhhdmUgdGhlaXJcbiAgIG93biBzZXBhcmF0ZSBjbG9ja3MgKilcbmxldCBjbG9jayA9IEluY3IuQ2xvY2suY3JlYXRlIH5zdGFydDooVGltZV9ucy5ub3cgKCkpICgpXG5cbmluY2x1ZGUgSW5jclxubW9kdWxlIE1hcCA9IEluY3JfbWFwLk1ha2UgKEluY3IpXG5tb2R1bGUgU2VsZWN0ID0gSW5jcl9zZWxlY3QuTWFrZSAoSW5jcilcbiIsIm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQ29yZVxuXG50eXBlICgnYWN0aW9uLCAnbW9kZWwsICdzdGF0ZSwgJ2V4dHJhKSB3aXRoX2V4dHJhID1cbiAgeyBhcHBseV9hY3Rpb24gOiAnYWN0aW9uIC0+ICdzdGF0ZSAtPiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gJ21vZGVsXG4gIDsgdXBkYXRlX3Zpc2liaWxpdHkgOiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gJ21vZGVsXG4gIDsgdmlldyA6IFZkb20uTm9kZS50XG4gIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gdW5pdFxuICA7IGV4dHJhIDogJ2V4dHJhXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxudHlwZSAoJ2FjdGlvbiwgJ3N0YXRlLCAnbW9kZWwpIHQgPSAoJ2FjdGlvbiwgJ3N0YXRlLCAnbW9kZWwsIHVuaXQpIHdpdGhfZXh0cmFcblxubGV0IGNyZWF0ZV93aXRoX2V4dHJhID9hcHBseV9hY3Rpb24gP3VwZGF0ZV92aXNpYmlsaXR5ID9vbl9kaXNwbGF5IH5leHRyYSBtb2RlbCB2aWV3ID1cbiAgbGV0IGFwcGx5X2FjdGlvbiA9XG4gICAgT3B0aW9uLnZhbHVlIGFwcGx5X2FjdGlvbiB+ZGVmYXVsdDooZnVuIF8gXyB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCB1cGRhdGVfdmlzaWJpbGl0eSA9XG4gICAgT3B0aW9uLnZhbHVlIHVwZGF0ZV92aXNpYmlsaXR5IH5kZWZhdWx0OihmdW4gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgb25fZGlzcGxheSA9IE9wdGlvbi52YWx1ZSBvbl9kaXNwbGF5IH5kZWZhdWx0OihmdW4gXyB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gKCkpIGluXG4gIHsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheTsgZXh0cmE7IHZpZXcgfVxuOztcblxubGV0IGNyZWF0ZSA9IGNyZWF0ZV93aXRoX2V4dHJhIH5leHRyYTooKVxuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcblxuKCoqIENvbW1vbiBtb2R1bGUgdHlwZXMgKilcbm1vZHVsZSB0eXBlIE1vZGVsID0gc2lnXG4gIHR5cGUgdFxuXG5cbiAgKCoqIEEgZnVuY3Rpb24gZm9yIHRlc3Rpbmcgd2hldGhlciB0aGUgbW9kZWwgaGFzIGNoYW5nZWQgZW5vdWdoIHRvIHJlcXVpcmUgcmVmaXJpbmdcbiAgICAgIHRoZSBpbmNyZW1lbnRhbCBncmFwaC5cblxuICAgICAgSXQncyBiZXN0IGlmIHRoZSB2YWx1ZXMgaW4gdGhlIG1vZGVsIHN1cHBvcnQgYSBzZW1hbnRpY2FsbHkgcmVhc29uYWJsZSBjdXRvZmZcbiAgICAgIGZ1bmN0aW9uIHdoaWNoIGxldHMgeW91IGF2b2lkIGluZmluaXRlIHJlY29tcHV0YXRpb24gbG9vcHMgdGhhdCBjYW4gb3RoZXJ3aXNlIGJlXG4gICAgICB0cmlnZ2VyZWQgYnkgdGhlIHZpc2liaWxpdHkgY2hlY2tzLiBGb3IgdGhpcyByZWFzb24sIGl0J3MgdHlwaWNhbGx5IGEgZ29vZCBpZGVhIHRvXG4gICAgICBhdm9pZCBoYXZpbmcgc2ltcGxlIGNsb3N1cmVzIHN0b3JlZCBpbiB0aGUgbW9kZWwuXG5cbiAgICAgIFRoYXQgc2FpZCwgaXQgZG9lcyB3b3JrIGlmIHlvdSBwdXQgcGh5c19lcXVhbCBpbiBmb3IgdGhlIGN1dG9mZi4gKilcbiAgdmFsIGN1dG9mZiA6IHQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQWN0aW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFN0YXRlID0gc2lnXG4gICgqKiBSZXByZXNlbnRzIHRoZSBpbXBlcmF0aXZlIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhbiBhcHBsaWNhdGlvbiwgdHlwaWNhbGx5IHVzZWQgZm9yXG4gICAgICBob3VzaW5nIHRoaW5ncyBsaWtlIGNvbW11bmljYXRpb24gQXN5bmMtUlBDIGNvbm5lY3Rpb25zLiAqKVxuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgbW9kdWxlIFN0YXRlIDogU3RhdGVcblxuICAoKiogW29uX3N0YXJ0dXBdIGlzIGNhbGxlZCBvbmNlLCByaWdodCBhZnRlciB0aGUgaW5pdGlhbCBET00gaXMgc2V0IHRvIHRoZSB2aWV3IHRoYXRcbiAgICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBpbml0aWFsIHN0YXRlLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZG9pbmcgdGhpbmdzIGxpa2Ugc3RhcnRpbmcgdXBcbiAgICAgIGFzeW5jIHByb2Nlc3Nlcy4gIE5vdGUgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvbXB1dGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgYW55XG4gICAgICBpbmNyZW1lbnRhbGl0eSwgc2luY2UgaXQncyBvbmx5IHJ1biBvbmNlLiAqKVxuICB2YWwgb25fc3RhcnR1cCA6IHNjaGVkdWxlX2FjdGlvbjooQWN0aW9uLnQgLT4gdW5pdCkgLT4gTW9kZWwudCAtPiBTdGF0ZS50IERlZmVycmVkLnRcblxuICAoKiogW2NyZWF0ZV0gaXMgYSBmdW5jdGlvbiB0aGF0IGluY3JlbWVudGFsbHkgY29uc3RydWN0cyBhIHshQ29tcG9uZW50fS4gTm90ZSB0aGF0IGFcbiAgICAgIFtDb21wb25lbnRdIHN1cHBvcnRzIGZ1bmN0aW9ucyBsaWtlIFthcHBseV9hY3Rpb25dLCB3aGljaCByZXR1cm4gYSBuZXcgW01vZGVsLnRdLFxuICAgICAgd2l0aG91dCB0YWtpbmcgYSBtb2RlbCBhcyBhbiBleHBsaWNpdCBpbnB1dC4gIFRoZSBpbnRlbnQgaXMgZm9yIFthcHBseV9hY3Rpb25dIHRvXG4gICAgICBoYXZlIGFjY2VzcyB0byB0aGUgY3VycmVudCBtb2RlbCB2aWEgaXRzIGNvbnN0cnVjdGlvblxuXG4gICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBtaWdodCBsb29rIGluIHByYWN0aWNlLlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB7IGNvdW50ZXIgOiBpbnQgfSBbQEBkZXJpdmluZyBmaWVsZHMsIGNvbXBhcmVdXG5cbiAgICAgICAgICBsZXQgY3V0b2ZmIHQxIHQyID0gY29tcGFyZSB0MSB0MiA9IDBcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSW5jcmVtZW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBsZXQgc2hvdWxkX2xvZyBfID0gZmFsc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IGluaXRpYWxfbW9kZWwgPSB7IE1vZGVsLmNvdW50ZXIgPSAwIH1cblxuICAgICAgICBsZXQgb25fc3RhcnR1cCB+c2NoZWR1bGVfYWN0aW9ucyBfbW9kZWwgPVxuICAgICAgICAgIGV2ZXJ5IChUaW1lX25zLlNwYW4ub2Zfc2VjIDEuKSAoZnVuICgpIC0+XG4gICAgICAgICAgICBzY2hlZHVsZV9hY3Rpb25zIFsgQWN0aW9uLkluY3JlbWVudCBdKTtcbiAgICAgICAgICBEZWZlcnJlZC51bml0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOl8gfmluamVjdDpfID1cbiAgICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgICBsZXQlbWFwIGFwcGx5X2FjdGlvbiA9XG4gICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPSBtb2RlbCA+PnwgTW9kZWwuY291bnRlciBpblxuICAgICAgICAgICAgZnVuIChJbmNyZW1lbnQgOiBBY3Rpb24udCkgXyB+c2NoZWR1bGVfYWN0aW9uczpfIC0+XG4gICAgICAgICAgICAgIHsgTW9kZWwuY291bnRlciA9IGNvdW50ZXIgKyAxIH1cbiAgICAgICAgICBhbmQgdmlldyA9XG4gICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPVxuICAgICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPSBtb2RlbCA+PnwgTW9kZWwuY291bnRlciBpblxuICAgICAgICAgICAgICBWZG9tLk5vZGUuZGl2IFtdIFsgVmRvbS5Ob2RlLnRleHQgKEludC50b19zdHJpbmcgY291bnRlcikgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFZkb20uTm9kZS5ib2R5IFtdIFsgY291bnRlciBdXG4gICAgICAgICAgYW5kIG1vZGVsID0gbW9kZWwgaW5cbiAgICAgICAgICAoKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaW5jbHVkZSBbb25fZGlzcGxheV0gb3IgW3VwZGF0ZV92aXNpYmlsaXR5XSwgc2luY2VcbiAgICAgICAgICAgICB0aGVzZSBhcmUgb3B0aW9uYWwgYXJndW1lbnRzICopXG4gICAgICAgICAgQ29tcG9uZW50LmNyZWF0ZSB+YXBwbHlfYWN0aW9uIG1vZGVsIHZpZXdcbiAgICAgICAgOzsgXX1cblxuICAgICAgVGhlIGZ1bGwgY29kZSBmb3IgdGhpcyBleGFtcGxlIGNhbiBiZSBmb3VuZCBpbiBleGFtcGxlcy9jb3VudGVyLlxuICAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAtPiBvbGRfbW9kZWw6TW9kZWwudCBJbmNyLnRcbiAgICAoKiogW29sZF9tb2RlbF0gY29udGFpbnMgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIG1vZGVsICopXG4gICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgKCoqIFtpbmplY3RdIGdpdmVzIHlvdSB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZXZlbnQgaGFuZGxlcnMgaW4gdGhlIHZpcnR1YWwgRE9NLiBJblxuICAgICAgICB5b3VyIGV2ZW50IGhhbmRsZXIsIGNhbGwgdGhpcyBmdW5jdGlvbiBvbiB0aGUgYWN0aW9uIHlvdSB3b3VsZCBsaWtlIHRvXG4gICAgICAgIHNjaGVkdWxlLiBWaXJ0dWFsIERPTSB3aWxsIGF1dG9tYXRpY2FsbHkgZGVsZWdhdGUgdGhhdCBhY3Rpb24gYmFjayB0byB0aGVcbiAgICAgICAgW1N0YXJ0X2FwcF0gbWFpbiBsb29wLiAqKVxuICAgIC0+IChBY3Rpb24udCwgTW9kZWwudCwgU3RhdGUudCkgQ29tcG9uZW50LnQgSW5jci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3N0YXRlLCAnbW9kZWwsICdhY3Rpb24pIHNuYXBzaG90ID1cbiAgICB7IHZpZXcgOiBWZG9tLk5vZGUudFxuICAgIDsgYXBwbHlfYWN0aW9uIDpcbiAgICAgICAgJ3N0YXRlIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbCAtPiAnYWN0aW9uIC0+ICdtb2RlbFxuICAgIDsgdXBkYXRlX3Zpc2liaWxpdHkgOiAnbW9kZWwgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsXG4gICAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgICB9XG5cbiAgbW9kdWxlIHR5cGUgU19mb3JfYm9uc2FpID0gc2lnXG4gICAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gICAgbW9kdWxlIFN0YXRlIDogU3RhdGVcblxuICAgIHZhbCBhY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiA6IEFjdGlvbi50IC0+IGJvb2xcbiAgICB2YWwgb25fc3RhcnR1cCA6IHNjaGVkdWxlX2FjdGlvbjooQWN0aW9uLnQgLT4gdW5pdCkgLT4gTW9kZWwudCAtPiBTdGF0ZS50IERlZmVycmVkLnRcblxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgICAtPiBvbGRfbW9kZWw6TW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICAgLT4gKFN0YXRlLnQsIE1vZGVsLnQsIEFjdGlvbi50KSBzbmFwc2hvdCBJbmNyLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFJlY3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHRvcCA6ICdhXG4gICAgOyBsZWZ0IDogJ2FcbiAgICA7IGJvdHRvbSA6ICdhXG4gICAgOyByaWdodCA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIHsgdG9wID0gZiB0LnRvcDsgbGVmdCA9IGYgdC5sZWZ0OyBib3R0b20gPSBmIHQuYm90dG9tOyByaWdodCA9IGYgdC5yaWdodCB9XG4gIDs7XG5cbiAgbGV0IGludF9oZWlnaHQgdCA9IHQuYm90dG9tIC0gdC50b3BcbiAgbGV0IGludF93aWR0aCB0ID0gdC5yaWdodCAtIHQubGVmdFxuICBsZXQgZmxvYXRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtLiB0LnRvcFxuICBsZXQgZmxvYXRfd2lkdGggdCA9IHQucmlnaHQgLS4gdC5sZWZ0XG5lbmRcblxubGV0IHJvdW5kX2Zsb2F0X3JlY3QgPyhyb3VuZCA9IEZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bikgPSBSZWN0Lm1hcCB+Zjpyb3VuZFxuXG50eXBlIHJvd3Nfb3JfY29sdW1ucyA9XG4gIHwgUm93c1xuICB8IENvbHVtbnNcbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgdmFyaWFudHMsIGNvbXBhcmVdXG5cbmxldCBpbm5lckhlaWdodCAoKSA9XG4gIERvbV9odG1sLndpbmRvdyMjLmlubmVySGVpZ2h0XG47O1xuXG5sZXQgaW5uZXJXaWR0aCAoKSA9XG4gIERvbV9odG1sLndpbmRvdyMjLmlubmVyV2lkdGhcbjs7XG5cbmxldCBlbGVtZW50X2lzX2luX3ZpZXdwb3J0IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBGbG9hdC4oID49ICkgcmVjdCMjLnRvcCAwLlxuICAmJiBGbG9hdC4oID49ICkgcmVjdCMjLmxlZnQgMC5cbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5ib3R0b20gKEZsb2F0Lm9mX2ludCAoaW5uZXJIZWlnaHQgKCkpKVxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLnJpZ2h0IChGbG9hdC5vZl9pbnQgKGlubmVyV2lkdGggKCkpKVxuOztcblxuKCoqIFNjcm9sbHMgdG8gdGhlIGl0ZW0gbWFya2VkIGFzIFwia2VlcC1pbi12aWV3XCIgKilcbmxldCBzY3JvbGwgPyhpZCA9IFwia2VlcC1pbi12aWV3XCIpICgpID1cbiAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBlbHQgLT4gaWYgbm90IChlbGVtZW50X2lzX2luX3ZpZXdwb3J0IGVsdCkgdGhlbiBlbHQjI3Njcm9sbEludG9WaWV3IEpzLl90cnVlXG47O1xuXG4oKiBOb3QgeWV0IHN1cHBvcnRlZCBvbiBDaHJvbWUuICBNYXliZSB3ZSBzaG91bGQgdXNlIGpRdWVyeT9cbiAgIHtbXG4gICAgIGxldCBzY3JvbGxfaW50b192aWV3IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogdW5pdCA9XG4gICAgICAgZWx0IyNzY3JvbGxJbnRvVmlldyAob2JqZWN0JWpzXG4gICAgICAgICB2YWwgYmxvY2sgPSBKcy5zdHJpbmcgXCJzdGFydFwiXG4gICAgICAgICB2YWwgYmVoYXZpb3IgPSBKcy5zdHJpbmcgXCJzbW9vdGhcIlxuICAgICAgIGVuZClcbiAgIF19XG4qKVxuKCogW3ZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbF0gZ2V0cyBib3VuZGluZyByZWN0IG9mIFtlbHRdLiBUaGUgYm91bmRpbmcgcmVjdCBpc1xuICAgcmVsYXRpdmUgdG8gdGhlIHZpZXcgcG9ydCAqKVxubGV0IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgeyBSZWN0LnRvcCA9IHJlY3QjIy50b3BcbiAgOyBsZWZ0ID0gcmVjdCMjLmxlZnRcbiAgOyBib3R0b20gPSByZWN0IyMuYm90dG9tXG4gIDsgcmlnaHQgPSByZWN0IyMucmlnaHRcbiAgfVxuOztcblxubGV0IHZpZXdwb3J0X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMDsgbGVmdCA9IDA7IGJvdHRvbSA9IGlubmVySGVpZ2h0ICgpOyByaWdodCA9IGlubmVyV2lkdGggKCkgfVxuOztcblxubGV0IGNsaWVudF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgYm91bmRpbmdfcmVjdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbHQgaW5cbiAgeyBib3VuZGluZ19yZWN0IHdpdGhcbiAgICBib3R0b20gPSBib3VuZGluZ19yZWN0LnRvcCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBib3VuZGluZ19yZWN0LmxlZnQgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwXG4gIDsgbGVmdCA9IDBcbiAgOyBib3R0b20gPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5cbigqKiBTaW1wbGUgd3JhcHBlciBmb3IgdGhlIGJpbmFyeS1zZWFyY2ggZnVuY3RvciAgICopXG5sZXQgYmluYXJ5X3NlYXJjaCAodHlwZSBlbHQpIH5sZW5ndGggfmdldCB+Y29tcGFyZSBtb2RlIHggPVxuICBsZXQgbW9kdWxlIEJzID1cbiAgICBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIGVsdCA9IGVsdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHVuaXRcblxuICAgICAgbGV0IGdldCAoKSBuID0gZ2V0IG5cbiAgICAgIGxldCBsZW5ndGggKCkgPSBsZW5ndGhcbiAgICBlbmQpXG4gIGluXG4gIEJzLmJpbmFyeV9zZWFyY2ggKCkgfmNvbXBhcmUgbW9kZSB4XG47O1xuXG4oKiogU2VhcmNoZXMgdGhyb3VnaCBlbGVtZW50cyBpbmRleGVkIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXS4gKilcbmxldCBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCB+c2VhcmNoX2J5IG1vZGUgbGF5b3V0IHggPVxuICBsZXQgZ2V0ID1cbiAgICBsZXQgbnRoX2VsZW1lbnQgbiA9XG4gICAgICBsZXQgaWQgPSBudGhfZWxlbWVudF9pZCBuIGluXG4gICAgICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkVsZW1lbnQgJXMgbm90IGZvdW5kXCIgaWQgKClcbiAgICAgIHwgU29tZSBlbHQgLT4gZWx0XG4gICAgaW5cbiAgICBsZXQgZmlyc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IDApIGluXG4gICAgbGV0IGxhc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IChsZW5ndGggLSAxKSkgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBuJ3RoIGVsZW1lbnQgaW4gYSBub3JtYWxpemVkIHdheSwgYXMgaWYgdGhlIGluZGV4aW5nIGFsd2F5cyBnb2VzIGluXG4gICAgICAgaW5jcmVhc2luZyBvcmRlciBmcm9tIHRvcCB0b3AgYm90dG9tICopXG4gICAgbGV0IG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbiA9XG4gICAgICBsZXQgaXNfYXNjZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IEZsb2F0LiggPD0gKSBmaXJzdC50b3AgbGFzdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IEZsb2F0LiggPD0gKSBmaXJzdC5sZWZ0IGxhc3QubGVmdFxuICAgICAgaW5cbiAgICAgIG50aF9lbGVtZW50IChpZiBpc19hc2NlbmRpbmcgdGhlbiBuIGVsc2UgbGVuZ3RoIC0gbiAtIDEpXG4gICAgaW5cbiAgICBmdW4gbiAtPiBzZWFyY2hfYnkgKHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuKSlcbiAgaW5cbiAgYmluYXJ5X3NlYXJjaCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmU6RmxvYXQuY29tcGFyZSBtb2RlIHhcbjs7XG5cbmxldCBmaW5kX3Zpc2libGVfcmFuZ2Ugfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgbGF5b3V0ID1cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGVsZW1lbnRfc2VhcmNoID0gZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgaW5cbiAgICBsZXQgdmlld3BvcnRfcmVjdCA9IHZpZXdwb3J0X3JlY3QgKCkgaW5cbiAgICBsZXQgZmlyc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QuYm90dG9tLCB2aWV3cG9ydF9yZWN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5yaWdodCwgdmlld3BvcnRfcmVjdC5sZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgIGxldCBsYXN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LnRvcCwgdmlld3BvcnRfcmVjdC5ib3R0b21cbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QubGVmdCwgdmlld3BvcnRfcmVjdC5yaWdodFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgICgqIEJvdGggW2ZpcnN0XSBhbmQgW2xhc3RdIG5lZWQgdG8gYmUgW1NvbWVdLiBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB3aG9sZVxuICAgICAgIHRhYmxlIGlzIGJlbG93IHZpZXcgcG9ydCwgdGhlbiBbZmlyc3RdIHdpbGwgYmUgW1NvbWVdLCBbbGFzdF0gd2lsbCBiZSBbTm9uZV0gKilcbiAgICBPcHRpb24uYm90aCBmaXJzdCBsYXN0KVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAge2pzfFxuICAgICAgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gICAgICAgIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgICAgICB2YXIgcmUgPSAvKGF1dG98c2Nyb2xsKS87XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGRvYykge1xuICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VyID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChjdXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgIHZhciBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKGN1cik7XG5cbiAgICAgICAgICBpZiAocmUudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgfSlcbiAgICB8anN9XG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXIgKGVsIDogI0RvbS5ub2RlIEpzLnQpIDogRG9tLm5vZGUgSnMudCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIFt8IEpzLlVuc2FmZS5pbmplY3QgZWwgfF1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFBlcmZvcm1hbmNlID0gSmF2YXNjcmlwdF9wcm9maWxpbmdcblxubGV0IHRpbWVyX3N0YXJ0IHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZSB0aGVuIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIChzIF4gXCJiZWZvcmVcIik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCB0aW1lcl9zdG9wIHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZVxuICB0aGVuIChcbiAgICBsZXQgYmVmb3JlID0gcyBeIFwiYmVmb3JlXCIgaW5cbiAgICBsZXQgYWZ0ZXIgPSBzIF4gXCJhZnRlclwiIGluXG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgYWZ0ZXI7XG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1lYXN1cmUgfm5hbWU6cyB+c3RhcnQ6YmVmb3JlIH5lbmRfOmFmdGVyKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWVFbmQgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHByaW50X2Vycm9yZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpKSBmbXRcblxubW9kdWxlIFJlcXVlc3RfaWRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcblxuICB2YWwgc2V0X29uY2VfZXhuXG4gICAgOiAgdFxuICAgIC0+IGFuaW1hdGlvbl9mcmFtZV9pZDpEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgIC0+IHNldF90aW1lb3V0X2lkOkRvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbGxlZCA6IHQgLT4gYm9vbFxuICB2YWwgY2FuY2VsIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBpZHMgPVxuICAgIHwgRW1wdHlcbiAgICB8IENhbmNlbGxlZFxuICAgIHwgSWRzIG9mXG4gICAgICAgIHsgYW5pbWF0aW9uX2ZyYW1lX2lkIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAgICAgOyBzZXRfdGltZW91dF9pZCA6IERvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAgICAgfVxuXG4gIHR5cGUgdCA9IGlkcyByZWZcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IHJlZiBFbXB0eVxuXG4gIGxldCBzZXRfb25jZV9leG4gKHQgOiB0KSB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+XG4gICAgICAoKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgbGV0J3MgYmUgZGVmZW5zaXZlLiAqKVxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZFxuICAgIHwgRW1wdHkgLT4gdCA6PSBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH1cbiAgICB8IElkcyBfIC0+IGludmFsaWRfYXJnIFwicmVxdWVzdF9pZHMgYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCBjYW5jZWxsZWQgeCA9XG4gICAgbWF0Y2ggIXggd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+IHRydWVcbiAgICB8IEVtcHR5IHwgSWRzIF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgY2FuY2VsICh0IDogdCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiAoKVxuICAgIHwgRW1wdHkgLT4gdCA6PSBDYW5jZWxsZWRcbiAgICB8IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfSAtPlxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZDtcbiAgICAgIHQgOj0gQ2FuY2VsbGVkXG4gIDs7XG5lbmRcblxuKCoqIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gbm90aWZpZXMgdGhlIGJyb3dzZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBkbyBzb21lXG4gICAgY29tcHV0YXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQuIEJlY2F1c2UgdGhpcyBuZWVkcyB0byBvY2N1ciBpbiB0aGUgc2FtZVxuICAgIHN5bmNocm9ub3VzIGNhbGwgKGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgcmVwYWludCksIHJldHVybmluZyBhIERlZmVycmVkLnQgd2lsbCBub3RcbiAgICB3b3JrLiBJbnN0ZWFkLCB5b3UgcGFzcyBpbiBhIGpvYiB0byBiZSBydW4gYmVmb3JlIHRoZSByZXBhaW50LlxuXG4gICAgTm90ZSB0aGF0IGlmIFtjYWxsYmFja10gY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBkb2luZyBET00gY2hhbmdlcywgdGhvc2VcbiAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBhaW50IGFuZCB3aWxsIGJlIHNhdmVkIHVudGlsIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAgV2hlbiB0aGUgdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGUgYnJvd3NlcnMgbmF0aXZlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmdW5jdGlvblxuICAgIHdpbGwgbmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2ssIHNvIGluIG9yZGVyIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgZXZlbnRzLCB3ZSBzZXQgYW5cbiAgICBhbHRlcm5hdGUgc2V0VGltZW91dCBhdCAxIHNlY29uZC5cbiopXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2sgPVxuICAoKiBXZSBjYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdXNlIGl0IGxhdGVyIHdoZW4gaGFuZGxpbmcgY2FsbGJhY2tzIGZyb21cbiAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBzaW5jZSBleGNlcHRpb25zIHJhaXNlZCB0byB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgZ28gdGhyb3VnaFxuICAgICBvdXIgb3JkaW5hcnkgQXN5bmMgbW9uaXRvci4gKilcbiAgbGV0IGN1cnJlbnRfY29udGV4dCA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSBpblxuICBsZXQgcmVxdWVzdF9pZHMgPSBSZXF1ZXN0X2lkcy5jcmVhdGUgKCkgaW5cbiAgbGV0IGNhbGxiYWNrICgpID1cbiAgICBpZiBSZXF1ZXN0X2lkcy5jYW5jZWxsZWQgcmVxdWVzdF9pZHNcbiAgICB0aGVuICgpXG4gICAgZWxzZSAoXG4gICAgICBSZXF1ZXN0X2lkcy5jYW5jZWwgcmVxdWVzdF9pZHM7XG4gICAgICBsZXQgY2FsbGJhY2tfcmVzdWx0ID1cbiAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoaW5fY29udGV4dCBjdXJyZW50X2NvbnRleHQgY2FsbGJhY2tcbiAgICAgIGluXG4gICAgICBpZ25vcmUgKGNhbGxiYWNrX3Jlc3VsdCA6ICh1bml0LCB1bml0KSBSZXN1bHQudCkpXG4gIGluXG4gIGxldCBhbmltYXRpb25fZnJhbWVfaWQgPVxuICAgIGxldCBhbmltYXRpb25fY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSBhbmltYXRpb25fY2FsbGJhY2tcbiAgaW5cbiAgbGV0IHNldF90aW1lb3V0X2lkID1cbiAgICBsZXQgdGltZW91dF9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgICgqIDEwMDAgbXMgPSAxczsgIENob3NlbiBiZWNhdXNlIGJhY2tncm91bmRlZCB0YW5nbGUgc2VuZHMgcmVxdWVzdHNcbiAgICAgICBhdCBhcHByb3hpbWF0ZWx5IHRoaXMgcmF0ZS4gKilcbiAgICBsZXQgdGltZW91dCA9IDEwMDAuMCBpblxuICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCB0aW1lb3V0X2NhbGxiYWNrIHRpbWVvdXRcbiAgaW5cbiAgUmVxdWVzdF9pZHMuc2V0X29uY2VfZXhuIHJlcXVlc3RfaWRzIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkXG47O1xuXG4oKiogVGhlIEpzX29mX29jYW1sIHR5cGUgRG9tX2h0bWwuZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9ucyBmb3JcbiAgICB0aGVpciBgZm9jdXNgIG1ldGhvZC4gQ2FzdCB0byB0aGlzIGluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLiAgKilcbnR5cGUgZm9jdXNhYmxlID1cbiAgPCBmb2N1cyA6IDwgcHJldmVudFNjcm9sbCA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wID4gSnMudCAtPiB1bml0IEpzLm1ldGggPlxuXG5sZXQgYXNfZm9jdXNhYmxlIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IGZvY3VzYWJsZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG4oKiogW1Zpc2liaWxpdHldIGVuY2Fwc3VsYXRlcyB0aGUgZGlydHlpbmcgYW5kIGNsZWFuaW5nIG9mIHRoZSB2aXNpYmlsaXR5IGZsYWdcblxuICAgIFRoZSB2aWV3cG9ydCBzdGFydHMgb3V0IGRpcnR5LiBXaGVuIHdlIGxvb2sgYXQgdGhlIERPTSB0byBjb21wdXRlIHdoYXQgaXMgdmlzaWJsZSBieVxuICAgIGNhbGxpbmcgW3VwZGF0ZV92aXNpYmlsaXR5XSwgdGhlIHZpZXdwb3J0IHRoZW4gYmVjb21lcyBjbGVhbi4gQW55IHRpbWUgdGhlIHVzZXJcbiAgICBzY3JvbGxzIG91ciBwYWdlIG9yIHJlc2l6ZXMgdGhlIHdpbmRvdywgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4uIElmIHdlIHVwZGF0ZVxuICAgIHRoZSBET00sIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluIGJlY2F1c2UgYSBET00gdXBkYXRlIGNvdWxkIGNhdXNlIGEgcmVmbG93LFxuICAgIG1vdmluZyB0aGUgZWxlbWVudHMgdGhhdCBhcmUgdmlzaWJsZS5cblxuICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBhcyBhIGZsYWcgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIHVzZXJzIHRvIHNlbmQgYW4gYWN0aW9uIG9uXG4gICAgc2Nyb2xsIGJlY2F1c2UgaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IG9uIHRoZSB2aXJ0dWFsLWRvbVxuICAgIHdoZW4gdGhlIHZpcnR1YWwtZG9tIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZG9tIChhcyBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAgW2FwcGx5X2FjdGlvbnNdKS4gKilcbm1vZHVsZSBWaXNpYmlsaXR5IDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGVfYXNfZGlydHkgOiB1bml0IC0+IHRcbiAgdmFsIG1hcmtfY2xlYW4gOiB0IC0+IHVuaXRcbiAgdmFsIG1hcmtfZGlydHkgOiB0IC0+IHVuaXRcbiAgdmFsIGlzX2RpcnR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBtdXRhYmxlIHdoZW5fZGlydHkgOiB1bml0IEl2YXIudCB9XG5cbiAgbGV0IGNyZWF0ZV9hc19kaXJ0eSAoKSA9IHsgd2hlbl9kaXJ0eSA9IEl2YXIuY3JlYXRlX2Z1bGwgKCkgfVxuICBsZXQgbWFya19kaXJ0eSB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQud2hlbl9kaXJ0eSAoKVxuICBsZXQgaXNfZGlydHkgdCA9IEl2YXIuaXNfZnVsbCB0LndoZW5fZGlydHlcbiAgbGV0IG1hcmtfY2xlYW4gdCA9IGlmIGlzX2RpcnR5IHQgdGhlbiB0LndoZW5fZGlydHkgPC0gSXZhci5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgTG9nZ2luZ19maWx0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19ibGFuZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgQmxhbmcudCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxcbiAgICB8IE5vbmVcbiAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBvZiBTdHJpbmdfYmxhbmcudFxuICAgIHwgQ3VzdG9tX2ZpbHRlciBvZiAoU2V4cC50IC0+IGJvb2wpXG5lbmRcblxubW9kdWxlIERlYnVnX2ZsYWdzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICB2YWwgaW5pdF9hcHBcbiAgICA6ICBhcHBfaWQ6c3RyaW5nXG4gICAgLT4gZmlsdGVyX25hbWVzOlN0cmluZy5TZXQudFxuICAgIC0+IGRlYnVnOmJvb2xcbiAgICAtPiBzdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgbW9kdWxlIEFwcF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbHRlcl9uYW1lcyA6IFN0cmluZy5TZXQudFxuICAgICAgOyBsb2dnaW5nX2ZpbHRlciA6IExvZ2dpbmdfZmlsdGVyLnQgcmVmXG4gICAgICA7IHNob3VsZF9wcm9maWxlIDogYm9vbCByZWZcbiAgICAgIDsgc2hvdWxkX2RlYnVnIDogYm9vbCByZWZcbiAgICAgIH1cblxuICAgIGxldCBzZXRfbG9nZ2luZ19maWx0ZXIgdCB+bG9nZ2luZ19maWx0ZXIgPSB0LmxvZ2dpbmdfZmlsdGVyIDo9IGxvZ2dpbmdfZmlsdGVyXG4gICAgbGV0IHNldF9zaG91bGRfcHJvZmlsZSB0IH5zaG91bGRfcHJvZmlsZSA9IHQuc2hvdWxkX3Byb2ZpbGUgOj0gc2hvdWxkX3Byb2ZpbGVcbiAgICBsZXQgc2V0X3Nob3VsZF9kZWJ1ZyB0IH5zaG91bGRfZGVidWcgPSB0LnNob3VsZF9kZWJ1ZyA6PSBzaG91bGRfZGVidWdcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBnbG9iYWwgPVxuICAgIG9iamVjdFxuICAgICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0FsbCA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0TG9nZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQ3VzdG9tIDpcbiAgICAgICAgKChKcy5qc19zdHJpbmcgSnMudCAtPiBib29sIEpzLnQpIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wTG9nZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0UHJvZmlsaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RvcFByb2ZpbGluZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0YXJ0RGVidWdnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RvcERlYnVnZ2luZyA6XG4gICAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHNhdmVJbmNyZW1lbnRhbEdyYXBoIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBlbmRcblxuICBsZXQgZ2xvYmFsIDogZ2xvYmFsIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsXG4gIGxldCBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiAgbGV0IGFwcF9zdGF0ZXMgOiBBcHBfc3RhdGUudCBTdHJpbmcuVGFibGUudCA9IFN0cmluZy5UYWJsZS5jcmVhdGUgKClcblxuICBsZXQgc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIlxcXCJcIiBeIHN0ciBeIFwiXFxcIlwiKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gIDs7XG5cbiAgbGV0IG11bHRpX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGluaXRfZ2xvYmFsICgpID1cbiAgICBsZXQgd2l0aF9hcHBfaWRfb3B0IHVwZGF0ZV9zdGF0ZSBhcHBfaWRfb3B0ID1cbiAgICAgIGxldCBhcHBfaWRfb3B0ID0gSnMuT3B0LnRvX29wdGlvbiBhcHBfaWRfb3B0IHw+IE9wdGlvbi5tYXAgfmY6SnMudG9fc3RyaW5nIGluXG4gICAgICBtYXRjaCBhcHBfaWRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBIYXNodGJsLml0ZXIgYXBwX3N0YXRlcyB+Zjp1cGRhdGVfc3RhdGVcbiAgICAgIHwgU29tZSBhcHBfaWQgLT5cbiAgICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBhcHBfc3RhdGVzIGFwcF9pZCB3aXRoXG4gICAgICAgICB8IFNvbWUgc3RhdGUgLT4gdXBkYXRlX3N0YXRlIHN0YXRlXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBhcHAgd2l0aCBpZCBcXFwiJXNcXFwiLiBWYWxpZCBhcHAgaWRzIGFyZTogJXNcIlxuICAgICAgICAgICAgIGFwcF9pZFxuICAgICAgICAgICAgIChIYXNodGJsLmtleXMgYXBwX3N0YXRlcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIGxvZ2dpbmdfZmlsdGVyID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlciB+bG9nZ2luZ19maWx0ZXIpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9wcm9maWxlIHNob3VsZF9wcm9maWxlID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfcHJvZmlsZSB+c2hvdWxkX3Byb2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9kZWJ1ZyBzaG91bGRfZGVidWcgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9kZWJ1ZyB+c2hvdWxkX2RlYnVnKVxuICAgIGluXG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQWxsIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBBbGwpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ1xuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBibGFuZ19zdHIgLT5cbiAgICAgIGxldCBibGFuZ19zdHIgPSBKcy50b19zdHJpbmcgYmxhbmdfc3RyIGluXG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKGZ1biBhcHBfc3RhdGUgLT5cbiAgICAgICAgbGV0IGJsYW5nID1cbiAgICAgICAgICBCbGFuZy50X29mX3NleHAgU3RyaW5nLnRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgYmxhbmdfc3RyKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaW52YWxpZF9uYW1lcyA9XG4gICAgICAgICAgQmxhbmcuZm9sZCBibGFuZyB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gaW52YWxpZF9uYW1lcyBuYW1lIC0+XG4gICAgICAgICAgICBpZiBTZXQubWVtIGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgbmFtZVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX25hbWVzXG4gICAgICAgICAgICBlbHNlIFNldC5hZGQgaW52YWxpZF9uYW1lcyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBpZiBTZXQuaXNfZW1wdHkgaW52YWxpZF9uYW1lc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlclxuICAgICAgICAgICAgYXBwX3N0YXRlXG4gICAgICAgICAgICB+bG9nZ2luZ19maWx0ZXI6KE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBuYW1lZCBmaWx0ZXIocyk6ICVzLiBWYWxpZCBuYW1lcyBhcmU6XFxuJXNcIlxuICAgICAgICAgICAgKFNldC50b19saXN0IGludmFsaWRfbmFtZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KSkpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0N1c3RvbVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBmaWx0ZXIgLT5cbiAgICAgIGxldCBmaWx0ZXIgYWN0aW9uX3NleHAgPVxuICAgICAgICBhY3Rpb25fc2V4cCB8PiBTZXhwLnRvX3N0cmluZyB8PiBKcy5zdHJpbmcgfD4gZmlsdGVyIHw+IEpzLnRvX2Jvb2xcbiAgICAgIGluXG4gICAgICB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgKEN1c3RvbV9maWx0ZXIgZmlsdGVyKSk7XG4gICAgZ2xvYmFsIyMuc3RvcExvZ2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIE5vbmUpO1xuICAgIGdsb2JhbCMjLnN0YXJ0UHJvZmlsaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfcHJvZmlsZSB0cnVlKTtcbiAgICBnbG9iYWwjIy5zdG9wUHJvZmlsaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnREZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyB0cnVlKTtcbiAgICBnbG9iYWwjIy5zdG9wRGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnNhdmVJbmNyZW1lbnRhbEdyYXBoXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgZmlsZW5hbWUgPSBcImN1cnJlbnRfaW5jcl9kb21fZG90X2dyYXBoLmRvdFwiIGluXG4gICAgICBVaV9pbmNyLnNhdmVfZG90X3RvX2ZpbGUgZmlsZW5hbWU7XG4gICAgICBsZXQgY29udGVudHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZpbGVuYW1lIGluXG4gICAgICBWZG9tX2ZpbGVfZG93bmxvYWQuY3JlYXRlIH5maWxlbmFtZSB+bWltZXR5cGU6XCJwbGFpbi90ZXh0XCIgfmNvbnRlbnRzXG4gICAgICB8PiBWZG9tX2ZpbGVfZG93bmxvYWQudHJpZ2dlcik7XG4gICAgbGV0IGluaXRfbWVzc2FnZSA9XG4gICAgICBcIiBJbmNyX2RvbSBBY3Rpb24gTG9nZ2luZ1xcblxcXG4gICAgICBcXCA9PT09PT09PT09PT09PT09PT09PT09PVxcblxcXG4gICAgICBcXCBMb2dnaW5nIHByaW50cyBhY3Rpb24gaW5mbyB0byB0aGUgY29uc29sZS5cXG5cXFxuICAgICAgXFwgSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgbG9nZ2luZywgdHlwZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcXG5cXFxuICAgICAgXFwgXFx0c3RhcnRMb2dnaW5nQWxsKFthcHBfaWRdKSAtIGxvZyBhbGwgYWN0aW9uc1xcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmcoZmlsdGVyX25hbWUgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIHByZS1kZWZpbmVkIFxcXG4gICAgICAgbmFtZWQgZmlsdGVyIFtmaWx0ZXJfbmFtZV1cXG5cXFxuICAgICAgXFwgXFx0c3RhcnRMb2dnaW5nKGZpbHRlcl9uYW1lX2JsYW5nIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBibGFuZyBvZiBcXFxuICAgICAgIG5hbWVkIGZpbHRlcnMgW2ZpbHRlcl9uYW1lX2JsYW5nXVxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmdDdXN0b20oZmlsdGVyIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBjdXN0b20gZnVuY3Rpb24gXFxcbiAgICAgICBbZmlsdGVyXSBmcm9tIGEgc3RyaW5nICh0aGUgYWN0aW9uIHNleHApIHRvIGEgYm9vbFxcblxcXG4gICAgICBcXCBUbyBzdG9wIGxvZ2dpbmcsIHR5cGU6IHN0b3BMb2dnaW5nKFthcHBfaWRdKVxcblxcblxcXG4gICAgICBcXCBJbmNyX2RvbSBBY3Rpb24gUHJvZmlsaW5nXFxuXFxcbiAgICAgIFxcID09PT09PT09PT09PT09PT09PT09PT09PT1cXG5cXFxuICAgICAgXFwgUHJvZmlsaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuXFxuXFxcbiAgICAgIFxcIFRvIHN0YXJ0IHByb2ZpbGluZywgdHlwZTogc3RhcnRQcm9maWxpbmcoW2FwcF9pZF0pXFxuXFxcbiAgICAgIFxcIFRvIHN0b3AgcHJvZmlsaW5nLCB0eXBlOiBzdG9wUHJvZmlsaW5nKFthcHBfaWRdKVxcblxcblxcXG4gICAgICBcXCBJbmNyX2RvbSBEZWJ1Z2dpbmdcXG5cXFxuICAgICAgXFwgPT09PT09PT09PT09PT09PT09XFxuXFxcbiAgICAgIFxcIERlYnVnZ2luZyBwcmludHMgdGltaW5nIGluZm8gdG8gdGhlIGNvbnNvbGUuXFxuXFxcbiAgICAgIFxcIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhlIGFwcC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgZGVidWdnaW5nLCB0eXBlOiBzdGFydERlYnVnZ2luZyhbYXBwX2lkXSlcXG5cXFxuICAgICAgXFwgVG8gc3RvcCBkZWJ1Z2dpbmcsIHR5cGU6IHN0b3BEZWJ1Z2dpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIFthcHBfaWRdIGlzIGVxdWFsIHRvIHRoZSBpZCBvZiB0aGUgZWxlbWVudCB0aGF0IHRoZSBpbmNyLWRvbSBhcHAgaXMgYm91bmQgdG8uIElmIFxcXG4gICAgICAgdGhlIHBhZ2Ugb25seSBoYXMgb25lIGFwcCBvciB5b3Ugd2FudCB0byBhcHBseSB0aGUgYWN0aW9uIHRvIGFsbCBhcHBzLCB5b3UgY2FuIFxcXG4gICAgICAgcGFzcyBpbiBbbnVsbF0gKG9yIGZvciBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zLCBvbWl0IGl0IGFsdG9nZXRoZXIpLlwiXG4gICAgaW5cbiAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIGluaXRfbWVzc2FnZSlcbiAgOztcblxuICBsZXQgaW5pdF9hcHAgfmFwcF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcCA9XG4gICAgaWYgbm90ICFnbG9iYWxfaXNfaW5pdGlhbGl6ZWRcbiAgICB0aGVuIChcbiAgICAgIGluaXRfZ2xvYmFsICgpO1xuICAgICAgZ2xvYmFsX2lzX2luaXRpYWxpemVkIDo9IHRydWUpO1xuICAgIGxldCBhcHBfaW5pdF9tZXNzYWdlID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJBdmFpbGFibGUgbG9nZ2luZyBmaWx0ZXJzIGZvciBcXFwiJXNcXFwiOlxcbiVzXCJcbiAgICAgICAgYXBwX2lkXG4gICAgICAgIChTZXQudG9fbGlzdCBmaWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdClcbiAgICBpblxuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgYXBwX2luaXRfbWVzc2FnZSk7XG4gICAgbGV0IGxvZ2dpbmdfZmlsdGVyID0gcmVmIExvZ2dpbmdfZmlsdGVyLk5vbmUgaW5cbiAgICBsZXQgc2hvdWxkX3Byb2ZpbGUgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2hvdWxkX2RlYnVnID0gcmVmIGRlYnVnIGluXG4gICAgSGFzaHRibC5zZXRcbiAgICAgIGFwcF9zdGF0ZXNcbiAgICAgIH5rZXk6YXBwX2lkXG4gICAgICB+ZGF0YTp7IGZpbHRlcl9uYW1lczsgbG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfTtcbiAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPiBIYXNodGJsLnJlbW92ZSBhcHBfc3RhdGVzIGFwcF9pZCk7XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA9IChmdW4gKCkgLT4gIWxvZ2dpbmdfZmlsdGVyKVxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgPSAoZnVuICgpIC0+ICFzaG91bGRfcHJvZmlsZSlcbiAgICA7IHNob3VsZF9kZWJ1ZyA9IChmdW4gKCkgLT4gIXNob3VsZF9kZWJ1ZylcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQWRkcyB0aGUgbmVjZXNzYXJ5IGF0dHJpYnV0ZSB0byB0aGUgcm9vdCBub2RlIHNvIHRoYXQgaXQgY2FuIGludGVyY2VwdFxuICAga2V5Ym9hcmQgZXZlbnRzLlxuICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCAqKVxubGV0IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCByb290ID1cbiAgbGV0IG9wZW4gVmRvbSBpblxuICBsZXQgc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCA9XG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQuYXR0cnMgfD4gQXR0ci5FeHBlcnQuY29udGFpbnNfbmFtZSBcImRpc2FibGVfdGFiX2luZGV4XCIgfD4gbm90XG4gIGluXG4gIG1hdGNoIChyb290IDogTm9kZS50KSB3aXRoXG4gIHwgRWxlbWVudCBlbGVtZW50IHdoZW4gc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCAtPlxuICAgIGxldCBhZGRfbmV3X2F0dHJzIGF0dHJzID1cbiAgICAgIFZkb20uQXR0ci4oc3R5bGUgKENzc19nZW4ub3V0bGluZSB+c3R5bGU6YE5vbmUgKCkpIEAgdGFiaW5kZXggMCBAIGF0dHJzKVxuICAgIGluXG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQubWFwX2F0dHJzIH5mOmFkZF9uZXdfYXR0cnMgfD4gTm9kZS5FbGVtZW50XG4gIHwgXyAtPiByb290XG47O1xuXG5sZXQgZ2V0X3RhZ19uYW1lIChub2RlIDogVmRvbS5Ob2RlLnQpID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgRWxlbWVudCBlIC0+IFNvbWUgKFZkb20uTm9kZS5FbGVtZW50LnRhZyBlKVxuICB8IE5vbmUgfCBUZXh0IF8gfCBXaWRnZXQgXyAtPiBOb25lXG47O1xuXG5sZXQgc3RhcnRfYm9uc2FpXG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlByaXZhdGUuU19mb3JfYm9uc2FpXG4gICAgICAgIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWxcbiAgICAgICAgIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gICgqIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgc28gZmluZSB0byBkby4gKilcbiAgQXN5bmNfanMuaW5pdCAoKTtcbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JWJpbmQgKCkgPSBBc3luY19qcy5kb2N1bWVudF9sb2FkZWQgKCkgaW5cbiAgICAgbGV0IG1vZGVsX3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWwgPSBJbmNyLlZhci53YXRjaCBtb2RlbF92IGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5ID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiBpblxuICAgICBsZXQgY3V0b2ZmID1cbiAgICAgICBJbmNyLkN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT5cbiAgICAgICAgIEFwcC5Nb2RlbC5jdXRvZmYgb2xkX3ZhbHVlIG5ld192YWx1ZSlcbiAgICAgaW5cbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsIGN1dG9mZjtcbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IGN1dG9mZjtcbiAgICAgbGV0IGFjdGlvbl9xdWV1ZSA9IERlcXVlLmNyZWF0ZSAoKSBpblxuICAgICBsZXQgbW9kdWxlIEV2ZW50ID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmUgKHN0cnVjdFxuICAgICAgICAgbW9kdWxlIEFjdGlvbiA9IEFwcC5BY3Rpb25cblxuICAgICAgICAgbGV0IGhhbmRsZSBhY3Rpb24gPSBEZXF1ZS5lbnF1ZXVlX2JhY2sgYWN0aW9uX3F1ZXVlIGFjdGlvblxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LmNyZWF0ZV9hc19kaXJ0eSAoKSBpblxuICAgICBsZXQgdmlld3BvcnRfY2hhbmdlZCAoKSA9IFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5IGluXG4gICAgICgqIFRoaXMgcmVnaXN0ZXJzIHRoZSBbdmlld3BvcnRfY2hhbmdlZF0gaGFuZGxlciB3aXRoIFZpcnR1YWxfZG9tLiBJZiBldmVudCBoYW5kbGVyc1xuICAgICAgICB1c2UgdGhlIFtWZG9tLkVmZmVjdC5WaWV3cG9ydF9jaGFuZ2VkXSBldmVudCwgd2UgYXJlIG5vdGlmaWVkLiAqKVxuICAgICBsZXQgbW9kdWxlIF8gPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZV92aXNpYmlsaXR5IChzdHJ1Y3RcbiAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3cG9ydF9jaGFuZ2VkXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgZ2V0X3ZpZXcsIGdldF9hcHBseV9hY3Rpb24sIGdldF91cGRhdGVfdmlzaWJpbGl0eSwgZ2V0X29uX2Rpc3BsYXkgPVxuICAgICAgIGxldCBvYnMgPVxuICAgICAgICAgSW5jci5vYnNlcnZlXG4gICAgICAgICAgIChBcHAuY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6bW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgfmluamVjdDpFdmVudC5pbmplY3QpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZmV0Y2ggKGYgOiBfIEFwcF9pbnRmLlByaXZhdGUuc25hcHNob3QgLT4gXykgKCkgPVxuICAgICAgICAgZiAoSW5jci5PYnNlcnZlci52YWx1ZV9leG4gb2JzKVxuICAgICAgIGluXG4gICAgICAgKCBmZXRjaCAoZnVuIHsgdmlldzsgXyB9IC0+IHZpZXcpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgYXBwbHlfYWN0aW9uOyBfIH0gLT4gYXBwbHlfYWN0aW9uKVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IHVwZGF0ZV92aXNpYmlsaXR5OyBfIH0gLT4gdXBkYXRlX3Zpc2liaWxpdHkpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgb25fZGlzcGxheTsgXyB9IC0+IG9uX2Rpc3BsYXkpIClcbiAgICAgaW5cbiAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgIGxldCBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPVxuICAgICAgIChcImFsbFwiLCBGbi5jb25zdCB0cnVlKSA6OiAoXCJub25lXCIsIEZuLmNvbnN0IGZhbHNlKSA6OiBuYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICAgICB8PiBTdHJpbmcuVGFibGUub2ZfYWxpc3RfZXhuXG4gICAgIGluXG4gICAgIGxldCB7IERlYnVnX2ZsYWdzLmxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH0gPVxuICAgICAgIGxldCBmaWx0ZXJfbmFtZXMgPSBIYXNodGJsLmtleXMgbmFtZWRfbG9nZ2luZ19maWx0ZXJzIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgIERlYnVnX2ZsYWdzLmluaXRfYXBwIH5hcHBfaWQ6YmluZF90b19lbGVtZW50X3dpdGhfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3BcbiAgICAgaW5cbiAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICBsZXQgaHRtbF9kb20gPSBWZG9tLk5vZGUudG9fZG9tIGh0bWwgaW5cbiAgICAgbGV0IGVsZW0gPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9leG4gYmluZF90b19lbGVtZW50X3dpdGhfaWQgaW5cbiAgICAgbGV0IHBhcmVudCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAoSnMuT3B0LnRvX29wdGlvbiBlbGVtIyMucGFyZW50Tm9kZSkgaW5cbiAgICAgRG9tLnJlcGxhY2VDaGlsZCBwYXJlbnQgaHRtbF9kb20gZWxlbTtcbiAgICAgKCogd2UgbWFrZSBzdXJlIHRvIGNhbGwgW3ZpZXdwb3J0X2NoYW5nZWRdIHdoZW5ldmVyIHRoZSB3aW5kb3cgcmVzaXplcyBvciB0aGUgc2Nyb2xsXG4gICAgICAgIGNvbnRhaW5lciBpbiB3aGljaCBvdXIgSFRNTCBpcyBsb2NhdGVkIGlzIHNjcm9sbGVkLiAqKVxuICAgICBsZXQgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IGV2ZW50X25hbWUgd2hlcmUgPVxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgICB3aGVyZVxuICAgICAgICAgICAgKERvbS5FdmVudC5tYWtlIGV2ZW50X25hbWUpXG4gICAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICB2aWV3cG9ydF9jaGFuZ2VkICgpO1xuICAgICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gICAgIGluXG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInNjcm9sbFwiIChKc19taXNjLmdldF9zY3JvbGxfY29udGFpbmVyIGh0bWxfZG9tKTtcbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwicmVzaXplXCIgRG9tX2h0bWwud2luZG93O1xuICAgICBsZXQlYmluZCBzdGF0ZSA9XG4gICAgICAgQXBwLm9uX3N0YXJ0dXBcbiAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb246KGZ1biBhIC0+IFVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlIChFdmVudC5pbmplY3QgYSkpXG4gICAgICAgICAoSW5jci5WYXIudmFsdWUgbW9kZWxfdilcbiAgICAgaW5cbiAgICAgbGV0IHByZXZfaHRtbCA9IHJlZiBodG1sIGluXG4gICAgIGxldCBwcmV2X2VsdCA9IHJlZiBodG1sX2RvbSBpblxuICAgICBsZXQgcmVmb2N1c19yb290X2VsZW1lbnQgKCkgPVxuICAgICAgIGxldCBlbGVtZW50ID0gIXByZXZfZWx0IGluXG4gICAgICAgKCogSWYgdGhlIGVsZW1lbnQgdG8gZm9jdXMgaXMgYW4gZWxlbWVudCwgY2FzdCBpdCBpbnRvIHRoZVxuICAgICAgICAgIG1vcmUgcGVybWlzc2l2ZSBcImZvY3VzYWJsZVwiIHR5cGUgZGVmaW5lZCBhdCB0aGUgdG9wIG9mXG4gICAgICAgICAgdGhpcyBmaWxlLCBhbmQgdGhlbiBmb2N1cyB0aGF0LiAqKVxuICAgICAgIERvbV9odG1sLkNvZXJjZVRvLmVsZW1lbnQgZWxlbWVudFxuICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICB8PiBPcHRpb24ubWFwIH5mOmFzX2ZvY3VzYWJsZVxuICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4gZWxlbWVudCAtPlxuICAgICAgICAgZWxlbWVudCMjZm9jdXNcbiAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgIHZhbCBwcmV2ZW50U2Nyb2xsID0gSnMuX3RydWVcbiAgICAgICAgICAgZW5kKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0YXJ0IHMgPVxuICAgICAgIHRpbWVyX3N0YXJ0IHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0b3AgcyA9XG4gICAgICAgdGltZXJfc3RvcCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgICgqXG4gICAgICAgIFRha2UgYWN0aW9uIG9uIGFueSBibHVyIGV2ZW50LCByZWZvY3VzaW5nIHRvIHRoZSByb290IG5vZGUgaWYgdGhlIHJlbGF0ZWRUYXJnZXQgaXNcbiAgICAgICAgbnVsbCBvciB1bmRlZmluZWQsIHNpZ25pZnlpbmcgdGhhdCBmb2N1cyB3YXMgbG9zdCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIHJlc2V0IHRvXG4gICAgICAgIHRoZSBib2R5IG5vZGUuXG5cbiAgICAgICAgVGhlIEpzLl90cnVlIHBhcmFtZXRlciBwcm92aWRlZCB0byBEb20uYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdXNlQ2FwdHVyZVxuICAgICAgICBwYXJhbWV0ZXIgZGVzY3JpYmVkIGhlcmU6XG4gICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyXG4gICAgICopXG4gICAgIGlnbm9yZVxuICAgICBAQCBEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIERvbV9odG1sLndpbmRvd1xuICAgICAgICAgIERvbV9odG1sLkV2ZW50LmJsdXJcbiAgICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAoKiBbSnMuVW5zYWZlLipdIGlzIGxpa2UgW09iai5tYWdpY10uIFdlIHNob3VsZCBiZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlXG4gICAgICAgICAgICAgICAgZXhwZWN0LiAqKVxuICAgICAgICAgICAgIGxldCBlXG4gICAgICAgICAgICAgICA6IDwgcmVsYXRlZFRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcCA+XG4gICAgICAgICAgICAgICAgICAgSnMudFxuICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgcmVsYXRlZF90YXJnZXQgPSBlIyMucmVsYXRlZFRhcmdldCBpblxuICAgICAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgcmVsYXRlZF90YXJnZXQpIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKCk7XG4gICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgIEpzLl90cnVlO1xuICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgKCkgPVxuICAgICAgIFZpc2liaWxpdHkubWFya19jbGVhbiB2aXNpYmlsaXR5O1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF91cGRhdGVfdmlzaWJpbGl0eSAoKSlcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICBpblxuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF92IG5ld19tb2RlbDtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIlxuICAgICBpblxuICAgICBsZXQgbWF5YmVfbG9nX2FjdGlvbiA9XG4gICAgICAgbGV0IHNhZmVfZmlsdGVyIH5uYW1lIGZpbHRlciBhY3Rpb24gPVxuICAgICAgICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmaWx0ZXIgYWN0aW9uKSB3aXRoXG4gICAgICAgICB8IE9rIHNob3VsZF9sb2cgLT4gc2hvdWxkX2xvZ1xuICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmICFcIkV4Y2VwdGlvbiByYWlzZWQgYnkgJXM6ICV7RXJyb3IjaHVtfVwiIG5hbWUgZXJyO1xuICAgICAgICAgICBmYWxzZVxuICAgICAgIGluXG4gICAgICAgbGV0IG5hbWVkX2ZpbHRlcl9ibGFuZ19jYWNoZSA9XG4gICAgICAgICBDb3JlLk1lbW8ub2ZfY29tcGFyYWJsZVxuICAgICAgICAgICAobW9kdWxlIExvZ2dpbmdfZmlsdGVyLlN0cmluZ19ibGFuZylcbiAgICAgICAgICAgKGZ1biBibGFuZyAtPlxuICAgICAgICAgICAgICBsZXQgZmlsdGVyID0gSGFzaHRibC5maW5kX2V4biBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgaW5cbiAgICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgICB+bmFtZTooc3ByaW50ZiAhXCJuYW1lZCBmaWx0ZXIgYmxhbmcgXFxcIiV7c2V4cDpzdHJpbmcgQmxhbmcudH1cXFwiXCIgYmxhbmcpXG4gICAgICAgICAgICAgICAgKG1hdGNoIGJsYW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBCYXNlIG5hbWUgLT4gZmlsdGVyIG5hbWVcbiAgICAgICAgICAgICAgICAgfCBfIC0+IGZ1biBhY3Rpb24gLT4gQmxhbmcuZXZhbCBibGFuZyAoZnVuIG5hbWUgLT4gZmlsdGVyIG5hbWUgYWN0aW9uKSkpXG4gICAgICAgaW5cbiAgICAgICBmdW4gYWN0aW9uIC0+XG4gICAgICAgICBsZXQgc2hvdWxkX2xvZ19hY3Rpb24gPVxuICAgICAgICAgICBtYXRjaCBsb2dnaW5nX2ZpbHRlciAoKSB3aXRoXG4gICAgICAgICAgIHwgQWxsIC0+IHRydWVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nIC0+IG5hbWVkX2ZpbHRlcl9ibGFuZ19jYWNoZSBibGFuZyBhY3Rpb25cbiAgICAgICAgICAgfCBDdXN0b21fZmlsdGVyIGZpbHRlciAtPlxuICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICB+bmFtZTpcImN1c3RvbSBmaWx0ZXJcIlxuICAgICAgICAgICAgICAgKGZ1biBhY3Rpb24gLT4gZmlsdGVyIChBcHAuQWN0aW9uLnNleHBfb2ZfdCBhY3Rpb24pKVxuICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgaWYgc2hvdWxkX2xvZ19hY3Rpb25cbiAgICAgICAgIHRoZW4gQXN5bmNfanMubG9nX3NfYXNfc3RyaW5nIFslbWVzc2FnZSBcIkFjdGlvblwiIChhY3Rpb24gOiBBcHAuQWN0aW9uLnQpXVxuICAgICBpblxuICAgICBsZXQgYXBwbHlfYWN0aW9uIGFjdGlvbiA9XG4gICAgICAgbWF5YmVfbG9nX2FjdGlvbiBhY3Rpb247XG4gICAgICAgaWYgQXBwLmFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIGFjdGlvblxuICAgICAgIHRoZW4gKFxuICAgICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiO1xuICAgICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplLWZvci1hY3Rpb25cIilcbiAgICAgICBlbHNlIGlmIHNob3VsZF9kZWJ1ZyAoKVxuICAgICAgIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiYWN0aW9uIGFwcGxpZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiKTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfYXBwbHlfYWN0aW9uICgpKVxuICAgICAgICAgICBzdGF0ZVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgICAgICBhY3Rpb25cbiAgICAgICBpblxuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF92IG5ld19tb2RlbFxuICAgICBpblxuICAgICBsZXQgcmVjIGFwcGx5X2FjdGlvbnMgKCkgPVxuICAgICAgIG1hdGNoIERlcXVlLmRlcXVldWVfZnJvbnQgYWN0aW9uX3F1ZXVlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgYWN0aW9uIC0+XG4gICAgICAgICBhcHBseV9hY3Rpb24gYWN0aW9uO1xuICAgICAgICAgYXBwbHlfYWN0aW9ucyAoKVxuICAgICBpblxuICAgICBsZXQgcGVyZm9ybV91cGRhdGUgKCkgPVxuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgKCogVGhlIGNsb2NrIGlzIHNldCBvbmx5IG9uY2UgcGVyIGNhbGwgdG8gcGVyZm9ybV91cGRhdGUsIHNvIHRoYXQgYWxsIGFjdGlvbnMgdGhhdFxuICAgICAgICAgIG9jY3VyIGJlZm9yZSBlYWNoIGRpc3BsYXkgdXBkYXRlIG9jY3VyIFwiYXQgdGhlIHNhbWUgdGltZS5cIiAqKVxuICAgICAgIGxldCBub3cgPVxuICAgICAgICAgbGV0IGRhdGUgPSBuZXclanMgSnMuZGF0ZV9ub3cgaW5cbiAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9tcyBkYXRlIyNnZXRUaW1lIHw+IFRpbWVfbnMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgIGluXG4gICAgICAgSW5jci5DbG9jay5hZHZhbmNlX2Nsb2NrIEluY3IuY2xvY2sgfnRvXzpub3c7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidG90YWxcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInVwZGF0ZSB2aXNpYmlsaXR5XCI7XG4gICAgICAgaWYgVmlzaWJpbGl0eS5pc19kaXJ0eSB2aXNpYmlsaXR5IHRoZW4gdXBkYXRlX3Zpc2liaWxpdHkgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInVwZGF0ZSB2aXNpYmlsaXR5XCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgYXBwbHlfYWN0aW9ucyAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgICBsZXQgaHRtbCA9IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCBodG1sIGluXG4gICAgICAgdGltZXJfc3RhcnQgXCJkaWZmXCI7XG4gICAgICAgbGV0IHBhdGNoID0gVmRvbS5Ob2RlLlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6IXByZXZfaHRtbCB+Y3VycmVudDpodG1sIGluXG4gICAgICAgdGltZXJfc3RvcCBcImRpZmZcIjtcbiAgICAgICBpZiBub3QgKFZkb20uTm9kZS5QYXRjaC5pc19lbXB0eSBwYXRjaCkgdGhlbiBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eTtcbiAgICAgICB0aW1lcl9zdGFydCBcInBhdGNoXCI7XG4gICAgICAgbGV0IGVsdCA9IFZkb20uTm9kZS5QYXRjaC5hcHBseSBwYXRjaCAhcHJldl9lbHQgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwicGF0Y2hcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICAoZ2V0X29uX2Rpc3BsYXkgKCkpIHN0YXRlIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZTtcbiAgICAgICB0aW1lcl9zdG9wIFwib25fZGlzcGxheVwiO1xuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IChJbmNyLlZhci52YWx1ZSBtb2RlbF92KTtcbiAgICAgICBsZXQgb2xkX3RhZ19uYW1lID0gZ2V0X3RhZ19uYW1lICFwcmV2X2h0bWwgaW5cbiAgICAgICBsZXQgbmV3X3RhZ19uYW1lID0gZ2V0X3RhZ19uYW1lIGh0bWwgaW5cbiAgICAgICBsZXQgdGFnc190aGVfc2FtZSA9IE9wdGlvbi5lcXVhbCBTdHJpbmcuZXF1YWwgb2xkX3RhZ19uYW1lIG5ld190YWdfbmFtZSBpblxuICAgICAgIHByZXZfaHRtbCA6PSBodG1sO1xuICAgICAgIHByZXZfZWx0IDo9IGVsdDtcbiAgICAgICB0aW1lcl9zdG9wIFwidG90YWxcIjtcbiAgICAgICBpZiBzaG91bGRfZGVidWcgKCkgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCItLS0tLS0tXCIpO1xuICAgICAgICgqIENoYW5naW5nIHRoZSB0YWcgbmFtZSBjYXVzZXMgZm9jdXMgdG8gYmUgbG9zdC4gIFJlZm9jdXMgaW4gdGhhdCBjYXNlLiAqKVxuICAgICAgIGlmIG5vdCB0YWdzX3RoZV9zYW1lIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKClcbiAgICAgaW5cbiAgICAgKCogV2UgdXNlIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gc28gdGhhdCBicm93c2VyIHRlbGxzIHVzIHdoZXJlIGl0J3MgdGltZSB0b1xuICAgICAgICByZWZyZXNoIHRoZSBVSS4gQWxsIHRoZSBhY3Rpb25zIHdpbGwgYmUgcHJvY2Vzc2VkIGFuZCB0aGUgY2hhbmdlcyBwcm9wYWdhdGVkXG4gICAgICAgIHRvIHRoZSBET00gaW4gb25lIGZyYW1lLiAqKVxuICAgICBsZXQgcmVjIGNhbGxiYWNrICgpID1cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICAgICB0aGVuICgpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrKVxuICAgICBpblxuICAgICAoKiBXZSB3YW50IHRoZSByb290IGVsZW1lbnQgdG8gc3RhcnQgb3V0IGZvY3VzZWQsIHNvIHBlcmZvcm0gYW4gaW5pdGlhbFxuICAgICAgICB1cGRhdGUvcmVuZGVyLCB0aGVuIGltbWVkaWF0ZWx5IGZvY3VzIHRoZSByb290ICh1bmxlc3MgYSBub24tYm9keSBlbGVtZW50IGFscmVhZHlcbiAgICAgICAgaGFzIGZvY3VzKS4gIFRoaXMgZm9jdXNpbmcgY2FuJ3QgaGFwcGVuIGluc2lkZSBvZiB0aGUgYGNhbGxiYWNrYCBiZWNhdXNlIHRoZW4gaXRcbiAgICAgICAgd291bGQgcmVmb2N1cyByb290IGV2ZXJ5IGZyYW1lLiAgKilcbiAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgIChtYXRjaCBKcy5PcHQudG9fb3B0aW9uIERvbV9odG1sLmRvY3VtZW50IyMuYWN0aXZlRWxlbWVudCB3aXRoXG4gICAgICB8IFNvbWUgZWwgLT4gaWYgSnMuT3B0LnRlc3QgKERvbV9odG1sLkNvZXJjZVRvLmJvZHkgZWwpIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKClcbiAgICAgIHwgTm9uZSAtPiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSk7XG4gICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrO1xuICAgICBEZWZlcnJlZC5uZXZlciAoKSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzdGFydF9ib25zYWkgPSBzdGFydF9ib25zYWlcbmVuZFxuXG5sZXQgc3RhcnRcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUyB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gIHN0YXJ0X2JvbnNhaVxuICAgIH5kZWJ1Z1xuICAgIH5zdG9wXG4gICAgfm5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgIH5pbml0aWFsX21vZGVsXG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQXBwXG5cbiAgICAgIGxldCBhY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBfID0gdHJ1ZVxuXG4gICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCA9XG4gICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICBsZXQlbWFwIGNvbXBvbmVudCA9IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgaW5cbiAgICAgICAgbGV0IHZpZXcgPSBDb21wb25lbnQudmlldyBjb21wb25lbnQgaW5cbiAgICAgICAgbGV0IGFwcGx5X2FjdGlvbiBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgX21vZGVsIGFjdGlvbiA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC5hcHBseV9hY3Rpb24gY29tcG9uZW50IGFjdGlvbiBzdGF0ZSB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSBfbW9kZWwgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LnVwZGF0ZV92aXNpYmlsaXR5IGNvbXBvbmVudCB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvbl9kaXNwbGF5IHN0YXRlIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC5vbl9kaXNwbGF5IGNvbXBvbmVudCBzdGF0ZSB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIHsgQXBwX2ludGYuUHJpdmF0ZS52aWV3OyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5IH1cbiAgICAgIDs7XG4gICAgZW5kKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbS5WZG9tXG5pbmNsdWRlIFZkb21faW5wdXRfd2lkZ2V0c19pbnRmXG5cbm1vZHVsZSBEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB0KVxuICAgIHRoZW4gZmFpbHdpdGhmIFwiQ2Fubm90IHJlcHJlc2VudCBub24tZmluaXRlIGZsb2F0IGFzIGRlY2ltYWw6ICVmXCIgdCAoKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHQgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGludmFyaWFudCB0O1xuICAgIHNwcmludGYgXCIlLjEyZ1wiIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBJbml0aWFsXG4gICAgKCogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIG1hcmtpbmcgYXMgaW52YWxpZCBhIGZpZWxkIHRoYXQgaGFzbid0IGV2ZXIgYmVlblxuICAgICAgIHRvdWNoZWQgYnkgdGhlIHVzZXIsIHRvIGltcHJvdmUgVVguICopXG4gICAgfCBWYWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgIHwgSW52YWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nXG4gICAgICAgIDsgbGFzdF92YWxpZCA6ICdhIG9wdGlvblxuICAgICAgICA7IGVycm9yIDogc3RyaW5nXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICB0eXBlICdhIHVwZGF0ZSA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgbGlmdCAodHlwZSBhKSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBhIHRcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgSW5pdGlhbCAtPiBcIlwiXG4gICAgICAgIHwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgPSBfIH0gLT4gaW5wdXRcbiAgICAgICAgfCBWYWxpZCB7IGlucHV0OyB2YWx1ZSB9IC0+XG4gICAgICAgICAgKG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGlucHV0IC0+IGlucHV0XG4gICAgICAgICAgIHwgTm9uZSAtPiBNLnRvX3N0cmluZyB2YWx1ZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBWYWxpZCB7IGlucHV0ID0gU29tZSBzOyB2YWx1ZSA9IE0ub2Zfc3RyaW5nIHMgfSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IEludmFsaWQgeyBpbnB1dCA9IHM7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciA9IEV4bi50b19zdHJpbmcgZXhuIH1cbiAgICAgIDs7XG4gICAgZW5kIDogU3RyaW5nYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA9IGEgdClcbiAgOztcblxuICBsZXQgaW5pdGlhbF9lbXB0eSA9IEluaXRpYWxcbiAgbGV0IHJldHVybiB2YWx1ZSA9IFZhbGlkIHsgaW5wdXQgPSBOb25lOyB2YWx1ZSB9XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgXyB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfSAtPiBsYXN0X3ZhbGlkXG4gICAgfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgfCBWYWxpZCBfIC0+IE5vbmVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+IFNvbWUgZXJyb3JcbiAgOztcblxuICBsZXQgaXNfaW52YWxpZCA9IGZ1bmN0aW9uXG4gICAgfCBJbnZhbGlkIF8gLT4gdHJ1ZVxuICAgIHwgVmFsaWQgXyB8IEluaXRpYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfaW5pdGlhbF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgdXBkYXRlIG9sZCBuZXdfID1cbiAgICBtYXRjaCBvbGQsIG5ld18gd2l0aFxuICAgIHwgSW5pdGlhbCwgXyAtPiBuZXdfXG4gICAgfCBfLCBWYWxpZCBfIC0+IG5ld19cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSA9IG9sZCB9LCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBTb21lIG9sZDsgZXJyb3IgfVxuICAgIHwgKCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfVxuICAgICAgLCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciB9ICkgLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZDsgZXJyb3IgfVxuICAgIHwgSW52YWxpZCBfLCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gU29tZSBfOyBlcnJvciA9IF8gfSAtPiBuZXdfXG4gICAgfCBfLCBJbml0aWFsIC0+IG9sZFxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9pbnZhbGlkIHZhbGlkYXRlZCBhdHRycyA9XG4gIGlmIFZhbGlkYXRlZC5pc19pbnZhbGlkIHZhbGlkYXRlZFxuICB0aGVuIEF0dHIuY3JlYXRlIFwiYXJpYS1pbnZhbGlkXCIgXCJ0cnVlXCIgOjogYXR0cnNcbiAgZWxzZSBhdHRyc1xuOztcblxubW9kdWxlIFRpbWVfY29tcGF0ID0gc3RydWN0XG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFRpbWVfbnMuT2ZkYXkudFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nXG5cbiAgICAoKiBUaGUgYnJvd3NlciBleHBlY3RzIGEgSEg6bW0gZm9ybWF0IHdpdGggb3B0aW9uYWwgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIjtcbiAgICAgICBbVGltZV9ucy5PZmRheS50b19zdHJpbmddIHByb3ZpZGVzIHByZWNpc2lvbiBpbiBuYW5vc2Vjb25kcywgd2hpY2ggaXMgdG9vIG11Y2guICopXG4gICAgbGV0IHRvX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkudG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4gIGVuZFxuXG4gIGxldCB6b25lZCB6b25lIDogKG1vZHVsZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBUaW1lX25zLnQpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVGltZV9ucy50XG5cbiAgICAgICgqIEZvcm1hdCBmcm9tIHRoZSBicm93c2VyOiB5eXl5LU1NLWRkVGhoOm1tICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgcGFydHMgPSBTdHJpbmcuc3BsaXRfb25fY2hhcnMgcyB+b246WyAnVCc7ICc6JyBdIGluXG4gICAgICAgIGxldCBkYXRlID0gTGlzdC5udGhfZXhuIHBhcnRzIDAgfD4gRGF0ZS5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IGhyID0gTGlzdC5udGhfZXhuIHBhcnRzIDEgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgbWluID0gTGlzdC5udGhfZXhuIHBhcnRzIDIgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBUaW1lX25zLk9mZGF5LmNyZWF0ZSB+aHIgfm1pbiAoKSBpblxuICAgICAgICBUaW1lX25zLm9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IHMgPSBUaW1lX25zLnRvX3N0cmluZ19pc284NjAxX2Jhc2ljIH56b25lIHQgaW5cbiAgICAgICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0IGEgeXl5eS1NTS1kZFRoaDptbSBmb3JtYXQgYW5kIGl0IGFsbG93c1xuICAgICAgICAgICB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiLlxuXG4gICAgICAgICAgIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIGZvcm1hdDogMjAxOS0wMS0zMFQwMTowMDowMC4wMDAwMDAwMDArMDE6MDBcblxuICAgICAgICAgICBkZXNpcmVkIGZvcm1hdCBhZnRlciBjdXR0aW5nOiAgIDIwMTktMDEtMzBUMDE6MDA6MDBcbiAgICAgICAgKilcbiAgICAgICAgU3RyaW5nLmxzcGxpdDJfZXhuIH5vbjonLicgcyB8PiBUdXBsZTIuZ2V0MVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCBhdHRycyA9IGlmIGRpc2FibGVkIHRoZW4gQXR0ci5kaXNhYmxlZCA6OiBhdHRycyBlbHNlIGF0dHJzXG5sZXQgYWRkX2F0dHJzIGF0dHJzJyBhdHRycyA9IGF0dHJzIEAgYXR0cnMnIHw+IEF0dHJzLm1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc1xuXG5sZXQgc3RydWN0dXJhbF9saXN0ID8ob3JpZW50YXRpb24gPSBgVmVydGljYWwpIGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGxheW91dF9zdHlsZSA9XG4gICAgbWF0Y2ggb3JpZW50YXRpb24gd2l0aFxuICAgIHwgYFZlcnRpY2FsIC0+IENzc19nZW4uKGRpc3BsYXkgYEJsb2NrKVxuICAgIHwgYEhvcml6b250YWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgSW5saW5lX2Jsb2NrKVxuICBpblxuICBOb2RlLnVsXG4gICAgfmF0dHI6XG4gICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgIChbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImxpc3Qtc3R5bGVcIiB+dmFsdWU6XCJub25lXCIgQD4gbWFyZ2luX2xlZnQgKGBQeCAwKSlcbiAgICAgICAgICBdXG4gICAgICAgICAgfD4gYWRkX2F0dHJzIGF0dHJzKSlcbiAgICAoTGlzdC5tYXAgY2hpbGRyZW4gfmY6KGZ1biBjaGlsZCAtPiBOb2RlLmxpIH5hdHRyOihBdHRyLnN0eWxlIGxheW91dF9zdHlsZSkgWyBjaGlsZCBdKSlcbjs7XG5cbm1vZHVsZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmUgPSBKc19vZl9vY2FtbC5Kcy5VbnNhZmVcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG5cbiAgbGV0IGlzX2FjdGl2ZSBlbGVtZW50ID1cbiAgICBsZXQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQgPSBVbnNhZmUuZ2V0IGRvY3VtZW50IChKcy5zdHJpbmcgXCJhY3RpdmVFbGVtZW50XCIpIGluXG4gICAgcGh5c19lcXVhbCBlbGVtZW50IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50XG4gIDs7XG5cbiAgbGV0IHZhbHVlX3Byb3BlcnR5ID0gSnMuc3RyaW5nIFwidmFsdWVcIlxuICBsZXQgZ2V0X3ZhbHVlIGVsZW1lbnQgOiAnYSBKcy50ID0gVW5zYWZlLmdldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5XG4gIGxldCBzZXRfdmFsdWUgZWxlbWVudCB2YWx1ZSA9IFVuc2FmZS5zZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eSB2YWx1ZVxuXG4gIGxldCBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiA9XG4gICAgKCogVGhpcyBldmVudCBoYW5kbGVyIG5vcm1hbGl6ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBlbGVtZW50IG9uIHRoZSBbY2hhbmdlXSBldmVudC5cbiAgICAgICBGb3IgYSB0ZXh0IGVudHJ5LCB0aGlzIG1lYW5zIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlciwgYW5kIHdoZW4gdGhlIHVzZXIgYmx1cnNcbiAgICAgICB0aGUgZWxlbWVudC4gV2h5IGRvbid0IHdlIHNpbXBseSBbdG9fc3RyaW5nXSB0aGUgdmFsdWUgaW4gdGhlIG1vZGVsPyBCZWNhdXNlIGZvclxuICAgICAgIHNvbWUgaW5wdXQgZWxlbWVudHMsIHlvdSBjYW4gaGF2ZSBhIGNoYW5nZSBldmVudCB0aGF0IGZpcmVzIGFmdGVyIHRoZSB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgYnV0IGJlZm9yZSBbSW5jcl9kb21dIGNhbiB1cGRhdGUgdGhlIG1vZGVsLiBGb3IgZXhhbXBsZSwgdGhpcyBoYXBwZW5zIHdoZW4geW91XG4gICAgICAgcHJlc3MgdGhlIHVwIGFycm93IG9uIGEgbnVtYmVyIGlucHV0LiBUaGlzIGxlYWRzIHRvIGEgYnVnIHdoZXJlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgICAgICBtb2RlbCBzd2FwcyBiYWNrIGFuZCBmb3J0aCB3aXRoIHRoZSB2YWx1ZSBpbiB0aGUgZWxlbWVudC4gKilcbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgXyA9XG4gICAgICBsZXQgdmFsdWUgPSBKcy50b19zdHJpbmcgKGdldF92YWx1ZSBlbGVtZW50KSBpblxuICAgICAgT3B0aW9uLml0ZXIgKGYgdmFsdWUpIH5mOihmdW4gbm9ybWFsaXplZCAtPlxuICAgICAgICBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIG5vcm1hbGl6ZWQpKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgPSBEb20uaGFuZGxlciBjaGFuZ2VfaGFuZGxlciBpblxuICAgIGFkZEV2ZW50TGlzdGVuZXIgZWxlbWVudCBFdmVudC5jaGFuZ2UgY2hhbmdlX2hhbmRsZXIgSnMuX2ZhbHNlXG4gIDs7XG5cbiAgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBldmVudF9pZCA6IGV2ZW50X2xpc3RlbmVyX2lkIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyB2YWx1ZSA6IHN0cmluZ1xuICAgICAgICA7IGYgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgICB9XG5cbiAgICAgIGxldCBzZXhwX29mX3QgeyB2YWx1ZTsgXyB9ID0gU2V4cC5BdG9tIHZhbHVlXG4gICAgICBsZXQgY29tYmluZSBfbGVmdCByaWdodCA9IHJpZ2h0XG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCB7IElucHV0LnZhbHVlOyBmIH0gZWxlbWVudCA9XG4gICAgICBpZiBub3QgKGlzX2FjdGl2ZSBlbGVtZW50KSB0aGVuIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgdmFsdWUpO1xuICAgICAgbGV0IGV2ZW50X2lkID0gaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgaW5cbiAgICAgIHsgU3RhdGUuZXZlbnRfaWQgfVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgX2lucHV0IHsgU3RhdGUuZXZlbnRfaWQgfSBfZWxlbWVudCA9IHJlbW92ZUV2ZW50TGlzdGVuZXIgZXZlbnRfaWRcblxuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0IHN0YXRlIGVsZW1lbnQgPVxuICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgIGxldCB7IFN0YXRlLmV2ZW50X2lkIH0gPSBpbml0IG5ld19pbnB1dCBlbGVtZW50IGluXG4gICAgICBzdGF0ZS5TdGF0ZS5ldmVudF9pZCA8LSBldmVudF9pZFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgQXR0ci5Ib29rcy5NYWtlIChNKVxuXG4gICgqIFtjcmVhdGUgdmFsdWUgfmZdIHdpbGwgc2V0IHRoZSBcInZhbHVlXCIgcHJvcGVydHkgdG8gW3ZhbHVlXSBpZiB0aGUgZWxlbWVudCBpcyBub3RcbiAgICAgZm9jdXNlZCBhbmQgb24gZWFjaCBjaGFuZ2UsIHJ1biB0aGUgY3VycmVudCB2YWx1ZSB0aHJvdWdoIFtmXSB0byByZS1zZXQgaXQuIEFnYWluLFxuICAgICB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGUgZWxlbWVudCBpcyBub3QgZm9jdXNlZC4gSWYgW2ZdIHJldHVybnMgW05vbmVdLCBubyBjaGFuZ2VcbiAgICAgdGFrZXMgcGxhY2UuICopXG4gIGxldCBjcmVhdGUgdmFsdWUgfmYgPSBBdHRyLmNyZWF0ZV9ob29rIFwidmFsdWU6bm9ybWFsaXplZFwiIChjcmVhdGUgeyB2YWx1ZTsgZiB9KVxuZW5kXG5cbm1vZHVsZSBEcm9wZG93biA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIE5vZGUuc2VsZWN0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIuY2xhc3NfIFwid2lkZ2V0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBfIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgb25fY2hhbmdlIChJbnQub2Zfc3RyaW5nIHZhbHVlIHw+IExpc3QubnRoX2V4biB2YWx1ZXMpKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgKExpc3QubWFwaSB2YWx1ZXMgfmY6KGZ1biBpbmRleCB2YWx1ZSAtPlxuICAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAgWyBBdHRyLnZhbHVlIChJbnQudG9fc3RyaW5nIGluZGV4KVxuICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiAoZXF1YWwgdmFsdWUgc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgWyBOb2RlLnRleHQgKHRvX3N0cmluZyB2YWx1ZSkgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpNLmVxdWFsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIHZhbHVlcyB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OlwiXCIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICBNLmFsbFxuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl9lbnVtX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCBNLmFsbCB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OlwiXCIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2JveCA9IHN0cnVjdFxuICBsZXQgaW1wbCA/KGV4dHJhX2F0dHJzID0gW10pID8oZGlzYWJsZWQgPSBmYWxzZSkgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgKCkgPVxuICAgIE5vZGUubGFiZWxcbiAgICAgIH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBleHRyYV9hdHRycylcbiAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgIH5hdHRyOlxuICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUgKCkpXG4gICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgaXNfY2hlY2tlZFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpKVxuICAgICAgICAgIFtdXG4gICAgICA7IE5vZGUudGV4dCBsYWJlbFxuICAgICAgXVxuICA7O1xuXG4gIGxldCBzaW1wbGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSA9XG4gICAgTm9kZS5kaXZcbiAgICAgIH5hdHRyOihBdHRyLmNsYXNzXyBcImNoZWNrYm94LWNvbnRhaW5lclwiKVxuICAgICAgWyBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgKCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2xpc3QgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgIH50b19zdHJpbmdcbiAgICA9XG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICAoWyBBdHRyLmNsYXNzZXMgWyBcIndpZGdldC1jaGVja2xpc3RcIjsgXCJjaGVja2JveC1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgQ2hlY2tib3guaW1wbFxuICAgICAgICAgICB+ZXh0cmFfYXR0cnNcbiAgICAgICAgICAgfmRpc2FibGVkXG4gICAgICAgICAgIH5pc19jaGVja2VkOihpc19jaGVja2VkIGl0ZW0pXG4gICAgICAgICAgIH5sYWJlbDoodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIH5vbl90b2dnbGU6KGZ1biAoKSAtPiBvbl90b2dnbGUgaXRlbSlcbiAgICAgICAgICAgKCkpKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBEaXNwbGF5IHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIHZhbHVlcyB+aXNfY2hlY2tlZCB+b25fdG9nZ2xlIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCBNLmFsbCB+aXNfY2hlY2tlZCB+b25fdG9nZ2xlIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGlfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vX2FjdGlvblxuICAgICAgfCBDbGVhcl9hbGxcbiAgICAgIHwgU2VsZWN0X2FsbFxuICBlbmRcblxuICBsZXQgaW1wbFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgPyhyZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yLk5vX2FjdGlvbilcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IG9wZW4gSnNfb2Zfb2NhbWwgaW5cbiAgICBsZXQgc2l6ZSA9IE9wdGlvbi52YWx1ZSBzaXplIH5kZWZhdWx0OihMaXN0Lmxlbmd0aCB2YWx1ZXMpIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgIDsgQXR0ci5jcmVhdGUgXCJzaXplXCIgKEludC50b19zdHJpbmcgc2l6ZSlcbiAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBldnQgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IHRhcmdldCA9XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQuYmluZCBldnQjIy50YXJnZXQgRG9tX2h0bWwuQ29lcmNlVG8uc2VsZWN0KVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHRhcmdldCAtPiB0YXJnZXRcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgIFwiTXVsdGlfc2VsZWN0IFtvbl9jaGFuZ2VdIGV2ZW50IGZpcmVkIHdpdGggYSBtaXNzaW5nIHRhcmdldCBvciB0YXJnZXQgXFxcbiAgICAgICAgICAgICAgICAgdGhhdCB3YXMgbm90IGEgc2VsZWN0IGVsZW1lbnQuXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjb2xsZWN0aW9uX3RvX2xpc3QgY29sbGVjdGlvbiA9XG4gICAgICAgICAgICBMaXN0LmluaXQgY29sbGVjdGlvbiMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmdldCAoY29sbGVjdGlvbiMjaXRlbSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3B0aW9ucyA9IGNvbGxlY3Rpb25fdG9fbGlzdCB0YXJnZXQjIy5vcHRpb25zIGluXG4gICAgICAgICAgbGV0IHNlbGVjdGVkX3ZhbHVlcyA9XG4gICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QuemlwX2V4biB2YWx1ZXMgb3B0aW9ucykgfmY6KGZ1biAodmFsdWUsIG9wdGlvbikgLT5cbiAgICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKEpzLnRvX2Jvb2wgb3B0aW9uIyMuc2VsZWN0ZWQpIHZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHNlbGVjdGVkX3ZhbHVlcykpXG4gICAgICBdXG4gICAgICBAIGV4dHJhX2F0dHJzXG4gICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICBpblxuICAgIGxldCBvcHRpb25zID1cbiAgICAgIExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICAgIGxldCBpc19zZWxlY3RlZCA9IFNldC5tZW0gc2VsZWN0ZWQgdmFsdWUgaW5cbiAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAoKiBbQXR0ci5ib29sX3Byb3BlcnR5XSBrZWVwcyB0aGUgc3RhdGUgb2YgdGhlIG9wdGlvbiBpbiBzeW5jIGJ5IHNldHRpbmcgdGhlIEpTXG4gICAgICAgICAgICAgcHJvcGVydHkuIFtBdHRyLnNlbGVjdGVkXSBtb2RpZmllcyB0aGUgRE9NIGF0dHJpYnV0ZSBzbyB0aGF0IHNlbGVjdGVkIG9wdGlvbnNcbiAgICAgICAgICAgICBjYW4gYmUgc3R5bGVkIHdpdGggQ1NTLiBbQXR0ci5zZWxlY3RlZF0gYWxvbmUgZG9lcyBub3QgdXBkYXRlIHRoZSBzdGF0ZVxuICAgICAgICAgICAgIHByb3Blcmx5IGlmIHRoZSBtb2RlbCBjaGFuZ2VzLCBzbyBib3RoIGFyZSBuZWVkZWQuICopXG4gICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgIChbIFNvbWUgKEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgaXNfc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgOyBTb21lXG4gICAgICAgICAgICAgICAgICAgIChBdHRyLm9uX2NsaWNrIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXNfcmVwZWF0ZWRfY2xpY2sgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKEpzLnRvX2Jvb2wgZXZ0IyMuY3RybEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2V0LmVxdWFsIHNlbGVjdGVkIChTZXQuc2luZ2xldG9uIChtb2R1bGUgTSkgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHdhc19yZXBlYXRlZF9jbGljaywgcmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IGZhbHNlLCBfIHwgdHJ1ZSwgTm9fYWN0aW9uIC0+IEVmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBDbGVhcl9hbGwgLT4gb25fY2hhbmdlIChTZXQuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBTZWxlY3RfYWxsIC0+IG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSB2YWx1ZXMpKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXJfb3B0KSlcbiAgICAgICAgICBbIE5vZGUudGV4dCAoTS50b19zdHJpbmcgdmFsdWUpIF0pXG4gICAgaW5cbiAgICBOb2RlLnNlbGVjdCB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMpIG9wdGlvbnNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB2YWx1ZXNcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtX3NldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgTS5hbGxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICBtb2R1bGUgQ2FsbF9vbl9pbnB1dF93aGVuID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgVGV4dF9jaGFuZ2VkXG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3RcblxuICAgIGxldCBsaXN0ZW5lciA9IGZ1bmN0aW9uXG4gICAgICB8IFRleHRfY2hhbmdlZCAtPiBBdHRyLm9uX2lucHV0XG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3QgLT4gQXR0ci5vbl9jaGFuZ2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbm9ybWFsaXplIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUykgcyA9XG4gICAgbWF0Y2ggTS50b19zdHJpbmcgKE0ub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IFNvbWUgXCJcIlxuICAgIHwgdiAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgbWF5YmVfb25fcmV0dXJuIG9uX3JldHVybiBhdHRycyA9XG4gICAgbWF0Y2ggb25fcmV0dXJuIHdpdGhcbiAgICB8IE5vbmUgLT4gYXR0cnNcbiAgICB8IFNvbWUgb25fcmV0dXJuIC0+XG4gICAgICBBdHRyLm9uX2tleWRvd24gKGZ1biBldiAtPlxuICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuIG9uX3JldHVybiAoKSBlbHNlIEVmZmVjdC5JZ25vcmUpXG4gICAgICA6OiBhdHRyc1xuICA7O1xuXG4gIGxldCBpbnB1dF9ub2RlID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSA/KHBsYWNlaG9sZGVyID0gXCJcIikgYXR0cnMgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKGF0dHJzXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyOyBBdHRyLmNyZWF0ZSBcInNwZWxsY2hlY2tcIiBcImZhbHNlXCIgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcblxuICBsZXQgcmF3ID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyID9vbl9yZXR1cm4gfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgWyBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgdmFsdWU7IEF0dHIub25faW5wdXQgKGZ1biBfZXYgLT4gb25faW5wdXQpIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlclxuICA7O1xuXG4gIGxldCBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8oc2hvdWxkX25vcm1hbGl6ZSA9IHRydWUpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH50eXBlX2F0dHJzXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIGxldCB2YWx1ZSA9IE9wdGlvbi52YWx1ZV9tYXAgfmY6TS50b19zdHJpbmcgdmFsdWUgfmRlZmF1bHQ6XCJcIiBpblxuICAgICAgaWYgc2hvdWxkX25vcm1hbGl6ZVxuICAgICAgdGhlbiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+Zjoobm9ybWFsaXplIChtb2R1bGUgTSkpXG4gICAgICBlbHNlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihjb25zdCBOb25lKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBvbl9pbnB1dCBOb25lXG4gICAgICAgIHwgcyAtPiBvbl9pbnB1dCAoT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTS5vZl9zdHJpbmcgcykpKVxuICAgIDsgdmFsdWVcbiAgICBdXG4gICAgfD4gYWRkX2F0dHJzIHR5cGVfYXR0cnNcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ2FibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0ZXh0XCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgdmFsaWRhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCAobW9kdWxlIFYpID0gVmFsaWRhdGVkLmxpZnQgKG1vZHVsZSBNKSBpblxuICAgIGxldCB2YWx1ZV9hdHRyID1cbiAgICAgIG1hdGNoICh2YWx1ZSA6IFYudCkgd2l0aFxuICAgICAgfCBJbml0aWFsIC0+IEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiBcIlwiXG4gICAgICB8IF8gLT4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgKFYudG9fc3RyaW5nIHZhbHVlKSB+Zjoobm9ybWFsaXplIChtb2R1bGUgVikpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPlxuICAgICAgICBvbl9pbnB1dCAoVi5vZl9zdHJpbmcgcykpXG4gICAgOyB2YWx1ZV9hdHRyXG4gICAgOyBBdHRyLnR5cGVfIFwidGV4dFwiXG4gICAgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBtYXliZV9pbnZhbGlkIHZhbHVlXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlclxuICA7O1xuXG4gIGxldCB0ZXh0ID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgb2Zfc3RyaW5nYWJsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBudW1iZXJcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJudW1iZXJcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCByYW5nZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInJhbmdlXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgdGltZSA/ZXh0cmFfYXR0cnMgP2NhbGxfb25faW5wdXRfd2hlbiA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH52YWx1ZSB+b25faW5wdXQgKCkgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFRpbWVfY29tcGF0Lk9mZGF5KVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRpbWVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBkYXRlID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgRGF0ZSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRlXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgZGF0ZXRpbWVfbG9jYWxcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/dXRjX29mZnNldFxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBob3VycyA9XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIHV0Y19vZmZzZXRcbiAgICAgICAgKCogZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgdGltZSB6b25lIGRpZmZlcmVuY2UsIGluIG1pbnV0ZXMsIGZyb20gY3VycmVudFxuICAgICAgICAgICBsb2NhbGUgdG8gVVRDLiBVdGMgb2Zmc2V0IGlzIHRoZSBkaWZmZXJlbmNlIGZyb20gVVRDIHRvIGN1cnJlbnQgbG9jYWxlIHdoaWNoXG4gICAgICAgICAgIGlzIHdoZXJlIHRoZSBtaW51cyBjb21lcyBmcm9tLlxuXG4gICAgICAgICAgIFRoZSBtaW51dGVzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvIGhvdXJzIHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdFxuICAgICAgICAgICBUaW1lLlpvbmUub2ZfdXRjX29mZnNldCBleHBlY3RzIGZvciB0aGUgdXRjX29mZnNldC4gKilcbiAgICAgICAgfmRlZmF1bHQ6KChuZXclanMgSnNfb2Zfb2NhbWwuSnMuZGF0ZV9ub3cpIyNnZXRUaW1lem9uZU9mZnNldCAvIC02MClcbiAgICAgICAgfmY6KGZ1biB1dGNfb2Zmc2V0IC0+IFRpbWVfbnMuU3Bhbi50b19ociB1dGNfb2Zmc2V0IHw+IEZsb2F0LnRvX2ludClcbiAgICBpblxuICAgIGxldCAobW9kdWxlIFpvbmVkX3RpbWUpID0gVGltZV9jb21wYXQuem9uZWQgKFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IH5ob3VycykgaW5cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBab25lZF90aW1lKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZXRpbWUtbG9jYWxcIiBdXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgOztcblxuICBsZXQgdGV4dF9hcmVhXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUudGV4dGFyZWFcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlclxuICAgICAgICAgICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgb25faW5wdXQgdmFsdWUpXG4gICAgICAgICAgICA7IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOk9wdGlvbi5yZXR1cm5cbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5cbiAgKCogQWNjb3JkaW5nIHRvXG4gICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dC9jb2xvciNWYWx1ZSB0aGVcbiAgICAgdmFsdWUgbXVzdCBiZSBzZXQgaW4gaGV4IGZvcm1hdCBhbmQgd2lsbCBhbHdheXMgY29tZXMgYmFjayBpbiBoZXggZm9ybWF0LiAqKVxuICBsZXQgY29sb3JfcGlja2VyXG4gICAgICAgID8oZXh0cmFfYXR0ciA9IEF0dHIuZW1wdHkpXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IChgSGV4IHZhbHVlXykgPSB2YWx1ZSBpblxuICAgIFsgQXR0ci4odHlwZV8gXCJjb2xvclwiIEAgdmFsdWVfcHJvcCB2YWx1ZV8gQCBleHRyYV9hdHRyKVxuICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+IG9uX2lucHV0IChgSGV4IHMpKVxuICAgIF1cbiAgICB8PiBpbnB1dF9ub2RlID9kaXNhYmxlZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfdmFsaWRhdGlvbiA/KGV4dHJhX2F0dHJzID0gW10pIHRleHQgfnZhbGlkYXRpb24gfm9uX2NsaWNrID1cbiAgICBtYXRjaCB2YWxpZGF0aW9uIHdpdGhcbiAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHI6XG4gICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgKFsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayByZXN1bHQpOyBBdHRyLnR5cGVfIFwiYnV0dG9uXCIgXVxuICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgICB8IEVycm9yIHJlYXNvbiAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHI6XG4gICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgKFsgQXR0ci5kaXNhYmxlZFxuICAgICAgICAgICAgICA7IEF0dHIudHlwZV8gXCJidXR0b25cIlxuICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcFwiIHJlYXNvblxuICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcC1wb3NpdGlvblwiIFwidG9wXCJcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcblxuICBsZXQgc2ltcGxlID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSB0ZXh0IH5vbl9jbGljayA9XG4gICAgTm9kZS5idXR0b25cbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImJ1dHRvblwiOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrICgpKSBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmFkaW9fYnV0dG9ucyA9IHN0cnVjdFxuICBtb2R1bGUgU3R5bGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOYXRpdmVcbiAgICAgIHwgQnV0dG9uX2xpa2Ugb2YgeyBleHRyYV9hdHRycyA6IGNoZWNrZWQ6Ym9vbCAtPiBBdHRyLnQgbGlzdCB9XG5cbiAgICBsZXQgYmFyZWJvbmVzX2J1dHRvbl9saWtlID1cbiAgICAgIEJ1dHRvbl9saWtlXG4gICAgICAgIHsgZXh0cmFfYXR0cnMgPVxuICAgICAgICAgICAgKGZ1biB+Y2hlY2tlZCAtPlxuICAgICAgICAgICAgICAgaWYgY2hlY2tlZFxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjNDA0MDQwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIEA+IGNvbG9yIChgSGV4IFwiI0Y3RjdGN1wiKSlcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjRUZFRkVGXCIpKVxuICAgICAgICAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGhpZGVfbmF0aXZlX2lucHV0cyA9XG4gICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImFwcGVhcmFuY2VcIiB+dmFsdWU6XCJub25lXCIgQD4gdW5pZm9ybV9tYXJnaW4gKGBQeCAwKSlcbiAgOztcblxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhzdHlsZSA6IFN0eWxlLnQgPSBOYXRpdmUpXG4gICAgICAgIH5vcmllbnRhdGlvblxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT4gWyBBdHRyLnN0eWxlIGhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+b3JpZW50YXRpb25cbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LXJhZGlvLWJ1dHRvbnNcIjsgXCJyYWRpby1idXR0b24tY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIGxldCBjaGVja2VkID0gT3B0aW9uLnZhbHVlX21hcCBzZWxlY3RlZCB+ZGVmYXVsdDpmYWxzZSB+ZjooZXF1YWwgaXRlbSkgaW5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIChsYWJlbF9hdHRycyB+Y2hlY2tlZCkpXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLm5hbWUgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLmNsYXNzZXMgWyBcInJhZGlvLWJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayBpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgQCBpbnB1dF9hdHRyc1xuICAgICAgICAgICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkKSlcbiAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgVmVydGljYWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIHZhbHVlc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNfaG9yaXpvbnRhbFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgSG9yaXpvbnRhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgdmFsdWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBKcyA9IEpzX29mX29jYW1sLkpzXG5cbiAgbGV0IGFjY2VwdF9hdHRycyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEF0dHIuZW1wdHlcbiAgICB8IFNvbWUgYWNjZXB0cyAtPlxuICAgICAgQXR0ci5jcmVhdGVcbiAgICAgICAgXCJhY2NlcHRcIlxuICAgICAgICAoTGlzdC5tYXAgYWNjZXB0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBgRXh0ZW5zaW9uIHMgLT4gaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCIuXCIgdGhlbiBzIGVsc2UgXCIuXCIgXiBzXG4gICAgICAgICAgIHwgYE1pbWV0eXBlIHMgLT4gcylcbiAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIilcbiAgOztcblxuICBsZXQgbGlzdCA/KGV4dHJhX2F0dHJzID0gW10pID9hY2NlcHQgfm9uX2lucHV0ICgpID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVzID1cbiAgICAgICAgICAgICAgICAgIExpc3QuaW5pdCBmaWxlX2xpc3QjIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdCMjaXRlbSBpXG4gICAgICAgICAgICAgICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgIH5tZXNzYWdlOlslc3RyaW5nIFwiY291bGRuJ3QgZ2V0IGZpbGUgJXtpI0ludH1cIl0pXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvbl9pbnB1dCBmaWxlcylcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuXG4gIGxldCBzaW5nbGUgPyhleHRyYV9hdHRycyA9IFtdKSA/YWNjZXB0IH5vbl9pbnB1dCAoKSA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiZmlsZVwiXG4gICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmaWxlID0gZmlsZV9saXN0IyNpdGVtIDAgfD4gSnMuT3B0LnRvX29wdGlvbiBpblxuICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGUpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAoQykgSmVhbi1DaHJpc3RvcGhlIEZpbGxpYXRyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAqKVxuKCogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAqKVxuKCogIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgICAgICAgICAgICAqKVxuKCogIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAqKVxuKCogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqKVxuKCogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKnMgTWFwcyBvZiBpbnRlZ2VycyBpbXBsZW1lbnRlZCBhcyBQYXRyaWNpYSB0cmVlcywgZm9sbG93aW5nIENocmlzXG4gICAgT2thc2FraSBhbmQgQW5kcmV3IEdpbGwncyBwYXBlciB7XFxlbSBGYXN0IE1lcmdlYWJsZSBJbnRlZ2VyIE1hcHN9XG4gICAgKHtcXHR0XFxzbWFsbCBodHRwOi8vd3d3LmNzLmNvbHVtYmlhLmVkdS9cXH57fWNkby9wYXBlcnMuaHRtbFxcI21sOThtYXBzfSkuXG4gICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG1vZHVsZSBbUHRzZXRdIHdoaWNoIGlzIGFsc28gYmFzZWQgb24gdGhlXG4gICAgc2FtZSBkYXRhLXN0cnVjdHVyZS4gKilcblxudHlwZSBrZXkgPSBpbnRcblxudHlwZSAnYSB0ID1cbiAgfCBFbXB0eVxuICB8IExlYWYgb2YgaW50ICogJ2FcbiAgfCBCcmFuY2ggb2YgaW50ICogaW50ICogJ2EgdCAqICdhIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5IHQgPSB0ID0gRW1wdHlcblxubGV0IHplcm9fYml0IGsgbSA9IChrIGxhbmQgbSkgPT0gMFxuXG5sZXQgcmVjIG1lbSBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGosXykgLT4gayA9PSBqXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBtZW0gayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCByZWMgZmluZCBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGsgPT0gaiB0aGVuIHggZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IGZpbmQgayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCBmaW5kX29wdCBrIG0gPSB0cnkgU29tZSAoZmluZCBrIG0pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuKCogTm90ZTogZmluZF9maXJzdC9sYXN0IGhhdmUgdG8gbG9vayBpbiBib3RoIHN1YnRyZWVzXG4gICBhcyB0aGVzZSBhcmUgbGl0dGxlLWVuZGlhbiBQYXRyaWNpYSB0cmVlcyAqKVxubGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPCByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrIDwgcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrID4gcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA+IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbG93ZXN0X2JpdCB4ID0geCBsYW5kICgteClcblxubGV0IGJyYW5jaGluZ19iaXQgcDAgcDEgPSBsb3dlc3RfYml0IChwMCBseG9yIHAxKVxuXG5sZXQgbWFzayBwIG0gPSBwIGxhbmQgKG0tMSlcblxubGV0IGpvaW4gKHAwLHQwLHAxLHQxKSA9XG4gIGxldCBtID0gYnJhbmNoaW5nX2JpdCBwMCBwMSBpblxuICBpZiB6ZXJvX2JpdCBwMCBtIHRoZW5cbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDAsIHQxKVxuICBlbHNlXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQxLCB0MClcblxubGV0IG1hdGNoX3ByZWZpeCBrIHAgbSA9IChtYXNrIGsgbSkgPT0gcFxuXG5sZXQgYWRkIGsgeCB0ID1cbiAgbGV0IHJlYyBpbnMgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTGVhZiAoayx4KVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+XG4gICAgICBpZiBqID09IGsgdGhlbiBMZWFmIChrLHgpIGVsc2Ugam9pbiAoaywgTGVhZiAoayx4KSwgaiwgdClcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIEJyYW5jaCAocCwgbSwgaW5zIHQwLCB0MSlcblx0ZWxzZVxuXHQgIEJyYW5jaCAocCwgbSwgdDAsIGlucyB0MSlcbiAgICAgIGVsc2Vcblx0am9pbiAoaywgTGVhZiAoayx4KSwgcCwgdClcbiAgaW5cbiAgaW5zIHRcblxubGV0IHNpbmdsZXRvbiBrIHYgPVxuICBhZGQgayB2IGVtcHR5XG5cbmxldCBicmFuY2ggPSBmdW5jdGlvblxuICB8IChfLF8sRW1wdHksdCkgLT4gdFxuICB8IChfLF8sdCxFbXB0eSkgLT4gdFxuICB8IChwLG0sdDAsdDEpICAgLT4gQnJhbmNoIChwLG0sdDAsdDEpXG5cbmxldCByZW1vdmUgayB0ID1cbiAgbGV0IHJlYyBybXYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPiBpZiBrID09IGogdGhlbiBFbXB0eSBlbHNlIHRcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgcm12IHQwLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgdDAsIHJtdiB0MSlcbiAgICAgIGVsc2Vcblx0dFxuICBpblxuICBybXYgdFxuXG5sZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gY2FyZGluYWwgdDAgKyBjYXJkaW5hbCB0MVxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGl0ZXIgZiB0MDsgaXRlciBmIHQxXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwIGYgdDAsIG1hcCBmIHQxKVxuXG5sZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgayB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcGkgZiB0MCwgbWFwaSBmIHQxKVxuXG5sZXQgcmVjIGZvbGQgZiBzIGFjY3UgPSBtYXRjaCBzIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeCBhY2N1XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvbGQgZiB0MCAoZm9sZCBmIHQxIGFjY3UpXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiAoaywgdikgIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvcl9hbGwgcCB0MCAmJiBmb3JfYWxsIHAgdDFcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChrLCB2KSAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBleGlzdHMgcCB0MCB8fCBleGlzdHMgcCB0MVxuXG5sZXQgcmVjIGZpbHRlciBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSBhcyB0IC0+IGlmIHByIGsgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlciBwciB0MCwgZmlsdGVyIHByIHQxKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgLT4gKG1hdGNoIHByIGsgdiB3aXRoIFNvbWUgdicgLT4gTGVhZiAoaywgdicpIHwgTm9uZSAtPiBFbXB0eSlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXJfbWFwIHByIHQwLCBmaWx0ZXJfbWFwIHByIHQxKVxuXG5sZXQgcGFydGl0aW9uIHAgcyA9XG4gIGxldCByZWMgcGFydCAodCxmIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBwIGsgdiB0aGVuIChhZGQgayB2IHQsIGYpIGVsc2UgKHQsIGFkZCBrIHYgZilcbiAgICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBwYXJ0IChwYXJ0IGFjYyB0MCkgdDFcbiAgaW5cbiAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG5cbmxldCByZWMgY2hvb3NlID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2UgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHJlYyBjaG9vc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2Vfb3B0IHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCBzcGxpdCB4IG0gPVxuICBsZXQgY29sbCBrIHYgKGwsIGIsIHIpID1cbiAgICBpZiBrIDwgeCB0aGVuIGFkZCBrIHYgbCwgYiwgclxuICAgIGVsc2UgaWYgayA+IHggdGhlbiBsLCBiLCBhZGQgayB2IHJcbiAgICBlbHNlIGwsIFNvbWUgdiwgclxuICBpblxuICBmb2xkIGNvbGwgbSAoZW1wdHksIE5vbmUsIGVtcHR5KVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtaW5fYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtaW5fYmluZGluZyB0IGluXG4gICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCAobWluX2JpbmRpbmdfb3B0IHMsIG1pbl9iaW5kaW5nX29wdCB0KSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtYXhfYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtYXhfYmluZGluZyB0IGluXG4gICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCBtYXhfYmluZGluZ19vcHQgcywgbWF4X2JpbmRpbmdfb3B0IHQgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IGJpbmRpbmdzIG0gPVxuICBmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBtIFtdXG5cbigqIHdlIG9yZGVyIGNvbnN0cnVjdG9ycyBhcyBFbXB0eSA8IExlYWYgPCBCcmFuY2ggKilcbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9XG4gIGxldCByZWMgY29tcGFyZV9hdXggdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gMFxuICAgIHwgRW1wdHksIF8gLT4gLTFcbiAgICB8IF8sIEVtcHR5IC0+IDFcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgazEgazIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjbXAgeDEgeDJcbiAgICB8IExlYWYgXywgQnJhbmNoIF8gLT4gLTFcbiAgICB8IEJyYW5jaCBfLCBMZWFmIF8gLT4gMVxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgcDEgcDIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuXHRsZXQgYyA9IGNvbXBhcmUgbTEgbTIgaW5cblx0aWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2F1eCBsMSBsMiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggcjEgcjJcbiAgaW5cbiAgY29tcGFyZV9hdXggdDEgdDJcblxubGV0IGVxdWFsIGVxIHQxIHQyID1cbiAgbGV0IHJlYyBlcXVhbF9hdXggdDEgdDIgPSBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+IGsxID0gazIgJiYgZXEgeDEgeDJcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgcDEgPSBwMiAmJiBtMSA9IG0yICYmIGVxdWFsX2F1eCBsMSBsMiAmJiBlcXVhbF9hdXggcjEgcjJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgZXF1YWxfYXV4IHQxIHQyXG5cbmxldCBtZXJnZSBmIG0xIG0yID1cbiAgbGV0IGFkZCBtIGsgPSBmdW5jdGlvbiBOb25lIC0+IG0gfCBTb21lIHYgLT4gYWRkIGsgdiBtIGluXG4gICgqIGZpcnN0IGNvbnNpZGVyIGFsbCBiaW5kaW5ncyBpbiBtMSAqKVxuICBsZXQgbSA9IGZvbGRcbiAgICAgIChmdW4gazEgdjEgbSAtPiBhZGQgbSBrMSAoZiBrMSAoU29tZSB2MSkgKGZpbmRfb3B0IGsxIG0yKSkpIG0xIGVtcHR5IGluXG4gICgqIHRoZW4gYmluZGluZ3MgaW4gbTIgdGhhdCBhcmUgbm90IGluIG0xICopXG4gIGZvbGQgKGZ1biBrMiB2MiBtIC0+IGlmIG1lbSBrMiBtMSB0aGVuIG0gZWxzZSBhZGQgbSBrMiAoZiBrMiBOb25lIChTb21lIHYyKSkpXG4gICAgbTIgbVxuXG5sZXQgdXBkYXRlIHggZiBtID1cbiAgbWF0Y2ggZiAoZmluZF9vcHQgeCBtKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgeCBtXG4gIHwgU29tZSB6IC0+IGFkZCB4IHogbVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID0gbiA+PSAwICYmIChtIDwgMCB8fCBuIDwgbSlcblxubGV0IHJlYyB1bmlvbiBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSwgdCAgLT4gdFxuICB8IHQsIEVtcHR5ICAtPiB0XG4gIHwgTGVhZiAoayx2MSksIHQgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjEgfCBTb21lIHYyIC0+IGYgayB2MSB2MikgdFxuICB8IHQsIExlYWYgKGssdjIpIC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYyIHwgU29tZSB2MSAtPiBmIGsgdjEgdjIpIHRcbiAgfCAoQnJhbmNoIChwLG0sczAsczEpIGFzIHMpLCAoQnJhbmNoIChxLG4sdDAsdDEpIGFzIHQpIC0+XG4gICAgICBpZiBtID09IG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogVGhlIHRyZWVzIGhhdmUgdGhlIHNhbWUgcHJlZml4LiBNZXJnZSB0aGUgc3VidHJlZXMuICopXG5cdGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdDApLCB1bmlvbiBmIChzMSx0MSkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBbcV0gY29udGFpbnMgW3BdLiBNZXJnZSBbdF0gd2l0aCBhIHN1YnRyZWUgb2YgW3NdLiAqKVxuXHRpZiB6ZXJvX2JpdCBxIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdCksIHMxKVxuICAgICAgICBlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCBzMCwgdW5pb24gZiAoczEsdCkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG4gbSAmJiBtYXRjaF9wcmVmaXggcCBxIG4gdGhlblxuXHQoKiBbcF0gY29udGFpbnMgW3FdLiBNZXJnZSBbc10gd2l0aCBhIHN1YnRyZWUgb2YgW3RdLiAqKVxuXHRpZiB6ZXJvX2JpdCBwIG4gdGhlblxuXHQgIGJyYW5jaCAocSwgbiwgdW5pb24gZiAocyx0MCksIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChxLCBuLCB0MCwgdW5pb24gZiAocyx0MSkpXG4gICAgICBlbHNlXG5cdCgqIFRoZSBwcmVmaXhlcyBkaXNhZ3JlZS4gKilcblx0am9pbiAocCwgcywgcSwgdClcblxubGV0IHVuaW9uIGYgcyB0ID0gdW5pb24gZiAocyx0KVxuXG5sZXQgdG9fc2VxIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoaywgdikgLT4gZnVuICgpIC0+IFNlcS5Db25zKChrLHYpLCBzKVxuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCB0b19zZXFfZnJvbSBrIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoa2V5LCB2KSAtPiBpZiBrZXkgPj0gayB0aGVuIGZ1biAoKSAtPiBTZXEuQ29ucygoa2V5LHYpLCBzKSBlbHNlIHNcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgYWRkX3NlcSBzIG0gPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBtIHNcblxubGV0IG9mX3NlcSBzID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgc1xuIiwibGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcbiIsImxldCB2ZXJzaW9uID0gXCIyLjEuMlwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanVuayBidWYgbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAgICggKCkgKVxuIyA5OCBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCAxIC0+XG4jIDMgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgIChcbiAgICAgaWYgbiA8PSAwIHRoZW4gKClcbiAgICAgZWxzZSBiZWdpblxuICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKExleGluZy5sZXhlbWVfY2hhciBsZXhidWYgMCk7XG4gICAgICAgcmVhZF9qdW5rIGJ1ZiAobiAtIDEpIGxleGJ1ZlxuICAgICBlbmRcbiAgICAgKVxuIyAxMDkgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDExIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gXG5sZXQgcmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBuIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIGxldCBqdW5rX3N0YXJ0X3BvcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIHJlYWRfanVuayBidWYgbiBsZXhidWY7XG4gIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGp1bmtfc3RhcnRfcG9zICsgMVxuXG4jIDEyMyBcImxpYi9sZXhlcl91dGlscy5tbFwiXG4iLCJvcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuISBZb2pzb25cblxudHlwZSB0ID0gWW9qc29uLlNhZmUudFxuXG5sZXQgeW9qc29uX29mX3VuaXQgKCkgOiB0ID0gYE51bGxcbmxldCB5b2pzb25fb2ZfYm9vbCBiIDogdCA9IGBCb29sIGJcbmxldCB5b2pzb25fb2Zfc3RyaW5nIHN0ciA6IHQgPSBgU3RyaW5nIHN0clxubGV0IHlvanNvbl9vZl9ieXRlcyBieXRlcyA6IHQgPSBgU3RyaW5nIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgeW9qc29uX29mX2NoYXIgYyA6IHQgPSBgU3RyaW5nIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgeW9qc29uX29mX2ludCBuIDogdCA9IGBJbnQgblxubGV0IHlvanNvbl9vZl9mbG9hdCBuIDogdCA9IGBGbG9hdCBuXG5sZXQgeW9qc29uX29mX2ludDMyIChuIDogSW50MzIudCkgOiB0ID0gYEludGxpdCAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX2ludDY0IChuIDogSW50NjQudCkgOiB0ID0gYEludGxpdCAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX25hdGl2ZWludCBuIDogdCA9IGBJbnRsaXQgKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfcmVmIHlvanNvbl9vZl9fYSByZiA9IHlvanNvbl9vZl9fYSAhcmZcbmxldCB5b2pzb25fb2ZfbGF6eV90IHlvanNvbl9vZl9fYSBsdiA9IHlvanNvbl9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHlvanNvbl9vZl9vcHRpb24geW9qc29uX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4geW9qc29uX29mX19hIHhcbiAgfCBOb25lIC0+IGBOdWxsXG47O1xuXG5sZXQgeW9qc29uX29mX3BhaXIgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiAoYSwgYikgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYiBdXG47O1xuXG5sZXQgeW9qc29uX29mX3RyaXBsZSB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIHlvanNvbl9vZl9fYyAoYSwgYiwgYykgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYjsgeW9qc29uX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHlvanNvbl9vZl9saXN0IHlvanNvbl9vZl9fYSBsc3QgPSBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB+Zjp5b2pzb25fb2ZfX2EgbHN0KSlcblxubGV0IHlvanNvbl9vZl9hcnJheSB5b2pzb25fb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHlvanNvbl9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgYExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCB5b2pzb25fb2ZfaGFzaHRibCB5b2pzb25fb2Zfa2V5IHlvanNvbl9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IGBMaXN0IFsgeW9qc29uX29mX2tleSBrOyB5b2pzb25fb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgYExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgeW9qc29uX29mX29wYXF1ZSBfID0gYFN0cmluZyBcIjxvcGFxdWU+XCJcbmxldCB5b2pzb25fb2ZfZnVuIF8gPSBgU3RyaW5nIFwiPGZ1bj5cIlxuXG5leGNlcHRpb24gT2ZfeW9qc29uX2Vycm9yIG9mIGV4biAqIHRcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3lvanNvbl9lcnJvcl9leG4gZXhjIHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKGV4YywgeW9qc29uKSlcbmxldCBvZl95b2pzb25fZXJyb3Igd2hhdCB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChGYWlsdXJlIHdoYXQsIHlvanNvbikpXG5cbmxldCB1bml0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+ICgpXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ1bml0X29mX3lvanNvbjogYE51bGwgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYm9vbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgQm9vbCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJvb2xfb2ZfeW9qc29uOiB0cnVlL2ZhbHNlIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHN0cmluZ19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInN0cmluZ19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBieXRlc19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJieXRlc19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBjaGFyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgeW9qc29uO1xuICAgIHN0ci5bMF1cbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgb2Ygc2l6ZSBvbmUgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnQgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGZsb2F0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBGbG9hdCB2IC0+IHZcbiAgfCBgSW50IGkgLT4gZmxvYXRfb2ZfaW50IGlcbiAgfCBgSW50bGl0IHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJmbG9hdF9vZl95b2pzb246IGZsb2F0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDMyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDMyLm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50MzIub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDMyX29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQ2NF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQ2NC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDY0Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQ2NF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IE5hdGl2ZWludC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibmF0aXZlaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCByZWZfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSByZWYgKGFfX29mX3lvanNvbiB5b2pzb24pXG5sZXQgbGF6eV90X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2ZfeW9qc29uIHlvanNvbilcblxubGV0IG9wdGlvbl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGVsIC0+IFNvbWUgKGFfX29mX3lvanNvbiBlbClcbjs7XG5cbmxldCBwYWlyX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBhLCBiXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJwYWlyX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCB0cmlwbGVfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24gY19fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb247IGNfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgbGV0IGMgPSBjX19vZl95b2pzb24gY195b2pzb24gaW5cbiAgICBhLCBiLCBjXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ0cmlwbGVfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IGxpc3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl95b2pzb24gaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJsaXN0X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBhcnJheV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgW10gLT4gW3x8XVxuICB8IGBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl95b2pzb24gaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl95b2pzb24gaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJhcnJheV9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaGFzaHRibF9vZl95b2pzb24ga2V5X29mX3lvanNvbiB2YWxfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IFsga195b2pzb247IHZfeW9qc29uIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2ZfeW9qc29uIGtfeW9qc29uKSB+ZGF0YToodmFsX29mX3lvanNvbiB2X3lvanNvbilcbiAgICAgIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogdHVwbGUgbGlzdCBuZWVkZWRcIiB5b2pzb25cbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG9wYXF1ZV9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwib3BhcXVlX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHlvanNvblxuOztcblxubGV0IGZ1bl9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwiZnVuX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgeW9qc29uXG47O1xuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX29mX2FycmF5ID0geW9qc29uX29mX2FycmF5XG4gIGxldCBhcnJheV9vZl95b2pzb24gPSBhcnJheV9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ib29sID0geW9qc29uX29mX2Jvb2xcbiAgbGV0IGJvb2xfb2ZfeW9qc29uID0gYm9vbF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9jaGFyID0geW9qc29uX29mX2NoYXJcbiAgbGV0IGNoYXJfb2ZfeW9qc29uID0gY2hhcl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9mbG9hdCA9IHlvanNvbl9vZl9mbG9hdFxuICBsZXQgZmxvYXRfb2ZfeW9qc29uID0gZmxvYXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50ID0geW9qc29uX29mX2ludFxuICBsZXQgaW50X29mX3lvanNvbiA9IGludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQzMiA9IHlvanNvbl9vZl9pbnQzMlxuICBsZXQgaW50MzJfb2ZfeW9qc29uID0gaW50MzJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50NjQgPSB5b2pzb25fb2ZfaW50NjRcbiAgbGV0IGludDY0X29mX3lvanNvbiA9IGludDY0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xpc3QgPSB5b2pzb25fb2ZfbGlzdFxuICBsZXQgbGlzdF9vZl95b2pzb24gPSBsaXN0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX25hdGl2ZWludCA9IHlvanNvbl9vZl9uYXRpdmVpbnRcbiAgbGV0IG5hdGl2ZWludF9vZl95b2pzb24gPSBuYXRpdmVpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfb3B0aW9uID0geW9qc29uX29mX29wdGlvblxuICBsZXQgb3B0aW9uX29mX3lvanNvbiA9IG9wdGlvbl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9yZWYgPSB5b2pzb25fb2ZfcmVmXG4gIGxldCByZWZfb2ZfeW9qc29uID0gcmVmX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3N0cmluZyA9IHlvanNvbl9vZl9zdHJpbmdcbiAgbGV0IHN0cmluZ19vZl95b2pzb24gPSBzdHJpbmdfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYnl0ZXMgPSB5b2pzb25fb2ZfYnl0ZXNcbiAgbGV0IGJ5dGVzX29mX3lvanNvbiA9IGJ5dGVzX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3VuaXQgPSB5b2pzb25fb2ZfdW5pdFxuICBsZXQgdW5pdF9vZl95b2pzb24gPSB1bml0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xhenlfdCA9IHlvanNvbl9vZl9sYXp5X3RcbiAgbGV0IGxhenlfdF9vZl95b2pzb24gPSBsYXp5X3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaGFzaHRibCA9IHlvanNvbl9vZl9oYXNodGJsXG4gIGxldCBoYXNodGJsX29mX3lvanNvbiA9IGhhc2h0Ymxfb2ZfeW9qc29uXG5lbmRcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgWW9qc29uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuISBTdGRMYWJlbHNcbm9wZW4gWW9qc29uX2NvbnZcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKHNwcmludGYgXCIlc19vZl95b2pzb246IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2MgbikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl95b2pzb246ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyB5b2pzb24gbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl95b2pzb246IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBcXFxuICAgICAgIGZpZWxkc1wiXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgeW9qc29uXG47O1xuIiwibW9kdWxlIFlvanNvbl9jb252X2Vycm9yID0gWW9qc29uX2NvbnZfZXJyb3Jcbm1vZHVsZSBZb2pzb25fY29udiA9IFlvanNvbl9jb252XG5tb2R1bGUgWW9qc29uYWJsZSA9IFlvanNvbmFibGVfaW50ZlxubW9kdWxlIFlvanNvbiA9IFlvanNvblxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gICAgfCBOb25lXG4gICAgfCBTb21lIG9mICdhXG5lbmRcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsIHBvbHlfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG5sZXQgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBmdW4geCAtPiAheFxuIiwiIyAxIFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG50eXBlIG5vbnJlYyBpbnQgPSBpbnRcbnR5cGUgbm9ucmVjIGNoYXIgPSBjaGFyXG50eXBlIG5vbnJlYyBzdHJpbmcgPSBzdHJpbmdcbnR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXRcbnR5cGUgbm9ucmVjIGJvb2wgPSBib29sXG50eXBlIG5vbnJlYyB1bml0ID0gdW5pdFxudHlwZSBub25yZWMgZXhuID0gZXhuXG50eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5XG50eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdFxudHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uXG50eXBlIG5vbnJlYyBuYXRpdmVpbnQgPSBuYXRpdmVpbnRcbnR5cGUgbm9ucmVjIGludDMyID0gaW50MzJcbnR5cGUgbm9ucmVjIGludDY0ID0gaW50NjRcbnR5cGUgbm9ucmVjICdhIGxhenlfdCA9ICdhIGxhenlfdFxudHlwZSBub25yZWMgYnl0ZXMgPSBieXRlc1xuXG4jIDE4IFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG4oKiBXZSByZXF1aXJlIDQuMDggd2hpbGUgNC4wNyBhbHJlYWR5IGhhcyBhIFN0ZGxpYiBtb2R1bGUuXG4gICBJbiA0LjA3LCB0aGUgdHlwZSBlcXVhbGl0aWVzIG9uIFN0ZGxpYi5QZXJ2YXNpdmVzXG4gICBhcmUgbm90IHN0cm9uZyBlbm91Z2ggZm9yIHRoZSAnaW5jbHVkZSBTdGRsaWInXG4gICBiZWxvdyB0byBzYXRpc2Z5IHRoZSBzaWduYXR1cmUgY29uc3RyYWludHMgb25cbiAgIFBweF9kZXJpdmluZ19ydW50aW1lLlBlcnZhc2l2ZXMuICopXG5tb2R1bGUgU3RkbGliID0gU3RkbGliXG5cbmluY2x1ZGUgU3RkbGliXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgcmVzdWx0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuXG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcbmVuZFxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5sZXQgY2xzcyA9IEF0dHIuY2xhc3NlcztcblxubGV0IGRpdl9jID0gY2xzID0+IGRpdih+YXR0cj1BdHRyLmNsYXNzXyhjbHMpKTtcbmxldCBzcGFuX2MgPSBjbHMgPT4gc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhjbHMpKTtcblxubGV0IGRpdl9lbXB0eSA9IGRpdih+YXR0cj1BdHRyLmNyZWF0ZShcInN0eWxlXCIsIFwiZGlzcGxheTpub25lXCIpLCBbXSk7XG5cbmxldCBkaXZfaWYgPSAocCwgYXRzLCBucykgPT4gcCA/IGRpdih+YXR0cj1BdHRyLm1hbnkoYXRzKSwgbnMpIDogZGl2X2VtcHR5O1xubGV0IHNwYW5faWYgPSAocCwgYXRzLCBucykgPT5cbiAgcCA/IHNwYW4ofmF0dHI9QXR0ci5tYW55KGF0cyksIG5zKSA6IHNwYW4oW10pO1xuXG5sZXQgdW5sZXNzID0gKHAsIGEpID0+IHAgPyBFZmZlY3QuTWFueShbXSkgOiBhO1xuIiwibGV0IHN3YXAgPSAoKGEsIGIpKSA9PiAoYiwgYSk7XG5cbmxldCBtYXAyID0gKGYsIChhLCBiKSkgPT4gKGYoYSksIGYoYikpO1xuXG5sZXQgbWFwMyA9IChmLCAoYSwgYiwgYykpID0+IChmKGEpLCBmKGIpLCBmKGMpKTtcbiIsImxldCBwcmludF90aW1lX3ByZWZpeCA9XG4gICAgKG5hbWU6IHN0cmluZywgc3RhcnRfdGltZTogZmxvYXQsIGVuZF90aW1lOiBmbG9hdCk6IHVuaXQgPT4ge1xuICBQcmludGYucHJpbnRmKFxuICAgIFwiJS0zMnMlNC4wZm1zXCIsXG4gICAgbmFtZSArKyBcIjpcIixcbiAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICApO1xufTtcblxubGV0IHByaW50X3RpbWUgPSAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgZW5kX3RpbWU6IGZsb2F0KTogdW5pdCA9PiB7XG4gIHByaW50X3RpbWVfcHJlZml4KG5hbWUsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKTtcbiAgUHJpbnRmLnByaW50ZihcIlxcbiUhXCIpO1xufTtcblxubGV0IHByaW50X3RpbWVzID1cbiAgICAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgdGltZXM6IGxpc3QoKHN0cmluZywgZmxvYXQpKSk6IHVuaXQgPT4ge1xuICBhc3NlcnQodGltZXMgIT0gW10pO1xuICBsZXQgZW5kX3RpbWUgPSBMaXN0LmZvbGRfbGVmdCgoXywgbGFzdCkgPT4gc25kKGxhc3QpLCAtMS4wLCB0aW1lcyk7XG4gIHByaW50X3RpbWVfcHJlZml4KG5hbWUsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKTtcbiAgUHJpbnRmLnByaW50ZihcIiBbXCIpO1xuICBsZXQgcmVjIGdvID0gKHByZXZpb3VzX3RpbWU6IGZsb2F0LCB0aW1lczogbGlzdCgoc3RyaW5nLCBmbG9hdCkpKTogdW5pdCA9PiB7XG4gICAgc3dpdGNoICh0aW1lcykge1xuICAgIHwgW10gPT4gKClcbiAgICB8IFsobmFtZSwgdGltZSksIC4uLnRpbWVzXSA9PlxuICAgICAgUHJpbnRmLnByaW50ZihcIiAlczogJS4wZm1zXCIsIG5hbWUsIDEwMDAuMCAqLiAodGltZSAtLiBwcmV2aW91c190aW1lKSk7XG4gICAgICBnbyh0aW1lLCB0aW1lcyk7XG4gICAgfTtcbiAgfTtcbiAgZ28oc3RhcnRfdGltZSwgdGltZXMpO1xuICBQcmludGYucHJpbnRmKFwiIF1cXG4lIVwiKTtcbn07XG5cbmxldCBtZWFzdXJlX3RpbWUgPSAobmFtZTogc3RyaW5nLCBtZWFzdXJlOiBib29sLCBmOiB1bml0ID0+ICdhKTogJ2EgPT5cbiAgaWYgKG1lYXN1cmUpIHtcbiAgICBsZXQgc3RhcnRfdGltZSA9IFN5cy50aW1lKCk7XG4gICAgbGV0IHggPSBmKCk7XG4gICAgbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgICBwcmludF90aW1lKG5hbWUsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKTtcbiAgICB4O1xuICB9IGVsc2Uge1xuICAgIGYoKTtcbiAgfTtcbiIsImxldCBjYXQgPSBTdHJpbmcuY29uY2F0KFwiXCIpO1xuXG5sZXQgcmVtb3ZlX250aCA9IChuLCB0KSA9PiB7XG4gIGFzc2VydChuIDwgU3RyaW5nLmxlbmd0aCh0KSk7XG4gIFN0cmluZy5zdWIodCwgMCwgbikgKysgU3RyaW5nLnN1Yih0LCBuICsgMSwgU3RyaW5nLmxlbmd0aCh0KSAtIG4gLSAxKTtcbn07XG5cbmxldCByZW1vdmVfZmlyc3QgPSByZW1vdmVfbnRoKDApO1xubGV0IHJlbW92ZV9sYXN0ID0gdCA9PiByZW1vdmVfbnRoKFN0cmluZy5sZW5ndGgodCkgLSAxLCB0KTtcblxubGV0IGluc2VydF9udGggPSAobiwgcywgdCkgPT4ge1xuICBhc3NlcnQobiA8IFN0cmluZy5sZW5ndGgodCkpO1xuICBTdHJpbmcuc3ViKHQsIDAsIG4pICsrIHMgKysgU3RyaW5nLnN1Yih0LCBuLCBTdHJpbmcubGVuZ3RoKHQpIC0gbik7XG59O1xuXG5sZXQgc3BsaXRfbnRoID0gKG4sIHQpID0+IHtcbiAgYXNzZXJ0KG4gPCBTdHJpbmcubGVuZ3RoKHQpKTtcbiAgKFN0cmluZy5zdWIodCwgMCwgbiksIFN0cmluZy5zdWIodCwgbiwgU3RyaW5nLmxlbmd0aCh0KSAtIG4pKTtcbn07XG5cbmxldCB0b19saXN0ID0gcyA9PiBMaXN0LmluaXQoU3RyaW5nLmxlbmd0aChzKSwgaSA9PiBTdHJpbmcubWFrZSgxLCBzLltpXSkpO1xuXG5sZXQgcmVwZWF0ID0gKG4sIHMpID0+IFN0cmluZy5jb25jYXQoXCJcIiwgTGlzdC5pbml0KG4sIF8gPT4gcykpO1xuXG5sZXQgYWJicmV2aWF0ZSA9IChtYXhfbGVuLCBzKSA9PlxuICBTdHJpbmcubGVuZ3RoKHMpID4gbWF4X2xlbiA/IFN0cmluZy5zdWIocywgMCwgbWF4X2xlbikgKysgXCIuLi5cIiA6IHM7XG4iLCIvKiBUT0RPOiB3ZSBtaWdodCB3YW50IHRvIGp1c3QgdXNlIHRoaXMgQVBJP1xuXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL3JncmluYmVyZy9vY2FtbC1tdGwvYmxvYi9tYXN0ZXIvbGliL210bC5tbFxuXG4gICBUaG91Z2ggaXQncyBhIGJpdCBoZWF2eSwgZXNwZWNpYWxseSB3aXRoIHRoZSBleHRyYSB0eXBlIHBhcmFtZXRlci4uLlxuXG4gICBJbiBhbnkgY2FzZSwgdGhhdCdzIGEgZ29vZCByZWZlcmVuY2UuICovXG5cbm1vZHVsZSB0eXBlIE1PTkFEX0JBU0lDID0ge1xuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCgnYSk7XG4gIGxldCByZXR1cm46ICdhID0+IHQoJ2EpO1xuICBsZXQgYmluZDogKHQoJ2EpLCAnYSA9PiB0KCdiKSkgPT4gdCgnYik7XG59O1xuXG5tb2R1bGUgdHlwZSBNT05BRF9GVU5DVE9SID0ge1xuICBpbmNsdWRlIE1PTkFEX0JBU0lDO1xuICBsZXQgbWFwOiAodCgnYSksICdhID0+ICdiKSA9PiB0KCdiKTtcbn07XG5cbm1vZHVsZSBNYWtlX0Z1bmN0b3IgPSAoTTogTU9OQURfQkFTSUMpID0+IHtcbiAgaW5jbHVkZSBNO1xuICBsZXQgbWFwID0gKHgsIGYpID0+IGJpbmQoeCwgYSA9PiBNLnJldHVybihmKGEpKSk7XG59O1xuXG5tb2R1bGUgdHlwZSBNT05BRF9aSVAgPSB7XG4gIGluY2x1ZGUgTU9OQURfRlVOQ1RPUjtcbiAgbGV0IHppcDogKHQoJ2EpLCB0KCdiKSkgPT4gdCgoJ2EsICdiKSk7XG59O1xuXG5tb2R1bGUgTWFrZV9aaXAgPSAoTTogTU9OQURfRlVOQ1RPUikgPT4ge1xuICBpbmNsdWRlIE07XG5cbiAgbGV0IHppcCA9ICh4LCB5KSA9PiBiaW5kKHgsIGEgPT4gYmluZCh5LCBiID0+IE0ucmV0dXJuKChhLCBiKSkpKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEID0ge1xuICBpbmNsdWRlIE1PTkFEX1pJUDtcblxuICBsZXQgc2VxdWVuY2U6IGxpc3QodCgnYSkpID0+IHQobGlzdCgnYSkpO1xuXG4gIG1vZHVsZSBTeW50YXg6IHtcbiAgICBsZXQgKCBsZXQqICk6ICh0KCdhKSwgJ2EgPT4gdCgnYikpID0+IHQoJ2IpO1xuICAgIGxldCAobGV0Kyk6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xuICAgIGxldCAoYW5kKyk6ICh0KCdhKSwgdCgnYikpID0+IHQoKCdhLCAnYikpO1xuXG4gICAgbGV0ICg+Pj0pOiAodCgnYSksICdhID0+IHQoJ2IpKSA9PiB0KCdiKTtcbiAgICBsZXQgKD4+fCk6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xuICB9O1xufTtcblxubW9kdWxlIE1ha2VfTW9uYWRfWiA9IChNOiBNT05BRF9aSVApID0+IHtcbiAgaW5jbHVkZSBNO1xuXG4gIGxldCBzZXF1ZW5jZSA9IG1zID0+IHtcbiAgICBsZXQgcmVjIHNlcXVlbmNlJyA9IChtcywgYWNjKSA9PiB7XG4gICAgICBzd2l0Y2ggKG1zKSB7XG4gICAgICB8IFtdID0+IGFjY1xuICAgICAgfCBbbSwgLi4ubXNdID0+XG4gICAgICAgIGJpbmQobSwgeCA9PiBzZXF1ZW5jZScobXMsIG1hcChhY2MsIGFjYyA9PiBbeCwgLi4uYWNjXSkpKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbWFwKHNlcXVlbmNlJyhtcywgW10gfD4gcmV0dXJuKSwgTGlzdC5yZXYpO1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXggPSB7XG4gICAgbGV0ICggbGV0KiApID0gYmluZDtcbiAgICBsZXQgKGxldCspID0gbWFwO1xuICAgIGxldCAoYW5kKykgPSB6aXA7XG5cbiAgICBsZXQgKD4+PSkgPSBiaW5kO1xuICAgIGxldCAoPj58KSA9IG1hcDtcbiAgfTtcbn07XG5cbm1vZHVsZSBNYWtlX01vbmFkX0IgPSAoTTogTU9OQURfQkFTSUMpID0+XG4gIE1ha2VfTW9uYWRfWihNYWtlX1ppcChNYWtlX0Z1bmN0b3IoTSkpKTtcbiIsIm1vZHVsZSB0eXBlIFNUQVRFID0ge1xuICB0eXBlIHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICB0eXBlIHN0YXRlO1xuXG4gIGluY2x1ZGUgTW9uYWRzLk1PTkFEIHdpdGggdHlwZSB0KCdhKSA9IHN0YXRlID0+IChzdGF0ZSwgJ2EpO1xuXG4gIGxldCBnZXQ6IHQoc3RhdGUpO1xuICBsZXQgcHV0OiBzdGF0ZSA9PiB0KHVuaXQpO1xuICBsZXQgbW9kaWZ5OiAoc3RhdGUgPT4gc3RhdGUpID0+IHQodW5pdCk7XG4gIGxldCBtb2RpZnknOiAoc3RhdGUgPT4gKCdhLCBzdGF0ZSkpID0+IHQoJ2EpO1xufTtcblxubW9kdWxlIE1ha2UgPSAoU1Q6IFNUQVRFKSA9PiB7XG4gIHR5cGUgc3RhdGUgPSBTVC50O1xuXG4gIG1vZHVsZSBUID0ge1xuICAgIFtAZGVyaXZpbmcgc2V4cF1cbiAgICB0eXBlIHQoJ2EpID0gc3RhdGUgPT4gKHN0YXRlLCAnYSk7XG5cbiAgICBsZXQgcmV0dXJuID0gKHgsIHMpID0+IChzLCB4KTtcblxuICAgIGxldCBiaW5kID0gKHhmLCBmLCBzKSA9PiB7XG4gICAgICBsZXQgKHMnLCB4KSA9XG4gICAgICAgIHN3aXRjaCAoeGYocykpIHtcbiAgICAgICAgfCByID0+IHJcbiAgICAgICAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgICAgICAgcHJpbnRfZW5kbGluZShcbiAgICAgICAgICAgIFwiYmluZCBleGNlcHRpb246IFwiXG4gICAgICAgICAgICArKyBTZXhwbGliLlNleHAudG9fc3RyaW5nX2h1bShTZXhwbGliLlN0ZC5zZXhwX29mX2V4bihleG4pKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJhaXNlKGV4bik7XG4gICAgICAgIH07XG4gICAgICBmKHgsIHMnKTtcbiAgICB9O1xuXG4gICAgbGV0IGdldCA9IHMgPT4gKHMsIHMpO1xuXG4gICAgbGV0IHB1dCA9ICh4LCBfKSA9PiAoeCwgKCkpO1xuXG4gICAgbGV0IG1vZGlmeSA9IGYgPT4gYmluZChnZXQsIHMgPT4gcHV0KGYocykpKTtcblxuICAgIGxldCBtb2RpZnknID0gZiA9PlxuICAgICAgYmluZChcbiAgICAgICAgZ2V0LFxuICAgICAgICBzID0+IHtcbiAgICAgICAgICBsZXQgKHgsIHMpID0gZihzKTtcbiAgICAgICAgICBiaW5kKHB1dChzKSwgXyA9PiByZXR1cm4oeCkpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgfTtcblxuICBpbmNsdWRlIFQ7XG4gIGluY2x1ZGUgTW9uYWRzLk1ha2VfTW9uYWRfQihUKTtcbn07XG4iLCJpbmNsdWRlIEJhc2UuUmVzdWx0O1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKCBsZXQqICkgPSAocmVzdWx0LCBmKSA9PiBiaW5kKH5mLCByZXN1bHQpO1xuICBsZXQgKGxldCspID0gKHJlc3VsdCwgZikgPT4gbWFwKH5mLCByZXN1bHQpO1xufTtcblxubW9kdWxlIFNlcmlhbGl6YXRpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3csIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudCgnYSwgJ2IpID1cbiAgICB8IE9rKCdhKVxuICAgIHwgRXJyb3IoJ2IpO1xuXG4gIGxldCB0b19wZXJzaXN0ZW50ID0gKHJlc3VsdDogdCgnYSwgJ2IpKTogcGVyc2lzdGVudCgnYSwgJ2IpID0+XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IE9rKGEpID0+IE9rKGEpXG4gICAgfCBFcnJvcihiKSA9PiBFcnJvcihiKVxuICAgIH07XG5cbiAgbGV0IG9mX3BlcnNpc3RlbnQgPSAocmVzdWx0OiBwZXJzaXN0ZW50KCdhLCAnYikpOiB0KCdhLCAnYikgPT5cbiAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgIHwgT2soYSkgPT4gT2soYSlcbiAgICB8IEVycm9yKGIpID0+IEVycm9yKGIpXG4gICAgfTtcbn07XG5cbmxldCBwcCA9IChhLCBiLCBjLCB4KSA9PlxuICB4IHw+IFNlcmlhbGl6YXRpb24udG9fcGVyc2lzdGVudCB8PiBTZXJpYWxpemF0aW9uLnBwX3BlcnNpc3RlbnQoYSwgYiwgYyk7XG5cbmxldCB0X29mX3lvanNvbiA9IChhLCBiLCB4KSA9PlxuICB4IHw+IFNlcmlhbGl6YXRpb24ucGVyc2lzdGVudF9vZl95b2pzb24oYSwgYikgfD4gU2VyaWFsaXphdGlvbi5vZl9wZXJzaXN0ZW50O1xuXG5sZXQgeW9qc29uX29mX3QgPSAoYSwgYiwgeCkgPT5cbiAgeCB8PiBTZXJpYWxpemF0aW9uLnRvX3BlcnNpc3RlbnQgfD4gU2VyaWFsaXphdGlvbi55b2pzb25fb2ZfcGVyc2lzdGVudChhLCBiKTtcbiIsImxldCBtYXBfZnN0ID0gKGYsICh4LCB5KSkgPT4gKGYoeCksIHkpO1xubGV0IG1hcF9zbmQgPSAoZiwgKHgsIHkpKSA9PiAoeCwgZih5KSk7XG4iLCJsZXQgZ2V0ID0gKGlmX25vbmUsIG8pID0+XG4gIHN3aXRjaCAobykge1xuICB8IE5vbmUgPT4gaWZfbm9uZSgpXG4gIHwgU29tZShhKSA9PiBhXG4gIH07XG5sZXQgZ2V0X29yX2ZhaWwgPSBzID0+IGdldCgoKSA9PiBmYWlsd2l0aChzKSk7XG5sZXQgZ2V0X29yX3JhaXNlID0gZSA9PiBnZXQoKCkgPT4gcmFpc2UoZSkpO1xuXG5sZXQgbWFwMiA9IChmLCBvMSwgbzIpID0+XG4gIHN3aXRjaCAobzEsIG8yKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoU29tZSh2MSksIFNvbWUodjIpKSA9PiBTb21lKGYodjEsIHYyKSlcbiAgfTtcblxubGV0IHNvbWVfaWYgPSAoY29uZCwgYSkgPT4gY29uZCA/IFNvbWUoYSkgOiBOb25lO1xuXG5sZXQgemlwID0gKG8xLCBvMikgPT5cbiAgc3dpdGNoIChvMSwgbzIpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gTm9uZVxuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PiBTb21lKChhLCBiKSlcbiAgfTtcbmxldCB1bnppcCA9IChvOiBvcHRpb24oKCdhLCAnYikpKTogKG9wdGlvbignYSksIG9wdGlvbignYikpID0+XG4gIHN3aXRjaCAobykge1xuICB8IE5vbmUgPT4gKE5vbmUsIE5vbmUpXG4gIHwgU29tZSgoYSwgYikpID0+IChTb21lKGEpLCBTb21lKGIpKVxuICB9O1xuXG5sZXQgc2VxdWVuY2UgPSAobDogbGlzdChvcHRpb24oJ2EpKSk6IG9wdGlvbihsaXN0KCdhKSkgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KG1hcDIoKHgsIHhzKSA9PiBbeCwgLi4ueHNdKSwgbCwgU29tZShbXSkpO1xuXG5sZXQgYW5kX3RoZW4gPSAoZiwgbykgPT4gT3B0aW9uLmJpbmQobywgZik7XG5cbm1vZHVsZSBTeW50YXggPSB7XG4gIGxldCAoIGxldCogKSA9IE9wdGlvbi5iaW5kO1xuICBsZXQgKGxldCspID0gKG8sIGYpID0+IE9wdGlvbi5tYXAoZiwgbyk7XG4gIGxldCAoYW5kKykgPSB6aXA7XG59O1xuIiwibW9kdWxlIHR5cGUgT3JkZXJlZFNob3dUeXBlID0ge1xuICBpbmNsdWRlIE1hcC5PcmRlcmVkVHlwZTtcblxuICBsZXQgcHA6IChGb3JtYXQuZm9ybWF0dGVyLCB0KSA9PiB1bml0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFNleHBUeXBlID0ge1xuICBpbmNsdWRlIE1hcC5PcmRlcmVkVHlwZTtcblxuICBsZXQgc2V4cF9vZl90OiB0ID0+IFNleHBsaWIuU2V4cC50O1xuICBsZXQgdF9vZl9zZXhwOiBTZXhwbGliLlNleHAudCA9PiB0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFlvanNvblR5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCB5b2pzb25fb2ZfdDogdCA9PiBZb2pzb24uU2FmZS50O1xuICBsZXQgdF9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gdDtcbn07XG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID0ge1xuICBpbmNsdWRlIE9yZGVyZWRTaG93VHlwZTtcbiAgaW5jbHVkZSBPcmRlcmVkU2V4cFR5cGUgd2l0aCB0eXBlIHQgOj0gdDtcbiAgaW5jbHVkZSBPcmRlcmVkWW9qc29uVHlwZSB3aXRoIHR5cGUgdCA6PSB0O1xufTtcblxubW9kdWxlIHR5cGUgU2hvd1MgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHBwOiAoKEZvcm1hdC5mb3JtYXR0ZXIsICdhKSA9PiB1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB0KCdhKSkgPT4gdW5pdDtcbn07XG5cbm1vZHVsZSB0eXBlIFNleHBTID0ge1xuICBpbmNsdWRlIE1hcC5TO1xuXG4gIGxldCBzZXhwX29mX3Q6ICgndiA9PiBTZXhwbGliLlNleHAudCwgdCgndikpID0+IFNleHBsaWIuU2V4cC50O1xuICBsZXQgdF9vZl9zZXhwOiAoU2V4cGxpYi5TZXhwLnQgPT4gJ3YsIFNleHBsaWIuU2V4cC50KSA9PiB0KCd2KTtcbn07XG5cbm1vZHVsZSB0eXBlIFlvanNvblMgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHlvanNvbl9vZl90OiAoJ3YgPT4gWW9qc29uLlNhZmUudCwgdCgndikpID0+IFlvanNvbi5TYWZlLnQ7XG4gIGxldCB0X29mX3lvanNvbjogKFlvanNvbi5TYWZlLnQgPT4gJ3YsIFlvanNvbi5TYWZlLnQpID0+IHQoJ3YpO1xufTtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgaW5jbHVkZSBTaG93UztcbiAgaW5jbHVkZSBTZXhwUyB3aXRoIHR5cGUgdCgnYSkgOj0gdCgnYSkgYW5kIHR5cGUga2V5IDo9IGtleTtcbiAgaW5jbHVkZSBZb2pzb25TIHdpdGggdHlwZSB0KCdhKSA6PSB0KCdhKSBhbmQgdHlwZSBrZXkgOj0ga2V5O1xufTtcblxubW9kdWxlIE1ha2VTaG93Rm9yID0gKE86IE9yZGVyZWRTaG93VHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBsZXQgcHAgPSAocHBfdiwgZiwgbWFwKSA9PlxuICAgIFMuaXRlcihcbiAgICAgIChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVhIC0+ICVhQFxcblwiLCBPLnBwLCBrLCBwcF92LCB2KSxcbiAgICAgIG1hcCxcbiAgICApO1xufTtcblxubW9kdWxlIE1ha2VTaG93ID0gKE86IE9yZGVyZWRTaG93VHlwZSkgOiAoU2hvd1Mgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBtb2R1bGUgTSA9IE1hcC5NYWtlKE8pO1xuXG4gIGluY2x1ZGUgTTtcbiAgaW5jbHVkZSBNYWtlU2hvd0ZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlU2V4cEZvciA9IChPOiBPcmRlcmVkU2V4cFR5cGUsIFM6IE1hcC5TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgb3BlbiBTZXhwbGliLlN0ZDtcblxuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgYmluZGluZygndikgPSAoTy50LCAndik7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gUy5iaW5kaW5ncyB8PiBzZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cCwgc2V4cCkgPT5cbiAgICBzZXhwXG4gICAgfD4gbGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gUy5vZl9zZXE7XG59O1xuXG5tb2R1bGUgTWFrZVNleHAgPSAoTzogT3JkZXJlZFNleHBUeXBlKSA6IChTZXhwUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VTZXhwRm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2VZb2pzb25Gb3IgPSAoTzogT3JkZXJlZFlvanNvblR5cGUsIFM6IE1hcC5TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgW0BkZXJpdmluZyB5b2pzb25dXG4gIHR5cGUgYmluZGluZygndikgPSAoTy50LCAndik7XG5cbiAgbGV0IHlvanNvbl9vZl90ID0gKHlvanNvbl9vZl92LCBtYXApID0+XG4gICAgbWFwIHw+IFMuYmluZGluZ3MgfD4geW9qc29uX29mX2xpc3QoeW9qc29uX29mX2JpbmRpbmcoeW9qc29uX29mX3YpKTtcbiAgbGV0IHRfb2ZfeW9qc29uID0gKHZfb2ZfeW9qc29uLCB5b2pzb24pID0+XG4gICAgeW9qc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gUy5vZl9zZXE7XG59O1xuXG5tb2R1bGUgTWFrZVlvanNvbiA9IChPOiBPcmRlcmVkWW9qc29uVHlwZSkgOiAoWW9qc29uUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VZb2pzb25Gb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZUZvciA9IChPOiBPcmRlcmVkVHlwZSwgTTogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBpbmNsdWRlIE1ha2VTaG93Rm9yKE8sIE0pO1xuICBpbmNsdWRlIE1ha2VTZXhwRm9yKE8sIE0pO1xuICBpbmNsdWRlIE1ha2VZb2pzb25Gb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChPOiBPcmRlcmVkVHlwZSkgOiAoUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VGb3IoTywgTSk7XG59O1xuIiwibGV0IHJldl9pZiA9IChiOiBib29sKSA9PiBiID8gTGlzdC5yZXYgOiBGdW4uaWQ7XG5cbmxldCBkZWR1cCA9IHhzID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoeCwgZGVkdXBlZCkgPT4gTGlzdC5tZW0oeCwgZGVkdXBlZCkgPyBkZWR1cGVkIDogW3gsIC4uLmRlZHVwZWRdLFxuICAgIHhzLFxuICAgIFtdLFxuICApO1xuXG5sZXQgZGVkdXBfZiA9IChmLCB4cykgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICh4LCBkZWR1cGVkKSA9PiBMaXN0LmV4aXN0cyhmKHgpLCBkZWR1cGVkKSA/IGRlZHVwZWQgOiBbeCwgLi4uZGVkdXBlZF0sXG4gICAgeHMsXG4gICAgW10sXG4gICk7XG5cbmxldCBhcmVfZHVwbGljYXRlcyA9IHhzID0+XG4gIExpc3QubGVuZ3RoKExpc3Quc29ydF91bmlxKGNvbXBhcmUsIHhzKSkgPT0gTGlzdC5sZW5ndGgoeHMpO1xuXG5sZXQgZ3JvdXBfYnkgPSAoa2V5OiAneCA9PiAnaywgeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ2ssIGxpc3QoJ3gpKSkgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGdyb3VwZWQsIHgpID0+IHtcbiAgICAgIGxldCBrID0ga2V5KHgpO1xuICAgICAgbGV0IGtfZ3JvdXAgPVxuICAgICAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGssIGdyb3VwZWQpKSB7XG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICB8IFNvbWUoeHMpID0+IHhzXG4gICAgICAgIH07XG4gICAgICBbKGssIFt4LCAuLi5rX2dyb3VwXSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKGssIGdyb3VwZWQpXTtcbiAgICB9LFxuICAgIFtdLFxuICAgIHhzLFxuICApO1xuXG5sZXQgcmVjIHJhbmdlID0gKH5sbz0wLCBoaSkgPT5cbiAgaWYgKGxvID4gaGkpIHtcbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwucmFuZ2VcIikpO1xuICB9IGVsc2UgaWYgKGxvID09IGhpKSB7XG4gICAgW107XG4gIH0gZWxzZSB7XG4gICAgW2xvLCAuLi5yYW5nZSh+bG89bG8gKyAxLCBoaSldO1xuICB9O1xuXG4vLyBoZWFkcyBvZiBwcmVmaXggYW5kIHN1ZmZpeCBuZWlnaGJvciB0aGUgc3ViamVjdFxudHlwZSBmcmFtZSgneCkgPSAobGlzdCgneCksIGxpc3QoJ3gpKTtcblxubGV0IHJlYyBta19mcmFtZSA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6IGZyYW1lKCd4KSA9PiB7XG4gIGxldCBpbnZhbGlkX2FyZyA9ICgpID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5ta19mcmFtZVwiKSk7XG4gIGlmIChuIDwgMCkge1xuICAgIGludmFsaWRfYXJnKCk7XG4gIH0gZWxzZSBpZiAobiA9PSAwKSB7XG4gICAgKFtdLCB4cyk7XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoICh4cykge1xuICAgIHwgW10gPT4gaW52YWxpZF9hcmcoKVxuICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgbGV0IChwcmVmaXgsIHN1ZmZpeCkgPSBta19mcmFtZShuIC0gMSwgeHMpO1xuICAgICAgKHByZWZpeCBAIFt4XSwgc3VmZml4KTtcbiAgICB9O1xuICB9O1xufTtcblxubGV0IHJlYyBzcGxpdCA9XG4gICAgICAgIChsOiBsaXN0KCd4KSwgY29uZDogJ3ggPT4gYm9vbCk6IChsaXN0KCd4KSwgb3B0aW9uKCd4KSwgbGlzdCgneCkpID0+IHtcbiAgc3dpdGNoIChsKSB7XG4gIHwgW10gPT4gKFtdLCBOb25lLCBbXSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgaWYgKGNvbmQoeCkpIHtcbiAgICAgIChbXSwgU29tZSh4KSwgeHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKHByZSwgeCcsIHBvc3QpID0gc3BsaXQoeHMsIGNvbmQpO1xuICAgICAgKFt4LCAuLi5wcmVdLCB4JywgcG9zdCk7XG4gICAgfVxuICB9O1xufTtcblxubGV0IHJlYyBzcGxpdF9mcmFtZSA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6ICgneCwgZnJhbWUoJ3gpKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcImxpc3QgaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuICB8ICgwLCBbeCwgLi4ueHNdKSA9PiAoeCwgKFtdLCB4cykpXG4gIHwgKF8sIFt4LCAuLi54c10pID0+XG4gICAgbGV0IChzdWJqLCAocHJlZml4LCBzdWZmaXgpKSA9IHNwbGl0X2ZyYW1lKG4gLSAxLCB4cyk7XG4gICAgKHN1YmosIChwcmVmaXggQCBbeF0sIHN1ZmZpeCkpO1xuICB9O1xuXG5sZXQgb2ZfZnJhbWUgPSAofnN1YmplY3Q6IGxpc3QoJ3gpPVtdLCAocHJlZml4LCBzdWZmaXgpOiBmcmFtZSgneCkpID0+XG4gIExpc3QuY29uY2F0KFtMaXN0LnJldihwcmVmaXgpLCBzdWJqZWN0LCBzdWZmaXhdKTtcblxubGV0IGNvbWJpbmVfb3B0ID0gKHhzLCB5cykgPT5cbiAgc3dpdGNoIChMaXN0LmNvbWJpbmUoeHMsIHlzKSkge1xuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gTm9uZVxuICB8IHh5cyA9PiBTb21lKHh5cylcbiAgfTtcblxubGV0IGlzX2VtcHR5ID1cbiAgZnVuXG4gIHwgW10gPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbmxldCBmbGF0X21hcCA9IChmLCBsKSA9PiBMaXN0LmZsYXR0ZW4oTGlzdC5tYXAoZiwgbCkpO1xuXG5sZXQgcmVjIGpvaW4gPSAoc2VwOiAneCwgeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW3hdID0+IFt4XVxuICB8IFt4LCAuLi54c10gPT4gW3gsIHNlcCwgLi4uam9pbihzZXAsIHhzKV1cbiAgfTtcblxubGV0IGhkX29wdCA9XG4gIGZ1blxuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLl9dID0+IFNvbWUoaGQpO1xuXG5sZXQgcmVjIG50aF9vcHQgPSAobiwgeHMpID0+XG4gIG4gPCAwXG4gICAgPyBOb25lXG4gICAgOiAoXG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IE5vbmVcbiAgICAgIHwgW2hkLCAuLi50bF0gPT4gbiA9PSAwID8gU29tZShoZCkgOiBudGhfb3B0KG4gLSAxLCB0bClcbiAgICAgIH1cbiAgICApO1xuXG4vKipcbiAqIGBzcGxpdF9uX29wdChuLCB4cylgIHNwbGl0cyB0aGUgZmlyc3QgYG5gIGVsZW1lbnRzIGZyb20gYHhzYFxuICogaWYgYHhzYCBoYXMgYG5gIG9yIG1vcmUgZWxlbWVudHNcbiAqL1xubGV0IHNwbGl0X25fb3B0ID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogb3B0aW9uKChsaXN0KCd4KSwgbGlzdCgneCkpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAobjogaW50LCB4czogbGlzdCgneCkpID0+XG4gICAgaWYgKG4gPCAwKSB7XG4gICAgICBOb25lO1xuICAgIH0gZWxzZSBpZiAobiA9PSAwKSB7XG4gICAgICBTb21lKChbXSwgeHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh4cykge1xuICAgICAgfCBbXSA9PiBOb25lXG4gICAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgICAgZ28obiAtIDEsIHhzKVxuICAgICAgICB8PiBPcHRpb24ubWFwKCgocHJlZml4LCBzdWZmaXgpKSA9PiAoW3gsIC4uLnByZWZpeF0sIHN1ZmZpeCkpXG4gICAgICB9O1xuICAgIH07XG4gIGdvKG4sIHhzKTtcbn07XG5cbi8vIFRPRE8gdW5pZnkgd2l0aCBMaXN0RnJhbWVcbmxldCBzcGxpdF9uID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSkgPT5cbiAgc3dpdGNoIChzcGxpdF9uX29wdChuLCB4cykpIHtcbiAgfCBOb25lID0+XG4gICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X246IFwiICsrIHN0cmluZ19vZl9pbnQobikpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgc3VibGlzdCBmcm9tIGluZGV4IGkgKGluY2x1c2l2ZSlcbiAqIHRvIGluZGV4IGogKGV4Y2x1c2l2ZSksIGNvdXBsZWQgd2l0aCB0aGVcbiAqIHN1cnJvdW5kaW5nIHByZWZpeC9zdWZmaXggc3VibGlzdHMuXG4gKiBSZXR1cm5zIE5vbmUgaWYgaSA+IGouXG4gKi9cbmxldCBzcGxpdF9zdWJsaXN0X29wdCA9XG4gICAgKGk6IGludCwgajogaW50LCB4czogbGlzdCgneCkpXG4gICAgOiBvcHRpb24oKGxpc3QoJ3gpLCBsaXN0KCd4KSwgbGlzdCgneCkpKSA9PiB7XG4gIHN3aXRjaCAoc3BsaXRfbl9vcHQoaiwgeHMpKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSgobGVmdCwgcmlnaHQpKSA9PlxuICAgIHN3aXRjaCAoc3BsaXRfbl9vcHQoaSwgbGVmdCkpIHtcbiAgICB8IE5vbmUgPT4gTm9uZVxuICAgIHwgU29tZSgobGVmdCwgbWlkKSkgPT4gU29tZSgobGVmdCwgbWlkLCByaWdodCkpXG4gICAgfVxuICB9O1xufTtcbmxldCBzcGxpdF9zdWJsaXN0ID1cbiAgICAoaTogaW50LCBqOiBpbnQsIHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgbGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHNwbGl0X3N1Ymxpc3Rfb3B0KGksIGosIHhzKSkge1xuICB8IE5vbmUgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X3N1Ymxpc3RcIikpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5sZXQgc3VibGlzdCA9ICgoaSwgaiksIHhzOiBsaXN0KCd4KSk6IGxpc3QoJ3gpID0+IHtcbiAgbGV0IChfLCBzdWJsaXN0LCBfKSA9IHNwbGl0X3N1Ymxpc3QoaSwgaiwgeHMpO1xuICBzdWJsaXN0O1xufTtcblxubGV0IHJlYyBzcGxpdF9udGhfb3B0ID0gKG4sIHhzKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgXyB3aGVuIG4gPCAwID0+IE5vbmVcbiAgfCAoXywgW10pID0+IE5vbmVcbiAgfCAoMCwgW3gsIC4uLnN1ZmZpeF0pID0+IFNvbWUoKFtdLCB4LCBzdWZmaXgpKVxuICB8IChfLCBbeCwgLi4ueHNdKSA9PlxuICAgIHNwbGl0X250aF9vcHQobiAtIDEsIHhzKVxuICAgIHw+IE9wdGlvbi5tYXAoKChwcmVmaXgsIHN1YmplY3QsIHN1ZmZpeCkpID0+XG4gICAgICAgICAoW3gsIC4uLnByZWZpeF0sIHN1YmplY3QsIHN1ZmZpeClcbiAgICAgICApXG4gIH07XG5sZXQgc3BsaXRfbnRoID0gKG4sIHhzKSA9PlxuICBzd2l0Y2ggKHNwbGl0X250aF9vcHQobiwgeHMpKSB7XG4gIHwgTm9uZSA9PlxuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9udGg6IFwiICsrIHN0cmluZ19vZl9pbnQobikpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuXG5sZXQgcmVjIHB1dF9udGggPSAobjogaW50LCB4OiAneCwgeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gZmFpbHdpdGgoXCJvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFtfLCAuLi50bF0pID0+IFt4LCAuLi50bF1cbiAgfCAoXywgW2hkLCAuLi50bF0pID0+XG4gICAgbGV0IHRsID0gcHV0X250aChuIC0gMSwgeCwgdGwpO1xuICAgIFtoZCwgLi4udGxdO1xuICB9O1xuXG5sZXQgcmVjIG1hcF9udGggPSAobjogaW50LCBmOiAnYSA9PiAnYSwgeHM6IGxpc3QoJ2EpKTogbGlzdCgnYSkgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gZmFpbHdpdGgoXCJvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFtoZCwgLi4udGxdKSA9PiBbZihoZCksIC4uLnRsXVxuICB8IChfLCBbaGQsIC4uLnRsXSkgPT4gW2hkLCAuLi5tYXBfbnRoKG4gLSAxLCBmLCB0bCldXG4gIH07XG5cbmxldCByZWMgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ3gpKTogb3B0aW9uKChsaXN0KCd4KSwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFt4XSA9PiBTb21lKChbXSwgeCkpXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIHNwbGl0X2xhc3Rfb3B0KHhzKVxuICAgIHw+IE9wdGlvbi5tYXAoKChsZWFkaW5nLCBsYXN0KSkgPT4gKFt4LCAuLi5sZWFkaW5nXSwgbGFzdCkpXG4gIH07XG4vLyBsZXQgbGFzdF9vcHQgPSB4cyA9PiB4cyB8PiBzcGxpdF9sYXN0X29wdCB8PiBPcHRpb24ubWFwKHNuZCk7XG5cbmxldCBzcGxpdF9sYXN0ID0gKHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgJ3gpID0+XG4gIHN3aXRjaCAoc3BsaXRfbGFzdF9vcHQoeHMpKSB7XG4gIHwgTm9uZSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfbGFzdFwiKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcbmxldCBsZWFkaW5nID0geHMgPT4gZnN0KHNwbGl0X2xhc3QoeHMpKTtcbmxldCBsYXN0ID0geHMgPT4gc25kKHNwbGl0X2xhc3QoeHMpKTtcbmxldCBsYXN0X29wdCA9IHhzID0+IHtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHhzKTtcbiAgaWYgKGxlbmd0aCA9PSAwKSB7XG4gICAgTm9uZTtcbiAgfSBlbHNlIHtcbiAgICBTb21lKExpc3QubnRoKHhzLCBsZW5ndGggLSAxKSk7XG4gIH07XG59O1xuXG5sZXQgc3BsaXRfZmlyc3Rfb3B0ID0gKHhzOiBsaXN0KCd4KSk6IG9wdGlvbigoJ3gsIGxpc3QoJ3gpKSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiBTb21lKChmaXJzdCwgdHJhaWxpbmcpKVxuICB9O1xubGV0IHNwbGl0X2ZpcnN0ID0geHMgPT5cbiAgc3BsaXRfZmlyc3Rfb3B0KHhzKVxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfZmlyc3RcIikpO1xuXG5sZXQgcmVjIGZvbGRfbGVmdF9tYXAgPVxuICAgICAgICAoZjogKCdhY2MsICd4KSA9PiAoJ2FjYywgJ3kpLCBzdGFydDogJ2FjYywgeHM6IGxpc3QoJ3gpKVxuICAgICAgICA6ICgnYWNjLCBsaXN0KCd5KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IChzdGFydCwgW10pXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIGxldCAobmV3X2FjYywgeSkgPSBmKHN0YXJ0LCB4KTtcbiAgICBsZXQgKGZpbmFsLCB5cykgPSBmb2xkX2xlZnRfbWFwKGYsIG5ld19hY2MsIHhzKTtcbiAgICAoZmluYWwsIFt5LCAuLi55c10pO1xuICB9O1xuXG5sZXQgcmVjIHRha2Vfd2hpbGUgPSAocDogJ3ggPT4gYm9vbCwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IChbXSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBpZiAocChoZCkpIHtcbiAgICAgIGxldCAodGFrZW4sIHJlc3QpID0gdGFrZV93aGlsZShwLCB0bCk7XG4gICAgICAoW2hkLCAuLi50YWtlbl0sIHJlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICAoW10sIHhzKTtcbiAgICB9XG4gIH07XG5cbmxldCBwcm9kdWN0ID0gKHhzLCB5cykgPT5cbiAgeHMgfD4gTGlzdC5tYXAoeCA9PiB5cyB8PiBMaXN0Lm1hcCh5ID0+ICh4LCB5KSkpIHw+IExpc3QuZmxhdHRlbjtcblxubGV0IHJlYyBvcmRlcmVkX3BhaXJzID0gKHhzOiBsaXN0KCd4KSk6IGxpc3QoKCd4LCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+IExpc3QubWFwKHggPT4gKGhkLCB4KSwgdGwpIEAgb3JkZXJlZF9wYWlycyh0bClcbiAgfTtcblxubGV0IHJlYyBuZWlnaGJvcnMgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ3gsICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdXG4gIHwgW19dID0+IFtdXG4gIHwgW3gxLCB4MiwgLi4ueHNdID0+IFsoeDEsIHgyKSwgLi4ubmVpZ2hib3JzKFt4MiwgLi4ueHNdKV1cbiAgfTtcblxubW9kdWxlIFN5bnRheCA9IHtcbiAgbGV0IChsZXQrKSA9ICh4cywgZikgPT4gTGlzdC5tYXAoZiwgeHMpO1xuICBsZXQgKGFuZCspID0gcHJvZHVjdDtcbiAgbGV0ICggbGV0KiApID0gKHhzLCBmKSA9PiBMaXN0LmNvbmNhdF9tYXAoZiwgeHMpO1xufTtcblxubGV0IG1hcF9hbHQ6ICgnYSA9PiAnYywgJ2IgPT4gJ2MsIGxpc3QoJ2EpLCBsaXN0KCdiKSkgPT4gbGlzdCgnYykgPVxuICAoZngsIGZ5LCB4cywgeXMpID0+IHtcbiAgICBpZiAoTGlzdC5sZW5ndGgoeHMpICE9IExpc3QubGVuZ3RoKHlzKSArIDEpIHtcbiAgICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5tYXBfYWx0XCIpKTtcbiAgICB9O1xuICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgIChhY2MsIHgsIHkpID0+IGFjYyBAIFtmeSh5KSwgZngoeCldLFxuICAgICAgW2Z4KExpc3QuaGQoeHMpKV0sXG4gICAgICBMaXN0LnRsKHhzKSxcbiAgICAgIHlzLFxuICAgICk7XG4gIH07XG5cbmxldCBpbnRlcmxlYXZlID0gKHhzLCB5cykgPT4gbWFwX2FsdCh4ID0+IHgsIHkgPT4geSwgeHMsIHlzKTtcblxubGV0IHBfaW5kaWNlcyA9IChwOiAnYSA9PiBib29sLCB4czogbGlzdCgnYSkpOiBsaXN0KGludCkgPT4ge1xuICBsZXQgKF8sIGlkeHMpID1cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICgobiwgaWR4cyksIHgpID0+IChuICsgMSwgaWR4cyBAIChwKHgpID8gW25dIDogW10pKSxcbiAgICAgICgwLCBbXSksXG4gICAgICB4cyxcbiAgICApO1xuICBpZHhzO1xufTtcblxubGV0IHNwbGl0cyA9ICh4czogbGlzdCgneCkgYXMgJ3hzKTogbGlzdCgoJ3hzLCAneHMpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoc3BsaXQ6ICgneHMsICd4cykpOiBsaXN0KCgneHMsICd4cykpID0+XG4gICAgc3dpdGNoIChzcGxpdCkge1xuICAgIHwgKF8sIFtdKSA9PiBbc3BsaXRdXG4gICAgfCAobCwgW2hkLCAuLi50bF0pID0+IFtzcGxpdCwgLi4uZ28oKGwgQCBbaGRdLCB0bCkpXVxuICAgIH07XG4gIGdvKChbXSwgeHMpKTtcbn07XG5cbmxldCBlbGVtX3NwbGl0cyA9ICh4czogbGlzdCgneCkgYXMgJ3hzKTogbGlzdCgoJ3hzLCAneCwgJ3hzKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHNwbGl0OiAoJ3hzLCAneCwgJ3hzKSk6IGxpc3QoKCd4cywgJ3gsICd4cykpID0+XG4gICAgc3dpdGNoIChzcGxpdCkge1xuICAgIHwgKF8sIF8sIFtdKSA9PiBbc3BsaXRdXG4gICAgfCAobCwgeCwgW2hkLCAuLi50bF0pID0+IFtzcGxpdCwgLi4uZ28oKFt4LCAuLi5sXSwgaGQsIHRsKSldXG4gICAgfTtcbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW3gsIC4uLnhzXSA9PiBnbygoW10sIHgsIHhzKSlcbiAgfTtcbn07XG5cbmxldCByb3RhdGUgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT4gdGwgQCBbaGRdXG4gIH07XG5cbmxldCBzaW5nbGVfZWxlbSA9ICh4czogbGlzdCgneCkpOiBvcHRpb24oJ3gpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW2hkLCAuLi50bF0gPT4gTGlzdC5mb3JfYWxsKCg9PSkoaGQpLCB0bCkgPyBTb21lKGhkKSA6IE5vbmVcbiAgfTtcblxubGV0IGNvdW50X3ByZWQgPSAoZjogJ2EgPT4gYm9vbCwgeHM6IGxpc3QoJ2EpKTogaW50ID0+XG4gIExpc3QuZm9sZF9sZWZ0KChuLCB4KSA9PiBmKHgpID8gbiArIDEgOiBuLCAwLCB4cyk7XG5cbmxldCBmb3JfYWxsMl9vcHQgPVxuICAgIChmOiAoJ2EsICdiKSA9PiBib29sLCB4czogbGlzdCgnYSksIHlzOiBsaXN0KCdiKSk6IG9wdGlvbihib29sKSA9PlxuICBzd2l0Y2ggKExpc3QuZm9yX2FsbDIoZiwgeHMsIHlzKSkge1xuICB8IGIgPT4gU29tZShiKVxuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gTm9uZVxuICB9O1xuXG5sZXQgbWFwMl9vcHQgPVxuICAgIChmOiAoJ2EsICdiKSA9PiAnYywgeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYikpOiBvcHRpb24obGlzdCgnYykpID0+XG4gIHN3aXRjaCAoTGlzdC5tYXAyKGYsIHhzLCB5cykpIHtcbiAgfCBiID0+IFNvbWUoYilcbiAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IE5vbmVcbiAgfTtcblxuLyogcmVwZWF0IGFuIGVsZW1lbnQgbiB0aW1lcyAqL1xubGV0IHJlcGxpY2F0ZSA9IChuOiBpbnQsIGU6ICdhKTogbGlzdCgnYSkgPT4ge1xuICAvKiBhZGQgYyBhZGRpdGlvbmFsIGNvcGllcyBvZiBlIHRvIHhzICovXG4gIGxldCByZWMgZiA9IChjLCB4cykgPT5cbiAgICBpZiAoYyA+IDApIHtcbiAgICAgIGYoYyAtIDEsIFtlLCAuLi54c10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB4cztcbiAgICB9O1xuICBmKG4sIFtdKTtcbn07XG5cbi8qKlxuICogWmlwcyB0b2dldGhlciB0d28gbGlzdHMsIHJldHVybmluZyBOb25lIGlmIGRpZmZlcmVudCBsZW5ndGhzXG4gKi9cbmxldCByZWMgb3B0X3ppcCA9ICh4czogbGlzdCgneCksIHlzOiBsaXN0KCd5KSk6IG9wdGlvbihsaXN0KCgneCwgJ3kpKSkgPT5cbiAgc3dpdGNoICh4cywgeXMpIHtcbiAgfCAoW10sIFtfLCAuLi5fXSlcbiAgfCAoW18sIC4uLl9dLCBbXSkgPT4gTm9uZVxuICB8IChbXSwgW10pID0+IFNvbWUoW10pXG4gIHwgKFt4LCAuLi54c10sIFt5LCAuLi55c10pID0+XG4gICAgb3B0X3ppcCh4cywgeXMpIHw+IE9wdGlvbi5tYXAoeHlzID0+IFsoeCwgeSksIC4uLnh5c10pXG4gIH07XG5cbmxldCByZWMgemlwX2RlZmF1bHRzID1cbiAgICAgICAgKHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2IpLCBkZWZhdWx0X3g6ICdhLCBkZWZhdWx0X3k6ICdiKVxuICAgICAgICA6IGxpc3QoKCdhLCAnYikpID0+XG4gIHN3aXRjaCAoeHMsIHlzKSB7XG4gIHwgKFtdLCBbXSkgPT4gW11cbiAgfCAoW3gsIC4uLnhzXSwgW3ksIC4uLnlzXSkgPT4gW1xuICAgICAgKHgsIHkpLFxuICAgICAgLi4uemlwX2RlZmF1bHRzKHhzLCB5cywgZGVmYXVsdF94LCBkZWZhdWx0X3kpLFxuICAgIF1cbiAgfCAoW10sIFt5LCAuLi55c10pID0+IFtcbiAgICAgIChkZWZhdWx0X3gsIHkpLFxuICAgICAgLi4uemlwX2RlZmF1bHRzKHhzLCB5cywgZGVmYXVsdF94LCBkZWZhdWx0X3kpLFxuICAgIF1cbiAgfCAoW3gsIC4uLnhzXSwgW10pID0+IFtcbiAgICAgICh4LCBkZWZhdWx0X3kpLFxuICAgICAgLi4uemlwX2RlZmF1bHRzKHhzLCB5cywgZGVmYXVsdF94LCBkZWZhdWx0X3kpLFxuICAgIF1cbiAgfTtcblxubGV0IHJlYyB1cGRhdGVfbnRoID0gKG4sIHhzLCBmKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBbXVxuICB8ICgwLCBbeCwgLi4ueHNdKSA9PiBbZih4KSwgLi4ueHNdXG4gIHwgKG4sIFt4LCAuLi54c10pID0+IFt4LCAuLi51cGRhdGVfbnRoKG4gLSAxLCB4cywgZildXG4gIH07XG5cbmxldCByZWMgZGlzam9pbnRfcGFpcnMgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ3gsICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdXG4gIHwgW19dID0+IFtdXG4gIHwgW3gxLCB4MiwgLi4ueHNdID0+IFsoeDEsIHgyKSwgLi4uZGlzam9pbnRfcGFpcnMoeHMpXVxuICB9O1xuXG5sZXQgZmluZGlfb3B0OiAoJ3ggPT4gYm9vbCwgbGlzdCgneCkpID0+IG9wdGlvbigoaW50LCAneCkpID1cbiAgKGYsIHhzKSA9PiB7XG4gICAgTGlzdC5tYXBpKChpLCB4KSA9PiAoaSwgeCksIHhzKVxuICAgIHw+IExpc3QuZmluZF9tYXAoKChfLCB4KSBhcyBwYWlyKSA9PlxuICAgICAgICAgaWYgKGYoeCkpIHtcbiAgICAgICAgICAgU29tZShwYWlyKTtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgIE5vbmU7XG4gICAgICAgICB9XG4gICAgICAgKTtcbiAgfTtcblxubGV0IGluaXRfZm9sZDogKGludCwgJ2IsIChpbnQsICdiKSA9PiAoJ2IsICdhKSkgPT4gKCdiLCBsaXN0KCdhKSkgPVxuICAobiwgYiwgZikgPT4ge1xuICAgIGxldCByYW5nZSA9IExpc3QuaW5pdChuLCBuID0+IG4pO1xuICAgIGxldCAoYWNjLCByZXZfeHMpID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAoKGFjYywgeHMpLCBuKSA9PiB7XG4gICAgICAgICAgbGV0IChhY2MnLCBlbHQpID0gZihuLCBhY2MpO1xuICAgICAgICAgIChhY2MnLCBbZWx0LCAuLi54c10pO1xuICAgICAgICB9LFxuICAgICAgICAoYiwgW10pLFxuICAgICAgICByYW5nZSxcbiAgICAgICk7XG4gICAgKGFjYywgTGlzdC5yZXYocmV2X3hzKSk7XG4gIH07XG5cbmxldCBhc3NvY19lcnIgPSAoeCwgeHMsIGVycjogc3RyaW5nKSA9PlxuICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHgsIHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoZXJyKVxuICB8IFNvbWUoeSkgPT4geVxuICB9O1xuXG5sZXQgdXBkYXRlX2Fzc29jID0gKChrLCB2KSkgPT5cbiAgTGlzdC5tYXAoKChrJywgdicpKSA9PiBrID09IGsnID8gKGssIHYpIDogKGsnLCB2JykpO1xuXG4vKiBHaXZlIGEgbGlzdCBvZiBvcHRpb25hbCAnYSwgc3BsaXQgdGhlXG4gKiBsaXN0IHVwIHVzaW5nIHRoZSBOb25lcyBhcyBkaXZpZGVycyAqL1xubGV0IHNwbGl0X2F0X25vbmVzID0gKHhzOiBsaXN0KG9wdGlvbignYSkpKTogbGlzdChsaXN0KCdhKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHhzLCBhY2MpID0+XG4gICAgc3dpdGNoICh4cykge1xuICAgIHwgW10gPT4gYWNjXG4gICAgfCBbTm9uZSwgLi4ueHNdID0+IGdvKHhzLCBbW10sIC4uLmFjY10pXG4gICAgfCBbU29tZSh4KSwgLi4ueHNdID0+XG4gICAgICBzd2l0Y2ggKGFjYykge1xuICAgICAgfCBbYWNjLCAuLi5hY2NzXSA9PiBnbyh4cywgW1t4LCAuLi5hY2NdLCAuLi5hY2NzXSlcbiAgICAgIHwgW10gPT4gZ28oeHMsIFtbeF1dKVxuICAgICAgfVxuICAgIH07XG4gIGdvKHhzLCBbXSkgfD4gTGlzdC5tYXAoTGlzdC5yZXYpIHw+IExpc3QucmV2O1xufTtcblxuLyogR2l2ZSBhIGxpc3Qgb2YgbGlzdHMsIHJldHVybiBhIGxpc3Qgb2YgcGFpcnMgb2ZcbiAqIHRoZSBmaXJzdCBhbmQgbGFzdCBlbGVtZW50IG9mIGVhY2ggbGlzdC4gKi9cbmxldCBmaXJzdF9hbmRfbGFzdCA9ICh4c3M6IGxpc3QobGlzdCgnYSkpKTogbGlzdCgoJ2EsICdhKSkgPT5cbiAgeHNzXG4gIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICBmdW5cbiAgICAgICB8IFtdID0+IE5vbmVcbiAgICAgICB8IFt4XSA9PiBTb21lKCh4LCB4KSlcbiAgICAgICB8IFt4LCAuLi54c10gPT4gU29tZSgoeCwgbGFzdCh4cykpKSxcbiAgICAgKTtcblxubGV0IHJlYyByZXZfY29uY2F0OiAobGlzdCgnYSksIGxpc3QoJ2EpKSA9PiBsaXN0KCdhKSA9XG4gIChscywgcnMpID0+IHtcbiAgICBzd2l0Y2ggKGxzKSB7XG4gICAgfCBbXSA9PiByc1xuICAgIHwgW2hkLCAuLi50bF0gPT4gcmV2X2NvbmNhdCh0bCwgW2hkLCAuLi5yc10pXG4gICAgfTtcbiAgfTtcblxubGV0IHJlYyBtYXAzID0gKGYsIHhzLCB5cywgenMpID0+XG4gIHN3aXRjaCAoeHMsIHlzLCB6cykge1xuICB8IChbXSwgW10sIFtdKSA9PiBbXVxuICB8IChbeCwgLi4ueHNdLCBbeSwgLi4ueXNdLCBbeiwgLi4uenNdKSA9PiBbXG4gICAgICBmKHgsIHksIHopLFxuICAgICAgLi4ubWFwMyhmLCB4cywgeXMsIHpzKSxcbiAgICBdXG4gIHwgXyA9PiBmYWlsd2l0aChcIkxpc3RzIGFyZSBvZiB1bmVxdWFsIGxlbmd0aFwiKVxuICB9O1xuXG5sZXQgcmVjIHVuemlwID0gKGxzdDogbGlzdCgoJ2EsICdiKSkpOiAobGlzdCgnYSksIGxpc3QoJ2IpKSA9PiB7XG4gIHN3aXRjaCAobHN0KSB7XG4gIHwgW10gPT4gKFtdLCBbXSlcbiAgfCBbKGEsIGIpLCAuLi50YWlsXSA9PlxuICAgIGxldCAoX2FzLCBicykgPSB1bnppcCh0YWlsKTtcbiAgICAoW2EsIC4uLl9hc10sIFtiLCAuLi5ic10pO1xuICB9O1xufTtcblxubGV0IGNyb3NzID0gKHhzLCB5cykgPT5cbiAgTGlzdC5jb25jYXQoTGlzdC5tYXAoeCA9PiBMaXN0Lm1hcCh5ID0+ICh4LCB5KSwgeXMpLCB4cykpO1xuXG5sZXQgcmVjIGludGVyc3BlcnNlID0gKHNlcCwgeHMpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFt4XSA9PiBbeF1cbiAgfCBbeCwgLi4ueHNdID0+IFt4LCBzZXAsIC4uLmludGVyc3BlcnNlKHNlcCwgeHMpXVxuICB9O1xuXG5sZXQgcmVjIGZsYXRfaW50ZXJzcGVyc2UgPSAoc2VwLCB4c3MpID0+XG4gIHN3aXRjaCAoeHNzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeHNdID0+IHhzXG4gIHwgW3hzLCAuLi54c3NdID0+IHhzIEAgW3NlcCwgLi4uZmxhdF9pbnRlcnNwZXJzZShzZXAsIHhzcyldXG4gIH07XG5cbmxldCByZWMgbWFwX2xhc3Rfb25seSA9IChmLCB4cykgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW3hdID0+IFtmKHgpXVxuICB8IFt4LCAuLi54c10gPT4gW3gsIC4uLm1hcF9sYXN0X29ubHkoZiwgeHMpXVxuICB9O1xuXG5sZXQgcmVjIHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCAneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IGZhaWx3aXRoKFwiTGlzdFV0aWwuc3BsaXRfbGFzdFwiKVxuICB8IFt4XSA9PiAoW10sIHgpXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIGxldCAocHJlZml4LCBsYXN0KSA9IHNwbGl0X2xhc3QoeHMpO1xuICAgIChbeCwgLi4ucHJlZml4XSwgbGFzdCk7XG4gIH07XG5cbmxldCBtaW5pbXVtID0gKGY6ICdhID0+IGludCwgeHM6IGxpc3QoJ2EpKTogb3B0aW9uKCdhKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBsZXQgcmVjIGxvb3AgPSAoYmVzdDogJ2EsIGJlc3RfZjogaW50LCB4czogbGlzdCgnYSkpOiBvcHRpb24oJ2EpID0+XG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IFNvbWUoYmVzdClcbiAgICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgICBsZXQgZl94ID0gZih4KTtcbiAgICAgICAgaWYgKGZfeCA8IGJlc3RfZikge1xuICAgICAgICAgIGxvb3AoeCwgZl94LCB4cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9vcChiZXN0LCBiZXN0X2YsIHhzKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgbG9vcCh4LCBmKHgpLCB4cyk7XG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IExlZnRcbiAgfCBSaWdodDtcblxubGV0IHRvZ2dsZSA9XG4gIGZ1blxuICB8IExlZnQgPT4gUmlnaHRcbiAgfCBSaWdodCA9PiBMZWZ0O1xuXG5sZXQgc2lnbiA9XG4gIGZ1blxuICB8IExlZnQgPT4gKC0xKVxuICB8IFJpZ2h0ID0+IDE7XG5cbmxldCBjaG9vc2UgPSAoZCwgKGwsIHIpKSA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IGxcbiAgfCBSaWdodCA9PiByXG4gIH07XG4iLCJvcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4vLyBoZWFkcyBvZiBwcmVmaXggYW5kIHN1ZmZpeCBuZWlnaGJvciB0aGUgc3ViamVjdFxuLy8gTk9URTogREVQUkVDQVRFRFxudHlwZSB0KCd4KSA9IChsaXN0KCd4KSwgbGlzdCgneCkpO1xuXG5sZXQgcmVjIG1rX29wdCA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6IG9wdGlvbih0KCd4KSkgPT5cbiAgaWYgKG4gPCAwKSB7XG4gICAgTm9uZTtcbiAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICBTb21lKChbXSwgeHMpKTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBOb25lXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBsZXQrIChwcmVmaXgsIHN1ZmZpeCkgPSBta19vcHQobiAtIDEsIHhzKTtcbiAgICAgIChwcmVmaXggQCBbeF0sIHN1ZmZpeCk7XG4gICAgfTtcbiAgfTtcbmxldCBtayA9IChuLCB4cykgPT5cbiAgbWtfb3B0KG4sIHhzKVxuICB8PiBPcHRVdGlsLmdldCgoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdEZyYW1lLm1rXCIpKSk7XG5cbmxldCByZWMgZmluZF9tayA9XG4gICAgICAgIChwOiAneCA9PiBvcHRpb24oJ3kpLCB4czogbGlzdCgneCkpOiBvcHRpb24oKCd5LCB0KCd4KSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIHN3aXRjaCAocCh4KSkge1xuICAgIHwgU29tZSh5KSA9PiBTb21lKCh5LCAoW10sIHhzKSkpXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQrICh5LCAocHJlZml4LCBzdWZmaXgpKSA9IGZpbmRfbWsocCwgeHMpO1xuICAgICAgKHksIChwcmVmaXggQCBbeF0sIHN1ZmZpeCkpO1xuICAgIH1cbiAgfTtcblxubGV0IG9yaWVudCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCAocHJlZml4LCBzdWZmaXgpOiB0KCd4KSk6IChsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIGQgPT0gTGVmdCA/IChwcmVmaXgsIHN1ZmZpeCkgOiAoc3VmZml4LCBwcmVmaXgpO1xubGV0IHVub3JpZW50ID0gb3JpZW50O1xuXG5sZXQgcmVjIHNwbGl0X250aCA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSk6ICgneCwgdCgneCkpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwibGlzdCBpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFt4LCAuLi54c10pID0+ICh4LCAoW10sIHhzKSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQgKHN1YmosIChwcmVmaXgsIHN1ZmZpeCkpID0gc3BsaXRfbnRoKG4gLSAxLCB4cyk7XG4gICAgKHN1YmosIChwcmVmaXggQCBbeF0sIHN1ZmZpeCkpO1xuICB9O1xuXG5sZXQgc3BsaXRfc3VibGlzdCA9ICgoaTogaW50LCBqOiBpbnQpLCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIHQoJ3gpKSA9PiB7XG4gIGxldCAocHJlZml4LCBzdWZmaXgpID0gbWsoaiwgeHMpO1xuICBsZXQgKHByZWZpeCwgc3VibGlzdCkgPSBtayhpLCBMaXN0LnJldihwcmVmaXgpKTtcbiAgKHN1Ymxpc3QsIChwcmVmaXgsIHN1ZmZpeCkpO1xufTtcblxubGV0IHRvX2xpc3QgPSAofnN1YmplY3Q6IGxpc3QoJ3gpPVtdLCAocHJlZml4LCBzdWZmaXgpOiB0KCd4KSkgPT5cbiAgTGlzdC5jb25jYXQoW0xpc3QucmV2KHByZWZpeCksIHN1YmplY3QsIHN1ZmZpeF0pO1xuXG5sZXQgYXBwZW5kID0gKChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpLCAocHJlZml4Jywgc3VmZml4Jyk6IHQoJ3gpKSA9PiAoXG4gIHByZWZpeCBAIHByZWZpeCcsXG4gIHN1ZmZpeCBAIHN1ZmZpeCcsXG4pO1xuIiwibGV0IG51bV9kaWdpdHMgPSBuID0+IFN0cmluZy5sZW5ndGgoc3RyaW5nX29mX2ludChuKSk7XG5cbmxldCBtb2R1bG8gPSAoeCwgeSkgPT4ge1xuICBsZXQgcmVzdWx0ID0geCBtb2QgeTtcbiAgcmVzdWx0ID49IDAgPyByZXN1bHQgOiByZXN1bHQgKyB5O1xufTtcblxubGV0IGlwb3cgPSAoYmFzZTogaW50LCBleHBvbmVudDogaW50KTogaW50ID0+IHtcbiAgbGV0IHJlYyBpcG93X2l0ZXIgPSAoYjogaW50LCBlOiBpbnQsIHI6IGludCk6IGludCA9PlxuICAgIGlmIChlID09PSAwKSB7XG4gICAgICByO1xuICAgIH0gZWxzZSBpZiAoZSBsYW5kIDEgIT09IDApIHtcbiAgICAgIGlwb3dfaXRlcihiICogYiwgZSBsc3IgMSwgciAqIGIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpcG93X2l0ZXIoYiAqIGIsIGUgbHNyIDEsIHIpO1xuICAgIH07XG4gIGlwb3dfaXRlcihiYXNlLCBleHBvbmVudCwgMSk7XG59O1xuIiwiaW5jbHVkZSBQdG1hcDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcblxuW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbnR5cGUgYmluZGluZygndikgPSAoaW50LCAndik7XG5cbmxldCBzaW5nbGV0b24gPSAoaywgdikgPT4gUHRtYXAuYWRkKGssIHYsIFB0bWFwLmVtcHR5KTtcblxubGV0IGRpc2pfdW5pb24gPSAobTogdCgnYSksIG0nOiB0KCdhKSk6IHQoJ2EpID0+XG4gIHVuaW9uKFxuICAgIChfLCBfLCBfKSA9PlxuICAgICAgcmFpc2UoXG4gICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgXCJJbnRNYXAuZGlzal91bmlvbiBleHBlY3RzIGlucHV0IG1hcHMgdG8gaGF2ZSBkaXNqb2ludCBrZXkgc2V0c1wiLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBtLFxuICAgIG0nLFxuICApO1xuXG5sZXQgcHAgPSAocHBfdiwgZiwgbWFwKSA9PlxuICBpdGVyKChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVkIC0+ICVhQFxcblwiLCBrLCBwcF92LCB2KSwgbWFwKTtcblxubGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3Y6ICd2ID0+IFNleHAudCwgbWFwOiB0KCd2KSk6IFNleHAudCA9PlxuICBtYXAgfD4gYmluZGluZ3MgfD4gc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcbmxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwOiBTZXhwLnQgPT4gJ3YsIHNleHA6IFNleHAudCk6IHQoJ3YpID0+XG4gIHNleHAgfD4gbGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKSB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXE7XG5cbmxldCB5b2pzb25fb2ZfdCA9XG4gICAgKHlvanNvbl9vZl92OiAndiA9PiBZb2pzb24uU2FmZS50LCBtYXA6IHQoJ3YpKTogWW9qc29uLlNhZmUudCA9PlxuICBtYXAgfD4gYmluZGluZ3MgfD4geW9qc29uX29mX2xpc3QoeW9qc29uX29mX2JpbmRpbmcoeW9qc29uX29mX3YpKTtcbmxldCB0X29mX3lvanNvbiA9XG4gICAgKHZfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+ICd2LCB5b2pzb246IFlvanNvbi5TYWZlLnQpOiB0KCd2KSA9PlxuICB5b2pzb25cbiAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBvZl9zZXE7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQoJ2wsICdyKSA9XG4gIHwgTCgnbClcbiAgfCBSKCdyKTtcblxubGV0IGwgPSB4ID0+IEwoeCk7XG5sZXQgciA9IHggPT4gUih4KTtcblxubGV0IGlzX0wgPVxuICBmdW5cbiAgfCBMKF8pID0+IHRydWVcbiAgfCBSKF8pID0+IGZhbHNlO1xubGV0IGlzX1IgPSBlID0+ICFpc19MKGUpO1xuXG5sZXQgZ2V0X0wgPVxuICBmdW5cbiAgfCBMKGwpID0+IFNvbWUobClcbiAgfCBSKF8pID0+IE5vbmU7XG5sZXQgZ2V0X1IgPVxuICBmdW5cbiAgfCBSKHIpID0+IFNvbWUocilcbiAgfCBMKF8pID0+IE5vbmU7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vLyBpbnZhcmlhbnQ6IExpc3QubGVuZ3RoKGFzKSA9PSBMaXN0Lmxlbmd0aChicykgKyAxXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQoJ2EsICdiKSA9IChsaXN0KCdhKSwgbGlzdCgnYikpO1xuXG5sZXQgbWsgPSAoYXNfOiBsaXN0KCdhKSwgYnM6IGxpc3QoJ2IpKTogdCgnYSwgJ2IpID0+IHtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGFzXykgPT0gTGlzdC5sZW5ndGgoYnMpICsgMSk7XG4gIChhc18sIGJzKTtcbn07XG5cbmxldCBmaXJzdF9hID0gKChhc18sIF8pOiB0KCdhLCBfKSk6ICdhID0+IHtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGFzXykgPiAwKTtcbiAgTGlzdC5oZChhc18pO1xufTtcbmxldCBsYXN0X2EgPSAoKGFzXywgXyk6IHQoJ2EsIF8pKTogJ2EgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA+IDApO1xuICBMaXN0VXRpbC5sYXN0KGFzXyk7XG59O1xuXG5sZXQgcmV2ID0gKHJldl9hLCByZXZfYiwgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYikgPT4gKFxuICBMaXN0LnJldl9tYXAocmV2X2EsIGFzXyksXG4gIExpc3QucmV2X21hcChyZXZfYiwgYnMpLFxuKTtcblxubGV0IGNvbnMgPSAoYTogJ2EsIGI6ICdiLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PiAoXG4gIFthLCAuLi5hc19dLFxuICBbYiwgLi4uYnNdLFxuKTtcbmxldCBzbm9jID0gKChhc18sIGJzKTogdCgnYSwgJ2IpLCBiOiAnYiwgYTogJ2EpOiB0KCdhLCAnYikgPT4gKFxuICBhc18gQCBbYV0sXG4gIGJzIEAgW2JdLFxuKTtcblxubGV0IHNpbmdsZXRvbiA9IChhOiAnYSk6IHQoJ2EsIF8pID0+IChbYV0sIFtdKTtcblxubGV0IGdldF9hczogdCgnYSwgXykgPT4gbGlzdCgnYSkgPSBmc3Q7XG5sZXQgZ2V0X2JzOiB0KF8sICdiKSA9PiBsaXN0KCdiKSA9IHNuZDtcblxubGV0IGhkID0gKChhc18sIF8pOiB0KCdhLCAnYikpOiAnYSA9PiBMaXN0LmhkKGFzXyk7XG5cbmxldCByZWMgYWJhX3RyaXBsZXMgPSAoYWJhOiB0KCdhLCAnYikpOiBsaXN0KCgnYSwgJ2IsICdhKSkgPT5cbiAgc3dpdGNoIChhYmEpIHtcbiAgfCAoW2ExLCBhMiwgLi4uYXNfXSwgW2IsIC4uLmJzXSkgPT4gW1xuICAgICAgKGExLCBiLCBhMiksXG4gICAgICAuLi5hYmFfdHJpcGxlcygoW2EyLCAuLi5hc19dLCBicykpLFxuICAgIF1cbiAgfCBfID0+IFtdXG4gIH07XG5sZXQgcmVjIGJhYl90cmlwbGVzJyA9XG4gICAgICAgIChiMTogb3B0aW9uKCdiKSwgYWJhOiB0KCdhLCAnYikpXG4gICAgICAgIDogbGlzdCgob3B0aW9uKCdiKSwgJ2EsIG9wdGlvbignYikpKSA9PlxuICBzd2l0Y2ggKGFiYSkge1xuICB8IChbYSwgLi4uYXNfXSwgW2IyLCAuLi5ic10pID0+IFtcbiAgICAgIChiMSwgYSwgU29tZShiMikpLFxuICAgICAgLi4uYmFiX3RyaXBsZXMnKFNvbWUoYjIpLCAoYXNfLCBicykpLFxuICAgIF1cbiAgfCAoW2FdLCBbXSkgPT4gWyhiMSwgYSwgTm9uZSldXG4gIHwgXyA9PiBbXVxuICB9O1xubGV0IGJhYl90cmlwbGVzOiB0KCdhLCAnYikgPT4gbGlzdCgob3B0aW9uKCdiKSwgJ2EsIG9wdGlvbignYikpKSA9XG4gIGFiYSA9PiBiYWJfdHJpcGxlcycoTm9uZSwgYWJhKTtcblxubGV0IG1hcF9hID0gKGZfYTogJ2EgPT4gJ2MsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYywgJ2IpID0+IChcbiAgTGlzdC5tYXAoZl9hLCBhc18pLFxuICBicyxcbik7XG5sZXQgbWFwX2IgPSAoZl9iOiAnYiA9PiAnYywgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYykgPT4gKFxuICBhc18sXG4gIExpc3QubWFwKGZfYiwgYnMpLFxuKTtcbmxldCBtYXBfYWJhcyA9XG4gICAgKGZfYWJhOiAoKCdhLCAnYiwgJ2EpKSA9PiAnYywgKGFzXywgXykgYXMgYWJhOiB0KCdhLCAnYikpOiB0KCdhLCAnYykgPT4gKFxuICBhc18sXG4gIExpc3QubWFwKGZfYWJhLCBhYmFfdHJpcGxlcyhhYmEpKSxcbik7XG5sZXQgbWFwX2hkID0gKGZfYTogJ2EgPT4gJ2EsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYSwgJ2IpID0+IChcbiAgW2FzXyB8PiBMaXN0LmhkIHw+IGZfYSwgLi4uYXNfIHw+IExpc3QudGxdLFxuICBicyxcbik7XG5cbmxldCB0cmltID0gKChhc18sIGJzKTogdCgnYSwgJ2IpKTogb3B0aW9uKCgnYSwgdCgnYiwgJ2EpLCAnYSkpID0+XG4gIHN3aXRjaCAoYnMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW18sIC4uLl9dID0+XG4gICAgbGV0IChsLCBhc18pID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoYXNfKTtcbiAgICBsZXQgKGFzXywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGFzXyk7XG4gICAgU29tZSgobCwgbWsoYnMsIGFzXyksIHIpKTtcbiAgfTtcblxubGV0IHNwbGl0ID0gKGY6ICdjID0+IEVpdGhlci50KCdhLCAnYiksIGNzOiBsaXN0KCdjKSk6IHQobGlzdCgnYSksICdiKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKGMsIChhc18sIGJzKSkgPT5cbiAgICAgIHN3aXRjaCAoZihjKSkge1xuICAgICAgfCBMKGEpID0+XG4gICAgICAgIGxldCAoaGQsIHRsKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGFzXyk7XG4gICAgICAgIChbW2EsIC4uLmhkXSwgLi4udGxdLCBicyk7XG4gICAgICB8IFIoYikgPT4gKFtbXSwgLi4uYXNfXSwgW2IsIC4uLmJzXSlcbiAgICAgIH0sXG4gICAgY3MsXG4gICAgbWsoW1tdXSwgW10pLFxuICApO1xuXG5sZXQgam9pbiA9IChmX2E6ICdhID0+ICdjLCBmX2I6ICdiID0+ICdjLCBhYmE6IHQoJ2EsICdiKSk6IGxpc3QoJ2MpID0+IHtcbiAgbGV0IChhc18sIGEpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnZXRfYXMoYWJhKSk7XG4gIGxldCBicyA9IGdldF9icyhhYmEpO1xuICBMaXN0LmZvbGRfcmlnaHQyKFxuICAgIChhLCBiLCBjcykgPT4gW2ZfYShhKSwgZl9iKGIpLCAuLi5jc10sXG4gICAgYXNfLFxuICAgIGJzLFxuICAgIFtmX2EoYSldLFxuICApO1xufTtcblxubGV0IGZvbGRfbGVmdCA9XG4gICAgKGZfYTogJ2EgPT4gJ2FjYywgZl9iYTogKCdhY2MsICdiLCAnYSkgPT4gJ2FjYywgKGFzXywgYnMpOiB0KCdhLCAnYikpXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IChhLCBhc18pID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoYXNfKTtcbiAgTGlzdC5mb2xkX2xlZnQyKGZfYmEsIGZfYShhKSwgYnMsIGFzXyk7XG59O1xubGV0IGZvbGRfbGVmdF9tYXAgPVxuICAgIChcbiAgICAgIGZfYTogJ2EgPT4gKCdhY2MsICdjKSxcbiAgICAgIGZfYmE6ICgnYWNjLCAnYiwgJ2EpID0+ICgnYWNjLCAnZCwgJ2MpLFxuICAgICAgYWJhOiB0KCdhLCAnYiksXG4gICAgKVxuICAgIDogKCdhY2MsIHQoJ2MsICdkKSkgPT5cbiAgYWJhXG4gIHw+IGZvbGRfbGVmdChcbiAgICAgICBhID0+IHtcbiAgICAgICAgIGxldCAoYWNjLCBjKSA9IGZfYShhKTtcbiAgICAgICAgIChhY2MsIHNpbmdsZXRvbihjKSk7XG4gICAgICAgfSxcbiAgICAgICAoKGFjYywgbWFwcGVkKSwgYiwgYSkgPT4ge1xuICAgICAgICAgbGV0IChhY2MsIGQsIGMpID0gZl9iYShhY2MsIGIsIGEpO1xuICAgICAgICAgKGFjYywgc25vYyhtYXBwZWQsIGQsIGMpKTtcbiAgICAgICB9LFxuICAgICApO1xuXG5sZXQgZm9sZF9yaWdodCA9XG4gICAgKGZfYWI6ICgnYSwgJ2IsICdjKSA9PiAnYywgZl9hOiAnYSA9PiAnYywgKGFzXywgYnMpOiB0KCdhLCAnYikpID0+IHtcbiAgbGV0IChhc18sIGEpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChhc18pO1xuICBMaXN0LmZvbGRfcmlnaHQyKGZfYWIsIGFzXywgYnMsIGZfYShhKSk7XG59O1xuIiwiXG50eXBlIHQgPSBpbnRcbmxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbmxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxubGV0IHRvX2ludCB4ID0geFxubGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuXG5sZXQgaW50ZXJzZWN0IHggeSA9IHggbGFuZCB5IDw+IDBcbmxldCAoKyspIHggeSA9IHggbG9yIHlcblxubGV0IGR1bW15ID0gLTFcbmxldCBpbmV4aXN0YW50ID0gMVxubGV0IGxldHRlciA9IDJcbmxldCBub3RfbGV0dGVyID0gNFxubGV0IG5ld2xpbmUgPSA4XG5sZXQgbGFzdG5ld2xpbmUgPSAxNlxubGV0IHNlYXJjaF9ib3VuZGFyeSA9IDMyXG5cbmxldCBmcm9tX2NoYXIgPSBmdW5jdGlvblxuICAoKiBTaG91bGQgbWF0Y2ggW2N3b3JkXSBkZWZpbml0aW9uICopXG4gIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcMTcwJyB8ICdcXDE4MScgfCAnXFwxODYnXG4gIHwgJ1xcMTkyJy4uJ1xcMjE0JyB8ICdcXDIxNicuLidcXDI0NicgfCAnXFwyNDgnLi4nXFwyNTUnIC0+XG4gICAgbGV0dGVyXG4gIHwgJ1xcbicgLT5cbiAgICBub3RfbGV0dGVyICsrIG5ld2xpbmVcbiAgfCBfIC0+XG4gICAgbm90X2xldHRlclxuIiwiKCoqIFZlcnkgc21hbGwgdG9vbGluZyBmb3IgZm9ybWF0IHByaW50ZXJzLiAqKVxuXG5pbmNsdWRlIEZvcm1hdFxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGxpc3QgPSBwcF9wcmludF9saXN0XG5sZXQgc3RyID0gcHBfcHJpbnRfc3RyaW5nXG5sZXQgc2V4cCBmbXQgcyBwcCB4ID0gZnByaW50ZiBmbXQgXCJAWzwzPiglc0AgJWEpQF1cIiBzIHBwIHhcbmxldCBwYWlyIHBwMSBwcDIgZm10ICh2MSx2MikgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgOyBwcDIgZm10IHYyXG5sZXQgdHJpcGxlIHBwMSBwcDIgcHAzIGZtdCAodjEsIHYyLCB2MykgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDIgZm10IHYyOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDMgZm10IHYzXG5sZXQgaW50ID0gcHBfcHJpbnRfaW50XG5sZXQgb3B0aW50IGZtdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaSAtPiBmcHJpbnRmIGZtdCBcIkAgJWRcIiBpXG5cbmxldCBxdW90ZSBmbXQgcyA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiBzXG5cbmxldCBwcF9vbGlzdCBwcF9lbGVtIGZtdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDM+W0AgJWFAIF1AXVwiXG4gICAgKHBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGZwcmludGYgZm10IFwiO0AgXCIpXG4gICAgICAgcHBfZWxlbSlcblxubGV0IHBwX3N0cl9saXN0ID0gcHBfb2xpc3QgcXVvdGVcblxubGV0IHRvX3RvX3N0cmluZyBwcCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIHBwIGZtdCB4O1xuICBCdWZmZXIuY29udGVudHMgYlxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBjID0gaW50XG50eXBlIHQgPSAoYyAqIGMpIGxpc3RcblxubGV0IHJlYyB1bmlvbiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBsJ1xuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyICsgMSA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6dW5pb24gciBsJ1xuICAgIGVsc2UgaWYgYzInICsgMSA8IGMxIHRoZW5cbiAgICAgIChjMScsIGMyJyk6OnVuaW9uIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIHVuaW9uIHIgKChtaW4gYzEgYzEnLCBjMicpOjpyJylcbiAgICBlbHNlXG4gICAgICB1bmlvbiAoKG1pbiBjMSBjMScsIGMyKTo6cikgcidcblxubGV0IHJlYyBpbnRlciBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IFtdXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICBpbnRlciByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBpbnRlciBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICAobWF4IGMxIGMxJywgYzIpOjppbnRlciByIGwnXG4gICAgZWxzZVxuICAgICAgKG1heCBjMSBjMScsIGMyJyk6OmludGVyIGwgcidcblxubGV0IHJlYyBkaWZmIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OmRpZmYgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgZGlmZiBsIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHInJyA9IGlmIGMyJyA8IGMyIHRoZW4gKGMyJyArIDEsIGMyKSA6OiByIGVsc2UgciBpblxuICAgICAgaWYgYzEgPCBjMScgdGhlblxuICAgICAgICAoYzEsIGMxJyAtIDEpOjpkaWZmIHInJyByJ1xuICAgICAgZWxzZVxuICAgICAgICBkaWZmIHInJyByJ1xuXG5sZXQgc2luZ2xlIGMgPSBbYywgY11cblxubGV0IGFkZCBjIGwgPSB1bmlvbiAoc2luZ2xlIGMpIGxcblxubGV0IHNlcSBjIGMnID0gaWYgYyA8PSBjJyB0aGVuIFtjLCBjJ10gZWxzZSBbYycsIGNdXG5cbmxldCByZWMgb2Zmc2V0IG8gbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAgICAgICAgLT4gW11cbiAgfCAoYzEsIGMyKSA6OiByIC0+IChjMSArIG8sIGMyICsgbykgOjogb2Zmc2V0IG8gclxuXG5sZXQgZW1wdHkgPSBbXVxuXG5sZXQgcmVjIG1lbSAoYyA6IGludCkgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICAgIFtdICAgICAgICAgICAgICAtPiBmYWxzZVxuICB8IChjMSwgYzIpIDo6IHJlbSAtPiBpZiBjIDw9IGMyIHRoZW4gYyA+PSBjMSBlbHNlIG1lbSBjIHJlbVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG5cbmxldCByZWMgaGFzaF9yZWMgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAtPiAwXG4gIHwgKGksIGopOjpyIC0+IGkgKyAxMyAqIGogKyAyNTcgKiBoYXNoX3JlYyByXG5sZXQgaGFzaCBsID0gKGhhc2hfcmVjIGwpIGxhbmQgMHgzRkZGRkZGRlxuXG4oKioqKilcblxubGV0IHByaW50X29uZSBjaCAoYzEsIGMyKSA9XG4gIGlmIGMxID0gYzIgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWRcIiBjMVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGMxIGMyXG5cbmxldCBwcCA9IEZtdC5saXN0IHByaW50X29uZVxuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKHgsIHkpOjp4cyAtPlxuICAgIGYgeCB5O1xuICAgIGl0ZXIgeHMgIH5mXG5cbmxldCBvbmVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgW2ksIGpdIHdoZW4gaSA9IGogLT4gU29tZSBpXG4gIHwgXyAtPiBOb25lXG5cblxubW9kdWxlIENTZXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50ICogKGludCAqIGludCkgbGlzdFxuICAgIGxldCBjb21wYXJlIChpLCB1KSAoaiwgdikgPVxuICAgICAgbGV0IGMgPSBjb21wYXJlIGkgaiBpblxuICAgICAgaWYgYyA8PiAwXG4gICAgICB0aGVuIGNcbiAgICAgIGVsc2UgY29tcGFyZSB1IHZcbiAgZW5kKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gTGlzdC5mb2xkX3JpZ2h0IGYgdCBpbml0XG5cbmxldCBjc2luZ2xlIGMgPSBzaW5nbGUgKENoYXIuY29kZSBjKVxuXG5sZXQgY2FueSA9IFswLCAyNTVdXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHJlYyBwcmVwZW5kIHMgeCBsID1cbiAgbWF0Y2ggcywgbCB3aXRoXG4gIHwgW10sIF8gLT4gbFxuICB8IF9yLCBbXSAtPiBbXVxuICB8IChfYywgYycpIDo6IHIsIChbZCwgX2QnXSwgX3gnKSA6OiBfcicgd2hlbiBjJyA8IGQgLT4gcHJlcGVuZCByIHggbFxuICB8IChjLCBjJykgOjogciwgKFtkLCBkJ10sIHgnKSA6OiByJyAtPlxuICAgIGlmIGMgPD0gZCB0aGVuIGJlZ2luXG4gICAgICBpZiBjJyA8IGQnXG4gICAgICB0aGVuIChbZCwgYyddLCB4IEAgeCcpIDo6IHByZXBlbmQgciB4ICgoW2MnICsgMSwgZCddLCB4JykgOjogcicpXG4gICAgICBlbHNlIChbZCwgZCddLCB4IEAgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGMgPiBkJ1xuICAgICAgdGhlbiAoW2QsIGQnXSwgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgICBlbHNlIChbZCwgYyAtIDFdLCB4JykgOjogcHJlcGVuZCBzIHggKChbYywgZCddLCB4JykgOjogcicpXG4gICAgZW5kXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHBpY2sgPSBmdW5jdGlvblxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiUmVfY3NldC5waWNrXCJcbiAgfCAoeCwgXyk6Ol8gLT4geFxuIiwiXG5tb2R1bGUgUG1hcmsgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG4gIGxldCByID0gcmVmIDBcbiAgbGV0IGdlbiAoKSA9IGluY3IgciA7ICFyXG5cbiAgbGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kXG5cbmluY2x1ZGUgUG1hcmtcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZShQbWFyaylcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgc2VtID0gWyBgTG9uZ2VzdCB8IGBTaG9ydGVzdCB8IGBGaXJzdCBdXG5cbnR5cGUgcmVwX2tpbmQgPSBbIGBHcmVlZHkgfCBgTm9uX2dyZWVkeSBdXG5cbnR5cGUgbWFyayA9IGludFxudHlwZSBpZHggPSBpbnRcblxudHlwZSBleHByID0geyBpZCA6IGludDsgZGVmIDogZGVmIH1cblxuYW5kIGRlZiA9XG4gICAgQ3N0IG9mIENzZXQudFxuICB8IEFsdCBvZiBleHByIGxpc3RcbiAgfCBTZXEgb2Ygc2VtICogZXhwciAqIGV4cHJcbiAgfCBFcHNcbiAgfCBSZXAgb2YgcmVwX2tpbmQgKiBzZW0gKiBleHByXG4gIHwgTWFyayBvZiBpbnRcbiAgfCBFcmFzZSBvZiBpbnQgKiBpbnRcbiAgfCBCZWZvcmUgb2YgQ2F0ZWdvcnkudFxuICB8IEFmdGVyIG9mIENhdGVnb3J5LnRcbiAgfCBQbWFyayBvZiBQbWFyay50XG5cbmxldCBoYXNoX2NvbWJpbmUgaCBhY2N1ID0gYWNjdSAqIDY1NTk5ICsgaFxuXG5tb2R1bGUgTWFya3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1hcmtzIDogKGludCAqIGludCkgbGlzdFxuICAgIDsgcG1hcmtzIDogUG1hcmsuU2V0LnQgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWFya3MgPSBbXSA7IHBtYXJrcyA9IFBtYXJrLlNldC5lbXB0eSB9XG5cbiAgbGV0IHJlYyBtZXJnZV9tYXJrc19vZmZzZXQgb2xkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBvbGRcbiAgICB8IChpLCB2KSA6OiByZW0gLT5cbiAgICAgIGxldCBudycgPSBtZXJnZV9tYXJrc19vZmZzZXQgKExpc3QucmVtb3ZlX2Fzc3EgaSBvbGQpIHJlbSBpblxuICAgICAgaWYgdiA9IC0yIHRoZW5cbiAgICAgICAgbncnXG4gICAgICBlbHNlXG4gICAgICAgIChpLCB2KSA6OiBudydcblxuICBsZXQgbWVyZ2Ugb2xkIG53ID1cbiAgICB7IG1hcmtzID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZC5tYXJrcyBudy5tYXJrc1xuICAgIDsgcG1hcmtzID0gUG1hcmsuU2V0LnVuaW9uIG9sZC5wbWFya3MgbncucG1hcmtzIH1cblxuICBsZXQgcmVjIGhhc2hfbWFya3Nfb2Zmc2V0IGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAgICAgICAgICAtPiBhY2N1XG4gICAgfCAoYSwgaSkgOjogciAtPiBoYXNoX21hcmtzX29mZnNldCByIChoYXNoX2NvbWJpbmUgYSAoaGFzaF9jb21iaW5lIGkgYWNjdSkpXG5cbiAgbGV0IGhhc2ggbSBhY2N1ID1cbiAgICBoYXNoX21hcmtzX29mZnNldCBtLm1hcmtzIChoYXNoX2NvbWJpbmUgKEhhc2h0YmwuaGFzaCBtLnBtYXJrcykgYWNjdSlcblxuICBsZXQgcmVjIG1hcmtzX3NldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgICB8IChhLCAtMSkgOjogcmVtIC0+XG4gICAgICAoYSwgaWR4KSA6OiBtYXJrc19zZXRfaWR4IGlkeCByZW1cbiAgICB8IG1hcmtzIC0+XG4gICAgICBtYXJrc1xuXG4gIGxldCBtYXJrc19zZXRfaWR4IG1hcmtzIGlkeCA9XG4gICAgeyBtYXJrcyB3aXRoIG1hcmtzID0gbWFya3Nfc2V0X2lkeCBpZHggbWFya3MubWFya3MgfVxuXG4gIGxldCBwcF9tYXJrcyBjaCB0ID1cbiAgICBtYXRjaCB0Lm1hcmtzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICAgIHwgKGEsIGkpIDo6IHIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBhIGk7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biAoYSwgaSkgLT4gRm9ybWF0LmZwcmludGYgY2ggXCIgJWQtJWRcIiBhIGkpIHJcbmVuZFxuXG4oKioqKilcblxubGV0IHBwX3NlbSBjaCBrID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBjaFxuICAgIChtYXRjaCBrIHdpdGhcbiAgICAgICBgU2hvcnRlc3QgLT4gXCJzaG9ydFwiXG4gICAgIHwgYExvbmdlc3QgIC0+IFwibG9uZ1wiXG4gICAgIHwgYEZpcnN0ICAgIC0+IFwiZmlyc3RcIilcblxuXG5sZXQgcHBfcmVwX2tpbmQgZm10ID0gZnVuY3Rpb25cbiAgfCBgR3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiR3JlZWR5XCJcbiAgfCBgTm9uX2dyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbl9ncmVlZHlcIlxuXG5sZXQgcmVjIHBwIGNoIGUgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbWF0Y2ggZS5kZWYgd2l0aFxuICAgIENzdCBsIC0+XG4gICAgc2V4cCBjaCBcImNzdFwiIENzZXQucHAgbDtcbiAgfCBBbHQgbCAtPlxuICAgIHNleHAgY2ggXCJhbHRcIiAobGlzdCBwcCkgbFxuICB8IFNlcSAoaywgZSwgZScpIC0+XG4gICAgc2V4cCBjaCBcInNlcVwiICh0cmlwbGUgcHBfc2VtIHBwIHBwKSAoaywgZSwgZScpXG4gIHwgRXBzIC0+XG4gICAgc3RyIGNoIFwiZXBzXCJcbiAgfCBSZXAgKF9yaywgaywgZSkgLT5cbiAgICBzZXhwIGNoIFwicmVwXCIgKHBhaXIgcHBfc2VtIHBwKSAoaywgZSlcbiAgfCBNYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwibWFya1wiIGludCBpXG4gIHwgUG1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJwbWFya1wiIGludCAoaSA6PiBpbnQpXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgc2V4cCBjaCBcImVyYXNlXCIgKHBhaXIgaW50IGludCkgKGIsIGUpXG4gIHwgQmVmb3JlIGMgLT5cbiAgICBzZXhwIGNoIFwiYmVmb3JlXCIgQ2F0ZWdvcnkucHAgY1xuICB8IEFmdGVyIGMgLT5cbiAgICBzZXhwIGNoIFwiYWZ0ZXJcIiBDYXRlZ29yeS5wcCBjXG5cblxuKCoqKiopXG5cbmxldCByZWMgZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBOb25lXG4gIHwgeCA6OiByIC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIE5vbmUgICAgICAgICAgLT4gZmlyc3QgZiByXG4gICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlc1xuXG4oKioqKilcblxudHlwZSBpZHMgPSBpbnQgcmVmXG5sZXQgY3JlYXRlX2lkcyAoKSA9IHJlZiAwXG5cbmxldCBlcHNfZXhwciA9IHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuXG5sZXQgbWtfZXhwciBpZHMgZGVmID1cbiAgaW5jciBpZHM7XG4gIHsgaWQgPSAhaWRzOyBkZWYgPSBkZWYgfVxuXG5sZXQgZW1wdHkgaWRzID0gbWtfZXhwciBpZHMgKEFsdCBbXSlcblxubGV0IGNzdCBpZHMgcyA9XG4gIGlmIENzZXQuaXNfZW1wdHkgc1xuICB0aGVuIGVtcHR5IGlkc1xuICBlbHNlIG1rX2V4cHIgaWRzIChDc3QgcylcblxubGV0IGFsdCBpZHMgPSBmdW5jdGlvblxuICB8IFtdICAtPiBlbXB0eSBpZHNcbiAgfCBbY10gLT4gY1xuICB8IGwgICAtPiBta19leHByIGlkcyAoQWx0IGwpXG5cbmxldCBzZXEgaWRzIGtpbmQgeCB5ID1cbiAgbWF0Y2ggeC5kZWYsIHkuZGVmIHdpdGhcbiAgICBBbHQgW10sIF8gICAgICAgICAgICAgICAgIC0+IHhcbiAgfCBfLCBBbHQgW10gICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBFcHMsIF8gICAgICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBfLCBFcHMgd2hlbiBraW5kID0gYEZpcnN0IC0+IHhcbiAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgIC0+IG1rX2V4cHIgaWRzIChTZXEgKGtpbmQsIHgsIHkpKVxuXG5sZXQgaXNfZXBzIGV4cHIgPVxuICBtYXRjaCBleHByLmRlZiB3aXRoXG4gIHwgRXBzIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCBlcHMgaWRzID0gbWtfZXhwciBpZHMgRXBzXG5cbmxldCByZXAgaWRzIGtpbmQgc2VtIHggPSBta19leHByIGlkcyAoUmVwIChraW5kLCBzZW0sIHgpKVxuXG5sZXQgbWFyayBpZHMgbSA9IG1rX2V4cHIgaWRzIChNYXJrIG0pXG5cbmxldCBwbWFyayBpZHMgaSA9IG1rX2V4cHIgaWRzIChQbWFyayBpKVxuXG5sZXQgZXJhc2UgaWRzIG0gbScgPSBta19leHByIGlkcyAoRXJhc2UgKG0sIG0nKSlcblxubGV0IGJlZm9yZSBpZHMgYyA9IG1rX2V4cHIgaWRzIChCZWZvcmUgYylcblxubGV0IGFmdGVyIGlkcyBjID0gbWtfZXhwciBpZHMgKEFmdGVyIGMpXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlbmFtZSBpZHMgeCA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgXyB8IEVwcyB8IE1hcmsgXyB8IFBtYXJrIF8gfCBFcmFzZSBfIHwgQmVmb3JlIF8gfCBBZnRlciBfIC0+XG4gICAgbWtfZXhwciBpZHMgeC5kZWZcbiAgfCBBbHQgbCAtPlxuICAgIG1rX2V4cHIgaWRzIChBbHQgKExpc3QubWFwIChyZW5hbWUgaWRzKSBsKSlcbiAgfCBTZXEgKGssIHksIHopIC0+XG4gICAgbWtfZXhwciBpZHMgKFNlcSAoaywgcmVuYW1lIGlkcyB5LCByZW5hbWUgaWRzIHopKVxuICB8IFJlcCAoZywgaywgeSkgLT5cbiAgICBta19leHByIGlkcyAoUmVwIChnLCBrLCByZW5hbWUgaWRzIHkpKVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG50eXBlIG1hcmtfaW5mb3MgPSBpbnQgYXJyYXlcbnR5cGUgc3RhdHVzID0gRmFpbGVkIHwgTWF0Y2ggb2YgbWFya19pbmZvcyAqIFBtYXJrLlNldC50IHwgUnVubmluZ1xuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVFNlcSBvZiB0IGxpc3QgKiBleHByICogc2VtXG4gICAgfCBURXhwIG9mIE1hcmtzLnQgKiBleHByXG4gICAgfCBUTWF0Y2ggb2YgTWFya3MudFxuXG4gIGxldCByZWMgZXF1YWwgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IFRTZXEgKGwxJywgZTEsIF8pIDo6IHIxLCBUU2VxIChsMicsIGUyLCBfKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBlcXVhbCBsMScgbDInICYmIGVxdWFsIHIxIHIyXG4gICAgfCBURXhwIChtYXJrczEsIGUxKSA6OiByMSwgVEV4cCAobWFya3MyLCBlMikgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBUTWF0Y2ggbWFya3MxIDo6IHIxLCBUTWF0Y2ggbWFya3MyIDo6IHIyIC0+XG4gICAgICBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IHJlYyBoYXNoIGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYWNjdVxuICAgIHwgVFNlcSAobCcsIGUsIF8pIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MTcyYTFiY2UgKGhhc2hfY29tYmluZSBlLmlkIChoYXNoIGwnIGFjY3UpKSlcbiAgICB8IFRFeHAgKG1hcmtzLCBlKSA6OiByIC0+XG4gICAgICBoYXNoIHJcbiAgICAgICAgKGhhc2hfY29tYmluZSAweDJiNGMwZDc3IChoYXNoX2NvbWJpbmUgZS5pZCAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSkpXG4gICAgfCBUTWF0Y2ggbWFya3MgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxYzIwNWFkNSAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSlcblxuICBsZXQgdGV4cCBtYXJrcyB4ID0gVEV4cCAobWFya3MsIHgpXG5cbiAgbGV0IHRzZXEga2luZCB4IHkgcmVtID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gcmVtXG4gICAgfCBbVEV4cCAobWFya3MsIHtkZWYgPSBFcHMgOyBffSldIC0+IFRFeHAgKG1hcmtzLCB5KSA6OiByZW1cbiAgICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVFNlcSAoeCwgeSwga2luZCkgOjogcmVtXG5cbiAgbGV0IHJlYyBwcmludF9zdGF0ZV9yZWMgY2ggZSB5ID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IFRNYXRjaCBtYXJrcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihNYXRjaEAgJWEpQF1cIiBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVFNlcSAobCcsIHgsIF9raW5kKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihTZXFAIFwiO1xuICAgICAgcHJpbnRfc3RhdGVfbHN0IGNoIGwnIHg7XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgJWEpQF1cIiBwcCB4XG4gICAgfCBURXhwIChtYXJrcywge2RlZiA9IEVwczsgX30pIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAIChlcHMpKUBdXCIgeS5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVEV4cCAobWFya3MsIHgpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAICVhKUBdXCIgeC5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrcyBwcCB4XG5cbiAgYW5kIHByaW50X3N0YXRlX2xzdCBjaCBsIHkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiKClcIlxuICAgIHwgZSA6OiByZW0gLT5cbiAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHk7XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCB8IFwiO1xuICAgICAgICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5KVxuICAgICAgICByZW1cblxuICBsZXQgcHAgY2ggdCA9IHByaW50X3N0YXRlX2xzdCBjaCBbdF0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBpZHg6IGlkeFxuICAgIDsgY2F0ZWdvcnk6IENhdGVnb3J5LnRcbiAgICA7IGRlc2M6IEUudCBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YXR1czogc3RhdHVzIG9wdGlvblxuICAgIDsgaGFzaDogaGFzaCB9XG5cbiAgbGV0IGR1bW15ID1cbiAgICB7IGlkeCA9IC0xXG4gICAgOyBjYXRlZ29yeSA9IENhdGVnb3J5LmR1bW15XG4gICAgOyBkZXNjID0gW11cbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSAtMSB9XG5cbiAgbGV0IGhhc2ggaWR4IGNhdCBkZXNjID1cbiAgICBFLmhhc2ggZGVzYyAoaGFzaF9jb21iaW5lIGlkeCAoaGFzaF9jb21iaW5lIChDYXRlZ29yeS50b19pbnQgY2F0KSAwKSkgbGFuZCAweDNGRkZGRkZGXG5cbiAgbGV0IG1rIGlkeCBjYXQgZGVzYyA9XG4gICAgeyBpZHhcbiAgICA7IGNhdGVnb3J5ID0gY2F0XG4gICAgOyBkZXNjXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gaGFzaCBpZHggY2F0IGRlc2N9XG5cbiAgbGV0IGNyZWF0ZSBjYXQgZSA9IG1rIDAgY2F0IFtFLlRFeHAgKE1hcmtzLmVtcHR5LCBlKV1cblxuICBsZXQgZXF1YWwgeCB5ID1cbiAgICAoeC5oYXNoIDogaW50KSA9IHkuaGFzaCAmJiAoeC5pZHggOiBpbnQpID0geS5pZHggJiZcbiAgICBDYXRlZ29yeS5lcXVhbCB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgJiYgRS5lcXVhbCB4LmRlc2MgeS5kZXNjXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICBsZXQgYyA9IGNvbXBhcmUgKHguaGFzaCA6IGludCkgeS5oYXNoIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICBsZXQgYyA9IENhdGVnb3J5LmNvbXBhcmUgeC5jYXRlZ29yeSB5LmNhdGVnb3J5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgY29tcGFyZSB4LmRlc2MgeS5kZXNjXG5cbiAgdHlwZSB0JyA9IHRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdCdcbiAgICAgIGxldCBlcXVhbCA9IGVxdWFsXG4gICAgICBsZXQgaGFzaCB0ID0gdC5oYXNoXG4gICAgZW5kKVxuZW5kXG5cbigqKioqIEZpbmQgYSBmcmVlIGluZGV4ICoqKiopXG5cbnR5cGUgd29ya2luZ19hcmVhID0gYm9vbCBhcnJheSByZWZcblxubGV0IGNyZWF0ZV93b3JraW5nX2FyZWEgKCkgPSByZWYgW3wgZmFsc2UgfF1cblxubGV0IGluZGV4X2NvdW50IHcgPSBBcnJheS5sZW5ndGggIXdcblxubGV0IHJlc2V0X3RhYmxlIGEgPSBBcnJheS5maWxsIGEgMCAoQXJyYXkubGVuZ3RoIGEpIGZhbHNlXG5cbmxldCByZWMgbWFya191c2VkX2luZGljZXMgdGJsID1cbiAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgfCBFLlRTZXEgKGwsIF8sIF8pIC0+IG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsXG4gICAgICB8IEUuVEV4cCAobWFya3MsIF8pXG4gICAgICB8IEUuVE1hdGNoIG1hcmtzIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIChfLCBpKSAtPiBpZiBpID49IDAgdGhlbiB0YmwuKGkpIDwtIHRydWUpXG4gICAgICAgICAgbWFya3MuTWFya3MubWFya3MpXG5cbmxldCByZWMgZmluZF9mcmVlIHRibCBpZHggbGVuID1cbiAgaWYgaWR4ID0gbGVuIHx8IG5vdCB0YmwuKGlkeCkgdGhlbiBpZHggZWxzZSBmaW5kX2ZyZWUgdGJsIChpZHggKyAxKSBsZW5cblxubGV0IGZyZWVfaW5kZXggdGJsX3JlZiBsID1cbiAgbGV0IHRibCA9ICF0YmxfcmVmIGluXG4gIHJlc2V0X3RhYmxlIHRibDtcbiAgbWFya191c2VkX2luZGljZXMgdGJsIGw7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdGJsIGluXG4gIGxldCBpZHggPSBmaW5kX2ZyZWUgdGJsIDAgbGVuIGluXG4gIGlmIGlkeCA9IGxlbiB0aGVuIHRibF9yZWYgOj0gQXJyYXkubWFrZSAoMiAqIGxlbikgZmFsc2U7XG4gIGlkeFxuXG4oKioqKiBDb21wdXRhdGlvbiBvZiB0aGUgbmV4dCBzdGF0ZSAqKioqKVxuXG5sZXQgcmVtb3ZlX21hdGNoZXMgPSBMaXN0LmZpbHRlciAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcblxubGV0IHJlYyBzcGxpdF9hdF9tYXRjaF9yZWMgbCcgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRS5UTWF0Y2ggXyA6OiByIC0+IChMaXN0LnJldiBsJywgcmVtb3ZlX21hdGNoZXMgcilcbiAgfCB4IDo6IHIgICAgICAgIC0+IHNwbGl0X2F0X21hdGNoX3JlYyAoeCA6OiBsJykgclxuXG5sZXQgc3BsaXRfYXRfbWF0Y2ggbCA9IHNwbGl0X2F0X21hdGNoX3JlYyBbXSBsXG5cbmxldCByZWMgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsIHkgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPlxuICAgIChbXSwgcHJldilcbiAgfCBFLlRNYXRjaCBfIGFzIHggOjogXyAtPiAoKiBUcnVuY2F0ZSBhZnRlciBmaXJzdCBtYXRjaCAqKVxuICAgIChbeF0sIHByZXYpXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIGxldCAobCcnLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwnIHggaW5cbiAgICBsZXQgKHInLCBwcmV2JycpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldicgciB5IGluXG4gICAgKEUudHNlcSBraW5kIGwnJyB4IHInLCBwcmV2JycpXG4gIHwgRS5URXhwIChfbWFya3MsIHtkZWYgPSBFcHM7IF99KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeS5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHkuaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG4gIHwgRS5URXhwIChfbWFya3MsIHgpIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB4LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeC5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcblxubGV0IHJlYyBzZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEUuVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICBFLlRNYXRjaCAoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgRS5UU2VxIChzZXRfaWR4IGlkeCBsJywgeCwga2luZCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVEV4cCAobWFya3MsIHgpIDo6IHIgLT5cbiAgICBFLlRFeHAgKChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCksIHgpIDo6IHNldF9pZHggaWR4IHJcblxubGV0IGZpbHRlcl9tYXJrcyBiIGUgbWFya3MgPVxuICB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IExpc3QuZmlsdGVyIChmdW4gKGksIF8pIC0+IGkgPCBiIHx8IGkgPiBlKSBtYXJrcy5NYXJrcy5tYXJrcyB9XG5cbmxldCByZWMgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICAoKkZvcm1hdC5lcHJpbnRmIFwiJWRALlwiIHguaWQ7KilcbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBzIC0+XG4gICAgaWYgQ3NldC5tZW0gYyBzIHRoZW4gRS50ZXhwIG1hcmtzIGVwc19leHByIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGxldCAoeScnLCBtYXJrcycpID1cbiAgICAgIG1hdGNoXG4gICAgICAgIGZpcnN0XG4gICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHknXG4gICAgICB3aXRoXG4gICAgICAgIE5vbmUgICAgICAgIC0+ICh5JywgbWFya3MpXG4gICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB5JywgbWFya3MnKVxuICAgIGluXG4gICAgYmVnaW4gbWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB5JycgeCAoRS5UTWF0Y2ggbWFya3MnIDo6IHJlbSlcbiAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeScnIHggcmVtXG4gICAgZW5kXG4gIHwgRXBzIC0+XG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IFBtYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MucG1hcmtzID0gUG1hcmsuU2V0LmFkZCBpIG1hcmtzLk1hcmtzLnBtYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgRS5UTWF0Y2ggKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpIDo6IHJlbVxuICB8IEJlZm9yZSBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBuZXh0X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFmdGVyIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IHByZXZfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG5cbmFuZCBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmFuZCBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeSB6IHJlbSA9XG4gIG1hdGNoXG4gICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHlcbiAgd2l0aFxuICAgIE5vbmUgLT5cbiAgICBFLnRzZXEga2luZCB5IHogcmVtXG4gIHwgU29tZSBtYXJrcyAtPlxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgYExvbmdlc3QgLT5cbiAgICAgIEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IHJlbSlcbiAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgelxuICAgICAgICAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogcmVtKVxuICAgIHwgYEZpcnN0IC0+XG4gICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgRS50c2VxIGtpbmQgeScgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiAoRS50c2VxIGtpbmQgeScnIHogcmVtKSlcblxubGV0IHJlYyBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICB4IDo6IHJlbVxuXG5hbmQgZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5sZXQgZGVsdGEgdGJsX3JlZiBuZXh0X2NhdCBjaGFyIHN0ID1cbiAgbGV0IHByZXZfY2F0ID0gc3QuU3RhdGUuY2F0ZWdvcnkgaW5cbiAgbGV0IChleHByJywgXykgPVxuICAgIHJlbW92ZV9kdXBsaWNhdGVzIFtdXG4gICAgICAoZGVsdGFfNCBjaGFyIH5uZXh0X2NhdCB+cHJldl9jYXQgc3QuU3RhdGUuZGVzYyBbXSlcbiAgICAgIGVwc19leHByIGluXG4gIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gIFN0YXRlLm1rIGlkeCBuZXh0X2NhdCBleHByJydcblxuKCoqKiopXG5cbmxldCByZWMgcmVkX3RyID0gZnVuY3Rpb25cbiAgfCBbXSB8IFtfXSBhcyBsIC0+XG4gICAgbFxuICB8ICgoczEsIHN0MSkgYXMgdHIxKSA6OiAoKHMyLCBzdDIpIGFzIHRyMikgOjogcmVtIC0+XG4gICAgaWYgU3RhdGUuZXF1YWwgc3QxIHN0MiB0aGVuXG4gICAgICByZWRfdHIgKChDc2V0LnVuaW9uIHMxIHMyLCBzdDEpIDo6IHJlbSlcbiAgICBlbHNlXG4gICAgICB0cjEgOjogcmVkX3RyICh0cjIgOjogcmVtKVxuXG5sZXQgc2ltcGxfdHIgbCA9XG4gIExpc3Quc29ydFxuICAgIChmdW4gKHMxLCBfKSAoczIsIF8pIC0+IGNvbXBhcmUgczEgczIpXG4gICAgKHJlZF90ciAoTGlzdC5zb3J0IChmdW4gKF8sIHN0MSkgKF8sIHN0MikgLT4gU3RhdGUuY29tcGFyZSBzdDEgc3QyKSBsKSlcblxuKCoqKiopXG5cbmxldCBwcmVwZW5kX2Rlcml2ID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIHgpIGwgLT4gQ3NldC5wcmVwZW5kIHMgeCBsKVxuXG5sZXQgcmVjIHJlc3RyaWN0IHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKHMnLCB4JykgOjogcmVtIC0+XG4gICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgdGhlbiByZXN0cmljdCBzIHJlbVxuICAgIGVsc2UgKHMnJywgeCcpIDo6IHJlc3RyaWN0IHMgcmVtXG5cbmxldCByZWMgcmVtb3ZlX21hcmtzIGIgZSByZW0gPVxuICBpZiBiID4gZSB0aGVuIHJlbSBlbHNlIHJlbW92ZV9tYXJrcyBiIChlIC0gMSkgKChlLCAtMikgOjogcmVtKVxuXG5sZXQgcmVjIHByZXBlbmRfbWFya3NfZXhwciBtID0gZnVuY3Rpb25cbiAgfCBFLlRTZXEgKGwsIGUnLCBzKSAtPiBFLlRTZXEgKHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsLCBlJywgcylcbiAgfCBFLlRFeHAgKG0nLCBlJykgICAtPiBFLlRFeHAgKE1hcmtzLm1lcmdlIG0gbScsIGUnKVxuICB8IEUuVE1hdGNoIG0nICAgICAgIC0+IEUuVE1hdGNoIChNYXJrcy5tZXJnZSBtIG0nKVxuXG5hbmQgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwgPVxuICBMaXN0Lm1hcCAocHJlcGVuZF9tYXJrc19leHByIG0pIGxcblxubGV0IHByZXBlbmRfbWFya3MgbSA9XG4gIExpc3QubWFwIChmdW4gKHMsIHgpIC0+IChzLCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0geCkpXG5cbmxldCByZWMgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gIHwgQ3N0IHMgLT5cbiAgICBDc2V0LnByZXBlbmQgcyBbRS50ZXhwIG1hcmtzIGVwc19leHByXSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHopIHJlbSAtPlxuICAgICAgICAgbGV0ICh6JywgbWFya3MnKSA9XG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgZmlyc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgICAgelxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgTm9uZSAgICAgICAgLT4gKHosIG1hcmtzKVxuICAgICAgICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB6LCBtYXJrcycpXG4gICAgICAgICBpblxuICAgICAgICAgQ3NldC5wcmVwZW5kIHNcbiAgICAgICAgICAgKG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeicgeCBbRS5UTWF0Y2ggbWFya3MnXVxuICAgICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB6JyB4IFtdKVxuICAgICAgICAgICByZW0pXG4gICAgICB5JyByZW1cbiAgfCBFcHMgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAoKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgUG1hcmsgXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzXG4gICAgICBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAocmVtb3ZlX21hcmtzIGIgZSAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgQmVmb3JlIGNhdCcgLT5cbiAgICBDc2V0LnByZXBlbmQgKExpc3QuYXNzcSBjYXQnIGNhdGVnb3JpZXMpIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgQWZ0ZXIgY2F0JyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBjYXQgY2F0JyB0aGVuIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW0gZWxzZSByZW1cblxuYW5kIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHIgcmVtKVxuXG5hbmQgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHkgeiByZW0gPVxuICBpZlxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIChfcywgeGwpIC0+XG4gICAgICAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgeGwpXG4gICAgICB5XG4gIHRoZW5cbiAgICBsZXQgeicgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIE1hcmtzLmVtcHR5IGNhdCB6IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB5KSByZW0gLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgIHlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgICAgTm9uZSAtPlxuICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeSB6IFtdKSByZW1cbiAgICAgICAgIHwgU29tZSBtYXJrcyAtPlxuICAgICAgICAgICBsZXQgeicnID0gcHJlcGVuZF9tYXJrcyBtYXJrcyB6JyBpblxuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICBgTG9uZ2VzdCAtPlxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIHJlbSlcbiAgICAgICAgICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSByZW0pXG4gICAgICAgICAgIHwgYEZpcnN0IC0+XG4gICAgICAgICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknJyB6IFtdKSByZW0pKSlcbiAgICAgIHkgcmVtXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHhsKSByZW0gLT4gQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHhsIHogW10pIHJlbSkgeSByZW1cblxubGV0IHJlYyBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFt4XSByZW1cblxuYW5kIGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHIgcmVtKVxuXG5sZXQgZGVyaXYgdGJsX3JlZiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdCA9XG4gIGxldCBkZXIgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0LlN0YXRlLmNhdGVnb3J5IHN0LlN0YXRlLmRlc2NcbiAgICAgIFsoYWxsX2NoYXJzLCBbXSldIGluXG4gIHNpbXBsX3RyIChcbiAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgZXhwcikgcmVtIC0+XG4gICAgICAgIGxldCAoZXhwcicsIF8pID0gcmVtb3ZlX2R1cGxpY2F0ZXMgW10gZXhwciBlcHNfZXhwciBpblxuKCpcbkZvcm1hdC5lcHJpbnRmIFwiQFs8Mz5AWyVhQF06ICVhIC8gJWFAXUAuXCIgQ3NldC5wcmludCBzIHByaW50X3N0YXRlIGV4cHIgcHJpbnRfc3RhdGUgZXhwcic7XG4qKVxuICAgICAgICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gICAgICAgIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoY2F0JywgcycpIHJlbSAtPlxuICAgICAgICAgICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgICAgICAgICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICAgICAgICAgIHRoZW4gcmVtXG4gICAgICAgICAgICBlbHNlIChzJycsIFN0YXRlLm1rIGlkeCBjYXQnIGV4cHInJykgOjogcmVtKVxuICAgICAgICAgIGNhdGVnb3JpZXMgcmVtKSBkZXIgW10pXG5cbigqKioqKVxuXG5sZXQgZmxhdHRlbl9tYXRjaCBtID1cbiAgbGV0IG1hID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtYSAoaSwgXykgLT4gbWF4IG1hIGkpICgtMSkgbSBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobWEgKyAxKSAoLTEpIGluXG4gIExpc3QuaXRlciAoZnVuIChpLCB2KSAtPiByZXMuKGkpIDwtIHYpIG07XG4gIHJlc1xuXG5sZXQgc3RhdHVzIHMgPVxuICBtYXRjaCBzLlN0YXRlLnN0YXR1cyB3aXRoXG4gICAgU29tZSBzdCAtPlxuICAgIHN0XG4gIHwgTm9uZSAtPlxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBzLlN0YXRlLmRlc2Mgd2l0aFxuICAgICAgICBbXSAgICAgICAgICAgICAgLT4gRmFpbGVkXG4gICAgICB8IEUuVE1hdGNoIG0gOjogXyAtPiBNYXRjaCAoZmxhdHRlbl9tYXRjaCBtLk1hcmtzLm1hcmtzLCBtLk1hcmtzLnBtYXJrcylcbiAgICAgIHwgXyAgICAgICAgICAgICAgIC0+IFJ1bm5pbmdcbiAgICBpblxuICAgIHMuU3RhdGUuc3RhdHVzIDwtIFNvbWUgc3Q7XG4gICAgc3RcbiIsIigqIEluIHJlYWxpdHksIHRoaXMgY2FuIHJlYWxseSBiZSByZXByZXNlbnRlZCBhcyBhIGJvb2wgYXJyYXkuXG5cbiAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSBsaXN0IG9mIGFsbCBjaGFycyBhbG9uZyB3aXRoIGFcbiAgIGZsYWc6XG5cbiAgIChhLCAwKSwgKGIsIDEpLCAoYywgMCksIChkLCAwKSwgLi4uXG5cbiAgIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGNvbG9yIGFyZSByZXByZXNlbnRlZCBieSBzZXF1bmNlcyBvZlxuICAgY2hhcmFjdGVycyB3aXRoIHRoZSBmbGFnIHNldCB0byAwLlxuKilcblxudHlwZSB0ID0gQnl0ZXMudFxuXG5sZXQgbWFrZSAoKSA9IEJ5dGVzLm1ha2UgMjU3ICdcXDAwMCdcblxubGV0IGZsYXR0ZW4gY20gPVxuICBsZXQgYyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGNvbG9yX3JlcHIgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCB2ID0gcmVmIDAgaW5cbiAgQnl0ZXMuc2V0IGMgMCAnXFwwMDAnO1xuICBCeXRlcy5zZXQgY29sb3JfcmVwciAwICdcXDAwMCc7XG4gIGZvciBpID0gMSB0byAyNTUgZG9cbiAgICBpZiBCeXRlcy5nZXQgY20gaSA8PiAnXFwwMDAnIHRoZW4gaW5jciB2O1xuICAgIEJ5dGVzLnNldCBjIGkgKENoYXIuY2hyICF2KTtcbiAgICBCeXRlcy5zZXQgY29sb3JfcmVwciAhdiAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYywgQnl0ZXMuc3ViX3N0cmluZyBjb2xvcl9yZXByIDAgKCF2ICsgMSksICF2ICsgMSlcblxuKCogbWFyayBhbGwgdGhlIGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzIG9mIHRoZSBjaGFyIHNldCB3aXRoIHRoZSAxIGJ5dGUgKilcbmxldCBzcGxpdCBzIGNtID1cbiAgQ3NldC5pdGVyIHMgfmY6KGZ1biBpIGogLT5cbiAgICAgIEJ5dGVzLnNldCBjbSBpICdcXDAwMSc7XG4gICAgICBCeXRlcy5zZXQgY20gKGogKyAxKSAnXFwwMDEnO1xuICAgIClcbiIsIigqIFJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbWF0Y2guICopXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtYXJrcyA6IEF1dG9tYXRhLm1hcmtfaW5mb3NcbiAgOyBwbWFya3MgOiBQbWFyay5TZXQudFxuICA7IGdwb3MgOiBpbnQgYXJyYXlcbiAgOyBnY291bnQgOiBpbnRcbiAgfVxuXG5sZXQgb2Zmc2V0IHQgaSA9XG4gIGlmIDIgKiBpICsgMSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gIGlmIG0xID0gLTEgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgKHAxLCBwMilcblxubGV0IGdldCB0IGkgPVxuICBsZXQgKHAxLCBwMikgPSBvZmZzZXQgdCBpIGluXG4gIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuXG5sZXQgc3RhcnQgc3VicyBpID0gZnN0IChvZmZzZXQgc3VicyBpKVxuXG5sZXQgc3RvcCBzdWJzIGkgPSBzbmQgKG9mZnNldCBzdWJzIGkpXG5cbmxldCB0ZXN0IHQgaSA9XG4gIGlmIDIgKiBpID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW5cbiAgICBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGlkeCA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlkeCA8PiAtMVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICBpZiB0ZXN0IHQgaVxuICB0aGVuIFNvbWUgKGdldCB0IGkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZHVtbXlfb2Zmc2V0ID0gKC0xLCAtMSlcblxubGV0IGFsbF9vZmZzZXQgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X29mZnNldCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIChwMSwgcDIpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZHVtbXlfc3RyaW5nID0gXCJcIlxuXG5sZXQgYWxsIHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9zdHJpbmcgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBwcCBmbXQgdCA9XG4gIGxldCBtYXRjaGVzID1cbiAgICBsZXQgb2Zmc2V0cyA9IGFsbF9vZmZzZXQgdCBpblxuICAgIGxldCBzdHJzID0gYWxsIHQgaW5cbiAgICBBcnJheS50b19saXN0IChcbiAgICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBzdHJzKSAoZnVuIGkgLT4gc3Rycy4oaSksIG9mZnNldHMuKGkpKVxuICAgICkgaW5cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCBwcF9tYXRjaCBmbXQgKHN0ciwgKHN0YXJ0LCBzdG9wKSkgPVxuICAgIGZwcmludGYgZm10IFwiQFsoJXMgKCVkICVkKSlAXVwiIHN0ciBzdGFydCBzdG9wIGluXG4gIHNleHAgZm10IFwiR3JvdXBcIiAobGlzdCBwcF9tYXRjaCkgbWF0Y2hlc1xuXG5sZXQgbmJfZ3JvdXBzIHQgPSB0Lmdjb3VudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubGV0IHJlYyBpdGVyIG4gZiB2ID0gaWYgbiA9IDAgdGhlbiB2IGVsc2UgaXRlciAobiAtIDEpIGYgKGYgdilcblxuKCoqKiopXG5cbmxldCB1bmtub3duID0gLTJcbmxldCBicmVhayA9IC0zXG5cbnR5cGUgbWF0Y2hfaW5mbyA9XG4gIHwgTWF0Y2ggb2YgR3JvdXAudFxuICB8IEZhaWxlZFxuICB8IFJ1bm5pbmcgb2YgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIDogaW50IH1cblxudHlwZSBzdGF0ZSA9XG4gIHsgaWR4IDogaW50O1xuICAgICgqIEluZGV4IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBwb3NpdGlvbiB0YWJsZS5cbiAgICAgICBOb3QgeWV0IGNvbXB1dGVkIHRyYW5zaXRpb25zIHBvaW50IHRvIGEgZHVtbXkgc3RhdGUgd2hlcmVcbiAgICAgICBbaWR4XSBpcyBzZXQgdG8gW3Vua25vd25dO1xuICAgICAgIElmIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdIGZvciBzdGF0ZXMgdGhhdCBlaXRoZXIgYWx3YXlzXG4gICAgICAgc3VjY2VlZCBvciBhbHdheXMgZmFpbC4gKilcbiAgICByZWFsX2lkeCA6IGludDtcbiAgICAoKiBUaGUgcmVhbCBpbmRleCwgaW4gY2FzZSBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSAqKVxuICAgIG5leHQgOiBzdGF0ZSBhcnJheTtcbiAgICAoKiBUcmFuc2l0aW9uIHRhYmxlLCBpbmRleGVkIGJ5IGNvbG9yICopXG4gICAgbXV0YWJsZSBmaW5hbCA6XG4gICAgICAoQ2F0ZWdvcnkudCAqXG4gICAgICAgKEF1dG9tYXRhLmlkeCAqIEF1dG9tYXRhLnN0YXR1cykpIGxpc3Q7XG4gICAgKCogTWFwcGluZyBmcm9tIHRoZSBjYXRlZ29yeSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9cbiAgICAgICAtIHRoZSBpbmRleCB3aGVyZSB0aGUgbmV4dCBwb3NpdGlvbiBzaG91bGQgYmUgc2F2ZWRcbiAgICAgICAtIHBvc3NpYmx5LCB0aGUgbGlzdCBvZiBtYXJrcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMpXG4gICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBiZXN0IG1hdGNoICopXG4gICAgZGVzYyA6IEF1dG9tYXRhLlN0YXRlLnRcbiAgICAoKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG9mIHRoZSBhdXRvbWF0YSAqKSB9XG5cbigqIEF1dG9tYXRhIChjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24pICopXG50eXBlIHJlID1cbiAgeyBpbml0aWFsIDogQXV0b21hdGEuZXhwcjtcbiAgICAoKiBUaGUgd2hvbGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3N0YXRlcyA6IChDYXRlZ29yeS50ICogc3RhdGUpIGxpc3Q7XG4gICAgKCogSW5pdGlhbCBzdGF0ZXMsIGluZGV4ZWQgYnkgaW5pdGlhbCBjYXRlZ29yeSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAqKVxuICAgIGNvbG9yX3JlcHIgOiBzdHJpbmc7XG4gICAgKCogVGFibGUgZnJvbSBjb2xvcnMgdG8gb25lIGNoYXJhY3RlciBvZiB0aGlzIGNvbG9yICopXG4gICAgbmNvbG9yIDogaW50O1xuICAgICgqIE51bWJlciBvZiBjb2xvcnMuICopXG4gICAgbG5sIDogaW50O1xuICAgICgqIENvbG9yIG9mIHRoZSBsYXN0IG5ld2xpbmUuIC0xIGlmIHVubmVjZXNzYXJ5ICopXG4gICAgdGJsIDogQXV0b21hdGEud29ya2luZ19hcmVhO1xuICAgICgqIFRlbXBvcmFyeSB0YWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbmRleFxuICAgICAgIHdoZW4gY29tcHV0aW5nIGEgbmV3IHN0YXRlICopXG4gICAgc3RhdGVzIDogc3RhdGUgQXV0b21hdGEuU3RhdGUuVGFibGUudDtcbiAgICAoKiBTdGF0ZXMgb2YgdGhlIGRldGVybWluaXN0aWMgYXV0b21hdGEgKilcbiAgICBncm91cF9uYW1lcyA6IChzdHJpbmcgKiBpbnQpIGxpc3Q7XG4gICAgKCogTmFtZWQgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBncm91cF9jb3VudCA6IGludFxuICAgICgqIE51bWJlciBvZiBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKSB9XG5cbmxldCBwcF9yZSBjaCByZSA9IEF1dG9tYXRhLnBwIGNoIHJlLmluaXRpYWxcblxubGV0IHByaW50X3JlID0gcHBfcmVcblxubGV0IGdyb3VwX2NvdW50IHJlID0gcmUuZ3JvdXBfY291bnRcblxubGV0IGdyb3VwX25hbWVzIHJlID0gcmUuZ3JvdXBfbmFtZXNcblxuKCogSW5mb3JtYXRpb24gdXNlZCBkdXJpbmcgbWF0Y2hpbmcgKilcbnR5cGUgaW5mbyA9XG4gIHsgcmUgOiByZTtcbiAgICAoKiBUaGUgYXV0b21hdGEgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKFt4LmNvbG9ycyA9IHgucmUuY29sb3JzXSlcbiAgICAgICBTaG9ydGN1dCB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgbXV0YWJsZSBwb3NpdGlvbnMgOiBpbnQgYXJyYXk7XG4gICAgKCogQXJyYXkgb2YgbWFyayBwb3NpdGlvbnNcbiAgICAgICBUaGUgbWFyayBhcmUgb2ZmIGJ5IG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIHBvcyA6IGludDtcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggaXMgc3RhcnRlZCAqKVxuICAgIGxhc3QgOiBpbnRcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggc2hvdWxkIHN0b3AgKikgfVxuXG5cbigqKioqKVxuXG5sZXQgY2F0ZWdvcnkgcmUgfmNvbG9yID1cbiAgaWYgY29sb3IgPSAtMSB0aGVuXG4gICAgQ2F0ZWdvcnkuaW5leGlzdGFudFxuICAgICgqIFNwZWNpYWwgY2F0ZWdvcnkgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgZWxzZSBpZiBjb2xvciA9IHJlLmxubCB0aGVuXG4gICAgQ2F0ZWdvcnkuKGxhc3RuZXdsaW5lICsrIG5ld2xpbmUgKysgbm90X2xldHRlcilcbiAgZWxzZVxuICAgIENhdGVnb3J5LmZyb21fY2hhciAocmUuY29sb3JfcmVwci5bY29sb3JdKVxuXG4oKioqKilcblxubGV0IGR1bW15X25leHQgPSBbfHxdXG5cbmxldCB1bmtub3duX3N0YXRlID1cbiAgeyBpZHggPSB1bmtub3duOyByZWFsX2lkeCA9IDA7XG4gICAgbmV4dCA9IGR1bW15X25leHQ7IGZpbmFsID0gW107XG4gICAgZGVzYyA9IEF1dG9tYXRhLlN0YXRlLmR1bW15IH1cblxubGV0IG1rX3N0YXRlIG5jb2wgZGVzYyA9XG4gIGxldCBicmVha19zdGF0ZSA9XG4gICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIGRlc2Mgd2l0aFxuICAgIHwgQXV0b21hdGEuUnVubmluZyAtPiBmYWxzZVxuICAgIHwgQXV0b21hdGEuRmFpbGVkXG4gICAgfCBBdXRvbWF0YS5NYXRjaCBfIC0+IHRydWVcbiAgaW5cbiAgeyBpZHggPSBpZiBicmVha19zdGF0ZSB0aGVuIGJyZWFrIGVsc2UgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgcmVhbF9pZHggPSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICBuZXh0ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBkdW1teV9uZXh0IGVsc2UgQXJyYXkubWFrZSBuY29sIHVua25vd25fc3RhdGU7XG4gICAgZmluYWwgPSBbXTtcbiAgICBkZXNjIH1cblxubGV0IGZpbmRfc3RhdGUgcmUgZGVzYyA9XG4gIHRyeVxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmZpbmQgcmUuc3RhdGVzIGRlc2NcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBta19zdGF0ZSByZS5uY29sb3IgZGVzYyBpblxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmFkZCByZS5zdGF0ZXMgZGVzYyBzdDtcbiAgICBzdFxuXG4oKioqKiBNYXRjaCB3aXRoIG1hcmtzICoqKiopXG5cbmxldCBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgPVxuICBsZXQgZGVzYyA9IEF1dG9tYXRhLmRlbHRhIGluZm8ucmUudGJsIGNhdCBjb2xvciBzdC5kZXNjIGluXG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaW5mby5wb3NpdGlvbnMgaW5cbiAgaWYgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHggPSBsZW4gJiYgbGVuID4gMCB0aGVuIGJlZ2luXG4gICAgbGV0IHBvcyA9IGluZm8ucG9zaXRpb25zIGluXG4gICAgaW5mby5wb3NpdGlvbnMgPC0gQXJyYXkubWFrZSAoMiAqIGxlbikgMDtcbiAgICBBcnJheS5ibGl0IHBvcyAwIGluZm8ucG9zaXRpb25zIDAgbGVuXG4gIGVuZDtcbiAgZGVzY1xuXG5sZXQgdmFsaWRhdGUgaW5mbyAoczpzdHJpbmcpIH5wb3Mgc3QgPVxuICBsZXQgY29sb3IgPSBDaGFyLmNvZGUgKGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgaW5cbiAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnXG5cbmxldCByZWMgbG9vcCBpbmZvIHMgfnBvcyBzdCA9XG4gIGlmIHBvcyA8IGluZm8ubGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGxldCBpZHggPSBzdCcuaWR4IGluXG4gICAgaWYgaWR4ID49IDAgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gcG9zO1xuICAgICAgbG9vcCBpbmZvIHMgfnBvczoocG9zICsgMSkgc3QnXG4gICAgZW5kIGVsc2UgaWYgaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgICAgc3QnXG4gICAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wIGluZm8gcyB+cG9zIHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgcmVjIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdCA9XG4gIGlmIHBvcyA8IGxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBpZiBzdCcuaWR4ID49IDAgdGhlblxuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zOihwb3MgKyAxKSB+bGFzdCBzdCdcbiAgICBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdCdcbiAgICBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgZmluYWwgaW5mbyBzdCBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHN0LmZpbmFsXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0JyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjooLTEpIHN0IGluXG4gICAgbGV0IHJlcyA9IChzdCcuQXV0b21hdGEuU3RhdGUuaWR4LCBBdXRvbWF0YS5zdGF0dXMgc3QnKSBpblxuICAgIHN0LmZpbmFsIDwtIChjYXQsIHJlcykgOjogc3QuZmluYWw7XG4gICAgcmVzXG5cbmxldCBmaW5kX2luaXRpYWxfc3RhdGUgcmUgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCByZS5pbml0aWFsX3N0YXRlc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IGZpbmRfc3RhdGUgcmUgKEF1dG9tYXRhLlN0YXRlLmNyZWF0ZSBjYXQgcmUuaW5pdGlhbCkgaW5cbiAgICByZS5pbml0aWFsX3N0YXRlcyA8LSAoY2F0LCBzdCkgOjogcmUuaW5pdGlhbF9zdGF0ZXM7XG4gICAgc3RcblxubGV0IGdldF9jb2xvciByZSAoczpzdHJpbmcpIHBvcyA9XG4gIGlmIHBvcyA8IDAgdGhlblxuICAgIC0xXG4gIGVsc2VcbiAgICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGlmIHBvcyA+PSBzbGVuIHRoZW5cbiAgICAgIC0xXG4gICAgZWxzZSBpZiBwb3MgPSBzbGVuIC0gMSAmJiByZS5sbmwgPD4gLTEgJiYgcy5bcG9zXSA9ICdcXG4nIHRoZW5cbiAgICAgICgqIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICAgICAgcmUubG5sXG4gICAgZWxzZVxuICAgICAgQ2hhci5jb2RlIHJlLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dXG5cbmxldCByZWMgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3VwcyA9XG4gIGxldCBzdCcgPSBzdC5uZXh0LihpbmZvLnJlLmxubCkgaW5cbiAgaWYgc3QnLmlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLmlkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgIGxldCBjb2xvciA9IGluZm8ucmUubG5sIGluXG4gICAgbGV0IHJlYWxfYyA9IENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlICdcXG4nXSBpblxuICAgIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICAgIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjpyZWFsX2Mgc3QgaW5cbiAgICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gICAgc3QubmV4dC4oY29sb3IpIDwtIHN0JztcbiAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzXG4gIGVuZFxuXG5sZXQgcmVjIHNjYW5fc3RyIGluZm8gKHM6c3RyaW5nKSBpbml0aWFsX3N0YXRlIH5ncm91cHMgPVxuICBsZXQgcG9zID0gaW5mby5wb3MgaW5cbiAgbGV0IGxhc3QgPSBpbmZvLmxhc3QgaW5cbiAgaWYgKGxhc3QgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICYmIGluZm8ucmUubG5sIDw+IC0xXG4gICAgICAmJiBsYXN0ID4gcG9zXG4gICAgICAmJiBTdHJpbmcuZ2V0IHMgKGxhc3QgLSAxKSA9ICdcXG4nKVxuICB0aGVuIGJlZ2luXG4gICAgbGV0IGluZm8gPSB7IGluZm8gd2l0aCBsYXN0ID0gbGFzdCAtIDEgfSBpblxuICAgIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgICBpZiBzdC5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdFxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zOihsYXN0IC0gMSkgc3Qgfmdyb3Vwc1xuICBlbmQgZWxzZSBpZiBncm91cHMgdGhlblxuICAgIGxvb3AgaW5mbyBzIH5wb3MgaW5pdGlhbF9zdGF0ZVxuICBlbHNlXG4gICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IGluaXRpYWxfc3RhdGVcblxuKCogVGhpcyBmdW5jdGlvbiBhZGRzIGEgZmluYWwgYm91bmRhcnkgY2hlY2sgb24gdGhlIGlucHV0LlxuICAgVGhpcyBpcyB1c2VmdWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGZhaWxlZCBiZWNhdXNlXG4gICBvZiBpbnN1ZmZpY2llbnQgaW5wdXQsIG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHlcbiAgIG1hdGNoZXMgZm9yIHJlZ2V4IHRoYXQgaGF2ZSBib3VuZGFyeSBjb25kaXRpb25zIHdpdGggcmVzcGVjdFxuICAgdG8gdGhlIGlucHV0IHN0cmluZy5cbiAqKVxubGV0IGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgPVxuICBsZXQgZmluYWxfY2F0ID1cbiAgICBpZiBsYXN0ID0gc2xlbiB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIGxhc3QpKVxuICBpblxuICBsZXQgKGlkeCwgcmVzKSA9IGZpbmFsIGluZm8gc3QgZmluYWxfY2F0IGluXG4gIChtYXRjaCBncm91cHMsIHJlcyB3aXRoXG4gIHwgdHJ1ZSwgTWF0Y2ggXyAtPiBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBsYXN0XG4gIHwgXyAtPiAoKSk7XG4gIHJlc1xuXG5sZXQgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW4gPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGFzdCA9IGlmIGxlbiA9IC0xIHRoZW4gc2xlbiBlbHNlIHBvcyArIGxlbiBpblxuICBsZXQgaW5mbyA9XG4gICAgeyByZSA7IGNvbG9ycyA9IHJlLmNvbG9yczsgcG9zIDsgbGFzdFxuICAgIDsgcG9zaXRpb25zID1cbiAgICAgICAgaWYgZ3JvdXBzIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEF1dG9tYXRhLmluZGV4X2NvdW50IHJlLnRibCArIDEgaW5cbiAgICAgICAgICBpZiBuIDw9IDEwIHRoZW5cbiAgICAgICAgICAgIFt8MDswOzA7MDswOzA7MDswOzA7MHxdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkubWFrZSBuIDBcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBbfHxdIH1cbiAgaW5cbiAgbGV0IGluaXRpYWxfY2F0ID1cbiAgICBpZiBwb3MgPSAwIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyAocG9zIC0gMSkpKVxuICBpblxuICBsZXQgaW5pdGlhbF9zdGF0ZSA9IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBpbml0aWFsX2NhdCBpblxuICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gIGxldCByZXMgPVxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHx8IChwYXJ0aWFsICYmIG5vdCBncm91cHMpIHRoZW5cbiAgICAgIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjXG4gICAgZWxzZSBpZiBwYXJ0aWFsICYmIGdyb3VwcyB0aGVuXG4gICAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzYyB3aXRoXG4gICAgICB8IE1hdGNoIF8gfCBGYWlsZWQgYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgfCBSdW5uaW5nIC0+XG4gICAgICAgICgqIFRoaXMgY291bGQgYmUgYmVjYXVzZSBpdCdzIHN0aWxsIG5vdCBmdWxseSBtYXRjaGVkLCBvciBpdFxuICAgICAgICAgICBjb3VsZCBiZSB0aGF0IGJlY2F1c2Ugd2UgbmVlZCB0byBydW4gc3BlY2lhbCBlbmQgb2YgaW5wdXRcbiAgICAgICAgICAgY2hlY2tzLiAqKVxuICAgICAgICAobWF0Y2ggZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyB3aXRoXG4gICAgICAgICB8IE1hdGNoIF8gYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgICAgfCBGYWlsZWQgfCBSdW5uaW5nIC0+XG4gICAgICAgICAgICgqIEEgZmFpbHVyZSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB3ZSBuZWVkIG1vcmUgZGF0YSwgaS5lLlxuICAgICAgICAgICAgICBpdCdzIGEgcGFydGlhbCBtYXRjaC4gKilcbiAgICAgICAgICAgUnVubmluZylcbiAgICBlbHNlIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgICBBdXRvbWF0YS5NYXRjaCAobWFya3MsIHBtYXJrcykgLT5cbiAgICBNYXRjaCB7IHMgOyBtYXJrczsgcG1hcmtzIDsgZ3BvcyA9IGluZm8ucG9zaXRpb25zOyBnY291bnQgPSByZS5ncm91cF9jb3VudH1cbiAgfCBBdXRvbWF0YS5GYWlsZWQgLT4gRmFpbGVkXG4gIHwgQXV0b21hdGEuUnVubmluZyAtPlxuICAgIGxldCBub19tYXRjaF9zdGFydHNfYmVmb3JlID0gaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKDApIGVsc2UgMCBpblxuICAgIFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH1cblxubGV0IG1rX3JlIH5pbml0aWFsIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lcyB+Z3JvdXBfY291bnQgPVxuICB7IGluaXRpYWwgO1xuICAgIGluaXRpYWxfc3RhdGVzID0gW107XG4gICAgY29sb3JzO1xuICAgIGNvbG9yX3JlcHI7XG4gICAgbmNvbG9yO1xuICAgIGxubDtcbiAgICB0YmwgPSBBdXRvbWF0YS5jcmVhdGVfd29ya2luZ19hcmVhICgpO1xuICAgIHN0YXRlcyA9IEF1dG9tYXRhLlN0YXRlLlRhYmxlLmNyZWF0ZSA5NztcbiAgICBncm91cF9uYW1lcztcbiAgICBncm91cF9jb3VudCB9XG5cbigqKioqIENoYXJhY3RlciBzZXRzICoqKiopXG5cbmxldCBjc2VxIGMgYycgPSBDc2V0LnNlcSAoQ2hhci5jb2RlIGMpIChDaGFyLmNvZGUgYycpXG5sZXQgY2FkZCBjIHMgPSBDc2V0LmFkZCAoQ2hhci5jb2RlIGMpIHNcblxubGV0IHRyYW5zX3NldCBjYWNoZSBjbSBzID1cbiAgbWF0Y2ggQ3NldC5vbmVfY2hhciBzIHdpdGhcbiAgfCBTb21lIGkgLT4gQ3NldC5jc2luZ2xlIGNtLltpXVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdiA9IChDc2V0Lmhhc2hfcmVjIHMsIHMpIGluXG4gICAgdHJ5XG4gICAgICBDc2V0LkNTZXRNYXAuZmluZCB2ICFjYWNoZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgbCA9XG4gICAgICAgIENzZXQuZm9sZF9yaWdodFxuICAgICAgICAgIHNcbiAgICAgICAgICB+ZjooZnVuIChpLCBqKSBsIC0+IENzZXQudW5pb24gKGNzZXEgY20uW2ldIGNtLltqXSkgbClcbiAgICAgICAgICB+aW5pdDpDc2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgY2FjaGUgOj0gQ3NldC5DU2V0TWFwLmFkZCB2IGwgIWNhY2hlO1xuICAgICAgbFxuXG4oKioqKilcblxudHlwZSByZWdleHAgPVxuICAgIFNldCBvZiBDc2V0LnRcbiAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxubW9kdWxlIFZpZXcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVnZXhwID1cbiAgICAgIFNldCBvZiBDc2V0LnRcbiAgICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICAgIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gICAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gICAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gICAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICAgIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICAgIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxuICBsZXQgdmlldyB0ID0gdFxuZW5kXG5cbmxldCByZWMgcHAgZm10IHQgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHZhciBzIHJlID0gc2V4cCBmbXQgcyBwcCByZSBpblxuICBsZXQgc2VxIHMgcmVsID0gc2V4cCBmbXQgcyAobGlzdCBwcCkgcmVsIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNldCBzIC0+ICBzZXhwIGZtdCBcIlNldFwiIENzZXQucHAgc1xuICB8IFNlcXVlbmNlIHNxIC0+IHNlcSBcIlNlcXVlbmNlXCIgc3FcbiAgfCBBbHRlcm5hdGl2ZSBhbHQgLT4gc2VxIFwiQWx0ZXJuYXRpdmVcIiBhbHRcbiAgfCBSZXBlYXQgKHJlLCBzdGFydCwgc3RvcCkgLT5cbiAgICBsZXQgcHAnIGZtdCAoKSA9IGZwcmludGYgZm10IFwiJWFAICVkJWFcIiBwcCByZSAgIHN0YXJ0ICAgb3B0aW50IHN0b3AgaW5cbiAgICBzZXhwIGZtdCBcIlJlcGVhdFwiIHBwJyAoKVxuICB8IEJlZ19vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9saW5lXCJcbiAgfCBFbmRfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2ZfbGluZVwiXG4gIHwgQmVnX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3dvcmRcIlxuICB8IEVuZF9vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl93b3JkXCJcbiAgfCBOb3RfYm91bmQgICAgICAgIC0+IHN0ciBmbXQgXCJOb3RfYm91bmRcIlxuICB8IEJlZ19vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9zdHJcIlxuICB8IEVuZF9vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9zdHJcIlxuICB8IExhc3RfZW5kX29mX2xpbmUgLT4gc3RyIGZtdCBcIkxhc3RfZW5kX29mX2xpbmVcIlxuICB8IFN0YXJ0ICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0YXJ0XCJcbiAgfCBTdG9wICAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdG9wXCJcbiAgfCBTZW0gKHNlbSwgcmUpICAgIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1cIiAocGFpciBBdXRvbWF0YS5wcF9zZW0gcHApIChzZW0sIHJlKVxuICB8IFNlbV9ncmVlZHkgKGssIHJlKSAtPlxuICAgIHNleHAgZm10IFwiU2VtX2dyZWVkeVwiIChwYWlyIEF1dG9tYXRhLnBwX3JlcF9raW5kIHBwKSAoaywgcmUpXG4gIHwgR3JvdXAgKE5vbmUsIGMpICAgLT4gdmFyIFwiR3JvdXBcIiBjXG4gIHwgR3JvdXAgKFNvbWUgbiwgYykgLT4gc2V4cCBmbXQgXCJOYW1lZF9ncm91cFwiIChwYWlyIHN0ciBwcCkgKG4sIGMpXG4gIHwgTm9fZ3JvdXAgYyAgICAgLT4gdmFyIFwiTm9fZ3JvdXBcIiBjXG4gIHwgTmVzdCBjICAgICAgICAgLT4gdmFyIFwiTmVzdFwiIGNcbiAgfCBDYXNlIGMgICAgICAgICAtPiB2YXIgXCJDYXNlXCIgY1xuICB8IE5vX2Nhc2UgYyAgICAgIC0+IHZhciBcIk5vX2Nhc2VcIiBjXG4gIHwgSW50ZXJzZWN0aW9uIGMgLT4gc2VxIFwiSW50ZXJzZWN0aW9uXCIgY1xuICB8IENvbXBsZW1lbnQgYyAgIC0+IHNlcSBcIkNvbXBsZW1lbnRcIiBjXG4gIHwgRGlmZmVyZW5jZSAoYSwgYikgLT4gc2V4cCBmbXQgXCJEaWZmZXJlbmNlXCIgKHBhaXIgcHAgcHApIChhLCBiKVxuICB8IFBtYXJrIChtLCByKSAgICAgIC0+IHNleHAgZm10IFwiUG1hcmtcIiAocGFpciBQbWFyay5wcCBwcCkgKG0sIHIpXG5cbmxldCByZWMgaXNfY2hhcnNldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IF8gLT5cbiAgICB0cnVlXG4gIHwgQWx0ZXJuYXRpdmUgbCB8IEludGVyc2VjdGlvbiBsIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGlzX2NoYXJzZXQgbFxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIGlzX2NoYXJzZXQgciAmJiBpc19jaGFyc2V0IHInXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gIHwgTm9fZ3JvdXAgciB8IENhc2UgciB8IE5vX2Nhc2UgciAtPlxuICAgIGlzX2NoYXJzZXQgclxuICB8IFNlcXVlbmNlIF8gfCBSZXBlYXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBOb3RfYm91bmQgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgR3JvdXAgXyB8IE5lc3QgXyB8IFBtYXJrIChfLF8pLT5cbiAgICBmYWxzZVxuXG4oKlhYWCBVc2UgYSBiZXR0ZXIgYWxnb3JpdGhtIGFsbG93aW5nIG5vbi1jb250aWd1b3VzIHJlZ2lvbnM/ICopXG5cbmxldCBjdXBwZXIgPVxuICBDc2V0LnVuaW9uIChjc2VxICdBJyAnWicpXG4gICAgKENzZXQudW5pb24gKGNzZXEgJ1xcMTkyJyAnXFwyMTQnKSAoY3NlcSAnXFwyMTYnICdcXDIyMicpKVxubGV0IGNsb3dlciA9IENzZXQub2Zmc2V0IDMyIGN1cHBlclxubGV0IGNhbHBoYSA9XG4gIExpc3QuZm9sZF9yaWdodCBjYWRkIFsnXFwxNzAnOyAnXFwxODEnOyAnXFwxODYnOyAnXFwyMjMnOyAnXFwyNTUnXVxuICAgIChDc2V0LnVuaW9uIGNsb3dlciBjdXBwZXIpXG5sZXQgY2RpZ2l0ID0gY3NlcSAnMCcgJzknXG5sZXQgY2FsbnVtID0gQ3NldC51bmlvbiBjYWxwaGEgY2RpZ2l0XG5sZXQgY3dvcmQgPSBjYWRkICdfJyBjYWxudW1cblxubGV0IGNvbG9yaXplIGMgcmVnZXhwID1cbiAgbGV0IGxubCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGNvbG9yaXplIHJlZ2V4cCA9XG4gICAgbWF0Y2ggcmVnZXhwIHdpdGhcbiAgICAgIFNldCBzICAgICAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IHMgY1xuICAgIHwgU2VxdWVuY2UgbCAgICAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgQWx0ZXJuYXRpdmUgbCAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgUmVwZWF0IChyLCBfLCBfKSAgICAgICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIC0+IENvbG9yX21hcC5zcGxpdCAoQ3NldC5jc2luZ2xlICdcXG4nKSBjXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmQgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBjd29yZCBjXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgU3RhcnQgfCBTdG9wICAgICAgICAgICAgICAtPiAoKVxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSAgICAgICAgICAtPiBsbmwgOj0gdHJ1ZVxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgICB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgciB8IFBtYXJrIChfLHIpICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBDYXNlIF8gfCBOb19jYXNlIF9cbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgXyAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGNvbG9yaXplIHJlZ2V4cDtcbiAgIWxubFxuXG4oKioqKiBDb21waWxhdGlvbiAqKioqKVxuXG5sZXQgcmVjIGVxdWFsIHgxIHgyID1cbiAgbWF0Y2ggeDEsIHgyIHdpdGhcbiAgICBTZXQgczEsIFNldCBzMiAtPlxuICAgIHMxID0gczJcbiAgfCBTZXF1ZW5jZSBsMSwgU2VxdWVuY2UgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQWx0ZXJuYXRpdmUgbDEsIEFsdGVybmF0aXZlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IFJlcGVhdCAoeDEnLCBpMSwgajEpLCBSZXBlYXQgKHgyJywgaTIsIGoyKSAtPlxuICAgIGkxID0gaTIgJiYgajEgPSBqMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgQmVnX29mX2xpbmUsIEJlZ19vZl9saW5lXG4gIHwgRW5kX29mX2xpbmUsIEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQsIEJlZ19vZl93b3JkXG4gIHwgRW5kX29mX3dvcmQsIEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kLCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyLCBCZWdfb2Zfc3RyXG4gIHwgRW5kX29mX3N0ciwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUsIExhc3RfZW5kX29mX2xpbmVcbiAgfCBTdGFydCwgU3RhcnRcbiAgfCBTdG9wLCBTdG9wIC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoc2VtMSwgeDEnKSwgU2VtIChzZW0yLCB4MicpIC0+XG4gICAgc2VtMSA9IHNlbTIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IFNlbV9ncmVlZHkgKGsxLCB4MScpLCBTZW1fZ3JlZWR5IChrMiwgeDInKSAtPlxuICAgIGsxID0gazIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEdyb3VwIF8sIEdyb3VwIF8gLT4gKCogRG8gbm90IG1lcmdlIGdyb3VwcyEgKilcbiAgICBmYWxzZVxuICB8IE5vX2dyb3VwIHgxJywgTm9fZ3JvdXAgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5lc3QgeDEnLCBOZXN0IHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBDYXNlIHgxJywgQ2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTm9fY2FzZSB4MScsIE5vX2Nhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IEludGVyc2VjdGlvbiBsMSwgSW50ZXJzZWN0aW9uIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IENvbXBsZW1lbnQgbDEsIENvbXBsZW1lbnQgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgRGlmZmVyZW5jZSAoeDEnLCB4MScnKSwgRGlmZmVyZW5jZSAoeDInLCB4MicnKSAtPlxuICAgIGVxdWFsIHgxJyB4MicgJiYgZXF1YWwgeDEnJyB4MicnXG4gIHwgUG1hcmsgKG0xLCByMSksIFBtYXJrIChtMiwgcjIpIC0+XG4gICAgUG1hcmsuZXF1YWwgbTEgbTIgJiYgZXF1YWwgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxuYW5kIGVxX2xpc3QgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIFtdLCBbXSAtPlxuICAgIHRydWVcbiAgfCB4MSA6OiByMSwgeDIgOjogcjIgLT5cbiAgICBlcXVhbCB4MSB4MiAmJiBlcV9saXN0IHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBzZXF1ZW5jZSA9IGZ1bmN0aW9uXG4gIHwgW3hdIC0+IHhcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgcmVjIG1lcmdlX3NlcXVlbmNlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEFsdGVybmF0aXZlIGwnIDo6IHIgLT5cbiAgICBtZXJnZV9zZXF1ZW5jZXMgKGwnIEAgcilcbiAgfCBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIHIgd2l0aFxuICAgICAgICBTZXF1ZW5jZSAoeCcgOjogeScpIDo6IHInIHdoZW4gZXF1YWwgeCB4JyAtPlxuICAgICAgICBTZXF1ZW5jZSBbeDsgQWx0ZXJuYXRpdmUgW3NlcXVlbmNlIHk7IHNlcXVlbmNlIHknXV0gOjogcidcbiAgICAgIHwgcicgLT5cbiAgICAgICAgU2VxdWVuY2UgKHggOjogeSkgOjogcidcbiAgICBlbmRcbiAgfCB4IDo6IHIgLT5cbiAgICB4IDo6IG1lcmdlX3NlcXVlbmNlcyByXG5cbm1vZHVsZSBBID0gQXV0b21hdGFcblxubGV0IGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciA9XG4gIG1hdGNoIGtpbmQsIGtpbmQnIHdpdGhcbiAgICBgRmlyc3QsIGBGaXJzdCAtPiBjclxuICB8IGBGaXJzdCwgayAgICAgICAtPiBBLnNlcSBpZHMgayBjciAoQS5lcHMgaWRzKVxuICB8ICBfICAgICAgICAgICAgICAgLT4gY3JcblxuKCogWFhYIHNob3VsZCBwcm9iYWJseSBjb21wdXRlIGEgY2F0ZWdvcnkgbWFzayAqKVxubGV0IHJlYyB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICAoQS5jc3QgaWRzICh0cmFuc19zZXQgY2FjaGUgYyBzKSwga2luZClcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgKHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIGwsIGtpbmQpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyBsIHdpdGhcbiAgICAgICAgW3InXSAtPlxuICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IsIGtpbmQpXG4gICAgICB8IG1lcmdlZF9zZXF1ZW5jZXMgLT5cbiAgICAgICAgKEEuYWx0IGlkc1xuICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgKGZ1biByJyAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5XG4gICAgICAgICAgICAgICAgICAgICBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAgICAgICAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IpXG4gICAgICAgICAgICAgIG1lcmdlZF9zZXF1ZW5jZXMpLFxuICAgICAgICAga2luZClcbiAgICBlbmRcbiAgfCBSZXBlYXQgKHInLCBpLCBqKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIGxldCByZW0gPVxuICAgICAgbWF0Y2ggaiB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgQS5yZXAgaWRzIGdyZWVkeSBraW5kJyBjclxuICAgICAgfCBTb21lIGogLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIGdyZWVkeSB3aXRoXG4gICAgICAgICAgICBgR3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtOyBBLmVwcyBpZHNdXG4gICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5lcHMgaWRzOyBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIChqIC0gaSkgZiAoQS5lcHMgaWRzKVxuICAgIGluXG4gICAgKGl0ZXIgaSAoZnVuIHJlbSAtPiBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtKSByZW0sIGtpbmQpXG4gIHwgQmVnX29mX2xpbmUgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgRW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEJlZ19vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpLFxuICAgICBraW5kKVxuICB8IEVuZF9vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpLFxuICAgICBraW5kKVxuICB8IE5vdF9ib3VuZCAtPlxuICAgIChBLmFsdCBpZHMgW0Euc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlcik7XG4gICAgICAgICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSldLFxuICAgICBraW5kKVxuICB8IEJlZ19vZl9zdHIgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBFbmRfb2Zfc3RyIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IExhc3RfZW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIGxhc3RuZXdsaW5lKSwga2luZClcbiAgfCBTdGFydCAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU3RvcCAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFNlbSAoa2luZCcsIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kJyBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCcga2luZCcnIGNyLFxuICAgICBraW5kJylcbiAgfCBTZW1fZ3JlZWR5IChncmVlZHknLCByJykgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeScgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBHcm91cCAobiwgcicpIC0+XG4gICAgaWYgaWduX2dyb3VwIHRoZW5cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHAgPSAhcG9zIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZXMgOj0gKG5hbWUsIHAgLyAyKSA6OiAhbmFtZXNcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICBpblxuICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLm1hcmsgaWRzIHApIChcbiAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0IGNyIChBLm1hcmsgaWRzIChwICsgMSkpKSxcbiAgICAgICBraW5kJylcbiAgfCBOb19ncm91cCByJyAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCB0cnVlIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IE5lc3QgcicgLT5cbiAgICBsZXQgYiA9ICFwb3MgaW5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBpblxuICAgIGxldCBlID0gIXBvcyAtIDEgaW5cbiAgICBpZiBlIDwgYiB0aGVuXG4gICAgICAoY3IsIGtpbmQnKVxuICAgIGVsc2VcbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLmVyYXNlIGlkcyBiIGUpIGNyLCBraW5kJylcbiAgfCBEaWZmZXJlbmNlIF8gfCBDb21wbGVtZW50IF8gfCBJbnRlcnNlY3Rpb24gXyB8IE5vX2Nhc2UgXyB8IENhc2UgXyAtPlxuICAgIGFzc2VydCBmYWxzZVxuICB8IFBtYXJrIChpLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5wbWFyayBpZHMgaSkgY3IsIGtpbmQnKVxuXG5hbmQgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgQS5lcHMgaWRzXG4gIHwgW3JdIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyJ1xuICB8IHIgOjogcmVtIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgbGV0IGNyJycgPVxuICAgICAgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcmVtIGluXG4gICAgaWYgQS5pc19lcHMgY3InJyB0aGVuXG4gICAgICBjcidcbiAgICBlbHNlIGlmIEEuaXNfZXBzIGNyJyB0aGVuXG4gICAgICBjcicnXG4gICAgZWxzZVxuICAgICAgQS5zZXEgaWRzIGtpbmQnIGNyJyBjcicnXG5cbigqKioqIENhc2UgKioqKilcblxubGV0IGNhc2VfaW5zZW5zIHMgPVxuICBDc2V0LnVuaW9uIHMgKENzZXQudW5pb24gKENzZXQub2Zmc2V0IDMyIChDc2V0LmludGVyIHMgY3VwcGVyKSlcbiAgICAgICAgICAgICAgICAgIChDc2V0Lm9mZnNldCAoLTMyKSAoQ3NldC5pbnRlciBzIGNsb3dlcikpKVxuXG5sZXQgYXNfc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPiBzXG4gIHwgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG5cbigqIFhYWCBTaG91bGQgc3BsaXQgYWx0ZXJuYXRpdmVzIGludG8gKDEpIGNoYXJzZXRzIGFuZCAoMikgbW9yZVxuICAgY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zOyBhbHRlcm5hdGl2ZSBzaG91bGQgdGhlcmVmb3JlIHByb2JhYmx5XG4gICBiZSBmbGF0dGVuIGhlcmUgKilcbmxldCByZWMgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgU2V0IChpZiBpZ25fY2FzZSB0aGVuIGNhc2VfaW5zZW5zIHMgZWxzZSBzKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBTZXF1ZW5jZSAoTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwgaW5cbiAgICBpZiBpc19jaGFyc2V0IChBbHRlcm5hdGl2ZSBsJykgdGhlblxuICAgICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSkgQ3NldC5lbXB0eSBsJylcbiAgICBlbHNlXG4gICAgICBBbHRlcm5hdGl2ZSBsJ1xuICB8IFJlcGVhdCAociwgaSwgaikgLT5cbiAgICBSZXBlYXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIsIGksIGopXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3AgYXMgciAtPlxuICAgIHJcbiAgfCBTZW0gKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbSAoaywgcicpXG4gIHwgU2VtX2dyZWVkeSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtX2dyZWVkeSAoaywgcicpXG4gIHwgR3JvdXAgKG4sIHIpIC0+XG4gICAgR3JvdXAgKG4sIGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG4gIHwgTm9fZ3JvdXAgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOb19ncm91cCByJ1xuICB8IE5lc3QgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOZXN0IHInXG4gIHwgQ2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgZmFsc2UgclxuICB8IE5vX2Nhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIHRydWUgclxuICB8IEludGVyc2VjdGlvbiBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQuaW50ZXIgcyAoYXNfc2V0IHIpKSBDc2V0LmNhbnkgbCcpXG4gIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnlcbiAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKVxuICAgICAgICAgICAgICBDc2V0LmVtcHR5IGwnKSlcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBTZXQgKENzZXQuaW50ZXIgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikpXG4gICAgICAgICAgIChDc2V0LmRpZmYgQ3NldC5jYW55IChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHInKSkpKVxuICB8IFBtYXJrIChpLHIpIC0+IFBtYXJrIChpLGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZV8xIHJlZ2V4cCA9XG4gIGxldCByZWdleHAgPSBoYW5kbGVfY2FzZSBmYWxzZSByZWdleHAgaW5cbiAgbGV0IGMgPSBDb2xvcl9tYXAubWFrZSAoKSBpblxuICBsZXQgbmVlZF9sbmwgPSBjb2xvcml6ZSBjIHJlZ2V4cCBpblxuICBsZXQgKGNvbG9ycywgY29sb3JfcmVwciwgbmNvbG9yKSA9IENvbG9yX21hcC5mbGF0dGVuIGMgaW5cbiAgbGV0IGxubCA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yIGVsc2UgLTEgaW5cbiAgbGV0IG5jb2xvciA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yICsgMSBlbHNlIG5jb2xvciBpblxuICBsZXQgaWRzID0gQS5jcmVhdGVfaWRzICgpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgbmFtZXMgPSByZWYgW10gaW5cbiAgbGV0IChyLCBraW5kKSA9XG4gICAgdHJhbnNsYXRlIGlkc1xuICAgICAgYEZpcnN0IGZhbHNlIGZhbHNlIGBHcmVlZHkgcG9zIG5hbWVzIChyZWYgQ3NldC5DU2V0TWFwLmVtcHR5KSBjb2xvcnMgcmVnZXhwIGluXG4gIGxldCByID0gZW5mb3JjZV9raW5kIGlkcyBgRmlyc3Qga2luZCByIGluXG4gICgqRm9ybWF0LmVwcmludGYgXCI8JWQgJWQ+QC5cIiAhaWRzIG5jb2w7KilcbiAgbWtfcmUgfmluaXRpYWw6ciB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXM6KExpc3QucmV2ICFuYW1lcykgfmdyb3VwX2NvdW50OighcG9zIC8gMilcblxuKCoqKiopXG5cbmxldCByZWMgYW5jaG9yZWQgPSBmdW5jdGlvblxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBMaXN0LmV4aXN0cyBhbmNob3JlZCBsXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBhbmNob3JlZCBsXG4gIHwgUmVwZWF0IChyLCBpLCBfKSAtPlxuICAgIGkgPiAwICYmIGFuY2hvcmVkIHJcbiAgfCBTZXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdG9wXG4gIHwgSW50ZXJzZWN0aW9uIF8gfCBDb21wbGVtZW50IF8gfCBEaWZmZXJlbmNlIF8gLT5cbiAgICBmYWxzZVxuICB8IEJlZ19vZl9zdHIgfCBTdGFydCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcikgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByIHwgTmVzdCByXG4gIHwgQ2FzZSByIHwgTm9fY2FzZSByIHwgUG1hcmsgKF8sIHIpIC0+XG4gICAgYW5jaG9yZWQgclxuXG4oKioqKilcblxudHlwZSB0ID0gcmVnZXhwXG5cbmxldCBzdHIgcyA9XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gU2V0IChDc2V0LmNzaW5nbGUgcy5baV0pIDo6ICFsXG4gIGRvbmU7XG4gIFNlcXVlbmNlICFsXG5sZXQgY2hhciBjID0gU2V0IChDc2V0LmNzaW5nbGUgYylcblxubGV0IGFsdCA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gQWx0ZXJuYXRpdmUgbFxubGV0IHNlcSA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgZW1wdHkgPSBhbHQgW11cbmxldCBlcHNpbG9uID0gc2VxIFtdXG5sZXQgcmVwbiByIGkgaiA9XG4gIGlmIGkgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCI7XG4gIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCJcbiAgICB8IF8gLT4gKClcbiAgZW5kO1xuICBSZXBlYXQgKHIsIGksIGopXG5sZXQgcmVwIHIgPSByZXBuIHIgMCBOb25lXG5sZXQgcmVwMSByID0gcmVwbiByIDEgTm9uZVxubGV0IG9wdCByID0gcmVwbiByIDAgKFNvbWUgMSlcbmxldCBib2wgPSBCZWdfb2ZfbGluZVxubGV0IGVvbCA9IEVuZF9vZl9saW5lXG5sZXQgYm93ID0gQmVnX29mX3dvcmRcbmxldCBlb3cgPSBFbmRfb2Zfd29yZFxubGV0IHdvcmQgciA9IHNlcSBbYm93OyByOyBlb3ddXG5sZXQgbm90X2JvdW5kYXJ5ID0gTm90X2JvdW5kXG5sZXQgYm9zID0gQmVnX29mX3N0clxubGV0IGVvcyA9IEVuZF9vZl9zdHJcbmxldCB3aG9sZV9zdHJpbmcgciA9IHNlcSBbYm9zOyByOyBlb3NdXG5sZXQgbGVvbCA9IExhc3RfZW5kX29mX2xpbmVcbmxldCBzdGFydCA9IFN0YXJ0XG5sZXQgc3RvcCA9IFN0b3BcbmxldCBsb25nZXN0IHIgPSBTZW0gKGBMb25nZXN0LCByKVxubGV0IHNob3J0ZXN0IHIgPSBTZW0gKGBTaG9ydGVzdCwgcilcbmxldCBmaXJzdCByID0gU2VtIChgRmlyc3QsIHIpXG5sZXQgZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgR3JlZWR5LCByKVxubGV0IG5vbl9ncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBOb25fZ3JlZWR5LCByKVxubGV0IGdyb3VwID9uYW1lIHIgPSBHcm91cCAobmFtZSwgcilcbmxldCBub19ncm91cCByID0gTm9fZ3JvdXAgclxubGV0IG5lc3QgciA9IE5lc3QgclxubGV0IG1hcmsgciA9IGxldCBpID0gUG1hcmsuZ2VuICgpIGluIChpLFBtYXJrIChpLHIpKVxuXG5sZXQgc2V0IHN0ciA9XG4gIGxldCBzID0gcmVmIENzZXQuZW1wdHkgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIHMgOj0gQ3NldC51bmlvbiAoQ3NldC5jc2luZ2xlIHN0ci5baV0pICFzXG4gIGRvbmU7XG4gIFNldCAhc1xuXG5sZXQgcmcgYyBjJyA9IFNldCAoY3NlcSBjIGMnKVxuXG5sZXQgaW50ZXIgbCA9XG4gIGxldCByID0gSW50ZXJzZWN0aW9uIGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmludGVyXCJcblxubGV0IGNvbXBsIGwgPVxuICBsZXQgciA9IENvbXBsZW1lbnQgbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuY29tcGxcIlxuXG5sZXQgZGlmZiByIHInID1cbiAgbGV0IHInJyA9IERpZmZlcmVuY2UgKHIsIHInKSBpblxuICBpZiBpc19jaGFyc2V0IHInJyB0aGVuXG4gICAgcicnXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmRpZmZcIlxuXG5sZXQgYW55ID0gU2V0IENzZXQuY2FueVxubGV0IG5vdG5sID0gU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55IChDc2V0LmNzaW5nbGUgJ1xcbicpKVxuXG5sZXQgbG93ZXIgPSBhbHQgW3JnICdhJyAneic7IGNoYXIgJ1xcMTgxJzsgcmcgJ1xcMjIzJyAnXFwyNDYnOyByZyAnXFwyNDgnICdcXDI1NSddXG5sZXQgdXBwZXIgPSBhbHQgW3JnICdBJyAnWic7IHJnICdcXDE5MicgJ1xcMjE0JzsgcmcgJ1xcMjE2JyAnXFwyMjInXVxubGV0IGFscGhhID0gYWx0IFtsb3dlcjsgdXBwZXI7IGNoYXIgJ1xcMTcwJzsgY2hhciAnXFwxODYnXVxubGV0IGRpZ2l0ID0gcmcgJzAnICc5J1xubGV0IGFsbnVtID0gYWx0IFthbHBoYTsgZGlnaXRdXG5sZXQgd29yZGMgPSBhbHQgW2FsbnVtOyBjaGFyICdfJ11cbmxldCBhc2NpaSA9IHJnICdcXDAwMCcgJ1xcMTI3J1xubGV0IGJsYW5rID0gc2V0IFwiXFx0IFwiXG5sZXQgY250cmwgPSBhbHQgW3JnICdcXDAwMCcgJ1xcMDMxJzsgcmcgJ1xcMTI3JyAnXFwxNTknXVxubGV0IGdyYXBoID0gYWx0IFtyZyAnXFwwMzMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwcmludCA9IGFsdCBbcmcgJ1xcMDMyJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHVuY3QgPVxuICBhbHQgW3JnICdcXDAzMycgJ1xcMDQ3JzsgcmcgJ1xcMDU4JyAnXFwwNjQnOyByZyAnXFwwOTEnICdcXDA5Nic7XG4gICAgICAgcmcgJ1xcMTIzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDE2OSc7IHJnICdcXDE3MScgJ1xcMTgwJztcbiAgICAgICByZyAnXFwxODInICdcXDE4NSc7IHJnICdcXDE4NycgJ1xcMTkxJzsgY2hhciAnXFwyMTUnOyBjaGFyICdcXDI0NyddXG5sZXQgc3BhY2UgPSBhbHQgW2NoYXIgJyAnOyByZyAnXFwwMDknICdcXDAxMyddXG5sZXQgeGRpZ2l0ID0gYWx0IFtkaWdpdDsgcmcgJ2EnICdmJzsgcmcgJ0EnICdGJ11cblxubGV0IGNhc2UgciA9IENhc2UgclxubGV0IG5vX2Nhc2UgciA9IE5vX2Nhc2UgclxuXG4oKioqKilcblxubGV0IGNvbXBpbGUgciA9XG4gIGNvbXBpbGVfMSAoXG4gICAgaWYgYW5jaG9yZWQgciB0aGVuXG4gICAgICBncm91cCByXG4gICAgZWxzZVxuICAgICAgc2VxIFtzaG9ydGVzdCAocmVwIGFueSk7IGdyb3VwIHJdXG4gIClcblxubGV0IGV4ZWNfaW50ZXJuYWwgbmFtZSA/KHBvcz0wKSA/KGxlbiA9IC0xKSB+cGFydGlhbCB+Z3JvdXBzIHJlIHMgPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IC0xIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgbmFtZTtcbiAgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW5cblxubGV0IGV4ZWMgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY1wiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGV4ZWNfb3B0ID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNfb3B0XCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZVxuICAgICAgICAgIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBTb21lIHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiBOb25lXG5cbmxldCBleGVjcCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDpmYWxzZSBcIlJlLmV4ZWNwXCIgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF9zdWJzdHIgLT4gdHJ1ZVxuICB8IF8gICAgICAgICAgICAgLT4gZmFsc2VcblxubGV0IGV4ZWNfcGFydGlhbCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggXyAtPiBgRnVsbFxuICB8IFJ1bm5pbmcgXyAtPiBgUGFydGlhbFxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbmxldCBleGVjX3BhcnRpYWxfZGV0YWlsZWQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsX2RldGFpbGVkXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggZ3JvdXAgLT4gYEZ1bGwgZ3JvdXBcbiAgfCBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9IC0+IGBQYXJ0aWFsIG5vX21hdGNoX3N0YXJ0c19iZWZvcmVcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5tb2R1bGUgTWFyayA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IFBtYXJrLnRcblxuICBsZXQgdGVzdCAoZyA6IEdyb3VwLnQpIHAgPVxuICAgIFBtYXJrLlNldC5tZW0gcCBnLnBtYXJrc1xuXG4gIGxldCBhbGwgKGcgOiBHcm91cC50KSA9IGcucG1hcmtzXG5cbiAgbW9kdWxlIFNldCA9IFBtYXJrLlNldFxuXG4gIGxldCBlcXVhbCA9IFBtYXJrLmVxdWFsXG5cbiAgbGV0IGNvbXBhcmUgPSBQbWFyay5jb21wYXJlXG5cbmVuZFxuXG50eXBlIHNwbGl0X3Rva2VuID1cbiAgWyBgVGV4dCBvZiBzdHJpbmdcbiAgfCBgRGVsaW0gb2YgR3JvdXAudFxuICBdXG5cbm1vZHVsZSBSc2VxID0gc3RydWN0XG4gIGxldCBhbGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgKCogaW5kZXggb2YgdGhlIGZpcnN0IHBvc2l0aW9uIHdlIGRvIG5vdCBjb25zaWRlci5cbiAgICAgICAhcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50ICopXG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpdGVyYXRlIG9uIG1hdGNoZXMuIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgc2VhcmNoIGZvciB0aGUgbmV4dFxuICAgICAgIG9uZSBqdXN0IGFmdGVyIGl0cyBlbmQgKilcbiAgICBsZXQgcmVjIGF1eCBwb3MgKCkgPVxuICAgICAgaWYgcG9zID49IGxpbWl0XG4gICAgICB0aGVuIFNlcS5OaWwgKCogbm8gbW9yZSBtYXRjaGVzICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgc1xuICAgICAgICAgICAgICAgIH5wb3MgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgU2VxLkNvbnMgKHN1YnN0ciwgYXV4IHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF9cbiAgICAgICAgfCBGYWlsZWQgLT4gU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IHBvc1xuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgYWxsID9wb3MgP2xlbiByZSBzXG4gICAgfD4gU2VxLm1hcCAoZnVuIHN1YiAtPiBHcm91cC5nZXQgc3ViIDApXG5cbiAgbGV0IHNwbGl0X2Z1bGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaTogc3RhcnQgb2YgZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgIHBvczogZmlyc3QgcG9zaXRpb24gYWZ0ZXIgbGFzdCBtYXRjaCBvZiBbcmVdXG4gICAgICAgbGltaXQ6IGZpcnN0IGluZGV4IHdlIGlnbm9yZSAoIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCkgKilcbiAgICBsZXQgcG9zMCA9IHBvcyBpblxuICAgIGxldCByZWMgYXV4IHN0YXRlIGkgcG9zICgpID0gbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBgSWRsZSB3aGVuIHBvcyA+PSBsaW1pdCAtPlxuICAgICAgICBpZiBpIDwgbGltaXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1YiA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHN1YiwgYXV4IHN0YXRlIChpKzEpIHBvcylcbiAgICAgICAgKSBlbHNlIFNlcS5OaWxcbiAgICAgIHwgYElkbGUgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBsZXQgb2xkX2kgPSBpIGluXG4gICAgICAgICAgbGV0IGkgPSBwMiBpblxuICAgICAgICAgIGlmIHAxID4gcG9zMCB0aGVuIChcbiAgICAgICAgICAgICgqIHN0cmluZyBkb2VzIG5vdCBzdGFydCBieSBhIGRlbGltaXRlciAqKVxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgb2xkX2kgKHAxIC0gb2xkX2kpIGluXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBgWWllbGQgKGBEZWxpbSBzdWJzdHIpIGluXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICAgICkgZWxzZSBTZXEuQ29ucyAoYERlbGltIHN1YnN0ciwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgXyAtPiBTZXEuTmlsXG4gICAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgICAgaWYgaSA8IGxpbWl0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgICAoKiB5aWVsZCBsYXN0IHN0cmluZyAqKVxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBsaW1pdCBwb3MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIGVuZFxuICAgICAgfCBgWWllbGQgeCAtPlxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IGBJZGxlIGkgcG9zKVxuICAgIGluXG4gICAgYXV4IGBJZGxlIHBvcyBwb3NcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBsZXQgc2VxID0gc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyBpblxuICAgIGxldCByZWMgZmlsdGVyIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSAgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFNlcS5OaWxcbiAgICAgIHwgU2VxLkNvbnMgKGBEZWxpbSBfLCB0bCkgLT4gZmlsdGVyIHRsICgpXG4gICAgICB8IFNlcS5Db25zIChgVGV4dCBzLHRsKSAtPiBTZXEuQ29ucyAocywgZmlsdGVyIHRsKVxuICAgIGluIGZpbHRlciBzZXFcbmVuZFxuXG5tb2R1bGUgUmxpc3QgPSBzdHJ1Y3RcbiAgbGV0IGxpc3Rfb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGxpc3QgPVxuICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBsIHggLT4geCA6OiBsKSBbXSBzIHw+IExpc3QucmV2XG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcbmVuZFxuXG5tb2R1bGUgR2VuID0gc3RydWN0XG4gIHR5cGUgJ2EgZ2VuID0gdW5pdCAtPiAnYSBvcHRpb25cbiAgbGV0IGdlbl9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgZ2VuID1cbiAgICBsZXQgciA9IHJlZiBzIGluXG4gICAgZnVuICgpIC0+IG1hdGNoICFyICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgICB8IFNlcS5Db25zICh4LCB0bCkgLT5cbiAgICAgICAgciA6PSB0bDtcbiAgICAgICAgU29tZSB4XG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5lbmRcblxubGV0IHJlcGxhY2UgPyhwb3M9MCkgP2xlbiA/KGFsbD10cnVlKSByZSB+ZiBzID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gICAgICBwb3MrbFxuICBpblxuICAoKiBidWZmZXIgaW50byB3aGljaCB3ZSB3cml0ZSB0aGUgcmVzdWx0ICopXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICgqIGl0ZXJhdGUgb24gbWF0Y2hlZCBzdWJzdHJpbmdzLiAqKVxuICBsZXQgcmVjIGl0ZXIgcG9zID1cbiAgICBpZiBwb3MgPCBsaW1pdFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zIH5sZW46KGxpbWl0LXBvcykgd2l0aFxuICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAoKiBhZGQgc3RyaW5nIGJldHdlZW4gcHJldmlvdXMgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2ggKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChwMS1wb3MpO1xuICAgICAgICAoKiB3aGF0IHNob3VsZCB3ZSByZXBsYWNlIHRoZSBtYXRjaGVkIGdyb3VwIHdpdGg/ICopXG4gICAgICAgIGxldCByZXBsYWNpbmcgPSBmIHN1YnN0ciBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgcmVwbGFjaW5nO1xuICAgICAgICBpZiBhbGwgdGhlblxuICAgICAgICAgICgqIGlmIHdlIG1hdGNoZWQgYSBub24tY2hhciBlLmcuIF4gd2UgbXVzdCBtYW51YWxseSBhZHZhbmNlIGJ5IDEgKilcbiAgICAgICAgICBpdGVyIChcbiAgICAgICAgICAgIGlmIHAxPXAyIHRoZW4gKFxuICAgICAgICAgICAgICAoKiBhIG5vbiBjaGFyIGNvdWxkIGJlIHBhc3QgdGhlIGVuZCBvZiBzdHJpbmcuIGUuZy4gJCAqKVxuICAgICAgICAgICAgICBpZiBwMiA8IGxpbWl0IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBzLltwMl07XG4gICAgICAgICAgICAgIHAyKzFcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBwMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHAyIChsaW1pdC1wMilcbiAgICAgIHwgUnVubmluZyBfIC0+ICgpXG4gICAgICB8IEZhaWxlZCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKGxpbWl0LXBvcylcbiAgaW5cbiAgaXRlciBwb3M7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHJlcGxhY2Vfc3RyaW5nID9wb3MgP2xlbiA/YWxsIHJlIH5ieSBzID1cbiAgcmVwbGFjZSA/cG9zID9sZW4gP2FsbCByZSBzIH5mOihmdW4gXyAtPiBieSlcblxubGV0IHdpdG5lc3MgdCA9XG4gIGxldCByZWMgd2l0bmVzcyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgYyAtPiBTdHJpbmcubWFrZSAxIChDaGFyLmNociAoQ3NldC5waWNrIGMpKVxuICAgIHwgU2VxdWVuY2UgeHMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCB3aXRuZXNzIHhzKVxuICAgIHwgQWx0ZXJuYXRpdmUgKHggOjogXykgLT4gd2l0bmVzcyB4XG4gICAgfCBBbHRlcm5hdGl2ZSBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFJlcGVhdCAociwgZnJvbSwgX3RvKSAtPlxuICAgICAgbGV0IHcgPSB3aXRuZXNzIHIgaW5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCB3ICogZnJvbSkgaW5cbiAgICAgIGZvciBfaT0xIHRvIGZyb20gZG9cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB3XG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IE5vX2Nhc2UgciAtPiB3aXRuZXNzIHJcbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgKF8sIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgR3JvdXAgKF8sIHIpXG4gICAgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHJcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFBtYXJrIChfLCByKVxuICAgIHwgQ2FzZSByXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKSAtPiB3aXRuZXNzIHJcbiAgICB8IEJlZ19vZl9saW5lXG4gICAgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmRcbiAgICB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmVcbiAgICB8IFN0YXJ0XG4gICAgfCBTdG9wXG4gICAgfCBFbmRfb2Zfc3RyIC0+IFwiXCIgaW5cbiAgd2l0bmVzcyAoaGFuZGxlX2Nhc2UgZmFsc2UgdClcblxubW9kdWxlIFNlcSA9IFJzZXFcbm1vZHVsZSBMaXN0ID0gUmxpc3Rcbm1vZHVsZSBHcm91cCA9IEdyb3VwXG5cbigqKiB7MiBEZXByZWNhdGVkIGZ1bmN0aW9uc30gKilcblxubGV0IHNwbGl0X2Z1bGxfc2VxID0gU2VxLnNwbGl0X2Z1bGxcbmxldCBzcGxpdF9zZXEgPSBTZXEuc3BsaXRcbmxldCBtYXRjaGVzX3NlcSA9IFNlcS5tYXRjaGVzXG5sZXQgYWxsX3NlcSA9IFNlcS5hbGxcblxudHlwZSAnYSBnZW4gICAgICAgID0gJ2EgR2VuLmdlblxubGV0IGFsbF9nZW4gICAgICAgID0gR2VuLmFsbFxubGV0IG1hdGNoZXNfZ2VuICAgID0gR2VuLm1hdGNoZXNcbmxldCBzcGxpdF9nZW4gICAgICA9IEdlbi5zcGxpdFxubGV0IHNwbGl0X2Z1bGxfZ2VuID0gR2VuLnNwbGl0X2Z1bGxcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG5cbmxldCBnZXQgPSBHcm91cC5nZXRcbmxldCBnZXRfb2ZzID0gR3JvdXAub2Zmc2V0XG5sZXQgZ2V0X2FsbCA9IEdyb3VwLmFsbFxubGV0IGdldF9hbGxfb2ZzID0gR3JvdXAuYWxsX29mZnNldFxubGV0IHRlc3QgPSBHcm91cC50ZXN0XG5cbnR5cGUgbWFya2lkID0gTWFyay50XG5cbmxldCBtYXJrZWQgPSBNYXJrLnRlc3RcbmxldCBtYXJrX3NldCA9IE1hcmsuYWxsXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKlxuSW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzIGNoYXJhY3Rlcjpcbi0gZG9lcyBub3QgZXhpc3RzXG4tIGlzIGEgbGV0dGVyXG4tIGlzIG5vdCBhIGxldHRlclxuLSBpcyBhIG5ld2xpbmVcbi0gaXMgbGFzdCBuZXdsaW5lXG5cbkJlZ2lubmluZyBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGxpbmU6XG4tIHByZXZpb3VzIGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgYnVmZmVyOlxuLSBwcmV2aW91cyBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgYnVmZmVyXG4tIGN1cnJlbnQgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGxpbmVcbi0gY3VycmVudCBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcbiopXG5cbigqXG5SZXA6IGUgPSBULGUgfCAoKVxuICAtIHNlbWFudGljcyBvZiB0aGUgY29tbWEgKHNob3J0ZXN0L2xvbmdlc3QvZmlyc3QpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSB1bmlvbiAoZ3JlZWR5L25vbi1ncmVlZHkpXG5cbkJvdW5kZWQgcmVwZXRpdGlvblxuICBhezAsM30gPSAoYSwoYSxhPyk/KT9cbiopXG5cbnR5cGUgZ3JvdXBzID0gR3JvdXAudFxuXG5pbmNsdWRlIFJsaXN0XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCB0ZXN0MiBjIGMnID0gIWkgKyAxIDwgbCAmJiBzLlshaV0gPSBjICYmIHMuWyFpICsgMV0gPSBjJyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHQyIGMgYycgPSBsZXQgciA9IHRlc3QyIGMgYycgaW4gaWYgciB0aGVuIGkgOj0gIWkgKyAyOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0MiAnXFxcXCcgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QyICdcXFxcJyAnfCcgfHwgdGVzdDIgJ1xcXFwnICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSByIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIFJlLmJvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgUmUuZW9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdDIgJ1xcXFwnICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdgJyB0aGVuXG4gICAgICAgIFJlLmJvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1xcJycgdGhlblxuICAgICAgICBSZS5lb3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc9JyB0aGVuXG4gICAgICAgIFJlLnN0YXJ0XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnYicgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ0InIHRoZW5cbiAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlblxuICAgICAgICBSZS5ib3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc+JyB0aGVuXG4gICAgICAgIFJlLmVvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ3cnIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnVycgdGhlblxuICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgICAnKicgfCAnKycgfCAnPycgfCAnWycgfCAnXScgfCAnLicgfCAnXicgfCAnJCcgfCAnXFxcXCcgYXMgYyAtPlxuICAgICAgICAgICAgUmUuY2hhciBjXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgIGMgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGdldCAoKVxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxubGV0IHJlID8oY2FzZSA9IHRydWUpIHMgPSBsZXQgciA9IHBhcnNlIHMgaW4gaWYgY2FzZSB0aGVuIHIgZWxzZSBSZS5ub19jYXNlIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhjYXNlID0gdHJ1ZSkgcyA9IGNvbXBpbGUgKHJlIH5jYXNlIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICopXG4oKiAgbGlua2luZyBleGNlcHRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZGlmaWVkIGJ5IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mciBmb3IgaW50ZWdyYXRpb24gaW4gUkUgKilcblxuKCogJElkOiByZV9zdHIubWwsdiAxLjMgMjAwMi8wNy8wMyAxNTo0Nzo1NCB2b3VpbGxvbiBFeHAgJCAqKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbnR5cGUgcmVnZXhwID1cbiAgeyByZTogUmUudFxuICA7IG10Y2g6IFJlLnJlIExhenkudFxuICA7IHNyY2g6IFJlLnJlIExhenkudCB9XG5cbmxldCBjb21waWxlX3JlZ2V4cCBzIGMgPVxuICBsZXQgcmUgPSBFbWFjcy5yZSB+Y2FzZToobm90IGMpIHMgaW5cbiAgeyByZVxuICA7IG10Y2ggPSBsYXp5IChSZS5jb21waWxlIChSZS5zZXEgW1JlLnN0YXJ0OyByZV0pKVxuICA7IHNyY2ggPSBsYXp5IChSZS5jb21waWxlIHJlKSB9XG5cbmxldCBzdGF0ZSA9IHJlZiBOb25lXG5cbmxldCBzdHJpbmdfbWF0Y2ggcmUgcyBwID1cbiAgdHJ5XG4gICAgc3RhdGUgOj0gU29tZSAoUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgZmFsc2VcblxubGV0IHN0cmluZ19wYXJ0aWFsX21hdGNoIHJlIHMgcCA9XG4gIG1hdGNoXG4gICAgUmUuZXhlY19wYXJ0aWFsIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzXG4gIHdpdGhcbiAgICBgRnVsbCAgICAgLT4gc3RyaW5nX21hdGNoIHJlIHMgcFxuICB8IGBQYXJ0aWFsICAtPiB0cnVlXG4gIHwgYE1pc21hdGNoIC0+IGZhbHNlXG5cbmxldCBzZWFyY2hfZm9yd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUuc3JjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIGZzdCAoUmUuR3JvdXAub2Zmc2V0IHJlcyAwKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgc2VhcmNoX2JhY2t3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgcFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgaWYgcCA9IDAgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZVxuICAgICAgc2VhcmNoX2JhY2t3YXJkIHJlIHMgKHAgLSAxKVxuXG5sZXQgdmFsaWRfZ3JvdXAgbiA9XG4gIG4gPj0gMCAmJiBuIDwgMTAgJiYgKFxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG0gLT4gbiA8IFJlLkdyb3VwLm5iX2dyb3VwcyBtXG4gIClcblxubGV0IG9mZnNldF9ncm91cCBpID1cbiAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgfCBTb21lIG0gLT4gUmUuR3JvdXAub2Zmc2V0IG0gaVxuICB8IE5vbmUgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGdyb3VwX2xlbiBpID1cbiAgdHJ5XG4gICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBpIGluXG4gICAgZSAtIGJcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAwXG5cbmxldCByZWMgcmVwbF9sZW5ndGggcmVwbCBwIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgaWYgcmVwbC5bcF0gPD4gJ1xcXFwnIHRoZW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSAocSArIDEpIGxlblxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBwID0gcCArIDEgaW5cbiAgICAgIGlmIHAgPSBsZW4gdGhlbiBmYWlsd2l0aCBcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiO1xuICAgICAgbGV0IHEgPVxuICAgICAgICBtYXRjaCByZXBsLltwXSB3aXRoXG4gICAgICAgIHwgJ1xcXFwnIC0+IHEgKyAxXG4gICAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IHEgKyBncm91cF9sZW4gKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJylcbiAgICAgICAgfCBfIC0+IHEgKyAyIGluXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgcSBsZW5cbiAgICBlbmRcbiAgZW5kIGVsc2VcbiAgICBxXG5cbmxldCByZWMgcmVwbGFjZSBvcmlnIHJlcGwgcCByZXMgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBsZXQgYyA9IHJlcGwuW3BdIGluXG4gICAgaWYgYyA8PiAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgQnl0ZXMuc2V0IHJlcyBxIGM7XG4gICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDEpIHJlcyAocSArIDEpIGxlblxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCByZXBsLltwICsgMV0gd2l0aFxuICAgICAgICAnXFxcXCcgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAxKSBsZW5cbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIGxldCBkID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgICAgIGxldCBkID0gZSAtIGIgaW5cbiAgICAgICAgICAgIGlmIGQgPiAwIHRoZW4gU3RyaW5nLmJsaXQgb3JpZyBiIHJlcyBxIGQ7XG4gICAgICAgICAgICBkXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIDBcbiAgICAgICAgaW5cbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyBkKSBsZW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICBCeXRlcy5zZXQgcmVzIChxICsgMSkgYztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAyKSBsZW5cbiAgICBlbmRcbiAgZW5kXG5cbmxldCByZXBsYWNlbWVudF90ZXh0IHJlcGwgb3JpZyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHJlcGwgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocmVwbF9sZW5ndGggcmVwbCAwIDAgbGVuKSBpblxuICByZXBsYWNlIG9yaWcgcmVwbCAwIHJlcyAwIChTdHJpbmcubGVuZ3RoIHJlcGwpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBzdHJpbmdfYmVmb3JlIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IGZpcnN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IGxhc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIChTdHJpbmcubGVuZ3RoIHMgLSBuKSBuXG5cbmxldCByZWdleHAgZSA9IGNvbXBpbGVfcmVnZXhwIGUgZmFsc2VcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgZSA9IGNvbXBpbGVfcmVnZXhwIGUgdHJ1ZVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIGZhbHNlXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIHRydWVcblxubGV0IGdyb3VwX2JlZ2lubmluZyBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2JlZ2lubmluZ1wiO1xuICBsZXQgcG9zID0gZnN0IChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBncm91cF9lbmQgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9lbmRcIjtcbiAgbGV0IHBvcyA9IHNuZCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgbWF0Y2hlZF9ncm91cCBuIHR4dCA9XG4gIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgbiBpblxuICBTdHJpbmcuc3ViIHR4dCBiIChlIC0gYilcblxubGV0IHJlcGxhY2VfbWF0Y2hlZCByZXBsIG1hdGNoZWQgPSByZXBsYWNlbWVudF90ZXh0IHJlcGwgbWF0Y2hlZFxuXG5sZXQgbWF0Y2hfYmVnaW5uaW5nICgpID0gZ3JvdXBfYmVnaW5uaW5nIDBcbmFuZCBtYXRjaF9lbmQgKCkgPSBncm91cF9lbmQgMFxuYW5kIG1hdGNoZWRfc3RyaW5nIHR4dCA9IG1hdGNoZWRfZ3JvdXAgMCB0eHRcblxubGV0IHN1YnN0aXR1dGVfZmlyc3QgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCAwIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtzdHJpbmdfYmVmb3JlIHRleHQgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcGxfZnVuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2FmdGVyIHRleHQgKG1hdGNoX2VuZCAoKSldXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdGV4dFxuXG5sZXQgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgbGV0IHJlYyByZXBsYWNlIGFjY3Ugc3RhcnQgbGFzdF93YXNfZW1wdHkgPVxuICAgIGxldCBzdGFydHBvcyA9IGlmIGxhc3Rfd2FzX2VtcHR5IHRoZW4gc3RhcnQgKyAxIGVsc2Ugc3RhcnQgaW5cbiAgICBpZiBzdGFydHBvcyA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgc3RhcnRwb3Mgd2l0aFxuICAgICAgfCBwb3MgLT5cbiAgICAgICAgbGV0IGVuZF9wb3MgPSBtYXRjaF9lbmQgKCkgaW5cbiAgICAgICAgbGV0IHJlcGxfdGV4dCA9IHJlcGxfZnVuIHRleHQgaW5cbiAgICAgICAgcmVwbGFjZSAocmVwbF90ZXh0IDo6IFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIGVuZF9wb3MgKGVuZF9wb3MgPSBwb3MpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gIGluXG4gIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgKHJlcGxhY2UgW10gMCBmYWxzZSkpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSBleHByIHJlcGwgdGV4dCA9XG4gIGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuYW5kIHJlcGxhY2VfZmlyc3QgZXhwciByZXBsIHRleHQgPVxuICBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuXG5sZXQgc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgcmUgcyBwID1cbiAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCBpblxuICBpZiBtYXRjaF9lbmQgKCkgPiBwIHRoZW5cbiAgICBwb3NcbiAgZWxzZSBpZiBwIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBzZWFyY2hfZm9yd2FyZCByZSBzIChwICsgMSlcbiAgZWxzZVxuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgYm91bmRlZF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBpZiBzdHJpbmdfbWF0Y2ggZXhwciB0ZXh0IDAgdGhlbiBtYXRjaF9lbmQgKCkgZWxzZSAwIGluXG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSBzdGFydCBudW0pXG5cbmxldCBzcGxpdCBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCAwXG5cbmxldCBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBpZiB0ZXh0ID0gXCJcIiB0aGVuXG4gICAgW11cbiAgZWxzZVxuICAgIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IHNwbGl0X2RlbGltIGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IDBcblxudHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZyB8IERlbGltIG9mIHN0cmluZ1xuXG5sZXQgYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgbGV0IHMgPSBtYXRjaGVkX3N0cmluZyB0ZXh0IGluXG4gICAgICAgIGlmIHBvcyA+IHN0YXJ0IHRoZW5cbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6XG4gICAgICAgICAgICAgICAgIFRleHQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zIC0gc3RhcnQpKSA6OlxuICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OiBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgZnVsbF9zcGxpdCBleHByIHRleHQgPSBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IDBcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgZW5jbG9zZWQgPVxuICB8IENoYXIgb2YgY2hhclxuICB8IFJhbmdlIG9mIGNoYXIgKiBjaGFyXG5cbnR5cGUgcGllY2UgPVxuICB8IEV4YWN0bHkgb2YgY2hhclxuICB8IEFueV9vZiBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgQW55X2J1dCBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgT25lXG4gIHwgTWFueVxuICB8IE1hbnlNYW55XG5cbnR5cGUgdCA9IHBpZWNlIGxpc3RcblxubGV0IG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMgOiB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCByZWFkIGMgPVxuICAgIGxldCByID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgICBpZiByIHRoZW4gaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICAoKipcbiAgIFtyZWFkX2FoZWFkIHBhdHRlcm5dIHdpbGwgYXR0ZW1wdCB0byByZWFkIFtwYXR0ZXJuXSBhbmQgd2lsbCByZXR1cm4gW3RydWVdIGlmIGl0IHdhcyBzdWNjZXNzZnVsLlxuICAgSWYgaXQgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIFtmYWxzZV0gYW5kIG5vdCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kZXguXG4gICopXG4gIGxldCByZWFkX2FoZWFkIHBhdHRlcm4gPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggcGF0dGVybiBpblxuICAgICgqIGlmIHRoZSBwYXR0ZXJuIHdlIGFyZSBsb29raW5nIGZvciBleGVlZHMgdGhlIHJlbWFpbmluZyBsZW5ndGggb2YgcywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5ICopXG4gICAgaWYgIWkgKyBwYXR0ZXJuX2xlbiA+PSBsIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMCB0byBwYXR0ZXJuX2xlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgZm91bmQgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWkgKyBqXSA9IHBhdHRlcm4uW2pdIGluXG4gICAgICAgICAgaWYgbm90IGZvdW5kIHRoZW4gcmFpc2Vfbm90cmFjZSBFeGl0O1xuICAgICAgICBkb25lO1xuICAgICAgICBpIDo9ICFpICsgcGF0dGVybl9sZW47XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggfCBFeGl0ICAtPiBmYWxzZVxuICBpblxuXG4gIGxldCBjaGFyICgpID1cbiAgICBpZ25vcmUgKHJlYWQgJ1xcXFwnIDogYm9vbCk7XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IHIgPSBzLlshaV0gaW5cbiAgICBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gIGxldCBlbmNsb3NlZCAoKSA6IGVuY2xvc2VkIGxpc3QgPVxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgICgqIFRoaXMgcmV0dXJucyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBidXQgb3JkZXIgaXNuJ3QgaW1wb3J0YW50IGFueXdheSAqKVxuICAgICAgaWYgcyA8PiBbXSAmJiByZWFkICddJ1xuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgICBpZiBub3QgKHJlYWQgJy0nKVxuICAgICAgICB0aGVuIGxvb3AgKENoYXIgYyA6OiBzKVxuICAgICAgICBlbHNlIGlmIHJlYWQgJ10nXG4gICAgICAgIHRoZW4gQ2hhciBjIDo6IENoYXIgJy0nIDo6IHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBsb29wIChSYW5nZSAoYywgYycpIDo6IHMpXG4gICAgaW5cbiAgICBsb29wIFtdXG4gIGluXG5cbiAgbGV0IHBpZWNlICgpID1cbiAgICBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZF9haGVhZCBcIi8qKlwiICYmIG5vdCAoZW9zICgpKVxuICAgIHRoZW4gTWFueU1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJyonXG4gICAgdGhlbiBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZCAnKidcbiAgICAgIHRoZW4gTWFueU1hbnlcbiAgICAgIGVsc2UgTWFueVxuICAgIGVsc2UgaWYgcmVhZCAnPydcbiAgICB0aGVuIE9uZVxuICAgIGVsc2UgaWYgbm90IChyZWFkICdbJylcbiAgICB0aGVuIEV4YWN0bHkgKGNoYXIgKCkpXG4gICAgZWxzZSBpZiByZWFkICdeJyB8fCByZWFkICchJ1xuICAgIHRoZW4gQW55X2J1dCAoZW5jbG9zZWQgKCkpXG4gICAgZWxzZSBBbnlfb2YgKGVuY2xvc2VkICgpKVxuICBpblxuXG4gIGxldCByZWMgbG9vcCBwaWVjZXMgPVxuICAgIGlmIGVvcyAoKVxuICAgIHRoZW4gTGlzdC5yZXYgcGllY2VzXG4gICAgZWxzZSBsb29wIChwaWVjZSAoKSA6OiBwaWVjZXMpXG4gIGluXG5cbiAgbG9vcCBbXVxuXG5sZXQgbXVsIGwgbCcgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gcyAtPiBMaXN0Lm1hcCAoZnVuIHMnIC0+IHMgXiBzJykgbCcpIGwpXG5cbmxldCBleHBsb2RlIHN0ciA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBleHBsIGlubmVyIHMgaSBhY2MgYmVnID1cbiAgICBpZiBpID49IGwgdGhlbiBiZWdpblxuICAgICAgaWYgaW5uZXIgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldLCBpKVxuICAgIGVuZCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXFwnIC0+IGV4cGwgaW5uZXIgcyAoaSArIDIpIGFjYyBiZWdcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIGxldCAodCwgaScpID0gZXhwbCB0cnVlIChpICsgMSkgKGkgKyAxKSBbXSBbXCJcIl0gaW5cbiAgICAgICAgZXhwbCBpbm5lciBpJyBpJyBhY2NcbiAgICAgICAgICAobXVsIGJlZyAobXVsIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIHQpKVxuICAgICAgfCAnLCcgd2hlbiBpbm5lciAtPlxuICAgICAgICBleHBsIGlubmVyIChpICsgMSkgKGkgKyAxKVxuICAgICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjKSBbXCJcIl1cbiAgICAgIHwgJ30nIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MsIGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgcyAoaSArIDEpIGFjYyBiZWdcbiAgaW5cbiAgTGlzdC5yZXYgKGZzdCAoZXhwbCBmYWxzZSAwIDAgW10gW1wiXCJdKSlcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZV9waWVjZXMgICAgICAgICAgICAgICAgOiBSZS50IGxpc3Q7ICAoKiBsYXN0IHBpZWNlIGF0IGhlYWQgb2YgbGlzdC4gKilcbiAgICByZW1haW5pbmcgICAgICAgICAgICAgICAgOiBwaWVjZSBsaXN0OyAoKiBsYXN0IHBpZWNlIGF0IHRhaWwgb2YgbGlzdC4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuICAgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gb3IgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciAnLycgKilcbiAgICBwYXRobmFtZSAgICAgICAgICAgICAgICAgOiBib29sO1xuICAgIG1hdGNoX2JhY2tzbGFzaGVzICAgICAgICA6IGJvb2w7XG4gICAgcGVyaW9kICAgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfnBlcmlvZCB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIHJlbWFpbmluZyA9XG4gICAge1xuICAgICAgcmVfcGllY2VzID0gW107XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gdHJ1ZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IHRydWU7XG4gICAgICBwYXRobmFtZTtcbiAgICAgIG1hdGNoX2JhY2tzbGFzaGVzO1xuICAgICAgcGVyaW9kO1xuICAgICAgcmVtYWluaW5nO1xuICAgIH1cblxuICBsZXQgZXhwbGljaXRfcGVyaW9kIHQgPVxuICAgIHQucGVyaW9kICYmIChcbiAgICAgIHQuYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiB8fFxuICAgICAgKHQuYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ICYmIHQucGF0aG5hbWUpXG4gICAgKVxuXG4gIGxldCBleHBsaWNpdF9zbGFzaCB0ID0gdC5wYXRobmFtZVxuXG4gIGxldCBzbGFzaGVzIHQgPVxuICAgIGlmIHQubWF0Y2hfYmFja3NsYXNoZXMgdGhlbiBbJy8nOyAnXFxcXCddIGVsc2UgWycvJ11cblxuICBsZXQgYXBwZW5kID8oYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50PWZhbHNlKSB0IHBpZWNlID1cbiAgICB7IHQgd2l0aFxuICAgICAgcmVfcGllY2VzID0gcGllY2UgOjogdC5yZV9waWVjZXM7XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gZmFsc2U7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ7XG4gICAgfVxuXG4gIGxldCB0b19yZSB0ID0gUmUuc2VxIChMaXN0LnJldiB0LnJlX3BpZWNlcylcblxuICBsZXQgbmV4dCB0ID1cbiAgICBtYXRjaCB0LnJlbWFpbmluZyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBwaWVjZSA6OiByZW1haW5pbmcgLT4gU29tZSAocGllY2UsIHsgdCB3aXRoIHJlbWFpbmluZyB9KVxuZW5kXG5cbmxldCBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgPVxuICBSZS5jb21wbCAoXG4gICAgTGlzdC5jb25jYXQgW1xuICAgICAgaWYgZXhwbGljaXRfc2xhc2ggIHRoZW4gTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzIGVsc2UgW107XG4gICAgICBpZiBleHBsaWNpdF9wZXJpb2QgdGhlbiBbUmUuY2hhciAnLiddIGVsc2UgW107XG4gICAgXVxuICApXG5cbmxldCBlbmNsb3NlZCBlbmNsb3NlZCA9XG4gIG1hdGNoIGVuY2xvc2VkIHdpdGhcbiAgfCBDaGFyIGMgLT4gUmUuY2hhciBjXG4gIHwgUmFuZ2UgKGxvdywgaGlnaCkgLT4gUmUucmcgbG93IGhpZ2hcblxubGV0IGVuY2xvc2VkX3NldCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBraW5kIHNldCA9XG4gIGxldCBzZXQgPSBMaXN0Lm1hcCBlbmNsb3NlZCBzZXQgaW5cbiAgbGV0IGVuY2xvc3VyZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQW55X29mIC0+IFJlLmFsdCBzZXRcbiAgICB8IGBBbnlfYnV0IC0+IFJlLmNvbXBsIHNldFxuICBpblxuICBSZS5pbnRlciBbZW5jbG9zdXJlOyBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2RdXG5cbmxldCBleGFjdGx5IHN0YXRlIGMgPVxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IExpc3QubWVtIGMgc2xhc2hlcyBpblxuICBsZXQgY2hhcnMgPSBpZiBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgdGhlbiBzbGFzaGVzIGVsc2UgW2NdIGluXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIGNoYXJzKSkgfmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudFxuXG5sZXQgbWFueV9tYW55IHN0YXRlID1cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IHN0YXRlLlN0YXRlLnBlcmlvZCAmJiBzdGF0ZS5TdGF0ZS5wYXRobmFtZSBpblxuICBsZXQgZmlyc3RfZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgbWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QgPVxuICAgIFJlLnNlcSBbXG4gICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgXVxuICBpblxuICAoKiBXZSBtdXN0IG1hdGNoIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5IHdoZW4gW3BlcmlvZF0gZmxhZyBpcyBzZXQsXG4gICAgIG1ha2luZyBzdXJlIHRvIG5vdCBtYXRjaCBbXCJmb28vLmJhclwiXS4gKilcbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChcbiAgICBSZS5zZXEgW1xuICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZDpmaXJzdF9leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgUmUucmVwIChcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyk7XG4gICAgICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCk7XG4gICAgICAgIF1cbiAgICAgICk7XG4gICAgXSlcblxubGV0IG1hbnkgKHN0YXRlIDogU3RhdGUudCkgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICAoKiBXaGV0aGVyIHdlIG11c3QgZXhwbGljaXRseSBtYXRjaCBwZXJpb2QgZGVwZW5kcyBvbiB0aGUgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgYnV0XG4gICAgIHNsYXNoZXMgYXJlIGVhc3kgdG8gZXhwbGljaXQgbWF0Y2guIFRoaXMgY29uZGl0aW9uYWwgc3BsaXRzIG91dCBzb21lIHNpbXBsZSBjYXNlcy5cbiAgKilcbiAgaWYgbm90IGV4cGxpY2l0X3BlcmlvZCB0aGVuIGJlZ2luXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCkpXG4gIGVuZCBlbHNlIGlmIG5vdCBleHBsaWNpdF9zbGFzaCB0aGVuIGJlZ2luXG4gICAgKCogSW4gdGhpcyBzdGF0ZSwgd2UgZXhwbGljaXRseSBtYXRjaCBwZXJpb2RzIG9ubHkgYXQgdGhlIHZlcnkgYmVnaW5uaW5nICopXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5vcHQgKFxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICApKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIGxldCBub3RfZW1wdHkgPVxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICBpblxuICAgICgqIFttYXliZV9lbXB0eV0gaXMgdGhlIGRlZmF1bHQgdHJhbnNsYXRpb24gb2YgTWFueSwgZXhjZXB0IGluIHNvbWUgc3BlY2lhbCBjYXNlcy5cbiAgICAqKVxuICAgIGxldCBtYXliZV9lbXB0eSA9IFJlLm9wdCBub3RfZW1wdHkgaW5cbiAgICBsZXQgZW5jbG9zZWRfc2V0IHN0YXRlIGtpbmQgc2V0ID1cbiAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IFtcbiAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBub3RfZW1wdHk7XG4gICAgICAgICAgKCogU2luY2UgW25vdF9lbXB0eV0gbWF0Y2hlZCwgc3Vic2VxdWVudCBkb3RzIGFyZSBub3QgbGVhZGluZy4gKilcbiAgICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZTtcbiAgICAgICAgXTtcbiAgICAgIF0pXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb2thaGVhZCBzdGF0ZSA9XG4gICAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbWF5YmVfZW1wdHlcbiAgICAgICgqIGdsb2IgKiogPT09IGdsb2IgKiAuICopXG4gICAgICB8IFNvbWUgKE1hbnksIHN0YXRlKSAtPiBsb29rYWhlYWQgc3RhdGVcbiAgICAgIHwgU29tZSAoRXhhY3RseSBjLCBzdGF0ZSkgLT5cbiAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICBTdGF0ZS5hcHBlbmQgc3RhdGVcbiAgICAgICAgICAgIChpZiBjID0gJy4nXG4gICAgICAgICAgICAgdGhlbiBub3RfZW1wdHlcbiAgICAgICAgICAgICBlbHNlIG1heWJlX2VtcHR5KVxuICAgICAgICBpblxuICAgICAgICBleGFjdGx5IHN0YXRlIGNcbiAgICAgICgqIGdsb2IgKj8gPT09IGdsb2IgPyogKilcbiAgICAgIHwgU29tZSAoT25lLCBzdGF0ZSkgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG5vdF9lbXB0eVxuICAgICAgfCBTb21lIChBbnlfb2YgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9vZiBlbmNsb3NlZFxuICAgICAgfCBTb21lIChBbnlfYnV0IGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfYnV0IGVuY2xvc2VkXG4gICAgICAoKiAqIHRoZW4gKiogPT09ICoqICopXG4gICAgICB8IFNvbWUgKE1hbnlNYW55LCBzdGF0ZSkgLT4gbWFueV9tYW55IHN0YXRlXG4gICAgaW5cbiAgICBsb29rYWhlYWQgc3RhdGVcbiAgZW5kXG5cbmxldCBwaWVjZSBzdGF0ZSBwaWVjZSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIG1hdGNoIHBpZWNlIHdpdGhcbiAgfCBPbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpXG4gIHwgTWFueSAtPiBtYW55IHN0YXRlXG4gIHwgQW55X29mIGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9vZiB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBBbnlfYnV0IGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9idXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgRXhhY3RseSBjIC0+IGV4YWN0bHkgc3RhdGUgY1xuICB8IE1hbnlNYW55IC0+IG1hbnlfbWFueSBzdGF0ZVxuXG5sZXQgZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYiA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IFN0YXRlLnRvX3JlIHN0YXRlXG4gICAgfCBTb21lIChwLCBzdGF0ZSkgLT4gbG9vcCAocGllY2Ugc3RhdGUgcClcbiAgaW5cbiAgbG9vcCAoU3RhdGUuY3JlYXRlIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iKVxuXG5sZXQgZ2xvYlxuICAgICAgPyhhbmNob3JlZCA9IGZhbHNlKVxuICAgICAgPyhwYXRobmFtZSA9IHRydWUpXG4gICAgICA/KG1hdGNoX2JhY2tzbGFzaGVzID0gZmFsc2UpXG4gICAgICA/KHBlcmlvZCA9IHRydWUpXG4gICAgICA/KGV4cGFuZF9icmFjZXMgPSBmYWxzZSlcbiAgICAgID8oZG91YmxlX2FzdGVyaXNrID0gdHJ1ZSlcbiAgICAgIHNcbiAgPVxuICBsZXQgdG9fcmUgcyA9XG4gICAgbGV0IHJlID0gZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgKG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMpIGluXG4gICAgaWYgYW5jaG9yZWRcbiAgICB0aGVuIFJlLndob2xlX3N0cmluZyByZVxuICAgIGVsc2UgcmVcbiAgaW5cbiAgaWYgZXhwYW5kX2JyYWNlc1xuICB0aGVuIFJlLmFsdCAoTGlzdC5tYXAgdG9fcmUgKGV4cGxvZGUgcykpXG4gIGVsc2UgdG9fcmUgc1xuXG5sZXQgZ2xvYicgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfnBlcmlvZCBzXG5cbmxldCBnbG9ieCA/YW5jaG9yZWQgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgc1xuXG5sZXQgZ2xvYngnID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgfnBlcmlvZCBzXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBvc2l4X2NsYXNzX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJhbHBoYVwiICAtPiBSZS5hbHBoYVxuICB8IFwiYWxudW1cIiAgLT4gUmUuYWxudW1cbiAgfCBcImFzY2lpXCIgIC0+IFJlLmFzY2lpXG4gIHwgXCJibGFua1wiICAtPiBSZS5ibGFua1xuICB8IFwiY250cmxcIiAgLT4gUmUuY250cmxcbiAgfCBcImRpZ2l0XCIgIC0+IFJlLmRpZ2l0XG4gIHwgXCJsb3dlclwiICAtPiBSZS5sb3dlclxuICB8IFwicHJpbnRcIiAgLT4gUmUucHJpbnRcbiAgfCBcInNwYWNlXCIgIC0+IFJlLnNwYWNlXG4gIHwgXCJ1cHBlclwiICAtPiBSZS51cHBlclxuICB8IFwid29yZFwiICAgLT4gUmUud29yZGNcbiAgfCBcInB1bmN0XCIgIC0+IFJlLnB1bmN0XG4gIHwgXCJncmFwaFwiICAtPiBSZS5ncmFwaFxuICB8IFwieGRpZ2l0XCIgLT4gUmUueGRpZ2l0XG4gIHwgY2xhc3NfICAgLT4gaW52YWxpZF9hcmcgKFwiSW52YWxpZCBwY3JlIGNsYXNzOiBcIiBeIGNsYXNzXylcblxubGV0IHBvc2l4X2NsYXNzX3N0cmluZ3MgPVxuICBbIFwiYWxwaGFcIiA7IFwiYWxudW1cIiA7IFwiYXNjaWlcIlxuICA7IFwiYmxhbmtcIiA7IFwiY250cmxcIiA7IFwiZGlnaXRcIlxuICA7IFwibG93ZXJcIiA7IFwicHJpbnRcIiA7IFwic3BhY2VcIlxuICA7IFwidXBwZXJcIiA7IFwid29yZFwiICA7IFwicHVuY3RcIlxuICA7IFwiZ3JhcGhcIiA7IFwieGRpZ2l0XCIgXVxuXG5sZXQgcGFyc2UgbXVsdGlsaW5lIGRvbGxhcl9lbmRvbmx5IGRvdGFsbCB1bmdyZWVkeSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHRfcyBzJyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcycgaW5cbiAgICB0cnlcbiAgICAgIGZvciBqID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHRyeSBpZiBzJy5bal0gPD4gcy5bIWkgKyBqXSB0aGVuIHJhaXNlIEV4aXRcbiAgICAgICAgd2l0aCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBpIDo9ICFpICsgbGVuO1xuICAgICAgdHJ1ZVxuICAgIHdpdGggRXhpdCAtPiBmYWxzZSBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuICBsZXQgZ3JlZWR5X21vZCByID1cbiAgICBsZXQgZ3IgPSBhY2NlcHQgJz8nIGluXG4gICAgbGV0IGdyID0gaWYgdW5ncmVlZHkgdGhlbiBub3QgZ3IgZWxzZSBnciBpblxuICAgIGlmIGdyIHRoZW4gUmUubm9uX2dyZWVkeSByIGVsc2UgUmUuZ3JlZWR5IHJcbiAgaW5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAxIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gZ3JlZWR5X21vZCAoUmUub3B0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGdyZWVkeV9tb2QgKFJlLnJlcG4gciBpIGopXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgZG90YWxsIHRoZW4gUmUuYW55IGVsc2UgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPycgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICByXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnIycgdGhlbiBiZWdpblxuICAgICAgICAgIGNvbW1lbnQgKClcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lICgpIGluXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgUmUuZ3JvdXAgfm5hbWUgclxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmVvbCBlbHNlIGlmIGRvbGxhcl9lbmRvbmx5IHRoZW4gUmUubGVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4oKiBYWFhcbiAgIC0gQmFjay1yZWZlcmVuY2VzXG4gICAtIFxcY3ggKGNvbnRyb2wteCksIFxcZGRkXG4qKVxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAndycgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ1cnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgUmUuc3BhY2VcbiAgICAgIHwgJ1MnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLnNwYWNlXVxuICAgICAgfCAnZCcgLT5cbiAgICAgICAgICBSZS5kaWdpdFxuICAgICAgfCAnRCcgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuZGlnaXRdXG4gICAgICB8ICdiJyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICB8ICdCJyAtPlxuICAgICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgfCAnQScgLT5cbiAgICAgICAgICBSZS5ib3NcbiAgICAgIHwgJ1onIC0+XG4gICAgICAgICAgUmUubGVvbFxuICAgICAgfCAneicgLT5cbiAgICAgICAgICBSZS5lb3NcbiAgICAgIHwgJ0cnIC0+XG4gICAgICAgICAgUmUuc3RhcnRcbiAgICAgIHwgJ2UnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MWInXG4gICAgICB8ICdmJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDBjJ1xuICAgICAgfCAnbicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXG4nXG4gICAgICB8ICdyJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xccidcbiAgICAgIHwgJ3QnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx0J1xuICAgICAgfCAneCcgLT5cbiAgICAgICAgICBsZXQgYzEgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjMiA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGNvZGUgPSBjMSAqIDE2ICsgYzIgaW5cbiAgICAgICAgICBSZS5jaGFyIChjaGFyX29mX2ludCBjb2RlKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBSZS5jaGFyIGNcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGhleGRpZ2l0ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdhJy4uJ2YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8ICdBJy4uJ0YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIG5hbWUgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicpIGFzIGMgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIG5hbWUnIGIgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JykgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8ICc+JyAtPiBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgfCBgQ2hhciBjIC0+XG4gICAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgICAgICAgICAgYENoYXIgYycgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICAgICAgfCBgU2V0IHN0JyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogc3QnIDo6IHMpXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgICB8IGBTZXQgc3QgLT4gYnJhY2tldCAoc3QgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgIGlmIGFjY2VwdCAnOicgdGhlblxuICAgICAgICBsZXQgY29tcGwgPSBhY2NlcHQgJ14nIGluXG4gICAgICAgIGxldCBjbHMgPVxuICAgICAgICAgIHRyeSBMaXN0LmZpbmQgYWNjZXB0X3MgcG9zaXhfY2xhc3Nfc3RyaW5nc1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIFBhcnNlX2Vycm9yIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0X3MgXCI6XVwiKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgcmUgPVxuICAgICAgICAgIGxldCBwb3NpeF9jbGFzcyA9IHBvc2l4X2NsYXNzX29mX3N0cmluZyBjbHMgaW5cbiAgICAgICAgICBpZiBjb21wbCB0aGVuIFJlLmNvbXBsIFtwb3NpeF9jbGFzc10gZWxzZSBwb3NpeF9jbGFzcyBpblxuICAgICAgICBgU2V0IChyZSlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBgQ2hhciBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2UgaWYgYyA9ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4oKiBYWFhcbiAgIFxcMTI3LCAuLi5cbiopXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJ2InIC0+IGBDaGFyICdcXDAwOCdcbiAgICAgIHwgJ24nIC0+IGBDaGFyICdcXG4nICgqWFhYKilcbiAgICAgIHwgJ3InIC0+IGBDaGFyICdcXHInICgqWFhYKilcbiAgICAgIHwgJ3QnIC0+IGBDaGFyICdcXHQnICgqWFhYKilcbiAgICAgIHwgJ3cnIC0+IGBTZXQgKFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ1cnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAncycgLT4gYFNldCAoUmUuc3BhY2UpXG4gICAgICB8ICdTJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuc3BhY2VdKVxuICAgICAgfCAnZCcgLT4gYFNldCAoUmUuZGlnaXQpXG4gICAgICB8ICdEJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuZGlnaXRdKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGBDaGFyIGNcbiAgYW5kIGNvbW1lbnQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGlmIGFjY2VwdCAnKScgdGhlbiBSZS5lcHNpbG9uIGVsc2UgYmVnaW4gaW5jciBpOyBjb21tZW50ICgpIGVuZFxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPVxuICBbIGBVbmdyZWVkeSB8IGBEb3RhbGwgfCBgRG9sbGFyX2VuZG9ubHlcbiAgfCBgTXVsdGlsaW5lIHwgYEFuY2hvcmVkIHwgYENhc2VsZXNzIF1cblxubGV0IHJlICA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID1cbiAgICBwYXJzZVxuICAgICAgKExpc3QubWVtcSBgTXVsdGlsaW5lIG9wdHMpIChMaXN0Lm1lbXEgYERvbGxhcl9lbmRvbmx5IG9wdHMpXG4gICAgICAoTGlzdC5tZW1xIGBEb3RhbGwgb3B0cykgKExpc3QubWVtcSBgVW5ncmVlZHkgb3B0cylcbiAgICAgIHNcbiAgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYEFuY2hvcmVkIG9wdHMgdGhlbiBSZS5zZXEgW1JlLnN0YXJ0OyByXSBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYENhc2VsZXNzIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwibW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQZXJsLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZCA9IFBlcmwuTm90X3N1cHBvcnRlZFxuXG50eXBlIHJlZ2V4cCA9IFJlLnJlXG5cbnR5cGUgZmxhZyA9IFsgYENBU0VMRVNTIHwgYE1VTFRJTElORSB8IGBBTkNIT1JFRCB8IGBET1RBTEwgXVxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9XG4gIHwgVGV4dCAgb2Ygc3RyaW5nXG4gIHwgRGVsaW0gb2Ygc3RyaW5nXG4gIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nXG4gIHwgTm9Hcm91cFxuXG50eXBlIGdyb3VwcyA9IENvcmUuR3JvdXAudFxuXG5sZXQgcmUgPyhmbGFncyA9IFtdKSBwYXQgPVxuICBsZXQgb3B0cyA9IExpc3QubWFwIChmdW5jdGlvblxuICAgIHwgYENBU0VMRVNTIC0+IGBDYXNlbGVzc1xuICAgIHwgYE1VTFRJTElORSAtPiBgTXVsdGlsaW5lXG4gICAgfCBgQU5DSE9SRUQgLT4gYEFuY2hvcmVkXG4gICAgfCBgRE9UQUxMIC0+IGBEb3RhbGxcbiAgKSBmbGFncyBpblxuICBQZXJsLnJlIH5vcHRzIHBhdFxuXG5sZXQgcmVnZXhwID9mbGFncyBwYXQgPSBSZS5jb21waWxlIChyZSA/ZmxhZ3MgcGF0KVxuXG5sZXQgZXh0cmFjdCB+cmV4IHMgPVxuICBSZS5Hcm91cC5hbGwgKFJlLmV4ZWMgcmV4IHMpXG5cbmxldCBleGVjIH5yZXggP3BvcyBzID1cbiAgUmUuZXhlYyByZXggP3BvcyBzXG5cbmxldCBnZXRfc3Vic3RyaW5nIHMgaSA9XG4gIFJlLkdyb3VwLmdldCBzIGlcblxubGV0IG5hbWVzIHJleCA9XG4gIFJlLmdyb3VwX25hbWVzIHJleFxuICB8PiBMaXN0Lm1hcCBmc3RcbiAgfD4gQXJyYXkub2ZfbGlzdFxuXG5sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgKG4sIGkpIDo6IHJlbSB3aGVuIG4gPSBuYW1lIC0+XG4gICAgICAgYmVnaW5cbiAgICAgICAgIHRyeSBnZXRfc3Vic3RyaW5nIHMgaVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gbG9vcCByZW1cbiAgICAgICBlbmRcbiAgICB8IF8gOjogcmVtIC0+IGxvb3AgcmVtXG4gIGluXG4gIGxvb3AgKFJlLmdyb3VwX25hbWVzIHJleClcblxubGV0IGdldF9zdWJzdHJpbmdfb2ZzIHMgaSA9XG4gIFJlLkdyb3VwLm9mZnNldCBzIGlcblxubGV0IHBtYXRjaCB+cmV4IHMgPVxuICBSZS5leGVjcCByZXggc1xuXG5sZXQgc3Vic3RpdHV0ZSB+cmV4IH5zdWJzdCBzdHIgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcGF0ID0gUmUuR3JvdXAuZ2V0IHNzIDAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3Vic3QgcGF0KTtcbiAgICAgIGxvb3AgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpO1xuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKVxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IH5yZXggc3RyID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgTGlzdC5yZXYgYWNjdVxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChzdGFydCAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgICkgaW5cbiAgbG9vcCBbXSAwXG5cbigqIEZyb20gUENSRSAqKVxubGV0IHN0cmluZ191bnNhZmVfc3ViIHMgb2ZzIGxlbiA9XG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBCeXRlcy51bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKGxlbiBsc2wgMSkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICB8ICdcXFxcJyB8ICdeJyB8ICckJyB8ICcuJyB8ICdbJyB8ICd8J1xuICAgIHwgJygnICB8ICcpJyB8ICc/JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zICdcXFxcJztcbiAgICAgIGluY3IgcG9zO1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICAgIHwgYyAtPiBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gIGRvbmU7XG4gIHN0cmluZ191bnNhZmVfc3ViIGJ1ZiAwICFwb3NcblxubGV0IGZ1bGxfc3BsaXQgPyhtYXg9MCkgfnJleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMCB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IHNdXG4gIGVsc2VcbiAgICBsZXQgcmVzdWx0cyA9IFJlLnNwbGl0X2Z1bGwgcmV4IHMgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBgVGV4dCBzIC0+IFtUZXh0IHNdXG4gICAgICAgIHwgYERlbGltIGQgLT5cbiAgICAgICAgICBsZXQgbWF0Y2hlcyA9IFJlLkdyb3VwLmFsbF9vZmZzZXQgZCBpblxuICAgICAgICAgIGxldCBkZWxpbSA9IFJlLkdyb3VwLmdldCBkIDAgaW5cbiAgICAgICAgICAoRGVsaW0gZGVsaW0pOjooXG4gICAgICAgICAgICBsZXQgbCA9IHJlZiBbXSBpblxuICAgICAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBtYXRjaGVzIC0gMSBkb1xuICAgICAgICAgICAgICBsIDo9XG4gICAgICAgICAgICAgICAgKGlmIG1hdGNoZXMuKGkpID0gKC0xLCAtMSlcbiAgICAgICAgICAgICAgICAgdGhlbiBOb0dyb3VwXG4gICAgICAgICAgICAgICAgIGVsc2UgR3JvdXAgKGksIFJlLkdyb3VwLmdldCBkIGkpKVxuICAgICAgICAgICAgICAgIDo6KCFsKVxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIExpc3QucmV2ICFsKSkgcmVzdWx0cyBpblxuICAgIExpc3QuY29uY2F0IG1hdGNoZXNcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG4oKlxuV2hhdCB3ZSBjb3VsZCAoc2hvdWxkPykgZG86XG4tIGEqID09PiBsb25nZXN0ICgoc2hvcnRlc3QgKG5vX2dyb3VwIGEpKiApLCBhIHwgKCkpICAoISEhKVxuLSBhYmMgdW5kZXJzdG9vZCBhcyAoYWIpY1xuLSBcIigoYT8pfGIpXCIgYWdhaW5zdCBcImFiXCIgc2hvdWxkIG5vdCBiaW5kIHRoZSBmaXJzdCBzdWJwYXR0ZXJuIHRvIGFueXRoaW5nXG5cbk5vdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGFuZGxlIFwiKCgoYWIpYylkKWVcIiBlZmZpY2llbnRseVxuKilcbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgbmV3bGluZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgUmUucmVwbiAoUmUubmVzdCByKSBpIGpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUubm90bmwgZWxzZSBSZS5hbnlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBSZS5ncm91cCByXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5lb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5kaWZmIChSZS5jb21wbCAoYnJhY2tldCBbXSkpIChSZS5jaGFyICdcXG4nKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3wnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJz8nXG4gICAgICB8ICdbJyB8ICcuJyB8ICdeJyB8ICckJyB8ICd7JyB8ICdcXFxcJyBhcyBjIC0+IFJlLmNoYXIgY1xuICAgICAgfCAgICAgICAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWQgKCpYWFgqKVxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGNcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID0gW2BJQ2FzZSB8IGBOb1N1YiB8IGBOZXdsaW5lXVxuXG5sZXQgcmUgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9IHBhcnNlIChMaXN0Lm1lbXEgYE5ld2xpbmUgb3B0cykgcyBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgSUNhc2Ugb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYE5vU3ViIG9wdHMgdGhlbiBSZS5ub19ncm91cCByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlIHJlID0gUmUuY29tcGlsZSAoUmUubG9uZ2VzdCByZSlcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG5vcGVuIFN0b3JlXG5cbm1vZHVsZSBNYWtlIChTIDogU1RPUkUpID0gc3RydWN0XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBJbiB0aGlzIHZlcnNpb24gdGhlIGNvZGUsIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXN0IG5vdCBtdXRhYmxlLiBJbmRlZWQsXG4gICBldmVyeSBtdXRhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB2aWEgW1Muc2V0XS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiAnYSBycmVmXG58IFJvb3Qgb2YgcmFuayAqICdhXG5cbigqIFRoZSB0eXBlIFsnYSBycmVmXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgcnJlZiA9XG4gICdhIGNvbnRlbnQgUy5ycmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSB0eXBlIG9mIHN0b3JlcywgYW5kIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgc3RvcmUsIGFyZSB0aG9zZVxuICAgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gW1NdLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgJ2EgY29udGVudCBTLnN0b3JlXG5cbmxldCBuZXdfc3RvcmUgOiB1bml0IC0+ICdhIHN0b3JlID1cbiAgUy5uZXdfc3RvcmVcblxubGV0IGNvcHkgOiAnYSBzdG9yZSAtPiAnYSBzdG9yZSA9XG4gIFMuY29weVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSBzIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIFMubWFrZSBzIChSb290ICgwLCB2KSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgcyB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCBfKSAtPlxuICAgICAgeFxuICB8IExpbmsgeSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHMgeSBpblxuICAgICAgaWYgUy5lcSBzIHkgeiB0aGVuXG4gICAgICAgIHpcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGxpbmtfdG9feiA9IFMuZ2V0IHMgeSBpblxuICAgICAgICBTLnNldCBzIHggbGlua190b196O1xuICAgICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgcyB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZSBzYW1lXG4gICBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYSBwaHlzaWNhbFxuICAgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF0gYW5kIFt5XSBhcmVcbiAgIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgUy5lcSBzIHggeSB8fCBTLmVxIHMgKGZpbmQgcyB4KSAoZmluZCBzIHkpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXRfIHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW2dldCBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChfLCB2KSAtPlxuICAgICAgICAgIHZcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgZ2V0XyBzIHhcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldF8gcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbc2V0IHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICAgICAgUy5zZXQgcyB5IChSb290IChyLCB2KSlcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgc2V0XyBzIHggdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24gcyB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgXykgLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpOyB5XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTsgeFxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4ICsgMSwgdngpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIHMgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIHZ5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpO1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiBTLnNldCBzIHkgKFJvb3QgKHJ5LCB2KSk7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIFMuc2V0IHMgeCAoUm9vdCAocngsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocngrMSwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBXZSBtYWtlIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXRhYmxlLCBhbmQgd2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXRcbiAgIGV2ZXJ5IHZlcnRleCB1bmlxdWVseSBvd25zIGl0cyBjb250ZW50LiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgYSBjb250ZW50XG4gICBpbiBwbGFjZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBuZXcgY29udGVudCBhbmQgdXBkYXRpbmcgdGhlIHZlcnRleCB3aXRoXG4gICB0aGlzIG5ldyBjb250ZW50LlxuXG4gICBXZSBvYnRhaW4gdGhlIHByb3BlcnR5IHRoYXQ6XG4gICAtIG9ubHkgW21ha2VdIGFsbG9jYXRlcyBhIG5ldyB2ZXJ0ZXggKGEgcmVmZXJlbmNlIGFuZCBhIFtSb290XSBjb250ZW50KTtcbiAgIC0gb25seSBbdW5pb25dIGFuZCBbbWVyZ2VdIGFsbG9jYXRlIGEgbmV3IGVkZ2UgKGEgW0xpbmtdIGNvbnRlbnQpLlxuICAgW2ZpbmRdLCBbZ2V0XSwgW3NldF0sIFtlcV0gYWxsb2NhdGUgbm8gbWVtb3J5LiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mIHsgbXV0YWJsZSBwYXJlbnQgOiAnYSBlbGVtIH1cbnwgUm9vdCBvZiB7IG11dGFibGUgcmFuayA6IHJhbms7IG11dGFibGUgdmFsdWUgOiAnYSB9XG5cbigqIFRoZSB0eXBlIFsnYSBlbGVtXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgZWxlbSA9XG4gICdhIGNvbnRlbnQgcmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlICh2IDogJ2EpIDogJ2EgZWxlbSA9XG4gIHJlZiAoUm9vdCB7IHJhbmsgPSAwOyB2YWx1ZSA9IHYgfSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBzbyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAoeCA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHhcbiAgfCBMaW5rICh7IHBhcmVudCA9IHkgfSBhcyBsaW5rKSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHkgaW5cbiAgICAgIGlmIHogIT0geSB0aGVuXG4gICAgICAgIGxpbmsucGFyZW50IDwtIHo7XG4gICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAoeCA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZVxuICAgc2FtZSBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYVxuICAgcGh5c2ljYWwgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF1cbiAgIGFuZCBbeV0gYXJlIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiBib29sID1cbiAgeCA9PSB5IHx8IGZpbmQgeCA9PSBmaW5kIHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldCB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0ICh4IDogJ2EgZWxlbSkgOiAnYSA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHsgdmFsdWUgPSB2OyBfIH0gLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0IHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXQgKHggOiAnYSBlbGVtKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCByb290IC0+XG4gICAgICByb290LnZhbHVlIDwtIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24geCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgXyB9IGFzIHJvb3R4KSwgUm9vdCB7IHJhbmsgPSByeTsgXyB9IC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyB2YWx1ZSA9IHZ4IH0gYXMgcm9vdHgpLFxuICAgICAgUm9vdCAoeyByYW5rID0gcnk7IHZhbHVlID0gdnkgfSBhcyByb290eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gcm9vdHkudmFsdWUgPC0gdjtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIElOVE1BUCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIGVtcHR5OiAnYSB0XG4gIHZhbCBmaW5kOiBpbnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgYWRkOiBpbnQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKEludE1hcCA6IElOVE1BUCkgPSBzdHJ1Y3RcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhIHBhaXIgb2YgYW4gaW50ZWdlciBhZGRyZXNzIGFuZCBhIG1hcCBvZlxuICAgaW50ZWdlciBhZGRyZXNzZXMgdG8gdmFsdWVzLiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlXG4gICBkb21haW4gb2YgdGhlIG1hcCBbY29udGVudF0gaXMgdGhlIHNlbWktb3BlbiBpbnRlcnZhbCBvZiB6ZXJvXG4gICAoaW5jbHVkZWQpIHVwIHRvIFtsaW1pdF0gKGV4Y2x1ZGVkKS4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgY29udGVudCBvZiB0aGUgc3RvcmUuICopXG4gIG11dGFibGUgY29udGVudDogJ2EgSW50TWFwLnRcbn1cblxubGV0IG5ld19zdG9yZSAoKSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gSW50TWFwLmVtcHR5XG59XG5cbigqIEJlY2F1c2UgYSBwZXJzaXN0ZW50IG1hcCBpcyB1c2VkLCBjb3B5aW5nIGEgc3RvcmUgYW1vdW50cyB0byBjb3B5aW5nXG4gICB0aGUgbXV0YWJsZSByZWNvcmQgYXQgdGhlIHJvb3QuICopXG5cbmxldCBjb3B5IHMgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGp1c3QgYW4gaW50ZWdlciBhZGRyZXNzLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxubGV0IG1ha2UgcyB2ID1cbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnQ7XG4gIHhcblxuKCogW2NoZWNrIHMgeF0gY2hlY2tzIHRoYXQgdGhlIGFkZHJlc3MgW3hdIGlzIGluIHJhbmdlIGZvciB0aGUgc3RvcmUgW3NdLiBJZlxuICAgdGhpcyBkeW5hbWljIGNoZWNrIGZhaWxzLCB0aGVuIHRoZSB1c2VyIGlzIGNvbmZ1c2VkIGFuZCBoYXMgcGFzc2VkIHVzIGFuXG4gICBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuIChJZiB0aGUgY2hlY2sgc3VjY2VlZHMsXG4gICB0aGUgdXNlciBtYXkgYmUgY29uZnVzZWQgdG9vISBidXQgd2UgY2Fubm90IGRldGVjdCBpdC4pICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgZ2V0IHMgeCA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBJbnRNYXAuZmluZCB4IHMuY29udGVudFxuXG5sZXQgc2V0IHMgeCB2ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnRcblxubGV0IGVxIHMgKHggOiBpbnQpICh5IDogaW50KSA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG5cbmVuZFxuXG4oKiBJbmNsdWRlIHRoZSBtb3N0IGNvbW1vbiBpbnN0YW5jZSBvZiB0aGUgYWJvdmUgZnVuY3Rvci4gKilcblxuaW5jbHVkZSBNYWtlKE1hcC5NYWtlKHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGNvbXBhcmUgPSAoLSkgKCogb2sgc2luY2UgdGhlIGFyZ3VtZW50cyBhcmUgbm9ubmVnYXRpdmUgaW50ZWdlcnMgKilcbmVuZCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogV2hlbiBPQ2FtbCdzIGJ1aWx0LWluIHN0b3JlIGlzIHVzZWQsIG5vIGV4cGxpY2l0IHN0b3JlIGlzIG5lZWRlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHVuaXRcblxubGV0IG5ld19zdG9yZSAoKSA9XG4gICgpXG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxuKCogQSByZWZlcmVuY2UgaXMgYSBwcmltaXRpdmUgcmVmZXJlbmNlLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICAnYSByZWZcblxubGV0IG1ha2UgKCkgdiA9XG4gIHJlZiB2XG5cbmxldCBnZXQgKCkgeCA9XG4gICF4XG5cbmxldCBzZXQgKCkgeCB2ID1cbiAgeCA6PSB2XG5cbmxldCBlcSAoKSB4IHkgPVxuICB4ID09IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHJlZmVyZW5jZSBjZWxsIHJlY29yZHMgYm90aCBpdHMgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlIGFuZFxuICAgaXRzIGxhc3QgY29tbWl0dGVkIHZhbHVlLiBBIGNlbGwgaXMgY29uc2lkZXJlZCBzdGFibGUgd2hlbiB0aGVzZSB0d28gdmFsdWVzXG4gICBhcmUgKHBoeXNpY2FsbHkpIGVxdWFsLCBhbmQgdW5zdGFibGUgb3RoZXJ3aXNlLiAqKVxuXG4oKiBPbmUgY291bGQgcGVyaGFwcyBlbnJpY2ggZWFjaCBjZWxsIHdpdGggYSBwb2ludGVyIHRvIGl0cyBzdG9yZSwgc28gYXMgdG9cbiAgIGVuc3VyZSBhdCBydW50aW1lIHRoYXQgdGhlIHVzZXIgaXMgbm90IGNvbmZ1c2VkLiAqKVxuXG50eXBlICdhIHJyZWYgPSB7XG4gICgqIFRoZSBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUuICopXG4gIG11dGFibGUgY3VycmVudDogJ2E7XG4gICgqIFRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjb21taXR0ZWQ6ICdhXG59XG5cbigqIEEgdHJhbnNhY3Rpb24gY29udGFpbnMgYSBzdGFjayBvZiBhbGwgdW5zdGFibGUgY2VsbHMgKGFuZCBwb3NzaWJseSBzb21lXG4gICBzdGFibGUgY2VsbHMgdG9vLCBhbHRob3VnaCB0aGF0IGlzIHVubGlrZWx5KS4gKilcblxudHlwZSAnYSB0cmFuc2FjdGlvbiA9XG4gICdhIHJyZWYgU3RhY2sudFxuXG4oKiBBIHN0b3JlIGNvbnRhaW5zIGFuIG9wdGlvbmFsIHRyYW5zYWN0aW9uLiBUaGlzIGluZGljYXRlcyB3aGV0aGVyIGFcbiAgIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nLiBUcmFuc2FjdGlvbnMgY2Fubm90IGJlIG5lc3RlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHsgbXV0YWJsZSB0cmFuc2FjdGlvbjogJ2EgdHJhbnNhY3Rpb24gb3B0aW9uIH1cblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID1cbiAgeyB0cmFuc2FjdGlvbiA9IE5vbmUgfVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBtYWtlIChfcyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICB7IGN1cnJlbnQgPSB2OyBjb21taXR0ZWQgPSB2IH1cblxubGV0IGdldCAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgeC5jdXJyZW50XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICAoKiBJZiB0aGUgbmV3IHZhbHVlIGhhcHBlbnMgdG8gYmUgdGhlIGN1cnJlbnQgdmFsdWUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uICopXG4gIGxldCBjdXJyZW50ID0geC5jdXJyZW50IGluXG4gIGlmIHYgPT0gY3VycmVudCB0aGVuXG4gICAgKClcbiAgZWxzZSBiZWdpbiBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKiBPdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24sIHR3byBub3JtYWwgd3JpdGUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkLlxuICAgICAgICAgVGhlIGNlbGwgcmVtYWlucyBzdGFibGUuIE5vdGhpbmcgaXMgbG9nZ2VkLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHY7XG4gICAgICB4LmNvbW1pdHRlZCA8LSB2XG4gIHwgU29tZSBzdGFjayAtPlxuICAgICAgKCogV2UgYXJlIHdpdGhpbiBhIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgKCogSWYgdGhpcyBjZWxsIHdhcyBzdGFibGUgYW5kIG5vdyBiZWNvbWVzIHVuc3RhYmxlLCB0aGVuIGl0IG11c3QgYmVcbiAgICAgICAgIGluc2VydGVkIGludG8gdGhlIHNldCBvZiB1bnN0YWJsZSBjZWxscywgd2hpY2ggaXMgcmVjb3JkZWQgYXMgcGFydFxuICAgICAgICAgb2YgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgaWYgY3VycmVudCA9PSB4LmNvbW1pdHRlZCB0aGVuXG4gICAgICAgIFN0YWNrLnB1c2ggeCBzdGFjaztcbiAgICAgICgqIFRoZSBjZWxsIG11c3QgdGhlbiBiZSB1cGRhdGVkLiBJZiBbdl0gaGFwcGVucyB0byBiZSBlcXVhbCB0b1xuICAgICAgICAgW2NvbW1pdHRlZF0sIHRoaXMgY291bGQgbWFrZSB0aGUgY2VsbCBzdGFibGUgYWdhaW4uIFdlIGRvIG5vdFxuICAgICAgICAgY2hlY2sgZm9yIHRoaXMgdW5saWtlbHkgc2l0dWF0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNldCBvZlxuICAgICAgICAgdW5zdGFibGUgY2VsbHMgY291bGQgYWN0dWFsbHkgY29udGFpbiBzdGFibGUgY2VsbHMgdG9vLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHZcbiAgICBlbmRcblxubGV0IGVxIChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgeCA9PSB5XG5cbmV4Y2VwdGlvbiBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcblxubGV0IGNvbW1pdCB4ID1cbiAgeC5jb21taXR0ZWQgPC0geC5jdXJyZW50XG5cbmxldCByb2xsYmFjayB4ID1cbiAgeC5jdXJyZW50IDwtIHguY29tbWl0dGVkXG5cbmxldCB0ZW50YXRpdmVseSAocyA6ICdhIHN0b3JlKSAoZiA6IHVuaXQgLT4gJ2IpIDogJ2IgPVxuICBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAgIHJhaXNlIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBzdGFjayA9IFN0YWNrLmNyZWF0ZSgpIGluXG4gICAgICBzLnRyYW5zYWN0aW9uIDwtIFNvbWUgc3RhY2s7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGIgPSBmKCkgaW5cbiAgICAgICAgKCogQ29tbWl0IGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgY29tbWl0IHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBiXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgbGV0IGIgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSgpIGluXG4gICAgICAgICgqIFJvbGwgYmFjayBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIHJvbGxiYWNrIHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGFuIGV4dGVuc2libGUgYXJyYXksIHRoYXQgaXMsIGEgcGFpciBvZiBhblxuICAgaW50ZWdlciBhZGRyZXNzIGFuZCBhbiBhcnJheS4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBsZW5ndGggb2ZcbiAgIHRoZSBhcnJheSBpcyBhdCBsZWFzdCBbbGltaXRdLiBUaGUgYXJlYSBvZiB0aGUgYXJyYXkgYXQgaW5kZXggW2xpbWl0XSBhbmRcbiAgIGJleW9uZCBpcyBjb25zaWRlcmVkIHVuaW5pdGlhbGl6ZWQuICopXG5cbigqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGlzIGFyZWEgaXMgZmlsbGVkIHdpdGggYXJiaXRyYXJ5IHZhbHVlKHMpXG4gICBwcm92aWRlZCBieSB0aGUgdXNlciBpbiBjYWxscyB0byBbbWFrZV0gb3IgW3NldF0uIFRoaXMgaXMgbm90IGlkZWFsLCBhcyBpdFxuICAgY2FuIGNhdXNlIGEgbWVtb3J5IGxlYWsuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGFycmF5OyBhbHNvLCB0aGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBhcnJheSwgd2hvc2UgbGVuZ3RoIGlzIGF0IGxlYXN0IFtsaW1pdF0uICopXG4gIG11dGFibGUgY29udGVudDogJ2EgYXJyYXlcbn1cblxuKCogVGhlIGFycmF5IGlzIGNyZWF0ZWQgd2l0aCBhIHNpemUgYW5kIGxlbmd0aCBvZiB6ZXJvLiBXZSBoYXZlIG5vIG90aGVyXG4gICBjaG9pY2UsIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGF0IGhhbmQuICopXG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gW3x8XVxufVxuXG4oKiBDb3B5aW5nIGlzIHN1cHBvcnRlZCwgYnV0IGlzIG5vdCBjaGVhcC4gVXNlIGF0IHlvdXIgb3duIHJpc2suICopXG5cbmxldCBjb3B5IChzIDogJ2Egc3RvcmUpIDogJ2Egc3RvcmUgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IEFycmF5LmNvcHkgcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG4oKiBUaGUgYXJyYXkganVtcHMgZnJvbSBsZW5ndGggemVybyB0byBsZW5ndGggW2RlZmF1bHRfaW5pdGlhbF9sZW5ndGhdIGFzIHNvb25cbiAgIGFzIGEgY2FsbCB0byBbbWFrZV0gaXMgbWFkZS4gKilcblxubGV0IGRlZmF1bHRfaW5pdGlhbF9sZW5ndGggPVxuICAyNTZcblxuKCogW2VubGFyZ2UgcyB2XSBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgKGlmIG5lY2Vzc2FyeSkgc28gYXMgdG9cbiAgIGVuc3VyZSB0aGF0IFtzLmxpbWl0XSBiZWNvbWVzIGEgdmFsaWQgaW5kZXguIFRoZSBhcmd1bWVudCBbdl0gaXMgdXNlZCBhcyBhXG4gICBkZWZhdWx0IHZhbHVlIHRvIGZpbGwgdGhlIHVuaW5pdGlhbGl6ZWQgYXJlYS4gKilcblxubGV0IGVubGFyZ2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IGNvbnRlbnQgPSBzLmNvbnRlbnQgaW5cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb250ZW50IGluXG4gIGlmIHMubGltaXQgPSBsZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBsZW5ndGgnID1cbiAgICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgICBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIDIgKiBsZW5ndGhcbiAgICBpblxuICAgIGFzc2VydCAocy5saW1pdCA8IGxlbmd0aCcpO1xuICAgIGxldCBjb250ZW50JyA9IEFycmF5Lm1ha2UgbGVuZ3RoJyB2IGluXG4gICAgQXJyYXkuYmxpdCBjb250ZW50IDAgY29udGVudCcgMCBsZW5ndGg7XG4gICAgcy5jb250ZW50IDwtIGNvbnRlbnQnXG4gIGVuZFxuXG4oKiBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBbQXJyYXkudW5zYWZlX3NldF0gYW5kIFtBcnJheS51bnNhZmVfZ2V0XSB3aXRob3V0XG4gICBhbnkgcHJlY2F1dGlvbnMsIHNpbmNlIHRoZSBPQ2FtbCB0eXBlLWNoZWNrZXIgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuICAgaW5kaWNlcyBhcmUgaW4gcmFuZ2UuIEEgY29uZnVzZWQgdXNlciBjb3VsZCBwYXNzIHJlZmVyZW5jZXMgaW50byBzb21lXG4gICBvdGhlciBzdG9yZS4gV2UgY2hvb3NlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCB0aGUgaW5kZXggaXMgd2l0aGluIHRoZVxuICAgbG9naWNhbCBib3VuZHMgb2YgdGhlIGFycmF5IC0tIHRoaXMgaXMgYSBtb3JlIHByZWNpc2UgY2hlY2suICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogdW5pdCA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIGVubGFyZ2UgcyB2O1xuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2O1xuICB4XG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfZ2V0IHMuY29udGVudCB4XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdlxuXG5sZXQgZXEgIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcbiIsIi8qIElEIEZBUVxuXG4gICBXSEFUUyBBTiBJRD9cblxuICAgSURzIGFyZSByYW5kb20tZ2VuZXJhdGVkIDEyOGJpdCBVVUlEczsgdXNlIElkLm1rKCkgdG8gZ2VuZXJhdGUgb25lLlxuXG4gICBXSEFUIEFSRSBJRFMgVVNFRCBGT1I/XG5cbiAgIFVuaXF1ZSBpZHMgYXJlIGFzc2lnbmVkIHRvIHRpbGVzIChhbmQgaGVuY2UsIGluZGlyZWN0bHksIHRvIHRlcm1zKVxuICAgYXQgdGhlIHRpbWUgb2YgY3JlYXRpb24gb2Ygc3VyZmFjZSBzeW50YXguIElkcyBhcmUgdXNlZCBhcyBrZXlzIGluXG4gICB2YXJpb3VzIG1hcHMgKG1vc3RseSBub3RhYmx5IHRoZSBNZWFzdXJlZCBtYXAsIHdoaWNoIHRyYWNrcyBzY3JlZW5cbiAgIGNvb3JkaW5hdGVzIGZvciB0aGUgdmlldywgYW5kIHRoZSBJbmZvIG1hcCB3aGljaCBjb2xsZWN0cyBzdGF0aWNcbiAgIGRhdGEgc3VjaCBhcyB0eXBlIGluZm9ybWF0aW9uKS4gSWRzIGFyZSB1c2VkIGZvciBtYW55IHppcHBlciBhY3Rpb25zLFxuICAgaW5jbHVkaW5nIGp1bXAgdG8gZGVmaW5pdGlvbiwgYW5kIGFyZSBhbHNvIHVzZWQgdG8gY29vcmRpbmF0ZSB0ZXJtXG4gICBkZWNvcmF0aW9ucy4gQWNjaWRlbnRhbGx5IGNyZWF0aW5nIG5vbi11bmlxdWUgSURzIGNhbiBiZSB0aGUgY2F1c2VcbiAgIG9mIG1hbnkgb2RkIGlzc3VlcyBmb3IgemlwcGVyIGFjdGlvbnMgYW5kIGRpc3BsYXkuXG5cbiAgIEJVVCBXSFkgSVMgVEhFUkUgQSBfTElTVF8gT0YgSURTP1xuXG4gICBUZWNobmljYWxseSwgZWFjaCB0aWxlIGhhcyBhIGxpc3Qgb2YgaWRzLCB0byBzdXBwb3J0IG4tYXJ5IGZvcm1zIGxpa2VcbiAgIHR1cGxlczsgdGhlcmUgYXJlIHJlcF9pZCBmdW5jdGlvbnMgaW4gVGVybSB0byBjYW5vbmljYWxseSBleHRyYWN0XG4gICBzaW5nbGUgcmVwcmVzZW50YXRpdmUgaWRzIGZyb20gdGhpcyBsaXN0IHdoZXJlIGFwcHJvcHJpYXRlLlxuXG4gICBDQU4gSSBVU0UgSURTIElOIERZTkFNSUNTP1xuXG4gICBDdXJyZW50bHksIERIRXhwcyAoYXMgcHJvZHVjZWQgYnkgdGhlIGVsYWJvcmF0b3IgYW5kIHByb2R1Y2VkL2NvbnN1bWVkXG4gICBieSB0aGUgZXZhbHVhdG9yKSBkbyBub3QgaW4gZ2VuZXJhbCBwZXJzaXN0IGlkczsgdGhlIGV4Y2VwdGlvbnMgYXJlXG4gICB0aGluZ3MgbGlrZSBob2xlcyBhbmQgdGVzdHMgd2hpY2ggaGF2ZSBhZGRpdGlvbmFsIG1ldGFkYXRhIHdoaWNoIGlzXG4gICBhY2N1bXVsYXRlZCBkdXRpbmcgZXZhbHVhdGlvbi4gVGhlcmUgYXJlIG1hbnkgdXNlIGNhc2VzIGZvciB0cmFja2luZ1xuICAgaWRzIG1vcmUgZ2VuZXJhbGx5IGR1cmluZyBldmFsdWF0aW9uLCBidXQgZG9pbmcgc28gaW4gYSBwcmluY2lwbGVkXG4gICB3YXkgaXMgYSBsYXJnZS1zY2FsZSBjaGFuZ2Ugd2l0aCBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxubGV0IHNleHBfb2ZfdDogVXVpZG0udCA9PiBTZXhwbGliLlNleHAudCA9XG4gIHQgPT4gU2V4cGxpYi5TZXhwLkF0b20oVXVpZG0udG9fc3RyaW5nKHQpKTtcblxubGV0IHRfb2Zfc2V4cDogU2V4cGxpYi5TZXhwLnQgPT4gVXVpZG0udCA9XG4gIGZ1blxuICB8IFNleHBsaWIuU2V4cC5BdG9tKHMpID0+XG4gICAgVXVpZG0ub2Zfc3RyaW5nKHMpXG4gICAgfD4gVXRpbC5PcHRVdGlsLmdldChfID0+IGZhaWx3aXRoKFwiVXVpZG0udF9vZl9zZXhwOiBub3QgdmFsaWQgVVVJRCAoMSlcIikpXG4gIHwgXyA9PiBmYWlsd2l0aChcIlV1aWRtLnRfb2Zfc2V4cDogbm90IHZhbGlkIFVVSUQgKDIpXCIpO1xuXG5sZXQgeW9qc29uX29mX3Q6IFV1aWRtLnQgPT4gWW9qc29uLlNhZmUudCA9IHQgPT4gYFN0cmluZyhVdWlkbS50b19zdHJpbmcodCkpO1xuXG5sZXQgdF9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gVXVpZG0udCA9XG4gIGZ1blxuICB8IGBTdHJpbmcocykgPT5cbiAgICBVdWlkbS5vZl9zdHJpbmcocylcbiAgICB8PiBVdGlsLk9wdFV0aWwuZ2V0KF8gPT5cbiAgICAgICAgIGZhaWx3aXRoKFwiVXVpZG0udF9vZl95b2pzb246IG5vdCB2YWxpZCBVVUlEICgxKVwiKVxuICAgICAgIClcbiAgfCBfID0+IGZhaWx3aXRoKFwiVXVpZG0udF9vZl95b2pzb246IG5vdCB2YWxpZCBVVUlEICgyKVwiKTtcblxudHlwZSB0ID0gVXVpZG0udDtcblxubGV0IG1rOiB1bml0ID0+IHQgPSBVdWlkbS52NF9nZW4oUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpO1xuXG5sZXQgY29tcGFyZTogKHQsIHQpID0+IGludCA9IFV1aWRtLmNvbXBhcmU7XG5sZXQgdG9fc3RyaW5nOiAofnVwcGVyOiBib29sPT8sIHQpID0+IHN0cmluZyA9IFV1aWRtLnRvX3N0cmluZztcbmxldCBvZl9zdHJpbmc6ICh+cG9zOiBpbnQ9Pywgc3RyaW5nKSA9PiBvcHRpb24odCkgPSBVdWlkbS5vZl9zdHJpbmc7XG5sZXQgcHA6IChGb3JtYXQuZm9ybWF0dGVyLCB0KSA9PiB1bml0ID1cbiAgKGYsIGlkKSA9PlxuICAgIEZvcm1hdC5mcHJpbnRmKFxuICAgICAgZixcbiAgICAgIFwiT3B0aW9uLmdldChIYXozbGNvcmUuSWQub2Zfc3RyaW5nKFxcXCIlc1xcXCIpKVwiLFxuICAgICAgdG9fc3RyaW5nKGlkKSxcbiAgICApO1xubGV0IHNob3cgPSBpZCA9PlxuICBGb3JtYXQuc3ByaW50ZihcbiAgICBcIk9wdGlvbi5nZXQoSGF6M2xjb3JlLklkLm9mX3N0cmluZyhcXFwiJXNcXFwiKSlcIixcbiAgICB0b19zdHJpbmcoaWQpLFxuICApO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBiaW5kaW5nKCd2KSA9ICh0LCAndik7XG5cbm1vZHVsZSBNYXAgPSB7XG4gIGluY2x1ZGUgTWFwLk1ha2UoVXVpZG0pO1xuXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl92LCBtYXApID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IFNleHBsaWIuU3RkLnNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9ICh2X29mX3NleHAsIHNleHApID0+XG4gICAgc2V4cFxuICAgIHw+IFNleHBsaWIuU3RkLmxpc3Rfb2Zfc2V4cChiaW5kaW5nX29mX3NleHAodl9vZl9zZXhwKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IG9mX3NlcTtcblxuICBsZXQgeW9qc29uX29mX3QgPSAoeW9qc29uX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4geW9qc29uX29mX2xpc3QoeW9qc29uX29mX2JpbmRpbmcoeW9qc29uX29mX3YpKTtcblxuICBsZXQgdF9vZl95b2pzb24gPSAodl9vZl95b2pzb24sIGpzb24pID0+XG4gICAganNvblxuICAgIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IG9mX3NlcTtcblxuICBsZXQgcHAgPSAocHBfdiwgZm10LCBtYXApID0+XG4gICAgYmluZGluZ3MobWFwKVxuICAgIHw+IExpc3QuaXRlcigoKGssIHYpKSA9PlxuICAgICAgICAgRm9ybWF0LmZwcmludGYoZm10LCBcIiVhIC0+ICVhXFxuXCIsIHBwLCBrLCBwcF92LCB2KVxuICAgICAgICk7XG59O1xubGV0IGludmFsaWQ6IHQgPVxuICBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiIHw+IFV1aWRtLm9mX3N0cmluZyB8PiBPcHRpb24uZ2V0O1xuXG4vKiBTcGVjaWFsIGlkIHVzZWQgdG8gZGVub3RlIGEgdHJpdmlhbCAoZW1wdHkpIGZ1bmN0aW9uIGFwcGxpY2F0aW9uICovXG5sZXQgbnVsbGFyeV9hcF9mbGFnOiB0ID1cbiAgXCJERUFEQkVFRi0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIiB8PiBVdWlkbS5vZl9zdHJpbmcgfD4gT3B0aW9uLmdldDtcblxubGV0IGlzX251bGxhcnlfYXBfZmxhZyA9IChpZHM6IGxpc3QodCkpID0+XG4gIHN3aXRjaCAoaWRzKSB7XG4gIHwgW2lkXSB3aGVuIGlkID09IG51bGxhcnlfYXBfZmxhZyA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5tb2R1bGUgVWY6IHtcbiAgdHlwZSBzdG9yZSgnYSk7XG4gIGxldCBpbml0OiB1bml0ID0+IHN0b3JlKF8pO1xuICBsZXQgYWRkOiAodCwgJ2EsIHN0b3JlKCdhKSkgPT4gdW5pdDtcbiAgbGV0IGdldDogKHQsIHN0b3JlKCdhKSkgPT4gJ2E7XG4gIGxldCBnZXRfb3B0OiAodCwgc3RvcmUoJ2EpKSA9PiBvcHRpb24oJ2EpO1xuICBsZXQgc2V0OiAodCwgJ2EsIHN0b3JlKCdhKSkgPT4gdW5pdDtcbiAgbGV0IG1lcmdlOiAoKCdhLCAnYSkgPT4gJ2EsIHQsIHQsIHN0b3JlKCdhKSkgPT4gdW5pdDtcbn0gPSB7XG4gIG1vZHVsZSBNID0gVW5pb25GaW5kLk1ha2UoVW5pb25GaW5kLlN0b3JlVmVjdG9yKTtcbiAgdHlwZSBzdG9yZSgnYSkgPSB7XG4gICAgcmVmczogcmVmKE1hcC50KE0ucnJlZignYSkpKSxcbiAgICBzdG9yZTogTS5zdG9yZSgnYSksXG4gIH07XG4gIGxldCBpbml0ID0gKCkgPT4ge3JlZnM6IHJlZihNYXAuZW1wdHkpLCBzdG9yZTogTS5uZXdfc3RvcmUoKX07XG4gIGxldCBycmVmID0gKGlkLCBzKSA9PiBNYXAuZmluZChpZCwgcy5yZWZzXik7XG4gIGxldCBhZGQgPSAoaWQsIGEsIHMpID0+XG4gICAgc3dpdGNoIChNYXAuZmluZF9vcHQoaWQsIHMucmVmc14pKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgciA9IE0ubWFrZShzLnN0b3JlLCBhKTtcbiAgICAgIHMucmVmcyA6PSBNYXAuYWRkKGlkLCByLCBzLnJlZnNeKTtcbiAgICB8IFNvbWUoXykgPT4gKClcbiAgICB9O1xuICBsZXQgZ2V0ID0gKGlkLCBzKSA9PiBNLmdldChzLnN0b3JlLCBNLmZpbmQocy5zdG9yZSwgcnJlZihpZCwgcykpKTtcbiAgbGV0IGdldF9vcHQgPSAoaWQsIHMpID0+XG4gICAgTWFwLmZpbmRfb3B0KGlkLCBzLnJlZnNeKSB8PiBPcHRpb24ubWFwKF8gPT4gZ2V0KGlkLCBzKSk7XG4gIGxldCBzZXQgPSAoaWQsIGEsIHMpID0+IE0uc2V0KHMuc3RvcmUsIE0uZmluZChzLnN0b3JlLCBycmVmKGlkLCBzKSksIGEpO1xuXG4gIGxldCBtZXJnZSA9IChmLCBpZCwgaWQnLCBzKSA9PlxuICAgIGlnbm9yZShNLm1lcmdlKHMuc3RvcmUsIGYsIHJyZWYoaWQsIHMpLCBycmVmKGlkJywgcykpKTtcbn07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX3VuX2Jvb2wgPVxuICB8IE5vdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF91bl9tZXRhID1cbiAgfCBVbnF1b3RlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX3VuX2ludCA9XG4gIHwgTWludXM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2Jvb2wgPVxuICB8IEFuZFxuICB8IE9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX2Jpbl9pbnQgPVxuICB8IFBsdXNcbiAgfCBNaW51c1xuICB8IFRpbWVzXG4gIHwgUG93ZXJcbiAgfCBEaXZpZGVcbiAgfCBMZXNzVGhhblxuICB8IExlc3NUaGFuT3JFcXVhbFxuICB8IEdyZWF0ZXJUaGFuXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsXG4gIHwgRXF1YWxzXG4gIHwgTm90RXF1YWxzO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX2Jpbl9mbG9hdCA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuXG4gIHwgTGVzc1RoYW5PckVxdWFsXG4gIHwgR3JlYXRlclRoYW5cbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWxcbiAgfCBFcXVhbHNcbiAgfCBOb3RFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX3N0cmluZyA9XG4gIHwgQ29uY2F0XG4gIHwgRXF1YWxzO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX3VuID1cbiAgfCBNZXRhKG9wX3VuX21ldGEpXG4gIHwgSW50KG9wX3VuX2ludClcbiAgfCBCb29sKG9wX3VuX2Jvb2wpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX2JpbiA9XG4gIHwgSW50KG9wX2Jpbl9pbnQpXG4gIHwgRmxvYXQob3BfYmluX2Zsb2F0KVxuICB8IEJvb2wob3BfYmluX2Jvb2wpXG4gIHwgU3RyaW5nKG9wX2Jpbl9zdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFwX2RpcmVjdGlvbiA9XG4gIHwgRm9yd2FyZFxuICB8IFJldmVyc2U7XG5cbi8vIEFyZSB0aGVzZSBzaG93IGZ1bmN0aW9uIG5lY2Vzc2FyeT9cbmxldCBzaG93X29wX3VuX21ldGE6IG9wX3VuX21ldGEgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgVW5xdW90ZSA9PiBcIlVuLXF1b3RhdGlvblwiO1xuXG5sZXQgc2hvd19vcF91bl9ib29sOiBvcF91bl9ib29sID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IE5vdCA9PiBcIkJvb2xlYW4gTmVnYXRpb25cIjtcblxubGV0IHNob3dfb3BfdW5faW50OiBvcF91bl9pbnQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTWludXMgPT4gXCJJbnRlZ2VyIE5lZ2F0aW9uXCI7XG5cbmxldCBzaG93X3Vub3A6IG9wX3VuID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IE1ldGEob3ApID0+IHNob3dfb3BfdW5fbWV0YShvcClcbiAgfCBCb29sKG9wKSA9PiBzaG93X29wX3VuX2Jvb2wob3ApXG4gIHwgSW50KG9wKSA9PiBzaG93X29wX3VuX2ludChvcCk7XG5cbmxldCBzaG93X29wX2Jpbl9ib29sOiBvcF9iaW5fYm9vbCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBBbmQgPT4gXCJCb29sZWFuIENvbmp1bmN0aW9uXCJcbiAgfCBPciA9PiBcIkJvb2xlYW4gRGlzanVuY3Rpb25cIjtcblxubGV0IHNob3dfb3BfYmluX2ludDogb3BfYmluX2ludCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBQbHVzID0+IFwiSW50ZWdlciBBZGRpdGlvblwiXG4gIHwgTWludXMgPT4gXCJJbnRlZ2VyIFN1YnRyYWN0aW9uXCJcbiAgfCBUaW1lcyA9PiBcIkludGVnZXIgTXVsdGlwbGljYXRpb25cIlxuICB8IFBvd2VyID0+IFwiSW50ZWdlciBFeHBvbmVudGlhdGlvblwiXG4gIHwgRGl2aWRlID0+IFwiSW50ZWdlciBEaXZpc2lvblwiXG4gIHwgTGVzc1RoYW4gPT4gXCJJbnRlZ2VyIExlc3MgVGhhblwiXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiSW50ZWdlciBMZXNzIFRoYW4gb3IgRXF1YWxcIlxuICB8IEdyZWF0ZXJUaGFuID0+IFwiSW50ZWdlciBHcmVhdGVyIFRoYW5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIkludGVnZXIgR3JlYXRlciBUaGFuIG9yIEVxdWFsXCJcbiAgfCBFcXVhbHMgPT4gXCJJbnRlZ2VyIEVxdWFsaXR5XCJcbiAgfCBOb3RFcXVhbHMgPT4gXCJJbnRlZ2VyIEluZXF1YWxpdHlcIjtcblxubGV0IHNob3dfb3BfYmluX2Zsb2F0OiBvcF9iaW5fZmxvYXQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgUGx1cyA9PiBcIkZsb2F0IEFkZGl0aW9uXCJcbiAgfCBNaW51cyA9PiBcIkZsb2F0IFN1YnRyYWN0aW9uXCJcbiAgfCBUaW1lcyA9PiBcIkZsb2F0IE11bHRpcGxpY2F0aW9uXCJcbiAgfCBQb3dlciA9PiBcIkZsb2F0IEV4cG9uZW50aWF0aW9uXCJcbiAgfCBEaXZpZGUgPT4gXCJGbG9hdCBEaXZpc2lvblwiXG4gIHwgTGVzc1RoYW4gPT4gXCJGbG9hdCBMZXNzIFRoYW5cIlxuICB8IExlc3NUaGFuT3JFcXVhbCA9PiBcIkZsb2F0IExlc3MgVGhhbiBvciBFcXVhbFwiXG4gIHwgR3JlYXRlclRoYW4gPT4gXCJGbG9hdCBHcmVhdGVyIFRoYW5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIkZsb2F0IEdyZWF0ZXIgVGhhbiBvciBFcXVhbFwiXG4gIHwgRXF1YWxzID0+IFwiRmxvYXQgRXF1YWxpdHlcIlxuICB8IE5vdEVxdWFscyA9PiBcIkZsb2F0IEluZXF1YWxpdHlcIjtcblxubGV0IHNob3dfb3BfYmluX3N0cmluZzogb3BfYmluX3N0cmluZyA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBDb25jYXQgPT4gXCJTdHJpbmcgQ29uY2F0ZW5hdGlvblwiXG4gIHwgRXF1YWxzID0+IFwiU3RyaW5nIEVxdWFsaXR5XCI7XG5cbmxldCBzaG93X2Jpbm9wOiBvcF9iaW4gPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgSW50KG9wKSA9PiBzaG93X29wX2Jpbl9pbnQob3ApXG4gIHwgRmxvYXQob3ApID0+IHNob3dfb3BfYmluX2Zsb2F0KG9wKVxuICB8IEJvb2wob3ApID0+IHNob3dfb3BfYmluX2Jvb2wob3ApXG4gIHwgU3RyaW5nKG9wKSA9PiBzaG93X29wX2Jpbl9zdHJpbmcob3ApO1xuXG5sZXQgYm9vbF9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9ib29sKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IEFuZCA9PiBcIiYmXCJcbiAgfCBPciA9PiBcInx8XCJcbiAgfTtcbn07XG5cbmxldCBpbnRfb3BfdG9fc3RyaW5nID0gKG9wOiBvcF9iaW5faW50KTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IFBsdXMgPT4gXCIrXCJcbiAgfCBNaW51cyA9PiBcIi1cIlxuICB8IFRpbWVzID0+IFwiKlwiXG4gIHwgUG93ZXIgPT4gXCIqKlwiXG4gIHwgRGl2aWRlID0+IFwiL1wiXG4gIHwgTGVzc1RoYW4gPT4gXCI8XCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCI8PVwiXG4gIHwgR3JlYXRlclRoYW4gPT4gXCI+XCJcbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gXCI+PVwiXG4gIHwgRXF1YWxzID0+IFwiPT1cIlxuICB8IE5vdEVxdWFscyA9PiBcIiE9XCJcbiAgfTtcbn07XG5cbmxldCBmbG9hdF9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9mbG9hdCk6IHN0cmluZyA9PiB7XG4gIHN3aXRjaCAob3ApIHtcbiAgfCBQbHVzID0+IFwiKy5cIlxuICB8IE1pbnVzID0+IFwiLS5cIlxuICB8IFRpbWVzID0+IFwiKi5cIlxuICB8IFBvd2VyID0+IFwiKiouXCJcbiAgfCBEaXZpZGUgPT4gXCIvLlwiXG4gIHwgTGVzc1RoYW4gPT4gXCI8LlwiXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiPD0uXCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIj4uXCJcbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gXCI+PS5cIlxuICB8IEVxdWFscyA9PiBcIj09LlwiXG4gIHwgTm90RXF1YWxzID0+IFwiIT0uXCJcbiAgfTtcbn07XG5cbmxldCBzdHJpbmdfb3BfdG9fc3RyaW5nID0gKG9wOiBvcF9iaW5fc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IENvbmNhdCA9PiBcIisrXCJcbiAgfCBFcXVhbHMgPT4gXCIkPT1cIlxuICB9O1xufTtcblxubGV0IGJpbl9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbik6IHN0cmluZyA9PiB7XG4gIHN3aXRjaCAob3ApIHtcbiAgfCBJbnQob3ApID0+IGludF9vcF90b19zdHJpbmcob3ApXG4gIHwgRmxvYXQob3ApID0+IGZsb2F0X29wX3RvX3N0cmluZyhvcClcbiAgfCBCb29sKG9wKSA9PiBib29sX29wX3RvX3N0cmluZyhvcClcbiAgfCBTdHJpbmcob3ApID0+IHN0cmluZ19vcF90b19zdHJpbmcob3ApXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuLyoqXG4gKiBoaWdoZXIgcHJlY2VkZW5jZSBtZWFucyBsb3dlciBpbnQgcmVwcmVzZW50YXRpb25cbiAqXG4gKiBUaGVzZSBwcmVjZWRlbmNlcyBhcmUgaW50ZXJzcGVyc2VkIHdpdGggZXhhbXBsZXMgdG8gaGVscCB5b3VcbiAqIHdvcmsgb3V0IHRoZSBwcmVjZWRlbmNlLiBGb3IgZWFjaCBleGFtcGxlLCBpZiBhIGNvbnN0cnVjdFxuICogcmVxdWlyZXMgcGFyZW50aGVzZXMgd2hlbiBwbGFjZWQgaW4gdGhlICdfX19fXycgc3BhY2UsIHRoZW5cbiAqIHlvdXIgbmV3IGNvbnN0cnVjdCdzIHByZWNlZGVuY2UgaXMgYmVsb3cgdGhlIGNvbW1lbnQgd2l0aFxuICogdGhlIGV4YW1wbGUuIChpLmUuIGhpZ2hlciBpbnQpXG4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGludDtcblxubGV0IG1heDogdCA9IDA7XG5cbmxldCB1bnF1b3RlID0gMTtcbmxldCBjYXN0ID0gMjtcbmxldCBhcCA9IDM7XG4vLyBfX19fXyh4KVxuLy8gLSBfX19fX1xubGV0IG5lZyA9IDQ7XG4vLyBfX19fXyAqKiAyXG5sZXQgcG93ZXIgPSA1O1xuLy8gMiAqKiBfX19fX1xuLy8gNiAvIF9fX19fXG5sZXQgbXVsdCA9IDY7XG5sZXQgbm90XyA9IDY7XG4vLyBfX19fXyAvIDZcbi8vIDQgLSBfX19fX1xubGV0IHBsdXMgPSA3O1xuLy8gX19fX18gLSA0XG4vLyBfX19fXyA6OiBbXVxubGV0IGNvbnMgPSA4O1xuLy8gMSA6OiBfX19fX1xuLy8gWzEsMl0gQCBfX19fX1xubGV0IGNvbmNhdCA9IDk7XG4vLyBfX19fXyBAIFsxLDJdXG4vLyB4ID09IF9fX19fXG5sZXQgZXFzID0gMTA7XG4vLyBfX19fXyA9PSB4XG4vLyBfX19fXyAmJiB0cnVlXG5sZXQgYW5kXyA9IDExO1xuLy8gdHJ1ZSAmJiBfX19fX1xuLy8gX19fX18gfHwgZmFsc2VcbmxldCBvcl8gPSAxMjtcbi8vIGZhbHNlIHx8IF9fX19fXG5sZXQgYW5uID0gMTM7XG4vLyBfX19fXyA6IFRcbmxldCBpZl8gPSAxNDtcbmxldCBmdW5fID0gMTU7XG4vLyBmdW4geCAtPiBfX19fX1xubGV0IHByb2QgPSAxNjtcbi8vIGEgLCBfX19fXyAsIHhcbi8vIF9fX19fIDsgKClcbmxldCBzZW1pID0gMTc7XG4vLyAoKSA7IF9fX19fXG5sZXQgbGV0XyA9IDE4O1xubGV0IHJ1bGVfYXJyID0gMTk7XG5sZXQgcnVsZV9wcmUgPSAyMDtcbmxldCBydWxlX3NlcCA9IDIxO1xubGV0IGNhc2VfID0gMjI7XG5sZXQgbWluID0gMjQ7XG5cbmxldCBjb21wYXJlID0gKHAxOiB0LCBwMjogdCk6IGludCA9PlxuICAoLTEpICogSW50LmNvbXBhcmUoKHAxIDo+IGludCksIChwMiA6PiBpbnQpKTtcbi8vIGxldCBtaW4gPSAocDE6IHQsIHAyOiB0KTogdCA9PiBtYXgocDEsIHAyKTtcblxubGV0IGFzc29jaWF0aXZpdHlfbWFwOiBJbnRNYXAudChEaXJlY3Rpb24udCkgPVxuICBbXG4gICAgKG11bHQsIERpcmVjdGlvbi5MZWZ0KSxcbiAgICAocGx1cywgTGVmdCksXG4gICAgKHBvd2VyLCBSaWdodCksXG4gICAgKGNvbnMsIFJpZ2h0KSxcbiAgICAoY29uY2F0LCBSaWdodCksXG4gICAgKGFubiwgTGVmdCksXG4gICAgKGVxcywgTGVmdCksXG4gIF1cbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gSW50TWFwLm9mX3NlcTtcblxubGV0IGFzc29jaWF0aXZpdHkgPSAocDogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgSW50TWFwLmZpbmRfb3B0KHAsIGFzc29jaWF0aXZpdHlfbWFwKTtcblxubGV0IG9mX2Jpbl9vcDogT3BlcmF0b3JzLm9wX2JpbiA9PiB0ID1cbiAgZnVuXG4gIHwgSW50KG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IFBsdXMgPT4gcGx1c1xuICAgIHwgTWludXMgPT4gcGx1c1xuICAgIHwgVGltZXMgPT4gbXVsdFxuICAgIHwgUG93ZXIgPT4gcG93ZXJcbiAgICB8IERpdmlkZSA9PiBtdWx0XG4gICAgfCBMZXNzVGhhbiA9PiBlcXNcbiAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBlcXNcbiAgICB8IEdyZWF0ZXJUaGFuID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgRXF1YWxzID0+IGVxc1xuICAgIHwgTm90RXF1YWxzID0+IGVxc1xuICAgIH1cbiAgfCBGbG9hdChvcCkgPT5cbiAgICBzd2l0Y2ggKG9wKSB7XG4gICAgfCBQbHVzID0+IHBsdXNcbiAgICB8IE1pbnVzID0+IHBsdXNcbiAgICB8IFRpbWVzID0+IG11bHRcbiAgICB8IFBvd2VyID0+IHBvd2VyXG4gICAgfCBEaXZpZGUgPT4gbXVsdFxuICAgIHwgTGVzc1RoYW4gPT4gZXFzXG4gICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gZXFzXG4gICAgfCBHcmVhdGVyVGhhbiA9PiBlcXNcbiAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBlcXNcbiAgICB8IEVxdWFscyA9PiBlcXNcbiAgICB8IE5vdEVxdWFscyA9PiBlcXNcbiAgICB9XG4gIHwgQm9vbChvcCkgPT5cbiAgICBzd2l0Y2ggKG9wKSB7XG4gICAgfCBBbmQgPT4gYW5kX1xuICAgIHwgT3IgPT4gb3JfXG4gICAgfVxuICB8IFN0cmluZyhvcCkgPT5cbiAgICBzd2l0Y2ggKG9wKSB7XG4gICAgfCBDb25jYXQgPT4gY29uY2F0XG4gICAgfCBFcXVhbHMgPT4gZXFzXG4gICAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgQW55XG4gIHwgTnVsXG4gIHwgUGF0XG4gIHwgVHlwXG4gIHwgVFBhdFxuICB8IFJ1bFxuICB8IEV4cDtcblxubGV0IHJvb3QgPSBFeHA7XG5cbmxldCBhbGwgPSBbQW55LCBOdWwsIFBhdCwgVHlwLCBSdWwsIEV4cCwgVFBhdF07XG5cbmxldCBjb25zaXN0ZW50ID0gKHMsIHMnKSA9PlxuICBzd2l0Y2ggKHMsIHMnKSB7XG4gIHwgKEFueSwgXylcbiAgfCAoXywgQW55KSA9PiB0cnVlXG4gIHwgKE51bCwgXylcbiAgfCAoXywgTnVsKSA9PiBmYWxzZVxuICB8IF8gPT4gcyA9PSBzJ1xuICB9O1xuXG5sZXQgdG9fc3RyaW5nID1cbiAgZnVuXG4gIHwgQW55ID0+IFwiQW55XCJcbiAgfCBOdWwgPT4gXCJOdWxcIlxuICB8IFBhdCA9PiBcIlBhdFwiXG4gIHwgVFBhdCA9PiBcIlRQYXRcIlxuICB8IFR5cCA9PiBcIlR5cFwiXG4gIHwgUnVsID0+IFwiUnVsXCJcbiAgfCBFeHAgPT4gXCJFeHBcIjtcblxubGV0IHRvX3N0cmluZ192ZXJib3NlID1cbiAgZnVuXG4gIHwgQW55ID0+IFwiYW55XCJcbiAgfCBOdWwgPT4gXCJudWxsXCJcbiAgfCBQYXQgPT4gXCJwYXR0ZXJuXCJcbiAgfCBUUGF0ID0+IFwidHlwZSBwYXR0ZXJuXCJcbiAgfCBUeXAgPT4gXCJ0eXBlXCJcbiAgfCBSdWwgPT4gXCJydWxlXCJcbiAgfCBFeHAgPT4gXCJleHByZXNzaW9uXCI7XG4iLCJtb2R1bGUgU2hhcGUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IENvbnZleFxuICAgIHwgQ29uY2F2ZShQcmVjZWRlbmNlLnQpO1xuXG4gIGxldCBjb25jYXZlID0gKH5wPT8sICgpKSA9PiB7XG4gICAgbGV0IHAgPVxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IE5vbmUgPT4gUHJlY2VkZW5jZS5taW5cbiAgICAgIHwgU29tZShwKSA9PiBwXG4gICAgICB9O1xuICAgIENvbmNhdmUocCk7XG4gIH07XG5cbiAgbGV0IGZpdHMgPSAobDogdCwgcjogdCkgPT5cbiAgICBzd2l0Y2ggKGwsIHIpIHtcbiAgICB8IChDb252ZXgsIENvbmNhdmUoXykpXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiB0cnVlXG4gICAgfCAoQ29udmV4LCBDb252ZXgpXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29uY2F2ZShfKSkgPT4gZmFsc2VcbiAgICB9O1xuXG4gIGxldCBmaXR0aW5nID1cbiAgICBmdW5cbiAgICB8IENvbnZleCA9PiBjb25jYXZlKClcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4O1xuXG4gIGxldCBmbGlwID1cbiAgICBmdW5cbiAgICB8IENvbnZleCA9PiBjb25jYXZlKClcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4O1xuXG4gIGxldCBhYnNvbHV0ZSA9IChkOiBVdGlsLkRpcmVjdGlvbi50LCBzOiB0KTogVXRpbC5EaXJlY3Rpb24udCA9PlxuICAgIC8qIFRoZSBkaXJlY3Rpb24gYW4gcy1zaGFwZWQgbmliIG9uIHRoZSBkLWhhbmQgc2lkZSBpcyBmYWNpbmcgKi9cbiAgICBzd2l0Y2ggKHMpIHtcbiAgICB8IENvbnZleCA9PiBkXG4gICAgfCBDb25jYXZlKF8pID0+IFV0aWwuRGlyZWN0aW9uLnRvZ2dsZShkKVxuICAgIH07XG5cbiAgbGV0IHJlbGF0aXZlID0gKG5pYjogVXRpbC5EaXJlY3Rpb24udCwgc2lkZTogVXRpbC5EaXJlY3Rpb24udCk6IHQgPT5cbiAgICBuaWIgPT0gc2lkZSA/IENvbnZleCA6IGNvbmNhdmUoKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2hhcGU6IFNoYXBlLnQsXG4gIHNvcnQ6IFNvcnQudCxcbn07XG5cbmxldCBzaGFwZSA9IG4gPT4gbi5zaGFwZTtcblxubGV0IGZpdHMgPSAobDogdCwgcjogdCk6IGJvb2wgPT5cbiAgbC5zb3J0ID09IHIuc29ydCAmJiBTaGFwZS5maXRzKGwuc2hhcGUsIHIuc2hhcGUpO1xuXG5sZXQgZml0dGluZyA9IChuaWI6IHQpOiB0ID0+IHsuLi5uaWIsIHNoYXBlOiBTaGFwZS5maXR0aW5nKG5pYi5zaGFwZSl9O1xuXG5sZXQgZmxpcCA9IChuaWI6IHQpID0+IHsuLi5uaWIsIHNoYXBlOiBTaGFwZS5mbGlwKG5pYi5zaGFwZSl9O1xuXG4vLyBsZXQgdG9nZ2xlID0gKG5pYjogdCkgPT4ge1xuLy8gICAuLi5uaWIsXG4vLyAgIG9yaWVudGF0aW9uOiBEaXJlY3Rpb24udG9nZ2xlKG5pYi5vcmllbnRhdGlvbiksXG4vLyB9O1xuXG4vLyBsZXQgc29ydF9jb25zaXN0ZW50ID0gKG5pYjogdCwgbmliJzogdCkgPT4gbmliLnNvcnQgPT0gbmliJy5zb3J0O1xuXG4vLyBsZXQgb2Zfc29ydCA9IHNvcnQgPT4gW1xuLy8gICB7c29ydCwgb3JpZW50YXRpb246IExlZnR9LFxuLy8gICB7c29ydCwgb3JpZW50YXRpb246IFJpZ2h0fSxcbi8vIF07XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2hhcGUgPVxuICB8IENvbnZleFxuICB8IENvbmNhdmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgaWQ6IElkLnQsXG4gIHNoYXBlLFxufTtcblxubGV0IGlkID0gZyA9PiBnLmlkO1xuXG5sZXQgc2hhcGVzID0gZyA9PlxuICBzd2l0Y2ggKGcuc2hhcGUpIHtcbiAgfCBDb252ZXggPT4gTmliLlNoYXBlLihDb252ZXgsIENvbnZleClcbiAgfCBDb25jYXZlID0+IE5pYi5TaGFwZS4oQ29uY2F2ZShQcmVjZWRlbmNlLm1pbiksIENvbmNhdmUoUHJlY2VkZW5jZS5taW4pKVxuICB9O1xuXG4vLyBhc3N1bWVzIHNhbWUgc2hhcGUgb24gYm90aCBzaWRlc1xubGV0IG1rX2ZpdHNfc2hhcGUgPSAoczogTmliLlNoYXBlLnQpOiB0ID0+IHtcbiAgbGV0IGlkID0gSWQubWsoKTtcbiAgbGV0IHNoYXBlID1cbiAgICBzd2l0Y2ggKHMpIHtcbiAgICB8IENvbnZleCA9PiBDb25jYXZlXG4gICAgfCBDb25jYXZlKF8pID0+IENvbnZleFxuICAgIH07XG4gIHtpZCwgc2hhcGV9O1xufTtcbi8vbGV0IG1rX2ZpdHMgPSAoKGwsIHIpOiBOaWJzLnNoYXBlcyk6IG9wdGlvbih0KSA9PlxuLy8gIE5pYi5TaGFwZS5maXRzKGwsIHIpID8gTm9uZSA6IFNvbWUobWtfZml0c19zaGFwZShsKSk7XG5cbmxldCBmaXRzX3NoYXBlID0gKGc6IHQsIHM6IE5pYi5TaGFwZS50KSA9PlxuICBzd2l0Y2ggKGcuc2hhcGUsIHMpIHtcbiAgfCAoQ29udmV4LCBDb252ZXgpXG4gIHwgKENvbmNhdmUsIENvbmNhdmUoXykpID0+IGZhbHNlXG4gIHwgKENvbnZleCwgQ29uY2F2ZShfKSlcbiAgfCAoQ29uY2F2ZSwgQ29udmV4KSA9PiB0cnVlXG4gIH07XG5cbmxldCBmaXRzID0gKGc6IHQsIGcnOiB0KSA9PlxuICBzd2l0Y2ggKGcuc2hhcGUsIGcnLnNoYXBlKSB7XG4gIHwgKENvbnZleCwgQ29udmV4KVxuICB8IChDb25jYXZlLCBDb25jYXZlKSA9PiBmYWxzZVxuICB8IChDb252ZXgsIENvbmNhdmUpXG4gIHwgKENvbmNhdmUsIENvbnZleCkgPT4gdHJ1ZVxuICB9O1xuXG5sZXQgbWVyZ2UgPSAoZ3M6IGxpc3QodCkpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChncykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQodGwpKSB7XG4gICAgfCBOb25lID0+IFNvbWUoaGQpXG4gICAgfCBTb21lKChfLCBmdCkpID0+IGhkLnNoYXBlID09IGZ0LnNoYXBlID8gU29tZShoZCkgOiBOb25lXG4gICAgfVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gbWFrZSBhbiBlbnVtXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbm1vZHVsZSBJbmRleCA9IHtcbiAgdHlwZSB0ID0gaW50O1xufTtcblxubGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGg7XG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlO1xubGV0IHJtX250aCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfbnRoO1xubGV0IHJtX2xhc3QgPSBVdGlsLlN0cmluZ1V0aWwucmVtb3ZlX2xhc3Q7XG5sZXQgcm1fZmlyc3QgPSBVdGlsLlN0cmluZ1V0aWwucmVtb3ZlX2ZpcnN0O1xubGV0IHNwbGl0X250aCA9IFV0aWwuU3RyaW5nVXRpbC5zcGxpdF9udGg7XG5sZXQgaW5zZXJ0X250aCA9IFV0aWwuU3RyaW5nVXRpbC5pbnNlcnRfbnRoO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogQSBsYWJlbCBpcyB0aGUgdGV4dHVhbCBleHByZXNzaW9uIG9mIGEgZm9ybSdzIGRlbGltaXRlcnMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoVG9rZW4udCk7XG5leGNlcHRpb24gRW1wdHlfbGFiZWw7XG5cbmxldCBsZW5ndGg6IHQgPT4gaW50ID0gTGlzdC5sZW5ndGg7XG5cbmxldCByZXY6IHQgPT4gdCA9IExpc3QucmV2O1xuXG5sZXQgaGRfdGwgPSAobGJsOiB0KTogKFRva2VuLnQsIGxpc3QoVG9rZW4udCkpID0+XG4gIHN3aXRjaCAobGJsKSB7XG4gIHwgW10gPT4gcmFpc2UoRW1wdHlfbGFiZWwpXG4gIHwgW2hkLCAuLi50bF0gPT4gKGhkLCB0bClcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IChOaWIudCwgTmliLnQpO1xuXG5bQGRlcml2aW5nIHNob3ddXG50eXBlIHNoYXBlcyA9IChOaWIuU2hhcGUudCwgTmliLlNoYXBlLnQpO1xuXG5sZXQgZmxpcCA9ICgobCwgcik6IHQpID0+IChyLCBsKTtcblxubGV0IG9mX2hvbGUgPSBzb3J0ID0+IE5pYi4oe3NvcnQsIHNoYXBlOiBDb252ZXh9LCB7c29ydCwgc2hhcGU6IENvbnZleH0pO1xuXG5sZXQgZml0dGluZyA9ICgobCwgcik6IHQpID0+IChOaWIuZml0dGluZyhsKSwgTmliLmZpdHRpbmcocikpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBvdXQ6IFNvcnQudCxcbiAgaW5fOiBsaXN0KFNvcnQudCksXG4gIG5pYnM6IE5pYnMudCxcbn07XG5cbmxldCBmbGlwX25pYnMgPSBtID0+IHsuLi5tLCBuaWJzOiBOaWJzLmZsaXAobS5uaWJzKX07XG5cbmxldCBta19vcCA9IChvdXQsIGluXykgPT4ge1xuICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobiwgbil9O1xufTtcbmxldCBta19wcmUgPSAocCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IG91dH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19wb3N0ID0gKHAsIG91dCwgaW5fKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogb3V0fTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IG91dH07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfYmluID0gKH5sPT8sIH5yPT8sIHAsIG91dCwgaW5fKSA9PiB7XG4gIGxldCBsID0gT3B0aW9uLnZhbHVlKGwsIH5kZWZhdWx0PW91dCk7XG4gIGxldCByID0gT3B0aW9uLnZhbHVlKHIsIH5kZWZhdWx0PW91dCk7XG4gIGxldCBuaWIgPSBzb3J0ID0+IE5pYi57c29ydCwgc2hhcGU6IENvbmNhdmUocCl9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChuaWIobCksIG5pYihyKSl9O1xufTtcblxuLy8gZm9ybXMgd2hlcmUgdGlwcyBjYW4gYmUgZGlmZmVyZW50IHRoYW4gb3V0IHNvcnRcbmxldCBta19wcmUnID0gKHAsIG91dCwgc29ydF9sLCBpbl8sIHNvcnRfcikgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X3J9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX3Bvc3QnID0gKHAsIG91dCwgc29ydF9sLCBpbl8sIHNvcnRfcikgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfbH07XG4gIGxldCByID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBzb3J0X3J9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX2JpbicgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X3J9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xuXG5sZXQgbmlicyA9ICh+aW5kZXg9PywgbW9sZDogdCk6IE5pYnMudCA9PlxuICBzd2l0Y2ggKGluZGV4KSB7XG4gIHwgTm9uZSA9PiBtb2xkLm5pYnNcbiAgfCBTb21lKGkpID0+XG4gICAgbGV0IChsLCByKSA9IG1vbGQubmlicztcbiAgICBsZXQgaW5fID0gbW9sZC5pbl87XG4gICAgbGV0IGwgPVxuICAgICAgaSA9PSAwID8gbCA6IE5pYi57c2hhcGU6IFNoYXBlLmNvbmNhdmUoKSwgc29ydDogTGlzdC5udGgoaW5fLCBpIC0gMSl9O1xuICAgIGxldCByID1cbiAgICAgIGkgPT0gTGlzdC5sZW5ndGgoaW5fKVxuICAgICAgICA/IHIgOiBOaWIue3NoYXBlOiBTaGFwZS5jb25jYXZlKCksIHNvcnQ6IExpc3QubnRoKGluXywgaSl9O1xuICAgIChsLCByKTtcbiAgfTtcblxubGV0IG5pYl9zaGFwZXMgPSAofmluZGV4PT8sIG1vbGQ6IHQpOiBOaWJzLnNoYXBlcyA9PiB7XG4gIGxldCAobmliX2wsIG5pYl9yKSA9IG5pYnMofmluZGV4PywgbW9sZCk7XG4gIChuaWJfbC5zaGFwZSwgbmliX3Iuc2hhcGUpO1xufTtcblxubW9kdWxlIE1hcCA9IHtcbiAgdHlwZSBtb2xkID0gdDtcbiAgaW5jbHVkZSBJZC5NYXA7XG4gIHR5cGUgbm9ucmVjIHQgPSBJZC5NYXAudChsaXN0KG1vbGQpKTtcbn07XG5cbmxldCBvZl9ncm91dDogKEdyb3V0LnQsIFNvcnQudCkgPT4gdCA9XG4gIChnLCBzb3J0KSA9PiB7XG4gICAgbmliczpcbiAgICAgIC8vIFRPRE8oZCk6IHJldmlzaXQgdGhpcyB3aGVuIHJlZm9ybXVsYXRpbmcgbW9sZHNcbiAgICAgIHN3aXRjaCAoZy5zaGFwZSkge1xuICAgICAgfCBDb252ZXggPT5cbiAgICAgICAgbGV0IG4gPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnR9O1xuICAgICAgICAobiwgbik7XG4gICAgICB8IENvbmNhdmUgPT5cbiAgICAgICAgbGV0IG4gPSBOaWIue3NoYXBlOiBDb25jYXZlKFByZWNlZGVuY2UubWluKSwgc29ydH07XG4gICAgICAgIChuLCBuKTtcbiAgICAgIH0sXG4gICAgb3V0OiBzb3J0LFxuICAgIGluXzogW10sXG4gIH07XG5cbmxldCBvZl9zZWNvbmRhcnkgPSAobDogTmliLnQpID0+IHtcbiAgbmliczogKE5pYi5mbGlwKGwpLCBsKSxcbiAgb3V0OiBsLnNvcnQsXG4gIGluXzogW10sXG59O1xuXG5sZXQgZml0c19zaGFwZSA9IChkOiBEaXJlY3Rpb24udCwgczogTmliLlNoYXBlLnQsIG06IHQpOiBib29sID0+IHtcbiAgbGV0IHMnID0gRGlyZWN0aW9uLmNob29zZShkLCBuaWJfc2hhcGVzKG0pKTtcbiAgTmliLlNoYXBlLmZpdHMocywgcycpO1xufTtcblxubGV0IGNvbnNpc3RlbnRfc2hhcGVzID0gKG1zOiBsaXN0KHQpKSA9PlxuICBtc1xuICB8PiBMaXN0Lm1hcChuaWJfc2hhcGVzKVxuICB8PiBMaXN0LnNwbGl0XG4gIHw+IFR1cGxlVXRpbC5tYXAyKExpc3RVdGlsLnNpbmdsZV9lbGVtKTtcblxubGV0IGlzX2luZml4X29wID0gKG1vbGQ6IHQpOiBib29sID0+XG4gIHN3aXRjaCAobW9sZC5uaWJzLCBtb2xkLmluXykge1xuICB8ICgoe3NoYXBlOiBDb25jYXZlKF8pLCBffSwge3NoYXBlOiBDb25jYXZlKF8pLCBffSksIFtdKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgY2hldnJvbiA9IChzb3J0OiBTb3J0LnQsIHA6IFByZWNlZGVuY2UudCwgZDogVXRpbC5EaXJlY3Rpb24udCk6IHQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgUmlnaHQgPT4gbWtfcG9zdChwLCBzb3J0LCBbXSlcbiAgfCBMZWZ0ID0+IG1rX3ByZShwLCBzb3J0LCBbXSlcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIE1vbGQ7XG5tb2R1bGUgUCA9IFByZWNlZGVuY2U7XG5cbi8qIEZPUk1cbiAgIFRoaXMgbW9kdWxlIGRldGVybWluZXMgdGhlIHN5bnRhY3RpYyBleHRlbnQgb2YgdGhlIGxhbmd1YWdlOyB0aGVcbiAgIGVudGlyZSBTeW50YXggbW9kdWxlIGlzIGRyaXZlbiBieSB0aGUgYmVsb3cgZGVmaW5pdGlvbnMuIEFkZGluZ1xuICAgYSBuZXcgc3ludGFjdGljIGZvcm0gaXMgc2ltcGx5IGEgbWF0dGVyIG9mIGFkZGluZyBhIG5ldyBsaW5lIHRvIGVpdGhlclxuICAgdGhlICdjb252ZXhfbW9ub3MnIHRhYmxlLCBmb3Igc2luZ2xlLXRva2VuIGZvcm1zLCBvciB0aGUgJ2Zvcm1zJ1xuICAgdGFibGUsIGZvciBjb21wb3VuZCBmb3Jtcy5cbiAgIFRoZSB3cmFwcGluZyBmdW5jdGlvbnMgc2VlbiBpbiBib3RoIG9mIHRob3NlIHRhYmxlcyBkZXRlcm1pbmUgdGhlXG4gICBzaGFwZSwgcHJlY2VkZW5jZSwgYW5kIGV4cGFuc2lvbiBiZWhhdmlvciBvZiB0aGUgZm9ybS4gKi9cblxubGV0IHJlZ2V4cCA9IChyLCBzKSA9PlxuICBKc19vZl9vY2FtbC5SZWdleHAuc3RyaW5nX21hdGNoKEpzX29mX29jYW1sLlJlZ2V4cC5yZWdleHAociksIHMsIDApXG4gIHw+IE9wdGlvbi5pc19zb21lO1xuXG4vKiBBIGxhYmVsIGlzIHRoZSB0ZXh0dWFsIGV4cHJlc3Npb24gb2YgYSBmb3JtJ3MgZGVsaW1pdGVycyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsYWJlbCA9IGxpc3QoVG9rZW4udCk7XG5cbi8qIFRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBjb21wb3VuZCBmb3JtcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGluc2VydGluZ1xuICAgb25lIG9mIGl0cyBkZWxpbWl0ZXJzIHRocm91Z2ggYSBwcm9jZXNzIGNhbGxlZCBleHBhbnNpb24uIEV4cGFuc2lvblxuICAgY2FuIGVpdGhlciBvY2N1ciAoSW5zdGFudClseSB1cG9uIGRlbGltaXRlciBjcmVhdGlvbiwgb3IgYmUgKERlbGF5ZWQpXG4gICB1bnRpbCBhZnRlciBhIHRva2VuIGJvdW5kYXJ5IGV2ZW50IGlzIHRyaWdnZXJlZCAoc2F5IGJ5IHByZXNzaW5nXG4gICBzcGFjZSBhZnRlciBlbnRlcmluZyAnbGV0JykuIFRoZSAoU3RhdGljKSBjYXNlIGlzIHVzZWQgZm9yIG1vbm9zXG4gICBha2Egc2luZ2xlLXRva2VuIGZvcm1zLiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cGFuc2lvbl90aW1lID1cbiAgfCBTdGF0aWNcbiAgfCBJbnN0YW50XG4gIHwgRGVsYXllZDtcblxuLyogRXhwYW5zaW9uIGNhbiBiZSB0cmlnZ2VyZWQgYnkgZWl0aGVyL2JvdGggdGhlIGZpcnN0IG9yIGxhc3QgdG9rZW5cbiAgIG9mIGEgZm9ybSwgcmVwcmVzZW50ZWQgaGVyZSBieSB0aGUgZmlyc3QvbGFzdCBlbGVtZW50cyBvZiB0aGlzIHBhaXIuICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cGFuc2lvbiA9IChleHBhbnNpb25fdGltZSwgZXhwYW5zaW9uX3RpbWUpO1xuXG4vKiBBIGxhYmVsLCBhIG1vbGQsIGFuZCBleHBhbnNpb24gYmVoYXZpb3IgdG9nZXRoZXIgZGV0ZXJtaW5lIGEgZm9ybS4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgbGFiZWwsXG4gIGV4cGFuc2lvbixcbiAgbW9sZDogTW9sZC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBiYWRfdG9rZW5fY2xzID1cbiAgfCBPdGhlclxuICB8IEJhZEludDtcblxubGV0IG1rID0gKGV4cGFuc2lvbiwgbGFiZWwsIG1vbGQpID0+IHtsYWJlbCwgbW9sZCwgZXhwYW5zaW9ufTtcblxuLyogQWJicmV2aWF0aW9ucyBmb3IgZXhwYW5zaW9uIGJlaGF2aW9ycyAqL1xubGV0IHNzOiBleHBhbnNpb24gPSAoU3RhdGljLCBTdGF0aWMpO1xubGV0IGlpOiBleHBhbnNpb24gPSAoSW5zdGFudCwgSW5zdGFudCk7XG5sZXQgaXM6IGV4cGFuc2lvbiA9IChJbnN0YW50LCBTdGF0aWMpO1xubGV0IGRzOiBleHBhbnNpb24gPSAoRGVsYXllZCwgU3RhdGljKTtcblxubGV0IG1rX2luZml4ID0gKHQ6IFRva2VuLnQsIHNvcnQ6IFNvcnQudCwgcHJlYykgPT5cbiAgbWsoc3MsIFt0XSwgbWtfYmluKHByZWMsIHNvcnQsIFtdKSk7XG5cbmxldCBta19udWxfaW5maXggPSAodDogVG9rZW4udCwgcHJlYykgPT5cbiAgbWsoc3MsIFt0XSwgbWtfYmluKH5sPUFueSwgfnI9QW55LCBwcmVjLCBBbnksIFtdKSk7XG5cbi8qIFRva2VuIFJlY29nbml0aW9uIFByZWRpY2F0ZXMgKi9cblxuLyogQS4gU2Vjb25kYXJ5IE5vdGF0aW9uIChDb21tZW50cywgV2hpdGVzcGFjZSwgZXRjLikgICovXG5sZXQgc3BhY2UgPSBcIiBcIjtcbi8qIEhBQ0soYW5kcmV3KTogVXNpbmcg4o+OIGNoYXIgdG8gcmVwcmVzZW50IGxpbmVicmVhayB0byBhdm9pZCByZWdleHBcbiAgIGlzc3VlcyB3aXRoIHVzaW5nIFxcbi4gU29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgcmVnZXhwcyBiZXR0ZXJcbiAgIHNob3VsZCBmaXggdGhpcy4gKi9cbmxldCBsaW5lYnJlYWsgPSBcIuKPjlwiO1xubGV0IGNvbW1lbnRfcmVnZXhwID0gXCJeI1teI+KPjl0qIyRcIjsgLyogTXVsdGlsaW5lIGNvbW1lbnRzIG5vdCBzdXBwb3J0ZWQgKi9cbmxldCBpc19jb21tZW50ID0gdCA9PiByZWdleHAoY29tbWVudF9yZWdleHAsIHQpIHx8IHQgPT0gXCIjXCI7XG5sZXQgaXNfY29tbWVudF9kZWxpbSA9IHQgPT4gdCA9PSBcIiNcIjtcbmxldCBpc19zZWNvbmRhcnkgPSB0ID0+XG4gIExpc3QubWVtKHQsIFtzcGFjZSwgbGluZWJyZWFrXSkgfHwgcmVnZXhwKGNvbW1lbnRfcmVnZXhwLCB0KTtcblxuLyogU1RSSU5HUzogc3BlY2lhbC1jYXNlIHN5bnRheCAqL1xuXG4vKiBpc19zdHJpbmc6IGxhc3QgY2xhdXNlIGlzIGEgc29tZXdoYXQgaGFja3kgd2F5IG9mIG1ha2luZyBzdXJlXG4gICB0aGVyZSBhcmUgYXQgbW9zdCB0d28gcXVvdGVzLCBpbiBvcmRlciB0byBwcmV2ZW50IG1lcmdlcyAqL1xubGV0IGlzX3N0cmluZyA9IHQgPT5cbiAgcmVnZXhwKFwiXlxcXCJbXuKPjl0qXFxcIiRcIiwgdClcbiAgJiYgTGlzdC5sZW5ndGgoU3RyaW5nLnNwbGl0X29uX2NoYXIoJ1wiJywgdCkpIDwgNDtcbmxldCBzdHJpbmdfZGVsaW0gPSBcIlxcXCJcIjtcbmxldCBlbXB0eV9zdHJpbmcgPSBzdHJpbmdfZGVsaW0gKysgc3RyaW5nX2RlbGltO1xubGV0IGlzX3N0cmluZ19kZWxpbSA9ICg9PSkoc3RyaW5nX2RlbGltKTtcbmxldCBzdHJpcF9xdW90ZXMgPSBzID0+XG4gIGlmIChTdHJpbmcubGVuZ3RoKHMpIDwgMikge1xuICAgIHM7XG4gIH0gZWxzZSBpZiAoU3RyaW5nLnN1YihzLCAwLCAxKSAhPSBcIlxcXCJcIlxuICAgICAgICAgICAgIHx8IFN0cmluZy5zdWIocywgU3RyaW5nLmxlbmd0aChzKSAtIDEsIDEpICE9IFwiXFxcIlwiKSB7XG4gICAgcztcbiAgfSBlbHNlIHtcbiAgICBTdHJpbmcuc3ViKHMsIDEsIFN0cmluZy5sZW5ndGgocykgLSAyKTtcbiAgfTtcbmxldCBzdHJpbmdfcXVvdGUgPSBzID0+IFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCI7XG5cbmxldCBrZXl3b3JkcyA9IFtcbiAgXCJmdW5cIixcbiAgXCJsZXRcIixcbiAgXCJpblwiLFxuICBcInR5cGVcIixcbiAgXCJjYXNlXCIsXG4gIFwidGVzdFwiLFxuICBcImlmXCIsXG4gIFwidGhlblwiLFxuICBcImVsc2VcIixcbl07XG5sZXQgcmVzZXJ2ZWRfa2V5d29yZHMgPSBbXCJvZlwiLCBcIndoZW5cIiwgXCJ3aXRoXCIsIFwic3dpdGNoXCIsIFwibWF0Y2hcIl07XG5sZXQgaXNfa2V5d29yZCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwga2V5d29yZHMpICsrIFwiKSRcIik7XG5sZXQgaXNfcmVzZXJ2ZWRfa2V5d29yZCA9XG4gIHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgcmVzZXJ2ZWRfa2V5d29yZHMpICsrIFwiKSRcIik7XG5cbi8qIFBvdGVudGlhbCB0b2tlbnM6IFRoZXNlIGFyZSBmYWxsdGhyb3VnaCBjbGFzc2VzIHdoaWNoIGRldGVybWluZVxuICogdGhlIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIGEgY2hhcmFjdGVyIGluIGNvbnRhY3Qgd2l0aCBhIHRva2VuICovXG5sZXQgaXNfcG90ZW50aWFsX29wZXJhbmQgPSByZWdleHAoXCJeW2EtekEtWjAtOV8nXFxcXC4/XSskXCIpO1xuLyogQW55dGhpbmcgZWxzZSBpcyBjb25zaWRlcmVkIGEgcG90ZW50aWFsIG9wZXJhdG9yLCBhcyBsb25nXG4gKiAgYXMgaXQgZG9lcyBub3QgY29udGFpbiBhbnkgd2hpdGVzcGFjZSwgbGluZWJyZWFrcywgY29tbWVudFxuICogIGRlbGltaXRlcnMsIHN0cmluZyBkZWxpbWl0ZXJzLCBvciB0aGUgaW5zdGFudCBleHBhbmRpbmcgcGFpcmVkXG4gKiAgZGVsaW1pdGVyczogKClbXXwgKi9cbmxldCBpc19wb3RlbnRpYWxfb3BlcmF0b3IgPSByZWdleHAoXCJeW15hLXpBLVowLTlfJz9cXFwiI+KPjlxcXFxzXFxcXFtcXFxcXVxcXFwoXFxcXCldKyRcIik7XG5sZXQgaXNfcG90ZW50aWFsX3Rva2VuID0gdCA9PlxuICBpc19wb3RlbnRpYWxfb3BlcmFuZCh0KVxuICB8fCBpc19wb3RlbnRpYWxfb3BlcmF0b3IodClcbiAgfHwgaXNfc3RyaW5nKHQpXG4gIHx8IGlzX2NvbW1lbnQodCk7XG5cbmxldCBpc19hcmJpdGFyeV9pbnQgPSByZWdleHAoXCJeLT9cXFxcZCtbMC05X10qJFwiKTtcbmxldCBpc19hcmJpdGFyeV9mbG9hdCA9IHggPT5cbiAgeCAhPSBcIi5cIiAmJiB4ICE9IFwiLVwiICYmIHJlZ2V4cChcIl4tP1swLTldKlxcXFwuP1swLTldKigoZXxFKS0/WzAtOV0qKT8kXCIsIHgpO1xubGV0IGlzX2ludCA9IHN0ciA9PiBpc19hcmJpdGFyeV9pbnQoc3RyKSAmJiBpbnRfb2Zfc3RyaW5nX29wdChzdHIpICE9IE5vbmU7XG4vKiBOT1RFOiBUaGUgaXNfYXJiaXRhcnlfaW50IGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50XG4gICBtaW51c2VzIGZyb20gYmVpbmcgcGFyc2VkIGFzIHBhcnQgb2YgdGhlIGludCB0b2tlbi4gKi9cblxubGV0IGlzX2JhZF9pbnQgPSBzdHIgPT4gaXNfYXJiaXRhcnlfaW50KHN0cikgJiYgIWlzX2ludChzdHIpO1xuXG4vKiBOT1RFOiBBcyB3ZWxsIGFzIG1ha2luZyBpc19mbG9hdCAgZGlzam9pbnQgZnJvbSBpc19pbnQsXG4gICB0aGUgaXNfYXJiaXRhcnlfaW50ICBhbHNvIHByZXZlbnRzIGludHMgb3ZlciBpbnRfbWF4IGZyb20gYmVpbmdcbiAgIGNhc3QgYXMgZmxvYXRzLiBUaGUgaXNfYXJiaXRhcnlfZmxvYXQgY2hlY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnRcbiAgIG1pbnVzZXMgZnJvbSBiZWluZyBwYXJzZWQgYXMgcGFydCBvZiB0aGUgZmxvYXQgdG9rZW4uICovXG5sZXQgaXNfZmxvYXQgPSBzdHIgPT5cbiAgIWlzX2FyYml0YXJ5X2ludChzdHIpXG4gICYmIGlzX2FyYml0YXJ5X2Zsb2F0KHN0cilcbiAgJiYgZmxvYXRfb2Zfc3RyaW5nX29wdChzdHIpICE9IE5vbmU7XG5sZXQgaXNfYmFkX2Zsb2F0ID0gc3RyID0+IGlzX2FyYml0YXJ5X2Zsb2F0KHN0cikgJiYgIWlzX2Zsb2F0KHN0cik7XG5sZXQgYm9vbHMgPSBbXCJ0cnVlXCIsIFwiZmFsc2VcIl07XG5sZXQgaXNfYm9vbCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgYm9vbHMpICsrIFwiKSRcIik7XG5cbmxldCBpc192YXIgPSBzdHIgPT5cbiAgIWlzX2Jvb2woc3RyKVxuICAmJiBzdHIgIT0gXCJfXCJcbiAgLy8mJiAhaXNfa2V5d29yZChzdHIpXG4gIC8vJiYgIWlzX3Jlc2VydmVkKHN0cilcbiAgJiYgcmVnZXhwKFxuICAgICAgIHt8KF5bYS16X11bQS1aYS16MC05XyddKiQpfCheW0EtWl1bQS1aYS16MC05XyddKlxcLlthLXpdW0EtWmEtejAtOV8nXSokKXx9LFxuICAgICAgIHN0cixcbiAgICAgKTtcbmxldCBpc19jYXBpdGFsaXplZF9uYW1lID0gcmVnZXhwKFwiXltBLVpdW0EtWmEtejAtOV9dKiRcIik7XG5sZXQgaXNfY3RyID0gaXNfY2FwaXRhbGl6ZWRfbmFtZTtcbmxldCBiYXNlX3R5cHMgPSBbXCJTdHJpbmdcIiwgXCJJbnRcIiwgXCJGbG9hdFwiLCBcIkJvb2xcIl07XG5sZXQgaXNfYmFzZV90eXAgPSByZWdleHAoXCJeKFwiICsrIFN0cmluZy5jb25jYXQoXCJ8XCIsIGJhc2VfdHlwcykgKysgXCIpJFwiKTtcbmxldCBpc190eXBfdmFyID0gc3RyID0+IGlzX3ZhcihzdHIpIHx8IGlzX2NhcGl0YWxpemVkX25hbWUoc3RyKTtcbmxldCB3aWxkID0gXCJfXCI7XG5sZXQgaXNfd2lsZCA9IHJlZ2V4cChcIl5cIiArKyB3aWxkICsrIFwiJFwiKTtcblxuLyogTGlzdCBsaXRlcmFscyAqL1xubGV0IGxpc3Rfc3RhcnQgPSBcIltcIjtcbmxldCBsaXN0X2VuZCA9IFwiXVwiO1xubGV0IGxpc3RsaXRfbGJsID0gW2xpc3Rfc3RhcnQsIGxpc3RfZW5kXTtcbmxldCBlbXB0eV9saXN0ID0gbGlzdF9zdGFydCArKyBsaXN0X2VuZDtcbmxldCBpc19lbXB0eV9saXN0ID0gKD09KShlbXB0eV9saXN0KTtcblxuLyogVHVwbGVzICovXG5sZXQgdHVwbGVfc3RhcnQgPSBcIihcIjtcbmxldCB0dXBsZV9lbmQgPSBcIilcIjtcbmxldCB0dXBsZV9sYmwgPSBbdHVwbGVfc3RhcnQsIHR1cGxlX2VuZF07XG5sZXQgZW1wdHlfdHVwbGUgPSB0dXBsZV9zdGFydCArKyB0dXBsZV9lbmQ7XG5sZXQgaXNfZW1wdHlfdHVwbGUgPSAoPT0pKGVtcHR5X3R1cGxlKTtcblxuLyogVGhlc2UgZnVuY3Rpb25zIGRldGVybWluZSB3aGljaCBmb3JtcyBjYW4gc3dpdGNoIGJhY2sgYW5kIGZvcnRoIGJldHdlZW5cbiAgIG1vbm8gYW5kIGR1b3RpbGUgZm9ybXMsIGxpa2UgbGlzdCBsaXRlcmFscyBhbmQgdHVwbGVzIHN3aXRjaGluZyB0by9mcm9tXG4gICB0aGUgZW1wdHkgbGlzdCBhbmQgZW1wdHkgdHVwbGUuIFRlY2huaWNhbGx5IHRoaXMgc2hvdWxkIGJlIGRlcml2YWJsZSBmcm9tXG4gICB0aGUgbGFuZ3VhZ2UgZGF0YTsgbGVhdmluZyB0aGF0IGZvciBhIGZ1dHVyZSByZWZhY3Rvci4gKi9cbmxldCBkdW9zcGxpdHMgPSAodDogVG9rZW4udCk6IExhYmVsLnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gaXNfZW1wdHlfbGlzdCh0KSA9PiBsaXN0bGl0X2xibFxuICB8IF8gd2hlbiBpc19lbXB0eV90dXBsZSh0KSA9PiB0dXBsZV9sYmxcbiAgfCBfID0+IFtdXG4gIH07XG5cbmxldCBkdW9tZXJnZXMgPSAobGJsOiBMYWJlbC50KTogb3B0aW9uKExhYmVsLnQpID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuIGxibCA9PSBsaXN0bGl0X2xibCA9PiBTb21lKFtlbXB0eV9saXN0XSlcbiAgfCBfIHdoZW4gbGJsID09IHR1cGxlX2xibCA9PiBTb21lKFtlbXB0eV90dXBsZV0pXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8vVE9ETyhhbmRyZXcpOiByZWZhY3RvciBhdG9taWNfZm9ybXMgdG8gc2VwZXJhdGUgdGhlc2Ugb3V0XG5sZXQgY29uc3RfbW9ub19kZWxpbXMgPVxuICBiYXNlX3R5cHMgQCBib29scyBAIFt3aWxkLCBlbXB0eV9saXN0LCBlbXB0eV90dXBsZSwgZW1wdHlfc3RyaW5nXTtcblxubGV0IGV4cGxpY2l0X2hvbGUgPSBcIj9cIjtcbmxldCBpc19leHBsaWNpdF9ob2xlID0gdCA9PiB0ID09IGV4cGxpY2l0X2hvbGU7XG5sZXQgYmFkX3Rva2VuX2Nsczogc3RyaW5nID0+IGJhZF90b2tlbl9jbHMgPVxuICB0ID0+XG4gICAgc3dpdGNoICgpIHtcbiAgICB8IF8gd2hlbiBpc19iYWRfaW50KHQpID0+IEJhZEludFxuICAgIHwgXyA9PiBPdGhlclxuICAgIH07XG5cbi8qIEIuIE9wZXJhbmRzOlxuICAgT3JkZXIgaW4gdGhpcyBsaXN0IGRldGVybWluZXMgcmVsYXRpdmUgcmVtb2xkaW5nXG4gICBwcmlvcml0eSBmb3IgZm9ybXMgd2l0aCBvdmVybGFwcGluZyByZWdleHBzICovXG5sZXQgYXRvbWljX2Zvcm1zOiBsaXN0KChzdHJpbmcsIChzdHJpbmcgPT4gYm9vbCwgbGlzdChNb2xkLnQpKSkpID0gW1xuICAoXCJ2YXJcIiwgKGlzX3ZhciwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFxuICAgIFwiZXhwbGljaXRfaG9sZVwiLFxuICAgIChcbiAgICAgIGlzX2V4cGxpY2l0X2hvbGUsXG4gICAgICBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pLCBta19vcChUeXAsIFtdKSwgbWtfb3AoVFBhdCwgW10pXSxcbiAgICApLFxuICApLFxuICAoXCJ3aWxkXCIsIChpc193aWxkLCBbbWtfb3AoUGF0LCBbXSldKSksXG4gIChcInN0cmluZ1wiLCAoaXNfc3RyaW5nLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJpbnRfbGl0XCIsIChpc19pbnQsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImZsb2F0X2xpdFwiLCAoaXNfZmxvYXQsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImJvb2xfbGl0XCIsIChpc19ib29sLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJlbXB0eV9saXN0XCIsIChpc19lbXB0eV9saXN0LCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXG4gICAgXCJlbXB0eV90dXBsZVwiLFxuICAgIChpc19lbXB0eV90dXBsZSwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKSwgbWtfb3AoVHlwLCBbXSldKSxcbiAgKSxcbiAgKFwiZGVmZXJyYWxcIiwgKGlzX3dpbGQsIFtta19vcChFeHAsIFtdKV0pKSxcbiAgKFwidHlfdmFyXCIsIChpc190eXBfdmFyLCBbbWtfb3AoVHlwLCBbXSldKSksXG4gIChcInR5X3Zhcl9wXCIsIChpc190eXBfdmFyLCBbbWtfb3AoVFBhdCwgW10pXSkpLFxuICAoXCJjdHJcIiwgKGlzX2N0ciwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwidHlwZVwiLCAoaXNfYmFzZV90eXAsIFtta19vcChUeXAsIFtdKV0pKSxcbl07XG5cbi8qIEMuIENvbXBvdW5kIEZvcm1zOlxuICAgT3JkZXIgaW4gdGhpcyBsaXN0IGRldGVybWluZXMgcmVsYXRpdmUgcmVtb2xkaW5nXG4gICBwcmlvcml0eSBmb3IgZm9ybXMgd2hpY2ggc2hhcmUgdGhlIHNhbWUgbGFiZWxzICovXG5cbmxldCBmb3JtczogbGlzdCgoc3RyaW5nLCB0KSkgPSBbXG4gIC8vIElORklYIE9QRVJBVE9SU1xuICAoXCJ0eXBfcGx1c1wiLCBta19pbmZpeChcIitcIiwgVHlwLCBQLm9yXykpLFxuICAoXCJ0eXBlLWFycm93XCIsIG1rX2luZml4KFwiLT5cIiwgVHlwLCBQLnBsdXMpKSxcbiAgKFwiY2VsbC1qb2luXCIsIG1rX2luZml4KFwiO1wiLCBFeHAsIFAuc2VtaSkpLFxuICAoXCJwbHVzXCIsIG1rX2luZml4KFwiK1wiLCBFeHAsIFAucGx1cykpLFxuICAoXCJtaW51c1wiLCBta19pbmZpeChcIi1cIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwidGltZXNcIiwgbWtfaW5maXgoXCIqXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcInBvd2VyXCIsIG1rX2luZml4KFwiKipcIiwgRXhwLCBQLnBvd2VyKSksXG4gIChcImZwb3dlclwiLCBta19pbmZpeChcIioqLlwiLCBFeHAsIFAucG93ZXIpKSxcbiAgKFwiZGl2aWRlXCIsIG1rX2luZml4KFwiL1wiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJlcXVhbHNcIiwgbWtfaW5maXgoXCI9PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcInN0cmluZ19lcXVhbHNcIiwgbWtfaW5maXgoXCIkPT1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJzdHJpbmdfY29uY2F0XCIsIG1rX2luZml4KFwiKytcIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwibHRcIiwgbWtfaW5maXgoXCI8XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZ3RcIiwgbWtfaW5maXgoXCI+XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwibm90X2VxdWFsc1wiLCBta19pbmZpeChcIiE9XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZ3RlXCIsIG1rX2luZml4KFwiPj1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJsdGVcIiwgbWtfaW5maXgoXCI8PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZwbHVzXCIsIG1rX2luZml4KFwiKy5cIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwiZm1pbnVzXCIsIG1rX2luZml4KFwiLS5cIiwgRXhwLCBQLnBsdXMpKSxcbiAgKFwiZnRpbWVzXCIsIG1rX2luZml4KFwiKi5cIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwiZmRpdmlkZVwiLCBta19pbmZpeChcIi8uXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcImZlcXVhbHNcIiwgbWtfaW5maXgoXCI9PS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbHRcIiwgbWtfaW5maXgoXCI8LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZndFwiLCBta19pbmZpeChcIj4uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZm5vdF9lcXVhbHNcIiwgbWtfaW5maXgoXCIhPS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmZ3RlXCIsIG1rX2luZml4KFwiPj0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmx0ZVwiLCBta19pbmZpeChcIjw9LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImxvZ2ljYWxfYW5kXCIsIG1rX2luZml4KFwiJiZcIiwgRXhwLCBQLmFuZF8pKSxcbiAgKFwibG9naWNhbF9vcl9sZWdhY3lcIiwgbWtfaW5maXgoXCJcXFxcL1wiLCBFeHAsIFAub3JfKSksXG4gIChcImxvZ2ljYWxfb3JcIiwgbWtfaW5maXgoXCJ8fFwiLCBFeHAsIFAub3JfKSksXG4gIChcImxpc3RfY29uY2F0XCIsIG1rX2luZml4KFwiQFwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJjb25zX2V4cFwiLCBta19pbmZpeChcIjo6XCIsIEV4cCwgUC5jb25zKSksXG4gIChcImNvbnNfcGF0XCIsIG1rX2luZml4KFwiOjpcIiwgUGF0LCBQLmNvbnMpKSxcbiAgKFwidHlwZWFublwiLCBtayhzcywgW1wiOlwiXSwgbWtfYmluJyhQLmFubiwgUGF0LCBQYXQsIFtdLCBUeXApKSksXG4gIC8vIFVOQVJZIFBSRUZJWCBPUEVSQVRPUlNcbiAgKFwibm90XCIsIG1rKGlpLCBbXCIhXCJdLCBta19wcmUoUC5ub3RfLCBFeHAsIFtdKSkpLCAvL1RPRE86IHByZWNlZGVuY2VcbiAgKFwidHlwX3N1bV9zaW5nbGVcIiwgbWsoc3MsIFtcIitcIl0sIG1rX3ByZShQLm9yXywgVHlwLCBbXSkpKSxcbiAgKFwidW5hcnlfbWludXNcIiwgbWsoc3MsIFtcIi1cIl0sIG1rX3ByZShQLm5lZywgRXhwLCBbXSkpKSxcbiAgKFwidW5xdW90ZVwiLCBtayhzcywgW1wiJFwiXSwgbWtfcHJlKFAudW5xdW90ZSwgRXhwLCBbXSkpKSxcbiAgLy8gTi1BUlkgT1BTIChvbiB0aGUgc2VtYW50aWNzIGxldmVsKVxuICAoXCJjb21tYV9leHBcIiwgbWtfaW5maXgoXCIsXCIsIEV4cCwgUC5wcm9kKSksXG4gIChcImNvbW1hX3BhdFwiLCBta19pbmZpeChcIixcIiwgUGF0LCBQLnByb2QpKSxcbiAgKFwiY29tbWFfdHlwXCIsIG1rX2luZml4KFwiLFwiLCBUeXAsIFAucHJvZCkpLFxuICAvLyBQQUlSRUQgREVMSU1JVEVSUzpcbiAgKFwibGlzdF9saXRfZXhwXCIsIG1rKGlpLCBbXCJbXCIsIFwiXVwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwibGlzdF9saXRfcGF0XCIsIG1rKGlpLCBbXCJbXCIsIFwiXVwiXSwgbWtfb3AoUGF0LCBbUGF0XSkpKSxcbiAgKFwibGlzdF90eXBcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChUeXAsIFtUeXBdKSkpLFxuICAvL05PVEUoYW5kcmV3KTogcGFyZW5zIGJlaW5nIGJlbG93IGFwcyBpcyBsb2FkLWJlYXJpbmcsIHVuZm9ydHVuYXRlbHlcbiAgKFwicGFyZW5zX2V4cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX29wKEV4cCwgW0V4cF0pKSksXG4gIChcInBhcmVuc19wYXRcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19vcChQYXQsIFtQYXRdKSkpLFxuICAoXCJwYXJlbnNfdHlwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfb3AoVHlwLCBbVHlwXSkpKSxcbiAgKFwiYXBfZXhwX2VtcHR5XCIsIG1rKGlpLCBbXCIoKVwiXSwgbWtfcG9zdChQLmFwLCBFeHAsIFtdKSkpLFxuICAoXCJhcF9leHBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW0V4cF0pKSksXG4gIChcImFwX3BhdFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX3Bvc3QoUC5hcCwgUGF0LCBbUGF0XSkpKSxcbiAgKFwiYXBfdHlwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfcG9zdChQLmFwLCBUeXAsIFtUeXBdKSkpLFxuICAoXG4gICAgXCJhcF9leHBfdHlwXCIsXG4gICAgbWsoKEluc3RhbnQsIFN0YXRpYyksIFtcIkA8XCIsIFwiPlwiXSwgbWtfcG9zdChQLmFwLCBFeHAsIFtUeXBdKSksXG4gICksXG4gIChcImF0X3NpZ25cIiwgbWtfbnVsX2luZml4KFwiQFwiLCBQLmVxcykpLCAvLyBIQUNLOiBTVUJTVFJJTkcgUkVRXG4gIChcImNhc2VcIiwgbWsoZHMsIFtcImNhc2VcIiwgXCJlbmRcIl0sIG1rX29wKEV4cCwgW1J1bF0pKSksXG4gIChcInRlc3RcIiwgbWsoZHMsIFtcInRlc3RcIiwgXCJlbmRcIl0sIG1rX29wKEV4cCwgW0V4cF0pKSksXG4gIChcImZ1bl9cIiwgbWsoZHMsIFtcImZ1blwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBFeHAsIFtQYXRdKSkpLFxuICAoXCJmaXhcIiwgbWsoZHMsIFtcImZpeFwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBFeHAsIFtQYXRdKSkpLFxuICAoXCJ0eXBmdW5cIiwgbWsoZHMsIFtcInR5cGZ1blwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBFeHAsIFtUUGF0XSkpKSxcbiAgKFwiZm9yYWxsXCIsIG1rKGRzLCBbXCJmb3JhbGxcIiwgXCItPlwiXSwgbWtfcHJlKFAuZnVuXywgVHlwLCBbVFBhdF0pKSksXG4gIChcInJlY1wiLCBtayhkcywgW1wicmVjXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIFR5cCwgW1RQYXRdKSkpLFxuICAoXG4gICAgXCJydWxlXCIsXG4gICAgbWsoZHMsIFtcInxcIiwgXCI9PlwiXSwgbWtfYmluJyhQLnJ1bGVfc2VwLCBSdWwsIEV4cCwgW1BhdF0sIEV4cCkpLFxuICApLFxuICAoXCJwaXBlbGluZVwiLCBta19pbmZpeChcInw+XCIsIEV4cCwgUC5lcXMpKSwgLy8gaW4gT0NhbWwsIHBpcGVsaW5lIHByZWNlZGVuY2UgaXMgaW4gc2FtZSBjbGFzcyBhcyAnPScsICc8JywgZXRjLlxuICAvLyBET1VCTEUgREVMSU1JVEVSU1xuICAoXCJmaWx0ZXJfaGlkZVwiLCBtayhkcywgW1wiaGlkZVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAoXCJmaWx0ZXJfZXZhbFwiLCBtayhkcywgW1wiZXZhbFwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAoXCJmaWx0ZXJfcGF1c2VcIiwgbWsoZHMsIFtcInBhdXNlXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9kZWJ1Z1wiLCBtayhkcywgW1wiZGVidWdcIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbRXhwXSkpKSxcbiAgLy8gVFJJUExFIERFTElNSVRFUlNcbiAgKFwibGV0X1wiLCBtayhkcywgW1wibGV0XCIsIFwiPVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtQYXQsIEV4cF0pKSksXG4gIChcbiAgICBcInR5cGVfYWxpYXNcIixcbiAgICBtayhkcywgW1widHlwZVwiLCBcIj1cIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbVFBhdCwgVHlwXSkpLFxuICApLFxuICAoXCJpZl9cIiwgbWsoZHMsIFtcImlmXCIsIFwidGhlblwiLCBcImVsc2VcIl0sIG1rX3ByZShQLmlmXywgRXhwLCBbRXhwLCBFeHBdKSkpLFxuXTtcblxubGV0IGdldDogU3RyaW5nLnQgPT4gdCA9XG4gIG5hbWUgPT4gVXRpbC5MaXN0VXRpbC5hc3NvY19lcnIobmFtZSwgZm9ybXMsIFwiRm9ybXMuZ2V0IDogXCIgKysgbmFtZSk7XG5cbmxldCBkZWxpbXM6IGxpc3QoVG9rZW4udCkgPVxuICBmb3Jtc1xuICB8PiBMaXN0LmZvbGRfbGVmdCgoYWNjLCAoXywge2xhYmVsLCBffTogdCkpID0+IHtsYWJlbCBAIGFjY30sIFtdKVxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGF0b21pY19tb2xkczogVG9rZW4udCA9PiBsaXN0KE1vbGQudCkgPVxuICBzID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgKHRlc3QsIG1vbGRzKSkpID0+IHRlc3QocykgPyBtb2xkcyBAIGFjYyA6IGFjYyxcbiAgICAgIFtdLFxuICAgICAgYXRvbWljX2Zvcm1zLFxuICAgICk7XG5cbmxldCBpc19hdG9taWMgPSB0ID0+IGF0b21pY19tb2xkcyh0KSAhPSBbXTtcblxubGV0IGlzX2RlbGltID0gdCA9PiBMaXN0Lm1lbSh0LCBkZWxpbXMpO1xuXG5sZXQgaXNfdmFsaWRfdG9rZW4gPSB0ID0+IGlzX2F0b21pYyh0KSB8fCBpc19zZWNvbmRhcnkodCkgfHwgaXNfZGVsaW0odCk7XG5cbmxldCBta19hdG9taWMgPSAoc29ydDogU29ydC50LCB0OiBUb2tlbi50KSA9PiB7XG4gIGFzc2VydChpc19hdG9taWModCkpO1xuICBtayhzcywgW3RdLCBNb2xkLihta19vcChzb3J0LCBbXSkpKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgV2hpdGVzcGFjZVxuICB8IENvbW1lbnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2Vjb25kYXJ5X2NvbnRlbnQgPVxuICB8IFdoaXRlc3BhY2Uoc3RyaW5nKVxuICB8IENvbW1lbnQoc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgY29udGVudDogc2Vjb25kYXJ5X2NvbnRlbnQsXG59O1xuXG5sZXQgY2xzX29mID0gKHM6IHQpOiBjbHMgPT5cbiAgc3dpdGNoIChzLmNvbnRlbnQpIHtcbiAgfCBXaGl0ZXNwYWNlKF8pID0+IFdoaXRlc3BhY2VcbiAgfCBDb21tZW50KF8pID0+IENvbW1lbnRcbiAgfTtcblxubGV0IG1rX3NwYWNlID0gaWQgPT4ge2NvbnRlbnQ6IFdoaXRlc3BhY2UoRm9ybS5zcGFjZSksIGlkfTtcblxubGV0IG1rX25ld2xpbmUgPSBpZCA9PiB7Y29udGVudDogV2hpdGVzcGFjZShcIlxcblwiKSwgaWR9O1xuXG5sZXQgY29uc3RydWN0X2NvbW1lbnQgPSBjb250ZW50ID0+XG4gIGlmIChTdHJpbmcuZXF1YWwoY29udGVudCwgXCIjXCIpKSB7XG4gICAgQ29tbWVudChcIiMjXCIpO1xuICB9IGVsc2Uge1xuICAgIENvbW1lbnQoY29udGVudCk7XG4gIH07XG5cbmxldCBpc19zcGFjZTogdCA9PiBib29sID1cbiAgdyA9PlxuICAgIHN3aXRjaCAody5jb250ZW50KSB7XG4gICAgfCBXaGl0ZXNwYWNlKHMpID0+IHMgPT0gRm9ybS5zcGFjZVxuICAgIHwgXyA9PiBmYWxzZVxuICAgIH07XG5cbmxldCBpc19saW5lYnJlYWs6IHQgPT4gYm9vbCA9XG4gIHcgPT5cbiAgICBzd2l0Y2ggKHcuY29udGVudCkge1xuICAgIHwgV2hpdGVzcGFjZShzKSA9PiBzID09IEZvcm0ubGluZWJyZWFrXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGNvbnRlbnRfaXNfY29tbWVudDogc2Vjb25kYXJ5X2NvbnRlbnQgPT4gYm9vbCA9XG4gIGNvbnRlbnQgPT5cbiAgICBzd2l0Y2ggKGNvbnRlbnQpIHtcbiAgICB8IENvbW1lbnQoXykgPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZVxuICAgIH07XG5cbmxldCBpc19jb21tZW50OiB0ID0+IGJvb2wgPVxuICB3ID0+XG4gICAgc3dpdGNoICh3LmNvbnRlbnQpIHtcbiAgICB8IENvbW1lbnQoXykgPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZVxuICAgIH07XG5cbi8vIFJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgV2hpdGVzcGFjZVxubGV0IGdldF9zdHJpbmc6IHNlY29uZGFyeV9jb250ZW50ID0+IHN0cmluZyA9XG4gIGNvbnRlbnQgPT5cbiAgICBzd2l0Y2ggKGNvbnRlbnQpIHtcbiAgICB8IENvbW1lbnQocylcbiAgICB8IFdoaXRlc3BhY2UocykgPT4gc1xuICAgIH07XG5cbmxldCBpZCA9IHcgPT4gdy5pZDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VnbWVudCA9IGxpc3QocGllY2UpXG5hbmQgcGllY2UgPVxuICB8IFRpbGUodGlsZSlcbiAgfCBHcm91dChHcm91dC50KVxuICB8IFNlY29uZGFyeShTZWNvbmRhcnkudClcbmFuZCB0aWxlID0ge1xuICAvLyBpbnZhcmlhbnRzOlxuICAvLyAtIGxlbmd0aChtb2xkLmluXykgKyAxID09IGxlbmd0aChsYWJlbClcbiAgLy8gLSBsZW5ndGgoc2hhcmRzKSA8PSBsZW5ndGgobGFiZWwpXG4gIC8vIC0gbGVuZ3RoKHNoYXJkcykgPT0gbGVuZ3RoKGNoaWxkcmVuKSArIDFcbiAgLy8gLSBzb3J0KHNoYXJkcykgPT0gc2hhcmRzXG4gIGlkOiBJZC50LFxuICBsYWJlbDogTGFiZWwudCxcbiAgbW9sZDogTW9sZC50LFxuICBzaGFyZHM6IGxpc3QoaW50KSxcbiAgY2hpbGRyZW46IGxpc3Qoc2VnbWVudCksXG59O1xuXG4vLyBUaGlzIGlzIGZvciBjb21tZW50IGluc2VydGlvblxubGV0IG1rX3NlY29uZGFyeSA9IChpZCwgY29udGVudCkgPT4gW1NlY29uZGFyeSh7aWQsIGNvbnRlbnR9KV07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFRvdWNoKElkLnQpXG4gIHwgRGVsZXRlKElkLnQpO1xuXG4vLyB1c2VkIHRvIHJlY29yZCBlZmZlY3RzIG92ZXIgdGhlIGNvdXJzZSBvZiBhIHNpbmdsZSBhY3Rpb25cbmxldCBzOiByZWYobGlzdCh0KSkgPSByZWYoW10pO1xubGV0IHNfY2xlYXIgPSAoKSA9PiBzIDo9IFtdO1xubGV0IHNfdG91Y2ggPSAoaWRzOiBsaXN0KElkLnQpKSA9PlxuICBzIDo9IExpc3QubWFwKGlkID0+IFRvdWNoKGlkKSwgaWRzKSBAIHNeO1xuXG5sZXQgc190b3VjaGVkID0gKGlkOiBJZC50KTogYm9vbCA9PiBMaXN0Lm1lbShUb3VjaChpZCksIHNeKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9ucyA9IGxpc3QoKFRva2VuLnQsIChsaXN0KFRva2VuLnQpLCBEaXJlY3Rpb24udCkpKTtcblxubGV0IGZvcm1zX2Fzc29jOiBsaXN0KChMYWJlbC50LCBsaXN0KE1vbGQudCkpKSA9XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgIChhY2MsIChfLCB7bGFiZWwsIG1vbGQsIF99OiBGb3JtLnQpKSA9PiB7XG4gICAgICBsZXQgbW9sZHMgPVxuICAgICAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGxhYmVsLCBhY2MpKSB7XG4gICAgICAgIHwgU29tZShvbGRfbW9sZHMpID0+IG9sZF9tb2xkcyBAIFttb2xkXVxuICAgICAgICB8IE5vbmUgPT4gW21vbGRdXG4gICAgICAgIH07XG4gICAgICBMaXN0LmNvbnMoKGxhYmVsLCBtb2xkcyksIExpc3QucmVtb3ZlX2Fzc29jKGxhYmVsLCBhY2MpKTtcbiAgICB9LFxuICAgIFtdLFxuICAgIEZvcm0uZm9ybXMsXG4gICk7XG5cbmxldCBnZXQgPSAobGFiZWw6IExhYmVsLnQpOiBsaXN0KE1vbGQudCkgPT5cbiAgc3dpdGNoIChsYWJlbCwgTGlzdC5hc3NvY19vcHQobGFiZWwsIGZvcm1zX2Fzc29jKSkge1xuICB8IChbdF0sIFNvbWUobW9sZHMpKSB3aGVuIEZvcm0uYXRvbWljX21vbGRzKHQpICE9IFtdID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiBkb2VzIHRoaXMgbWFrZSBzZW5zZT9cbiAgICBGb3JtLmF0b21pY19tb2xkcyh0KSBAIG1vbGRzXG4gIHwgKFt0XSwgTm9uZSkgd2hlbiBGb3JtLmF0b21pY19tb2xkcyh0KSAhPSBbXSA9PiBGb3JtLmF0b21pY19tb2xkcyh0KVxuICB8IChfLCBTb21lKG1vbGRzKSkgPT4gbW9sZHNcbiAgfCAoW3RdLCBOb25lKSA9PlxuICAgIC8qIEZvciB0b2tlbnMgd2hpY2ggYXJlIG5vdCBhc3NpZ25lZCBtb2xkcyBieSB0aGUgbGFuZ3VhZ2UgZGVmaW5pdGlvbixcbiAgICAgICBhc3NpbmcgYSBkZWZhdWx0ICdBbnknIG1vbGQsIHdoaWNoIGlzIGVpdGhlciBjb252ZXggb3IgY29uY2F2ZVxuICAgICAgIGRlcGVuZGluZyBvbiB0aGUgZmlyc3QgY2hhcmFjdGVyLiBUaGlzIGlzIGEgaGV1cmlzdGljIGF0IHRoZVxuICAgICAgIG1vbWVudCBhcyB3ZSBkb24ndCBjdXJyZW50bHkgcmlnb3JvdXNseSBkaXZpZGUgdG9rZW4gY2xhc3Nlc1xuICAgICAgIGZvciBvcGVyYXRvcnMgdnMgb3BlcmFuZHMsIGJ1dCBpcyBzb21ld2hhdCBsb2FkLWJlYXJpbmcgaW4gdGhhdFxuICAgICAgIHJlbW9sZGluZyBhcyBvbmUgaXMgdHlwaW5nIGluIGEgbXVsdGktY2hhcmFjdGVyIG9wZXJhdG9yIGNhbiBjYXVzZVxuICAgICAgIGphbmssIHdoaWNoIGlzIGFsbGV2aWF0ZWQgaWYgd2UgY29ycmVjdGx5IGd1ZXNzIHRoYXQgaXQgd2lsbFxuICAgICAgIGJlY29tZSBhbiBvcGVyYXRvci4gQWx0ZXJuYXRpdmVseSwgdGhpcyBjb3VsZCBiZSBiYXNlZCBvblxuICAgICAgIGxvZ2ljIHdoaWNoIGNoZWNrcyBpZiB0aGUgdG9rZW4gaXMgdGhlIHByZWZpeCBvZiB3aGF0ZXZlci4gKi9cbiAgICBzd2l0Y2ggKEZvcm0uaXNfcG90ZW50aWFsX29wZXJhbmQodCksIEZvcm0uaXNfcG90ZW50aWFsX29wZXJhdG9yKHQpKSB7XG4gICAgfCAodHJ1ZSwgZmFsc2UpID0+IFtNb2xkLm1rX29wKEFueSwgW10pXVxuICAgIHwgKGZhbHNlLCB0cnVlKSA9PiBbTW9sZC5ta19iaW4oUHJlY2VkZW5jZS5tYXgsIEFueSwgW10pXVxuICAgIHwgKHRydWUsIHRydWUpID0+XG4gICAgICBQcmludGYucHJpbnRmKFxuICAgICAgICBcIldhcm5pbmc6IE1vbGRzLmdldDogY2FuJ3QgZGVjaWRlIGlmIG9wZXJhbmQgb3Igb3BlcmF0b3I6ICclcydcXG5cIixcbiAgICAgICAgdCxcbiAgICAgICk7XG4gICAgICBbTW9sZC5ta19vcChBbnksIFtdKV07XG4gICAgfCAoZmFsc2UsIGZhbHNlKSA9PlxuICAgICAgLy9UT0RPKGFuZHJldyk6IHRoaXMgaXMgdHJpZ2dlcmVkIGluIGFsbCBpbnN0YW50IGV4cGFuZCBjYXNlcyAoW10oKXwsIGV0YylcbiAgICAgIC8vUHJpbnRmLnByaW50ZihcIldhcm5pbmc6IE1vbGRzLmdldDogdW5oYW5kbGVkIG1vbm86ICclcydcXG5cIiwgdCk7XG4gICAgICBbTW9sZC5ta19vcChBbnksIFtdKV1cbiAgICB9XG4gIHwgKGxibCwgTm9uZSkgPT5cbiAgICBQcmludGYucHJpbnRmKFxuICAgICAgXCJXYXJuaW5nOiBNb2xkcy5nZXQ6IHVuaGFuZGxlZCBsYWJlbDogJyVzJ1xcblwiLFxuICAgICAgU3RyaW5nLmNvbmNhdChcIiBcIiwgbGJsKSxcbiAgICApO1xuICAgIFtNb2xkLm1rX29wKEFueSwgW10pXTtcbiAgfTtcblxubGV0IGRlbGF5ZWRfZXhwYW5zaW9uczogZXhwYW5zaW9ucyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICAoKF8sIHtleHBhbnNpb24sIGxhYmVsLCBffTogRm9ybS50KSkgPT5cbiAgICAgIHN3aXRjaCAoZXhwYW5zaW9uLCBsYWJlbCkge1xuICAgICAgfCAoKERlbGF5ZWQsIERlbGF5ZWQpLCBbaGQsIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFtcbiAgICAgICAgICAoaGQsIChsYWJlbCwgRGlyZWN0aW9uLkxlZnQpKSxcbiAgICAgICAgICAoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKSxcbiAgICAgICAgXSlcbiAgICAgIHwgKChEZWxheWVkLCBfKSwgW2hkLCAuLi5fXSkgPT4gU29tZShbKGhkLCAobGFiZWwsIExlZnQpKV0pXG4gICAgICB8ICgoXywgRGVsYXllZCksIFtfLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSldKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH0sXG4gICAgRm9ybS5mb3JtcyxcbiAgKVxuICB8PiBMaXN0LmZsYXR0ZW5cbiAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbmxldCBpbnN0YW50X2V4cGFuc2lvbnM6IGV4cGFuc2lvbnMgPVxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgKChfLCB7ZXhwYW5zaW9uLCBsYWJlbCwgX306IEZvcm0udCkpID0+XG4gICAgICBzd2l0Y2ggKGV4cGFuc2lvbiwgbGFiZWwpIHtcbiAgICAgIHwgKChJbnN0YW50LCBJbnN0YW50KSwgW2hkLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbXG4gICAgICAgICAgKGhkLCAobGFiZWwsIERpcmVjdGlvbi5MZWZ0KSksXG4gICAgICAgICAgKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSksXG4gICAgICAgIF0pXG4gICAgICB8ICgoSW5zdGFudCwgXyksIFtoZCwgLi4uX10pID0+IFNvbWUoWyhoZCwgKGxhYmVsLCBMZWZ0KSldKVxuICAgICAgfCAoKF8sIEluc3RhbnQpLCBbXywgLi4uX10pID0+XG4gICAgICAgIFNvbWUoWyhMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpXSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9LFxuICAgIEZvcm0uZm9ybXMsXG4gIClcbiAgfD4gTGlzdC5mbGF0dGVuXG4gIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG5sZXQgZGVsYXllZF9leHBhbnNpb246IFRva2VuLnQgPT4gKGxpc3QoVG9rZW4udCksIERpcmVjdGlvbi50KSA9XG4gIHMgPT5cbiAgICAvKiBDb21wbGV0aW9ucyB3aGljaCBtdXN0IGJlIGRlZmVyZWQgYXMgdGhleSBhcmUgYW1iaWd1b3VzIHByZWZpeGVzICovXG4gICAgc3dpdGNoIChMaXN0LmFzc29jX29wdChzLCBkZWxheWVkX2V4cGFuc2lvbnMpKSB7XG4gICAgfCBTb21lKGV4cGFuc2lvbikgPT4gZXhwYW5zaW9uXG4gICAgfCBOb25lID0+IChbc10sIFJpZ2h0KVxuICAgIH07XG5cbmxldCBpbnN0YW50X2V4cGFuc2lvbjogVG9rZW4udCA9PiAobGlzdChUb2tlbi50KSwgRGlyZWN0aW9uLnQpID1cbiAgcyA9PlxuICAgIC8qIENvbXBsZXRpb25zIHdoaWNoIGNhbiBvciBtdXN0IGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5ICovXG4gICAgc3dpdGNoIChMaXN0LmFzc29jX29wdChzLCBpbnN0YW50X2V4cGFuc2lvbnMpKSB7XG4gICAgfCBTb21lKGV4cGFuc2lvbikgPT4gZXhwYW5zaW9uXG4gICAgfCBOb25lID0+IChbc10sIFJpZ2h0KVxuICAgIH07XG5cbmxldCBpc19kZWxheWVkID0ga3cgPT4gTGlzdC5sZW5ndGgoZGVsYXllZF9leHBhbnNpb24oa3cpIHw+IGZzdCkgPiAxO1xuXG5sZXQgYWxsb3dfbWVyZ2UgPSAobDogVG9rZW4udCwgcjogVG9rZW4udCk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4obCArKyByKTtcblxubGV0IGFsbG93X2FwcGVuZF9yaWdodCA9ICh0OiBUb2tlbi50LCBjaGFyOiBzdHJpbmcpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKHQgKysgY2hhcik7XG5cbmxldCBhbGxvd19hcHBlbmRfbGVmdCA9IChjaGFyOiBzdHJpbmcsIHQ6IFRva2VuLnQpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKHQgKysgY2hhcik7XG5cbmxldCBhbGxvd19pbnNlcnRpb24gPSAoX2NoYXI6IHN0cmluZywgX3Q6IFRva2VuLnQsIG5ld190OiBUb2tlbi50KTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbihuZXdfdCk7XG4iLCJvcGVuIFV0aWw7XG5pbmNsdWRlIEJhc2U7XG5cbmV4Y2VwdGlvbiBBbWJpZ3VvdXNfbW9sZHM7XG5leGNlcHRpb24gSW52YWxpZF9tb2xkO1xuZXhjZXB0aW9uIEVtcHR5X3RpbGU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHRpbGU7XG5cbmxldCBpZCA9IHQgPT4gdC5pZDtcblxubGV0IGlzX2NvbXBsZXRlID0gKHQ6IHQpID0+IExpc3QubGVuZ3RoKHQubGFiZWwpID09IExpc3QubGVuZ3RoKHQuc2hhcmRzKTtcblxubGV0IGxfc2hhcmQgPSB0ID0+XG4gIE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3RpbGUsIExpc3RVdGlsLmhkX29wdCh0LnNoYXJkcykpO1xubGV0IHJfc2hhcmQgPSB0ID0+XG4gIE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3RpbGUsIExpc3RVdGlsLmxhc3Rfb3B0KHQuc2hhcmRzKSk7XG5cbmxldCBoYXNfZW5kID0gKGQ6IERpcmVjdGlvbi50LCB0KSA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IGxfc2hhcmQodCkgPT0gMFxuICB8IFJpZ2h0ID0+IHJfc2hhcmQodCkgPT0gTGlzdC5sZW5ndGgodC5sYWJlbCkgLSAxXG4gIH07XG5sZXQgaGFzX2VuZHMgPSB0ID0+IGhhc19lbmQoTGVmdCwgdCkgJiYgaGFzX2VuZChSaWdodCwgdCk7XG5cbmxldCBuaWJzID0gKHQ6IHQpID0+IHtcbiAgbGV0IChsLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9bF9zaGFyZCh0KSwgdC5tb2xkKTtcbiAgbGV0IChfLCByKSA9IE1vbGQubmlicyh+aW5kZXg9cl9zaGFyZCh0KSwgdC5tb2xkKTtcbiAgKGwsIHIpO1xufTtcblxubGV0IHNoYXBlcyA9ICh0OiB0KSA9PiB7XG4gIGxldCAobCwgcikgPSBuaWJzKHQpO1xuICAobC5zaGFwZSwgci5zaGFwZSk7XG59O1xuXG5sZXQgdG9fcGllY2UgPSB0ID0+IFRpbGUodCk7XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSAoe21vbGQsIHNoYXJkcywgY2hpbGRyZW4sIF99OiB0KSA9PlxuICBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbilcbiAgfD4gQWJhLmFiYV90cmlwbGVzXG4gIHw+IExpc3QubWFwKCgobCwgY2hpbGQsIHIpKSA9PiB7XG4gICAgICAgbGV0IChfLCBsKSA9IE1vbGQubmlicyh+aW5kZXg9bCwgbW9sZCk7XG4gICAgICAgbGV0IChyLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9ciwgbW9sZCk7XG4gICAgICAgKGwuc29ydCA9PSByLnNvcnQgPyBsLnNvcnQgOiBBbnksIGNoaWxkKTtcbiAgICAgfSk7XG5cbmxldCBjb250YWluZWRfY2hpbGRyZW4gPSAodDogdCk6IGxpc3QoKHQsIEJhc2Uuc2VnbWVudCwgdCkpID0+XG4gIEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbilcbiAgfD4gQWJhLmFiYV90cmlwbGVzXG4gIHw+IExpc3QubWFwKCgobCwgY2hpbGQsIHIpKSA9PiB7XG4gICAgICAgbGV0IGwgPSB7Li4udCwgc2hhcmRzOiBbbF0sIGNoaWxkcmVuOiBbXX07XG4gICAgICAgbGV0IHIgPSB7Li4udCwgc2hhcmRzOiBbcl0sIGNoaWxkcmVuOiBbXX07XG4gICAgICAgKGwsIGNoaWxkLCByKTtcbiAgICAgfSk7XG5cbi8vIGxldCByZW1vbGQgPSAodDogdCk6IGxpc3QodCkgPT5cbi8vICAgTW9sZHMuZ2V0KHQubGFiZWwpIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLnQsIG1vbGR9KTtcblxubGV0IHNwbGl0X3NoYXJkcyA9IChpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcykgPT5cbiAgc2hhcmRzIHw+IExpc3QubWFwKGkgPT4ge2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzOiBbaV0sIGNoaWxkcmVuOiBbXX0pO1xuXG4vLyBwb3N0Y29uZDogb3V0cHV0IHNlZ21lbnQgaXMgbm9uZW1wdHlcbmxldCBkaXNhc3NlbWJsZSA9ICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIGNoaWxkcmVufTogdCk6IHNlZ21lbnQgPT4ge1xuICBsZXQgc2hhcmRzID0gc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCwgc2hhcmRzKTtcbiAgQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pXG4gIHw+IEFiYS5qb2luKHMgPT4gW3RvX3BpZWNlKHMpXSwgRnVuLmlkKVxuICB8PiBMaXN0LmNvbmNhdDtcbn07XG5cbmxldCBkaXNpbnRlZ3JhdGUgPSAoe2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBffTogdCk6IGxpc3QodGlsZSkgPT4ge1xuICBzcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMpO1xufTtcblxubGV0IHJlYXNzZW1ibGUgPSAobWF0Y2g6IEFiYS50KHQsIHNlZ21lbnQpKTogdCA9PiB7XG4gIGxldCB0ID0gQWJhLmhkKG1hdGNoKTtcbiAgbGV0IChzaGFyZHMsIGNoaWxkcmVuKSA9XG4gICAgbWF0Y2hcbiAgICB8PiBBYmEuZm9sZF9yaWdodChcbiAgICAgICAgICh0LCBjaGlsZCwgKHNoYXJkcywgY2hpbGRyZW4pKSA9PlxuICAgICAgICAgICAodC5zaGFyZHMgQCBzaGFyZHMsIHQuY2hpbGRyZW4gQCBbY2hpbGQsIC4uLmNoaWxkcmVuXSksXG4gICAgICAgICB0ID0+ICh0LnNoYXJkcywgdC5jaGlsZHJlbiksXG4gICAgICAgKTtcbiAgLy8gY2hlY2sgbGVuZ3Roc1xuICBsZXQgXyA9IEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKTtcbiAgYXNzZXJ0KExpc3Quc29ydChJbnQuY29tcGFyZSwgc2hhcmRzKSA9PSBzaGFyZHMpO1xuICB7XG4gICAgaWQ6IHQuaWQsXG4gICAgbGFiZWw6IHQubGFiZWwsXG4gICAgLy8gbm90ZTogdGhpcyB0aHJvd3MgYXdheSBtb2xkcyBvbiB0aWxlcyBvdGhlciB0aGFuIGhkLlxuICAgIC8vIGluIGNhc2VzIHdoZXJlIHRob3NlIG1vbGRzIGRpZmZlciwgcmVhc3NlbWJsZWQgdGlsZVxuICAgIC8vIHNob3VsZCB1bmRlcmdvIHN1YnNlcXVlbnQgcmVtb2xkaW5nLlxuICAgIG1vbGQ6IHQubW9sZCxcbiAgICBzaGFyZHMsXG4gICAgY2hpbGRyZW4sXG4gIH07XG59O1xuXG5sZXQgcG9wX2wgPSAodGlsZTogdCk6IChwaWVjZSwgc2VnbWVudCkgPT5cbiAgZGlzYXNzZW1ibGUodGlsZSlcbiAgfD4gTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0XG4gIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3RpbGUpO1xubGV0IHBvcF9yID0gKHRpbGU6IHQpOiAoc2VnbWVudCwgcGllY2UpID0+XG4gIGRpc2Fzc2VtYmxlKHRpbGUpXG4gIHw+IExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0XG4gIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3RpbGUpO1xuXG4vLyBsZXQgdW5pcXVlX21vbGQgPSBfID0+IGZhaWx3aXRoKFwidG9kbyB1bmlxdWVfbW9sZFwiKTtcblxuLy8gbW9kdWxlIE1hdGNoID0ge1xuLy8gICB0eXBlIHRpbGUgPSB0O1xuXG4vLyAgIG1vZHVsZSBNYWtlID0gKE86IE9yaWVudGF0aW9uLlMpID0+IHtcbi8vICAgICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4vLyAgICAgdHlwZSB0ID0gQWJhLnQoU2hhcmQudCwgc2VnbWVudCk7XG5cbi8vICAgICBsZXQgaWQgPSAobTogdCkgPT4gQWJhLmhkKG0pLnRpbGVfaWQ7XG5cbi8vICAgICBsZXQgbGFiZWwgPSAobTogdCkgPT4gc25kKEFiYS5oZChtKS5sYWJlbCk7XG5cbi8vICAgICBsZXQgc2hhcmRzOiB0ID0+IGxpc3QoU2hhcmQudCkgPSBBYmEuZ2V0X2FzO1xuLy8gICAgIC8vIGxldCBjaGlsZHJlbjogdCA9PiBsaXN0KHNlZ21lbnQpID0gQWJhLmdldF9icztcblxuLy8gICAgIGxldCBsZW5ndGggPSAobTogdCkgPT4gTGlzdC5sZW5ndGgoc2hhcmRzKG0pKTtcblxuLy8gICAgIGxldCBtb2xkID0gKG06IHQpID0+IHtcbi8vICAgICAgIGxldCBtb2xkcyA9XG4vLyAgICAgICAgIHN3aXRjaCAoU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMobSkpKSB7XG4vLyAgICAgICAgIHwgW10gPT5cbi8vICAgICAgICAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiB1cG9uIGNvbnN0cnVjdC9kZXN0cnVjdCxcbi8vICAgICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGV2ZXJ5dGhpbmcgd2lsbCBiZSBzdWJzZXF1ZW50bHkgcmVtb2xkZWRcbi8vICAgICAgICAgICBNb2xkcy5nZXQobGFiZWwobSkpXG4vLyAgICAgICAgIHwgW18sIC4uLl9dIGFzIG1vbGRzID0+IG1vbGRzXG4vLyAgICAgICAgIH07XG4vLyAgICAgICBhc3NlcnQobW9sZHMgIT0gW10pO1xuLy8gICAgICAgTGlzdC5oZChtb2xkcyk7XG4vLyAgICAgfTtcblxuLy8gICAgIGxldCBjaGlsZHJlbiA9IG0gPT5cbi8vICAgICAgIExpc3QubWFwKExpc3RVdGlsLnJldl9pZihPLmQgPT0gTGVmdCksIEFiYS5nZXRfYnMobSkpO1xuXG4vLyAgICAgbGV0IGpvaW4gPSAobTogdCk6IHNlZ21lbnQgPT5cbi8vICAgICAgIG0gfD4gQWJhLmpvaW4ocyA9PiBbU2hhcmQudG9fcGllY2UocyldLCBGdW4uaWQpIHw+IExpc3QuZmxhdHRlbjtcblxuLy8gICAgIGxldCBjb21wbGV0ZSA9IChtOiB0KTogb3B0aW9uKHRpbGUpID0+IHtcbi8vICAgICAgIGxldCBpZCA9IGlkKG0pO1xuLy8gICAgICAgbGV0IGxhYmVsID0gbGFiZWwobSk7XG4vLyAgICAgICBsZXQgbW9sZCA9IG1vbGQobSk7XG4vLyAgICAgICBsZW5ndGgobSkgPT0gTGFiZWwubGVuZ3RoKGxhYmVsKVxuLy8gICAgICAgICA/IHtcbi8vICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBMaXN0VXRpbC5yZXZfaWYoTy5kID09IExlZnQsIGNoaWxkcmVuKG0pKTtcbi8vICAgICAgICAgICBTb21lKEJhc2UuVGlsZS57aWQsIGxhYmVsLCBtb2xkLCBjaGlsZHJlbn0pO1xuLy8gICAgICAgICB9XG4vLyAgICAgICAgIDogTm9uZTtcbi8vICAgICB9O1xuLy8gICB9O1xuLy8gfTtcbiIsIi8vIG9wZW4gVXRpbDtcbmluY2x1ZGUgQmFzZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gcGllY2U7XG5cbmxldCBzZWNvbmRhcnkgPSB3ID0+IFNlY29uZGFyeSh3KTtcbmxldCBncm91dCA9IGcgPT4gR3JvdXQoZyk7XG5sZXQgdGlsZSA9IHQgPT4gVGlsZSh0KTtcblxubGV0IGdldCA9IChmX3csIGZfZywgZl90LCBwOiB0KSA9PlxuICBzd2l0Y2ggKHApIHtcbiAgfCBTZWNvbmRhcnkodykgPT4gZl93KHcpXG4gIHwgR3JvdXQoZykgPT4gZl9nKGcpXG4gIHwgVGlsZSh0KSA9PiBmX3QodClcbiAgfTtcblxubGV0IGlkID0gZ2V0KFNlY29uZGFyeS5pZCwgR3JvdXQuaWQsIFRpbGUuaWQpO1xuXG5sZXQgc29ydCA9XG4gIGdldChcbiAgICBfID0+IChTb3J0LkFueSwgW10pLFxuICAgIF8gPT4gKFNvcnQuQW55LCBbXSksXG4gICAgdCA9PiAodC5tb2xkLm91dCwgdC5tb2xkLmluXyksXG4gICk7XG5cbmxldCBuaWJzID1cbiAgZ2V0KFxuICAgIF8gPT4gTm9uZSxcbiAgICBnID0+IHtcbiAgICAgIGxldCAobCwgcikgPSBHcm91dC5zaGFwZXMoZyk7XG4gICAgICBTb21lKE5pYi4oe3NoYXBlOiBsLCBzb3J0OiBBbnl9LCB7c2hhcGU6IHIsIHNvcnQ6IEFueX0pKTtcbiAgICB9LFxuICAgIHQgPT4gU29tZShUaWxlLm5pYnModCkpLFxuICApO1xuXG5sZXQgbmliX3NvcnRzID1cbiAgZ2V0KFxuICAgIF8gPT4gKFNvcnQuQW55LCBTb3J0LkFueSksXG4gICAgXyA9PiAoU29ydC5BbnksIFNvcnQuQW55KSxcbiAgICB0ID0+IHtcbiAgICAgIGxldCAobCwgcikgPSBUaWxlLm5pYnModCk7XG4gICAgICAobC5zb3J0LCByLnNvcnQpO1xuICAgIH0sXG4gICk7XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSBnZXQoXyA9PiBbXSwgXyA9PiBbXSwgVGlsZS5zb3J0ZWRfY2hpbGRyZW4pO1xubGV0IGNoaWxkcmVuID0gcCA9PiBzb3J0ZWRfY2hpbGRyZW4ocCkgfD4gTGlzdC5zcGxpdCB8PiBzbmQ7XG5cbi8vIGxldCBpc19iYWxhbmNlZCA9XG4vLyAgIGZ1blxuLy8gICB8IFNoYXJkKF8pID0+IGZhbHNlXG4vLyAgIHwgU2Vjb25kYXJ5KF8pXG4vLyAgIHwgR3JvdXQoXylcbi8vICAgfCBUaWxlKF8pID0+IHRydWU7XG5cbmxldCBwb3BfbCA9IChwOiB0KTogKHQsIHNlZ21lbnQpID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gVGlsZS5wb3BfbCh0KVxuICB8IEdyb3V0KF8pXG4gIHwgU2Vjb25kYXJ5KF8pID0+IChwLCBbXSlcbiAgfTtcbmxldCBwb3BfciA9IChwOiB0KTogKHNlZ21lbnQsIHQpID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gVGlsZS5wb3Bfcih0KVxuICB8IEdyb3V0KF8pXG4gIHwgU2Vjb25kYXJ5KF8pID0+IChbXSwgcClcbiAgfTtcblxubGV0IGRpc2Fzc2VtYmxlID0gKHA6IHQpOiBzZWdtZW50ID0+XG4gIHN3aXRjaCAocCkge1xuICB8IEdyb3V0KF8pXG4gIHwgU2Vjb25kYXJ5KF8pID0+IFtwXVxuICB8IFRpbGUodCkgPT4gVGlsZS5kaXNhc3NlbWJsZSh0KVxuICB9O1xuXG4vLyBsZXQgcmVtb2xkID0gKHA6IHQpID0+XG4vLyAgIHN3aXRjaCAocCkge1xuLy8gICB8IEdyb3V0KF8pXG4vLyAgIHwgU2Vjb25kYXJ5KF8pID0+IFtwXVxuLy8gICB8IFRpbGUodCkgPT4gTGlzdC5tYXAodGlsZSwgVGlsZS5yZW1vbGQodCkpXG4vLyAgIH07XG5cbmxldCBzaGFwZXMgPVxuICBnZXQoXyA9PiBOb25lLCBnID0+IFNvbWUoR3JvdXQuc2hhcGVzKGcpKSwgdCA9PiBTb21lKFRpbGUuc2hhcGVzKHQpKSk7XG5cbmxldCBpc19ncm91dDogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgR3JvdXQoXykgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbmxldCBpc19zZWNvbmRhcnk6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFNlY29uZGFyeShfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGlzX3RpbGU6IHQgPT4gb3B0aW9uKFRpbGUudCkgPVxuICBmdW5cbiAgfCBUaWxlKHQpID0+IFNvbWUodClcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBsYWJlbDogdCA9PiBvcHRpb24oTGFiZWwudCkgPVxuICBmdW5cbiAgfCBUaWxlKHtsYWJlbCwgX30pID0+IFNvbWUobGFiZWwpXG4gIHwgXyA9PiBOb25lO1xuXG5sZXQgbW9ub3RpbGU6IHQgPT4gb3B0aW9uKFRva2VuLnQpID1cbiAgZnVuXG4gIHwgVGlsZSh7bGFiZWw6IFt0XSwgX30pID0+IFNvbWUodClcbiAgfCBTZWNvbmRhcnkodykgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudCh3KSA9PlxuICAgIFNvbWUoU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KSlcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBoYXNfZW5kcyA9IGdldChfID0+IHRydWUsIF8gPT4gdHJ1ZSwgVGlsZS5oYXNfZW5kcyk7XG5cbmxldCBpc19jb21wbGV0ZTogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgVGlsZSh0KSA9PiBUaWxlLmlzX2NvbXBsZXRlKHQpXG4gIHwgXyA9PiB0cnVlO1xuXG5sZXQgZ2V0X291dHNpZGVfc29ydHMgPSAofmRlZmF1bHRfc29ydD1Tb3J0LkFueSwgcDogdCk6IGxpc3QoU29ydC50KSA9PlxuICAvL1RPRE86IERhdmlkIHBsZWFzZSByZXZpZXcgdGhpc1xuICBzd2l0Y2ggKHApIHtcbiAgfCBTZWNvbmRhcnkoXykgPT4gW11cbiAgfCBHcm91dCh7c2hhcGU6IENvbnZleCwgX30pID0+IFtdXG4gIHwgR3JvdXQoe3NoYXBlOiBDb25jYXZlLCBffSkgPT4gW2RlZmF1bHRfc29ydCwgZGVmYXVsdF9zb3J0XVxuICB8IFRpbGUoe3NoYXJkczogXywgX30gYXMgdCkgd2hlbiAhVGlsZS5pc19jb21wbGV0ZSh0KSA9PlxuICAgIC8vIFRPRE8oYW5kcmV3KTogYmV0dGVyIGluY29tcGxldGUgdGlsZSBoYW5kbGluZ1xuICAgIC8vIE5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHNoYXBlIG9mIGluY29tcGxldGUgdGlsZSBpc1xuICAgIFtdXG4gIHwgVGlsZSh0KSA9PlxuICAgIGxldCAoc29ydF9sLCBzb3J0X3IpID0gbmliX3NvcnRzKHApO1xuICAgIHN3aXRjaCAoKHQubW9sZC5uaWJzIHw+IGZzdCkuc2hhcGUsICh0Lm1vbGQubmlicyB8PiBzbmQpLnNoYXBlKSB7XG4gICAgfCAoQ29udmV4LCBDb252ZXgpID0+IFtdXG4gICAgfCAoQ29udmV4LCBDb25jYXZlKF8pKSA9PiBbc29ydF9yXVxuICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT4gW3NvcnRfbF1cbiAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PiBbc29ydF9sLCBzb3J0X3JdXG4gICAgfTtcbiAgfTtcblxubGV0IG1vbGRfb2YgPSAofnNoYXBlPU5pYi5TaGFwZS5Db252ZXgsIHA6IHQpID0+XG4gIC8vIFRPRE8oZCkgZml4IHNvcnRzXG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gdC5tb2xkXG4gIHwgR3JvdXQoZykgPT4gTW9sZC5vZl9ncm91dChnLCBBbnkpXG4gIHwgU2Vjb25kYXJ5KF8pID0+IE1vbGQub2Zfc2Vjb25kYXJ5KHtzb3J0OiBBbnksIHNoYXBlfSlcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgT3Aocm9vdClcbiAgfCBQcmUocm9vdCwgdClcbiAgfCBQb3N0KHQsIHJvb3QpXG4gIHwgQmluKHQsIHJvb3QsIHQpXG5hbmQgcm9vdCA9IEFiYS50KGludCwgdCk7XG5cbi8vIGxldCByZWMgc2l6ZSA9XG4vLyAgIGZ1blxuLy8gICB8IE9wKF8pID0+IDFcbi8vICAgfCBQcmUoXywgcikgPT4gMSArIHNpemUocilcbi8vICAgfCBQb3N0KGwsIF8pID0+IHNpemUobCkgKyAxXG4vLyAgIHwgQmluKGwsIF8sIHIpID0+IHNpemUobCkgKyAxICsgc2l6ZShyKTtcblxuLy8gVE9ETyhkKTogcmVuYW1lIHRvIHJlZmxlY3QgYWJhXG5sZXQgcm9vdCA9XG4gIGZ1blxuICB8IE9wKHIpXG4gIHwgUHJlKHIsIF8pXG4gIHwgUG9zdChfLCByKVxuICB8IEJpbihfLCByLCBfKSA9PiByO1xuXG4vLyBsZXQgY2hpbGRyZW4gPVxuLy8gICBmdW5cbi8vICAgfCBPcChfKSA9PiBbXVxuLy8gICB8IFByZShfLCBza2VsKSA9PiBbKERpcmVjdGlvbi5SaWdodCwgc2tlbCldXG4vLyAgIHwgUG9zdChza2VsLCBfKSA9PiBbKExlZnQsIHNrZWwpXVxuLy8gICB8IEJpbihsLCBfLCByKSA9PiBbKExlZnQsIGwpLCAoUmlnaHQsIHIpXTtcblxuLy8gcmV0dXJucyBpbmNsdXNpdmUgbG93ZXIgYm91bmQsIGV4Y2x1c2l2ZSB1cHBlciBib3VuZFxuLy8gbGV0IHJlYyByYW5nZSA9XG4vLyAgIGZ1blxuLy8gICB8IE9wKG4pID0+IChuLCBuICsgMSlcbi8vICAgfCBQcmUobiwgcikgPT4gKG4sIHNuZChyYW5nZShyKSkpXG4vLyAgIHwgUG9zdChsLCBuKSA9PiAoZnN0KHJhbmdlKGwpKSwgbiArIDEpXG4vLyAgIHwgQmluKGwsIF8sIHIpID0+IChmc3QocmFuZ2UobCkpLCBzbmQocmFuZ2UocikpKTtcblxuLy8gbGV0IHJlYyBza2VsX2F0ID0gKG4sIHNrZWwpID0+XG4vLyAgIHN3aXRjaCAoc2tlbCkge1xuLy8gICB8IE9wKG0pID0+IG4gPT0gbSA/IHNrZWwgOiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiU2tlbC5za2VsX2F0XCIpKVxuLy8gICB8IFByZShtLCByKSA9PiBuID09IG0gPyBza2VsIDogc2tlbF9hdChuLCByKVxuLy8gICB8IFBvc3QobCwgbSkgPT4gbiA9PSBtID8gc2tlbCA6IHNrZWxfYXQobiwgbClcbi8vICAgfCBCaW4obCwgbSwgcikgPT5cbi8vICAgICBpZiAobiA8IG0pIHtcbi8vICAgICAgIHNrZWxfYXQobiwgbCk7XG4vLyAgICAgfSBlbHNlIGlmIChuID4gbSkge1xuLy8gICAgICAgc2tlbF9hdChuLCByKTtcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgc2tlbDtcbi8vICAgICB9XG4vLyAgIH07XG5cbmV4Y2VwdGlvbiBJbnB1dF9jb250YWluc19zZWNvbmRhcnk7XG5leGNlcHRpb24gTm9uY29udmV4X3NlZ21lbnQ7XG5cbltAZGVyaXZpbmcgc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pXVxudHlwZSBpcCA9IChpbnQsIFBpZWNlLnQpO1xuXG50eXBlIHJlbCA9XG4gIHwgTHRcbiAgfCBFcVxuICB8IEd0O1xuXG5sZXQgcmVsID0gKHAxOiBQaWVjZS50LCBwMjogUGllY2UudCk6IG9wdGlvbihyZWwpID0+XG4gIHN3aXRjaCAocDEsIHAyKSB7XG4gIHwgKFNlY29uZGFyeShfKSwgXylcbiAgfCAoXywgU2Vjb25kYXJ5KF8pKSA9PiBOb25lXG4gIHwgKEdyb3V0KHtzaGFwZSwgX30pLCBfKSA9PlxuICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICB8IENvbnZleCA9PiBTb21lKEd0KVxuICAgIHwgQ29uY2F2ZSA9PiBTb21lKEx0KVxuICAgIH1cbiAgfCAoXywgR3JvdXQoe3NoYXBlLCBffSkpID0+XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgQ29udmV4ID0+IFNvbWUoTHQpXG4gICAgfCBDb25jYXZlID0+IFNvbWUoR3QpXG4gICAgfVxuICB8IChUaWxlKHQxKSwgVGlsZSh0MikpID0+XG4gICAgb3BlbiBMYWJlbHM7XG4gICAgbGV0IGxibDEgPSAoPT0pKHQxLmxhYmVsKTtcbiAgICBsZXQgbGJsMiA9ICg9PSkodDIubGFiZWwpO1xuICAgIGxldCBlcSA9XG4gICAgICBbXG4gICAgICAgIGxibDEoY2FzZSkgJiYgbGJsMihydWxlKSxcbiAgICAgICAgbGJsMShydWxlKSAmJiBsYmwyKHJ1bGUpLFxuICAgICAgICBsYmwxKGNvbW1hKSAmJiBsYmwyKGNvbW1hKSAmJiB0MS5tb2xkID09IHQyLm1vbGQsXG4gICAgICAgIGxibDEoW1wiK1wiXSkgJiYgbGJsMihbXCIrXCJdKSAmJiB0MS5tb2xkID09IHQyLm1vbGQsXG4gICAgICBdXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdCgofHwpLCBmYWxzZSk7XG4gICAgaWYgKGVxKSB7XG4gICAgICBTb21lKEVxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IChfLCByMSkgPSBUaWxlLnNoYXBlcyh0MSk7XG4gICAgICBsZXQgKGwyLCBfKSA9IFRpbGUuc2hhcGVzKHQyKTtcbiAgICAgIHN3aXRjaCAocjEsIGwyKSB7XG4gICAgICB8IChDb252ZXgsIENvbnZleCkgPT4gTm9uZVxuICAgICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiBTb21lKEx0KVxuICAgICAgfCAoQ29udmV4LCBDb25jYXZlKF8pKSA9PiBTb21lKEd0KVxuICAgICAgfCAoQ29uY2F2ZShwKSwgQ29uY2F2ZShwJykpID0+XG4gICAgICAgIGlmIChwIDwgcCcpIHtcbiAgICAgICAgICBTb21lKEx0KTtcbiAgICAgICAgfSBlbHNlIGlmIChwID4gcCcpIHtcbiAgICAgICAgICBTb21lKEd0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKFByZWNlZGVuY2UuYXNzb2NpYXRpdml0eShwKSkge1xuICAgICAgICAgIHwgU29tZShMZWZ0KSA9PiBTb21lKEd0KVxuICAgICAgICAgIHwgU29tZShSaWdodCkgPT4gU29tZShMdClcbiAgICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgIC8vIG1heSB3YW50IHRvIG1ha2UgdGhpcyBTb21lKEVxKVxuICAgICAgICAgICAgLy8gZm9yIHRoaW5ncyBsaWtlIGNvbW1hIGJ1dCBkb24ndFxuICAgICAgICAgICAgLy8gd2FudCB0byBib3RoZXIgd2l0aCBtb2xkIGNvbmNlcm5zIGhlcmVcbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbm1vZHVsZSBTdGFja3MgPSB7XG4gIFtAZGVyaXZpbmcgc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pXVxuICB0eXBlIHNrZWwgPSB0O1xuICBbQGRlcml2aW5nIHNob3coe3dpdGhfcGF0aDogZmFsc2V9KV1cbiAgdHlwZSB0ID0ge1xuICAgIG91dHB1dDogbGlzdChza2VsKSxcbiAgICBzaHVudGVkOiBsaXN0KGlwKSxcbiAgfTtcblxuICBsZXQgZW1wdHkgPSB7b3V0cHV0OiBbXSwgc2h1bnRlZDogW119O1xuXG4gIGxldCByZWMgcG9wX2NoYWluID1cbiAgICAgICAgICAofnBvcHBlZD1bXSwgc2h1bnRlZDogbGlzdChpcCkpOiAobGlzdChpcCksIGxpc3QoaXApKSA9PlxuICAgIHN3aXRjaCAoc2h1bnRlZCkge1xuICAgIHwgW10gPT4gKHBvcHBlZCwgc2h1bnRlZClcbiAgICB8IFtoZCwgLi4udGxdID0+XG4gICAgICBzd2l0Y2ggKHBvcHBlZCkge1xuICAgICAgfCBbXSA9PiBwb3BfY2hhaW4ofnBvcHBlZD1baGRdLCB0bClcbiAgICAgIHwgW3AsIC4uLl9dID0+XG4gICAgICAgIHN3aXRjaCAocmVsKHNuZChoZCksIHNuZChwKSkpIHtcbiAgICAgICAgfCBTb21lKEVxKSA9PiBwb3BfY2hhaW4ofnBvcHBlZD1baGQsIC4uLnBvcHBlZF0sIHRsKVxuICAgICAgICB8IF8gPT4gKHBvcHBlZCwgc2h1bnRlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IHNoYXBlcyA9IHAgPT5cbiAgICBQaWVjZS5zaGFwZXMocCkgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoSW5wdXRfY29udGFpbnNfc2Vjb25kYXJ5KTtcblxuICBsZXQgc2hhcGVzX29mX2NoYWluID1cbiAgICAgIChjaGFpbjogbGlzdChpcCkpOiBvcHRpb24oKE5pYi5TaGFwZS50LCBOaWIuU2hhcGUudCkpID0+XG4gICAgc3dpdGNoIChjaGFpbiwgTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoY2hhaW4pKSB7XG4gICAgfCAoWyhfLCBmaXJzdCksIC4uLl9dLCBTb21lKChfLCAoXywgbGFzdCkpKSkgPT5cbiAgICAgIGxldCAobCwgXykgPSBzaGFwZXMoZmlyc3QpO1xuICAgICAgbGV0IChfLCByKSA9IHNoYXBlcyhsYXN0KTtcbiAgICAgIFNvbWUoKGwsIHIpKTtcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG5cbiAgbGV0IHJlYyBwdXNoX291dHB1dCA9ICh+cHJlYzogb3B0aW9uKFByZWNlZGVuY2UudCk9Pywgc3RhY2tzOiB0KTogdCA9PiB7XG4gICAgbGV0IChjaGFpbiwgc2h1bnRlZCkgPSBwb3BfY2hhaW4oc3RhY2tzLnNodW50ZWQpO1xuICAgIHN3aXRjaCAocHJlYywgc2hhcGVzX29mX2NoYWluKGNoYWluKSkge1xuICAgIHwgKFNvbWUocHJlYyksIFNvbWUoKF8sIENvbmNhdmUocHJlYycpKSkpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBQcmVjZWRlbmNlLmNvbXBhcmUocHJlYycsIHByZWMpIDwgMFxuICAgICAgICAgIHx8IFByZWNlZGVuY2UuY29tcGFyZShwcmVjJywgcHJlYykgPT0gMFxuICAgICAgICAgICYmIFByZWNlZGVuY2UuYXNzb2NpYXRpdml0eShwcmVjJykgIT0gU29tZShMZWZ0KSA9PiBzdGFja3NcbiAgICB8IChfLCBOb25lKSA9PiBzdGFja3NcbiAgICB8IChfLCBTb21lKChsLCByKSkpID0+XG4gICAgICBsZXQgaXMgPSBMaXN0Lm1hcChmc3QsIGNoYWluKTtcbiAgICAgIGxldCBzcGxpdF9raWRzID0gbiA9PlxuICAgICAgICB0cnkoTGlzdFV0aWwuc3BsaXRfbihuLCBzdGFja3Mub3V0cHV0KSB8PiBQYWlyVXRpbC5tYXBfZnN0KExpc3QucmV2KSkge1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBwcmludF9lbmRsaW5lKHNob3coc3RhY2tzKSk7XG4gICAgICAgICAgZmFpbHdpdGgoXCJTa2VsLnB1c2hfb3V0cHV0OiBzcGxpdF9raWRzOiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9O1xuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIHN3aXRjaCAobCwgcikge1xuICAgICAgICB8IChDb252ZXgsIENvbnZleCkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSAtIDEpO1xuICAgICAgICAgIFtPcChBYmEubWsoaXMsIGtpZHMpKSwgLi4ub3V0cHV0XTtcbiAgICAgICAgfCAoQ29udmV4LCBDb25jYXZlKF8pKSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pKTtcbiAgICAgICAgICBsZXQgKGtpZHMsIHIpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChraWRzKTtcbiAgICAgICAgICBbUHJlKEFiYS5tayhpcywga2lkcyksIHIpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikpO1xuICAgICAgICAgIGxldCAobCwga2lkcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChraWRzKTtcbiAgICAgICAgICBbUG9zdChsLCBBYmEubWsoaXMsIGtpZHMpKSwgLi4ub3V0cHV0XTtcbiAgICAgICAgfCAoQ29uY2F2ZShfKSwgQ29uY2F2ZShfKSkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSArIDEpO1xuICAgICAgICAgIGxldCAobCwga2lkcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChraWRzKTtcbiAgICAgICAgICBsZXQgKGtpZHMsIHIpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChraWRzKTtcbiAgICAgICAgICBbQmluKGwsIEFiYS5tayhpcywga2lkcyksIHIpLCAuLi5vdXRwdXRdO1xuICAgICAgICB9O1xuICAgICAgcHVzaF9vdXRwdXQofnByZWM/LCB7c2h1bnRlZCwgb3V0cHV0fSk7XG4gICAgfTtcbiAgfTtcblxuICBsZXQgcHVzaF9zaHVudGVkID0gKChfLCBwKSBhcyBpcDogaXAsIHN0YWNrczogdCk6IHQgPT4ge1xuICAgIGxldCAobCwgXykgPSBzaGFwZXMocCk7XG4gICAgbGV0IHN0YWNrcyA9XG4gICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgIHwgQ29udmV4ID0+IHN0YWNrc1xuICAgICAgfCBDb25jYXZlKHByZWMpID0+IHB1c2hfb3V0cHV0KH5wcmVjLCBzdGFja3MpXG4gICAgICB9O1xuICAgIHsuLi5zdGFja3MsIHNodW50ZWQ6IFtpcCwgLi4uc3RhY2tzLnNodW50ZWRdfTtcbiAgfTtcblxuICBsZXQgZmluaXNoID0gc3RhY2tzID0+IHB1c2hfb3V0cHV0KHN0YWNrcyk7XG59O1xuXG5sZXQgbWsgPSAoc2VnOiBsaXN0KGlwKSk6IHQgPT4ge1xuICBsZXQgc3RhY2tzID1cbiAgICBzZWdcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChGdW4uZmxpcChTdGFja3MucHVzaF9zaHVudGVkKSwgU3RhY2tzLmVtcHR5KVxuICAgIHw+IFN0YWNrcy5maW5pc2g7XG4gIExpc3RVdGlsLmhkX29wdChzdGFja3Mub3V0cHV0KSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShOb25jb252ZXhfc2VnbWVudCk7XG59O1xuIiwib3BlbiBVdGlsO1xuXG5leGNlcHRpb24gRW1wdHlfc2VnbWVudDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gQmFzZS5zZWdtZW50O1xuXG5sZXQgZW1wdHkgPSBbXTtcbmxldCBjb25zID0gTGlzdC5jb25zO1xubGV0IGNvbmNhdCA9IExpc3QuY29uY2F0O1xubGV0IGZvbGRfcmlnaHQgPSBMaXN0LmZvbGRfcmlnaHQ7XG5sZXQgcmV2ID0gTGlzdC5yZXY7XG5cbmxldCBvZl90aWxlID0gdCA9PiBbVGlsZS50b19waWVjZSh0KV07XG5cbmxldCBuaWJzID0gdGlsZXMgPT5cbiAgc3dpdGNoICh0aWxlcywgTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQodGlsZXMpKSB7XG4gIHwgKFtdLCBfKVxuICB8IChfLCBOb25lKSA9PiBOb25lXG4gIHwgKFtfZmlyc3QsIC4uLl9dLCBTb21lKChfLCBfbGFzdCkpKSA9PiBmYWlsd2l0aChcInRvZG8gVGlsZXMubmlic1wiKVxuICB9O1xuXG5sZXQgaW5jb21wbGV0ZV90aWxlcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgd2hlbiAhVGlsZS5pc19jb21wbGV0ZSh0KSA9PiBTb21lKHQpXG4gICAgfCBfID0+IE5vbmUsXG4gICk7XG5sZXQgdGlsZXMgPVxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQpID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgKTtcblxubGV0IGNvbnZleF9ncm91dCA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLkdyb3V0KGcpIHdoZW4gZy5zaGFwZSA9PSBDb252ZXggPT4gU29tZShnKVxuICAgIHwgXyA9PiBOb25lLFxuICApO1xuXG5sZXQgY29udGFpbnNfbWF0Y2hpbmcgPSAodDogVGlsZS50KSA9PlxuICBMaXN0LmV4aXN0cyhcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCcpID0+IHQnLmlkID09IHQuaWRcbiAgICB8IF8gPT4gZmFsc2UsXG4gICk7XG5cbmxldCByZW1vdmVfbWF0Y2hpbmcgPSAodDogVGlsZS50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQnKSB3aGVuIHQnLmlkID09IHQuaWQgPT4gTm9uZVxuICAgIHwgcCA9PiBTb21lKHApLFxuICApO1xuXG5sZXQgc25vYyA9ICh0aWxlcywgdGlsZSkgPT4gdGlsZXMgQCBbdGlsZV07XG5cbi8vIGxldCBpc19iYWxhbmNlZCA9IExpc3QuZm9yX2FsbChQaWVjZS5pc19iYWxhbmNlZCk7XG5cbmxldCBzaGFwZV9hZmZpeCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCBhZmZpeDogdCwgcjogTmliLlNoYXBlLnQpXG4gICAgOiAoQWJhLnQobGlzdChTZWNvbmRhcnkudCksIEdyb3V0LnQpLCBOaWIuU2hhcGUudCwgdCkgPT4ge1xuICBsZXQgZW1wdHlfd2d3ID0gQWJhLm1rKFtbXV0sIFtdKTtcbiAgbGV0IHJlYyBnbyA9IChhZmZpeDogdCwgcjogTmliLlNoYXBlLnQpID0+XG4gICAgc3dpdGNoIChhZmZpeCkge1xuICAgIHwgW10gPT4gKGVtcHR5X3dndywgciwgW10pXG4gICAgfCBbcCwgLi4udGxdID0+XG4gICAgICBsZXQgKHdndywgcywgdGwpID0gZ28odGwsIHIpO1xuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFNlY29uZGFyeSh3KSA9PlxuICAgICAgICBsZXQgKHdzcywgZ3MpID0gd2d3O1xuICAgICAgICBsZXQgKHdzLCB3c3MpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Qod3NzKTtcbiAgICAgICAgKChbW3csIC4uLndzXSwgLi4ud3NzXSwgZ3MpLCBzLCB0bCk7XG4gICAgICB8IEdyb3V0KGcpID0+IChBYmEuY29ucyhbXSwgZywgd2d3KSwgcywgdGwpXG4gICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgbGV0IChsLCBfKSA9IFRpbGUuc2hhcGVzKHQpIHw+IChkID09IExlZnQgPyBUdXBsZVV0aWwuc3dhcCA6IEZ1bi5pZCk7XG4gICAgICAgIChlbXB0eV93Z3csIGwsIHRsKTtcbiAgICAgIH07XG4gICAgfTtcbiAgZ28oKGQgPT0gTGVmdCA/IExpc3QucmV2IDogRnVuLmlkKShhZmZpeCksIHIpO1xufTtcbmxldCBzaGFwZSA9IHNoYXBlX2FmZml4KFJpZ2h0KTtcblxubGV0IHJlYyBjb252ZXggPSBzZWcgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQgbCA9XG4gICAgZm9sZF9yaWdodChcbiAgICAgIChwOiBQaWVjZS50LCBzaGFwZSkgPT4ge1xuICAgICAgICBsZXQqIHMgPSBzaGFwZTtcbiAgICAgICAgc3dpdGNoIChwKSB7XG4gICAgICAgIHwgU2Vjb25kYXJ5KF8pID0+IHNoYXBlXG4gICAgICAgIHwgR3JvdXQoZykgPT5cbiAgICAgICAgICBHcm91dC5maXRzX3NoYXBlKGcsIHMpID8gU29tZShmc3QoR3JvdXQuc2hhcGVzKGcpKSkgOiBOb25lXG4gICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgIGxldCAobCwgcikgPSBUaWxlLnNoYXBlcyh0KTtcbiAgICAgICAgICBMaXN0LmZvcl9hbGwoY29udmV4LCB0LmNoaWxkcmVuKSAmJiBOaWIuU2hhcGUuZml0cyhyLCBzKVxuICAgICAgICAgICAgPyBTb21lKGwpIDogTm9uZTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBzZWcsXG4gICAgICBTb21lKE5pYi5TaGFwZS5jb25jYXZlKCkpLFxuICAgICk7XG4gIHN3aXRjaCAobCkge1xuICB8IE5vbmUgPT4gZmFsc2VcbiAgfCBTb21lKGwpID0+IE5pYi5TaGFwZS5maXRzKE5pYi5TaGFwZS5jb25jYXZlKCksIGwpXG4gIH07XG59O1xuXG5sZXQgc3BsaXRfYnlfZ3JvdXQ6IHQgPT4gQWJhLnQodCwgR3JvdXQudCkgPVxuICBBYmEuc3BsaXQoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5Hcm91dChnKSA9PiBFaXRoZXIuUihnKVxuICAgIHwgcCA9PiBMKHApLFxuICApO1xuXG5sZXQgcmVjIHJlbW9sZCA9ICh+c2hhcGU9TmliLlNoYXBlLmNvbmNhdmUoKSwgc2VnOiB0LCBzOiBTb3J0LnQpID0+XG4gIHN3aXRjaCAocykge1xuICB8IEFueSA9PiBzZWdcbiAgfCBUeXAgPT4gcmVtb2xkX3R5cChzaGFwZSwgc2VnKVxuICB8IFBhdCA9PiByZW1vbGRfcGF0KHNoYXBlLCBzZWcpXG4gIHwgRXhwID0+IHJlbW9sZF9leHAoc2hhcGUsIHNlZylcbiAgfCBSdWwgPT4gcmVtb2xkX3J1bChzaGFwZSwgc2VnKVxuICB8IFRQYXQgPT4gcmVtb2xkX3RwYXQoc2hhcGUsIHNlZylcbiAgfCBfID0+IGZhaWx3aXRoKFwicmVtb2xkIHVuZXhwZWN0ZWRcIilcbiAgfVxuYW5kIHJlbW9sZF90aWxlID0gKHM6IFNvcnQudCwgc2hhcGUsIHQ6IFRpbGUudCk6IG9wdGlvbihUaWxlLnQpID0+IHtcbiAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgbGV0KyByZW1vbGRlZCA9XG4gICAgTW9sZHMuZ2V0KHQubGFiZWwpXG4gICAgfD4gTGlzdC5maWx0ZXIoKG06IE1vbGQudCkgPT4gbS5vdXQgPT0gcylcbiAgICB8PiBMaXN0Lm1hcChtb2xkID0+IHsuLi50LCBtb2xkfSlcbiAgICB8PiAoXG4gICAgICBmdW5cbiAgICAgIHwgW19dIGFzIHRzID0+IHRzXG4gICAgICB8IHRzID0+XG4gICAgICAgIHRzIHw+IExpc3QuZmlsdGVyKHQgPT4gTmliLlNoYXBlLmZpdHMoc2hhcGUsIGZzdChUaWxlLnNoYXBlcyh0KSkpKVxuICAgIClcbiAgICB8PiBMaXN0VXRpbC5oZF9vcHQ7XG4gIGxldCBjaGlsZHJlbiA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgKChsLCBjaGlsZCwgciksIGNoaWxkcmVuKSA9PiB7XG4gICAgICAgIGxldCBjaGlsZCA9XG4gICAgICAgICAgaWYgKGxcbiAgICAgICAgICAgICAgKyAxID09IHJcbiAgICAgICAgICAgICAgJiYgKFxuICAgICAgICAgICAgICAgIExpc3QubnRoKHJlbW9sZGVkLm1vbGQuaW5fLCBsKSAhPSBMaXN0Lm50aCh0Lm1vbGQuaW5fLCBsKVxuICAgICAgICAgICAgICAgIHx8IEVmZmVjdC5zX3RvdWNoZWQocmVtb2xkZWQuaWQpXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIHJlbW9sZChjaGlsZCwgTGlzdC5udGgocmVtb2xkZWQubW9sZC5pbl8sIGwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpbGQ7XG4gICAgICAgICAgfTtcbiAgICAgICAgW2NoaWxkLCAuLi5jaGlsZHJlbl07XG4gICAgICB9LFxuICAgICAgQWJhLmFiYV90cmlwbGVzKEFiYS5tayhyZW1vbGRlZC5zaGFyZHMsIHJlbW9sZGVkLmNoaWxkcmVuKSksXG4gICAgICBbXSxcbiAgICApO1xuICB7Li4ucmVtb2xkZWQsIGNoaWxkcmVufTtcbn1cbmFuZCByZW1vbGRfdHlwID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfdHlwKHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFR5cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gW1RpbGUodCksIC4uLnJlbW9sZF90eXAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfdHlwKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfdHlwX3VuaSA9IChzaGFwZSwgc2VnOiB0KTogKHQsIE5pYi5TaGFwZS50LCB0KSA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IChbXSwgc2hhcGUsIFtdKVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PlxuICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3R5cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUeXAsIHNoYXBlLCB0KSkge1xuICAgICAgfCBOb25lID0+IChbXSwgc2hhcGUsIHNlZylcbiAgICAgIHwgU29tZSh0KSB3aGVuICFUaWxlLmhhc19lbmQoUmlnaHQsIHQpID0+XG4gICAgICAgIGxldCAoXywgcikgPSBUaWxlLm5pYnModCk7XG4gICAgICAgIGxldCByZW1vbGRlZCA9IHJlbW9sZCh+c2hhcGU9ci5zaGFwZSwgdGwsIHIuc29ydCk7XG4gICAgICAgIGxldCAoXywgc2hhcGUsIF8pID0gc2hhcGVfYWZmaXgoTGVmdCwgcmVtb2xkZWQsIHIuc2hhcGUpO1xuICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIFtdKTtcbiAgICAgIHwgU29tZSh0KSB3aGVuIHQubGFiZWwgPT0gRm9ybS5nZXQoXCJjb21tYV90eXBcIikubGFiZWwgPT4gKFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHNoYXBlLFxuICAgICAgICAgIHNlZyxcbiAgICAgICAgKVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgcmVtb2xkX3R5cF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9wYXRfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFBhdCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3R5cCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3R5cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3BhdCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHJlc3QpO1xuICAgICAgICAgIChbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRfdHlwXSBAIHJlbW9sZGVkX3BhdCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgICAgcmVtb2xkX3BhdF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfcGF0ID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfcGF0KHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFBhdCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gW1RpbGUodCksIC4uLnJlbW9sZF9wYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfcGF0KHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfcGF0KHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90cGF0X3VuaSA9IChzaGFwZSwgc2VnOiB0KTogKHQsIE5pYi5TaGFwZS50LCB0KSA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IChbXSwgc2hhcGUsIFtdKVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PlxuICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3RwYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVFBhdCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgICByZW1vbGRfdHBhdF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfdHBhdCA9IChzaGFwZSwgc2VnOiB0KTogdCA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+IFtoZCwgLi4ucmVtb2xkX3RwYXQoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVFBhdCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gW1RpbGUodCksIC4uLnJlbW9sZF90cGF0KHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBzd2l0Y2ggKFRpbGUubmlicyh0KSkge1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFR5cH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3R5cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX3RwYXQoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT4gW1RpbGUodCksIC4uLnJlbW9sZF90cGF0KHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9leHBfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKEV4cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF90cGF0LCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHBhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX2V4cF91bmkoc2hhcGUsIHJlc3QpO1xuICAgICAgICAgIChbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRfdHBhdF0gQCByZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF9wYXRdIEAgcmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3R5cCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3R5cF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX2V4cF91bmkoc2hhcGUsIHJlc3QpO1xuICAgICAgICAgIChbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRfdHlwXSBAIHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFJ1bH0pID0+XG4gICAgICAgICAgLy8gVE9ETyByZXZpZXcgc2hvcnQgY2lyY3VpdFxuICAgICAgICAgIChbVGlsZSh0KV0sIHNoYXBlLCB0bClcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICAgIHJlbW9sZF9leHBfdW5pKHNuZChUaWxlLnNoYXBlcyh0KSksIHRsKTtcbiAgICAgICAgICAoW1RpbGUodCksIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3J1bCA9IChzaGFwZSwgc2VnOiB0KTogdCA9PlxuICBzd2l0Y2ggKHNlZykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+IFtoZCwgLi4ucmVtb2xkX3J1bChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShSdWwsIHNoYXBlLCB0KSkge1xuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogRXhwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgLy8gVE9ETyhkKSBjb250aW51aW5nIG9udG8gcnVsZSBtaWdodCBub3QgYmUgcmlnaHQgcmlnaHQuLi5cbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX3J1bChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PiBmYWlsd2l0aChcInJlbW9sZF9ydWwgdW5leHBlY3RlZFwiKVxuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX2V4cF91bmkoc2hhcGUsIFtoZCwgLi4udGxdKTtcbiAgICAgICAgc3dpdGNoIChyZW1vbGRlZCkge1xuICAgICAgICB8IFtdID0+IFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHJlbW9sZGVkIEAgcmVtb2xkX3J1bChzaGFwZSwgcmVzdClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfZXhwID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfZXhwKHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKEV4cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gW1RpbGUodCksIC4uLnJlbW9sZF9leHAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfZXhwKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHBhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICBbUGllY2UuVGlsZSh0KSwgLi4ucmVtb2xkZWRdIEAgcmVtb2xkX2V4cChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfZXhwKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBSdWx9KSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3J1bChzaGFwZSwgdGwpXVxuICAgICAgICB8IF8gPT4gW1RpbGUodCksIC4uLnJlbW9sZF9leHAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG5sZXQgc2tlbCA9XG4gIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAwLCBzZWcgPT5cbiAgICBzZWdcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChpLCBwKSlcbiAgICB8PiBMaXN0LmZpbHRlcigoKF8sIHApKSA9PiAhUGllY2UuaXNfc2Vjb25kYXJ5KHApKVxuICAgIHw+IFNrZWwubWtcbiAgKTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IExpc3QuY29uY2F0X21hcChQaWVjZS5zb3J0ZWRfY2hpbGRyZW4pO1xubGV0IGNoaWxkcmVuID0gc2VnID0+IExpc3QubWFwKHNuZCwgc29ydGVkX2NoaWxkcmVuKHNlZykpO1xuXG5tb2R1bGUgVHJpbSA9IHtcbiAgdHlwZSBzZWcgPSB0O1xuICB0eXBlIHQgPSBBYmEudChsaXN0KFNlY29uZGFyeS50KSwgR3JvdXQudCk7XG5cbiAgbGV0IGVtcHR5ID0gQWJhLm1rKFtbXV0sIFtdKTtcblxuICBsZXQgcmV2ID0gQWJhLnJldihMaXN0LnJldiwgRnVuLmlkKTtcblxuICBsZXQgY29uc193ID0gKHc6IFNlY29uZGFyeS50LCAod3NzLCBncykpID0+IHtcbiAgICAvLyBzYWZlIGJjIEFiYSBhbHdheXMgaGFzIGF0IGxlYXN0IG9uZSBBIGVsZW1lbnRcbiAgICBsZXQgKHdzLCB3c3MpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Qod3NzKTtcbiAgICBBYmEubWsoW1t3LCAuLi53c10sIC4uLndzc10sIGdzKTtcbiAgfTtcbiAgbGV0IGNvbnNfZyA9IChnOiBHcm91dC50LCAod3NzLCBncykpID0+XG4gICAgQWJhLm1rKFtbXSwgLi4ud3NzXSwgW2csIC4uLmdzXSk7XG5cbiAgbGV0IHdzID0gKCh3c3MsIF8pOiB0KTogc2VnID0+IExpc3QuKG1hcChQaWVjZS5zZWNvbmRhcnksIGNvbmNhdCh3c3MpKSk7XG5cbiAgLy8gcG9zdGNvbmQ6IHJlc3VsdCBpcyBlaXRoZXIgPHdzPiBvciA8d3MsZyx3cyc+XG4gIGxldCBtZXJnZSA9ICgod3NzLCBncyk6IHQpOiB0ID0+IHtcbiAgICBzd2l0Y2ggKEdyb3V0Lm1lcmdlKGdzKSkge1xuICAgIHwgTm9uZSA9PiBBYmEubWsoW0xpc3QuY29uY2F0KHdzcyldLCBbXSlcbiAgICB8IFNvbWUoZykgPT5cbiAgICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgICAgQWJhLm1rKFt3cywgTGlzdC5jb25jYXQod3NzKV0sIFtnXSk7XG4gICAgfTtcbiAgfTtcbiAgLy8gc2FtZSBhcyBtZXJnZSBidXQgdHlwZSBlbmNvZGVzIHBvc3Rjb25kXG4gIC8vIGxldCBtZXJnZWQgPSAodHJpbTogdCk6IChsaXN0KFNlY29uZGFyeS50KSwgb3B0aW9uKChHcm91dC50LCBsaXN0KFNlY29uZGFyeS50KSkpKSA9PiB7XG4gIC8vICAgbGV0ICh3c3MsIGdzKSA9IG1lcmdlKHRyaW0pO1xuICAvLyAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAvLyAgIHN3aXRjaCAoZ3MpIHtcbiAgLy8gICB8IFtdID0+ICh3cywgTm9uZSlcbiAgLy8gICB8IFtnLCAuLi5fXSA9PiAod3MsIFNvbWUoKGcsIExpc3QuY29uY2F0KHdzcykpKSlcbiAgLy8gICB9O1xuICAvLyB9O1xuICBsZXQgcmVjIHJtX3VwX3RvX29uZV9zcGFjZSA9XG4gICAgICAgICAgKHdzczogbGlzdChsaXN0KFNlY29uZGFyeS50KSkpOiBsaXN0KGxpc3QoU2Vjb25kYXJ5LnQpKSA9PlxuICAgIHN3aXRjaCAod3NzKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW1t3LCAuLi53c10sIC4uLndzc10gd2hlbiBTZWNvbmRhcnkuaXNfc3BhY2UodykgPT4gTGlzdC5jb25zKHdzLCB3c3MpXG4gICAgfCBbd3MsIC4uLndzc10gPT4gTGlzdC5jb25zKHdzLCBybV91cF90b19vbmVfc3BhY2Uod3NzKSlcbiAgICB9O1xuXG4gIGxldCBhZGRfZ3JvdXQgPSAofmQ6IERpcmVjdGlvbi50LCBzaGFwZTogTmliLlNoYXBlLnQsICh3c3MsIGdzKTogdCk6IHQgPT4ge1xuICAgIGxldCBnID0gR3JvdXQubWtfZml0c19zaGFwZShzaGFwZSk7XG4gICAgLyogV2hlbiBhZGRpbmcgYSBncm91dCB0byB0aGUgbGVmdCwgY29uc3VtZSBhIHNwYWNlLiBOb3RlXG4gICAgICAgY2hhbmdlcyBtYWRlIHRvIHRoZSBsb2dpYyBoZXJlIHNob3VsZCBhbHNvIHRha2UgaW50b1xuICAgICAgIGFjY291bnQgdGhlIG90aGVyIGRpcmVjdGlvbiBpbiAncmVncm91dCcgYmVsb3cgKi9cbiAgICBsZXQgd3NzJyA9XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIC8qIFJpZ2h0IENvbnZleCBlLmcuIEJhY2tzcGFjZSBgMXwgKyAyYCA9PiBgfDw+ICsgMmAgKERvbid0IGNvbnN1bWUpICovXG4gICAgICAvKiBSaWdodCBDb25jYXZlIGUuZy4gQmFja3NwYWNlIGAxICt8IDFgID0+IGAxIHw+PCAxYCAoRG9uJ3QgY29uc3VtZSkgKi9cbiAgICAgIHwgUmlnaHQgPT4gd3NzXG4gICAgICAvKiBMZWZ0IENvbnZleCBlLmcuIEluc2VydCBTcGFjZSBgW3xdYCA9PiBgWyB8XWAgPT4gYFs8PnxdYCAoQ29uc3VtZSkgKi9cbiAgICAgIC8qIExlZnQgQ29uY2F2ZSBlLmcuIEluc2VydCBcImlcIiBgbGV0IGEgPSAxIGl8YCA9PiBgbGV0IGEgPSAxPjxpfGAgKENvbnN1bWUpICovXG4gICAgICB8IExlZnQgPT4gcm1fdXBfdG9fb25lX3NwYWNlKHdzcylcbiAgICAgIH07XG4gICAgY29uc19nKGcsICh3c3MnLCBncykpO1xuICB9O1xuXG4gIC8vIGFzc3VtZXMgZ3JvdXQgaW4gdHJpbSBmaXQgciBidXQgbWF5IG5vdCBmaXQgbFxuICBsZXQgcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwgKGwsIHIpOiBOaWJzLnNoYXBlcywgdHJpbTogdCk6IHQgPT5cbiAgICBpZiAoTmliLlNoYXBlLmZpdHMobCwgcikpIHtcbiAgICAgIGxldCAod3NzLCBncykgPSB0cmltO1xuICAgICAgLyogV2hlbiByZW1vdmluZyBhIGdyb3V0IHRvIHRoZSBMZWZ0LCBhZGQgYSBzcGFjZS4gTm90ZVxuICAgICAgICAgY2hhbmdlcyBtYWRlIHRvIHRoZSBsb2dpYyBoZXJlIHNob3VsZCBhbHNvIHRha2UgaW50b1xuICAgICAgICAgYWNjb3VudCB0aGUgb3RoZXIgZGlyZWN0aW9uIGluICdhZGRfZ3JvdXQnIGFib3ZlICovXG4gICAgICBsZXQgbmV3X3NwYWNlcyA9XG4gICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAoZzogR3JvdXQudCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChnLnNoYXBlLCBkKSB7XG4gICAgICAgICAgICAvKiBMZWZ0IENvbmNhdmUgZS5nLiBgbGV0IGEgPSAxPjxpbnxgID0+IGBsZXQgYSA9IDEgaW4gfGAgKEFkZCkgKi9cbiAgICAgICAgICAgIC8qIE5PVEUoYW5kcmV3KTogTm90IHN1cmUgd2h5IGQgaGVyZSBzZWVtcyByZXZlcnNlZC4gQWxzbyBub3Qgc3VyZSB3aHlcbiAgICAgICAgICAgICAqIHJlc3RyaWN0aW9uIHRvIGNvbmNhdmUgaXMgbmVjZXNzYXJ5IGJ1dCBzZWVtcyB0byBwcmV2ZW50IGFkZGl0aW9uXG4gICAgICAgICAgICAgKiBvZiBuZWVkbGVzcyB3aGl0ZXNwYWNlIGluIHNvbWUgc2l0dWF0aW9uIHN1Y2ggYXMgd2hlbiBpbnNlcnRpbmdcbiAgICAgICAgICAgICAqIG9uIGAofClgLCB3aGljaCBzZWVtcyB0byBhZGQgd2hpdGVzcGFjZSBhZnRlciB0aGUgcmlnaHQgcGFyZW5zXG4gICAgICAgICAgICAgKiB3aXRob3V0IHRoaXMgc2hhcGUgcmVzdGlyY3Rpb24gKi9cbiAgICAgICAgICAgIHwgKENvbmNhdmUsIFJpZ2h0KSA9PiBTb21lKFNlY29uZGFyeS5ta19zcGFjZShnLmlkKSlcbiAgICAgICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBncyxcbiAgICAgICAgKTtcbiAgICAgIC8qIE5vdGUgYmVsb3cgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSBhZGQgdGhlIG5ldyBzcGFjZXNcbiAgICAgICAgIGJlZm9yZSB0aGUgZXhpc3Rpbmcgd3NzLCBhcyBkb2luZyBvdGhlcndpc2UgbWF5IHJlc3VsdFxuICAgICAgICAgaW4gdGhlIG5ldyBzcGFjZXMgZW5kaW5nIHVwIGxlYWRpbmcgYSBsaW5lLiBUaGlzIGFwcHJvYWNoIGlzXG4gICAgICAgICBzb21ld2hhdCBoYWNreTsgd2UgbWF5IGp1c3Qgd2FudCB0byByZW1vdmUgYWxsIHRoZSBzcGFjZXNcbiAgICAgICAgIHdoZW5ldmVyIHRoZXJlIGlzIGEgbGluZWJyZWFrOyBub3QgbWFraW5nIHRoaXMgY2hhbmNlIG5vd1xuICAgICAgICAgYXMgSSdtIHdvcnJpZWQgYWJvdXQgaXQgaW50cm9kdWNpbmcgc3VidGxlIGphbmsgKi9cblxuICAgICAgLyogRGF2aWQgUFIgY29tbWVudDpcbiAgICAgICAgIEFsbCB0aGVzZSBjaGFuZ2VzIGFzc3VtZSB0aGUgdHJpbSBpcyBvcmRlcmVkIGxlZnQtdG8tcmlnaHQsXG4gICAgICAgICBidXQgdGhpcyBtYXkgbm90IGJlIHRydWUgd2hlbiBUcmltLnJlZ3JvdXQgaXMgY2FsbGVkIGJ5XG4gICAgICAgICByZWdyb3V0X2FmZml4KExlZnQsIC4uLikgYmVsb3csIHdoaWNoIHJldmVyc2VzIHRoZSBhZmZpeCBiZWZvcmVcbiAgICAgICAgIHByb2Nlc3NpbmcuIChUaGlzIGRpZG4ndCBwb3NlIGFuIGlzc3VlIGJlZm9yZSB3aXRoIHRyaW0gYmVjYXVzZVxuICAgICAgICAgdGhlIHNlY29uZGFyeSBhbmQgZ3JvdXQgYXJlIHN5bW1ldHJpYyBhbmQgdGhlIGV4aXN0aW5nIGNvZGVcbiAgICAgICAgIGRpZG4ndCBhZmZlY3Qgb3JkZXIuKVxuICAgICAgICAgUHJvcGVyIGZpeCB3b3VsZCByZXF1aXJlIHRocmVhZGluZyB0aHJvdWdoIGRpcmVjdGlvbmFsIHBhcmFtZXRlclxuICAgICAgICAgZnJvbSByZWdyb3V0X2FmZml4IGludG8gVHJpbS5yZWdyb3V0IGFuZCBhcHBlbmRpbmcgdG8gY29ycmVjdCBzaWRlLlxuICAgICAgICAgU2ltaWxhciB0aHJlYWRpbmcgZm9yIGFkZF9ncm91dC4gVGhhdCBzYWlkLCBJIGNvdWxkbid0IHRyaWdnZXIgYW55XG4gICAgICAgICB1bmRlc2lyYWJsZSBiZWhhdmlvciB3aXRoIHRoZXNlIGNoYW5nZXMgYW5kIGFtIGZpbmUgd2l0aCBnb2luZyBhaGVhZFxuICAgICAgICAgd2l0aCB0aGlzIGZvciBub3cuICovXG4gICAgICBsZXQgd3NzID0gW25ld19zcGFjZXMgQCBMaXN0LmNvbmNhdCh3c3MpXTtcbiAgICAgIEFiYS5tayh3c3MsIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IChfLCBncykgYXMgbWVyZ2VkID0gbWVyZ2UodHJpbSk7XG4gICAgICBzd2l0Y2ggKGdzKSB7XG4gICAgICB8IFtdID0+IGFkZF9ncm91dCh+ZCwgbCwgbWVyZ2VkKVxuICAgICAgfCBbXywgLi4uX10gPT4gbWVyZ2VkXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IHRvX3NlZyA9ICh0cmltOiB0KSA9PlxuICAgIHRyaW1cbiAgICB8PiBBYmEuam9pbihMaXN0Lm1hcChQaWVjZS5zZWNvbmRhcnkpLCBnID0+IFtQaWVjZS5Hcm91dChnKV0pXG4gICAgfD4gTGlzdC5jb25jYXQ7XG59O1xuXG5sZXQgcmVjIHJlZ3JvdXQgPSAoKGwsIHIpLCBzZWcpID0+IHtcbiAgbGV0ICh0cmltLCByLCB0bCkgPSByZWdyb3V0X2FmZml4KERpcmVjdGlvbi5SaWdodCwgc2VnLCByKTtcbiAgbGV0IHRyaW0gPSBUcmltLnJlZ3JvdXQoRGlyZWN0aW9uLlJpZ2h0LCAobCwgciksIHRyaW0pO1xuICBUcmltLnRvX3NlZyh0cmltKSBAIHRsO1xufVxuYW5kIHJlZ3JvdXRfYWZmaXggPVxuICAgIChkOiBEaXJlY3Rpb24udCwgYWZmaXg6IHQsIHI6IE5pYi5TaGFwZS50KTogKFRyaW0udCwgTmliLlNoYXBlLnQsIHQpID0+IHtcbiAgbGV0ICh0cmltLCBzLCBhZmZpeCkgPVxuICAgIGZvbGRfcmlnaHQoXG4gICAgICAocDogUGllY2UudCwgKHRyaW0sIHIsIHRsKSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHApIHtcbiAgICAgICAgfCBTZWNvbmRhcnkodykgPT4gKFRyaW0uY29uc193KHcsIHRyaW0pLCByLCB0bClcbiAgICAgICAgfCBHcm91dChnKSA9PiAoVHJpbS4obWVyZ2UoY29uc19nKGcsIHRyaW0pKSksIHIsIHRsKVxuICAgICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgICBsZXQgY2hpbGRyZW4gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgICAgICAgICAoaGQsIHRsKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHRsID0gdGw7XG4gICAgICAgICAgICAgICAgbGV0IGhkID0gcmVncm91dChOaWIuU2hhcGUuKGNvbmNhdmUoKSwgY29uY2F2ZSgpKSwgaGQpO1xuICAgICAgICAgICAgICAgIFtoZCwgLi4udGxdO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0LmNoaWxkcmVuLFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHAgPSBQaWVjZS5UaWxlKHsuLi50LCBjaGlsZHJlbn0pO1xuICAgICAgICAgIGxldCAobCcsIHInKSA9XG4gICAgICAgICAgICBUaWxlLnNoYXBlcyh0KSB8PiAoZCA9PSBMZWZ0ID8gVHVwbGVVdGlsLnN3YXAgOiBGdW4uaWQpO1xuICAgICAgICAgIGxldCB0cmltID0gVHJpbS5yZWdyb3V0KGQsIChyJywgciksIHRyaW0pO1xuICAgICAgICAgIChUcmltLmVtcHR5LCBsJywgW3AsIC4uLlRyaW0udG9fc2VnKHRyaW0pXSBAIHRsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChkID09IExlZnQgPyBMaXN0LnJldiA6IEZ1bi5pZCkoYWZmaXgpLFxuICAgICAgKEFiYS5tayhbW11dLCBbXSksIHIsIGVtcHR5KSxcbiAgICApO1xuICBkID09IExlZnQgPyAoVHJpbS5yZXYodHJpbSksIHMsIHJldihhZmZpeCkpIDogKHRyaW0sIHMsIGFmZml4KTtcbn07XG5cbi8vIGZvciBpbnRlcm5hbCB1c2Ugd2hlbiBkZWFsaW5nIHdpdGggc2VnbWVudHMgaW4gcmV2ZXJzZSBvcmRlciAoZWcgQWZmaXgucmUpXG4vLyBsZXQgZmxpcF9uaWJzID1cbi8vICAgTGlzdC5tYXAoXG4vLyAgICAgZnVuXG4vLyAgICAgfCAoUGllY2UuU2Vjb25kYXJ5KF8pIHwgR3JvdXQoXykpIGFzIHAgPT4gcFxuLy8gICAgIHwgVGlsZSh0KSA9PiBUaWxlKHsuLi50LCBtb2xkOiBNb2xkLmZsaXBfbmlicyh0Lm1vbGQpfSksXG4vLyAgICk7XG5cbmxldCBzcGxpdF9ieV9tYXRjaGluZyA9IChpZDogSWQudCk6ICh0ID0+IEFiYS50KHQsIFRpbGUudCkpID0+XG4gIEFiYS5zcGxpdChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgd2hlbiB0LmlkID09IGlkID0+IEVpdGhlci5SKHQpXG4gICAgfCBwID0+IEwocCksXG4gICk7XG5cbi8vIG1vZHVsZSBNYXRjaCA9IFRpbGUuTWF0Y2guTWFrZShPcmllbnRhdGlvbi5SKTtcbmxldCByZWMgcmVhc3NlbWJsZSA9IChzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoaW5jb21wbGV0ZV90aWxlcyhzZWcpKSB7XG4gIHwgW10gPT4gc2VnXG4gIHwgW3QsIC4uLl9dID0+XG4gICAgc3dpdGNoIChBYmEudHJpbShzcGxpdF9ieV9tYXRjaGluZyh0LmlkLCBzZWcpKSkge1xuICAgIHwgTm9uZSA9PiBzZWdcbiAgICB8IFNvbWUoKHNlZ19sLCBtYXRjaCwgc2VnX3IpKSA9PlxuICAgICAgbGV0IHQgPSBUaWxlLnJlYXNzZW1ibGUobWF0Y2gpO1xuICAgICAgbGV0IGNoaWxkcmVuID0gTGlzdC5tYXAocmVhc3NlbWJsZSwgdC5jaGlsZHJlbik7XG4gICAgICBsZXQgcCA9IFRpbGUudG9fcGllY2Uoey4uLnQsIGNoaWxkcmVufSk7XG4gICAgICBzZWdfbCBAIFtwLCAuLi5yZWFzc2VtYmxlKHNlZ19yKV07XG4gICAgfVxuICB9O1xuXG5sZXQgdHJpbV9mOiAobGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpLCBEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gICh0cmltX2wsIGQsIHBzKSA9PiB7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBMZWZ0ID0+IHBzIHw+IHRyaW1fbFxuICAgIHwgUmlnaHQgPT4gcHMgfD4gTGlzdC5yZXYgfD4gdHJpbV9sIHw+IExpc3QucmV2XG4gICAgfTtcbiAgfTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5OiAoRGlyZWN0aW9uLnQsIHQpID0+IHQgPVxuICAoZCwgcHMpID0+IHtcbiAgICAvKiBUcmltcyBsZWFkaW5nL3RyYWlsaW5nIHNlY29uZGFyeSAqL1xuICAgIGxldCByZWMgdHJpbV9sID0geHMgPT5cbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gW11cbiAgICAgIHwgW1BpZWNlLlNlY29uZGFyeShfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IHRyaW1fZ3JvdXQ6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgZ3JvdXQgKi9cbiAgICBsZXQgcmVjIHRyaW1fbDogbGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpID1cbiAgICAgIHhzID0+XG4gICAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICB8IFtHcm91dChfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCB0cmltX3NlY29uZGFyeV9hbmRfZ3JvdXQ6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgc2Vjb25kYXJ5LCBjb250aW51aW5nXG4gICAgICAgdG8gdHJpbSBhcm91bmQgZ3JvdXQgdW50aWwgZmlyc3QgVGlsZSBpcyByZWFjaGVkICovXG4gICAgbGV0IHJlYyB0cmltX2w6IGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSA9XG4gICAgICB4cyA9PlxuICAgICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgfCBbU2Vjb25kYXJ5KF8pIHwgR3JvdXQoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgdHJpbV9ncm91dF9hcm91bmRfc2Vjb25kYXJ5OiAoRGlyZWN0aW9uLnQsIHQpID0+IHQgPVxuICAoZCwgcHMpID0+IHtcbiAgICAvKiBUcmltcyBsZWFkaW5nL3RyYWlsaW5nIGdyb3V0LCBza2lwcGluZyBvdmVyIHNlY29uZGFyeSxcbiAgICAgICBidXQgbm90IHNraXBwaW5nIG92ZXIgb3RoZXIgcGllY2VzLiAqL1xuICAgIGxldCByZWMgdHJpbV9sOiBsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSkgPVxuICAgICAgeHMgPT5cbiAgICAgICAgc3dpdGNoICh4cykge1xuICAgICAgICB8IFtdID0+IFtdXG4gICAgICAgIHwgW1NlY29uZGFyeSh3KSwgLi4ueHNdID0+IFtTZWNvbmRhcnkodyksIC4uLnRyaW1fbCh4cyldXG4gICAgICAgIHwgW0dyb3V0KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IGVkZ2Vfc2hhcGVfb2YgPSAoZDogRGlyZWN0aW9uLnQsIHBzOiB0KTogb3B0aW9uKE5pYi5TaGFwZS50KSA9PiB7XG4gIGxldCB0cmltbWVkID0gdHJpbV9zZWNvbmRhcnkoZCwgcHMpO1xuICBzd2l0Y2ggKGQsIExpc3RVdGlsLmhkX29wdCh0cmltbWVkKSwgTGlzdFV0aWwubGFzdF9vcHQodHJpbW1lZCkpIHtcbiAgfCAoUmlnaHQsIF8sIFNvbWUocCkpID0+IHAgfD4gUGllY2Uuc2hhcGVzIHw+IE9wdGlvbi5tYXAoc25kKVxuICB8IChMZWZ0LCBTb21lKHApLCBfKSA9PiBwIHw+IFBpZWNlLnNoYXBlcyB8PiBPcHRpb24ubWFwKGZzdClcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBlZGdlX2RpcmVjdGlvbl9vZiA9IChkOiBEaXJlY3Rpb24udCwgcHM6IHQpOiBvcHRpb24oRGlyZWN0aW9uLnQpID0+XG4gIE9wdGlvbi5tYXAoTmliLlNoYXBlLmFic29sdXRlKGQpLCBlZGdlX3NoYXBlX29mKGQsIHBzKSk7XG5cbmxldCByZWMgc2VyaWFsaXplID0gKHNlZzogdCkgPT5cbiAgc2VnXG4gIHw+IExpc3QuY29uY2F0X21hcChcbiAgICAgICBmdW5cbiAgICAgICB8IChQaWVjZS5TZWNvbmRhcnkoXykgfCBHcm91dChfKSB8IFRpbGUoe3NoYXJkczogW19dLCBffSkpIGFzIHAgPT4gW1xuICAgICAgICAgICBwLFxuICAgICAgICAgXVxuICAgICAgIHwgVGlsZSh0KSA9PiB7XG4gICAgICAgICAgIGxldCBzaGFyZHMgPVxuICAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAgVGlsZS50b19waWVjZSxcbiAgICAgICAgICAgICAgIFRpbGUuc3BsaXRfc2hhcmRzKHQuaWQsIHQubGFiZWwsIHQubW9sZCwgdC5zaGFyZHMpLFxuICAgICAgICAgICAgICk7XG4gICAgICAgICAgIGxldCBjaGlsZHJlbiA9IExpc3QubWFwKHNlcmlhbGl6ZSwgdC5jaGlsZHJlbik7XG4gICAgICAgICAgIEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKVxuICAgICAgICAgICB8PiBBYmEuam9pbihzID0+IFtzXSwgRnVuLmlkKVxuICAgICAgICAgICB8PiBMaXN0LmNvbmNhdDtcbiAgICAgICAgIH0sXG4gICAgICk7XG5cbmxldCBzYW1lbGluZV9zZWNvbmRhcnkgPVxuICBMaXN0LmZvcl9hbGwoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5TZWNvbmRhcnkodykgPT4gIVNlY29uZGFyeS5pc19saW5lYnJlYWsodylcbiAgICB8IF8gPT4gZmFsc2UsXG4gICk7XG5cbmxldCBleHBlY3RlZF9zb3J0cyA9IChzb3J0OiBTb3J0LnQsIHNlZzogdCk6IGxpc3QoKGludCwgU29ydC50KSkgPT4ge1xuICBsZXQgcCA9IExpc3QubnRoKHNlZyk7XG4gIGxldCByZWMgZ28gPSAoc29ydDogU29ydC50LCBza2VsOiBTa2VsLnQpOiBsaXN0KChsaXN0KGludCksIFNvcnQudCkpID0+IHtcbiAgICBsZXQgcm9vdCA9IFNrZWwucm9vdChza2VsKTtcbiAgICBsZXQgaW5zaWRlX3NvcnRzID1cbiAgICAgIEFiYS5hYmFfdHJpcGxlcyhyb290KVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCgobl9sLCBraWQsIG5fcikpID0+IHtcbiAgICAgICAgICAgbGV0IChfLCBzX2wpID0gUGllY2UubmliX3NvcnRzKHAobl9sKSk7XG4gICAgICAgICAgIGxldCAoc19yLCBfKSA9IFBpZWNlLm5pYl9zb3J0cyhwKG5fcikpO1xuICAgICAgICAgICBsZXQgcyA9IHNfbCA9PSBzX3IgPyBzX2wgOiBTb3J0LkFueTtcbiAgICAgICAgICAgZ28ocywga2lkKTtcbiAgICAgICAgIH0pO1xuICAgIGxldCBvdXRzaWRlX3NvcnRzID0ge1xuICAgICAgbGV0IG5zID0gQWJhLmdldF9hcyhyb290KTtcbiAgICAgIGxldCAobF9zb3J0LCBfKSA9IFBpZWNlLm5pYl9zb3J0cyhwKEFiYS5maXJzdF9hKHJvb3QpKSk7XG4gICAgICBsZXQgKF8sIHJfc29ydCkgPSBQaWVjZS5uaWJfc29ydHMocChBYmEubGFzdF9hKHJvb3QpKSk7XG4gICAgICBzd2l0Y2ggKHNrZWwpIHtcbiAgICAgIHwgT3AoXykgPT4gWyhucywgc29ydCldXG4gICAgICB8IFByZShfLCByKSA9PiBbKG5zLCBzb3J0KV0gQCBnbyhyX3NvcnQsIHIpXG4gICAgICB8IFBvc3QobCwgXykgPT4gZ28obF9zb3J0LCBsKSBAIFsobnMsIHNvcnQpXVxuICAgICAgfCBCaW4obCwgXywgcikgPT4gZ28obF9zb3J0LCBsKSBAIFsobnMsIHNvcnQpXSBAIGdvKHJfc29ydCwgcilcbiAgICAgIH07XG4gICAgfTtcbiAgICBvdXRzaWRlX3NvcnRzIEAgaW5zaWRlX3NvcnRzO1xuICB9O1xuICBnbyhzb3J0LCBza2VsKHNlZykpXG4gIHw+IExpc3QuY29uY2F0X21hcCgoKG5zLCBzKSkgPT4gTGlzdC5tYXAobiA9PiAobiwgcyksIG5zKSk7XG59O1xuXG5sZXQgcmVjIGhvbGVzID0gKHNlZ21lbnQ6IHQpOiBsaXN0KEdyb3V0LnQpID0+XG4gIExpc3QuY29uY2F0X21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlNlY29uZGFyeShfKSA9PiBbXVxuICAgIHwgVGlsZSh0KSA9PiBMaXN0LmNvbmNhdF9tYXAoaG9sZXMsIHQuY2hpbGRyZW4pXG4gICAgfCBHcm91dChnKSA9PiBbZ10sXG4gICAgc2VnbWVudCxcbiAgKTtcblxubGV0IGdldF9jaGlsZHJlbnM6IHQgPT4gbGlzdCh0KSA9XG4gIExpc3QuY29uY2F0X21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4gdC5jaGlsZHJlblxuICAgIHwgXyA9PiBbXSxcbiAgKTtcblxubGV0IHJlYyBnZXRfaW5jb21wbGV0ZV9pZHMgPSAoc2VnOiB0KTogbGlzdChJZC50KSA9PlxuICBMaXN0LmNvbmNhdF9tYXAoXG4gICAgZnVuXG4gICAgfCBQaWVjZS5UaWxlKHQpID0+IHtcbiAgICAgICAgbGV0IGlkcyA9IExpc3QuY29uY2F0X21hcChnZXRfaW5jb21wbGV0ZV9pZHMsIHQuY2hpbGRyZW4pO1xuICAgICAgICBUaWxlLmlzX2NvbXBsZXRlKHQpID8gaWRzIDogW3QuaWQsIC4uLmlkc107XG4gICAgICB9XG4gICAgfCBfID0+IFtdLFxuICAgIHNlZyxcbiAgKTtcblxubGV0IGlkc19vZl9pbmNvbXBsZXRlX3RpbGVzX2luX2JpZGVsaW1pdGVkcyA9IChzZWc6IHQpOiBsaXN0KElkLnQpID0+XG4gIGdldF9jaGlsZHJlbnMoc2VnKSB8PiBMaXN0LmNvbmNhdCB8PiBnZXRfaW5jb21wbGV0ZV9pZHM7XG5cbmxldCBmaXJzdF9zdHJpbmcgPVxuICBmdW5cbiAgfCBbXSA9PiBcIkZJUlNUXCJcbiAgfCBbUGllY2UuU2Vjb25kYXJ5KHcpLCAuLi5fXSA9PiBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpXG4gIHwgW1BpZWNlLkdyb3V0KF8pLCAuLi5fXSA9PiBcIj9cIlxuICB8IFtQaWVjZS5UaWxlKHQpLCAuLi5fXSA9PiB0LmxhYmVsIHw+IExpc3QuaGQ7XG5cbmxldCBsYXN0X3N0cmluZyA9XG4gIGZ1blxuICB8IFtdID0+IFwiTEFTVFwiXG4gIHwgeHMgPT5cbiAgICBzd2l0Y2ggKExpc3RVdGlsLmxhc3QoeHMpKSB7XG4gICAgfCBQaWVjZS5TZWNvbmRhcnkodykgPT4gU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KVxuICAgIHwgUGllY2UuR3JvdXQoXykgPT4gXCI/XCJcbiAgICB8IFBpZWNlLlRpbGUodCkgPT4gdC5sYWJlbCB8PiBMaXN0VXRpbC5sYXN0XG4gICAgfTtcbiIsIm9wZW4gVXRpbDtcblxuLy8gbW9kdWxlIFByZWZpeCA9IEFmZml4Lk1ha2UoT3JpZW50YXRpb24uTCk7XG4vLyBtb2R1bGUgU3VmZml4ID0gQWZmaXguTWFrZShPcmllbnRhdGlvbi5SKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKFNlZ21lbnQudCwgU2VnbWVudC50KTtcblxubGV0IGVtcHR5ID0gU2VnbWVudC4oZW1wdHksIGVtcHR5KTtcblxubGV0IG5vX3NpYmxpbmdzOiB0ID0+IGJvb2wgPSBzID0+IHMgPT0gZW1wdHk7XG5cbmxldCB1bnppcDogKGludCwgU2VnbWVudC50KSA9PiB0ID0gTGlzdFV0aWwuc3BsaXRfbjtcbmxldCB6aXAgPSAofnNlbD1TZWdtZW50LmVtcHR5LCAocHJlLCBzdWYpOiB0KSA9PlxuICBTZWdtZW50LmNvbmNhdChbcHJlLCBzZWwsIHN1Zl0pO1xuXG5sZXQgcHJlcGVuZCA9IChkOiBEaXJlY3Rpb24udCwgc2VnOiBTZWdtZW50LnQsIChsLCByKTogdCk6IHQgPT5cbiAgc3dpdGNoIChkKSB7XG4gIHwgTGVmdCA9PiAobCBAIHNlZywgcilcbiAgfCBSaWdodCA9PiAobCwgc2VnIEAgcilcbiAgfTtcblxubGV0IGNvbmNhdCA9IChzaWJzczogbGlzdCh0KSk6IHQgPT5cbiAgc2lic3NcbiAgfD4gTGlzdC5zcGxpdFxuICB8PiBQYWlyVXRpbC5tYXBfZnN0KExpc3QucmV2KVxuICB8PiBQYWlyVXRpbC5tYXBfZnN0KExpc3QuY29uY2F0KVxuICB8PiBQYWlyVXRpbC5tYXBfc25kKExpc3QuY29uY2F0KTtcblxuLy8gbGV0IGNvbnNpc3RlbnRfc2hhcmRzID0gKChwcmUsIHN1Zik6IHQpOiBib29sID0+IHtcbi8vICAgbGV0IHNoYXJkc19wcmUgPSBQcmVmaXguc2hhcmRzKHByZSk7XG4vLyAgIGxldCBzaGFyZHNfc3VmID0gU3VmZml4LnNoYXJkcyhzdWYpO1xuLy8gICBMaXN0VXRpbC5ncm91cF9ieShTaGFyZC5pZCwgc2hhcmRzX3ByZSBAIHNoYXJkc19zdWYpXG4vLyAgIHw+IExpc3QuZm9yX2FsbCgoKF8sIHNoYXJkcykpID0+IFNoYXJkLmNvbnNpc3RlbnRfbW9sZHMoc2hhcmRzKSAhPSBbXSk7XG4vLyB9O1xuXG5sZXQgcmVtb2xkID0gKChwcmUsIF8pIGFzIHNpYnM6IHQsIHM6IFNvcnQudCk6IHQgPT5cbiAgU2VnbWVudC5yZW1vbGQoemlwKHNpYnMpLCBzKSB8PiB1bnppcChMaXN0Lmxlbmd0aChwcmUpKTtcblxubGV0IHNoYXBlcyA9ICgocHJlLCBzdWYpOiB0KSA9PiB7XG4gIGxldCBzID0gTmliLlNoYXBlLmNvbmNhdmUoKTtcbiAgbGV0IChfLCBsLCBfKSA9IFNlZ21lbnQuc2hhcGVfYWZmaXgoTGVmdCwgcHJlLCBzKTtcbiAgbGV0IChfLCByLCBfKSA9IFNlZ21lbnQuc2hhcGVfYWZmaXgoUmlnaHQsIHN1Ziwgcyk7XG4gIChsLCByKTtcbn07XG5cbmxldCBpc19taXNtYXRjaCA9ICgobCwgcik6IHQpOiBib29sID0+IHtcbiAgLyogcHJlZGljdHMgaWYgZ3JvdXQgaXMgbmVjY2Vzc2FyeSBiZXR3ZWVuIHNpYmxpbmdzICovXG4gIHN3aXRjaCAoU2VnbWVudC5lZGdlX3NoYXBlX29mKExlZnQsIHIpLCBTZWdtZW50LmVkZ2Vfc2hhcGVfb2YoUmlnaHQsIGwpKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IGZhbHNlXG4gIHwgKHMxLCBzMikgPT4gczEgPT0gczJcbiAgfTtcbn07XG5cbmxldCBjb250YWluc19tYXRjaGluZyA9ICh0OiBUaWxlLnQsIChwcmUsIHN1Zik6IHQpID0+XG4gIFNlZ21lbnQuKGNvbnRhaW5zX21hdGNoaW5nKHQsIHByZSkgfHwgY29udGFpbnNfbWF0Y2hpbmcodCwgc3VmKSk7XG5cbmxldCBwdXNoID0gKG9udG86IERpcmVjdGlvbi50LCBwOiBQaWVjZS50LCAocHJlLCBzdWYpOiB0KTogdCA9PlxuICBzd2l0Y2ggKG9udG8pIHtcbiAgfCBMZWZ0ID0+IChwcmUgQCBbcF0sIHN1ZilcbiAgfCBSaWdodCA9PiAocHJlLCBbcCwgLi4uc3VmXSlcbiAgfTtcblxubGV0IHBvcCA9IChmcm9tOiBEaXJlY3Rpb24udCwgKHByZSwgc3VmKTogdCk6IG9wdGlvbigoUGllY2UudCwgdCkpID0+XG4gIHN3aXRjaCAoZnJvbSkge1xuICB8IExlZnQgPT5cbiAgICBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChwcmUpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHByZSwgcCkpID0+IHtcbiAgICAgICAgIGxldCAocHJlJywgcCkgPSBQaWVjZS5wb3BfcihwKTtcbiAgICAgICAgIChwLCAocHJlIEAgcHJlJywgc3VmKSk7XG4gICAgICAgfSlcbiAgfCBSaWdodCA9PlxuICAgIExpc3RVdGlsLnNwbGl0X2ZpcnN0X29wdChzdWYpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHAsIHN1ZikpID0+IHtcbiAgICAgICAgIGxldCAocCwgc3VmJykgPSBQaWVjZS5wb3BfbChwKTtcbiAgICAgICAgIChwLCAocHJlLCBzdWYnIEAgc3VmKSk7XG4gICAgICAgfSlcbiAgfTtcblxubGV0IGluY29tcGxldGVfdGlsZXMgPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LmluY29tcGxldGVfdGlsZXMpO1xuXG5sZXQgc3BsaXRfYnlfbWF0Y2hpbmcgPSBpZCA9PiBUdXBsZVV0aWwubWFwMihTZWdtZW50LnNwbGl0X2J5X21hdGNoaW5nKGlkKSk7XG5cbmxldCByZWFzc2VtYmxlID0gVHVwbGVVdGlsLm1hcDIoU2VnbWVudC5yZWFzc2VtYmxlKTtcblxubGV0IHJlZ3JvdXQgPSAoKHByZSwgc3VmKTogdCkgPT4ge1xuICBsZXQgcyA9IE5pYi5TaGFwZS5jb25jYXZlKCk7XG4gIGxldCBzdWYgPSBTZWdtZW50LnJlZ3JvdXRfYWZmaXgoUmlnaHQsIHN1Ziwgcyk7XG4gIGxldCAodHJpbV9sLCBzX2wsIHByZSkgPSBTZWdtZW50LnJlZ3JvdXRfYWZmaXgoTGVmdCwgcHJlLCBzKTtcbiAgKChwcmUsIHNfbCwgdHJpbV9sKSwgc3VmKTtcbn07XG5cbmxldCBsZWZ0X25laWdoYm9yOiB0ID0+IG9wdGlvbihQaWVjZS50KSA9ICgobCwgXykpID0+IExpc3RVdGlsLmxhc3Rfb3B0KGwpO1xuXG5sZXQgcmlnaHRfbmVpZ2hib3I6IHQgPT4gb3B0aW9uKFBpZWNlLnQpID0gKChfLCByKSkgPT4gTGlzdFV0aWwuaGRfb3B0KHIpO1xuXG5sZXQgbmVpZ2hib3JzOiB0ID0+IChvcHRpb24oUGllY2UudCksIG9wdGlvbihQaWVjZS50KSkgPVxuICBuID0+IChsZWZ0X25laWdoYm9yKG4pLCByaWdodF9uZWlnaGJvcihuKSk7XG5cbmxldCB0cmltX3NlY29uZGFyeSA9ICgobF9zaWJzLCByX3NpYnMpOiB0KSA9PiAoXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnkoUmlnaHQsIGxfc2licyksXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnkoTGVmdCwgcl9zaWJzKSxcbik7XG5cbmxldCB0cmltX2dyb3V0ID0gKChsX3NpYnMsIHJfc2licyk6IHQpID0+IChcbiAgU2VnbWVudC50cmltX2dyb3V0KFJpZ2h0LCBsX3NpYnMpLFxuICBTZWdtZW50LnRyaW1fZ3JvdXQoTGVmdCwgcl9zaWJzKSxcbik7XG5cbmxldCB0cmltX3NlY29uZGFyeV9hbmRfZ3JvdXQgPSAoKGxfc2licywgcl9zaWJzKTogdCkgPT4gKFxuICBTZWdtZW50LnRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dChSaWdodCwgbF9zaWJzKSxcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeV9hbmRfZ3JvdXQoTGVmdCwgcl9zaWJzKSxcbik7XG5cbmxldCBkaXJlY3Rpb25fYmV0d2VlbiA9ICgobCwgcik6IHQpOiBvcHRpb24oRGlyZWN0aW9uLnQpID0+XG4gIC8qIEZhY2luZyBkaXJlY3Rpb24gb2YgdGhlIHNoYXJlZCBuaWIgYmV0d2VlbiBsICYgciAqL1xuICBzd2l0Y2ggKFNlZ21lbnQuZWRnZV9kaXJlY3Rpb25fb2YoTGVmdCwgcikpIHtcbiAgfCBOb25lID0+IFNlZ21lbnQuZWRnZV9kaXJlY3Rpb25fb2YoUmlnaHQsIGwpXG4gIHwgZCA9PiBkXG4gIH07XG5cbmxldCBtb2xkX2ZpdHRpbmdfYmV0d2VlbiA9IChzb3J0OiBTb3J0LnQsIHA6IFByZWNlZGVuY2UudCwgc2liczogdCk6IE1vbGQudCA9PlxuICBzd2l0Y2ggKGRpcmVjdGlvbl9iZXR3ZWVuKHNpYnMpKSB7XG4gIHwgU29tZShkKSA9PiBNb2xkLmNoZXZyb24oc29ydCwgcCwgZClcbiAgfCBOb25lID0+IE1vbGQubWtfb3Aoc29ydCwgW10pXG4gIH07XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LnNvcnRlZF9jaGlsZHJlbik7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5leGNlcHRpb24gRW1wdHlfc2hhcmRfYWZmaXg7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcCA9IGludDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgbGFiZWw6IExhYmVsLnQsXG4gIG1vbGQ6IE1vbGQudCxcbiAgc2hhcmRzOiAobGlzdChpbnQpLCBsaXN0KGludCkpLFxuICBjaGlsZHJlbjogKGxpc3QoU2VnbWVudC50KSwgbGlzdChTZWdtZW50LnQpKSxcbn07XG5cbi8vIFRPRE8oZCkgcmV2aXNpdCBuYW1pbmcgdy5yLnQuIG91dGVyIHZzIGlubmVyIHNoYXJkc1xubGV0IGxfc2hhcmQgPSBhID0+XG4gIExpc3RVdGlsLmhkX29wdChmc3QoYS5zaGFyZHMpKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG5sZXQgcl9zaGFyZCA9IGEgPT5cbiAgTGlzdFV0aWwubGFzdF9vcHQoc25kKGEuc2hhcmRzKSlcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpO1xuXG5sZXQgbmlicyA9IChhOiB0KSA9PiB7XG4gIGxldCAobCwgXykgPSBNb2xkLm5pYnMofmluZGV4PWxfc2hhcmQoYSksIGEubW9sZCk7XG4gIGxldCAoXywgcikgPSBNb2xkLm5pYnMofmluZGV4PXJfc2hhcmQoYSksIGEubW9sZCk7XG4gIChsLCByKTtcbn07XG5sZXQgc2hhcGVzID0gYSA9PiB7XG4gIGxldCAobCwgcikgPSBuaWJzKGEpO1xuICAobC5zaGFwZSwgci5zaGFwZSk7XG59O1xuXG5sZXQgemlwID0gKGNoaWxkOiBTZWdtZW50LnQsIHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgY2hpbGRyZW59OiB0KTogVGlsZS50ID0+IHtcbiAgaWQsXG4gIGxhYmVsLFxuICBtb2xkLFxuICBzaGFyZHM6IGZzdChzaGFyZHMpIEAgc25kKHNoYXJkcyksXG4gIGNoaWxkcmVuOiBmc3QoY2hpbGRyZW4pIEAgW2NoaWxkLCAuLi5zbmQoY2hpbGRyZW4pXSxcbn07XG5cbmxldCBzb3J0ZWRfY2hpbGRyZW4gPSAoYTogdCkgPT4ge1xuICBsZXQgbiA9IExpc3QubGVuZ3RoKGZzdChhLmNoaWxkcmVuKSk7XG4gIGxldCB0ID0gemlwKFNlZ21lbnQuZW1wdHksIGEpO1xuICBsZXQgKGwsIF8sIHIpID0gTGlzdFV0aWwuc3BsaXRfbnRoKG4sIFRpbGUuc29ydGVkX2NoaWxkcmVuKHQpKTtcbiAgKGwsIHIpO1xufTtcblxuLy8gVE9ETyBmbGF0dGVuIHdpdGggc2hhcmQgaW5kaWNlc1xuLy8gbGV0IHN0ZXAgPSAoZnJhbWU6IHQpOiBzdGVwID0+IHtcbi8vICAgbGV0IChwcmVmaXgsIF8pID0gZnJhbWUuY2hpbGRyZW47XG4vLyAgIExpc3QubGVuZ3RoKHByZWZpeCk7XG4vLyB9O1xuXG5sZXQgcmVtb2xkID0gKGE6IHQpOiBsaXN0KHQpID0+XG4gIE1vbGRzLmdldChhLmxhYmVsKSB8PiBMaXN0Lm1hcChtb2xkID0+IHsuLi5hLCBtb2xkfSk7XG5cbi8vIGxldCBzb3J0ID0gKGZyYW1lOiB0KTogU29ydC50ID0+IHtcbi8vICAgYXNzZXJ0KHN0ZXAoZnJhbWUpID49IDAgJiYgc3RlcChmcmFtZSkgPCBMaXN0Lmxlbmd0aChmcmFtZS5tb2xkLmluXykpO1xuLy8gICBMaXN0Lm50aChmcmFtZS5tb2xkLmluXywgc3RlcChmcmFtZSkpO1xuLy8gfTtcbmxldCBzb3J0ID0gKGE6IHQpOiBTb3J0LnQgPT4ge1xuICBsZXQgKHByZSwgc3VmKSA9IGEuc2hhcmRzO1xuICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHByZSksIHN1Zikge1xuICB8IChTb21lKChfLCBpKSksIFtqLCAuLi5fXSkgPT5cbiAgICBsZXQgKF8sIGwpID0gTW9sZC5uaWJzKH5pbmRleD1pLCBhLm1vbGQpO1xuICAgIGxldCAociwgXykgPSBNb2xkLm5pYnMofmluZGV4PWosIGEubW9sZCk7XG4gICAgbC5zb3J0ID09IHIuc29ydCA/IGwuc29ydCA6IEFueTtcbiAgfCBfID0+IHJhaXNlKEVtcHR5X3NoYXJkX2FmZml4KVxuICB9O1xufTtcblxubGV0IGRpc2Fzc2VtYmxlID1cbiAgICAoe2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbjogKGtpZHNfbCwga2lkc19yKX06IHQpOiBTaWJsaW5ncy50ID0+IHtcbiAgbGV0IChzaGFyZHNfbCwgc2hhcmRzX3IpID1cbiAgICBzaGFyZHNcbiAgICB8PiBUdXBsZVV0aWwubWFwMihUaWxlLnNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQpKVxuICAgIHw+IFR1cGxlVXRpbC5tYXAyKExpc3QubWFwKFRpbGUudG9fcGllY2UpKTtcbiAgbGV0IGZsYXR0ZW4gPSAoc2hhcmRzLCBraWRzKSA9PlxuICAgIEFiYS5tayhzaGFyZHMsIGtpZHMpIHw+IEFiYS5qb2luKHAgPT4gW3BdLCBGdW4uaWQpIHw+IExpc3QuZmxhdHRlbjtcbiAgKGZsYXR0ZW4oc2hhcmRzX2wsIGtpZHNfbCksIGZsYXR0ZW4oc2hhcmRzX3IsIGtpZHNfcikpO1xufTtcblxubGV0IGNvbnRhaW5lcl9zaGFyZHMgPSAoYTogdCk6IChQaWVjZS50LCBQaWVjZS50KSA9PiB7XG4gIGxldCAoc2hhcmRzX2wsIHNoYXJkc19yKSA9XG4gICAgYS5zaGFyZHNcbiAgICB8PiBUdXBsZVV0aWwubWFwMihUaWxlLnNwbGl0X3NoYXJkcyhhLmlkLCBhLmxhYmVsLCBhLm1vbGQpKVxuICAgIHw+IFR1cGxlVXRpbC5tYXAyKExpc3QubWFwKFRpbGUudG9fcGllY2UpKTtcbiAgbGV0IGwgPVxuICAgIExpc3RVdGlsLmxhc3Rfb3B0KHNoYXJkc19sKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG4gIGxldCByID1cbiAgICBMaXN0VXRpbC5oZF9vcHQoc2hhcmRzX3IpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbiAgKGwsIHIpO1xufTtcblxubGV0IHJlYXNzZW1ibGUgPSAobWF0Y2hfbDogQWJhLnQoVGlsZS50LCBTZWdtZW50LnQpIGFzICdtLCBtYXRjaF9yOiAnbSk6IHQgPT4ge1xuICAvLyBUT0RPKGQpIGJpdCBoYWNreSwgbmVlZCB0byBkbyBhIGZsaXAvb3JpZW50YXRpb24gcGFzc1xuICAvLyBsZXQgbWF0Y2hfbCA9IEFiYS5tYXBfYihTZWdtZW50LnJldiwgbWF0Y2hfbCk7XG4gIGxldCAodF9sLCB0X3IpID0gVGlsZS4ocmVhc3NlbWJsZShtYXRjaF9sKSwgcmVhc3NlbWJsZShtYXRjaF9yKSk7XG4gIGFzc2VydCh0X2wuaWQgPT0gdF9yLmlkKTtcbiAge1xuICAgIGlkOiB0X2wuaWQsXG4gICAgbGFiZWw6IHRfbC5sYWJlbCxcbiAgICBtb2xkOiB0X2wubW9sZCxcbiAgICBzaGFyZHM6ICh0X2wuc2hhcmRzLCB0X3Iuc2hhcmRzKSxcbiAgICBjaGlsZHJlbjogKHRfbC5jaGlsZHJlbiwgdF9yLmNoaWxkcmVuKSxcbiAgfTtcbn07XG5cbi8vIG1vZHVsZSBNYXRjaCA9IHtcbi8vICAgbW9kdWxlIFByZWZpeCA9IFRpbGUuTWF0Y2guTWFrZShPcmllbnRhdGlvbi5MKTtcbi8vICAgbW9kdWxlIFN1ZmZpeCA9IFRpbGUuTWF0Y2guTWFrZShPcmllbnRhdGlvbi5SKTtcblxuLy8gICB0eXBlIGFuY2VzdG9yID0gdDtcbi8vICAgdHlwZSB0ID0gKFByZWZpeC50LCBTdWZmaXgudCk7XG5cbi8vICAgbGV0IGlkID0gKChwcmUsIF8pOiB0KSA9PiBQcmVmaXguaWQocHJlKTtcblxuLy8gICBsZXQgc2hhcmRzID0gKChwcmUsIHN1Zik6IHQpID0+XG4vLyAgICAgTGlzdC5yZXYoUHJlZml4LnNoYXJkcyhwcmUpKSBAIFN1ZmZpeC5zaGFyZHMoc3VmKTtcblxuLy8gICBsZXQgbGFiZWwgPSAoKF8sIHN1ZikpID0+IFN1ZmZpeC5sYWJlbChzdWYpO1xuXG4vLyAgIGxldCBsZW5ndGggPSAoKHByZSwgc3VmKSkgPT4gUHJlZml4Lmxlbmd0aChwcmUpICsgU3VmZml4Lmxlbmd0aChzdWYpO1xuXG4vLyAgIGxldCBjaGlsZHJlbiA9ICgocHJlLCBzdWYpKSA9PiAoXG4vLyAgICAgUHJlZml4LmNoaWxkcmVuKHByZSksXG4vLyAgICAgU3VmZml4LmNoaWxkcmVuKHN1ZiksXG4vLyAgICk7XG5cbi8vICAgbGV0IG1vbGQgPSAobTogdCkgPT4ge1xuLy8gICAgIGxldCBtb2xkcyA9XG4vLyAgICAgICBzd2l0Y2ggKFNoYXJkLmNvbnNpc3RlbnRfbW9sZHMoc2hhcmRzKG0pKSkge1xuLy8gICAgICAgfCBbXSA9PlxuLy8gICAgICAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGhhcHBlbiB1cG9uIGNvbnN0cnVjdC9kZXN0cnVjdCxcbi8vICAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBldmVyeXRoaW5nIHdpbGwgYmUgc3Vic2VxdWVudGx5IHJlbW9sZGVkXG4vLyAgICAgICAgIE1vbGRzLmdldChsYWJlbChtKSlcbi8vICAgICAgIHwgW18sIC4uLl9dIGFzIG1vbGRzID0+IG1vbGRzXG4vLyAgICAgICB9O1xuLy8gICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4vLyAgICAgTGlzdC5oZChtb2xkcyk7XG4vLyAgIH07XG5cbi8vICAgbGV0IGpvaW4gPSAoKHByZSwgc3VmKTogdCkgPT4gKFByZWZpeC5qb2luKHByZSksIFN1ZmZpeC5qb2luKHN1ZikpO1xuXG4vLyAgIGxldCBjb21wbGV0ZSA9IChtOiB0KTogb3B0aW9uKGFuY2VzdG9yKSA9PiB7XG4vLyAgICAgbGV0IGlkID0gaWQobSk7XG4vLyAgICAgbGV0IGxhYmVsID0gbGFiZWwobSk7XG4vLyAgICAgbGV0IG1vbGQgPSBtb2xkKG0pO1xuLy8gICAgIGxlbmd0aChtKSA9PSBUaWxlLkxhYmVsLmxlbmd0aChsYWJlbClcbi8vICAgICAgID8gU29tZSh7aWQsIGxhYmVsLCBtb2xkLCBjaGlsZHJlbjogY2hpbGRyZW4obSl9KSA6IE5vbmU7XG4vLyAgIH07XG4vLyB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBnZW5lcmF0aW9uID0gKEFuY2VzdG9yLnQsIFNpYmxpbmdzLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KGdlbmVyYXRpb24pO1xuXG5sZXQgZW1wdHkgPSBbXTtcblxubGV0IHBhcmVudDogdCA9PiBvcHRpb24oQW5jZXN0b3IudCkgPVxuICBmdW5cbiAgfCBbXSA9PiBOb25lXG4gIHwgWyhwYXJlbnQsIF8pLCAuLi5fXSA9PiBTb21lKHBhcmVudCk7XG5cbmxldCBzb3J0ID1cbiAgZnVuXG4gIHwgW10gPT4gU29ydC5yb290XG4gIHwgWyhhLCBfKSwgLi4uX10gPT4gQW5jZXN0b3Iuc29ydChhKTtcblxubGV0IHppcF9nZW4gPSAoc2VnOiBTZWdtZW50LnQsIChhLCAocHJlLCBzdWYpKTogZ2VuZXJhdGlvbik6IFNlZ21lbnQudCA9PlxuICBwcmUgQCBbUGllY2UuVGlsZShBbmNlc3Rvci56aXAoc2VnLCBhKSksIC4uLnN1Zl07XG5sZXQgemlwID0gKHNlZzogU2VnbWVudC50LCBhbmNzOiB0KSA9PiBhbmNzIHw+IExpc3QuZm9sZF9sZWZ0KHppcF9nZW4sIHNlZyk7XG5cbmxldCBkaXNhc3NlbWJsZSA9IGFuY3MgPT5cbiAgYW5jc1xuICB8PiBMaXN0Lm1hcCgoKGEsIHNpYnMpKSA9PlxuICAgICAgIFNpYmxpbmdzLmNvbmNhdChbQW5jZXN0b3IuZGlzYXNzZW1ibGUoYSksIHNpYnNdKVxuICAgICApXG4gIHw+IFNpYmxpbmdzLmNvbmNhdDtcblxuLy8gbGV0IHJlbW9sZCA9IChhbmNlc3RvcnM6IHQpOiBsaXN0KHQpID0+XG4vLyAgIExpc3QuZm9sZF9yaWdodChcbi8vICAgICAoKGEsIHNpYnMpLCByZW1vbGRlZCkgPT4ge1xuLy8gICAgICAgb3BlbiBMaXN0VXRpbC5TeW50YXg7XG4vLyAgICAgICBsZXQrIGFuY2VzdG9ycyA9IHJlbW9sZGVkXG4vLyAgICAgICBhbmQrIHNpYnMgPSBTaWJsaW5ncy5yZW1vbGQoc2licylcbi8vICAgICAgIGFuZCsgYSA9IEFuY2VzdG9yLnJlbW9sZChhKTtcbi8vICAgICAgIFsoYSwgc2licyksIC4uLmFuY2VzdG9yc107XG4vLyAgICAgfSxcbi8vICAgICBhbmNlc3RvcnMsXG4vLyAgICAgW2VtcHR5XSxcbi8vICAgKTtcblxubGV0IHNrZWwgPSAoKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKTogU2tlbC50ID0+IHtcbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aChwcmUpO1xuICBsZXQgYSA9IChuLCBQaWVjZS5UaWxlKEFuY2VzdG9yLnppcChTZWdtZW50LmVtcHR5LCBhKSkpO1xuICBsZXQgcHJlID1cbiAgICBwcmVcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChpLCBwKSlcbiAgICB8PiBMaXN0LmZpbHRlcigoKF8sIHApKSA9PiAhUGllY2UuaXNfc2Vjb25kYXJ5KHApKTtcbiAgbGV0IHN1ZiA9XG4gICAgc3VmXG4gICAgfD4gTGlzdC5tYXBpKChpLCBwKSA9PiAobiArIDEgKyBpLCBwKSlcbiAgICB8PiBMaXN0LmZpbHRlcigoKF8sIHApKSA9PiAhUGllY2UuaXNfc2Vjb25kYXJ5KHApKTtcbiAgU2tlbC5tayhwcmUgQCBbYSwgLi4uc3VmXSk7XG59O1xuXG4vLyBsZXQgc29ydHMgPSAoaSwgKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKSA9PiB7XG4vLyAgIGxldCBuID0gTGlzdC5sZW5ndGgocHJlKTtcbi8vICAgaWYgKGkgPCBMaXN0Lmxlbmd0aChwcmUpKSB7XG4vLyAgICAgTGlzdC5udGhfb3B0KHByZSwgaSlcbi8vICAgICB8PiBPcHRpb24ubWFwKFBpZWNlLnNvcnQpXG4vLyAgICAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkFuY2VzdG9ycy5zb3J0X291dFwiKSlcbi8vICAgfSBlbHNlIGlmIChpID4gbikge1xuLy8gICAgIExpc3QubnRoX29wdChzdWYsIGkgLSAxIC0gbilcbi8vICAgICB8PiBPcHRpb24ubWFwKFBpZWNlLnNvcnQpXG4vLyAgICAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkFuY2VzdG9ycy5zb3J0X291dFwiKSlcbi8vICAgfSBlbHNlIHtcbi8vICAgICBhLm1vbGQub3V0O1xuLy8gICB9O1xuLy8gfTtcblxubGV0IHJlZ3JvdXQgPSAoYW5jczogdCkgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICgoYSwgc2licyk6IGdlbmVyYXRpb24sIHJlZ3JvdXRlZCkgPT4ge1xuICAgICAgbGV0IHJlZ3JvdXRlZCA9IHJlZ3JvdXRlZDtcbiAgICAgIGxldCAoKHByZSwgbCwgdHJpbV9sKSwgKHRyaW1fciwgciwgc3VmKSkgPSBTaWJsaW5ncy5yZWdyb3V0KHNpYnMpO1xuICAgICAgbGV0IChsJywgcicpID0gVHVwbGVVdGlsLm1hcDIoTmliLnNoYXBlLCBNb2xkLm5pYnMoYS5tb2xkKSk7XG4gICAgICBsZXQgdHJpbV9sID0gU2VnbWVudC5UcmltLnJlZ3JvdXQoTGVmdCwgKGwsIGwnKSwgdHJpbV9sKTtcbiAgICAgIGxldCB0cmltX3IgPSBTZWdtZW50LlRyaW0ucmVncm91dChSaWdodCwgKHInLCByKSwgdHJpbV9yKTtcbiAgICAgIGxldCBwcmUgPSBwcmUgQCBTZWdtZW50LlRyaW0udG9fc2VnKHRyaW1fbCk7XG4gICAgICBsZXQgc3VmID0gU2VnbWVudC5UcmltLnRvX3NlZyh0cmltX3IpIEAgc3VmO1xuICAgICAgWyhhLCAocHJlLCBzdWYpKSwgLi4ucmVncm91dGVkXTtcbiAgICB9LFxuICAgIGFuY3MsXG4gICAgZW1wdHksXG4gICk7XG5cbmxldCBwYXJlbnRfbWF0Y2hlcyA9ICh0OiBUaWxlLnQsIGFuY3M6IHQpID0+XG4gIHN3aXRjaCAoYW5jcykge1xuICB8IFtdID0+IGZhbHNlXG4gIHwgWyhhLCBfKSwgLi4uX10gPT4gYS5pZCA9PSB0LmlkXG4gIH07XG4iLCJ0eXBlIHQgPSBpbnQ7XG5sZXQgdCA9IHJlZigwKTtcblxubGV0IHRpY2sgPSAoKTogdCA9PiB7XG4gIGxldCB0aW1lID0gdF47XG4gIHQgOj0gdGltZSArIDE7XG4gIHRpbWU7XG59O1xuXG5sZXQgbHQgPSAoPCk7XG5cbmxldCBtaW4gPSBtaW47XG5sZXQgbWF4ID0gbWF4O1xuXG5sZXQgbWF4X3RpbWUgPSBJbnQubWF4X2ludDtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGltZS50KTtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgbGV0IHRvdWNoZWQ6IHQ7XG59O1xuXG5sZXQgdXBkYXRlID0gKHQ6IFRpbWUudCwgZXM6IGxpc3QoRWZmZWN0LnQpLCB0ZDogdCkgPT5cbiAgZXNcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKHRkLCBlOiBFZmZlY3QudCkgPT5cbiAgICAgICAgIHN3aXRjaCAoZSkge1xuICAgICAgICAgfCBEZWxldGUoaWQpID0+IHRkIHw+IHJlbW92ZShpZClcbiAgICAgICAgIHwgVG91Y2goaWQpID0+XG4gICAgICAgICAgIHRkXG4gICAgICAgICAgIHw+IHVwZGF0ZShcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgICB8IE5vbmUgPT4gU29tZSh0KVxuICAgICAgICAgICAgICAgIHwgU29tZSh0JykgPT4gU29tZShUaW1lLm1heCh0LCB0JykpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICB9LFxuICAgICAgIHRkLFxuICAgICApO1xuIiwibGV0IGxhbSA9IFwizrtcIjtcbmxldCB1cF9hcnJvdyA9IFwi4oaRXCI7XG5sZXQgZG93bl9hcnJvdyA9IFwi4oaTXCI7XG5sZXQgbGVmdF9hcnJvdyA9IFwi4oaQXCI7XG5sZXQgcmlnaHRfYXJyb3cgPSBcIuKGklwiO1xubGV0IG5ic3AgPSBcIlxceEMyXFx4QTBcIjtcbmxldCB6d3NwID0gXCLigItcIjtcblxubGV0IHR5cGVBcnJvd1N5bSA9IFwi4oaSXCI7IC8vIFUrMjE5MiBcIlJpZ2h0d2FyZHMgQXJyb3dcIlxubGV0IGNhc3RBcnJvd1N5bSA9IFwi4oeoXCI7XG5sZXQgY2FzdEJhY2tBcnJvd1N5bSA9IFwi4oemXCI7XG5cbmxldCBlbGxpcHNpcyA9IFwiXFx4RTJcXHg4MFxceEE2XCI7XG5cbi8vIGNvcGllZCBmcm9tIGhhemVsXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcm93ID0gaW50O1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjb2wgPSBpbnQ7XG5cbm1vZHVsZSBQb2ludCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgcm93LFxuICAgIGNvbCxcbiAgfTtcbiAgbGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuXG4gIGxldCBlcXVhbHM6ICh0LCB0KSA9PiBib29sID0gKHAsIHEpID0+IHAucm93ID09IHEucm93ICYmIHAuY29sID09IHEuY29sO1xuXG4gIHR5cGUgY29tcGFyaXNvbiA9XG4gICAgfCBFeGFjdFxuICAgIHwgVW5kZXJcbiAgICB8IE92ZXI7XG5cbiAgbGV0IGNvbXAgPSAoY3VycmVudCwgdGFyZ2V0KTogY29tcGFyaXNvbiA9PlxuICAgIHN3aXRjaCAoKSB7XG4gICAgfCBfIHdoZW4gY3VycmVudCA9PSB0YXJnZXQgPT4gRXhhY3RcbiAgICB8IF8gd2hlbiBjdXJyZW50IDwgdGFyZ2V0ID0+IFVuZGVyXG4gICAgfCBfID0+IE92ZXJcbiAgICB9O1xuICBsZXQgY29tcGFyZSA9IChwMSwgcDIpID0+XG4gICAgc3dpdGNoIChjb21wKHAxLCBwMikpIHtcbiAgICB8IEV4YWN0ID0+IDBcbiAgICB8IFVuZGVyID0+ICgtMSlcbiAgICB8IE92ZXIgPT4gMVxuICAgIH07XG5cbiAgbGV0IGRjb21wID0gKGRpcmVjdGlvbjogRGlyZWN0aW9uLnQsIGEsIGIpID0+XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICB8IFJpZ2h0ID0+IGNvbXAoYSwgYilcbiAgICB8IExlZnQgPT4gY29tcChiLCBhKVxuICAgIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1lYXN1cmVtZW50ID0ge1xuICBvcmlnaW46IFBvaW50LnQsXG4gIGxhc3Q6IFBvaW50LnQsXG59O1xuXG4vLyBpbmRlbnRhdGlvbiByZWxhdGl2ZSB0byBjb250YWluZXJcbnR5cGUgcmVsX2luZGVudCA9IGludDtcbi8vIGluZGVudGF0aW9uIHJlbGF0aXZlIHRvIGNvZGUgY29udGFpbmVyXG50eXBlIGFic19pbmRlbnQgPSBpbnQ7XG5cbm1vZHVsZSBSb3dzID0ge1xuICBpbmNsdWRlIEludE1hcDtcbiAgdHlwZSBzaGFwZSA9IHtcbiAgICBpbmRlbnQ6IGNvbCxcbiAgICBtYXhfY29sOiBjb2wsXG4gIH07XG4gIHR5cGUgdCA9IEludE1hcC50KHNoYXBlKTtcblxuICBsZXQgbWF4X2NvbCA9IChyczogbGlzdChyb3cpLCBtYXA6IHQpID0+XG4gICAgcnMgfD4gTGlzdC5tYXAociA9PiBmaW5kKHIsIG1hcCkubWF4X2NvbCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAwKTtcblxuICBsZXQgbWluX2NvbCA9IChyczogbGlzdChyb3cpLCBtYXA6IHQpID0+XG4gICAgcnNcbiAgICB8PiBMaXN0Lm1hcChyID0+IGZpbmQociwgbWFwKS5pbmRlbnQpXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQobWluLCBJbnQubWF4X2ludCk7XG59O1xuXG5tb2R1bGUgU2hhcmRzID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc2hhcmQgPSAoaW50LCBtZWFzdXJlbWVudCk7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdChzaGFyZCk7XG5cbiAgLy8gZWxlbWVudHMgb2YgcmV0dXJuZWQgbGlzdCBhcmUgbm9uZW1wdHlcbiAgbGV0IHJlYyBzcGxpdF9ieV9yb3c6IHQgPT4gbGlzdCh0KSA9XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAoc3BsaXRfYnlfcm93KHRsKSkge1xuICAgICAgfCBbXSA9PiBbW2hkXV1cbiAgICAgIHwgW3JvdywgLi4ucm93c10gPT5cbiAgICAgICAgc25kKExpc3QuaGQocm93KSkub3JpZ2luLnJvdyA9PSBzbmQoaGQpLm9yaWdpbi5yb3dcbiAgICAgICAgICA/IFtbaGQsIC4uLnJvd10sIC4uLnJvd3NdIDogW1toZF0sIHJvdywgLi4ucm93c11cbiAgICAgIH07XG4gIC8vIGxldCBsYXN0ID0gKHNoYXJkczogdCkgPT5cbiAgLy8gICBzaGFyZHNcbiAgLy8gICB8PiBMaXN0LnNvcnQoKChpLCBfKSwgKGosIF8pKSA9PiBJbnQuY29tcGFyZShpLCBqKSlcbiAgLy8gICB8PiBMaXN0VXRpbC5sYXN0X29wdFxuICAvLyAgIHw+IE9wdGlvbi5tYXAoc25kKTtcbn07XG5cbnR5cGUgdCA9IHtcbiAgdGlsZXM6IElkLk1hcC50KFNoYXJkcy50KSxcbiAgZ3JvdXQ6IElkLk1hcC50KG1lYXN1cmVtZW50KSxcbiAgc2Vjb25kYXJ5OiBJZC5NYXAudChtZWFzdXJlbWVudCksXG4gIHJvd3M6IFJvd3MudCxcbiAgbGluZWJyZWFrczogSWQuTWFwLnQocmVsX2luZGVudCksXG59O1xuXG5sZXQgZW1wdHkgPSB7XG4gIHRpbGVzOiBJZC5NYXAuZW1wdHksXG4gIGdyb3V0OiBJZC5NYXAuZW1wdHksXG4gIHNlY29uZGFyeTogSWQuTWFwLmVtcHR5LFxuICByb3dzOiBSb3dzLmVtcHR5LFxuICBsaW5lYnJlYWtzOiBJZC5NYXAuZW1wdHksXG59O1xuXG5sZXQgYWRkX3MgPSAoaWQ6IElkLnQsIGk6IGludCwgbSwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgdGlsZXM6XG4gICAgbWFwLnRpbGVzXG4gICAgfD4gSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgIGlkLFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IE5vbmUgPT4gU29tZShbKGksIG0pXSlcbiAgICAgICAgIHwgU29tZShtcykgPT5cbiAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICBbKGksIG0pLCAuLi5tc11cbiAgICAgICAgICAgICB8PiBMaXN0LnNvcnQoKChpLCBfKSwgKGosIF8pKSA9PiBJbnQuY29tcGFyZShpLCBqKSksXG4gICAgICAgICAgICksXG4gICAgICAgKSxcbn07XG5cbi8vIGFzc3VtZXMgdGlsZSBpcyBzaW5nbGUgc2hhcmRcbmxldCBhZGRfdCA9ICh0OiBUaWxlLnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHRpbGVzOlxuICAgIG1hcC50aWxlc1xuICAgIHw+IElkLk1hcC51cGRhdGUoXG4gICAgICAgICB0LmlkLFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IE5vbmUgPT4gU29tZShbKFRpbGUubF9zaGFyZCh0KSwgbSldKVxuICAgICAgICAgfCBTb21lKG1zKSA9PiBTb21lKFsoVGlsZS5sX3NoYXJkKHQpLCBtKSwgLi4ubXNdKSxcbiAgICAgICApLFxufTtcbmxldCBhZGRfZyA9IChnOiBHcm91dC50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICBncm91dDogbWFwLmdyb3V0IHw+IElkLk1hcC5hZGQoZy5pZCwgbSksXG59O1xubGV0IGFkZF93ID0gKHc6IFNlY29uZGFyeS50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICBzZWNvbmRhcnk6IG1hcC5zZWNvbmRhcnkgfD4gSWQuTWFwLmFkZCh3LmlkLCBtKSxcbn07XG5sZXQgYWRkX3AgPSAocDogUGllY2UudCwgbSwgbWFwKSA9PlxuICBwXG4gIHw+IFBpZWNlLmdldChcbiAgICAgICB3ID0+IGFkZF93KHcsIG0sIG1hcCksXG4gICAgICAgZyA9PiBhZGRfZyhnLCBtLCBtYXApLFxuICAgICAgIHQgPT4gYWRkX3QodCwgbSwgbWFwKSxcbiAgICAgKTtcblxubGV0IGFkZF9yb3cgPSAocm93OiBpbnQsIHNoYXBlOiBSb3dzLnNoYXBlLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICByb3dzOiBSb3dzLmFkZChyb3csIHNoYXBlLCBtYXAucm93cyksXG59O1xuXG5sZXQgYWRkX2xiID0gKGlkLCBpbmRlbnQsIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIGxpbmVicmVha3M6IElkLk1hcC5hZGQoaWQsIGluZGVudCwgbWFwLmxpbmVicmVha3MpLFxufTtcblxubGV0IHNpbmdsZXRvbl93ID0gKHcsIG0pID0+IGVtcHR5IHw+IGFkZF93KHcsIG0pO1xubGV0IHNpbmdsZXRvbl9nID0gKGcsIG0pID0+IGVtcHR5IHw+IGFkZF9nKGcsIG0pO1xubGV0IHNpbmdsZXRvbl9zID0gKGlkLCBzaGFyZCwgbSkgPT4gZW1wdHkgfD4gYWRkX3MoaWQsIHNoYXJkLCBtKTtcblxuLy8gVE9ETyhkKSByZW5hbWVcbmxldCBmaW5kX29wdF9zaGFyZHMgPSAodDogVGlsZS50LCBtYXApID0+IElkLk1hcC5maW5kX29wdCh0LmlkLCBtYXAudGlsZXMpO1xubGV0IGZpbmRfc2hhcmRzID0gKHQ6IFRpbGUudCwgbWFwKSA9PiBJZC5NYXAuZmluZCh0LmlkLCBtYXAudGlsZXMpO1xuXG5sZXQgZmluZF9vcHRfbGIgPSAoaWQsIG1hcCkgPT4gSWQuTWFwLmZpbmRfb3B0KGlkLCBtYXAubGluZWJyZWFrcyk7XG5cbmxldCBmaW5kX3NoYXJkcycgPSAoaWQ6IElkLnQsIG1hcCkgPT5cbiAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC50aWxlcykpIHtcbiAgfCBOb25lID0+IFtdXG4gIHwgU29tZShzcykgPT4gc3NcbiAgfTtcblxubGV0IGZpbmRfdyA9ICh3OiBTZWNvbmRhcnkudCwgbWFwKTogbWVhc3VyZW1lbnQgPT5cbiAgSWQuTWFwLmZpbmQody5pZCwgbWFwLnNlY29uZGFyeSk7XG5sZXQgZmluZF9nID0gKGc6IEdyb3V0LnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+IElkLk1hcC5maW5kKGcuaWQsIG1hcC5ncm91dCk7XG4vLyByZXR1cm5zIHRoZSBtZWFzdXJlbWVudCBzcGFubmluZyB0aGUgd2hvbGUgdGlsZVxubGV0IGZpbmRfdCA9ICh0OiBUaWxlLnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+IHtcbiAgbGV0IHNoYXJkcyA9IElkLk1hcC5maW5kKHQuaWQsIG1hcC50aWxlcyk7XG4gIGxldCBmaXJzdCA9IExpc3RVdGlsLmFzc29jX2VycihUaWxlLmxfc2hhcmQodCksIHNoYXJkcywgXCJmaW5kX3RcIik7XG4gIGxldCBsYXN0ID0gTGlzdFV0aWwuYXNzb2NfZXJyKFRpbGUucl9zaGFyZCh0KSwgc2hhcmRzLCBcImZpbmRfdFwiKTtcbiAge29yaWdpbjogZmlyc3Qub3JpZ2luLCBsYXN0OiBsYXN0Lmxhc3R9O1xufTtcbi8vIGxldCBmaW5kX2EgPSAoe3NoYXJkczogKGwsIHIpLCBffSBhcyBhOiBBbmNlc3Rvci50LCBtYXApID0+XG4vLyAgIExpc3QuYXNzb2MobCBAIHIsIElkLk1hcC5maW5kKGEuaWQsIG1hcC50aWxlcykpO1xubGV0IGZpbmRfcCA9IChwOiBQaWVjZS50LCBtYXApOiBtZWFzdXJlbWVudCA9PlxuICBwXG4gIHw+IFBpZWNlLmdldChcbiAgICAgICB3ID0+IGZpbmRfdyh3LCBtYXApLFxuICAgICAgIGcgPT4gZmluZF9nKGcsIG1hcCksXG4gICAgICAgdCA9PiBmaW5kX3QodCwgbWFwKSxcbiAgICAgKTtcblxubGV0IGZpbmRfYnlfaWQgPSAoaWQ6IElkLnQsIG1hcDogdCk6IG9wdGlvbihtZWFzdXJlbWVudCkgPT4ge1xuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnNlY29uZGFyeSkpIHtcbiAgfCBTb21lKG0pID0+IFNvbWUobSlcbiAgfCBOb25lID0+XG4gICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC5ncm91dCkpIHtcbiAgICB8IFNvbWUobSkgPT4gU29tZShtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC50aWxlcykpIHtcbiAgICAgIHwgU29tZShzaGFyZHMpID0+XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgTGlzdFV0aWwuYXNzb2NfZXJyKExpc3QuaGQoc2hhcmRzKSB8PiBmc3QsIHNoYXJkcywgXCJmaW5kX2J5X2lkXCIpO1xuICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgTGlzdFV0aWwuYXNzb2NfZXJyKFxuICAgICAgICAgICAgTGlzdFV0aWwubGFzdChzaGFyZHMpIHw+IGZzdCxcbiAgICAgICAgICAgIHNoYXJkcyxcbiAgICAgICAgICAgIFwiZmluZF9ieV9pZFwiLFxuICAgICAgICAgICk7XG4gICAgICAgIFNvbWUoe29yaWdpbjogZmlyc3Qub3JpZ2luLCBsYXN0OiBsYXN0Lmxhc3R9KTtcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBQcmludGYucHJpbnRmKFwiTWVhc3VyZWQuV0FSTklORzogaWQgJXMgbm90IGZvdW5kXCIsIElkLnRvX3N0cmluZyhpZCkpO1xuICAgICAgICBOb25lO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmxldCBwb3N0X3RpbGVfaW5kZW50ID0gKHQ6IFRpbGUudCkgPT4ge1xuICAvLyBoYWNrIGZvciBpbmRlbnQgZm9sbG93aW5nIGZ1bi9pZiB0aWxlcy5cbiAgLy8gcHJvcGVyIGZpeCBpbnZvbHZlcyB1cGRhdGluZyBtb2xkIGRhdGF0eXBlXG4gIC8vIHRvIHNwZWNpZnkgd2hldGhlciBhIHJpZ2h0LWZhY2luZyBjb25jYXZlXG4gIC8vIHRpcCBpbXBvc2VzIGluZGVudGF0aW9uIG9uIGEgZm9sbG93aW5nIG5ld2xpbmUuXG4gIGxldCBjb21wbGV0ZV9mdW4gPVxuICAgIFRpbGUuaXNfY29tcGxldGUodClcbiAgICAmJiAoXG4gICAgICB0LmxhYmVsID09IEZvcm0uZ2V0KFwiZnVuX1wiKS5sYWJlbFxuICAgICAgfHwgdC5sYWJlbCA9PSBGb3JtLmdldChcInR5cGZ1blwiKS5sYWJlbFxuICAgICAgfHwgdC5sYWJlbCA9PSBGb3JtLmdldChcImlmX1wiKS5sYWJlbFxuICAgICk7XG4gIGxldCBtaXNzaW5nX3JpZ2h0X2V4dHJlbWUgPSBUaWxlLnJfc2hhcmQodCkgPCBMaXN0Lmxlbmd0aCh0LmxhYmVsKSAtIDE7XG4gIGNvbXBsZXRlX2Z1biB8fCBtaXNzaW5nX3JpZ2h0X2V4dHJlbWU7XG59O1xuXG5sZXQgbWlzc2luZ19sZWZ0X2V4dHJlbWUgPSAodDogVGlsZS50KSA9PiBUaWxlLmxfc2hhcmQodCkgPiAwO1xuXG5sZXQgaXNfaW5kZW50ZWRfbWFwID0gKHNlZzogU2VnbWVudC50KSA9PiB7XG4gIGxldCByZWMgZ28gPSAofmlzX2luZGVudGVkPWZhbHNlLCB+bWFwPUlkLk1hcC5lbXB0eSwgc2VnOiBTZWdtZW50LnQpID0+XG4gICAgc2VnXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoKGlzX2luZGVudGVkLCBtYXApLCBwOiBQaWVjZS50KSA9PlxuICAgICAgICAgICBzd2l0Y2ggKHApIHtcbiAgICAgICAgICAgfCBTZWNvbmRhcnkodykgd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID0+IChcbiAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgSWQuTWFwLmFkZCh3LmlkLCBpc19pbmRlbnRlZCwgbWFwKSxcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgICAgICAgIHwgR3JvdXQoXykgPT4gKGlzX2luZGVudGVkLCBtYXApXG4gICAgICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgICAgIGxldCBpc19pbmRlbnRlZCA9IGlzX2luZGVudGVkIHx8IHBvc3RfdGlsZV9pbmRlbnQodCk7XG4gICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgICB0LmNoaWxkcmVuXG4gICAgICAgICAgICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgICAgICAgICAgKG1hcCwgY2hpbGQpID0+IGdvKH5pc19pbmRlbnRlZD10cnVlLCB+bWFwLCBjaGlsZCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgKGlzX2luZGVudGVkLCBtYXApO1xuICAgICAgICAgICB9LFxuICAgICAgICAgKGlzX2luZGVudGVkLCBtYXApLFxuICAgICAgIClcbiAgICB8PiBzbmQ7XG4gIGdvKHNlZyk7XG59O1xuXG5sZXQgb2Zfc2VnbWVudCA9ICh+b2xkOiB0PWVtcHR5LCB+dG91Y2hlZD1Ub3VjaGVkLmVtcHR5LCBzZWc6IFNlZ21lbnQudCk6IHQgPT4ge1xuICBsZXQgaXNfaW5kZW50ZWQgPSBpc19pbmRlbnRlZF9tYXAoc2VnKTtcblxuICAvLyByZWN1cnNpdmUgYWNyb3NzIHNlZydzIGJpZGVsaW1pdGVkIGNvbnRhaW5lcnNcbiAgbGV0IHJlYyBnb19uZXN0ZWQgPVxuICAgICAgICAgIChcbiAgICAgICAgICAgIH5tYXAsXG4gICAgICAgICAgICB+Y29udGFpbmVyX2luZGVudDogYWJzX2luZGVudD0wLFxuICAgICAgICAgICAgfm9yaWdpbj1Qb2ludC56ZXJvLFxuICAgICAgICAgICAgc2VnOiBTZWdtZW50LnQsXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFBvaW50LnQsIHQpID0+IHtcbiAgICBsZXQgZmlyc3RfdG91Y2hlZF9pbmNvbXBsZXRlID1cbiAgICAgIHN3aXRjaCAoU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNlZykpIHtcbiAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgfCB0cyA9PlxuICAgICAgICB0c1xuICAgICAgICB8PiBMaXN0Lm1hcCgodDogVGlsZS50KSA9PiBUb3VjaGVkLmZpbmRfb3B0KHQuaWQsIHRvdWNoZWQpKVxuICAgICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgICAoYWNjLCB0b3VjaGVkKSA9PlxuICAgICAgICAgICAgICAgc3dpdGNoIChhY2MsIHRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgIHwgKFNvbWUodGltZSksIFNvbWUodGltZScpKSA9PiBTb21lKFRpbWUubWluKHRpbWUsIHRpbWUnKSlcbiAgICAgICAgICAgICAgIHwgKFNvbWUodGltZSksIF8pXG4gICAgICAgICAgICAgICB8IChfLCBTb21lKHRpbWUpKSA9PiBTb21lKHRpbWUpXG4gICAgICAgICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBOb25lLFxuICAgICAgICAgICApXG4gICAgICB9O1xuXG4gICAgLy8gcmVjdXJzaXZlIGFjcm9zcyBzZWcncyBsaXN0IHN0cnVjdHVyZVxuICAgIGxldCByZWMgZ29fc2VxID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgICAgfmNvbnRhaW5lZF9pbmRlbnQ6IHJlbF9pbmRlbnQ9MCxcbiAgICAgICAgICAgICAgfm9yaWdpbjogUG9pbnQudCxcbiAgICAgICAgICAgICAgc2VnOiBTZWdtZW50LnQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA6IChQb2ludC50LCB0KSA9PlxuICAgICAgc3dpdGNoIChzZWcpIHtcbiAgICAgIHwgW10gPT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfD4gYWRkX3JvdyhcbiAgICAgICAgICAgICAgIG9yaWdpbi5yb3csXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIGluZGVudDogY29udGFpbmVyX2luZGVudCArIGNvbnRhaW5lZF9pbmRlbnQsXG4gICAgICAgICAgICAgICAgIG1heF9jb2w6IG9yaWdpbi5jb2wsXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICk7XG4gICAgICAgIChvcmlnaW4sIG1hcCk7XG4gICAgICB8IFtoZCwgLi4udGxdID0+XG4gICAgICAgIGxldCAoY29udGFpbmVkX2luZGVudCwgb3JpZ2luLCBtYXApID1cbiAgICAgICAgICBzd2l0Y2ggKGhkKSB7XG4gICAgICAgICAgfCBTZWNvbmRhcnkodykgd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID0+XG4gICAgICAgICAgICBsZXQgcm93X2luZGVudCA9IGNvbnRhaW5lcl9pbmRlbnQgKyBjb250YWluZWRfaW5kZW50O1xuICAgICAgICAgICAgbGV0IGluZGVudCA9XG4gICAgICAgICAgICAgIGlmIChTZWdtZW50LnNhbWVsaW5lX3NlY29uZGFyeSh0bCkpIHtcbiAgICAgICAgICAgICAgICAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgICAgICAgICBUb3VjaGVkLmZpbmRfb3B0KHcuaWQsIHRvdWNoZWQpLFxuICAgICAgICAgICAgICAgICAgZmlyc3RfdG91Y2hlZF9pbmNvbXBsZXRlLFxuICAgICAgICAgICAgICAgICAgZmluZF9vcHRfbGIody5pZCwgb2xkKSxcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB8IChTb21lKHRvdWNoZWQpLCBTb21lKHRvdWNoZWQnKSwgU29tZShpbmRlbnQpKVxuICAgICAgICAgICAgICAgICAgICB3aGVuIFRpbWUubHQodG91Y2hlZCwgdG91Y2hlZCcpID0+IGluZGVudFxuICAgICAgICAgICAgICAgIHwgXyA9PlxuICAgICAgICAgICAgICAgICAgY29udGFpbmVkX2luZGVudCArIChJZC5NYXAuZmluZCh3LmlkLCBpc19pbmRlbnRlZCkgPyAyIDogMClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGxhc3QgPVxuICAgICAgICAgICAgICBQb2ludC57cm93OiBvcmlnaW4ucm93ICsgMSwgY29sOiBjb250YWluZXJfaW5kZW50ICsgaW5kZW50fTtcbiAgICAgICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgfD4gYWRkX3codywge29yaWdpbiwgbGFzdH0pXG4gICAgICAgICAgICAgIHw+IGFkZF9yb3coXG4gICAgICAgICAgICAgICAgICAgb3JpZ2luLnJvdyxcbiAgICAgICAgICAgICAgICAgICB7aW5kZW50OiByb3dfaW5kZW50LCBtYXhfY29sOiBvcmlnaW4uY29sfSxcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8PiBhZGRfbGIody5pZCwgaW5kZW50KTtcbiAgICAgICAgICAgIChpbmRlbnQsIGxhc3QsIG1hcCk7XG4gICAgICAgICAgfCBTZWNvbmRhcnkodykgPT5cbiAgICAgICAgICAgIGxldCB3c3BhY2VfbGVuZ3RoID1cbiAgICAgICAgICAgICAgVW5pY29kZS5sZW5ndGgoU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KSk7XG4gICAgICAgICAgICBsZXQgbGFzdCA9IHsuLi5vcmlnaW4sIGNvbDogb3JpZ2luLmNvbCArIHdzcGFjZV9sZW5ndGh9O1xuICAgICAgICAgICAgbGV0IG1hcCA9IG1hcCB8PiBhZGRfdyh3LCB7b3JpZ2luLCBsYXN0fSk7XG4gICAgICAgICAgICAoY29udGFpbmVkX2luZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB8IEdyb3V0KGcpID0+XG4gICAgICAgICAgICBsZXQgbGFzdCA9IHsuLi5vcmlnaW4sIGNvbDogb3JpZ2luLmNvbCArIDF9O1xuICAgICAgICAgICAgbGV0IG1hcCA9IG1hcCB8PiBhZGRfZyhnLCB7b3JpZ2luLCBsYXN0fSk7XG4gICAgICAgICAgICAoY29udGFpbmVkX2luZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgICAgIGxldCB0b2tlbiA9IExpc3QubnRoKHQubGFiZWwpO1xuICAgICAgICAgICAgbGV0IGFkZF9zaGFyZCA9IChvcmlnaW4sIHNoYXJkLCBtYXApID0+IHtcbiAgICAgICAgICAgICAgbGV0IGxhc3QgPVxuICAgICAgICAgICAgICAgIFBvaW50LntcbiAgICAgICAgICAgICAgICAgIC4uLm9yaWdpbixcbiAgICAgICAgICAgICAgICAgIGNvbDogb3JpZ2luLmNvbCArIFN0cmluZy5sZW5ndGgodG9rZW4oc2hhcmQpKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF9zKHQuaWQsIHNoYXJkLCB7b3JpZ2luLCBsYXN0fSk7XG4gICAgICAgICAgICAgIChsYXN0LCBtYXApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCAobGFzdCwgbWFwKSA9XG4gICAgICAgICAgICAgIEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbilcbiAgICAgICAgICAgICAgfD4gQWJhLmZvbGRfbGVmdChcbiAgICAgICAgICAgICAgICAgICBzaGFyZCA9PiBhZGRfc2hhcmQob3JpZ2luLCBzaGFyZCwgbWFwKSxcbiAgICAgICAgICAgICAgICAgICAoKG9yaWdpbiwgbWFwKSwgY2hpbGQsIHNoYXJkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgKGNoaWxkX2xhc3QsIGNoaWxkX21hcCkgPVxuICAgICAgICAgICAgICAgICAgICAgICBnb19uZXN0ZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICB+Y29udGFpbmVyX2luZGVudD1jb250YWluZXJfaW5kZW50ICsgY29udGFpbmVkX2luZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgYWRkX3NoYXJkKGNoaWxkX2xhc3QsIHNoYXJkLCBjaGlsZF9tYXApO1xuICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAoY29udGFpbmVkX2luZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgKHRsX2xhc3QsIG1hcCkgPSBnb19zZXEofm1hcCwgfmNvbnRhaW5lZF9pbmRlbnQsIH5vcmlnaW4sIHRsKTtcbiAgICAgICAgKHRsX2xhc3QsIG1hcCk7XG4gICAgICB9O1xuICAgIGdvX3NlcSh+bWFwLCB+b3JpZ2luLCBzZWcpO1xuICB9O1xuICBzbmQoZ29fbmVzdGVkKH5tYXA9ZW1wdHksIHNlZykpO1xufTtcblxubGV0IGxlbmd0aCA9IChzZWc6IFNlZ21lbnQudCwgbWFwOiB0KTogaW50ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gMFxuICB8IFtwXSA9PlxuICAgIGxldCBtID0gZmluZF9wKHAsIG1hcCk7XG4gICAgbS5sYXN0LmNvbCAtIG0ub3JpZ2luLmNvbDtcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIGxldCBmaXJzdCA9IGZpbmRfcChoZCwgbWFwKTtcbiAgICBsZXQgbGFzdCA9IGZpbmRfcChMaXN0VXRpbC5sYXN0KHRsKSwgbWFwKTtcbiAgICBsYXN0Lmxhc3QuY29sIC0gZmlyc3Qub3JpZ2luLmNvbDtcbiAgfTtcblxubGV0IHNlZ21lbnRfb3JpZ2luID0gKHNlZzogU2VnbWVudC50KTogb3B0aW9uKFBvaW50LnQpID0+XG4gIE9wdGlvbi5tYXAoXG4gICAgZmlyc3QgPT4gZmluZF9wKGZpcnN0LCBvZl9zZWdtZW50KHNlZykpLm9yaWdpbixcbiAgICBMaXN0VXRpbC5oZF9vcHQoc2VnKSxcbiAgKTtcblxubGV0IHNlZ21lbnRfbGFzdCA9IChzZWc6IFNlZ21lbnQudCk6IG9wdGlvbihQb2ludC50KSA9PlxuICBPcHRpb24ubWFwKFxuICAgIGxhc3QgPT4gZmluZF9wKGxhc3QsIG9mX3NlZ21lbnQoc2VnKSkubGFzdCxcbiAgICBMaXN0VXRpbC5sYXN0X29wdChzZWcpLFxuICApO1xuXG5sZXQgc2VnbWVudF9oZWlnaHQgPSAoc2VnOiBTZWdtZW50LnQpID0+XG4gIHN3aXRjaCAoc2VnbWVudF9sYXN0KHNlZyksIHNlZ21lbnRfb3JpZ2luKHNlZykpIHtcbiAgfCAoU29tZShsYXN0KSwgU29tZShmaXJzdCkpID0+IDEgKyBsYXN0LnJvdyAtIGZpcnN0LnJvd1xuICB8IF8gPT4gMFxuICB9O1xuXG5sZXQgc2VnbWVudF93aWR0aCA9IChzZWc6IFNlZ21lbnQudCk6IGludCA9PlxuICBJbnRNYXAuZm9sZChcbiAgICAoXywge21heF9jb2wsIF99OiBSb3dzLnNoYXBlLCBhY2MpID0+IG1heChtYXhfY29sLCBhY2MpLFxuICAgIG9mX3NlZ21lbnQoc2VnKS5yb3dzLFxuICAgIDAsXG4gICk7XG5cbmxldCB3aWR0aF9jb3N0ID0gKHNlZzogU2VnbWVudC50LCBtYXhfd2lkdGg6IGludCk6IGludCA9PlxuICBJbnRNYXAuZm9sZChcbiAgICAoXywge21heF9jb2wsIF99OiBSb3dzLnNoYXBlLCBhY2MpID0+IHtcbiAgICAgIGxldCBvdmVyZmxvdyA9IG1heChtYXhfY29sIC0gbWF4X3dpZHRoLCAwKTtcbiAgICAgIGFjYyArIG92ZXJmbG93ICogb3ZlcmZsb3c7XG4gICAgfSxcbiAgICBvZl9zZWdtZW50KHNlZykucm93cyxcbiAgICAwLFxuICApO1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJ1ZmZlciA9XG4gIHwgVW5wYXJzZWRcbiAgfCBQYXJzZWQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbW9kZSA9XG4gIHwgTm9ybWFsXG4gIHwgQnVmZmVyKGJ1ZmZlcik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgZm9jdXM6IERpcmVjdGlvbi50LFxuICBjb250ZW50OiBTZWdtZW50LnQsXG4gIG1vZGUsXG59O1xuXG4vKiBOT1RFOiBiYWNrcGFjayBubyBsb25nZXIgdXNlcyBzZWxlY3Rpb24gZm9jdXMgKi9cbmxldCBtayA9ICh+bW9kZT1Ob3JtYWwsIH5mb2N1cz1EaXJlY3Rpb24uTGVmdCwgY29udGVudDogU2VnbWVudC50KSA9PiB7XG4gIGZvY3VzLFxuICBjb250ZW50LFxuICBtb2RlLFxufTtcblxubGV0IG1rX2J1ZmZlciA9IGJ1ZmZlciA9PiBtayh+bW9kZT1CdWZmZXIoYnVmZmVyKSwgfmZvY3VzPURpcmVjdGlvbi5MZWZ0KTtcblxubGV0IGlzX2J1ZmZlcjogdCA9PiBib29sID1cbiAgZnVuXG4gIHwge21vZGU6IEJ1ZmZlcihfKSwgX30gPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbmxldCBidWZmZXJfaWRzID0gKHNlbDogdCk6IGxpc3QoSWQudCkgPT4ge1xuICAvKiBDb2xsZWN0IGlkcyBvZiB0b2tlbnMgaW4gYnVmZmVyIGZvciBzdHlsaW5nIHB1cnBvc2VzLiBUaGlzIGlzXG4gICAqIGN1cnJlbnRseSBuZWNlc3NhcnkgYXMgdGhlIHNlbGVjdGlvbiBpcyBub3QgcGVyc2lzdGVkIHRocm91Z2hcbiAgICogdW56aXBwaW5nIGZvciBkaXNwbGF5ICovXG4gIGxldCBidWZmZXIgPSBpc19idWZmZXIoc2VsKSA/IHNlbC5jb250ZW50IDogW107XG4gIElkLk1hcC5iaW5kaW5ncyhNZWFzdXJlZC5vZl9zZWdtZW50KGJ1ZmZlcikudGlsZXMpIHw+IExpc3QubWFwKGZzdCk7XG59O1xuXG5sZXQgZW1wdHkgPSBtayhTZWdtZW50LmVtcHR5KTtcblxubGV0IG1hcCA9IChmLCBzZWwpID0+IHsuLi5zZWwsIGNvbnRlbnQ6IGYoc2VsLmNvbnRlbnQpfTtcblxubGV0IHRvZ2dsZV9mb2N1cyA9IHNlbGVjdGlvbiA9PiB7XG4gIC4uLnNlbGVjdGlvbixcbiAgZm9jdXM6IFV0aWwuRGlyZWN0aW9uLnRvZ2dsZShzZWxlY3Rpb24uZm9jdXMpLFxufTtcblxubGV0IGlzX2VtcHR5ID0gKHNlbGVjdGlvbjogdCkgPT4gc2VsZWN0aW9uLmNvbnRlbnQgPT0gU2VnbWVudC5lbXB0eTtcblxubGV0IHB1c2ggPSAocDogUGllY2UudCwge2ZvY3VzLCBjb250ZW50LCBtb2RlfTogdCk6IHQgPT4ge1xuICBsZXQgY29udGVudCA9XG4gICAgU2VnbWVudC5yZWFzc2VtYmxlKFxuICAgICAgc3dpdGNoIChmb2N1cykge1xuICAgICAgfCBMZWZ0ID0+IFNlZ21lbnQuY29ucyhwLCBjb250ZW50KVxuICAgICAgfCBSaWdodCA9PiBTZWdtZW50LnNub2MoY29udGVudCwgcClcbiAgICAgIH0sXG4gICAgKTtcbiAge2ZvY3VzLCBjb250ZW50LCBtb2RlfTtcbn07XG5cbmxldCBwb3AgPSAoc2VsOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChzZWwuZm9jdXMsIHNlbC5jb250ZW50LCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChzZWwuY29udGVudCkpIHtcbiAgfCAoXywgW10sIF8pXG4gIHwgKF8sIF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoTGVmdCwgW3AsIC4uLmNvbnRlbnRdLCBfKSA9PlxuICAgIGxldCAocCwgcmVzdCkgPSBQaWVjZS5wb3BfbChwKTtcbiAgICBTb21lKChwLCB7Li4uc2VsLCBjb250ZW50OiByZXN0IEAgY29udGVudH0pKTtcbiAgfCAoUmlnaHQsIF8sIFNvbWUoKGNvbnRlbnQsIHApKSkgPT5cbiAgICBsZXQgKHJlc3QsIHApID0gUGllY2UucG9wX3IocCk7XG4gICAgU29tZSgocCwgey4uLnNlbCwgY29udGVudDogY29udGVudCBAIHJlc3R9KSk7XG4gIH07XG5cbmxldCBzcGxpdF9waWVjZSA9IF86IG9wdGlvbigoUGllY2UudCwgdCkpID0+IGZhaWx3aXRoKFwidG9kbyBzcGxpdF9waWVjZVwiKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbm1vZHVsZSBTaGFyZEluZm8gPSB7XG4gIG1vZHVsZSBPcmRlciA9IHtcbiAgICB0eXBlIGtleSA9IChJZC50LCBpbnQpO1xuICAgIC8vIGxldCBrZXkgPSAoczogU2hhcmQudCkgPT4gKHMudGlsZV9pZCwgU2hhcmQuaW5kZXgocykpO1xuXG4gICAgb3BlbiBIYXNodGJsO1xuICAgIHR5cGUgdCA9IEhhc2h0YmwudChrZXksIEhhc2h0YmwudChrZXksIHVuaXQpKTtcblxuICAgIGxldCBuID0gMjA7XG4gICAgbGV0IGluaXQgPSAoKSA9PiBjcmVhdGUobik7XG5cbiAgICBsZXQgbHQgPSAobDogVGlsZS50LCByOiBUaWxlLnQsIG9yZDogdCk6IGJvb2wgPT4ge1xuICAgICAgbGV0IChpX2wsIGlfcikgPSBUaWxlLihyX3NoYXJkKGwpLCBsX3NoYXJkKHIpKTtcbiAgICAgIHN3aXRjaCAoZmluZF9vcHQob3JkLCAobC5pZCwgaV9sKSkpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgfCBTb21lKHJvdykgPT4gT3B0aW9uLmlzX3NvbWUoZmluZF9vcHQocm93LCAoci5pZCwgaV9yKSkpXG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IGd0ID0gKGwsIHIsIG9yZCkgPT4gbHQociwgbCwgb3JkKTtcbiAgICBsZXQgdW4gPSAobCwgciwgb3JkKSA9PiAhbHQobCwgciwgb3JkKSAmJiAhZ3QobCwgciwgb3JkKTtcblxuICAgIGxldCBkaXNvcmRlcmVkID0gKHQ6IFRpbGUudCwgdCc6IFRpbGUudCk6IGJvb2wgPT5cbiAgICAgIHQuaWQgPT0gdCcuaWRcbiAgICAgICYmIHtcbiAgICAgICAgbGV0IChsLCByKSA9IFRpbGUuKGxfc2hhcmQodCksIHJfc2hhcmQodCkpO1xuICAgICAgICBsZXQgKGwnLCByJykgPSBUaWxlLihsX3NoYXJkKHQnKSwgcl9zaGFyZCh0JykpO1xuICAgICAgICBsIDwgbCcgJiYgbCcgPCByIHx8IGwnIDwgbCAmJiBsIDwgcic7XG4gICAgICB9O1xuXG4gICAgbGV0IGx0X29yX3VuID0gKGxzLCBycywgb3JkKSA9PlxuICAgICAgbHNcbiAgICAgIHw+IExpc3QuZm9yX2FsbChsID0+XG4gICAgICAgICAgIHJzXG4gICAgICAgICAgIHw+IExpc3QuZm9yX2FsbChyID0+XG4gICAgICAgICAgICAgICAgIWRpc29yZGVyZWQobCwgcikgJiYgKGx0KGwsIHIsIG9yZCkgfHwgdW4obCwgciwgb3JkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgKTtcblxuICAgIGxldCBnZXQgPSAoaSwgaiwgbSkgPT4ge1xuICAgICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgICAgIGxldCogciA9IGZpbmRfb3B0KG0sIGkpO1xuICAgICAgZmluZF9vcHQociwgaik7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSAoaSwgaiwgbSkgPT4ge1xuICAgICAgbGV0IHIgPVxuICAgICAgICBzd2l0Y2ggKGZpbmRfb3B0KG0sIGkpKSB7XG4gICAgICAgIHwgTm9uZSA9PiBjcmVhdGUobilcbiAgICAgICAgfCBTb21lKHIpID0+IHJcbiAgICAgICAgfTtcbiAgICAgIHJlcGxhY2UociwgaiwgKCkpO1xuICAgICAgcmVwbGFjZShtLCBpLCByKTtcbiAgICB9O1xuXG4gICAgbGV0IGFkZF90aWxlID0gKGlkLCBsYmwsIG9yZCkgPT5cbiAgICAgIGxibFxuICAgICAgfD4gTGlzdC5pdGVyaSgoaSwgXykgPT4ge1xuICAgICAgICAgICBzd2l0Y2ggKGZpbmRfb3B0KG9yZCwgKGlkLCBpKSkpIHtcbiAgICAgICAgICAgfCBTb21lKF8pID0+ICgpXG4gICAgICAgICAgIHwgTm9uZSA9PiByZXBsYWNlKG9yZCwgKGlkLCBpKSwgY3JlYXRlKG4pKVxuICAgICAgICAgICB9O1xuICAgICAgICAgICBpID09IDAgPyAoKSA6IHNldCgoaWQsIGkgLSAxKSwgKGlkLCBpKSwgb3JkKTtcbiAgICAgICAgIH0pO1xuXG4gICAgLy8gV2Fyc2hhbGwncyBhbGdvcml0aG0gaHR0cHM6Ly9jcy53aW5vbmEuZWR1L2xpbi9jczQ0MC9jaDA4LTIucGRmXG4gICAgbGV0IHRyYW5fY2xvc2UgPSAob3JkOiB0KTogdW5pdCA9PiB7XG4gICAgICBsZXQga2V5cyA9IExpc3Qub2Zfc2VxKEhhc2h0YmwudG9fc2VxX2tleXMob3JkKSk7XG4gICAgICBrZXlzXG4gICAgICB8PiBMaXN0Lml0ZXJpKChuLCBrKSA9PlxuICAgICAgICAgICBpZiAobiA9PSAwKSB7XG4gICAgICAgICAgICAgKCk7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAga2V5c1xuICAgICAgICAgICAgIHw+IExpc3QuaXRlcihpID0+XG4gICAgICAgICAgICAgICAgICBrZXlzXG4gICAgICAgICAgICAgICAgICB8PiBMaXN0Lml0ZXIoaiA9PlxuICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldChpLCBqLCBvcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShfKSA9PiAoKVxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldChpLCBrLCBvcmQpLCBnZXQoaywgaiwgb3JkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKE5vbmUsIF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoXywgTm9uZSkgPT4gKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChTb21lKF8pLCBTb21lKF8pKSA9PiBzZXQoaSwgaiwgb3JkKVxuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgIH1cbiAgICAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgQ291bnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbGFiZWxzOiBJZC5NYXAudChMYWJlbC50KSxcbiAgICAgIGNvdW50czogSWQuTWFwLnQoaW50KSxcbiAgICB9O1xuXG4gICAgbGV0IG9mX3RpbGUgPSAodDogVGlsZS50KSA9PiB7XG4gICAgICBsYWJlbHM6IElkLk1hcC5zaW5nbGV0b24odC5pZCwgdC5sYWJlbCksXG4gICAgICBjb3VudHM6IElkLk1hcC5zaW5nbGV0b24odC5pZCwgTGlzdC5sZW5ndGgodC5zaGFyZHMpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1lcmdlID0gKG06IHQsIG0nOiB0KSA9PiB7XG4gICAgICBsYWJlbHM6IElkLk1hcC51bmlvbigoXywgbGJsLCBfKSA9PiBTb21lKGxibCksIG0ubGFiZWxzLCBtJy5sYWJlbHMpLFxuICAgICAgY291bnRzOiBJZC5NYXAudW5pb24oKF8sIG4sIG4nKSA9PiBTb21lKG4gKyBuJyksIG0uY291bnRzLCBtJy5jb3VudHMpLFxuICAgIH07XG5cbiAgICBsZXQgbWVtID0gKGlkLCBtKSA9PiBJZC5NYXAubWVtKGlkLCBtLmxhYmVscyk7XG5cbiAgICBsZXQgZXhpc3RzX21lbSA9ICh0czogbGlzdChUaWxlLnQpLCBtKSA9PlxuICAgICAgTGlzdC5leGlzdHMoKHQ6IFRpbGUudCkgPT4gbWVtKHQuaWQsIG0pLCB0cyk7XG5cbiAgICBsZXQgaXNfY29tcGxldGUgPSAobTogdCkgPT5cbiAgICAgIG0uY291bnRzXG4gICAgICB8PiBJZC5NYXAuZm9yX2FsbCgoaWQsIG4pID0+XG4gICAgICAgICAgIG4gPT0gTGlzdC5sZW5ndGgoSWQuTWFwLmZpbmQoaWQsIG0ubGFiZWxzKSlcbiAgICAgICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIENvdW50cyA9IHtcbiAgICB0eXBlIHQgPSBJZC5VZi5zdG9yZShDb3VudC50KTtcbiAgICBpbmNsdWRlIElkLlVmO1xuICAgIGxldCBtZXJnZSA9IG1lcmdlKENvdW50Lm1lcmdlKTtcbiAgICBsZXQgYWRkX3RpbGUgPSAodDogVGlsZS50LCBjczogdCk6IHVuaXQgPT5cbiAgICAgIHN3aXRjaCAoZ2V0X29wdCh0LmlkLCBjcykpIHtcbiAgICAgIHwgTm9uZSA9PiBhZGQodC5pZCwgQ291bnQub2ZfdGlsZSh0KSwgY3MpXG4gICAgICB8IFNvbWUoYykgPT5cbiAgICAgICAgbGV0IGMgPSB7XG4gICAgICAgICAgLi4uYyxcbiAgICAgICAgICBjb3VudHM6XG4gICAgICAgICAgICBJZC5NYXAudXBkYXRlKFxuICAgICAgICAgICAgICB0LmlkLFxuICAgICAgICAgICAgICBPcHRpb24ubWFwKCgrKShMaXN0Lmxlbmd0aCh0LnNoYXJkcykpKSxcbiAgICAgICAgICAgICAgYy5jb3VudHMsXG4gICAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgICBzZXQodC5pZCwgYywgY3MpO1xuICAgICAgfTtcbiAgfTtcblxuICAvLyBTaGFyZHMgYXJlIGNvbnNpZGVyZWQgc2VsZWN0aW9uLW1hdGNoaW5nIGlmIHRoZXkgYXJlIHJlbGF0ZWQgdHJhbnNpdGl2ZWx5XG4gIC8vIGJ5IG5vcm1hbCB3aXRoaW4tdGlsZSBtYXRjaGluZyBvciBieSBzYW1lLXNlbGVjdGlvbi1jb250YWlubWVudC5cbiAgLy8gU2VsZWN0aW9uLW1hdGNoaW5nIHNoYXJkcyBhcmUgb3JkZXJlZCB0cmFuc2l0aXZlbHkgYnkgd2l0aGluLXRpbGVcbiAgLy8gb3JkZXJpbmcgYW5kIHNhbWUtc2VsZWN0aW9uIG9yZGVyaW5nIGNvbWJpbmVkIHdpdGggd2VsbC1uZXN0ZWRuZXNzLlxuICAvLyBSZXByZXNlbnRzIHRoZSBleHBlY3RlZCBvcmRlciBvZiBhbGwgc2VsZWN0aW9uLW1hdGNoaW5nIHNoYXJkcyBhc1xuICAvLyBpbXBvc2VkIGJ5IHNlbGVjdGlvbnMgaW4gdGhlIGJhY2twYWNrLCBhbG9uZyB3aXRoIGNvdW50cyBvZiB0aG9zZVxuICAvLyBzaGFyZHMgY29udGFpbmVkIGluIHRoZSBiYWNrcGFjay5cbiAgLy8gQ291bnRzIGFyZSBwYXJ0aXRpb25lZCBieSB0aGUgc2VsZWN0aW9uLW1hdGNoaW5nIHJlbGF0aW9uLlxuICB0eXBlIHQgPSB7XG4gICAgb3JkZXI6IE9yZGVyLnQsXG4gICAgY291bnRzOiBDb3VudHMudCxcbiAgfTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtvcmRlcjogT3JkZXIuaW5pdCgpLCBjb3VudHM6IENvdW50cy5pbml0KCl9O1xuXG4gIGxldCBhZGRfc2VsID0gKHNlbDogU2VsZWN0aW9uLnQsIHtjb3VudHMsIG9yZGVyfTogdCk6IHVuaXQgPT4ge1xuICAgIGxldCB0cyA9IFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzZWwuY29udGVudCk7XG4gICAgLy8gaW5pdGlhbGl6ZVxuICAgIHRzXG4gICAgfD4gTGlzdC5pdGVyKCh0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgIENvdW50cy5hZGRfdGlsZSh0LCBjb3VudHMpO1xuICAgICAgICAgT3JkZXIuYWRkX3RpbGUodC5pZCwgdC5sYWJlbCwgb3JkZXIpO1xuICAgICAgIH0pO1xuICAgIC8vIG1lcmdlIGNvdW50c1xuICAgIGlnbm9yZShcbiAgICAgIHRzXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHByZXY6IG9wdGlvbihUaWxlLnQpLCBjdXJyOiBUaWxlLnQpID0+IHtcbiAgICAgICAgICAgICBzd2l0Y2ggKHByZXYpIHtcbiAgICAgICAgICAgICB8IE5vbmUgPT4gKClcbiAgICAgICAgICAgICB8IFNvbWUocHJldikgPT4gQ291bnRzLm1lcmdlKHByZXYuaWQsIGN1cnIuaWQsIGNvdW50cylcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIFNvbWUoY3Vycik7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIE5vbmUsXG4gICAgICAgICApLFxuICAgICk7XG4gICAgLy8gcHJvcGFnYXRlIHdlbGwtbmVzdGVkIG9yZGVyaW5nIGNvbnN0cmFpbnRzXG4gICAgTGlzdFV0aWwub3JkZXJlZF9wYWlycyh0cylcbiAgICB8PiBMaXN0Lml0ZXIoKChsOiBUaWxlLnQsIHI6IFRpbGUudCkpID0+IHtcbiAgICAgICAgIGxldCAobl9sLCBuX3IpID0gTGlzdC4obGVuZ3RoKGwubGFiZWwpLCBsZW5ndGgoci5sYWJlbCkpO1xuICAgICAgICAgbGV0IChpX2wsIGlfcikgPSBUaWxlLihyX3NoYXJkKGwpLCBsX3NoYXJkKHIpKTtcbiAgICAgICAgIE9yZGVyLnNldCgobC5pZCwgaV9sKSwgKHIuaWQsIGlfciksIG9yZGVyKTtcbiAgICAgICAgIGlmIChpX2wgPT0gbl9sIC0gMSAmJiBpX3IgIT0gMCkge1xuICAgICAgICAgICAvLyBsIG11c3QgYmUgbmVzdGVkIHdpdGhpbiByXG4gICAgICAgICAgIE9yZGVyLnNldChcbiAgICAgICAgICAgICAoci5pZCwgaV9yIC0gMSksXG4gICAgICAgICAgICAgKGwuaWQsIDApLFxuICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICApO1xuICAgICAgICAgfSBlbHNlIGlmIChpX2wgIT0gbl9sIC0gMSAmJiBpX3IgPT0gMCkge1xuICAgICAgICAgICAvLyByIG11c3QgYmUgbmVzdGVkIHdpdGhpbiBsXG4gICAgICAgICAgIE9yZGVyLnNldChcbiAgICAgICAgICAgICAoci5pZCwgbl9yIC0gMSksXG4gICAgICAgICAgICAgKGwuaWQsIGlfbCArIDEpLFxuICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICApO1xuICAgICAgICAgfTtcbiAgICAgICB9KTtcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoU2VsZWN0aW9uLnQpO1xuXG5sZXQgZW1wdHkgPSBbXTtcblxubGV0IHNoYXJkX2luZm8gPSAoYnA6IHQpID0+IHtcbiAgb3BlbiBTaGFyZEluZm87XG4gIGxldCBpbmZvID0gaW5pdCgpO1xuICBicCB8PiBMaXN0Lml0ZXIoc2VsID0+IGFkZF9zZWwoc2VsLCBpbmZvKSk7XG4gIE9yZGVyLnRyYW5fY2xvc2UoaW5mby5vcmRlcik7XG4gIGluZm87XG59O1xuXG4vKiBQRVJGOiBUaGlzIGJlY29tZXMgdmVyeSBjb3N0bHkgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgdGhpbmdzXG4gICBpbiB0aGUgYmFja3BhY2s7IGUuZy4gaWYgeW91IG9wZW4gMjMgcGFyZW5zLCBpdCdzIGFsbW9zdCAxMDAlXG4gICBvZiB0aGUga2V5c3Rva2UgY29zdCwgZm9yIGEgNTV4IHRvdGFsIHNsb3dkb3duICAqL1xubGV0IHNoYXJkX2luZm8gPSBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBzaGFyZF9pbmZvKTtcblxubGV0IHB1c2ggPSBzZWwgPT4gU2VsZWN0aW9uLmlzX2VtcHR5KHNlbCkgPyBGdW4uaWQgOiBMaXN0LmNvbnMoc2VsKTtcblxubGV0IHB1c2hfczogKGxpc3QoU2VsZWN0aW9uLnQpLCB0KSA9PiB0ID0gTGlzdC5mb2xkX3JpZ2h0KHB1c2gpO1xuXG5sZXQgcG9wID1cbiAgICAoKHByZSwgc3VmKTogKGxpc3QoVGlsZS50KSwgbGlzdChUaWxlLnQpKSwgYnA6IHQpXG4gICAgOiBvcHRpb24oKGJvb2wsIFNlbGVjdGlvbi50LCB0KSkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQqIChoZCwgdGwpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0KGJwKTtcbiAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoaGQuY29udGVudCkpIHtcbiAgfCBbXSA9PiBTb21lKCh0cnVlLCBoZCwgdGwpKVxuICB8IFt0LCAuLi5fXSBhcyB0cyA9PlxuICAgIG9wZW4gU2hhcmRJbmZvO1xuICAgIGxldCB7Y291bnRzLCBvcmRlcn0gPSBzaGFyZF9pbmZvKGJwKTtcbiAgICBsZXQgY291bnQgPSBDb3VudHMuZ2V0KHQuaWQsIGNvdW50cyk7XG4gICAgbGV0IGZpcnN0ID0gQ291bnQuaXNfY29tcGxldGUoY291bnQpO1xuICAgIGZpcnN0XG4gICAgfHwgKENvdW50LmV4aXN0c19tZW0ocHJlLCBjb3VudCkgfHwgQ291bnQuZXhpc3RzX21lbShzdWYsIGNvdW50KSlcbiAgICAmJiBPcmRlci5sdF9vcl91bihwcmUsIHRzLCBvcmRlcilcbiAgICAmJiBPcmRlci5sdF9vcl91bih0cywgc3VmLCBvcmRlcilcbiAgICAgID8gU29tZSgoZmlyc3QsIGhkLCB0bCkpIDogTm9uZTtcbiAgfTtcbn07XG5cbmxldCByZXN0cmljdGVkID0gKGJwOiB0KTogYm9vbCA9PlxuICBzd2l0Y2ggKGJwKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbaGQsIC4uLl9dID0+XG4gICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoaGQuY29udGVudCkpIHtcbiAgICB8IFtdID0+IGZhbHNlXG4gICAgfCBbdCwgLi4uX10gPT5cbiAgICAgIG9wZW4gU2hhcmRJbmZvO1xuICAgICAgbGV0IGluZm8gPSBzaGFyZF9pbmZvKGJwKTtcbiAgICAgICFDb3VudC5pc19jb21wbGV0ZShDb3VudHMuZ2V0KHQuaWQsIGluZm8uY291bnRzKSk7XG4gICAgfVxuICB9O1xuXG5sZXQgcmVtb3ZlX21hdGNoaW5nID0gKHRzOiBsaXN0KFRpbGUudCksIGJwOiB0KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoYnAsIHQ6IFRpbGUudCkgPT5cbiAgICAgIGJwXG4gICAgICB8PiBMaXN0Lm1hcChTZWxlY3Rpb24ubWFwKFNlZ21lbnQucmVtb3ZlX21hdGNoaW5nKHQpKSlcbiAgICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgZnVuXG4gICAgICAgICAgIHwgc2VsIHdoZW4gIVNlbGVjdGlvbi5pc19lbXB0eShzZWwpID0+IFNvbWUoc2VsKVxuICAgICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICAgICksXG4gICAgYnAsXG4gICAgdHMsXG4gICk7XG5cbmxldCB3aWxsX2JhcmYgPSAodDogVG9rZW4udCwgYnA6IHQpOiBib29sID0+XG4gIC8qIERvZXMgdGhlIGZpcnN0IHNlbGVjdGlvbiBpbiB0aGUgYmFja3BhY2sgY29uc2lzdFxuICAgICBvZiBhIHNpbmdsZSB0b2tlbiB3aGljaCBtYXRjaGVzIHRoZSBvbmUgcHJvdmlkZWQ/ICovXG4gIHN3aXRjaCAoYnApIHtcbiAgfCBbXSA9PiBmYWxzZVxuICB8IFt7Y29udGVudDogW3BdLCBffSwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKHApIHtcbiAgICB8IFRpbGUoe3NoYXJkczogW2ldLCBsYWJlbCwgX30pID0+XG4gICAgICBhc3NlcnQoaSA8IExpc3QubGVuZ3RoKGxhYmVsKSk7XG4gICAgICBMaXN0Lm50aChsYWJlbCwgaSkgPT0gdDtcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9XG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgcmVtb3ZlX3VuaV90aWxlc193aXRoX2RlZXBfbWF0Y2hlcyA9IChicDogdCwgc2VsOiBTZWxlY3Rpb24udCk6IHQgPT4ge1xuICAvKiBUaGlzIGlzIGEgaGFjayB0byBwcmV2ZW50IGluY29tcGxldGUgdGlsZXMgaW5zaWRlIHNlbGVjdGlvbiB0aWxlc1xuICAgKiBmcm9tIGJlaW5nIG9ycGhhbmVkIG9uIGRlbGV0aW9uLCBlLmcuIGlmIHlvdSBkZWxldGUgc2VnbWVudCBcIihbKVwiXG4gICAqIHdpdGggXCJdXCIgaW4gdGhlIGJhY2twYWNrLiAgKi9cbiAgbGV0IGlkcyA9IFNlZ21lbnQuaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkZWxpbWl0ZWRzKHNlbC5jb250ZW50KTtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgU2VsZWN0aW9uLntjb250ZW50OiBbUGllY2UuVGlsZSh7aWQsIF99KV0sIF99IHdoZW4gTGlzdC5tZW0oaWQsIGlkcykgPT5cbiAgICAgIE5vbmVcbiAgICB8IHggPT4gU29tZSh4KSxcbiAgICBicCxcbiAgKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2libGluZ3M6IFNpYmxpbmdzLnQsXG4gIGFuY2VzdG9yczogQW5jZXN0b3JzLnQsXG59O1xuXG5sZXQgZW1wdHkgPSB7c2libGluZ3M6IFNpYmxpbmdzLmVtcHR5LCBhbmNlc3RvcnM6IEFuY2VzdG9ycy5lbXB0eX07XG5cbmxldCBwdXNoID0gKGQ6IERpcmVjdGlvbi50LCBwOiBQaWVjZS50LCByczogdCk6IHQgPT4ge1xuICAuLi5ycyxcbiAgc2libGluZ3M6IFNpYmxpbmdzLnB1c2goZCwgcCwgcnMuc2libGluZ3MpLFxufTtcblxubGV0IHByZXBlbmQgPSAoZDogRGlyZWN0aW9uLnQsIHNlZzogU2VnbWVudC50LCByczogdCk6IHQgPT4ge1xuICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5wcmVwZW5kKGQsIHNlZywgcnMuc2libGluZ3MpO1xuICB7Li4ucnMsIHNpYmxpbmdzfTtcbn07XG5cbmxldCBwb3AgPSAoZDogRGlyZWN0aW9uLnQsIHJzOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChTaWJsaW5ncy5wb3AoZCwgcnMuc2libGluZ3MpKSB7XG4gIHwgU29tZSgocCwgc2libGluZ3MpKSA9PiBTb21lKChwLCB7Li4ucnMsIHNpYmxpbmdzfSkpXG4gIHwgTm9uZSA9PlxuICAgIHN3aXRjaCAocnMuYW5jZXN0b3JzKSB7XG4gICAgfCBbXSA9PiBOb25lXG4gICAgfCBbKGFuY2VzdG9yLCBzaWJsaW5ncyksIC4uLmFuY2VzdG9yc10gPT5cbiAgICAgIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gICAgICBsZXQgc2libGluZ3MnID0gQW5jZXN0b3IuZGlzYXNzZW1ibGUoYW5jZXN0b3IpO1xuICAgICAgbGV0KyAocCwgc2libGluZ3MpID1cbiAgICAgICAgU2libGluZ3MuKHBvcChkLCBjb25jYXQoW3JzLnNpYmxpbmdzLCBzaWJsaW5ncycsIHNpYmxpbmdzXSkpKTtcbiAgICAgIChwLCB7c2libGluZ3MsIGFuY2VzdG9yc30pO1xuICAgIH1cbiAgfTtcblxubGV0IHppcCA9ICh+c2VsPVNlZ21lbnQuZW1wdHksIHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCkgPT5cbiAgQW5jZXN0b3JzLnppcChTaWJsaW5ncy56aXAofnNlbCwgc2libGluZ3MpLCBhbmNlc3RvcnMpO1xuXG5sZXQgbG9jYWxfaW5jb21wbGV0ZV90aWxlcyA9ICh7c2libGluZ3M6IChwcmUsIHN1ZiksIGFuY2VzdG9yc306IHQpID0+IHtcbiAgbGV0IHNpYnMgPVxuICAgIHN3aXRjaCAoYW5jZXN0b3JzKSB7XG4gICAgfCBbXSA9PiAocHJlLCBzdWYpXG4gICAgfCBbKGEsIF8pLCAuLi5fXSA9PlxuICAgICAgbGV0IChsLCByKSA9IEFuY2VzdG9yLmNvbnRhaW5lcl9zaGFyZHMoYSk7XG4gICAgICAoW2wsIC4uLnByZV0sIHN1ZiBAIFtyXSk7XG4gICAgfTtcbiAgU2libGluZ3MuaW5jb21wbGV0ZV90aWxlcyhzaWJzKTtcbn07XG5cbmxldCBwYXJlbnQgPVxuICAgICh+c2VsPVNlZ21lbnQuZW1wdHksIHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgYW5jZXN0b3JzfTogdClcbiAgICA6IG9wdGlvbihQaWVjZS50KSA9PlxuICBhbmNlc3RvcnNcbiAgfD4gQW5jZXN0b3JzLnBhcmVudFxuICB8PiBPcHRpb24ubWFwKHAgPT4gQmFzZS5UaWxlKEFuY2VzdG9yLnppcChsX3NpYnMgQCBzZWwgQCByX3NpYnMsIHApKSk7XG5cbmxldCBkZWxldGVfcGFyZW50ID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IHQgPT4ge1xuICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICB8IFtdID0+IHtzaWJsaW5ncywgYW5jZXN0b3JzfVxuICB8IFsoXywgcF9zaWJzKSwgLi4uYW5jZXN0b3JzXSA9PiB7XG4gICAgICBzaWJsaW5nczogU2libGluZ3MuY29uY2F0KFtzaWJsaW5ncywgcF9zaWJzXSksXG4gICAgICBhbmNlc3RvcnMsXG4gICAgfVxuICB9O1xufTtcblxubGV0IGRpc2Fzc2VtYmxlID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IFNpYmxpbmdzLnQgPT5cbiAgU2libGluZ3MuY29uY2F0KFtzaWJsaW5ncywgQW5jZXN0b3JzLmRpc2Fzc2VtYmxlKGFuY2VzdG9ycyldKTtcblxubGV0IHJlbW9sZCA9ICh7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiB0ID0+IHtcbiAgbGV0IHMgPSBBbmNlc3RvcnMuc29ydChhbmNlc3RvcnMpO1xuICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5yZW1vbGQoc2libGluZ3MsIHMpO1xuICB7YW5jZXN0b3JzLCBzaWJsaW5nc307XG59O1xuXG5sZXQgcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwge3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogdCA9PiB7XG4gIC8qIERpcmVjdGlvbiBpcyBzaWRlIG9mIGdyb3V0IGNhcmV0IHdpbGwgZW5kIHVwIG9uICovXG5cbiAgbGV0IGFuY2VzdG9ycyA9IEFuY2VzdG9ycy5yZWdyb3V0KGFuY2VzdG9ycyk7XG4gIGxldCBzaWJsaW5ncyA9IHtcbiAgICBsZXQgKChwcmUsIHNfbCwgdHJpbV9sKSwgKHRyaW1fciwgc19yLCBzdWYpKSA9XG4gICAgICBTaWJsaW5ncy5yZWdyb3V0KHNpYmxpbmdzKTtcbiAgICBsZXQgKHRyaW1fbCwgdHJpbV9yKSA9IHtcbiAgICAgIG9wZW4gU2VnbWVudC5UcmltO1xuICAgICAgbGV0ICgoXywgZ3NfbCksIChfLCBnc19yKSkgPSAodHJpbV9sLCB0cmltX3IpO1xuICAgICAgbGV0IChzZWdfbCwgc2VnX3IpID0gKHRvX3NlZyh0cmltX2wpLCB0b19zZWcodHJpbV9yKSk7XG4gICAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KGdzX2wpLCBnc19yKSB7XG4gICAgICB8IChTb21lKChfLCBnX2wpKSwgW2dfciwgLi4uX10pID0+XG4gICAgICAgIEdyb3V0LmZpdHMoZ19sLCBnX3IpXG4gICAgICAgICAgLy8gbm90ZTogYXNzdW1lcyBzaW5nbGUgZ3JvdXQgaW52YXJpYW50IGluIHVuLWNhcmV0LWludGVycnVwdGVkIHRyaW1cbiAgICAgICAgICA/ICh3cyh0cmltX2wpLCB3cyh0cmltX3IpKSAgLy8od3ModHJpbV9sKSwgc2VnX3IpXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgIHwgTGVmdCA9PiAod3ModHJpbV9sKSwgc2VnX3IpXG4gICAgICAgICAgICB8IFJpZ2h0ID0+IChzZWdfbCwgd3ModHJpbV9yKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB8IChTb21lKChfLCBnKSksIFtdKSA9PlxuICAgICAgICBHcm91dC5maXRzX3NoYXBlKGcsIHNfcikgPyAoc2VnX2wsIHNlZ19yKSA6ICh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgIHwgKE5vbmUsIFtnLCAuLi5fXSkgPT5cbiAgICAgICAgR3JvdXQuZml0c19zaGFwZShnLCBzX2wpID8gKHNlZ19sLCBzZWdfcikgOiAoc2VnX2wsIHdzKHRyaW1fcikpXG4gICAgICB8IChOb25lLCBbXSkgPT5cbiAgICAgICAgTmliLlNoYXBlLmZpdHMoc19sLCBzX3IpXG4gICAgICAgICAgPyAoc2VnX2wsIHNlZ19yKVxuICAgICAgICAgIC8vIGNhbiBtb2R1bGF0ZSB3aXRoIGRpcmVjdGlvbmFsIGFyZ1xuICAgICAgICAgIDogKFxuICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICB8IExlZnQgPT5cbiAgICAgICAgICAgICAgbGV0IHRyaW0gPSBhZGRfZ3JvdXQofmQ9UmlnaHQsIHNfciwgdHJpbV9yKTtcbiAgICAgICAgICAgICAgKHNlZ19sLCB0b19zZWcodHJpbSkpO1xuICAgICAgICAgICAgfCBSaWdodCA9PlxuICAgICAgICAgICAgICBsZXQgdHJpbSA9IGFkZF9ncm91dCh+ZD1MZWZ0LCBzX2wsIHRyaW1fbCk7XG4gICAgICAgICAgICAgICh0b19zZWcodHJpbSksIHNlZ19yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB9O1xuICAgIH07XG4gICAgKHByZSBAIHRyaW1fbCwgdHJpbV9yIEAgc3VmKTtcbiAgfTtcbiAge3NpYmxpbmdzLCBhbmNlc3RvcnN9O1xufTtcblxubGV0IHByZXBlbmRfZ2VuZXJhdGlvbiA9ICgoYSwgc2licyk6IEFuY2VzdG9ycy5nZW5lcmF0aW9uLCByczogdCk6IHQgPT4ge1xuICBzaWJsaW5nczogU2libGluZ3MuZW1wdHksXG4gIGFuY2VzdG9yczogWyhhLCBTaWJsaW5ncy5jb25jYXQoW3NpYnMsIHJzLnNpYmxpbmdzXSkpLCAuLi5ycy5hbmNlc3RvcnNdLFxufTtcbmxldCBwcmVwZW5kX3NpYmxpbmdzID0gKHNpYnM6IFNpYmxpbmdzLnQsIHJzOiB0KTogdCA9PiB7XG4gIC4uLnJzLFxuICBzaWJsaW5nczogU2libGluZ3MuY29uY2F0KFtzaWJzLCBycy5zaWJsaW5nc10pLFxufTtcblxubGV0IGNvbmNhdCA9IChyc3M6IGxpc3QodCkpOiB0ID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAocnM6IHQsIGNhdDogdCkgPT5cbiAgICAgIExpc3QuZm9sZF9yaWdodChwcmVwZW5kX2dlbmVyYXRpb24sIHJzLmFuY2VzdG9ycywgY2F0KVxuICAgICAgfD4gcHJlcGVuZF9zaWJsaW5ncyhycy5zaWJsaW5ncyksXG4gICAgcnNzLFxuICAgIGVtcHR5LFxuICApO1xuXG5sZXQgcmVhc3NlbWJsZV9wYXJlbnQgPSAocnM6IHQpOiB0ID0+XG4gIHN3aXRjaCAocnMuYW5jZXN0b3JzKSB7XG4gIHwgW10gPT4gcnNcbiAgfCBbKGEsIHNpYnMpLCAuLi5hbmNzXSA9PlxuICAgIGxldCAobCwgcikgPVxuICAgICAgcnMuc2libGluZ3NcbiAgICAgIHw+IFNpYmxpbmdzLnNwbGl0X2J5X21hdGNoaW5nKGEuaWQpXG4gICAgICB8PiBUdXBsZVV0aWwubWFwMihBYmEudHJpbSk7XG4gICAgbGV0IGZsYXR0ZW5fbWF0Y2ggPVxuICAgICAgQWJhLmZvbGRfcmlnaHQoXG4gICAgICAgICh0OiBUaWxlLnQsIGtpZCwgKHNoYXJkcywga2lkcykpID0+XG4gICAgICAgICAgQWJhLm1rKHQuc2hhcmRzIEAgc2hhcmRzLCB0LmNoaWxkcmVuIEAgW2tpZCwgLi4ua2lkc10pLFxuICAgICAgICAodDogVGlsZS50KSA9PiBBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pLFxuICAgICAgKTtcbiAgICBsZXQgKGEsIGwpID1cbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBOb25lID0+IChhLCBmc3QocnMuc2libGluZ3MpKVxuICAgICAgfCBTb21lKChvdXRlcl9sLCBtYXRjaF9sLCBpbm5lcl9sKSkgPT5cbiAgICAgICAgbGV0IChzaGFyZHNfbCwga2lkc19sKSA9IGZsYXR0ZW5fbWF0Y2gobWF0Y2hfbCk7XG4gICAgICAgIGxldCBhID0ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgc2hhcmRzOiBhLnNoYXJkcyB8PiBQYWlyVXRpbC5tYXBfZnN0KHNzID0+IHNzIEAgc2hhcmRzX2wpLFxuICAgICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgICAgYS5jaGlsZHJlblxuICAgICAgICAgICAgfD4gUGFpclV0aWwubWFwX2ZzdChraWRzID0+IGtpZHMgQCBbb3V0ZXJfbCwgLi4ua2lkc19sXSksXG4gICAgICAgIH07XG4gICAgICAgIChhLCBpbm5lcl9sKTtcbiAgICAgIH07XG4gICAgbGV0IChhLCByKSA9XG4gICAgICBzd2l0Y2ggKHIpIHtcbiAgICAgIHwgTm9uZSA9PiAoYSwgc25kKHJzLnNpYmxpbmdzKSlcbiAgICAgIHwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpID0+XG4gICAgICAgIGxldCAoc2hhcmRzX3IsIGtpZHNfcikgPSBmbGF0dGVuX21hdGNoKG1hdGNoX3IpO1xuICAgICAgICBsZXQgYSA9IHtcbiAgICAgICAgICAuLi5hLFxuICAgICAgICAgIHNoYXJkczogYS5zaGFyZHMgfD4gUGFpclV0aWwubWFwX3NuZChzcyA9PiBzaGFyZHNfciBAIHNzKSxcbiAgICAgICAgICBjaGlsZHJlbjpcbiAgICAgICAgICAgIGEuY2hpbGRyZW5cbiAgICAgICAgICAgIHw+IFBhaXJVdGlsLm1hcF9zbmQoa2lkcyA9PiBbb3V0ZXJfciwgLi4ua2lkc19yXSBAIGtpZHMpLFxuICAgICAgICB9O1xuICAgICAgICAoYSwgaW5uZXJfcik7XG4gICAgICB9O1xuICAgIHtzaWJsaW5nczogKGwsIHIpLCBhbmNlc3RvcnM6IFsoYSwgc2licyksIC4uLmFuY3NdfTtcbiAgfTtcblxubGV0IHJlYXNzZW1ibGVfc2libGluZ3MgPSAocnM6IHQpID0+IHtcbiAgLi4ucnMsXG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5yZWFzc2VtYmxlKHJzLnNpYmxpbmdzKSxcbn07XG5cbmxldCByZWFzc2VtYmxlID0gKHJzOiB0KTogdCA9PiB7XG4gIGxldCByZWMgZ28gPSAocnM6IHQpOiB0ID0+XG4gICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc25kKHJzLnNpYmxpbmdzKSkpIHtcbiAgICB8IFtdID0+IHJzXG4gICAgfCBbdCwgLi4uX10gPT5cbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIHJzLnNpYmxpbmdzXG4gICAgICAgIHw+IFNpYmxpbmdzLnNwbGl0X2J5X21hdGNoaW5nKHQuaWQpXG4gICAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKVxuICAgICAgKSB7XG4gICAgICB8IChfLCBOb25lKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgICAgIHwgKE5vbmUsIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbiAgICAgICAgbGV0IHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfSA9XG4gICAgICAgICAgZ28oey4uLnJzLCBzaWJsaW5nczogKGZzdChycy5zaWJsaW5ncyksIG91dGVyX3IpfSk7XG4gICAgICAgIGxldCB0ID0gVGlsZS5yZWFzc2VtYmxlKG1hdGNoX3IpO1xuICAgICAgICBsZXQgc3VmID0gU2VnbWVudC5jb25jYXQoW2lubmVyX3IsIFtUaWxlLnRvX3BpZWNlKHQpLCAuLi5zdWZdXSk7XG4gICAgICAgIHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfTtcbiAgICAgIHwgKFxuICAgICAgICAgIFNvbWUoKG91dGVyX2wsIG1hdGNoX2wsIGlubmVyX2wpKSxcbiAgICAgICAgICBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSksXG4gICAgICAgICkgPT5cbiAgICAgICAgbGV0IHJzID0gZ28oey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIG91dGVyX3IpfSk7XG4gICAgICAgIGxldCBhbmNlc3RvcnMgPSBbXG4gICAgICAgICAgKEFuY2VzdG9yLnJlYXNzZW1ibGUobWF0Y2hfbCwgbWF0Y2hfciksIHJzLnNpYmxpbmdzKSxcbiAgICAgICAgICAuLi5ycy5hbmNlc3RvcnMsXG4gICAgICAgIF07XG4gICAgICAgIGxldCBzaWJsaW5ncyA9IChpbm5lcl9sLCBpbm5lcl9yKTtcbiAgICAgICAge2FuY2VzdG9ycywgc2libGluZ3N9O1xuICAgICAgfVxuICAgIH07XG4gIHJzIHw+IHJlYXNzZW1ibGVfc2libGluZ3MgfD4gcmVhc3NlbWJsZV9wYXJlbnQgfD4gZ287XG59O1xuXG4vLyBsZXQgcmVjIHJlYXNzZW1ibGUgPSAocnM6IHQpOiB0ID0+IHtcbi8vICAgbGV0IHNpYmxpbmdzID0gU2libGluZ3MucmVhc3NlbWJsZShycy5zaWJsaW5ncyk7XG4vLyAgIHN3aXRjaCAoU2libGluZ3MuaW5jb21wbGV0ZV90aWxlcyhzaWJsaW5ncykpIHtcbi8vICAgfCAoW10sIF8pXG4vLyAgIHwgKF8sIFtdKSA9PiB7Li4ucnMsIHNpYmxpbmdzfVxuLy8gICB8IChbXywgLi4uX10sIFt0LCAuLi5fXSkgPT5cbi8vICAgICBzd2l0Y2ggKFxuLy8gICAgICAgc2libGluZ3Ncbi8vICAgICAgIHw+IFNpYmxpbmdzLnNwbGl0X2J5X21hdGNoaW5nKHQuaWQpXG4vLyAgICAgICB8PiBUdXBsZVV0aWwubWFwMihBYmEudHJpbSlcbi8vICAgICApIHtcbi8vICAgICB8IChOb25lLCBOb25lKSA9PiB7Li4ucnMsIHNpYmxpbmdzfVxuLy8gICAgIHwgKE5vbmUsIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbi8vICAgICAgIGxldCB7c2libGluZ3M6IChsLCByKSwgYW5jZXN0b3JzfSA9XG4vLyAgICAgICAgIHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKGZzdChzaWJsaW5ncyksIG91dGVyX3IpfSk7XG4vLyAgICAgICB7XG4vLyAgICAgICAgIHNpYmxpbmdzOiAoXG4vLyAgICAgICAgICAgbCxcbi8vICAgICAgICAgICBTZWdtZW50LmNvbmNhdChbaW5uZXJfciwgQW5jZXN0b3IuTWF0Y2guU3VmZml4LmpvaW4obWF0Y2hfciksIHJdKSxcbi8vICAgICAgICAgKSxcbi8vICAgICAgICAgYW5jZXN0b3JzLFxuLy8gICAgICAgfTtcbi8vICAgICB8IChTb21lKChpbm5lcl9sLCBtYXRjaF9sLCBvdXRlcl9sKSksIE5vbmUpID0+XG4vLyAgICAgICBsZXQge3NpYmxpbmdzOiAobCwgciksIGFuY2VzdG9yc30gPVxuLy8gICAgICAgICByZWFzc2VtYmxlKHsuLi5ycywgc2libGluZ3M6IChvdXRlcl9sLCBzbmQocnMuc2libGluZ3MpKX0pO1xuLy8gICAgICAge1xuLy8gICAgICAgICBzaWJsaW5nczogKFxuLy8gICAgICAgICAgIFNlZ21lbnQuY29uY2F0KFtpbm5lcl9sLCBBbmNlc3Rvci5NYXRjaC5TdWZmaXguam9pbihtYXRjaF9sKSwgbF0pLFxuLy8gICAgICAgICAgIHIsXG4vLyAgICAgICAgICksXG4vLyAgICAgICAgIGFuY2VzdG9ycyxcbi8vICAgICAgIH07XG4vLyAgICAgfCAoU29tZSgoaW5uZXJfbCwgbWF0Y2hfbCwgb3V0ZXJfbCkpLCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkpID0+XG4vLyAgICAgICBsZXQgbWF0Y2ggPSAobWF0Y2hfbCwgbWF0Y2hfcik7XG4vLyAgICAgICBsZXQgcnNfaW5uZXIgPVxuLy8gICAgICAgICBzd2l0Y2ggKEFuY2VzdG9yLk1hdGNoLmNvbXBsZXRlKG1hdGNoKSkge1xuLy8gICAgICAgICB8IE5vbmUgPT4ge1xuLy8gICAgICAgICAgICAgc2libGluZ3M6XG4vLyAgICAgICAgICAgICAgIFNpYmxpbmdzLmNvbmNhdChbXG4vLyAgICAgICAgICAgICAgICAgKGlubmVyX2wsIGlubmVyX3IpLFxuLy8gICAgICAgICAgICAgICAgIEFuY2VzdG9yLk1hdGNoLmpvaW4obWF0Y2gpLFxuLy8gICAgICAgICAgICAgICBdKSxcbi8vICAgICAgICAgICAgIGFuY2VzdG9yczogQW5jZXN0b3JzLmVtcHR5LFxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfCBTb21lKGEpID0+IHtcbi8vICAgICAgICAgICAgIHNpYmxpbmdzOiAoaW5uZXJfbCwgaW5uZXJfciksXG4vLyAgICAgICAgICAgICBhbmNlc3RvcnM6IFsoYSwgU2libGluZ3MuZW1wdHkpXSxcbi8vICAgICAgICAgICB9XG4vLyAgICAgICAgIH07XG4vLyAgICAgICBsZXQgcnNfb3V0ZXIgPSByZWFzc2VtYmxlKHsuLi5ycywgc2libGluZ3M6IChvdXRlcl9sLCBvdXRlcl9yKX0pO1xuLy8gICAgICAgY29uY2F0KFtyc19pbm5lciwgcnNfb3V0ZXJdKTtcbi8vICAgICB9XG4vLyAgIH07XG4vLyB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbm1vZHVsZSBDYXJldCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgT3V0ZXJcbiAgICB8IElubmVyKGludCwgaW50KTtcblxuICBsZXQgZGVjcmVtZW50OiB0ID0+IHQgPVxuICAgIGZ1blxuICAgIHwgT3V0ZXJcbiAgICB8IElubmVyKF8sIDApID0+IE91dGVyXG4gICAgfCBJbm5lcihkLCBjKSA9PiBJbm5lcihkLCBjIC0gMSk7XG5cbiAgbGV0IG9mZnNldDogdCA9PiBpbnQgPVxuICAgIGZ1blxuICAgIHwgT3V0ZXIgPT4gMFxuICAgIHwgSW5uZXIoXywgYykgPT4gYyArIDE7XG59O1xuXG4vLyBhc3N1bWluZyBzaW5nbGUgYmFja3BhY2ssIHNoYXJkcyBtYXkgYXBwZWFyIGluIHNlbGVjdGlvbiwgYmFja3BhY2ssIG9yIHNpYmxpbmdzXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLnQsXG4gIGJhY2twYWNrOiBCYWNrcGFjay50LFxuICByZWxhdGl2ZXM6IFJlbGF0aXZlcy50LFxuICBjYXJldDogQ2FyZXQudCxcbiAgLy8gY29sX3RhcmdldDogaW50LFxufTtcblxubGV0IGluaXQ6IHVuaXQgPT4gdCA9XG4gICgpID0+IHtcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbi5tayhbXSksXG4gICAgYmFja3BhY2s6IFtdLFxuICAgIHJlbGF0aXZlczoge1xuICAgICAgc2libGluZ3M6IChbXSwgW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSksXG4gICAgICBhbmNlc3RvcnM6IFtdLFxuICAgIH0sXG4gICAgY2FyZXQ6IE91dGVyLFxuICAgIC8vIGNvbF90YXJnZXQ6IDAsXG4gIH07XG5cbmxldCBuZXh0X2JsYW5rID0gXyA9PiBJZC5taygpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNodW5raW5lc3MgPVxuICB8IEJ5Q2hhclxuICB8IE1vbm9CeUNoYXJcbiAgfCBCeVRva2VuO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBsYW5hciA9XG4gIHwgVXBcbiAgfCBEb3duXG4gIHwgTGVmdChjaHVua2luZXNzKVxuICB8IFJpZ2h0KGNodW5raW5lc3MpO1xuXG5sZXQgZnJvbV9wbGFuZTogcGxhbmFyID0+IERpcmVjdGlvbi50ID1cbiAgZnVuXG4gIHwgTGVmdChfKSA9PiBMZWZ0XG4gIHwgUmlnaHQoXykgPT4gUmlnaHRcbiAgfCBVcCA9PiBMZWZ0XG4gIHwgRG93biA9PiBSaWdodDtcblxubGV0IHVwZGF0ZV9jYXJldCA9IChmOiBDYXJldC50ID0+IENhcmV0LnQsIHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgY2FyZXQ6IGYoei5jYXJldCksXG59O1xubGV0IHNldF9jYXJldCA9IChjYXJldDogQ2FyZXQudCk6ICh0ID0+IHQpID0+IHVwZGF0ZV9jYXJldChfID0+IGNhcmV0KTtcblxubGV0IHVwZGF0ZV9yZWxhdGl2ZXMgPSAoZjogUmVsYXRpdmVzLnQgPT4gUmVsYXRpdmVzLnQsIHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgcmVsYXRpdmVzOiBmKHoucmVsYXRpdmVzKSxcbn07XG5cbmxldCB1cGRhdGVfc2libGluZ3M6IChTaWJsaW5ncy50ID0+IFNpYmxpbmdzLnQsIHQpID0+IHQgPVxuICBmID0+IHVwZGF0ZV9yZWxhdGl2ZXMocnMgPT4gey4uLnJzLCBzaWJsaW5nczogZihycy5zaWJsaW5ncyl9KTtcblxubGV0IHBhcmVudCA9ICh6OiB0KTogb3B0aW9uKFBpZWNlLnQpID0+XG4gIFJlbGF0aXZlcy5wYXJlbnQofnNlbD16LnNlbGVjdGlvbi5jb250ZW50LCB6LnJlbGF0aXZlcyk7XG5cbmxldCBkZWxldGVfcGFyZW50ID0gKHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgcmVsYXRpdmVzOiBSZWxhdGl2ZXMuZGVsZXRlX3BhcmVudCh6LnJlbGF0aXZlcyksXG59O1xuXG5sZXQgemlwID0gKHo6IHQpOiBTZWdtZW50LnQgPT5cbiAgUmVsYXRpdmVzLnppcCh+c2VsPXouc2VsZWN0aW9uLmNvbnRlbnQsIHoucmVsYXRpdmVzKTtcblxubGV0IHVuemlwID0gKHNlZzogU2VnbWVudC50KTogdCA9PiB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKFtdKSxcbiAgYmFja3BhY2s6IFtdLFxuICByZWxhdGl2ZXM6IHtcbiAgICBzaWJsaW5nczogKHNlZywgW10pLFxuICAgIGFuY2VzdG9yczogW10sXG4gIH0sXG4gIGNhcmV0OiBPdXRlcixcbn07XG5cbmxldCBzaWJzX3dpdGhfc2VsID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbjoge2NvbnRlbnQsIGZvY3VzLCBffSxcbiAgICAgICAgcmVsYXRpdmVzOiB7c2libGluZ3M6IChsX3NpYnMsIHJfc2licyksIF99LFxuICAgICAgICBfLFxuICAgICAgfTogdCxcbiAgICApXG4gICAgOiBTaWJsaW5ncy50ID0+XG4gIHN3aXRjaCAoZm9jdXMpIHtcbiAgfCBMZWZ0ID0+IChsX3NpYnMsIGNvbnRlbnQgQCByX3NpYnMpXG4gIHwgUmlnaHQgPT4gKGxfc2licyBAIGNvbnRlbnQsIHJfc2licylcbiAgfTtcblxubGV0IHBvcF9iYWNrcGFjayA9ICh6OiB0KSA9PlxuICBCYWNrcGFjay5wb3AoUmVsYXRpdmVzLmxvY2FsX2luY29tcGxldGVfdGlsZXMoei5yZWxhdGl2ZXMpLCB6LmJhY2twYWNrKTtcblxubGV0IGxlZnRfbmVpZ2hib3JfbW9ub3RpbGU6IFNpYmxpbmdzLnQgPT4gb3B0aW9uKFRva2VuLnQpID1cbiAgcyA9PiBzIHw+IFNpYmxpbmdzLmxlZnRfbmVpZ2hib3IgfD4gT3B0VXRpbC5hbmRfdGhlbihQaWVjZS5tb25vdGlsZSk7XG5cbmxldCByaWdodF9uZWlnaGJvcl9tb25vdGlsZTogU2libGluZ3MudCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBzID0+IHMgfD4gU2libGluZ3MucmlnaHRfbmVpZ2hib3IgfD4gT3B0VXRpbC5hbmRfdGhlbihQaWVjZS5tb25vdGlsZSk7XG5cbmxldCBuZWlnaGJvcl9tb25vdGlsZXM6IFNpYmxpbmdzLnQgPT4gKG9wdGlvbihUb2tlbi50KSwgb3B0aW9uKFRva2VuLnQpKSA9XG4gIHMgPT4gKGxlZnRfbmVpZ2hib3JfbW9ub3RpbGUocyksIHJpZ2h0X25laWdoYm9yX21vbm90aWxlKHMpKTtcblxubGV0IHJlZ3JvdXQgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+IHtcbiAgYXNzZXJ0KFNlbGVjdGlvbi5pc19lbXB0eSh6LnNlbGVjdGlvbikpO1xuICBsZXQgcmVsYXRpdmVzID0gUmVsYXRpdmVzLnJlZ3JvdXQoZCwgei5yZWxhdGl2ZXMpO1xuICB7Li4ueiwgcmVsYXRpdmVzfTtcbn07XG5cbmxldCByZW1vbGQgPSAoejogdCk6IHQgPT4ge1xuICBhc3NlcnQoU2VsZWN0aW9uLmlzX2VtcHR5KHouc2VsZWN0aW9uKSk7XG4gIHsuLi56LCByZWxhdGl2ZXM6IFJlbGF0aXZlcy5yZW1vbGQoei5yZWxhdGl2ZXMpfTtcbn07XG5cbmxldCByZW1vbGRfcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4geiB8PiByZW1vbGQgfD4gcmVncm91dChkKTtcblxubGV0IGNsZWFyX3VucGFyc2VkX2J1ZmZlciA9ICh6OiB0KSA9PlxuICBzd2l0Y2ggKHouc2VsZWN0aW9uLm1vZGUpIHtcbiAgfCBCdWZmZXIoVW5wYXJzZWQpID0+IHsuLi56LCBzZWxlY3Rpb246IFNlbGVjdGlvbi5lbXB0eX1cbiAgfCBfID0+IHpcbiAgfTtcblxubGV0IHVuc2VsZWN0ID0gKH5lcmFzZV9idWZmZXI9ZmFsc2UsIHo6IHQpOiB0ID0+IHtcbiAgLyogTk9URShhbmRyZXcpOiBFcmFzZSBidWZmZXIgZmxhZyBvbmx5IGFwcGxpZXMgdG8gdW5wYXJzZWQgYnVmZmVyLFxuICAgKiB0aGF0IGlzLCB0aGUgYnVmZmVyIHN0eWxlIHRoYXQganVzdCBjb250YWlucyBhIHNpbmdsZSBmbGF0IHRva2VuLlxuICAgKiBFcmFzaW5nIGEgYnVmZmVyIHRoZSBjb250YWlucyBhcmJpdHJhcnkgdGlsZXMgd291bGQgYmUgbW9yZSBjb21wbGV4XG4gICAqIGFzIHdlIGNhbid0IGp1c3QgZW1wdHkgdGhlIHNlbGVjdGlvbiB3aXRob3V0IHJlZ3JvdXRpbmcgKi9cbiAgbGV0IHogPSBlcmFzZV9idWZmZXIgPyBjbGVhcl91bnBhcnNlZF9idWZmZXIoeikgOiB6O1xuICBsZXQgcmVsYXRpdmVzID1cbiAgICB6LnJlbGF0aXZlc1xuICAgIHw+IFJlbGF0aXZlcy5wcmVwZW5kKHouc2VsZWN0aW9uLmZvY3VzLCB6LnNlbGVjdGlvbi5jb250ZW50KVxuICAgIHw+IFJlbGF0aXZlcy5yZWFzc2VtYmxlO1xuICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmVtcHR5O1xuICB7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9O1xufTtcbmxldCB1bnNlbGVjdF9hbmRfemlwID0gKH5lcmFzZV9idWZmZXI9ZmFsc2UsIHo6IHQpOiBTZWdtZW50LnQgPT5cbiAgeiB8PiB1bnNlbGVjdCh+ZXJhc2VfYnVmZmVyKSB8PiB6aXA7XG5cbmxldCB1cGRhdGVfc2VsZWN0aW9uID0gKHNlbGVjdGlvbjogU2VsZWN0aW9uLnQsIHo6IHQpOiAoU2VsZWN0aW9uLnQsIHQpID0+IHtcbiAgbGV0IG9sZCA9IHouc2VsZWN0aW9uO1xuICAvLyB1c2VkIHRvIGJlIG5lY2Vzc2FyeSB0byB1bnNlbGVjdCB3aGVuIHNlbGVjdGlvbiB1cGRhdGVcbiAgLy8gaW5jbHVkZWQgcmVtb2xkL3JlZ3JvdXQsIG5vdyBubyBsb25nZXIgbmVjZXNzYXJ5IGlmIG5lZWRzXG4gIC8vIHRvIGJlIGNoYW5nZWQgYnV0IGtlZXBpbmcgZm9yIG5vdyB0byBtaW5pbWl6ZSBjaGFuZ2VcbiAgbGV0IHogPSB1bnNlbGVjdCh7Li4ueiwgc2VsZWN0aW9ufSk7XG4gIChvbGQsIHopO1xufTtcblxubGV0IHB1dF9zZWxlY3Rpb24gPSAoc2VsOiBTZWxlY3Rpb24udCwgejogdCk6IHQgPT5cbiAgc25kKHVwZGF0ZV9zZWxlY3Rpb24oc2VsLCB6KSk7XG5cbmxldCBncm93X3NlbGVjdGlvbiA9ICh6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0KyAocCwgcmVsYXRpdmVzKSA9IFJlbGF0aXZlcy5wb3Aoei5zZWxlY3Rpb24uZm9jdXMsIHoucmVsYXRpdmVzKTtcbiAgbGV0IHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5wdXNoKHAsIHouc2VsZWN0aW9uKTtcbiAgey4uLnosIHNlbGVjdGlvbiwgcmVsYXRpdmVzfTtcbn07XG5cbi8vIHRvZ2dsZXMgZm9jdXMgYW5kIGdyb3dzIGlmIHNlbGVjdGlvbiBpcyBlbXB0eVxubGV0IHNocmlua19zZWxlY3Rpb24gPSAoejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIHN3aXRjaCAoU2VsZWN0aW9uLnBvcCh6LnNlbGVjdGlvbikpIHtcbiAgfCBOb25lID0+XG4gICAgbGV0IHNlbGVjdGlvbiA9IFNlbGVjdGlvbi50b2dnbGVfZm9jdXMoei5zZWxlY3Rpb24pO1xuICAgIGdyb3dfc2VsZWN0aW9uKHsuLi56LCBzZWxlY3Rpb259KTtcbiAgfCBTb21lKChwLCBzZWxlY3Rpb24pKSA9PlxuICAgIGxldCByZWxhdGl2ZXMgPVxuICAgICAgei5yZWxhdGl2ZXNcbiAgICAgIHw+IFJlbGF0aXZlcy5wdXNoKHNlbGVjdGlvbi5mb2N1cywgcClcbiAgICAgIHw+IFJlbGF0aXZlcy5yZWFzc2VtYmxlO1xuICAgIFNvbWUoey4uLnosIHNlbGVjdGlvbiwgcmVsYXRpdmVzfSk7XG4gIH07XG59O1xuXG5sZXQgdG9nZ2xlX2ZvY3VzID0gKHo6IHQpOiB0ID0+IHtcbiAgLi4ueixcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24udG9nZ2xlX2ZvY3VzKHouc2VsZWN0aW9uKSxcbn07XG5cbmxldCBkaXJlY3Rpb25hbF91bnNlbGVjdCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4ge1xuICBsZXQgc2VsZWN0aW9uID0gey4uLnouc2VsZWN0aW9uLCBmb2N1czogRGlyZWN0aW9uLnRvZ2dsZShkKX07XG4gIHVuc2VsZWN0KHsuLi56LCBzZWxlY3Rpb259KTtcbn07XG5cbmxldCBtb3ZlID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIGlmIChTZWxlY3Rpb24uaXNfZW1wdHkoei5zZWxlY3Rpb24pKSB7XG4gICAgLy8gbGV0IGJhbGFuY2VkID0gIUJhY2twYWNrLmlzX2JhbGFuY2VkKHouYmFja3BhY2spO1xuICAgIGxldCsgKHAsIHJlbGF0aXZlcykgPSBSZWxhdGl2ZXMucG9wKGQsIHoucmVsYXRpdmVzKTtcbiAgICBsZXQgcmVsYXRpdmVzID1cbiAgICAgIHJlbGF0aXZlc1xuICAgICAgfD4gUmVsYXRpdmVzLnB1c2goRGlyZWN0aW9uLnRvZ2dsZShkKSwgcClcbiAgICAgIHw+IFJlbGF0aXZlcy5yZWFzc2VtYmxlO1xuICAgIHsuLi56LCByZWxhdGl2ZXN9O1xuICB9IGVsc2Uge1xuICAgIFNvbWUoZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpO1xuICB9O1xuXG5sZXQgc2VsZWN0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIGQgPT0gei5zZWxlY3Rpb24uZm9jdXMgPyBncm93X3NlbGVjdGlvbih6KSA6IHNocmlua19zZWxlY3Rpb24oeik7XG5cbmxldCBwaWNrX3VwID0gKHo6IHQpOiB0ID0+IHtcbiAgbGV0IChzZWxlY3RlZCwgeikgPSB1cGRhdGVfc2VsZWN0aW9uKFNlbGVjdGlvbi5lbXB0eSwgeik7XG4gIGxldCBzZWxlY3Rpb24gPVxuICAgIHNlbGVjdGVkLmNvbnRlbnRcbiAgICB8PiBTZWdtZW50LnRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeShMZWZ0KVxuICAgIHw+IFNlZ21lbnQudHJpbV9ncm91dF9hcm91bmRfc2Vjb25kYXJ5KFJpZ2h0KVxuICAgIHw+IFNlbGVjdGlvbi5taztcbiAgU2VnbWVudC50aWxlcyhzZWxlY3Rpb24uY29udGVudClcbiAgfD4gTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gdC5pZClcbiAgfD4gRWZmZWN0LnNfdG91Y2g7XG4gIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2goc2VsZWN0aW9uLCB6LmJhY2twYWNrKTtcbiAgey4uLnosIGJhY2twYWNrfTtcbn07XG5cbmxldCBkZXN0cnVjdCA9ICh+ZGVzdHJveV9raWRzPXRydWUsIHo6IHQpOiB0ID0+IHtcbiAgbGV0IGJhY2twYWNrID1cbiAgICBCYWNrcGFjay5yZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXRjaGVzKHouYmFja3BhY2ssIHouc2VsZWN0aW9uKTtcbiAgbGV0IChzZWxlY3RlZCwgeikgPSB1cGRhdGVfc2VsZWN0aW9uKFNlbGVjdGlvbi5lbXB0eSwgeik7XG4gIGxldCAodG9fcGlja191cCwgdG9fcmVtb3ZlKSA9XG4gICAgU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNlbGVjdGVkLmNvbnRlbnQpXG4gICAgfD4gTGlzdC5wYXJ0aXRpb24odCA9PlxuICAgICAgICAgU2libGluZ3MuY29udGFpbnNfbWF0Y2hpbmcodCwgei5yZWxhdGl2ZXMuc2libGluZ3MpXG4gICAgICAgICB8fCBBbmNlc3RvcnMucGFyZW50X21hdGNoZXModCwgei5yZWxhdGl2ZXMuYW5jZXN0b3JzKVxuICAgICAgICk7XG4gIC8qIElmIGZsYWcgaXMgc2V0LCBicmVhayB1cCB0aWxlcyBhbmQgcmVtb3ZlIGNoaWxkcmVuICovXG4gIGxldCB0b19waWNrX3VwID1cbiAgICBkZXN0cm95X2tpZHNcbiAgICAgID8gTGlzdC5tYXAoVGlsZS5kaXNpbnRlZ3JhdGUsIHRvX3BpY2tfdXApIHw+IExpc3QuZmxhdHRlbiA6IHRvX3BpY2tfdXA7XG4gIEVmZmVjdC5zX3RvdWNoKExpc3QubWFwKCh0OiBUaWxlLnQpID0+IHQuaWQsIHRvX3BpY2tfdXApKTtcbiAgbGV0IGJhY2twYWNrID1cbiAgICBiYWNrcGFja1xuICAgIHw+IEJhY2twYWNrLnJlbW92ZV9tYXRjaGluZyh0b19yZW1vdmUpXG4gICAgfD4gQmFja3BhY2sucHVzaF9zKFxuICAgICAgICAgdG9fcGlja191cCB8PiBMaXN0Lm1hcChTZWdtZW50Lm9mX3RpbGUpIHw+IExpc3QubWFwKFNlbGVjdGlvbi5tayksXG4gICAgICAgKTtcbiAgey4uLnosIGJhY2twYWNrfTtcbn07XG5cbmxldCBkZWxldGUgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgeiB8PiBzZWxlY3QoZCkgfD4gT3B0aW9uLm1hcChkZXN0cnVjdCk7XG5cbmxldCBwdXRfZG93biA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gIGxldCogKF8sIHBvcHBlZCwgYmFja3BhY2spID0gcG9wX2JhY2twYWNrKHopO1xuICBTZWdtZW50LnRpbGVzKHBvcHBlZC5jb250ZW50KVxuICB8PiBMaXN0Lm1hcCgodDogVGlsZS50KSA9PiB0LmlkKVxuICB8PiBFZmZlY3Quc190b3VjaDtcbiAgbGV0IHogPSB7Li4ueiwgYmFja3BhY2t9IHw+IHB1dF9zZWxlY3Rpb24ocG9wcGVkKSB8PiB1bnNlbGVjdDtcbiAgc3dpdGNoIChkKSB7XG4gIHwgTGVmdCA9PiBTb21lKHopXG4gIHwgUmlnaHQgPT4gbW92ZShMZWZ0LCB6KVxuICB9O1xufTtcblxubGV0IHJlYyBjb25zdHJ1Y3QgPVxuICAgICAgICAofmNhcmV0OiBEaXJlY3Rpb24udCwgfmJhY2twYWNrOiBEaXJlY3Rpb24udCwgbGFiZWw6IExhYmVsLnQsIHo6IHQpOiB0ID0+IHtcbiAgc3dpdGNoIChsYWJlbCkge1xuICB8IFt0XSB3aGVuIEZvcm0uaXNfc3RyaW5nX2RlbGltKHQpID0+XG4gICAgLyogU3BlY2lhbCBjYXNlIGZvciBjb25zdHJ1Y3Rpbmcgc3RyaW5nIGxpdGVyYWxzLlxuICAgICAgIFNlZSBJbnNlcnQubW92ZV9pbnRvX2lmX3N0cmluZ2xpdCBmb3IgbW9yZSBzcGVjaWFsLWNhc2luZy4gKi9cbiAgICBjb25zdHJ1Y3QofmNhcmV0LCB+YmFja3BhY2ssIFtGb3JtLnN0cmluZ19kZWxpbSArKyBGb3JtLnN0cmluZ19kZWxpbV0sIHopXG4gIHwgW2NvbnRlbnRdIHdoZW4gRm9ybS5pc19jb21tZW50KGNvbnRlbnQpID0+XG4gICAgLyogU3BlY2lhbCBjYXNlIGZvciBjb21tZW50cywgY2FuJ3QgcmVseSBvbiB0aGUgbGFzdCBicmFuY2ggdG8gY29uc3RydWN0ICovXG4gICAgbGV0IGNvbnRlbnQgPSBTZWNvbmRhcnkuY29uc3RydWN0X2NvbW1lbnQoY29udGVudCk7XG4gICAgbGV0IGlkID0gSWQubWsoKTtcbiAgICBFZmZlY3Quc190b3VjaChbaWRdKTtcbiAgICBsZXQgeiA9IGRlc3RydWN0KHopO1xuICAgIGxldCBzZWxlY3Rpb25zID0gW1NlbGVjdGlvbi5tayhCYXNlLm1rX3NlY29uZGFyeShpZCwgY29udGVudCkpXTtcbiAgICBsZXQgYmFja3BhY2sgPSBCYWNrcGFjay5wdXNoX3Moc2VsZWN0aW9ucywgei5iYWNrcGFjayk7XG4gICAgT3B0aW9uLmdldChwdXRfZG93bihjYXJldCwgey4uLnosIGJhY2twYWNrfSkpO1xuXG4gIHwgW2NvbnRlbnRdIHdoZW4gRm9ybS5pc19zZWNvbmRhcnkoY29udGVudCkgPT5cbiAgICBsZXQgY29udGVudCA9IFNlY29uZGFyeS5XaGl0ZXNwYWNlKGNvbnRlbnQpO1xuICAgIGxldCBpZCA9IElkLm1rKCk7XG4gICAgRWZmZWN0LnNfdG91Y2goW2lkXSk7XG4gICAgeiB8PiB1cGRhdGVfc2libGluZ3MoKChsLCByKSkgPT4gKGwgQCBbU2Vjb25kYXJ5KHtpZCwgY29udGVudH0pXSwgcikpO1xuICB8IF8gPT5cbiAgICBsZXQgeiA9IGRlc3RydWN0KHopO1xuICAgIGxldCBtb2xkcyA9IE1vbGRzLmdldChsYWJlbCk7XG4gICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbiAgICAvLyBpbml0aWFsIG1vbGQgdG8gdHlwZWNoZWNrLCB3aWxsIGJlIHJlbW9sZGVkXG4gICAgbGV0IG1vbGQgPSBMaXN0LmhkKG1vbGRzKTtcbiAgICBsZXQgaWQgPSBJZC5taygpO1xuICAgIEVmZmVjdC5zX3RvdWNoKFtpZF0pO1xuICAgIGxldCBzZWxlY3Rpb25zID1cbiAgICAgIFRpbGUuc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCwgTGlzdC5tYXBpKChpLCBfKSA9PiBpLCBsYWJlbCkpXG4gICAgICB8PiBMaXN0Lm1hcChTZWdtZW50Lm9mX3RpbGUpXG4gICAgICB8PiBMaXN0Lm1hcChTZWxlY3Rpb24ubWspXG4gICAgICB8PiBMaXN0VXRpbC5yZXZfaWYoYmFja3BhY2sgPT0gUmlnaHQpO1xuICAgIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2hfcyhzZWxlY3Rpb25zLCB6LmJhY2twYWNrKTtcbiAgICBPcHRpb24uZ2V0KHB1dF9kb3duKGNhcmV0LCB7Li4ueiwgYmFja3BhY2t9KSk7XG4gIH07XG59O1xuXG5sZXQgY29uc3RydWN0X21vbm8gPSAoZDogRGlyZWN0aW9uLnQsIHQ6IFRva2VuLnQsIHo6IHQpOiB0ID0+XG4gIGNvbnN0cnVjdCh+Y2FyZXQ9ZCwgfmJhY2twYWNrPUxlZnQsIFt0XSwgeik7XG5cbmxldCByZXBsYWNlID1cbiAgICAofmNhcmV0OiBEaXJlY3Rpb24udCwgfmJhY2twYWNrOiBEaXJlY3Rpb24udCwgbDogTGFiZWwudCwgejogdClcbiAgICA6IG9wdGlvbih0KSA9PlxuICAvKiBpLmUuIHNlbGVjdCBhbmQgY29uc3RydWN0LCBvdmVyd3JpdGluZyB0aGUgc2VsZWN0aW9uICovXG4gIHogfD4gZGVsZXRlKGNhcmV0KSB8PiBPcHRpb24ubWFwKGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgbCkpO1xuXG5sZXQgcmVwbGFjZV9tb25vID0gKGQ6IERpcmVjdGlvbi50LCB0OiBUb2tlbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gIHJlcGxhY2UofmNhcmV0PWQsIH5iYWNrcGFjaz1MZWZ0LCBbdF0sIHopO1xuXG5sZXQgcmVwcmVzZW50YXRpdmVfcGllY2UgPSAoejogdCk6IG9wdGlvbigoUGllY2UudCwgRGlyZWN0aW9uLnQpKSA9PiB7XG4gIC8qIFRoZSBwaWVjZSB0byB0aGUgbGVmdCBvZiB0aGUgY2FyZXQsIG9yIGlmIG5vbmUgZXhpc3RzLCB0aGUgcGllY2UgdG8gdGhlIHJpZ2h0ICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnNfd2l0aF9zZWwoeikpKSB7XG4gIHwgKFNvbWUobCksIF8pID0+IFNvbWUoKGwsIExlZnQpKVxuICB8IChfLCBTb21lKHIpKSA9PiBTb21lKChyLCBSaWdodCkpXG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgY2FyZXRfZGlyZWN0aW9uID0gKHo6IHQpOiBvcHRpb24oRGlyZWN0aW9uLnQpID0+XG4gIC8qIERpcmVjdGlvbiB0aGUgY2FyZXQgaXMgZmFjaW5nIGluICovXG4gIHN3aXRjaCAoei5jYXJldCkge1xuICB8IElubmVyKF8pID0+IE5vbmVcbiAgfCBPdXRlciA9PlxuICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnNfd2l0aF9zZWwoeikpKSB7XG4gICAgfCAoU29tZShsKSwgU29tZShyKSkgd2hlbiBQaWVjZS5pc19zZWNvbmRhcnkobCkgJiYgUGllY2UuaXNfc2Vjb25kYXJ5KHIpID0+XG4gICAgICBOb25lXG4gICAgfCBfID0+IFNpYmxpbmdzLmRpcmVjdGlvbl9iZXR3ZWVuKHNpYnNfd2l0aF9zZWwoeikpXG4gICAgfVxuICB9O1xuXG5sZXQgYmFzZV9wb2ludCA9IChtZWFzdXJlZDogTWVhc3VyZWQudCwgejogdCk6IE1lYXN1cmVkLlBvaW50LnQgPT4ge1xuICBzd2l0Y2ggKHJlcHJlc2VudGF0aXZlX3BpZWNlKHopKSB7XG4gIHwgU29tZSgocCwgZCkpID0+XG4gICAgbGV0IHNlZyA9IFBpZWNlLmRpc2Fzc2VtYmxlKHApO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdCA9PlxuICAgICAgbGV0IHAgPSBMaXN0VXRpbC5sYXN0KHNlZyk7XG4gICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtZWFzdXJlZCk7XG4gICAgICBtLmxhc3Q7XG4gICAgfCBSaWdodCA9PlxuICAgICAgbGV0IHAgPSBMaXN0LmhkKHNlZyk7XG4gICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtZWFzdXJlZCk7XG4gICAgICBtLm9yaWdpbjtcbiAgICB9O1xuICB8IE5vbmUgPT4ge3JvdzogMCwgY29sOiAwfVxuICB9O1xufTtcbmxldCBjYXJldF9wb2ludCA9IChtZWFzdXJlZCwgejogdCk6IE1lYXN1cmVkLlBvaW50LnQgPT4ge1xuICBsZXQgTWVhc3VyZWQuUG9pbnQue3JvdywgY29sfSA9IGJhc2VfcG9pbnQobWVhc3VyZWQsIHopO1xuICB7cm93LCBjb2w6IGNvbCArIENhcmV0Lm9mZnNldCh6LmNhcmV0KX07XG59O1xuXG5sZXQgc2VyaWFsaXplID0gKHo6IHQpOiBzdHJpbmcgPT4ge1xuICBzZXhwX29mX3QoeikgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChkYXRhOiBzdHJpbmcpOiB0ID0+IHtcbiAgU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiB0X29mX3NleHA7XG59O1xuXG5sZXQgY2FuX3B1dF9kb3duID0geiA9PlxuICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICB8IFNvbWUoXykgPT4gei5jYXJldCA9PSBPdXRlclxuICB8IE5vbmUgPT4gZmFsc2VcbiAgfTtcblxubGV0IHNldF9idWZmZXIgPSAoejogdCwgfm1vZGU6IFNlbGVjdGlvbi5idWZmZXIsIH5jb250ZW50OiBTZWdtZW50LnQpOiB0ID0+IHtcbiAgLi4ueixcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24ubWtfYnVmZmVyKG1vZGUsIGNvbnRlbnQpLFxufTtcblxubGV0IGlzX2xpbmVicmVha190b19yaWdodF9vZl9jYXJldCA9XG4gICAgKHtyZWxhdGl2ZXM6IHtzaWJsaW5nczogKF8sIHIpLCBffSwgX306IHQpOiBib29sID0+IHtcbiAgc3dpdGNoIChyKSB7XG4gIHwgW1NlY29uZGFyeShzKSwgLi4uX10gd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHMpID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG59O1xuXG4vKiBUcnkgdG8gY29tcGxldGUgdGhlIHN5bnRheCB0byBnaXZlIGJldHRlciBzZW1hbnRpYyBmZWViYWNrLlxuICogVGhpcyBpcyBhIGJlc3QtZWZmb3J0IGFwcHJvYWNoIGZvY3Vzc2VkIG9uIGFkZGluZyBuZXcgZGVmaW5pdGlvbnNcbiAqIGFzIG9wcG9zZWQgdG8gcmVzdHJ1Y3R1cmluZzsgaXQgZG9lcyBub3QgY29tcGxldGUgdGhlIHN5bnRheCBpblxuICogYWxsIGNhc2VzLlxuICpcbiAqIE5PVEU6IFNldHRpbmcgdGhlIGNhcmV0IHRvIG91dGVyIHdhcyBuZWNlc3NhcnkgdG8gJ2dldCBpdCBwYXN0J1xuICogc3RyaW5nIGxpdGVyYWxzLCBpLmUuIG9mZmVyIGxpdmUgZmVlYmFjayB3aGVuIHR5cGluZyBpbnNpZGUgYVxuICogc3RyaW5nOyBub3Qgc3VyZSBpZiB0aGlzIGlzIGEgaGFjayBvciBub3QsIGl0IG1heSBiZSBjb21wZW5zYXRpbmdcbiAqIGZvciB0aGUgcHV0X2Rvd24gbG9naWMgbm90IHdvcmtpbmcgcmlnaHQgd2l0aCBzdHJpbmcgbGl0cy4gVG8gdGVzdCxcbiAqIHRyeSB0byBsb29rIGF0IGxpdmUgZXZhbHVhdGlvbiB3aGlsZSB0eXBpbmcgaW5zaWRlIGEgc3RyaW5nIGxpdCB3aXRoXG4gKiBzdHVmZiBsZWZ0IHRvIGRyb3AgaW4gYmFja3BhY2sgd2l0aCBiZWxvdyBzZXQ6IE91dGVyIGRpc2FibGVkLiAqL1xubGV0IHRyeV90b19kdW1wX2JhY2twYWNrID0gKHppcHBlcjogdCkgPT4ge1xuICBzd2l0Y2ggKHppcHBlci5iYWNrcGFjaykge1xuICB8IFtdID0+IHppcHBlclxuICB8IF8gPT5cbiAgICBsZXQgemlwcGVyID0gey4uLnppcHBlciwgY2FyZXQ6IE91dGVyfTtcbiAgICBsZXQgcmVjIG1vdmVfdW50aWxfY2FudF9wdXRfZG93biA9ICh6X2xhc3QsIHo6IHQpID0+XG4gICAgICBpZiAoY2FuX3B1dF9kb3duKHopICYmICFpc19saW5lYnJlYWtfdG9fcmlnaHRfb2ZfY2FyZXQoeikpIHtcbiAgICAgICAgc3dpdGNoIChtb3ZlKFJpZ2h0LCB6KSkge1xuICAgICAgICB8IE5vbmUgPT4gelxuICAgICAgICB8IFNvbWUoel9uZXcpID0+IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6LCB6X25ldylcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHpfbGFzdDtcbiAgICAgIH07XG4gICAgbGV0IHJlYyBtb3ZlX3VudGlsX2Nhbl9wdXRfZG93biA9ICh6OiB0KSA9PlxuICAgICAgaWYgKCFjYW5fcHV0X2Rvd24oeikpIHtcbiAgICAgICAgc3dpdGNoIChtb3ZlKFJpZ2h0LCB6KSkge1xuICAgICAgICB8IE5vbmUgPT4gelxuICAgICAgICB8IFNvbWUoel9uZXcpID0+IG1vdmVfdW50aWxfY2FuX3B1dF9kb3duKHpfbmV3KVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgejtcbiAgICAgIH07XG4gICAgbGV0IHJlYyBnbyA9ICh6OiB0KTogdCA9PlxuICAgICAgaWYgKGNhbl9wdXRfZG93bih6KSkge1xuICAgICAgICBsZXQgel9jYW4gPSBtb3ZlX3VudGlsX2NhbnRfcHV0X2Rvd24oeiwgeik7XG4gICAgICAgIHN3aXRjaCAocHV0X2Rvd24oUmlnaHQsIHpfY2FuKSkge1xuICAgICAgICB8IE5vbmUgPT4gel9jYW5cbiAgICAgICAgfCBTb21lKHopID0+XG4gICAgICAgICAgbGV0IHogPSByZWdyb3V0KFJpZ2h0LCB6KTtcbiAgICAgICAgICBnbyh6KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FuX3B1dF9kb3duKHopO1xuICAgICAgICBsZXQgel9jYW4gPSBtb3ZlX3VudGlsX2NhbnRfcHV0X2Rvd24oel9jYW4sIHpfY2FuKTtcbiAgICAgICAgc3dpdGNoIChwdXRfZG93bihSaWdodCwgel9jYW4pKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6X2NhblxuICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICBsZXQgeiA9IHJlZ3JvdXQoUmlnaHQsIHopO1xuICAgICAgICAgIGdvKHopO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICBnbyh6aXBwZXIpO1xuICB9O1xufTtcblxubGV0IHNtYXJ0X3NlZyA9ICh+ZHVtcF9iYWNrcGFjazogYm9vbCwgfmVyYXNlX2J1ZmZlcjogYm9vbCwgejogdCkgPT4ge1xuICBsZXQgeiA9IGVyYXNlX2J1ZmZlciA/IGNsZWFyX3VucGFyc2VkX2J1ZmZlcih6KSA6IHo7XG4gIGxldCB6ID0gZHVtcF9iYWNrcGFjayA/IHRyeV90b19kdW1wX2JhY2twYWNrKHopIDogejtcbiAgdW5zZWxlY3RfYW5kX3ppcCh+ZXJhc2VfYnVmZmVyLCB6KTtcbn07XG5cbmxldCBzZWdfZm9yX3ZpZXcgPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj1mYWxzZSwgfmR1bXBfYmFja3BhY2s9ZmFsc2UpO1xubGV0IHNlZ19mb3Jfc2VtID0gc21hcnRfc2VnKH5lcmFzZV9idWZmZXI9dHJ1ZSwgfmR1bXBfYmFja3BhY2s9dHJ1ZSk7XG5cbmxldCBzZWdfd2l0aG91dF9idWZmZXIgPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj10cnVlLCB+ZHVtcF9iYWNrcGFjaz1mYWxzZSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRfKCdhKSA9IGxpc3QoKFRva2VuLnQsICdhKSk7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgaXNfZW1wdHkgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgW18sIC4uLl9dID0+IGZhbHNlO1xuXG5sZXQgZXh0ZW5kID0gKGN0eCwgeGEpID0+IHtcbiAgW3hhLCAuLi5jdHhdO1xufTtcblxuLy8gVGhlIG5ldyB0aGluZ3Mgc2hvdWxkIGdvIHRvIHRoZSByaWdodCB3aGVuIGNvbmNhdGVuYXRpbmdcbmxldCBjb25jYXQgPSAoY3R4LCBuZXdfY3R4KSA9PiBuZXdfY3R4IEAgY3R4O1xuXG5sZXQgbG9va3VwID0gKGN0eCwgeCkgPT4gTGlzdC5hc3NvY19vcHQoeCwgY3R4KTtcblxubGV0IGNvbnRhaW5zID0gKGN0eCwgeCkgPT4gTGlzdC5tZW1fYXNzb2MoeCwgY3R4KTtcblxubGV0IG1hcCA9IChmLCB4cykgPT4gTGlzdC5tYXAoKCh4LCBfKSBhcyB4YSkgPT4gKHgsIGYoeGEpKSwgeHMpO1xuXG5sZXQgZmlsdGVyID0gTGlzdC5maWx0ZXI7XG5cbmxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aDtcblxubGV0IHRvX2xpc3QgPSBjdHggPT4gY3R4O1xuXG5sZXQgZmluZF9tYXAgPSBMaXN0LmZpbmRfbWFwO1xuXG5sZXQgcmVjIHVwZGF0ZSA9IChjdHg6IHRfKCdhKSwgbmFtZTogc3RyaW5nLCBmOiAnYSA9PiAnYSk6IHRfKCdhKSA9PlxuICBzd2l0Y2ggKGN0eCkge1xuICB8IFtdID0+IFtdXG4gIHwgWyhrLCB2KSwgLi4uY3R4XSA9PlxuICAgIGlmIChuYW1lID09IGspIHtcbiAgICAgIFsoaywgZih2KSksIC4uLmN0eF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFsoaywgdiksIC4uLnVwZGF0ZShjdHgsIG5hbWUsIGYpXTtcbiAgICB9XG4gIH07XG4iLCJtb2R1bGUgSG9sZVJlYXNvbiA9IHtcbiAgLyogVmFyaWFibGU6IHJlYXNvbiAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBGcmVlO1xufTtcblxuLyogVmFyaWFibGU6IHZhcl9lcnIgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTm90SW5WYXJIb2xlXG4gIHwgSW5WYXJIb2xlKEhvbGVSZWFzb24udCwgSWQudCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbmxldCBlcXVhbCA9IFN0cmluZy5lcXVhbDtcbiIsIm9wZW4gVXRpbC5PcHRVdGlsLlN5bnRheDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdmFyaWFudCgnYSkgPVxuICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgbGlzdChJZC50KSwgb3B0aW9uKCdhKSlcbiAgfCBCYWRFbnRyeSgnYSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSkgPSBsaXN0KHZhcmlhbnQoJ2EpKTtcblxubGV0IGVxdWFsX2NvbnN0cnVjdG9yID1cbiAgICAoZXE6ICgnYSwgJ2EpID0+IGJvb2wsIHg6IHZhcmlhbnQoJ2EpLCB5OiB2YXJpYW50KCdhKSk6IGJvb2wgPT5cbiAgc3dpdGNoICh4LCB5KSB7XG4gIHwgKFZhcmlhbnQoY3RyMSwgXywgU29tZSh4MSkpLCBWYXJpYW50KGN0cjIsIF8sIFNvbWUoeTEpKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKSAmJiBlcSh4MSwgeTEpXG4gIHwgKFZhcmlhbnQoY3RyMSwgXywgTm9uZSksIFZhcmlhbnQoY3RyMiwgXywgTm9uZSkpID0+XG4gICAgQ29uc3RydWN0b3IuZXF1YWwoY3RyMSwgY3RyMilcbiAgfCAoQmFkRW50cnkoeCksIEJhZEVudHJ5KHkpKSA9PiBlcSh4LCB5KVxuICB8IChWYXJpYW50KF8pLCBWYXJpYW50KF8pKVxuICB8IChCYWRFbnRyeShfKSwgVmFyaWFudChfKSlcbiAgfCAoVmFyaWFudChfKSwgQmFkRW50cnkoXykpID0+IGZhbHNlXG4gIH07XG5cbmxldCBzYW1lX2NvbnN0cnVjdG9yID1cbiAgICAoZXE6ICgnYSwgJ2EpID0+IGJvb2wsIHg6IHZhcmlhbnQoJ2EpLCB5OiB2YXJpYW50KCdhKSk6IGJvb2wgPT5cbiAgc3dpdGNoICh4LCB5KSB7XG4gIHwgKFZhcmlhbnQoY3RyMSwgXywgXyksIFZhcmlhbnQoY3RyMiwgXywgXykpID0+XG4gICAgQ29uc3RydWN0b3IuZXF1YWwoY3RyMSwgY3RyMilcbiAgfCAoQmFkRW50cnkoeCksIEJhZEVudHJ5KHkpKSA9PiBlcSh4LCB5KVxuICB8IChCYWRFbnRyeShfKSwgVmFyaWFudChfKSlcbiAgfCAoVmFyaWFudChfKSwgQmFkRW50cnkoXykpID0+IGZhbHNlXG4gIH07XG5cbmxldCBoYXNfYmFkX2VudHJ5ID0gKHg6IHQoJ2EpKTogYm9vbCA9PlxuICBMaXN0LmV4aXN0cyhcbiAgICBmdW5cbiAgICB8IEJhZEVudHJ5KF8pID0+IHRydWVcbiAgICB8IFZhcmlhbnQoXykgPT4gZmFsc2UsXG4gICAgeCxcbiAgKTtcblxubGV0IGhhc19nb29kX2VudHJ5ID0gKHg6IHQoJ2EpKTogYm9vbCA9PlxuICBMaXN0LmV4aXN0cyhcbiAgICBmdW5cbiAgICB8IEJhZEVudHJ5KF8pID0+IGZhbHNlXG4gICAgfCBWYXJpYW50KF8pID0+IHRydWUsXG4gICAgeCxcbiAgKTtcblxubGV0IGZyZWVfdmFyaWFibGVzID0gKGYsIG0pID0+XG4gIG1cbiAgfD4gTGlzdC5tYXAoXG4gICAgICAgZnVuXG4gICAgICAgfCBWYXJpYW50KF8sIF8sIFNvbWUodmFsdWUpKSA9PiBmKHZhbHVlKVxuICAgICAgIHwgXyA9PiBbXSxcbiAgICAgKVxuICB8PiBMaXN0LmZsYXR0ZW47XG5cbmxldCBpc19ncm91bmQgPSBpc19ob2xlID0+XG4gIGZ1blxuICB8IFtCYWRFbnRyeSh4KV0gd2hlbiBpc19ob2xlKHgpID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG4vKiBjb21wdXRlcyBhbGwgdGhyZWUgcmVnaW9ucyBvZiBhIHZlbm4gZGlhZ3JhbSBvZiB0d28gc2V0cyByZXByZXNlbnRlZCBhcyBsaXN0cyAqL1xubGV0IHZlbm5fcmVnaW9ucyA9XG4gICAgKGY6ICgnYSwgJ2EpID0+IGJvb2wsIHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2EpKVxuICAgIDogKGxpc3QoKCdhLCAnYSkpLCBsaXN0KCdhKSwgbGlzdCgnYSkpID0+IHtcbiAgbGV0IHJlYyBnbyA9ICh4cywgeXMsIGFjYywgbGVmdCwgcmlnaHQpID0+XG4gICAgc3dpdGNoICh4cykge1xuICAgIHwgW10gPT4gKGFjYyB8PiBMaXN0LnJldiwgbGVmdCB8PiBMaXN0LnJldiwgTGlzdC5yZXZfYXBwZW5kKHJpZ2h0LCB5cykpXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBzd2l0Y2ggKExpc3QucGFydGl0aW9uKGYoeCwgXyksIHlzKSkge1xuICAgICAgfCAoW10sIF8pID0+IGdvKHhzLCB5cywgYWNjLCBbeCwgLi4ubGVmdF0sIHJpZ2h0KVxuICAgICAgfCAoW3ldLCB5cycpID0+IGdvKHhzLCB5cycsIFsoeCwgeSksIC4uLmFjY10sIGxlZnQsIHJpZ2h0KVxuICAgICAgfCBfID0+IGZhaWx3aXRoKFwiU3VtIHR5cGUgaGFzIG5vbi11bmlxdWUgY29uc3RydWN0b3JzXCIpXG4gICAgICB9XG4gICAgfTtcbiAgZ28oeHMsIHlzLCBbXSwgW10sIFtdKTtcbn07XG5cbmxldCBqb2luX2VudHJ5ID1cbiAgICAoam9pbjogKCdhLCAnYSkgPT4gb3B0aW9uKCdhKSwgKHg6IHZhcmlhbnQoJ2EpLCB5OiB2YXJpYW50KCdhKSkpXG4gICAgOiBvcHRpb24odmFyaWFudCgnYSkpID0+XG4gIHN3aXRjaCAoeCwgeSkge1xuICB8IChWYXJpYW50KGN0cjEsIGlkczEsIFNvbWUodmFsdWUxKSksIFZhcmlhbnQoY3RyMiwgXywgU29tZSh2YWx1ZTIpKSlcbiAgICAgIHdoZW4gQ29uc3RydWN0b3IuZXF1YWwoY3RyMSwgY3RyMikgPT5cbiAgICBsZXQrIHZhbHVlID0gam9pbih2YWx1ZTEsIHZhbHVlMik7XG4gICAgVmFyaWFudChjdHIxLCBpZHMxLCBTb21lKHZhbHVlKSk7XG4gIHwgKFZhcmlhbnQoY3RyMSwgaWRzMSwgTm9uZSksIFZhcmlhbnQoY3RyMiwgXywgTm9uZSkpXG4gICAgICB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0cjEsIGN0cjIpID0+XG4gICAgU29tZShWYXJpYW50KGN0cjEsIGlkczEsIE5vbmUpKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+XG4gICAgbGV0KyB2YWx1ZSA9IGpvaW4oeCwgeSk7XG4gICAgQmFkRW50cnkodmFsdWUpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgam9pbiA9XG4gICAgKFxuICAgICAgZXE6ICgnYSwgJ2EpID0+IGJvb2wsXG4gICAgICBqb2luOiAoJ2EsICdhKSA9PiBvcHRpb24oJ2EpLFxuICAgICAgbTE6IHQoJ2EpLFxuICAgICAgbTI6IHQoJ2EpLFxuICAgIClcbiAgICA6IG9wdGlvbih0KCdhKSkgPT4ge1xuICBsZXQgKGludGVyLCBsZWZ0LCByaWdodCkgPSB2ZW5uX3JlZ2lvbnMoc2FtZV9jb25zdHJ1Y3RvcihlcSksIG0xLCBtMik7XG4gIGxldCBqb2luX2VudHJpZXMgPSBMaXN0LmZpbHRlcl9tYXAoam9pbl9lbnRyeShqb2luKSwgaW50ZXIpO1xuICBpZiAoTGlzdC5sZW5ndGgoam9pbl9lbnRyaWVzKSA9PSBMaXN0Lmxlbmd0aChpbnRlcikpIHtcbiAgICBzd2l0Y2ggKFxuICAgICAgaGFzX2dvb2RfZW50cnkobGVmdCksXG4gICAgICBoYXNfYmFkX2VudHJ5KG0xKSxcbiAgICAgIGhhc19nb29kX2VudHJ5KHJpZ2h0KSxcbiAgICAgIGhhc19iYWRfZW50cnkobTIpLFxuICAgICkge1xuICAgIHwgKF8sIHRydWUsIF8sIHRydWUpID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgbGVmdCBAIHJpZ2h0KVxuICAgIHwgKGZhbHNlLCB0cnVlLCBfLCBfKSA9PiBTb21lKGpvaW5fZW50cmllcyBAIHJpZ2h0KVxuICAgIHwgKF8sIF8sIGZhbHNlLCB0cnVlKSA9PiBTb21lKGpvaW5fZW50cmllcyBAIGxlZnQpXG4gICAgfCBfIHdoZW4gbGVmdCA9PSBbXSAmJiByaWdodCA9PSBbXSA9PiBTb21lKGpvaW5fZW50cmllcylcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcbn07XG5cbmxldCBtYXRjaF9zeW5zd2l0Y2ggPVxuICAgIChtYXRjaF9zeW5zd2l0Y2g6ICgnYSwgJ2EpID0+ICdhLCBtMTogdCgnYSksIG0yOiB0KCdhKSk6IHQoJ2EpID0+IHtcbiAgTGlzdC5tYXAoXG4gICAgZnVuXG4gICAgfCAoVmFyaWFudChjdHIsIGlkcywgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChfLCBfLCBTb21lKHZhbHVlMikpKSA9PlxuICAgICAgVmFyaWFudChjdHIsIGlkcywgU29tZShtYXRjaF9zeW5zd2l0Y2godmFsdWUxLCB2YWx1ZTIpKSlcbiAgICB8ICh2LCBfKSA9PiB2LFxuICAgIExpc3QuY29tYmluZShtMSwgbTIpLFxuICApO1xufTtcblxubGV0IGVxdWFsID0gKGVxOiAoJ2EsICdhKSA9PiBib29sLCBtMTogdCgnYSksIG0yOiB0KCdhKSkgPT4ge1xuICBzd2l0Y2ggKHZlbm5fcmVnaW9ucyhzYW1lX2NvbnN0cnVjdG9yKGVxKSwgbTEsIG0yKSkge1xuICB8IChpbnRlciwgW10sIFtdKSA9PlxuICAgIExpc3QuZm9yX2FsbChcbiAgICAgICgoeCwgeSkpID0+XG4gICAgICAgIHN3aXRjaCAoeCwgeSkge1xuICAgICAgICB8IChWYXJpYW50KF8sIF8sIFNvbWUodmFsdWUxKSksIFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZTIpKSkgPT5cbiAgICAgICAgICBlcSh2YWx1ZTEsIHZhbHVlMilcbiAgICAgICAgfCAoVmFyaWFudChfLCBfLCBOb25lKSwgVmFyaWFudChfLCBfLCBOb25lKSkgPT4gdHJ1ZVxuICAgICAgICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gICAgICAgIHwgXyA9PiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgaW50ZXIsXG4gICAgKVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCBtYXAgPSAoZjogb3B0aW9uKCdhKSA9PiBvcHRpb24oJ2IpLCBtOiB0KCdhKSk6IHQoJ2IpID0+IHtcbiAgTGlzdC5tYXAoXG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0ciwgYXJncywgdmFsdWUpID0+IFZhcmlhbnQoY3RyLCBhcmdzLCBmKHZhbHVlKSlcbiAgICB8IEJhZEVudHJ5KHZhbHVlKSA9PiBCYWRFbnRyeSh2YWx1ZSksXG4gICAgbSxcbiAgKTtcbn07XG5cbmxldCBnZXRfZW50cnkgPSAoY3RyLCBtKSA9PlxuICBMaXN0LmZpbmRfbWFwKFxuICAgIGZ1blxuICAgIHwgVmFyaWFudChjdHInLCBfLCB2YWx1ZSkgd2hlbiBDb25zdHJ1Y3Rvci5lcXVhbChjdHIsIGN0cicpID0+IHZhbHVlXG4gICAgfCBWYXJpYW50KF8pXG4gICAgfCBCYWRFbnRyeShfKSA9PiBOb25lLFxuICAgIG0sXG4gICk7XG5cbmxldCBoYXNfY29uc3RydWN0b3Jfbm9fYXJncyA9IGN0ciA9PlxuICBMaXN0LmV4aXN0cyhcbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoY3RyJywgXywgTm9uZSkgd2hlbiBDb25zdHJ1Y3Rvci5lcXVhbChjdHIsIGN0cicpID0+IHRydWVcbiAgICB8IFZhcmlhbnQoXykgPT4gZmFsc2VcbiAgICB8IEJhZEVudHJ5KF8pID0+IGZhbHNlLFxuICApO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhY3Rpb24gPVxuICB8IFN0ZXBcbiAgfCBFdmFsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNvdW50ID1cbiAgfCBPbmVcbiAgfCBBbGw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IChhY3Rpb24sIGNvdW50KTtcblxubGV0IHN0cmluZ19vZl90ID0gdiA9PiB7XG4gIHN3aXRjaCAodikge1xuICB8IChTdGVwLCBPbmUpID0+IFwicGF1c2VcIlxuICB8IChTdGVwLCBBbGwpID0+IFwiZGVidWdcIlxuICB8IChFdmFsLCBPbmUpID0+IFwiaGlkZVwiXG4gIHwgKEV2YWwsIEFsbCkgPT4gXCJldmFsXCJcbiAgfTtcbn07XG4iLCJpbmNsdWRlIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQoJ2EpID0ge1xuICBbQHNob3cub3BhcXVlXVxuICBpZHM6IGxpc3QoSWQudCksXG4gIC8qIFVFeHAgaW52YXJpYW50OiBjb3BpZWQgc2hvdWxkIGFsd2F5cyBiZSBmYWxzZSwgYW5kIHRoZSBpZCBzaG91bGQgYmUgdW5pcXVlXG4gICAgIERIRXhwIGludmFyaWFudDogaWYgY29waWVkIGlzIHRydWUsIHRoZW4gdGhpcyB0ZXJtIGFuZCBpdHMgY2hpbGRyZW4gbWF5IG5vdFxuICAgICBoYXZlIHVuaXF1ZSBpZHMuICovXG4gIFtAc2hvdy5vcGFxdWVdXG4gIGNvcGllZDogYm9vbCxcbiAgdGVybTogJ2EsXG59O1xuXG5sZXQgZnJlc2ggPSB0ZXJtID0+IHtcbiAge2lkczogW0lkLm1rKCldLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtfTtcbn07XG5cbmxldCB0ZXJtX29mID0geCA9PiB4LnRlcm07XG5sZXQgdW53cmFwID0geCA9PiAoeC50ZXJtLCB0ZXJtJyA9PiB7Li4ueCwgdGVybTogdGVybSd9KTtcbmxldCByZXBfaWQgPSAoe2lkcywgX30pID0+IExpc3QuaGQoaWRzKTtcbmxldCBmYXN0X2NvcHkgPSAoaWQsIHt0ZXJtLCBffSkgPT4ge2lkczogW2lkXSwgdGVybSwgY29waWVkOiB0cnVlfTtcbmxldCBuZXdfaWRzID1cbiAgZnVuXG4gIHwge2lkczogXywgdGVybSwgY29waWVkfSA9PiB7aWRzOiBbSWQubWsoKV0sIHRlcm0sIGNvcGllZH07XG5cbi8vIGxldCBzZXJpYWxpemF0aW9uID0gKGYxLCBmMikgPT5cbi8vICAgU3RydWN0dXJlU2hhcmVTZXhwLnN0cnVjdHVyZV9zaGFyZV9oZXJlKFxuLy8gICAgIHJlcF9pZCxcbi8vICAgICBzZXhwX29mX3QoZjEpLFxuLy8gICAgIHRfb2Zfc2V4cChmMiksXG4vLyAgICk7XG5cbi8vIGxldCBzZXhwX29mX3QgPSBmMSA9PiBzZXJpYWxpemF0aW9uKGYxLCBPYmoubWFnaWMoKSkgfD4gZnN0O1xuLy8gbGV0IHRfb2Zfc2V4cCA9IGYyID0+IHNlcmlhbGl6YXRpb24oT2JqLm1hZ2ljKCksIGYyKSB8PiBzbmQ7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IEludmFsaWRPZlN0cmluZ1xuICB8IEluZGV4T3V0T2ZCb3VuZHNcbiAgfCBEaXZpZGVCeVplcm9cbiAgfCBOZWdhdGl2ZUV4cG9uZW50XG4gIHwgT3V0T2ZGdWVsO1xuXG5sZXQgZXJyX21zZyA9IChlcnI6IHQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoIChlcnIpIHtcbiAgfCBJbnZhbGlkT2ZTdHJpbmcgPT4gXCJFcnJvcjogSW52YWxpZCBTdHJpbmcgQ29udmVyc2lvblwiXG4gIHwgSW5kZXhPdXRPZkJvdW5kcyA9PiBcIkVycm9yOiBJbmRleCBPdXQgb2YgQm91bmRzXCJcbiAgfCBEaXZpZGVCeVplcm8gPT4gXCJFcnJvcjogRGl2aWRlIGJ5IFplcm9cIlxuICB8IE5lZ2F0aXZlRXhwb25lbnQgPT4gXCJFcnJvcjogTmVnYXRpdmUgRXhwb25lbnQgaW4gSW50ZWdlciBFeHBvbmVudGlhdGlvbiAoQ29uc2lkZXIgdXNpbmcgKiouKVwiXG4gIHwgT3V0T2ZGdWVsID0+IFwiRXJyb3I6IE91dCBvZiBGdWVsXCJcbiAgfTtcbiIsIi8qXG4gICAgIFRoaXMgbW9kdWxlIGFkZHMgaGVscGVycyBmb3IgY3JlYXRpbmcgcy1leHByZXNzaW9ucyB0aGF0IHVzZSBzb21lIHN0cnVjdHVyYWwgc2hhcmluZ1xuICAgICAoaHR0cHM6Ly93d3cub2NhbWx3aWtpLmNvbS93aWtpL1N0cnVjdHVyYWxfc2hhcmluZykgaW5zdGVhZCBvZiBjb3B5aW5nIGFsbCBpbnN0YW5jZXNcbiAgICAgb2YgdGhlIHNhbWUgcmVjb3JkLlxuICovXG5cbmxldCBzdHJ1Y3R1cmVfc2hhcmVfbWFwOiByZWYob3B0aW9uKElkLk1hcC50KFNleHBsaWIuU2V4cC50KSkpID0gcmVmKE5vbmUpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHN0cnVjdHVyZV9zaGFyZWQgPSAoU2V4cGxpYi5TZXhwLnQsIElkLk1hcC50KFNleHBsaWIuU2V4cC50KSk7XG5cbi8vIFRvIGJlIHVzZWQgb24gdGhlIGRhdGEgc3RydWN0dXJlIHdoZXJlIHRoZSBzdHJ1Y3R1cmUgc2hhcmluZyB0YWtlcyBwbGFjZVxubGV0IHN0cnVjdHVyZV9zaGFyZV9oZXJlID1cbiAgICAoXG4gICAgICBrZXlfZjogJ2EgPT4gSWQudCxcbiAgICAgIHNleHBfb2ZfdDogJ2EgPT4gU2V4cGxpYi5TZXhwLnQsXG4gICAgICB0X29mX3NleHA6IFNleHBsaWIuU2V4cC50ID0+ICdhLFxuICAgIClcbiAgICA6ICgnYSA9PiBTZXhwbGliLlNleHAudCwgU2V4cGxpYi5TZXhwLnQgPT4gJ2EpID0+IHtcbiAgbGV0IHNleHBfb2ZfdCcgPSAodGhpbmc6ICdhKTogU2V4cGxpYi5TZXhwLnQgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IFNvbWUobSkgPT5cbiAgICAgIGxldCBzZXhwID0gc2V4cF9vZl90KHRoaW5nKTtcbiAgICAgIGxldCBrZXkgPSBrZXlfZih0aGluZyk7XG4gICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwIDo9IFNvbWUoSWQuTWFwLnVwZGF0ZShrZXksIF8gPT4gU29tZShzZXhwKSwgbSkpO1xuICAgICAgSWQuc2V4cF9vZl90KGtleSk7XG4gICAgfCBOb25lID0+IHNleHBfb2ZfdCh0aGluZylcbiAgICB9O1xuICB9O1xuICBsZXQgdF9vZl9zZXhwJyA9IHNleHAgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IFNvbWUobSkgPT5cbiAgICAgIGxldCBpZCA9IElkLnRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIGxldCB0aGluZ19zID1cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG0pKSB7XG4gICAgICAgIHwgU29tZSh0KSA9PiB0XG4gICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcInN0cnVjdHVyZS1zaGFyaW5nIGRlc2VyaWFsaXphdGlvbiBmYWlsZWRcIilcbiAgICAgICAgfTtcbiAgICAgIHRfb2Zfc2V4cCh0aGluZ19zKTtcbiAgICB8IE5vbmUgPT4gdF9vZl9zZXhwKHNleHApXG4gICAgfTtcbiAgfTtcbiAgKHNleHBfb2ZfdCcsIHRfb2Zfc2V4cCcpO1xufTtcblxuLy8gVG8gYmUgdXNlZCBvbiB0aGUgcm9vdCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgY3VycmVudGx5IGJlaW5nIHNlcmlhbGl6ZWRcbmxldCBzdHJ1Y3R1cmVfc2hhcmVfaW4gPSAoc2V4cF9vZl90LCB0X29mX3NleHApID0+IHtcbiAgbGV0IHNleHBfb2ZfdCcgPSAodGhpbmc6ICdhKTogU2V4cGxpYi5TZXhwLnQgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShJZC5NYXAuZW1wdHkpO1xuICAgICAgbGV0IHNleHAgPSBzZXhwX29mX3QodGhpbmcpO1xuICAgICAgbGV0IHJlc3VsdDogc3RydWN0dXJlX3NoYXJlZCA9IChcbiAgICAgICAgc2V4cCxcbiAgICAgICAgc3RydWN0dXJlX3NoYXJlX21hcF4gfD4gT3B0aW9uLmdldCxcbiAgICAgICk7XG4gICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwIDo9IE5vbmU7XG4gICAgICBzZXhwX29mX3N0cnVjdHVyZV9zaGFyZWQocmVzdWx0KTtcbiAgICB8IFNvbWUoXykgPT4gc2V4cF9vZl90KHRoaW5nKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVG8gYmUgdXNlZCBvbmx5IG9uIHRoZSByb290IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBjdXJyZW50bHkgYmVpbmcgc2VyaWFsaXplZFxuICBsZXQgdF9vZl9zZXhwJyA9IChzZXhwOiBTZXhwbGliLlNleHAudCk6ICdhID0+IHtcbiAgICBzd2l0Y2ggKHN0cnVjdHVyZV9zaGFyZV9tYXBeKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgKHNleHAsIG1hcCkgPSBzdHJ1Y3R1cmVfc2hhcmVkX29mX3NleHAoc2V4cCk7XG4gICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwIDo9IFNvbWUobWFwKTtcbiAgICAgIGxldCB0aGluZyA9IHRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gTm9uZTtcbiAgICAgIHRoaW5nO1xuICAgIHwgU29tZShfKSA9PiB0X29mX3NleHAoc2V4cClcbiAgICB9O1xuICB9O1xuICAoc2V4cF9vZl90JywgdF9vZl9zZXhwJyk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuXG5sZXQgZXEgPSBTdHJpbmcuZXF1YWw7XG5cbmxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoO1xuXG5sZXQgdmFsaWRfcmVnZXggPVxuICBSZS5TdHIucmVnZXhwKFwiXlxcXFwoW2EtekEtWl1cXFxcfF9bX2EtekEtWjAtOV1cXFxcKVtfYS16QS1aMC05J10qJFwiKTtcbmxldCBpc192YWxpZCA9IHMgPT4gUmUuU3RyLnN0cmluZ19tYXRjaCh2YWxpZF9yZWdleCwgcywgMCk7XG5cbi8qIGhlbHBlciBmdW5jdGlvbiBmb3IgZ3VhcmRpbmcgb3B0aW9ucyB3aXRoIGlzX3ZhbGlkICovXG5sZXQgY2hlY2tfdmFsaWQgPSAocywgcmVzdWx0KSA9PlxuICBpZiAoaXNfdmFsaWQocykpIHtcbiAgICByZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IGlzX3RydWUgPSBlcShcInRydWVcIik7XG5cbmxldCBpc19mYWxzZSA9IGVxKFwiZmFsc2VcIik7XG5cbmxldCBpc19sZXQgPSBlcShcImxldFwiKTtcblxubGV0IGlzX2Z1biA9IGVxKFwiZnVuXCIpO1xuXG5sZXQgaXNfY2FzZSA9IGVxKFwiY2FzZVwiKTtcblxubGV0IGlzX3dpbGQgPSBlcShcIl9cIik7XG5cbmxldCBzcGxpdCA9IChwb3MsIG5hbWUpID0+IHtcbiAgbGV0IGxlZnRfdmFyID0gU3RyaW5nLnN1YihuYW1lLCAwLCBwb3MpO1xuICBsZXQgcmlnaHRfdmFyID0gU3RyaW5nLnN1YihuYW1lLCBwb3MsIFN0cmluZy5sZW5ndGgobmFtZSkgLSBwb3MpO1xuICAobGVmdF92YXIsIHJpZ2h0X3Zhcik7XG59O1xuXG4vKiBVc2VkIGZvciBWYXJCc3RNYXAgKi9cbmxldCBjb21wYXJlID0gKHg6IHQsIHk6IHQpID0+IGNvbXBhcmUoeCwgeSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xubW9kdWxlIFNleHAgPSBTZXhwbGliLlNleHA7XG5cbm1vZHVsZSBJbm5lciA9IHtcbiAgaW5jbHVkZSBNYXAuTWFrZShWYXIpO1xuXG4gIC8qIFNlZSBJbnRNYXAgKi9cbiAgW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChWYXIudCwgJ3YpO1xuXG4gIGxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gICAgaXRlcigoaywgdikgPT4gRm9ybWF0LmZwcmludGYoZiwgXCIlcyAtPiAlYUBcXG5cIiwgaywgcHBfdiwgdiksIG1hcCk7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3Y6ICd2ID0+IFNleHAudCwgbWFwOiB0KCd2KSk6IFNleHAudCA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiBzZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cDogU2V4cC50ID0+ICd2LCBzZXhwOiBTZXhwLnQpOiB0KCd2KSA9PlxuICAgIHNleHAgfD4gbGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKSB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXE7XG5cbiAgbGV0IHlvanNvbl9vZl90ID1cbiAgICAgICh5b2pzb25fb2ZfdjogJ3YgPT4gWW9qc29uLlNhZmUudCwgbWFwOiB0KCd2KSk6IFlvanNvbi5TYWZlLnQgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4geW9qc29uX29mX2xpc3QoeW9qc29uX29mX2JpbmRpbmcoeW9qc29uX29mX3YpKTtcbiAgbGV0IHRfb2ZfeW9qc29uID1cbiAgICAgICh2X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiAndiwgeW9qc29uOiBZb2pzb24uU2FmZS50KTogdCgndikgPT5cbiAgICB5b2pzb25cbiAgICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBvZl9zZXE7XG59O1xuXG5tb2R1bGUgVmFyQnN0TWFwMCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRfKCdhKSA9IElubmVyLnQoJ2EpO1xuXG4gIGxldCBlbXB0eSA9IElubmVyLmVtcHR5O1xuXG4gIGxldCBpc19lbXB0eSA9IElubmVyLmlzX2VtcHR5O1xuXG4gIGxldCBzaW5nbGV0b24gPSAoKHgsIGEpKSA9PiBJbm5lci5zaW5nbGV0b24oeCwgYSk7XG5cbiAgbGV0IGV4dGVuZCA9IChjdHgsICh4LCBhKSkgPT4gSW5uZXIuYWRkKHgsIGEsIGN0eCk7XG5cbiAgbGV0IHVwZGF0ZSA9IChjdHgsIGYsIHgpID0+IElubmVyLnVwZGF0ZSh4LCBmLCBjdHgpO1xuXG4gIGxldCB1bmlvbiA9IChjdHgxLCBjdHgyKSA9PlxuICAgIElubmVyLnVuaW9uKChfeCwgYSwgX2EnKSA9PiBTb21lKGEpLCBjdHgxLCBjdHgyKTtcblxuICBsZXQgbG9va3VwID0gKGN0eCwgeCkgPT4gSW5uZXIuZmluZF9vcHQoeCwgY3R4KTtcblxuICBsZXQgY29udGFpbnMgPSAoY3R4LCB4KSA9PiBJbm5lci5tZW0oeCwgY3R4KTtcblxuICBsZXQgbWFwID0gZiA9PiBJbm5lci5tYXBpKCh4LCBhKSA9PiBmKCh4LCBhKSkpO1xuXG4gIGxldCBmaWx0ZXIgPSBmID0+IElubmVyLmZpbHRlcigoeCwgYSkgPT4gZigoeCwgYSkpKTtcblxuICBsZXQgZm9sZCA9IChmLCBpbml0LCBjdHgpID0+XG4gICAgSW5uZXIuZm9sZCgoeCwgYSwgYWNjKSA9PiBmKCh4LCBhKSwgYWNjKSwgY3R4LCBpbml0KTtcblxuICBsZXQgbGVuZ3RoID0gSW5uZXIuY2FyZGluYWw7XG5cbiAgbGV0IHRvX2xpc3QgPSBjdHggPT4gY3R4IHw+IElubmVyLnRvX3NlcSB8PiBMaXN0Lm9mX3NlcTtcblxuICBsZXQgb2ZfbGlzdCA9IGJpbmRpbmdzID0+IGJpbmRpbmdzIHw+IExpc3QudG9fc2VxIHw+IElubmVyLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBPcmRlcmVkID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdF8oJ2EpID0ge1xuICAgIG1hcDogVmFyQnN0TWFwMC50XygnYSksXG4gICAgLyoqIFRoZSByZXZlcnNlIGluc2VydGlvbiBvcmRlciBvZiBiaW5kaW5ncyAoZGVub3RlZCBieSBrZXkpLiAqL1xuICAgIHJldl9vcmRlcjogbGlzdCgoVmFyLnQsIHVuaXQpKSxcbiAgfTtcblxuICBsZXQgZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCA9ICgpID0+XG4gICAgZmFpbHdpdGgoXCJWYXJCc3RNYXAuT3JkZXJlZDogb3JkZXIga2V5IG5vdCBpbiBtYXBcIik7XG5cbiAgbGV0IGVtcHR5ID0ge21hcDogVmFyQnN0TWFwMC5lbXB0eSwgcmV2X29yZGVyOiBbXX07XG5cbiAgbGV0IGlzX2VtcHR5ID0gKHttYXAsIF99KSA9PiBWYXJCc3RNYXAwLmlzX2VtcHR5KG1hcCk7XG5cbiAgbGV0IHNpbmdsZXRvbiA9ICgoeCwgYSkpID0+IHtcbiAgICB7bWFwOiBWYXJCc3RNYXAwLnNpbmdsZXRvbigoeCwgYSkpLCByZXZfb3JkZXI6IFsoeCwgKCkpXX07XG4gIH07XG5cbiAgbGV0IGV4dGVuZCA9ICh7bWFwLCByZXZfb3JkZXJ9LCAoeCwgYSkpID0+IHtcbiAgICBtYXA6IFZhckJzdE1hcDAuZXh0ZW5kKG1hcCwgKHgsIGEpKSxcbiAgICByZXZfb3JkZXI6IFsoeCwgKCkpLCAuLi5MaXN0LnJlbW92ZV9hc3NvYyh4LCByZXZfb3JkZXIpXSxcbiAgfTtcblxuICBsZXQgdW5pb24gPVxuICAgICAgKFxuICAgICAgICB7bWFwOiBtYXAxLCByZXZfb3JkZXI6IHJldl9vcmRlcjF9LFxuICAgICAgICB7bWFwOiBtYXAyLCByZXZfb3JkZXI6IHJldl9vcmRlcjJ9LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHJlYyB1bmlvbl9vcmRlciA9IChvcmRlcjEsIHJldl9vcmRlcjIpID0+XG4gICAgICBzd2l0Y2ggKG9yZGVyMSwgcmV2X29yZGVyMikge1xuICAgICAgfCAoW10sIG9yZGVyMikgPT4gb3JkZXIyXG4gICAgICB8IChbKHgsICgpKSwgLi4ucmV2X29yZGVyMSddLCBvcmRlcjIpID0+XG4gICAgICAgIGxldCByZXZfb3JkZXIyJyA9IFsoeCwgKCkpLCAuLi5MaXN0LnJlbW92ZV9hc3NvYyh4LCBvcmRlcjIpXTtcbiAgICAgICAgdW5pb25fb3JkZXIocmV2X29yZGVyMScsIHJldl9vcmRlcjInKTtcbiAgICAgIH07XG5cbiAgICBsZXQgbWFwID0gVmFyQnN0TWFwMC51bmlvbihtYXAxLCBtYXAyKTtcbiAgICBsZXQgcmV2X29yZGVyID0gdW5pb25fb3JkZXIoTGlzdC5yZXYocmV2X29yZGVyMSksIHJldl9vcmRlcjIpO1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGxvb2t1cCA9ICh7bWFwLCBffSwgeCkgPT4gVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KTtcblxuICBsZXQgY29udGFpbnMgPSAoe21hcCwgX30sIHgpID0+IFZhckJzdE1hcDAuY29udGFpbnMobWFwLCB4KTtcblxuICBsZXQgbWFwayA9IChmLCB7bWFwLCByZXZfb3JkZXJ9KSA9PiB7XG4gICAgbGV0IG1hcCA9IG1hcCB8PiBWYXJCc3RNYXAwLm1hcChmKTtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBtYXBvID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAobWFwJywgKHgsICgpKSkgPT5cbiAgICAgICAgICAgICBzd2l0Y2ggKFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCkpIHtcbiAgICAgICAgICAgICB8IFNvbWUoYSkgPT5cbiAgICAgICAgICAgICAgIGxldCBhID0gZigoeCwgYSkpO1xuICAgICAgICAgICAgICAgVmFyQnN0TWFwMC5leHRlbmQobWFwJywgKHgsIGEpKTtcbiAgICAgICAgICAgICB8IE5vbmUgPT4gZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCgpXG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgVmFyQnN0TWFwMC5lbXB0eSxcbiAgICAgICAgICk7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgZmlsdGVyayA9IChmLCB7bWFwLCByZXZfb3JkZXJ9KSA9PiB7XG4gICAgbGV0IG1hcCA9IFZhckJzdE1hcDAuZmlsdGVyKGYsIG1hcCk7XG4gICAgbGV0IHJldl9vcmRlciA9XG4gICAgICByZXZfb3JkZXJcbiAgICAgIHw+IExpc3QucmV2XG4gICAgICB8PiBMaXN0LmZpbHRlcigoKHgsIF8pKSA9PiBWYXJCc3RNYXAwLmNvbnRhaW5zKG1hcCwgeCkpXG4gICAgICB8PiBMaXN0LnJldjtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBmaWx0ZXJvID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgKG1hcCwgcmV2X29yZGVyKSA9XG4gICAgICByZXZfb3JkZXJcbiAgICAgIHw+IExpc3QucmV2XG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKChtYXAnLCByZXZfb3JkZXInKSwgKHgsICgpKSkgPT4ge1xuICAgICAgICAgICAgIGxldCByZXZfb3JkZXInID0gcmVmKHJldl9vcmRlcicpO1xuICAgICAgICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgICAgICAgVmFyQnN0TWFwMC51cGRhdGUoXG4gICAgICAgICAgICAgICAgIG1hcCcsXG4gICAgICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICAgICB8IFNvbWUoYSkgd2hlbiAhZigoeCwgYSkpID0+IE5vbmVcbiAgICAgICAgICAgICAgICAgfCBTb21lKGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIHJldl9vcmRlcicgOj0gWyh4LCAoKSksIC4uLnJldl9vcmRlcideXTtcbiAgICAgICAgICAgICAgICAgICAgIFNvbWUoYSk7XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCgpLFxuICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAobWFwLCByZXZfb3JkZXInXik7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgIChtYXAsIFtdKSxcbiAgICAgICAgICk7XG5cbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBmb2xkayA9IChmLCBpbml0LCB7bWFwLCBffSkgPT5cbiAgICBWYXJCc3RNYXAwLmZvbGQoKCh4LCBhKSwgYWNjKSA9PiBmKCh4LCBhKSwgYWNjKSwgaW5pdCwgbWFwKTtcblxuICBsZXQgZm9sZG8gPSAoZiwgaW5pdCwge21hcCwgcmV2X29yZGVyfSkgPT5cbiAgICByZXZfb3JkZXJcbiAgICB8PiBMaXN0LnJldlxuICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgKHgsICgpKSkgPT5cbiAgICAgICAgICAgc3dpdGNoIChWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpKSB7XG4gICAgICAgICAgIHwgU29tZShhKSA9PiBmKCh4LCBhKSwgYWNjKVxuICAgICAgICAgICB8IE5vbmUgPT4gZmFpbHdpdGhfa2V5c2luY29uc2lzdGVudCgpXG4gICAgICAgICAgIH0sXG4gICAgICAgICBpbml0LFxuICAgICAgICk7XG5cbiAgbGV0IGxlbmd0aCA9ICh7cmV2X29yZGVyLCBffSkgPT4gTGlzdC5sZW5ndGgocmV2X29yZGVyKTtcblxuICBsZXQgdG9fbGlzdGsgPSAoe21hcCwgX30pID0+IFZhckJzdE1hcDAudG9fbGlzdChtYXApO1xuXG4gIGxldCB0b19saXN0byA9ICh7bWFwLCByZXZfb3JkZXJ9KSA9PlxuICAgIHJldl9vcmRlclxuICAgIHw+IExpc3QucmV2XG4gICAgfD4gTGlzdC5tYXAoKCh4LCAoKSkpID0+XG4gICAgICAgICBzd2l0Y2ggKFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCkpIHtcbiAgICAgICAgIHwgU29tZShhKSA9PiAoeCwgYSlcbiAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgIH1cbiAgICAgICApO1xuXG4gIGxldCBvZl9saXN0ID0gYmluZGluZ3MgPT4ge1xuICAgIGxldCBtYXAgPSBWYXJCc3RNYXAwLm9mX2xpc3QoYmluZGluZ3MpO1xuICAgIGxldCByZXZfb3JkZXIgPSBiaW5kaW5ncyB8PiBMaXN0Lm1hcCgoKHgsIF8pKSA9PiAoeCwgKCkpKSB8PiBMaXN0LnJldjtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCB3aXRob3V0X2tleXMgPSAoa2V5cywgbSkgPT4ge1xuICAgIGZpbHRlcmsoKChzLCBfKSkgPT4gIUxpc3QuZXhpc3RzKHggPT4geCA9PSBzLCBrZXlzKSwgbSk7XG4gIH07XG59O1xuXG5pbmNsdWRlIFZhckJzdE1hcDA7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5sZXQgY29udGludWUgPSB4ID0+IHg7XG5sZXQgc3RvcCA9IChfLCB4KSA9PiB4O1xuXG4vKiBUT0RPW01hdHRdOiBFeHBsYWluIG1hcF90ZXJtICovXG5cbm1vZHVsZSByZWMgQW55OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEV4cChFeHAudClcbiAgICB8IFBhdChQYXQudClcbiAgICB8IFR5cChUeXAudClcbiAgICB8IFRQYXQoVFBhdC50KVxuICAgIHwgUnVsKFJ1bC50KVxuICAgIHwgTnVsKHVuaXQpXG4gICAgfCBBbnkodW5pdCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEV4cChFeHAudClcbiAgICB8IFBhdChQYXQudClcbiAgICB8IFR5cChUeXAudClcbiAgICB8IFRQYXQoVFBhdC50KVxuICAgIHwgUnVsKFJ1bC50KVxuICAgIHwgTnVsKHVuaXQpXG4gICAgfCBBbnkodW5pdCk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgcmVjX2NhbGwgPSB5ID0+XG4gICAgICBzd2l0Y2ggKHkpIHtcbiAgICAgIHwgRXhwKHgpID0+XG4gICAgICAgIEV4cChFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBQYXQoeCkgPT5cbiAgICAgICAgUGF0KFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCkpXG4gICAgICB8IFR5cCh4KSA9PlxuICAgICAgICBUeXAoVHlwLm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55LCB4KSlcbiAgICAgIHwgVFBhdCh4KSA9PlxuICAgICAgICBUUGF0KFxuICAgICAgICAgIFRQYXQubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpLFxuICAgICAgICApXG4gICAgICB8IFJ1bCh4KSA9PlxuICAgICAgICBSdWwoUnVsLm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55LCB4KSlcbiAgICAgIHwgTnVsICgpID0+IE51bCgpXG4gICAgICB8IEFueSAoKSA9PiBBbnkoKVxuICAgICAgfTtcbiAgICB4IHw+IGZfYW55KHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9ICh4LCB5KSA9PlxuICAgIHN3aXRjaCAoeCwgeSkge1xuICAgIHwgKEV4cCh4KSwgRXhwKHkpKSA9PiBFeHAuZmFzdF9lcXVhbCh4LCB5KVxuICAgIHwgKFBhdCh4KSwgUGF0KHkpKSA9PiBQYXQuZmFzdF9lcXVhbCh4LCB5KVxuICAgIHwgKFR5cCh4KSwgVHlwKHkpKSA9PiBUeXAuZmFzdF9lcXVhbCh4LCB5KVxuICAgIHwgKFRQYXQoeCksIFRQYXQoeSkpID0+IFRQYXQuZmFzdF9lcXVhbCh4LCB5KVxuICAgIHwgKFJ1bCh4KSwgUnVsKHkpKSA9PiBSdWwuZmFzdF9lcXVhbCh4LCB5KVxuICAgIHwgKE51bCAoKSwgTnVsICgpKSA9PiB0cnVlXG4gICAgfCAoQW55ICgpLCBBbnkgKCkpID0+IHRydWVcbiAgICB8IChFeHAoXyksIF8pXG4gICAgfCAoUGF0KF8pLCBfKVxuICAgIHwgKFR5cChfKSwgXylcbiAgICB8IChUUGF0KF8pLCBfKVxuICAgIHwgKFJ1bChfKSwgXylcbiAgICB8IChOdWwgKCksIF8pXG4gICAgfCAoQW55ICgpLCBfKSA9PiBmYWxzZVxuICAgIH07XG59XG5hbmQgRXhwOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBkZWZlcnJhbF9wb3NpdGlvbiA9XG4gICAgfCBJbkFwXG4gICAgfCBPdXRzaWRlQXA7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gICAgfCBGYWlsZWRDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgICB8IERlZmVycmFsKGRlZmVycmFsX3Bvc2l0aW9uKVxuICAgIHwgQm9vbChib29sKVxuICAgIHwgSW50KGludClcbiAgICB8IEZsb2F0KGZsb2F0KVxuICAgIHwgU3RyaW5nKHN0cmluZylcbiAgICB8IExpc3RMaXQobGlzdCh0KSlcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IEZ1bihcbiAgICAgICAgUGF0LnQsXG4gICAgICAgIHQsXG4gICAgICAgIFtAc2hvdy5vcGFxdWVdIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCksXG4gICAgICAgIG9wdGlvbihWYXIudCksXG4gICAgICApXG4gICAgfCBUeXBGdW4oVFBhdC50LCB0LCBvcHRpb24oVmFyLnQpKVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFZhcihWYXIudClcbiAgICB8IExldChQYXQudCwgdCwgdClcbiAgICB8IEZpeEYoUGF0LnQsIHQsIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCkpXG4gICAgfCBUeUFsaWFzKFRQYXQudCwgVHlwLnQsIHQpXG4gICAgfCBBcChPcGVyYXRvcnMuYXBfZGlyZWN0aW9uLCB0LCB0KVxuICAgIHwgVHlwQXAodCwgVHlwLnQpXG4gICAgfCBEZWZlcnJlZEFwKHQsIGxpc3QodCkpXG4gICAgfCBJZih0LCB0LCB0KVxuICAgIHwgU2VxKHQsIHQpXG4gICAgfCBUZXN0KHQpXG4gICAgfCBGaWx0ZXIoU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgICB8IENsb3N1cmUoW0BzaG93Lm9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gICAgfCBQYXJlbnModCkgLy8gKFxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgTGlzdENvbmNhdCh0LCB0KVxuICAgIHwgVW5PcChPcGVyYXRvcnMub3BfdW4sIHQpXG4gICAgfCBCaW5PcChPcGVyYXRvcnMub3BfYmluLCB0LCB0KVxuICAgIHwgQnVpbHRpbkZ1bihzdHJpbmcpXG4gICAgfCBNYXRjaCh0LCBsaXN0KChQYXQudCwgdCkpKVxuICAgIC8qIElOVkFSSUFOVDogaW4gZHluYW1pYyBleHByZXNzaW9ucywgY2FzdHMgbXVzdCBiZSBiZXR3ZWVuXG4gICAgICAgdHdvIGNvbnNpc3RlbnQgdHlwZXMuIEJvdGggdHlwZXMgc2hvdWxkIGJlIG5vcm1hbGl6ZWQgaW5cbiAgICAgICBkeW5hbWljcyBmb3IgdGhlIGNhc3QgY2FsY3VsdXMgdG8gd29yayByaWdodC4gKi9cbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBkZWZlcnJhbF9wb3NpdGlvbiA9XG4gICAgfCBJbkFwXG4gICAgfCBPdXRzaWRlQXA7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGUgLy8gQ29tYmluZSB0aGUgcHJvYmxlbXMgaW50byBvbmUgY29uc3RydWN0XG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKHQsIEludmFsaWRPcGVyYXRpb25FcnJvci50KVxuICAgIHwgRmFpbGVkQ2FzdCh0LCBUeXAudCwgVHlwLnQpIC8vIFRPRE86IGdldCByaWQgb2YgZmFpbGVkY2FzdFxuICAgIHwgRGVmZXJyYWwoZGVmZXJyYWxfcG9zaXRpb24pXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgRnVuKFxuICAgICAgICBQYXQudCxcbiAgICAgICAgdCxcbiAgICAgICAgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSxcbiAgICAgICAgb3B0aW9uKFZhci50KSxcbiAgICAgIClcbiAgICB8IFR5cEZ1bihUUGF0LnQsIHQsIG9wdGlvbihzdHJpbmcpKVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFZhcihWYXIudClcbiAgICB8IExldChQYXQudCwgdCwgdClcbiAgICB8IEZpeEYoUGF0LnQsIHQsIFtAc2hvdy5vcGFxdWVdIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCkpXG4gICAgfCBUeUFsaWFzKFRQYXQudCwgVHlwLnQsIHQpXG4gICAgfCBBcChPcGVyYXRvcnMuYXBfZGlyZWN0aW9uLCB0LCB0KSAvLyBub3RlOiBmdW5jdGlvbiBpcyBhbHdheXMgZmlyc3QgdGhlbiBhcmd1bWVudDsgZXZlbiBpbiBwaXBlIG1vZGVcbiAgICB8IFR5cEFwKHQsIFR5cC50KVxuICAgIHwgRGVmZXJyZWRBcCh0LCBsaXN0KHQpKVxuICAgIHwgSWYodCwgdCwgdClcbiAgICB8IFNlcSh0LCB0KVxuICAgIHwgVGVzdCh0KVxuICAgIHwgRmlsdGVyKFN0ZXBwZXJGaWx0ZXJLaW5kLnQsIHQpXG4gICAgfCBDbG9zdXJlKFtAc2hvdy5vcGFxdWVdIENsb3N1cmVFbnZpcm9ubWVudC50LCB0KVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBMaXN0Q29uY2F0KHQsIHQpXG4gICAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgICB8IEJpbk9wKE9wZXJhdG9ycy5vcF9iaW4sIHQsIHQpXG4gICAgfCBCdWlsdGluRnVuKHN0cmluZykgLy8vIERvZXNuJ3QgY3VycmVudGx5IGhhdmUgYSBkaXN0aW5ndWlzaGFibGUgc3ludGF4XG4gICAgfCBNYXRjaCh0LCBsaXN0KChQYXQudCwgdCkpKVxuICAgIHwgQ2FzdCh0LCBUeXAudCwgVHlwLnQpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICBsZXQgbWFwX3Rlcm0gPVxuICAgICAgKFxuICAgICAgICB+Zl9leHA9Y29udGludWUsXG4gICAgICAgIH5mX3BhdD1jb250aW51ZSxcbiAgICAgICAgfmZfdHlwPWNvbnRpbnVlLFxuICAgICAgICB+Zl90cGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl9ydWw9Y29udGludWUsXG4gICAgICAgIH5mX2FueT1jb250aW51ZSxcbiAgICAgICAgeCxcbiAgICAgICkgPT4ge1xuICAgIGxldCBleHBfbWFwX3Rlcm0gPVxuICAgICAgRXhwLm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcGF0X21hcF90ZXJtID1cbiAgICAgIFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHR5cF9tYXBfdGVybSA9XG4gICAgICBUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCB0cGF0X21hcF90ZXJtID1cbiAgICAgIFRQYXQubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBhbnlfbWFwX3Rlcm0gPVxuICAgICAgQW55Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgZmx0X21hcF90ZXJtID1cbiAgICAgIFN0ZXBwZXJGaWx0ZXJLaW5kLm1hcF90ZXJtKFxuICAgICAgICB+Zl9leHAsXG4gICAgICAgIH5mX3BhdCxcbiAgICAgICAgfmZfdHlwLFxuICAgICAgICB+Zl90cGF0LFxuICAgICAgICB+Zl9ydWwsXG4gICAgICAgIH5mX2FueSxcbiAgICAgICk7XG4gICAgbGV0IHJlY19jYWxsID0gKHt0ZXJtLCBffSBhcyBleHA6IHQpID0+IHtcbiAgICAgIC4uLmV4cCxcbiAgICAgIHRlcm06XG4gICAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZVxuICAgICAgICB8IEludmFsaWQoXylcbiAgICAgICAgfCBCb29sKF8pXG4gICAgICAgIHwgSW50KF8pXG4gICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IERlZmVycmFsKF8pXG4gICAgICAgIHwgVmFyKF8pID0+IHRlcm1cbiAgICAgICAgfCBNdWx0aUhvbGUodGhpbmdzKSA9PiBNdWx0aUhvbGUoTGlzdC5tYXAoYW55X21hcF90ZXJtLCB0aGluZ3MpKVxuICAgICAgICB8IER5bmFtaWNFcnJvckhvbGUoZSwgZXJyKSA9PiBEeW5hbWljRXJyb3JIb2xlKGV4cF9tYXBfdGVybShlKSwgZXJyKVxuICAgICAgICB8IEZhaWxlZENhc3QoZSwgdDEsIHQyKSA9PiBGYWlsZWRDYXN0KGV4cF9tYXBfdGVybShlKSwgdDEsIHQyKVxuICAgICAgICB8IExpc3RMaXQodHMpID0+IExpc3RMaXQoTGlzdC5tYXAoZXhwX21hcF90ZXJtLCB0cykpXG4gICAgICAgIHwgRnVuKHAsIGUsIGVudiwgZikgPT5cbiAgICAgICAgICBGdW4ocGF0X21hcF90ZXJtKHApLCBleHBfbWFwX3Rlcm0oZSksIGVudiwgZilcbiAgICAgICAgfCBUeXBGdW4odHAsIGUsIGYpID0+IFR5cEZ1bih0cGF0X21hcF90ZXJtKHRwKSwgZXhwX21hcF90ZXJtKGUpLCBmKVxuICAgICAgICB8IFR1cGxlKHhzKSA9PiBUdXBsZShMaXN0Lm1hcChleHBfbWFwX3Rlcm0sIHhzKSlcbiAgICAgICAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgICAgICAgIExldChwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlMSksIGV4cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgRml4RihwLCBlLCBlbnYpID0+IEZpeEYocGF0X21hcF90ZXJtKHApLCBleHBfbWFwX3Rlcm0oZSksIGVudilcbiAgICAgICAgfCBUeUFsaWFzKHRwLCB0LCBlKSA9PlxuICAgICAgICAgIFR5QWxpYXModHBhdF9tYXBfdGVybSh0cCksIHR5cF9tYXBfdGVybSh0KSwgZXhwX21hcF90ZXJtKGUpKVxuICAgICAgICB8IEFwKG9wLCBlMSwgZTIpID0+IEFwKG9wLCBleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFR5cEFwKGUsIHQpID0+IFR5cEFwKGV4cF9tYXBfdGVybShlKSwgdHlwX21hcF90ZXJtKHQpKVxuICAgICAgICB8IERlZmVycmVkQXAoZSwgZXMpID0+XG4gICAgICAgICAgRGVmZXJyZWRBcChleHBfbWFwX3Rlcm0oZSksIExpc3QubWFwKGV4cF9tYXBfdGVybSwgZXMpKVxuICAgICAgICB8IElmKGUxLCBlMiwgZTMpID0+XG4gICAgICAgICAgSWYoZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSwgZXhwX21hcF90ZXJtKGUzKSlcbiAgICAgICAgfCBTZXEoZTEsIGUyKSA9PiBTZXEoZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBUZXN0KGUpID0+IFRlc3QoZXhwX21hcF90ZXJtKGUpKVxuICAgICAgICB8IEZpbHRlcihmLCBlKSA9PiBGaWx0ZXIoZmx0X21hcF90ZXJtKGYpLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQ2xvc3VyZShlbnYsIGUpID0+IENsb3N1cmUoZW52LCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgUGFyZW5zKGUpID0+IFBhcmVucyhleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQ29ucyhlMSwgZTIpID0+IENvbnMoZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAgICAgICBMaXN0Q29uY2F0KGV4cF9tYXBfdGVybShlMSksIGV4cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgVW5PcChvcCwgZSkgPT4gVW5PcChvcCwgZXhwX21hcF90ZXJtKGUpKVxuICAgICAgICB8IEJpbk9wKG9wLCBlMSwgZTIpID0+XG4gICAgICAgICAgQmluT3Aob3AsIGV4cF9tYXBfdGVybShlMSksIGV4cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgQnVpbHRpbkZ1bihzdHIpID0+IEJ1aWx0aW5GdW4oc3RyKVxuICAgICAgICB8IE1hdGNoKGUsIHJscykgPT5cbiAgICAgICAgICBNYXRjaChcbiAgICAgICAgICAgIGV4cF9tYXBfdGVybShlKSxcbiAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAoKHAsIGUpKSA9PiAocGF0X21hcF90ZXJtKHApLCBleHBfbWFwX3Rlcm0oZSkpLFxuICAgICAgICAgICAgICBybHMsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgfCBDYXN0KGUsIHQxLCB0MikgPT4gQ2FzdChleHBfbWFwX3Rlcm0oZSksIHQxLCB0MilcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl9leHAocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgZmFzdF9lcXVhbCA9IChlMSwgZTIpID0+XG4gICAgc3dpdGNoIChlMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCBlMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoRHluYW1pY0Vycm9ySG9sZSh4LCBfKSwgXylcbiAgICB8IChQYXJlbnMoeCksIF8pID0+IGZhc3RfZXF1YWwoeCwgZTIpXG4gICAgfCAoXywgRHluYW1pY0Vycm9ySG9sZSh4LCBfKSlcbiAgICB8IChfLCBQYXJlbnMoeCkpID0+IGZhc3RfZXF1YWwoZTEsIHgpXG4gICAgfCAoRW1wdHlIb2xlLCBFbXB0eUhvbGUpID0+IHRydWVcbiAgICB8IChJbnZhbGlkKHMxKSwgSW52YWxpZChzMikpID0+IHMxID09IHMyXG4gICAgfCAoTXVsdGlIb2xlKHhzKSwgTXVsdGlIb2xlKHlzKSkgd2hlbiBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpID0+XG4gICAgICBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoRmFpbGVkQ2FzdChlMSwgdDEsIHQyKSwgRmFpbGVkQ2FzdChlMiwgdDMsIHQ0KSkgPT5cbiAgICAgIEV4cC5mYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MylcbiAgICAgICYmIFR5cC5mYXN0X2VxdWFsKHQyLCB0NClcbiAgICB8IChEZWZlcnJhbChkMSksIERlZmVycmFsKGQyKSkgPT4gZDEgPT0gZDJcbiAgICB8IChCb29sKGIxKSwgQm9vbChiMikpID0+IGIxID09IGIyXG4gICAgfCAoSW50KGkxKSwgSW50KGkyKSkgPT4gaTEgPT0gaTJcbiAgICB8IChGbG9hdChmMSksIEZsb2F0KGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChTdHJpbmcoczEpLCBTdHJpbmcoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKExpc3RMaXQoeHMpLCBMaXN0TGl0KHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgJiYgTGlzdC5lcXVhbChmYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoQ29uc3RydWN0b3IoYzEpLCBDb25zdHJ1Y3RvcihjMikpID0+IGMxID09IGMyXG4gICAgfCAoRnVuKHAxLCBlMSwgZW52MSwgXyksIEZ1bihwMiwgZTIsIGVudjIsIF8pKSA9PlxuICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKVxuICAgICAgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgICAmJiBPcHRpb24uZXF1YWwoQ2xvc3VyZUVudmlyb25tZW50LmlkX2VxdWFsLCBlbnYxLCBlbnYyKVxuICAgIHwgKFR5cEZ1bih0cDEsIGUxLCBfKSwgVHlwRnVuKHRwMiwgZTIsIF8pKSA9PlxuICAgICAgVFBhdC5mYXN0X2VxdWFsKHRwMSwgdHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChUdXBsZSh4cyksIFR1cGxlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgJiYgTGlzdC5lcXVhbChmYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoVmFyKHYxKSwgVmFyKHYyKSkgPT4gdjEgPT0gdjJcbiAgICB8IChMZXQocDEsIGUxLCBlMiksIExldChwMiwgZTMsIGU0KSkgPT5cbiAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMikgJiYgZmFzdF9lcXVhbChlMSwgZTMpICYmIGZhc3RfZXF1YWwoZTIsIGU0KVxuICAgIHwgKEZpeEYocDEsIGUxLCBjMSksIEZpeEYocDIsIGUyLCBjMikpID0+XG4gICAgICBQYXQuZmFzdF9lcXVhbChwMSwgcDIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIE9wdGlvbi5lcXVhbChDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwsIGMxLCBjMilcbiAgICB8IChUeUFsaWFzKHRwMSwgdDEsIGUxKSwgVHlBbGlhcyh0cDIsIHQyLCBlMikpID0+XG4gICAgICBUUGF0LmZhc3RfZXF1YWwodHAxLCB0cDIpXG4gICAgICAmJiBUeXAuZmFzdF9lcXVhbCh0MSwgdDIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChBcChkMSwgZTEsIGUyKSwgQXAoZDIsIGUzLCBlNCkpID0+XG4gICAgICBkMSA9PSBkMiAmJiBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoVHlwQXAoZTEsIHQxKSwgVHlwQXAoZTIsIHQyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKSAmJiBUeXAuZmFzdF9lcXVhbCh0MSwgdDIpXG4gICAgfCAoRGVmZXJyZWRBcChlMSwgZXMxKSwgRGVmZXJyZWRBcChlMiwgZXMyKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKGVzMSkgPT0gTGlzdC5sZW5ndGgoZXMyKVxuICAgICAgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgICAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIGVzMSwgZXMyKVxuICAgIHwgKElmKGUxLCBlMiwgZTMpLCBJZihlNCwgZTUsIGU2KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGU0KSAmJiBmYXN0X2VxdWFsKGUyLCBlNSkgJiYgZmFzdF9lcXVhbChlMywgZTYpXG4gICAgfCAoU2VxKGUxLCBlMiksIFNlcShlMywgZTQpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTMpICYmIGZhc3RfZXF1YWwoZTIsIGU0KVxuICAgIHwgKFRlc3QoZTEpLCBUZXN0KGUyKSkgPT4gZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoRmlsdGVyKGYxLCBlMSksIEZpbHRlcihmMiwgZTIpKSA9PlxuICAgICAgU3RlcHBlckZpbHRlcktpbmQuZmFzdF9lcXVhbChmMSwgZjIpICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKENsb3N1cmUoYzEsIGUxKSwgQ2xvc3VyZShjMiwgZTIpKSA9PlxuICAgICAgQ2xvc3VyZUVudmlyb25tZW50LmlkX2VxdWFsKGMxLCBjMikgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQ29ucyhlMSwgZTIpLCBDb25zKGUzLCBlNCkpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoTGlzdENvbmNhdChlMSwgZTIpLCBMaXN0Q29uY2F0KGUzLCBlNCkpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoVW5PcChvMSwgZTEpLCBVbk9wKG8yLCBlMikpID0+IG8xID09IG8yICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKEJpbk9wKG8xLCBlMSwgZTIpLCBCaW5PcChvMiwgZTMsIGU0KSkgPT5cbiAgICAgIG8xID09IG8yICYmIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChCdWlsdGluRnVuKGYxKSwgQnVpbHRpbkZ1bihmMikpID0+IGYxID09IGYyXG4gICAgfCAoTWF0Y2goZTEsIHJsczEpLCBNYXRjaChlMiwgcmxzMikpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QubGVuZ3RoKHJsczEpID09IExpc3QubGVuZ3RoKHJsczIpXG4gICAgICAmJiBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICAoKHAxLCBlMSksIChwMiwgZTIpKSA9PlxuICAgICAgICAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMikgJiYgZmFzdF9lcXVhbChlMSwgZTIpLFxuICAgICAgICAgICBybHMxLFxuICAgICAgICAgICBybHMyLFxuICAgICAgICAgKVxuICAgIHwgKENhc3QoZTEsIHQxLCB0MiksIENhc3QoZTIsIHQzLCB0NCkpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMikgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHQzKSAmJiBUeXAuZmFzdF9lcXVhbCh0MiwgdDQpXG4gICAgfCAoSW52YWxpZChfKSwgXylcbiAgICB8IChGYWlsZWRDYXN0KF8pLCBfKVxuICAgIHwgKERlZmVycmFsKF8pLCBfKVxuICAgIHwgKEJvb2woXyksIF8pXG4gICAgfCAoSW50KF8pLCBfKVxuICAgIHwgKEZsb2F0KF8pLCBfKVxuICAgIHwgKFN0cmluZyhfKSwgXylcbiAgICB8IChMaXN0TGl0KF8pLCBfKVxuICAgIHwgKENvbnN0cnVjdG9yKF8pLCBfKVxuICAgIHwgKEZ1bihfKSwgXylcbiAgICB8IChUeXBGdW4oXyksIF8pXG4gICAgfCAoVHVwbGUoXyksIF8pXG4gICAgfCAoVmFyKF8pLCBfKVxuICAgIHwgKExldChfKSwgXylcbiAgICB8IChGaXhGKF8pLCBfKVxuICAgIHwgKFR5QWxpYXMoXyksIF8pXG4gICAgfCAoQXAoXyksIF8pXG4gICAgfCAoVHlwQXAoXyksIF8pXG4gICAgfCAoRGVmZXJyZWRBcChfKSwgXylcbiAgICB8IChJZihfKSwgXylcbiAgICB8IChTZXEoXyksIF8pXG4gICAgfCAoVGVzdChfKSwgXylcbiAgICB8IChGaWx0ZXIoXyksIF8pXG4gICAgfCAoQ2xvc3VyZShfKSwgXylcbiAgICB8IChDb25zKF8pLCBfKVxuICAgIHwgKExpc3RDb25jYXQoXyksIF8pXG4gICAgfCAoVW5PcChfKSwgXylcbiAgICB8IChCaW5PcChfKSwgXylcbiAgICB8IChCdWlsdGluRnVuKF8pLCBfKVxuICAgIHwgKE1hdGNoKF8pLCBfKVxuICAgIHwgKENhc3QoXyksIF8pXG4gICAgfCAoTXVsdGlIb2xlKF8pLCBfKVxuICAgIHwgKEVtcHR5SG9sZSwgXykgPT4gZmFsc2VcbiAgICB9O1xufVxuYW5kIFBhdDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KGludClcbiAgICB8IEZsb2F0KGZsb2F0KVxuICAgIHwgQm9vbChib29sKVxuICAgIHwgU3RyaW5nKHN0cmluZylcbiAgICB8IExpc3RMaXQobGlzdCh0KSlcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IENvbnModCwgdClcbiAgICB8IFZhcihWYXIudClcbiAgICB8IFR1cGxlKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudCkgLy8gVGhlIHNlY29uZCBvbmUgaXMgaGlkZGVuIGZyb20gdGhlIHVzZXJcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybTpcbiAgICAoXG4gICAgICB+Zl9leHA6IChFeHAudCA9PiBFeHAudCwgRXhwLnQpID0+IEV4cC50PT8sXG4gICAgICB+Zl9wYXQ6IChQYXQudCA9PiBQYXQudCwgUGF0LnQpID0+IFBhdC50PT8sXG4gICAgICB+Zl90eXA6IChUeXAudCA9PiBUeXAudCwgVHlwLnQpID0+IFR5cC50PT8sXG4gICAgICB+Zl90cGF0OiAoVFBhdC50ID0+IFRQYXQudCwgVFBhdC50KSA9PiBUUGF0LnQ9PyxcbiAgICAgIH5mX3J1bDogKFJ1bC50ID0+IFJ1bC50LCBSdWwudCkgPT4gUnVsLnQ9PyxcbiAgICAgIH5mX2FueTogKEFueS50ID0+IEFueS50LCBBbnkudCkgPT4gQW55LnQ9PyxcbiAgICAgIHRcbiAgICApID0+XG4gICAgdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KGludClcbiAgICB8IEZsb2F0KGZsb2F0KVxuICAgIHwgQm9vbChib29sKVxuICAgIHwgU3RyaW5nKHN0cmluZylcbiAgICB8IExpc3RMaXQobGlzdCh0KSlcbiAgICB8IENvbnN0cnVjdG9yKHN0cmluZylcbiAgICB8IENvbnModCwgdClcbiAgICB8IFZhcihWYXIudClcbiAgICB8IFR1cGxlKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudCkgLy8gVGhlIHNlY29uZCBvbmUgaXMgaGlkZGVuIGZyb20gdGhlIHVzZXJcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHBhdF9tYXBfdGVybSA9XG4gICAgICBQYXQubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCB0eXBfbWFwX3Rlcm0gPVxuICAgICAgVHlwLm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgYW55X21hcF90ZXJtID1cbiAgICAgIEFueS5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHJlY19jYWxsID0gKHt0ZXJtLCBffSBhcyBleHA6IHQpID0+IHtcbiAgICAgIC4uLmV4cCxcbiAgICAgIHRlcm06XG4gICAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZVxuICAgICAgICB8IEludmFsaWQoXylcbiAgICAgICAgfCBXaWxkXG4gICAgICAgIHwgQm9vbChfKVxuICAgICAgICB8IEludChfKVxuICAgICAgICB8IEZsb2F0KF8pXG4gICAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgICAgfCBTdHJpbmcoXylcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IE11bHRpSG9sZSh0aGluZ3MpID0+IE11bHRpSG9sZShMaXN0Lm1hcChhbnlfbWFwX3Rlcm0sIHRoaW5ncykpXG4gICAgICAgIHwgTGlzdExpdCh0cykgPT4gTGlzdExpdChMaXN0Lm1hcChwYXRfbWFwX3Rlcm0sIHRzKSlcbiAgICAgICAgfCBBcChlMSwgZTIpID0+IEFwKHBhdF9tYXBfdGVybShlMSksIHBhdF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgQ29ucyhlMSwgZTIpID0+IENvbnMocGF0X21hcF90ZXJtKGUxKSwgcGF0X21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBUdXBsZSh4cykgPT4gVHVwbGUoTGlzdC5tYXAocGF0X21hcF90ZXJtLCB4cykpXG4gICAgICAgIHwgUGFyZW5zKGUpID0+IFBhcmVucyhwYXRfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQ2FzdChlLCB0MSwgdDIpID0+XG4gICAgICAgICAgQ2FzdChwYXRfbWFwX3Rlcm0oZSksIHR5cF9tYXBfdGVybSh0MSksIHR5cF9tYXBfdGVybSh0MikpXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB4IHw+IGZfcGF0KHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgcmVjIGZhc3RfZXF1YWwgPSAocDEsIHAyKSA9PlxuICAgIHN3aXRjaCAocDEgfD4gSWRUYWdnZWQudGVybV9vZiwgcDIgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICAgIHwgKFBhcmVucyh4KSwgXykgPT4gZmFzdF9lcXVhbCh4LCBwMilcbiAgICB8IChfLCBQYXJlbnMoeCkpID0+IGZhc3RfZXF1YWwocDEsIHgpXG4gICAgfCAoRW1wdHlIb2xlLCBFbXB0eUhvbGUpID0+IHRydWVcbiAgICB8IChNdWx0aUhvbGUoeHMpLCBNdWx0aUhvbGUoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKVxuICAgICAgJiYgTGlzdC5lcXVhbChBbnkuZmFzdF9lcXVhbCwgeHMsIHlzKVxuICAgIHwgKEludmFsaWQoczEpLCBJbnZhbGlkKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChXaWxkLCBXaWxkKSA9PiB0cnVlXG4gICAgfCAoQm9vbChiMSksIEJvb2woYjIpKSA9PiBiMSA9PSBiMlxuICAgIHwgKEludChpMSksIEludChpMikpID0+IGkxID09IGkyXG4gICAgfCAoRmxvYXQoZjEpLCBGbG9hdChmMikpID0+IGYxID09IGYyXG4gICAgfCAoU3RyaW5nKHMxKSwgU3RyaW5nKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChDb25zdHJ1Y3RvcihjMSksIENvbnN0cnVjdG9yKGMyKSkgPT4gYzEgPT0gYzJcbiAgICB8IChWYXIodjEpLCBWYXIodjIpKSA9PiB2MSA9PSB2MlxuICAgIHwgKExpc3RMaXQoeHMpLCBMaXN0TGl0KHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgJiYgTGlzdC5lcXVhbChmYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoQ29ucyh4MSwgeTEpLCBDb25zKHgyLCB5MikpID0+XG4gICAgICBmYXN0X2VxdWFsKHgxLCB4MikgJiYgZmFzdF9lcXVhbCh5MSwgeTIpXG4gICAgfCAoVHVwbGUoeHMpLCBUdXBsZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpICYmIExpc3QuZXF1YWwoZmFzdF9lcXVhbCwgeHMsIHlzKVxuICAgIHwgKEFwKHgxLCB5MSksIEFwKHgyLCB5MikpID0+IGZhc3RfZXF1YWwoeDEsIHgyKSAmJiBmYXN0X2VxdWFsKHkxLCB5MilcbiAgICB8IChDYXN0KHgxLCB0MSwgdDIpLCBDYXN0KHgyLCB1MSwgdTIpKSA9PlxuICAgICAgZmFzdF9lcXVhbCh4MSwgeDIpICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB1MSkgJiYgVHlwLmZhc3RfZXF1YWwodDIsIHUyKVxuICAgIHwgKEVtcHR5SG9sZSwgXylcbiAgICB8IChNdWx0aUhvbGUoXyksIF8pXG4gICAgfCAoSW52YWxpZChfKSwgXylcbiAgICB8IChXaWxkLCBfKVxuICAgIHwgKEJvb2woXyksIF8pXG4gICAgfCAoSW50KF8pLCBfKVxuICAgIHwgKEZsb2F0KF8pLCBfKVxuICAgIHwgKFN0cmluZyhfKSwgXylcbiAgICB8IChMaXN0TGl0KF8pLCBfKVxuICAgIHwgKENvbnN0cnVjdG9yKF8pLCBfKVxuICAgIHwgKENvbnMoXyksIF8pXG4gICAgfCAoVmFyKF8pLCBfKVxuICAgIHwgKFR1cGxlKF8pLCBfKVxuICAgIHwgKEFwKF8pLCBfKVxuICAgIHwgKENhc3QoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBUeXA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR5cGVfaG9sZSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKTtcblxuICAvKiBUWVBFX1BST1ZFTkFOQ0U6IEZyb20gd2hlbmNlIGRvZXMgYW4gdW5rbm93biB0eXBlIG9yaWdpbmF0ZT9cbiAgICAgSXMgaXQgZ2VuZXJhdGVkIGZyb20gYW4gdW5hbm5vdGF0ZWQgcGF0dGVybiB2YXJpYWJsZSAoU3luU3dpdGNoKSxcbiAgICAgYSBwYXR0ZXJuIHZhcmlhYmxlIGFubm90YXRlZCB3aXRoIGEgdHlwZSBob2xlIChUeXBlSG9sZSksIG9yXG4gICAgIGdlbmVyYXRlZCBieSBhbiBpbnRlcm5hbCBqdWRnZW1lbnQgKEludGVybmFsKT8gKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR5cGVfcHJvdmVuYW5jZSA9XG4gICAgfCBTeW5Td2l0Y2hcbiAgICB8IEhvbGUodHlwZV9ob2xlKVxuICAgIHwgSW50ZXJuYWw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgVW5rbm93bihUeXAudHlwZV9wcm92ZW5hbmNlKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBWYXIoc3RyaW5nKVxuICAgIHwgTGlzdCh0KVxuICAgIHwgQXJyb3codCwgdClcbiAgICB8IFN1bShDb25zdHJ1Y3Rvck1hcC50KHQpKVxuICAgIHwgUHJvZChsaXN0KHQpKVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgUmVjKFRQYXQudCwgdClcbiAgICB8IEZvcmFsbChUUGF0LnQsIHQpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICB0eXBlIHN1bV9tYXAgPSBDb25zdHJ1Y3Rvck1hcC50KHQpO1xuXG4gIGxldCBtYXBfdGVybTpcbiAgICAoXG4gICAgICB+Zl9leHA6IChFeHAudCA9PiBFeHAudCwgRXhwLnQpID0+IEV4cC50PT8sXG4gICAgICB+Zl9wYXQ6IChQYXQudCA9PiBQYXQudCwgUGF0LnQpID0+IFBhdC50PT8sXG4gICAgICB+Zl90eXA6IChUeXAudCA9PiBUeXAudCwgVHlwLnQpID0+IFR5cC50PT8sXG4gICAgICB+Zl90cGF0OiAoVFBhdC50ID0+IFRQYXQudCwgVFBhdC50KSA9PiBUUGF0LnQ9PyxcbiAgICAgIH5mX3J1bDogKFJ1bC50ID0+IFJ1bC50LCBSdWwudCkgPT4gUnVsLnQ9PyxcbiAgICAgIH5mX2FueTogKEFueS50ID0+IEFueS50LCBBbnkudCkgPT4gQW55LnQ9PyxcbiAgICAgIHRcbiAgICApID0+XG4gICAgdDtcblxuICBsZXQgc3Vic3Q6ICh0LCBUUGF0LnQsIHQpID0+IHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR5cGVfaG9sZSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKTtcblxuICAvKiBUWVBFX1BST1ZFTkFOQ0U6IEZyb20gd2hlbmNlIGRvZXMgYW4gdW5rbm93biB0eXBlIG9yaWdpbmF0ZT9cbiAgICAgSXMgaXQgZ2VuZXJhdGVkIGZyb20gYW4gdW5hbm5vdGF0ZWQgcGF0dGVybiB2YXJpYWJsZSAoU3luU3dpdGNoKSxcbiAgICAgYSBwYXR0ZXJuIHZhcmlhYmxlIGFubm90YXRlZCB3aXRoIGEgdHlwZSBob2xlIChUeXBlSG9sZSksIG9yXG4gICAgIGdlbmVyYXRlZCBieSBhbiBpbnRlcm5hbCBqdWRnZW1lbnQgKEludGVybmFsKT8gKi9cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHR5cGVfcHJvdmVuYW5jZSA9XG4gICAgfCBTeW5Td2l0Y2hcbiAgICB8IEhvbGUodHlwZV9ob2xlKVxuICAgIHwgSW50ZXJuYWw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgVW5rbm93bihUeXAudHlwZV9wcm92ZW5hbmNlKVxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBWYXIoc3RyaW5nKVxuICAgIHwgTGlzdCh0KVxuICAgIHwgQXJyb3codCwgdClcbiAgICB8IFN1bShDb25zdHJ1Y3Rvck1hcC50KHQpKVxuICAgIHwgUHJvZChsaXN0KHQpKVxuICAgIHwgUGFyZW5zKHQpXG4gICAgfCBBcCh0LCB0KVxuICAgIHwgUmVjKFRQYXQudCwgdClcbiAgICB8IEZvcmFsbChUUGF0LnQsIHQpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICB0eXBlIHN1bV9tYXAgPSBDb25zdHJ1Y3Rvck1hcC50KHQpO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHR5cF9tYXBfdGVybSA9XG4gICAgICBUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBhbnlfbWFwX3Rlcm0gPVxuICAgICAgQW55Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgdHBhdF9tYXBfdGVybSA9XG4gICAgICBUUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpXG4gICAgICAgIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKVxuICAgICAgICB8IFVua25vd24oU3luU3dpdGNoKVxuICAgICAgICB8IFVua25vd24oSW50ZXJuYWwpXG4gICAgICAgIHwgQm9vbFxuICAgICAgICB8IEludFxuICAgICAgICB8IEZsb2F0XG4gICAgICAgIHwgU3RyaW5nXG4gICAgICAgIHwgVmFyKF8pID0+IHRlcm1cbiAgICAgICAgfCBMaXN0KHQpID0+IExpc3QodHlwX21hcF90ZXJtKHQpKVxuICAgICAgICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUodGhpbmdzKSkpID0+XG4gICAgICAgICAgVW5rbm93bihIb2xlKE11bHRpSG9sZShMaXN0Lm1hcChhbnlfbWFwX3Rlcm0sIHRoaW5ncykpKSlcbiAgICAgICAgfCBBcChlMSwgZTIpID0+IEFwKHR5cF9tYXBfdGVybShlMSksIHR5cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgUHJvZCh4cykgPT4gUHJvZChMaXN0Lm1hcCh0eXBfbWFwX3Rlcm0sIHhzKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKHR5cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBBcnJvdyh0MSwgdDIpID0+IEFycm93KHR5cF9tYXBfdGVybSh0MSksIHR5cF9tYXBfdGVybSh0MikpXG4gICAgICAgIHwgU3VtKHZhcmlhbnRzKSA9PlxuICAgICAgICAgIFN1bShcbiAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICBmdW5cbiAgICAgICAgICAgICAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGMsIGlkcywgdCkgPT5cbiAgICAgICAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGMsIGlkcywgT3B0aW9uLm1hcCh0eXBfbWFwX3Rlcm0sIHQpKVxuICAgICAgICAgICAgICB8IENvbnN0cnVjdG9yTWFwLkJhZEVudHJ5KHQpID0+XG4gICAgICAgICAgICAgICAgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkodHlwX21hcF90ZXJtKHQpKSxcbiAgICAgICAgICAgICAgdmFyaWFudHMsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgfCBSZWModHAsIHQpID0+IFJlYyh0cGF0X21hcF90ZXJtKHRwKSwgdHlwX21hcF90ZXJtKHQpKVxuICAgICAgICB8IEZvcmFsbCh0cCwgdCkgPT4gRm9yYWxsKHRwYXRfbWFwX3Rlcm0odHApLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB4IHw+IGZfdHlwKHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgcmVjIHN1YnN0ID0gKHM6IHQsIHg6IFRQYXQudCwgdHk6IHQpID0+IHtcbiAgICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQoeCkpIHtcbiAgICB8IFNvbWUoc3RyKSA9PlxuICAgICAgbGV0ICh0ZXJtLCByZXdyYXApID0gSWRUYWdnZWQudW53cmFwKHR5KTtcbiAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgfCBJbnQgPT4gSW50IHw+IHJld3JhcFxuICAgICAgfCBGbG9hdCA9PiBGbG9hdCB8PiByZXdyYXBcbiAgICAgIHwgQm9vbCA9PiBCb29sIHw+IHJld3JhcFxuICAgICAgfCBTdHJpbmcgPT4gU3RyaW5nIHw+IHJld3JhcFxuICAgICAgfCBVbmtub3duKHByb3YpID0+IFVua25vd24ocHJvdikgfD4gcmV3cmFwXG4gICAgICB8IEFycm93KHR5MSwgdHkyKSA9PlxuICAgICAgICBBcnJvdyhzdWJzdChzLCB4LCB0eTEpLCBzdWJzdChzLCB4LCB0eTIpKSB8PiByZXdyYXBcbiAgICAgIHwgUHJvZCh0eXMpID0+IFByb2QoTGlzdC5tYXAoc3Vic3QocywgeCksIHR5cykpIHw+IHJld3JhcFxuICAgICAgfCBTdW0oc20pID0+XG4gICAgICAgIFN1bShDb25zdHJ1Y3Rvck1hcC5tYXAoT3B0aW9uLm1hcChzdWJzdChzLCB4KSksIHNtKSkgfD4gcmV3cmFwXG4gICAgICB8IEZvcmFsbCh0cDIsIHR5KVxuICAgICAgICAgIHdoZW4gVFBhdC50eXZhcl9vZl91dHBhdCh4KSA9PSBUUGF0LnR5dmFyX29mX3V0cGF0KHRwMikgPT5cbiAgICAgICAgRm9yYWxsKHRwMiwgdHkpIHw+IHJld3JhcFxuICAgICAgfCBGb3JhbGwodHAyLCB0eSkgPT4gRm9yYWxsKHRwMiwgc3Vic3QocywgeCwgdHkpKSB8PiByZXdyYXBcbiAgICAgIHwgUmVjKHRwMiwgdHkpIHdoZW4gVFBhdC50eXZhcl9vZl91dHBhdCh4KSA9PSBUUGF0LnR5dmFyX29mX3V0cGF0KHRwMikgPT5cbiAgICAgICAgUmVjKHRwMiwgdHkpIHw+IHJld3JhcFxuICAgICAgfCBSZWModHAyLCB0eSkgPT4gUmVjKHRwMiwgc3Vic3QocywgeCwgdHkpKSB8PiByZXdyYXBcbiAgICAgIHwgTGlzdCh0eSkgPT4gTGlzdChzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBWYXIoeSkgPT4gc3RyID09IHkgPyBzIDogVmFyKHkpIHw+IHJld3JhcFxuICAgICAgfCBQYXJlbnModHkpID0+IFBhcmVucyhzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBBcCh0MSwgdDIpID0+IEFwKHN1YnN0KHMsIHgsIHQxKSwgc3Vic3QocywgeCwgdDIpKSB8PiByZXdyYXBcbiAgICAgIH07XG4gICAgfCBOb25lID0+IHR5XG4gICAgfTtcbiAgfTtcblxuICAvKiBUeXBlIEVxdWFsaXR5OiBUaGlzIGNvaW5jaWRlcyB3aXRoIGFscGhhIGVxdWl2YWxlbmNlIGZvciBub3JtYWxpemVkIHR5cGVzLlxuICAgICBPdGhlciB0eXBlcyBtYXkgYmUgZXF1aXZhbGVudCBidXQgdGhpcyB3aWxsIG5vdCBkZXRlY3Qgc28gaWYgdGhleSBhcmUgbm90IG5vcm1hbGl6ZWQuICovXG5cbiAgbGV0IHJlYyBlcV9pbnRlcm5hbCA9IChuOiBpbnQsIHQxOiB0LCB0MjogdCkgPT4ge1xuICAgIHN3aXRjaCAoSWRUYWdnZWQudGVybV9vZih0MSksIElkVGFnZ2VkLnRlcm1fb2YodDIpKSB7XG4gICAgfCAoUGFyZW5zKHQxKSwgXykgPT4gZXFfaW50ZXJuYWwobiwgdDEsIHQyKVxuICAgIHwgKF8sIFBhcmVucyh0MikpID0+IGVxX2ludGVybmFsKG4sIHQxLCB0MilcbiAgICB8IChSZWMoeDEsIHQxKSwgUmVjKHgyLCB0MikpXG4gICAgfCAoRm9yYWxsKHgxLCB0MSksIEZvcmFsbCh4MiwgdDIpKSA9PlxuICAgICAgbGV0IGFscGhhX3N1YnN0ID1cbiAgICAgICAgc3Vic3Qoe1xuICAgICAgICAgIHRlcm06IFZhcihcIj1cIiArKyBzdHJpbmdfb2ZfaW50KG4pKSxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICAgIGlkczogW0lkLmludmFsaWRdLFxuICAgICAgICB9KTtcbiAgICAgIGVxX2ludGVybmFsKG4gKyAxLCBhbHBoYV9zdWJzdCh4MSwgdDEpLCBhbHBoYV9zdWJzdCh4MiwgdDIpKTtcbiAgICB8IChSZWMoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoRm9yYWxsKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKEludCwgSW50KSA9PiB0cnVlXG4gICAgfCAoSW50LCBfKSA9PiBmYWxzZVxuICAgIHwgKEZsb2F0LCBGbG9hdCkgPT4gdHJ1ZVxuICAgIHwgKEZsb2F0LCBfKSA9PiBmYWxzZVxuICAgIHwgKEJvb2wsIEJvb2wpID0+IHRydWVcbiAgICB8IChCb29sLCBfKSA9PiBmYWxzZVxuICAgIHwgKFN0cmluZywgU3RyaW5nKSA9PiB0cnVlXG4gICAgfCAoU3RyaW5nLCBfKSA9PiBmYWxzZVxuICAgIHwgKEFwKHQxLCB0MiksIEFwKHQxJywgdDInKSkgPT5cbiAgICAgIGVxX2ludGVybmFsKG4sIHQxLCB0MScpICYmIGVxX2ludGVybmFsKG4sIHQyLCB0MicpXG4gICAgfCAoQXAoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoVW5rbm93bihfKSwgVW5rbm93bihfKSkgPT4gdHJ1ZVxuICAgIHwgKFVua25vd24oXyksIF8pID0+IGZhbHNlXG4gICAgfCAoQXJyb3codDEsIHQyKSwgQXJyb3codDEnLCB0MicpKSA9PlxuICAgICAgZXFfaW50ZXJuYWwobiwgdDEsIHQxJykgJiYgZXFfaW50ZXJuYWwobiwgdDIsIHQyJylcbiAgICB8IChBcnJvdyhfKSwgXykgPT4gZmFsc2VcbiAgICB8IChQcm9kKHR5czEpLCBQcm9kKHR5czIpKSA9PiBMaXN0LmVxdWFsKGVxX2ludGVybmFsKG4pLCB0eXMxLCB0eXMyKVxuICAgIHwgKFByb2QoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoTGlzdCh0MSksIExpc3QodDIpKSA9PiBlcV9pbnRlcm5hbChuLCB0MSwgdDIpXG4gICAgfCAoTGlzdChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChTdW0oc20xKSwgU3VtKHNtMikpID0+XG4gICAgICAvKiBEb2VzIG5vdCBub3JtYWxpemUgdGhlIHR5cGVzLiAqL1xuICAgICAgQ29uc3RydWN0b3JNYXAuZXF1YWwoZXFfaW50ZXJuYWwobiksIHNtMSwgc20yKVxuICAgIHwgKFN1bShfKSwgXykgPT4gZmFsc2VcbiAgICB8IChWYXIobjEpLCBWYXIobjIpKSA9PiBuMSA9PSBuMlxuICAgIHwgKFZhcihfKSwgXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIGxldCBmYXN0X2VxdWFsID0gZXFfaW50ZXJuYWwoMCk7XG59XG5hbmQgVFBhdDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVmFyKHN0cmluZylcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybTpcbiAgICAoXG4gICAgICB+Zl9leHA6IChFeHAudCA9PiBFeHAudCwgRXhwLnQpID0+IEV4cC50PT8sXG4gICAgICB+Zl9wYXQ6IChQYXQudCA9PiBQYXQudCwgUGF0LnQpID0+IFBhdC50PT8sXG4gICAgICB+Zl90eXA6IChUeXAudCA9PiBUeXAudCwgVHlwLnQpID0+IFR5cC50PT8sXG4gICAgICB+Zl90cGF0OiAoVFBhdC50ID0+IFRQYXQudCwgVFBhdC50KSA9PiBUUGF0LnQ9PyxcbiAgICAgIH5mX3J1bDogKFJ1bC50ID0+IFJ1bC50LCBSdWwudCkgPT4gUnVsLnQ9PyxcbiAgICAgIH5mX2FueTogKEFueS50ID0+IEFueS50LCBBbnkudCkgPT4gQW55LnQ9PyxcbiAgICAgIHRcbiAgICApID0+XG4gICAgdDtcblxuICBsZXQgdHl2YXJfb2ZfdXRwYXQ6IHQgPT4gb3B0aW9uKHN0cmluZyk7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFZhcihzdHJpbmcpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICBsZXQgbWFwX3Rlcm0gPVxuICAgICAgKFxuICAgICAgICB+Zl9leHA9Y29udGludWUsXG4gICAgICAgIH5mX3BhdD1jb250aW51ZSxcbiAgICAgICAgfmZfdHlwPWNvbnRpbnVlLFxuICAgICAgICB+Zl90cGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl9ydWw9Y29udGludWUsXG4gICAgICAgIH5mX2FueT1jb250aW51ZSxcbiAgICAgICAgeCxcbiAgICAgICkgPT4ge1xuICAgIGxldCBhbnlfbWFwX3Rlcm0gPVxuICAgICAgQW55Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFZhcihfKSA9PiB0ZXJtXG4gICAgICAgIHwgTXVsdGlIb2xlKHRoaW5ncykgPT4gTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl90cGF0KHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgdHl2YXJfb2ZfdXRwYXQgPSAoe3Rlcm0sIF99OiB0KSA9PlxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgVmFyKHgpID0+IFNvbWUoeClcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSAodHAxOiB0LCB0cDI6IHQpID0+XG4gICAgc3dpdGNoICh0cDEgfD4gSWRUYWdnZWQudGVybV9vZiwgdHAyIHw+IElkVGFnZ2VkLnRlcm1fb2YpIHtcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKEludmFsaWQoczEpLCBJbnZhbGlkKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChNdWx0aUhvbGUoeHMpLCBNdWx0aUhvbGUoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKVxuICAgICAgJiYgTGlzdC5lcXVhbChBbnkuZmFzdF9lcXVhbCwgeHMsIHlzKVxuICAgIHwgKFZhcih4KSwgVmFyKHkpKSA9PiB4ID09IHlcbiAgICB8IChFbXB0eUhvbGUsIF8pXG4gICAgfCAoSW52YWxpZChfKSwgXylcbiAgICB8IChNdWx0aUhvbGUoXyksIF8pXG4gICAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG59XG5hbmQgUnVsOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFJ1bGVzKEV4cC50LCBsaXN0KChQYXQudCwgRXhwLnQpKSlcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybTpcbiAgICAoXG4gICAgICB+Zl9leHA6IChFeHAudCA9PiBFeHAudCwgRXhwLnQpID0+IEV4cC50PT8sXG4gICAgICB+Zl9wYXQ6IChQYXQudCA9PiBQYXQudCwgUGF0LnQpID0+IFBhdC50PT8sXG4gICAgICB+Zl90eXA6IChUeXAudCA9PiBUeXAudCwgVHlwLnQpID0+IFR5cC50PT8sXG4gICAgICB+Zl90cGF0OiAoVFBhdC50ID0+IFRQYXQudCwgVFBhdC50KSA9PiBUUGF0LnQ9PyxcbiAgICAgIH5mX3J1bDogKFJ1bC50ID0+IFJ1bC50LCBSdWwudCkgPT4gUnVsLnQ9PyxcbiAgICAgIH5mX2FueTogKEFueS50ID0+IEFueS50LCBBbnkudCkgPT4gQW55LnQ9PyxcbiAgICAgIHRcbiAgICApID0+XG4gICAgdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEhvbGUobGlzdChBbnkudCkpXG4gICAgfCBSdWxlcyhFeHAudCwgbGlzdCgoUGF0LnQsIEV4cC50KSkpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICBsZXQgbWFwX3Rlcm0gPVxuICAgICAgKFxuICAgICAgICB+Zl9leHA9Y29udGludWUsXG4gICAgICAgIH5mX3BhdD1jb250aW51ZSxcbiAgICAgICAgfmZfdHlwPWNvbnRpbnVlLFxuICAgICAgICB+Zl90cGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl9ydWw9Y29udGludWUsXG4gICAgICAgIH5mX2FueT1jb250aW51ZSxcbiAgICAgICAgeCxcbiAgICAgICkgPT4ge1xuICAgIGxldCBleHBfbWFwX3Rlcm0gPVxuICAgICAgRXhwLm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcGF0X21hcF90ZXJtID1cbiAgICAgIFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IHRlcm1cbiAgICAgICAgfCBIb2xlKHRoaW5ncykgPT4gSG9sZShMaXN0Lm1hcChhbnlfbWFwX3Rlcm0sIHRoaW5ncykpXG4gICAgICAgIHwgUnVsZXMoZSwgcmxzKSA9PlxuICAgICAgICAgIFJ1bGVzKFxuICAgICAgICAgICAgZXhwX21hcF90ZXJtKGUpLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICgocCwgZSkpID0+IChwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSksXG4gICAgICAgICAgICAgIHJscyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX3J1bChyZWNfY2FsbCk7XG4gIH07XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSAocjE6IHQsIHIyOiB0KSA9PlxuICAgIHN3aXRjaCAocjEgfD4gSWRUYWdnZWQudGVybV9vZiwgcjIgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICAgIHwgKEludmFsaWQoczEpLCBJbnZhbGlkKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChIb2xlKHhzKSwgSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoUnVsZXMoZTEsIHJsczEpLCBSdWxlcyhlMiwgcmxzMikpID0+XG4gICAgICBFeHAuZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgICAmJiBMaXN0Lmxlbmd0aChybHMxKSA9PSBMaXN0Lmxlbmd0aChybHMyKVxuICAgICAgJiYgTGlzdC5mb3JfYWxsMihcbiAgICAgICAgICAgKChwMSwgZTEpLCAocDIsIGUyKSkgPT5cbiAgICAgICAgICAgICBQYXQuZmFzdF9lcXVhbChwMSwgcDIpICYmIEV4cC5mYXN0X2VxdWFsKGUxLCBlMiksXG4gICAgICAgICAgIHJsczEsXG4gICAgICAgICAgIHJsczIsXG4gICAgICAgICApXG4gICAgfCAoSW52YWxpZChfKSwgXylcbiAgICB8IChIb2xlKF8pLCBfKVxuICAgIHwgKFJ1bGVzKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG59XG5cbmFuZCBFbnZpcm9ubWVudDoge1xuICBpbmNsdWRlXG4gICAgIChtb2R1bGUgdHlwZSBvZiBWYXJCc3RNYXAuT3JkZXJlZCkgd2l0aFxuICAgICAgdHlwZSB0XygnYSkgPSBWYXJCc3RNYXAuT3JkZXJlZC50XygnYSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB0XyhFeHAudCk7XG59ID0ge1xuICBpbmNsdWRlIFZhckJzdE1hcC5PcmRlcmVkO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gdF8oRXhwLnQpO1xufVxuXG5hbmQgQ2xvc3VyZUVudmlyb25tZW50OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0O1xuXG4gIGxldCB3cmFwOiAoSWQudCwgRW52aXJvbm1lbnQudCkgPT4gdDtcblxuICBsZXQgaWRfb2Y6IHQgPT4gSWQudDtcbiAgbGV0IG1hcF9vZjogdCA9PiBFbnZpcm9ubWVudC50O1xuXG4gIGxldCB0b19saXN0OiB0ID0+IGxpc3QoKFZhci50LCBFeHAudCkpO1xuXG4gIGxldCBvZl9lbnZpcm9ubWVudDogRW52aXJvbm1lbnQudCA9PiB0O1xuXG4gIGxldCBpZF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG5cbiAgbGV0IGVtcHR5OiB0O1xuICBsZXQgaXNfZW1wdHk6IHQgPT4gYm9vbDtcbiAgbGV0IGxlbmd0aDogdCA9PiBpbnQ7XG5cbiAgbGV0IGxvb2t1cDogKHQsIFZhci50KSA9PiBvcHRpb24oRXhwLnQpO1xuICBsZXQgY29udGFpbnM6ICh0LCBWYXIudCkgPT4gYm9vbDtcbiAgbGV0IHVwZGF0ZTogKEVudmlyb25tZW50LnQgPT4gRW52aXJvbm1lbnQudCwgdCkgPT4gdDtcbiAgbGV0IHVwZGF0ZV9rZWVwX2lkOiAoRW52aXJvbm1lbnQudCA9PiBFbnZpcm9ubWVudC50LCB0KSA9PiB0O1xuICBsZXQgZXh0ZW5kOiAodCwgKFZhci50LCBFeHAudCkpID0+IHQ7XG4gIGxldCBleHRlbmRfa2VlcF9pZDogKHQsIChWYXIudCwgRXhwLnQpKSA9PiB0O1xuICBsZXQgdW5pb246ICh0LCB0KSA9PiB0O1xuICBsZXQgdW5pb25fa2VlcF9pZDogKHQsIHQpID0+IHQ7XG4gIGxldCBtYXA6ICgoKFZhci50LCBFeHAudCkpID0+IEV4cC50LCB0KSA9PiB0O1xuICBsZXQgbWFwX2tlZXBfaWQ6ICgoKFZhci50LCBFeHAudCkpID0+IEV4cC50LCB0KSA9PiB0O1xuICBsZXQgZmlsdGVyOiAoKChWYXIudCwgRXhwLnQpKSA9PiBib29sLCB0KSA9PiB0O1xuICBsZXQgZmlsdGVyX2tlZXBfaWQ6ICgoKFZhci50LCBFeHAudCkpID0+IGJvb2wsIHQpID0+IHQ7XG4gIGxldCBmb2xkOiAoKChWYXIudCwgRXhwLnQpLCAnYikgPT4gJ2IsICdiLCB0KSA9PiAnYjtcblxuICBsZXQgd2l0aG91dF9rZXlzOiAobGlzdChWYXIudCksIHQpID0+IHQ7XG5cbiAgbGV0IHBsYWNlaG9sZGVyOiB0O1xufSA9IHtcbiAgbW9kdWxlIElubmVyOiB7XG4gICAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICAgIHR5cGUgdDtcblxuICAgIGxldCB3cmFwOiAoSWQudCwgRW52aXJvbm1lbnQudCkgPT4gdDtcblxuICAgIGxldCBpZF9vZjogdCA9PiBJZC50O1xuICAgIGxldCBtYXBfb2Y6IHQgPT4gRW52aXJvbm1lbnQudDtcbiAgfSA9IHtcbiAgICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gICAgdHlwZSB0ID0gKElkLnQsIEVudmlyb25tZW50LnQpO1xuXG4gICAgbGV0IHdyYXAgPSAoZWksIG1hcCk6IHQgPT4gKGVpLCBtYXApO1xuXG4gICAgbGV0IGlkX29mID0gKChlaSwgXykpID0+IGVpO1xuICAgIGxldCBtYXBfb2YgPSAoKF8sIG1hcCkpID0+IG1hcDtcbiAgICBsZXQgKHNleHBfb2ZfdCwgdF9vZl9zZXhwKSA9XG4gICAgICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2hlcmUoaWRfb2YsIHNleHBfb2ZfdCwgdF9vZl9zZXhwKTtcbiAgfTtcbiAgaW5jbHVkZSBJbm5lcjtcblxuICBsZXQgdG9fbGlzdCA9IGVudiA9PiBlbnYgfD4gbWFwX29mIHw+IEVudmlyb25tZW50LnRvX2xpc3RvO1xuXG4gIGxldCBvZl9lbnZpcm9ubWVudCA9IG1hcCA9PiB7XG4gICAgbGV0IGVpID0gSWQubWsoKTtcbiAgICB3cmFwKGVpLCBtYXApO1xuICB9O1xuXG4gIC8qIEVxdWFscyBvbmx5IG5lZWRzIHRvIGNoZWNrIGVudmlyb25tZW50IGlkJ3MgKGZhc3RlciB0aGFuIHN0cnVjdHVyYWwgZXF1YWxpdHlcbiAgICogY2hlY2tpbmcuKSAqL1xuICBsZXQgaWRfZXF1YWwgPSAoZW52MSwgZW52MikgPT4gaWRfb2YoZW52MSkgPT0gaWRfb2YoZW52Mik7XG5cbiAgbGV0IGVtcHR5ID0gRW52aXJvbm1lbnQuZW1wdHkgfD4gb2ZfZW52aXJvbm1lbnQ7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZW52ID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQuaXNfZW1wdHk7XG5cbiAgbGV0IGxlbmd0aCA9IGVudiA9PiBFbnZpcm9ubWVudC5sZW5ndGgobWFwX29mKGVudikpO1xuXG4gIGxldCBsb29rdXAgPSAoZW52LCB4KSA9PlxuICAgIGVudiB8PiBtYXBfb2YgfD4gKG1hcCA9PiBFbnZpcm9ubWVudC5sb29rdXAobWFwLCB4KSk7XG5cbiAgbGV0IGNvbnRhaW5zID0gKGVudiwgeCkgPT5cbiAgICBlbnYgfD4gbWFwX29mIHw+IChtYXAgPT4gRW52aXJvbm1lbnQuY29udGFpbnMobWFwLCB4KSk7XG5cbiAgbGV0IHVwZGF0ZSA9IChmLCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gZiB8PiBvZl9lbnZpcm9ubWVudDtcblxuICBsZXQgdXBkYXRlX2tlZXBfaWQgPSAoZiwgZW52KSA9PiBlbnYgfD4gbWFwX29mIHw+IGYgfD4gd3JhcChlbnYgfD4gaWRfb2YpO1xuXG4gIGxldCBleHRlbmQgPSAoZW52LCB4cikgPT5cbiAgICBlbnYgfD4gdXBkYXRlKG1hcCA9PiBFbnZpcm9ubWVudC5leHRlbmQobWFwLCB4cikpO1xuXG4gIGxldCBleHRlbmRfa2VlcF9pZCA9IChlbnYsIHhyKSA9PlxuICAgIGVudiB8PiB1cGRhdGVfa2VlcF9pZChtYXAgPT4gRW52aXJvbm1lbnQuZXh0ZW5kKG1hcCwgeHIpKTtcblxuICBsZXQgdW5pb24gPSAoZW52MSwgZW52MikgPT5cbiAgICBlbnYyIHw+IHVwZGF0ZShtYXAyID0+IEVudmlyb25tZW50LnVuaW9uKGVudjEgfD4gbWFwX29mLCBtYXAyKSk7XG5cbiAgbGV0IHVuaW9uX2tlZXBfaWQgPSAoZW52MSwgZW52MikgPT5cbiAgICBlbnYyIHw+IHVwZGF0ZV9rZWVwX2lkKG1hcDIgPT4gRW52aXJvbm1lbnQudW5pb24oZW52MSB8PiBtYXBfb2YsIG1hcDIpKTtcblxuICBsZXQgbWFwID0gKGYsIGVudikgPT4gZW52IHw+IHVwZGF0ZShFbnZpcm9ubWVudC5tYXBvKGYpKTtcblxuICBsZXQgbWFwX2tlZXBfaWQgPSAoZiwgZW52KSA9PiBlbnYgfD4gdXBkYXRlX2tlZXBfaWQoRW52aXJvbm1lbnQubWFwbyhmKSk7XG5cbiAgbGV0IGZpbHRlciA9IChmLCBlbnYpID0+IGVudiB8PiB1cGRhdGUoRW52aXJvbm1lbnQuZmlsdGVybyhmKSk7XG5cbiAgbGV0IGZpbHRlcl9rZWVwX2lkID0gKGYsIGVudikgPT5cbiAgICBlbnYgfD4gdXBkYXRlX2tlZXBfaWQoRW52aXJvbm1lbnQuZmlsdGVybyhmKSk7XG5cbiAgbGV0IGZvbGQgPSAoZiwgaW5pdCwgZW52KSA9PiBlbnYgfD4gbWFwX29mIHw+IEVudmlyb25tZW50LmZvbGRvKGYsIGluaXQpO1xuXG4gIGxldCBwbGFjZWhvbGRlciA9IHdyYXAoSWQuaW52YWxpZCwgRW52aXJvbm1lbnQuZW1wdHkpO1xuXG4gIGxldCB3aXRob3V0X2tleXMgPSBrZXlzID0+IHVwZGF0ZShFbnZpcm9ubWVudC53aXRob3V0X2tleXMoa2V5cykpO1xufVxuYW5kIFN0ZXBwZXJGaWx0ZXJLaW5kOiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBmaWx0ZXIgPSB7XG4gICAgcGF0OiBFeHAudCxcbiAgICBhY3Q6IEZpbHRlckFjdGlvbi50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEZpbHRlcihmaWx0ZXIpXG4gICAgfCBSZXNpZHVlKGludCwgRmlsdGVyQWN0aW9uLnQpO1xuXG4gIGxldCBtYXBfdGVybTpcbiAgICAoXG4gICAgICB+Zl9leHA6IChFeHAudCA9PiBFeHAudCwgRXhwLnQpID0+IEV4cC50PT8sXG4gICAgICB+Zl9wYXQ6IChQYXQudCA9PiBQYXQudCwgUGF0LnQpID0+IFBhdC50PT8sXG4gICAgICB+Zl90eXA6IChUeXAudCA9PiBUeXAudCwgVHlwLnQpID0+IFR5cC50PT8sXG4gICAgICB+Zl90cGF0OiAoVFBhdC50ID0+IFRQYXQudCwgVFBhdC50KSA9PiBUUGF0LnQ9PyxcbiAgICAgIH5mX3J1bDogKFJ1bC50ID0+IFJ1bC50LCBSdWwudCkgPT4gUnVsLnQ9PyxcbiAgICAgIH5mX2FueTogKEFueS50ID0+IEFueS50LCBBbnkudCkgPT4gQW55LnQ9PyxcbiAgICAgIHRcbiAgICApID0+XG4gICAgdDtcblxuICBsZXQgbWFwOiAoRXhwLnQgPT4gRXhwLnQsIHQpID0+IHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGZpbHRlciA9IHtcbiAgICBwYXQ6IEV4cC50LFxuICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRmlsdGVyKGZpbHRlcilcbiAgICB8IFJlc2lkdWUoaW50LCBGaWx0ZXJBY3Rpb24udCk7XG5cbiAgbGV0IG1hcCA9IChtYXBwZXIsIGZpbHRlcikgPT4ge1xuICAgIHN3aXRjaCAoZmlsdGVyKSB7XG4gICAgfCBGaWx0ZXIoe2FjdCwgcGF0fSkgPT4gRmlsdGVyKHthY3QsIHBhdDogbWFwcGVyKHBhdCl9KVxuICAgIHwgUmVzaWR1ZShpZHgsIGFjdCkgPT4gUmVzaWR1ZShpZHgsIGFjdClcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGZ1blxuICAgIHwgRmlsdGVyKHtwYXQ6IGUsIGFjdH0pID0+IEZpbHRlcih7cGF0OiBleHBfbWFwX3Rlcm0oZSksIGFjdH0pXG4gICAgfCBSZXNpZHVlKGksIGEpID0+IFJlc2lkdWUoaSwgYSk7XG4gIH07XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSAoZjEsIGYyKSA9PlxuICAgIHN3aXRjaCAoZjEsIGYyKSB7XG4gICAgfCAoRmlsdGVyKHtwYXQ6IGUxLCBhY3Q6IGExfSksIEZpbHRlcih7cGF0OiBlMiwgYWN0OiBhMn0pKSA9PlxuICAgICAgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKSAmJiBhMSA9PSBhMlxuICAgIHwgKFJlc2lkdWUoaTEsIGExKSwgUmVzaWR1ZShpMiwgYTIpKSA9PiBpMSA9PSBpMiAmJiBhMSA9PSBhMlxuICAgIHwgKEZpbHRlcihfKSwgXylcbiAgICB8IChSZXNpZHVlKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG59O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjbHMgPVxuICB8IEludmFsaWRcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGVcbiAgfCBWYXI7XG5cbmluY2x1ZGUgVGVybUJhc2UuVFBhdDtcblxubGV0IHJlcF9pZDogdCA9PiBJZC50ID0gSWRUYWdnZWQucmVwX2lkO1xubGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcblxubGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSkgPT5cbiAgc3dpdGNoICh0bXMpIHtcbiAgfCBbXSA9PiBFbXB0eUhvbGVcbiAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgfTtcblxubGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gIGZ1blxuICB8IEludmFsaWQoXykgPT4gSW52YWxpZFxuICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gIHwgVmFyKF8pID0+IFZhcjtcblxubGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgSW52YWxpZCA9PiBcIkludmFsaWQgdHlwZSBhbGlhc1wiXG4gIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHR5cGUgYWxpYXNcIlxuICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IHR5cGUgYWxpYXMgaG9sZVwiXG4gIHwgVmFyID0+IFwiVHlwZSBhbGlhc1wiO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBraW5kID1cbiAgfCBTaW5nbGV0b24oVGVybUJhc2UuVHlwLnQpXG4gIHwgQWJzdHJhY3Q7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdmFyX2VudHJ5ID0ge1xuICBuYW1lOiBWYXIudCxcbiAgaWQ6IElkLnQsXG4gIHR5cDogVGVybUJhc2UuVHlwLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR2YXJfZW50cnkgPSB7XG4gIG5hbWU6IHN0cmluZyxcbiAgaWQ6IElkLnQsXG4gIGtpbmQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVudHJ5ID1cbiAgfCBWYXJFbnRyeSh2YXJfZW50cnkpXG4gIHwgQ29uc3RydWN0b3JFbnRyeSh2YXJfZW50cnkpXG4gIHwgVFZhckVudHJ5KHR2YXJfZW50cnkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KGVudHJ5KTtcblxubGV0IGV4dGVuZCA9IChjdHgsIGVudHJ5KSA9PiBMaXN0LmNvbnMoZW50cnksIGN0eCk7XG5cbmxldCBleHRlbmRfdHZhciA9IChjdHg6IHQsIHR2YXJfZW50cnk6IHR2YXJfZW50cnkpOiB0ID0+XG4gIGV4dGVuZChjdHgsIFRWYXJFbnRyeSh0dmFyX2VudHJ5KSk7XG5cbmxldCBleHRlbmRfYWxpYXMgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcsIGlkOiBJZC50LCB0eTogVGVybUJhc2UuVHlwLnQpOiB0ID0+XG4gIGV4dGVuZF90dmFyKGN0eCwge25hbWUsIGlkLCBraW5kOiBTaW5nbGV0b24odHkpfSk7XG5cbmxldCBleHRlbmRfZHVtbXlfdHZhciA9IChjdHg6IHQsIHR2YXI6IFRQYXQudCkgPT5cbiAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHR2YXIpKSB7XG4gIHwgU29tZShuYW1lKSA9PiBleHRlbmRfdHZhcihjdHgsIHtraW5kOiBBYnN0cmFjdCwgbmFtZSwgaWQ6IElkLmludmFsaWR9KVxuICB8IE5vbmUgPT4gY3R4XG4gIH07XG5cbmxldCBsb29rdXBfdHZhciA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IG9wdGlvbih0dmFyX2VudHJ5KSA9PlxuICBMaXN0LmZpbmRfbWFwKFxuICAgIGZ1blxuICAgIHwgVFZhckVudHJ5KHYpIHdoZW4gdi5uYW1lID09IG5hbWUgPT4gU29tZSh2KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGxvb2t1cF9hbGlhcyA9IChjdHg6IHQsIHQ6IHN0cmluZyk6IG9wdGlvbihUZXJtQmFzZS5UeXAudCkgPT5cbiAgc3dpdGNoIChsb29rdXBfdHZhcihjdHgsIHQpKSB7XG4gIHwgU29tZSh7a2luZDogU2luZ2xldG9uKHR5KSwgX30pID0+IFNvbWUodHkpXG4gIHwgU29tZSh7a2luZDogQWJzdHJhY3QsIF99KVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xuXG5sZXQgZ2V0X2lkOiBlbnRyeSA9PiBJZC50ID1cbiAgZnVuXG4gIHwgVmFyRW50cnkoe2lkLCBffSlcbiAgfCBDb25zdHJ1Y3RvckVudHJ5KHtpZCwgX30pXG4gIHwgVFZhckVudHJ5KHtpZCwgX30pID0+IGlkO1xuXG5sZXQgbG9va3VwX3ZhciA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IG9wdGlvbih2YXJfZW50cnkpID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBWYXJFbnRyeSh2KSB3aGVuIHYubmFtZSA9PSBuYW1lID0+IFNvbWUodilcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBsb29rdXBfY3RyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHZhcl9lbnRyeSkgPT5cbiAgTGlzdC5maW5kX21hcChcbiAgICBmdW5cbiAgICB8IENvbnN0cnVjdG9yRW50cnkodCkgd2hlbiB0Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHQpXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgaXNfYWxpYXMgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcpOiBib29sID0+XG4gIHN3aXRjaCAobG9va3VwX2FsaWFzKGN0eCwgbmFtZSkpIHtcbiAgfCBTb21lKF8pID0+IHRydWVcbiAgfCBOb25lID0+IGZhbHNlXG4gIH07XG5cbmxldCBpc19hYnN0cmFjdCA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IGJvb2wgPT5cbiAgc3dpdGNoIChsb29rdXBfdHZhcihjdHgsIG5hbWUpKSB7XG4gIHwgU29tZSh7a2luZDogQWJzdHJhY3QsIF99KSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgYWRkX2N0cnMgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcsIGlkOiBJZC50LCBjdHJzOiBUZXJtQmFzZS5UeXAuc3VtX21hcCk6IHQgPT5cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ29uc3RydWN0b3JNYXAuVmFyaWFudChjdHIsIF8sIHR5cCkgPT5cbiAgICAgIFNvbWUoXG4gICAgICAgIENvbnN0cnVjdG9yRW50cnkoe1xuICAgICAgICAgIG5hbWU6IGN0cixcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0eXA6XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cCkge1xuICAgICAgICAgICAgfCBOb25lID0+IFRlcm1CYXNlLlR5cC5WYXIobmFtZSkgfD4gSWRUYWdnZWQuZnJlc2hcbiAgICAgICAgICAgIHwgU29tZSh0eXApID0+XG4gICAgICAgICAgICAgIFRlcm1CYXNlLlR5cC5BcnJvdyhcbiAgICAgICAgICAgICAgICB0eXAsXG4gICAgICAgICAgICAgICAgVGVybUJhc2UuVHlwLlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8PiBJZFRhZ2dlZC5mcmVzaFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfCBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeShfKSA9PiBOb25lLFxuICAgIGN0cnMsXG4gIClcbiAgQCBjdHg7XG5cbmxldCBzdWJ0cmFjdF9wcmVmaXggPSAoY3R4OiB0LCBwcmVmaXhfY3R4OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLy8gTk9URTogZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgcHJlZml4IGlzIGFuIGFjdHVhbCBwcmVmaXhcbiAgbGV0IHByZWZpeF9sZW5ndGggPSBMaXN0Lmxlbmd0aChwcmVmaXhfY3R4KTtcbiAgbGV0IGN0eF9sZW5ndGggPSBMaXN0Lmxlbmd0aChjdHgpO1xuICBpZiAocHJlZml4X2xlbmd0aCA+IGN0eF9sZW5ndGgpIHtcbiAgICBOb25lO1xuICB9IGVsc2Uge1xuICAgIFNvbWUoXG4gICAgICBMaXN0LnJldihcbiAgICAgICAgTGlzdFV0aWwuc3VibGlzdCgocHJlZml4X2xlbmd0aCwgY3R4X2xlbmd0aCksIExpc3QucmV2KGN0eCkpLFxuICAgICAgKSxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGFkZGVkX2JpbmRpbmdzID0gKGN0eF9hZnRlcjogdCwgY3R4X2JlZm9yZTogdCk6IHQgPT4ge1xuICAvKiBQcmVjb25kaXRpb246IG5ld19jdHggaXMgb2xkX2N0eCBwbHVzIHNvbWUgbmV3IGJpbmRpbmdzICovXG4gIGxldCBuZXdfY291bnQgPSBMaXN0Lmxlbmd0aChjdHhfYWZ0ZXIpIC0gTGlzdC5sZW5ndGgoY3R4X2JlZm9yZSk7XG4gIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbl9vcHQobmV3X2NvdW50LCBjdHhfYWZ0ZXIpKSB7XG4gIHwgU29tZSgoY3R4LCBfKSkgPT4gY3R4XG4gIHwgXyA9PiBbXVxuICB9O1xufTtcblxubW9kdWxlIFZhclNldCA9IFNldC5NYWtlKFZhcik7XG5cbi8vIE5vdGU6IGZpbHRlciBvdXQgZHVwbGljYXRlcyB3aGVuIHJlbmRlcmluZ1xubGV0IGZpbHRlcl9kdXBsaWNhdGVzID0gKGN0eDogdCk6IHQgPT5cbiAgY3R4XG4gIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICgoY3R4LCB0ZXJtX3NldCwgdHlwX3NldCksIGVudHJ5KSA9PiB7XG4gICAgICAgICBzd2l0Y2ggKGVudHJ5KSB7XG4gICAgICAgICB8IFZhckVudHJ5KHtuYW1lLCBffSlcbiAgICAgICAgIHwgQ29uc3RydWN0b3JFbnRyeSh7bmFtZSwgX30pID0+XG4gICAgICAgICAgIFZhclNldC5tZW0obmFtZSwgdGVybV9zZXQpXG4gICAgICAgICAgICAgPyAoY3R4LCB0ZXJtX3NldCwgdHlwX3NldClcbiAgICAgICAgICAgICA6IChbZW50cnksIC4uLmN0eF0sIFZhclNldC5hZGQobmFtZSwgdGVybV9zZXQpLCB0eXBfc2V0KVxuICAgICAgICAgfCBUVmFyRW50cnkoe25hbWUsIF99KSA9PlxuICAgICAgICAgICBWYXJTZXQubWVtKG5hbWUsIHR5cF9zZXQpXG4gICAgICAgICAgICAgPyAoY3R4LCB0ZXJtX3NldCwgdHlwX3NldClcbiAgICAgICAgICAgICA6IChbZW50cnksIC4uLmN0eF0sIHRlcm1fc2V0LCBWYXJTZXQuYWRkKG5hbWUsIHR5cF9zZXQpKVxuICAgICAgICAgfVxuICAgICAgIH0sXG4gICAgICAgKFtdLCBWYXJTZXQuZW1wdHksIFZhclNldC5lbXB0eSksXG4gICAgIClcbiAgfD4gKCgoY3R4LCBfLCBfKSkgPT4gTGlzdC5yZXYoY3R4KSk7XG5cbmxldCBzaGFkb3dzX3R5cCA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IGJvb2wgPT5cbiAgRm9ybS5pc19iYXNlX3R5cChuYW1lKSB8fCBsb29rdXBfYWxpYXMoY3R4LCBuYW1lKSAhPSBOb25lO1xuIiwib3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjbHMgPVxuICB8IEludmFsaWRcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGVcbiAgfCBTeW5Td2l0Y2hcbiAgfCBJbnRlcm5hbFxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IEFycm93XG4gIHwgUHJvZFxuICB8IFN1bVxuICB8IExpc3RcbiAgfCBWYXJcbiAgfCBDb25zdHJ1Y3RvclxuICB8IFBhcmVuc1xuICB8IEFwXG4gIHwgUmVjXG4gIHwgRm9yYWxsO1xuXG5pbmNsdWRlIFRlcm1CYXNlLlR5cDtcblxubGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG5sZXQgdW53cmFwOiB0ID0+ICh0ZXJtLCB0ZXJtID0+IHQpID0gSWRUYWdnZWQudW53cmFwO1xubGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcbi8qIGZyZXNoIGFzc2lnbnMgYSByYW5kb20gaWQsIHdoZXJlYXMgbWtfZmFzdCBhc3NpZ25zIElkLmludmFsaWQsIHdoaWNoXG4gICBpcyBhIGxvdCBmYXN0ZXIsIGFuZCBzaW5jZSB3ZSBzbyBvZnRlbiBtYWtlIHR5cGVzIGFuZCB0aHJvdyB0aGVtIGF3YXlcbiAgIHNob3J0bHkgYWZ0ZXIsIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSBpdC4gKi9cbmxldCBta19mYXN0OiB0ZXJtID0+IHQgPSB0ZXJtID0+IHt0ZXJtLCBpZHM6IFtJZC5pbnZhbGlkXSwgY29waWVkOiBmYWxzZX07XG5sZXQgcmVwX2lkOiB0ID0+IElkLnQgPSBJZFRhZ2dlZC5yZXBfaWQ7XG5cbmxldCBob2xlID0gKHRtczogbGlzdChUZXJtQmFzZS5BbnkudCkpID0+XG4gIHN3aXRjaCAodG1zKSB7XG4gIHwgW10gPT4gVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpXG4gIHwgW18sIC4uLl9dID0+IFVua25vd24oSG9sZShNdWx0aUhvbGUodG1zKSkpXG4gIH07XG5cbmxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICBmdW5cbiAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpID0+IEludmFsaWRcbiAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSkgPT4gRW1wdHlIb2xlXG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShfKSkpID0+IE11bHRpSG9sZVxuICB8IFVua25vd24oU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgfCBVbmtub3duKEludGVybmFsKSA9PiBJbnRlcm5hbFxuICB8IEludCA9PiBJbnRcbiAgfCBGbG9hdCA9PiBGbG9hdFxuICB8IEJvb2wgPT4gQm9vbFxuICB8IFN0cmluZyA9PiBTdHJpbmdcbiAgfCBMaXN0KF8pID0+IExpc3RcbiAgfCBBcnJvdyhfKSA9PiBBcnJvd1xuICB8IFZhcihfKSA9PiBWYXJcbiAgfCBQcm9kKF8pID0+IFByb2RcbiAgfCBQYXJlbnMoXykgPT4gUGFyZW5zXG4gIHwgQXAoXykgPT4gQXBcbiAgfCBTdW0oXykgPT4gU3VtXG4gIHwgUmVjKF8pID0+IFJlY1xuICB8IEZvcmFsbChfKSA9PiBGb3JhbGw7XG5cbmxldCBzaG93X2NsczogY2xzID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEludmFsaWQgPT4gXCJJbnZhbGlkIHR5cGVcIlxuICB8IE11bHRpSG9sZSA9PiBcIkJyb2tlbiB0eXBlXCJcbiAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSB0eXBlIGhvbGVcIlxuICB8IFN5blN3aXRjaCA9PiBcIlN5bnRoZXRpYyB0eXBlXCJcbiAgfCBJbnRlcm5hbCA9PiBcIkludGVybmFsIHR5cGVcIlxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgU3RyaW5nXG4gIHwgQm9vbCA9PiBcIkJhc2UgdHlwZVwiXG4gIHwgVmFyID0+IFwiVHlwZSB2YXJpYWJsZVwiXG4gIHwgQ29uc3RydWN0b3IgPT4gXCJTdW0gY29uc3RydWN0b3JcIlxuICB8IExpc3QgPT4gXCJMaXN0IHR5cGVcIlxuICB8IEFycm93ID0+IFwiRnVuY3Rpb24gdHlwZVwiXG4gIHwgUHJvZCA9PiBcIlByb2R1Y3QgdHlwZVwiXG4gIHwgU3VtID0+IFwiU3VtIHR5cGVcIlxuICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgdHlwZVwiXG4gIHwgQXAgPT4gXCJDb25zdHJ1Y3RvciBhcHBsaWNhdGlvblwiXG4gIHwgUmVjID0+IFwiUmVjdXJzaXZlIHR5cGVcIlxuICB8IEZvcmFsbCA9PiBcIkZvcmFsbCB0eXBlXCI7XG5cbmxldCByZWMgaXNfYXJyb3cgPSAodHlwOiB0KSA9PiB7XG4gIHN3aXRjaCAodHlwLnRlcm0pIHtcbiAgfCBQYXJlbnModHlwKSA9PiBpc19hcnJvdyh0eXApXG4gIHwgQXJyb3coXykgPT4gdHJ1ZVxuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmdcbiAgfCBMaXN0KF8pXG4gIHwgUHJvZChfKVxuICB8IFZhcihfKVxuICB8IEFwKF8pXG4gIHwgU3VtKF8pXG4gIHwgRm9yYWxsKF8pXG4gIHwgUmVjKF8pID0+IGZhbHNlXG4gIH07XG59O1xuXG5sZXQgcmVjIGlzX2ZvcmFsbCA9ICh0eXA6IHQpID0+IHtcbiAgc3dpdGNoICh0eXAudGVybSkge1xuICB8IFBhcmVucyh0eXApID0+IGlzX2ZvcmFsbCh0eXApXG4gIHwgRm9yYWxsKF8pID0+IHRydWVcbiAgfCBVbmtub3duKF8pXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nXG4gIHwgQXJyb3coXylcbiAgfCBMaXN0KF8pXG4gIHwgUHJvZChfKVxuICB8IFZhcihfKVxuICB8IEFwKF8pXG4gIHwgU3VtKF8pXG4gIHwgUmVjKF8pID0+IGZhbHNlXG4gIH07XG59O1xuXG4vKiBDb252ZXJ0cyBhIHN5bnRhY3RpYyB0eXBlIGludG8gYSBzZW1hbnRpYyB0eXBlLCBzcGVjaWZpY2FsbHlcbiAgIGl0IGFkZHMgaW1wbGljaXQgcmVjdXJzaXZlIHR5cGVzLCBhbmQgcmVtb3ZlcyBkdXBsaWNhdGVcbiAgIGNvbnN0cnVjdG9ycy4gKi9cbmxldCByZWMgdG9fdHlwOiAoQ3R4LnQsIHQpID0+IHQgPVxuICAoY3R4LCB1dHlwKSA9PiB7XG4gICAgbGV0ICh0ZXJtLCByZXdyYXApID0gSWRUYWdnZWQudW53cmFwKHV0eXApO1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgVW5rbm93bihfKVxuICAgIHwgQm9vbFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgU3RyaW5nID0+IHV0eXBcbiAgICB8IFZhcihuYW1lKSA9PlxuICAgICAgc3dpdGNoIChDdHgubG9va3VwX3R2YXIoY3R4LCBuYW1lKSkge1xuICAgICAgfCBTb21lKF8pID0+IFZhcihuYW1lKSB8PiByZXdyYXBcbiAgICAgIHwgTm9uZSA9PiBVbmtub3duKEhvbGUoSW52YWxpZChuYW1lKSkpIHw+IHJld3JhcFxuICAgICAgfVxuICAgIHwgQXJyb3codTEsIHUyKSA9PiBBcnJvdyh0b190eXAoY3R4LCB1MSksIHRvX3R5cChjdHgsIHUyKSkgfD4gcmV3cmFwXG4gICAgfCBQcm9kKHVzKSA9PiBQcm9kKExpc3QubWFwKHRvX3R5cChjdHgpLCB1cykpIHw+IHJld3JhcFxuICAgIHwgU3VtKHV0cykgPT4gU3VtKHRvX2N0cl9tYXAoY3R4LCB1dHMpKSB8PiByZXdyYXBcbiAgICB8IExpc3QodSkgPT4gTGlzdCh0b190eXAoY3R4LCB1KSkgfD4gcmV3cmFwXG4gICAgfCBQYXJlbnModSkgPT4gdG9fdHlwKGN0eCwgdSlcbiAgICB8IEZvcmFsbCh7dGVybTogSW52YWxpZChfKSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBGb3JhbGwoe3Rlcm06IEVtcHR5SG9sZSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBGb3JhbGwoe3Rlcm06IE11bHRpSG9sZShfKSwgX30gYXMgdHBhdCwgdGJvZHkpID0+XG4gICAgICBGb3JhbGwodHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXBcbiAgICB8IEZvcmFsbCh7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgdGJvZHkpID0+XG4gICAgICBsZXQgY3R4ID1cbiAgICAgICAgQ3R4LmV4dGVuZF90dmFyKFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgICB7bmFtZSwgaWQ6IElkVGFnZ2VkLnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSxcbiAgICAgICAgKTtcbiAgICAgIEZvcmFsbCh1dHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXA7XG4gICAgfCBSZWMoe3Rlcm06IEludmFsaWQoXyksIF99IGFzIHRwYXQsIHRib2R5KVxuICAgIHwgUmVjKHt0ZXJtOiBFbXB0eUhvbGUsIF99IGFzIHRwYXQsIHRib2R5KVxuICAgIHwgUmVjKHt0ZXJtOiBNdWx0aUhvbGUoXyksIF99IGFzIHRwYXQsIHRib2R5KSA9PlxuICAgICAgUmVjKHRwYXQsIHRvX3R5cChjdHgsIHRib2R5KSkgfD4gcmV3cmFwXG4gICAgfCBSZWMoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgICAgbGV0IGN0eCA9XG4gICAgICAgIEN0eC5leHRlbmRfdHZhcihcbiAgICAgICAgICBjdHgsXG4gICAgICAgICAge25hbWUsIGlkOiBJZFRhZ2dlZC5yZXBfaWQodXRwYXQpLCBraW5kOiBBYnN0cmFjdH0sXG4gICAgICAgICk7XG4gICAgICBSZWModXRwYXQsIHRvX3R5cChjdHgsIHRib2R5KSkgfD4gcmV3cmFwO1xuICAgIC8qIFRoZSBiZWxvdyBjYXNlcyBzaG91bGQgb2NjdXIgb25seSBpbnNpZGUgc3VtcyAqL1xuICAgIHwgQXAoXykgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gcmV3cmFwXG4gICAgfTtcbiAgfVxuYW5kIHRvX3ZhcmlhbnQ6XG4gIChDdHgudCwgQ29uc3RydWN0b3JNYXAudmFyaWFudCh0KSkgPT4gQ29uc3RydWN0b3JNYXAudmFyaWFudCh0KSA9XG4gIGN0eCA9PlxuICAgIGZ1blxuICAgIHwgVmFyaWFudChjdHIsIGlkcywgdSkgPT5cbiAgICAgIENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoY3RyLCBpZHMsIE9wdGlvbi5tYXAodG9fdHlwKGN0eCksIHUpKVxuICAgIHwgQmFkRW50cnkodSkgPT4gQ29uc3RydWN0b3JNYXAuQmFkRW50cnkodG9fdHlwKGN0eCwgdSkpXG5hbmQgdG9fY3RyX21hcCA9IChjdHg6IEN0eC50LCB1dHM6IGxpc3QoQ29uc3RydWN0b3JNYXAudmFyaWFudCh0KSkpID0+IHtcbiAgdXRzXG4gIHw+IExpc3QubWFwKHRvX3ZhcmlhbnQoY3R4KSlcbiAgfD4gTGlzdFV0aWwuZGVkdXBfZihcbiAgICAgICAoeDogQ29uc3RydWN0b3JNYXAudmFyaWFudCh0KSwgeTogQ29uc3RydWN0b3JNYXAudmFyaWFudCh0KSkgPT5cbiAgICAgICBzd2l0Y2ggKHgsIHkpIHtcbiAgICAgICB8IChWYXJpYW50KGMxLCBfLCBfKSwgVmFyaWFudChjMiwgXywgXykpID0+IGMxID09IGMyXG4gICAgICAgfCAoVmFyaWFudChfKSwgQmFkRW50cnkoXykpXG4gICAgICAgfCAoQmFkRW50cnkoXyksIFZhcmlhbnQoXykpXG4gICAgICAgfCAoQmFkRW50cnkoXyksIEJhZEVudHJ5KF8pKSA9PiBmYWxzZVxuICAgICAgIH1cbiAgICAgKTtcbn07XG5cbi8qIEZ1bmN0aW9ucyBiZWxvdyB0aGlzIHBvaW50IGFzc3VtZSB0aGF0IHR5cGVzIGhhdmUgYmVlbiB0aHJvdWdoIHRoZSB0b190eXAgZnVuY3Rpb24gYWJvdmUgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzb3VyY2UgPSB7XG4gIGlkOiBJZC50LFxuICB0eTogdCxcbn07XG5cbi8qIFN0cmlwIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBsaXN0IG9mIHNvdXJjZXMgKi9cbmxldCBvZl9zb3VyY2UgPSBMaXN0Lm1hcCgoc291cmNlOiBzb3VyY2UpID0+IHNvdXJjZS50eSk7XG5cbi8qIEhvdyB0eXBlIHByb3ZlbmFuY2UgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGNvbGxhdGVkIHdoZW5cbiAgIGpvaW5pbmcgdW5rbm93biB0eXBlcy4gVGhpcyBwcm9iYWJseSByZXF1aXJlcyBtb3JlIHRob3VnaHQsXG4gICBidXQgcmlnaHQgbm93IFR5cGVIb2xlIHN0cmljdGx5IHByZWRvbWluYXRlcyBvdmVyIEludGVybmFsXG4gICB3aGljaCBzdHJpY3RseSBwcmVkb21pbmF0ZXMgb3ZlciBTeW5Td2l0Y2guICovXG5sZXQgam9pbl90eXBlX3Byb3ZlbmFuY2UgPVxuICAgIChwMTogdHlwZV9wcm92ZW5hbmNlLCBwMjogdHlwZV9wcm92ZW5hbmNlKTogdHlwZV9wcm92ZW5hbmNlID0+XG4gIHN3aXRjaCAocDEsIHAyKSB7XG4gIHwgKEhvbGUoaDEpLCBIb2xlKGgyKSkgd2hlbiBoMSA9PSBoMiA9PiBIb2xlKGgxKVxuICB8IChIb2xlKEVtcHR5SG9sZSksIEhvbGUoRW1wdHlIb2xlKSB8IFN5blN3aXRjaClcbiAgfCAoU3luU3dpdGNoLCBIb2xlKEVtcHR5SG9sZSkpID0+IEhvbGUoRW1wdHlIb2xlKVxuICB8IChTeW5Td2l0Y2gsIEludGVybmFsKVxuICB8IChJbnRlcm5hbCwgU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgfCAoSW50ZXJuYWwgfCBIb2xlKF8pLCBfKVxuICB8IChfLCBIb2xlKF8pKSA9PiBJbnRlcm5hbFxuICB8IChTeW5Td2l0Y2gsIFN5blN3aXRjaCkgPT4gU3luU3dpdGNoXG4gIH07XG5cbmxldCByZWMgZnJlZV92YXJzID0gKH5ib3VuZD1bXSwgdHk6IHQpOiBsaXN0KFZhci50KSA9PlxuICBzd2l0Y2ggKHRlcm1fb2YodHkpKSB7XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiBbXVxuICB8IEFwKHQxLCB0MikgPT4gZnJlZV92YXJzKH5ib3VuZCwgdDEpIEAgZnJlZV92YXJzKH5ib3VuZCwgdDIpXG4gIHwgVmFyKHYpID0+IExpc3QubWVtKHYsIGJvdW5kKSA/IFtdIDogW3ZdXG4gIHwgUGFyZW5zKHR5KSA9PiBmcmVlX3ZhcnMofmJvdW5kLCB0eSlcbiAgfCBMaXN0KHR5KSA9PiBmcmVlX3ZhcnMofmJvdW5kLCB0eSlcbiAgfCBBcnJvdyh0MSwgdDIpID0+IGZyZWVfdmFycyh+Ym91bmQsIHQxKSBAIGZyZWVfdmFycyh+Ym91bmQsIHQyKVxuICB8IFN1bShzbSkgPT4gQ29uc3RydWN0b3JNYXAuZnJlZV92YXJpYWJsZXMoZnJlZV92YXJzKH5ib3VuZCksIHNtKVxuICB8IFByb2QodHlzKSA9PiBMaXN0VXRpbC5mbGF0X21hcChmcmVlX3ZhcnMofmJvdW5kKSwgdHlzKVxuICB8IFJlYyh4LCB0eSlcbiAgfCBGb3JhbGwoeCwgdHkpID0+XG4gICAgZnJlZV92YXJzKH5ib3VuZD0oeCB8PiBUUGF0LnR5dmFyX29mX3V0cGF0IHw+IE9wdGlvbi50b19saXN0KSBAIGJvdW5kLCB0eSlcbiAgfTtcblxubGV0IHZhcl9jb3VudCA9IHJlZigwKTtcbmxldCBmcmVzaF92YXIgPSAodmFyX25hbWU6IHN0cmluZykgPT4ge1xuICBsZXQgeCA9IHZhcl9jb3VudF47XG4gIHZhcl9jb3VudCA6PSB4ICsgMTtcbiAgdmFyX25hbWUgKysgXCJfzrFcIiArKyBzdHJpbmdfb2ZfaW50KHgpO1xufTtcblxubGV0IHVucm9sbCA9ICh0eTogdCk6IHQgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFJlYyh0cCwgdHlfYm9keSkgPT4gc3Vic3QodHksIHRwLCB0eV9ib2R5KVxuICB8IF8gPT4gdHlcbiAgfTtcblxuLyogVHlwZSBFcXVhbGl0eTogVGhpcyBjb2luY2lkZXMgd2l0aCBhbHBoYSBlcXVpdmFsZW5jZSBmb3Igbm9ybWFsaXplZCB0eXBlcy5cbiAgIE90aGVyIHR5cGVzIG1heSBiZSBlcXVpdmFsZW50IGJ1dCB0aGlzIHdpbGwgbm90IGRldGVjdCBzbyBpZiB0aGV5IGFyZSBub3Qgbm9ybWFsaXplZC4gKi9cbmxldCBlcSA9ICh0MTogdCwgdDI6IHQpOiBib29sID0+IGZhc3RfZXF1YWwodDEsIHQyKTtcblxuLyogTGF0dGljZSBqb2luIG9uIHR5cGVzLiBUaGlzIGlzIGEgTFVCIGpvaW4gaW4gdGhlIGhhemVsMlxuICAgc2Vuc2UgaW4gdGhhdCBhbnkgdHlwZSBkb21pbmF0ZXMgVW5rbm93bi4gVGhlIG9wdGlvbmFsXG4gICByZXNvbHZlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciwgaW4gdGhlIGNhc2Ugb2YgYSB0eXBlXG4gICB2YXJpYWJsZSBhbmQgYSBzdWNjZXNmdWwgam9pbiwgdG8gcmV0dXJuIHRoZSByZXNvbHZlZCBqb2luIHR5cGUsXG4gICBvciB0byByZXR1cm4gdGhlIChmaXJzdCkgdHlwZSB2YXJpYWJsZSBmb3IgcmVhZGFiaWxpdHkgKi9cbmxldCByZWMgam9pbiA9ICh+cmVzb2x2ZT1mYWxzZSwgfmZpeCwgY3R4OiBDdHgudCwgdHkxOiB0LCB0eTI6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQgam9pbicgPSBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgpO1xuICBzd2l0Y2ggKHRlcm1fb2YodHkxKSwgdGVybV9vZih0eTIpKSB7XG4gIHwgKF8sIFBhcmVucyh0eTIpKSA9PiBqb2luJyh0eTEsIHR5MilcbiAgfCAoUGFyZW5zKHR5MSksIF8pID0+IGpvaW4nKHR5MSwgdHkyKVxuICB8IChfLCBVbmtub3duKEhvbGUoXykpKSB3aGVuIGZpeCA9PlxuICAgIC8qIE5PVEUoYW5kcmV3KTogVGhpcyBpcyBsb2FkIGJlYXJpbmdcbiAgICAgICBmb3IgZW5zdXJpbmcgdGhhdCBmdW5jdGlvbiBsaXRlcmFscyBnZXQgYXBwcm9wcmlhdGVcbiAgICAgICBjYXN0cy4gRG9jdW1lbnRhdGlvbi9EeW5hbWljcyBoYXMgcmVncmVzc2lvbiB0ZXN0cyAqL1xuICAgIFNvbWUodHkyKVxuICB8IChVbmtub3duKHAxKSwgVW5rbm93bihwMikpID0+XG4gICAgU29tZShVbmtub3duKGpvaW5fdHlwZV9wcm92ZW5hbmNlKHAxLCBwMikpIHw+IG1rX2Zhc3QpXG4gIHwgKFVua25vd24oXyksIF8pID0+IFNvbWUodHkyKVxuICB8IChfLCBVbmtub3duKEludGVybmFsIHwgU3luU3dpdGNoKSkgPT4gU29tZSh0eTEpXG4gIHwgKFZhcihuMSksIFZhcihuMikpID0+XG4gICAgaWYgKG4xID09IG4yKSB7XG4gICAgICBTb21lKHR5MSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCogdHkxID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG4xKTtcbiAgICAgIGxldCogdHkyID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG4yKTtcbiAgICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5MSwgdHkyKTtcbiAgICAgICFyZXNvbHZlICYmIGVxKHR5MSwgdHlfam9pbikgPyB0eTEgOiB0eV9qb2luO1xuICAgIH1cbiAgfCAoVmFyKG5hbWUpLCBfKSA9PlxuICAgIGxldCogdHlfbmFtZSA9IEN0eC5sb29rdXBfYWxpYXMoY3R4LCBuYW1lKTtcbiAgICBsZXQrIHR5X2pvaW4gPSBqb2luJyh0eV9uYW1lLCB0eTIpO1xuICAgICFyZXNvbHZlICYmIGVxKHR5X25hbWUsIHR5X2pvaW4pID8gdHkxIDogdHlfam9pbjtcbiAgfCAoXywgVmFyKG5hbWUpKSA9PlxuICAgIGxldCogdHlfbmFtZSA9IEN0eC5sb29rdXBfYWxpYXMoY3R4LCBuYW1lKTtcbiAgICBsZXQrIHR5X2pvaW4gPSBqb2luJyh0eV9uYW1lLCB0eTEpO1xuICAgICFyZXNvbHZlICYmIGVxKHR5X25hbWUsIHR5X2pvaW4pID8gdHkyIDogdHlfam9pbjtcbiAgLyogTm90ZTogT3JkZXJpbmcgb2YgVW5rbm93biwgVmFyLCBhbmQgUmVjIGFib3ZlIGlzIGxvYWQtYmVhcmluZyEgKi9cbiAgfCAoUmVjKHRwMSwgdHkxKSwgUmVjKHRwMiwgdHkyKSkgPT5cbiAgICBsZXQgY3R4ID0gQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgdHAxKTtcbiAgICBsZXQgdHkxJyA9XG4gICAgICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSkge1xuICAgICAgfCBTb21lKHgyKSA9PiBzdWJzdChWYXIoeDIpIHw+IG1rX2Zhc3QsIHRwMSwgdHkxKVxuICAgICAgfCBOb25lID0+IHR5MVxuICAgICAgfTtcbiAgICBsZXQrIHR5X2JvZHkgPSBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgsIHR5MScsIHR5Mik7XG4gICAgUmVjKHRwMSwgdHlfYm9keSkgfD4gbWtfZmFzdDtcbiAgfCAoUmVjKF8pLCBfKSA9PiBOb25lXG4gIHwgKEZvcmFsbCh4MSwgdHkxKSwgRm9yYWxsKHgyLCB0eTIpKSA9PlxuICAgIGxldCBjdHggPSBDdHguZXh0ZW5kX2R1bW15X3R2YXIoY3R4LCB4MSk7XG4gICAgbGV0IHR5MScgPVxuICAgICAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHgyKSkge1xuICAgICAgfCBTb21lKHgyKSA9PiBzdWJzdChWYXIoeDIpIHw+IG1rX2Zhc3QsIHgxLCB0eTEpXG4gICAgICB8IE5vbmUgPT4gdHkxXG4gICAgICB9O1xuICAgIGxldCsgdHlfYm9keSA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCwgdHkxJywgdHkyKTtcbiAgICBGb3JhbGwoeDEsIHR5X2JvZHkpIHw+IG1rX2Zhc3Q7XG4gIC8qIE5vdGUgZm9yIGFib3ZlOiB0aGVyZSBpcyBubyBkYW5nZXIgb2YgZnJlZSB2YXJpYWJsZSBjYXB0dXJlIGFzXG4gICAgIHN1YnN0IGl0c2VsZiBwZXJmb3JtcyBjYXB0dXJlIGF2b2lkaW5nIHN1YnN0aXR1dGlvbi4gSG93ZXZlciB0aGlzXG4gICAgIG1heSBnZW5lcmF0ZSBpbnRlcm5hbCB0eXBlIHZhcmlhYmxlIG5hbWVzIHRoYXQgaW4gY29ybmVyIGNhc2VzIGNhblxuICAgICBiZSBleHBvc2VkIHRvIHRoZSB1c2VyLiBXZSBwcmVzZXJ2ZSB0aGUgdmFyaWFibGUgbmFtZSBvZiB0aGVcbiAgICAgc2Vjb25kIHR5cGUgdG8gcHJlc2VydmUgc3ludGhlc2l6ZWQgdHlwZSB2YXJpYWJsZSBuYW1lcywgd2hpY2hcbiAgICAgY29tZSBmcm9tIHVzZXIgYW5ub3RhdGlvbnMuICovXG4gIHwgKEZvcmFsbChfKSwgXykgPT4gTm9uZVxuICB8IChJbnQsIEludCkgPT4gU29tZSh0eTEpXG4gIHwgKEludCwgXykgPT4gTm9uZVxuICB8IChGbG9hdCwgRmxvYXQpID0+IFNvbWUodHkxKVxuICB8IChGbG9hdCwgXykgPT4gTm9uZVxuICB8IChCb29sLCBCb29sKSA9PiBTb21lKHR5MSlcbiAgfCAoQm9vbCwgXykgPT4gTm9uZVxuICB8IChTdHJpbmcsIFN0cmluZykgPT4gU29tZSh0eTEpXG4gIHwgKFN0cmluZywgXykgPT4gTm9uZVxuICB8IChBcnJvdyh0eTEsIHR5MiksIEFycm93KHR5MScsIHR5MicpKSA9PlxuICAgIGxldCogdHkxID0gam9pbicodHkxLCB0eTEnKTtcbiAgICBsZXQrIHR5MiA9IGpvaW4nKHR5MiwgdHkyJyk7XG4gICAgQXJyb3codHkxLCB0eTIpIHw+IG1rX2Zhc3Q7XG4gIHwgKEFycm93KF8pLCBfKSA9PiBOb25lXG4gIHwgKFByb2QodHlzMSksIFByb2QodHlzMikpID0+XG4gICAgbGV0KiB0eXMgPSBMaXN0VXRpbC5tYXAyX29wdChqb2luJywgdHlzMSwgdHlzMik7XG4gICAgbGV0KyB0eXMgPSBPcHRVdGlsLnNlcXVlbmNlKHR5cyk7XG4gICAgUHJvZCh0eXMpIHw+IG1rX2Zhc3Q7XG4gIHwgKFByb2QoXyksIF8pID0+IE5vbmVcbiAgfCAoU3VtKHNtMSksIFN1bShzbTIpKSA9PlxuICAgIGxldCsgc20nID0gQ29uc3RydWN0b3JNYXAuam9pbihlcSwgam9pbih+cmVzb2x2ZSwgfmZpeCwgY3R4KSwgc20xLCBzbTIpO1xuICAgIFN1bShzbScpIHw+IG1rX2Zhc3Q7XG4gIHwgKFN1bShfKSwgXykgPT4gTm9uZVxuICB8IChMaXN0KHR5MSksIExpc3QodHkyKSkgPT5cbiAgICBsZXQrIHR5ID0gam9pbicodHkxLCB0eTIpO1xuICAgIExpc3QodHkpIHw+IG1rX2Zhc3Q7XG4gIHwgKExpc3QoXyksIF8pID0+IE5vbmVcbiAgfCAoQXAoXyksIF8pID0+IGZhaWx3aXRoKFwiVHlwZSBqb2luIG9mIGFwXCIpXG4gIH07XG59O1xuXG4vKiBSRVFVSVJFUyBOT1JNQUxJWkVEIFRZUEVTXG4gICBSZW1vdmUgc3luc3dpdGNoZXMgZnJvbSB0MSBieSBtYWNoaW5nIGFnYWluc3QgdDIgKi9cbmxldCByZWMgbWF0Y2hfc3luc3dpdGNoID0gKHQxOiB0LCB0MjogdCkgPT4ge1xuICBsZXQgKHRlcm0xLCByZXdyYXAxKSA9IHVud3JhcCh0MSk7XG4gIHN3aXRjaCAodGVybTEsIHRlcm1fb2YodDIpKSB7XG4gIHwgKFBhcmVucyh0MSksIF8pID0+IFBhcmVucyhtYXRjaF9zeW5zd2l0Y2godDEsIHQyKSkgfD4gcmV3cmFwMVxuICB8IChVbmtub3duKFN5blN3aXRjaCksIF8pID0+IHQyXG4gIC8vIFRoZXNlIGNhc2VzIGNhbid0IGhhdmUgYSBzeW5zd2l0Y2ggaW5zaWRlXG4gIHwgKFVua25vd24oXyksIF8pXG4gIHwgKEludCwgXylcbiAgfCAoRmxvYXQsIF8pXG4gIHwgKEJvb2wsIF8pXG4gIHwgKFN0cmluZywgXylcbiAgfCAoVmFyKF8pLCBfKVxuICB8IChBcChfKSwgXylcbiAgfCAoUmVjKF8pLCBfKVxuICB8IChGb3JhbGwoXyksIF8pID0+IHQxXG4gIC8vIFRoZXNlIG1pZ2h0XG4gIHwgKExpc3QodHkxKSwgTGlzdCh0eTIpKSA9PiBMaXN0KG1hdGNoX3N5bnN3aXRjaCh0eTEsIHR5MikpIHw+IHJld3JhcDFcbiAgfCAoTGlzdChfKSwgXykgPT4gdDFcbiAgfCAoQXJyb3codHkxLCB0eTIpLCBBcnJvdyh0eTEnLCB0eTInKSkgPT5cbiAgICBBcnJvdyhtYXRjaF9zeW5zd2l0Y2godHkxLCB0eTEnKSwgbWF0Y2hfc3luc3dpdGNoKHR5MiwgdHkyJykpIHw+IHJld3JhcDFcbiAgfCAoQXJyb3coXyksIF8pID0+IHQxXG4gIHwgKFByb2QodHlzMSksIFByb2QodHlzMikpIHdoZW4gTGlzdC5sZW5ndGgodHlzMSkgPT0gTGlzdC5sZW5ndGgodHlzMikgPT5cbiAgICBsZXQgdHlzID0gTGlzdC5tYXAyKG1hdGNoX3N5bnN3aXRjaCwgdHlzMSwgdHlzMik7XG4gICAgUHJvZCh0eXMpIHw+IHJld3JhcDE7XG4gIHwgKFByb2QoXyksIF8pID0+IHQxXG4gIHwgKFN1bShzbTEpLCBTdW0oc20yKSkgPT5cbiAgICBsZXQgc20nID0gQ29uc3RydWN0b3JNYXAubWF0Y2hfc3luc3dpdGNoKG1hdGNoX3N5bnN3aXRjaCwgc20xLCBzbTIpO1xuICAgIFN1bShzbScpIHw+IHJld3JhcDE7XG4gIHwgKFN1bShfKSwgXykgPT4gdDFcbiAgfTtcbn07XG5cbmxldCBqb2luX2ZpeCA9IGpvaW4ofmZpeD10cnVlKTtcblxubGV0IGpvaW5fYWxsID0gKH5lbXB0eTogdCwgY3R4OiBDdHgudCwgdHM6IGxpc3QodCkpOiBvcHRpb24odCkgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGFjYywgdHkpID0+IE9wdFV0aWwuYW5kX3RoZW4oam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5KSwgYWNjKSxcbiAgICBTb21lKGVtcHR5KSxcbiAgICB0cyxcbiAgKTtcblxubGV0IGlzX2NvbnNpc3RlbnQgPSAoY3R4OiBDdHgudCwgdHkxOiB0LCB0eTI6IHQpOiBib29sID0+XG4gIGpvaW4ofmZpeD1mYWxzZSwgY3R4LCB0eTEsIHR5MikgIT0gTm9uZTtcblxubGV0IHJlYyB3ZWFrX2hlYWRfbm9ybWFsaXplID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogdCA9PlxuICBzd2l0Y2ggKHRlcm1fb2YodHkpKSB7XG4gIHwgVmFyKHgpID0+XG4gICAgc3dpdGNoIChDdHgubG9va3VwX2FsaWFzKGN0eCwgeCkpIHtcbiAgICB8IFNvbWUodHkpID0+IHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSlcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9XG4gIHwgXyA9PiB0eVxuICB9O1xuXG5sZXQgcmVjIG5vcm1hbGl6ZSA9IChjdHg6IEN0eC50LCB0eTogdCk6IHQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSB1bndyYXAodHkpO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBWYXIoeCkgPT5cbiAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgIHwgU29tZSh0eSkgPT4gbm9ybWFsaXplKGN0eCwgdHkpXG4gICAgfCBOb25lID0+IHR5XG4gICAgfVxuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmcgPT4gdHlcbiAgfCBQYXJlbnModCkgPT4gdFxuICB8IExpc3QodCkgPT4gTGlzdChub3JtYWxpemUoY3R4LCB0KSkgfD4gcmV3cmFwXG4gIHwgQXAodDEsIHQyKSA9PiBBcChub3JtYWxpemUoY3R4LCB0MSksIG5vcm1hbGl6ZShjdHgsIHQyKSkgfD4gcmV3cmFwXG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIEFycm93KG5vcm1hbGl6ZShjdHgsIHQxKSwgbm9ybWFsaXplKGN0eCwgdDIpKSB8PiByZXdyYXBcbiAgfCBQcm9kKHRzKSA9PiBQcm9kKExpc3QubWFwKG5vcm1hbGl6ZShjdHgpLCB0cykpIHw+IHJld3JhcFxuICB8IFN1bSh0cykgPT5cbiAgICBTdW0oQ29uc3RydWN0b3JNYXAubWFwKE9wdGlvbi5tYXAobm9ybWFsaXplKGN0eCkpLCB0cykpIHw+IHJld3JhcFxuICB8IFJlYyh0cGF0LCB0eSkgPT5cbiAgICAvKiBOT1RFOiBEdW1teSB0dmFyIGFkZGVkIGhhcyBmYWtlIGlkIGJ1dCBzaG91bGRuJ3QgbWF0dGVyXG4gICAgICAgYXMgaW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBSZWNzIGRvIG5vdCBvY2N1ciBpbiB0aGVcbiAgICAgICBzdXJmYWNlIHN5bnRheCwgc28gd2Ugd29uJ3QgdHJ5IHRvIGp1bXAgdG8gdGhlbS4gKi9cbiAgICBSZWModHBhdCwgbm9ybWFsaXplKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHRwYXQpLCB0eSkpIHw+IHJld3JhcFxuICB8IEZvcmFsbChuYW1lLCB0eSkgPT5cbiAgICBGb3JhbGwobmFtZSwgbm9ybWFsaXplKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIG5hbWUpLCB0eSkpIHw+IHJld3JhcFxuICB9O1xufTtcblxubGV0IG1hdGNoZWRfYXJyb3cgPSAoY3R4LCB0eSkgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSkpKSB7XG4gIHwgQXJyb3codHlfaW4sIHR5X291dCkgPT4gKHR5X2luLCB0eV9vdXQpXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpID0+IChcbiAgICAgIFVua25vd24oU3luU3dpdGNoKSB8PiBta19mYXN0LFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QsXG4gICAgKVxuICB8IF8gPT4gKFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3QsIFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3QpXG4gIH07XG5cbmxldCBtYXRjaGVkX2ZvcmFsbCA9IChjdHgsIHR5KSA9PlxuICBzd2l0Y2ggKHRlcm1fb2Yod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpIHtcbiAgfCBGb3JhbGwodCwgdHkpID0+IChTb21lKHQpLCB0eSlcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gKE5vbmUsIFVua25vd24oU3luU3dpdGNoKSB8PiBta19mYXN0KVxuICB8IF8gPT4gKE5vbmUsIFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3QpXG4gIH07XG5cbmxldCBtYXRjaGVkX3Byb2QgPSAoY3R4LCBsZW5ndGgsIHR5KSA9PlxuICBzd2l0Y2ggKHRlcm1fb2Yod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpIHtcbiAgfCBQcm9kKHR5cykgd2hlbiBMaXN0Lmxlbmd0aCh0eXMpID09IGxlbmd0aCA9PiB0eXNcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT5cbiAgICBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFVua25vd24oU3luU3dpdGNoKSB8PiBta19mYXN0KVxuICB8IF8gPT4gTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBVbmtub3duKEludGVybmFsKSB8PiBta19mYXN0KVxuICB9O1xuXG5sZXQgbWF0Y2hlZF9saXN0ID0gKGN0eCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IExpc3QodHkpID0+IHR5XG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpID0+IFVua25vd24oU3luU3dpdGNoKSB8PiBta19mYXN0XG4gIHwgXyA9PiBVbmtub3duKEludGVybmFsKSB8PiBta19mYXN0XG4gIH07XG5cbmxldCBtYXRjaGVkX2FyZ3MgPSAoY3R4LCBkZWZhdWx0X2FyaXR5LCB0eSkgPT4ge1xuICBsZXQgdHknID0gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KTtcbiAgc3dpdGNoICh0ZXJtX29mKHR5JykpIHtcbiAgfCBQcm9kKFtfLCAuLi5fXSBhcyB0eXMpID0+IHR5c1xuICB8IFVua25vd24oXykgPT4gTGlzdC5pbml0KGRlZmF1bHRfYXJpdHksIF8gPT4gdHknKVxuICB8IF8gPT4gW3R5J11cbiAgfTtcbn07XG5cbmxldCBnZXRfc3VtX2NvbnN0cnVjdG9ycyA9IChjdHg6IEN0eC50LCB0eTogdCk6IG9wdGlvbihzdW1fbWFwKSA9PiB7XG4gIGxldCB0eSA9IHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSk7XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBTdW0oc20pID0+IFNvbWUoc20pXG4gIHwgUmVjKF8pID0+XG4gICAgLyogTm90ZTogV2UgbXVzdCB1bnJvbGwgaGVyZSB0byBnZXQgcmlnaHQgY3RyIHR5cGVzO1xuICAgICAgIG90aGVyd2lzZSB0aGUgcmVjIHBhcmFtZXRlciB3aWxsIGxlYWsuIEhvd2V2ZXIsIHNlZWluZ1xuICAgICAgIGFzIHN1YnN0aXR1dGlvbiBpcyB0b28gZXhwZW5zaXZlIHRvIGJlIHVzZWQgaGVyZSwgd2VcbiAgICAgICBjdXJyZW50bHkgbWFraW5nIHRoZSBvcHRpbWl6YXRpb24gdGhhdCwgc2luY2UgYWxsXG4gICAgICAgcmVjdXJzaXZlIHR5cGVzIGFyZSB0eXBlIGFsaXNlcyB3aGljaCB1c2UgdGhlIGFsaWFzIG5hbWVcbiAgICAgICBhcyB0aGUgcmVjdXJzaXZlIHBhcmFtZXRlciwgYW5kIHR5cGUgYWxpYXNlcyBjYW5ub3QgYmVcbiAgICAgICBzaGFkb3dlZCwgaXQgaXMgc2FmZSB0byBzaW1wbHkgcmVtb3ZlIHRoZSBSZWMgY29uc3RydWN0b3IsXG4gICAgICAgcHJvdmlkZWQgd2UgaGF2ZW4ndCBlc2NhcGVkIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBhbGlhc1xuICAgICAgIGlzIGJvdW5kLiBJZiBlaXRoZXIgb2YgdGhlIGFib3ZlIGFzc3VtcHRpb25zIGJlY29tZSBpbnZhbGlkLFxuICAgICAgIHRoZSBiZWxvdyBjb2RlIHdpbGwgYmUgaW5jb3JyZWN0ISAqL1xuICAgIGxldCB0eSA9XG4gICAgICBzd2l0Y2ggKHR5IHw+IHRlcm1fb2YpIHtcbiAgICAgIHwgUmVjKHt0ZXJtOiBWYXIoeCksIF99LCB0eV9ib2R5KSA9PlxuICAgICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgICAgICB8IE5vbmUgPT4gdW5yb2xsKHR5KVxuICAgICAgICB8IFNvbWUoXykgPT4gdHlfYm9keVxuICAgICAgICB9XG4gICAgICB8IF8gPT4gdHlcbiAgICAgIH07XG4gICAgc3dpdGNoICh0eSB8PiB0ZXJtX29mKSB7XG4gICAgfCBTdW0oc20pID0+IFNvbWUoc20pXG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGlzX3Vua25vd24gPSAodHk6IHQpOiBib29sID0+XG4gIHN3aXRjaCAodHkgfD4gdGVybV9vZikge1xuICB8IFVua25vd24oXykgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcblxuLyogRG9lcyB0aGUgdHlwZSByZXF1aXJlIHBhcmVudGhlc2VzIHdoZW4gb24gdGhlIGxlZnQgb2YgYW4gYXJyb3cgZm9yIHByaW50aW5nPyAqL1xubGV0IHJlYyBuZWVkc19wYXJlbnMgPSAodHk6IHQpOiBib29sID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBQYXJlbnModHkpID0+IG5lZWRzX3BhcmVucyh0eSlcbiAgfCBBcChfKVxuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IFN0cmluZ1xuICB8IEJvb2xcbiAgfCBWYXIoXykgPT4gZmFsc2VcbiAgfCBSZWMoXywgXylcbiAgfCBGb3JhbGwoXywgXykgPT4gdHJ1ZVxuICB8IExpc3QoXykgPT4gZmFsc2UgLyogaXMgYWxyZWFkeSB3cmFwcGVkIGluIFtdICovXG4gIHwgQXJyb3coXywgXykgPT4gdHJ1ZVxuICB8IFByb2QoXylcbiAgfCBTdW0oXykgPT4gdHJ1ZSAvKiBkaXNhbWJpZ3VhdGUgYmV0d2VlbiAoQSArIEIpIC0+IEMgYW5kIEEgKyAoQiAtPiBDKSAqL1xuICB9O1xuXG5sZXQgcHJldHR5X3ByaW50X3R2YXIgPSAodHY6IFRQYXQudCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKElkVGFnZ2VkLnRlcm1fb2YodHYpKSB7XG4gIHwgVmFyKHgpID0+IHhcbiAgfCBJbnZhbGlkKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlKF8pID0+IFwiP1wiXG4gIH07XG5cbi8qIEVzc2VudGlhbGx5IHJlY3JlYXRlcyBoYXozbHdlYi92aWV3L1R5cGUucmUncyB2aWV3X3R5IGJ1dCB3aXRoIHN0cmluZyBvdXRwdXQgKi9cbmxldCByZWMgcHJldHR5X3ByaW50ID0gKHR5OiB0KTogc3RyaW5nID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBQYXJlbnModHkpID0+IHByZXR0eV9wcmludCh0eSlcbiAgfCBBcChfKVxuICB8IFVua25vd24oXykgPT4gXCI/XCJcbiAgfCBJbnQgPT4gXCJJbnRcIlxuICB8IEZsb2F0ID0+IFwiRmxvYXRcIlxuICB8IEJvb2wgPT4gXCJCb29sXCJcbiAgfCBTdHJpbmcgPT4gXCJTdHJpbmdcIlxuICB8IFZhcih0dmFyKSA9PiB0dmFyXG4gIHwgTGlzdCh0KSA9PiBcIltcIiArKyBwcmV0dHlfcHJpbnQodCkgKysgXCJdXCJcbiAgfCBBcnJvdyh0MSwgdDIpID0+IHBhcmVuX3ByZXR0eV9wcmludCh0MSkgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0MilcbiAgfCBTdW0oc20pID0+XG4gICAgc3dpdGNoIChzbSkge1xuICAgIHwgW10gPT4gXCIrP1wiXG4gICAgfCBbdDBdID0+IFwiK1wiICsrIGN0cl9wcmV0dHlfcHJpbnQodDApXG4gICAgfCBbdDAsIC4uLnRzXSA9PlxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgIChhY2MsIHQpID0+IGFjYyArKyBcIitcIiArKyBjdHJfcHJldHR5X3ByaW50KHQpLFxuICAgICAgICBjdHJfcHJldHR5X3ByaW50KHQwKSxcbiAgICAgICAgdHMsXG4gICAgICApXG4gICAgfVxuICB8IFByb2QoW10pID0+IFwiKClcIlxuICB8IFByb2QoW3QwLCAuLi50c10pID0+XG4gICAgXCIoXCJcbiAgICArKyBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHQpID0+IGFjYyArKyBcIiwgXCIgKysgcHJldHR5X3ByaW50KHQpLFxuICAgICAgICAgcHJldHR5X3ByaW50KHQwKSxcbiAgICAgICAgIHRzLFxuICAgICAgIClcbiAgICArKyBcIilcIlxuICB8IFJlYyh0diwgdCkgPT4gXCJyZWMgXCIgKysgcHJldHR5X3ByaW50X3R2YXIodHYpICsrIFwiLT5cIiArKyBwcmV0dHlfcHJpbnQodClcbiAgfCBGb3JhbGwodHYsIHQpID0+XG4gICAgXCJmb3JhbGwgXCIgKysgcHJldHR5X3ByaW50X3R2YXIodHYpICsrIFwiLT5cIiArKyBwcmV0dHlfcHJpbnQodClcbiAgfVxuYW5kIGN0cl9wcmV0dHlfcHJpbnQgPVxuICBmdW5cbiAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgTm9uZSkgPT4gY3RyXG4gIHwgQ29uc3RydWN0b3JNYXAuVmFyaWFudChjdHIsIF8sIFNvbWUodCkpID0+XG4gICAgY3RyICsrIFwiKFwiICsrIHByZXR0eV9wcmludCh0KSArKyBcIilcIlxuICB8IENvbnN0cnVjdG9yTWFwLkJhZEVudHJ5KF8pID0+IFwiP1wiXG5hbmQgcGFyZW5fcHJldHR5X3ByaW50ID0gdHlwID0+XG4gIGlmIChuZWVkc19wYXJlbnModHlwKSkge1xuICAgIFwiKFwiICsrIHByZXR0eV9wcmludCh0eXApICsrIFwiKVwiO1xuICB9IGVsc2Uge1xuICAgIHByZXR0eV9wcmludCh0eXApO1xuICB9O1xuIiwiW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gVmFyTWFwLnRfKFR5cC50KTtcbmluY2x1ZGUgVmFyTWFwO1xuIiwibW9kdWxlIFBhdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgV2lsZFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgQm9vbFxuICAgIHwgU3RyaW5nXG4gICAgfCBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvclxuICAgIHwgQ29uc1xuICAgIHwgVmFyXG4gICAgfCBUdXBsZVxuICAgIHwgUGFyZW5zXG4gICAgfCBBcFxuICAgIHwgQ2FzdDtcblxuICBpbmNsdWRlIFRlcm1CYXNlLlBhdDtcblxuICBsZXQgcmVwX2lkID0gKHtpZHMsIF99OiB0KSA9PiB7XG4gICAgYXNzZXJ0KGlkcyAhPSBbXSk7XG4gICAgTGlzdC5oZChpZHMpO1xuICB9O1xuXG4gIGxldCB0ZXJtX29mOiB0ID0+IFRlcm1CYXNlLlBhdC50ZXJtID0gSWRUYWdnZWQudGVybV9vZjtcblxuICBsZXQgdW53cmFwOiB0ID0+ICh0ZXJtLCB0ZXJtID0+IHQpID0gSWRUYWdnZWQudW53cmFwO1xuXG4gIGxldCBmcmVzaDogdGVybSA9PiB0ID0gSWRUYWdnZWQuZnJlc2g7XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSkgPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gICAgfCBXaWxkID0+IFdpbGRcbiAgICB8IEludChfKSA9PiBJbnRcbiAgICB8IEZsb2F0KF8pID0+IEZsb2F0XG4gICAgfCBCb29sKF8pID0+IEJvb2xcbiAgICB8IFN0cmluZyhfKSA9PiBTdHJpbmdcbiAgICB8IExpc3RMaXQoXykgPT4gTGlzdExpdFxuICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICB8IENvbnMoXykgPT4gQ29uc1xuICAgIHwgVmFyKF8pID0+IFZhclxuICAgIHwgVHVwbGUoXykgPT4gVHVwbGVcbiAgICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgICB8IEFwKF8pID0+IEFwXG4gICAgfCBDYXN0KF8pID0+IENhc3Q7XG5cbiAgbGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQgPT4gXCJJbnZhbGlkIHBhdHRlcm5cIlxuICAgIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHBhdHRlcm5cIlxuICAgIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgcGF0dGVybiBob2xlXCJcbiAgICB8IFdpbGQgPT4gXCJXaWxkY2FyZFwiXG4gICAgfCBJbnQgPT4gXCJJbnRlZ2VyIGxpdGVyYWxcIlxuICAgIHwgRmxvYXQgPT4gXCJGbG9hdCBsaXRlcmFsXCJcbiAgICB8IEJvb2wgPT4gXCJCb29sZWFuIGxpdGVyYWxcIlxuICAgIHwgU3RyaW5nID0+IFwiU3RyaW5nIGxpdGVyYWxcIlxuICAgIHwgTGlzdExpdCA9PiBcIkxpc3QgbGl0ZXJhbFwiXG4gICAgfCBDb25zdHJ1Y3RvciA9PiBcIkNvbnN0cnVjdG9yXCJcbiAgICB8IENvbnMgPT4gXCJDb25zXCJcbiAgICB8IFZhciA9PiBcIlZhcmlhYmxlIGJpbmRpbmdcIlxuICAgIHwgVHVwbGUgPT4gXCJUdXBsZVwiXG4gICAgfCBQYXJlbnMgPT4gXCJQYXJlbnRoZXNpemVkIHBhdHRlcm5cIlxuICAgIHwgQXAgPT4gXCJDb25zdHJ1Y3RvciBhcHBsaWNhdGlvblwiXG4gICAgfCBDYXN0ID0+IFwiQW5ub3RhdGlvblwiO1xuXG4gIGxldCByZWMgaXNfdmFyID0gKHBhdDogdCkgPT4ge1xuICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICB8IFBhcmVucyhwYXQpXG4gICAgfCBDYXN0KHBhdCwgXywgXykgPT4gaXNfdmFyKHBhdClcbiAgICB8IFZhcihfKSA9PiB0cnVlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX2Z1bl92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfZnVuX3ZhcihwYXQpXG4gICAgfCBDYXN0KHBhdCwgdHlwLCBfKSA9PlxuICAgICAgaXNfdmFyKHBhdCkgJiYgKFVUeXAuaXNfYXJyb3codHlwKSB8fCBUeXAuaXNfZm9yYWxsKHR5cCkpXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBWYXIoXylcbiAgICB8IFR1cGxlKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgaXNfdHVwbGVfb2ZfYXJyb3dzID0gKHBhdDogdCkgPT5cbiAgICBpc19mdW5fdmFyKHBhdClcbiAgICB8fCAoXG4gICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhwYXQpID0+IGlzX3R1cGxlX29mX2Fycm93cyhwYXQpXG4gICAgICB8IFR1cGxlKHBhdHMpID0+IHBhdHMgfD4gTGlzdC5mb3JfYWxsKGlzX2Z1bl92YXIpXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBXaWxkXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IENvbnMoXywgXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IENhc3QoXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICAgIH1cbiAgICApO1xuXG4gIGxldCByZWMgaXNfdHVwbGVfb2ZfdmFycyA9IChwYXQ6IHQpID0+XG4gICAgaXNfdmFyKHBhdClcbiAgICB8fCAoXG4gICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhwYXQpXG4gICAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBpc190dXBsZV9vZl92YXJzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT4gcGF0cyB8PiBMaXN0LmZvcl9hbGwoaXNfdmFyKVxuICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICB8IEVtcHR5SG9sZVxuICAgICAgfCBNdWx0aUhvbGUoXylcbiAgICAgIHwgV2lsZFxuICAgICAgfCBJbnQoXylcbiAgICAgIHwgRmxvYXQoXylcbiAgICAgIHwgQm9vbChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBDb25zKF8sIF8pXG4gICAgICB8IFZhcihfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgfCBBcChfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IHJlYyBnZXRfdmFyID0gKHBhdDogdCkgPT4ge1xuICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICB8IFBhcmVucyhwYXQpID0+IGdldF92YXIocGF0KVxuICAgIHwgVmFyKHgpID0+IFNvbWUoeClcbiAgICB8IENhc3QoeCwgXywgXykgPT4gZ2V0X3Zhcih4KVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IFdpbGRcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IEJvb2woXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgTGlzdExpdChfKVxuICAgIHwgQ29ucyhfLCBfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9mdW5fdmFyID0gKHBhdDogdCkgPT4ge1xuICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICB8IFBhcmVucyhwYXQpID0+IGdldF9mdW5fdmFyKHBhdClcbiAgICB8IENhc3QocGF0LCB0MSwgXykgPT5cbiAgICAgIGlmIChUeXAuaXNfYXJyb3codDEpIHx8IFVUeXAuaXNfZm9yYWxsKHQxKSkge1xuICAgICAgICBnZXRfdmFyKHBhdCkgfD4gT3B0aW9uLm1hcCh2YXIgPT4gdmFyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE5vbmU7XG4gICAgICB9XG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBWYXIoXylcbiAgICB8IFR1cGxlKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXykgPT4gTm9uZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBnZXRfbnVtX29mX3ZhcnMgPSAocGF0OiB0KSA9PlxuICAgIGlmIChpc192YXIocGF0KSkge1xuICAgICAgU29tZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgfCBQYXJlbnMocGF0KVxuICAgICAgfCBDYXN0KHBhdCwgXywgXykgPT4gZ2V0X251bV9vZl92YXJzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT5cbiAgICAgICAgaXNfdHVwbGVfb2ZfdmFycyhwYXQpID8gU29tZShMaXN0Lmxlbmd0aChwYXRzKSkgOiBOb25lXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBXaWxkXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IENvbnMoXywgXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IE5vbmVcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgY3RyX25hbWUgPSAocDogdCk6IG9wdGlvbihDb25zdHJ1Y3Rvci50KSA9PlxuICAgIHN3aXRjaCAocC50ZXJtKSB7XG4gICAgfCBDb25zdHJ1Y3RvcihuYW1lKSA9PiBTb21lKG5hbWUpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xufTtcblxubW9kdWxlIEV4cCA9IHtcbiAgaW5jbHVkZSBUZXJtQmFzZS5FeHA7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZVxuICAgIHwgU3RhdGljRXJyb3JIb2xlXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlXG4gICAgfCBGYWlsZWRDYXN0XG4gICAgfCBEZWZlcnJhbFxuICAgIHwgQm9vbFxuICAgIHwgSW50XG4gICAgfCBGbG9hdFxuICAgIHwgU3RyaW5nXG4gICAgfCBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvclxuICAgIHwgRnVuXG4gICAgfCBUeXBGdW5cbiAgICB8IFR1cGxlXG4gICAgfCBWYXJcbiAgICB8IE1ldGFWYXJcbiAgICB8IExldFxuICAgIHwgRml4RlxuICAgIHwgVHlBbGlhc1xuICAgIHwgQXBcbiAgICB8IFR5cEFwXG4gICAgfCBEZWZlcnJlZEFwXG4gICAgfCBQaXBlbGluZVxuICAgIHwgSWZcbiAgICB8IFNlcVxuICAgIHwgVGVzdFxuICAgIHwgRmlsdGVyXG4gICAgfCBDbG9zdXJlXG4gICAgfCBQYXJlbnNcbiAgICB8IENvbnNcbiAgICB8IFVuT3AoT3BlcmF0b3JzLm9wX3VuKVxuICAgIHwgQmluT3AoT3BlcmF0b3JzLm9wX2JpbilcbiAgICB8IEJ1aWx0aW5GdW5cbiAgICB8IE1hdGNoXG4gICAgfCBDYXN0XG4gICAgfCBMaXN0Q29uY2F0O1xuXG4gIGxldCBob2xlID0gKHRtczogbGlzdChUZXJtQmFzZS5BbnkudCkpOiB0ZXJtID0+XG4gICAgc3dpdGNoICh0bXMpIHtcbiAgICB8IFtdID0+IEVtcHR5SG9sZVxuICAgIHwgW18sIC4uLl9dID0+IE11bHRpSG9sZSh0bXMpXG4gICAgfTtcblxuICBsZXQgcmVwX2lkOiB0ID0+IElkLnQgPSBJZFRhZ2dlZC5yZXBfaWQ7XG4gIGxldCBmcmVzaDogdGVybSA9PiB0ID0gSWRUYWdnZWQuZnJlc2g7XG4gIGxldCB0ZXJtX29mOiB0ID0+IHRlcm0gPSBJZFRhZ2dlZC50ZXJtX29mO1xuICBsZXQgdW53cmFwOiB0ID0+ICh0ZXJtLCB0ZXJtID0+IHQpID0gSWRUYWdnZWQudW53cmFwO1xuXG4gIGxldCBjbHNfb2ZfdGVybTogdGVybSA9PiBjbHMgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gICAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gTXVsdGlIb2xlXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+IER5bmFtaWNFcnJvckhvbGVcbiAgICB8IEZhaWxlZENhc3QoXykgPT4gRmFpbGVkQ2FzdFxuICAgIHwgRGVmZXJyYWwoXykgPT4gRGVmZXJyYWxcbiAgICB8IEJvb2woXykgPT4gQm9vbFxuICAgIHwgSW50KF8pID0+IEludFxuICAgIHwgRmxvYXQoXykgPT4gRmxvYXRcbiAgICB8IFN0cmluZyhfKSA9PiBTdHJpbmdcbiAgICB8IExpc3RMaXQoXykgPT4gTGlzdExpdFxuICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICB8IEZ1bihfKSA9PiBGdW5cbiAgICB8IFR5cEZ1bihfKSA9PiBUeXBGdW5cbiAgICB8IFR1cGxlKF8pID0+IFR1cGxlXG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBMZXQoXykgPT4gTGV0XG4gICAgfCBGaXhGKF8pID0+IEZpeEZcbiAgICB8IFR5QWxpYXMoXykgPT4gVHlBbGlhc1xuICAgIHwgQXAoXykgPT4gQXBcbiAgICB8IFR5cEFwKF8pID0+IFR5cEFwXG4gICAgfCBEZWZlcnJlZEFwKF8pID0+IERlZmVycmVkQXBcbiAgICB8IElmKF8pID0+IElmXG4gICAgfCBTZXEoXykgPT4gU2VxXG4gICAgfCBUZXN0KF8pID0+IFRlc3RcbiAgICB8IEZpbHRlcihfKSA9PiBGaWx0ZXJcbiAgICB8IENsb3N1cmUoXykgPT4gQ2xvc3VyZVxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQ29ucyhfKSA9PiBDb25zXG4gICAgfCBMaXN0Q29uY2F0KF8pID0+IExpc3RDb25jYXRcbiAgICB8IFVuT3Aob3AsIF8pID0+IFVuT3Aob3ApXG4gICAgfCBCaW5PcChvcCwgXywgXykgPT4gQmluT3Aob3ApXG4gICAgfCBCdWlsdGluRnVuKF8pID0+IEJ1aWx0aW5GdW5cbiAgICB8IE1hdGNoKF8pID0+IE1hdGNoXG4gICAgfCBDYXN0KF8pID0+IENhc3Q7XG5cbiAgbGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgICBmdW5cbiAgICB8IEludmFsaWQgPT4gXCJJbnZhbGlkIGV4cHJlc3Npb25cIlxuICAgIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIGV4cHJlc3Npb25cIlxuICAgIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgZXhwcmVzc2lvbiBob2xlXCJcbiAgICB8IFN0YXRpY0Vycm9ySG9sZSA9PiBcIlN0YXRpYyBlcnJvciBob2xlXCJcbiAgICB8IER5bmFtaWNFcnJvckhvbGUgPT4gXCJEeW5hbWljIGVycm9yIGhvbGVcIlxuICAgIHwgRmFpbGVkQ2FzdCA9PiBcIkZhaWxlZCBjYXN0XCJcbiAgICB8IERlZmVycmFsID0+IFwiRGVmZXJyYWxcIlxuICAgIHwgQm9vbCA9PiBcIkJvb2xlYW4gbGl0ZXJhbFwiXG4gICAgfCBJbnQgPT4gXCJJbnRlZ2VyIGxpdGVyYWxcIlxuICAgIHwgRmxvYXQgPT4gXCJGbG9hdCBsaXRlcmFsXCJcbiAgICB8IFN0cmluZyA9PiBcIlN0cmluZyBsaXRlcmFsXCJcbiAgICB8IExpc3RMaXQgPT4gXCJMaXN0IGxpdGVyYWxcIlxuICAgIHwgQ29uc3RydWN0b3IgPT4gXCJDb25zdHJ1Y3RvclwiXG4gICAgfCBGdW4gPT4gXCJGdW5jdGlvbiBsaXRlcmFsXCJcbiAgICB8IFR5cEZ1biA9PiBcIlR5cGUgRnVuY3Rpb24gTGl0ZXJhbFwiXG4gICAgfCBUdXBsZSA9PiBcIlR1cGxlIGxpdGVyYWxcIlxuICAgIHwgVmFyID0+IFwiVmFyaWFibGUgcmVmZXJlbmNlXCJcbiAgICB8IE1ldGFWYXIgPT4gXCJNZXRhIHZhcmlhYmxlIHJlZmVyZW5jZVwiXG4gICAgfCBMZXQgPT4gXCJMZXQgZXhwcmVzc2lvblwiXG4gICAgfCBGaXhGID0+IFwiRml4cG9pbnQgb3BlcmF0b3JcIlxuICAgIHwgVHlBbGlhcyA9PiBcIlR5cGUgQWxpYXMgZGVmaW5pdGlvblwiXG4gICAgfCBBcCA9PiBcIkFwcGxpY2F0aW9uXCJcbiAgICB8IFR5cEFwID0+IFwiVHlwZSBhcHBsaWNhdGlvblwiXG4gICAgfCBEZWZlcnJlZEFwID0+IFwiUGFydGlhbCBBcHBsaWNhdGlvblwiXG4gICAgfCBQaXBlbGluZSA9PiBcIlBpcGVsaW5lIGV4cHJlc3Npb25cIlxuICAgIHwgSWYgPT4gXCJJZiBleHByZXNzaW9uXCJcbiAgICB8IFNlcSA9PiBcIlNlcXVlbmNlIGV4cHJlc3Npb25cIlxuICAgIHwgVGVzdCA9PiBcIlRlc3RcIlxuICAgIHwgRmlsdGVyID0+IFwiRmlsdGVyXCJcbiAgICB8IENsb3N1cmUgPT4gXCJDbG9zdXJlXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvblwiXG4gICAgfCBDb25zID0+IFwiQ29uc1wiXG4gICAgfCBMaXN0Q29uY2F0ID0+IFwiTGlzdCBDb25jYXRlbmF0aW9uXCJcbiAgICB8IEJpbk9wKG9wKSA9PiBPcGVyYXRvcnMuc2hvd19iaW5vcChvcClcbiAgICB8IFVuT3Aob3ApID0+IE9wZXJhdG9ycy5zaG93X3Vub3Aob3ApXG4gICAgfCBCdWlsdGluRnVuID0+IFwiQnVpbHQtaW4gRnVuY3Rpb25cIlxuICAgIHwgTWF0Y2ggPT4gXCJDYXNlIGV4cHJlc3Npb25cIlxuICAgIHwgQ2FzdCA9PiBcIkNhc3QgZXhwcmVzc2lvblwiO1xuXG4gIC8vIFR5cGZ1biBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIGhlcmUgYXMgdGhpcyBpcyBvbmx5IHVzZWQgdG9cbiAgLy8gZGV0ZXJtaW5lIHdoZW4gdG8gYWxsb3cgZm9yIHJlY3Vyc2l2ZSBkZWZpbml0aW9ucyBpbiBhIGxldCBiaW5kaW5nLlxuICBsZXQgcmVjIGlzX2Z1biA9IChlOiB0KSA9PiB7XG4gICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICB8IFBhcmVucyhlKSA9PiBpc19mdW4oZSlcbiAgICB8IENhc3QoZSwgXywgXykgPT4gaXNfZnVuKGUpXG4gICAgfCBUeXBGdW4oXylcbiAgICB8IEZ1bihfKVxuICAgIHwgQnVpbHRpbkZ1bihfKSA9PiB0cnVlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgIHwgRmFpbGVkQ2FzdChfKVxuICAgIHwgRGVmZXJyYWwoXylcbiAgICB8IEJvb2woXylcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgTGlzdExpdChfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IFZhcihfKVxuICAgIHwgTGV0KF8pXG4gICAgfCBGaXhGKF8pXG4gICAgfCBUeUFsaWFzKF8pXG4gICAgfCBBcChfKVxuICAgIHwgVHlwQXAoXylcbiAgICB8IERlZmVycmVkQXAoXylcbiAgICB8IElmKF8pXG4gICAgfCBTZXEoXylcbiAgICB8IFRlc3QoXylcbiAgICB8IEZpbHRlcihfKVxuICAgIHwgQ29ucyhfKVxuICAgIHwgTGlzdENvbmNhdChfKVxuICAgIHwgQ2xvc3VyZShfKVxuICAgIHwgVW5PcChfKVxuICAgIHwgQmluT3AoXylcbiAgICB8IE1hdGNoKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl9mdW5jdGlvbnMgPSAoZTogdCkgPT5cbiAgICBpc19mdW4oZSlcbiAgICB8fCAoXG4gICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgfCBDYXN0KGUsIF8sIF8pXG4gICAgICB8IFBhcmVucyhlKSA9PiBpc190dXBsZV9vZl9mdW5jdGlvbnMoZSlcbiAgICAgIHwgVHVwbGUoZXMpID0+IGVzIHw+IExpc3QuZm9yX2FsbChpc19mdW4pXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgIHwgQm9vbChfKVxuICAgICAgfCBJbnQoXylcbiAgICAgIHwgRmxvYXQoXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgRnVuKF8pXG4gICAgICB8IFR5cEZ1bihfKVxuICAgICAgfCBDbG9zdXJlKF8pXG4gICAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IExldChfKVxuICAgICAgfCBGaXhGKF8pXG4gICAgICB8IFR5QWxpYXMoXylcbiAgICAgIHwgQXAoXylcbiAgICAgIHwgVHlwQXAoXylcbiAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgfCBJZihfKVxuICAgICAgfCBTZXEoXylcbiAgICAgIHwgVGVzdChfKVxuICAgICAgfCBGaWx0ZXIoXylcbiAgICAgIHwgQ29ucyhfKVxuICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICB8IFVuT3AoXylcbiAgICAgIHwgQmluT3AoXylcbiAgICAgIHwgTWF0Y2goXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgICAgIH1cbiAgICApO1xuXG4gIGxldCBjdHJfbmFtZSA9IChlOiB0KTogb3B0aW9uKENvbnN0cnVjdG9yLnQpID0+XG4gICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IFNvbWUobmFtZSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG5cbiAgbGV0IGlzX2RlZmVycmFsID0gKGU6IHQpID0+IHtcbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgRGVmZXJyYWwoXykgPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBnZXRfbnVtX29mX2Z1bmN0aW9ucyA9IChlOiB0KSA9PlxuICAgIGlmIChpc19mdW4oZSkpIHtcbiAgICAgIFNvbWUoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhlKSA9PiBnZXRfbnVtX29mX2Z1bmN0aW9ucyhlKVxuICAgICAgfCBUdXBsZShlcykgPT4gaXNfdHVwbGVfb2ZfZnVuY3Rpb25zKGUpID8gU29tZShMaXN0Lmxlbmd0aChlcykpIDogTm9uZVxuICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICB8IEVtcHR5SG9sZVxuICAgICAgfCBNdWx0aUhvbGUoXylcbiAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgICB8IEZpeEYoXylcbiAgICAgIHwgQ2xvc3VyZShfKVxuICAgICAgfCBCdWlsdGluRnVuKF8pXG4gICAgICB8IENhc3QoXylcbiAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgIHwgQm9vbChfKVxuICAgICAgfCBJbnQoXylcbiAgICAgIHwgRmxvYXQoXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgRnVuKF8pXG4gICAgICB8IFR5cEZ1bihfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgTGV0KF8pXG4gICAgICB8IEZpbHRlcihfKVxuICAgICAgfCBUeUFsaWFzKF8pXG4gICAgICB8IEFwKF8pXG4gICAgICB8IFR5cEFwKF8pXG4gICAgICB8IERlZmVycmVkQXAoXylcbiAgICAgIHwgSWYoXylcbiAgICAgIHwgU2VxKF8pXG4gICAgICB8IFRlc3QoXylcbiAgICAgIHwgQ29ucyhfKVxuICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICB8IFVuT3AoXylcbiAgICAgIHwgQmluT3AoXylcbiAgICAgIHwgTWF0Y2goXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXykgPT4gTm9uZVxuICAgICAgfTtcbiAgICB9O1xufTtcblxubW9kdWxlIFJ1bCA9IHtcbiAgaW5jbHVkZSBUZXJtQmFzZS5SdWw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNscyA9XG4gICAgfCBSdWxlO1xuXG4gIC8vIGV4YW1wbGUgb2YgYXdrd2FyZG5lc3MgaW5kdWNlZCBieSBoYXZpbmcgZm9ybXMgbGlrZSBydWxlc1xuICAvLyB0aGF0IG1heSBoYXZlIGEgZGlmZmVyZW50LXNvcnRlZCBjaGlsZCB3aXRoIG5vIGRlbGltaXRlcnNcbiAgLy8gKGVnIHNjcnV0IHdpdGggbm8gcnVsZXMpXG4gIGxldCBpZHMgPSAofmFueV9pZHMsIHtpZHMsIHRlcm0sIF99OiB0KSA9PlxuICAgIHN3aXRjaCAoaWRzKSB7XG4gICAgfCBbXywgLi4uX10gPT4gaWRzXG4gICAgfCBbXSA9PlxuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IEhvbGUoW3RtLCAuLi5fXSkgPT4gYW55X2lkcyh0bSlcbiAgICAgIHwgUnVsZXMoc2NydXQsIFtdKSA9PiBzY3J1dC5pZHNcbiAgICAgIHwgXyA9PiBbXVxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IHJlcF9pZCA9ICh+YW55X2lkcywgdG0pID0+XG4gICAgc3dpdGNoIChpZHMofmFueV9pZHMsIHRtKSkge1xuICAgIHwgW10gPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIlVFeHAucmVwX2lkXCIpKVxuICAgIHwgW2lkLCAuLi5fXSA9PiBpZFxuICAgIH07XG59O1xuXG5tb2R1bGUgQW55ID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLkFueTtcblxuICBsZXQgaXNfZXhwOiB0ID0+IG9wdGlvbihUZXJtQmFzZS5FeHAudCkgPVxuICAgIGZ1blxuICAgIHwgRXhwKGUpID0+IFNvbWUoZSlcbiAgICB8IF8gPT4gTm9uZTtcbiAgbGV0IGlzX3BhdDogdCA9PiBvcHRpb24oVGVybUJhc2UuUGF0LnQpID1cbiAgICBmdW5cbiAgICB8IFBhdChwKSA9PiBTb21lKHApXG4gICAgfCBfID0+IE5vbmU7XG4gIGxldCBpc190eXA6IHQgPT4gb3B0aW9uKFRlcm1CYXNlLlR5cC50KSA9XG4gICAgZnVuXG4gICAgfCBUeXAodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lO1xuXG4gIGxldCByZWMgaWRzID1cbiAgICBmdW5cbiAgICB8IEV4cCh0bSkgPT4gdG0uaWRzXG4gICAgfCBQYXQodG0pID0+IHRtLmlkc1xuICAgIHwgVHlwKHRtKSA9PiB0bS5pZHNcbiAgICB8IFRQYXQodG0pID0+IHRtLmlkc1xuICAgIHwgUnVsKHRtKSA9PiBSdWwuaWRzKH5hbnlfaWRzPWlkcywgdG0pXG4gICAgfCBOdWwgKClcbiAgICB8IEFueSAoKSA9PiBbXTtcblxuICAvLyBUZXJtcyBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSB0aWxlcywgZWcgdGhlIGNvbW1hcyBpbiBhbiBuLXR1cGxlLFxuICAvLyB0aGUgcnVsZXMgb2YgYSBjYXNlIGV4cHJlc3Npb24gKyB0aGUgc3Vycm91bmRpbmcgY2FzZS1lbmQgdGlsZSxcbiAgLy8gdGhlIGxpc3QgYnJhY2tldHMgdGlsZSBjb3VwbGVkIHdpdGggdGhlIGVsZW0tc2VwYXJhdGluZyBjb21tYXMuXG4gIC8vIFRoZSBfcmVwcmVzZW50YXRpdmUgaWRfIGlzIHRoZSBjYW5vbmljYWwgdGlsZSBpZCB1c2VkIHRvIGlkZW50aWZ5XG4gIC8vIGFuZCBsb29rIHVwIGluZm8gYWJvdXQgYSB0ZXJtLlxuICAvL1xuICAvLyBJbiBpbnN0YW5jZXMgbGlrZSBjYXNlIGV4cHJlc3Npb25zIGFuZCBsaXN0IGxpdGVyYWxzLCB3aGVyZSBhIHBhcmVudFxuICAvLyB0aWxlIHN1cnJvdW5kcyB0aGUgb3RoZXIgdGlsZXMsIHRoZSByZXByZXNlbnRhdGl2ZSBpZCBpcyB0aGUgcGFyZW50IHRpbGUncy5cbiAgLy8gSW4gb3RoZXIgaW5zdGFuY2VzIGxpa2Ugbi10dXBsZXMsIHdoZXJlIHRoZSBjb21tYXMgYXJlIGFsbCBzaWJsaW5ncyxcbiAgLy8gdGhlIHJlcHJlc2VudGF0aXZlIGlkIGlzIG9uZSBvZiB0aGUgY29tbWEgaWRzLCB1bnNwZWNpZmllZCB3aGljaCBvbmUuXG4gIC8vIChUaGlzIHdvdWxkIGNoYW5nZSBmb3Igbi10dXBsZXMgaWYgd2UgZGVjaWRlZCBwYXJlbnRoZXNlcyBhcmUgbmVjZXNzYXJ5LilcbiAgbGV0IHJlcF9pZCA9XG4gICAgZnVuXG4gICAgfCBFeHAodG0pID0+IEV4cC5yZXBfaWQodG0pXG4gICAgfCBQYXQodG0pID0+IFBhdC5yZXBfaWQodG0pXG4gICAgfCBUeXAodG0pID0+IFR5cC5yZXBfaWQodG0pXG4gICAgfCBUUGF0KHRtKSA9PiBUUGF0LnJlcF9pZCh0bSlcbiAgICB8IFJ1bCh0bSkgPT4gUnVsLnJlcF9pZCh+YW55X2lkcz1pZHMsIHRtKVxuICAgIHwgTnVsICgpXG4gICAgfCBBbnkgKCkgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIlRlcm0ucmVwX2lkXCIpKTtcbn07XG4iLCIvKiBESEV4cC5yZVxuXG4gICBUaGlzIG1vZHVsZSBpcyBzcGVjaWZpY2FsbHkgZm9yIGR5bmFtaWMgZXhwcmVzc2lvbnMuIFRoZXkgYXJlIHN0b3JlZFxuICAgdXNpbmcgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgYXMgdXNlciBleHByZXNzaW9ucywgYnV0IGR5bmFtaWNcbiAgIGV4cHJlc3Npb25zIGFyZSBzcGVjaWZpY2FsbHkgcGFpcmVkIHdpdGggYSBgU2F0aWMuTWFwLnRgLlxuICAgKi9cblxuaW5jbHVkZSBFeHA7XG5cbmxldCB0ZXJtX29mOiB0ID0+IHRlcm0gPSBJZFRhZ2dlZC50ZXJtX29mO1xubGV0IGZhc3RfY29weTogKElkLnQsIHQpID0+IHQgPSBJZFRhZ2dlZC5mYXN0X2NvcHk7XG5cbmxldCBtayA9IChpZHMsIHRlcm0pOiB0ID0+IHtcbiAge2lkcywgY29waWVkOiB0cnVlLCB0ZXJtfTtcbn07XG5cbi8vIFRPRE86IG1ha2UgdGhpcyBmdW5jdGlvbiBlbWl0IGEgbWFwIG9mIGNoYW5nZXNcbmxldCByZXBsYWNlX2FsbF9pZHMgPVxuICBtYXBfdGVybShcbiAgICB+Zl9leHA9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgICB+Zl9wYXQ9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgICB+Zl90eXA9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgICB+Zl90cGF0PShjb250aW51ZSwgZXhwKSA9PiB7Li4uZXhwLCBpZHM6IFtJZC5taygpXX0gfD4gY29udGludWUsXG4gICAgfmZfcnVsPShjb250aW51ZSwgZXhwKSA9PiB7Li4uZXhwLCBpZHM6IFtJZC5taygpXX0gfD4gY29udGludWUsXG4gICk7XG5cbi8vIFRPRE86IG1ha2UgdGhpcyBmdW5jdGlvbiBlbWl0IGEgbWFwIG9mIGNoYW5nZXNcbmxldCByZXBhaXJfaWRzID1cbiAgbWFwX3Rlcm0oXG4gICAgfmZfZXhwPVxuICAgICAgKGNvbnRpbnVlLCBleHApID0+XG4gICAgICAgIGlmIChleHAuY29waWVkKSB7XG4gICAgICAgICAgcmVwbGFjZV9hbGxfaWRzKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGludWUoZXhwKTtcbiAgICAgICAgfSxcbiAgICBfLFxuICApO1xuXG4vLyBBbHNvIHN0cmlwcyBzdGF0aWMgZXJyb3IgaG9sZXMgLSBraW5kYSBsaWtlIHVuZWxhYm9yYXRpb25cbmxldCByZWMgc3RyaXBfY2FzdHMgPVxuICBtYXBfdGVybShcbiAgICB+Zl9leHA9XG4gICAgICAoY29udGludWUsIGV4cCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZXhwKSkge1xuICAgICAgICAvKiBMZWF2ZSBub24tY2FzdHMgdW5jaGFuZ2VkICovXG4gICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgfCBDb25zKF8pXG4gICAgICAgIHwgTGlzdENvbmNhdChfKVxuICAgICAgICB8IExpc3RMaXQoXylcbiAgICAgICAgfCBNdWx0aUhvbGUoXylcbiAgICAgICAgfCBTZXEoXylcbiAgICAgICAgfCBGaWx0ZXIoXylcbiAgICAgICAgfCBMZXQoXylcbiAgICAgICAgfCBGaXhGKF8pXG4gICAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgICB8IEZ1bihfKVxuICAgICAgICB8IEFwKF8pXG4gICAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgICAgfCBEZWZlcnJlZEFwKF8pXG4gICAgICAgIHwgVGVzdChfKVxuICAgICAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICAgICAgfCBVbk9wKF8pXG4gICAgICAgIHwgQmluT3AoXylcbiAgICAgICAgfCBNYXRjaChfKVxuICAgICAgICB8IFBhcmVucyhfKVxuICAgICAgICB8IEVtcHR5SG9sZVxuICAgICAgICB8IEludmFsaWQoXylcbiAgICAgICAgfCBWYXIoXylcbiAgICAgICAgfCBCb29sKF8pXG4gICAgICAgIHwgSW50KF8pXG4gICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgfCBTdHJpbmcoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgICAgICAgfCBDbG9zdXJlKF8pXG4gICAgICAgIHwgVHlwRnVuKF8pXG4gICAgICAgIHwgVHlwQXAoXylcbiAgICAgICAgfCBJZihfKSA9PiBjb250aW51ZShleHApXG4gICAgICAgIC8qIFJlbW92ZSBjYXN0cyovXG4gICAgICAgIHwgRmFpbGVkQ2FzdChkLCBfLCBfKVxuICAgICAgICB8IENhc3QoZCwgXywgXykgPT4gc3RyaXBfY2FzdHMoZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICBfLFxuICApO1xuXG5sZXQgYXNzaWduX25hbWVfaWZfbm9uZSA9ICh0LCBuYW1lKSA9PiB7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IHVud3JhcCh0KTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgRnVuKGFyZywgdHksIGJvZHksIE5vbmUpID0+IEZ1bihhcmcsIHR5LCBib2R5LCBuYW1lKSB8PiByZXdyYXBcbiAgfCBUeXBGdW4odXRwYXQsIGJvZHksIE5vbmUpID0+IFR5cEZ1bih1dHBhdCwgYm9keSwgbmFtZSkgfD4gcmV3cmFwXG4gIHwgXyA9PiB0XG4gIH07XG59O1xuXG5sZXQgdHlfc3Vic3QgPSAoczogVHlwLnQsIHRwYXQ6IFRQYXQudCwgZXhwOiB0KTogdCA9PiB7XG4gIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh0cGF0KSkge1xuICB8IE5vbmUgPT4gZXhwXG4gIHwgU29tZSh4KSA9PlxuICAgIEV4cC5tYXBfdGVybShcbiAgICAgIH5mX3R5cD0oXywgdHlwKSA9PiBUeXAuc3Vic3QocywgdHBhdCwgdHlwKSxcbiAgICAgIH5mX2V4cD1cbiAgICAgICAgKGNvbnRpbnVlLCBleHApID0+XG4gICAgICAgICAgc3dpdGNoICh0ZXJtX29mKGV4cCkpIHtcbiAgICAgICAgICB8IFR5cEZ1bih1dHBhdCwgXywgXykgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh1dHBhdCkpIHtcbiAgICAgICAgICAgIHwgU29tZSh4Jykgd2hlbiB4ID09IHgnID0+IGV4cFxuICAgICAgICAgICAgfCBTb21lKF8pXG4gICAgICAgICAgICB8IE5vbmUgPT4gY29udGludWUoZXhwKVxuICAgICAgICAgICAgLyogTm90ZSB0aGF0IHdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGNhcHR1cmUgYXZvaWRhbmNlLCBzaW5jZSBzIHdpbGwgYWx3YXlzIGJlIGNsb3NlZC4gKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IENhc3QoXylcbiAgICAgICAgICB8IEZpeEYoXylcbiAgICAgICAgICB8IEZ1bihfKVxuICAgICAgICAgIHwgVHlwQXAoXylcbiAgICAgICAgICB8IExpc3RMaXQoXylcbiAgICAgICAgICB8IFRlc3QoXylcbiAgICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgICB8IFNlcShfKVxuICAgICAgICAgIHwgTGV0KF8pXG4gICAgICAgICAgfCBBcChfKVxuICAgICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICAgIHwgQmluT3AoXylcbiAgICAgICAgICB8IENvbnMoXylcbiAgICAgICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgICAgICB8IFR1cGxlKF8pXG4gICAgICAgICAgfCBNYXRjaChfKVxuICAgICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICAgIHwgRmlsdGVyKF8pXG4gICAgICAgICAgfCBJZihfKVxuICAgICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICAgIHwgVmFyKF8pXG4gICAgICAgICAgfCBCb29sKF8pXG4gICAgICAgICAgfCBJbnQoXylcbiAgICAgICAgICB8IEZsb2F0KF8pXG4gICAgICAgICAgfCBTdHJpbmcoXylcbiAgICAgICAgICB8IEZhaWxlZENhc3QoXywgXywgXylcbiAgICAgICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgICAgICB8IFR5QWxpYXMoXylcbiAgICAgICAgICB8IERlZmVycmVkQXAoXylcbiAgICAgICAgICB8IFBhcmVucyhfKVxuICAgICAgICAgIHwgVW5PcChfKSA9PiBjb250aW51ZShleHApXG4gICAgICAgICAgfSxcbiAgICAgIGV4cCxcbiAgICApXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPdXRPZkZ1ZWxcbiAgfCBTdGVwRG9lc05vdE1hdGNoXG4gIHwgQmFkUGF0dGVybk1hdGNoXG4gIHwgQ2FzdEJWSG9sZUdyb3VuZChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFR5cEZ1bihESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEZ1bihESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEJvb2xMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRJbnRMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRGbG9hdExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZExpc3RMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRTdHJpbmdMaXQoREhFeHAudClcbiAgfCBJbnZhbGlkQm94ZWRTdW1Db25zdHJ1Y3RvcihESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFR1cGxlKERIRXhwLnQpXG4gIHwgSW52YWxpZEJ1aWx0aW4oc3RyaW5nKVxuICB8IEJhZEJ1aWx0aW5BcChzdHJpbmcsIGxpc3QoREhFeHAudCkpXG4gIHwgSW52YWxpZFByb2plY3Rpb24oaW50KTtcblxuZXhjZXB0aW9uIEV4Y2VwdGlvbih0KTtcbiIsIm9wZW4gREhFeHA7XG5cbi8qXG4gICBCdWlsdC1pbiBmdW5jdGlvbnMgZm9yIEhhemVsLlxuXG4gICBUbyBhZGQgYSBidWlsdC1pbiBmdW5jdGlvbiBvciBjb25zdGFudCwgd3JpdGUgdGhlIGltcGxlbWVudGF0aW9uIGluIHRoZVxuICAgYFBlcnZhc2l2ZXMuSW1wbHNgIG1vZHVsZSBiZWxvdyBhbmQgYWRkIGl0IHRvIGBidWlsdGluc2AuXG5cbiAgIFNlZSB0aGUgZXhpc3Rpbmcgb25lcyBmb3IgcmVmZXJlbmNlLlxuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYnVpbHRpbiA9XG4gIHwgQ29uc3QoVHlwLnQsIERIRXhwLnQpXG4gIHwgRm4oVHlwLnQsIFR5cC50LCBESEV4cC50ID0+IERIRXhwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBWYXJNYXAudF8oYnVpbHRpbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybXMgPSBWYXJNYXAudF8oREhFeHAudCA9PiBESEV4cC50KTtcblxudHlwZSByZXN1bHQgPSBSZXN1bHQudChESEV4cC50LCBFdmFsdWF0b3JFcnJvci50KTtcblxubGV0IGNvbnN0ID0gKG5hbWU6IFZhci50LCB0eXA6IFR5cC50ZXJtLCB2OiBESEV4cC50LCBidWlsdGluczogdCk6IHQgPT5cbiAgVmFyTWFwLmV4dGVuZChidWlsdGlucywgKG5hbWUsIENvbnN0KHR5cCB8PiBUeXAuZnJlc2gsIHYpKSk7XG5sZXQgZm4gPVxuICAgIChcbiAgICAgIG5hbWU6IFZhci50LFxuICAgICAgdDE6IFR5cC50ZXJtLFxuICAgICAgdDI6IFR5cC50ZXJtLFxuICAgICAgaW1wbDogREhFeHAudCA9PiBESEV4cC50LFxuICAgICAgYnVpbHRpbnM6IHQsXG4gICAgKVxuICAgIDogdCA9PlxuICBWYXJNYXAuZXh0ZW5kKFxuICAgIGJ1aWx0aW5zLFxuICAgIChuYW1lLCBGbih0MSB8PiBUeXAuZnJlc2gsIHQyIHw+IFR5cC5mcmVzaCwgaW1wbCkpLFxuICApO1xuXG5tb2R1bGUgUGVydmFzaXZlcyA9IHtcbiAgbW9kdWxlIEltcGxzID0ge1xuICAgIC8qIGNvbnN0YW50cyAqL1xuICAgIGxldCBpbmZpbml0eSA9IERIRXhwLkZsb2F0KEZsb2F0LmluZmluaXR5KSB8PiBmcmVzaDtcbiAgICBsZXQgbmVnX2luZmluaXR5ID0gREhFeHAuRmxvYXQoRmxvYXQubmVnX2luZmluaXR5KSB8PiBmcmVzaDtcbiAgICBsZXQgbmFuID0gREhFeHAuRmxvYXQoRmxvYXQubmFuKSB8PiBmcmVzaDtcbiAgICBsZXQgZXBzaWxvbl9mbG9hdCA9IERIRXhwLkZsb2F0KGVwc2lsb25fZmxvYXQpIHw+IGZyZXNoO1xuICAgIGxldCBwaSA9IERIRXhwLkZsb2F0KEZsb2F0LnBpKSB8PiBmcmVzaDtcbiAgICBsZXQgbWF4X2ludCA9IERIRXhwLkludChJbnQubWF4X2ludCkgfD4gZnJlc2g7XG4gICAgbGV0IG1pbl9pbnQgPSBESEV4cC5JbnQoSW50Lm1pbl9pbnQpIHw+IGZyZXNoO1xuXG4gICAgbGV0IHVuYXJ5ID0gKGY6IERIRXhwLnQgPT4gcmVzdWx0LCBkOiBESEV4cC50KSA9PiB7XG4gICAgICBzd2l0Y2ggKGYoZCkpIHtcbiAgICAgIHwgT2socicpID0+IHInXG4gICAgICB8IEVycm9yKGUpID0+IEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihlKSB8PiByYWlzZVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IGJpbmFyeSA9IChmOiAoREhFeHAudCwgREhFeHAudCkgPT4gcmVzdWx0LCBkOiBESEV4cC50KSA9PiB7XG4gICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgIHwgVHVwbGUoW2QxLCBkMl0pID0+XG4gICAgICAgIHN3aXRjaCAoZihkMSwgZDIpKSB7XG4gICAgICAgIHwgT2socikgPT4gclxuICAgICAgICB8IEVycm9yKGUpID0+IEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihlKSB8PiByYWlzZVxuICAgICAgICB9XG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGQpKSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXJuYXJ5ID0gKGY6IChESEV4cC50LCBESEV4cC50LCBESEV4cC50KSA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgfCBUdXBsZShbZDEsIGQyLCBkM10pID0+XG4gICAgICAgIHN3aXRjaCAoZihkMSwgZDIsIGQzKSkge1xuICAgICAgICB8IE9rKHIpID0+IHJcbiAgICAgICAgfCBFcnJvcihlKSA9PiBFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oZSkgfD4gcmFpc2VcbiAgICAgICAgfVxuICAgICAgfCBfID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRUdXBsZShkKSkpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgaXNfZmluaXRlID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goQm9vbChGbG9hdC5pc19maW5pdGUoZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGlzX2luZmluaXRlID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goQm9vbChGbG9hdC5pc19pbmZpbml0ZShmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaXNfbmFuID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goQm9vbChGbG9hdC5pc19uYW4oZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9pbnQgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBJbnQobikgPT4gT2soZnJlc2goU3RyaW5nKHN0cmluZ19vZl9pbnQobikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfb2ZfZmxvYXQgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2Zsb2F0KGYpKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRGbG9hdExpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfb2ZfYm9vbCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEJvb2woYikgPT4gT2soZnJlc2goU3RyaW5nKHN0cmluZ19vZl9ib29sKGIpKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRCb29sTGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGludF9vZl9mbG9hdCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEZsb2F0KGYpID0+IE9rKGZyZXNoKEludChpbnRfb2ZfZmxvYXQoZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGZsb2F0X29mX2ludCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChGbG9hdChmbG9hdF9vZl9pbnQobikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBhYnMgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBJbnQobikgPT4gT2soZnJlc2goSW50KGFicyhuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGZsb2F0X29wID0gZm4gPT5cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goRmxvYXQoZm4oZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGFic19mbG9hdCA9IGZsb2F0X29wKGFic19mbG9hdCk7XG4gICAgbGV0IGNlaWwgPSBmbG9hdF9vcChjZWlsKTtcbiAgICBsZXQgZmxvb3IgPSBmbG9hdF9vcChmbG9vcik7XG4gICAgbGV0IHNxcnQgPSBmbG9hdF9vcChzcXJ0KTtcbiAgICBsZXQgZXhwID0gZmxvYXRfb3AoZXhwKTtcbiAgICBsZXQgbG9nID0gZmxvYXRfb3AobG9nKTtcbiAgICBsZXQgbG9nMTAgPSBmbG9hdF9vcChsb2cxMCk7XG4gICAgbGV0IHNpbiA9IGZsb2F0X29wKHNpbik7XG4gICAgbGV0IGNvcyA9IGZsb2F0X29wKGNvcyk7XG4gICAgbGV0IHRhbiA9IGZsb2F0X29wKHRhbik7XG4gICAgbGV0IGFzaW4gPSBmbG9hdF9vcChhc2luKTtcbiAgICBsZXQgYWNvcyA9IGZsb2F0X29wKGFjb3MpO1xuICAgIGxldCBhdGFuID0gZmxvYXRfb3AoYXRhbik7XG5cbiAgICBsZXQgb2Zfc3RyaW5nID1cbiAgICAgICAgKGNvbnZlcnQ6IHN0cmluZyA9PiBvcHRpb24oJ2EpLCB3cmFwOiAnYSA9PiBESEV4cC50LCBuYW1lOiBzdHJpbmcpID0+XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgICAgIHN3aXRjaCAoY29udmVydChzKSkge1xuICAgICAgICAgIHwgU29tZShuKSA9PiBPayh3cmFwKG4pKVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgbGV0IGQnID0gREhFeHAuQnVpbHRpbkZ1bihuYW1lKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgICAgICAgIGxldCBkJyA9IERIRXhwLkFwKEZvcndhcmQsIGQnLCBkKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgICAgICAgIGxldCBkJyA9IER5bmFtaWNFcnJvckhvbGUoZCcsIEludmFsaWRPZlN0cmluZykgfD4gREhFeHAuZnJlc2g7XG4gICAgICAgICAgICBPayhkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGludF9vZl9zdHJpbmcgPVxuICAgICAgb2Zfc3RyaW5nKGludF9vZl9zdHJpbmdfb3B0LCBuID0+IEludChuKSB8PiBESEV4cC5mcmVzaCk7XG4gICAgbGV0IGZsb2F0X29mX3N0cmluZyA9XG4gICAgICBvZl9zdHJpbmcoZmxvYXRfb2Zfc3RyaW5nX29wdCwgZiA9PiBGbG9hdChmKSB8PiBESEV4cC5mcmVzaCk7XG4gICAgbGV0IGJvb2xfb2Zfc3RyaW5nID1cbiAgICAgIG9mX3N0cmluZyhib29sX29mX3N0cmluZ19vcHQsIGIgPT4gQm9vbChiKSB8PiBESEV4cC5mcmVzaCk7XG5cbiAgICBsZXQgaW50X21vZCA9IChuYW1lLCBkMSkgPT5cbiAgICAgIGJpbmFyeShcbiAgICAgICAgKGQxLCBkMikgPT5cbiAgICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZDEpLCB0ZXJtX29mKGQyKSkge1xuICAgICAgICAgIHwgKEludChfKSwgSW50KDApKSA9PlxuICAgICAgICAgICAgT2soXG4gICAgICAgICAgICAgIGZyZXNoKFxuICAgICAgICAgICAgICAgIER5bmFtaWNFcnJvckhvbGUoXG4gICAgICAgICAgICAgICAgICBESEV4cC5BcChGb3J3YXJkLCBESEV4cC5CdWlsdGluRnVuKG5hbWUpIHw+IGZyZXNoLCBkMSlcbiAgICAgICAgICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICAgICAgICAgICAgRGl2aWRlQnlaZXJvLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCAoSW50KG4pLCBJbnQobSkpID0+IE9rKEludChuIG1vZCBtKSB8PiBmcmVzaClcbiAgICAgICAgICB8IChJbnQoXyksIF8pID0+XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkSW50TGl0KGQyKSkpXG4gICAgICAgICAgfCAoXywgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRJbnRMaXQoZDEpKSlcbiAgICAgICAgICB9LFxuICAgICAgICBkMSxcbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX2xlbmd0aCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBPayhJbnQoU3RyaW5nLmxlbmd0aChzKSkgfD4gZnJlc2gpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX2NvbXBhcmUgPVxuICAgICAgYmluYXJ5KChkMSwgZDIpID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkMSksIHRlcm1fb2YoZDIpKSB7XG4gICAgICAgIHwgKFN0cmluZyhzMSksIFN0cmluZyhzMikpID0+XG4gICAgICAgICAgT2soSW50KFN0cmluZy5jb21wYXJlKHMxLCBzMikpIHw+IGZyZXNoKVxuICAgICAgICB8IChTdHJpbmcoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkMikpXG4gICAgICAgIHwgKF8sIF8pID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkMSkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX3RyaW0gPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBTdHJpbmcocykgPT4gT2soU3RyaW5nKFN0cmluZy50cmltKHMpKSB8PiBmcmVzaClcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfb2Y6IERIRXhwLnQgPT4gb3B0aW9uKHN0cmluZykgPVxuICAgICAgZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBTdHJpbmcocykgPT4gU29tZShzKVxuICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICB9O1xuXG4gICAgbGV0IHN0cmluZ19jb25jYXQgPVxuICAgICAgYmluYXJ5KChkMSwgZDIpID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkMSksIHRlcm1fb2YoZDIpKSB7XG4gICAgICAgIHwgKFN0cmluZyhzMSksIExpc3RMaXQoeHMpKSA9PlxuICAgICAgICAgIHN3aXRjaCAoeHMgfD4gTGlzdC5tYXAoc3RyaW5nX29mKSB8PiBVdGlsLk9wdFV0aWwuc2VxdWVuY2UpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KExpc3QuaGQoeHMpKSlcbiAgICAgICAgICB8IFNvbWUoeHMpID0+IE9rKFN0cmluZyhTdHJpbmcuY29uY2F0KHMxLCB4cykpIHw+IGZyZXNoKVxuICAgICAgICAgIH1cbiAgICAgICAgfCAoU3RyaW5nKF8pLCBfKSA9PiBFcnJvcihJbnZhbGlkQm94ZWRMaXN0TGl0KGQyKSlcbiAgICAgICAgfCAoXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfc3ViID0gXyA9PlxuICAgICAgdGVybmFyeSgoZDEsIGQyLCBkMykgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMiksIHRlcm1fb2YoZDMpKSB7XG4gICAgICAgIHwgKFN0cmluZyhzKSwgSW50KGlkeCksIEludChsZW4pKSA9PlxuICAgICAgICAgIHRyeShPayhTdHJpbmcoU3RyaW5nLnN1YihzLCBpZHgsIGxlbikpIHw+IGZyZXNoKSkge1xuICAgICAgICAgIHwgXyA9PlxuICAgICAgICAgICAgLy8gVE9ETzogbWFrZSBpdCBjbGVhciB0aGF0IHRoZSBwcm9ibGVtIGNvdWxkIGJlIHdpdGggZDMgdG9vXG4gICAgICAgICAgICBPayhEeW5hbWljRXJyb3JIb2xlKGQyLCBJbmRleE91dE9mQm91bmRzKSB8PiBmcmVzaClcbiAgICAgICAgICB9XG4gICAgICAgIHwgKFN0cmluZyhfKSwgSW50KF8pLCBfKSA9PiBFcnJvcihJbnZhbGlkQm94ZWRJbnRMaXQoZDMpKVxuICAgICAgICB8IChTdHJpbmcoXyksIF8sIF8pID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkMikpXG4gICAgICAgIHwgKF8sIF8sIF8pID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkMSkpXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH07XG5cbiAgb3BlbiBJbXBscztcbiAgbGV0IGJ1aWx0aW5zID1cbiAgICBWYXJNYXAuZW1wdHlcbiAgICB8PiBjb25zdChcImluZmluaXR5XCIsIEZsb2F0LCBpbmZpbml0eSlcbiAgICB8PiBjb25zdChcIm5lZ19pbmZpbml0eVwiLCBGbG9hdCwgbmVnX2luZmluaXR5KVxuICAgIHw+IGNvbnN0KFwibmFuXCIsIEZsb2F0LCBuYW4pXG4gICAgfD4gY29uc3QoXCJlcHNpbG9uX2Zsb2F0XCIsIEZsb2F0LCBlcHNpbG9uX2Zsb2F0KVxuICAgIHw+IGNvbnN0KFwicGlcIiwgRmxvYXQsIHBpKVxuICAgIHw+IGNvbnN0KFwibWF4X2ludFwiLCBJbnQsIG1heF9pbnQpXG4gICAgfD4gY29uc3QoXCJtaW5faW50XCIsIEludCwgbWluX2ludClcbiAgICB8PiBmbihcImlzX2Zpbml0ZVwiLCBGbG9hdCwgQm9vbCwgaXNfZmluaXRlKVxuICAgIHw+IGZuKFwiaXNfaW5maW5pdGVcIiwgRmxvYXQsIEJvb2wsIGlzX2luZmluaXRlKVxuICAgIHw+IGZuKFwiaXNfbmFuXCIsIEZsb2F0LCBCb29sLCBpc19uYW4pXG4gICAgfD4gZm4oXCJpbnRfb2ZfZmxvYXRcIiwgRmxvYXQsIEludCwgaW50X29mX2Zsb2F0KVxuICAgIHw+IGZuKFwiZmxvYXRfb2ZfaW50XCIsIEludCwgRmxvYXQsIGZsb2F0X29mX2ludClcbiAgICB8PiBmbihcInN0cmluZ19vZl9pbnRcIiwgSW50LCBTdHJpbmcsIHN0cmluZ19vZl9pbnQpXG4gICAgfD4gZm4oXCJzdHJpbmdfb2ZfZmxvYXRcIiwgRmxvYXQsIFN0cmluZywgc3RyaW5nX29mX2Zsb2F0KVxuICAgIHw+IGZuKFwic3RyaW5nX29mX2Jvb2xcIiwgQm9vbCwgU3RyaW5nLCBzdHJpbmdfb2ZfYm9vbClcbiAgICB8PiBmbihcImludF9vZl9zdHJpbmdcIiwgU3RyaW5nLCBJbnQsIGludF9vZl9zdHJpbmcoXCJpbnRfb2Zfc3RyaW5nXCIpKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJmbG9hdF9vZl9zdHJpbmdcIixcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIEZsb2F0LFxuICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nKFwiZmxvYXRfb2Zfc3RyaW5nXCIpLFxuICAgICAgIClcbiAgICB8PiBmbihcImJvb2xfb2Zfc3RyaW5nXCIsIFN0cmluZywgQm9vbCwgYm9vbF9vZl9zdHJpbmcoXCJib29sX29mX3N0cmluZ1wiKSlcbiAgICB8PiBmbihcImFic1wiLCBJbnQsIEludCwgYWJzKVxuICAgIHw+IGZuKFwiYWJzX2Zsb2F0XCIsIEZsb2F0LCBGbG9hdCwgYWJzX2Zsb2F0KVxuICAgIHw+IGZuKFwiY2VpbFwiLCBGbG9hdCwgRmxvYXQsIGNlaWwpXG4gICAgfD4gZm4oXCJmbG9vclwiLCBGbG9hdCwgRmxvYXQsIGZsb29yKVxuICAgIHw+IGZuKFwiZXhwXCIsIEZsb2F0LCBGbG9hdCwgZXhwKVxuICAgIHw+IGZuKFwibG9nXCIsIEZsb2F0LCBGbG9hdCwgbG9nKVxuICAgIHw+IGZuKFwibG9nMTBcIiwgRmxvYXQsIEZsb2F0LCBsb2cxMClcbiAgICB8PiBmbihcInNxcnRcIiwgRmxvYXQsIEZsb2F0LCBzcXJ0KVxuICAgIHw+IGZuKFwic2luXCIsIEZsb2F0LCBGbG9hdCwgc2luKVxuICAgIHw+IGZuKFwiY29zXCIsIEZsb2F0LCBGbG9hdCwgY29zKVxuICAgIHw+IGZuKFwidGFuXCIsIEZsb2F0LCBGbG9hdCwgdGFuKVxuICAgIHw+IGZuKFwiYXNpblwiLCBGbG9hdCwgRmxvYXQsIGFzaW4pXG4gICAgfD4gZm4oXCJhY29zXCIsIEZsb2F0LCBGbG9hdCwgYWNvcylcbiAgICB8PiBmbihcImF0YW5cIiwgRmxvYXQsIEZsb2F0LCBhdGFuKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJtb2RcIixcbiAgICAgICAgIFByb2QoW0ludCB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2hdKSxcbiAgICAgICAgIEludCxcbiAgICAgICAgIGludF9tb2QoXCJtb2RcIiksXG4gICAgICAgKVxuICAgIHw+IGZuKFwic3RyaW5nX2xlbmd0aFwiLCBTdHJpbmcsIEludCwgc3RyaW5nX2xlbmd0aClcbiAgICB8PiBmbihcbiAgICAgICAgIFwic3RyaW5nX2NvbXBhcmVcIixcbiAgICAgICAgIFByb2QoW1N0cmluZyB8PiBUeXAuZnJlc2gsIFN0cmluZyB8PiBUeXAuZnJlc2hdKSxcbiAgICAgICAgIEludCxcbiAgICAgICAgIHN0cmluZ19jb21wYXJlLFxuICAgICAgIClcbiAgICB8PiBmbihcInN0cmluZ190cmltXCIsIFN0cmluZywgU3RyaW5nLCBzdHJpbmdfdHJpbSlcbiAgICB8PiBmbihcbiAgICAgICAgIFwic3RyaW5nX2NvbmNhdFwiLFxuICAgICAgICAgUHJvZChbU3RyaW5nIHw+IFR5cC5mcmVzaCwgTGlzdChTdHJpbmcgfD4gVHlwLmZyZXNoKSB8PiBUeXAuZnJlc2hdKSxcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIHN0cmluZ19jb25jYXQsXG4gICAgICAgKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfc3ViXCIsXG4gICAgICAgICBQcm9kKFtTdHJpbmcgfD4gVHlwLmZyZXNoLCBJbnQgfD4gVHlwLmZyZXNoLCBJbnQgfD4gVHlwLmZyZXNoXSksXG4gICAgICAgICBTdHJpbmcsXG4gICAgICAgICBzdHJpbmdfc3ViKFwic3RyaW5nX3N1YlwiKSxcbiAgICAgICApO1xufTtcblxubGV0IGN0eF9pbml0OiBDdHgudCA9IHtcbiAgbGV0IG1ldGFfY29uc19tYXA6IENvbnN0cnVjdG9yTWFwLnQoVHlwLnQpID0gW1xuICAgIFZhcmlhbnQoXCIkZVwiLCBbSWQubWsoKV0sIE5vbmUpLFxuICAgIFZhcmlhbnQoXCIkdlwiLCBbSWQubWsoKV0sIE5vbmUpLFxuICBdO1xuICBsZXQgbWV0YSA9XG4gICAgQ3R4LlRWYXJFbnRyeSh7XG4gICAgICBuYW1lOiBcIiRNZXRhXCIsXG4gICAgICBpZDogSWQuaW52YWxpZCxcbiAgICAgIGtpbmQ6IEN0eC5TaW5nbGV0b24oU3VtKG1ldGFfY29uc19tYXApIHw+IFR5cC5mcmVzaCksXG4gICAgfSk7XG4gIExpc3QubWFwKFxuICAgIGZ1blxuICAgIHwgKG5hbWUsIENvbnN0KHR5cCwgXykpID0+IEN0eC5WYXJFbnRyeSh7bmFtZSwgdHlwLCBpZDogSWQuaW52YWxpZH0pXG4gICAgfCAobmFtZSwgRm4odDEsIHQyLCBfKSkgPT5cbiAgICAgIEN0eC5WYXJFbnRyeSh7bmFtZSwgdHlwOiBBcnJvdyh0MSwgdDIpIHw+IFR5cC5mcmVzaCwgaWQ6IElkLmludmFsaWR9KSxcbiAgICBQZXJ2YXNpdmVzLmJ1aWx0aW5zLFxuICApXG4gIHw+IEN0eC5leHRlbmQoXywgbWV0YSlcbiAgfD4gQ3R4LmFkZF9jdHJzKF8sIFwiJE1ldGFcIiwgSWQuaW52YWxpZCwgbWV0YV9jb25zX21hcCk7XG59O1xuXG5sZXQgZm9ybXNfaW5pdDogZm9ybXMgPVxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCAoXywgQ29uc3QoXykpID0+IE5vbmVcbiAgICB8IChuYW1lLCBGbihfLCBfLCBmKSkgPT4gU29tZSgobmFtZSwgZikpLFxuICAgIFBlcnZhc2l2ZXMuYnVpbHRpbnMsXG4gICk7XG5cbmxldCBlbnZfaW5pdDogRW52aXJvbm1lbnQudCA9XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgIGVudiA9PlxuICAgICAgZnVuXG4gICAgICB8IChuYW1lLCBDb25zdChfLCBkKSkgPT4gRW52aXJvbm1lbnQuZXh0ZW5kKGVudiwgKG5hbWUsIGQpKVxuICAgICAgfCAobmFtZSwgRm4oXykpID0+XG4gICAgICAgIEVudmlyb25tZW50LmV4dGVuZChlbnYsIChuYW1lLCBCdWlsdGluRnVuKG5hbWUpIHw+IGZyZXNoKSksXG4gICAgRW52aXJvbm1lbnQuZW1wdHksXG4gICAgUGVydmFzaXZlcy5idWlsdGlucyxcbiAgKTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgRXhwKEV4cC5jbHMpXG4gIHwgUGF0KFBhdC5jbHMpXG4gIHwgVHlwKFR5cC5jbHMpXG4gIHwgVFBhdChUUGF0LmNscylcbiAgfCBSdWwoUnVsLmNscylcbiAgfCBTZWNvbmRhcnkoU2Vjb25kYXJ5LmNscyk7XG5cbmxldCBzaG93ID0gKGNsczogdCkgPT5cbiAgc3dpdGNoIChjbHMpIHtcbiAgfCBFeHAoY2xzKSA9PiBFeHAuc2hvd19jbHMoY2xzKVxuICB8IFBhdChjbHMpID0+IFBhdC5zaG93X2NscyhjbHMpXG4gIHwgVHlwKGNscykgPT4gVHlwLnNob3dfY2xzKGNscylcbiAgfCBUUGF0KGNscykgPT4gVFBhdC5zaG93X2NscyhjbHMpXG4gIHwgUnVsKGNscykgPT4gUnVsLnNob3dfY2xzKGNscylcbiAgfCBTZWNvbmRhcnkoY2xzKSA9PiBTZWNvbmRhcnkuc2hvd19jbHMoY2xzKVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogQ28tY29udGV4dHM6XG5cbiAgIEEgdHlwaW5nIGNvLWNvbnRleHQgKGR1YWwgdG8gYSB0eXBpbmcgY29udGV4dCksIGlzIGEgbWFwIGJldHdlZW5cbiAgIHZhcmlhYmxlIG5hbWVzIGFuZCBhIGxpc3Qgb2YgdGhhdCB2YXJpYWJsZSdzIHVzZXMgd2l0aGluIHNvbWUgc2NvcGUuXG4gICBGb3IgZWFjaCB1c2UsIHdlIHJldGFpbiB0aGUgdW5pcXVlIGlkIGFuZCBleHBlY3RlZCB0eXBlIG9mIHRoZSB1c2Ugc2l0ZS5cbiAgIFRoZSBjby1jdHgsIGFsb25nIHdpdGggdGhlIGN0eCwgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGZyZWUgYW5kIHVudXNlZCB2YXJpYWJsZXMuXG5cbiAgIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIHVzZWZ1bDpcblxuICAgMS4gQSBsb2NhbGx5IGZyZWUgdmFyaWFibGUgKGluIGFuIGV4cHJlc3Npb24pIGlzIG9uZVxuICAgICAgdGhhdCBvY2N1cnMgaW4gdGhlIGNvX2N0eCBvZiB0aGF0IGV4cHJlc3Npb24uXG4gICAyLiBBIGdsb2JhbCBmcmVlIHZhcmlhYmxlIChpbiB0aGUgcHJvZ3JhbSkgaXMgb25lIHRoYXRcbiAgICAgIG9jY3VycyBpbiB0aGUgY29fY3R4IGJ1dCBub3QgdGhlIGN0eCBvZiBzb21lIGV4cHJlc3Npb25cbiAgIDMuIEEgbG9jYWxseSB1bnVzZWQgdmFyaWFibGUgKGluIGFuIGV4cHJlc3Npb24pIGlzIG9uZSB0aGF0XG4gICAgICBvY2N1cnMgaW4gdGhlIGN0eCBidXQgbm90IHRoZSBjby1jdHggb2YgdGhhdCBleHByZXNzaW9uXG4gICA0LiBBIGdsb2JhbCB1bnVzZWQgdmFyaWFibGUgKGluIHRoZSBwcm9ncmFtKSBpcyBvbmUgdGhhdFxuICAgICAgb2NjdXJzIGluIHRoZSBjdHggYnV0IG5vdCB0aGUgY29fY3R4IG9mIHNvbWUgZXhwcmVzc2lvblxuXG4gICBUaGUgZm9sbG93aW5nIHRoZW9yZW1zIHNob3VsZCBob2xkOlxuXG4gICBBLiBUbyBkZXRlcm1pbmUgaWYgYSB2YXJpYWJsZSBpcyBnbG9iYWxseSBmcmVlLCBpdCBzdWZmaWNlcyB0byBjb25zaWRlclxuICAgICAgZXhwcmVzc2lvbnMgd2hpY2ggYXJlIHZhcmlhYmxlIHJlZmVyZW5jZXMgKGxvY3VzIG9mIGN0eCBsb29rdXBzKVxuICAgQi4gVG8gZGV0ZXJtaW5lIGlmIGEgdmFyaWFibGUgaXMgZ2xvYmFsbHkgdW51c2VkLCBpdCBzdWZmaWNlcyB0byBjb25zaWRlclxuICAgICAgZXhwcmVzc2lvbnMgd2hpY2ggYXJlIHRoZSBib2RpZXMgb2YgYmluZGluZyBmb3JtcyAobG9jdXMgb2YgY3R4IGV4dGVuc2lvbnMpXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZW50cnkgPSB7XG4gIGlkOiBJZC50LFxuICBleHBlY3RlZF90eTogVHlwLnQsXG59O1xuXG4vKiBFYWNoIGNvLWNvbnRleHQgZW50cnkgaXMgYSBsaXN0IG9mIHRoZSB1c2VzIG9mIGEgdmFyaWFibGVcbiAgIHdpdGhpbiBzb21lIHNjb3BlLCBpbmNsdWRpbmcgdGhlaXIgdHlwZSBkZW1hbmRzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBWYXJNYXAudF8obGlzdChlbnRyeSkpO1xuXG5sZXQgZW1wdHk6IHQgPSBWYXJNYXAuZW1wdHk7XG5cbmxldCBtayA9IChjdHhfYmVmb3JlOiBDdHgudCwgY3R4X2FmdGVyLCBjb19jdHg6IHQpOiB0ID0+IHtcbiAgbGV0IGFkZGVkX2JpbmRpbmdzID0gQ3R4LmFkZGVkX2JpbmRpbmdzKGN0eF9hZnRlciwgY3R4X2JlZm9yZSk7XG4gIFZhck1hcC5maWx0ZXIoXG4gICAgKChuYW1lLCBfKSkgPT5cbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF92YXIoYWRkZWRfYmluZGluZ3MsIG5hbWUpKSB7XG4gICAgICB8IE5vbmUgPT4gdHJ1ZVxuICAgICAgfCBTb21lKF8pID0+IGZhbHNlXG4gICAgICB9LFxuICAgIGNvX2N0eCxcbiAgKTtcbn07XG5cbi8qIE5vdGU6IHRoaXMgY3VycmVudGx5IHNoYWRvd3MgaW4gdGhlIGNhc2Ugb2YgZHVwbGljYXRlcyAqL1xubGV0IHVuaW9uOiBsaXN0KHQpID0+IHQgPVxuICBMaXN0LmZvbGRfbGVmdCgoY29fY3R4MSwgY29fY3R4MikgPT4gY29fY3R4MSBAIGNvX2N0eDIsIFtdKTtcblxubGV0IHNpbmdsZXRvbiA9IChuYW1lLCBpZCwgZXhwZWN0ZWRfdHkpOiB0ID0+IFtcbiAgKG5hbWUsIFt7aWQsIGV4cGVjdGVkX3R5fV0pLFxuXTtcblxubGV0IGpvaW46IChDdHgudCwgbGlzdChlbnRyeSkpID0+IFR5cC50ID1cbiAgKGN0eCwgZW50cmllcykgPT4ge1xuICAgIGxldCBleHBlY3RlZF90eXMgPSBMaXN0Lm1hcChlbnRyeSA9PiBlbnRyeS5leHBlY3RlZF90eSwgZW50cmllcyk7XG4gICAgc3dpdGNoIChcbiAgICAgIFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoLCBjdHgsIGV4cGVjdGVkX3R5cylcbiAgICApIHtcbiAgICB8IE5vbmUgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoXG4gICAgfCBTb21lKHR5KSA9PiB0eVxuICAgIH07XG4gIH07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4vKiBNT0RFLnJlXG5cbiAgICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgKGFuYWx5dGljKSB0eXBlIGV4cGVjdGF0aW9uIGltcG9zZWQgYnkgYSB0ZXJtJ3NcbiAgICAgIHN5bnRhY3RpYyBjb250ZXh0LCBpbiBwYXJ0aWN1bGFyIGl0cyBpbW1lZGlhdGUgcGFyZW50LiBUaGUgbW9zdCBjb21tb25cbiAgICAgIGNhc2VzIGFyZSBlaXRoZXIgU3luIChubyB0eXBlIGV4cGVjdGF0aW9uKSwgb3IgQW5hIChzb21lIHR5cGUgZXhwZWN0YXRpb24pLlxuXG4gICAgICBBIHRlcm0ncyBNT0RFIGlzIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGF0IHRlcm0ncyBTRUxGIChTZWxmLnJlKSBieVxuICAgICAgdG8gZGV0ZXJtaW5lIHRoYXQgdGVybSdzIFNUQVRVUyAoSW5mby5yZSksIHdoaWNoIGRpY3RhdGVzIHdoZXRoZXIgb3Igbm90XG4gICAgICBpdCBpcyBwbGFjZWQgaW4gYSBob2xlLCBhbmQgaGVuY2UgaXRzIEZJWEVEIFRZUEUgKEluZm8ucmUpLlxuXG4gICAgICAoSXQgaXMgY29uamVjdHVyZWQgW2NpdGF0aW9uIG5lZWRlZF0gdGhhdCB0aGUgU3luIG1vZGUgaXMgZnVuY3Rpb25hbGx5XG4gICAgICBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIEFuYShVbmtub3duKFN5blN3aXRjaCkpLCBhbmQgdGhhdCB0aGlzIHR5cGUgaXNcbiAgICAgIHRodXMgdmVzdGlnaWFsLilcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBTeW5GdW4gLyogVXNlZCBvbmx5IGluIGZ1bmN0aW9uIHBvc2l0aW9uIG9mIGFwcGxpY2F0aW9ucyAqL1xuICB8IFN5blR5cEZ1blxuICB8IFN5blxuICB8IEFuYShUeXAudCk7XG5cbmxldCBhbmE6IFR5cC50ID0+IHQgPSB0eSA9PiBBbmEodHkpO1xuXG4vKiBUaGUgZXhwZWN0ZWQgdHlwZSBpbXBvc2VkIGJ5IGEgbW9kZSAqL1xubGV0IHR5X29mOiB0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgQW5hKHR5KSA9PiB0eVxuICB8IFN5biA9PiBVbmtub3duKFN5blN3aXRjaCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBTeW5GdW4gPT5cbiAgICBBcnJvdyhcbiAgICAgIFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gICAgfD4gVHlwLm1rX2Zhc3RcbiAgfCBTeW5UeXBGdW4gPT5cbiAgICBGb3JhbGwoXG4gICAgICBWYXIoXCJzeW50eXBmdW5cIikgfD4gVFBhdC5mcmVzaCxcbiAgICAgIFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gICAgfD4gVHlwLm1rX2Zhc3Q7IC8qIFRPRE86IG5hbWluZyB0aGUgdHlwZSB2YXJpYWJsZT8gKi9cblxubGV0IG9mX2Fycm93ID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiAodCwgdCkgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IChTeW4sIFN5bilcbiAgfCBBbmEodHkpID0+IHR5IHw+IFR5cC5tYXRjaGVkX2Fycm93KGN0eCkgfD4gVHVwbGVVdGlsLm1hcDIoYW5hKVxuICB9O1xuXG5sZXQgb2ZfZm9yYWxsID0gKGN0eDogQ3R4LnQsIG5hbWVfb3B0OiBvcHRpb24oc3RyaW5nKSwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IFN5blxuICB8IEFuYSh0eSkgPT5cbiAgICBsZXQgKG5hbWVfZXhwZWN0ZWRfb3B0LCBpdGVtKSA9IFR5cC5tYXRjaGVkX2ZvcmFsbChjdHgsIHR5KTtcbiAgICBzd2l0Y2ggKG5hbWVfb3B0LCBuYW1lX2V4cGVjdGVkX29wdCkge1xuICAgIHwgKFNvbWUobmFtZSksIFNvbWUobmFtZV9leHBlY3RlZCkpID0+XG4gICAgICBBbmEoVHlwLnN1YnN0KFZhcihuYW1lKSB8PiBUeXAubWtfZmFzdCwgbmFtZV9leHBlY3RlZCwgaXRlbSkpXG4gICAgfCBfID0+IEFuYShpdGVtKVxuICAgIH07XG4gIH07XG5cbmxldCBvZl9wcm9kID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQsIGxlbmd0aCk6IGxpc3QodCkgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IExpc3QuaW5pdChsZW5ndGgsIF8gPT4gU3luKVxuICB8IEFuYSh0eSkgPT4gdHkgfD4gVHlwLm1hdGNoZWRfcHJvZChjdHgsIGxlbmd0aCkgfD4gTGlzdC5tYXAoYW5hKVxuICB9O1xuXG5sZXQgb2ZfY29uc19oZCA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gU3luXG4gIHwgQW5hKHR5KSA9PiBBbmEoVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5KSlcbiAgfTtcblxubGV0IG9mX2NvbnNfdGwgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgaGRfdHk6IFR5cC50KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gQW5hKExpc3QoaGRfdHkpIHw+IFR5cC5ta19mYXN0KVxuICB8IEFuYSh0eSkgPT4gQW5hKExpc3QoVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5KSkgfD4gVHlwLm1rX2Zhc3QpXG4gIH07XG5cbmxldCBvZl9saXN0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBTeW5cbiAgfCBBbmEodHkpID0+IEFuYShUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKVxuICB9O1xuXG5sZXQgb2ZfbGlzdF9jb25jYXQgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IEFuYShMaXN0KFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdCkgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgQW5hKHR5KSA9PiBBbmEoTGlzdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKSB8PiBUeXAubWtfZmFzdClcbiAgfTtcblxubGV0IG9mX2xpc3RfbGl0ID0gKGN0eDogQ3R4LnQsIGxlbmd0aCwgbW9kZTogdCk6IGxpc3QodCkgPT5cbiAgTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBvZl9saXN0KGN0eCwgbW9kZSkpO1xuXG5sZXQgY3RyX2FuYV90eXAgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgY3RyOiBDb25zdHJ1Y3Rvci50KTogb3B0aW9uKFR5cC50KSA9PiB7XG4gIC8qIElmIGEgY3RyIGlzIGJlaW5nIGFuYWx5emVkIGFnYWluc3QgKGFuIGFycm93IHR5cGUgcmV0dXJuaW5nKVxuICAgICBhIHN1bSB0eXBlIGhhdmluZyB0aGF0IGN0ciBhcyBhIHZhcmlhbnQsIHdlIGNvbnNpZGVyIHRoZVxuICAgICBjdHIncyB0eXBlIHRvIGJlIGRldGVybWluZWQgYnkgdGhlIHN1bSB0eXBlICovXG4gIHN3aXRjaCAobW9kZSkge1xuICB8IEFuYSh7dGVybTogQXJyb3coXywgdHlfYW5hKSwgX30pXG4gIHwgQW5hKHR5X2FuYSkgPT5cbiAgICBsZXQrIGN0cnMgPSBUeXAuZ2V0X3N1bV9jb25zdHJ1Y3RvcnMoY3R4LCB0eV9hbmEpO1xuICAgIGxldCB0eV9lbnRyeSA9IENvbnN0cnVjdG9yTWFwLmdldF9lbnRyeShjdHIsIGN0cnMpO1xuICAgIHN3aXRjaCAodHlfZW50cnkpIHtcbiAgICB8IE5vbmUgPT4gdHlfYW5hXG4gICAgfCBTb21lKHR5X2luKSA9PiBBcnJvdyh0eV9pbiwgdHlfYW5hKSB8PiBUeXAubWtfZmFzdFxuICAgIH07XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgb2ZfY3RyX2luX2FwID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQsIGN0cjogQ29uc3RydWN0b3IudCk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGN0cl9hbmFfdHlwKGN0eCwgbW9kZSwgY3RyKSkge1xuICB8IFNvbWUoe3Rlcm06IEFycm93KF8pLCBffSBhcyB0eV9hbmEpID0+IFNvbWUoQW5hKHR5X2FuYSkpXG4gIHwgU29tZSh0eV9hbmEpID0+XG4gICAgLyogQ29uc2lkZXIgZm9yIGV4YW1wbGUgXCJsZXQgXyA6ICtZbyA9IFlvKFwibG9sXCIpIGluLi4uXCJcbiAgICAgICBIZXJlLCB0aGUgJ1lvJyBjb25zdHJ1Y3RvciBzaG91bGQgYmUgaW4gYSBob2xlLCBhcyBpdFxuICAgICAgIGlzIG51bGxhcnkgYnV0IHVzZWQgYXMgdW5hcnk7IHdlIHJlZmxlY3QgdGhpcyBieSBhbmFseXppbmdcbiAgICAgICBhZ2FpbnN0IGFuIGFycm93IHR5cGUuIFNpbmNlIHdlIGNhbid0IGd1ZXNzIGF0IHdoYXQgdGhlXG4gICAgICAgcGFyYW1ldGVyIHR5cGUgbWlnaHQgaGF2ZSBiZSwgd2UgdXNlIFVua25vd24uICovXG4gICAgU29tZShcbiAgICAgIEFuYShBcnJvdyhVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCwgdHlfYW5hKSB8PiBUeXAubWtfZmFzdCksXG4gICAgKVxuICB8IE5vbmUgPT4gTm9uZVxuICB9O1xuXG5sZXQgb2ZfYXAgPSAoY3R4LCBtb2RlLCBjdHI6IG9wdGlvbihDb25zdHJ1Y3Rvci50KSk6IHQgPT5cbiAgLyogSWYgYSBjdHIgYXBwbGljYXRpb24gaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCBhIHN1bSB0eXBlIGZvclxuICAgICB3aGljaCB0aGF0IGN0ciBpcyBhIHZhcmlhbnQsIHRoZW4gd2UgY29uc2lkZXIgdGhlIGN0ciB0byBiZSBpblxuICAgICBhbmFseXRpYyBtb2RlIGFnYWluc3QgYW4gYXJyb3cgcmV0dXJuaW5nIHRoYXQgc3VtIHR5cGU7IG90aGVyd2lzZVxuICAgICB3ZSB1c2UgdGhlIHR5cGljYWwgbW9kZSBmb3IgZnVuY3Rpb24gYXBwbGljYXRpb25zICovXG4gIHN3aXRjaCAoY3RyKSB7XG4gIHwgU29tZShuYW1lKSA9PlxuICAgIHN3aXRjaCAob2ZfY3RyX2luX2FwKGN0eCwgbW9kZSwgbmFtZSkpIHtcbiAgICB8IFNvbWUobW9kZSkgPT4gbW9kZVxuICAgIHwgXyA9PiBTeW5GdW5cbiAgICB9XG4gIHwgTm9uZSA9PiBTeW5GdW5cbiAgfTtcblxubGV0IHR5cGFwX21vZGU6IHQgPSBTeW5UeXBGdW47XG5cbmxldCBvZl9kZWZlcnJlZF9hcF9hcmdzID0gKGxlbmd0aDogaW50LCB0eV9pbnM6IGxpc3QoVHlwLnQpKTogbGlzdCh0KSA9PlxuICAoXG4gICAgTGlzdC5sZW5ndGgodHlfaW5zKSA9PSBsZW5ndGhcbiAgICAgID8gdHlfaW5zIDogTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBUeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpXG4gIClcbiAgfD4gTGlzdC5tYXAodHkgPT4gQW5hKHR5KSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBTRUxGLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIFNFTEYgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIHJlcHJlc2VudHNcbiAgIHRoZSBzeW50aGV0aWMgdHlwZSBpbmZvcm1hdGlvbiBkZXJpdmFibGUgZnJvbSBhIHRlcm0gaW5kZXBlbmRlbnRcbiAgIG9mIHRoZSB0eXBlIGV4cGVjdGF0aW9uIChpLmUuIE1PREUpIG9mIGl0cyBzeW50YWN0aWMgY29udGV4dC4gVGhpc1xuICAgc3luZXRoZXRpYyBpbmZvcm1hdGlvbiBpcyBub3QgZW50aXJlbHkgaW5kZXBlbmRlbnQsIGluIHRoYXQgaXQgc3RpbGxcbiAgIHVzZXMgdGhlIHR5cGluZyBjb250ZXh0IHBhc3NlZCBkb3duIGZyb20gdGhlIHN5bnRhY3RpYyBjb250ZXh0LlxuXG4gICBBIHRlcm0gd2hpY2ggZnJvbSB3aGljaCBhIHR5cGUgY2FuIGJlIGRlcml2ZWQgaW4gaXNvbGF0aW9uLCB0aGF0IGlzLFxuICAgdGhhdCBoYXMgYSB2YWxpZCBzeW50aGV0aWMgdHlwaW5nIGp1ZGdlbWVudCwgd2lsbCBnZW5lcmFsbHkgaGF2ZSBhIFNFTEZcbiAgIG9mIEp1c3Qoc29tZV90eXBlKS4gKFRoZSBvbmUgY3VycmVudCBleGNlcHRpb24gYXJlIHRoZSBjb25zdHJ1Y3RvcnMgb2YgbGFiZWxsZWRcbiAgIHN1bSB0eXBlcywgd2hpY2ggYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHRoZWlyIHN5bnRoZXRpYyB0eXBlXG4gICBtYXkgYmUgJ292ZXJ3cml0dGVuJyBieSB0aGUgYW5hbHl0aWMgZXhwZWN0YXRpb24pXG5cbiAgIFRoZSBvdGhlciBjYXNlcyBhbGwgcmVwcmVzZW50IHN0YXRlcyBmb3Igd2hpY2ggbm8gc2luZ2xlIHR5cGUgY2FuIGJlXG4gICBkZXJpdmVkLCBzdWNoIGFzIHN5bnRhY3RpYyBlcnJvcnMsIG9yIGJyYW5jaGluZyBjb25zdHJ1Y3RzIHdoaWNoIG1heVxuICAgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXMuXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgam9pbl90eXBlID1cbiAgfCBJZFxuICB8IExpc3Q7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSnVzdChUeXAudCkgLyogSnVzdCBhIHJlZ3VsYXIgdHlwZSAqL1xuICB8IE5vSm9pbihqb2luX3R5cGUsIGxpc3QoVHlwLnNvdXJjZSkpIC8qIEluY29uc2lzdGVudCB0eXBlcyBmb3IgZS5nIG1hdGNoLCBsaXN0bGl0cyAqL1xuICB8IEJhZFRva2VuKFRva2VuLnQpIC8qIEludmFsaWQgZXhwcmVzc2lvbiB0b2tlbiwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgQmFkVHJpdkFwKFR5cC50KSAvKiBUcml2aWFsIChudWxsYXJ5KSBhcCBvbiBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgdGFrZSB0cml2ICovXG4gIHwgSXNNdWx0aSAvKiBNdWx0aWhvbGUsIHRyZWF0ZWQgYXMgaG9sZSAqL1xuICB8IElzQ29uc3RydWN0b3Ioe1xuICAgICAgbmFtZTogQ29uc3RydWN0b3IudCxcbiAgICAgIHN5bl90eTogb3B0aW9uKFR5cC50KSxcbiAgICB9KTsgLyogQ29uc3RydWN0b3JzIGhhdmUgc3BlY2lhbCBhbmEgbG9naWMgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9wYXJ0aWFsX2FwID1cbiAgfCBOb0RlZmVycmVkQXJnc1xuICB8IEFyaXR5TWlzbWF0Y2goe1xuICAgICAgZXhwZWN0ZWQ6IGludCxcbiAgICAgIGFjdHVhbDogaW50LFxuICAgIH0pO1xuXG4vKiBFeHByZXNzaW9ucyBjYW4gYWxzbyBiZSBmcmVlIHZhcmlhYmxlcyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHAgPVxuICB8IEZyZWUoVmFyLnQpXG4gIHwgSXNEZWZlcnJhbChFeHAuZGVmZXJyYWxfcG9zaXRpb24pXG4gIHwgSXNCYWRQYXJ0aWFsQXAoZXJyb3JfcGFydGlhbF9hcClcbiAgfCBDb21tb24odCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGF0ID1cbiAgfCBDb21tb24odCk7XG5cbmxldCBqb2luX29mID0gKGo6IGpvaW5fdHlwZSwgdHk6IFR5cC50KTogVHlwLnQgPT5cbiAgc3dpdGNoIChqKSB7XG4gIHwgSWQgPT4gdHlcbiAgfCBMaXN0ID0+IExpc3QodHkpIHw+IFR5cC5mcmVzaFxuICB9O1xuXG4vKiBXaGF0IHRoZSB0eXBlIHdvdWxkIGJlIGlmIHRoZSBwb3NpdGlvbiBoYWQgYmVlblxuICAgc3ludGhldGljLCBzbyBubyBob2xlIGZpeGluZy4gUmV0dXJucyBub25lIGlmXG4gICB0aGVyZSdzIG5vIGFwcGxpY2FibGUgc3ludGhldGljIHJ1bGUuICovXG5sZXQgdHlwX29mOiAoQ3R4LnQsIHQpID0+IG9wdGlvbihUeXAudCkgPVxuICBfY3R4ID0+XG4gICAgZnVuXG4gICAgfCBKdXN0KHR5cCkgPT4gU29tZSh0eXApXG4gICAgfCBJc0NvbnN0cnVjdG9yKHtzeW5fdHksIF99KSA9PiBzeW5fdHlcbiAgICB8IEJhZFRva2VuKF8pXG4gICAgfCBCYWRUcml2QXAoXylcbiAgICB8IElzTXVsdGlcbiAgICB8IE5vSm9pbihfKSA9PiBOb25lO1xuXG5sZXQgdHlwX29mX2V4cDogKEN0eC50LCBleHApID0+IG9wdGlvbihUeXAudCkgPVxuICBjdHggPT5cbiAgICBmdW5cbiAgICB8IEZyZWUoXylcbiAgICB8IElzRGVmZXJyYWwoXylcbiAgICB8IElzQmFkUGFydGlhbEFwKF8pID0+IE5vbmVcbiAgICB8IENvbW1vbihzZWxmKSA9PiB0eXBfb2YoY3R4LCBzZWxmKTtcblxubGV0IHR5cF9vZl9wYXQ6IChDdHgudCwgcGF0KSA9PiBvcHRpb24oVHlwLnQpID1cbiAgY3R4ID0+XG4gICAgZnVuXG4gICAgfCBDb21tb24oc2VsZikgPT4gdHlwX29mKGN0eCwgc2VsZik7XG5cbi8qIFRoZSBzZWxmIG9mIGEgdmFyIGRlcGVuZHMgb24gdGhlIGN0eDsgaWYgdGhlXG4gICBsb29rdXAgZmFpbHMsIGl0IGlzIGEgZnJlZSB2YXJpYWJsZSAqL1xubGV0IG9mX2V4cF92YXIgPSAoY3R4OiBDdHgudCwgbmFtZTogVmFyLnQpOiBleHAgPT5cbiAgc3dpdGNoIChDdHgubG9va3VwX3ZhcihjdHgsIG5hbWUpKSB7XG4gIHwgTm9uZSA9PiBGcmVlKG5hbWUpXG4gIHwgU29tZSh2YXIpID0+IENvbW1vbihKdXN0KHZhci50eXApKVxuICB9O1xuXG4vKiBUaGUgc2VsZiBvZiBhIGN0ciBkZXBlbmRzIG9uIHRoZSBjdHgsIGJ1dCBhXG4gICBsb29rdXAgZmFpbHVyZSBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW5zIGl0c1xuICAgZnJlZTsgaXQgbWF5IGJlIGdpdmVuIGEgdHlwZSBhbmFseXRpY2FsbHkgKi9cbmxldCBvZl9jdHIgPSAoY3R4OiBDdHgudCwgbmFtZTogQ29uc3RydWN0b3IudCk6IHQgPT5cbiAgSXNDb25zdHJ1Y3Rvcih7XG4gICAgbmFtZSxcbiAgICBzeW5fdHk6XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfY3RyKGN0eCwgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICB8IFNvbWUoe3R5cCwgX30pID0+IFNvbWUodHlwKVxuICAgICAgfSxcbiAgfSk7XG5cbmxldCBvZl9kZWZlcnJlZF9hcCA9IChhcmdzLCB0eV9pbnM6IGxpc3QoVHlwLnQpLCB0eV9vdXQ6IFR5cC50KTogZXhwID0+IHtcbiAgbGV0IGV4cGVjdGVkID0gTGlzdC5sZW5ndGgodHlfaW5zKTtcbiAgbGV0IGFjdHVhbCA9IExpc3QubGVuZ3RoKGFyZ3MpO1xuICBpZiAoZXhwZWN0ZWQgIT0gYWN0dWFsKSB7XG4gICAgSXNCYWRQYXJ0aWFsQXAoQXJpdHlNaXNtYXRjaCh7ZXhwZWN0ZWQsIGFjdHVhbH0pKTtcbiAgfSBlbHNlIGlmIChMaXN0LmZvcl9hbGwoRXhwLmlzX2RlZmVycmFsLCBhcmdzKSkge1xuICAgIElzQmFkUGFydGlhbEFwKE5vRGVmZXJyZWRBcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgdHlfaW5zID1cbiAgICAgIExpc3QuY29tYmluZShhcmdzLCB0eV9pbnMpXG4gICAgICB8PiBMaXN0LmZpbHRlcigoKGFyZywgX3R5KSkgPT4gRXhwLmlzX2RlZmVycmFsKGFyZykpXG4gICAgICB8PiBMaXN0Lm1hcChzbmQpO1xuICAgIGxldCB0eV9pbiA9XG4gICAgICBMaXN0Lmxlbmd0aCh0eV9pbnMpID09IDFcbiAgICAgICAgPyBMaXN0LmhkKHR5X2lucykgOiBQcm9kKHR5X2lucykgfD4gVHlwLmZyZXNoO1xuICAgIENvbW1vbihKdXN0KEFycm93KHR5X2luLCB0eV9vdXQpIHw+IFR5cC5mcmVzaCkpO1xuICB9O1xufTtcblxubGV0IGFkZF9zb3VyY2UgPSBMaXN0Lm1hcDIoKGlkLCB0eSkgPT4gVHlwLntpZCwgdHl9KTtcblxubGV0IG1hdGNoID0gKGN0eDogQ3R4LnQsIHR5czogbGlzdChUeXAudCksIGlkczogbGlzdChJZC50KSk6IHQgPT5cbiAgc3dpdGNoIChUeXAuam9pbl9hbGwofmVtcHR5PVVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5mcmVzaCwgY3R4LCB0eXMpKSB7XG4gIHwgTm9uZSA9PiBOb0pvaW4oSWQsIGFkZF9zb3VyY2UoaWRzLCB0eXMpKVxuICB8IFNvbWUodHkpID0+IEp1c3QodHkpXG4gIH07XG5cbmxldCBsaXN0bGl0ID0gKH5lbXB0eSwgY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHksIGN0eCwgdHlzKSkge1xuICB8IE5vbmUgPT4gTm9Kb2luKExpc3QsIGFkZF9zb3VyY2UoaWRzLCB0eXMpKVxuICB8IFNvbWUodHkpID0+IEp1c3QoTGlzdCh0eSkgfD4gVHlwLmZyZXNoKVxuICB9O1xuXG5sZXQgbGlzdF9jb25jYXQgPSAoY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoLCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihMaXN0LCBhZGRfc291cmNlKGlkcywgdHlzKSlcbiAgfCBTb21lKHR5KSA9PiBKdXN0KHR5KVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIElORk8ucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgY3Vyc29yIElORk8gZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIGlzIHVzZWRcbiAgIHRvIHJlcHJlc2VudCB0aGUgc3RhdGljIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHRlcm0gaW4gdGhlXG4gICBBU1QuIFRoaXMgaW5jbHVkZXMgdGhlIHRlcm0gaXRzZWxmLCBhbmQgaW5mb3JtYXRpb24gcmVsYXRlZCB0b1xuICAgdHlwaW5nIGFuZCBzeW50YXgsIGluY2x1ZGVkIGVycm9uZW91cyBzdGF0ZXMuXG5cbiAgIEVhY2ggdGVybSBpcyBhc3NpZ25lZCBhIFNUQVRVUywgd2hpY2ggaXMgZGlyZWN0bHkgdXNlZCB0byBkZXRlcm1pbmVcbiAgIHRoZSBtZXNzYWdlIGRpc3BsYXllZCB0byB0aGUgdXNlciBpbiBDdXJzb3JJbnNwZWN0b3IucmUuIEVhY2ggc29ydFxuICAgaGFzIGl0cyBvd24gc3RhdHVzIGRhdGF0eXBlLCB3aGljaCBpcyBkaXZpZGVkIGludG8gT0sgc3RhdGVzIChub3RcbiAgIGluIGVycm9yIGhvbGVzKSBhbmQgRVJST1Igc3RhdGVzIChpbiBlcnJvciBob2xlcykuXG5cbiAgIFJlZ2FyZGxlc3Mgb2YgZXJyb3JzLCBldmVyeSBleHByZXNzaW9uICYgcGF0dGVybiB0ZXJtIGlzIHVsdGltYXRlbHlcbiAgIGFzc2lnbmVkIGEgRklYRUQgVFlQRSwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgdGhlIHRlcm0gYWZ0ZXIgaG9sZVxuICAgZml4aW5nOyB0aGF0IGlzLCBhbGwgb3RoZXJ3aXNlIGlsbC10eXBlZCB0ZXJtcyBhcmUgY29uc2lkZXJlZCB0b1xuICAgYmUgJ3dyYXBwZWQgaW4gbm9uLWVtcHR5IGhvbGVzJywgaS5lLiBhc3NpZ25lZCBhbiBVbmtub3duIHR5cGUuXG5cbiAgIEZpeGVkIHR5cGVzIGFyZSBkZXRlcm1pbmVkIGJ5IHJlY29uY2lsbGluZyB0d28gc291cmNlcyBvZiB0eXBlXG4gICBpbmZvcm1hdGlvbjogdGhlIFNFTEYgKFNlbGYucmUpLCByZXByZXNlbnRpbmcgdGhlIHR5cGUgaW5mb3JtYXRpb25cbiAgIGRlcml2YWJsZSBmcm9tIGEgdGVybSBpbiBpc29sYXRpb24sIGFuZCB0aGUgTU9ERSAoTW9kZS5yZSksXG4gICByZXByZXNlbnRpbmcgdGhlIGV4cGVjdGVkIHR5cGUgaW5mb3JtYXRpb24gaW1wb3NlZCBieSB0aGUgc3Vycm91bmRpbmdcbiAgIHN5bnRhY3RpYyBjb250ZXh0LiBBIHN1Y2Nlc3NmdWwgcmVjb25jaWxsaWF0aW9uIHJlc3VsdHMgaW4gYW4gT0tcbiAgIHN0YXR1czsgb3RoZXJ3aXNlLCBhbiBFUlJPUiBzdGF0dXMsIGJ1dCBpbiBib3RoIGNhc2VzLCBhIGZpeGVkIHR5cGVcbiAgIGlzIGRldGVybWluZWQuXG5cbiAgICovXG5cbi8qIFRoZSBpZHMgb2YgYSB0ZXJtJ3MgYW5jZXN0b3JzIGluIHRoZSBBU1QgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYW5jZXN0b3JzID0gbGlzdChJZC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9pbmNvbnNpc3RlbnQgPVxuICAvKiBTZWxmIHR5cGUgKHN5bikgaW5jb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZSAoYW5hKSAqL1xuICB8IEV4cGVjdGF0aW9uKHtcbiAgICAgIGFuYTogVHlwLnQsXG4gICAgICBzeW46IFR5cC50LFxuICAgIH0pXG4gIC8qIEluY29uc2lzdGVudCBtYXRjaCBvciBsaXN0bGl0ICovXG4gIHwgSW50ZXJuYWwobGlzdChUeXAudCkpXG4gIC8qIEJhZCBmdW5jdGlvbiBwb3NpdGlvbiAqL1xuICB8IFdpdGhBcnJvdyhUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3Jfbm9fdHlwZSA9XG4gIC8qIEludmFsaWQgZXhwcmVzc2lvbiB0b2tlbiwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgQmFkVG9rZW4oVG9rZW4udClcbiAgLyogRW1wdHkgYXBwbGljYXRpb24gb2YgZnVuY3Rpb24gd2l0aCBpbmNvbnNpc3RlbnQgdHlwZSAqL1xuICB8IEJhZFRyaXZBcChUeXAudClcbiAgLyogU3VtIGNvbnN0cnVjdG9yIG5laXRlciBib3VuZCBub3IgaW4gYW5hIHR5cGUgKi9cbiAgfCBGcmVlQ29uc3RydWN0b3IoQ29uc3RydWN0b3IudCk7XG5cbi8qIEVycm9ycyB3aGljaCBjYW4gYXBwbHkgdG8gZWl0aGVyIGV4cHJlc3Npb24gb3IgcGF0dGVybnMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3JfY29tbW9uID1cbiAgLyogVW5kZXJkZXRlcm1pbmVkOiBObyB0eXBlIGNhbiBiZSBhc3NpZ25lZCAqL1xuICB8IE5vVHlwZShlcnJvcl9ub190eXBlKVxuICAvKiBPdmVyZGV0ZXJtaW5lZDogQ29uZmxpY3RpbmcgdHlwZSBleHBlY3RhdGlvbnMgKi9cbiAgfCBJbmNvbnNpc3RlbnQoZXJyb3JfaW5jb25zaXN0ZW50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9leHAgPVxuICB8IEZyZWVWYXJpYWJsZShWYXIudCkgLyogVW5ib3VuZCB2YXJpYWJsZSAobm90IGluIHR5cGluZyBjb250ZXh0KSAqL1xuICB8IFVudXNlZERlZmVycmFsXG4gIHwgQmFkUGFydGlhbEFwKFNlbGYuZXJyb3JfcGFydGlhbF9hcClcbiAgfCBDb21tb24oZXJyb3JfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9wYXQgPVxuICB8IEV4cGVjdGVkQ29uc3RydWN0b3IgLyogT25seSBjb25zdHJ1dG9ycyBjYW4gYmUgYXBwbGllZCAqL1xuICB8IENvbW1vbihlcnJvcl9jb21tb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9rX2FuYSA9XG4gIC8qIFRoZSBleHBlY3RlZCAoYW5hKSB0eXBlIGFuZCB0aGUgc2VsZiAoc3luKSB0eXBlIGFyZVxuICAgICBjb25zaXN0ZW50LCBhcyB3aXRuZXNzZWQgYnkgdGhlaXIgam9pbnQgdHlwZSAoam9pbikgKi9cbiAgfCBDb25zaXN0ZW50KHtcbiAgICAgIGFuYTogVHlwLnQsXG4gICAgICBzeW46IFR5cC50LFxuICAgICAgam9pbjogVHlwLnQsXG4gICAgfSlcbiAgLyogQSBtYXRjaCBleHByZXNzaW9uIG9yIGxpc3QgbGl0ZXJhbCB3aGljaCwgaW4gc3ludGhldGljIHBvc2l0aW9uLFxuICAgICB3b3VsZCBiZSBtYXJrZWQgYXMgaW50ZXJuYWxseSBpbmNvbnNpc3RlbnQsIGJ1dCBpcyBjb25zaWRlcmVkXG4gICAgIGZpbmUgYXMgdGhlIGV4cGVjdGVkIHR5cGUgcHJvdmlkZXMgYSBjb25zaXN0ZW50IGxvd2VyIGJvdW5kXG4gICAgIChvZnRlbiBVbmtub3duKSBmb3IgdGhlIHR5cGVzIG9mIHRoZSBicmFuY2hlcy9lbGVtZW50cyAqL1xuICB8IEludGVybmFsbHlJbmNvbnNpc3RlbnQoe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIG5vam9pbjogbGlzdChUeXAudCksXG4gICAgfSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfY29tbW9uID1cbiAgfCBTeW4oVHlwLnQpXG4gIHwgQW5hKG9rX2FuYSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfZXhwID1cbiAgfCBBbmFEZWZlcnJhbENvbnNpc3RlbnQoVHlwLnQpXG4gIHwgQ29tbW9uKG9rX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfcGF0ID0gb2tfY29tbW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c19jb21tb24gPVxuICB8IEluSG9sZShlcnJvcl9jb21tb24pXG4gIHwgTm90SW5Ib2xlKG9rX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX2V4cCA9XG4gIHwgSW5Ib2xlKGVycm9yX2V4cClcbiAgfCBOb3RJbkhvbGUob2tfZXhwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfcGF0ID1cbiAgfCBJbkhvbGUoZXJyb3JfcGF0KVxuICB8IE5vdEluSG9sZShva19wYXQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c192YXJpYW50ID1cbiAgfCBVbmlxdWVcbiAgfCBEdXBsaWNhdGU7XG5cbi8qIEV4cGVjdGF0aW9uIGltcG9zZWQgb24gYSB0eXBlIGJ5IHRoZSBwYXJlbnQgZm9ybS5cbiAgIFRPRE86IFRoaXMgaXMgZnVuZGFtZW50YWxseSBzeW50YWN0aWMgYW5kIHNob3VsZFxuICAgZXZlbnR1YWxseSBiZSByZWltcGxlbWV0ZWQgdmlhIGEgc2VwZXJhdGUgc29ydCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBfZXhwZWN0cyA9XG4gIHwgVHlwZUV4cGVjdGVkXG4gIHwgQ29uc3RydWN0b3JFeHBlY3RlZChzdGF0dXNfdmFyaWFudCwgVHlwLnQpXG4gIHwgVmFyaWFudEV4cGVjdGVkKHN0YXR1c192YXJpYW50LCBUeXAudCk7XG5cbi8qIFR5cGUgdGVybSBlcnJvcnNcbiAgIFRPRE86IFRoZSB0aHJlZSBhZGRpdGlvbmFsIGVycm9ycyBzdGF0dXNlc1xuICAgYXJlIGZ1bmRhbWVudGFsbHkgc3ludGFjdGljIGFuZCBzaG91bGQgd2hlblxuICAgcG9zc2libGUgYmUgcmVpbXBsZW1ldGVkIHZpYSBhIHNlcGVyYXRlIHNvcnQgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3JfdHlwID1cbiAgfCBCYWRUb2tlbihUb2tlbi50KSAvKiBJbnZhbGlkIHRva2VuLCB0cmVhdGVkIGFzIHR5cGUgaG9sZSAqL1xuICB8IEZyZWVUeXBlVmFyaWFibGUoc3RyaW5nKSAvKiBGcmVlIHR5cGUgdmFyaWFibGUgKi9cbiAgfCBEdXBsaWNhdGVDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rvci50KSAvKiBEdXBsaWNhdGUgY3RyIGluIHNhbWUgc3VtICovXG4gIHwgV2FudFR5cGVGb3VuZEFwXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRUeXBlKFR5cC50KVxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kQXA7XG5cbi8qIFR5cGUgb2sgc3RhdHVzZXMgZm9yIGN1cnNvciBpbnNwZWN0b3IgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfdHlwID1cbiAgfCBWYXJpYW50KENvbnN0cnVjdG9yLnQsIFR5cC50KVxuICB8IFZhcmlhbnRJbmNvbXBsZXRlKFR5cC50KVxuICB8IFR5cGVBbGlhcyhzdHJpbmcsIFR5cC50KVxuICB8IFR5cGUoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c190eXAgPVxuICB8IEluSG9sZShlcnJvcl90eXApXG4gIHwgTm90SW5Ib2xlKG9rX3R5cCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwZV92YXJfZXJyID1cbiAgfCBPdGhlclxuICB8IE5vdENhcGl0YWxpemVkO1xuXG4vKiBXaGF0IGFyZSB3ZSBzaGFkb3dpbmc/ICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNoYWRvd19zcmMgPVxuICB8IEJhc2VUeXBcbiAgfCBUeUFsaWFzXG4gIHwgVHlWYXI7XG5cbi8qIFR5cGUgcGF0dGVybiB0ZXJtIGVycm9ycyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl90cGF0ID1cbiAgfCBTaGFkb3dzVHlwZShzdHJpbmcsIHNoYWRvd19zcmMpXG4gIHwgTm90QVZhcih0eXBlX3Zhcl9lcnIpO1xuXG4vKiBUeXBlIHBhdHRlcm4gb2sgc3RhdHVzZXMgZm9yIGN1cnNvciBpbnNwZWN0b3IgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfdHBhdCA9XG4gIHwgRW1wdHlcbiAgfCBWYXIoc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfdHBhdCA9XG4gIHwgTm90SW5Ib2xlKG9rX3RwYXQpXG4gIHwgSW5Ib2xlKGVycm9yX3RwYXQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cCA9IHtcbiAgdGVybTogVUV4cC50LCAvKiBUaGUgdGVybSB1bmRlciBjb25zaWRlcmF0aW9uICovXG4gIGFuY2VzdG9ycywgLyogQXNjZW5kaW5nIGxpc3Qgb2YgY29udGFpbmluZyB0ZXJtIGlkcyAqL1xuICBjdHg6IEN0eC50LCAvKiBUeXBpbmcgY29udGV4dCBmb3IgdGhlIHRlcm0gKi9cbiAgbW9kZTogTW9kZS50LCAvKiBQYXJlbnRhbCB0eXBlIGV4cGVjdGF0aW9ucyAgKi9cbiAgc2VsZjogU2VsZi5leHAsIC8qIEV4cGVjdGF0aW9uLWluZGVwZW5kZW50IHR5cGUgaW5mbyAqL1xuICBjb19jdHg6IENvQ3R4LnQsIC8qIExvY2FsbHkgZnJlZSB2YXJpYWJsZXMgKi9cbiAgY2xzOiBDbHMudCwgLyogREVSSVZFRDogU3ludGF4IGNsYXNzIChpLmUuIGZvcm0gbmFtZSkgKi9cbiAgc3RhdHVzOiBzdGF0dXNfZXhwLCAvKiBERVJJVkVEOiBPay9FcnJvciBzdGF0dXNlcyBmb3IgZGlzcGxheSAqL1xuICB0eTogVHlwLnQgLyogREVSSVZFRDogVHlwZSBhZnRlciBub25lbXB0eSBob2xlIGZpeGluZyAqL1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwYXQgPSB7XG4gIHRlcm06IFVQYXQudCxcbiAgYW5jZXN0b3JzLFxuICBjdHg6IEN0eC50LFxuICBjb19jdHg6IENvQ3R4LnQsXG4gIHByZXZfc3luc3dpdGNoOiBvcHRpb24oVHlwLnQpLCAvLyBJZiBhIHBhdHRlcm4gaXMgZmlyc3Qgc3ludGhlc2l6ZWQsIHRoZW4gYW5hbHlzZWQsIHRoZSBpbml0aWFsIHN5biBpcyBzdG9yZWQgaGVyZS5cbiAgbW9kZTogTW9kZS50LFxuICBzZWxmOiBTZWxmLnBhdCxcbiAgY2xzOiBDbHMudCxcbiAgc3RhdHVzOiBzdGF0dXNfcGF0LFxuICB0eTogVHlwLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR5cCA9IHtcbiAgdGVybTogVVR5cC50LFxuICBhbmNlc3RvcnMsXG4gIGN0eDogQ3R4LnQsXG4gIGV4cGVjdHM6IHR5cF9leHBlY3RzLFxuICBjbHM6IENscy50LFxuICBzdGF0dXM6IHN0YXR1c190eXAsXG4gIHR5OiBUeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHBhdCA9IHtcbiAgdGVybTogVFBhdC50LFxuICBhbmNlc3RvcnMsXG4gIGN0eDogQ3R4LnQsXG4gIGNsczogQ2xzLnQsXG4gIHN0YXR1czogc3RhdHVzX3RwYXQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlY29uZGFyeSA9IHtcbiAgaWQ6IElkLnQsIC8vIElkIG9mIHRlcm0gc3RhdGljIGluZm8gaXMgc291cmNlZCBmcm9tXG4gIGNsczogQ2xzLnQsIC8vIENscyBvZiBzZWNvbmRhcnksIG5vdCBzb3VyY2UgdGVybVxuICBzb3J0OiBTb3J0LnQsIC8vIGZyb20gc291cmNlIHRlcm1cbiAgY3R4OiBDdHgudCAvLyBmcm9tIHNvdXJjZSB0ZXJtXG59O1xuXG4vKiBUaGUgc3RhdGljIGluZm9ybWF0aW9uIGNvbGxhdGVkIGZvciBlYWNoIHRlcm0gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSW5mb0V4cChleHApXG4gIHwgSW5mb1BhdChwYXQpXG4gIHwgSW5mb1R5cCh0eXApXG4gIHwgSW5mb1RQYXQodHBhdClcbiAgfCBTZWNvbmRhcnkoc2Vjb25kYXJ5KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvciA9XG4gIHwgRXhwKGVycm9yX2V4cClcbiAgfCBQYXQoZXJyb3JfcGF0KVxuICB8IFR5cChlcnJvcl90eXApXG4gIHwgVFBhdChlcnJvcl90cGF0KTtcblxubGV0IHNvcnRfb2Y6IHQgPT4gU29ydC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cChfKSA9PiBFeHBcbiAgfCBJbmZvUGF0KF8pID0+IFBhdFxuICB8IEluZm9UeXAoXykgPT4gVHlwXG4gIHwgSW5mb1RQYXQoXykgPT4gVFBhdFxuICB8IFNlY29uZGFyeShzKSA9PiBzLnNvcnQ7XG5cbmxldCBjbHNfb2Y6IHQgPT4gQ2xzLnQgPVxuICBmdW5cbiAgfCBJbmZvRXhwKHtjbHMsIF99KVxuICB8IEluZm9QYXQoe2NscywgX30pXG4gIHwgSW5mb1R5cCh7Y2xzLCBffSlcbiAgfCBJbmZvVFBhdCh7Y2xzLCBffSlcbiAgfCBTZWNvbmRhcnkoe2NscywgX30pID0+IGNscztcblxubGV0IGN0eF9vZjogdCA9PiBDdHgudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2N0eCwgX30pXG4gIHwgSW5mb1BhdCh7Y3R4LCBffSlcbiAgfCBJbmZvVHlwKHtjdHgsIF99KVxuICB8IEluZm9UUGF0KHtjdHgsIF99KVxuICB8IFNlY29uZGFyeSh7Y3R4LCBffSkgPT4gY3R4O1xuXG5sZXQgYW5jZXN0b3JzX29mOiB0ID0+IGFuY2VzdG9ycyA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2FuY2VzdG9ycywgX30pXG4gIHwgSW5mb1BhdCh7YW5jZXN0b3JzLCBffSlcbiAgfCBJbmZvVHlwKHthbmNlc3RvcnMsIF99KVxuICB8IEluZm9UUGF0KHthbmNlc3RvcnMsIF99KSA9PiBhbmNlc3RvcnNcbiAgfCBTZWNvbmRhcnkoXykgPT4gW107IC8vVE9ET1xuXG5sZXQgaWRfb2Y6IHQgPT4gSWQudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoaSkgPT4gRXhwLnJlcF9pZChpLnRlcm0pXG4gIHwgSW5mb1BhdChpKSA9PiBQYXQucmVwX2lkKGkudGVybSlcbiAgfCBJbmZvVHlwKGkpID0+IFR5cC5yZXBfaWQoaS50ZXJtKVxuICB8IEluZm9UUGF0KGkpID0+IFRQYXQucmVwX2lkKGkudGVybSlcbiAgfCBTZWNvbmRhcnkocykgPT4gcy5pZDtcblxubGV0IGVycm9yX29mOiB0ID0+IG9wdGlvbihlcnJvcikgPVxuICBmdW5cbiAgfCBJbmZvRXhwKHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pXG4gIHwgSW5mb1BhdCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KVxuICB8IEluZm9UeXAoe3N0YXR1czogTm90SW5Ib2xlKF8pLCBffSlcbiAgfCBJbmZvVFBhdCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KSA9PiBOb25lXG4gIHwgSW5mb0V4cCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoRXhwKGVycikpXG4gIHwgSW5mb1BhdCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoUGF0KGVycikpXG4gIHwgSW5mb1R5cCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoVHlwKGVycikpXG4gIHwgSW5mb1RQYXQoe3N0YXR1czogSW5Ib2xlKGVyciksIF99KSA9PiBTb21lKFRQYXQoZXJyKSlcbiAgfCBTZWNvbmRhcnkoXykgPT4gTm9uZTtcblxubGV0IGV4cF9jb19jdHg6IGV4cCA9PiBDb0N0eC50ID0gKHtjb19jdHgsIF99KSA9PiBjb19jdHg7XG5sZXQgZXhwX3R5OiBleHAgPT4gVHlwLnQgPSAoe3R5LCBffSkgPT4gdHk7XG5sZXQgcGF0X2N0eDogcGF0ID0+IEN0eC50ID0gKHtjdHgsIF99KSA9PiBjdHg7XG5sZXQgcGF0X3R5OiBwYXQgPT4gVHlwLnQgPSAoe3R5LCBffSkgPT4gdHk7XG5cbmxldCByZWMgc3RhdHVzX2NvbW1vbiA9XG4gICAgICAgIChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYudCk6IHN0YXR1c19jb21tb24gPT5cbiAgc3dpdGNoIChzZWxmLCBtb2RlKSB7XG4gIHwgKEp1c3QodHkpLCBTeW4pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICB8IChKdXN0KHR5KSwgU3luRnVuKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBUeXAuam9pbl9maXgoXG4gICAgICAgIGN0eCxcbiAgICAgICAgQXJyb3coXG4gICAgICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICAgIClcbiAgICAgICAgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICAgIHR5LFxuICAgICAgKVxuICAgICkge1xuICAgIHwgU29tZShfKSA9PiBOb3RJbkhvbGUoU3luKHR5KSlcbiAgICB8IE5vbmUgPT4gSW5Ib2xlKEluY29uc2lzdGVudChXaXRoQXJyb3codHkpKSlcbiAgICB9XG4gIHwgKEp1c3QodHkpLCBTeW5UeXBGdW4pID0+XG4gICAgc3dpdGNoIChcbiAgICAgIFR5cC5qb2luX2ZpeChcbiAgICAgICAgY3R4LFxuICAgICAgICBGb3JhbGwoVmFyKFwiP1wiKSB8PiBUUGF0LmZyZXNoLCBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdClcbiAgICAgICAgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICAgIHR5LFxuICAgICAgKVxuICAgICkge1xuICAgIHwgU29tZShfKSA9PiBOb3RJbkhvbGUoU3luKHR5KSlcbiAgICB8IE5vbmUgPT4gSW5Ib2xlKEluY29uc2lzdGVudChXaXRoQXJyb3codHkpKSlcbiAgICB9XG4gIHwgKEp1c3Qoc3luKSwgQW5hKGFuYSkpID0+XG4gICAgc3dpdGNoIChcbiAgICAgIFR5cC5qb2luX2ZpeChcbiAgICAgICAgY3R4LFxuICAgICAgICBhbmEsXG4gICAgICAgIHN5biAvKiBOb3RlOiB0aGUgb3JkZXJpbmcgb2YgYW5hLCBzeW4gbWF0dGVycyAqL1xuICAgICAgKVxuICAgICkge1xuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHtzeW4sIGFuYX0pKSlcbiAgICB8IFNvbWUoam9pbikgPT4gTm90SW5Ib2xlKEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgam9pbn0pKSlcbiAgICB9XG4gIHwgKElzQ29uc3RydWN0b3Ioe25hbWUsIHN5bl90eX0pLCBfKSA9PlxuICAgIC8qIElmIGEgY3RyIGlzIGJlaW5nIGFuYWx5emVkIGFnYWluc3QgKGFuIGFycm93IHR5cGUgcmV0dXJuaW5nKVxuICAgICAgIGEgc3VtIHR5cGUgaGF2aW5nIHRoYXQgY3RyIGFzIGEgdmFyaWFudCwgaXRzIHNlbGYgdHlwZSBpc1xuICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgZGV0ZXJtaW5lZCBieSB0aGUgc3VtIHR5cGU7IG90aGVyd2lzZSxcbiAgICAgICBjaGVjayB0aGUgY29udGV4dCBmb3IgdGhlIGN0cidzIHR5cGUgKi9cbiAgICBzd2l0Y2ggKE1vZGUuY3RyX2FuYV90eXAoY3R4LCBtb2RlLCBuYW1lKSwgc3luX3R5KSB7XG4gICAgfCAoU29tZShhbmFfdHkpLCBfKSA9PiBzdGF0dXNfY29tbW9uKGN0eCwgbW9kZSwgSnVzdChhbmFfdHkpKVxuICAgIHwgKF8sIFNvbWUoc3luX3R5KSkgPT4gc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIEp1c3Qoc3luX3R5KSlcbiAgICB8IF8gPT4gSW5Ib2xlKE5vVHlwZShGcmVlQ29uc3RydWN0b3IobmFtZSkpKVxuICAgIH1cbiAgfCAoQmFkVG9rZW4obmFtZSksIF8pID0+IEluSG9sZShOb1R5cGUoQmFkVG9rZW4obmFtZSkpKVxuICB8IChCYWRUcml2QXAodHkpLCBfKSA9PiBJbkhvbGUoTm9UeXBlKEJhZFRyaXZBcCh0eSkpKVxuICB8IChJc011bHRpLCBfKSA9PiBOb3RJbkhvbGUoU3luKFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgfCAoTm9Kb2luKHdyYXAsIHR5cyksIEFuYShhbmEpKSA9PlxuICAgIGxldCBzeW46IFR5cC50ID0gU2VsZi5qb2luX29mKHdyYXAsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KTtcbiAgICBzd2l0Y2ggKFR5cC5qb2luX2ZpeChjdHgsIGFuYSwgc3luKSkge1xuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHthbmEsIHN5bn0pKSlcbiAgICB8IFNvbWUoXykgPT5cbiAgICAgIE5vdEluSG9sZShcbiAgICAgICAgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgbm9qb2luOiBUeXAub2Zfc291cmNlKHR5cyl9KSksXG4gICAgICApXG4gICAgfTtcbiAgfCAoTm9Kb2luKF8sIHR5cyksIFN5biB8IFN5bkZ1biB8IFN5blR5cEZ1bikgPT5cbiAgICBJbkhvbGUoSW5jb25zaXN0ZW50KEludGVybmFsKFR5cC5vZl9zb3VyY2UodHlzKSkpKVxuICB9O1xuXG5sZXQgc3RhdHVzX3BhdCA9IChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYucGF0KTogc3RhdHVzX3BhdCA9PlxuICBzd2l0Y2ggKG1vZGUsIHNlbGYpIHtcbiAgfCAoU3luIHwgU3luVHlwRnVuIHwgQW5hKF8pLCBDb21tb24oc2VsZl9wYXQpKVxuICB8IChTeW5GdW4sIENvbW1vbihJc0NvbnN0cnVjdG9yKF8pIGFzIHNlbGZfcGF0KSkgPT5cbiAgICAvKiBMaXR0bGUgYml0IG9mIGEgaGFjay4gQW55dGhpbmcgb3RoZXIgdGhhbiBhIGJvdW5kIGN0ciB3aWxsLCBpblxuICAgICAgIGZ1bmN0aW9uIHBvc2l0aW9uLCBoYXZlIFN5bkZ1biBtb2RlIChzZWUgVHlwLmFwX21vZGUpLiBTaW5jZSB3ZVxuICAgICAgIGFyZSBwcm9oaWJpdGluZyBub24tY3RycyBpbiBjdHIgYXBwbGljYXRpb25zIGluIHBhdHRlcm5zIGZvciBub3csXG4gICAgICAgd2UgY2F0Y2ggdGhlbSBoZXJlLCBkaXZlcnRpbmcgdG8gYW4gRXhwZWN0ZWRDb25zdHJ1Y3RvciBlcnJvci4gQnV0IHdlXG4gICAgICAgYXZvaWQgY2FwdHVyaW5nIHRoZSBzZWNvbmQgY2FzZSBhYm92ZSwgYXMgdGhlc2Ugd2lsbCB1bHRpbWF0ZWx5XG4gICAgICAgZ2V0IGEgKG1vcmUgcHJlY2lzZSkgdW5ib3VuZCBjdHIgIHZpYSBzdGF0dXNfY29tbW9uICovXG4gICAgc3dpdGNoIChzdGF0dXNfY29tbW9uKGN0eCwgbW9kZSwgc2VsZl9wYXQpKSB7XG4gICAgfCBOb3RJbkhvbGUob2tfZXhwKSA9PiBOb3RJbkhvbGUob2tfZXhwKVxuICAgIHwgSW5Ib2xlKGVycl9wYXQpID0+IEluSG9sZShDb21tb24oZXJyX3BhdCkpXG4gICAgfVxuICB8IChTeW5GdW4sIF8pID0+IEluSG9sZShFeHBlY3RlZENvbnN0cnVjdG9yKVxuICB9O1xuXG4vKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBvciBwYXR0ZXJuIGlzIGluIGFuIGVycm9yIGhvbGUsXG4gICBkZXBlbmRpbmcgb24gdGhlIG1vZGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIGV4cGVjdGF0aW9ucyBvZiB0aGVcbiAgIHN1cnJvdW5kaW5nIHN5bnRhY3RpYyBjb250ZXh0LCBhbmQgdGhlIHNlbGYgd2hpY2ggcmVwcmVzZW50cyB0aGVcbiAgIG1ha2V1cCBvZiB0aGUgZXhwcmVzc2lvbiAvIHBhdHRlcm4gaXRzZWxmLiAqL1xubGV0IHN0YXR1c19leHAgPSAoY3R4OiBDdHgudCwgbW9kZTogTW9kZS50LCBzZWxmOiBTZWxmLmV4cCk6IHN0YXR1c19leHAgPT5cbiAgc3dpdGNoIChzZWxmLCBtb2RlKSB7XG4gIHwgKEZyZWUobmFtZSksIF8pID0+IEluSG9sZShGcmVlVmFyaWFibGUobmFtZSkpXG4gIHwgKElzRGVmZXJyYWwoSW5BcCksIEFuYShhbmEpKSA9PiBOb3RJbkhvbGUoQW5hRGVmZXJyYWxDb25zaXN0ZW50KGFuYSkpXG4gIHwgKElzRGVmZXJyYWwoXyksIF8pID0+IEluSG9sZShVbnVzZWREZWZlcnJhbClcbiAgfCAoSXNCYWRQYXJ0aWFsQXAoXyBhcyBpbmZvKSwgXykgPT4gSW5Ib2xlKEJhZFBhcnRpYWxBcChpbmZvKSlcbiAgfCAoQ29tbW9uKHNlbGZfcGF0KSwgXykgPT5cbiAgICBzd2l0Y2ggKHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBzZWxmX3BhdCkpIHtcbiAgICB8IE5vdEluSG9sZShva19leHApID0+IE5vdEluSG9sZShDb21tb24ob2tfZXhwKSlcbiAgICB8IEluSG9sZShlcnJfcGF0KSA9PiBJbkhvbGUoQ29tbW9uKGVycl9wYXQpKVxuICAgIH1cbiAgfTtcblxuLyogVGhpcyBsb2dpYyBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0eXBlIHNob3VsZCBiZSBwdXRcbiAgIGluIGEgaG9sZSBvciBub3QuIEl0J3MgbW9zdGx5IHN5bnRhY3RpYywgZGV0ZXJtaW5pbmdcbiAgIHRoZSBwcm9wZXIgcGxhY2VtZW50IG9mIHN1bSB0eXBlIHZhcmlhbnRzIGFuZCBjdHJzO1xuICAgdGhpcyBzaG91bGQgYmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgZnV0dXJlIGFzIGFcbiAgIHNlcGFyYXRlIHNvcnQuIEl0IGFsc28gZGV0ZXJtaW5lcyBzZW1hbnRpYyBwcm9wZXJ0aWVzXG4gICBzdWNoIGFzIHdoZXRoZXIgb3Igbm90IGEgdHlwZSB2YXJpYWJsZSByZWZlcmVuY2UgaXNcbiAgIGZyZWUsIGFuZCB3aGV0aGVyIGEgY3RyIG5hbWUgaXMgYSBkdXBlLiAqL1xubGV0IHN0YXR1c190eXAgPVxuICAgIChjdHg6IEN0eC50LCBleHBlY3RzOiB0eXBfZXhwZWN0cywgdGVybTogVHlwLnQsIHR5OiBUeXAudCk6IHN0YXR1c190eXAgPT5cbiAgc3dpdGNoICh0ZXJtLnRlcm0pIHtcbiAgfCBVbmtub3duKEhvbGUoSW52YWxpZCh0b2tlbikpKSA9PiBJbkhvbGUoQmFkVG9rZW4odG9rZW4pKVxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PiBOb3RJbkhvbGUoVHlwZSh0eSkpXG4gIHwgVmFyKG5hbWUpID0+XG4gICAgc3dpdGNoIChleHBlY3RzKSB7XG4gICAgfCBWYXJpYW50RXhwZWN0ZWQoVW5pcXVlLCBzdW1fdHkpXG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKFVuaXF1ZSwgc3VtX3R5KSA9PlxuICAgICAgTm90SW5Ib2xlKFZhcmlhbnQobmFtZSwgc3VtX3R5KSlcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChEdXBsaWNhdGUsIF8pXG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKER1cGxpY2F0ZSwgXykgPT5cbiAgICAgIEluSG9sZShEdXBsaWNhdGVDb25zdHJ1Y3RvcihuYW1lKSlcbiAgICB8IFR5cGVFeHBlY3RlZCA9PlxuICAgICAgc3dpdGNoIChDdHguaXNfYWxpYXMoY3R4LCBuYW1lKSkge1xuICAgICAgfCBmYWxzZSA9PlxuICAgICAgICBzd2l0Y2ggKEN0eC5pc19hYnN0cmFjdChjdHgsIG5hbWUpKSB7XG4gICAgICAgIHwgZmFsc2UgPT4gSW5Ib2xlKEZyZWVUeXBlVmFyaWFibGUobmFtZSkpXG4gICAgICAgIHwgdHJ1ZSA9PiBOb3RJbkhvbGUoVHlwZShWYXIobmFtZSkgfD4gVHlwLm1rX2Zhc3QpKVxuICAgICAgICB9XG4gICAgICB8IHRydWUgPT4gTm90SW5Ib2xlKFR5cGVBbGlhcyhuYW1lLCBUeXAud2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpXG4gICAgICB9XG4gICAgfVxuICB8IEFwKHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChzdGF0dXNfdmFyaWFudCwgdHlfdmFyaWFudCkgPT5cbiAgICAgIGxldCB0eV9pbiA9IFVUeXAudG9fdHlwKGN0eCwgdDIpO1xuICAgICAgc3dpdGNoIChzdGF0dXNfdmFyaWFudCwgdDEudGVybSkge1xuICAgICAgfCAoVW5pcXVlLCBWYXIobmFtZSkpID0+XG4gICAgICAgIE5vdEluSG9sZShWYXJpYW50KG5hbWUsIEFycm93KHR5X2luLCB0eV92YXJpYW50KSB8PiBUeXAubWtfZmFzdCkpXG4gICAgICB8IF8gPT5cbiAgICAgICAgTm90SW5Ib2xlKFxuICAgICAgICAgIFZhcmlhbnRJbmNvbXBsZXRlKEFycm93KHR5X2luLCB0eV92YXJpYW50KSB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKF8pID0+IEluSG9sZShXYW50Q29uc3RydWN0b3JGb3VuZEFwKVxuICAgIHwgVHlwZUV4cGVjdGVkID0+IEluSG9sZShXYW50VHlwZUZvdW5kQXApXG4gICAgfVxuICB8IF8gPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFR5cGVFeHBlY3RlZCA9PiBOb3RJbkhvbGUoVHlwZSh0eSkpXG4gICAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKF8pXG4gICAgfCBWYXJpYW50RXhwZWN0ZWQoXykgPT4gSW5Ib2xlKFdhbnRDb25zdHJ1Y3RvckZvdW5kVHlwZSh0eSkpXG4gICAgfVxuICB9O1xuXG5sZXQgc3RhdHVzX3RwYXQgPSAoY3R4OiBDdHgudCwgdXRwYXQ6IFRQYXQudCk6IHN0YXR1c190cGF0ID0+XG4gIHN3aXRjaCAodXRwYXQudGVybSkge1xuICB8IEVtcHR5SG9sZSA9PiBOb3RJbkhvbGUoRW1wdHkpXG4gIHwgVmFyKG5hbWUpIHdoZW4gQ3R4LnNoYWRvd3NfdHlwKGN0eCwgbmFtZSkgPT5cbiAgICBsZXQgZiA9IHNyYyA9PiBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSwgc3JjKSk7XG4gICAgaWYgKEZvcm0uaXNfYmFzZV90eXAobmFtZSkpIHtcbiAgICAgIGYoQmFzZVR5cCk7XG4gICAgfSBlbHNlIGlmIChDdHguaXNfYWxpYXMoY3R4LCBuYW1lKSkge1xuICAgICAgZihUeUFsaWFzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZihUeVZhcik7XG4gICAgfTtcbiAgfCBWYXIobmFtZSkgPT4gTm90SW5Ib2xlKFZhcihuYW1lKSlcbiAgfCBJbnZhbGlkKF8pID0+IEluSG9sZShOb3RBVmFyKE5vdENhcGl0YWxpemVkKSlcbiAgfCBNdWx0aUhvbGUoXykgPT4gSW5Ib2xlKE5vdEFWYXIoT3RoZXIpKVxuICB9O1xuXG4vKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW55IHRlcm0gaXMgaW4gYW4gZXJyb3IgaG9sZS4gKi9cbmxldCBpc19lcnJvciA9IChjaTogdCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgSW5mb0V4cCh7bW9kZSwgc2VsZiwgY3R4LCBffSkgPT5cbiAgICBzd2l0Y2ggKHN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBJbmZvUGF0KHttb2RlLCBzZWxmLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9UeXAoe2V4cGVjdHMsIGN0eCwgdGVybSwgdHksIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX3R5cChjdHgsIGV4cGVjdHMsIHRlcm0sIHR5KSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBJbmZvVFBhdCh7dGVybSwgY3R4LCBffSkgPT5cbiAgICBzd2l0Y2ggKHN0YXR1c190cGF0KGN0eCwgdGVybSkpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgU2Vjb25kYXJ5KF8pID0+IGZhbHNlXG4gIH07XG59O1xuXG4vKiBEZXRlcm1pbmVkIHRoZSB0eXBlIG9mIGFuIGV4cHJlc3Npb24gb3IgcGF0dGVybiAnYWZ0ZXIgaG9sZSBmaXhpbmcnO1xuICAgdGhhdCBpcywgc29tZSBpbGwtdHlwZWQgdGVybXMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgJ3dyYXBwZWQgaW5cbiAgIG5vbi1lbXB0eSBob2xlcycsIGkuZS4gYXNzaWduZWQgVW5rbm93biB0eXBlLiAqL1xubGV0IGZpeGVkX3R5cF9vazogb2tfcGF0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgU3luKHN5bikgPT4gc3luXG4gIHwgQW5hKENvbnNpc3RlbnQoe2pvaW4sIF99KSkgPT4gam9pblxuICB8IEFuYShJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHthbmEsIF99KSkgPT4gYW5hO1xuXG5sZXQgZml4ZWRfdHlwX2Vycl9jb21tb246IGVycm9yX2NvbW1vbiA9PiBUeXAudCA9XG4gIGZ1blxuICB8IE5vVHlwZShfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IEluY29uc2lzdGVudChFeHBlY3RhdGlvbih7YW5hLCBffSkpID0+IGFuYVxuICB8IEluY29uc2lzdGVudChJbnRlcm5hbChfKSkgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QgLy8gU2hvdWxkIHRoaXMgYmUgc29tZSBzb3J0IG9mIG1lZXQ/XG4gIHwgSW5jb25zaXN0ZW50KFdpdGhBcnJvdyhfKSkgPT5cbiAgICBBcnJvdyhcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgKVxuICAgIHw+IFR5cC5ta19mYXN0O1xuXG5sZXQgZml4ZWRfdHlwX2VycjogZXJyb3JfZXhwID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgRnJlZVZhcmlhYmxlKF8pID0+IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0XG4gIHwgVW51c2VkRGVmZXJyYWwgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBCYWRQYXJ0aWFsQXAoXykgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBDb21tb24oZXJyKSA9PiBmaXhlZF90eXBfZXJyX2NvbW1vbihlcnIpO1xuXG5sZXQgZml4ZWRfdHlwX2Vycl9wYXQ6IGVycm9yX3BhdCA9PiBUeXAudCA9XG4gIGZ1blxuICB8IEV4cGVjdGVkQ29uc3RydWN0b3IgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBDb21tb24oZXJyKSA9PiBmaXhlZF90eXBfZXJyX2NvbW1vbihlcnIpO1xuXG5sZXQgZml4ZWRfdHlwX3BhdCA9IChjdHgsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5wYXQpOiBUeXAudCA9PlxuICBzd2l0Y2ggKHN0YXR1c19wYXQoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IEluSG9sZShlcnIpID0+IGZpeGVkX3R5cF9lcnJfcGF0KGVycilcbiAgfCBOb3RJbkhvbGUob2spID0+IGZpeGVkX3R5cF9vayhvaylcbiAgfTtcblxubGV0IGZpeGVkX3R5cF9leHAgPSAoY3R4LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYuZXhwKTogVHlwLnQgPT5cbiAgc3dpdGNoIChzdGF0dXNfZXhwKGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgfCBJbkhvbGUoZXJyKSA9PiBmaXhlZF90eXBfZXJyKGVycilcbiAgfCBOb3RJbkhvbGUoQW5hRGVmZXJyYWxDb25zaXN0ZW50KGFuYSkpID0+IGFuYVxuICB8IE5vdEluSG9sZShDb21tb24ob2spKSA9PiBmaXhlZF90eXBfb2sob2spXG4gIH07XG5cbi8qIEFkZCBkZXJpdmFibGUgYXR0cmlidXRlcyBmb3IgZXhwcmVzc2lvbiB0ZXJtcyAqL1xubGV0IGRlcml2ZWRfZXhwID1cbiAgICAofnVleHA6IFVFeHAudCwgfmN0eCwgfm1vZGUsIH5hbmNlc3RvcnMsIH5zZWxmLCB+Y29fY3R4KTogZXhwID0+IHtcbiAgbGV0IGNscyA9IENscy5FeHAoVUV4cC5jbHNfb2ZfdGVybSh1ZXhwLnRlcm0pKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKTtcbiAgbGV0IHR5ID0gZml4ZWRfdHlwX2V4cChjdHgsIG1vZGUsIHNlbGYpO1xuICB7Y2xzLCBzZWxmLCB0eSwgbW9kZSwgc3RhdHVzLCBjdHgsIGNvX2N0eCwgYW5jZXN0b3JzLCB0ZXJtOiB1ZXhwfTtcbn07XG5cbi8qIEFkZCBkZXJpdmFibGUgYXR0cmlidXRlcyBmb3IgcGF0dGVybiB0ZXJtcyAqL1xubGV0IGRlcml2ZWRfcGF0ID1cbiAgICAofnVwYXQ6IFVQYXQudCwgfmN0eCwgfmNvX2N0eCwgfnByZXZfc3luc3dpdGNoLCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYpXG4gICAgOiBwYXQgPT4ge1xuICBsZXQgY2xzID0gQ2xzLlBhdChVUGF0LmNsc19vZl90ZXJtKHVwYXQudGVybSkpO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpO1xuICBsZXQgdHkgPSBmaXhlZF90eXBfcGF0KGN0eCwgbW9kZSwgc2VsZik7XG4gIHtcbiAgICBjbHMsXG4gICAgc2VsZixcbiAgICBwcmV2X3N5bnN3aXRjaCxcbiAgICBtb2RlLFxuICAgIHR5LFxuICAgIHN0YXR1cyxcbiAgICBjdHgsXG4gICAgY29fY3R4LFxuICAgIGFuY2VzdG9ycyxcbiAgICB0ZXJtOiB1cGF0LFxuICB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciB0eXBlcyAqL1xubGV0IGRlcml2ZWRfdHlwID0gKH51dHlwOiBVVHlwLnQsIH5jdHgsIH5hbmNlc3RvcnMsIH5leHBlY3RzKTogdHlwID0+IHtcbiAgbGV0IGNsczogQ2xzLnQgPVxuICAgIC8qIEhhY2sgdG8gaW1wcm92ZSBDSSBkaXNwbGF5ICovXG4gICAgc3dpdGNoIChleHBlY3RzLCBVVHlwLmNsc19vZl90ZXJtKHV0eXAudGVybSkpIHtcbiAgICB8IChWYXJpYW50RXhwZWN0ZWQoXykgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKF8pLCBWYXIpID0+XG4gICAgICBDbHMuVHlwKENvbnN0cnVjdG9yKVxuICAgIHwgKF8sIGNscykgPT4gQ2xzLlR5cChjbHMpXG4gICAgfTtcbiAgbGV0IHR5ID0gVVR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c190eXAoY3R4LCBleHBlY3RzLCB1dHlwLCB0eSk7XG4gIHtjbHMsIGN0eCwgYW5jZXN0b3JzLCBzdGF0dXMsIGV4cGVjdHMsIHR5LCB0ZXJtOiB1dHlwfTtcbn07XG5cbi8qIEFkZCBkZXJpdmFibGUgYXR0cmlidXRlcyBmb3IgdHlwZSBwYXR0ZXJucyAqL1xubGV0IGRlcml2ZWRfdHBhdCA9ICh+dXRwYXQ6IFRQYXQudCwgfmN0eCwgfmFuY2VzdG9ycyk6IHRwYXQgPT4ge1xuICBsZXQgY2xzID0gQ2xzLlRQYXQoVFBhdC5jbHNfb2ZfdGVybSh1dHBhdC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfdHBhdChjdHgsIHV0cGF0KTtcbiAge2NscywgYW5jZXN0b3JzLCBzdGF0dXMsIGN0eCwgdGVybTogdXRwYXR9O1xufTtcblxuLyogSWYgdGhlIGluZm8gcmVwcmVzZW50cyBzb21lIGtpbmQgb2YgbmFtZSBiaW5kaW5nIHdoaWNoXG4gICBleGlzdHMgaW4gdGhlIGNvbnRleHQsIHJldHVybiB0aGUgaWQgd2hlcmUgdGhlIGJpbmRpbmcgb2NjdXJzICovXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZSA9IChpbmZvOiB0KTogb3B0aW9uKElkLnQpID0+IHtcbiAgc3dpdGNoIChpbmZvKSB7XG4gIHwgSW5mb0V4cCh7dGVybToge3Rlcm06IFZhcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSk7XG4gICAgZW50cnkuaWQ7XG4gIHwgSW5mb0V4cCh7dGVybToge3Rlcm06IENvbnN0cnVjdG9yKG5hbWUpLCBffSwgY3R4LCBffSlcbiAgfCBJbmZvUGF0KHt0ZXJtOiB7dGVybTogQ29uc3RydWN0b3IobmFtZSksIF99LCBjdHgsIF99KSA9PlxuICAgIGxldCsgZW50cnkgPSBDdHgubG9va3VwX2N0cihjdHgsIG5hbWUpO1xuICAgIGVudHJ5LmlkO1xuICB8IEluZm9UeXAoe3Rlcm06IHt0ZXJtOiBWYXIobmFtZSksIF99LCBjdHgsIF99KSA9PlxuICAgIGxldCsgZW50cnkgPSBDdHgubG9va3VwX3R2YXIoY3R4LCBuYW1lKTtcbiAgICBlbnRyeS5pZDtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCB0eXBfaXNfY29uc3RydWN0b3JfZXhwZWN0ZWQgPSB0ID0+XG4gIHN3aXRjaCAodCkge1xuICB8IHtleHBlY3RzOiBDb25zdHJ1Y3RvckV4cGVjdGVkKF8pIHwgVmFyaWFudEV4cGVjdGVkKF8pLCBffSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuIiwib3BlbiBVdGlsO1xuXG5pbmNsdWRlIElkLk1hcDtcbnR5cGUgcmFuZ2UgPSAoUGllY2UudCwgUGllY2UudCk7XG50eXBlIG5vbnJlYyB0ID0gdChyYW5nZSk7XG5cbmxldCB1bmlvbiA9IHVuaW9uKChfLCByYW5nZSwgXykgPT4gU29tZShyYW5nZSkpO1xuXG4vKiBQRVJGOiBVcCB0byA1MCUgcmVkdWN0aW9uIGluIHNvbWUgY2FzZXMgYnkgbWVtb2l6aW5nXG4gKiB0aGlzIGZ1bmN0aW9uLiBNaWdodCBiZSBiZXR0ZXIgdGhvdWdoIHRvIGp1c3QgZG8gYW5cbiAqIHVubWVtb2l6ZWQgdHJhdmVyc2FsIGJ1aWxkaW5nIGEgaGFzaHRibCBhdm9pZGluZyB1bmlvbmluZy5cblxuICAgVE9ETyhhbmRyZXcpOiBDb25zaWRlciBzZXR0aW5nIGEgbGltaXQgZm9yIHRoZSBoYXNodGJsIHNpemUgKi9cbmxldCByYW5nZV9oYXNoOiBIYXNodGJsLnQoVGlsZS5zZWdtZW50LCBJZC5NYXAudChyYW5nZSkpID1cbiAgSGFzaHRibC5jcmVhdGUoMTAwMCk7XG5cbi8vIE5PVEU6IHRoaXMgY2FsY3VsYXRpb24gaXMgb3V0IG9mIHN5bmMgd2l0aFxuLy8gTWFrZVRlcm0sIHdoaWNoIG1hdGNoZXMgdGhpbmdzIGxpa2UgbGlzdCBicmFja2V0c1xuLy8gYW5kIGNhc2UuLi5lbmQgdG8gc2VwYXJhdG9ycyBpbnNpZGUgZWcgbGlzdCBjb21tYXNcbi8vIGFuZCBydWxlcyBgfCBwID0+YC4gdGhpcyBjYWxjdWxhdGlvbiBkb2VzIG5vdFxuLy8gaW5jbHVkZSB0aGUgY29udGFpbmVyIGluIHRoZSByYW5nZXMgZm9yIHRob3NlIGlubmVyXG4vLyBzZXBhcmF0b3JzLlxuLy8gVE9ETyhkKSBmaXggb3IgZGVyaXZlIGZyb20gb3RoZXIgaW5mb1xuLy9cbi8vIHRhaWwtcmVjdXJzaXZlIGluIG91dGVyIHJlY3Vyc2lvblxubGV0IHJlYyBtaycgPSAoc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChza2VsOiBTa2VsLnQpOiAocmFuZ2UsIHQpID0+IHtcbiAgICBsZXQgcm9vdCA9IFNrZWwucm9vdChza2VsKSB8PiBBYmEubWFwX2EoTGlzdC5udGgoc2VnKSk7XG4gICAgbGV0IHJvb3RfbCA9IEFiYS5maXJzdF9hKHJvb3QpO1xuICAgIGxldCByb290X3IgPSBBYmEubGFzdF9hKHJvb3QpO1xuICAgIGxldCAocmFuZ2UsIHVuaWNoaWxkX21hcCkgPVxuICAgICAgc3dpdGNoIChza2VsKSB7XG4gICAgICB8IE9wKF8pID0+ICgocm9vdF9sLCByb290X3IpLCBlbXB0eSlcbiAgICAgIHwgUHJlKF8sIHIpID0+XG4gICAgICAgIGxldCAoKF8sIHIpLCBtYXApID0gZ28ocik7XG4gICAgICAgICgocm9vdF9sLCByKSwgbWFwKTtcbiAgICAgIHwgUG9zdChsLCBfKSA9PlxuICAgICAgICBsZXQgKChsLCBfKSwgbWFwKSA9IGdvKGwpO1xuICAgICAgICAoKGwsIHJvb3RfciksIG1hcCk7XG4gICAgICB8IEJpbihsLCBfLCByKSA9PlxuICAgICAgICBsZXQgKChsLCBfKSwgbWFwX2wpID0gZ28obCk7XG4gICAgICAgIGxldCAoKF8sIHIpLCBtYXBfcikgPSBnbyhyKTtcbiAgICAgICAgKChsLCByKSwgdW5pb24obWFwX2wsIG1hcF9yKSk7XG4gICAgICB9O1xuICAgIGxldCBiZXR3ZWVuX2NoaWxkX21hcCA9XG4gICAgICBBYmEuZ2V0X2JzKHJvb3QpXG4gICAgICB8PiBMaXN0Lm1hcChnbylcbiAgICAgIHw+IExpc3QubWFwKHNuZClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KHVuaW9uLCBlbXB0eSk7XG4gICAgbGV0IG1hcCA9XG4gICAgICBBYmEuZ2V0X2FzKHJvb3QpXG4gICAgICB8PiBMaXN0Lm1hcChQaWVjZS5pZClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAobWFwLCBpZCkgPT4gSWQuTWFwLmFkZChpZCwgcmFuZ2UsIG1hcCksXG4gICAgICAgICAgIHVuaW9uKGJldHdlZW5fY2hpbGRfbWFwLCB1bmljaGlsZF9tYXApLFxuICAgICAgICAgKTtcbiAgICAocmFuZ2UsIG1hcCk7XG4gIH07XG4gIFNlZ21lbnQuY2hpbGRyZW4oc2VnKVxuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAobWFwLCBraWQpID0+IHVuaW9uKG1hcCwgbWsoa2lkKSksXG4gICAgICAgdW5pb24oZW1wdHksIHNuZChnbyhTZWdtZW50LnNrZWwoc2VnKSkpKSxcbiAgICAgKTtcbn1cbmFuZCBtayA9IHNlZyA9PlxuICB0cnkoSGFzaHRibC5maW5kKHJhbmdlX2hhc2gsIHNlZykpIHtcbiAgfCBfID0+XG4gICAgbGV0IHJlcyA9IG1rJyhzZWcpO1xuICAgIEhhc2h0YmwuYWRkKHJhbmdlX2hhc2gsIHNlZywgcmVzKTtcbiAgICByZXM7XG4gIH07XG4iLCIvKiBTVEFUSUNTLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGRldGVybWluZXMgdGhlIHN0YXRpY3Mgc2VtYW50aWNzIG9mIGEgcHJvZ3JhbS5cbiAgIEl0IG1ha2VzIHVzZSBvZiB0aGUgZm9sbG93aW5nIG1vZHVsZXM6XG5cbiAgIElORk8ucmU6IERlZmluZXMgdGhlIEluZm8udCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuICAgc3RhdGljIFNUQVRVUyBvZiBhIHRlcm0uIFRoaXMgU1RBVFVTIGNhbiBiZSBlaXRoZXIgT0sgb3IgRVJST1IsXG4gICBhbmQgaXMgZGV0ZXJtaW5lZCBieSByZWNvbmNpbGxpbmcgdHdvIHNvdXJjZXMgb2YgdHlwaW5nIGluZm9ybWF0aW9uLFxuICAgdGhlIE1PREUgYW5kIHRoZSBTRUxGLlxuXG4gICBNT0RFLnJlOiBEZWZpbmVzIHRoZSBNb2RlLnQgdHlwZSB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGVcbiAgIHR5cGluZyBleHBlY3RhdGlvbnMgaW1wb3NlZCBieSBhIHRlcm0ncyBhbmNlc3RvcnMuXG5cbiAgIFNFTEYucmU6IERlZmluZSB0aGUgU2VsZi50IHR5cGUgd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgdGhlXG4gICB0eXBlIGluZm9ybWF0aW9uIGRlcml2YWJsZSBmcm9tIHRoZSB0ZXJtIGl0c2VsZi5cblxuICAgVGhlIHBvaW50IG9mIFNUQVRJQ1MucmUgaXRzZWxmIGlzIHRvIGRlcml2ZSBhIG1hcCBiZXR3ZWVuIGVhY2hcbiAgIHRlcm0ncyB1bmlxdWUgaWQgYW5kIHRoYXQgdGVybSdzIHN0YXRpYyBJTkZPLiBUaGUgYmVsb3cgZnVuY3Rpb25zXG4gICBhcmUgaW50ZW5kZWQgbW9zdGx5IGFzIGluZnJhc3RydWN0dXJlOiBUaGUgcG9pbnQgaXMgdG8gZGVmaW5lIGFcbiAgIHRyYXZlcnNhbCB0aHJvdWdoIHRoZSBzeW50YXggdHJlZSB3aGljaCwgZm9yIGVhY2ggdGVybSwgcGFzc2VzXG4gICBkb3duIHRoZSBNT0RFLCBwYXNzZXMgdXAgdGhlIFNFTEYsIGNhbGN1bGF0ZXMgdGhlIElORk8sIGFuZCBhZGRzXG4gICBpdCB0byB0aGUgbWFwLlxuXG4gICBUaGUgYXJjaGl0ZWN0dXJhbCBpbnRlbnRpb24gaGVyZSBpcyB0aGF0IG1vc3QgdHlwZS1tYW5pcHVsYXRpb25cbiAgIGxvZ2ljIGlzIGRlZmluZWQgaW4gSU5GTywgTU9ERSwgYW5kIFNFTEYsIGFuZCB0aGUgU1RBVElDUyBtb2R1bGVcbiAgIGl0c2VsZiBpcyBkZWRpY2F0ZWQgdG8gdGhlIHBpcGluZyBuZWNlc3NhcnkgdG8gKEEpIGludHJvZHVjZSBhbmRcbiAgIChCKSBwcm9wYWdhdGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZSBzeW50YXggdHJlZS5cblxuICAgICovXG5cbm1vZHVsZSBJbmZvID0gSW5mbztcblxubW9kdWxlIE1hcCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBJZC5NYXAudChJbmZvLnQpO1xuXG4gIC8vIGxldCAoc2V4cF9vZl90LCB0X29mX3NleHApID1cbiAgLy8gICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2luKHNleHBfb2ZfdCwgdF9vZl9zZXhwKTtcblxuICBsZXQgZXJyb3JfaWRzID0gKHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQsIGluZm9fbWFwOiB0KTogbGlzdChJZC50KSA9PlxuICAgIElkLk1hcC5mb2xkKFxuICAgICAgKGlkLCBpbmZvLCBhY2MpID0+XG4gICAgICAgIC8qIEJlY2F1c2Ugb2YgYXJ0ZWZhY3RzIGluIE1ha2V0ZXJtIElEIGhhbmRsaW5nLFxuICAgICAgICAgKiB0aGVyZSBhcmUgYmUgc2l0dWF0aW9ucyB3aGVyZSBpZHMgYXBwZWFyIGluIHRoZVxuICAgICAgICAgKiBpbmZvX21hcCB3aGljaCBkbyBub3Qgb2NjdXIgaW4gdGVybV9yYW5nZXMuIFRoZXNlXG4gICAgICAgICAqIGlkcyBzaG91bGQgYmUgcHVyZWx5IGR1cGxpY2F0aXZlLCBzbyBza2lwcGluZyB0aGVtXG4gICAgICAgICAqIHdoZW4gaXRlcmF0aW5nIG92ZXIgdGhlIGluZm9fbWFwIHNob3VsZCBoYXZlIG5vXG4gICAgICAgICAqIGVmZmVjdCwgYmV5b25kIHN1cHJlc3NpbmcgdGhlIHJlc3VsdGluZyBOb3RfZm91bmQgZXhzICovXG4gICAgICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCB0ZXJtX3JhbmdlcykpIHtcbiAgICAgICAgfCBTb21lKF8pIHdoZW4gSW5mby5pc19lcnJvcihpbmZvKSA9PiBbaWQsIC4uLmFjY11cbiAgICAgICAgfCBfID0+IGFjY1xuICAgICAgICB9LFxuICAgICAgaW5mb19tYXAsXG4gICAgICBbXSxcbiAgICApO1xufTtcblxubGV0IG1hcF9tID0gKGYsIHhzLCBtOiBNYXAudCkgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKCh4cywgbSksIHgpID0+IGYoeCwgbSkgfD4gKCgoeCwgbSkpID0+ICh4cyBAIFt4XSwgbSkpLFxuICAgIChbXSwgbSksXG4gICAgeHMsXG4gICk7XG5cbmxldCBhZGRfaW5mbyA9IChpZHM6IGxpc3QoSWQudCksIGluZm86IEluZm8udCwgbTogTWFwLnQpOiBNYXAudCA9PlxuICBpZHMgfD4gTGlzdC5mb2xkX2xlZnQoKG0sIGlkKSA9PiBJZC5NYXAuYWRkKGlkLCBpbmZvLCBtKSwgbSk7XG5cbmxldCByZWMgaXNfYXJyb3dfbGlrZSA9ICh0OiBUeXAudCkgPT4ge1xuICBzd2l0Y2ggKHQgfD4gVHlwLnRlcm1fb2YpIHtcbiAgfCBVbmtub3duKF8pID0+IHRydWVcbiAgfCBBcnJvdyhfKSA9PiB0cnVlXG4gIHwgRm9yYWxsKF8sIHQpID0+IGlzX2Fycm93X2xpa2UodClcbiAgfCBfID0+IGZhbHNlXG4gIH07XG59O1xuXG5sZXQgaXNfcmVjdXJzaXZlID0gKGN0eCwgcCwgZGVmLCBzeW46IFR5cC50KSA9PiB7XG4gIHN3aXRjaCAoUGF0LmdldF9udW1fb2ZfdmFycyhwKSwgRXhwLmdldF9udW1fb2ZfZnVuY3Rpb25zKGRlZikpIHtcbiAgfCAoU29tZShudW1fdmFycyksIFNvbWUobnVtX2ZucykpXG4gICAgICB3aGVuIG51bV92YXJzICE9IDAgJiYgbnVtX3ZhcnMgPT0gbnVtX2ZucyA9PlxuICAgIGxldCBub3JtID0gVHlwLm5vcm1hbGl6ZShjdHgsIHN5bik7XG4gICAgc3dpdGNoIChub3JtIHw+IFR5cC50ZXJtX29mKSB7XG4gICAgfCBQcm9kKHN5bnMpIHdoZW4gTGlzdC5sZW5ndGgoc3lucykgPT0gbnVtX3ZhcnMgPT5cbiAgICAgIHN5bnMgfD4gTGlzdC5mb3JfYWxsKGlzX2Fycm93X2xpa2UpXG4gICAgfCBfIHdoZW4gaXNfYXJyb3dfbGlrZShub3JtKSA9PiBudW1fdmFycyA9PSAxXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbiAgfCBfID0+IGZhbHNlXG4gIH07XG59O1xuXG5sZXQgdHlwX2V4cF9iaW5vcF9iaW5faW50OiBPcGVyYXRvcnMub3BfYmluX2ludCA9PiBUeXAudCA9XG4gIGZ1blxuICB8IChQbHVzIHwgTWludXMgfCBUaW1lcyB8IFBvd2VyIHwgRGl2aWRlKSBhcyBfb3AgPT4gSW50IHw+IFR5cC5ta19mYXN0XG4gIHwgKFxuICAgICAgTGVzc1RoYW4gfCBHcmVhdGVyVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8IEVxdWFscyB8XG4gICAgICBOb3RFcXVhbHNcbiAgICApIGFzIF9vcCA9PlxuICAgIEJvb2wgfD4gVHlwLm1rX2Zhc3Q7XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdDogT3BlcmF0b3JzLm9wX2Jpbl9mbG9hdCA9PiBUeXAudCA9XG4gIGZ1blxuICB8IChQbHVzIHwgTWludXMgfCBUaW1lcyB8IFBvd2VyIHwgRGl2aWRlKSBhcyBfb3AgPT4gRmxvYXQgfD4gVHlwLm1rX2Zhc3RcbiAgfCAoXG4gICAgICBMZXNzVGhhbiB8IEdyZWF0ZXJUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW5PckVxdWFsIHwgRXF1YWxzIHxcbiAgICAgIE5vdEVxdWFsc1xuICAgICkgYXMgX29wID0+XG4gICAgQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX3N0cmluZzogT3BlcmF0b3JzLm9wX2Jpbl9zdHJpbmcgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBDb25jYXQgPT4gU3RyaW5nIHw+IFR5cC5ta19mYXN0XG4gIHwgRXF1YWxzID0+IEJvb2wgfD4gVHlwLm1rX2Zhc3Q7XG5cbmxldCB0eXBfZXhwX2Jpbm9wOiBPcGVyYXRvcnMub3BfYmluID0+IChUeXAudCwgVHlwLnQsIFR5cC50KSA9XG4gIGZ1blxuICB8IEJvb2woQW5kIHwgT3IpID0+IChcbiAgICAgIEJvb2wgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBCb29sIHw+IFR5cC5ta19mYXN0LFxuICAgICAgQm9vbCB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gIHwgSW50KG9wKSA9PiAoXG4gICAgICBJbnQgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBJbnQgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICB0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQob3ApLFxuICAgIClcbiAgfCBGbG9hdChvcCkgPT4gKFxuICAgICAgRmxvYXQgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBGbG9hdCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX2Zsb2F0KG9wKSxcbiAgICApXG4gIHwgU3RyaW5nKG9wKSA9PiAoXG4gICAgICBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICB0eXBfZXhwX2Jpbm9wX2Jpbl9zdHJpbmcob3ApLFxuICAgICk7XG5cbmxldCB0eXBfZXhwX3Vub3A6IE9wZXJhdG9ycy5vcF91biA9PiAoVHlwLnQsIFR5cC50KSA9XG4gIGZ1blxuICB8IE1ldGEoVW5xdW90ZSkgPT4gKFxuICAgICAgVmFyKFwiJE1ldGFcIikgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gIHwgQm9vbChOb3QpID0+IChCb29sIHw+IFR5cC5ta19mYXN0LCBCb29sIHw+IFR5cC5ta19mYXN0KVxuICB8IEludChNaW51cykgPT4gKEludCB8PiBUeXAubWtfZmFzdCwgSW50IHw+IFR5cC5ta19mYXN0KTtcblxubGV0IHJlYyBhbnlfdG9faW5mb19tYXAgPVxuICAgICAgICAofmN0eDogQ3R4LnQsIH5hbmNlc3RvcnMsIGFueTogQW55LnQsIG06IE1hcC50KTogKENvQ3R4LnQsIE1hcC50KSA9PlxuICBzd2l0Y2ggKGFueSkge1xuICB8IEV4cChlKSA9PlxuICAgIGxldCAoe2NvX2N0eCwgX306IEluZm8uZXhwLCBtKSA9XG4gICAgICB1ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIGUsIG0pO1xuICAgIChjb19jdHgsIG0pO1xuICB8IFBhdChwKSA9PlxuICAgIGxldCBtID1cbiAgICAgIHVwYXRfdG9faW5mb19tYXAoXG4gICAgICAgIH5pc19zeW5zd2l0Y2g9ZmFsc2UsXG4gICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgIH5hbmNlc3RvcnMsXG4gICAgICAgIH5jdHgsXG4gICAgICAgIHAsXG4gICAgICAgIG0sXG4gICAgICApXG4gICAgICB8PiBzbmQ7XG4gICAgKENvQ3R4LmVtcHR5LCBtKTtcbiAgfCBUUGF0KHRwKSA9PiAoXG4gICAgICBDb0N0eC5lbXB0eSxcbiAgICAgIHV0cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHRwLCBtKSB8PiBzbmQsXG4gICAgKVxuICB8IFR5cCh0eSkgPT4gKFxuICAgICAgQ29DdHguZW1wdHksXG4gICAgICB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHR5LCBtKSB8PiBzbmQsXG4gICAgKVxuICB8IFJ1bChfKVxuICB8IE51bCAoKVxuICB8IEFueSAoKSA9PiAoQ29DdHguZW1wdHksIG0pXG4gIH1cbmFuZCBtdWx0aSA9ICh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgICgoY29fY3R4cywgbSksIGFueSkgPT4ge1xuICAgICAgbGV0IChjb19jdHgsIG0pID0gYW55X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIGFueSwgbSk7XG4gICAgICAoY29fY3R4cyBAIFtjb19jdHhdLCBtKTtcbiAgICB9LFxuICAgIChbXSwgbSksXG4gICAgdG1zLFxuICApXG5hbmQgdWV4cF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eDogQ3R4LnQsXG4gICAgICB+bW9kZT1Nb2RlLlN5bixcbiAgICAgIH5pc19pbl9maWx0ZXI9ZmFsc2UsXG4gICAgICB+YW5jZXN0b3JzLFxuICAgICAge2lkcywgY29waWVkOiBfLCB0ZXJtfSBhcyB1ZXhwOiBVRXhwLnQsXG4gICAgICBtOiBNYXAudCxcbiAgICApXG4gICAgOiAoSW5mby5leHAsIE1hcC50KSA9PiB7XG4gIC8qIE1heWJlIHN3aXRjaCBtb2RlIHRvIHN5biAqL1xuICBsZXQgbW9kZSA9XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgfCBBbmEoe3Rlcm06IFVua25vd24oU3luU3dpdGNoKSwgX30pID0+IE1vZGUuU3luXG4gICAgfCBfID0+IG1vZGVcbiAgICB9O1xuICBsZXQgYWRkJyA9ICh+c2VsZiwgfmNvX2N0eCwgbSkgPT4ge1xuICAgIGxldCBpbmZvID1cbiAgICAgIEluZm8uZGVyaXZlZF9leHAofnVleHAsIH5jdHgsIH5tb2RlLCB+YW5jZXN0b3JzLCB+c2VsZiwgfmNvX2N0eCk7XG4gICAgKGluZm8sIGFkZF9pbmZvKGlkcywgSW5mb0V4cChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYWRkID0gKH5zZWxmLCB+Y29fY3R4LCBtKSA9PiBhZGQnKH5zZWxmPUNvbW1vbihzZWxmKSwgfmNvX2N0eCwgbSk7XG4gIGxldCBhbmNlc3RvcnMgPSBbVUV4cC5yZXBfaWQodWV4cCldIEAgYW5jZXN0b3JzO1xuICBsZXQgdWV4cF90b19pbmZvX21hcCA9XG4gICAgICAoXG4gICAgICAgIH5jdHgsXG4gICAgICAgIH5tb2RlPU1vZGUuU3luLFxuICAgICAgICB+aXNfaW5fZmlsdGVyPWlzX2luX2ZpbHRlcixcbiAgICAgICAgfmFuY2VzdG9ycz1hbmNlc3RvcnMsXG4gICAgICAgIHVleHA6IFVFeHAudCxcbiAgICAgICAgbTogTWFwLnQsXG4gICAgICApID0+IHtcbiAgICB1ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5tb2RlLCB+aXNfaW5fZmlsdGVyLCB+YW5jZXN0b3JzLCB1ZXhwLCBtKTtcbiAgfTtcbiAgbGV0IGdvJyA9IHVleHBfdG9faW5mb19tYXAofmFuY2VzdG9ycyk7XG4gIGxldCBnbyA9IGdvJyh+Y3R4KTtcbiAgbGV0IG1hcF9tX2dvID0gbSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICgoZXMsIG0pLCBtb2RlLCBlKSA9PlxuICAgICAgICBnbyh+bW9kZSwgZSwgbSkgfD4gKCgoZSwgbSkpID0+IChlcyBAIFtlXSwgbSkpLFxuICAgICAgKFtdLCBtKSxcbiAgICApO1xuICBsZXQgZ29fcGF0ID0gdXBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzKTtcbiAgbGV0IGF0b21pYyA9IHNlbGYgPT4gYWRkKH5zZWxmLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCBtKTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgQ2xvc3VyZShfLCBlKSA9PlxuICAgIC8vIFRPRE86IGltcGxlbWVudCBjbG9zdXJlIHR5cGUgY2hlY2tpbmcgcHJvcGVybHkgLSBzZWUgaG93IGR5bmFtaWMgdHlwZSBhc3NpZ25tZW50IGRvZXMgaXRcbiAgICBsZXQgKGUsIG0pID0gZ28ofm1vZGUsIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGUudHkpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoY29fY3R4cywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZCh+c2VsZj1Jc011bHRpLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKGNvX2N0eHMpLCBtKTtcbiAgfCBDYXN0KGUsIHQxLCB0MilcbiAgfCBGYWlsZWRDYXN0KGUsIHQxLCB0MikgPT5cbiAgICBsZXQgKGUsIG0pID0gZ28ofm1vZGU9QW5hKHQxKSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodDIpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBJbnZhbGlkKHRva2VuKSA9PiBhdG9taWMoQmFkVG9rZW4odG9rZW4pKVxuICB8IEVtcHR5SG9sZSA9PiBhdG9taWMoSnVzdChVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCkpXG4gIHwgRGVmZXJyYWwocG9zaXRpb24pID0+XG4gICAgYWRkJyh+c2VsZj1Jc0RlZmVycmFsKHBvc2l0aW9uKSwgfmNvX2N0eD1Db0N0eC5lbXB0eSwgbSlcbiAgfCBCb29sKF8pID0+IGF0b21pYyhKdXN0KEJvb2wgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IEludChfKSA9PiBhdG9taWMoSnVzdChJbnQgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IEZsb2F0KF8pID0+IGF0b21pYyhKdXN0KEZsb2F0IHw+IFR5cC5ta19mYXN0KSlcbiAgfCBTdHJpbmcoXykgPT4gYXRvbWljKEp1c3QoU3RyaW5nIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBMaXN0TGl0KGVzKSA9PlxuICAgIGxldCBpZHMgPSBMaXN0Lm1hcChVRXhwLnJlcF9pZCwgZXMpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfbGlzdF9saXQoY3R4LCBMaXN0Lmxlbmd0aChlcyksIG1vZGUpO1xuICAgIGxldCAoZXMsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGVzKTtcbiAgICBsZXQgdHlzID0gTGlzdC5tYXAoSW5mby5leHBfdHksIGVzKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1cbiAgICAgICAgU2VsZi5saXN0bGl0KH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCwgY3R4LCB0eXMsIGlkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKExpc3QubWFwKEluZm8uZXhwX2NvX2N0eCwgZXMpKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICBsZXQgKGhkLCBtKSA9IGdvKH5tb2RlPU1vZGUub2ZfY29uc19oZChjdHgsIG1vZGUpLCBoZCwgbSk7XG4gICAgbGV0ICh0bCwgbSkgPSBnbyh+bW9kZT1Nb2RlLm9mX2NvbnNfdGwoY3R4LCBtb2RlLCBoZC50eSksIHRsLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KExpc3QoaGQudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2hkLmNvX2N0eCwgdGwuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgTGlzdENvbmNhdChlMSwgZTIpID0+XG4gICAgbGV0IG1vZGUgPSBNb2RlLm9mX2xpc3RfY29uY2F0KGN0eCwgbW9kZSk7XG4gICAgbGV0IGlkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBbZTEsIGUyXSk7XG4gICAgbGV0IChlMSwgbSkgPSBnbyh+bW9kZSwgZTEsIG0pO1xuICAgIGxldCAoZTIsIG0pID0gZ28ofm1vZGUsIGUyLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1TZWxmLmxpc3RfY29uY2F0KGN0eCwgW2UxLnR5LCBlMi50eV0sIGlkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtlMS5jb19jdHgsIGUyLmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IFZhcihuYW1lKSA9PlxuICAgIGFkZCcoXG4gICAgICB+c2VsZj1TZWxmLm9mX2V4cF92YXIoY3R4LCBuYW1lKSxcbiAgICAgIH5jb19jdHg9Q29DdHguc2luZ2xldG9uKG5hbWUsIFVFeHAucmVwX2lkKHVleHApLCBNb2RlLnR5X29mKG1vZGUpKSxcbiAgICAgIG0sXG4gICAgKVxuICB8IER5bmFtaWNFcnJvckhvbGUoZSwgXylcbiAgfCBQYXJlbnMoZSkgPT5cbiAgICBsZXQgKGUsIG0pID0gZ28ofm1vZGUsIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGUudHkpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIGUpIHdoZW4gaXNfaW5fZmlsdGVyID0+XG4gICAgbGV0IGU6IFVFeHAudCA9IHtcbiAgICAgIGlkczogZS5pZHMsXG4gICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICAgICAgfCBWYXIoXCJlXCIpID0+IFVFeHAuQ29uc3RydWN0b3IoXCIkZVwiKVxuICAgICAgICB8IFZhcihcInZcIikgPT4gVUV4cC5Db25zdHJ1Y3RvcihcIiR2XCIpXG4gICAgICAgIHwgXyA9PiBlLnRlcm1cbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGxldCB0eV9pbiA9IFR5cC5WYXIoXCIkTWV0YVwiKSB8PiBUeXAubWtfZmFzdDtcbiAgICBsZXQgdHlfb3V0ID0gVHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0O1xuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodHlfaW4pLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0eV9vdXQpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBVbk9wKG9wLCBlKSA9PlxuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSB0eXBfZXhwX3Vub3Aob3ApO1xuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodHlfaW4pLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0eV9vdXQpLCB+Y29fY3R4PWUuY29fY3R4LCBtKTtcbiAgfCBCaW5PcChvcCwgZTEsIGUyKSA9PlxuICAgIGxldCAodHkxLCB0eTIsIHR5X291dCkgPSB0eXBfZXhwX2Jpbm9wKG9wKTtcbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlPUFuYSh0eTEpLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZT1BbmEodHkyKSwgZTIsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksIG0pO1xuICB8IEJ1aWx0aW5GdW4oc3RyaW5nKSA9PlxuICAgIGFkZCcoXG4gICAgICB+c2VsZj1TZWxmLm9mX2V4cF92YXIoQnVpbHRpbnMuY3R4X2luaXQsIHN0cmluZyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LmVtcHR5LFxuICAgICAgbSxcbiAgICApXG4gIHwgVHVwbGUoZXMpID0+XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9wcm9kKGN0eCwgbW9kZSwgTGlzdC5sZW5ndGgoZXMpKTtcbiAgICBsZXQgKGVzLCBtKSA9IG1hcF9tX2dvKG0sIG1vZGVzLCBlcyk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChQcm9kKExpc3QubWFwKEluZm8uZXhwX3R5LCBlcykpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFRlc3QoZSkgPT5cbiAgICBsZXQgKGUsIG0pID0gZ28ofm1vZGU9QW5hKEJvb2wgfD4gVHlwLm1rX2Zhc3QpLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChQcm9kKFtdKSB8PiBUeXAubWtfZmFzdCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEZpbHRlcihGaWx0ZXIoe3BhdDogY29uZCwgX30pLCBib2R5KSA9PlxuICAgIGxldCAoY29uZCwgbSkgPSBnbyh+bW9kZSwgY29uZCwgbSwgfmlzX2luX2ZpbHRlcj10cnVlKTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28ofm1vZGUsIGJvZHksIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoYm9keS50eSksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtjb25kLmNvX2N0eCwgYm9keS5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBGaWx0ZXIoUmVzaWR1ZShfKSwgYm9keSkgPT5cbiAgICBsZXQgKGJvZHksIG0pID0gZ28ofm1vZGUsIGJvZHksIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGJvZHkudHkpLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtib2R5LmNvX2N0eF0pLCBtKTtcbiAgfCBTZXEoZTEsIGUyKSA9PlxuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGU9U3luLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGUyLnR5KSwgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSwgbSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PiBhdG9taWMoU2VsZi5vZl9jdHIoY3R4LCBjdHIpKVxuICB8IEFwKF8sIGZuLCBhcmcpID0+XG4gICAgbGV0IGZuX21vZGUgPSBNb2RlLm9mX2FwKGN0eCwgbW9kZSwgVUV4cC5jdHJfbmFtZShmbikpO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofm1vZGU9Zm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGZuLnR5KTtcbiAgICBsZXQgKGFyZywgbSkgPSBnbyh+bW9kZT1BbmEodHlfaW4pLCBhcmcsIG0pO1xuICAgIGxldCBzZWxmOiBTZWxmLnQgPVxuICAgICAgSWQuaXNfbnVsbGFyeV9hcF9mbGFnKGFyZy50ZXJtLmlkcylcbiAgICAgICYmICFUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2luLCBQcm9kKFtdKSB8PiBUeXAubWtfZmFzdClcbiAgICAgICAgPyBCYWRUcml2QXAodHlfaW4pIDogSnVzdCh0eV9vdXQpO1xuICAgIGFkZCh+c2VsZiwgfmNvX2N0eD1Db0N0eC51bmlvbihbZm4uY29fY3R4LCBhcmcuY29fY3R4XSksIG0pO1xuICB8IFR5cEFwKGZuLCB1dHlwKSA9PlxuICAgIGxldCB0eXBmbl9tb2RlID0gTW9kZS50eXBhcF9tb2RlO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofm1vZGU9dHlwZm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAoXywgbSkgPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0eXAsIG0pO1xuICAgIGxldCAob3B0aW9uX25hbWUsIHR5X2JvZHkpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgZm4udHkpO1xuICAgIGxldCB0eSA9IFR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgICBzd2l0Y2ggKG9wdGlvbl9uYW1lKSB7XG4gICAgfCBTb21lKG5hbWUpID0+XG4gICAgICBhZGQofnNlbGY9SnVzdChUeXAuc3Vic3QodHksIG5hbWUsIHR5X2JvZHkpKSwgfmNvX2N0eD1mbi5jb19jdHgsIG0pXG4gICAgfCBOb25lID0+IGFkZCh+c2VsZj1KdXN0KHR5X2JvZHkpLCB+Y29fY3R4PWZuLmNvX2N0eCwgbSkgLyogaW52YWxpZCBuYW1lIG1hdGNoZXMgd2l0aCBubyBmcmVlIHR5cGUgdmFyaWFibGVzLiAqL1xuICAgIH07XG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICBsZXQgZm5fbW9kZSA9IE1vZGUub2ZfYXAoY3R4LCBtb2RlLCBVRXhwLmN0cl9uYW1lKGZuKSk7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT1mbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgZm4udHkpO1xuICAgIGxldCBudW1fYXJncyA9IExpc3QubGVuZ3RoKGFyZ3MpO1xuICAgIGxldCB0eV9pbnMgPSBUeXAubWF0Y2hlZF9hcmdzKGN0eCwgbnVtX2FyZ3MsIHR5X2luKTtcbiAgICBsZXQgc2VsZjogU2VsZi5leHAgPSBTZWxmLm9mX2RlZmVycmVkX2FwKGFyZ3MsIHR5X2lucywgdHlfb3V0KTtcbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX2RlZmVycmVkX2FwX2FyZ3MobnVtX2FyZ3MsIHR5X2lucyk7XG4gICAgbGV0IChhcmdzLCBtKSA9IG1hcF9tX2dvKG0sIG1vZGVzLCBhcmdzKTtcbiAgICBsZXQgYXJnX2NvX2N0eCA9IENvQ3R4LnVuaW9uKExpc3QubWFwKEluZm8uZXhwX2NvX2N0eCwgYXJncykpO1xuICAgIGFkZCcofnNlbGYsIH5jb19jdHg9Q29DdHgudW5pb24oW2ZuLmNvX2N0eCwgYXJnX2NvX2N0eF0pLCBtKTtcbiAgfCBGdW4ocCwgZSwgXywgXykgPT5cbiAgICBsZXQgKG1vZGVfcGF0LCBtb2RlX2JvZHkpID0gTW9kZS5vZl9hcnJvdyhjdHgsIG1vZGUpO1xuICAgIGxldCAocCcsIF8pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCB+bW9kZT1tb2RlX3BhdCwgcCwgbSk7XG4gICAgbGV0IChlLCBtKSA9IGdvJyh+Y3R4PXAnLmN0eCwgfm1vZGU9bW9kZV9ib2R5LCBlLCBtKTtcbiAgICAvKiBhZGQgY29fY3R4IHRvIHBhdHRlcm4gKi9cbiAgICBsZXQgKHAsIG0pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4PWUuY29fY3R4LCB+bW9kZT1tb2RlX3BhdCwgcCwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChBcnJvdyhwLnR5LCBlLnR5KSB8PiBUeXAubWtfZmFzdCksXG4gICAgICB+Y29fY3R4PUNvQ3R4Lm1rKGN0eCwgcC5jdHgsIGUuY29fY3R4KSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBUeXBGdW4oe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIGJvZHksIF8pXG4gICAgICB3aGVuICFDdHguc2hhZG93c190eXAoY3R4LCBuYW1lKSA9PlxuICAgIGxldCBtb2RlX2JvZHkgPSBNb2RlLm9mX2ZvcmFsbChjdHgsIFNvbWUobmFtZSksIG1vZGUpO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBsZXQgY3R4X2JvZHkgPVxuICAgICAgQ3R4LmV4dGVuZF90dmFyKGN0eCwge25hbWUsIGlkOiBUUGF0LnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSk7XG4gICAgbGV0IChib2R5LCBtKSA9IGdvJyh+Y3R4PWN0eF9ib2R5LCB+bW9kZT1tb2RlX2JvZHksIGJvZHksIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoRm9yYWxsKHV0cGF0LCBib2R5LnR5KSB8PiBUeXAubWtfZmFzdCksXG4gICAgICB+Y29fY3R4PWJvZHkuY29fY3R4LFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5cEZ1bih1dHBhdCwgYm9keSwgXykgPT5cbiAgICBsZXQgbW9kZV9ib2R5ID0gTW9kZS5vZl9mb3JhbGwoY3R4LCBOb25lLCBtb2RlKTtcbiAgICBsZXQgbSA9IHV0cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0cGF0LCBtKSB8PiBzbmQ7XG4gICAgbGV0IChib2R5LCBtKSA9IGdvKH5tb2RlPW1vZGVfYm9keSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChGb3JhbGwodXRwYXQsIGJvZHkudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Ym9keS5jb19jdHgsXG4gICAgICBtLFxuICAgICk7XG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICBsZXQgKHBfc3luLCBfKSA9XG4gICAgICBnb19wYXQofmlzX3N5bnN3aXRjaD10cnVlLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCB+bW9kZT1TeW4sIHAsIG0pO1xuICAgIGxldCAoZGVmLCBwX2FuYV9jdHgsIG0sIHR5X3BfYW5hKSA9XG4gICAgICBpZiAoIWlzX3JlY3Vyc2l2ZShjdHgsIHAsIGRlZiwgcF9zeW4udHkpKSB7XG4gICAgICAgIGxldCAoZGVmLCBtKSA9IGdvKH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCB0eV9wX2FuYSA9IGRlZi50eTtcbiAgICAgICAgbGV0IChwX2FuYScsIF8pID1cbiAgICAgICAgICBnb19wYXQoXG4gICAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgICAgIH5tb2RlPUFuYSh0eV9wX2FuYSksXG4gICAgICAgICAgICBwLFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICApO1xuICAgICAgICAoZGVmLCBwX2FuYScuY3R4LCBtLCB0eV9wX2FuYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgKGRlZl9iYXNlLCBfKSA9XG4gICAgICAgICAgZ28nKH5jdHg9cF9zeW4uY3R4LCB+bW9kZT1BbmEocF9zeW4udHkpLCBkZWYsIG0pO1xuICAgICAgICBsZXQgdHlfcF9hbmEgPSBkZWZfYmFzZS50eTtcbiAgICAgICAgLyogQW5hbHl6ZSBwYXR0ZXJuIHRvIGluY29ycG9yYXRlIGRlZiB0eXBlIGludG8gY3R4ICovXG4gICAgICAgIGxldCAocF9hbmEnLCBfKSA9XG4gICAgICAgICAgZ29fcGF0KFxuICAgICAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgICAgICB+bW9kZT1BbmEodHlfcF9hbmEpLFxuICAgICAgICAgICAgcCxcbiAgICAgICAgICAgIG0sXG4gICAgICAgICAgKTtcbiAgICAgICAgbGV0IGRlZl9jdHggPSBwX2FuYScuY3R4O1xuICAgICAgICBsZXQgKGRlZl9iYXNlMiwgXykgPSBnbycofmN0eD1kZWZfY3R4LCB+bW9kZT1BbmEocF9zeW4udHkpLCBkZWYsIG0pO1xuICAgICAgICBsZXQgYW5hX3R5X2ZuID0gKCh0eV9mbjEsIHR5X2ZuMiksIHR5X3ApID0+IHtcbiAgICAgICAgICBUeXAudGVybV9vZih0eV9wKSA9PSBUeXAuVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgICAgICAgJiYgIVR5cC5lcSh0eV9mbjEsIHR5X2ZuMilcbiAgICAgICAgICAgID8gdHlfZm4xIDogdHlfcDtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGFuYSA9XG4gICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgIChkZWZfYmFzZS50eSB8PiBUeXAudGVybV9vZiwgZGVmX2Jhc2UyLnR5IHw+IFR5cC50ZXJtX29mKSxcbiAgICAgICAgICAgIHBfc3luLnR5IHw+IFR5cC50ZXJtX29mLFxuICAgICAgICAgICkge1xuICAgICAgICAgIHwgKChQcm9kKHR5X2ZuczEpLCBQcm9kKHR5X2ZuczIpKSwgUHJvZCh0eV9wcykpID0+XG4gICAgICAgICAgICBsZXQgdHlzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAyKGFuYV90eV9mbiwgTGlzdC5jb21iaW5lKHR5X2ZuczEsIHR5X2ZuczIpLCB0eV9wcyk7XG4gICAgICAgICAgICBUeXAuUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0O1xuICAgICAgICAgIHwgKChfLCBfKSwgXykgPT4gYW5hX3R5X2ZuKChkZWZfYmFzZS50eSwgZGVmX2Jhc2UyLnR5KSwgcF9zeW4udHkpXG4gICAgICAgICAgfTtcbiAgICAgICAgbGV0IChkZWYsIG0pID0gZ28nKH5jdHg9ZGVmX2N0eCwgfm1vZGU9QW5hKGFuYSksIGRlZiwgbSk7XG4gICAgICAgIChkZWYsIGRlZl9jdHgsIG0sIHR5X3BfYW5hKTtcbiAgICAgIH07XG4gICAgbGV0IChib2R5LCBtKSA9IGdvJyh+Y3R4PXBfYW5hX2N0eCwgfm1vZGUsIGJvZHksIG0pO1xuICAgIC8qIGFkZCBjb19jdHggdG8gcGF0dGVybiAqL1xuICAgIGxldCAocF9hbmEsIG0pID1cbiAgICAgIGdvX3BhdChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1ib2R5LmNvX2N0eCxcbiAgICAgICAgfm1vZGU9QW5hKHR5X3BfYW5hKSxcbiAgICAgICAgcCxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChib2R5LnR5KSxcbiAgICAgIH5jb19jdHg9XG4gICAgICAgIENvQ3R4LnVuaW9uKFtkZWYuY29fY3R4LCBDb0N0eC5tayhjdHgsIHBfYW5hLmN0eCwgYm9keS5jb19jdHgpXSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgRml4RihwLCBlLCBfKSA9PlxuICAgIGxldCAocCcsIF8pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCB+bW9kZSwgcCwgbSk7XG4gICAgbGV0IChlJywgbSkgPSBnbycofmN0eD1wJy5jdHgsIH5tb2RlPUFuYShwJy50eSksIGUsIG0pO1xuICAgIGxldCAocCcnLCBtKSA9XG4gICAgICBnb19wYXQofmlzX3N5bnN3aXRjaD1mYWxzZSwgfmNvX2N0eD1lJy5jb19jdHgsIH5tb2RlLCBwLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KHAnLnR5KSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW0NvQ3R4Lm1rKGN0eCwgcCcnLmN0eCwgZScuY29fY3R4KV0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IElmKGUwLCBlMSwgZTIpID0+XG4gICAgbGV0IGJyYW5jaF9pZHMgPSBMaXN0Lm1hcChVRXhwLnJlcF9pZCwgW2UxLCBlMl0pO1xuICAgIGxldCAoY29uZCwgbSkgPSBnbyh+bW9kZT1BbmEoQm9vbCB8PiBUeXAubWtfZmFzdCksIGUwLCBtKTtcbiAgICBsZXQgKGNvbnMsIG0pID0gZ28ofm1vZGUsIGUxLCBtKTtcbiAgICBsZXQgKGFsdCwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubWF0Y2goY3R4LCBbY29ucy50eSwgYWx0LnR5XSwgYnJhbmNoX2lkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtjb25kLmNvX2N0eCwgY29ucy5jb19jdHgsIGFsdC5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBNYXRjaChzY3J1dCwgcnVsZXMpID0+XG4gICAgbGV0IChzY3J1dCwgbSkgPSBnbyh+bW9kZT1TeW4sIHNjcnV0LCBtKTtcbiAgICBsZXQgKHBzLCBlcykgPSBMaXN0LnNwbGl0KHJ1bGVzKTtcbiAgICBsZXQgYnJhbmNoX2lkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBlcyk7XG4gICAgbGV0IChwcycsIF8pID1cbiAgICAgIG1hcF9tKFxuICAgICAgICBnb19wYXQoXG4gICAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgICB+Y29fY3R4PUNvQ3R4LmVtcHR5LFxuICAgICAgICAgIH5tb2RlPU1vZGUuQW5hKHNjcnV0LnR5KSxcbiAgICAgICAgKSxcbiAgICAgICAgcHMsXG4gICAgICAgIG0sXG4gICAgICApO1xuICAgIGxldCBwX2N0eHMgPSBMaXN0Lm1hcChJbmZvLnBhdF9jdHgsIHBzJyk7XG4gICAgbGV0IChlcywgbSkgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoKGVzLCBtKSwgZSwgY3R4KSA9PlxuICAgICAgICAgIGdvJyh+Y3R4LCB+bW9kZSwgZSwgbSkgfD4gKCgoZSwgbSkpID0+IChlcyBAIFtlXSwgbSkpLFxuICAgICAgICAoW10sIG0pLFxuICAgICAgICBlcyxcbiAgICAgICAgcF9jdHhzLFxuICAgICAgKTtcbiAgICBsZXQgZV90eXMgPSBMaXN0Lm1hcChJbmZvLmV4cF90eSwgZXMpO1xuICAgIGxldCBlX2NvX2N0eHMgPVxuICAgICAgTGlzdC5tYXAyKENvQ3R4Lm1rKGN0eCksIHBfY3R4cywgTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpO1xuICAgIC8qIEFkZCBjby1jdHhzIHRvIHBhdHRlcm5zICovXG4gICAgbGV0IChfLCBtKSA9XG4gICAgICBtYXBfbShcbiAgICAgICAgKChwLCBjb19jdHgpKSA9PlxuICAgICAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4LCB+bW9kZT1Nb2RlLkFuYShzY3J1dC50eSksIHApLFxuICAgICAgICBMaXN0LmNvbWJpbmUocHMsIGVfY29fY3R4cyksXG4gICAgICAgIG0sXG4gICAgICApO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubWF0Y2goY3R4LCBlX3R5cywgYnJhbmNoX2lkcyksXG4gICAgICB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtzY3J1dC5jb19jdHhdIEAgZV9jb19jdHhzKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBUeUFsaWFzKHR5cGF0LCB1dHlwLCBib2R5KSA9PlxuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHlwYXQsIG0pIHw+IHNuZDtcbiAgICBzd2l0Y2ggKHR5cGF0LnRlcm0pIHtcbiAgICB8IFZhcihuYW1lKSB3aGVuICFDdHguc2hhZG93c190eXAoY3R4LCBuYW1lKSA9PlxuICAgICAgLyogQ3VycmVudGx5IHdlIGRpc2FsbG93IGFsbCB0eXBlIHNoYWRvd2luZyAqL1xuICAgICAgLyogTk9URShhbmRyZXcpOiBDdXJyZW50bHksIFVUeXAudG9fdHlwIHJldHVybnMgVW5rbm93bihUeXBlSG9sZSlcbiAgICAgICAgIGZvciBhbnkgdHlwZSB2YXJpYWJsZSByZWZlcmVuY2Ugbm90IGluIGl0cyBjdHguIFNvIGFueSBmcmVlIHZhcmlhYmxlc1xuICAgICAgICAgaW4gdGhlIGRlZmluaXRpb24gd291bGQgYmUgb2JsaXRlcmF0ZWQuIEJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciBmcmVlXG4gICAgICAgICB2YXJpYWJsZXMgdG8gZGVjaWRlIHdoZXRoZXIgdG8gbWFrZSBhIHJlY3Vyc2l2ZSB0eXBlIG9yIG5vdC4gU28gd2VcbiAgICAgICAgIHRlbnRhdGl2ZWx5IGFkZCBhbiBhYnRyYWN0IHR5cGUgdG8gdGhlIGN0eCwgcmVwcmVzZW50aW5nIHRoZVxuICAgICAgICAgc3BlY3VsYXRpdmUgcmVjIHBhcmFtZXRlci4gKi9cbiAgICAgIGxldCAodHlfZGVmLCBjdHhfZGVmLCBjdHhfYm9keSkgPSB7XG4gICAgICAgIGxldCB0eV9wcmUgPSBVVHlwLnRvX3R5cChDdHguZXh0ZW5kX2R1bW15X3R2YXIoY3R4LCB0eXBhdCksIHV0eXApO1xuICAgICAgICBzd2l0Y2ggKHV0eXAudGVybSkge1xuICAgICAgICB8IFN1bShfKSB3aGVuIExpc3QubWVtKG5hbWUsIFR5cC5mcmVlX3ZhcnModHlfcHJlKSkgPT5cbiAgICAgICAgICAvKiBOT1RFOiBXaGVuIGRlYnVnZ2luZyB0eXBlIHN5c3RlbSBpc3N1ZXMgaXQgbWF5IGJlIGJlbmVmaWNpYWwgdG9cbiAgICAgICAgICAgICB1c2UgYSBkaWZmZXJlbnQgbmFtZSB0aGFuIHRoZSBhbGlhcyBmb3IgdGhlIHJlY3Vyc2l2ZSBwYXJhbWV0ZXIgKi9cbiAgICAgICAgICAvL2xldCB0eV9yZWMgPSBUeXAuUmVjKFwizrFcIiwgVHlwLnN1YnN0KFZhcihcIs6xXCIpLCBuYW1lLCB0eV9wcmUpKTtcbiAgICAgICAgICBsZXQgdHlfcmVjID1cbiAgICAgICAgICAgIFR5cC5SZWMoVFBhdC5WYXIobmFtZSkgfD4gSWRUYWdnZWQuZnJlc2gsIHR5X3ByZSkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgICAgICAgbGV0IGN0eF9kZWYgPVxuICAgICAgICAgICAgQ3R4LmV4dGVuZF9hbGlhcyhjdHgsIG5hbWUsIFRQYXQucmVwX2lkKHR5cGF0KSwgdHlfcmVjKTtcbiAgICAgICAgICAodHlfcmVjLCBjdHhfZGVmLCBjdHhfZGVmKTtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IHR5ID0gVVR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgICAgICAgICAodHksIGN0eCwgQ3R4LmV4dGVuZF9hbGlhcyhjdHgsIG5hbWUsIFRQYXQucmVwX2lkKHR5cGF0KSwgdHkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyogTk9URSh5dWNoZW4pOiBCZWxvdyBpcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGF0dGVtcHRzIHRvXG4gICAgICAgICAgIGFkZCBhIHJlYyB3aGVuZXZlciB0eXBlIGFsaWFzIGlzIHByZXNlbnQuIEl0IG1heSBjYXVzZSB0cm91YmxlIHRvIHRoZVxuICAgICAgICAgICBydW50aW1lLCBzbyBwcmVjZWRlIHdpdGggY2F1dGlvbi4gKi9cbiAgICAgICAgLy8gVHlwLmxvb2t1cF9zdXJmYWNlKHR5X3ByZSlcbiAgICAgICAgLy8gICA/IHtcbiAgICAgICAgLy8gICAgIGxldCB0eV9yZWMgPSBUeXAuUmVjKHtpdGVtOiB0eV9wcmUsIG5hbWV9KTtcbiAgICAgICAgLy8gICAgIGxldCBjdHhfZGVmID0gQ3R4LmFkZF9hbGlhcyhjdHgsIG5hbWUsIHV0cGF0X2lkKHR5cGF0KSwgdHlfcmVjKTtcbiAgICAgICAgLy8gICAgICh0eV9yZWMsIGN0eF9kZWYsIGN0eF9kZWYpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICA6IHtcbiAgICAgICAgLy8gICAgIGxldCB0eSA9IFRlcm0uVVR5cC50b190eXAoY3R4LCB1dHlwKTtcbiAgICAgICAgLy8gICAgICh0eSwgY3R4LCBDdHguYWRkX2FsaWFzKGN0eCwgbmFtZSwgdXRwYXRfaWQodHlwYXQpLCB0eSkpO1xuICAgICAgICAvLyAgIH07XG4gICAgICB9O1xuICAgICAgbGV0IGN0eF9ib2R5ID1cbiAgICAgICAgc3dpdGNoIChUeXAuZ2V0X3N1bV9jb25zdHJ1Y3RvcnMoY3R4LCB0eV9kZWYpKSB7XG4gICAgICAgIHwgU29tZShzbSkgPT4gQ3R4LmFkZF9jdHJzKGN0eF9ib2R5LCBuYW1lLCBVVHlwLnJlcF9pZCh1dHlwKSwgc20pXG4gICAgICAgIHwgTm9uZSA9PiBjdHhfYm9keVxuICAgICAgICB9O1xuICAgICAgbGV0ICh7Y29fY3R4LCB0eTogdHlfYm9keSwgX306IEluZm8uZXhwLCBtKSA9XG4gICAgICAgIGdvJyh+Y3R4PWN0eF9ib2R5LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgICAvKiBNYWtlIHN1cmUgdHlwZXMgZG9uJ3QgZXNjYXBlIHRoZWlyIHNjb3BlICovXG4gICAgICBsZXQgdHlfZXNjYXBlID0gVHlwLnN1YnN0KHR5X2RlZiwgdHlwYXQsIHR5X2JvZHkpO1xuICAgICAgbGV0IG0gPSB1dHlwX3RvX2luZm9fbWFwKH5jdHg9Y3R4X2RlZiwgfmFuY2VzdG9ycywgdXR5cCwgbSkgfD4gc25kO1xuICAgICAgYWRkKH5zZWxmPUp1c3QodHlfZXNjYXBlKSwgfmNvX2N0eCwgbSk7XG4gICAgfCBWYXIoXylcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pID0+XG4gICAgICBsZXQgKHtjb19jdHgsIHR5OiB0eV9ib2R5LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgICAgZ28nKH5jdHgsIH5tb2RlLCBib2R5LCBtKTtcbiAgICAgIGxldCBtID0gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHlwLCBtKSB8PiBzbmQ7XG4gICAgICBhZGQofnNlbGY9SnVzdCh0eV9ib2R5KSwgfmNvX2N0eCwgbSk7XG4gICAgfTtcbiAgfTtcbn1cbmFuZCB1cGF0X3RvX2luZm9fbWFwID1cbiAgICAoXG4gICAgICB+aXNfc3luc3dpdGNoLFxuICAgICAgfmN0eCxcbiAgICAgIH5jb19jdHgsXG4gICAgICB+YW5jZXN0b3JzOiBJbmZvLmFuY2VzdG9ycyxcbiAgICAgIH5tb2RlOiBNb2RlLnQ9TW9kZS5TeW4sXG4gICAgICB7aWRzLCB0ZXJtLCBffSBhcyB1cGF0OiBVUGF0LnQsXG4gICAgICBtOiBNYXAudCxcbiAgICApXG4gICAgOiAoSW5mby5wYXQsIE1hcC50KSA9PiB7XG4gIGxldCBhZGQgPSAofnNlbGYsIH5jdHgsIG0pID0+IHtcbiAgICBsZXQgcHJldl9zeW5zd2l0Y2ggPVxuICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoUGF0LnJlcF9pZCh1cGF0KSwgbSkpIHtcbiAgICAgIHwgU29tZShJbmZvLkluZm9QYXQoe21vZGU6IFN5biB8IFN5bkZ1biwgdHksIF99KSkgPT4gU29tZSh0eSlcbiAgICAgIHwgU29tZShJbmZvLkluZm9QYXQoe21vZGU6IEFuYShfKSwgcHJldl9zeW5zd2l0Y2gsIF99KSkgPT4gcHJldl9zeW5zd2l0Y2hcbiAgICAgIHwgU29tZShfKVxuICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgIH07XG4gICAgbGV0IGluZm8gPVxuICAgICAgSW5mby5kZXJpdmVkX3BhdChcbiAgICAgICAgfnByZXZfc3luc3dpdGNoLFxuICAgICAgICB+dXBhdCxcbiAgICAgICAgfmN0eCxcbiAgICAgICAgfmNvX2N0eCxcbiAgICAgICAgfm1vZGUsXG4gICAgICAgIH5hbmNlc3RvcnMsXG4gICAgICAgIH5zZWxmPUNvbW1vbihzZWxmKSxcbiAgICAgICk7XG4gICAgKGluZm8sIGFkZF9pbmZvKGlkcywgSW5mb1BhdChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYXRvbWljID0gc2VsZiA9PiBhZGQofnNlbGYsIH5jdHgsIG0pO1xuICBsZXQgYW5jZXN0b3JzID0gW1VQYXQucmVwX2lkKHVwYXQpXSBAIGFuY2VzdG9ycztcbiAgbGV0IGdvID0gdXBhdF90b19pbmZvX21hcCh+aXNfc3luc3dpdGNoLCB+YW5jZXN0b3JzLCB+Y29fY3R4KTtcbiAgbGV0IHVua25vd24gPSBUeXAuVW5rbm93bihpc19zeW5zd2l0Y2ggPyBTeW5Td2l0Y2ggOiBJbnRlcm5hbCk7XG4gIGxldCBjdHhfZm9sZCA9IChjdHg6IEN0eC50LCBtKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICgoY3R4LCB0eXMsIG0pLCBlLCBtb2RlKSA9PlxuICAgICAgICBnbyh+Y3R4LCB+bW9kZSwgZSwgbSlcbiAgICAgICAgfD4gKCgoaW5mbywgbSkpID0+IChpbmZvLmN0eCwgdHlzIEAgW2luZm8udHldLCBtKSksXG4gICAgICAoY3R4LCBbXSwgbSksXG4gICAgKTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgTXVsdGlIb2xlKHRtcykgPT5cbiAgICBsZXQgKF8sIG0pID0gbXVsdGkofmN0eCwgfmFuY2VzdG9ycywgbSwgdG1zKTtcbiAgICBhZGQofnNlbGY9SXNNdWx0aSwgfmN0eCwgbSk7XG4gIHwgSW52YWxpZCh0b2tlbikgPT4gYXRvbWljKEJhZFRva2VuKHRva2VuKSlcbiAgfCBFbXB0eUhvbGUgPT4gYXRvbWljKEp1c3QodW5rbm93biB8PiBUeXAubWtfZmFzdCkpXG4gIHwgSW50KF8pID0+IGF0b21pYyhKdXN0KEludCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgRmxvYXQoXykgPT4gYXRvbWljKEp1c3QoRmxvYXQgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IEJvb2woXykgPT4gYXRvbWljKEp1c3QoQm9vbCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgU3RyaW5nKF8pID0+IGF0b21pYyhKdXN0KFN0cmluZyB8PiBUeXAubWtfZmFzdCkpXG4gIHwgTGlzdExpdChwcykgPT5cbiAgICBsZXQgaWRzID0gTGlzdC5tYXAoVVBhdC5yZXBfaWQsIHBzKTtcbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX2xpc3RfbGl0KGN0eCwgTGlzdC5sZW5ndGgocHMpLCBtb2RlKTtcbiAgICBsZXQgKGN0eCwgdHlzLCBtKSA9IGN0eF9mb2xkKGN0eCwgbSwgcHMsIG1vZGVzKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1TZWxmLmxpc3RsaXQofmVtcHR5PXVua25vd24gfD4gVHlwLm1rX2Zhc3QsIGN0eCwgdHlzLCBpZHMpLFxuICAgICAgfmN0eCxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICBsZXQgKGhkLCBtKSA9IGdvKH5jdHgsIH5tb2RlPU1vZGUub2ZfY29uc19oZChjdHgsIG1vZGUpLCBoZCwgbSk7XG4gICAgbGV0ICh0bCwgbSkgPVxuICAgICAgZ28ofmN0eD1oZC5jdHgsIH5tb2RlPU1vZGUub2ZfY29uc190bChjdHgsIG1vZGUsIGhkLnR5KSwgdGwsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KExpc3QoaGQudHkpIHw+IFR5cC5ta19mYXN0KSwgfmN0eD10bC5jdHgsIG0pO1xuICB8IFdpbGQgPT4gYXRvbWljKEp1c3QodW5rbm93biB8PiBUeXAubWtfZmFzdCkpXG4gIHwgVmFyKG5hbWUpID0+XG4gICAgLyogTk9URTogVGhlIHNlbGYgdHlwZSBhc3NpZ25lZCB0byBwYXR0ZXJuIHZhcmlhYmxlcyAoVW5rbm93bilcbiAgICAgICBtYXkgYmUgU3luU3dpdGNoLCBidXQgU3luU3dpdGNoIGlzIG5ldmVyIGFkZGVkIHRvIHRoZSBjb250ZXh0O1xuICAgICAgIFVua25vd24oSW50ZXJuYWwpIGlzIHVzZWQgaW4gdGhpcyBjYXNlICovXG4gICAgbGV0IGN0eF90eXAgPVxuICAgICAgSW5mby5maXhlZF90eXBfcGF0KFxuICAgICAgICBjdHgsXG4gICAgICAgIG1vZGUsXG4gICAgICAgIENvbW1vbihKdXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSksXG4gICAgICApO1xuICAgIGxldCBlbnRyeSA9IEN0eC5WYXJFbnRyeSh7bmFtZSwgaWQ6IFVQYXQucmVwX2lkKHVwYXQpLCB0eXA6IGN0eF90eXB9KTtcbiAgICBhZGQofnNlbGY9SnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSwgfmN0eD1DdHguZXh0ZW5kKGN0eCwgZW50cnkpLCBtKTtcbiAgfCBUdXBsZShwcykgPT5cbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX3Byb2QoY3R4LCBtb2RlLCBMaXN0Lmxlbmd0aChwcykpO1xuICAgIGxldCAoY3R4LCB0eXMsIG0pID0gY3R4X2ZvbGQoY3R4LCBtLCBwcywgbW9kZXMpO1xuICAgIGFkZCh+c2VsZj1KdXN0KFByb2QodHlzKSB8PiBUeXAubWtfZmFzdCksIH5jdHgsIG0pO1xuICB8IFBhcmVucyhwKSA9PlxuICAgIGxldCAocCwgbSkgPSBnbyh+Y3R4LCB+bW9kZSwgcCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QocC50eSksIH5jdHg9cC5jdHgsIG0pO1xuICB8IENvbnN0cnVjdG9yKGN0cikgPT4gYXRvbWljKFNlbGYub2ZfY3RyKGN0eCwgY3RyKSlcbiAgfCBBcChmbiwgYXJnKSA9PlxuICAgIGxldCBmbl9tb2RlID0gTW9kZS5vZl9hcChjdHgsIG1vZGUsIFVQYXQuY3RyX25hbWUoZm4pKTtcbiAgICBsZXQgKGZuLCBtKSA9IGdvKH5jdHgsIH5tb2RlPWZuX21vZGUsIGZuLCBtKTtcbiAgICBsZXQgKHR5X2luLCB0eV9vdXQpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBmbi50eSk7XG4gICAgbGV0IChhcmcsIG0pID0gZ28ofmN0eCwgfm1vZGU9QW5hKHR5X2luKSwgYXJnLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0eV9vdXQpLCB+Y3R4PWFyZy5jdHgsIG0pO1xuICB8IENhc3QocCwgYW5uLCBfKSA9PlxuICAgIGxldCAoYW5uLCBtKSA9IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgYW5uLCBtKTtcbiAgICBsZXQgKHAsIG0pID0gZ28ofmN0eCwgfm1vZGU9QW5hKGFubi50eSksIHAsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KGFubi50eSksIH5jdHg9cC5jdHgsIG0pO1xuICB9O1xufVxuYW5kIHV0eXBfdG9faW5mb19tYXAgPVxuICAgIChcbiAgICAgIH5jdHgsXG4gICAgICB+ZXhwZWN0cz1JbmZvLlR5cGVFeHBlY3RlZCxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB7aWRzLCB0ZXJtLCBffSBhcyB1dHlwOiBVVHlwLnQsXG4gICAgICBtOiBNYXAudCxcbiAgICApXG4gICAgOiAoSW5mby50eXAsIE1hcC50KSA9PiB7XG4gIGxldCBhZGQgPSBtID0+IHtcbiAgICBsZXQgaW5mbyA9IEluZm8uZGVyaXZlZF90eXAofnV0eXAsIH5jdHgsIH5hbmNlc3RvcnMsIH5leHBlY3RzKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvVHlwKGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhbmNlc3RvcnMgPSBbVVR5cC5yZXBfaWQodXR5cCldIEAgYW5jZXN0b3JzO1xuICBsZXQgZ28nID0gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzKTtcbiAgbGV0IGdvID0gZ28nKH5leHBlY3RzPVR5cGVFeHBlY3RlZCk7XG4gIC8vVE9ETyhhbmRyZXcpOiBtYWtlIHRoaXMgcmV0dXJuIGZyZWUsIHJlcGxhY2luZyBUeXAuZnJlZV92YXJzXG4gIHN3aXRjaCAodGVybSkge1xuICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUodG1zKSkpID0+XG4gICAgbGV0IChfLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKG0pO1xuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmcgPT4gYWRkKG0pXG4gIHwgVmFyKF8pID0+XG4gICAgLyogTmFtZXMgYXJlIHJlc29sdmVkIGluIEluZm8uc3RhdHVzX3R5cCAqL1xuICAgIGFkZChtKVxuICB8IExpc3QodClcbiAgfCBQYXJlbnModCkgPT4gYWRkKGdvKHQsIG0pIHw+IHNuZClcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgbGV0IG0gPSBnbyh0MSwgbSkgfD4gc25kO1xuICAgIGxldCBtID0gZ28odDIsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7XG4gIHwgUHJvZCh0cykgPT5cbiAgICBsZXQgbSA9IG1hcF9tKGdvLCB0cywgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBBcCh0MSwgdDIpID0+XG4gICAgbGV0IHR5X2luID0gVVR5cC50b190eXAoY3R4LCB0Mik7XG4gICAgbGV0IHQxX21vZGU6IEluZm8udHlwX2V4cGVjdHMgPVxuICAgICAgc3dpdGNoIChleHBlY3RzKSB7XG4gICAgICB8IFZhcmlhbnRFeHBlY3RlZChtLCBzdW1fdHkpID0+XG4gICAgICAgIENvbnN0cnVjdG9yRXhwZWN0ZWQobSwgQXJyb3codHlfaW4sIHN1bV90eSkgfD4gVHlwLm1rX2Zhc3QpXG4gICAgICB8IF8gPT5cbiAgICAgICAgQ29uc3RydWN0b3JFeHBlY3RlZChcbiAgICAgICAgICBVbmlxdWUsXG4gICAgICAgICAgQXJyb3codHlfaW4sIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICBsZXQgbSA9IGdvJyh+ZXhwZWN0cz10MV9tb2RlLCB0MSwgbSkgfD4gc25kO1xuICAgIGxldCBtID0gZ28nKH5leHBlY3RzPVR5cGVFeHBlY3RlZCwgdDIsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7XG4gIHwgU3VtKHZhcmlhbnRzKSA9PlxuICAgIGxldCB0eV9zdW0gPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgIGxldCAobSwgXykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgIHZhcmlhbnRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgfnR5X3N1bSksXG4gICAgICAgIChtLCBbXSksXG4gICAgICAgIHZhcmlhbnRzLFxuICAgICAgKTtcbiAgICBhZGQobSk7XG4gIHwgRm9yYWxsKHt0ZXJtOiBWYXIobmFtZSksIF99IGFzIHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgYm9keV9jdHggPVxuICAgICAgQ3R4LmV4dGVuZF90dmFyKGN0eCwge25hbWUsIGlkOiBUUGF0LnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSk7XG4gICAgbGV0IG0gPVxuICAgICAgdXR5cF90b19pbmZvX21hcChcbiAgICAgICAgdGJvZHksXG4gICAgICAgIH5jdHg9Ym9keV9jdHgsXG4gICAgICAgIH5hbmNlc3RvcnMsXG4gICAgICAgIH5leHBlY3RzPVR5cGVFeHBlY3RlZCxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICBsZXQgbSA9IHV0cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0cGF0LCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pOyAvLyBUT0RPOiBjaGVjayB3aXRoIGFuZHJld1xuICB8IEZvcmFsbCh1dHBhdCwgdGJvZHkpID0+XG4gICAgbGV0IG0gPVxuICAgICAgdXR5cF90b19pbmZvX21hcCh0Ym9keSwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLCBtKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgUmVjKHt0ZXJtOiBWYXIobmFtZSksIF99IGFzIHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgYm9keV9jdHggPVxuICAgICAgQ3R4LmV4dGVuZF90dmFyKGN0eCwge25hbWUsIGlkOiBUUGF0LnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSk7XG4gICAgbGV0IG0gPVxuICAgICAgdXR5cF90b19pbmZvX21hcChcbiAgICAgICAgdGJvZHksXG4gICAgICAgIH5jdHg9Ym9keV9jdHgsXG4gICAgICAgIH5hbmNlc3RvcnMsXG4gICAgICAgIH5leHBlY3RzPVR5cGVFeHBlY3RlZCxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICBsZXQgbSA9IHV0cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0cGF0LCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pOyAvLyBUT0RPOiBjaGVjayB3aXRoIGFuZHJld1xuICB8IFJlYyh1dHBhdCwgdGJvZHkpID0+XG4gICAgbGV0IG0gPVxuICAgICAgdXR5cF90b19pbmZvX21hcCh0Ym9keSwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLCBtKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIH07XG59XG5hbmQgdXRwYXRfdG9faW5mb19tYXAgPVxuICAgICh+Y3R4LCB+YW5jZXN0b3JzLCB7aWRzLCB0ZXJtLCBffSBhcyB1dHBhdDogVFBhdC50LCBtOiBNYXAudClcbiAgICA6IChJbmZvLnRwYXQsIE1hcC50KSA9PiB7XG4gIGxldCBhZGQgPSBtID0+IHtcbiAgICBsZXQgaW5mbyA9IEluZm8uZGVyaXZlZF90cGF0KH51dHBhdCwgfmN0eCwgfmFuY2VzdG9ycyk7XG4gICAgKGluZm8sIGFkZF9pbmZvKGlkcywgSW5mb1RQYXQoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtUUGF0LnJlcF9pZCh1dHBhdCldIEAgYW5jZXN0b3JzO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZChtKTtcbiAgfCBJbnZhbGlkKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVmFyKF8pID0+IGFkZChtKVxuICB9O1xufVxuYW5kIHZhcmlhbnRfdG9faW5mb19tYXAgPVxuICAgIChcbiAgICAgIH5jdHgsXG4gICAgICB+YW5jZXN0b3JzLFxuICAgICAgfnR5X3N1bSxcbiAgICAgIChtLCBjdHJzKSxcbiAgICAgIHV0eTogQ29uc3RydWN0b3JNYXAudmFyaWFudChVVHlwLnQpLFxuICAgICkgPT4ge1xuICBsZXQgZ28gPSBleHBlY3RzID0+IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpO1xuICBzd2l0Y2ggKHV0eSkge1xuICB8IEJhZEVudHJ5KHV0eSkgPT5cbiAgICBsZXQgbSA9IGdvKFZhcmlhbnRFeHBlY3RlZChVbmlxdWUsIHR5X3N1bSksIHV0eSwgbSkgfD4gc25kO1xuICAgIChtLCBjdHJzKTtcbiAgfCBWYXJpYW50KGN0ciwgaWRzLCBwYXJhbSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICBnbyhcbiAgICAgICAgQ29uc3RydWN0b3JFeHBlY3RlZChcbiAgICAgICAgICBMaXN0Lm1lbShjdHIsIGN0cnMpID8gRHVwbGljYXRlIDogVW5pcXVlLFxuICAgICAgICAgIHR5X3N1bSxcbiAgICAgICAgKSxcbiAgICAgICAge3Rlcm06IFZhcihjdHIpLCBpZHMsIGNvcGllZDogZmFsc2V9LFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID1cbiAgICAgIHN3aXRjaCAocGFyYW0pIHtcbiAgICAgIHwgU29tZShwYXJhbV90eSkgPT4gZ28oVHlwZUV4cGVjdGVkLCBwYXJhbV90eSwgbSkgfD4gc25kXG4gICAgICB8IE5vbmUgPT4gbVxuICAgICAgfTtcbiAgICAobSwgW2N0ciwgLi4uY3Ryc10pO1xuICB9O1xufTtcblxubGV0IGdldF9lcnJvcl9hdCA9IChpbmZvX21hcDogTWFwLnQsIGlkOiBJZC50KSA9PiB7XG4gIGlkXG4gIHw+IElkLk1hcC5maW5kX29wdChfLCBpbmZvX21hcClcbiAgfD4gT3B0aW9uLmJpbmQoXG4gICAgICAgXyxcbiAgICAgICBmdW5cbiAgICAgICB8IEluZm9FeHAoZSkgPT4gU29tZShlKVxuICAgICAgIHwgXyA9PiBOb25lLFxuICAgICApXG4gIHw+IE9wdGlvbi5iaW5kKF8sIGUgPT5cbiAgICAgICBzd2l0Y2ggKGUuc3RhdHVzKSB7XG4gICAgICAgfCBJbkhvbGUoZXJyX2luZm8pID0+IFNvbWUoZXJyX2luZm8pXG4gICAgICAgfCBOb3RJbkhvbGUoXykgPT4gTm9uZVxuICAgICAgIH1cbiAgICAgKTtcbn07XG5cbmxldCBnZXRfcGF0X2Vycm9yX2F0ID0gKGluZm9fbWFwOiBNYXAudCwgaWQ6IElkLnQpID0+IHtcbiAgaWRcbiAgfD4gSWQuTWFwLmZpbmRfb3B0KF8sIGluZm9fbWFwKVxuICB8PiBPcHRpb24uYmluZChcbiAgICAgICBfLFxuICAgICAgIGZ1blxuICAgICAgIHwgSW5mb1BhdChlKSA9PiBTb21lKGUpXG4gICAgICAgfCBfID0+IE5vbmUsXG4gICAgIClcbiAgfD4gT3B0aW9uLmJpbmQoXywgZSA9PlxuICAgICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcbiAgICAgICB8IEluSG9sZShlcnJfaW5mbykgPT4gU29tZShlcnJfaW5mbylcbiAgICAgICB8IE5vdEluSG9sZShfKSA9PiBOb25lXG4gICAgICAgfVxuICAgICApO1xufTtcblxubGV0IGNvbGxlY3RfZXJyb3JzID0gKG1hcDogTWFwLnQpOiBsaXN0KChJZC50LCBJbmZvLmVycm9yKSkgPT5cbiAgSWQuTWFwLmZvbGQoXG4gICAgKGlkLCBpbmZvOiBJbmZvLnQsIGFjYykgPT5cbiAgICAgIE9wdGlvbi50b19saXN0KEluZm8uZXJyb3Jfb2YoaW5mbykgfD4gT3B0aW9uLm1hcCh4ID0+IChpZCwgeCkpKSBAIGFjYyxcbiAgICBtYXAsXG4gICAgW10sXG4gICk7XG4iLCJpbmNsdWRlIFBhdDtcblxuLyogQSBEeW5hbWljIFBhdHRlcm4gKERIUGF0KSBpcyBhIHBhdHRlcm4gdGhhdCBpcyBwYXJ0IG9mIGFuIGV4cHJlc3Npb25cbiAgIHRoYXQgaGFzIGJlZW4gdHlwZS1jaGVja2VkLiBIZW5jZSB3aHkgdGhlc2UgZnVuY3Rpb25zIHRha2UgYm90aCBhXG4gICBwYXR0ZXJuLCBkcCwgYW5kIGFuIGluZm8gbWFwLCBtLCB3aXRoIHR5cGUgaW5mb3JtYXRpb24uICovXG5cbi8qKlxuICogV2hldGhlciBkcCBjb250YWlucyB0aGUgdmFyaWFibGUgeCBvdXRzaWRlIG9mIGEgaG9sZS5cbiAqL1xubGV0IHJlYyBiaW5kc192YXIgPSAobTogU3RhdGljcy5NYXAudCwgeDogVmFyLnQsIGRwOiB0KTogYm9vbCA9PlxuICBzd2l0Y2ggKFN0YXRpY3MuZ2V0X3BhdF9lcnJvcl9hdChtLCByZXBfaWQoZHApKSkge1xuICB8IFNvbWUoXykgPT4gZmFsc2VcbiAgfCBOb25lID0+XG4gICAgc3dpdGNoIChkcCB8PiB0ZXJtX29mKSB7XG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgIHwgQ2FzdCh5LCBfLCBfKVxuICAgIHwgUGFyZW5zKHkpID0+IGJpbmRzX3ZhcihtLCB4LCB5KVxuICAgIHwgVmFyKHkpID0+IFZhci5lcSh4LCB5KVxuICAgIHwgVHVwbGUoZHBzKSA9PiBkcHMgfD4gTGlzdC5leGlzdHMoYmluZHNfdmFyKG0sIHgpKVxuICAgIHwgQ29ucyhkcDEsIGRwMikgPT4gYmluZHNfdmFyKG0sIHgsIGRwMSkgfHwgYmluZHNfdmFyKG0sIHgsIGRwMilcbiAgICB8IExpc3RMaXQoZF9saXN0KSA9PlxuICAgICAgbGV0IG5ld19saXN0ID0gTGlzdC5tYXAoYmluZHNfdmFyKG0sIHgpLCBkX2xpc3QpO1xuICAgICAgTGlzdC5mb2xkX2xlZnQoKHx8KSwgZmFsc2UsIG5ld19saXN0KTtcbiAgICB8IEFwKF8sIF8pID0+IGZhbHNlXG4gICAgfVxuICB9O1xuXG5sZXQgcmVjIGJvdW5kX3ZhcnMgPSAoZHA6IHQpOiBsaXN0KFZhci50KSA9PlxuICBzd2l0Y2ggKGRwIHw+IHRlcm1fb2YpIHtcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBXaWxkXG4gIHwgSW52YWxpZChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IFtdXG4gIHwgQ2FzdCh5LCBfLCBfKVxuICB8IFBhcmVucyh5KSA9PiBib3VuZF92YXJzKHkpXG4gIHwgVmFyKHkpID0+IFt5XVxuICB8IFR1cGxlKGRwcykgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGJvdW5kX3ZhcnMsIGRwcykpXG4gIHwgQ29ucyhkcDEsIGRwMikgPT4gYm91bmRfdmFycyhkcDEpIEAgYm91bmRfdmFycyhkcDIpXG4gIHwgTGlzdExpdChkcHMpID0+IExpc3QuZmxhdHRlbihMaXN0Lm1hcChib3VuZF92YXJzLCBkcHMpKVxuICB8IEFwKF8sIGRwMSkgPT4gYm91bmRfdmFycyhkcDEpXG4gIH07XG4iLCJvcGVuIFV0aWw7XG5cbi8qIFRoZSBjYXN0IGNhbGN1bHVzIGlzIGJhc2VkIG9mZiB0aGUgUE9QTCAyMDE5IHBhcGVyOlxuICAgaHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE4MDUuMDAxNTUucGRmICovXG5cbi8qIEdST1VORCBUWVBFUyAqL1xuXG4vKiBZb3UgY2FuIHRoaW5rIG9mIGEgZ3JvdW5kIHR5cGUgYXMgYSB0eXBldCB0aGF0IHRlbGxzIHlvdSB3aGF0IHRoZSByb290IG9mIHRoZVxuICAgICAgdHlwZSBleHByZXNzaW9uIGlzLCBidXQgbm90aGluZyBtb3JlLiBGb3IgZXhhbXBsZTogSW50LCBbP10sID8gLT4gPywgLi4uIGFyZVxuICAgICAgZ3JvdW5kIHR5cGVzIGFuZCBbSW50XSwgPyAtPiBGbG9hdCBhcmUgbm90LlxuXG4gICAgICBUaGUgbW9zdCBpbXBvcnRhbnQgcHJvcGVydHkgb2YgZ3JvdW5kIHR5cGVzIGlzOlxuICAgICAgICAgIElmIHR3byB0eXBlcyBhcmUgZ3JvdW5kIHR5cGVzLFxuICAgICAgICAgIGFuZCB0aGUgdHdvIHR5cGVzIGFyZSBjb25zaXN0ZW50LFxuICAgICAgICAgIHRoZW4gdGhleSBhcmUgZXF1YWwuXG5cbiAgICAgICBNYWtlIHN1cmUgdGhpcyBob2xkcyBmb3IgeW91ciBuZXcgZmVhdHVyZSEhXG5cbiAgICAgICBlLmcuIFs/XSBhbmQgWz9dIGFyZSBlcXVhbCwgYnV0IFs/XSBhbmQgW0ludF0gYXJlIG5vdCAoYmVjYXVzZSBbSW50XSBpcyBub3RcbiAgICAgICBncm91bmQsIGV2ZW4gdGhvdWdoIFtJbnRdIGFuZCBbP10gYXJlIGNvbnNpc3RlbnQpLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGdyb3VuZF9jYXNlcyA9XG4gIHwgSG9sZVxuICB8IEdyb3VuZFxuICB8IE5vdEdyb3VuZE9ySG9sZShUeXAudCkgLyogdGhlIGFyZ3VtZW50IGlzIHRoZSBjb3JyZXNwb25kaW5nIGdyb3VuZCB0eXBlICovO1xuXG5sZXQgZ3JvdW5kZWRfQXJyb3cgPVxuICBOb3RHcm91bmRPckhvbGUoXG4gICAgQXJyb3coXG4gICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdCxcbiAgKTtcbmxldCBncm91bmRlZF9Gb3JhbGwgPVxuICBOb3RHcm91bmRPckhvbGUoXG4gICAgRm9yYWxsKEVtcHR5SG9sZSB8PiBUUGF0LmZyZXNoLCBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdClcbiAgICB8PiBUeXAubWtfZmFzdCxcbiAgKTtcbmxldCBncm91bmRlZF9Qcm9kID0gbGVuZ3RoID0+XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBQcm9kKExpc3RVdGlsLnJlcGxpY2F0ZShsZW5ndGgsIFR5cC5Vbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCkpXG4gICAgfD4gVHlwLm1rX2Zhc3QsXG4gICk7XG5sZXQgZ3JvdW5kZWRfU3VtOiB1bml0ID0+IFR5cC5zdW1fbWFwID1cbiAgKCkgPT4gW0JhZEVudHJ5KFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSldO1xubGV0IGdyb3VuZGVkX0xpc3QgPVxuICBOb3RHcm91bmRPckhvbGUoTGlzdChVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCkgfD4gVHlwLm1rX2Zhc3QpO1xuXG5sZXQgcmVjIGdyb3VuZF9jYXNlc19vZiA9ICh0eTogVHlwLnQpOiBncm91bmRfY2FzZXMgPT4ge1xuICBsZXQgaXNfaG9sZTogVHlwLnQgPT4gYm9vbCA9XG4gICAgZnVuXG4gICAgfCB7dGVybTogVHlwLlVua25vd24oXyksIF99ID0+IHRydWVcbiAgICB8IF8gPT4gZmFsc2U7XG4gIHN3aXRjaCAoVHlwLnRlcm1fb2YodHkpKSB7XG4gIHwgVW5rbm93bihfKSA9PiBIb2xlXG4gIHwgQm9vbFxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgU3RyaW5nXG4gIHwgVmFyKF8pXG4gIHwgUmVjKF8pXG4gIHwgRm9yYWxsKF8sIHt0ZXJtOiBVbmtub3duKF8pLCBffSlcbiAgfCBBcnJvdyh7dGVybTogVW5rbm93bihfKSwgX30sIHt0ZXJtOiBVbmtub3duKF8pLCBffSlcbiAgfCBMaXN0KHt0ZXJtOiBVbmtub3duKF8pLCBffSkgPT4gR3JvdW5kXG4gIHwgUGFyZW5zKHR5KSA9PiBncm91bmRfY2FzZXNfb2YodHkpXG4gIHwgUHJvZCh0eXMpID0+XG4gICAgaWYgKExpc3QuZm9yX2FsbChcbiAgICAgICAgICBmdW5cbiAgICAgICAgICB8ICh7dGVybTogVHlwLlVua25vd24oXyksIF99OiBUeXAudCkgPT4gdHJ1ZVxuICAgICAgICAgIHwgXyA9PiBmYWxzZSxcbiAgICAgICAgICB0eXMsXG4gICAgICAgICkpIHtcbiAgICAgIEdyb3VuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlzIHw+IExpc3QubGVuZ3RoIHw+IGdyb3VuZGVkX1Byb2Q7XG4gICAgfVxuICB8IFN1bShzbSkgPT5cbiAgICBzbSB8PiBDb25zdHJ1Y3Rvck1hcC5pc19ncm91bmQoaXNfaG9sZSlcbiAgICAgID8gR3JvdW5kIDogTm90R3JvdW5kT3JIb2xlKFN1bShncm91bmRlZF9TdW0oKSkgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgQXJyb3coXywgXykgPT4gZ3JvdW5kZWRfQXJyb3dcbiAgfCBGb3JhbGwoXykgPT4gZ3JvdW5kZWRfRm9yYWxsXG4gIHwgTGlzdChfKSA9PiBncm91bmRlZF9MaXN0XG4gIHwgQXAoXykgPT4gZmFpbHdpdGgoXCJ0eXBlIGFwcGxpY2F0aW9uIGluIGR5bmFtaWNzXCIpXG4gIH07XG59O1xuXG4vKiBDQVNUIENBTENVTFVTICovXG5cbi8qIFJ1bGVzIGFyZSB0YWtlbiBmcm9tIGZpZ3VyZSAxMiBvZiBodHRwczovL2FyeGl2Lm9yZy9wZGYvMTgwNS4wMDE1NS5wZGYgICovXG5cbi8qIGdpdmVzIGEgdHJhbnNpdGlvbiBzdGVwIHRoYXQgY2FuIGJlIHRha2VuIGJ5IHRoZSBjYXN0IGNhbGN1bHVzIGhlcmUgaWYgYXBwbGljYWJsZS4gKi9cbmxldCByZWMgdHJhbnNpdGlvbiA9ICh+cmVjdXJzaXZlPWZhbHNlLCBkOiBESEV4cC50KTogb3B0aW9uKERIRXhwLnQpID0+IHtcbiAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpKSB7XG4gIHwgQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgIGxldCBkMSA9XG4gICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgIGQxIHw+IHRyYW5zaXRpb24ofnJlY3Vyc2l2ZSkgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PWQxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGQxO1xuICAgICAgfTtcbiAgICBzd2l0Y2ggKGdyb3VuZF9jYXNlc19vZih0MSksIGdyb3VuZF9jYXNlc19vZih0MikpIHtcbiAgICB8IChIb2xlLCBIb2xlKVxuICAgIHwgKEdyb3VuZCwgR3JvdW5kKSA9PlxuICAgICAgLyogaWYgdHdvIHR5cGVzIGFyZSBncm91bmQgYW5kIGNvbnNpc3RlbnQsIHRoZW4gdGhleSBhcmUgZXEgKi9cbiAgICAgIFNvbWUoZDEpIC8vIFJ1bGUgSVRDYXN0SWRcblxuICAgIHwgKEdyb3VuZCwgSG9sZSkgPT5cbiAgICAgIC8qIGNhbid0IHJlbW92ZSB0aGUgY2FzdCBvciBkbyBhbnl0aGluZyBlbHNlIGhlcmUsIHNvIHdlJ3JlIGRvbmUgKi9cbiAgICAgIE5vbmVcblxuICAgIHwgKEhvbGUsIEdyb3VuZCkgPT5cbiAgICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMSkpIHtcbiAgICAgIHwgQ2FzdChkMiwgdDMsIHt0ZXJtOiBVbmtub3duKF8pLCBffSkgPT5cbiAgICAgICAgLyogYnkgY2Fub25pY2FsIGZvcm1zLCBkMScgbXVzdCBiZSBvZiB0aGUgZm9ybSBkPHR5JycgLT4gPz4gKi9cbiAgICAgICAgaWYgKFR5cC5lcSh0MywgdDIpKSB7XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGQyKTsgLy8gUnVsZSBJVENhc3RTdWNjZWVkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZhaWxlZENhc3QoZDIsIHQzLCB0MikgfD4gREhFeHAuZnJlc2gpOyAvLyBSdWxlIElUQ2FzdEZhaWxcbiAgICAgICAgfVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH1cblxuICAgIHwgKEhvbGUsIE5vdEdyb3VuZE9ySG9sZSh0Ml9ncm91bmRlZCkpID0+XG4gICAgICAvKiBJVEV4cGFuZCBydWxlICovXG4gICAgICBsZXQgaW5uZXJfY2FzdCA9IENhc3QoZDEsIHQxLCB0Ml9ncm91bmRlZCkgfD4gREhFeHAuZnJlc2g7XG4gICAgICAvLyBIQUNLOiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBpbm5lciBjYXN0IGhlcmVcbiAgICAgIGxldCBpbm5lcl9jYXN0ID1cbiAgICAgICAgc3dpdGNoICh0cmFuc2l0aW9uKH5yZWN1cnNpdmUsIGlubmVyX2Nhc3QpKSB7XG4gICAgICAgIHwgU29tZShkMSkgPT4gZDFcbiAgICAgICAgfCBOb25lID0+IGlubmVyX2Nhc3RcbiAgICAgICAgfTtcbiAgICAgIFNvbWUoREhFeHAuQ2FzdChpbm5lcl9jYXN0LCB0Ml9ncm91bmRlZCwgdDIpIHw+IERIRXhwLmZyZXNoKTtcblxuICAgIHwgKE5vdEdyb3VuZE9ySG9sZSh0MV9ncm91bmRlZCksIEhvbGUpID0+XG4gICAgICAvKiBJVEdyb3VuZCBydWxlICovXG4gICAgICBTb21lKFxuICAgICAgICBESEV4cC5DYXN0KENhc3QoZDEsIHQxLCB0MV9ncm91bmRlZCkgfD4gREhFeHAuZnJlc2gsIHQxX2dyb3VuZGVkLCB0MilcbiAgICAgICAgfD4gREhFeHAuZnJlc2gsXG4gICAgICApXG5cbiAgICB8IChHcm91bmQsIE5vdEdyb3VuZE9ySG9sZShfKSkgPT5cbiAgICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMSkpIHtcbiAgICAgIHwgQ2FzdChkMiwgdDMsIF8pID0+XG4gICAgICAgIGlmIChUeXAuZXEodDMsIHQyKSkge1xuICAgICAgICAgIFNvbWUoZDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE5vbmU7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9XG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKF8pLCBHcm91bmQpID0+XG4gICAgICAvKiBjYW4ndCBkbyBhbnl0aGluZyB3aGVuIGNhc3RpbmcgYmV0d2VlbiBkaXNlcSwgbm9uLWhvbGUgdHlwZXMgKi9cbiAgICAgIE5vbmVcblxuICAgIHwgKE5vdEdyb3VuZE9ySG9sZShfKSwgTm90R3JvdW5kT3JIb2xlKF8pKSA9PlxuICAgICAgLyogdGhleSBtaWdodCBiZSBlcSBpbiB0aGlzIGNhc2UsIHNvIHJlbW92ZSBjYXN0IGlmIHNvICovXG4gICAgICBpZiAoVHlwLmVxKHQxLCB0MikpIHtcbiAgICAgICAgU29tZVxuICAgICAgICAgIChkMSk7IC8vIFJ1bGUgSVRDYXN0SWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE5vbmU7XG4gICAgICB9XG4gICAgfTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCByZWMgdHJhbnNpdGlvbl9tdWx0aXBsZSA9IChkOiBESEV4cC50KTogREhFeHAudCA9PiB7XG4gIHN3aXRjaCAodHJhbnNpdGlvbih+cmVjdXJzaXZlPXRydWUsIGQpKSB7XG4gIHwgU29tZShkJycpID0+IHRyYW5zaXRpb25fbXVsdGlwbGUoZCcnKVxuICB8IE5vbmUgPT4gZFxuICB9O1xufTtcblxuLy8gU28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHJlZ2VuZXJhdGUgaXRzIGlkXG5sZXQgaG9sZSA9IEVtcHR5SG9sZSB8PiBESEV4cC5mcmVzaDtcblxuLy8gSGFja3kgd2F5IHRvIGRvIHRyYW5zaXRpb25fbXVsdGlwbGUgb24gcGF0dGVybnMgYnkgdHJhbnNmZXJyaW5nXG4vLyB0aGUgY2FzdCB0byB0aGUgZXhwcmVzc2lvbiBhbmQgdGhlbiBiYWNrIHRvIHRoZSBwYXR0ZXJuLlxubGV0IHBhdHRlcm5fZml4dXAgPSAocDogREhQYXQudCk6IERIUGF0LnQgPT4ge1xuICBsZXQgcmVjIHVud3JhcF9jYXN0cyA9IChwOiBESFBhdC50KTogKERIUGF0LnQsIERIRXhwLnQpID0+IHtcbiAgICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YocCkpIHtcbiAgICB8IENhc3QocDEsIHQxLCB0MikgPT5cbiAgICAgIGxldCAocDEsIGQxKSA9IHVud3JhcF9jYXN0cyhwMSk7XG4gICAgICAoXG4gICAgICAgIHAxLFxuICAgICAgICB7dGVybTogREhFeHAuQ2FzdChkMSwgdDEsIHQyKSwgY29waWVkOiBwLmNvcGllZCwgaWRzOiBwLmlkc31cbiAgICAgICAgfD4gdHJhbnNpdGlvbl9tdWx0aXBsZSxcbiAgICAgICk7XG4gICAgfCBfID0+IChwLCBob2xlKVxuICAgIH07XG4gIH07XG4gIGxldCByZWMgcmV3cmFwX2Nhc3RzID0gKChwOiBESFBhdC50LCBkOiBESEV4cC50KSk6IERIUGF0LnQgPT4ge1xuICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkKSkge1xuICAgIHwgRW1wdHlIb2xlID0+IHBcbiAgICB8IENhc3QoZDEsIHQxLCB0MikgPT5cbiAgICAgIGxldCBwMSA9IHJld3JhcF9jYXN0cygocCwgZDEpKTtcbiAgICAgIHt0ZXJtOiBESFBhdC5DYXN0KHAxLCB0MSwgdDIpLCBjb3BpZWQ6IGQuY29waWVkLCBpZHM6IGQuaWRzfTtcbiAgICB8IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgPT5cbiAgICAgIGxldCBwMSA9IHJld3JhcF9jYXN0cygocCwgZDEpKTtcbiAgICAgIHtcbiAgICAgICAgdGVybTpcbiAgICAgICAgICBESFBhdC5DYXN0KFxuICAgICAgICAgICAgREhQYXQuQ2FzdChwMSwgdDEsIFR5cC5mcmVzaChVbmtub3duKEludGVybmFsKSkpIHw+IERIUGF0LmZyZXNoLFxuICAgICAgICAgICAgVHlwLmZyZXNoKFVua25vd24oSW50ZXJuYWwpKSxcbiAgICAgICAgICAgIHQyLFxuICAgICAgICAgICksXG4gICAgICAgIGNvcGllZDogZC5jb3BpZWQsXG4gICAgICAgIGlkczogZC5pZHMsXG4gICAgICB9O1xuICAgIHwgXyA9PiBmYWlsd2l0aChcInVuZXhwZWN0ZWQgdGVybSBpbiByZXdyYXBfY2FzdHNcIilcbiAgICB9O1xuICB9O1xuICBwIHw+IHVud3JhcF9jYXN0cyB8PiByZXdyYXBfY2FzdHM7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIEV2YWx1YXRpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHNob3dfY2FzZV9jbGF1c2VzOiBib29sLFxuICAgIHNob3dfZm5fYm9kaWVzOiBib29sLFxuICAgIHNob3dfZml4cG9pbnRzOiBib29sLFxuICAgIHNob3dfY2FzdHM6IGJvb2wsXG4gICAgc2hvd19sb29rdXBfc3RlcHM6IGJvb2wsXG4gICAgc2hvd19zdGVwcGVyX2ZpbHRlcnM6IGJvb2wsXG4gICAgLy8gVE9ET1tNYXR0XTogTW92ZSB0aGlzIHRvIHNvbWV3aGVyZSB3aGVyZSBpdCBpcyBhIHBlci1zY3JhdGNoIHNldHRpbmdcbiAgICBzdGVwcGVyX2hpc3Rvcnk6IGJvb2wsXG4gICAgc2hvd19zZXR0aW5nczogYm9vbCxcbiAgICBzaG93X2hpZGRlbl9zdGVwczogYm9vbCxcbiAgfTtcblxuICBsZXQgaW5pdCA9IHtcbiAgICBzaG93X2Nhc2VfY2xhdXNlczogdHJ1ZSxcbiAgICBzaG93X2ZuX2JvZGllczogZmFsc2UsXG4gICAgc2hvd19maXhwb2ludHM6IGZhbHNlLFxuICAgIHNob3dfY2FzdHM6IGZhbHNlLFxuICAgIHNob3dfbG9va3VwX3N0ZXBzOiBmYWxzZSxcbiAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogZmFsc2UsXG4gICAgc3RlcHBlcl9oaXN0b3J5OiBmYWxzZSxcbiAgICBzaG93X3NldHRpbmdzOiBmYWxzZSxcbiAgICBzaG93X2hpZGRlbl9zdGVwczogZmFsc2UsXG4gIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHN0YXRpY3M6IGJvb2wsXG4gIGVsYWJvcmF0ZTogYm9vbCxcbiAgYXNzaXN0OiBib29sLFxuICBkeW5hbWljczogYm9vbCxcbiAgZXZhbHVhdGlvbjogRXZhbHVhdGlvbi50LFxufTtcblxubGV0IG9mZjogdCA9IHtcbiAgc3RhdGljczogZmFsc2UsXG4gIGVsYWJvcmF0ZTogZmFsc2UsXG4gIGFzc2lzdDogZmFsc2UsXG4gIGR5bmFtaWNzOiBmYWxzZSxcbiAgZXZhbHVhdGlvbjogRXZhbHVhdGlvbi5pbml0LFxufTtcblxubGV0IG9uOiB0ID0ge1xuICBzdGF0aWNzOiB0cnVlLFxuICBlbGFib3JhdGU6IHRydWUsXG4gIGFzc2lzdDogdHJ1ZSxcbiAgZHluYW1pY3M6IHRydWUsXG4gIGV2YWx1YXRpb246IEV2YWx1YXRpb24uaW5pdCxcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRlcm0gPVxuICB8IENsb3N1cmUoW0BzaG93Lm9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gIHwgRmlsdGVyKFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLnQsIHQpXG4gIHwgU2VxMSh0LCBESEV4cC50KVxuICB8IFNlcTIoREhFeHAudCwgdClcbiAgfCBMZXQxKFBhdC50LCB0LCBESEV4cC50KVxuICB8IExldDIoUGF0LnQsIERIRXhwLnQsIHQpXG4gIHwgRnVuKFBhdC50LCB0LCBvcHRpb24oQ2xvc3VyZUVudmlyb25tZW50LnQpLCBvcHRpb24oVmFyLnQpKVxuICB8IEZpeEYoUGF0LnQsIHQsIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCkpXG4gIHwgVHlwQXAodCwgVHlwLnQpXG4gIHwgQXAxKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIERIRXhwLnQpXG4gIHwgQXAyKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIERIRXhwLnQsIHQpXG4gIHwgRGVmZXJyZWRBcDEodCwgbGlzdChESEV4cC50KSlcbiAgfCBEZWZlcnJlZEFwMihESEV4cC50LCB0LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpXG4gIHwgSWYxKHQsIERIRXhwLnQsIERIRXhwLnQpXG4gIHwgSWYyKERIRXhwLnQsIHQsIERIRXhwLnQpXG4gIHwgSWYzKERIRXhwLnQsIERIRXhwLnQsIHQpXG4gIHwgVW5PcChPcGVyYXRvcnMub3BfdW4sIHQpXG4gIHwgQmluT3AxKE9wZXJhdG9ycy5vcF9iaW4sIHQsIERIRXhwLnQpXG4gIHwgQmluT3AyKE9wZXJhdG9ycy5vcF9iaW4sIERIRXhwLnQsIHQpXG4gIHwgVHVwbGUodCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKVxuICB8IFRlc3QodClcbiAgfCBMaXN0TGl0KHQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSlcbiAgfCBNdWx0aUhvbGUodCwgKGxpc3QoQW55LnQpLCBsaXN0KEFueS50KSkpXG4gIHwgQ29uczEodCwgREhFeHAudClcbiAgfCBDb25zMihESEV4cC50LCB0KVxuICB8IExpc3RDb25jYXQxKHQsIERIRXhwLnQpXG4gIHwgTGlzdENvbmNhdDIoREhFeHAudCwgdClcbiAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgfCBGYWlsZWRDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgfCBEeW5hbWljRXJyb3JIb2xlKHQsIEludmFsaWRPcGVyYXRpb25FcnJvci50KVxuICB8IE1hdGNoU2NydXQodCwgbGlzdCgoVVBhdC50LCBESEV4cC50KSkpXG4gIHwgTWF0Y2hSdWxlKFxuICAgICAgREhFeHAudCxcbiAgICAgIFVQYXQudCxcbiAgICAgIHQsXG4gICAgICAobGlzdCgoVVBhdC50LCBESEV4cC50KSksIGxpc3QoKFVQYXQudCwgREhFeHAudCkpKSxcbiAgICApXG5hbmQgdCA9XG4gIHwgTWFya1xuICB8IFRlcm0oe1xuICAgICAgdGVybSxcbiAgICAgIGlkczogbGlzdChJZC50KSxcbiAgICB9KTtcblxubGV0IHJlYyBjb21wb3NlID0gKGN0eDogdCwgZDogREhFeHAudCk6IERIRXhwLnQgPT4ge1xuICBzd2l0Y2ggKGN0eCkge1xuICB8IE1hcmsgPT4gZFxuICB8IFRlcm0oe3Rlcm0sIGlkc30pID0+XG4gICAgbGV0IHdyYXAgPSBESEV4cC5tayhpZHMpO1xuICAgIERIRXhwLihcbiAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgfCBDbG9zdXJlKGVudiwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ2xvc3VyZShlbnYsIGQpIHw+IHdyYXA7XG4gICAgICB8IEZpbHRlcihmbHQsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZpbHRlcihmbHQsIGQpIHw+IHdyYXA7XG4gICAgICB8IFNlcTEoY3R4LCBkMikgPT5cbiAgICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBTZXEoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBTZXEyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgU2VxKGQxLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgQXAxKGRpciwgY3R4LCBkMikgPT5cbiAgICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBBcChkaXIsIGQxLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgQXAyKGRpciwgZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBBcChkaXIsIGQxLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgRGVmZXJyZWRBcDEoY3R4LCBkMnMpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRGVmZXJyZWRBcChkMSwgZDJzKSB8PiB3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMihkMSwgY3R4LCAobGQsIHJkKSkgPT5cbiAgICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEZWZlcnJlZEFwKGQxLCBMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZDIsIC4uLnJkXSkpIHw+IHdyYXA7XG4gICAgICB8IElmMShjdHgsIGQyLCBkMykgPT5cbiAgICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBJZihkJywgZDIsIGQzKSB8PiB3cmFwO1xuICAgICAgfCBJZjIoZDEsIGN0eCwgZDMpID0+XG4gICAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgSWYoZDEsIGQnLCBkMykgfD4gd3JhcDtcbiAgICAgIHwgSWYzKGQxLCBkMiwgY3R4KSA9PlxuICAgICAgICBsZXQgZCcgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIElmKGQxLCBkMiwgZCcpIHw+IHdyYXA7XG4gICAgICB8IFRlc3QoY3R4KSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFRlc3QoZDEpIHw+IHdyYXA7XG4gICAgICB8IFVuT3Aob3AsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBVbk9wKG9wLCBkMSkgfD4gd3JhcDtcbiAgICAgIHwgQmluT3AxKG9wLCBjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEJpbk9wKG9wLCBkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IEJpbk9wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBCaW5PcChvcCwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBDb25zMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIENvbnMoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBDb25zMihkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIENvbnMoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBMaXN0Q29uY2F0MShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIExpc3RDb25jYXQoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBMaXN0Q29uY2F0MihkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIExpc3RDb25jYXQoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBUdXBsZShjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgVHVwbGUoTGlzdFV0aWwucmV2X2NvbmNhdChsZCwgW2QsIC4uLnJkXSkpIHw+IHdyYXA7XG4gICAgICB8IExpc3RMaXQoY3R4LCAobGQsIHJkKSkgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIExpc3RMaXQoTGlzdFV0aWwucmV2X2NvbmNhdChsZCwgW2QsIC4uLnJkXSkpIHw+IHdyYXA7XG4gICAgICB8IE11bHRpSG9sZShjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTXVsdGlIb2xlKExpc3RVdGlsLnJldl9jb25jYXQobGQsIFtUZXJtQmFzZS5BbnkuRXhwKGQpLCAuLi5yZF0pKVxuICAgICAgICB8PiB3cmFwO1xuICAgICAgfCBMZXQxKGRwLCBjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGV0KGRwLCBkLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgTGV0MihkcCwgZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIExldChkcCwgZDEsIGQpIHw+IHdyYXA7XG4gICAgICB8IEZ1bihkcCwgY3R4LCBlbnYsIHYpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBGdW4oZHAsIGQsIGVudiwgdikgfD4gd3JhcDtcbiAgICAgIHwgRml4Rih2LCBjdHgsIGVudikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZpeEYodiwgZCwgZW52KSB8PiB3cmFwO1xuICAgICAgfCBDYXN0KGN0eCwgdHkxLCB0eTIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBDYXN0KGQsIHR5MSwgdHkyKSB8PiB3cmFwO1xuICAgICAgfCBGYWlsZWRDYXN0KGN0eCwgdHkxLCB0eTIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBGYWlsZWRDYXN0KGQsIHR5MSwgdHkyKSB8PiB3cmFwO1xuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKGN0eCwgZXJyKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRHluYW1pY0Vycm9ySG9sZShkLCBlcnIpIHw+IHdyYXA7XG4gICAgICB8IE1hdGNoU2NydXQoY3R4LCBydWxlcykgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIE1hdGNoKGQsIHJ1bGVzKSB8PiB3cmFwO1xuICAgICAgfCBNYXRjaFJ1bGUoc2NyLCBwLCBjdHgsIChsciwgcnIpKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTWF0Y2goc2NyLCBMaXN0VXRpbC5yZXZfY29uY2F0KGxyLCBbKHAsIGQpLCAuLi5ycl0pKSB8PiB3cmFwO1xuICAgICAgfCBUeXBBcChjdHgsIHR5KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgVHlwQXAoZCwgdHkpIHw+IHdyYXA7XG4gICAgICB9XG4gICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbi8qIFdoYXQgaXMgdW5ib3hpbmc/XG5cbiAgIFdoZW4geW91IGhhdmUgYW4gZXhwcmVzc2lvbiBvZiB0eXBlIGxpc3QsIGFuZCBpdCdzIGZpbmlzaGVkIGV2YWx1YXRpbmcsXG4gICBpcyBpdCBhIGxpc3Q/IFNhZGx5IG5vdCBuZWNlc3NhcmlseSwgaXQgbWlnaHQgYmU6XG5cbiAgICAtIGluZGV0ZXJtaW5hdGUsIGUuZy4gaXQgaGFzIGEgaG9sZSBpbiBpdFxuICAgIC0gYSBsaXN0IHdpdGggc29tZSBjYXN0cyB3cmFwcGVkIGFyb3VuZCBpdFxuXG4gICAgVW5ib3hpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgdHVybmluZyBhIGxpc3QgaW50byBhIGxpc3QgaWYgaXQgaXMgYSBsaXN0LFxuICAgIGJ5IHB1c2hpbmcgY2FzdHMgaW5zaWRlIGRhdGEgc3RydWN0dXJlcywgb3IgZ2l2aW5nIHVwIGlmIGl0IGlzIG5vdCBhIGxpc3QuXG5cbiAgICBOb3RlIHVuYm94aW5nIG9ubHkgd29ya3Mgb25lIGxheWVyIGRlZXAsIGlmIHdlIGhhdmUgYSBsaXN0IG9mIGxpc3RzIHRoZW5cbiAgICB0aGUgaW5uZXIgbGlzdHMgbWF5IHN0aWxsIGhhdmUgY2FzdHMgYXJvdW5kIHRoZW0gYWZ0ZXIgdW5ib3hpbmcuXG4gICAgKi9cblxudHlwZSB1bmJveF9yZXF1ZXN0KCdhKSA9XG4gIHwgSW50OiB1bmJveF9yZXF1ZXN0KGludClcbiAgfCBGbG9hdDogdW5ib3hfcmVxdWVzdChmbG9hdClcbiAgfCBCb29sOiB1bmJveF9yZXF1ZXN0KGJvb2wpXG4gIHwgU3RyaW5nOiB1bmJveF9yZXF1ZXN0KHN0cmluZylcbiAgfCBUdXBsZShpbnQpOiB1bmJveF9yZXF1ZXN0KGxpc3QoREhFeHAudCkpXG4gIHwgTGlzdDogdW5ib3hfcmVxdWVzdChsaXN0KERIRXhwLnQpKVxuICB8IENvbnM6IHVuYm94X3JlcXVlc3QoKERIRXhwLnQsIERIRXhwLnQpKVxuICB8IFN1bU5vQXJnKHN0cmluZyk6IHVuYm94X3JlcXVlc3QodW5pdClcbiAgfCBTdW1XaXRoQXJnKHN0cmluZyk6IHVuYm94X3JlcXVlc3QoREhFeHAudCk7XG5cbnR5cGUgdW5ib3hlZCgnYSkgPVxuICB8IERvZXNOb3RNYXRjaFxuICB8IEluZGV0TWF0Y2hcbiAgfCBNYXRjaGVzKCdhKTtcblxubGV0ICggbGV0KiApID0gKHg6IHVuYm94ZWQoJ2EpLCBmOiAnYSA9PiB1bmJveGVkKCdiKSk6IHVuYm94ZWQoJ2IpID0+XG4gIHN3aXRjaCAoeCkge1xuICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRNYXRjaFxuICB8IERvZXNOb3RNYXRjaCA9PiBEb2VzTm90TWF0Y2hcbiAgfCBNYXRjaGVzKHgpID0+IGYoeClcbiAgfTtcblxubGV0IGZpeHVwX2Nhc3QgPSBDYXN0cy50cmFuc2l0aW9uX211bHRpcGxlO1xuXG4vKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIGRpZmZlcmVudCByZXR1cm4gdHlwZSBkZXBlbmRpbmcgb24gd2hhdCBraW5kIG9mIHJlcXVlc3RcbiAgIGl0IGlzIGdpdmVuLiBUaGlzIHVuZm9ydHVuYXRlbHkgdXNlcyBhIGNyYXp5IE9DYW1sIGZlYXR1cmUgY2FsbGVkIEdBRFRTLCBidXRcbiAgIGl0IGF2b2lkcyBoYXZpbmcgdG8gd3JpdGUgYSBzZXBhcmF0ZSB1bmJveCBmdW5jdGlvbiBmb3IgZWFjaCBraW5kIG9mIHJlcXVlc3QuXG4gICAqL1xuXG5sZXQgcmVjIHVuYm94OiB0eXBlIGEuICh1bmJveF9yZXF1ZXN0KGEpLCBESEV4cC50KSA9PiB1bmJveGVkKGEpID1cbiAgKHJlcXVlc3QsIGV4cHIpID0+IHtcbiAgICBzd2l0Y2ggKHJlcXVlc3QsIERIRXhwLnRlcm1fb2YoZXhwcikpIHtcbiAgICAvKiBSZW1vdmUgcGFyZW50aGVzZXMgZnJvbSBjYXN0cyAqL1xuICAgIHwgKF8sIENhc3QoZCwge3Rlcm06IFBhcmVucyh4KSwgX30sIHkpKVxuICAgIHwgKF8sIENhc3QoZCwgeCwge3Rlcm06IFBhcmVucyh5KSwgX30pKSA9PlxuICAgICAgdW5ib3gocmVxdWVzdCwgQ2FzdChkLCB4LCB5KSB8PiBESEV4cC5mcmVzaClcblxuICAgIC8qIEJhc2UgdHlwZXMgYXJlIGFsd2F5cyBhbHJlYWR5IHVuYm94ZWQgYmVjYXVzZSBvZiB0aGUgSVRDYXN0SUQgcnVsZSovXG4gICAgfCAoQm9vbCwgQm9vbChiKSkgPT4gTWF0Y2hlcyhiKVxuICAgIHwgKEludCwgSW50KGkpKSA9PiBNYXRjaGVzKGkpXG4gICAgfCAoRmxvYXQsIEZsb2F0KGYpKSA9PiBNYXRjaGVzKGYpXG4gICAgfCAoU3RyaW5nLCBTdHJpbmcocykpID0+IE1hdGNoZXMocylcblxuICAgIC8qIExpc3RzIGNhbiBiZSBlaXRoZXIgbGlzdHMgb3IgbGlzdCBjYXN0cyAqL1xuICAgIHwgKExpc3QsIExpc3RMaXQobCkpID0+IE1hdGNoZXMobClcbiAgICB8IChDb25zLCBMaXN0TGl0KFt4LCAuLi54c10pKSA9PlxuICAgICAgTWF0Y2hlcygoeCwgTGlzdExpdCh4cykgfD4gREhFeHAuZnJlc2gpKVxuICAgIHwgKENvbnMsIExpc3RMaXQoW10pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChMaXN0LCBDYXN0KGwsIHt0ZXJtOiBMaXN0KHQxKSwgX30sIHt0ZXJtOiBMaXN0KHQyKSwgX30pKSA9PlxuICAgICAgbGV0KiBsID0gdW5ib3goTGlzdCwgbCk7XG4gICAgICBsZXQgbCA9IExpc3QubWFwKGQgPT4gQ2FzdChkLCB0MSwgdDIpIHw+IERIRXhwLmZyZXNoLCBsKTtcbiAgICAgIGxldCBsID0gTGlzdC5tYXAoZml4dXBfY2FzdCwgbCk7XG4gICAgICBNYXRjaGVzKGwpO1xuICAgIHwgKFxuICAgICAgICBDb25zLFxuICAgICAgICBDYXN0KGwsIHt0ZXJtOiBMaXN0KHQxKSwgX30gYXMgY3QxLCB7dGVybTogTGlzdCh0MiksIF99IGFzIGN0MiksXG4gICAgICApID0+XG4gICAgICBsZXQqIGwgPSB1bmJveChMaXN0LCBsKTtcbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBbXSA9PiBEb2VzTm90TWF0Y2hcbiAgICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgICBNYXRjaGVzKChcbiAgICAgICAgICBDYXN0KHgsIHQxLCB0MikgfD4gREhFeHAuZnJlc2ggfD4gZml4dXBfY2FzdCxcbiAgICAgICAgICBDYXN0KExpc3RMaXQoeHMpIHw+IERIRXhwLmZyZXNoLCBjdDEsIGN0MikgfD4gREhFeHAuZnJlc2gsXG4gICAgICAgICkpXG4gICAgICB9O1xuXG4gICAgLyogVHVwbGVzIGNhbiBiZSBlaXRoZXIgdHVwbGVzIG9yIHR1cGxlIGNhc3RzICovXG4gICAgfCAoVHVwbGUobiksIFR1cGxlKHQpKSB3aGVuIExpc3QubGVuZ3RoKHQpID09IG4gPT4gTWF0Y2hlcyh0KVxuICAgIHwgKFR1cGxlKF8pLCBUdXBsZShfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoVHVwbGUobiksIENhc3QodCwge3Rlcm06IFByb2QodDFzKSwgX30sIHt0ZXJtOiBQcm9kKHQycyksIF99KSlcbiAgICAgICAgd2hlbiBuID09IExpc3QubGVuZ3RoKHQxcykgJiYgbiA9PSBMaXN0Lmxlbmd0aCh0MnMpID0+XG4gICAgICBsZXQqIHQgPSB1bmJveChUdXBsZShuKSwgdCk7XG4gICAgICBsZXQgdCA9XG4gICAgICAgIExpc3RVdGlsLm1hcDMoXG4gICAgICAgICAgKGQsIHQxLCB0MikgPT4gQ2FzdChkLCB0MSwgdDIpIHw+IERIRXhwLmZyZXNoLFxuICAgICAgICAgIHQsXG4gICAgICAgICAgdDFzLFxuICAgICAgICAgIHQycyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0ID0gTGlzdC5tYXAoZml4dXBfY2FzdCwgdCk7XG4gICAgICBNYXRjaGVzKHQpO1xuXG4gICAgLyogU3VtIGNvbnN0cnVjdG9ycyBjYW4gYmUgZWl0aGVyIHN1bSBjb25zdHJ1Y3RvcnMsIHN1bSBjb25zdHJ1Y3RvcnNcbiAgICAgICBhcHBsaWVkIHRvIHNvbWUgdmFsdWUgb3Igc3VtIGNhc3RzICovXG4gICAgfCAoU3VtTm9BcmcobmFtZTEpLCBDb25zdHJ1Y3RvcihuYW1lMikpIHdoZW4gbmFtZTEgPT0gbmFtZTIgPT4gTWF0Y2hlcygpXG4gICAgfCAoU3VtTm9BcmcoXyksIENvbnN0cnVjdG9yKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChTdW1Ob0FyZyhfKSwgQXAoXywge3Rlcm06IENvbnN0cnVjdG9yKF8pLCBffSwgXykpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKFN1bU5vQXJnKG5hbWUpLCBDYXN0KGQxLCB7dGVybTogU3VtKF8pLCBffSwge3Rlcm06IFN1bShzMiksIF99KSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIENvbnN0cnVjdG9yTWFwLmhhc19jb25zdHJ1Y3Rvcl9ub19hcmdzKG5hbWUsIHMyKVxuICAgICAgICAgIHx8IENvbnN0cnVjdG9yTWFwLmhhc19iYWRfZW50cnkoczIpID0+XG4gICAgICBsZXQqIGQxID0gdW5ib3goU3VtTm9BcmcobmFtZSksIGQxKTtcbiAgICAgIE1hdGNoZXMoZDEpO1xuICAgIHwgKFN1bU5vQXJnKF8pLCBDYXN0KF8sIHt0ZXJtOiBTdW0oXyksIF99LCB7dGVybTogU3VtKF8pLCBffSkpID0+XG4gICAgICBJbmRldE1hdGNoXG5cbiAgICB8IChTdW1XaXRoQXJnKF8pLCBDb25zdHJ1Y3RvcihfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtV2l0aEFyZyhuYW1lMSksIEFwKF8sIHt0ZXJtOiBDb25zdHJ1Y3RvcihuYW1lMiksIF99LCBkMykpXG4gICAgICAgIHdoZW4gbmFtZTEgPT0gbmFtZTIgPT5cbiAgICAgIE1hdGNoZXMoZDMpXG4gICAgfCAoU3VtV2l0aEFyZyhfKSwgQXAoXywge3Rlcm06IENvbnN0cnVjdG9yKF8pLCBffSwgXykpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKFN1bVdpdGhBcmcobmFtZSksIENhc3QoZDEsIHt0ZXJtOiBTdW0oXyksIF99LCB7dGVybTogU3VtKHMyKSwgX30pKVxuICAgICAgICB3aGVuXG4gICAgICAgICAgQ29uc3RydWN0b3JNYXAuZ2V0X2VudHJ5KG5hbWUsIHMyKSAhPSBOb25lXG4gICAgICAgICAgfHwgQ29uc3RydWN0b3JNYXAuaGFzX2JhZF9lbnRyeShzMikgPT5cbiAgICAgIGxldCogZDEgPSB1bmJveChTdW1XaXRoQXJnKG5hbWUpLCBkMSk7XG4gICAgICBNYXRjaGVzKGQxIHw+IGZpeHVwX2Nhc3QpO1xuICAgIHwgKFN1bVdpdGhBcmcoXyksIENhc3QoXywge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oXyksIF99KSkgPT5cbiAgICAgIEluZGV0TWF0Y2hcblxuICAgIC8qIEFueSBjYXN0IGZyb20gdW5rbm93biBpcyBpbmRldCAqL1xuICAgIHwgKF8sIENhc3QoXywge3Rlcm06IFVua25vd24oXyksIF99LCBfKSkgPT4gSW5kZXRNYXRjaFxuXG4gICAgLyogRm9ybXMgdGhhdCBhcmUgdGhlIHdyb25nIHR5cGUgb2YgdmFsdWUgLSB0aGVzZSBjYXNlcyBpbmRpY2F0ZSBhbiBlcnJvclxuICAgICAgIGluIGVsYWJvcmF0aW9uIG9yIGluIHRoZSBjYXN0IGNhbGN1bHVzLiAqL1xuICAgIHwgKFxuICAgICAgICBfLFxuICAgICAgICBCb29sKF8pIHwgSW50KF8pIHwgRmxvYXQoXykgfCBTdHJpbmcoXykgfCBDb25zdHJ1Y3RvcihfKSB8XG4gICAgICAgIEJ1aWx0aW5GdW4oXykgfFxuICAgICAgICBEZWZlcnJhbChfKSB8XG4gICAgICAgIERlZmVycmVkQXAoXykgfFxuICAgICAgICBGdW4oXywgXywgXywgU29tZShfKSkgfFxuICAgICAgICBMaXN0TGl0KF8pIHxcbiAgICAgICAgVHVwbGUoXykgfFxuICAgICAgICBDYXN0KF8pIHxcbiAgICAgICAgQXAoXywge3Rlcm06IENvbnN0cnVjdG9yKF8pLCBffSwgXykgfFxuICAgICAgICBUeXBGdW4oXykgfFxuICAgICAgICBUeXBBcChfKSxcbiAgICAgICkgPT5cbiAgICAgIHN3aXRjaCAocmVxdWVzdCkge1xuICAgICAgfCBCb29sID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRCb29sTGl0KGV4cHIpKSlcbiAgICAgIHwgSW50ID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRJbnRMaXQoZXhwcikpKVxuICAgICAgfCBGbG9hdCA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkRmxvYXRMaXQoZXhwcikpKVxuICAgICAgfCBTdHJpbmcgPT5cbiAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFN0cmluZ0xpdChleHByKSkpXG4gICAgICB8IFR1cGxlKF8pID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRUdXBsZShleHByKSkpXG4gICAgICB8IExpc3RcbiAgICAgIHwgQ29ucyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkTGlzdExpdChleHByKSkpXG4gICAgICB8IFN1bU5vQXJnKF8pXG4gICAgICB8IFN1bVdpdGhBcmcoXykgPT5cbiAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFN1bUNvbnN0cnVjdG9yKGV4cHIpKSlcbiAgICAgIH1cblxuICAgIC8qIEZvcm1zIHRoYXQgYXJlIG5vdCB5ZXQgb3Igd2lsbCBuZXZlciBiZSBhIHZhbHVlICovXG4gICAgfCAoXG4gICAgICAgIF8sXG4gICAgICAgIEludmFsaWQoXykgfCBFbXB0eUhvbGUgfCBNdWx0aUhvbGUoXykgfCBEeW5hbWljRXJyb3JIb2xlKF8pIHxcbiAgICAgICAgRmFpbGVkQ2FzdChfKSB8XG4gICAgICAgIFZhcihfKSB8XG4gICAgICAgIExldChfKSB8XG4gICAgICAgIEZ1bihfLCBfLCBfLCBOb25lKSB8XG4gICAgICAgIEZpeEYoXykgfFxuICAgICAgICBUeUFsaWFzKF8pIHxcbiAgICAgICAgQXAoXykgfFxuICAgICAgICBJZihfKSB8XG4gICAgICAgIFNlcShfKSB8XG4gICAgICAgIFRlc3QoXykgfFxuICAgICAgICBGaWx0ZXIoXykgfFxuICAgICAgICBDbG9zdXJlKF8pIHxcbiAgICAgICAgUGFyZW5zKF8pIHxcbiAgICAgICAgQ29ucyhfKSB8XG4gICAgICAgIExpc3RDb25jYXQoXykgfFxuICAgICAgICBVbk9wKF8pIHxcbiAgICAgICAgQmluT3AoXykgfFxuICAgICAgICBNYXRjaChfKSxcbiAgICAgICkgPT5cbiAgICAgIEluZGV0TWF0Y2hcbiAgICB9O1xuICB9O1xuIiwidHlwZSBtYXRjaF9yZXN1bHQgPSBVbmJveGluZy51bmJveGVkKEVudmlyb25tZW50LnQpO1xubGV0ICggbGV0KiApID0gVW5ib3hpbmcuKCBsZXQqICk7XG5cbmxldCBjb21iaW5lX3Jlc3VsdCA9IChyMTogbWF0Y2hfcmVzdWx0LCByMjogbWF0Y2hfcmVzdWx0KTogbWF0Y2hfcmVzdWx0ID0+XG4gIHN3aXRjaCAocjEsIHIyKSB7XG4gIHwgKERvZXNOb3RNYXRjaCwgXylcbiAgfCAoXywgRG9lc05vdE1hdGNoKSA9PiBEb2VzTm90TWF0Y2hcbiAgfCAoSW5kZXRNYXRjaCwgXylcbiAgfCAoXywgSW5kZXRNYXRjaCkgPT4gSW5kZXRNYXRjaFxuICB8IChNYXRjaGVzKGVudjEpLCBNYXRjaGVzKGVudjIpKSA9PlxuICAgIE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24oZW52MSwgZW52MikpXG4gIH07XG5cbmxldCByZWMgbWF0Y2hlcyA9IChkcDogUGF0LnQsIGQ6IERIRXhwLnQpOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChESFBhdC50ZXJtX29mKGRwKSkge1xuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBXaWxkID0+IE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpXG4gIHwgSW50KG4pID0+XG4gICAgbGV0KiBuJyA9IFVuYm94aW5nLnVuYm94KEludCwgZCk7XG4gICAgbiA9PSBuJyA/IE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpIDogRG9lc05vdE1hdGNoO1xuICB8IEZsb2F0KG4pID0+XG4gICAgbGV0KiBuJyA9IFVuYm94aW5nLnVuYm94KEZsb2F0LCBkKTtcbiAgICBuID09IG4nID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgQm9vbChiKSA9PlxuICAgIGxldCogYicgPSBVbmJveGluZy51bmJveChCb29sLCBkKTtcbiAgICBiID09IGInID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgU3RyaW5nKHMpID0+XG4gICAgbGV0KiBzJyA9IFVuYm94aW5nLnVuYm94KFN0cmluZywgZCk7XG4gICAgcyA9PSBzJyA/IE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpIDogRG9lc05vdE1hdGNoO1xuICB8IExpc3RMaXQoeHMpID0+XG4gICAgbGV0KiBzJyA9IFVuYm94aW5nLnVuYm94KExpc3QsIGQpO1xuICAgIGlmIChMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgocycpKSB7XG4gICAgICBMaXN0Lm1hcDIobWF0Y2hlcywgeHMsIHMnKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoY29tYmluZV9yZXN1bHQsIE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgRG9lc05vdE1hdGNoO1xuICAgIH07XG4gIHwgQ29ucyh4LCB4cykgPT5cbiAgICBsZXQqICh4JywgeHMnKSA9IFVuYm94aW5nLnVuYm94KENvbnMsIGQpO1xuICAgIGxldCogbV94ID0gbWF0Y2hlcyh4LCB4Jyk7XG4gICAgbGV0KiBtX3hzID0gbWF0Y2hlcyh4cywgeHMnKTtcbiAgICBNYXRjaGVzKEVudmlyb25tZW50LnVuaW9uKG1feCwgbV94cykpO1xuICB8IENvbnN0cnVjdG9yKGN0cikgPT5cbiAgICBsZXQqICgpID0gVW5ib3hpbmcudW5ib3goU3VtTm9BcmcoY3RyKSwgZCk7XG4gICAgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSk7XG4gIHwgQXAoe3Rlcm06IENvbnN0cnVjdG9yKGN0ciksIF99LCBwMikgPT5cbiAgICBsZXQqIGQyID0gVW5ib3hpbmcudW5ib3goU3VtV2l0aEFyZyhjdHIpLCBkKTtcbiAgICBtYXRjaGVzKHAyLCBkMik7XG4gIHwgQXAoXywgXykgPT4gSW5kZXRNYXRjaCAvLyBUT0RPOiBzaG91bGQgdGhpcyBmYWlsP1xuICB8IFZhcih4KSA9PiBNYXRjaGVzKEVudmlyb25tZW50LnNpbmdsZXRvbigoeCwgZCkpKVxuICB8IFR1cGxlKHBzKSA9PlxuICAgIGxldCogZHMgPSBVbmJveGluZy51bmJveChUdXBsZShMaXN0Lmxlbmd0aChwcykpLCBkKTtcbiAgICBMaXN0Lm1hcDIobWF0Y2hlcywgcHMsIGRzKVxuICAgIHw+IExpc3QuZm9sZF9sZWZ0KGNvbWJpbmVfcmVzdWx0LCBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSk7XG4gIHwgUGFyZW5zKHApID0+IG1hdGNoZXMocCwgZClcbiAgfCBDYXN0KHAsIHQxLCB0MikgPT5cbiAgICBtYXRjaGVzKHAsIENhc3QoZCwgdDIsIHQxKSB8PiBESEV4cC5mcmVzaCB8PiBDYXN0cy50cmFuc2l0aW9uX211bHRpcGxlKVxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBQYXNzXG4gIHwgRmFpbFxuICB8IEluZGV0O1xuXG5sZXQgdG9fc3RyaW5nOiB0ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IFBhc3MgPT4gXCJQYXNzXCJcbiAgfCBGYWlsID0+IFwiRmFpbFwiXG4gIHwgSW5kZXQgPT4gXCJJbmRldFwiO1xuXG5sZXQgam9pbjogKHQsIHQpID0+IHQgPVxuICAoYSwgYikgPT5cbiAgICBzd2l0Y2ggKGEsIGIpIHtcbiAgICB8IChGYWlsLCBfKSA9PiBGYWlsXG4gICAgfCAoSW5kZXQsIEZhaWwpID0+IEZhaWxcbiAgICB8IChJbmRldCwgXykgPT4gSW5kZXRcbiAgICB8IChQYXNzLCB4KSA9PiB4XG4gICAgfTtcblxubGV0IGpvaW5fYWxsOiBsaXN0KHQpID0+IHQgPSBMaXN0LmZvbGRfbGVmdChqb2luLCBQYXNzKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIEZJWE1FOiBNYWtlIG1vcmUgb2J2aW91cyBuYW1lcy4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgaW5zdGFuY2VfcmVwb3J0ID0gKERIRXhwLnQsIFRlc3RTdGF0dXMudCk7XG5cbmxldCBqb2ludF9zdGF0dXM6IGxpc3QoaW5zdGFuY2VfcmVwb3J0KSA9PiBUZXN0U3RhdHVzLnQgPVxuICByZXBvcnRzID0+IFRlc3RTdGF0dXMuam9pbl9hbGwoTGlzdC5tYXAoKChfLCB4KSkgPT4geCwgcmVwb3J0cykpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHJlcG9ydCA9IChJZC50LCBsaXN0KGluc3RhbmNlX3JlcG9ydCkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBsaXN0KHJlcG9ydCk7XG5sZXQgZW1wdHk6IHQgPSBbXTtcblxubGV0IGxvb2t1cCA9IExpc3QuYXNzb2Nfb3B0O1xuXG5sZXQgbG9va3VwX2FuZF9qb2luID0gKG4sIHRlc3RfbWFwKSA9PlxuICBzd2l0Y2ggKGxvb2t1cChuLCB0ZXN0X21hcCkpIHtcbiAgfCBOb25lID0+IFRlc3RTdGF0dXMuSW5kZXRcbiAgfCBTb21lKHJlcG9ydHMpID0+IGpvaW50X3N0YXR1cyhyZXBvcnRzKVxuICB9O1xuXG5sZXQgZXh0ZW5kID0gKChpZCwgcmVwb3J0KSwgdGVzdF9tYXApID0+IHtcbiAgc3dpdGNoIChMaXN0LmFzc29jX29wdChpZCwgdGVzdF9tYXApKSB7XG4gIHwgU29tZShhKSA9PiBMaXN0LnJlbW92ZV9hc3NvYyhpZCwgdGVzdF9tYXApIEAgWyhpZCwgYSBAIFtyZXBvcnRdKV1cbiAgfCBOb25lID0+IHRlc3RfbWFwIEAgWyhpZCwgW3JlcG9ydF0pXVxuICB9O1xufTtcblxubGV0IGNvdW50ID0gTGlzdC5sZW5ndGg7XG5cbmxldCBjb3VudF9zdGF0dXMgPSAoc3RhdHVzLCB0ZXN0X21hcCkgPT5cbiAgTGlzdC5maWx0ZXIoXG4gICAgKChfLCBpbnN0YW5jZXMpKSA9PiBzdGF0dXMgPT0gam9pbnRfc3RhdHVzKGluc3RhbmNlcyksXG4gICAgdGVzdF9tYXAsXG4gIClcbiAgfD4gTGlzdC5sZW5ndGg7XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBQYXR0ZXJuTWF0Y2g7XG5cbi8qIFRyYW5zaXRpb24ucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgZXZhbHVhdGlvbiBzZW1hbnRpY3Mgb2YgSGF6ZWwgaW4gdGVybXMgb2Ygc21hbGwgc3RlcFxuICAgZXZhbHVhdGlvbi4gVGhlc2Ugc21hbGwgc3RlcHMgYXJlIHdyYXBwZWQgdXAgaW50byBhIGJpZyBzdGVwIGluIEV2YWx1YXRvci5yZS5cblxuICAgSSdsbCB1c2UgdGhlIFNlcSBjYXNlIGFzIGFuIGV4YW1wbGU6XG5cbiAgICB8IFNlcShkMSwgZDIpID0+XG4gICAgICAgIGxldC4gXyA9IG90aGVyd2lzZShkMSA9PiBTZXEoZDEsIGQyKSlcbiAgICAgICAgYW5kLiBfID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgMCwgZDEpO1xuICAgICAgICBTdGVwKHtleHByOiBkMiwgc3RhdGUsIGtpbmQ6IFNlcSwgZmluYWw6IGZhbHNlfSk7XG5cblxuICAgIEVhY2ggc3RlcCBzZW1hbnRpY3Mgc3RhcnRzIHdpdGggYSBgbGV0LiAoKSA9IG90aGVyd2lzZSguLi4pYCB0aGF0IGRlZmluZXMgaG93XG4gICAgdG8gd3JhcCB0aGUgZXhwcmVzc2lvbiBiYWNrIHVwIGlmIHRoZSBzdGVwIGNvdWxkbid0IGJlIGV2YWx1YXRlZC5cblxuICAgIFRoaXMgaXMgZm9sbG93ZWQgYnkgYSBzZXJpZXMgb2YgYGFuZC4gZDEnID0gcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgPGk+LCA8ZDE+KWBcbiAgICB3aGljaCBpbmRpY2F0ZSB0aGF0IGluIG9yZGVyIHRvIGV2YWx1YXRlIHRoZSBzdGVwLCA8ZDE+IG11c3QgYmUgZmluYWwuIChyZXFfdmFsdWVcbiAgICBpcyBhbHNvIGF2YWlsYWJsZSBpZiBpdCBuZWVkcyB0byBiZSBhIHZhbHVlKS4gTm90ZSB0aGF0IGlmIHN1Y2Nlc3NmdWwsIGQxJyB3aWxsXG4gICAgYmUgdGhlIGZ1bGx5LWV2YWx1YXRlZCB2ZXJzaW9uIG9mIGQxLiBUaGUgc3ViLWV4cHJlc3Npb25zIGFyZSBhbGwgZW51bWVyYXRlZCBieVxuICAgIHRoZSA8aT4gZmllbGQsIHNvIGk9MCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyB0aGUgZmlyc3Qgc3ViLWV4cHJlc3Npb24sIGk9MSB0aGVcbiAgICBzZWNvbmQgZXRjLlxuXG4gICAgRmluYWxseSwgd2UgaGF2ZSB0aGUgU3RlcCBjb25zdHJ1Y3QgdGhhdCBkZWZpbmVzIHRoZSBhY3R1YWwgc3RlcC4gTm90ZSBcIlN0ZXBcInNcbiAgICBzaG91bGQgYmUgdXNlZCBpZiBhbmQgb25seSBpZiB0aGV5IGNoYW5nZSB0aGUgZXhwcmVzc2lvbi4gSWYgdGhleSBkbyBub3QgY2hhbmdlXG4gICAgdGhlIGV4cHJlc3Npb24sIHVzZSBgQ29uc3RydWN0b3JgIG9yIGBJbmRldGAuXG5cbiAgICBUaGUgc3RlcCBkZWZpbmVzIGZpcnN0bHksIGEgYCgpID0+IC4uLmAgZnVuY3Rpb24gZ2l2aW5nIHRoZSByZXN1bHQgb2YgdGhlIHN0ZXAsXG4gICAgc2Vjb25kbHkgYSBga2luZGAsIHRoYXQgZGVzY3JpYmVzIHRoZSBzdGVwICh3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN0ZXBwZXIpXG5cbiAgICBMYXN0bHksIHRoZSBgdmFsdWVgIGZpZWxkIGFsbG93cyBmb3Igc29tZSBzcGVlZGluZyB1cCBvZiB0aGUgZXZhbHVhdG9yLiBJZiB5b3VcbiAgICBhcmUgdW5zdXJlLCBpdCBpcyBhbHdheXMgc2FmZSB0byBwdXQgYGlzX3ZhbHVlOiBmYWxzZWAuXG5cbiAgICBgaXNfdmFsdWU6IHRydWVgIGd1YXJhbnRlZXM6XG4gICAgICAtIGlmIGFsbCByZXF1aXJlbWVudHMgYXJlIHZhbHVlcywgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgYSB2YWx1ZVxuICAgICAgLSBpZiBzb21lIHJlcXVpcmVtZW50cyBhcmUgaW5kZXQsIHRoZW4gdGhlIG91dHB1dCB3aWxsIGJlIGluZGV0XG5cbiAgICBBIHZhbHVlIGlzIGVpdGhlciBhIGxpdGVyYWwsIG9yIGEgZnVuY3Rpb24gd2l0aCBhIGNsb3N1cmUsIG9yIGEgdHlwZSBmdW5jdGlvbi5cbiAgICAoZnVuY3Rpb25zIHdpdGhvdXQgY2xvc3VyZXMgaW1tZWRpYXRlbHkgaW5zaWRlIHRoZW0gZG8gbm90IGNvdW50IGFzIHZhbHVlcykuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXBfa2luZCA9XG4gIHwgSW52YWxpZFN0ZXBcbiAgfCBWYXJMb29rdXBcbiAgfCBTZXFcbiAgfCBMZXRCaW5kXG4gIHwgRnVuQ2xvc3VyZVxuICB8IEZpeFVud3JhcFxuICB8IEZpeENsb3N1cmVcbiAgfCBVcGRhdGVUZXN0XG4gIHwgVHlwRnVuQXBcbiAgfCBGdW5BcFxuICB8IERlZmVycmVkQXBcbiAgfCBDYXN0VHlwQXBcbiAgfCBDYXN0QXBcbiAgfCBCdWlsdGluV3JhcFxuICB8IEJ1aWx0aW5BcChzdHJpbmcpXG4gIHwgVW5PcChPcGVyYXRvcnMub3BfdW4pXG4gIHwgQmluQm9vbE9wKE9wZXJhdG9ycy5vcF9iaW5fYm9vbClcbiAgfCBCaW5JbnRPcChPcGVyYXRvcnMub3BfYmluX2ludClcbiAgfCBCaW5GbG9hdE9wKE9wZXJhdG9ycy5vcF9iaW5fZmxvYXQpXG4gIHwgQmluU3RyaW5nT3AoT3BlcmF0b3JzLm9wX2Jpbl9zdHJpbmcpXG4gIHwgQ29uZGl0aW9uYWwoYm9vbClcbiAgfCBQcm9qZWN0aW9uXG4gIHwgTGlzdENvbnNcbiAgfCBMaXN0Q29uY2F0XG4gIHwgQ2FzZUFwcGx5XG4gIHwgQ29tcGxldGVDbG9zdXJlXG4gIHwgQ29tcGxldGVGaWx0ZXJcbiAgfCBDYXN0XG4gIHwgUmVtb3ZlVHlwZUFsaWFzXG4gIHwgUmVtb3ZlUGFyZW5zO1xubGV0IGV2YWx1YXRlX2V4dGVuZF9lbnYgPVxuICAgIChuZXdfYmluZGluZ3M6IEVudmlyb25tZW50LnQsIHRvX2V4dGVuZDogQ2xvc3VyZUVudmlyb25tZW50LnQpXG4gICAgOiBDbG9zdXJlRW52aXJvbm1lbnQudCA9PiB7XG4gIHRvX2V4dGVuZFxuICB8PiBDbG9zdXJlRW52aXJvbm1lbnQubWFwX29mXG4gIHw+IEVudmlyb25tZW50LnVuaW9uKG5ld19iaW5kaW5ncylcbiAgfD4gQ2xvc3VyZUVudmlyb25tZW50Lm9mX2Vudmlyb25tZW50O1xufTtcblxudHlwZSBydWxlID1cbiAgfCBTdGVwKHtcbiAgICAgIGV4cHI6IERIRXhwLnQsXG4gICAgICBzdGF0ZV91cGRhdGU6IHVuaXQgPT4gdW5pdCxcbiAgICAgIGtpbmQ6IHN0ZXBfa2luZCxcbiAgICAgIGlzX3ZhbHVlOiBib29sLFxuICAgIH0pXG4gIHwgQ29uc3RydWN0b3JcbiAgfCBJbmRldDtcblxubGV0IChsZXQtdW5ib3gpID0gKChyZXF1ZXN0LCB2KSwgZikgPT5cbiAgc3dpdGNoIChVbmJveGluZy51bmJveChyZXF1ZXN0LCB2KSkge1xuICB8IEluZGV0TWF0Y2hcbiAgfCBEb2VzTm90TWF0Y2ggPT4gSW5kZXRcbiAgfCBNYXRjaGVzKG4pID0+IGYobilcbiAgfTtcblxubW9kdWxlIHR5cGUgRVZfTU9ERSA9IHtcbiAgdHlwZSBzdGF0ZTtcbiAgdHlwZSByZXN1bHQ7XG4gIHR5cGUgcmVxdWlyZW1lbnQoJ2EpO1xuICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpO1xuXG4gIGxldCByZXFfdmFsdWU6XG4gICAgKERIRXhwLnQgPT4gcmVzdWx0LCBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBESEV4cC50KSA9PlxuICAgIHJlcXVpcmVtZW50KERIRXhwLnQpO1xuICBsZXQgcmVxX2FsbF92YWx1ZTpcbiAgICAoXG4gICAgICBESEV4cC50ID0+IHJlc3VsdCxcbiAgICAgIChFdmFsQ3R4LnQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSkgPT4gRXZhbEN0eC50LFxuICAgICAgbGlzdChESEV4cC50KVxuICAgICkgPT5cbiAgICByZXF1aXJlbWVudChsaXN0KERIRXhwLnQpKTtcbiAgbGV0IHJlcV9maW5hbDpcbiAgICAoREhFeHAudCA9PiByZXN1bHQsIEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQsIERIRXhwLnQpID0+XG4gICAgcmVxdWlyZW1lbnQoREhFeHAudCk7XG4gIGxldCByZXFfYWxsX2ZpbmFsOlxuICAgIChcbiAgICAgIERIRXhwLnQgPT4gcmVzdWx0LFxuICAgICAgKEV2YWxDdHgudCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKSA9PiBFdmFsQ3R4LnQsXG4gICAgICBsaXN0KERIRXhwLnQpXG4gICAgKSA9PlxuICAgIHJlcXVpcmVtZW50KGxpc3QoREhFeHAudCkpO1xuICBsZXQgcmVxX2ZpbmFsX29yX3ZhbHVlOlxuICAgIChESEV4cC50ID0+IHJlc3VsdCwgRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgREhFeHAudCkgPT5cbiAgICByZXF1aXJlbWVudCgoREhFeHAudCwgYm9vbCkpO1xuXG4gIGxldCAobGV0Lik6IChyZXF1aXJlbWVudHMoJ2EsIERIRXhwLnQpLCAnYSA9PiBydWxlKSA9PiByZXN1bHQ7XG4gIGxldCAoYW5kLik6XG4gICAgKHJlcXVpcmVtZW50cygnYSwgJ2MgPT4gJ2IpLCByZXF1aXJlbWVudCgnYykpID0+XG4gICAgcmVxdWlyZW1lbnRzKCgnYSwgJ2MpLCAnYik7XG4gIGxldCBvdGhlcndpc2U6IChDbG9zdXJlRW52aXJvbm1lbnQudCwgJ2EpID0+IHJlcXVpcmVtZW50cyh1bml0LCAnYSk7XG5cbiAgbGV0IHVwZGF0ZV90ZXN0OiAoc3RhdGUsIElkLnQsIFRlc3RNYXAuaW5zdGFuY2VfcmVwb3J0KSA9PiB1bml0O1xufTtcblxubW9kdWxlIFRyYW5zaXRpb24gPSAoRVY6IEVWX01PREUpID0+IHtcbiAgb3BlbiBFVjtcbiAgb3BlbiBESEV4cDtcblxuICAvLyBEZWZhdWx0IHN0YXRlIHVwZGF0ZVxuICBsZXQgc3RhdGVfdXBkYXRlID0gKCkgPT4gKCk7XG5cbiAgbGV0IChsZXQubWF0Y2gpID0gKChlbnYsIG1hdGNoX3Jlc3VsdDogUGF0dGVybk1hdGNoLm1hdGNoX3Jlc3VsdCksIHIpID0+XG4gICAgc3dpdGNoIChtYXRjaF9yZXN1bHQpIHtcbiAgICB8IEluZGV0TWF0Y2hcbiAgICB8IERvZXNOb3RNYXRjaCA9PiBJbmRldFxuICAgIHwgTWF0Y2hlcyhlbnYnKSA9PiByKGV2YWx1YXRlX2V4dGVuZF9lbnYoZW52JywgZW52KSlcbiAgICB9O1xuXG4gIC8qIE5vdGVbTWF0dF06IEZvciBJRHMsIEknbSBjdXJyZW50bHkgdXNpbmcgYSBmcmVzaCBpZFxuICAgICBpZiBhbnl0aGluZyBhYm91dCB0aGUgY3VycmVudCBub2RlIGNoYW5nZXMsIGlmIG9ubHkgaXRzXG4gICAgIGNoaWxkcmVuIGNoYW5nZSwgd2UgdXNlIHJld3JhcCAqL1xuXG4gIGxldCB0cmFuc2l0aW9uID0gKHJlcSwgc3RhdGUsIGVudiwgZCk6ICdhID0+IHtcbiAgICAvLyBTcGxpdCBESEV4cCBpbnRvIHRlcm0gYW5kIGlkIGluZm9ybWF0aW9uXG4gICAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGQpO1xuICAgIGxldCB3cmFwX2N0eCA9ICh0ZXJtKTogRXZhbEN0eC50ID0+IFRlcm0oe3Rlcm0sIGlkczogW3JlcF9pZChkKV19KTtcblxuICAgIC8vIFRyYW5zaXRpb24gcnVsZXNcbiAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICB8IFZhcih4KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgVmFyKHgpIHw+IHJld3JhcCk7XG4gICAgICBzd2l0Y2ggKENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCB4KSkge1xuICAgICAgfCBTb21lKGQpID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6IGQgfD4gZmFzdF9jb3B5KElkLm1rKCkpLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBWYXJMb29rdXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCBOb25lID0+IEluZGV0XG4gICAgICB9O1xuICAgIHwgU2VxKGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IFNlcShkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IFNlcTEoZDEsIGQyKSB8PiB3cmFwX2N0eCwgZDEpO1xuICAgICAgU3RlcCh7ZXhwcjogZDIsIHN0YXRlX3VwZGF0ZSwga2luZDogU2VxLCBpc192YWx1ZTogZmFsc2V9KTtcbiAgICB8IExldChkcCwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gTGV0KGRwLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gTGV0MShkcCwgZDEsIGQyKSB8PiB3cmFwX2N0eCwgZDEpO1xuICAgICAgbGV0Lm1hdGNoIGVudicgPSAoZW52LCBtYXRjaGVzKGRwLCBkMScpKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBDbG9zdXJlKGVudicsIGQyKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBMZXRCaW5kLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IFR5cEZ1bihfKVxuICAgIHwgRnVuKF8sIF8sIFNvbWUoXyksIF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIENvbnN0cnVjdG9yO1xuICAgIHwgRnVuKHAsIGQxLCBOb25lLCB2KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogRnVuKHAsIGQxLCBTb21lKGVudiksIHYpIHw+IHJld3JhcCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBGdW5DbG9zdXJlLFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgRml4RihkcCwgZDEsIE5vbmUpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBGaXhGKGRwLCBkMSwgTm9uZSkgfD4gcmV3cmFwKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBGaXhGKGRwLCBkMSwgU29tZShlbnYpKSB8PiByZXdyYXAsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogRml4Q2xvc3VyZSxcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBGaXhGKGRwLCBkMSwgU29tZShlbnYpKSA9PlxuICAgICAgc3dpdGNoIChESFBhdC5nZXRfdmFyKGRwKSkge1xuICAgICAgLy8gU2ltcGxlIFJlY3Vyc2lvbiBjYXNlXG4gICAgICB8IFNvbWUoZikgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAgIGxldCBlbnYnJyA9XG4gICAgICAgICAgZXZhbHVhdGVfZXh0ZW5kX2VudihcbiAgICAgICAgICAgIEVudmlyb25tZW50LnNpbmdsZXRvbigoZiwgRml4RihkcCwgZDEsIFNvbWUoZW52KSkgfD4gcmV3cmFwKSksXG4gICAgICAgICAgICBlbnYsXG4gICAgICAgICAgKTtcbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQ2xvc3VyZShlbnYnJywgZDEpIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBGaXhVbndyYXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIC8vIE11dHVhbCBSZWN1cnNpb24gY2FzZVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgICBsZXQgYmluZGluZ3MgPSBESFBhdC5ib3VuZF92YXJzKGRwKTtcbiAgICAgICAgbGV0IHN1YnN0aXR1dGlvbnMgPVxuICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgYmluZGluZyA9PlxuICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgYmluZGluZyxcbiAgICAgICAgICAgICAgICBMZXQoXG4gICAgICAgICAgICAgICAgICBkcCxcbiAgICAgICAgICAgICAgICAgIEZpeEYoZHAsIGQxLCBTb21lKGVudikpIHw+IHJld3JhcCxcbiAgICAgICAgICAgICAgICAgIFZhcihiaW5kaW5nKSB8PiBmcmVzaCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gZnJlc2gsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBiaW5kaW5ncyxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQgZW52JycgPVxuICAgICAgICAgIGV2YWx1YXRlX2V4dGVuZF9lbnYoRW52aXJvbm1lbnQub2ZfbGlzdChzdWJzdGl0dXRpb25zKSwgZW52KTtcbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQ2xvc3VyZShlbnYnJywgZDEpIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBGaXhVbndyYXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB8IFRlc3QoZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsICgoZCwgXykpID0+IFRlc3QoZCkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiAoZCcsIGlzX3ZhbHVlKSA9XG4gICAgICAgIHJlcV9maW5hbF9vcl92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQgPT4gVGVzdChkKSB8PiB3cmFwX2N0eCwgZCk7XG4gICAgICBsZXQgcmVzdWx0OiBUZXN0U3RhdHVzLnQgPVxuICAgICAgICBpZiAoaXNfdmFsdWUpIHtcbiAgICAgICAgICBzd2l0Y2ggKFVuYm94aW5nLnVuYm94KEJvb2wsIGQnKSkge1xuICAgICAgICAgIHwgRG9lc05vdE1hdGNoXG4gICAgICAgICAgfCBJbmRldE1hdGNoID0+IEluZGV0XG4gICAgICAgICAgfCBNYXRjaGVzKGIpID0+IGIgPyBQYXNzIDogRmFpbFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgSW5kZXQ7XG4gICAgICAgIH07XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogVHVwbGUoW10pIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGU6ICgpID0+XG4gICAgICAgICAgdXBkYXRlX3Rlc3Qoc3RhdGUsIERIRXhwLnJlcF9pZChkKSwgKGQnLCByZXN1bHQpKSxcbiAgICAgICAga2luZDogVXBkYXRlVGVzdCxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IFR5cEFwKGQsIHRhdSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQgPT4gVHlwQXAoZCwgdGF1KSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBUeXBBcChkLCB0YXUpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkJykpIHtcbiAgICAgIHwgVHlwRnVuKHV0cGF0LCB0ZmJvZHksIG5hbWUpID0+XG4gICAgICAgIC8qIFJ1bGUgSVRUTGFtICovXG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6XG4gICAgICAgICAgICBESEV4cC5hc3NpZ25fbmFtZV9pZl9ub25lKFxuICAgICAgICAgICAgICAvKiBJbmhlcml0IG5hbWUgZm9yIHVzZXIgY2xhcml0eSAqL1xuICAgICAgICAgICAgICBESEV4cC50eV9zdWJzdCh0YXUsIHV0cGF0LCB0ZmJvZHkpLFxuICAgICAgICAgICAgICBPcHRpb24ubWFwKFxuICAgICAgICAgICAgICAgIHggPT4geCArKyBcIkA8XCIgKysgVHlwLnByZXR0eV9wcmludCh0YXUpICsrIFwiPlwiLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBUeXBGdW5BcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IENhc3QoXG4gICAgICAgICAgZCcnLFxuICAgICAgICAgIHt0ZXJtOiBGb3JhbGwodHAxLCBfKSwgX30gYXMgdDEsXG4gICAgICAgICAge3Rlcm06IEZvcmFsbCh0cDIsIF8pLCBffSBhcyB0MixcbiAgICAgICAgKSA9PlxuICAgICAgICAvKiBSdWxlIElUVEFwQ2FzdCAqL1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOlxuICAgICAgICAgICAgQ2FzdChcbiAgICAgICAgICAgICAgVHlwQXAoZCcnLCB0YXUpIHw+IEV4cC5mcmVzaCxcbiAgICAgICAgICAgICAgVHlwLnN1YnN0KHRhdSwgdHAxLCB0MSksXG4gICAgICAgICAgICAgIFR5cC5zdWJzdCh0YXUsIHRwMiwgdDIpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgfD4gRXhwLmZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBDYXN0VHlwQXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCBfID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRUeXBGdW4oZCcpKSlcbiAgICAgIH07XG4gICAgfCBEZWZlcnJlZEFwKGQxLCBkcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZHMpID0+IERlZmVycmVkQXAoZDEsIGRzKSB8PiByZXdyYXApXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IERlZmVycmVkQXAxKGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgIClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9hbGxfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIChkMiwgZHMpID0+IERlZmVycmVkQXAyKGQxLCBkMiwgZHMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGRzLFxuICAgICAgICApO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBBcChkaXIsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgKGQyLCBfKSkgPT4gQXAoZGlyLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQXAxKGRpciwgZDEsIGQyKSB8PiB3cmFwX2N0eCwgZDEpXG4gICAgICBhbmQuIChkMicsIGQyX2lzX3ZhbHVlKSA9XG4gICAgICAgIHJlcV9maW5hbF9vcl92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gQXAyKGRpciwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMixcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMScpKSB7XG4gICAgICB8IENvbnN0cnVjdG9yKF8pID0+IENvbnN0cnVjdG9yXG4gICAgICB8IEZ1bihkcCwgZDMsIFNvbWUoZW52JyksIF8pID0+XG4gICAgICAgIGxldC5tYXRjaCBlbnYnJyA9IChlbnYnLCBtYXRjaGVzKGRwLCBkMicpKTtcbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQ2xvc3VyZShlbnYnJywgZDMpIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBGdW5BcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfCBDYXN0KFxuICAgICAgICAgIGQzJyxcbiAgICAgICAgICB7dGVybTogQXJyb3codHkxLCB0eTIpLCBffSxcbiAgICAgICAgICB7dGVybTogQXJyb3codHkxJywgdHkyJyksIF99LFxuICAgICAgICApID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6XG4gICAgICAgICAgICBDYXN0KFxuICAgICAgICAgICAgICBBcChkaXIsIGQzJywgQ2FzdChkMicsIHR5MScsIHR5MSkgfD4gZnJlc2gpIHw+IGZyZXNoLFxuICAgICAgICAgICAgICB0eTIsXG4gICAgICAgICAgICAgIHR5MicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgICAga2luZDogQ2FzdEFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgQnVpbHRpbkZ1bihpZGVudCkgPT5cbiAgICAgICAgaWYgKGQyX2lzX3ZhbHVlKSB7XG4gICAgICAgICAgU3RlcCh7XG4gICAgICAgICAgICBleHByOiB7XG4gICAgICAgICAgICAgIGxldCBidWlsdGluID1cbiAgICAgICAgICAgICAgICBWYXJNYXAubG9va3VwKEJ1aWx0aW5zLmZvcm1zX2luaXQsIGlkZW50KVxuICAgICAgICAgICAgICAgIHw+IE9wdFV0aWwuZ2V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgZXhjZXB0aW9uIHNob3VsZCBuZXZlciBiZSByYWlzZWQgYmVjYXVzZSB0aGVyZSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgbm8gd2F5IGZvciB0aGUgdXNlciB0byBjcmVhdGUgYSBCdWlsdGluRnVuLiBUaGV5IGFyZSBhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGVkIGludG8gdGhlIGNvbnRleHQgYmVmb3JlIGV2YWx1YXRpb24uICovXG4gICAgICAgICAgICAgICAgICAgICByYWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCdWlsdGluKGlkZW50KSksXG4gICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJ1aWx0aW4oZDIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICAgIGtpbmQ6IEJ1aWx0aW5BcChpZGVudCksXG4gICAgICAgICAgICBpc192YWx1ZTogZmFsc2UgLy8gTm90IG5lY2Vzc2FyaWx5IGEgdmFsdWUgYmVjYXVzZSBvZiBJbnZhbGlkT3BlcmF0aW9uc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEluZGV0O1xuICAgICAgICB9XG4gICAgICAvKiBUaGlzIGNhc2UgaXNuJ3QgY3VycmVudGx5IHVzZWQgYmVjYXVzZSBkZWZlcnJhbHMgYXJlIGVsYWJvcmF0ZWQgYXdheSAqL1xuICAgICAgfCBEZWZlcnJlZEFwKGQzLCBkNHMpID0+XG4gICAgICAgIGxldCBuX2FyZ3MgPVxuICAgICAgICAgIExpc3QubGVuZ3RoKFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICB8IHt0ZXJtOiBEZWZlcnJhbChfKSwgX30gPT4gdHJ1ZVxuICAgICAgICAgICAgICB8IF8gPT4gZmFsc2U6IEV4cC50ID0+IGJvb2wsXG4gICAgICAgICAgICAgIGQ0cyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgbGV0LXVuYm94IGFyZ3MgPSAoVHVwbGUobl9hcmdzKSwgZDIpO1xuICAgICAgICBsZXQgbmV3X2FyZ3MgPSB7XG4gICAgICAgICAgbGV0IHJlYyBnbyA9IChkZWZlcnJlZCwgYXJncykgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoKGRlZmVycmVkOiBsaXN0KEV4cC50KSkpIHtcbiAgICAgICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgICAgIHwgW3t0ZXJtOiBEZWZlcnJhbChfKSwgX30sIC4uLmRlZmVycmVkXSA9PlxuICAgICAgICAgICAgICAvKiBJIGNhbiB1c2UgTGlzdC5oZCBhbmQgTGlzdC50bCBoZXJlIGJlY2F1c2UgbGV0LXVuYm94IGVuc3VyZSB0aGF0XG4gICAgICAgICAgICAgICAgIHRoZXJlIGFyZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJncyAqL1xuICAgICAgICAgICAgICBbTGlzdC5oZChhcmdzKSwgLi4uZ28oZGVmZXJyZWQsIExpc3QudGwoYXJncykpXVxuICAgICAgICAgICAgfCBbeCwgLi4uZGVmZXJyZWRdID0+IFt4LCAuLi5nbyhkZWZlcnJlZCwgYXJncyldXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGdvKGQ0cywgYXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6IEFwKEZvcndhcmQsIGQzLCBUdXBsZShuZXdfYXJncykgfD4gZnJlc2gpIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBEZWZlcnJlZEFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB8IENhc3QoXylcbiAgICAgIHwgRmFpbGVkQ2FzdChfKSA9PiBJbmRldFxuICAgICAgfCBGaXhGKF8pID0+XG4gICAgICAgIHByaW50X2VuZGxpbmUoRXhwLnNob3coZDEpKTtcbiAgICAgICAgcHJpbnRfZW5kbGluZShFeHAuc2hvdyhkMScpKTtcbiAgICAgICAgcHJpbnRfZW5kbGluZShcIkZJWEZcIik7XG4gICAgICAgIGZhaWx3aXRoKFwiRml4RiBpbiBBcFwiKTtcbiAgICAgIHwgXyA9PlxuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiB7XG4gICAgICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkRnVuKGQxJykpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBJbnZhbGlkU3RlcCxcbiAgICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfCBEZWZlcnJhbChfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBJbmRldDtcbiAgICB8IEJvb2woXylcbiAgICB8IEludChfKVxuICAgIHwgRmxvYXQoXylcbiAgICB8IFN0cmluZyhfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEJ1aWx0aW5GdW4oXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBJZihjLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBjID0+IElmKGMsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBjJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGMgPT4gSWYxKGMsIGQxLCBkMikgfD4gd3JhcF9jdHgsIGMpO1xuICAgICAgbGV0LXVuYm94IGIgPSAoQm9vbCwgYycpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IHtcbiAgICAgICAgICBiID8gZDEgOiBkMjtcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAvLyBBdHRhY2ggYycgdG8gaW5kaWNhdGUgd2hpY2ggYnJhbmNoIHRha2VuLlxuICAgICAgICBraW5kOiBDb25kaXRpb25hbChiKSxcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgVW5PcChJbnQoTWludXMpLCBkMSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IFVuT3AoSW50KE1pbnVzKSwgZDEpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBjID0+IFVuT3AoSW50KE1pbnVzKSwgYykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggbiA9IChJbnQsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogSW50KC0gbikgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogVW5PcChJbnQoTWludXMpKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IFVuT3AoQm9vbChOb3QpLCBkMSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IFVuT3AoQm9vbChOb3QpLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGMgPT4gVW5PcChCb29sKE5vdCksIGMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIgPSAoQm9vbCwgZDEnKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBCb29sKCFiKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBVbk9wKEJvb2woTm90KSksXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChCb29sKEFuZCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEJpbk9wKEJvb2woQW5kKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEJvb2woQW5kKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBiMSA9IChCb29sLCBkMScpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IGIxID8gZDIgOiBCb29sKGZhbHNlKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBCaW5Cb29sT3AoQW5kKSxcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChCb29sKE9yKSwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gQmluT3AoQm9vbChPciksIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IEJpbk9wMShCb29sKE9yKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBiMSA9IChCb29sLCBkMScpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IGIxID8gQm9vbCh0cnVlKSB8PiBmcmVzaCA6IGQyLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkJvb2xPcChPciksXG4gICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgQmluT3AoSW50KG9wKSwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQmluT3AoSW50KG9wKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEludChvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgIClcbiAgICAgIGFuZC4gZDInID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMiA9PiBCaW5PcDIoSW50KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMixcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBuMSA9IChJbnQsIGQxJyk7XG4gICAgICBsZXQtdW5ib3ggbjIgPSAoSW50LCBkMicpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6XG4gICAgICAgICAgKFxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBQbHVzID0+IEludChuMSArIG4yKVxuICAgICAgICAgICAgfCBNaW51cyA9PiBJbnQobjEgLSBuMilcbiAgICAgICAgICAgIHwgUG93ZXIgd2hlbiBuMiA8IDAgPT5cbiAgICAgICAgICAgICAgRHluYW1pY0Vycm9ySG9sZShcbiAgICAgICAgICAgICAgICBCaW5PcChJbnQob3ApLCBkMScsIGQyJykgfD4gcmV3cmFwLFxuICAgICAgICAgICAgICAgIE5lZ2F0aXZlRXhwb25lbnQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgUG93ZXIgPT4gSW50KEludFV0aWwuaXBvdyhuMSwgbjIpKVxuICAgICAgICAgICAgfCBUaW1lcyA9PiBJbnQobjEgKiBuMilcbiAgICAgICAgICAgIHwgRGl2aWRlIHdoZW4gbjIgPT0gMCA9PlxuICAgICAgICAgICAgICBEeW5hbWljRXJyb3JIb2xlKFxuICAgICAgICAgICAgICAgIEJpbk9wKEludChvcCksIGQxJywgZDEnKSB8PiByZXdyYXAsXG4gICAgICAgICAgICAgICAgRGl2aWRlQnlaZXJvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IERpdmlkZSA9PiBJbnQobjEgLyBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW4gPT4gQm9vbChuMSA8IG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA8PSBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW4gPT4gQm9vbChuMSA+IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA+PSBuMilcbiAgICAgICAgICAgIHwgRXF1YWxzID0+IEJvb2wobjEgPT0gbjIpXG4gICAgICAgICAgICB8IE5vdEVxdWFscyA9PiBCb29sKG4xICE9IG4yKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBCaW5JbnRPcChvcCksXG4gICAgICAgIC8vIEZhbHNlIHNvIHRoYXQgSW52YWxpZE9wZXJhdGlvbnMgYXJlIGNhdWdodCBhbmQgbWFkZSBpbmRldCBieSB0aGUgbmV4dCBzdGVwXG4gICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgQmluT3AoRmxvYXQob3ApLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPVxuICAgICAgICBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5PcChGbG9hdChvcCksIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IEJpbk9wMShGbG9hdChvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgIClcbiAgICAgIGFuZC4gZDInID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMiA9PiBCaW5PcDIoRmxvYXQob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IG4xID0gKEZsb2F0LCBkMScpO1xuICAgICAgbGV0LXVuYm94IG4yID0gKEZsb2F0LCBkMicpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6XG4gICAgICAgICAgKFxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBQbHVzID0+IEZsb2F0KG4xICsuIG4yKVxuICAgICAgICAgICAgfCBNaW51cyA9PiBGbG9hdChuMSAtLiBuMilcbiAgICAgICAgICAgIHwgUG93ZXIgPT4gRmxvYXQobjEgKiogbjIpXG4gICAgICAgICAgICB8IFRpbWVzID0+IEZsb2F0KG4xICouIG4yKVxuICAgICAgICAgICAgfCBEaXZpZGUgPT4gRmxvYXQobjEgLy4gbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuID0+IEJvb2wobjEgPCBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IEJvb2wobjEgPD0gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuID0+IEJvb2wobjEgPiBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IEJvb2wobjEgPj0gbjIpXG4gICAgICAgICAgICB8IEVxdWFscyA9PiBCb29sKG4xID09IG4yKVxuICAgICAgICAgICAgfCBOb3RFcXVhbHMgPT4gQm9vbChuMSAhPSBuMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogQmluRmxvYXRPcChvcCksXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChTdHJpbmcob3ApLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPVxuICAgICAgICBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5PcChTdHJpbmcob3ApLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoU3RyaW5nKG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihTdHJpbmcob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IHMxID0gKFN0cmluZywgZDEnKTtcbiAgICAgIGxldC11bmJveCBzMiA9IChTdHJpbmcsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgfCBDb25jYXQgPT4gU3RyaW5nKHMxICsrIHMyKSB8PiBmcmVzaFxuICAgICAgICAgIHwgRXF1YWxzID0+IEJvb2woczEgPT0gczIpIHw+IGZyZXNoXG4gICAgICAgICAgfSxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBCaW5TdHJpbmdPcChvcCksXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBUdXBsZShkcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGRzID0+IFR1cGxlKGRzKSB8PiByZXdyYXApXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfYWxsX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICAoZDEsIGRzKSA9PiBUdXBsZShkMSwgZHMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGRzLFxuICAgICAgICApO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBDb25zKGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IENvbnMoZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IENvbnMxKGQxLCBkMikgfD4gd3JhcF9jdHgsIGQxKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMiA9PiBDb25zMihkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMik7XG4gICAgICBsZXQtdW5ib3ggZHMgPSAoTGlzdCwgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBMaXN0TGl0KFtkMScsIC4uLmRzXSkgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogTGlzdENvbnMsXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBMaXN0Q29uY2F0KGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IExpc3RDb25jYXQoZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gTGlzdENvbmNhdDEoZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IExpc3RDb25jYXQyKGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggZHMxID0gKExpc3QsIGQxJyk7XG4gICAgICBsZXQtdW5ib3ggZHMyID0gKExpc3QsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogTGlzdExpdChkczEgQCBkczIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IExpc3RDb25jYXQsXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBMaXN0TGl0KGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZHMgPT4gTGlzdExpdChkcykgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2FsbF9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgKGQxLCBkcykgPT4gTGlzdExpdChkMSwgZHMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGRzLFxuICAgICAgICApO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBNYXRjaChkMSwgcnVsZXMpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBNYXRjaChkMSwgcnVsZXMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEgPVxuICAgICAgICByZXFfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IE1hdGNoU2NydXQoZDEsIHJ1bGVzKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIGxldCByZWMgbmV4dF9ydWxlID0gKFxuICAgICAgICBmdW5cbiAgICAgICAgfCBbXSA9PiBOb25lXG4gICAgICAgIHwgWyhkcCwgZDIpLCAuLi5ydWxlc10gPT5cbiAgICAgICAgICBzd2l0Y2ggKG1hdGNoZXMoZHAsIGQxKSkge1xuICAgICAgICAgIHwgTWF0Y2hlcyhlbnYnKSA9PiBTb21lKChlbnYnLCBkMikpXG4gICAgICAgICAgfCBEb2VzTm90TWF0Y2ggPT4gbmV4dF9ydWxlKHJ1bGVzKVxuICAgICAgICAgIHwgSW5kZXRNYXRjaCA9PiBOb25lXG4gICAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHN3aXRjaCAobmV4dF9ydWxlKHJ1bGVzKSkge1xuICAgICAgfCBTb21lKChlbnYnLCBkMikpID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6IENsb3N1cmUoZXZhbHVhdGVfZXh0ZW5kX2VudihlbnYnLCBlbnYpLCBkMikgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IENhc2VBcHBseSxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IE5vbmUgPT4gSW5kZXRcbiAgICAgIH07XG4gICAgfCBDbG9zdXJlKGVudicsIGQpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IENsb3N1cmUoZW52JywgZCkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkJyA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudicpLCBkMSA9PiBDbG9zdXJlKGVudicsIGQxKSB8PiB3cmFwX2N0eCwgZCk7XG4gICAgICBTdGVwKHtleHByOiBkJywgc3RhdGVfdXBkYXRlLCBraW5kOiBDb21wbGV0ZUNsb3N1cmUsIGlzX3ZhbHVlOiB0cnVlfSk7XG4gICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgLy8gYW5kLiBfID1cbiAgICAgIC8vICAgcmVxX2FsbF9maW5hbChcbiAgICAgIC8vICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAvLyAgICAgKGQxLCBkcykgPT4gTXVsdGlIb2xlKGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAvLyAgICAgZHMsXG4gICAgICAvLyAgICk7XG4gICAgICBJbmRldDtcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBJbmRldDtcbiAgICB8IENhc3QoZCwgdDEsIHQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkJyA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQgPT4gQ2FzdChkLCB0MSwgdDIpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIHN3aXRjaCAoQ2FzdHMudHJhbnNpdGlvbihDYXN0KGQnLCB0MSwgdDIpIHw+IHJld3JhcCkpIHtcbiAgICAgIHwgU29tZShkKSA9PiBTdGVwKHtleHByOiBkLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IENhc3QsIGlzX3ZhbHVlOiBmYWxzZX0pXG4gICAgICB8IE5vbmUgPT4gQ29uc3RydWN0b3JcbiAgICAgIH07XG4gICAgfCBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIEluZGV0O1xuICAgIHwgUGFyZW5zKGQpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIFN0ZXAoe2V4cHI6IGQsIHN0YXRlX3VwZGF0ZSwga2luZDogUmVtb3ZlUGFyZW5zLCBpc192YWx1ZTogZmFsc2V9KTtcbiAgICB8IFR5QWxpYXMoXywgXywgZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgU3RlcCh7ZXhwcjogZCwgc3RhdGVfdXBkYXRlLCBraW5kOiBSZW1vdmVUeXBlQWxpYXMsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgRmlsdGVyKGYxLCBkMSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEZpbHRlcihmMSwgZDEpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEgPVxuICAgICAgICByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBGaWx0ZXIoZjEsIGQxKSB8PiB3cmFwX2N0eCwgZDEpO1xuICAgICAgU3RlcCh7ZXhwcjogZDEsIHN0YXRlX3VwZGF0ZSwga2luZDogQ29tcGxldGVGaWx0ZXIsIGlzX3ZhbHVlOiB0cnVlfSk7XG4gICAgfTtcbiAgfTtcbn07XG5cbmxldCBzaG91bGRfaGlkZV9zdGVwID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCkgPT5cbiAgZnVuXG4gIHwgTGV0QmluZFxuICB8IFNlcVxuICB8IFVwZGF0ZVRlc3RcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgRGVmZXJyZWRBcFxuICB8IEJ1aWx0aW5BcChfKVxuICB8IEJpbkJvb2xPcChfKVxuICB8IEJpbkludE9wKF8pXG4gIHwgQmluRmxvYXRPcChfKVxuICB8IEJpblN0cmluZ09wKF8pXG4gIHwgVW5PcChfKVxuICB8IExpc3RDb25zXG4gIHwgTGlzdENvbmNhdFxuICB8IENhc2VBcHBseVxuICB8IFByb2plY3Rpb24gLy8gVE9ETyhNYXR0KTogV2UgZG9uJ3Qgd2FudCB0byBzaG93IHByb2plY3Rpb24gdG8gdGhlIHVzZXJcbiAgfCBDb25kaXRpb25hbChfKVxuICB8IFJlbW92ZVR5cGVBbGlhc1xuICB8IEludmFsaWRTdGVwID0+IGZhbHNlXG4gIHwgVmFyTG9va3VwID0+ICFzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwc1xuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IENhc3QgPT4gIXNldHRpbmdzLnNob3dfY2FzdHNcbiAgfCBGaXhVbndyYXAgPT4gIXNldHRpbmdzLnNob3dfZml4cG9pbnRzXG4gIHwgQ29tcGxldGVDbG9zdXJlXG4gIHwgQ29tcGxldGVGaWx0ZXJcbiAgfCBCdWlsdGluV3JhcFxuICB8IEZ1bkNsb3N1cmVcbiAgfCBGaXhDbG9zdXJlXG4gIHwgUmVtb3ZlUGFyZW5zID0+IHRydWU7XG4iLCJvcGVuIERIRXhwO1xub3BlbiBUcmFuc2l0aW9uO1xuXG50eXBlIHQgPVxuICB8IFZhbHVlXG4gIHwgSW5kZXRcbiAgfCBFeHByO1xuXG5tb2R1bGUgVmFsdWVDaGVja2VyRVZNb2RlOiB7XG4gIGluY2x1ZGUgRVZfTU9ERSB3aXRoIHR5cGUgcmVzdWx0ID0gdCBhbmQgdHlwZSBzdGF0ZSA9IHVuaXQ7XG59ID0ge1xuICB0eXBlIHN0YXRlID0gdW5pdDtcbiAgdHlwZSByZXN1bHQgPSB0O1xuXG4gIHR5cGUgcmVxdWlyZW1lbnQoJ2EpID0gKCdhLCAocmVzdWx0LCBib29sKSk7XG4gIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAoJ2EsIChyZXN1bHQsIGJvb2wpKTtcblxuICBsZXQgY29tYmluZSA9ICgocjEsIGIxKSwgKHIyLCBiMikpID0+IChcbiAgICBzd2l0Y2ggKHIxLCByMikge1xuICAgIHwgKEV4cHIsIF8pID0+IEV4cHJcbiAgICB8IChfLCBFeHByKSA9PiBFeHByXG4gICAgfCAoSW5kZXQsIF8pID0+IEluZGV0XG4gICAgfCAoXywgSW5kZXQpID0+IEluZGV0XG4gICAgfCAoVmFsdWUsIFZhbHVlKSA9PiBWYWx1ZVxuICAgIH0sXG4gICAgYjEgJiYgYjIsXG4gICk7XG5cbiAgbGV0IHJlcV92YWx1ZSA9ICh2YywgXywgZCkgPT4gKFxuICAgIGQsXG4gICAgc3dpdGNoICh2YyhkKSkge1xuICAgIHwgVmFsdWUgPT4gKFZhbHVlLCB0cnVlKVxuICAgIHwgSW5kZXQgPT4gKEluZGV0LCBmYWxzZSlcbiAgICB8IEV4cHIgPT4gKEV4cHIsIGZhbHNlKVxuICAgIH0sXG4gICk7XG4gIGxldCByZXFfYWxsX3ZhbHVlID0gKHZjLCBfLCBkcykgPT5cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoKHYxLCByMSksICh2MiwgcjIpKSA9PiAoW3YxLCAuLi52Ml0sIGNvbWJpbmUocjEsIHIyKSksXG4gICAgICBMaXN0Lm1hcChyZXFfdmFsdWUodmMsIHggPT4geCksIGRzKSxcbiAgICAgIChbXSwgKFZhbHVlLCB0cnVlKSksXG4gICAgKTtcbiAgbGV0IHJlcV9maW5hbCA9ICh2YywgXywgZCkgPT4gKFxuICAgIGQsXG4gICAgc3dpdGNoICh2YyhkKSkge1xuICAgIHwgVmFsdWUgPT4gKFZhbHVlLCB0cnVlKVxuICAgIHwgSW5kZXQgPT4gKEluZGV0LCB0cnVlKVxuICAgIHwgRXhwciA9PiAoRXhwciwgZmFsc2UpXG4gICAgfSxcbiAgKTtcbiAgbGV0IHJlcV9hbGxfZmluYWwgPSAodmMsIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgodjEsIHIxKSwgKHYyLCByMikpID0+IChbdjEsIC4uLnYyXSwgY29tYmluZShyMSwgcjIpKSxcbiAgICAgIExpc3QubWFwKHJlcV9maW5hbCh2YywgeCA9PiB4KSwgZHMpLFxuICAgICAgKFtdLCAoVmFsdWUsIHRydWUpKSxcbiAgICApO1xuXG4gIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAodmMsIF8sIGQpID0+XG4gICAgc3dpdGNoICh2YyhkKSkge1xuICAgIHwgVmFsdWUgPT4gKChkLCB0cnVlKSwgKFZhbHVlLCB0cnVlKSlcbiAgICB8IEluZGV0ID0+ICgoZCwgZmFsc2UpLCAoVmFsdWUsIHRydWUpKVxuICAgIHwgRXhwciA9PiAoKGQsIGZhbHNlKSwgKFZhbHVlLCBmYWxzZSkpXG4gICAgfTtcblxuICBsZXQgb3RoZXJ3aXNlID0gKF8sIF8pID0+ICgoKSwgKFZhbHVlLCB0cnVlKSk7XG5cbiAgbGV0IChsZXQuKSA9ICgodiwgKHIsIGIpKSwgcnVsZSkgPT5cbiAgICBzd2l0Y2ggKGIsIHIsIHJ1bGUodikpIHtcbiAgICB8IChfLCBfLCBDb25zdHJ1Y3RvcikgPT4gclxuICAgIHwgKF8sIEV4cHIsIEluZGV0KSA9PiBFeHByXG4gICAgfCAoXywgXywgSW5kZXQpID0+IEluZGV0XG4gICAgfCAodHJ1ZSwgXywgU3RlcChfKSkgPT4gRXhwclxuICAgIHwgKGZhbHNlLCBfLCBTdGVwKF8pKSA9PiByXG4gICAgfTtcblxuICBsZXQgKGFuZC4pID0gKCh2MSwgcjEpLCAodjIsIHIyKSkgPT4ge1xuICAgICgodjEsIHYyKSwgY29tYmluZShyMSwgcjIpKTtcbiAgfTtcblxuICBsZXQgdXBkYXRlX3Rlc3QgPSAoXywgXywgXykgPT4gKCk7XG59O1xuXG5tb2R1bGUgQ1YgPSBUcmFuc2l0aW9uKFZhbHVlQ2hlY2tlckVWTW9kZSk7XG5cbmxldCByZWMgY2hlY2tfdmFsdWUgPSAoc3RhdGUsIGVudiwgZCkgPT5cbiAgQ1YudHJhbnNpdGlvbihjaGVja192YWx1ZSwgc3RhdGUsIGVudiwgZCk7XG5cbmxldCByZWMgY2hlY2tfdmFsdWVfbW9kX2N0eCA9ICgoKSwgZW52LCBkKSA9PlxuICBzd2l0Y2ggKERIRXhwLnRlcm1fb2YoZCkpIHtcbiAgfCBWYXIoeCkgPT5cbiAgICBzd2l0Y2ggKENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCB4KSkge1xuICAgIHwgU29tZSh2KSA9PiBjaGVja192YWx1ZV9tb2RfY3R4KCgpLCBlbnYsIHYpXG4gICAgfCBOb25lID0+IENWLnRyYW5zaXRpb24oY2hlY2tfdmFsdWVfbW9kX2N0eCwgKCksIGVudiwgZClcbiAgICB9XG4gIHwgXyA9PiBDVi50cmFuc2l0aW9uKGNoZWNrX3ZhbHVlX21vZF9jdHgsICgpLCBlbnYsIGQpXG4gIH07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBaaXBwZXI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGllY2VfZ29hbCA9XG4gIHwgR3JvdXQ7XG5cbmxldCBvZl9waWVjZV9nb2FsID1cbiAgZnVuXG4gIHwgR3JvdXQgPT4gKFxuICAgICAgZnVuXG4gICAgICB8IFBpZWNlLkdyb3V0KF8pID0+IHRydWVcbiAgICAgIHwgXyA9PiBmYWxzZVxuICAgICk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZ29hbCA9XG4gIHwgUG9pbnQoTWVhc3VyZWQuUG9pbnQudClcbiAgfCBQaWVjZShwaWVjZV9nb2FsLCBEaXJlY3Rpb24udCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbW92ZSA9XG4gIHwgRXh0cmVtZShwbGFuYXIpXG4gIHwgTG9jYWwocGxhbmFyKVxuICB8IEdvYWwoZ29hbCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUganVtcF90YXJnZXQgPVxuICB8IFRpbGVJZChJZC50KVxuICB8IEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVsID1cbiAgfCBDdXJyZW50XG4gIHwgSWQoSWQudCwgRGlyZWN0aW9uLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlbGVjdCA9XG4gIHwgQWxsXG4gIHwgUmVzaXplKG1vdmUpXG4gIHwgU21hcnRcbiAgfCBUaWxlKHJlbClcbiAgfCBUZXJtKHJlbCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTW92ZShtb3ZlKVxuICB8IE1vdmVUb05leHRIb2xlKERpcmVjdGlvbi50KVxuICB8IEp1bXAoanVtcF90YXJnZXQpXG4gIHwgU2VsZWN0KHNlbGVjdClcbiAgfCBVbnNlbGVjdChvcHRpb24oRGlyZWN0aW9uLnQpKVxuICB8IERlc3RydWN0KERpcmVjdGlvbi50KVxuICB8IEluc2VydChzdHJpbmcpXG4gIHwgUm90YXRlQmFja3BhY2tcbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldChwbGFuYXIpXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUGFzdGUoc3RyaW5nKVxuICB8IFN1Z2dlc3QoU2VnbWVudC50KVxuICB8IFJlc2V0U3VnZ2VzdGlvbjtcblxubW9kdWxlIEZhaWx1cmUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IENhbnRfbW92ZVxuICAgIHwgQ2FudF9pbnNlcnRcbiAgICB8IENhbnRfZGVzdHJ1Y3RcbiAgICB8IENhbnRfc2VsZWN0XG4gICAgfCBDYW50X3B1dF9kb3duXG4gICAgfCBDYW50X3Bhc3RlXG4gICAgfCBDYW50X3VuZG9cbiAgICB8IENhbnRfcmVkbztcblxuICBleGNlcHRpb24gRXhjZXB0aW9uKHQpO1xufTtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgaW5jbHVkZSBSZXN1bHQ7XG4gIHR5cGUgdCgnc3VjY2VzcykgPSBSZXN1bHQudCgnc3VjY2VzcywgRmFpbHVyZS50KTtcbn07XG5cbmxldCBpc19lZGl0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBJbnNlcnQoXylcbiAgfCBEZXN0cnVjdChfKVxuICB8IFBpY2tfdXBcbiAgfCBQdXRfZG93blxuICB8IFBhc3RlKF8pID0+IHRydWVcbiAgfCBNb3ZlKF8pXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBKdW1wKF8pXG4gIHwgU2VsZWN0KF8pXG4gIHwgVW5zZWxlY3QoXylcbiAgfCBSb3RhdGVCYWNrcGFja1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KF8pXG4gIHwgU3VnZ2VzdChfKVxuICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZTtcbiIsIi8qIEJpdCBvZiBhIGhhY2suIFdlIHdhbnQgdG8gZGVjb3JhdGUgc3VnZ2VzdGlvbnMgd2hpY2ggd2lsbCB0cmlnZ2VyXG4gICBhbiBleHBhbnNpb24gdG8gdGVsZWdyYXBoIHRoYXQgZXhwYW5zaW9uLiBFYXNpZXN0IHdheSBtZXRyaWNzIHdpc2VcbiAgIGlzIHRvIGtlZXAgdGhhdCBkZWNvIGluIHRoZSBzeW50YXguIFdhbnQgdG8gZGVjb3JhdGUgd2l0aCBlbGxpcHNlc1xuICAgY2hhcmFjdGVyLCBidXQgT0NhbWwgc3RyaW5nIGZ1bmN0aW9ucyBkb24ndCBzdXBwb3J0IHVuaWNvZGUsIHNvXG4gICB3ZSB1c2UgJCwgdGhlbiBzd2FwIGl0IG91dCBmb3IgdGhlIHVuaWNvZGUgY2hhcmFjdGVyIGluIENvZGUuXG4gICBFdmVudHVhbGx5IHJlcGxhY2UgdGhpcyBieSBleHRlbmRpbmcgdGhlIHN1Z2dlc3Rpb24gZGF0YSBzdHJ1Y3R1cmUgKi9cbmxldCBjID0gXCIkXCI7XG5cbmxldCBpc19leHBhbmRlcl90b2sgPSAodDogVG9rZW4udCkgPT5cbiAgU3RyaW5nLnN1Yih0LCBTdHJpbmcubGVuZ3RoKHQpIC0gMSwgMSkgPT0gYztcblxubGV0IHRyaW1fbGFzdCA9ICh0OiBUb2tlbi50KSA9PiBTdHJpbmcuc3ViKHQsIDAsIFN0cmluZy5sZW5ndGgodCkgLSAxKTtcblxubGV0IGlzX2V4cGFuZGVyID0gKGxhYmVsOiBMYWJlbC50KSA9PlxuICBzd2l0Y2ggKGxhYmVsKSB7XG4gIHwgW3RdID0+IGlzX2V4cGFuZGVyX3Rvayh0KVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcblxubGV0IG1hcmsgPSAobGFiZWw6IExhYmVsLnQpOiBMYWJlbC50ID0+XG4gIGlzX2V4cGFuZGVyKGxhYmVsKSA/IExpc3QubWFwKHQgPT4gdHJpbV9sYXN0KHQpICsrIFwi4oCmXCIsIGxhYmVsKSA6IGxhYmVsO1xuXG5sZXQgdHJpbSA9IChjb21wbGV0aW9uOiBUb2tlbi50KTogVG9rZW4udCA9PlxuICBpc19leHBhbmRlcl90b2soY29tcGxldGlvbikgPyB0cmltX2xhc3QoY29tcGxldGlvbikgOiBjb21wbGV0aW9uO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogVHlEaTogVHlwZS1EaXJlY3RlZCBOZXh0LVRva2VuIFN1Z2dlc3Rpb25zXG5cbiAgICBJREVBOiBFeHBhbmRlZCBjcml0ZXJpYSBmb3Igd2hlbiB0byBhdXRvc2hvdzogQ3VycmVudGx5LCB3ZSBzaG93IG9ubHlcbiAgICB3aGVuIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBzdWdnZXN0aW9uIHdoaWNoIHByZWZpeC1tYXRjaGVzIGJ1dCBpcyBub3RcbiAgICBpZGVudGljYWwgdG8gdGhlIGN1cnJlbnQgbm9uemVybyBwcmVmaXguIFdlIG1pZ2h0IGNvbnNpZGVyIHJlbGF4aW5nXG4gICAgdGhlIG5vbnplcm8gcHJlZml4IHBhcnQuIFdlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gYXV0b3Nob3cgb24gY29ycmVjdFxuICAgIHRva2VucywgYnV0IHdlIGNvdWxkIGF1dG9zaG93IG9uIGVycm9ycyBpZiB0aGVyZSBhcmUgZml4ZXMsIG9yIG9uXG4gICAgZW1wdGllcyBpZiB0aGVyZSdzIG9ubHkgb25lIG9wdGlvbi5cblxuICAgICBJREVBOiBBZGQgYSBrZXliaW5kaW5nIHRvIGZvcmNlIHJldmVhbCBzdWdnZXN0aW9uIGlmIG5vdCBjdXJyZW50IHNob3duLlxuICAgICBJJ3ZlIHN0dWJiZWQgdGhpcyBvdXQgKENtZCs/KSBidXQgbmVlZHMgYW4gb3B0aW9uIHRvIHNob3cgc3VnZ2VzdGlvbnNcbiAgICAgZXZlbiBpZiBvbiBob2xlIChpZSBwcmVmaXggZm9yIGNvbXBsZXRpb24gaXMgXCJcIilcblxuICAgICBJREVBOiBJZiB0aGVyZSBhcmUgfiBubyBjdXJyZW50IHN1Z2dlc3Rpb25zLCBhbmQgdGhlIGluZGljYXRlZCB0ZXJtXG4gICAgIGhhcyBhIHR5cGUgZXJyb3Igc3VnZ2VzdCBmb2xsb3dpbmcgaW5maXhlcyB3aGljaCBmaXggdGhhdCB0eXBlIGVycm9yLFxuICAgICBlLmcuIGdpdmVuIFwibGV0IGE6RmxvYXQgPSBmc3QoMS4wfFwiIHN1Z2dlc3QgY29tbWFcbiAgICAgZS5nLiBnaXZlbiBcImxldCBiOkJvb2wgPSAxfFwiIHN1Z2dlc3QgPCwgPiwgPD0sID49LCA9PSwgIT0sIGV0Yy5cblxuICAgICBJREVBOiBVTkJJRElSRUNUSU9OQUwgUE9TSVRJT05TOlxuICAgIDEuIEluIGFwIGZ1bnBvczogZmF2b3IgaW5wdXQgdHkgY29uc2lzdGVudCB3aXRoIGFyZ1xuICAgIDIuIEluIGNhc2Ugc2NydXQsIGZhdm9yIHRoZSB0eXMgb2YgZXh0YW50IHBhdHRlcm5zXG4gICAgMy4gSW4gbGlzdCBlbGVtZW50LCBmYXZvciB0aGUgdHlzIG9mIGV4dGFudCBlbGVtZW50c1xuICAgIDMuIEluIHBhdHRlcm4gYW5ub3RhdGlvbiB0eXBlOiBmYXZvciBwYXRhbm4gZXhwZWN0ZWQgdHlwZVxuXG4gICAgSURFQTogSWYgb24gaW5maXggb3AsIHN1Z2dlc3QgYmFzZWQgb24gZWl0aGVyIG9wZXJhbmQgdHlwZSxcbiAgICBlc3BlY2lhbGx5IHRoZSBjYXNlIHdoZXJlIGl0IHdvdWxkIGZpeCBhbiBvcGVyYW5kIHR5cGUgZXJyb3JcblxuICAgIElERUE6IElmIG9uIDItbXVsdGlob2xlLCBzdWdnZXN0IGluZml4IG9wcyBhcyBhYm92ZSBvciBBcCBpZiBhcHBsaWNhYmxlXG5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfYWxsID1cbiAgfCBGcm9tQmFja3BhY2s7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfY29tbW9uID1cbiAgfCBOZXdGb3JtKFR5cC50KVxuICB8IEZyb21DdHgoVHlwLnQpXG4gIHwgRnJvbUN0eEFwKFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9leHAgPVxuICB8IENvbW1vbihzdHJhdGVneV9jb21tb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X3BhdCA9XG4gIHwgQ29tbW9uKHN0cmF0ZWd5X2NvbW1vbilcbiAgfCBGcm9tQ29DdHgoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X3R5cCA9XG4gIHwgTmV3Rm9ybVxuICB8IEZyb21DdHg7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3kgPVxuICB8IEFueShzdHJhdGVneV9hbGwpXG4gIHwgRXhwKHN0cmF0ZWd5X2V4cClcbiAgfCBQYXQoc3RyYXRlZ3lfcGF0KVxuICB8IFR5cChzdHJhdGVneV90eXApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgc3RyYXRlZ3ksXG59O1xuXG5sZXQgY29tcGFyZSA9IChzMTogdCwgczI6IHQpOiBpbnQgPT4ge1xuICBTdHJpbmcuY29tcGFyZShzMS5jb250ZW50LCBzMi5jb250ZW50KTtcbn07XG4iLCJvcGVuIFN1Z2dlc3Rpb247XG5cbmxldCBleHBhbmRlciA9IEFzc2lzdGFudEV4cGFuZGVyLmM7XG5cbi8qIEZvciBzdWdnZXN0aW9ucyBpbiBwYXR0ZXJucywgc3VnZ2VzdCB2YXJpYWJsZXMgd2hpY2hcbiAqIG9jY3VyIGZyZWUgaW4gdGhhdCBwYXR0ZXJuJ3Mgc2NvcGUuICovXG5sZXQgZnJlZV92YXJpYWJsZXMgPVxuICAgIChleHBlY3RlZF90eTogVHlwLnQsIGN0eDogQ3R4LnQsIGNvX2N0eDogQ29DdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICAoKG5hbWUsIGVudHJpZXMpKSA9PlxuICAgICAgc3dpdGNoIChDdHgubG9va3VwX3ZhcihjdHgsIG5hbWUpKSB7XG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGpvaW50X3VzZV90eXAgPSBDb0N0eC5qb2luKGN0eCwgZW50cmllcyk7XG4gICAgICAgIGlmIChUeXAuaXNfY29uc2lzdGVudChjdHgsIGV4cGVjdGVkX3R5LCBqb2ludF91c2VfdHlwKSkge1xuICAgICAgICAgIFNvbWUoe2NvbnRlbnQ6IG5hbWUsIHN0cmF0ZWd5OiBQYXQoRnJvbUNvQ3R4KGpvaW50X3VzZV90eXApKX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE5vbmU7XG4gICAgICAgIH07XG4gICAgICB8IFNvbWUoXykgPT4gTm9uZVxuICAgICAgfSxcbiAgICBjb19jdHgsXG4gICk7XG59O1xuXG4vKiBGb3Igc3VnZ2VzdHNpb25zIGluIGV4cHJlc3Npb25zLCBzdWdnZXN0IHZhcmlhYmxlcyBmcm9tIHRoZSBjdHggKi9cbmxldCBib3VuZF92YXJpYWJsZXMgPSAodHlfZXhwZWN0OiBUeXAudCwgY3R4OiBDdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguVmFyRW50cnkoe3R5cCwgbmFtZSwgX30pXG4gICAgICAgIHdoZW4gVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eV9leHBlY3QsIHR5cCkgPT5cbiAgICAgIFNvbWUoe2NvbnRlbnQ6IG5hbWUsIHN0cmF0ZWd5OiBFeHAoQ29tbW9uKEZyb21DdHgodHlwKSkpfSlcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBib3VuZF9jb25zdHJ1Y3RvcnMgPVxuICAgICh3cmFwOiBzdHJhdGVneV9jb21tb24gPT4gc3RyYXRlZ3ksIHR5OiBUeXAudCwgY3R4OiBDdHgudClcbiAgICA6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICAvKiBnZXQgbmFtZXMgb2YgYWxsIGNvbnN0cnVjdG9yIGVudHJpZXMgY29uc2lzdGVudCB3aXRoIHR5ICovXG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5Db25zdHJ1Y3RvckVudHJ5KHt0eXAsIG5hbWUsIF99KVxuICAgICAgICB3aGVuIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5cCkgPT5cbiAgICAgIFNvbWUoe2NvbnRlbnQ6IG5hbWUsIHN0cmF0ZWd5OiB3cmFwKEZyb21DdHgodHlwKSl9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxuLyogU3VnZ2VzdCBhcHBseWluZyBhIGZ1bmN0aW9uIGZyb20gdGhlIGN0eCB3aGljaCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHR5cGUgKi9cbmxldCBib3VuZF9hcHMgPSAodHlfZXhwZWN0OiBUeXAudCwgY3R4OiBDdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguVmFyRW50cnkoe3R5cDoge3Rlcm06IEFycm93KF8sIHR5X291dCksIF99IGFzIHR5X2FyciwgbmFtZSwgX30pXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlfb3V0KVxuICAgICAgICAgICYmICFUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlfYXJyKSA9PiB7XG4gICAgICAgIFNvbWUoe1xuICAgICAgICAgIGNvbnRlbnQ6IG5hbWUgKysgXCIoXCIgKysgZXhwYW5kZXIsXG4gICAgICAgICAgc3RyYXRlZ3k6IEV4cChDb21tb24oRnJvbUN0eEFwKHR5X291dCkpKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgYm91bmRfY29uc3RydWN0b3JfYXBzID0gKHdyYXAsIHR5OiBUeXAudCwgY3R4OiBDdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguQ29uc3RydWN0b3JFbnRyeSh7XG4gICAgICAgIHR5cDoge3Rlcm06IEFycm93KF8sIHR5X291dCksIF99IGFzIHR5X2FycixcbiAgICAgICAgbmFtZSxcbiAgICAgICAgXyxcbiAgICAgIH0pXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5LCB0eV9vdXQpXG4gICAgICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5X2FycikgPT5cbiAgICAgIFNvbWUoe1xuICAgICAgICBjb250ZW50OiBuYW1lICsrIFwiKFwiICsrIGV4cGFuZGVyLFxuICAgICAgICBzdHJhdGVneTogd3JhcChGcm9tQ3R4QXAodHlfb3V0KSksXG4gICAgICB9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxuLyogU3VnZ2VzdCBib3VuZCB0eXBlIGFsaWFzZXMgaW4gdHlwZSBhbm5vdGF0aW9ucyBvciBkZWZpbml0aW9ucyAqL1xubGV0IHR5cF9jb250ZXh0X2VudHJpZXMgPSAoY3R4OiBDdHgudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDdHguVFZhckVudHJ5KHtraW5kOiBTaW5nbGV0b24oXyksIG5hbWUsIF99KSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IFR5cChGcm9tQ3R4KX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgc3VnZ2VzdF92YXJpYWJsZSA9IChjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IGN0eCA9IEluZm8uY3R4X29mKGNpKTtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIF99KSA9PlxuICAgIGJvdW5kX3ZhcmlhYmxlcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9hcHMoTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gRXhwKENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IEV4cChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gIHwgSW5mb1BhdCh7bW9kZSwgY29fY3R4LCBffSkgPT5cbiAgICBmcmVlX3ZhcmlhYmxlcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgsIGNvX2N0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9ycyh4ID0+IFBhdChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMoeCA9PiBQYXQoQ29tbW9uKHgpKSwgTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICB8IEluZm9UeXAoXykgPT4gdHlwX2NvbnRleHRfZW50cmllcyhjdHgpXG4gIHwgXyA9PiBbXVxuICB9O1xufTtcblxuLyogU3VnZ2VzdCBsb29rYWhlYWQgdG9rZW5zOlxuICpcbiAqIFNvbWV0aW1lcyB0aGUgZXhwZWN0ZWQgdHlwZSBpcyBUeSwgYnV0IHdlIHdhbnQgdG8gZW50ZXIgc29tZXRoaW5nIG9mIFR5J1xuICogYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBmb2xsb3cgaXQgdXAgd2l0aCBhbiBpbmZpeCBvcCBvZiB0eXBlIChUeScsIF8pIC0+IFR5LlxuICpcbiAqIEZvciBub3cgd2Ugc3BlY2lhbC1jYXNlIHN1Y2ggc2l0dWF0aW9ucyBpbnN0ZWFkIG9mIGRlcml2aW5nIHRoZW0gZnJvbSB0aGVcbiAqIGdyYW1tYXIuIEluIHRoZSBjdXJyZW50IGdyYW1tYXIgdGhlcmUgYXJlIGJhc2ljYWxseSAzIGNsYXNzZXM6XG4gKlxuICogMS4gSWYgYm9vbCBpcyBleHBlY3RlZCwgY291bGQgYmUgaW50LCBmbG9hdCBvciBzdHJpbmcgKGNvbXBhcmlzb25zKVxuICogMi4gSWYgbGlzdCh0eSkgaXMgZXhwZWN0ZWQsIGNvdWxkIGJlIHR5IChjb25zKVxuICogMy4gSWYgdHVwbGUoW3R5LCAuLi5dKSBpcyBleHBlY3RlZCwgY291bGQgYmUgdHkgKGNvbW1hKVxuXG4gKiAyIGFuZCAzIGFyZSB0aGUgZWFzaWVzdCB0byBtYWtlIGVyZ29ub21pYyBhcyB0aGVyZSBpcyBvbmx5IG9uZSBzdWNoXG4gKiBpbmZpeCBvcCwgc28gd2UgY2FuIGp1c3QgY29tYmluZSB0aGUgdHdvIHRva2VucyBpbnRvIGEgc2luZ2xlIGNvbXBsZXRpb24uXG4gKiAxIGlzIHNsaWdodGx5IG1vcmUgZnJhdWdodCBiZWNhdXNlIGFzIHdlIGVpdGhlciBuZWVkIHRvIG5vdCBzaG93IHRoZVxuICogc2Vjb25kIHRva2VuLCBvciBwaWNrIGFuIGFyYml0cmFyeSByZXByZXNlbnRhdGl2ZSBvcCB0byBzaG93LCBhbmQgd2VcbiAqIHByb2JhYmx5IHdvdWxkbid0IHdhbnQgdG8gY29tcGxldGUgdGhhdCBvcCwgZm9yY2luZyB0aGUgdXNlciB0byBiYWNrc3BhY2VcbiAqIGlmIHRoZXkgbWVhbnQgYW5vdGhlciwgc28gd2UnZCBuZWVkIHRvIGltcGxlbWVudCBzdGFnZWQgY29tcGxldGlvbi5cbiAqIEZvciBub3cgd2UganVzdCBkb24ndCBzaG93IGEgc2Vjb25kIHRva2VuLCB3aGljaCBjYW4gYmUgc2xpZ2h0bHkgY29uZnVzaW5nLlxuICpcbiAqL1xuXG5sZXQgc3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUgPSAoY2k6IEluZm8udCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIGxldCByZXN0cmF0ZWdpemUgPSAoc3VmZml4LCB7Y29udGVudCwgc3RyYXRlZ3l9KSA9PiB7XG4gICAgY29udGVudDogY29udGVudCArKyBzdWZmaXgsXG4gICAgc3RyYXRlZ3ksXG4gIH07XG4gIGxldCBjdHggPSBJbmZvLmN0eF9vZihjaSk7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBJbmZvRXhwKHttb2RlLCBffSkgPT5cbiAgICBsZXQgZXhwX3JlZnMgPSB0eSA9PlxuICAgICAgYm91bmRfdmFyaWFibGVzKHR5LCBjdHgpXG4gICAgICBAIGJvdW5kX2NvbnN0cnVjdG9ycyh4ID0+IEV4cChDb21tb24oeCkpLCB0eSwgY3R4KTtcbiAgICBsZXQgZXhwX2FwcyA9IHR5ID0+XG4gICAgICBib3VuZF9hcHModHksIGN0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gRXhwKENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIHN3aXRjaCAoTW9kZS50eV9vZihtb2RlKSB8PiBUeXAudGVybV9vZikge1xuICAgIHwgTGlzdCh0eSkgPT5cbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApOjpcIiksIGV4cF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCI6OlwiKSwgZXhwX3JlZnModHkpKVxuICAgIHwgUHJvZChbdHksIC4uLnR5c10pID0+XG4gICAgICBsZXQgY29tbWFzID1cbiAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIF8gPT4gXCIsXCIpIHw+IFN0cmluZy5jb25jYXQoXCIgXCIpO1xuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiIClcIiArKyBjb21tYXMpLCBleHBfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKGNvbW1hcyksIGV4cF9yZWZzKHR5KSk7XG4gICAgfCBCb29sID0+XG4gICAgICAvKiBUT0RPOiBGaW5kIGEgVUkgdG8gbWFrZSB0aGVzZSBsZXNzIGNvbmZ1c2luZyAqL1xuICAgICAgZXhwX3JlZnMoSW50IHw+IFR5cC5mcmVzaClcbiAgICAgIEAgZXhwX3JlZnMoRmxvYXQgfD4gVHlwLmZyZXNoKVxuICAgICAgQCBleHBfcmVmcyhTdHJpbmcgfD4gVHlwLmZyZXNoKVxuICAgICAgQCBleHBfYXBzKEludCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoRmxvYXQgfD4gVHlwLmZyZXNoKVxuICAgICAgQCBleHBfYXBzKFN0cmluZyB8PiBUeXAuZnJlc2gpXG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgfCBJbmZvUGF0KHttb2RlLCBjb19jdHgsIF99KSA9PlxuICAgIGxldCBwYXRfcmVmcyA9IHR5ID0+XG4gICAgICBmcmVlX3ZhcmlhYmxlcyh0eSwgY3R4LCBjb19jdHgpXG4gICAgICBAIGJvdW5kX2NvbnN0cnVjdG9ycyh4ID0+IFBhdChDb21tb24oeCkpLCB0eSwgY3R4KTtcbiAgICBsZXQgcGF0X2FwcyA9IHR5ID0+IGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IFBhdChDb21tb24oeCkpLCB0eSwgY3R4KTtcbiAgICBzd2l0Y2ggKE1vZGUudHlfb2YobW9kZSkgfD4gVHlwLnRlcm1fb2YpIHtcbiAgICB8IExpc3QodHkpID0+XG4gICAgICBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCIgKTo6XCIpLCBwYXRfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiOjpcIiksIHBhdF9yZWZzKHR5KSlcbiAgICB8IFByb2QoW3R5LCAuLi50eXNdKSA9PlxuICAgICAgbGV0IGNvbW1hcyA9XG4gICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aCh0eXMpLCBfID0+IFwiLFwiKSB8PiBTdHJpbmcuY29uY2F0KFwiIFwiKTtcbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApXCIgKysgY29tbWFzKSwgcGF0X2Fwcyh0eSkpXG4gICAgICBAIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShjb21tYXMpLCBwYXRfcmVmcyh0eSkpO1xuICAgIHwgXyA9PiBbXVxuICAgIH07XG4gIHwgSW5mb1R5cChfKSA9PiBbXVxuICB8IF8gPT4gW11cbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG4vKiBUaGlzIG1vZHVsZSBnZW5lcmF0ZXMgVHlEaSBzdWdnZXN0aW9ucyB3aGljaCBkZXBlbmRcbiAqIG5laXRoZXIgb24gdGhlIHR5cGluZyBjb250ZXh0IG9yIHRoZSBiYWNrcGFjayAqL1xuXG5sZXQgbGVhZGluZ19leHBhbmRlciA9IFwiIFwiICsrIEFzc2lzdGFudEV4cGFuZGVyLmM7XG5cbi8qIFNwZWNpZmllcyB0eXBlIGluZm9ybWF0aW9uIGZvciBzeW50YWN0aWMgZm9ybXMuIENvdWxkIGluIHByaW5jaXBsZSBiZVxuICogZGVyaXZlZCBieSBnZW5lcmF0aW5nIHNlZ21lbnRzIGZyb20gRm9ybXMsIHBhcnNpbmcgdGhlbSB0byB0ZXJtcywgYW5kXG4gKiBydW5uaW5nIFN0YXRpY3MsIGJ1dCBmb3Igbm93LCBuZXcgZm9ybXMgZS5nLiBvcGVyYXRvcnMgbXVzdCBiZSBhZGRlZFxuICogYmVsb3cgbWFudWFsbHkuICAqL1xubW9kdWxlIFR5cCA9IHtcbiAgbGV0IHVuazogVHlwLnQgPSBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2g7XG5cbiAgbGV0IG9mX2NvbnN0X21vbm9fZGVsaW06IGxpc3QoKFRva2VuLnQsIFR5cC50KSkgPSBbXG4gICAgKFwidHJ1ZVwiLCBCb29sIHw+IFR5cC5mcmVzaCksXG4gICAgKFwiZmFsc2VcIiwgQm9vbCB8PiBUeXAuZnJlc2gpLFxuICAgIC8vKFwiW11cIiwgTGlzdCh1bmspKSwgLyAqTk9URTogd291bGQgbmVlZCB0byByZWZhY3RvciBidWZmZXIgZm9yIHRoaXMgdG8gc2hvdyB1cCAqL1xuICAgIC8vKFwiKClcIiwgUHJvZChbXSkpLCAvKiBOT1RFOiB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yIGJ1ZmZlciBmb3IgdGhpcyB0byBzaG93IHVwICovXG4gICAgKFwiXFxcIlxcXCJcIiwgU3RyaW5nIHw+IFR5cC5mcmVzaCksIC8qIE5PVEU6IElycmVsZXZlbnQgYXMgc2Vjb25kIHF1b3RlIGFwcGVhcnMgYXV0b21hdGljYWxseSAqL1xuICAgIChcIl9cIiwgdW5rKSxcbiAgXTtcblxuICBsZXQgb2ZfbGVhZGluZ19kZWxpbTogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9IFtcbiAgICAoXCJjYXNlXCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgICAoXCJmdW5cIiArKyBsZWFkaW5nX2V4cGFuZGVyLCBBcnJvdyh1bmssIHVuaykgfD4gVHlwLmZyZXNoKSxcbiAgICAoXG4gICAgICBcInR5cGZ1blwiICsrIGxlYWRpbmdfZXhwYW5kZXIsXG4gICAgICBGb3JhbGwoVmFyKFwiXCIpIHw+IFRQYXQuZnJlc2gsIHVuaykgfD4gVHlwLmZyZXNoLFxuICAgICksXG4gICAgKFwiaWZcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICAgIChcImxldFwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwidGVzdFwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIFByb2QoW10pIHw+IFR5cC5mcmVzaCksXG4gICAgKFwidHlwZVwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gIF07XG5cbiAgbGV0IG9mX2luZml4X2RlbGltOiBsaXN0KChUb2tlbi50LCBUeXAudGVybSkpID0gW1xuICAgIChcInw+XCIsIFVua25vd24oSW50ZXJuYWwpKSwgLyogKi9cbiAgICAoXCIsXCIsIFByb2QoW3VuaywgdW5rXSkpLCAvKiBOT1RFOiBDdXJyZW50IGFwcHJvYWNoIGRvZXNuJ3Qgd29yayBmb3IgdGhpcywgYnV0IGlycmVsZXZhbnQgYXMgMS1jaGFyICovXG4gICAgKFwiOjpcIiwgTGlzdCh1bmspKSxcbiAgICAoXCJAXCIsIExpc3QodW5rKSksXG4gICAgKFwiO1wiLCBVbmtub3duKEludGVybmFsKSksXG4gICAgKFwiJiZcIiwgQm9vbCksXG4gICAgKFwiXFxcXC9cIiwgQm9vbCksXG4gICAgKFwifHxcIiwgQm9vbCksXG4gICAgKFwiJD09XCIsIEJvb2wpLFxuICAgIChcIj09LlwiLCBCb29sKSxcbiAgICAoXCI9PVwiLCBCb29sKSxcbiAgICAoXCIhXCIsIEJvb2wpLCAvLyBtYXliZSBkb2VzbnQgYmVsb25nIGhlcmU/IGJ1dCBibG9ja3MgYXV0b2NvbXBsZXRlIG9mICEgdG8gIT1cbiAgICAoXCIhPVwiLCBCb29sKSxcbiAgICAoXCIhPS5cIiwgQm9vbCksXG4gICAgKFwiPFwiLCBCb29sKSxcbiAgICAoXCI+XCIsIEJvb2wpLFxuICAgIChcIjw9XCIsIEJvb2wpLFxuICAgIChcIj49XCIsIEJvb2wpLFxuICAgIChcIjwuXCIsIEJvb2wpLFxuICAgIChcIj4uXCIsIEJvb2wpLFxuICAgIChcIjw9LlwiLCBCb29sKSxcbiAgICAoXCI+PS5cIiwgQm9vbCksXG4gICAgKFwiK1wiLCBJbnQpLFxuICAgIChcIi1cIiwgSW50KSxcbiAgICAoXCIqXCIsIEludCksXG4gICAgKFwiL1wiLCBJbnQpLFxuICAgIChcIioqXCIsIEludCksXG4gICAgKFwiKy5cIiwgRmxvYXQpLFxuICAgIChcIi0uXCIsIEZsb2F0KSxcbiAgICAoXCIqLlwiLCBGbG9hdCksXG4gICAgKFwiLy5cIiwgRmxvYXQpLFxuICAgIChcIioqLlwiLCBGbG9hdCksXG4gICAgKFwiKytcIiwgU3RyaW5nKSxcbiAgXTtcblxuICBsZXQgZXhwZWN0ZWQ6IEluZm8udCA9PiBUeXAudCA9XG4gICAgZnVuXG4gICAgfCBJbmZvRXhwKHttb2RlLCBffSlcbiAgICB8IEluZm9QYXQoe21vZGUsIF99KSA9PiBNb2RlLnR5X29mKG1vZGUpXG4gICAgfCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5mcmVzaDtcblxuICBsZXQgZmlsdGVyX2J5ID1cbiAgICAgIChcbiAgICAgICAgY3R4OiBDdHgudCxcbiAgICAgICAgZXhwZWN0ZWRfdHk6IFR5cC50LFxuICAgICAgICBzZWxmX3R5czogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSxcbiAgICAgICAgZGVsaW1zOiBsaXN0KHN0cmluZyksXG4gICAgICApXG4gICAgICA6IGxpc3QoKFRva2VuLnQsIFR5cC50KSkgPT5cbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICBkZWxpbSA9PiB7XG4gICAgICAgIGxldCogc2VsZl90eSA9IExpc3QuYXNzb2Nfb3B0KGRlbGltLCBzZWxmX3R5cyk7XG4gICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgZXhwZWN0ZWRfdHksIHNlbGZfdHkpXG4gICAgICAgICAgPyBTb21lKChkZWxpbSwgc2VsZl90eSkpIDogTm9uZTtcbiAgICAgIH0sXG4gICAgICBkZWxpbXMsXG4gICAgKTtcbn07XG5cbi8qIEF1dG9tYXRpY2FsbHkgY29sbGF0ZXMgbW9zdCBkZWxpbWl0ZXJzIGZyb20gRm9ybXMsIG5vdGFibHkgYWxsXG4gKiBtb25vIGRlbGltaXRlcnMsIGFsbCBpbmZpeCBvcGVyYXRvcnMsIGFuZCBhbGwgbGVhZGluZyBkZWxpbWl0ZXJzICovXG5tb2R1bGUgRGVsaW1zID0ge1xuICBsZXQgZGVsYXllZF9sZWFkaW5nID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmRlbGltc1xuICAgIHw+IExpc3QubWFwKHRva2VuID0+IHtcbiAgICAgICAgIGxldCAobGJsLCBfKSA9IE1vbGRzLmRlbGF5ZWRfZXhwYW5zaW9uKHRva2VuKTtcbiAgICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgKG06IE1vbGQudCkgPT5cbiAgICAgICAgICAgICBMaXN0Lmxlbmd0aChsYmwpID4gMSAmJiB0b2tlbiA9PSBMaXN0LmhkKGxibCkgJiYgbS5vdXQgPT0gc29ydFxuICAgICAgICAgICAgICAgPyBTb21lKHRva2VuICsrIGxlYWRpbmdfZXhwYW5kZXIpIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KGxibCksXG4gICAgICAgICApO1xuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbiAgbGV0IGRlbGF0ZWRfbGVhZGluZ19leHAgPSBkZWxheWVkX2xlYWRpbmcoRXhwKTtcbiAgbGV0IGRlbGF0ZWRfbGVhZGluZ19wYXQgPSBkZWxheWVkX2xlYWRpbmcoUGF0KTtcbiAgbGV0IGRlbGF0ZWRfbGVhZGluZ190eXAgPSBkZWxheWVkX2xlYWRpbmcoVHlwKTtcblxuICBsZXQgZGVsYXllZF9sZWFkaW5nID0gKHNvcnQ6IFNvcnQudCk6IGxpc3Qoc3RyaW5nKSA9PlxuICAgIHN3aXRjaCAoc29ydCkge1xuICAgIHwgRXhwID0+IGRlbGF0ZWRfbGVhZGluZ19leHBcbiAgICB8IFBhdCA9PiBkZWxhdGVkX2xlYWRpbmdfcGF0XG4gICAgfCBUeXAgPT4gZGVsYXRlZF9sZWFkaW5nX3R5cFxuICAgIHwgXyA9PiBbXVxuICAgIH07XG5cbiAgbGV0IGluZml4ID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmRlbGltc1xuICAgIHw+IExpc3QubWFwKHRva2VuID0+IHtcbiAgICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgKG06IE1vbGQudCkgPT5cbiAgICAgICAgICAgICBtLm91dCA9PSBzb3J0ICYmIE1vbGQuaXNfaW5maXhfb3AobSkgPyBTb21lKHRva2VuKSA6IE5vbmUsXG4gICAgICAgICAgIE1vbGRzLmdldChbdG9rZW5dKSxcbiAgICAgICAgIClcbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlblxuICAgIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuICBsZXQgaW5maXhfZXhwID0gaW5maXgoRXhwKTtcbiAgbGV0IGluZml4X3BhdCA9IGluZml4KFBhdCk7XG4gIGxldCBpbmZpeF90eXAgPSBpbmZpeChUeXApO1xuICBsZXQgaW5maXggPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gaW5maXhfZXhwXG4gICAgfCBQYXQgPT4gaW5maXhfcGF0XG4gICAgfCBUeXAgPT4gaW5maXhfdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcblxuICBsZXQgY29uc3RfbW9ubyA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KFRva2VuLnQpID0+XG4gICAgRm9ybS5jb25zdF9tb25vX2RlbGltc1xuICAgIHw+IExpc3QubWFwKHRva2VuID0+IHtcbiAgICAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgKG06IE1vbGQudCkgPT5cbiAgICAgICAgICAgICBtLm91dCA9PSBzb3J0ICYmIExpc3QubWVtKHRva2VuLCBGb3JtLmNvbnN0X21vbm9fZGVsaW1zKVxuICAgICAgICAgICAgICAgPyBTb21lKHRva2VuKSA6IE5vbmUsXG4gICAgICAgICAgIE1vbGRzLmdldChbdG9rZW5dKSxcbiAgICAgICAgIClcbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlblxuICAgIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG4gIGxldCBjb25zdF9tb25vX2V4cCA9IGNvbnN0X21vbm8oRXhwKTtcbiAgbGV0IGNvbnN0X21vbm9fcGF0ID0gY29uc3RfbW9ubyhQYXQpO1xuICBsZXQgY29uc3RfbW9ub190eXAgPSBjb25zdF9tb25vKFR5cCk7XG5cbiAgbGV0IGNvbnN0X21vbm8gPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gY29uc3RfbW9ub19leHBcbiAgICB8IFBhdCA9PiBjb25zdF9tb25vX3BhdFxuICAgIHwgVHlwID0+IGNvbnN0X21vbm9fdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcbn07XG5cbmxldCBzdWdnZXN0X2Zvcm0gPSAodHlfbWFwLCBkZWxpbXNfb2Zfc29ydCwgY2k6IEluZm8udCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIGxldCBzb3J0ID0gSW5mby5zb3J0X29mKGNpKTtcbiAgbGV0IGRlbGltcyA9IGRlbGltc19vZl9zb3J0KHNvcnQpO1xuICBsZXQgZmlsdGVyZWQgPVxuICAgIFR5cC5maWx0ZXJfYnkoSW5mby5jdHhfb2YoY2kpLCBUeXAuZXhwZWN0ZWQoY2kpLCB0eV9tYXAsIGRlbGltcyk7XG4gIHN3aXRjaCAoc29ydCkge1xuICB8IEV4cCA9PlxuICAgIExpc3QubWFwKFxuICAgICAgKChjb250ZW50LCB0eSkpID0+XG4gICAgICAgIFN1Z2dlc3Rpb24ue2NvbnRlbnQsIHN0cmF0ZWd5OiBFeHAoQ29tbW9uKE5ld0Zvcm0odHkpKSl9LFxuICAgICAgZmlsdGVyZWQsXG4gICAgKVxuICB8IFBhdCA9PlxuICAgIExpc3QubWFwKFxuICAgICAgKChjb250ZW50LCB0eSkpID0+XG4gICAgICAgIFN1Z2dlc3Rpb24ue2NvbnRlbnQsIHN0cmF0ZWd5OiBQYXQoQ29tbW9uKE5ld0Zvcm0odHkpKSl9LFxuICAgICAgZmlsdGVyZWQsXG4gICAgKVxuICB8IF8gPT5cbiAgICBkZWxpbXNcbiAgICB8PiBMaXN0Lm1hcChjb250ZW50ID0+IFN1Z2dlc3Rpb24ue2NvbnRlbnQsIHN0cmF0ZWd5OiBUeXAoTmV3Rm9ybSl9KVxuICB9O1xufTtcblxubGV0IHN1Z2dlc3Rfb3BlcmF0b3I6IEluZm8udCA9PiBsaXN0KFN1Z2dlc3Rpb24udCkgPVxuICBzdWdnZXN0X2Zvcm0oXG4gICAgTGlzdC5tYXAoKChhLCBiKSkgPT4gKGEsIElkVGFnZ2VkLmZyZXNoKGIpKSwgVHlwLm9mX2luZml4X2RlbGltKSxcbiAgICBEZWxpbXMuaW5maXgsXG4gICk7XG5cbmxldCBzdWdnZXN0X29wZXJhbmQ6IEluZm8udCA9PiBsaXN0KFN1Z2dlc3Rpb24udCkgPVxuICBzdWdnZXN0X2Zvcm0oVHlwLm9mX2NvbnN0X21vbm9fZGVsaW0sIERlbGltcy5jb25zdF9tb25vKTtcblxubGV0IHN1Z2dlc3RfbGVhZGluZzogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShUeXAub2ZfbGVhZGluZ19kZWxpbSwgRGVsaW1zLmRlbGF5ZWRfbGVhZGluZyk7XG4iLCJbQGRlcml2aW5nIHNleHBdXG50eXBlIGhvbGVfc29ydCA9XG4gIHwgRXhwcmVzc2lvbkhvbGVcbiAgfCBQYXR0ZXJuSG9sZTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0gSWQuTWFwLnQoKGhvbGVfc29ydCwgVHlwLnQsIFZhckN0eC50KSk7XG5sZXQgZW1wdHk6IHQgPSAoSWQuTWFwLmVtcHR5OiB0KTtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoQW55LnQpO1xuXG5sZXQgYWRkX2FsbCA9IChpZHM6IGxpc3QoSWQudCksIHRtOiBBbnkudCwgbWFwOiB0KSA9PlxuICBpZHMgfD4gTGlzdC5mb2xkX2xlZnQoKG1hcCwgaWQpID0+IGFkZChpZCwgdG0sIG1hcCksIG1hcCk7XG4iLCJpbmNsdWRlIElkLk1hcDtcbnR5cGUgdCA9IElkLk1hcC50KFRpbGUudCk7XG5cbi8vIHRhaWwtcmVjdXJzaXZlXG5sZXQgcmVjIG1rID0gKH5tYXA9ZW1wdHksIHNlZzogU2VnbWVudC50KTogdCA9PlxuICBTZWdtZW50LnRpbGVzKHNlZylcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKG1hcCwgdDogVGlsZS50KSA9PiB7XG4gICAgICAgICB0LmNoaWxkcmVuXG4gICAgICAgICB8PiBMaXN0LmZvbGRfbGVmdCgobWFwLCBraWQpID0+IG1rKH5tYXAsIGtpZCksIGFkZCh0LmlkLCB0LCBtYXApKVxuICAgICAgIH0sXG4gICAgICAgbWFwLFxuICAgICApO1xuIiwiLyogTUFLRVRFUk1cblxuICAgICBUaGlzIHBhcnNlcyB0aWxlIHN0cnVjdHVyZSBpbnRvIHRlcm0gc3RydWN0dXJlLlxuICAgICBUaGUgbGFuZ3VhZ2Ugc3ludGF4LCBhcyBkZXRlcm1pbmVkIGJ5IEZvcm0ucmUsIGlzIGFuXG4gICAgIG9wZW4sIGRhdGEtZHJpdmVuIHN5c3RlbSwgc28gYWRkaW5nIGEgc3ludGFjdGljIGZvcm1cbiAgICAgdGhlcmUgd2lsbCBub3QgdHJpZ2dlciBhIHN0YXRpYyBlcnJvciBoZXJlOyB5b3UgbXVzdFxuICAgICByZW1lbWJlciB0byBhZGQgYSBjYXNlIGJlbG93IGZvciBlYWNoIG5ldyBmb3JtIGFkZGVkXG4gICAgIHRvIHRoZSBzeW50YXguXG5cbiAgICAgV0FSTklORzogVGhpcyBtb2R1bGUgaXMgc3RpbGwgc3RydWN0dXJhbGx5IGluIGZsdXguXG4gICAqL1xuXG5vcGVuIFV0aWw7XG5vcGVuIEFueTtcblxuLy8gVE9ETyBtYWtlIGxlc3MgaGFja3lcbmxldCB0b2tlbnMgPVxuICBQaWVjZS5nZXQoXG4gICAgXyA9PiBbXSxcbiAgICBfID0+IFtcIiBcIl0sXG4gICAgKHQ6IFRpbGUudCkgPT4gdC5zaGFyZHMgfD4gTGlzdC5tYXAoTGlzdC5udGgodC5sYWJlbCkpLFxuICApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpbGUgPSAoSWQudCwgQWJhLnQoVG9rZW4udCwgdCkpO1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0aWxlcyA9IEFiYS50KHRpbGUsIHQpO1xubGV0IHNpbmdsZSA9IChpZCwgc3Vic3QpID0+IChbKGlkLCBzdWJzdCldLCBbXSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdW5zb3J0ZWQgPVxuICB8IE9wKHRpbGVzKVxuICB8IFByZSh0aWxlcywgdClcbiAgfCBQb3N0KHQsIHRpbGVzKVxuICB8IEJpbih0LCB0aWxlcywgdCk7XG5cbmxldCBpc19uYXJ5ID1cbiAgICAoaXNfc29ydDogQW55LnQgPT4gb3B0aW9uKCdzb3J0KSwgZGVsaW06IFRva2VuLnQsIChkZWxpbXMsIGtpZHMpOiB0aWxlcylcbiAgICA6IG9wdGlvbihsaXN0KCdzb3J0KSkgPT5cbiAgaWYgKGRlbGltcyB8PiBMaXN0Lm1hcChzbmQpIHw+IExpc3QuZm9yX2FsbCgoPT0pKChbZGVsaW1dLCBbXSkpKSkge1xuICAgIGtpZHMgfD4gTGlzdC5tYXAoaXNfc29ydCkgfD4gT3B0VXRpbC5zZXF1ZW5jZTtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xuXG5sZXQgaXNfdHVwbGVfZXhwID0gaXNfbmFyeShBbnkuaXNfZXhwLCBcIixcIik7XG5sZXQgaXNfdHVwbGVfcGF0ID0gaXNfbmFyeShBbnkuaXNfcGF0LCBcIixcIik7XG5sZXQgaXNfdHVwbGVfdHlwID0gaXNfbmFyeShBbnkuaXNfdHlwLCBcIixcIik7XG5sZXQgaXNfdHlwX2JzdW0gPSBpc19uYXJ5KEFueS5pc190eXAsIFwiK1wiKTtcblxubGV0IGlzX2dyb3V0ID0gdGlsZXMgPT5cbiAgQWJhLmdldF9hcyh0aWxlcykgfD4gTGlzdC5tYXAoc25kKSB8PiBMaXN0LmZvcl9hbGwoKD09KSgoW1wiIFwiXSwgW10pKSk7XG5cbmxldCBpc19ydWxlcyA9ICgodHMsIGtpZHMpOiB0aWxlcyk6IG9wdGlvbihBYmEudChVUGF0LnQsIFVFeHAudCkpID0+IHtcbiAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgbGV0KyBwcyA9XG4gICAgdHNcbiAgICB8PiBMaXN0Lm1hcChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCAoXywgKFtcInxcIiwgXCI9PlwiXSwgW0FueS5QYXQocCldKSkgPT4gU29tZShwKVxuICAgICAgICAgfCBfID0+IE5vbmUsXG4gICAgICAgKVxuICAgIHw+IE9wdFV0aWwuc2VxdWVuY2VcbiAgYW5kKyBjbGF1c2VzID1cbiAgICBraWRzXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgRXhwKGNsYXVzZSkgPT4gU29tZShjbGF1c2UpXG4gICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gT3B0VXRpbC5zZXF1ZW5jZTtcbiAgQWJhLm1rKHBzLCBjbGF1c2VzKTtcbn07XG5cbmxldCBpZHNfb2ZfdGlsZXMgPSAodGlsZXM6IHRpbGVzKSA9PiBMaXN0Lm1hcChmc3QsIEFiYS5nZXRfYXModGlsZXMpKTtcbmxldCBpZHMgPVxuICBmdW5cbiAgfCBPcCh0aWxlcylcbiAgfCBQcmUodGlsZXMsIF8pXG4gIHwgUG9zdChfLCB0aWxlcylcbiAgfCBCaW4oXywgdGlsZXMsIF8pID0+IGlkc19vZl90aWxlcyh0aWxlcyk7XG5cbmxldCBraWRzX29mX3RpbGUgPSAoKF9pZCwgKF90b2tlbnMsIGtpZHMpKTogdGlsZSkgPT4ga2lkcztcbmxldCBraWRzX29mX3RpbGVzID0gKHRpbGVzOiB0aWxlcykgPT5cbiAgdGlsZXNcbiAgfD4gQWJhLm1hcF9hKGtpZHNfb2ZfdGlsZSlcbiAgfD4gQWJhLmpvaW4oRnVuLmlkLCBraWQgPT4gW2tpZF0pXG4gIHw+IExpc3QuY29uY2F0O1xubGV0IGtpZHNfb2ZfdW5zb3J0ZWQgPVxuICBmdW5cbiAgfCBPcCh0aWxlcykgPT4ga2lkc19vZl90aWxlcyh0aWxlcylcbiAgfCBQcmUodGlsZXMsIHIpID0+IGtpZHNfb2ZfdGlsZXModGlsZXMpIEAgW3JdXG4gIHwgUG9zdChsLCB0aWxlcykgPT4gW2xdIEAga2lkc19vZl90aWxlcyh0aWxlcylcbiAgfCBCaW4obCwgdGlsZXMsIHIpID0+IFtsXSBAIGtpZHNfb2ZfdGlsZXModGlsZXMpIEAgW3JdO1xuXG4vLyBOZWVkIHRoaXMgbWFwIHRvIGNvbGxlY3QgYWxsIHN0cnVjdHVyYWwgdGVybXMsXG4vLyBub3QganVzdCB0aGUgb25lcyByZWNvZ25pemVkIGluIFN0YXRpY3MuXG4vLyBUT0RPIHVuaGFja1xubGV0IG1hcDogcmVmKFRlcm1NYXAudCkgPSByZWYoSWQuTWFwLmVtcHR5KTtcbmxldCByZXR1cm4gPSAod3JhcCwgaWRzLCB0bSkgPT4ge1xuICBtYXAgOj0gVGVybU1hcC5hZGRfYWxsKGlkcywgd3JhcCh0bSksIG1hcF4pO1xuICB0bTtcbn07XG5cbmxldCBwYXJzZV9zdW1fdGVybTogVVR5cC50ID0+IENvbnN0cnVjdG9yTWFwLnZhcmlhbnQoVVR5cC50KSA9XG4gIGZ1blxuICB8IHt0ZXJtOiBWYXIoY3RyKSwgaWRzLCBffSA9PiBWYXJpYW50KGN0ciwgaWRzLCBOb25lKVxuICB8IHt0ZXJtOiBBcCh7dGVybTogVmFyKGN0ciksIGlkczogaWRzX2N0ciwgX30sIHUpLCBpZHM6IGlkc19hcCwgX30gPT5cbiAgICBWYXJpYW50KGN0ciwgaWRzX2N0ciBAIGlkc19hcCwgU29tZSh1KSlcbiAgfCB0ID0+IEJhZEVudHJ5KHQpO1xuXG5sZXQgcmVjIGdvX3MgPSAoczogU29ydC50LCBza2VsOiBTa2VsLnQsIHNlZzogU2VnbWVudC50KTogdCA9PlxuICBzd2l0Y2ggKHMpIHtcbiAgfCBQYXQgPT4gUGF0KHBhdCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBUUGF0ID0+IFRQYXQodHBhdCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBUeXAgPT4gVHlwKHR5cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBFeHAgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBSdWwgPT4gUnVsKHJ1bCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgfCBOdWwgPT4gTnVsKCkgLy9UT0RPXG4gIHwgQW55ID0+XG4gICAgbGV0IHRtID0gdW5zb3J0ZWQoc2tlbCwgc2VnKTtcbiAgICBsZXQgaWRzID0gaWRzKHRtKTtcbiAgICBzd2l0Y2ggKExpc3RVdGlsLmhkX29wdChpZHMpKSB7XG4gICAgfCBOb25lID0+IEV4cChleHAodW5zb3J0ZWQoc2tlbCwgc2VnKSkpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChUaWxlTWFwLmZpbmRfb3B0KGlkLCBUaWxlTWFwLm1rKHNlZykpKSB7XG4gICAgICB8IE5vbmUgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgICAgIHwgU29tZSh0KSA9PlxuICAgICAgICBpZiAodC5tb2xkLm91dCA9PSBBbnkpIHtcbiAgICAgICAgICBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnb19zKHQubW9sZC5vdXQsIHNrZWwsIHNlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbmFuZCBleHAgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCAodGVybSwgaW5uZXJfaWRzKSA9IGV4cF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCkgQCBpbm5lcl9pZHM7XG4gIHJldHVybihlID0+IEV4cChlKSwgaWRzLCB7aWRzLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtfSk7XG59XG5hbmQgZXhwX3Rlcm06IHVuc29ydGVkID0+IChVRXhwLnRlcm0sIGxpc3QoSWQudCkpID0ge1xuICBsZXQgcmV0ID0gKHRtOiBVRXhwLnRlcm0pID0+ICh0bSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFVFeHAuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICAvLyBzaW5nbGUtdGlsZSBjYXNlXG4gICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiByZXQoVHVwbGUoW10pKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3dpbGQodCkgPT4gcmV0KERlZmVycmFsKE91dHNpZGVBcCkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfbGlzdCh0KSA9PiByZXQoTGlzdExpdChbXSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfYm9vbCh0KSA9PiByZXQoQm9vbChib29sX29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfaW50KHQpID0+IHJldChJbnQoaW50X29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpID0+XG4gICAgICAgIHJldChTdHJpbmcoRm9ybS5zdHJpcF9xdW90ZXModCkpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Zsb2F0KHQpID0+IHJldChGbG9hdChmbG9hdF9vZl9zdHJpbmcodCkpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3Zhcih0KSA9PiByZXQoVmFyKHQpKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2N0cih0KSA9PiByZXQoQ29uc3RydWN0b3IodCkpXG4gICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW0V4cChib2R5KV0pID0+IHJldChQYXJlbnMoYm9keSkpXG4gICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW0V4cChib2R5KV0pID0+XG4gICAgICAgIHN3aXRjaCAoYm9keSkge1xuICAgICAgICB8IHtpZHMsIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKGVzKX0gPT4gKExpc3RMaXQoZXMpLCBpZHMpXG4gICAgICAgIHwgdGVybSA9PiByZXQoTGlzdExpdChbdGVybV0pKVxuICAgICAgICB9XG4gICAgICB8IChbXCJ0ZXN0XCIsIFwiZW5kXCJdLCBbRXhwKHRlc3QpXSkgPT4gcmV0KFRlc3QodGVzdCkpXG4gICAgICB8IChbXCJjYXNlXCIsIFwiZW5kXCJdLCBbUnVsKHtpZHMsIHRlcm06IFJ1bGVzKHNjcnV0LCBydWxlcyksIF99KV0pID0+IChcbiAgICAgICAgICBNYXRjaChzY3J1dCwgcnVsZXMpLFxuICAgICAgICAgIGlkcyxcbiAgICAgICAgKVxuICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgcmV0KEludmFsaWQodCkpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFByZSh0aWxlcywgRXhwKHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgIHwgKFtcIiRcIl0sIFtdKSA9PiBVbk9wKE1ldGEoVW5xdW90ZSksIHIpXG4gICAgICAgIHwgKFtcIi1cIl0sIFtdKSA9PiBVbk9wKEludChNaW51cyksIHIpXG4gICAgICAgIHwgKFtcIiFcIl0sIFtdKSA9PiBVbk9wKEJvb2woTm90KSwgcilcbiAgICAgICAgfCAoW1wiZnVuXCIsIFwiLT5cIl0sIFtQYXQocGF0KV0pID0+IEZ1bihwYXQsIHIsIE5vbmUsIE5vbmUpXG4gICAgICAgIHwgKFtcImZpeFwiLCBcIi0+XCJdLCBbUGF0KHBhdCldKSA9PiBGaXhGKHBhdCwgciwgTm9uZSlcbiAgICAgICAgfCAoW1widHlwZnVuXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkgPT4gVHlwRnVuKHRwYXQsIHIsIE5vbmUpXG4gICAgICAgIHwgKFtcImxldFwiLCBcIj1cIiwgXCJpblwiXSwgW1BhdChwYXQpLCBFeHAoZGVmKV0pID0+IExldChwYXQsIGRlZiwgcilcbiAgICAgICAgfCAoW1wiaGlkZVwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcihGaWx0ZXIoe2FjdDogKEV2YWwsIE9uZSksIHBhdDogZmlsdGVyfSksIHIpXG4gICAgICAgIHwgKFtcImV2YWxcIiwgXCJpblwiXSwgW0V4cChmaWx0ZXIpXSkgPT5cbiAgICAgICAgICBGaWx0ZXIoRmlsdGVyKHthY3Q6IChFdmFsLCBBbGwpLCBwYXQ6IGZpbHRlcn0pLCByKVxuICAgICAgICB8IChbXCJwYXVzZVwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcihGaWx0ZXIoe2FjdDogKFN0ZXAsIE9uZSksIHBhdDogZmlsdGVyfSksIHIpXG4gICAgICAgIHwgKFtcImRlYnVnXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgQWxsKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1widHlwZVwiLCBcIj1cIiwgXCJpblwiXSwgW1RQYXQodHBhdCksIFR5cChkZWYpXSkgPT5cbiAgICAgICAgICBUeUFsaWFzKHRwYXQsIGRlZiwgcilcbiAgICAgICAgfCAoW1wiaWZcIiwgXCJ0aGVuXCIsIFwiZWxzZVwiXSwgW0V4cChjb25kKSwgRXhwKGNvbnNlcSldKSA9PlxuICAgICAgICAgIElmKGNvbmQsIGNvbnNlcSwgcilcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUG9zdChFeHAobCksIHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgfCAoW1wiKClcIl0sIFtdKSA9PlxuICAgICAgICByZXQoXG4gICAgICAgICAgQXAoXG4gICAgICAgICAgICBGb3J3YXJkLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHtpZHM6IFtJZC5udWxsYXJ5X2FwX2ZsYWddLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBUdXBsZShbXSl9LFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbRXhwKGFyZyldKSA9PlxuICAgICAgICBsZXQgdXNlX2RlZmVycmFsID0gKGFyZzogVUV4cC50KTogVUV4cC50ID0+IHtcbiAgICAgICAgICBpZHM6IGFyZy5pZHMsXG4gICAgICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgICAgICB0ZXJtOiBEZWZlcnJhbChJbkFwKSxcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChhcmcudGVybSkge1xuICAgICAgICB8IF8gd2hlbiBVRXhwLmlzX2RlZmVycmFsKGFyZykgPT5cbiAgICAgICAgICByZXQoRGVmZXJyZWRBcChsLCBbdXNlX2RlZmVycmFsKGFyZyldKSlcbiAgICAgICAgfCBUdXBsZShlcykgd2hlbiBMaXN0LmV4aXN0cyhVRXhwLmlzX2RlZmVycmFsLCBlcykgPT4gKFxuICAgICAgICAgICAgRGVmZXJyZWRBcChcbiAgICAgICAgICAgICAgbCxcbiAgICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICAgYXJnID0+IFVFeHAuaXNfZGVmZXJyYWwoYXJnKSA/IHVzZV9kZWZlcnJhbChhcmcpIDogYXJnLFxuICAgICAgICAgICAgICAgIGVzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFyZy5pZHMsXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gPT4gcmV0KEFwKEZvcndhcmQsIGwsIGFyZykpXG4gICAgICAgIH07XG4gICAgICB8IChbXCJAPFwiLCBcIj5cIl0sIFtUeXAodHkpXSkgPT4gcmV0KFR5cEFwKGwsIHR5KSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgQmluKEV4cChsKSwgdGlsZXMsIEV4cChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKGlzX3R1cGxlX2V4cCh0aWxlcykpIHtcbiAgICB8IFNvbWUoYmV0d2Vlbl9raWRzKSA9PiByZXQoVHVwbGUoW2xdIEAgYmV0d2Vlbl9raWRzIEAgW3JdKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgICByZXQoXG4gICAgICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgICAgfCAoW1wiK1wiXSwgW10pID0+IEJpbk9wKEludChQbHVzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCItXCJdLCBbXSkgPT4gQmluT3AoSW50KE1pbnVzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqXCJdLCBbXSkgPT4gQmluT3AoSW50KFRpbWVzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqKlwiXSwgW10pID0+IEJpbk9wKEludChQb3dlciksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiL1wiXSwgW10pID0+IEJpbk9wKEludChEaXZpZGUpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjxcIl0sIFtdKSA9PiBCaW5PcChJbnQoTGVzc1RoYW4pLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj5cIl0sIFtdKSA9PiBCaW5PcChJbnQoR3JlYXRlclRoYW4pLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjw9XCJdLCBbXSkgPT4gQmluT3AoSW50KExlc3NUaGFuT3JFcXVhbCksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPj1cIl0sIFtdKSA9PiBCaW5PcChJbnQoR3JlYXRlclRoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI9PVwiXSwgW10pID0+IEJpbk9wKEludChFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiE9XCJdLCBbXSkgPT4gQmluT3AoSW50KE5vdEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiKy5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChQbHVzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCItLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KE1pbnVzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KFRpbWVzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIvLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KERpdmlkZSksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiKiouXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoUG93ZXIpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjwuXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTGVzc1RoYW4pLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj4uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoR3JlYXRlclRoYW4pLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjw9LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KExlc3NUaGFuT3JFcXVhbCksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPj0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI9PS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiE9LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KE5vdEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiJiZcIl0sIFtdKSA9PiBCaW5PcChCb29sKEFuZCksIGwsIHIpXG4gICAgICAgICAgfCAoW1wifHxcIl0sIFtdKSA9PiBCaW5PcChCb29sKE9yKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI6OlwiXSwgW10pID0+IENvbnMobCwgcilcbiAgICAgICAgICB8IChbXCI7XCJdLCBbXSkgPT4gU2VxKGwsIHIpXG4gICAgICAgICAgfCAoW1wiKytcIl0sIFtdKSA9PiBCaW5PcChTdHJpbmcoQ29uY2F0KSwgbCwgcilcbiAgICAgICAgICB8IChbXCIkPT1cIl0sIFtdKSA9PiBCaW5PcChTdHJpbmcoRXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCJ8PlwiXSwgW10pID0+IEFwKFJldmVyc2UsIGwsIHIpXG4gICAgICAgICAgfCAoW1wiQFwiXSwgW10pID0+IExpc3RDb25jYXQobCwgcilcbiAgICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIH1cbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuYW5kIHBhdCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gcGF0X3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKHAgPT4gUGF0KHApLCBpZHMsIHtpZHMsIHRlcm0sIGNvcGllZDogZmFsc2V9KTtcbn1cbmFuZCBwYXRfdGVybTogdW5zb3J0ZWQgPT4gKFVQYXQudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodGVybTogVVBhdC50ZXJtKSA9PiAodGVybSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFVQYXQuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiBUdXBsZShbXSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X2xpc3QodCkgPT4gTGlzdExpdChbXSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Jvb2wodCkgPT4gQm9vbChib29sX29mX3N0cmluZyh0KSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2Zsb2F0KHQpID0+IEZsb2F0KGZsb2F0X29mX3N0cmluZyh0KSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2ludCh0KSA9PiBJbnQoaW50X29mX3N0cmluZyh0KSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgICAgICAgIGxldCBzID0gUmUuU3RyLnN0cmluZ19hZnRlcih0LCAxKTtcbiAgICAgICAgICBsZXQgcyA9IFJlLlN0ci5zdHJpbmdfYmVmb3JlKHMsIFN0cmluZy5sZW5ndGgocykgLSAxKTtcbiAgICAgICAgICBTdHJpbmcocyk7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc192YXIodCkgPT4gVmFyKHQpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc193aWxkKHQpID0+IFdpbGRcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2N0cih0KSA9PiBDb25zdHJ1Y3Rvcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIEludmFsaWQodClcbiAgICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtQYXQoYm9keSldKSA9PiBQYXJlbnMoYm9keSlcbiAgICAgICAgfCAoW1wiW1wiLCBcIl1cIl0sIFtQYXQoYm9keSldKSA9PlxuICAgICAgICAgIHN3aXRjaCAoYm9keSkge1xuICAgICAgICAgIHwge3Rlcm06IFR1cGxlKHBzKSwgX30gPT4gTGlzdExpdChwcylcbiAgICAgICAgICB8IHRlcm0gPT4gTGlzdExpdChbdGVybV0pXG4gICAgICAgICAgfVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KFBhdChsKSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtQYXQoYXJnKV0pID0+IEFwKGwsIGFyZylcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKF8pIGFzIHRtID0+IHJldChob2xlKHRtKSlcbiAgfCBCaW4oUGF0KHApLCB0aWxlcywgVHlwKHR5KSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIChbXCI6XCJdLCBbXSkpXSwgW10pID0+XG4gICAgICByZXQoQ2FzdChwLCB0eSwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoKSlcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oUGF0KGwpLCB0aWxlcywgUGF0KHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAoaXNfdHVwbGVfcGF0KHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+IHJldChUdXBsZShbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIChbXCI6OlwiXSwgW10pKV0sIFtdKSA9PiByZXQoQ29ucyhsLCByKSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5hbmQgdHlwID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgKHRlcm0sIGlubmVyX2lkcykgPSB0eXBfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpIEAgaW5uZXJfaWRzO1xuICByZXR1cm4odHkgPT4gVHlwKHR5KSwgaWRzLCB7aWRzLCB0ZXJtLCBjb3BpZWQ6IGZhbHNlfSk7XG59XG5hbmQgdHlwX3Rlcm06IHVuc29ydGVkID0+IChVVHlwLnRlcm0sIGxpc3QoSWQudCkpID0ge1xuICBsZXQgcmV0ID0gKHRlcm06IFVUeXAudGVybSkgPT4gKHRlcm0sIFtdKTtcbiAgbGV0IGhvbGUgPSB1bnNvcnRlZCA9PiBVVHlwLmhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBmdW5cbiAgfCBPcCh0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHRpbGUpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodGlsZSkge1xuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfdHVwbGUodCkgPT4gUHJvZChbXSlcbiAgICAgICAgfCAoW1wiQm9vbFwiXSwgW10pID0+IEJvb2xcbiAgICAgICAgfCAoW1wiSW50XCJdLCBbXSkgPT4gSW50XG4gICAgICAgIHwgKFtcIkZsb2F0XCJdLCBbXSkgPT4gRmxvYXRcbiAgICAgICAgfCAoW1wiU3RyaW5nXCJdLCBbXSkgPT4gU3RyaW5nXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc190eXBfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1R5cChib2R5KV0pID0+IFBhcmVucyhib2R5KVxuICAgICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW1R5cChib2R5KV0pID0+IExpc3QoYm9keSlcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgICBVbmtub3duKEhvbGUoSW52YWxpZCh0KSkpXG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFBvc3QoVHlwKHQpLCB0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfLCAoW1wiKFwiLCBcIilcIl0sIFtUeXAodHlwKV0pKV0sIFtdKSA9PiByZXQoQXAodCwgdHlwKSlcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgLyogZm9yYWxsIGFuZCByZWMgaGF2ZSB0byBiZSBiZWZvcmUgc3VtIHNvIHRoYXQgdGhleSBiaW5kIHRpZ2h0ZXIuXG4gICAqIFRodXMgYHJlYyBBIC0+IExlZnQoQSkgKyBSaWdodChCKWAgZ2V0IHBhcnNlZCBhcyBgcmVjIEEgLT4gKExlZnQoQSkgKyBSaWdodChCKSlgXG4gICAqIElmIHRoaXMgaXMgYmVsb3cgdGhlIGNhc2UgZm9yIHN1bSwgdGhlbiBpdCBnZXRzIHBhcnNlZCBhcyBhbiBpbnZhbGlkIGZvcm0uICovXG4gIHwgUHJlKChbKF9pZCwgKFtcImZvcmFsbFwiLCBcIi0+XCJdLCBbVFBhdCh0cGF0KV0pKV0sIFtdKSwgVHlwKHQpKSA9PlxuICAgIHJldChGb3JhbGwodHBhdCwgdCkpXG4gIHwgUHJlKChbKF9pZCwgKFtcInJlY1wiLCBcIi0+XCJdLCBbVFBhdCh0cGF0KV0pKV0sIFtdKSwgVHlwKHQpKSA9PlxuICAgIHJldChSZWModHBhdCwgdCkpXG4gIHwgUHJlKHRpbGVzLCBUeXAoe3Rlcm06IFN1bSh0MCksIGlkcywgX30pKSBhcyB0bSA9PlxuICAgIC8qIENhc2UgZm9yIGxlYWRpbmcgcHJlZml4ICsgcHJlY2VlZGluZyBhIHN1bSAqL1xuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF8sIChbXCIrXCJdLCBbXSkpXSwgW10pID0+IChTdW0odDApLCBpZHMpXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKHRpbGVzLCBUeXAodCkpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIitcIl0sIFtdKSldLCBbXSkgPT4gcmV0KFN1bShbcGFyc2Vfc3VtX3Rlcm0odCldKSlcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oVHlwKHQxKSwgdGlsZXMsIFR5cCh0MikpIGFzIHRtIHdoZW4gaXNfdHlwX2JzdW0odGlsZXMpICE9IE5vbmUgPT5cbiAgICBzd2l0Y2ggKGlzX3R5cF9ic3VtKHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+XG4gICAgICByZXQoU3VtKExpc3QubWFwKHBhcnNlX3N1bV90ZXJtLCBbdDFdIEAgYmV0d2Vlbl9raWRzIEAgW3QyXSkpKVxuICAgIHwgTm9uZSA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihUeXAobCksIHRpbGVzLCBUeXAocikpIGFzIHRtID0+XG4gICAgc3dpdGNoIChpc190dXBsZV90eXAodGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT4gcmV0KFByb2QoW2xdIEAgYmV0d2Vlbl9raWRzIEAgW3JdKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICAgIHwgKFsoX2lkLCAoW1wiLT5cIl0sIFtdKSldLCBbXSkgPT4gcmV0KEFycm93KGwsIHIpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cbmFuZCB0cGF0ID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgdGVybSA9IHRwYXRfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpO1xuICByZXR1cm4odHkgPT4gVFBhdCh0eSksIGlkcywge2lkcywgdGVybSwgY29waWVkOiBmYWxzZX0pO1xufVxuYW5kIHRwYXRfdGVybTogdW5zb3J0ZWQgPT4gVFBhdC50ZXJtID0ge1xuICBsZXQgcmV0ID0gKHRlcm06IFRQYXQudGVybSkgPT4gdGVybTtcbiAgbGV0IGhvbGUgPSB1bnNvcnRlZCA9PiBUUGF0LmhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBmdW5cbiAgfCBPcCh0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHRpbGUpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodGlsZSkge1xuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdHlwX3Zhcih0KSA9PiBWYXIodClcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiB0ICE9IFwiIFwiICYmICFGb3JtLmlzX2V4cGxpY2l0X2hvbGUodCkgPT5cbiAgICAgICAgICBJbnZhbGlkKHQpXG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IChQcmUoXykgfCBQb3N0KF8pKSBhcyB0bSA9PiByZXQoaG9sZSh0bSkpXG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cblxuLy8gYW5kIHJ1bCA9IHVuc29ydGVkID0+IHtcbi8vICAgbGV0IHRlcm0gPSBydWxfdGVybSh1bnNvcnRlZCk7XG4vLyAgIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpO1xuLy8gICByZXR1cm4ociA9PiBSdWwociksIGlkcywge2lkcywgdGVybX0pO1xuLy8gfVxuYW5kIHJ1bCA9ICh1bnNvcnRlZDogdW5zb3J0ZWQpOiBSdWwudCA9PiB7XG4gIGxldCBob2xlID0gUnVsLkhvbGUoa2lkc19vZl91bnNvcnRlZCh1bnNvcnRlZCkpO1xuICBzd2l0Y2ggKGV4cCh1bnNvcnRlZCkpIHtcbiAgfCB7dGVybTogTXVsdGlIb2xlKF8pLCBffSA9PlxuICAgIHN3aXRjaCAodW5zb3J0ZWQpIHtcbiAgICB8IEJpbihFeHAoc2NydXQpLCB0aWxlcywgRXhwKGxhc3RfY2xhdXNlKSkgPT5cbiAgICAgIHN3aXRjaCAoaXNfcnVsZXModGlsZXMpKSB7XG4gICAgICB8IFNvbWUoKHBzLCBsZWFkaW5nX2NsYXVzZXMpKSA9PiB7XG4gICAgICAgICAgaWRzOiBpZHModW5zb3J0ZWQpLFxuICAgICAgICAgIHRlcm06XG4gICAgICAgICAgICBSdWxlcyhzY3J1dCwgTGlzdC5jb21iaW5lKHBzLCBsZWFkaW5nX2NsYXVzZXMgQCBbbGFzdF9jbGF1c2VdKSksXG4gICAgICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfCBOb25lID0+IHtpZHM6IGlkcyh1bnNvcnRlZCksIHRlcm06IGhvbGUsIGNvcGllZDogZmFsc2V9XG4gICAgICB9XG4gICAgfCBfID0+IHtpZHM6IGlkcyh1bnNvcnRlZCksIHRlcm06IGhvbGUsIGNvcGllZDogZmFsc2V9XG4gICAgfVxuICB8IGUgPT4ge2lkczogW10sIHRlcm06IFJ1bGVzKGUsIFtdKSwgY29waWVkOiBmYWxzZX1cbiAgfTtcbn1cblxuYW5kIHVuc29ydGVkID0gKHNrZWw6IFNrZWwudCwgc2VnOiBTZWdtZW50LnQpOiB1bnNvcnRlZCA9PiB7XG4gIGxldCB0aWxlX2tpZHMgPSAocDogUGllY2UudCk6IGxpc3QodCkgPT5cbiAgICBzd2l0Y2ggKHApIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW11cbiAgICB8IFRpbGUoe21vbGQsIHNoYXJkcywgY2hpbGRyZW4sIF99KSA9PlxuICAgICAgQWJhLmFiYV90cmlwbGVzKEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKSlcbiAgICAgIHw+IExpc3QubWFwKCgobCwga2lkLCByKSkgPT4ge1xuICAgICAgICAgICBsZXQgcyA9IGwgKyAxID09IHIgPyBMaXN0Lm50aChtb2xkLmluXywgbCkgOiBTb3J0LkFueTtcbiAgICAgICAgICAgZ29fcyhzLCBTZWdtZW50LnNrZWwoa2lkKSwga2lkKTtcbiAgICAgICAgIH0pXG4gICAgfTtcblxuICBsZXQgcm9vdDogQWJhLnQoUGllY2UudCwgU2tlbC50KSA9XG4gICAgU2tlbC5yb290KHNrZWwpIHw+IEFiYS5tYXBfYShMaXN0Lm50aChzZWcpKTtcblxuICAvLyBtYWludGFpbmluZyB0aGlzIGFsdGVybmF0aW5nIG9yZGVyZWQgc3RydWN0dXJlXG4gIC8vIGZvciBoYW5kbGluZyBpbmNvbXBsZXRlIGZvcm1zIGxhdGVyXG4gIGxldCB0aWxlcyA9XG4gICAgcm9vdFxuICAgIHw+IEFiYS5tYXBfYWJhcygoKHBfbCwga2lkLCBwX3IpKSA9PiB7XG4gICAgICAgICBsZXQgKF8sIHNfbCkgPSBQaWVjZS5uaWJfc29ydHMocF9sKTtcbiAgICAgICAgIGxldCAoc19yLCBfKSA9IFBpZWNlLm5pYl9zb3J0cyhwX3IpO1xuICAgICAgICAgbGV0IHMgPSBzX2wgPT0gc19yID8gc19sIDogU29ydC5Bbnk7XG4gICAgICAgICBnb19zKHMsIGtpZCwgc2VnKTtcbiAgICAgICB9KVxuICAgIHw+IEFiYS5tYXBfYShwXG4gICAgICAgICAvLyBUT0RPIHRocm93IHByb3BlciBleGNlcHRpb25cbiAgICAgICAgID0+IChQaWVjZS5pZChwKSwgQWJhLm1rKHRva2VucyhwKSwgdGlsZV9raWRzKHApKSkpO1xuXG4gIGxldCAobF9zb3J0LCByX3NvcnQpID0ge1xuICAgIGxldCBwX2wgPSBBYmEuZmlyc3RfYShyb290KTtcbiAgICBsZXQgcF9yID0gQWJhLmxhc3RfYShyb290KTtcbiAgICAvLyBUT0RPIHRocm93IHByb3BlciBleGNlcHRpb25zXG4gICAgbGV0IChsLCBfKSA9IE9wdGlvbi5nZXQoUGllY2UubmlicyhwX2wpKTtcbiAgICBsZXQgKF8sIHIpID0gT3B0aW9uLmdldChQaWVjZS5uaWJzKHBfcikpO1xuICAgIChsLnNvcnQsIHIuc29ydCk7XG4gIH07XG5cbiAgc3dpdGNoIChza2VsKSB7XG4gIHwgT3AoXykgPT4gT3AodGlsZXMpXG4gIHwgUHJlKF8sIHIpID0+IFByZSh0aWxlcywgZ29fcyhyX3NvcnQsIHIsIHNlZykpXG4gIHwgUG9zdChsLCBfKSA9PiBQb3N0KGdvX3MobF9zb3J0LCBsLCBzZWcpLCB0aWxlcylcbiAgfCBCaW4obCwgXywgcikgPT4gQmluKGdvX3MobF9zb3J0LCBsLCBzZWcpLCB0aWxlcywgZ29fcyhyX3NvcnQsIHIsIHNlZykpXG4gIH07XG59O1xuXG5sZXQgZ28gPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLFxuICAgIHNlZyA9PiB7XG4gICAgICBtYXAgOj0gVGVybU1hcC5lbXB0eTtcbiAgICAgIGxldCBlID0gZXhwKHVuc29ydGVkKFNlZ21lbnQuc2tlbChzZWcpLCBzZWcpKTtcbiAgICAgIChlLCBtYXBeKTtcbiAgICB9LFxuICApO1xuXG5sZXQgZnJvbV96aXAgPSAofmR1bXBfYmFja3BhY2s6IGJvb2wsIH5lcmFzZV9idWZmZXI6IGJvb2wsIHo6IFppcHBlci50KSA9PiB7XG4gIGxldCBzZWcgPSBaaXBwZXIuc21hcnRfc2VnKH5kdW1wX2JhY2twYWNrLCB+ZXJhc2VfYnVmZmVyLCB6KTtcbiAgZ28oc2VnKTtcbn07XG5cbmxldCBmcm9tX3ppcF9mb3JfdmlldyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsXG4gICAgZnJvbV96aXAofmR1bXBfYmFja3BhY2s9ZmFsc2UsIH5lcmFzZV9idWZmZXI9dHJ1ZSksXG4gICk7XG5cbmxldCBmcm9tX3ppcF9mb3Jfc2VtID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMCxcbiAgICBmcm9tX3ppcCh+ZHVtcF9iYWNrcGFjaz10cnVlLCB+ZXJhc2VfYnVmZmVyPXRydWUpLFxuICApO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxubW9kdWxlIE1ldGEgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBjb2xfdGFyZ2V0OiBpbnQsXG4gICAgdG91Y2hlZDogVG91Y2hlZC50LFxuICAgIG1lYXN1cmVkOiBNZWFzdXJlZC50LFxuICAgIHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQsXG4gICAgdW5zZWxlY3RlZDogU2VnbWVudC50LFxuICAgIHNlZ21lbnQ6IFNlZ21lbnQudCxcbiAgICB2aWV3X3Rlcm06IFVFeHAudCxcbiAgICB0ZXJtczogVGVybU1hcC50LFxuICAgIHRpbGVzOiBUaWxlTWFwLnQsXG4gICAgaG9sZXM6IGxpc3QoR3JvdXQudCksXG4gICAgYnVmZmVyX2lkczogbGlzdChJZC50KSxcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh6OiBaaXBwZXIudCkgPT4ge1xuICAgIGxldCB1bnNlbGVjdGVkID0gWmlwcGVyLnVuc2VsZWN0X2FuZF96aXAoeik7XG4gICAgbGV0ICh2aWV3X3Rlcm0sIHRlcm1zKSA9IE1ha2VUZXJtLmdvKHVuc2VsZWN0ZWQpO1xuICAgIHtcbiAgICAgIGNvbF90YXJnZXQ6IDAsXG4gICAgICB0b3VjaGVkOiBUb3VjaGVkLmVtcHR5LFxuICAgICAgbWVhc3VyZWQ6IE1lYXN1cmVkLm9mX3NlZ21lbnQodW5zZWxlY3RlZCksXG4gICAgICB1bnNlbGVjdGVkLFxuICAgICAgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMubWsodW5zZWxlY3RlZCksXG4gICAgICBzZWdtZW50OiBaaXBwZXIuemlwKHopLFxuICAgICAgdGlsZXM6IFRpbGVNYXAubWsodW5zZWxlY3RlZCksXG4gICAgICB2aWV3X3Rlcm0sXG4gICAgICB0ZXJtcyxcbiAgICAgIGhvbGVzOiBTZWdtZW50LmhvbGVzKHVuc2VsZWN0ZWQpLFxuICAgICAgYnVmZmVyX2lkczogU2VsZWN0aW9uLmJ1ZmZlcl9pZHMoei5zZWxlY3Rpb24pLFxuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHtcbiAgICBsZXQgdG91Y2hlZDogVG91Y2hlZC50O1xuICAgIGxldCBtZWFzdXJlZDogTWVhc3VyZWQudDtcbiAgICBsZXQgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudDtcbiAgICBsZXQgY29sX3RhcmdldDogaW50O1xuICB9O1xuICBsZXQgbW9kdWxlX29mX3QgPSAobTogdCk6IChtb2R1bGUgUykgPT5cbiAgICAobW9kdWxlXG4gICAgIHtcbiAgICAgICBsZXQgdG91Y2hlZCA9IG0udG91Y2hlZDtcbiAgICAgICBsZXQgbWVhc3VyZWQgPSBtLm1lYXN1cmVkO1xuICAgICAgIGxldCB0ZXJtX3JhbmdlcyA9IG0udGVybV9yYW5nZXM7XG4gICAgICAgbGV0IGNvbF90YXJnZXQgPSBtLmNvbF90YXJnZXQ7XG4gICAgIH0pO1xuXG4gIC8vIHNob3VsZCBub3QgYmUgc2VyaWFsaXppbmdcbiAgbGV0IHNleHBfb2ZfdCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS5zZXhwX29mX3RcIik7XG4gIGxldCB0X29mX3NleHAgPSBfID0+IGZhaWx3aXRoKFwiRWRpdG9yLk1ldGEudF9vZl9zZXhwXCIpO1xuICBsZXQgeW9qc29uX29mX3QgPSBfID0+IGZhaWx3aXRoKFwiRWRpdG9yLk1ldGEueW9qc29uX29mX3RcIik7XG4gIGxldCB0X29mX3lvanNvbiA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS50X29mX3lvanNvblwiKTtcblxuICBsZXQgbmV4dCA9XG4gICAgICAofmVmZmVjdHM6IGxpc3QoRWZmZWN0LnQpPVtdLCBhOiBBY3Rpb24udCwgejogWmlwcGVyLnQsIG1ldGE6IHQpOiB0ID0+IHtcbiAgICBsZXQge3RvdWNoZWQsIG1lYXN1cmVkLCBjb2xfdGFyZ2V0LCBffSA9IG1ldGE7XG4gICAgbGV0IHRvdWNoZWQgPSBUb3VjaGVkLnVwZGF0ZShUaW1lLnRpY2soKSwgZWZmZWN0cywgdG91Y2hlZCk7XG4gICAgbGV0IGlzX2VkaXQgPSBBY3Rpb24uaXNfZWRpdChhKTtcbiAgICBsZXQgdW5zZWxlY3RlZCA9IGlzX2VkaXQgPyBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCh6KSA6IG1ldGEudW5zZWxlY3RlZDtcbiAgICBsZXQgbWVhc3VyZWQgPVxuICAgICAgaXNfZWRpdFxuICAgICAgICA/IE1lYXN1cmVkLm9mX3NlZ21lbnQofnRvdWNoZWQsIH5vbGQ9bWVhc3VyZWQsIHVuc2VsZWN0ZWQpIDogbWVhc3VyZWQ7XG4gICAgbGV0IGNvbF90YXJnZXQgPVxuICAgICAgc3dpdGNoIChhKSB7XG4gICAgICB8IE1vdmUoTG9jYWwoVXAgfCBEb3duKSlcbiAgICAgIHwgU2VsZWN0KFJlc2l6ZShMb2NhbChVcCB8IERvd24pKSkgPT4gY29sX3RhcmdldFxuICAgICAgfCBfID0+IFppcHBlci5jYXJldF9wb2ludChtZWFzdXJlZCwgeikuY29sXG4gICAgICB9O1xuICAgIGxldCAodmlld190ZXJtLCB0ZXJtcykgPVxuICAgICAgaXNfZWRpdCA/IE1ha2VUZXJtLmdvKHVuc2VsZWN0ZWQpIDogKG1ldGEudmlld190ZXJtLCBtZXRhLnRlcm1zKTtcbiAgICB7XG4gICAgICBjb2xfdGFyZ2V0LFxuICAgICAgdG91Y2hlZCxcbiAgICAgIG1lYXN1cmVkLFxuICAgICAgdW5zZWxlY3RlZCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBpc19lZGl0ID8gVGVybVJhbmdlcy5tayh1bnNlbGVjdGVkKSA6IG1ldGEudGVybV9yYW5nZXMsXG4gICAgICBzZWdtZW50OiBaaXBwZXIuemlwKHopLFxuICAgICAgdGlsZXM6IGlzX2VkaXQgPyBUaWxlTWFwLm1rKHVuc2VsZWN0ZWQpIDogbWV0YS50aWxlcyxcbiAgICAgIHZpZXdfdGVybSxcbiAgICAgIHRlcm1zLFxuICAgICAgaG9sZXM6IGlzX2VkaXQgPyBTZWdtZW50LmhvbGVzKHVuc2VsZWN0ZWQpIDogbWV0YS5ob2xlcyxcbiAgICAgIGJ1ZmZlcl9pZHM6IFNlbGVjdGlvbi5idWZmZXJfaWRzKHouc2VsZWN0aW9uKSxcbiAgICB9O1xuICB9O1xufTtcblxubW9kdWxlIFN0YXRlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICB6aXBwZXI6IFppcHBlci50LFxuICAgIFtAb3BhcXVlXVxuICAgIG1ldGE6IE1ldGEudCxcbiAgfTtcblxuICBsZXQgaW5pdCA9IHppcHBlciA9PiB7emlwcGVyLCBtZXRhOiBNZXRhLmluaXQoemlwcGVyKX07XG5cbiAgbGV0IG5leHQgPSAofmVmZmVjdHM6IGxpc3QoRWZmZWN0LnQpPVtdLCBhOiBBY3Rpb24udCwgejogWmlwcGVyLnQsIHN0YXRlKSA9PiB7XG4gICAgemlwcGVyOiB6LFxuICAgIG1ldGE6IE1ldGEubmV4dCh+ZWZmZWN0cywgYSwgeiwgc3RhdGUubWV0YSksXG4gIH07XG59O1xuXG5tb2R1bGUgSGlzdG9yeSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGFmZml4ID0gbGlzdCgoQWN0aW9uLnQsIFN0YXRlLnQpKTtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSAoYWZmaXgsIGFmZml4KTtcblxuICBsZXQgZW1wdHkgPSAoW10sIFtdKTtcblxuICBsZXQgYWRkID0gKGE6IEFjdGlvbi50LCBzdGF0ZTogU3RhdGUudCwgKHByZSwgXyk6IHQpOiB0ID0+IChcbiAgICBbKGEsIHN0YXRlKSwgLi4ucHJlXSxcbiAgICBbXSxcbiAgKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdGU6IFN0YXRlLnQsXG4gIGhpc3Rvcnk6IEhpc3RvcnkudCxcbiAgcmVhZF9vbmx5OiBib29sLFxufTtcblxubGV0IGluaXQgPSAofnJlYWRfb25seT1mYWxzZSwgeikgPT4ge1xuICBzdGF0ZTogU3RhdGUuaW5pdCh6KSxcbiAgaGlzdG9yeTogSGlzdG9yeS5lbXB0eSxcbiAgcmVhZF9vbmx5LFxufTtcbmxldCBlbXB0eSA9IGlkID0+IGluaXQofnJlYWRfb25seT1mYWxzZSwgWmlwcGVyLmluaXQoaWQpKTtcblxubGV0IHVwZGF0ZV96ID0gKGY6IFppcHBlci50ID0+IFppcHBlci50LCBlZDogdCkgPT4ge1xuICAuLi5lZCxcbiAgc3RhdGU6IHtcbiAgICAuLi5lZC5zdGF0ZSxcbiAgICB6aXBwZXI6IGYoZWQuc3RhdGUuemlwcGVyKSxcbiAgfSxcbn07XG5sZXQgcHV0X3ogPSAoejogWmlwcGVyLnQpID0+IHVwZGF0ZV96KF8gPT4geik7XG5cbmxldCB1cGRhdGVfel9vcHQgPSAoZjogWmlwcGVyLnQgPT4gb3B0aW9uKFppcHBlci50KSwgZWQ6IHQpID0+IHtcbiAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgbGV0KyB6ID0gZihlZC5zdGF0ZS56aXBwZXIpO1xuICBwdXRfeih6LCBlZCk7XG59O1xuXG5sZXQgbmV3X3N0YXRlID1cbiAgICAofmVmZmVjdHM6IGxpc3QoRWZmZWN0LnQpPVtdLCBhOiBBY3Rpb24udCwgejogWmlwcGVyLnQsIGVkOiB0KTogdCA9PiB7XG4gIGxldCBzdGF0ZSA9IFN0YXRlLm5leHQofmVmZmVjdHMsIGEsIHosIGVkLnN0YXRlKTtcbiAgbGV0IGhpc3RvcnkgPSBIaXN0b3J5LmFkZChhLCBlZC5zdGF0ZSwgZWQuaGlzdG9yeSk7XG4gIHtzdGF0ZSwgaGlzdG9yeSwgcmVhZF9vbmx5OiBlZC5yZWFkX29ubHl9O1xufTtcblxubGV0IGNhcmV0X3BvaW50ID0gKGVkOiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIGxldCBTdGF0ZS57emlwcGVyLCBtZXRhfSA9IGVkLnN0YXRlO1xuICBaaXBwZXIuY2FyZXRfcG9pbnQobWV0YS5tZWFzdXJlZCwgemlwcGVyKTtcbn07XG5cbmxldCB1bmRvID0gKGVkOiB0KSA9PlxuICBzd2l0Y2ggKGVkLmhpc3RvcnkpIHtcbiAgfCAoW10sIF8pID0+IE5vbmVcbiAgfCAoWyhhLCBwcmV2KSwgLi4uYmVmb3JlXSwgYWZ0ZXIpID0+XG4gICAgU29tZSh7XG4gICAgICBzdGF0ZTogcHJldixcbiAgICAgIGhpc3Rvcnk6IChiZWZvcmUsIFsoYSwgZWQuc3RhdGUpLCAuLi5hZnRlcl0pLFxuICAgICAgcmVhZF9vbmx5OiBlZC5yZWFkX29ubHksXG4gICAgfSlcbiAgfTtcbmxldCByZWRvID0gKGVkOiB0KSA9PlxuICBzd2l0Y2ggKGVkLmhpc3RvcnkpIHtcbiAgfCAoXywgW10pID0+IE5vbmVcbiAgfCAoYmVmb3JlLCBbKGEsIG5leHQpLCAuLi5hZnRlcl0pID0+XG4gICAgU29tZSh7XG4gICAgICBzdGF0ZTogbmV4dCxcbiAgICAgIGhpc3Rvcnk6IChbKGEsIGVkLnN0YXRlKSwgLi4uYmVmb3JlXSwgYWZ0ZXIpLFxuICAgICAgcmVhZF9vbmx5OiBlZC5yZWFkX29ubHksXG4gICAgfSlcbiAgfTtcblxubGV0IGNhbl91bmRvID0gZWQgPT4gT3B0aW9uLmlzX3NvbWUodW5kbyhlZCkpO1xubGV0IGNhbl9yZWRvID0gZWQgPT4gT3B0aW9uLmlzX3NvbWUocmVkbyhlZCkpO1xuXG5sZXQgc2V0X3JlYWRfb25seSA9IChlZCwgcmVhZF9vbmx5KSA9PiB7Li4uZWQsIHJlYWRfb25seX07XG5cbmxldCB0cmFpbGluZ19ob2xlX2N0eCA9IChlZDogdCwgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQpID0+IHtcbiAgbGV0IHNlZ21lbnQgPSBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcChlZC5zdGF0ZS56aXBwZXIpO1xuICBsZXQgY29udmV4X2dyb3V0ID0gU2VnbWVudC5jb252ZXhfZ3JvdXQoc2VnbWVudCk7XG4gIC8vIHByaW50X2VuZGxpbmUoU3RyaW5nLmNvbmNhdChcIjsgXCIsIExpc3QubWFwKEdyb3V0LnNob3csIGNvbnZleF9ncm91dCkpKTtcbiAgbGV0IGxhc3QgPSBVdGlsLkxpc3RVdGlsLmxhc3Rfb3B0KGNvbnZleF9ncm91dCk7XG4gIHN3aXRjaCAobGFzdCkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoZ3JvdXQpID0+XG4gICAgbGV0IGlkID0gZ3JvdXQuaWQ7XG4gICAgbGV0IGluZm8gPSBJZC5NYXAuZmluZF9vcHQoaWQsIGluZm9fbWFwKTtcbiAgICBzd2l0Y2ggKGluZm8pIHtcbiAgICB8IFNvbWUoaW5mbykgPT4gU29tZShJbmZvLmN0eF9vZihpbmZvKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIH07XG59O1xuIiwiLypcbiBBIG5pY2UgcHJvcGVydHkgd291bGQgYmUgdGhhdCBlbGFib3JhdGlvbiBpcyBpZGVtcG90ZW50Li4uXG4gKi9cblxub3BlbiBVdGlsO1xuXG5leGNlcHRpb24gTWlzc2luZ1R5cGVJbmZvO1xuXG5tb2R1bGUgRWxhYm9yYXRpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge2Q6IERIRXhwLnR9O1xufTtcblxubW9kdWxlIEVsYWJvcmF0aW9uUmVzdWx0ID0ge1xuICBbQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCA9XG4gICAgfCBFbGFib3JhdGVzKERIRXhwLnQsIFR5cC50LCBEZWx0YS50KVxuICAgIHwgRG9lc05vdEVsYWJvcmF0ZTtcbn07XG5cbmxldCBmcmVzaF9jYXN0ID0gKGQ6IERIRXhwLnQsIHQxOiBUeXAudCwgdDI6IFR5cC50KTogREhFeHAudCA9PiB7XG4gIFR5cC5lcSh0MSwgdDIpXG4gICAgPyBkXG4gICAgOiB7XG4gICAgICBsZXQgZCcgPVxuICAgICAgICBESEV4cC5DYXN0KGQsIHQxLCBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXG4gICAgICAgIHw+IERIRXhwLmZyZXNoXG4gICAgICAgIHw+IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGU7XG4gICAgICBESEV4cC5DYXN0KGQnLCBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSksIHQyKVxuICAgICAgfD4gREhFeHAuZnJlc2hcbiAgICAgIHw+IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGU7XG4gICAgfTtcbn07XG5cbmxldCBmcmVzaF9wYXRfY2FzdCA9IChwOiBESFBhdC50LCB0MTogVHlwLnQsIHQyOiBUeXAudCk6IERIUGF0LnQgPT4ge1xuICBUeXAuZXEodDEsIHQyKVxuICAgID8gcFxuICAgIDoge1xuICAgICAgbGV0IF8gPSBwcmludF9lbmRsaW5lKFwiPT09PT12dnZ2dj09PVwiKTtcbiAgICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShUeXAuc2hvdyh0MSkpO1xuICAgICAgbGV0IF8gPSBwcmludF9lbmRsaW5lKFR5cC5zaG93KHQyKSk7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoXCI9PT09PV5eXl5ePT09XCIpO1xuICAgICAgQ2FzdChcbiAgICAgICAgREhQYXQuZnJlc2goQ2FzdChwLCB0MSwgVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKSlcbiAgICAgICAgfD4gQ2FzdHMucGF0dGVybl9maXh1cCxcbiAgICAgICAgVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpLFxuICAgICAgICB0MixcbiAgICAgIClcbiAgICAgIHw+IERIUGF0LmZyZXNoXG4gICAgICB8PiBDYXN0cy5wYXR0ZXJuX2ZpeHVwO1xuICAgIH07XG59O1xuXG5sZXQgZWxhYm9yYXRlZF90eXBlID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IChUeXAudCwgQ3R4LnQpID0+IHtcbiAgbGV0IChtb2RlLCBzZWxmX3R5LCBjdHgpID1cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChFeHAucmVwX2lkKHVleHApLCBtKSkge1xuICAgIHwgU29tZShJbmZvLkluZm9FeHAoe21vZGUsIHR5LCBjdHgsIF99KSkgPT4gKG1vZGUsIHR5LCBjdHgpXG4gICAgfCBfID0+IHJhaXNlKE1pc3NpbmdUeXBlSW5mbylcbiAgICB9O1xuICBsZXQgZWxhYl90eSA9XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgfCBTeW4gPT4gc2VsZl90eVxuICAgIHwgU3luRnVuID0+XG4gICAgICBsZXQgKHR5MSwgdHkyKSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgc2VsZl90eSk7XG4gICAgICBUeXAuQXJyb3codHkxLCB0eTIpIHw+IFR5cC5ta19mYXN0O1xuICAgIHwgU3luVHlwRnVuID0+XG4gICAgICBsZXQgKHRwYXQsIHR5KSA9IFR5cC5tYXRjaGVkX2ZvcmFsbChjdHgsIHNlbGZfdHkpO1xuICAgICAgbGV0IHRwYXQgPSBPcHRpb24udmFsdWUodHBhdCwgfmRlZmF1bHQ9VFBhdC5mcmVzaChFbXB0eUhvbGUpKTtcbiAgICAgIFR5cC5Gb3JhbGwodHBhdCwgdHkpIHw+IFR5cC5ta19mYXN0O1xuICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBzeW5zd2l0Y2hlcyBmcm9tIHRoaXMgdHlwZS5cbiAgICB8IEFuYShhbmFfdHkpID0+IFR5cC5tYXRjaF9zeW5zd2l0Y2goYW5hX3R5LCBzZWxmX3R5KVxuICAgIH07XG4gIChlbGFiX3R5IHw+IFR5cC5ub3JtYWxpemUoY3R4KSwgY3R4KTtcbn07XG5cbmxldCBlbGFib3JhdGVkX3BhdF90eXBlID0gKG06IFN0YXRpY3MuTWFwLnQsIHVwYXQ6IFVQYXQudCk6IChUeXAudCwgQ3R4LnQpID0+IHtcbiAgbGV0IChtb2RlLCBzZWxmX3R5LCBjdHgsIHByZXZfc3luc3dpdGNoKSA9XG4gICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoVVBhdC5yZXBfaWQodXBhdCksIG0pKSB7XG4gICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZSwgdHksIGN0eCwgcHJldl9zeW5zd2l0Y2gsIF99KSkgPT4gKFxuICAgICAgICBtb2RlLFxuICAgICAgICB0eSxcbiAgICAgICAgY3R4LFxuICAgICAgICBwcmV2X3N5bnN3aXRjaCxcbiAgICAgIClcbiAgICB8IF8gPT4gcmFpc2UoTWlzc2luZ1R5cGVJbmZvKVxuICAgIH07XG4gIGxldCBlbGFiX3R5ID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IFN5biA9PiBzZWxmX3R5XG4gICAgfCBTeW5GdW4gPT5cbiAgICAgIGxldCAodHkxLCB0eTIpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBzZWxmX3R5KTtcbiAgICAgIFR5cC5BcnJvdyh0eTEsIHR5MikgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgfCBTeW5UeXBGdW4gPT5cbiAgICAgIGxldCAodHBhdCwgdHkpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgc2VsZl90eSk7XG4gICAgICBsZXQgdHBhdCA9IE9wdGlvbi52YWx1ZSh0cGF0LCB+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpO1xuICAgICAgVHlwLkZvcmFsbCh0cGF0LCB0eSkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgfCBBbmEoYW5hX3R5KSA9PlxuICAgICAgc3dpdGNoIChwcmV2X3N5bnN3aXRjaCkge1xuICAgICAgfCBOb25lID0+IGFuYV90eVxuICAgICAgfCBTb21lKHN5bl90eSkgPT4gVHlwLm1hdGNoX3N5bnN3aXRjaChzeW5fdHksIGFuYV90eSlcbiAgICAgIH1cbiAgICB9O1xuICAoZWxhYl90eSB8PiBUeXAubm9ybWFsaXplKGN0eCksIGN0eCk7XG59O1xuXG5sZXQgcmVjIGVsYWJvcmF0ZV9wYXR0ZXJuID1cbiAgICAgICAgKG06IFN0YXRpY3MuTWFwLnQsIHVwYXQ6IFVQYXQudCk6IChESFBhdC50LCBUeXAudCkgPT4ge1xuICBsZXQgKGVsYWJvcmF0ZWRfdHlwZSwgY3R4KSA9IGVsYWJvcmF0ZWRfcGF0X3R5cGUobSwgdXBhdCk7XG4gIGxldCBjYXN0X2Zyb20gPSAodHksIGV4cCkgPT4gZnJlc2hfcGF0X2Nhc3QoZXhwLCB0eSwgZWxhYm9yYXRlZF90eXBlKTtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gVVBhdC51bndyYXAodXBhdCk7XG4gIGxldCBkcGF0ID1cbiAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICB8IEludChfKSA9PiB1cGF0IHw+IGNhc3RfZnJvbShJbnQgfD4gVHlwLm1rX2Zhc3QpXG4gICAgfCBCb29sKF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpXG4gICAgfCBGbG9hdChfKSA9PiB1cGF0IHw+IGNhc3RfZnJvbShGbG9hdCB8PiBUeXAubWtfZmFzdClcbiAgICB8IFN0cmluZyhfKSA9PiB1cGF0IHw+IGNhc3RfZnJvbShTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpXG4gICAgfCBMaXN0TGl0KHBzKSA9PlxuICAgICAgbGV0IChwcywgdHlzKSA9IExpc3QubWFwKGVsYWJvcmF0ZV9wYXR0ZXJuKG0pLCBwcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBsZXQgaW5uZXJfdHlwZSA9XG4gICAgICAgIHR5c1xuICAgICAgICB8PiBUeXAuam9pbl9hbGwofmVtcHR5PVVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgcHNcbiAgICAgIHw+IExpc3QubWFwMigocCwgdCkgPT4gZnJlc2hfcGF0X2Nhc3QocCwgdCwgaW5uZXJfdHlwZSksIF8sIHR5cylcbiAgICAgIHw+IChcbiAgICAgICAgcHMnID0+XG4gICAgICAgICAgREhQYXQuTGlzdExpdChwcycpXG4gICAgICAgICAgfD4gcmV3cmFwXG4gICAgICAgICAgfD4gY2FzdF9mcm9tKExpc3QoaW5uZXJfdHlwZSkgfD4gVHlwLm1rX2Zhc3QpXG4gICAgICApO1xuICAgIHwgQ29ucyhwMSwgcDIpID0+XG4gICAgICBsZXQgKHAxJywgdHkxKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHAxKTtcbiAgICAgIGxldCAocDInLCB0eTIpID0gZWxhYm9yYXRlX3BhdHRlcm4obSwgcDIpO1xuICAgICAgbGV0IHR5Ml9pbm5lciA9IFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eTIpO1xuICAgICAgbGV0IHR5X2lubmVyID1cbiAgICAgICAgVHlwLmpvaW4ofmZpeD1mYWxzZSwgY3R4LCB0eTEsIHR5Ml9pbm5lcilcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBsZXQgcDEnJyA9IGZyZXNoX3BhdF9jYXN0KHAxJywgdHkxLCB0eV9pbm5lcik7XG4gICAgICBsZXQgcDInJyA9IGZyZXNoX3BhdF9jYXN0KHAyJywgdHkyLCBMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBESFBhdC5Db25zKHAxJycsIHAyJycpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBUdXBsZShwcykgPT5cbiAgICAgIGxldCAocHMnLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIERIUGF0LlR1cGxlKHBzJykgfD4gcmV3cmFwIHw+IGNhc3RfZnJvbShUeXAuUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEFwKHAxLCBwMikgPT5cbiAgICAgIGxldCAocDEnLCB0eTEpID0gZWxhYm9yYXRlX3BhdHRlcm4obSwgcDEpO1xuICAgICAgbGV0IChwMicsIHR5MikgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMik7XG4gICAgICBsZXQgKHR5MWwsIHR5MXIpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCB0eTEpO1xuICAgICAgbGV0IHAxJycgPSBmcmVzaF9wYXRfY2FzdChwMScsIHR5MSwgQXJyb3codHkxbCwgdHkxcikgfD4gVHlwLm1rX2Zhc3QpO1xuICAgICAgbGV0IHAyJycgPSBmcmVzaF9wYXRfY2FzdChwMicsIHR5MiwgdHkxbCk7XG4gICAgICBESFBhdC5BcChwMScnLCBwMicnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5MXIpO1xuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXylcbiAgICB8IFdpbGQgPT4gdXBhdCB8PiBjYXN0X2Zyb20oVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKVxuICAgIHwgVmFyKHYpID0+XG4gICAgICB1cGF0XG4gICAgICB8PiBjYXN0X2Zyb20oXG4gICAgICAgICAgIEN0eC5sb29rdXBfdmFyKGN0eCwgdilcbiAgICAgICAgICAgfD4gT3B0aW9uLm1hcCgoeDogQ3R4LnZhcl9lbnRyeSkgPT4geC50eXAgfD4gVHlwLm5vcm1hbGl6ZShjdHgpKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKSxcbiAgICAgICAgIClcbiAgICAvLyBUeXBlIGFubm90YXRpb25zIHNob3VsZCBhbHJlYWR5IGFwcGVhclxuICAgIHwgUGFyZW5zKHApXG4gICAgfCBDYXN0KHAsIF8sIF8pID0+XG4gICAgICBsZXQgKHAnLCB0eSkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwKTtcbiAgICAgIHAnIHw+IGNhc3RfZnJvbSh0eSk7XG4gICAgfCBDb25zdHJ1Y3RvcihjKSA9PlxuICAgICAgdXBhdFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX2N0cihjdHgsIGMpXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwIHw+IFR5cC5ub3JtYWxpemUoY3R4KSlcbiAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKFxuICAgICAgICAgICAgICAgIH5kZWZhdWx0PVxuICAgICAgICAgICAgICAgICAgVHlwLm1rX2Zhc3QoXG4gICAgICAgICAgICAgICAgICAgIFR5cC5TdW0oW0JhZEVudHJ5KFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSldKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICApXG4gICAgfTtcbiAgKGRwYXQsIGVsYWJvcmF0ZWRfdHlwZSk7XG59O1xuXG4vKiBUaGUgcHJpbWFyeSBnb2FsIG9mIGVsYWJvcmF0aW9uIGlzIHRvIGNvbnZlcnQgZnJvbSBhIHR5cGUgc3lzdGVtXG4gICB3aGVyZSB3ZSBoYXZlIGNvbnNpc3RlbmN5LCB0byBhIHR5cGUgc3lzdGVtIHdoZXJlIHR5cGVzIGFyZSBlaXRoZXJcbiAgIGVxdWFsIG9yIHRoZXkncmUgbm90LiBBbnl0aGluZyB0aGF0IHdhcyBqdXN0IGNvbnNpc3RlbnQgbmVlZHMgdG9cbiAgIGJlY29tZSBhIGNhc3QuIFtUaGUgb25lIG90aGVyIHRoaW5nIGVsYWJvcmF0aW9uIGRvZXMgaXMgbWFrZVxuICAgcmVjdXJzaXZlIGxldCBiaW5kaW5ncyBleHBsaWNpdC5dXG5cbiAgIEF0IHRoZSB0b3Agb2YgdGhpcyBmdW5jdGlvbiB3ZSB3b3JrIG91dCB0aGUgXCJlbGFib3JhdGVkIHR5cGVcIiBvZlxuICAgb2YgdGhlIGV4cHJlc3Npb24uIFdlIGFsc28gcmV0dXJuIHRoaXMgZWxhYm9yYXRlZCB0eXBlIHNvIHdlIGNhblxuICAgdXNlIGl0IGluIHRoZSByZWN1cnNpdmUgY2FsbC4gV2hlbiBlbGFib3JhdGUgcmV0dXJucywgeW91IGNhbiB0cnVzdFxuICAgdGhhdCB0aGUgcmV0dXJuZWQgZXhwcmVzc2lvbiB3aWxsIGhhdmUgdGhlIHJldHVybmVkIHR5cGUuIFRoZXJlIGlzXG4gICBob3dldmVyLCBubyBndWFyYW50ZWUgdGhhdCB0aGUgcmV0dXJuZWQgdHlwZSBpcyBldmVuIGNvbnNpc3RlbnQgd2l0aFxuICAgdGhlIFwiZWxhYm9yYXRlZCB0eXBlXCIgYXQgdGhlIHRvcCwgc28geW91IHNob3VsZCBmcmVzaF9jYXN0IEVWRVJZV0hFUkVcbiAgIGp1c3QgaW4gY2FzZS5cblxuICAgW01hdHRdIEEgbG90IG9mIHRoZXNlIGZyZXNoX2Nhc3QgY2FsbHMgYXJlIHJlZHVuZGFudCwgaG93ZXZlciBpZiB5b3VcbiAgIHdhbnQgdG8gcmVtb3ZlIG9uZSwgSSdkIGFzayB5b3UgaW5zdGVhZCBjb21tZW50IGl0IG91dCBhbmQgbGVhdmVcbiAgIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSBpdCdzIHJlZHVuZGFudC4gICovXG5sZXQgcmVjIGVsYWJvcmF0ZSA9IChtOiBTdGF0aWNzLk1hcC50LCB1ZXhwOiBVRXhwLnQpOiAoREhFeHAudCwgVHlwLnQpID0+IHtcbiAgbGV0IChlbGFib3JhdGVkX3R5cGUsIGN0eCkgPSBlbGFib3JhdGVkX3R5cGUobSwgdWV4cCk7XG4gIGxldCBjYXN0X2Zyb20gPSAodHksIGV4cCkgPT4gZnJlc2hfY2FzdChleHAsIHR5LCBlbGFib3JhdGVkX3R5cGUpO1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBVRXhwLnVud3JhcCh1ZXhwKTtcbiAgbGV0IGRoZXhwID1cbiAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZSA9PiB1ZXhwIHw+IGNhc3RfZnJvbShUeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKVxuICAgIHwgTXVsdGlIb2xlKHN0dWZmKSA9PlxuICAgICAgQW55Lm1hcF90ZXJtKFxuICAgICAgICB+Zl9leHA9KF8sIGV4cCkgPT4ge2VsYWJvcmF0ZShtLCBleHApIHw+IGZzdH0sXG4gICAgICAgIH5mX3BhdD0oXywgcGF0KSA9PiB7ZWxhYm9yYXRlX3BhdHRlcm4obSwgcGF0KSB8PiBmc3R9LFxuICAgICAgICBfLFxuICAgICAgKVxuICAgICAgfD4gTGlzdC5tYXAoXywgc3R1ZmYpXG4gICAgICB8PiAoXG4gICAgICAgIHN0dWZmID0+XG4gICAgICAgICAgREhFeHAuTXVsdGlIb2xlKHN0dWZmKVxuICAgICAgICAgIHw+IHJld3JhcFxuICAgICAgICAgIHw+IGNhc3RfZnJvbShUeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKVxuICAgICAgKVxuICAgIHwgRHluYW1pY0Vycm9ySG9sZShlLCBlcnIpID0+XG4gICAgICBsZXQgKGUnLCBfKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIER5bmFtaWNFcnJvckhvbGUoZScsIGVycilcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgfCBDYXN0KGUsIF8sIF8pIC8vIFdlIHJlbW92ZSB0aGVzZSBjYXN0cyBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlIHJlLWluc2VydGVkIGluIHRoZSByZWN1cnNpdmUgY2FsbFxuICAgIHwgRmFpbGVkQ2FzdChlLCBfLCBfKVxuICAgIHwgUGFyZW5zKGUpID0+XG4gICAgICBsZXQgKGUnLCB0eSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBlJyB8PiBjYXN0X2Zyb20odHkpO1xuICAgIHwgRGVmZXJyYWwoXykgPT4gdWV4cFxuICAgIHwgSW50KF8pID0+IHVleHAgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEJvb2woXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEZsb2F0KF8pID0+IHVleHAgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgU3RyaW5nKF8pID0+IHVleHAgfD4gY2FzdF9mcm9tKFN0cmluZyB8PiBUeXAubWtfZmFzdClcbiAgICB8IExpc3RMaXQoZXMpID0+XG4gICAgICBsZXQgKGRzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBsZXQgaW5uZXJfdHlwZSA9XG4gICAgICAgIFR5cC5qb2luX2FsbCh+ZW1wdHk9VHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIHR5cylcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGRzJyA9IExpc3QubWFwMigoZCwgdCkgPT4gZnJlc2hfY2FzdChkLCB0LCBpbm5lcl90eXBlKSwgZHMsIHR5cyk7XG4gICAgICBFeHAuTGlzdExpdChkcycpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShMaXN0KGlubmVyX3R5cGUpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IENvbnN0cnVjdG9yKGMpID0+XG4gICAgICB1ZXhwXG4gICAgICB8PiBjYXN0X2Zyb20oXG4gICAgICAgICAgIEN0eC5sb29rdXBfY3RyKGN0eCwgYylcbiAgICAgICAgICAgfD4gT3B0aW9uLm1hcCgoeDogQ3R4LnZhcl9lbnRyeSkgPT4geC50eXAgfD4gVHlwLm5vcm1hbGl6ZShjdHgpKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgICAgICAgICBUeXAubWtfZmFzdChcbiAgICAgICAgICAgICAgICAgICAgVHlwLlN1bShbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV0pLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgIClcbiAgICB8IEZ1bihwLCBlLCBlbnYsIG4pID0+XG4gICAgICBsZXQgKHAnLCB0eXApID0gZWxhYm9yYXRlX3BhdHRlcm4obSwgcCk7XG4gICAgICBsZXQgKGUnLCB0eWUpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgRXhwLkZ1bihwJywgZScsIGVudiwgbilcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEFycm93KHR5cCwgdHllKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBUeXBGdW4odHBhdCwgZSwgbmFtZSkgPT5cbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBFeHAuVHlwRnVuKHRwYXQsIGUnLCBuYW1lKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oVHlwLkZvcmFsbCh0cGF0LCB0eWUpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR1cGxlKGVzKSA9PlxuICAgICAgbGV0IChkcywgdHlzKSA9IExpc3QubWFwKGVsYWJvcmF0ZShtKSwgZXMpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgRXhwLlR1cGxlKGRzKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKFByb2QodHlzKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBWYXIodikgPT5cbiAgICAgIHVleHBcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF92YXIoY3R4LCB2KVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKSxcbiAgICAgICAgIClcbiAgICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgICBsZXQgYWRkX25hbWU6IChvcHRpb24oc3RyaW5nKSwgREhFeHAudCkgPT4gREhFeHAudCA9IChcbiAgICAgICAgKG5hbWUsIGV4cCkgPT4ge1xuICAgICAgICAgIGxldCAodGVybSwgcmV3cmFwKSA9IERIRXhwLnVud3JhcChleHApO1xuICAgICAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgICAgIHwgRnVuKHAsIGUsIGN0eCwgXykgPT4gRnVuKHAsIGUsIGN0eCwgbmFtZSkgfD4gcmV3cmFwXG4gICAgICAgICAgfCBfID0+IGV4cFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBsZXQgKHAsIHR5MSkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwKTtcbiAgICAgIGlmICghU3RhdGljcy5pc19yZWN1cnNpdmUoY3R4LCBwLCBkZWYsIHR5MSkpIHtcbiAgICAgICAgbGV0IGRlZiA9IGFkZF9uYW1lKFBhdC5nZXRfdmFyKHApLCBkZWYpO1xuICAgICAgICBsZXQgKGRlZiwgdHkyKSA9IGVsYWJvcmF0ZShtLCBkZWYpO1xuICAgICAgICBsZXQgKGJvZHksIHR5KSA9IGVsYWJvcmF0ZShtLCBib2R5KTtcbiAgICAgICAgRXhwLkxldChwLCBmcmVzaF9jYXN0KGRlZiwgdHkyLCB0eTEpLCBib2R5KVxuICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgfD4gY2FzdF9mcm9tKHR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEFkZCBuYW1lcyB0byBtdXR1YWxseSByZWN1cnNpdmUgZnVuY3Rpb25zXG4gICAgICAgIC8vIFRPRE86IERvbid0IGFkZCBmaXhwb2ludCBpZiB0aGVyZSBhbHJlYWR5IGlzIG9uZVxuICAgICAgICBsZXQgZGVmID0gYWRkX25hbWUoT3B0aW9uLm1hcChzID0+IHMgKysgXCIrXCIsIFBhdC5nZXRfdmFyKHApKSwgZGVmKTtcbiAgICAgICAgbGV0IChkZWYsIHR5MikgPSBlbGFib3JhdGUobSwgZGVmKTtcbiAgICAgICAgbGV0IChib2R5LCB0eSkgPSBlbGFib3JhdGUobSwgYm9keSk7XG4gICAgICAgIGxldCBmaXhmID0gRml4RihwLCBmcmVzaF9jYXN0KGRlZiwgdHkyLCB0eTEpLCBOb25lKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgICAgRXhwLkxldChwLCBmaXhmLCBib2R5KSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5KTtcbiAgICAgIH07XG4gICAgfCBGaXhGKHAsIGUsIGVudikgPT5cbiAgICAgIGxldCAocCcsIHR5cCkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwKTtcbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBFeHAuRml4RihwJywgZnJlc2hfY2FzdChlJywgdHllLCB0eXApLCBlbnYpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbSh0eXApO1xuICAgIHwgVHlBbGlhcyhfLCBfLCBlKSA9PlxuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIGUnIHw+IGNhc3RfZnJvbSh0eWUpO1xuICAgIHwgQXAoZGlyLCBmLCBhKSA9PlxuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCAoYScsIHR5YSkgPSBlbGFib3JhdGUobSwgYSk7XG4gICAgICBsZXQgKHR5ZjEsIHR5ZjIpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCB0eWYpO1xuICAgICAgbGV0IGYnJyA9IGZyZXNoX2Nhc3QoZicsIHR5ZiwgQXJyb3codHlmMSwgdHlmMikgfD4gVHlwLm1rX2Zhc3QpO1xuICAgICAgbGV0IGEnJyA9IGZyZXNoX2Nhc3QoYScsIHR5YSwgdHlmMSk7XG4gICAgICBFeHAuQXAoZGlyLCBmJycsIGEnJykgfD4gcmV3cmFwIHw+IGNhc3RfZnJvbSh0eWYyKTtcbiAgICB8IERlZmVycmVkQXAoZiwgYXJncykgPT5cbiAgICAgIGxldCAoZicsIHR5ZikgPSBlbGFib3JhdGUobSwgZik7XG4gICAgICBsZXQgKGFyZ3MnLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBhcmdzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCAodHlmMSwgdHlmMikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5Zik7XG4gICAgICBsZXQgdHlfZmFyZ3MgPSBUeXAubWF0Y2hlZF9wcm9kKGN0eCwgTGlzdC5sZW5ndGgoYXJncyksIHR5ZjEpO1xuICAgICAgbGV0IGYnJyA9XG4gICAgICAgIGZyZXNoX2Nhc3QoXG4gICAgICAgICAgZicsXG4gICAgICAgICAgdHlmLFxuICAgICAgICAgIEFycm93KFByb2QodHlfZmFyZ3MpIHw+IFR5cC5ta19mYXN0LCB0eWYyKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgKTtcbiAgICAgIGxldCBhcmdzJycgPSBMaXN0VXRpbC5tYXAzKGZyZXNoX2Nhc3QsIGFyZ3MnLCB0eXMsIHR5X2ZhcmdzKTtcbiAgICAgIGxldCByZW1haW5pbmdfYXJncyA9XG4gICAgICAgIExpc3QuZmlsdGVyKFxuICAgICAgICAgICgoYXJnLCBfKSkgPT4gRXhwLmlzX2RlZmVycmFsKGFyZyksXG4gICAgICAgICAgTGlzdC5jb21iaW5lKGFyZ3MsIHR5X2ZhcmdzKSxcbiAgICAgICAgKTtcbiAgICAgIGxldCByZW1haW5pbmdfYXJnX3R5ID1cbiAgICAgICAgUHJvZChMaXN0Lm1hcChzbmQsIHJlbWFpbmluZ19hcmdzKSkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgICBEZWZlcnJlZEFwKGYnJywgYXJncycnKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQXJyb3cocmVtYWluaW5nX2FyZ190eSwgdHlmMikgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgVHlwQXAoZSwgdXQpID0+XG4gICAgICBsZXQgKGUnLCB0eWUpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgbGV0ICh0cGF0LCB0eWUnKSA9IFR5cC5tYXRjaGVkX2ZvcmFsbChjdHgsIHR5ZSk7XG4gICAgICBsZXQgdXQnID0gVHlwLm5vcm1hbGl6ZShjdHgsIHV0KTtcbiAgICAgIGxldCB0eWUnJyA9XG4gICAgICAgIFR5cC5zdWJzdChcbiAgICAgICAgICB1dCcsXG4gICAgICAgICAgdHBhdCB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VFBhdC5mcmVzaChFbXB0eUhvbGUpKSxcbiAgICAgICAgICB0eWUnLFxuICAgICAgICApO1xuICAgICAgVHlwQXAoZScsIHV0KSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5ZScnKTtcbiAgICB8IElmKGMsIHQsIGYpID0+XG4gICAgICBsZXQgKGMnLCB0eWMpID0gZWxhYm9yYXRlKG0sIGMpO1xuICAgICAgbGV0ICh0JywgdHl0KSA9IGVsYWJvcmF0ZShtLCB0KTtcbiAgICAgIGxldCAoZicsIHR5ZikgPSBlbGFib3JhdGUobSwgZik7XG4gICAgICBsZXQgdHkgPVxuICAgICAgICBUeXAuam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5dCwgdHlmKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBsZXQgYycnID0gZnJlc2hfY2FzdChjJywgdHljLCBCb29sIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIGxldCB0JycgPSBmcmVzaF9jYXN0KHQnLCB0eXQsIHR5KTtcbiAgICAgIGxldCBmJycgPSBmcmVzaF9jYXN0KGYnLCB0eWYsIHR5KTtcbiAgICAgIEV4cC5JZihjJycsIHQnJywgZicnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5KTtcbiAgICB8IFNlcShlMSwgZTIpID0+XG4gICAgICBsZXQgKGUxJywgXykgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHR5MikgPSBlbGFib3JhdGUobSwgZTIpO1xuICAgICAgU2VxKGUxJywgZTInKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5Mik7XG4gICAgfCBUZXN0KGUpID0+XG4gICAgICBsZXQgKGUnLCB0KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIFRlc3QoZnJlc2hfY2FzdChlJywgdCwgQm9vbCB8PiBUeXAubWtfZmFzdCkpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShQcm9kKFtdKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBGaWx0ZXIoa2luZCwgZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgbGV0IGtpbmQnID1cbiAgICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIHwgUmVzaWR1ZShfKSA9PiBraW5kXG4gICAgICAgIHwgRmlsdGVyKHthY3QsIHBhdH0pID0+IEZpbHRlcih7YWN0LCBwYXQ6IGVsYWJvcmF0ZShtLCBwYXQpIHw+IGZzdH0pXG4gICAgICAgIH07XG4gICAgICBGaWx0ZXIoa2luZCcsIGUnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHQpO1xuICAgIHwgQ2xvc3VyZShlbnYsIGUpID0+XG4gICAgICAvLyBTaG91bGQgd2UgYmUgZWxhYm9yYXRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudD9cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgQ2xvc3VyZShlbnYsIGUnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHQpO1xuICAgIHwgQ29ucyhlMSwgZTIpID0+XG4gICAgICBsZXQgKGUxJywgdHkxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdHkyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBsZXQgdHkyX2lubmVyID0gVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5Mik7XG4gICAgICBsZXQgdHlfaW5uZXIgPVxuICAgICAgICBUeXAuam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyX2lubmVyKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBlMScnID0gZnJlc2hfY2FzdChlMScsIHR5MSwgdHlfaW5uZXIpO1xuICAgICAgbGV0IGUyJycgPSBmcmVzaF9jYXN0KGUyJywgdHkyLCBMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBDb25zKGUxJycsIGUyJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20oTGlzdCh0eV9pbm5lcikgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgTGlzdENvbmNhdChlMSwgZTIpID0+XG4gICAgICBsZXQgKGUxJywgdHkxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdHkyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBsZXQgdHlfaW5uZXIxID0gVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5MSk7XG4gICAgICBsZXQgdHlfaW5uZXIyID0gVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5Mik7XG4gICAgICBsZXQgdHlfaW5uZXIgPVxuICAgICAgICBUeXAuam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5X2lubmVyMSwgdHlfaW5uZXIyKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBlMScnID0gZnJlc2hfY2FzdChlMScsIHR5MSwgTGlzdCh0eV9pbm5lcikgfD4gVHlwLm1rX2Zhc3QpO1xuICAgICAgbGV0IGUyJycgPSBmcmVzaF9jYXN0KGUyJywgdHkyLCBMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBMaXN0Q29uY2F0KGUxJycsIGUyJycpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIGUpID0+XG4gICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgfCBWYXIoXCJlXCIpID0+IENvbnN0cnVjdG9yKFwiJGVcIikgfD4gcmV3cmFwXG4gICAgICB8IFZhcihcInZcIikgPT4gQ29uc3RydWN0b3IoXCIkdlwiKSB8PiByZXdyYXBcbiAgICAgIHwgXyA9PlxuICAgICAgICBESEV4cC5FbXB0eUhvbGVcbiAgICAgICAgfD4gcmV3cmFwXG4gICAgICAgIHw+IGNhc3RfZnJvbShUeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKVxuICAgICAgfVxuICAgIHwgVW5PcChJbnQoTWludXMpLCBlKSA9PlxuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBVbk9wKEludChNaW51cyksIGZyZXNoX2Nhc3QoZScsIHQsIEludCB8PiBUeXAubWtfZmFzdCkpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShJbnQgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgVW5PcChCb29sKE5vdCksIGUpID0+XG4gICAgICBsZXQgKGUnLCB0KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIFVuT3AoQm9vbChOb3QpLCBmcmVzaF9jYXN0KGUnLCB0LCBCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoSW50KFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIG9wLCBlMSwgZTIpID0+XG4gICAgICBsZXQgKGUxJywgdDEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0MikgPSBlbGFib3JhdGUobSwgZTIpO1xuICAgICAgQmluT3AoXG4gICAgICAgIG9wLFxuICAgICAgICBmcmVzaF9jYXN0KGUxJywgdDEsIEludCB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChcbiAgICAgICAgSW50KFxuICAgICAgICAgIExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwgfFxuICAgICAgICAgIEVxdWFscyB8XG4gICAgICAgICAgTm90RXF1YWxzLFxuICAgICAgICApIGFzIG9wLFxuICAgICAgICBlMSxcbiAgICAgICAgZTIsXG4gICAgICApID0+XG4gICAgICBsZXQgKGUxJywgdDEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0MikgPSBlbGFib3JhdGUobSwgZTIpO1xuICAgICAgQmluT3AoXG4gICAgICAgIG9wLFxuICAgICAgICBmcmVzaF9jYXN0KGUxJywgdDEsIEludCB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoQm9vbChBbmQgfCBPcikgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgQm9vbCB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgQm9vbCB8PiBUeXAubWtfZmFzdCksXG4gICAgICApXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShCb29sIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKEZsb2F0KFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgRGl2aWRlIHwgUG93ZXIpIGFzIG9wLCBlMSwgZTIpID0+XG4gICAgICBsZXQgKGUxJywgdDEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0MikgPSBlbGFib3JhdGUobSwgZTIpO1xuICAgICAgQmluT3AoXG4gICAgICAgIG9wLFxuICAgICAgICBmcmVzaF9jYXN0KGUxJywgdDEsIEZsb2F0IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBGbG9hdCB8PiBUeXAubWtfZmFzdCksXG4gICAgICApXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShGbG9hdCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChcbiAgICAgICAgRmxvYXQoXG4gICAgICAgICAgTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8XG4gICAgICAgICAgRXF1YWxzIHxcbiAgICAgICAgICBOb3RFcXVhbHMsXG4gICAgICAgICkgYXMgb3AsXG4gICAgICAgIGUxLFxuICAgICAgICBlMixcbiAgICAgICkgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIEZsb2F0IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoU3RyaW5nKENvbmNhdCkgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgU3RyaW5nIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oU3RyaW5nIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFN0cmluZyhFcXVhbHMpIGFzIG9wLCBlMSwgZTIpID0+XG4gICAgICBsZXQgKGUxJywgdDEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0MikgPSBlbGFib3JhdGUobSwgZTIpO1xuICAgICAgQmluT3AoXG4gICAgICAgIG9wLFxuICAgICAgICBmcmVzaF9jYXN0KGUxJywgdDEsIFN0cmluZyB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgU3RyaW5nIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQnVpbHRpbkZ1bihmbikgPT5cbiAgICAgIHVleHBcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF92YXIoQnVpbHRpbnMuY3R4X2luaXQsIGZuKVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cClcbiAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIHwgTWF0Y2goZSwgY2FzZXMpID0+XG4gICAgICBsZXQgKGUnLCB0KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIGxldCAocHMsIGVzKSA9IExpc3RVdGlsLnVuemlwKGNhc2VzKTtcbiAgICAgIGxldCAocHMnLCBwdHlzKSA9XG4gICAgICAgIExpc3QubWFwKGVsYWJvcmF0ZV9wYXR0ZXJuKG0pLCBwcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBsZXQgam9pbmVkX3B0eSA9XG4gICAgICAgIFR5cC5qb2luX2FsbCh+ZW1wdHk9VHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIHB0eXMpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBwcycnID1cbiAgICAgICAgTGlzdC5tYXAyKChwLCB0KSA9PiBmcmVzaF9wYXRfY2FzdChwLCB0LCBqb2luZWRfcHR5KSwgcHMnLCBwdHlzKTtcbiAgICAgIGxldCBlJycgPSBmcmVzaF9jYXN0KGUnLCB0LCBqb2luZWRfcHR5KTtcbiAgICAgIGxldCAoZXMnLCBldHlzKSA9IExpc3QubWFwKGVsYWJvcmF0ZShtKSwgZXMpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgbGV0IGpvaW5lZF9ldHkgPVxuICAgICAgICBUeXAuam9pbl9hbGwofmVtcHR5PVR5cC5Vbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCwgY3R4LCBldHlzKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBsZXQgZXMnJyA9XG4gICAgICAgIExpc3QubWFwMigoZSwgdCkgPT4gZnJlc2hfY2FzdChlLCB0LCBqb2luZWRfZXR5KSwgZXMnLCBldHlzKTtcbiAgICAgIE1hdGNoKGUnJywgTGlzdC5jb21iaW5lKHBzJycsIGVzJycpKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oam9pbmVkX2V0eSk7XG4gICAgfTtcbiAgKGRoZXhwLCBlbGFib3JhdGVkX3R5cGUpO1xufTtcblxuLy9sZXQgZGhleHBfb2ZfdWV4cCA9IENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIGRoZXhwX29mX3VleHApO1xuXG4vKiBUaGlzIGZ1bmN0aW9uIGdpdmVzIGEgbmV3IGlkIHRvIGFsbCB0aGUgdHlwZXNcbiAgIGluIHRoZSBleHByZXNzaW9uLiBJdCBkb2VzIHRoaXMgdG8gZ2V0IHJpZCBvZlxuICAgYWxsIHRoZSBpbnZhbGlkIGlkcyB3ZSBhZGRlZCB0byBwcmV2ZW50IGdlbmVyYXRpbmdcbiAgIHRvbyBtYW55IG5ldyBpZHMgKi9cbmxldCBmaXhfdHlwX2lkcyA9XG4gIEV4cC5tYXBfdGVybSh+Zl90eXA9KGNvbnQsIGUpID0+IGUgfD4gSWRUYWdnZWQubmV3X2lkcyB8PiBjb250KTtcblxubGV0IHVleHBfZWxhYiA9IChtOiBTdGF0aWNzLk1hcC50LCB1ZXhwOiBVRXhwLnQpOiBFbGFib3JhdGlvblJlc3VsdC50ID0+XG4gIHN3aXRjaCAoZWxhYm9yYXRlKG0sIHVleHApKSB7XG4gIHwgZXhjZXB0aW9uIE1pc3NpbmdUeXBlSW5mbyA9PiBEb2VzTm90RWxhYm9yYXRlXG4gIHwgKGQsIHR5KSA9PiBFbGFib3JhdGVzKGQsIHR5LCBEZWx0YS5lbXB0eSlcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtzdGVwOiBpbnR9O1xuXG5sZXQgaW5pdGlhbDogdCA9IHtzdGVwOiAwfTtcblxubGV0IHRha2Vfc3RlcCA9ICh7c3RlcH0pID0+IHtzdGVwOiBzdGVwICsgMX07XG5sZXQgZ2V0X3N0ZXAgPSAoe3N0ZXB9KSA9PiBzdGVwO1xubGV0IHB1dF9zdGVwID0gc3RlcCA9PiB7c3RlcDogc3RlcH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHN0YXRzOiBFdmFsdWF0b3JTdGF0cy50LFxuICB0ZXN0czogVGVzdE1hcC50LFxufTtcblxubGV0IGluaXQgPSB7c3RhdHM6IEV2YWx1YXRvclN0YXRzLmluaXRpYWwsIHRlc3RzOiBUZXN0TWFwLmVtcHR5fTtcblxubGV0IHRha2Vfc3RlcCA9ICh7c3RhdHMsIF99IGFzIGVzKSA9PiB7XG4gIC4uLmVzLFxuICBzdGF0czogc3RhdHMgfD4gRXZhbHVhdG9yU3RhdHMudGFrZV9zdGVwLFxufTtcblxubGV0IGdldF9zdGVwID0gKHtzdGF0cywgX30pID0+IHN0YXRzIHw+IEV2YWx1YXRvclN0YXRzLmdldF9zdGVwO1xuXG5sZXQgcHV0X3N0ZXAgPSAoc3RlcCwgZXMpID0+IHsuLi5lcywgc3RhdHM6IEV2YWx1YXRvclN0YXRzLnB1dF9zdGVwKHN0ZXApfTtcblxubGV0IGFkZF90ZXN0ID0gKHt0ZXN0cywgX30gYXMgZXMsIGlkLCByZXBvcnQpID0+IHtcbiAgbGV0IHRlc3RzID0gdGVzdHMgfD4gVGVzdE1hcC5leHRlbmQoKGlkLCByZXBvcnQpKTtcbiAgey4uLmVzLCB0ZXN0c307XG59O1xuXG5sZXQgZ2V0X3Rlc3RzID0gKHt0ZXN0cywgX30pID0+IHRlc3RzO1xuXG5sZXQgcHV0X3Rlc3RzID0gKHRlc3RzLCBlcykgPT4gey4uLmVzLCB0ZXN0c307XG4iLCJvcGVuIFRyYW5zaXRpb247XG5cbm1vZHVsZSBSZXN1bHQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEJveGVkVmFsdWUoREhFeHAudClcbiAgICB8IEluZGV0KERIRXhwLnQpO1xuXG4gIGxldCB1bmJveCA9XG4gICAgZnVuXG4gICAgfCBCb3hlZFZhbHVlKGQpXG4gICAgfCBJbmRldChkKSA9PiBkO1xuXG4gIGxldCBmYXN0X2VxdWFsID0gKHIxLCByMikgPT5cbiAgICBzd2l0Y2ggKHIxLCByMikge1xuICAgIHwgKEJveGVkVmFsdWUoZDEpLCBCb3hlZFZhbHVlKGQyKSlcbiAgICB8IChJbmRldChkMSksIEluZGV0KGQyKSkgPT4gREhFeHAuZmFzdF9lcXVhbChkMSwgZDIpXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbn07XG5cbm9wZW4gUmVzdWx0O1xuXG5tb2R1bGUgRXZhbHVhdG9yRVZNb2RlOiB7XG4gIHR5cGUgc3RhdHVzID1cbiAgICB8IEJveGVkVmFsdWVcbiAgICB8IEluZGV0XG4gICAgfCBVbmV2YWw7XG5cbiAgaW5jbHVkZVxuICAgIEVWX01PREUgd2l0aFxuICAgICAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KSBhbmQgdHlwZSByZXN1bHQgPSAoc3RhdHVzLCBESEV4cC50KTtcbn0gPSB7XG4gIHR5cGUgc3RhdHVzID1cbiAgICB8IEJveGVkVmFsdWVcbiAgICB8IEluZGV0XG4gICAgfCBVbmV2YWw7XG5cbiAgdHlwZSByZXN1bHQgPSAoc3RhdHVzLCBESEV4cC50KTtcblxuICB0eXBlIHJlcXN0YXRlID1cbiAgICB8IEJveGVkUmVhZHlcbiAgICB8IEluZGV0UmVhZHlcbiAgICB8IEluZGV0QmxvY2tlZDtcblxuICBsZXQgKCYmKSA9ICh4LCB5KSA9PlxuICAgIHN3aXRjaCAoeCwgeSkge1xuICAgIHwgKEluZGV0QmxvY2tlZCwgXykgPT4gSW5kZXRCbG9ja2VkXG4gICAgfCAoXywgSW5kZXRCbG9ja2VkKSA9PiBJbmRldEJsb2NrZWRcbiAgICB8IChJbmRldFJlYWR5LCBfKSA9PiBJbmRldFJlYWR5XG4gICAgfCAoXywgSW5kZXRSZWFkeSkgPT4gSW5kZXRSZWFkeVxuICAgIHwgKEJveGVkUmVhZHksIEJveGVkUmVhZHkpID0+IEJveGVkUmVhZHlcbiAgICB9O1xuXG4gIHR5cGUgcmVxdWlyZW1lbnQoJ2EpID0gKHJlcXN0YXRlLCAnYSk7XG5cbiAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9IChyZXFzdGF0ZSwgJ2EsICdiKTsgLy8gY3VtdWxhdGl2ZSBzdGF0ZSwgY3VtdWxhdGl2ZSBhcmd1bWVudHMsIGN1bXVsYXRpdmUgJ3VuZG8nXG5cbiAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICBzdGF0ZSA6PSBFdmFsdWF0b3JTdGF0ZS5hZGRfdGVzdChzdGF0ZV4sIGlkLCB2KTtcblxuICBsZXQgcmVxX3ZhbHVlID0gKGYsIF8sIHgpID0+XG4gICAgc3dpdGNoIChmKHgpKSB7XG4gICAgfCAoQm94ZWRWYWx1ZSwgeCkgPT4gKEJveGVkUmVhZHksIHgpXG4gICAgfCAoSW5kZXQsIHgpID0+IChJbmRldEJsb2NrZWQsIHgpXG4gICAgfCAoVW5ldmFsLCBfKSA9PiBmYWlsd2l0aChcIlVuZXhwZWN0ZWQgVW5ldmFsXCIpXG4gICAgfTtcblxuICBsZXQgcmVjIHJlcV9hbGxfdmFsdWUgPSAoZiwgaSkgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IChCb3hlZFJlYWR5LCBbXSlcbiAgICB8IFt4LCAuLi54c10gPT4ge1xuICAgICAgICBsZXQgKHIxLCB4JykgPSByZXFfdmFsdWUoZiwgeCA9PiB4LCB4KTtcbiAgICAgICAgbGV0IChyMiwgeHMnKSA9IHJlcV9hbGxfdmFsdWUoZiwgaSwgeHMpO1xuICAgICAgICAocjEgJiYgcjIsIFt4JywgLi4ueHMnXSk7XG4gICAgICB9O1xuXG4gIGxldCByZXFfZmluYWwgPSAoZiwgXywgeCkgPT5cbiAgICBzd2l0Y2ggKGYoeCkpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRSZWFkeSwgeClcbiAgICB8IChJbmRldCwgeCkgPT4gKEluZGV0UmVhZHksIHgpXG4gICAgfCAoVW5ldmFsLCBfKSA9PiBmYWlsd2l0aChcIlVuZXhwZWN0ZWQgVW5ldmFsXCIpXG4gICAgfTtcblxuICBsZXQgcmVjIHJlcV9hbGxfZmluYWwgPSAoZiwgaSkgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IChCb3hlZFJlYWR5LCBbXSlcbiAgICB8IFt4LCAuLi54c10gPT4ge1xuICAgICAgICBsZXQgKHIxLCB4JykgPSByZXFfZmluYWwoZiwgeCA9PiB4LCB4KTtcbiAgICAgICAgbGV0IChyMiwgeHMnKSA9IHJlcV9hbGxfZmluYWwoZiwgaSwgeHMpO1xuICAgICAgICAocjEgJiYgcjIsIFt4JywgLi4ueHMnXSk7XG4gICAgICB9O1xuXG4gIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoZiwgXywgeCkgPT5cbiAgICBzd2l0Y2ggKGYoeCkpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRSZWFkeSwgKHgsIHRydWUpKVxuICAgIHwgKEluZGV0LCB4KSA9PiAoSW5kZXRSZWFkeSwgKHgsIGZhbHNlKSlcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCBvdGhlcndpc2UgPSAoXywgYykgPT4gKEJveGVkUmVhZHksICgpLCBjKTtcblxuICBsZXQgKGFuZC4pID0gKChyMSwgeDEsIGMxKSwgKHIyLCB4MikpID0+IChyMSAmJiByMiwgKHgxLCB4MiksIGMxKHgyKSk7XG5cbiAgbGV0IChsZXQuKSA9ICgociwgeCwgYyksIHMpID0+XG4gICAgc3dpdGNoIChyLCBzKHgpKSB7XG4gICAgfCAoQm94ZWRSZWFkeSwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBpc192YWx1ZTogdHJ1ZSwgX30pKSA9PlxuICAgICAgc3RhdGVfdXBkYXRlKCk7XG4gICAgICAoQm94ZWRWYWx1ZSwgZXhwcik7XG4gICAgfCAoSW5kZXRSZWFkeSwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBpc192YWx1ZTogdHJ1ZSwgX30pKSA9PlxuICAgICAgc3RhdGVfdXBkYXRlKCk7XG4gICAgICAoSW5kZXQsIGV4cHIpO1xuICAgIHwgKEJveGVkUmVhZHksIFN0ZXAoe2V4cHIsIHN0YXRlX3VwZGF0ZSwgaXNfdmFsdWU6IGZhbHNlLCBffSkpXG4gICAgfCAoSW5kZXRSZWFkeSwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBpc192YWx1ZTogZmFsc2UsIF99KSkgPT5cbiAgICAgIHN0YXRlX3VwZGF0ZSgpO1xuICAgICAgKFVuZXZhbCwgZXhwcik7XG4gICAgfCAoQm94ZWRSZWFkeSwgQ29uc3RydWN0b3IpID0+IChCb3hlZFZhbHVlLCBjKVxuICAgIHwgKEluZGV0UmVhZHksIENvbnN0cnVjdG9yKSA9PiAoSW5kZXQsIGMpXG4gICAgfCAoSW5kZXRCbG9ja2VkLCBfKSA9PiAoSW5kZXQsIGMpXG4gICAgfCAoXywgSW5kZXQpID0+IChJbmRldCwgYylcbiAgICB9O1xufTtcbm1vZHVsZSBFdmFsID0gVHJhbnNpdGlvbihFdmFsdWF0b3JFVk1vZGUpO1xuXG5sZXQgcmVjIGV2YWx1YXRlID0gKHN0YXRlLCBlbnYsIGQpID0+IHtcbiAgbGV0IHUgPSBFdmFsLnRyYW5zaXRpb24oZXZhbHVhdGUsIHN0YXRlLCBlbnYsIGQpO1xuICBzd2l0Y2ggKHUpIHtcbiAgfCAoQm94ZWRWYWx1ZSwgeCkgPT4gKEJveGVkVmFsdWUsIHgpXG4gIHwgKEluZGV0LCB4KSA9PiAoSW5kZXQsIHgpXG4gIHwgKFVuZXZhbCwgeCkgPT4gZXZhbHVhdGUoc3RhdGUsIGVudiwgeClcbiAgfTtcbn07XG5cbmxldCBldmFsdWF0ZSA9IChlbnYsIHtkLCBffTogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSA9PiB7XG4gIGxldCBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS5pbml0KTtcbiAgbGV0IGVudiA9IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudChlbnYpO1xuICBsZXQgcmVzdWx0ID0gZXZhbHVhdGUoc3RhdGUsIGVudiwgZCk7XG4gIGxldCByZXN1bHQgPVxuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgfCAoQm94ZWRWYWx1ZSwgeCkgPT4gQm94ZWRWYWx1ZSh4IHw+IERIRXhwLnJlcGFpcl9pZHMpXG4gICAgfCAoSW5kZXQsIHgpID0+IEluZGV0KHggfD4gREhFeHAucmVwYWlyX2lkcylcbiAgICB8IChVbmV2YWwsIHgpID0+IEluZGV0KHggfD4gREhFeHAucmVwYWlyX2lkcylcbiAgICB9O1xuICAoc3RhdGVeLCByZXN1bHQpO1xufTtcbiIsIm9wZW4gVXRpbDtcblxuLy8gaW52YXJpYW50OiBhbHdheXMgaGFzIGF0IGxlYXN0IG9uZSBvcHRpb25cbnR5cGUgcHJldHR5ID0gbGlzdChTZWdtZW50LnQpO1xuXG5sZXQgcF9jb25jYXQgPSAocHJldHR5MiwgcHJldHR5MSkgPT5cbiAgTGlzdC5tYXAocGllY2UxID0+IExpc3QubWFwKHBpZWNlMiA9PiBwaWVjZTEgQCBwaWVjZTIsIHByZXR0eTIpLCBwcmV0dHkxKVxuICB8PiBMaXN0LmZsYXR0ZW47XG5sZXQgcF9vciA9IChwcmV0dHkyLCBwcmV0dHkxKSA9PiBwcmV0dHkxIEAgcHJldHR5MjtcbmxldCBwX29yaWYgPSAoY29uZCwgcHJldHR5MiwgcHJldHR5MSkgPT5cbiAgaWYgKGNvbmQpIHtcbiAgICBwcmV0dHkxIEAgcHJldHR5MjtcbiAgfSBlbHNlIHtcbiAgICBwcmV0dHkyO1xuICB9O1xubGV0IHBfanVzdCA9IHNlZ21lbnQgPT4gW3NlZ21lbnRdO1xuXG5sZXQgcF9jb25jYXQgPSAocHJldHRpZXM6IGxpc3QocHJldHR5KSkgPT5cbiAgTGlzdC5mb2xkX2xlZnQocF9jb25jYXQsIFtbXV0sIHByZXR0aWVzKTtcblxubGV0IChsZXQrKSA9IChwcmV0dHksIGYpID0+IExpc3QubWFwKGYsIHByZXR0eSk7XG5sZXQgKGFuZCspID0gKHByZXR0eTEsIHByZXR0eTIpID0+IExpc3RVdGlsLmNyb3NzKHByZXR0eTEsIHByZXR0eTIpO1xuXG5sZXQgKCBsZXQqICkgPSAocHJldHR5LCBmKSA9PiBMaXN0Lm1hcChmLCBwcmV0dHkpIHw+IExpc3QuZmxhdHRlbjtcbmxldCAoIGFuZCogKSA9IChwcmV0dHkxLCBwcmV0dHkyKSA9PiBMaXN0VXRpbC5jcm9zcyhwcmV0dHkxLCBwcmV0dHkyKTtcblxubGV0IHJlYyBhbGwgPVxuICBmdW5cbiAgfCBbXSA9PiBbW11dXG4gIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICBsZXQgcmVzdCA9IGFsbCh4cyk7XG4gICAgICBMaXN0LmZsYXR0ZW4oTGlzdC5tYXAoeCA9PiBMaXN0Lm1hcChyZXN0ID0+IFt4LCAuLi5yZXN0XSwgcmVzdCksIHgpKTtcbiAgICB9O1xuXG5sZXQgc2VsZWN0OiBwcmV0dHkgPT4gU2VnbWVudC50ID1cbiAgc2VnID0+XG4gICAgTGlzdFV0aWwubWluaW11bShcbiAgICAgIHMgPT4ge1xuICAgICAgICBsZXQgdSA9XG4gICAgICAgICAgTWVhc3VyZWQud2lkdGhfY29zdChzLCA4MCkgKiAxMDAgKyBNZWFzdXJlZC5zZWdtZW50X2hlaWdodChzKTtcbiAgICAgICAgdTtcbiAgICAgIH0sXG4gICAgICBzZWcsXG4gICAgKVxuICAgIHw+IE9wdGlvbi5nZXQ7XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFByZXR0eVNlZ21lbnQ7XG5vcGVuIEJhc2U7XG5cbmxldCBzaG91bGRfYWRkX3NwYWNlID0gKHMxLCBzMikgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gU3RyaW5nLmVuZHNfd2l0aChzMSwgfnN1ZmZpeD1cIihcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLmVuZHNfd2l0aChzMSwgfnN1ZmZpeD1cIltcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiKVwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCJdXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIixcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiO1wiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCI6XCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5lbmRzX3dpdGgoczEsIH5zdWZmaXg9XCIgXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIiBcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLmVuZHNfd2l0aChzMSwgfnN1ZmZpeD1cIlxcblwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCJcXG5cIikgPT4gZmFsc2VcbiAgfCBfID0+IHRydWVcbiAgfTtcblxubGV0IHRleHRfdG9fcHJldHR5ID0gKGlkLCBzb3J0LCBzdHIpOiBwcmV0dHkgPT4ge1xuICBwX2p1c3QoW1xuICAgIFRpbGUoe1xuICAgICAgaWQsXG4gICAgICBsYWJlbDogW3N0cl0sXG4gICAgICBtb2xkOiBNb2xkLm1rX29wKHNvcnQsIFtdKSxcbiAgICAgIHNoYXJkczogWzBdLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgIH0pLFxuICBdKTtcbn07XG5cbmxldCBta19mb3JtID0gKGZvcm1fbmFtZTogc3RyaW5nLCBpZCwgY2hpbGRyZW4pOiBQaWVjZS50ID0+IHtcbiAgbGV0IGZvcm06IEZvcm0udCA9IEZvcm0uZ2V0KGZvcm1fbmFtZSk7XG4gIGFzc2VydChMaXN0Lmxlbmd0aChjaGlsZHJlbikgPT0gTGlzdC5sZW5ndGgoZm9ybS5tb2xkLmluXykpO1xuICAvLyBBZGQgd2hpdGVzcGFjZXNcbiAgbGV0IGNoaWxkcmVuID1cbiAgICBBYmEubWFwX2FiYXMoXG4gICAgICAoKGwsIGNoaWxkLCByKSkgPT4ge1xuICAgICAgICBsZXQgbHNwYWNlID0gc2hvdWxkX2FkZF9zcGFjZShsLCBjaGlsZCB8PiBTZWdtZW50LmZpcnN0X3N0cmluZyk7XG4gICAgICAgIGxldCByc3BhY2UgPSBzaG91bGRfYWRkX3NwYWNlKGNoaWxkIHw+IFNlZ21lbnQubGFzdF9zdHJpbmcsIHIpO1xuICAgICAgICAobHNwYWNlID8gW1NlY29uZGFyeShTZWNvbmRhcnkubWtfc3BhY2UoSWQubWsoKSkpXSA6IFtdKVxuICAgICAgICBAIChcbiAgICAgICAgICByc3BhY2UgPyBjaGlsZCBAIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX3NwYWNlKElkLm1rKCkpKV0gOiBjaGlsZFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIEFiYS5tayhmb3JtLmxhYmVsLCBjaGlsZHJlbiksXG4gICAgKVxuICAgIHw+IEFiYS5nZXRfYnM7XG4gIFRpbGUoe1xuICAgIGlkLFxuICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgIG1vbGQ6IGZvcm0ubW9sZCxcbiAgICBzaGFyZHM6IExpc3QuaW5pdChMaXN0Lmxlbmd0aChjaGlsZHJlbikgKyAxLCBuID0+IG4pLFxuICAgIGNoaWxkcmVuLFxuICB9KTtcbn07XG5cbi8qIEhBQ0tbTWF0dF06IFNvbWV0aW1lcyB0ZXJtcyB0aGF0IHNob3VsZCBoYXZlIG11bHRpcGxlIGlkcyB3b24ndCBiZWNhdXNlXG4gICBldmFsdWF0aW9uIG9ubHkgZXZlciBnaXZlcyB0aGVtIG9uZSAqL1xubGV0IHBhZF9pZHMgPSAobjogaW50LCBpZHM6IGxpc3QoSWQudCkpOiBsaXN0KElkLnQpID0+IHtcbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoKGlkcyk7XG4gIGlmIChsZW4gPCBuKSB7XG4gICAgaWRzIEAgTGlzdC5pbml0KG4gLSBsZW4sIF8gPT4gSWQubWsoKSk7XG4gIH0gZWxzZSB7XG4gICAgTGlzdFV0aWwuc3BsaXRfbihuLCBpZHMpIHw+IGZzdDtcbiAgfTtcbn07XG5cbmxldCAoQCkgPSAoc2VnMTogU2VnbWVudC50LCBzZWcyOiBTZWdtZW50LnQpOiBTZWdtZW50LnQgPT5cbiAgc3dpdGNoIChzZWcxLCBzZWcyKSB7XG4gIHwgKFtdLCBfKSA9PiBzZWcyXG4gIHwgKF8sIFtdKSA9PiBzZWcxXG4gIHwgXyA9PlxuICAgIGlmIChzaG91bGRfYWRkX3NwYWNlKFxuICAgICAgICAgIFNlZ21lbnQubGFzdF9zdHJpbmcoc2VnMSksXG4gICAgICAgICAgU2VnbWVudC5maXJzdF9zdHJpbmcoc2VnMiksXG4gICAgICAgICkpIHtcbiAgICAgIHNlZzEgQCBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19zcGFjZShJZC5taygpKSldIEAgc2VnMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VnMSBAIHNlZzI7XG4gICAgfVxuICB9O1xuXG4vKiBXZSBhc3N1bWUgdGhhdCBwYXJlbnRoZXNlcyBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCBhcyBuZWNlc3NhcnksIGFuZFxuICAgICAgdGhhdCB0aGUgZXhwcmVzc2lvbiBoYXMgbm8gRHluYW1pY0Vycm9ySG9sZXMsIENhc3RzLCBvciBGYWlsZWRDYXN0c1xuICAgKi9cbmxldCByZWMgZXhwX3RvX3ByZXR0eSA9ICh+aW5saW5lLCBleHA6IEV4cC50KTogcHJldHR5ID0+IHtcbiAgbGV0IGdvID0gKH5pbmxpbmU9aW5saW5lKSA9PiBleHBfdG9fcHJldHR5KH5pbmxpbmUpO1xuICBzd2l0Y2ggKGV4cCB8PiBFeHAudGVybV9vZikge1xuICAvLyBBc3N1bWUgdGhlc2UgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhcmVudGhlc2l6ZXJcbiAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gIHwgQ2FzdChfKVxuICB8IEZhaWxlZENhc3QoXylcbiAgfCBDbG9zdXJlKF8pXG4gIHwgRmlsdGVyKF8pID0+IGZhaWx3aXRoKFwicHJpbnRpbmcgdGhlc2Ugbm90IGltcGxlbWVudGVkIHlldFwiKVxuICAvLyBPdGhlciBjYXNlc1xuICB8IEludmFsaWQoeCkgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCB4KVxuICB8IEVtcHR5SG9sZSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIHBfanVzdChbR3JvdXQoe2lkLCBzaGFwZTogQ29udmV4fSldKTtcbiAgfCBCb29sKGIpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgQm9vbC50b19zdHJpbmcoYikpXG4gIHwgSW50KG4pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgSW50LnRvX3N0cmluZyhuKSlcbiAgLy8gVE9ETzogZG8gZmxvYXRzIHByaW50IHJpZ2h0P1xuICB8IEZsb2F0KGYpID0+XG4gICAgdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBGbG9hdC50b19zdHJpbmcoZikpXG4gIHwgU3RyaW5nKHMpID0+XG4gICAgdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBcIlxcXCJcIiArKyBzICsrIFwiXFxcIlwiKVxuICB8IENvbnN0cnVjdG9yKGMpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgYylcbiAgfCBMaXN0TGl0KFtdKSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIFwiW11cIilcbiAgfCBEZWZlcnJhbChfKSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIFwiZGVmZXJyYWxcIilcbiAgfCBMaXN0TGl0KFt4LCAuLi54c10pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0KiB4ID0gZ28oeClcbiAgICBhbmQqIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgKGlkLCBpZHMpID0gKFxuICAgICAgZXhwLmlkcyB8PiBMaXN0LmhkLFxuICAgICAgZXhwLmlkcyB8PiBMaXN0LnRsIHw+IHBhZF9pZHMoTGlzdC5sZW5ndGgoeHMpKSxcbiAgICApO1xuICAgIGxldCBmb3JtID0gKHgsIHhzKSA9PlxuICAgICAgbWtfZm9ybShcbiAgICAgICAgXCJsaXN0X2xpdF9leHBcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICB4XG4gICAgICAgICAgQCBMaXN0LmZsYXR0ZW4oXG4gICAgICAgICAgICAgIExpc3QubWFwMihcbiAgICAgICAgICAgICAgICAoaWQsIHgpID0+IFtta19mb3JtKFwiY29tbWFfZXhwXCIsIGlkLCBbXSldIEAgeCxcbiAgICAgICAgICAgICAgICBpZHMsXG4gICAgICAgICAgICAgICAgeHMsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKTtcbiAgICBwX2p1c3QoW2Zvcm0oeCwgeHMpXSlcbiAgICB8PiBwX29yaWYoXG4gICAgICAgICAhaW5saW5lLFxuICAgICAgICAgcF9qdXN0KFxuICAgICAgICAgICB7XG4gICAgICAgICAgICAgbGV0IHggPSBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCB4O1xuICAgICAgICAgICAgIGxldCB4cyA9XG4gICAgICAgICAgICAgICB4c1xuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAoeCA9PlxuICAgICAgICAgICAgICAgICAgICBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCB4XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICB8PiBMaXN0VXRpbC5tYXBfbGFzdF9vbmx5KHggPT5cbiAgICAgICAgICAgICAgICAgICAgeCBAIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICBbZm9ybSh4LCB4cyldO1xuICAgICAgICAgICB9LFxuICAgICAgICAgKSxcbiAgICAgICApO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIHYpXG4gIHwgQmluT3Aob3AsIGwsIHIpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBsID0gZ28obClcbiAgICBhbmQrIHIgPSBnbyhyKTtcbiAgICBsXG4gICAgQCBbXG4gICAgICBUaWxlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGxhYmVsOiBbT3BlcmF0b3JzLmJpbl9vcF90b19zdHJpbmcob3ApXSxcbiAgICAgICAgbW9sZDogTW9sZC5ta19iaW4oUHJlY2VkZW5jZS5vZl9iaW5fb3Aob3ApLCBTb3J0LkV4cCwgW10pLFxuICAgICAgICBzaGFyZHM6IFswXSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgfSksXG4gICAgXVxuICAgIEAgcjtcbiAgfCBNdWx0aUhvbGUoZXMpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlcyA9IGVzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgZXMpO1xuICB8IEZ1bihwLCBlLCBfLCBfKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcImZ1bl9cIiwgaWQsIFtwXSldIEAgZTtcbiAgfCBUeXBGdW4odHAsIGUsIF8pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidHlwZnVuXCIsIGlkLCBbdHBdKV0gQCBlO1xuICB8IFR1cGxlKFtdKSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIFwiKClcIilcbiAgfCBUdXBsZShbX10pID0+IGZhaWx3aXRoKFwiU2luZ2xldG9uIFR1cGxlcyBhcmUgbm90IGFsbG93ZWRcIilcbiAgfCBUdXBsZShbeCwgLi4ueHNdKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCsgeCA9IGdvKHgpXG4gICAgYW5kKyB4cyA9IHhzIHw+IExpc3QubWFwKGdvKSB8PiBhbGw7XG4gICAgbGV0IGlkcyA9IGV4cC5pZHMgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpO1xuICAgIHhcbiAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgTGlzdC5tYXAyKChpZCwgeCkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCB4LCBpZHMsIHhzKSxcbiAgICAgICk7XG4gIHwgTGV0KHAsIGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIHAgPSBwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHApXG4gICAgYW5kKyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgbGV0IGUyID0gaW5saW5lID8gZTIgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMjtcbiAgICBbbWtfZm9ybShcImxldF9cIiwgaWQsIFtwLCBlMV0pXSBAIGUyO1xuICB8IEZpeEYocCwgZSwgXykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIHAgPSBwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHApXG4gICAgYW5kKyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJmaXhcIiwgaWQsIFtwXSldIEAgZTtcbiAgfCBUeUFsaWFzKHRwLCB0LCBlKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgdHAgPSB0cGF0X3RvX3ByZXR0eSh+aW5saW5lLCB0cClcbiAgICBhbmQrIHQgPSB0eXBfdG9fcHJldHR5KH5pbmxpbmUsIHQpXG4gICAgYW5kKyBlID0gZ28oZSk7XG4gICAgbGV0IGUgPSBpbmxpbmUgPyBlIDogW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldIEAgZTtcbiAgICBbbWtfZm9ybShcInR5YWxpYXNcIiwgaWQsIFt0cCwgdF0pXSBAIGU7XG4gIHwgQXAoRm9yd2FyZCwgZTEsIGUyKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZTEgPSBnbyhlMSlcbiAgICBhbmQrIGUyID0gZ28oZTIpO1xuICAgIGUxIEAgW21rX2Zvcm0oXCJhcF9leHBcIiwgaWQsIFtlMl0pXTtcbiAgfCBBcChSZXZlcnNlLCBlMSwgZTIpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMilcbiAgICBhbmQrIG9wID0gdGV4dF90b19wcmV0dHkoaWQsIFNvcnQuRXhwLCBcInw+XCIpO1xuICAgIGUxIEAgb3AgQCBlMjtcbiAgfCBUeXBBcChlLCB0KSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpXG4gICAgYW5kKyB0cCA9IHR5cF90b19wcmV0dHkofmlubGluZSwgdCk7XG4gICAgZSBAIFtta19mb3JtKFwiYXBfZXhwX3R5cFwiLCBpZCwgW3RwXSldO1xuICB8IERlZmVycmVkQXAoZSwgZXMpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0KyBlID0gZ28oZSlcbiAgICBhbmQrIGVzID0gZXMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgKGlkLCBpZHMpID0gKFxuICAgICAgZXhwLmlkcyB8PiBMaXN0LmhkLFxuICAgICAgZXhwLmlkcyB8PiBMaXN0LnRsIHw+IHBhZF9pZHMoTGlzdC5sZW5ndGgoZXMpKSxcbiAgICApO1xuICAgIGVcbiAgICBAIFtcbiAgICAgIG1rX2Zvcm0oXG4gICAgICAgIFwiYXBfZXhwXCIsXG4gICAgICAgIGlkLFxuICAgICAgICBbXG4gICAgICAgICAgTGlzdC5mbGF0dGVuKFxuICAgICAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgICAgICAoaWQsIGUpID0+IFtta19mb3JtKFwiY29tbWFfZXhwXCIsIGlkLCBbXSldIEAgZSxcbiAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICBlcyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgXTtcbiAgfCBJZihlMSwgZTIsIGUzKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZTEgPSBnbyhlMSlcbiAgICBhbmQrIGUyID0gZ28oZTIpXG4gICAgYW5kKyBlMyA9IGdvKGUzKTtcbiAgICBsZXQgZTIgPSBpbmxpbmUgPyBlMiA6IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIGUyO1xuICAgIGxldCBlMyA9IGlubGluZSA/IGUzIDogW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldIEAgZTM7XG4gICAgW21rX2Zvcm0oXCJpZl9cIiwgaWQsIFtlMSwgZTJdKV0gQCBlMztcbiAgfCBTZXEoZTEsIGUyKSA9PlxuICAgIC8vIFRPRE86IE1ha2UgbmV3bGluZSBvcHRpb25hbFxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZTEgPSBnbyhlMSlcbiAgICBhbmQrIGUyID0gZ28oZTIpO1xuICAgIGxldCBlMiA9IGlubGluZSA/IGUyIDogW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldIEAgZTI7XG4gICAgZTEgQCBbbWtfZm9ybShcImNlbGwtam9pblwiLCBpZCwgW10pXSBAIGUyO1xuICB8IFRlc3QoZSkgPT5cbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcInRlc3RcIiwgaWQsIFtlXSldO1xuICB8IFBhcmVucyhlKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwicGFyZW5zX2V4cFwiLCBpZCwgW2VdKV07XG4gIHwgQ29ucyhlMSwgZTIpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgZTEgQCBbbWtfZm9ybShcImNvbnNfZXhwXCIsIGlkLCBbXSldIEAgZTI7XG4gIHwgTGlzdENvbmNhdChlMSwgZTIpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgZTEgQCBbbWtfZm9ybShcImxpc3RfY29uY2F0XCIsIGlkLCBbXSldIEAgZTI7XG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidW5xdW90ZVwiLCBpZCwgW10pXSBAIGU7XG4gIHwgVW5PcChCb29sKE5vdCksIGUpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJub3RcIiwgaWQsIFtdKV0gQCBlO1xuICB8IFVuT3AoSW50KE1pbnVzKSwgZSkgPT5cbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcInVuYXJ5X21pbnVzXCIsIGlkLCBbXSldIEAgZTtcbiAgLyogVE9ETzogdGhpcyBpc24ndCBhY3R1YWxseSBjb3JyZWN0IGJlY2F1c2Ugd2UgY291bGQgdGhlIGJ1aWx0aW5cbiAgICAgY291bGQgaGF2ZSBiZWVuIG92ZXJyaWRlbiBpbiB0aGlzIHNjb3BlOyB3b3J0aCBmaXhpbmcgd2hlbiB3ZSBmaXhcbiAgICAgY2xvc3VyZXMuICovXG4gIHwgQnVpbHRpbkZ1bihmKSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIGYpXG4gIHwgTWF0Y2goZSwgcnMpID0+XG4gICAgLy8gVE9ETzogQWRkIG5ld2xpbmVzXG4gICAgbGV0KyBlID0gZ28oZSlcbiAgICBhbmQrIHJzOiBsaXN0KGxpc3QoKFNlZ21lbnQudCwgU2VnbWVudC50KSkpID0ge1xuICAgICAgcnNcbiAgICAgIHw+IExpc3QubWFwKCgocCwgZSkpID0+IChwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHApLCBnbyhlKSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHgsIHkpKSA9PiBMaXN0VXRpbC5jcm9zcyh4LCB5KSlcbiAgICAgIHw+IGFsbDtcbiAgICB9O1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aChycykpLFxuICAgICk7XG4gICAgW1xuICAgICAgbWtfZm9ybShcbiAgICAgICAgXCJjYXNlXCIsXG4gICAgICAgIGlkLFxuICAgICAgICBbXG4gICAgICAgICAgZVxuICAgICAgICAgIEAgKFxuICAgICAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgICAgICAoaWQsIChwLCBlKSkgPT4gW21rX2Zvcm0oXCJydWxlXCIsIGlkLCBbcF0pXSBAIGUsXG4gICAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICAgICAgcnMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBdO1xuICB9O1xufVxuYW5kIHBhdF90b19wcmV0dHkgPSAofmlubGluZSwgcGF0OiBQYXQudCk6IHByZXR0eSA9PiB7XG4gIGxldCBnbyA9IHBhdF90b19wcmV0dHkofmlubGluZSk7XG4gIHN3aXRjaCAocGF0IHw+IFBhdC50ZXJtX29mKSB7XG4gIHwgSW52YWxpZCh0KSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIHQpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgcF9qdXN0KFtHcm91dCh7aWQsIHNoYXBlOiBDb252ZXh9KV0pO1xuICB8IFdpbGQgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBcIl9cIilcbiAgfCBWYXIodikgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCB2KVxuICB8IEludChuKSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIEludC50b19zdHJpbmcobikpXG4gIHwgRmxvYXQoZikgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIEZsb2F0LnRvX3N0cmluZyhmKSlcbiAgfCBCb29sKGIpID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgQm9vbC50b19zdHJpbmcoYikpXG4gIHwgU3RyaW5nKHMpID0+XG4gICAgdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBcIlxcXCJcIiArKyBzICsrIFwiXFxcIlwiKVxuICB8IENvbnN0cnVjdG9yKGMpID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgYylcbiAgfCBMaXN0TGl0KFtdKSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiW11cIilcbiAgfCBMaXN0TGl0KFt4LCAuLi54c10pID0+XG4gICAgbGV0KiB4ID0gZ28oeClcbiAgICBhbmQqIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgKGlkLCBpZHMpID0gKFxuICAgICAgcGF0LmlkcyB8PiBMaXN0LmhkLFxuICAgICAgcGF0LmlkcyB8PiBMaXN0LnRsIHw+IHBhZF9pZHMoTGlzdC5sZW5ndGgoeHMpKSxcbiAgICApO1xuICAgIHBfanVzdChbXG4gICAgICBta19mb3JtKFxuICAgICAgICBcImxpc3RfbGl0X3BhdFwiLFxuICAgICAgICBpZCxcbiAgICAgICAgW1xuICAgICAgICAgIHhcbiAgICAgICAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgICAgICAgIChpZCwgeCkgPT4gW21rX2Zvcm0oXCJjb21tYV9wYXRcIiwgaWQsIFtdKV0gQCB4LFxuICAgICAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICAgICAgICB4cyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIF0pO1xuICB8IENvbnMocDEsIHAyKSA9PlxuICAgIGxldCBpZCA9IHBhdCB8PiBQYXQucmVwX2lkO1xuICAgIGxldCsgcDEgPSBnbyhwMSlcbiAgICBhbmQrIHAyID0gZ28ocDIpO1xuICAgIHAxIEAgW21rX2Zvcm0oXCJjb25zX3BhdFwiLCBpZCwgW10pXSBAIHAyO1xuICB8IFR1cGxlKFtdKSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiKClcIilcbiAgfCBUdXBsZShbX10pID0+IGZhaWx3aXRoKFwiU2luZ2xldG9uIFR1cGxlcyBhcmUgbm90IGFsbG93ZWRcIilcbiAgfCBUdXBsZShbeCwgLi4ueHNdKSA9PlxuICAgIGxldCsgeCA9IGdvKHgpXG4gICAgYW5kKyB4cyA9IHhzIHw+IExpc3QubWFwKGdvKSB8PiBhbGw7XG4gICAgbGV0IGlkcyA9IHBhdC5pZHMgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpO1xuICAgIHhcbiAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgTGlzdC5tYXAyKChpZCwgeCkgPT4gW21rX2Zvcm0oXCJjb21tYV9wYXRcIiwgaWQsIFtdKV0gQCB4LCBpZHMsIHhzKSxcbiAgICAgICk7XG4gIHwgUGFyZW5zKHApID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gZ28ocCk7XG4gICAgW21rX2Zvcm0oXCJwYXJlbnNfcGF0XCIsIGlkLCBbcF0pXTtcbiAgfCBNdWx0aUhvbGUoZXMpID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBlcyA9IGVzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgZXMpO1xuICB8IEFwKHAxLCBwMikgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIHAxID0gZ28ocDEpXG4gICAgYW5kKyBwMiA9IGdvKHAyKTtcbiAgICBwMSBAIFtta19mb3JtKFwiYXBfcGF0XCIsIGlkLCBbcDJdKV07XG4gIHwgQ2FzdChwLCB0LCBfKSA9PlxuICAgIGxldCBpZCA9IHBhdCB8PiBQYXQucmVwX2lkO1xuICAgIGxldCsgcCA9IGdvKHApXG4gICAgYW5kKyB0ID0gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KTtcbiAgICBwIEAgW21rX2Zvcm0oXCJ0eXBlYW5uXCIsIGlkLCBbXSldIEAgdDtcbiAgfTtcbn1cbmFuZCB0eXBfdG9fcHJldHR5ID0gKH5pbmxpbmUsIHR5cDogVHlwLnQpOiBwcmV0dHkgPT4ge1xuICBsZXQgZ28gPSB0eXBfdG9fcHJldHR5KH5pbmxpbmUpO1xuICBsZXQgZ29fY29uc3RydWN0b3I6IENvbnN0cnVjdG9yTWFwLnZhcmlhbnQoVHlwLnQpID0+IHByZXR0eSA9XG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGMsIGlkcywgTm9uZSkgPT4gdGV4dF90b19wcmV0dHkoTGlzdC5oZChpZHMpLCBTb3J0LlR5cCwgYylcbiAgICB8IFZhcmlhbnQoYywgaWRzLCBTb21lKHgpKSA9PiB7XG4gICAgICAgIGxldCsgY29uc3RydWN0b3IgPVxuICAgICAgICAgIHRleHRfdG9fcHJldHR5KExpc3QuaGQoTGlzdC50bChpZHMpKSwgU29ydC5UeXAsIGMpO1xuICAgICAgICBjb25zdHJ1Y3RvciBAIFtta19mb3JtKFwiYXBfdHlwXCIsIExpc3QuaGQoaWRzKSwgZ28oeCkpXTtcbiAgICAgIH1cbiAgICB8IEJhZEVudHJ5KHgpID0+IGdvKHgpO1xuICBzd2l0Y2ggKHR5cCB8PiBUeXAudGVybV9vZikge1xuICB8IFVua25vd24oSG9sZShJbnZhbGlkKHMpKSkgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIHMpXG4gIHwgVW5rbm93bihJbnRlcm5hbClcbiAgfCBVbmtub3duKFN5blN3aXRjaClcbiAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSkgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShlcykpKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgZXMgPSBlcyB8PiBMaXN0Lm1hcChhbnlfdG9fcHJldHR5KH5pbmxpbmUpKSB8PiBhbGw7XG4gICAgTGlzdFV0aWwuZmxhdF9pbnRlcnNwZXJzZShHcm91dCh7aWQsIHNoYXBlOiBDb25jYXZlfSksIGVzKTtcbiAgfCBWYXIodikgPT4gdGV4dF90b19wcmV0dHkodHlwIHw+IFR5cC5yZXBfaWQsIFNvcnQuVHlwLCB2KVxuICB8IEludCA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIFwiSW50XCIpXG4gIHwgRmxvYXQgPT4gdGV4dF90b19wcmV0dHkodHlwIHw+IFR5cC5yZXBfaWQsIFNvcnQuVHlwLCBcIkZsb2F0XCIpXG4gIHwgQm9vbCA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIFwiQm9vbFwiKVxuICB8IFN0cmluZyA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIFwiU3RyaW5nXCIpXG4gIHwgTGlzdCh0KSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwibGlzdF90eXBcIiwgaWQsIFt0XSldO1xuICB8IFByb2QoW10pID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCIoKVwiKVxuICB8IFByb2QoW19dKSA9PiBmYWlsd2l0aChcIlNpbmdsZXRvbiBQcm9kcyBhcmUgbm90IGFsbG93ZWRcIilcbiAgfCBQcm9kKFt0LCAuLi50c10pID0+XG4gICAgbGV0KyB0ID0gZ28odClcbiAgICBhbmQrIHRzID0gdHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICB0XG4gICAgQCBMaXN0LmZsYXR0ZW4oXG4gICAgICAgIExpc3QubWFwMihcbiAgICAgICAgICAoaWQsIHQpID0+IFtta19mb3JtKFwiY29tbWFfdHlwXCIsIGlkLCBbXSldIEAgdCxcbiAgICAgICAgICB0eXAuaWRzIHw+IHBhZF9pZHModHMgfD4gTGlzdC5sZW5ndGgpLFxuICAgICAgICAgIHRzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfCBQYXJlbnModCkgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBsZXQrIHQgPSBnbyh0KTtcbiAgICBbbWtfZm9ybShcInBhcmVuc190eXBcIiwgaWQsIFt0XSldO1xuICB8IEFwKHQxLCB0MikgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBsZXQrIHQxID0gZ28odDEpXG4gICAgYW5kKyB0MiA9IGdvKHQyKTtcbiAgICB0MSBAIFtta19mb3JtKFwiYXBfdHlwXCIsIGlkLCBbdDJdKV07XG4gIHwgUmVjKHRwLCB0KSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdHAgPSB0cGF0X3RvX3ByZXR0eSh+aW5saW5lLCB0cClcbiAgICBhbmQrIHQgPSBnbyh0KTtcbiAgICBbbWtfZm9ybShcInJlY1wiLCBpZCwgW3RwXSldIEAgdDtcbiAgfCBGb3JhbGwodHAsIHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwiZm9yYWxsXCIsIGlkLCBbdHBdKV0gQCB0O1xuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBsZXQrIHQxID0gZ28odDEpXG4gICAgYW5kKyB0MiA9IGdvKHQyKTtcbiAgICB0MSBAIFtta19mb3JtKFwiYXJyb3dcIiwgaWQsIFtdKV0gQCB0MjtcbiAgfCBTdW0oW10pID0+IGZhaWx3aXRoKFwiRW1wdHkgU3VtcyBhcmUgbm90IGFsbG93ZWRcIilcbiAgfCBTdW0oW3RdKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdCA9IGdvX2NvbnN0cnVjdG9yKHQpO1xuICAgIFtta19mb3JtKFwidHlwX3N1bV9zaW5nbGVcIiwgaWQsIFtdKV0gQCB0O1xuICB8IFN1bShbdCwgLi4udHNdKSA9PlxuICAgIGxldCsgdCA9IGdvX2NvbnN0cnVjdG9yKHQpXG4gICAgYW5kKyB0cyA9IHRzIHw+IExpc3QubWFwKGdvX2NvbnN0cnVjdG9yKSB8PiBhbGw7XG4gICAgdFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgKGlkLCB0KSA9PiBbbWtfZm9ybShcInR5cF9wbHVzXCIsIGlkLCBbXSldIEAgdCxcbiAgICAgICAgICB0eXAuaWRzIHw+IHBhZF9pZHMoTGlzdC5sZW5ndGgodHMpKSxcbiAgICAgICAgICB0cyxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gIH07XG59XG5hbmQgdHBhdF90b19wcmV0dHkgPSAofmlubGluZSwgdHBhdDogVFBhdC50KTogcHJldHR5ID0+IHtcbiAgc3dpdGNoICh0cGF0IHw+IElkVGFnZ2VkLnRlcm1fb2YpIHtcbiAgfCBJbnZhbGlkKHQpID0+IHRleHRfdG9fcHJldHR5KHRwYXQgfD4gVFBhdC5yZXBfaWQsIFNvcnQuVHlwLCB0KVxuICB8IEVtcHR5SG9sZSA9PlxuICAgIGxldCBpZCA9IHRwYXQgfD4gVFBhdC5yZXBfaWQ7XG4gICAgcF9qdXN0KFtHcm91dCh7aWQsIHNoYXBlOiBDb252ZXh9KV0pO1xuICB8IE11bHRpSG9sZSh4cykgPT5cbiAgICBsZXQgaWQgPSB0cGF0IHw+IFRQYXQucmVwX2lkO1xuICAgIGxldCsgeHMgPSB4cyB8PiBMaXN0Lm1hcChhbnlfdG9fcHJldHR5KH5pbmxpbmUpKSB8PiBhbGw7XG4gICAgTGlzdFV0aWwuZmxhdF9pbnRlcnNwZXJzZShHcm91dCh7aWQsIHNoYXBlOiBDb25jYXZlfSksIHhzKTtcbiAgfCBWYXIodikgPT4gdGV4dF90b19wcmV0dHkodHBhdCB8PiBUUGF0LnJlcF9pZCwgU29ydC5UeXAsIHYpXG4gIH07XG59XG5hbmQgYW55X3RvX3ByZXR0eSA9ICh+aW5saW5lLCBhbnk6IEFueS50KTogcHJldHR5ID0+IHtcbiAgc3dpdGNoIChhbnkpIHtcbiAgfCBFeHAoZSkgPT4gZXhwX3RvX3ByZXR0eSh+aW5saW5lLCBlKVxuICB8IFBhdChwKSA9PiBwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHApXG4gIHwgVHlwKHQpID0+IHR5cF90b19wcmV0dHkofmlubGluZSwgdClcbiAgfCBUUGF0KHRwKSA9PiB0cGF0X3RvX3ByZXR0eSh+aW5saW5lLCB0cClcbiAgfCBBbnkoXylcbiAgfCBOdWwoXylcbiAgfCBSdWwoXykgPT5cbiAgICAvL1RPRE86IHByaW50IG91dCBpbnZhbGlkIHJ1bGVzIHByb3Blcmx5XG4gICAgbGV0IGlkID0gYW55IHw+IEFueS5yZXBfaWQ7XG4gICAgcF9qdXN0KFtHcm91dCh7aWQsIHNoYXBlOiBDb252ZXh9KV0pO1xuICB9O1xufTtcblxuLy8gVXNlIFByZWNlZGVuY2UucmUgdG8gd29yayBvdXQgd2hlcmUgeW91ciBjb25zdHJ1Y3QgZ29lcyBoZXJlLlxubGV0IHJlYyBleHRlcm5hbF9wcmVjZWRlbmNlID0gKGV4cDogRXhwLnQpOiBQcmVjZWRlbmNlLnQgPT4ge1xuICBzd2l0Y2ggKEV4cC50ZXJtX29mKGV4cCkpIHtcbiAgLy8gRm9ybXMgd2hpY2ggd2UgYXJlIGFib3V0IHRvIHN0cmlwLCBzbyB3ZSBqdXN0IGxvb2sgaW5zaWRlXG4gIHwgQ2xvc3VyZShfLCB4KVxuICB8IER5bmFtaWNFcnJvckhvbGUoeCwgXykgPT4gZXh0ZXJuYWxfcHJlY2VkZW5jZSh4KVxuXG4gIC8vIEJpbmFyeSBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGluIFByZWNlZGVuY2UucmVcbiAgfCBCaW5PcChvcCwgXywgXykgPT4gUHJlY2VkZW5jZS5vZl9iaW5fb3Aob3ApXG5cbiAgLy8gSW5kaXZpc2libGUgZm9ybXMgbmV2ZXIgbmVlZCBwYXJlbnRoZXNlcyBhcm91bmQgdGhlbVxuICB8IFZhcihfKVxuICB8IEludmFsaWQoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pXG4gIHwgQnVpbHRpbkZ1bihfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIFNhbWUgZ29lcyBmb3IgZm9ybXMgd2hpY2ggYXJlIGFscmVhZHkgc3Vycm91bmRlZFxuICB8IFBhcmVucyhfKVxuICB8IExpc3RMaXQoXylcbiAgfCBUZXN0KF8pXG4gIHwgTWF0Y2goXykgPT4gUHJlY2VkZW5jZS5tYXhcblxuICAvLyBPdGhlciBmb3Jtc1xuICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgXykgPT4gUHJlY2VkZW5jZS51bnF1b3RlXG4gIHwgQ2FzdChfKVxuICB8IEZhaWxlZENhc3QoXykgPT4gUHJlY2VkZW5jZS5jYXN0XG4gIHwgQXAoRm9yd2FyZCwgXywgXylcbiAgfCBEZWZlcnJlZEFwKF8pXG4gIHwgVHlwQXAoXykgPT4gUHJlY2VkZW5jZS5hcFxuICB8IFVuT3AoQm9vbChOb3QpLCBfKSA9PiBQcmVjZWRlbmNlLm5vdF9cbiAgfCBVbk9wKEludChNaW51cyksIF8pID0+IFByZWNlZGVuY2UubmVnXG4gIHwgQ29ucyhfKSA9PiBQcmVjZWRlbmNlLmNvbnNcbiAgfCBBcChSZXZlcnNlLCBfLCBfKSA9PiBQcmVjZWRlbmNlLmVxc1xuICB8IExpc3RDb25jYXQoXykgPT4gUHJlY2VkZW5jZS5jb25jYXRcbiAgfCBJZihfKSA9PiBQcmVjZWRlbmNlLmlmX1xuICB8IFR5cEZ1bihfKVxuICB8IEZ1bihfKVxuICB8IEZpeEYoXykgPT4gUHJlY2VkZW5jZS5mdW5fXG4gIHwgVHVwbGUoXykgPT4gUHJlY2VkZW5jZS5wcm9kXG4gIHwgU2VxKF8pID0+IFByZWNlZGVuY2Uuc2VtaVxuXG4gIC8vIFRvcC1sZXZlbCB0aGluZ3NcbiAgfCBGaWx0ZXIoXylcbiAgfCBUeUFsaWFzKF8pXG4gIHwgTGV0KF8pID0+IFByZWNlZGVuY2UubGV0X1xuXG4gIC8vIE1hdHQ6IEkgdGhpbmsgbXVsdGlob2xlcyBhcmUgbWluIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgYOKfqT/in6hgc1xuICB8IE11bHRpSG9sZShfKSA9PiBQcmVjZWRlbmNlLm1pblxuICB9O1xufTtcblxubGV0IGV4dGVybmFsX3ByZWNlZGVuY2VfcGF0ID0gKGRwOiBQYXQudCkgPT5cbiAgc3dpdGNoIChESFBhdC50ZXJtX29mKGRwKSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBuZXZlciBuZWVkIHBhcmVudGhlc2VzIGFyb3VuZCB0aGVtXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IEludmFsaWQoXylcbiAgfCBWYXIoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIFNhbWUgZ29lcyBmb3IgZm9ybXMgd2hpY2ggYXJlIGFscmVhZHkgc3Vycm91bmRlZFxuICB8IExpc3RMaXQoXylcbiAgfCBQYXJlbnMoXykgPT4gUHJlY2VkZW5jZS5tYXhcblxuICAvLyBPdGhlciBmb3Jtc1xuICB8IENvbnMoXykgPT4gUHJlY2VkZW5jZS5jb25zXG4gIHwgQXAoXykgPT4gUHJlY2VkZW5jZS5hcFxuICB8IENhc3QoXykgPT4gUHJlY2VkZW5jZS5hbm5cbiAgfCBUdXBsZShfKSA9PiBQcmVjZWRlbmNlLnByb2RcblxuICAvLyBNYXR0OiBJIHRoaW5rIG11bHRpaG9sZXMgYXJlIG1pbiBiZWNhdXNlIHdlIGRvbid0IGtub3cgdGhlIHByZWNlZGVuY2Ugb2YgdGhlIGDin6k/4p+oYHNcbiAgfCBNdWx0aUhvbGUoXykgPT4gUHJlY2VkZW5jZS5taW5cbiAgfTtcblxubGV0IGV4dGVyYWxfcHJlY2VkZW5jZV90eXAgPSAodHA6IFR5cC50KSA9PlxuICBzd2l0Y2ggKFR5cC50ZXJtX29mKHRwKSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBuZXZlciBuZWVkIHBhcmVudGhlc2VzIGFyb3VuZCB0aGVtXG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKVxuICB8IFVua25vd24oSW50ZXJuYWwpXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpXG4gIHwgVmFyKF8pXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgUGFyZW5zKF8pXG4gIHwgTGlzdChfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgUHJvZChfKSA9PiBQcmVjZWRlbmNlLnByb2RcbiAgfCBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgQXJyb3coXywgXykgPT4gUHJlY2VkZW5jZS5wb3dlclxuICB8IFN1bShfKSA9PiBQcmVjZWRlbmNlLnBsdXNcbiAgfCBSZWMoXywgXykgPT4gUHJlY2VkZW5jZS5sZXRfXG4gIHwgRm9yYWxsKF8sIF8pID0+IFByZWNlZGVuY2UubGV0X1xuXG4gIC8vIE1hdHQ6IEkgdGhpbmsgbXVsdGlob2xlcyBhcmUgbWluIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgYOKfqT/in6hgc1xuICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUoXykpKSA9PiBQcmVjZWRlbmNlLm1pblxuICB9O1xuXG5sZXQgcGFyZW5fYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBleHA6IEV4cC50KTogRXhwLnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZShleHApID49IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IEV4cC5mcmVzaChQYXJlbnMoZXhwKSkgOiBleHA7XG5cbmxldCBwYXJlbl9hc3NvY19hdCA9IChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIGV4cDogRXhwLnQpOiBFeHAudCA9PlxuICBleHRlcm5hbF9wcmVjZWRlbmNlKGV4cCkgPiBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBFeHAuZnJlc2goUGFyZW5zKGV4cCkpIDogZXhwO1xuXG5sZXQgcGFyZW5fcGF0X2F0ID0gKGludGVybmFsX3ByZWNlZGVuY2U6IFByZWNlZGVuY2UudCwgcGF0OiBQYXQudCk6IFBhdC50ID0+XG4gIGV4dGVybmFsX3ByZWNlZGVuY2VfcGF0KHBhdCkgPj0gaW50ZXJuYWxfcHJlY2VkZW5jZVxuICAgID8gUGF0LmZyZXNoKFBhcmVucyhwYXQpKSA6IHBhdDtcblxubGV0IHBhcmVuX3BhdF9hc3NvY19hdCA9XG4gICAgKGludGVybmFsX3ByZWNlZGVuY2U6IFByZWNlZGVuY2UudCwgcGF0OiBQYXQudCk6IFBhdC50ID0+XG4gIGV4dGVybmFsX3ByZWNlZGVuY2VfcGF0KHBhdCkgPiBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBQYXQuZnJlc2goUGFyZW5zKHBhdCkpIDogcGF0O1xuXG5sZXQgcGFyZW5fdHlwX2F0ID0gKGludGVybmFsX3ByZWNlZGVuY2U6IFByZWNlZGVuY2UudCwgdHlwOiBUeXAudCk6IFR5cC50ID0+XG4gIGV4dGVyYWxfcHJlY2VkZW5jZV90eXAodHlwKSA+PSBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBUeXAuZnJlc2goUGFyZW5zKHR5cCkpIDogdHlwO1xuXG5sZXQgcGFyZW5fdHlwX2Fzc29jX2F0ID1cbiAgICAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCB0eXA6IFR5cC50KTogVHlwLnQgPT5cbiAgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCh0eXApID4gaW50ZXJuYWxfcHJlY2VkZW5jZVxuICAgID8gVHlwLmZyZXNoKFBhcmVucyh0eXApKSA6IHR5cDtcblxubGV0IHJlYyBwYXJlbnRoZXNpemUgPSAoZXhwOiBFeHAudCk6IEV4cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gRXhwLnVud3JhcChleHApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgLy8gSW5kaXZpc2libGUgZm9ybXMgZG9udCcgY2hhbmdlXG4gIHwgVmFyKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IEVtcHR5SG9sZVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBCdWlsdGluRnVuKF8pID0+IGV4cFxuXG4gIC8vIEZvcm1zIHRoYXQgY3VycmVudGx5IG5lZWQgdG8gc3RyaXBwZWQgYmVmb3JlIG91dHV0dGluZ1xuICB8IENsb3N1cmUoXywgeClcbiAgfCBEeW5hbWljRXJyb3JIb2xlKHgsIF8pXG4gIHwgVHVwbGUoW3hdKVxuICB8IEZpbHRlcihfLCB4KVxuICB8IENhc3QoeCwgXywgXylcbiAgfCBGYWlsZWRDYXN0KHgsIF8sIF8pID0+IHggfD4gcGFyZW50aGVzaXplXG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBGdW4ocCwgZSwgYywgbikgPT5cbiAgICBGdW4oXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5mdW5fKSxcbiAgICAgIGMsIC8vIFRPRE86IFBhcmVudGhlc2l6ZSB0aHJvdWdoIGNsb3N1cmVcbiAgICAgIG4sXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFR5cEZ1bih0cCwgZSwgbikgPT5cbiAgICBUeXBGdW4odHAsIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLCBuKVxuICAgIHw+IHJld3JhcFxuICB8IFR1cGxlKGVzKSA9PlxuICAgIFR1cGxlKFxuICAgICAgZXMgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplKSB8PiBMaXN0Lm1hcChwYXJlbl9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTGlzdExpdChlcykgPT5cbiAgICBMaXN0TGl0KFxuICAgICAgZXMgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplKSB8PiBMaXN0Lm1hcChwYXJlbl9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTGV0KHAsIGUxLCBlMikgPT5cbiAgICBMZXQoXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZTEpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5sZXRfKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgRml4RihwLCBlLCBjKSA9PlxuICAgIEZpeEYoXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5mdW5fKSxcbiAgICAgIGMgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggY2xvc3VyZVxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBUeUFsaWFzKHRwLCB0LCBlKSA9PlxuICAgIFR5QWxpYXMoXG4gICAgICB0cCxcbiAgICAgIHQsIC8vIFRPRE86IFR5cGVzXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5sZXRfKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAoRm9yd2FyZCwgZTEsIGUyKSA9PlxuICAgIEFwKFxuICAgICAgRm9yd2FyZCxcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAoUmV2ZXJzZSwgZTEsIGUyKSA9PlxuICAgIEFwKFxuICAgICAgUmV2ZXJzZSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5lcXMpLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmVxcyksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFR5cEFwKGUsIHRwKSA9PlxuICAgIFR5cEFwKFxuICAgICAgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0cCkgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICBEZWZlcnJlZEFwKFxuICAgICAgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgZXMgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplKSB8PiBMaXN0Lm1hcChwYXJlbl9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgSWYoZTEsIGUyLCBlMykgPT5cbiAgICBJZihcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZTMpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuaWZfKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgU2VxKGUxLCBlMikgPT5cbiAgICBTZXEoXG4gICAgICBwYXJlbnRoZXNpemUoZTEpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2Uuc2VtaSksIC8vIHRlbXB0aW5nIHRvIG1ha2UgdGhpcyBvbmUgYXNzb2MgdG9vXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2Uuc2VtaSksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFRlc3QoZSkgPT4gVGVzdChwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgLy8gfCBGaWx0ZXIoZiwgZSkgPT5cbiAgLy8gICBGaWx0ZXIoXG4gIC8vICAgICBmLCAvLyBUT0RPOiBGaWx0ZXJzXG4gIC8vICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAvLyAgIClcbiAgLy8gICB8PiByZXdyYXBcbiAgfCBQYXJlbnMoZSkgPT5cbiAgICBQYXJlbnMocGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSkgfD4gcmV3cmFwXG4gIHwgQ29ucyhlMSwgZTIpID0+XG4gICAgQ29ucyhcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5jb25zKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5jb25zKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTGlzdENvbmNhdChlMSwgZTIpID0+XG4gICAgTGlzdENvbmNhdChcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5jb25jYXQpLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNvbmNhdCksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgPT5cbiAgICBVbk9wKE1ldGEoVW5xdW90ZSksIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLnVucXVvdGUpKVxuICAgIHw+IHJld3JhcFxuICB8IFVuT3AoQm9vbChOb3QpLCBlKSA9PlxuICAgIFVuT3AoQm9vbChOb3QpLCBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5ub3RfKSkgfD4gcmV3cmFwXG4gIHwgVW5PcChJbnQoTWludXMpLCBlKSA9PlxuICAgIFVuT3AoSW50KE1pbnVzKSwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubmVnKSkgfD4gcmV3cmFwXG4gIHwgQmluT3Aob3AsIGUxLCBlMikgPT5cbiAgICBCaW5PcChcbiAgICAgIG9wLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcCkpLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBNYXRjaChlLCBycykgPT5cbiAgICBNYXRjaChcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICByc1xuICAgICAgfD4gTGlzdC5tYXAoKChwLCBlKSkgPT5cbiAgICAgICAgICAgKFxuICAgICAgICAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgICAgICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5jYXNlXyksXG4gICAgICAgICAgIClcbiAgICAgICAgICksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IE11bHRpSG9sZShfKSA9PiBleHAgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggbXVsdGlob2xlc1xuICB9O1xufVxuYW5kIHBhcmVudGhlc2l6ZV9wYXQgPSAocGF0OiBQYXQudCk6IFBhdC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gUGF0LnVud3JhcChwYXQpO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgLy8gSW5kaXZpc2libGUgZm9ybXMgZG9udCcgY2hhbmdlXG4gIHwgVmFyKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IEVtcHR5SG9sZVxuICB8IENvbnN0cnVjdG9yKF8pID0+IHBhdFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgV2lsZCA9PiBwYXRcbiAgfCBQYXJlbnMocCkgPT5cbiAgICBQYXJlbnMocGFyZW50aGVzaXplX3BhdChwKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBDb25zKHAxLCBwMikgPT5cbiAgICBDb25zKFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMSkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UuY29ucyksXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHAyKSB8PiBwYXJlbl9wYXRfYXNzb2NfYXQoUHJlY2VkZW5jZS5jb25zKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHVwbGUocHMpID0+XG4gICAgVHVwbGUoXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3BhdClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTGlzdExpdChwcykgPT5cbiAgICBMaXN0TGl0KFxuICAgICAgcHNcbiAgICAgIHw+IExpc3QubWFwKHBhcmVudGhlc2l6ZV9wYXQpXG4gICAgICB8PiBMaXN0Lm1hcChwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5wcm9kKSksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IEFwKHAxLCBwMikgPT5cbiAgICBBcChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocDEpIHw+IHBhcmVuX3BhdF9hc3NvY19hdChQcmVjZWRlbmNlLmFwKSxcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocDIpIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IE11bHRpSG9sZShfKSA9PiBwYXQgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggbXVsdGlob2xlc1xuICB8IENhc3QocCwgdDEsIHQyKSA9PlxuICAgIENhc3QoXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hc3NvY19hdChQcmVjZWRlbmNlLmFubiksXG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHQxKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5tYXgpLCAvLyBIYWNrW01hdHRdOiBhbHdheXMgYWRkIHBhcmVucyB0byBnZXQgdGhlIGFycm93cyByaWdodFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MikgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWF4KSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIH07XG59XG5cbmFuZCBwYXJlbnRoZXNpemVfdHlwID0gKHR5cDogVHlwLnQpOiBUeXAudCA9PiB7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IFR5cC51bndyYXAodHlwKTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIGRvbnQnIGNoYW5nZVxuICB8IFZhcihfKVxuICB8IFVua25vd24oSG9sZShJbnZhbGlkKF8pKSlcbiAgfCBVbmtub3duKEludGVybmFsKVxuICB8IFVua25vd24oU3luU3dpdGNoKVxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiB0eXBcblxuICAvLyBPdGhlciBmb3Jtc1xuICB8IFBhcmVucyh0KSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemVfdHlwKHQpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICB8IExpc3QodCkgPT5cbiAgICBMaXN0KHBhcmVudGhlc2l6ZV90eXAodCkgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSkgfD4gcmV3cmFwXG4gIHwgUHJvZCh0cykgPT5cbiAgICBQcm9kKFxuICAgICAgdHNcbiAgICAgIHw+IExpc3QubWFwKHBhcmVudGhlc2l6ZV90eXApXG4gICAgICB8PiBMaXN0Lm1hcChwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5wcm9kKSksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IEFwKHQxLCB0MikgPT5cbiAgICBBcChcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLmFwKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDIpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFJlYyh0cCwgdCkgPT5cbiAgICBSZWModHAsIHBhcmVudGhlc2l6ZV90eXAodCkgfD4gcGFyZW5fdHlwX2Fzc29jX2F0KFByZWNlZGVuY2UubGV0XykpXG4gICAgfD4gcmV3cmFwXG4gIHwgRm9yYWxsKHRwLCB0KSA9PlxuICAgIEZvcmFsbCh0cCwgcGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXNzb2NfYXQoUHJlY2VkZW5jZS5sZXRfKSlcbiAgICB8PiByZXdyYXBcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgQXJyb3coXG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHQxKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5wb3dlciksXG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHQyKSB8PiBwYXJlbl90eXBfYXNzb2NfYXQoUHJlY2VkZW5jZS5wb3dlciksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFN1bSh0cykgPT5cbiAgICBTdW0oXG4gICAgICBDb25zdHJ1Y3Rvck1hcC5tYXAoXG4gICAgICAgIHRzID0+XG4gICAgICAgICAgdHNcbiAgICAgICAgICB8PiBPcHRpb24ubWFwKHBhcmVudGhlc2l6ZV90eXApXG4gICAgICAgICAgfD4gT3B0aW9uLm1hcChwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pKSxcbiAgICAgICAgdHMsXG4gICAgICApLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKF8pKSkgPT4gdHlwIC8vIFRPRE86IFBhcmVudGhlc2l6ZSB0aHJvdWdoIG11bHRpaG9sZXNcbiAgfTtcbn07XG5cbmxldCBleHBfdG9fZWRpdG9yID0gKH5pbmxpbmUsIGV4cDogRXhwLnQpOiBFZGl0b3IudCA9PiB7XG4gIGxldCBleHAgPSBwYXJlbnRoZXNpemUoZXhwKTtcbiAgbGV0IHAgPSBleHBfdG9fcHJldHR5KH5pbmxpbmUsIGV4cCk7XG4gIGxldCBzZWcgPSBwIHw+IFByZXR0eVNlZ21lbnQuc2VsZWN0O1xuICBFZGl0b3IuaW5pdCh+cmVhZF9vbmx5PXRydWUsIFppcHBlci51bnppcChzZWcpKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFppcHBlcjtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbnR5cGUgcmVsYXRpb24gPVxuICB8IFBhcmVudFxuICB8IFNpYmxpbmc7XG5cbmxldCBwaWVjZScgPVxuICAgICh+bm9fd3M6IGJvb2wsIH5pZ246IFBpZWNlLnQgPT4gYm9vbCwgfnRyaW1fc2Vjb25kYXJ5PWZhbHNlLCB6OiBaaXBwZXIudClcbiAgICA6IG9wdGlvbigoUGllY2UudCwgRGlyZWN0aW9uLnQsIHJlbGF0aW9uKSkgPT4ge1xuICBsZXQgc2licyA9XG4gICAgdHJpbV9zZWNvbmRhcnlcbiAgICAgID8gc2lic193aXRoX3NlbCh6KSB8PiBTaWJsaW5ncy50cmltX3NlY29uZGFyeSA6IHNpYnNfd2l0aF9zZWwoeik7XG4gIC8qIFJldHVybnMgdGhlIHBpZWNlIGN1cnJlbnRseSBpbmRpY2F0ZWQgKGlmIGFueSkgYW5kIHdoaWNoIHNpZGUgb2ZcbiAgICAgdGhhdCBwaWVjZSB0aGUgY2FyZXQgaXMgb24uIFdlIGZhdm9yIGluZGljYXRpbmcgdGhlIHBpZWNlIHRvIHRoZVxuICAgICAoUilpZ2h0LCBidXQgbWF5IGVuZCB1cCBpbmRpY2F0aW5nIHRoZSAoUClhcmVudCBvciB0aGUgKEwpZWZ0LlxuICAgICBXZSBkb24ndCBpbmRpY2F0ZSBzZWNvbmRhcnkgdGlsZXMuIFRoaXMgZnVuY3Rpb24gaWdub3JlcyB3aGV0aGVyXG4gICAgIG9yIG5vdCB0aGVyZSBpcyBhIHNlbGVjdGlvbiBzbyB0aGlzIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgY2FyZXRcbiAgICAgZGlyZWN0aW9uLCBidXQgdGhlIGNhbGxlciBzaG91bGRuJ3QgaW5kaWNhdGUgaWYgdGhlcmUncyBhIHNlbGVjdGlvbiAqL1xuICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhzaWJzKSwgcGFyZW50KHopKSB7XG4gIC8qIE5vbi1lbXB0eSBzZWxlY3Rpb24gPT4gbm8gaW5kaWNhdGlvbiAqL1xuICAvL3wgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4gTm9uZVxuICAvKiBFbXB0eSBzeW50YXggPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoTm9uZSwgTm9uZSksIE5vbmUpID0+IE5vbmVcbiAgLyogTCBub3Qgc2Vjb25kYXJ5LCBSIGlzIHNlY29uZGFyeSA9PiBpbmRpY2F0ZSBMICovXG4gIHwgKChTb21lKGwpLCBTb21lKHIpKSwgXykgd2hlbiAhaWduKGwpICYmIGlnbihyKSA9PlxuICAgIFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBMIGFuZCBSIGFyZSBzZWNvbmRhcnlzID0+IG5vIGluZGljYXRpb24gKi9cbiAgfCAoKFNvbWUobCksIFNvbWUocikpLCBfKSB3aGVuIGlnbihsKSAmJiBpZ24ocikgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogQXQgcmlnaHQgZW5kIG9mIHN5bnRheCBhbmQgTCBpcyBzZWNvbmRhcnkgPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoU29tZShsKSwgTm9uZSksIE5vbmUpIHdoZW4gaWduKGwpID0+XG4gICAgbm9fd3MgPyBOb25lIDogU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIEF0IGxlZnQgZW5kIG9mIHN5bnRheCBhbmQgUiBpcyBzZWNvbmRhcnkgPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoTm9uZSwgU29tZShyKSksIE5vbmUpIHdoZW4gaWduKHIpID0+XG4gICAgbm9fd3MgPyBOb25lIDogU29tZSgociwgUmlnaHQsIFNpYmxpbmcpKVxuICAvKiBObyBMIGFuZCBSIGlzIGEgc2Vjb25kYXJ5IGFuZCB0aGVyZSBpcyBhIFAgPT4gaW5kaWNhdGUgUCAqL1xuICB8ICgoTm9uZSwgU29tZShyKSksIFNvbWUocGFyZW50KSkgd2hlbiBpZ24ocikgPT5cbiAgICBTb21lKChwYXJlbnQsIExlZnQsIFBhcmVudCkpXG4gIC8qIEwgaXMgbm90IHNlY29uZGFyeSBhbmQgY2FyZXQgaXMgb3V0ZXIgPT4gaW5kaWNhdGUgTCAqL1xuICB8ICgoU29tZShsKSwgXyksIF8pIHdoZW4gIWlnbihsKSAmJiB6LmNhcmV0ID09IE91dGVyID0+XG4gICAgU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIE5vIEwsIHNvbWUgUCwgYW5kIGNhcmV0IGlzIG91dGVyID0+IGluZGljYXRlIFIgKi9cbiAgfCAoKE5vbmUsIF8pLCBTb21lKHBhcmVudCkpIHdoZW4gei5jYXJldCA9PSBPdXRlciA9PlxuICAgIFNvbWUoKHBhcmVudCwgTGVmdCwgUGFyZW50KSlcbiAgLyogUiBpcyBub3Qgc2Vjb25kYXJ5LCBlaXRoZXIgbm8gTCBvciBMIGlzIHNlY29uZGFyeSBvciBjYXJldCBpcyBpbm5lciA9PiBpbmRpY2F0ZSBSICovXG4gIHwgKChfLCBTb21lKHIpKSwgXykgPT4gU29tZSgociwgUmlnaHQsIFNpYmxpbmcpKVxuICAvKiBObyBSIGFuZCB0aGVyZSBpcyBhIFAgPT4gaW5kaWNhdGUgUCAqL1xuICB8ICgoXywgTm9uZSksIFNvbWUocGFyZW50KSkgPT4gU29tZSgocGFyZW50LCBSaWdodCwgUGFyZW50KSlcbiAgLyogVGhlcmUgaXMgYW4gTCBidXQgbm8gUiBhbmQgbm8gUCA9PiBpbmRpY2F0ZSBMICovXG4gIC8vVE9ETyhhbmRyZXcpOiBSaWdodCBiZWxvdyBzZWVtcyB3cm9uZyBidXQgaXQgZ2V0cyBmdWNreSBvdGhlcndpc2VcbiAgfCAoKFNvbWUobCksIE5vbmUpLCBOb25lKSA9PiBTb21lKChsLCBSaWdodCwgU2libGluZykpXG4gIH07XG59O1xuXG5sZXQgcGllY2UgPVxuICBwaWVjZScofm5vX3dzPXRydWUsIH5pZ249cCA9PiBQaWVjZS4oaXNfc2Vjb25kYXJ5KHApIHx8IGlzX2dyb3V0KHApKSk7XG5cbmxldCBzaGFyZF9pbmRleCA9ICh6OiBaaXBwZXIudCk6IG9wdGlvbihpbnQpID0+XG4gIHN3aXRjaCAocGllY2UoeikpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKChwLCBzaWRlLCByZWxhdGlvbikpID0+XG4gICAgc3dpdGNoIChyZWxhdGlvbikge1xuICAgIHwgUGFyZW50ID0+XG4gICAgICBzd2l0Y2ggKEFuY2VzdG9ycy5wYXJlbnQoei5yZWxhdGl2ZXMuYW5jZXN0b3JzKSkge1xuICAgICAgfCBOb25lID0+IGZhaWx3aXRoKFwiaW5kaWNhdGVkX3NoYXJkX2luZGV4IGltcG9zc2libGVcIilcbiAgICAgIHwgU29tZSh7Y2hpbGRyZW46IChiZWZvcmUsIF8pLCBffSkgPT5cbiAgICAgICAgbGV0IGJlZm9yZSA9IExpc3QubGVuZ3RoKGJlZm9yZSk7XG4gICAgICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICAgICAgICB8IChfLCBOb25lKSA9PiBTb21lKGJlZm9yZSArIDEpXG4gICAgICAgIHwgXyA9PiBTb21lKGJlZm9yZSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB8IFNpYmxpbmcgPT5cbiAgICAgIHN3aXRjaCAocCkge1xuICAgICAgfCBTZWNvbmRhcnkoXylcbiAgICAgIHwgR3JvdXQoXykgPT4gU29tZSgwKVxuICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgIHN3aXRjaCAoc2lkZSkge1xuICAgICAgICB8IExlZnQgPT4gU29tZShMaXN0Lmxlbmd0aCh0LmNoaWxkcmVuKSlcbiAgICAgICAgfCBSaWdodCA9PiBTb21lKDApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbmxldCBpbmRleCA9ICh6OiBaaXBwZXIudCk6IG9wdGlvbihJZC50KSA9PlxuICBzd2l0Y2ggKFxuICAgIHBpZWNlJyh+bm9fd3M9ZmFsc2UsIH5pZ249UGllY2UuaXNfc2Vjb25kYXJ5LCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHopXG4gICkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoKHAsIF8sIF8pKSA9PiBTb21lKFBpZWNlLmlkKHApKVxuICB9O1xuXG5sZXQgY2lfb2YgPSAoejogWmlwcGVyLnQsIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50KTogb3B0aW9uKFN0YXRpY3MuSW5mby50KSA9PlxuICAvKiBUaGlzIHZlcnNpb24gdGFrZXMgaW50byBhY2NvdW50cyBTZWNvbmRhcnksIHdoaWxlIGFjY291bnRpbmcgZm9yIHRoZVxuICAgKiBmYWN0IHRoYXQgU2Vjb25kYXJ5IGlzIG5vdCBjdXJyZW50bHkgYWRkZWQgdG8gdGhlIGluZm9fbWFwLiBGaXJzdCB3ZVxuICAgKiB0cnkgdGhlIGJhc2ljIGluZGljYXRpb24gZnVuY3Rpb24sIHNwZWNpZnlpbmcgdGhhdCB3ZSBkbyBub3Qgd2FudFxuICAgKiBTZWNvbmRhcnkuIEJ1dCBpZiB0aGlzIGRvZXNuJ3Qgc3VjY2VlZCwgdGhlbiB3ZSBjcmVhdGUgYSAndmlydHVhbCdcbiAgICogaW5mbyBtYXAgZW50cnkgcmVwcmVzZW50aW5nIHRoZSBTZWNvbmRhcnkgbm90YXRpb24sIHdoaWNoIHRha2VzIG9uXG4gICAqIHNvbWUgb2YgdGhlIHNlbWFudGljIGNvbnRleHQgb2YgYSBuZWFyYnkgJ3Byb3h5JyB0ZXJtICovXG4gIHN3aXRjaCAoXG4gICAgcGllY2UnKH5ub193cz10cnVlLCB+aWduPVBpZWNlLmlzX3NlY29uZGFyeSwgfnRyaW1fc2Vjb25kYXJ5PWZhbHNlLCB6KVxuICApIHtcbiAgfCBTb21lKChwLCBfLCBfKSkgPT4gSWQuTWFwLmZpbmRfb3B0KFBpZWNlLmlkKHApLCBpbmZvX21hcClcbiAgfCBOb25lID0+XG4gICAgbGV0IHNpYnMgPSBzaWJzX3dpdGhfc2VsKHopO1xuICAgIGxldCogY2xzID1cbiAgICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnMpKSB7XG4gICAgICAvKiBJZiBvbiBzaWRlIG9mIGNvbW1lbnQsIHNheSB3ZSdyZSBvbiBjb21tZW50ICovXG4gICAgICB8IChTb21lKFNlY29uZGFyeShzbCkpLCBTb21lKFNlY29uZGFyeShfKSkpXG4gICAgICAgICAgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudChzbCkgPT5cbiAgICAgICAgU29tZShTZWNvbmRhcnkuY2xzX29mKHNsKSlcbiAgICAgIHwgKFNvbWUoU2Vjb25kYXJ5KF8pKSwgU29tZShTZWNvbmRhcnkoc3IpKSlcbiAgICAgICAgICB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHNyKSA9PlxuICAgICAgICBTb21lKFNlY29uZGFyeS5jbHNfb2Yoc3IpKVxuICAgICAgfCAoXywgU29tZShTZWNvbmRhcnkocykpKVxuICAgICAgfCAoU29tZShTZWNvbmRhcnkocykpLCBfKSA9PiBTb21lKFNlY29uZGFyeS5jbHNfb2YocykpXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQqIHByb3h5X2lkID1cbiAgICAgIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKFNpYmxpbmdzLnRyaW1fc2Vjb25kYXJ5KHNpYnMpKSkge1xuICAgICAgfCAoXywgU29tZShwKSlcbiAgICAgIHwgKFNvbWUocCksIF8pID0+IFNvbWUoUGllY2UuaWQocCkpXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQrIGNpID0gSWQuTWFwLmZpbmRfb3B0KHByb3h5X2lkLCBpbmZvX21hcCk7XG4gICAgSW5mby5TZWNvbmRhcnkoe1xuICAgICAgaWQ6IHByb3h5X2lkLFxuICAgICAgY2xzOiBTZWNvbmRhcnkoY2xzKSxcbiAgICAgIHNvcnQ6IEluZm8uc29ydF9vZihjaSksXG4gICAgICBjdHg6IEluZm8uY3R4X29mKGNpKSxcbiAgICB9KTtcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qKlxuICBUaGUgcmVzdWx0IG9mIGEgcHJvZ3JhbSBldmFsdWF0aW9uLiBJbmNsdWRlcyB0aGUgeyF0eXBlOkV2YWx1YXRvclJlc3VsdC50fSxcbiAgdGhlIHshdHlwZTpFdmFsdWF0b3JTdGF0ZX0sIGFuZCB0aGUgdHJhY2tlZCBob2xlIGluc3RhbmNlIGluZm9ybWF0aW9uXG4gICh7IXR5cGU6SG9sZUluc3RhbmNlSW5mby50fSkuIENvbnN0cnVjdGVkIGJ5IHshdmFsOlByb2dyYW0uZ2V0X3Jlc3VsdH0uXG4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgaW5uZXIgPSB7XG4gIHJlc3VsdDogRXZhbHVhdG9yLlJlc3VsdC50LFxuICBlZGl0b3I6IEVkaXRvci50LFxuICBzdGF0ZTogRXZhbHVhdG9yU3RhdGUudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXJyb3IgPVxuICB8IFRpbWVvdXRcbiAgfCBFdmF1bGF0b3JFcnJvcihFdmFsdWF0b3JFcnJvci50KVxuICB8IFVua25vd25FeGNlcHRpb24oc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPZmYoRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KVxuICB8IFJlc3VsdE9rKGlubmVyKVxuICB8IFJlc3VsdEZhaWwoZXJyb3IpXG4gIHwgUmVzdWx0UGVuZGluZztcblxubGV0IGdldF9kaGV4cCA9IChyOiBpbm5lcikgPT4gRXZhbHVhdG9yLlJlc3VsdC51bmJveChyLnJlc3VsdCk7XG5sZXQgZ2V0X3N0YXRlID0gKHI6IGlubmVyKSA9PiByLnN0YXRlO1xuIiwibW9kdWxlIENvcmVTdGF0aWNzID0gU3RhdGljcztcblxubW9kdWxlIFN0YXRpY3MgPSB7XG4gIGxldCBta19tYXAnID1cbiAgICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBlID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcChcbiAgICAgICAgfmN0eD1CdWlsdGlucy5jdHhfaW5pdCxcbiAgICAgICAgfmFuY2VzdG9ycz1bXSxcbiAgICAgICAgZSxcbiAgICAgICAgSWQuTWFwLmVtcHR5LFxuICAgICAgKVxuICAgICAgfD4gc25kXG4gICAgfSk7XG4gIGxldCBta19tYXAgPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGV4cCkgPT5cbiAgICBjb3JlLnN0YXRpY3MgPyBta19tYXAnKGV4cCkgOiBJZC5NYXAuZW1wdHk7XG5cbiAgbGV0IG1rX21hcF9hbmRfaW5mb19jdHggPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIChjdHgsIGUpID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzPVtdLCBlLCBJZC5NYXAuZW1wdHkpXG4gICAgfSk7XG4gIGxldCBta19tYXBfYW5kX2luZm9fY3R4ID0gKGNvcmU6IENvcmVTZXR0aW5ncy50LCBjdHgsIGV4cCkgPT5cbiAgICBjb3JlLnN0YXRpY3NcbiAgICAgID8ge1xuICAgICAgICBsZXQgKGluZm8sIG1hcCkgPSBta19tYXBfYW5kX2luZm9fY3R4KGN0eCwgZXhwKTtcbiAgICAgICAgKFNvbWUoaW5mbyksIG1hcCk7XG4gICAgICB9XG4gICAgICA6IChOb25lLCBJZC5NYXAuZW1wdHkpO1xuXG4gIGxldCBta19tYXBfY3R4ID1cbiAgICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCAoY3R4LCBlKSA9PiB7XG4gICAgICBTdGF0aWNzLnVleHBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycz1bXSwgZSwgSWQuTWFwLmVtcHR5KSB8PiBzbmRcbiAgICB9KTtcbiAgbGV0IG1rX21hcF9jdHggPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGN0eCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljcyA/IG1rX21hcF9jdHgoY3R4LCBleHApIDogSWQuTWFwLmVtcHR5O1xufTtcblxubGV0IGRoX2VyciA9IChlcnJvcjogc3RyaW5nKTogREhFeHAudCA9PiBWYXIoZXJyb3IpIHw+IERIRXhwLmZyZXNoO1xuXG5sZXQgZWxhYm9yYXRlID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgRWxhYm9yYXRvci51ZXhwX2VsYWIpO1xuXG5leGNlcHRpb24gRG9lc05vdEVsYWJvcmF0ZTtcbmxldCBlbGFib3JhdGUgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgbWFwLCB0ZXJtKTogREhFeHAudCA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiAhc2V0dGluZ3Muc3RhdGljcyA9PiBkaF9lcnIoXCJTdGF0aWNzIGRpc2FibGVkXCIpXG4gIHwgXyB3aGVuICFzZXR0aW5ncy5keW5hbWljcyAmJiAhc2V0dGluZ3MuZWxhYm9yYXRlID0+XG4gICAgZGhfZXJyKFwiRHluYW1pY3MgJiBFbGFib3JhdGlvbiBkaXNhYmxlZFwiKVxuICB8IF8gPT5cbiAgICBzd2l0Y2ggKGVsYWJvcmF0ZShtYXAsIHRlcm0pKSB7XG4gICAgfCBEb2VzTm90RWxhYm9yYXRlID0+IGRoX2VycihcIkVsYWJvcmF0aW9uIHJldHVybnMgTm9uZVwiKVxuICAgIHwgRWxhYm9yYXRlcyhkLCBfLCBfKSA9PiBkXG4gICAgfVxuICB9O1xuXG5sZXQgZXZhbHVhdGUgPVxuICAgICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB+ZW52PUJ1aWx0aW5zLmVudl9pbml0LCBlbGFiOiBESEV4cC50KVxuICAgIDogUHJvZ3JhbVJlc3VsdC50ID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5keW5hbWljcyA9PiBPZmYoe2Q6IGVsYWJ9KVxuICB8IF8gPT5cbiAgICBzd2l0Y2ggKEV2YWx1YXRvci5ldmFsdWF0ZShlbnYsIHtkOiBlbGFifSkpIHtcbiAgICB8IGV4Y2VwdGlvbiAoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKHJlYXNvbikpID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiRXZhbHVhdG9yRXJyb3I6XCIgKysgRXZhbHVhdG9yRXJyb3Iuc2hvdyhyZWFzb24pKTtcbiAgICAgIFJlc3VsdEZhaWwoRXZhdWxhdG9yRXJyb3IocmVhc29uKSk7XG4gICAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiRVhOOlwiICsrIFByaW50ZXhjLnRvX3N0cmluZyhleG4pKTtcbiAgICAgIFJlc3VsdEZhaWwoVW5rbm93bkV4Y2VwdGlvbihQcmludGV4Yy50b19zdHJpbmcoZXhuKSkpO1xuICAgIHwgKHN0YXRlLCByZXN1bHQpID0+XG4gICAgICBSZXN1bHRPayh7XG4gICAgICAgIHJlc3VsdCxcbiAgICAgICAgZWRpdG9yOlxuICAgICAgICAgIEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKFxuICAgICAgICAgICAgfmlubGluZT1mYWxzZSxcbiAgICAgICAgICAgIEV2YWx1YXRvci5SZXN1bHQudW5ib3gocmVzdWx0KSxcbiAgICAgICAgICApLFxuICAgICAgICBzdGF0ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9O1xuXG5sZXQgZXZhbF96ID1cbiAgICAoXG4gICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgfmN0eF9pbml0OiBDdHgudCxcbiAgICAgIH5lbnZfaW5pdDogRW52aXJvbm1lbnQudCxcbiAgICAgIHo6IFppcHBlci50LFxuICAgIClcbiAgICA6IFByb2dyYW1SZXN1bHQudCA9PiB7XG4gIGxldCAodGVybSwgXykgPSBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKHopO1xuICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MsIGN0eF9pbml0LCB0ZXJtKTtcbiAgbGV0IGQgPSBlbGFib3JhdGUofnNldHRpbmdzLCBpbmZvX21hcCwgdGVybSk7XG4gIGV2YWx1YXRlKH5zZXR0aW5ncywgfmVudj1lbnZfaW5pdCwgZCk7XG59O1xuIiwib3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xub3BlbiBTdWdnZXN0aW9uO1xuXG4vKiBTdWdnZXN0IHRoZSB0b2tlbiBhdCB0aGUgdG9wIG9mIHRoZSBiYWNrcGFjaywgaWYgd2UgY2FuIHB1dCBpdCBkb3duICovXG5sZXQgc3VnZ2VzdF9iYWNrcGFjayA9ICh6OiBaaXBwZXIudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIC8qIE5vdGU6IFNvcnQgY2hlY2sgdW5uZWNlc3NhcnkgaGVyZSBhcyB3b3VsZG4ndCBiZSBhYmxlIHRvIHB1dCBkb3duICovXG4gIHN3aXRjaCAoei5iYWNrcGFjaykge1xuICB8IFtdID0+IFtdXG4gIHwgW3tjb250ZW50LCBffSwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKGNvbnRlbnQpIHtcbiAgICB8IFtUaWxlKHtsYWJlbCwgc2hhcmRzOiBbaWR4XSwgX30pXSB3aGVuIFppcHBlci5jYW5fcHV0X2Rvd24oeikgPT4gW1xuICAgICAgICB7Y29udGVudDogTGlzdC5udGgobGFiZWwsIGlkeCksIHN0cmF0ZWd5OiBBbnkoRnJvbUJhY2twYWNrKX0sXG4gICAgICBdXG4gICAgfCBfID0+IFtdXG4gICAgfVxuICB9O1xufTtcblxubGV0IHN1Z2dlc3QgPSAoY2k6IEluZm8udCwgejogWmlwcGVyLnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICAvKiBOT1RFOiBTb3J0aW5nIGVuc3VyZXMgdGhhdCBpZiB3ZSBoYXZlIGFuIGV4YWN0IG1hdGNoIGFscmVhZHksXG4gICAqIHdlIHdvbid0IHN1Z2dlc3QgZXh0ZW5kaW5nIGl0LCBidXQgc3RyYWlnaHQtdXAgbGV4aWNhbCBzb3J0aW5nXG4gICAqIG1heSBub3QgYmUgZGVzaXJhYmxlIGluIG90aGVyIHdheXMsIGZvciBleGFtcGxlIG1heWJlIHdlIHdhbnRcbiAgICogcmVjZW5jeSBiaWFzIGluIGN0eC4gUmV2aXNpdCB0aGlzIGxhdGVyLiBJJ20gc29ydGluZyBiZWZvcmVcbiAgICogY29tYmluYXRpb24gYmVjYXVzZSB3ZSB3YW50IGJhY2twYWNrIGNhbmRpZGF0ZXMgdG8gc2hvdyB1cCBmaXJzdCAqL1xuICBzdWdnZXN0X2JhY2twYWNrKHopXG4gIEAgKFxuICAgIEFzc2lzdGFudEZvcm1zLnN1Z2dlc3Rfb3BlcmFuZChjaSlcbiAgICBAIEFzc2lzdGFudEZvcm1zLnN1Z2dlc3RfbGVhZGluZyhjaSlcbiAgICBAIEFzc2lzdGFudEN0eC5zdWdnZXN0X3ZhcmlhYmxlKGNpKVxuICAgIEAgQXNzaXN0YW50Q3R4LnN1Z2dlc3RfbG9va2FoZWFkX3ZhcmlhYmxlKGNpKVxuICAgIHw+IExpc3Quc29ydChTdWdnZXN0aW9uLmNvbXBhcmUpXG4gIClcbiAgQCAoQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9vcGVyYXRvcihjaSkgfD4gTGlzdC5zb3J0KFN1Z2dlc3Rpb24uY29tcGFyZSkpO1xufTtcblxuLyogSWYgdGhlcmUgaXMgYSBtb25vdGlsZSB0byB0aGUgbGVmdCBvZiB0aGUgY2FyZXQsIHJldHVybiBpdC4gV2VcbiAqIGN1cnJlbnRseSBvbmx5IG1ha2Ugc3VnZ2VzdGlvbnMgaW4gc3VjaCBzaXR1YXRpb25zICovXG5sZXQgdG9rZW5fdG9fbGVmdCA9ICh6OiBaaXBwZXIudCk6IG9wdGlvbihzdHJpbmcpID0+XG4gIHN3aXRjaCAoXG4gICAgei5jYXJldCxcbiAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyB8PiBmc3QgfD4gTGlzdC5yZXYsXG4gICAgei5yZWxhdGl2ZXMuc2libGluZ3MgfD4gc25kLFxuICApIHtcbiAgfCAoT3V0ZXIsIFtUaWxlKHtsYWJlbDogW3Rva190b19sZWZ0XSwgX30pLCAuLi5fXSwgXykgPT5cbiAgICBTb21lKHRva190b19sZWZ0KVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG4vKiBUaGUgc2VsZWN0aW9uIGJ1ZmZlciB1c2VkIGJ5IFR5RGkgaXMgY3VycmVudGx5IHVuc3RydWN0dXJlZDsgaXQgc2ltcGx5XG4gKiBob2xkcyBhbiB1bnBhcnNlZCBzdHJpbmcsIHdoaWNoIGlzIHBhcnNlZCB2aWEgdGhlIHNhbWUgbWVjaGFuaXNtIGFzXG4gKiBQYXN0ZSBvbmx5IHdoZW4gYSBzdWdnZXN0aW9uIGlzIGFjY2VwdGVkLiAqL1xubGV0IG1rX3VucGFyc2VkX2J1ZmZlciA9XG4gICAgKH5zb3J0OiBTb3J0LnQsIHNpYnM6IFNpYmxpbmdzLnQsIHQ6IFRva2VuLnQpOiBTZWdtZW50LnQgPT4ge1xuICBsZXQgbW9sZCA9IFNpYmxpbmdzLm1vbGRfZml0dGluZ19iZXR3ZWVuKHNvcnQsIFByZWNlZGVuY2UubWF4LCBzaWJzKTtcbiAgW1RpbGUoe2lkOiBJZC5taygpLCBsYWJlbDogW3RdLCBzaGFyZHM6IFswXSwgY2hpbGRyZW46IFtdLCBtb2xkfSldO1xufTtcblxuLyogSWYgJ2N1cnJlbnQnIGlzIGEgcHJvcGVyIHByZWZpeCBvZiAnY2FuZGlkYXRlJywgcmV0dXJuIHRoZVxuICogc3VmZml4IHN1Y2ggdGhhdCBjdXJyZW50ICsrIHN1ZmZpeCA9PSBjYW5kaWRhdGUgKi9cbmxldCBzdWZmaXhfb2YgPSAoY2FuZGlkYXRlOiBUb2tlbi50LCBjdXJyZW50OiBUb2tlbi50KTogb3B0aW9uKFRva2VuLnQpID0+IHtcbiAgbGV0IGNhbmRpZGF0ZV9zdWZmaXggPVxuICAgIFN0cmluZy5zdWIoXG4gICAgICBjYW5kaWRhdGUsXG4gICAgICBTdHJpbmcubGVuZ3RoKGN1cnJlbnQpLFxuICAgICAgU3RyaW5nLmxlbmd0aChjYW5kaWRhdGUpIC0gU3RyaW5nLmxlbmd0aChjdXJyZW50KSxcbiAgICApO1xuICBjYW5kaWRhdGVfc3VmZml4ID09IFwiXCIgPyBOb25lIDogU29tZShjYW5kaWRhdGVfc3VmZml4KTtcbn07XG5cbi8qIFBFUkY6IFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlICovXG5sZXQgel90b19jaSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB+Y3R4OiBDdHgudCwgejogWmlwcGVyLnQpID0+IHtcbiAgbGV0IG1hcCA9XG4gICAgelxuICAgIHw+IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW1cbiAgICB8PiBmc3RcbiAgICB8PiBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLCBjdHgpO1xuICBsZXQqIGluZGV4ID0gSW5kaWNhdGVkLmluZGV4KHopO1xuICBJZC5NYXAuZmluZF9vcHQoaW5kZXgsIG1hcCk7XG59O1xuXG4vKiBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnVmZmVyICovXG5sZXQgZ2V0X2J1ZmZlciA9ICh6OiBaaXBwZXIudCk6IG9wdGlvbihUb2tlbi50KSA9PlxuICBzd2l0Y2ggKHouc2VsZWN0aW9uLm1vZGUsIHouc2VsZWN0aW9uLmNvbnRlbnQpIHtcbiAgfCAoQnVmZmVyKFVucGFyc2VkKSwgW1RpbGUoe2xhYmVsOiBbY29tcGxldGlvbl0sIF99KV0pID0+XG4gICAgU29tZShjb21wbGV0aW9uKVxuICB8IF8gPT4gTm9uZVxuICB9O1xuXG4vKiBHaXZlcyBhIHR5cGUtZGlyZWN0ZWQgc3VnZ2VzdGlvbiAqL1xubGV0IHN1Z2dlc3QgPSAofnNldHRpbmdzLCB+Y3R4OiBDdHgudCwgejogWmlwcGVyLnQpOiBvcHRpb24oU2VnbWVudC50KSA9PiB7XG4gIGxldCogdG9rX3RvX2xlZnQgPSB0b2tlbl90b19sZWZ0KHopO1xuICBsZXQqIGNpID0gel90b19jaSh+c2V0dGluZ3MsIH5jdHgsIHopO1xuICBsZXQgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0KGNpLCB6KTtcbiAgbGV0IHN1Z2dlc3Rpb25zID1cbiAgICBzdWdnZXN0aW9uc1xuICAgIHw+IExpc3QuZmlsdGVyKCh7Y29udGVudCwgX306IFN1Z2dlc3Rpb24udCkgPT5cbiAgICAgICAgIFN0cmluZy5zdGFydHNfd2l0aCh+cHJlZml4PXRva190b19sZWZ0LCBjb250ZW50KVxuICAgICAgICk7XG4gIGxldCogdG9wX3N1Z2dlc3Rpb24gPSBzdWdnZXN0aW9ucyB8PiBVdGlsLkxpc3RVdGlsLmhkX29wdDtcbiAgbGV0KiBzdWdnZXN0aW9uX3N1ZmZpeCA9IHN1ZmZpeF9vZih0b3Bfc3VnZ2VzdGlvbi5jb250ZW50LCB0b2tfdG9fbGVmdCk7XG4gIGxldCBjb250ZW50ID1cbiAgICBta191bnBhcnNlZF9idWZmZXIoXG4gICAgICB+c29ydD1JbmZvLnNvcnRfb2YoY2kpLFxuICAgICAgei5yZWxhdGl2ZXMuc2libGluZ3MsXG4gICAgICBzdWdnZXN0aW9uX3N1ZmZpeCxcbiAgICApO1xuICBTb21lKGNvbnRlbnQpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgdGVzdF9tYXA6IFRlc3RNYXAudCxcbiAgc3RhdHVzZXM6IGxpc3QoVGVzdFN0YXR1cy50KSxcbiAgZGVzY3JpcHRpb25zOiBsaXN0KHN0cmluZyksXG4gIHRvdGFsOiBpbnQsXG4gIHBhc3Npbmc6IGludCxcbiAgZmFpbGluZzogaW50LFxuICB1bmZpbmlzaGVkOiBpbnQsXG59O1xuXG5sZXQgbWtfcmVzdWx0cyA9ICh+ZGVzY3JpcHRpb25zPVtdLCB0ZXN0X21hcDogVGVzdE1hcC50KTogdCA9PiB7XG4gIHRlc3RfbWFwLFxuICBzdGF0dXNlczogdGVzdF9tYXAgfD4gTGlzdC5tYXAociA9PiByIHw+IHNuZCB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyksXG4gIGRlc2NyaXB0aW9ucyxcbiAgdG90YWw6IFRlc3RNYXAuY291bnQodGVzdF9tYXApLFxuICBwYXNzaW5nOiBUZXN0TWFwLmNvdW50X3N0YXR1cyhQYXNzLCB0ZXN0X21hcCksXG4gIGZhaWxpbmc6IFRlc3RNYXAuY291bnRfc3RhdHVzKEZhaWwsIHRlc3RfbWFwKSxcbiAgdW5maW5pc2hlZDogVGVzdE1hcC5jb3VudF9zdGF0dXMoSW5kZXQsIHRlc3RfbWFwKSxcbn07XG5cbmxldCByZXN1bHRfc3VtbWFyeV9zdHIgPVxuICAgICh+biwgfnAsIH5xLCB+bl9zdHIsIH5uc19zdHIsIH5wX3N0ciwgfnFfc3RyLCB+cl9zdHIpOiBzdHJpbmcgPT4ge1xuICBsZXQgb25lX3AgPSBcIm9uZSBpcyBcIiArKyBwX3N0ciArKyBcIiBcIjtcbiAgbGV0IG9uZV9xID0gXCJvbmUgaXMgXCIgKysgcV9zdHIgKysgXCIgXCI7XG4gIGxldCBtbnlfcCA9IFByaW50Zi5zcHJpbnRmKFwiJWQgYXJlICVzIFwiLCBwLCBwX3N0cik7XG4gIGxldCBtbnlfcSA9IFByaW50Zi5zcHJpbnRmKFwiJWQgYXJlICVzIFwiLCBxLCBxX3N0cik7XG4gIGxldCBvZl9uID0gUHJpbnRmLnNwcmludGYoXCJPdXQgb2YgJWQgJXMsIFwiLCBuLCBuc19zdHIpO1xuICBzd2l0Y2ggKG4sIHAsIHEpIHtcbiAgfCAoMCwgXywgXykgPT4gXCJObyBcIiArKyBuc19zdHIgKysgXCIgYXZhaWxhYmxlLlwiXG4gIHwgKF8sIDAsIDApID0+IFwiQWxsIFwiICsrIG5zX3N0ciArKyBcIiBcIiArKyByX3N0ciArKyBcIiEgXCJcbiAgfCAobiwgXywgYykgd2hlbiBuID09IGMgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHFfc3RyICsrIFwiIFwiXG4gIHwgKG4sIGYsIF8pIHdoZW4gbiA9PSBmID0+IFwiQWxsIFwiICsrIG5zX3N0ciArKyBcIiBcIiArKyBwX3N0ciArKyBcIiBcIlxuICB8ICgxLCAwLCAxKSA9PiBcIk9uZSBcIiArKyBuX3N0ciArKyBcIiBcIiArKyBxX3N0ciArKyBcIiBcIlxuICB8ICgxLCAxLCAwKSA9PiBcIk9uZSBcIiArKyBuX3N0ciArKyBcIiBcIiArKyBwX3N0ciArKyBcIiBcIlxuICB8ICgyLCAxLCAxKSA9PlxuICAgIFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIGFuZCBvbmUgXCIgKysgcV9zdHIgKysgXCIgXCJcbiAgfCAoXywgMCwgMSkgPT4gb2ZfbiArKyBvbmVfcVxuICB8IChfLCAxLCAwKSA9PiBvZl9uICsrIG9uZV9wXG4gIHwgKF8sIDEsIDEpID0+IG9mX24gKysgb25lX3AgKysgXCJhbmQgXCIgKysgb25lX3FcbiAgfCAoXywgMSwgXykgPT4gb2ZfbiArKyBvbmVfcCArKyBcImFuZCBcIiArKyBtbnlfcVxuICB8IChfLCBfLCAxKSA9PiBvZl9uICsrIG1ueV9wICsrIFwiYW5kIFwiICsrIG9uZV9xXG4gIHwgKF8sIDAsIF8pID0+IG9mX24gKysgbW55X3FcbiAgfCAoXywgXywgMCkgPT4gb2ZfbiArKyBtbnlfcFxuICB8IChfLCBfLCBfKSA9PiBvZl9uICsrIG1ueV9wICsrIFwiYW5kIFwiICsrIG1ueV9xXG4gIH07XG59O1xuXG5sZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IHQpOiBzdHJpbmcgPT5cbiAgcmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICB+cl9zdHI9XCJwYXNzaW5nXCIsXG4gICk7XG4iLCIvKiBjbG9zZWQgc3Vic3RpdHV0aW9uIFtkMS94XWQyICovXG5sZXQgcmVjIHN1YnN0X3ZhciA9IChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGQyOiBESEV4cC50KTogREhFeHAudCA9PiB7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IERIRXhwLnVud3JhcChkMik7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IFZhcih5KSA9PlxuICAgIGlmIChWYXIuZXEoeCwgeSkpIHtcbiAgICAgIGQxO1xuICAgIH0gZWxzZSB7XG4gICAgICBkMjtcbiAgICB9XG4gIHwgSW52YWxpZChfKSA9PiBkMlxuICB8IFNlcShkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgU2VxKGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IEZpbHRlcihmaWx0ZXIsIGRib2R5KSA9PlxuICAgIGxldCBkYm9keSA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZGJvZHkpO1xuICAgIGxldCBmaWx0ZXIgPSBzdWJzdF92YXJfZmlsdGVyKG0sIGQxLCB4LCBmaWx0ZXIpO1xuICAgIEZpbHRlcihmaWx0ZXIsIGRib2R5KSB8PiByZXdyYXA7XG4gIHwgTGV0KGRwLCBkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID1cbiAgICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgZHApKSB7XG4gICAgICAgIGQ0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgICB9O1xuICAgIExldChkcCwgZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgRml4Rih5LCBkMywgZW52KSA9PlxuICAgIGxldCBlbnYnID0gT3B0aW9uLm1hcChzdWJzdF92YXJfZW52KG0sIGQxLCB4KSwgZW52KTtcbiAgICBsZXQgZDMgPVxuICAgICAgaWYgKERIUGF0LmJpbmRzX3ZhcihtLCB4LCB5KSkge1xuICAgICAgICBkMztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgICAgfTtcbiAgICBGaXhGKHksIGQzLCBlbnYnKSB8PiByZXdyYXA7XG4gIHwgRnVuKGRwLCBkMywgZW52LCBzKSA9PlxuICAgIC8qIEZ1bmN0aW9uIGNsb3N1cmUgc2hvdWxkbid0IGFwcGVhciBkdXJpbmcgc3Vic3RpdHV0aW9uXG4gICAgICAgKHdoaWNoIG9ubHkgaXMgY2FsbGVkIGZyb20gZWxhYm9yYXRpb24gY3VycmVudGx5KSAqL1xuICAgIGxldCBlbnYnID0gT3B0aW9uLm1hcChzdWJzdF92YXJfZW52KG0sIGQxLCB4KSwgZW52KTtcbiAgICBpZiAoREhQYXQuYmluZHNfdmFyKG0sIHgsIGRwKSkge1xuICAgICAgRnVuKGRwLCBkMywgZW52JywgcykgfD4gcmV3cmFwO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICAgIEZ1bihkcCwgZDMsIGVudicsIHMpIHw+IHJld3JhcDtcbiAgICB9O1xuICB8IFR5cEZ1bih0cGF0LCBkMywgcykgPT5cbiAgICBUeXBGdW4odHBhdCwgc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyksIHMpIHw+IHJld3JhcFxuICB8IENsb3N1cmUoZW52LCBkMykgPT5cbiAgICAvKiBDbG9zdXJlIHNob3VsZG4ndCBhcHBlYXIgZHVyaW5nIHN1YnN0aXR1dGlvbiAod2hpY2hcbiAgICAgICBvbmx5IGlzIGNhbGxlZCBmcm9tIGVsYWJvcmF0aW9uIGN1cnJlbnRseSkgKi9cbiAgICBsZXQgZW52JyA9IHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgsIGVudik7XG4gICAgbGV0IGQzJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIENsb3N1cmUoZW52JywgZDMnKSB8PiByZXdyYXA7XG4gIHwgQXAoZGlyLCBkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgQXAoZGlyLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBCdWlsdGluRnVuKF8pID0+IGQyXG4gIHwgVGVzdChkMykgPT4gVGVzdChzdWJzdF92YXIobSwgZDEsIHgsIGQzKSkgfD4gcmV3cmFwXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZDJcbiAgfCBMaXN0TGl0KGRzKSA9PiBMaXN0TGl0KExpc3QubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCksIGRzKSkgfD4gcmV3cmFwXG4gIHwgQ29ucyhkMywgZDQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgbGV0IGQ0ID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgQ29ucyhkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBMaXN0Q29uY2F0KGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBMaXN0Q29uY2F0KGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IFR1cGxlKGRzKSA9PiBUdXBsZShMaXN0Lm1hcChzdWJzdF92YXIobSwgZDEsIHgpLCBkcykpIHw+IHJld3JhcFxuICB8IFVuT3Aob3AsIGQzKSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIFVuT3Aob3AsIGQzKSB8PiByZXdyYXA7XG4gIHwgQmluT3Aob3AsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBCaW5PcChvcCwgZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgTWF0Y2goZHMsIHJ1bGVzKSA9PlxuICAgIGxldCBkcyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZHMpO1xuICAgIGxldCBydWxlcyA9XG4gICAgICBMaXN0Lm1hcChcbiAgICAgICAgKChwLCB2KSkgPT5cbiAgICAgICAgICBpZiAoREhQYXQuYmluZHNfdmFyKG0sIHgsIHApKSB7XG4gICAgICAgICAgICAocCwgdik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIChwLCBzdWJzdF92YXIobSwgZDEsIHgsIHYpKTtcbiAgICAgICAgICB9LFxuICAgICAgICBydWxlcyxcbiAgICAgICk7XG4gICAgTWF0Y2goZHMsIHJ1bGVzKSB8PiByZXdyYXA7XG4gIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZSB8PiByZXdyYXBcbiAgLy8gVE9ETzogaGFuZGxlIG11bHRpaG9sZVxuICB8IE11bHRpSG9sZShfZDIpID0+IGQyIC8vTXVsdGlIb2xlKExpc3QubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCksIGRzKSkgfD4gcmV3cmFwXG4gIHwgQ2FzdChkLCB0eTEsIHR5MikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQpO1xuICAgIENhc3QoZCcsIHR5MSwgdHkyKSB8PiByZXdyYXA7XG4gIHwgRmFpbGVkQ2FzdChkLCB0eTEsIHR5MikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQpO1xuICAgIEZhaWxlZENhc3QoZCcsIHR5MSwgdHkyKSB8PiByZXdyYXA7XG4gIHwgRHluYW1pY0Vycm9ySG9sZShkLCBlcnIpID0+XG4gICAgbGV0IGQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkKTtcbiAgICBEeW5hbWljRXJyb3JIb2xlKGQnLCBlcnIpIHw+IHJld3JhcDtcbiAgfCBJZihkNCwgZDUsIGQ2KSA9PlxuICAgIGxldCBkNCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBsZXQgZDUnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNSk7XG4gICAgbGV0IGQ2JyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDYpO1xuICAgIElmKGQ0JywgZDUnLCBkNicpIHw+IHJld3JhcDtcbiAgfCBUeUFsaWFzKHRwLCB1dCwgZDQpID0+XG4gICAgbGV0IGQ0JyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIFR5QWxpYXModHAsIHV0LCBkNCcpIHw+IHJld3JhcDtcbiAgfCBQYXJlbnMoZDQpID0+XG4gICAgbGV0IGQ0JyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIFBhcmVucyhkNCcpIHw+IHJld3JhcDtcbiAgfCBEZWZlcnJhbChfKSA9PiBkMlxuICB8IERlZmVycmVkQXAoZDMsIGQ0cykgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDRzID0gTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZDRzKTtcbiAgICBEZWZlcnJlZEFwKGQzLCBkNHMpIHw+IHJld3JhcDtcbiAgfCBUeXBBcChkMywgdXQpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgVHlwQXAoZDMsIHV0KSB8PiByZXdyYXA7XG4gIH07XG59XG5cbmFuZCBzdWJzdF92YXJfZW52ID1cbiAgICAobSwgZDE6IERIRXhwLnQsIHg6IFZhci50LCBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50KVxuICAgIDogQ2xvc3VyZUVudmlyb25tZW50LnQgPT4ge1xuICBsZXQgaWQgPSBlbnYgfD4gQ2xvc3VyZUVudmlyb25tZW50LmlkX29mO1xuICBsZXQgbWFwID1cbiAgICBlbnZcbiAgICB8PiBDbG9zdXJlRW52aXJvbm1lbnQubWFwX29mXG4gICAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgICAoKHgnLCBkJzogREhFeHAudCksIG1hcCkgPT4ge1xuICAgICAgICAgICBsZXQgZCcgPVxuICAgICAgICAgICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkJykpIHtcbiAgICAgICAgICAgICAvKiBTdWJzdGl0dXRlIGVhY2ggcHJldmlvdXNseSBzdWJzdGl0dXRlZCBiaW5kaW5nIGludG8gdGhlXG4gICAgICAgICAgICAgICogZml4cG9pbnQuICovXG4gICAgICAgICAgICAgfCBGaXhGKF8pID0+XG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIHw+IEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICAgICAgICAgICAgICAoKHgnJywgZCcnKSwgZCkgPT4gc3Vic3RfdmFyKG0sIGQnJywgeCcnLCBkKSxcbiAgICAgICAgICAgICAgICAgICAgZCcsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfCBfID0+IGQnXG4gICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAvKiBTdWJzdGl0dXRlLiAqL1xuICAgICAgICAgICBsZXQgZCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQnKTtcbiAgICAgICAgICAgRW52aXJvbm1lbnQuZXh0ZW5kKG1hcCwgKHgnLCBkJykpO1xuICAgICAgICAgfSxcbiAgICAgICAgIEVudmlyb25tZW50LmVtcHR5LFxuICAgICAgICk7XG5cbiAgQ2xvc3VyZUVudmlyb25tZW50LndyYXAoaWQsIG1hcCk7XG59XG5cbmFuZCBzdWJzdF92YXJfZmlsdGVyID1cbiAgICAobSwgZDE6IERIRXhwLnQsIHg6IFZhci50LCBmbHQ6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLnQpXG4gICAgOiBUZXJtQmFzZS5TdGVwcGVyRmlsdGVyS2luZC50ID0+IHtcbiAgZmx0IHw+IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLm1hcChzdWJzdF92YXIobSwgZDEsIHgpKTtcbn07XG5cbmxldCBzdWJzdCA9IChtLCBlbnY6IEVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQpOiBESEV4cC50ID0+XG4gIGVudlxuICB8PiBFbnZpcm9ubWVudC5mb2xkbyhcbiAgICAgICAoeGQ6IChWYXIudCwgREhFeHAudCksIGQyKSA9PiB7XG4gICAgICAgICBsZXQgKHgsIGQxKSA9IHhkO1xuICAgICAgICAgc3Vic3RfdmFyKG0sIGQxLCB4LCBkMik7XG4gICAgICAgfSxcbiAgICAgICBkLFxuICAgICApO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0aWNzID0ge1xuICB0ZXJtOiBVRXhwLnQsXG4gIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50LFxuICBlcnJvcl9pZHM6IGxpc3QoSWQudCksXG59O1xuXG5sZXQgc3RhdGljc19vZl90ZXJtID0gKH5zZXR0aW5ncywgdGVybTogVUV4cC50LCBlZGl0b3I6IEVkaXRvci50KTogc3RhdGljcyA9PiB7XG4gIGxldCBpbmZvX21hcCA9XG4gICAgSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncywgQnVpbHRpbnMuY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZXJyb3JfaWRzID1cbiAgICBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoZWRpdG9yLnN0YXRlLm1ldGEudGVybV9yYW5nZXMsIGluZm9fbWFwKTtcbiAge3Rlcm0sIGluZm9fbWFwLCBlcnJvcl9pZHN9O1xufTtcblxubGV0IGVtcHR5X3N0YXRpY3M6IHN0YXRpY3MgPSB7XG4gIHRlcm06IFVFeHAue2lkczogW0lkLmludmFsaWRdLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBUdXBsZShbXSl9LFxuICBpbmZvX21hcDogSWQuTWFwLmVtcHR5LFxuICBlcnJvcl9pZHM6IFtdLFxufTtcblxubW9kdWxlIEtleSA9IHtcbiAgaW5jbHVkZSBTdHJpbmc7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gc3RyaW5nO1xufTtcblxubW9kdWxlIE0gPSBVdGlsLk1hcFV0aWwuTWFrZShLZXkpO1xuaW5jbHVkZSBNO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBNLnQoc3RhdGljcyk7XG5cbmxldCBtayA9IChkczogbGlzdCgoS2V5LnQsIHN0YXRpY3MpKSk6IHQgPT5cbiAgZHMgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxIHw+IG1hcChGdW4uaWQpO1xuXG5sZXQgbG9va3VwID0gKHJlc3VsdHM6IHQsIGtleTogS2V5LnQpID0+XG4gIHN3aXRjaCAoZmluZF9vcHQoa2V5LCByZXN1bHRzKSkge1xuICB8IE5vbmUgPT4gZW1wdHlfc3RhdGljc1xuICB8IFNvbWUoc3RhdGljcykgPT4gc3RhdGljc1xuICB9O1xuIiwib3BlbiBUcmFuc2l0aW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXAgPSB7XG4gIGQ6IERIRXhwLnQsIC8vIHRlY2huaWNhbGx5IGNhbiBiZSBjYWxjdWxhdGVkIGZyb20gZF9sb2MgYW5kIGN0eFxuICBzdGF0ZTogRXZhbHVhdG9yU3RhdGUudCxcbiAgZF9sb2M6IERIRXhwLnQsIC8vIHRoZSBleHByZXNzaW9uIGF0IHRoZSBsb2NhdGlvbiBnaXZlbiBieSBjdHhcbiAgZF9sb2MnOiBESEV4cC50LFxuICBjdHg6IEV2YWxDdHgudCxcbiAga25kOiBzdGVwX2tpbmQsXG59O1xuXG5tb2R1bGUgRXZhbE9iaiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCwgLy8gdGVjaG5pY2FsbHkgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBjdHhcbiAgICBkX2xvYzogREhFeHAudCxcbiAgICBjdHg6IEV2YWxDdHgudCxcbiAgICBrbmQ6IHN0ZXBfa2luZCxcbiAgfTtcblxuICBsZXQgbWsgPSAoY3R4LCBlbnYsIGRfbG9jLCBrbmQpID0+IHtjdHgsIGVudiwgZF9sb2MsIGtuZH07XG5cbiAgbGV0IGdldF9jdHggPSAob2JqOiB0KTogRXZhbEN0eC50ID0+IHtcbiAgICBvYmouY3R4O1xuICB9O1xuICBsZXQgZ2V0X2tpbmQgPSAob2JqOiB0KTogc3RlcF9raW5kID0+IG9iai5rbmQ7XG5cbiAgbGV0IHdyYXAgPSAoZjogRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgb2JqOiB0KSA9PiB7XG4gICAgLi4ub2JqLFxuICAgIGN0eDogb2JqLmN0eCB8PiBmLFxuICB9O1xufTtcblxubW9kdWxlIERlY29tcG9zZSA9IHtcbiAgbW9kdWxlIFJlc3VsdCA9IHtcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJbmRldFxuICAgICAgfCBCb3hlZFZhbHVlXG4gICAgICB8IFN0ZXAobGlzdChFdmFsT2JqLnQpKTtcblxuICAgIGxldCB1bmJveCA9IChyOiB0KTogbGlzdChFdmFsT2JqLnQpID0+IHtcbiAgICAgIHN3aXRjaCAocikge1xuICAgICAgfCBJbmRldFxuICAgICAgfCBCb3hlZFZhbHVlID0+IFtdXG4gICAgICB8IFN0ZXAob2JqcykgPT4gb2Jqc1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBEZWNvbXBvc2VFVk1vZGU6IHtcbiAgICBpbmNsdWRlXG4gICAgICBFVl9NT0RFIHdpdGhcbiAgICAgICAgdHlwZSByZXN1bHQgPSBSZXN1bHQudCBhbmQgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgfSA9IHtcbiAgICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICAgIHR5cGUgcmVxdWlyZW1lbnQoJ2EpID0gKFJlc3VsdC50LCAnYSk7XG4gICAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9ICgnYiwgUmVzdWx0LnQsIENsb3N1cmVFbnZpcm9ubWVudC50LCAnYSk7XG4gICAgdHlwZSByZXN1bHQgPSBSZXN1bHQudDtcblxuICAgIGxldCByZXFfdmFsdWUgPSAoY29udCwgd3IsIGQpID0+IHtcbiAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgfCBSZXN1bHQuSW5kZXQgPT4gKFJlc3VsdC5JbmRldCwgZClcbiAgICAgIHwgUmVzdWx0LkJveGVkVmFsdWUgPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBkKVxuICAgICAgfCBSZXN1bHQuU3RlcChvYmpzKSA9PiAoXG4gICAgICAgICAgUmVzdWx0LlN0ZXAoTGlzdC5tYXAoRXZhbE9iai53cmFwKHdyKSwgb2JqcykpLFxuICAgICAgICAgIGQsXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCAoJiYpOiAoUmVzdWx0LnQsIFJlc3VsdC50KSA9PiBSZXN1bHQudCA9XG4gICAgICAodSwgdikgPT5cbiAgICAgICAgc3dpdGNoICh1LCB2KSB7XG4gICAgICAgIHwgKFN0ZXAoc3MxKSwgU3RlcChzczIpKSA9PiBTdGVwKHNzMSBAIHNzMilcbiAgICAgICAgfCAoU3RlcChzcyksIF8pXG4gICAgICAgIHwgKF8sIFN0ZXAoc3MpKSA9PiBTdGVwKHNzKVxuICAgICAgICB8IChJbmRldCwgQm94ZWRWYWx1ZSlcbiAgICAgICAgfCAoQm94ZWRWYWx1ZSwgSW5kZXQpXG4gICAgICAgIHwgKEluZGV0LCBJbmRldCkgPT4gSW5kZXRcbiAgICAgICAgfCAoQm94ZWRWYWx1ZSwgQm94ZWRWYWx1ZSkgPT4gQm94ZWRWYWx1ZVxuICAgICAgICB9O1xuXG4gICAgbGV0IHJlYyByZXFfYWxsX3ZhbHVlJyA9IChjb250LCB3ciwgZHMnKSA9PlxuICAgICAgZnVuXG4gICAgICB8IFtdID0+IChSZXN1bHQuQm94ZWRWYWx1ZSwgW10pXG4gICAgICB8IFtkLCAuLi5kc10gPT4ge1xuICAgICAgICAgIGxldCAocjEsIHYpID0gcmVxX3ZhbHVlKGNvbnQsIHdyKF8sIChkcycsIGRzKSksIGQpO1xuICAgICAgICAgIGxldCAocjIsIHZzKSA9IHJlcV9hbGxfdmFsdWUnKGNvbnQsIHdyLCBbZCwgLi4uZHMnXSwgZHMpO1xuICAgICAgICAgIChyMSAmJiByMiwgW3YsIC4uLnZzXSk7XG4gICAgICAgIH07XG4gICAgbGV0IHJlcV9hbGxfdmFsdWUgPSAoY29udCwgd3IsIGRzKSA9PiB7XG4gICAgICByZXFfYWxsX3ZhbHVlJyhjb250LCB3ciwgW10sIGRzKTtcbiAgICB9O1xuXG4gICAgbGV0IHJlcV9maW5hbCA9IChjb250LCB3ciwgZCkgPT4ge1xuICAgICAgKFxuICAgICAgICBzd2l0Y2ggKGNvbnQoZCkpIHtcbiAgICAgICAgfCBSZXN1bHQuSW5kZXQgPT4gUmVzdWx0LkJveGVkVmFsdWVcbiAgICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICB8IFJlc3VsdC5TdGVwKG9ianMpID0+XG4gICAgICAgICAgUmVzdWx0LlN0ZXAoTGlzdC5tYXAoRXZhbE9iai53cmFwKHdyKSwgb2JqcykpXG4gICAgICAgIH0sXG4gICAgICAgIGQsXG4gICAgICApO1xuICAgIH07XG5cbiAgICBsZXQgcmVxX2ZpbmFsX29yX3ZhbHVlID0gKGNvbnQsIHdyLCBkKSA9PiB7XG4gICAgICBzd2l0Y2ggKGNvbnQoZCkpIHtcbiAgICAgIHwgUmVzdWx0LkluZGV0ID0+IChSZXN1bHQuQm94ZWRWYWx1ZSwgKGQsIGZhbHNlKSlcbiAgICAgIHwgUmVzdWx0LkJveGVkVmFsdWUgPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCAoZCwgdHJ1ZSkpXG4gICAgICB8IFJlc3VsdC5TdGVwKG9ianMpID0+IChcbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSksXG4gICAgICAgICAgKGQsIGZhbHNlKSxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHJlYyByZXFfYWxsX2ZpbmFsJyA9IChjb250LCB3ciwgZHMnKSA9PlxuICAgICAgZnVuXG4gICAgICB8IFtdID0+IChSZXN1bHQuQm94ZWRWYWx1ZSwgW10pXG4gICAgICB8IFtkLCAuLi5kc10gPT4ge1xuICAgICAgICAgIGxldCAocjEsIHYpID0gcmVxX2ZpbmFsKGNvbnQsIHdyKF8sIChkcycsIGRzKSksIGQpO1xuICAgICAgICAgIGxldCAocjIsIHZzKSA9IHJlcV9hbGxfZmluYWwnKGNvbnQsIHdyLCBbZCwgLi4uZHMnXSwgZHMpO1xuICAgICAgICAgIChyMSAmJiByMiwgW3YsIC4uLnZzXSk7XG4gICAgICAgIH07XG5cbiAgICBsZXQgcmVxX2FsbF9maW5hbCA9IChjb250LCB3ciwgZHMpID0+IHtcbiAgICAgIHJlcV9hbGxfZmluYWwnKGNvbnQsIHdyLCBbXSwgZHMpO1xuICAgIH07XG5cbiAgICBsZXQgKGxldC4pOiAocmVxdWlyZW1lbnRzKCdhLCBESEV4cC50KSwgJ2EgPT4gcnVsZSkgPT4gcmVzdWx0ID1cbiAgICAgIChycSwgcmwpID0+XG4gICAgICAgIHN3aXRjaCAocnEpIHtcbiAgICAgICAgfCAoXywgUmVzdWx0LkluZGV0LCBfLCBfKSA9PiBSZXN1bHQuSW5kZXRcbiAgICAgICAgfCAodW5kbywgUmVzdWx0LkJveGVkVmFsdWUsIGVudiwgdikgPT5cbiAgICAgICAgICBzd2l0Y2ggKHJsKHYpKSB7XG4gICAgICAgICAgfCBDb25zdHJ1Y3RvciA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICAgIHwgSW5kZXQgPT4gUmVzdWx0LkluZGV0XG4gICAgICAgICAgfCBTdGVwKHMpID0+IFJlc3VsdC5TdGVwKFtFdmFsT2JqLm1rKE1hcmssIGVudiwgdW5kbywgcy5raW5kKV0pXG4gICAgICAgICAgLy8gVE9ETzogQWN0dWFsbHkgc2hvdyB0aGVzZSBleGNlcHRpb25zIHRvIHRoZSB1c2VyIVxuICAgICAgICAgIHwgZXhjZXB0aW9uIChFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oXykpID0+IFJlc3VsdC5JbmRldFxuICAgICAgICAgIH1cbiAgICAgICAgfCAoXywgUmVzdWx0LlN0ZXAoXykgYXMgciwgXywgXykgPT4gclxuICAgICAgICB9O1xuXG4gICAgbGV0IChhbmQuKTpcbiAgICAgIChyZXF1aXJlbWVudHMoJ2EsICdjID0+ICdiKSwgcmVxdWlyZW1lbnQoJ2MpKSA9PlxuICAgICAgcmVxdWlyZW1lbnRzKCgnYSwgJ2MpLCAnYikgPVxuICAgICAgKCh1LCByMSwgZW52LCB2MSksIChyMiwgdjIpKSA9PiAodSh2MiksIHIxICYmIHIyLCBlbnYsICh2MSwgdjIpKTtcblxuICAgIGxldCBvdGhlcndpc2UgPSAoZW52LCBvKSA9PiAobywgUmVzdWx0LkJveGVkVmFsdWUsIGVudiwgKCkpO1xuICAgIGxldCB1cGRhdGVfdGVzdCA9IChzdGF0ZSwgaWQsIHYpID0+XG4gICAgICBzdGF0ZSA6PSBFdmFsdWF0b3JTdGF0ZS5hZGRfdGVzdChzdGF0ZV4sIGlkLCB2KTtcbiAgfTtcblxuICBtb2R1bGUgRGVjb21wID0gVHJhbnNpdGlvbihEZWNvbXBvc2VFVk1vZGUpO1xuICBsZXQgcmVjIGRlY29tcG9zZSA9IChzdGF0ZSwgZW52LCBleHApID0+IHtcbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBESEV4cC51bndyYXAoZXhwKTtcbiAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICB8IERIRXhwLkZpbHRlcihmbHQsIGQxKSA9PlxuICAgICAgRGVjb21wb3NlRVZNb2RlLihcbiAgICAgICAge1xuICAgICAgICAgIGxldC4gXyA9XG4gICAgICAgICAgICBvdGhlcndpc2UoZW52LCAoZDEpID0+IChGaWx0ZXIoZmx0LCBkMSkgfD4gcmV3cmFwOiBESEV4cC50KSlcbiAgICAgICAgICBhbmQuIGQxID1cbiAgICAgICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICAgICAgZGVjb21wb3NlKHN0YXRlLCBlbnYpLFxuICAgICAgICAgICAgICBkMSA9PlxuICAgICAgICAgICAgICAgIFRlcm0oe3Rlcm06IEZpbHRlcihmbHQsIGQxKSwgaWRzOiBbREhFeHAucmVwX2lkKGV4cCldfSksXG4gICAgICAgICAgICAgIGQxLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBTdGVwKHtcbiAgICAgICAgICAgIGV4cHI6IGQxLFxuICAgICAgICAgICAgc3RhdGVfdXBkYXRlOiAoKSA9PiAoKSxcbiAgICAgICAgICAgIGtpbmQ6IENvbXBsZXRlRmlsdGVyLFxuICAgICAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB8IF8gPT5cbiAgICAgIHN3aXRjaCAoRGVjb21wLnRyYW5zaXRpb24oZGVjb21wb3NlLCBzdGF0ZSwgZW52LCBleHApKSB7XG4gICAgICB8IHIgPT4gclxuICAgICAgfCBleGNlcHRpb24gKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihfKSkgPT4gUmVzdWx0LkluZGV0XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn07XG5cbm1vZHVsZSBUYWtlU3RlcCA9IHtcbiAgbW9kdWxlIFRha2VTdGVwRVZNb2RlOiB7XG4gICAgaW5jbHVkZVxuICAgICAgRVZfTU9ERSB3aXRoXG4gICAgICAgIHR5cGUgcmVzdWx0ID0gb3B0aW9uKERIRXhwLnQpIGFuZCB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICB9ID0ge1xuICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gICAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAnYTtcbiAgICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gJ2E7XG4gICAgdHlwZSByZXN1bHQgPSBvcHRpb24oREhFeHAudCk7XG5cbiAgICAvLyBBc3N1bWUgdGhhdCBldmVyeXRoaW5nIGlzIGVpdGhlciB2YWx1ZSBvciBmaW5hbCBhcyByZXF1aXJlZC5cbiAgICBsZXQgcmVxX3ZhbHVlID0gKF8sIF8sIGQpID0+IGQ7XG4gICAgbGV0IHJlcV9hbGxfdmFsdWUgPSAoXywgXywgZHMpID0+IGRzO1xuICAgIGxldCByZXFfZmluYWwgPSAoXywgXywgZCkgPT4gZDtcbiAgICBsZXQgcmVxX2FsbF9maW5hbCA9IChfLCBfLCBkcykgPT4gZHM7XG5cbiAgICBsZXQgcmVxX2ZpbmFsX29yX3ZhbHVlID0gKF8sIF8sIGQpID0+IChkLCB0cnVlKTtcblxuICAgIGxldCAobGV0LikgPSAocnE6IHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksIHJsOiAnYSA9PiBydWxlKSA9PlxuICAgICAgc3dpdGNoIChybChycSkpIHtcbiAgICAgIHwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBffSkgPT5cbiAgICAgICAgc3RhdGVfdXBkYXRlKCk7XG4gICAgICAgIFNvbWUoZXhwcik7XG4gICAgICB8IENvbnN0cnVjdG9yXG4gICAgICB8IEluZGV0ID0+IE5vbmVcbiAgICAgIH07XG5cbiAgICBsZXQgKGFuZC4pID0gKHgxLCB4MikgPT4gKHgxLCB4Mik7XG5cbiAgICBsZXQgb3RoZXJ3aXNlID0gKF8sIF8pID0+ICgpO1xuXG4gICAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuICB9O1xuXG4gIG1vZHVsZSBUYWtlU3RlcEVWID0gVHJhbnNpdGlvbihUYWtlU3RlcEVWTW9kZSk7XG5cbiAgbGV0IHRha2Vfc3RlcCA9IChzdGF0ZSwgZW52LCBkKSA9PlxuICAgIFRha2VTdGVwRVYudHJhbnNpdGlvbigoXywgXywgXykgPT4gTm9uZSwgc3RhdGUsIGVudiwgZCk7XG59O1xuXG5sZXQgdGFrZV9zdGVwID0gVGFrZVN0ZXAudGFrZV9zdGVwO1xuXG5sZXQgZGVjb21wb3NlID0gKGQ6IERIRXhwLnQsIGVzOiBFdmFsdWF0b3JTdGF0ZS50KSA9PiB7XG4gIGxldCBlbnYgPSBDbG9zdXJlRW52aXJvbm1lbnQub2ZfZW52aXJvbm1lbnQoQnVpbHRpbnMuZW52X2luaXQpO1xuICBsZXQgcnMgPSBEZWNvbXBvc2UuZGVjb21wb3NlKHJlZihlcyksIGVudiwgZCk7XG4gIERlY29tcG9zZS5SZXN1bHQudW5ib3gocnMpO1xufTtcblxubGV0IGV2YWx1YXRlX3dpdGhfaGlzdG9yeSA9IGQgPT4ge1xuICBsZXQgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUuaW5pdCk7XG4gIGxldCByZWMgZ28gPSBkID0+XG4gICAgc3dpdGNoIChkZWNvbXBvc2UoZCwgc3RhdGVeKSkge1xuICAgIHwgW10gPT4gW11cbiAgICB8IFt4LCAuLi5fXSA9PlxuICAgICAgc3dpdGNoICh0YWtlX3N0ZXAoc3RhdGUsIHguZW52LCB4LmRfbG9jKSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUoZCkgPT5cbiAgICAgICAgbGV0IG5leHQgPSBFdmFsQ3R4LmNvbXBvc2UoeC5jdHgsIGQpO1xuICAgICAgICBbbmV4dCwgLi4uZ28obmV4dCldO1xuICAgICAgfVxuICAgIH07XG4gIGdvKGQpO1xufTtcbiIsInR5cGUgdCA9IGxpc3QoVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQuZmlsdGVyKTtcbmxldCBleHRlbmRzID0gKGZsdCwgZW52KSA9PiBbZmx0LCAuLi5lbnZdO1xuIiwibGV0IHJlYyBtYXRjaGVzX2V4cCA9XG4gICAgICAgIChlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCBkOiBESEV4cC50LCBmOiBESEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoREhFeHAudGVybV9vZihkKSwgREhFeHAudGVybV9vZihmKSkge1xuICB8IChQYXJlbnMoeCksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgeCwgZilcbiAgfCAoXywgUGFyZW5zKHgpKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIHgpXG4gIHwgKENvbnN0cnVjdG9yKFwiJGVcIiksIF8pID0+IGZhaWx3aXRoKFwiJGUgaW4gbWF0Y2hlZCBleHByZXNzaW9uXCIpXG4gIHwgKENvbnN0cnVjdG9yKFwiJHZcIiksIF8pID0+IGZhaWx3aXRoKFwiJHYgaW4gbWF0Y2hlZCBleHByZXNzaW9uXCIpXG4gIHwgKF8sIENvbnN0cnVjdG9yKFwiJHZcIikpID0+XG4gICAgc3dpdGNoIChWYWx1ZUNoZWNrZXIuY2hlY2tfdmFsdWUoKCksIGVudiwgZCkpIHtcbiAgICB8IEluZGV0XG4gICAgfCBWYWx1ZSA9PiB0cnVlXG4gICAgfCBFeHByID0+IGZhbHNlXG4gICAgfVxuXG4gIHwgKF8sIEVtcHR5SG9sZSlcbiAgfCAoXywgQ29uc3RydWN0b3IoXCIkZVwiKSkgPT4gdHJ1ZVxuXG4gIHwgKF8sIENsb3N1cmUoZW52LCBmKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChfLCBDYXN0KGYsIF8sIF8pKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKF8sIEZhaWxlZENhc3QoZiwgXywgXykpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcblxuICB8IChDbG9zdXJlKGVudiwgZCksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoQ2FzdChkLCBfLCBfKSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChGYWlsZWRDYXN0KGQsIF8sIF8pLCBfKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG5cbiAgfCAoVmFyKGR4KSwgVmFyKGZ4KSkgPT4gZHggPT0gZnhcbiAgfCAoVmFyKGR4KSwgXykgPT5cbiAgICBzd2l0Y2ggKENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCBkeCkpIHtcbiAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICB8IFNvbWUoZCkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICAgIH1cbiAgfCAoXywgVmFyKGZ4KSkgPT5cbiAgICBzd2l0Y2ggKENsb3N1cmVFbnZpcm9ubWVudC5sb29rdXAoZW52LCBmeCkpIHtcbiAgICB8IFNvbWUoZikgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIH1cblxuICB8IChFbXB0eUhvbGUsIF8pID0+IGZhbHNlXG5cbiAgfCAoRGVmZXJyYWwoeCksIERlZmVycmFsKHkpKSA9PiB4ID09IHlcbiAgfCAoRGVmZXJyYWwoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoRmlsdGVyKGRmLCBkZCksIEZpbHRlcihmZiwgZmQpKSA9PlxuICAgIFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLmZhc3RfZXF1YWwoZGYsIGZmKSAmJiBtYXRjaGVzX2V4cChlbnYsIGRkLCBmZClcbiAgfCAoRmlsdGVyKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJvb2woZHYpLCBCb29sKGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoQm9vbChfKSwgXykgPT4gZmFsc2VcblxuICB8IChJbnQoZHYpLCBJbnQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChJbnQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoRmxvYXQoZHYpLCBGbG9hdChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEZsb2F0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFN0cmluZyhkdiksIFN0cmluZyhmdikpID0+IGR2ID09IGZ2XG4gIHwgKFN0cmluZyhfKSwgXykgPT4gZmFsc2VcblxuICB8IChDb25zdHJ1Y3RvcihfKSwgQXAoXywgZDEsIGQyKSkgPT5cbiAgICBzd2l0Y2ggKERIRXhwLnRlcm1fb2YoZDEpLCBESEV4cC50ZXJtX29mKGQyKSkge1xuICAgIHwgKENvbnN0cnVjdG9yKFwifk1WYWxcIiksIFR1cGxlKFtdKSkgPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZVxuICAgIH1cbiAgfCAoQ29uc3RydWN0b3IoZHQpLCBDb25zdHJ1Y3RvcihmdCkpID0+IGR0ID09IGZ0XG4gIHwgKENvbnN0cnVjdG9yKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEJ1aWx0aW5GdW4oZG4pLCBCdWlsdGluRnVuKGZuKSkgPT4gZG4gPT0gZm5cbiAgfCAoQnVpbHRpbkZ1bihfKSwgXykgPT4gZmFsc2VcblxuICB8IChUeXBGdW4ocGF0MSwgZDEsIHMxKSwgVHlwRnVuKHBhdDIsIGQyLCBzMikpID0+XG4gICAgczEgPT0gczIgJiYgbWF0Y2hlc191dHBhdChwYXQxLCBwYXQyKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBkMilcbiAgfCAoVHlwRnVuKF8pLCBfKSA9PiBmYWxzZVxuXG4gIC8vIE5vdCBzdXJlIGlmIHdlIHNob3VsZCBiZSBjaGVja2luZyBmdW5jdGlvbnMgZm9yIGNsb3N1cmVzIGhlcmVcbiAgfCAoRnVuKGRwMSwgZDEsIF8sIGRuYW1lMSksIEZ1bihmcDEsIGYxLCBfLCBmbmFtZTEpKSA9PlxuICAgIG1hdGNoZXNfcGF0KGRwMSwgZnAxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgZG5hbWUxID09IGZuYW1lMVxuICB8IChGdW4oXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoRml4RihkcCwgZDEsIF8pLCBGaXhGKGZwLCBmMSwgXykpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAsIGZwKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgfCAoRml4RihfKSwgXykgPT4gZmFsc2VcblxuICB8IChMZXQoZHAsIGQxLCBkMiksIExldChmcCwgZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkcCwgZnApXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKExldChfKSwgXykgPT4gZmFsc2VcblxuICB8IChUeXBBcChkMSwgdDEpLCBUeXBBcChkMiwgdDIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGQyKSAmJiBtYXRjaGVzX3R5cCh0MSwgdDIpXG4gIHwgKFR5cEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIC8vIFRPRE86IGRvIHdlIHdhbnQgZih4KSB0byBtYXRjaCB4IHw+IGYgPz8/XG4gIHwgKEFwKF8sIGQxLCBkMiksIEFwKF8sIGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChBcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChEZWZlcnJlZEFwKGQxLCBkMiksIERlZmVycmVkQXAoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgICAgIHRydWUsXG4gICAgICAgICBkMixcbiAgICAgICAgIGYyLFxuICAgICAgIClcbiAgfCAoRGVmZXJyZWRBcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChJZihkMSwgZDIsIGQzKSwgSWYoZjEsIGYyLCBmMykpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gICAgJiYgbWF0Y2hlc19leHAoZW52LCBkMywgZjMpXG4gIHwgKElmKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFNlcShkMSwgZDIpLCBTZXEoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKFNlcShfKSwgXykgPT4gZmFsc2VcblxuICB8IChUZXN0KGQyKSwgVGVzdChmMikpID0+IG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChUZXN0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKENvbnMoZDEsIGQyKSwgQ29ucyhmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoQ29ucyhfKSwgXykgPT4gZmFsc2VcblxuICB8IChMaXN0TGl0KGR2KSwgTGlzdExpdChmdikpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgZCwgZikgPT4gYWNjICYmIG1hdGNoZXNfZXhwKGVudiwgZCwgZiksXG4gICAgICB0cnVlLFxuICAgICAgZHYsXG4gICAgICBmdixcbiAgICApXG4gIHwgKExpc3RMaXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoVHVwbGUoZHYpLCBUdXBsZShmdikpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgZCwgZikgPT4gYWNjICYmIG1hdGNoZXNfZXhwKGVudiwgZCwgZiksXG4gICAgICB0cnVlLFxuICAgICAgZHYsXG4gICAgICBmdixcbiAgICApXG4gIHwgKFR1cGxlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFVuT3AoZF9vcCwgZDEpLCBVbk9wKGZfb3AsIGYxKSkgPT5cbiAgICBkX29wID09IGZfb3AgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpXG4gIHwgKFVuT3AoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQmluT3AoZF9vcCwgZDEsIGQyKSwgQmluT3AoZl9vcCwgZjEsIGYyKSkgPT5cbiAgICBkX29wID09IGZfb3AgJiYgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChCaW5PcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChMaXN0Q29uY2F0KGQxLCBkMiksIExpc3RDb25jYXQoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKExpc3RDb25jYXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoTWF0Y2goZHNjcnV0LCBkcnVsZSksIE1hdGNoKGZzY3J1dCwgZnJ1bGUpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZHNjcnV0LCBmc2NydXQpXG4gICAgJiYgKFxuICAgICAgc3dpdGNoIChcbiAgICAgICAgTGlzdC5mb3JfYWxsMihcbiAgICAgICAgICAoKGRrLCBkdiksIChmaywgZnYpKSA9PlxuICAgICAgICAgICAgbWF0Y2hlc19wYXQoZGssIGZrKSAmJiBtYXRjaGVzX2V4cChlbnYsIGR2LCBmdiksXG4gICAgICAgICAgZHJ1bGUsXG4gICAgICAgICAgZnJ1bGUsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IGZhbHNlXG4gICAgICB8IHJlcyA9PiByZXNcbiAgICAgIH1cbiAgICApXG4gIHwgKE1hdGNoKF8pLCBfKSA9PiBmYWxzZVxuICAvLyBUT0RPOiBzaG91bGQgdGhlc2Ugbm90IGRlZmF1bHQgdG8gZmFsc2U/XG4gIHwgKE11bHRpSG9sZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoSW52YWxpZChfKSwgXykgPT4gZmFsc2VcbiAgfCAoRHluYW1pY0Vycm9ySG9sZShfKSwgXykgPT4gZmFsc2VcblxuICB8IChUeUFsaWFzKGR0cCwgZHV0LCBkZCksIFR5QWxpYXMoZnRwLCBmdXQsIGZkKSkgPT5cbiAgICBkdHAgPT0gZnRwICYmIGR1dCA9PSBmdXQgJiYgbWF0Y2hlc19leHAoZW52LCBkZCwgZmQpXG4gIHwgKFR5QWxpYXMoXyksIF8pID0+IGZhbHNlXG4gIH07XG59XG5hbmQgbWF0Y2hlc19wYXQgPSAoZDogUGF0LnQsIGY6IFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoZCB8PiBESFBhdC50ZXJtX29mLCBmIHw+IERIUGF0LnRlcm1fb2YpIHtcbiAgLy8gTWF0dDogSSdtIG5vdCBzdXJlIHdoYXQgdGhlIGV4YWN0IHNlbWFudGljcyBvZiBtYXRjaGluZyBzaG91bGQgYmUgaGVyZS5cbiAgfCAoUGFyZW5zKHgpLCBfKSA9PiBtYXRjaGVzX3BhdCh4LCBmKVxuICB8IChfLCBQYXJlbnMoeCkpID0+IG1hdGNoZXNfcGF0KGQsIHgpXG4gIHwgKENhc3QoeCwgXywgXyksIF8pID0+IG1hdGNoZXNfcGF0KHgsIGYpXG4gIHwgKF8sIENhc3QoeCwgXywgXykpID0+IG1hdGNoZXNfcGF0KGQsIHgpXG4gIHwgKF8sIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICB8IChNdWx0aUhvbGUoXyksIE11bHRpSG9sZShfKSkgPT4gdHJ1ZVxuICB8IChNdWx0aUhvbGUoXyksIF8pID0+IGZhbHNlXG4gIHwgKFdpbGQsIFdpbGQpID0+IHRydWVcbiAgfCAoV2lsZCwgXykgPT4gZmFsc2VcbiAgfCAoSW50KGR2KSwgSW50KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoSW50KF8pLCBfKSA9PiBmYWxzZVxuICB8IChGbG9hdChkdiksIEZsb2F0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoRmxvYXQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEJvb2woZHYpLCBCb29sKGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoQm9vbChfKSwgXykgPT4gZmFsc2VcbiAgfCAoU3RyaW5nKGR2KSwgU3RyaW5nKGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoU3RyaW5nKF8pLCBfKSA9PiBmYWxzZVxuICB8IChMaXN0TGl0KGRsKSwgTGlzdExpdChmbCkpID0+XG4gICAgc3dpdGNoIChcbiAgICAgIExpc3QuZm9sZF9sZWZ0MigocmVzLCBkLCBmKSA9PiByZXMgJiYgbWF0Y2hlc19wYXQoZCwgZiksIHRydWUsIGRsLCBmbClcbiAgICApIHtcbiAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICB8IHJlcyA9PiByZXNcbiAgICB9XG4gIHwgKExpc3RMaXQoXyksIF8pID0+IGZhbHNlXG4gIHwgKENvbnN0cnVjdG9yKGR0KSwgQ29uc3RydWN0b3IoZnQpKSA9PiBkdCA9PSBmdFxuICB8IChDb25zdHJ1Y3RvcihfKSwgXykgPT4gZmFsc2VcbiAgfCAoVmFyKGR4KSwgVmFyKGZ4KSkgPT4gZHggPT0gZnhcbiAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICB8IChUdXBsZShkbCksIFR1cGxlKGZsKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5mb2xkX2xlZnQyKChyZXMsIGQsIGYpID0+IHJlcyAmJiBtYXRjaGVzX3BhdChkLCBmKSwgdHJ1ZSwgZGwsIGZsKVxuICAgICkge1xuICAgIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBmYWxzZVxuICAgIHwgcmVzID0+IHJlc1xuICAgIH1cbiAgfCAoVHVwbGUoXyksIF8pID0+IGZhbHNlXG4gIHwgKEFwKGQxLCBkMiksIEFwKGYxLCBmMikpID0+IG1hdGNoZXNfcGF0KGQxLCBmMSkgJiYgbWF0Y2hlc19wYXQoZDIsIGYyKVxuICB8IChBcChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQ29ucyhkMSwgZDIpLCBDb25zKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19wYXQoZDEsIGYxKSAmJiBtYXRjaGVzX3BhdChkMiwgZjIpXG4gIHwgKENvbnMoXyksIF8pID0+IGZhbHNlXG4gIHwgKEVtcHR5SG9sZSwgXykgPT4gZmFsc2VcbiAgfCAoSW52YWxpZChfKSwgXykgPT4gZmFsc2VcbiAgfTtcbn1cbmFuZCBtYXRjaGVzX3R5cCA9IChkOiBUeXAudCwgZjogVHlwLnQpID0+IHtcbiAgVHlwLmVxKGQsIGYpO1xufVxuYW5kIG1hdGNoZXNfcnVsID0gKGVudiwgKGRwLCBkKSwgKGZwLCBmKSkgPT4ge1xuICBtYXRjaGVzX3BhdChkcCwgZnApICYmIG1hdGNoZXNfZXhwKGVudiwgZCwgZik7XG59XG5hbmQgbWF0Y2hlc191dHBhdCA9IChkOiBUUGF0LnQsIGY6IFRQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKGQudGVybSwgZi50ZXJtKSB7XG4gIHwgKEludmFsaWQoXyksIF8pID0+IGZhbHNlXG4gIHwgKF8sIEludmFsaWQoXykpID0+IGZhbHNlXG4gIHwgKF8sIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICB8IChNdWx0aUhvbGUobDEpLCBNdWx0aUhvbGUobDIpKSA9PiBMaXN0Lmxlbmd0aChsMSkgPT0gTGlzdC5sZW5ndGgobDIpIC8qIFRPRE86IHByb2JhYmx5IHNob3VsZCBkZWZpbmUgYSBtYXRjaGVzX2FueSBhbmQgcmVjdXJzZSBpbiBoZXJlLi4uPyAqL1xuICB8IChWYXIodDEpLCBWYXIodDIpKSA9PiB0MSA9PSB0MlxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCBtYXRjaGVzID1cbiAgICAoXG4gICAgICB+ZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCxcbiAgICAgIH5leHA6IERIRXhwLnQsXG4gICAgICB+Zmx0OiBUZXJtQmFzZS5TdGVwcGVyRmlsdGVyS2luZC5maWx0ZXIsXG4gICAgKVxuICAgIDogb3B0aW9uKEZpbHRlckFjdGlvbi50KSA9PlxuICBpZiAobWF0Y2hlc19leHAoZW52LCBleHAsIGZsdC5wYXQpKSB7XG4gICAgU29tZShmbHQuYWN0KTtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xuXG5sZXQgbWF0Y2hlcyA9XG4gICAgKH5lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCB+ZXhwOiBESEV4cC50LCB+YWN0OiBGaWx0ZXJBY3Rpb24udCwgZmx0X2VudilcbiAgICA6IChGaWx0ZXJBY3Rpb24udCwgaW50KSA9PiB7XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aChmbHRfZW52KTtcbiAgbGV0IHJlYyBtYXRjaGVzJyA9ICh+ZW52LCB+ZXhwLCB+YWN0LCBmbHRfZW52LCBpZHgpID0+IHtcbiAgICBzd2l0Y2ggKGZsdF9lbnYpIHtcbiAgICB8IFtdID0+IChhY3QsIGlkeClcbiAgICB8IFtoZCwgLi4udGxdID0+XG4gICAgICBzd2l0Y2ggKG1hdGNoZXMofmVudiwgfmV4cCwgfmZsdD1oZCkpIHtcbiAgICAgIHwgU29tZShhY3QpID0+IChhY3QsIGlkeClcbiAgICAgIHwgTm9uZSA9PiBtYXRjaGVzJyh+ZW52LCB+ZXhwLCB+YWN0LCB0bCwgaWR4ICsgMSlcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuICBsZXQgKGFjdCwgaWR4KSA9IG1hdGNoZXMnKH5lbnYsIH5leHAsIH5hY3QsIGZsdF9lbnYsIDApO1xuICAoYWN0LCBsZW4gLSBpZHgpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEV2YWx1YXRvclN0ZXA7XG5vcGVuIFRyYW5zaXRpb247XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5leGNlcHRpb24gRXhjZXB0aW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXBwZXJfc3RhdGUgPVxuICB8IFN0ZXBQZW5kaW5nKGludClcbiAgfCBTdGVwcGVyUmVhZHlcbiAgfCBTdGVwcGVyRG9uZVxuICB8IFN0ZXBUaW1lb3V0KEV2YWxPYmoudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYSA9IChDYWNoZWRTdGF0aWNzLnN0YXRpY3MsIEVkaXRvci50LCBFdmFsdWF0b3JTdGF0ZS50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBoaXN0b3J5ID0gQWJhLnQoYSwgc3RlcCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgaGlzdG9yeSxcbiAgbmV4dF9vcHRpb25zOiBsaXN0KEV2YWxPYmoudCksXG4gIHN0ZXBwZXJfc3RhdGUsXG59O1xuXG5sZXQgcmVjIG1hdGNoZXMgPVxuICAgICAgICAoXG4gICAgICAgICAgZW52OiBDbG9zdXJlRW52aXJvbm1lbnQudCxcbiAgICAgICAgICBmbHQ6IEZpbHRlckVudmlyb25tZW50LnQsXG4gICAgICAgICAgY3R4OiBFdmFsQ3R4LnQsXG4gICAgICAgICAgZXhwOiBESEV4cC50LFxuICAgICAgICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gICAgICAgICAgaWR4OiBpbnQsXG4gICAgICAgIClcbiAgICAgICAgOiAoRmlsdGVyQWN0aW9uLnQsIGludCwgRXZhbEN0eC50KSA9PiB7XG4gIGxldCBjb21wb3NlZCA9IEV2YWxDdHguY29tcG9zZShjdHgsIGV4cCk7XG4gIGxldCAocGFjdCwgcGlkeCkgPSAoYWN0LCBpZHgpO1xuICBsZXQgKG1hY3QsIG1pZHgpID0gRmlsdGVyTWF0Y2hlci5tYXRjaGVzKH5lbnYsIH5leHA9Y29tcG9zZWQsIH5hY3QsIGZsdCk7XG4gIGxldCAoYWN0LCBpZHgpID1cbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgVGVybSh7dGVybTogRmlsdGVyKF8sIF8pLCBffSkgPT4gKHBhY3QsIHBpZHgpXG4gICAgfCBfID0+IG1pZHggPiBpZHggPyAobWFjdCwgbWlkeCkgOiAocGFjdCwgcGlkeClcbiAgICB9O1xuICBsZXQgbWFwID0gKChhLCBpLCBjKSwgZikgPT4ge1xuICAgIChhLCBpLCBmKGMpKTtcbiAgfTtcbiAgbGV0IChsZXQrKSA9IG1hcDtcbiAgbGV0IChyYWN0LCByaWR4LCByY3R4KSA9XG4gICAgc3dpdGNoIChjdHgpIHtcbiAgICB8IE1hcmsgPT4gKGFjdCwgaWR4LCBFdmFsQ3R4Lk1hcmspXG4gICAgfCBUZXJtKHt0ZXJtLCBpZHN9KSA9PlxuICAgICAgbGV0IHJld3JhcCA9IHRlcm0gPT4gRXZhbEN0eC5UZXJtKHt0ZXJtLCBpZHN9KTtcbiAgICAgIHN3aXRjaCAoKHRlcm06IEV2YWxDdHgudGVybSkpIHtcbiAgICAgIHwgQ2xvc3VyZShlbnYsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBDbG9zdXJlKGVudiwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEZpbHRlcihGaWx0ZXIoZmx0JyksIGN0eCkgPT5cbiAgICAgICAgbGV0IGZsdCA9IGZsdCB8PiBGaWx0ZXJFbnZpcm9ubWVudC5leHRlbmRzKGZsdCcpO1xuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEZpbHRlcihGaWx0ZXIoZmx0JyksIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBGaWx0ZXIoUmVzaWR1ZShpZHgsIGFjdCksIGN0eCkgPT5cbiAgICAgICAgbGV0IChyYWN0LCByaWR4LCByY3R4KSA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIGlmIChyaWR4ID09IGlkeCAmJiByYWN0IHw+IHNuZCA9PSBBbGwpIHtcbiAgICAgICAgICAocmFjdCwgcmlkeCwgRmlsdGVyKFJlc2lkdWUoaWR4LCBhY3QpLCByY3R4KSB8PiByZXdyYXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIChyYWN0LCByaWR4LCByY3R4KTtcbiAgICAgICAgfTtcbiAgICAgIHwgU2VxMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIFNlcTEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBTZXEyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgU2VxMihkMSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IExldDEoZDEsIGN0eCwgZDMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGV0MShkMSwgY3R4LCBkMykgfD4gcmV3cmFwO1xuICAgICAgfCBMZXQyKGQxLCBkMiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExldDIoZDEsIGQyLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgRnVuKGRwLCBjdHgsIGVudicsIG5hbWUpID0+XG4gICAgICAgIGxldCsgY3R4ID1cbiAgICAgICAgICBtYXRjaGVzKE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1lbnYsIGVudicpLCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEZ1bihkcCwgY3R4LCBlbnYnLCBuYW1lKSB8PiByZXdyYXA7XG4gICAgICB8IEZpeEYobmFtZSwgY3R4LCBlbnYnKSA9PlxuICAgICAgICBsZXQrIGN0eCA9XG4gICAgICAgICAgbWF0Y2hlcyhPcHRpb24udmFsdWUofmRlZmF1bHQ9ZW52LCBlbnYnKSwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBGaXhGKG5hbWUsIGN0eCwgZW52JykgfD4gcmV3cmFwO1xuICAgICAgfCBBcDEoZGlyLCBjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEFwMShkaXIsIGN0eCwgZDIpIHw+IHJld3JhcDtcbiAgICAgIHwgQXAyKGRpciwgZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBBcDIoZGlyLCBkMSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IFR5cEFwKGN0eCwgdHkpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVHlwQXAoY3R4LCB0eSkgfD4gcmV3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIERlZmVycmVkQXAxKGN0eCwgZDIpIHw+IHJld3JhcDtcbiAgICAgIHwgRGVmZXJyZWRBcDIoZDEsIGN0eCwgZHMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRGVmZXJyZWRBcDIoZDEsIGN0eCwgZHMpIHw+IHJld3JhcDtcbiAgICAgIHwgSWYxKGN0eCwgZDIsIGQzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIElmMShjdHgsIGQyLCBkMykgfD4gcmV3cmFwO1xuICAgICAgfCBJZjIoZDEsIGN0eCwgZDMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgSWYyKGQxLCBjdHgsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IElmMyhkMSwgZDIsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBJZjMoZDEsIGQyLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgVW5PcChvcCwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIFVuT3Aob3AsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBCaW5PcDEob3AsIGN0eCwgZDEpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQmluT3AxKG9wLCBjdHgsIGQxKSB8PiByZXdyYXA7XG4gICAgICB8IEJpbk9wMihvcCwgZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBCaW5PcDIob3AsIGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgVHVwbGUoY3R4LCBkcykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBUdXBsZShjdHgsIGRzKSB8PiByZXdyYXA7XG4gICAgICB8IFRlc3QoY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIFRlc3QoY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IExpc3RMaXQoY3R4LCBkcykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBMaXN0TGl0KGN0eCwgZHMpIHw+IHJld3JhcDtcbiAgICAgIHwgQ29uczEoY3R4LCBkMikgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBDb25zMShjdHgsIGQyKSB8PiByZXdyYXA7XG4gICAgICB8IENvbnMyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQ29uczIoZDEsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBMaXN0Q29uY2F0MShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RDb25jYXQxKGN0eCwgZDIpIHw+IHJld3JhcDtcbiAgICAgIHwgTGlzdENvbmNhdDIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBMaXN0Q29uY2F0MihkMSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IE11bHRpSG9sZShjdHgsIChkbCwgZHIpKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIE11bHRpSG9sZShjdHgsIChkbCwgZHIpKSB8PiByZXdyYXA7XG4gICAgICB8IENhc3QoY3R4LCB0eSwgdHknKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENhc3QoY3R4LCB0eSwgdHknKSB8PiByZXdyYXA7XG4gICAgICB8IEZhaWxlZENhc3QoY3R4LCB0eSwgdHknKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEZhaWxlZENhc3QoY3R4LCB0eSwgdHknKSB8PiByZXdyYXA7XG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnJvcikgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBEeW5hbWljRXJyb3JIb2xlKGN0eCwgZXJyb3IpIHw+IHJld3JhcDtcbiAgICAgIHwgTWF0Y2hTY3J1dChjdHgsIHJzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIE1hdGNoU2NydXQoY3R4LCBycykgfD4gcmV3cmFwO1xuICAgICAgfCBNYXRjaFJ1bGUoc2NyLCBwLCBjdHgsIHJzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgcnMpIHw+IHJld3JhcDtcbiAgICAgIH07XG4gICAgfTtcbiAgc3dpdGNoIChjdHgpIHtcbiAgfCBUZXJtKHt0ZXJtOiBGaWx0ZXIoXyksIF99KSA9PiAocmFjdCwgcmlkeCwgcmN0eClcbiAgfCBfIHdoZW4gbWlkeCA9PSByaWR4ICYmIG1pZHggPiBwaWR4ICYmIG1hY3QgfD4gc25kID09IEFsbCA9PiAoXG4gICAgICByYWN0LFxuICAgICAgcmlkeCxcbiAgICAgIFRlcm0oe3Rlcm06IEZpbHRlcihSZXNpZHVlKG1pZHgsIG1hY3QpLCByY3R4KSwgaWRzOiBbSWQubWsoKV19KSxcbiAgICApXG4gIHwgXyA9PiAocmFjdCwgcmlkeCwgcmN0eClcbiAgfTtcbn07XG5cbmxldCBzaG91bGRfaGlkZV9ldmFsX29iaiA9XG4gICAgKH5zZXR0aW5ncywgeDogRXZhbE9iai50KTogKEZpbHRlckFjdGlvbi5hY3Rpb24sIEV2YWxPYmoudCkgPT5cbiAgaWYgKHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCB4LmtuZCkpIHtcbiAgICAoRXZhbCwgeCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IChhY3QsIF8sIGN0eCkgPVxuICAgICAgbWF0Y2hlcyhDbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIFtdLCB4LmN0eCwgeC5kX2xvYywgKFN0ZXAsIE9uZSksIDApO1xuICAgIHN3aXRjaCAoYWN0KSB7XG4gICAgfCAoRXZhbCwgXykgPT4gKEV2YWwsIHsuLi54LCBjdHh9KVxuICAgIHwgKFN0ZXAsIF8pID0+IChTdGVwLCB7Li4ueCwgY3R4fSlcbiAgICB9O1xuICB9O1xuXG5sZXQgc2hvdWxkX2hpZGVfc3RlcCA9ICh+c2V0dGluZ3MsIHg6IHN0ZXApOiAoRmlsdGVyQWN0aW9uLmFjdGlvbiwgc3RlcCkgPT5cbiAgaWYgKHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCB4LmtuZCkpIHtcbiAgICAoRXZhbCwgeCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IChhY3QsIF8sIGN0eCkgPVxuICAgICAgbWF0Y2hlcyhDbG9zdXJlRW52aXJvbm1lbnQuZW1wdHksIFtdLCB4LmN0eCwgeC5kX2xvYywgKFN0ZXAsIE9uZSksIDApO1xuICAgIHN3aXRjaCAoYWN0KSB7XG4gICAgfCAoRXZhbCwgXykgPT4gKEV2YWwsIHsuLi54LCBjdHh9KVxuICAgIHwgKFN0ZXAsIF8pID0+IChTdGVwLCB7Li4ueCwgY3R4fSlcbiAgICB9O1xuICB9O1xuXG5sZXQgZ2V0X2VsYWIgPSAoe2hpc3RvcnksIF99OiB0KTogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50ID0+IHtcbiAgbGV0IChjczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLCBfLCBfKSA9IEFiYS5sYXN0X2EoaGlzdG9yeSk7XG4gIHtkOiBjcy50ZXJtfTtcbn07XG5cbmxldCBnZXRfbmV4dF9zdGVwcyA9IHMgPT4gcy5uZXh0X29wdGlvbnM7XG5cbmxldCBjdXJyZW50X2V4cHIgPSAoe2hpc3RvcnksIF99OiB0KSA9PlxuICBBYmEuaGQoaGlzdG9yeSkgfD4gKCgoeCwgXywgXykpID0+IHgpO1xuXG5sZXQgY3VycmVudF9zdGF0ZSA9ICh7aGlzdG9yeSwgX306IHQpID0+XG4gIEFiYS5oZChoaXN0b3J5KSB8PiAoKChfLCBfLCB4KSkgPT4geCk7XG5cbmxldCBzdGVwX3BlbmRpbmcgPSAoaWR4OiBpbnQsIHN0ZXBwZXI6IHQpID0+IHtcbiAgey4uLnN0ZXBwZXIsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBQZW5kaW5nKGlkeCl9O1xufTtcblxubGV0IHJlYyBldmFsdWF0ZV9wZW5kaW5nID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHM6IHQpID0+IHtcbiAgc3dpdGNoIChzLnN0ZXBwZXJfc3RhdGUpIHtcbiAgfCBTdGVwcGVyRG9uZVxuICB8IFN0ZXBUaW1lb3V0KF8pID0+IHNcbiAgfCBTdGVwcGVyUmVhZHkgPT5cbiAgICBsZXQgbmV4dCcgPVxuICAgICAgcy5uZXh0X29wdGlvbnNcbiAgICAgIHw+IExpc3QubWFwKHNob3VsZF9oaWRlX2V2YWxfb2JqKH5zZXR0aW5ncz1zZXR0aW5ncy5ldmFsdWF0aW9uKSk7XG4gICAgbGV0IG5leHQnJyA9IExpc3QubWFwaSgoaSwgeCkgPT4gKGksIHgpLCBuZXh0Jyk7XG4gICAgc3dpdGNoIChcbiAgICAgIExpc3QuZmluZF9vcHQoKChfLCAoYWN0LCBfKSkpID0+IGFjdCA9PSBGaWx0ZXJBY3Rpb24uRXZhbCwgbmV4dCcnKVxuICAgICkge1xuICAgIHwgU29tZSgoaSwgKF8sIF8pKSkgPT5cbiAgICAgIHsuLi5zLCBzdGVwcGVyX3N0YXRlOiBTdGVwUGVuZGluZyhpKX0gfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpXG4gICAgfCBOb25lID0+IHsuLi5zLCBzdGVwcGVyX3N0YXRlOiBTdGVwcGVyRG9uZX1cbiAgICB9O1xuICB8IFN0ZXBQZW5kaW5nKGkpID0+XG4gICAgbGV0IGVvID0gTGlzdC5udGgocy5uZXh0X29wdGlvbnMsIGkpO1xuICAgIGxldCAoe3Rlcm06IGQsIF99OiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsIF8sIHN0YXRlKSA9IEFiYS5oZChzLmhpc3RvcnkpO1xuICAgIGxldCBzdGF0ZV9yZWYgPSByZWYoc3RhdGUpO1xuICAgIGxldCBkX2xvYycgPVxuICAgICAgKFxuICAgICAgICBzd2l0Y2ggKHRha2Vfc3RlcChzdGF0ZV9yZWYsIGVvLmVudiwgZW8uZF9sb2MpKSB7XG4gICAgICAgIHwgU29tZShkKSA9PiBkIHw+IERIRXhwLnJlcGFpcl9pZHNcbiAgICAgICAgfCBOb25lID0+IHJhaXNlKEV4Y2VwdGlvbilcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgfD4gREhFeHAucmVwYWlyX2lkcztcbiAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoZF9sb2MnIHw+IERIRXhwLnNob3cpO1xuICAgIGxldCBkJyA9IEV2YWxDdHguY29tcG9zZShlby5jdHgsIGRfbG9jJyk7XG4gICAgbGV0IG5ld19zdGVwID0ge1xuICAgICAgZCxcbiAgICAgIGRfbG9jOiBlby5kX2xvYyxcbiAgICAgIGRfbG9jJyxcbiAgICAgIGN0eDogZW8uY3R4LFxuICAgICAga25kOiBlby5rbmQsXG4gICAgICBzdGF0ZSxcbiAgICB9O1xuICAgIGxldCBuZXdfc3RhdGUgPSBzdGF0ZV9yZWZeO1xuICAgIGxldCBlZGl0b3IgPSBFeHBUb1NlZ21lbnQuZXhwX3RvX2VkaXRvcih+aW5saW5lPWZhbHNlLCBkJyk7XG4gICAgbGV0IHN0YXRpY3MgPSBDYWNoZWRTdGF0aWNzLnN0YXRpY3Nfb2ZfdGVybSh+c2V0dGluZ3MsIGQnLCBlZGl0b3IpO1xuICAgIHtcbiAgICAgIGhpc3Rvcnk6IHMuaGlzdG9yeSB8PiBBYmEuY29ucygoc3RhdGljcywgZWRpdG9yLCBuZXdfc3RhdGUpLCBuZXdfc3RlcCksXG4gICAgICBzdGVwcGVyX3N0YXRlOiBTdGVwcGVyUmVhZHksXG4gICAgICBuZXh0X29wdGlvbnM6IGRlY29tcG9zZShkJywgbmV3X3N0YXRlKSxcbiAgICB9XG4gICAgfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpO1xuICB9O1xufTtcblxubGV0IHJlYyBldmFsdWF0ZV9mdWxsID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICBzd2l0Y2ggKHMuc3RlcHBlcl9zdGF0ZSkge1xuICB8IFN0ZXBUaW1lb3V0KF8pID0+IHNcbiAgfCBTdGVwcGVyRG9uZSB3aGVuIHMubmV4dF9vcHRpb25zID09IFtdID0+IHNcbiAgfCBTdGVwcGVyRG9uZSA9PiBzIHw+IHN0ZXBfcGVuZGluZygwKSB8PiBldmFsdWF0ZV9mdWxsKH5zZXR0aW5ncylcbiAgfCBTdGVwcGVyUmVhZHlcbiAgfCBTdGVwUGVuZGluZyhfKSA9PlxuICAgIGV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzLCBzKSB8PiBldmFsdWF0ZV9mdWxsKH5zZXR0aW5ncylcbiAgfTtcbn07XG5cbmxldCBpbml0ID0gKHtkfTogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50LCB+c2V0dGluZ3MpID0+IHtcbiAgbGV0IHN0YXRlID0gRXZhbHVhdG9yU3RhdGUuaW5pdDtcbiAgbGV0IGVkaXRvciA9IEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKH5pbmxpbmU9ZmFsc2UsIGQpO1xuICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKH5zZXR0aW5ncywgZCwgZWRpdG9yKTtcbiAge1xuICAgIGhpc3Rvcnk6IEFiYS5zaW5nbGV0b24oKHN0YXRpY3MsIGVkaXRvciwgc3RhdGUpKSxcbiAgICBuZXh0X29wdGlvbnM6IGRlY29tcG9zZShkLCBzdGF0ZSksXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlclJlYWR5LFxuICB9XG4gIHw+IGV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzKTtcbn07XG5cbmxldCB0aW1lb3V0ID1cbiAgZnVuXG4gIHwge3N0ZXBwZXJfc3RhdGU6IFN0ZXBQZW5kaW5nKGlkeCksIF99IGFzIHMgPT4ge1xuICAgICAgLi4ucyxcbiAgICAgIHN0ZXBwZXJfc3RhdGU6IFN0ZXBUaW1lb3V0KExpc3QubnRoKHMubmV4dF9vcHRpb25zLCBpZHgpKSxcbiAgICB9XG4gIHwge3N0ZXBwZXJfc3RhdGU6IFN0ZXBUaW1lb3V0KF8pIHwgU3RlcHBlclJlYWR5IHwgU3RlcHBlckRvbmUsIF99IGFzIHMgPT4gcztcblxubGV0IHJlYyB0cnVuY2F0ZV9oaXN0b3J5ID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgKFtfLCAuLi5hc19dLCBbYiwgLi4uYnNdKVxuICAgICAgd2hlbiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncywgYikgfD4gZnN0ID09IEV2YWwgPT5cbiAgICB0cnVuY2F0ZV9oaXN0b3J5KH5zZXR0aW5ncywgKGFzXywgYnMpKVxuICB8IChbXywgLi4uYXNfXSwgW18sIC4uLmJzXSkgPT4gU29tZSgoYXNfLCBicykpXG4gIHwgXyA9PiBOb25lO1xuXG5sZXQgc3RlcF9iYWNrd2FyZCA9ICh+c2V0dGluZ3MsIHM6IHQpID0+IHtcbiAgbGV0IGgnID1cbiAgICB0cnVuY2F0ZV9oaXN0b3J5KH5zZXR0aW5ncywgcy5oaXN0b3J5KVxuICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1zLmhpc3RvcnkpO1xuICB7XG4gICAgaGlzdG9yeTogaCcsXG4gICAgbmV4dF9vcHRpb25zOiB7XG4gICAgICBsZXQgKGNzLCBfLCBzdCkgPSBBYmEuaGQoaCcpO1xuICAgICAgZGVjb21wb3NlKGNzLnRlcm0sIHN0KTtcbiAgICB9LFxuICAgIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJEb25lLFxuICB9O1xufTtcblxubGV0IGNhbl91bmRvID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICB0cnVuY2F0ZV9oaXN0b3J5KH5zZXR0aW5ncywgcy5oaXN0b3J5KSB8PiBPcHRpb24uaXNfc29tZTtcbn07XG5cbmxldCBnZXRfanVzdGlmaWNhdGlvbjogc3RlcF9raW5kID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IExldEJpbmQgPT4gXCJzdWJzdGl0dXRpb25cIlxuICB8IFNlcSA9PiBcInNlcXVlbmNlXCJcbiAgfCBGaXhVbndyYXAgPT4gXCJ1bnJvbGwgZml4cG9pbnRcIlxuICB8IFVwZGF0ZVRlc3QgPT4gXCJ1cGRhdGUgdGVzdFwiXG4gIHwgVHlwRnVuQXAgPT4gXCJhcHBseSB0eXBlIGZ1bmN0aW9uXCJcbiAgfCBGdW5BcCA9PiBcImFwcGx5IGZ1bmN0aW9uXCJcbiAgfCBEZWZlcnJlZEFwID0+IFwiZGVmZXJyZWQgYXBwbGljYXRpb25cIlxuICB8IEJ1aWx0aW5XcmFwID0+IFwid3JhcCBidWlsdGluXCJcbiAgfCBCdWlsdGluQXAocykgPT4gXCJldmFsdWF0ZSBcIiArKyBzXG4gIHwgVW5PcChJbnQoTWludXMpKVxuICB8IEJpbkludE9wKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpXG4gIHwgQmluRmxvYXRPcChQbHVzIHwgTWludXMgfCBUaW1lcyB8IFBvd2VyIHwgRGl2aWRlKSA9PiBcImFyaXRobWV0aWNcIlxuICB8IEJpbkludE9wKExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwpXG4gIHwgQmluRmxvYXRPcChMZXNzVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuIHwgR3JlYXRlclRoYW5PckVxdWFsKSA9PiBcImNvbXBhcmlzb25cIlxuICB8IEJpbkludE9wKEVxdWFscyB8IE5vdEVxdWFscylcbiAgfCBCaW5GbG9hdE9wKEVxdWFscyB8IE5vdEVxdWFscylcbiAgfCBCaW5TdHJpbmdPcChFcXVhbHMpID0+IFwiY2hlY2sgZXF1YWxpdHlcIlxuICB8IEJpblN0cmluZ09wKENvbmNhdCkgPT4gXCJzdHJpbmcgbWFuaXB1bGF0aW9uXCJcbiAgfCBVbk9wKEJvb2woTm90KSlcbiAgfCBCaW5Cb29sT3AoXykgPT4gXCJib29sZWFuIGxvZ2ljXCJcbiAgfCBDb25kaXRpb25hbChfKSA9PiBcImNvbmRpdGlvbmFsXCJcbiAgfCBMaXN0Q29ucyA9PiBcImxpc3QgbWFuaXB1bGF0aW9uXCJcbiAgfCBMaXN0Q29uY2F0ID0+IFwibGlzdCBtYW5pcHVsYXRpb25cIlxuICB8IENhc2VBcHBseSA9PiBcImNhc2Ugc2VsZWN0aW9uXCJcbiAgfCBQcm9qZWN0aW9uID0+IFwicHJvamVjdGlvblwiIC8vIFRPRE8oTWF0dCk6IFdlIGRvbid0IHdhbnQgdG8gc2hvdyBwcm9qZWN0aW9uIHRvIHRoZSB1c2VyXG4gIHwgSW52YWxpZFN0ZXAgPT4gXCJlcnJvclwiXG4gIHwgVmFyTG9va3VwID0+IFwidmFyaWFibGUgbG9va3VwXCJcbiAgfCBDYXN0VHlwQXBcbiAgfCBDYXN0QXBcbiAgfCBDYXN0ID0+IFwiY2FzdCBjYWxjdWx1c1wiXG4gIHwgRml4Q2xvc3VyZSA9PiBcImZpeHBvaW50IGNsb3N1cmVcIlxuICB8IENvbXBsZXRlRmlsdGVyID0+IFwiY29tcGxldGUgZmlsdGVyXCJcbiAgfCBDb21wbGV0ZUNsb3N1cmUgPT4gXCJjb21wbGV0ZSBjbG9zdXJlXCJcbiAgfCBGdW5DbG9zdXJlID0+IFwiZnVuY3Rpb24gY2xvc3VyZVwiXG4gIHwgUmVtb3ZlVHlwZUFsaWFzID0+IFwiZGVmaW5lIHR5cGVcIlxuICB8IFJlbW92ZVBhcmVucyA9PiBcInJlbW92ZSBwYXJlbnRoZXNlc1wiXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpKSA9PiBmYWlsd2l0aChcIklOVkFMSUQgU1RFUFwiKTtcblxudHlwZSBzdGVwX2luZm8gPSB7XG4gIGhpZGRlbl9oaXN0b3J5OiBBYmEudChhLCAoc3RlcCwgSWQudCkpLFxuICBjaG9zZW5fc3RlcDogb3B0aW9uKHN0ZXApLCAvLyBUaGUgc3RlcCB0aGF0IHdhcyB0YWtlbiBuZXh0XG4gIHByZXZpb3VzX3N0ZXA6IG9wdGlvbigoc3RlcCwgSWQudCkpIC8vIFRoZSBzdGVwIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgYWJvdmUgdGhpcyBvbmUgKGFuIElkIGluIGluY2x1ZGVkIGJlY2F1c2UgaXQgbWF5IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgc3RlcCB3YXMgdGFrZW4pXG59O1xuXG5sZXQgZ2V0X2hpc3RvcnkgPSAofnNldHRpbmdzLCBzdGVwcGVyKSA9PiB7XG4gIGxldCBzaG91bGRfc2tpcF9zdGVwID0gc3RlcCA9PlxuICAgIHN0ZXAgfD4gc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MpIHw+IGZzdCA9PSBFdmFsO1xuICBsZXQgZ3JvdXBlZF9zdGVwcyA9XG4gICAgQWJhLmZvbGRfcmlnaHQoXG4gICAgICAoKGQsIGVkaXRvciwgc3RhdGUpLCBzdGVwLCByZXN1bHQpID0+XG4gICAgICAgIGlmIChzaG91bGRfc2tpcF9zdGVwKHN0ZXApKSB7XG4gICAgICAgICAgQWJhLm1hcF9oZChBYmEuY29ucygoZCwgZWRpdG9yLCBzdGF0ZSksIHN0ZXApLCByZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEFiYS5jb25zKEFiYS5zaW5nbGV0b24oKGQsIGVkaXRvciwgc3RhdGUpKSwgc3RlcCwgcmVzdWx0KTtcbiAgICAgICAgfSxcbiAgICAgICgoZCwgZWRpdG9yLCBzdGF0ZSkpID0+XG4gICAgICAgIEFiYS5zaW5nbGV0b24oQWJhLnNpbmdsZXRvbigoZCwgZWRpdG9yLCBzdGF0ZSkpKSxcbiAgICAgIHN0ZXBwZXIuaGlzdG9yeSxcbiAgICApXG4gICAgfD4gQWJhLm1hcF9hKEFiYS5yZXYoeCA9PiB4LCB4ID0+IHgpKTtcbiAgbGV0IHJlcGxhY2VfaWQgPSAoeCwgeSwgKHMsIHopKSA9PiAocywgeCA9PSB6ID8geSA6IHopO1xuICBsZXQgdHJhY2tfaWRzID1cbiAgICAgIChcbiAgICAgICAgKFxuICAgICAgICAgIGNob3Nlbl9zdGVwOiBvcHRpb24oc3RlcCksXG4gICAgICAgICAgaGlkZGVuX2hpc3Rvcnk6IGhpc3RvcnksXG4gICAgICAgICAgcHJldmlvdXNfc3RlcDogb3B0aW9uKHN0ZXApLFxuICAgICAgICApLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IChwcmV2aW91c19zdGVwLCBoaWRkZW5faGlzdG9yeSkgPVxuICAgICAgQWJhLmZvbGRfbGVmdChcbiAgICAgICAgeCA9PlxuICAgICAgICAgIChcbiAgICAgICAgICAgIE9wdGlvbi5tYXAoeCA9PiAoeCwgeC5kX2xvYycgfD4gREhFeHAucmVwX2lkKSwgcHJldmlvdXNfc3RlcCksXG4gICAgICAgICAgICBBYmEuc2luZ2xldG9uKHgpLFxuICAgICAgICAgICksXG4gICAgICAgICgocHMsIGhoKSwgaDogc3RlcCwgaHMpID0+IHtcbiAgICAgICAgICBsZXQgcmVwbGFjZW1lbnQgPVxuICAgICAgICAgICAgcmVwbGFjZV9pZChoLmRfbG9jIHw+IERIRXhwLnJlcF9pZCwgaC5kX2xvYycgfD4gREhFeHAucmVwX2lkKTtcbiAgICAgICAgICAoXG4gICAgICAgICAgICBPcHRpb24ubWFwKHJlcGxhY2VtZW50LCBwcyksXG4gICAgICAgICAgICBBYmEuY29ucyhcbiAgICAgICAgICAgICAgaHMsXG4gICAgICAgICAgICAgIChoLCBoLmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpLFxuICAgICAgICAgICAgICBBYmEubWFwX2IocmVwbGFjZW1lbnQsIGhoKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGlkZGVuX2hpc3RvcnksXG4gICAgICApO1xuICAgIHtoaWRkZW5faGlzdG9yeSwgcHJldmlvdXNfc3RlcCwgY2hvc2VuX3N0ZXB9O1xuICB9O1xuICBsZXQgcGFkZGVkID0gZ3JvdXBlZF9zdGVwcyB8PiBBYmEuYmFiX3RyaXBsZXM7XG4gIGxldCByZXN1bHQgPSBwYWRkZWQgfD4gTGlzdC5tYXAodHJhY2tfaWRzKTtcbiAgcmVzdWx0O1xuICAvL2dyb3VwZWRfc3RlcHMgfD4gQWJhLmJhYl90cmlwbGVzIHw+IExpc3QubWFwKHRyYWNrX2lkcyk7XG59O1xuXG5sZXQgaGlkZGVuX3N0ZXBzX29mX2luZm8gPSAoaW5mbzogc3RlcF9pbmZvKTogbGlzdChzdGVwX2luZm8pID0+IHtcbiAgLy8gbm90ZSB0aGUgcHJldmlvdXNfc3RlcCBmaWVsZCBpcyBmdWRnZWQgYmVjYXVzZSBpdCBpcyBjdXJyZW50bHkgdXN1c2VkLlxuICBMaXN0Lm1hcChcbiAgICAoKHByZSwgKGhzLCBfKSwgXykpID0+XG4gICAgICB7XG4gICAgICAgIGNob3Nlbl9zdGVwOiBTb21lKGhzKSxcbiAgICAgICAgaGlkZGVuX2hpc3Rvcnk6IEFiYS5zaW5nbGV0b24ocHJlKSxcbiAgICAgICAgcHJldmlvdXNfc3RlcDogTm9uZSxcbiAgICAgIH0sXG4gICAgaW5mby5oaWRkZW5faGlzdG9yeSB8PiBBYmEuYWJhX3RyaXBsZXMsXG4gICk7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBlcnNpc3RlbnRfaGlzdG9yeSA9IEFiYS50KChESEV4cC50LCBFdmFsdWF0b3JTdGF0ZS50KSwgc3RlcCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudCA9IHtwZXJzaXN0ZW50X2hpc3Rvcnl9O1xuXG5sZXQgKHNleHBfb2ZfcGVyc2lzdGVudCwgcGVyc2lzdGVudF9vZl9zZXhwKSA9XG4gIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oXG4gICAgc2V4cF9vZl9wZXJzaXN0ZW50LFxuICAgIHBlcnNpc3RlbnRfb2Zfc2V4cCxcbiAgKTtcblxubGV0IChzZXhwX29mX3BlcnNpc3RlbnQsIHBlcnNpc3RlbnRfb2Zfc2V4cCkgPVxuICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2luKFxuICAgIHNleHBfb2ZfcGVyc2lzdGVudCxcbiAgICBwZXJzaXN0ZW50X29mX3NleHAsXG4gICk7XG5cbmxldCB0b19wZXJzaXN0ZW50X2hpc3RvcnkgPSBoaXN0b3J5ID0+XG4gIEFiYS5tYXBfYSgoKHt0ZXJtOiBkLCBffSwgXywgcyk6IGEpID0+IChkLCBzKSwgaGlzdG9yeSk7XG5cbi8vIFJlbW92ZSBFdmFsT2JqLnQgb2JqZWN0cyBmcm9tIHN0ZXBwZXIgdG8gcHJldmVudCBwcm9ibGVtcyB3aGVuIGxvYWRpbmdcbmxldCB0b19wZXJzaXN0ZW50OiB0ID0+IHBlcnNpc3RlbnQgPVxuICAoe2hpc3RvcnksIF99KSA9PiB7cGVyc2lzdGVudF9oaXN0b3J5OiBoaXN0b3J5IHw+IHRvX3BlcnNpc3RlbnRfaGlzdG9yeX07XG5cbmxldCBmcm9tX3BlcnNpc3RlbnRfaGlzdG9yeSA9ICh+c2V0dGluZ3MsIGhpc3RvcnkpID0+XG4gIEFiYS5tYXBfYShcbiAgICAoKGQsIHMpKSA9PiB7XG4gICAgICBsZXQgZWRpdG9yID0gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoZCwgfmlubGluZT1mYWxzZSk7XG4gICAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKH5zZXR0aW5ncywgZCwgZWRpdG9yKTtcbiAgICAgIChzdGF0aWNzLCBlZGl0b3IsIHMpO1xuICAgIH0sXG4gICAgaGlzdG9yeSxcbiAgKTtcblxubGV0IGZyb21fcGVyc2lzdGVudCA9ICh+c2V0dGluZ3MsIHtwZXJzaXN0ZW50X2hpc3Rvcnl9KSA9PiB7XG4gIGxldCBoaXN0b3J5ID0gcGVyc2lzdGVudF9oaXN0b3J5IHw+IGZyb21fcGVyc2lzdGVudF9oaXN0b3J5KH5zZXR0aW5ncyk7XG4gIHtcbiAgICBoaXN0b3J5LFxuICAgIG5leHRfb3B0aW9uczoge1xuICAgICAgbGV0ICh7dGVybTogZCwgX306IENhY2hlZFN0YXRpY3Muc3RhdGljcywgXywgc3RhdGUpID0gQWJhLmhkKGhpc3RvcnkpO1xuICAgICAgZGVjb21wb3NlKGQsIHN0YXRlKTtcbiAgICB9LFxuICAgIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJEb25lLFxuICB9O1xufTtcblxudHlwZSBzZWxlY3Rpb24gPSBpbnQ7XG5cbmxldCBnZXRfc2VsZWN0ZWRfZWRpdG9yID0gKH5zZWxlY3Rpb246IHNlbGVjdGlvbiwgc3RlcHBlcjogdCkgPT4ge1xuICBsZXQrIChfLCBlZGl0b3IsIF8pID1cbiAgICBMaXN0Lm50aF9vcHQoc3RlcHBlci5oaXN0b3J5IHw+IEFiYS5nZXRfYXMsIHNlbGVjdGlvbik7XG4gIGVkaXRvcjtcbn07XG5cbmxldCBwdXRfc2VsZWN0ZWRfZWRpdG9yID0gKH5zZWxlY3Rpb246IHNlbGVjdGlvbiwgc3RlcHBlcjogdCwgZWRpdG9yKSA9PiB7XG4gIGxldCBhc18gPVxuICAgIHN0ZXBwZXIuaGlzdG9yeVxuICAgIHw+IEFiYS5nZXRfYXNcbiAgICB8PiBMaXN0VXRpbC5tYXBfbnRoKHNlbGVjdGlvbiwgKChkLCBfLCBzKSkgPT4gKGQsIGVkaXRvciwgcykpO1xuICBsZXQgaGlzdG9yeSA9IEFiYS5tayhhc18sIHN0ZXBwZXIuaGlzdG9yeSB8PiBBYmEuZ2V0X2JzKTtcbiAgey4uLnN0ZXBwZXIsIGhpc3Rvcnl9O1xufTtcbiIsIm9wZW4gWmlwcGVyO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbW92YWJpbGl0eSA9XG4gIHwgQ2FuRW50ZXIoaW50LCBpbnQpXG4gIHwgQ2FuUGFzc1xuICB8IENhbnRFdmVuO1xuXG5sZXQgbW92YWJpbGl0eSA9IChjaHVua2luZXNzOiBjaHVua2luZXNzLCBsYWJlbCwgZGVsaW1faWR4KTogbW92YWJpbGl0eSA9PiB7XG4gIGFzc2VydChkZWxpbV9pZHggPCBMaXN0Lmxlbmd0aChsYWJlbCkpO1xuICBzd2l0Y2ggKGNodW5raW5lc3MsIGxhYmVsLCBkZWxpbV9pZHgpIHtcbiAgfCAoQnlDaGFyLCBfLCBfKVxuICB8IChNb25vQnlDaGFyLCBbX10sIDApID0+XG4gICAgbGV0IGNoYXJfbWF4ID0gVG9rZW4ubGVuZ3RoKExpc3QubnRoKGxhYmVsLCBkZWxpbV9pZHgpKSAtIDI7XG4gICAgY2hhcl9tYXggPCAwID8gQ2FuUGFzcyA6IENhbkVudGVyKGRlbGltX2lkeCwgY2hhcl9tYXgpO1xuICB8IChCeVRva2VuLCBfLCBfKVxuICB8IChNb25vQnlDaGFyLCBfLCBfKSA9PiBDYW5QYXNzXG4gIH07XG59O1xuXG5sZXQgbmVpZ2hib3JfbW92YWJpbGl0eSA9XG4gICAgKGNodW5raW5lc3M6IGNodW5raW5lc3MsIHtyZWxhdGl2ZXM6IHtzaWJsaW5ncywgYW5jZXN0b3JzfSwgX306IHQpXG4gICAgOiAobW92YWJpbGl0eSwgbW92YWJpbGl0eSkgPT4ge1xuICBsZXQgbW92YWJpbGl0eSA9IG1vdmFiaWxpdHkoY2h1bmtpbmVzcyk7XG4gIGxldCAoc3VwZXJuaGJyX2wsIHN1cGVybmhicl9yKSA9XG4gICAgc3dpdGNoIChhbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IChDYW50RXZlbiwgQ2FudEV2ZW4pXG4gICAgfCBbKHtjaGlsZHJlbjogKGxfa2lkcywgXyksIGxhYmVsLCBffSwgXyksIC4uLl9dID0+IChcbiAgICAgICAgbW92YWJpbGl0eShsYWJlbCwgTGlzdC5sZW5ndGgobF9raWRzKSksXG4gICAgICAgIG1vdmFiaWxpdHkobGFiZWwsIExpc3QubGVuZ3RoKGxfa2lkcykgKyAxKSxcbiAgICAgIClcbiAgICB9O1xuICBsZXQgKGxfbmhiciwgcl9uaGJyKSA9IFNpYmxpbmdzLm5laWdoYm9ycyhzaWJsaW5ncyk7XG4gIGxldCBsID1cbiAgICBzd2l0Y2ggKGxfbmhicikge1xuICAgIHwgU29tZShUaWxlKHtsYWJlbCwgX30pKSA9PiBtb3ZhYmlsaXR5KGxhYmVsLCBMaXN0Lmxlbmd0aChsYWJlbCkgLSAxKVxuICAgIHwgU29tZShTZWNvbmRhcnkodykpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICAgIC8vIENvbW1lbnRzIGFyZSBhbHdheXMgbGVuZ3RoID49IDJcbiAgICAgIGxldCBjb250ZW50X3N0cmluZyA9IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCk7XG4gICAgICBDYW5FbnRlcihcbiAgICAgICAgVW5pY29kZS5sZW5ndGgoY29udGVudF9zdHJpbmcpIC0gMSxcbiAgICAgICAgVW5pY29kZS5sZW5ndGgoY29udGVudF9zdHJpbmcpIC0gMixcbiAgICAgICk7XG4gICAgfCBTb21lKF8pID0+IENhblBhc3NcbiAgICB8IF8gPT4gc3VwZXJuaGJyX2xcbiAgICB9O1xuICBsZXQgciA9XG4gICAgc3dpdGNoIChyX25oYnIpIHtcbiAgICB8IFNvbWUoVGlsZSh7bGFiZWwsIF99KSkgPT4gbW92YWJpbGl0eShsYWJlbCwgMClcbiAgICB8IFNvbWUoU2Vjb25kYXJ5KHcpKSB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHcpID0+XG4gICAgICAvLyBDb21tZW50cyBhcmUgYWx3YXlzIGxlbmd0aCA+PSAyXG4gICAgICBsZXQgY29udGVudF9zdHJpbmcgPSBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpO1xuICAgICAgQ2FuRW50ZXIoMCwgVW5pY29kZS5sZW5ndGgoY29udGVudF9zdHJpbmcpIC0gMik7XG4gICAgfCBTb21lKF8pID0+IENhblBhc3NcbiAgICB8IF8gPT4gc3VwZXJuaGJyX3JcbiAgICB9O1xuICAobCwgcik7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChNOiBFZGl0b3IuTWV0YS5TKSA9PiB7XG4gIGxldCBjYXJldF9wb2ludCA9IFppcHBlci5jYXJldF9wb2ludChNLm1lYXN1cmVkKTtcblxuICBsZXQgcG9wX291dCA9IHogPT4gU29tZSh6IHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpKTtcbiAgbGV0IHBvcF9tb3ZlID0gKGQsIHopID0+IHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoZCk7XG4gIGxldCBpbm5lcl9pbmNyID0gKGRlbGltLCBjLCB6KSA9PlxuICAgIFNvbWUoWmlwcGVyLnNldF9jYXJldChJbm5lcihkZWxpbSwgYyArIDEpLCB6KSk7XG4gIGxldCBpbm5lcl9kZWNyID0geiA9PiBTb21lKFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeikpO1xuICBsZXQgaW5uZXJfc3RhcnQgPSAoZF9pbml0LCB6KSA9PlxuICAgIFNvbWUoWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2luaXQsIDApLCB6KSk7XG4gIGxldCBpbm5lcl9lbmQgPSAoZCwgZF9pbml0LCBjX21heCwgeikgPT5cbiAgICB6IHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoZF9pbml0LCBjX21heCkpIHw+IFppcHBlci5tb3ZlKGQpO1xuXG4gIGxldCBwcmltYXJ5ID0gKGNodW5raW5lc3M6IGNodW5raW5lc3MsIGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBzd2l0Y2ggKGQsIHouY2FyZXQsIG5laWdoYm9yX21vdmFiaWxpdHkoY2h1bmtpbmVzcywgeikpIHtcbiAgICAvKiB0aGlzIGNhc2UgbWF5YmUgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgY3VycmVudGx5IGNvdmVycyBhbiBlZGdlXG4gICAgICAgKHNlbGVjdCBhbiBvcGVuIHBhcmVucyB0byBsZWZ0IG9mIGEgbXVsdGljaGFyIHRva2VuIGFuZCBwcmVzcyBsZWZ0KSAqL1xuICAgIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4gcG9wX21vdmUoZCwgeilcbiAgICB8IChMZWZ0LCBPdXRlciwgKENhbkVudGVyKGRsbSwgY19tYXgpLCBfKSkgPT5cbiAgICAgIGlubmVyX2VuZChkLCBkbG0sIGNfbWF4LCB6KVxuICAgIHwgKExlZnQsIE91dGVyLCBfKSA9PiBaaXBwZXIubW92ZShkLCB6KVxuICAgIHwgKExlZnQsIElubmVyKF8pLCBfKSB3aGVuIGNodW5raW5lc3MgPT0gQnlUb2tlbiA9PiBwb3Bfb3V0KHopXG4gICAgfCAoTGVmdCwgSW5uZXIoXyksIF8pID0+XG4gICAgICBTb21lKFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeikpXG4gICAgfCAoUmlnaHQsIE91dGVyLCAoXywgQ2FuRW50ZXIoZF9pbml0LCBfKSkpID0+IGlubmVyX3N0YXJ0KGRfaW5pdCwgeilcbiAgICB8IChSaWdodCwgT3V0ZXIsIF8pID0+IFppcHBlci5tb3ZlKGQsIHopXG4gICAgfCAoUmlnaHQsIElubmVyKF8sIGMpLCAoXywgQ2FuRW50ZXIoXywgY19tYXgpKSkgd2hlbiBjID09IGNfbWF4ID0+XG4gICAgICBwb3BfbW92ZShkLCB6KVxuICAgIHwgKFJpZ2h0LCBJbm5lcihfKSwgXykgd2hlbiBjaHVua2luZXNzID09IEJ5VG9rZW4gPT4gcG9wX21vdmUoZCwgeilcbiAgICB8IChSaWdodCwgSW5uZXIoZGVsaW0sIGMpLCBfKSA9PiBpbm5lcl9pbmNyKGRlbGltLCBjLCB6KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGlzX2F0X3NpZGVfb2Zfcm93ID0gKGQ6IERpcmVjdGlvbi50LCB6OiBaaXBwZXIudCkgPT4ge1xuICAgIGxldCBNZWFzdXJlZC5Qb2ludC57cm93LCBjb2x9ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgc3dpdGNoIChaaXBwZXIubW92ZShkLCB6KSkge1xuICAgIHwgTm9uZSA9PiB0cnVlXG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgTWVhc3VyZWQuUG9pbnQue3Jvdzogcm93cCwgY29sOiBjb2xwfSA9IGNhcmV0X3BvaW50KHopO1xuICAgICAgcm93ICE9IHJvd3AgfHwgY29sID09IGNvbHA7XG4gICAgfTtcbiAgfTtcblxuICBsZXQgZG9fdG93YXJkcyA9XG4gICAgICAoXG4gICAgICAgIH5hbmNob3I6IG9wdGlvbihNZWFzdXJlZC5Qb2ludC50KT0/LFxuICAgICAgICBmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSxcbiAgICAgICAgZ29hbDogTWVhc3VyZWQuUG9pbnQudCxcbiAgICAgICAgejogdCxcbiAgICAgIClcbiAgICAgIDogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgaW5pdCA9IGNhcmV0X3BvaW50KHopO1xuICAgIGxldCBkID1cbiAgICAgIGdvYWwucm93IDwgaW5pdC5yb3cgfHwgZ29hbC5yb3cgPT0gaW5pdC5yb3cgJiYgZ29hbC5jb2wgPCBpbml0LmNvbFxuICAgICAgICA/IERpcmVjdGlvbi5MZWZ0IDogUmlnaHQ7XG4gICAgbGV0IHJlYyBnbyA9IChwcmV2OiB0LCBjdXJyOiB0KSA9PiB7XG4gICAgICBsZXQgY3Vycl9wID0gY2FyZXRfcG9pbnQoY3Vycik7XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBNZWFzdXJlZC5Qb2ludC5kY29tcChkLCBjdXJyX3AuY29sLCBnb2FsLmNvbCksXG4gICAgICAgIE1lYXN1cmVkLlBvaW50LmRjb21wKGQsIGN1cnJfcC5yb3csIGdvYWwucm93KSxcbiAgICAgICkge1xuICAgICAgfCAoRXhhY3QsIEV4YWN0KSA9PiBjdXJyXG4gICAgICB8IChfLCBPdmVyKSA9PiBwcmV2XG4gICAgICB8IChfLCBVbmRlcilcbiAgICAgIHwgKFVuZGVyLCBFeGFjdCkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQsIGN1cnIpKSB7XG4gICAgICAgIHwgTm9uZSA9PiBjdXJyXG4gICAgICAgIHwgU29tZShuZXh0KSA9PiBnbyhjdXJyLCBuZXh0KVxuICAgICAgICB9XG4gICAgICB8IChPdmVyLCBFeGFjdCkgPT5cbiAgICAgICAgc3dpdGNoIChhbmNob3IpIHtcbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgLyogU3BlY2lhbCBjYXNlIGZvciB3aGVuIHlvdSdyZSAoZWcpIHlvdSdyZSB0cnlpbmdcbiAgICAgICAgICAgICB0byBtb3ZlIGRvd24sIGJ1dCB5b3UncmUgYXQgdGhlIHJpZ2h0IGVuZCBvZiBhIHJvd1xuICAgICAgICAgICAgIGFuZCB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIG5leHQgcm93IGlzIGZ1cnRoZXJcbiAgICAgICAgICAgICByaWdodCB0aGFuIHRoZSBjdXJyZW50IHJvdydzIGVuZC4gSW4gdGhpcyBjYXNlIHdlXG4gICAgICAgICAgICAgd2FudCB0byBwcm9ncmVzcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG5ld1xuICAgICAgICAgICAgIHBvc2l0aW9uIHdvdWxkIGJlIGNsb3NlciBvciBmdXRoZXIgZnJvbSB0aGVcbiAgICAgICAgICAgICBnb2FsIGNvbCAqL1xuICAgICAgICAgIGlzX2F0X3NpZGVfb2Zfcm93KERpcmVjdGlvbi50b2dnbGUoZCksIGN1cnIpXG4gICAgICAgICAgICA/IGN1cnJcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBsZXQgZF9jdXJyID0gYWJzKGN1cnJfcC5jb2wgLSBnb2FsLmNvbCk7XG4gICAgICAgICAgICAgIGxldCBkX3ByZXYgPSBhYnMoY2FyZXRfcG9pbnQocHJldikuY29sIC0gZ29hbC5jb2wpO1xuICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGdvaW5nIG92ZXIgd2hlbiBlcXVhbFxuICAgICAgICAgICAgICBkX3ByZXYgPCBkX2N1cnIgPyBwcmV2IDogY3VycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBTb21lKGFuY2hvcikgPT5cbiAgICAgICAgICBsZXQgYW5jaG9yX2QgPVxuICAgICAgICAgICAgZ29hbC5yb3cgPCBhbmNob3Iucm93XG4gICAgICAgICAgICB8fCBnb2FsLnJvdyA9PSBhbmNob3Iucm93XG4gICAgICAgICAgICAmJiBnb2FsLmNvbCA8IGFuY2hvci5jb2xcbiAgICAgICAgICAgICAgPyBEaXJlY3Rpb24uTGVmdCA6IFJpZ2h0O1xuICAgICAgICAgIGFuY2hvcl9kID09IGQgPyBjdXJyIDogcHJldjtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCByZXMgPSBnbyh6LCB6KTtcbiAgICBNZWFzdXJlZC5Qb2ludC5lcXVhbHMoY2FyZXRfcG9pbnQocmVzKSwgY2FyZXRfcG9pbnQoeikpXG4gICAgICA/IE5vbmUgOiBTb21lKHJlcyk7XG4gIH07XG4gIGxldCBkb192ZXJ0aWNhbCA9XG4gICAgICAoZjogKERpcmVjdGlvbi50LCB0KSA9PiBvcHRpb24odCksIGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICAvKiBIZXJlIGYgc2hvdWxkIGJlIGEgZnVuY3Rpb24gd2hpY2ggcmVzdWx0cyBpbiBzdHJpY3QgZC13YXJkc1xuICAgICAgIG1vdmVtZW50IG9mIHRoZSBjYXJldC4gSXRlcmF0ZSBmIHVudGlsIHdlIGdldCB0byB0aGUgY2xvc2V0XG4gICAgICAgY2FyZXQgcG9zaXRpb24gdG8gYSB0YXJnZXQgZGVyaXZlZCBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9uICovXG4gICAgbGV0IGN1cl9wID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGdvYWwgPVxuICAgICAgTWVhc3VyZWQuUG9pbnQue1xuICAgICAgICBjb2w6IE0uY29sX3RhcmdldCxcbiAgICAgICAgcm93OiBjdXJfcC5yb3cgKyAoZCA9PSBSaWdodCA/IDEgOiAoLTEpKSxcbiAgICAgIH07XG4gICAgZG9fdG93YXJkcyhmLCBnb2FsLCB6KTtcbiAgfTtcblxuICBsZXQgZG9fZXh0cmVtZSA9XG4gICAgICAoZjogKERpcmVjdGlvbi50LCB0KSA9PiBvcHRpb24odCksIGQ6IHBsYW5hciwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gICAgbGV0IGN1cl9wID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGdvYWw6IE1lYXN1cmVkLlBvaW50LnQgPVxuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICB8IFJpZ2h0KF8pID0+IHtjb2w6IEludC5tYXhfaW50LCByb3c6IGN1cl9wLnJvd31cbiAgICAgIHwgTGVmdChfKSA9PiB7Y29sOiAwLCByb3c6IGN1cl9wLnJvd31cbiAgICAgIHwgVXAgPT4ge2NvbDogMCwgcm93OiAwfVxuICAgICAgfCBEb3duID0+IHtjb2w6IEludC5tYXhfaW50LCByb3c6IEludC5tYXhfaW50fVxuICAgICAgfTtcbiAgICBkb190b3dhcmRzKGYsIGdvYWwsIHopO1xuICB9O1xuXG4gIGxldCB0b19zdGFydCA9IGRvX2V4dHJlbWUocHJpbWFyeShCeVRva2VuKSwgVXApO1xuICBsZXQgdG9fZW5kID0gZG9fZXh0cmVtZShwcmltYXJ5KEJ5VG9rZW4pLCBEb3duKTtcblxuICBsZXQgdG9fZWRnZTogKERpcmVjdGlvbi50LCB0KSA9PiBvcHRpb24odCkgPVxuICAgIGZ1blxuICAgIHwgTGVmdCA9PiB0b19zdGFydFxuICAgIHwgUmlnaHQgPT4gdG9fZW5kO1xuXG4gIC8qIERvIG1vdmVfYWN0aW9uIHVudGlsIHRoZSBpbmRpY2F0ZWQgcGllY2UgaXMgc3VjaCB0aGF0IHBpZWNlX3AgaXMgdHJ1ZS5cbiAgICAgSWYgbm8gc3VjaCBwaWVjZSBpcyBmb3VuZCwgZG9uJ3QgbW92ZS4gKi9cbiAgbGV0IHJlYyBkb191bnRpbCA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgfm1vdmVfZmlyc3Q9dHJ1ZSxcbiAgICAgICAgICAgIG1vdmVfYWN0aW9uOiB0ID0+IG9wdGlvbih0KSxcbiAgICAgICAgICAgIHBpZWNlX3A6IFBpZWNlLnQgPT4gYm9vbCxcbiAgICAgICAgICAgIHo6IHQsXG4gICAgICAgICAgKVxuICAgICAgICAgIDogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQqIHogPSBtb3ZlX2ZpcnN0ID8gbW92ZV9hY3Rpb24oeikgOiBTb21lKHopO1xuICAgIGxldCogKHBpZWNlLCBfLCBfKSA9IEluZGljYXRlZC5waWVjZScofm5vX3dzPWZhbHNlLCB+aWduPV8gPT4gZmFsc2UsIHopO1xuICAgIGlmIChwaWVjZV9wKHBpZWNlKSkge1xuICAgICAgU29tZSh6KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0KiB6ID0gbW92ZV9maXJzdCA/IFNvbWUoeikgOiBtb3ZlX2FjdGlvbih6KTtcbiAgICAgIGRvX3VudGlsKH5tb3ZlX2ZpcnN0LCBtb3ZlX2FjdGlvbiwgcGllY2VfcCwgeik7XG4gICAgfTtcbiAgfTtcblxuICAvKiBEbyBtb3ZlX2FjdGlvbiB1bnRpbCB0aGUgaW5kaWNhdGVkIHBpZWNlIGlzIHN1Y2ggdGhhdCBwaWVjZV9wIGlzIHRydWUsXG4gICAgIHJlc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nL2VuZCBpZiBub3QgZm91bmQgaW4gZm9yd2FyZCBkaXJlY3Rpb24uXG4gICAgIElmIG5vIHN1Y2ggcGllY2UgaXMgZm91bmQsIGRvbid0IG1vdmUuICovXG4gIGxldCBkb191bnRpbF93cmFwID0gKHAsIGQsIHopID0+XG4gICAgc3dpdGNoIChkb191bnRpbChwcmltYXJ5KEJ5VG9rZW4sIGQpLCBwLCB6KSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0KiB6ID0gdG9fZWRnZShEaXJlY3Rpb24udG9nZ2xlKGQpLCB6KTtcbiAgICAgIGRvX3VudGlsKHByaW1hcnkoQnlUb2tlbiwgZCksIHAsIHopO1xuICAgIHwgU29tZSh6KSA9PiBTb21lKHopXG4gICAgfTtcblxuICBsZXQganVtcF90b19pZCA9ICh6OiB0LCBpZDogSWQudCk6IG9wdGlvbih0KSA9PiB7XG4gICAgbGV0KiB7b3JpZ2luLCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIE0ubWVhc3VyZWQpO1xuICAgIGxldCB6ID1cbiAgICAgIHN3aXRjaCAodG9fc3RhcnQoeikpIHtcbiAgICAgIHwgTm9uZSA9PiB6XG4gICAgICB8IFNvbWUoeikgPT4gelxuICAgICAgfTtcbiAgICBzd2l0Y2ggKGRvX3Rvd2FyZHMocHJpbWFyeShCeUNoYXIpLCBvcmlnaW4sIHopKSB7XG4gICAgfCBOb25lID0+IFNvbWUoeilcbiAgICB8IFNvbWUoeikgPT4gU29tZSh6KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZlcnRpY2FsID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+XG4gICAgei5zZWxlY3Rpb24uY29udGVudCA9PSBbXVxuICAgICAgPyBkb192ZXJ0aWNhbChwcmltYXJ5KEJ5Q2hhciksIGQsIHopXG4gICAgICA6IFNvbWUoWmlwcGVyLmRpcmVjdGlvbmFsX3Vuc2VsZWN0KGQsIHopKTtcblxuICBsZXQgdGFyZ2V0c193aXRoaW5fcm93ID0gKHo6IHQpOiBsaXN0KHQpID0+IHtcbiAgICBsZXQgaW5pdCA9IGNhcmV0X3BvaW50KHopO1xuICAgIGxldCByZWMgZ28gPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpID0+IHtcbiAgICAgIHN3aXRjaCAocHJpbWFyeShCeUNoYXIsIGQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICBpZiAoY2FyZXRfcG9pbnQoeikucm93ICE9IGluaXQucm93KSB7XG4gICAgICAgICAgW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gZ28oZCwgeilcbiAgICAgICAgICB8IFNvbWUoXykgPT4gW3osIC4uLmdvKGQsIHopXVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgY3VyciA9XG4gICAgICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUoXykgPT4gW3pdXG4gICAgICB9O1xuICAgIExpc3QucmV2KGdvKExlZnQsIHopKSBAIGN1cnIgQCBnbyhSaWdodCwgeik7XG4gIH07XG5cbiAgLy8gVE9ETyhkKTogdW5pZnkgdGhpcyBsb2dpYyB3aXRoIHJlc3Qgb2YgbW92ZW1lbnQgbG9naWNcbiAgbGV0IHJlYyB0b19iYWNrcGFja190YXJnZXQgPSAoZDogcGxhbmFyLCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgZG9uZV9vcl90cnlfYWdhaW4gPSAoZCwgeikgPT5cbiAgICAgIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gICAgICB8IE5vbmUgPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFNvbWUoXykgPT4gU29tZSh6KVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQoY2h1bmspID0+XG4gICAgICBsZXQqIHogPSBwcmltYXJ5KGNodW5rLCBMZWZ0LCB6KTtcbiAgICAgIGRvbmVfb3JfdHJ5X2FnYWluKGQsIHopO1xuICAgIHwgUmlnaHQoY2h1bmspID0+XG4gICAgICBsZXQqIHogPSBwcmltYXJ5KGNodW5rLCBSaWdodCwgeik7XG4gICAgICBkb25lX29yX3RyeV9hZ2FpbihkLCB6KTtcbiAgICB8IFVwID0+XG4gICAgICBsZXQqIHogPSB2ZXJ0aWNhbChMZWZ0LCB6KTtcbiAgICAgIGxldCB6cyA9XG4gICAgICAgIHRhcmdldHNfd2l0aGluX3Jvdyh6KVxuICAgICAgICB8PiBMaXN0LnNvcnQoKHoxLCB6MikgPT4ge1xuICAgICAgICAgICAgIGxldCBkaXN0MSA9IGNhcmV0X3BvaW50KHoxKS5jb2wgLSBNLmNvbF90YXJnZXQ7XG4gICAgICAgICAgICAgbGV0IGRpc3QyID0gY2FyZXRfcG9pbnQoejIpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgYyA9IEludC5jb21wYXJlKGFicyhkaXN0MSksIGFicyhkaXN0MikpO1xuICAgICAgICAgICAgIC8vIGZhdm9yIGxlZnRcbiAgICAgICAgICAgICBjICE9IDAgPyBjIDogSW50LmNvbXBhcmUoZGlzdDEsIGRpc3QyKTtcbiAgICAgICAgICAgfSk7XG4gICAgICBzd2l0Y2ggKHpzKSB7XG4gICAgICB8IFtdID0+IHRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgICAgfCBbeiwgLi4uX10gPT4gU29tZSh6KVxuICAgICAgfTtcbiAgICB8IERvd24gPT5cbiAgICAgIGxldCogeiA9IHZlcnRpY2FsKFJpZ2h0LCB6KTtcbiAgICAgIGxldCB6cyA9XG4gICAgICAgIHRhcmdldHNfd2l0aGluX3Jvdyh6KVxuICAgICAgICB8PiBMaXN0LnNvcnQoKHoxLCB6MikgPT4ge1xuICAgICAgICAgICAgIGxldCBkaXN0MSA9IGNhcmV0X3BvaW50KHoxKS5jb2wgLSBNLmNvbF90YXJnZXQ7XG4gICAgICAgICAgICAgbGV0IGRpc3QyID0gY2FyZXRfcG9pbnQoejIpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgYyA9IEludC5jb21wYXJlKGFicyhkaXN0MSksIGFicyhkaXN0MikpO1xuICAgICAgICAgICAgIC8vIGZhdm9yIHJpZ2h0XG4gICAgICAgICAgICAgYyAhPSAwID8gYyA6IC0gSW50LmNvbXBhcmUoZGlzdDEsIGRpc3QyKTtcbiAgICAgICAgICAgfSk7XG4gICAgICBzd2l0Y2ggKHpzKSB7XG4gICAgICB8IFtdID0+IHRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgICAgfCBbeiwgLi4uX10gPT4gU29tZSh6KVxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBnbyA9IChkOiBBY3Rpb24ubW92ZSwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBHb2FsKFBpZWNlKHAsIGQpKSA9PiBkb191bnRpbF93cmFwKEFjdGlvbi5vZl9waWVjZV9nb2FsKHApLCBkLCB6KVxuICAgIHwgR29hbChQb2ludChnb2FsKSkgPT5cbiAgICAgIGxldCB6ID0gWmlwcGVyLnVuc2VsZWN0KHopO1xuICAgICAgZG9fdG93YXJkcyhwcmltYXJ5KEJ5Q2hhciksIGdvYWwsIHopO1xuICAgIHwgRXh0cmVtZShkKSA9PiBkb19leHRyZW1lKHByaW1hcnkoQnlUb2tlbiksIGQsIHopXG4gICAgfCBMb2NhbChkKSA9PlxuICAgICAgelxuICAgICAgfD4gKFxuICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgfCBMZWZ0KGNodW5rKSA9PiBwcmltYXJ5KGNodW5rLCBMZWZ0KVxuICAgICAgICB8IFJpZ2h0KGNodW5rKSA9PiBwcmltYXJ5KGNodW5rLCBSaWdodClcbiAgICAgICAgfCBVcCA9PiB2ZXJ0aWNhbChMZWZ0KVxuICAgICAgICB8IERvd24gPT4gdmVydGljYWwoUmlnaHQpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbm1vZHVsZSBNYWtlID0gKE06IEVkaXRvci5NZXRhLlMpID0+IHtcbiAgbW9kdWxlIE1vdmUgPSBNb3ZlLk1ha2UoTSk7XG5cbiAgbGV0IHByaW1hcnkgPSAoZDogRGlyZWN0aW9uLnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PlxuICAgIGlmICh6LmNhcmV0ID09IE91dGVyKSB7XG4gICAgICBaaXBwZXIuc2VsZWN0KGQsIHopO1xuICAgIH0gZWxzZSBpZiAoZCA9PSBMZWZ0KSB7XG4gICAgICB6XG4gICAgICB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKVxuICAgICAgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5zZWxlY3QoZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6IHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpIHw+IFppcHBlci5zZWxlY3QoZCk7XG4gICAgfTtcblxuICBsZXQgdmVydGljYWwgPSAoZDogRGlyZWN0aW9uLnQsIGVkOiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT5cbiAgICBNb3ZlLmRvX3ZlcnRpY2FsKHByaW1hcnksIGQsIGVkKTtcblxuICBsZXQgcmFuZ2UgPSAobDogSWQudCwgcjogSWQudCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgICBsZXQqIHogPSBNb3ZlLmp1bXBfdG9faWQoeiwgbCk7XG4gICAgbGV0KiBNZWFzdXJlZC57bGFzdCwgX30gPSBNZWFzdXJlZC5maW5kX2J5X2lkKHIsIE0ubWVhc3VyZWQpO1xuICAgIE1vdmUuZG9fdG93YXJkcyhwcmltYXJ5LCBsYXN0LCB6KTtcbiAgfTtcblxuICBsZXQgdGVybSA9IChpZDogSWQudCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+IHtcbiAgICAvL1RPRE86IGNoZWNrIGlmIHNlbGVjdGlvbiBpcyBhbHJlYWR5IGEgdGVybTogbm8tb3AgaW4gdGhpcyBjYXNlXG4gICAgbGV0KiAobCwgcikgPSBUZXJtUmFuZ2VzLmZpbmRfb3B0KGlkLCBNLnRlcm1fcmFuZ2VzKTtcbiAgICByYW5nZShQaWVjZS5pZChsKSwgUGllY2UuaWQociksIHopO1xuICB9O1xuXG4gIGxldCB0aWxlID0gKGlkOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IE1vdmUuanVtcF90b19pZCh6LCBpZCk7XG4gICAgbGV0KiBNZWFzdXJlZC57bGFzdCwgX30gPSBNZWFzdXJlZC5maW5kX2J5X2lkKGlkLCBNLm1lYXN1cmVkKTtcbiAgICBNb3ZlLmRvX3Rvd2FyZHMocHJpbWFyeSwgbGFzdCwgeik7XG4gIH07XG5cbiAgbGV0IGdvID0gKGQ6IEFjdGlvbi5tb3ZlLCB6OiBaaXBwZXIudCkgPT5cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IEdvYWwoUGllY2UoXykpID0+IGZhaWx3aXRoKFwiU2VsZWN0LmdvIG5vdCBpbXBsZW1lbnRlZCBmb3IgUGllY2UgR29hbFwiKVxuICAgIHwgR29hbChQb2ludChnb2FsKSkgPT5cbiAgICAgIGxldCBhbmNob3IgPSB6IHw+IFppcHBlci50b2dnbGVfZm9jdXMgfD4gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQpO1xuICAgICAgTW92ZS5kb190b3dhcmRzKH5hbmNob3IsIHByaW1hcnksIGdvYWwsIHopO1xuICAgIHwgRXh0cmVtZShkKSA9PiBNb3ZlLmRvX2V4dHJlbWUocHJpbWFyeSwgZCwgeilcbiAgICB8IExvY2FsKGQpID0+XG4gICAgICAvKiBOb3RlOiBEb24ndCB1cGRhdGUgdGFyZ2V0IG9uIHZlcnRpY2FsIHNlbGVjdGlvbiAqL1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICB8IExlZnQoXykgPT4gcHJpbWFyeShMZWZ0LCB6KVxuICAgICAgfCBSaWdodChfKSA9PiBwcmltYXJ5KFJpZ2h0LCB6KVxuICAgICAgfCBVcCA9PiB2ZXJ0aWNhbChMZWZ0LCB6KVxuICAgICAgfCBEb3duID0+IHZlcnRpY2FsKFJpZ2h0LCB6KVxuICAgICAgfVxuICAgIH07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5sZXQgYmFyZiA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIFJlbW92ZXMgdGhlIGQtbmVpZ2hib3JpbmcgdGlsZSBhbmQgZHJvcHMgZnJvbSBiYWNrcGFjaztcbiAgICAgcHJlY29uZGl0aW9uOiB0aGUgZC1uZWlnaGJvciBzaG91bGQgYmUgYSBtb25vdGlsZVxuICAgICBzdHJpbmctbWF0Y2hpbmcgdGhlIGRyb3BwaW5nIHNoYXJkICovXG4gIGxldCogeiA9IGRlbGV0ZShkLCB6KTtcbiAgbGV0KyB6ID0gcHV0X2Rvd24oZCwgeik7XG4gIHo7XG59O1xuXG5sZXQgZGVsYXllZF9leHBhbmQgPSAodDogVG9rZW4udCwgY2FyZXQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogUmVtb3ZlcyB0aGUgZC1uZWlnaGJvcmluZyB0aWxlIGFuZCByZWNvbnN0cnVjdHMgaXQsIHRyaWdnZXJpbmdcbiAgICAga2V5d29yZC1leHBhbnNpb247IHByZWNvbmRpdGlvbjogdGhlIGQtbmVpZ2hib3Igc2hvdWxkIGJlIGEgbW9ub3RpbGVcbiAgICAgc3RyaW5nLW1hdGNoaW5nIGEga2V5d29yZCBvZiBhbiBleHBhbmRpbmcgZm9ybSAqL1xuICBsZXQgKG5ld19sYWJlbCwgYmFja3BhY2spID0gTW9sZHMuZGVsYXllZF9leHBhbnNpb24odCk7XG4gIGxldCsgeiA9IGRlbGV0ZShjYXJldCwgeik7XG4gIGNvbnN0cnVjdCh+YmFja3BhY2ssIH5jYXJldCwgbmV3X2xhYmVsLCB6KTtcbn07XG5cbmxldCBleHBhbmRfb3JfYmFyZl9sZWZ0X25laWdoYm9yID0gKHogYXMgczogdCk6IG9wdGlvbih0KSA9PlxuICAvKiBJZiBsZWZ0IG5laWdoYm9yIGlzIGEgbW9ub3RpbGUgKGEpIHN0cmluZy1tYXRjaGluZyB0aGUgc2hhcmQgYXQgdGhlXG4gICAgIHRvcCBvZiB0aGUgYmFja3BhY2ssIGJhcmYgaXQsIG9yIChiKSBhbiBleHBhbnNpbmcga2V5d29yZCwgZXhwYW5kIGl0LiAqL1xuICBzd2l0Y2ggKGxlZnRfbmVpZ2hib3JfbW9ub3RpbGUoei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gIHwgU29tZSh0KSB3aGVuIEJhY2twYWNrLndpbGxfYmFyZih0LCB6LmJhY2twYWNrKSA9PiBiYXJmKExlZnQsIHMpXG4gIHwgU29tZSh0KSB3aGVuIE1vbGRzLmlzX2RlbGF5ZWQodCkgPT4gZGVsYXllZF9leHBhbmQodCwgTGVmdCwgcylcbiAgfCBfID0+IFNvbWUocylcbiAgfTtcblxubGV0IGV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yID0gKHogYXMgczogdCk6IG9wdGlvbih0KSA9PlxuICAvKiBJZiByaWdodCBuZWlnaGJvciBpcyBhIG1vbm90aWxlIChhKSBzdHJpbmctbWF0Y2hpbmcgdGhlIHNoYXJkIGF0IHRoZVxuICAgICB0b3Agb2YgdGhlIGJhY2twYWNrLCBiYXJmIGl0LCBvciAoYikgYW4gZXhwYW5zaW5nIGtleXdvcmQsIGV4cGFuZCBpdC4gKi9cbiAgc3dpdGNoIChyaWdodF9uZWlnaGJvcl9tb25vdGlsZSh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKHQpIHdoZW4gQmFja3BhY2sud2lsbF9iYXJmKHQsIHouYmFja3BhY2spID0+IGJhcmYoUmlnaHQsIHMpXG4gIHwgU29tZSh0KSB3aGVuIE1vbGRzLmlzX2RlbGF5ZWQodCkgPT4gZGVsYXllZF9leHBhbmQodCwgUmlnaHQsIHMpXG4gIHwgXyA9PiBTb21lKHMpXG4gIH07XG5cbmxldCBnZXRfZHVvX3NoYXJkID0gKHtsYWJlbCwgc2hhcmRzLCBffTogVGlsZS50KSA9PlxuICBpZiAoTGlzdC5sZW5ndGgobGFiZWwpID09IDIgJiYgTGlzdC5sZW5ndGgoc2hhcmRzKSA9PSAxKSB7XG4gICAgTGlzdC5udGhfb3B0KGxhYmVsLCBMaXN0LmhkKHNoYXJkcykpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBuZWlnaGJvcl9jYW5fZHVvbWVyZ2UgPVxuICAgICh0OiBUb2tlbi50LCBzOiBTaWJsaW5ncy50KTogb3B0aW9uKChMYWJlbC50LCBEaXJlY3Rpb24udCkpID0+XG4gIC8qIENoZWNrcyBpZiBhIG5laWdoYm9yLCBwcmVmZXJlbnRpYWxseSB0aGUgbGVmdCBuZWlnaGJvciwgaXNcbiAgICAgYSBzaGFyZCBvZiBhIGR1b3RpbGUgd2hpY2ggY2FuIGJlIG1lcmdlZCB0byBmb3JtIGEgbW9ub3RpbGUuXG4gICAgIEl0IHJldHVybnMgdGhlIHJlc3VsdGluZyAobW9ubylsYWJlbCwgYW5kIHRoZSBkaXJlY3Rpb24gb2ZcbiAgICAgdGhlIHJlbGV2YW50IG5laWdoYm9yLiAqL1xuICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycyhzKSkge1xuICB8IChTb21lKFRpbGUodGlsZSkpLCBfKSA9PlxuICAgIGxldCogc3RhcnQgPSBnZXRfZHVvX3NoYXJkKHRpbGUpO1xuICAgIGxldCsgbW9ub19sYmwgPSBGb3JtLmR1b21lcmdlcyhbc3RhcnQsIHRdKTtcbiAgICAobW9ub19sYmwsIERpcmVjdGlvbi5MZWZ0KTtcbiAgfCAoXywgU29tZShUaWxlKHRpbGUpKSkgPT5cbiAgICBsZXQqIGxhc3QgPSBnZXRfZHVvX3NoYXJkKHRpbGUpO1xuICAgIGxldCsgbW9ub19sYmwgPSBGb3JtLmR1b21lcmdlcyhbdCwgbGFzdF0pO1xuICAgIChtb25vX2xibCwgRGlyZWN0aW9uLlJpZ2h0KTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IG1ha2VfbmV3X3RpbGUgPSAodDogVG9rZW4udCwgY2FyZXQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PlxuICAvKiBBZGRzIGEgbmV3IHRpbGUgYXQgdGhlIGNhcmV0LiBJZiB0aGUgbmV3IHRva2VuIG1hdGNoZXMgdGhlIHRvcFxuICAgICBvZiB0aGUgYmFja3BhY2ssIHRoZSBiYWNrcGFjayBzaGFyZCBpcyBkcm9wcGVkLiBPdGhlcndpc2UsIHdlXG4gICAgIGNvbnN0cnVjdCBhIG5ldyB0aWxlLCB3aGljaCBtYXkgaW1tZWRpYXRlbHkgZXhwYW5kLiAqL1xuICBCYWNrcGFjay53aWxsX2JhcmYodCwgei5iYWNrcGFjaylcbiAgICA/IHN3aXRjaCAobmVpZ2hib3JfY2FuX2R1b21lcmdlKHQsIHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICAgICAgfCBTb21lKChsYmwsIGQpKSA9PlxuICAgICAgICBaaXBwZXIucmVwbGFjZSh+Y2FyZXQ9ZCwgfmJhY2twYWNrPWQsIGxibCwgeikgfD4gT3B0aW9uLmdldFxuICAgICAgfCBOb25lID0+IHB1dF9kb3duKGNhcmV0LCB6KSB8PiBPcHRpb24uZ2V0XG4gICAgICB9XG4gICAgOiB7XG4gICAgICBsZXQgKGxibCwgYmFja3BhY2spID0gTW9sZHMuaW5zdGFudF9leHBhbnNpb24odCk7XG4gICAgICBsZXQgeiA9IGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgbGJsLCB6KTtcbiAgICAgIHo7XG4gICAgfTtcblxubGV0IGV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3X3RpbGUgPSAoY2hhcjogVG9rZW4udCwgc3RhdGU6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBUcmlnZ2VyIGEgdG9rZW4gYm91bmRhcnkgZXZlbnQgYW5kIGNyZWF0ZSBhIG5ldyB0aWxlLlxuICAgICBUaGlzIHByb2Nlc3MgcG90ZW50aWFsbHkgaW52b2x2ZXMgYm90aCBuZWlnaGJvcmluZyB0aWxlcyxcbiAgICAgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyB1cCB0byAzIGV4cGFuc2lvbnMgb3IgYmFja3BhY2sgYmFyZnMuXG4gICAgIEluIHBhcnRpY3VsYXIsIGJvdGggbGVmdCBhbmQgcmlnaHQgbmVpZ2hib3JpbmcgbW9ub3RpbGVzIG1heVxuICAgICB1bmRlcmdvIGRlbGF5ZWQgKGFrYSBrZXl3b3JkKSBleHBhbnNpb24sIGFuZCB0aGUgbmV3bHktY3JlYXRlZFxuICAgICBzaW5nbGUtY2hhcmFjdGVyIHRva2VuIG1heSB1bmRlcmdvIGluc3RhbnQgZXhwYW5zaW9uLiBDdXJyZW50bHlcbiAgICAgbWFkZSB0aGUgZGVjaXNpb24gdG8gZXhwYW5kIG9yIGJhcmYgdGhlIG5laWdoYm9ycyBiZWZvcmUgbWFraW5nXG4gICAgIHRoZSBuZXcgdGlsZSBiZWNhdXNlIGJhcmZpbmcgaXMgbGltaXRlZCB0byB0aGUgdG9wIG9mIHRoZSBiYWNrcGFjayxcbiAgICAgYW5kIEkgd2FudGVkIHRoaW5ncyBsaWtlIFwiaWZ8dGhlblwiLCB3aGVuIHlvdSBlbnRlciBhIFwiKFwiLCB0b1xuICAgICBiYXJmIHRoZSBcInRoZW5cIiwgYmVmb3JlIGl0IGlzIGJ1cmllZCBieSB0aGUgXCIpXCIgYWRkZWQgdG8gdGhlIEJQLlxuICAgICBUaGUgb3JkZXIgaGVyZSBjb3VsZCBiZSByZXZpc2l0ZWQgaWYgYmFyZmluZyB3YXMgbW9yZSBzb3BoaXN0aWNhdGVkLlxuICAgICAqL1xuICBsZXQqIHogPSBleHBhbmRfb3JfYmFyZl9sZWZ0X25laWdoYm9yKHN0YXRlKTtcbiAgLy9sZXQgKHopID0gcmVncm91dChMZWZ0LCB6KTtcbiAgLyogTm90ZSB0byBkYXZpZDogSSdtIG5vdCBzdXJlIHdoeSB0aGUgYWJvdmUgcmVncm91dCBpcyBuZWNlc3NhcnkuXG4gICAgIFdpdGhvdXQgaXQsIHRoZXJlIGlzIGEgTm9uY29udmV4IHNlZ21lbnQgZXJyb3IgdGhyb3duIGluIGV4YWN0bHlcbiAgICAgb25lIGNhc2UsIHRoZSBkb3VibGUgYmFyZiBjYXNlOiBpbnNlcnQgc3BhY2Ugb24gXCJpZiB0aGVufGVsc2VcIiAqL1xuICBsZXQrIHogPSBleHBhbmRfb3JfYmFyZl9yaWdodF9uZWlnaGJvcih6KTtcbiAgbWFrZV9uZXdfdGlsZShjaGFyLCBMZWZ0LCB6KTtcbn07XG5cbmxldCByZXBsYWNlX3RpbGUgPSAodDogVG9rZW4udCwgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQrIHogPSBkZWxldGUoZCwgeik7XG4gIG1ha2VfbmV3X3RpbGUodCwgZCwgeik7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFwcGVuZGFiaWxpdHkgPVxuICB8IEFwcGVuZExlZnQoVG9rZW4udClcbiAgfCBBcHBlbmRSaWdodChUb2tlbi50KVxuICB8IE1ha2VOZXc7XG5cbmxldCBzaWJsaW5nX2FwcGVuZGFiaWxpdHk6IChzdHJpbmcsIFNpYmxpbmdzLnQpID0+IGFwcGVuZGFiaWxpdHkgPVxuICAoY2hhciwgc2libGluZ3MpID0+XG4gICAgc3dpdGNoIChuZWlnaGJvcl9tb25vdGlsZXMoc2libGluZ3MpKSB7XG4gICAgfCAoU29tZSh0KSwgXykgd2hlbiBNb2xkcy5hbGxvd19hcHBlbmRfcmlnaHQodCwgY2hhcikgPT5cbiAgICAgIEFwcGVuZExlZnQodCArKyBjaGFyKVxuICAgIHwgKF8sIFNvbWUodCkpIHdoZW4gTW9sZHMuYWxsb3dfYXBwZW5kX2xlZnQoY2hhciwgdCkgPT5cbiAgICAgIEFwcGVuZFJpZ2h0KGNoYXIgKysgdClcbiAgICB8IF8gPT4gTWFrZU5ld1xuICAgIH07XG5cbmxldCBpbnNlcnRfb3V0ZXIgPSAoY2hhcjogc3RyaW5nLCB6IGFzIHN0YXRlOiB0KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoc2libGluZ19hcHBlbmRhYmlsaXR5KGNoYXIsIHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICB8IE1ha2VOZXcgPT4gZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfdGlsZShjaGFyLCBzdGF0ZSlcbiAgfCBBcHBlbmRMZWZ0KHQpID0+IHJlcGxhY2VfdGlsZSh0LCBMZWZ0LCBzdGF0ZSlcbiAgfCBBcHBlbmRSaWdodCh0KSA9PiByZXBsYWNlX3RpbGUodCwgUmlnaHQsIHN0YXRlKVxuICB9O1xuXG5sZXQgaW5zZXJ0X2R1byA9IChsYmw6IExhYmVsLnQsIHo6IG9wdGlvbih0KSk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IE9wdGlvbi5tYXAoeiA9PiBaaXBwZXIuY29uc3RydWN0KH5jYXJldD1MZWZ0LCB+YmFja3BhY2s9TGVmdCwgbGJsLCB6KSlcbiAgfD4gT3B0VXRpbC5hbmRfdGhlbih6ID0+IHtcbiAgICAgICAvL05PVEU6IHJlZ3JvdXQgdG8gcHV0IGUuZy4gYXAoMXwpIGJhY2sgdG9nZXRoZXJcbiAgICAgICB6XG4gICAgICAgfD4gcmVtb2xkX3JlZ3JvdXQoTGVmdClcbiAgICAgICB8PiBaaXBwZXIucHV0X2Rvd24oTGVmdClcbiAgICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5tb3ZlKExlZnQpKVxuICAgICB9KTtcblxubGV0IGluc2VydF9tb25vcyA9IChsOiBUb2tlbi50LCByOiBUb2tlbi50LCB6OiBvcHRpb24odCkpOiBvcHRpb24odCkgPT5cbiAgelxuICB8PiBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3RfbW9ubyhSaWdodCwgcikpXG4gIHw+IE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdF9tb25vKExlZnQsIGwpKTtcblxubGV0IHNwbGl0ID0gKHo6IHQsIGNoYXI6IHN0cmluZywgaWR4OiBpbnQsIHQ6IFRva2VuLnQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBDdXJyZW50IHRoaXMgbmVjZXNzYXJpbHkgY3JlYXRlcyB0aHJlZSB0b2tlbnM7IHR3byBmcm9tIHNwbGl0dGluZ1xuICAgKiB0aGUgZXhpc3Rpbmcgb25lLCBhbmQgYSBuZXcgb25lLiBUaGUgdHdvIHNwbGl0dGluZyB0b2tlbnMgbWF5IGJlY29tZVxuICAgKiBkZWxpbWl0ZXJzIG9mIHRoZSBzYW1lIHRpbWUgKGUuZy4gYFt8XWA9PmBbPD58XWApLiBJbiB0aGUgZnV0dXJlIGl0XG4gICAqIG1heSBiZSBwcnVkZW50IHRvIHJlbGF4IHRoaXMgYnksIGFmdGVyIHNwbGl0dGluZywgZmlyc3QgYXR0ZW1wdGluZ1xuICAgKiB0byBhcHBlbmQgdGhlIG5ldyBjaGFyIHRvIHRoZSBsZWZ0IGhhbGYsIGFuZCB0aGVuIHRoZSByaWdodCBoYWxmLFxuICAgKiBhbmQgb25seSBpZiB0aG9zZSBmYWlsIGNyZWF0aW5nIGEgbmV3IGNlbnRlciB0b2tlbi4gKi9cbiAgbGV0IChsLCByKSA9IFRva2VuLnNwbGl0X250aChpZHgsIHQpO1xuICB6XG4gIHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpXG4gIHw+IFppcHBlci5zZWxlY3QoUmlnaHQpXG4gIHw+IChcbiAgICAvKiBvdmVyd3JpdGUgc2VsZWN0aW9uICovXG4gICAgc3dpdGNoIChGb3JtLmR1b21lcmdlcyhbbCwgcl0pKSB7XG4gICAgfCBTb21lKF8pID0+IGluc2VydF9kdW8oW2wsIHJdKVxuICAgIHwgTm9uZSA9PiBpbnNlcnRfbW9ub3MobCwgcilcbiAgICB9XG4gIClcbiAgfD4gT3B0VXRpbC5hbmRfdGhlbihleHBhbmRfbmVpZ2hib3JzX2FuZF9tYWtlX25ld190aWxlKGNoYXIpKTtcbn07XG5cbmxldCBvcHRfcmVncm9sZCA9IGQgPT4gT3B0aW9uLm1hcChyZW1vbGRfcmVncm91dChkKSk7XG5cbmxldCBtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQgPSAoY2hhciwgeikgPT5cbiAgLyogVGhpcyBpcyBzcGVjaWFsLWNhc2UgbG9naWMgZm9yIGFkdmFuY2luZyB0aGUgY2FyZXQgdG8gcG9zaXRpb24gYmV0d2VlbiB0aGUgcXVvdGVzXG4gICAgIGluIG5ld2x5LWNyZWF0ZWQgc3RyaW5nbGl0cy4gVGhlIG1haW4gc3RyaW5nbGl0IHNwZWNpYWwtY2FzZSBpcyBpbiBaaXBwZXIuY29uc3R1Y3RcbiAgICAgYW5kIGlkZWFsbHkgdGhpcyBsb2dpYyB3b3VsZCBiZSBsb2NhdGVkIHRoZXJlIGFzIHdlbGwsIGJ1dCBib3RoIHJlZ3JvdXRpbmcgYW5kXG4gICAgIHN1YnNlcXVlbnQgY2FyZXQgcG9zaXRpb24gbG9naWMgYXQgdGhpcyBmdW5jdGlvbidzIGNhbGxzaXRlcyBkaWNhdGUgdGhhdCB0aGlzXG4gICAgIGJlIGRvbmUgYWZ0ZXIuIE5vdCB0b28gaGFwcHkgYWJvdXQgdGhpcyB0YmguICovXG4gIEZvcm0uaXNfc3RyaW5nX2RlbGltKGNoYXIpIHx8IEZvcm0uaXNfY29tbWVudF9kZWxpbShjaGFyKVxuICAgID8gc3dpdGNoIChtb3ZlKExlZnQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gelxuICAgICAgfCBTb21lKHopID0+IHogfD4gc2V0X2NhcmV0KElubmVyKDAsIDApKVxuICAgICAgfVxuICAgIDogejtcblxubGV0IGNsb3Npbmdfc3RyaW5nbGl0X29yX2NvbW1lbnQgPSAoY2hhciwgdCkgPT5cbiAgRm9ybS5pc19zdHJpbmcodClcbiAgJiYgRm9ybS5pc19zdHJpbmdfZGVsaW0oY2hhcilcbiAgfHwgRm9ybS5pc19jb21tZW50KHQpXG4gICYmIEZvcm0uaXNfY29tbWVudF9kZWxpbShjaGFyKTtcblxubGV0IGdvID1cbiAgICAoY2hhcjogc3RyaW5nLCB7Y2FyZXQsIHJlbGF0aXZlczoge3NpYmxpbmdzLCBffSwgX30gYXMgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIElmIHRoZXJlJ3MgYSBzZWxlY3Rpb24sIGRlbGV0ZSBpdCBiZWZvcmUgcHJvY2VlZGluZyAqL1xuICBsZXQgeiA9IHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPyBaaXBwZXIuZGVzdHJ1Y3QoeikgOiB6O1xuICBzd2l0Y2ggKGNhcmV0LCBuZWlnaGJvcl9tb25vdGlsZXMoc2libGluZ3MpKSB7XG4gIC8qIElmIHdlIHRyeSB0byBpbnNlcnQgYSBxdW90ZSBpbnNpZGUgYW4gZXhpc3Rpbmcgc3RyaW5nLCBvciBhICNcbiAgICogaW4gYSBjb21tZW50LCB3ZSBhcmUgaW5zdGVhZCBtb3ZlZCB0byB0aGUgcmlnaHRoYW5kIHNpZGUgb2ZcbiAgICogdGhlIG9wZXJhbmQuIE5vdGUgdGhhdCB0aGlzIGJlaGF2aW9yIGlzIGxvYWQtYmVhcmluZyBmb3IgdGhlXG4gICAqIGN1cnJlbnQgcGFyc2luZyBhcHByb2FjaCBpbmNsdWRpbmcgUGFzdGUgKi9cbiAgfCAoXywgKF8sIFNvbWUodCkpKSB3aGVuIGNsb3Npbmdfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhciwgdCkgPT5cbiAgICB6IHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpIHw+IFppcHBlci5tb3ZlKFJpZ2h0KVxuICB8IChPdXRlciwgKFNvbWUodCksIF8pKSB3aGVuIGNsb3Npbmdfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhciwgdCkgPT5cbiAgICBTb21lKHopXG4gIHwgKElubmVyKGRfaWR4LCBuKSwgKF8sIFNvbWUodCkpKSA9PlxuICAgIGxldCBpZHggPSBuICsgMTtcbiAgICBsZXQgbmV3X3QgPSBUb2tlbi5pbnNlcnRfbnRoKGlkeCwgY2hhciwgdCk7XG4gICAgLyogSWYgaW5zZXJ0aW5nIHdvdWxkbid0IHByb2R1Y2UgYSB2YWxpZCB0b2tlbiwgc3BsaXQuIFRoaXMgaXNcbiAgICAgKiBtb3N0bHkgdGFyZ2V0dGluZyB0aGUgY2FzZSBvZiBpbnNlcnRpbmcgYW4gaW5maXggb3BlcmF0b3JcbiAgICAgKiBpbnNpZGUgYW4gb3BlcmFuZCAob3IgbW9yZSByYXJlbHkgdmljZS12ZXJzYSkuIEluIHN1Y2ggY2FzZXMsXG4gICAgICogZHVlIHRvIHRoZSBjdXJyZW50IE1PU1RMWSBkaXNqb2ludGVkbmVzcyBvZiB0aGVzZSBjaGFyYWN0ZXJcbiAgICAgKiBjbGFzc2VzLCBBTEwgKGlzaD8pIGN1cnJlbnQgc3BsaXRzIHNob3VsZCBiZSAzLXdheVxuICAgICAqIHNwbGl0cyAoYXMgb3Bwb3NlZCB0byAyLXdheSkuIFRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5XG4gICAgICoga2luZCBvZiBzcGxpdHRpbmcgc3VwcG9ydGVkOyB0aGlzIHNob3VsZCBiZSByZXZpc2l0ZWQgaWZcbiAgICAgKiB3ZSBtb3ZlIHRvIG1vcmUgc3VidGxlIHRva2VuIGRpdmlzaW9uIGxvZ2ljICovXG4gICAgTW9sZHMuYWxsb3dfaW5zZXJ0aW9uKGNoYXIsIHQsIG5ld190KVxuICAgICAgPyB6XG4gICAgICAgIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoZF9pZHgsIGlkeCkpXG4gICAgICAgIHw+IFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIG5ld190KVxuICAgICAgICB8PiBvcHRfcmVncm9sZChMZWZ0KVxuICAgICAgOiBzcGxpdCh6LCBjaGFyLCBpZHgsIHQpIHw+IG9wdF9yZWdyb2xkKFJpZ2h0KTtcbiAgLyogQ2FuJ3QgaW5zZXJ0IGluc2lkZSBkZWxpbWl0ZXIgKi9cbiAgfCAoSW5uZXIoXywgXyksIChfLCBOb25lKSkgPT4gTm9uZVxuICB8IChPdXRlciwgKF8sIFNvbWUoXykpKSA9PlxuICAgIGxldCBjYXJldDogWmlwcGVyLkNhcmV0LnQgPVxuICAgICAgc3dpdGNoIChzaWJsaW5nX2FwcGVuZGFiaWxpdHkoY2hhciwgc2libGluZ3MpKSB7XG4gICAgICB8IEFwcGVuZFJpZ2h0KF8pID0+XG4gICAgICAgIC8qIElmIHdlJ3JlIGFkZGluZyB0byB0aGUgcmlnaHQsIG1vdmUgY2FyZXQgaW5zaWRlIHJpZ2h0IG5oYnIuXG4gICAgICAgICAqIE5vdGUgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGlzIGlzIGEgbW9ub3RpbGUgKi9cbiAgICAgICAgSW5uZXIoMCwgMClcbiAgICAgIHwgTWFrZU5ld1xuICAgICAgfCBBcHBlbmRMZWZ0KF8pID0+IE91dGVyXG4gICAgICB9O1xuICAgIHpcbiAgICB8PiBpbnNlcnRfb3V0ZXIoY2hhcilcbiAgICB8PiBPcHRpb24ubWFwKFppcHBlci5zZXRfY2FyZXQoY2FyZXQpKVxuICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgfD4gT3B0aW9uLm1hcChtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhcikpO1xuICB8IChPdXRlciwgKF8sIE5vbmUpKSA9PlxuICAgIHpcbiAgICB8PiBpbnNlcnRfb3V0ZXIoY2hhcilcbiAgICB8PiBvcHRfcmVncm9sZChMZWZ0KVxuICAgIHw+IE9wdGlvbi5tYXAobW92ZV9pbnRvX2lmX3N0cmluZ2xpdF9vcl9jb21tZW50KGNoYXIpKVxuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gVXRpbC5PcHRVdGlsLlN5bnRheDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBjb2RlOiBsaXN0KHN0cmluZyksXG4gIHNlbGVjdGlvbjogbGlzdChzdHJpbmcpLFxuICBiYWNrcGFjazogbGlzdChsaXN0KHN0cmluZykpLFxufTtcblxubGV0IHNlZ19vZl96aXAgPSBaaXBwZXIuc2VnX3dpdGhvdXRfYnVmZmVyO1xuXG5sZXQgcmVjIG9mX3NlZ21lbnQgPSAofmhvbGVzLCBzZWc6IFNlZ21lbnQudCk6IHN0cmluZyA9PlxuICBzZWcgfD4gTGlzdC5tYXAob2ZfcGllY2UofmhvbGVzKSkgfD4gU3RyaW5nLmNvbmNhdChcIlwiKVxuYW5kIG9mX3BpZWNlID0gKH5ob2xlcywgcDogUGllY2UudCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKHApIHtcbiAgfCBUaWxlKHQpID0+IG9mX3RpbGUofmhvbGVzLCB0KVxuICB8IEdyb3V0KHtzaGFwZTogQ29uY2F2ZSwgX30pID0+IFwiIFwiXG4gIHwgR3JvdXQoe3NoYXBlOiBDb252ZXgsIF99KSB3aGVuIGhvbGVzICE9IE5vbmUgPT4gT3B0aW9uLmdldChob2xlcylcbiAgfCBHcm91dCh7c2hhcGU6IENvbnZleCwgX30pID0+IFwiIFwiXG4gIHwgU2Vjb25kYXJ5KHcpID0+XG4gICAgU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KSA/IFwiXFxuXCIgOiBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpXG4gIH1cbmFuZCBvZl90aWxlID0gKH5ob2xlcywgdDogVGlsZS50KTogc3RyaW5nID0+XG4gIEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbilcbiAgfD4gQWJhLmpvaW4ob2ZfZGVsaW0odCksIG9mX3NlZ21lbnQofmhvbGVzKSlcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlwiKVxuYW5kIG9mX2RlbGltID0gKHQ6IFBpZWNlLnRpbGUsIGk6IGludCk6IHN0cmluZyA9PiBMaXN0Lm50aCh0LmxhYmVsLCBpKTtcblxubGV0IHRvX3N0cmluZ19iYXNpYyA9ICh6OiBaaXBwZXIudCk6IHN0cmluZyA9PiB7XG4gIHogfD4gc2VnX29mX3ppcCB8PiBvZl9zZWdtZW50KH5ob2xlcz1Ob25lKTtcbn07XG5cbmxldCBsaW5lc190b19saXN0ID0gU3RyaW5nLnNwbGl0X29uX2NoYXIoJ1xcbicpO1xuXG5sZXQgY2FyZXRfc3RyID0gXCLilpFcIjtcblxubGV0IHRvX3Jvd3MgPVxuICAgIChcbiAgICAgIH5ob2xlczogb3B0aW9uKHN0cmluZyksXG4gICAgICB+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsXG4gICAgICB+Y2FyZXQ6IG9wdGlvbihNZWFzdXJlZC5Qb2ludC50KSxcbiAgICAgIH5pbmRlbnQ6IHN0cmluZyxcbiAgICAgIH5zZWdtZW50OiBTZWdtZW50LnQsXG4gICAgKVxuICAgIDogbGlzdChzdHJpbmcpID0+IHtcbiAgbGV0IGluZGVudF9vZiA9IGkgPT4gTWVhc3VyZWQuUm93cy5maW5kKGksIG1lYXN1cmVkLnJvd3MpLmluZGVudDtcbiAgbGV0IG1rX2luZGVudCA9IChpLCByKSA9PiBTdHJpbmdVdGlsLnJlcGVhdChpbmRlbnRfb2YoaSksIGluZGVudCkgKysgcjtcbiAgbGV0IHJvd3MgPVxuICAgIHNlZ21lbnQgfD4gb2Zfc2VnbWVudCh+aG9sZXMpIHw+IGxpbmVzX3RvX2xpc3QgfD4gTGlzdC5tYXBpKG1rX2luZGVudCk7XG4gIHN3aXRjaCAoY2FyZXQpIHtcbiAgfCBTb21lKHtyb3csIGNvbH0pID0+XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9udGhfb3B0KHJvdywgcm93cykpIHtcbiAgICB8IFNvbWUoKHByZSwgY2FyZXRfcm93LCBzdWYpKSB3aGVuIGNvbCA8IFN0cmluZy5sZW5ndGgoY2FyZXRfcm93KSA9PlxuICAgICAgcHJlIEAgW1N0cmluZ1V0aWwuaW5zZXJ0X250aChjb2wsIGNhcmV0X3N0ciwgY2FyZXRfcm93KV0gQCBzdWZcbiAgICB8IFNvbWUoKHByZSwgY2FyZXRfcm93LCBzdWYpKSA9PiBwcmUgQCBbY2FyZXRfcm93ICsrIGNhcmV0X3N0cl0gQCBzdWZcbiAgICB8IF8gPT4gcm93c1xuICAgIH1cbiAgfCBOb25lID0+IHJvd3NcbiAgfTtcbn07XG5cbmxldCBwcmV0dHlfcHJpbnQgPSAofm1lYXN1cmVkOiBNZWFzdXJlZC50LCB6OiBaaXBwZXIudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5ob2xlcz1Ob25lLFxuICAgIH5tZWFzdXJlZCxcbiAgICB+Y2FyZXQ9Tm9uZSxcbiAgICB+aW5kZW50PVwiIFwiLFxuICAgIH5zZWdtZW50PXNlZ19vZl96aXAoeiksXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX3N0cmluZ19lZGl0b3IgPVxuICAgICh+aG9sZXM6IG9wdGlvbihzdHJpbmcpPVNvbWUoXCJcIiksIGVkaXRvcjogRWRpdG9yLnQpOiBzdHJpbmcgPT5cbiAgdG9fcm93cyhcbiAgICB+aG9sZXMsXG4gICAgfm1lYXN1cmVkPWVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkLFxuICAgIH5jYXJldD1Ob25lLFxuICAgIH5pbmRlbnQ9XCJcIixcbiAgICB+c2VnbWVudD1zZWdfb2ZfemlwKGVkaXRvci5zdGF0ZS56aXBwZXIpLFxuICApXG4gIHw+IFN0cmluZy5jb25jYXQoXCJcXG5cIik7XG5cbmxldCB0b19zdHJpbmdfc2VsZWN0aW9uID0gKGVkaXRvcjogRWRpdG9yLnQpOiBzdHJpbmcgPT5cbiAgdG9fcm93cyhcbiAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgfmNhcmV0PU5vbmUsXG4gICAgfmluZGVudD1cIiBcIixcbiAgICB+aG9sZXM9Tm9uZSxcbiAgICB+c2VnbWVudD1lZGl0b3Iuc3RhdGUuemlwcGVyLnNlbGVjdGlvbi5jb250ZW50LFxuICApXG4gIHw+IFN0cmluZy5jb25jYXQoXCJcXG5cIik7XG5cbmxldCB0b19sb2cgPSAofm1lYXN1cmVkOiBNZWFzdXJlZC50LCB6OiBaaXBwZXIudCk6IHQgPT4ge1xuICBjb2RlOlxuICAgIHRvX3Jvd3MoXG4gICAgICB+aG9sZXM9Tm9uZSxcbiAgICAgIH5tZWFzdXJlZCxcbiAgICAgIH5jYXJldD1Tb21lKFppcHBlci5jYXJldF9wb2ludChtZWFzdXJlZCwgeikpLFxuICAgICAgfmluZGVudD1cIiBcIixcbiAgICAgIH5zZWdtZW50PXNlZ19vZl96aXAoeiksXG4gICAgKSxcbiAgc2VsZWN0aW9uOiB6LnNlbGVjdGlvbi5jb250ZW50IHw+IG9mX3NlZ21lbnQofmhvbGVzPU5vbmUpIHw+IGxpbmVzX3RvX2xpc3QsXG4gIGJhY2twYWNrOlxuICAgIExpc3QubWFwKFxuICAgICAgKHM6IFNlbGVjdGlvbi50KSA9PlxuICAgICAgICBzLmNvbnRlbnQgfD4gb2Zfc2VnbWVudCh+aG9sZXM9Tm9uZSkgfD4gbGluZXNfdG9fbGlzdCxcbiAgICAgIHouYmFja3BhY2ssXG4gICAgKSxcbn07XG5cbmxldCB0b19sb2dfZmxhdCA9ICh+bWVhc3VyZWQsIHo6IFppcHBlci50KTogc3RyaW5nID0+IHtcbiAgbGV0IHtjb2RlLCBzZWxlY3Rpb24sIGJhY2twYWNrfSA9IHRvX2xvZyh+bWVhc3VyZWQsIHopO1xuICBQcmludGYuc3ByaW50ZihcbiAgICBcIkNPREU6XFxuJXNcXG5TRUxFQ1RJT046XFxuJXNcXG4lc1xcblwiLFxuICAgIFN0cmluZy5jb25jYXQoXCJcXG5cIiwgY29kZSksXG4gICAgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBzZWxlY3Rpb24pLFxuICAgIGJhY2twYWNrXG4gICAgfD4gTGlzdC5tYXBpKChpLCBiKSA9PlxuICAgICAgICAgUHJpbnRmLnNwcmludGYoXCJCUCglZCk6XFxuICVzXFxuXCIsIGksIFN0cmluZy5jb25jYXQoXCJcXG5cIiwgYikpXG4gICAgICAgKVxuICAgIHw+IFN0cmluZy5jb25jYXQoXCJcIiksXG4gICk7XG59O1xuXG5sZXQgemlwcGVyX29mX3N0cmluZyA9XG4gICAgKH56aXBwZXJfaW5pdD1aaXBwZXIuaW5pdCgpLCBzdHI6IHN0cmluZyk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICBsZXQgaW5zZXJ0ID0gKHo6IG9wdGlvbihaaXBwZXIudCksIGM6IHN0cmluZyk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IHo7XG4gICAgdHJ5KGMgPT0gXCJcXHJcIiA/IFNvbWUoeikgOiBJbnNlcnQuZ28oYyA9PSBcIlxcblwiID8gRm9ybS5saW5lYnJlYWsgOiBjLCB6KSkge1xuICAgIHwgZXhuID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiV0FSTjogemlwcGVyX29mX3N0cmluZzogXCIgKysgUHJpbnRleGMudG9fc3RyaW5nKGV4bikpO1xuICAgICAgTm9uZTtcbiAgICB9O1xuICB9O1xuICBzdHIgfD4gVXRpbC5TdHJpbmdVdGlsLnRvX2xpc3QgfD4gTGlzdC5mb2xkX2xlZnQoaW5zZXJ0LCBTb21lKHppcHBlcl9pbml0KSk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICB6aXBwZXI6IHN0cmluZyxcbiAgYmFja3VwX3RleHQ6IHN0cmluZyxcbn07XG5cbmxldCBwZXJzaXN0ID0gKHppcHBlcjogWmlwcGVyLnQpID0+IHtcbiAge1xuICAgIHppcHBlcjogWmlwcGVyLnNleHBfb2ZfdCh6aXBwZXIpIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmcsXG4gICAgYmFja3VwX3RleHQ6IFByaW50ZXIudG9fc3RyaW5nX2Jhc2ljKHppcHBlciksXG4gIH07XG59O1xuXG5sZXQgdW5wZXJzaXN0ID0gKHBlcnNpc3RlZDogdCkgPT5cbiAgdHJ5KFNleHBsaWIuU2V4cC5vZl9zdHJpbmcocGVyc2lzdGVkLnppcHBlcikgfD4gWmlwcGVyLnRfb2Zfc2V4cCkge1xuICB8IF8gPT5cbiAgICBwcmludF9lbmRsaW5lKFxuICAgICAgXCJXYXJuaW5nOiB1c2luZyBiYWNrdXAgdGV4dCEgU2VyaWFsaXphdGlvbiBtYXkgYmUgZm9yIGFuIG9sZGVyIHZlcnNpb24gb2YgSGF6ZWwuXCIsXG4gICAgKTtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhwZXJzaXN0ZWQuYmFja3VwX3RleHQpKSB7XG4gICAgfCBOb25lID0+IFppcHBlci5pbml0KClcbiAgICB8IFNvbWUoeikgPT4gelxuICAgIH07XG4gIH07XG5cbmxldCBzZXJpYWxpemUgPSAoemlwcGVyOiBaaXBwZXIudCkgPT4ge1xuICBwZXJzaXN0KHppcHBlcikgfD4geW9qc29uX29mX3QgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBsZXQgcGVyc2lzdGVkID0gZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiB0X29mX3lvanNvbjtcbiAgdW5wZXJzaXN0KHBlcnNpc3RlZCk7XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5sZXQgZGVzdHJ1Y3QgPVxuICAgIChcbiAgICAgIGQ6IERpcmVjdGlvbi50LFxuICAgICAge2NhcmV0LCByZWxhdGl2ZXM6IHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgX30sIF99IGFzIHo6IHQsXG4gICAgKVxuICAgIDogb3B0aW9uKHQpID0+IHtcbiAgLyogQ291bGQgYWRkIGNoZWNrcyBvbiB2YWxpZCB0b2tlbnMgKGFsbCBvZiB0aGVzZSBob2xkIGFzc3VtaW5nIHN1YnN0cmluZykgKi9cbiAgbGV0IGxhc3RfaW5uZXJfcG9zID0gdCA9PiBUb2tlbi5sZW5ndGgodCkgLSAyO1xuICBsZXQgZGVsZXRlX3JpZ2h0ID0geiA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLmRlbGV0ZShSaWdodCk7XG4gIGxldCBkZWxldGVfbGVmdCA9IFppcHBlci5kZWxldGUoTGVmdCk7XG4gIGxldCBjb25zdHJ1Y3RfcmlnaHQgPSAobCwgcykgPT5cbiAgICBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PVJpZ2h0LCB+YmFja3BhY2s9UmlnaHQsIGwpLCBzKTtcbiAgbGV0IGNvbnN0cnVjdF9sZWZ0ID0gKGwsIHMpID0+XG4gICAgT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0KH5jYXJldD1MZWZ0LCB+YmFja3BhY2s9TGVmdCwgbCksIHMpO1xuICBzd2l0Y2ggKGQsIGNhcmV0LCBuZWlnaGJvcl9tb25vdGlsZXMoKGxfc2licywgcl9zaWJzKSkpIHtcbiAgLyogV2hlbiB0aGVyZSdzIGEgc2VsZWN0aW9uLCBkZWZlciB0byBPdXRlciAqL1xuICB8IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IHogfD4gWmlwcGVyLmRlc3RydWN0IHw+IE9wdGlvbi5zb21lXG4gIC8qIFNwZWNpYWwgY2FzZXMgZm9yIG1vbm8gZm9ybXMgd2hpY2ggY2FuIHNwbGl0IGludG8gZHVvIGZvcm1zLFxuICAgICBlLmcuIGxpc3QgbGl0ZXJhbHMuIFdoZW4gZGVsZXRpb24gd291bGQgYWx0ZXIgdGhlIG1vbm8gZm9ybSxcbiAgICAgd2UgcmVwbGFjZSBpdCB0byB0aGUgY29ycmVzcG9uZGluZyBkdW8gZm9ybS4gICovXG4gIHwgKExlZnQsIE91dGVyLCAoU29tZSh0KSwgXykpIHdoZW4gRm9ybS5kdW9zcGxpdHModCkgIT0gW10gPT5cbiAgICB6IHw+IGRlbGV0ZV9sZWZ0IHw+IGNvbnN0cnVjdF9sZWZ0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChSaWdodCwgT3V0ZXIsIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9yaWdodChGb3JtLmR1b3NwbGl0cyh0KSlcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9yaWdodChGb3JtLmR1b3NwbGl0cyh0KSlcbiAgfCAoUmlnaHQsIElubmVyKF8sIG4pLCAoXywgU29tZSh0KSkpXG4gICAgICB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdICYmIG4gPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICB6IHw+IGRlbGV0ZV9yaWdodCB8PiBjb25zdHJ1Y3RfbGVmdChGb3JtLmR1b3NwbGl0cyh0KSlcbiAgLyogU3BlY2lhbCBjYXNlcyBmb3Igc3RyaW5nIGxpdGVyYWxzLiBXaGVuIGRlbGV0aW9uIHdvdWxkXG4gICAgIHJlbW92ZSBhbiBvdXRlciBxdW90ZSwgd2UgaW5zdGVhZCByZW1vdmUgdGhlIHdob2xlIHN0cmluZyAqL1xuICB8IChMZWZ0LCBPdXRlciwgKFNvbWUodCksIF8pKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfbGVmdCh6KVxuICB8IChSaWdodCwgT3V0ZXIsIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgfHwgRm9ybS5pc19jb21tZW50KHQpID0+XG4gICAgZGVsZXRlX3JpZ2h0KHopXG4gIHwgKExlZnQsIElubmVyKF8sIDApLCAoXywgU29tZSh0KSkpIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgfHwgRm9ybS5pc19jb21tZW50KHQpID0+XG4gICAgZGVsZXRlX3JpZ2h0KHopXG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBuKSwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlblxuICAgICAgICAoRm9ybS5pc19zdHJpbmcodCkgfHwgRm9ybS5pc19jb21tZW50KHQpKSAmJiBuID09IGxhc3RfaW5uZXJfcG9zKHQpID0+XG4gICAgZGVsZXRlX3JpZ2h0KHopIC8qIFJlbW92ZSBpbm5lciBjaGFyYWN0ZXIgKi9cbiAgfCAoTGVmdCwgSW5uZXIoXywgY19pZHgpLCAoXywgU29tZSh0KSkpID0+XG4gICAgbGV0IHogPSBaaXBwZXIudXBkYXRlX2NhcmV0KFppcHBlci5DYXJldC5kZWNyZW1lbnQsIHopO1xuICAgIFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIFRva2VuLnJtX250aChjX2lkeCwgdCksIHopO1xuICB8IChSaWdodCwgSW5uZXIoXywgY19pZHgpLCAoXywgU29tZSh0KSkpIHdoZW4gY19pZHggPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9udGgoY19pZHggKyAxLCB0KSwgeilcbiAgICB8PiBPcHRVdGlsLmFuZF90aGVuKHogPT5cbiAgICAgICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gICAgICAgKSAvKiBJZiBub3Qgb24gbGFzdCBpbm5lciBwb3NpdGlvbiAqL1xuICB8IChSaWdodCwgSW5uZXIoXywgY19pZHgpLCAoXywgU29tZSh0KSkpID0+XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fbnRoKGNfaWR4ICsgMSwgdCksIHopXG4gIC8qIENhbid0IHN1YmRlc3RydWN0IGluIGRlbGltaXRlciwgc28ganVzdCBkZXN0cnVjdCBvbiB3aG9sZSBkZWxpbWl0ZXIgKi9cbiAgfCAoTGVmdCwgSW5uZXIoXyksIChfLCBOb25lKSlcbiAgfCAoUmlnaHQsIElubmVyKF8pLCAoXywgTm9uZSkpID0+XG4gICAgLyogTm90ZTogQ291bnRlcmludHVpdHZlLCBidXQgeWVzLCB0aGVzZSBjYXNlcyBhcmUgaWRlbnRpY2FsbHkgaGFuZGxlZCAqL1xuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLmRlbGV0ZShSaWdodClcblxuICAvL3wgKF8sIElubmVyKF8pLCAoXywgTm9uZSkpID0+IE5vbmVcbiAgfCAoTGVmdCwgT3V0ZXIsIChTb21lKHQpLCBfKSkgd2hlbiBUb2tlbi5sZW5ndGgodCkgPiAxID0+XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhMZWZ0LCBUb2tlbi5ybV9sYXN0KHQpLCB6KVxuICB8IChSaWdodCwgT3V0ZXIsIChfLCBTb21lKHQpKSkgd2hlbiBUb2tlbi5sZW5ndGgodCkgPiAxID0+XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fZmlyc3QodCksIHopXG4gIHwgKF8sIE91dGVyLCAoU29tZShfKSwgXykpIC8qIHQubGVuZ3RoID09IDEgKi9cbiAgfCAoXywgT3V0ZXIsIChOb25lLCBfKSkgPT4geiB8PiBaaXBwZXIuZGVsZXRlKGQpXG4gIH07XG59O1xuXG5sZXQgbWVyZ2UgPSAoKGwsIHIpOiAoVG9rZW4udCwgVG9rZW4udCksIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgelxuICB8PiBaaXBwZXIuc2V0X2NhcmV0KElubmVyKDAsIFRva2VuLmxlbmd0aChsKSAtIDEpKSAgLy8gbm90ZSBtb25vdGlsZSBhc3N1bXB0aW9uXG4gIHw+IFppcHBlci5kZWxldGUoTGVmdClcbiAgfD4gT3B0VXRpbC5hbmRfdGhlbihaaXBwZXIuZGVsZXRlKFJpZ2h0KSlcbiAgfD4gT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0X21vbm8oUmlnaHQsIGwgKysgcikpO1xuXG4vKiBDaGVjayBpZiBjb250YWluaW5nIGR1byBmb3JtIGhhcyBhIG1vbm8gZXF1aXZhbGVudCBlLmcuIGxpc3QgbGl0ZXJhbHMgKi9cbmxldCBwYXJlbnRfZHVvbWVyZ2VzID0gKHo6IFppcHBlci50KSA9PiB7XG4gIGxldCogcGFyZW50ID0gUmVsYXRpdmVzLnBhcmVudCh6LnJlbGF0aXZlcyk7XG4gIGxldCogbGJsID0gUGllY2UubGFiZWwocGFyZW50KTtcbiAgRm9ybS5kdW9tZXJnZXMobGJsKTtcbn07XG5cbmxldCBnbyA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCogeiA9IGRlc3RydWN0KGQsIHopO1xuICBzd2l0Y2ggKFxuICAgIHBhcmVudF9kdW9tZXJnZXMoeiksXG4gICAgei5jYXJldCxcbiAgICBuZWlnaGJvcl9tb25vdGlsZXMoei5yZWxhdGl2ZXMuc2libGluZ3MpLFxuICApIHtcbiAgfCAoU29tZShsYmwpLCBPdXRlciwgKE5vbmUsIE5vbmUpKVxuICAgICAgd2hlbiBTaWJsaW5ncy5ub19zaWJsaW5ncyh6LnJlbGF0aXZlcy5zaWJsaW5ncykgPT5cbiAgICAvKiBOb3RlOiB3ZSBtdXN0IGRvIHRoZSBub19zaWJsaW5ncyBjaGVjaywgaXQgZG9lcyBub3Qgc3VmZmljZVxuICAgICAgIHRvIGNoZWNrIG5vIG1vbm90aWxlIG5laWdoYm9ycyBhcyB0aGVyZSBjb3VsZCBiZSBvdGhlciBuZWlnaGJvcnNcbiAgICAgICBmb3IgZXhhbXBsZSBlZGdlIGNhc2U6IFwiKCh8KSlcIiAqL1xuICAgIHpcbiAgICB8PiBaaXBwZXIuZGVsZXRlX3BhcmVudFxuICAgIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoMCwgMCkpXG4gICAgfD4gWmlwcGVyLmNvbnN0cnVjdCh+Y2FyZXQ9UmlnaHQsIH5iYWNrcGFjaz1MZWZ0LCBsYmwpXG4gICAgLyogQmVsb3cgcmVncm91dGluZyBpbXBvcnRhbnQgZm9yIHBhcmVucy9hcCBwb3NpdGlvbmluZyAqL1xuICAgIHw+IFppcHBlci5yZWdyb3V0KFJpZ2h0KVxuICAgIHw+IE9wdGlvbi5zb21lXG4gIHwgKF8sIE91dGVyLCAoU29tZShsKSwgU29tZShyKSkpIHdoZW4gTW9sZHMuYWxsb3dfbWVyZ2UobCwgcikgPT5cbiAgICBtZXJnZSgobCwgciksIHopXG4gIHwgXyA9PiBTb21lKHopXG4gIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBaaXBwZXI7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5sZXQgaXNfd3JpdGVfYWN0aW9uID0gKGE6IEFjdGlvbi50KSA9PiB7XG4gIHN3aXRjaCAoYSkge1xuICB8IE1vdmUoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IFVuc2VsZWN0KF8pXG4gIHwgSnVtcChfKVxuICB8IFNlbGVjdChfKVxuICB8IFN1Z2dlc3QoXylcbiAgfCBSZXNldFN1Z2dlc3Rpb24gPT4gZmFsc2VcbiAgfCBEZXN0cnVjdChfKVxuICB8IEluc2VydChfKVxuICB8IFBpY2tfdXBcbiAgfCBQdXRfZG93blxuICB8IFJvdGF0ZUJhY2twYWNrXG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoXylcbiAgfCBQYXN0ZShfKSA9PiB0cnVlXG4gIH07XG59O1xuXG5sZXQgcmVjIGdvX3ogPVxuICAgICAgICAoXG4gICAgICAgICAgfm1ldGE6IG9wdGlvbihFZGl0b3IuTWV0YS50KT0/LFxuICAgICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICAgICAgYTogQWN0aW9uLnQsXG4gICAgICAgICAgejogWmlwcGVyLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBBY3Rpb24uUmVzdWx0LnQoWmlwcGVyLnQpID0+IHtcbiAgbGV0IG1ldGEgPVxuICAgIHN3aXRjaCAobWV0YSkge1xuICAgIHwgU29tZShtKSA9PiBtXG4gICAgfCBOb25lID0+IEVkaXRvci5NZXRhLmluaXQoeilcbiAgICB9O1xuICBtb2R1bGUgTSA9ICh2YWwgRWRpdG9yLk1ldGEubW9kdWxlX29mX3QobWV0YSkpO1xuICBtb2R1bGUgTW92ZSA9IE1vdmUuTWFrZShNKTtcbiAgbW9kdWxlIFNlbGVjdCA9IFNlbGVjdC5NYWtlKE0pO1xuXG4gIGxldCBzZWxlY3RfdGVybV9jdXJyZW50ID0geiA9PlxuICAgIHN3aXRjaCAoSW5kaWNhdGVkLmluZGV4KHopKSB7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIHwgU29tZShpZCkgPT5cbiAgICAgIHN3aXRjaCAoU2VsZWN0LnRlcm0oaWQsIHopKSB7XG4gICAgICB8IFNvbWUoeikgPT4gT2soeilcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIH1cbiAgICB9O1xuXG4gIHN3aXRjaCAoYSkge1xuICB8IE1vdmUoZCkgPT5cbiAgICBNb3ZlLmdvKGQsIHopIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSlcbiAgfCBNb3ZlVG9OZXh0SG9sZShkKSA9PlxuICAgIE1vdmUuZ28oR29hbChQaWVjZShHcm91dCwgZCkpLCB6KVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSlcbiAgfCBKdW1wKGp1bXBfdGFyZ2V0KSA9PlxuICAgIG9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbiAgICBsZXQgaWR4ID0gSW5kaWNhdGVkLmluZGV4KHopO1xuICAgIGxldCAodGVybSwgXykgPVxuICAgICAgVXRpbC5UaW1lVXRpbC5tZWFzdXJlX3RpbWUoXCJQZXJmb3JtLmdvX3ogPT4gTWFrZVRlcm0uZnJvbV96aXBcIiwgdHJ1ZSwgKCkgPT5cbiAgICAgICAgTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcoeilcbiAgICAgICk7XG4gICAgbGV0IHN0YXRpY3MgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuXG4gICAgKFxuICAgICAgc3dpdGNoIChqdW1wX3RhcmdldCkge1xuICAgICAgfCBCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyID0+XG4gICAgICAgIGxldCogaWR4ID0gaWR4O1xuICAgICAgICBsZXQqIGNpID0gSWQuTWFwLmZpbmRfb3B0KGlkeCwgc3RhdGljcyk7XG4gICAgICAgIGxldCogYmluZGluZ19pZCA9IEluZm8uZ2V0X2JpbmRpbmdfc2l0ZShjaSk7XG4gICAgICAgIE1vdmUuanVtcF90b19pZCh6LCBiaW5kaW5nX2lkKTtcbiAgICAgIHwgVGlsZUlkKGlkKSA9PiBNb3ZlLmp1bXBfdG9faWQoeiwgaWQpXG4gICAgICB9XG4gICAgKVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSk7XG4gIHwgVW5zZWxlY3QoU29tZShkKSkgPT4gT2soWmlwcGVyLmRpcmVjdGlvbmFsX3Vuc2VsZWN0KGQsIHopKVxuICB8IFVuc2VsZWN0KE5vbmUpID0+XG4gICAgbGV0IHogPSBaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3Qoei5zZWxlY3Rpb24uZm9jdXMsIHopO1xuICAgIE9rKHopO1xuICB8IFNlbGVjdChBbGwpID0+XG4gICAgc3dpdGNoIChNb3ZlLmRvX2V4dHJlbWUoTW92ZS5wcmltYXJ5KEJ5VG9rZW4pLCBVcCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIHN3aXRjaCAoU2VsZWN0LmdvKEV4dHJlbWUoRG93biksIHopKSB7XG4gICAgICB8IFNvbWUoeikgPT4gT2soeilcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIH1cbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfVxuICB8IFNlbGVjdChUZXJtKEN1cnJlbnQpKSA9PiBzZWxlY3RfdGVybV9jdXJyZW50KHopXG4gIHwgU2VsZWN0KFNtYXJ0KSA9PlxuICAgIC8qIElmIHRoZSBjdXJyZW50IHRpbGUgaXMgbm90IGNvaW5jaWRlbnQgd2l0aCB0aGUgdGVybSxcbiAgICAgICBzZWxlY3QgdGhlIHRlcm0uIE90aGVyd2lzZSwgc2VsZWN0IHRoZSBwYXJlbnQgdGVybS4gKi9cbiAgICBsZXQgdGlsZV9pc190ZXJtID1cbiAgICAgIHN3aXRjaCAoSW5kaWNhdGVkLmluZGV4KHopKSB7XG4gICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgIHwgU29tZShpZCkgPT4gU2VsZWN0LnRpbGUoaWQsIHopID09IFNlbGVjdC50ZXJtKGlkLCB6KVxuICAgICAgfTtcbiAgICBpZiAoIXRpbGVfaXNfdGVybSkge1xuICAgICAgc2VsZWN0X3Rlcm1fY3VycmVudCh6KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9QRVJGOiB0aGlzIGlzIGV4cGVuc2l2ZVxuICAgICAgbGV0ICh0ZXJtLCBfKSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl92aWV3KHopO1xuICAgICAgbGV0IHN0YXRpY3MgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuICAgICAgbGV0IHRhcmdldCA9XG4gICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgSW5kaWNhdGVkLmluZGV4KHopXG4gICAgICAgICAgfD4gT3B0VXRpbC5hbmRfdGhlbihpZHggPT4gSWQuTWFwLmZpbmRfb3B0KGlkeCwgc3RhdGljcykpXG4gICAgICAgICkge1xuICAgICAgICB8IFNvbWUoY2kpID0+XG4gICAgICAgICAgc3dpdGNoIChJbmZvLmFuY2VzdG9yc19vZihjaSkpIHtcbiAgICAgICAgICB8IFtdID0+IE5vbmVcbiAgICAgICAgICB8IFtwYXJlbnQsIC4uLl9dID0+IFNvbWUocGFyZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB8IFNvbWUoaWQpID0+XG4gICAgICAgIHN3aXRjaCAoU2VsZWN0LnRlcm0oaWQsIHopKSB7XG4gICAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfCBTZWxlY3QoVGVybShJZChpZCwgZCkpKSA9PlxuICAgIHN3aXRjaCAoU2VsZWN0LnRlcm0oaWQsIHopKSB7XG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgeiA9IGQgPT0gUmlnaHQgPyB6IDogWmlwcGVyLnRvZ2dsZV9mb2N1cyh6KTtcbiAgICAgIE9rKHopO1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFRpbGUoQ3VycmVudCkpID0+XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QudGlsZShpZCwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIH1cbiAgfCBTZWxlY3QoVGlsZShJZChpZCwgZCkpKSA9PlxuICAgIHN3aXRjaCAoU2VsZWN0LnRpbGUoaWQsIHopKSB7XG4gICAgfCBTb21lKHopID0+XG4gICAgICBsZXQgeiA9IGQgPT0gUmlnaHQgPyB6IDogWmlwcGVyLnRvZ2dsZV9mb2N1cyh6KTtcbiAgICAgIE9rKHopO1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFJlc2l6ZShkKSkgPT5cbiAgICBTZWxlY3QuZ28oZCwgeikgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gIHwgRGVzdHJ1Y3QoZCkgPT5cbiAgICB6XG4gICAgfD4gRGVzdHJ1Y3QuZ28oZClcbiAgICB8PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KGQpKVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfZGVzdHJ1Y3QpXG4gIHwgSW5zZXJ0KGNoYXIpID0+XG4gICAgelxuICAgIHw+IEluc2VydC5nbyhjaGFyKVxuICAgIC8qIG5vdGU6IHJlbW9sZGluZyBoZXJlIGlzIGRvbmUgY2FzZS1ieS1jYXNlICovXG4gICAgLy98PiBPcHRpb24ubWFwKCh6KSA9PiByZW1vbGRfcmVncm91dChSaWdodCwgeikpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9pbnNlcnQpXG4gIHwgUGlja191cCA9PiBPayhyZW1vbGRfcmVncm91dChMZWZ0LCBaaXBwZXIucGlja191cCh6KSkpXG4gIHwgUHV0X2Rvd24gPT5cbiAgICBsZXQgeiA9XG4gICAgICAvKiBBbHRlcm5hdGl2ZWx5LCBwdXR0aW5nIGRvd24gaW5zaWRlIHRva2VuIGNvdWxkIGVpdGVyIG1lcmdlLWluIG9yIHNwbGl0ICovXG4gICAgICBzd2l0Y2ggKHouY2FyZXQpIHtcbiAgICAgIHwgSW5uZXIoXykgPT4gTm9uZVxuICAgICAgfCBPdXRlciA9PiBaaXBwZXIucHV0X2Rvd24oTGVmdCwgeilcbiAgICAgIH07XG4gICAgelxuICAgIHw+IE9wdGlvbi5tYXAocmVtb2xkX3JlZ3JvdXQoTGVmdCkpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9wdXRfZG93bik7XG4gIHwgUm90YXRlQmFja3BhY2sgPT5cbiAgICBsZXQgeiA9IHsuLi56LCBiYWNrcGFjazogVXRpbC5MaXN0VXRpbC5yb3RhdGUoei5iYWNrcGFjayl9O1xuICAgIE9rKHopO1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KChMZWZ0KF8pIHwgUmlnaHQoXykpIGFzIGQpID0+XG4gICAgaWYgKEJhY2twYWNrLnJlc3RyaWN0ZWQoei5iYWNrcGFjaykpIHtcbiAgICAgIE1vdmUudG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBNb3ZlLmdvKExvY2FsKGQpLCB6KVxuICAgICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKTtcbiAgICB9XG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoKFVwIHwgRG93bikgYXMgZCkgPT5cbiAgICBNb3ZlLnRvX2JhY2twYWNrX3RhcmdldChkLCB6KVxuICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSlcbiAgfCBQYXN0ZShjbGlwYm9hcmQpID0+XG4gICAge1xuICAgICAgbGV0KiB6ID0gUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKH56aXBwZXJfaW5pdD16LCBjbGlwYm9hcmQpO1xuICAgICAgbGV0KiB6ID0gZ29feih+c2V0dGluZ3MsIEluc2VydChcIiBcIiksIHopIHw+IFJlc3VsdC5vaztcbiAgICAgIGxldCsgeiA9IGdvX3oofnNldHRpbmdzLCBEZXN0cnVjdChMZWZ0KSwgeikgfD4gUmVzdWx0Lm9rO1xuICAgICAgejtcbiAgICB9XG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9wYXN0ZSlcbiAgfCBTdWdnZXN0KGNvbnRlbnQpID0+XG4gICAgbGV0IHogPSBaaXBwZXIuc2V0X2J1ZmZlcih6LCB+Y29udGVudCwgfm1vZGU9VW5wYXJzZWQpO1xuICAgIE9rKHopO1xuICB8IFJlc2V0U3VnZ2VzdGlvbiA9PlxuICAgIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSkge1xuICAgIHwgQnVmZmVyKF8pID0+XG4gICAgICBzd2l0Y2ggKGdvX3oofnNldHRpbmdzLCBEZXN0cnVjdChMZWZ0KSwgeikpIHtcbiAgICAgIHwgRXJyb3IoXykgPT4gT2soeilcbiAgICAgIHwgT2soeikgPT4gZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KVxuICAgICAgfVxuICAgIHwgXyA9PiBPayh6KVxuICAgIH1cbiAgfTtcbn07XG5cbmxldCBnbyA9XG4gICAgKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIGE6IEFjdGlvbi50LCBlZDogRWRpdG9yLnQpXG4gICAgOiBBY3Rpb24uUmVzdWx0LnQoRWRpdG9yLnQpID0+XG4gIGlmIChlZC5yZWFkX29ubHkgJiYgaXNfd3JpdGVfYWN0aW9uKGEpKSB7XG4gICAgUmVzdWx0Lk9rKGVkKTtcbiAgfSBlbHNlIHtcbiAgICBvcGVuIFJlc3VsdC5TeW50YXg7XG4gICAgbGV0IEVkaXRvci5TdGF0ZS57emlwcGVyLCBtZXRhfSA9IGVkLnN0YXRlO1xuICAgIEVmZmVjdC5zX2NsZWFyKCk7XG4gICAgbGV0KyB6ID0gZ29feih+c2V0dGluZ3MsIH5tZXRhLCBhLCB6aXBwZXIpO1xuICAgIEVkaXRvci5uZXdfc3RhdGUofmVmZmVjdHM9RWZmZWN0LnNeLCBhLCB6LCBlZCk7XG4gIH07XG4iLCJvcGVuIFV0aWw7XG5cbm1vZHVsZSB0eXBlIFMgPSB7XG4gIGxldCBkOiBEaXJlY3Rpb24udDtcbiAgbGV0IG9yaWVudDogKCgnYSwgJ2EpKSA9PiAoJ2EsICdhKTtcbn07XG5cbm1vZHVsZSBMOiBTID0ge1xuICBsZXQgZCA9IERpcmVjdGlvbi5MZWZ0O1xuICBsZXQgb3JpZW50ID0gKChsLCByKSkgPT4gKGwsIHIpO1xufTtcbm1vZHVsZSBSOiBTID0ge1xuICBsZXQgZCA9IERpcmVjdGlvbi5SaWdodDtcbiAgbGV0IG9yaWVudCA9ICgobCwgcikpID0+IChyLCBsKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV2YWxfcmVzdWx0ID0ge1xuICBlbGFiOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQsXG4gIGV2YWx1YXRpb246IFByb2dyYW1SZXN1bHQudCxcbiAgcHJldmlvdXM6IFByb2dyYW1SZXN1bHQudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTm9FbGFiXG4gIHwgRXZhbHVhdGlvbihldmFsX3Jlc3VsdClcbiAgfCBTdGVwcGVyKFN0ZXBwZXIudCk7XG5cbmxldCBpbml0X2V2YWwgPSAoZWxhYjogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSA9PlxuICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogUmVzdWx0UGVuZGluZ30pO1xuXG5sZXQgdXBkYXRlX2VsYWIgPSAoZWxhYiwgfnNldHRpbmdzKSA9PlxuICBmdW5cbiAgfCBOb0VsYWIgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogUmVzdWx0UGVuZGluZ30pXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbiwgX30pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IGV2YWx1YXRpb259KVxuICB8IFN0ZXBwZXIocykgYXMgcycgd2hlbiBESEV4cC5mYXN0X2VxdWFsKGVsYWIuZCwgU3RlcHBlci5nZXRfZWxhYihzKS5kKSA9PiBzJ1xuICB8IFN0ZXBwZXIoXykgPT4ge1xuICAgICAgU3RlcHBlcihTdGVwcGVyLmluaXQoZWxhYiwgfnNldHRpbmdzKSk7XG4gICAgfTtcblxubGV0IHVwZGF0ZV9zdGVwcGVyID0gZiA9PlxuICBmdW5cbiAgfCBOb0VsYWIgYXMgZVxuICB8IEV2YWx1YXRpb24oXykgYXMgZSA9PiBlXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKGYocykpO1xuXG5sZXQgc3RlcF9mb3J3YXJkID0gKGlkeDogaW50LCBtcjogdCkgPT5cbiAgbXIgfD4gdXBkYXRlX3N0ZXBwZXIoU3RlcHBlci5zdGVwX3BlbmRpbmcoaWR4KSk7XG5cbmxldCBzdGVwX2JhY2t3YXJkID0gKH5zZXR0aW5ncywgbXI6IHQpID0+XG4gIG1yIHw+IHVwZGF0ZV9zdGVwcGVyKFN0ZXBwZXIuc3RlcF9iYWNrd2FyZCh+c2V0dGluZ3MpKTtcblxubGV0IHJ1bl9wZW5kaW5nID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpID0+XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91c30pID0+XG4gICAgRXZhbHVhdGlvbih7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBldmFsdWF0aW9uOiBJbnRlcmZhY2UuZXZhbHVhdGUofnNldHRpbmdzLCBlbGFiLmQpLFxuICAgIH0pXG4gIHwgRXZhbHVhdGlvbihfKSBhcyBlID0+IGVcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5ldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncywgcykpO1xuXG5sZXQgdXBkYXRlX2V2YWx1YXRpb24gPVxuICAgIChcbiAgICAgIGV2YWw6XG4gICAgICAgIFJlc3VsdC50KFxuICAgICAgICAgIChFdmFsdWF0b3IuUmVzdWx0LnQsIEV2YWx1YXRvclN0YXRlLnQpLFxuICAgICAgICAgIFByb2dyYW1SZXN1bHQuZXJyb3IsXG4gICAgICAgICksXG4gICAgICByZXN1bHQ6IHQsXG4gICAgKVxuICAgIDogdCA9PiB7XG4gIHN3aXRjaCAocmVzdWx0KSB7XG4gIHwgU3RlcHBlcihfKVxuICB8IE5vRWxhYiA9PiByZXN1bHRcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBwcmV2aW91cywgX30pID0+XG4gICAgRXZhbHVhdGlvbih7XG4gICAgICBlbGFiLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBldmFsdWF0aW9uOlxuICAgICAgICBzd2l0Y2ggKGV2YWwpIHtcbiAgICAgICAgfCBPaygoZXhwLCBzdGF0ZSkpID0+XG4gICAgICAgICAgUmVzdWx0T2soe1xuICAgICAgICAgICAgcmVzdWx0OiBleHAsXG4gICAgICAgICAgICBlZGl0b3I6XG4gICAgICAgICAgICAgIEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKFxuICAgICAgICAgICAgICAgIH5pbmxpbmU9ZmFsc2UsXG4gICAgICAgICAgICAgICAgZXhwIHw+IEV2YWx1YXRvci5SZXN1bHQudW5ib3gsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICB9KVxuICAgICAgICB8IEVycm9yKHJlYXNvbikgPT4gUmVzdWx0RmFpbChyZWFzb24pXG4gICAgICAgIH0sXG4gICAgfSlcbiAgfTtcbn07XG5cbmxldCB0aW1lb3V0OiB0ID0+IHQgPVxuICBmdW5cbiAgfCBOb0VsYWIgPT4gTm9FbGFiXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbiwgX30gYXMgZSkgPT5cbiAgICBFdmFsdWF0aW9uKHsuLi5lLCBldmFsdWF0aW9uOiBSZXN1bHRGYWlsKFRpbWVvdXQpLCBwcmV2aW91czogZXZhbHVhdGlvbn0pXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIudGltZW91dChzKSk7XG5cbmxldCB0b2dnbGVfc3RlcHBlciA9ICh+c2V0dGluZ3MpID0+XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBffSkgPT4gU3RlcHBlcihTdGVwcGVyLmluaXQofnNldHRpbmdzLCBlbGFiKSlcbiAgfCBTdGVwcGVyKHMpID0+XG4gICAgRXZhbHVhdGlvbih7XG4gICAgICBlbGFiOiBTdGVwcGVyLmdldF9lbGFiKHMpLFxuICAgICAgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZyxcbiAgICAgIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nLFxuICAgIH0pO1xuXG5sZXQgdGVzdF9yZXN1bHRzID0gKHJlc3VsdDogdCkgPT5cbiAgc3dpdGNoIChyZXN1bHQpIHtcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBSZXN1bHRPayhwciksIF99KVxuICB8IEV2YWx1YXRpb24oe1xuICAgICAgZXZhbHVhdGlvbjogT2ZmKF8pIHwgUmVzdWx0RmFpbChfKSB8IFJlc3VsdFBlbmRpbmcsXG4gICAgICBwcmV2aW91czogUmVzdWx0T2socHIpLFxuICAgICAgXyxcbiAgICB9KSA9PlxuICAgIHByXG4gICAgfD4gUHJvZ3JhbVJlc3VsdC5nZXRfc3RhdGVcbiAgICB8PiBFdmFsdWF0b3JTdGF0ZS5nZXRfdGVzdHNcbiAgICB8PiBUZXN0UmVzdWx0cy5ta19yZXN1bHRzXG4gICAgfD4gT3B0aW9uLnNvbWVcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBPZmYoXykgfCBSZXN1bHRGYWlsKF8pIHwgUmVzdWx0UGVuZGluZywgX30pXG4gIHwgTm9FbGFiXG4gIHwgU3RlcHBlcihfKSA9PiBOb25lXG4gIH07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudCA9XG4gIHwgRXZhbHVhdGlvblxuICB8IFN0ZXBwZXIoU3RlcHBlci5wZXJzaXN0ZW50KTtcblxubGV0IHRvX3BlcnNpc3RlbnQ6IHQgPT4gcGVyc2lzdGVudCA9XG4gIGZ1blxuICB8IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oXykgPT4gRXZhbHVhdGlvblxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihTdGVwcGVyLnRvX3BlcnNpc3RlbnQocykpO1xuXG5sZXQgb2ZfcGVyc2lzdGVudCA9ICh+c2V0dGluZ3MpID0+XG4gIGZ1blxuICB8IEV2YWx1YXRpb24gPT4gTm9FbGFiXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIuZnJvbV9wZXJzaXN0ZW50KH5zZXR0aW5ncywgcykpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNlbGVjdGlvbiA9IGludDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhY3Rpb24gPSB7XG4gIHNlbGVjdGlvbixcbiAgYWN0aW9uOiBBY3Rpb24udCxcbn07XG5cbmxldCBnZXRfc2VsZWN0ZWRfZWRpdG9yID0gKH5zZWxlY3Rpb246IHNlbGVjdGlvbiwgbXI6IHQpID0+XG4gIHN3aXRjaCAobXIpIHtcbiAgfCBOb0VsYWIgPT4gTm9uZVxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IFJlc3VsdE9rKHtlZGl0b3IsIF99KSwgX30pID0+IFNvbWUoZWRpdG9yKVxuICB8IEV2YWx1YXRpb24oe3ByZXZpb3VzOiBSZXN1bHRPayh7ZWRpdG9yLCBffSksIF99KSA9PiBTb21lKGVkaXRvcilcbiAgfCBFdmFsdWF0aW9uKF8pID0+IE5vbmVcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBzKVxuICB9O1xuXG5sZXQgcHV0X3NlbGVjdGVkX2VkaXRvciA9ICh+c2VsZWN0aW9uOiBzZWxlY3Rpb24sIG1yOiB0LCBlZGl0b3IpID0+XG4gIHN3aXRjaCAobXIpIHtcbiAgfCBOb0VsYWIgPT4gTm9FbGFiXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogUmVzdWx0T2socHIpLCBlbGFiLCBwcmV2aW91c30pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0T2soey4uLnByLCBlZGl0b3J9KSwgcHJldmlvdXN9KVxuICB8IEV2YWx1YXRpb24oe3ByZXZpb3VzOiBSZXN1bHRPayhwciksIGVsYWIsIGV2YWx1YXRpb259KSA9PlxuICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb24sIHByZXZpb3VzOiBSZXN1bHRPayh7Li4ucHIsIGVkaXRvcn0pfSlcbiAgfCBFdmFsdWF0aW9uKF8pID0+IG1yXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIucHV0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBzLCBlZGl0b3IpKVxuICB9O1xuXG5sZXQgZ2V0X2VsYWJvcmF0aW9uID0gbXIgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb25lXG4gIHwgRXZhbHVhdGlvbih7ZWxhYiwgX30pID0+IFNvbWUoZWxhYilcbiAgfCBTdGVwcGVyKHMpID0+IFNvbWUoU3RlcHBlci5nZXRfZWxhYihzKSlcbiAgfTtcblxubGV0IHBlcmZvcm0gPSAofnNldHRpbmdzLCBpZHgsIGFjdGlvbiwgbXIpID0+IHtcbiAgZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uPWlkeCwgbXIpXG4gIHw+IE9wdGlvbi5tYXAoZWRpdG9yID0+XG4gICAgICAgZWRpdG9yXG4gICAgICAgfD4gUGVyZm9ybS5nbyh+c2V0dGluZ3MsIGFjdGlvbilcbiAgICAgICB8PiAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgT2soZWRpdG9yKSA9PiBlZGl0b3JcbiAgICAgICAgIHwgRXJyb3IoZSkgPT4gcmFpc2UoQWN0aW9uLkZhaWx1cmUuRXhjZXB0aW9uKGUpKVxuICAgICAgIClcbiAgICAgICB8PiBwdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb249aWR4LCBtcilcbiAgICAgKVxuICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9bXIpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qXG4gTW9kZWxSZXN1bHRzIGlzIHVzZWQgdG8gc3RvcmUgdGhlIHJlc3VsdHMgb2ZcbiBldmFsdWF0aW9ucyByZXF1ZXN0ZWQgYnkgdGhlIGN1cnJlbnQgZWRpdG9yIG1vZGUsXG4gd2l0aCB0aGUga2V5IGRpc3Rpbmd1aXNoaW5nIHRoZXNlIHJlcXVlc3RzLlxuXG4gU2VlIHRoZSBTY2hvb2xFeGVyY2lzZSBtb2R1bGUgZm9yIGFuIGV4YW1wbGUuXG4gKi9cbm1vZHVsZSBLZXkgPSB7XG4gIGluY2x1ZGUgU3RyaW5nO1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHN0cmluZztcbn07XG5cbm1vZHVsZSBNID0gVXRpbC5NYXBVdGlsLk1ha2UoS2V5KTtcbmluY2x1ZGUgTTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gTS50KE1vZGVsUmVzdWx0LnQpO1xuXG5sZXQgaW5pdF9ldmFsID0gKGRzOiBsaXN0KChLZXkudCwgRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSkpOiB0ID0+XG4gIGRzIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcSB8PiBtYXAoTW9kZWxSZXN1bHQuaW5pdF9ldmFsKTtcblxubGV0IHVwZGF0ZV9lbGFicyA9ICh+c2V0dGluZ3MpID0+XG4gIExpc3QuZm9sZF9yaWdodCgoKGssIGVsYWIpLCBhY2MpID0+XG4gICAgdXBkYXRlKFxuICAgICAgayxcbiAgICAgIHYgPT5cbiAgICAgICAgU29tZShcbiAgICAgICAgICB2XG4gICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU1vZGVsUmVzdWx0Lk5vRWxhYilcbiAgICAgICAgICB8PiBNb2RlbFJlc3VsdC51cGRhdGVfZWxhYih+c2V0dGluZ3MsIGVsYWIpLFxuICAgICAgICApLFxuICAgICAgYWNjLFxuICAgIClcbiAgKTtcblxubGV0IGxvb2t1cCA9IChyZXN1bHRzOiB0LCBrZXk6IEtleS50KSA9PiBmaW5kX29wdChrZXksIHJlc3VsdHMpO1xuXG5sZXQgcnVuX3BlbmRpbmcgPSAofnNldHRpbmdzKSA9PiBNLm1hcChNb2RlbFJlc3VsdC5ydW5fcGVuZGluZyh+c2V0dGluZ3MpKTtcblxubGV0IHRpbWVvdXRfYWxsID0gbWFwKE1vZGVsUmVzdWx0LnRpbWVvdXQpO1xuXG5sZXQgYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0ID1cbiAgICAocmVzdWx0czogdCwgKGtleTogS2V5LnQsIGVsYWI6IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCkpXG4gICAgOiBvcHRpb24oKEtleS50LCBNb2RlbFJlc3VsdC50KSkgPT5cbiAgc3dpdGNoIChsb29rdXAocmVzdWx0cywga2V5KSkge1xuICB8IFNvbWUoU3RlcHBlcihfKSkgPT4gTm9uZVxuICB8IFNvbWUoRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogcHJldmlvdXMsIF99KSkgPT5cbiAgICBTb21lKChrZXksIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzfSkpKVxuICB8IFNvbWUoTm9FbGFiKVxuICB8IE5vbmUgPT5cbiAgICBTb21lKChcbiAgICAgIGtleSxcbiAgICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSksXG4gICAgKSlcbiAgfTtcblxubGV0IHN0ZXBwZXJfcmVzdWx0X29wdCA9XG4gICAgKChrZXk6IEtleS50LCByOiBNb2RlbFJlc3VsdC50KSk6IG9wdGlvbigoS2V5LnQsIE1vZGVsUmVzdWx0LnQpKSA9PlxuICBzd2l0Y2ggKHIpIHtcbiAgfCBTdGVwcGVyKF8pID0+IFNvbWUoKGtleSwgcikpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCB0b19ldmFsdWF0ZSA9XG4gICAgKHJlc3VsdHM6IHQsIGVsYWJzOiBsaXN0KChLZXkudCwgRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSkpOiB0ID0+XG4gIGVsYWJzXG4gIHw+IExpc3QuZmlsdGVyX21hcChhZHZhbmNlX2V2YWx1YXRvcl9yZXN1bHQocmVzdWx0cykpXG4gIHw+IExpc3QudG9fc2VxXG4gIHw+IG9mX3NlcTtcblxubGV0IHRvX3N0ZXAgPSAocmVzdWx0czogdCk6IHQgPT5cbiAgYmluZGluZ3MocmVzdWx0cylcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKHN0ZXBwZXJfcmVzdWx0X29wdClcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuXG5sZXQgcHV0X3Jlc3VsdCA9IChrZXk6IEtleS50LCByZXN1bHQ6IE1vZGVsUmVzdWx0LnQsIHJlc3VsdHM6IHQpOiB0ID0+XG4gIHJlc3VsdHMgfD4gcmVtb3ZlKGtleSkgfD4gYWRkKGtleSwgcmVzdWx0KTtcbiIsInR5cGUgdCA9IElkLk1hcC50KGxpc3QoaW50KSk7XG5cbmxldCB0ID0gcmVmKElkLk1hcC5lbXB0eSk7XG5cbmxldCBjb250YWlucyA9IChpZCwgaSk6IGJvb2wgPT5cbiAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIHReKSkge1xuICB8IE5vbmUgPT4gZmFsc2VcbiAgfCBTb21lKGlzKSA9PiBMaXN0Lm1lbShpLCBpcylcbiAgfTtcblxubGV0IGNsZWFyID0gKCkgPT4ge1xuICB0IDo9IElkLk1hcC5lbXB0eTtcbn07XG5cbi8vIGFzc3VtZXMgc2VnIGlzIGZ1bGx5IGFzc2VtYmxlZFxubGV0IHNldCA9IChzZWc6IEJhc2Uuc2VnbWVudCk6IHVuaXQgPT5cbiAgdCA6PVxuICAgIHNlZ1xuICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBQaWVjZS5UaWxlKHQpID0+IHtcbiAgICAgICAgICAgICBsZXQgKGxfc2hhcmQsIHJfc2hhcmQpID0gVGlsZS4obF9zaGFyZCh0KSwgcl9zaGFyZCh0KSk7XG4gICAgICAgICAgICAgbGV0IGwgPSBsX3NoYXJkID09IDAgPyBbXSA6IFtsX3NoYXJkIC0gMV07XG4gICAgICAgICAgICAgbGV0IHIgPSByX3NoYXJkID09IExpc3QubGVuZ3RoKHQubGFiZWwpIC0gMSA/IFtdIDogW3Jfc2hhcmRdO1xuICAgICAgICAgICAgIGxldCBsciA9IGwgQCByO1xuICAgICAgICAgICAgIGxyID09IFtdID8gTm9uZSA6IFNvbWUoKHQuaWQsIGwgQCByKSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIHwgR3JvdXQoXylcbiAgICAgICAgIHwgU2Vjb25kYXJ5KF8pID0+IE5vbmUsXG4gICAgICAgKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gSWQuTWFwLm9mX3NlcTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcbiIsImxldCBlZGl0b3Jfb2ZfY29kZSA9ICh+cmVhZF9vbmx5PWZhbHNlLCBjb2RlOiBDb2RlU3RyaW5nLnQpID0+IHtcbiAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoY29kZSkpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKHopID0+IFNvbWUoRWRpdG9yLmluaXQofnJlYWRfb25seSwgeikpXG4gIH07XG59O1xuXG5sZXQgZWRpdG9yc19mb3IgPVxuICAgICh+cmVhZF9vbmx5PWZhbHNlLCB4czogbGlzdCgnYSksIGY6ICdhID0+IG9wdGlvbihzdHJpbmcpKVxuICAgIDogKGludCwgbGlzdCgoJ2EsIG9wdGlvbihFZGl0b3IudCkpKSkgPT4ge1xuICBsZXQgenMgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjY196cywgYSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGYoYSkpIHtcbiAgICAgICAgfCBTb21lKHN0cikgPT5cbiAgICAgICAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhzdHIpKSB7XG4gICAgICAgICAgfCBOb25lID0+IGFjY196cyBAIFsoYSwgU29tZShaaXBwZXIuaW5pdCgpKSldXG4gICAgICAgICAgfCBTb21lKHopID0+IGFjY196cyBAIFsoYSwgU29tZSh6KSldXG4gICAgICAgICAgfVxuICAgICAgICB8IE5vbmUgPT4gYWNjX3pzIEAgWyhhLCBOb25lKV1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtdLFxuICAgICAgeHMsXG4gICAgKTtcbiAgKFxuICAgIDAsXG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGEsIHN6KSkgPT5cbiAgICAgICAgc3dpdGNoIChzeikge1xuICAgICAgICB8IFNvbWUoeikgPT4gKGEsIFNvbWUoRWRpdG9yLmluaXQoeiwgfnJlYWRfb25seSkpKVxuICAgICAgICB8IE5vbmUgPT4gKGEsIE5vbmUpXG4gICAgICAgIH0sXG4gICAgICB6cyxcbiAgICApLFxuICApO1xufTtcblxubGV0IGVkaXRvcnNfb2Zfc3RyaW5ncyA9ICh+cmVhZF9vbmx5PWZhbHNlLCB4czogbGlzdChzdHJpbmcpKSA9PiB7XG4gIGxldCAoaSwgYWVzKSA9IGVkaXRvcnNfZm9yKHhzLCB4ID0+IFNvbWUoeCksIH5yZWFkX29ubHkpO1xuICAoaSwgTGlzdC5tYXAoKChfLCBvZSkpID0+IE9wdGlvbi5nZXQob2UpLCBhZXMpKTtcbn07XG5cbmxldCByZWMgYXBwZW5kX2V4cCA9IHtcbiAgRXhwLihcbiAgICAoZTE6IEV4cC50LCBlMjogRXhwLnQpID0+IChcbiAgICAgIHtcbiAgICAgICAgc3dpdGNoIChlMS50ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgICAgICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgICAgfCBCb29sKF8pXG4gICAgICAgIHwgSW50KF8pXG4gICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgfCBTdHJpbmcoXylcbiAgICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgICAgfCBDbG9zdXJlKF8pXG4gICAgICAgIHwgRnVuKF8pXG4gICAgICAgIHwgVHlwRnVuKF8pXG4gICAgICAgIHwgRml4RihfKVxuICAgICAgICB8IFR1cGxlKF8pXG4gICAgICAgIHwgVmFyKF8pXG4gICAgICAgIHwgQXAoXylcbiAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICB8IERlZmVycmVkQXAoXylcbiAgICAgICAgfCBJZihfKVxuICAgICAgICB8IFRlc3QoXylcbiAgICAgICAgfCBQYXJlbnMoXylcbiAgICAgICAgfCBDb25zKF8pXG4gICAgICAgIHwgTGlzdENvbmNhdChfKVxuICAgICAgICB8IFVuT3AoXylcbiAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICAgICAgfCBDYXN0KF8pXG4gICAgICAgIHwgTWF0Y2goXykgPT4gRXhwLntpZHM6IFtJZC5taygpXSwgY29waWVkOiBmYWxzZSwgdGVybTogU2VxKGUxLCBlMil9XG4gICAgICAgIHwgU2VxKGUxMSwgZTEyKSA9PlxuICAgICAgICAgIGxldCBlMTInID0gYXBwZW5kX2V4cChlMTIsIGUyKTtcbiAgICAgICAgICB7aWRzOiBlMS5pZHMsIGNvcGllZDogZmFsc2UsIHRlcm06IFNlcShlMTEsIGUxMicpfTtcbiAgICAgICAgfCBGaWx0ZXIoa2luZCwgZWJvZHkpID0+XG4gICAgICAgICAgbGV0IGVib2R5JyA9IGFwcGVuZF9leHAoZWJvZHksIGUyKTtcbiAgICAgICAgICB7aWRzOiBlMS5pZHMsIGNvcGllZDogZmFsc2UsIHRlcm06IEZpbHRlcihraW5kLCBlYm9keScpfTtcbiAgICAgICAgfCBMZXQocCwgZWRlZiwgZWJvZHkpID0+XG4gICAgICAgICAgbGV0IGVib2R5JyA9IGFwcGVuZF9leHAoZWJvZHksIGUyKTtcbiAgICAgICAgICB7aWRzOiBlMS5pZHMsIGNvcGllZDogZmFsc2UsIHRlcm06IExldChwLCBlZGVmLCBlYm9keScpfTtcbiAgICAgICAgfCBUeUFsaWFzKHRwLCB0ZGVmLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogVHlBbGlhcyh0cCwgdGRlZiwgZWJvZHknKX07XG4gICAgICAgIH07XG4gICAgICB9OiBFeHAudFxuICAgIClcbiAgKTtcbn07XG4iLCJsZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiOyAvLyBVVEYtOCBlbmNvZGluZyBmb3IgVSswMEEwIFwiTm8tYnJlYWsgc3BhY2VcIlxuXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIi8vIE1hcHMga2V5ZWQgYnkgYW4gZW5kIHBvc2l0aW9uXG4vLyBJbnZhcmllbnQ6IGtleXMgYXJlIGFzY2VuZGluZyBhbmQgdW5pcXVlXG50eXBlIGtleSA9IGludDtcbnR5cGUgdCgnYSkgPSBsaXN0KChrZXksICdhKSk7XG5sZXQgZW1wdHk6ICdhLiB0KCdhKSA9IFtdO1xubGV0IHNpbmdsZXRvbjogJ2EuIChrZXksICdhKSA9PiB0KCdhKSA9IChwb3MsIHgpID0+IFsocG9zLCB4KV07XG5sZXQgcmVjIHVuaW9uOiAnYS4gKCgnYSwgJ2EpID0+ICdhLCB0KCdhKSwgdCgnYSkpID0+IHQoJ2EpID1cbiAgKGYsIHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKHQxLCB0Mikge1xuICAgIHwgKFtdLCB0X290aGVyKSA9PiB0X290aGVyXG4gICAgfCAodF9vdGhlciwgW10pID0+IHRfb3RoZXJcbiAgICB8IChbKHAxLCB4MSksIC4uLnhzMV0sIFsocDIsIHgyKSwgLi4ueHMyXSkgPT5cbiAgICAgIGlmIChwMSA8IHAyKSB7XG4gICAgICAgIFsocDEsIHgxKSwgLi4udW5pb24oZiwgeHMxLCBbKHAyLCB4MiksIC4uLnhzMl0pXTtcbiAgICAgIH0gZWxzZSBpZiAocDEgPiBwMikge1xuICAgICAgICBbKHAyLCB4MiksIC4uLnVuaW9uKGYsIFsocDEsIHgxKSwgLi4ueHMxXSwgeHMyKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbKHAxLCBmKHgxLCB4MikpLCAuLi51bmlvbihmLCB4czEsIHhzMildO1xuICAgICAgfVxuICAgIH07XG5sZXQgcmVjIG1hcDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYoeCkpLCAuLi5tYXAoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBpOiAnYSAnYi4gKChrZXksICdhKSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYocG9zLCB4KSksIC4uLm1hcGkoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBrOiAnYSAnYi4gKChrZXksICdhKSA9PiAoa2V5LCAnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFtmKHBvcywgeCksIC4uLm1hcGsoZiwgcmVzdCldO1xubGV0IHJlYyBmb2xkX2xlZnQ6ICdhICdiLiAoKGtleSwgJ2IsICdhKSA9PiAnYiwgJ2IsIHQoJ2EpKSA9PiAnYiA9XG4gIChmLCB6KSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gelxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBmb2xkX2xlZnQoZiwgZihwb3MsIHosIHgpLCByZXN0KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IHtcbiAgcm93OiBpbnQsXG4gIGNvbDogaW50LFxufTtcblxubGV0IGNvbXBhcmUgPSAocG9zMSwgcG9zMikgPT5cbiAgaWYgKHBvczEucm93IDwgcG9zMi5yb3cpIHtcbiAgICAoLTEpO1xuICB9IGVsc2UgaWYgKHBvczEucm93ID4gcG9zMi5yb3cpIHtcbiAgICAxO1xuICB9IGVsc2Uge1xuICAgIEludC5jb21wYXJlKHBvczEuY29sLCBwb3MyLmNvbCk7XG4gIH07XG5cbmxldCB6ZXJvID0ge3JvdzogMCwgY29sOiAwfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSBib3ggPSB7XG4gIGhlaWdodDogaW50LFxuICB3aWR0aDogaW50LFxufTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIGxheW91dDogdCcoJ2Fubm90KSxcbiAgbWV0cmljczogbGlzdChib3gpLFxufVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IExpbmVicmVha1xuICB8IFRleHQoc3RyaW5nKVxuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpO1xuXG50eXBlIHdpdGhfb2Zmc2V0KCdhbm5vdCkgPSAoaW50LCB0KCdhbm5vdCkpO1xuXG5sZXQgaGVpZ2h0ID0gKG06IHQoXykpID0+XG4gIG0ubWV0cmljcyB8PiBMaXN0Lm1hcChib3ggPT4gYm94LmhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKTtcblxubGV0IHdpZHRoID0gKH5vZmZzZXQ9MCwgbTogdChfKSkgPT5cbiAgTGlzdC50bChtLm1ldHJpY3MpXG4gIHw+IExpc3QubWFwKGJveCA9PiBib3gud2lkdGgpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgb2Zmc2V0ICsgTGlzdC5oZChtLm1ldHJpY3MpLndpZHRoKTtcblxubGV0IGZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6ICdhY2MsXG4gICAgICB+dGV4dDogc3RyaW5nID0+ICdhY2MsXG4gICAgICB+YWxpZ246ICdhY2MgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6ICgnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gYWxsb3cgY2xpZW50IHRvIGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgICh0KCdhbm5vdCkgPT4gJ2FjYywgJ2Fubm90LCB0KCdhbm5vdCkpID0+ICdhY2MsXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAobTogdChfKSkgPT5cbiAgICBzd2l0Y2ggKG0ubGF5b3V0KSB7XG4gICAgfCBMaW5lYnJlYWsgPT4gbGluZWJyZWFrXG4gICAgfCBUZXh0KHMpID0+IHRleHQocylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKGdvKG0pKVxuICAgIHwgQ2F0KG0xLCBtMikgPT5cbiAgICAgIGxldCBhY2MxID0gZ28obTEpO1xuICAgICAgbGV0IGFjYzIgPSBnbyhtMik7XG4gICAgICBjYXQoYWNjMSwgYWNjMik7XG4gICAgfCBBbm5vdChhbm4sIG0pID0+IGFubm90KGdvLCBhbm4sIG0pXG4gICAgfTtcbiAgZ28obSk7XG59O1xuXG5sZXQgbmV4dF9wb3NpdGlvbiA9XG4gICAgKH5pbmRlbnQ6IGludCwge3JvdywgY29sfTogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKVxuICAgIDogTWVhc3VyZWRQb3NpdGlvbi50ID0+IHtcbiAgbGV0IHVwZGF0ZWRfcm93ID0gcm93ICsgaGVpZ2h0KG0pIC0gMTtcbiAgbGV0IHVwZGF0ZWRfY29sID0ge1xuICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0ubWV0cmljcyk7XG4gICAgbGFzdC53aWR0aFxuICAgICsgKFxuICAgICAgc3dpdGNoIChsZWFkaW5nKSB7XG4gICAgICB8IFtdID0+IGNvbFxuICAgICAgfCBbXywgLi4uX10gPT4gaW5kZW50XG4gICAgICB9XG4gICAgKTtcbiAgfTtcbiAge3JvdzogdXBkYXRlZF9yb3csIGNvbDogdXBkYXRlZF9jb2x9O1xufTtcblxubGV0IHBvc19mb2xkID1cbiAgICAoXG4gICAgICB+bGluZWJyZWFrOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4gJ2FjYyxcbiAgICAgIH50ZXh0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCBzdHJpbmcpID0+ICdhY2MsXG4gICAgICB+YWxpZ246IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MpID0+ICdhY2MsXG4gICAgICB+Y2F0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCAnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gbGV0IGNsaWVudCBjb250cm9sIHJlY3Vyc2lvbiBiYXNlZCBvbiBhbm5vdGF0aW9uXG4gICAgICAgICAoXG4gICAgICAgICAgIH5nbzogdCgnYW5ub3QpID0+ICdhY2MsXG4gICAgICAgICAgIH5pbmRlbnQ6IGludCxcbiAgICAgICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgICAgICdhbm5vdCxcbiAgICAgICAgICAgdCgnYW5ub3QpXG4gICAgICAgICApID0+XG4gICAgICAgICAnYWNjLFxuICAgICAgfmluZGVudD0wLFxuICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQ9TWVhc3VyZWRQb3NpdGlvbi56ZXJvLFxuICAgICAgbTogdCgnYW5ub3QpLFxuICAgIClcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgcmVjIGdvID0gKGluZGVudDogaW50LCBzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWsoc3RhcnQpXG4gICAgfCBUZXh0KHMpID0+IHRleHQoc3RhcnQsIHMpXG4gICAgfCBBbGlnbihtKSA9PiBhbGlnbihzdGFydCwgZ28oc3RhcnQuY29sLCBzdGFydCwgbSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IG1pZCA9IG5leHRfcG9zaXRpb24ofmluZGVudCwgc3RhcnQsIG0xKTtcbiAgICAgIGNhdChzdGFydCwgZ28oaW5kZW50LCBzdGFydCwgbTEpLCBnbyhpbmRlbnQsIG1pZCwgbTIpKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QofmdvPWdvKGluZGVudCwgc3RhcnQpLCB+aW5kZW50LCB+c3RhcnQsIGFubiwgbSlcbiAgICB9O1xuICBnbyhpbmRlbnQsIHN0YXJ0LCBtKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgdGFibGU6IE1lbW9UYmwudChMYXlvdXQudCh1bml0KSwgdCh1bml0KSkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldCh0YWJsZSwgT2JqLm1hZ2ljKGwpKSkge1xuICAgIHwgU29tZShtKSA9PiBPYmoubWFnaWMobSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBtID1cbiAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgIHwgTGluZWJyZWFrID0+XG4gICAgICAgICAgbGV0IGJveCA9IHtoZWlnaHQ6IDEsIHdpZHRoOiAwfTtcbiAgICAgICAgICB7bWV0cmljczogW2JveCwgYm94XSwgbGF5b3V0OiBMaW5lYnJlYWt9O1xuICAgICAgICB8IFRleHQocykgPT4ge1xuICAgICAgICAgICAgbWV0cmljczogW3toZWlnaHQ6IDEsIHdpZHRoOiBVbmljb2RlLmxlbmd0aChzKX1dLFxuICAgICAgICAgICAgbGF5b3V0OiBUZXh0KHMpLFxuICAgICAgICAgIH1cbiAgICAgICAgfCBBbGlnbihsKSA9PlxuICAgICAgICAgIGxldCBtID0gbWsobCk7XG4gICAgICAgICAgbGV0IGJvdW5kaW5nX2JveCA9XG4gICAgICAgICAgICBtLm1ldHJpY3NcbiAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAoe2hlaWdodDogYmgsIHdpZHRoOiBid30sIHtoZWlnaHQsIHdpZHRofSkgPT5cbiAgICAgICAgICAgICAgICAgICB7aGVpZ2h0OiBiaCArIGhlaWdodCwgd2lkdGg6IG1heChidywgd2lkdGgpfSxcbiAgICAgICAgICAgICAgICAge2hlaWdodDogMCwgd2lkdGg6IDB9LFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB7bWV0cmljczogW2JvdW5kaW5nX2JveF0sIGxheW91dDogQWxpZ24obSl9O1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IG0xID0gbWsobDEpO1xuICAgICAgICAgIGxldCBtMiA9IG1rKGwyKTtcbiAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChtMS5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgKGZpcnN0LCB0cmFpbGluZykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChtMi5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgbWlkX2JveCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogbWF4KGxhc3QuaGVpZ2h0LCBmaXJzdC5oZWlnaHQpLFxuICAgICAgICAgICAgd2lkdGg6IGxhc3Qud2lkdGggKyBmaXJzdC53aWR0aCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHttZXRyaWNzOiBsZWFkaW5nIEAgW21pZF9ib3gsIC4uLnRyYWlsaW5nXSwgbGF5b3V0OiBDYXQobTEsIG0yKX07XG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICB7Li4ubSwgbGF5b3V0OiBBbm5vdChhbm5vdCwgbSl9O1xuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKG0pKTtcbiAgICAgIG07XG4gICAgfTtcbiAgfTtcbn07XG4iLCJ0eXBlIHQgPSB7XG4gIC8vIFN1bSBvZiB0aGUgc3F1YXJlIG9mIGhvdyBtdWNoIGVhY2ggbGluZSBleHRlbmRzIGJleW9uZCBtYXggd2lkdGguICBVc3VhbGx5IHplcm8uXG4gIG92ZXJmbG93X2Nvc3Q6IGludCxcbiAgLy8gSGVpZ2h0IG1pbnVzIG9uZS4gIEEuay5hLiBudW1iZXIgb2YgbGluZSBicmVha3MuXG4gIGhlaWdodF9jb3N0OiBpbnQsXG59O1xuXG5sZXQgbWsgPSAofm92ZXJmbG93X2Nvc3Q6IGludCwgfmhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdCxcbiAgaGVpZ2h0X2Nvc3QsXG59O1xuXG5sZXQgbWtfaGVpZ2h0ID0gKGhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IG1rKH5vdmVyZmxvd19jb3N0PTAsIH5oZWlnaHRfY29zdCk7XG5cbmxldCBta19vdmVyZmxvdyA9IChvdmVyZmxvd19jb3N0OiBpbnQpOiB0ID0+XG4gIG1rKH5vdmVyZmxvd19jb3N0LCB+aGVpZ2h0X2Nvc3Q9MCk7XG5cbmxldCB6ZXJvOiB0ID0ge292ZXJmbG93X2Nvc3Q6IDAsIGhlaWdodF9jb3N0OiAwfTtcblxubGV0IGluZjogdCA9IHtvdmVyZmxvd19jb3N0OiBtYXhfaW50LCBoZWlnaHRfY29zdDogbWF4X2ludH07XG5cbmxldCBhZGQgPSAoYzE6IHQsIGMyOiB0KTogdCA9PiB7XG4gIG92ZXJmbG93X2Nvc3Q6IGMxLm92ZXJmbG93X2Nvc3QgKyBjMi5vdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdDogYzEuaGVpZ2h0X2Nvc3QgKyBjMi5oZWlnaHRfY29zdCxcbn07XG5cbmxldCBlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QgJiYgYzEuaGVpZ2h0X2Nvc3QgPT09IGMyLmhlaWdodF9jb3N0O1xuXG5sZXQgbHQgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDwgYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8IGMyLm92ZXJmbG93X2Nvc3Q7XG4gIH07XG5cbmxldCBsZXEgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDw9IGMyLmhlaWdodF9jb3N0O1xuICB9IGVsc2Uge1xuICAgIGMxLm92ZXJmbG93X2Nvc3QgPD0gYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbm1vZHVsZSBXaWR0aFBvc0tleSA9IHtcbiAgdHlwZSB0ID0gKGludCwgaW50KTtcbiAgbGV0IGhhc2ggPSAoKHdpZHRoLCBwb3MpKSA9PiAyNTYgKiAyNTYgKiB3aWR0aCArIHBvcztcbiAgbGV0IGVxdWFsID0gKCh3MSwgcDEpLCAodzIsIHAyKSkgPT4gdzEgPT0gdzIgJiYgcDEgPT0gcDI7XG59O1xuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTWFrZShXaWR0aFBvc0tleSk7XG5cbi8vIE5PVEU6IHBvcyBpcyByZWxhdGl2ZSB0byBtb3N0IHJlY2VudCBgQWxpZ25gXG50eXBlIG0nKCdhKSA9IFBvc01hcC50KChDb3N0LnQsICdhKSk7XG50eXBlIG0oJ2EpID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpID0+IG0nKCdhKTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIG1lbTogW0BzZXhwLm9wYXF1ZV0gTS50KG0nKExheW91dC50KCdhbm5vdCkpKSxcbiAgZG9jOiB0JygnYW5ub3QpLFxufVxuW0BkZXJpdmluZyBzZXhwXVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKSAvLyBUZXh0KFwiXCIpIGlzIGlkZW50aXR5IGZvciBgQ2F0YFxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSkgLy8gYXNzb2NpYXRpdmVcbiAgfCBMaW5lYnJlYWtcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpIC8vIEFubm90YXRpb25zXG4gIHwgRmFpbCAvLyBpZGVudGl0eSBmb3IgYENob2ljZWBcbiAgfCBDaG9pY2UodCgnYW5ub3QpLCB0KCdhbm5vdCkpO1xuXG5sZXQgdF9vZl90JyA9ICh0JzogdCcoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7bWVtOiBNLmNyZWF0ZSgwKSwgZG9jOiB0J307XG5cbmxldCB0ZXh0ID0gKHM6IHN0cmluZykgPT4gdF9vZl90JyhUZXh0KHMpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiB0X29mX3QnKExpbmVicmVhayk7XG5sZXQgYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhBbGlnbihkb2MpKTtcbmxldCBhbm5vdCA9IChhbm5vdCwgZG9jKSA9PiB0X29mX3QnKEFubm90KGFubm90LCBkb2MpKTtcbmxldCBmYWlsID0gKCkgPT4gdF9vZl90JyhGYWlsKTtcblxubGV0IGVtcHR5ID0gKCkgPT4gdGV4dChcIlwiKTtcbmxldCBzcGFjZSA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwKTsgLy8gVE9ETzogcGFyYW0gdG8gaHNlcFxuXG5sZXQgaW5kZW50ID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3AgKysgVW5pY29kZS5uYnNwKTtcbmxldCBpbmRlbnRfYW5kX2FsaWduID0gZG9jID0+IHRfb2ZfdCcoQ2F0KGluZGVudCgpLCBhbGlnbihkb2MpKSk7XG5cbmxldCBoY2F0ID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHkpKTtcbmxldCBoY2F0czogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoY2F0LCBkb2MsIGRvY3MpO1xuXG5sZXQgaHNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChzcGFjZSgpLCB5KSkpKTtcbmxldCBoc2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoc2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgdnNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChsaW5lYnJlYWsoKSwgeSkpKSk7XG5sZXQgdnNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsd2l0aChfX0xPQ19fICsrIFwiOiB2c2VwcyByZXF1aXJlcyBhIG5vbi1lbXB0eSBsaXN0XCIpXG4gIHwgW2RvY10gPT4gZG9jXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQodnNlcCwgZG9jLCBkb2NzKTtcblxubGV0IGNob2ljZSA9ICh4LCB5KSA9PiB0X29mX3QnKENob2ljZSh4LCB5KSk7XG5sZXQgY2hvaWNlczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWwoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGNob2ljZSwgZG9jLCBkb2NzKTtcblxubGV0IG1hcF90JzogJ2EgJ2IuICh0JygnYSkgPT4gdCcoJ2IpLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT4gdF9vZl90JyhmKGQuZG9jKSk7XG5cbmxldCByZWMgbWFwX2Fubm90OiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT5cbiAgICBkXG4gICAgfD4gbWFwX3QnKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChUZXh0KF8pIHwgTGluZWJyZWFrIHwgRmFpbCkgYXMgZCcgPT4gZCdcbiAgICAgICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IEFubm90KGYoYW5ub3QpLCBtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IEFsaWduKGQpID0+IEFsaWduKG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQ2F0KGQxLCBkMikgPT4gQ2F0KG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpXG4gICAgICAgICB8IENob2ljZShkMSwgZDIpID0+IENob2ljZShtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKSxcbiAgICAgICApO1xuIiwiLy8gVE9ETzogY29tcHV0ZSBhY3R1YWwgbGF5b3V0IHNpemUgYW5kIHVzZSBpbnN0ZWFkIG9mIHRfb2ZfbGF5b3V0XG5sZXQgcmVjIGFsbDogJ2Fubm90LiBEb2MudCgnYW5ub3QpID0+IGxpc3QoTGF5b3V0LnQoJ2Fubm90KSkgPSB7XG4gIGRvYyA9PiB7XG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT4gW0xheW91dC5UZXh0KHN0cmluZyldXG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGxzMSA9IGFsbChkMSk7XG4gICAgICBsZXQgbHMyID0gYWxsKGQyKTtcbiAgICAgIExpc3QuY29uY2F0KFxuICAgICAgICBMaXN0Lm1hcChsMSA9PiBMaXN0Lm1hcChsMiA9PiBMYXlvdXQuQ2F0KGwxLCBsMiksIGxzMiksIGxzMSksXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+IFtMYXlvdXQuTGluZWJyZWFrXVxuICAgIHwgQWxpZ24oZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQWxpZ24obCksIGFsbChkKSlcbiAgICB8IEFubm90KGFubm90LCBkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5Bbm5vdChhbm5vdCwgbCksIGFsbChkKSlcbiAgICB8IEZhaWwgPT4gW11cbiAgICB8IENob2ljZShkMSwgZDIpID0+IGFsbChkMSkgQCBhbGwoZDIpXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIE5vdGU6IFRoaXMgdW5pb24gaXMgbGVmdCBiaWFzZWRcbmxldCBtJ191bmlvbjogJ2EuIChEb2MubScoJ2EpLCBEb2MubScoJ2EpKSA9PiBEb2MubScoJ2EpID1cbiAgKHAxLCBwMikgPT4ge1xuICAgIGxldCBjb3N0X3VuaW9uID0gKChjb3N0MTogQ29zdC50LCBfKSBhcyB0MSwgKGNvc3QyOiBDb3N0LnQsIF8pIGFzIHQyKSA9PlxuICAgICAgaWYgKENvc3QubGVxKGNvc3QxLCBjb3N0MikpIHtcbiAgICAgICAgdDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0MjtcbiAgICAgIH07XG4gICAgUG9zTWFwLnVuaW9uKGNvc3RfdW5pb24sIHAxLCBwMik7XG4gIH07XG5cbmxldCByZWMgbGF5b3V0X29mX2RvYycgPSAoZG9jOiBEb2MudCh1bml0KSk6IERvYy5tKExheW91dC50KHVuaXQpKSA9PiB7XG4gIGxldCBnID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICAvLyBUT0RPOiBsaWZ0IHRoZSBzd2l0Y2goZG9jLmRvYykgb3V0c2lkZSB0aGUgbGFtYmRhXG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgIC8vIFRPRE86IGNhY2hlIHRleHQgbGVuZ3RoIGluIFRleHQ/XG4gICAgICBsZXQgcG9zJyA9IHBvcyArIFN0cmluZy5sZW5ndGgoc3RyaW5nKTsgLy9Vbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgbGV0IGNvc3QgPVxuICAgICAgICBpZiAocG9zJyA8PSB3aWR0aCkge1xuICAgICAgICAgIENvc3QuemVybztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgb3ZlcmZsb3cgPSBwb3MnIC0gd2lkdGg7XG4gICAgICAgICAgLy8gb3ZlcmZsb3dfY29zdCA9IHN1bSBpIGZyb20gMSB0byBvdmVyZmxvd1xuICAgICAgICAgIGxldCBvdmVyZmxvd19jb3N0ID0gb3ZlcmZsb3cgKiAob3ZlcmZsb3cgKyAxKSAvIDI7XG4gICAgICAgICAgQ29zdC5ta19vdmVyZmxvdyhvdmVyZmxvd19jb3N0KTtcbiAgICAgICAgfTtcbiAgICAgIFBvc01hcC5zaW5nbGV0b24ocG9zJywgKGNvc3QsIExheW91dC5UZXh0KHN0cmluZykpKTtcbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5mb2xkX2xlZnQoXG4gICAgICAgIChwb3MsIHosIChjb3N0MSwgbGF5b3V0MSkpID0+IHtcbiAgICAgICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgICAgICBsZXQgbGF5b3V0cyA9XG4gICAgICAgICAgICBQb3NNYXAubWFwKFxuICAgICAgICAgICAgICAoKGNvc3QyLCBsYXlvdXQyKSkgPT5cbiAgICAgICAgICAgICAgICAoQ29zdC5hZGQoY29zdDEsIGNvc3QyKSwgTGF5b3V0LkNhdChsYXlvdXQxLCBsYXlvdXQyKSksXG4gICAgICAgICAgICAgIGwyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBtJ191bmlvbih6LCBsYXlvdXRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgUG9zTWFwLmVtcHR5LFxuICAgICAgICBsMSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgIFBvc01hcC5zaW5nbGV0b24oMCwgKENvc3QubWtfaGVpZ2h0KDEpLCBMYXlvdXQuTGluZWJyZWFrKSlcbiAgICB8IEFsaWduKGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoPXdpZHRoIC0gcG9zLCB+cG9zPTApO1xuICAgICAgUG9zTWFwLm1hcGsoXG4gICAgICAgIChwLCAoYywgbCkpID0+IChwICsgcG9zLCAoYywgTGF5b3V0LkFsaWduKGwpKSksXG4gICAgICAgIGxheW91dCxcbiAgICAgICk7XG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLm1hcCgoKGMsIGwpKSA9PiAoYywgTGF5b3V0LkFubm90KGFubm90LCBsKSksIGxheW91dCk7XG4gICAgfCBGYWlsID0+IFBvc01hcC5lbXB0eVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICBtJ191bmlvbihsMSwgbDIpO1xuICAgIH07XG4gIH07XG4gIGxldCBoID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICBsZXQga2V5ID0gKHdpZHRoLCBwb3MpO1xuICAgIHN3aXRjaCAoRG9jLk0uZmluZF9vcHQoZG9jLm1lbSwga2V5KSkge1xuICAgIHwgU29tZSh2YWx1ZSkgPT4gdmFsdWVcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2YWx1ZSA9IGcofndpZHRoLCB+cG9zKTtcbiAgICAgIERvYy5NLmFkZChkb2MubWVtLCBrZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlO1xuICAgIH07XG4gIH07XG4gIGg7XG59O1xuXG5sZXQgbGF5b3V0X29mX2RvYyA9XG4gICAgKGRvYzogRG9jLnQoJ2Fubm90KSwgfndpZHRoOiBpbnQsIH5wb3M6IGludCk6IG9wdGlvbihMYXlvdXQudCgnYW5ub3QpKSA9PiB7XG4gIGxldCByZWMgbWluaW11bSA9XG4gICAgICAgICAgKChwb3MsIChjb3N0LCB0KSk6IChpbnQsIChDb3N0LnQsIG9wdGlvbignYSkpKSlcbiAgICAgICAgICA6IChsaXN0KChpbnQsIChDb3N0LnQsICdhKSkpID0+IG9wdGlvbignYSkpID0+IHtcbiAgICBmdW5cbiAgICB8IFtdID0+IHRcbiAgICB8IFsoeF9wb3MsICh4X2Nvc3QsIHgpKSwgLi4ucmVzdF0gPT5cbiAgICAgIC8vIFByZWZlciBsb3dlc3QgY29zdCwgb3IgaWYgc2FtZSBjb3N0LCBwcmVmZXIgZW5kaW5nIGF0IGFuIGVhcmxpZXIgY29sdW1uXG4gICAgICAvLyAoQ29sdW1ucyBhcmUgdW5pcXVlIGJ5IGNvbnN0cnVjdGlvbiBvZiBQb3NNYXAuKVxuICAgICAgaWYgKENvc3QubHQoeF9jb3N0LCBjb3N0KSB8fCBDb3N0LmVxKHhfY29zdCwgY29zdCkgJiYgeF9wb3MgPCBwb3MpIHtcbiAgICAgICAgbWluaW11bSgoeF9wb3MsICh4X2Nvc3QsIFNvbWUoeCkpKSwgcmVzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaW5pbXVtKChwb3MsIChjb3N0LCB0KSksIHJlc3QpO1xuICAgICAgfTtcbiAgfTtcbiAgLy8gVE9ETzogdXNlIG9wdGlvbnMgaW5zdGVhZCBvZiBtYXhfaW50XG4gIC8vIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgbGV0IGwgPVxuICAgIG1pbmltdW0oXG4gICAgICAobWF4X2ludCwgKENvc3QuaW5mLCBOb25lKSksXG4gICAgICBPYmoubWFnaWMobGF5b3V0X29mX2RvYycoT2JqLm1hZ2ljKGRvYyksIH53aWR0aCwgfnBvcykpLFxuICAgICk7XG4gIC8vIGxldCBlbmRfdGltZSA9IFN5cy50aW1lKCk7XG4gIC8qXG4gICBQcmludGYucHJpbnRmKFxuICAgICBcImxheW91dF9vZl9kb2M6ICVkIFxcdCVmXFxuXCIsXG4gICAgIC0xLCAvL2ZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSMjLnNpemUsXG4gICAgIC8vTWVtb2l6ZS5XZWFrUG9seS5UYWJsZS5sZW5ndGgoZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpKSxcbiAgICAgMTAwMC4wICouIChlbmRfdGltZSAtLiBzdGFydF90aW1lKSxcbiAgICk7XG4gICAqL1xuICBsO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qXG4gIFRoZXNlIGFyZSB0aGUgc3ludGF4IHRlc3QgZnVuY3Rpb25zIHVzZWQgZm9yIHRoZSBzeW50YXggdmFsaWRhdGlvblxuICBzZWN0aW9uIG9mIHRoZSBleGVyY2lzZXMuIFRoZSBzeW50YXggdGVzdHMgYXJlIGRlc2lnbmVkIHRvXG4gIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGltcGxlbWVudGF0aW9uIHNhdGlzZmllcyBjZXJ0YWluIHN5bnRheCBwcm9wZXJ0aWVzXG4gIGUuZy4gdGFpbCByZWN1cnNpdmUgZnVuY3Rpb24gb3IgdmFyaWFibGUgdXNhZ2UuXG4gKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzeW50YXhfcmVzdWx0ID0ge1xuICByZXN1bHRzOiBsaXN0KGJvb2wpLFxuICBwZXJjZW50YWdlOiBmbG9hdCxcbn07XG5cbmxldCByZWMgZmluZF92YXJfdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdXApID0+IHthY2MgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cCl9LCBmYWxzZSwgbClcbiAgfCBQYXJlbnModXApID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBDYXN0KHVwLCBfLCBfKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiAgSGVscGVyIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZpbmRfZm4gd2hpY2ggdGFrZXMgdGhlXG4gIHBhdHRlcm4gKHVwYXQpIGFuZCB0aGUgZGVmaW5pdGlvbiAoZGVmKSBvZiBhIGxldCBleHByZXNzaW9uIGFuZFxuICBjb2xsZWN0cyBmdW5jdGlvbnMgaW4gZGVmIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgaW5cbiAgdXBhdC4gRXhhbXBsZTogZm9yIHRoZSBleHByZXNzaW9uIFwibGV0IChhLGIpID0gKGZ1biB4IC0+IHgrMSwgNDEpIGluXCJcbiAgaWYgbmFtZT1cImFcIiwgdGhlbiBsPVtmdW4geCAtPiB4KzFdXG4gKi9cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1cGF0OiBVUGF0LnQsIGRlZjogVUV4cC50LCBsOiBsaXN0KFVFeHAudCkpXG4gICAgICAgIDogbGlzdChVRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0sIGRlZi50ZXJtKSB7XG4gIHwgKFBhcmVucyh1cCksIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgbClcbiAgfCAoUGFyZW5zKHVwKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoXywgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXBhdCwgdWUsIGwpXG4gIHwgKENhc3QodXAsIF8sIF8pLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChWYXIoeCksIEZ1bihfKSkgPT4geCA9PSBuYW1lID8gW2RlZiwgLi4ubF0gOiBsXG4gIHwgKFR1cGxlKHBsKSwgVHVwbGUodWwpKSA9PlxuICAgIGlmIChMaXN0Lmxlbmd0aChwbCkgIT0gTGlzdC5sZW5ndGgodWwpKSB7XG4gICAgICBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgIChhY2MsIHVwLCB1ZSkgPT4ge2ZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgYWNjKX0sXG4gICAgICAgIGwsXG4gICAgICAgIHBsLFxuICAgICAgICB1bCxcbiAgICAgICk7XG4gICAgfVxuICB8IChWYXIoXyksIF8pXG4gIHwgKFR1cGxlKF8pLCBfKVxuICB8IChcbiAgICAgIEVtcHR5SG9sZSB8IFdpbGQgfCBJbnZhbGlkKF8pIHwgTXVsdGlIb2xlKF8pIHwgSW50KF8pIHwgRmxvYXQoXykgfCBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kIGFueSBmdW5jdGlvbiBleHByZXNzaW9ucyBpbiB1ZXhwIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWVcbiAqL1xubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVUV4cC50LCBsOiBsaXN0KFVFeHAudCkpOiBsaXN0KFVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IExldCh1cCwgZGVmLCBib2R5KSA9PlxuICAgIGwgfD4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZikgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IExpc3RMaXQodWwpXG4gIHwgVHVwbGUodWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdTEpID0+IHtmaW5kX2ZuKG5hbWUsIHUxLCBhY2MpfSwgbCwgdWwpXG4gIHwgVHlwRnVuKF8sIGJvZHksIF8pXG4gIHwgRml4RihfLCBib2R5LCBfKVxuICB8IEZ1bihfLCBib2R5LCBfLCBfKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBUeXBBcCh1MSwgXylcbiAgfCBQYXJlbnModTEpXG4gIHwgQ2FzdCh1MSwgXywgXylcbiAgfCBVbk9wKF8sIHUxKVxuICB8IFR5QWxpYXMoXywgXywgdTEpXG4gIHwgVGVzdCh1MSlcbiAgfCBDbG9zdXJlKF8sIHUxKVxuICB8IEZpbHRlcihfLCB1MSkgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKVxuICB8IEFwKF8sIHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgbFxuICAgIHw+IGZpbmRfZm4obmFtZSwgZm4pXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoKGwsIHUpID0+IGZpbmRfZm4obmFtZSwgdSwgbCksIF8sIGFyZ3MpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gIHwgRmFpbGVkQ2FzdChfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgQnVpbHRpbkZ1bihfKVxuICB8IFZhcihfKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBldmVyIG1lbnRpb25lZCBpbiB1cGF0LlxuICovXG5sZXQgcmVjIHZhcl9tZW50aW9uX3VwYXQgPSAobmFtZTogc3RyaW5nLCB1cGF0OiBQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gIHwgQ29ucyh1cDEsIHVwMikgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMSkgfHwgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1cCkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKX0sXG4gICAgICBmYWxzZSxcbiAgICAgIGwsXG4gICAgKVxuICB8IFBhcmVucyh1cCkgPT4gdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMSkgfHwgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDIpXG4gIHwgQ2FzdCh1cCwgXywgXykgPT4gdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cClcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGV2ZXIgbWVudGlvbmVkIGluIHVleHAuXG4gKi9cbmxldCByZWMgdmFyX21lbnRpb24gPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5LCBfLCBfKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1LCBfKVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgRHluYW1pY0Vycm9ySG9sZSh1LCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEZhaWxlZENhc3QodSwgXywgXykgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBGaXhGKGFyZ3MsIGJvZHksIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBDbG9zdXJlKF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQnVpbHRpbkZ1bihfKSA9PiBmYWxzZVxuICB8IENhc3QoZCwgXywgXykgPT4gdmFyX21lbnRpb24obmFtZSwgZClcbiAgfCBBcChfLCB1MSwgdTIpXG4gIHwgU2VxKHUxLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MilcbiAgfCBEZWZlcnJlZEFwKHUxLCB1cykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgTGlzdC5leGlzdHModmFyX21lbnRpb24obmFtZSksIHVzKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfbWVudGlvbihuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgYXBwbGllZCBvbiBhbm90aGVyIGV4cHJlc3NzaW9uLlxuIGkuZS4gQXAoVmFyKG5hbWUpLCB1KSBvY2N1cnMgYW55d2hlcmUgaW4gdGhlIHVleHAuXG4gKi9cbmxldCByZWMgdmFyX2FwcGxpZWQgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IFZhcihfKVxuICB8IEVtcHR5SG9sZVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHksIF8sIF8pXG4gIHwgRml4RihhcmdzLCBib2R5LCBfKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX2FwcGxpZWQobmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgZGVmKSB8fCB2YXJfYXBwbGllZChuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1LCBfKVxuICB8IFRlc3QodSlcbiAgfCBQYXJlbnModSlcbiAgfCBVbk9wKF8sIHUpXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCB1KSA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICB8IFR5cEFwKHUsIF8pID0+XG4gICAgc3dpdGNoICh1LnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogZmFsc2VcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdSlcbiAgICB9XG4gIHwgRHluYW1pY0Vycm9ySG9sZShfKSA9PiBmYWxzZVxuICB8IEZhaWxlZENhc3QoXykgPT4gZmFsc2VcbiAgLy8gVGhpcyBjYXNlIHNob3VsZG4ndCBjb21lIHVwIVxuICB8IENsb3N1cmUoXykgPT4gZmFsc2VcbiAgfCBCdWlsdGluRnVuKF8pID0+IGZhbHNlXG4gIHwgQ2FzdChkLCBfLCBfKSA9PiB2YXJfYXBwbGllZChuYW1lLCBkKVxuICB8IEFwKF8sIHUxLCB1MikgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB9XG4gIHwgRGVmZXJyZWRBcCh1MSwgdXMpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB8IF8gPT4gTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG4vKlxuIENoZWNrIGlmIHZhcmlhYmxlIG5hbWUgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZSBvdXRzaWRlIG9mXG4gYSB0YWlsIHBvc2l0aW9uIGluIHVleHAuIE5vdGUgdGhhdCBpZiB0aGUgdmFyaWFibGUgaXMgbm90XG4gbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBleHByZXNzaW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLlxuICovXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBGYWlsZWRDYXN0KF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXylcbiAgfCBCdWlsdGluRnVuKF8pID0+IHRydWVcbiAgfCBGaXhGKGFyZ3MsIGJvZHksIF8pXG4gIHwgRnVuKGFyZ3MsIGJvZHksIF8sIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IENhc3QodSwgXywgXylcbiAgfCBGaWx0ZXIoXywgdSlcbiAgfCBDbG9zdXJlKF8sIHUpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVHlwQXAodSwgXylcbiAgfCBQYXJlbnModSkgPT4gdGFpbF9jaGVjayhuYW1lLCB1KVxuICB8IFVuT3AoXywgdSkgPT4gIXZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAoXywgdTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MikgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTEpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICB0YWlsX2NoZWNrKG5hbWUsIEFwKEZvcndhcmQsIGZuLCBUdXBsZShhcmdzKSB8PiBFeHAuZnJlc2gpIHw+IEV4cC5mcmVzaClcbiAgfCBTZXEodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiAhKHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSlcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICAgID8gZmFsc2VcbiAgICAgIDogTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgKGFjYywgKHAsIGUpKSA9PiB7XG4gICAgICAgICAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgJiYgdGFpbF9jaGVjayhuYW1lLCBlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBsLFxuICAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSB0YWlsIHJlY3Vyc2l2ZS5cbiAqL1xubGV0IGlzX3RhaWxfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID0gKHVleHA6IFVFeHAudCwgcHJlZGljYXRlczogbGlzdChVRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSB0eXBlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGU7XG4gIGxldCBkZWZhdWx0OiBub2RlO1xuICBsZXQgb3V0cHV0X2hlYWRlcjogc3RyaW5nID0+IHN0cmluZztcbn07XG5cbmxldCBvdXRwdXRfaGVhZGVyX2dyYWRpbmcgPSBfbW9kdWxlX25hbWUgPT5cbiAgXCJtb2R1bGUgRXhlcmNpc2UgPSBHcmFkZVByZWx1ZGUuRXhlcmNpc2VcXG5cIiArKyBcImxldCBwcm9tcHQgPSAoKVxcblwiO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2VFbnYpID0+IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHdyb25nX2ltcGwoJ2NvZGUpID0ge1xuICAgIGltcGw6ICdjb2RlLFxuICAgIGhpbnQ6IHN0cmluZyxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlkZGVuX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgaGludHM6IGxpc3Qoc3RyaW5nKSxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGludCA9IHN0cmluZztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3ludGF4X3Rlc3QgPSAoaGludCwgU3ludGF4VGVzdC5wcmVkaWNhdGUpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdHMgPSBsaXN0KHN5bnRheF90ZXN0KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgeW91cl90ZXN0cygnY29kZSkgPSB7XG4gICAgdGVzdHM6ICdjb2RlLFxuICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgcHJvdmlkZWQ6IGludCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRfZGlzdHJpYnV0aW9uID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogaW50LFxuICAgIG11dGF0aW9uX3Rlc3Rpbmc6IGludCxcbiAgICBpbXBsX2dyYWRpbmc6IGludCxcbiAgfTtcblxuICBsZXQgdmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uID1cbiAgICAgICh7dGVzdF92YWxpZGF0aW9uLCBtdXRhdGlvbl90ZXN0aW5nLCBpbXBsX2dyYWRpbmd9OiBwb2ludF9kaXN0cmlidXRpb24pID0+XG4gICAgdGVzdF92YWxpZGF0aW9uICsgbXV0YXRpb25fdGVzdGluZyArIGltcGxfZ3JhZGluZyA9PSAxMDBcbiAgICAgID8gKCkgOiBmYWlsd2l0aChcIkludmFsaWQgcG9pbnQgZGlzdHJpYnV0aW9uIGluIGV4ZXJjaXNlLlwiKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcCgnY29kZSkgPSB7XG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBpbnQsXG4gICAgbW9kdWxlX25hbWU6IHN0cmluZyxcbiAgICBwcm9tcHQ6XG4gICAgICBbQHByaW50ZXIgKGZtdCwgXykgPT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIFwicHJvbXB0XCIpXSBbQG9wYXF1ZV0gRXhlcmNpc2VFbnYubm9kZSxcbiAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgcHJlbHVkZTogJ2NvZGUsXG4gICAgY29ycmVjdF9pbXBsOiAnY29kZSxcbiAgICB5b3VyX3Rlc3RzOiB5b3VyX3Rlc3RzKCdjb2RlKSxcbiAgICB5b3VyX2ltcGw6ICdjb2RlLFxuICAgIGhpZGRlbl9idWdzOiBsaXN0KHdyb25nX2ltcGwoJ2NvZGUpKSxcbiAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0cygnY29kZSksXG4gICAgc3ludGF4X3Rlc3RzLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBrZXkgPSAoc3RyaW5nLCBpbnQpO1xuXG4gIGxldCBrZXlfb2YgPSBwID0+IHtcbiAgICAocC50aXRsZSwgcC52ZXJzaW9uKTtcbiAgfTtcblxuICBsZXQgZmluZF9rZXlfb3B0ID0gKGtleSwgc3BlY3M6IGxpc3QocCgnY29kZSkpKSA9PiB7XG4gICAgc3BlY3MgfD4gVXRpbC5MaXN0VXRpbC5maW5kaV9vcHQoc3BlYyA9PiBrZXlfb2Yoc3BlYykgPT0ga2V5KTtcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9zID1cbiAgICB8IFByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nXG4gICAgfCBZb3VySW1wbFxuICAgIHwgSGlkZGVuQnVncyhpbnQpXG4gICAgfCBIaWRkZW5UZXN0cztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3BlYyA9IHAoWmlwcGVyLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0cmFuc2l0aW9uYXJ5X3NwZWMgPSBwKENvZGVTdHJpbmcudCk7XG5cbiAgbGV0IG1hcCA9IChwOiBwKCdhKSwgZjogJ2EgPT4gJ2IpOiBwKCdiKSA9PiB7XG4gICAge1xuICAgICAgdGl0bGU6IHAudGl0bGUsXG4gICAgICB2ZXJzaW9uOiBwLnZlcnNpb24sXG4gICAgICBtb2R1bGVfbmFtZTogcC5tb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogcC5wcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IHAucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZTogZihwLnByZWx1ZGUpLFxuICAgICAgY29ycmVjdF9pbXBsOiBmKHAuY29ycmVjdF9pbXBsKSxcbiAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IGYocC55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgcmVxdWlyZWQ6IHAueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IHAueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGw6IGYocC55b3VyX2ltcGwpLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIHAuaGlkZGVuX2J1Z3NcbiAgICAgICAgfD4gTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB7XG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgaW1wbDogUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KHdyb25nX2ltcGwuaW1wbCksXG4gICAgICAgICAgICAgICBoaW50OiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgICAgfVxuICAgICAgICAgICB9KSxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KHAuaGlkZGVuX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgaGludHM6IHAuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgfSxcbiAgICAgIHN5bnRheF90ZXN0czogcC5zeW50YXhfdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZWRzID0gcChFZGl0b3IudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN0YXRlID0ge2Vkc307XG5cbiAgbGV0IGtleV9vZl9zdGF0ZSA9ICh7ZWRzLCBffSkgPT4ga2V5X29mKGVkcyk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcnNpc3RlbnRfc3RhdGUgPSBsaXN0KChwb3MsIFBlcnNpc3RlbnRaaXBwZXIudCkpO1xuXG4gIGxldCBtYWluX2VkaXRvcl9vZl9zdGF0ZSA9ICh+c2VsZWN0aW9uOiBwb3MsIHtlZHN9KSA9PlxuICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgfCBQcmVsdWRlID0+IGVkcy5wcmVsdWRlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBlZHMuY29ycmVjdF9pbXBsXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgfCBZb3VySW1wbCA9PiBlZHMueW91cl9pbXBsXG4gICAgfCBIaWRkZW5CdWdzKGkpID0+IExpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgaSkuaW1wbFxuICAgIHwgSGlkZGVuVGVzdHMgPT4gZWRzLmhpZGRlbl90ZXN0cy50ZXN0c1xuICAgIH07XG5cbiAgbGV0IHB1dF9tYWluX2VkaXRvciA9ICh+c2VsZWN0aW9uOiBwb3MsIHtlZHN9OiBzdGF0ZSwgZWRpdG9yOiBFZGl0b3IudCkgPT5cbiAgICBzd2l0Y2ggKHNlbGVjdGlvbikge1xuICAgIHwgUHJlbHVkZSA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBwcmVsdWRlOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBDb3JyZWN0SW1wbCA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBjb3JyZWN0X2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4ge1xuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgLi4uZWRzLnlvdXJfdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VySW1wbCA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlbkJ1Z3MobikgPT4ge1xuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgICBVdGlsLkxpc3RVdGlsLnB1dF9udGgoXG4gICAgICAgICAgICAgIG4sXG4gICAgICAgICAgICAgIHsuLi5MaXN0Lm50aChlZHMuaGlkZGVuX2J1Z3MsIG4pLCBpbXBsOiBlZGl0b3J9LFxuICAgICAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4ge1xuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMuaGlkZGVuX3Rlc3RzLFxuICAgICAgICAgICAgdGVzdHM6IGVkaXRvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGVkaXRvcnMgPSAoe2VkcywgX306IHN0YXRlKSA9PlxuICAgIFtcbiAgICAgIGVkcy5wcmVsdWRlLFxuICAgICAgZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgIGVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl9pbXBsLFxuICAgIF1cbiAgICBAIExpc3QubWFwKHdyb25nX2ltcGwgPT4gd3JvbmdfaW1wbC5pbXBsLCBlZHMuaGlkZGVuX2J1Z3MpXG4gICAgQCBbZWRzLmhpZGRlbl90ZXN0cy50ZXN0c107XG5cbiAgbGV0IGVkaXRvcl9wb3NpdGlvbnMgPSAoe2VkcywgX306IHN0YXRlKSA9PlxuICAgIFtQcmVsdWRlLCBDb3JyZWN0SW1wbCwgWW91clRlc3RzVGVzdGluZywgWW91clRlc3RzVmFsaWRhdGlvbiwgWW91ckltcGxdXG4gICAgQCBMaXN0Lm1hcGkoKGksIF8pID0+IEhpZGRlbkJ1Z3MoaSksIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtIaWRkZW5UZXN0c107XG5cbiAgbGV0IHBvc2l0aW9uZWRfZWRpdG9ycyA9IHN0YXRlID0+XG4gICAgTGlzdC5jb21iaW5lKGVkaXRvcl9wb3NpdGlvbnMoc3RhdGUpLCBlZGl0b3JzKHN0YXRlKSk7XG5cbiAgbGV0IGlkeF9vZl9wb3MgPSAocG9zLCBwOiBwKCdjb2RlKSkgPT5cbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiAwXG4gICAgfCBDb3JyZWN0SW1wbCA9PiAxXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IDJcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gM1xuICAgIHwgWW91ckltcGwgPT4gNFxuICAgIHwgSGlkZGVuQnVncyhpKSA9PlxuICAgICAgaWYgKGkgPCBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICA1ICsgaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx3aXRoKFwiaW52YWxpZCBoaWRkZW4gYnVnIGluZGV4XCIpO1xuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpXG4gICAgfTtcblxuICBsZXQgcG9zX29mX2lkeCA9IChwOiBwKCdjb2RlKSwgaWR4OiBpbnQpID0+XG4gICAgc3dpdGNoIChpZHgpIHtcbiAgICB8IDAgPT4gUHJlbHVkZVxuICAgIHwgMSA9PiBDb3JyZWN0SW1wbFxuICAgIHwgMiA9PiBZb3VyVGVzdHNUZXN0aW5nXG4gICAgfCAzID0+IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IDQgPT4gWW91ckltcGxcbiAgICB8IF8gPT5cbiAgICAgIGlmIChpZHggPCAwKSB7XG4gICAgICAgIGZhaWx3aXRoKFwibmVnYXRpdmUgaWR4XCIpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPCA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgSGlkZGVuQnVncyhpZHggLSA1KTtcbiAgICAgIH0gZWxzZSBpZiAoaWR4ID09IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5UZXN0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx3aXRoKFwiZWxlbWVudCBpZHhcIik7XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgemlwcGVyX29mX2NvZGUgPSBjb2RlID0+IHtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIlRyYW5zaXRpb24gZmFpbGVkLlwiKVxuICAgIHwgU29tZSh6aXBwZXIpID0+IHppcHBlclxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb246IHRyYW5zaXRpb25hcnlfc3BlYyA9PiBzcGVjID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSB6aXBwZXJfb2ZfY29kZShwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSB6aXBwZXJfb2ZfY29kZShjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IHppcHBlcl9vZl9jb2RlKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgIGxldCBpbXBsID0gemlwcGVyX29mX2NvZGUoaW1wbCk7XG4gICAgICAgICAgICBhY2MgQCBbe2ltcGwsIGhpbnR9XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgZWRpdG9yX29mX3NlcmlhbGl6YXRpb24gPSB6aXBwZXIgPT4gRWRpdG9yLmluaXQoemlwcGVyKTtcbiAgbGV0IGVkc19vZl9zcGVjOiBzcGVjID0+IGVkcyA9XG4gICAgKFxuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfSxcbiAgICApID0+IHtcbiAgICAgIGxldCBwcmVsdWRlID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24ocHJlbHVkZSk7XG4gICAgICBsZXQgY29ycmVjdF9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oY29ycmVjdF9pbXBsKTtcbiAgICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCByZXF1aXJlZDogeW91cl90ZXN0cy5yZXF1aXJlZCwgcHJvdmlkZWQ6IHlvdXJfdGVzdHMucHJvdmlkZWR9O1xuICAgICAgfTtcbiAgICAgIGxldCB5b3VyX2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih5b3VyX2ltcGwpO1xuICAgICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgICAgfD4gTGlzdC5tYXAoKHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgIGxldCBpbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oaW1wbCk7XG4gICAgICAgICAgICAge2ltcGwsIGhpbnR9O1xuICAgICAgICAgICB9KTtcbiAgICAgIGxldCBoaWRkZW5fdGVzdHMgPSB7XG4gICAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24odGVzdHMpO1xuICAgICAgICB7dGVzdHMsIGhpbnRzfTtcbiAgICAgIH07XG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9O1xuICAgIH07XG5cbiAgLy9cbiAgLy8gT2xkIHZlcnNpb24gb2YgYWJvdmUgdGhhdCBkaWQgc3RyaW5nLWJhc2VkIHBhcnNpbmcsIG1heSBiZSB1c2VmdWxcbiAgLy8gZm9yIHRyYW5zaXRpb25zIGJldHdlZW4gemlwcGVyIGRhdGEgc3RydWN0dXJlIHZlcnNpb25zIChUT0RPKVxuICAvL1xuICAvLyBsZXQgZWRpdG9yX29mX2NvZGUgPSAoaW5pdF9pZCwgY29kZSkgPT5cbiAgLy8gICBzd2l0Y2ggKEVkaXRvclV0aWwuZWRpdG9yX29mX2NvZGUoaW5pdF9pZCwgY29kZSkpIHtcbiAgLy8gICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJFeGVyY2lzZSBlcnJvcjogaW52YWxpZCBjb2RlXCIpXG4gIC8vICAgfCBTb21lKHgpID0+IHhcbiAgLy8gICB9O1xuICAvLyBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgLy8gICAoXG4gIC8vICAgICB7XG4gIC8vXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9LFxuICAvLyAgICkgPT4ge1xuICAvLyAgICAgbGV0IGlkID0gbmV4dF9pZDtcbiAgLy8gICAgIGxldCAoaWQsIHByZWx1ZGUpID0gZWRpdG9yX29mX2NvZGUoaWQsIHByZWx1ZGUpO1xuICAvLyAgICAgbGV0IChpZCwgY29ycmVjdF9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBjb3JyZWN0X2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgeW91cl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgLy8gICAgICAgKFxuICAvLyAgICAgICAgIGlkLFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIHRlc3RzLFxuICAvLyAgICAgICAgICAgbnVtX3JlcXVpcmVkOiB5b3VyX3Rlc3RzLm51bV9yZXF1aXJlZCxcbiAgLy8gICAgICAgICAgIG1pbmltdW06IHlvdXJfdGVzdHMubWluaW11bSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl9idWdzKSA9XG4gIC8vICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAvLyAgICAgICAgICgoaWQsIGFjYyksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAvLyAgICAgICAgICAgbGV0IChpZCwgaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgaW1wbCk7XG4gIC8vICAgICAgICAgICAoaWQsIGFjYyBAIFt7aW1wbCwgaGludH1dKTtcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChpZCwgW10pLFxuICAvLyAgICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICApO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgdGVzdHMpO1xuICAvLyAgICAgICAoaWQsIHt0ZXN0cywgaGludHN9KTtcbiAgLy8gICAgIH07XG4gIC8vICAgICB7XG4gIC8vICAgICAgIG5leHRfaWQ6IGlkLFxuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfTtcbiAgLy8gICB9O1xuXG4gIGxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKHtlZHN9OiBzdGF0ZSwgbmV3X21vZGU6IGJvb2wpID0+IHtcbiAgICBlZHM6IHtcbiAgICAgIC4uLmVkcyxcbiAgICAgIHByZWx1ZGU6IEVkaXRvci5zZXRfcmVhZF9vbmx5KGVkcy5wcmVsdWRlLCAhbmV3X21vZGUpLFxuICAgIH0sXG4gIH07XG5cbiAgbGV0IHZpc2libGVfaW4gPSAocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdHJ1ZVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBmYWxzZVxuICAgIHwgWW91ckltcGwgPT4gdHJ1ZVxuICAgIHwgSGlkZGVuQnVncyhfKSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IEhpZGRlblRlc3RzID0+IGluc3RydWN0b3JfbW9kZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRlX29mX3NwZWMgPSAoc3BlYywgfmluc3RydWN0b3JfbW9kZTogYm9vbCk6IHN0YXRlID0+IHtcbiAgICBsZXQgZWRzID0gZWRzX29mX3NwZWMoc3BlYyk7XG4gICAgc2V0X2luc3RydWN0b3JfbW9kZSh7ZWRzOiBlZHN9LCBpbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlID0gKHN0YXRlOiBzdGF0ZSwgfmluc3RydWN0b3JfbW9kZTogYm9vbCkgPT4ge1xuICAgIGxldCB6aXBwZXJzID1cbiAgICAgIHBvc2l0aW9uZWRfZWRpdG9ycyhzdGF0ZSlcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgocG9zLCBfKSkgPT4gdmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKVxuICAgICAgfD4gTGlzdC5tYXAoKChwb3MsIGVkaXRvcikpID0+IHtcbiAgICAgICAgICAgKHBvcywgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KEVkaXRvci4oZWRpdG9yLnN0YXRlLnppcHBlcikpKVxuICAgICAgICAgfSk7XG4gICAgemlwcGVycztcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0X3N0YXRlID1cbiAgICAgIChcbiAgICAgICAgcG9zaXRpb25lZF96aXBwZXJzOiBwZXJzaXN0ZW50X3N0YXRlLFxuICAgICAgICB+c3BlYzogc3BlYyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZTogYm9vbCxcbiAgICAgIClcbiAgICAgIDogc3RhdGUgPT4ge1xuICAgIGxldCBsb29rdXAgPSAocG9zLCBkZWZhdWx0KSA9PlxuICAgICAgaWYgKHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICBsZXQgcGVyc2lzdGVkX3ppcHBlciA9IExpc3QuYXNzb2MocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpO1xuICAgICAgICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QocGVyc2lzdGVkX3ppcHBlcik7XG4gICAgICAgIEVkaXRvci5pbml0KHppcHBlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihkZWZhdWx0KTtcbiAgICAgIH07XG4gICAgbGV0IHByZWx1ZGUgPSBsb29rdXAoUHJlbHVkZSwgc3BlYy5wcmVsdWRlKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gbG9va3VwKENvcnJlY3RJbXBsLCBzcGVjLmNvcnJlY3RfaW1wbCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBsb29rdXAoWW91clRlc3RzVmFsaWRhdGlvbiwgc3BlYy55b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgeW91cl9pbXBsID0gbG9va3VwKFlvdXJJbXBsLCBzcGVjLnlvdXJfaW1wbCk7XG4gICAgbGV0IChfLCBoaWRkZW5fYnVncykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoaSwgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgbGV0IGltcGwgPSBsb29rdXAoSGlkZGVuQnVncyhpKSwgaW1wbCk7XG4gICAgICAgICAgKGkgKyAxLCBoaWRkZW5fYnVncyBAIFt7aW1wbCwgaGludH1dKTtcbiAgICAgICAgfSxcbiAgICAgICAgKDAsIFtdKSxcbiAgICAgICAgc3BlYy5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXN0cyA9IGxvb2t1cChIaWRkZW5UZXN0cywgc3BlYy5oaWRkZW5fdGVzdHMudGVzdHMpO1xuXG4gICAgc2V0X2luc3RydWN0b3JfbW9kZShcbiAgICAgIHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgdGl0bGU6IHNwZWMudGl0bGUsXG4gICAgICAgICAgdmVyc2lvbjogc3BlYy52ZXJzaW9uLFxuICAgICAgICAgIG1vZHVsZV9uYW1lOiBzcGVjLm1vZHVsZV9uYW1lLFxuICAgICAgICAgIHByb21wdDogc3BlYy5wcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBzcGVjLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICBwcmVsdWRlLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogeW91cl90ZXN0c190ZXN0cyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBzcGVjLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgICAgICBwcm92aWRlZDogc3BlYy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IGhpZGRlbl90ZXN0c190ZXN0cyxcbiAgICAgICAgICAgIGhpbnRzOiBzcGVjLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN5bnRheF90ZXN0czogc3BlYy5zeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICk7XG4gIH07XG5cbiAgLy8gIyBTdGl0Y2hpbmdcblxuICBtb2R1bGUgVGVybUl0ZW0gPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVybTogRXhwLnQsXG4gICAgICB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50LFxuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFN0YXRpY3NJdGVtID0ge1xuICAgIHR5cGUgdCA9IENhY2hlZFN0YXRpY3Muc3RhdGljcztcbiAgfTtcblxuICB0eXBlIHN0aXRjaGVkKCdhKSA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgeW91cl90ZXN0c1xuICAgIHVzZXJfaW1wbDogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGxcbiAgICB1c2VyX3Rlc3RzOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbCArIHlvdXJfdGVzdHNcbiAgICBwcmVsdWRlOiAnYSwgLy8gcHJlbHVkZVxuICAgIGluc3RydWN0b3I6ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgaGlkZGVuX3Rlc3RzLnRlc3RzIC8vIFRPRE8gb25seSBuZWVkcyB0byBydW4gaW4gaW5zdHJ1Y3RvciBtb2RlXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3QoJ2EpLCAvLyBwcmVsdWRlICsgaGlkZGVuX2J1Z3NbaV0uaW1wbCArIHlvdXJfdGVzdHMsXG4gICAgaGlkZGVuX3Rlc3RzOiAnYSxcbiAgfTtcblxuICBsZXQgd3JhcF9maWx0ZXIgPSAoYWN0OiBGaWx0ZXJBY3Rpb24uYWN0aW9uLCB0ZXJtOiBVRXhwLnQpOiBVRXhwLnQgPT5cbiAgICBFeHAue1xuICAgICAgdGVybTpcbiAgICAgICAgRXhwLkZpbHRlcihcbiAgICAgICAgICBGaWx0ZXIoe1xuICAgICAgICAgICAgYWN0OiBGaWx0ZXJBY3Rpb24uKGFjdCwgT25lKSxcbiAgICAgICAgICAgIHBhdDoge1xuICAgICAgICAgICAgICB0ZXJtOiBDb25zdHJ1Y3RvcihcIiRlXCIpLFxuICAgICAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpZHM6IFtJZC5taygpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGVybSxcbiAgICAgICAgKSxcbiAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICBpZHM6IFtJZC5taygpXSxcbiAgICB9O1xuXG4gIGxldCB3cmFwID0gKHRlcm0sIGVkaXRvcjogRWRpdG9yLnQpOiBUZXJtSXRlbS50ID0+IHtcbiAgICB0ZXJtLFxuICAgIHRlcm1fcmFuZ2VzOiBlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcyxcbiAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVUV4cC50ID0+IGVkaXRvci5zdGF0ZS5tZXRhLnZpZXdfdGVybTtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUl0ZW0udCkgPT4ge1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIGVkcy5jb3JyZWN0X2ltcGwsIGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpO1xuICAgIGxldCB1c2VyX2ltcGxfdGVybSA9IHtcbiAgICAgIGxldCB5b3VyX2ltcGxfdGVybSA9XG4gICAgICAgIGVkcy55b3VyX2ltcGwgfD4gdGVybV9vZiB8PiB3cmFwX2ZpbHRlcihGaWx0ZXJBY3Rpb24uU3RlcCk7XG4gICAgICBsZXQgcHJlbHVkZV90ZXJtID1cbiAgICAgICAgZWRzLnByZWx1ZGUgfD4gdGVybV9vZiB8PiB3cmFwX2ZpbHRlcihGaWx0ZXJBY3Rpb24uRXZhbCk7XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAocHJlbHVkZV90ZXJtLCB5b3VyX2ltcGxfdGVybSk7XG4gICAgfTtcbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uX3Rlcm0gPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB1c2VyX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy55b3VyX3Rlc3RzLnRlc3RzKSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXJtID1cbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh1c2VyX2ltcGxfdGVybSwgdGVybV9vZihlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKSk7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiB3cmFwKHRlc3RfdmFsaWRhdGlvbl90ZXJtLCBlZHMueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICB1c2VyX2ltcGw6IHdyYXAodXNlcl9pbXBsX3Rlcm0sIGVkcy55b3VyX2ltcGwpLFxuICAgICAgdXNlcl90ZXN0czogd3JhcCh1c2VyX3Rlc3RzX3Rlcm0sIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IHdyYXAoaW5zdHJ1Y3RvciwgZWRzLnByZWx1ZGUpLFxuICAgICAgaW5zdHJ1Y3Rvcjogd3JhcChpbnN0cnVjdG9yLCBlZHMuY29ycmVjdF9pbXBsKSxcbiAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAodCk6IFRlcm1JdGVtLnQgPT5cbiAgICAgICAgICAgIHdyYXAoc3RpdGNoMyhlZHMucHJlbHVkZSwgdC5pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyksIHQuaW1wbCksXG4gICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICApLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB3cmFwKGhpZGRlbl90ZXN0c190ZXJtLCBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKSxcbiAgICB9O1xuICB9O1xuICBsZXQgc3RpdGNoX3Rlcm0gPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfdGVybSk7XG5cbiAgdHlwZSBzdGl0Y2hlZF9zdGF0aWNzID0gc3RpdGNoZWQoU3RhdGljc0l0ZW0udCk7XG5cbiAgLyogTXVsdGlwbGUgc3RpdGNoaW5ncyBhcmUgbmVlZGVkIGZvciBlYWNoIGV4ZXJjaXNlXG4gICAgIChzZWUgY29tbWVudHMgaW4gdGhlIHN0aXRjaGVkIHR5cGUgYWJvdmUpXG5cbiAgICAgU3RpdGNoaW5nIGlzIG5lY2Vzc2FyeSB0byBjb25jYXRlbmF0ZSB0ZXJtc1xuICAgICBmcm9tIGRpZmZlcmVudCBlZGl0b3JzLCB3aGljaCBhcmUgdGhlbiB0eXBlY2hlY2tlZC4gKi9cbiAgbGV0IHN0aXRjaF9zdGF0aWMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgdDogc3RpdGNoZWQoVGVybUl0ZW0udCkpOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAoe3Rlcm0sIHRlcm1fcmFuZ2VzLCBffTogVGVybUl0ZW0udCk6IFN0YXRpY3NJdGVtLnQgPT4ge1xuICAgICAgbGV0IGluZm9fbWFwID0gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwKHNldHRpbmdzLCB0ZXJtKTtcbiAgICAgIHtcbiAgICAgICAgdGVybSxcbiAgICAgICAgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHModGVybV9yYW5nZXMsIGluZm9fbWFwKSxcbiAgICAgICAgaW5mb19tYXAsXG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IGluc3RydWN0b3IgPSBtayh0Lmluc3RydWN0b3IpO1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbjogbWsodC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgdXNlcl9pbXBsOiBtayh0LnVzZXJfaW1wbCksXG4gICAgICB1c2VyX3Rlc3RzOiBtayh0LnVzZXJfdGVzdHMpLFxuICAgICAgcHJlbHVkZTogaW5zdHJ1Y3RvciwgLy8gd29ya3MgYXMgbG9uZyBhcyB5b3UgZG9uJ3Qgc2hhZG93IGFueXRoaW5nIGluIHRoZSBwcmVsdWRlXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKG1rLCB0LmhpZGRlbl9idWdzKSxcbiAgICAgIGhpZGRlbl90ZXN0czogbWsodC5oaWRkZW5fdGVzdHMpLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0aXRjaF9zdGF0aWMgPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfc3RhdGljKTtcblxuICBsZXQgcHJlbHVkZV9rZXkgPSBcInByZWx1ZGVcIjtcbiAgbGV0IHRlc3RfdmFsaWRhdGlvbl9rZXkgPSBcInRlc3RfdmFsaWRhdGlvblwiO1xuICBsZXQgdXNlcl9pbXBsX2tleSA9IFwidXNlcl9pbXBsXCI7XG4gIGxldCB1c2VyX3Rlc3RzX2tleSA9IFwidXNlcl90ZXN0c1wiO1xuICBsZXQgaW5zdHJ1Y3Rvcl9rZXkgPSBcImluc3RydWN0b3JcIjtcbiAgbGV0IGhpZGRlbl9idWdzX2tleSA9IG4gPT4gXCJoaWRkZW5fYnVnc19cIiArKyBzdHJpbmdfb2ZfaW50KG4pO1xuICBsZXQgaGlkZGVuX3Rlc3RzX2tleSA9IFwiaGlkZGVuX3Rlc3RzXCI7XG5cbiAgbGV0IGtleV9mb3Jfc3RhdGljcyA9IChwb3M6IHBvcyk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHByZWx1ZGVfa2V5XG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX2tleVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0ZXN0X3ZhbGlkYXRpb25fa2V5XG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHVzZXJfdGVzdHNfa2V5XG4gICAgfCBZb3VySW1wbCA9PiB1c2VyX2ltcGxfa2V5XG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gaGlkZGVuX2J1Z3Nfa2V5KGlkeClcbiAgICB8IEhpZGRlblRlc3RzID0+IGhpZGRlbl90ZXN0c19rZXlcbiAgICB9O1xuXG4gIGxldCBzcGxpY2VkX2VsYWJzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZTogXyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IGVsYWIgPSAoczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzKTogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50ID0+IHtcbiAgICAgIGQ6IEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzLCBzLmluZm9fbWFwLCBzLnRlcm0pLFxuICAgIH07XG4gICAgW1xuICAgICAgKHRlc3RfdmFsaWRhdGlvbl9rZXksIGVsYWIodGVzdF92YWxpZGF0aW9uKSksXG4gICAgICAodXNlcl9pbXBsX2tleSwgZWxhYih1c2VyX2ltcGwpKSxcbiAgICAgICh1c2VyX3Rlc3RzX2tleSwgZWxhYih1c2VyX3Rlc3RzKSksXG4gICAgICAoaW5zdHJ1Y3Rvcl9rZXksIGVsYWIoaW5zdHJ1Y3RvcikpLFxuICAgICAgKGhpZGRlbl90ZXN0c19rZXksIGVsYWIoaGlkZGVuX3Rlc3RzKSksXG4gICAgXVxuICAgIEAgKFxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwaSgobiwgaGlkZGVuX2J1ZzogU3RhdGljc0l0ZW0udCkgPT5cbiAgICAgICAgICAgKGhpZGRlbl9idWdzX2tleShuKSwgZWxhYihoaWRkZW5fYnVnKSlcbiAgICAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBta19zdGF0aWNzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgU3RhdGljc0l0ZW0udCkpID0+IHtcbiAgICBsZXQgc3RpdGNoZWQgPSBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIFtcbiAgICAgIChwcmVsdWRlX2tleSwgc3RpdGNoZWQucHJlbHVkZSksXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgc3RpdGNoZWQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBzdGl0Y2hlZC51c2VyX2ltcGwpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBzdGl0Y2hlZC51c2VyX3Rlc3RzKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgc3RpdGNoZWQuaW5zdHJ1Y3RvciksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgc3RpdGNoZWQuaGlkZGVuX3Rlc3RzKSxcbiAgICBdXG4gICAgQCBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBoaWRkZW5fYnVnOiBTdGF0aWNzSXRlbS50KSA9PiAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBoaWRkZW5fYnVnKSxcbiAgICAgICAgc3RpdGNoZWQuaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICB9O1xuXG4gIG1vZHVsZSBEeW5hbWljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVybTogRXhwLnQsXG4gICAgICBpbmZvX21hcDogU3RhdGljcy5NYXAudCxcbiAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQudCxcbiAgICB9O1xuICAgIGxldCBlbXB0eTogdCA9IHtcbiAgICAgIHRlcm06IHtcbiAgICAgICAgdGVybTogVHVwbGUoW10pLFxuICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICBpZHM6IFtJZC5taygpXSxcbiAgICAgIH0sXG4gICAgICBpbmZvX21hcDogSWQuTWFwLmVtcHR5LFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgICBsZXQgc3RhdGljc19vbmx5ID0gKHt0ZXJtLCBpbmZvX21hcCwgX306IFN0YXRpY3NJdGVtLnQpOiB0ID0+IHtcbiAgICAgIHt0ZXJtLCBpbmZvX21hcCwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIH07XG4gIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB0ZXN0X3ZhbGlkYXRpb24udGVybSxcbiAgICAgICAgaW5mb19tYXA6IHRlc3RfdmFsaWRhdGlvbi5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodGVzdF92YWxpZGF0aW9uX2tleSksXG4gICAgICB9O1xuXG4gICAgbGV0IHVzZXJfaW1wbCA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB1c2VyX2ltcGwudGVybSxcbiAgICAgICAgaW5mb19tYXA6IHVzZXJfaW1wbC5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodXNlcl9pbXBsX2tleSksXG4gICAgICB9O1xuXG4gICAgbGV0IHVzZXJfdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogdXNlcl90ZXN0cy50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdXNlcl90ZXN0cy5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiBwcmVsdWRlLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBwcmVsdWRlLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICAgIH07XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogaW5zdHJ1Y3Rvci50ZXJtLFxuICAgICAgICBpbmZvX21hcDogaW5zdHJ1Y3Rvci5pbmZvX21hcCxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpLFxuICAgICAgfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljc19pdGVtOiBTdGF0aWNzSXRlbS50KSA9PlxuICAgICAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgICAgICB0ZXJtOiBzdGF0aWNzX2l0ZW0udGVybSxcbiAgICAgICAgICAgIGluZm9fbWFwOiBzdGF0aWNzX2l0ZW0uaW5mb19tYXAsXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihoaWRkZW5fYnVnc19rZXkobikpLFxuICAgICAgICAgIH0sXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IGhpZGRlbl90ZXN0cy50ZXJtLFxuICAgICAgICBpbmZvX21hcDogaGlkZGVuX3Rlc3RzLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihoaWRkZW5fdGVzdHNfa2V5KSxcbiAgICAgIH07XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX2R5bmFtaWMgPVxuICAgICAgKFxuICAgICAgICBzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgcmVzdWx0czogb3B0aW9uKE1vZGVsUmVzdWx0cy50KSxcbiAgICAgIClcbiAgICAgIDogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpID0+XG4gICAgaWYgKHNldHRpbmdzLnN0YXRpY3MgJiYgc2V0dGluZ3MuZHluYW1pY3MpIHtcbiAgICAgIHN0aXRjaF9keW5hbWljKHNldHRpbmdzLCBzdGF0ZSwgcmVzdWx0cyk7XG4gICAgfSBlbHNlIGlmIChzZXR0aW5ncy5zdGF0aWNzKSB7XG4gICAgICBsZXQgdCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgICB7XG4gICAgICAgIHRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICAgIHVzZXJfaW1wbDogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfaW1wbCksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC51c2VyX3Rlc3RzKSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0Lmluc3RydWN0b3IpLFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQucHJlbHVkZSksXG4gICAgICAgIGhpZGRlbl9idWdzOiBMaXN0Lm1hcChEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5LCB0LmhpZGRlbl9idWdzKSxcbiAgICAgICAgaGlkZGVuX3Rlc3RzOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaGlkZGVuX3Rlc3RzKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfaW1wbDogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICB1c2VyX3Rlc3RzOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGluc3RydWN0b3I6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgcHJlbHVkZTogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgoc3RhdGUuZWRzLmhpZGRlbl9idWdzKSwgXyA9PlxuICAgICAgICAgICAgRHluYW1pY3NJdGVtLmVtcHR5XG4gICAgICAgICAgKSxcbiAgICAgICAgaGlkZGVuX3Rlc3RzOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICB9O1xuICAgIH07XG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9keW5hbWljKTtcblxuICAvLyBNb2R1bGUgRXhwb3J0XG5cbiAgbGV0IGVkaXRvcl9wcCA9IChmbXQsIGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgc2VyaWFsaXphdGlvbiA9IFppcHBlci5zaG93KHppcHBlcik7XG4gICAgLy8gbGV0IHN0cmluZ19saXRlcmFsID0gXCJcXFwiXCIgKysgU3RyaW5nLmVzY2FwZWQoc2VyaWFsaXphdGlvbikgKysgXCJcXFwiXCI7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIHNlcmlhbGl6YXRpb24pO1xuICB9O1xuXG4gIGxldCBleHBvcnRfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgcHJlZml4ID1cbiAgICAgIFwibGV0IHByb21wdCA9IFwiXG4gICAgICArKyBtb2R1bGVfbmFtZVxuICAgICAgKysgXCJfcHJvbXB0LnByb21wdFxcblwiXG4gICAgICArKyBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AoZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb25hcnlfZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBjb2RlID0gUHJpbnRlci50b19zdHJpbmdfYmFzaWMoemlwcGVyKTtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJcXFwiXCIgKysgU3RyaW5nLmVzY2FwZWQoY29kZSkgKysgXCJcXFwiXCIpO1xuICB9O1xuXG4gIGxldCBleHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gRXhlcmNpc2UudHJhbnNpdGlvbihcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKHRyYW5zaXRpb25hcnlfZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gcHJlZml4ICsrIHJlY29yZCArKyBcIilcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCBleHBvcnRfZ3JhZGluZ19tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBoZWFkZXIgPSBvdXRwdXRfaGVhZGVyX2dyYWRpbmcobW9kdWxlX25hbWUpO1xuICAgIGxldCBwcmVmaXggPSBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AoZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gaGVhZGVyICsrIHByZWZpeCArKyByZWNvcmQgKysgXCJcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCBibGFua19zcGVjID1cbiAgICAgIChcbiAgICAgICAgfnRpdGxlLFxuICAgICAgICB+bW9kdWxlX25hbWUsXG4gICAgICAgIH5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIH5yZXF1aXJlZF90ZXN0cyxcbiAgICAgICAgfnByb3ZpZGVkX3Rlc3RzLFxuICAgICAgICB+bnVtX3dyb25nX2ltcGxzLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHByZWx1ZGUgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgeW91cl9pbXBsID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5pbml0KFxuICAgICAgICBudW1fd3JvbmdfaW1wbHMsXG4gICAgICAgIGkgPT4ge1xuICAgICAgICAgIGxldCB6aXBwZXIgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgICAgICAgIHtpbXBsOiB6aXBwZXIsIGhpbnQ6IFwiVE9ETzogaGludCBcIiArKyBzdHJpbmdfb2ZfaW50KGkpfTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXN0cyA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQ6IEV4ZXJjaXNlRW52LmRlZmF1bHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogeW91cl90ZXN0c190ZXN0cyxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICBwcm92aWRlZDogcHJvdmlkZWRfdGVzdHMsXG4gICAgICB9LFxuICAgICAgeW91cl9pbXBsLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IGhpZGRlbl90ZXN0c190ZXN0cyxcbiAgICAgICAgaGludHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHN5bnRheF90ZXN0czogW10sXG4gICAgfTtcbiAgfTtcblxuICAvLyBGcm9tIFN0b3JlXG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGV4ZXJjaXNlX2V4cG9ydCA9IHtcbiAgICBjdXJfZXhlcmNpc2U6IGtleSxcbiAgICBleGVyY2lzZV9kYXRhOiBsaXN0KChrZXksIHBlcnNpc3RlbnRfc3RhdGUpKSxcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplX2V4ZXJjaXNlID0gKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSlcbiAgICB8PiBzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGVcbiAgICB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZSA9IChkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGRhdGFcbiAgICB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nXG4gICAgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwXG4gICAgfD4gdW5wZXJzaXN0X3N0YXRlKH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0ID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IGV4ZXJjaXNlX2V4cG9ydF9vZl9zZXhwO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlLkV4ZXJjaXNlRW52KSA9PiB7XG4gIG9wZW4gRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcmNlbnRhZ2UgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50cyA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc2NvcmUgPSAocG9pbnRzLCBwb2ludHMpO1xuXG4gIGxldCBzY29yZV9vZl9wZXJjZW50ID0gKHBlcmNlbnQsIG1heF9wb2ludHMpID0+IHtcbiAgICBsZXQgbWF4X3BvaW50cyA9IGZsb2F0X29mX2ludChtYXhfcG9pbnRzKTtcbiAgICAocGVyY2VudCAqLiBtYXhfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgfTtcblxuICBtb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICByZXF1aXJlZDogaW50LFxuICAgICAgcHJvdmlkZWQ6IGludCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSkgPT4ge1xuICAgICAge1xuICAgICAgICB0ZXN0X3Jlc3VsdHMsXG4gICAgICAgIHJlcXVpcmVkOiBlZHMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IGVkcy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiAwLjBcbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgIGxldCBudW1fdGVzdHMgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKTtcbiAgICAgICAgbGV0IHJlcXVpcmVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgIGxldCBwcm92aWRlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucHJvdmlkZWQpO1xuICAgICAgICBsZXQgbnVtX3Bhc3NpbmcgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnBhc3NpbmcpO1xuXG4gICAgICAgIHJlcXVpcmVkIC0uIHByb3ZpZGVkIDw9IDAuMCB8fCBudW1fdGVzdHMgPD0gMC4wXG4gICAgICAgICAgPyAwLjBcbiAgICAgICAgICA6IG51bV9wYXNzaW5nXG4gICAgICAgICAgICAvLiBudW1fdGVzdHNcbiAgICAgICAgICAgICouIChcbiAgICAgICAgICAgICAgRmxvYXQubWF4KFxuICAgICAgICAgICAgICAgIDAuLFxuICAgICAgICAgICAgICAgIEZsb2F0Lm1pbihudW1fdGVzdHMgLS4gcHJvdmlkZWQsIHJlcXVpcmVkIC0uIHByb3ZpZGVkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvLiAocmVxdWlyZWQgLS4gcHJvdmlkZWQpXG4gICAgICAgICAgICApO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtyZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpfTtcblxuICAgIGxldCBoaWRkZW5fYnVnX3N0YXR1cyA9XG4gICAgICAgIChcbiAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z19kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgKVxuICAgICAgICA6IFRlc3RTdGF0dXMudCA9PiB7XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHModGVzdF92YWxpZGF0aW9uX2RhdGEucmVzdWx0KSxcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKGhpZGRlbl9idWdfZGF0YS5yZXN1bHQpLFxuICAgICAgKSB7XG4gICAgICB8IChOb25lLCBfKVxuICAgICAgfCAoXywgTm9uZSkgPT4gSW5kZXRcbiAgICAgIHwgKFNvbWUodGVzdF92YWxpZGF0aW9uX2RhdGEpLCBTb21lKGhpZGRlbl9idWdfZGF0YSkpID0+XG4gICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfbWFwID0gdGVzdF92YWxpZGF0aW9uX2RhdGEudGVzdF9tYXA7XG4gICAgICAgIGxldCBoaWRkZW5fYnVnX3Rlc3RfbWFwID0gaGlkZGVuX2J1Z19kYXRhLnRlc3RfbWFwO1xuXG4gICAgICAgIGxldCBmb3VuZCA9XG4gICAgICAgICAgaGlkZGVuX2J1Z190ZXN0X21hcFxuICAgICAgICAgIHw+IExpc3QuZmluZF9vcHQoKChpZCwgaW5zdGFuY2VfcmVwb3J0cykpID0+IHtcbiAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZV9yZXBvcnRzKTtcbiAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzc1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbCA9PlxuICAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMgPVxuICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25fdGVzdF9tYXAgfD4gVGVzdE1hcC5sb29rdXAoaWQpO1xuICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzKSB7XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IFNvbWUocmVwb3J0cykgPT5cbiAgICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMocmVwb3J0cyk7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzcyA9PiB0cnVlXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWxcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgc3dpdGNoIChmb3VuZCkge1xuICAgICAgICB8IE5vbmUgPT4gRmFpbFxuICAgICAgICB8IFNvbWUoXykgPT4gUGFzc1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9OyAvLyBmb3IgZWFjaCBoaWRkZW4gYnVnXG4gICAgLy8gICBpbiB0aGUgdGVzdCByZXN1bHRzIGRhdGEsIGZpbmQgYSB0ZXN0IElEIHRoYXQgcGFzc2VzIHRlc3QgdmFsaWRhdGlvbiBidXQgZmFpbHMgYWdhaW5zdFxuXG4gICAgbGV0IG1rID1cbiAgICAgICAgKFxuICAgICAgICAgIH50ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIH5oaWRkZW5fYnVnc19zdGF0ZTogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSksXG4gICAgICAgICAgfmhpZGRlbl9idWdzOiBsaXN0KER5bmFtaWNzSXRlbS50KSxcbiAgICAgICAgKVxuICAgICAgICA6IHQgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPVxuICAgICAgICBMaXN0Lm1hcChoaWRkZW5fYnVnX3N0YXR1cyh0ZXN0X3ZhbGlkYXRpb24pLCBoaWRkZW5fYnVncyk7XG4gICAgICBsZXQgaGludHMgPVxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAod3JvbmdfaW1wbDogd3JvbmdfaW1wbChFZGl0b3IudCkpID0+IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICBoaWRkZW5fYnVnc19zdGF0ZSxcbiAgICAgICAgKTtcbiAgICAgIGxldCByZXN1bHRzID0gTGlzdC5jb21iaW5lKHJlc3VsdHMsIGhpbnRzKTtcbiAgICAgIHtyZXN1bHRzOiByZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9IHJlcG9ydC5yZXN1bHRzO1xuICAgICAgbGV0IG51bV93cm9uZ19pbXBscyA9IExpc3QubGVuZ3RoKHJlc3VsdHMpO1xuICAgICAgbGV0IG51bV9wYXNzZWQgPVxuICAgICAgICByZXN1bHRzXG4gICAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICAgIHN3aXRjaCAobnVtX3dyb25nX2ltcGxzKSB7XG4gICAgICB8IDAgPT4gMS4wXG4gICAgICB8IF8gPT4gZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQpIC8uIGZsb2F0X29mX2ludChudW1fd3JvbmdfaW1wbHMpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICAvLyBUT0RPIG1vdmUgdG8gc2VwYXJhdGUgbW9kdWxlXG5cbiAgICBsZXQgc3VtbWFyeV9zdHIgPSAofnRvdGFsLCB+Zm91bmQpOiBzdHJpbmcgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10b3RhbCxcbiAgICAgICAgfnA9Zm91bmQsXG4gICAgICAgIH5xPTAsXG4gICAgICAgIH5uX3N0cj1cImJ1Z1wiLFxuICAgICAgICB+bnNfc3RyPVwiYnVnc1wiLFxuICAgICAgICB+cF9zdHI9XCJleHBvc2VkXCIsXG4gICAgICAgIH5xX3N0cj1cIlwiLFxuICAgICAgICB+cl9zdHI9XCJ1bnJldmVhbGVkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheFJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgaGludCkpLFxuICAgICAgcGVyY2VudGFnZSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH55b3VyX2ltcGw6IEVkaXRvci50LCB+dGVzdHM6IHN5bnRheF90ZXN0cyk6IHQgPT4ge1xuICAgICAgbGV0IHVzZXJfaW1wbF90ZXJtID0geW91cl9pbXBsLnN0YXRlLm1ldGEudmlld190ZXJtO1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2V4cCwgeW9qc29uKV1cbnR5cGUga2V5ID0gc3RyaW5nO1xuXG5tb2R1bGUgUmVxdWVzdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB2YWx1ZSA9IEhhejNsY29yZS5FeHAudDtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdCgoc3RyaW5nLCB2YWx1ZSkpO1xuXG4gIGxldCBzZXJpYWxpemUgPSBwcm9ncmFtID0+IHByb2dyYW0gfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIGxldCBkZXNlcmlhbGl6ZSA9IHNleHAgPT4gc2V4cCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHRfb2Zfc2V4cDtcbn07XG5cbm1vZHVsZSBSZXNwb25zZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB2YWx1ZSA9XG4gICAgUmVzdWx0LnQoXG4gICAgICAoSGF6M2xjb3JlLkV2YWx1YXRvci5SZXN1bHQudCwgSGF6M2xjb3JlLkV2YWx1YXRvclN0YXRlLnQpLFxuICAgICAgSGF6M2xjb3JlLlByb2dyYW1SZXN1bHQuZXJyb3IsXG4gICAgKTtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gbGlzdCgoc3RyaW5nLCB2YWx1ZSkpO1xuXG4gIGxldCBzZXJpYWxpemUgPSByID0+IHIgfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIGxldCBkZXNlcmlhbGl6ZSA9IHNleHAgPT4gc2V4cCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHRfb2Zfc2V4cDtcbn07XG5cbmxldCB3b3JrID0gKHJlczogUmVxdWVzdC52YWx1ZSk6IFJlc3BvbnNlLnZhbHVlID0+XG4gIHN3aXRjaCAoXG4gICAgSGF6M2xjb3JlLkV2YWx1YXRvci5ldmFsdWF0ZShIYXozbGNvcmUuQnVpbHRpbnMuZW52X2luaXQsIHtkOiByZXN9KVxuICApIHtcbiAgfCBleGNlcHRpb24gKEhhejNsY29yZS5FdmFsdWF0b3JFcnJvci5FeGNlcHRpb24ocmVhc29uKSkgPT5cbiAgICBwcmludF9lbmRsaW5lKFxuICAgICAgXCJFdmFsdWF0b3JFcnJvcjpcIiArKyBIYXozbGNvcmUuRXZhbHVhdG9yRXJyb3Iuc2hvdyhyZWFzb24pLFxuICAgICk7XG4gICAgRXJyb3IoSGF6M2xjb3JlLlByb2dyYW1SZXN1bHQuRXZhdWxhdG9yRXJyb3IocmVhc29uKSk7XG4gIHwgZXhjZXB0aW9uIGV4biA9PlxuICAgIHByaW50X2VuZGxpbmUoXCJFWE46XCIgKysgUHJpbnRleGMudG9fc3RyaW5nKGV4bikpO1xuICAgIEVycm9yKFxuICAgICAgSGF6M2xjb3JlLlByb2dyYW1SZXN1bHQuVW5rbm93bkV4Y2VwdGlvbihQcmludGV4Yy50b19zdHJpbmcoZXhuKSksXG4gICAgKTtcbiAgfCAoc3RhdGUsIHJlc3VsdCkgPT4gT2soKHJlc3VsdCwgc3RhdGUpKVxuICB9O1xuXG5sZXQgb25fcmVxdWVzdCA9IChyZXE6IHN0cmluZyk6IHVuaXQgPT5cbiAgcmVxXG4gIHw+IFJlcXVlc3QuZGVzZXJpYWxpemVcbiAgfD4gTGlzdC5tYXAoKChrLCB2KSkgPT4gKGssIHdvcmsodikpKVxuICB8PiBSZXNwb25zZS5zZXJpYWxpemVcbiAgfD4gSnNfb2Zfb2NhbWwuV29ya2VyLnBvc3RfbWVzc2FnZTtcblxubGV0IHN0YXJ0ID0gKCkgPT4gSnNfb2Zfb2NhbWwuV29ya2VyLnNldF9vbm1lc3NhZ2Uob25fcmVxdWVzdCk7XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBXb3JrZXJTZXJ2ZXI7XG5cbmxldCBuYW1lID0gXCJ3b3JrZXIuanNcIjsgLy8gV29ya2VyIGZpbGUgbmFtZVxubGV0IHRpbWVvdXREdXJhdGlvbiA9IDIwMDAwOyAvLyBXb3JrZXIgdGltZW91dCBpbiBtc1xuXG5sZXQgaW5pdFdvcmtlciA9ICgpID0+IFdvcmtlci5jcmVhdGUobmFtZSk7XG5cbmxldCB3b3JrZXJSZWY6IHJlZihKcy50KFdvcmtlci53b3JrZXIoc3RyaW5nLCBzdHJpbmcpKSkgPVxuICByZWYoaW5pdFdvcmtlcigpKTtcblxubGV0IHRpbWVvdXRJZCA9IHJlZihOb25lKTtcblxubGV0IHJlc3RhcnRfd29ya2VyID0gKCk6IHVuaXQgPT4ge1xuICB3b3JrZXJSZWYuY29udGVudHMjI3Rlcm1pbmF0ZTtcbiAgd29ya2VyUmVmLmNvbnRlbnRzID0gaW5pdFdvcmtlcigpO1xufTtcblxubGV0IHJlcXVlc3QgPVxuICAgIChcbiAgICAgIHJlcTogUmVxdWVzdC50LFxuICAgICAgfmhhbmRsZXI6IFJlc3BvbnNlLnQgPT4gdW5pdCxcbiAgICAgIH50aW1lb3V0OiBSZXF1ZXN0LnQgPT4gdW5pdCxcbiAgICApXG4gICAgOiB1bml0ID0+IHtcbiAgbGV0IHNldHVwV29ya2VyTWVzc2FnZUhhbmRsZXIgPSB3b3JrZXIgPT4ge1xuICAgIHdvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgRG9tLmhhbmRsZXIoZXZ0ID0+IHtcbiAgICAgICAgc3dpdGNoICh0aW1lb3V0SWQuY29udGVudHMpIHtcbiAgICAgICAgfCBTb21lKGlkKSA9PiBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dChpZClcbiAgICAgICAgfCBOb25lID0+ICgpXG4gICAgICAgIH07XG4gICAgICAgIHRpbWVvdXRJZC5jb250ZW50cyA9IE5vbmU7IC8qIENsZWFyIHRpbWVvdXQgYWZ0ZXIgcmVzcG9uc2UgKi9cbiAgICAgICAgZXZ0IyMuZGF0YSB8PiBSZXNwb25zZS5kZXNlcmlhbGl6ZSB8PiBoYW5kbGVyO1xuICAgICAgICBKcy5fdHJ1ZTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIC8qIElmIHRoZXJlJ3MgYW4gb25nb2luZyByZXF1ZXN0LCB0ZXJtaW5hdGUgdGhlIHdvcmtlciBhbmQgcmVpbml0aWFsaXplICovXG4gIHN3aXRjaCAodGltZW91dElkLmNvbnRlbnRzKSB7XG4gIHwgU29tZShpZCkgPT5cbiAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dChpZCk7XG4gICAgcmVzdGFydF93b3JrZXIoKTtcbiAgfCBOb25lID0+ICgpXG4gIH07XG5cbiAgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlcih3b3JrZXJSZWYuY29udGVudHMpO1xuXG4gIC8vIHByaW50X2VuZGxpbmUoUmVxdWVzdC5zZXJpYWxpemUocmVxKSk7XG5cbiAgd29ya2VyUmVmLmNvbnRlbnRzIyNwb3N0TWVzc2FnZShSZXF1ZXN0LnNlcmlhbGl6ZShyZXEpKTtcblxuICBsZXQgb25UaW1lb3V0ID0gKCk6IHVuaXQgPT4ge1xuICAgIHJlc3RhcnRfd29ya2VyKCk7XG4gICAgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlcih3b3JrZXJSZWYuY29udGVudHMpO1xuICAgIHRpbWVvdXQocmVxKTtcbiAgfTtcblxuICB0aW1lb3V0SWQuY29udGVudHMgPVxuICAgIFNvbWUoXG4gICAgICBEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQoXG4gICAgICAgIEpzLndyYXBfY2FsbGJhY2sob25UaW1lb3V0KSxcbiAgICAgICAgZmxvYXRfb2ZfaW50KHRpbWVvdXREdXJhdGlvbiksXG4gICAgICApLFxuICAgICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IGJ1dHRvbiA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24pID0+XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsc3MoW1wiaWNvblwiXSksXG4gICAgICAgIEF0dHIub25fbW91c2Vkb3duKGFjdGlvbiksXG4gICAgICAgIEF0dHIudGl0bGUodG9vbHRpcCksXG4gICAgICBdKSxcbiAgICBbaWNvbl0sXG4gICk7XG5cbmxldCBidXR0b25fbmFtZWQgPSAofnRvb2x0aXA9XCJcIiwgaWNvbiwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcIm5hbWVkLW1lbnUtaXRlbVwiXSksIEF0dHIub25fY2xpY2soYWN0aW9uKV0pLFxuICAgIFtidXR0b24oaWNvbiwgXyA9PiBFZmZlY3QuSWdub3JlKSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuXG5sZXQgYnV0dG9uX2QgPSAofnRvb2x0aXA9XCJcIiwgaWNvbiwgYWN0aW9uLCB+ZGlzYWJsZWQ6IGJvb2wpID0+XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsc3MoW1wiaWNvblwiXSBAIChkaXNhYmxlZCA/IFtcImRpc2FibGVkXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oXyA9PiB1bmxlc3MoZGlzYWJsZWQsIGFjdGlvbikpLFxuICAgICAgXSksXG4gICAgW2ljb25dLFxuICApO1xuXG5sZXQgbGluayA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCB1cmwpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImljb25cIl0pLFxuICAgIFtcbiAgICAgIGEoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICAgIEF0dHIuW2hyZWYodXJsKSwgdGl0bGUodG9vbHRpcCksIGNyZWF0ZShcInRhcmdldFwiLCBcIl9ibGFua1wiKV0sXG4gICAgICAgICAgKSxcbiAgICAgICAgW2ljb25dLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xuXG5sZXQgdG9nZ2xlID0gKH50b29sdGlwPVwiXCIsIGxhYmVsLCBhY3RpdmUsIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJ0b2dnbGUtc3dpdGNoXCJdIEAgKGFjdGl2ZSA/IFtcImFjdGl2ZVwiXSA6IFtdKSksXG4gICAgICAgIEF0dHIub25fY2xpY2soYWN0aW9uKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgIF0pLFxuICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJ0b2dnbGUta25vYlwiXSksIFt0ZXh0KGxhYmVsKV0pXSxcbiAgKTtcblxubGV0IHRvZ2dsZV9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3RpdmUsIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJuYW1lZC1tZW51LWl0ZW1cIl0gQCAoYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhhY3Rpb24pLFxuICAgICAgXSksXG4gICAgW3RvZ2dsZShpY29uLCBhY3RpdmUsIF8gPT4gRWZmZWN0Lklnbm9yZSksIGRpdihbdGV4dCh0b29sdGlwKV0pXSxcbiAgKTtcblxubGV0IGZpbGVfc2VsZWN0X2J1dHRvbiA9ICh+dG9vbHRpcD1cIlwiLCBpZCwgaWNvbiwgb25faW5wdXQpID0+IHtcbiAgLyogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTcyNzY4L3N0eWxpbmctYW4taW5wdXQtdHlwZS1maWxlLWJ1dHRvbiAqL1xuICBsYWJlbChcbiAgICB+YXR0cj1BdHRyLmZvcl8oaWQpLFxuICAgIFtcbiAgICAgIFZkb21faW5wdXRfd2lkZ2V0cy5GaWxlX3NlbGVjdC5zaW5nbGUoXG4gICAgICAgIH5leHRyYV9hdHRycz1bQXR0ci5jbGFzc18oXCJmaWxlLXNlbGVjdC1idXR0b25cIiksIEF0dHIuaWQoaWQpXSxcbiAgICAgICAgfmFjY2VwdD1bYEV4dGVuc2lvbihcImpzb25cIildLFxuICAgICAgICB+b25faW5wdXQsXG4gICAgICAgICgpLFxuICAgICAgKSxcbiAgICAgIGRpdih+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wiaWNvblwiXSksIEF0dHIudGl0bGUodG9vbHRpcCldKSwgW2ljb25dKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpZCwgaWNvbiwgb25faW5wdXQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wibmFtZWQtbWVudS1pdGVtXCJdKV0pLFxuICAgIFtmaWxlX3NlbGVjdF9idXR0b24oaWQsIGljb24sIG9uX2lucHV0KSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuIiwiLy8gY29waWVkIGZyb20gaGF6ZWxcblxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnM7XG5cbm1vZHVsZSBKU19NQVAgPSB7XG4gIGNsYXNzIHR5cGUgdCAoJ2ssICd2KSA9IHtcbiAgICBwdWIgZ2V0OiAnayA9PiBKcy5tZXRoKEpzLm9wdGRlZigndikpO1xuICAgIHB1YiBoYXM6ICdrID0+IEpzLm1ldGgoYm9vbCk7XG4gICAgcHViIHNldDogKCdrLCAndikgPT4gSnMubWV0aCh0KCdrLCAndikpO1xuICB9O1xufTtcblxubW9kdWxlIEpzTWFwID0ge1xuICB0eXBlIHQoJ2ssICd2KSA9IEpzLnQoSlNfTUFQLnQoJ2ssICd2KSk7XG5cbiAgbGV0IG1rOiAnayAndi4gdW5pdCA9PiB0KCdrLCAndikgPVxuICAgICgpID0+IHtcbiAgICAgIGxldCBjID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NYXA7XG4gICAgICBbJWpzIG5ldyBjXTtcbiAgICB9O1xufTtcblxubW9kdWxlIEpzV2Vha01hcCA9IHtcbiAgdHlwZSB0KCdrLCAndikgPSBKcy50KEpTX01BUC50KCdrLCAndikpO1xuXG4gIGxldCBtazogJ2sgJ3YuIHVuaXQgPT4gdCgnaywgJ3YpID1cbiAgICAoKSA9PiB7XG4gICAgICBsZXQgYyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2Vha01hcDtcbiAgICAgIFslanMgbmV3IGNdO1xuICAgIH07XG59O1xuXG5sZXQgaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uX2ltcGw6IEpzLlVuc2FmZS50b3AgPT4gSnMudChib29sKSA9XG4gIC8vIEJhc2VkIG9uIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg1MTEyODEvY2hlY2staWYtYS12YWx1ZS1pcy1hbi1vYmplY3QtaW4tamF2YXNjcmlwdFxuICBKcy5VbnNhZmUucHVyZV9qc19leHByKFxuICAgIFwiXG4gIGZ1bmN0aW9uICh2YWwpIHtcbiAgICByZXR1cm4gKHZhbCA9PT0gbnVsbCkgfHwgKHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpICYmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0Jyk7XG4gIH1cIixcbiAgKTtcblxubGV0IGlzX3ByaW1pdGl2ZV9yZXByZXNlbnRhdGlvbjogJ2EuICdhID0+IGJvb2wgPVxuICB4ID0+IEpzLnRvX2Jvb2woaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uX2ltcGwoT2JqLm1hZ2ljKHgpKSk7XG5cbnR5cGUgdCgnaywgJ3YpID0ge1xuICBwcmltaXRpdmVfa2V5czogSnNNYXAudCgnaywgJ3YpLFxuICBub25fcHJpbWl0aXZlX2tleXM6IEpzV2Vha01hcC50KCdrLCAndiksXG59O1xuXG5sZXQgbWsgPSAoKTogdCgnaywgJ3YpID0+IHtcbiAge3ByaW1pdGl2ZV9rZXlzOiBKc01hcC5taygpLCBub25fcHJpbWl0aXZlX2tleXM6IEpzV2Vha01hcC5taygpfTtcbn07XG5cbmxldCBnZXQgPSAodDogdCgnaywgJ3YpLCBrOiAnayk6IG9wdGlvbigndikgPT4ge1xuICBsZXQgbWFwID1cbiAgICBpZiAoaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uKGspKSB7XG4gICAgICB0LnByaW1pdGl2ZV9rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0Lm5vbl9wcmltaXRpdmVfa2V5cztcbiAgICB9O1xuICBKcy5PcHRkZWYudG9fb3B0aW9uKG1hcCMjZ2V0KGspKTtcbn07XG5cbmxldCBzZXQgPSAodDogdCgnaywgJ3YpLCBrOiAnaywgdjogJ3YpOiB1bml0ID0+IHtcbiAgbGV0IG1hcCA9XG4gICAgaWYgKGlzX3ByaW1pdGl2ZV9yZXByZXNlbnRhdGlvbihrKSkge1xuICAgICAgdC5wcmltaXRpdmVfa2V5cztcbiAgICB9IGVsc2Uge1xuICAgICAgdC5ub25fcHJpbWl0aXZlX2tleXM7XG4gICAgfTtcbiAgaWdub3JlKG1hcCMjc2V0KGssIHYpKTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxubGV0IG1rX3NlY29uZGFyeTogc3RyaW5nID0+IFBpZWNlLnQgPVxuICBjb250ZW50ID0+IFNlY29uZGFyeSh7aWQ6IElkLm1rKCksIGNvbnRlbnQ6IFdoaXRlc3BhY2UoY29udGVudCl9KTtcblxubGV0IG1rX3RpbGU6IChGb3JtLnQsIGxpc3QobGlzdChQaWVjZS50KSkpID0+IFBpZWNlLnQgPVxuICAvL1RPRE86IGFzc2VydHNcbiAgKGZvcm0sIGNoaWxkcmVuKSA9PlxuICAgIFRpbGUoe1xuICAgICAgaWQ6IElkLm1rKCksXG4gICAgICBsYWJlbDogZm9ybS5sYWJlbCxcbiAgICAgIG1vbGQ6IGZvcm0ubW9sZCxcbiAgICAgIHNoYXJkczogTGlzdC5tYXBpKChpLCBfKSA9PiBpLCBmb3JtLmxhYmVsKSxcbiAgICAgIGNoaWxkcmVuLFxuICAgIH0pO1xuXG5sZXQgbWtfYW5jZXN0b3I6IChGb3JtLnQsIChsaXN0KFNlZ21lbnQudCksIGxpc3QoU2VnbWVudC50KSkpID0+IEFuY2VzdG9yLnQgPVxuICAvL1RPRE86IGFzc2VydHNcbiAgKGZvcm0sIChsLCBfKSBhcyBjaGlsZHJlbikgPT4ge1xuICAgIGlkOiBJZC5taygpLFxuICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgIG1vbGQ6IGZvcm0ubW9sZCxcbiAgICBzaGFyZHM6XG4gICAgICBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGZvcm0ubGFiZWwpXG4gICAgICB8PiBVdGlsLkxpc3RVdGlsLnNwbGl0X24oTGlzdC5sZW5ndGgobCkgKyAxKSxcbiAgICBjaGlsZHJlbixcbiAgfTtcblxubGV0IG1rX21vbm90aWxlID0gZm9ybSA9PiBta190aWxlKGZvcm0sIFtdKTsgLy9UT0RPOiBhc3NlcnRzXG5sZXQgaW50ID0gbiA9PiBta19tb25vdGlsZShGb3JtLm1rX2F0b21pYyhFeHAsIG4pKTtcbmxldCBleHAgPSB2ID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKEV4cCwgdikpO1xubGV0IHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoUGF0LCB2KSk7XG5sZXQgbWtfcGFyZW5zX2V4cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfZXhwXCIpKTtcbmxldCBta19mdW4gPSBta190aWxlKEZvcm0uZ2V0KFwiZnVuX1wiKSk7XG5sZXQgbWtfZnVuX2FuY2VzdG9yID0gbWtfYW5jZXN0b3IoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19wYXJlbnNfYW5jZXN0b3IgPSBta19hbmNlc3RvcihGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX2xldF9hbmNlc3RvciA9IG1rX2FuY2VzdG9yKEZvcm0uZ2V0KFwibGV0X1wiKSk7XG5sZXQgcGx1cyA9IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicGx1c1wiKSk7XG5cbmxldCBsX3NpYmxpbmc6IFNlZ21lbnQudCA9IFtwbHVzLCBHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV07XG5sZXQgcl9zaWJsaW5nOiBTZWdtZW50LnQgPSBbbWtfcGFyZW5zX2V4cChbW2ludChcIjFcIiksIHBsdXMsIGludChcIjJcIildXSldO1xuXG5sZXQgY29udGVudDogU2VnbWVudC50ID0gW2V4cChcImZvb1wiKSwgR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29uY2F2ZX0pXTtcblxubGV0IGFuY2VzdG9yczogQW5jZXN0b3JzLnQgPSBbXG4gIChta19wYXJlbnNfYW5jZXN0b3IoKFtdLCBbXSkpLCAoW21rX2Z1bihbW3BhdChcImJhclwiKV1dKV0sIFtdKSksXG4gIChta19wYXJlbnNfYW5jZXN0b3IoKFtdLCBbXSkpLCAoW21rX2Z1bihbW3BhdChcInRhelwiKV1dKV0sIFtdKSksXG4gIChta19sZXRfYW5jZXN0b3IoKFtbcGF0KFwiZm9vXCIpXV0sIFtdKSksIChbXSwgW2ludChcIjJcIildKSksXG5dO1xuXG5sZXQgYmFja3BhY2s6IEJhY2twYWNrLnQgPSBbU2VsZWN0aW9uLm1rKFtleHAoXCJmb29cIildKV07XG5cbmxldCB6aXBwZXI6IFppcHBlci50ID0ge1xuICBzZWxlY3Rpb246IFNlbGVjdGlvbi5tayhjb250ZW50KSxcbiAgYmFja3BhY2ssXG4gIHJlbGF0aXZlczoge1xuICAgIHNpYmxpbmdzOiAobF9zaWJsaW5nLCByX3NpYmxpbmcpLFxuICAgIGFuY2VzdG9ycyxcbiAgfSxcbiAgY2FyZXQ6IE91dGVyLFxufTtcblxuLy8gVE9ETyBNYWtlIHN1cmUgdXNpbmcgdGhpcyBmb3IgYWxsIHRoZSBmb3JtcyB0aGF0IHNob3VsZCwgbGlrZSB3aWxkIGFuZCBuaWxcbi8vIFRPRE8gU2hvdWxkIHRoaXMgaGF2ZSBpdHMgb3duIElEIGdlbmVyYXRvciBvciBpcyB1c2luZyB0aGUgRXhhbXBsZSBvbmUgZmluZT9cbmxldCBjb25zX2V4cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29uc19leHBcIikpO1xubGV0IGxpc3RfY29uY2F0X2V4cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibGlzdF9jb25jYXRcIikpO1xubGV0IGNvbnNfcGF0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb25zX3BhdFwiKSk7XG5sZXQgc2VxID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjZWxsLWpvaW5cIikpO1xubGV0IGV4cCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKEV4cCwgW10pKSkpO1xubGV0IHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKFBhdCwgW10pKSkpO1xubGV0IHR5cCA9IHQgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdF0sIE1vbGQuKG1rX29wKFR5cCwgW10pKSkpO1xubGV0IHRwYXQgPSB2ID0+IG1rX21vbm90aWxlKEZvcm0ubWsoRm9ybS5zcywgW3ZdLCBNb2xkLihta19vcChUUGF0LCBbXSkpKSk7XG5sZXQgdHlwX3BhdF92YXIgPSB0ID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKFRQYXQsIHQpKTtcbmxldCBta19wYXJlbnNfZXhwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX3BhcmVuc19wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwicGFyZW5zX3BhdFwiKSk7XG5sZXQgbWtfcGFyZW5zX3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfdHlwXCIpKTtcbmxldCBta19saXN0X2V4cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJsaXN0X2xpdF9leHBcIikpO1xubGV0IG1rX2xpc3RfcGF0ID0gbWtfdGlsZShGb3JtLmdldChcImxpc3RfbGl0X3BhdFwiKSk7XG5sZXQgbWtfbGlzdF90eXAgPSBta190aWxlKEZvcm0uZ2V0KFwibGlzdF90eXBcIikpO1xubGV0IG1rX2ZvcmFsbCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmb3JhbGxcIikpO1xubGV0IG1rX3JlYyA9IG1rX3RpbGUoRm9ybS5nZXQoXCJyZWNcIikpO1xubGV0IGFycm93ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBlLWFycm93XCIpKTtcbmxldCB1bmFyeV9taW51cyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwidW5hcnlfbWludXNcIikpO1xubGV0IHVuYXJ5X25vdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibm90XCIpKTtcbmxldCBwbHVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJwbHVzXCIpKTtcbmxldCBtaW51cyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibWludXNcIikpO1xubGV0IHRpbWVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0aW1lc1wiKSk7XG5sZXQgcG93ZXIgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBvd2VyXCIpKTtcbmxldCBkaXZpZGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImRpdmlkZVwiKSk7XG5sZXQgZXF1YWxzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJlcXVhbHNcIikpO1xubGV0IG5vdF9lcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcIm5vdF9lcXVhbHNcIikpO1xubGV0IGx0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsdFwiKSk7XG5sZXQgbHRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsdGVcIikpO1xubGV0IGd0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJndFwiKSk7XG5sZXQgZ3RlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJndGVcIikpO1xubGV0IGZwbHVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmcGx1c1wiKSk7XG5sZXQgZm1pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmbWludXNcIikpO1xubGV0IGZ0aW1lcyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZnRpbWVzXCIpKTtcbmxldCBmcG93ZXIgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZwb3dlclwiKSk7XG5sZXQgZmRpdmlkZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmRpdmlkZVwiKSk7XG5sZXQgZmVxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmVxdWFsc1wiKSk7XG5sZXQgZm5vdF9lcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZub3RfZXF1YWxzXCIpKTtcbmxldCBmbHQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZsdFwiKSk7XG5sZXQgZmx0ZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmx0ZVwiKSk7XG5sZXQgZmd0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZ3RcIikpO1xubGV0IGZndGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZndGVcIikpO1xubGV0IHNlcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInN0cmluZ19lcXVhbHNcIikpO1xubGV0IHNjb25jYXQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInN0cmluZ19jb25jYXRcIikpO1xubGV0IGxvZ2ljYWxfYW5kID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsb2dpY2FsX2FuZFwiKSk7XG5sZXQgbG9naWNhbF9vciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibG9naWNhbF9vclwiKSk7XG5sZXQgY29tbWFfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb21tYV9leHBcIikpO1xubGV0IGNvbW1hX3BhdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29tbWFfcGF0XCIpKTtcbmxldCBjb21tYV90eXAgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbW1hX3R5cFwiKSk7XG5sZXQgcGlwZWxpbmUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBpcGVsaW5lXCIpKTtcbmxldCBuaWwgPSAoKSA9PiBleHAoXCJbXVwiKTtcbmxldCBkZWZlcnJhbCA9ICgpID0+IGV4cChcIl9cIik7XG5sZXQgdHlwZWFubiA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwidHlwZWFublwiKSk7XG5sZXQgbWtfdHlwZnVuID0gbWtfdGlsZShGb3JtLmdldChcInR5cGZ1blwiKSk7XG5sZXQgbWtfZnVuID0gbWtfdGlsZShGb3JtLmdldChcImZ1bl9cIikpO1xubGV0IG1rX2FwX2V4cF90eXAgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfZXhwX3R5cFwiKSk7XG5sZXQgbWtfZml4ID0gbWtfdGlsZShGb3JtLmdldChcImZpeFwiKSk7XG5sZXQgbWtfYXBfZXhwID0gbWtfdGlsZShGb3JtLmdldChcImFwX2V4cFwiKSk7XG5sZXQgbWtfYXBfcGF0ID0gbWtfdGlsZShGb3JtLmdldChcImFwX3BhdFwiKSk7XG5sZXQgbWtfbGV0ID0gbWtfdGlsZShGb3JtLmdldChcImxldF9cIikpO1xubGV0IG1rX3R5YWxpYXMgPSBta190aWxlKEZvcm0uZ2V0KFwidHlwZV9hbGlhc1wiKSk7XG5sZXQgbWtfaWYgPSBta190aWxlKEZvcm0uZ2V0KFwiaWZfXCIpKTtcbmxldCBta190ZXN0ID0gbWtfdGlsZShGb3JtLmdldChcInRlc3RcIikpO1xubGV0IG1rX2Nhc2UgPSBta190aWxlKEZvcm0uZ2V0KFwiY2FzZVwiKSk7XG5sZXQgbWtfcnVsZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJydWxlXCIpKTtcbmxldCBta19oaWRlID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9oaWRlXCIpKTtcbmxldCBta19ldmFsID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9ldmFsXCIpKTtcbmxldCBta19wYXVzZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmaWx0ZXJfcGF1c2VcIikpO1xubGV0IG1rX2RlYnVnID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9kZWJ1Z1wiKSk7XG5sZXQgbWtfdW5xdW90ZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJ1bnF1b3RlXCIpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiBta19zZWNvbmRhcnkoRm9ybS5saW5lYnJlYWspO1xubGV0IHNwYWNlID0gKCkgPT4gbWtfc2Vjb25kYXJ5KEZvcm0uc3BhY2UpO1xuXG5sZXQgbWtfZXhhbXBsZSA9IHN0ciA9PiB7XG4gIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHN0cikpIHtcbiAgfCBOb25lID0+IFtdXG4gIHwgU29tZSh6KSA9PiBaaXBwZXIuemlwKHopXG4gIH07XG59O1xuXG4vKiBJbnQgcGFyYW0gYmVsb3cgc2hvdWxkIGJlIH4gd2lkdGggb2Ygc2lkZWJhciAqL1xubGV0IGFiYnJldmlhdGUgPSBVdGlsLlN0cmluZ1V0aWwuYWJicmV2aWF0ZSgyMCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbi8vIFRPRE8gTWFrZSB1bmlmaWVkIHdheSBvZiB1c2luZyBjb25zaXN0ZW50IG1ldGF2YXJpYWJsZXMgZm9yIHN5bnRhY3RpYyBmb3Jtc1xuLy8gVE9ETyBVc2UgL3RhdSBpbnN0ZWFkIG9mIHR5IHdoZW4gY2FuIGRvIHRoYXQgYW5kIHN0aWxsIGhhdmUgaGlnaGxpZ2h0aW5nIHdvcmtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsaXN0X2V4YW1wbGVzID1cbiAgfCBJbnRcbiAgfCBUdXBsZVxuICB8IENvbnMxXG4gIHwgQ29uczI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwZnVuX2V4YW1wbGVzID1cbiAgfCBCYXNpY1xuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZSAvKiBUT0RPOiBNYXliZSBubyBnb29kIGV4YW1wbGVzIHdpdGggTXVsdGlob2xlPyAqL1xuICB8IFZhcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmdW5fZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgV2lsZFxuICB8IEludExpdFxuICB8IEZsb2F0TGl0XG4gIHwgQm9vbExpdFxuICB8IFN0ckxpdFxuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IENvbnNIZFxuICB8IENvbnNTbmRcbiAgfCBWYXJJbmNyXG4gIHwgVmFyQW5kXG4gIHwgVHVwbGUyXG4gIHwgVHVwbGUzXG4gIHwgQ3RyXG4gIHwgQXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbGV0X2V4YW1wbGVzID1cbiAgfCBCYXNpY1xuICB8IFdpbGRcbiAgfCBJbnRMaXRcbiAgfCBGbG9hdExpdFxuICB8IEJvb2xMaXRcbiAgfCBTdHJMaXRcbiAgfCBUcml2XG4gIHwgTGlzdE5pbFxuICB8IExpc3RMaXRcbiAgfCBDb25zSGRcbiAgfCBDb25zU25kXG4gIHwgVmFyXG4gIHwgVHVwbGUyXG4gIHwgVHVwbGUzXG4gIHwgQ3RyXG4gIHwgQXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMgPVxuICB8IFBsdXNcbiAgfCBNaW51c1xuICB8IFRpbWVzXG4gIHwgUG93ZXJcbiAgfCBEaXZpZGVcbiAgfCBMZXNzVGhhblRydWVcbiAgfCBMZXNzVGhhbkZhbHNlXG4gIHwgTGVzc1RoYW5FcXVhbExlc3NcbiAgfCBMZXNzVGhhbkVxdWFsRXF1YWxcbiAgfCBMZXNzVGhhbkVxdWFsRmFsc2VcbiAgfCBHcmVhdGVyVGhhblRydWVcbiAgfCBHcmVhdGVyVGhhbkZhbHNlXG4gIHwgR3JlYXRlclRoYW5FcXVhbEdyZWF0ZXJcbiAgfCBHcmVhdGVyVGhhbkVxdWFsRXF1YWxcbiAgfCBHcmVhdGVyVGhhbkVxdWFsRmFsc2VcbiAgfCBFcXVhbEZhbHNlXG4gIHwgRXF1YWxUcnVlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4YW1wbGVfaWQgPVxuICB8IFJlY1R5cFxuICB8IERlZmVycmFsXG4gIHwgTGlzdChsaXN0X2V4YW1wbGVzKVxuICB8IFR5cEZ1bih0eXBmdW5fZXhhbXBsZXMpXG4gIHwgRnVuKGZ1bl9leGFtcGxlcylcbiAgfCBGaXgxXG4gIHwgRml4MlxuICB8IFR1cGxlMVxuICB8IFR1cGxlMlxuICB8IExldChsZXRfZXhhbXBsZXMpXG4gIHwgVHlwRnVuQXBcbiAgfCBGdW5BcFxuICB8IENvbkFwXG4gIHwgRGVmZXJyZWRBcFxuICB8IElmVHJ1ZVxuICB8IElmRmFsc2VcbiAgfCBTZXFCYXNpY1xuICB8IFNlcVRlc3RcbiAgfCBUZXN0VHJ1ZVxuICB8IFRlc3RGYWxzZVxuICB8IEludFVuYXJ5TWludXNcbiAgfCBJbnQobnVtZXJpY19iaW5fb3BfZXhhbXBsZXMpXG4gIHwgRmxvYXQobnVtZXJpY19iaW5fb3BfZXhhbXBsZXMpXG4gIHwgQW5kRmFsc2VcbiAgfCBBbmRUcnVlXG4gIHwgT3JGYWxzZVxuICB8IE9yVHJ1ZVxuICB8IFN0cmluZ0VxdWFsRmFsc2VcbiAgfCBTdHJpbmdFcXVhbFRydWVcbiAgfCBDYXNlV2lsZFNpbXBsZVxuICB8IENhc2VXaWxkVHVwbGVcbiAgfCBDYXNlSW50XG4gIHwgQ2FzZUJvb2xcbiAgfCBQaXBlbGluZTFcbiAgfCBGaWx0ZXJTdGVwXG4gIHwgRmlsdGVyRXZhbFxuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlclNlbGVjdG9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4YW1wbGUgPSB7XG4gIHN1Yl9pZDogZXhhbXBsZV9pZCxcbiAgdGVybTogU2VnbWVudC50LFxuICBtZXNzYWdlOiBzdHJpbmcsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdF9zdWJfZm9ybV9pZCA9XG4gIHwgQmFzZVxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFdpbGRcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmdcbiAgfCBUcml2XG4gIHwgTGlzdE5pbFxuICB8IExpc3RMaXRcbiAgfCBMaXN0Q29uc1xuICB8IFZhclxuICB8IFR1cGxlXG4gIHwgVHVwbGUyXG4gIHwgVHVwbGUzXG4gIHwgQ3RyXG4gIHwgQXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybV9pZCA9XG4gIHwgRW1wdHlIb2xlRXhwXG4gIHwgTXVsdGlIb2xlRXhwXG4gIHwgVHJpdkV4cFxuICB8IERlZmVycmFsRXhwXG4gIHwgQm9vbEV4cFxuICB8IEludEV4cFxuICB8IEZsb2F0RXhwXG4gIHwgU3RyaW5nRXhwXG4gIHwgVmFyRXhwXG4gIHwgQ3RyRXhwXG4gIHwgTGlzdEV4cFxuICB8IENvbnNFeHBcbiAgfCBMaXN0Q29uY2F0RXhwXG4gIHwgVHlwRnVuY3Rpb25FeHBcbiAgfCBGdW5jdGlvbkV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHVwbGVFeHBcbiAgfCBUdXBsZTJFeHBcbiAgfCBUdXBsZTNFeHBcbiAgfCBMZXRFeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IEZpeEV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHlwRnVuQXBFeHBcbiAgfCBGdW5BcEV4cFxuICB8IENvbkFwRXhwXG4gIHwgRGVmZXJyZWRBcEV4cFxuICB8IElmRXhwXG4gIHwgU2VxRXhwXG4gIHwgVGVzdEV4cFxuICB8IFVuT3BFeHAoT3BlcmF0b3JzLm9wX3VuKVxuICB8IEJpbk9wRXhwKE9wZXJhdG9ycy5vcF9iaW4pXG4gIHwgQ2FzZUV4cFxuICB8IFR5QWxpYXNFeHBcbiAgfCBFbXB0eUhvbGVQYXRcbiAgfCBNdWx0aUhvbGVQYXRcbiAgfCBXaWxkUGF0XG4gIHwgSW50UGF0XG4gIHwgRmxvYXRQYXRcbiAgfCBCb29sUGF0XG4gIHwgU3RyUGF0XG4gIHwgVHJpdlBhdFxuICB8IFZhclBhdFxuICB8IEN0clBhdFxuICB8IExpc3RMaXRQYXRcbiAgfCBMaXN0TmlsUGF0XG4gIHwgQ29uc1BhdFxuICB8IENvbnMyUGF0XG4gIHwgVHVwbGVQYXRcbiAgfCBUdXBsZTJQYXRcbiAgfCBUdXBsZTNQYXRcbiAgfCBBcFBhdFxuICB8IFR5cEFublBhdFxuICB8IEVtcHR5SG9sZVR5cFxuICB8IE11bHRpSG9sZVR5cFxuICB8IEludFR5cFxuICB8IEZsb2F0VHlwXG4gIHwgQm9vbFR5cFxuICB8IFN0clR5cFxuICB8IFZhclR5cFxuICB8IExpc3RUeXBcbiAgfCBGb3JhbGxUeXBcbiAgfCBSZWNUeXBcbiAgfCBBcnJvd1R5cFxuICB8IEFycm93M1R5cFxuICB8IFR1cGxlVHlwXG4gIHwgVHVwbGUwVHlwXG4gIHwgVHVwbGUyVHlwXG4gIHwgVHVwbGUzVHlwXG4gIHwgTGFiZWxsZWRTdW1UeXBcbiAgfCBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgRW1wdHlIb2xlVFBhdFxuICB8IE11bHRpSG9sZVRQYXRcbiAgfCBWYXJUUGF0XG4gIHwgUGlwZWxpbmVFeHBcbiAgfCBGaWx0ZXJQYXVzZVxuICB8IEZpbHRlckV2YWxcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJTZWxlY3RvcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtID0ge1xuICBpZDogZm9ybV9pZCxcbiAgc3ludGFjdGljX2Zvcm06IFNlZ21lbnQudCxcbiAgZXhwYW5kYWJsZV9pZDogb3B0aW9uKChJZC50LCBTZWdtZW50LnQpKSxcbiAgZXhwbGFuYXRpb246IHN0cmluZyxcbiAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZSksXG59O1xuXG4vLyBIQU5OQUggLSBUT0RPOiBOb3Qgc3VyZSB0aGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBmb3JtX2lkIC0gbWF5YmUganVzdCBvbmUgaWRcbi8vIE1BWUJFIGRvbid0IGV2ZW4gbmVlZCBhbiBpZCBhdCBhbGwgZm9yIHRoZSBncm91cCAtIGp1c3QgdXNlIHRoZSBtb3N0IHNwZWNpZmljICgxc3QpIGZvcm0gaWQgaW4gZm9ybXNcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZ3JvdXBfaWQgPVxuICB8IEVtcHR5SG9sZUV4cFxuICB8IE11bHRpSG9sZUV4cFxuICB8IFRyaXZFeHBcbiAgfCBEZWZlcnJhbEV4cFxuICB8IEJvb2xFeHBcbiAgfCBJbnRFeHBcbiAgfCBGbG9hdEV4cFxuICB8IFN0cmluZ0V4cFxuICB8IFZhckV4cFxuICB8IEN0ckV4cFxuICB8IExpc3RFeHBcbiAgfCBDb25zRXhwXG4gIHwgTGlzdENvbmNhdEV4cFxuICB8IFR5cEZ1bmN0aW9uRXhwXG4gIHwgRnVuY3Rpb25FeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IFR1cGxlRXhwXG4gIHwgVHVwbGUyRXhwXG4gIHwgVHVwbGUzRXhwXG4gIHwgTGV0RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUeXBGdW5BcEV4cFxuICB8IEZpeEV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgRnVuQXBFeHBcbiAgfCBDb25BcEV4cFxuICB8IERlZmVycmVkQXBFeHBcbiAgfCBJZkV4cFxuICB8IFNlcUV4cFxuICB8IFRlc3RFeHBcbiAgfCBVbk9wRXhwKE9wZXJhdG9ycy5vcF91bilcbiAgfCBCaW5PcEV4cChPcGVyYXRvcnMub3BfYmluKVxuICB8IENhc2VFeHBcbiAgfCBUeUFsaWFzRXhwXG4gIHwgUGlwZWxpbmVFeHBcbiAgfCBFbXB0eUhvbGVQYXRcbiAgfCBNdWx0aUhvbGVQYXRcbiAgfCBXaWxkUGF0XG4gIHwgSW50UGF0XG4gIHwgRmxvYXRQYXRcbiAgfCBCb29sUGF0XG4gIHwgU3RyUGF0XG4gIHwgVHJpdlBhdFxuICB8IFZhclBhdFxuICB8IEN0clBhdFxuICB8IExpc3RMaXRQYXRcbiAgfCBMaXN0TmlsUGF0XG4gIHwgQ29uc1BhdFxuICB8IENvbnMyUGF0XG4gIHwgVHVwbGVQYXRcbiAgfCBUdXBsZTJQYXRcbiAgfCBUdXBsZTNQYXRcbiAgfCBBcFBhdFxuICB8IFR5cEFublBhdFxuICB8IEVtcHR5SG9sZVR5cFxuICB8IE11bHRpSG9sZVR5cFxuICB8IEludFR5cFxuICB8IEZsb2F0VHlwXG4gIHwgQm9vbFR5cFxuICB8IFN0clR5cFxuICB8IFZhclR5cFxuICB8IExpc3RUeXBcbiAgfCBGb3JhbGxUeXBcbiAgfCBSZWNUeXBcbiAgfCBBcnJvd1R5cFxuICB8IEFycm93M1R5cFxuICB8IFR1cGxlVHlwXG4gIHwgVHVwbGUwVHlwXG4gIHwgVHVwbGUyVHlwXG4gIHwgVHVwbGUzVHlwXG4gIHwgTGFiZWxsZWRTdW1UeXBcbiAgfCBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmXG4gIHwgRW1wdHlIb2xlVFBhdFxuICB8IE11bHRpSG9sZVRQYXRcbiAgfCBWYXJUUGF0XG4gIHwgRmlsdGVyUGF1c2VcbiAgfCBGaWx0ZXJFdmFsXG4gIHwgRmlsdGVyRGVidWdcbiAgfCBGaWx0ZXJIaWRlXG4gIHwgRmlsdGVyU2VsZWN0b3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZ3JvdXAgPSB7XG4gIGlkOiBncm91cF9pZCxcbiAgZm9ybXM6IGxpc3QoZm9ybSkgLy8gT3JkZXJlZCAtIG1vcmUgc3BlY2lmaWMgdG8gbGVzcyBzcGVjaWZpY1xufTtcblxubW9kdWxlIFNpbXBsZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgZ3JvdXBfaWQsXG4gICAgZm9ybV9pZCxcbiAgICBhYnN0cmFjdDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSxcbiAgICBleHBsYW5hdGlvbjogc3RyaW5nLFxuICAgIGV4YW1wbGVzOiBsaXN0KGV4YW1wbGUpLFxuICB9O1xuXG4gIGxldCB0b19ncm91cCA9XG4gICAgICAoXG4gICAgICAgIHtcbiAgICAgICAgICBleHBsYW5hdGlvbixcbiAgICAgICAgICBhYnN0cmFjdDogKHN5bnRhY3RpY19mb3JtLCBjb2xvcmluZ3MpLFxuICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgIGZvcm1faWQsXG4gICAgICAgICAgZXhhbXBsZXMsXG4gICAgICAgIH06IHQsXG4gICAgICApID0+IChcbiAgICBleHBsYW5hdGlvbixcbiAgICBjb2xvcmluZ3MsXG4gICAge1xuICAgICAgaWQ6IGdyb3VwX2lkLFxuICAgICAgZm9ybXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBmb3JtX2lkLFxuICAgICAgICAgIHN5bnRhY3RpY19mb3JtLFxuICAgICAgICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgICAgICAgZXhwbGFuYXRpb246IFwiXCIsXG4gICAgICAgICAgZXhhbXBsZXMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICk7XG5cbiAgbGV0IG1rXzEgPVxuICAgICAgKChuOiBzdHJpbmcsIGlkOiBJZC50KSwgbWtfZm9ybTogUGllY2UudCA9PiBTZWdtZW50LnQpXG4gICAgICA6IChTZWdtZW50LnQsIGxpc3QoKElkLnQsIElkLnQpKSkgPT4ge1xuICAgIGxldCBwID0gRXhhbXBsZS5leHAobik7XG4gICAgKG1rX2Zvcm0ocCksIFsoUGllY2UuaWQocCksIGlkKV0pO1xuICB9O1xuXG4gIGxldCBta18yID1cbiAgICAgIChcbiAgICAgICAgKG4xOiBzdHJpbmcsIGlkXzE6IElkLnQpLFxuICAgICAgICAobjI6IHN0cmluZywgaWRfMjogSWQudCksXG4gICAgICAgIG1rX2Zvcm06IChQaWVjZS50LCBQaWVjZS50KSA9PiBTZWdtZW50LnQsXG4gICAgICApXG4gICAgICA6IChTZWdtZW50LnQsIGxpc3QoKElkLnQsIElkLnQpKSkgPT4ge1xuICAgIGxldCAocDEsIHAyKSA9IChFeGFtcGxlLmV4cChuMSksIEV4YW1wbGUuZXhwKG4yKSk7XG4gICAgKG1rX2Zvcm0ocDEsIHAyKSwgWyhQaWVjZS5pZChwMSksIGlkXzEpLCAoUGllY2UuaWQocDIpLCBpZF8yKV0pO1xuICB9O1xuXG4gIGxldCBta18zID1cbiAgICAgIChcbiAgICAgICAgKG4xOiBzdHJpbmcsIGlkXzE6IElkLnQpLFxuICAgICAgICAobjI6IHN0cmluZywgaWRfMjogSWQudCksXG4gICAgICAgIChuMzogc3RyaW5nLCBpZF8zOiBJZC50KSxcbiAgICAgICAgbWtfZm9ybTogKFBpZWNlLnQsIFBpZWNlLnQsIFBpZWNlLnQpID0+IFNlZ21lbnQudCxcbiAgICAgIClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IChwMSwgcDIsIHAzKSA9IChcbiAgICAgIEV4YW1wbGUuZXhwKG4xKSxcbiAgICAgIEV4YW1wbGUuZXhwKG4yKSxcbiAgICAgIEV4YW1wbGUuZXhwKG4zKSxcbiAgICApO1xuICAgIChcbiAgICAgIG1rX2Zvcm0ocDEsIHAyLCBwMyksXG4gICAgICBbXG4gICAgICAgIChQaWVjZS5pZChwMSksIGlkXzEpLFxuICAgICAgICAoUGllY2UuaWQocDIpLCBpZF8yKSxcbiAgICAgICAgKFBpZWNlLmlkKHAzKSwgaWRfMyksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB2YXJfdHlwX3BhdCA9IChuOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJgJXNgIGJpbmRzIGEgdHlwZSB2YXJpYWJsZS5cIjtcbiAge1xuICAgIGlkOiBWYXJUUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBhYmJyZXZpYXRlIHw+IHRwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHZhcl90eXBfcGF0cyA9IChuOiBzdHJpbmcpOiBncm91cCA9PiB7XG4gIGlkOiBWYXJUUGF0LFxuICBmb3JtczogW3Zhcl90eXBfcGF0KG4pXSxcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBjb2RlID0gKGNvZGU6IHN0cmluZykgPT4ge1xuICBOb2RlLnNwYW4ofmF0dHI9QXR0ci5jbGFzc18oXCJleGVyY2lzZS1jb2RlXCIpLCBbTm9kZS50ZXh0KGNvZGUpXSk7XG59O1xuXG5sZXQgZXF1aXYgPSBOb2RlLnNwYW4ofmF0dHI9QXR0ci5jbGFzc18oXCJlcXVpdlwiKSwgW05vZGUudGV4dChcIiDiiaEgXCIpXSk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEV4ZXJjaXNlVXRpbDtcblxubGV0IHByb21wdCA9XG4gIGRpdihbXG4gICAgcChbXG4gICAgICB0ZXh0KFxuICAgICAgICBcIldyaXRlIGEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBpbnRlZ2VyIGlzIG9kZC4gXCIsXG4gICAgICApLFxuICAgIF0pLFxuICAgIHAoW1xuICAgICAgY29kZShcIm9kZChuKVwiKSxcbiAgICAgIGVxdWl2LFxuICAgICAgY29kZShcInRydWVcIiksXG4gICAgICB0ZXh0KFwiIGlmZiBcIiksXG4gICAgICBjb2RlKFwiblwiKSxcbiAgICAgIHRleHQoXCIgaXMgb2RkLlwiKSxcbiAgICBdKSxcbiAgXSk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gTm9kZS50O1xuICBsZXQgZGVmYXVsdCA9IE5vZGUudGV4dChcIlRPRE86IHByb21wdFwiKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBtb2R1bGVfbmFtZSA9PlxuICAgIFwibGV0IHByb21wdCA9IFwiICsrIG1vZHVsZV9uYW1lICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIjtcbn07XG5cbmluY2x1ZGUgSGF6M2xzY2hvb2wuRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG4iLCJvcGVuIEhhejNsY29yZVxuXG5sZXQgcHJvbXB0ID0gRXhfT2RkbHlSZWN1cnNpdmVfcHJvbXB0LnByb21wdFxuXG5sZXQgZXhlcmNpc2UgOiBFeGVyY2lzZS5zcGVjID1cbiAge1xuICAgIHRpdGxlID0gXCJPZGRseSBSZWN1cnNpdmVcIjtcbiAgICB2ZXJzaW9uID0gMTtcbiAgICBtb2R1bGVfbmFtZSA9IFwiRXhfT2RkbHlSZWN1cnNpdmVcIjtcbiAgICBwcm9tcHQ7XG4gICAgcG9pbnRfZGlzdHJpYnV0aW9uID1cbiAgICAgIHsgdGVzdF92YWxpZGF0aW9uID0gMTsgbXV0YXRpb25fdGVzdGluZyA9IDE7IGltcGxfZ3JhZGluZyA9IDIgfTtcbiAgICBwcmVsdWRlID1cbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgYW5jZXN0b3JzID1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IChbIDA7IDEgXSwgWyAyIF0pO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgY29ycmVjdF9pbXBsID1cbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDU7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmFsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAoIFtdLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH07XG4gICAgICAgICAgICAgICAgICAgIF0gKSApO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIHlvdXJfdGVzdHMgPVxuICAgICAge1xuICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IFJpZ2h0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmFsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIHJlcXVpcmVkID0gNjtcbiAgICAgICAgcHJvdmlkZWQgPSAyO1xuICAgICAgfTtcbiAgICB5b3VyX2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBoaWRkZW5fYnVncyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGhpbnQgPSBcImFsd2F5cyByZXR1cm5zIGZhbHNlXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiYWx3YXlzIHJldHVybnMgdHJ1ZVwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgaW1wbCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jYXZlIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgYmFzZSBjYXNlXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIGhpZGRlbl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIzXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI0MlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMjdcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIGhpbnRzID0gWyBcInplcm9cIiBdO1xuICAgICAgfTtcbiAgICBzeW50YXhfdGVzdHMgPVxuICAgICAgWyAoXCJvZGQgaXMgcmVjdXJzaXZlXCIsIEhhejNsc2Nob29sLlN5bnRheFRlc3QuSXNSZWN1cnNpdmUgXCJvZGRcIikgXTtcbiAgfVxuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBFeGVyY2lzZVV0aWw7XG5cbmxldCBwcm9tcHQgPVxuICBkaXYoW1xuICAgIHAoW1xuICAgICAgZGl2KFtcbiAgICAgICAgdGV4dChcbiAgICAgICAgICBcIldyaXRlIHRlc3RzIGNhc2VzIGZvciwgYW5kIHRoZW4gaW1wbGVtZW50LCBhIGZ1bmN0aW9uLCB0aGF0IHJlY3Vyc2l2ZWx5IGRldGVybWluZXMgdGhlIG50aCBmaWJvbmFjY2kgbnVtYmVyLlwiLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gICAgcChbXG4gICAgICBjb2RlKFwiZmliKG4pXCIpLFxuICAgICAgZXF1aXYsXG4gICAgICB0ZXh0KFwidGhlIFwiKSxcbiAgICAgIGNvZGUoXCJuXCIpLFxuICAgICAgdGV4dChcInRoIGZpYm9uYWNjaSBudW1iZXIsIGFzc3VtaW5nIFwiKSxcbiAgICAgIGNvZGUoXCJuID49IDAuXCIpLFxuICAgIF0pLFxuICBdKTtcbiIsIm9wZW4gSGF6M2xjb3JlXG5cbmxldCBwcm9tcHQgPSBFeF9SZWN1cnNpdmVGaWJvbmFjY2lfcHJvbXB0LnByb21wdFxuXG5sZXQgZXhlcmNpc2UgOiBFeGVyY2lzZS5zcGVjID1cbiAge1xuICAgIHRpdGxlID0gXCJSZWN1cnNpdmUgRmlib25hY2NpXCI7XG4gICAgdmVyc2lvbiA9IDE7XG4gICAgbW9kdWxlX25hbWUgPSBcIkV4X1JlY3Vyc2l2ZUZpYm9uYWNjaVwiO1xuICAgIHByb21wdDtcbiAgICBwb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxOyBtdXRhdGlvbl90ZXN0aW5nID0gMTsgaW1wbF9ncmFkaW5nID0gMiB9O1xuICAgIHByZWx1ZGUgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPSAoWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSwgW10pO1xuICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgY29ycmVjdF9pbXBsID1cbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgXSApO1xuICAgICAgICAgICAgYW5jZXN0b3JzID1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IChbIDA7IDEgXSwgWyAyIF0pO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAoIFtdLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH07XG4gICAgICAgICAgICAgICAgICAgIF0gKSApO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIHlvdXJfdGVzdHMgPVxuICAgICAge1xuICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9IChbXSwgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIHJlcXVpcmVkID0gNTtcbiAgICAgICAgcHJvdmlkZWQgPSAwO1xuICAgICAgfTtcbiAgICB5b3VyX2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBoaWRkZW5fYnVncyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIrXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiaW5jb3JyZWN0IGJhc2UgY2FzZXNcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIrXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiaW5jb3JyZWN0IHJlY3Vyc2lvblwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBoaWRkZW5fdGVzdHMgPVxuICAgICAge1xuICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIzXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI2XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjEzXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI3XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjM0XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICB9O1xuICAgICAgICBoaW50cyA9IFtdO1xuICAgICAgfTtcbiAgICBzeW50YXhfdGVzdHMgPVxuICAgICAgWyAoXCJmaWIgaXMgcmVjdXJzaXZlXCIsIEhhejNsc2Nob29sLlN5bnRheFRlc3QuSXNSZWN1cnNpdmUgXCJmaWJcIikgXTtcbiAgfVxuIiwibGV0IGZpbGVuYW1lID0gXCJoYXozbC1kZW1vXCI7XG5sZXQgbG9nX2tleSA9IGZpbGVuYW1lO1xubGV0IGV4ZXJjaXNlczogbGlzdChFeGVyY2lzZS5zcGVjKSA9IFtcbiAgRXhfT2RkbHlSZWN1cnNpdmUuZXhlcmNpc2UsXG4gIEV4X1JlY3Vyc2l2ZUZpYm9uYWNjaS5leGVyY2lzZSxcbl07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xubW9kdWxlIFNleHAgPSBTZXhwbGliLlNleHA7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZlZWRiYWNrX29wdGlvbiA9XG4gIHwgVGh1bWJzVXBcbiAgfCBUaHVtYnNEb3duO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4YW1wbGVfbW9kZWwgPSB7XG4gIHN1Yl9pZDogZXhhbXBsZV9pZCxcbiAgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbixcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZm9ybV9tb2RlbCA9IHtcbiAgZ3JvdXA6IGdyb3VwX2lkLFxuICBmb3JtOiBmb3JtX2lkLFxuICBleHBsYW5hdGlvbl9mZWVkYmFjazogb3B0aW9uKGZlZWRiYWNrX29wdGlvbiksXG4gIGV4YW1wbGVzOiBsaXN0KGV4YW1wbGVfbW9kZWwpLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cF9tb2RlbCA9IHtcbiAgZ3JvdXA6IGdyb3VwX2lkLFxuICBzZWxlY3RlZDogZm9ybV9pZCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3BlY2lmaWNpdHlfb3BlbjogYm9vbCxcbiAgZm9ybXM6IGxpc3QoZm9ybV9tb2RlbCksXG4gIGdyb3VwczogbGlzdChncm91cF9tb2RlbCksXG59O1xuXG5tb2R1bGUgU2V0dGluZ3MgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWdobGlnaHQgPVxuICAgIHwgTm9IaWdobGlnaHRcbiAgICB8IE9uZShJZC50KVxuICAgIHwgQWxsO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHNob3c6IGJvb2wsXG4gICAgc2hvd19mZWVkYmFjazogYm9vbCxcbiAgICBoaWdobGlnaHQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZ2hsaWdodF9hY3Rpb24gPVxuICAgIHwgVG9nZ2xlXG4gICAgfCBIb3ZlcihJZC50KVxuICAgIHwgVW5zZXRIb3ZlcjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IFRvZ2dsZVNob3dcbiAgICB8IFRvZ2dsZVNob3dGZWVkYmFja1xuICAgIHwgU2V0SGlnaGxpZ2h0KGhpZ2hsaWdodF9hY3Rpb24pO1xuXG4gIGxldCBpbml0ID0ge3Nob3c6IHRydWUsIHNob3dfZmVlZGJhY2s6IGZhbHNlLCBoaWdobGlnaHQ6IE5vSGlnaGxpZ2h0fTtcbn07XG5cbmxldCBpbml0OiB0ID0ge3NwZWNpZmljaXR5X29wZW46IGZhbHNlLCBmb3JtczogW10sIGdyb3VwczogW119O1xuXG5sZXQgZ2V0X2V4cGxhbmF0aW9uX2ZlZWRiYWNrID1cbiAgICAoZ3JvdXBfaWQ6IGdyb3VwX2lkLCBmb3JtX2lkOiBmb3JtX2lkLCBtb2RlbDogdCk6IG9wdGlvbihmZWVkYmFja19vcHRpb24pID0+IHtcbiAgbGV0IGZvcm1zID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChmb3JtOiBmb3JtX21vZGVsKSA9PiBmb3JtLmdyb3VwID09IGdyb3VwX2lkICYmIGZvcm0uZm9ybSA9PSBmb3JtX2lkLFxuICAgICAgbW9kZWwuZm9ybXMsXG4gICAgKTtcbiAgc3dpdGNoIChmb3Jtcykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbZm9ybV0gPT4gZm9ybS5leHBsYW5hdGlvbl9mZWVkYmFja1xuICB8IF8gPT5cbiAgICByYWlzZShcbiAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgIFwiRWFjaCBmb3JtLCBncm91cCBwYWlyIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9mb3JtX2lkKGZvcm1faWQpKVxuICAgICAgICArKyBcIiwgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cF9pZCkpXG4gICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChmb3JtcykpXG4gICAgICAgICsrIFwiIHRpbWVzXCIsXG4gICAgICApLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBnZXRfZXhhbXBsZV9mZWVkYmFjayA9XG4gICAgKGdyb3VwX2lkOiBncm91cF9pZCwgZm9ybV9pZDogZm9ybV9pZCwgZXhhbXBsZV9pZDogZXhhbXBsZV9pZCwgbW9kZWw6IHQpXG4gICAgOiBvcHRpb24oZmVlZGJhY2tfb3B0aW9uKSA9PiB7XG4gIGxldCBmb3JtcyA9XG4gICAgTGlzdC5maWx0ZXIoXG4gICAgICAoZm9ybTogZm9ybV9tb2RlbCkgPT4gZm9ybS5ncm91cCA9PSBncm91cF9pZCAmJiBmb3JtLmZvcm0gPT0gZm9ybV9pZCxcbiAgICAgIG1vZGVsLmZvcm1zLFxuICAgICk7XG5cbiAgc3dpdGNoIChmb3Jtcykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbZm9ybV0gPT5cbiAgICBsZXQgZXhhbXBsZXMgPVxuICAgICAgTGlzdC5maWx0ZXIoXG4gICAgICAgIChleGFtcGxlOiBleGFtcGxlX21vZGVsKSA9PiBleGFtcGxlLnN1Yl9pZCA9PSBleGFtcGxlX2lkLFxuICAgICAgICBmb3JtLmV4YW1wbGVzLFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKGV4YW1wbGVzKSB7XG4gICAgfCBbXSA9PiBOb25lXG4gICAgfCBbZXhhbXBsZV0gPT4gU29tZShleGFtcGxlLmZlZWRiYWNrKVxuICAgIHwgXyA9PlxuICAgICAgcmFpc2UoXG4gICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgXCJFYWNoIGdyb3VwLCBmb3JtLCBleGFtcGxlIHRyaXBsZSBzaG91bGQgb25seSBhcHBlYXIgb25jZSwgYnV0IFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cF9pZCkpXG4gICAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9mb3JtX2lkKGZvcm1faWQpKVxuICAgICAgICAgICsrIFwiLCBcIlxuICAgICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZXhhbXBsZV9pZChleGFtcGxlX2lkKSlcbiAgICAgICAgICArKyBcIiBhcHBlYXJzIFwiXG4gICAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChleGFtcGxlcykpXG4gICAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9O1xuICB8IF8gPT5cbiAgICByYWlzZShcbiAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgIFwiRWFjaCBncm91cCwgZm9ybSBwYWlyIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cF9pZCkpXG4gICAgICAgICsrIFwiLCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChmb3JtcykpXG4gICAgICAgICsrIFwiIHRpbWVzXCIsXG4gICAgICApLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBnZXRfZm9ybV9pbl9ncm91cCA9IChmb3JtX2lkOiBmb3JtX2lkLCBncm91cDogZ3JvdXApOiBmb3JtID0+IHtcbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoXG4gICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgIFwiRm9ybSBcIlxuICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9mb3JtX2lkKGZvcm1faWQpKVxuICAgICAgKysgXCIgaXMgbm90IGluIGdyb3VwIFwiXG4gICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwLmlkKSksXG4gICAgKSxcbiAgICBMaXN0LmZpbmRfb3B0KChmb3JtOiBmb3JtKSA9PiBmb3JtLmlkID09IGZvcm1faWQsIGdyb3VwLmZvcm1zKSxcbiAgKTtcbn07XG5cbmxldCBnZXRfc2VsZWN0ZWRfb3B0aW9uID0gKGdyb3VwOiBncm91cCwgbW9kZWw6IHQpOiBmb3JtID0+IHtcbiAgbGV0IHNlbGVjdGVkID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChncm91cCc6IGdyb3VwX21vZGVsKSA9PiBncm91cCcuZ3JvdXAgPT0gZ3JvdXAuaWQsXG4gICAgICBtb2RlbC5ncm91cHMsXG4gICAgKTtcbiAgc3dpdGNoIChzZWxlY3RlZCwgZ3JvdXAuZm9ybXMpIHtcbiAgfCAoW10sIFtmb3JtLCAuLi5fZnNdKSA9PiBmb3JtXG4gIHwgKFtzZWxlY3RlZF0sIF8pID0+IGdldF9mb3JtX2luX2dyb3VwKHNlbGVjdGVkLnNlbGVjdGVkLCBncm91cClcbiAgfCAoW19mMSwgX2YyLCAuLi5fZnNdLCBfKSA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGdyb3VwIHNob3VsZCBoYXZlIG9ubHkgb25lIHNlbGVjdGlvbiwgYnV0IGdyb3VwIFwiXG4gICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZ3JvdXBfaWQoZ3JvdXAuaWQpKVxuICAgICAgICArKyBcIiBoYXMgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChzZWxlY3RlZCkpXG4gICAgICAgICsrIFwiZm9ybXMgc2VsZWN0ZWRcIixcbiAgICAgICksXG4gICAgKVxuICB8IChfLCBbXSkgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiRWFjaCBncm91cCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGZvcm1cIikpXG4gIH07XG59O1xuXG5sZXQgZ2V0X29wdGlvbnMgPSAoZ3JvdXA6IGdyb3VwKTogbGlzdCgoZm9ybV9pZCwgU2VnbWVudC50KSkgPT5cbiAgaWYgKExpc3QubGVuZ3RoKGdyb3VwLmZvcm1zKSA8IDIpIHtcbiAgICBbXTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LnJldihcbiAgICAgIExpc3QubWFwKFxuICAgICAgICAoZm9ybTogZm9ybSkgPT5cbiAgICAgICAgICAoXG4gICAgICAgICAgICBmb3JtLmlkLFxuICAgICAgICAgICAgc25kKFxuICAgICAgICAgICAgICBPcHRVdGlsLmdldF9vcl9yYWlzZShcbiAgICAgICAgICAgICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgICAgICAgICAgXCJGb3JtcyB1c2VkIGZvciBncm91cCBvcHRpb25zIG11c3Qgc3BlY2lmeSBleHBhbmRhYmxlXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmb3JtLmV4cGFuZGFibGVfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIGdyb3VwLmZvcm1zLFxuICAgICAgKSxcbiAgICApO1xuICB9O1xuXG5sZXQgZ2V0X2Zvcm1fYW5kX29wdGlvbnMgPVxuICAgIChncm91cDogZ3JvdXAsIG1vZGVsOiB0KTogKGZvcm0sIGxpc3QoKGZvcm1faWQsIFNlZ21lbnQudCkpKSA9PiB7XG4gIChnZXRfc2VsZWN0ZWRfb3B0aW9uKGdyb3VwLCBtb2RlbCksIGdldF9vcHRpb25zKGdyb3VwKSk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb2RlID1cbiAgfCBTY3JhdGNoXG4gIHwgRG9jdW1lbnRhdGlvblxuICB8IEV4ZXJjaXNlcztcblxubGV0IG1vZGVfb2Zfc3RyaW5nID0gKHM6IHN0cmluZyk6IG1vZGUgPT5cbiAgc3dpdGNoIChzKSB7XG4gIHwgXCJTY3JhdGNoXCIgPT4gU2NyYXRjaFxuICB8IFwiRG9jdW1lbnRhdGlvblwiID0+IERvY3VtZW50YXRpb25cbiAgfCBcIkV4ZXJjaXNlc1wiID0+IEV4ZXJjaXNlc1xuICB8IF8gPT4gZmFpbHdpdGgoXCJtb2RlX29mX3N0cmluZzogdW5rbm93biBtb2RlOlwiICsrIHMpXG4gIH07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY2FwdGlvbnM6IGJvb2wsXG4gIHNlY29uZGFyeV9pY29uczogYm9vbCxcbiAgY29yZTogSGF6M2xjb3JlLkNvcmVTZXR0aW5ncy50LFxuICBhc3luY19ldmFsdWF0aW9uOiBib29sLFxuICBjb250ZXh0X2luc3BlY3RvcjogYm9vbCxcbiAgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICBiZW5jaG1hcms6IGJvb2wsXG4gIGV4cGxhaW5UaGlzOiBFeHBsYWluVGhpc01vZGVsLlNldHRpbmdzLnQsXG4gIG1vZGUsXG59O1xuXG5sZXQgZml4X2luc3RydWN0b3JfbW9kZSA9IHNldHRpbmdzID0+XG4gIGlmIChzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgJiYgIUV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yKSB7XG4gICAgey4uLnNldHRpbmdzLCBpbnN0cnVjdG9yX21vZGU6IGZhbHNlfTtcbiAgfSBlbHNlIHtcbiAgICBzZXR0aW5ncztcbiAgfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXRlID0gRWRpdG9yLnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IFBlcnNpc3RlbnRaaXBwZXIudDtcblxubGV0IHNjcmF0Y2hfa2V5ID0gbiA9PiBcInNjcmF0Y2hfXCIgKysgbjtcblxubGV0IHBlcnNpc3QgPSAoZWRpdG9yOiBzdGF0ZSkgPT4ge1xuICBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoZWRpdG9yLnN0YXRlLnppcHBlcik7XG59O1xuXG5sZXQgdW5wZXJzaXN0ID0gKHppcHBlcjogcGVyc2lzdGVudF9zdGF0ZSkgPT4ge1xuICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QoemlwcGVyKTtcbiAgRWRpdG9yLmluaXQoemlwcGVyLCB+cmVhZF9vbmx5PWZhbHNlKTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoc3RhdGU6IHN0YXRlKSA9PiB7XG4gIHBlcnNpc3Qoc3RhdGUpIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBTZXhwbGliLlNleHAub2Zfc3RyaW5nKGRhdGEpIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cCB8PiB1bnBlcnNpc3Q7XG59O1xuXG5sZXQgZGVzZXJpYWxpemVfb3B0ID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICBsZXQgc2V4cCA9XG4gICAgdHJ5KFNvbWUoU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHApKSB7XG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuICBzZXhwIHw+IE9wdGlvbi5tYXAoc2V4cCA9PiBzZXhwIHw+IHVucGVyc2lzdCk7XG59O1xuXG5sZXQgZXhwb3J0ID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBzdGF0ZSB8PiBwZXJzaXN0IHw+IHlvanNvbl9vZl9wZXJzaXN0ZW50X3N0YXRlO1xufTtcblxubGV0IGltcG9ydCA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3lvanNvbiB8PiB1bnBlcnNpc3Q7XG59O1xuXG5sZXQgZXhwb3J0X2luaXQgPSAoc3RhdGU6IHN0YXRlKSA9PiB7XG4gIHN0YXRlIHw+IHBlcnNpc3QgfD4gc2hvd19wZXJzaXN0ZW50X3N0YXRlO1xufTtcblxubGV0IG1rX3N0YXRpY3MgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGVkaXRvcjogRWRpdG9yLnQsIGN0eF9pbml0OiBDdHgudClcbiAgICA6IENhY2hlZFN0YXRpY3Muc3RhdGljcyA9PiB7XG4gIGxldCB0ZXJtID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbShlZGl0b3Iuc3RhdGUuemlwcGVyKSB8PiBmc3Q7XG4gIGxldCBpbmZvX21hcCA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZXJyb3JfaWRzID1cbiAgICBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoZWRpdG9yLnN0YXRlLm1ldGEudGVybV9yYW5nZXMsIGluZm9fbWFwKTtcbiAge3Rlcm0sIGluZm9fbWFwLCBlcnJvcl9pZHN9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzY3JhdGNoID0gKFxuICBpbnQsXG4gIGxpc3QoU2NyYXRjaFNsaWRlLnBlcnNpc3RlbnRfc3RhdGUpLFxuICBsaXN0KChzdHJpbmcsIE1vZGVsUmVzdWx0LnBlcnNpc3RlbnQpKSxcbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZG9jdW1lbnRhdGlvbiA9IChcbiAgc3RyaW5nLFxuICBsaXN0KChzdHJpbmcsIFNjcmF0Y2hTbGlkZS5wZXJzaXN0ZW50X3N0YXRlKSksXG4gIFtAZGVmYXVsdCBbXV0gbGlzdCgoc3RyaW5nLCBNb2RlbFJlc3VsdC5wZXJzaXN0ZW50KSksXG4pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHNldHRpbmdzOiBTZXR0aW5ncy50LFxuICBzY3JhdGNoLFxuICBkb2N1bWVudGF0aW9uLFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbm1vZHVsZSBTZWxlY3Rpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjZWxsID1cbiAgICB8IE1haW5FZGl0b3JcbiAgICB8IFJlc3VsdChNb2RlbFJlc3VsdC5zZWxlY3Rpb24pO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IFNjcmF0Y2goY2VsbClcbiAgICB8IERvY3VtZW50YXRpb24oY2VsbClcbiAgICB8IEV4ZXJjaXNlcyhFeGVyY2lzZS5wb3MsIGNlbGwpO1xufTtcblxubW9kdWxlIEFjdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGNlbGwgPVxuICAgIHwgTWFpbkVkaXRvcihBY3Rpb24udClcbiAgICB8IFJlc3VsdChNb2RlbFJlc3VsdC5hY3Rpb24pO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IFNjcmF0Y2goY2VsbClcbiAgICB8IERvY3VtZW50YXRpb24oY2VsbClcbiAgICB8IEV4ZXJjaXNlcyhFeGVyY2lzZS5wb3MsIGNlbGwpO1xuXG4gIG1vZHVsZSBGYWlsdXJlID0gQWN0aW9uLkZhaWx1cmU7XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFNjcmF0Y2goaW50LCBsaXN0KFNjcmF0Y2hTbGlkZS5zdGF0ZSkpXG4gIHwgRG9jdW1lbnRhdGlvbihzdHJpbmcsIGxpc3QoKHN0cmluZywgU2NyYXRjaFNsaWRlLnN0YXRlKSkpXG4gIHwgRXhlcmNpc2VzKGludCwgbGlzdChFeGVyY2lzZS5zcGVjKSwgRXhlcmNpc2Uuc3RhdGUpO1xuXG5sZXQgdXBkYXRlX3NjcmF0Y2hfc3RhdGUgPVxuICAgIChmOiBTY3JhdGNoU2xpZGUuc3RhdGUgPT4gU2NyYXRjaFNsaWRlLnN0YXRlLCBlZGl0b3JzOiB0KTogdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKG4sIHNsaWRlcykgPT4gU2NyYXRjaChuLCBMaXN0VXRpbC5tYXBfbnRoKG4sIGYsIHNsaWRlcykpXG4gIHwgRG9jdW1lbnRhdGlvbihzdHIsIHNsaWRlcykgPT5cbiAgICBEb2N1bWVudGF0aW9uKFxuICAgICAgc3RyLFxuICAgICAgTGlzdFV0aWwudXBkYXRlX2Fzc29jKChzdHIsIGYoTGlzdC5hc3NvYyhzdHIsIHNsaWRlcykpKSwgc2xpZGVzKSxcbiAgICApXG4gIC8vIFRPRE9bTWF0dF06IHVwZGF0ZSBleGVyY2lzZXNcbiAgfCBFeGVyY2lzZXMoXykgPT4gZWRpdG9yc1xuICB9O1xuXG5sZXQgZ2V0X2N0eF9pbml0ID0gKH5zZXR0aW5ncyBhcyBfOiBTZXR0aW5ncy50LCBlZGl0b3JzOiB0KTogQ3R4LnQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IEV4ZXJjaXNlcyhfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gQnVpbHRpbnMuY3R4X2luaXRcbiAgfTtcblxubGV0IGdldF9lbnZfaW5pdCA9ICh+c2V0dGluZ3MgYXMgXzogU2V0dGluZ3MudCwgZWRpdG9yczogdCk6IEVudmlyb25tZW50LnQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IEV4ZXJjaXNlcyhfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gQnVpbHRpbnMuZW52X2luaXRcbiAgfTtcblxubGV0IG1rX3N0YXRpY3MgPSAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBlZGl0b3JzOiB0KTogQ2FjaGVkU3RhdGljcy50ID0+IHtcbiAgbGV0IGN0eF9pbml0ID0gZ2V0X2N0eF9pbml0KH5zZXR0aW5ncywgZWRpdG9ycyk7XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IENhY2hlZFN0YXRpY3MubWsoW10pXG4gIHwgU2NyYXRjaChpZHgsIHNsaWRlcykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KHN0cmluZ19vZl9pbnQoaWR4KSk7XG4gICAgbGV0IGVkaXRvciA9IExpc3QubnRoKHNsaWRlcywgaWR4KTtcbiAgICBbKGtleSwgU2NyYXRjaFNsaWRlLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3IsIGN0eF9pbml0KSldXG4gICAgfD4gQ2FjaGVkU3RhdGljcy5taztcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgIGxldCBlZGl0b3IgPSBMaXN0LmFzc29jKG5hbWUsIHNsaWRlcyk7XG4gICAgWyhrZXksIFNjcmF0Y2hTbGlkZS5ta19zdGF0aWNzKH5zZXR0aW5ncywgZWRpdG9yLCBjdHhfaW5pdCkpXVxuICAgIHw+IENhY2hlZFN0YXRpY3MubWs7XG4gIHwgRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSA9PlxuICAgIEV4ZXJjaXNlLm1rX3N0YXRpY3Moc2V0dGluZ3MuY29yZSwgZXhlcmNpc2UpIHw+IENhY2hlZFN0YXRpY3MubWtcbiAgfTtcbn07XG5cbmxldCBsb29rdXBfc3RhdGljcyA9XG4gICAgKH5zZXR0aW5nczogU2V0dGluZ3MudCwgfnNlbGVjdGlvbjogU2VsZWN0aW9uLnQsIH5zdGF0aWNzLCBlZGl0b3JzOiB0KVxuICAgIDogQ2FjaGVkU3RhdGljcy5zdGF0aWNzID0+XG4gIHN3aXRjaCAoZWRpdG9ycywgc2VsZWN0aW9uKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT4gQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzXG4gIHwgKFNjcmF0Y2goaWR4LCBfKSwgU2NyYXRjaChfKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KHN0cmluZ19vZl9pbnQoaWR4KSk7XG4gICAgQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywga2V5KTtcbiAgfCAoRG9jdW1lbnRhdGlvbihuYW1lLCBfKSwgRG9jdW1lbnRhdGlvbihfKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgIENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIGtleSk7XG4gIHwgKEV4ZXJjaXNlcyhfKSwgRXhlcmNpc2VzKHBvcywgXykpID0+XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9mb3Jfc3RhdGljcyhwb3MpO1xuICAgIENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIGtleSk7XG4gIHwgKEV4ZXJjaXNlcyhfKSwgXylcbiAgfCAoRG9jdW1lbnRhdGlvbihfKSwgXylcbiAgfCAoU2NyYXRjaChfKSwgXykgPT4gQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzXG4gIH07XG5cbi8qIEVhY2ggbW9kZSAoZS5nLiBTY3JhdGNoLCBTY2hvb2wpIHJlcXVpcmVzXG4gICBlbGFib3JhdGluZyBvbiBzb21lIG51bWJlciBvZiBleHByZXNzaW9uc1xuICAgdGhhdCBhcmUgc3BsaWNlZCB0b2dldGhlciBmcm9tIHRoZSBlZGl0b3JzXG4gICBpbiB0aGUgbW9kZS4gRWFjaCBlbGFib3JhdGVkIGV4cHJlc3Npb25cbiAgIGlzIGdpdmVuIGEga2V5IGZvciBsYXRlciBsb29rdXAgYnkgdGhlIG1vZGUuXG5cbiAgIFVzZWQgaW4gdGhlIFVwZGF0ZSBtb2R1bGUgKi9cbmxldCBnZXRfc3BsaWNlZF9lbGFicyA9XG4gICAgKH5zZXR0aW5nczogU2V0dGluZ3MudCwgc3RhdGljcywgZWRpdG9yczogdClcbiAgICA6IGxpc3QoKE1vZGVsUmVzdWx0cy5rZXksIEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCkpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goaWR4LCBfKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoaWR4IHw+IHN0cmluZ19vZl9pbnQpO1xuICAgIGxldCBDYWNoZWRTdGF0aWNzLnt0ZXJtLCBpbmZvX21hcCwgX30gPVxuICAgICAgbG9va3VwX3N0YXRpY3MoXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfnNlbGVjdGlvbj1TY3JhdGNoKE1haW5FZGl0b3IpLFxuICAgICAgICB+c3RhdGljcyxcbiAgICAgICAgZWRpdG9ycyxcbiAgICAgICk7XG4gICAgbGV0IGQgPSBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCBpbmZvX21hcCwgdGVybSk7XG4gICAgWyhrZXksIHtkOiBkfSldO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG5hbWUpO1xuICAgIGxldCBDYWNoZWRTdGF0aWNzLnt0ZXJtLCBpbmZvX21hcCwgX30gPVxuICAgICAgbG9va3VwX3N0YXRpY3MoXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfnNlbGVjdGlvbj1Eb2N1bWVudGF0aW9uKE1haW5FZGl0b3IpLFxuICAgICAgICB+c3RhdGljcyxcbiAgICAgICAgZWRpdG9ycyxcbiAgICAgICk7XG4gICAgbGV0IGQgPSBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCBpbmZvX21hcCwgdGVybSk7XG4gICAgWyhrZXksIHtkOiBkfSldO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZS5zcGxpY2VkX2VsYWJzKHNldHRpbmdzLmNvcmUsIGV4ZXJjaXNlKVxuICB9O1xuXG5sZXQgc2V0X2luc3RydWN0b3JfbW9kZSA9IChlZGl0b3JzOiB0LCBpbnN0cnVjdG9yX21vZGU6IGJvb2wpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IGVkaXRvcnNcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSA9PlxuICAgIEV4ZXJjaXNlcyhcbiAgICAgIG4sXG4gICAgICBzcGVjcyxcbiAgICAgIEV4ZXJjaXNlLnNldF9pbnN0cnVjdG9yX21vZGUoZXhlcmNpc2UsIGluc3RydWN0b3JfbW9kZSksXG4gICAgKVxuICB9O1xuXG5sZXQgcmVzZXRfbnRoX3NsaWRlID0gKG4sIHNsaWRlcykgPT4ge1xuICBsZXQgKF8sIGluaXRfZWRpdG9ycywgXykgPSBJbml0LnN0YXJ0dXAuc2NyYXRjaDtcbiAgbGV0IGRhdGEgPSBMaXN0Lm50aChpbml0X2VkaXRvcnMsIG4pO1xuICBsZXQgaW5pdF9udGggPSBTY3JhdGNoU2xpZGUudW5wZXJzaXN0KGRhdGEpO1xuICBVdGlsLkxpc3RVdGlsLnB1dF9udGgobiwgaW5pdF9udGgsIHNsaWRlcyk7XG59O1xuXG5sZXQgcmVzZXRfbmFtZWRfc2xpZGUgPSAobmFtZSwgc2xpZGVzKSA9PiB7XG4gIGxldCAoXywgaW5pdF9lZGl0b3JzLCBfKSA9IEluaXQuc3RhcnR1cC5kb2N1bWVudGF0aW9uO1xuICBsZXQgZGF0YSA9IExpc3QuYXNzb2MobmFtZSwgaW5pdF9lZGl0b3JzKTtcbiAgbGV0IGluaXRfbmFtZSA9IFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG4gIHNsaWRlcyB8PiBMaXN0LnJlbW92ZV9hc3NvYyhuYW1lKSB8PiBMaXN0LmNvbnMoKG5hbWUsIGluaXRfbmFtZSkpO1xufTtcblxubGV0IHJlc2V0X2N1cnJlbnQgPSAoZWRpdG9yczogdCwgfmluc3RydWN0b3JfbW9kZTogYm9vbCk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+IFNjcmF0Y2gobiwgcmVzZXRfbnRoX3NsaWRlKG4sIHNsaWRlcykpXG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgRG9jdW1lbnRhdGlvbihuYW1lLCByZXNldF9uYW1lZF9zbGlkZShuYW1lLCBzbGlkZXMpKVxuICB8IEV4ZXJjaXNlcyhuLCBzcGVjcywgXykgPT5cbiAgICBFeGVyY2lzZXMoXG4gICAgICBuLFxuICAgICAgc3BlY3MsXG4gICAgICBMaXN0Lm50aChzcGVjcywgbikgfD4gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyh+aW5zdHJ1Y3Rvcl9tb2RlKSxcbiAgICApXG4gIH07XG5cbmxldCBpbXBvcnRfY3VycmVudCA9IChlZGl0b3JzOiB0LCBkYXRhOiBvcHRpb24oc3RyaW5nKSk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgfCBTY3JhdGNoKGlkeCwgc2xpZGVzKSA9PlxuICAgIHN3aXRjaCAoZGF0YSkge1xuICAgIHwgTm9uZSA9PiBlZGl0b3JzXG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICBsZXQgc3RhdGUgPSBTY3JhdGNoU2xpZGUuaW1wb3J0KGRhdGEpO1xuICAgICAgbGV0IHNsaWRlcyA9IFV0aWwuTGlzdFV0aWwucHV0X250aChpZHgsIHN0YXRlLCBzbGlkZXMpO1xuICAgICAgU2NyYXRjaChpZHgsIHNsaWRlcyk7XG4gICAgfVxuICB9O1xuXG5sZXQgc3dpdGNoX2V4YW1wbGVfc2xpZGUgPSAoZWRpdG9yczogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBFeGVyY2lzZXMoXykgPT4gTm9uZVxuICB8IERvY3VtZW50YXRpb24oY3VyLCBzbGlkZXMpXG4gICAgICB3aGVuICFMaXN0Lm1lbV9hc3NvYyhuYW1lLCBzbGlkZXMpIHx8IGN1ciA9PSBuYW1lID0+XG4gICAgTm9uZVxuICB8IERvY3VtZW50YXRpb24oXywgc2xpZGVzKSA9PiBTb21lKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSlcbiAgfTtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPVxuICAgICh+c2VsZWN0aW9uOiBTZWxlY3Rpb24udCwgZWRpdG9yczogdCwgbW9kZWxfcmVzdWx0czogTW9kZWxSZXN1bHRzLnQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycywgc2VsZWN0aW9uKSB7XG4gIHwgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgRG9jdW1lbnRhdGlvbihNYWluRWRpdG9yKSkgPT5cbiAgICBMaXN0LmFzc29jX29wdChuYW1lLCBzbGlkZXMpXG4gIHwgKERvY3VtZW50YXRpb24obiwgXyksIERvY3VtZW50YXRpb24oUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobik7XG4gICAgbGV0KiByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIGtleSk7XG4gICAgTW9kZWxSZXN1bHQuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQpO1xuICB8IChEb2N1bWVudGF0aW9uKF8pLCBfKSA9PiBOb25lXG4gIHwgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCBTY3JhdGNoKE1haW5FZGl0b3IpKSA9PlxuICAgIExpc3QubnRoX29wdChzbGlkZXMsIGlkeClcbiAgfCAoU2NyYXRjaChuLCBfKSwgU2NyYXRjaChSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KG4pKTtcbiAgICBsZXQqIHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywga2V5KTtcbiAgICBNb2RlbFJlc3VsdC5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCk7XG4gIHwgKFNjcmF0Y2goXyksIF8pID0+IE5vbmVcbiAgfCAoRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSwgRXhlcmNpc2VzKHNlbGVjdGlvbiwgTWFpbkVkaXRvcikpID0+XG4gICAgU29tZShFeGVyY2lzZS5tYWluX2VkaXRvcl9vZl9zdGF0ZSh+c2VsZWN0aW9uLCBleGVyY2lzZSkpXG4gIHwgKEV4ZXJjaXNlcyhfKSwgRXhlcmNpc2VzKHBvcywgUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCogcmVzdWx0ID1cbiAgICAgIE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywgRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKHBvcykpO1xuICAgIE1vZGVsUmVzdWx0LmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0KTtcbiAgfCAoRXhlcmNpc2VzKF8pLCBfKSA9PiBOb25lXG4gIH07XG5cbmxldCBwdXRfc2VsZWN0ZWRfZWRpdG9yID1cbiAgICAoXG4gICAgICB+c2VsZWN0aW9uOiBTZWxlY3Rpb24udCxcbiAgICAgIGVkaXRvcnM6IHQsXG4gICAgICBtb2RlbF9yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICAgIGVkaXRvcjogRWRpdG9yLnQsXG4gICAgKVxuICAgIDogKHQsIE1vZGVsUmVzdWx0cy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMsIHNlbGVjdGlvbikge1xuICB8IChEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcyksIERvY3VtZW50YXRpb24oTWFpbkVkaXRvcikpID0+XG4gICAgbGV0IHNsaWRlcyA9IExpc3RVdGlsLnVwZGF0ZV9hc3NvYygobmFtZSwgZWRpdG9yKSwgc2xpZGVzKTtcbiAgICAoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpLCBtb2RlbF9yZXN1bHRzKTtcbiAgfCAoRG9jdW1lbnRhdGlvbihuLCBfKSwgRG9jdW1lbnRhdGlvbihSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuKTtcbiAgICBsZXQgcmVzdWx0cyA9IHtcbiAgICAgIGxldCsgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIE1vZGVsUmVzdWx0LnB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0LCBlZGl0b3IpO1xuICAgICAgTW9kZWxSZXN1bHRzLnB1dF9yZXN1bHQoa2V5LCByZXN1bHQsIG1vZGVsX3Jlc3VsdHMpO1xuICAgIH07XG4gICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgfCBTb21lKHJlc3VsdHMpID0+IChlZGl0b3JzLCByZXN1bHRzKVxuICAgIHwgTm9uZSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgICB9O1xuICB8IChEb2N1bWVudGF0aW9uKF8pLCBfKSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgfCAoU2NyYXRjaChpZHgsIHNsaWRlcyksIFNjcmF0Y2goTWFpbkVkaXRvcikpID0+XG4gICAgbGV0IHNsaWRlcyA9IExpc3RVdGlsLm1hcF9udGgoaWR4LCBfID0+IGVkaXRvciwgc2xpZGVzKTtcbiAgICAoU2NyYXRjaChpZHgsIHNsaWRlcyksIG1vZGVsX3Jlc3VsdHMpO1xuICB8IChTY3JhdGNoKG4sIF8pLCBTY3JhdGNoKFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KHN0cmluZ19vZl9pbnQobikpO1xuICAgIGxldCByZXN1bHRzID0ge1xuICAgICAgbGV0KyByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIGtleSk7XG4gICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgTW9kZWxSZXN1bHQucHV0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQsIGVkaXRvcik7XG4gICAgICBNb2RlbFJlc3VsdHMucHV0X3Jlc3VsdChrZXksIHJlc3VsdCwgbW9kZWxfcmVzdWx0cyk7XG4gICAgfTtcbiAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICB8IFNvbWUocmVzdWx0cykgPT4gKGVkaXRvcnMsIHJlc3VsdHMpXG4gICAgfCBOb25lID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICAgIH07XG4gIHwgKFNjcmF0Y2goXyksIF8pID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICB8IChFeGVyY2lzZXMobiwgc3BlYywgZXhlcmNpc2UpLCBFeGVyY2lzZXMocG9zLCBNYWluRWRpdG9yKSkgPT5cbiAgICBsZXQgZXhlcmNpc2UgPSBFeGVyY2lzZS5wdXRfbWFpbl9lZGl0b3IofnNlbGVjdGlvbj1wb3MsIGV4ZXJjaXNlLCBlZGl0b3IpO1xuICAgIChFeGVyY2lzZXMobiwgc3BlYywgZXhlcmNpc2UpLCBtb2RlbF9yZXN1bHRzKTtcbiAgfCAoRXhlcmNpc2VzKF8pLCBFeGVyY2lzZXMocG9zLCBSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9mb3Jfc3RhdGljcyhwb3MpO1xuICAgIGxldCByZXN1bHRzID0ge1xuICAgICAgbGV0KyByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIGtleSk7XG4gICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgTW9kZWxSZXN1bHQucHV0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQsIGVkaXRvcik7XG4gICAgICBNb2RlbFJlc3VsdHMucHV0X3Jlc3VsdChrZXksIHJlc3VsdCwgbW9kZWxfcmVzdWx0cyk7XG4gICAgfTtcbiAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICB8IFNvbWUocmVzdWx0cykgPT4gKGVkaXRvcnMsIHJlc3VsdHMpXG4gICAgfCBOb25lID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICAgIH07XG4gIHwgKEV4ZXJjaXNlcyhfKSwgXykgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gIH07XG5cbmxldCB1cGRhdGVfc2VsZWN0ZWRfZWRpdG9yID1cbiAgICAoXG4gICAgICB+c2VsZWN0aW9uOiBvcHRpb24oU2VsZWN0aW9uLnQpLFxuICAgICAgZjogRWRpdG9yLnQgPT4gUmVzdWx0LnQoRWRpdG9yLnQsIEFjdGlvbi5GYWlsdXJlLnQpLFxuICAgICAgZWRpdG9yczogdCxcbiAgICAgIHJlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICAgIClcbiAgICA6IFJlc3VsdC50KCh0LCBNb2RlbFJlc3VsdHMudCksIEFjdGlvbi5GYWlsdXJlLnQpID0+IHtcbiAgc3dpdGNoIChzZWxlY3Rpb24pIHtcbiAgfCBOb25lID0+IE9rKChlZGl0b3JzLCByZXN1bHRzKSlcbiAgfCBTb21lKHNlbGVjdGlvbikgPT5cbiAgICBzd2l0Y2ggKGdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgZWRpdG9ycywgcmVzdWx0cykpIHtcbiAgICB8IE5vbmUgPT4gT2soKGVkaXRvcnMsIHJlc3VsdHMpKVxuICAgIHwgU29tZShlZGl0b3IpID0+XG4gICAgICBzd2l0Y2ggKGYoZWRpdG9yKSkge1xuICAgICAgfCBPayhlZGl0b3IpID0+XG4gICAgICAgIGxldCAoZWRpdG9ycywgcmVzdWx0cykgPVxuICAgICAgICAgIHB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgZWRpdG9ycywgcmVzdWx0cywgZWRpdG9yKTtcbiAgICAgICAgT2soKGVkaXRvcnMsIHJlc3VsdHMpKTtcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoZSlcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5sZXQgZ2V0X2N1cnNvcl9pbmZvID1cbiAgICAoXG4gICAgICB+c2VsZWN0aW9uOiBvcHRpb24oU2VsZWN0aW9uLnQpLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgZWRpdG9yczogdCxcbiAgICAgIG1vZGVsX3Jlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICAgICAgc3RhdGljczogQ2FjaGVkU3RhdGljcy50LFxuICAgICkgPT4ge1xuICBsZXQqIHNlbGVjdGlvbiA9IHNlbGVjdGlvbjtcbiAgbGV0IHN0YXRpY3MgPSBsb29rdXBfc3RhdGljcyh+c2V0dGluZ3MsIH5zZWxlY3Rpb24sIH5zdGF0aWNzLCBlZGl0b3JzKTtcbiAgbGV0KiBlZGl0b3IgPSBnZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpO1xuICBJbmRpY2F0ZWQuY2lfb2YoZWRpdG9yLnN0YXRlLnppcHBlciwgc3RhdGljcy5pbmZvX21hcCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeHBsYWluVGhpc01vZGVsO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHVwZGF0ZSA9XG4gIHwgU3BlY2lmaWNpdHlPcGVuKGJvb2wpXG4gIHwgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZmVlZGJhY2tfb3B0aW9uKVxuICB8IFRvZ2dsZUV4YW1wbGVGZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZXhhbXBsZV9pZCwgZmVlZGJhY2tfb3B0aW9uKVxuICB8IFVwZGF0ZUdyb3VwU2VsZWN0aW9uKGdyb3VwX2lkLCBmb3JtX2lkKTtcblxubGV0IHNldF91cGRhdGUgPVxuICAgIChleHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsIHU6IHVwZGF0ZSk6IEV4cGxhaW5UaGlzTW9kZWwudCA9PiB7XG4gIHN3aXRjaCAodSkge1xuICB8IFNwZWNpZmljaXR5T3BlbihiKSA9PiB7Li4uZXhwbGFpblRoaXNNb2RlbCwgc3BlY2lmaWNpdHlfb3BlbjogYn1cbiAgfCBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBmZWVkYmFja19vcHRpb24pID0+XG4gICAgbGV0IChwcmUsIGZvcm0sIHBvc3QpID1cbiAgICAgIExpc3RVdGlsLnNwbGl0KGV4cGxhaW5UaGlzTW9kZWwuZm9ybXMsIGYgPT5cbiAgICAgICAgZi5mb3JtID09IGZvcm1faWQgJiYgZi5ncm91cCA9PSBncm91cF9pZFxuICAgICAgKTtcbiAgICBsZXQgZm9ybSA9XG4gICAgICBzd2l0Y2ggKGZvcm0pIHtcbiAgICAgIHwgU29tZShmb3JtKSA9PlxuICAgICAgICBsZXQgZmVlZGJhY2sgPVxuICAgICAgICAgIHN3aXRjaCAoZm9ybS5leHBsYW5hdGlvbl9mZWVkYmFjaywgZmVlZGJhY2tfb3B0aW9uKSB7XG4gICAgICAgICAgfCAoU29tZShUaHVtYnNVcCksIFRodW1ic0Rvd24pXG4gICAgICAgICAgfCAoU29tZShUaHVtYnNEb3duKSwgVGh1bWJzVXApXG4gICAgICAgICAgfCAoTm9uZSwgXykgPT4gU29tZShmZWVkYmFja19vcHRpb24pXG4gICAgICAgICAgfCAoU29tZShUaHVtYnNVcCksIFRodW1ic1VwKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzRG93biksIFRodW1ic0Rvd24pID0+IE5vbmVcbiAgICAgICAgICB9O1xuICAgICAgICB7Li4uZm9ybSwgZXhwbGFuYXRpb25fZmVlZGJhY2s6IGZlZWRiYWNrfTtcbiAgICAgIHwgTm9uZSA9PiB7XG4gICAgICAgICAgZ3JvdXA6IGdyb3VwX2lkLFxuICAgICAgICAgIGZvcm06IGZvcm1faWQsXG4gICAgICAgICAgZXhwbGFuYXRpb25fZmVlZGJhY2s6IFNvbWUoZmVlZGJhY2tfb3B0aW9uKSxcbiAgICAgICAgICBleGFtcGxlczogW10sXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgey4uLmV4cGxhaW5UaGlzTW9kZWwsIGZvcm1zOiBwcmUgQCBbZm9ybV0gQCBwb3N0fTtcbiAgfCBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIGZlZWRiYWNrX29wdGlvbikgPT5cbiAgICBsZXQgKHByZV9mb3JtLCBmb3JtLCBwb3N0X2Zvcm0pID1cbiAgICAgIExpc3RVdGlsLnNwbGl0KGV4cGxhaW5UaGlzTW9kZWwuZm9ybXMsIGYgPT5cbiAgICAgICAgZi5mb3JtID09IGZvcm1faWQgJiYgZi5ncm91cCA9PSBncm91cF9pZFxuICAgICAgKTtcbiAgICBsZXQgZm9ybTogZm9ybV9tb2RlbCA9XG4gICAgICBzd2l0Y2ggKGZvcm0pIHtcbiAgICAgIHwgU29tZShmb3JtKSA9PlxuICAgICAgICBsZXQgKHByZV9leGFtcGxlLCBleGFtcGxlLCBwb3N0X2V4YW1wbGUpID1cbiAgICAgICAgICBMaXN0VXRpbC5zcGxpdChmb3JtLmV4YW1wbGVzLCBlID0+IGUuc3ViX2lkID09IGV4YW1wbGVfaWQpO1xuICAgICAgICBsZXQgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZV9tb2RlbCkgPVxuICAgICAgICAgIHN3aXRjaCAoZXhhbXBsZSkge1xuICAgICAgICAgIHwgU29tZShleGFtcGxlKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChleGFtcGxlLmZlZWRiYWNrLCBmZWVkYmFja19vcHRpb24pIHtcbiAgICAgICAgICAgIHwgKFRodW1ic1VwLCBUaHVtYnNEb3duKVxuICAgICAgICAgICAgfCAoVGh1bWJzRG93biwgVGh1bWJzVXApID0+XG4gICAgICAgICAgICAgIHByZV9leGFtcGxlXG4gICAgICAgICAgICAgIEAgW3suLi5leGFtcGxlLCBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9ufV1cbiAgICAgICAgICAgICAgQCBwb3N0X2V4YW1wbGVcbiAgICAgICAgICAgIHwgKFRodW1ic1VwLCBUaHVtYnNVcClcbiAgICAgICAgICAgIHwgKFRodW1ic0Rvd24sIFRodW1ic0Rvd24pID0+IHByZV9leGFtcGxlIEAgcG9zdF9leGFtcGxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICBwcmVfZXhhbXBsZVxuICAgICAgICAgICAgQCBbe3N1Yl9pZDogZXhhbXBsZV9pZCwgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbn1dXG4gICAgICAgICAgICBAIHBvc3RfZXhhbXBsZVxuICAgICAgICAgIH07XG4gICAgICAgIHsuLi5mb3JtLCBleGFtcGxlc307XG4gICAgICB8IE5vbmUgPT4ge1xuICAgICAgICAgIGdyb3VwOiBncm91cF9pZCxcbiAgICAgICAgICBmb3JtOiBmb3JtX2lkLFxuICAgICAgICAgIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBOb25lLFxuICAgICAgICAgIGV4YW1wbGVzOiBbe3N1Yl9pZDogZXhhbXBsZV9pZCwgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbn1dLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIHsuLi5leHBsYWluVGhpc01vZGVsLCBmb3JtczogcHJlX2Zvcm0gQCBbZm9ybV0gQCBwb3N0X2Zvcm19O1xuICB8IFVwZGF0ZUdyb3VwU2VsZWN0aW9uKGdyb3VwX2lkLCBmb3JtX2lkKSA9PlxuICAgIGxldCAocHJlX2dyb3VwLCBfZ3JvdXAsIHBvc3RfZ3JvdXApID1cbiAgICAgIExpc3RVdGlsLnNwbGl0KGV4cGxhaW5UaGlzTW9kZWwuZ3JvdXBzLCBnID0+IGcuZ3JvdXAgPT0gZ3JvdXBfaWQpO1xuICAgIHtcbiAgICAgIC4uLmV4cGxhaW5UaGlzTW9kZWwsXG4gICAgICBncm91cHM6XG4gICAgICAgIHByZV9ncm91cCBAIFt7Z3JvdXA6IGdyb3VwX2lkLCBzZWxlY3RlZDogZm9ybV9pZH1dIEAgcG9zdF9ncm91cCxcbiAgICB9O1xuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAd2FybmluZyBcIi0zM1wiXVxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICByb3dfaGVpZ2h0OiBmbG9hdCxcbiAgY29sX3dpZHRoOiBmbG9hdCxcbn07XG5cbmxldCBpbml0ID0ge3Jvd19oZWlnaHQ6IDEwLiwgY29sX3dpZHRoOiAxMC59O1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IGdldF9lbGVtX2J5X2lkID0gaWQgPT4ge1xuICBsZXQgZG9jID0gRG9tX2h0bWwuZG9jdW1lbnQ7XG4gIEpzLk9wdC5nZXQoXG4gICAgZG9jIyNnZXRFbGVtZW50QnlJZChKcy5zdHJpbmcoaWQpKSxcbiAgICAoKSA9PiB7XG4gICAgICBwcmludF9lbmRsaW5lKGlkKTtcbiAgICAgIGFzc2VydChmYWxzZSk7XG4gICAgfSxcbiAgKTtcbn07XG5cbmxldCBnZXRfY2hpbGRfd2l0aF9jbGFzcyA9IChlbGVtZW50OiBKcy50KERvbV9odG1sLmVsZW1lbnQpLCBjbGFzc05hbWUpID0+IHtcbiAgbGV0IHJlYyBsb29wID0gKHNpYmxpbmc6IEpzLnQoRG9tX2h0bWwuZWxlbWVudCkpID0+XG4gICAgaWYgKEpzLnRvX2Jvb2woc2libGluZyMjLmNsYXNzTGlzdCMjY29udGFpbnMoSnMuc3RyaW5nKGNsYXNzTmFtZSkpKSkge1xuICAgICAgU29tZShzaWJsaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9vcChcbiAgICAgICAgSnMuT3B0LmdldChzaWJsaW5nIyMubmV4dFNpYmxpbmcsICgpID0+IGZhaWx3aXRoKFwibm8gc2libGluZ1wiKSlcbiAgICAgICAgfD4gSnMuVW5zYWZlLmNvZXJjZSxcbiAgICAgICk7XG4gICAgfTtcbiAgbG9vcChcbiAgICBKcy5PcHQuZ2V0KGVsZW1lbnQjIy5maXJzdENoaWxkLCAoKSA9PiBmYWlsd2l0aChcIm5vIGNoaWxkXCIpKVxuICAgIHw+IEpzLlVuc2FmZS5jb2VyY2UsXG4gICk7XG59O1xuXG5sZXQgZGF0ZV9ub3cgPSAoKSA9PiB7XG4gIFslanMgbmV3IEpzLmRhdGVfbm93XTtcbn07XG5cbmxldCB0aW1lc3RhbXAgPSAoKSA9PiBkYXRlX25vdygpIyN2YWx1ZU9mO1xuXG5sZXQgZ2V0X2tleSA9IGV2dCA9PlxuICBKcy50b19zdHJpbmcoSnMuT3B0ZGVmLmdldChldnQjIy5rZXksICgpID0+IGZhaWx3aXRoKFwiSnNVdGlsLmdldF9rZXlcIikpKTtcblxubGV0IGN0cmxfaGVsZCA9IGV2dCA9PiBKcy50b19ib29sKGV2dCMjLmN0cmxLZXkpO1xubGV0IHNoaWZ0X2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5zaGlmdEtleSk7XG5sZXQgYWx0X2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5hbHRLZXkpO1xubGV0IG1ldGFfaGVsZCA9IGV2dCA9PiBKcy50b19ib29sKGV2dCMjLm1ldGFLZXkpO1xuXG5sZXQgbnVtX2NsaWNrcyA9IChldnQ6IEpzLnQoSnNfb2Zfb2NhbWwuRG9tX2h0bWwubW91c2VFdmVudCkpOiBpbnQgPT5cbiAgSnMuVW5zYWZlLmNvZXJjZShldnQpIyMuZGV0YWlsO1xuXG5sZXQgaXNfZG91YmxlX2NsaWNrID0gKGV2dDogSnMudChKc19vZl9vY2FtbC5Eb21faHRtbC5tb3VzZUV2ZW50KSk6IGJvb2wgPT5cbiAgbnVtX2NsaWNrcyhldnQpID09IDI7XG5cbmxldCBkb3dubG9hZF9zdHJpbmdfZmlsZSA9XG4gICAgKH5maWxlbmFtZTogc3RyaW5nLCB+Y29udGVudF90eXBlOiBzdHJpbmcsIH5jb250ZW50czogc3RyaW5nKSA9PiB7XG4gIGxldCBibG9iID0gRmlsZS5ibG9iX2Zyb21fc3RyaW5nKH5jb250ZW50VHlwZT1jb250ZW50X3R5cGUsIGNvbnRlbnRzKTtcbiAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICBsZXQgbGluayA9IERvbV9odG1sLmNyZWF0ZUEoRG9tX2h0bWwuZG9jdW1lbnQpO1xuICBsaW5rIyMuaHJlZiA6PSB1cmw7XG4gIGxpbmsjI3NldEF0dHJpYnV0ZShKcy5zdHJpbmcoXCJkb3dubG9hZFwiKSwgSnMuc3RyaW5nKGZpbGVuYW1lKSk7XG4gIGxpbmsjIy5vbmNsaWNrIDo9IERvbV9odG1sLmhhbmRsZXIoXyA9PiB7SnMuX3RydWV9KTtcbiAgbGluayMjY2xpY2s7XG59O1xuXG5sZXQgZG93bmxvYWRfanNvbiA9IChmaWxlbmFtZSwgY29udGVudHMpOiB1bml0ID0+XG4gIGRvd25sb2FkX3N0cmluZ19maWxlKFxuICAgIH5maWxlbmFtZT1maWxlbmFtZSArKyBcIi5qc29uXCIsXG4gICAgfmNvbnRlbnRfdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICB+Y29udGVudHM9Y29udGVudHMgfD4gWW9qc29uLlNhZmUudG9fc3RyaW5nLFxuICApO1xuXG5sZXQgcmVhZF9maWxlID0gKGZpbGUsIGspID0+IHtcbiAgbGV0IHJlYWRlciA9IFslanMgbmV3IEZpbGUuZmlsZVJlYWRlcl07XG4gIHJlYWRlciMjcmVhZEFzVGV4dChmaWxlKTtcbiAgcmVhZGVyIyMub25sb2FkIDo9XG4gICAgRG9tLmhhbmRsZXIoXyA9PiB7XG4gICAgICBsZXQgcmVzdWx0ID0gcmVhZGVyIyMucmVzdWx0O1xuICAgICAgbGV0IG9wdGlvbiA9IEpzLk9wdC50b19vcHRpb24oRmlsZS5Db2VyY2VUby5zdHJpbmcocmVzdWx0KSk7XG4gICAgICBsZXQgZGF0YSA9IE9wdGlvbi5tYXAoSnMudG9fc3RyaW5nLCBvcHRpb24pO1xuICAgICAgayhkYXRhKTtcbiAgICAgIEpzLl90cnVlO1xuICAgIH0pO1xufTtcblxubGV0IHNldF9sb2NhbHN0b3JlID0gKGs6IHN0cmluZywgdjogc3RyaW5nKTogdW5pdCA9PiB7XG4gIGxldCBsb2NhbF9zdG9yZSA9XG4gICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICBsb2NhbF9zdG9yZSMjc2V0SXRlbShKcy5zdHJpbmcoayksIEpzLnN0cmluZyh2KSk7XG59O1xuXG5sZXQgZ2V0X2xvY2Fsc3RvcmUgPSAoazogc3RyaW5nKTogb3B0aW9uKHN0cmluZykgPT5cbiAgdHJ5KHtcbiAgICBsZXQgbG9jYWxfc3RvcmUgPVxuICAgICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICAgIGxvY2FsX3N0b3JlIyNnZXRJdGVtKEpzLnN0cmluZyhrKSlcbiAgICB8PiAoXG4gICAgICB4ID0+IEpzLk9wdC5nZXQoeCwgKCkgPT4gYXNzZXJ0KGZhbHNlKSkgfD4gSnMudG9fc3RyaW5nIHw+IE9wdGlvbi5zb21lXG4gICAgKTtcbiAgfSkge1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgY2xlYXJfbG9jYWxzdG9yZSA9ICgpID0+IHtcbiAgbGV0IGxvY2FsX3N0b3JlID1cbiAgICBKcy5PcHRkZWYuZ2V0KERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSwgKCkgPT4gYXNzZXJ0KGZhbHNlKSk7XG4gIGxvY2FsX3N0b3JlIyNjbGVhcjtcbn07XG5cbmxldCBjb25maXJtID0gbWVzc2FnZSA9PiB7XG4gIEpzLnRvX2Jvb2woRG9tX2h0bWwud2luZG93IyNjb25maXJtKEpzLnN0cmluZyhtZXNzYWdlKSkpO1xufTtcblxubGV0IGxvZyA9IGRhdGEgPT4ge1xuICBGaXJlYnVnLmNvbnNvbGUjI2xvZyhkYXRhKTtcbn07XG5cbmxldCBjbGlwYm9hcmRfc2hpbV9pZCA9IFwiY2xpcGJvYXJkLXNoaW1cIjtcblxubGV0IGZvY3VzX2NsaXBib2FyZF9zaGltID0gKCkgPT4gZ2V0X2VsZW1fYnlfaWQoY2xpcGJvYXJkX3NoaW1faWQpIyNmb2N1cztcblxubGV0IGNsaXBib2FyZF9zaGltID0ge1xuICBOb2RlLnRleHRhcmVhKH5hdHRyPUF0dHIubWFueShbQXR0ci5pZChjbGlwYm9hcmRfc2hpbV9pZCldKSwgW10pO1xufTtcblxubGV0IGNvcHkgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcbiAgRG9tX2h0bWwuZG9jdW1lbnQjI2V4ZWNDb21tYW5kKFxuICAgIEpzLnN0cmluZyhcInNlbGVjdEFsbFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQuZW1wdHksXG4gICk7XG4gIERvbV9odG1sLmRvY3VtZW50IyNleGVjQ29tbWFuZChcbiAgICBKcy5zdHJpbmcoXCJpbnNlcnRUZXh0XCIpLFxuICAgIEpzLmJvb2woZmFsc2UpLFxuICAgIEpzLk9wdC5vcHRpb24oU29tZShKcy5zdHJpbmcoc3RyKSkpLFxuICApO1xuICBEb21faHRtbC5kb2N1bWVudCMjZXhlY0NvbW1hbmQoXG4gICAgSnMuc3RyaW5nKFwic2VsZWN0QWxsXCIpLFxuICAgIEpzLmJvb2woZmFsc2UpLFxuICAgIEpzLk9wdC5lbXB0eSxcbiAgKTtcbn07XG5cbmxldCBzY3JvbGxfY3Vyc29yX2ludG9fdmlld19pZl9uZWVkZWQgPSAoKSA9PlxuICB0cnkoe1xuICAgIGxldCBjYXJldF9lbGVtID0gZ2V0X2VsZW1fYnlfaWQoXCJjYXJldFwiKTtcbiAgICBsZXQgbWFpbiA9IGdldF9lbGVtX2J5X2lkKFwibWFpblwiKTtcbiAgICBsZXQgbWFpbl9yZWN0ID0gbWFpbiMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGxldCBjYXJldF9yZWN0ID0gY2FyZXRfZWxlbSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuXG4gICAgaWYgKGNhcmV0X3JlY3QjIy50b3AgPCBtYWluX3JlY3QjIy50b3ApIHtcbiAgICAgIGNhcmV0X2VsZW0jI3Njcm9sbEludG9WaWV3KEpzLl90cnVlKTtcbiAgICB9IGVsc2UgaWYgKGNhcmV0X3JlY3QjIy5ib3R0b20gPiBtYWluX3JlY3QjIy5ib3R0b20pIHtcbiAgICAgIGNhcmV0X2VsZW0jI3Njcm9sbEludG9WaWV3KEpzLl9mYWxzZSk7XG4gICAgfTtcbiAgfSkge1xuICB8IEFzc2VydF9mYWlsdXJlKF8pID0+ICgpXG4gIH07XG5cbm1vZHVsZSBGcmFnbWVudCA9IHtcbiAgbGV0IHNldF9jdXJyZW50ID0gZnJhZyA9PiB7XG4gICAgbGV0IGZyYWcgPVxuICAgICAgc3dpdGNoIChmcmFnKSB7XG4gICAgICB8IFwiXCIgPT4gXCJcIlxuICAgICAgfCBmcmFnID0+IFwiI1wiICsrIGZyYWdcbiAgICAgIH07XG4gICAgbGV0IGhpc3RvcnkgPSBKc19vZl9vY2FtbC5Eb21faHRtbC53aW5kb3cjIy5oaXN0b3J5O1xuICAgIGhpc3RvcnkjI3B1c2hTdGF0ZShKcy5udWxsLCBKcy5zdHJpbmcoXCJcIiksIEpzLnNvbWUoSnMuc3RyaW5nKGZyYWcpKSk7XG4gIH07XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gKCkgPT4ge1xuICAgIGxldCBmcmFnbWVudF9vZl91cmwgPSAodXJsOiBVcmwudXJsKTogc3RyaW5nID0+XG4gICAgICBzd2l0Y2ggKHVybCkge1xuICAgICAgfCBIdHRwKHtodV9mcmFnbWVudDogc3RyLCBffSlcbiAgICAgIHwgSHR0cHMoe2h1X2ZyYWdtZW50OiBzdHIsIF99KVxuICAgICAgfCBGaWxlKHtmdV9mcmFnbWVudDogc3RyLCBffSkgPT4gc3RyXG4gICAgICB9O1xuICAgIFVybC5DdXJyZW50LmdldCgpIHw+IE9wdGlvbi5tYXAoZnJhZ21lbnRfb2ZfdXJsKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxuLy8gQSBnZW5lcmljIGtleS12YWx1ZSBzdG9yZSBmb3Igc2F2aW5nL2xvYWRpbmcgZGF0YSB0by9mcm9tIGxvY2FsIHN0b3JhZ2Vcbm1vZHVsZSBHZW5lcmljID0ge1xuICBsZXQgcHJlZml4OiBzdHJpbmcgPSBcIktFWV9TVE9SRV9cIjtcblxuICBsZXQgZnVsbF9rZXkgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIHByZWZpeCArKyBrZXk7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB1bml0ID0+XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGZ1bGxfa2V5KGtleSksIHZhbHVlKTtcblxuICBsZXQgbG9hZCA9IChrZXk6IHN0cmluZyk6IG9wdGlvbihzdHJpbmcpID0+XG4gICAgSnNVdGlsLmdldF9sb2NhbHN0b3JlKGZ1bGxfa2V5KGtleSkpO1xufTtcblxuLy8gU2V0dGluZ3Mgc2VyaWFsaXphdGlvblxubW9kdWxlIFNldHRpbmdzID0ge1xuICBsZXQgc2F2ZV9zZXR0aW5nc19rZXk6IHN0cmluZyA9IFwiU0VUVElOR1NcIjtcblxuICBsZXQgZGVmYXVsdCA9IEluaXQuc3RhcnR1cC5zZXR0aW5ncztcblxuICBsZXQgc2VyaWFsaXplID0gc2V0dGluZ3MgPT5cbiAgICBzZXR0aW5ncyB8PiBTZXR0aW5ncy5zZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+XG4gICAgdHJ5KFxuICAgICAgZGF0YVxuICAgICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgICAgfD4gU2V0dGluZ3MudF9vZl9zZXhwXG4gICAgICB8PiBTZXR0aW5ncy5maXhfaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgKSB7XG4gICAgfCBfID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiQ291bGQgbm90IGRlc2VyaWFsaXplIHNldHRpbmdzLlwiKTtcbiAgICAgIGRlZmF1bHQ7XG4gICAgfTtcblxuICBsZXQgc2F2ZSA9IChzZXR0aW5nczogU2V0dGluZ3MudCk6IHVuaXQgPT5cbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXksIHNlcmlhbGl6ZShzZXR0aW5ncykpO1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX3NldHRpbmdzX2tleSwgc2VyaWFsaXplKGRlZmF1bHQpKTtcbiAgICBkZWZhdWx0O1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCk6IFNldHRpbmdzLnQgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX3NldHRpbmdzX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCgpXG4gICAgfCBTb21lKGRhdGEpID0+IGRlc2VyaWFsaXplKGRhdGEpXG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKCkgPT4gT3B0aW9uLmdldChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXkpKTtcbiAgbGV0IGltcG9ydCA9IGRhdGEgPT4ge1xuICAgIGxldCBzZXR0aW5ncyA9IGRlc2VyaWFsaXplKGRhdGEpO1xuICAgIHNhdmUoc2V0dGluZ3MpO1xuICAgIHNldHRpbmdzO1xuICB9O1xufTtcblxuLy8gRXhwbGFpblRoaXNNb2RlbCBzZXJpYWxpemF0aW9uXG5tb2R1bGUgRXhwbGFpblRoaXNNb2RlbCA9IHtcbiAgbGV0IHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXk6IHN0cmluZyA9IFwiRXhwbGFpblRoaXNNb2RlbFwiO1xuXG4gIGxldCBzZXJpYWxpemUgPSBleHBsYWluVGhpc01vZGVsID0+XG4gICAgZXhwbGFpblRoaXNNb2RlbCB8PiBFeHBsYWluVGhpc01vZGVsLnNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuXG4gIGxldCBkZXNlcmlhbGl6ZSA9IGRhdGEgPT5cbiAgICB0cnkoZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IEV4cGxhaW5UaGlzTW9kZWwudF9vZl9zZXhwKSB7XG4gICAgfCBfID0+XG4gICAgICBwcmludF9lbmRsaW5lKFwiQ291bGQgbm90IGRlc2VyaWFsaXplIEV4cGxhaW5UaGlzTW9kZWwuXCIpO1xuICAgICAgRXhwbGFpblRoaXNNb2RlbC5pbml0O1xuICAgIH07XG5cbiAgbGV0IHNhdmUgPSAoZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50KTogdW5pdCA9PlxuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShcbiAgICAgIHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXksXG4gICAgICBzZXJpYWxpemUoZXhwbGFpblRoaXNNb2RlbCksXG4gICAgKTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoXG4gICAgICBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5LFxuICAgICAgc2VyaWFsaXplKEV4cGxhaW5UaGlzTW9kZWwuaW5pdCksXG4gICAgKTtcbiAgICBFeHBsYWluVGhpc01vZGVsLmluaXQ7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAoKTogRXhwbGFpblRoaXNNb2RlbC50ID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCgpXG4gICAgfCBTb21lKGRhdGEpID0+IGRlc2VyaWFsaXplKGRhdGEpXG4gICAgfTtcblxuICBsZXQgcmVjIGV4cG9ydCA9ICgpID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSkpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBfID0gaW5pdCgpO1xuICAgICAgZXhwb3J0KCk7XG4gICAgfCBTb21lKGRhdGEpID0+IGRhdGFcbiAgICB9O1xuXG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHtcbiAgICBsZXQgZXhwbGFpblRoaXNNb2RlbCA9IGRlc2VyaWFsaXplKGRhdGEpO1xuICAgIHNhdmUoZXhwbGFpblRoaXNNb2RlbCk7XG4gIH07XG59O1xuXG4vLyBTY3JhdGNoIG1vZGUgc2VyaWFsaXphdGlvblxubW9kdWxlIFNjcmF0Y2ggPSB7XG4gIGxldCBzYXZlX3NjcmF0Y2hfa2V5OiBzdHJpbmcgPSBcIlNBVkVfU0NSQVRDSFwiO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50ID0gUGVyc2lzdGVudERhdGEuc2NyYXRjaDtcblxuICBsZXQgdG9fcGVyc2lzdGVudCA9ICgoaWR4LCBzbGlkZXMsIHJlc3VsdHMpKTogcGVyc2lzdGVudCA9PiAoXG4gICAgaWR4LFxuICAgIExpc3QubWFwKFNjcmF0Y2hTbGlkZS5wZXJzaXN0LCBzbGlkZXMpLFxuICAgIHJlc3VsdHNcbiAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0LnRvX3BlcnNpc3RlbnQpXG4gICAgfD4gTW9kZWxSZXN1bHRzLmJpbmRpbmdzLFxuICApO1xuXG4gIGxldCBvZl9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncywgKGlkeCwgc2xpZGVzLCByZXN1bHRzKTogcGVyc2lzdGVudCkgPT4ge1xuICAgIChcbiAgICAgIGlkeCxcbiAgICAgIExpc3QubWFwKFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QsIHNsaWRlcyksXG4gICAgICByZXN1bHRzXG4gICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgfD4gTW9kZWxSZXN1bHRzLm9mX3NlcVxuICAgICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC5vZl9wZXJzaXN0ZW50KH5zZXR0aW5ncykpLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNjcmF0Y2ggPT4ge1xuICAgIHNjcmF0Y2ggfD4gdG9fcGVyc2lzdGVudCB8PiBzZXhwX29mX3BlcnNpc3RlbnQgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gcGVyc2lzdGVudF9vZl9zZXhwIHw+IG9mX3BlcnNpc3RlbnQ7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoc2NyYXRjaCk6IHVuaXQgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX3NjcmF0Y2hfa2V5LCBzZXJpYWxpemUoc2NyYXRjaCkpO1xuICB9O1xuXG4gIGxldCBpbml0ID0gKH5zZXR0aW5ncykgPT4ge1xuICAgIGxldCBzY3JhdGNoID0gb2ZfcGVyc2lzdGVudCh+c2V0dGluZ3MsIEluaXQuc3RhcnR1cC5zY3JhdGNoKTtcbiAgICBzYXZlKHNjcmF0Y2gpO1xuICAgIHNjcmF0Y2g7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAofnNldHRpbmdzKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfc2NyYXRjaF9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQofnNldHRpbmdzKVxuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgdHJ5KGRlc2VyaWFsaXplKH5zZXR0aW5ncywgZGF0YSkpIHtcbiAgICAgIHwgXyA9PiBpbml0KH5zZXR0aW5ncylcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBleHBvcnQgPSAofnNldHRpbmdzKSA9PiBzZXJpYWxpemUobG9hZCh+c2V0dGluZ3MpKTtcbiAgbGV0IGltcG9ydCA9ICh+c2V0dGluZ3MsIGRhdGEpID0+IHNhdmUoZGVzZXJpYWxpemUofnNldHRpbmdzLCBkYXRhKSk7XG59O1xuXG5tb2R1bGUgRG9jdW1lbnRhdGlvbiA9IHtcbiAgbGV0IHNhdmVfZG9jdW1lbnRhdGlvbl9rZXk6IHN0cmluZyA9IFwiU0FWRV9ET0NVTUVOVEFUSU9OXCI7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcnNpc3RlbnQgPSBQZXJzaXN0ZW50RGF0YS5kb2N1bWVudGF0aW9uO1xuXG4gIGxldCBwZXJzaXN0ID0gKChuYW1lLCBlZGl0b3I6IEVkaXRvci50KSkgPT4ge1xuICAgIChuYW1lLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoZWRpdG9yLnN0YXRlLnppcHBlcikpO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3QgPSAoKG5hbWUsIHppcHBlcikpID0+IHtcbiAgICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QoemlwcGVyKTtcbiAgICAobmFtZSwgRWRpdG9yLmluaXQoemlwcGVyLCB+cmVhZF9vbmx5PWZhbHNlKSk7XG4gIH07XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAoKHN0cmluZywgc2xpZGVzLCByZXN1bHRzKSk6IHBlcnNpc3RlbnQgPT4gKFxuICAgIHN0cmluZyxcbiAgICBMaXN0Lm1hcChwZXJzaXN0LCBzbGlkZXMpLFxuICAgIHJlc3VsdHNcbiAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0LnRvX3BlcnNpc3RlbnQpXG4gICAgfD4gTW9kZWxSZXN1bHRzLmJpbmRpbmdzLFxuICApO1xuXG4gIGxldCBvZl9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncywgKHN0cmluZywgc2xpZGVzLCByZXN1bHRzKTogcGVyc2lzdGVudCkgPT4ge1xuICAgIChcbiAgICAgIHN0cmluZyxcbiAgICAgIExpc3QubWFwKHVucGVyc2lzdCwgc2xpZGVzKSxcbiAgICAgIHJlc3VsdHNcbiAgICAgIHw+IExpc3QudG9fc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMub2Zfc2VxXG4gICAgICB8PiBNb2RlbFJlc3VsdHMubWFwKE1vZGVsUmVzdWx0Lm9mX3BlcnNpc3RlbnQofnNldHRpbmdzKSksXG4gICAgKTtcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplID0gc2xpZGVzID0+IHtcbiAgICBzbGlkZXMgfD4gdG9fcGVyc2lzdGVudCB8PiBzZXhwX29mX3BlcnNpc3RlbnQgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gcGVyc2lzdGVudF9vZl9zZXhwIHw+IG9mX3BlcnNpc3RlbnQ7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoc2xpZGVzKTogdW5pdCA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfZG9jdW1lbnRhdGlvbl9rZXksIHNlcmlhbGl6ZShzbGlkZXMpKTtcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh+c2V0dGluZ3MpID0+IHtcbiAgICBsZXQgZG9jdW1lbnRhdGlvbiA9IG9mX3BlcnNpc3RlbnQofnNldHRpbmdzLCBJbml0LnN0YXJ0dXAuZG9jdW1lbnRhdGlvbik7XG4gICAgc2F2ZShkb2N1bWVudGF0aW9uKTtcbiAgICBkb2N1bWVudGF0aW9uO1xuICB9O1xuXG4gIGxldCBsb2FkID0gKH5zZXR0aW5ncykgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX2RvY3VtZW50YXRpb25fa2V5KSkge1xuICAgIHwgTm9uZSA9PiBpbml0KH5zZXR0aW5ncylcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIHRyeShkZXNlcmlhbGl6ZSh+c2V0dGluZ3MsIGRhdGEpKSB7XG4gICAgICB8IF8gPT4gaW5pdCh+c2V0dGluZ3MpXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKH5zZXR0aW5ncykgPT4gc2VyaWFsaXplKGxvYWQofnNldHRpbmdzKSk7XG4gIGxldCBpbXBvcnQgPSAofnNldHRpbmdzLCBkYXRhKSA9PiBzYXZlKGRlc2VyaWFsaXplKH5zZXR0aW5ncywgZGF0YSkpO1xufTtcblxubW9kdWxlIEV4ZXJjaXNlID0ge1xuICBvcGVuIEV4ZXJjaXNlO1xuXG4gIGxldCBjdXJfZXhlcmNpc2Vfa2V5ID0gXCJDVVJfRVhFUkNJU0VcIjtcblxuICBsZXQga2V5c3RyaW5nX29mX2tleSA9IGtleSA9PiB7XG4gICAga2V5IHw+IHNleHBfb2Zfa2V5IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGtleXN0cmluZ19vZiA9IHAgPT4ge1xuICAgIGtleV9vZihwKSB8PiBrZXlzdHJpbmdfb2Zfa2V5O1xuICB9O1xuXG4gIGxldCBrZXlfb2Zfa2V5c3RyaW5nID0ga2V5c3RyaW5nID0+IHtcbiAgICBrZXlzdHJpbmcgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBrZXlfb2Zfc2V4cDtcbiAgfTtcblxuICBsZXQgc2F2ZV9leGVyY2lzZV9rZXkgPSBrZXkgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmdfb2Zfa2V5KGtleSkpO1xuICB9O1xuXG4gIGxldCBzYXZlX2V4ZXJjaXNlID0gKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZl9zdGF0ZShleGVyY2lzZSk7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBsZXQgdmFsdWUgPSBFeGVyY2lzZS5zZXJpYWxpemVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShrZXlzdHJpbmcsIHZhbHVlKTtcbiAgfTtcblxuICBsZXQgaW5pdF9leGVyY2lzZSA9IChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZihzcGVjKTtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIGxldCBleGVyY2lzZSA9IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMoc3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZyk7XG4gICAgZXhlcmNpc2U7XG4gIH07XG5cbiAgbGV0IGxvYWRfZXhlcmNpc2UgPSAoa2V5LCBzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTogRXhlcmNpc2Uuc3RhdGUgPT4ge1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoa2V5c3RyaW5nKSkge1xuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgbGV0IGV4ZXJjaXNlID1cbiAgICAgICAgdHJ5KEV4ZXJjaXNlLmRlc2VyaWFsaXplX2V4ZXJjaXNlKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICB8IF8gPT4gaW5pdF9leGVyY2lzZShzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgICAgICB9O1xuICAgICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZyk7XG4gICAgICBleGVyY2lzZTtcbiAgICB8IE5vbmUgPT4gaW5pdF9leGVyY2lzZShzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoKG4sIHNwZWNzLCBleGVyY2lzZSksIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBsZXQga2V5ID0ga2V5X29mKExpc3QubnRoKHNwZWNzLCBuKSk7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBzYXZlX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nKTtcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGV4ZXJjaXNlcyA9IHtcbiAgICAgIChcbiAgICAgICAgMCxcbiAgICAgICAgRXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMsXG4gICAgICAgIExpc3QubnRoKEV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLCAwKVxuICAgICAgICB8PiBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKH5pbnN0cnVjdG9yX21vZGUpLFxuICAgICAgKTtcbiAgICB9O1xuICAgIHNhdmUoZXhlcmNpc2VzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBleGVyY2lzZXM7XG4gIH07XG5cbiAgbGV0IGxvYWQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSkpIHtcbiAgICB8IFNvbWUoa2V5c3RyaW5nKSA9PlxuICAgICAgbGV0IGtleSA9IGtleV9vZl9rZXlzdHJpbmcoa2V5c3RyaW5nKTtcbiAgICAgIHN3aXRjaCAoRXhlcmNpc2UuZmluZF9rZXlfb3B0KGtleSwgc3BlY3MpKSB7XG4gICAgICB8IFNvbWUoKG4sIHNwZWMpKSA9PlxuICAgICAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShrZXlzdHJpbmcpKSB7XG4gICAgICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgICAgIGxldCBleGVyY2lzZSA9XG4gICAgICAgICAgICB0cnkoZGVzZXJpYWxpemVfZXhlcmNpc2UoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgICAgICB8IF8gPT4gaW5pdF9leGVyY2lzZShzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAobiwgc3BlY3MsIGV4ZXJjaXNlKTtcbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgLy8gaW5pdGlhbGl6ZSBleGVyY2lzZSBmcm9tIHNwZWNcbiAgICAgICAgICBsZXQgZXhlcmNpc2UgPSBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgICAgIHNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgICAgIChuLCBzcGVjcywgZXhlcmNpc2UpO1xuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgLy8gaW52YWxpZCBjdXJyZW50IGV4ZXJjaXNlIGtleSBzYXZlZCwgbG9hZCB0aGUgZmlyc3QgZXhlcmNpc2VcbiAgICAgICAgbGV0IGZpcnN0X3NwZWMgPSBMaXN0Lm50aChzcGVjcywgMCk7XG4gICAgICAgIGxldCBmaXJzdF9rZXkgPSBFeGVyY2lzZS5rZXlfb2YoZmlyc3Rfc3BlYyk7XG4gICAgICAgICgwLCBzcGVjcywgbG9hZF9leGVyY2lzZShmaXJzdF9rZXksIGZpcnN0X3NwZWMsIH5pbnN0cnVjdG9yX21vZGUpKTtcbiAgICAgIH07XG4gICAgfCBOb25lID0+IGluaXQofmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCBwcmVwX2V4ZXJjaXNlX2V4cG9ydCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICB7XG4gICAgICBjdXJfZXhlcmNpc2U6XG4gICAgICAgIGtleV9vZl9rZXlzdHJpbmcoXG4gICAgICAgICAgT3B0aW9uLmdldChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSkpLFxuICAgICAgICApLFxuICAgICAgZXhlcmNpc2VfZGF0YTpcbiAgICAgICAgc3BlY3NcbiAgICAgICAgfD4gTGlzdC5tYXAoc3BlYyA9PiB7XG4gICAgICAgICAgICAgbGV0IGtleSA9IEV4ZXJjaXNlLmtleV9vZihzcGVjKTtcbiAgICAgICAgICAgICBsZXQgZXhlcmNpc2UgPVxuICAgICAgICAgICAgICAgbG9hZF9leGVyY2lzZShrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgICAgICAgICAgICB8PiBFeGVyY2lzZS5wZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgICAgICAgIChrZXksIGV4ZXJjaXNlKTtcbiAgICAgICAgICAgfSksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCA9ICh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwcmVwX2V4ZXJjaXNlX2V4cG9ydCh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfD4gc2V4cF9vZl9leGVyY2lzZV9leHBvcnRcbiAgICB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBleHBvcnQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCh+c3BlY3MsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBpbXBvcnQgPSAoZGF0YSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGV4ZXJjaXNlX2V4cG9ydCA9IGRhdGEgfD4gZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0O1xuICAgIHNhdmVfZXhlcmNpc2Vfa2V5KGV4ZXJjaXNlX2V4cG9ydC5jdXJfZXhlcmNpc2UpO1xuICAgIGV4ZXJjaXNlX2V4cG9ydC5leGVyY2lzZV9kYXRhXG4gICAgfD4gTGlzdC5pdGVyKCgoa2V5LCBwZXJzaXN0ZW50X3N0YXRlKSkgPT4ge1xuICAgICAgICAgbGV0IHNwZWMgPSBFeGVyY2lzZS5maW5kX2tleV9vcHQoa2V5LCBzcGVjcyk7XG4gICAgICAgICBzd2l0Y2ggKHNwZWMpIHtcbiAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICBwcmludF9lbmRsaW5lKFwiV2FybmluZzogc2F2ZWQga2V5IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gZXhlcmNpc2VcIilcbiAgICAgICAgIHwgU29tZSgoXywgc3BlYykpID0+XG4gICAgICAgICAgIHNhdmVfZXhlcmNpc2UoXG4gICAgICAgICAgICAgRXhlcmNpc2UudW5wZXJzaXN0X3N0YXRlKFxuICAgICAgICAgICAgICAgcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgICAgICAgIH5zcGVjLFxuICAgICAgICAgICAgICAgfmluc3RydWN0b3JfbW9kZSxcbiAgICAgICAgICAgICApLFxuICAgICAgICAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgICAgICAgIClcbiAgICAgICAgIH07XG4gICAgICAgfSk7XG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBNT0RFTDpcblxuICAgICAgVGhlIG1vZGVsIGNvbnNpc3RzIG9mIHRocmVlIGJyb2FkIGNhdGVnb3JpZXMuIEVkaXRvcnMgaXMgdGhlIG1lYXQsXG4gICAgICBjb250YWluaW5nIHRoZSBjb2RlIGNvbnRlbnQgYW5kIGN1cnNvci9zZWxlY3Rpb24vYnVmZmVyIHN0YXRlIGZvciBhbGxcbiAgICAgIGFjdGl2ZSBlZGl0b3JzLiBTZXR0aW5ncyBhcmUgdXNlci1zZWxlY3RhYmxlIHByZWZlcmVuY2VzLiBUb2dldGhlcixcbiAgICAgIHRoZXNlIHR3byBjb21wcmlzZSB0aGUgcGVyc2lzdGVudCBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24gd2hpY2ggaXNcbiAgICAgIHNhdmVkIHRvIGxvY2Fsc3RvcmUuXG5cbiAgICAgIE1ldGEgb24gdGhlIG90aGVyIGhhbmQgY29uc2lzdHMgb2YgZXZlcnl0aGluZyB3aGljaCBpcyBub3RcbiAgICAgIHBlcmlzdGFudCwgaW5jbHVkaW5nIHRyYW5zaXRvcnkgdWlfc3RhdGUgc3VjaCBhcyB3aGV0aGVyIHRoZSBtb3VzZVxuICAgICAgaXMgaGVsZCBkb3duLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHRpbWVzdGFtcCA9IGZsb2F0O1xuXG4vKiBOb24tcGVyc2lzdGVudCBhcHBsaWNhdGlvbiBzdGF0ZSAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB1aV9zdGF0ZSA9IHtcbiAgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICBzaG93X2JhY2twYWNrX3RhcmdldHM6IGJvb2wsXG4gIG1vdXNlZG93bjogYm9vbCxcbiAgYWN0aXZlX2VkaXRvcjogb3B0aW9uKEVkaXRvcnMuU2VsZWN0aW9uLnQpLFxufTtcblxubGV0IHVpX3N0YXRlX2luaXQgPSB7XG4gIGZvbnRfbWV0cmljczogRm9udE1ldHJpY3MuaW5pdCxcbiAgc2hvd19iYWNrcGFja190YXJnZXRzOiBmYWxzZSxcbiAgbW91c2Vkb3duOiBmYWxzZSxcbiAgYWN0aXZlX2VkaXRvcjogTm9uZSxcbn07XG5cbnR5cGUgdCA9IHtcbiAgZWRpdG9yczogRWRpdG9ycy50LFxuICBzZXR0aW5nczogU2V0dGluZ3MudCxcbiAgcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gIHN0YXRpY3M6IENhY2hlZFN0YXRpY3MudCxcbiAgZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICB1aV9zdGF0ZSxcbn07XG5cbmxldCBjdXRvZmYgPSAoPT09KTtcblxubGV0IG1rID0gKGVkaXRvcnMsIHJlc3VsdHMsIHN0YXRpY3MpID0+IHtcbiAgZWRpdG9ycyxcbiAgc2V0dGluZ3M6IEluaXQuc3RhcnR1cC5zZXR0aW5ncyxcbiAgcmVzdWx0cyxcbiAgc3RhdGljcyxcbiAgZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC5pbml0LFxuICB1aV9zdGF0ZTogdWlfc3RhdGVfaW5pdCxcbn07XG5cbmxldCBibGFuayA9XG4gIG1rKEVkaXRvcnMuU2NyYXRjaCgwLCBbXSksIE1vZGVsUmVzdWx0cy5lbXB0eSwgQ2FjaGVkU3RhdGljcy5lbXB0eSk7XG5cbmxldCBsb2FkX2VkaXRvcnMgPSAofnNldHRpbmdzOiBTZXR0aW5ncy50KTogKEVkaXRvcnMudCwgTW9kZWxSZXN1bHRzLnQpID0+XG4gIHN3aXRjaCAoc2V0dGluZ3MubW9kZSkge1xuICB8IFNjcmF0Y2ggPT5cbiAgICBsZXQgKGlkeCwgc2xpZGVzLCByZXN1bHRzKSA9IFN0b3JlLlNjcmF0Y2gubG9hZCh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSk7XG4gICAgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCByZXN1bHRzKTtcbiAgfCBEb2N1bWVudGF0aW9uID0+XG4gICAgbGV0IChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpID1cbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSk7XG4gICAgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgcmVzdWx0cyk7XG4gIHwgRXhlcmNpc2VzID0+XG4gICAgbGV0IChuLCBzcGVjcywgZXhlcmNpc2UpID1cbiAgICAgIFN0b3JlLkV4ZXJjaXNlLmxvYWQoXG4gICAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUsXG4gICAgICApO1xuICAgIChFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSwgTW9kZWxSZXN1bHRzLmVtcHR5KTtcbiAgfTtcblxubGV0IHNhdmVfZWRpdG9ycyA9XG4gICAgKGVkaXRvcnM6IEVkaXRvcnMudCwgcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpXG4gICAgOiB1bml0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTdG9yZS5TY3JhdGNoLnNhdmUoKG4sIHNsaWRlcywgcmVzdWx0cykpXG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgU3RvcmUuRG9jdW1lbnRhdGlvbi5zYXZlKChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpKVxuICB8IEV4ZXJjaXNlcyhuLCBzcGVjcywgZXhlcmNpc2UpID0+XG4gICAgU3RvcmUuRXhlcmNpc2Uuc2F2ZSgobiwgc3BlY3MsIGV4ZXJjaXNlKSwgfmluc3RydWN0b3JfbW9kZSlcbiAgfTtcblxubGV0IGxvYWQgPSAoaW5pdF9tb2RlbDogdCk6IHQgPT4ge1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5sb2FkKCk7XG4gIGxldCBleHBsYWluVGhpc01vZGVsID0gU3RvcmUuRXhwbGFpblRoaXNNb2RlbC5sb2FkKCk7XG4gIGxldCAoZWRpdG9ycywgcmVzdWx0cykgPSBsb2FkX2VkaXRvcnMofnNldHRpbmdzKTtcbiAgbGV0IHVpX3N0YXRlID0gaW5pdF9tb2RlbC51aV9zdGF0ZTtcbiAgbGV0IHN0YXRpY3MgPSBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAge2VkaXRvcnMsIHNldHRpbmdzLCByZXN1bHRzLCBzdGF0aWNzLCBleHBsYWluVGhpc01vZGVsLCB1aV9zdGF0ZX07XG59O1xuXG5sZXQgc2F2ZSA9ICh7ZWRpdG9ycywgc2V0dGluZ3MsIGV4cGxhaW5UaGlzTW9kZWwsIHJlc3VsdHMsIF99OiB0KSA9PiB7XG4gIHNhdmVfZWRpdG9ycyhlZGl0b3JzLCByZXN1bHRzLCB+aW5zdHJ1Y3Rvcl9tb2RlPXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSk7XG4gIFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwuc2F2ZShleHBsYWluVGhpc01vZGVsKTtcbiAgU3RvcmUuU2V0dGluZ3Muc2F2ZShzZXR0aW5ncyk7XG59O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuID0gKG1vZGVsOiB0KSA9PiB7XG4gIHNhdmUobW9kZWwpO1xuICBPayhtb2RlbCk7XG59O1xubGV0IHJlc2V0ID0gKG1vZGVsOiB0KTogdCA9PiB7XG4gIC8qIFJlc2V0IG1vZGVsIHRvIGRlZmF1bHQsIGluY2x1ZGluZyBpbiBsb2NhbHN0b3JhZ2UsXG4gICAgIGJ1dCBkb24ndCBvdGhlcndpc2UgZXJhc2UgbG9jYWxzdG9yYWdlLCBhbGxvd2luZ1xuICAgICBlLmcuIGFwaSBrZXlzIHRvIHBlcnNpc3QgKi9cbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuaW5pdCgpLmNvcmU7XG4gIGlnbm9yZShTdG9yZS5FeHBsYWluVGhpc01vZGVsLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5TY3JhdGNoLmluaXQofnNldHRpbmdzKSk7XG4gIGlnbm9yZShTdG9yZS5Eb2N1bWVudGF0aW9uLmluaXQofnNldHRpbmdzKSk7XG4gIGlnbm9yZShTdG9yZS5FeGVyY2lzZS5pbml0KH5pbnN0cnVjdG9yX21vZGU9dHJ1ZSkpO1xuICBsZXQgbmV3X21vZGVsID0gbG9hZChibGFuayk7XG4gIHtcbiAgICAuLi5uZXdfbW9kZWwsXG4gICAgdWlfc3RhdGU6IHtcbiAgICAgIC4uLm1vZGVsLnVpX3N0YXRlLFxuICAgICAgZm9udF9tZXRyaWNzOiBtb2RlbC51aV9zdGF0ZS5mb250X21ldHJpY3MsXG4gICAgfSxcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXZhbHVhdGlvbl9zZXR0aW5nc19hY3Rpb24gPVxuICB8IFNob3dSZWNvcmRcbiAgfCBTaG93Q2FzZUNsYXVzZXNcbiAgfCBTaG93Rm5Cb2RpZXNcbiAgfCBTaG93Q2FzdHNcbiAgfCBTaG93Rml4cG9pbnRzXG4gIHwgU2hvd0xvb2t1cHNcbiAgfCBTaG93RmlsdGVyc1xuICB8IFNob3dTZXR0aW5nc1xuICB8IFNob3dIaWRkZW5TdGVwcztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZXR0aW5nc19hY3Rpb24gPVxuICB8IENhcHRpb25zXG4gIHwgU2Vjb25kYXJ5SWNvbnNcbiAgfCBTdGF0aWNzXG4gIHwgRHluYW1pY3NcbiAgfCBBc3Npc3RcbiAgfCBFbGFib3JhdGVcbiAgfCBCZW5jaG1hcmtcbiAgfCBDb250ZXh0SW5zcGVjdG9yXG4gIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgfCBFdmFsdWF0aW9uKGV2YWx1YXRpb25fc2V0dGluZ3NfYWN0aW9uKVxuICB8IEV4cGxhaW5UaGlzKEV4cGxhaW5UaGlzTW9kZWwuU2V0dGluZ3MuYWN0aW9uKVxuICB8IE1vZGUoU2V0dGluZ3MubW9kZSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcHBlcl9hY3Rpb24gPVxuICB8IFN0ZXBGb3J3YXJkKGludClcbiAgfCBTdGVwQmFja3dhcmRcbiAgfCBIaWRlU3RlcHBlcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhZ2VudCA9XG4gIHwgVHlEaTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhZ2VudF9hY3Rpb24gPVxuICB8IFByb21wdChhZ2VudClcbiAgfCBBY2NlcHRTdWdnZXN0aW9uO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNldF9tZXRhID1cbiAgfCBNb3VzZWRvd25cbiAgfCBNb3VzZXVwXG4gIHwgU2hvd0JhY2twYWNrVGFyZ2V0cyhib29sKVxuICB8IEZvbnRNZXRyaWNzKEZvbnRNZXRyaWNzLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJlbmNobWFya19hY3Rpb24gPVxuICB8IFN0YXJ0XG4gIHwgRmluaXNoO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVkaXRvcl9hY3Rpb24gPVxuICB8IFBlcmZvcm0oQWN0aW9uLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNlbGxfYWN0aW9uID1cbiAgfCBUb2dnbGVTdGVwcGVyXG4gIHwgU3RlcHBlcihzdGVwcGVyX2FjdGlvbilcbiAgfCBFZGl0b3IoZWRpdG9yX2FjdGlvbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIC8qIG1ldGEgKi9cbiAgfCBSZXNldFxuICB8IFNldChzZXR0aW5nc19hY3Rpb24pXG4gIHwgU2V0TWV0YShzZXRfbWV0YSlcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKEV4cGxhaW5UaGlzVXBkYXRlLnVwZGF0ZSlcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IERlYnVnQ29uc29sZShzdHJpbmcpXG4gIC8qIGVkaXRvcnMgKi9cbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBJbml0SW1wb3J0QWxsKFtAb3BhcXVlXSBKc19vZl9vY2FtbC5Kcy50KEpzX29mX29jYW1sLkZpbGUuZmlsZSkpXG4gIHwgRmluaXNoSW1wb3J0QWxsKG9wdGlvbihzdHJpbmcpKVxuICB8IE1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24udClcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoc3RyaW5nKSAvL2V4YW1wbGVtb2RlIG9ubHlcbiAgLy8gZWRpdG9yczogc2NyYXRjaG1vZGUgb25seVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKFtAb3BhcXVlXSBKc19vZl9vY2FtbC5Kcy50KEpzX29mX29jYW1sLkZpbGUuZmlsZSkpXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChvcHRpb24oc3RyaW5nKSlcbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoaW50KVxuICAvKiBlZGl0b3IgKi9cbiAgfCBUQUJcbiAgfCBTYXZlXG4gIHwgUGVyZm9ybUFjdGlvbihBY3Rpb24udClcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IEN1dFxuICB8IENvcHlcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKERpcmVjdGlvbi50KVxuICB8IEJlbmNobWFyayhiZW5jaG1hcmtfYWN0aW9uKVxuICB8IEFzc2lzdGFudChhZ2VudF9hY3Rpb24pXG4gIHwgVG9nZ2xlU3RlcHBlcihNb2RlbFJlc3VsdHMuS2V5LnQpXG4gIHwgU3RlcHBlckFjdGlvbihNb2RlbFJlc3VsdHMuS2V5LnQsIHN0ZXBwZXJfYWN0aW9uKVxuICB8IFVwZGF0ZUV2YWxzKFdvcmtlclNlcnZlci5SZXNwb25zZS50KVxuICB8IFVwZGF0ZVJlc3VsdChNb2RlbFJlc3VsdHMudCk7XG5cbm1vZHVsZSBGYWlsdXJlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBDYW50UmVzZXRcbiAgICB8IENhbnRTdWdnZXN0XG4gICAgfCBGYWlsZWRUb0xvYWRcbiAgICB8IEZhaWxlZFRvU3dpdGNoXG4gICAgfCBGYWlsZWRUb1BlcmZvcm0oQWN0aW9uLkZhaWx1cmUudClcbiAgICB8IEV4Y2VwdGlvbihzdHJpbmcpO1xufTtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgaW5jbHVkZSBSZXN1bHQ7XG4gIHR5cGUgdCgnc3VjY2VzcykgPSBSZXN1bHQudCgnc3VjY2VzcywgRmFpbHVyZS50KTtcbn07XG5cbmxldCBpc19lZGl0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+IEFjdGlvbi5pc19lZGl0KGEpXG4gIHwgU2V0KHNfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IE1vZGUoXykgPT4gdHJ1ZVxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBBc3Npc3RcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgRXhwbGFpblRoaXMoXylcbiAgICB8IER5bmFtaWNzXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IENvbnRleHRJbnNwZWN0b3JcbiAgICB8IEluc3RydWN0b3JNb2RlXG4gICAgfCBFdmFsdWF0aW9uKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IFNldE1ldGEobWV0YV9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChtZXRhX2FjdGlvbikge1xuICAgIHwgTW91c2Vkb3duXG4gICAgfCBNb3VzZXVwXG4gICAgfCBTaG93QmFja3BhY2tUYXJnZXRzKF8pXG4gICAgfCBGb250TWV0cmljcyhfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBDdXRcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShfKVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShfKVxuICB8IFRvZ2dsZVN0ZXBwZXIoXylcbiAgfCBTdGVwcGVyQWN0aW9uKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgQXNzaXN0YW50KEFjY2VwdFN1Z2dlc3Rpb24pXG4gIHwgUmVzZXQgPT4gdHJ1ZVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFVwZGF0ZUV2YWxzKF8pXG4gIHwgTWFrZUFjdGl2ZShfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgU2F2ZVxuICB8IENvcHlcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRGVidWdDb25zb2xlKF8pXG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBUQUJcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKSA9PiBmYWxzZTtcblxubGV0IHJlZXZhbHVhdGVfcG9zdF91cGRhdGU6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gQWN0aW9uLmlzX2VkaXQoYSlcbiAgfCBTZXQoc19hY3Rpb24pID0+XG4gICAgc3dpdGNoIChzX2FjdGlvbikge1xuICAgIHwgQXNzaXN0XG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IENvbnRleHRJbnNwZWN0b3JcbiAgICB8IEJlbmNobWFya1xuICAgIHwgRXhwbGFpblRoaXMoXylcbiAgICB8IEV2YWx1YXRpb24oXG4gICAgICAgIFNob3dDYXNlQ2xhdXNlcyB8IFNob3dGbkJvZGllcyB8IFNob3dDYXN0cyB8IFNob3dSZWNvcmQgfCBTaG93Rml4cG9pbnRzIHxcbiAgICAgICAgU2hvd0xvb2t1cHMgfFxuICAgICAgICBTaG93RmlsdGVycyB8XG4gICAgICAgIFNob3dTZXR0aW5ncyB8XG4gICAgICAgIFNob3dIaWRkZW5TdGVwcyxcbiAgICAgICkgPT5cbiAgICAgIGZhbHNlXG4gICAgfCBFbGFib3JhdGVcbiAgICB8IER5bmFtaWNzXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgTW9kZShfKSA9PiB0cnVlXG4gICAgfVxuICB8IFNldE1ldGEobWV0YV9hY3Rpb24pID0+XG4gICAgc3dpdGNoIChtZXRhX2FjdGlvbikge1xuICAgIHwgTW91c2Vkb3duXG4gICAgfCBNb3VzZXVwXG4gICAgfCBTaG93QmFja3BhY2tUYXJnZXRzKF8pXG4gICAgfCBGb250TWV0cmljcyhfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbikgPT4gdHJ1ZVxuICB8IEFzc2lzdGFudChQcm9tcHQoXykpID0+IGZhbHNlXG4gIHwgTW92ZVRvTmV4dEhvbGUoXylcbiAgfCBTYXZlXG4gIHwgQ29weVxuICB8IEluaXRJbXBvcnRBbGwoXylcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFVwZGF0ZUV2YWxzKF8pXG4gIHwgTWFrZUFjdGl2ZShfKVxuICB8IERlYnVnQ29uc29sZShfKVxuICB8IFRBQlxuICB8IEJlbmNobWFyayhfKSA9PiBmYWxzZVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEZvcndhcmQoXykgfCBTdGVwQmFja3dhcmQgfCBIaWRlU3RlcHBlcilcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgUmVzZXRcbiAgfCBDdXRcbiAgfCBVbmRvXG4gIHwgUmVkbyA9PiB0cnVlO1xuXG5sZXQgc2hvdWxkX3Njcm9sbF90b19jYXJldCA9XG4gIGZ1blxuICB8IFNldChzX2FjdGlvbikgPT5cbiAgICBzd2l0Y2ggKHNfYWN0aW9uKSB7XG4gICAgfCBNb2RlKF8pID0+IHRydWVcbiAgICB8IENhcHRpb25zXG4gICAgfCBTZWNvbmRhcnlJY29uc1xuICAgIHwgU3RhdGljc1xuICAgIHwgQXNzaXN0XG4gICAgfCBFbGFib3JhdGVcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBEeW5hbWljc1xuICAgIHwgQmVuY2htYXJrXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgRXZhbHVhdGlvbihfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBTZXRNZXRhKG1ldGFfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAobWV0YV9hY3Rpb24pIHtcbiAgICB8IEZvbnRNZXRyaWNzKF8pID0+IHRydWVcbiAgICB8IE1vdXNlZG93blxuICAgIHwgTW91c2V1cFxuICAgIHwgU2hvd0JhY2twYWNrVGFyZ2V0cyhfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFVwZGF0ZUV2YWxzKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEJhY2t3YXJkIHwgU3RlcEZvcndhcmQoXykgfCBIaWRlU3RlcHBlcikgPT4gZmFsc2VcbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbikgPT4gdHJ1ZVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBNYWtlQWN0aXZlKF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBSZXNldFxuICB8IENvcHlcbiAgfCBDdXRcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVEFCID0+IHRydWVcbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+XG4gICAgc3dpdGNoIChhKSB7XG4gICAgfCBNb3ZlKF8pXG4gICAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICAgIHwgSnVtcChfKVxuICAgIHwgU2VsZWN0KFJlc2l6ZShfKSB8IFRlcm0oXykgfCBTbWFydCB8IFRpbGUoXykpXG4gICAgfCBEZXN0cnVjdChfKVxuICAgIHwgSW5zZXJ0KF8pXG4gICAgfCBQaWNrX3VwXG4gICAgfCBQdXRfZG93blxuICAgIHwgUm90YXRlQmFja3BhY2tcbiAgICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KF8pXG4gICAgfCBQYXN0ZShfKSA9PiB0cnVlXG4gICAgfCBVbnNlbGVjdChfKVxuICAgIHwgU2VsZWN0KEFsbClcbiAgICB8IFN1Z2dlc3QoXylcbiAgICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZVxuICAgIH1cbiAgfCBTYXZlXG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgRGVidWdDb25zb2xlKF8pXG4gIHwgQmVuY2htYXJrKF8pID0+IGZhbHNlO1xuIiwib3BlbiBIYXozbGNvcmU7XG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBhc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3Rpb25zID1cbiAgICAoXG4gICAgICB7c2V0dGluZ3MsIHVpX3N0YXRlOiB7YWN0aXZlX2VkaXRvcjogc2VsZWN0aW9uLCBffSwgX30gYXMgbW9kZWw6IE1vZGVsLnQsXG4gICAgICBhZ2VudF9hY3Rpb24sXG4gICAgKVxuICAgIDogbGlzdChBY3Rpb24udCkgPT5cbiAge1xuICAgIGxldCogc2VsZWN0aW9uID0gc2VsZWN0aW9uO1xuICAgIGxldCsgZWRpdG9yID1cbiAgICAgIEVkaXRvcnMuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBtb2RlbC5lZGl0b3JzLCBtb2RlbC5yZXN1bHRzKTtcbiAgICBsZXQgeiA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgc3dpdGNoIChhZ2VudF9hY3Rpb24pIHtcbiAgICB8IFByb21wdChUeURpKSA9PlxuICAgICAgbGV0IGN0eF9pbml0ID0gRWRpdG9ycy5nZXRfY3R4X2luaXQofnNldHRpbmdzLCBtb2RlbC5lZGl0b3JzKTtcbiAgICAgIHN3aXRjaCAoVHlEaS5zdWdnZXN0KH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCB+Y3R4PWN0eF9pbml0LCB6KSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUoc3VnZ2VzdGlvbikgPT4gW0FjdGlvbi5TdWdnZXN0KHN1Z2dlc3Rpb24pXVxuICAgICAgfTtcbiAgICB8IEFjY2VwdFN1Z2dlc3Rpb24gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJhY2NlcHRpbmcgc3VnZ2VzdGlvblwiKTtcbiAgICAgIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSkge1xuICAgICAgfCBOb3JtYWwgPT4gW11cbiAgICAgIHwgQnVmZmVyKFBhcnNlZCkgPT4gW1Vuc2VsZWN0KFNvbWUoUmlnaHQpKV1cbiAgICAgIHwgQnVmZmVyKFVucGFyc2VkKSA9PlxuICAgICAgICBzd2l0Y2ggKFR5RGkuZ2V0X2J1ZmZlcih6KSkge1xuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgLyogVGhpcyBjYXNlIHNob3VsZG4ndCBoYXBwZW4gaWYgd2UgYXNzdW1lIHRoYXQgd2UgcHJldmFsaWRhdGVcbiAgICAgICAgICogZXZlcnl0aGluZyB3ZSBwdXQgaW4gdGhlIHVucGFyc2VkIGJ1ZmZlciovXG4gICAgICAgIHwgU29tZShjb21wbGV0aW9uKSB3aGVuIFN0cmluZy5jb250YWlucyhjb21wbGV0aW9uLCAnICcpID0+XG4gICAgICAgICAgLyogU2xpZ2h0bHkgaGFja3kuIFdlIGFzc3VtZSB0aGF0IGlmIGEgY29tcGxldGlvbiBzdHJpbmcgaGFzXG4gICAgICAgICAgICogc3BhY2VzIGluIGl0LCB0aGF0IG1lYW5zIGl0IHdpbGwgaGF2ZSBhIGhvbGUgaW4gaXQuIFRoaXNcbiAgICAgICAgICAgKiBpcyBhIG5vbi1lc3NlbnRpYWwgaW52YXJpYW50IGN1cnJlbnRseSBtYWludGFpbmVkIGluIFR5RGkuXG4gICAgICAgICAgICogSW4gc3VjaCBhIGNhc2UsIHdlIGluc2VydCB0aGUgY29tcGxldGlvbiBhcyBub3JtYWwgYnlcbiAgICAgICAgICAgKiBwYXN0aW5nLCB0aGVuIHJldHVybiB0byB0aGUgYmVnaW5uaW5nIGFuZCBhZHZhbmNlIHRvIHRoZVxuICAgICAgICAgICAqIGZpcnN0IGhvbGUuIFRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCBpZiBjb21wbGV0aW9ucyBhcmVcbiAgICAgICAgICAgKiByZWZhY3RvcmVkIHRvIHVzZSBhIG1vcmUgc3RydWN0dXJlZCBidWZmZXIgZm9ybWF0ICovXG4gICAgICAgICAgbW9kdWxlIE0gPSAodmFsIEVkaXRvci5NZXRhLm1vZHVsZV9vZl90KGVkaXRvci5zdGF0ZS5tZXRhKSk7XG4gICAgICAgICAgbGV0IHN0YXJ0ID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQsIHopO1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIFBhc3RlKEFzc2lzdGFudEV4cGFuZGVyLnRyaW0oY29tcGxldGlvbikpLFxuICAgICAgICAgICAgTW92ZShHb2FsKFBvaW50KHN0YXJ0KSkpLFxuICAgICAgICAgICAgTW92ZVRvTmV4dEhvbGUoUmlnaHQpLFxuICAgICAgICAgICAgTW92ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfCBTb21lKGNvbXBsZXRpb24pID0+IFtQYXN0ZShBc3Npc3RhbnRFeHBhbmRlci50cmltKGNvbXBsZXRpb24pKV1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB9XG4gIHw+IE9wdGlvbi50b19saXN0XG4gIHw+IExpc3QuZmxhdHRlbjtcbiIsImxldCBzYW1wbGVfMSA9IHt8IyBIYXplbCBMYW5ndWFnZSBRdWljayBSZWZlcmVuY2UgI1xuXG4jIFJlY3Vyc2l2ZSBGdW5jdGlvbnMgKGFycm93IHR5cGUgYW5ub3RhdGlvbiByZXF1aXJlZCkgI1xubGV0IGRvdWJsZV9yZWN1cnNpdmVseSA6IEludCAtPiBJbnQgPVxuICBmdW4gbiAtPlxuICAgIGlmIG4gPT0gMCB0aGVuIDBcbiAgICBlbHNlIGRvdWJsZV9yZWN1cnNpdmVseShuIC0gMSkgKyAyXG5pblxuXG4jIExpc3RzICNcbmxldCBlbXB0eV9saXN0IDogW0ludF0gPSBbXSBpblxubGV0IG5vbl9lbXB0eV9saXN0IDogW0ludF0gPSAxOjoyOjozOjpbXSBpblxubGV0IGxpc3RfbGl0ZXJhbHMgOiBbSW50XSA9IFsxLCAyLCAzXSBpblxubGV0IGxlbmd0aCA6IFtJbnRdIC0+IEludCA9XG4gIGZ1biB4cyAtPlxuICAgIGNhc2UgeHNcbiAgICAgIHwgW10gPT4gMFxuICAgICAgfCBoZDo6dGwgPT4gMSArIGxlbmd0aCh0bClcbiAgICBlbmRcbmluXG5sZXQgaGFzX2F0X2xlYXN0X3R3b19lbGVtZW50cyA6IFtJbnRdIC0+IEJvb2wgPVxuICBmdW4geHMgLT5cbiAgICBjYXNlIHhzXG4gICAgICB8IFtdID0+IGZhbHNlXG4gICAgICB8IGhkOjpbXSA9PiBmYWxzZVxuICAgICAgfCBhOjpiOjpbXSA9PiB0cnVlXG4gICAgZW5kXG5pblxuXG4jIFN0cmluZ3MgI1xubGV0IHN0cmluZ19saXRzID0gXCJIZWxsbywgd29ybGQhXCIgaW5cbmxldCBzdHJpbmdfZXF1YWxpdHkgPSBzdHJpbmdfbGl0cyAkPT0gXCJIZWxsbywgd29ybGQhXCIgaW5cblxuIyBOb24tZW1wdHkgaG9sZXMgYXJlIHRoZSByZWQgZG90dGVkIGJveGVzIGFyb3VuZCBlcnJvcnMgI1xuIyAoeW91IGNhbiBzdGlsbCBydW4gcHJvZ3JhbXMgd2l0aCBub24tZW1wdHkgaG9sZXMpICNcbmxldCBub25fZW1wdHlfaG9sZSA6IEludCA9IHRydWUgaW5cblxuMiArIDJcbnx9O1xuXG5sZXQgc3RyX3RvX2luc2VydHMgPSAoc3RyOiBzdHJpbmcpOiBsaXN0KFVwZGF0ZUFjdGlvbi50KSA9PlxuICBMaXN0LmluaXQoXG4gICAgU3RyaW5nLmxlbmd0aChzdHIpLFxuICAgIGkgPT4ge1xuICAgICAgbGV0IGMgPSBTdHJpbmcuc3ViKHN0ciwgaSwgMSk7XG4gICAgICBsZXQgYyA9IGMgPT0gXCJcXG5cIiA/IEhhejNsY29yZS5Gb3JtLmxpbmVicmVhayA6IGM7XG4gICAgICBVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihJbnNlcnQoYykpO1xuICAgIH0sXG4gICk7XG5cbmxldCBhY3Rpb25zXzEgPSBzdHJfdG9faW5zZXJ0cyhzYW1wbGVfMSkgQCBbQmVuY2htYXJrKEZpbmlzaCldO1xuXG5sZXQgdGltZSA9IHJlZigtMS4wKTtcblxubGV0IHN0YXJ0ID0gKCk6IHVuaXQgPT4ge1xuICB0aW1lIDo9IEpzVXRpbC50aW1lc3RhbXAoKTtcbiAgcHJpbnRfZW5kbGluZShcIkJlbmNobWFyazogU3RhcnRpbmdcIik7XG59O1xuXG5sZXQgZmluaXNoID0gKCk6IHVuaXQgPT4ge1xuICBzd2l0Y2ggKHRpbWVeKSB7XG4gIHwgKC0xLjApID0+XG4gICAgUHJpbnRmLnNwcmludGYoXCJCZW5jaG1hcms6IEVycm9yOiBObyBiZW5jaG1hcmsgcnVubmluZ1wiKSB8PiBwcmludF9lbmRsaW5lXG5cbiAgfCBfID0+XG4gICAgbGV0IGVsYXBzZWQgPSAoSnNVdGlsLnRpbWVzdGFtcCgpIC0uIHRpbWVeKSAvLiAxMDAwLjtcbiAgICB0aW1lIDo9ICgtMS4wKTtcbiAgICBQcmludGYuc3ByaW50ZihcIkJlbmNobWFyazogRmluaXNoZWQ6IHRpbWU6ICVmIHNlY29uZHNcIiwgZWxhcHNlZClcbiAgICB8PiBwcmludF9lbmRsaW5lO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBUaGlzIGlzIGEgcGxhY2UgdG8gYWRkIGFkLWhvYyBkZWJ1Z2dpbmcgcHJpbnQgYWN0aW9ucy5cbiAgIEl0IHdhcyBvcmlnaW5hbGx5IGRpcmVjdGx5IGluIEtleWJvYXJkLCBidXQgdGhhdCBhZGRlZCBhIGhhbmRsZXJcbiAgIGRlcGVuZGVuY3kgb24gdGhlIG1vZGVsLCB3aGljaCBpcyB0ZWNobmljYWxseSBhZ2FpbnN0IGFyY2hpdGVjdHVyZSAqL1xuXG5sZXQgcHJpbnQgPVxuICAgIChcbiAgICAgIHtzZXR0aW5ncywgZWRpdG9ycywgdWlfc3RhdGU6IHthY3RpdmVfZWRpdG9yLCBffSwgcmVzdWx0cywgX306IE1vZGVsLnQsXG4gICAgICBrZXk6IHN0cmluZyxcbiAgICApXG4gICAgOiB1bml0ID0+IHtcbiAgc3dpdGNoIChhY3RpdmVfZWRpdG9yKSB7XG4gIHwgU29tZShhY3RpdmVfZWRpdG9yKSA9PlxuICAgIGxldCBlZGl0b3IgPVxuICAgICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb249YWN0aXZlX2VkaXRvciwgZWRpdG9ycywgcmVzdWx0cyk7XG4gICAgc3dpdGNoIChlZGl0b3IpIHtcbiAgICB8IFNvbWUoZWRpdG9yKSA9PlxuICAgICAgbGV0IHogPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgICAgbGV0IHByaW50ID0gc3RyID0+IHN0ciB8PiBwcmludF9lbmRsaW5lO1xuICAgICAgbGV0IHNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgICBsZXQgdGVybSA9IHogPT4geiB8PiBNYWtlVGVybS5mcm9tX3ppcF9mb3JfdmlldyB8PiBmc3Q7XG4gICAgICBsZXQgY3R4X2luaXQgPSBFZGl0b3JzLmdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIHwgXCJGMVwiID0+IHogfD4gWmlwcGVyLnNob3cgfD4gcHJpbnRcbiAgICAgIHwgXCJGMlwiID0+IHogfD4gWmlwcGVyLnVuc2VsZWN0X2FuZF96aXAgfD4gU2VnbWVudC5zaG93IHw+IHByaW50XG4gICAgICB8IFwiRjNcIiA9PiB6IHw+IHRlcm0gfD4gRXhwLnNob3cgfD4gcHJpbnRcbiAgICAgIHwgXCJGNFwiID0+XG4gICAgICAgIHpcbiAgICAgICAgfD4gdGVybVxuICAgICAgICB8PiBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0KVxuICAgICAgICB8PiBTdGF0aWNzLk1hcC5zaG93XG4gICAgICAgIHw+IHByaW50XG4gICAgICB8IFwiRjVcIiA9PlxuICAgICAgICBsZXQgZW52X2luaXQgPSBFZGl0b3JzLmdldF9lbnZfaW5pdCh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICAgICAgICBJbnRlcmZhY2UuZXZhbF96KH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCB+ZW52X2luaXQsIH5jdHhfaW5pdCwgeilcbiAgICAgICAgfD4gUHJvZ3JhbVJlc3VsdC5zaG93XG4gICAgICAgIHw+IHByaW50O1xuICAgICAgfCBcIkY2XCIgPT5cbiAgICAgICAgbGV0IGluZGV4ID0gSW5kaWNhdGVkLmluZGV4KHopO1xuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICB6IHw+IHRlcm0gfD4gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncy5jb3JlLCBjdHhfaW5pdCk7XG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgICAgfCBTb21lKGluZGV4KSA9PlxuICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLklkLk1hcC5maW5kX29wdChpbmRleCwgbWFwKSkge1xuICAgICAgICAgIHwgU29tZShjaSkgPT4gcHJpbnQoSW5mby5zaG93KGNpKSlcbiAgICAgICAgICB8IE5vbmUgPT4gcHJpbnQoXCJERUJVRzogTm8gQ0kgZm91bmQgZm9yIGluZGV4XCIpXG4gICAgICAgICAgfVxuICAgICAgICB8IE5vbmUgPT4gcHJpbnQoXCJERUJVRzogTm8gaW5kaWNhdGVkIGluZGV4XCIpXG4gICAgICAgIH07XG5cbiAgICAgIHwgXyA9PiBwcmludChcIkRFQlVHOiBObyBhY3Rpb24gZm9yIGtleTogXCIgKysga2V5KVxuICAgICAgfTtcbiAgICB8IE5vbmUgPT4gcHJpbnRfZW5kbGluZShcIkRFQlVHOiBObyBhY3RpdmUgZWRpdG9yXCIpXG4gICAgfTtcbiAgfCBOb25lID0+IHByaW50X2VuZGxpbmUoXCJERUJVRzogTm8gYWN0aXZlIGVkaXRvclwiKVxuICB9O1xufTtcbiIsIi8qIExvZ2dpbmcgc3lzdGVtIGZvciBhY3Rpb25zLiBQZXJzaXN0cyBsb2cgdmlhIEluZGV4ZWREQiAqL1xuXG5vcGVuIFNleHBsaWIuU3RkO1xuXG5sZXQgaXNfYWN0aW9uX2xvZ2dlZDogVXBkYXRlQWN0aW9uLnQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IFNldE1ldGEoXylcbiAgfCBTYXZlXG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBGaW5pc2hJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgQmVuY2htYXJrKF8pXG4gIHwgVXBkYXRlUmVzdWx0KF8pXG4gIHwgVXBkYXRlRXZhbHMoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXykgPT4gZmFsc2VcbiAgfCBSZXNldFxuICB8IFRBQlxuICB8IEFzc2lzdGFudChfKVxuICB8IFNldChfKVxuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShfKVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShfKVxuICB8IE1ha2VBY3RpdmUoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBSZXBhcnNlQ3VycmVudEVkaXRvclxuICB8IFBlcmZvcm1BY3Rpb24oXylcbiAgfCBDdXRcbiAgfCBDb3B5XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IFRvZ2dsZVN0ZXBwZXIoXylcbiAgfCBTdGVwcGVyQWN0aW9uKF8sIFN0ZXBGb3J3YXJkKF8pIHwgU3RlcEJhY2t3YXJkIHwgSGlkZVN0ZXBwZXIpXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKSA9PiB0cnVlO1xuXG5tb2R1bGUgREIgPSB7XG4gIG9wZW4gRXpqc19pZGI7XG5cbiAgbW9kdWxlIFN0b3JlID0gRXpqc19pZGIuU3RvcmUoU3RyaW5nVHIsIFN0cmluZ1RyKTtcblxuICB0eXBlIGRiID0gRXpqc19taW4udChUeXBlcy5pREJEYXRhYmFzZSk7XG5cbiAgbGV0IGRiX25hbWUgPSBcImhhemVsX2RiXCI7XG4gIGxldCB0YWJsZV9uYW1lID0gXCJsb2dcIjtcblxuICBsZXQga3Zfc3RvcmUgPSAoZGI6IGRiKTogU3RvcmUuc3RvcmUgPT5cbiAgICBTdG9yZS5zdG9yZSh+bW9kZT1SRUFEV1JJVEUsIGRiLCB0YWJsZV9uYW1lKTtcblxuICBsZXQgd2l0aF9kYiA9IChmKTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXzogdW5pdCA9PiBwcmludF9lbmRsaW5lKFwiRVJST1I6IExvZy5JREJLVi5vcGVuXCIpO1xuICAgIGxldCB1cGdyYWRlID0gKGRiOiBkYiwgZTogZGJfdXBncmFkZSk6IHVuaXQgPT5cbiAgICAgIGUubmV3X3ZlcnNpb24gPj0gMSAmJiBlLm9sZF92ZXJzaW9uID09IDBcbiAgICAgICAgPyBpZ25vcmUoU3RvcmUuY3JlYXRlKGRiLCB0YWJsZV9uYW1lKSkgOiAoKTtcbiAgICBvcGVuREIofnVwZ3JhZGUsIH5lcnJvciwgfnZlcnNpb249MSwgZGJfbmFtZSwgZGIgPT4gZihkYikpO1xuICB9O1xuXG4gIGxldCBhZGQgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB1bml0ID0+XG4gICAgd2l0aF9kYihkYiA9PlxuICAgICAgU3RvcmUuYWRkKH5rZXksIH5jYWxsYmFjaz1fa2V5ID0+ICgpLCBrdl9zdG9yZShkYiksIHZhbHVlKVxuICAgICk7XG5cbiAgbGV0IGdldCA9IChrZXk6IHN0cmluZywgZjogb3B0aW9uKHN0cmluZykgPT4gdW5pdCk6IHVuaXQgPT4ge1xuICAgIGxldCBlcnJvciA9IF8gPT4gUHJpbnRmLnByaW50ZihcIkVSUk9SOiBMb2cuSURCS1YuZ2V0XCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuZ2V0KH5lcnJvciwga3Zfc3RvcmUoZGIpLCBmLCBLKGtleSkpKTtcbiAgfTtcblxuICBsZXQgZ2V0X2FsbCA9IChmOiBsaXN0KHN0cmluZykgPT4gdW5pdCk6IHVuaXQgPT4ge1xuICAgIGxldCBlcnJvciA9IF8gPT4gUHJpbnRmLnByaW50ZihcIkVSUk9SOiBMb2cuSURCS1YuZ2V0X2FsbFwiKTtcbiAgICB3aXRoX2RiKGRiID0+IFN0b3JlLmdldF9hbGwofmVycm9yLCBrdl9zdG9yZShkYiksIGYpKTtcbiAgfTtcblxuICBsZXQgY2xlYXJfYW5kID0gKGNhbGxiYWNrKTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5jbGVhclwiKTtcbiAgICB3aXRoX2RiKGRiID0+IFN0b3JlLmNsZWFyKH5lcnJvciwgfmNhbGxiYWNrLCBrdl9zdG9yZShkYikpKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBFbnRyeSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxuICB0eXBlIHQgPSAoTW9kZWwudGltZXN0YW1wLCBVcGRhdGVBY3Rpb24udCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxuICB0eXBlIHMgPSBsaXN0KHQpO1xuXG4gIGxldCBtayA9ICh1cGRhdGUpOiB0ID0+IHtcbiAgICAoSnNVdGlsLnRpbWVzdGFtcCgpLCB1cGRhdGUpO1xuICB9O1xuXG4gIGxldCBzYXZlID0gKCh0cywgYWN0aW9uKTogdCkgPT5cbiAgICBEQi5hZGQoXG4gICAgICBQcmludGYuc3ByaW50ZihcIiUuMGZcIiwgdHMpLFxuICAgICAgKHRzLCBhY3Rpb24pIHw+IHNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nLFxuICAgICk7XG59O1xuXG5sZXQgaW1wb3J0ID0gKGRhdGE6IHN0cmluZyk6IHVuaXQgPT5cbiAgLyogU2hvdWxkIGJlIGZpbmUgdG8gZmlyZSBzYXZlcyBjb25jdXJyZW50bHk/ICovXG4gIERCLmNsZWFyX2FuZCgoKSA9PlxuICAgIHRyeShcbiAgICAgIGRhdGFcbiAgICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICAgIHw+IEVudHJ5LnNfb2Zfc2V4cFxuICAgICAgfD4gTGlzdC5pdGVyKEVudHJ5LnNhdmUpXG4gICAgKSB7XG4gICAgfCBfID0+IFByaW50Zi5wcmludGYoXCJMb2cuRW50cnkuaW1wb3J0OiBEZXNlcmlhbGl6YXRpb24gZXJyb3JcIilcbiAgICB9XG4gICk7XG5cbmxldCB1cGRhdGUgPSAoYWN0aW9uOiBVcGRhdGVBY3Rpb24udCk6IHVuaXQgPT5cbiAgaWYgKGlzX2FjdGlvbl9sb2dnZWQoYWN0aW9uKSkge1xuICAgIEVudHJ5LnNhdmUoRW50cnkubWsoYWN0aW9uKSk7XG4gIH07XG5cbmxldCBnZXRfYW5kID0gKGY6IHN0cmluZyA9PiB1bml0KTogdW5pdCA9PlxuICBEQi5nZXRfYWxsKGVudHJpZXMgPT4gZihcIihcIiArKyBTdHJpbmcuY29uY2F0KFwiIFwiLCBlbnRyaWVzKSArKyBcIilcIikpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhbGwgPSB7XG4gIHNldHRpbmdzOiBzdHJpbmcsXG4gIGV4cGxhaW5UaGlzTW9kZWw6IHN0cmluZyxcbiAgc2NyYXRjaDogc3RyaW5nLFxuICBleGVyY2lzZTogc3RyaW5nLFxuICBkb2N1bWVudGF0aW9uOiBzdHJpbmcsXG4gIGxvZzogc3RyaW5nLFxufTtcblxuLy8gZmFsbGJhY2sgZm9yIHNhdmVkIHN0YXRlIHByaW9yIHRvIHJlbGVhc2Ugb2YgbGFuZyBkb2MgaW4gNDkwRjIyXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFsbF9mMjIgPSB7XG4gIHNldHRpbmdzOiBzdHJpbmcsXG4gIHNjcmF0Y2g6IHN0cmluZyxcbiAgZXhlcmNpc2U6IHN0cmluZyxcbiAgbG9nOiBzdHJpbmcsXG59O1xuXG5sZXQgbWtfYWxsID0gKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpID0+IHtcbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuZXhwb3J0KCk7XG4gIGxldCBleHBsYWluVGhpc01vZGVsID0gU3RvcmUuRXhwbGFpblRoaXNNb2RlbC5leHBvcnQoKTtcbiAgbGV0IHNjcmF0Y2ggPSBTdG9yZS5TY3JhdGNoLmV4cG9ydCh+c2V0dGluZ3M9SGF6M2xjb3JlLkNvcmVTZXR0aW5ncy5vZmYpO1xuICBsZXQgZG9jdW1lbnRhdGlvbiA9XG4gICAgU3RvcmUuRG9jdW1lbnRhdGlvbi5leHBvcnQofnNldHRpbmdzPUhhejNsY29yZS5Db3JlU2V0dGluZ3Mub2ZmKTtcbiAgbGV0IGV4ZXJjaXNlID1cbiAgICBTdG9yZS5FeGVyY2lzZS5leHBvcnQoXG4gICAgICB+c3BlY3M9RXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMsXG4gICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICk7XG4gIHtzZXR0aW5ncywgZXhwbGFpblRoaXNNb2RlbCwgc2NyYXRjaCwgZG9jdW1lbnRhdGlvbiwgZXhlcmNpc2UsIGxvZ307XG59O1xuXG5sZXQgZXhwb3J0X2FsbCA9ICh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKSA9PiB7XG4gIG1rX2FsbCh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKSB8PiB5b2pzb25fb2ZfYWxsO1xufTtcblxubGV0IGltcG9ydF9hbGwgPSAoZGF0YSwgfnNwZWNzKSA9PiB7XG4gIGxldCBhbGwgPVxuICAgIHRyeShkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IGFsbF9vZl95b2pzb24pIHtcbiAgICB8IF8gPT5cbiAgICAgIGxldCBhbGxfZjIyID0gZGF0YSB8PiBZb2pzb24uU2FmZS5mcm9tX3N0cmluZyB8PiBhbGxfZjIyX29mX3lvanNvbjtcbiAgICAgIHtcbiAgICAgICAgc2V0dGluZ3M6IGFsbF9mMjIuc2V0dGluZ3MsXG4gICAgICAgIHNjcmF0Y2g6IGFsbF9mMjIuc2NyYXRjaCxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogXCJcIixcbiAgICAgICAgZXhlcmNpc2U6IGFsbF9mMjIuZXhlcmNpc2UsXG4gICAgICAgIGxvZzogYWxsX2YyMi5sb2csXG4gICAgICAgIGV4cGxhaW5UaGlzTW9kZWw6IFwiXCIsXG4gICAgICB9O1xuICAgIH07XG4gIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmltcG9ydChhbGwuc2V0dGluZ3MpO1xuICBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmltcG9ydChhbGwuZXhwbGFpblRoaXNNb2RlbCk7XG4gIGxldCBpbnN0cnVjdG9yX21vZGUgPSBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gIFN0b3JlLlNjcmF0Y2guaW1wb3J0KH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLCBhbGwuc2NyYXRjaCk7XG4gIFN0b3JlLkV4ZXJjaXNlLmltcG9ydChhbGwuZXhlcmNpc2UsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSk7XG4gIExvZy5pbXBvcnQoYWxsLmxvZyk7XG59O1xuIiwidHlwZSB0ID0gdW5pdDtcbmxldCBpbml0ID0gKCkgPT4gKCk7XG4iLCJvcGVuIEhhejNsY29yZTtcblxuaW5jbHVkZSBVcGRhdGVBY3Rpb247IC8vIHRvIHByZXZlbnQgY2lyY3VsYXJpdHlcblxubGV0IHVwZGF0ZV9zZXR0aW5ncyA9XG4gICAgKGE6IHNldHRpbmdzX2FjdGlvbiwge3NldHRpbmdzLCBffSBhcyBtb2RlbDogTW9kZWwudCk6IE1vZGVsLnQgPT5cbiAgc3dpdGNoIChhKSB7XG4gIHwgU3RhdGljcyA9PlxuICAgIC8qIE5PVEU6IGR5bmFtaWNzIGRlcGVuZHMgb24gc3RhdGljcywgc28gaWYgZHluYW1pY3MgaXMgb24gYW5kXG4gICAgICAgd2UncmUgdHVybmluZyBzdGF0aWNzIG9mZiwgdHVybiBkeW5hbWljcyBvZmYgYXMgd2VsbCAqL1xuICAgIHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogIXNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBlbGFib3JhdGU6IHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlLFxuICAgICAgICAgIGR5bmFtaWNzOiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzICYmIHNldHRpbmdzLmNvcmUuZHluYW1pY3MsXG4gICAgICAgICAgZXZhbHVhdGlvbjogc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIHwgRWxhYm9yYXRlID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5lbGFib3JhdGUgfHwgc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogc2V0dGluZ3MuY29yZS5hc3Npc3QsXG4gICAgICAgICAgZWxhYm9yYXRlOiAhc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgICAgZHluYW1pY3M6IHNldHRpbmdzLmNvcmUuZHluYW1pY3MsXG4gICAgICAgICAgZXZhbHVhdGlvbjogc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIHwgRHluYW1pY3MgPT4ge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzIHx8IHNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBhc3Npc3Q6IHNldHRpbmdzLmNvcmUuYXNzaXN0LFxuICAgICAgICAgIGVsYWJvcmF0ZTogc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgICAgZHluYW1pY3M6ICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICAgIGV2YWx1YXRpb246IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB8IEFzc2lzdCA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgc3RhdGljczogIXNldHRpbmdzLmNvcmUuYXNzaXN0IHx8IHNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBhc3Npc3Q6ICFzZXR0aW5ncy5jb3JlLmFzc2lzdCxcbiAgICAgICAgICBlbGFib3JhdGU6IHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlLFxuICAgICAgICAgIGR5bmFtaWNzOiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICAgIGV2YWx1YXRpb246IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB8IEV2YWx1YXRpb24odSkgPT5cbiAgICBsZXQgZXZhbHVhdGlvbiA9IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbjtcbiAgICBsZXQgZXZhbHVhdGlvbicgPSB7XG4gICAgICBzd2l0Y2ggKHUpIHtcbiAgICAgIHwgU2hvd1JlY29yZCA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzdGVwcGVyX2hpc3Rvcnk6ICFldmFsdWF0aW9uLnN0ZXBwZXJfaGlzdG9yeSxcbiAgICAgICAgfVxuICAgICAgfCBTaG93Q2FzZUNsYXVzZXMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19jYXNlX2NsYXVzZXM6ICFldmFsdWF0aW9uLnNob3dfY2FzZV9jbGF1c2VzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dGbkJvZGllcyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2ZuX2JvZGllczogIWV2YWx1YXRpb24uc2hvd19mbl9ib2RpZXMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0Nhc3RzID0+IHsuLi5ldmFsdWF0aW9uLCBzaG93X2Nhc3RzOiAhZXZhbHVhdGlvbi5zaG93X2Nhc3RzfVxuICAgICAgfCBTaG93Rml4cG9pbnRzID0+IHtcbiAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgIHNob3dfZml4cG9pbnRzOiAhZXZhbHVhdGlvbi5zaG93X2ZpeHBvaW50cyxcbiAgICAgICAgfVxuICAgICAgfCBTaG93TG9va3VwcyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2xvb2t1cF9zdGVwczogIWV2YWx1YXRpb24uc2hvd19sb29rdXBfc3RlcHMsXG4gICAgICAgIH1cbiAgICAgIHwgU2hvd0ZpbHRlcnMgPT4ge1xuICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgc2hvd19zdGVwcGVyX2ZpbHRlcnM6ICFldmFsdWF0aW9uLnNob3dfc3RlcHBlcl9maWx0ZXJzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X3NldHRpbmdzOiAhZXZhbHVhdGlvbi5zaG93X3NldHRpbmdzLFxuICAgICAgICB9XG4gICAgICB8IFNob3dIaWRkZW5TdGVwcyA9PiB7XG4gICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICBzaG93X2hpZGRlbl9zdGVwczogIWV2YWx1YXRpb24uc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICBldmFsdWF0aW9uOiBldmFsdWF0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfCBFeHBsYWluVGhpcyhUb2dnbGVTaG93KSA9PlxuICAgIGxldCBleHBsYWluVGhpcyA9IHtcbiAgICAgIC4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLFxuICAgICAgc2hvdzogIXNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3csXG4gICAgfTtcbiAgICBsZXQgc2V0dGluZ3MgPSB7Li4uc2V0dGluZ3MsIGV4cGxhaW5UaGlzfTtcbiAgICB7Li4ubW9kZWwsIHNldHRpbmdzfTtcbiAgfCBFeHBsYWluVGhpcyhUb2dnbGVTaG93RmVlZGJhY2spID0+XG4gICAgbGV0IGV4cGxhaW5UaGlzID0ge1xuICAgICAgLi4uc2V0dGluZ3MuZXhwbGFpblRoaXMsXG4gICAgICBzaG93X2ZlZWRiYWNrOiAhc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvd19mZWVkYmFjayxcbiAgICB9O1xuICAgIGxldCBzZXR0aW5ncyA9IHsuLi5zZXR0aW5ncywgZXhwbGFpblRoaXN9O1xuICAgIHsuLi5tb2RlbCwgc2V0dGluZ3N9O1xuICB8IEV4cGxhaW5UaGlzKFNldEhpZ2hsaWdodChhKSkgPT5cbiAgICBsZXQgaGlnaGxpZ2h0OiBFeHBsYWluVGhpc01vZGVsLlNldHRpbmdzLmhpZ2hsaWdodCA9XG4gICAgICBzd2l0Y2ggKGEsIHNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCkge1xuICAgICAgfCAoVG9nZ2xlLCBBbGwpID0+IE5vSGlnaGxpZ2h0XG4gICAgICB8IChUb2dnbGUsIF8pID0+IEFsbFxuICAgICAgfCAoSG92ZXIoXyksIEFsbCkgPT4gQWxsXG4gICAgICB8IChIb3ZlcihpZCksIF8pID0+IE9uZShpZClcbiAgICAgIHwgKFVuc2V0SG92ZXIsIEFsbCkgPT4gQWxsXG4gICAgICB8IChVbnNldEhvdmVyLCBfKSA9PiBOb0hpZ2hsaWdodFxuICAgICAgfTtcbiAgICBsZXQgZXhwbGFpblRoaXMgPSB7Li4uc2V0dGluZ3MuZXhwbGFpblRoaXMsIGhpZ2hsaWdodH07XG4gICAgbGV0IHNldHRpbmdzID0gey4uLnNldHRpbmdzLCBleHBsYWluVGhpc307XG4gICAgey4uLm1vZGVsLCBzZXR0aW5nc307XG4gIHwgQmVuY2htYXJrID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGJlbmNobWFyazogIXNldHRpbmdzLmJlbmNobWFyayxcbiAgICAgIH0sXG4gICAgfVxuICB8IENhcHRpb25zID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNhcHRpb25zOiAhc2V0dGluZ3MuY2FwdGlvbnMsXG4gICAgICB9LFxuICAgIH1cbiAgfCBTZWNvbmRhcnlJY29ucyA9PiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBzZWNvbmRhcnlfaWNvbnM6ICFzZXR0aW5ncy5zZWNvbmRhcnlfaWNvbnMsXG4gICAgICB9LFxuICAgIH1cbiAgfCBDb250ZXh0SW5zcGVjdG9yID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvbnRleHRfaW5zcGVjdG9yOiAhc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IsXG4gICAgICB9LFxuICAgIH1cbiAgfCBJbnN0cnVjdG9yTW9kZSA9PlxuICAgIGxldCBuZXdfbW9kZSA9ICFzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gICAge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBlZGl0b3JzOiBFZGl0b3JzLnNldF9pbnN0cnVjdG9yX21vZGUobW9kZWwuZWRpdG9ycywgbmV3X21vZGUpLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGluc3RydWN0b3JfbW9kZTogIXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfCBNb2RlKG1vZGUpID0+IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIG1vZGUsXG4gICAgICB9LFxuICAgIH1cbiAgfTtcblxubGV0IHNjaGVkdWxlX2V2YWx1YXRpb24gPSAofnNjaGVkdWxlX2FjdGlvbiwgbW9kZWw6IE1vZGVsLnQpOiB1bml0ID0+XG4gIGlmIChtb2RlbC5zZXR0aW5ncy5jb3JlLmR5bmFtaWNzKSB7XG4gICAgbGV0IGVsYWJzID1cbiAgICAgIEVkaXRvcnMuZ2V0X3NwbGljZWRfZWxhYnMoXG4gICAgICAgIH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncyxcbiAgICAgICAgbW9kZWwuc3RhdGljcyxcbiAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICk7XG4gICAgbGV0IGV2YWxfcnMgPVxuICAgICAgTGlzdC5tYXAoKChuLCB7ZH06IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCkpID0+IChuLCBkKSwgZWxhYnMpO1xuICAgIGlmIChMaXN0Lmxlbmd0aChldmFsX3JzKSAhPSAwKSB7XG4gICAgICBXb3JrZXJDbGllbnQucmVxdWVzdChcbiAgICAgICAgZXZhbF9ycyxcbiAgICAgICAgfmhhbmRsZXI9cnMgPT4gc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZUV2YWxzKHJzKSksXG4gICAgICAgIH50aW1lb3V0PVxuICAgICAgICAgIHJxcyA9PlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9uKFxuICAgICAgICAgICAgICBVcGRhdGVFdmFscyhcbiAgICAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgICAgICgobiwgXykpID0+IChuLCBFcnJvcihQcm9ncmFtUmVzdWx0LlRpbWVvdXQpKSxcbiAgICAgICAgICAgICAgICAgIHJxcyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfTtcbiAgICAvKiBOb3Qgc2VuZGluZyBzdGVwcGVyIHRvIHdvcmtlciBmb3Igbm93IGJjIGNsb3N1cmUgcGVyZiAqL1xuICAgIGxldCBuZXdfcnMgPVxuICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgfD4gTW9kZWxSZXN1bHRzLnVwZGF0ZV9lbGFicyh+c2V0dGluZ3M9bW9kZWwuc2V0dGluZ3MuY29yZSwgZWxhYnMpO1xuICAgIGxldCBzdGVwX3JzID0gTW9kZWxSZXN1bHRzLnRvX3N0ZXAobmV3X3JzKTtcbiAgICBpZiAoIU1vZGVsUmVzdWx0cy5pc19lbXB0eShzdGVwX3JzKSkge1xuICAgICAgbGV0IG5ld19ycyA9XG4gICAgICAgIHN0ZXBfcnMgfD4gTW9kZWxSZXN1bHRzLnJ1bl9wZW5kaW5nKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlKTtcbiAgICAgIHNjaGVkdWxlX2FjdGlvbihVcGRhdGVSZXN1bHQobmV3X3JzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjaGVkdWxlX2FjdGlvbihVcGRhdGVSZXN1bHQobmV3X3JzKSk7XG4gICAgfTtcbiAgfTtcblxubGV0IHVwZGF0ZV9jYWNoZWRfZGF0YSA9ICh+c2NoZWR1bGVfYWN0aW9uLCB1cGRhdGUsIG06IE1vZGVsLnQpOiBNb2RlbC50ID0+IHtcbiAgbGV0IHVwZGF0ZV9zdGF0aWNzID0gaXNfZWRpdCh1cGRhdGUpIHx8IHJlZXZhbHVhdGVfcG9zdF91cGRhdGUodXBkYXRlKTtcbiAgbGV0IHVwZGF0ZV9keW5hbWljcyA9IHJlZXZhbHVhdGVfcG9zdF91cGRhdGUodXBkYXRlKTtcbiAgbGV0IG0gPVxuICAgIHVwZGF0ZV9zdGF0aWNzIHx8IHVwZGF0ZV9keW5hbWljcyAmJiBtLnNldHRpbmdzLmNvcmUuc3RhdGljc1xuICAgICAgPyB7Li4ubSwgc3RhdGljczogRWRpdG9ycy5ta19zdGF0aWNzKH5zZXR0aW5ncz1tLnNldHRpbmdzLCBtLmVkaXRvcnMpfVxuICAgICAgOiBtO1xuICBpZiAodXBkYXRlX2R5bmFtaWNzICYmIG0uc2V0dGluZ3MuY29yZS5keW5hbWljcykge1xuICAgIHNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG4gICAgbTtcbiAgfSBlbHNlIHtcbiAgICBtO1xuICB9O1xufTtcblxubGV0IHBlcmZvcm1fYWN0aW9uID0gKG1vZGVsOiBNb2RlbC50LCBhOiBBY3Rpb24udCk6IFJlc3VsdC50KE1vZGVsLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgfnNlbGVjdGlvbj1tb2RlbC51aV9zdGF0ZS5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICApXG4gICAgfD4gT3B0aW9uLmdldFxuICAgIHw+IEhhejNsY29yZS5QZXJmb3JtLmdvKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlLCBhKVxuICApIHtcbiAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IE9rKG1vZGVsKVxuICB8IEVycm9yKGVycikgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGVycikpXG4gIHwgT2soZWQpID0+XG4gICAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9XG4gICAgICBFZGl0b3JzLnB1dF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgIH5zZWxlY3Rpb249bW9kZWwudWlfc3RhdGUuYWN0aXZlX2VkaXRvciB8PiBPcHRpb24uZ2V0LFxuICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgICBtb2RlbC5yZXN1bHRzLFxuICAgICAgICBlZCxcbiAgICAgICk7XG4gICAgbGV0IG1vZGVsID0gey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfTtcbiAgICAvKiBOb3RlOiBOb3Qgc2F2aW5nIGhlcmUgYXMgc2F2aW5nIGlzIGNvc3RseSB0byBkbyBlYWNoIGtleXN0cm9rZSxcbiAgICAgICB3ZSB3YWl0IGEgc2Vjb25kIGFmdGVyIHRoZSBsYXN0IGVkaXQgYWN0aW9uIChzZWUgTWFpbi5yZSkgKi9cbiAgICBPayhtb2RlbCk7XG4gIH07XG5cbmxldCByZWMgcGVyZm9ybV9hY3Rpb25zID0gKG1vZGVsOiBNb2RlbC50KSA9PlxuICBmdW5cbiAgfCBbXSA9PiBPayhtb2RlbClcbiAgfCBbYSwgLi4uX2FzXSA9PlxuICAgIHN3aXRjaCAocGVyZm9ybV9hY3Rpb24obW9kZWwsIGEpKSB7XG4gICAgfCBPayhtb2RlbCkgPT4gcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBfYXMpXG4gICAgfCBFcnJvcihfKSBhcyBlcnIgPT4gZXJyXG4gICAgfTtcblxubGV0IHN3aXRjaF9zY3JhdGNoX3NsaWRlID1cbiAgICAoZWRpdG9yczogRWRpdG9ycy50LCB+aW5zdHJ1Y3Rvcl9tb2RlLCBpZHg6IGludCk6IG9wdGlvbihFZGl0b3JzLnQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IERvY3VtZW50YXRpb24oXykgPT4gTm9uZVxuICB8IFNjcmF0Y2gobiwgXykgd2hlbiBuID09IGlkeCA9PiBOb25lXG4gIHwgU2NyYXRjaChfLCBzbGlkZXMpIHdoZW4gaWR4ID49IExpc3QubGVuZ3RoKHNsaWRlcykgPT4gTm9uZVxuICB8IFNjcmF0Y2goXywgc2xpZGVzKSA9PiBTb21lKFNjcmF0Y2goaWR4LCBzbGlkZXMpKVxuICB8IEV4ZXJjaXNlcyhfLCBzcGVjcywgXykgd2hlbiBpZHggPj0gTGlzdC5sZW5ndGgoc3BlY3MpID0+IE5vbmVcbiAgfCBFeGVyY2lzZXMoXywgc3BlY3MsIF8pID0+XG4gICAgbGV0IHNwZWMgPSBMaXN0Lm50aChzcGVjcywgaWR4KTtcbiAgICBsZXQga2V5ID0gRXhlcmNpc2Uua2V5X29mKHNwZWMpO1xuICAgIGxldCBleGVyY2lzZSA9IFN0b3JlLkV4ZXJjaXNlLmxvYWRfZXhlcmNpc2Uoa2V5LCBzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBTb21lKEV4ZXJjaXNlcyhpZHgsIHNwZWNzLCBleGVyY2lzZSkpO1xuICB9O1xuXG4vKiBUaGlzIGFjdGlvbiBzYXZlcyBhIGZpbGUgd2hpY2ggc2VyaWFsaXplcyBhbGwgY3VycmVudCBlZGl0b3JcbiAgIHNldHRpbmdzLCBpbmNsdWRpbmcgdGhlIHN0YXRlcyBvZiBhbGwgU2NyYXRjaCBhbmQgRXhhbXBsZSBzbGlkZXMuXG4gICBUaGlzIHNhdmVkIGZpbGUgY2FuIGRpcmVjdGx5IHJlcGxhY2UgSGF6M2x3ZWIvSW5pdC5tbCwgYWxsb3dpbmdcbiAgIHlvdSB0byBtYWtlIHlvdXIgY3VycmVudCBzdGF0ZSB0aGUgZGVmYXVsdCBzdGFydHVwIHN0YXRlLlxuXG4gICBUaGlzIGRvZXMgTk9UIHNhdmUgYW55IEV4ZXJjaXNlcyBtb2RlIHN0YXRlIG9yIGFueSBsYW5nZG9jc1xuICAgc3RhdGUuIFRoZSBsYXR0ZXIgaXMgaW50ZW50aW9uYWwgYXMgd2UgZG9uJ3Qgd2FudCB0byBwZXJzaXN0XG4gICB0aGlzIGJldHdlZW4gdXNlcnMuIFRoZSBmb3JtZXIgaXMgYSBUT0RPLCBjdXJyZW50bHkgZGlmZmljdWx0XG4gICBkdWUgdG8gdGhlIG1vcmUgY29tcGxleCBhcmNoaXRlY3R1cmUgb2YgRXhlcmNpc2VzLiAqL1xubGV0IGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEgPSAoKSA9PiB7XG4gIGxldCBkYXRhOiBQZXJzaXN0ZW50RGF0YS50ID0ge1xuICAgIGRvY3VtZW50YXRpb246XG4gICAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLmxvYWQofnNldHRpbmdzPUNvcmVTZXR0aW5ncy5vZmYpXG4gICAgICB8PiBTdG9yZS5Eb2N1bWVudGF0aW9uLnRvX3BlcnNpc3RlbnQsXG4gICAgc2NyYXRjaDpcbiAgICAgIFN0b3JlLlNjcmF0Y2gubG9hZCh+c2V0dGluZ3M9Q29yZVNldHRpbmdzLm9mZilcbiAgICAgIHw+IFN0b3JlLlNjcmF0Y2gudG9fcGVyc2lzdGVudCxcbiAgICBzZXR0aW5nczogU3RvcmUuU2V0dGluZ3MubG9hZCgpLFxuICB9O1xuICBsZXQgY29udGVudHMgPVxuICAgIFwibGV0IHN0YXJ0dXAgOiBQZXJzaXN0ZW50RGF0YS50ID0gXCIgKysgUGVyc2lzdGVudERhdGEuc2hvdyhkYXRhKTtcbiAgSnNVdGlsLmRvd25sb2FkX3N0cmluZ19maWxlKFxuICAgIH5maWxlbmFtZT1cIkluaXQubWxcIixcbiAgICB+Y29udGVudF90eXBlPVwidGV4dC9wbGFpblwiLFxuICAgIH5jb250ZW50cyxcbiAgKTtcbiAgcHJpbnRfZW5kbGluZShcIklORk86IFBlcnNpc3RlbnQgZGF0YSBleHBvcnRlZCB0byBJbml0Lm1sXCIpO1xufTtcblxubGV0IHVpX3N0YXRlX3VwZGF0ZSA9XG4gICAgKHVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSwgdXBkYXRlOiBzZXRfbWV0YSwgfnNjaGVkdWxlX2FjdGlvbiBhcyBfKVxuICAgIDogTW9kZWwudWlfc3RhdGUgPT4ge1xuICBzd2l0Y2ggKHVwZGF0ZSkge1xuICB8IE1vdXNlZG93biA9PiB7Li4udWlfc3RhdGUsIG1vdXNlZG93bjogdHJ1ZX1cbiAgfCBNb3VzZXVwID0+IHsuLi51aV9zdGF0ZSwgbW91c2Vkb3duOiBmYWxzZX1cbiAgfCBTaG93QmFja3BhY2tUYXJnZXRzKGIpID0+IHsuLi51aV9zdGF0ZSwgc2hvd19iYWNrcGFja190YXJnZXRzOiBifVxuICB8IEZvbnRNZXRyaWNzKGZvbnRfbWV0cmljcykgPT4gey4uLnVpX3N0YXRlLCBmb250X21ldHJpY3N9XG4gIH07XG59O1xuXG5sZXQgcmVjIGFwcGx5ID1cbiAgICAgICAgKG1vZGVsOiBNb2RlbC50LCB1cGRhdGU6IHQsIHN0YXRlOiBTdGF0ZS50LCB+c2NoZWR1bGVfYWN0aW9uKVxuICAgICAgICA6IFJlc3VsdC50KE1vZGVsLnQpID0+IHtcbiAgbGV0IG06IFJlc3VsdC50KE1vZGVsLnQpID1cbiAgICBzd2l0Y2ggKHVwZGF0ZSkge1xuICAgIHwgUmVzZXQgPT4gT2soTW9kZWwucmVzZXQobW9kZWwpKVxuICAgIHwgU2V0KEV2YWx1YXRpb24oXykgYXMgc19hY3Rpb24pID0+IE9rKHVwZGF0ZV9zZXR0aW5ncyhzX2FjdGlvbiwgbW9kZWwpKVxuICAgIHwgU2V0KHNfYWN0aW9uKSA9PlxuICAgICAgbGV0IG1vZGVsID0gdXBkYXRlX3NldHRpbmdzKHNfYWN0aW9uLCBtb2RlbCk7XG4gICAgICBNb2RlbC5zYXZlKG1vZGVsKTtcbiAgICAgIHN3aXRjaCAodXBkYXRlKSB7XG4gICAgICAvLyBOT1RFOiBMb2FkIGhlcmUgbmVjZXNzYXJ5IHRvIGxvYWQgZWRpdG9ycyBvbiBzd2l0Y2hpbmcgbW9kZVxuICAgICAgfCBTZXQoTW9kZShfKSkgPT4gT2soTW9kZWwubG9hZChtb2RlbCkpXG4gICAgICB8IF8gPT4gT2sobW9kZWwpXG4gICAgICB9O1xuICAgIHwgU2V0TWV0YShhY3Rpb24pID0+XG4gICAgICBsZXQgdWlfc3RhdGUgPVxuICAgICAgICB1aV9zdGF0ZV91cGRhdGUobW9kZWwudWlfc3RhdGUsIGFjdGlvbiwgfnNjaGVkdWxlX2FjdGlvbik7XG4gICAgICBPayh7Li4ubW9kZWwsIHVpX3N0YXRlfSk7XG4gICAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKHUpID0+XG4gICAgICBsZXQgZXhwbGFpblRoaXNNb2RlbCA9XG4gICAgICAgIEV4cGxhaW5UaGlzVXBkYXRlLnNldF91cGRhdGUobW9kZWwuZXhwbGFpblRoaXNNb2RlbCwgdSk7XG4gICAgICBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBleHBsYWluVGhpc01vZGVsfSk7XG4gICAgfCBEZWJ1Z0NvbnNvbGUoa2V5KSA9PlxuICAgICAgRGVidWdDb25zb2xlLnByaW50KG1vZGVsLCBrZXkpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgU2F2ZSA9PiBNb2RlbC5zYXZlX2FuZF9yZXR1cm4obW9kZWwpXG4gICAgfCBJbml0SW1wb3J0QWxsKGZpbGUpID0+XG4gICAgICBKc1V0aWwucmVhZF9maWxlKGZpbGUsIGRhdGEgPT4gc2NoZWR1bGVfYWN0aW9uKEZpbmlzaEltcG9ydEFsbChkYXRhKSkpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgRmluaXNoSW1wb3J0QWxsKGRhdGEpID0+XG4gICAgICBzd2l0Y2ggKGRhdGEpIHtcbiAgICAgIHwgTm9uZSA9PiBPayhtb2RlbClcbiAgICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgICBFeHBvcnQuaW1wb3J0X2FsbChkYXRhLCB+c3BlY3M9RXhlcmNpc2VTZXR0aW5ncy5leGVyY2lzZXMpO1xuICAgICAgICBPayhNb2RlbC5sb2FkKG1vZGVsKSk7XG4gICAgICB9XG4gICAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChmaWxlKSA9PlxuICAgICAgSnNVdGlsLnJlYWRfZmlsZShmaWxlLCBkYXRhID0+XG4gICAgICAgIHNjaGVkdWxlX2FjdGlvbihGaW5pc2hJbXBvcnRTY3JhdGNocGFkKGRhdGEpKVxuICAgICAgKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoZGF0YSkgPT5cbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5pbXBvcnRfY3VycmVudChtb2RlbC5lZGl0b3JzLCBkYXRhKTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KTtcbiAgICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhID0+XG4gICAgICBleHBvcnRfcGVyc2lzdGVudF9kYXRhKCk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBSZXNldEN1cnJlbnRFZGl0b3IgPT5cbiAgICAgIGxldCBpbnN0cnVjdG9yX21vZGUgPSBtb2RlbC5zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gICAgICBsZXQgZWRpdG9ycyA9IEVkaXRvcnMucmVzZXRfY3VycmVudChtb2RlbC5lZGl0b3JzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KTtcbiAgICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShuKSA9PlxuICAgICAgbGV0IGluc3RydWN0b3JfbW9kZSA9IG1vZGVsLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICAgIHN3aXRjaCAoc3dpdGNoX3NjcmF0Y2hfc2xpZGUobW9kZWwuZWRpdG9ycywgfmluc3RydWN0b3JfbW9kZSwgbikpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihGYWlsZWRUb1N3aXRjaClcbiAgICAgIHwgU29tZShlZGl0b3JzKSA9PiBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBlZGl0b3JzfSlcbiAgICAgIH07XG4gICAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUobmFtZSkgPT5cbiAgICAgIHN3aXRjaCAoRWRpdG9ycy5zd2l0Y2hfZXhhbXBsZV9zbGlkZShtb2RlbC5lZGl0b3JzLCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+IEVycm9yKEZhaWxlZFRvU3dpdGNoKVxuICAgICAgfCBTb21lKGVkaXRvcnMpID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KVxuICAgICAgfVxuICAgIHwgTWFrZUFjdGl2ZShwb3MpID0+XG4gICAgICBPayh7XG4gICAgICAgIC4uLm1vZGVsLFxuICAgICAgICB1aV9zdGF0ZToge1xuICAgICAgICAgIC4uLm1vZGVsLnVpX3N0YXRlLFxuICAgICAgICAgIGFjdGl2ZV9lZGl0b3I6IFNvbWUocG9zKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfCBUQUIgPT5cbiAgICAgIC8qIEF0dGVtcHQgdG8gYWN0IGludGVsbGlnZW50bHkgd2hlbiBUQUIgaXMgcHJlc3NlZC5cbiAgICAgICAqIFRPRE8oYW5kcmV3KTogQ29uc2lkZXIgbW9yZSBhZHZhbmNlZCBUQUIgbG9naWMuIEluc3RlYWRcbiAgICAgICAqIG9mIHNpbXBseSBtb3ZpbmcgdG8gbmV4dCBob2xlLCBpZiB0aGUgYmFja3BhY2sgaXMgbm9uLWVtcHR5XG4gICAgICAgKiBidXQgY2FuJ3QgaW1tZWRpYXRlbHkgcHV0IGRvd24sIG1vdmUgdG8gbmV4dCBwb3NpdGlvbiBvZlxuICAgICAgICogaW50ZXJlc3QsIHdoaWNoIGlzIGNsb3NldCBvZjogbmVhcmVzdCBwb3NpdGlvbiB3aGVyZSBjYW5cbiAgICAgICAqIHB1dCBkb3duLCBmYXJ0aGVzdCBwb3NpdGlvbiB3aGVyZSBjYW4gcHV0IGRvd24sIG5leHQgaG9sZSAqL1xuICAgICAgbGV0IHogPVxuICAgICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgfnNlbGVjdGlvbj1tb2RlbC51aV9zdGF0ZS5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICAgICBtb2RlbC5yZXN1bHRzLFxuICAgICAgICApXG4gICAgICAgIHw+IE9wdGlvbi5nZXRcbiAgICAgICAgfD4gKChlZDogRWRpdG9yLnQpID0+IGVkLnN0YXRlLnppcHBlcik7XG4gICAgICBsZXQgYSA9XG4gICAgICAgIFNlbGVjdGlvbi5pc19idWZmZXIoei5zZWxlY3Rpb24pXG4gICAgICAgICAgPyBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbilcbiAgICAgICAgICA6IFppcHBlci5jYW5fcHV0X2Rvd24oeilcbiAgICAgICAgICAgICAgPyBQZXJmb3JtQWN0aW9uKFB1dF9kb3duKSA6IE1vdmVUb05leHRIb2xlKFJpZ2h0KTtcbiAgICAgIGFwcGx5KG1vZGVsLCBhLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik7XG4gICAgfCBQZXJmb3JtQWN0aW9uKGEpXG4gICAgICAgIHdoZW4gbW9kZWwuc2V0dGluZ3MuY29yZS5hc3Npc3QgJiYgbW9kZWwuc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+XG4gICAgICBvcGVuIFJlc3VsdC5TeW50YXg7XG4gICAgICBsZXQqIG1vZGVsID0gcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBbUmVzZXRTdWdnZXN0aW9uLCBhXSk7XG4gICAgICAvLyBsZXQgYWN0aW9ucyA9XG4gICAgICAvLyAgIFVwZGF0ZUFzc2lzdGFudC5hc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3Rpb25zKFxuICAgICAgLy8gICAgIG1vZGVsLFxuICAgICAgLy8gICAgIFByb21wdChUeURpKSxcbiAgICAgIC8vICAgKTtcbiAgICAgIC8vIHBlcmZvcm1fYWN0aW9ucyhtb2RlbCwgYWN0aW9ucyk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBQZXJmb3JtQWN0aW9uKGEpID0+IHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBhKVxuICAgIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3IgPT5cbiAgICAgIC8qIFRoaXMgc2VyaWFsaXplcyB0aGUgY3VycmVudCBlZGl0b3IgdG8gdGV4dCwgcmVzZXRzIHRoZSBjdXJyZW50XG4gICAgICAgICBlZGl0b3IsIGFuZCB0aGVuIGRlc2VyaWFsaXplcy4gSXQgaXMgaW50ZW5kZWQgYXMgYSAodGFjdGljYWwpXG4gICAgICAgICBudWNsZWFyIG9wdGlvbiBmb3Igd2VpcmQgYmFja3BhY2sgc3RhdGVzICovXG4gICAgICBzd2l0Y2ggKG1vZGVsLnVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IpIHtcbiAgICAgIHwgTm9uZSA9PiBPayhtb2RlbClcbiAgICAgIHwgU29tZShzZWxlY3Rpb24pID0+XG4gICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgICAgfnNlbGVjdGlvbixcbiAgICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgICBtb2RlbC5yZXN1bHRzLFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgIHwgU29tZShlZCkgPT5cbiAgICAgICAgICBsZXQgemlwcGVyX2luaXQgPSBaaXBwZXIuaW5pdCgpO1xuICAgICAgICAgIGxldCBlZF9zdHIgPSBQcmludGVyLnRvX3N0cmluZ19lZGl0b3IoZWQpO1xuICAgICAgICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKH56aXBwZXJfaW5pdCwgZWRfc3RyKSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50UmVzZXQpXG4gICAgICAgICAgfCBTb21lKHopID0+XG4gICAgICAgICAgICAvL1RPRE86IGFkZCBjb3JyZWN0IGFjdGlvbiB0byBoaXN0b3J5IChQaWNrX3VwIGlzIHdyb25nKVxuICAgICAgICAgICAgbGV0IGVkaXRvciA9IEhhejNsY29yZS5FZGl0b3IubmV3X3N0YXRlKFBpY2tfdXAsIHosIGVkKTtcbiAgICAgICAgICAgIGxldCAoZWRpdG9ycywgcmVzdWx0cykgPVxuICAgICAgICAgICAgICBFZGl0b3JzLnB1dF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgICAgICAgfnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfCBDdXQgPT5cbiAgICAgIC8vIHN5c3RlbSBjbGlwYm9hcmQgaGFuZGxpbmcgaXRzZWxmIGlzIGRvbmUgaW4gUGFnZS52aWV3IGhhbmRsZXJzXG4gICAgICBwZXJmb3JtX2FjdGlvbihtb2RlbCwgRGVzdHJ1Y3QoTGVmdCkpXG4gICAgfCBDb3B5ID0+XG4gICAgICAvLyBzeXN0ZW0gY2xpcGJvYXJkIGhhbmRsaW5nIGl0c2VsZiBpcyBkb25lIGluIFBhZ2UudmlldyBoYW5kbGVyc1xuICAgICAgLy8gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXRlIGJ1dCBpbmNsdWRpbmcgYXMgYW4gYWN0aW9uIGZvciBsb2dnaW5nIHB1cnBvc2VzXG4gICAgICBPayhtb2RlbClcbiAgICB8IFVuZG8gPT5cbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIEVkaXRvcnMudXBkYXRlX3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgICB+c2VsZWN0aW9uPW1vZGVsLnVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IsXG4gICAgICAgICAgZWRpdG9yID0+XG4gICAgICAgICAgICBzd2l0Y2ggKEhhejNsY29yZS5FZGl0b3IudW5kbyhlZGl0b3IpKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gRXJyb3IoQ2FudF91bmRvKVxuICAgICAgICAgICAgfCBTb21lKGVkaXRvcikgPT4gT2soZWRpdG9yKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgfCBPaygoZWRpdG9ycywgcmVzdWx0cykpID0+IE9rKHsuLi5tb2RlbCwgZWRpdG9ycywgcmVzdWx0c30pXG4gICAgICB8IEVycm9yKGUpID0+IEVycm9yKEZhaWxlZFRvUGVyZm9ybShlKSlcbiAgICAgIH1cbiAgICB8IFJlZG8gPT5cbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIEVkaXRvcnMudXBkYXRlX3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgICB+c2VsZWN0aW9uPW1vZGVsLnVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IsXG4gICAgICAgICAgZWRpdG9yID0+XG4gICAgICAgICAgICBzd2l0Y2ggKEhhejNsY29yZS5FZGl0b3IucmVkbyhlZGl0b3IpKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gRXJyb3IoQ2FudF9yZWRvKVxuICAgICAgICAgICAgfCBTb21lKGVkaXRvcikgPT4gT2soZWRpdG9yKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgfCBPaygoZWRpdG9ycywgcmVzdWx0cykpID0+IE9rKHsuLi5tb2RlbCwgZWRpdG9ycywgcmVzdWx0c30pXG4gICAgICB8IEVycm9yKGUpID0+IEVycm9yKEZhaWxlZFRvUGVyZm9ybShlKSlcbiAgICAgIH1cbiAgICB8IE1vdmVUb05leHRIb2xlKGQpID0+XG4gICAgICBwZXJmb3JtX2FjdGlvbihtb2RlbCwgTW92ZShHb2FsKFBpZWNlKEdyb3V0LCBkKSkpKVxuICAgIHwgQXNzaXN0YW50KGFjdGlvbikgPT5cbiAgICAgIHBlcmZvcm1fYWN0aW9ucyhcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIFVwZGF0ZUFzc2lzdGFudC5hc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3Rpb25zKG1vZGVsLCBhY3Rpb24pLFxuICAgICAgKVxuICAgIHwgQmVuY2htYXJrKFN0YXJ0KSA9PlxuICAgICAgTGlzdC5pdGVyKHNjaGVkdWxlX2FjdGlvbiwgQmVuY2htYXJrLmFjdGlvbnNfMSk7XG4gICAgICBCZW5jaG1hcmsuc3RhcnQoKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IEJlbmNobWFyayhGaW5pc2gpID0+XG4gICAgICBCZW5jaG1hcmsuZmluaXNoKCk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgU3RlcEZvcndhcmQoaWR4KSkgPT5cbiAgICAgIGxldCByID1cbiAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICB8PiBNb2RlbFJlc3VsdHMuZmluZChrZXkpXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0LnN0ZXBfZm9yd2FyZChpZHgpO1xuICAgICAgT2soey4uLm1vZGVsLCByZXN1bHRzOiBtb2RlbC5yZXN1bHRzIHw+IE1vZGVsUmVzdWx0cy5hZGQoa2V5LCByKX0pO1xuICAgIHwgU3RlcHBlckFjdGlvbihrZXksIFN0ZXBCYWNrd2FyZCkgPT5cbiAgICAgIGxldCByID1cbiAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICB8PiBNb2RlbFJlc3VsdHMuZmluZChrZXkpXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0LnN0ZXBfYmFja3dhcmQofnNldHRpbmdzPW1vZGVsLnNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbik7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgSGlkZVN0ZXBwZXIpXG4gICAgfCBUb2dnbGVTdGVwcGVyKGtleSkgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIHJlc3VsdHM6XG4gICAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0cy51cGRhdGUoa2V5LCB2ID0+XG4gICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Ob0VsYWI6IE1vZGVsUmVzdWx0LnQpXG4gICAgICAgICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnRvZ2dsZV9zdGVwcGVyKH5zZXR0aW5ncz1tb2RlbC5zZXR0aW5ncy5jb3JlKSxcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICApLFxuICAgICAgfSlcbiAgICB8IFVwZGF0ZVJlc3VsdChyZXN1bHRzKSA9PlxuICAgICAgbGV0IHJlc3VsdHMgPVxuICAgICAgICBNb2RlbFJlc3VsdHMudW5pb24oKF8sIF9hLCBiKSA9PiBTb21lKGIpLCBtb2RlbC5yZXN1bHRzLCByZXN1bHRzKTtcbiAgICAgIE9rKHsuLi5tb2RlbCwgcmVzdWx0c30pO1xuICAgIHwgVXBkYXRlRXZhbHMoZXZhbHMpID0+XG4gICAgICBPayh7XG4gICAgICAgIC4uLm1vZGVsLFxuICAgICAgICByZXN1bHRzOlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgKHJlc3VsdHMsIChrZXksIGV2YWwpKSA9PlxuICAgICAgICAgICAgICBNb2RlbFJlc3VsdHMudXBkYXRlKFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBPcHRpb24ubWFwKE1vZGVsUmVzdWx0LnVwZGF0ZV9ldmFsdWF0aW9uKGV2YWwpKSxcbiAgICAgICAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgICAgIGV2YWxzLFxuICAgICAgICAgICksXG4gICAgICB9KVxuICAgIH07XG4gIG0gfD4gUmVzdWx0Lm1hcCh+Zj11cGRhdGVfY2FjaGVkX2RhdGEofnNjaGVkdWxlX2FjdGlvbiwgdXBkYXRlKSk7XG59O1xuIiwibGV0IGxhbSA9IFwizrtcIjtcbmxldCB1cF9hcnJvdyA9IFwi4oaRXCI7XG5sZXQgZG93bl9hcnJvdyA9IFwi4oaTXCI7XG5sZXQgbGVmdF9hcnJvdyA9IFwi4oaQXCI7XG5sZXQgcmlnaHRfYXJyb3cgPSBcIuKGklwiO1xubGV0IG5ic3AgPSBcIlxceEMyXFx4QTBcIjtcbmxldCB6d3NwID0gXCLigItcIjtcblxubGV0IHR5cGVBcnJvd1N5bSA9IFwi4oaSXCI7IC8vIFUrMjE5MiBcIlJpZ2h0d2FyZHMgQXJyb3dcIlxubGV0IGNhc3RBcnJvd1N5bSA9IFwi4oeoXCI7XG5cbmxldCBlbGxpcHNpcyA9IFwiXFx4RTJcXHg4MFxceEE2XCI7XG5cbi8vIGNvcGllZCBmcm9tIGhhemVsXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IHRwYXRfdmlldyA9ICh0cGF0OiBIYXozbGNvcmUuVFBhdC50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAodHBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHhcbiAgfCBfID0+IFwiP1wiXG4gIH07XG5cbmxldCB0eV92aWV3ID0gKGNsczogc3RyaW5nLCBzOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgY2xzXSksIFt0ZXh0KHMpXSk7XG5cbmxldCBhbGlhc192aWV3ID0gKHM6IHN0cmluZyk6IE5vZGUudCA9PlxuICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtYWxpYXMtdmlld1wiXSksIFt0ZXh0KHMpXSk7XG5cbmxldCByZWMgdmlld190eSA9ICh+c3RyaXBfb3V0ZXJfcGFyZW5zPWZhbHNlLCB0eTogSGF6M2xjb3JlLlR5cC50KTogTm9kZS50ID0+XG4gIHN3aXRjaCAoVHlwLnRlcm1fb2YodHkpKSB7XG4gIHwgVW5rbm93bihwcm92KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIGNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwidW5rbm93blwiXSksXG4gICAgICAgICAgQXR0ci50aXRsZShUeXAuc2hvd190eXBlX3Byb3ZlbmFuY2UocHJvdikpLFxuICAgICAgICBdKSxcbiAgICAgIFt0ZXh0KFwiP1wiKSAvKiwgcHJvdl92aWV3KHByb3YpKi9dLFxuICAgIClcbiAgfCBQYXJlbnModHkpID0+IHZpZXdfdHkodHkpXG4gIHwgSW50ID0+IHR5X3ZpZXcoXCJJbnRcIiwgXCJJbnRcIilcbiAgfCBGbG9hdCA9PiB0eV92aWV3KFwiRmxvYXRcIiwgXCJGbG9hdFwiKVxuICB8IFN0cmluZyA9PiB0eV92aWV3KFwiU3RyaW5nXCIsIFwiU3RyaW5nXCIpXG4gIHwgQm9vbCA9PiB0eV92aWV3KFwiQm9vbFwiLCBcIkJvb2xcIilcbiAgfCBWYXIobmFtZSkgPT4gdHlfdmlldyhcIlZhclwiLCBuYW1lKVxuICB8IFJlYyhuYW1lLCB0KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJSZWNcIl0pLFxuICAgICAgW3RleHQoXCJSZWMgXCIgKysgdHBhdF92aWV3KG5hbWUpICsrIFwiLiBcIiksIHZpZXdfdHkodCldLFxuICAgIClcbiAgfCBGb3JhbGwobmFtZSwgdCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiRm9yYWxsXCJdKSxcbiAgICAgIFt0ZXh0KFwiZm9yYWxsIFwiICsrIHRwYXRfdmlldyhuYW1lKSArKyBcIiAtPiBcIiksIHZpZXdfdHkodCldLFxuICAgIClcbiAgfCBMaXN0KHQpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcImF0b21cIiwgXCJMaXN0XCJdKSxcbiAgICAgIFt0ZXh0KFwiW1wiKSwgdmlld190eSh0KSwgdGV4dChcIl1cIildLFxuICAgIClcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIkFycm93XCJdKSxcbiAgICAgIHBhcmVuX3ZpZXcodDEpIEAgW3RleHQoXCIgLT4gXCIpLCB2aWV3X3R5KHQyKV0sXG4gICAgKVxuICB8IFByb2QoW10pID0+IGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksIFt0ZXh0KFwiKClcIildKVxuICB8IFByb2QoW19dKSA9PlxuICAgIGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksIFt0ZXh0KFwiU2luZ2xldG9uIFByb2R1Y3RcIildKVxuICB8IFByb2QoW3QwLCAuLi50c10pID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcImF0b21cIiwgXCJQcm9kXCJdKSxcbiAgICAgIChcbiAgICAgICAgaWYgKCFzdHJpcF9vdXRlcl9wYXJlbnMpIHtcbiAgICAgICAgICBbdGV4dChcIihcIildO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFtdO1xuICAgICAgICB9XG4gICAgICApXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJQcm9kXCJdKSxcbiAgICAgICAgICBwYXJlbl92aWV3KHQwKVxuICAgICAgICAgIEAgKFxuICAgICAgICAgICAgTGlzdC5tYXAodCA9PiBbdGV4dChcIiwgXCIpLCAuLi5wYXJlbl92aWV3KHQpXSwgdHMpXG4gICAgICAgICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgXVxuICAgICAgQCAoXG4gICAgICAgIGlmICghc3RyaXBfb3V0ZXJfcGFyZW5zKSB7XG4gICAgICAgICAgW3RleHQoXCIpXCIpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICApXG4gIHwgU3VtKHRzKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJTdW1cIl0pLFxuICAgICAgc3dpdGNoICh0cykge1xuICAgICAgfCBbXSA9PiBbdGV4dChcIk51bGxhcnkgU3VtXCIpXVxuICAgICAgfCBbdDBdID0+IFt0ZXh0KFwiK1wiKV0gQCBjdHJfdmlldyh0MClcbiAgICAgIHwgW3QwLCAuLi50c10gPT5cbiAgICAgICAgbGV0IHRzX3ZpZXdzID1cbiAgICAgICAgICBMaXN0Lm1hcCh0ID0+IFt0ZXh0KFwiICsgXCIpXSBAIGN0cl92aWV3KHQpLCB0cykgfD4gTGlzdC5mbGF0dGVuO1xuICAgICAgICBjdHJfdmlldyh0MCkgQCB0c192aWV3cztcbiAgICAgIH0sXG4gICAgKVxuICB8IEFwKF8pID0+IGZhaWx3aXRoKFwidHlwZSBhcHBsaWNhdGlvbiBpbiB2aWV3XCIpXG4gIH1cbmFuZCBjdHJfdmlldyA9XG4gIGZ1blxuICB8IFZhcmlhbnQoY3RyLCBfLCBOb25lKSA9PiBbdGV4dChjdHIpXVxuICB8IFZhcmlhbnQoY3RyLCBfLCBTb21lKHR5cCkpID0+IFtcbiAgICAgIHRleHQoY3RyICsrIFwiKFwiKSxcbiAgICAgIHZpZXdfdHkodHlwKSxcbiAgICAgIHRleHQoXCIpXCIpLFxuICAgIF1cbiAgfCBCYWRFbnRyeSh0eXApID0+IFt2aWV3X3R5KHR5cCldXG5cbmFuZCBwYXJlbl92aWV3ID0gdHlwID0+XG4gIGlmIChUeXAubmVlZHNfcGFyZW5zKHR5cCkpIHtcbiAgICBbdGV4dChcIihcIiksIHZpZXdfdHkofnN0cmlwX291dGVyX3BhcmVucz10cnVlLCB0eXApLCB0ZXh0KFwiKVwiKV07XG4gIH0gZWxzZSB7XG4gICAgW3ZpZXdfdHkodHlwKV07XG4gIH07XG5cbmxldCB2aWV3ID0gKHR5OiBIYXozbGNvcmUuVHlwLnQpOiBOb2RlLnQgPT5cbiAgZGl2X2MoXCJ0eXAtd3JhcHBlclwiLCBbdmlld190eSh0eSldKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBwb2x5X2lkX2V4ID0ge1xuICBzdWJfaWQ6IFR5cEZ1bihCYXNpYyksXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcbiAgICAgIFwibGV0IGlkIDogXFxuIGZvcmFsbCBhIC0+IChhIC0+IGEpID0gXFxuIHR5cGZ1biBhIC0+IFxcbiBmdW4geCA6IGEgLT4geCBcXG4gaW4gaWRcIixcbiAgICApLFxuICBtZXNzYWdlOiBcIlRoZSBwb2x5bW9ycGhpYyBpZGVudGl0eSBmdW5jdGlvbi4gSXQgbWF5IGJlIGluc3RhbnRpYXRlZCBhdCBhbnkgdHlwZSBhLCBhZnRlciB3aGljaCB0aGUgZnVuY3Rpb24gYWN0cyBhcyB0eXBlIChhIC0+IGEpLlwiLFxufTtcblxubGV0IF90cCA9IHRwYXQoXCJhXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IHR5cGZ1bl92YXI6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGEgdHlwZSB0aGF0IHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBbKnR5cGUgdmFyaWFibGUqXSglcyksIGV2YWx1YXRlcyB0byB0aGUgdHlwZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX3R5cGZ1bihbW3NwYWNlKCksIF90cCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogVHlwRnVuY3Rpb25FeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF90cCksIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3BvbHlfaWRfZXhdLFxuICB9O1xufTtcblxubGV0IHR5cGVfZnVuY3Rpb25zX2Jhc2ljID0ge2lkOiBUeXBGdW5jdGlvbkV4cCwgZm9ybXM6IFt0eXBmdW5fdmFyXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgdHlwZnVuYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBUeXBGdW5BcCxcbiAgdGVybTpcbiAgICBta19leGFtcGxlKFxuICAgICAgXCJsZXQgaWQgOiBcXG4gZm9yYWxsIGEgLT4gKGEgLT4gYSkgPSBcXG4gdHlwZnVuIGEgLT4gXFxuIGZ1biB4IDogYSAtPiB4IFxcbiBpbiBpZEA8SW50PlwiLFxuICAgICksXG4gIG1lc3NhZ2U6IFwiVGhlIHBvbHltb3JwaGljIGlkZW50aXR5IGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZCBhdCBJbnQuIFRoZSB0eXBlIHZhcmlhYmxlIGEgaXMgYm91bmQgdG8gSW50IGluIHRoZSB0eXBlIGZ1bmN0aW9uIGJvZHkgYW5kIHRoZSBib2R5IGV2YWx1YXRlcyB0byB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gb24gaW50ZWdlcnMuXCIsXG59O1xubGV0IF9leHBfdGZ1biA9IGV4cChcImVfdGZ1blwiKTtcbmxldCBfdHlwID0gdHlwKFwidHlcIik7XG5sZXQgdHlwZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+Zl9pZDogSWQudCwgfnR5cF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3RmdW4pLCBmX2lkKSxcbiAgKFBpZWNlLmlkKF90eXApLCB0eXBfaWQpLFxuXTtcbmxldCB0eXBmdW5hcHBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFwcGxpZXMgdGhlIFsqdHlwZSBmdW5jdGlvbipdKCVzKSB0byB0aGUgWyp0eXBlKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IFR5cEZ1bkFwRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF90ZnVuLCBta19hcF9leHBfdHlwKFtbX3R5cF1dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R5cGZ1bmFwcF9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IHR5cGZ1bmFwczogZ3JvdXAgPSB7aWQ6IFR5cEZ1bkFwRXhwLCBmb3JtczogW3R5cGZ1bmFwcF9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5sZXQgX3BhdCA9IHBhdChcInBcIik7XG5sZXQgX3R5cCA9IHR5cChcInR5XCIpO1xubGV0IHR5cGFubl9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdF9pZDogSWQudCwgfnR5cF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0KSwgcGF0X2lkKSxcbiAgKFBpZWNlLmlkKF90eXApLCB0eXBfaWQpLFxuXTtcbmxldCB0eXBhbm5fcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgW3R5cGUgYW5ub3RhdGVkIHBhdHRlcm5dKCVzKSBhbmQgaGF2ZSB0aGUgW2luZGljYXRlZCB0eXBlXSglcykgbWF0Y2ggdGhpcyB0eXBlIGFubm90YXRpb24gcGF0dGVybi5cIjtcbiAge1xuICAgIGlkOiBUeXBBbm5QYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfcGF0LCBzcGFjZSgpLCB0eXBlYW5uKCksIHNwYWNlKCksIF90eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR5cGFubjogZ3JvdXAgPSB7aWQ6IFR5cEFublBhdCwgZm9ybXM6IFt0eXBhbm5fcGF0XX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3RwYXQgPSB0cGF0KFwicFwiKTtcbmxldCBfdHlwX2RlZiA9IHR5cChcInR5X2RlZlwiKTtcbmxldCB0eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyA9ICh+dHBhdF9pZDogSWQudCwgfmRlZl9pZDogSWQudCkgPT4gW1xuICAoUGllY2UuaWQoX3RwYXQpLCB0cGF0X2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgdHlhbGlhc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqdHlwZSpdKCVzKSBpcyBib3VuZCB0byB0aGUgWyp0eXBlIHZhcmlhYmxlKl0oJXMpIGluIHRoZSBib2R5LlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta190eWFsaWFzKFtbc3BhY2UoKSwgX3RwYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX3R5cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IFR5QWxpYXNFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHlhbGlhc19leHBzOiBncm91cCA9IHtpZDogVHlBbGlhc0V4cCwgZm9ybXM6IFt0eWFsaWFzX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHR1cGxlX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHR1cGxlIHR5cGUgY2xhc3NpZmllcyAlcy10dXBsZXMgd2l0aCBjb3JyZXNwb25kaW5nIGVsZW1lbnQgdHlwZXMuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3R5cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwidHkxXCIpLCBjb21tYSwgc3BhY2UoKSwgdHlwKFwiLi4uXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbdHlwKFwidHkxXCIpLCBjb21tYV90eXAoKSwgdHlwKFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZTBfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgZWRnZS1jYXNlIHR1cGxlIHR5cGUsIGFsc28ga25vd24gYXMgdGhlIGB1bml0YCB0eXBlLCBjbGFzc2lmaWVzIDAtdHVwbGVzLCBvZiB3aGljaCB0aGVyZSBpcyBvbmx5IG9uZS5cIjtcbiAge1xuICAgIGlkOiBUdXBsZTBUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCIoKVwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgX3R5cF9lbGVtMSA9IHR5cChcInR5MVwiKTtcbmxldCBfdHlwX2VsZW0yID0gdHlwKFwidHkyXCIpO1xubGV0IHR1cGxlMl90eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmVsZW0xX2lkOiBJZC50LCB+ZWxlbTJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3R5cF9lbGVtMSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTIpLCBlbGVtMl9pZCksXG5dO1xubGV0IHR1cGxlMl90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyB0dXBsZSB0eXBlIGNsYXNzaWZpZXMgMi10dXBsZXMgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgW2ZpcnN0IGVsZW1lbnQgdHlwZV0oJXMpIGFuZCBzZWNvbmQgZWxlbWVudCBvZiB0aGUgW3NlY29uZCBlbGVtZW50IHR5cGVdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfdHlwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3R5cF9lbGVtMSwgY29tbWEsIHNwYWNlKCksIF90eXBfZWxlbTJdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFt0eXAoXCJ0eTFcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCJ0eTJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfdHlwX2VsZW0xID0gdHlwKFwidHkxXCIpO1xubGV0IF90eXBfZWxlbTIgPSB0eXAoXCJ0eTJcIik7XG5sZXQgX3R5cF9lbGVtMyA9IHR5cChcInR5M1wiKTtcbmxldCB0dXBsZTNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50LCB+ZWxlbTNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3R5cF9lbGVtMSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTIpLCBlbGVtMl9pZCksXG4gIChQaWVjZS5pZChfdHlwX2VsZW0zKSwgZWxlbTNfaWQpLFxuXTtcbmxldCB0dXBsZTNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgdHVwbGUgdHlwZSBjbGFzc2lmaWVzIDMtdHVwbGVzIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIFtmaXJzdCBlbGVtZW50IHR5cGVdKCVzKSwgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIFtzZWNvbmQgZWxlbWVudCB0eXBlXSglcyksIGFuZCB0aGlyZCBlbGVtZW50IG9mIHRoZSBbdGhpcmQgZWxlbWVudCB0eXBlXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3R5cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlM1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3R5cF9lbGVtMSxcbiAgICAgIGNvbW1hX3R5cCgpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfZWxlbTIsXG4gICAgICBjb21tYSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2VsZW0zLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFt0eXAoXCJ0eTFcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCJ0eTJcIiksIGNvbW1hX3R5cCgpLCB0eXAoXCJ0eTNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR1cGxlOiBncm91cCA9IHtpZDogVHVwbGVUeXAsIGZvcm1zOiBbdHVwbGVfdHlwXX07XG5cbmxldCB0dXBsZTA6IGdyb3VwID0ge2lkOiBUdXBsZTBUeXAsIGZvcm1zOiBbdHVwbGUwX3R5cF19O1xuXG5sZXQgdHVwbGUyOiBncm91cCA9IHtpZDogVHVwbGUyVHlwLCBmb3JtczogW3R1cGxlMl90eXAsIHR1cGxlX3R5cF19O1xuXG5sZXQgdHVwbGUzOiBncm91cCA9IHtpZDogVHVwbGUzVHlwLCBmb3JtczogW3R1cGxlM190eXAsIHR1cGxlX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHR1cGxlX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlICVzLXR1cGxlcyB3aXRoIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybnMgbWF0Y2ggdGhpcyB0dXBsZSBwYXR0ZXJuLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAge1xuICAgIGlkOiBUdXBsZVBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcInAxXCIpLCBjb21tYSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgdHVwbGVfcGF0X3NpemUyX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBlbGVtMl9pZCksXG5dO1xubGV0IHR1cGxlX3BhdF9zaXplMjogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIDItdHVwbGVzIHdpdGggZmlyc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgW2ZpcnN0IGVsZW1lbnQgcGF0dGVybl0oJXMpIGFuZCBzZWNvbmQgZWxlbWVudCBtYXRjaGluZyB0aGUgW3NlY29uZCBlbGVtZW50IHBhdHRlcm5dKCVzKSBtYXRjaCB0aGlzIHR1cGxlIHBhdHRlcm4uXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlMlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXQxLCBjb21tYSwgc3BhY2UoKSwgX3BhdDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9wYXQzID0gcGF0KFwicDNcIik7XG5sZXQgdHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50LCB+ZWxlbTNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIGVsZW0yX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQzKSwgZWxlbTNfaWQpLFxuXTtcbmxldCB0dXBsZV9wYXRfc2l6ZTM6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSAzLXR1cGxlcyB3aXRoIGZpcnN0IGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtmaXJzdCBlbGVtZW50IHBhdHRlcm5dKCVzKSwgc2Vjb25kIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtzZWNvbmQgZWxlbWVudCBwYXR0ZXJuXSglcyksIGFuZCB0aGlyZCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbdGhpcmQgZWxlbWVudCBwYXR0ZXJuXSglcykgbWF0Y2ggdGhpcyB0dXBsZSBwYXR0ZXJuLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAge1xuICAgIGlkOiBUdXBsZTNQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF9wYXQxLFxuICAgICAgY29tbWFfcGF0KCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3BhdDIsXG4gICAgICBjb21tYSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfcGF0MyxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKSwgY29tbWFfcGF0KCksIHBhdChcInAzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZTogZ3JvdXAgPSB7aWQ6IFR1cGxlUGF0LCBmb3JtczogW3R1cGxlX3BhdF19O1xubGV0IHR1cGxlMjogZ3JvdXAgPSB7aWQ6IFR1cGxlMlBhdCwgZm9ybXM6IFt0dXBsZV9wYXRfc2l6ZTIsIHR1cGxlX3BhdF19O1xubGV0IHR1cGxlMzogZ3JvdXAgPSB7aWQ6IFR1cGxlM1BhdCwgZm9ybXM6IFt0dXBsZV9wYXRfc2l6ZTMsIHR1cGxlX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHR1cGxlX2V4YW1wbGVfMSA9IHtcbiAgc3ViX2lkOiBUdXBsZTEsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIodHJ1ZSwgMSlcIiksXG4gIG1lc3NhZ2U6IFwiQSB0dXBsZSB3aXRoIGZpcnN0IGVsbWVudCB0cnVlIGFuZCBzZWNvbmQgZWxlbWVudCAxLlwiLFxufTtcbmxldCB0dXBsZV9leGFtcGxlXzIgPSB7XG4gIHN1Yl9pZDogVHVwbGUyLFxuICB0ZXJtOiBta19leGFtcGxlKFwiKDEsIDIsIDMpXCIpLFxuICBtZXNzYWdlOiBcIkEgdHVwbGUgd2l0aCBmaXJzdCBlbGVtZW50IDEsIHNlY29uZCBlbGVtZW50IDIsIGFuZCB0aGlyZCBlbGVtZW50IDMuXCIsXG59O1xubGV0IHR1cGxlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgdHVwbGUgaGFzICVzIGVsZW1lbnRzLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBUdXBsZUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2V4cChcImUxXCIpLCBjb21tYSwgc3BhY2UoKSwgZXhwKFwiLi4uXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBleHAoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZV9leGFtcGxlXzEsIHR1cGxlX2V4YW1wbGVfMl0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCB0dXBsZV9leHBfc2l6ZTJfY29sb3JpbmdfaWRzID1cbiAgICAofmV4cDFfaWQ6IElkLnQsIH5leHAyX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhQaWVjZS5pZChfZXhwMSksIGV4cDFfaWQpLCAoUGllY2UuaWQoX2V4cDIpLCBleHAyX2lkKV07XG59O1xubGV0IHR1cGxlX2V4cF9zaXplMjogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgMi10dXBsZSBoYXMgYSBbZmlyc3RdKCVzKSBhbmQgW3NlY29uZF0oJXMpIGVsZW1lbnQuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlMkV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBjb21tYSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIGV4cChcImUyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGVfZXhhbXBsZV8xXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IF9leHAzID0gZXhwKFwiZTNcIik7XG5sZXQgdHVwbGVfZXhwX3NpemUzX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5leHAxX2lkOiBJZC50LCB+ZXhwMl9pZDogSWQudCwgfmV4cDNfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9leHAxKSwgZXhwMV9pZCksXG4gICAgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCksXG4gICAgKFBpZWNlLmlkKF9leHAzKSwgZXhwM19pZCksXG4gIF07XG59O1xubGV0IHR1cGxlX2V4cF9zaXplMzogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgMy10dXBsZSBoYXMgYSBbZmlyc3RdKCVzKSwgW3NlY29uZF0oJXMpLCBhbmQgW3RoaXJkXSglcykgZWxlbWVudC5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfZXhwKCk7XG4gIHtcbiAgICBpZDogVHVwbGUzRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfZXhwMSxcbiAgICAgIGNvbW1hX2V4cCgpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9leHAyLFxuICAgICAgY29tbWEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cDMsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiZTJcIiksIGNvbW1hX2V4cCgpLCBleHAoXCJlM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlX2V4YW1wbGVfMl0sXG4gIH07XG59O1xuXG5sZXQgdHVwbGVzOiBncm91cCA9IHtpZDogVHVwbGVFeHAsIGZvcm1zOiBbdHVwbGVfZXhwXX07XG5cbmxldCB0dXBsZXMyOiBncm91cCA9IHtpZDogVHVwbGUyRXhwLCBmb3JtczogW3R1cGxlX2V4cF9zaXplMiwgdHVwbGVfZXhwXX07XG5cbmxldCB0dXBsZXMzOiBncm91cCA9IHtpZDogVHVwbGUzRXhwLCBmb3JtczogW3R1cGxlX2V4cF9zaXplMywgdHVwbGVfZXhwXX07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5tb2R1bGUgVGVzdFN0YXR1cyA9IEhhejNsY29yZS5UZXN0U3RhdHVzO1xubW9kdWxlIFRlc3RNYXAgPSBIYXozbGNvcmUuVGVzdE1hcDtcbm1vZHVsZSBUZXN0UmVzdWx0cyA9IEhhejNsY29yZS5UZXN0UmVzdWx0cztcbm1vZHVsZSBJbnRlcmZhY2UgPSBIYXozbGNvcmUuSW50ZXJmYWNlO1xuXG4vLyBsZXQgdGVzdF9pbnN0YW5jZV92aWV3ID1cbi8vICAgICAoXG4vLyAgICAgICB+c2V0dGluZ3MsXG4vLyAgICAgICB+aW5qZWN0LFxuLy8gICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgKGQsIHN0YXR1cyk6IFRlc3RNYXAuaW5zdGFuY2VfcmVwb3J0LFxuLy8gICAgICkgPT5cbi8vICAgZGl2KFxuLy8gICAgIH5hdHRyPVxuLy8gICAgICAgQXR0ci5tYW55KFtjbHNzKFtcInRlc3QtaW5zdGFuY2VcIiwgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKV0pXSksXG4vLyAgICAgW1xuLy8gICAgICAgUmVhZE9ubHlFZGl0b3Iudmlldyhcbi8vICAgICAgICAgfmluamVjdCxcbi8vICAgICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgICB+d2lkdGg9NDAsXG4vLyAgICAgICAgIH5yZXN1bHRfa2V5PVwiXCIsXG4vLyAgICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgICBkLFxuLy8gICAgICAgKSxcbi8vICAgICAgIClcbi8vICAgICAgIERIQ29kZS52aWV3KFxuLy8gICAgICAgICB+aW5qZWN0LFxuLy8gICAgICAgICB+c2V0dGluZ3MsXG4vLyAgICAgICAgIH5zZWxlY3RlZF9ob2xlX2luc3RhbmNlPU5vbmUsXG4vLyAgICAgICAgIH5mb250X21ldHJpY3MsXG4vLyAgICAgICAgIH53aWR0aD00MCxcbi8vICAgICAgICAgfnJlc3VsdF9rZXk9XCJcIixcbi8vICAgICAgICAgfmluZm9tYXAsXG4vLyAgICAgICAgIGQsXG4vLyAgICAgICApLFxuLy8gICAgIF0sXG4vLyAgICk7XG5cbmxldCBqdW1wX3RvX3Rlc3QgPSAofmluamVjdCwgcG9zLCBpZCwgXykgPT4ge1xuICBsZXQgZWZmZWN0MSA9IGluamVjdChVcGRhdGUuTWFrZUFjdGl2ZShFeGVyY2lzZXMocG9zLCBNYWluRWRpdG9yKSkpO1xuICBsZXQgZWZmZWN0MiA9IGluamVjdChVcGRhdGUuUGVyZm9ybUFjdGlvbihKdW1wKFRpbGVJZChpZCkpKSk7XG4gIEVmZmVjdC5iaW5kKGVmZmVjdDEsIH5mPV9yZXN1bHQxID0+IGVmZmVjdDIpO1xufTtcblxuLy8gbGV0IHRlc3RfcmVwb3J0X3ZpZXcgPVxuLy8gICAgIChcbi8vICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgIH5pbmplY3QsXG4vLyAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgfmRlc2NyaXB0aW9uOiBvcHRpb24oc3RyaW5nKT1Ob25lLFxuLy8gICAgICAgfmluZm9tYXAsXG4vLyAgICAgICBpOiBpbnQsXG4vLyAgICAgICAoaWQsIGluc3RhbmNlX3JlcG9ydHMpOiBUZXN0TWFwLnJlcG9ydCxcbi8vICAgICApID0+IHtcbi8vICAgbGV0IHN0YXR1cyA9XG4vLyAgICAgaW5zdGFuY2VfcmVwb3J0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbi8vICAgZGl2KFxuLy8gICAgIH5hdHRyPVxuLy8gICAgICAgQXR0ci5tYW55KFtcbi8vICAgICAgICAgQXR0ci5jbGFzc18oXCJ0ZXN0LXJlcG9ydFwiKSxcbi8vICAgICAgICAgQXR0ci5vbl9jbGljayhqdW1wX3RvX3Rlc3QofmluamVjdCwgWW91clRlc3RzVGVzdGluZywgaWQpKSxcbi8vICAgICAgIF0pLFxuLy8gICAgIFtcbi8vICAgICAgIGRpdihcbi8vICAgICAgICAgfmF0dHI9Y2xzcyhbXCJ0ZXN0LWlkXCIsIFwiVGVzdFwiICsrIHN0YXR1c10pLFxuLy8gICAgICAgICAvLyBub3RlOiBwcmludHMgbGV4aWNhbCBpbmRleCwgbm90IGlkXG4vLyAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4vLyAgICAgICApLFxuLy8gICAgICAgZGl2KFxuLy8gICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtaW5zdGFuY2VzXCIpLFxuLy8gICAgICAgICBMaXN0Lm1hcChcbi8vICAgICAgICAgICB0ZXN0X2luc3RhbmNlX3ZpZXcofmluZm9tYXAsIH5zZXR0aW5ncywgfmluamVjdCwgfmZvbnRfbWV0cmljcyksXG4vLyAgICAgICAgICAgaW5zdGFuY2VfcmVwb3J0cyxcbi8vICAgICAgICAgKSxcbi8vICAgICAgICksXG4vLyAgICAgXVxuLy8gICAgIEAgKFxuLy8gICAgICAgc3dpdGNoIChkZXNjcmlwdGlvbikge1xuLy8gICAgICAgfCBOb25lID0+IFtdXG4vLyAgICAgICB8IFNvbWUoZCkgPT4gW2Rpdih+YXR0cj1jbHNzKFtcInRlc3QtZGVzY3JpcHRpb25cIl0pLCBbdGV4dChkKV0pXVxuLy8gICAgICAgfVxuLy8gICAgICksXG4vLyAgICk7XG4vLyB9O1xuXG4vLyBsZXQgdGVzdF9yZXBvcnRzX3ZpZXcgPVxuLy8gICAgIChcbi8vICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgIH5pbmplY3QsXG4vLyAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgfmluZm9tYXAsXG4vLyAgICAgICB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4vLyAgICAgKSA9PlxuLy8gICBkaXYoXG4vLyAgICAgfmF0dHI9Y2xzcyhbXCJwYW5lbC1ib2R5XCIsIFwidGVzdC1yZXBvcnRzXCJdKSxcbi8vICAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuLy8gICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXBvcnQgYXZhaWxhYmxlLlwiKV1cbi8vICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuLy8gICAgICAgTGlzdC5tYXBpKFxuLy8gICAgICAgICAoaSwgcikgPT5cbi8vICAgICAgICAgICB0ZXN0X3JlcG9ydF92aWV3KFxuLy8gICAgICAgICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgICAgICAgfmluamVjdCxcbi8vICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4vLyAgICAgICAgICAgICB+aW5mb21hcCxcbi8vICAgICAgICAgICAgIH5kZXNjcmlwdGlvbj1MaXN0Lm50aF9vcHQodGVzdF9yZXN1bHRzLmRlc2NyaXB0aW9ucywgaSksXG4vLyAgICAgICAgICAgICBpLFxuLy8gICAgICAgICAgICAgcixcbi8vICAgICAgICAgICApLFxuLy8gICAgICAgICB0ZXN0X3Jlc3VsdHMudGVzdF9tYXAsXG4vLyAgICAgICApXG4vLyAgICAgfSxcbi8vICAgKTtcblxubGV0IHRlc3RfYmFyX3NlZ21lbnQgPSAofmluamVjdCwgcG9zLCAoaWQsIHJlcG9ydHMpKSA9PiB7XG4gIGxldCBzdGF0dXMgPSByZXBvcnRzIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzIHw+IFRlc3RTdGF0dXMudG9fc3RyaW5nO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcInNlZ21lbnRcIiwgc3RhdHVzXSksXG4gICAgICAgIEF0dHIub25fY2xpY2soanVtcF90b190ZXN0KH5pbmplY3QsIHBvcywgaWQpKSxcbiAgICAgIF0pLFxuICAgIFtdLFxuICApO1xufTtcblxubGV0IHRlc3RfYmFyID0gKH5pbmplY3QsIH50ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQsIHBvcykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1iYXJcIiksXG4gICAgTGlzdC5tYXAodGVzdF9iYXJfc2VnbWVudCh+aW5qZWN0LCBwb3MpLCB0ZXN0X3Jlc3VsdHMudGVzdF9tYXApLFxuICApO1xuXG4vLyByZXN1bHRfc3VtbWFyeV9zdHIgYW5kIHRlc3Rfc3VtbWFyeV9zdHIgaGF2ZSBiZWVuIG1vdmVkIHRvIGhhejNsY29yZS9UZXN0UmVzdWx0cy5yZVxuXG5sZXQgcGVyY2VudF92aWV3ID0gKG46IGludCwgcDogaW50KTogTm9kZS50ID0+IHtcbiAgbGV0IHBlcmNlbnRhZ2UgPVxuICAgIG4gPT0gMCA/IDEwMC4gOiAxMDAuICouIGZsb2F0X29mX2ludChwKSAvLiBmbG9hdF9vZl9pbnQobik7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRlc3QtcGVyY2VudFwiLCBuID09IHAgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgcGVyY2VudGFnZSkpXSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X3BlcmNlbnRhZ2UgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KTogTm9kZS50ID0+XG4gIHBlcmNlbnRfdmlldyh0ZXN0X3Jlc3VsdHMudG90YWwsIHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxubGV0IHRlc3RfdGV4dCA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgIFtcbiAgICAgIHRlc3RfcGVyY2VudGFnZSh0ZXN0X3Jlc3VsdHMpLFxuICAgICAgZGl2KFt0ZXh0KFwiOlwiKV0pLFxuICAgICAgdGV4dChUZXN0UmVzdWx0cy50ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpLFxuICAgIF0sXG4gICk7XG5cbmxldCB0ZXN0X3N1bW1hcnkgPSAofmluamVjdCwgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAge1xuICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXN1bHRzIGF2YWlsYWJsZS5cIildXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PiBbXG4gICAgICAgICAgdGVzdF90ZXh0KHRlc3RfcmVzdWx0cyksXG4gICAgICAgICAgdGVzdF9iYXIofmluamVjdCwgfnRlc3RfcmVzdWx0cywgWW91clRlc3RzVGVzdGluZyksXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn07XG5cbmxldCB2aWV3X29mX21haW5fdGl0bGVfYmFyID0gKHRpdGxlX3RleHQ6IHN0cmluZykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJ0aXRsZS1iYXJcIiwgXCJwYW5lbC10aXRsZS1iYXJcIl0pXSksXG4gICAgW05vZGUudGV4dCh0aXRsZV90ZXh0KV0sXG4gICk7XG5cbi8vIGxldCBpbnNwZWN0b3JfdmlldyA9XG4vLyAgICAgKFxuLy8gICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgfmluamVjdCxcbi8vICAgICAgIH5mb250X21ldHJpY3MsXG4vLyAgICAgICB+dGVzdF9tYXA6IFRlc3RNYXAudCxcbi8vICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgaWQ6IEhhejNsY29yZS5JZC50LFxuLy8gICAgIClcbi8vICAgICA6IG9wdGlvbih0KSA9PiB7XG4vLyAgIHN3aXRjaCAoVGVzdE1hcC5sb29rdXAoaWQsIHRlc3RfbWFwKSkge1xuLy8gICB8IFNvbWUoaW5zdGFuY2VzKSB3aGVuIFRlc3RNYXAuam9pbnRfc3RhdHVzKGluc3RhbmNlcykgIT0gSW5kZXQgPT5cbi8vICAgICBTb21lKFxuLy8gICAgICAgZGl2KFxuLy8gICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtaW5zcGVjdG9yXCIpLFxuLy8gICAgICAgICBbXG4vLyAgICAgICAgICAgZGl2KFxuLy8gICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWluc3RhbmNlc1wiKSxcbi8vICAgICAgICAgICAgIExpc3QubWFwKFxuLy8gICAgICAgICAgICAgICB0ZXN0X2luc3RhbmNlX3ZpZXcofnNldHRpbmdzLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCB+aW5mb21hcCksXG4vLyAgICAgICAgICAgICAgIGluc3RhbmNlcyxcbi8vICAgICAgICAgICAgICksXG4vLyAgICAgICAgICAgKSxcbi8vICAgICAgICAgXSxcbi8vICAgICAgICksXG4vLyAgICAgKVxuLy8gICB8IF8gPT4gTm9uZVxuLy8gICB9O1xuLy8gfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCB0ZXN0X3RydWVfZXggPSB7XG4gIHN1Yl9pZDogVGVzdFRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0ZXN0IHRydWUgZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoaXMgaXMgcmVwb3J0ZWQgYXMgYSBwYXNzaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyB0cnVlLlwiLFxufTtcbi8vIFRPRE8gYXJlIHRoZXNlIHJlYWxseSB0aGUgY29ycmVjdCBtZXNzYWdlcy9leHBsYW5hdGlvbnM7IG1heWJlIGluY2x1ZGUgc29tZXRoaW5nIGFib3V0IHRoZSByZXN1bHQgYmVpbmcgdHJpdlxubGV0IHRlc3RfZmFsc2VfZXggPSB7XG4gIHN1Yl9pZDogVGVzdEZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCAzIDwgMSBlbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhpcyBpcyByZXBvcnRlZCBhcyBhIGZhaWxpbmcgdGVzdCBiZWNhdXNlIHRoZSBib2R5IG9mIHRoZSB0ZXN0IGlzIDMgPCAxIHdoaWNoIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZVwiKTtcbmxldCB0ZXN0X2V4cF9jb2xvcmluZ19pZHMgPSAofmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9ib2R5KSwgYm9keV9pZCksXG5dO1xubGV0IHRlc3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmJvZHkqXSglcykgb2YgdGhlIHRlc3QgZXZhbHV0ZXMgdG8gYHRydWVgLCB0aGUgdGVzdCBwYXNzZXMuIE90aGVyd2lzZSwgdGhlIHRlc3QgZmFpbHMuXCI7XG4gIHtcbiAgICBpZDogVGVzdEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW21rX3Rlc3QoW1tzcGFjZSgpLCBfZXhwX2JvZHksIHNwYWNlKCldXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0ZXN0X3RydWVfZXgsIHRlc3RfZmFsc2VfZXhdLFxuICB9O1xufTtcblxubGV0IHRlc3RzOiBncm91cCA9IHtpZDogVGVzdEV4cCwgZm9ybXM6IFt0ZXN0X2V4cF19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBpbnRfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgSW50YCB0eXBlIGNsYXNzaWZpZXMgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBJbnRUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJJbnRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZsb2F0X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEZsb2F0YCB0eXBlIGNsYXNzaWZpZXMgNjQtYml0IGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IHN0YW5kYXJkLlwiO1xuICB7XG4gICAgaWQ6IEZsb2F0VHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiRmxvYXRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgQm9vbGAgdHlwZSBjbGFzc2lmaWVzIGJvb2xlYW4gdmFsdWVzLlwiO1xuICB7XG4gICAgaWQ6IEJvb2xUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJCb29sXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdHJfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBgU3RyaW5nYCB0eXBlIGNsYXNzaWZpZXMgc3RyaW5nIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBTdHJUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJTdHJpbmdcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHZhcl90eXAgPSAobmFtZTogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiYCVzYCBpcyBhIHR5cGUgdmFyaWFibGUuXCI7XG4gIHtcbiAgICBpZDogVmFyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHR5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgaW50OiBncm91cCA9IHtpZDogSW50VHlwLCBmb3JtczogW2ludF90eXBdfTtcblxubGV0IGZsb2F0OiBncm91cCA9IHtpZDogRmxvYXRUeXAsIGZvcm1zOiBbZmxvYXRfdHlwXX07XG5cbmxldCBib29sOiBncm91cCA9IHtpZDogQm9vbFR5cCwgZm9ybXM6IFtib29sX3R5cF19O1xuXG5sZXQgc3RyOiBncm91cCA9IHtpZDogU3RyVHlwLCBmb3JtczogW3N0cl90eXBdfTtcblxubGV0IHZhciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhclR5cCwgZm9ybXM6IFt2YXJfdHlwKG5hbWUpXX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbmxldCB3aWxkX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgKndpbGRjYXJkIHBhdHRlcm4qIG1hdGNoZXMgYW55IGV4cHJlc3Npb24uXCI7XG4gIHtcbiAgICBpZDogV2lsZFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIl9cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGludGxpdF9wYXQgPSAoaTogaW50KTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlaWAgbWF0Y2ggdGhlICpgJWlgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEludFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2kgfD4gc3RyaW5nX29mX2ludCB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZmxvYXRsaXRfcGF0ID0gKGY6IGZsb2F0KTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlZmAgbWF0Y2ggdGhlICpgJWZgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEZsb2F0UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbZiB8PiBzdHJpbmdfb2ZfZmxvYXQgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xsaXRfcGF0ID0gKGI6IGJvb2wpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdmFsdWUgYCViYCBtYXRjaCB0aGUgKmAlYmAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogQm9vbFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2IgfD4gc3RyaW5nX29mX2Jvb2wgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHN0cmxpdF9wYXQgPSAoczogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlc2AgbWF0Y2ggdGhlICpgJXNgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IFN0clBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3MgfD4gYWJicmV2aWF0ZSB8PiBIYXozbGNvcmUuRm9ybS5zdHJpbmdfcXVvdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0cml2X3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHdpdGggdGhlIHRyaXZpYWwgdmFsdWUgYCgpYCBtYXRjaCB0aGUgKnRyaXZpYWwgcGF0dGVybiBgKClgKi5cIjtcbiAge1xuICAgIGlkOiBUcml2UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiKClcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHZhcl9wYXQgPSAobmFtZTogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyAqcGF0dGVybiB2YXJpYWJsZSogbWF0Y2hlcyBhbnkgZXhwcmVzc2lvbiwgYmluZGluZyBpdHMgdmFsdWUgdG8gdmFyaWFibGUgYCVzYC5cIjtcbiAge1xuICAgIGlkOiBWYXJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuYW1lIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBjdHJfcGF0ID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgKmAlc2AgY29uc3RydWN0b3IqIG1hdGNoIHRoaXMgY29uc3RydWN0b3IgcGF0dGVybi5cIjtcbiAge1xuICAgIGlkOiBDdHJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuYW1lIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB3aWxkOiBncm91cCA9IHtpZDogV2lsZFBhdCwgZm9ybXM6IFt3aWxkX3BhdF19O1xuXG5sZXQgaW50bGl0ID0gKGk6IGludCk6IGdyb3VwID0+IHtpZDogSW50UGF0LCBmb3JtczogW2ludGxpdF9wYXQoaSldfTtcblxubGV0IGZsb2F0bGl0ID0gKGY6IGZsb2F0KTogZ3JvdXAgPT4ge1xuICBpZDogRmxvYXRQYXQsXG4gIGZvcm1zOiBbZmxvYXRsaXRfcGF0KGYpXSxcbn07XG5cbmxldCBib29sbGl0ID0gKGI6IGJvb2wpOiBncm91cCA9PiB7aWQ6IEJvb2xQYXQsIGZvcm1zOiBbYm9vbGxpdF9wYXQoYildfTtcblxubGV0IHN0cmxpdCA9IChzOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFN0clBhdCwgZm9ybXM6IFtzdHJsaXRfcGF0KHMpXX07XG5cbmxldCB0cml2OiBncm91cCA9IHtpZDogVHJpdlBhdCwgZm9ybXM6IFt0cml2X3BhdF19O1xuXG5sZXQgdmFyID0gKG5hbWU6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogVmFyUGF0LCBmb3JtczogW3Zhcl9wYXQobmFtZSldfTtcblxubGV0IGN0ciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IEN0clBhdCwgZm9ybXM6IFtjdHJfcGF0KG5hbWUpXX07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHRyaXZfZXhwOiBmb3JtID0ge1xuICBpZDogVHJpdkV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtleHAoXCIoKVwiKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIlRoZSB1bmlxdWUgdmFsdWUgb2YgdHlwZSBgKClgLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IHRyaXZfZXhwczogZ3JvdXAgPSB7aWQ6IFRyaXZFeHAsIGZvcm1zOiBbdHJpdl9leHBdfTtcblxubGV0IGRlZmVycmFsX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBEZWZlcnJhbCxcbiAgdGVybTpcbiAgICBta19leGFtcGxlKFxuICAgICAgXCJsZXQgcGx1cyA9IGZ1biAoeCwgeSkgLT4geCArIHkgaW5cXG5sZXQgaW5jciA9IHBsdXMoXywgMSkgaW5cXG5pbmNyKDUpXCIsXG4gICAgKSxcbiAgbWVzc2FnZTogXCJJbiB0aGUgcGFydGlhbCBhcHBsaWNhdGlvbiBwbHVzKF8sIDEpLCB0aGUgZGVmZXJyYWwgZXhwcmVzc2lvbiBtYXJrcyB0aGUgZmlyc3QgYXJndW1lbnQsIHdoaWNoIHdhcyBub3QgYXBwbGllZCB1bnRpbCBpbiB0aGUgZnVsbCBmdW5jdGlvbiBhcHBsaWNhdGlvbiBpbmNyKDUpLlwiLFxufTtcbmxldCBkZWZlcnJhbF9leHA6IGZvcm0gPSB7XG4gIGlkOiBEZWZlcnJhbEV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtleHAoXCJfXCIpXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiTWFya3MgYW4gYXJndW1lbnQgdGhhdCBoYXMgbm90IHlldCBiZWVuIGFwcGxpZWQgaW4gYSBwYXJ0aWFsIGFwcGxpY2F0aW9uLlwiLFxuICBleGFtcGxlczogW2RlZmVycmFsX2V4cF9leF0sXG59O1xubGV0IGRlZmVycmFsX2V4cHM6IGdyb3VwID0ge2lkOiBEZWZlcnJhbEV4cCwgZm9ybXM6IFtkZWZlcnJhbF9leHBdfTtcblxubGV0IGJvb2xfZXhwID0gKGI6IGJvb2wpOiBmb3JtID0+IHtcbiAgaWQ6IEJvb2xFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKGIgfD4gc3RyaW5nX29mX2Jvb2wpXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBib29sZWFuIGxpdGVyYWwsIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBib29sX2V4cHMgPSAoYjogYm9vbCk6IGdyb3VwID0+IHtpZDogQm9vbEV4cCwgZm9ybXM6IFtib29sX2V4cChiKV19O1xuXG5sZXQgaW50X2V4cCA9IChuOiBpbnQpOiBmb3JtID0+IHtcbiAgaWQ6IEludEV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtuIHw+IHN0cmluZ19vZl9pbnQgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBzaWduZWQgaW50ZWdlciBsaXRlcmFsLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGludF9leHBzID0gKGk6IGludCk6IGdyb3VwID0+IHtpZDogSW50RXhwLCBmb3JtczogW2ludF9leHAoaSldfTtcblxubGV0IGZsb2F0X2V4cCA9IChmOiBmbG9hdCk6IGZvcm0gPT4ge1xuICBpZDogRmxvYXRFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZiB8PiBzdHJpbmdfb2ZfZmxvYXQgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBmbG9hdGluZy1wb2ludCBsaXRlcmFsLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGZsb2F0X2V4cHMgPSAoZjogZmxvYXQpOiBncm91cCA9PiB7XG4gIGlkOiBGbG9hdEV4cCxcbiAgZm9ybXM6IFtmbG9hdF9leHAoZildLFxufTtcblxubGV0IHN0cmluZ19leHAgPSAoczogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBTdHJpbmdFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbcyB8PiBhYmJyZXZpYXRlIHw+IEhhejNsY29yZS5Gb3JtLnN0cmluZ19xdW90ZSB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJBIHN0cmluZyBsaXRlcmFsLiBBbnkgY2hhcmFjdGVyIGJlc2lkZXMgZG91YmxlIHF1b3RlcyAoYFxcXCJgKSBjYW4gYmUgdXNlZC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBzdHJpbmdfZXhwcyA9IChzOiBzdHJpbmcpOiBncm91cCA9PiB7XG4gIGlkOiBTdHJpbmdFeHAsXG4gIGZvcm1zOiBbc3RyaW5nX2V4cChzKV0sXG59O1xuXG5sZXQgdmFyX2V4cCA9IChuOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgaWQ6IFZhckV4cCxcbiAgc3ludGFjdGljX2Zvcm06IFtuIHw+IGFiYnJldmlhdGUgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiVGFrZXMgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIHRoYXQgaXQgd2FzIGJvdW5kIHRvLlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IHZhcl9leHBzID0gKHg6IHN0cmluZyk6IGdyb3VwID0+IHtpZDogVmFyRXhwLCBmb3JtczogW3Zhcl9leHAoeCldfTtcblxubGV0IGN0cl9leHAgPSAoYzogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBDdHJFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbYyB8PiBhYmJyZXZpYXRlIHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcImAlc2AgaXMgYSBjb25zdHJ1Y3RvciBmb3IgYSBzdW0gdHlwZSB2YXJpYW50LlwiLFxuICBleGFtcGxlczogW10sXG59O1xubGV0IGN0ciA9IChjOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IEN0ckV4cCwgZm9ybXM6IFtjdHJfZXhwKGMpXX07XG4iLCJ0eXBlIG9yZGluYWwgPSBpbnQ7XG5cbnR5cGUgc3RhdHVzID1cbiAgfCBFbXB0eVxuICB8IFBhcnRpYWxcbiAgfCBGdWxsO1xuXG50eXBlIGludGVydmFsID0gKGZsb2F0LCBmbG9hdCk7XG5cbnR5cGUgdCA9IHtcbiAgcm9vdDogbm9kZSxcbiAgLy8gaW50ZXJ2YWwgZW5kcG9pbnRzIHNwZWNpZmllZCBhdCBpbml0aWFsaXphdGlvblxuICB2YWx1ZXM6IGFycmF5KGZsb2F0KSxcbiAgLy8gb3JkaW5hbHMgb2Ygc29ydGVkIGVuZHBvaW50c1xuICBvcmRpbmFsczogSGFzaHRibC50KGZsb2F0LCBvcmRpbmFsKSxcbn1cbmFuZCBub2RlID0ge1xuICAvLyBpbnZhcmlhbnQ6IHVuaXQgaW50ZXJ2YWxzIGFyZSBsZWF2ZXNcbiAgaW50ZXJ2YWw6IChvcmRpbmFsLCBvcmRpbmFsKSxcbiAgc2hhcGU6IG5vZGVfc2hhcGUsXG4gIC8vIHN0YXR1cyBhbmQgY291bnQgY291bGQgYmUgZXh0ZXJuYWxpemVkIGluIGEgbW9yZVxuICAvLyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZGF0YSBzdHJ1Y3R1cmVcbiAgLy8gYnV0IHdlIG9ubHkgbmVlZCB0aGlzIGRhdGEgc3RydWN0dXJlIGZvciBhIHNpbmdsZVxuICAvLyBwdXJwb3NlIGF0IHRoZSBtb21lbnRcbiAgc3RhdHVzLFxuICBjb3VudDogaW50LFxufVxuYW5kIG5vZGVfc2hhcGUgPVxuICB8IExlYWZcbiAgfCBCcmFuY2goTGF6eS50KG5vZGUpLCBMYXp5LnQobm9kZSkpO1xuXG5sZXQgbWsgPSAodmFsdWVzOiBsaXN0KGZsb2F0KSkgPT4ge1xuICBsZXQgKHZhbHVlcywgb3JkaW5hbHMpID0ge1xuICAgIGxldCBzb3J0ZWRfdmFsdWVzID0gTGlzdC5zb3J0X3VuaXEoRmxvYXQuY29tcGFyZSwgdmFsdWVzKTtcbiAgICAoXG4gICAgICBBcnJheS5vZl9saXN0KHNvcnRlZF92YWx1ZXMpLFxuICAgICAgc29ydGVkX3ZhbHVlc1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCB5KSA9PiAoeSwgaSkpXG4gICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgfD4gSGFzaHRibC5vZl9zZXEsXG4gICAgKTtcbiAgfTtcblxuICBsZXQgcmVjIG1rX25vZGUgPSAoYTogb3JkaW5hbCwgYjogb3JkaW5hbCk6IG5vZGUgPT4ge1xuICAgIGxldCBzaGFwZSA9XG4gICAgICBpZiAoYSArIDEgPT0gYikge1xuICAgICAgICBMZWFmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1pZCA9IChhICsgYikgLyAyO1xuICAgICAgICBCcmFuY2gobGF6eShta19ub2RlKGEsIG1pZCkpLCBsYXp5KG1rX25vZGUobWlkLCBiKSkpO1xuICAgICAgfTtcbiAgICB7c2hhcGUsIGludGVydmFsOiAoYSwgYiksIGNvdW50OiAwLCBzdGF0dXM6IEVtcHR5fTtcbiAgfTtcblxuICB7dmFsdWVzLCBvcmRpbmFscywgcm9vdDogbWtfbm9kZSgwLCBBcnJheS5sZW5ndGgodmFsdWVzKSAtIDEpfTtcbn07XG5cbmxldCB1cGRhdGVfc3RhdHVzID0gKG5vZGU6IG5vZGUpOiBub2RlID0+IHtcbiAgbGV0IHN0YXR1cyA9XG4gICAgaWYgKG5vZGUuY291bnQgPiAwKSB7XG4gICAgICBGdWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG5vZGUuc2hhcGUpIHtcbiAgICAgIHwgTGVhZiA9PiBFbXB0eVxuICAgICAgfCBCcmFuY2gobCwgcikgPT5cbiAgICAgICAgc3dpdGNoIChMYXp5LmZvcmNlKGwpLnN0YXR1cywgTGF6eS5mb3JjZShyKS5zdGF0dXMpIHtcbiAgICAgICAgfCAoRW1wdHksIEVtcHR5KSA9PiBFbXB0eVxuICAgICAgICB8IF8gPT4gUGFydGlhbFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIHsuLi5ub2RlLCBzdGF0dXN9O1xufTtcblxudHlwZSBvcCA9XG4gIHwgSW5zZXJ0XG4gIHwgRGVsZXRlO1xubGV0IHN0cmluZ19vZl9vcCA9XG4gIGZ1blxuICB8IEluc2VydCA9PiBcImluc2VydFwiXG4gIHwgRGVsZXRlID0+IFwiZGVsZXRlXCI7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gZm9sbG93cyBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNlY3Rpb25zIDguMyArIDguNVxuICogb2YgQ29tcHV0YXRpb25hbCBHZW9tZXRyeTogQW4gSW50cm9kdWN0aW9uIGJ5IFByZXBhcmF0YSAmIFNoYW1vcy5cbiAqIFNlY3Rpb24gOC4zIGRlc2NyaWJlcyB0aGUgZ2VuZXJhbCB1c2Ugb2Ygc2VnbWVudCB0cmVlcyB0byBjb21wdXRlXG4gKiBmZWF0dXJlcyBvZiBhIGNvbGxlY3Rpb24gb2YgcmVjdGFuZ2xlczsgU2VjdGlvbiA4LjUgZGVzY3JpYmVzIHRoZVxuICogc3BlY2lhbGl6YXRpb24gb2YgdGhhdCBhcHByb2FjaCB0byBjb21wdXRlIHRoZSBjb250b3VyIG9mIGEgdW5pb25cbiAqIG9mIHJlY3RhbmdsZXMuIFRoZSBnZW5lcmFsIGZyYW1ld29yayBsYWlkIG91dCBpbiA4LjMgaXMgdW5uZWNlc3NhcnlcbiAqIGZvciBvdXIgcHVycG9zZXMgKHNvIG91ciBpbXBsZW1lbnRhdGlvbiBjb3VsZCBiZSBzdHJlYW1saW5lZCkgYnV0IElcbiAqIGltcGxlbWVudGVkIGl0IGFueXdheSBzbyB0aGF0IHRoZSB0ZXh0IHNlcnZlcyBhcyBkb2N1bWVudGF0aW9uIHRoYXRcbiAqIGNsb3NlbHkgbWFwcyB0byBvdXIgY29kZS5cbiAqL1xubGV0IHBlcmZvcm0gPSAob3AsIChhLCBiKTogaW50ZXJ2YWwsIHRyZWU6IHQpOiB0ID0+IHtcbiAgbGV0IHJlYyBnbyA9IChvcCwgKGEsIGIpIGFzIGludGVydmFsLCBub2RlOiBub2RlKTogbm9kZSA9PiB7XG4gICAgbGV0IChhJywgYicpID0gbm9kZS5pbnRlcnZhbDtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBpZiAoYSA8PSBhJyAmJiBiJyA8PSBiKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBhbGxvY2F0ZSB0byB0aGlzIG5vZGVcbiAgICAgICAgICAuLi5ub2RlLFxuICAgICAgICAgIGNvdW50OlxuICAgICAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgfCBJbnNlcnQgPT4gbm9kZS5jb3VudCArIDFcbiAgICAgICAgICAgIHwgRGVsZXRlID0+IG5vZGUuY291bnQgLSAxXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICAgIHwgTGVhZiA9PiBub2RlXG4gICAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgICAgbGV0IG1pZCA9IChhJyArIGInKSAvIDI7XG4gICAgICAgICAgbGV0IGwgPSBhID49IG1pZCA/IGwgOiAobGF6eShnbyhvcCwgaW50ZXJ2YWwsIExhenkuZm9yY2UobCkpKSk7XG4gICAgICAgICAgbGV0IHIgPSBiIDw9IG1pZCA/IHIgOiAobGF6eShnbyhvcCwgaW50ZXJ2YWwsIExhenkuZm9yY2UocikpKSk7XG4gICAgICAgICAgey4uLm5vZGUsIHNoYXBlOiBCcmFuY2gobCwgcil9O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB1cGRhdGVfc3RhdHVzKG5vZGUpO1xuICB9O1xuICBzd2l0Y2ggKFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYSksXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBiKSxcbiAgKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+XG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgXCJTZWdtZW50VHJlZS4lczogZXhwZWN0ZWQgaW50ZXJ2YWwgd2l0aCBlbmRwb2ludHMgc3BlY2lmaWVkIGF0IGluaXRpYWxpemF0aW9uXCIsXG4gICAgICAgIHN0cmluZ19vZl9vcChvcCksXG4gICAgICApO1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQobXNnKSk7XG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+XG4gICAgbGV0IGludGVydmFsID0gYSA8IGIgPyAoYSwgYikgOiAoYiwgYSk7XG4gICAgbGV0IG5ld19yb290ID0gZ28ob3AsIGludGVydmFsLCB0cmVlLnJvb3QpO1xuICAgIHsuLi50cmVlLCByb290OiBuZXdfcm9vdH07XG4gIH07XG59O1xubGV0IGluc2VydCA9IHBlcmZvcm0oSW5zZXJ0KTtcbmxldCBkZWxldGUgPSBwZXJmb3JtKERlbGV0ZSk7XG5cbi8qKlxuICogUHJlcGFyYXRhICYgU2hhbW9zIHVzZSB0aGUgdGVybWlub2xvZ3kgXCJjb250cmlidXRpb25cIiBhbmQgc3BlY2lmeVxuICogdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgcHJvY2VkdXJlIENPTlRSIGluIFNlY3Rpb24gOC41LlxuICovXG5sZXQgY29tcGxlbWVudF9pbnRlcnNlY3Rpb24gPSAoKGEsIGIpOiBpbnRlcnZhbCwgdHJlZTogdCk6IGxpc3QoaW50ZXJ2YWwpID0+IHtcbiAgbGV0IHJlYyBnbyA9XG4gICAgICAgICAgKH5zdGFjaz1bXSwgKGEsIGIpIGFzIGludGVydmFsLCBub2RlOiBub2RlKVxuICAgICAgICAgIDogbGlzdCgob3JkaW5hbCwgb3JkaW5hbCkpID0+IHtcbiAgICBsZXQgKGEnLCBiJykgPSBub2RlLmludGVydmFsO1xuICAgIHN3aXRjaCAobm9kZS5zdGF0dXMpIHtcbiAgICB8IEZ1bGwgPT4gc3RhY2tcbiAgICB8IEVtcHR5IHdoZW4gYSA8PSBhJyAmJiBiJyA8PSBiID0+XG4gICAgICAvLyBtZXJnZSBjb250aW51b3VzIHNlZ21lbnRzXG4gICAgICBzd2l0Y2ggKHN0YWNrKSB7XG4gICAgICB8IFsoYScnLCBiJycpLCAuLi5yZXN0XSB3aGVuIGEnID09IGInJyA9PiBbKGEnJywgYicpLCAuLi5yZXN0XVxuICAgICAgfCBfID0+IFsoYScsIGInKSwgLi4uc3RhY2tdXG4gICAgICB9XG4gICAgfCBfID0+XG4gICAgICBzd2l0Y2ggKG5vZGUuc2hhcGUpIHtcbiAgICAgIHwgTGVhZiA9PiBzdGFja1xuICAgICAgfCBCcmFuY2gobCwgcikgPT5cbiAgICAgICAgbGV0IG1pZCA9IChhJyArIGInKSAvIDI7XG4gICAgICAgIGxldCBzdGFjayA9IGEgPj0gbWlkID8gc3RhY2sgOiBnbyh+c3RhY2ssIGludGVydmFsLCBMYXp5LmZvcmNlKGwpKTtcbiAgICAgICAgYiA8PSBtaWQgPyBzdGFjayA6IGdvKH5zdGFjaywgaW50ZXJ2YWwsIExhenkuZm9yY2UocikpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIHN3aXRjaCAoXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBhKSxcbiAgICBIYXNodGJsLmZpbmRfb3B0KHRyZWUub3JkaW5hbHMsIGIpLFxuICApIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFpbHdpdGgoXCJpbnZhbGlkIGFyZ3VtZW50XCIpXG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+XG4gICAgbGV0IGludGVydmFsID0gYSA8IGIgPyAoYSwgYikgOiAoYiwgYSk7XG4gICAgZ28oaW50ZXJ2YWwsIHRyZWUucm9vdClcbiAgICB8PiBMaXN0Lm1hcCgoKG9yZGluYWwxLCBvcmRpbmFsMikpID0+IHtcbiAgICAgICAgIGxldCAobzEsIG8yKSA9IGEgPCBiID8gKG9yZGluYWwxLCBvcmRpbmFsMikgOiAob3JkaW5hbDIsIG9yZGluYWwxKTtcbiAgICAgICAgICh0cmVlLnZhbHVlc1tvMV0sIHRyZWUudmFsdWVzW28yXSk7XG4gICAgICAgfSk7XG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgUG9pbnQgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICB4OiBmbG9hdCxcbiAgICB5OiBmbG9hdCxcbiAgfTtcbn07XG5cbm1vZHVsZSBWZWN0b3IgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBkeDogZmxvYXQsXG4gICAgZHk6IGZsb2F0LFxuICB9O1xufTtcblxubW9kdWxlIFJlY3QgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBtaW46IFBvaW50LnQsXG4gICAgd2lkdGg6IGZsb2F0LFxuICAgIGhlaWdodDogZmxvYXQsXG4gIH07XG59O1xuXG5tb2R1bGUgUGF0aCA9IHtcbiAgdHlwZSB0ID0gbGlzdChjbWQpXG4gIGFuZCBjbWQgPVxuICAgIHwgWlxuICAgIHwgTShQb2ludC50KVxuICAgIHwgTV8oVmVjdG9yLnQpXG4gICAgfCBMKFBvaW50LnQpXG4gICAgfCBMXyhWZWN0b3IudClcbiAgICB8IEgoe3g6IGZsb2F0fSlcbiAgICB8IEhfKHtkeDogZmxvYXR9KVxuICAgIHwgVih7eTogZmxvYXR9KVxuICAgIHwgVl8oe2R5OiBmbG9hdH0pXG4gICAgfCBBXyh7XG4gICAgICAgIHJ4OiBmbG9hdCxcbiAgICAgICAgcnk6IGZsb2F0LFxuICAgICAgICB4X2F4aXNfcm90YXRpb246IGZsb2F0LFxuICAgICAgICBsYXJnZV9hcmNfZmxhZzogYm9vbCxcbiAgICAgICAgc3dlZXBfZmxhZzogYm9vbCxcbiAgICAgICAgZHg6IGZsb2F0LFxuICAgICAgICBkeTogZmxvYXQsXG4gICAgICB9KTtcblxuICBsZXQgY21kZnVkZ2UgPSAofng9MC4sIH55PTAuLCBjOiBjbWQpOiBjbWQgPT4ge1xuICAgIGxldCAoaCwgdikgPSAoeCwgeSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgfCBNKHt4LCB5fSkgPT4gTSh7eDogeCArLiBoLCB5OiB5ICsuIHZ9KVxuICAgIHwgTCh7eCwgeX0pID0+IEwoe3g6IHggKy4gaCwgeTogeSArLiB2fSlcbiAgICB8IEgoe3h9KSA9PiBIKHt4OiB4ICsuIGh9KVxuICAgIHwgVih7eX0pID0+IFYoe3k6IHkgKy4gdn0pXG4gICAgfCBfID0+IGNcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtID0gKH54LCB+eSkgPT4gTSh7eDogRmxvYXQub2ZfaW50KHgpLCB5OiBGbG9hdC5vZl9pbnQoeSl9KTtcbiAgbGV0IGxfID0gKH5keCwgfmR5KSA9PiBMXyh7ZHg6IEZsb2F0Lm9mX2ludChkeCksIGR5OiBGbG9hdC5vZl9pbnQoZHkpfSk7XG4gIGxldCBoID0gKH54KSA9PiBIKHt4OiBGbG9hdC5vZl9pbnQoeCl9KTtcbiAgbGV0IGhfID0gKH5keCkgPT4gSF8oe2R4OiBGbG9hdC5vZl9pbnQoZHgpfSk7XG4gIGxldCB2ID0gKH55KSA9PiBWKHt5OiBGbG9hdC5vZl9pbnQoeSl9KTtcbiAgbGV0IHZfID0gKH5keSkgPT4gVl8oe2R5OiBGbG9hdC5vZl9pbnQoZHkpfSk7XG5cbiAgbGV0IHNjYWxlX2NtZCA9ICh+c2NhbGVfeD0xLiwgfnNjYWxlX3k9MS4pID0+XG4gICAgZnVuXG4gICAgfCAoWiB8IE0oXykgfCBMKF8pIHwgSChfKSB8IFYoXykgfCBBXyhfKSkgYXMgY21kID0+IGNtZFxuICAgIHwgTV8oe2R4LCBkeX0pID0+IE1fKHtkeDogc2NhbGVfeCAqLiBkeCwgZHk6IHNjYWxlX3kgKi4gZHl9KVxuICAgIHwgTF8oe2R4LCBkeX0pID0+IExfKHtkeDogc2NhbGVfeCAqLiBkeCwgZHk6IHNjYWxlX3kgKi4gZHl9KVxuICAgIHwgSF8oe2R4fSkgPT4gSF8oe2R4OiBzY2FsZV94ICouIGR4fSlcbiAgICB8IFZfKHtkeX0pID0+IFZfKHtkeTogc2NhbGVfeSAqLiBkeX0pO1xuXG4gIGxldCBzY2FsZSA9IHMgPT4gTGlzdC5tYXAoc2NhbGVfY21kKH5zY2FsZV94PXMsIH5zY2FsZV95PXMpKTtcbiAgbGV0IHNjYWxlX3ggPSBzID0+IExpc3QubWFwKHNjYWxlX2NtZCh+c2NhbGVfeD1zKSk7XG4gIGxldCBzY2FsZV95ID0gcyA9PiBMaXN0Lm1hcChzY2FsZV9jbWQofnNjYWxlX3k9cykpO1xuXG4gIGxldCByZXZlcnNlID0gTGlzdC5yZXZfbWFwKHNjYWxlX2NtZCh+c2NhbGVfeD0tMS4sIH5zY2FsZV95PS0xLikpO1xuXG4gIGxldCB0cmFuc2xhdGVfY21kID0gKHY6IFZlY3Rvci50KSA9PlxuICAgIGZ1blxuICAgIHwgKFogfCBNXyhfKSB8IExfKF8pIHwgSF8oXykgfCBWXyhfKSB8IEFfKF8pKSBhcyBjbWQgPT4gY21kXG4gICAgfCBNKHt4LCB5fSkgPT4gTSh7eDogeCArLiB2LmR4LCB5OiB5ICsuIHYuZHl9KVxuICAgIHwgTCh7eCwgeX0pID0+IEwoe3g6IHggKy4gdi5keCwgeTogeSArLiB2LmR5fSlcbiAgICB8IEgoe3h9KSA9PiBIKHt4OiB4ICsuIHYuZHh9KVxuICAgIHwgVih7eX0pID0+IFYoe3k6IHkgKy4gdi5keX0pO1xuICBsZXQgdHJhbnNsYXRlID0gdiA9PiBMaXN0Lm1hcCh0cmFuc2xhdGVfY21kKHYpKTtcblxuICBsZXQgc3RyaW5nX29mX2ZsYWcgPVxuICAgIGZ1blxuICAgIHwgZmFsc2UgPT4gXCIwXCJcbiAgICB8IHRydWUgPT4gXCIxXCI7XG5cbiAgbGV0IHN0cmluZ19vZl9jb21tYW5kID1cbiAgICBmdW5cbiAgICB8IFogPT4gXCJaXCJcbiAgICB8IE0oe3gsIHl9KSA9PiBQcmludGYuc3ByaW50ZihcIk0gJWYgJWZcIiwgeCwgeSlcbiAgICB8IE1fKHtkeCwgZHl9KSA9PiBQcmludGYuc3ByaW50ZihcIm0gJWYgJWZcIiwgZHgsIGR5KVxuICAgIHwgTCh7eCwgeX0pID0+IFByaW50Zi5zcHJpbnRmKFwiTCAlZiAlZlwiLCB4LCB5KVxuICAgIHwgTF8oe2R4LCBkeX0pID0+IFByaW50Zi5zcHJpbnRmKFwibCAlZiAlZlwiLCBkeCwgZHkpXG4gICAgfCBIKHt4fSkgPT4gUHJpbnRmLnNwcmludGYoXCJIICVmXCIsIHgpXG4gICAgfCBIXyh7ZHh9KSA9PiBQcmludGYuc3ByaW50ZihcImggJWZcIiwgZHgpXG4gICAgfCBWKHt5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJWICVmXCIsIHkpXG4gICAgfCBWXyh7ZHl9KSA9PiBQcmludGYuc3ByaW50ZihcInYgJWZcIiwgZHkpXG4gICAgfCBBXyh7cngsIHJ5LCB4X2F4aXNfcm90YXRpb24sIGxhcmdlX2FyY19mbGFnLCBzd2VlcF9mbGFnLCBkeCwgZHl9KSA9PlxuICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgIFwiYSAlZiAlZiAlZiAlcyAlcyAlZiAlZlwiLFxuICAgICAgICByeCxcbiAgICAgICAgcnksXG4gICAgICAgIHhfYXhpc19yb3RhdGlvbixcbiAgICAgICAgc3RyaW5nX29mX2ZsYWcobGFyZ2VfYXJjX2ZsYWcpLFxuICAgICAgICBzdHJpbmdfb2ZfZmxhZyhzd2VlcF9mbGFnKSxcbiAgICAgICAgZHgsXG4gICAgICAgIGR5LFxuICAgICAgKTtcblxuICBsZXQgdmlldyA9ICh+YXR0cnM6IEF0dHJzLnQsIHBhdGg6IHQpOiBOb2RlLnQgPT4ge1xuICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlKExpc3QubGVuZ3RoKHBhdGgpICogMjApO1xuICAgIHBhdGhcbiAgICB8PiBMaXN0Lml0ZXIoY21kID0+IHtcbiAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGJ1ZmZlciwgc3RyaW5nX29mX2NvbW1hbmQoY21kKSk7XG4gICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhidWZmZXIsIFwiIFwiKTtcbiAgICAgICB9KTtcbiAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICBcInBhdGhcIixcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW0F0dHIuY3JlYXRlKFwiZFwiLCBCdWZmZXIuY29udGVudHMoYnVmZmVyKSksIC4uLmF0dHJzXSksXG4gICAgICBbXSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIE9ydGhvZ29uYWxQb2x5Z29uID0ge1xuICB0eXBlIHQgPSBQYXRoLnQ7XG5cbiAgdHlwZSBsaW5rZWRfZWRnZSA9IHtcbiAgICBzcmM6IFBvaW50LnQsXG4gICAgZHN0OiBQb2ludC50LFxuICAgIG11dGFibGUgbmV4dDogW0BzZXhwLm9wYXF1ZV0gb3B0aW9uKGxpbmtlZF9lZGdlKSxcbiAgfTtcblxuICBsZXQgbGlua2VkX2VkZ2VfZXEgPSAoZTEsIGUyKSA9PiBlMS5zcmMgPT0gZTIuc3JjICYmIGUxLmRzdCA9PSBlMi5kc3Q7XG5cbiAgbGV0IGNtZF9vZl9saW5rZWRfZWRnZSA9IChlZGdlKTogUGF0aC5jbWQgPT4ge1xuICAgIGxldCBzcmMgPSBlZGdlLnNyYztcbiAgICBsZXQgZHN0ID0gZWRnZS5kc3Q7XG4gICAgc3JjLnggPT0gZHN0LnggPyBWXyh7ZHk6IGRzdC55IC0uIHNyYy55fSkgOiBIXyh7ZHg6IGRzdC54IC0uIHNyYy54fSk7XG4gIH07XG5cbiAgbGV0IHJvdW5kX2Nvcm5lcnMgPSAoKHJ4OiBmbG9hdCwgcnk6IGZsb2F0KSwgcGF0aDogUGF0aC50KTogUGF0aC50ID0+IHtcbiAgICAvLyBDb3JuZXIgcm91bmRpbmcgY3V0cyBpbnRvIHRoZSBsZW5ndGhzIG9mIHRoZSBlbnRlcmluZyBhbmRcbiAgICAvLyBleGl0aW5nIGVkZ2VzLiBGaW5kIHRoZSBtYXhpbXVtIChwcm9wb3J0aW9uYWxseSBzY2FsZWQpXG4gICAgLy8gcmFkaWkgcG9zc2libGUgZ2l2ZW4gbGVuZ3RocyBvZiBlbnRlcmluZyBhbmQgZXhpdGluZyBlZGdlcy5cbiAgICBsZXQgbWF4X3JhZGlpID1cbiAgICAgICAgKChyeDogZmxvYXQsIHJ5OiBmbG9hdCksIChkeDogZmxvYXQsIGR5OiBmbG9hdCkpOiAoZmxvYXQsIGZsb2F0KSA9PiB7XG4gICAgICBsZXQgcnhfbWluID0gbWluKHJ4LCBGbG9hdC5hYnMoZHgpKTtcbiAgICAgIGxldCByeV9taW4gPSBtaW4ocnksIEZsb2F0LmFicyhkeSkpO1xuICAgICAgcnlfbWluICouIHJ4ID49IHJ4X21pbiAqLiByeVxuICAgICAgICA/IChyeF9taW4sIHJ4X21pbiAqLiByeSAvLiByeCkgOiAocnlfbWluICouIHJ4IC8uIHJ5LCByeV9taW4pO1xuICAgIH07XG5cbiAgICBwYXRoXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgUGF0aC5IXyh7ZHh9KSA9PiBQYXRoLltIXyh7ZHg6IGR4ICouIDAuNX0pLCBIXyh7ZHg6IGR4ICouIDAuNX0pXVxuICAgICAgICAgfCBWXyh7ZHl9KSA9PiBbVl8oe2R5OiBkeSAqLiAwLjV9KSwgVl8oe2R5OiBkeSAqLiAwLjV9KV1cbiAgICAgICAgIHwgY21kID0+IFtjbWRdLFxuICAgICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0VXRpbC5yb3RhdGVcbiAgICB8PiBMaXN0VXRpbC5kaXNqb2ludF9wYWlyc1xuICAgIHw+IExpc3QubWFwKCgoY21kMTogUGF0aC5jbWQsIGNtZDI6IFBhdGguY21kKSkgPT4ge1xuICAgICAgICAgc3dpdGNoIChjbWQxLCBjbWQyKSB7XG4gICAgICAgICB8IChIXyh7ZHh9KSwgVl8oe2R5fSkpID0+XG4gICAgICAgICAgIGxldCAocngsIHJ5KSA9IG1heF9yYWRpaSgocngsIHJ5KSwgKGR4LCBkeSkpO1xuICAgICAgICAgICBsZXQgY2xvY2t3aXNlID0gRmxvYXQuc2lnbl9iaXQoZHgpID09IEZsb2F0LnNpZ25fYml0KGR5KTtcbiAgICAgICAgICAgUGF0aC5bXG4gICAgICAgICAgICAgSF8oe2R4OiBGbG9hdC5jb3B5X3NpZ24oRmxvYXQuYWJzKGR4KSAtLiByeCwgZHgpfSksXG4gICAgICAgICAgICAgQV8oe1xuICAgICAgICAgICAgICAgcngsXG4gICAgICAgICAgICAgICByeSxcbiAgICAgICAgICAgICAgIHhfYXhpc19yb3RhdGlvbjogMC4sXG4gICAgICAgICAgICAgICBsYXJnZV9hcmNfZmxhZzogZmFsc2UsXG4gICAgICAgICAgICAgICBzd2VlcF9mbGFnOiBjbG9ja3dpc2UsXG4gICAgICAgICAgICAgICBkeDogRmxvYXQuY29weV9zaWduKHJ4LCBkeCksXG4gICAgICAgICAgICAgICBkeTogRmxvYXQuY29weV9zaWduKHJ5LCBkeSksXG4gICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgVl8oe2R5OiBGbG9hdC5jb3B5X3NpZ24oRmxvYXQuYWJzKGR5KSAtLiByeSwgZHkpfSksXG4gICAgICAgICAgIF07XG4gICAgICAgICB8IChWXyh7ZHl9KSwgSF8oe2R4fSkpID0+XG4gICAgICAgICAgIGxldCAocngsIHJ5KSA9IG1heF9yYWRpaSgocngsIHJ5KSwgKGR4LCBkeSkpO1xuICAgICAgICAgICBsZXQgY2xvY2t3aXNlID0gRmxvYXQuc2lnbl9iaXQoZHkpICE9IEZsb2F0LnNpZ25fYml0KGR4KTtcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFZfKHtkeTogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeSkgLS4gcnksIGR5KX0pLFxuICAgICAgICAgICAgIEFfKHtcbiAgICAgICAgICAgICAgIHJ4LFxuICAgICAgICAgICAgICAgcnksXG4gICAgICAgICAgICAgICB4X2F4aXNfcm90YXRpb246IDAuLFxuICAgICAgICAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgc3dlZXBfZmxhZzogY2xvY2t3aXNlLFxuICAgICAgICAgICAgICAgZHg6IEZsb2F0LmNvcHlfc2lnbihyeCwgZHgpLFxuICAgICAgICAgICAgICAgZHk6IEZsb2F0LmNvcHlfc2lnbihyeSwgZHkpLFxuICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgIEhfKHtkeDogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeCkgLS4gcngsIGR4KX0pLFxuICAgICAgICAgICBdO1xuICAgICAgICAgfCBfID0+IFtjbWQxLCBjbWQyXVxuICAgICAgICAgfVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuO1xuICB9O1xuXG4gIGxldCBpc19sZWZ0X3NpZGUgPSAoZWRnZTogbGlua2VkX2VkZ2UpOiBib29sID0+IHtcbiAgICBlZGdlLnNyYy55ID4gZWRnZS5kc3QueTtcbiAgfTtcblxuICAvKipcbiAgICogTWVyZ2UgY29pbmNpZGluZyB2ZXJ0aWNhbCBlZGdlcyB0aGF0IHBvaW50IGluIHRoZSBzYW1lIGRpcmVjdGlvbi5cbiAgICovXG4gIGxldCBtZXJnZV9jb2luY2lkaW5nX3ZlcnRpY2FsX2VkZ2VzID1cbiAgICAgIChlZGdlczogbGlzdChsaW5rZWRfZWRnZSkpOiBsaXN0KGxpbmtlZF9lZGdlKSA9PiB7XG4gICAgLy8gdGhlcmUgbWF5IGJlIGEgY2xlYW5lciArIG1vcmUgZWZmaWNpZW50IG1ldGhvZCBmb3IgdGhpcyBwYXNzXG4gICAgLy8gYnV0IGdvb2QgZW5vdWdoIGZvciBub3dcbiAgICBsZXQgKGxlZnRfZWRnZXMsIHJpZ2h0X2VkZ2VzKSA9IExpc3QucGFydGl0aW9uKGlzX2xlZnRfc2lkZSwgZWRnZXMpO1xuICAgIGxldCBtZXJnZWRfbGVmdF9lZGdlcyA9XG4gICAgICBsZWZ0X2VkZ2VzXG4gICAgICB8PiBMaXN0LnNvcnQoKHYxLCB2MikgPT5cbiAgICAgICAgICAgaWYgKHYxLnNyYy54IDwgdjIuc3JjLngpIHtcbiAgICAgICAgICAgICAoLTEpO1xuICAgICAgICAgICB9IGVsc2UgaWYgKHYxLnNyYy54ID4gdjIuc3JjLngpIHtcbiAgICAgICAgICAgICAxO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICgtMSkgKiBGbG9hdC5jb21wYXJlKHYxLnNyYy55LCB2Mi5zcmMueSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoc3RhY2ssIHYpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgICAgICAgIHwgW10gPT4gW3ZdXG4gICAgICAgICAgICAgfCBbaGQsIC4uLnRsXSBhcyBzdGFjayA9PlxuICAgICAgICAgICAgICAgaWYgKHYuc3JjLnggPT0gaGQuZHN0LnggJiYgdi5zcmMueSA+PSBoZC5kc3QueSkge1xuICAgICAgICAgICAgICAgICBbey4uLmhkLCBkc3Q6IHYuZHN0fSwgLi4udGxdO1xuICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgW3YsIC4uLnN0YWNrXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBbXSxcbiAgICAgICAgICk7XG4gICAgbGV0IG1lcmdlZF9yaWdodF9lZGdlcyA9XG4gICAgICByaWdodF9lZGdlc1xuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBGbG9hdC5jb21wYXJlKHYxLnNyYy55LCB2Mi5zcmMueSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoc3RhY2ssIHYpID0+XG4gICAgICAgICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgICAgICAgIHwgW10gPT4gW3ZdXG4gICAgICAgICAgICAgfCBbaGQsIC4uLnRsXSBhcyBzdGFjayA9PlxuICAgICAgICAgICAgICAgaWYgKHYuc3JjLnggPT0gaGQuZHN0LnggJiYgdi5zcmMueSA8PSBoZC5kc3QueSkge1xuICAgICAgICAgICAgICAgICBbey4uLmhkLCBkc3Q6IHYuZHN0fSwgLi4udGxdO1xuICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgW3YsIC4uLnN0YWNrXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBbXSxcbiAgICAgICAgICk7XG4gICAgbWVyZ2VkX2xlZnRfZWRnZXMgQCBtZXJnZWRfcmlnaHRfZWRnZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzKHJzKWAgY29tcHV0ZSB0aGUgdmVydGljYWwgZWRnZXMgb2YgdGhlXG4gICAqIGNvbnRvdXIgb2YgdGhlIHVuaW9uIG9mIHJlY3RhbmdsZXMgYHJzYFxuICAgKi9cbiAgbGV0IHZlcnRpY2FsX2NvbnRvdXJfZWRnZXMgPSAocmVjdHM6IGxpc3QoUmVjdC50KSk6IGxpc3QobGlua2VkX2VkZ2UpID0+IHtcbiAgICBsZXQgc29ydGVkX3ZlcnRpY2FsX3NpZGVzOiBsaXN0KGxpbmtlZF9lZGdlKSA9XG4gICAgICByZWN0c1xuICAgICAgfD4gTGlzdC5tYXAoKFJlY3Que21pbiwgd2lkdGgsIGhlaWdodH0pID0+IHtcbiAgICAgICAgICAgbGV0IG1heF94ID0gbWluLnggKy4gd2lkdGg7XG4gICAgICAgICAgIGxldCBtYXhfeSA9IG1pbi55ICsuIGhlaWdodDtcbiAgICAgICAgICAgbGV0IG1heCA9IFBvaW50Lnt4OiBtYXhfeCwgeTogbWF4X3l9O1xuICAgICAgICAgICBsZXQgbWluX21heCA9IFBvaW50Lnt4OiBtaW4ueCwgeTogbWF4X3l9O1xuICAgICAgICAgICBsZXQgbWF4X21pbiA9IFBvaW50Lnt4OiBtYXhfeCwgeTogbWluLnl9O1xuICAgICAgICAgICBbXG4gICAgICAgICAgICAgLy8gbGVmdCBzaWRlcyBwb2ludCBpbiBuZWdhdGl2ZSBkaXJlY3Rpb25cbiAgICAgICAgICAgICB7c3JjOiBtaW5fbWF4LCBkc3Q6IG1pbiwgbmV4dDogTm9uZX0sXG4gICAgICAgICAgICAgLy8gcmlnaHQgc2lkZXMgcG9pbnQgaW4gcG9zaXRpdmUgZGlyZWN0aW9uXG4gICAgICAgICAgICAge3NyYzogbWF4X21pbiwgZHN0OiBtYXgsIG5leHQ6IE5vbmV9LFxuICAgICAgICAgICBdO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAvLyBmb3IgdmVydGljYWwgc2lkZXMgb2YgZXF1YWwgYWJzY2lzc2EsXG4gICAgICAgICAgICAgLy8gbmVlZCB0byBzb3J0IGxlZnQgc2lkZXMgYmVmb3JlIHJpZ2h0IHNpZGVzXG4gICAgICAgICAgICAgbGV0IGlzX2xlZnQxID0gaXNfbGVmdF9zaWRlKHYxKTtcbiAgICAgICAgICAgICBsZXQgaXNfbGVmdDIgPSBpc19sZWZ0X3NpZGUodjIpO1xuICAgICAgICAgICAgIGlmIChpc19sZWZ0MSAmJiAhaXNfbGVmdDIpIHtcbiAgICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgICAgfSBlbHNlIGlmICghaXNfbGVmdDEgJiYgaXNfbGVmdDIpIHtcbiAgICAgICAgICAgICAgIDE7XG4gICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgfVxuICAgICAgICAgKTtcblxuICAgIGxldCBzZWdtZW50X3RyZWUgPVxuICAgICAgcmVjdHNcbiAgICAgIHw+IExpc3QubWFwKChSZWN0LnttaW4sIGhlaWdodCwgX30pID0+IFttaW4ueSwgbWluLnkgKy4gaGVpZ2h0XSlcbiAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgfD4gU2VnbWVudFRyZWUubWs7XG5cbiAgICBzb3J0ZWRfdmVydGljYWxfc2lkZXNcbiAgICAvLyBwbGFuZS1zd2VlcFxuICAgIHw+IExpc3QuZm9sZF9sZWZ0X21hcChcbiAgICAgICAgICh0cmVlLCB2KSA9PiB7XG4gICAgICAgICAgIGxldCB4ID0gdi5zcmMueDtcbiAgICAgICAgICAgbGV0IHlzID0gKHYuc3JjLnksIHYuZHN0LnkpO1xuICAgICAgICAgICBsZXQgbWtfY29udG91cl9lZGdlID0gKCh5X3NyYywgeV9kc3QpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHNyYyA9IFBvaW50Lnt4LCB5OiB5X3NyY307XG4gICAgICAgICAgICAgbGV0IGRzdCA9IFBvaW50Lnt4LCB5OiB5X2RzdH07XG4gICAgICAgICAgICAge3NyYywgZHN0LCBuZXh0OiBOb25lfTtcbiAgICAgICAgICAgfTtcbiAgICAgICAgICAgaWYgKGlzX2xlZnRfc2lkZSh2KSkge1xuICAgICAgICAgICAgIGxldCBuZXdfY29udG91cl9lZGdlcyA9XG4gICAgICAgICAgICAgICBTZWdtZW50VHJlZS5jb21wbGVtZW50X2ludGVyc2VjdGlvbih5cywgdHJlZSlcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwKG1rX2NvbnRvdXJfZWRnZSk7XG4gICAgICAgICAgICAgbGV0IHVwZGF0ZWRfdHJlZSA9IFNlZ21lbnRUcmVlLmluc2VydCh5cywgdHJlZSk7XG4gICAgICAgICAgICAgKHVwZGF0ZWRfdHJlZSwgbmV3X2NvbnRvdXJfZWRnZXMpO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgIGxldCB1cGRhdGVkX3RyZWUgPSBTZWdtZW50VHJlZS5kZWxldGUoeXMsIHRyZWUpO1xuICAgICAgICAgICAgIGxldCBuZXdfY29udG91cl9lZGdlcyA9XG4gICAgICAgICAgICAgICBTZWdtZW50VHJlZS5jb21wbGVtZW50X2ludGVyc2VjdGlvbih5cywgdXBkYXRlZF90cmVlKVxuICAgICAgICAgICAgICAgfD4gTGlzdC5tYXAobWtfY29udG91cl9lZGdlKTtcbiAgICAgICAgICAgICAodXBkYXRlZF90cmVlLCBuZXdfY29udG91cl9lZGdlcyk7XG4gICAgICAgICAgIH07XG4gICAgICAgICB9LFxuICAgICAgICAgc2VnbWVudF90cmVlLFxuICAgICAgIClcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IGV4cGxpY2F0ZWQgYnkgUHJlcGFyYXRhICYgU2hhbW9zXG4gICAgLy8gYnV0IGl0cyBhYnNlbmNlIGNhdXNlcyBidWdzXG4gICAgfD4gbWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlcztcbiAgfTtcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNlY3Rpb24gOC41IG9mXG4gICAqIENvbXB1dGF0aW9uYWwgR2VvbWV0cnk6IEFuIEludHJvZHVjdGlvbiBieSBQcmVwYXJhdGFcbiAgICogJiBTaGFtb3MuIElmIHlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFsZ29yaXRobSBpblxuICAgKiBkZXRhaWwsIHlvdSBzaG91bGQgZmlyc3QgcmVhZCBTZWN0aW9ucyAxLjIuMy4xICsgOC4zLlxuICAgKi9cbiAgbGV0IG1rID0gKH5jb3JuZXJfcmFkaWk6IChmbG9hdCwgZmxvYXQpLCByZWN0czogbGlzdChSZWN0LnQpKTogdCA9PiB7XG4gICAgYXNzZXJ0KHJlY3RzICE9IFtdKTtcblxuICAgIGxldCB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzID0gdmVydGljYWxfY29udG91cl9lZGdlcyhyZWN0cyk7XG5cbiAgICAvLyBqb2luIHZlcnRpY2FsIGNvbnRvdXIgZWRnZXMgdmlhIGhvcml6b250YWwgZWRnZXNcbiAgICB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzXG4gICAgfD4gTGlzdC5tYXAodiA9PiBbKGZhbHNlLCB2KSwgKHRydWUsIHYpXSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAvLyBzb3J0IGVuZHBvaW50cyBieSB5IGNvb3JkaW5hdGUsIHRoZW4geCBjb29yZGluYXRlXG4gICAgfD4gTGlzdC5zb3J0KCgoaXNfc3JjMSwgdjEpLCAoaXNfc3JjMiwgdjIpKSA9PiB7XG4gICAgICAgICBsZXQgcHQxID0gaXNfc3JjMSA/IHYxLnNyYyA6IHYxLmRzdDtcbiAgICAgICAgIGxldCBwdDIgPSBpc19zcmMyID8gdjIuc3JjIDogdjIuZHN0O1xuICAgICAgICAgaWYgKHB0MS55IDwgcHQyLnkpIHtcbiAgICAgICAgICAgKC0xKTtcbiAgICAgICAgIH0gZWxzZSBpZiAocHQxLnkgPiBwdDIueSkge1xuICAgICAgICAgICAxO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgRmxvYXQuY29tcGFyZShwdDEueCwgcHQyLngpO1xuICAgICAgICAgfTtcbiAgICAgICB9KVxuICAgIHw+IExpc3RVdGlsLmRpc2pvaW50X3BhaXJzXG4gICAgLy8gY29uc2VjdXRpdmUgcGFpcnMgb2YgZW5kcG9pbnRzIGZvcm0gaG9yaXpvbnRhbCBlZGdlc1xuICAgIHw+IExpc3QuaXRlcigoKChpc19zcmMxLCB2MSksIChpc19zcmMyLCB2MikpKSA9PiB7XG4gICAgICAgICBsZXQgcHQxID0gaXNfc3JjMSA/IHYxLnNyYyA6IHYxLmRzdDtcbiAgICAgICAgIGxldCBwdDIgPSBpc19zcmMyID8gdjIuc3JjIDogdjIuZHN0O1xuICAgICAgICAgYXNzZXJ0KHB0MS55ID09IHB0Mi55KTtcbiAgICAgICAgIGxldCB5ID0gcHQxLnk7XG5cbiAgICAgICAgIGxldCAoeF9zcmMsIHhfZHN0LCBwcmV2LCBuZXh0KSA9XG4gICAgICAgICAgIGlzX3NyYzEgPyAocHQyLngsIHB0MS54LCB2MiwgdjEpIDogKHB0MS54LCBwdDIueCwgdjEsIHYyKTtcblxuICAgICAgICAgbGV0IGggPSB7XG4gICAgICAgICAgIGxldCBzcmMgPSBQb2ludC57eDogeF9zcmMsIHl9O1xuICAgICAgICAgICBsZXQgZHN0ID0gUG9pbnQue3g6IHhfZHN0LCB5fTtcbiAgICAgICAgICAge3NyYywgZHN0LCBuZXh0OiBTb21lKG5leHQpfTtcbiAgICAgICAgIH07XG4gICAgICAgICBwcmV2Lm5leHQgPSBTb21lKGgpO1xuICAgICAgIH0pO1xuXG4gICAgbGV0IHN0YXJ0ID0gTGlzdC5oZCh2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzKTtcbiAgICBsZXQgcmVjIGJ1aWxkX3BhdGggPSAoZWRnZTogbGlua2VkX2VkZ2UpOiBQYXRoLnQgPT4ge1xuICAgICAgc3dpdGNoIChlZGdlLm5leHQpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcImV4cGVjdGVkIHNpbmdsZSBjeWNsZVwiKVxuICAgICAgfCBTb21lKG5leHQpID0+XG4gICAgICAgIGxpbmtlZF9lZGdlX2VxKG5leHQsIHN0YXJ0KVxuICAgICAgICAgID8gW10gOiBbY21kX29mX2xpbmtlZF9lZGdlKG5leHQpLCAuLi5idWlsZF9wYXRoKG5leHQpXVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBwYXRoID0gW2NtZF9vZl9saW5rZWRfZWRnZShzdGFydCksIC4uLmJ1aWxkX3BhdGgoc3RhcnQpXTtcblxuICAgIHBhdGhcbiAgICB8PiByb3VuZF9jb3JuZXJzKGNvcm5lcl9yYWRpaSlcbiAgICB8PiBMaXN0LmNvbnMoXG4gICAgICAgICBQYXRoLk0oe1xuICAgICAgICAgICB4OiAoc3RhcnQuc3JjLnggKy4gc3RhcnQuZHN0LngpICouIDAuNSxcbiAgICAgICAgICAgeTogKHN0YXJ0LnNyYy55ICsuIHN0YXJ0LmRzdC55KSAqLiAwLjUsXG4gICAgICAgICB9KSxcbiAgICAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBsYWJlbGxlZF9zdW1fdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlN1bSB0eXBlcyBkZXNjcmliZSBhIGZpbml0ZSBzZXQgb2YgbGFiZWxlZCBjaG9pY2VzLiBWYWx1ZXMgb2YgdGhpcyB0eXBlIGNvbnNpc3Qgb2Ygb25lIG9mIHRoZSBzcGVjaWZpZWQgY29uc3RydWN0b3JzIGFwcGxpZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyIHR5cGUsIGlmIHNwZWNpZmllZC4gQ29uc3RydWN0b3IgbmFtZXMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgc3VtLlwiO1xuICBsZXQgZGl2aWRlciA9IEV4YW1wbGUubWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBfcGx1c1wiKSk7XG4gIHtcbiAgICBpZDogTGFiZWxsZWRTdW1UeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIHNwYWNlKCksXG4gICAgICB0eXAoXCJDb25zdHJ1Y3Rvcih0eSlcIiksXG4gICAgICBzcGFjZSgpLFxuICAgICAgZGl2aWRlcixcbiAgICAgIHNwYWNlKCksXG4gICAgICB0eXAoXCIuLi5cIiksXG4gICAgICBzcGFjZSgpLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IHN1bV90eXBfdW5hcnlfY29uc3RydWN0b3JfZGVmID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgc3BlY2lmaWVzIG9uZSBwb3NzaWJsZSB3YXkgb2YgY29uc3RydWN0aW5nIHRoZSBwYXJlbnQgc3VtIHR5cGUsIHdoZW4gYXBwbGllZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlciB0eXBlLlwiO1xuICB7XG4gICAgaWQ6IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWYsXG4gICAgc3ludGFjdGljX2Zvcm06IFtjICsrIFwiKFR5cGUpXCIgfD4gYWJicmV2aWF0ZSB8PiB0eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWYgPSAoYzogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBzcGVjaWZpZXMgb25lIHBvc3NpYmxlIHdheSBvZiBjb25zdHJ1Y3RpbmcgdGhlIHBhcmVudCBzdW0gdHlwZS5cIjtcbiAge1xuICAgIGlkOiBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWYsXG4gICAgc3ludGFjdGljX2Zvcm06IFtjIHw+IGFiYnJldmlhdGUgfD4gdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBsYWJlbGxlZF9zdW1fdHlwczogZ3JvdXAgPSB7XG4gIGlkOiBMYWJlbGxlZFN1bVR5cCxcbiAgZm9ybXM6IFtsYWJlbGxlZF9zdW1fdHlwXSxcbn07XG5cbmxldCBzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZnMgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3VtVHlwVW5hcnlDb25zdHJ1Y3RvckRlZixcbiAgZm9ybXM6IFtzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZihjKV0sXG59O1xuXG5sZXQgc3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlZnMgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmLFxuICBmb3JtczogW3N1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWYoYyldLFxufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IHN2ZyA9IChhdHRycywgY2hpbGRyZW4pID0+XG4gIE5vZGUuY3JlYXRlX3N2ZyhcInN2Z1wiLCB+YXR0cj1BdHRyLm1hbnkoYXR0cnMpLCBjaGlsZHJlbik7XG5cbmxldCBzdG9wID0gYXR0cnMgPT4gTm9kZS5jcmVhdGVfc3ZnKFwic3RvcFwiLCB+YXR0cj1BdHRyLm1hbnkoYXR0cnMpLCBbXSk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWw7XG5cbmxldCB0aXBfd2lkdGggPSAwLjMyO1xubGV0IGNvbmNhdmVfYWRqID0gMC4yNTtcbmxldCBjb252ZXhfYWRqID0gKC0wLjEzKTtcbmxldCBzaGFkb3dfYWRqID0gMC4wMTU7XG5cbmxldCBjYXJldF9hZGp1c3QgPSAoc2lkZTogRGlyZWN0aW9uLnQsIHNoYXBlOiBvcHRpb24oRGlyZWN0aW9uLnQpKSA9PlxuICBzd2l0Y2ggKHNpZGUsIHNoYXBlKSB7XG4gIHwgKF8sIE5vbmUpID0+IDAuXG4gIHwgKExlZnQsIFNvbWUoTGVmdCkpID0+IGNvbmNhdmVfYWRqXG4gIHwgKFJpZ2h0LCBTb21lKFJpZ2h0KSkgPT4gLS4gY29uY2F2ZV9hZGpcbiAgfCAoTGVmdCwgU29tZShSaWdodCkpID0+IGNvbnZleF9hZGpcbiAgfCAoUmlnaHQsIFNvbWUoTGVmdCkpID0+IC0uIGNvbnZleF9hZGpcbiAgfTtcblxubGV0IGNoaWxkX2JvcmRlcl90aGlja25lc3MgPSAwLjA1O1xuXG5sZXQgdCA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMC41O1xubGV0IHNob3J0X3RpcF9oZWlnaHQgPSAoMS4gLS4gdCkgKi4gMC41O1xuXG5sZXQgc3RyZXRjaF9keCA9IDAuMTU7XG5cbmxldCByYWlzZWRfc2hhZG93X2R4ID0gXCIwLjFcIjtcbmxldCByYWlzZWRfc2hhZG93X2R5ID0gXCIwLjAzN1wiO1xubGV0IHNoYWRvd19keCA9IHJhaXNlZF9zaGFkb3dfZHg7XG5sZXQgc2hhZG93X2R5ID0gcmFpc2VkX3NoYWRvd19keTtcblxubGV0IGV4dHJhX3RhaWwgPSAwLjtcbmxldCBqYWdnZWRfZWRnZV9oID0gY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyAvLiAzLjtcbmxldCBqYWdnZWRfZWRnZV93ID0gY2hpbGRfYm9yZGVyX3RoaWNrbmVzcyAvLiAxLjtcblxubGV0IHNob3J0X3RpcF93aWR0aCA9ICgxLiAtLiB0KSAqLiB0aXBfd2lkdGg7XG5cbnR5cGUgZGltcyA9IHtcbiAgd2lkdGg6IGludCxcbiAgaGVpZ2h0OiBpbnQsXG4gIGxlZnQ6IGludCxcbiAgdG9wOiBpbnQsXG59O1xuXG50eXBlIGZkaW1zID0ge1xuICB3aWR0aDogZmxvYXQsXG4gIGhlaWdodDogZmxvYXQsXG4gIGxlZnQ6IGZsb2F0LFxuICB0b3A6IGZsb2F0LFxufTtcblxubGV0IGZ6ZXJvOiBmZGltcyA9IHt3aWR0aDogMC4sIGhlaWdodDogMC4sIGxlZnQ6IDAuLCB0b3A6IDAufTtcblxubGV0IHBvc19zdHIgPSAofmQ6IGRpbXMsIH5mdWRnZTogZmRpbXM9Znplcm8sIGZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCkgPT5cbiAgUHJpbnRmLnNwcmludGYoXG4gICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDsgd2lkdGg6ICVmcHg7IGhlaWdodDogJWZweDtcIixcbiAgICBGbG9hdC5vZl9pbnQoZC5sZWZ0KSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGZ1ZGdlLmxlZnQsXG4gICAgRmxvYXQub2ZfaW50KGQudG9wKSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCArLiBmdWRnZS50b3AsXG4gICAgRmxvYXQub2ZfaW50KGQud2lkdGgpICouIChmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGZ1ZGdlLndpZHRoKSxcbiAgICBGbG9hdC5vZl9pbnQoZC5oZWlnaHQpICouIChmb250X21ldHJpY3Mucm93X2hlaWdodCArLiBmdWRnZS5oZWlnaHQpLFxuICApO1xuXG5sZXQgY29kZV9zdmdfc2l6ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+bWVhc3VyZW1lbnQgYXMge29yaWdpbiwgbGFzdH06IEhhejNsY29yZS5NZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICAgIH5iYXNlX2Nscz1bXSxcbiAgICAgIH5wYXRoX2Nscz1bXSxcbiAgICAgIH5hdHRyPVtdLFxuICAgICAgfmZ1ZGdlOiBmZGltcz1memVybyxcbiAgICAgIHBhdGhzOiBsaXN0KFN2Z1V0aWwuUGF0aC5jbWQpLFxuICAgICkgPT4ge1xuICBsZXQgKGxlZnQsIHRvcCkgPSAob3JpZ2luLmNvbCwgb3JpZ2luLnJvdyk7XG4gIGxldCAod2lkdGgsIGhlaWdodCkgPSAoXG4gICAgYWJzKGxhc3QuY29sIC0gb3JpZ2luLmNvbCksXG4gICAgYWJzKGxhc3Qucm93IC0gb3JpZ2luLnJvdyArIDEpLFxuICApO1xuICBsZXQgc3R5bGUgPSBwb3Nfc3RyKH5kPXtsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHR9LCB+ZnVkZ2UsIGZvbnRfbWV0cmljcyk7XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShcbiAgICAgICAgW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhiYXNlX2NscyksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzdHlsZSksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJ2aWV3Qm94XCIsIFByaW50Zi5zcHJpbnRmKFwiMCAwICVkICVkXCIsIHdpZHRoLCBoZWlnaHQpKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgICBdXG4gICAgICAgIEAgYXR0cixcbiAgICAgICksXG4gICAgW1N2Z1V0aWwuUGF0aC52aWV3KH5hdHRycz1bQXR0ci5jbGFzc2VzKHBhdGhfY2xzKV0sIHBhdGhzKV0sXG4gICk7XG59O1xuXG5sZXQgcG9zaXRpb24gPVxuICAgIChcbiAgICAgIH5zdHlsZT1cIlwiLFxuICAgICAgfmxlZnRfZnVkZ2U9MC4wLFxuICAgICAgfnRvcF9mdWRnZT0wLjAsXG4gICAgICB+d2lkdGhfZnVkZ2U9MC4wLFxuICAgICAgfmhlaWdodF9mdWRnZT0wLjAsXG4gICAgICB+c2NhbGU9MS4sXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgb3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICApID0+XG4gIEF0dHIuY3JlYXRlKFxuICAgIFwic3R5bGVcIixcbiAgICBzdHlsZVxuICAgICsrIFwiO1wiXG4gICAgKysgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICBcImxlZnQ6ICVmcHg7IHRvcDogJWZweDsgd2lkdGg6ICVmcHg7IGhlaWdodDogJWZweDtcIixcbiAgICAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGxlZnRfZnVkZ2UsXG4gICAgICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdykgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gdG9wX2Z1ZGdlLFxuICAgICAgICAgc2NhbGUgKi4gKGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gd2lkdGhfZnVkZ2UpLFxuICAgICAgICAgc2NhbGUgKi4gKGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIGhlaWdodF9mdWRnZSksXG4gICAgICAgKSxcbiAgKTtcblxubGV0IGFic19wb3NpdGlvbiA9XG4gICAgKFxuICAgICAgfmxlZnRfZnVkZ2U9MC4wLFxuICAgICAgfnRvcF9mdWRnZT0wLjAsXG4gICAgICB+d2lkdGhfZnVkZ2U9MC4wLFxuICAgICAgfmhlaWdodF9mdWRnZT0wLjAsXG4gICAgICB+c2NhbGU9MS4sXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgb3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICApID0+IHtcbiAgcG9zaXRpb24oXG4gICAgfnN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCIsXG4gICAgfmxlZnRfZnVkZ2UsXG4gICAgfnRvcF9mdWRnZSxcbiAgICB+d2lkdGhfZnVkZ2UsXG4gICAgfmhlaWdodF9mdWRnZSxcbiAgICB+c2NhbGUsXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICBvcmlnaW4sXG4gICk7XG59O1xuXG5sZXQgY29kZV9zdmcgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+b3JpZ2luOiBIYXozbGNvcmUuTWVhc3VyZWQuUG9pbnQudCxcbiAgICAgIH5iYXNlX2Nscz1bXSxcbiAgICAgIH5wYXRoX2Nscz1bXSxcbiAgICAgIH5sZWZ0X2Z1ZGdlPTAuMCxcbiAgICAgIH50b3BfZnVkZ2U9MC4wLFxuICAgICAgfndpZHRoX2Z1ZGdlPTAuMCxcbiAgICAgIH5oZWlnaHRfZnVkZ2U9MC4wLFxuICAgICAgfmlkPVwiXCIsXG4gICAgICB+YXR0cnM9W10sXG4gICAgICB+YWJzX3Bvcz10cnVlLFxuICAgICAgcGF0aHM6IGxpc3QoU3ZnVXRpbC5QYXRoLmNtZCksXG4gICAgKSA9PiB7XG4gIC8vIFVzaW5nIGEgdmlld0JveCBvZiAwIDAgMSAxIHNlZW1zIHRvIHRyaWdnZXIgQ2hyb21lIHJvdW5kaW5nIGJ1Z1xuICAvLyAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDI0Mjg4KSB0aGF0XG4gIC8vIGNhdXNlcyBtaWFzbGlnbm1lbnQgYmV0d2VlbiBwaWVjZSBkZWNvcmF0aW9ucyBhbmQgdGV4dC5cbiAgLy8gVXNpbmcgYSBkaWZmZXJlbnQgdmlld0JveCBzaXplIHNlZW1zIHRvIGZpeCB0aGlzLlxuICBsZXQgc2NhbGUgPSAyLjtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcInN2Z1wiLFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFxuICAgICAgICAoaWQgPT0gXCJcIiA/IFtdIDogW0F0dHIuaWQoaWQpXSlcbiAgICAgICAgQCBbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKGJhc2VfY2xzKSxcbiAgICAgICAgICBhYnNfcG9zXG4gICAgICAgICAgICA/IGFic19wb3NpdGlvbihcbiAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgIH5sZWZ0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH50b3BfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfndpZHRoX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5oZWlnaHRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnNjYWxlLFxuICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBwb3NpdGlvbihcbiAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgIH5sZWZ0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH50b3BfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfndpZHRoX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5oZWlnaHRfZnVkZ2UsXG4gICAgICAgICAgICAgICAgfnNjYWxlLFxuICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInZpZXdCb3hcIiwgUHJpbnRmLnNwcmludGYoXCIwIDAgJWYgJWZcIiwgc2NhbGUsIHNjYWxlKSksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgICAgXVxuICAgICAgICBAIGF0dHJzLFxuICAgICAgKSxcbiAgICBbU3ZnVXRpbC5QYXRoLnZpZXcofmF0dHJzPVtBdHRyLmNsYXNzZXMocGF0aF9jbHMpXSwgcGF0aHMpXSxcbiAgKTtcbn07XG5cbmxldCByYWlzZWRfc2hhZG93X2ZpbHRlciA9IChzb3J0OiBIYXozbGNvcmUuU29ydC50KSA9PiB7XG4gIGxldCBzID0gSGF6M2xjb3JlLlNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwiZmlsdGVyXCIsXG4gICAgfmF0dHI9QXR0ci5pZChcInJhaXNlZC1kcm9wLXNoYWRvdy1cIiArKyBzKSxcbiAgICBbXG4gICAgICBjcmVhdGVfc3ZnKFxuICAgICAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRpbGUtZHJvcC1zaGFkb3dcIl0pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeFwiLCByYWlzZWRfc2hhZG93X2R4KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHlcIiwgcmFpc2VkX3NoYWRvd19keSksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0ZERldmlhdGlvblwiLCBcIjBcIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IHNoYWRvd19maWx0ZXIgPSAoc29ydDogSGF6M2xjb3JlLlNvcnQudCkgPT4ge1xuICBsZXQgcyA9IEhhejNsY29yZS5Tb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcImZpbHRlclwiLFxuICAgIH5hdHRyPUF0dHIuaWQoXCJkcm9wLXNoYWRvdy1cIiArKyBzKSxcbiAgICBbXG4gICAgICBjcmVhdGVfc3ZnKFxuICAgICAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRpbGUtZHJvcC1zaGFkb3dcIl0pLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeFwiLCBzaGFkb3dfZHgpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJkeVwiLCBzaGFkb3dfZHkpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdGREZXZpYXRpb25cIiwgXCIwXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBmaWx0ZXJzID1cbiAgTm9kZVV0aWwuc3ZnKFxuICAgIEF0dHIuW2lkKFwiZmlsdGVyc1wiKV0sXG4gICAgTGlzdC5tYXAocmFpc2VkX3NoYWRvd19maWx0ZXIsIEhhejNsY29yZS5Tb3J0LmFsbClcbiAgICBAIExpc3QubWFwKHNoYWRvd19maWx0ZXIsIEhhejNsY29yZS5Tb3J0LmFsbCksXG4gICk7XG4iLCJvcGVuIERlY1V0aWw7XG5vcGVuIFN2Z1V0aWwuUGF0aDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vVE9ETyg/KTogZGVwcmVjYXRlIHRoaXMgbW9kdWxlXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGlwX3NoYXBlID0gKEhhejNsY29yZS5OaWIudCwgaW50KTtcblxuLy8gdG9wIHJpZ2h0IHRvIGJvdHRvbSBsZWZ0XG5sZXQgdHJfYmwgPVxuICAgIChcbiAgICAgIH5zY2FsZSBhcyBzPTEuLFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC4oXG4gICAge1xuICAgICAgbGV0IChkaWFnLCBqdW5jdGlvbikgPVxuICAgICAgICB3aXRoX2NoaWxkX2JvcmRlclxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgTF8oe2R4OiBGbG9hdC5uZWcoc2hvcnRfdGlwX3dpZHRoKSwgZHk6IHNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICAgICAgICAgIEhfKHtkeDogRmxvYXQubmVnKDAuNSAtLiBzaG9ydF90aXBfd2lkdGgpfSksXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKFxuICAgICAgICAgICAgTF8oe2R4OiBGbG9hdC5uZWcodGlwX3dpZHRoKSwgZHk6IDAuNSArLiBzdHJldGNoX3l9KSxcbiAgICAgICAgICAgIEhfKHtkeDogRmxvYXQubmVnKHN0cmV0Y2hfeCl9KSxcbiAgICAgICAgICApO1xuICAgICAgbGV0IHBhdGggPVxuICAgICAgICBzd2l0Y2ggKGhlbWkpIHtcbiAgICAgICAgfCBgTm9ydGggPT4gW2p1bmN0aW9uLCBkaWFnXVxuICAgICAgICB8IGBTb3V0aCA9PiBbZGlhZywganVuY3Rpb25dXG4gICAgICAgIH07XG4gICAgICBzY2FsZShzLCBwYXRoKTtcbiAgICB9XG4gICk7XG4vLyBib3R0b20gbGVmdCB0byB0b3AgcmlnaHRcbmxldCBibF90ciA9XG4gICAgKFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC5yZXZlcnNlKFxuICAgIHRyX2JsKH5oZW1pLCB+d2l0aF9jaGlsZF9ib3JkZXIsIH5zdHJldGNoX3gsIH5zdHJldGNoX3ksICgpKSxcbiAgKTtcblxuLy8gdG9wIGxlZnQgdG8gYm90dG9tIHJpZ2h0XG5sZXQgdGxfYnIgPVxuICAgIChcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGguKFxuICAgIHtcbiAgICAgIGxldCAoZGlhZywganVuY3Rpb24pID1cbiAgICAgICAgd2l0aF9jaGlsZF9ib3JkZXJcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIExfKHtkeDogc2hvcnRfdGlwX3dpZHRoLCBkeTogc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgICAgICAgICAgSF8oe2R4OiAwLjUgLS4gc2hvcnRfdGlwX3dpZHRofSksXG4gICAgICAgICAgKVxuICAgICAgICAgIDogKExfKHtkeDogdGlwX3dpZHRoLCBkeTogMC41ICsuIHN0cmV0Y2hfeX0pLCBIXyh7ZHg6IHN0cmV0Y2hfeH0pKTtcbiAgICAgIHN3aXRjaCAoaGVtaSkge1xuICAgICAgfCBgTm9ydGggPT4gW2p1bmN0aW9uLCBkaWFnXVxuICAgICAgfCBgU291dGggPT4gW2RpYWcsIGp1bmN0aW9uXVxuICAgICAgfTtcbiAgICB9XG4gICk7XG4vLyBib3R0b20gcmlnaHQgdG8gdG9wIGxlZnRcbmxldCBicl90bCA9XG4gICAgKFxuICAgICAgfmhlbWk6IFsgfCBgTm9ydGggfCBgU291dGhdLFxuICAgICAgfndpdGhfY2hpbGRfYm9yZGVyPWZhbHNlLFxuICAgICAgfnN0cmV0Y2hfeD0wLixcbiAgICAgIH5zdHJldGNoX3k9MC4sXG4gICAgICAoKSxcbiAgICApID0+XG4gIFN2Z1V0aWwuUGF0aC5yZXZlcnNlKFxuICAgIHRsX2JyKH5oZW1pLCB+d2l0aF9jaGlsZF9ib3JkZXIsIH5zdHJldGNoX3gsIH5zdHJldGNoX3ksICgpKSxcbiAgKTtcblxubGV0IGxlZnRfdGlwX3BhdGggPVxuICAgICh+c2NhbGVfeCBhcyBzX3g9MS4sIH5zY2FsZV95IGFzIHNfeT0xLiwgdGlwOiB0aXBfc2hhcGUpOiBTdmdVdGlsLlBhdGgudCA9PiB7XG4gIGxldCBwYXRoID1cbiAgICBzd2l0Y2ggKHRpcCkge1xuICAgIHwgKHtzaGFwZTogQ29udmV4LCBffSwgXykgPT5cbiAgICAgIGJyX3RsKH5oZW1pPWBTb3V0aCwgKCkpIEAgYmxfdHIofmhlbWk9YE5vcnRoLCAoKSlcbiAgICB8ICh7c2hhcGU6IENvbmNhdmUoX2EpLCBffSwgbikgPT5cbiAgICAgIGxldCBqYWcgPSBbXG4gICAgICAgIExfKHtkeDogLS4gamFnZ2VkX2VkZ2VfdywgZHk6IC0uIGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiBqYWdnZWRfZWRnZV93LCBkeTogLS4gamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IC0uIGphZ2dlZF9lZGdlX3csIGR5OiAtLiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICBdO1xuICAgICAgbGV0IGJvdHRvbV9oYWxmID1cbiAgICAgICAgbiA9PSAwXG4gICAgICAgICAgPyBbSF8oe2R4OiBGbG9hdC5uZWcodGlwX3dpZHRoKX0pLCAuLi5ibF90cih+aGVtaT1gU291dGgsICgpKV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgW0hfKHtkeDogLS4gKGV4dHJhX3RhaWwgKy4gMC41KX0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBqYWdnZWRfZWRnZV93ICsuIGV4dHJhX3RhaWx9KV0sXG4gICAgICAgICAgICAgIGJsX3RyKH5oZW1pPWBTb3V0aCwgfndpdGhfY2hpbGRfYm9yZGVyPXRydWUsICgpKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgbGV0IHRvcF9oYWxmID1cbiAgICAgICAgbiA9PSAwIHx8IG4gPT0gMVxuICAgICAgICAgID8gYnJfdGwofmhlbWk9YE5vcnRoLCAoKSkgQCBbSF8oe2R4OiB0aXBfd2lkdGh9KV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgYnJfdGwofmhlbWk9YE5vcnRoLCB+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgKCkpLFxuICAgICAgICAgICAgICBbSF8oe2R4OiAtLiAoamFnZ2VkX2VkZ2VfdyArLiBleHRyYV90YWlsKX0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBleHRyYV90YWlsICsuIDAuNX0pXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgYm90dG9tX2hhbGYgQCB0b3BfaGFsZjtcbiAgICB9O1xuICBzY2FsZV94KHNfeCwgc2NhbGVfeShzX3ksIHBhdGgpKTtcbn07XG5sZXQgcmlnaHRfdGlwX3BhdGggPVxuICAgICh+c2NhbGVfeCBhcyBzX3g9MS4sIH5zY2FsZV95IGFzIHNfeT0xLiwgdGlwOiB0aXBfc2hhcGUpOiBTdmdVdGlsLlBhdGgudCA9PiB7XG4gIGxldCBwYXRoID1cbiAgICBzd2l0Y2ggKHRpcCkge1xuICAgIHwgKHtzaGFwZTogQ29udmV4LCBffSwgXykgPT5cbiAgICAgIHRsX2JyKH5oZW1pPWBOb3J0aCwgKCkpIEAgdHJfYmwofmhlbWk9YFNvdXRoLCAoKSlcbiAgICB8ICh7c2hhcGU6IENvbmNhdmUoX2EpLCBffSwgbikgPT5cbiAgICAgIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICAgICAgbGV0IGphZyA9IFtcbiAgICAgICAgTF8oe2R4OiBqYWdnZWRfZWRnZV93LCBkeTogamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IC0uIGphZ2dlZF9lZGdlX3csIGR5OiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogamFnZ2VkX2VkZ2VfdywgZHk6IGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgIF07XG4gICAgICBsZXQgdG9wX2hhbGYgPVxuICAgICAgICBuID09IDAgfHwgbiA9PSAxXG4gICAgICAgICAgPyBbSF8oe2R4OiB0aXBfd2lkdGh9KSwgLi4udHJfYmwofmhlbWk9YE5vcnRoLCAoKSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IDAuNSArLiBleHRyYV90YWlsfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IC0uIChleHRyYV90YWlsICsuIGphZ2dlZF9lZGdlX3cpfSldLFxuICAgICAgICAgICAgICB0cl9ibCh+aGVtaT1gTm9ydGgsIH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCAoKSksXG4gICAgICAgICAgICBdKTtcbiAgICAgIGxldCBib3R0b21faGFsZiA9XG4gICAgICAgIG4gPT0gMFxuICAgICAgICAgID8gdGxfYnIofmhlbWk9YFNvdXRoLCAoKSkgQCBbSF8oe2R4OiBGbG9hdC5uZWcodGlwX3dpZHRoKX0pXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICB0bF9icih+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgfmhlbWk9YFNvdXRoLCAoKSksXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IGV4dHJhX3RhaWx9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogRmxvYXQubmVnKGphZ2dlZF9lZGdlX3cgKy4gZXh0cmFfdGFpbCArLiAwLjUpfSldLFxuICAgICAgICAgICAgXSk7XG4gICAgICB0b3BfaGFsZiBAIGJvdHRvbV9oYWxmO1xuICAgIH07XG4gIHNjYWxlX3goc194LCBzY2FsZV95KHNfeSwgcGF0aCkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgUHJvZmlsZSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICBtb2xkOiBNb2xkLnQsXG4gIH07XG59O1xuXG5sZXQgcGF0aCA9ICh0aXBfbCwgdGlwX3IsIG9mZnNldCwgczogZmxvYXQpID0+IHtcbiAgbGV0IHhfZGlsYXRlID0gMS41O1xuICBMaXN0LmNvbmNhdChcbiAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgW1xuICAgICAgICBNKHt4OiBvZmZzZXQgKy4gMC41LCB5OiAwLjUgLS4gcyAvLiAyLn0pLFxuICAgICAgICBIXyh7ZHg6IHhfZGlsYXRlICouIHMgLy4gMi59KSxcbiAgICAgIF0sXG4gICAgICBEaWFnLnJpZ2h0X3RpcF9wYXRoKH5zY2FsZV94PXMgKi4geF9kaWxhdGUsIH5zY2FsZV95PXMsICh0aXBfciwgMCkpLFxuICAgICAgW0hfKHtkeDogLS4gcyAqLiB4X2RpbGF0ZX0pXSxcbiAgICAgIERpYWcubGVmdF90aXBfcGF0aCh+c2NhbGVfeD1zICouIHhfZGlsYXRlLCB+c2NhbGVfeT1zLCAodGlwX2wsIDApKSxcbiAgICAgIFtaXSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IHZpZXcgPSAofmZvbnRfbWV0cmljcywge21lYXN1cmVtZW50LCBtb2xkfTogUHJvZmlsZS50KTogTm9kZS50ID0+IHtcbiAgbGV0IHNvcnQgPSBtb2xkLm91dDtcbiAgbGV0IGNfY2xzID0gU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGxldCAodGlwX2wsIHRpcF9yKTogKEhhejNsY29yZS5OaWIuU2hhcGUudCwgSGF6M2xjb3JlLk5pYi5TaGFwZS50KSA9XG4gICAgVXRpbC5UdXBsZVV0aWwubWFwMihIYXozbGNvcmUuTmliLnNoYXBlLCBtb2xkLm5pYnMpO1xuICBsZXQgKHRpcF9sLCB0aXBfcik6IChIYXozbGNvcmUuTmliLnQsIEhhejNsY29yZS5OaWIudCkgPSAoXG4gICAge3NvcnQsIHNoYXBlOiB0aXBfbH0sXG4gICAge3NvcnQsIHNoYXBlOiB0aXBfcn0sXG4gICk7XG4gIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+bWVhc3VyZW1lbnQsXG4gICAgfmJhc2VfY2xzPVtcImVtcHR5LWhvbGVcIl0sXG4gICAgfnBhdGhfY2xzPVtcImVtcHR5LWhvbGUtcGF0aFwiLCBjX2Nsc10sXG4gICAgcGF0aCh0aXBfbCwgdGlwX3IsIDAuLCAwLjI4KSxcbiAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVXRpbDtcbm9wZW4gVXRpbC5XZWI7XG5cbmxldCBvZl9kZWxpbScgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwMCxcbiAgICAoKGxhYmVsLCBpc19pbl9idWZmZXIsIHNvcnQsIGlzX2NvbnNpc3RlbnQsIGlzX2NvbXBsZXRlLCBpKSkgPT4ge1xuICAgICAgbGV0IGNscyA9XG4gICAgICAgIHN3aXRjaCAobGFiZWwpIHtcbiAgICAgICAgfCBfIHdoZW4gaXNfaW5fYnVmZmVyID0+IFwiaW4tYnVmZmVyXCJcbiAgICAgICAgfCBfIHdoZW4gIWlzX2NvbnNpc3RlbnQgPT4gXCJzb3J0LWluY29uc2lzdGVudFwiXG4gICAgICAgIHwgXyB3aGVuICFpc19jb21wbGV0ZSA9PiBcImluY29tcGxldGVcIlxuICAgICAgICB8IFtzXSB3aGVuIHMgPT0gRm9ybS5leHBsaWNpdF9ob2xlID0+IFwiZXhwbGljaXQtaG9sZVwiXG4gICAgICAgIHwgW3NdIHdoZW4gRm9ybS5pc19zdHJpbmcocykgPT4gXCJzdHJpbmctbGl0XCJcbiAgICAgICAgfCBfID0+IFwiZGVmYXVsdFwiXG4gICAgICAgIH07XG4gICAgICBsZXQgcGx1cmFsaXR5ID0gTGlzdC5sZW5ndGgobGFiZWwpID09IDEgPyBcIm1vbm9cIiA6IFwicG9seVwiO1xuICAgICAgbGV0IGxhYmVsID0gaXNfaW5fYnVmZmVyID8gQXNzaXN0YW50RXhwYW5kZXIubWFyayhsYWJlbCkgOiBsYWJlbDtcbiAgICAgIFtcbiAgICAgICAgc3BhbihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0b2tlblwiLCBjbHMsIFNvcnQudG9fc3RyaW5nKHNvcnQpLCBwbHVyYWxpdHldKSxcbiAgICAgICAgICBbTm9kZS50ZXh0KExpc3QubnRoKGxhYmVsLCBpKSldLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9LFxuICApO1xubGV0IG9mX2RlbGltID1cbiAgICAoaXNfaW5fYnVmZmVyLCBpc19jb25zaXN0ZW50LCB0OiBQaWVjZS50aWxlLCBpOiBpbnQpOiBsaXN0KE5vZGUudCkgPT5cbiAgb2ZfZGVsaW0nKChcbiAgICB0LmxhYmVsLFxuICAgIGlzX2luX2J1ZmZlcixcbiAgICB0Lm1vbGQub3V0LFxuICAgIGlzX2NvbnNpc3RlbnQsXG4gICAgVGlsZS5pc19jb21wbGV0ZSh0KSxcbiAgICBpLFxuICApKTtcblxubGV0IG9mX2dyb3V0ID0gW05vZGUudGV4dChVbmljb2RlLm5ic3ApXTtcblxubGV0IG9mX3NlY29uZGFyeSA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAwLCAoKGNvbnRlbnQsIHNlY29uZGFyeV9pY29ucywgaW5kZW50KSkgPT5cbiAgICBpZiAoU3RyaW5nLmVxdWFsKFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpLCBGb3JtLmxpbmVicmVhaykpIHtcbiAgICAgIGxldCBzdHIgPSBzZWNvbmRhcnlfaWNvbnMgPyBGb3JtLmxpbmVicmVhayA6IFwiXCI7XG4gICAgICBbXG4gICAgICAgIHNwYW5fYyhcImxpbmVicmVha1wiLCBbdGV4dChzdHIpXSksXG4gICAgICAgIE5vZGUuYnIoKSxcbiAgICAgICAgTm9kZS50ZXh0KFN0cmluZ1V0aWwucmVwZWF0KGluZGVudCwgVW5pY29kZS5uYnNwKSksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoU3RyaW5nLmVxdWFsKFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpLCBGb3JtLnNwYWNlKSkge1xuICAgICAgbGV0IHN0ciA9IHNlY29uZGFyeV9pY29ucyA/IFwiwrdcIiA6IFVuaWNvZGUubmJzcDtcbiAgICAgIFtzcGFuX2MoXCJzZWNvbmRhcnlcIiwgW3RleHQoc3RyKV0pXTtcbiAgICB9IGVsc2UgaWYgKFNlY29uZGFyeS5jb250ZW50X2lzX2NvbW1lbnQoY29udGVudCkpIHtcbiAgICAgIFtzcGFuX2MoXCJjb21tZW50XCIsIFtOb2RlLnRleHQoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCkpXSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBbc3Bhbl9jKFwic2Vjb25kYXJ5XCIsIFtOb2RlLnRleHQoU2Vjb25kYXJ5LmdldF9zdHJpbmcoY29udGVudCkpXSldO1xuICAgIH1cbiAgKTtcblxubW9kdWxlIFRleHQgPSAoTToge1xuICAgICAgICAgICAgICAgICBsZXQgbWFwOiBNZWFzdXJlZC50O1xuICAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ3M6IFNldHRpbmdzLnQ7XG4gICAgICAgICAgICAgICB9KSA9PiB7XG4gIGxldCBtID0gcCA9PiBNZWFzdXJlZC5maW5kX3AocCwgTS5tYXApO1xuICBsZXQgcmVjIG9mX3NlZ21lbnQgPVxuICAgICAgICAgIChidWZmZXJfaWRzLCBub19zb3J0cywgc29ydCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIC8qIG5vdGU6IG5vX3NvcnRzIGZsYWcgaXMgdXNlZCBmb3IgYmFja3BhY2sgdmlldztcbiAgICAgICBvdGhlcndpc2UgU2VnbWVudC5leHBlY3RlZF9zb3J0cyBjYWxsIGNyYXNoZXMgZm9yIHNvbWUgcmVhc29uICovXG4gICAgbGV0IGV4cGVjdGVkX3NvcnRzID1cbiAgICAgIG5vX3NvcnRzXG4gICAgICAgID8gTGlzdC5pbml0KExpc3QubGVuZ3RoKHNlZyksIGkgPT4gKGksIFNvcnQuQW55KSlcbiAgICAgICAgOiBTZWdtZW50LmV4cGVjdGVkX3NvcnRzKHNvcnQsIHNlZyk7XG4gICAgbGV0IHNvcnRfb2ZfcF9pZHggPSBpZHggPT5cbiAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaWR4LCBleHBlY3RlZF9zb3J0cykpIHtcbiAgICAgIHwgTm9uZSA9PiBTb3J0LkFueVxuICAgICAgfCBTb21lKHNvcnQpID0+IHNvcnRcbiAgICAgIH07XG4gICAgc2VnXG4gICAgfD4gTGlzdC5tYXBpKChpLCBwKSA9PiAoaSwgcCkpXG4gICAgfD4gTGlzdC5jb25jYXRfbWFwKCgoaSwgcCkpID0+XG4gICAgICAgICBvZl9waWVjZShidWZmZXJfaWRzLCBzb3J0X29mX3BfaWR4KGkpLCBwKVxuICAgICAgICk7XG4gIH1cbiAgYW5kIG9mX3BpZWNlID1cbiAgICAgIChidWZmZXJfaWRzLCBleHBlY3RlZF9zb3J0OiBTb3J0LnQsIHA6IFBpZWNlLnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIHN3aXRjaCAocCkge1xuICAgIHwgVGlsZSh0KSA9PiBvZl90aWxlKGJ1ZmZlcl9pZHMsIGV4cGVjdGVkX3NvcnQsIHQpXG4gICAgfCBHcm91dChfKSA9PiBvZl9ncm91dFxuICAgIHwgU2Vjb25kYXJ5KHtjb250ZW50LCBffSkgPT5cbiAgICAgIG9mX3NlY29uZGFyeSgoY29udGVudCwgTS5zZXR0aW5ncy5zZWNvbmRhcnlfaWNvbnMsIG0ocCkubGFzdC5jb2wpKVxuICAgIH07XG4gIH1cbiAgYW5kIG9mX3RpbGUgPSAoYnVmZmVyX2lkcywgZXhwZWN0ZWRfc29ydDogU29ydC50LCB0OiBUaWxlLnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIGxldCBjaGlsZHJlbl9hbmRfc29ydHMgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAoaSwgKGwsIGNoaWxkLCByKSkgPT5cbiAgICAgICAgICAvL1RPRE8oYW5kcmV3KTogbW9yZSBzdWJ0bGUgbG9naWMgYWJvdXQgc29ydCBhY2NlcHRhYmlsaXR5XG4gICAgICAgICAgKGNoaWxkLCBsICsgMSA9PSByID8gTGlzdC5udGgodC5tb2xkLmluXywgaSkgOiBTb3J0LkFueSksXG4gICAgICAgIEFiYS5hYmFfdHJpcGxlcyhBYmEubWsodC5zaGFyZHMsIHQuY2hpbGRyZW4pKSxcbiAgICAgICk7XG4gICAgbGV0IGlzX2NvbnNpc3RlbnQgPSBTb3J0LmNvbnNpc3RlbnQodC5tb2xkLm91dCwgZXhwZWN0ZWRfc29ydCk7XG4gICAgbGV0IGlzX2luX2J1ZmZlciA9IExpc3QubWVtKHQuaWQsIGJ1ZmZlcl9pZHMpO1xuICAgIEFiYS5tayh0LnNoYXJkcywgY2hpbGRyZW5fYW5kX3NvcnRzKVxuICAgIHw+IEFiYS5qb2luKG9mX2RlbGltKGlzX2luX2J1ZmZlciwgaXNfY29uc2lzdGVudCwgdCksICgoc2VnLCBzb3J0KSkgPT5cbiAgICAgICAgIG9mX3NlZ21lbnQoYnVmZmVyX2lkcywgZmFsc2UsIHNvcnQsIHNlZylcbiAgICAgICApXG4gICAgfD4gTGlzdC5jb25jYXQ7XG4gIH07XG59O1xuXG5sZXQgcmVjIGhvbGVzID1cbiAgICAgICAgKH5mb250X21ldHJpY3MsIH5tYXA6IE1lYXN1cmVkLnQsIHNlZzogU2VnbWVudC50KTogbGlzdChOb2RlLnQpID0+XG4gIHNlZ1xuICB8PiBMaXN0LmNvbmNhdF9tYXAoXG4gICAgICAgZnVuXG4gICAgICAgfCBQaWVjZS5TZWNvbmRhcnkoXykgPT4gW11cbiAgICAgICB8IFRpbGUodCkgPT4gTGlzdC5jb25jYXRfbWFwKGhvbGVzKH5tYXAsIH5mb250X21ldHJpY3MpLCB0LmNoaWxkcmVuKVxuICAgICAgIHwgR3JvdXQoZykgPT4gW1xuICAgICAgICAgICBFbXB0eUhvbGVEZWMudmlldyhcbiAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLCAvLyBUT0RPKGQpIGZpeCBzb3J0XG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLmZpbmRfZyhnLCBtYXApLFxuICAgICAgICAgICAgICAgbW9sZDogTW9sZC5vZl9ncm91dChnLCBBbnkpLFxuICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICksXG4gICAgICAgICBdLFxuICAgICApO1xuXG5sZXQgc2ltcGxlX3ZpZXcgPVxuICAgICh+Zm9udF9tZXRyaWNzLCB+dW5zZWxlY3RlZCwgfm1hcCwgfnNldHRpbmdzOiBTZXR0aW5ncy50KTogTm9kZS50ID0+IHtcbiAgbW9kdWxlIFRleHQgPVxuICAgIFRleHQoe1xuICAgICAgbGV0IG1hcCA9IG1hcDtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIH0pO1xuICBsZXQgaG9sZXMgPSBob2xlcyh+bWFwLCB+Zm9udF9tZXRyaWNzLCB1bnNlbGVjdGVkKTtcbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSxcbiAgICBbXG4gICAgICBzcGFuX2MoXCJjb2RlLXRleHRcIiwgVGV4dC5vZl9zZWdtZW50KFtdLCBmYWxzZSwgU29ydC5BbnksIHVuc2VsZWN0ZWQpKSxcbiAgICAgIC4uLmhvbGVzLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgb2ZfaG9sZSA9ICh+Zm9udF9tZXRyaWNzLCB+bWVhc3VyZWQsIGc6IEdyb3V0LnQpID0+XG4gIC8vIFRPRE8oZCkgZml4IHNvcnRcbiAgRW1wdHlIb2xlRGVjLnZpZXcoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB7XG4gICAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQuZmluZF9nKGcsIG1lYXN1cmVkKSxcbiAgICAgIG1vbGQ6IE1vbGQub2ZfZ3JvdXQoZywgQW55KSxcbiAgICB9LFxuICApO1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfnNvcnQ6IFNvcnQudCxcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB7c3RhdGU6IHttZXRhOiB7bWVhc3VyZWQsIGJ1ZmZlcl9pZHMsIHVuc2VsZWN0ZWQsIGhvbGVzLCBffSwgX30sIF99OiBFZGl0b3IudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBtb2R1bGUgVGV4dCA9XG4gICAgVGV4dCh7XG4gICAgICBsZXQgbWFwID0gbWVhc3VyZWQ7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB9KTtcbiAgbGV0IGNvZGUgPSBUZXh0Lm9mX3NlZ21lbnQoYnVmZmVyX2lkcywgZmFsc2UsIHNvcnQsIHVuc2VsZWN0ZWQpO1xuICBsZXQgaG9sZXMgPSBMaXN0Lm1hcChvZl9ob2xlKH5tZWFzdXJlZCwgfmZvbnRfbWV0cmljcyksIGhvbGVzKTtcbiAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSwgW3NwYW5fYyhcImNvZGUtdGV4dFwiLCBjb2RlKSwgLi4uaG9sZXNdKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGJhY2twYWNrX3NlbF92aWV3ID1cbiAgICAoXG4gICAgICB4X29mZjogZmxvYXQsXG4gICAgICB5X29mZjogZmxvYXQsXG4gICAgICBzY2FsZTogZmxvYXQsXG4gICAgICBvcGFjaXR5OiBmbG9hdCxcbiAgICAgIHtmb2N1czogXywgY29udGVudCwgX306IFNlbGVjdGlvbi50LFxuICAgICkgPT4ge1xuICBtb2R1bGUgVGV4dCA9XG4gICAgQ29kZS5UZXh0KHtcbiAgICAgIGxldCBtYXAgPSBNZWFzdXJlZC5vZl9zZWdtZW50KGNvbnRlbnQpO1xuICAgICAgbGV0IHNldHRpbmdzID0gSW5pdC5zdGFydHVwLnNldHRpbmdzO1xuICAgIH0pO1xuICAvLyBUT0RPKGFuZHJldyk6IE1heWJlIHVzZSBpbml0IHNvcnQgYXQgY2FyZXQgdG8gcHJpbWUgdGhpc1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY29kZS10ZXh0XCIsIFwiYmFja3BhY2stc2VsZWN0aW9uXCJdKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSglZnB4LCAlZnB4KSBzY2FsZSglZik7IG9wYWNpdHk6ICVmJSU7XCIsXG4gICAgICAgICAgICB4X29mZixcbiAgICAgICAgICAgIHlfb2ZmLFxuICAgICAgICAgICAgc2NhbGUsXG4gICAgICAgICAgICBvcGFjaXR5LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICAvLyB6d3NwIG5lY2Vzc2FyeSBmb3IgY29udGFpbmluZyBib3ggdG8gc3RyZXRjaCB0byBjb250YWluIHRyYWlsaW5nIG5ld2xpbmVcbiAgICBUZXh0Lm9mX3NlZ21lbnQoW10sIHRydWUsIEFueSwgY29udGVudCkgQCBbdGV4dChVbmljb2RlLnp3c3ApXSxcbiAgKTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm9yaWdpbjogTWVhc3VyZWQuUG9pbnQudCxcbiAgICAgIHtiYWNrcGFjaywgX30gYXMgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgLy9UT0RPKGFuZHJldyk6IGNsZWFuIHVwIHRoaXMgZHVtcHN0ZXIgZmlyZSBvZiBhIGZ1bmN0aW9uXG4gIGxldCBoZWlnaHRfaGVhZCA9XG4gICAgc3dpdGNoIChiYWNrcGFjaykge1xuICAgIHwgW10gPT4gMFxuICAgIHwgW2hkLCAuLi5fXSA9PiBNZWFzdXJlZC5zZWdtZW50X2hlaWdodChoZC5jb250ZW50KVxuICAgIH07XG4gIGxldCBjYW5fcHV0X2Rvd24gPVxuICAgIHN3aXRjaCAoWmlwcGVyLnBvcF9iYWNrcGFjayh6KSkge1xuICAgIC8vIGNhcmV0IHRoaW5nIGlzIGhhY2s7IGkgZG9uJ3Qga25vdyB3aHkgcG9wX2JhY2twYWNrXG4gICAgLy8gZ2l2ZXMgdXMgd2hhdCB3ZSB3YW50IGhlcmVcbiAgICB8IFNvbWUoXykgPT4gei5jYXJldCA9PSBPdXRlclxuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIH07XG4gIGxldCBjYXJldF9hZGogPSB7XG4gICAgbGV0IHNoYXBlID0gWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KTtcbiAgICBsZXQgc2lkZSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgICAgfCBTb21lKChfLCBzaWRlLCBfKSkgPT4gc2lkZVxuICAgICAgfCBfID0+IFJpZ2h0XG4gICAgICB9O1xuICAgIERlY1V0aWwuY2FyZXRfYWRqdXN0KHNpZGUsIHNoYXBlKTtcbiAgfTtcbiAgbGV0IGNhcmV0X2Fkal9weCA9XG4gICAgLy9UT0RPKGFuZHJldyk6IGZpZ3VyZSBvdXQgd2h5IHdlIG5lZWQgdGhpcyBteXN0ZXJ5IHBpeGVsIGJlbG93XG4gICAgKC0xLikgKy4gY2FyZXRfYWRqICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGg7XG4gIGxldCBtYXhfZGlzcCA9IDM7IC8qIE1heGltdW0gdmVydGljYWwgYmFja3BhY2sgZGlzcGxhY2VtZW50ICovXG4gIGxldCB2ZXJ0aWNhbF9kaXNwID0gb3JpZ2luLnJvdyA8PSBtYXhfZGlzcCA/IG9yaWdpbi5yb3cgOiBtYXhfZGlzcDtcbiAgbGV0IHNlbGVjdGlvbnNfc3R5bGUgPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDtcIixcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGNhcmV0X2Fkal9weCxcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93IC0gdmVydGljYWxfZGlzcCAtIGhlaWdodF9oZWFkIC0gMSlcbiAgICAgICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICk7XG4gIGxldCBzY2FsZV9mbiA9IGlkeCA9PiBmbG9hdF9vZl9pbnQoMTAwIC0gMTIgKiBpZHgpIC8uIDEwMC47XG4gIGxldCB4X2ZuID0gaWR4ID0+IGZsb2F0X29mX2ludCgxMiAqIGlkeCk7XG4gIGxldCBpbml0X29wYWNpdHkgPSAxMDAuO1xuICBsZXQgb3BhY2l0eV9yZWR1Y3Rpb24gPSAyMC47IC8vIHJlZHVjdGlvbiBwZXIgbGluZVxuICBsZXQgaW5pdF9pZHggPSAwO1xuICBsZXQgZHlfZm4gPSAoaWR4LCBiYXNlX2hlaWdodCkgPT5cbiAgICBmb250X21ldHJpY3Mucm93X2hlaWdodFxuICAgICouIGZsb2F0X29mX2ludChiYXNlX2hlaWdodClcbiAgICAqLiBzY2FsZV9mbihpZHgpXG4gICAgLS4gNC47XG4gIGxldCBpbml0X3lfb2Zmc2V0ID0gZHlfZm4oaW5pdF9pZHgsIGhlaWdodF9oZWFkKTtcbiAgbGV0IChfLCBfLCBfLCBzZWxlY3Rpb25zKSA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoKGlkeCwgeV9vZmZzZXQsIG9wYWNpdHksIHZzKSwgczogU2VsZWN0aW9uLnQpID0+IHtcbiAgICAgICAgbGV0IGJhc2VfaGVpZ2h0ID0gTWVhc3VyZWQuc2VnbWVudF9oZWlnaHQocy5jb250ZW50KTtcbiAgICAgICAgbGV0IHNjYWxlID0gc2NhbGVfZm4oaWR4KTtcbiAgICAgICAgbGV0IHhfb2Zmc2V0ID0geF9mbihpZHgpO1xuICAgICAgICBsZXQgbmV3X3lfb2Zmc2V0ID0geV9vZmZzZXQgLS4gZHlfZm4oaWR4LCBiYXNlX2hlaWdodCk7XG4gICAgICAgIGxldCB2ID0gYmFja3BhY2tfc2VsX3ZpZXcoeF9vZmZzZXQsIG5ld195X29mZnNldCwgc2NhbGUsIG9wYWNpdHksIHMpO1xuICAgICAgICBsZXQgbmV3X2lkeCA9IGlkeCArIDE7XG4gICAgICAgIGxldCBuZXdfb3BhY2l0eSA9IG9wYWNpdHkgLS4gb3BhY2l0eV9yZWR1Y3Rpb247XG4gICAgICAgIC8vVE9ETyhhbmRyZXcpOiBhbSBpIG1ha2luZyB0aGlzIGRpZmZpY3VsdCBieSBnb2luZyBiYWNrd2FyZHM/XG4gICAgICAgIChuZXdfaWR4LCBuZXdfeV9vZmZzZXQsIG5ld19vcGFjaXR5LCBMaXN0LmNvbnModiwgdnMpKTtcbiAgICAgIH0sXG4gICAgICAoaW5pdF9pZHgsIGluaXRfeV9vZmZzZXQsIGluaXRfb3BhY2l0eSwgW10pLFxuICAgICAgYmFja3BhY2ssXG4gICAgKTtcbiAgbGV0IHNlbGVjdGlvbnNfdmlldyA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzZWxlY3Rpb25zX3N0eWxlKSxcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiYmFja3BhY2tcIl0pLFxuICAgICAgICBdKSxcbiAgICAgIHNlbGVjdGlvbnMsXG4gICAgKTtcbiAgbGV0IGxlbmd0aCA9XG4gICAgc3dpdGNoIChiYWNrcGFjaykge1xuICAgIHwgW10gPT4gMFxuICAgIHwgW2hkLCAuLi5fXSA9PiBNZWFzdXJlZC5zZWdtZW50X3dpZHRoKGhkLmNvbnRlbnQpXG4gICAgfTtcblxuICBsZXQgam9pbmVyX3N0eWxlID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IGhlaWdodDogJWZweDtcIixcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGNhcmV0X2Fkal9weCxcbiAgICAgICgtMy4pXG4gICAgICArLiBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdyAtIHZlcnRpY2FsX2Rpc3ApXG4gICAgICAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICAgIDMuICsuIEZsb2F0Lm9mX2ludCh2ZXJ0aWNhbF9kaXNwKSAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICApO1xuICBsZXQgam9pbmVyID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIGpvaW5lcl9zdHlsZSksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImJhY2twYWNrLWpvaW5lclwiXSksXG4gICAgICAgIF0pLFxuICAgICAgW10sXG4gICAgKTtcbiAgLy9UT0RPKGFuZHJldyk6IGJyZWFrIG91dCBiYWNrcGFjayBkZWNvcmF0aW9uIGludG8gaXRzIG93biBtb2R1bGVcbiAgbGV0IGdlbmllX3ZpZXcgPVxuICAgIERlY1V0aWwuY29kZV9zdmcoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfm9yaWdpbj17cm93OiAwLCBjb2w6IDB9LFxuICAgICAgfmJhc2VfY2xzPVtcInJlc3RydWN0dXJpbmctZ2VuaWVcIl0sXG4gICAgICB+cGF0aF9jbHM9W1wicmVzdHJ1Y3R1cmluZy1nZW5pZS1wYXRoXCJdLFxuICAgICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgICAgTSh7eDogMC4sIHk6IDAufSksXG4gICAgICAgIFYoe3k6ICgtMS4wKX0pLFxuICAgICAgICBIXyh7ZHg6IEZsb2F0Lm9mX2ludChsZW5ndGgpfSksXG4gICAgICAgIFZfKHtkeTogMC4wfSksXG4gICAgICAgIFosXG4gICAgICBdLFxuICAgICk7XG4gIGxldCBnZW5pZV9zdHlsZSA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4O1wiLFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5jb2wpICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGggKy4gY2FyZXRfYWRqX3B4LFxuICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cgLSB2ZXJ0aWNhbF9kaXNwKVxuICAgICAgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHRcbiAgICAgICsuIDEuLFxuICAgICk7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NlcyhcbiAgICAgICAgICBbXCJiYWNrcGFja1wiXSBAIChjYW5fcHV0X2Rvd24gPyBbXSA6IFtcImNhbnQtcHV0LWRvd25cIl0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgW1xuICAgICAgc2VsZWN0aW9uc192aWV3LFxuICAgICAgZGl2KH5hdHRyPUF0dHIuY3JlYXRlKFwic3R5bGVcIiwgZ2VuaWVfc3R5bGUpLCBbZ2VuaWVfdmlld10pLFxuICAgIF1cbiAgICBAIChiYWNrcGFjayAhPSBbXSA/IFtqb2luZXJdIDogW10pLFxuICApO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU3ZnVXRpbDtcblxubGV0IGNhcmV0X3dpZHRoX3N0cmFpZ2h0ID0gMC4xO1xubGV0IGNhcmV0X3dpZHRoX2JlbnQgPSAwLjE7XG5sZXQgY2FyZXRfYmVuZCA9IERlY1V0aWwudGlwX3dpZHRoO1xuXG5tb2R1bGUgUHJvZmlsZSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIHNpZGU6IERpcmVjdGlvbi50LFxuICAgIG9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgc2hhcGU6IG9wdGlvbihEaXJlY3Rpb24udCksXG4gIH07XG59O1xuXG5sZXQgY2FyZXRfcGF0aCA9IChzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSkgPT4ge1xuICBsZXQgY2FyZXRfYmVuZF9wYXJhbSA9XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgU29tZShSaWdodCkgPT4gLS4gY2FyZXRfYmVuZFxuICAgIHwgU29tZShMZWZ0KSA9PiBjYXJldF9iZW5kXG4gICAgfCBOb25lID0+IDAuMFxuICAgIH07XG4gIGxldCBjYXJldF93aWR0aF9wYXJhbSA9XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgU29tZShSaWdodCkgPT4gLS4gY2FyZXRfd2lkdGhfYmVudFxuICAgIHwgU29tZShMZWZ0KSA9PiBjYXJldF93aWR0aF9iZW50XG4gICAgfCBOb25lID0+IGNhcmV0X3dpZHRoX3N0cmFpZ2h0XG4gICAgfTtcbiAgUGF0aC5bXG4gICAgbSh+eD0wLCB+eT0wKSxcbiAgICBIKHt4OiBjYXJldF93aWR0aF9wYXJhbX0pLFxuICAgIExfKHtkeDogLS4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6IDAuNX0pLFxuICAgIExfKHtkeDogKy4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6IDAuNX0pLFxuICAgIEgoe3g6IC0uIGNhcmV0X3dpZHRoX3BhcmFtfSksXG4gICAgTF8oe2R4OiAtLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogKC0wLjUpfSksXG4gICAgTF8oe2R4OiArLiBjYXJldF9iZW5kX3BhcmFtLCBkeTogKC0wLjUpfSksXG4gIF07XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5wcm9maWxlIGFzIHtzaGFwZSwgc2lkZSwgb3JpZ2lufTogUHJvZmlsZS50LFxuICAgICkgPT4ge1xuICBsZXQgbF9hZGogPSBEZWNVdGlsLmNhcmV0X2FkanVzdChzaWRlLCBzaGFwZSk7XG4gIERlY1V0aWwuY29kZV9zdmcoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+b3JpZ2luLFxuICAgIH5pZD1cImNhcmV0XCIsXG4gICAgfmJhc2VfY2xzPVtcImJsaW5rXCJdLFxuICAgIH5wYXRoX2Nscz1bXCJjYXJldC1wYXRoXCJdLFxuICAgIH5oZWlnaHRfZnVkZ2U9RGVjVXRpbC5zaGFkb3dfYWRqICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgIH5sZWZ0X2Z1ZGdlPWxfYWRqICouIGZvbnRfbWV0cmljcy5jb2xfd2lkdGgsXG4gICAgY2FyZXRfcGF0aChzaGFwZSksXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5tb2R1bGUgUHJvZmlsZSA9IHtcbiAgdHlwZSBzdHlsZSA9IFsgfCBgQmFyZSB8IGBTaWJsaW5nIHwgYEFuY2hvciB8IGBDYXJldF07XG4gIHR5cGUgdCA9IHtcbiAgICBzdHlsZSxcbiAgICBtZWFzdXJlbWVudDogSGF6M2xjb3JlLk1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIHNvcnQ6IEhhejNsY29yZS5Tb3J0LnQsXG4gIH07XG59O1xuXG5sZXQgY2FyZXRfcG9zaXRpb25fcmFkaWkgPVxuICAgICh+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LCB+c3R5bGU6IFByb2ZpbGUuc3R5bGUpID0+IHtcbiAgbGV0IHIgPVxuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICB8IGBDYXJldCA9PiAzLjc1XG4gICAgfCBgQW5jaG9yXG4gICAgfCBgU2libGluZyA9PiAyLjc1XG4gICAgfCBgQmFyZSA9PiAyLjBcbiAgICB9O1xuICAociAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoLCByIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KTtcbn07XG5cbmxldCB2aWV3ID0gKH5mb250X21ldHJpY3MsIHtzdHlsZSwgc29ydCwgbWVhc3VyZW1lbnR9OiBQcm9maWxlLnQpID0+IHtcbiAgbGV0IChyX3gsIHJfeSkgPSBjYXJldF9wb3NpdGlvbl9yYWRpaSh+Zm9udF9tZXRyaWNzLCB+c3R5bGUpO1xuICBsZXQgY19jbHMgPSBIYXozbGNvcmUuU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGxldCBjbHMgPVxuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICB8IGBCYXJlID0+IFwib3V0ZXItY291c2luXCJcbiAgICB8IGBDYXJldCA9PiBcImN1cnJlbnQtY2FyZXQtcG9zXCJcbiAgICB8IGBBbmNob3IgPT4gXCJhbmNob3JcIlxuICAgIHwgYFNpYmxpbmcgPT4gXCJzaWJsaW5nXCJcbiAgICB9O1xuICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIEF0dHIuY2xhc3NfKGNscyksXG4gICAgICAgIERlY1V0aWwuYWJzX3Bvc2l0aW9uKH5mb250X21ldHJpY3MsIG1lYXN1cmVtZW50Lm9yaWdpbiksXG4gICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAxIDFcIikpLFxuICAgICAgICBBdHRyLmNyZWF0ZShcInByZXNlcnZlQXNwZWN0UmF0aW9cIiwgXCJub25lXCIpLFxuICAgICAgXSksXG4gICAgW1xuICAgICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgICBcInJlY3RcIixcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgQXR0ci5bXG4gICAgICAgICAgICAgIGNyZWF0ZShcInhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIC0uIHJfeCkpLFxuICAgICAgICAgICAgICBjcmVhdGUoXCJ5XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAwLjEgLS4gcl95KSksXG4gICAgICAgICAgICAgIGNyZWF0ZShcIndpZHRoXCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAxLiAqLiByX3gpKSxcbiAgICAgICAgICAgICAgY3JlYXRlKFwiaGVpZ2h0XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAxLiAqLiByX3kpKSxcbiAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNhcmV0LXBvc2l0aW9uLXBhdGhcIiwgY2xzLCBjX2Nsc10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG4iLCJ0eXBlIGNvbG9yTWFwID0gSGF6M2xjb3JlLklkLk1hcC50KHN0cmluZyk7XG5cbi8qW0BkZXJpdmluZyBzZXhwXSovXG50eXBlIHQgPSAoY29sb3JNYXAsIGludCk7XG5cbi8qIFRPRE86IEhhbm5haCAtIFBpY2sgNyBvciBzbyBkaXN0aW5jdCBjb2xvcnMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbG9yIGdlbmVyYXRvciB0aGluZyAoSFNMdXYpXG4gICBNYWtlIHN1cmUgZGlzdGluZ3Vpc2hhYmxlIGZvciBjb2xvciBibGluZCBvciBncmV5c2NhbGVcbiAgIC0gdGhpbmsgYWJvdXQgcmVsYXRlZCBjb2xvcnMgZm9yIHJlbGF0ZWQgY29uY2VwdHMqL1xubGV0IGNoaWxkX2NvbG9ycyA9IFtcImJsdWVcIiwgXCJwaW5rXCIsIFwidGVhbFwiLCBcIm9yYW5nZVwiLCBcInB1cnBsZVwiLCBcInllbGxvd1wiXTtcblxubGV0IGVtcHR5ID0gKEhhejNsY29yZS5JZC5NYXAuZW1wdHksIDApO1xubGV0IGdldF9jb2xvciA9IChpZDogSGF6M2xjb3JlLklkLnQsIChtYXBwaW5nLCBpbmRleCk6IHQpOiAoc3RyaW5nLCB0KSA9PlxuICBzd2l0Y2ggKEhhejNsY29yZS5JZC5NYXAuZmluZF9vcHQoaWQsIG1hcHBpbmcpKSB7XG4gIHwgTm9uZSA9PlxuICAgIGxldCBjb2xvciA9IExpc3QubnRoKGNoaWxkX2NvbG9ycywgaW5kZXggbW9kIExpc3QubGVuZ3RoKGNoaWxkX2NvbG9ycykpO1xuICAgIGxldCBtYXBwaW5nID0gSGF6M2xjb3JlLklkLk1hcC5hZGQoaWQsIGNvbG9yLCBtYXBwaW5nKTtcbiAgICAoY29sb3IsIChtYXBwaW5nLCBpbmRleCArIDEpKTtcbiAgfCBTb21lKGNvbG9yKSA9PiAoY29sb3IsIChtYXBwaW5nLCBpbmRleCkpXG4gIH07XG5cbmxldCB0b19saXN0ID0gKG1hcDogY29sb3JNYXApOiBsaXN0KChIYXozbGNvcmUuSWQudCwgc3RyaW5nKSkgPT4ge1xuICBMaXN0Lm9mX3NlcShIYXozbGNvcmUuSWQuTWFwLnRvX3NlcShtYXApKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gU3ZnVXRpbDtcblxubGV0IHJ1bjogTmliLlNoYXBlLnQgPT4gZmxvYXQgPVxuICBmdW5cbiAgfCBDb252ZXggPT4gKy4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGhcbiAgfCBDb25jYXZlKF8pID0+IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoO1xuXG5sZXQgYWRqOiBOaWIuU2hhcGUudCA9PiBmbG9hdCA9XG4gIGZ1blxuICB8IENvbnZleCA9PiBEZWNVdGlsLmNvbnZleF9hZGpcbiAgfCBDb25jYXZlKF8pID0+IERlY1V0aWwuY29uY2F2ZV9hZGo7XG5cbmxldCBsX2hvb2sgPSAobDogTmliLlNoYXBlLnQpOiBsaXN0KFBhdGguY21kKSA9PiBbXG4gIEhfKHtkeDogLS4gYWRqKGwpfSksXG4gIExfKHtkeDogLS4gcnVuKGwpLCBkeTogKC0wLjUpfSksXG4gIExfKHtkeDogKy4gcnVuKGwpLCBkeTogKC0wLjUpfSksXG4gIEhfKHtkeDogKy4gYWRqKGwpfSksXG5dO1xuXG5sZXQgcl9ob29rID0gKHI6IE5pYi5TaGFwZS50KTogbGlzdChQYXRoLmNtZCkgPT4gW1xuICBIXyh7ZHg6ICsuIGFkaihyKX0pLFxuICBMXyh7ZHg6ICsuIHJ1bihyKSwgZHk6IDAuNX0pLFxuICBMXyh7ZHg6IC0uIHJ1bihyKSwgZHk6IDAuNX0pLFxuICBIXyh7ZHg6IC0uIGFkaihyKX0pLFxuXTtcblxubGV0IHNpbXBsZV9zaGFyZF9wYXRoID0gKChsLCByKTogTmlicy5zaGFwZXMsIGxlbmd0aDogaW50KTogbGlzdChQYXRoLmNtZCkgPT5cbiAgTGlzdC5mbGF0dGVuKFxuICAgIFBhdGguW1xuICAgICAgW20ofng9MCwgfnk9MCksIGgofng9bGVuZ3RoKV0sXG4gICAgICByX2hvb2sociksXG4gICAgICBbaCh+eD0wKV0sXG4gICAgICBsX2hvb2sobCksXG4gICAgXSxcbiAgKTtcblxubGV0IHNpbXBsZV9zaGFyZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5zaGFwZXMsXG4gICAgICB+cGF0aF9jbHMsXG4gICAgICB+YmFzZV9jbHMsXG4gICAgICB+YXR0cj1bXSxcbiAgICAgIH5mdWRnZT1EZWNVdGlsLmZ6ZXJvLFxuICAgICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT5cbiAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICB+Zm9udF9tZXRyaWNzLFxuICAgIH5tZWFzdXJlbWVudCxcbiAgICB+YmFzZV9jbHMsXG4gICAgfnBhdGhfY2xzLFxuICAgIH5hdHRyLFxuICAgIH5mdWRnZSxcbiAgICBzaW1wbGVfc2hhcmRfcGF0aChzaGFwZXMsIG1lYXN1cmVtZW50Lmxhc3QuY29sIC0gbWVhc3VyZW1lbnQub3JpZ2luLmNvbCksXG4gICk7XG5cbmxldCBzaW1wbGVfc2hhcmRfc2VsZWN0ZWQgPVxuICAgICh+Zm9udF9tZXRyaWNzLCB+c2hhcGVzLCB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LCB+YnVmZmVyKTogdCA9PiB7XG4gIGxldCBwYXRoX2NscyA9IFtcbiAgICBcInRpbGUtcGF0aFwiLFxuICAgIFwicmFpc2VkXCIsXG4gICAgYnVmZmVyID8gXCJzZWxlY3RlZC1idWZmZXJcIiA6IFwic2VsZWN0ZWRcIixcbiAgXTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS1zZWxlY3RlZFwiXTtcbiAgc2ltcGxlX3NoYXJkKFxuICAgIC8qIEluY3JlYXNlIGhlaWdodCBzbGlnaHRseSB0byBhdm9pZCBsZWF2aW5nIHNwYWNlcyBiZXR3ZWVuIHNlbGVjdGVkIGxpbmVzICovXG4gICAgfmZ1ZGdlPXtoZWlnaHQ6IDAuMywgdG9wOiAwLiwgd2lkdGg6IDAuLCBsZWZ0OiAwLn0sXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+c2hhcGVzLFxuICAgIH5wYXRoX2NscyxcbiAgICB+YmFzZV9jbHMsXG4gICAgbWVhc3VyZW1lbnQsXG4gICk7XG59O1xuXG5sZXQgc2ltcGxlX3NoYXJkX2luZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5oYXNfY2FyZXQsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnNvcnQsXG4gICAgICB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPVxuICAgIFtcInRpbGUtcGF0aFwiLCBcInJhaXNlZFwiLCBTb3J0LnRvX3N0cmluZyhzb3J0KV1cbiAgICBAIChoYXNfY2FyZXQgPyBbXCJpbmRpY2F0ZWQtY2FyZXRcIl0gOiBbXCJpbmRpY2F0ZWRcIl0pO1xuICBsZXQgYmFzZV9jbHMgPSBbXCJ0aWxlLWluZGljYXRlZFwiXTtcbiAgc2ltcGxlX3NoYXJkKH5mb250X21ldHJpY3MsIH5zaGFwZXMsIH5wYXRoX2NscywgfmJhc2VfY2xzLCBtZWFzdXJlbWVudCk7XG59O1xuXG5sZXQgc2ltcGxlX3NoYXJkc19pbmRpY2F0ZWQgPVxuICAgICh+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LCB+Y2FyZXQ6IChJZC50LCBpbnQpLCAoaWQsIG1vbGQsIHNoYXJkcykpXG4gICAgOiBsaXN0KHQpID0+XG4gIExpc3QubWFwKFxuICAgICgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgIHNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQoXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5oYXNfY2FyZXQ9Y2FyZXQgPT0gKGlkLCBpbmRleCksXG4gICAgICAgIH5zaGFwZXM9TW9sZC5uaWJfc2hhcGVzKH5pbmRleCwgbW9sZCksXG4gICAgICAgIH5zb3J0PW1vbGQub3V0LFxuICAgICAgICB+bWVhc3VyZW1lbnQsXG4gICAgICApLFxuICAgIHNoYXJkcyxcbiAgKTtcblxubGV0IG5leHRfc3RlcF9pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfmhhc19jYXJldCxcbiAgICAgIH5zaGFwZXMsXG4gICAgICB+c29ydCxcbiAgICAgIH5tZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgKVxuICAgIDogdCA9PiB7XG4gIGxldCBwYXRoX2NscyA9XG4gICAgW1widGlsZS1wYXRoXCIsIFwicmFpc2VkXCIsIFNvcnQudG9fc3RyaW5nKHNvcnQpXVxuICAgIEAgKGhhc19jYXJldCA/IFtcImluZGljYXRlZC1jYXJldFwiXSA6IFtcImluZGljYXRlZFwiXSk7XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtbmV4dC1zdGVwXCJdO1xuICBzaW1wbGVfc2hhcmQoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+c2hhcGVzLFxuICAgIH5wYXRoX2NscyxcbiAgICB+YmFzZV9jbHMsXG4gICAgfmF0dHI9W1xuICAgICAgQXR0ci5vbl9tb3VzZWRvd24oXyA9PiB7XG4gICAgICAgIHByaW50X2VuZGxpbmUoXCJDTElDSyFcIik7XG4gICAgICAgIGluamVjdCgpO1xuICAgICAgfSksXG4gICAgXSxcbiAgICBtZWFzdXJlbWVudCxcbiAgKTtcbn07XG5cbmxldCBuZXh0X3N0ZXBfc2hhcmRzX2luZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+Y2FyZXQ6IChJZC50LCBpbnQpLFxuICAgICAgKGlkLCBtb2xkLCBzaGFyZHMpLFxuICAgIClcbiAgICA6IGxpc3QodCkgPT5cbiAgTGlzdC5tYXAoXG4gICAgKChpbmRleCwgbWVhc3VyZW1lbnQpKSA9PlxuICAgICAgbmV4dF9zdGVwX2luZGljYXRlZChcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfmhhc19jYXJldD1jYXJldCA9PSAoaWQsIGluZGV4KSxcbiAgICAgICAgfnNoYXBlcz1Nb2xkLm5pYl9zaGFwZXMofmluZGV4LCBtb2xkKSxcbiAgICAgICAgfnNvcnQ9bW9sZC5vdXQsXG4gICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICksXG4gICAgc2hhcmRzLFxuICApO1xuXG5sZXQgdGFrZW5fc3RlcF9pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+aGFzX2NhcmV0LFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5zb3J0LFxuICAgICAgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IHBhdGhfY2xzID1cbiAgICBbXCJ0aWxlLXBhdGhcIiwgXCJyYWlzZWRcIiwgU29ydC50b19zdHJpbmcoc29ydCldXG4gICAgQCAoaGFzX2NhcmV0ID8gW1wiaW5kaWNhdGVkLWNhcmV0XCJdIDogW1wiaW5kaWNhdGVkXCJdKTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS10YWtlbi1zdGVwXCJdO1xuICBzaW1wbGVfc2hhcmQofmZvbnRfbWV0cmljcywgfnNoYXBlcywgfnBhdGhfY2xzLCB+YmFzZV9jbHMsIG1lYXN1cmVtZW50KTtcbn07XG5cbmxldCB0YWtlbl9zdGVwX3NoYXJkc19pbmRpY2F0ZWQgPVxuICAgICh+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LCB+Y2FyZXQ6IChJZC50LCBpbnQpLCAoaWQsIG1vbGQsIHNoYXJkcykpXG4gICAgOiBsaXN0KHQpID0+XG4gIExpc3QubWFwKFxuICAgICgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgIHRha2VuX3N0ZXBfaW5kaWNhdGVkKFxuICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICB+aGFzX2NhcmV0PWNhcmV0ID09IChpZCwgaW5kZXgpLFxuICAgICAgICB+c2hhcGVzPU1vbGQubmliX3NoYXBlcyh+aW5kZXgsIG1vbGQpLFxuICAgICAgICB+c29ydD1tb2xkLm91dCxcbiAgICAgICAgfm1lYXN1cmVtZW50LFxuICAgICAgKSxcbiAgICBzaGFyZHMsXG4gICk7XG5cbmxldCBzaGFkb3dmdWRnZSA9IFBhdGguY21kZnVkZ2Uofnk9RGVjVXRpbC5zaGFkb3dfYWRqKTtcblxubGV0IHNoYXJkc19vZl90aWxlcyA9IHRpbGVzID0+XG4gIHRpbGVzXG4gIHw+IExpc3QuY29uY2F0X21hcCgoKF8sIF8sIHNoYXJkcykpID0+IHNoYXJkcylcbiAgfD4gTGlzdC5zb3J0KFxuICAgICAgICgoXywgbTE6IE1lYXN1cmVkLm1lYXN1cmVtZW50KSwgKF8sIG0yOiBNZWFzdXJlZC5tZWFzdXJlbWVudCkpID0+XG4gICAgICAgTWVhc3VyZWQuUG9pbnQuY29tcGFyZShtMS5vcmlnaW4sIG0yLm9yaWdpbilcbiAgICAgKTtcblxubGV0IGJpX2xpbmVzID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnJvd3M6IE1lYXN1cmVkLlJvd3MudCxcbiAgICAgIHRpbGVzOiBsaXN0KChJZC50LCBNb2xkLnQsIE1lYXN1cmVkLlNoYXJkcy50KSksXG4gICAgKVxuICAgIDogbGlzdCh0KSA9PiB7XG4gIGxldCBzaGFyZHMgPSBzaGFyZHNfb2ZfdGlsZXModGlsZXMpO1xuICBsZXQgc2hhcmRfcm93cyA9IE1lYXN1cmVkLlNoYXJkcy5zcGxpdF9ieV9yb3coc2hhcmRzKTtcbiAgbGV0IGludHJhX2xpbmVzID1cbiAgICBzaGFyZF9yb3dzXG4gICAgfD4gTGlzdC5tYXAoTGlzdFV0aWwubmVpZ2hib3JzKVxuICAgIHw+IExpc3QuY29uY2F0X21hcChcbiAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAoKChfLCBsOiBNZWFzdXJlZC5tZWFzdXJlbWVudCksIChfLCByOiBNZWFzdXJlZC5tZWFzdXJlbWVudCkpKSA9PlxuICAgICAgICAgICAoXG4gICAgICAgICAgICAgbC5vcmlnaW4sXG4gICAgICAgICAgICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgICAgaCh+eD1yLmxhc3QuY29sIC0gbC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICBdLFxuICAgICAgICAgICApXG4gICAgICAgICApLFxuICAgICAgICk7XG4gIGxldCBpbnRlcl9saW5lcyA9XG4gICAgTGlzdFV0aWwubmVpZ2hib3JzKHNoYXJkX3Jvd3MpXG4gICAgfD4gTGlzdC5tYXAoXG4gICAgICAgICAoKHJvd19zaGFyZHM6IE1lYXN1cmVkLlNoYXJkcy50LCByb3dfc2hhcmRzJzogTWVhc3VyZWQuU2hhcmRzLnQpKSA9PiB7XG4gICAgICAgICBhc3NlcnQocm93X3NoYXJkcyAhPSBbXSk7XG4gICAgICAgICBhc3NlcnQocm93X3NoYXJkcycgIT0gW10pO1xuICAgICAgICAgbGV0IG9yaWdpbiA9IHNuZChMaXN0LmhkKHJvd19zaGFyZHMpKS5vcmlnaW47XG4gICAgICAgICBsZXQgb3JpZ2luJyA9IHNuZChMaXN0LmhkKHJvd19zaGFyZHMnKSkub3JpZ2luO1xuICAgICAgICAgbGV0IGluZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChvcmlnaW4ucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICAgICBsZXQgdl9kZWx0YSA9IG9yaWdpbicuY29sID09IGluZGVudCA/ICgtMSkgOiAwO1xuICAgICAgICAgKFxuICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgaF8ofmR4PWluZGVudCAtIG9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHZfKH5keT1vcmlnaW4nLnJvdyAtIG9yaWdpbi5yb3cgKyB2X2RlbHRhKSksXG4gICAgICAgICAgICAgaF8ofmR4PW9yaWdpbicuY29sIC0gaW5kZW50KSxcbiAgICAgICAgICAgXSxcbiAgICAgICAgICk7XG4gICAgICAgfSk7XG4gIC8vIFRPRE8oZCkgY2xlYW4gdXAgUHJvZmlsZSBkYXRhdHlwZVxuICBsZXQgcyA9XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSB0aWxlXCIpXG4gICAgfCBbKF8sIG1vbGQsIF8pLCAuLi5fXSA9PiBtb2xkLm91dFxuICAgIH07XG4gIGxldCBjbHNzID0gW1wiY2hpbGQtbGluZVwiLCBTb3J0LnRvX3N0cmluZyhzKV07XG4gIGludHJhX2xpbmVzXG4gIEAgaW50ZXJfbGluZXNcbiAgfD4gTGlzdC5tYXAoKChvcmlnaW4sIHBhdGgpKSA9PlxuICAgICAgIERlY1V0aWwuY29kZV9zdmcofmZvbnRfbWV0cmljcywgfm9yaWdpbiwgfnBhdGhfY2xzPWNsc3MsIHBhdGgpXG4gICAgICk7XG59O1xuXG5sZXQgdW5pX2xpbmVzID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnJvd3M6IE1lYXN1cmVkLlJvd3MudCxcbiAgICAgIChsOiBNZWFzdXJlZC5Qb2ludC50LCByOiBNZWFzdXJlZC5Qb2ludC50KSxcbiAgICAgIHRpbGVzOiBsaXN0KChJZC50LCBNb2xkLnQsIE1lYXN1cmVkLlNoYXJkcy50KSksXG4gICAgKSA9PiB7XG4gIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICBsZXQgc2hhcmRzID0gc2hhcmRzX29mX3RpbGVzKHRpbGVzKTtcbiAgbGV0IGxfbGluZSA9IHtcbiAgICBsZXQgKF8sIG1fZmlyc3QpID0gTGlzdC5oZChzaGFyZHMpO1xuICAgIGxldCAoXywgbV9sYXN0X29mX2ZpcnN0KSA9IHtcbiAgICAgIGxldCBzaGFyZF9yb3dzID0gTWVhc3VyZWQuU2hhcmRzLnNwbGl0X2J5X3JvdyhzaGFyZHMpO1xuICAgICAgYXNzZXJ0KHNoYXJkX3Jvd3MgIT0gW10pO1xuICAgICAgbGV0IHJvdyA9IExpc3QuaGQoc2hhcmRfcm93cyk7XG4gICAgICBhc3NlcnQocm93ICE9IFtdKTtcbiAgICAgIExpc3RVdGlsLmxhc3Qocm93KTtcbiAgICB9O1xuICAgIGlmIChNZWFzdXJlZC5Qb2ludC5jb21wYXJlKGwsIG1fZmlyc3Qub3JpZ2luKSA8IDApIHtcbiAgICAgIGxldCBtYXhfY29sID1cbiAgICAgICAgTWVhc3VyZWQuUm93cy5tYXhfY29sKFxuICAgICAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1sLnJvdywgbV9maXJzdC5vcmlnaW4ucm93KSxcbiAgICAgICAgICByb3dzLFxuICAgICAgICApXG4gICAgICAgIHw+IG1heChtX2ZpcnN0Lm9yaWdpbi5jb2wpO1xuICAgICAgbGV0IGluZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChtX2ZpcnN0Lm9yaWdpbi5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgIFtcbiAgICAgICAgbC5yb3cgPT0gbV9maXJzdC5vcmlnaW4ucm93XG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICBtX2ZpcnN0Lm9yaWdpbixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgc2hhZG93ZnVkZ2UobSh+eD0wLCB+eT0xKSksXG4gICAgICAgICAgICAgIGgofng9bC5jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICBMXyh7XG4gICAgICAgICAgICAgICAgZHg6IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICAgICAgICAgIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQgLy4gMi4gLy9oYWNrXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAvL0xfKHtcbiAgICAgICAgICAgICAgLy8gIGR4OiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgICAgICAgLy8gIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQsXG4gICAgICAgICAgICAgIC8vfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIG1fZmlyc3Qub3JpZ2luLFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBtX2ZpcnN0Lm9yaWdpbi5jb2wgPT0gaW5kZW50XG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBtKH54PW1fbGFzdF9vZl9maXJzdC5sYXN0LmNvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCwgfnk9MCksXG4gICAgICAgICAgICAgICAgICAvLyBUT0RPKGQpIG5lZWQgdG8gdGFrZSBtYXggb2YgYWxsIHJvd3MsIG5vdCBqdXN0IHRvcFxuICAgICAgICAgICAgICAgICAgaCh+eD1tYXhfY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9bC5yb3cgLSBtX2xhc3Rfb2ZfZmlyc3Qub3JpZ2luLnJvdykpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgICAgICAgaCh+eD1pbmRlbnQgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1sLnJvdyArIDEgLSBtX2ZpcnN0Lm9yaWdpbi5yb3cpKSxcbiAgICAgICAgICAgICAgICAgIGgofng9bWF4X2NvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PWwucm93IC0gbV9maXJzdC5vcmlnaW4ucm93KSksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgQCBbXG4gICAgICAgICAgICAgIGgofng9bC5jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICBMXyh7XG4gICAgICAgICAgICAgICAgZHg6IC0uIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICAgICAgICAgIGR5OiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQgLy4gMi4gLy9oYWNrXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAvL0xfKHtkeDogRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsIGR5OiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIFtdO1xuICAgIH07XG4gIH07XG4gIGxldCByX2xpbmUgPSB7XG4gICAgbGV0IChfLCBtX2xhc3QpID0gTGlzdFV0aWwubGFzdChzaGFyZHMpO1xuICAgIGxldCBob29rID0gW1xuICAgICAgTF8oe1xuICAgICAgICBkeDogRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHQgLy4gMi4gLy9oYWNrXG4gICAgICB9KSxcbiAgICAgIC8vTF8oe2R4OiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCwgZHk6IC0uIERlY1V0aWwuc2hvcnRfdGlwX2hlaWdodH0pLFxuICAgIF07XG4gICAgaWYgKHIucm93ID09IG1fbGFzdC5sYXN0LnJvdyAmJiByLmNvbCA+IG1fbGFzdC5sYXN0LmNvbCkge1xuICAgICAgW1xuICAgICAgICAoXG4gICAgICAgICAgbV9sYXN0Lm9yaWdpbixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBzaGFkb3dmdWRnZShcbiAgICAgICAgICAgICAgbShcbiAgICAgICAgICAgICAgICB+eD1tX2xhc3QubGFzdC5jb2wgLSBtX2xhc3Qub3JpZ2luLmNvbCxcbiAgICAgICAgICAgICAgICB+eT1tX2xhc3QubGFzdC5yb3cgLSBtX2xhc3Qub3JpZ2luLnJvdyArIDEsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaCh+eD1yLmNvbCAtIG1fbGFzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgIC4uLmhvb2ssXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChyLnJvdyA+IG1fbGFzdC5sYXN0LnJvdykge1xuICAgICAgbGV0IG1pbl9jb2wgPVxuICAgICAgICBNZWFzdXJlZC5Sb3dzLm1pbl9jb2woXG4gICAgICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPW1fbGFzdC5sYXN0LnJvdywgci5yb3cgKyAxKSxcbiAgICAgICAgICByb3dzLFxuICAgICAgICApXG4gICAgICAgIHw+IG1pbihtX2xhc3QubGFzdC5jb2wpO1xuICAgICAgLy8gbGV0IHJfaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKHIucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICBsZXQgKF8sIG1fZmxhc3QpID0ge1xuICAgICAgICBsZXQgc2hhcmRfcm93cyA9IE1lYXN1cmVkLlNoYXJkcy5zcGxpdF9ieV9yb3coc2hhcmRzKTtcbiAgICAgICAgYXNzZXJ0KHNoYXJkX3Jvd3MgIT0gW10pO1xuICAgICAgICBsZXQgcm93ID0gTGlzdFV0aWwubGFzdChzaGFyZF9yb3dzKTtcbiAgICAgICAgYXNzZXJ0KHJvdyAhPSBbXSk7XG4gICAgICAgIExpc3QuaGQocm93KTtcbiAgICAgIH07XG4gICAgICAvLyBsZXQgZmxhc3RfaW5kZW50ID0gTWVhc3VyZWQuUm93cy5maW5kKG1fZmxhc3Qub3JpZ2luLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgW1xuICAgICAgICAoXG4gICAgICAgICAgbV9mbGFzdC5vcmlnaW4sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgc2hhZG93ZnVkZ2UoXG4gICAgICAgICAgICAgIG0ofng9MCwgfnk9bV9mbGFzdC5sYXN0LnJvdyAtIG1fZmxhc3Qub3JpZ2luLnJvdyArIDEpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGgofng9bWluX2NvbCAtIG1fZmxhc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PXIucm93IC0gbV9mbGFzdC5vcmlnaW4ucm93ICsgMSkpLFxuICAgICAgICAgICAgaCh+eD1yLmNvbCAtIG1fZmxhc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAuLi5ob29rLFxuICAgICAgICAgIF0sXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBbXTtcbiAgICB9O1xuICB9O1xuICAvLyBUT0RPKGQpIGNsZWFuIHVwIFByb2ZpbGUgZGF0YXR5cGVcbiAgbGV0IHMgPVxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IFtdID0+IGZhaWx3aXRoKFwiZW1wdHkgdGlsZVwiKVxuICAgIHwgWyhfLCBtb2xkLCBfKSwgLi4uX10gPT4gbW9sZC5vdXRcbiAgICB9O1xuICBsZXQgY2xzcyA9IFtcImNoaWxkLWxpbmVcIiwgU29ydC50b19zdHJpbmcocyldO1xuICBsX2xpbmVcbiAgQCByX2xpbmVcbiAgfD4gTGlzdC5tYXAoKChvcmlnaW4sIHBhdGgpKSA9PlxuICAgICAgIERlY1V0aWwuY29kZV9zdmcofmZvbnRfbWV0cmljcywgfm9yaWdpbiwgfnBhdGhfY2xzPWNsc3MsIHBhdGgpXG4gICAgICk7XG59O1xuXG5sZXQgaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfnJvd3M6IE1lYXN1cmVkLlJvd3MudCxcbiAgICAgIH5jYXJldCxcbiAgICAgIH50aWxlcyxcbiAgICAgIHJhbmdlLFxuICAgIClcbiAgICA6IGxpc3QoTm9kZS50KSA9PiB7XG4gIExpc3QuY29uY2F0X21hcChzaW1wbGVfc2hhcmRzX2luZGljYXRlZCh+Zm9udF9tZXRyaWNzLCB+Y2FyZXQpLCB0aWxlcylcbiAgQCB1bmlfbGluZXMofmZvbnRfbWV0cmljcywgfnJvd3MsIHJhbmdlLCB0aWxlcylcbiAgQCBiaV9saW5lcyh+Zm9udF9tZXRyaWNzLCB+cm93cywgdGlsZXMpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5tb2R1bGUgRGVjbyA9IChNOiB7XG4gICAgICAgICAgICAgICAgIGxldCB1aV9zdGF0ZTogTW9kZWwudWlfc3RhdGU7XG4gICAgICAgICAgICAgICAgIGxldCBlZGl0b3I6IEVkaXRvci50O1xuICAgICAgICAgICAgICAgfSkgPT4ge1xuICBsZXQgZm9udF9tZXRyaWNzID0gTS51aV9zdGF0ZS5mb250X21ldHJpY3M7XG4gIGxldCBtYXAgPSBNLmVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkO1xuICBsZXQgc2hvd19iYWNrcGFja190YXJnZXRzID0gTS51aV9zdGF0ZS5zaG93X2JhY2twYWNrX3RhcmdldHM7XG4gIGxldCB0ZXJtcyA9IE0uZWRpdG9yLnN0YXRlLm1ldGEudGVybXM7XG4gIGxldCB0ZXJtX3JhbmdlcyA9IE0uZWRpdG9yLnN0YXRlLm1ldGEudGVybV9yYW5nZXM7XG4gIGxldCB0aWxlcyA9IE0uZWRpdG9yLnN0YXRlLm1ldGEudGlsZXM7XG5cbiAgbGV0IHRpbGUgPSBpZCA9PiBJZC5NYXAuZmluZChpZCwgdGlsZXMpO1xuXG4gIGxldCBjYXJldCA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgbGV0IG9yaWdpbiA9IFppcHBlci5jYXJldF9wb2ludChtYXAsIHopO1xuICAgIGxldCBzaGFwZSA9IFppcHBlci5jYXJldF9kaXJlY3Rpb24oeik7XG4gICAgbGV0IHNpZGUgPVxuICAgICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICAgIHwgU29tZSgoXywgc2lkZSwgXykpID0+IHNpZGVcbiAgICAgIHwgXyA9PiBSaWdodFxuICAgICAgfTtcbiAgICBbQ2FyZXREZWMudmlldyh+Zm9udF9tZXRyaWNzLCB+cHJvZmlsZT17c2lkZSwgb3JpZ2luLCBzaGFwZX0pXTtcbiAgfTtcblxuICB0eXBlIHNoYXJkX2RhdGEgPSAoTWVhc3VyZWQubWVhc3VyZW1lbnQsIE5pYnMuc2hhcGVzKTtcblxuICBsZXQgc2VsX3NoYXJkX3N2ZyA9XG4gICAgICAofmluZGV4PT8sIH5zdGFydF9zaGFwZSwgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LCBwKVxuICAgICAgOiAoTWVhc3VyZWQubWVhc3VyZW1lbnQsIE5pYnMuc2hhcGVzKSA9PiAoXG4gICAgbWVhc3VyZW1lbnQsXG4gICAgTW9sZC5uaWJfc2hhcGVzKH5pbmRleD8sIFBpZWNlLm1vbGRfb2YofnNoYXBlPXN0YXJ0X3NoYXBlLCBwKSksXG4gICk7XG5cbiAgbGV0IHJlYyBzZWxfb2ZfcGllY2UgPVxuICAgICAgICAgIChzdGFydF9zaGFwZTogTmliLlNoYXBlLnQsIHA6IFBpZWNlLnQpXG4gICAgICAgICAgOiAoTmliLlNoYXBlLnQsIGxpc3Qob3B0aW9uKHNoYXJkX2RhdGEpKSkgPT4ge1xuICAgIGxldCBzaGFyZF9kYXRhID1cbiAgICAgIHN3aXRjaCAocCkge1xuICAgICAgfCBUaWxlKHQpID0+IHNlbF9vZl90aWxlKH5zdGFydF9zaGFwZSwgdClcbiAgICAgIHwgR3JvdXQoZykgPT4gW1xuICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIE1lYXN1cmVkLmZpbmRfZyhnLCBtYXApLCBwKSksXG4gICAgICAgIF1cbiAgICAgIHwgU2Vjb25kYXJ5KHcpIHdoZW4gU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KSA9PiBbTm9uZV1cbiAgICAgIHwgU2Vjb25kYXJ5KHcpID0+IFtcbiAgICAgICAgICBTb21lKHNlbF9zaGFyZF9zdmcofnN0YXJ0X3NoYXBlLCBNZWFzdXJlZC5maW5kX3codywgbWFwKSwgcCkpLFxuICAgICAgICBdXG4gICAgICB9O1xuICAgIGxldCBzdGFydF9zaGFwZSA9XG4gICAgICBzd2l0Y2ggKFBpZWNlLm5pYnMocCkpIHtcbiAgICAgIHwgTm9uZSA9PiBzdGFydF9zaGFwZVxuICAgICAgfCBTb21lKChfLCB7c2hhcGUsIF99KSkgPT4gc2hhcGVcbiAgICAgIH07XG4gICAgKHN0YXJ0X3NoYXBlLCBzaGFyZF9kYXRhKTtcbiAgfVxuICBhbmQgc2VsX29mX3RpbGUgPSAofnN0YXJ0X3NoYXBlLCB0OiBUaWxlLnQpOiBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkgPT4ge1xuICAgIGxldCB0aWxlX3NoYXJkcyA9XG4gICAgICBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApXG4gICAgICB8PiBMaXN0LmZpbHRlcigoKGksIF8pKSA9PiBMaXN0Lm1lbShpLCB0LnNoYXJkcykpXG4gICAgICB8PiBMaXN0Lm1hcCgoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBTb21lKHNlbF9zaGFyZF9zdmcofnN0YXJ0X3NoYXBlLCB+aW5kZXgsIG1lYXN1cmVtZW50LCBUaWxlKHQpKSksXG4gICAgICAgICAgIF1cbiAgICAgICAgICk7XG4gICAgbGV0IHNoYXBlX2F0ID0gaW5kZXggPT4gc25kKE1vbGQubmlicyh+aW5kZXgsIHQubW9sZCkpLnNoYXBlO1xuICAgIGxldCBjaGlsZHJlbl9zaGFyZHMgPVxuICAgICAgdC5jaGlsZHJlbiB8PiBMaXN0Lm1hcGkoaW5kZXggPT4gc2VsX29mX3NlZ21lbnQoc2hhcGVfYXQoaW5kZXgpKSk7XG4gICAgTGlzdFV0aWwuaW50ZXJsZWF2ZSh0aWxlX3NoYXJkcywgY2hpbGRyZW5fc2hhcmRzKSB8PiBMaXN0LmZsYXR0ZW47XG4gIH1cbiAgYW5kIHNlbF9vZl9zZWdtZW50ID1cbiAgICAgIChzdGFydF9zaGFwZTogTmliLlNoYXBlLnQsIHNlZzogU2VnbWVudC50KTogbGlzdChvcHRpb24oc2hhcmRfZGF0YSkpID0+IHtcbiAgICBzZWdcbiAgICB8PiBMaXN0VXRpbC5mb2xkX2xlZnRfbWFwKHNlbF9vZl9waWVjZSwgc3RhcnRfc2hhcGUpXG4gICAgfD4gc25kXG4gICAgfD4gTGlzdC5mbGF0dGVuO1xuICB9XG4gIGFuZCBzZWxlY3RlZF9waWVjZXMgPSAoejogWmlwcGVyLnQpOiBsaXN0KE5vZGUudCkgPT5cbiAgICAvKiBXZSBkcmF3IGEgc2luZ2xlIGRlY28gcGVyIHJvdyBieSBkaXZpZGluZyBwYXJ0aW9uaW5pbmcgdGhlIHNoYXJkc1xuICAgICAqIGludG8gbGluZWJyZWFrLXNlcGVyYXRlZCBzZWdtZW50cywgdGhlbiBjb21iaW5pbmcgdGhlIG1lYXN1cmVtZW50c1xuICAgICAqIGFuZCBzaGFwZXMgb2YgdGhlIGZpcnN0IGFuZCBsYXN0IHNoYXJkIG9mIGVhY2ggc2VnbWVudC4gSWRlYWxseSB3ZVxuICAgICAqIGNvdWxkIGp1c3QgZ2V0IHRoaXMgaW5mbyBmcm9tIHRoZSByb3cgbWVhc3VyZW1lbnRzLCBidXQgd2UgaGF2ZSBub1xuICAgICAqIGN1cnJlbnQgd2F5IG9mIGZpZ3VyaW5nIG91dCBzaGFwZXMgZm9yIHdoaXRlc3BhY2Ugd2l0aG91dCB0cmF2ZXJzaW5nICovXG4gICAgc2VsX29mX3NlZ21lbnQoXG4gICAgICBmc3QoU2libGluZ3Muc2hhcGVzKHoucmVsYXRpdmVzLnNpYmxpbmdzKSksXG4gICAgICB6LnNlbGVjdGlvbi5jb250ZW50LFxuICAgIClcbiAgICB8PiBMaXN0VXRpbC5zcGxpdF9hdF9ub25lc1xuICAgIHw+IExpc3RVdGlsLmZpcnN0X2FuZF9sYXN0XG4gICAgfD4gTGlzdC5tYXAoKCgobTEsIChsMSwgXykpOiBzaGFyZF9kYXRhLCAobTIsIChfLCByMikpOiBzaGFyZF9kYXRhKSkgPT5cbiAgICAgICAgICgoe29yaWdpbjogbTEub3JpZ2luLCBsYXN0OiBtMi5sYXN0fSwgKGwxLCByMikpOiBzaGFyZF9kYXRhKVxuICAgICAgIClcbiAgICB8PiBMaXN0Lm1hcCgoKG1lYXN1cmVtZW50LCBzaGFwZXMpKSA9PlxuICAgICAgICAgUGllY2VEZWMuc2ltcGxlX3NoYXJkX3NlbGVjdGVkKFxuICAgICAgICAgICB+YnVmZmVyPVNlbGVjdGlvbi5pc19idWZmZXIoei5zZWxlY3Rpb24pLFxuICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICB+bWVhc3VyZW1lbnQsXG4gICAgICAgICAgIH5zaGFwZXMsXG4gICAgICAgICApXG4gICAgICAgKTtcblxuICBsZXQgaW5kaWNhdGVkX3BpZWNlX2RlY28gPSAoejogWmlwcGVyLnQpOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgIHN3aXRjaCAoSW5kaWNhdGVkLnBpZWNlKHopKSB7XG4gICAgfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBbXVxuICAgIHwgTm9uZSA9PiBbXVxuICAgIHwgU29tZSgoR3JvdXQoXyksIF8sIF8pKSA9PiBbXVxuICAgIHwgU29tZSgocCwgc2lkZSwgXykpID0+XG4gICAgICAvLyByb290X3Byb2ZpbGUgY2FsY3VsYXRpb24gYXNzdW1lcyBwIGlzIHRpbGVcbiAgICAgIC8vIFRPRE8gZW5jb2RlIGluIHR5cGVzXG4gICAgICBsZXQgX25pYl9zaGFwZSA9XG4gICAgICAgIHN3aXRjaCAoWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KSkge1xuICAgICAgICB8IE5vbmUgPT4gTmliLlNoYXBlLkNvbnZleFxuICAgICAgICB8IFNvbWUobmliKSA9PiBOaWIuU2hhcGUucmVsYXRpdmUobmliLCBzaWRlKVxuICAgICAgICB9O1xuICAgICAgbGV0IHJhbmdlOiBvcHRpb24oKE1lYXN1cmVkLlBvaW50LnQsIE1lYXN1cmVkLlBvaW50LnQpKSA9IHtcbiAgICAgICAgLy8gaWYgKFBpZWNlLmhhc19lbmRzKHApKSB7XG4gICAgICAgIGxldCBpZCA9IElkLk1hcC5maW5kKFBpZWNlLmlkKHApLCB0ZXJtcykgfD4gQW55LnJlcF9pZDtcbiAgICAgICAgc3dpdGNoIChUZXJtUmFuZ2VzLmZpbmRfb3B0KGlkLCB0ZXJtX3JhbmdlcykpIHtcbiAgICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgICAgfCBTb21lKChwX2wsIHBfcikpID0+XG4gICAgICAgICAgbGV0IGwgPSBNZWFzdXJlZC5maW5kX3AocF9sLCBtYXApLm9yaWdpbjtcbiAgICAgICAgICBsZXQgciA9IE1lYXN1cmVkLmZpbmRfcChwX3IsIG1hcCkubGFzdDtcbiAgICAgICAgICBTb21lKChsLCByKSk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgc3dpdGNoIChJbmRpY2F0ZWQuc2hhcmRfaW5kZXgoeikpIHtcbiAgICAgICAgfCBOb25lID0+ICgtMSlcbiAgICAgICAgfCBTb21lKGkpID0+IGlcbiAgICAgICAgfTtcbiAgICAgIHN3aXRjaCAocmFuZ2UpIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKHJhbmdlKSA9PlxuICAgICAgICBsZXQgdGlsZXMgPVxuICAgICAgICAgIElkLk1hcC5maW5kKFBpZWNlLmlkKHApLCB0ZXJtcylcbiAgICAgICAgICB8PiBBbnkuaWRzXG4gICAgICAgICAgLyogTk9URShhbmRyZXcpOiBkYXJrX2lkcyB3ZXJlIG9yaWdpbmFsbHkgZmlsdGVyZWQgaGVyZS5cbiAgICAgICAgICAgKiBMZWF2aW5nIHRoaXMgY29tbWVudCBpbiBwbGFjZSBpbiBjYXNlIGlzc3VlcyBpbiB0aGVcbiAgICAgICAgICAgKiBmdXR1cmUgYXJlIHRyYWNlZCBiYWNrIHRvIGhlcmUuXG4gICAgICAgICAgICogfD4gTGlzdC5maWx0ZXIoaWQgPT4gaWQgPj0gMCkqL1xuICAgICAgICAgIHw+IExpc3QubWFwKGlkID0+IHtcbiAgICAgICAgICAgICAgIGxldCB0ID0gdGlsZShpZCk7XG4gICAgICAgICAgICAgICAoaWQsIHQubW9sZCwgTWVhc3VyZWQuZmluZF9zaGFyZHModCwgbWFwKSk7XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIFBpZWNlRGVjLmluZGljYXRlZChcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH5yb3dzPW1hcC5yb3dzLFxuICAgICAgICAgIH5jYXJldD0oUGllY2UuaWQocCksIGluZGV4KSxcbiAgICAgICAgICB+dGlsZXMsXG4gICAgICAgICAgcmFuZ2UsXG4gICAgICAgICk7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyB0YXJnZXRzID0gKH5jb250YWluZXJfc2hhcmRzPT8sIGJwOiBCYWNrcGFjay50LCBzZWc6IFNlZ21lbnQudCkgPT4ge1xuICAgIGxldCB3aXRoX2NvbnRhaW5lcl9zaGFyZHMgPSAoKHByZSwgc3VmKSBhcyBzaWJzKSA9PlxuICAgICAgc3dpdGNoIChjb250YWluZXJfc2hhcmRzKSB7XG4gICAgICB8IE5vbmUgPT4gc2lic1xuICAgICAgfCBTb21lKChsLCByKSkgPT4gKFtsLCAuLi5wcmVdLCBzdWYgQCBbcl0pXG4gICAgICB9O1xuICAgIGxldCByb290X3RhcmdldHMgPVxuICAgICAgTGlzdFV0aWwuc3BsaXRzKHNlZylcbiAgICAgIHw+IExpc3QuY29uY2F0X21hcCgoKGwsIHIpKSA9PiB7XG4gICAgICAgICAgIGxldCBzaWJzID1cbiAgICAgICAgICAgICBTZWdtZW50LihpbmNvbXBsZXRlX3RpbGVzKGwpLCBpbmNvbXBsZXRlX3RpbGVzKHIpKVxuICAgICAgICAgICAgIHw+IHdpdGhfY29udGFpbmVyX3NoYXJkcztcbiAgICAgICAgICAgc3dpdGNoIChCYWNrcGFjay5wb3Aoc2licywgYnApKSB7XG4gICAgICAgICAgIHwgTm9uZVxuICAgICAgICAgICB8IFNvbWUoKHRydWUsIF8sIF8pKSA9PiBbXVxuICAgICAgICAgICB8IFNvbWUoXykgPT5cbiAgICAgICAgICAgICBsZXQgbWVhc3VyZW1lbnQgPVxuICAgICAgICAgICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoKGwsIHIpKSkge1xuICAgICAgICAgICAgICAgfCAoTm9uZSwgTm9uZSkgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlXCIpXG4gICAgICAgICAgICAgICB8IChfLCBTb21lKHApKSA9PlxuICAgICAgICAgICAgICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtYXApO1xuICAgICAgICAgICAgICAgICBNZWFzdXJlZC57b3JpZ2luOiBtLm9yaWdpbiwgbGFzdDogbS5vcmlnaW59O1xuICAgICAgICAgICAgICAgfCAoU29tZShwKSwgXykgPT5cbiAgICAgICAgICAgICAgICAgbGV0IG0gPSBNZWFzdXJlZC5maW5kX3AocCwgbWFwKTtcbiAgICAgICAgICAgICAgICAgTWVhc3VyZWQue29yaWdpbjogbS5sYXN0LCBsYXN0OiBtLmxhc3R9O1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICBsZXQgcHJvZmlsZSA9XG4gICAgICAgICAgICAgICBDYXJldFBvc0RlYy5Qcm9maWxlLntzdHlsZTogYFNpYmxpbmcsIG1lYXN1cmVtZW50LCBzb3J0OiBFeHB9O1xuICAgICAgICAgICAgIFtDYXJldFBvc0RlYy52aWV3KH5mb250X21ldHJpY3MsIHByb2ZpbGUpXTtcbiAgICAgICAgICAgfTtcbiAgICAgICAgIH0pO1xuICAgIHN3aXRjaCAocm9vdF90YXJnZXRzKSB7XG4gICAgfCBbXywgLi4uX10gPT4gcm9vdF90YXJnZXRzXG4gICAgfCBbXSA9PlxuICAgICAgc2VnXG4gICAgICB8PiBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAgICAgIGZ1blxuICAgICAgICAgICB8IFBpZWNlLlRpbGUodCkgPT4gU29tZSh0KVxuICAgICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICAgIClcbiAgICAgIHw+IExpc3QuY29uY2F0X21hcCgodDogVGlsZS50KSA9PiB7XG4gICAgICAgICAgIC8vIFRPRE8oZCk6IHVuaWZ5IHdpdGggUmVsYXRpdmVzLmxvY2FsX2luY29tcGxldGVfdGlsZXNcbiAgICAgICAgICAgVGlsZS5jb250YWluZWRfY2hpbGRyZW4odClcbiAgICAgICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCgobCwgc2VnLCByKSkgPT5cbiAgICAgICAgICAgICAgICB0YXJnZXRzKH5jb250YWluZXJfc2hhcmRzPShsLCByKSwgYnAsIHNlZylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgfSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCBiYWNrcGFjayA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiBbXG4gICAgQmFja3BhY2tWaWV3LnZpZXcofmZvbnRfbWV0cmljcywgfm9yaWdpbj1aaXBwZXIuY2FyZXRfcG9pbnQobWFwLCB6KSwgeiksXG4gIF07XG5cbiAgbGV0IHRhcmdldHMnID0gKGJhY2twYWNrLCBzZWcpID0+IHtcbiAgICBzaG93X2JhY2twYWNrX3RhcmdldHMgJiYgQmFja3BhY2sucmVzdHJpY3RlZChiYWNrcGFjaylcbiAgICAgID8gdGFyZ2V0cyhiYWNrcGFjaywgc2VnKSA6IFtdO1xuICB9O1xuXG4gIGxldCB0ZXJtX2RlY29yYXRpb24gPVxuICAgICAgKFxuICAgICAgICB+aWQ6IElkLnQsXG4gICAgICAgIGRlY286XG4gICAgICAgICAgKChNZWFzdXJlZC5Qb2ludC50LCBNZWFzdXJlZC5Qb2ludC50LCBTdmdVdGlsLlBhdGgudCkpID0+IE5vZGUudCxcbiAgICAgICkgPT4ge1xuICAgIGxldCAocF9sLCBwX3IpID0gVGVybVJhbmdlcy5maW5kKGlkLCB0ZXJtX3Jhbmdlcyk7XG4gICAgbGV0IGwgPSBNZWFzdXJlZC5maW5kX3AocF9sLCBtYXApLm9yaWdpbjtcbiAgICBsZXQgciA9IE1lYXN1cmVkLmZpbmRfcChwX3IsIG1hcCkubGFzdDtcbiAgICBvcGVuIFN2Z1V0aWwuUGF0aDtcbiAgICBsZXQgcl9lZGdlID1cbiAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1sLnJvdywgci5yb3cgKyAxKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKGkgPT4ge1xuICAgICAgICAgICBsZXQgcm93ID0gTWVhc3VyZWQuUm93cy5maW5kKGksIG1hcC5yb3dzKTtcbiAgICAgICAgICAgW2gofng9aSA9PSByLnJvdyA/IHIuY29sIDogcm93Lm1heF9jb2wpLCB2Xyh+ZHk9MSldO1xuICAgICAgICAgfSk7XG4gICAgbGV0IGxfZWRnZSA9XG4gICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bC5yb3csIHIucm93ICsgMSlcbiAgICAgIHw+IExpc3QucmV2X21hcChpID0+IHtcbiAgICAgICAgICAgbGV0IHJvdyA9IE1lYXN1cmVkLlJvd3MuZmluZChpLCBtYXAucm93cyk7XG4gICAgICAgICAgIFtoKH54PWkgPT0gbC5yb3cgPyBsLmNvbCA6IHJvdy5pbmRlbnQpLCB2Xyh+ZHk9LTEpXTtcbiAgICAgICAgIH0pXG4gICAgICB8PiBMaXN0LmNvbmNhdDtcbiAgICBsZXQgcGF0aCA9XG4gICAgICBbbSh+eD1sLmNvbCwgfnk9bC5yb3cpLCAuLi5yX2VkZ2VdXG4gICAgICBAIGxfZWRnZVxuICAgICAgQCBbWl1cbiAgICAgIHw+IHRyYW5zbGF0ZSh7ZHg6IEZsb2F0Lm9mX2ludCgtIGwuY29sKSwgZHk6IEZsb2F0Lm9mX2ludCgtIGwucm93KX0pO1xuICAgIChsLCByLCBwYXRoKSB8PiBkZWNvO1xuICB9O1xuXG4gIGxldCB0ZXJtX2hpZ2hsaWdodCA9ICh+Y2xzczogbGlzdChzdHJpbmcpLCBpZDogSWQudCkgPT4ge1xuICAgIHRlcm1fZGVjb3JhdGlvbih+aWQsICgob3JpZ2luLCBsYXN0LCBwYXRoKSkgPT5cbiAgICAgIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5tZWFzdXJlbWVudD17b3JpZ2luLCBsYXN0fSxcbiAgICAgICAgfmJhc2VfY2xzPWNsc3MsXG4gICAgICAgIHBhdGgsXG4gICAgICApXG4gICAgKTtcbiAgfTtcblxuICBsZXQgY29sb3JfaGlnaGxpZ2h0cyA9IChjb2xvcmluZ3M6IGxpc3QoKElkLnQsIHN0cmluZykpKSA9PiB7XG4gICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgKChpZCwgY29sb3IpKSA9PlxuICAgICAgICAvKiBIQUNLKGFuZHJldyk6IENhdGNoaW5nIGV4Y2VwdGlvbnMgc2luY2Ugd2hlbiBzaG93aW5nXG4gICAgICAgICAgIHRlcm0gaGlnaGxpZ2h0cyB3aGVuIHRoZSBiYWNrcGFjayBpcyBub24tZW1wdHksIHRoZVxuICAgICAgICAgICBwcm9zcGVjdGl2ZSBjb21wbGV0aW9uIG1heSBoYXZlIGRpZmZlcmVudCB0ZXJtIGlkc1xuICAgICAgICAgICB0aGFuIHRoZSBkaXNwbGF5ZWQgY29kZS4gKi9cbiAgICAgICAgdHJ5KFNvbWUodGVybV9oaWdobGlnaHQofmNsc3M9W1wiaGlnaGxpZ2h0LWNvZGUtXCIgKysgY29sb3JdLCBpZCkpKSB7XG4gICAgICAgIHwgTm90X2ZvdW5kID0+IE5vbmVcbiAgICAgICAgfSxcbiAgICAgIGNvbG9yaW5ncyxcbiAgICApO1xuICB9O1xuXG4gIC8vIGZhc3RlciBpbmZvX21hcCB0cmF2ZXJzYWxcbiAgbGV0IGVycl9ob2xlcyA9IGVycm9yX2lkcyA9PlxuICAgIExpc3QubWFwKHRlcm1faGlnaGxpZ2h0KH5jbHNzPVtcImVyci1ob2xlXCJdKSwgZXJyb3JfaWRzKTtcblxuICBsZXQgbmV4dF9zdGVwcyA9IChuZXh0X3N0ZXBzLCB+aW5qZWN0KSA9PiB7XG4gICAgbGV0IHRpbGVzID0gTGlzdC5maWx0ZXJfbWFwKFRpbGVNYXAuZmluZF9vcHQoXywgdGlsZXMpLCBuZXh0X3N0ZXBzKTtcbiAgICBMaXN0Lm1hcGkoXG4gICAgICAoaSwgdDogVGlsZS50KSA9PiB7XG4gICAgICAgIGxldCBpZCA9IFRpbGUuaWQodCk7XG4gICAgICAgIGxldCBtb2xkID0gdC5tb2xkO1xuICAgICAgICBsZXQgc2hhcmRzID0gTWVhc3VyZWQuZmluZF9zaGFyZHModCwgbWFwKTtcbiAgICAgICAgUGllY2VEZWMubmV4dF9zdGVwX3NoYXJkc19pbmRpY2F0ZWQoXG4gICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICB+Y2FyZXQ9KElkLmludmFsaWQsIDApLFxuICAgICAgICAgIH5pbmplY3Q9KCkgPT4gaW5qZWN0KGkpLFxuICAgICAgICAgIChpZCwgbW9sZCwgc2hhcmRzKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB0aWxlcyxcbiAgICApXG4gICAgfD4gTGlzdC5mbGF0dGVuO1xuICB9O1xuXG4gIGxldCB0YWtlbl9zdGVwID0gdGFrZW5fc3RlcCA9PiB7XG4gICAgbGV0IHRpbGVzID1cbiAgICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgVGlsZU1hcC5maW5kX29wdChfLCB0aWxlcyksXG4gICAgICAgIHRha2VuX3N0ZXAgfD4gT3B0aW9uLnRvX2xpc3QsXG4gICAgICApO1xuICAgIExpc3QubWFwKFxuICAgICAgKHQ6IFRpbGUudCkgPT4ge1xuICAgICAgICBsZXQgaWQgPSBUaWxlLmlkKHQpO1xuICAgICAgICBsZXQgbW9sZCA9IHQubW9sZDtcbiAgICAgICAgbGV0IHNoYXJkcyA9IE1lYXN1cmVkLmZpbmRfc2hhcmRzKHQsIG1hcCk7XG4gICAgICAgIFBpZWNlRGVjLnRha2VuX3N0ZXBfc2hhcmRzX2luZGljYXRlZChcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH5jYXJldD0oSWQuaW52YWxpZCwgMCksXG4gICAgICAgICAgKGlkLCBtb2xkLCBzaGFyZHMpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHRpbGVzLFxuICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH07XG5cbiAgbGV0IHN0YXRpY3MgPSBlaCA9PiBlcnJfaG9sZXMoZWgpO1xuXG4gIGxldCBlZGl0b3IgPSAoemlwcGVyLCBzZWxfc2VnKSA9PlxuICAgIExpc3QuY29uY2F0KFtcbiAgICAgIGNhcmV0KHppcHBlciksXG4gICAgICBpbmRpY2F0ZWRfcGllY2VfZGVjbyh6aXBwZXIpLFxuICAgICAgc2VsZWN0ZWRfcGllY2VzKHppcHBlciksXG4gICAgICBiYWNrcGFjayh6aXBwZXIpLFxuICAgICAgdGFyZ2V0cycoemlwcGVyLmJhY2twYWNrLCBzZWxfc2VnKSxcbiAgICBdKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWwuUmVzdWx0LlN5bnRheDtcbm9wZW4gSGF6M2xjb3JlO1xuXG50eXBlIG1vZGVsID0ge1xuICAvLyBVcGRhdGU6XG4gIGVkaXRvcjogRWRpdG9yLnQsXG4gIC8vIENhbGN1bGF0ZTpcbiAgc3RhdGljczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLFxufTtcblxudHlwZSBhY3Rpb24gPSBBY3Rpb24udDtcblxubGV0IHVwZGF0ZSA9ICh+c2V0dGluZ3MsIGFjdGlvbiwgbW9kZWwpID0+IHtcbiAgbGV0KyBlZGl0b3IgPSBQZXJmb3JtLmdvKH5zZXR0aW5ncywgYWN0aW9uLCBtb2RlbC5lZGl0b3IpO1xuICB7ZWRpdG9yLCBzdGF0aWNzOiBtb2RlbC5zdGF0aWNzfTtcbn07XG5cbmxldCBjYWxjdWxhdGUgPSAofnNldHRpbmdzLCB+c3RpdGNoLCB7ZWRpdG9yLCBzdGF0aWNzfSBhcyBtb2RlbCkgPT4ge1xuICBsZXQgdGVybSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0IHw+IHN0aXRjaDtcbiAgaWYgKEV4cC5mYXN0X2VxdWFsKHRlcm0sIHN0YXRpY3MudGVybSkpIHtcbiAgICBtb2RlbDtcbiAgfSBlbHNlIHtcbiAgICB7XG4gICAgICBlZGl0b3IsXG4gICAgICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3Nfb2ZfdGVybSh+c2V0dGluZ3MsIHRlcm0sIGVkaXRvciksXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIFRoZXJlIGFyZSBubyBldmVudHMgZm9yIGEgcmVhZC1vbmx5IGVkaXRvclxudHlwZSBldmVudDtcblxuLy8gcmVhZC1vbmx5IGVkaXRvcnMgY2Fubm90IGJlIHNlbGVjdGVkXG50eXBlIHNlbGVjdGlvbjtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+b3ZlcmxheXM6IGxpc3QoTm9kZS50KT1bXSxcbiAgICAgIH5zb3J0PVNvcnQucm9vdCxcbiAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICApID0+IHtcbiAgbGV0IGNvZGVfdGV4dF92aWV3ID1cbiAgICBDb2RlLnZpZXcoXG4gICAgICB+c29ydCxcbiAgICAgIH5mb250X21ldHJpY3M9dWlfc3RhdGUuZm9udF9tZXRyaWNzLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgbW9kZWwuZWRpdG9yLFxuICAgICk7XG4gIGxldCBzdGF0aWNzX2RlY29zID0ge1xuICAgIG1vZHVsZSBEZWNvID1cbiAgICAgIERlY28uRGVjbyh7XG4gICAgICAgIGxldCB1aV9zdGF0ZSA9IHVpX3N0YXRlO1xuICAgICAgICBsZXQgZWRpdG9yID0gbW9kZWwuZWRpdG9yO1xuICAgICAgfSk7XG4gICAgRGVjby5zdGF0aWNzKG1vZGVsLnN0YXRpY3MuZXJyb3JfaWRzKTtcbiAgfTtcbiAgTm9kZS5kaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzZXMoW1wiY29kZS1jb250YWluZXJcIl0pXSksXG4gICAgW2NvZGVfdGV4dF92aWV3XSBAIHN0YXRpY3NfZGVjb3MgQCBvdmVybGF5cyxcbiAgKTtcbn07XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG50eXBlIGVkaXRvcl9pZCA9IHN0cmluZztcblxudHlwZSBtb2RlbCA9IFJlYWRPbmx5RWRpdG9yLm1vZGVsO1xuXG50eXBlIGFjdGlvbiA9IFJlYWRPbmx5RWRpdG9yLmFjdGlvbjtcblxubGV0IHVwZGF0ZSA9IFJlYWRPbmx5RWRpdG9yLnVwZGF0ZTtcblxubGV0IGNhbGN1bGF0ZSA9IFJlYWRPbmx5RWRpdG9yLmNhbGN1bGF0ZTtcblxudHlwZSBldmVudCA9XG4gIHwgTWFrZUFjdGl2ZVxuICB8IE1vdXNlVXBcbiAgfCBNb3VzZURvd247XG5cbm1vZHVsZSBWaWV3ID0ge1xuICBsZXQgZ2V0X2dvYWwgPVxuICAgICAgKFxuICAgICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgICB0ZXh0X2JveDogSnMudChEb21faHRtbC5lbGVtZW50KSxcbiAgICAgICAgZTogSnMudChEb21faHRtbC5tb3VzZUV2ZW50KSxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWN0ID0gdGV4dF9ib3gjI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBsZXQgZ29hbF94ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRYKTtcbiAgICBsZXQgZ29hbF95ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRZKTtcbiAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICByb3c6IEZsb2F0LnRvX2ludCgoZ29hbF95IC0uIHJlY3QjIy50b3ApIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KSxcbiAgICAgIGNvbDpcbiAgICAgICAgRmxvYXQuKFxuICAgICAgICAgIHRvX2ludChyb3VuZCgoZ29hbF94IC0uIHJlY3QjIy5sZWZ0KSAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoKSlcbiAgICAgICAgKSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtb3VzZWRvd25fb3ZlcmxheSA9ICh+c2lnbmFsLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzKSA9PlxuICAgIE5vZGUuZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgIGlkKFwibW91c2Vkb3duLW92ZXJsYXlcIiksXG4gICAgICAgICAgICBvbl9tb3VzZXVwKF8gPT4gc2lnbmFsKE1vdXNlVXApKSxcbiAgICAgICAgICAgIG9uX21vdXNlbW92ZShlID0+IHtcbiAgICAgICAgICAgICAgbGV0IG1vdXNlX2hhbmRsZXIgPVxuICAgICAgICAgICAgICAgIGUjIy50YXJnZXQgfD4gSnMuT3B0LmdldChfLCBfID0+IGZhaWx3aXRoKFwibm8gdGFyZ2V0XCIpKTtcbiAgICAgICAgICAgICAgbGV0IHRleHRfYm94ID1cbiAgICAgICAgICAgICAgICBKc1V0aWwuZ2V0X2NoaWxkX3dpdGhfY2xhc3MoXG4gICAgICAgICAgICAgICAgICBtb3VzZV9oYW5kbGVyIyMucGFyZW50Tm9kZVxuICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LmdldChfLCBfID0+IGZhaWx3aXRoKFwiXCIpKVxuICAgICAgICAgICAgICAgICAgfD4gSnMuVW5zYWZlLmNvZXJjZSxcbiAgICAgICAgICAgICAgICAgIFwiY29kZS1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gT3B0aW9uLmdldDtcbiAgICAgICAgICAgICAgbGV0IGdvYWwgPSBnZXRfZ29hbCh+Zm9udF9tZXRyaWNzLCB0ZXh0X2JveCwgZSk7XG4gICAgICAgICAgICAgIGluamVjdChBY3Rpb24uU2VsZWN0KFJlc2l6ZShHb2FsKFBvaW50KGdvYWwpKSkpKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgICksXG4gICAgICBbXSxcbiAgICApO1xuXG4gIGxldCBtb3VzZWRvd25faGFuZGxlciA9ICh+c2lnbmFsLCB+aW5qZWN0LCB+Zm9udF9tZXRyaWNzLCBldnQpID0+IHtcbiAgICBsZXQgZ29hbCA9XG4gICAgICBnZXRfZ29hbChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgZXZ0IyMuY3VycmVudFRhcmdldFxuICAgICAgICB8PiBKcy5PcHQuZ2V0KF8sIF8gPT4gZmFpbHdpdGgoXCJcIikpXG4gICAgICAgIHw+IEpzVXRpbC5nZXRfY2hpbGRfd2l0aF9jbGFzcyhfLCBcImNvZGUtY29udGFpbmVyXCIpXG4gICAgICAgIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgIGV2dCxcbiAgICAgICk7XG4gICAgc3dpdGNoIChKc1V0aWwuY3RybF9oZWxkKGV2dCksIEpzVXRpbC5udW1fY2xpY2tzKGV2dCkpIHtcbiAgICB8ICh0cnVlLCBfKSA9PlxuICAgICAgRWZmZWN0Lk1hbnkoW1xuICAgICAgICBzaWduYWwoTWFrZUFjdGl2ZSksXG4gICAgICAgIGluamVjdChBY3Rpb24uTW92ZShHb2FsKFBvaW50KGdvYWwpKSkpLFxuICAgICAgICBpbmplY3QoQWN0aW9uLkp1bXAoQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcikpLFxuICAgICAgXSlcbiAgICB8IChmYWxzZSwgMSkgPT5cbiAgICAgIEVmZmVjdC5NYW55KFtcbiAgICAgICAgc2lnbmFsKE1vdXNlRG93biksXG4gICAgICAgIHNpZ25hbChNYWtlQWN0aXZlKSxcbiAgICAgICAgaW5qZWN0KEFjdGlvbi5Nb3ZlKEdvYWwoUG9pbnQoZ29hbCkpKSksXG4gICAgICBdKVxuICAgIHwgKGZhbHNlLCAyKSA9PiBpbmplY3QoQWN0aW9uLlNlbGVjdChUaWxlKEN1cnJlbnQpKSlcbiAgICB8IChmYWxzZSwgMyB8IF8pID0+IGluamVjdChBY3Rpb24uU2VsZWN0KFNtYXJ0KSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfnNpZ25hbDogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3Q6IGFjdGlvbiA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgICB+c2VsZWN0ZWQ6IGJvb2wsXG4gICAgICAgIH5oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgICAgIH5vdmVybGF5czogbGlzdChOb2RlLnQpPVtdLFxuICAgICAgICB+c29ydD0/LFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICApID0+IHtcbiAgICBsZXQgZWRpdF9kZWNvcyA9IHtcbiAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICBsZXQgZWRpdG9yID0gbW9kZWwuZWRpdG9yO1xuICAgICAgICAgIGxldCB1aV9zdGF0ZSA9IHVpX3N0YXRlO1xuICAgICAgICB9KTtcbiAgICAgIERlY28uZWRpdG9yKG1vZGVsLmVkaXRvci5zdGF0ZS56aXBwZXIsIG1vZGVsLmVkaXRvci5zdGF0ZS5tZXRhLnNlZ21lbnQpXG4gICAgICBAIChcbiAgICAgICAgc3dpdGNoIChoaWdobGlnaHRzKSB7XG4gICAgICAgIHwgU29tZShjb2xvck1hcCkgPT5cbiAgICAgICAgICBEZWNvLmNvbG9yX2hpZ2hsaWdodHMoQ29sb3JTdGVwcy50b19saXN0KGNvbG9yTWFwKSlcbiAgICAgICAgfCBfID0+IFtdXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfTtcbiAgICBsZXQgb3ZlcmxheXMgPSBlZGl0X2RlY29zIEAgb3ZlcmxheXM7XG4gICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICBSZWFkT25seUVkaXRvci52aWV3KH51aV9zdGF0ZSwgfnNldHRpbmdzLCB+b3ZlcmxheXMsIH5zb3J0PywgbW9kZWwpO1xuICAgIGxldCBtb3VzZWRvd25fb3ZlcmxheSA9XG4gICAgICBzZWxlY3RlZCAmJiB1aV9zdGF0ZS5tb3VzZWRvd25cbiAgICAgICAgPyBbXG4gICAgICAgICAgbW91c2Vkb3duX292ZXJsYXkoXG4gICAgICAgICAgICB+c2lnbmFsLFxuICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgIH5mb250X21ldHJpY3M9dWlfc3RhdGUuZm9udF9tZXRyaWNzLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgOiBbXTtcbiAgICBsZXQgb25fbW91c2Vkb3duID1cbiAgICAgIG1vdXNlZG93bl9oYW5kbGVyKFxuICAgICAgICB+c2lnbmFsLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+Zm9udF9tZXRyaWNzPXVpX3N0YXRlLmZvbnRfbWV0cmljcyxcbiAgICAgICk7XG4gICAgTm9kZS5kaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCJdKSxcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wiY29kZS1lZGl0b3JcIl0pLFxuICAgICAgICAgIEF0dHIub25fbW91c2Vkb3duKG9uX21vdXNlZG93biksXG4gICAgICAgIF0pLFxuICAgICAgbW91c2Vkb3duX292ZXJsYXkgQCBbY29kZV92aWV3XSxcbiAgICApO1xuICB9O1xufTtcblxubGV0IHZpZXcgPSBWaWV3LnZpZXc7XG4iLCJvcGVuIEhhejNsY29yZTtcblxubW9kdWxlIFN0ZXBwZWQgPSB7XG4gIHR5cGUgbW9kZWwgPSB7XG4gICAgZWRpdG9yOiBSZWFkT25seUVkaXRvci5tb2RlbCxcbiAgICBzdGVwOiBvcHRpb24oRXZhbHVhdG9yU3RlcC5zdGVwKSxcbiAgICBzdGVwX2lkOiBvcHRpb24oSWQudCksXG4gIH07XG5cbiAgdHlwZSBhY3Rpb24gPSBSZWFkT25seUVkaXRvci5hY3Rpb247XG5cbiAgdHlwZSBldmVudCA9IFJlYWRPbmx5RWRpdG9yLmV2ZW50O1xuXG4gIHR5cGUgc2VsZWN0aW9uID0gUmVhZE9ubHlFZGl0b3Iuc2VsZWN0aW9uO1xuXG4gIGxldCB2aWV3ID1cbiAgICAgICh+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLCB+c2V0dGluZ3MsIH5vdmVybGF5cz1bXSwgbW9kZWw6IG1vZGVsKSA9PiB7XG4gICAgbGV0IG92ZXJsYXlzID0ge1xuICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICBEZWNvLkRlY28oe1xuICAgICAgICAgIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3IuZWRpdG9yO1xuICAgICAgICAgIGxldCB1aV9zdGF0ZSA9IHVpX3N0YXRlO1xuICAgICAgICB9KTtcbiAgICAgIG92ZXJsYXlzIEAgRGVjby50YWtlbl9zdGVwKG1vZGVsLnN0ZXBfaWQpO1xuICAgIH07XG4gICAgUmVhZE9ubHlFZGl0b3Iudmlldyh+dWlfc3RhdGUsIH5zZXR0aW5ncywgfm92ZXJsYXlzLCBtb2RlbC5lZGl0b3IpO1xuICB9O1xufTtcblxubW9kdWxlIFN0ZXBwYWJsZSA9IHtcbiAgdHlwZSBtb2RlbCA9IHtcbiAgICBlZGl0b3I6IENvZGVFZGl0b3IubW9kZWwsXG4gICAgbmV4dF9zdGVwczogbGlzdChJZC50KSxcbiAgfTtcblxuICB0eXBlIGFjdGlvbiA9IENvZGVFZGl0b3IuYWN0aW9uO1xuXG4gIHR5cGUgZXZlbnQgPVxuICAgIHwgVGFrZVN0ZXAoaW50KTtcblxuICBsZXQgdmlldyA9XG4gICAgICAoXG4gICAgICAgIH5zaWduYWw6IGV2ZW50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+dWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IG92ZXJsYXlzID0ge1xuICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICBEZWNvLkRlY28oe1xuICAgICAgICAgIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3IuZWRpdG9yO1xuICAgICAgICAgIGxldCB1aV9zdGF0ZSA9IHVpX3N0YXRlO1xuICAgICAgICB9KTtcbiAgICAgIG92ZXJsYXlzXG4gICAgICBAIERlY28ubmV4dF9zdGVwcyhtb2RlbC5uZXh0X3N0ZXBzLCB+aW5qZWN0PXggPT4gc2lnbmFsKFRha2VTdGVwKHgpKSk7XG4gICAgfTtcbiAgICBSZWFkT25seUVkaXRvci52aWV3KH51aV9zdGF0ZSwgfnNldHRpbmdzLCB+b3ZlcmxheXMsIG1vZGVsLmVkaXRvcik7XG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBFZGl0b3JzO1xubGV0IGltZyA9IGNyZWF0ZShcImltZ1wiKTtcblxubGV0IHNsaWRlID0gKGhlYWRlciwgY29udGVudCkgPT5cbiAgZGl2KFxuICAgIH5rZXk9XCJzbGlkZVwiLFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwic2xpZGVcIiksXG4gICAgW1xuICAgICAgaDEofmtleT1cImhlYWRlclwiLCB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlLWhlYWRlclwiKSwgW3RleHQoaGVhZGVyKV0pLFxuICAgICAgZGl2KH5rZXk9XCJjb250ZW50XCIsIH5hdHRyPUF0dHIuY2xhc3NfKFwic2xpZGUtY29udGVudFwiKSwgY29udGVudCksXG4gICAgXSxcbiAgKTtcblxubGV0IGNvZGUgPSBjb250ZW50ID0+IHNwYW4ofmF0dHI9QXR0ci5jbGFzc18oXCJjb2RlXCIpLCBbdGV4dChjb250ZW50KV0pO1xuXG5sZXQgZW0gPSBjb250ZW50ID0+IHNwYW4ofmF0dHI9QXR0ci5jbGFzc18oXCJlbVwiKSwgW3RleHQoY29udGVudCldKTtcblxubGV0IGdldF9jb250ZW50ID1cbiAgZnVuXG4gIHwgRG9jdW1lbnRhdGlvbihcIlByb2dyYW1taW5nIEV4cHJlc3NpdmVseVwiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJQcm9ncmFtbWluZyBFeHByZXNzaXZlbHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJZb3UgbWlnaHQgbm90IGhhdmUgcmVhbGl6ZWQgaXQsIGJ1dCB5b3Ugd3JvdGUgeW91clxuICAgICAgZmlyc3QgY29tcHV0ZXIgcHJvZ3JhbXMgaW4gZ3JhZGUgc2Nob29sIGluIHRoZSBmb3JtIG9mXG4gICAgICBhcml0aG1ldGljIGV4cHJlc3Npb25zIVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJGb3IgZXhhbXBsZSwgZW50ZXIgdGhlIHByb2dyYW0gXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKyAyXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW4gdGhlIGV4cHJlc3Npb24gZWRpdG9yIGJlbG93LlxuICAgICAgICAgICAgICBIYXplbCBvcGVyYXRlcyBsaWtlIGEgY2FsY3VsYXRvciwgY29tcHV0aW5nIHRoZSB2YWx1ZSBvZiB5b3VyIGV4cHJlc3Npb24gYnkgZXF1YXRpb25hbGx5IHNpbXBsaWZ5aW5nIGl0IChpLmUuIGV2YWx1YXRpbmcgaXQpLCBoZXJlIHRvIHRoZSBpbnRlZ2VyIHZhbHVlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCI0XCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gXCIpLFxuICAgICAgICAgICAgdGV4dChcIlRoZSBzeW1ib2wgXCIpLFxuICAgICAgICAgICAgY29kZShcIuKJoVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgaXMgcHJvbm91bmNlZCBcXFwiaXMgZXF1aXZhbGVudCB0b1xcXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkNvbXBvc2luZyBBcml0aG1ldGljIEV4cHJlc3Npb25zXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXBvc2luZyBBcml0aG1ldGljIEV4cHJlc3Npb25zXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJBcml0aG1ldGljIGV4cHJlc3Npb25zIGFyZSBjb25zdHJ1Y3RlZCBcIiksXG4gICAgICAgICAgICBlbShcImNvbXBvc2l0aW9uYWxseVwiKSxcbiAgICAgICAgICAgIHRleHQoXCI6IGJ5IGNvbWJpbmluZyBzbWFsbGVyIGV4cHJlc3Npb25zIHVzaW5nIHZhcmlvdXMgXCIpLFxuICAgICAgICAgICAgZW0oXCJvcGVyYXRvcnNcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBsaWtlIGFkZGl0aW9uIChcIiksXG4gICAgICAgICAgICBjb2RlKFwiK1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIpIGFuZCBtdWx0aXBsaWNhdGlvbiAoXCIpLFxuICAgICAgICAgICAgY29kZShcIipcIiksXG4gICAgICAgICAgICB0ZXh0KFwiKSwgXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgdG8gZm9ybSBsYXJnZXIgZXhwcmVzc2lvbnMuIFRoZSBzbWFsbGVzdCBhcml0aG1ldGljIGV4cHJlc3Npb25zIGFyZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlbShcIm51bWJlciBsaXRlcmFsc1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIgbGlrZSBcIiksXG4gICAgICAgICAgICBjb2RlKFwiMlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgYW5kIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCI0MlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkZvciBleGFtcGxlLCBlbnRlciBcIiksXG4gICAgICAgICAgICBjb2RlKFwiMiAqIDMgKyA0ICogNVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGluIHRoZSBleHByZXNzaW9uIGVkaXRvciBiZWxvdywgb2JzZXJ2aW5nIHRoYXQgaXRzIHZhbHVlIGlzIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCIyNlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgVGhlIHJlYXNvbiBpcyBiZWNhdXNlIG9mIHRoZSBmYW1pbGlhciBvcmRlciBvZiBvcGVyYXRpb25zOiBtdWx0aXBsaWNhdGlvbiBwcmVjZWRlcyBhZGRpdGlvbi5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBCeSBydW5uaW5nIHlvdXIgY3Vyc29yIHRocm91Z2ggdGhpcyBwcm9ncmFtLCBvYnNlcnZlIGhvdyBIYXplbCdzIGN1cnNvciBkZWNvcmF0aW9ucyBkZW1vbnN0cmF0ZSB0aGlzIG9yZGVyIG9mIG9wZXJhdGlvbnMgYnkgZ3JvdXBpbmcgdG9nZXRoZXIgdGhlIG9wZXJhbmRzIG9mIGVhY2ggb3BlcmF0b3IuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkNvbXB1dGluZyBFcXVhdGlvbmFsbHlcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQ29tcHV0aW5nIEVxdWF0aW9uYWxseVwiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiVG8gcHJvdmUgdGhhdCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiMiAqIDMgKyA0ICogNSDiiaEgMjZcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbiBncmFkZSBzY2hvb2wsIHdlIHdvdWxkIGhhdmUgd3JpdHRlbiBvdXQgYSBzZXJpZXMgb2YgZXF1YXRpb25hbCBzdGVwcywgZWFjaCBzaW1wbGlmeWluZyB0aGUgZXhwcmVzc2lvbiBmcm9tIHRoZSBwcmV2aW91cyBzdGVwIGJ5IHBlcmZvcm1pbmcgb25lIGVsZW1lbnRhcnkgYXJpdGhtZXRpYyBjb21wdXRhdGlvbiBhdCBhIHRpbWUuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJVc2UgSGF6ZWwncyBzdGVwcGVyIGJ5IGNsaWNraW5nIHRoZSBidXR0b24gdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXN1bHQgYmVsb3cgYW5kIGludGVyYWN0aXZlbHkgcHJvdmUgdGhhdCBvdXIgZXZhbHVhdGlvbiB0byBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiMjZcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpcyBjb3JyZWN0IG9uZSBlbGVtZW50YXJ5IGFyaXRobWV0aWMgc3RlcCBhdCBhIHRpbWUuIFRoaXMgcHJvb2YgaXMgdGhlIGVzc2VuY2Ugb2YgY29tcHV0YXRpb24hXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlZhcmlhYmxlc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJWYXJpYWJsZXNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJBcyBpdCB0dXJucyBvdXQsIHlvdSBjYW4gZW5yaWNoIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgdG8gZ28gZnJvbSBzaW1wbGUgaW50ZWdlciBjb21wdXRhdGlvbnMgdG8gZ2VuZXJhbC1wdXJwb3NlIGNvbXB1dGF0aW9ucyEgT3ZlciB0aGUgbmV4dCBzZXZlcmFsIHNsaWRlcywgd2Ugd2lsbCBzZWUgaG93IHRoaXMgd29ya3MuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJPdXIgZmlyc3Qgc3RlcCBpcyB0byBpbnRyb2R1Y2UgYSB3YXkgdG8gYWJicmV2aWF0ZSBleHByZXNzaW9ucyB1c2luZyB2YXJpYWJsZXMuIFR5cGUgdGhlIGV4cHJlc3Npb24gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcImxldCB4ID0gMiAqIDMgaW4geCArIDFcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbnRvIHRoZSBleHByZXNzaW9uIGVkaXRvciBiZWxvdywgb2JzZXJ2aW5nIHRoYXQgaXQgZXZhbHVhdGVzIHRvIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCI3XCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gWW91IGNhbiBpbnNlcnQgYSBuZXcgbGluZSBhZnRlciB0aGUgXCIpLFxuICAgICAgICAgICAgY29kZShcImluXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIga2V5d29yZCB0byBtYWtlIHRoZSBwcm9ncmFtIG1vcmUgaWRpb21hdGljIChpLmUuIHJlYWRhYmxlKS5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIlZhcmlhYmxlcyBhcmUgZ2l2ZW4gY29tcHV0YXRpb25hbCBtZWFuaW5nIHNpbXBseSBieSBzdWJzdGl0dXRpb24uIFVzZSB0aGUgc3RlcHBlciB0byBzZWUgaG93IHRoaXMgd29ya3MuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkNvbXBvc2l0aW9uYWxpdHlcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQ29tcG9zaXRpb25hbGl0eVwiLFxuICAgICAgICBbXG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiTGV0IGV4cHJlc3Npb25zIGFyZSBleHByZXNzaW9ucywganVzdCBsaWtlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuIEFzIHdlIGRpc2N1c3NlZCBlYXJsaWVyLCBleHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQgY29tcG9zaXRpb25hbGx5LCBzbyB3ZSBjYW4gZXZlbiBtYWtlIGEgbGV0IGV4cHJlc3Npb24gYW4gb3BlcmFuZCBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yLlwiLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiU2NvcGVcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiU2NvcGVcIixcbiAgICAgICAgW1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIlRoZSBzY29wZSBvZiBhIHZhcmlhYmxlIGlzIHRoZSBleHByZXNzaW9uKHMpIG9mIHRoZSBwcm9ncmFtIHdoZXJlIGl0IGlzIGF2YWlsYWJsZSBmb3IgdXNlLiBGb3IgbGV0IGV4cHJlc3Npb25zLCB0aGUgc3ViLWV4cHJlc3Npb24gdGhhdCBmb2xsb3dzIHRoZSBcIixcbiAgICAgICAgICApLFxuICAgICAgICAgIGNvZGUoXCJpblwiKSxcbiAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgXCIga2V5d29yZCBoYXMgdGhlIHZhcmlhYmxlIGJvdW5kIGJ5IHRoZSBsZXQgZXhwcmVzc2lvbiBpbiBzY29wZS4gSGF6ZWwncyBleHByZXNzaW9uIGRlY29yYXRpb25zIHNob3cgeW91IHdoZXJlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGUgd2lsbCBlbmQuXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJTaGFkb3dpbmdcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiU2hhZG93aW5nXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiT25jZSBhIHZhcmlhYmxlIGlzIGRlZmluZWQsIGl0IGNhbm5vdCBiZSBjaGFuZ2VkLiBUaGVyZSBpcyBubyBhc3NpZ25tZW50IG9wZXJhdG9yIGluIGxhbmd1YWdlcyBiYXNlZCBvbiBwdXJlIG1hdGhlbWF0aWNhbCBleHByZXNzaW9ucywgd2hlcmUgdmFyaWFibGVzIGFyZSBnaXZlbiBtZWFuaW5nIGJ5IHN1YnN0aXR1dGlvbiwgbGlrZSBIYXplbC5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGEgXCIpLFxuICAgICAgICAgICAgZW0oXCJuZXcgdmFyaWFibGVcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiB0aGF0IHNoYXJlcyB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgYm91bmQgdmFyaWFibGUuIEhvd2V2ZXIsIHRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byByZWZlciB0byB0aGUgcHJldmlvdXMgYmluZGluZyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBuZXcgYmluZGluZzsgd2Ugc2F5IHRoYXQgdmFyaWFibGUgaGFzIGJlZW4gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJzaGFkb3dlZFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkJvb2xlYW5zIGFuZCBUeXBlc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJCb29sZWFucyBhbmQgVHlwZXNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJTbyBmYXIsIHdlIGhhdmUgb25seSBzZWVuIGV4cHJlc3Npb25zIHRoYXQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIEhvd2V2ZXIsIEhhemVsIHN1cHBvcnRzIG1hbnkgb3RoZXIgdHlwZXMgb2YgdmFsdWVzLCBsaWtlIGJvb2xlYW5zLiBUaGVyZSBhcmUgdHdvIGJvb2xlYW4gdmFsdWVzLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwidHJ1ZVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgYW5kIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJmYWxzZVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJIYXplbCdzIHR5cGUgc3lzdGVtIGVuc3VyZXMgdGhhdCBleHByZXNzaW9ucyBhcmUgdXNlZCBpbiB3YXlzIHRoYXQgbWFrZSBzZW5zZS4gRWFjaCBleHByZXNzaW9uIGhhcyBhIHR5cGUsIHdoaWNoIHByZWRpY3RzIHRoZSB0eXBlIG9mIGl0cyB2YWx1ZS4gVGhlIGV4cHJlc3Npb25zIGluIHRoZSBwcmV2aW91cyBzbGlkZXMgYWxsIGhhZCB0eXBlIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJJbnRcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgaW50ZWdlcnMsIHdoZXJlYXMgdGhlIGJvb2xlYW4gdmFsdWVzIGhhdmUgdHlwZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiQm9vbFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiWW91IGNhbiBzZWUgdGhlIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24geW91ciBjdXJzb3IgaXMgb24gaW4gdGhlIGN1cnNvciBpbnNwZWN0b3IgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLiBUaGUgc3ltYm9sIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCI6XCIpLFxuICAgICAgICAgICAgdGV4dChcIiBpcyBwcm9ub3VuY2VkIFxcXCJoYXMgdHlwZVxcXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJCb29sZWFuIHZhbHVlcyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgdXNpbmcgY29tcGFyaXNvbiBvcGVyYXRvcnMgbGlrZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiPFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCI9PVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiPlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgb24gaW50ZWdlcnMuIEZvciBleGFtcGxlLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiMiA8IDNcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGV2YWx1YXRlcyB0byBcIiksXG4gICAgICAgICAgICBjb2RlKFwidHJ1ZVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgQm9vbGVhbnMgY2FuIGFsc28gYmUgY29tYmluZWQgdXNpbmcgbG9naWNhbCBhbmQgKGNvbmp1bmN0aW9uKSwgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIiYmXCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgYW5kIGxvZ2ljYWwgb3IgKGRpc2p1bmN0aW9uKSwgXCIpLFxuICAgICAgICAgICAgY29kZShcInx8XCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiQ29uZGl0aW9uYWwgRXhwcmVzc2lvbnNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQ29uZGl0aW9uYWwgRXhwcmVzc2lvbnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJHaXZlbiBhIGJvb2xlYW4gZXhwcmVzc2lvbiwgd2UgY2FuIHVzZSBpdCB0byBjaG9vc2UgYmV0d2VlbiB0d28gZXhwcmVzc2lvbnMgdXNpbmcgYSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlbShcImNvbmRpdGlvbmFsIGV4cHJlc3Npb25cIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBGb3IgZXhhbXBsZSwgXCIpLFxuICAgICAgICAgICAgY29kZShcImlmIDIgPCAzIHRoZW4gNCAqIDQgZWxzZSA1ICogNVwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgZXZhbHVhdGVzIHRvIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCI0XCIpLFxuICAgICAgICAgICAgdGV4dChcIi5cIiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiRnVuY3Rpb25zXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkZ1bmN0aW9uc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkZ1bmN0aW9ucyBhcmUgZXhwcmVzc2lvbnMgdGhhdCB0YWtlIG90aGVyIGV4cHJlc3Npb25zIGFzIGlucHV0cyBhbmQgcHJvZHVjZSBvdGhlciBleHByZXNzaW9ucyBhcyBvdXRwdXRzLiBGb3IgZXhhbXBsZSwgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcImZ1biB4IC0+IHggKyAxXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIGludGVnZXIgZXhwcmVzc2lvbiBhcyBpbnB1dCBhbmQgcHJvZHVjZXMgYW4gaW50ZWdlciBleHByZXNzaW9uIGFzIG91dHB1dC5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIkZ1bmN0aW9ucyBpbiBIYXplbCBkbyBub3QgdGhlbXNlbHZlcyBoYXZlIG5hbWVzLiBJbnN0ZWFkLCB5b3UgY2FuIHVzZSBhIGxldCBleHByZXNzaW9uIHRvIG5hbWUgYSBmdW5jdGlvbi5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIllvdSBhcHBseSBhIGZ1bmN0aW9uIHRvIGFuIGFyZ3VtZW50IGV4cHJlc3Npb24gYnkgdXNpbmcgcGFyZW50aGVzZXMgaW4gdGhlIHVzdWFsIHdheS4gRm9yIGV4YW1wbGUsIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJsZXQgZiA9IGZ1biB4IC0+IHggKyAxIGluIGYoMilcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGV2YWx1YXRlcyB0byBcIiksXG4gICAgICAgICAgICBjb2RlKFwiM1wiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiLiBHbyB0aHJvdWdoIHRoaXMgZXhhbXBsZSBpbiB0aGUgc3RlcHBlciB0byBzZWUgaG93IHN1YnN0aXR1dGlvbiBvZiB0aGUgZnVuY3Rpb24gZm9yIHRoZSB2YXJpYWJsZSBzdGFuZGluZyBmb3IgdGhlIGZ1bmN0aW9uIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJUdXBsZXNcIiwgXykgPT4gU29tZShzbGlkZShcIlR1cGxlc1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlBhdHRlcm4gTWF0Y2hpbmcgb24gVHVwbGVzXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlBhdHRlcm4gTWF0Y2hpbmcgb24gVHVwbGVzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uXCIsIF8pID0+IFNvbWUoc2xpZGUoXCJSZWN1cnNpb25cIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJMaXN0c1wiLCBfKSA9PiBTb21lKHNsaWRlKFwiTGlzdHNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIExpc3RzXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlBhdHRlcm4gTWF0Y2hpbmcgb24gTGlzdHNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb24gb24gTGlzdHM6IGxlbmd0aFwiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJSZWN1cnNpb24gb24gTGlzdHM6IGxlbmd0aFwiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvbiBvbiBMaXN0czogc3VtXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlJlY3Vyc2lvbiBvbiBMaXN0czogc3VtXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBudW1femVyb3NcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBudW1femVyb3NcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJIaWdoZXItT3JkZXIgRnVuY3Rpb25zXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIkhpZ2hlci1PcmRlciBGdW5jdGlvbnNcIiwgW10pKVxuICB8IF8gPT4gTm9uZTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IGljb25fc2l6ZSA9IDIwLjtcblxubGV0IHNpbXBsZV9pY29uID0gKH50cmFuc2Zvcm09XCJcIiwgfnZpZXc6IHN0cmluZywgZHM6IGxpc3Qoc3RyaW5nKSkgPT5cbiAgLyogdGFrZXMgYSBsaXN0IG9mIHBhdGhzIGFzIHN0cmluZ3MsIGEgdmlld3BvcnQgYXMgYSBzdHJpbmcsXG4gICAgIGFuZCBhbiBvcHRpb25hbCAoc3RyaW5nKSB0cmFuc2Zvcm0gdG8gYXBwbHkgdG8gZWFjaCAqL1xuICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShcbiAgICAgICAgQXR0ci5bXG4gICAgICAgICAgY3JlYXRlKFwidmlld0JveFwiLCB2aWV3KSxcbiAgICAgICAgICBjcmVhdGUoXCJ3aWR0aFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgaWNvbl9zaXplKSksXG4gICAgICAgICAgY3JlYXRlKFwiaGVpZ2h0XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCBpY29uX3NpemUpKSxcbiAgICAgICAgICBjcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgTGlzdC5tYXAoXG4gICAgICBkID0+XG4gICAgICAgIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICAgICAgICBcInBhdGhcIixcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICAgICAgW0F0dHIuY3JlYXRlKFwiZFwiLCBkKV1cbiAgICAgICAgICAgICAgQCAoXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtID09IFwiXCIgPyBbXSA6IFtBdHRyLmNyZWF0ZShcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKSxcbiAgICAgIGRzLFxuICAgICksXG4gICk7XG5cbmxldCBnZWFyID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtMTE5My4yIDY5MC45NWM0LjQ4ODMtMjkuNjY0IDYuODI4MS02MC4wNDcgNi44MjgxLTkwLjk2MSAwLTMwLjkxLTIuMzM5OC02MS4yNzMtNi44MjgxLTkwLjkzOGwtMTUxLjM3LTc0LjMwNWMtMy44Mzk4LTEwLjI2Mi04LjAxNTYtMjAuMzYzLTEyLjU2Mi0zMC4yNjZsNTQuNDY5LTE1OS41MmMtMzYuMTA5LTQ5LjE0OC03OS41MjctOTIuNTY2LTEyOC42Ni0xMjguNjdsLTE1OS41MyA1NC40NjljLTkuODk4NC00LjUyMzQtMTkuOTkyLTguNzEwOS0zMC4yNjYtMTIuNTUxbC03NC4zMDEtMTUxLjM2Yy0yOS42NjQtNC41MjM0LTYwLjA1MS02Ljg1MTYtOTAuOTYxLTYuODUxNnMtNjEuMjg1IDIuMzI4MS05MC45NDkgNi44NTE2bC03NC4zMDUgMTUxLjM2Yy0xMC4yNjIgMy44Mzk4LTIwLjM1MiA4LjAyNzMtMzAuMjY2IDEyLjU1MWwtMTU5LjUyLTU0LjQ2NWMtNDkuMTI5IDM2LjEwOS05Mi41NDMgNzkuNTM1LTEyOC42NiAxMjguNjZsNTQuNDU3IDE1OS41MmMtNC41MTE3IDkuODk4NC04LjY4NzUgMjAuMDA0LTEyLjUzOSAzMC4yNjZsLTE1MS4zNiA3NC4zMTJjLTQuNTExNyAyOS42NjQtNi44NTE2IDYwLjAyMy02Ljg1MTYgOTAuOTM4IDAgMzAuOTEgMi4zMzk4IDYxLjI5NyA2Ljg1MTYgOTAuOTYxbDE1MS4zNiA3NC4zMDVjMy44NTE2IDEwLjI2MiA4LjAyNzMgMjAuMzUyIDEyLjUzOSAzMC4yNzdsLTU0LjQ1MyAxNTkuNTFjMzYuMTIxIDQ5LjEyOSA3OS41MzUgOTIuNTQzIDEyOC42NiAxMjguNjhsMTU5LjUyLTU0LjQ1N2M5LjkxMDIgNC41MTE3IDIwLjAwNCA4LjY4NzUgMzAuMjY2IDEyLjUyN2w3NC4zMDUgMTUxLjM3YzI5LjY3MiA0LjUwMzkgNjAuMDQ3IDYuODQzOCA5MC45NTcgNi44NDM4czYxLjI5Ny0yLjMzOTggOTAuOTYxLTYuODM5OGw3NC4yOTMtMTUxLjM3YzEwLjI3My0zLjgzOTggMjAuMzYzLTguMDE1NiAzMC4yODktMTIuNTI3bDE1OS41IDU0LjQ1N2M0OS4xMjktMzYuMTMzIDkyLjU0My03OS41NDcgMTI4LjY1LTEyOC42OGwtNTQuNDYxLTE1OS41MWM0LjU0NjktOS45MjU4IDguNzIyNy0yMC4wMTYgMTIuNTYyLTMwLjI3N3ptLTU5My4xNyA0OC41MTZjLTc3LjAxNiAwLTEzOS40NC02Mi40NDktMTM5LjQ0LTEzOS40OCAwLTc3LjAxNiA2Mi40MjYtMTM5LjQ1IDEzOS40NC0xMzkuNDVzMTM5LjQ4IDYyLjQzOCAxMzkuNDggMTM5LjQ1YzAgNzcuMDI3LTYyLjQ2MSAxMzkuNDgtMTM5LjQ4IDEzOS40OHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgaW5mbyA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTExMjAuNSA1MzEuNzVjLTE3LjA2Mi0xMzAuMjQtODIuMzMyLTI0OS4zNi0xODIuOTItMzMzLjgzLTEwMC41OS04NC40NzctMjI5LjE5LTEyOC4xOC0zNjAuNDItMTIyLjQ4LTEzMS4yMyA1LjcwMzEtMjU1LjU2IDYwLjM5NS0zNDguNDQgMTUzLjI4cy0xNDcuNTcgMjE3LjIxLTE1My4yOCAzNDguNDRjLTUuNjk5MiAxMzEuMjMgMzggMjU5LjgzIDEyMi40OCAzNjAuNDIgODQuNDc3IDEwMC41OSAyMDMuNTkgMTY1Ljg2IDMzMy44MyAxODIuOTIgMTA2Ljc1IDEzLjk4NCAyMTUuMjItNS4xODc1IDMxMC43MS01NC45MjIgOTUuNDg4LTQ5LjczNCAxNzMuMzgtMTI3LjYyIDIyMy4xMS0yMjMuMTEgNDkuNzM0LTk1LjQ5MiA2OC45MDYtMjAzLjk2IDU0LjkyMi0zMTAuNzF6bS00NDUuNSAzMTcuMjVjMCAyNi43OTMtMTQuMjkzIDUxLjU1NS0zNy41IDY0Ljk1My0yMy4yMDcgMTMuMzk1LTUxLjc5MyAxMy4zOTUtNzUgMC0yMy4yMDctMTMuMzk4LTM3LjUtMzguMTYtMzcuNS02NC45NTN2LTIyNWMwLTI2Ljc5MyAxNC4yOTMtNTEuNTU1IDM3LjUtNjQuOTUzIDIzLjIwNy0xMy4zOTUgNTEuNzkzLTEzLjM5NSA3NSAwIDIzLjIwNyAxMy4zOTggMzcuNSAzOC4xNiAzNy41IDY0Ljk1M3ptLTc1LTQyM2MtMTkuODkxIDAtMzguOTY5LTcuOTAyMy01My4wMzEtMjEuOTY5LTE0LjA2Ni0xNC4wNjItMjEuOTY5LTMzLjE0MS0yMS45NjktNTMuMDMxczcuOTAyMy0zOC45NjkgMjEuOTY5LTUzLjAzMWMxNC4wNjItMTQuMDY2IDMzLjE0MS0yMS45NjkgNTMuMDMxLTIxLjk2OXMzOC45NjkgNy45MDIzIDUzLjAzMSAyMS45NjljMTQuMDY2IDE0LjA2MiAyMS45NjkgMzMuMTQxIDIxLjk2OSA1My4wMzFzLTcuOTAyMyAzOC45NjktMjEuOTY5IDUzLjAzMWMtMTQuMDYyIDE0LjA2Ni0zMy4xNDEgMjEuOTY5LTUzLjAzMSAyMS45Njl6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHN0YXIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm0xMDQ1LjIgNDU5LjYtMjcwLTU3LjYwMi0xMzYuOC0yMzguOGMtMTYuODAxLTI4LjgwMS01OC44MDEtMjguODAxLTc1LjYwMiAwbC0xMzggMjM4LjgtMjcwIDU3LjYwMmMtMzIuMzk4IDcuMTk5Mi00NS42MDIgNDYuODAxLTI0IDcybDE4NC44IDIwNS4yLTI4LjgwMSAyNzMuNmMtMy42MDE2IDMzLjU5OCAzMCA1Ny41OTggNjEuMTk5IDQ0LjM5OGwyNTItMTExLjYgMjUyIDExMS42YzMxLjE5OSAxMy4xOTkgNjQuODAxLTEwLjgwMSA2MS4xOTktNDQuMzk4bC0yOC44MDEtMjczLjYgMTg0LjgtMjA1LjJjMjEuNjAyLTI1LjIwMyA5LjYwMTYtNjQuODAxLTI0LTcyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBib21iID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtNzAwLjg4IDM2NC44OHYtOTQuMzEyYzAtMTAuNS04LjQzNzUtMTguNzUtMTguNzUtMTguNzVoLTk4LjgxMmMxLjMxMjUtMjIuNSA5LjU2MjUtOTQuNjg4IDYxLjUtMTIzLjE5IDUyLjY4OC0yOS4wNjIgMTQwLjI1LTYuMTg3NSAyNTMuMzEgNjYuMzc1IDguNjI1IDUuNjI1IDIwLjI1IDMuMTg3NSAyNS44NzUtNS42MjUgNS42MjUtOC42MjUgMy0yMC4yNS01LjYyNS0yNS44NzUtMTI3LjEyLTgxLjU2Mi0yMjUuMzgtMTA0LjQ0LTI5MS45NC02Ny42ODgtNzAuMzEyIDM4LjgxMi03OS41IDEyOS43NS04MC42MjUgMTU2aC05OWMtMTAuMzEyIDAtMTguNzUgOC4yNS0xOC43NSAxOC43NXY5Mi40MzhjMCAwLjU2MjUgMCAxLjMxMjUgMC4xODc1IDEuODc1LTE1My4xOSA1NS42ODgtMjYyLjY5IDIwMi42OS0yNjIuNjkgMzc0LjgxIDAgMjE5Ljk0IDE3OC44OCAzOTguODEgMzk4LjgxIDM5OC44MXMzOTktMTc4Ljg4IDM5OS0zOTguODFjMC0xNzEuOTQtMTA5LjUtMzE4Ljc1LTI2Mi41LTM3NC44MXptLTgyLjY4OCA5MC43NWMtOS45Mzc1LTMuMTg3NS0xNS4zNzUtMTMuNjg4LTEyLjM3NS0yMy42MjUgMy4xODc1LTkuNzUgMTMuNjg4LTE1LjM3NSAyMy40MzgtMTIuMTg4IDIuODEyNSAwLjkzNzUgMjc5IDkwLjc1IDIzNy43NSAzODUuMzEtMS4zMTI1IDkuMzc1LTkuMzc1IDE2LjEyNS0xOC41NjIgMTYuMTI1LTAuOTM3NSAwLTEuNjg3NSAwLTIuNjI1LTAuMTg3NS0xMC4zMTItMS4zMTI1LTE3LjQzOC0xMC44NzUtMTUuOTM4LTIxIDM2LjkzOC0yNjMuNjItMjAxLjU2LTM0MS4yNS0yMTEuNjktMzQ0LjQ0elwiLFxuICAgICAgXCJtODkzLjI1IDI0NC44OC0zMC41NjIgMjkuMjVjLTMuNTYyNSAzLjU2MjUtOC4yNSA1LjI1LTEyLjkzOCA1LjI1LTQuODc1IDAtOS45Mzc1LTEuODc1LTEzLjUtNS44MTI1LTcuMzEyNS03LjUtNi45Mzc1LTE5LjMxMiAwLjU2MjUtMjYuNDM4bDMwLjU2Mi0yOS4yNWM3LjUtNy4zMTI1IDE5LjUtNi45Mzc1IDI2LjYyNSAwLjU2MjVzNi43NSAxOS4zMTItMC43NSAyNi40Mzh6XCIsXG4gICAgICBcIm05NTguMzEgODMuMjUtNi43NSA0MS42MjVjLTEuMzEyNSA5LjM3NS05LjM3NSAxNS43NS0xOC4zNzUgMTUuNzUtMC45Mzc1IDAtMi4wNjI1IDAtMy0wLjE4NzUtMTAuMzEyLTEuNjg3NS0xNy4yNS0xMS4yNS0xNS41NjItMjEuMzc1bDYuNzUtNDEuODEyYzEuNjg3NS0xMC4zMTIgMTEuNDM4LTE3LjI1IDIxLjU2Mi0xNS41NjJzMTcuMDYyIDExLjI1IDE1LjM3NSAyMS41NjJ6XCIsXG4gICAgICBcIm0xMDI4LjQgMjQ5Ljk0Yy0zLjU2MjUgNC41LTkgNi45Mzc1LTE0LjYyNSA2LjkzNzUtNC4xMjUgMC04LjI1LTEuMzEyNS0xMS42MjUtNC4xMjVsLTMzLTI2LjQzOGMtOC4wNjI1LTYuNTYyNS05LjM3NS0xOC4zNzUtMi44MTI1LTI2LjQzOCA2LjM3NS04LjA2MjUgMTguMTg4LTkuMzc1IDI2LjI1LTIuODEyNWwzMyAyNi40MzhjOC4wNjI1IDYuNTYyNSA5LjM3NSAxOC4zNzUgMi44MTI1IDI2LjQzOHpcIixcbiAgICAgIFwibTEwMjMuNiAxNTUuMDYtMzguNDM4IDE3LjgxMmMtMi40Mzc1IDEuMTI1LTUuMjUgMS42ODc1LTcuODc1IDEuNjg3NS02LjkzNzUgMC0xMy44NzUtNC4xMjUtMTcuMDYyLTEwLjg3NS00LjMxMjUtOS4zNzUtMC4xODc1LTIwLjYyNSA5LjE4NzUtMjQuOTM4bDM4LjQzOC0xNy44MTJjOS4zNzUtNC4zMTI1IDIwLjYyNS0wLjE4NzUgMjQuOTM4IDkuMTg3NXMwLjE4NzUgMjAuNjI1LTkuMTg3NSAyNC45Mzh6XCIsXG4gICAgICBcIm05NTYuNjIgMjg0LjA2YzAuNzUgMTAuMzEyLTcuMTI1IDE5LjMxMi0xNy40MzggMTkuODc1LTAuNTYyNSAwLjE4NzUtMC45Mzc1IDAuMTg3NS0xLjMxMjUgMC4xODc1LTkuNzUgMC0xOC03LjY4NzUtMTguNzUtMTcuNjI1bC0yLjgxMjUtNDIuMTg4Yy0wLjU2MjUtMTAuMzEyIDcuMTI1LTE5LjMxMiAxNy42MjUtMTkuODc1IDEwLjMxMi0wLjc1IDE5LjEyNSA3LjEyNSAxOS44NzUgMTcuNDM4elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBleHBvcnQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA2Ny42NzEgNjcuNjcxXCIsXG4gICAgW1xuICAgICAgXCJNNTIuOTQ2LDIzLjM0OEg0Mi44MzR2NmgxMC4xMTJjMy4wMDcsMCw1LjM0LDEuNTM2LDUuMzQsMi44NTh2MjYuNjA2YzAsMS4zMjItMi4zMzMsMi44NTgtNS4zNCwyLjg1OEgxNC43MjQgICBjLTMuMDA3LDAtNS4zNC0xLjUzNi01LjM0LTIuODU4VjMyLjIwN2MwLTEuMzIyLDIuMzMzLTIuODU4LDUuMzQtMi44NThoMTAuMTF2LTZoLTEwLjExYy02LjM1OSwwLTExLjM0LDMuODkxLTExLjM0LDguODU4djI2LjYwNiAgIGMwLDQuOTY4LDQuOTgxLDguODU4LDExLjM0LDguODU4aDM4LjIyM2M2LjM1OCwwLDExLjM0LTMuODkxLDExLjM0LTguODU4VjMyLjIwN0M2NC4yODYsMjcuMjM5LDU5LjMwNSwyMy4zNDgsNTIuOTQ2LDIzLjM0OHpcIixcbiAgICAgIFwiTTI0Ljk1NywxNC45NTVjMC43NjgsMCwxLjUzNS0wLjI5MywyLjEyMS0wLjg3OWwzLjc1Ni0zLjc1NnYxMy4wMjh2NnYxMS40OTRjMCwxLjY1NywxLjM0MywzLDMsM3MzLTEuMzQzLDMtM1YyOS4zNDh2LTYgICBWMTAuMTE3bDMuOTU5LDMuOTU5YzAuNTg2LDAuNTg2LDEuMzU0LDAuODc5LDIuMTIxLDAuODc5czEuNTM1LTAuMjkzLDIuMTIxLTAuODc5YzEuMTcyLTEuMTcxLDEuMTcyLTMuMDcxLDAtNC4yNDJsLTguOTU3LTguOTU3ICAgQzM1LjQ5MiwwLjI5MSwzNC43MjUsMCwzMy45NTgsMGMtMC4wMDgsMC0wLjAxNSwwLTAuMDIzLDBzLTAuMDE1LDAtMC4wMjMsMGMtMC43NjcsMC0xLjUzNCwwLjI5MS0yLjEyLDAuODc3bC04Ljk1Nyw4Ljk1NyAgIGMtMS4xNzIsMS4xNzEtMS4xNzIsMy4wNzEsMCw0LjI0MkMyMy40MjIsMTQuNjYyLDI0LjE4OSwxNC45NTUsMjQuOTU3LDE0Ljk1NXpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgaW1wb3J0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNjEgNjFcIixcbiAgICBbXG4gICAgICBcIk00OS41NjEsMTYuNDY0SDM5LjQ1djZoMTAuMTExYzMuMDA4LDAsNS4zNDEsMS41MzUsNS4zNDEsMi44NTd2MjYuNjA3YzAsMS4zMjEtMi4zMzMsMi44NTgtNS4zNDEsMi44NThIMTEuMzQgICBjLTMuMDA3LDAtNS4zNC0xLjUzNy01LjM0LTIuODU4VjI1LjMyNGMwLTEuMzIyLDIuMzMzLTIuODU4LDUuMzQtMi44NThoMTAuMTF2LTZIMTEuMzRDNC45ODEsMTYuNDY2LDAsMjAuMzU3LDAsMjUuMzI0djI2LjYwNSAgIGMwLDQuOTY4LDQuOTgxLDguODU3LDExLjM0LDguODU3aDM4LjIyM2M2LjM1NywwLDExLjM0LTMuODkxLDExLjM0LTguODU3VjI1LjMyNEM2MC45MDIsMjAuMzU1LDU1LjkyMSwxNi40NjQsNDkuNTYxLDE2LjQ2NHpcIixcbiAgICAgIFwiTTM5LjUyOSwyOS4wMDRjLTAuNzY4LDAtMS41MzUsMC4yOTQtMi4xMjEsMC44OGwtMy43NTYsMy43NTVWMjAuNjEydi02VjMuMTE3YzAtMS42NTYtMS4zNDMtMy0zLTNzLTMsMS4zNDQtMywzdjExLjQ5NHY2ICAgdjEzLjIzbC0zLjk1OS0zLjk1OGMtMC41ODYtMC41ODYtMS4zNTQtMC44OC0yLjEyMS0wLjg4cy0xLjUzNSwwLjI5NC0yLjEyMSwwLjg4Yy0xLjE3MiwxLjE3LTEuMTcyLDMuMDcsMCw0LjI0MWw4Ljk1Nyw4Ljk1NyAgIGMwLjU4NiwwLjU4NiwxLjM1NCwwLjg3NywyLjEyLDAuODc3YzAuMDA4LDAsMC4wMTYsMCwwLjAyMywwczAuMDE1LDAsMC4wMjIsMGMwLjc2OCwwLDEuNTM0LTAuMjkxLDIuMTItMC44NzdsOC45NTctOC45NTcgICBjMS4xNzItMS4xNzEsMS4xNzItMy4wNzEsMC00LjI0MUM0MS4wNjQsMjkuMjk4LDQwLjI5OCwyOS4wMDQsMzkuNTI5LDI5LjAwNHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgdW5kbyA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDUxMiA1MTJcIixcbiAgICBbXG4gICAgICBcIk0xMjkuNyw0Ni40bDM3LjIsMzcuN2wtNjYuNiw2Ny4xaDI1NC40Yzg2LjgsMCwxNTcuMiw3MC40LDE1Ny4yLDE1Ny4ycy03MC40LDE1Ny4yLTE1Ny4yLDE1Ny4yaC01Mi40di01Mi40aDUyLjQgYzU3LjksMCwxMDQuOC00Ni45LDEwNC44LTEwNC44cy00Ni45LTEwNC44LTEwNC44LTEwNC44SDEwMC40bDY2LjYsNjUuOGwtMzcuMiwzNi45TDAsMTc3LjRMMTI5LjcsNDYuNHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgcmVkbyA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDUxMiA1MTJcIixcbiAgICBbXG4gICAgICBcIk0zODIuMyw0Ni40bC0zNy4yLDM3LjdsNjYuNiw2Ny4xSDE1Ny4yQzcwLjQsMTUxLjIsMCwyMjEuNiwwLDMwOC40czcwLjQsMTU3LjIsMTU3LjIsMTU3LjJoNTIuNHYtNTIuNGgtNTIuNCBjLTU3LjksMC0xMDQuOC00Ni45LTEwNC44LTEwNC44czQ2LjktMTA0LjgsMTA0LjgtMTA0LjhoMjU0LjRsLTY2LjYsNjUuOGwzNi45LDM2LjlsMTMwLTEyOC45TDM4Mi4zLDQ2LjR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGNpcmNsZV9xdWVzdGlvbiA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiLTAuNSAtMC41IDI1IDI1XCIsXG4gICAgW1xuICAgICAgXCJNMTIgMmM1LjUxNCAwIDEwIDQuNDg2IDEwIDEwcy00LjQ4NiAxMC0xMCAxMC0xMC00LjQ4Ni0xMC0xMCA0LjQ4Ni0xMCAxMC0xMHptMC0yYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyLTUuMzczLTEyLTEyLTEyem0xLjI1IDE3YzAgLjY5LS41NTkgMS4yNS0xLjI1IDEuMjUtLjY4OSAwLTEuMjUtLjU2LTEuMjUtMS4yNXMuNTYxLTEuMjUgMS4yNS0xLjI1Yy42OTEgMCAxLjI1LjU2IDEuMjUgMS4yNXptMS4zOTMtOS45OThjLS42MDgtLjYxNi0xLjUxNS0uOTU1LTIuNTUxLS45NTUtMi4xOCAwLTMuNTkgMS41NS0zLjU5IDMuOTVoMi4wMTFjMC0xLjQ4Ni44MjktMi4wMTMgMS41MzgtMi4wMTMuNjM0IDAgMS4zMDcuNDIxIDEuMzY0IDEuMjI2LjA2Mi44NDctLjM5IDEuMjc3LS45NjIgMS44MjEtMS40MTIgMS4zNDMtMS40MzggMS45OTMtMS40MzIgMy40NjhoMi4wMDVjLS4wMTMtLjY2NC4wMy0xLjIwMy45MzUtMi4xNzguNjc3LS43MyAxLjUxOS0xLjYzOCAxLjUzNi0zLjAyMi4wMTEtLjkyNC0uMjg0LTEuNzE5LS44NTQtMi4yOTd6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGdpdGh1YiA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiLTAuNSAtMC41IDI1IDI1XCIsXG4gICAgW1xuICAgICAgXCJNMTIgMGMtNi42MjYgMC0xMiA1LjM3My0xMiAxMiAwIDUuMzAyIDMuNDM4IDkuOCA4LjIwNyAxMS4zODcuNTk5LjExMS43OTMtLjI2MS43OTMtLjU3N3YtMi4yMzRjLTMuMzM4LjcyNi00LjAzMy0xLjQxNi00LjAzMy0xLjQxNi0uNTQ2LTEuMzg3LTEuMzMzLTEuNzU2LTEuMzMzLTEuNzU2LTEuMDg5LS43NDUuMDgzLS43MjkuMDgzLS43MjkgMS4yMDUuMDg0IDEuODM5IDEuMjM3IDEuODM5IDEuMjM3IDEuMDcgMS44MzQgMi44MDcgMS4zMDQgMy40OTIuOTk3LjEwNy0uNzc1LjQxOC0xLjMwNS43NjItMS42MDQtMi42NjUtLjMwNS01LjQ2Ny0xLjMzNC01LjQ2Ny01LjkzMSAwLTEuMzExLjQ2OS0yLjM4MSAxLjIzNi0zLjIyMS0uMTI0LS4zMDMtLjUzNS0xLjUyNC4xMTctMy4xNzYgMCAwIDEuMDA4LS4zMjIgMy4zMDEgMS4yMy45NTctLjI2NiAxLjk4My0uMzk5IDMuMDAzLS40MDQgMS4wMi4wMDUgMi4wNDcuMTM4IDMuMDA2LjQwNCAyLjI5MS0xLjU1MiAzLjI5Ny0xLjIzIDMuMjk3LTEuMjMuNjUzIDEuNjUzLjI0MiAyLjg3NC4xMTggMy4xNzYuNzcuODQgMS4yMzUgMS45MTEgMS4yMzUgMy4yMjEgMCA0LjYwOS0yLjgwNyA1LjYyNC01LjQ3OSA1LjkyMS40My4zNzIuODIzIDEuMTAyLjgyMyAyLjIyMnYzLjI5M2MwIC4zMTkuMTkyLjY5NC44MDEuNTc2IDQuNzY1LTEuNTg5IDguMTk5LTYuMDg2IDguMTk5LTExLjM4NiAwLTYuNjI3LTUuMzczLTEyLTEyLTEyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBiYWNrID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMzMwIDMzMFwiLFxuICAgIFtcbiAgICAgIFwiTTI1MC42MDYsMTU0LjM4OWwtMTUwLTE0OS45OTZjLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1OC0yMS4yMTMsMC4wMDEgIGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM2wxMzkuMzkzLDEzOS4zOUw3OS4zOTMsMzA0LjM5NGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxMyAgQzgyLjMyMiwzMjguNTM2LDg2LjE2MSwzMzAsOTAsMzMwczcuNjc4LTEuNDY0LDEwLjYwNy00LjM5NGwxNDkuOTk5LTE1MC4wMDRjMi44MTQtMi44MTMsNC4zOTQtNi42MjgsNC4zOTQtMTAuNjA2ICBDMjU1LDE2MS4wMTgsMjUzLjQyLDE1Ny4yMDIsMjUwLjYwNiwxNTQuMzg5elwiLFxuICAgIF0sXG4gICAgfnRyYW5zZm9ybT1cInNjYWxlKC0wLjc1LCAwLjc1KSB0cmFuc2xhdGUoLTMzMCwgNTApXCIsXG4gICk7XG5cbmxldCBmb3J3YXJkID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMzMwIDMzMFwiLFxuICAgIFtcbiAgICAgIFwiTTI1MC42MDYsMTU0LjM4OWwtMTUwLTE0OS45OTZjLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1OC0yMS4yMTMsMC4wMDEgIGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM2wxMzkuMzkzLDEzOS4zOUw3OS4zOTMsMzA0LjM5NGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxMyAgQzgyLjMyMiwzMjguNTM2LDg2LjE2MSwzMzAsOTAsMzMwczcuNjc4LTEuNDY0LDEwLjYwNy00LjM5NGwxNDkuOTk5LTE1MC4wMDRjMi44MTQtMi44MTMsNC4zOTQtNi42MjgsNC4zOTQtMTAuNjA2ICBDMjU1LDE2MS4wMTgsMjUzLjQyLDE1Ny4yMDIsMjUwLjYwNiwxNTQuMzg5elwiLFxuICAgIF0sXG4gICAgfnRyYW5zZm9ybT1cInNjYWxlKDAuNzUsIDAuNzUpIHRyYW5zbGF0ZSgwLCA1MClcIixcbiAgKTtcblxubGV0IGV5ZSA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDQ4IDQ4XCIsXG4gICAgW1xuICAgICAgXCJNMjQgOWMtMTAgMC0xOC41NCA2LjIyLTIyIDE1IDMuNDYgOC43OCAxMiAxNSAyMiAxNSAxMC4wMSAwIDE4LjU0LTYuMjIgMjItMTUtMy40Ni04Ljc4LTExLjk5LTE1LTIyLTE1em0wIDI1Yy01LjUyIDAtMTAtNC40OC0xMC0xMHM0LjQ4LTEwIDEwLTEwIDEwIDQuNDggMTAgMTAtNC40OCAxMC0xMCAxMHptMC0xNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHRyYXNoID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMjQgMjRcIixcbiAgICBbXG4gICAgICBcIk0zIDZ2MThoMTh2LTE4aC0xOHptNSAxNGMwIC41NTItLjQ0OCAxLTEgMXMtMS0uNDQ4LTEtMXYtMTBjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjEwem01IDBjMCAuNTUyLS40NDggMS0xIDFzLTEtLjQ0OC0xLTF2LTEwYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYxMHptNSAwYzAgLjU1Mi0uNDQ4IDEtMSAxcy0xLS40NDgtMS0xdi0xMGMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MTB6bTQtMTh2MmgtMjB2LTJoNS43MTFjLjkgMCAxLjYzMS0xLjA5OSAxLjYzMS0yaDUuMzE1YzAgLjkwMS43MyAyIDEuNjMxIDJoNS43MTJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGhhemVsbnV0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIxMDAgMCA1MDAgNTAwXCIsXG4gICAgW1xuICAgICAgXCJtNDk5Ljg0IDEzMC41MWMtOTMuMzYzLTkzLjM2My0yMDcuNTktMTI5LjA2LTMwMC42NS0zNi4wNTEtOTUuMDcgOTUuMTEzLTExNi4wNyAyMTMuMTUtNjIuNTYyIDM1MC44MyAzLjE0ODQgOC4wNTA4LTAuODc1IDI4LjQzOCA5LjUzOTEgMzguODk1IDEwLjQxNCAxMC40NTcgMjkuODM2IDUuNDY4OCAzNi43MDcgOC4wMDc4IDEyOC44NCA0Ny41MTIgMjU0LjggMzcuMTg4IDM1My4wMi02MS4yNSA5My4wMDgtOTIuNzk3IDU3LjM1Mi0yMDcuMDMtMzYuMDU1LTMwMC40M3ptLTEyLjM4MyAxMi4zODNjMzIuMjg5IDMyLjI4OSA4OC41MDggOTkuNTc0IDg1LjA5NCAxNzMuNjQtNzYuMjExLTMzLjM0LTg1LjkyMi04NS4xNDEtMTQ0Ljc3LTE0My45OC0zNS40OC0zNS40OC0xMDMuODItNTguMDU1LTExNi4wNy0xMTQuNjIgNjYuMDItNC4xOTkyIDEyOS4yNCAzOC4zMjQgMTc1Ljc0IDg0Ljk2MXptMzYuMDUxIDI3NS44OWMtODcuNSA4Ny41LTE5OS45OCAxMDYuNjItMzM0LjU1IDU2Ljg3NS05LjE4NzUtMy4zNjcyLTI3LjM0NC0xLjA1MDgtMzAuNjI1LTMuOTM3NS0zLjg5NDUtMy45Mzc1LTEuNTc0Mi0yMi40ODgtNS42MDE2LTMyLjg1NS01MS41MzktMTMyLjQ4LTMyLjM3NS0yNDEuMTEgNTguNjI1LTMzMi4xMSAyNS40MTgtMjUuMzc1IDUzLjExMy00MC45NDkgODIuNzczLTQ2LjY4IDEzLjQzNCA2Ni4wMTIgODcuMTk1IDkwLjc3NyAxMjEuNSAxMjQuODYgNTguNDQ5IDU4LjY3MiA2OS4wODIgMTE0LjIzIDE1NC44OCAxNDkuNzEtNS4wNzQyIDI3LjkxLTE5LjI1IDU2LjQzOC00Ni45ODggODQuMTI5elwiLFxuICAgICAgXCJtMjc0LjAxIDM3NC43MiAxMDguMTEtMTA4LjExYzEuNzY5NS0xLjYxMzMgMi44MDQ3LTMuODc4OSAyLjg1OTQtNi4yNzM0IDAuMDU0Njg4LTIuMzk0NS0wLjg3NS00LjcwNy0yLjU3MDMtNi4zOTg0LTEuNjk1My0xLjY5MTQtNC4wMTE3LTIuNjEzMy02LjQwNjItMi41NTA4LTIuMzk0NSAwLjA2NjQwNi00LjY2MDIgMS4xMDU1LTYuMjY1NiAyLjg4MjhsLTEwOC4xMSAxMDguMDZjLTMuNDE4IDMuNDIxOS0zLjQxOCA4Ljk2NDggMCAxMi4zODNzOC45NjA5IDMuNDE4IDEyLjM4MyAwelwiLFxuICAgICAgXCJtNDQ1LjQyIDM5OS42MWMtMC41MjM0NCAwLjM5NDUzLTUyLjkzOCA0MC41NTUtMTE1LjU0IDQ2LjI0Mi00LjgzMiAwLjQzNzUtOC4zOTg0IDQuNzA3LTcuOTYwOSA5LjUzOTEgMC40MzM1OSA0LjgzMiA0LjcwMzEgOC4zOTg0IDkuNTM1MiA3Ljk2MDkgNjcuODU1LTYuMTY4IDEyMi41LTQ4LjEyNSAxMjQuNjktNDkuODMyIDEuOTA2Mi0xLjM5NDUgMy4xNjgtMy41IDMuNDk2MS01LjgzOTggMC4zMjgxMy0yLjMzOTgtMC4zMDQ2OS00LjcxMDktMS43NS02LjU3ODEtMS40NDkyLTEuODY3Mi0zLjU4OTgtMy4wNzAzLTUuOTM3NS0zLjMzNTktMi4zNDM4LTAuMjYxNzItNC42OTkyIDAuNDMzNTktNi41MjczIDEuOTI5N3pcIixcbiAgICAgIFwibTM0NC45MyA0MTAuNjRjMi4yNjE3IDQuMjYxNyA3LjU0NjkgNS44ODI4IDExLjgxMiAzLjYzMjggMzQuNzYyLTE4LjQzNCA2OC4wMTYtMzkuNTg2IDk5LjQ0MS02My4yNjIgMy44MDg2LTIuOTg0NCA0LjQ3MjctOC40ODgzIDEuNDg4My0xMi4yOTctMi45ODQ0LTMuODA0Ny04LjQ4ODMtNC40Njg4LTEyLjI5My0xLjQ4NDQtMzAuNjQ4IDIzLjAwNC02My4wMzEgNDMuNTk4LTk2Ljg2MyA2MS41OTgtNC4yNDIyIDIuMjgxMi01Ljg0NzcgNy41NTg2LTMuNTg1OSAxMS44MTJ6XCIsXG4gICAgICBcIm0zNTAgMzU3LjYxYy0yLjg0MzgtMy44OTg0LTguMzAwOC00Ljc1NzgtMTIuMjA3LTEuOTI1OC0wLjUyMzQ0IDAuMzUxNTYtNTAuMTggMzYuNDQ1LTEwNS42MSA3MS4wOTQtMi4wMzkxIDEuMTk1My0zLjUwNzggMy4xNjQxLTQuMDc0MiA1LjQ2MDktMC41NjI1IDIuMjk2OS0wLjE3NTc4IDQuNzIyNyAxLjA3ODEgNi43MzA1IDEuMjUzOSAyLjAwMzkgMy4yNjU2IDMuNDE0MSA1LjU3ODEgMy45MTQxIDIuMzEyNSAwLjQ5NjA5IDQuNzI2NiAwLjAzOTA2MiA2LjY5NTMtMS4yNzM0IDU2LjA0My0zNC43MzggMTA2LTcxLjQwMiAxMDYuNTMtNzEuNzkzIDMuOTI1OC0yLjgxNjQgNC44MjQyLTguMjgxMiAyLjAxMTctMTIuMjA3elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBtYWduaWZ5ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMjQgMjQgXCIsXG4gICAgW1xuICAgICAgXCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QTYuNDcxIDYuNDcxIDAgMCAwIDE2IDkuNSA2LjUgNi41IDAgMSAwIDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGNoZXN0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTAwIDEyNVwiLFxuICAgIFtcbiAgICAgIFwiTTU2LDU0di00YzAtMS4xLDAuOS0yLDItMnMyLDAuOSwyLDJ2NGMwLDEuMS0wLjksMi0yLDJTNTYsNTUuMSw1Niw1NHogTTk0LDI4djEydjM2YzAsMy4zLTIuNyw2LTYsNkgxMmMtMy4zLDAtNi0yLjctNi02ICBWNDBWMjhjMC01LjUsNC41LTEwLDEwLTEwaDY4Qzg5LjUsMTgsOTQsMjIuNSw5NCwyOHogTTg0LDIySDI0YzEuMywxLjcsMiwzLjcsMiw2djEwaDY0VjI4QzkwLDI0LjcsODcuMywyMiw4NCwyMnogTTEwLDM4aDEyVjI4ICBjMC0zLjMtMi43LTYtNi02cy02LDIuNy02LDZWMzh6IE0xMiw3OGgxMFY0MkgxMHYzNEMxMCw3Ny4xLDEwLjksNzgsMTIsNzh6IE05MCw0MkgyNnYzNmg2MmMxLjEsMCwyLTAuOSwyLTJWNDJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHNwcm91dCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEwMCAxMjVcIixcbiAgICBbXG4gICAgICBcIk00OC44LDY4LjJjLTIsMC44LTEuNiwyLjItMi4xLDIuNWMtMC44LDAuMy0wLjEtMS0yLjEtMS42Yy00LjUtMS40LTQsNC4zLTYuNSw0LjJjLTEuNy0wLjEtMS44LTAuNi0zLjQtMC40ICBjLTEuNiwwLjMtMS4xLDIuMS0yLjksMi4zYy0xLjEsMC4xLTAuNywxLjItMi40LDFjLTEuNC0wLjItMiwxLjYtMi4xLDIuN2MtMC4xLDAuOC0wLjMsMS42LTEuNiwyLjNjLTEuMiwwLjctMy4zLDAuMi00LjQsMS43ICBjLTEuNiwyLTEuNyw1LjEtMS43LDUuMWg2MC43YzAsMC0wLjEtMi4zLTIuNi0zLjljLTAuNy0wLjQsMC4xLTAuNCwwLjQtMmMwLjEtMC42LDAtMS41LTAuNy0yLjZjLTAuOS0xLjMtMi43LTAuOS0zLjQtMC43ICBjMC4yLTAuOSwwLjItMi0xLjItMi45Yy0xLTAuNy0xLjMtMC4zLTEuOS0wLjRjLTAuNy0wLjEtMC4zLTAuOC0xLTEuMmMtMS44LTEuMS0wLjUtMi4xLTMuMy0zLjJjLTEuNy0wLjctMi0wLjYtNS42LTAuNiAgYy0xLjQsMC0xLjctMi4zLTMuNi0xLjhjLTEuOSwwLjYtMS4xLTAuNS0yLjItMS42Yy0wLjMtMC4zLTAuOS0wLjUtMS41LTAuNWMtMC4xLTEwLjYtMC4xLTI0LjUsMC4zLTI3LjJjMC42LTQuNSw1LjctOS44LDEzLjEtMTAuNiAgYy03LDUuMi0xMC4yLDYuNy0xMC44LDkuOWMtMC42LDMuMiw1LjEsMi41LDkuNiwwYzQuNS0yLjUsMTIuMS0xNC42LDEyLjQtMTljLTYuNC0xLjYtMjIsNC4xLTI3LjEsMTYuNkM0OS42LDI2LjYsNDcuNywxMiwyMC4zLDEyICBjLTAuMSwyLjYsMC42LDIuOSwxLjksNi4xYzEuMywzLjIsOS45LDE4LjEsMjAuNywxNy41YzEuNi0wLjEtMC4zLTMuOC0yLjktNi44YzAsMC02LjQtNS45LTguMy03LjVjNi40LDIuNSwxNi4yLDkuOSwxNywxNS4zICBjMC41LDMuNSwwLjQsMjAuMiwwLjIsMzEuN0M0OSw2OC4yLDQ4LjksNjguMiw0OC44LDY4LjJ6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHggPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjI5NTAgMTAwMCA0NTAgNDUwXCIsXG4gICAgW1xuICAgICAgXCJNMzM4Mi44NCA3ODQuMyAzNDYyLjQzIDg2Mi44MjkgMzU0MC45NiA3ODMuMjM4IDM2MDEuMjMgODQyLjcwNCAzNTIyLjcgOTIyLjI5NSAzNjAyLjI5IDEwMDAuODIgMzU0Mi44MiAxMDYxLjA5IDM0NjMuMjMgOTgyLjU2NiAzMzg0LjcgMTA2Mi4xNiAzMzI0LjQzIDEwMDIuNjkgMzQwMi45NiA5MjMuMSAzMzIzLjM3IDg0NC41N1pcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYmFja3BhY2sgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMDAwIDEwMDBcIixcbiAgICBbXG4gICAgICBcIm05MDIuMDkgNzY5LjU1YzAuMzM1OTQtMzUuMTQ4IDAuMjAzMTItMTEyLjI5LTUuOTE0MS0xODguNTIgMC41MzkwNiAzMi4xMjUgMS4zNzg5IDYxLjUyMyAyLjQ3MjcgNzYuOTA2IDAuNjA5MzggOC44MjQyIDEuOTUzMSA1NS4wMjMgMy40NDE0IDExMS42MXpcIixcbiAgICAgIFwibTYwOC4xNCAxMDguNDVjMS4wNDMtMjQuNjk1LTAuMjg5MDYtNTEuMTQ1IDIwLjY0MS00OS42MzMgMTAuMDQzIDAuNzMwNDcgMjcuMzQ4IDMuMjg5MSA0OC43NTggNy41NzAzIDIzLjczNCA0Ljc1MzkgMjAuMzg3IDEzMy40NSAyMC4zODcgMTMzLjQ1bDg2LjA1MSAzMy40NTdjMi44MzItOTMuMTMzLTIwLjQ0OS0yMDEuMjgtNDMuNjgtMjA3LjktMzguOTMtMTEuMTAyLTk2LjA1OS0zNC4yNDYtMTUyLjgzLTIxLjgyOC0zNy45MzQgOC4yOTMtNDguMDg2IDE0Ny41NS00OC4wODYgMTQ3LjU1bDY2LjM4MyAxNy4zODdjMC4wMDM5MDYgMCAwLjY5OTIyLTIwLjU0MyAyLjM3ODktNjAuMDU5elwiLFxuICAgICAgXCJtMjA3Ljc2IDU3OS4yYzEzLjk4IDUuMTcxOSAzNy4wMiAxMi43NyA2NC4yOTcgMjEuMzI0IDIwLjM4Ny01Ni40NjEgNTQuOTYxLTk5LjUyNyA1NC45NjEtOTkuNTI3czcuOTgwNS0yMC45MTQgNDguMDctMTIuNDkyYzQwLjA5NCA4LjQxMDIgNDEuOTY1IDI2LjcxMSA0MS45NjUgMjYuNzExcy0yNS45NjkgNDIuMDk4LTUxLjIxNSA5OC44MzJjLTEuNTU4NiAzLjUwMzktMy42MTMzIDcuODU5NC01LjE3MTkgMTMuMjIzIDYzLjU2MiAxOC41MjcgMTI0Ljk4IDM0LjkzNCAxNDIuNjQgMzYuNTM5IDM0Ljc2NiAzLjE3OTcgMTIyLjA5IDYuOTk2MSAxMzguNjgtNzcuMDM5IDE2LjM2Ny04Mi45MzQgMzIuNTY2LTEzMy41MiA0Ni4zNjctMTY1LjExIDIuNzYxNy02Ljg5ODQgNS4yNDIyLTEyLjYxMyA3LjA2NjQtMTYuNzM4IDMuNzU3OC04LjQ5NjEgMTUuMTkxLTI1LjUzNSAzMS44MjQtNDIuMjM4di0wLjAyMzQzOGMwLjA0Njg3NS0wLjEyMTA5IDAuMTIxMDktMC4xNzk2OSAwLjIxNDg0LTAuMjAzMTIgMjIuMjIzLTIyLjE5OSA1My42NjQtNDMuNzAzIDg4Ljc2Ni00My41NyAxLjg0NzcgMCA0LjEwNTUgMC4yMjY1NiA2LjYxMzMgMC42MTMyOC0yMC42NTItMjIuOTY5LTQ0LjE4NC00Mi41MjctNjkuMjM4LTUyLjE4OC01LjY5OTItMi4xOTUzLTIxMi42Mi04My45NzctMjc0LjQ0LTc1LjIyNy0xLjc3NzMgMC4yNTM5MS0zLjQzMzYgMC40OTIxOS01LjAyNzMgMC43MTg3NSAzLTAuNDMzNTkgNS4wMjczLTAuNzE4NzUgNS4wMjczLTAuNzE4NzUtMC4wMDM5MDctMC4wMDM5MDYtMTQxLjczIDMuNTExNy0yMzUuNDUgOTcuMTU2LTQ4Ljk2MSA0OC45MS05MS45NDUgMTM2LjY2LTExOC45MyAyMjAuOTctMC4zNDc2NiAyMS4zOTggMjYuOTUzIDQ4LjI3NyA4Mi45OCA2OC45ODh6XCIsXG4gICAgICBcIm00ODQuMzUgNzI2LjY0Yy0yNy44NjMtNS4xMTMzLTc5LjYyMS0xOS4yOTctMTM0Ljc5LTM1LjYwNS04LjM5ODQgMzMuMjI3LTEuMjYxNyA5MC4zMDEtMS4yNjE3IDkwLjMwMXMtMTAuODQ4IDI1Ljg5NS01My42MDUgMTYuNDNjLTM2LjQzNC04LjA4OTgtMzUuNDk2LTM0LjM3OS0zNS40OTYtMzQuMzc5cy05LjMxMjUtNTMuMzUyLTEuMTA1NS0xMDAuMzFjLTUyLjUxMi0xNi41MzUtOTcuMTI5LTMxLjM3OS0xMTMuNTQtMzcuNjgtMTkuNzU0LTcuNTU4Ni0zMy45OTYtMTguMDk4LTQ0LjI1OC0yOS44NjctMC43NTc4MSA0LjY2OC0xLjQyOTcgMjMuNTItMi4wNjI1IDI4LjAwOC0zNy4yMTkgMjY1LjEgNDAuMDM1IDM3OS4yNyA0NS41MDggNDAzLjM4IDcuMzU1NSAzMi40MSAxNDguNTcgMTAwLjM3IDI4NC44OSAxNTAuMTYgNzkuMDc4IDI4Ljg4MyAxNjcuMzYgMjMuMjgxIDIwMi40MyAyMC43NjJsMi41NjY0LTAuMTQ0NTNjNS41NzgxLTEwMi41IDIwLjc3My0zNjkuMzIgMjguMjIzLTUzMi42MS0xMS44MDUgNTkuOTUzLTExMC43OSA3My43NzctMTc3LjUgNjEuNTYyelwiLFxuICAgICAgXCJtOTAyLjA5IDc2OS41NWMtMS40ODgzLTU2LjU5NC0yLjgyMDMtMTAyLjc3LTMuNDQ1My0xMTEuNjQtMS4wOTM4LTE1LjM1OS0xLjkzMzYtNDQuNzYyLTIuNDcyNy03Ni44OTUtNS40NjA5LTY3Ljg3MS0yMi45NTctMTQwLjcyLTM3LjkyMi0xNzguNTktMjUuMTUyLTYzLjc0Mi05OC4xOTUgMTYuMjExLTExOC44MiA2Ni41NTEtMjEuMzU5IDUyLjEyOS00MS41NzggNjUzLjAzLTQzLjU0NyA3MTIuNiA1MS0xMy4yODUgMTI0LjA1LTMyLjM1MiAxMzMuMDEtNDYuNDAyIDE4Ljk3My0yOS43MTEgMjkuMjU4LTU4LjQ3NyAzMy45OTYtODIuOTY5IDMuMTQ0NS0xNi4zMDkgNDUuMzI0LTMxLjU1OSA0NS4zMjQtMzEuNTU5cy0yLjk4ODMtMTI5LjYtNS42ODc1LTIzNC4xOWwtMC43NDIxOSAyLjc2MTdjMCAwLjAxOTUzMSAwLjIwMzEyLTcuMTkxNCAwLjMxMjUtMTkuNjcyelwiLFxuICAgICAgXCJtMTA4OS4xIDUwOC4yNXMtMTAuODEyLTEyOC43OS0xMy4yNjItMTUzLjgyYy01LjkyOTctNjAuNDQ1LTYwLjQ1Ny0yNTQuODQtMjQ2LjMxLTEwNS45bDQ5LjIzNCA1My43MTFzMTI1Ljk1LTExMy4xOCAxMzAuNyAxNTYuNWMwLjM5NDUzIDIyLjgyNCAxLjkwNjIgNTQuNzA3IDE1LjYzNyAyNDYuNTkgMTUuMTkxIDIxMi4xNS02Ny43NzcgMjEzLjMyLTY3Ljc3NyAyMTMuMzJsMy43NDIyIDkwLjIxNXMzMC44MTYtOC4wNjI1IDYyLjY0MS0yMS40NTdjNDUuMDM1LTE4Ljk3MyA4OC4xODgtOTguMzc1IDg4LjE4OC0yMTQuNzctMC4wMzkwNjItNDYuMDUxLTIyLjc5My0yNjQuNDEtMjIuNzkzLTI2NC40MXpcIixcbiAgICAgIFwibTQzOC4yNSAxNDguMTggNDEuMDktNi4zMTI1di0zNC43NzNsNy45MDYyLTI4LjQ0MXMtMzcuOTQ1IDE3LjM4Ny00OC45OTYgMzQuNzY2Yy0xMS4wNjIgMTcuMzg3LTE1LjgxNiAyNi44NjctMTUuODE2IDM0Ljc2NiAwIDcuOTA2MiAxNS44MTYtMC4wMDM5MDcgMTUuODE2LTAuMDAzOTA3elwiLFxuICAgIF0sXG4gICk7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IHZpZXcgPSAofmluamVjdCwgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy5FdmFsdWF0aW9uLnQpID0+IHtcbiAgbGV0IG1vZGFsID0gZGl2KH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy1tb2RhbFwiKV0pKTtcbiAgbGV0IHNldHRpbmcgPSAoaWNvbiwgbmFtZSwgY3VycmVudCwgYWN0aW9uOiBVcGRhdGVBY3Rpb24uc2V0dGluZ3NfYWN0aW9uKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy10b2dnbGVcIildKSxcbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9bmFtZSwgaWNvbiwgY3VycmVudCwgXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGUuU2V0KGFjdGlvbikpXG4gICAgICAgICksXG4gICAgICAgIHRleHQobmFtZSksXG4gICAgICBdLFxuICAgICk7XG4gIFtcbiAgICBtb2RhbChbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy1tb2RhbC10b3BcIildKSxcbiAgICAgICAgW1xuICAgICAgICAgIFdpZGdldHMuYnV0dG9uKEljb25zLngsIF8gPT5cbiAgICAgICAgICAgIGluamVjdChVcGRhdGUuU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcImhcIixcbiAgICAgICAgXCJzaG93IGZ1bGwgc3RlcCB0cmFjZVwiLFxuICAgICAgICBzZXR0aW5ncy5zdGVwcGVyX2hpc3RvcnksXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd1JlY29yZCksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCJ8XCIsXG4gICAgICAgIFwic2hvdyBjYXNlIGNsYXVzZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIs67XCIsXG4gICAgICAgIFwic2hvdyBmdW5jdGlvbiBib2RpZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19mbl9ib2RpZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcInhcIixcbiAgICAgICAgXCJzaG93IGZpeHBvaW50c1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2ZpeHBvaW50cyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Rml4cG9pbnRzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgICAgXCJzaG93IGNhc3RzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfY2FzdHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc3RzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIvCflI1cIixcbiAgICAgICAgXCJzaG93IGxvb2t1cCBzdGVwc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLij6/vuI9cIixcbiAgICAgICAgXCJzaG93IHN0ZXBwZXIgZmlsdGVyc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93RmlsdGVycyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLwn6SrXCIsXG4gICAgICAgIFwic2hvdyBoaWRkZW4gc3RlcHNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0hpZGRlblN0ZXBzKSxcbiAgICAgICksXG4gICAgXSksXG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc18oXCJtb2RhbC1iYWNrXCIpLFxuICAgICAgICAgIEF0dHIub25fbW91c2Vkb3duKF8gPT5cbiAgICAgICAgICAgIGluamVjdChVcGRhdGUuU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBbXSxcbiAgICApLFxuICBdO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBzZXFfYmFzaWNfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IFNlcUJhc2ljLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMTsgMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxLCB3aGljaCBpcyBpZ25vcmVkLiBUaGVuIHRoZSByaWdodCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCB0byAyLlwiLFxufTtcbi8vIFRPRE8gYXJlIHRoZXNlIHJlYWxseSB0aGUgY29ycmVjdCBtZXNzYWdlcy9leHBsYW5hdGlvbnNcbmxldCBzZXFfdGVzdF9leHBfZXggPSB7XG4gIHN1Yl9pZDogU2VxVGVzdCxcbiAgdGVybTogbWtfZXhhbXBsZShcInRlc3QgdHJ1ZSBlbmQ7IDNcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYW5kIHJlY29yZGVkIGFzIGEgcGFzc2luZyB0ZXN0IGJlY2F1c2UgdGhlIGJvZHkgb2YgdGhlIHRlc3QgaXMgdHJ1ZS4gVGhlbiB0aGUgcmlnaHQgZXhwcmVzc2lvbiBpcyBldmFsYXV0ZXMgdG8gMy5cIixcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHNlcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmV4cDFfaWQ6IElkLnQsIH5leHAyX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHAxKSwgZXhwMV9pZCksXG4gIChQaWVjZS5pZChfZXhwMiksIGV4cDJfaWQpLFxuXTtcbmxldCBzZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbbGVmdCBleHByZXNzaW9uXSglcykgaXMgZXZhbHVhdGVkLCB0aGVuIHRoZSBbcmlnaHQgZXhwcmVzc2lvbl0oJXMpIGlzIGV2YWx1YXRlZC5cIjtcbiAge1xuICAgIGlkOiBTZXFFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc2VxKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbc2VxX2Jhc2ljX2V4cF9leCwgc2VxX3Rlc3RfZXhwX2V4XSxcbiAgfTtcbn07XG5cbmxldCBzZXFzOiBncm91cCA9IHtpZDogU2VxRXhwLCBmb3JtczogW3NlcV9leHBdfTtcbiIsImxldCBmaWxsZWRfc2xpZGVzID0gW107XG5cbmxldCBlbXB0eTogU2NyYXRjaFNsaWRlLnBlcnNpc3RlbnRfc3RhdGUgPSB7XG4gIHppcHBlcjogXCIoKHNlbGVjdGlvbigoZm9jdXMgTGVmdCkoY29udGVudCgpKSkpKGJhY2twYWNrKCkpKHJlbGF0aXZlcygoc2libGluZ3MoKCkoKEdyb3V0KChpZCAwKShzaGFwZSBDb252ZXgpKSkpKSkoYW5jZXN0b3JzKCkpKSkoY2FyZXQgT3V0ZXIpKVwiLFxuICBiYWNrdXBfdGV4dDogXCJcIixcbn07XG5cbmxldCBudW1fZW1wdHkgPSA4O1xuXG5sZXQgaW5pdF9kYXRhID0gZmlsbGVkX3NsaWRlcyBAIExpc3QuaW5pdChudW1fZW1wdHksIF8gPT4gZW1wdHkpO1xuXG5hc3NlcnQoTGlzdC5sZW5ndGgoaW5pdF9kYXRhKSA+IDApO1xuXG5sZXQgaW5pdCA9ICgpID0+ICgwLCBpbml0X2RhdGEgfD4gTGlzdC5tYXAoU2NyYXRjaFNsaWRlLnVucGVyc2lzdCkpO1xuXG5sZXQgaW5pdF9udGggPSBuID0+IHtcbiAgbGV0IGRhdGEgPSBMaXN0Lm50aChpbml0X2RhdGEsIG4pO1xuICBTY3JhdGNoU2xpZGUudW5wZXJzaXN0KGRhdGEpO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5sZXQgbmFycmF0aXZlX2NlbGwgPSAoY29udGVudDogTm9kZS50KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsXCIpLFxuICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsLWNoYXB0ZXJcIiksIFtjb250ZW50XSldLFxuICApO1xuXG5sZXQgc2ltcGxlX2NlbGxfaXRlbSA9IChjb250ZW50OiBsaXN0KE5vZGUudCkpID0+XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCJdKSwgY29udGVudCk7XG5cbmxldCBjYXB0aW9uID0gKH5yZXN0OiBvcHRpb24oc3RyaW5nKT0/LCBib2xkZWQ6IHN0cmluZykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcImNlbGwtY2FwdGlvblwiXSldKSxcbiAgICBbc3Ryb25nKFt0ZXh0KGJvbGRlZCldKV0gQCAocmVzdCB8PiBPcHRpb24ubWFwKHRleHQpIHw+IE9wdGlvbi50b19saXN0KSxcbiAgKTtcblxubGV0IHNpbXBsZV9jZWxsX3ZpZXcgPSAoaXRlbXM6IGxpc3QodCkpID0+XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGxcIiksIGl0ZW1zKTtcblxubGV0IHJlcG9ydF9mb290ZXJfdmlldyA9IGNvbnRlbnQgPT4ge1xuICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVwb3J0XCJdKSwgY29udGVudCk7XG59O1xuXG5sZXQgdGVzdF9yZXBvcnRfZm9vdGVyX3ZpZXcgPSAofmluamVjdCwgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gIHJlcG9ydF9mb290ZXJfdmlldyhbVGVzdFZpZXcudGVzdF9zdW1tYXJ5KH5pbmplY3QsIH50ZXN0X3Jlc3VsdHMpXSk7XG59O1xuXG5sZXQgcGFuZWwgPSAofmNsYXNzZXM9W10sIGNvbnRlbnQsIH5mb290ZXI6IG9wdGlvbih0KSkgPT4ge1xuICBzaW1wbGVfY2VsbF92aWV3KFxuICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcInBhbmVsXCJdIEAgY2xhc3NlcyksIGNvbnRlbnQpXVxuICAgIEAgT3B0aW9uLnRvX2xpc3QoZm9vdGVyKSxcbiAgKTtcbn07XG5cbmxldCB0aXRsZV9jZWxsID0gdGl0bGUgPT4ge1xuICBzaW1wbGVfY2VsbF92aWV3KFtcbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRpdGxlLWNlbGxcIiksXG4gICAgICBbZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwidGl0bGUtdGV4dFwiKSwgW3RleHQodGl0bGUpXSldLFxuICAgICksXG4gIF0pO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbDtcblxudHlwZSBtb2RlbCA9IE1vZGVsUmVzdWx0LnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWN0aW9uID1cbiAgfCBTdGVwcGVyRWRpdG9yQWN0aW9uKGludCwgQWN0aW9uLnQpXG4gIHwgU3RlcHBlckFjdGlvbihVcGRhdGVBY3Rpb24uc3RlcHBlcl9hY3Rpb24pXG4gIHwgVG9nZ2xlU3RlcHBlcjtcblxubGV0IHVwZGF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBhY3Rpb24sIG1vZGVsKSA9PlxuICBzd2l0Y2ggKGFjdGlvbikge1xuICB8IFN0ZXBwZXJFZGl0b3JBY3Rpb24oaWR4LCBhY3Rpb24pID0+XG4gICAgTW9kZWxSZXN1bHQucGVyZm9ybSh+c2V0dGluZ3MsIGlkeCwgYWN0aW9uLCBtb2RlbClcbiAgfCBTdGVwcGVyQWN0aW9uKHN0ZXBwZXJfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc3RlcHBlcl9hY3Rpb24pIHtcbiAgICB8IFVwZGF0ZUFjdGlvbi5TdGVwRm9yd2FyZChpZHgpID0+IE1vZGVsUmVzdWx0LnN0ZXBfZm9yd2FyZChpZHgsIG1vZGVsKVxuICAgIHwgVXBkYXRlQWN0aW9uLlN0ZXBCYWNrd2FyZCA9PlxuICAgICAgTW9kZWxSZXN1bHQuc3RlcF9iYWNrd2FyZCh+c2V0dGluZ3M9c2V0dGluZ3MuZXZhbHVhdGlvbiwgbW9kZWwpXG4gICAgfCBVcGRhdGVBY3Rpb24uSGlkZVN0ZXBwZXIgPT4gTW9kZWxSZXN1bHQudG9nZ2xlX3N0ZXBwZXIofnNldHRpbmdzLCBtb2RlbClcbiAgICB9XG4gIHwgVG9nZ2xlU3RlcHBlciA9PiBNb2RlbFJlc3VsdC50b2dnbGVfc3RlcHBlcih+c2V0dGluZ3MsIG1vZGVsKVxuICB9O1xuXG5tb2R1bGUgVmlldyA9IHtcbiAgdHlwZSBldmVudCA9XG4gICAgfCBNYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLmNlbGwpXG4gICAgfCBNb3VzZVVwXG4gICAgfCBNb3VzZURvd247XG5cbiAgbGV0IGVycm9yX21zZyA9IChlcnI6IFByb2dyYW1SZXN1bHQuZXJyb3IpID0+XG4gICAgc3dpdGNoIChlcnIpIHtcbiAgICB8IEV2YXVsYXRvckVycm9yKGVycikgPT4gRXZhbHVhdG9yRXJyb3Iuc2hvdyhlcnIpXG4gICAgfCBVbmtub3duRXhjZXB0aW9uKHN0cikgPT4gc3RyXG4gICAgfCBUaW1lb3V0ID0+IFwiRXZhbHVhdGlvbiB0aW1lZCBvdXRcIlxuICAgIH07XG5cbiAgbGV0IHN0YXR1c19vZjogUHJvZ3JhbVJlc3VsdC50ID0+IHN0cmluZyA9XG4gICAgZnVuXG4gICAgfCBSZXN1bHRQZW5kaW5nID0+IFwicGVuZGluZ1wiXG4gICAgfCBSZXN1bHRPayhfKSA9PiBcIm9rXCJcbiAgICB8IFJlc3VsdEZhaWwoXykgPT4gXCJmYWlsXCJcbiAgICB8IE9mZihfKSA9PiBcIm9mZlwiO1xuXG4gIGxldCBzdGVwcGVyX3ZpZXcgPVxuICAgICAgKFxuICAgICAgICB+c2lnbmFsIGFzIF86IGV2ZW50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+aW5qZWN0OiBhY3Rpb24gPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3RfZ2xvYmFsOiBVcGRhdGUudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICAgIH5yZWFkX29ubHk6IGJvb2wsXG4gICAgICAgIHN0ZXBwZXI6IFN0ZXBwZXIudCxcbiAgICAgICkgPT4ge1xuICAgIGxldCBoaXN0b3J5ID1cbiAgICAgIFN0ZXBwZXIuZ2V0X2hpc3RvcnkofnNldHRpbmdzPXNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbiwgc3RlcHBlcik7XG4gICAgc3dpdGNoIChoaXN0b3J5KSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW2hkLCAuLi5fXSA9PlxuICAgICAgbGV0IGJ1dHRvbl9iYWNrID1cbiAgICAgICAgV2lkZ2V0cy5idXR0b25fZChcbiAgICAgICAgICBJY29ucy51bmRvLFxuICAgICAgICAgIGluamVjdChTdGVwcGVyQWN0aW9uKFN0ZXBCYWNrd2FyZCkpLFxuICAgICAgICAgIH5kaXNhYmxlZD1cbiAgICAgICAgICAgICFTdGVwcGVyLmNhbl91bmRvKH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sIHN0ZXBwZXIpLFxuICAgICAgICAgIH50b29sdGlwPVwiU3RlcCBCYWNrd2FyZHNcIixcbiAgICAgICAgKTtcbiAgICAgIGxldCBidXR0b25faGlkZV9zdGVwcGVyID1cbiAgICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9XCJTaG93IFN0ZXBwZXJcIiwgXCJzXCIsIHRydWUsIF8gPT5cbiAgICAgICAgICBpbmplY3QoU3RlcHBlckFjdGlvbihIaWRlU3RlcHBlcikpXG4gICAgICAgICk7XG4gICAgICBsZXQgdG9nZ2xlX3Nob3dfaGlzdG9yeSA9XG4gICAgICAgIFdpZGdldHMudG9nZ2xlKFxuICAgICAgICAgIH50b29sdGlwPVwiU2hvdyBIaXN0b3J5XCIsXG4gICAgICAgICAgXCJoXCIsXG4gICAgICAgICAgc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLnN0ZXBwZXJfaGlzdG9yeSxcbiAgICAgICAgICBfID0+XG4gICAgICAgICAgaW5qZWN0X2dsb2JhbChTZXQoRXZhbHVhdGlvbihTaG93UmVjb3JkKSkpXG4gICAgICAgICk7XG4gICAgICBsZXQgZXZhbF9zZXR0aW5ncyA9XG4gICAgICAgIFdpZGdldHMuYnV0dG9uKEljb25zLmdlYXIsIF8gPT5cbiAgICAgICAgICBpbmplY3RfZ2xvYmFsKFNldChFdmFsdWF0aW9uKFNob3dTZXR0aW5ncykpKVxuICAgICAgICApO1xuICAgICAgbGV0IChzdGF0aWNzLCBlZGl0b3IsIF8pID0gaGQuaGlkZGVuX2hpc3RvcnkgfD4gQWJhLmhkO1xuICAgICAgbGV0IGN1cnJlbnRfbW9kZWw6IFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLm1vZGVsID0ge1xuICAgICAgICBlZGl0b3I6IHtcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgc3RhdGljcyxcbiAgICAgICAgfSxcbiAgICAgICAgbmV4dF9zdGVwczpcbiAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgIChvcHRpb246IEV2YWx1YXRvclN0ZXAuRXZhbE9iai50KSA9PiBvcHRpb24uZF9sb2MgfD4gRXhwLnJlcF9pZCxcbiAgICAgICAgICAgIHN0ZXBwZXIubmV4dF9vcHRpb25zLFxuICAgICAgICAgICksXG4gICAgICB9O1xuICAgICAgbGV0IGN1cnJlbnQgPVxuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVzdWx0XCJdKSxcbiAgICAgICAgICByZWFkX29ubHlcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJlcXVpdlwiKSwgW05vZGUudGV4dChcIuKJoVwiKV0pLFxuICAgICAgICAgICAgICBTdGVwcGVyRWRpdG9yLlN0ZXBwYWJsZS52aWV3KFxuICAgICAgICAgICAgICAgIC8vIFRPRE86IE1heWJlIGdldCByaWQgb2YgdGhpcyBzaWduYWw/XG4gICAgICAgICAgICAgICAgfnNpZ25hbD1cbiAgICAgICAgICAgICAgICAgIChUYWtlU3RlcCh4KSkgPT4gaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEZvcndhcmQoeCkpKSxcbiAgICAgICAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLnZpZXcoXG4gICAgICAgICAgICAgICAgfnNpZ25hbD1cbiAgICAgICAgICAgICAgICAgIChUYWtlU3RlcCh4KSkgPT4gaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEZvcndhcmQoeCkpKSxcbiAgICAgICAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBidXR0b25fYmFjayxcbiAgICAgICAgICAgICAgZXZhbF9zZXR0aW5ncyxcbiAgICAgICAgICAgICAgdG9nZ2xlX3Nob3dfaGlzdG9yeSxcbiAgICAgICAgICAgICAgYnV0dG9uX2hpZGVfc3RlcHBlcixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICk7XG4gICAgICBsZXQgcHJldmlvdXNfc3RlcCA9XG4gICAgICAgICAgKH5oaWRkZW46IGJvb2wsIH5pZHggYXMgXywgc3RlcDogU3RlcHBlci5zdGVwX2luZm8pOiBsaXN0KE5vZGUudCkgPT4ge1xuICAgICAgICBsZXQgKHN0YXRpY3MsIGVkaXRvciwgXykgPSBzdGVwLmhpZGRlbl9oaXN0b3J5IHw+IEFiYS5oZDtcbiAgICAgICAgbGV0IG1vZGVsOiBTdGVwcGVyRWRpdG9yLlN0ZXBwZWQubW9kZWwgPSB7XG4gICAgICAgICAgZWRpdG9yOiB7XG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RlcDogc3RlcC5jaG9zZW5fc3RlcCwgLy8gVE9ET1tNYXR0XTogcmVmYWN0b3IgYXdheSBPcHRpb24uZ2V0XG4gICAgICAgICAgc3RlcF9pZDpcbiAgICAgICAgICAgIHN0ZXAuY2hvc2VuX3N0ZXBcbiAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEV2YWx1YXRvclN0ZXAuc3RlcCkgPT4geC5kX2xvYyB8PiBFeHAucmVwX2lkKSxcbiAgICAgICAgfTtcbiAgICAgICAgW1xuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoXG4gICAgICAgICAgICAgICAgW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0gQCAoaGlkZGVuID8gW1wiaGlkZGVuXCJdIDogW10pLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJlcXVpdlwiKSwgW05vZGUudGV4dChcIuKJoVwiKV0pLFxuICAgICAgICAgICAgICBTdGVwcGVyRWRpdG9yLlN0ZXBwZWQudmlldyhcbiAgICAgICAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJzdGVwcGVyLWp1c3RpZmljYXRpb25cIl0pLFxuICAgICAgICAgICAgICAgIHN0ZXAuY2hvc2VuX3N0ZXBcbiAgICAgICAgICAgICAgICB8PiBPcHRpb24ubWFwKChjaG9zZW5fc3RlcDogRXZhbHVhdG9yU3RlcC5zdGVwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgY2hvc2VuX3N0ZXAua25kIHw+IFN0ZXBwZXIuZ2V0X2p1c3RpZmljYXRpb24gfD4gTm9kZS50ZXh0XG4gICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHw+IE9wdGlvbi50b19saXN0LFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgfTtcbiAgICAgIChcbiAgICAgICAgKFxuICAgICAgICAgIHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbi5zdGVwcGVyX2hpc3RvcnlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBsZXQgc3RlcHM6IGxpc3QoKGJvb2wsIFN0ZXBwZXIuc3RlcF9pbmZvKSkgPVxuICAgICAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAgICAgc3RlcCA9PlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgKGZhbHNlLCBzdGVwKSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc2hvd19oaWRkZW5fc3RlcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID8gU3RlcHBlci5oaWRkZW5fc3RlcHNfb2ZfaW5mbyhzdGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBMaXN0Lm1hcCh4ID0+ICh0cnVlLCB4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgICAgICAgICAgICB8PiBMaXN0LnRsO1xuICAgICAgICAgICAgICBMaXN0Lm1hcGkoXG4gICAgICAgICAgICAgICAgKGlkeCwgKGhpZGRlbiwgc3RlcCkpID0+XG4gICAgICAgICAgICAgICAgICBwcmV2aW91c19zdGVwKH5oaWRkZW4sIH5pZHg9aWR4ICsgMSwgc3RlcCksXG4gICAgICAgICAgICAgICAgc3RlcHMgfD4gTGlzdC5yZXYsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfD4gTGlzdC5mbGF0dGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApXG4gICAgICAgIEAgW2N1cnJlbnRdXG4gICAgICApXG4gICAgICBAIChcbiAgICAgICAgc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLnNob3dfc2V0dGluZ3NcbiAgICAgICAgICA/IFNldHRpbmdzTW9kYWwudmlldyhcbiAgICAgICAgICAgICAgfmluamVjdD1pbmplY3RfZ2xvYmFsLFxuICAgICAgICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXVxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBsaXZlX2V2YWwgPVxuICAgICAgKFxuICAgICAgICB+c2lnbmFsOiBldmVudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdDogYWN0aW9uID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgICAgfnNlbGVjdGVkLFxuICAgICAgICB+bG9ja2VkLFxuICAgICAgICByZXN1bHQ6IE1vZGVsUmVzdWx0LmV2YWxfcmVzdWx0LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGVkaXRvciA9XG4gICAgICBzd2l0Y2ggKHJlc3VsdC5ldmFsdWF0aW9uLCByZXN1bHQucHJldmlvdXMpIHtcbiAgICAgIHwgKFJlc3VsdE9rKHJlcyksIF8pID0+IHJlcy5lZGl0b3JcbiAgICAgIHwgKFJlc3VsdFBlbmRpbmcsIFJlc3VsdE9rKHJlcykpID0+IHJlcy5lZGl0b3JcbiAgICAgIHwgXyA9PiByZXN1bHQuZWxhYi5kIHw+IEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKH5pbmxpbmU9ZmFsc2UpXG4gICAgICB9O1xuICAgIGxldCBjb2RlX3ZpZXcgPVxuICAgICAgQ29kZUVkaXRvci52aWV3KFxuICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgIGZ1blxuICAgICAgICAgIHwgTWFrZUFjdGl2ZSA9PiBzaWduYWwoTWFrZUFjdGl2ZShNYWluRWRpdG9yKSlcbiAgICAgICAgICB8IE1vdXNlVXAgPT4gc2lnbmFsKE1vdXNlVXApXG4gICAgICAgICAgfCBNb3VzZURvd24gPT4gc2lnbmFsKE1vdXNlRG93biksXG4gICAgICAgIH5pbmplY3Q9YSA9PiBpbmplY3QoU3RlcHBlckVkaXRvckFjdGlvbigwLCBhKSksXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgIH5oaWdobGlnaHRzPU5vbmUsXG4gICAgICAgIH5zb3J0PVNvcnQucm9vdCxcbiAgICAgICAge2VkaXRvciwgc3RhdGljczogQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzfSxcbiAgICAgICk7XG4gICAgbGV0IGV4bl92aWV3ID1cbiAgICAgIHN3aXRjaCAocmVzdWx0LmV2YWx1YXRpb24pIHtcbiAgICAgIHwgUmVzdWx0RmFpbChlcnIpID0+IFtcbiAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImVycm9yLW1zZ1wiXSksIFt0ZXh0KGVycm9yX21zZyhlcnIpKV0pLFxuICAgICAgICBdXG4gICAgICB8IF8gPT4gW11cbiAgICAgIH07XG4gICAgTm9kZS4oXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJjZWxsLWl0ZW1cIiwgXCJjZWxsLXJlc3VsdFwiXSksXG4gICAgICAgIGV4bl92aWV3XG4gICAgICAgIEAgW1xuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJzdGF0dXNcIiwgc3RhdHVzX29mKHJlc3VsdC5ldmFsdWF0aW9uKV0pLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcInNwaW5uZXJcIl0pLCBbXSksXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiZXFcIl0pLCBbdGV4dChcIuKJoVwiKV0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJyZXN1bHRcIiwgc3RhdHVzX29mKHJlc3VsdC5ldmFsdWF0aW9uKV0pLFxuICAgICAgICAgICAgW2NvZGVfdmlld10sXG4gICAgICAgICAgKSxcbiAgICAgICAgXVxuICAgICAgICBAIChcbiAgICAgICAgICBsb2NrZWRcbiAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgU3RlcHBlclwiLCBcInNcIiwgZmFsc2UsIF8gPT5cbiAgICAgICAgICAgICAgICBpbmplY3QoVG9nZ2xlU3RlcHBlcilcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBmb290ZXIgPVxuICAgICAgKFxuICAgICAgICB+c2lnbmFsLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgICB+cmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgICAgICB+c2VsZWN0ZWQ6IG9wdGlvbihpbnQpLFxuICAgICAgICB+bG9ja2VkLFxuICAgICAgKSA9PlxuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuZHluYW1pY3MgPT4gW11cbiAgICB8IE5vRWxhYiA9PiBbXVxuICAgIHwgRXZhbHVhdGlvbihyZXN1bHQpID0+IFtcbiAgICAgICAgbGl2ZV9ldmFsKFxuICAgICAgICAgIH5zaWduYWwsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5zZWxlY3RlZD1zZWxlY3RlZCA9PSBTb21lKDApLFxuICAgICAgICAgIH5sb2NrZWQsXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICApLFxuICAgICAgXVxuICAgIHwgU3RlcHBlcihzKSA9PlxuICAgICAgc3RlcHBlcl92aWV3KFxuICAgICAgICB+c2lnbmFsLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgIH5yZWFkX29ubHk9bG9ja2VkLFxuICAgICAgICBzLFxuICAgICAgKVxuICAgIH07XG5cbiAgbGV0IHRlc3Rfc3RhdHVzX2ljb25fdmlldyA9XG4gICAgICAofmZvbnRfbWV0cmljcywgaW5zdHMsIG1zOiBNZWFzdXJlZC5TaGFyZHMudCk6IG9wdGlvbihOb2RlLnQpID0+XG4gICAgc3dpdGNoIChtcykge1xuICAgIHwgWyhfLCB7b3JpZ2luOiBfLCBsYXN0fSksIC4uLl9dID0+XG4gICAgICBsZXQgc3RhdHVzID0gaW5zdHMgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMgfD4gVGVzdFN0YXR1cy50b19zdHJpbmc7XG4gICAgICBsZXQgcG9zID0gRGVjVXRpbC5hYnNfcG9zaXRpb24ofmZvbnRfbWV0cmljcywgbGFzdCk7XG4gICAgICBTb21lKFxuICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlc3VsdFwiLCBzdGF0dXNdKSwgcG9zXSksXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgdGVzdF9yZXN1bHRfbGF5ZXIgPVxuICAgICAgKH5mb250X21ldHJpY3MsIH5tZWFzdXJlZDogTWVhc3VyZWQudCwgdGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KVxuICAgICAgOiBsaXN0KE5vZGUudCkgPT5cbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAoKGlkLCBpbnN0cykpID0+XG4gICAgICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtZWFzdXJlZC50aWxlcykpIHtcbiAgICAgICAgfCBTb21lKG1zKSA9PiB0ZXN0X3N0YXR1c19pY29uX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdHMsIG1zKVxuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgdGVzdF9yZXN1bHRzLnRlc3RfbWFwLFxuICAgICk7XG5cbiAgdHlwZSByZXN1bHRfa2luZCA9XG4gICAgfCBOb1Jlc3VsdHNcbiAgICB8IFRlc3RSZXN1bHRzXG4gICAgfCBFdmFsUmVzdWx0cztcblxuICBsZXQgdmlldyA9XG4gICAgICAoXG4gICAgICAgIH5zaWduYWw6IGV2ZW50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+aW5qZWN0OiBhY3Rpb24gPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3RfZ2xvYmFsOiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgICB+c2VsZWN0ZWQ6IGJvb2wsXG4gICAgICAgIH5yZXN1bHRfa2luZD1FdmFsUmVzdWx0cyxcbiAgICAgICAgfmxvY2tlZDogYm9vbCxcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgKSA9PlxuICAgIHN3aXRjaCAocmVzdWx0X2tpbmQpIHtcbiAgICAvLyBOb3JtYWwgY2FzZTpcbiAgICB8IEV2YWxSZXN1bHRzIHdoZW4gc2V0dGluZ3MuY29yZS5keW5hbWljcyA9PlxuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIGZvb3RlcihcbiAgICAgICAgICB+c2lnbmFsLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfmluamVjdF9nbG9iYWwsXG4gICAgICAgICAgfnVpX3N0YXRlOiBNb2RlbC51aV9zdGF0ZSxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfnJlc3VsdD1tb2RlbCxcbiAgICAgICAgICB+c2VsZWN0ZWQ9c2VsZWN0ZWQgPyBTb21lKDApIDogTm9uZSxcbiAgICAgICAgICB+bG9ja2VkLFxuICAgICAgICApO1xuICAgICAgbGV0IHRlc3Rfb3ZlcmxheSA9IChlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgICAgICBzd2l0Y2ggKE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhtb2RlbCkpIHtcbiAgICAgICAgfCBTb21lKHJlc3VsdCkgPT5cbiAgICAgICAgICB0ZXN0X3Jlc3VsdF9sYXllcihcbiAgICAgICAgICAgIH5mb250X21ldHJpY3M9dWlfc3RhdGUuZm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgfm1lYXN1cmVkPWVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkLFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIClcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIH07XG4gICAgICAocmVzdWx0LCB0ZXN0X292ZXJsYXkpO1xuXG4gICAgLy8gSnVzdCBzaG93aW5nIGVsYWJvcmF0aW9uIGJlY2F1c2UgZXZhbHVhdGlvbiBpcyBvZmY6XG4gICAgfCBFdmFsUmVzdWx0cyB3aGVuIHNldHRpbmdzLmNvcmUuZWxhYm9yYXRlID0+XG4gICAgICBsZXQgcmVzdWx0ID0gW1xuICAgICAgICB0ZXh0KFwiRXZhbHVhdGlvbiBkaXNhYmxlZCwgc2hvd2luZyBlbGFib3JhdGlvbjpcIiksXG4gICAgICAgIHN3aXRjaCAoTW9kZWxSZXN1bHQuZ2V0X2VsYWJvcmF0aW9uKG1vZGVsKSkge1xuICAgICAgICB8IFNvbWUoZWxhYikgPT5cbiAgICAgICAgICBSZWFkT25seUVkaXRvci52aWV3KFxuICAgICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0b3I6IGVsYWIuZCB8PiBFeHBUb1NlZ21lbnQuZXhwX3RvX2VkaXRvcih+aW5saW5lPWZhbHNlKSxcbiAgICAgICAgICAgICAgc3RhdGljczogQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzLFxuICAgICAgICAgICAgfTogQ29kZUVkaXRvci5tb2RlbCxcbiAgICAgICAgICApXG4gICAgICAgIHwgTm9uZSA9PiB0ZXh0KFwiTm8gZWxhYm9yYXRpb24gZm91bmRcIilcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICAocmVzdWx0LCAoXyA9PiBbXSkpO1xuXG4gICAgLy8gTm90IHNob3dpbmcgYW55IHJlc3VsdHM6XG4gICAgfCBFdmFsUmVzdWx0c1xuICAgIHwgTm9SZXN1bHRzID0+IChbXSwgKF8gPT4gW10pKVxuXG4gICAgLy8gSnVzdCBzaG93aW5nIHRlc3QgcmVzdWx0cyAoc2Nob29sIG1vZGUpXG4gICAgfCBUZXN0UmVzdWx0cyA9PlxuICAgICAgbGV0IHRlc3RfcmVzdWx0cyA9IE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhtb2RlbCk7XG4gICAgICBsZXQgdGVzdF9vdmVybGF5ID0gKGVkaXRvcjogRWRpdG9yLnQpID0+XG4gICAgICAgIHN3aXRjaCAoTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKG1vZGVsKSkge1xuICAgICAgICB8IFNvbWUocmVzdWx0KSA9PlxuICAgICAgICAgIHRlc3RfcmVzdWx0X2xheWVyKFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcz11aV9zdGF0ZS5mb250X21ldHJpY3MsXG4gICAgICAgICAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgKVxuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfTtcbiAgICAgIChcbiAgICAgICAgW1xuICAgICAgICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgICAgICAgIFRlc3RWaWV3LnRlc3Rfc3VtbWFyeSh+aW5qZWN0PWluamVjdF9nbG9iYWwsIH50ZXN0X3Jlc3VsdHMpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgICB0ZXN0X292ZXJsYXksXG4gICAgICApO1xuICAgIH07XG59O1xuXG5sZXQgdmlldyA9IFZpZXcudmlldztcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG50eXBlIG1vZGVsID0ge1xuICBlZGl0b3I6IENvZGVFZGl0b3IubW9kZWwsXG4gIHJlc3VsdDogTW9kZWxSZXN1bHQudCxcbn07XG5cbnR5cGUgYWN0aW9uID1cbiAgfCBNYWluRWRpdG9yKENvZGVFZGl0b3IuYWN0aW9uKVxuICB8IFJlc3VsdEFjdGlvbihDZWxsUmVzdWx0LmFjdGlvbik7XG5cbmxldCB1cGRhdGUgPSBSZWFkT25seUVkaXRvci51cGRhdGU7XG5cbmxldCBjYWxjdWxhdGUgPSBSZWFkT25seUVkaXRvci5jYWxjdWxhdGU7XG5cbnR5cGUgZXZlbnQgPSBDb2RlRWRpdG9yLmV2ZW50O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfnNlbGVjdDogRWRpdG9ycy5TZWxlY3Rpb24uY2VsbCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+aGlnaGxpZ2h0czogb3B0aW9uKENvbG9yU3RlcHMuY29sb3JNYXApLFxuICAgICAgfnNlbGVjdGVkOiBvcHRpb24oRWRpdG9ycy5TZWxlY3Rpb24uY2VsbCksXG4gICAgICB+Y2FwdGlvbjogb3B0aW9uKE5vZGUudCk9PyxcbiAgICAgIH5zb3J0PT8sXG4gICAgICB+cmVzdWx0X2tpbmQ9PyxcbiAgICAgIH5sb2NrZWQ9ZmFsc2UsXG4gICAgICBtb2RlbCxcbiAgICApID0+IHtcbiAgbGV0IChmb290ZXIsIG92ZXJsYXlzKSA9XG4gICAgQ2VsbFJlc3VsdC52aWV3KFxuICAgICAgfnNpZ25hbD1cbiAgICAgICAgZnVuXG4gICAgICAgIHwgTWFrZUFjdGl2ZShhKSA9PiBzZWxlY3QoYSlcbiAgICAgICAgfCBNb3VzZVVwID0+IGluamVjdF9nbG9iYWwoVXBkYXRlLlNldE1ldGEoTW91c2V1cCkpXG4gICAgICAgIHwgTW91c2VEb3duID0+IGluamVjdF9nbG9iYWwoVXBkYXRlLlNldE1ldGEoTW91c2Vkb3duKSksXG4gICAgICB+aW5qZWN0PWEgPT4gaW5qZWN0KFJlc3VsdEFjdGlvbihhKSksXG4gICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgIH51aV9zdGF0ZSxcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIH5zZWxlY3RlZD1zZWxlY3RlZCA9PSBTb21lKFJlc3VsdCgwKSksXG4gICAgICB+cmVzdWx0X2tpbmQ/LFxuICAgICAgfmxvY2tlZCxcbiAgICAgIG1vZGVsLnJlc3VsdCxcbiAgICApO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICBcImNlbGxcIixcbiAgICAgICAgT3B0aW9uLmlzX3NvbWUoc2VsZWN0ZWQpID8gXCJzZWxlY3RlZFwiIDogXCJkZXNlbGVjdGVkXCIsXG4gICAgICAgIGxvY2tlZCA/IFwibG9ja2VkXCIgOiBcInVubG9ja2VkXCIsXG4gICAgICBdKSxcbiAgICBPcHRpb24udG9fbGlzdChjYXB0aW9uKVxuICAgIEAgW1xuICAgICAgQ29kZUVkaXRvci52aWV3KFxuICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgIGxvY2tlZFxuICAgICAgICAgICAgPyBfID0+IFVpX2VmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgIDogZnVuXG4gICAgICAgICAgICAgIHwgTW91c2VVcCA9PiBpbmplY3RfZ2xvYmFsKFVwZGF0ZS5TZXRNZXRhKE1vdXNldXApKVxuICAgICAgICAgICAgICB8IE1vdXNlRG93biA9PiBpbmplY3RfZ2xvYmFsKFVwZGF0ZS5TZXRNZXRhKE1vdXNlZG93bikpXG4gICAgICAgICAgICAgIHwgTWFrZUFjdGl2ZSA9PiBzZWxlY3QoRWRpdG9ycy5TZWxlY3Rpb24uTWFpbkVkaXRvciksXG4gICAgICAgIH5pbmplY3Q9XG4gICAgICAgICAgbG9ja2VkXG4gICAgICAgICAgICA/IF8gPT4gVWlfZWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgOiAoYWN0aW9uID0+IGluamVjdF9nbG9iYWwoUGVyZm9ybUFjdGlvbihhY3Rpb24pKSksXG4gICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICB+c2VsZWN0ZWQ9c2VsZWN0ZWQgPT0gU29tZShNYWluRWRpdG9yKSxcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5vdmVybGF5cz1vdmVybGF5cyhtb2RlbC5lZGl0b3IuZWRpdG9yKSxcbiAgICAgICAgfnNvcnQ/LFxuICAgICAgICBtb2RlbC5lZGl0b3IsXG4gICAgICApLFxuICAgIF1cbiAgICBAIGZvb3RlcixcbiAgKTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5zZWxlY3QsXG4gICAgICB+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgfnN0YXRpY3M6IENhY2hlZFN0YXRpY3Muc3RhdGljcyxcbiAgICAgIH5zZWxlY3RlZCxcbiAgICAgIGVkaXRvcjogRWRpdG9yLnQsXG4gICAgKSA9PiB7XG4gIGxldCByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIHJlc3VsdF9rZXkpIHw+IE9wdGlvbi5nZXQ7XG4gIFtcbiAgICBDZWxsRWRpdG9yLnZpZXcoXG4gICAgICB+c2VsZWN0LFxuICAgICAgfmluamVjdD1cbiAgICAgICAgZnVuXG4gICAgICAgIHwgTWFpbkVkaXRvcihhKSA9PiBpbmplY3QoUGVyZm9ybUFjdGlvbihhKSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckFjdGlvbihhKSkgPT5cbiAgICAgICAgICBpbmplY3QoU3RlcHBlckFjdGlvbihyZXN1bHRfa2V5LCBhKSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oVG9nZ2xlU3RlcHBlcikgPT4gaW5qZWN0KFRvZ2dsZVN0ZXBwZXIocmVzdWx0X2tleSkpXG4gICAgICAgIHwgUmVzdWx0QWN0aW9uKFN0ZXBwZXJFZGl0b3JBY3Rpb24oXywgYSkpID0+XG4gICAgICAgICAgaW5qZWN0KFBlcmZvcm1BY3Rpb24oYSkpLFxuICAgICAgfmluamVjdF9nbG9iYWw9aW5qZWN0LFxuICAgICAgfnVpX3N0YXRlLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICB+c2VsZWN0ZWQsXG4gICAgICB+bG9ja2VkPWZhbHNlLFxuICAgICAge1xuICAgICAgICBlZGl0b3I6IHtcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgc3RhdGljcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSxcbiAgICApLFxuICBdO1xufTtcblxubGV0IGV4cG9ydF9idXR0b24gPSBzdGF0ZSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGpzb25fZGF0YSA9IFNjcmF0Y2hTbGlkZS5leHBvcnQoc3RhdGUpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX2pzb24oXCJoYXplbC1zY3JhdGNocGFkXCIsIGpzb25fZGF0YSk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBTY3JhdGNocGFkXCIsXG4gICk7XG5sZXQgaW1wb3J0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZChcbiAgICBcImltcG9ydC1zY3JhdGNocGFkXCIsXG4gICAgSWNvbnMuc3RhcixcbiAgICBmaWxlID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsZSkge1xuICAgICAgfCBOb25lID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZVxuICAgICAgfCBTb21lKGZpbGUpID0+IGluamVjdChVcGRhdGVBY3Rpb24uSW5pdEltcG9ydFNjcmF0Y2hwYWQoZmlsZSkpXG4gICAgICB9XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkltcG9ydCBTY3JhdGNocGFkXCIsXG4gICk7XG5cbmxldCByZXNldF9idXR0b24gPSBpbmplY3QgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMudHJhc2gsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgdGhpcyBzY3JhdGNocGFkPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlLlwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlJlc2V0Q3VycmVudEVkaXRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgICB9O1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJSZXNldCBTY3JhdGNocGFkXCIsXG4gICk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3RwYXQgPSB0cGF0KFwidF92YXJcIik7XG5sZXQgX3R5cF9hcmcgPSB0eXAoXCJ0eV9hcmdcIik7XG5sZXQgcmVjX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+dHBhdF9pZDogSWQudCwgfnRib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90cGF0KSwgdHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIHRib2R5X2lkKSxcbl07XG5sZXQgcGVhbm9fZXggPSB7XG4gIHN1Yl9pZDogUmVjVHlwLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBQZWFubyA9IFxcbiByZWMgUCAtPiBaICsgUyhQKSBcXG4gaW4gUyhTKFMoWikpKVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdHlwZSBvZiB0aGUgUGVhbm8gbnVtYmVycyBhbmQgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgMy5cIixcbn07XG5sZXQgcmVjX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHJlY3Vyc2l2ZSB0eXBlIGNsYXNzaWZpZXMgdGhlIGxlYXN0IGZpeGVkIHBvaW50IG9mIHRoZSBwb2x5bW9ycGhpYyB0eXBlIG92ZXIgdGhlIFsqdHlwZSB2YXJpYWJsZSpdKCVzKSBvZiBib2R5IFsqaW5zdGFudGlhdGVkIHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogUmVjVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbWtfcmVjKFtbc3BhY2UoKSwgX3RwYXQsIHNwYWNlKCldXSksIF90eXBfYXJnXSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfdHBhdCksIFtfdHlwX2FyZ10pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3BlYW5vX2V4XSxcbiAgfTtcbn07XG5cbmxldCByZWNfOiBncm91cCA9IHtpZDogUmVjVHlwLCBmb3JtczogW3JlY190eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbi8qIChBKSBVc2UgdGhpcyBmaWxlIGFzIGFuIGV4YW1wbGUgZm9yIGFkZGluZyBhIG5ldyBmb3JtIHRvIEV4cGxhaW5UaGlzLlxuICogWW91IHNob3VsZCBiZSBhYmxlIHRvIGNvcHktcGFzdGUgdGhpcyBmaWxlIGFuZCBtb2RpZnkgaXQgdG8gYWRkIGEgbmV3IGZvcm0gKi9cblxubGV0IHNpbmdsZSA9ICh+YXJnX2lkOiBJZC50LCB+Zm5faWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIC8qIChCKSBZb3UnbGwgbmVlZCB0byBhZGQgbmV3IGNhc2VzIHRvIEV4cGxhaW5UaGlzRm9ybS5yZSBmb3IgdGhlIG5ldyBmb3JtXG4gICAqIHRvIHJlcHJlc2VudCBhIGdyb3VwX2lkIGFuZCBmb3JtX2lkLiBUaGlzIFNpbXBsZSBzdHlsZSBpcyBzcGVjaWFsaXplZFxuICAgKiB0byBzaW5nbGV0b24gZ3JvdXBzLiBJbiBnZW5lcmFsLCB0aGUgZ3JvdXBfaWQgbmVlZHMgdG8gYmUgdW5pcXVlLCBhbmRcbiAgICogZm9ybV9pZHMgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEgZ3JvdXAuIFRoZXNlIGlkcyBhcmUgdXNlZCB0byB0cmFja1xuICAgKiBFeHBsYWluVGhpcyBwZXJzaXN0ZW50IHN0YXRlLiAqL1xuICBncm91cF9pZDogUGlwZWxpbmVFeHAsXG4gIGZvcm1faWQ6IFBpcGVsaW5lRXhwLFxuICAvKiAoQykgVGhlIGFic3RyYWN0IGZpZWxkIGRlZmluZXMgYW4gYWJzdHJhY3QgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdGhlXG4gICAqIG5ldyBmb3JtLiBZb3UnbGwgbmVlZCB0byBwcm92aWRlIHBhaXJzIGFzc29jaWF0aW5nIGFueSByZXByZXNlbnRhdGl2ZVxuICAgKiBzdWJ0ZXJtcyBvZiB0aGUgZXhlbXBsYXIgKGUuZy4gXCJlX2FyZ1wiIGFuZCBcImVfZnVuXCIgYmVsb3cpIHdpdGggdGhlXG4gICAqIGNvbmNyZXRlIHN1YnRlcm1zIG9mIHRoZSB0ZXJtIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCAoaGVyZSwgYXJnX2lkXG4gICAqIGFuZCBmbl9pZCkuIFlvdSdsbCB0aGVuIG5lZWQgYSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBzZWdtZW50XG4gICAqIHJlcHJlc2VudGluZyB5b3VyIGFic3RyYWN0LiBUaGlzIGlzIGRvbmUgaW4gdGhpcyBpbmRpcmVjdCB3YXkgc29cbiAgICogYXMgdG8gYXNzb2NpYXRlIHJlcHJlc2VudGF0aXZlIGFuZCBjb25jcmV0ZSBzdWJ0ZXJtcyBpZHMgZm9yXG4gICAqIHN5bnRheCBoaWdobGlnaHRpbmcgcHVycG9zZXMuICovXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcImVfYXJnXCIsIGFyZ19pZCksIChcImVfZnVuXCIsIGZuX2lkKSwgKGVfYXJnJywgZV9mbicpID0+XG4gICAgICBbZV9hcmcnLCBzcGFjZSgpLCBwaXBlbGluZSgpLCBzcGFjZSgpLCBlX2ZuJ11cbiAgICApLFxuICAvKiAoRCkgVGhlIGV4cGxhbmF0aW9uIHdoaWNoIHdpbGwgYXBwZWFyIGluIHRoZSBzaWRlYmFyIGJlbG93IHRoZSBhYnN0cmFjdCAqL1xuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiUGFzc2VzIHRoZSBbKmFyZ3VtZW50Kl0oJXMpIHRvIHRoZSBbKmZ1bmN0aW9uKl0oJXMpLlwiLFxuICAgICAgYXJnX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIGZuX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICAvKiAoRSkgQWRkaXRpb25hbCBtb3JlIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhc3NvY2lhdGVkIGV4cGxhbmF0aW9ucyAqL1xuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogUGlwZWxpbmUxLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcIjEgfD4gZnVuIHggLT4geCArIDFcIiksXG4gICAgICBtZXNzYWdlOiB7fFxuICAgICAgICAgICAgICBUaGUgYXJndW1lbnQgMSBpcyBwYXNzZWQgdG8gYW4gaW5jcmVtZW50IGZ1bmN0aW9uLCBhbmQgdGhlIGVudGlyZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlxuICAgICAgICAgICAgICBUaGUgcGlwZWxpbmUgb3BlcmF0b3IgaXMgdXNlZnVsIGZvciBjaGFpbmluZyBmdW5jdGlvbnMgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIHx9LFxuICAgIH0sXG4gIF0sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGZ1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRnVuQXAsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIoZnVuIHggLT4geCkoMSlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGlkZW50aXR5IGZ1bmN0aW9uIGlzIGFwcGxpZWQgdG8gMS4gVGhlIGFyZ3VtZW50IHggaXMgYm91bmQgdG8gMSBpbiB0aGUgZnVuY3Rpb24gYm9keSBhbmQgdGhlIGJvZHkgZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xuLy8gVE9ETyBIYXMgYSByZWQgYm94IGFyb3VuZCBpdCBpbiB0aGUgcmVzdWx0XG5sZXQgY29uYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBDb25BcCxcbiAgdGVybTogbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG5pbiBTb21lKDEpXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBjb25zdHJ1Y3RvciBTb21lIGlzIGFwcGxpZWQgdG8gMSwgd2hpY2ggZXZhbHVhdGVzIHRvIFNvbWUoMSkuXCIsXG59O1xubGV0IGRlZmVycmVkX2Z1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRGVmZXJyZWRBcCxcbiAgdGVybTpcbiAgICBta19leGFtcGxlKFxuICAgICAgXCJsZXQgcGx1cyA9IGZ1biAoeCwgeSkgLT4geCArIHkgaW5cXG5sZXQgaW5jciA9IHBsdXMoXywgMSkgaW5cXG5pbmNyKDUpXCIsXG4gICAgKSxcbiAgbWVzc2FnZTogXCJUaGUgcGx1cyBmdW5jdGlvbiBpcyBwYXJ0aWFsbHkgYXBwbGllZC4gVGhlIGFyZ3VtZW50IHkgaXMgYm91bmQgdG8gMSBpbiB0aGUgZnVuY3Rpb24gYm9keS4gVGhlIGRlZmVycmVkIGFyZ3VtZW50IHggaXMgbm90IGFwcGxpZWQgdW50aWwgaW4gdGhlIGZ1bGwgZnVuY3Rpb24gYXBwbGljYXRpb24sIGluY3IoNSksIHdoZXJlIGl0J3MgYm91bmQgdG8gNS4gVGhlIHBhcnRpYWwgYXBwbGljYXRpb24gZXZhbHVhdGVzIHRvIGEgbmV3IGZ1bmN0aW9uLCAoZnVuIHggLT4geCArIDEpLlwiLFxufTtcbmxldCBfZXhwX2Z1biA9IGV4cChcImVfZnVuXCIpO1xubGV0IF9leHBfYXJnID0gZXhwKFwiZV9hcmdcIik7XG5sZXQgZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eF9pZDogSWQudCwgfmFyZ19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2Z1biksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBmdW5hcHBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFwcGxpZXMgdGhlIFsqZnVuY3Rpb24qXSglcykgdG8gdGhlIFsqYXJndW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogRnVuQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX2Z1biwgbWtfYXBfZXhwKFtbX2V4cF9hcmddXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmdW5hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cF9jb24gPSBleHAoXCJlX2NvblwiKTtcbmxldCBfZXhwX2FyZyA9IGV4cChcImVfYXJnXCIpO1xubGV0IGNvbmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnhfaWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9jb24pLCB4X2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfYXJnKSwgYXJnX2lkKSxcbl07XG5sZXQgY29uYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKmAlc2AgY29uc3RydWN0b3IqXSglcykgdG8gdGhlIFsqYXJndW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQ29uQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX2NvbiwgbWtfYXBfZXhwKFtbX2V4cF9hcmddXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cF9mdW4gPSBleHAoXCJlX2Z1blwiKTtcbmxldCBfZXhwX2RlZmVycmFsID0gZGVmZXJyYWwoKTtcbmxldCBkZWZlcnJlZF9mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54X2lkOiBJZC50LCB+ZGVmZXJyZWRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9mdW4pLCB4X2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmZXJyYWwpLCBkZWZlcnJlZF9pZCksXG5dO1xubGV0IGRlZmVycmVkX2Z1bmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWypmdW5jdGlvbipdKCVzKSB0byB0aGUgWypzdXBwbGllZCBhcmd1bWVudHMqXSglcykuIFRoZSBbKmRlZmVycmVkIGFyZ3VtZW50cypdKCVzKSBjYW4gYmUgYXBwbGllZCBpbiBmdXR1cmUgYXBwbGljYXRpb25zLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBEZWZlcnJlZEFwRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfZXhwX2Z1bixcbiAgICAgIG1rX2FwX2V4cChbXG4gICAgICAgIFtcbiAgICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgICAgY29tbWEsXG4gICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICBfZXhwX2RlZmVycmFsLFxuICAgICAgICAgIGNvbW1hLFxuICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgZXhwKFwiLi4uXCIpLFxuICAgICAgICBdLFxuICAgICAgXSksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZGVmZXJyZWRfZnVuYXBwX2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgZnVuYXBzOiBncm91cCA9IHtpZDogRnVuQXBFeHAsIGZvcm1zOiBbZnVuYXBwX2V4cF19O1xuXG5sZXQgY29uYXBzOiBncm91cCA9IHtpZDogQ29uQXBFeHAsIGZvcm1zOiBbY29uYXBwX2V4cF19O1xuXG5sZXQgZGVmZXJyZWRhcHM6IGdyb3VwID0ge2lkOiBEZWZlcnJlZEFwRXhwLCBmb3JtczogW2RlZmVycmVkX2Z1bmFwcF9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgYXBfcGF0X2NvbG9yaW5nX2lkcyA9ICh+Y29uX2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfYXJnKSwgYXJnX2lkKSxcbl07XG5sZXQgYXBfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aXRoIGFuICphcmd1bWVudCogbWF0Y2hpbmcgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzICpjb25zdHJ1Y3RvciBhcHBsaWNhdGlvbiBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBBcFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfY29uLCBta19hcF9wYXQoW1tfcGF0X2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYXA6IGdyb3VwID0ge2lkOiBBcFBhdCwgZm9ybXM6IFthcF9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHlwX2FyZyA9IHR5cChcInR5X2FyZ1wiKTtcbmxldCBfdHlwX291dCA9IHR5cChcInR5X291dFwiKTtcbmxldCBhcnJvd190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmFyZ19pZDogSWQudCwgfnJlc3VsdF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIGFyZ19pZCksXG4gIChQaWVjZS5pZChfdHlwX291dCksIHJlc3VsdF9pZCksXG5dO1xubGV0IGFycm93X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGFycm93IHR5cGUgY2xhc3NpZmllcyBmdW5jdGlvbnMgd2l0aCBbKmFyZ3VtZW50IHR5cGUqXSglcykgYW5kIFsqb3V0cHV0IHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQXJyb3dUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfdHlwX2FyZywgc3BhY2UoKSwgYXJyb3coKSwgc3BhY2UoKSwgX3R5cF9vdXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90eXBfb3V0KSwgW3R5cChcInR5X291dFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF90eXBfYXJnMSA9IHR5cChcInR5X2FyZzFcIik7XG5sZXQgX3R5cF9hcmcyID0gdHlwKFwidHlfYXJnMlwiKTtcbmxldCBfdHlwX291dCA9IHR5cChcInR5X291dFwiKTtcbmxldCBhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5hcmcxX2lkOiBJZC50LCB+YXJnMl9pZDogSWQudCwgfnJlc3VsdF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2FyZzEpLCBhcmcxX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfYXJnMiksIGFyZzJfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9vdXQpLCByZXN1bHRfaWQpLFxuXTtcbmxldCBhcnJvdzNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgYXJyb3cgdHlwZSBjbGFzc2lmaWVzIGZ1bmN0aW9ucyB3aXRoIFsqZmlyc3QgYXJndW1lbnQgdHlwZSpdKCVzKSwgWypzZWNvbmQgYXJndW1lbnQgdHlwZSpdKCVzKSwgYW5kIFsqb3V0cHV0IHR5cGUqXSglcykuXCI7XG4gIGxldCBhcnJvdzIgPSBhcnJvdygpO1xuICB7XG4gICAgaWQ6IEFycm93M1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3R5cF9hcmcxLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGFycm93KCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9hcmcyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGFycm93MixcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX291dCxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChhcnJvdzIpLCBbdHlwKFwidHlfYXJnMlwiKSwgYXJyb3coKSwgdHlwKFwidHlfb3V0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBhcnJvdzogZ3JvdXAgPSB7aWQ6IEFycm93VHlwLCBmb3JtczogW2Fycm93X3R5cF19O1xuXG5sZXQgYXJyb3czOiBncm91cCA9IHtpZDogQXJyb3czVHlwLCBmb3JtczogW2Fycm93M190eXAsIGFycm93X3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSA9IHtcbiAgc3ViX2lkOiBDYXNlV2lsZFNpbXBsZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImNhc2UgMSBcXG58IDIgPT4gMyBcXG58IF8gPT4gNCBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzIDEuIFNpbmNlIHRoZSBzY3J1dGluZWUgZG9lcyBub3QgbWF0Y2ggdGhlIHRoZSBmaXJzdCBwYXR0ZXJuIDIuIFNpbmNlIHRoZSBzY3J1dGluZWUgZG9lcyBtYXRjaCB0aGUgc2Vjb25kIHBhdHRlcm4gd2hpY2ggaXMgYSB3aWxkY2FyZCwgdGhlIHNlY29uZCBicmFuY2ggaXMgdGFrZW4uIFRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0aGUgc2Vjb25kIGNsYXVzZSA0LlwiLFxufTtcbmxldCBjYXNlX2V4YW1wbGVfd2lsZF90dXBsZSA9IHtcbiAgc3ViX2lkOiBDYXNlV2lsZFR1cGxlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAoMSwgMikgXFxufCAoXywgMikgPT4gMyBcXG58IF8gPT4gNCBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzICgxLCAyKS4gU2luY2UgdGhlIHNjcnV0aW5lZSBtYXRjaGVzIHRoZSBmaXJzdCBwYXR0ZXJuIChfLCAyKSwgdGhlIGZpcnN0IGJyYW5jaCBpcyB0YWtlbi4gVGhpcyBwYXR0ZXJuIGlzIG1hdGNoZWQgYmVjYXVzZSB0aGUgZmlyc3QgZWxlbWVudCAxIG1hdGNoZXMgdGhlIGZpcnN0IGVsZW1lbnQgcGF0dGVybiwgd2hpY2ggaXMgYSB3aWxkY2FyZCwgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCAyIG1hdGNoZXMgdGhlIHNlY29uZCBlbGVtZW50IHBhdHRlcm4gMi4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBjbGF1c2UgMy5cIixcbn07XG5sZXQgY2FzZV9leGFtcGxlX2ludCA9IHtcbiAgc3ViX2lkOiBDYXNlSW50LFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAxIFxcbnwgMSA9PiAxLjEgXFxufCAyID0+IDIuMiBcXG58IF8gPT4gMy4zIFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgMS4gU2luY2UgdGhlIHNjcnV0aW5lZSBtYXRjaGVzIHRoZSBmaXJzdCBwYXR0ZXJuLCB0aGUgZmlyc3QgYnJhbmNoIGlzIHRha2VuLCBhbmQgdGhlIGNhc2UgZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBjbGF1c2UuXCIsXG59O1xubGV0IGNhc2VfZXhhbXBsZV9ib29sID0ge1xuICBzdWJfaWQ6IENhc2VCb29sLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSBmYWxzZSBcXG58IHRydWUgPT4gMSBcXG58IGZhbHNlID0+IDIgXFxuZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBzY3J1dGluZWUgb2YgdGhlIGNhc2UgZXhwcmVzc2lvbiBpcyBmYWxzZS4gVGhlIHNjcnV0aW5lZSBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgcGF0dGVybiBidXQgZG9lcyBtYXRjaCB0aGUgc2Vjb25kIHBhdHRlcm4sIHNvIHRoZSBzZWNvbmQgYnJhbmNoIGlzIHRha2VuLlwiLFxufTtcbi8vIFRPRE8gLSBJIGRvbid0IHRoaW5rIGNoYW5naW5nIHNwZWNpZmljaXR5IG9uIHRoZSBudW1iZXIgb2YgY2FzZXMgaXMgcmVhbGx5IHRoZSBtb3N0XG4vLyBiZW5lZmljaWFsIHNwZWNpZmljaXR5IGNoYW5nZSAtIEkgdGhpbmsgaW5zdGVhZCBoYXZlIGdlbmVyaWMgYXQgdG9wIGxldmVsXG4vLyBhbmQgdGhlbiBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHNldHVwIGZvciBzcGVjaWZpYyB0aGF0IGlzIGNyZWF0ZWQgbW9yZVxuLy8gZHluYW1pY2FsbHkgY2FsbGluZyBzZXR1cCBtZXRob2RzIGhlcmUgYnV0IG1vcmVcbi8vIHdvcmsgZG9uZSBpbiB0aGUgRXhwbGFpblRoaXMgY29kZSAtIG1heWJlIGp1c3QgdXAgdG8gMyBvciA0IGJyYW5jaGVzP1xubGV0IF9leHBfc2NydXQgPSBleHAoXCJlX3NjcnV0XCIpO1xubGV0IGNhc2VfZXhwX2NvbG9yaW5nX2lkcyA9ICh+c2NydXRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9zY3J1dCksIHNjcnV0X2lkKSxcbl07XG5sZXQgY2FzZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ29uc2lkZXIgZWFjaCBicmFuY2ggaW4gb3JkZXIuIEZvciB0aGUgZmlyc3QgYnJhbmNoIHdpdGggYSAqcGF0dGVybiogdGhhdCBtYXRjaGVzIHRoZSBbKnNjcnV0aW5lZSpdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBjb3JyZXNwb25kaW5nICpjbGF1c2UqLlwiO1xuICBsZXQgY2FzZSA9XG4gICAgbWtfY2FzZShbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9leHBfc2NydXQsXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBta19ydWxlKFtbc3BhY2UoKSwgcGF0KFwicDFcIiksIHNwYWNlKCldXSksXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIGV4cChcImUxXCIpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgICAgbWtfcnVsZShbW3NwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV1dKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgZXhwKFwiLi4uXCIpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0sXG4gICAgXSk7XG4gIHtcbiAgICBpZDogQ2FzZUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2Nhc2VdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIGNhc2VfZXhhbXBsZV9pbnQsXG4gICAgICBjYXNlX2V4YW1wbGVfYm9vbCxcbiAgICAgIGNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSxcbiAgICAgIGNhc2VfZXhhbXBsZV93aWxkX3R1cGxlLFxuICAgIF0sXG4gIH07XG59O1xuXG5sZXQgY2FzZTogZ3JvdXAgPSB7aWQ6IENhc2VFeHAsIGZvcm1zOiBbY2FzZV9leHBdfTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5cbmxldCB2aWV3ID0gKGtpbmQ6IEhhejNsY29yZS5DdHgua2luZCk6IE5vZGUudCA9PlxuICBzd2l0Y2ggKGtpbmQpIHtcbiAgfCBTaW5nbGV0b24odHkpID0+IGRpdl9jKFwia2luZC12aWV3XCIsIFtUeXBlLnZpZXcodHkpXSlcbiAgfCBBYnN0cmFjdCA9PiBkaXZfYyhcImtpbmQtdmlld1wiLCBbdGV4dChcIlR5cGVcIildKVxuICB9O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IGp1bXBfdG8gPSBlbnRyeSA9PlxuICBVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihKdW1wKFRpbGVJZChIYXozbGNvcmUuQ3R4LmdldF9pZChlbnRyeSkpKSk7XG5cbmxldCBjb250ZXh0X2VudHJ5X3ZpZXcgPSAofmluamVjdCwgZW50cnk6IEhhejNsY29yZS5DdHguZW50cnkpOiBOb2RlLnQgPT4ge1xuICBsZXQgZGl2X25hbWUgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIGNsc3MoW1wibmFtZVwiXSksXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IGluamVjdChqdW1wX3RvKGVudHJ5KSkpLFxuICAgICAgICBdKSxcbiAgICApO1xuICBzd2l0Y2ggKGVudHJ5KSB7XG4gIHwgVmFyRW50cnkoe25hbWUsIHR5cCwgX30pXG4gIHwgQ29uc3RydWN0b3JFbnRyeSh7bmFtZSwgdHlwLCBffSkgPT5cbiAgICBkaXZfYyhcbiAgICAgIFwiY29udGV4dC1lbnRyeVwiLFxuICAgICAgW1xuICAgICAgICBkaXZfbmFtZShbdGV4dChuYW1lKV0pLFxuICAgICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzZXBlcmF0b3JcIl0pLCBbdGV4dChcIjpcIildKSxcbiAgICAgICAgVHlwZS52aWV3KHR5cCksXG4gICAgICBdLFxuICAgIClcbiAgfCBUVmFyRW50cnkoe25hbWUsIGtpbmQsIF99KSA9PlxuICAgIGRpdl9jKFxuICAgICAgXCJjb250ZXh0LWVudHJ5XCIsXG4gICAgICBbXG4gICAgICAgIGRpdl9uYW1lKFtUeXBlLmFsaWFzX3ZpZXcobmFtZSldKSxcbiAgICAgICAgZGl2KH5hdHRyPWNsc3MoW1wic2VwZXJhdG9yXCJdKSwgW3RleHQoXCI6OlwiKV0pLFxuICAgICAgICBLaW5kLnZpZXcoa2luZCksXG4gICAgICBdLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBjdHhfdmlldyA9ICh+aW5qZWN0LCBjdHg6IEhhejNsY29yZS5DdHgudCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjb250ZXh0LWVudHJpZXNcIl0pLFxuICAgIExpc3QubWFwKFxuICAgICAgY29udGV4dF9lbnRyeV92aWV3KH5pbmplY3QpLFxuICAgICAgY3R4IHw+IEhhejNsY29yZS5DdHguZmlsdGVyX2R1cGxpY2F0ZXMgfD4gTGlzdC5yZXYsXG4gICAgKSxcbiAgKTtcblxubGV0IGN0eF9zb3J0c192aWV3ID0gKH5pbmplY3QsIGNpOiBIYXozbGNvcmUuU3RhdGljcy5JbmZvLnQpID0+XG4gIEhhejNsY29yZS5JbmZvLmN0eF9vZihjaSlcbiAgfD4gSGF6M2xjb3JlLkN0eC5maWx0ZXJfZHVwbGljYXRlc1xuICB8PiBMaXN0LnJldlxuICB8PiBMaXN0Lm1hcChjb250ZXh0X2VudHJ5X3ZpZXcofmluamVjdCkpO1xuXG5sZXQgdmlldyA9XG4gICAgKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgY2k6IEhhejNsY29yZS5TdGF0aWNzLkluZm8udCk6IE5vZGUudCA9PiB7XG4gIGxldCBjbHNzID1cbiAgICBjbHNzKFxuICAgICAgW1wiY29udGV4dC1pbnNwZWN0b3JcIl0gQCAoc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IgPyBbXCJ2aXNpYmxlXCJdIDogW10pLFxuICAgICk7XG4gIGRpdih+YXR0cj1jbHNzLCBjdHhfc29ydHNfdmlldyh+aW5qZWN0LCBjaSkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVycmMgPSBcImVycm9yXCI7XG5sZXQgb2tjID0gXCJva1wiO1xubGV0IGRpdl9lcnIgPSBkaXYofmF0dHI9Y2xzcyhbZXJyY10pKTtcbmxldCBkaXZfb2sgPSBkaXYofmF0dHI9Y2xzcyhbb2tjXSkpO1xuXG5sZXQgY29kZV9lcnIgPSAoY29kZTogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcImNvZGVcIl0pLCBbdGV4dChjb2RlKV0pO1xuXG5sZXQgZXhwbGFpbl90aGlzX3RvZ2dsZSA9ICh+aW5qZWN0LCB+c2hvd19leHBsYWluX3RoaXM6IGJvb2wpOiBOb2RlLnQgPT4ge1xuICBsZXQgdG9vbHRpcCA9IFwiVG9nZ2xlIGxhbmd1YWdlIGRvY3VtZW50YXRpb25cIjtcbiAgbGV0IHRvZ2dsZV9leHBsYWluX3RoaXMgPSBfID0+XG4gICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuTWFueShbXG4gICAgICBpbmplY3QoVXBkYXRlLlNldChFeHBsYWluVGhpcyhUb2dnbGVTaG93KSkpLFxuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuU3RvcF9wcm9wYWdhdGlvbixcbiAgICBdKTtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiZXhwbGFpbi10aGlzLWJ1dHRvblwiXSksXG4gICAgW1dpZGdldHMudG9nZ2xlKH50b29sdGlwLCBcIj9cIiwgc2hvd19leHBsYWluX3RoaXMsIHRvZ2dsZV9leHBsYWluX3RoaXMpXSxcbiAgKTtcbn07XG5cbmxldCBjbHNfdmlldyA9IChjaTogSW5mby50KTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcInN5bnRheC1jbGFzc1wiXSksIFt0ZXh0KGNpIHw+IEluZm8uY2xzX29mIHw+IENscy5zaG93KV0pO1xuXG5sZXQgY3R4X3RvZ2dsZSA9ICh+aW5qZWN0LCBjb250ZXh0X2luc3BlY3RvcjogYm9vbCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gaW5qZWN0KFVwZGF0ZS5TZXQoQ29udGV4dEluc3BlY3RvcikpKSxcbiAgICAgICAgY2xzcyhbXCJnYW1tYVwiXSBAIChjb250ZXh0X2luc3BlY3RvciA/IFtcInZpc2libGVcIl0gOiBbXSkpLFxuICAgICAgXSksXG4gICAgW3RleHQoXCLOk1wiKV0sXG4gICk7XG5cbmxldCB0ZXJtX3ZpZXcgPSAofmluamVjdCwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCBjaSkgPT4ge1xuICBsZXQgc29ydCA9IGNpIHw+IEluZm8uc29ydF9vZiB8PiBTb3J0LnNob3c7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImNpLWhlYWRlclwiLCBzb3J0XSBAIChJbmZvLmlzX2Vycm9yKGNpKSA/IFtlcnJjXSA6IFtdKSksXG4gICAgW1xuICAgICAgY3R4X3RvZ2dsZSh+aW5qZWN0LCBzZXR0aW5ncy5jb250ZXh0X2luc3BlY3RvciksXG4gICAgICBDdHhJbnNwZWN0b3Iudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIGNpKSxcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcInRlcm0tdGFnXCJdKSwgW3RleHQoc29ydCldKSxcbiAgICAgIGV4cGxhaW5fdGhpc190b2dnbGUoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5zaG93X2V4cGxhaW5fdGhpcz1zZXR0aW5ncy5leHBsYWluVGhpcy5zaG93LFxuICAgICAgKSxcbiAgICAgIGNsc192aWV3KGNpKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGVsZW1lbnRzX25vdW46IENscy50ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEV4cChNYXRjaCB8IElmKSA9PiBcIkJyYW5jaGVzXCJcbiAgfCBFeHAoTGlzdExpdClcbiAgfCBQYXQoTGlzdExpdCkgPT4gXCJFbGVtZW50c1wiXG4gIHwgRXhwKExpc3RDb25jYXQpID0+IFwiT3BlcmFuZHNcIlxuICB8IF8gPT4gZmFpbHdpdGgoXCJlbGVtZW50c19ub3VuOiBDbHMgZG9lc24ndCBoYXZlIGVsZW1lbnRzXCIpO1xuXG5sZXQgY29tbW9uX2Vycl92aWV3ID0gKGNsczogQ2xzLnQsIGVycjogSW5mby5lcnJvcl9jb21tb24pID0+XG4gIHN3aXRjaCAoZXJyKSB7XG4gIHwgTm9UeXBlKEJhZFRva2VuKHRva2VuKSkgPT5cbiAgICBzd2l0Y2ggKEZvcm0uYmFkX3Rva2VuX2Nscyh0b2tlbikpIHtcbiAgICB8IEJhZEludCA9PiBbdGV4dChcIkludGVnZXIgaXMgdG9vIGxhcmdlIG9yIHRvbyBzbWFsbFwiKV1cbiAgICB8IE90aGVyID0+IFt0ZXh0KFByaW50Zi5zcHJpbnRmKFwiXFxcIiVzXFxcIiBpc24ndCBhIHZhbGlkIHRva2VuXCIsIHRva2VuKSldXG4gICAgfVxuICB8IE5vVHlwZShCYWRUcml2QXAodHkpKSA9PiBbXG4gICAgICB0ZXh0KFwiRnVuY3Rpb24gYXJndW1lbnQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyh0eSksXG4gICAgICB0ZXh0KFwiaW5jb25zaXN0ZW50IHdpdGhcIiksXG4gICAgICBUeXBlLnZpZXcoUHJvZChbXSkgfD4gVHlwLmZyZXNoKSxcbiAgICBdXG4gIHwgTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkgPT4gW2NvZGVfZXJyKG5hbWUpLCB0ZXh0KFwibm90IGZvdW5kXCIpXVxuICB8IEluY29uc2lzdGVudChXaXRoQXJyb3codHlwKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcodHlwKSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aCBhcnJvdyB0eXBlXCIpLFxuICAgIF1cbiAgfCBJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiaW5jb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCBJbmNvbnNpc3RlbnQoSW50ZXJuYWwodHlzKSkgPT4gW1xuICAgICAgdGV4dChlbGVtZW50c19ub3VuKGNscykgKysgXCIgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXM6XCIpLFxuICAgICAgLi4uTGlzdFV0aWwuam9pbih0ZXh0KFwiLFwiKSwgTGlzdC5tYXAoVHlwZS52aWV3LCB0eXMpKSxcbiAgICBdXG4gIH07XG5cbmxldCBjb21tb25fb2tfdmlldyA9IChjbHM6IENscy50LCBvazogSW5mby5va19wYXQpID0+IHtcbiAgc3dpdGNoIChjbHMsIG9rKSB7XG4gIHwgKEV4cChNdWx0aUhvbGUpIHwgUGF0KE11bHRpSG9sZSksIF8pID0+IFtcbiAgICAgIHRleHQoXCJFeHBlY3Rpbmcgb3BlcmF0b3Igb3IgZGVsaW1pdGVyXCIpLFxuICAgIF1cbiAgfCAoRXhwKEVtcHR5SG9sZSksIFN5bihfKSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgZXhwcmVzc2lvblwiKV1cbiAgfCAoUGF0KEVtcHR5SG9sZSksIFN5bihfKSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgcGF0dGVyblwiKV1cbiAgfCAoRXhwKEVtcHR5SG9sZSksIEFuYShDb25zaXN0ZW50KHthbmEsIF99KSkpID0+IFtcbiAgICAgIHRleHQoXCJGaWxsYWJsZSBieSBhbnkgZXhwcmVzc2lvbiBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KGFuYSksXG4gICAgXVxuICB8IChQYXQoRW1wdHlIb2xlKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBwYXR0ZXJuIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIFN5bihzeW4pKSA9PiBbdGV4dChcIjpcIiksIFR5cGUudmlldyhzeW4pXVxuICB8IChQYXQoVmFyKSB8IFBhdChXaWxkKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgX30pKSkgd2hlbiBhbmEgPT0gc3luID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiZXF1YWxzIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgXVxuICB8IChfLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBzeW4sIF99KSkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIEFuYShJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHthbmEsIG5vam9pbjogdHlzfSkpKSA9PlxuICAgIFtcbiAgICAgIHRleHQoZWxlbWVudHNfbm91bihjbHMpICsrIFwiIGhhdmUgaW5jb25zaXN0ZW50IHR5cGVzOlwiKSxcbiAgICAgIC4uLkxpc3RVdGlsLmpvaW4odGV4dChcIixcIiksIExpc3QubWFwKFR5cGUudmlldywgdHlzKSksXG4gICAgXVxuICAgIEAgW3RleHQoXCJidXQgY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkXCIpLCBUeXBlLnZpZXcoYW5hKV1cbiAgfTtcbn07XG5cbmxldCB0eXBfb2tfdmlldyA9IChjbHM6IENscy50LCBvazogSW5mby5va190eXApID0+XG4gIHN3aXRjaCAob2spIHtcbiAgfCBUeXBlKF8pIHdoZW4gY2xzID09IFR5cChFbXB0eUhvbGUpID0+IFt0ZXh0KFwiRmlsbGFibGUgYnkgYW55IHR5cGVcIildXG4gIHwgVHlwZSh0eSkgPT4gW1R5cGUudmlldyh0eSksIHRleHQoXCJpcyBhIHR5cGVcIildXG4gIHwgVHlwZUFsaWFzKG5hbWUsIHR5X2xvb2t1cCkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcImlzIGFuIGFsaWFzIGZvclwiKSxcbiAgICAgIFR5cGUudmlldyh0eV9sb29rdXApLFxuICAgIF1cbiAgfCBWYXJpYW50KG5hbWUsIHN1bV90eSkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcImlzIGEgc3VtIHR5cGUgY29uc3R1Y3RvciBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHN1bV90eSksXG4gICAgXVxuICB8IFZhcmlhbnRJbmNvbXBsZXRlKHN1bV90eSkgPT4gW1xuICAgICAgdGV4dChcIkFuIGluY29tcGxldGUgc3VtIHR5cGUgY29uc3R1Y3RvciBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHN1bV90eSksXG4gICAgXVxuICB9O1xuXG5sZXQgdHlwX2Vycl92aWV3ID0gKG9rOiBJbmZvLmVycm9yX3R5cCkgPT5cbiAgc3dpdGNoIChvaykge1xuICB8IEZyZWVUeXBlVmFyaWFibGUobmFtZSkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcIm5vdCBmb3VuZFwiKSxcbiAgICBdXG4gIHwgQmFkVG9rZW4odG9rZW4pID0+IFtcbiAgICAgIGNvZGVfZXJyKHRva2VuKSxcbiAgICAgIHRleHQoXCJub3QgYSB0eXBlIG9yIHR5cGUgb3BlcmF0b3JcIiksXG4gICAgXVxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoXykgPT4gW3RleHQoXCJFeHBlY3RlZCBhIGNvbnN0cnVjdG9yXCIpXVxuICB8IFdhbnRUeXBlRm91bmRBcCA9PiBbdGV4dChcIk11c3QgYmUgcGFydCBvZiBhIHN1bSB0eXBlXCIpXVxuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKG5hbWUpID0+IFtcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkgfD4gVHlwLmZyZXNoKSxcbiAgICAgIHRleHQoXCJhbHJlYWR5IHVzZWQgaW4gdGhpcyBzdW1cIiksXG4gICAgXVxuICB9O1xuXG5sZXQgZXhwX3ZpZXcgPSAoY2xzOiBDbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c19leHApID0+XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gIHwgSW5Ib2xlKEZyZWVWYXJpYWJsZShuYW1lKSkgPT5cbiAgICBkaXZfZXJyKFtjb2RlX2VycihuYW1lKSwgdGV4dChcIm5vdCBmb3VuZFwiKV0pXG4gIHwgSW5Ib2xlKFVudXNlZERlZmVycmFsKSA9PlxuICAgIGRpdl9lcnIoW3RleHQoXCJEZWZlcnJhbCBtdXN0IGFwcGVhciBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50XCIpXSlcbiAgfCBJbkhvbGUoQmFkUGFydGlhbEFwKE5vRGVmZXJyZWRBcmdzKSkgPT5cbiAgICBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIG5vbi1kZWZlcnJlZCBhcmd1bWVudFwiKV0pXG4gIHwgSW5Ib2xlKEJhZFBhcnRpYWxBcChBcml0eU1pc21hdGNoKHtleHBlY3RlZCwgYWN0dWFsfSkpKSA9PlxuICAgIGRpdl9lcnIoW1xuICAgICAgdGV4dChcbiAgICAgICAgXCJBcml0eSBtaXNtYXRjaDogZXhwZWN0ZWQgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChleHBlY3RlZClcbiAgICAgICAgKysgXCIgYXJndW1lbnRcIlxuICAgICAgICArKyAoZXhwZWN0ZWQgPT0gMSA/IFwiXCIgOiBcInNcIilcbiAgICAgICAgKysgXCIsIGdvdCBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KGFjdHVhbClcbiAgICAgICAgKysgXCIgYXJndW1lbnRzXCIsXG4gICAgICApLFxuICAgIF0pXG4gIHwgSW5Ib2xlKENvbW1vbihlcnJvcikpID0+IGRpdl9lcnIoY29tbW9uX2Vycl92aWV3KGNscywgZXJyb3IpKVxuICB8IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSkgPT5cbiAgICBkaXZfb2soW3RleHQoXCJFeHBlY3RpbmcgdHlwZVwiKSwgVHlwZS52aWV3KGFuYSldKVxuICB8IE5vdEluSG9sZShDb21tb24ob2spKSA9PiBkaXZfb2soY29tbW9uX29rX3ZpZXcoY2xzLCBvaykpXG4gIH07XG5cbmxldCBwYXRfdmlldyA9IChjbHM6IENscy50LCBzdGF0dXM6IEluZm8uc3RhdHVzX3BhdCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBJbkhvbGUoRXhwZWN0ZWRDb25zdHJ1Y3RvcikgPT4gZGl2X2VycihbdGV4dChcIkV4cGVjdGVkIGEgY29uc3RydWN0b3JcIildKVxuICB8IEluSG9sZShDb21tb24oZXJyb3IpKSA9PiBkaXZfZXJyKGNvbW1vbl9lcnJfdmlldyhjbHMsIGVycm9yKSlcbiAgfCBOb3RJbkhvbGUob2spID0+IGRpdl9vayhjb21tb25fb2tfdmlldyhjbHMsIG9rKSlcbiAgfTtcblxubGV0IHR5cF92aWV3ID0gKGNsczogQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfdHlwKSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IE5vdEluSG9sZShvaykgPT4gZGl2X29rKHR5cF9va192aWV3KGNscywgb2spKVxuICB8IEluSG9sZShlcnIpID0+IGRpdl9lcnIodHlwX2Vycl92aWV3KGVycikpXG4gIH07XG5cbmxldCB0cGF0X3ZpZXcgPSAoXzogQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfdHBhdCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBOb3RJbkhvbGUoRW1wdHkpID0+IGRpdl9vayhbdGV4dChcIkZpbGxhYmxlIHdpdGggYSBuZXcgYWxpYXNcIildKVxuICB8IE5vdEluSG9sZShWYXIobmFtZSkpID0+IGRpdl9vayhbVHlwZS5hbGlhc192aWV3KG5hbWUpXSlcbiAgfCBJbkhvbGUoTm90QVZhcihOb3RDYXBpdGFsaXplZCkpID0+XG4gICAgZGl2X2VycihbdGV4dChcIk11c3QgYmVnaW4gd2l0aCBhIGNhcGl0YWwgbGV0dGVyXCIpXSlcbiAgfCBJbkhvbGUoTm90QVZhcihfKSkgPT4gZGl2X2VycihbdGV4dChcIkV4cGVjdGVkIGFuIGFsaWFzXCIpXSlcbiAgfCBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSwgQmFzZVR5cCkpID0+XG4gICAgZGl2X2VycihbXG4gICAgICB0ZXh0KFwiQ2FuJ3Qgc2hhZG93IGJhc2UgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkgfD4gVHlwLmZyZXNoKSxcbiAgICBdKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBUeUFsaWFzKSkgPT5cbiAgICBkaXZfZXJyKFtcbiAgICAgIHRleHQoXCJDYW4ndCBzaGFkb3cgZXhpc3RpbmcgYWxpYXNcIiksXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgXSlcbiAgfCBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSwgVHlWYXIpKSA9PlxuICAgIGRpdl9lcnIoW1xuICAgICAgdGV4dChcIkNhbid0IHNoYWRvdyBleGlzdGluZyB0eXBlIHZhcmlhYmxlXCIpLFxuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgIF0pXG4gIH07XG5cbmxldCBzZWNvbmRhcnlfdmlldyA9IChjbHM6IENscy50KSA9PiBkaXZfb2soW3RleHQoY2xzIHw+IENscy5zaG93KV0pO1xuXG5sZXQgdmlld19vZl9pbmZvID0gKH5pbmplY3QsIH5zZXR0aW5ncywgY2kpOiBOb2RlLnQgPT4ge1xuICBsZXQgd3JhcHBlciA9IHN0YXR1c192aWV3ID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJpbmZvXCJdKSxcbiAgICAgIFt0ZXJtX3ZpZXcofmluamVjdCwgfnNldHRpbmdzLCBjaSksIHN0YXR1c192aWV3XSxcbiAgICApO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgU2Vjb25kYXJ5KF8pID0+IHdyYXBwZXIoZGl2KFtdKSlcbiAgfCBJbmZvRXhwKHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIoZXhwX3ZpZXcoY2xzLCBzdGF0dXMpKVxuICB8IEluZm9QYXQoe2Nscywgc3RhdHVzLCBffSkgPT4gd3JhcHBlcihwYXRfdmlldyhjbHMsIHN0YXR1cykpXG4gIHwgSW5mb1R5cCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHR5cF92aWV3KGNscywgc3RhdHVzKSlcbiAgfCBJbmZvVFBhdCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHRwYXRfdmlldyhjbHMsIHN0YXR1cykpXG4gIH07XG59O1xuXG5sZXQgaW5zcGVjdG9yX3ZpZXcgPSAofmluamVjdCwgfnNldHRpbmdzLCBjaSk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjdXJzb3ItaW5zcGVjdG9yXCJdIEAgW0luZm8uaXNfZXJyb3IoY2kpID8gZXJyYyA6IG9rY10pLFxuICAgIFt2aWV3X29mX2luZm8ofmluamVjdCwgfnNldHRpbmdzLCBjaSldLFxuICApO1xuXG5sZXQgdmlldyA9ICh+aW5qZWN0LCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGN1cnNvcl9pbmZvOiBvcHRpb24oSW5mby50KSkgPT4ge1xuICBsZXQgYmFyX3ZpZXcgPSBkaXYofmF0dHI9QXR0ci5pZChcImJvdHRvbS1iYXJcIikpO1xuICBsZXQgZXJyX3ZpZXcgPSBlcnIgPT5cbiAgICBiYXJfdmlldyhbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiY3Vyc29yLWluc3BlY3RvclwiLCBcIm5vLWluZm9cIl0pLFxuICAgICAgICBbZGl2KH5hdHRyPWNsc3MoW1wiaWNvblwiXSksIFtJY29ucy5tYWduaWZ5XSksIHRleHQoZXJyKV0sXG4gICAgICApLFxuICAgIF0pO1xuICBzd2l0Y2ggKGN1cnNvcl9pbmZvKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT4gZGl2X2VtcHR5XG4gIHwgTm9uZSA9PiBlcnJfdmlldyhcIldoaXRlc3BhY2Ugb3IgQ29tbWVudFwiKVxuICB8IFNvbWUoY2kpID0+XG4gICAgYmFyX3ZpZXcoW1xuICAgICAgaW5zcGVjdG9yX3ZpZXcofmluamVjdCwgfnNldHRpbmdzLCBjaSksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiaWRcIl0pLFxuICAgICAgICBbdGV4dChTdHJpbmcuc3ViKElkLnRvX3N0cmluZyhJbmZvLmlkX29mKGNpKSksIDAsIDQpKV0sXG4gICAgICApLFxuICAgIF0pXG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBXaWRnZXRzO1xuXG5sZXQgb3B0aW9uX3ZpZXcgPSAobmFtZSwgbikgPT5cbiAgb3B0aW9uKFxuICAgIH5hdHRyPW4gPT0gbmFtZSA/IEF0dHIuY3JlYXRlKFwic2VsZWN0ZWRcIiwgXCJzZWxlY3RlZFwiKSA6IEF0dHIubWFueShbXSksXG4gICAgW3RleHQobildLFxuICApO1xuXG5sZXQgbW9kZV9tZW51ID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLCB+bW9kZTogU2V0dGluZ3MubW9kZSkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJtb2RlLW5hbWVcIiksIEF0dHIudGl0bGUoXCJUb2dnbGUgTW9kZVwiKV0pLFxuICAgIFtcbiAgICAgIHNlbGVjdChcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5vbl9jaGFuZ2UoKF8sIG5hbWUpID0+XG4gICAgICAgICAgICBpbmplY3QoU2V0KE1vZGUoU2V0dGluZ3MubW9kZV9vZl9zdHJpbmcobmFtZSkpKSlcbiAgICAgICAgICApLFxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICBvcHRpb25fdmlldyhTZXR0aW5ncy5zaG93X21vZGUobW9kZSkpLFxuICAgICAgICAgIFtcIlNjcmF0Y2hcIiwgXCJEb2N1bWVudGF0aW9uXCIsIFwiRXhlcmNpc2VzXCJdLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xuXG5sZXQgc2xpZGVfc2VsZWN0ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5udW1fc2xpZGVzKSA9PiB7XG4gIGxldCBuZXh0X2VkID0gKGN1cl9zbGlkZSArIDEpIG1vZCBudW1fc2xpZGVzO1xuICBsZXQgcHJldl9lZCA9IFV0aWwuSW50VXRpbC5tb2R1bG8oY3VyX3NsaWRlIC0gMSwgbnVtX3NsaWRlcyk7XG4gIFtcbiAgICBidXR0b24oSWNvbnMuYmFjaywgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaFNjcmF0Y2hTbGlkZShwcmV2X2VkKSkpLFxuICAgIHRleHQoUHJpbnRmLnNwcmludGYoXCIlZCAvICVkXCIsIGN1cl9zbGlkZSArIDEsIG51bV9zbGlkZXMpKSxcbiAgICBidXR0b24oSWNvbnMuZm9yd2FyZCwgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaFNjcmF0Y2hTbGlkZShuZXh0X2VkKSkpLFxuICBdO1xufTtcblxubGV0IHNjcmF0Y2hfdmlldyA9ICh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+c2xpZGVzKSA9PlxuICBbbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPVNjcmF0Y2gpXVxuICBAIHNsaWRlX3NlbGVjdCh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcz1MaXN0Lmxlbmd0aChzbGlkZXMpKTtcblxubGV0IGRvY3VtZW50YXRpb25fdmlldyA9ICh+aW5qZWN0LCB+bmFtZSwgfmVkaXRvcnMpID0+IHtcbiAgbGV0IGVkaXRvcl9uYW1lcyA9IExpc3QubWFwKGZzdCwgZWRpdG9ycyk7XG4gIGxldCByZWMgZmluZF9wcmV2X25leHQ6IGxpc3Qoc3RyaW5nKSA9PiAob3B0aW9uKHN0cmluZyksIG9wdGlvbihzdHJpbmcpKSA9XG4gICAgZnVuXG4gICAgfCBbXVxuICAgIHwgW19dID0+IChOb25lLCBOb25lKVxuICAgIHwgW3gsIHldIHdoZW4gbmFtZSA9PSB4ID0+IChOb25lLCBTb21lKHkpKVxuICAgIHwgW3gsIHldIHdoZW4gbmFtZSA9PSB5ID0+IChTb21lKHgpLCBOb25lKVxuICAgIHwgW18sIF9dID0+IChOb25lLCBOb25lKVxuICAgIHwgW3gsIHksIC4uLl9dIHdoZW4gbmFtZSA9PSB4ID0+IChOb25lLCBTb21lKHkpKVxuICAgIHwgW3gsIHksIHosIC4uLl9dIHdoZW4gbmFtZSA9PSB5ID0+IChTb21lKHgpLCBTb21lKHopKVxuICAgIHwgW18sIC4uLnlzXSA9PiBmaW5kX3ByZXZfbmV4dCh5cyk7XG4gIGxldCAocHJldiwgbmV4dCkgPSBmaW5kX3ByZXZfbmV4dChlZGl0b3JfbmFtZXMpO1xuICBsZXQgcHJldiA9XG4gICAgcHJldlxuICAgIHw+IE9wdGlvbi5tYXAocyA9PlxuICAgICAgICAgYnV0dG9uKEljb25zLmJhY2ssIF8gPT4gaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUocykpKVxuICAgICAgIClcbiAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgYnV0dG9uX2QoXG4gICAgICAgICAgICAgSWNvbnMuYmFjayxcbiAgICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShcIm5vbmVcIikpLFxuICAgICAgICAgICAgIH5kaXNhYmxlZD10cnVlLFxuICAgICAgICAgICApLFxuICAgICAgICk7XG4gIGxldCBuZXh0ID1cbiAgICBuZXh0XG4gICAgfD4gT3B0aW9uLm1hcChzID0+XG4gICAgICAgICBidXR0b24oSWNvbnMuZm9yd2FyZCwgXyA9PlxuICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShzKSlcbiAgICAgICAgIClcbiAgICAgICApXG4gICAgfD4gT3B0aW9uLnZhbHVlKFxuICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgIGJ1dHRvbl9kKFxuICAgICAgICAgICAgIEljb25zLmZvcndhcmQsXG4gICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXCJub25lXCIpKSxcbiAgICAgICAgICAgICB+ZGlzYWJsZWQ9dHJ1ZSxcbiAgICAgICAgICAgKSxcbiAgICAgICApO1xuICBbXG4gICAgbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPURvY3VtZW50YXRpb24pLFxuICAgIHByZXYsXG4gICAgc2VsZWN0KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIub25fY2hhbmdlKChfLCBuYW1lKSA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKG5hbWUpKVxuICAgICAgICApLFxuICAgICAgTGlzdC5tYXAob3B0aW9uX3ZpZXcobmFtZSksIGVkaXRvcl9uYW1lcyksXG4gICAgKSxcbiAgICBuZXh0LFxuICBdO1xufTtcblxubGV0IGluc3RydWN0b3JfdG9nZ2xlID0gKH5pbmplY3QsIH5pbnN0cnVjdG9yX21vZGUpID0+XG4gIEV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yXG4gICAgPyBbXG4gICAgICB0b2dnbGUoXCLwn46TXCIsIH50b29sdGlwPVwiVG9nZ2xlIEluc3RydWN0b3IgTW9kZVwiLCBpbnN0cnVjdG9yX21vZGUsIF8gPT5cbiAgICAgICAgaW5qZWN0KFVwZGF0ZS5TZXQoSW5zdHJ1Y3Rvck1vZGUpKVxuICAgICAgKSxcbiAgICBdXG4gICAgOiBbXTtcblxubGV0IGV4ZXJjaXNlc192aWV3ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICBbbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPUV4ZXJjaXNlcyldXG4gIEAgaW5zdHJ1Y3Rvcl90b2dnbGUofmluamVjdCwgfmluc3RydWN0b3JfbW9kZSlcbiAgQCBzbGlkZV9zZWxlY3QofmluamVjdCwgfmN1cl9zbGlkZSwgfm51bV9zbGlkZXM9TGlzdC5sZW5ndGgoc3BlY3MpKTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSxcbiAgICAgIH5lZGl0b3JzOiBFZGl0b3JzLnQsXG4gICAgICB+c2V0dGluZ3MgYXMge2luc3RydWN0b3JfbW9kZSwgX306IFNldHRpbmdzLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbGV0IGNvbnRlbnRzID1cbiAgICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgICB8IFNjcmF0Y2goY3VyX3NsaWRlLCBzbGlkZXMpID0+XG4gICAgICBzY3JhdGNoX3ZpZXcofmluamVjdCwgfmN1cl9zbGlkZSwgfnNsaWRlcylcbiAgICB8IERvY3VtZW50YXRpb24obmFtZSwgZWRpdG9ycykgPT5cbiAgICAgIGRvY3VtZW50YXRpb25fdmlldyh+aW5qZWN0LCB+bmFtZSwgfmVkaXRvcnMpXG4gICAgfCBFeGVyY2lzZXMoY3VyX3NsaWRlLCBzcGVjcywgXykgPT5cbiAgICAgIGV4ZXJjaXNlc192aWV3KH5jdXJfc2xpZGUsIH5zcGVjcywgfmluamVjdCwgfmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICBkaXYofmF0dHI9QXR0ci5pZChcImVkaXRvci1tb2RlXCIpLCBjb250ZW50cyk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5pbmNsdWRlIEhhejNsc2Nob29sLkdyYWRpbmcuRihFeGVyY2lzZS5FeGVyY2lzZUVudik7XG5cbmxldCBzY29yZV92aWV3ID0gKChlYXJuZWQ6IHBvaW50cywgbWF4OiBwb2ludHMpKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwidGVzdC1wZXJjZW50XCIsXG4gICAgICAgIEZsb2F0LmVxdWFsKGVhcm5lZCwgbWF4KSA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCIsXG4gICAgICBdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMWYgLyAlLjFmIHB0c1wiLCBlYXJuZWQsIG1heCkpXSxcbiAgKTtcbn07XG5cbmxldCBwZXJjZW50YWdlX3ZpZXcgPSAocDogcGVyY2VudGFnZSkgPT4ge1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICBcInRlc3QtcGVyY2VudFwiLFxuICAgICAgICBGbG9hdC5lcXVhbChwLCAxLikgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiLFxuICAgICAgXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgMTAwLiAqLiBwKSldLFxuICApO1xufTtcblxubW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICBpbmNsdWRlIFRlc3RWYWxpZGF0aW9uUmVwb3J0O1xuICBsZXQgdGV4dHVhbF9zdW1tYXJ5ID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXN1bHRzXCIpXVxuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgIGxldCB0b3RhbF90ZXN0cyA9IHRlc3RfcmVzdWx0cy50b3RhbDtcbiAgICAgICAgICBsZXQgcmVxdWlyZWQgPSByZXBvcnQucmVxdWlyZWQ7XG4gICAgICAgICAgbGV0IG51bV90ZXN0c19tZXNzYWdlID1cbiAgICAgICAgICAgIHRvdGFsX3Rlc3RzID49IHJlcXVpcmVkXG4gICAgICAgICAgICAgID8gXCJhdCBsZWFzdCBcIiArKyBzdHJpbmdfb2ZfaW50KHJlcXVpcmVkKVxuICAgICAgICAgICAgICA6IHN0cmluZ19vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKVxuICAgICAgICAgICAgICAgICsrIFwiIG9mIFwiXG4gICAgICAgICAgICAgICAgKysgc3RyaW5nX29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIkVudGVyZWQgXCJcbiAgICAgICAgICAgICsrIG51bV90ZXN0c19tZXNzYWdlXG4gICAgICAgICAgICArKyBcIiB0ZXN0cy4gXCJcbiAgICAgICAgICAgICsrIHRlc3Rfc3VtbWFyeV9zdHIodGVzdF9yZXN1bHRzKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPSAofmluamVjdCwgcmVwb3J0OiB0LCBtYXhfcG9pbnRzOiBpbnQpID0+IHtcbiAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICBbc2NvcmVfdmlldyhzY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UocmVwb3J0KSwgbWF4X3BvaW50cykpXVxuICAgICAgICAgICAgQCB0ZXh0dWFsX3N1bW1hcnkocmVwb3J0KSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgT3B0aW9uLnRvX2xpc3QoXG4gICAgICAgICAgICByZXBvcnQudGVzdF9yZXN1bHRzXG4gICAgICAgICAgICB8PiBPcHRpb24ubWFwKHRlc3RfcmVzdWx0cyA9PlxuICAgICAgICAgICAgICAgICBUZXN0Vmlldy50ZXN0X2JhcihcbiAgICAgICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICAgICAgICAgICAgICAgWW91clRlc3RzVmFsaWRhdGlvbixcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgKSxcbiAgICBdKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQgPSB7XG4gIGluY2x1ZGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0O1xuICBvcGVuIEhhejNsY29yZTtcblxuICBsZXQgc3VtbWFyeV9tZXNzYWdlID0gKH5zY29yZSwgfnRvdGFsLCB+Zm91bmQpOiBOb2RlLnQgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC10ZXh0XCJdKSxcbiAgICAgIFtzY29yZV92aWV3KHNjb3JlKSwgdGV4dChzdW1tYXJ5X3N0cih+dG90YWwsIH5mb3VuZCkpXSxcbiAgICApO1xuXG4gIGxldCBiYXIgPSAofmluamVjdCwgaW5zdGFuY2VzKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LWJhclwiXSksXG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChpZCwgKHN0YXR1cywgXykpID0+XG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInNlZ21lbnRcIiwgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKV0pLFxuICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXG4gICAgICAgICAgICAgICAgICAvL1RPRE86IHdpcmUgdXAgdGVzdCBpZHNcbiAgICAgICAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5CdWdzKGlkKSwgSWQuaW52YWxpZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICApLFxuICAgICAgICBpbnN0YW5jZXMsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IHN1bW1hcnkgPSAofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpID0+IHtcbiAgICBsZXQgdG90YWwgPSBMaXN0Lmxlbmd0aChyZXBvcnQucmVzdWx0cyk7XG4gICAgbGV0IGZvdW5kID1cbiAgICAgIExpc3QubGVuZ3RoKFxuICAgICAgICBMaXN0LmZpbHRlcigoKHg6IFRlc3RTdGF0dXMudCwgXykpID0+IHggPT0gUGFzcywgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgKTtcbiAgICBsZXQgc3RhdHVzX2NsYXNzID0gdG90YWwgPT0gZm91bmQgPyBcIlBhc3NcIiA6IFwiRmFpbFwiO1xuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgIFwiY2VsbC1pdGVtXCIsXG4gICAgICAgICAgXCJ0ZXN0LXN1bW1hcnlcIixcbiAgICAgICAgICBcImNlbGwtcmVwb3J0XCIsXG4gICAgICAgICAgc3RhdHVzX2NsYXNzLFxuICAgICAgICBdKSxcbiAgICAgIFtcbiAgICAgICAgc3VtbWFyeV9tZXNzYWdlKFxuICAgICAgICAgIH5zY29yZT1zY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UocmVwb3J0KSwgbWF4X3BvaW50cyksXG4gICAgICAgICAgfnRvdGFsLFxuICAgICAgICAgIH5mb3VuZCxcbiAgICAgICAgKSxcbiAgICAgICAgYmFyKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaWQsIH5pbmplY3QsIH5oaW50OiBzdHJpbmcsIH5zdGF0dXM6IFRlc3RTdGF0dXMudCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgICAgIC8vVE9ETzogd2lyZSB1cCB0ZXN0IGlkc1xuICAgICAgICAgIEF0dHIub25fY2xpY2soXG4gICAgICAgICAgICBUZXN0Vmlldy5qdW1wX3RvX3Rlc3QofmluamVjdCwgSGlkZGVuQnVncyhpZCksIElkLmludmFsaWQpLFxuICAgICAgICAgICksXG4gICAgICAgIF0pLFxuICAgICAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaWRcIixcbiAgICAgICAgICAgICAgXCJUZXN0XCIgKysgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIC8qIE5PVEU6IHByaW50cyBsZXhpY2FsIGluZGV4LCBub3QgdW5pcXVlIGlkICovXG4gICAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpZCArIDEpKV0sXG4gICAgICAgICksXG4gICAgICAgIC8vIFRlc3RWaWV3LnRlc3RfaW5zdGFuY2Vfdmlldyh+Zm9udF9tZXRyaWNzLCBpbnN0YW5jZSksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWhpbnRcIixcbiAgICAgICAgICAgICAgXCJ0ZXN0LWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9ICh+aW5qZWN0LCBjb3ZlcmFnZV9yZXN1bHRzKSA9PlxuICAgIGRpdihcbiAgICAgIGNvdmVyYWdlX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QubWFwaSgoaSwgKHN0YXR1cywgaGludCkpID0+XG4gICAgICAgICAgIGluZGl2aWR1YWxfcmVwb3J0KGksIH5pbmplY3QsIH5oaW50LCB+c3RhdHVzKVxuICAgICAgICAgKSxcbiAgICApO1xuXG4gIC8vIGxldCBwYXNzaW5nX3Rlc3RfaWRzID0gdGVzdF9tYXAgPT5cbiAgLy8gICB0ZXN0X21hcFxuICAvLyAgIHw+IExpc3QuZmlsdGVyKCgoX2lkLCByZXBvcnRzKSkgPT5cbiAgLy8gICAgICAgIExpc3QuZm9yX2FsbChcbiAgLy8gICAgICAgICAgKChfLCBzdGF0dXMpKSA9PiBzdGF0dXMgPT0gSGF6M2xjb3JlLlRlc3RTdGF0dXMuUGFzcyxcbiAgLy8gICAgICAgICAgcmVwb3J0cyxcbiAgLy8gICAgICAgIClcbiAgLy8gICAgICApXG4gIC8vICAgfD4gTGlzdC5zcGxpdFxuICAvLyAgIHw+IGZzdDtcblxuICAvLyBsZXQgZmFpbGluZ190ZXN0X2lkcyA9IHRlc3RfbWFwID0+XG4gIC8vICAgdGVzdF9tYXBcbiAgLy8gICB8PiBMaXN0LmZpbHRlcigoKF9pZCwgcmVwb3J0cykpID0+XG4gIC8vICAgICAgICBMaXN0LmZvcl9hbGwoXG4gIC8vICAgICAgICAgICgoXywgc3RhdHVzKSkgPT4gc3RhdHVzID09IEhhejNsY29yZS5UZXN0U3RhdHVzLkZhaWwsXG4gIC8vICAgICAgICAgIHJlcG9ydHMsXG4gIC8vICAgICAgICApXG4gIC8vICAgICAgKVxuICAvLyAgIHw+IExpc3Quc3BsaXRcbiAgLy8gICB8PiBmc3Q7XG5cbiAgLy8gbGV0IGdldF90ZXN0X21hcCA9IChlZGl0b3JzOiBsaXN0KEhhejNsY29yZS5FZGl0b3IudCkpID0+IHtcbiAgLy8gICBsZXQgKHJlZmVyZW5jZV90ZXJtLCByZWZlcmVuY2VfbWFwKSA9IHNwbGljZWRfc3RhdGljcyhlZGl0b3JzKTtcbiAgLy8gICBsZXQgcmVzdWx0X3JlZmVyZW5jZSA9XG4gIC8vICAgICBJbnRlcmZhY2UudGVzdF9yZXN1bHRzKHJlZmVyZW5jZV9tYXAsIHJlZmVyZW5jZV90ZXJtKTtcbiAgLy8gICBzd2l0Y2ggKHJlc3VsdF9yZWZlcmVuY2UpIHtcbiAgLy8gICB8IE5vbmUgPT4gW11cbiAgLy8gICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PiB0ZXN0X3Jlc3VsdHMudGVzdF9tYXBcbiAgLy8gICB9O1xuICAvLyB9O1xuICAvLyBsZXQgc2hvd190ZXJtID0gKGVkaXRvcjogRWRpdG9yLnQsIF8pID0+XG4gIC8vICAgZWRpdG9yLnN0YXRlLnppcHBlclxuICAvLyAgIHw+IFppcHBlci56aXBcbiAgLy8gICB8PiBNYWtlVGVybS5nb1xuICAvLyAgIHw+IGZzdFxuICAvLyAgIHw+IFVFeHAuc2hvd1xuICAvLyAgIHw+IHByaW50X2VuZGxpbmVcbiAgLy8gICB8PiAoXyA9PiBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmUpO1xuXG4gIC8vIGxldCBnZXRfZmlyc3RfY29tbW9uID1cbiAgLy8gICAgIChyZWZlcmVuY2VfcGFzc2luZywgd3JvbmcpOiAoVGVzdFN0YXR1cy50LCBvcHRpb24oJ2EpKSA9PiB7XG4gIC8vICAgbGV0IHdyb25nX3Rlc3RfbWFwID0gd3JvbmcgfD4gZ2V0X3Rlc3RfbWFwO1xuICAvLyAgIGxldCB3cm9uZ19mYWlsaW5nID0gd3JvbmdfdGVzdF9tYXAgfD4gZmFpbGluZ190ZXN0X2lkcztcbiAgLy8gICBsZXQgY29tbW9uID1cbiAgLy8gICAgIExpc3QuZmlsdGVyKHggPT4gTGlzdC5tZW0oeCwgcmVmZXJlbmNlX3Bhc3NpbmcpLCB3cm9uZ19mYWlsaW5nKTtcbiAgLy8gICBsZXQgaW5zdGFuY2U6IG9wdGlvbihsaXN0KCdhKSkgPVxuICAvLyAgICAgc3dpdGNoIChjb21tb24pIHtcbiAgLy8gICAgIHwgW10gPT4gTm9uZVxuICAvLyAgICAgfCBbeCwgLi4uX10gPT4gTGlzdC5hc3NvY19vcHQoeCwgd3JvbmdfdGVzdF9tYXApXG4gIC8vICAgICB9O1xuICAvLyAgIHN3aXRjaCAoaW5zdGFuY2UpIHtcbiAgLy8gICB8IFNvbWUoW2luc3RhbmNlLCAuLi5fXSkgPT4gKFRlc3RTdGF0dXMuUGFzcywgU29tZShpbnN0YW5jZSkpXG4gIC8vICAgfCBfID0+IChUZXN0U3RhdHVzLkZhaWwsIE5vbmUpXG4gIC8vICAgfTtcbiAgLy8gfTtcblxuICBsZXQgdmlldyA9ICh+aW5qZWN0LCByZXBvcnQ6IHQsIG1heF9wb2ludHM6IGludCkgPT5cbiAgICBpZiAobWF4X3BvaW50cyA9PSAwKSB7XG4gICAgICBOb2RlLmRpdihbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIENlbGwucGFuZWwoXG4gICAgICAgIH5jbGFzc2VzPVtcInRlc3QtcGFuZWxcIl0sXG4gICAgICAgIFtcbiAgICAgICAgICBDZWxsLmNhcHRpb24oXG4gICAgICAgICAgICBcIk11dGF0aW9uIFRlc3RpbmdcIixcbiAgICAgICAgICAgIH5yZXN0PVwiOiBZb3VyIFRlc3RzIHZzLiBCdWdneSBJbXBsZW1lbnRhdGlvbnMgKGhpZGRlbilcIixcbiAgICAgICAgICApLFxuICAgICAgICAgIGluZGl2aWR1YWxfcmVwb3J0cyh+aW5qZWN0LCByZXBvcnQucmVzdWx0cyksXG4gICAgICAgIF0sXG4gICAgICAgIH5mb290ZXI9U29tZShzdW1tYXJ5KH5pbmplY3QsIH5yZXBvcnQsIH5tYXhfcG9pbnRzKSksXG4gICAgICApO1xuICAgIH07XG59O1xuXG5tb2R1bGUgU3ludGF4UmVwb3J0ID0ge1xuICBpbmNsdWRlIFN5bnRheFJlcG9ydDtcbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0ID0gKGk6IGludCwgaGludDogc3RyaW5nLCBzdGF0dXM6IGJvb2wpID0+IHtcbiAgICBsZXQgcmVzdWx0X3N0cmluZyA9IHN0YXR1cyA/IFwiUGFzc1wiIDogXCJJbmRldFwiO1xuXG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtcmVwb3J0XCJdKSxcbiAgICAgIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LWlkXCIsIFwiVGVzdFwiICsrIHJlc3VsdF9zdHJpbmddKSxcbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGkgKyAxKSldLFxuICAgICAgICApLFxuICAgICAgXVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1oaW50XCIsIFwidGVzdC1pbnN0YW5jZVwiLCByZXN1bHRfc3RyaW5nXSksXG4gICAgICAgICAgW3RleHQoaGludCldLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydHMgPSAoaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIHN0cmluZykpKSA9PiB7XG4gICAgZGl2KFxuICAgICAgaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QubWFwaSgoaSwgKHN0YXR1cywgaGludCkpID0+XG4gICAgICAgICAgIGluZGl2aWR1YWxfcmVwb3J0KGksIGhpbnQsIHN0YXR1cylcbiAgICAgICAgICksXG4gICAgKTtcbiAgfTtcblxuICBsZXQgdmlldyA9IChzeW50YXhfcmVwb3J0OiB0KSA9PiB7XG4gICAgQ2VsbC5wYW5lbChcbiAgICAgIH5jbGFzc2VzPVtcInRlc3QtcGFuZWxcIl0sXG4gICAgICBbXG4gICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICBcIlN5bnRheCBWYWxpZGF0aW9uXCIsXG4gICAgICAgICAgfnJlc3Q9XG4gICAgICAgICAgICBcIjogRG9lcyB5b3VyIGltcGxlbWVudGF0aW9uIHNhdGlzZnkgdGhlIHN5bnRhY3RpYyByZXF1aXJlbWVudHM/XCIsXG4gICAgICAgICksXG4gICAgICAgIGluZGl2aWR1YWxfcmVwb3J0cyhzeW50YXhfcmVwb3J0LmhpbnRlZF9yZXN1bHRzKSxcbiAgICAgIF0sXG4gICAgICB+Zm9vdGVyPVxuICAgICAgICBTb21lKFxuICAgICAgICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtdGV4dFwiKSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZV92aWV3KHN5bnRheF9yZXBvcnQucGVyY2VudGFnZSksXG4gICAgICAgICAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgICAgICAgICAgXCIgb2YgdGhlIEltcGxlbWVudGF0aW9uIFZhbGlkYXRpb24gcG9pbnRzIHdpbGwgYmUgZWFybmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgICk7XG4gIH07XG59O1xuXG5tb2R1bGUgSW1wbEdyYWRpbmdSZXBvcnQgPSB7XG4gIG9wZW4gSGF6M2xjb3JlO1xuICBpbmNsdWRlIEltcGxHcmFkaW5nUmVwb3J0O1xuICBsZXQgdGV4dHVhbF9zdW1tYXJ5ID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXN1bHRzXCIpXVxuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQodGVzdF9zdW1tYXJ5X3N0cih0ZXN0X3Jlc3VsdHMpKTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9O1xuICB9O1xuXG4gIC8vIGxldCBzdW1tYXJ5ID0gKH5pbmplY3QsIH5yZXBvcnQsIH5tYXhfcG9pbnRzKSA9PiB7XG4gIC8vICAgbGV0IHBlcmNlbnRhZ2UgPSBwZXJjZW50YWdlKHJlcG9ydCk7XG4gIC8vICAgbGV0IHNjb3JlID0gc2NvcmVfb2ZfcGVyY2VudChwZXJjZW50YWdlKTtcbiAgLy8gICBsZXQgdG90YWwgPSB0b3RhbChyZXBvcnQpO1xuICAvLyAgIGxldCBudW1fcGFzc2VkID0gbnVtX3Bhc3NlZChyZXBvcnQpO1xuICAvLyAgIGxldCBzdGF0dXNfY2xhc3MgPSB0b3RhbCA9PSBudW1fcGFzc2VkID8gXCJQYXNzXCIgOiBcIkZhaWxcIjtcbiAgLy8gICBkaXYoXG4gIC8vICAgICB+YXR0cj1cbiAgLy8gICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgLy8gICAgICAgICBcImNlbGwtaXRlbVwiLFxuICAvLyAgICAgICAgIFwidGVzdC1zdW1tYXJ5XCIsXG4gIC8vICAgICAgICAgXCJjZWxsLXJlcG9ydFwiLFxuICAvLyAgICAgICAgIHN0YXR1c19jbGFzcyxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBbXG4gIC8vICAgICAgIHN1bW1hcnlfbWVzc2FnZShcbiAgLy8gICAgICAgICB+c2NvcmUsXG4gIC8vICAgICAgICAgfnRvdGFsLFxuICAvLyAgICAgICAgIH5mb3VuZD1udW1fcGFzc2VkLFxuICAvLyAgICAgICApLFxuICAvLyAgICAgICBiYXIofmluamVjdCwgcmVwb3J0LnJlc3VsdHMpLFxuICAvLyAgICAgXSxcbiAgLy8gICApO1xuICAvLyB9O1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydCA9IChpLCB+aW5qZWN0LCB+aGludDogc3RyaW5nLCB+c3RhdHVzLCAoaWQsIF8pKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlcG9ydFwiXSksXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhUZXN0Vmlldy5qdW1wX3RvX3Rlc3QofmluamVjdCwgSGlkZGVuVGVzdHMsIGlkKSksXG4gICAgICAgIF0pLFxuICAgICAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaWRcIixcbiAgICAgICAgICAgICAgXCJUZXN0XCIgKysgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIC8qIE5PVEU6IHByaW50cyBsZXhpY2FsIGluZGV4LCBub3QgdW5pcXVlIGlkICovXG4gICAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpICsgMSkpXSxcbiAgICAgICAgKSxcbiAgICAgICAgLy8gVGVzdFZpZXcudGVzdF9pbnN0YW5jZV92aWV3KH5mb250X21ldHJpY3MsIGluc3RhbmNlKSxcbiAgICAgIF1cbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaGludFwiLFxuICAgICAgICAgICAgICBcInRlc3QtaW5zdGFuY2VcIixcbiAgICAgICAgICAgICAgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFt0ZXh0KGhpbnQpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnRzID0gKH5pbmplY3QsIH5yZXBvcnQpID0+IHtcbiAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICB8IFNvbWUodGVzdF9yZXN1bHRzKVxuICAgICAgICB3aGVuXG4gICAgICAgICAgTGlzdC5sZW5ndGgodGVzdF9yZXN1bHRzLnRlc3RfbWFwKVxuICAgICAgICAgID09IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cykgPT5cbiAgICAgIC8qIE5PVEU6IFRoaXMgY29uZGl0aW9uIHdpbGwgYmUgZmFsc2Ugd2hlbiBldmFsdWF0aW9uIGNyYXNoZXMsXG4gICAgICAgKiBmb3IgZXhhbXBsZSBkdWUgdG8gYSBzdGFjayBvdmVyZmxvdywgd2hpY2ggbWF5IG9jY3VyIGluIG5vcm1hbCBvcGVyYXRpb24gICovXG4gICAgICBkaXYoXG4gICAgICAgIHJlcG9ydC5oaW50ZWRfcmVzdWx0c1xuICAgICAgICB8PiBMaXN0Lm1hcGkoKGksIChzdGF0dXMsIGhpbnQpKSA9PlxuICAgICAgICAgICAgIGluZGl2aWR1YWxfcmVwb3J0KFxuICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICAgICB+aGludCxcbiAgICAgICAgICAgICAgIH5zdGF0dXMsXG4gICAgICAgICAgICAgICBMaXN0Lm50aCh0ZXN0X3Jlc3VsdHMudGVzdF9tYXAsIGkpLFxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgKSxcbiAgICAgIClcbiAgICB8IF8gPT4gZGl2KFtdKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPVxuICAgICAgKH5pbmplY3QsIH5yZXBvcnQ6IHQsIH5zeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCwgfm1heF9wb2ludHM6IGludCkgPT4ge1xuICAgIENlbGwucGFuZWwoXG4gICAgICB+Y2xhc3Nlcz1bXCJjZWxsLWl0ZW1cIiwgXCJwYW5lbFwiLCBcInRlc3QtcGFuZWxcIl0sXG4gICAgICBbXG4gICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICBcIkltcGxlbWVudGF0aW9uIEdyYWRpbmdcIixcbiAgICAgICAgICB+cmVzdD1cIjogSGlkZGVuIFRlc3RzIHZzLiBZb3VyIEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgICksXG4gICAgICAgIGluZGl2aWR1YWxfcmVwb3J0cyh+aW5qZWN0LCB+cmVwb3J0KSxcbiAgICAgIF0sXG4gICAgICB+Zm9vdGVyPVxuICAgICAgICBTb21lKFxuICAgICAgICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtdGV4dFwiKSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc2NvcmVfdmlldyhcbiAgICAgICAgICAgICAgICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZShyZXBvcnQsIHN5bnRheF9yZXBvcnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3BvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgQCB0ZXh0dWFsX3N1bW1hcnkocmVwb3J0KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIEAgT3B0aW9uLnRvX2xpc3QoXG4gICAgICAgICAgICAgICAgICByZXBvcnQudGVzdF9yZXN1bHRzXG4gICAgICAgICAgICAgICAgICB8PiBPcHRpb24ubWFwKHRlc3RfcmVzdWx0cyA9PlxuICAgICAgICAgICAgICAgICAgICAgICBUZXN0Vmlldy50ZXN0X2Jhcih+aW5qZWN0LCB+dGVzdF9yZXN1bHRzLCBIaWRkZW5UZXN0cylcbiAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBHcmFkaW5nUmVwb3J0ID0ge1xuICBpbmNsdWRlIEdyYWRpbmdSZXBvcnQ7XG5cbiAgbGV0IHZpZXdfb3ZlcmFsbF9zY29yZSA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICBzY29yZV92aWV3KG92ZXJhbGxfc2NvcmUocmVwb3J0KSk7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbnR5cGUgbW9kZWwgPSBFeGVyY2lzZS5zdGl0Y2hlZChDZWxsRWRpdG9yLm1vZGVsKTtcblxudHlwZSB2aXNfbWFya2VkKCdhKSA9XG4gIHwgSW5zdHJ1Y3Rvck9ubHkodW5pdCA9PiAnYSlcbiAgfCBBbHdheXMoJ2EpO1xuXG5sZXQgcmVuZGVyX2NlbGxzID0gKHNldHRpbmdzOiBTZXR0aW5ncy50LCB2OiBsaXN0KHZpc19tYXJrZWQoTm9kZS50KSkpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIHZpcyA9PlxuICAgICAgc3dpdGNoICh2aXMpIHtcbiAgICAgIHwgSW5zdHJ1Y3Rvck9ubHkoZikgPT4gc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID8gU29tZShmKCkpIDogTm9uZVxuICAgICAgfCBBbHdheXMobm9kZSkgPT4gU29tZShub2RlKVxuICAgICAgfSxcbiAgICB2LFxuICApO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5zZWxlY3QsXG4gICAgICB+aW5qZWN0X2dsb2JhbCxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2VsZWN0aW9uOiBvcHRpb24oKEV4ZXJjaXNlLnBvcywgRWRpdG9ycy5TZWxlY3Rpb24uY2VsbCkpLFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgfmV4ZXJjaXNlLFxuICAgICAgfnJlc3VsdHMsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICApID0+IHtcbiAgbGV0IEV4ZXJjaXNlLntlZHN9ID0gZXhlcmNpc2U7XG4gIGxldCBzdGl0Y2hlZF9keW5hbWljcyA9XG4gICAgRXhlcmNpc2Uuc3RpdGNoX2R5bmFtaWMoXG4gICAgICBzZXR0aW5ncy5jb3JlLFxuICAgICAgZXhlcmNpc2UsXG4gICAgICBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzID8gU29tZShyZXN1bHRzKSA6IE5vbmUsXG4gICAgKTtcbiAgbGV0IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgdXNlcl9pbXBsLFxuICAgIHVzZXJfdGVzdHMsXG4gICAgcHJlbHVkZSxcbiAgICBpbnN0cnVjdG9yLFxuICAgIGhpZGRlbl9idWdzLFxuICAgIGhpZGRlbl90ZXN0czogXyxcbiAgfTpcbiAgICBFeGVyY2lzZS5zdGl0Y2hlZChFeGVyY2lzZS5EeW5hbWljc0l0ZW0udCkgPSBzdGl0Y2hlZF9keW5hbWljcztcblxuICBsZXQgZ3JhZGluZ19yZXBvcnQgPSBHcmFkaW5nLkdyYWRpbmdSZXBvcnQubWsoZWRzLCB+c3RpdGNoZWRfZHluYW1pY3MpO1xuXG4gIGxldCBzY29yZV92aWV3ID0gR3JhZGluZy5HcmFkaW5nUmVwb3J0LnZpZXdfb3ZlcmFsbF9zY29yZShncmFkaW5nX3JlcG9ydCk7XG5cbiAgbGV0IGVkaXRvcl92aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmVkaXRvcjogRWRpdG9yLnQsXG4gICAgICAgIH5jYXB0aW9uOiBzdHJpbmcsXG4gICAgICAgIH5zdWJjYXB0aW9uOiBvcHRpb24oc3RyaW5nKT0/LFxuICAgICAgICB+ZGk6IEV4ZXJjaXNlLkR5bmFtaWNzSXRlbS50LFxuICAgICAgICB+cmVzdWx0X2tpbmQ9Q2VsbFJlc3VsdC5WaWV3Lk5vUmVzdWx0cyxcbiAgICAgICAgdGhpc19wb3M6IEV4ZXJjaXNlLnBvcyxcbiAgICAgICkgPT4ge1xuICAgIENlbGxFZGl0b3IudmlldyhcbiAgICAgIH5zZWxlY3Q9cyA9PiBzZWxlY3QoKHRoaXNfcG9zLCBzKSksXG4gICAgICB+c2VsZWN0ZWQ9XG4gICAgICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgICAgIHwgU29tZSgocG9zLCBzKSkgd2hlbiBwb3MgPT0gdGhpc19wb3MgPT4gU29tZShzKVxuICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgfmluamVjdD1cbiAgICAgICAgZnVuXG4gICAgICAgIHwgUmVzdWx0QWN0aW9uKFN0ZXBwZXJFZGl0b3JBY3Rpb24oXywgYSkpXG4gICAgICAgIHwgTWFpbkVkaXRvcihhKSA9PiBpbmplY3RfZ2xvYmFsKFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKGEpKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihTdGVwcGVyQWN0aW9uKGEpKSA9PlxuICAgICAgICAgIGluamVjdF9nbG9iYWwoXG4gICAgICAgICAgICBVcGRhdGVBY3Rpb24uU3RlcHBlckFjdGlvbihcbiAgICAgICAgICAgICAgRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKHRoaXNfcG9zKSxcbiAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihUb2dnbGVTdGVwcGVyKSA9PlxuICAgICAgICAgIGluamVjdF9nbG9iYWwoXG4gICAgICAgICAgICBVcGRhdGVBY3Rpb24uVG9nZ2xlU3RlcHBlcihFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3ModGhpc19wb3MpKSxcbiAgICAgICAgICApLFxuICAgICAgfmluamVjdF9nbG9iYWwsXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5yZXN1bHRfa2luZCxcbiAgICAgIH5jYXB0aW9uPUNlbGwuY2FwdGlvbihjYXB0aW9uLCB+cmVzdD0/c3ViY2FwdGlvbiksXG4gICAgICB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzOiB7XG4gICAgICAgICAgICB0ZXJtOiBkaS50ZXJtLFxuICAgICAgICAgICAgaW5mb19tYXA6IGRpLmluZm9fbWFwLFxuICAgICAgICAgICAgZXJyb3JfaWRzOlxuICAgICAgICAgICAgICBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoXG4gICAgICAgICAgICAgICAgZWRpdG9yLnN0YXRlLm1ldGEudGVybV9yYW5nZXMsXG4gICAgICAgICAgICAgICAgZGkuaW5mb19tYXAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0OiBkaS5yZXN1bHQsXG4gICAgICB9LFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHRpdGxlX3ZpZXcgPSBDZWxsLnRpdGxlX2NlbGwoZWRzLnRpdGxlKTtcblxuICBsZXQgcHJvbXB0X3ZpZXcgPVxuICAgIENlbGwubmFycmF0aXZlX2NlbGwoXG4gICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsLXByb21wdFwiKSwgW2Vkcy5wcm9tcHRdKSxcbiAgICApO1xuXG4gIGxldCBwcmVsdWRlX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBQcmVsdWRlLFxuICAgICAgICB+Y2FwdGlvbj1cIlByZWx1ZGVcIixcbiAgICAgICAgfnN1YmNhcHRpb249c2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID8gXCJcIiA6IFwiIChSZWFkLU9ubHkpXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnByZWx1ZGUsXG4gICAgICAgIH5kaT1wcmVsdWRlLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBjb3JyZWN0X2ltcGxfdmlldyA9XG4gICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAoKSA9PlxuICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICBDb3JyZWN0SW1wbCxcbiAgICAgICAgICB+Y2FwdGlvbj1cIkNvcnJlY3QgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgICB+ZWRpdG9yPWVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICAgICAgfmRpPWluc3RydWN0b3IsXG4gICAgICAgICksXG4gICAgKTtcblxuICAvLyBkZXRlcm1pbmUgdHJhaWxpbmcgaG9sZVxuICAvLyBUT0RPOiBtb2R1bGVcbiAgbGV0IGNvcnJlY3RfaW1wbF9jdHhfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAge1xuICAgICAgICBsZXQgZXhwX2N0eF92aWV3ID0ge1xuICAgICAgICAgIGxldCBjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHggPVxuICAgICAgICAgICAgSGF6M2xjb3JlLkVkaXRvci50cmFpbGluZ19ob2xlX2N0eChcbiAgICAgICAgICAgICAgZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgICAgICAgICAgaW5zdHJ1Y3Rvci5pbmZvX21hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHggPVxuICAgICAgICAgICAgSGF6M2xjb3JlLkVkaXRvci50cmFpbGluZ19ob2xlX2N0eChlZHMucHJlbHVkZSwgcHJlbHVkZS5pbmZvX21hcCk7XG4gICAgICAgICAgc3dpdGNoIChjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgsIHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgpIHtcbiAgICAgICAgICB8IChOb25lLCBfKSA9PiBOb2RlLmRpdihbdGV4dChcIk5vIGNvbnRleHQgYXZhaWxhYmxlICgxKVwiKV0pXG4gICAgICAgICAgfCAoXywgTm9uZSkgPT4gTm9kZS5kaXYoW3RleHQoXCJObyBjb250ZXh0IGF2YWlsYWJsZSAoMilcIildKSAvLyBUT0RPIHNob3cgZXhlcmNpc2UgY29uZmlndXJhdGlvbiBlcnJvclxuICAgICAgICAgIHwgKFxuICAgICAgICAgICAgICBTb21lKGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCksXG4gICAgICAgICAgICAgIFNvbWUocHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCksXG4gICAgICAgICAgICApID0+XG4gICAgICAgICAgICBsZXQgc3BlY2lmaWNfY3R4ID1cbiAgICAgICAgICAgICAgSGF6M2xjb3JlLkN0eC5zdWJ0cmFjdF9wcmVmaXgoXG4gICAgICAgICAgICAgICAgY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4LFxuICAgICAgICAgICAgICAgIHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzd2l0Y2ggKHNwZWNpZmljX2N0eCkge1xuICAgICAgICAgICAgfCBOb25lID0+IE5vZGUuZGl2KFt0ZXh0KFwiTm8gY29udGV4dCBhdmFpbGFibGVcIildKSAvLyBUT0RPIHNob3cgZXhlcmNpc2UgY29uZmlndXJhdGlvbiBlcnJvclxuICAgICAgICAgICAgfCBTb21lKHNwZWNpZmljX2N0eCkgPT5cbiAgICAgICAgICAgICAgQ3R4SW5zcGVjdG9yLmN0eF92aWV3KH5pbmplY3Q9aW5qZWN0X2dsb2JhbCwgc3BlY2lmaWNfY3R4KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBDZWxsLnNpbXBsZV9jZWxsX3ZpZXcoW1xuICAgICAgICAgIENlbGwuc2ltcGxlX2NlbGxfaXRlbShbXG4gICAgICAgICAgICBDZWxsLmNhcHRpb24oXG4gICAgICAgICAgICAgIFwiQ29ycmVjdCBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICAgICAgICB+cmVzdD1cIiAoVHlwZSBTaWduYXR1cmVzIE9ubHkpXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXhwX2N0eF92aWV3LFxuICAgICAgICAgIF0pLFxuICAgICAgICBdKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICBsZXQgeW91cl90ZXN0c192aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgWW91clRlc3RzVmFsaWRhdGlvbixcbiAgICAgICAgfmNhcHRpb249XCJUZXN0IFZhbGlkYXRpb25cIixcbiAgICAgICAgfnN1YmNhcHRpb249XCI6IFlvdXIgVGVzdHMgdnMuIENvcnJlY3QgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgfmVkaXRvcj1lZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgICAgfmRpPXRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgfnJlc3VsdF9raW5kPVRlc3RSZXN1bHRzLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCB3cm9uZ19pbXBsX3ZpZXdzID1cbiAgICBMaXN0Lm1hcGkoXG4gICAgICAoaSwgKEV4ZXJjaXNlLntpbXBsLCBffSwgZGkpKSA9PiB7XG4gICAgICAgIEluc3RydWN0b3JPbmx5KFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICAgICAgSGlkZGVuQnVncyhpKSxcbiAgICAgICAgICAgICAgfmNhcHRpb249XCJXcm9uZyBJbXBsZW1lbnRhdGlvbiBcIiArKyBzdHJpbmdfb2ZfaW50KGkgKyAxKSxcbiAgICAgICAgICAgICAgfmVkaXRvcj1pbXBsLFxuICAgICAgICAgICAgICB+ZGksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgTGlzdC5jb21iaW5lKGVkcy5oaWRkZW5fYnVncywgaGlkZGVuX2J1Z3MpLFxuICAgICk7XG5cbiAgbGV0IG11dGF0aW9uX3Rlc3RpbmdfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgR3JhZGluZy5NdXRhdGlvblRlc3RpbmdSZXBvcnQudmlldyhcbiAgICAgICAgfmluamVjdD1pbmplY3RfZ2xvYmFsLFxuICAgICAgICBncmFkaW5nX3JlcG9ydC5tdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgZ3JhZGluZ19yZXBvcnQucG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IHlvdXJfaW1wbF92aWV3ID0ge1xuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VySW1wbCxcbiAgICAgICAgfmNhcHRpb249XCJZb3VyIEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfaW1wbCxcbiAgICAgICAgfmRpPXVzZXJfaW1wbCxcbiAgICAgICAgfnJlc3VsdF9raW5kPUV2YWxSZXN1bHRzLFxuICAgICAgKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBzeW50YXhfZ3JhZGluZ192aWV3ID1cbiAgICBBbHdheXMoR3JhZGluZy5TeW50YXhSZXBvcnQudmlldyhncmFkaW5nX3JlcG9ydC5zeW50YXhfcmVwb3J0KSk7XG5cbiAgbGV0IGltcGxfdmFsaWRhdGlvbl92aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgWW91clRlc3RzVGVzdGluZyxcbiAgICAgICAgfmNhcHRpb249XCJJbXBsZW1lbnRhdGlvbiBWYWxpZGF0aW9uXCIsXG4gICAgICAgIH5zdWJjYXB0aW9uPVxuICAgICAgICAgIFwiOiBZb3VyIFRlc3RzIChjb2RlIHN5bmNocm9uaXplZCB3aXRoIFRlc3QgVmFsaWRhdGlvbiBjZWxsIGFib3ZlKSB2cy4gWW91ciBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgICB+ZGk9dXNlcl90ZXN0cyxcbiAgICAgICAgfnJlc3VsdF9raW5kPVRlc3RSZXN1bHRzLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBoaWRkZW5fdGVzdHNfdmlldyA9XG4gICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAoKSA9PlxuICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICBIaWRkZW5UZXN0cyxcbiAgICAgICAgICB+Y2FwdGlvbj1cIkhpZGRlbiBUZXN0c1wiLFxuICAgICAgICAgIH5lZGl0b3I9ZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyxcbiAgICAgICAgICB+ZGk9aW5zdHJ1Y3RvcixcbiAgICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBpbXBsX2dyYWRpbmdfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgR3JhZGluZy5JbXBsR3JhZGluZ1JlcG9ydC52aWV3KFxuICAgICAgICB+aW5qZWN0PWluamVjdF9nbG9iYWwsXG4gICAgICAgIH5yZXBvcnQ9Z3JhZGluZ19yZXBvcnQuaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgfnN5bnRheF9yZXBvcnQ9Z3JhZGluZ19yZXBvcnQuc3ludGF4X3JlcG9ydCxcbiAgICAgICAgfm1heF9wb2ludHM9Z3JhZGluZ19yZXBvcnQucG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICksXG4gICAgKTtcblxuICBbc2NvcmVfdmlldywgdGl0bGVfdmlldywgcHJvbXB0X3ZpZXddXG4gIEAgcmVuZGVyX2NlbGxzKFxuICAgICAgc2V0dGluZ3MsXG4gICAgICBbXG4gICAgICAgIHByZWx1ZGVfdmlldyxcbiAgICAgICAgY29ycmVjdF9pbXBsX3ZpZXcsXG4gICAgICAgIGNvcnJlY3RfaW1wbF9jdHhfdmlldyxcbiAgICAgICAgeW91cl90ZXN0c192aWV3LFxuICAgICAgXVxuICAgICAgQCB3cm9uZ19pbXBsX3ZpZXdzXG4gICAgICBAIFtcbiAgICAgICAgbXV0YXRpb25fdGVzdGluZ192aWV3LFxuICAgICAgICB5b3VyX2ltcGxfdmlldyxcbiAgICAgICAgc3ludGF4X2dyYWRpbmdfdmlldyxcbiAgICAgICAgaW1wbF92YWxpZGF0aW9uX3ZpZXcsXG4gICAgICAgIGhpZGRlbl90ZXN0c192aWV3LFxuICAgICAgICBpbXBsX2dyYWRpbmdfdmlldyxcbiAgICAgIF0sXG4gICAgKTtcbn07XG5cbmxldCByZXNldF9idXR0b24gPSBpbmplY3QgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMudHJhc2gsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgdGhpcyBleGVyY2lzZT8gWW91IHdpbGwgbG9zZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IHlvdSBoYXZlIHdyaXR0ZW4sIGFuZCBjb3Vyc2Ugc3RhZmYgaGF2ZSBubyB3YXkgdG8gcmVzdG9yZSBpdCFcIixcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5SZXNldEN1cnJlbnRFZGl0b3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgICAgfTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiUmVzZXQgRXhlcmNpc2VcIixcbiAgKTtcblxubGV0IGluc3RydWN0b3JfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPSBFeGVyY2lzZS5leHBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lLCBleGVyY2lzZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUofmZpbGVuYW1lLCB+Y29udGVudF90eXBlLCB+Y29udGVudHMpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBpbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPVxuICAgICAgICBFeGVyY2lzZS5leHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBUcmFuc2l0aW9uYXJ5IEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgaW5zdHJ1Y3Rvcl9ncmFkaW5nX2V4cG9ydCA9IChleGVyY2lzZTogRXhlcmNpc2Uuc3RhdGUpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICAvLyAubWwgZmlsZXMgYmVjYXVzZSBzaG93IHVzZXMgT0NhbWwgc3ludGF4IChkdW5lIGhhbmRsZXMgc2VhbWxlc3NseSlcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZSArKyBcIl9ncmFkaW5nLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPSBFeGVyY2lzZS5leHBvcnRfZ3JhZGluZ19tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBHcmFkaW5nIEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgZG93bmxvYWRfZWRpdG9yX3N0YXRlID0gKH5pbnN0cnVjdG9yX21vZGUpID0+XG4gIExvZy5nZXRfYW5kKGxvZyA9PiB7XG4gICAgbGV0IGRhdGEgPSBFeHBvcnQuZXhwb3J0X2FsbCh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKTtcbiAgICBKc1V0aWwuZG93bmxvYWRfanNvbihFeGVyY2lzZVNldHRpbmdzLmZpbGVuYW1lLCBkYXRhKTtcbiAgfSk7XG5cbmxldCBleHBvcnRfc3VibWlzc2lvbiA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICBkb3dubG9hZF9lZGl0b3Jfc3RhdGUofmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgU3VibWlzc2lvblwiLFxuICApO1xuXG5sZXQgaW1wb3J0X3N1Ym1pc3Npb24gPSAofmluamVjdCkgPT5cbiAgV2lkZ2V0cy5maWxlX3NlbGVjdF9idXR0b25fbmFtZWQoXG4gICAgXCJpbXBvcnQtc3VibWlzc2lvblwiLFxuICAgIEljb25zLnN0YXIsXG4gICAgZmlsZSA9PiB7XG4gICAgICBzd2l0Y2ggKGZpbGUpIHtcbiAgICAgIHwgTm9uZSA9PiBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmVcbiAgICAgIHwgU29tZShmaWxlKSA9PiBpbmplY3QoVXBkYXRlQWN0aW9uLkluaXRJbXBvcnRBbGwoZmlsZSkpXG4gICAgICB9XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkltcG9ydCBTdWJtaXNzaW9uXCIsXG4gICk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZmlsdGVyX3BhdXNlID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlclBhdXNlLFxuICBmb3JtX2lkOiBGaWx0ZXJQYXVzZSxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfcGF1c2UoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlBhdXNlIGZpbHRlciBmb3Igc3RlcHBlci4gVGhlIGV2YWx1YXRpb24gb2YgYWxsIHN1YmV4cHJlc3Npb25zIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgYmUgcGF1c2VkIGR1cmluZyBldmFsdWF0aW9uXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJTdGVwLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImV2YWwgJGUgKyAkZSBpblxcbigxICsgMikgKiAoMyArIDQpXCIpLFxuICAgICAgbWVzc2FnZTogXCJUaGUgZXhwcmVzc2lvbiAoMSAqIDIpICsgKDMgKiA0KSBpcyBndWFyZGVkIGJ5IGEgcGF1c2UgZmlsdGVyIGV4cHJlc3Npb24gcGF1c2UgJHYgKyAkdiwgd2hpY2ggaW5zdHJ1Y3QgdGhlIGV2YWx1YXRvciB0byBwYXVzZSB0aGUgZXZhbHVhdGlvbiB3aGVuIGl0IHNlZXMgYSB2YWx1ZSBpcyBhZGRlZCB0byBhbm90aGVyIHZhbHVlLiBBZnRlciBldmFsdWF0aW5nIHN1YnRlcm1zICgxICogMikgYW5kICgzICogNCksIHRoZSBleHByZXNzaW9uIHR1cm5zIGludG8gMiArIDEyLiAyIG1hdGNoZXMgdGhlIGZpcnN0ICR2IHBhdHRlcm4sIGFuZCAxMiBtYXRjaGVzIHRoZSBzZWNvbmQgJHYgcGF0dGVybi4gVGhlcmVmb3JlLCB0aGUgZXZhbHVhdG9yIHN0b3BzIHdoZW4gdGhlIGV4cHJlc3Npb24gc3RlcHMgdG8gMiArIDEyXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfZXZhbCA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJFdmFsLFxuICBmb3JtX2lkOiBGaWx0ZXJFdmFsLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19ldmFsKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJGdWxsIGV2YWx1YXRpb24gZmlsdGVyIGZvciBzdGVwcGVyLiBBbGwgc3ViZXhwcmVzc2lvbnMgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBnZXQgZXZhbHVhdGVkIGluIG9uZSBnb1wiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVyRXZhbCxcbiAgICAgIHRlcm06XG4gICAgICAgIG1rX2V4YW1wbGUoXG4gICAgICAgICAgXCJwYXVzZSAkZSBpblxcbmhpZGUgbGV0ID0gaW4gaW5cXG5sZXQgeCA9IDEgaW5cXG5sZXQgeSA9IDIgaW5cXG54ICsgeVwiLFxuICAgICAgICApLFxuICAgICAgbWVzc2FnZTogXCJwYXVzZSAkZSBpbiBpbnN0cnVjdCB0aGUgZXZhbHVhdG9yIHRvIGFjdCBsaWtlIGEgc2luZ2xlLXN0ZXBwZXIsIGUuZy4gc3RvcCBhdCBldmVyeSBzdGVwLiBUaGUgaGlkZSBmaWx0ZXIgZXhwcmVzc2lvbiBpbnN0cnVjdHMgdGhlIGV2YWx1YXRvciB0byBza2lwIG92ZXIgYWxsIGV2YWx1YXRvciBzdGVwcyB0aGF0IGRlc3RydWN0cyBwZXJmb3JtIHN1YnN0aXR1dGlvbiBvbiBhIGxldC1leHByZXNzaW9uLiBIZXJlLCB0aGUgc3Vic3RpdHV0aW9uIG9mIHZhcmlhYmxlIHggYW5kIHkgaXMgc2tpcHBlZCBvdmVyIGFuZCB3ZSBkaXJlY3RseSBnb3QgMSArIDIgaW4gdGhlIHJlc3VsdCBhcmVhLlwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5sZXQgZmlsdGVyX2hpZGUgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVySGlkZSxcbiAgZm9ybV9pZDogRmlsdGVySGlkZSxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfaGlkZShbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiU3RlcCBoaWRpbmcgZmlsdGVyIGZvciBzdGVwcGVyLiBUaGUgZWxpbWluYXRpb24gb2YgYWxsIGxhbmd1YWdlIGNvbnN0cnVjdHMgKGxpa2UgYmluYXJ5IG9wZXJhdG9yICsgb3IgbGV0IC4uID0gLi4gaW4pIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgZ2V0IHNraXBwZWQuXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJIaWRlLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcInBhdXNlICRlIGluXFxuaGlkZSBsZXQgPSBpbiBpblxcbmxldCB4ID0gMSBpblxcbmxldCB5ID0gMiBpblxcbnggKyB5XCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiBcInBhdXNlICRlIGluIGluc3RydWN0IHRoZSBldmFsdWF0b3IgdG8gYWN0IGxpa2UgYSBzaW5nbGUtc3RlcHBlciwgZS5nLiBzdG9wIGF0IGV2ZXJ5IHN0ZXAuIFRoZSBoaWRlIGZpbHRlciBleHByZXNzaW9uIGluc3RydWN0cyB0aGUgZXZhbHVhdG9yIHRvIHNraXAgb3ZlciBhbGwgZXZhbHVhdG9yIHN0ZXBzIHRoYXQgZGVzdHJ1Y3RzIHBlcmZvcm0gc3Vic3RpdHV0aW9uIG9uIGEgbGV0LWV4cHJlc3Npb24uIEhlcmUsIHRoZSBzdWJzdGl0dXRpb24gb2YgdmFyaWFibGUgeCBhbmQgeSBpcyBza2lwcGVkIG92ZXIgYW5kIHdlIGRpcmVjdGx5IGdvdCAxICsgMiBpbiB0aGUgcmVzdWx0IGFyZWEuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfZGVidWcgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyRGVidWcsXG4gIGZvcm1faWQ6IEZpbHRlckRlYnVnLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19kZWJ1ZyhbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiRGVidWcgZmlsdGVyIGZvciBzdGVwcGVyLiBBbGwgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbiB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGJlIHN0ZXBwZWQgdGhyb3VnaC5cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlckRlYnVnLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImV2YWwgJGUgaW5cXG5kZWJ1ZyAkdiArICR2ICsgJHYgaW5cXG4xICsgMiArIDNcIiksXG4gICAgICBtZXNzYWdlOiBcIlRoZSBkZWJ1ZyBmaWx0ZXIgcGF0dGVybiAkdiArICR2ICsgJHYgbWF0Y2hlcyAxICsgMiArIDMsIHRoZXJlZm9yZSwgdGhlIGV2YWx1YXRvciB3aWxsIHN0ZXAgaW50byB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbiAxICsgMiArIDMuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCB1bnF1b3RlID0gKH5zZWxfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJTZWxlY3RvcixcbiAgZm9ybV9pZDogRmlsdGVyU2VsZWN0b3IsXG4gIGFic3RyYWN0OiBTaW1wbGUubWtfMSgoXCJzZWxcIiwgc2VsX2lkKSwgc2VsJyA9PiBbbWtfdW5xdW90ZShbXSksIHNlbCddKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlNlbGVjdG9yIGV4cHJlc3Npb24gZm9yIGEgc3RlcHBlciBmaWx0ZXIgcGF0dGVybi4gV2hlbiBbKnNlbCpdKCVzKSBpcyAnZScsIGl0IG1hdGNoZXMgYW55IGV4cHJlc3Npb24sIHdoZW4gWypzZWwqXSglcykgaXMgJ3YnIGl0IG9ubHkgbWF0Y2hlcyB2YWx1ZXMuXCIsXG4gICAgICBzZWxfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgc2VsX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW10sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxuLyogKEEpIFVzZSB0aGlzIGZpbGUgYXMgYW4gZXhhbXBsZSBmb3IgYWRkaW5nIGEgbmV3IGZvcm0gdG8gRXhwbGFpblRoaXMuXG4gKiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gY29weS1wYXN0ZSB0aGlzIGZpbGUgYW5kIG1vZGlmeSBpdCB0byBhZGQgYSBuZXcgZm9ybSAqL1xuXG5sZXQgc2luZ2xlID0gKH5wYXRfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICAvKiAoQikgWW91J2xsIG5lZWQgdG8gYWRkIG5ldyBjYXNlcyB0byBFeHBsYWluVGhpc0Zvcm0ucmUgZm9yIHRoZSBuZXcgZm9ybVxuICAgKiB0byByZXByZXNlbnQgYSBncm91cF9pZCBhbmQgZm9ybV9pZC4gVGhpcyBTaW1wbGUgc3R5bGUgaXMgc3BlY2lhbGl6ZWRcbiAgICogdG8gc2luZ2xldG9uIGdyb3Vwcy4gSW4gZ2VuZXJhbCwgdGhlIGdyb3VwX2lkIG5lZWRzIHRvIGJlIHVuaXF1ZSwgYW5kXG4gICAqIGZvcm1faWRzIG5lZWQgdG8gYmUgdW5pcXVlIHdpdGhpbiBhIGdyb3VwLiBUaGVzZSBpZHMgYXJlIHVzZWQgdG8gdHJhY2tcbiAgICogRXhwbGFpblRoaXMgcGVyc2lzdGVudCBzdGF0ZS4gKi9cbiAgZ3JvdXBfaWQ6IEZpeEV4cChCYXNlKSxcbiAgZm9ybV9pZDogRml4RXhwKEJhc2UpLFxuICAvKiAoQykgVGhlIGFic3RyYWN0IGZpZWxkIGRlZmluZXMgYW4gYWJzdHJhY3QgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdGhlXG4gICAqIG5ldyBmb3JtLiBZb3UnbGwgbmVlZCB0byBwcm92aWRlIHBhaXJzIGFzc29jaWF0aW5nIGFueSByZXByZXNlbnRhdGl2ZVxuICAgKiBzdWJ0ZXJtcyBvZiB0aGUgZXhlbXBsYXIgKGUuZy4gXCJlX2FyZ1wiIGFuZCBcImVfZnVuXCIgYmVsb3cpIHdpdGggdGhlXG4gICAqIGNvbmNyZXRlIHN1YnRlcm1zIG9mIHRoZSB0ZXJtIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCAoaGVyZSwgYXJnX2lkXG4gICAqIGFuZCBmbl9pZCkuIFlvdSdsbCB0aGVuIG5lZWQgYSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBzZWdtZW50XG4gICAqIHJlcHJlc2VudGluZyB5b3VyIGFic3RyYWN0LiBUaGlzIGlzIGRvbmUgaW4gdGhpcyBpbmRpcmVjdCB3YXkgc29cbiAgICogYXMgdG8gYXNzb2NpYXRlIHJlcHJlc2VudGF0aXZlIGFuZCBjb25jcmV0ZSBzdWJ0ZXJtcyBpZHMgZm9yXG4gICAqIHN5bnRheCBoaWdobGlnaHRpbmcgcHVycG9zZXMuICovXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcGF0X2lkKSwgKFwiZVwiLCBib2R5X2lkKSwgKHAsIGUpID0+XG4gICAgICBbbWtfZml4KFtbc3BhY2UoKSwgcCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgZV1cbiAgICApLFxuICAvKiAoRCkgVGhlIGV4cGxhbmF0aW9uIHdoaWNoIHdpbGwgYXBwZWFyIGluIHRoZSBzaWRlYmFyIGJlbG93IHRoZSBhYnN0cmFjdCAqL1xuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiUmVjdXJzaXZlbHkgcmVwbGFjZXMgYWxsIG9jY3VyZW5jZXMgb2YgdGhlIFsqcGF0dGVybipdKCVzKSBpbnNpZGUgdGhlIFsqYm9keSpdKCVzKSB3aXRoIHRoZSBlbnRpcmUgWypib2R5Kl0oJXMpIGl0c2VsZiwgZWZmZWN0aXZlbHkgY3JlYXRpbmcgYW4gaW5maW5pdGUgZXhwcmVzc2lvbi4gVW5sZXNzIFsqcGF0dGVybipdKCVzKSBpcyBhIGZ1bmN0aW9uLCBpdCBpcyBsaWtlbHkgdG8gZXZhbHVhdGUgZm9yZXZlci5cIixcbiAgICAgIHBhdF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcGF0X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICAvKiAoRSkgQWRkaXRpb25hbCBtb3JlIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhc3NvY2lhdGVkIGV4cGxhbmF0aW9ucyAqL1xuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRml4MSxcbiAgICAgIHRlcm06IG1rX2V4YW1wbGUoXCJmaXggeCAtPiB4ICsgMVwiKSxcbiAgICAgIG1lc3NhZ2U6IHt8XG4gICAgICAgICAgICAgIFRyaWVzIHRvIGNyZWF0ZSB0aGUgaW5maW5pdGUgZXhwcmVzc2lvbiAoKCguLi4pICsgMSkgKyAxKSArIDEgYnV0IHRpbWVzIG91dFxuICAgICAgICAgICAgICB8fSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHN1Yl9pZDogRml4MixcbiAgICAgIHRlcm06XG4gICAgICAgIG1rX2V4YW1wbGUoXG4gICAgICAgICAgXCIoZml4IGYgLT4gZnVuIHggLT4gXFxuaWYgeCA9PSAwIHRoZW4gXFxuMCBcXG5lbHNlIFxcbmYoeC0xKSArIDJcXG4pICg1KVwiLFxuICAgICAgICApLFxuICAgICAgbWVzc2FnZToge3xcbiAgICAgICAgICAgICBBIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0IGRvdWJsZXMgYSBnaXZlbiBudW1iZXIuXG4gICAgICAgICAgICAgIHx9LFxuICAgIH0sXG4gIF0sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90cGF0ID0gdHBhdChcInRfdmFyXCIpO1xubGV0IF90eXBfYXJnID0gdHlwKFwidHlfYXJnXCIpO1xubGV0IGZvcmFsbF90eXBfY29sb3JpbmdfaWRzID1cbiAgICAofnRwYXRfaWQ6IElkLnQsIH50Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHBhdCksIHRwYXRfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9hcmcpLCB0Ym9keV9pZCksXG5dO1xubGV0IGZvcmFsbF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBmb3JhbGwgdHlwZSBjbGFzc2lmaWVzIHBvbHltb3JwaGljIHZhbHVlcyB2YXJ5aW5nIG92ZXIgWyp0eXBlIHZhcmlhYmxlKl0oJXMpIHdpdGggWyppbnN0YW50aWF0ZWQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBGb3JhbGxUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19mb3JhbGwoW1tzcGFjZSgpLCBfdHBhdCwgc3BhY2UoKV1dKSwgX3R5cF9hcmddLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90cGF0KSwgW190eXBfYXJnXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBmb3JhbGw6IGdyb3VwID0ge2lkOiBGb3JhbGxUeXAsIGZvcm1zOiBbZm9yYWxsX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGJhc2ljX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQmFzaWMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHggLT4geFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaWRlbnRpdHkgZnVuY3Rpb24uIFdoZW4gZ2l2ZW4gYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhhdCBhcmd1bWVudC5cIixcbn07XG5sZXQgd2lsZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFdpbGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIF8gLT4gM1wiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDMuXCIsXG59O1xubGV0IGludGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEludExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gMSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSAxLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGZsb2F0bGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oRmxvYXRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIDEuMSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSAxLjEsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgYm9vbGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEJvb2xMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHRydWUgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgdHJ1ZSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBzdHJsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihTdHJMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFxcXCJhYmNcXFwiIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIFxcXCJhYmNcXFwiLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IHRyaXZfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihUcml2KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoKSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB0aGUgKCkgdmFsdWUsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGlzdG5pbF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKExpc3ROaWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFtdIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHRoZSBlbXB0eSBsaXN0IHZhbHVlLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxpc3RsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihMaXN0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBbeCwgeV0gLT4geFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBsaXN0IG9mIHR3byBlbGVtZW50cywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IGNvbnNfaGRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDb25zSGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIGhkOjp0bCAtPiBoZFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBub24tZW1wdHkgbGlzdCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgaGVhZCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IGNvbnNfc25kX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQ29uc1NuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gZnN0OjpzbmQ6OnRsIC0+IHNuZFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBsaXN0IHdpdGggYXQgbGVhc3QgdHdvIGVsZW1lbnRzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IHZhcl9pbmNyX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVmFySW5jciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4geCAtPiB4ICsgMVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGludGVnZXIgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGFyZ3VtZW50IHBsdXMgMS5cIixcbn07XG5sZXQgdmFyX2FuZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFZhckFuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gYiAtPiBiICYmIHRydWVcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIGJvb2xlYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGxvZ2ljYWwtYW5kIG9mIHRoZSBhcmd1bWVudCBhbmQgdHJ1ZSwgd2hpY2ggZXZhbHVhdGVzIHRvIHRoZSB0cnV0aCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuXCIsXG59O1xubGV0IHR1cGxlMl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFR1cGxlMiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gKHgsIHkpIC0+IHggKyB5XCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSAyLXR1cGxlIG9mIGludGVnZXJzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBzdW0gb2YgdGhlIHR3byBpbnRlZ2Vycy5cIixcbn07XG5sZXQgdHVwbGUzX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVHVwbGUzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoYSwgYiwgYykgLT5cXG5hICYmIGIgJiYgY1wiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgMy10dXBsZSBvZiBib29sZWFucywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgbG9naWNhbC1hbmQgb2YgdGhlIHRocmVlIGJvb2xlYW5zLlwiLFxufTtcbmxldCBjdHJfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDdHIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIE5vbmUgLT4gMVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgTm9uZSBjb25zdHJ1Y3RvciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyAxLlwiLFxufTtcbmxldCBhcF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEFwKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBTb21lKGEpIC0+IGFcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIFNvbWUgY29uc3RydWN0b3IgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGNvbnN0cnVjdG9yJ3MgYXJndW1lbnQuXCIsXG59O1xuLy8gVE9ETyBmb3Igc2hhcmVkIGV4YW1wbGVzLCBzaG91bGQgdGhlIGZlZWRiYWNrIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGZvciBlYWNoIFwiaW5zdGFuY2VcIj9cbmxldCBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX3BhdF9pZDogSWQudCwgc2ZfYm9keV9pZDogSWQudCwgfnBhdF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX3BhdF9pZCwgcGF0X2lkKSwgKHNmX2JvZHlfaWQsIGJvZHlfaWQpXTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInBcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEJhc2UpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0gLy8gVE9ETyBXaGF0IG90aGVyIGV4YW1wbGVzIHNob3VsZCBiZSBoZXJlXG4gIH07XG59O1xuXG5sZXQgX3BhdCA9IFBpZWNlLkdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZW1wdHlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKSwgYWZ0ZXIgdGhlIFtlbXB0eSBob2xlIHBhdHRlcm5dKCVzKSBpcyBmaWxsZWQuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEVtcHR5SG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtiYXNpY19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSU5WQUxJRFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX211bHRpX2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcyksIGFmdGVyIHRoZSBbaW52YWxpZCBhcmd1bWVudCBwYXR0ZXJuXSglcykgaXMgY29ycmVjdGVkLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChNdWx0aUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSU5WQUxJRFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3dpbGRfZXhwX2NvbG9yaW5nX2lkcyA9ICh+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpXTtcbn07XG5sZXQgZnVuY3Rpb25fd2lsZF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgaXMgaWdub3JlZCwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBfcGF0ID0gcGF0KFwiX1wiKTtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoV2lsZCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJfXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbd2lsZF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSW50TGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2ludGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9pbnRsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlc2AuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChJbnQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSW50TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50bGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJGbG9hdExpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9mbG9hdGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9mbG9hdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVmYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIC8vIFRPRE8gcHJpbnQgb3V0IHRoZSBmbG9hdCBsaXRlcmFsIG5pY2VyXG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEZsb2F0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkZsb2F0TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkJvb2xMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fYm9vbGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9ib29sbGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJWJgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQm9vbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJCb29sTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYm9vbGxpdF9mdW5fZXhdLFxuICB9O1xufTtcblxubGV0IF9wYXQgPSBwYXQoXCJTdHJpbmdMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3N0cmxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVzYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG5cbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoU3RyaW5nKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIlN0cmluZ0xpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3N0cmxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiKClcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHJpdl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl90cml2X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyB0aGUgdHJpdmlhbCB2YWx1ZSBgKClgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS4gVGhpcyBpZiBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhIHplcm8gYXJndW1lbnQgZnVuY3Rpb24uXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFRyaXYpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiKClcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0cml2X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJbXVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2xpc3RuaWxfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIHRoZSBlbXB0eSBsaXN0IGBbXWAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0TmlsKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIltdXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGlzdG5pbF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2xpc3RsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgYXJlIGxpc3RzIHdpdGggJXMtZWxlbWVudHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdExpdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChfcGF0KSxcbiAgICAgICAgW21rX2xpc3RfcGF0KFtbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildXSldLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsaXN0bmlsX2Z1bl9leCwgbGlzdGxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlICphcmd1bWVudCBwYXR0ZXJuKiBhcmUgbm9uLWVtcHR5IGxpc3RzIHRoYXQgbWF0Y2ggdGhlIFsqaGVhZCBwYXR0ZXJuKl0oJXMpIGFuZCBbKnRhaWwgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb25zID0gY29uc19wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtbc3BhY2UoKSwgX3BhdF9oZCwgY29ucywgX3BhdF90bCwgc3BhY2UoKV1dKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdENvbnMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb25zKSwgW3BhdChcInBfaGRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25zX2hkX2Z1bl9leCwgY29uc19zbmRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInhcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdmFyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3Zhcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBbKnZhcmlhYmxlKl0oJXMpIGAlc2AsIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChWYXIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwieFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leCwgdmFyX2luY3JfZnVuX2V4LCB2YXJfYW5kX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9jb21tYSA9IGNvbW1hX3BhdCgpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfY29tbWEpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgYXJlICVzLXR1cGxlcyB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBlbGVtZW50IHBhdHRlcm4uIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBwYXQoXCJwMVwiKSwgX2NvbW1hLCBzcGFjZSgpLCBwYXQoXCIuLi5cIiksIHNwYWNlKCldXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX2NvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUyX2Z1bl9leCwgdHVwbGUzX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fdHVwbGUyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSAyLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyLCBzcGFjZSgpXV0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChUdXBsZTIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUyX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlM19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+cGF0M19pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQzKSwgcGF0M19pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fdHVwbGUzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSAzLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kIHRoZSB0aGlyZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqdGhpcmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQxLFxuICAgICAgICBjb21tYV9wYXQoKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDIsXG4gICAgICAgIGNvbW1hLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MyxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgIF0sXG4gICAgXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkNcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fY3RyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgdGhlICpgJXNgIGNvbnN0cnVjdG9yKi4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEN0ciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJDXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbY3RyX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbl9pZDogSWQudCwgfmFyZ19pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwKSwgYm9keV9pZCksXG4gIF07XG59O1xubGV0IGZ1bmN0aW9uX2FwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aGVyZSB0aGUgKmNvbnN0cnVjdG9yIGFyZ3VtZW50KiBtYXRjaGVzIHRoZSBbKmNvbnN0cnVjdG9yIGFyZ3VtZW50IHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgYXAgPSBta19hcF9wYXQoW1tfcGF0X2FyZ11dKTtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdF9jb24sIGFwLCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChBcCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFwKSwgW3BhdChcInBfY29uXCIpLCBta19hcF9wYXQoW1twYXQoXCJwX2FyZ1wiKV1dKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2FwX2Z1bl9leF0sXG4gIH07XG59O1xuXG5sZXQgZnVuY3Rpb25zOiBncm91cCA9IHtpZDogRnVuY3Rpb25FeHAoQmFzZSksIGZvcm1zOiBbZnVuY3Rpb25fZXhwXX07XG5sZXQgZnVuY3Rpb25zX2VtcHR5X2hvbGUgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChFbXB0eUhvbGUpLFxuICBmb3JtczogW2Z1bmN0aW9uX2VtcHR5X2hvbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfbXVsdGlfaG9sZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKE11bHRpSG9sZSksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbXVsdGlfaG9sZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc193aWxkID0ge1xuICBpZDogRnVuY3Rpb25FeHAoV2lsZCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fd2lsZF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19pbnQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChJbnQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2ludGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19mbG9hdCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEZsb2F0KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9mbG9hdGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19ib29sID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQm9vbCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fYm9vbGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3N0ciA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFN0cmluZyksXG4gIGZvcm1zOiBbZnVuY3Rpb25fc3RybGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHJpdiA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFRyaXYpLFxuICBmb3JtczogW2Z1bmN0aW9uX3RyaXZfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19saXN0bmlsID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTGlzdE5pbCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbGlzdG5pbF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2xpc3RsaXQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChMaXN0TGl0KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9saXN0bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfY29ucyA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RDb25zKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9jb25zX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdmFyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVmFyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl92YXJfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90dXBsZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlMiA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMiksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHVwbGUyX2V4cCwgZnVuY3Rpb25fdHVwbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZTMgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChUdXBsZTMpLFxuICBmb3JtczogW2Z1bmN0aW9uX3R1cGxlM19leHAsIGZ1bmN0aW9uX3R1cGxlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfY3RyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQ3RyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9jdHJfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19hcCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEFwKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9hcF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVtcHR5X2hvbGVfdGVtcGxhdGUgPSAoX3NvcnQsIHN0ciwgaWQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiVGhpcyBzaG91bGQgYmUgZmlsbGVkIHdpdGggJXMgdG8gY29tcGxldGUgdGhlIHByb2dyYW0uXCIsXG4gICAgICBzdHIsXG4gICAgKTtcbiAge1xuICAgIGlkLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IG11bHRpX2hvbGVfdGVtcGxhdGUgPSAoc29ydCwgaWQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGlzIGFuIGludmFsaWQgdGVybS5cIjtcbiAge1xuICAgIGlkLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbc29ydChcIklOVkFMSURcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZW1wdHlfaG9sZV9leHA6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUuZW1wdHlfaG9sZV90ZW1wbGF0ZShleHAsIFwiYW4gZXhwcmVzc2lvblwiLCBFbXB0eUhvbGVFeHApO1xubGV0IGVtcHR5X2hvbGVfZXhwcyA9IHtpZDogRW1wdHlIb2xlRXhwLCBmb3JtczogW2VtcHR5X2hvbGVfZXhwXX07XG5cbmxldCBtdWx0aV9ob2xlX2V4cDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5tdWx0aV9ob2xlX3RlbXBsYXRlKGV4cCwgTXVsdGlIb2xlRXhwKTtcblxubGV0IG11bHRpX2hvbGVfZXhwcyA9IHtpZDogTXVsdGlIb2xlRXhwLCBmb3JtczogW211bHRpX2hvbGVfZXhwXX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xubGV0IGVtcHR5X2hvbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkV4cHJlc3Npb25zIGFyZSBub3QgbWF0Y2hlZCBhZ2FpbnN0IHRoZSAqZW1wdHkgaG9sZSBwYXR0ZXJuKiB1bnRpbCBpdCBpcyBmaWxsZWQuXCI7XG4gIHtcbiAgICBpZDogRW1wdHlIb2xlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IG11bHRpX2hvbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkV4cHJlc3Npb25zIGFyZSBub3QgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBpbnZhbGlkIHBhdHRlcm4gdW50aWwgaXQgaXMgY29ycmVjdGVkLlwiO1xuICB7XG4gICAgaWQ6IE11bHRpSG9sZVBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIkludmFsaWRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGVtcHR5X2hvbGU6IGdyb3VwID0ge2lkOiBFbXB0eUhvbGVQYXQsIGZvcm1zOiBbZW1wdHlfaG9sZV9wYXRdfTtcblxubGV0IG11bHRpX2hvbGU6IGdyb3VwID0ge2lkOiBNdWx0aUhvbGVQYXQsIGZvcm1zOiBbbXVsdGlfaG9sZV9wYXRdfTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZW1wdHlfaG9sZV90cGF0OiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLmVtcHR5X2hvbGVfdGVtcGxhdGUodHBhdCwgXCJhIHR5cGUgcGF0dGVyblwiLCBFbXB0eUhvbGVUUGF0KTtcbmxldCBlbXB0eV9ob2xlX3RwYXRzID0ge2lkOiBFbXB0eUhvbGVUUGF0LCBmb3JtczogW2VtcHR5X2hvbGVfdHBhdF19O1xuXG5sZXQgbXVsdGlfaG9sZV90cGF0OiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLm11bHRpX2hvbGVfdGVtcGxhdGUodHBhdCwgTXVsdGlIb2xlVFBhdCk7XG5cbmxldCBtdWx0aV9ob2xlX3RwYXRzID0ge2lkOiBNdWx0aUhvbGVUUGF0LCBmb3JtczogW211bHRpX2hvbGVfdHBhdF19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVtcHR5X2hvbGVfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgbWFya3MgYSB0eXBlIHRoYXQgbmVlZHMgdG8gYmUgZmlsbGVkIGluLlwiO1xuICB7XG4gICAgaWQ6IEVtcHR5SG9sZVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbi8vIFRPRE8gRGlkIGdldCBhIGNhc2Ugd2hlcmUgaW4gdHlwZSBwb3NpdGlvbiBoYWQgc3BhY2UgYmV0d2VlbiB0d28gdmFyaWFibGVzIHdoZXJlIGdvdCBpbnRvIHdlaXJkIHN0YXRlXG5sZXQgbXVsdGlfaG9sZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBpcyBhbiBpbnZhbGlkIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogTXVsdGlIb2xlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiSW52YWxpZFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZW1wdHlfaG9sZTogZ3JvdXAgPSB7aWQ6IEVtcHR5SG9sZVR5cCwgZm9ybXM6IFtlbXB0eV9ob2xlX3R5cF19O1xuXG5sZXQgbXVsdGlfaG9sZTogZ3JvdXAgPSB7aWQ6IE11bHRpSG9sZVR5cCwgZm9ybXM6IFttdWx0aV9ob2xlX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGlmX2Jhc2ljMV9leHBfZXggPSB7XG4gIHN1Yl9pZDogSWZUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiaWYgKHRydWUpIHRoZW4gMSBlbHNlIDJcIiksXG4gIG1lc3NhZ2U6IFwiU2luY2UgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLCB0aGUgaWYgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIHRoZW4gYnJhbmNoLCAxLlwiLFxufTtcbmxldCBpZl9iYXNpYzJfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IElmRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJpZiAoMiA8IDEpIHRoZW4gMyBlbHNlIDRcIiksXG4gIG1lc3NhZ2U6IFwiU2luY2UgdGhlIGNvbmRpdGlvbiBpcyAyIDwgMSBpcyBmYWxzZSwgdGhlIGlmIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBlbHNlIGJyYW5jaCwgNC5cIixcbn07XG5sZXQgX2V4cF9jb25kID0gZXhwKFwiZV9jb25kXCIpO1xubGV0IF9leHBfdGhlbiA9IGV4cChcImVfdGhlblwiKTtcbmxldCBfZXhwX2Vsc2UgPSBleHAoXCJlX2Vsc2VcIik7XG5sZXQgaWZfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25kX2lkOiBJZC50LCB+dGhlbl9pZDogSWQudCwgfmVsc2VfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9jb25kKSwgY29uZF9pZCksXG4gIChQaWVjZS5pZChfZXhwX3RoZW4pLCB0aGVuX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZWxzZSksIGVsc2VfaWQpLFxuXTtcbmxldCBpZl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqY29uZGl0aW9uKl0oJXMpIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIGV2YWx1YXRlIHRoZSBbKnRoZW4gYnJhbmNoKl0oJXMpLiBPdGhlcndpc2UsIGV2YWx1YXRlIHRoZSBbKmVsc2UgYnJhbmNoKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IElmRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBta19pZihbXG4gICAgICAgIFtzcGFjZSgpLCBfZXhwX2NvbmQsIGxpbmVicmVhaygpXSxcbiAgICAgICAgW3NwYWNlKCksIF9leHBfdGhlbiwgbGluZWJyZWFrKCldLFxuICAgICAgXSksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cF9lbHNlLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2lmX2Jhc2ljMV9leHBfZXgsIGlmX2Jhc2ljMl9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IGlmczogZ3JvdXAgPSB7aWQ6IElmRXhwLCBmb3JtczogW2lmX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGxldF9iYXNlX2V4ID0ge1xuICBzdWJfaWQ6IExldChCYXNpYyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgeCA9IDEgaW4gXFxueFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMVwiLFxufTtcbmxldCBsZXRfd2lsZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoV2lsZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgXyA9IDEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9pbnRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEludExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgMSA9IDEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9mbG9hdF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoRmxvYXRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IDEuMSA9IDEuMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxLjEgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfYm9vbF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQm9vbExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgdHJ1ZSA9IHRydWUgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdHJ1ZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9zdHJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFN0ckxpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgXFxcImFiY1xcXCIgPSBcXFwiYWJjXFxcIiBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0cnVlIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X3RyaXZfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFRyaXYpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICgpID0gKCkgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgKCkgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfbGlzdGxpdF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoTGlzdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgW3gsIHldID0gWzEsIDJdIGluIFxcbnhcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSBhbmQgdGhlIHkgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xubGV0IGxldF9saXN0bmlsX2V4ID0ge1xuICBzdWJfaWQ6IExldChMaXN0TmlsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBbXSA9IFtdIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGVtcHR5IGxpc3QgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfY29uc19oZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ29uc0hkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBoZDo6dGwgPSAxOjpbXSBpbiBcXG5oZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaGQgaXMgYm91bmQgdG8gMSBhbmQgdGhlIHRsIGlzIGJvdW5kIHRvIHRoZSBlbXB0eSBsaXN0LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG5sZXQgbGV0X2NvbnNfc25kX2V4ID0ge1xuICBzdWJfaWQ6IExldChDb25zU25kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBmc3Q6OnNuZDo6dGwgPSB0cnVlOjpmYWxzZTo6W10gaW4gXFxuc25kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBmc3QgaXMgYm91bmQgdG8gdHJ1ZSwgdGhlIHNuZCBpcyBib3VuZCB0byBmYWxzZSwgYW5kIHRoZSB0bCBpcyBib3VuZCB0byB0aGUgZW1wdHkgbGlzdCwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBsZXRfdmFyX2V4ID0ge1xuICBzdWJfaWQ6IExldChWYXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IHggPSAxIGluIFxcbnggKyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxICsgMiwgd2hpY2ggaXMgMy5cIixcbn07XG5sZXQgbGV0X3R1cGxlMl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoVHVwbGUyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAoeCwgeSkgPSAoMSwgMikgaW4gXFxueCArIHlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSBhbmQgdGhlIHkgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyLCB3aGljaCBpcyAzLlwiLFxufTtcbmxldCBsZXRfdHVwbGUzX2V4ID0ge1xuICBzdWJfaWQ6IExldChUdXBsZTMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICh4LCB5LCB6KSA9ICgxLCAyLCAzKVxcbmluIHggKyB5ICsgelwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCB0aGUgeSBpcyBib3VuZCB0byAyLCBhbmQgdGhlIHogaXMgYm91bmQgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyICsgMywgd2hpY2ggaXMgNi5cIixcbn07XG5sZXQgbGV0X2N0cl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ3RyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG4gaW4gbGV0IE5vbmUgPSBOb25lXFxuaW4gMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgTm9uZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9hcF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQXApLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXCJ0eXBlIFQgPSBOb25lICsgU29tZShJbnQpXFxuIGluIGxldCBTb21lKGEpID0gU29tZSgyKVxcbmluIGFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGEgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChcbiAgICAgIHNmX3BhdF9pZDogSWQudCxcbiAgICAgIHNmX2RlZl9pZDogSWQudCxcbiAgICAgIHNmX2JvZHlfaWQ6IElkLnQsXG4gICAgICB+cGF0X2lkOiBJZC50LFxuICAgICAgfmRlZl9pZDogSWQudCxcbiAgICAgIH5ib2R5X2lkOiBJZC50LFxuICAgIClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfcGF0X2lkLCBwYXRfaWQpLCAoc2ZfZGVmX2lkLCBkZWZfaWQpLCAoc2ZfYm9keV9pZCwgYm9keV9pZCldO1xufTtcbmxldCBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX3BhdF9pZDogSWQudCwgc2ZfZGVmX2lkOiBJZC50LCB+cGF0X2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9wYXRfaWQsIHBhdF9pZCksIChzZl9kZWZfaWQsIGRlZl9pZCldO1xufTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfYmFzZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIFsqcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEJhc2UpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IFBpZWNlLkdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9lbXB0eV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBZnRlciB0aGUgWyplbXB0eSBob2xlIHBhdHRlcm4qXSglcykgaXMgZmlsbGVkLCB0aGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoRW1wdHlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIklOVkFMSURcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X211bHRpX2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFmdGVyIHRoZSBbaW52YWxpZCBwYXR0ZXJuXSglcykgaXMgY29ycmVjdGVkLCB0aGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTXVsdGlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIklOVkFMSURcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYmFzZV9leF0sXG4gIH07XG59O1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF93aWxkX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZGVmX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG4gIChQaWVjZS5pZChfZXhwX2JvZHkpLCBib2R5X2lkKSxcbl07XG5sZXQgbGV0X3dpbGRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgZXZhbHVhdGVkIGFuZCBpZ25vcmVkLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IHBhdF8gPSBwYXQoXCJfXCIpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBwYXRfLCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoV2lsZCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQocGF0XyksIFtwYXQoXCJfXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3dpbGRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSW50TGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9pbnRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2ludF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVzYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChJbnQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSW50TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2ludF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJGbG9hdExpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2Zsb2F0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJWZgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEZsb2F0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkZsb2F0TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Zsb2F0X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkJvb2xMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2Jvb2xfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlYmAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQm9vbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJCb29sTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jvb2xfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiU3RyaW5nTGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVzYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChTdHJpbmcpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiU3RyaW5nTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3N0cl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCIoKVwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfdHJpdl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlIHRyaXZpYWwgdmFsdWUgYCgpYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUcml2KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIigpXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3RyaXZfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfbGlzdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSBhcmUgbGlzdHMgd2l0aCAlcy1lbGVtZW50cywgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTGlzdExpdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfbGlzdGxpdF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJbXVwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfbGlzdG5pbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlIGVtcHR5IGxpc3QgYFtdYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChMaXN0TmlsKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIltdXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2xpc3RuaWxfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCwgfmRlZl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgbGV0X2NvbnNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIG5vbi1lbXB0eSBsaXN0cyB0aGF0IG1hdGNoIHRoZSBbKmhlYWQqXSglcykgYW5kIFsqdGFpbCpdKCVzKSBwYXR0ZXJucy5cIjtcbiAgbGV0IGNvbnMgPSBjb25zX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIF9wYXRfaGQsIGNvbnMsIF9wYXRfdGwsIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKExpc3RDb25zKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29ucyksIFtwYXQoXCJwX2hkXCIpLCBjb25zX3BhdCgpLCBwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2NvbnNfaGRfZXgsIGxldF9jb25zX3NuZF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJ4XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF92YXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3Zhcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBib3VuZCB0byB0aGUgWyp2YXJpYWJsZSpdKCVzKSBgJXNgIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChWYXIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwieFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF92YXJfZXhdLFxuICAgIC8vIFRPRE8gRG9lcyB0aGlzIGV4YW1wbGUgYmVpbmcgc2xpZ2h0bHkgZGlmZmVyZW50IGFjdHVhbGx5IGFkZCBhbnl0aGluZz9cbiAgfTtcbn07XG5sZXQgX2NvbW1hID0gY29tbWFfcGF0KCk7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9jb21tYSksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X3R1cGxlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIGFyZSAlcy10dXBsZXMgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIHBhdChcInAxXCIpLCBfY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHVwbGUyX2V4LCBsZXRfdHVwbGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X3R1cGxlMl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIHBhdDJfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfdHVwbGUyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSAyLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdDEsIGNvbW1hLCBzcGFjZSgpLCBfcGF0Miwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90dXBsZTJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX3BhdDMgPSBwYXQoXCJwM1wiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfnBhdDNfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gIChQaWVjZS5pZChfcGF0MyksIHBhdDNfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfdHVwbGUzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSAzLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kIHRoZSB0aGlyZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqdGhpcmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDEsXG4gICAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MixcbiAgICAgICAgY29tbWEsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQzLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZTMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKSwgY29tbWFfcGF0KCksIHBhdChcInAzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3R1cGxlM19leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJDXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9jdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlICpgJXNgIGNvbnN0cnVjdG9yKi4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChDdHIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiQ1wiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9jdHJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfYXBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdoZXJlIHRoZSAqYXJndW1lbnQqIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGFwID0gbWtfYXBfcGF0KFtbX3BhdF9hcmddXSk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdF9jb24sIGFwLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChBcCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFwKSwgW3BhdChcInBfY29uXCIpLCBta19hcF9wYXQoW1twYXQoXCJwX2FyZ1wiKV1dKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9hcF9leF0sXG4gIH07XG59O1xuXG5sZXQgbGV0c19lbXB0eWhvbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEVtcHR5SG9sZSksXG4gIGZvcm1zOiBbbGV0X2VtcHR5X2hvbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbXV0bGlob2xlOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChNdWx0aUhvbGUpLFxuICBmb3JtczogW2xldF9tdWx0aV9ob2xlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3dpbGQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFdpbGQpLFxuICBmb3JtczogW2xldF93aWxkX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2ludDogZ3JvdXAgPSB7aWQ6IExldEV4cChJbnQpLCBmb3JtczogW2xldF9pbnRfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfZmxvYXQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEZsb2F0KSxcbiAgZm9ybXM6IFtsZXRfZmxvYXRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfYm9vbDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoQm9vbCksXG4gIGZvcm1zOiBbbGV0X2Jvb2xfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfc3RyOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChTdHJpbmcpLFxuICBmb3JtczogW2xldF9zdHJfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHJpdjogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHJpdiksXG4gIGZvcm1zOiBbbGV0X3RyaXZfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbGlzdGxpdDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdExpdCksXG4gIGZvcm1zOiBbbGV0X2xpc3RsaXRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbGlzdG5pbDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdE5pbCksXG4gIGZvcm1zOiBbbGV0X2xpc3RuaWxfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfY29uczogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdENvbnMpLFxuICBmb3JtczogW2xldF9jb25zX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3ZhcjogZ3JvdXAgPSB7aWQ6IExldEV4cChWYXIpLCBmb3JtczogW2xldF92YXJfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfdHVwbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlKSxcbiAgZm9ybXM6IFtsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHVwbGUyOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZTIpLFxuICBmb3JtczogW2xldF90dXBsZTJfZXhwLCBsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHVwbGUzOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZTMpLFxuICBmb3JtczogW2xldF90dXBsZTNfZXhwLCBsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfY3RyOiBncm91cCA9IHtpZDogTGV0RXhwKEN0ciksIGZvcm1zOiBbbGV0X2N0cl9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c19hcDogZ3JvdXAgPSB7aWQ6IExldEV4cChBcCksIGZvcm1zOiBbbGV0X2FwX2V4cCwgbGV0X2Jhc2VfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGlzdF9leHA6IGZvcm0gPSB7XG4gIGxldCBpbnRfbGlzdCA9IHtcbiAgICBzdWJfaWQ6IExpc3QoSW50KSxcbiAgICB0ZXJtOiBta19leGFtcGxlKFwiWzEsIDJdXCIpLFxuICAgIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCAxIGFuZCAyLlwiLFxuICB9O1xuICBsZXQgdHVwbGVfbGlzdCA9IHtcbiAgICBzdWJfaWQ6IExpc3QoVHVwbGUpLFxuICAgIHRlcm06IG1rX2V4YW1wbGUoXCJbKDEsIHRydWUpLCAoMiwgZmFsc2UpXVwiKSxcbiAgICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgYSB0dXBsZSB3aXRoIDEgYW5kIHRydWUgYW5kIGEgdHVwbGUgd2l0aCAyIGFuZCBmYWxzZS5cIixcbiAgfTtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJMaXN0IGxpdGVyYWwgd2l0aCAlcyBlbGVtZW50KHMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIG1rX2xpc3RfZXhwKFtbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBzcGFjZSgpLCBleHAoXCIuLi5cIildXSksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2xpc3QsIHR1cGxlX2xpc3RdLFxuICB9O1xufTtcblxubGV0IGNvbnMxX2V4ID0ge1xuICBzdWJfaWQ6IExpc3QoQ29uczEpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMTo6W11cIiksXG4gIG1lc3NhZ2U6IFwiQSBzaW5nbGUgZWxlbWVudCBsaXN0IG9mIDEuXCIsXG59O1xubGV0IGNvbnMyX2V4ID0ge1xuICBzdWJfaWQ6IExpc3QoQ29uczIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHJ1ZTo6ZmFsc2U6OltdXCIpLFxuICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgdHJ1ZSBhbmQgZmFsc2UuXCIsXG59O1xubGV0IF9leHBfaGQgPSBleHAoXCJlX2hkXCIpO1xubGV0IF9leHBfdGwgPSBleHAoXCJlX3RsXCIpO1xubGV0IGNvbnNfZXhwX2NvbG9yaW5nX2lkcyA9ICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX2V4cF90bCksIHRsX2lkKSxcbl07XG5sZXQgY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ3JlYXRlcyBhIGxpc3Qgd2l0aCBbKmhlYWQgZWxlbWVudCpdKCVzKSBhbmQgWyp0YWlsIGVsZW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQ29uc0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfaGQsIGNvbnNfZXhwKCksIF9leHBfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25zMV9leCwgY29uczJfZXhdLFxuICB9O1xufTtcblxubGV0IF9leHBfeHMgPSBleHAoXCJ4c1wiKTtcbmxldCBfZXhwX3lzID0gZXhwKFwieXNcIik7XG5sZXQgY29uY2F0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eHNfaWQ6IElkLnQsIH55c19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3hzKSwgeHNfaWQpLFxuICAoUGllY2UuaWQoX2V4cF95cyksIHlzX2lkKSxcbl07XG5sZXQgbGlzdF9jb25jYXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkNyZWF0ZXMgYSBsaXN0IGJ5IGNvbWJpbmluZyB0aGUgWypmaXJzdCBvcGVyYW5kKl0oJXMpIGFuZCB0aGUgWypzZWNvbmQgb3BlcmFuZCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBMaXN0Q29uY2F0RXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF94cywgc3BhY2UoKSwgbGlzdF9jb25jYXRfZXhwKCksIHNwYWNlKCksIF9leHBfeXNdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3RsaXRzOiBncm91cCA9IHtpZDogTGlzdEV4cCwgZm9ybXM6IFtsaXN0X2V4cF19O1xuXG5sZXQgbGlzdGNvbnM6IGdyb3VwID0ge2lkOiBDb25zRXhwLCBmb3JtczogW2NvbnNfZXhwXX07XG5cbmxldCBsaXN0Y29uY2F0czogZ3JvdXAgPSB7aWQ6IExpc3RDb25jYXRFeHAsIGZvcm1zOiBbbGlzdF9jb25jYXRfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgbGlzdGxpdF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBsaXN0cyB3aXRoICVzLWVsZW1lbnRzIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybiBtYXRjaCB0aGlzICpsaXN0IGxpdGVyYWwgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogTGlzdExpdFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBsaXN0bmlsX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIGVtcHR5IGxpc3RzIGBbXWAgbWF0Y2ggdGhlICplbXB0eSBsaXN0IGBbXWAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogTGlzdE5pbFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIltdXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBjb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuXTtcbmxldCBjb25zX2Jhc2VfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm9uLWVtcHR5IGxpc3RzIHdpdGggKmhlYWQgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqaGVhZCBlbGVtZW50IHBhdHRlcm4qXSglcykgYW5kICp0YWlsKiBsaXN0IG1hdGNoaW5nIHRoZSBbKnRhaWwgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzIG5vbi1lbXB0eSBsaXN0IHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogQ29uc1BhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfaGQsIGNvbnNfcGF0KCksIF9wYXRfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXRfdGwpLCBbcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXRfZnN0ID0gcGF0KFwicF9mc3RcIik7XG5sZXQgX3BhdF9zbmQgPSBwYXQoXCJwX3NuZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBjb25zMl9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofmZzdF9pZDogSWQudCwgfnNuZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfZnN0KSwgZnN0X2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfc25kKSwgc25kX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG5dO1xubGV0IGNvbnMyX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vbi1lbXB0eSBsaXN0cyB3aXRoICpmaXJzdCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcyksICpzZWNvbmQgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kICp0YWlsKiBsaXN0IG1hdGNoaW5nIHRoZSBbKnRhaWwgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzIG5vbi1lbXB0eSBsaXN0IHBhdHRlcm4uXCI7XG4gIGxldCBjID0gY29uc19wYXQoKTtcbiAge1xuICAgIGlkOiBDb25zMlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfZnN0LCBjb25zX3BhdCgpLCBfcGF0X3NuZCwgYywgX3BhdF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGMpLCBbcGF0KFwicF9zbmRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3RsaXQ6IGdyb3VwID0ge2lkOiBMaXN0TGl0UGF0LCBmb3JtczogW2xpc3RsaXRfcGF0XX07XG5cbmxldCBsaXN0bmlsOiBncm91cCA9IHtpZDogTGlzdE5pbFBhdCwgZm9ybXM6IFtsaXN0bmlsX3BhdF19O1xuXG5sZXQgY29uczogZ3JvdXAgPSB7aWQ6IENvbnNQYXQsIGZvcm1zOiBbY29uc19iYXNlX3BhdF19O1xuXG5sZXQgY29uczI6IGdyb3VwID0ge2lkOiBDb25zMlBhdCwgZm9ybXM6IFtjb25zMl9wYXQsIGNvbnNfYmFzZV9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHlwX2VsZW0gPSB0eXAoXCJ0eV9lbGVtXCIpO1xuLy8gVE9ETyBTeW50YWN0aWMgZm9ybSBjb2xvcmluZyBsb29rcyBvZmYgZm9yIHRoaXMgb25lIGFuZCBvdGhlciB0eXBlcyBvbmVzLi4uXG5sZXQgbGlzdF90eXBfY29sb3JpbmdfaWRzID0gKH5lbGVtX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbSksIGVsZW1faWQpLFxuXTtcbmxldCBsaXN0X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgbGlzdCB0eXBlIGNsYXNzaWZpZXMgbGlzdHMgd2l0aCBlbGVtZW50cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFsqZWxlbWVudCB0eXBlKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19saXN0X3R5cChbW190eXBfZWxlbV1dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdDogZ3JvdXAgPSB7aWQ6IExpc3RUeXAsIGZvcm1zOiBbbGlzdF90eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBpbnRfdW5hcnlfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogSW50VW5hcnlNaW51cyxcbiAgdGVybTogbWtfZXhhbXBsZShcIi0xXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIG5lZ2F0ZWQuXCIsXG59O1xubGV0IGludF9wbHVzX2V4ID0ge1xuICBzdWJfaWQ6IEludChQbHVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgKyAyXCIpLFxuICBtZXNzYWdlOiBcIjEgYWRkZWQgdG8gMiBldmFsdXRlcyB0byAzLlwiLFxufTtcbmxldCBpbnRfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KE1pbnVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIgLSAxXCIpLFxuICBtZXNzYWdlOiBcIjIgbWludXMgMSBldmFsdXRlcyB0byAxLlwiLFxufTtcbmxldCBpbnRfdGltZXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KFRpbWVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgKiAyXCIpLFxuICBtZXNzYWdlOiBcIjEgbXVsdGlwbGllZCBiZSAyIGV2YWx1dGVzIHRvIDIuXCIsXG59O1xubGV0IGludF9wb3dlcl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoUG93ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMiAqKiA0XCIpLFxuICBtZXNzYWdlOiBcIjIgcmFpc2VkIHRvIDQgZXZhbHVhdGVzIHRvIDE2XCIsXG59O1xubGV0IGludF9kaXZpZGVfZXggPSB7XG4gIHN1Yl9pZDogSW50KERpdmlkZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI2IC8gM1wiKSxcbiAgbWVzc2FnZTogXCI2IGRpdmlkZWQgYnkgMyBldmFsdXRlcyB0byAyLlwiLFxufTtcbmxldCBpbnRfbHQxX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhblRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA8IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBsZXNzIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2x0Ml9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0IDwgM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGxlc3Mgbm90IGxlc3MgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9sdGUxX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkVxdWFsTGVzcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxIDw9IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBsZXNzIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2x0ZTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0IDw9IDNcIiksXG4gIG1lc3NhZ2U6IFwiNCBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfbHRlM19leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUgPD0gNVwiKSxcbiAgbWVzc2FnZTogXCI1IGlzIGVxdWFsIHRvIDUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3QxX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPiAyXCIpLFxuICBtZXNzYWdlOiBcIjEgaXMgbm90IGdyZWF0ZXIgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9ndDJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0ID4gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGdyZWF0ZXIgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0ZTFfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID49IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2d0ZTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPj0gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGdyZWF0ZXIgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0ZTNfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1ID49IDVcIiksXG4gIG1lc3NhZ2U6IFwiNSBpcyBlcXVhbCB0byA1LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2VxMV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID09IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBkb2VzIG5vdCBlcXVhbCAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9lcTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEVxdWFsVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzID09IDNcIiksXG4gIG1lc3NhZ2U6IFwiMyBpcyBlcXVhbCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfcGx1c19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChQbHVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuICsuIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLiBhZGRlZCB0byAyLjEgZXZhbHV0ZXMgdG8gMy4xXCIsXG59O1xubGV0IGZsb2F0X21pbnVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KE1pbnVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIuIC0uIDEuMVwiKSxcbiAgbWVzc2FnZTogXCIyLiBtaW51cyAxLjEgZXZhbHV0ZXMgdG8gMC45XCIsXG59O1xubGV0IGZsb2F0X3RpbWVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KFRpbWVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuICouIDIuMlwiKSxcbiAgbWVzc2FnZTogXCIxIG11bHRpcGxpZWQgYmUgMi4yIGV2YWx1dGVzIHRvIDIuMi5cIixcbn07XG5sZXQgZmxvYXRfcG93ZXJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoUG93ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMi4gKiouIDQuXCIpLFxuICBtZXNzYWdlOiBcIjIuIHJhaXNlZCB0byA0LiBldmFsdWF0ZXMgdG8gMTYuXCIsXG59O1xubGV0IGZsb2F0X2RpdmlkZV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChEaXZpZGUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4yIC8uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCI0LjIgZGl2aWRlZCBieSAyLjEgZXZhbHV0ZXMgdG8gMi5cIixcbn07XG5sZXQgZmxvYXRfbHQxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA8LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4gaXMgbGVzcyB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfbHQyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPC4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjQuIGlzIGxlc3Mgbm90IGxlc3MgdGhhbiAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfbHRlMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkVxdWFsTGVzcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA8PS4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuIGlzIGxlc3MgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1dGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2x0ZTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuIDw9LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgbGVzcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9sdGUzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1LjUgPD0uIDUuNVwiKSxcbiAgbWVzc2FnZTogXCI1LjUgaXMgZXF1YWwgdG8gNS41LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3QxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4xID4uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLjEgaXMgbm90IGdyZWF0ZXIgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZ3QyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA+LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgZ3JlYXRlciB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuMSA+PS4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuMSBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9ndGUyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuID49LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgZ3JlYXRlciB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUuNSA+PS4gNS41XCIpLFxuICBtZXNzYWdlOiBcIjUuNSBpcyBlcXVhbCB0byA1LjUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9lcTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA9PS4gMi5cIiksXG4gIG1lc3NhZ2U6IFwiMS4gZG9lcyBub3QgZXF1YWwgMi4sIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZXEyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEVxdWFsVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzLjEgPT0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCIzLjEgaXMgZXF1YWwgdG8gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgYm9vbF9hbmQxX2V4ID0ge1xuICBzdWJfaWQ6IEFuZEZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHJ1ZSAmJiBmYWxzZVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGlzIHRydWUsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBpcyBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBib29sX2FuZDJfZXggPSB7XG4gIHN1Yl9pZDogQW5kVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPCAyICYmIDMgPCA0XCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgZXZhbHVhdGVzIHRvIHRydWUsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBhbHNvIGV2YWx1dGVzIHRvIHRydWUsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBib29sX29yMV9leCA9IHtcbiAgc3ViX2lkOiBPckZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZmFsc2UgXFxcXC8gMiA8IDFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBldmFsdWF0ZXMgdG8gZmFsc2UsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBhbHNvIGV2YWx1YXRlcyB0byBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBib29sX29yMl9leCA9IHtcbiAgc3ViX2lkOiBPclRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzIDwgNCBcXFxcLyBmYWxzZVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGV2YWx1dGVzIHRvIHRydWUsIHNvIHRoZSByaWdodCBvcGVyYW5kIGlzIG5vdCBldmFsdWF0ZWQuIFRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBzdHJfZXExX2V4ID0ge1xuICBzdWJfaWQ6IFN0cmluZ0VxdWFsRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJcXFwiYWJjXFxcIiAkPT0gXFxcInh5elxcXCJcIiksXG4gIG1lc3NhZ2U6IFwiXFxcImFiY1xcXCIgZG9lcyBub3QgZXF1YWwgXFxcInh5elxcXCIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgc3RyX2VxMl9leCA9IHtcbiAgc3ViX2lkOiBTdHJpbmdFcXVhbFRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJcXFwiYWJjXFxcIiAkPT0gXFxcImFiY1xcXCJcIiksXG4gIG1lc3NhZ2U6IFwiXFxcImFiY1xcXCIgaXMgZXF1YWwgdG8gXFxcImFiY1xcXCIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBfdW5vcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfZXhwX2lkOiBJZC50LCB+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKHNmX2V4cF9pZCwgZXhwX2lkKSxcbl07XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkcyA9ICh+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF91bm9wX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2V4cCksIH5leHBfaWQpO1xubGV0IGJvb2xfdW5hcnlfbm90X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJQZXJmb3JtcyBib29sZWFuIG5lZ2F0aW9uIG9mIHRoZSBbKm9wZXJhbmQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogVW5PcEV4cChCb29sKE5vdCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdW5hcnlfbm90KCksIF9leHBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBpbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9ICh+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF91bm9wX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2V4cCksIH5leHBfaWQpO1xubGV0IGludF91bmFyeV9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUGVyZm9ybXMgaW50ZWdlciBuZWdhdGlvbiBvZiB0aGUgWypvcGVyYW5kKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IFVuT3BFeHAoSW50KE1pbnVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFt1bmFyeV9taW51cygpLCBfZXhwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3VuYXJ5X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9sZWZ0X2lkOiBJZC50LCBzZl9yaWdodF9pZDogSWQudCwgfmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfbGVmdF9pZCwgbGVmdF9pZCksIChzZl9yaWdodF9pZCwgcmlnaHRfaWQpXTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9wbHVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgc3VtIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KFBsdXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBwbHVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3BsdXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X21pbnVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBtaW51cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3RpbWVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcHJvZHVjdCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChUaW1lcykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHRpbWVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3RpbWVzX2V4XSxcbiAgfTtcbn07XG5sZXQgaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9wb3dlcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHJlc3VsdCBvZiByYWlzaW5nIFsqbGVmdCpdKCVzKSBybyB0aGUgWypyaWdodCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoUG93ZXIpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBwb3dlcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9wb3dlcl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9kaXZpZGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBxdW90aWVudCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChEaXZpZGUpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBkaXZpZGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZGl2aWRlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9sdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbHRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGx0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2x0MV9leCwgaW50X2x0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9sdGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsdGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbHRlMV9leCwgaW50X2x0ZTJfZXgsIGludF9sdGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9ndF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZ3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGd0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2d0MV9leCwgaW50X2d0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9ndGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBndGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZ3RlMV9leCwgaW50X2d0ZTJfZXgsIGludF9ndGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZXExX2V4LCBpbnRfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9uZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X25lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIG5vdCBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChOb3RFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBub3RfZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfcGx1c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHN1bSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBsdXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmcGx1cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3BsdXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbWludXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmbWludXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF90aW1lc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHByb2R1Y3Qgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChUaW1lcykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZ0aW1lcygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3RpbWVzX2V4XSxcbiAgfTtcbn07XG5sZXQgZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfcG93ZXJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSByZXN1bHQgb2YgcmFpc2luZyBbKmxlZnQqXSglcykgdG8gdGhlIFsqcmlnaHQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoUG93ZXIpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmcG93ZXIoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9wb3dlcl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZGl2aWRlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcXVvdGllbnQgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChEaXZpZGUpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZGl2aWRlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZGl2aWRlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2x0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2x0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbGVzcyB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZsdCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2x0MV9leCwgZmxvYXRfbHQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9sdGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZsdGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9sdGUxX2V4LCBmbG9hdF9sdGUyX2V4LCBmbG9hdF9sdGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2d0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZ3JlYXRlciB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZndCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2d0MV9leCwgZmxvYXRfZ3QyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2d0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9ndGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZndGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9ndGUxX2V4LCBmbG9hdF9ndGUyX2V4LCBmbG9hdF9ndGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZXExX2V4LCBmbG9hdF9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X25lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIG5vdCBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KE5vdEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZub3RfZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGJvb2xfYW5kX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgZXZhbHVhdGUgdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKS4gSWYgdGhhdCBhbHNvIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoQm9vbChBbmQpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsb2dpY2FsX2FuZCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jvb2xfYW5kMV9leCwgYm9vbF9hbmQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG4vLyBUT0RPIFNvbWUgb2YgdGhlIGV4YW1wbGVzIGFyZSBldmFsdWF0aW5nIHdlaXJkbHkgYW5kIGNhbid0IHR5cGUgdGhlIHx8IGluIHRoZSBlZGl0b3JcbmxldCBib29sX29yX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZSB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLiBJZiB0aGF0IGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoQm9vbChPcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGxvZ2ljYWxfb3IoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtib29sX29yMV9leCwgYm9vbF9vcjJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc3RyX2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IHN0cl9lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoU3RyaW5nKEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHNlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzdHJfZXExX2V4LCBzdHJfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgc3RyX2NvbmNhdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUmV0dXJucyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgYW5kIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoU3RyaW5nKENvbmNhdCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHNjb25jYXQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xfdW5fbm90OiBncm91cCA9IHtcbiAgaWQ6IFVuT3BFeHAoQm9vbChOb3QpKSxcbiAgZm9ybXM6IFtib29sX3VuYXJ5X25vdF9leHBdLFxufTtcblxubGV0IGludF91bl9taW51czogZ3JvdXAgPSB7XG4gIGlkOiBVbk9wRXhwKEludChNaW51cykpLFxuICBmb3JtczogW2ludF91bmFyeV9taW51c19leHBdLFxufTtcblxubGV0IGludF9wbHVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFBsdXMpKSwgZm9ybXM6IFtpbnRfcGx1c19leHBdfTtcblxubGV0IGludF9taW51czogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChNaW51cykpLCBmb3JtczogW2ludF9taW51c19leHBdfTtcblxubGV0IGludF90aW1lczogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChUaW1lcykpLCBmb3JtczogW2ludF90aW1lc19leHBdfTtcblxubGV0IGludF9wb3dlcjogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChQb3dlcikpLCBmb3JtczogW2ludF9wb3dlcl9leHBdfTtcblxubGV0IGludF9kaXZpZGU6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KERpdmlkZSkpLFxuICBmb3JtczogW2ludF9kaXZpZGVfZXhwXSxcbn07XG5cbmxldCBpbnRfbGVzc190aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbikpLFxuICBmb3JtczogW2ludF9sdF9leHBdLFxufTtcblxubGV0IGludF9sZXNzX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2ludF9sdGVfZXhwXSxcbn07XG5cbmxldCBpbnRfZ3JlYXRlcl90aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbikpLFxuICBmb3JtczogW2ludF9ndF9leHBdLFxufTtcblxubGV0IGludF9ncmVhdGVyX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2ludF9ndGVfZXhwXSxcbn07XG5cbmxldCBpbnRfZXF1YWw6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoRXF1YWxzKSksIGZvcm1zOiBbaW50X2VxX2V4cF19O1xuXG5sZXQgaW50X25vdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoTm90RXF1YWxzKSksXG4gIGZvcm1zOiBbaW50X25lcV9leHBdLFxufTtcblxubGV0IGZsb2F0X3BsdXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoUGx1cykpLFxuICBmb3JtczogW2Zsb2F0X3BsdXNfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9taW51czogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChNaW51cykpLFxuICBmb3JtczogW2Zsb2F0X21pbnVzX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfdGltZXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoVGltZXMpKSxcbiAgZm9ybXM6IFtmbG9hdF90aW1lc19leHBdLFxufTtcblxubGV0IGZsb2F0X3Bvd2VyOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBvd2VyKSksXG4gIGZvcm1zOiBbZmxvYXRfcG93ZXJfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9kaXZpZGU6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoRGl2aWRlKSksXG4gIGZvcm1zOiBbZmxvYXRfZGl2aWRlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfbGVzc190aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuKSksXG4gIGZvcm1zOiBbZmxvYXRfbHRfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9sZXNzX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbZmxvYXRfbHRlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZ3JlYXRlcl90aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuKSksXG4gIGZvcm1zOiBbZmxvYXRfZ3RfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ncmVhdGVyX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbZmxvYXRfZ3RlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoRXF1YWxzKSksXG4gIGZvcm1zOiBbZmxvYXRfZXFfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ub3RfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTm90RXF1YWxzKSksXG4gIGZvcm1zOiBbZmxvYXRfbmVxX2V4cF0sXG59O1xuXG5sZXQgYm9vbF9hbmQ6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChCb29sKEFuZCkpLCBmb3JtczogW2Jvb2xfYW5kX2V4cF19O1xuXG5sZXQgYm9vbF9vcjogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEJvb2woT3IpKSwgZm9ybXM6IFtib29sX29yX2V4cF19O1xuXG5sZXQgc3RyaW5nX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKFN0cmluZyhFcXVhbHMpKSxcbiAgZm9ybXM6IFtzdHJfZXFfZXhwXSxcbn07XG5cbmxldCBzdHJpbmdfY29uY2F0OiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKFN0cmluZyhDb25jYXQpKSxcbiAgZm9ybXM6IFtzdHJfY29uY2F0X2V4cF0sXG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBJZiB5b3UgYXJlIGFkZGluZyBkb2NzIGhlcmUgZm9yIG5ldyBzeW50YXgsIHNlZSBQaXBlbGluZUV4cC5yZVxuICogd2hpY2ggZG9jdW1lbnRzIHRoZSBzaW1wbGVzdCB3YXkgdG8gYWRkIGEgbmV3IGZvcm0uICovXG5cbmxldCBmZWVkYmFja192aWV3ID0gKG1lc3NhZ2UsIHVwX2FjdGl2ZSwgdXBfYWN0aW9uLCBkb3duX2FjdGl2ZSwgZG93bl9hY3Rpb24pID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiZmVlZGJhY2tcIl0pLFxuICAgIFtcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcIm1lc3NhZ2VcIl0pLCBbdGV4dChtZXNzYWdlKV0pLFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgY2xzcyhbXCJvcHRpb25cIl0gQCAodXBfYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgICAgIEF0dHIub25fY2xpY2sodXBfYWN0aW9uKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW3RleHQoXCLwn5GNXCIpXSxcbiAgICAgICksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBjbHNzKFtcIm9wdGlvblwiXSBAIChkb3duX2FjdGl2ZSA/IFtcImFjdGl2ZVwiXSA6IFtdKSksXG4gICAgICAgICAgICBBdHRyLm9uX2NsaWNrKGRvd25fYWN0aW9uKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW3RleHQoXCLwn5GOXCIpXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBleHBsYW5hdGlvbl9mZWVkYmFja192aWV3ID0gKH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBtb2RlbCkgPT4ge1xuICBsZXQgKHVwX2FjdGl2ZSwgZG93bl9hY3RpdmUpID1cbiAgICBzd2l0Y2ggKFxuICAgICAgRXhwbGFpblRoaXNNb2RlbC5nZXRfZXhwbGFuYXRpb25fZmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKVxuICAgICkge1xuICAgIHwgU29tZShUaHVtYnNVcCkgPT4gKHRydWUsIGZhbHNlKVxuICAgIHwgU29tZShUaHVtYnNEb3duKSA9PiAoZmFsc2UsIHRydWUpXG4gICAgfCBOb25lID0+IChmYWxzZSwgZmFsc2UpXG4gICAgfTtcbiAgZmVlZGJhY2tfdmlldyhcbiAgICBcIlRoaXMgZXhwbGFuYXRpb24gaXMgaGVscGZ1bFwiLFxuICAgIHVwX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIFRodW1ic1VwKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgZG93bl9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBUaHVtYnNEb3duKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG59O1xuXG5sZXQgZXhhbXBsZV9mZWVkYmFja192aWV3ID0gKH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBtb2RlbCkgPT4ge1xuICBsZXQgKHVwX2FjdGl2ZSwgZG93bl9hY3RpdmUpID1cbiAgICBzd2l0Y2ggKFxuICAgICAgRXhwbGFpblRoaXNNb2RlbC5nZXRfZXhhbXBsZV9mZWVkYmFjayhcbiAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgIGZvcm1faWQsXG4gICAgICAgIGV4YW1wbGVfaWQsXG4gICAgICAgIG1vZGVsLFxuICAgICAgKVxuICAgICkge1xuICAgIHwgU29tZShUaHVtYnNVcCkgPT4gKHRydWUsIGZhbHNlKVxuICAgIHwgU29tZShUaHVtYnNEb3duKSA9PiAoZmFsc2UsIHRydWUpXG4gICAgfCBOb25lID0+IChmYWxzZSwgZmFsc2UpXG4gICAgfTtcbiAgZmVlZGJhY2tfdmlldyhcbiAgICBcIlRoaXMgZXhhbXBsZSBpcyBoZWxwZnVsXCIsXG4gICAgdXBfYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBUaHVtYnNVcCksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIGRvd25fYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBUaHVtYnNEb3duKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG59O1xuXG5sZXQgY29kZV9ub2RlID0gdGV4dCA9PiBOb2RlLnNwYW4ofmF0dHI9Y2xzcyhbXCJjb2RlXCJdKSwgW05vZGUudGV4dCh0ZXh0KV0pO1xuXG5sZXQgaGlnaGxpZ2h0ID1cbiAgICAofmluamVjdCwgbXNnOiBsaXN0KE5vZGUudCksIGlkOiBJZC50LCBtYXBwaW5nOiBDb2xvclN0ZXBzLnQpXG4gICAgOiAoTm9kZS50LCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IChjLCBtYXBwaW5nKSA9IENvbG9yU3RlcHMuZ2V0X2NvbG9yKGlkLCBtYXBwaW5nKTtcbiAgbGV0IGNsYXNzZXMgPSBjbHNzKFtcImhpZ2hsaWdodC1cIiArKyBjLCBcImNsaWNrYWJsZVwiXSk7XG4gIGxldCBhdHRyID1cbiAgICBzd2l0Y2ggKGluamVjdCkge1xuICAgIHwgU29tZShpbmplY3QpID0+XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbGFzc2VzLFxuICAgICAgICBBdHRyLm9uX21vdXNlZW50ZXIoXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KEV4cGxhaW5UaGlzKFNldEhpZ2hsaWdodChIb3ZlcihpZCkpKSkpXG4gICAgICAgICksXG4gICAgICAgIEF0dHIub25fbW91c2VsZWF2ZShfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5TZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KFVuc2V0SG92ZXIpKSkpXG4gICAgICAgICksXG4gICAgICAgIEF0dHIub25fY2xpY2soXyA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihTZWxlY3QoVGVybShJZChpZCwgTGVmdCkpKSkpXG4gICAgICAgICksXG4gICAgICBdKVxuICAgIHwgTm9uZSA9PiBjbGFzc2VzXG4gICAgfTtcbiAgKE5vZGUuc3Bhbih+YXR0ciwgbXNnKSwgbWFwcGluZyk7XG59O1xuXG4vKlxuIE1hcmtkb3duIGxpa2UgdGhpbmc6XG4gaGlnaGxpZ2h0eSB0aGluZyA6IFt0aGluZyB0byBoaWdobGlnaHRdKGlkKVxuIGJ1bGxldGVkIGxpc3Q6IC0gbGlzdCBpdGVtXG4gICAgICAgICAgICAgICAgLSBsaXN0IGl0ZW1cbiBjb2RlOiBgY29kZWBcbiBpdGFsaWNzOiAqd29yZCpcbiAqL1xubGV0IG1rX3RyYW5zbGF0aW9uID0gKH5pbmplY3QsIHRleHQ6IHN0cmluZyk6IChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCkgPT4ge1xuICBsZXQgb21kID0gT21kLm9mX3N0cmluZyh0ZXh0KTtcbiAgLy9wcmludF9tYXJrZG93bihvbWQpO1xuICBsZXQgcmVjIHRyYW5zbGF0ZSA9XG4gICAgICAgICAgKGRvYzogT21kLnQsIG1hcHBpbmc6IENvbG9yU3RlcHMudCk6IChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICgobXNnLCBtYXBwaW5nKSwgZWxlbSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGVsZW0pIHtcbiAgICAgICAgfCBPbWQuUGFyYWdyYXBoKGQpID0+IHRyYW5zbGF0ZShkLCBtYXBwaW5nKVxuICAgICAgICB8IFRleHQodCkgPT4gKExpc3QuYXBwZW5kKG1zZywgW05vZGUudGV4dCh0KV0pLCBtYXBwaW5nKVxuICAgICAgICB8IFVsKGl0ZW1zKSA9PlxuICAgICAgICAgIGxldCAoYnVsbGV0cywgbWFwcGluZykgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICgobm9kZXMsIG1hcHBpbmcpLCBkKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IChuLCBtYXBwaW5nKSA9IHRyYW5zbGF0ZShkLCBtYXBwaW5nKTtcbiAgICAgICAgICAgICAgICAoTGlzdC5hcHBlbmQobm9kZXMsIFtOb2RlLmxpKG4pXSksIG1hcHBpbmcpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAoW10sIG1hcHBpbmcpLFxuICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgKExpc3QuYXBwZW5kKG1zZywgW05vZGUudWwoYnVsbGV0cyldKSwgbWFwcGluZyk7IC8qIFRPRE8gSGFubmFoIC0gU2hvdWxkIHRoaXMgYmUgYW4gb3JkZXJlZCBsaXN0IGluc3RlYWQgb2YgYW4gdW5vcmRlcmVkIGxpc3Q/ICovXG4gICAgICAgIHwgQ29kZShfbmFtZSwgdCkgPT4gKExpc3QuYXBwZW5kKG1zZywgW2NvZGVfbm9kZSh0KV0pLCBtYXBwaW5nKVxuICAgICAgICB8IFVybChpZCwgZCwgX3RpdGxlKSA9PlxuICAgICAgICAgIGxldCAoZCwgbWFwcGluZykgPSB0cmFuc2xhdGUoZCwgbWFwcGluZyk7XG4gICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgIHN3aXRjaCAoSWQub2Zfc3RyaW5nKGlkKSkge1xuICAgICAgICAgICAgfCBTb21lKGlkKSA9PiBpZFxuICAgICAgICAgICAgfCBOb25lID0+IElkLmludmFsaWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IChpbm5lcl9tc2csIG1hcHBpbmcpID0gaGlnaGxpZ2h0KH5pbmplY3QsIGQsIGlkLCBtYXBwaW5nKTtcbiAgICAgICAgICAoTGlzdC5hcHBlbmQobXNnLCBbaW5uZXJfbXNnXSksIG1hcHBpbmcpO1xuICAgICAgICB8IEVtcGgoZCkgPT5cbiAgICAgICAgICBsZXQgKGQsIG1hcHBpbmcpID0gdHJhbnNsYXRlKGQsIG1hcHBpbmcpO1xuICAgICAgICAgIChcbiAgICAgICAgICAgIExpc3QuYXBwZW5kKFxuICAgICAgICAgICAgICBtc2csXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBOb2RlLnNwYW4oXG4gICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgQXR0ci5zdHlsZShcbiAgICAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLmNyZWF0ZSh+ZmllbGQ9XCJmb250LXN0eWxlXCIsIH52YWx1ZT1cIml0YWxpY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXBwaW5nLFxuICAgICAgICAgICk7XG4gICAgICAgIHwgXyA9PiAobXNnLCBtYXBwaW5nKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKFtdLCBtYXBwaW5nKSxcbiAgICAgIGRvYyxcbiAgICApO1xuICB0cmFuc2xhdGUob21kLCBDb2xvclN0ZXBzLmVtcHR5KTtcbn07XG5cbmxldCBta19leHBsYW5hdGlvbiA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIGdyb3VwX2lkLFxuICAgICAgZm9ybV9pZCxcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIG1vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgKVxuICAgIDogKE5vZGUudCwgQ29sb3JTdGVwcy50KSA9PiB7XG4gIGxldCAobXNnLCBjb2xvcl9tYXApID0gbWtfdHJhbnNsYXRpb24ofmluamVjdD1Tb21lKGluamVjdCksIHRleHQpO1xuICBsZXQgZmVlZGJhY2sgPVxuICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2tcbiAgICAgID8gW2V4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZpZXcofmluamVjdCwgZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKV0gOiBbXTtcbiAgKFxuICAgIGRpdihbZGl2KH5hdHRyPWNsc3MoW1wiZXhwbGFuYXRpb24tY29udGVudHNcIl0pLCBtc2cpXSBAIGZlZWRiYWNrKSxcbiAgICBjb2xvcl9tYXAsXG4gICk7XG59O1xuXG5sZXQgZXhwYW5kZXJfZGVjbyA9XG4gICAgKFxuICAgICAgfmRvY3M6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIH5zZXR0aW5nczogU2V0dGluZ3MudCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUgYXMge2ZvbnRfbWV0cmljcywgX30gYXMgdWlfc3RhdGU6IE1vZGVsLnVpX3N0YXRlLFxuICAgICAgfm9wdGlvbnM6IGxpc3QoKEV4cGxhaW5UaGlzRm9ybS5mb3JtX2lkLCBTZWdtZW50LnQpKSxcbiAgICAgIH5ncm91cDogRXhwbGFpblRoaXNGb3JtLmdyb3VwLFxuICAgICAgfmRvYzogRXhwbGFpblRoaXNGb3JtLmZvcm0sXG4gICAgICBlZGl0b3IsXG4gICAgKSA9PiB7XG4gIG1vZHVsZSBEZWNvID1cbiAgICBEZWNvLkRlY28oe1xuICAgICAgbGV0IGVkaXRvciA9IGVkaXRvcjtcbiAgICAgIGxldCB1aV9zdGF0ZSA9IHVpX3N0YXRlO1xuICAgIH0pO1xuICBzd2l0Y2ggKGRvYy5leHBhbmRhYmxlX2lkLCBMaXN0Lmxlbmd0aChvcHRpb25zKSkge1xuICB8IChOb25lLCBfKVxuICB8IChfLCAwIHwgMSkgPT4gZGl2KFtdKVxuICB8IChTb21lKChleHBhbmRhYmxlLCBfKSksIF8pID0+XG4gICAgRGVjby50ZXJtX2RlY29yYXRpb24oXG4gICAgICB+aWQ9ZXhwYW5kYWJsZSxcbiAgICAgICgob3JpZ2luLCBfLCBwYXRoKSkgPT4ge1xuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfcG9zID1cbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyB0b3A6ICVmcHg7XCIsXG4gICAgICAgICAgICBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9zdHlsZSA9XG4gICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICBzcGVjaWZpY2l0eV9wb3NcbiAgICAgICAgICAgICsrIChkb2NzLnNwZWNpZmljaXR5X29wZW4gPyBcInRyYW5zZm9ybTogc2NhbGVZKDEpO1wiIDogXCJcIiksXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZ2V0X2Nsc3MgPSBzZWdtZW50ID0+XG4gICAgICAgICAgc3dpdGNoIChMaXN0Lm50aChzZWdtZW50LCAwKSkge1xuICAgICAgICAgIHwgQmFzZS5UaWxlKHttb2xkLCBffSkgPT4gW1xuICAgICAgICAgICAgICBcImNpLWhlYWRlci1cIiArKyBTb3J0LnRvX3N0cmluZyhtb2xkLm91dCkgLy8gVE9ETyB0aGUgYnJvd24gb24gYnJvd24gaXNuJ3QgdGhlIGdyZWF0ZXN0Li4uIGJ1dCBva2F5XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfCBfID0+IFtdXG4gICAgICAgICAgfTtcblxuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfbWVudSA9XG4gICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICBjbHNzKFtcInNwZWNpZmljaXR5LW9wdGlvbnMtbWVudVwiLCBcImV4cGFuZGFibGVcIl0pLFxuICAgICAgICAgICAgICAgIHNwZWNpZmljaXR5X3N0eWxlLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAoKGlkOiBFeHBsYWluVGhpc0Zvcm0uZm9ybV9pZCwgc2VnbWVudDogU2VnbWVudC50KSk6IE5vZGUudCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG1hcCA9IE1lYXN1cmVkLm9mX3NlZ21lbnQoc2VnbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICAgICAgICAgICAgICBDb2RlLnNpbXBsZV92aWV3KFxuICAgICAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgICB+dW5zZWxlY3RlZD1zZWdtZW50LFxuICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjbGFzc2VzID1cbiAgICAgICAgICAgICAgICAgIGlkID09IGRvYy5pZFxuICAgICAgICAgICAgICAgICAgICA/IFtcInNlbGVjdGVkXCJdIEAgZ2V0X2Nsc3Moc2VnbWVudCkgOiBnZXRfY2xzcyhzZWdtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX2dyb3VwX3NlbGVjdGlvbiA9IF8gPT5cbiAgICAgICAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXAuaWQsIGlkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICBjbHNzKGNsYXNzZXMpLFxuICAgICAgICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2sodXBkYXRlX2dyb3VwX3NlbGVjdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgW2NvZGVfdmlld10sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZXhwYW5kX2Fycm93X3N0eWxlID0gQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzcGVjaWZpY2l0eV9wb3MpO1xuICAgICAgICBsZXQgZXhwYW5kX2Fycm93ID1cbiAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJhcnJvd1wiXSksIGV4cGFuZF9hcnJvd19zdHlsZV0pLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZXhwYW5kYWJsZV9kZWNvID1cbiAgICAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICB+YmFzZV9jbHM9W1wiZXhwYW5kYWJsZVwiXSxcbiAgICAgICAgICAgIH5hYnNfcG9zPWZhbHNlLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICApO1xuXG4gICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgY2xzcyhbXCJleHBhbmRhYmxlLXRhcmdldFwiXSksXG4gICAgICAgICAgICAgIERlY1V0aWwuYWJzX3Bvc2l0aW9uKH5mb250X21ldHJpY3MsIG9yaWdpbiksXG4gICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiB7XG4gICAgICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgIEV4cGxhaW5UaGlzVXBkYXRlLlNwZWNpZmljaXR5T3BlbighZG9jcy5zcGVjaWZpY2l0eV9vcGVuKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFtleHBhbmRhYmxlX2RlY28sIHNwZWNpZmljaXR5X21lbnVdXG4gICAgICAgICAgQCAoZG9jcy5zcGVjaWZpY2l0eV9vcGVuID8gW10gOiBbZXhwYW5kX2Fycm93XSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBleGFtcGxlX3ZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+dWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+Z3JvdXBfaWQsXG4gICAgICB+Zm9ybV9pZCxcbiAgICAgIH5leGFtcGxlczogbGlzdChFeHBsYWluVGhpc0Zvcm0uZXhhbXBsZSksXG4gICAgICB+bW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICApID0+IHtcbiAgZXhhbXBsZXMgPT0gW11cbiAgICA/IFtdXG4gICAgOiBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuaWQoXCJleGFtcGxlc1wiKSxcbiAgICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAgIChfLCB7dGVybSwgbWVzc2FnZSwgc3ViX2lkLCBffTogRXhwbGFpblRoaXNGb3JtLmV4YW1wbGUpID0+IHtcbiAgICAgICAgICAgIGxldCBmZWVkYmFjayA9XG4gICAgICAgICAgICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2tcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIGV4YW1wbGVfZmVlZGJhY2tfdmlldyhcbiAgICAgICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1faWQsXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9pZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1jbHNzKFtcImV4YW1wbGVcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgQ2VsbEVkaXRvci52aWV3KFxuICAgICAgICAgICAgICAgICAgfnNlbGVjdD1fID0+IFVpX2VmZmVjdC5JZ25vcmUsXG4gICAgICAgICAgICAgICAgICB+aW5qZWN0PV8gPT4gVWlfZWZmZWN0Lklnbm9yZSxcbiAgICAgICAgICAgICAgICAgIH5pbmplY3RfZ2xvYmFsPV8gPT4gVWlfZWZmZWN0Lklnbm9yZSxcbiAgICAgICAgICAgICAgICAgIH51aV9zdGF0ZSxcbiAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgIH5oaWdobGlnaHRzPU5vbmUsXG4gICAgICAgICAgICAgICAgICB+c2VsZWN0ZWQ9Tm9uZSxcbiAgICAgICAgICAgICAgICAgIH5jYXB0aW9uPU5vbmUsXG4gICAgICAgICAgICAgICAgICB+bG9ja2VkPXRydWUsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3IgPVxuICAgICAgICAgICAgICAgICAgICAgIEVkaXRvci5pbml0KH5yZWFkX29ubHk9dHJ1ZSwgWmlwcGVyLnVuemlwKHRlcm0pKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICh0ZXJtLCBfKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbShlZGl0b3Iuc3RhdGUuemlwcGVyKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXRpY3MgPVxuICAgICAgICAgICAgICAgICAgICAgIENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgfnNldHRpbmdzPXNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQ6IE1vZGVsUmVzdWx0LnQgPVxuICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmNvcmUuZHluYW1pY3NcbiAgICAgICAgICAgICAgICAgICAgICAgID8gRXZhbHVhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhYjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UuZXZhbHVhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncz1zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91czogUmVzdWx0UGVuZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTm9FbGFiO1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPWNsc3MoW1wiZXhwbGFuYXRpb25cIl0pLFxuICAgICAgICAgICAgICAgICAgW3RleHQobWVzc2FnZSldIEAgZmVlZGJhY2ssXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgXTtcbn07XG5cbmxldCByZWMgYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0ID0gKHBhdDogUGF0LnQpID0+IHtcbiAgc3dpdGNoIChwYXQudGVybSkge1xuICB8IFBhcmVucyhwKVxuICB8IENhc3QocCwgXywgXykgPT4gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHApXG4gIHwgXyA9PiBwYXRcbiAgfTtcbn07XG5cbmxldCByZWMgYnlwYXNzX3BhcmVuc19wYXQgPSAocGF0OiBQYXQudCkgPT4ge1xuICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gIHwgUGFyZW5zKHApID0+IGJ5cGFzc19wYXJlbnNfcGF0KHApXG4gIHwgXyA9PiBwYXRcbiAgfTtcbn07XG5cbmxldCByZWMgYnlwYXNzX3BhcmVuc19leHAgPSAoZXhwOiBFeHAudCkgPT4ge1xuICBzd2l0Y2ggKGV4cC50ZXJtKSB7XG4gIHwgUGFyZW5zKGUpID0+IGJ5cGFzc19wYXJlbnNfZXhwKGUpXG4gIHwgXyA9PiBleHBcbiAgfTtcbn07XG5cbmxldCByZWMgYnlwYXNzX3BhcmVuc190eXAgPSAodHlwOiBUeXAudCkgPT4ge1xuICBzd2l0Y2ggKHR5cC50ZXJtKSB7XG4gIHwgUGFyZW5zKHQpID0+IGJ5cGFzc19wYXJlbnNfdHlwKHQpXG4gIHwgXyA9PiB0eXBcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbWVzc2FnZV9tb2RlID1cbiAgfCBNZXNzYWdlQ29udGVudChcbiAgICAgIFVwZGF0ZUFjdGlvbi50ID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0LnQodW5pdCksXG4gICAgICBNb2RlbC51aV9zdGF0ZSxcbiAgICAgIFNldHRpbmdzLnQsXG4gICAgKVxuICB8IENvbG9yaW5ncztcblxubGV0IGdldF9kb2MgPVxuICAgIChcbiAgICAgIH5kb2NzOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgICBpbmZvOiBvcHRpb24oU3RhdGljcy5JbmZvLnQpLFxuICAgICAgbW9kZTogbWVzc2FnZV9tb2RlLFxuICAgIClcbiAgICA6IChsaXN0KE5vZGUudCksIChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCksIGxpc3QoTm9kZS50KSkgPT4ge1xuICBsZXQgc2ltcGxlID0gbXNnID0+IChbXSwgKFt0ZXh0KG1zZyldLCAoSWQuTWFwLmVtcHR5LCAwKSksIFtdKTtcbiAgbGV0IGRlZmF1bHQgPSBzaW1wbGUoXCJObyBkb2NzIGF2YWlsYWJsZVwiKTtcbiAgbGV0IGdldF9zcGVjaWZpY2l0eV9sZXZlbCA9IGdyb3VwX2lkID0+XG4gICAgZnN0KEV4cGxhaW5UaGlzTW9kZWwuZ2V0X2Zvcm1fYW5kX29wdGlvbnMoZ3JvdXBfaWQsIGRvY3MpKS5pZDtcbiAgbGV0IGdldF9tZXNzYWdlID1cbiAgICAgIChcbiAgICAgICAgfmNvbG9yaW5ncz1bXSxcbiAgICAgICAgfmZvcm1hdDogb3B0aW9uKHN0cmluZyA9PiBzdHJpbmcpPU5vbmUsXG4gICAgICAgIH5leHBsYW5hdGlvbjogb3B0aW9uKHN0cmluZyk9PyxcbiAgICAgICAgZ3JvdXA6IEV4cGxhaW5UaGlzRm9ybS5ncm91cCxcbiAgICAgIClcbiAgICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PiB7XG4gICAgbGV0IChkb2MsIG9wdGlvbnMpID0gRXhwbGFpblRoaXNNb2RlbC5nZXRfZm9ybV9hbmRfb3B0aW9ucyhncm91cCwgZG9jcyk7XG5cbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTk5ODQwOC9vY2FtbC1jb252ZXJ0aW5nLXN0cmluZ3MtdG8tYS11bml0LXN0cmluZy1mb3JtYXRcbiAgICBsZXQgZXhwbGFuYXRpb25fbXNnID1cbiAgICAgIHN3aXRjaCAoZXhwbGFuYXRpb24sIGZvcm1hdCkge1xuICAgICAgfCAoU29tZShtc2cpLCBfKSA9PiBtc2dcbiAgICAgIHwgKF8sIFNvbWUoZikpID0+IGYoZG9jLmV4cGxhbmF0aW9uKVxuICAgICAgfCAoXywgTm9uZSkgPT4gZG9jLmV4cGxhbmF0aW9uXG4gICAgICB9O1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgIHwgTWVzc2FnZUNvbnRlbnQoaW5qZWN0LCB1aV9zdGF0ZSwgc2V0dGluZ3MpID0+XG4gICAgICBsZXQgKGV4cGxhbmF0aW9uLCBjb2xvcl9tYXApID1cbiAgICAgICAgbWtfZXhwbGFuYXRpb24oXG4gICAgICAgICAgfnNldHRpbmdzLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgZ3JvdXAuaWQsXG4gICAgICAgICAgZG9jLmlkLFxuICAgICAgICAgIGV4cGxhbmF0aW9uX21zZyxcbiAgICAgICAgICBkb2NzLFxuICAgICAgICApO1xuICAgICAgbGV0IHNvcnQgPVxuICAgICAgICBzd2l0Y2ggKGluZm8pIHtcbiAgICAgICAgfCBOb25lID0+IFNvcnQuQW55XG4gICAgICAgIHwgU29tZShjaSkgPT4gSW5mby5zb3J0X29mKGNpKVxuICAgICAgICB9O1xuICAgICAgbGV0IGhpZ2hsaWdodHMgPVxuICAgICAgICBjb2xvcmluZ3NcbiAgICAgICAgfD4gTGlzdC5tYXAoKChzeW50YWN0aWNfZm9ybV9pZDogSWQudCwgY29kZV9pZDogSWQudCkpID0+IHtcbiAgICAgICAgICAgICBsZXQgKGNvbG9yLCBfKSA9IENvbG9yU3RlcHMuZ2V0X2NvbG9yKGNvZGVfaWQsIGNvbG9yX21hcCk7XG4gICAgICAgICAgICAgKHN5bnRhY3RpY19mb3JtX2lkLCBjb2xvcik7XG4gICAgICAgICAgIH0pXG4gICAgICAgIHw+IExpc3QudG9fc2VxXG4gICAgICAgIHw+IElkLk1hcC5vZl9zZXFcbiAgICAgICAgfD4gT3B0aW9uLnNvbWU7XG4gICAgICBsZXQgZWRpdG9yID1cbiAgICAgICAgRWRpdG9yLmluaXQofnJlYWRfb25seT10cnVlLCBkb2Muc3ludGFjdGljX2Zvcm0gfD4gWmlwcGVyLnVuemlwKTtcbiAgICAgIGxldCBleHBhbmRlcl9kZWNvID1cbiAgICAgICAgZXhwYW5kZXJfZGVjbyhcbiAgICAgICAgICB+ZG9jcyxcbiAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgICAgfm9wdGlvbnMsXG4gICAgICAgICAgfmdyb3VwLFxuICAgICAgICAgIH5kb2MsXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZ2hsaWdodF9kZWNvID1cbiAgICAgICAgc3dpdGNoIChoaWdobGlnaHRzKSB7XG4gICAgICAgIHwgU29tZShoaWdobGlnaHRzKSA9PlxuICAgICAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgICAgIERlY28uRGVjbyh7XG4gICAgICAgICAgICAgIGxldCBlZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgICAgICAgIGxldCB1aV9zdGF0ZSA9IHVpX3N0YXRlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgRGVjby5jb2xvcl9oaWdobGlnaHRzKENvbG9yU3RlcHMudG9fbGlzdChoaWdobGlnaHRzKSk7XG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICB9O1xuICAgICAgbGV0IHN0YXRpY3MgPSBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3M7XG4gICAgICBsZXQgc3ludGFjdGljX2Zvcm1fdmlldyA9XG4gICAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcoXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+b3ZlcmxheXM9aGlnaGxpZ2h0X2RlY28gQCBbZXhwYW5kZXJfZGVjb10sXG4gICAgICAgICAgfnNvcnQsXG4gICAgICAgICAge2VkaXRvciwgc3RhdGljc30sXG4gICAgICAgICk7XG4gICAgICBsZXQgZXhhbXBsZV92aWV3ID1cbiAgICAgICAgZXhhbXBsZV92aWV3KFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+Z3JvdXBfaWQ9Z3JvdXAuaWQsXG4gICAgICAgICAgfmZvcm1faWQ9ZG9jLmlkLFxuICAgICAgICAgIH5leGFtcGxlcz1kb2MuZXhhbXBsZXMsXG4gICAgICAgICAgfm1vZGVsPWRvY3MsXG4gICAgICAgICk7XG4gICAgICAoW3N5bnRhY3RpY19mb3JtX3ZpZXddLCAoW2V4cGxhbmF0aW9uXSwgY29sb3JfbWFwKSwgZXhhbXBsZV92aWV3KTtcbiAgICB8IENvbG9yaW5ncyA9PlxuICAgICAgbGV0IChfLCBjb2xvcl9tYXApID0gbWtfdHJhbnNsYXRpb24ofmluamVjdD1Ob25lLCBleHBsYW5hdGlvbl9tc2cpO1xuICAgICAgKFtdLCAoW10sIGNvbG9yX21hcCksIFtdKTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIFVzZSB0aGlzIHdoZW4gYWRkaW5nIG5ldyBlbnRyaWVzICovXG4gIGxldCBtZXNzYWdlX3NpbmdsZSA9IChlOiBFeHBsYWluVGhpc0Zvcm0uU2ltcGxlLnQpID0+IHtcbiAgICBsZXQgKGV4cGxhbmF0aW9uLCBjb2xvcmluZ3MsIGdyb3VwKSA9IEV4cGxhaW5UaGlzRm9ybS5TaW1wbGUudG9fZ3JvdXAoZSk7XG4gICAgZ2V0X21lc3NhZ2UofmNvbG9yaW5ncywgfmZvcm1hdD1Ob25lLCB+ZXhwbGFuYXRpb24sIGdyb3VwKTtcbiAgfTtcblxuICBzd2l0Y2ggKGluZm8pIHtcbiAgfCBTb21lKEluZm9FeHAoe3Rlcm0sIF99KSkgPT5cbiAgICBsZXQgcmVjIGdldF9tZXNzYWdlX2V4cCA9XG4gICAgICAgICAgICAodGVybSlcbiAgICAgICAgICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PlxuICAgICAgc3dpdGNoICgodGVybTogRXhwLnRlcm0pKSB7XG4gICAgICB8IEV4cC5JbnZhbGlkKF8pID0+IHNpbXBsZShcIk5vdCBhIHZhbGlkIGV4cHJlc3Npb25cIilcbiAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgICB8IENsb3N1cmUoXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBCdWlsdGluRnVuKF8pID0+IHNpbXBsZShcIkludGVybmFsIGV4cHJlc3Npb25cIilcbiAgICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVFeHAuZW1wdHlfaG9sZV9leHBzKVxuICAgICAgfCBNdWx0aUhvbGUoX2NoaWxkcmVuKSA9PiBnZXRfbWVzc2FnZShIb2xlRXhwLm11bHRpX2hvbGVfZXhwcylcbiAgICAgIHwgVHlBbGlhcyh0eV9wYXQsIHR5X2RlZiwgX2JvZHkpID0+XG4gICAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHlfcGF0LmlkcywgMCk7XG4gICAgICAgIGxldCBkZWZfaWQgPSBMaXN0Lm50aCh0eV9kZWYuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgIFR5QWxpYXNFeHAudHlhbGlhc19iYXNlX2V4cF9jb2xvcmluZ19pZHMofnRwYXRfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFR5QWxpYXNFeHAudHlhbGlhc19leHBzLFxuICAgICAgICApO1xuICAgICAgfCBEZWZlcnJhbChfKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5kZWZlcnJhbF9leHBzKVxuICAgICAgfCBCb29sKGIpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmJvb2xfZXhwcyhiKSlcbiAgICAgIHwgSW50KGkpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmludF9leHBzKGkpKVxuICAgICAgfCBGbG9hdChmKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5mbG9hdF9leHBzKGYpKVxuICAgICAgfCBTdHJpbmcocykgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuc3RyaW5nX2V4cHMocykpXG4gICAgICB8IExpc3RMaXQodGVybXMpID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHRlcm1zKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0bGl0cyxcbiAgICAgICAgKVxuICAgICAgfCBUeXBGdW4odHBhdCwgYm9keSwgXykgPT5cbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+cGF0X2lkPXRwYXRfaWQsXG4gICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyogVE9ETzogTW9yZSBjb3VsZCBiZSBkb25lIGhlcmUgcHJvYmFibHkgZm9yIGRpZmZlcmVudCBwYXR0ZXJucy4gKi9cbiAgICAgICAgYmFzaWMoVHlwRnVuY3Rpb25FeHAudHlwZV9mdW5jdGlvbnNfYmFzaWMpO1xuICAgICAgfCBGdW4ocGF0LCBib2R5LCBfLCBfKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgcGF0ID0gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHBhdCk7XG4gICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGUgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fZW1wdHlfaG9sZV9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19lbXB0eV9ob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2VtcHR5X2hvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZW1wdHlfaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9tdWx0aV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX211bHRpX2hvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbXVsdGlfaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19tdWx0aV9ob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgV2lsZCA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl93aWxkX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1GdW5jdGlvbkV4cC5mdW5jdGlvbl93aWxkX2V4cF9jb2xvcmluZ19pZHMofmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludChpKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9pbnRsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfaW50KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25faW50bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChpKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19pbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBGbG9hdChmKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9mbG9hdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19mbG9hdCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlZiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgZixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQm9vbChiKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9ib29sbGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlYiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgYixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9zdHJsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfc3RyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19zdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShbXSkgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHJpdl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190cml2KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHJpdl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgLy8gSEFOTkFIIFRPRE8gLSB0aGluayBjb3VsZCBtb3ZlIHRoaXMgZm9ybWF0IHRoaW5nIGxpa2UgaW50byB0aGUgY29sb3JpbmdzXG4gICAgICAgICAgICAgIC8vIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190cml2LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBMaXN0TGl0KGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RuaWxfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bmlsKSkge1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bmlsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RsaXRfZXhwLmlkXG4gICAgICAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RsaXQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdGxpdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bGl0KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2NvbnNfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucykpIHtcbiAgICAgICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmhkX2lkLFxuICAgICAgICAgICAgICAgICAgfnRsX2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhoZF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2NvbnMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFZhcih2YXIpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3Zhcl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2YXIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdmFyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVHVwbGUoZWxlbWVudHMpID0+XG4gICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGxldCBiYXNpY190dXBsZSA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICAgICAgfCAyID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlMl9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGxldCBwYXQxX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICAgIGxldCBwYXQyX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0MV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0Ml9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IDMgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUzX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlM19leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0MV9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDJfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQzX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIHwgXyA9PlxuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cC5pZFxuICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUpKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIHwgQXAoY29uLCBhcmcpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2FwX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2FwKSkge1xuICAgICAgICAgICAgbGV0IGNvbl9pZCA9IExpc3QubnRoKGNvbi5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5jb25faWQsXG4gICAgICAgICAgICAgICAgICB+YXJnX2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9jdHJfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY3RyKSkge1xuICAgICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY3RyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgSW52YWxpZChfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0XG4gICAgICAgIHwgUGFyZW5zKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIHwgQ2FzdChfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0P1xuICAgICAgICB9O1xuICAgICAgfCBUdXBsZSh0ZXJtcykgPT5cbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT5cbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aCh0ZXJtcykpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICk7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgodGVybXMpKSB7XG4gICAgICAgIHwgMiA9PlxuICAgICAgICAgIGlmIChUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTIuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlRXhwLnR1cGxlczIpKSB7XG4gICAgICAgICAgICBsZXQgZXhwMV9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMl9jb2xvcmluZ19pZHMofmV4cDFfaWQsIH5leHAyX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlczIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhUdXBsZUV4cC50dXBsZXMyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgMyA9PlxuICAgICAgICAgIGlmIChUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTMuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlRXhwLnR1cGxlczMpKSB7XG4gICAgICAgICAgICBsZXQgZXhwMV9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBleHAzX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDIpLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTNfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmV4cDFfaWQsXG4gICAgICAgICAgICAgICAgICB+ZXhwMl9pZCxcbiAgICAgICAgICAgICAgICAgIH5leHAzX2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBUdXBsZUV4cC50dXBsZXMzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoVHVwbGVFeHAudHVwbGVzMyk7XG4gICAgICAgICAgfVxuICAgICAgICB8IF8gPT4gYmFzaWMoVHVwbGVFeHAudHVwbGVzKVxuICAgICAgICB9O1xuICAgICAgfCBWYXIobikgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAudmFyX2V4cHMobikpXG4gICAgICB8IExldChwYXQsIGRlZiwgYm9keSkgPT5cbiAgICAgICAgbGV0IHBhdCA9IGJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdChwYXQpO1xuICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgIGxldCBkZWZfaWQgPSBMaXN0Lm50aChkZWYuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIGxldCBiYXNpYyA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9TGV0RXhwLmxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGUgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9lbXB0eV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfZW1wdHlob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19lbXB0eWhvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19lbXB0eWhvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9tdWx0aV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfbXV0bGlob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19tdXRsaWhvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19tdXRsaWhvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBXaWxkID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfd2lsZF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3dpbGQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X3dpbGRfZXhwX2NvbG9yaW5nX2lkcyh+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfd2lsZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3dpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnQoaSkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9pbnRfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19pbnQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2ludF9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KGkpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19pbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlIGFuZCBzb21lIG90aGVyIHBsYWNlcyB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIGZvcm1zIGFuZCBzcGVjaWZpY2l0eSBsZXZlbHMuLi4gbWF5YmUgYSBTYWZhcmkgaXNzdWUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19pbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBGbG9hdChmKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2Zsb2F0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfZmxvYXQpKSB7XG4gICAgICAgICAgICAvLyBUT0RPIE1ha2Ugc3VyZSBldmVyeXdoZXJlIHByaW50aW5nIHRoZSBmbG9hdCBsaXRlcmFsIHByaW50IGl0IHByZXR0aWVyXG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2Zsb2F0X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJWYlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIGYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQm9vbChiKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2Jvb2xfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19ib29sKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9ib29sX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJWIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIGIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Jvb2wsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3N0cl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3N0cikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfc3RyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19zdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShbXSkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF90cml2X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHJpdikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlIGFuZCBvdGhlciBwbGFjZXMgd2hlbiBzd2l0Y2hpbmcgc3ludGFjdGljIHNwZWNpZmljaXRpZXMuLi4gc2VlbXMgbGlrZSBtaWdodCBiZSBTYWZhcmkgaXNzdWUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c190cml2LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgICAgICBpZiAoTGlzdC5sZW5ndGgoZWxlbWVudHMpID09IDApIHtcbiAgICAgICAgICAgIGlmIChMZXRFeHAubGV0X2xpc3RuaWxfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2xpc3RuaWwpKSB7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbGlzdG5pbCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2xpc3RuaWwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfbGlzdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19saXN0bGl0KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbGlzdGxpdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2xpc3RsaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9jb25zX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfY29ucykpIHtcbiAgICAgICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2NvbnMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19jb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVmFyKHZhcikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF92YXJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c192YXIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdmFyLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c192YXIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c192YXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgICAgICBsZXQgYmFzaWNfdHVwbGUgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X3R1cGxlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgICAgIHwgMiA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfdHVwbGUyX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c190dXBsZTIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCAzID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3R1cGxlMyk7XG4gICAgICAgICAgICAvLyBUT0RPIFN5bnRhY3RpYyBmb3JtIGNhbiBnbyBvZmYgcGFnZSAtIHNvIGNhbiBleGFtcGxlcyAtIGJ1dCBjYW4gc2Nyb2xsLCBqdXN0IGNhbid0IHNlZSBib3R0b20gc2Nyb2xsIGJhclxuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfdHVwbGUzX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDNfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5kZWZfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c190dXBsZTMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShMZXRFeHAubGV0c190dXBsZTMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHVwbGUpKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3R1cGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2FwX2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfYXApKSB7XG4gICAgICAgICAgICBsZXQgY29uX2lkID0gTGlzdC5udGgoY29uLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2FwX2V4cF9jb2xvcmluZ19pZHMofmNvbl9pZCwgfmFyZ19pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoY29uX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2FwKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9jdHJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19jdHIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2LFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19jdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19jdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXRcbiAgICAgICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfCBDYXN0KF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIH07XG4gICAgICB8IEZpeEYocGF0LCBib2R5LCBfKSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaXhGRXhwLnNpbmdsZShcbiAgICAgICAgICAgIH5wYXRfaWQ9VVBhdC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgQXAoUmV2ZXJzZSwgYXJnLCBmbikgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgUGlwZWxpbmVFeHAuc2luZ2xlKFxuICAgICAgICAgICAgfmFyZ19pZD1VRXhwLnJlcF9pZChhcmcpLFxuICAgICAgICAgICAgfmZuX2lkPVVFeHAucmVwX2lkKGZuKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IFR5cEFwKGYsIHR5cCkgPT5cbiAgICAgICAgbGV0IGZfaWQgPSBMaXN0Lm50aChmLmlkcywgMCk7XG4gICAgICAgIGxldCB0eXBfaWQgPSBMaXN0Lm50aCh0eXAuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gKGdyb3VwLCBmb3JtYXQsIGNvbG9yaW5nX2lkcykgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofmZfaWQsIH50eXBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1Tb21lKGZvcm1hdCksXG4gICAgICAgICAgICBncm91cCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBiYXNpYyhcbiAgICAgICAgICBUeXBBcHBFeHAudHlwZnVuYXBzLFxuICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGZfaWQpLFxuICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHlwX2lkKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVHlwQXBwRXhwLnR5cGZ1bmFwcF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICApO1xuXG4gICAgICB8IEFwKEZvcndhcmQsIHgsIGFyZykgPT5cbiAgICAgICAgbGV0IHhfaWQgPSBMaXN0Lm50aCh4LmlkcywgMCk7XG4gICAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gKGdyb3VwLCBmb3JtYXQsIGNvbG9yaW5nX2lkcykgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofnhfaWQsIH5hcmdfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1Tb21lKGZvcm1hdCksXG4gICAgICAgICAgICBncm91cCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKHgudGVybSkge1xuICAgICAgICB8IENvbnN0cnVjdG9yKHYpID0+XG4gICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICBBcHBFeHAuY29uYXBzLFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgQXBwRXhwLmNvbmFwcF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgIClcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICBBcHBFeHAuZnVuYXBzLFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAgfCBEZWZlcnJlZEFwKHgsIGFyZ3MpID0+XG4gICAgICAgIGxldCB4X2lkID0gTGlzdC5udGgoeC5pZHMsIDApO1xuICAgICAgICBsZXQgc3VwcGxpZWRfaWQgPSBJZC5taygpO1xuICAgICAgICBsZXQgZGVmZXJyZWRfaWQgPSB7XG4gICAgICAgICAgbGV0IGRlZmVycmFsID0gTGlzdC5maW5kKEV4cC5pc19kZWZlcnJhbCwgYXJncyk7XG4gICAgICAgICAgTGlzdC5udGgoZGVmZXJyYWwuaWRzLCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIHwgTWVzc2FnZUNvbnRlbnQoXykgPT5cbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIEFwcEV4cC5kZWZlcnJlZF9mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyh+eF9pZCwgfmRlZmVycmVkX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHN1cHBsaWVkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZmVycmVkX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuZGVmZXJyZWRhcHMsXG4gICAgICAgICAgKVxuICAgICAgICB8IENvbG9yaW5ncyA9PlxuICAgICAgICAgIGxldCBjb2xvcl9mbiA9IExpc3QubnRoKENvbG9yU3RlcHMuY2hpbGRfY29sb3JzLCAwKTtcbiAgICAgICAgICBsZXQgY29sb3Jfc3VwcGxpZWQgPSBMaXN0Lm50aChDb2xvclN0ZXBzLmNoaWxkX2NvbG9ycywgMSk7XG4gICAgICAgICAgbGV0IGNvbG9yX2RlZmVycmVkID0gTGlzdC5udGgoQ29sb3JTdGVwcy5jaGlsZF9jb2xvcnMsIDIpO1xuICAgICAgICAgIGxldCBhZGQgPSAobWFwcGluZywgYXJnOiBFeHAudCkgPT4ge1xuICAgICAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICAgICAgSGF6M2xjb3JlLklkLk1hcC5hZGQoXG4gICAgICAgICAgICAgIGFyZ19pZCxcbiAgICAgICAgICAgICAgRXhwLmlzX2RlZmVycmFsKGFyZykgPyBjb2xvcl9kZWZlcnJlZCA6IGNvbG9yX3N1cHBsaWVkLFxuICAgICAgICAgICAgICBtYXBwaW5nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGxldCBtYXBwaW5nID0gSGF6M2xjb3JlLklkLk1hcC5zaW5nbGV0b24oeF9pZCwgY29sb3JfZm4pO1xuICAgICAgICAgIGxldCBtYXBwaW5nID0gTGlzdC5mb2xkX2xlZnQoYWRkLCBtYXBwaW5nLCBhcmdzKTtcbiAgICAgICAgICBsZXQgY29sb3JfbWFwID0gKG1hcHBpbmcsIExpc3QubGVuZ3RoKGFyZ3MpICsgMSk7XG4gICAgICAgICAgKFtdLCAoW10sIGNvbG9yX21hcCksIFtdKTtcbiAgICAgICAgfTtcbiAgICAgIHwgSWYoY29uZCwgdGhlbl8sIGVsc2VfKSA9PlxuICAgICAgICBsZXQgY29uZF9pZCA9IExpc3QubnRoKGNvbmQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHRoZW5faWQgPSBMaXN0Lm50aCh0aGVuXy5pZHMsIDApO1xuICAgICAgICBsZXQgZWxzZV9pZCA9IExpc3QubnRoKGVsc2VfLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9SWZFeHAuaWZfZXhwX2NvbG9yaW5nX2lkcyh+Y29uZF9pZCwgfnRoZW5faWQsIH5lbHNlX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25kX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0aGVuX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbHNlX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBJZkV4cC5pZnMsXG4gICAgICAgICk7XG4gICAgICB8IFNlcShsZWZ0LCByaWdodCkgPT5cbiAgICAgICAgbGV0IGV4cDFfaWQgPSBMaXN0Lm50aChsZWZ0LmlkcywgMCk7XG4gICAgICAgIGxldCBleHAyX2lkID0gTGlzdC5udGgocmlnaHQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1TZXFFeHAuc2VxX2V4cF9jb2xvcmluZ19pZHMofmV4cDFfaWQsIH5leHAyX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgU2VxRXhwLnNlcXMsXG4gICAgICAgICk7XG4gICAgICB8IEZpbHRlcihGaWx0ZXIoe2FjdDogKFN0ZXAsIE9uZSksIHBhdH0pLCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX3BhdXNlKFxuICAgICAgICAgICAgfnBfaWQ9VUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgQWxsKSwgcGF0fSksIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfZGVidWcoXG4gICAgICAgICAgICB+cF9pZD1VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoRmlsdGVyKHthY3Q6IChFdmFsLCBBbGwpLCBwYXR9KSwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9ldmFsKFxuICAgICAgICAgICAgfnBfaWQ9VUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKEZpbHRlcih7YWN0OiAoRXZhbCwgT25lKSwgcGF0fSksIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfaGlkZShcbiAgICAgICAgICAgIH5wX2lkPVVFeHAucmVwX2lkKHBhdCksXG4gICAgICAgICAgICB+Ym9keV9pZD1VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcihfKSA9PiBzaW1wbGUoXCJJbnRlcm5hbCBleHByZXNzaW9uXCIpXG4gICAgICB8IFRlc3QoYm9keSkgPT5cbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9VGVzdEV4cC50ZXN0X2V4cF9jb2xvcmluZ19pZHMofmJvZHlfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVGVzdEV4cC50ZXN0cyxcbiAgICAgICAgKTtcbiAgICAgIHwgUGFyZW5zKHRlcm0pID0+IGdldF9tZXNzYWdlX2V4cCh0ZXJtLnRlcm0pIC8vIE5vIFNwZWNpYWwgbWVzc2FnZT9cbiAgICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdEV4cC5jb25zX2V4cF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhoZF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIExpc3RFeHAubGlzdGNvbnMsXG4gICAgICAgICk7XG4gICAgICB8IExpc3RDb25jYXQoeHMsIHlzKSA9PlxuICAgICAgICBsZXQgeHNfaWQgPSBMaXN0Lm50aCh4cy5pZHMsIDApO1xuICAgICAgICBsZXQgeXNfaWQgPSBMaXN0Lm50aCh5cy5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUxpc3RFeHAuY29uY2F0X2V4cF9jb2xvcmluZ19pZHMofnhzX2lkLCB+eXNfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4c19pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeXNfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIExpc3RFeHAubGlzdGNvbmNhdHMsXG4gICAgICAgICk7XG4gICAgICB8IFVuT3Aob3AsIGV4cCkgPT5cbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICB8IEJvb2woTm90KSA9PlxuICAgICAgICAgIGxldCBleHBfaWQgPSBMaXN0Lm50aChleHAuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9T3BFeHAuYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkcyh+ZXhwX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgT3BFeHAuYm9vbF91bl9ub3QsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBJbnQoTWludXMpID0+XG4gICAgICAgICAgbGV0IGV4cF9pZCA9IExpc3QubnRoKGV4cC5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1PcEV4cC5pbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2lkcyh+ZXhwX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgT3BFeHAuaW50X3VuX21pbnVzLFxuICAgICAgICAgICk7XG4gICAgICAgIHwgTWV0YShVbnF1b3RlKSA9PlxuICAgICAgICAgIG1lc3NhZ2Vfc2luZ2xlKEZpbHRlckV4cC51bnF1b3RlKH5zZWxfaWQ9VUV4cC5yZXBfaWQoZXhwKSkpXG4gICAgICAgIH1cbiAgICAgIHwgQmluT3Aob3AsIGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBvcGVuIE9wRXhwO1xuICAgICAgICBsZXQgKGdyb3VwLCBjb2xvcmluZ19pZHMpID1cbiAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgfCBJbnQoUGx1cykgPT4gKGludF9wbHVzLCBpbnRfcGx1c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KE1pbnVzKSA9PiAoaW50X21pbnVzLCBpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChUaW1lcykgPT4gKGludF90aW1lcywgaW50X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoUG93ZXIpID0+IChpbnRfcG93ZXIsIGludF9wb3dlcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KERpdmlkZSkgPT4gKGludF9kaXZpZGUsIGludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChMZXNzVGhhbikgPT4gKGludF9sZXNzX3RoYW4sIGludF9sdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KExlc3NUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBpbnRfbGVzc190aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnQoR3JlYXRlclRoYW4pID0+IChpbnRfZ3JlYXRlcl90aGFuLCBpbnRfZ3RfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChHcmVhdGVyVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgaW50X2dyZWF0ZXJfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgaW50X2d0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgSW50KEVxdWFscykgPT4gKGludF9lcXVhbCwgaW50X2VxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTm90RXF1YWxzKSA9PiAoaW50X25vdF9lcXVhbCwgaW50X25lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoUGx1cykgPT4gKGZsb2F0X3BsdXMsIGZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KE1pbnVzKSA9PiAoZmxvYXRfbWludXMsIGZsb2F0X21pbnVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChUaW1lcykgPT4gKGZsb2F0X3RpbWVzLCBmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoUG93ZXIpID0+IChmbG9hdF9wb3dlciwgZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KERpdmlkZSkgPT4gKGZsb2F0X2RpdmlkZSwgZmxvYXRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChMZXNzVGhhbikgPT4gKGZsb2F0X2xlc3NfdGhhbiwgZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KExlc3NUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBmbG9hdF9sZXNzX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoR3JlYXRlclRoYW4pID0+IChcbiAgICAgICAgICAgICAgZmxvYXRfZ3JlYXRlcl90aGFuLFxuICAgICAgICAgICAgICBmbG9hdF9ndF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChFcXVhbHMpID0+IChmbG9hdF9lcXVhbCwgZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KE5vdEVxdWFscykgPT4gKGZsb2F0X25vdF9lcXVhbCwgZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBCb29sKEFuZCkgPT4gKGJvb2xfYW5kLCBib29sX2FuZF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgQm9vbChPcikgPT4gKGJvb2xfb3IsIGJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IFN0cmluZyhFcXVhbHMpID0+IChzdHJpbmdfZXF1YWwsIHN0cl9lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgU3RyaW5nKENvbmNhdCkgPT4gKHN0cmluZ19jb25jYXQsIHN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgbGVmdF9pZCA9IExpc3QubnRoKGxlZnQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHJpZ2h0X2lkID0gTGlzdC5udGgocmlnaHQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofmxlZnRfaWQsIH5yaWdodF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGxlZnRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHJpZ2h0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgKTtcbiAgICAgIHwgTWF0Y2goc2NydXQsIF9ydWxlcykgPT5cbiAgICAgICAgbGV0IHNjcnV0X2lkID0gTGlzdC5udGgoc2NydXQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1DYXNlRXhwLmNhc2VfZXhwX2NvbG9yaW5nX2lkcyh+c2NydXRfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoc2NydXRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIENhc2VFeHAuY2FzZSxcbiAgICAgICAgKTtcbiAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVGVybWluYWxFeHAuY3RyKHYpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIGdldF9tZXNzYWdlX2V4cCh0ZXJtLnRlcm0pO1xuICB8IFNvbWUoSW5mb1BhdCh7dGVybSwgX30pKSA9PlxuICAgIHN3aXRjaCAoYnlwYXNzX3BhcmVuc19wYXQodGVybSkudGVybSkge1xuICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVQYXQuZW1wdHlfaG9sZSlcbiAgICB8IE11bHRpSG9sZShfKSA9PiBnZXRfbWVzc2FnZShIb2xlUGF0Lm11bHRpX2hvbGUpXG4gICAgfCBXaWxkID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsUGF0LndpbGQpXG4gICAgfCBJbnQoaSkgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlaSVpXCIpLCBpLCBpKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5pbnRsaXQoaSksXG4gICAgICApXG4gICAgfCBGbG9hdChmKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVmJWZcIiksIGYsIGYpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmZsb2F0bGl0KGYpLFxuICAgICAgKVxuICAgIHwgQm9vbChiKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiViJWJcIiksIGIsIGIpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmJvb2xsaXQoYiksXG4gICAgICApXG4gICAgfCBTdHJpbmcocykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLCBzLCBzKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5zdHJsaXQocyksXG4gICAgICApXG4gICAgfCBUdXBsZShbXSkgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxQYXQudHJpdilcbiAgICB8IExpc3RMaXQoZWxlbWVudHMpID0+XG4gICAgICBpZiAoTGlzdC5sZW5ndGgoZWxlbWVudHMpID09IDApIHtcbiAgICAgICAgZ2V0X21lc3NhZ2UoTGlzdFBhdC5saXN0bmlsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdFBhdC5saXN0bGl0LFxuICAgICAgICApO1xuICAgICAgfVxuICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICBsZXQgaGRfaWQgPSBMaXN0Lm50aChoZC5pZHMsIDApO1xuICAgICAgbGV0IHRsX2lkID0gTGlzdC5udGgodGwuaWRzLCAwKTtcbiAgICAgIGxldCBiYXNpYyA9IGRvYyA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUxpc3RQYXQuY29uc19iYXNlX3BhdF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhoZF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAodGwudGVybSkge1xuICAgICAgfCBQYXQuQ29ucyhoZDIsIHRsMikgPT5cbiAgICAgICAgaWYgKExpc3RQYXQuY29uczJfcGF0LmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMaXN0UGF0LmNvbnMyKSkge1xuICAgICAgICAgIGxldCBoZDJfaWQgPSBMaXN0Lm50aChoZDIuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgdGwyX2lkID0gTGlzdC5udGgodGwyLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBMaXN0UGF0LmNvbnMyX3BhdF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmZzdF9pZD1oZF9pZCxcbiAgICAgICAgICAgICAgICB+c25kX2lkPWhkMl9pZCxcbiAgICAgICAgICAgICAgICB+dGxfaWQ9dGwyX2lkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bDJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIExpc3RQYXQuY29uczIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhMaXN0UGF0LmNvbnMyKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKExpc3RQYXQuY29ucylcbiAgICAgIH07XG4gICAgfCBWYXIodikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgdiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQudmFyKHYpLFxuICAgICAgKVxuICAgIHwgVHVwbGUoZWxlbWVudHMpID0+XG4gICAgICBsZXQgYmFzaWMgPSBncm91cCA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgIHwgMiA9PlxuICAgICAgICBpZiAoVHVwbGVQYXQudHVwbGVfcGF0X3NpemUyLmlkXG4gICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVQYXQudHVwbGUyKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVQYXQudHVwbGVfcGF0X3NpemUyX2NvbG9yaW5nX2lkcyh+ZWxlbTFfaWQsIH5lbGVtMl9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0xX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0yX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBUdXBsZVBhdC50dXBsZTIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVBhdC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDMgPT5cbiAgICAgICAgaWYgKFR1cGxlUGF0LnR1cGxlX3BhdF9zaXplMy5pZFxuICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlUGF0LnR1cGxlMykpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmVsZW0xX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtMl9pZCxcbiAgICAgICAgICAgICAgICB+ZWxlbTNfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTNfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlMyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlUGF0LnR1cGxlMyk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZVBhdC50dXBsZSlcbiAgICAgIH07XG4gICAgfCBBcChjb24sIGFyZykgPT5cbiAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUFwcFBhdC5hcF9wYXRfY29sb3JpbmdfaWRzKH5jb25faWQsIH5hcmdfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIEFwcFBhdC5hcCxcbiAgICAgICk7XG4gICAgfCBDb25zdHJ1Y3Rvcihjb24pID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIGNvbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuY3RyKGNvbiksXG4gICAgICApXG4gICAgfCBDYXN0KHBhdCwgdHlwLCBfKSA9PlxuICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgbGV0IHR5cF9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9VHlwQW5uUGF0LnR5cGFubl9wYXRfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH50eXBfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0eXBfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIFR5cEFublBhdC50eXBhbm4sXG4gICAgICApO1xuICAgIHwgSW52YWxpZChfKSA9PiBzaW1wbGUoXCJOb3QgYSB2YWxpZCBwYXR0ZXJuXCIpXG4gICAgfCBQYXJlbnMoXykgPT5cbiAgICAgIC8vIFNob3VsZG4ndCBiZSBoaXQ/XG4gICAgICBkZWZhdWx0XG4gICAgfVxuICB8IFNvbWUoSW5mb1R5cCh7dGVybSwgX30gYXMgdHlwX2luZm8pKSA9PlxuICAgIHN3aXRjaCAoYnlwYXNzX3BhcmVuc190eXAodGVybSkudGVybSkge1xuICAgIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgfCBVbmtub3duKEludGVybmFsKVxuICAgIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpID0+IGdldF9tZXNzYWdlKEhvbGVUeXAuZW1wdHlfaG9sZSlcbiAgICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUoXykpKSA9PiBnZXRfbWVzc2FnZShIb2xlVHlwLm11bHRpX2hvbGUpXG4gICAgfCBJbnQgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuaW50KVxuICAgIHwgRmxvYXQgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuZmxvYXQpXG4gICAgfCBCb29sID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsVHlwLmJvb2wpXG4gICAgfCBTdHJpbmcgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuc3RyKVxuICAgIHwgTGlzdChlbGVtKSA9PlxuICAgICAgbGV0IGVsZW1faWQgPSBMaXN0Lm50aChlbGVtLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1MaXN0VHlwLmxpc3RfdHlwX2NvbG9yaW5nX2lkcyh+ZWxlbV9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtX2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBMaXN0VHlwLmxpc3QsXG4gICAgICApO1xuICAgIHwgRm9yYWxsKHRwYXQsIHR5cCkgPT5cbiAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHBhdC5pZHMsIDApO1xuICAgICAgbGV0IHRib2R5X2lkID0gTGlzdC5udGgodHlwLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1Gb3JhbGxUeXAuZm9yYWxsX3R5cF9jb2xvcmluZ19pZHMofnRwYXRfaWQsIH50Ym9keV9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0Ym9keV9pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgRm9yYWxsVHlwLmZvcmFsbCxcbiAgICAgICk7XG4gICAgfCBSZWModHBhdCwgdHlwKSA9PlxuICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0cGF0LmlkcywgMCk7XG4gICAgICBsZXQgdGJvZHlfaWQgPSBMaXN0Lm50aCh0eXAuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPVJlY1R5cC5yZWNfdHlwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfnRib2R5X2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRib2R5X2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBSZWNUeXAucmVjXyxcbiAgICAgICk7XG4gICAgfCBBcnJvdyhhcmcsIHJlc3VsdCkgPT5cbiAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgIGxldCByZXN1bHRfaWQgPSBMaXN0Lm50aChyZXN1bHQuaWRzLCAwKTtcbiAgICAgIGxldCBiYXNpYyA9IGRvYyA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUFycm93VHlwLmFycm93X3R5cF9jb2xvcmluZ19pZHMofmFyZ19pZCwgfnJlc3VsdF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocmVzdWx0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkb2MsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKHJlc3VsdC50ZXJtKSB7XG4gICAgICB8IFR5cC5BcnJvdyhhcmcyLCByZXN1bHQyKSA9PlxuICAgICAgICBpZiAoQXJyb3dUeXAuYXJyb3czX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoQXJyb3dUeXAuYXJyb3czKSkge1xuICAgICAgICAgIGxldCBhcmcyX2lkID0gTGlzdC5udGgoYXJnMi5pZHMsIDApO1xuICAgICAgICAgIGxldCByZXN1bHQyX2lkID0gTGlzdC5udGgocmVzdWx0Mi5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgQXJyb3dUeXAuYXJyb3czX3R5cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmFyZzFfaWQ9YXJnX2lkLFxuICAgICAgICAgICAgICAgIH5hcmcyX2lkLFxuICAgICAgICAgICAgICAgIH5yZXN1bHRfaWQ9cmVzdWx0Ml9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyZXN1bHQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcnJvd1R5cC5hcnJvdzMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhBcnJvd1R5cC5hcnJvdzMpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoQXJyb3dUeXAuYXJyb3cpXG4gICAgICB9O1xuICAgIHwgUHJvZChlbGVtZW50cykgPT5cbiAgICAgIGxldCBiYXNpYyA9IGdyb3VwID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgfCAwID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTBfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTApKSB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVtdLFxuICAgICAgICAgICAgfmZvcm1hdD1Tb21lKG1zZyA9PiBtc2cpLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUwLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUyKTtcbiAgICAgICAgfVxuICAgICAgfCAyID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTJfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTIpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVR1cGxlVHlwLnR1cGxlMl90eXBfY29sb3JpbmdfaWRzKH5lbGVtMV9pZCwgfmVsZW0yX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlVHlwLnR1cGxlMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlVHlwLnR1cGxlMik7XG4gICAgICAgIH1cbiAgICAgIHwgMyA9PlxuICAgICAgICBpZiAoVHVwbGVUeXAudHVwbGUzX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVUeXAudHVwbGUzKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtM19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUzX3R5cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmVsZW0xX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtMl9pZCxcbiAgICAgICAgICAgICAgICB+ZWxlbTNfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTNfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlVHlwLnR1cGxlMyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlVHlwLnR1cGxlMyk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZVR5cC50dXBsZSlcbiAgICAgIH07XG4gICAgfCBWYXIoYykgd2hlbiBJbmZvLnR5cF9pc19jb25zdHJ1Y3Rvcl9leHBlY3RlZCh0eXBfaW5mbykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFN1bVR5cC5zdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmcyhjKSlcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFR5cC52YXIodiksXG4gICAgICApXG4gICAgfCBTdW0oXykgPT4gZ2V0X21lc3NhZ2UoU3VtVHlwLmxhYmVsbGVkX3N1bV90eXBzKVxuICAgIHwgQXAoe3Rlcm06IFZhcihjKSwgX30sIF8pID0+XG4gICAgICBnZXRfbWVzc2FnZShTdW1UeXAuc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzKGMpKVxuICAgIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKSA9PiBzaW1wbGUoXCJOb3QgYSB0eXBlIG9yIHR5cGUgb3BlcmF0b3JcIilcbiAgICB8IEFwKF8pXG4gICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgYmUgaGl0P1xuICAgIH1cbiAgfCBTb21lKEluZm9UUGF0KGluZm8pKSA9PlxuICAgIHN3aXRjaCAoaW5mby50ZXJtLnRlcm0pIHtcbiAgICB8IEludmFsaWQoXykgPT4gc2ltcGxlKFwiVHlwZSBuYW1lcyBtdXN0IGJlZ2luIHdpdGggYSBjYXBpdGFsIGxldHRlclwiKVxuICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVUUGF0LmVtcHR5X2hvbGVfdHBhdHMpXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gZ2V0X21lc3NhZ2UoSG9sZVRQYXQubXVsdGlfaG9sZV90cGF0cylcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBWYXJUUGF0LnZhcl90eXBfcGF0cyh2KSxcbiAgICAgIClcbiAgICB9XG4gIHwgU29tZShTZWNvbmRhcnkocykpID0+XG4gICAgc3dpdGNoIChzLmNscykge1xuICAgIHwgU2Vjb25kYXJ5KFdoaXRlc3BhY2UpID0+IHNpbXBsZShcIkEgc2VtYW50aWMgdm9pZCwgcGVydmFkaW5nIGJ1dCBpbmVydFwiKVxuICAgIHwgU2Vjb25kYXJ5KENvbW1lbnQpID0+XG4gICAgICBzaW1wbGUoXCJDb21tZW50cyBhcmUgaWdub3JlZCBieSBzeXN0ZW1zIGJ1dCB0cmVhc3VyZWQgYnkgcmVhZGVyc1wiKVxuICAgIHwgXyA9PiBmYWlsd2l0aChcIkV4cGxhaW5UaGlzOiBTZWNvbmRhcnkgSW1wb3NzaWJsZVwiKVxuICAgIH1cbiAgfCBOb25lID0+IGRlZmF1bHRcbiAgfTtcbn07XG5cbmxldCBzZWN0aW9uID0gKH5zZWN0aW9uX2Nsc3M6IHN0cmluZywgfnRpdGxlOiBzdHJpbmcsIGNvbnRlbnRzOiBsaXN0KE5vZGUudCkpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInNlY3Rpb25cIiwgc2VjdGlvbl9jbHNzXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInNlY3Rpb24tdGl0bGVcIl0pLCBbdGV4dCh0aXRsZSldKV0gQCBjb250ZW50cyxcbiAgKTtcblxubGV0IGdldF9jb2xvcl9tYXAgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5leHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsIGluZm8pID0+XG4gIHN3aXRjaCAoc2V0dGluZ3MuZXhwbGFpblRoaXMuaGlnaGxpZ2h0KSB7XG4gIHwgQWxsIHdoZW4gc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyA9PlxuICAgIGxldCAoXywgKF8sIChjb2xvcl9tYXAsIF8pKSwgXykgPVxuICAgICAgZ2V0X2RvYyh+ZG9jcz1leHBsYWluVGhpc01vZGVsLCBpbmZvLCBDb2xvcmluZ3MpO1xuICAgIFNvbWUoY29sb3JfbWFwKTtcbiAgfCBPbmUoaWQpIHdoZW4gc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyA9PlxuICAgIGxldCAoXywgKF8sIChjb2xvcl9tYXAsIF8pKSwgXykgPVxuICAgICAgZ2V0X2RvYyh+ZG9jcz1leHBsYWluVGhpc01vZGVsLCBpbmZvLCBDb2xvcmluZ3MpO1xuICAgIFNvbWUoSWQuTWFwLmZpbHRlcigoaWQnLCBfKSA9PiBpZCA9PSBpZCcsIGNvbG9yX21hcCkpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH51aV9zdGF0ZTogTW9kZWwudWlfc3RhdGUsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICB+ZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICAgaW5mbzogb3B0aW9uKEluZm8udCksXG4gICAgKSA9PiB7XG4gIGxldCAoc3luX2Zvcm0sIChleHBsYW5hdGlvbiwgXyksIGV4YW1wbGUpID1cbiAgICBnZXRfZG9jKFxuICAgICAgfmRvY3M9ZXhwbGFpblRoaXNNb2RlbCxcbiAgICAgIGluZm8sXG4gICAgICBNZXNzYWdlQ29udGVudChpbmplY3QsIHVpX3N0YXRlLCBzZXR0aW5ncyksXG4gICAgKTtcbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuaWQoXCJzaWRlLWJhclwiKSxcbiAgICBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiZXhwbGFpbi10aGlzXCJdKSxcbiAgICAgICAgW1xuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPWNsc3MoW1widG9wLWJhclwiXSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFdpZGdldHMudG9nZ2xlKFxuICAgICAgICAgICAgICAgIH50b29sdGlwPVwiVG9nZ2xlIGhpZ2hsaWdodGluZ1wiLFxuICAgICAgICAgICAgICAgIFwi8J+UhlwiLFxuICAgICAgICAgICAgICAgIHNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCA9PSBBbGwsXG4gICAgICAgICAgICAgICAgXyA9PlxuICAgICAgICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KEV4cGxhaW5UaGlzKFNldEhpZ2hsaWdodChUb2dnbGUpKSkpXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgICAgIGNsc3MoW1wiY2xvc2VcIl0pLFxuICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlNldChFeHBsYWluVGhpcyhUb2dnbGVTaG93KSkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBbdGV4dChcInhcIildLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgW1xuICAgICAgICAgIHNlY3Rpb24oXG4gICAgICAgICAgICB+c2VjdGlvbl9jbHNzPVwic3ludGFjdGljLWZvcm1cIixcbiAgICAgICAgICAgIH50aXRsZT1cbiAgICAgICAgICAgICAgc3dpdGNoIChpbmZvKSB7XG4gICAgICAgICAgICAgIHwgTm9uZSA9PiBcIldoaXRlc3BhY2Ugb3IgQ29tbWVudFwiXG4gICAgICAgICAgICAgIHwgU29tZShpbmZvKSA9PiBJbmZvLmNsc19vZihpbmZvKSB8PiBDbHMuc2hvd1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3luX2Zvcm0gQCBleHBsYW5hdGlvbixcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgKFxuICAgICAgICAgIGV4YW1wbGUgPT0gW11cbiAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgIDogW3NlY3Rpb24ofnNlY3Rpb25fY2xzcz1cImV4YW1wbGVzXCIsIH50aXRsZT1cIkV4YW1wbGVzXCIsIGV4YW1wbGUpXVxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IHZpZXcgPSBpZCA9PiBOb2RlLnNwYW4ofmF0dHI9QXR0ci5pZChpZCksIFtOb2RlLnRleHQoXCJYXCIpXSk7XG4iLCJsZXQgaXNfbWFjID0gcmVmKGZhbHNlKTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgZGlyID1cbiAgfCBLZXlVcFxuICB8IEtleURvd247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUga2V5ID1cbiAgfCBEKHN0cmluZylcbiAgfCBVKHN0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgc3lzID1cbiAgfCBNYWNcbiAgfCBQQztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBoZWxkID1cbiAgfCBEb3duXG4gIHwgVXA7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAga2V5LFxuICBzeXMsXG4gIHNoaWZ0OiBoZWxkLFxuICBtZXRhOiBoZWxkLFxuICBjdHJsOiBoZWxkLFxuICBhbHQ6IGhlbGQsXG59O1xuXG5sZXQga2V5X29mID0gKGRpcjogZGlyLCBldnQpOiBrZXkgPT4ge1xuICBsZXQga2V5ID0gSnNVdGlsLmdldF9rZXkoZXZ0KTtcbiAgc3dpdGNoIChkaXIpIHtcbiAgfCBLZXlVcCA9PiBVKGtleSlcbiAgfCBLZXlEb3duID0+IEQoa2V5KVxuICB9O1xufTtcblxubGV0IHRvX2hlbGQ6IGJvb2wgPT4gaGVsZCA9IGIgPT4gYiA/IERvd24gOiBVcDtcblxubGV0IG1rID0gKGRpciwgZXZ0KTogdCA9PiB7XG4gIGtleToga2V5X29mKGRpciwgZXZ0KSxcbiAgc3lzOiBPcy5pc19tYWNeID8gTWFjIDogUEMsXG4gIHNoaWZ0OiB0b19oZWxkKEpzVXRpbC5zaGlmdF9oZWxkKGV2dCkpLFxuICBtZXRhOiB0b19oZWxkKEpzVXRpbC5tZXRhX2hlbGQoZXZ0KSksXG4gIGN0cmw6IHRvX2hlbGQoSnNVdGlsLmN0cmxfaGVsZChldnQpKSxcbiAgYWx0OiB0b19oZWxkKEpzVXRpbC5hbHRfaGVsZChldnQpKSxcbn07XG5cbmxldCBtb2RpZmllcl9zdHJpbmcgPSAoaDogaGVsZCwgbSk6IHN0cmluZyA9PiBoID09IERvd24gPyBcIiArIFwiICsrIG0gOiBcIlwiO1xuXG5sZXQgbW9kaWZpZXJzX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgbW9kaWZpZXJfc3RyaW5nKGtleS5zaGlmdCwgXCJTSElGVFwiKVxuICArKyBtb2RpZmllcl9zdHJpbmcoa2V5Lm1ldGEsIFwiTUVUQVwiKVxuICArKyBtb2RpZmllcl9zdHJpbmcoa2V5LmN0cmwsIFwiQ1RSTFwiKVxuICArKyBtb2RpZmllcl9zdHJpbmcoa2V5LmFsdCwgXCJBTFRcIik7XG5cbmxldCBrZXlfZGlyX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoIChrZXkua2V5KSB7XG4gIHwgVShrZXkpID0+IFwiKFVQKTogXCIgKysga2V5XG4gIHwgRChrZXkpID0+IFwiKEROKTogXCIgKysga2V5XG4gIH07XG5cbmxldCB0b19zdHJpbmcgPSAoa2V5OiB0KTogc3RyaW5nID0+XG4gIFwiS0VZXCIgKysga2V5X2Rpcl9zdHJpbmcoa2V5KSArKyBtb2RpZmllcnNfc3RyaW5nKGtleSk7XG4iLCJvcGVuIEhhejNsY29yZTtcblxubGV0IGlzX2RpZ2l0ID0gcyA9PiBSZS5TdHIuKHN0cmluZ19tYXRjaChyZWdleHAoXCJeWzAtOV0kXCIpLCBzLCAwKSk7XG5sZXQgaXNfZl9rZXkgPSBzID0+IFJlLlN0ci4oc3RyaW5nX21hdGNoKHJlZ2V4cChcIl5GWzAtOV1bMC05XSokXCIpLCBzLCAwKSk7XG5cbmxldCBoYW5kbGVfa2V5X2V2ZW50ID0gKGs6IEtleS50KTogb3B0aW9uKFVwZGF0ZS50KSA9PiB7XG4gIGxldCBub3cgPSAoYTogQWN0aW9uLnQpOiBvcHRpb24oVXBkYXRlQWN0aW9uLnQpID0+XG4gICAgU29tZShQZXJmb3JtQWN0aW9uKGEpKTtcbiAgc3dpdGNoIChrKSB7XG4gIHwge2tleTogVShrZXkpLCBffSA9PlxuICAgIC8qIEtldS1VUHBFdmVudHM6XG4gICAgICAgTk9URTogUmVtZW1iZXIgdGhhdCBzaW5jZSB0aGVyZSBpcyBhIGtleXVwIGZvciBldmVyeVxuICAgICAgIGtleWRvd24sIG1ha2luZyBhbiB1cGRhdGUgaGVyZSBtYXkgdHJpZ2dlciBhbiBlbnRpcmVcbiAgICAgICBleHRyYSByZWRyYXcsIGNvbnRpbmdlbnQgb24gbW9kZWwuY3V0b2ZmICovXG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiQWx0XCIgPT4gU29tZShTZXRNZXRhKFNob3dCYWNrcGFja1RhcmdldHMoZmFsc2UpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogXywgc2hpZnQ6IERvd24sIG1ldGE6IFVwLCBjdHJsOiBVcCwgYWx0OiBVcH1cbiAgICAgIHdoZW4gaXNfZl9rZXkoa2V5KSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIkY3XCIgPT4gU29tZShCZW5jaG1hcmsoU3RhcnQpKVxuICAgIHwgXyA9PiBTb21lKERlYnVnQ29uc29sZShrZXkpKVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogXywgc2hpZnQsIG1ldGE6IFVwLCBjdHJsOiBVcCwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKHNoaWZ0LCBrZXkpIHtcbiAgICB8IChVcCwgXCJBcnJvd0xlZnRcIikgPT4gbm93KE1vdmUoTG9jYWwoTGVmdChCeUNoYXIpKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dSaWdodFwiKSA9PiBub3coTW92ZShMb2NhbChSaWdodChCeUNoYXIpKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dVcFwiKSA9PiBub3coTW92ZShMb2NhbChVcCkpKVxuICAgIHwgKFVwLCBcIkFycm93RG93blwiKSA9PiBub3coTW92ZShMb2NhbChEb3duKSkpXG4gICAgfCAoVXAsIFwiSG9tZVwiKSA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IChVcCwgXCJFbmRcIikgPT4gbm93KE1vdmUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKVxuICAgIHwgKFVwLCBcIkJhY2tzcGFjZVwiKSA9PiBub3coRGVzdHJ1Y3QoTGVmdCkpXG4gICAgfCAoVXAsIFwiRGVsZXRlXCIpID0+IG5vdyhEZXN0cnVjdChSaWdodCkpXG4gICAgfCAoVXAsIFwiRXNjYXBlXCIpID0+IG5vdyhVbnNlbGVjdChOb25lKSlcbiAgICB8IChVcCwgXCJUYWJcIikgPT4gU29tZShUQUIpXG4gICAgfCAoVXAsIFwiRjEyXCIpID0+IG5vdyhKdW1wKEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXIpKVxuICAgIHwgKERvd24sIFwiVGFiXCIpID0+IFNvbWUoTW92ZVRvTmV4dEhvbGUoTGVmdCkpXG4gICAgfCAoRG93biwgXCJBcnJvd0xlZnRcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkFycm93UmlnaHRcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCAoRG93biwgXCJBcnJvd1VwXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKFVwKSkpKVxuICAgIHwgKERvd24sIFwiQXJyb3dEb3duXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKERvd24pKSkpXG4gICAgfCAoRG93biwgXCJIb21lXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkVuZFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKF8sIFwiRW50ZXJcIikgPT4gbm93KEluc2VydChGb3JtLmxpbmVicmVhaykpXG4gICAgfCBfIHdoZW4gU3RyaW5nLmxlbmd0aChrZXkpID09IDEgPT5cbiAgICAgIC8qIE5vdGU6IGxlbmd0aD09MSBwcmV2ZW50IHNwZWNpYWxzIGxpa2VcbiAgICAgICAqIFNISUZUIGZyb20gYmVpbmcgY2FwdHVyZWQgaGVyZSAqL1xuICAgICAgbm93KEluc2VydChrZXkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBNYWMsIHNoaWZ0OiBEb3duLCBtZXRhOiBEb3duLCBjdHJsOiBVcCwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJaXCJcbiAgICB8IFwielwiID0+IFNvbWUoUmVkbylcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IFwiQXJyb3dVcFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoVXApKSkpXG4gICAgfCBcIkFycm93RG93blwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoRG93bikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogUEMsIHNoaWZ0OiBEb3duLCBtZXRhOiBVcCwgY3RybDogRG93biwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJaXCJcbiAgICB8IFwielwiID0+IFNvbWUoUmVkbylcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1VwXCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoVXApKSkpXG4gICAgfCBcIkFycm93RG93blwiID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKERvd24pKSkpXG4gICAgfCBcIkhvbWVcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFVwKSkpKVxuICAgIHwgXCJFbmRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKERvd24pKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IFVwLCBtZXRhOiBEb3duLCBjdHJsOiBVcCwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJ6XCIgPT4gU29tZShVbmRvKVxuICAgIHwgXCJkXCIgPT4gbm93KFNlbGVjdChUZXJtKEN1cnJlbnQpKSlcbiAgICB8IFwicFwiID0+IFNvbWUoUGVyZm9ybUFjdGlvbihQaWNrX3VwKSlcbiAgICB8IFwiYVwiID0+IG5vdyhTZWxlY3QoQWxsKSlcbiAgICB8IFwia1wiID0+IFNvbWUoUmVwYXJzZUN1cnJlbnRFZGl0b3IpXG4gICAgfCBcIi9cIiA9PiBTb21lKEFzc2lzdGFudChQcm9tcHQoVHlEaSkpKVxuICAgIHwgXyB3aGVuIGlzX2RpZ2l0KGtleSkgPT4gU29tZShTd2l0Y2hTY3JhdGNoU2xpZGUoaW50X29mX3N0cmluZyhrZXkpKSlcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KE1vdmUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93VXBcIiA9PiBub3coTW92ZShFeHRyZW1lKFVwKSkpXG4gICAgfCBcIkFycm93RG93blwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoRG93bikpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBQQywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogRG93biwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJ6XCIgPT4gU29tZShVbmRvKVxuICAgIHwgXCJkXCIgPT4gbm93KFNlbGVjdChUZXJtKEN1cnJlbnQpKSlcbiAgICB8IFwicFwiID0+IFNvbWUoUGVyZm9ybUFjdGlvbihQaWNrX3VwKSlcbiAgICB8IFwiYVwiID0+IG5vdyhTZWxlY3QoQWxsKSlcbiAgICB8IFwia1wiID0+IFNvbWUoUmVwYXJzZUN1cnJlbnRFZGl0b3IpXG4gICAgfCBcIi9cIiA9PiBTb21lKEFzc2lzdGFudChQcm9tcHQoVHlEaSkpKVxuICAgIHwgXyB3aGVuIGlzX2RpZ2l0KGtleSkgPT4gU29tZShTd2l0Y2hTY3JhdGNoU2xpZGUoaW50X29mX3N0cmluZyhrZXkpKSlcbiAgICB8IFwiQXJyb3dMZWZ0XCIgPT4gbm93KE1vdmUoTG9jYWwoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KE1vdmUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IFwiSG9tZVwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoVXApKSlcbiAgICB8IFwiRW5kXCIgPT4gbm93KE1vdmUoRXh0cmVtZShEb3duKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogRG93biwgYWx0OiBVcH0gPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJhXCIgPT4gbm93KE1vdmUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcImVcIiA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXMsIHNoaWZ0OiBVcCwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IERvd259ID0+XG4gICAgc3dpdGNoIChzeXMsIGtleSkge1xuICAgIHwgKF8sIFwiQXJyb3dMZWZ0XCIpID0+IG5vdyhNb3ZlVG9CYWNrcGFja1RhcmdldChMZWZ0KEJ5VG9rZW4pKSlcbiAgICB8IChfLCBcIkFycm93UmlnaHRcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KFJpZ2h0KEJ5VG9rZW4pKSlcbiAgICB8IChfLCBcIkFsdFwiKSA9PiBTb21lKFNldE1ldGEoU2hvd0JhY2twYWNrVGFyZ2V0cyh0cnVlKSkpXG4gICAgfCAoXywgXCJBcnJvd1VwXCIpID0+IG5vdyhNb3ZlVG9CYWNrcGFja1RhcmdldChVcCkpXG4gICAgfCAoXywgXCJBcnJvd0Rvd25cIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KERvd24pKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBXaWRnZXRzO1xuXG5sZXQgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSA9ICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSkgPT5cbiAgYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnNwcm91dCxcbiAgICBfID0+IGluamVjdChFeHBvcnRQZXJzaXN0ZW50RGF0YSksXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgQWxsIFBlcnNpc3RlbnQgRGF0YVwiLFxuICApO1xuXG5sZXQgcmVzZXRfaGF6ZWwgPVxuICBidXR0b24oXG4gICAgSWNvbnMuYm9tYixcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCBIYXplbCB0byBpdHMgaW5pdGlhbCBzdGF0ZT8gWW91IHdpbGwgbG9zZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IHlvdSBoYXZlIHdyaXR0ZW4sIGFuZCBjb3Vyc2Ugc3RhZmYgaGF2ZSBubyB3YXkgdG8gcmVzdG9yZSBpdCFcIixcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgSnNVdGlsLmNsZWFyX2xvY2Fsc3RvcmUoKTtcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlbG9hZDtcbiAgICAgIH07XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkNsZWFyIExvY2FsIFN0b3JhZ2UgYW5kIFJlbG9hZCAoTE9TRSBBTEwgREFUQSlcIixcbiAgKTtcblxubGV0IHJlcGFyc2UgPSAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EpID0+XG4gIGJ1dHRvbihcbiAgICBJY29ucy5iYWNrcGFjayxcbiAgICBfID0+IGluamVjdChSZXBhcnNlQ3VycmVudEVkaXRvciksXG4gICAgfnRvb2x0aXA9XCJSZXBhcnNlIEN1cnJlbnQgRWRpdG9yXCIsXG4gICk7XG5cbmxldCBzZXR0aW5nc19tZW51ID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNldHRpbmdzIGFzXG4gICAgICAgIHtcbiAgICAgICAgICBjb3JlOiB7ZXZhbHVhdGlvbiwgX30gYXMgY29yZSxcbiAgICAgICAgICBiZW5jaG1hcmssXG4gICAgICAgICAgc2Vjb25kYXJ5X2ljb25zLFxuICAgICAgICAgIGV4cGxhaW5UaGlzLFxuICAgICAgICAgIF8sXG4gICAgICAgIH06IFNldHRpbmdzLnQsXG4gICAgKSA9PiB7XG4gIGxldCB0b2dnbGUgPSAoaWNvbiwgdG9vbHRpcCwgYm9vbCwgc2V0dGluZykgPT5cbiAgICB0b2dnbGVfbmFtZWQoaWNvbiwgfnRvb2x0aXAsIGJvb2wsIF8gPT5cbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uU2V0KHNldHRpbmcpKVxuICAgICk7XG4gIFtcbiAgICB0b2dnbGUoXCLPhFwiLCBcIlRvZ2dsZSBTdGF0aWNzXCIsIGNvcmUuc3RhdGljcywgU3RhdGljcyksXG4gICAgdG9nZ2xlKFwi4oeyXCIsIFwiVG9nZ2xlIENvbXBsZXRpb25cIiwgY29yZS5hc3Npc3QsIEFzc2lzdCksXG4gICAgdG9nZ2xlKFwi4oa1XCIsIFwiU2hvdyBXaGl0ZXNwYWNlXCIsIHNlY29uZGFyeV9pY29ucywgU2Vjb25kYXJ5SWNvbnMpLFxuICAgIHRvZ2dsZShcIuKck1wiLCBcIlByaW50IEJlbmNobWFya3NcIiwgYmVuY2htYXJrLCBCZW5jaG1hcmspLFxuICAgIHRvZ2dsZShcIvCdm79cIiwgXCJUb2dnbGUgRHluYW1pY3NcIiwgY29yZS5keW5hbWljcywgRHluYW1pY3MpLFxuICAgIHRvZ2dsZShcIvCdkZJcIiwgXCJTaG93IEVsYWJvcmF0aW9uXCIsIGNvcmUuZWxhYm9yYXRlLCBFbGFib3JhdGUpLFxuICAgIHRvZ2dsZShcbiAgICAgIFwizrtcIixcbiAgICAgIFwiU2hvdyBGdW5jdGlvbiBCb2RpZXNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19mbl9ib2RpZXMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dGbkJvZGllcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcInxcIixcbiAgICAgIFwiU2hvdyBDYXNlIENsYXVzZXNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dDYXNlQ2xhdXNlcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcImZcIixcbiAgICAgIFwiU2hvdyBmaXhwb2ludHNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19maXhwb2ludHMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dGaXhwb2ludHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgVW5pY29kZS5jYXN0QXJyb3dTeW0sXG4gICAgICBcIlNob3cgY2FzdHNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19jYXN0cyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc3RzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwi8J+UjVwiLFxuICAgICAgXCJTaG93IExvb2t1cCBTdGVwc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0xvb2t1cHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLij6/vuI9cIixcbiAgICAgIFwiU2hvdyBTdGVwcGVyIEZpbHRlcnNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19zdGVwcGVyX2ZpbHRlcnMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dGaWx0ZXJzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwi8J+kq1wiLFxuICAgICAgXCJTaG93IEhpZGRlbiBTdGVwc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2hpZGRlbl9zdGVwcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0hpZGRlblN0ZXBzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwiP1wiLFxuICAgICAgXCJTaG93IERvY3MgU2lkZWJhclwiLFxuICAgICAgZXhwbGFpblRoaXMuc2hvdyxcbiAgICAgIEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn5GNXCIsXG4gICAgICBcIlNob3cgRG9jcyBGZWVkYmFja1wiLFxuICAgICAgZXhwbGFpblRoaXMuc2hvd19mZWVkYmFjayxcbiAgICAgIEV4cGxhaW5UaGlzKFRvZ2dsZVNob3dGZWVkYmFjayksXG4gICAgKSxcbiAgXTtcbn07XG5cbmxldCBleHBvcnRfbWVudSA9ICh+aW5qZWN0LCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIGVkaXRvcnM6IEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChzbGlkZV9pZHgsIHNsaWRlcykgPT5cbiAgICBsZXQgc3RhdGUgPSBMaXN0Lm50aChzbGlkZXMsIHNsaWRlX2lkeCk7XG4gICAgW1NjcmF0Y2hNb2RlLmV4cG9ydF9idXR0b24oc3RhdGUpXTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykgPT5cbiAgICBsZXQgc3RhdGUgPSBMaXN0LmFzc29jKG5hbWUsIHNsaWRlcyk7XG4gICAgW1NjcmF0Y2hNb2RlLmV4cG9ydF9idXR0b24oc3RhdGUpXTtcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpIHdoZW4gc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID0+IFtcbiAgICAgIGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEofmluamVjdCksXG4gICAgICBFeGVyY2lzZU1vZGUuZXhwb3J0X3N1Ym1pc3Npb24ofnNldHRpbmdzKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX2V4cG9ydChleGVyY2lzZSksXG4gICAgICBFeGVyY2lzZU1vZGUuaW5zdHJ1Y3Rvcl90cmFuc2l0aW9uYXJ5X2V4cG9ydChleGVyY2lzZSksXG4gICAgICBFeGVyY2lzZU1vZGUuaW5zdHJ1Y3Rvcl9ncmFkaW5nX2V4cG9ydChleGVyY2lzZSksXG4gICAgXVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBbRXhlcmNpc2VNb2RlLmV4cG9ydF9zdWJtaXNzaW9uKH5zZXR0aW5ncyldXG4gIH07XG5cbmxldCBpbXBvcnRfbWVudSA9ICh+aW5qZWN0LCBlZGl0b3JzOiBFZGl0b3JzLnQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IFtcbiAgICAgIFNjcmF0Y2hNb2RlLmltcG9ydF9idXR0b24oaW5qZWN0KSxcbiAgICAgIFNjcmF0Y2hNb2RlLnJlc2V0X2J1dHRvbihpbmplY3QpLFxuICAgIF1cbiAgfCBFeGVyY2lzZXMoXykgPT4gW1xuICAgICAgRXhlcmNpc2VNb2RlLmltcG9ydF9zdWJtaXNzaW9uKH5pbmplY3QpLFxuICAgICAgRXhlcmNpc2VNb2RlLnJlc2V0X2J1dHRvbihpbmplY3QpLFxuICAgIF1cbiAgfTtcblxubGV0IHN1Ym1lbnUgPSAofnRvb2x0aXAsIH5pY29uLCBtZW51KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJ0b3AtbWVudS1pdGVtXCJdKSxcbiAgICBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJzdWJtZW51LWljb25cIl0pLCBBdHRyLnRpdGxlKHRvb2x0aXApXSksXG4gICAgICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJpY29uXCJdKSwgW2ljb25dKV0sXG4gICAgICApLFxuICAgICAgZGl2KH5hdHRyPWNsc3MoW1wic3VibWVudVwiXSksIG1lbnUpLFxuICAgIF0sXG4gICk7XG5cbmxldCB2aWV3ID1cbiAgICAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgfmVkaXRvcnM6IEVkaXRvcnMudCkgPT4gW1xuICBhKH5hdHRyPWNsc3MoW1wibnV0LWljb25cIl0pLCBbSWNvbnMuaGF6ZWxudXRdKSxcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wibnV0LW1lbnVcIl0pLFxuICAgIFtcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiU2V0dGluZ3NcIixcbiAgICAgICAgfmljb249SWNvbnMuZ2VhcixcbiAgICAgICAgc2V0dGluZ3NfbWVudSh+aW5qZWN0LCB+c2V0dGluZ3MpLFxuICAgICAgKSxcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiRXhwb3J0XCIsXG4gICAgICAgIH5pY29uPUljb25zLmV4cG9ydCxcbiAgICAgICAgZXhwb3J0X21lbnUofmluamVjdCwgfnNldHRpbmdzLCBlZGl0b3JzKSxcbiAgICAgICksXG4gICAgICBzdWJtZW51KFxuICAgICAgICB+dG9vbHRpcD1cIkltcG9ydFwiLFxuICAgICAgICB+aWNvbj1JY29ucy5pbXBvcnQsXG4gICAgICAgIGltcG9ydF9tZW51KH5pbmplY3QsIGVkaXRvcnMpLFxuICAgICAgKSxcbiAgICAgIHJlcGFyc2UofmluamVjdCksXG4gICAgICByZXNldF9oYXplbCxcbiAgICAgIGxpbmsoXG4gICAgICAgIEljb25zLmdpdGh1YixcbiAgICAgICAgXCJodHRwczovL2dpdGh1Yi5jb20vaGF6ZWxncm92ZS9oYXplbFwiLFxuICAgICAgICB+dG9vbHRpcD1cIkhhemVsIG9uIEdpdEh1YlwiLFxuICAgICAgKSxcbiAgICAgIGxpbmsoSWNvbnMuaW5mbywgXCJodHRwczovL2hhemVsLm9yZ1wiLCB+dG9vbHRpcD1cIkhhemVsIEhvbWVwYWdlXCIpLFxuICAgIF0sXG4gICksXG5dO1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcbm9wZW4gTm9kZTtcblxubGV0IGhhbmRsZXJzID0gKH5pbmplY3Q6IFVwZGF0ZUFjdGlvbi50ID0+IFVpX2VmZmVjdC50KHVuaXQpLCBtb2RlbCkgPT4ge1xuICBsZXQgZ2V0X3NlbGVjdGlvbiA9IChtb2RlbDogTW9kZWwudCk6IG9wdGlvbihzdHJpbmcpID0+IHtcbiAgICBsZXQqIHNlbGVjdGlvbiA9IG1vZGVsLnVpX3N0YXRlLmFjdGl2ZV9lZGl0b3I7XG4gICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIG1vZGVsLmVkaXRvcnMsIG1vZGVsLnJlc3VsdHMpXG4gICAgfD4gT3B0aW9uLm1hcChQcmludGVyLnRvX3N0cmluZ19zZWxlY3Rpb24pO1xuICB9O1xuICBsZXQga2V5X2hhbmRsZXIgPVxuICAgICAgKH5pbmplY3QsIH5kaXI6IEtleS5kaXIsIGV2dDogSnMudChEb21faHRtbC5rZXlib2FyZEV2ZW50KSlcbiAgICAgIDogRWZmZWN0LnQodW5pdCkgPT5cbiAgICBFZmZlY3QuKFxuICAgICAgc3dpdGNoIChLZXlib2FyZC5oYW5kbGVfa2V5X2V2ZW50KEtleS5tayhkaXIsIGV2dCkpKSB7XG4gICAgICB8IE5vbmUgPT4gSWdub3JlXG4gICAgICB8IFNvbWUoYWN0aW9uKSA9PlxuICAgICAgICBNYW55KFtQcmV2ZW50X2RlZmF1bHQsIFN0b3BfcHJvcGFnYXRpb24sIGluamVjdChhY3Rpb24pXSlcbiAgICAgIH1cbiAgICApO1xuICBbXG4gICAgQXR0ci5vbl9rZXlwcmVzcyhfID0+IEVmZmVjdC5QcmV2ZW50X2RlZmF1bHQpLFxuICAgIEF0dHIub25fa2V5dXAoa2V5X2hhbmRsZXIofmluamVjdCwgfmRpcj1LZXlVcCkpLFxuICAgIEF0dHIub25fa2V5ZG93bihrZXlfaGFuZGxlcih+aW5qZWN0LCB+ZGlyPUtleURvd24pKSxcbiAgICAvKiBzYWZldHkgaGFuZGxlciBpbiBjYXNlIG1vdXNlZG93biBvdmVybGF5IGRvZXNuJ3QgY2F0Y2ggaXQgKi9cbiAgICBBdHRyLm9uX21vdXNldXAoXyA9PiBpbmplY3QoU2V0TWV0YShNb3VzZXVwKSkpLFxuICAgIEF0dHIub25fYmx1cihfID0+IHtcbiAgICAgIEpzVXRpbC5mb2N1c19jbGlwYm9hcmRfc2hpbSgpO1xuICAgICAgRWZmZWN0Lklnbm9yZTtcbiAgICB9KSxcbiAgICBBdHRyLm9uX2ZvY3VzKF8gPT4ge1xuICAgICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gICAgICBFZmZlY3QuSWdub3JlO1xuICAgIH0pLFxuICAgIEF0dHIub25fcGFzdGUoZXZ0ID0+IHtcbiAgICAgIGxldCBwYXN0ZWRfdGV4dCA9XG4gICAgICAgIEpzLnRvX3N0cmluZyhldnQjIy5jbGlwYm9hcmREYXRhIyNnZXREYXRhKEpzLnN0cmluZyhcInRleHRcIikpKVxuICAgICAgICB8PiBTdHIuZ2xvYmFsX3JlcGxhY2UoU3RyLnJlZ2V4cChcIlxcblsgXSpcIiksIFwiXFxuXCIpO1xuICAgICAgRG9tLnByZXZlbnREZWZhdWx0KGV2dCk7XG4gICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oUGFzdGUocGFzdGVkX3RleHQpKSk7XG4gICAgfSksXG4gIF1cbiAgQCAoXG4gICAgc3dpdGNoIChnZXRfc2VsZWN0aW9uKG1vZGVsKSkge1xuICAgIHwgTm9uZSA9PiBbXVxuICAgIHwgU29tZShzZWxlY3Rpb24pID0+IFtcbiAgICAgICAgQXR0ci5vbl9jb3B5KF8gPT4ge1xuICAgICAgICAgIEpzVXRpbC5jb3B5KHNlbGVjdGlvbik7XG4gICAgICAgICAgRWZmZWN0Lklnbm9yZTtcbiAgICAgICAgfSksXG4gICAgICAgIEF0dHIub25fY3V0KF8gPT4ge1xuICAgICAgICAgIEpzVXRpbC5jb3B5KHNlbGVjdGlvbik7XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKERlc3RydWN0KExlZnQpKSk7XG4gICAgICAgIH0pLFxuICAgICAgXVxuICAgIH1cbiAgKTtcbn07XG5cbmxldCBtYWluX3ZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3Q6IFVwZGF0ZUFjdGlvbi50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAge3NldHRpbmdzLCBlZGl0b3JzLCBleHBsYWluVGhpc01vZGVsLCByZXN1bHRzLCBzdGF0aWNzLCB1aV9zdGF0ZSwgX306IE1vZGVsLnQsXG4gICAgKSA9PiB7XG4gIGxldCBfID1cbiAgICBzd2l0Y2ggKHVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IpIHtcbiAgICB8IFNvbWUoYWUpID0+IHByaW50X2VuZGxpbmUoXCJTRUxFQ1RFRDogXCIgKysgRWRpdG9ycy5TZWxlY3Rpb24uc2hvdyhhZSkpXG4gICAgfCBOb25lID0+IHByaW50X2VuZGxpbmUoXCJOTyBBQ1RJVkUgRURJVE9SXCIpXG4gICAgfTtcbiAgbGV0IGN1cnNvcl9pbmZvID1cbiAgICBFZGl0b3JzLmdldF9jdXJzb3JfaW5mbyhcbiAgICAgIH5zZWxlY3Rpb249dWlfc3RhdGUuYWN0aXZlX2VkaXRvcixcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIGVkaXRvcnMsXG4gICAgICByZXN1bHRzLFxuICAgICAgc3RhdGljcyxcbiAgICApO1xuICBsZXQgdG9wX2JhciA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5pZChcInRvcC1iYXJcIiksXG4gICAgICBOdXRNZW51LnZpZXcofmluamVjdCwgfnNldHRpbmdzLCB+ZWRpdG9ycylcbiAgICAgIEAgW2Rpdih+YXR0cj1BdHRyLmlkKFwidGl0bGVcIiksIFt0ZXh0KFwiaGF6ZWxcIildKV1cbiAgICAgIEAgW0VkaXRvck1vZGVWaWV3LnZpZXcofmluamVjdCwgfnNldHRpbmdzLCB+ZWRpdG9ycyldLFxuICAgICk7XG4gIGxldCBib3R0b21fYmFyID0gQ3Vyc29ySW5zcGVjdG9yLnZpZXcofmluamVjdCwgfnNldHRpbmdzLCBjdXJzb3JfaW5mbyk7XG4gIGxldCBzaWRlYmFyID1cbiAgICBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93ICYmIHNldHRpbmdzLmNvcmUuc3RhdGljc1xuICAgICAgPyBFeHBsYWluVGhpcy52aWV3KFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+ZXhwbGFpblRoaXNNb2RlbCxcbiAgICAgICAgICBjdXJzb3JfaW5mbyxcbiAgICAgICAgKVxuICAgICAgOiBkaXYoW10pO1xuICBsZXQgaGlnaGxpZ2h0cyA9XG4gICAgRXhwbGFpblRoaXMuZ2V0X2NvbG9yX21hcCh+c2V0dGluZ3MsIH5leHBsYWluVGhpc01vZGVsLCBjdXJzb3JfaW5mbyk7XG4gIGxldCBlZGl0b3JzX3ZpZXcgPVxuICAgIHN3aXRjaCAoZWRpdG9ycykge1xuICAgIHwgU2NyYXRjaChpZHgsIHNzKSA9PlxuICAgICAgbGV0IGVkaXRvciA9IExpc3QubnRoKHNzLCBpZHgpO1xuICAgICAgbGV0IHJlc3VsdF9rZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywgcmVzdWx0X2tleSk7XG4gICAgICBsZXQgc2VsZWN0ZWQgPVxuICAgICAgICBzd2l0Y2ggKHVpX3N0YXRlLmFjdGl2ZV9lZGl0b3IpIHtcbiAgICAgICAgfCBTb21lKEVkaXRvcnMuU2VsZWN0aW9uLlNjcmF0Y2goaSkpID0+IFNvbWUoaSlcbiAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIFNjcmF0Y2hNb2RlLnZpZXcoXG4gICAgICAgIH5zZWxlY3Q9XG4gICAgICAgICAgcyA9PlxuICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5NYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLlNjcmF0Y2gocykpKSxcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgICB+cmVzdWx0cyxcbiAgICAgICAgfnJlc3VsdF9rZXksXG4gICAgICAgIH5zdGF0aWNzLFxuICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgIGVkaXRvcixcbiAgICAgICk7XG4gICAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNzKSA9PlxuICAgICAgbGV0IGVkaXRvciA9IExpc3QuYXNzb2MobmFtZSwgc3MpO1xuICAgICAgbGV0IHJlc3VsdF9rZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobmFtZSk7XG4gICAgICBsZXQgaW5mbyA9XG4gICAgICAgIFNsaWRlQ29udGVudC5nZXRfY29udGVudChlZGl0b3JzKVxuICAgICAgICB8PiBPcHRpb24ubWFwKGkgPT4gZGl2KH5hdHRyPUF0dHIuaWQoXCJzbGlkZVwiKSwgW2ldKSlcbiAgICAgICAgfD4gT3B0aW9uLnRvX2xpc3Q7XG4gICAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIHJlc3VsdF9rZXkpO1xuICAgICAgbGV0IHNlbGVjdGVkID1cbiAgICAgICAgc3dpdGNoICh1aV9zdGF0ZS5hY3RpdmVfZWRpdG9yKSB7XG4gICAgICAgIHwgU29tZShFZGl0b3JzLlNlbGVjdGlvbi5Eb2N1bWVudGF0aW9uKGkpKSA9PiBTb21lKGkpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG4gICAgICBpbmZvXG4gICAgICBAIFNjcmF0Y2hNb2RlLnZpZXcoXG4gICAgICAgICAgfnNlbGVjdD1cbiAgICAgICAgICAgIHMgPT5cbiAgICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5NYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLkRvY3VtZW50YXRpb24ocykpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnVpX3N0YXRlLFxuICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgICB+cmVzdWx0cyxcbiAgICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgICB+c3RhdGljcyxcbiAgICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICApO1xuICAgIHwgRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSA9PlxuICAgICAgbGV0IHNlbGVjdGlvbiA9XG4gICAgICAgIHN3aXRjaCAodWlfc3RhdGUuYWN0aXZlX2VkaXRvcikge1xuICAgICAgICB8IFNvbWUoRWRpdG9ycy5TZWxlY3Rpb24uRXhlcmNpc2VzKHBvcywgc2VsKSkgPT4gU29tZSgocG9zLCBzZWwpKVxuICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICB9O1xuICAgICAgRXhlcmNpc2VNb2RlLnZpZXcoXG4gICAgICAgIH5zZWxlY3Q9XG4gICAgICAgICAgKChwb3MsIHNlbCkpID0+XG4gICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5NYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLkV4ZXJjaXNlcyhwb3MsIHNlbCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfmluamVjdF9nbG9iYWw9aW5qZWN0LFxuICAgICAgICB+dWlfc3RhdGUsXG4gICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgfnNlbGVjdGlvbixcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5yZXN1bHRzLFxuICAgICAgICB+ZXhlcmNpc2UsXG4gICAgICApO1xuICAgIH07XG4gIFtcbiAgICB0b3BfYmFyLFxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuaWQoXCJtYWluXCIpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbU2V0dGluZ3Muc2hvd19tb2RlKHNldHRpbmdzLm1vZGUpXSksXG4gICAgICAgIF0pLFxuICAgICAgZWRpdG9yc192aWV3LFxuICAgICksXG4gICAgc2lkZWJhcixcbiAgICBib3R0b21fYmFyLFxuICBdO1xufTtcblxubGV0IHZpZXcgPSAofmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksIG1vZGVsOiBNb2RlbC50KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KEF0dHIuW2lkKFwicGFnZVwiKSwgLi4uaGFuZGxlcnMofmluamVjdCwgbW9kZWwpXSksXG4gICAgW1xuICAgICAgRm9udFNwZWNpbWVuLnZpZXcoXCJmb250LXNwZWNpbWVuXCIpLFxuICAgICAgRGVjVXRpbC5maWx0ZXJzLFxuICAgICAgSnNVdGlsLmNsaXBib2FyZF9zaGltLFxuICAgIF1cbiAgICBAIG1haW5fdmlldyh+aW5qZWN0LCBtb2RlbCksXG4gICk7XG4iLCJsZXQgbWVtb2l6ZSA9IChmOiAnayA9PiAndik6ICgnayA9PiAndikgPT4ge1xuICBsZXQgdGFibGU6IFdlYWtNYXAudCgnaywgJ3YpID0gV2Vha01hcC5taygpO1xuICBrID0+XG4gICAgc3dpdGNoIChXZWFrTWFwLmdldCh0YWJsZSwgaykpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2ID0gZihrKTtcbiAgICAgIGxldCBfID0gV2Vha01hcC5zZXQodGFibGUsIGssIHYpO1xuICAgICAgdjtcbiAgICB8IFNvbWUodikgPT4gdlxuICAgIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB0ID0gKGZsb2F0LCBVcGRhdGVBY3Rpb24udCk7XG5cbmxldCBtayA9ICh1cGRhdGUpOiB0ID0+IHtcbiAgKEpzVXRpbC50aW1lc3RhbXAoKSwgdXBkYXRlKTtcbn07XG5cbmxldCB0b19zdHJpbmcgPSAoKHRpbWVzdGFtcCwgdXBkYXRlKTogdCkgPT4ge1xuICAvKmxldCBzdGF0dXMgPVxuICAgIHN3aXRjaCAoZW50cnkuZXJyb3IpIHtcbiAgICB8IE5vbmUgPT4gXCJTVUNDRVNTXCJcbiAgICB8IFNvbWUoZmFpbHVyZSkgPT4gXCJGQUlMVVJFKFwiICsrIFVwZGF0ZUFjdGlvbi5GYWlsdXJlLnNob3coZmFpbHVyZSkgKysgXCIpXCJcbiAgICB9OyovXG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiJS4wZjogJXNcIixcbiAgICB0aW1lc3RhbXAsXG4gICAgVXBkYXRlQWN0aW9uLnNob3codXBkYXRlKSxcbiAgICAvL3N0YXR1cyxcbiAgKTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoZW50cnk6IHQpOiBzdHJpbmcgPT4ge1xuICBlbnRyeSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChzOiBzdHJpbmcpOiB0ID0+IHtcbiAgcyB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHRfb2Zfc2V4cDtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVhc29uID1cbiAgfCBVbnJlY29nbml6ZWRcbiAgfCBGYWlsdXJlKEFjdGlvbi5GYWlsdXJlLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHJlYXNvbixcbiAgcHJpb3JfYXR0ZW1wdHM6IGludCxcbn07XG5cbmxldCBtayA9ICh+cHJpb3JfYXR0ZW1wdHM9MCwgcmVhc29uKSA9PiB7cmVhc29uLCBwcmlvcl9hdHRlbXB0c307XG5cbmxldCByZXBsYWNlX29yX2luY3JlbWVudF9hdHRlbXB0cyA9IChyZWFzb24sIGZhaWxlZF9pbnB1dDogdCkgPT5cbiAgcmVhc29uID09IGZhaWxlZF9pbnB1dC5yZWFzb25cbiAgICA/IHsuLi5mYWlsZWRfaW5wdXQsIHByaW9yX2F0dGVtcHRzOiBmYWlsZWRfaW5wdXQucHJpb3JfYXR0ZW1wdHMgKyAxfVxuICAgIDogbWsocmVhc29uKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhY3Rpb24gPVxuICB8IFR1cm5PZmZEeW5hbWljc1xuICB8IENsZWFyU3RvcmU7XG5cbmxldCBwZXJmb3JtID0gKGFjdGlvbjogYWN0aW9uKTogdW5pdCA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gIHwgVHVybk9mZkR5bmFtaWNzID0+XG4gICAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MubG9hZCgpO1xuICAgIFN0b3JlLlNldHRpbmdzLnNhdmUoe1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICBjb3JlOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLmNvcmUsXG4gICAgICAgIGR5bmFtaWNzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIHwgQ2xlYXJTdG9yZSA9PiBKc1V0aWwuY2xlYXJfbG9jYWxzdG9yZSgpXG4gIH07XG4gIEpzX29mX29jYW1sLkRvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uIyNyZXBsYWNlKFxuICAgIEpzX29mX29jYW1sLkpzLnN0cmluZyhcIiNcIiksXG4gICk7XG4gIEpzX29mX29jYW1sLkRvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uIyNyZWxvYWQ7XG59O1xuXG5sZXQgYnRuID0gKGNhcHRpb24sIGFjdGlvbikgPT4ge1xuICBOb2RlLihcbiAgICBidXR0b24oXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4ge1xuICAgICAgICAgICAgcGVyZm9ybShhY3Rpb24pO1xuICAgICAgICAgICAgVWlfZWZmZWN0Lklnbm9yZTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICBbdGV4dChjYXB0aW9uKV0sXG4gICAgKVxuICApO1xufTtcblxubGV0IHZpZXcgPSB7XG4gIE5vZGUuKFxuICAgIGRpdihbXG4gICAgICBidG4oXCJ0dXJuIG9mZiBkeW5hbWljc1wiLCBUdXJuT2ZmRHluYW1pY3MpLFxuICAgICAgYnRuKFwiY2xlYXIgbG9jYWwgc3RvcmFnZSAoTE9TRSBBTEwgREFUQSEpXCIsIENsZWFyU3RvcmUpLFxuICAgIF0pXG4gICk7XG59O1xuXG5tb2R1bGUgQXBwID0ge1xuICBtb2R1bGUgTW9kZWwgPSB7XG4gICAgdHlwZSB0ID0gdW5pdDtcbiAgICBsZXQgY3V0b2ZmID0gKF8sIF8pID0+IGZhbHNlO1xuICB9O1xuICBtb2R1bGUgQWN0aW9uID0ge1xuICAgIHR5cGUgdCA9IHVuaXQ7XG4gICAgbGV0IHNleHBfb2ZfdCA9IF8gPT4gU2V4cGxpYi5TZXhwLnVuaXQ7XG4gIH07XG4gIG1vZHVsZSBTdGF0ZSA9IHtcbiAgICB0eXBlIHQgPSB1bml0O1xuICB9O1xuICBsZXQgb25fc3RhcnR1cCA9ICh+c2NoZWR1bGVfYWN0aW9uIGFzIF8sIF8pID0+XG4gICAgQXN5bmNfa2VybmVsLkRlZmVycmVkLnJldHVybigpO1xuICBsZXQgY3JlYXRlID0gKF8sIH5vbGRfbW9kZWwgYXMgXywgfmluamVjdCBhcyBfKSA9PlxuICAgIEluY3JfZG9tLkluY3IucmV0dXJuKClcbiAgICB8PiBJbmNyX2RvbS5JbmNyLm1hcCh+Zj1fID0+XG4gICAgICAgICBJbmNyX2RvbS5Db21wb25lbnQuY3JlYXRlKFxuICAgICAgICAgICB+YXBwbHlfYWN0aW9uPShfLCBfLCB+c2NoZWR1bGVfYWN0aW9uIGFzIF8pID0+ICgpLFxuICAgICAgICAgICAoKSxcbiAgICAgICAgICAgdmlldyxcbiAgICAgICAgIClcbiAgICAgICApO1xufTtcblxubGV0IGdvID0gKCkgPT5cbiAgSW5jcl9kb20uU3RhcnRfYXBwLnN0YXJ0KFxuICAgIChtb2R1bGUgQXBwKSxcbiAgICB+ZGVidWc9ZmFsc2UsXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkPVwiY29udGFpbmVyXCIsXG4gICAgfmluaXRpYWxfbW9kZWw9KCksXG4gICk7XG4iLCIoKiBjb3B5IHRoaXMgZmlsZSwgZmlsbGluZyBpbiB0aGUgZGV0YWlscyBiZWxvdywgdG8gY3JlYXRlIGEgYmxhbmsgZXhlcmNpc2UgdGhhdCB5b3UgY2FuIHRoZW4gZWRpdCBpbiBIYXplbFxuICAgYW5kIGV4cG9ydCwgb3ZlcndyaXRpbmcgeW91ciBjb3B5IG9mIHRoZSBiZWxvd1xuXG4gICBmb3IgcHJvbXB0cywgeW91IG5lZWQgdG8gZGVmaW5lIGEgc2VwYXJhdGUgZmlsZSB7bW9kdWxlX25hbWV9X3Byb21wdC5yZSAoc2VlIGV4YW1wbGVzKVxuKilcblxubGV0IGV4ZXJjaXNlID1cbiAgRXhlcmNpc2UuYmxhbmtfc3BlYyB+dGl0bGU6XCJSZWN1cnNpdmUgRmlib25hY2NpXCJcbiAgICB+bW9kdWxlX25hbWU6XCJFeF9SZWN1cnNpdmVGaWJvbmFjY2lcIlxuICAgICAgKCogbWFrZSBzdXJlIHlvdXIgZmlsZSBpcyBuYW1lZCA8bW9kdWxlX25hbWU+Lm1sICopXG4gICAgfnBvaW50X2Rpc3RyaWJ1dGlvbjpcbiAgICAgIHsgdGVzdF92YWxpZGF0aW9uID0gMTA7IG11dGF0aW9uX3Rlc3RpbmcgPSA0MDsgaW1wbF9ncmFkaW5nID0gNTAgfVxuICAgICAgKCogaWYgbXV0YXRpb25fdGVzdGluZyA9IDAsIHRoZW4gbm8gbXV0YXRpb24gdGVzdGluZyBib3ggd2lsbCBzaG93IHVwICopXG4gICAgfnJlcXVpcmVkX3Rlc3RzOjUgfnByb3ZpZGVkX3Rlc3RzOjAgfm51bV93cm9uZ19pbXBsczoyXG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb20uQXR0cjtcblxubGV0IGZzdHIgPSBmID0+IFByaW50Zi5zcHJpbnRmKFwiJWZcIiwgZik7XG5cbmxldCBjeCA9IGYgPT4gY3JlYXRlKFwiY3hcIiwgZnN0cihmKSk7XG5sZXQgY3kgPSBmID0+IGNyZWF0ZShcImN5XCIsIGZzdHIoZikpO1xubGV0IHJ4ID0gZiA9PiBjcmVhdGUoXCJyeFwiLCBmc3RyKGYpKTtcbmxldCByeSA9IGYgPT4gY3JlYXRlKFwicnlcIiwgZnN0cihmKSk7XG5cbmxldCB4ID0gZiA9PiBjcmVhdGUoXCJ4XCIsIGZzdHIoZikpO1xubGV0IHkgPSBmID0+IGNyZWF0ZShcInlcIiwgZnN0cihmKSk7XG5sZXQgd2lkdGggPSBmID0+IGNyZWF0ZShcIndpZHRoXCIsIGZzdHIoZikpO1xubGV0IGhlaWdodCA9IGYgPT4gY3JlYXRlKFwiaGVpZ2h0XCIsIGZzdHIoZikpO1xuXG5sZXQgc3Ryb2tlX3dpZHRoID0gZiA9PiBjcmVhdGUoXCJzdHJva2Utd2lkdGhcIiwgZnN0cihmKSk7XG5sZXQgdmVjdG9yX2VmZmVjdCA9IHMgPT4gY3JlYXRlKFwidmVjdG9yLWVmZmVjdFwiLCBzKTtcbmxldCBmaWx0ZXIgPSBzID0+IGNyZWF0ZShcImZpbHRlclwiLCBzKTtcblxubGV0IG9mZnNldCA9IGYgPT4gY3JlYXRlKFwib2Zmc2V0XCIsIFByaW50Zi5zcHJpbnRmKFwiJWYlJVwiLCAxMDAuICouIGYpKTtcbmxldCBzdG9wX2NvbG9yID0gcyA9PiBjcmVhdGUoXCJzdG9wLWNvbG9yXCIsIHMpO1xubGV0IHN0b3Bfb3BhY2l0eSA9IGYgPT4gY3JlYXRlKFwic3RvcC1vcGFjaXR5XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZcIiwgZikpO1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSW5jcl9kb207XG5vcGVuIEhhejNsd2ViO1xuXG5sZXQgc2Nyb2xsX3RvX2NhcmV0ID0gcmVmKHRydWUpO1xubGV0IGVkaXRfYWN0aW9uX2FwcGxpZWQgPSByZWYodHJ1ZSk7XG5sZXQgbGFzdF9lZGl0X2FjdGlvbiA9IHJlZihKc1V0aWwudGltZXN0YW1wKCkpO1xuXG5sZXQgb2JzZXJ2ZV9mb250X3NwZWNpbWVuID0gKGlkLCB1cGRhdGUpID0+XG4gIFJlc2l6ZU9ic2VydmVyLm9ic2VydmUoXG4gICAgfm5vZGU9SnNVdGlsLmdldF9lbGVtX2J5X2lkKGlkKSxcbiAgICB+Zj1cbiAgICAgIChlbnRyaWVzLCBfKSA9PiB7XG4gICAgICAgIGxldCBzcGVjaW1lbiA9IEpzLnRvX2FycmF5KGVudHJpZXMpWzBdO1xuICAgICAgICBsZXQgcmVjdCA9IHNwZWNpbWVuIyMuY29udGVudFJlY3Q7XG4gICAgICAgIHVwZGF0ZShcbiAgICAgICAgICBIYXozbHdlYi5Gb250TWV0cmljcy57XG4gICAgICAgICAgICByb3dfaGVpZ2h0OiByZWN0IyMuYm90dG9tIC0uIHJlY3QjIy50b3AsXG4gICAgICAgICAgICBjb2xfd2lkdGg6IHJlY3QjIy5yaWdodCAtLiByZWN0IyMubGVmdCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAoKSxcbiAgKTtcblxubGV0IHJlc3RhcnRfY2FyZXRfYW5pbWF0aW9uID0gKCkgPT5cbiAgLy8gbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmVmbG93XG4gIC8vIDxodHRwczovL2Nzcy10cmlja3MuY29tL3Jlc3RhcnQtY3NzLWFuaW1hdGlvbi8+XG4gIHRyeSh7XG4gICAgbGV0IGNhcmV0X2VsZW0gPSBKc1V0aWwuZ2V0X2VsZW1fYnlfaWQoXCJjYXJldFwiKTtcbiAgICBjYXJldF9lbGVtIyMuY2xhc3NMaXN0IyNyZW1vdmUoSnMuc3RyaW5nKFwiYmxpbmtcIikpO1xuICAgIGxldCBfID0gY2FyZXRfZWxlbSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGNhcmV0X2VsZW0jIy5jbGFzc0xpc3QjI2FkZChKcy5zdHJpbmcoXCJibGlua1wiKSk7XG4gIH0pIHtcbiAgfCBfID0+ICgpXG4gIH07XG5cbmxldCBhcHBseSA9IChtb2RlbCwgYWN0aW9uLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik6IE1vZGVsLnQgPT4ge1xuICByZXN0YXJ0X2NhcmV0X2FuaW1hdGlvbigpO1xuICBpZiAoVXBkYXRlQWN0aW9uLmlzX2VkaXQoYWN0aW9uKSkge1xuICAgIGxhc3RfZWRpdF9hY3Rpb24gOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICAgIGVkaXRfYWN0aW9uX2FwcGxpZWQgOj0gdHJ1ZTtcbiAgfTtcbiAgaWYgKFVwZGF0ZS5zaG91bGRfc2Nyb2xsX3RvX2NhcmV0KGFjdGlvbikpIHtcbiAgICBzY3JvbGxfdG9fY2FyZXQgOj0gdHJ1ZTtcbiAgfTtcbiAgbGFzdF9lZGl0X2FjdGlvbiA6PSBKc1V0aWwudGltZXN0YW1wKCk7XG4gIHN3aXRjaCAoXG4gICAgdHJ5KHtcbiAgICAgIGxldCBuZXdfbW9kZWwgPSBVcGRhdGUuYXBwbHkobW9kZWwsIGFjdGlvbiwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pO1xuICAgICAgTG9nLnVwZGF0ZShhY3Rpb24pO1xuICAgICAgbmV3X21vZGVsO1xuICAgIH0pIHtcbiAgICB8IGV4YyA9PlxuICAgICAgUHJpbnRmLnByaW50ZihcbiAgICAgICAgXCJFUlJPUjogRXhjZXB0aW9uIGR1cmluZyBhcHBseTogJXNcXG5cIixcbiAgICAgICAgUHJpbnRleGMudG9fc3RyaW5nKGV4YyksXG4gICAgICApO1xuICAgICAgRXJyb3IoRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleGMpKSk7XG4gICAgfVxuICApIHtcbiAgfCBPayhtb2RlbCkgPT4gbW9kZWxcbiAgfCBFcnJvcihGYWlsZWRUb1BlcmZvcm0oZXJyKSkgPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IHJlaW5zdGF0ZSB0aGlzIGhpc3RvcnkgZnVuY3Rpb25hbGl0eVxuICAgIHByaW50X2VuZGxpbmUoVXBkYXRlLkZhaWx1cmUuc2hvdyhGYWlsZWRUb1BlcmZvcm0oZXJyKSkpO1xuICAgIC8vey4uLm1vZGVsLCBoaXN0b3J5OiBBY3Rpb25IaXN0b3J5LmZhaWx1cmUoZXJyLCBtb2RlbC5oaXN0b3J5KX07XG4gICAgbW9kZWw7XG4gIHwgRXJyb3IoZXJyKSA9PlxuICAgIHByaW50X2VuZGxpbmUoVXBkYXRlLkZhaWx1cmUuc2hvdyhlcnIpKTtcbiAgICBtb2RlbDtcbiAgfTtcbn07XG5cbm1vZHVsZSBBcHAgPSB7XG4gIG1vZHVsZSBNb2RlbCA9IE1vZGVsO1xuICBtb2R1bGUgQWN0aW9uID0gVXBkYXRlO1xuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZTtcblxuICBsZXQgb25fc3RhcnR1cCA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtOiBNb2RlbC50KSA9PiB7XG4gICAgbGV0IF8gPVxuICAgICAgb2JzZXJ2ZV9mb250X3NwZWNpbWVuKFwiZm9udC1zcGVjaW1lblwiLCBmbSA9PlxuICAgICAgICBzY2hlZHVsZV9hY3Rpb24oSGF6M2x3ZWIuVXBkYXRlLlNldE1ldGEoRm9udE1ldHJpY3MoZm0pKSlcbiAgICAgICk7XG5cbiAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcblxuICAgIC8qIGluaXRpYWxpemUgc3RhdGUuICovXG4gICAgbGV0IHN0YXRlID0gU3RhdGUuaW5pdCgpO1xuXG4gICAgLyogSW5pdGlhbCBldmFsdWF0aW9uIG9uIGEgd29ya2VyICovXG4gICAgVXBkYXRlLnNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG5cbiAgICBPcy5pc19tYWMgOj1cbiAgICAgIERvbV9odG1sLndpbmRvdyMjLm5hdmlnYXRvciMjLnBsYXRmb3JtIyN0b1VwcGVyQ2FzZSMjaW5kZXhPZihcbiAgICAgICAgSnMuc3RyaW5nKFwiTUFDXCIpLFxuICAgICAgKVxuICAgICAgPj0gMDtcbiAgICBBc3luY19rZXJuZWwuRGVmZXJyZWQucmV0dXJuKHN0YXRlKTtcbiAgfTtcblxuICBsZXQgY3JlYXRlID1cbiAgICAgIChcbiAgICAgICAgbW9kZWw6IEluY3IudChIYXozbHdlYi5Nb2RlbC50KSxcbiAgICAgICAgfm9sZF9tb2RlbCBhcyBfOiBJbmNyLnQoSGF6M2x3ZWIuTW9kZWwudCksXG4gICAgICAgIH5pbmplY3QsXG4gICAgICApID0+IHtcbiAgICBvcGVuIEluY3IuTGV0X3N5bnRheDtcbiAgICBsZXQlbWFwIG1vZGVsID0gbW9kZWw7XG4gICAgLyogTm90ZTogbWFwcGluZyBvdmVyIHRoZSBvbGRfbW9kZWwgaGVyZSBtYXlcbiAgICAgICB0cmlnZ2VyIGFuIGFkZGl0aW9uYWwgcmVkcmF3ICovXG4gICAgQ29tcG9uZW50LmNyZWF0ZShcbiAgICAgIH5hcHBseV9hY3Rpb249YXBwbHkobW9kZWwpLFxuICAgICAgbW9kZWwsXG4gICAgICBIYXozbHdlYi5QYWdlLnZpZXcofmluamVjdCwgbW9kZWwpLFxuICAgICAgfm9uX2Rpc3BsYXk9KF8sIH5zY2hlZHVsZV9hY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGVkaXRfYWN0aW9uX2FwcGxpZWReXG4gICAgICAgICAgICAmJiBKc1V0aWwudGltZXN0YW1wKClcbiAgICAgICAgICAgIC0uIGxhc3RfZWRpdF9hY3Rpb25eID4gMTAwMC4wKSB7XG4gICAgICAgICAgLyogSWYgYW4gZWRpdCBhY3Rpb24gaGFzIGJlZW4gYXBwbGllZCwgYnV0IG5vIG90aGVyIGVkaXQgYWN0aW9uXG4gICAgICAgICAgICAgaGFzIGJlZW4gYXBwbGllZCBmb3IgMSBzZWNvbmQsIHNhdmUgdGhlIG1vZGVsLiAqL1xuICAgICAgICAgIGVkaXRfYWN0aW9uX2FwcGxpZWQgOj0gZmFsc2U7XG4gICAgICAgICAgcHJpbnRfZW5kbGluZShcIlNhdmluZy4uLlwiKTtcbiAgICAgICAgICBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlLlNhdmUpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoc2Nyb2xsX3RvX2NhcmV0LmNvbnRlbnRzKSB7XG4gICAgICAgICAgc2Nyb2xsX3RvX2NhcmV0IDo9IGZhbHNlO1xuICAgICAgICAgIEpzVXRpbC5zY3JvbGxfY3Vyc29yX2ludG9fdmlld19pZl9uZWVkZWQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcbn07XG5cbnN3aXRjaCAoSnNVdGlsLkZyYWdtZW50LmdldF9jdXJyZW50KCkpIHtcbnwgU29tZShcImRlYnVnXCIpID0+IERlYnVnTW9kZS5nbygpXG58IF8gPT5cbiAgSW5jcl9kb20uU3RhcnRfYXBwLnN0YXJ0KFxuICAgIChtb2R1bGUgQXBwKSxcbiAgICB+ZGVidWc9ZmFsc2UsXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkPVwiY29udGFpbmVyXCIsXG4gICAgfmluaXRpYWxfbW9kZWw9TW9kZWwubG9hZChNb2RlbC5ibGFuayksXG4gIClcbn07XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEVuc3VyZSB0aGF0IFthdF9leGl0XSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHByb2dyYW0gKilcblxubGV0IF8gPSBkb19hdF9leGl0KClcbiJdfQ==